ADDED Arduino/Tests/testrun.txt Index: Arduino/Tests/testrun.txt ================================================================== --- Arduino/Tests/testrun.txt +++ Arduino/Tests/testrun.txt @@ -0,0 +1,143 @@ + :0200F0;12 + :0200F1;13 + :0200F2;14 + :0200F3;15 + :0200F4;16 + :0200F5;17 + + :0200AD;27 + + :0200AA;24 + + :0200R;76 + + + :0200M;71 + :0200T;78 + :0200T2000;72 + :0200T3000;73 + + State: [8] +** PACKET REC LEN: 2 DATA F0 +FIRE Action F0 +RESPONSE [:0002RF;46] +FFFFFF93 +FIRE EARLY STOP [0] +FIRED NOW FIRE_TIME [1 116273 117090] +FIRE DONE +:0002RF;46 + +Real firing + +** PACKET REC LEN: 2 DATA F0 +FIRE Action F0 +RESPONSE [:0002RF;46] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28E] +FIRED NOW FIRE_TIME [0 21367 21367] +FIRE DONE +:0002RF;46 + +2nd PASS + +** PACKET REC LEN: 2 DATA F0 +FIRE Action F0 +RESPONSE [:0002RF;46] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28E] +ADAPT A/D[0] +FIRE EARLY STOP [0] +FIRED NOW FIRE_TIME [1 111446 111803] +FIRE DONE +:0002RF;46 + +2000 Firing time + +** PACKET REC LEN: 2 DATA F0 +FIRE Action F0 +RESPONSE [:0002RF;46] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28F] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[290] +ADAPT A/D[290] +ADAPT A/D[28F] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[290] +ADAPT A/D[290] +ADAPT A/D[290] +ADAPT A/D[290] +ADAPT A/D[28F] +ADAPT A/D[28E] +ADAPT A/D[28E] +ADAPT A/D[28E] +FIRED NOW FIRE_TIME [0 28021 28021] +FIRE DONE +:0002RF;46 + +-- ARM/FIRE/DISARM sequence + Read of fire data +-- Using 100 ms sense & 3000 ms max time + +:0002RA;41 +:0002RF;46 +:0002RR312 ;40 -> 312 ms firing time +:0002RA;41 + +tate: [8] +** PACKET REC LEN: 1 DATA R +Get Data Action R +FIRE TIMES +CHANNEL [0] TIME [3000] PSN [6] BUF[3000] +CHANNEL [1] TIME [3000] PSN [11] BUF[3000] +CHANNEL [2] TIME [3000] PSN [16] BUF[3000] +CHANNEL [3] TIME [3000] PSN [21] BUF[3000] +CHANNEL [4] TIME [3000] PSN [26] BUF[3000] +CHANNEL [5] TIME [3000] PSN [31] BUF[3000] +Result [RR3000 3000 3000 3000 3000 3000] +RESPONSE [:0002RR3000 3000 3000 3000 3000 3000;88] +:0002RR3000 3000 3000 3000 3000 3000;88 ADDED Arduino/apps/HeadEnd/HeadEnd.ino Index: Arduino/apps/HeadEnd/HeadEnd.ino ================================================================== --- Arduino/apps/HeadEnd/HeadEnd.ino +++ Arduino/apps/HeadEnd/HeadEnd.ino @@ -0,0 +1,235 @@ +//----------------------------------------------------------------------------- +/* + HeadEnd FIRENET Module + + This module will attach via USB to the control computer and send/receive + packets to the firenet network. + + FNET -> Serial port + Serial port -> FNET + + The FNET data is transferred byte by byte to the serial port + + The Serial port data is gathered into a packet: + : Start character + + ; End of body + x Ckcsum 1 + x Cksumm2 + + Then the XMIT enable is set high and the data transmitted in one + batch. + XMIT is disabled after transmission. + + 30-Dec-2011 Initial version [7e720cf520] Inventory problem + 1-Jan-2012 [55fd308482] Use LED on board + 6-Jan-2012 Invert LED state + 7-Jan-2012 Make lamp pulse longer & pulse on received data + 8-Apr-2012 Minor edits +*/ +//----------------------------------------------------------------------------- +#include +#include "debug.h" + +// States during run +#define STATE_IDLE 0 +#define STATE_HDR 1 +#define STATE_BODY 2 +#define STATE_CS1 4 +#define STATE_CS2 5 + +// Pins used + +#define PIN_XMIT 13 +#define PIN_TX 12 +#define PIN_RX 11 +#define PIN_LED 9 + +// Constants +#define HDR_CHR ':' +#define TRLR_CHR ';' + +// Set up second serial port +SoftwareSerial fnet( PIN_RX,PIN_TX,false ); + +int state; +long lamp; // Time lamp was turned off +#define LAMP_TIME 100 // 100 ms lamp time + +#define BUFFER_SIZE 64 +char buffer[BUFFER_SIZE]; +int bufpsn; + +//****** DEBUGGING CODE ********* +#ifdef DEBUG_ON +void print_state(int state) +{ + switch(state) + { + case STATE_IDLE: DEBUG_PRINTLN("IDLE STATE"); + break; + + case STATE_HDR: DEBUG_PRINTLN("HDR STATE"); + break; + + case STATE_BODY: DEBUG_PRINTLN("BODY STATE"); + break; + + case STATE_CS1: DEBUG_PRINTLN("CS1 STATE"); + break; + + case STATE_CS2: DEBUG_PRINTLN("CS2 STATE"); + break; + } +} +#endif + +// ----------------------------------------------------------- +/* + void setup() + INPUT: NONE + OUTPUT: NONE + + Set up xmit control line and serial ports + Set state to idle +*/ +// ----------------------------------------------------------- + +void setup() +{ + // Set up pins + pinMode(PIN_XMIT,OUTPUT); + digitalWrite(PIN_XMIT,0); + pinMode(PIN_LED,OUTPUT); + digitalWrite(PIN_LED,0); + + // Set up serial ports + Serial.begin(38400); + fnet.begin( 9600 ); + + // Set up state + + state = STATE_IDLE; + lamp = 0; + + DEBUG_PRINT("\r\nHEAD END Test PGM V[ "); + DEBUG_PRINT(__DATE__); + DEBUG_PRINT(" "); + DEBUG_PRINT(__TIME__); + DEBUG_PRINTLN("]"); +} + +// ----------------------------------------------------------- +/* + void loop() + INPUT: NONE + OUTPUT: NONE + + Read serial inputs: + FNET -> Serial output immediately + Serial Read and form packet + Then send to FNET +*/ +// ----------------------------------------------------------- + +void loop() +{ + int ch; + int i; + long val; + + // Main action: + // (1) Data received from FNET -> Serial + + if( fnet.available() ) + { + ch = fnet.read(); + Serial.write( ch ); + digitalWrite(PIN_LED,1); + lamp = millis(); + } + + // (2) Data received from Serial + // Form packet then send + + if( Serial.available() ) + { + ch = Serial.read(); + + DEBUG_PRINT("CHARACTER READ ["); + DEBUG_PRINT_HEX(ch); + DEBUG_PRINTLN("]"); + + // Is it a header character ? + + if( ch == HDR_CHR ) + { + state = STATE_HDR; + } + +#if DEBUG_ON + print_state(state); +#endif + // (3) Action depends on state + + switch( state ) + { + + case STATE_IDLE: bufpsn = 0; + break; // Drop characters + + case STATE_HDR: // Begin buffer store + bufpsn = 0; + buffer[bufpsn++] = ch; + state = STATE_BODY; + break; + + case STATE_BODY: // Store the body + // & Look for trlr chr + buffer[bufpsn++] = ch; + if( ch == TRLR_CHR ) + state = STATE_CS1; + break; + + case STATE_CS1: // Store first cksum + buffer[bufpsn++] = ch; + state = STATE_CS2; // Advance to last state + break; + + case STATE_CS2: // Store second cksum + buffer[bufpsn++] = ch; + + // Send it out, enable xmit,send & disable + // and then go to idle + + digitalWrite(PIN_XMIT,1); + digitalWrite(PIN_LED,1); + lamp = millis(); + + for( i=0; i= BUFFER_SIZE ) + { + // Bad input, go to idle + state = STATE_IDLE; + } + } + + // See if the lamp has been on long enough + val = millis() - lamp; + if( val > LAMP_TIME ) + digitalWrite(PIN_LED,0); +} + ADDED Arduino/apps/HeadEnd/debug.h Index: Arduino/apps/HeadEnd/debug.h ================================================================== --- Arduino/apps/HeadEnd/debug.h +++ Arduino/apps/HeadEnd/debug.h @@ -0,0 +1,32 @@ +//********************************************************************** +/* + DEBUG TOOLS + + 26-May-2010 Initial Verson + 3-Jan-2011 Change to be all MACROS + 17-Jan-2011 [f38bf44b59] Add network control to debug print +*/ +//**********************************************************************/ + +#ifndef DEBUG_F +#define DEBUG_F 1 + +//#define DEBUG_ON 1 // Enables debug print + +#ifdef DEBUG_ON + #define DEBUG_PRINTLN(x) Serial.println(x); + + #define DEBUG_PRINT(x) Serial.print(x); + + #define DEBUG_PRINT_DEC(x) Serial.print(x,DEC); + + #define DEBUG_PRINT_HEX(x) Serial.print(x,HEX); +#else + #define DEBUG_PRINTLN(x) + #define DEBUG_PRINT(x) + #define DEBUG_PRINT_DEC(x) + #define DEBUG_PRINT_HEX(x) + +#endif + +#endif ADDED Arduino/apps/newnet/debug.h Index: Arduino/apps/newnet/debug.h ================================================================== --- Arduino/apps/newnet/debug.h +++ Arduino/apps/newnet/debug.h @@ -0,0 +1,41 @@ +//********************************************************************** +/* + DEBUG TOOLS + + 26-May-2010 Initial Verson + 3-Jan-2011 Change to be all MACROS + 17-Jan-2011 [f38bf44b59] Add network control to debug print +*/ +//**********************************************************************/ + +#ifndef DEBUG_F +#define DEBUG_F 1 + +//#define DEBUG_ON 1 // Enables debug print +//#define FAKE_NETWORK 1 // Enables line editing input + +#ifdef DEBUG_ON + #define DEBUG_PRINTLN(x) digitalWrite(TX_CNTL,1);\ + Serial.println(x);\ + digitalWrite(TX_CNTL,0) + + #define DEBUG_PRINT(x) digitalWrite(TX_CNTL,1);\ + Serial.print(x);\ + digitalWrite(TX_CNTL,0) + + #define DEBUG_PRINT_DEC(x) digitalWrite(TX_CNTL,1);\ + Serial.print(x,DEC);\ + digitalWrite(TX_CNTL,0) + + #define DEBUG_PRINT_HEX(x) digitalWrite(TX_CNTL,1);\ + Serial.print(x,HEX);\ + digitalWrite(TX_CNTL,0) +#else + #define DEBUG_PRINTLN(x) + #define DEBUG_PRINT(x) + #define DEBUG_PRINT_DEC(x) + #define DEBUG_PRINT_HEX(x) + +#endif + +#endif ADDED Arduino/apps/newnet/eerom.h Index: Arduino/apps/newnet/eerom.h ================================================================== --- Arduino/apps/newnet/eerom.h +++ Arduino/apps/newnet/eerom.h @@ -0,0 +1,51 @@ +//********************************************************************** +/* + EEROM Definitions + + 16-Oct-2011 [1ac05cf7a5] Initial version +*/ +//**********************************************************************/ + +#ifndef EEROM_H + +// To cause an update to the EEROM data +// Increment this EROMVER +// This will cause EEROM to go to the new +// defaults + +#define EROMVER (unsigned int)0x0 + +#define EROMVER_BASE (unsigned int)0xA55A +#define ROMVER EROMVER_BASE + EROMVER + + //****************************************** + // EEPROM DATA, 0 based ADDRESSES + // 0-1 VERSION ID + // 2-3 Unit ADDRESS value + compliment + // 4-7 Firing time (4 bytes + compliment) + // 8-9 Test mode + compliment + // 10-11 Backoff time + compliment + +// ROM VERSION DATA +#define ROMVER_LCNH 0 +#define ROMVER_LCNL 1 + + // ADDRESS DATA +#define ADDR_LCN 2 +#define CADDR_LCN 3 + +// Firing time data +#define FIRE_TIME_MSB 4 +#define FIRE_TIME_LSB 5 +#define FIRE_TIME_CMSB 6 +#define FIRE_TIME_CLSB 7 + +// Test mode data +#define TEST_MODE_LCN 8 +#define CTEST_MODE_LCN 9 + +// Backoff time data +#define BACKOFF_TIME_LCN 10 +#define BACKOFF_TIME_LCNC 11 + +#endif EERPOM_H ADDED Arduino/apps/newnet/newnet.h Index: Arduino/apps/newnet/newnet.h ================================================================== --- Arduino/apps/newnet/newnet.h +++ Arduino/apps/newnet/newnet.h @@ -0,0 +1,191 @@ +//********************************************************************** +/* + NETWORK DEFS + + 26-May-2010 Initial Verson + + 22-Jan-2011 [f2fa5910e4] Add delay for XMIT Enable/Disable + 23-Jan-2011 [0022f592fb] Add code to check status of firing stations + 5-Feb-2011 [1da8774a51] Fix typo on Analog channel for firing channel 5 + 18-Apr-2011 Add test mode to simulate actual firing [900924d040] + 30-Apr-2011 [e3d9606749] Change backoff time to 25 ms + Also put backoff value in to EEPROM + 1-May-2011 [092caa26e8] Add a RESET command + 14-May-2011 [c2029557fb] Check for device presense on arm + 16-Jul-2011 [9e81c1a523] Add adaptive firing action & read out of + adaptive results + 16-Oct-2011 [230cd6fbad] Incorrect use of presence flag in FIRE_LIST + structure add an A/D value to store and A/D value and + separate from use of presence bit in structure + 13-Nov-2011 [fd8800dae4] Add PGM command to store firing events + Modify sizes of things so we don't run out of RAM +*/ +//**********************************************************************/ + +#ifndef NEWNET_H +#define NEWNET_H 1 + + //*** + // LOCAL CONSTANTS + //*** +#define DEF_ADDR 1 +#define ADDR_MIN 1 +#define ADDR_MAX 32 + + +//****************************************** + +#define FIRE0 2 // Fire Channel 0 +#define FIRE0_AD 0 + +#define FIRE1 3 // Fire Channel 1 +#define FIRE1_AD 1 + +#define FIRE2 4 // Fire Channel 2 +#define FIRE2_AD 2 + +#define FIRE3 5 // Fire Channel 3 +#define FIRE3_AD 3 + +#define FIRE4 6 // Fire Channel 4 +#define FIRE4_AD 4 + +#define FIRE5 7 // Fire Channel 5 +#define FIRE5_AD 5 + + +typedef struct { + char fire; // Fire control channel + char ad; // Fire control A/D channel + int ch_ad; // Current A/D value + char pres; // If present (i.e. < 0x80) + char fired; // If if channel fired + int fire_time; // Firing time (adaptive result) +} FIRE_LIST; + + +#define RELAY 8 // Other controls +#define LED 9 + +#define TX_CNTL 13 + +#define DEVICE_PRESENT 0x80 // Above this device connected +#define FIRE_CHANNELS 6 +#define DEF_FIRE_TIME 3000 // # ms to fire channel +#define FIRE_CHECK_TIME 100 // Check fired every 100 ms +#define FIRE_CHECK_WAIT 1 // Wait 1 ms for before pres measure + +#define MSG_HDR ':' +#define MSG_TRLR ';' +#define DATA_SEP ',' +#define PHY_DATA_SIZE 32 // Max size of data xfered +#define CKSUM_MODULO 100 // For address calc +#define BCAST_ADDRESS 0 // Broadcast address +#define MIN_ADDRESS 1 +#define MAX_ADDRESS 32 +#define DEF_TXEN_DLY 20 // TX enable disable delay time +#define RESP_BACKOFF 25+DEF_TXEN_DLY // ms/address + +#define BLINK_TIME 200 // 200 ms blink + +#define PARENT_ADDRESS MAX_ADDRESS + +// Packet commands + +// Operational commands +#define ARM_CMD 'A' +#define FIRE_CMD 'F' +#define DLY_CMD 'D' +#define STATUS_CMD 'S' +#define SYNC_CMD 'Z' +#define VER_CMD 'V' +#define CH_CMD 'C' +#define PGM_CMD 'P' + + +// Setup commands +#define SET_AD_CMD 'W' +#define SET_FT_CMD 'T' +#define SET_TM_CMD 'M' +#define BKOFF_CMD 'B' +#define RESET_CMD 'X' + +// Readout commands +#define GET_DATA_CMD 'R' + +typedef enum { + NO_PACKET, + TO_PACKET_A, // Getting TO address (first byte) + TO_PACKET_B, // Getting TO address (second byte) + FROM_PACKET_A, // Getting FROM address (first byte) + FROM_PACKET_B, // Getting FROM address (second byte) + DATA_PACKET, // Getting packet data + CKSUM_PACKET_A, // Getting packet cksum (first byte) + CKSUM_PACKET_B, // Getting packet cksum (second byte) + RCVED_PACKET, // Packet ready to use + } PACKET_STATE; + + +typedef struct { + // Received packet + PACKET_STATE state; // State of current received packet + unsigned char to; + unsigned char from; + unsigned char len; + char data[PHY_DATA_SIZE]; // Packet data + short cksum; // Accmulated cksum + short pcksum; // Packet checksum + + // Chunk handler + + //unsigned char chunk_len; // Length of current chunk + //unsigned char chunk_end; // End of current chunk + //unsigned chunk_ptr; // Psn in current chunk + } PACKET; + +typedef struct { + char ch; // Fire on this channel + long ft; // At this time + } EVENT_QUEUE; + +typedef struct { + // Node State + + long now; // Current offset time + long time_offset; // Offset time for Z action + char armed; + + // Blink Data + + char in_blink; // 1 if in blink + long next_blink; // Next blink time + + // Delay Data + + char in_delay; // 1 if in a delay mode + char delay_channel; + long delay_time; // Delay time (if any) + + // Fire Data + + char in_fire; // 1 if in fire, + char fire_channel; // Channel to fire + long fire_time; // End of fire time + long adaptive_time; // Used for adaptive firing time + + // Response data + + char in_resp; // 1 If response in process + long resp_time; // Send response now + char response[32]; // Response data buffer + + // Event programming + + char in_event; // TRUE when in an event + int event_count; // # Events stored + int event_next; // Next event to be run + unsigned char control; // Source of PGM events + } NODE_STATE; +#endif + +void handle_packet( char data, PACKET *pkt ); ADDED Arduino/apps/newnet/newnet.pde Index: Arduino/apps/newnet/newnet.pde ================================================================== --- Arduino/apps/newnet/newnet.pde +++ Arduino/apps/newnet/newnet.pde @@ -0,0 +1,2598 @@ +//********************************************************************** +/* + Firenet NewNet Program + + This program takes serial input of the form of network commands + and executes them + + At the prompt you can input a command of the for: + + : ; + : - Header + - To address in the range 1-31 or 0 for broadcast + - SB 32 + - See firenet document + ; - End of data marker + - Two digit field, ignored here + + 16-May-2010 Built skeleton program + 16-May-2010 Add in EEPROM address lcn + 25-May-2010 Make simulation correct, add in cksum for simulated msg + 28-May-2010 Add generate packets + 1-Jun-2010 Add presence detector + 1-Jun-2010 Add blink & fire stuff + 2-Jan-2011 Change to accept regular messages + 16-Jan-2011 [e4208b8f56] Add response messages + 17-Jan-2011 Add enable TX code on response + 20-Jan-2011 Add Version command + 22-Jan-2011 [f2fa5910e4] Add delay for XMIT Enable/Disable + 23-Jan-2011 Shorten response in STATUS don't send NUL + 23-Jan-2011 [0022f592fb] Add code to check status of firing stations + 27-Jan-2011 Remove :'s in version_action() time value + 30-Jan-2011 Finish adding channel command [4fd91ac4c2] + 27-Feb-2011 Change channel to fired only if AD says so + 18-Apr-2011 Add test mode to simulate actual firing [900924d040] + 30-Apr-2011 [e3d9606749] Change backoff time to 25 ms + Also put backoff value in to EEPROM + 1-May-2011 [092caa26e8] Add a RESET command + 14-May-2011 [c2029557fb] Check for device presense on arm + 16-Jul-2011 [9e81c1a523] Add adaptive firing action & read out of + adaptive results + 15-Oct-2011 [7cc38ceff4] Make ARM reset fired bits + 16-Oct-2011 [230cd6fbad] Incorrect use of presence flag in FIRE_LIST + structure add an A/D value to store and A/D value and + separate from use of presence bit in structure + 16-Oct-2011 [1ac05cf7a5] Add code to automatically update EEPROM when + it changes. + 12-Nov-2011 [a1b444e30a] Problem with Delay fire command, fixed + with fix to msg parsing and uniform fire code. + 13-Nov-2011 [fd8800dae4] Add PGM command to store firing events + NOTE: Had to decrease RAM footprint to get code working + 20-Nov-2011 [b910156f8c] Change to stagger PGM return messages after fire + 10-Dec-2011 [b654411cbe] Arduino 1.0 changes + 29-Dec-2011 [7bcdf98e54] Fix bad return of V message extend ON time of + network output +*/ +//**********************************************************************/ + +#include +#include +#include "EEPROM.h" +#include "debug.h" +#include "newnet.h" +#include "eerom.h" + +#if 0 + #pragma mark - + #pragma mark Global Data +#endif + +// MODULE GLOBAL VARIABLES + +FIRE_LIST fire[FIRE_CHANNELS]; +EVENT_QUEUE events[FIRE_CHANNELS]; +int board_address; // Board address value +PACKET p; // Received packet +NODE_STATE state; +int fire_time; +bool test_mode; +int backoff_time; +#define STATIC_BUF_SZ 40 +char buf[STATIC_BUF_SZ]; // General buffer for use in routines + // Clear or don't expect constant data when using + +#if 0 + #pragma mark - + #pragma mark Arudino Routines +#endif + +void setup(); +void loop(); + +#if 0 + #pragma mark - + #pragma mark Support routines +#endif + +// **** Message Handling **** +static int check_net(void); +static void handle_net( char data, PACKET *pkt ); +static int gen_packet(unsigned char to, int len, char *data,char *buf ); +void set_response( unsigned char to ); + + +// ***** TESTING CODE *** +static int get_message(int len,char *buffer); +static int get_input( char *prompt,int len,char *buffer ); +char *state_name( int state ); + +// ***** Firing Channel code ***** +//static void check_fire(FIRE_LIST *fl); +static void check_device(FIRE_LIST *fl); +void fire_op( int ch ); +void next_event(void); +int store_in_queue( char ch,long ft ); +void print_queue(void); + +#if 0 + #pragma mark - + #pragma mark Handler Routines +#endif + +static void arm_action( PACKET *pkt ); +static void fire_action( PACKET *pkt ); +static void delay_action( PACKET *pkt ); +static void pgm_action( PACKET *pkt ); +static void status_action( PACKET *pkt ); +static void sync_action( PACKET *pkt ); +static void version_action( PACKET *pkt ); +static void channel_action( PACKET *pkt ); + +static void address_action(PACKET *pkt ); +static void fire_time_action(PACKET *pkt ); +static void test_mode_action(PACKET *pkt ); +static void backoff_time_action( PACKET *pkt ); +static void reset_action( PACKET *pkt ); + +static void getdata_action( PACKET *pkt ); + +// EEPROM functions + +static void check_eerom(); +static int get_address(); +static int set_address( int addr ); +static int get_fire_time(); +static int set_fire_time( int addr ); +static bool get_test_mode(); +static void set_test_mode( bool addr ); +static int get_backoff_time(); +static int set_backoff_time( int bt ); + +#if 0 + #pragma mark - + #pragma mark RESET Routines +#endif + +// Reset operations + +//void wdt_init(void) __attribute__((naked))__attribute__((section(".init3"))); +//void reset_board(); + +void(* reset_board) (void) = 0; //declare reset function @ address 0 + + +#if 0 + #pragma mark - + #pragma mark Main Routines +#endif + +/*********************************************************************** +* +* void setup() - Startup routine - CALL ONCE +* +* INPUT: NONE +* +* OUTPUT: NONE +* +* 16-May-2010 Add in ADDRESS setup +* +**********************************************************************/ + +void setup() +{ + int i; + unsigned char addr,caddr; + + // Needed to support RESET + + MCUSR=0; + wdt_disable(); + + // open the serial port at 9600 bps: + + Serial.begin(9600); + DEBUG_PRINT("\r\nNEWNET Test PGM V[ "); + DEBUG_PRINT(__DATE__); + DEBUG_PRINT(" "); + DEBUG_PRINT(__TIME__); + DEBUG_PRINTLN("]"); + + // Check EEPROM + + check_eeprom(); + + // Build the channel list + + fire[0].fire = FIRE0; + fire[0].ad = FIRE0_AD; + fire[1].fire = FIRE1; + fire[1].ad = FIRE1_AD; + fire[2].fire = FIRE2; + fire[2].ad = FIRE2_AD; + fire[3].fire = FIRE3; + fire[3].ad = FIRE3_AD; + fire[4].fire = FIRE4; + fire[4].ad = FIRE4_AD; + fire[5].fire = FIRE5; + fire[5].ad = FIRE5_AD; + + // Get board address, fire time & test mode + + board_address = get_address(); + fire_time = get_fire_time(); + test_mode = get_test_mode(); + backoff_time = get_backoff_time(); + //backoff_time = RESP_BACKOFF; + + DEBUG_PRINTLN("-------------------------------------------------------------------"); + DEBUG_PRINT("SETTINGS ADDR ["); + DEBUG_PRINT_DEC(board_address); + DEBUG_PRINT("] FIRE Time ["); + DEBUG_PRINT_DEC(fire_time); + DEBUG_PRINT("] TEST Mode ["); + DEBUG_PRINT_DEC(test_mode); + DEBUG_PRINT("] Backoff Time ["); + DEBUG_PRINT_DEC(backoff_time); + DEBUG_PRINTLN("]"); + DEBUG_PRINTLN("-------------------------------------------------------------------"); + + // Set the channel directions & Read A/D & event queue + + state.in_event = 0; + state.event_count = 0; + state.event_next = 0; + + for( i=0; i 0 ) + { +#ifdef FAKE_NETWORK + // ************** TESTING CODE FOR MANUAL ENTERING OF PACKETS + if( len = get_message(40,buf) ) + { + Serial.print(" MSG: ["); + Serial.print(buf); + Serial.println("]"); + Serial.println(""); + check_net(); // Tidy up + + // Reset after handling packet + + buf_psn = 0; + p.state = NO_PACKET; + } + + // Process received data + // Normally this would be 1 character at a time + // but in this case we have a buffer (buf) which + // is filled with characters up to a NUL + + while( buf_psn <= len ) + { + handle_net( buf[buf_psn++], &p ); + } + // ******************************************************* +#else + // ********************************* STD CHARACTER HANDLER + while( Serial.available() > 0 ) + { + ch = Serial.read(); + handle_net(ch,&p ); + + if( p.state == RCVED_PACKET ) + break; + } + // ******************************************************* +#endif + // If packet found then handle + + if( p.state == RCVED_PACKET ) + { + DEBUG_PRINT("** PACKET REC LEN: "); + DEBUG_PRINT_DEC(p.len); + DEBUG_PRINT(" DATA "); + //DEBUG_PRINTLN(p.data); + + // Switch on packet type and handle + + switch( p.data[0] ) + { + case ARM_CMD: arm_action( &p ); + break; + + case FIRE_CMD: fire_action( &p ); + break; + + case DLY_CMD: delay_action( &p ); + break; + + case PGM_CMD: pgm_action( &p ); + break; + + case STATUS_CMD:status_action( &p ); + break; + + case SYNC_CMD: sync_action( &p ); + break; + + case VER_CMD: version_action( &p ); + break; + + case CH_CMD: channel_action( &p ); + break; + + case SET_AD_CMD:address_action( &p ); + break; + + case SET_FT_CMD:fire_time_action( &p ); + break; + + case SET_TM_CMD:test_mode_action( &p ); + break; + + case BKOFF_CMD: backoff_time_action( &p ); + break; + + case RESET_CMD: reset_action( &p ); + break; + + case GET_DATA_CMD: getdata_action( &p ); + break; + } + + // Finished with packet + + p.state = NO_PACKET; + } + } + +#if 0 + #pragma mark - + #pragma mark LOOP MSG RESPONSE +#endif + + // Handle message responses after firing + + if( state.in_resp && !state.in_fire) + { + if( state.now >= state.resp_time ) + { + digitalWrite(TX_CNTL,1); // Enable TX + delay(1); // Delay to enable XMIT + + Serial.println(state.response); // Send the response + state.in_resp = 0; // Clear response + + len = strlen(state.response); + if( len > 15 ) + { + // Add extra delay [7bcdf98e54] + delay(DEF_TXEN_DLY); // Hold enable while XMIT + } + delay(DEF_TXEN_DLY); // Hold enable while XMIT + digitalWrite(TX_CNTL,0); + } + } + +#if 0 + #pragma mark - + #pragma mark LOOP BLINK +#endif + + // Process state + // Get current time in ms and check for what to do + + now = millis(); // Handle blink + state.now = now - state.time_offset; // Node time, corrected for sync offset + if( state.in_blink ) + { + if( now >= state.next_blink ) + { + state.next_blink += BLINK_TIME; + val = digitalRead( LED ); + val = val ^ 0x1; + digitalWrite(LED,val); + + } + } + +#if 0 + #pragma mark - + #pragma mark LOOP FIRE DELAY +#endif + + if( state.in_delay ) // Handle delay + { + if( state.now >= state.delay_time ) + { + + DEBUG_PRINT("DELAY HIT NOW ["); + DEBUG_PRINT_DEC(state.now); + DEBUG_PRINT("] DT ["); + DEBUG_PRINT_DEC(state.delay_time); + DEBUG_PRINT("] OFFSET ["); + DEBUG_PRINT_DEC(state.time_offset); + DEBUG_PRINTLN("]"); + + // Exit delay and go to fire + + state.in_delay = 0; + // [a1b444e30a] Added to better support Delay fires + fire_op( state.delay_channel ); + //------------------------------------------------- + DEBUG_PRINT("DELAY FIRE ["); + DEBUG_PRINT_DEC( state.fire_channel); + DEBUG_PRINTLN("]"); + + } + } + +#if 0 + #pragma mark - + #pragma mark LOOP FIRE +#endif + + if( state.in_fire ) // Terminate FIRE actions + { + // [9e81c1a523] Adaptive - See if it's fired already + // Read out the A/D on that channel & set fired status + // fake it on test mode (show as fired) + + if( test_mode ) + { + + fire[state.fire_channel].pres = 0; // Assume fired + fire[state.fire_channel].ch_ad = DEVICE_PRESENT + 0x10; + } + else + { + // Time to check + + n = (int) state.now - state.adaptive_time; + if( n > FIRE_CHECK_TIME ) + { + digitalWrite( fire[state.fire_channel].fire,0); // Disable fire + delay( FIRE_CHECK_WAIT); // Wait + fire[state.fire_channel].ch_ad = // Measure presence + analogRead( fire[state.fire_channel].ad ); + + DEBUG_PRINT("ADAPT A/D["); + DEBUG_PRINT_HEX(fire[state.fire_channel].ch_ad); + DEBUG_PRINTLN("]"); + + state.adaptive_time = state.now; // Reset time + digitalWrite( fire[state.fire_channel].fire,1); // Enable fire + } + } + + // Now check for fired status, save the current time + // for later analysis + + fire[state.fire_channel].fire_time = state.now; // Save fire time + if( fire[state.fire_channel].ch_ad < DEVICE_PRESENT ) + { + fired = 1; // Mark as fired + fire[state.fire_channel].fired = 1; // Mark as fired + fire[state.fire_channel].pres = 0; // Nothing connected + DEBUG_PRINT("FIRE EARLY STOP ["); + DEBUG_PRINT_HEX(fire[state.fire_channel].pres); + DEBUG_PRINTLN("]"); + } + else + { + fired = 0; // Mark as not fired + fire[state.fire_channel].pres = 1; // Item as connected + } + + // If fired tidy up + + if( (fired == 1) || (state.now >= state.fire_time) ) + { + state.in_fire = 0; + digitalWrite( fire[state.fire_channel].fire,0); + + DEBUG_PRINT("FIRED NOW FIRE_DATA ["); + DEBUG_PRINT_DEC( fired ); + DEBUG_PRINT(" "); + DEBUG_PRINT(state.now); + DEBUG_PRINT(" "); + DEBUG_PRINT(state.fire_time); + DEBUG_PRINT("] FIRE_TIME ["); + + // Compute firing time MAX time - (now - firetime) + + fire[state.fire_channel].fire_time = fire_time - (state.now - state.fire_time); + DEBUG_PRINT_DEC( fire[state.fire_channel].fire_time ); + DEBUG_PRINTLN("]"); + DEBUG_PRINTLN("FIRE DONE"); + + // Handle next event if set + + if( state.in_event ) + { + // Send off a response + + buf[0] = 'R'; + buf[1] = 'P'; + buf[2] = state.fire_channel + 0x30; + buf[3] = '\0'; + gen_packet( state.control,3,buf,&(state.response[0])); + set_response(BCAST_ADDRESS); // Send BCAST to stagger return + DEBUG_PRINT("EVENT RESP ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + + // Move to next + next_event(); + } + } + } +} + +#if 0 + #pragma mark - + #pragma mark Handler Routines +#endif + +/*********************************************************************** +* +* void arm_action( PACKET *pkt ) - Turn on/off ARM relay +* +* INPUT: pkt - Input packet +* +* OUTPUT: Arm relay changed state +* +**********************************************************************/ + +static void arm_action( PACKET *pkt ) +{ + char success = 0; + + DEBUG_PRINT("ARM Action "); + DEBUG_PRINTLN(pkt->data); + + if( pkt->data[1] == 'A' ) + { + // On arm action, flip on ARM relay + // Start blinking + + DEBUG_PRINTLN("ARMED"); + digitalWrite(RELAY,1); + state.in_blink = 1; + state.next_blink = state.now; + state.armed = 1; + success = 1; + + // Check the devices + + delay( 100 ); // Wait 100 ms before check + check_device( fire ); + } + + if( pkt->data[1] == 'D' ) + { + // On Disarm, turn off blink, LED and relay + + DEBUG_PRINTLN("DISARMED"); + digitalWrite( RELAY,0); + digitalWrite( LED,0); + state.in_blink = 0; + state.armed = 0; + success = 1; + } + + // Set response on success + + if( success ) + { + gen_packet( pkt->from,2,"RA",&(state.response[0])); + set_response(pkt->to); + + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + } +} + +/*********************************************************************** +* +* void fire_action( PACKET *pkt ) - Fire squib +* +* INPUT: pkt - Input packet +* +* OUTPUT: Fire channel +* +**********************************************************************/ + +static void fire_action( PACKET *pkt ) +{ + int ch; + + DEBUG_PRINT("FIRE Action "); + DEBUG_PRINTLN(pkt->data); + + // Must be armed to fire + + if( state.armed ) + { + // If FIRE, check if not fired yet and then + // if not fire it + + ch = pkt->data[1] & 0xf; + if( ch >= 0 && ch < FIRE_CHANNELS ) + { + if( fire[ch].fired == 0 ) + { + fire_op( ch ); + + // Set response on success + gen_packet( pkt->from,2,"RF",&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + } + } + } + else + { + DEBUG_PRINTLN("** NOT ARMED **"); + } +} + +/*********************************************************************** +* +* void delay_action( PACKET *pkt ) - Delay Fire squib +* +* INPUT: pkt - Input packet +* +* OUTPUT: Fire channel after delay +* +* 12-Nov-2011 [[a1b444e30a] Allow up to max in packet for delay time +* +**********************************************************************/ + +static void delay_action( PACKET *pkt ) +{ + int i; + char ch; + + DEBUG_PRINT("Delay FIRE Action "); + DEBUG_PRINTLN(pkt->data); + + // (0) Must be armed to work + + if( state.armed ) + { + + // (1) Make sure we are not in a delay now, if so just bail + + if( state.in_delay == 0 ) + { + state.delay_channel = 0xf & pkt->data[1]; // Channel + state.delay_time = 0; + + // (2) Form up delay time + // Allow up to max in packet + + for( i=0; ilen; i++ ) + { + ch = pkt->data[2+i]; + if( ch == '\0') + break; + + // Otherwise add it in + + state.delay_time = (0xf & ch ) + (10 * state.delay_time); + } + + DEBUG_PRINT("Delay CH "); + DEBUG_PRINT_DEC( state.delay_channel); + DEBUG_PRINT(" Delay: "); + DEBUG_PRINT_DEC(state.delay_time); + DEBUG_PRINTLN(" "); + + // (3) Start delay action + + state.in_delay = 1; + + // Set response on success + gen_packet( pkt->from,2,"RD",&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + } + } + else + { + DEBUG_PRINTLN("** NOT ARMED **"); + } +} + +/*********************************************************************** +* +* void pgm_action( PACKET *pkt ) - Store events in queue +* +* INPUT: pkt - Input packet +* +* OUTPUT: Event stored in queue +* +* 12-Nov-2011 [[a1b444e30a] Allow up to max in packet for delay time +* +**********************************************************************/ + +static void pgm_action( PACKET *pkt ) +{ + int i; + char ch; + char data; + long ft; + + DEBUG_PRINT("PGM EVENT Action "); + DEBUG_PRINTLN(pkt->data); + + // (1) Make sure we are not in a event handling now, if so just bail + + if( state.in_event == 0 ) + { + ch = 0xf & pkt->data[1]; // Channel + ft = 0; + + // (2) Form up delay time + // Allow up to max in packet + + for( i=0; ilen; i++ ) + { + data = pkt->data[2+i]; + if( data == '\0') + break; + + // Otherwise add it in + + ft = (0xf & data ) + (10 * ft); + } + + DEBUG_PRINT("Event CH "); + DEBUG_PRINT_DEC( ch ); + DEBUG_PRINT(" FT: "); + DEBUG_PRINT_DEC(ft); + DEBUG_PRINTLN(" "); + + // (3) Store in queue if possible + + if( store_in_queue( ch,ft ) == 0 ) + { + gen_packet( pkt->from,2,"RP",&(state.response[0])); + // Save control address + state.control = pkt->from; // store controller + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + + + + + } + else + { + DEBUG_PRINT("QUEUE FULL"); + } + } + +} + +/*********************************************************************** +* +* void status_action( PACKET *pkt ) - Return Status +* +* INPUT: pkt - Input packet +* +* OUTPUT: Return status +* +* 16-Jan-2011 [e4208b8f56] Change response format +* 23-Jan-2011 Shorten response don't send NUL +* +**********************************************************************/ + +static void status_action( PACKET *pkt ) +{ + int n,i; + char data[8]; + + DEBUG_PRINT("Status Action "); + DEBUG_PRINTLN(pkt->data); + + // (1) Fill data buffer with STATUS information + // SR[A/D][Fired][Unfired] + + data[0] = 'R'; + data[1] = 'S'; + if( state.armed == 1 ) + data[2] = 'A'; + else + data[2] = 'D'; + + // Build the fired bits with 5 on the left and 0 on the right + + check_device(fire); // Get current status + + n = 1; + data[3] = 0x40; + data[4] = 0x40; + + for( i=0; ifrom,5,data,&(state.response[0])); + DEBUG_PRINT("Status Packet ["); + DEBUG_PRINT(state.response); + DEBUG_PRINT(" ] Size "); + DEBUG_PRINT_DEC(n); + DEBUG_PRINT(" DATA ["); + DEBUG_PRINT_HEX(data[3]); + DEBUG_PRINT(" "); + DEBUG_PRINT_HEX(data[4]); + DEBUG_PRINTLN("]"); + + // Set up for response + + set_response( pkt->to ); +} + +/*********************************************************************** +* +* void sync_action( PACKET *pkt ) - Sync board clock +* +* INPUT: pkt - Input packet +* +* OUTPUT: Board clock set to 0 +* +**********************************************************************/ + +static void sync_action( PACKET *pkt ) +{ + DEBUG_PRINT("Sync Action "); + DEBUG_PRINTLN(pkt->data); + + // Set the current time offset in ms + + state.time_offset = millis(); + + // Correct state times + + state.next_blink -= state.time_offset; + state.delay_time -= state.time_offset; + state.fire_time -= state.time_offset; + state.now = 0; + + DEBUG_PRINT("Time Offset ["); + DEBUG_PRINT_DEC(state.time_offset); + DEBUG_PRINTLN("]"); + + // If ZP is sent the start event processing + + if( pkt->data[1] == 'P' ) + { + state.in_event = 1; + next_event(); + gen_packet( pkt->from,2,"RZP",&(state.response[0])); + } + else + gen_packet( pkt->from,2,"RZ",&(state.response[0])); + + // Set response on success + + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + set_response(pkt->to); +} + +/*********************************************************************** +* +* void version_action( PACKET *pkt ) - Return Board version +* +* INPUT: pkt - Input packet +* +* OUTPUT: Return version string +* +* 27-Jan-2011 Remove :'s in time string +* +**********************************************************************/ + +static void version_action( PACKET *pkt ) +{ + char *buffer; + int n; + int i; + + DEBUG_PRINT("Version Action "); + DEBUG_PRINTLN(pkt->data); + + // Fill the buffer with __DATE__ and __TIME__ + + buffer = (char *)&buf[0]; + for( i=0; i< STATIC_BUF_SZ; i++ ) + buffer[i] = '\0'; + + if( test_mode ) + { + strcat(buffer,"RVX"); + } + else + { + strcat(buffer,"RV"); + } + strcat(buffer,__DATE__); + strcat(buffer," "); + strcat(buffer,__TIME__); + n = strlen(buffer); + + // Remove :'s in the time string + + for( i=0; ifrom,n,buffer,&(state.response[0])); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + set_response(pkt->to); + +} + +/*********************************************************************** +* +* void channel_action( PACKET *pkt ) - Return Firing channel data +* +* INPUT: pkt - Input packet +* +* OUTPUT: Return RC +* +* 27-Jan-2011 Remove :'s in time string +* +**********************************************************************/ + +static void channel_action( PACKET *pkt ) +{ + int ch; + int ad; + char *buffer; + int psn; + int val; + char *bufp; + + // Build response + + buffer = (char *)&buf[0]; + + buffer[0] = 'R'; + buffer[1] = 'C'; + + + // Input data is C extract that and get data + // if not fire it + + ch = pkt->data[1] & 0xf; + if( ch >= 0 && ch < FIRE_CHANNELS ) + { + + if( fire[ch].fired == 1 ) + buffer[2] = 1; // Fired + else + buffer[2] = '0'; //Unfired + + // Get A/D value + + ad = analogRead( fire[ch].ad ); + + // A/D value ranges from 0 to 1023 + + bufp = (char *)&(buffer[3]); + psn = 3 + num_to_string(ad,4,bufp); // Convert A/D to 4 char string + } + else + { + // Failure packet + + buffer[2] = '0'; + buffer[3] = '0'; + psn = 4; + } + + // Send + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + set_response(pkt->to); +} + +/*********************************************************************** +* +* void address_action( PACKET *pkt ) - Change board address +* +* INPUT: pkt - Input packet +* +* OUTPUT: Change board address +* +**********************************************************************/ + +static void address_action( PACKET *pkt ) +{ + int address = 0; + char *buffer; + int psn; + char *bufp; + + DEBUG_PRINT("Address Action "); + DEBUG_PRINTLN(pkt->data); + + buffer = (char *)&buf[0]; + + // If length of packet == 1 then just return current address + + if( pkt->len > 1 ) + { + // Get the address as the second and third bytes + + address = 0xf & pkt->data[1]; + if( pkt->data[2] != '\0' ) + { + address = (pkt->data[2] & 0xf) + 10 * address; + } + + if( address >= MIN_ADDRESS && address < MAX_ADDRESS ) + { + set_address( address ); + } + } + + buffer[0] = 'R'; + buffer[1] = 'W'; + bufp = (char *)&buffer[2]; + psn = 2 + num_to_string(board_address,2,bufp); + + // In all cases return current address + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + +} + + +/*********************************************************************** +* +* void fire_time_action( PACKET *pkt ) - Change board firing time +* +* INPUT: pkt - Input packet +* +* OUTPUT: Change board firing time +* +**********************************************************************/ + +static void fire_time_action( PACKET *pkt ) +{ + int ft = 0; + int i; + char *buffer; + int psn; + char *bufp; + + DEBUG_PRINT("Fire Time Action "); + DEBUG_PRINTLN(pkt->data); + buffer = (char *)&buf[0]; + + // Only set address if length of packet > 1 + + if( pkt->len > 1 ) + { + // Get the Firing time as the 2nd through 6th bytes + + for( i=1; i<5; i++ ) + { + ft = (0xf & pkt->data[i]) + (10 * ft); + + } + + set_fire_time( ft ); + fire_time = get_fire_time(); + } + + // Build the return value, put the current time + // in the return + + buffer[0] = 'R'; + buffer[1] = 'T'; + + bufp = (char *)&(buffer[2]); + psn = 2 + num_to_string(fire_time,5,bufp); + + DEBUG_PRINT("Set Fire Time to ["); + DEBUG_PRINT_DEC(ft); + DEBUG_PRINT("] EEPROM ["); + DEBUG_PRINT_DEC(i); + DEBUG_PRINTLN("]"); + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); +} + +/*********************************************************************** +* +* void test_mode_action( PACKET *pkt ) - Change test mode +* +* INPUT: pkt - Input packet +* +* OUTPUT: Change test mode +* Data = 0 => test mode off +* == 1 => test mode on +* +**********************************************************************/ + +static void test_mode_action( PACKET *pkt ) +{ + bool tmode = false; + bool tmode_value; + char *buffer; + int psn; + char *bufp; + + + DEBUG_PRINT("Test Mode Action "); + DEBUG_PRINTLN(pkt->data); + buffer = (char *)&buf[0]; + + // Only set if packet lenght > 1 ) + + if( pkt->len > 1 ) + { + + // Get Test mode as the data value + + if( pkt->data[1] == '1' ) + tmode = true; + + + set_test_mode( tmode ); + tmode_value = get_test_mode(); + } + + // Show current value + + buffer[0] = 'R'; + buffer[1] = 'M'; + + bufp = (char *)&(buffer[2]); + psn = 2 + num_to_string(test_mode,1,bufp); + + DEBUG_PRINT("Set Test Mode to ["); + DEBUG_PRINT_DEC(tmode); + DEBUG_PRINT("] EEPROM ["); + DEBUG_PRINT_DEC(tmode_value); + DEBUG_PRINTLN("]"); + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); +} + +/*********************************************************************** +* +* void backoff_time_action( PACKET *pkt ) - Change board msg backoff time +* +* INPUT: pkt - Input packet +* +* OUTPUT: Change board return backoff time +* +**********************************************************************/ + +static void backoff_time_action( PACKET *pkt ) +{ + int bt = 0; + int i; + char *buffer; + int psn; + char *bufp; + + + DEBUG_PRINT("Backoff Time Action "); + DEBUG_PRINTLN(pkt->data); + buffer = (char *)&buf[0]; + + // Only set if packet length > 1 + + if( pkt->len > 1 ) + { + // Get the address as the 2nd through length + + for( i=1; ilen; i++ ) + { + bt = (0xf & pkt->data[i]) + (10 * bt); + + } + + set_backoff_time( bt ); + i = get_backoff_time(); + } + else + bt = backoff_time; + + // Return result + + buffer[0] = 'R'; + buffer[1] = 'B'; + bufp = (char *)&(buffer[2]); + psn = 2 + num_to_string(backoff_time,-1,bufp); + + DEBUG_PRINT("Set Backoff Time to ["); + DEBUG_PRINT_DEC(bt); + DEBUG_PRINT("] EEPROM ["); + DEBUG_PRINT_DEC(i); + DEBUG_PRINTLN("]"); + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); +} + +/*********************************************************************** +* +* void reset_action( PACKET *pkt ) - Reset board +* +* INPUT: pkt - Input packet +* +* OUTPUT: Reset board, DOES NOT RETURN +* +**********************************************************************/ + +static void reset_action( PACKET *pkt ) +{ + + DEBUG_PRINT("RESET Action "); + DEBUG_PRINTLN(pkt->data); + + // Turn off relay and LED then wait a bit + + digitalWrite(LED,1); + digitalWrite(RELAY,0); + delay(1000); + + // Now reset board + + reset_board(); +} + +/*********************************************************************** +* +* void getdata_action( PACKET *pkt ) - Get data from board +* +* INPUT: pkt - Input packet +* Data contains type of data to return +* (Ignored for now) +* +* OUTPUT: Returns response with data +* +**********************************************************************/ + +static void getdata_action( PACKET *pkt ) +{ + int bt = 0; + int i,n; + char *buffer; + int psn; + char *buft; + + + DEBUG_PRINT("Get Data Action "); + DEBUG_PRINTLN(pkt->data); + buffer = (char *)&buf[0]; + + // Ignore input data in packet (for now) + + // Return result + + buffer[0] = 'R'; + buffer[1] = GET_DATA_CMD; + + // Now fill buffer with the 6 firing times for this run + + psn = 2; // Start buffer psn + DEBUG_PRINTLN("FIRE TIMES"); + for( i=0; i= 31 ) // Buffer FULL + { + buffer[31] = '\0'; + DEBUG_PRINT_DEC(psn); + DEBUG_PRINT("] BUF["); + DEBUG_PRINT(buf); + DEBUG_PRINTLN("]"); + break; + } + DEBUG_PRINT_DEC(psn); + DEBUG_PRINT("] BUF["); + DEBUG_PRINT(buf); + DEBUG_PRINTLN("]"); + buffer[psn++] = ' '; // Overwrite NUL + } + + buffer[psn] = '\0'; // Terminate buffer + DEBUG_PRINT("Result ["); + DEBUG_PRINT(buffer); + DEBUG_PRINTLN("]"); + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + +} + +#if 0 + #pragma mark - + #pragma mark Support Routines +#endif + +/*********************************************************************** +* +* void check_device(FIRE_LIST *fl) - Check for presence of devices on +* firing channels +* INPUT: fl - Firing list of devices +* +* OUTPUT: NONE +* +**********************************************************************/ + +static void check_device(FIRE_LIST *fl) +{ + int i; + int adval; + + DEBUG_PRINTLN("CHECK DEVICE Action "); + DEBUG_PRINTLN("D A/D P F"); + + // Scan the channels for device present + + for( i=0; i 0 if not +* +* Called in init() and if EERROM version out of date then update +* eeprom to current values +* +**********************************************************************/ + +int store_in_queue( char ch, long ft ) +{ + int rtnval = -1; // Set for failure + int i; + int qpsn; + + DEBUG_PRINT("STORE IN QUEUE CH["); + DEBUG_PRINT_DEC(ch); + DEBUG_PRINT("] FT ["); + DEBUG_PRINT_DEC(ft); + DEBUG_PRINTLN("]"); + + print_queue(); + + // (1) Is there room ? + + if( state.event_count < FIRE_CHANNELS ) + { + // (2) Event count 0 special case just inserted it + + if( state.event_count == 0 ) + { + events[state.event_count].ch = ch; + events[state.event_count].ft = ft; + state.event_count++; + rtnval = 0; // SUCCESS + } + else + { + // (3) Determine where it fits in queue + + for( i=0; i= state.event_count ) + { + // Case (a) stick in new MT slot at end + + events[state.event_count].ch = ch; + events[state.event_count].ft = ft; + state.event_count++; + rtnval = 0; // SUCCESS + + DEBUG_PRINTLN("- INSERT AT END -"); + print_queue(); + } + else + { + // Case (b) Move all the items above qpsn up one into MT slot + // and insert new at qpsn + + for( i=state.event_count-1; i>=qpsn; i--) + { + events[i+1].ch = events[i].ch; + events[i+1].ft = events[i].ft; + } + events[qpsn].ch = ch; + events[qpsn].ft = ft; + + state.event_count++; + rtnval = 0; + + DEBUG_PRINT("- INSERT AT ["); + DEBUG_PRINT_DEC(qpsn); + DEBUG_PRINTLN("] -"); + print_queue(); + } + } + } + + return rtnval; + +} + +/*********************************************************************** +* +* void print_queue(void) +* +* INPUT: NONE +* +* OUTPUT: NONE +* +* Print out current event queue +* +**********************************************************************/ + +void print_queue(void) +{ + +#if DEBUG_ON + int i; + + if( state.event_count == 0 ) + { + DEBUG_PRINTLN("EVENT QUEUE MT"); + } + else + { + DEBUG_PRINTLN("- EVENT QUEUE - "); + for( i=0; i> 8); + verl = 0xff & ver; + DEBUG_PRINT(" "); + DEBUG_PRINT_HEX( verh ); + DEBUG_PRINT(" "); + DEBUG_PRINT_HEX( verl ); + DEBUG_PRINTLN("]"); + + EEPROM.write(ROMVER_LCNH,verh); + EEPROM.write(ROMVER_LCNL,verl); + + set_fire_time(DEF_FIRE_TIME); + set_backoff_time( RESP_BACKOFF ); + + DEBUG_PRINTLN("-- EEROM UPDATED --"); + } + else + { + DEBUG_PRINTLN(" MATCH USE EEPROM"); + } +} + +/*********************************************************************** +* +* int get_test_mode() - Get test mode value +* +* INPUT: NONE +* +* OUTPUT: TRUE if in test mode, FALSE if not +* +**********************************************************************/ + +static bool get_test_mode() +{ + unsigned char tmode,ctmode; + bool rtnval = false; + + // (1) Read tmode and the compliment value + // from EERPROM + + tmode = EEPROM.read( TEST_MODE_LCN ); + ctmode = EEPROM.read( CTEST_MODE_LCN ); + ctmode = 0xff & ~ctmode; + + // (2) Is this correct + + if( ctmode == tmode ) + { + // Yes, return state of tmode + + if( tmode > 0 ) + rtnval = true; + } + + + DEBUG_PRINT("Test Mode ["); + DEBUG_PRINT_DEC(rtnval); + DEBUG_PRINTLN("]"); + + return( rtnval ); +} + +/*********************************************************************** +* +* int set_test_mode(bool mode) - set Test mode +* +* INPUT: tmode - TRUE or FALSE +* +* OUTPUT: NONE +* +**********************************************************************/ + + +static void set_test_mode( bool mode ) +{ + unsigned char tmode,ctmode; + + // (1) Build the tmode and compliment + + if( mode ) + { + tmode = 0xff; + ctmode = 0; + } + else + { + tmode = 0; + ctmode = 0xff; + } + + // (2) Now write them to eerom + + EEPROM.write(TEST_MODE_LCN,tmode); + EEPROM.write(CTEST_MODE_LCN,ctmode); +} + + +/*********************************************************************** +* +* int get_address() - Get board address +* +* INPUT: NONE +* +* OUTPUT: Board address, if none set to default address +* +**********************************************************************/ + +static int get_address() +{ + unsigned char addr,caddr; + int address; + + // (1) Read the address and the compliment value + // from EERPROM + + addr = EEPROM.read( ADDR_LCN ); + caddr = EEPROM.read( CADDR_LCN ); + caddr = 0xff & ~caddr; + + // (2) Is this correct + + if( caddr == addr && + addr >= ADDR_MIN && + addr <= ADDR_MAX) + { + address = 0xff & addr; + } + else + { + // (3) Failure, set to default address + + address = set_address( DEF_ADDR ); + } + + DEBUG_PRINT("Board Address ["); + DEBUG_PRINT_DEC(address); + DEBUG_PRINTLN("]"); + + return( address ); +} + +/*********************************************************************** +* +* int set_address(int address) - set board address +* +* INPUT: address +* +* OUTPUT: Board address +* +**********************************************************************/ + + +static int set_address( int address ) +{ + unsigned char addr,caddr; + + // (1) Build the address and compliment + + addr = 0x3f & address; + caddr = 0xff & ~addr; + + // (2) Now write them to eerom + + EEPROM.write(ADDR_LCN,addr); + EEPROM.write(CADDR_LCN,caddr); + + return( address ); +} + +/*********************************************************************** +* +* int get_fire_time() - Get board firing time (in ms) +* +* INPUT: NONE +* +* OUTPUT: Returns firing time (if none returns default) +* +**********************************************************************/ + +static int get_fire_time() +{ + unsigned int ft,cft; + unsigned val; + + // (1) Read the address and the compliment value + // from EERPROM + + val = EEPROM.read( FIRE_TIME_MSB ); + ft = val << 8; + val = 0xff & EEPROM.read( FIRE_TIME_LSB ); + ft = ft | val; + + val = EEPROM.read( FIRE_TIME_CMSB ); + cft = val << 8; + val = 0xff & EEPROM.read( FIRE_TIME_CLSB ); + cft = cft | val; + cft = ~cft; + + // (2) Is this correct + + if( ft != cft ) + { + // (3) Failure, set to default time + + DEBUG_PRINTLN("** DEFAULT FIRE TIME **"); + ft = set_fire_time( DEF_FIRE_TIME ); + } + + DEBUG_PRINT("FIRE TIME ["); + DEBUG_PRINT_DEC(ft); + DEBUG_PRINTLN("]"); + + return( ft ); +} + +/*********************************************************************** +* +* int set_fire_time(int firet) - set board firing time +* +* INPUT: ft - Firing time in ms +* +* OUTPUT: Board firing time +* +**********************************************************************/ + + +static int set_fire_time( int firet ) +{ + unsigned int ft,cft; + unsigned char part; + + // (1) Build the address and compliment + + ft = firet; + cft = ~firet; + + // (2) Now write them to eerom + + part = ft >> 8; + EEPROM.write(FIRE_TIME_MSB,part); + part = 0xff & ft; + EEPROM.write(FIRE_TIME_LSB,part); + + part = cft >> 8; + EEPROM.write(FIRE_TIME_CMSB,part); + part = 0xff & cft; + EEPROM.write(FIRE_TIME_CLSB,part); + + // (3) Read value from EEPROM + + ft = get_fire_time(); + + return( ft ); +} + +/*********************************************************************** +* +* int get_backoff_time() - Get board backoff time (in ms) +* +* INPUT: NONE +* +* OUTPUT: Returns backoff time (if none returns default) +* +**********************************************************************/ + +static int get_backoff_time() +{ + unsigned int bt,cbt; + unsigned val; + + // (1) Read the address and the compliment value + // from EERPROM + + bt = EEPROM.read( BACKOFF_TIME_LCN ); + cbt = EEPROM.read( BACKOFF_TIME_LCNC ); + cbt = 0xff & ~cbt; + + // (2) Is this correct + + if( bt != cbt ) + { + // (3) Failure, set to default time + + DEBUG_PRINTLN("** DEFAULT BACKOFF TIME **"); + bt = set_backoff_time( RESP_BACKOFF ); + } + + DEBUG_PRINT("BACKOFF TIME ["); + DEBUG_PRINT_DEC(bt); + DEBUG_PRINTLN("]"); + + return( bt ); +} + +/*********************************************************************** +* +* int set_backoff_time(int firet) - set board backoff time +* +* INPUT: bt - Backoff time in ms (0-255) +* +* OUTPUT: Board backoff time +* +**********************************************************************/ + + +static int set_backoff_time( int backt ) +{ + unsigned int bt,cbt; + unsigned char part; + + // (1) Build the address and compliment + + bt = backt; + cbt = 0xff & ~backt; + + // (2) Now write them to eerom + + EEPROM.write(BACKOFF_TIME_LCN,bt); + EEPROM.write(BACKOFF_TIME_LCNC,cbt); + + // (3) Read value from EEPROM + + bt = get_backoff_time(); + + return( bt ); +} + +#if 0 + #pragma mark - + #pragma mark PACKET HANDLER +#endif + +/*********************************************************************** +* +* void handle_net( char data, PACKET *pkt ) +* +* INPUT: data - Packet character +* pkt - Packet data structure +* +* OUTPUT: NONE +* +**********************************************************************/ + +static void handle_net( char data, PACKET *pkt ) +{ + + DEBUG_PRINT("State: ["); + DEBUG_PRINT(state_name(pkt->state)); + DEBUG_PRINTLN("]"); + + // (1) Switch depending on state + + switch( pkt->state ) + { + case NO_PACKET: if( data == MSG_HDR ) + { + pkt->len = 0; + memset(pkt->data,'\0',PHY_DATA_SIZE); + pkt->state = TO_PACKET_A; + } + break; + + case TO_PACKET_A: pkt->to = 10 * (data & 0xf); + pkt->cksum = data; + if( pkt->to > MAX_ADDRESS ) + pkt->state = NO_PACKET; + else + pkt->state = TO_PACKET_B; + break; + + case TO_PACKET_B: pkt->to = pkt->to + (data & 0xf); + if( pkt->to > MAX_ADDRESS ) + { + pkt->state = NO_PACKET; + } + else + { + if( pkt->to != BCAST_ADDRESS && + pkt->to != board_address ) + { + pkt->state = NO_PACKET; + } + else + { + pkt->state = FROM_PACKET_A; + pkt->cksum += data; + } + } + break; + + case FROM_PACKET_A: pkt->from = 10 * (data & 0xf); + pkt->cksum += data; + pkt->state = FROM_PACKET_B; + break; + + case FROM_PACKET_B: pkt->from = pkt->from + (data & 0xf); + pkt->cksum += data; + pkt->state = DATA_PACKET; + break; + + case DATA_PACKET: if( data == MSG_TRLR ) + { + pkt->state = CKSUM_PACKET_A; + } + else + { + pkt->cksum += data; + pkt->data[pkt->len++] = data; + } + break; + + case CKSUM_PACKET_A: pkt->pcksum = 10 * (data & 0xf); + pkt->state = CKSUM_PACKET_B; + break; + + case CKSUM_PACKET_B: pkt->pcksum = pkt->pcksum + (data & 0xf); + // Now compare modulo 100 cksums + pkt->pcksum = pkt->pcksum % 100; + pkt->cksum = pkt->cksum % 100; + + // Show packet state + if( pkt->cksum == pkt->pcksum ) + { + pkt->state = RCVED_PACKET; + } + else + { + pkt->state = NO_PACKET; // FAILURE + DEBUG_PRINTLN(""); + DEBUG_PRINT("** CKSUM FAIL CK["); + DEBUG_PRINT_DEC(pkt->pcksum); + DEBUG_PRINT("] SB["); + DEBUG_PRINT_DEC(pkt->cksum); + DEBUG_PRINTLN("}"); + } + + case RCVED_PACKET: // Do nothing here... + break; + } + +} + + +/*********************************************************************** +* +* int gen_packet(unsigned char to,int len,char *data,char *buf) +* +* INPUT: to - TO address of packet +* len - Length of data +* data - Data to be sent +* buf - Put packet here +* +* OUTPUT: # Bytes in generated packet +* +**********************************************************************/ + +static int gen_packet(unsigned char to, int len, char *data,char *buf ) +{ + unsigned char part; + int psn = 0; + int cksum; + int i; + + // (1) Put in header character + + buf[psn++] = MSG_HDR; + + // (2) Put in TO + + part = 0x30 + (to/10); + buf[psn++] = part; + cksum = part; + part = 0x30 + (to%10); + buf[psn++] = part; + cksum = cksum + part; + + // (3) Put in from + + part = 0x30 + (board_address/10); + buf[psn++] = part; + cksum = cksum + part; + part = 0x30 + (board_address%10); + buf[psn++] = part; + cksum = cksum + part; + + // (4) Put in data + + for( i=0; i 0 ) + { + ch = Serial.read(); + rtnval = 1; + } + + return( rtnval ); +} + +/*********************************************************************** +* +* int get_message(int len,char *buffer) +* +* INPUT: len - Length of buffer to use +* buffer - Return data here +* +* OUTPUT: 1 = MSG received +* +**********************************************************************/ + +static int get_message(int len,char *buffer) +{ + int rtn; + int i; + int val; + + // (1) Get the message + + rtn = get_input("NEWNET MSG: ",len,buffer); + if( rtn > 0 ) + { + Serial.print("MESSAGE ["); + for( i=0; i 0) + { + ch = Serial.read(); + } + + // (2) Output prompt + + Serial.write(prompt); + + // (3) Loop forever getting input + // Exit on buffer full + + while( flag ) + { + if( Serial.available() > 0) + { + ch = Serial.read(); + + + switch( 0xff & ch ) + { + // We have a line..... + case CR: + case LF: // Terminate buffer + flag = 0; + rtnval = 1; + buffer[psn] = '\0'; + Serial.write("\r\n"); + break; + + + case '0': // NUMBER, just put into buffer + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': buffer[psn] = 0xff & ch; + psn = psn + 1; + break; + + case BS: // Handle BS & DEL characters + case DEL: + if( psn > 0 ) + { + // We have data so BS over it and then + // remove from buffer + + Serial.write(BS); + Serial.write(SP); + Serial.write(BS); + + psn = psn - 1; + } + else + { + // At start of buffer just send BEL + + Serial.write(BEL); + } + break; + + default: // Just put all the letters in + buffer[psn] = ch; + psn = psn + 1; + break; + } + // Echo input character + Serial.write(ch); + + // Check here for buffer overrun + // bail if so + if( psn >= len ) + flag = 0; + } + } + + rtnval = psn; + return( rtnval ); +} + +#if 0 + #pragma mark - + #pragma mark STRING Routines +#endif + +/*********************************************************************** +* +* int num_to_string( int val,int min_size,char *buffer) - Convert 16 bit integer to +* base 10 value +* INPUT: val - Value to convert (- or +) +* min_size- Minimum size of returned value (i.e. lz here if < min size) +* buffer - String returned here (NUL terminated, LZ suppressed) +* +* OUTPUT: # Bytes in result (not counting NUL) +* +**********************************************************************/ + +int num_to_string( int val,int min_size,char *buffer) +{ + bool lz = false; + int buf_psn = 0; + int digit; + int part, divisor; + + // Is number negative, make positive + + if( val < 0 ) + { + val = -1 * val; + buffer[buf_psn++] = '-'; // Negative sign... + } + + // If min_size < 5 then then set to search value + + if( min_size <= 5 && min_size > 0) + min_size = 5 - min_size; + else + min_size = 6; // No min size + + // Now convert max value = 0x7FFF -> 32767 + + divisor = 10000; + for( digit = 0; digit<5; digit++) + { + // Disable zero suppression when at min size + // if set + + if( digit >= min_size ) + lz = true; // Remove zero suppression when at min size + + part = val/divisor; + if( lz || part > 0 ) + { + buffer[buf_psn++] = 0x30 + part; + lz = true; // No more LZ suppress + } + val = val - part*divisor; + divisor = divisor/10; + } + + // Put in trailing NULL and return size + + buffer[buf_psn] = '\0'; + return buf_psn; +} + + +#if 0 + #pragma mark - + #pragma DEBUG SUPPORT +#endif + + +/*********************************************************************** +* +* char *state_name( int state ) - Return state name +* +* INPUT: state State # +* +* OUTPUT: String with state name +* +**********************************************************************/ + +char *state_name( int state ) +{ + char *rtnval = "UNKNOWN"; + +#if DEBUG_ON + + switch( state ) + { + case NO_PACKET: rtnval = "NO_PACKET"; + break; + + case TO_PACKET_A: rtnval = "TO_PACKET_A"; + break; + + case TO_PACKET_B: rtnval = "TO_PACKET_B"; + break; + + case FROM_PACKET_A: rtnval = "FROM_PACKET_A"; + break; + + case FROM_PACKET_B: rtnval = "FROM_PACKET_B"; + break; + + case DATA_PACKET: rtnval = "DATA_PACKET"; + break; + + case CKSUM_PACKET_A: rtnval = "CKSUM_PACKET_A"; + break; + + case CKSUM_PACKET_B: rtnval = "CKSUM_PACKET_B"; + break; + + case RCVED_PACKET: rtnval = "RCVED_PACKET"; + break; + } +#endif + + return rtnval; +} Index: Arduino/diag/diagpgm/diagpgm.pde ================================================================== --- Arduino/diag/diagpgm/diagpgm.pde +++ Arduino/diag/diagpgm/diagpgm.pde @@ -16,10 +16,12 @@ T1 - TX control ON T0 - TX control OFF 11-Mar-2010 Got Input to work 14-Mar-2010 Add BS use + 5-Feb-2011 [1da8774a51] Fix firing channel typos + All channels work and fire */ //**********************************************************************/ #if 0 #pragma mark - @@ -44,11 +46,11 @@ #define FIRE4 6 // Fire Channel 4 #define FIRE4_AD 4 #define FIRE5 7 // Fire Channel 5 -#define FIRE5_AD 4 +#define FIRE5_AD 5 // [1da8774a51] Should be 5 not 4 #define RELAY 8 // Other controls #define LED 9 #define TX_CNTL 13 @@ -134,12 +136,12 @@ // Set the channel directions for( i=0; i 0 ) + { +#ifdef FAKE_NETWORK + // ************** TESTING CODE FOR MANUAL ENTERING OF PACKETS + if( len = get_message(40,buf) ) + { + Serial.print(" MSG: ["); + Serial.print(buf); + Serial.println("]"); + Serial.println(""); + check_net(); // Tidy up + + // Reset after handling packet + + buf_psn = 0; + p.state = NO_PACKET; + } + + // Process received data + // Normally this would be 1 character at a time + // but in this case we have a buffer (buf) which + // is filled with characters up to a NUL + + while( buf_psn <= len ) + { + handle_net( buf[buf_psn++], &p ); + } + // ******************************************************* +#else + // ********************************* STD CHARACTER HANDLER + while( Serial.available() > 0 ) + { + ch = Serial.read(); + handle_net(ch,&p ); + + if( p.state == RCVED_PACKET ) + break; + } + // ******************************************************* +#endif + // If packet found then handle + + if( p.state == RCVED_PACKET ) + { + DEBUG_PRINT("** PACKET REC LEN: "); + DEBUG_PRINT_DEC(p.len); + DEBUG_PRINT(" DATA "); + //DEBUG_PRINTLN(p.data); + + // Switch on packet type and handle + + switch( p.data[0] ) + { + case ARM_CMD: arm_action( &p ); + break; + + case FIRE_CMD: fire_action( &p ); + break; + + case DLY_CMD: delay_action( &p ); + break; + + case PGM_CMD: pgm_action( &p ); + break; + + case STATUS_CMD:status_action( &p ); + break; + + case SYNC_CMD: sync_action( &p ); + break; + + case VER_CMD: version_action( &p ); + break; + + case CH_CMD: channel_action( &p ); + break; + + case SET_AD_CMD:address_action( &p ); + break; + + case SET_FT_CMD:fire_time_action( &p ); + break; + + case SET_TM_CMD:test_mode_action( &p ); + break; + + case BKOFF_CMD: backoff_time_action( &p ); + break; + + case GET_DATA_CMD: getdata_action( &p ); + break; + + default: Serial.println("** Unknown Command **"); + break; + } + + // Finished with packet + + p.state = NO_PACKET; + } + } + +#if 0 + #pragma mark - + #pragma mark LOOP MSG RESPONSE +#endif + + // Handle message responses after firing + + if( state.in_resp && !state.in_fire) + { + if( state.now >= state.resp_time ) + { + digitalWrite(TX_CNTL,1); // Enable TX + delay(1); // Delay to enable XMIT + + Serial.println(state.response); // Send the response + state.in_resp = 0; // Clear response + + len = strlen(state.response); + if( len > 15 ) + { + // Add extra delay [7bcdf98e54] + delay(DEF_TXEN_DLY); // Hold enable while XMIT + } + delay(DEF_TXEN_DLY); // Hold enable while XMIT + digitalWrite(TX_CNTL,0); + } + } + +#if 0 + #pragma mark - + #pragma mark LOOP BLINK +#endif + + // Process state + // Get current time in ms and check for what to do + + now = millis(); // Handle blink + state.now = now - state.time_offset; // Node time, corrected for sync offset + if( state.in_blink ) + { + if( now >= state.next_blink ) + { + state.next_blink += BLINK_TIME; + val = digitalRead( LED ); + val = val ^ 0x1; + digitalWrite(LED,val); + } + } + +#if 0 + #pragma mark - + #pragma mark LOOP FIRE DELAY +#endif + + if( state.in_delay ) // Handle delay + { + if( state.now >= state.delay_time ) + { + + DEBUG_PRINT("DELAY HIT NOW ["); + DEBUG_PRINT_DEC(state.now); + DEBUG_PRINT("] DT ["); + DEBUG_PRINT_DEC(state.delay_time); + DEBUG_PRINT("] OFFSET ["); + DEBUG_PRINT_DEC(state.time_offset); + DEBUG_PRINTLN("]"); + + // Exit delay and go to fire + + state.in_delay = 0; + // [a1b444e30a] Added to better support Delay fires + fire_op( state.delay_channel ); + //------------------------------------------------- + DEBUG_PRINT("DELAY FIRE ["); + DEBUG_PRINT_DEC( state.fire_channel); + DEBUG_PRINTLN("]"); + } + } + +#if 0 + #pragma mark - + #pragma mark LOOP FIRE +#endif + + if( state.in_fire ) // Check for firing done + { + // [9e81c1a523] Adaptive - See if it's fired already + // Read out the A/D on that channel & set fired status + // fake it on test mode (show as fired) + + if( test_mode ) + { + + fire[state.fire_channel].pres = 0; // Assume fired + fire[state.fire_channel].ch_ad = DEVICE_PRESENT + 0x10; + fire_check = true; // [83c43c7cd5] + } + else + { + // Time to check + + n = (int) state.now - state.adaptive_time; + if( n > FIRE_CHECK_TIME ) + { + digitalWrite( fire[state.fire_channel].fire,0); // Disable fire + delay( FIRE_CHECK_WAIT); // Wait + fire[state.fire_channel].ch_ad = // Measure presence + analogRead( fire[state.fire_channel].ad ); + + DEBUG_PRINT("ADAPT A/D["); + DEBUG_PRINT_HEX(fire[state.fire_channel].ch_ad); + DEBUG_PRINTLN("]"); + + state.adaptive_time = state.now; // Reset time + digitalWrite( fire[state.fire_channel].fire,1); // Enable fire + fire_check = true; // [83c43c7cd5] + } + } + + // Now check for fired status, save the current time + // for later analysis + + fire[state.fire_channel].fire_time = state.now; // Save fire time + if( fire_check ) // [83c43c7cd5] + { + if( fire[state.fire_channel].ch_ad < DEVICE_PRESENT ) + { + fired = 1; // Mark as fired + fire[state.fire_channel].fired = 1; // Mark as fired + fire[state.fire_channel].pres = 0; // Nothing connected + DEBUG_PRINT("FIRE EARLY STOP ["); + DEBUG_PRINT_HEX(fire[state.fire_channel].pres); + DEBUG_PRINTLN("]"); + } + else + { + fired = 0; // Mark as not fired + fire[state.fire_channel].pres = 1; // Item as connected + } + fire_check = false; + } + + // If fired tidy up + + if( (fired == 1) || (state.now >= state.fire_time) ) + { + state.in_fire = 0; + digitalWrite( fire[state.fire_channel].fire,0); + + DEBUG_PRINT("FIRED NOW FIRE_DATA ["); + DEBUG_PRINT_DEC( fired ); + DEBUG_PRINT(" "); + DEBUG_PRINT(state.now); + DEBUG_PRINT(" "); + DEBUG_PRINT(state.fire_time); + DEBUG_PRINT("] FIRE_TIME ["); + + // Compute firing time MAX time - (now - firetime) + + fire[state.fire_channel].fire_time = fire_time - (state.now - state.fire_time); + DEBUG_PRINT_DEC( fire[state.fire_channel].fire_time ); + DEBUG_PRINTLN("]"); + DEBUG_PRINTLN("FIRE DONE"); + + // Handle next event if set + + if( state.in_event ) + { + // Send off a response + + buf[0] = 'R'; + buf[1] = 'P'; + buf[2] = state.fire_channel + 0x30; + buf[3] = '\0'; + gen_packet( state.control,3,buf,&(state.response[0])); + set_response(BCAST_ADDRESS); // Send BCAST to stagger return + DEBUG_PRINT("EVENT RESP ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + + // Move to next + next_event(); + } + } + } +} + +#if 0 + #pragma mark - + #pragma mark Handler Routines +#endif + +/*********************************************************************** +* +* void arm_action( PACKET *pkt ) - Turn on/off ARM relay +* +* INPUT: pkt - Input packet +* +* OUTPUT: Arm relay changed state +* +**********************************************************************/ + +static void arm_action( PACKET *pkt ) +{ + char success = 0; + + DEBUG_PRINT("ARM Action "); + DEBUG_PRINTLN(pkt->data); + + if( pkt->data[1] == 'A' ) + { + // On arm action, flip on ARM relay + // Start blinking + + DEBUG_PRINTLN("ARMED"); + digitalWrite(RELAY,1); + state.in_blink = 1; + state.next_blink = state.now; + state.armed = 1; + success = 1; + + // Check the devices + + delay( 100 ); // Wait 100 ms before check + check_device( fire ); + } + + if( pkt->data[1] == 'D' ) + { + // On Disarm, turn off blink, LED and relay + + DEBUG_PRINTLN("DISARMED"); + digitalWrite( RELAY,0); + digitalWrite( LED,0); + state.in_blink = 0; + state.armed = 0; + success = 1; + } + + // Set response on success + + if( success ) + { + gen_packet( pkt->from,2,"RA",&(state.response[0])); + set_response(pkt->to); + + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + } +} + +/*********************************************************************** +* +* void fire_action( PACKET *pkt ) - Fire squib +* +* INPUT: pkt - Input packet +* +* OUTPUT: Fire channel +* +**********************************************************************/ + +static void fire_action( PACKET *pkt ) +{ + int ch; + + DEBUG_PRINT("FIRE Action "); + DEBUG_PRINTLN(pkt->data); + + // Must be armed to fire + + if( state.armed ) + { + // If FIRE, check if not fired yet and then + // if not fire it + + ch = pkt->data[1] & 0xf; + if( ch >= 0 && ch < FIRE_CHANNELS ) + { + if( fire[ch].fired == 0 ) + { + fire_op( ch ); + + // Set response on success + gen_packet( pkt->from,2,"RF",&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + } + } + } + else + { + DEBUG_PRINTLN("** NOT ARMED **"); + } +} + +/*********************************************************************** +* +* void delay_action( PACKET *pkt ) - Delay Fire squib +* +* INPUT: pkt - Input packet +* +* OUTPUT: Fire channel after delay +* +* 12-Nov-2011 [[a1b444e30a] Allow up to max in packet for delay time +* +**********************************************************************/ + +static void delay_action( PACKET *pkt ) +{ + int i; + char ch; + + DEBUG_PRINT("Delay FIRE Action "); + DEBUG_PRINTLN(pkt->data); + + // (0) Must be armed to work + + if( state.armed ) + { + + // (1) Make sure we are not in a delay now, if so just bail + + if( state.in_delay == 0 ) + { + state.delay_channel = 0xf & pkt->data[1]; // Channel + state.delay_time = 0; + + // (2) Form up delay time + // Allow up to max in packet + + for( i=0; ilen; i++ ) + { + ch = pkt->data[2+i]; + if( ch == '\0') + break; + + // Otherwise add it in + + state.delay_time = (0xf & ch ) + (10 * state.delay_time); + } + + DEBUG_PRINT("Delay CH "); + DEBUG_PRINT_DEC( state.delay_channel); + DEBUG_PRINT(" Delay: "); + DEBUG_PRINT_DEC(state.delay_time); + DEBUG_PRINTLN(" "); + + // (3) Start delay action + + state.in_delay = 1; + + // Set response on success + gen_packet( pkt->from,2,"RD",&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + } + } + else + { + DEBUG_PRINTLN("** NOT ARMED **"); + } +} + +/*********************************************************************** +* +* void pgm_action( PACKET *pkt ) - Store events in queue +* +* INPUT: pkt - Input packet +* +* OUTPUT: Event stored in queue +* +* 12-Nov-2011 [[a1b444e30a] Allow up to max in packet for delay time +* +**********************************************************************/ + +static void pgm_action( PACKET *pkt ) +{ + int i; + char ch; + char data; + long ft; + + DEBUG_PRINT("PGM EVENT Action "); + DEBUG_PRINTLN(pkt->data); + + // (1) Make sure we are not in a event handling now, if so just bail + + if( state.in_event == 0 ) + { + ch = 0xf & pkt->data[1]; // Channel + ft = 0; + + // (2) Form up delay time + // Allow up to max in packet + + for( i=0; ilen; i++ ) + { + data = pkt->data[2+i]; + if( data == '\0') + break; + + // Otherwise add it in + + ft = (0xf & data ) + (10 * ft); + } + + DEBUG_PRINT("Event CH "); + DEBUG_PRINT_DEC( ch ); + DEBUG_PRINT(" FT: "); + DEBUG_PRINT_DEC(ft); + DEBUG_PRINTLN(" "); + + // (3) Store in queue if possible + + if( store_in_queue( ch,ft ) == 0 ) + { + gen_packet( pkt->from,2,"RP",&(state.response[0])); + // Save control address + state.control = pkt->from; // store controller + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + + + + + } + else + { + DEBUG_PRINT("QUEUE FULL"); + } + } + +} + +/*********************************************************************** +* +* void status_action( PACKET *pkt ) - Return Status +* +* INPUT: pkt - Input packet +* +* OUTPUT: Return status +* +* 16-Jan-2011 [e4208b8f56] Change response format +* 23-Jan-2011 Shorten response don't send NUL +* +**********************************************************************/ + +static void status_action( PACKET *pkt ) +{ + int n,i; + char data[8]; + + DEBUG_PRINT("Status Action "); + DEBUG_PRINTLN(pkt->data); + + // (1) Fill data buffer with STATUS information + // SR[A/D][Fired][Unfired] + + data[0] = 'R'; + data[1] = 'S'; + if( state.armed == 1 ) + data[2] = 'A'; + else + data[2] = 'D'; + + // Build the fired bits with 5 on the left and 0 on the right + + check_device(fire); // Get current status + + n = 1; + data[3] = 0x40; + data[4] = 0x40; + + for( i=0; ifrom,5,data,&(state.response[0])); + DEBUG_PRINT("Status Packet ["); + DEBUG_PRINT(state.response); + DEBUG_PRINT(" ] Size "); + DEBUG_PRINT_DEC(n); + DEBUG_PRINT(" DATA ["); + DEBUG_PRINT_HEX(data[3]); + DEBUG_PRINT(" "); + DEBUG_PRINT_HEX(data[4]); + DEBUG_PRINTLN("]"); + + // Set up for response + + set_response( pkt->to ); +} + +/*********************************************************************** +* +* void sync_action( PACKET *pkt ) - Sync board clock +* +* INPUT: pkt - Input packet +* +* OUTPUT: Board clock set to 0 +* +**********************************************************************/ + +static void sync_action( PACKET *pkt ) +{ + DEBUG_PRINT("Sync Action "); + DEBUG_PRINTLN(pkt->data); + + // Set the current time offset in ms + + state.time_offset = millis(); + + // Correct state times + + state.next_blink -= state.time_offset; + state.delay_time -= state.time_offset; + state.fire_time -= state.time_offset; + state.now = 0; + + DEBUG_PRINT("Time Offset ["); + DEBUG_PRINT_DEC(state.time_offset); + DEBUG_PRINTLN("]"); + + // If ZP is sent the start event processing + + if( pkt->data[1] == 'P' ) + { + state.in_event = 1; + next_event(); + gen_packet( pkt->from,2,"RZP",&(state.response[0])); + } + else + gen_packet( pkt->from,2,"RZ",&(state.response[0])); + + // Set response on success + + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + set_response(pkt->to); +} + +/*********************************************************************** +* +* void version_action( PACKET *pkt ) - Return Board version +* +* INPUT: pkt - Input packet +* +* OUTPUT: Return version string +* +* 27-Jan-2011 Remove :'s in time string +* +**********************************************************************/ + +static void version_action( PACKET *pkt ) +{ + char *buffer; + int n; + int i; + + DEBUG_PRINT("Version Action "); + DEBUG_PRINTLN(pkt->data); + + // Fill the buffer with __DATE__ and __TIME__ + + buffer = (char *)&buf[0]; + for( i=0; i< STATIC_BUF_SZ; i++ ) + buffer[i] = '\0'; + + if( test_mode ) + { + strcat(buffer,"RVX"); + } + else + { + strcat(buffer,"RV"); + } + strcat(buffer,__DATE__); + strcat(buffer," "); + strcat(buffer,__TIME__); + n = strlen(buffer); + + // Remove :'s in the time string + + for( i=0; ifrom,n,buffer,&(state.response[0])); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + set_response(pkt->to); + +} + +/*********************************************************************** +* +* void channel_action( PACKET *pkt ) - Return Firing channel data +* +* INPUT: pkt - Input packet +* +* OUTPUT: Return RC +* +* 27-Jan-2011 Remove :'s in time string +* +**********************************************************************/ + +static void channel_action( PACKET *pkt ) +{ + int ch; + int ad; + char *buffer; + int psn; + //int val; + char *bufp; + + // Build response + + buffer = (char *)&buf[0]; + + buffer[0] = 'R'; + buffer[1] = 'C'; + + + // Input data is C extract that and get data + // if not fire it + + ch = pkt->data[1] & 0xf; + if( ch >= 0 && ch < FIRE_CHANNELS ) + { + + if( fire[ch].fired == 1 ) + buffer[2] = 1; // Fired + else + buffer[2] = '0'; //Unfired + + // Get A/D value + + ad = analogRead( fire[ch].ad ); + + // A/D value ranges from 0 to 1023 + + bufp = (char *)&(buffer[3]); + psn = 3 + num_to_string(ad,4,bufp); // Convert A/D to 4 char string + } + else + { + // Failure packet + + buffer[2] = '0'; + buffer[3] = '0'; + psn = 4; + } + + // Send + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + set_response(pkt->to); +} + +/*********************************************************************** +* +* void address_action( PACKET *pkt ) - Change board address +* +* INPUT: pkt - Input packet +* +* OUTPUT: Change board address +* +**********************************************************************/ + +static void address_action( PACKET *pkt ) +{ + int address = 0; + char *buffer; + int psn; + char *bufp; + + DEBUG_PRINT("Address Action "); + DEBUG_PRINTLN(pkt->data); + + buffer = (char *)&buf[0]; + + // If length of packet == 1 then just return current address + + if( pkt->len > 1 ) + { + // Get the address as the second and third bytes + + address = 0xf & pkt->data[1]; + if( pkt->data[2] != '\0' ) + { + address = (pkt->data[2] & 0xf) + 10 * address; + } + + if( address >= MIN_ADDRESS && address < MAX_ADDRESS ) + { + set_address( address ); + } + } + + buffer[0] = 'R'; + buffer[1] = 'W'; + bufp = (char *)&buffer[2]; + psn = 2 + num_to_string(board_address,2,bufp); + + // In all cases return current address + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + +} + + +/*********************************************************************** +* +* void fire_time_action( PACKET *pkt ) - Change board firing time +* +* INPUT: pkt - Input packet +* +* OUTPUT: Change board firing time +* +**********************************************************************/ + +static void fire_time_action( PACKET *pkt ) +{ + int ft = 0; + int i; + char *buffer; + int psn; + char *bufp; + + DEBUG_PRINT("Fire Time Action "); + DEBUG_PRINTLN(pkt->data); + buffer = (char *)&buf[0]; + + // Only set address if length of packet > 1 + + if( pkt->len > 1 ) + { + // Get the Firing time as the 2nd through 6th bytes + + for( i=1; i<5; i++ ) + { + ft = (0xf & pkt->data[i]) + (10 * ft); + + } + + set_fire_time( ft ); + fire_time = get_fire_time(); + } + + // Build the return value, put the current time + // in the return + + buffer[0] = 'R'; + buffer[1] = 'T'; + + bufp = (char *)&(buffer[2]); + psn = 2 + num_to_string(fire_time,5,bufp); + + DEBUG_PRINT("Set Fire Time to ["); + DEBUG_PRINT_DEC(ft); + DEBUG_PRINT("] EEPROM ["); + DEBUG_PRINT_DEC(i); + DEBUG_PRINTLN("]"); + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); +} + +/*********************************************************************** +* +* void test_mode_action( PACKET *pkt ) - Change test mode +* +* INPUT: pkt - Input packet +* +* OUTPUT: Change test mode +* Data = 0 => test mode off +* == 1 => test mode on +* +**********************************************************************/ + +static void test_mode_action( PACKET *pkt ) +{ + bool tmode = false; + bool tmode_value = 0; + char *buffer; + int psn; + char *bufp; + + + DEBUG_PRINT("Test Mode Action "); + DEBUG_PRINTLN(pkt->data); + buffer = (char *)&buf[0]; + + // Only set if packet lenght > 1 ) + + if( pkt->len > 1 ) + { + + // Get Test mode as the data value + + if( pkt->data[1] == '1' ) + tmode = true; + + + set_test_mode( tmode ); + tmode_value = get_test_mode(); + } + + // Show current value + + buffer[0] = 'R'; + buffer[1] = 'M'; + + bufp = (char *)&(buffer[2]); + psn = 2 + num_to_string(test_mode,1,bufp); + + DEBUG_PRINT("Set Test Mode to ["); + DEBUG_PRINT_DEC(tmode); + DEBUG_PRINT("] EEPROM ["); + DEBUG_PRINT_DEC(tmode_value); + DEBUG_PRINTLN("]"); + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); +} + +/*********************************************************************** +* +* void backoff_time_action( PACKET *pkt ) - Change board msg backoff time +* +* INPUT: pkt - Input packet +* +* OUTPUT: Change board return backoff time +* +**********************************************************************/ + +static void backoff_time_action( PACKET *pkt ) +{ + int bt = 0; + int i = 0; + char *buffer; + int psn; + char *bufp; + + + DEBUG_PRINT("Backoff Time Action "); + DEBUG_PRINTLN(pkt->data); + buffer = (char *)&buf[0]; + + // Only set if packet length > 1 + + if( pkt->len > 1 ) + { + // Get the address as the 2nd through length + + for( i=1; ilen; i++ ) + { + bt = (0xf & pkt->data[i]) + (10 * bt); + + } + + set_backoff_time( bt ); + i = get_backoff_time(); + } + else + bt = backoff_time; + + // Return result + + buffer[0] = 'R'; + buffer[1] = 'B'; + bufp = (char *)&(buffer[2]); + psn = 2 + num_to_string(backoff_time,-1,bufp); + + DEBUG_PRINT("Set Backoff Time to ["); + DEBUG_PRINT_DEC(bt); + DEBUG_PRINT("] EEPROM ["); + DEBUG_PRINT_DEC(i); + DEBUG_PRINTLN("]"); + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); +} + +/*********************************************************************** +* +* void getdata_action( PACKET *pkt ) - Get data from board +* +* INPUT: pkt - Input packet +* Data contains type of data to return +* (Ignored for now) +* +* OUTPUT: Returns response with data +* +**********************************************************************/ + +static void getdata_action( PACKET *pkt ) +{ + //int bt = 0; + int i; + char *buffer; + int psn; + char *buft; + + + DEBUG_PRINT("Get Data Action "); + DEBUG_PRINTLN(pkt->data); + buffer = (char *)&buf[0]; + + // Ignore input data in packet (for now) + + // Return result + + buffer[0] = 'R'; + buffer[1] = GET_DATA_CMD; + + // Now fill buffer with the 6 firing times for this run + + psn = 2; // Start buffer psn + DEBUG_PRINTLN("FIRE TIMES"); + for( i=0; i= 31 ) // Buffer FULL + { + buffer[31] = '\0'; + DEBUG_PRINT_DEC(psn); + DEBUG_PRINT("] BUF["); + DEBUG_PRINT(buf); + DEBUG_PRINTLN("]"); + break; + } + DEBUG_PRINT_DEC(psn); + DEBUG_PRINT("] BUF["); + DEBUG_PRINT(buf); + DEBUG_PRINTLN("]"); + buffer[psn++] = ' '; // Overwrite NUL + } + + buffer[psn] = '\0'; // Terminate buffer + DEBUG_PRINT("Result ["); + DEBUG_PRINT(buffer); + DEBUG_PRINTLN("]"); + + // Set response on success + gen_packet( pkt->from,psn,buffer,&(state.response[0])); + set_response(pkt->to); + DEBUG_PRINT("RESPONSE ["); + DEBUG_PRINT(state.response); + DEBUG_PRINTLN("]"); + +} + +#if 0 + #pragma mark - + #pragma mark Support Routines +#endif + +/*********************************************************************** +* +* void check_device(FIRE_LIST *fl) - Check for presence of devices on +* firing channels +* INPUT: fl - Firing list of devices +* +* OUTPUT: NONE +* +**********************************************************************/ + +static void check_device(FIRE_LIST *fl) +{ + int i; + int adval; + + DEBUG_PRINTLN("CHECK DEVICE Action "); + DEBUG_PRINTLN("D A/D P F"); + + // Scan the channels for device present + + for( i=0; i 0 if not +* +* Called in init() and if EERROM version out of date then update +* eeprom to current values +* +**********************************************************************/ + +int store_in_queue( char ch, long ft ) +{ + int rtnval = -1; // Set for failure + int i; + int qpsn; + + DEBUG_PRINT("STORE IN QUEUE CH["); + DEBUG_PRINT_DEC(ch); + DEBUG_PRINT("] FT ["); + DEBUG_PRINT_DEC(ft); + DEBUG_PRINTLN("]"); + + print_queue(); + + // (1) Is there room ? + + if( state.event_count < FIRE_CHANNELS ) + { + // (2) Event count 0 special case just inserted it + + if( state.event_count == 0 ) + { + events[state.event_count].ch = ch; + events[state.event_count].ft = ft; + state.event_count++; + rtnval = 0; // SUCCESS + } + else + { + // (3) Determine where it fits in queue + + for( i=0; i= state.event_count ) + { + // Case (a) stick in new MT slot at end + + events[state.event_count].ch = ch; + events[state.event_count].ft = ft; + state.event_count++; + rtnval = 0; // SUCCESS + + DEBUG_PRINTLN("- INSERT AT END -"); + print_queue(); + } + else + { + // Case (b) Move all the items above qpsn up one into MT slot + // and insert new at qpsn + + for( i=state.event_count-1; i>=qpsn; i--) + { + events[i+1].ch = events[i].ch; + events[i+1].ft = events[i].ft; + } + events[qpsn].ch = ch; + events[qpsn].ft = ft; + + state.event_count++; + rtnval = 0; + + DEBUG_PRINT("- INSERT AT ["); + DEBUG_PRINT_DEC(qpsn); + DEBUG_PRINTLN("] -"); + print_queue(); + } + } + } + + return rtnval; + +} + +/*********************************************************************** +* +* void print_queue(void) +* +* INPUT: NONE +* +* OUTPUT: NONE +* +* Print out current event queue +* +**********************************************************************/ + +void print_queue(void) +{ + +#if DEBUG_ON + int i; + + if( state.event_count == 0 ) + { + DEBUG_PRINTLN("EVENT QUEUE MT"); + } + else + { + DEBUG_PRINTLN("- EVENT QUEUE - "); + for( i=0; i> 8); + verl = 0xff & ver; + DEBUG_PRINT(" "); + DEBUG_PRINT_HEX( verh ); + DEBUG_PRINT(" "); + DEBUG_PRINT_HEX( verl ); + DEBUG_PRINTLN("]"); + + EEPROM.write(ROMVER_LCNH,verh); + EEPROM.write(ROMVER_LCNL,verl); + + set_fire_time(DEF_FIRE_TIME); + set_backoff_time( RESP_BACKOFF ); + + DEBUG_PRINTLN("-- EEROM UPDATED --"); + } + else + { + DEBUG_PRINTLN(" MATCH USE EEPROM"); + } +} + +/*********************************************************************** +* +* int get_test_mode() - Get test mode value +* +* INPUT: NONE +* +* OUTPUT: TRUE if in test mode, FALSE if not +* +**********************************************************************/ + +static bool get_test_mode() +{ + unsigned char tmode,ctmode; + bool rtnval = false; + + // (1) Read tmode and the compliment value + // from EERPROM + + tmode = EEPROM.read( TEST_MODE_LCN ); + ctmode = EEPROM.read( CTEST_MODE_LCN ); + ctmode = 0xff & ~ctmode; + + // (2) Is this correct + + if( ctmode == tmode ) + { + // Yes, return state of tmode + + if( tmode > 0 ) + rtnval = true; + } + + + DEBUG_PRINT("Test Mode ["); + DEBUG_PRINT_DEC(rtnval); + DEBUG_PRINTLN("]"); + + return( rtnval ); +} + +/*********************************************************************** +* +* int set_test_mode(bool mode) - set Test mode +* +* INPUT: tmode - TRUE or FALSE +* +* OUTPUT: NONE +* +**********************************************************************/ + + +static void set_test_mode( bool mode ) +{ + unsigned char tmode,ctmode; + + // (1) Build the tmode and compliment + + if( mode ) + { + tmode = 0xff; + ctmode = 0; + } + else + { + tmode = 0; + ctmode = 0xff; + } + + // (2) Now write them to eerom + + EEPROM.write(TEST_MODE_LCN,tmode); + EEPROM.write(CTEST_MODE_LCN,ctmode); +} + + +/*********************************************************************** +* +* int get_address() - Get board address +* +* INPUT: NONE +* +* OUTPUT: Board address, if none set to default address +* +**********************************************************************/ + +static int get_address() +{ + unsigned char addr,caddr; + int address; + + // (1) Read the address and the compliment value + // from EERPROM + + addr = EEPROM.read( ADDR_LCN ); + caddr = EEPROM.read( CADDR_LCN ); + caddr = 0xff & ~caddr; + + // (2) Is this correct + + if( caddr == addr && + addr >= ADDR_MIN && + addr <= ADDR_MAX) + { + address = 0xff & addr; + } + else + { + // (3) Failure, set to default address + + address = set_address( DEF_ADDR ); + } + + DEBUG_PRINT("Board Address ["); + DEBUG_PRINT_DEC(address); + DEBUG_PRINTLN("]"); + + return( address ); +} + +/*********************************************************************** +* +* int set_address(int address) - set board address +* +* INPUT: address +* +* OUTPUT: Board address +* +**********************************************************************/ + + +static int set_address( int address ) +{ + unsigned char addr,caddr; + + // (1) Build the address and compliment + + addr = 0x3f & address; + caddr = 0xff & ~addr; + + // (2) Now write them to eerom + + EEPROM.write(ADDR_LCN,addr); + EEPROM.write(CADDR_LCN,caddr); + + return( address ); +} + +/*********************************************************************** +* +* int get_fire_time() - Get board firing time (in ms) +* +* INPUT: NONE +* +* OUTPUT: Returns firing time (if none returns default) +* +**********************************************************************/ + +static int get_fire_time() +{ + unsigned int ft,cft; + unsigned val; + + // (1) Read the address and the compliment value + // from EERPROM + + val = EEPROM.read( FIRE_TIME_MSB ); + ft = val << 8; + val = 0xff & EEPROM.read( FIRE_TIME_LSB ); + ft = ft | val; + + val = EEPROM.read( FIRE_TIME_CMSB ); + cft = val << 8; + val = 0xff & EEPROM.read( FIRE_TIME_CLSB ); + cft = cft | val; + cft = ~cft; + + // (2) Is this correct + + if( ft != cft ) + { + // (3) Failure, set to default time + + DEBUG_PRINTLN("** DEFAULT FIRE TIME **"); + ft = set_fire_time( DEF_FIRE_TIME ); + } + + DEBUG_PRINT("FIRE TIME ["); + DEBUG_PRINT_DEC(ft); + DEBUG_PRINTLN("]"); + + return( ft ); +} + +/*********************************************************************** +* +* int set_fire_time(int firet) - set board firing time +* +* INPUT: ft - Firing time in ms +* +* OUTPUT: Board firing time +* +**********************************************************************/ + + +static int set_fire_time( int firet ) +{ + unsigned int ft,cft; + unsigned char part; + + // (1) Build the address and compliment + + ft = firet; + cft = ~firet; + + // (2) Now write them to eerom + + part = ft >> 8; + EEPROM.write(FIRE_TIME_MSB,part); + part = 0xff & ft; + EEPROM.write(FIRE_TIME_LSB,part); + + part = cft >> 8; + EEPROM.write(FIRE_TIME_CMSB,part); + part = 0xff & cft; + EEPROM.write(FIRE_TIME_CLSB,part); + + // (3) Read value from EEPROM + + ft = get_fire_time(); + + return( ft ); +} + +/*********************************************************************** +* +* int get_backoff_time() - Get board backoff time (in ms) +* +* INPUT: NONE +* +* OUTPUT: Returns backoff time (if none returns default) +* +**********************************************************************/ + +static int get_backoff_time() +{ + unsigned int bt,cbt; + //unsigned val; + + // (1) Read the address and the compliment value + // from EERPROM + + bt = EEPROM.read( BACKOFF_TIME_LCN ); + cbt = EEPROM.read( BACKOFF_TIME_LCNC ); + cbt = 0xff & ~cbt; + + // (2) Is this correct + + if( bt != cbt ) + { + // (3) Failure, set to default time + + DEBUG_PRINTLN("** DEFAULT BACKOFF TIME **"); + bt = set_backoff_time( RESP_BACKOFF ); + } + + DEBUG_PRINT("BACKOFF TIME ["); + DEBUG_PRINT_DEC(bt); + DEBUG_PRINTLN("]"); + + return( bt ); +} + +/*********************************************************************** +* +* int set_backoff_time(int firet) - set board backoff time +* +* INPUT: bt - Backoff time in ms (0-255) +* +* OUTPUT: Board backoff time +* +**********************************************************************/ + + +static int set_backoff_time( int backt ) +{ + unsigned int bt,cbt; + //unsigned char part; + + // (1) Build the address and compliment + + bt = backt; + cbt = 0xff & ~backt; + + // (2) Now write them to eerom + + EEPROM.write(BACKOFF_TIME_LCN,bt); + EEPROM.write(BACKOFF_TIME_LCNC,cbt); + + // (3) Read value from EEPROM + + bt = get_backoff_time(); + + return( bt ); +} + +#if 0 + #pragma mark - + #pragma mark PACKET HANDLER +#endif + +/*********************************************************************** +* +* void handle_net( char data, PACKET *pkt ) +* +* INPUT: data - Packet character +* pkt - Packet data structure +* +* OUTPUT: NONE +* +**********************************************************************/ + +static void handle_net( char data, PACKET *pkt ) +{ + +// DEBUG_PRINT("State: ["); +// DEBUG_PRINT(state_name(pkt->state)); +// DEBUG_PRINTLN("]"); + + if( pkt->state == NO_PACKET ) + { + pkt->len = 0; + memset(pkt->data,'\0',PHY_DATA_SIZE); + pkt->state = DATA_PACKET; + } + + // (1) Switch depending on state + + switch( pkt->state ) + { + case NO_PACKET: if( data == MSG_HDR ) + { + pkt->len = 0; + memset(pkt->data,'\0',PHY_DATA_SIZE); + pkt->state = TO_PACKET_A; + } + break; + + case TO_PACKET_A: pkt->to = 10 * (data & 0xf); + pkt->cksum = data; + if( pkt->to > MAX_ADDRESS ) + pkt->state = NO_PACKET; + else + pkt->state = TO_PACKET_B; + break; + + case TO_PACKET_B: pkt->to = pkt->to + (data & 0xf); + if( pkt->to > MAX_ADDRESS ) + { + pkt->state = NO_PACKET; + } + else + { + if( pkt->to != BCAST_ADDRESS && + pkt->to != board_address ) + { + pkt->state = NO_PACKET; + } + else + { + pkt->state = FROM_PACKET_A; + pkt->cksum += data; + } + } + break; + + case FROM_PACKET_A: pkt->from = 10 * (data & 0xf); + pkt->cksum += data; + pkt->state = FROM_PACKET_B; + break; + + case FROM_PACKET_B: pkt->from = pkt->from + (data & 0xf); + pkt->cksum += data; + pkt->state = DATA_PACKET; + break; + + case DATA_PACKET: if( data == MSG_TRLR ) + { + pkt->state = RCVED_PACKET; + pkt->to = 1; + pkt->from = 30; + } + else + { + pkt->cksum += data; + pkt->data[pkt->len++] = data; + } + break; + + case CKSUM_PACKET_A: pkt->pcksum = 10 * (data & 0xf); + pkt->state = CKSUM_PACKET_B; + break; + + case CKSUM_PACKET_B: pkt->pcksum = pkt->pcksum + (data & 0xf); + // Now compare modulo 100 cksums + pkt->pcksum = pkt->pcksum % 100; + pkt->cksum = pkt->cksum % 100; + + // Show packet state + if( pkt->cksum == pkt->pcksum ) + { + pkt->state = RCVED_PACKET; + } + else + { + pkt->state = NO_PACKET; // FAILURE + DEBUG_PRINTLN(""); + DEBUG_PRINT("** CKSUM FAIL CK["); + DEBUG_PRINT_DEC(pkt->pcksum); + DEBUG_PRINT("] SB["); + DEBUG_PRINT_DEC(pkt->cksum); + DEBUG_PRINTLN("}"); + } + + case RCVED_PACKET: // Do nothing here... + break; + } + +} + + +/*********************************************************************** +* +* int gen_packet(unsigned char to,int len,char *data,char *buf) +* +* INPUT: to - TO address of packet +* len - Length of data +* data - Data to be sent +* buf - Put packet here +* +* OUTPUT: # Bytes in generated packet +* +**********************************************************************/ + +static int gen_packet(unsigned char to, int len, char *data,char *buf ) +{ + unsigned char part; + int psn = 0; + int cksum; + int i; + + // (1) Put in header character + + buf[psn++] = MSG_HDR; + + // (2) Put in TO + + part = 0x30 + (to/10); + buf[psn++] = part; + cksum = part; + part = 0x30 + (to%10); + buf[psn++] = part; + cksum = cksum + part; + + // (3) Put in from + + part = 0x30 + (board_address/10); + buf[psn++] = part; + cksum = cksum + part; + part = 0x30 + (board_address%10); + buf[psn++] = part; + cksum = cksum + part; + + // (4) Put in data + + for( i=0; i 0 ) + { + ch = Serial.read(); + rtnval = 1; + } + + return( rtnval ); +} + +/*********************************************************************** +* +* int get_message(int len,char *buffer) +* +* INPUT: len - Length of buffer to use +* buffer - Return data here +* +* OUTPUT: 1 = MSG received +* +**********************************************************************/ + +static int get_message(int len,char *buffer) +{ + int rtn; + int i; + int val; + + // (1) Get the message + + rtn = get_input("NEWNET MSG: ",len,buffer); + if( rtn > 0 ) + { + Serial.print("MESSAGE ["); + for( i=0; i 0) + { + ch = Serial.read(); + } + + // (2) Output prompt + + Serial.write(prompt); + + // (3) Loop forever getting input + // Exit on buffer full + + while( flag ) + { + if( Serial.available() > 0) + { + ch = Serial.read(); + + + switch( 0xff & ch ) + { + // We have a line..... + case CR: + case LF: // Terminate buffer + flag = 0; + rtnval = 1; + buffer[psn++] = ';'; + buffer[psn] = '\0'; + Serial.write("\r\n"); + break; + + + case '0': // NUMBER, just put into buffer + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': buffer[psn] = 0xff & ch; + psn = psn + 1; + break; + + case BS: // Handle BS & DEL characters + case DEL: + if( psn > 0 ) + { + // We have data so BS over it and then + // remove from buffer + + Serial.write(BS); + Serial.write(SP); + Serial.write(BS); + + psn = psn - 1; + } + else + { + // At start of buffer just send BEL + + Serial.write(BEL); + } + break; + + case ';': // Put ; in with no change + buffer[psn] = ch & 0xDF; // UPPER CASE + psn = psn + 1; + break; + + default: // Just put all the letters in + buffer[psn] = ch & 0xDF; // UPPER CASE + psn = psn + 1; + break; + } + // Echo input character + Serial.write(ch); + + // Check here for buffer overrun + // bail if so + if( psn >= len ) + flag = 0; + } + } + + rtnval = psn; + return( rtnval ); +} + +#if 0 + #pragma mark - + #pragma mark STRING Routines +#endif + +/*********************************************************************** +* +* int num_to_string( int val,int min_size,char *buffer) - Convert 16 bit integer to +* base 10 value +* INPUT: val - Value to convert (- or +) +* min_size- Minimum size of returned value (i.e. lz here if < min size) +* buffer - String returned here (NUL terminated, LZ suppressed) +* +* OUTPUT: # Bytes in result (not counting NUL) +* +**********************************************************************/ + +int num_to_string( int val,int min_size,char *buffer) +{ + bool lz = false; + int buf_psn = 0; + int digit; + int part, divisor; + + // Is number negative, make positive + + if( val < 0 ) + { + val = -1 * val; + buffer[buf_psn++] = '-'; // Negative sign... + } + + // If min_size < 5 then then set to search value + + if( min_size <= 5 && min_size > 0) + min_size = 5 - min_size; + else + min_size = 6; // No min size + + // Now convert max value = 0x7FFF -> 32767 + + divisor = 10000; + for( digit = 0; digit<5; digit++) + { + // Disable zero suppression when at min size + // if set + + if( digit >= min_size ) + lz = true; // Remove zero suppression when at min size + + part = val/divisor; + if( lz || part > 0 ) + { + buffer[buf_psn++] = 0x30 + part; + lz = true; // No more LZ suppress + } + val = val - part*divisor; + divisor = divisor/10; + } + + // Put in trailing NULL and return size + + buffer[buf_psn] = '\0'; + return buf_psn; +} + + +#if 0 + #pragma mark - + #pragma DEBUG SUPPORT +#endif + + +/*********************************************************************** +* +* char *state_name( int state ) - Return state name +* +* INPUT: state State # +* +* OUTPUT: String with state name +* +**********************************************************************/ + +char *state_name( int state ) +{ + char *rtnval = "UNKNOWN"; + +#if DEBUG_ON + + switch( state ) + { + case NO_PACKET: rtnval = "NO_PACKET"; + break; + + case TO_PACKET_A: rtnval = "TO_PACKET_A"; + break; + + case TO_PACKET_B: rtnval = "TO_PACKET_B"; + break; + + case FROM_PACKET_A: rtnval = "FROM_PACKET_A"; + break; + + case FROM_PACKET_B: rtnval = "FROM_PACKET_B"; + break; + + case DATA_PACKET: rtnval = "DATA_PACKET"; + break; + + case CKSUM_PACKET_A: rtnval = "CKSUM_PACKET_A"; + break; + + case CKSUM_PACKET_B: rtnval = "CKSUM_PACKET_B"; + break; + + case RCVED_PACKET: rtnval = "RCVED_PACKET"; + break; + } +#endif + + return rtnval; +} ADDED Arduino/diag/fireDiag/Firediag/debug.h Index: Arduino/diag/fireDiag/Firediag/debug.h ================================================================== --- Arduino/diag/fireDiag/Firediag/debug.h +++ Arduino/diag/fireDiag/Firediag/debug.h @@ -0,0 +1,41 @@ +//********************************************************************** +/* + DEBUG TOOLS + + 26-May-2010 Initial Verson + 3-Jan-2011 Change to be all MACROS + 17-Jan-2011 [f38bf44b59] Add network control to debug print +*/ +//**********************************************************************/ + +#ifndef DEBUG_F +#define DEBUG_F 1 + +#define DEBUG_ON 1 // Enables debug print +#define FAKE_NETWORK 1 // Enables line editing input + +#ifdef DEBUG_ON + #define DEBUG_PRINTLN(x) digitalWrite(TX_CNTL,1);\ + Serial.println(x);\ + digitalWrite(TX_CNTL,0) + + #define DEBUG_PRINT(x) digitalWrite(TX_CNTL,1);\ + Serial.print(x);\ + digitalWrite(TX_CNTL,0) + + #define DEBUG_PRINT_DEC(x) digitalWrite(TX_CNTL,1);\ + Serial.print(x,DEC);\ + digitalWrite(TX_CNTL,0) + + #define DEBUG_PRINT_HEX(x) digitalWrite(TX_CNTL,1);\ + Serial.print(x,HEX);\ + digitalWrite(TX_CNTL,0) +#else + #define DEBUG_PRINTLN(x) + #define DEBUG_PRINT(x) + #define DEBUG_PRINT_DEC(x) + #define DEBUG_PRINT_HEX(x) + +#endif + +#endif ADDED Arduino/diag/fireDiag/Firediag/eerom.h Index: Arduino/diag/fireDiag/Firediag/eerom.h ================================================================== --- Arduino/diag/fireDiag/Firediag/eerom.h +++ Arduino/diag/fireDiag/Firediag/eerom.h @@ -0,0 +1,51 @@ +//********************************************************************** +/* + EEROM Definitions + + 16-Oct-2011 [1ac05cf7a5] Initial version +*/ +//**********************************************************************/ + +#ifndef EEROM_H + +// To cause an update to the EEROM data +// Increment this EROMVER +// This will cause EEROM to go to the new +// defaults + +#define EROMVER (unsigned int)0x0 + +#define EROMVER_BASE (unsigned int)0xA55A +#define ROMVER EROMVER_BASE + EROMVER + + //****************************************** + // EEPROM DATA, 0 based ADDRESSES + // 0-1 VERSION ID + // 2-3 Unit ADDRESS value + compliment + // 4-7 Firing time (4 bytes + compliment) + // 8-9 Test mode + compliment + // 10-11 Backoff time + compliment + +// ROM VERSION DATA +#define ROMVER_LCNH 0 +#define ROMVER_LCNL 1 + + // ADDRESS DATA +#define ADDR_LCN 2 +#define CADDR_LCN 3 + +// Firing time data +#define FIRE_TIME_MSB 4 +#define FIRE_TIME_LSB 5 +#define FIRE_TIME_CMSB 6 +#define FIRE_TIME_CLSB 7 + +// Test mode data +#define TEST_MODE_LCN 8 +#define CTEST_MODE_LCN 9 + +// Backoff time data +#define BACKOFF_TIME_LCN 10 +#define BACKOFF_TIME_LCNC 11 + +#endif ADDED Arduino/diag/fireDiag/Firediag/newnet.h Index: Arduino/diag/fireDiag/Firediag/newnet.h ================================================================== --- Arduino/diag/fireDiag/Firediag/newnet.h +++ Arduino/diag/fireDiag/Firediag/newnet.h @@ -0,0 +1,191 @@ +//********************************************************************** +/* + NETWORK DEFS + + 26-May-2010 Initial Verson + + 22-Jan-2011 [f2fa5910e4] Add delay for XMIT Enable/Disable + 23-Jan-2011 [0022f592fb] Add code to check status of firing stations + 5-Feb-2011 [1da8774a51] Fix typo on Analog channel for firing channel 5 + 18-Apr-2011 Add test mode to simulate actual firing [900924d040] + 30-Apr-2011 [e3d9606749] Change backoff time to 25 ms + Also put backoff value in to EEPROM + 1-May-2011 [092caa26e8] Add a RESET command + 14-May-2011 [c2029557fb] Check for device presense on arm + 16-Jul-2011 [9e81c1a523] Add adaptive firing action & read out of + adaptive results + 16-Oct-2011 [230cd6fbad] Incorrect use of presence flag in FIRE_LIST + structure add an A/D value to store and A/D value and + separate from use of presence bit in structure + 13-Nov-2011 [fd8800dae4] Add PGM command to store firing events + Modify sizes of things so we don't run out of RAM +*/ +//**********************************************************************/ + +#ifndef NEWNET_H +#define NEWNET_H 1 + + //*** + // LOCAL CONSTANTS + //*** +#define DEF_ADDR 1 +#define ADDR_MIN 1 +#define ADDR_MAX 32 + + +//****************************************** + +#define FIRE0 2 // Fire Channel 0 +#define FIRE0_AD 0 + +#define FIRE1 3 // Fire Channel 1 +#define FIRE1_AD 1 + +#define FIRE2 4 // Fire Channel 2 +#define FIRE2_AD 2 + +#define FIRE3 5 // Fire Channel 3 +#define FIRE3_AD 3 + +#define FIRE4 6 // Fire Channel 4 +#define FIRE4_AD 4 + +#define FIRE5 7 // Fire Channel 5 +#define FIRE5_AD 5 + + +typedef struct { + char fire; // Fire control channel + char ad; // Fire control A/D channel + int ch_ad; // Current A/D value + char pres; // If present (i.e. < 0x80) + char fired; // If if channel fired + int fire_time; // Firing time (adaptive result) +} FIRE_LIST; + + +#define RELAY 8 // Other controls +#define LED 9 + +#define TX_CNTL 13 + +#define DEVICE_PRESENT 0x80 // Above this device connected +#define FIRE_CHANNELS 6 +#define DEF_FIRE_TIME 3000 // # ms to fire channel +#define FIRE_CHECK_TIME 300 // Check fired every 100 ms +#define FIRE_CHECK_WAIT 1 // Wait 1 ms for before pres measure + +#define MSG_HDR ':' +#define MSG_TRLR ';' +#define DATA_SEP ',' +#define PHY_DATA_SIZE 32 // Max size of data xfered +#define CKSUM_MODULO 100 // For address calc +#define BCAST_ADDRESS 0 // Broadcast address +#define MIN_ADDRESS 1 +#define MAX_ADDRESS 32 +#define DEF_TXEN_DLY 20 // TX enable disable delay time +#define RESP_BACKOFF 25+DEF_TXEN_DLY // ms/address + +#define BLINK_TIME 200 // 200 ms blink + +#define PARENT_ADDRESS MAX_ADDRESS + +// Packet commands + +// Operational commands +#define ARM_CMD 'A' +#define FIRE_CMD 'F' +#define DLY_CMD 'D' +#define STATUS_CMD 'S' +#define SYNC_CMD 'Z' +#define VER_CMD 'V' +#define CH_CMD 'C' +#define PGM_CMD 'P' + + +// Setup commands +#define SET_AD_CMD 'W' +#define SET_FT_CMD 'T' +#define SET_TM_CMD 'M' +#define BKOFF_CMD 'B' +#define RESET_CMD 'X' + +// Readout commands +#define GET_DATA_CMD 'R' + +typedef enum { + NO_PACKET, + TO_PACKET_A, // Getting TO address (first byte) + TO_PACKET_B, // Getting TO address (second byte) + FROM_PACKET_A, // Getting FROM address (first byte) + FROM_PACKET_B, // Getting FROM address (second byte) + DATA_PACKET, // Getting packet data + CKSUM_PACKET_A, // Getting packet cksum (first byte) + CKSUM_PACKET_B, // Getting packet cksum (second byte) + RCVED_PACKET, // Packet ready to use + } PACKET_STATE; + + +typedef struct { + // Received packet + PACKET_STATE state; // State of current received packet + unsigned char to; + unsigned char from; + unsigned char len; + char data[PHY_DATA_SIZE]; // Packet data + short cksum; // Accmulated cksum + short pcksum; // Packet checksum + + // Chunk handler + + //unsigned char chunk_len; // Length of current chunk + //unsigned char chunk_end; // End of current chunk + //unsigned chunk_ptr; // Psn in current chunk + } PACKET; + +typedef struct { + char ch; // Fire on this channel + long ft; // At this time + } EVENT_QUEUE; + +typedef struct { + // Node State + + long now; // Current offset time + long time_offset; // Offset time for Z action + char armed; + + // Blink Data + + char in_blink; // 1 if in blink + long next_blink; // Next blink time + + // Delay Data + + char in_delay; // 1 if in a delay mode + char delay_channel; + long delay_time; // Delay time (if any) + + // Fire Data + + char in_fire; // 1 if in fire, + char fire_channel; // Channel to fire + long fire_time; // End of fire time + long adaptive_time; // Used for adaptive firing time + + // Response data + + char in_resp; // 1 If response in process + long resp_time; // Send response now + char response[32]; // Response data buffer + + // Event programming + + char in_event; // TRUE when in an event + int event_count; // # Events stored + int event_next; // Next event to be run + unsigned char control; // Source of PGM events + } NODE_STATE; +#endif + +void handle_packet( char data, PACKET *pkt ); ADDED Arduino/diag/fireDiag/debug.h Index: Arduino/diag/fireDiag/debug.h ================================================================== --- Arduino/diag/fireDiag/debug.h +++ Arduino/diag/fireDiag/debug.h @@ -0,0 +1,41 @@ +//********************************************************************** +/* + DEBUG TOOLS + + 26-May-2010 Initial Verson + 3-Jan-2011 Change to be all MACROS + 17-Jan-2011 [f38bf44b59] Add network control to debug print +*/ +//**********************************************************************/ + +#ifndef DEBUG_F +#define DEBUG_F 1 + +#define DEBUG_ON 1 // Enables debug print +#define FAKE_NETWORK 1 // Enables line editing input + +#ifdef DEBUG_ON + #define DEBUG_PRINTLN(x) digitalWrite(TX_CNTL,1);\ + Serial.println(x);\ + digitalWrite(TX_CNTL,0) + + #define DEBUG_PRINT(x) digitalWrite(TX_CNTL,1);\ + Serial.print(x);\ + digitalWrite(TX_CNTL,0) + + #define DEBUG_PRINT_DEC(x) digitalWrite(TX_CNTL,1);\ + Serial.print(x,DEC);\ + digitalWrite(TX_CNTL,0) + + #define DEBUG_PRINT_HEX(x) digitalWrite(TX_CNTL,1);\ + Serial.print(x,HEX);\ + digitalWrite(TX_CNTL,0) +#else + #define DEBUG_PRINTLN(x) + #define DEBUG_PRINT(x) + #define DEBUG_PRINT_DEC(x) + #define DEBUG_PRINT_HEX(x) + +#endif + +#endif ADDED Arduino/diag/fireDiag/eerom.h Index: Arduino/diag/fireDiag/eerom.h ================================================================== --- Arduino/diag/fireDiag/eerom.h +++ Arduino/diag/fireDiag/eerom.h @@ -0,0 +1,51 @@ +//********************************************************************** +/* + EEROM Definitions + + 16-Oct-2011 [1ac05cf7a5] Initial version +*/ +//**********************************************************************/ + +#ifndef EEROM_H + +// To cause an update to the EEROM data +// Increment this EROMVER +// This will cause EEROM to go to the new +// defaults + +#define EROMVER (unsigned int)0x0 + +#define EROMVER_BASE (unsigned int)0xA55A +#define ROMVER EROMVER_BASE + EROMVER + + //****************************************** + // EEPROM DATA, 0 based ADDRESSES + // 0-1 VERSION ID + // 2-3 Unit ADDRESS value + compliment + // 4-7 Firing time (4 bytes + compliment) + // 8-9 Test mode + compliment + // 10-11 Backoff time + compliment + +// ROM VERSION DATA +#define ROMVER_LCNH 0 +#define ROMVER_LCNL 1 + + // ADDRESS DATA +#define ADDR_LCN 2 +#define CADDR_LCN 3 + +// Firing time data +#define FIRE_TIME_MSB 4 +#define FIRE_TIME_LSB 5 +#define FIRE_TIME_CMSB 6 +#define FIRE_TIME_CLSB 7 + +// Test mode data +#define TEST_MODE_LCN 8 +#define CTEST_MODE_LCN 9 + +// Backoff time data +#define BACKOFF_TIME_LCN 10 +#define BACKOFF_TIME_LCNC 11 + +#endif ADDED Arduino/diag/fireDiag/newnet.h Index: Arduino/diag/fireDiag/newnet.h ================================================================== --- Arduino/diag/fireDiag/newnet.h +++ Arduino/diag/fireDiag/newnet.h @@ -0,0 +1,191 @@ +//********************************************************************** +/* + NETWORK DEFS + + 26-May-2010 Initial Verson + + 22-Jan-2011 [f2fa5910e4] Add delay for XMIT Enable/Disable + 23-Jan-2011 [0022f592fb] Add code to check status of firing stations + 5-Feb-2011 [1da8774a51] Fix typo on Analog channel for firing channel 5 + 18-Apr-2011 Add test mode to simulate actual firing [900924d040] + 30-Apr-2011 [e3d9606749] Change backoff time to 25 ms + Also put backoff value in to EEPROM + 1-May-2011 [092caa26e8] Add a RESET command + 14-May-2011 [c2029557fb] Check for device presense on arm + 16-Jul-2011 [9e81c1a523] Add adaptive firing action & read out of + adaptive results + 16-Oct-2011 [230cd6fbad] Incorrect use of presence flag in FIRE_LIST + structure add an A/D value to store and A/D value and + separate from use of presence bit in structure + 13-Nov-2011 [fd8800dae4] Add PGM command to store firing events + Modify sizes of things so we don't run out of RAM +*/ +//**********************************************************************/ + +#ifndef NEWNET_H +#define NEWNET_H 1 + + //*** + // LOCAL CONSTANTS + //*** +#define DEF_ADDR 1 +#define ADDR_MIN 1 +#define ADDR_MAX 32 + + +//****************************************** + +#define FIRE0 2 // Fire Channel 0 +#define FIRE0_AD 0 + +#define FIRE1 3 // Fire Channel 1 +#define FIRE1_AD 1 + +#define FIRE2 4 // Fire Channel 2 +#define FIRE2_AD 2 + +#define FIRE3 5 // Fire Channel 3 +#define FIRE3_AD 3 + +#define FIRE4 6 // Fire Channel 4 +#define FIRE4_AD 4 + +#define FIRE5 7 // Fire Channel 5 +#define FIRE5_AD 5 + + +typedef struct { + char fire; // Fire control channel + char ad; // Fire control A/D channel + int ch_ad; // Current A/D value + char pres; // If present (i.e. < 0x80) + char fired; // If if channel fired + int fire_time; // Firing time (adaptive result) +} FIRE_LIST; + + +#define RELAY 8 // Other controls +#define LED 9 + +#define TX_CNTL 13 + +#define DEVICE_PRESENT 0x80 // Above this device connected +#define FIRE_CHANNELS 6 +#define DEF_FIRE_TIME 3000 // # ms to fire channel +#define FIRE_CHECK_TIME 300 // Check fired every 100 ms +#define FIRE_CHECK_WAIT 1 // Wait 1 ms for before pres measure + +#define MSG_HDR ':' +#define MSG_TRLR ';' +#define DATA_SEP ',' +#define PHY_DATA_SIZE 32 // Max size of data xfered +#define CKSUM_MODULO 100 // For address calc +#define BCAST_ADDRESS 0 // Broadcast address +#define MIN_ADDRESS 1 +#define MAX_ADDRESS 32 +#define DEF_TXEN_DLY 20 // TX enable disable delay time +#define RESP_BACKOFF 25+DEF_TXEN_DLY // ms/address + +#define BLINK_TIME 200 // 200 ms blink + +#define PARENT_ADDRESS MAX_ADDRESS + +// Packet commands + +// Operational commands +#define ARM_CMD 'A' +#define FIRE_CMD 'F' +#define DLY_CMD 'D' +#define STATUS_CMD 'S' +#define SYNC_CMD 'Z' +#define VER_CMD 'V' +#define CH_CMD 'C' +#define PGM_CMD 'P' + + +// Setup commands +#define SET_AD_CMD 'W' +#define SET_FT_CMD 'T' +#define SET_TM_CMD 'M' +#define BKOFF_CMD 'B' +#define RESET_CMD 'X' + +// Readout commands +#define GET_DATA_CMD 'R' + +typedef enum { + NO_PACKET, + TO_PACKET_A, // Getting TO address (first byte) + TO_PACKET_B, // Getting TO address (second byte) + FROM_PACKET_A, // Getting FROM address (first byte) + FROM_PACKET_B, // Getting FROM address (second byte) + DATA_PACKET, // Getting packet data + CKSUM_PACKET_A, // Getting packet cksum (first byte) + CKSUM_PACKET_B, // Getting packet cksum (second byte) + RCVED_PACKET, // Packet ready to use + } PACKET_STATE; + + +typedef struct { + // Received packet + PACKET_STATE state; // State of current received packet + unsigned char to; + unsigned char from; + unsigned char len; + char data[PHY_DATA_SIZE]; // Packet data + short cksum; // Accmulated cksum + short pcksum; // Packet checksum + + // Chunk handler + + //unsigned char chunk_len; // Length of current chunk + //unsigned char chunk_end; // End of current chunk + //unsigned chunk_ptr; // Psn in current chunk + } PACKET; + +typedef struct { + char ch; // Fire on this channel + long ft; // At this time + } EVENT_QUEUE; + +typedef struct { + // Node State + + long now; // Current offset time + long time_offset; // Offset time for Z action + char armed; + + // Blink Data + + char in_blink; // 1 if in blink + long next_blink; // Next blink time + + // Delay Data + + char in_delay; // 1 if in a delay mode + char delay_channel; + long delay_time; // Delay time (if any) + + // Fire Data + + char in_fire; // 1 if in fire, + char fire_channel; // Channel to fire + long fire_time; // End of fire time + long adaptive_time; // Used for adaptive firing time + + // Response data + + char in_resp; // 1 If response in process + long resp_time; // Send response now + char response[32]; // Response data buffer + + // Event programming + + char in_event; // TRUE when in an event + int event_count; // # Events stored + int event_next; // Next event to be run + unsigned char control; // Source of PGM events + } NODE_STATE; +#endif + +void handle_packet( char data, PACKET *pkt ); ADDED Costs/8boards.numbers/Contents/PkgInfo Index: Costs/8boards.numbers/Contents/PkgInfo ================================================================== --- Costs/8boards.numbers/Contents/PkgInfo +++ Costs/8boards.numbers/Contents/PkgInfo @@ -0,0 +1,1 @@ +???????? ADDED Costs/8boards.numbers/QuickLook/Thumbnail.jpg Index: Costs/8boards.numbers/QuickLook/Thumbnail.jpg ================================================================== --- Costs/8boards.numbers/QuickLook/Thumbnail.jpg +++ Costs/8boards.numbers/QuickLook/Thumbnail.jpg cannot compute difference between binary files ADDED Costs/8boards.numbers/document-thumbnail.tiff Index: Costs/8boards.numbers/document-thumbnail.tiff ================================================================== --- Costs/8boards.numbers/document-thumbnail.tiff +++ Costs/8boards.numbers/document-thumbnail.tiff cannot compute difference between binary files ADDED Costs/8boards.numbers/index.xml.gz Index: Costs/8boards.numbers/index.xml.gz ================================================================== --- Costs/8boards.numbers/index.xml.gz +++ Costs/8boards.numbers/index.xml.gz cannot compute difference between binary files ADDED Docs/Images/AutoUnArmed.png Index: Docs/Images/AutoUnArmed.png ================================================================== --- Docs/Images/AutoUnArmed.png +++ Docs/Images/AutoUnArmed.png cannot compute difference between binary files ADDED Docs/Images/Auto_Armed.png Index: Docs/Images/Auto_Armed.png ================================================================== --- Docs/Images/Auto_Armed.png +++ Docs/Images/Auto_Armed.png cannot compute difference between binary files ADDED Docs/Images/Auto_Running.png Index: Docs/Images/Auto_Running.png ================================================================== --- Docs/Images/Auto_Running.png +++ Docs/Images/Auto_Running.png cannot compute difference between binary files ADDED Docs/Images/Auto_Start.png Index: Docs/Images/Auto_Start.png ================================================================== --- Docs/Images/Auto_Start.png +++ Docs/Images/Auto_Start.png cannot compute difference between binary files ADDED Docs/Images/Firenet_board.png Index: Docs/Images/Firenet_board.png ================================================================== --- Docs/Images/Firenet_board.png +++ Docs/Images/Firenet_board.png cannot compute difference between binary files ADDED Docs/Images/FiringChannels.eps Index: Docs/Images/FiringChannels.eps ================================================================== --- Docs/Images/FiringChannels.eps +++ Docs/Images/FiringChannels.eps @@ -0,0 +1,7326 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%HiResBoundingBox: 0.000000 0.000000 398.000000 418.000000 +%APL_DSC_Encoding: UTF8 +%APLProducer: (Version 10.6.7 (Build 10J869) Quartz PS Context) +%%Title: (Unknown) +%%Creator: (Unknown) +%%CreationDate: (Unknown) +%%For: (Unknown) +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 0 0 398 418 +%%EndComments +%%BeginProlog +%%BeginFile: cg-pdf.ps +%%Copyright: Copyright 2000-2004 Apple Computer Incorporated. +%%Copyright: All Rights Reserved. +currentpacking true setpacking +/cg_md 141 dict def +cg_md begin +/L3? languagelevel 3 ge def +/bd{bind def}bind def +/ld{load def}bd +/xs{exch store}bd +/xd{exch def}bd +/cmmtx matrix def +mark +/sc/setcolor +/scs/setcolorspace +/dr/defineresource +/fr/findresource +/T/true +/F/false +/d/setdash +/w/setlinewidth +/J/setlinecap +/j/setlinejoin +/M/setmiterlimit +/i/setflat +/rc/rectclip +/rf/rectfill +/rs/rectstroke +/f/fill +/f*/eofill +/sf/selectfont +/s/show +/xS/xshow +/yS/yshow +/xyS/xyshow +/S/stroke +/m/moveto +/l/lineto +/c/curveto +/h/closepath +/n/newpath +/q/gsave +/Q/grestore +counttomark 2 idiv +{ld}repeat pop +/SC{ + /ColorSpace fr scs +}bd +/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld +/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld +/cgmtx matrix def +/sdmtx{cgmtx currentmatrix pop}bd +/CM {cgmtx setmatrix}bd +/cm {cmmtx astore CM concat}bd +/W{clip newpath}bd +/W*{eoclip newpath}bd +statusdict begin product end dup (HP) anchorsearch{ + pop pop pop + true +}{ + pop + (hp) anchorsearch{ + pop pop true + }{ + pop false + }ifelse +}ifelse +{ + { + { + pop pop + (0)dup 0 4 -1 roll put + F charpath + }cshow + } +}{ + {F charpath} +}ifelse +/cply exch bd +/cps {cply stroke}bd +/pgsave 0 def +/bp{/pgsave save store}bd +/ep{pgsave restore showpage}def +/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd +/scrdict 10 dict def +/scrmtx matrix def +/patarray 0 def +/createpat{patarray 3 1 roll put}bd +/makepat{ +scrmtx astore pop +gsave +initgraphics +CM +patarray exch get +scrmtx +makepattern +grestore +setpattern +}bd +/cg_BeginEPSF{ + userdict save/cg_b4_Inc_state exch put + userdict/cg_endepsf/cg_EndEPSF load put + count userdict/cg_op_count 3 -1 roll put + countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put + 3 sub{end}repeat + /showpage {} def + 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + false setstrokeadjust false setoverprint +}bd +/cg_EndEPSF{ + countdictstack 3 sub { end } repeat + cg_dict_array 3 1 index length 3 sub getinterval + {begin}forall + count userdict/cg_op_count get sub{pop}repeat + userdict/cg_b4_Inc_state get restore + F setpacking +}bd +/cg_biproc{currentfile/RunLengthDecode filter}bd +/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd +/ImageDataSource 0 def +L3?{ + /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd + /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd +}{ + /ImageBandMask 0 def + /ImageBandData 0 def + /cg_mibiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd + /cg_miaiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter + dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd +}ifelse +/imsave 0 def +/BI{save/imsave xd mark}bd +/EI{imsave restore}bd +/ID{ +counttomark 2 idiv +dup 2 add +dict begin +{def} repeat +pop +/ImageType 1 def +/ImageMatrix[Width 0 0 Height neg 0 Height]def +currentdict dup/ImageMask known{ImageMask}{F}ifelse exch +L3?{ + dup/MaskedImage known + { + pop + << + /ImageType 3 + /InterleaveType 2 + /DataDict currentdict + /MaskDict + << /ImageType 1 + /Width Width + /Height Height + /ImageMatrix ImageMatrix + /BitsPerComponent 1 + /Decode [0 1] + currentdict/Interpolate known + {/Interpolate Interpolate}if + >> + >> + }if +}if +exch +{imagemask}{image}ifelse +end +}bd +/cguidfix{statusdict begin mark version end +{cvr}stopped{cleartomark 0}{exch pop}ifelse +2012 lt{dup findfont dup length dict begin +{1 index/FID ne 2 index/UniqueID ne and +{def} {pop pop} ifelse}forall +currentdict end definefont pop +}{pop}ifelse +}bd +/t_array 0 def +/t_i 0 def +/t_c 1 string def +/x_proc{ + exch t_array t_i get add exch moveto + /t_i t_i 1 add store +}bd +/y_proc{ + t_array t_i get add moveto + /t_i t_i 1 add store +}bd +/xy_proc{ + + t_array t_i 2 copy 1 add get 3 1 roll get + 4 -1 roll add 3 1 roll add moveto + /t_i t_i 2 add store +}bd +/sop 0 def +/cp_proc/x_proc ld +/base_charpath +{ + /t_array xs + /t_i 0 def + { + t_c 0 3 -1 roll put + currentpoint + t_c cply sop + cp_proc + }forall + /t_array 0 def +}bd +/sop/stroke ld +/nop{}def +/xsp/base_charpath ld +/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd +/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd +/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd +/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd +/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd +/refnt{ +findfont dup length dict copy dup +/Encoding 4 -1 roll put +definefont pop +}bd +/renmfont{ +findfont dup length dict copy definefont pop +}bd +L3? dup dup{save exch}if +/Range 0 def +/DataSource 0 def +/val 0 def +/nRange 0 def +/mulRange 0 def +/d0 0 def +/r0 0 def +/di 0 def +/ri 0 def +/a0 0 def +/a1 0 def +/r1 0 def +/r2 0 def +/dx 0 def +/Nsteps 0 def +/sh3tp 0 def +/ymax 0 def +/ymin 0 def +/xmax 0 def +/xmin 0 def +/setupFunEval +{ + begin + /nRange Range length 2 idiv store + /mulRange + + [ + 0 1 nRange 1 sub + { + 2 mul/nDim2 xd + Range nDim2 get + Range nDim2 1 add get + 1 index sub + + 255 div + exch + }for + ]store + end +}bd +/FunEval +{ + begin + + nRange mul /val xd + + 0 1 nRange 1 sub + { + dup 2 mul/nDim2 xd + val + add DataSource exch get + mulRange nDim2 get mul + mulRange nDim2 1 add get + add + }for + end +}bd +/max +{ + 2 copy lt + {exch pop}{pop}ifelse +}bd +/sh2 +{ + /Coords load aload pop + 3 index 3 index translate + + 3 -1 roll sub + 3 1 roll exch + sub + 2 copy + dup mul exch dup mul add sqrt + dup + scale + atan + + rotate + + /Function load setupFunEval + + + clippath {pathbbox}stopped {0 0 0 0}if newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + currentdict/Extend known + { + /Extend load 0 get + { + 0/Function load FunEval sc + xmin ymin xmin abs ymax ymin sub rectfill + }if + }if + + /Nsteps/Function load/Size get 0 get 1 sub store + /dx 1 Nsteps div store + gsave + /di ymax ymin sub store + /Function load + + 0 1 Nsteps + { + 1 index FunEval sc + 0 ymin dx di rectfill + dx 0 translate + }for + pop + grestore + currentdict/Extend known + { + /Extend load 1 get + { + Nsteps/Function load FunEval sc + 1 ymin xmax 1 sub abs ymax ymin sub rectfill + }if + }if +}bd +/shp +{ + 4 copy + + dup 0 gt{ + 0 exch a1 a0 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a0 a1 arcn + }{ + pop 0 lineto + }ifelse + + fill + + dup 0 gt{ + 0 exch a0 a1 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a1 a0 arcn + }{ + pop 0 lineto + }ifelse + + fill +}bd +/calcmaxs +{ + + xmin dup mul ymin dup mul add sqrt + xmax dup mul ymin dup mul add sqrt + xmin dup mul ymax dup mul add sqrt + xmax dup mul ymax dup mul add sqrt + max max max +}bd +/sh3 +{ + /Coords load aload pop + 5 index 5 index translate + 3 -1 roll 6 -1 roll sub + 3 -1 roll 5 -1 roll sub + 2 copy dup mul exch dup mul add sqrt + /dx xs + 2 copy 0 ne exch 0 ne or + { + + exch atan rotate + }{ + pop pop + }ifelse + + /r2 xs + /r1 xs + /Function load + dup/Size get 0 get 1 sub + /Nsteps xs + setupFunEval + + + + + + dx r2 add r1 lt{ + + 0 + }{ + dx r1 add r2 le + { + 1 + }{ + r1 r2 eq + { + 2 + }{ + 3 + }ifelse + }ifelse + }ifelse + /sh3tp xs + clippath {pathbbox}stopped {0 0 0 0}if + newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + + dx dup mul r2 r1 sub dup mul sub dup 0 gt + { + sqrt r2 r1 sub atan + /a0 exch 180 exch sub store + /a1 a0 neg store + }{ + pop + /a0 0 store + /a1 360 store + }ifelse + currentdict/Extend known + { + /Extend load 0 get r1 0 gt and + { + 0/Function load FunEval sc + + + + + { + { + dx 0 r1 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + r1 0 gt{0 0 r1 0 360 arc fill}if + } + { + + + + + 0 r1 xmin abs r1 add neg r1 shp + } + { + + + r2 r1 gt{ + + 0 r1 + r1 neg r2 r1 sub div dx mul + 0 + shp + }{ + + + + 0 r1 calcmaxs + dup + + r2 add dx mul dx r1 r2 sub sub div + neg + exch 1 index + abs exch sub + shp + }ifelse + } + }sh3tp get exec + }if + }if + + /d0 0 store + /r0 r1 store + /di dx Nsteps div store + /ri r2 r1 sub Nsteps div store + /Function load + 0 1 Nsteps + { + 1 index FunEval sc + d0 di add r0 ri add d0 r0 shp + { + + d0 0 r0 a1 a0 arc + d0 di add 0 r0 ri add a0 a1 arcn + fill + + + d0 0 r0 a0 a1 arc + d0 di add 0 r0 ri add a1 a0 arcn + fill + }pop + + + /d0 d0 di add store + /r0 r0 ri add store + }for + pop + + currentdict/Extend known + { + /Extend load 1 get r2 0 gt and + { + Nsteps/Function load FunEval sc + + + + + { + { + dx 0 r2 0 360 arc fill + } + { + dx 0 r2 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + + + xmax abs r1 add r1 dx r1 shp + } + { + + r2 r1 gt{ + + + + calcmaxs dup + + r1 add dx mul dx r2 r1 sub sub div + exch 1 index + exch sub + dx r2 + shp + }{ + + r1 neg r2 r1 sub div dx mul + 0 + dx + r2 + shp + }ifelse + } + } + sh3tp get exec + }if + }if +}bd +/sh +{ + begin + /ShadingType load dup dup 2 eq exch 3 eq or + { + gsave + newpath + /ColorSpace load scs + currentdict/BBox known + { + /BBox load aload pop + 2 index sub + 3 index + 3 -1 roll exch sub + exch rectclip + }if + 2 eq + {sh2}{sh3}ifelse + grestore + }{ + + pop + (DEBUG: shading type unimplemented\n)print flush + }ifelse + end +}bd +{restore}if not dup{save exch}if + L3?{ + /sh/shfill ld + /csq/clipsave ld + /csQ/cliprestore ld + }if +{restore}if +end +setpacking +%%EndFile +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%PageBoundingBox: 0 0 398 418 +%%BeginPageSetup +cg_md begin +bp +sdmtx +%RBIBeginFontSubset: LucidaGrande +%!FontType1-1.0: LucidaGrande 1.0000.6.0040 + /FontInfo 1 dict dup begin + /FSType 6 def + end readonly def + 14 dict begin/FontName /LucidaGrande def + /PaintType 0 def + /Encoding 256 array 0 1 255{1 index exch/.notdef put}for + dup 33 /C put + dup 34 /one put + dup 35 /two put + dup 36 /three put + dup 37 /four put + dup 38 /five put + dup 39 /six put + dup 40 /N put + dup 41 /e put + dup 42 /w put + dup 43 /space put + dup 44 /B put + dup 45 /o put + dup 46 /x put + dup 47 /s put + dup 48 /O put + dup 49 /l put + dup 50 /d put + dup 51 /parenleft put + dup 52 /numbersign put + dup 53 /parenright put + readonly def + 42/FontType resourcestatus{pop pop false}{true}ifelse + %APLsfntBegin + {currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if + /FontType 42 def + /FontMatrix matrix def + /FontBBox[2048 -2186 1 index div -1509 2 index div 3361 3 index div 2381 5 -1 roll div]cvx def + /sfnts [< + 74727565000900000000000063767420000000000000009C000006B66670676D000000000000075400000D33676C79660000000000001488000016A8686561640000000000002B3000000036686865610000000000002B6800000024686D74780000000000002B8C000000586C6F63610000000000002BE40000002E6D6178700000000000002C1400000020707265700000000000002C3400000CAF062B0019000005C80025000005C800250000000000000000000000000000043E001800000000FFDB00000000FFE800000000FFDB0000FE75FFE8000000000000FED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000080000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5006F000CFF3BFF91FFF400BF00680014FF41FF98FFEC00000000000000000000000000000000000000000082FF7E00DF00D200C900B400AD009B00DE00D200C500BE00B900AB00E300D200C600B900AD00950062000000A4009D0085000000AA00A10094007200AD00A100940085000000C5000000000000000000000000000000000000012800000000000000000000000000F700F700970141004A00F7000000000000000000000000000000000094009400940000000000000000000000000000000000000000000000000000000000000000000000000000000000E6FF1A00000000000000000000000000000000000000DEFF22007C007C027502E400750075009A009400AC00A0000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A0001900000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B00000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B0000006F0073000000000000000000B9008C010A007E00C50031004F009A004200000000000000000000000000000000000000000000012800F700A00063009400820082009700C600B300B3007C007B009100000000000000000000000006440000000004A00019000000000800043E0018000004000000000000000534000000000000FFE70000FF780000000000C500940000FED80000000000E100760063003C002D001E000FFF1FFF3BFF48FF65FF79FF9DFFBD00DE00B900AD00A600DE00D200C500BF00B900A900910197007C0062005C005602CC01ED0197007C006F00620056004A011D010D009E00940035000000000000000000000000000005C8002500000503 + 00000000000008000000000000000400000000000000047B000000000000FFDB00000000FFE70000000000000000FF3B00000000000000000192011700F700C800C300B800AD00A6009C0092008A0080007B00740068005A0050001E003A00000192011700F700E500D200C500B900AD008A0080007B00740068005E0054004A000000000141003E00DE00DE00000000000000000000000005D500190000056600000000000008000000000000000400000000000000043E001800C503C200DE00000000FFE70000000000000000FE00000000000000000000CD00C500AD00A100940088007C0075006F0063003100F700C600B900A0006300C500B300A10088007C0075006F00630056003100F700C600B900C600940082006F0063003E003200190000FF3AFF7EFF9DFFCE0057006F02B3012801830088008800000000000000000000000000000000000000AC008800C501ED006201BC001800DE013E000000000000000000000000000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190000000000000000000000000000007C00AC00C500960000000000000000000000000085005D006500000000000000000000000000000000000000000000000000000000080000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000005ED01B0009400D200B600AC007B007B007C00000000000000000000000000000000000000B904A000C50063007A005100410087014100DE01280068009D0064007500D2012000DE00D100B40000000000000000000000000000000000000000006100AC00D0006F006F036603660000000000000000000000000000000000000000000000000000004A004A004A000000000000000000000000000000000000000005ED00000000000008000104005C000004000000000000000000000000000000FFDB000000000000000000000000000000000000000000000000003E050300D8011200AD009300D800F700AD00B700790067050300D800920000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190082006E002A002A002A002A000040405249483C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002C0118B0184358456AB0194360B00C2344231020B00C4EF04D2FB000121B21231120332F592D2C0118B0184358B0052BB000134BB0145058B100403859B0062B1B21231120332F592D2C0118B01843584EB0032510F221B000124D1B2045B00425B00425234A6164B028 + 5258212310D61BB0032510F221B0001259592D2CB01A435821211BB00225B0022549B00325B003254A612064B01050582121211BB00325B0032549B0005058B0005058B8FFE238211BB0003821591BB0005258B01E38211BB0003821595959592D2C0118B0184358B0052BB000134BB0145058B90000FFC03859B0062B1B21231120332F592D2C4E018A10B10C194344B00014B1000CE2B00015B90000FFF03800B0003CB0282BB0022510B0003C2D2C0118B0002FB00114F2B00113B001154DB000122D2C0118B0184358B0052BB00013B90000FFE038B0062B1B21231120332F592D2C0118B018435845646A23456469B01943646060B00C2344231020B00CF02FB000121B2121208A208A525811331B212159592D2C014BB0C85158B10B0A432343650A592D2C004BB0C8515800B10A0B4323430B592D2C00B00C2370B1010C3E01B00C2370B1020C453AB10200080D2D2CB0122BB0022545B00225456AB0408B60B0022523442121212D2CB0132BB0022545B00225456AB8FFC08C60B0022523442121212D2CB000B0122B2121212D2CB000B0132B2121212D2C014BB0C85158B00643B00743650A592D2C2069B04061B0008B20B12CC08A8CB8100062602B0C642364615C58B00361592D2CB1000325456854B01C4B505A58B0032545B0032545606820B004252344B0042523441BB00325204568208A2344B00325456860B003252344592D2CB00325204568208A2344B003254564686560B00425B0016023442D2CB00943588721C01BB01243588745B0112BB00D2344B00D7AE41B038A45186920B00D23448A8A8720B0A05158B0112BB00D2344B00D7AE41B21B00D7AE4595959182D2C208A4523456860442D2C456A422D2C01182F2D2C0118B0184358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB0194360B00C2344218A10B00CF6211B21212121592D2C01B0184358B0022545B002254564606AB00325456A6120B00425456A208A8B65B0042523448CB00325234421211B20456A4420456A44592D2C012045B00055B018435A584568234569B0408B6120B080626A208A236120B003258B65B0042523448CB00325234421211B2121B0192B592D2C018A8A45642345646164422D2CB00425B00425B0192BB0184358B00425B00425B00325B01B2B01B0022543B04054B0022543B000545A58B003252045B040614459B0022543B00054B0022543B040545A58B004252045B04060445959212121212D2CB0032520B0072587052E23208AB00425B00725B0142B1021C4212D2CC02D2C4B525845441B2121592D2CB00243583DED181BED592D2C4B505845441B2121592D2C01184B52588A2FED1B212121592D2C4B53234B515A58B003254568B003254568B003256054582121211BB00225456860B003252344 + 2121591B212121592D2CB00243583DCD181BCD592D2C462346608A8A462320468A608A61B8FF8062232010238AB10C0C8A70456020B0005058B00161B8FFBA8B1BB0468C59B0106068013A2D2C2045B0032546524BB013515B58B0022546206861B00325B003253F2321381B2111592D2C2045B00325465058B0022546206861B00325B003253F2321381B2111592D2C004BB0C8515800B00743B006430B592D2C8A10EC2D2CB00C4358211B2046B0005258B8FFF0381BB0103859592D2C20B0005558B8100063B003254564B00325456461B0005358B0021BB04061B00359254569535845441B2121591B21B0022545B00225456164B028515845441B212159592D2C21210C6423648BB84000622D2C21B08051580C6423648BB82000621BB200402F2B59B002602D2C21B0C051580C6423648BB81555621BB200802F2B59B002602D2C0C6423648BB84000626023212D2C184B5358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB00C2344218A10B00CF6211B218A11231220392F592D2CB00225B002254964B0C05458B8FFF838B008381B2121592D2CB0134358031B02592D2CB0134358021B03592D2CB00A2B2310203CB0172B2D2CB00225B8FFF038B0282B8A102320D023B0102BB0054358C01B3C59201011B00012012D2C4B53234B515A58381B2121592D2C01B0022510D023C901B00113B0001410B0013CB001162D2C01B00013B001B0032549B0031738B001132D2C4B53234B515A5820458A60441B2121592D2C184B5358B00425B004254964B00325B00325496468B0408B6120B080626AB00225B00225618CB00C234421B004251023B00CF61BB00425B0042511122320392F59CC21212D2C0118B0184358B0052546234564611B21B00425B004254A59B00E23442310B00EEC2310B00EEC2D2CB01B435820B0016045B000515820B0016020452068B0005558B0206044211B212121591B20B0016020452068B0005558B8FFE06044B01C4B50582045B02060441B21591B21212159591B21592D2C4B53234B515A58381B2121592D2C4B5458381B2121592D2C4B52587D1B7A592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B00326 + 5358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592DB8005D2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8005E2C2020456944B001602DB8005F2CB8005E2A212DB800602C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800612C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800622C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800632C2020456944B001602020457D691844B001602DB800642CB800632A2DB800652C4B20B003265358B0801BB040598A8A20B003265358B0022621B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B80003265358B0032545B8014050582321B8014023211BB003254523212321591B2159442DB800662C4B535845441B2121592DB800672C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800682C2020456944B001602DB800692CB800682A212DB8006A2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8006B2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8006C2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8006D2C2020456944B001602020457D691844B001602DB8006E2CB8006D2A2DB8006F2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800702C4B535845441B2121592DB800712C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800722C2020456944B001602DB800732CB800722A212DB800742C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800752C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800762C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800772C2020456944B001602020457D6918 + 44B001602DB800782CB800772A2DB800792C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8007A2C4B535845441B2121592D0000020100000005000500000300070014B706020400060204002FCDD4CD002FCDD4CD3130211121112521112101000400FC400380FC800500FB004004800000000002000F0000050005C8001B001F00F04098E80401E81D01E71201B71F010C1E1D19180D180F121316170E1707171717026717A7170248189818B818F818040D1818E1170E1417170E0B1F1C1A1B0A1B080504010009009800F80002981B01071B171B271B03471B671BA71B030A1B1BE10009140000090C0F121E0406E2070D09031316191D0403E240021800170E1410090000100002090006020F105F10020D0321106A02200267022B2B015F5E5D1810C6D65E5DC410C4D6C4002F33D61A4DED17393F33D6ED173931308705102B7D10C4015D715D5D1087C4C4C4C41087C4C4C4C48718102B7D10C4015D5D711087C4C4C4C41087C4C4C4C4015D5D5D5D3313213721132137211333032113330321072103210721032313210313211321CB6FFED519013157FEBC190149707F6F01076F806F012B18FECE57014419FEB76F806FFEF96F8E010757FEF801BC7C01597B01BCFE4401BCFE447BFEA77CFE4401BCFE44023801590001007BFED80250062B000D00C54094040D140D440D540D04420252020204021402020409140944095409044206520602040614060209650901590889089908C908D9080508100C0F48690D01160D260D560DC60DD60DF60D060600360086009600D600050C890C01890A01C70C01060201B80201A50B018802C802020606010F036F069F06AF060300098009A009031106009C0120089C070008000B8504400E0466022B011A18104DEDC432003FED3FED3130015F5E5D5D5F5E5D5D5D5D5D5D5D5D005E5D5D5D2B5D5D015E5D5D5D5D5D5D05152602111012371506021110120250D8FDFDD8937D7DA0889301F9011E011D01F99388A0FE90FEEFFEEEFE900001004AFED8021F062B000D0065B800532BBA0004000B00562BB8000410410500DA000B00EA000B00025D411B0009000B0019000B0029000B0039000B0049000B0059000B0069000B0079000B0089000B0099000B00A9000B00B9000B00C9000B000D5DB8000FDC00B800072FB800012F303117153612111002271516121110024AD8FDFDD8937D7DA0889301F9011E011D01F99388A0FE90FEEFFEEEFE9000000101340000044A05ED00090058403089049904B904C9040404100B114803040152049B050614050605060707019B00 + 08A8078B0401A8200201000210020202B8FFC0B613184802020B0A1112392F2B5D71ED32FDED002FED323FDD3130872B2B10C4002B712135211105352511211501340128FED801EE01289404904A987BFAA79400000100AA0000042205ED001900DD409E370F010A121A1202FA1201F80D01F71001C810018A13BA13DA13EA1304270A01F80A010A081316487807013B084B08020820171A4808132813022C08010C151C150236024602020A02010816181602D816E816020A0501CA05FA05028605014710015710010C9B0F0B1F0B020B0B099B11060E070117990018068A111789400B000F111F11020F11CF11DF11EF11040D031B11D5020F000119031A007B022B015F5E5D2B015F5E5D711810C41A4DED10EDC4002FED323F3939FDD65E5DED3130015D715D5D715D717171715D005D2B5D5D2B5D715D5D5D5D5D717133353625373635342623220735363332161514060F0106072115AA56010671DA95829AD1C5C2D0FC7FAD4CED250283ADC9ED65C5C27C8E77AE5DE0B985CE9341C9B7AD0000000100D0FFDB042F05ED001E0115401E250C01761201391E491E591E03071B01E717010910391002E910F9100202B8FFF8401A171B48A818B818026A0E7A0E8A0E0345055505650503B9190119B8FFD0400A0C114804151415020915B8FFE040811215486A07011C0E2C0E5C0E6C0E040C041C042C04030C075C076C0703380D480D02F80D011C08151848A91401031F064F065F06030F06CF06020B0618089C0B40141D0B9C3030129B110F9B1407009B30010101039B1D192F187F188F18030D8B1640151848161109068A09111618044F1A011A000010000260007000900003002F5D71D45D1739ED2F2F2F2BED5D003FFDD65DED3FFDD6ED2B001A18104DED393130015F5E5D715F5D2B5D715D5D5D005D2B5E5D2B5D5D5D5D2B5D715D7171715D37351633323635102123353720113421220735363320111005041114042322D0D47A8DB1FE4B4E45019AFEF294B2AFA501C6FECB0166FEECF1890BB854A583013885010121E353AC3BFEA9FEFB6F53FECBD1EE0000000200690000048205C8000A000D007F40542A0DFA0D020D1812164807036703028703E703020803014A0B01070B270B370B03070B370B02A604010D0B01520B8E03041403030409060C9A9001010101000406000C8C04018C08060009500902090F100301032F5D10D65D32CDED32ED002F3F12392F5DED393931308705102B042B10C4015D5D7171005D5D712B5D21112135013311331523110121110303FD66029AB9C6C6FD6E01E601A3950390FC7CA1FE5D02440292000100F9FFDB041C05C8001600E54039030501670501370247025702032908690802171001B710013813019713010E078E07020B09141914020806180602B514C51402791489140213B8FFE8 + 40560C0F482611361102061116112611030C0A089B0F0F030E990B06009B01400D114801039B15190E8D0B0C0C0B01068A12405012010F121F126F12030F128F12CF12DF12EF12050D031812D50200017001800103120301B8FFC0B31D224801B8FFC0B60C10481701D4022B012B2B5F5E5D2B015F5E5D71711A18104DED1239392F2FED003FFDD62BED3FED12392FFDC63130015E5D712B5D5D71005D5E5D5D715D717171715D1735163332363510212207112115211120001514042122F9938592A7FE35343902EDFDC0011D0140FEDDFEFE7006B03BAC97014D0702D0ACFE7AFEFAE8D8F5000000020089FFDB047C05EE0014002000EC403909121912291203F72001EB17FB1702F10A015A076A0702480901380948095809980904CA1C01361CB61C02260101270D770D870D0304030103B8FFE0401B0C0F480A141A145A146A140409690C015700010407140794070304B8FFE8404D0C0F48060616062606038C1D01161D01090A010C0008189B300240020202020E08109B0F11010D11139B0E071E9B081910400E114810100B158B051B008A0B40000501110322057C02210B7B022B2B015F5E5D1A18104DFDC510ED12392F2B003FED3FFDD65E5DED1112392F5DED12393130015E5D5D5D5D2B5D5D5D005E5D2B5D5D5D5D5D5D715D5D5D5D7101363332121514002322001110002132171526232001342623220615141633323601608DD6C2F7FEEBD5F5FEEC013D012084C6D185FE86025697867DB4AB8D7F9702FFB7FEFFC9E7FED6018A015E018101AA38AC50FC66A8C0A876BAE1B70000000300BF0000044505C8000C0016001E00FD4032E60801491401E91401091C391C491C591C04491C591CA91CF91C046D1C7D1C8D1C03351A451A027D138D13021330010D4811B8FFD0402C0E11483906019906010C0A9C0AAC0A03B604C6040203041304230403090C1C4C1C020C104C10020D9703010AB8FFF840511A1D480C0B011103400B500B020F131F1302140507169317400100179330301E9201030D92003A074A078A0703070D1B7E05127D090F091F09029F0901170D7E00400F094F0902090320096F021F006B022B2B015F5E5D1A18104DED325D7110EDD4ED12395D002FED3FED2B001A18104DED393130015F5E5D5D5F5E5D2B5D5E5D5D005E5D5D5D5D712B2B5D5D5D5D715D715D3311213216151005041114062327333237363534262B013533323635342123BF0180DEEDFED0016BF0E2E42BE74482ECB13B43A8B9FEAE5205C8A89EFEF3726FFEDEB4BE9D1D379584AF859083DA00000000010068FFDB051705ED001500DB4039E71001091501E91501050C01090C01E90C01D70701280A380A02780A880A02250F01050F450FA50FC50FE50F05390D01090D490DC90D030908B8FFF040450D11480605460556056605047804 + E804024604014A025A026A0203B7010109010109014901C90103270D01B80401B505E5050208920F091F092F09030A090B920604149113B8FFC0401B090C48131191001309130F13010F030E7D034017136F0216036C022B2B011A18104DED5F5E5D10C6003FFDD62BED3FFDD65E5DED3130015D5D71005D715D5D5D5D5D2B5E5D715D715D715D5D71715D715D052000111000213205152423220011100033323715060339FEA7FE88017F015CC7010BFED0A5F1FEF8011AF4D2F0DB25019501730172019841C569FEBAFED7FEE5FEB981B47100000100BF0000052A05C80009006E401E460301031F03010002300202102007010F070107080D1048000201120602B8FFF840240C0F480301520807087F0203140203020300070208038006088000400B066E020A006B022B2B011A18104DED10ED113939002F3F3130872B872BC4012B5F5E5D2B5D5D005E5D5D5F5D33113301113311230111BFCE02E9B4CDFD1605C8FB890477FA380477FB89000000020068FFDB05D005ED000B0017010840C6240C012B12018602F60202F60A01C90A01180401F80401270401C70401190801F90801260801C6080136160106164616E616033A14010A144A14EA14034910E91002460EE60E02170B470B02C70B01290B01190B590B690B790BD90B05480701C807011607011607560766077607D60705480501C805011605011605560566057605D605051701012901011901590169017901D901050C0D010317010313010C110109032F0F012015010008011A06129206040C9200130F7D09157D034019096F0218036C022B2B011A18104DED10ED003FED3FED3130015F5E5D5D5D5F5E5D5D5D5D005D71715D715D715D715D715D715D715D5D5D715D715D715D715D715D715D5D5D71710520001110002120001110002532121110022322021110120313FECCFE890179013B013A017AFE86FEC0E3F8F9DCDDF8F62501AB015F016101A7FE5AFEA0FE99FE5B9D0147012A01210146FEB9FEDDFEDEFEB4000002006FFFE70444062B000E001700FD4079390201051601E51601F91301D90F01D40F010A071A07028A07DA0702BB0BCB0B02A40BB40B02CA10FA1002B510C51002BB01019201B201026617010A173A17020B6B048B049B040304200D1048090801B908E908F90803160826083608B608040414010B12010B12AB12BB12EB12040C8C0AAC0A02A60A010AB8FFF0403E0C0F48930801037F16016F027F02FF02030F051F052F057F05DF05050D050C000F0B11970910001701159503160F0B00850E13840640190E6802180666022B2B011A18104DED10ED3232003FED32322F3FED32323F3130015F5E5D5D5D5F5D002B5D5D5E5D715D5D5D712B5D5E5D715D5D5D5D5D5D5D715D5D5D5D71712135062322023510123332171133110326232011103332 + 37037E78F2C4E1FFD0C17FC6C69989FEE5FCA49DCCE5011EF8010F014A940269F9D5033B87FE4FFE83B300000002006FFFE703E604570011001600EA405737100101101B1F482404340402C404E40402050335034503550304A503F5030259036903023A0601CA06EA06025506F50602450701450755076507031316231602D316F316023A1601120E220E320EB20EC20EE20E060EB8FFD0400A1A1E480509850902090DB8FFE040441A1F480C14012C145C14EC14FC140403740A012F0A01400450046004030F04010E0512970D0D02159708100097110F970216120D1385110B0D850540180B6902170566022B2B011A18104DED10C6ED1139003FFDD6ED3FED11392FED3130015F5E5D5D5D5D5F5D712B005E5D2B5D5D5D715D715D5D715D5D715D712B71250623220035340033321211072112213237012110232203E1C68DF0FED1010BD0C5D701FD532B01507BB3FD6001DFE2E3233C013FFEF7013CFEE8FEFE3DFE7D4201D5012F00000100C50000018A062B0003001B400D010000038500400405008530302B011A18104DED002F3F313033113311C5C5062BF9D5000002006FFFE7047B0456000B001300D040981A0E2A0E021813281302070C01270701170527050218012801021801280102280B880B0208109810020C0D0A1D0A020D0A1D0A2D0A03020812080202081208220803020412042204030D5502010D021D02020E0A0B010A07010505010501010C0D010313010311010C0F011603100A200A0210082008021F042F04020012011706109706100C9700160E84091284034015096902140366022B2B011A18104DED10ED003FED3FED3130015F5E5D5D5D5D5F5E5D5D5D5D5D5D5D5D005E5D5D5E5D5D715D715E5D5D5D715D5D5D71710522001110003332001110002720111021201110026EE9FEEA0117EFEF0117FEE8F20139FECBFECC190135010301060131FECFFEFCFEF6FED09401A601A1FE5DFE5C00000001009DFFE7037704560020010140867C0B8C0B02660401281701E61B01F81B01371957199719034A0A011A0A6A0A7A0A8A0AFA0A054C0C5C0C7C0C032C0C7C0C8C0C030A201A2002331C01031C131C231C631C931C05050F150F0209590401A80C01A90EC90ED90E0320281D2048C90B01B620019920010C0CBC0C020A13970014101420140312141697080D181E04001010029703B8FFC040350B1148030597001618860D14400F144814140D0208851E404F1E011E401A2248000240029002A002B002051403221E6802210265022B2B015F5E5D2B5D1A18104DED1239392F2B2FED003FFDD62BED3F121739FDD65E5DED3130015E5D5D5D5D2B5D5D00715E5D5D715D5D715D715D5D5D71715D052227351633323635342F012635343633321F011526232215141F011E0115140601E587C1C18F55709D73FFC9 + AF5B8629A561BE905FA186E2193FB5605C456542316AC78EA31908A4318A593D284497718FB800000001000C0000061C043E000C018C404A7A0B8A0B02340BF40B02F506010B061B063B06031403010B031B033B0303080101F80101E60101E807012808019808E8080207080177088708F70803280501170501D705E705F7050305B8FFF840DA0C104838045804F8040337020127029702A702C70204170A01090A190A390A590A890AD90AE90AF90A08060C160C360C560C04090019003900E900F90005A8090107092709021709370947095709B709C709E7090707090809880607140606070A050605870B0A140B0B0A040C0B0C880304140303040002030287010014010002040507080B06010F0C0A0903060500130C003F0301100301030120090A1F062F06020640242A4806401E214806074008012008400870088008A008C008065008C00802080504200B700B800BA00B04500B010B0B02700101012F5D3333192F5D713333C45D71723218CD2B2B7132321A1910CD5D71323200183F17333F173387052B877DC48718102B877DC48718102B877DC48718102B877DC43130015D715D5D5D5D715D715D2B5D71715D715D715D5D5D71005D715D5D5D5D210133130133130133012303010143FEC9C1EE0101C5E10111A9FE9EC6E6FEFC043EFCB70349FCB70349FBC20349FCB70000000100580000048B043E000B00FB408FB907E907027A04EA0402B703019506B50602950501B7010178019801026A09BA0902B608016A08AA08026704A704B70403670B010607160746077607A607D607060A0707080A0A090B060B04040301010200050501520B060B880005140000050A0A0B010100020902070706040405030803015209020987080314080803020F00090308020B050006080200081000B8FFF0401200080116030D0869020000010A030C0066022B015F5E5D2B015F5E5D38381810C610C611393911123939002F3F31308705104D2B872BC48708C008C0108708C008C0870518102B872BC48708C008C0108708C008C0015E5D5D5D5D5D5D5D5D5D5D5D005D5D33090133090133090123090158019DFE6FEA013D011FC0FE880199EAFEB9FEC40231020DFE5E01A2FDD9FDE901AEFE5200000000010000000601060F596BAF5F0F3CF5011B080000000000B47FC3BC00000000C005BDE3F776FA1B0D21094D0000000900010000000000000001000007BCFE5000000D1EF776F7430D210001000000000000000000000000000000160600010002880000050F000F029A007B029A004A050F0134050F00AA050F00D0050F0069050F00F9050F0089049A00BF0589006805E900BF063700680509006F0475006F025000C504EA006F0414009D062A000C04E8005800000020002000D4015401A401E6027E033A0396043004DE058E0626 + 0674072A07D20872088C091E09D00AB60B5400000001000000160077000F004F0007000100100030007B000005E00D3300030001B800712BB800672BB8005D2BB800532B410E00000246001002460002007F02440001023F023C0001002B023E023CB2012BEFBB023D0001023D023CB2141F00BD023C0010023C000201870188B21A1F40B80189B310163900410E0188001001880002018301850002002B018401850002002B01860185B2022B80BB017F000100DF017C406601DFE016171CD4D516171C7B7C161B0F7B1F7B2F7B037B7C19D1D216171C767716171C6D7016171C6C6F16171C6B6E161B5F6E7F6B026B6E7F721A747514151C676A14151C666914151C6568141B8F65A065D06503656885711A1973167A4319217943192102B90352034AB2022B10BD034600500346000200400339B20B0E39B9FFC00338B20E0E39B9FFC00338B3090C3950410B032D0001033003310003002B02F402F30008002B02E3B2BE022BB802DCB3BE641F40B802DBB3313A3940B802DBB2232739B9FFC002DBB2141439B9FFC002D9B2333939B9FFC002D9B22A2E39B9FFC002D9B2212339B9FFC002D9B2171939B9FFC002D9B20E1139B9FFC002D0B2111139B902800278B2022B10412B02740050027400020010025D0050025D0002000B024C001B024C006B024C0003000B024B001B024B0002023A02040016001F023802040012001F023202310002002B023002310002002B022F0231001E001F022E0231B21E1F20B80231B2121639B901F701E3B2032B0A412001F4000101EF01EE0002002B01ED01EE0002002B01EC01EE0002002B01EB01EE0002002B01E801E70003002B01E601E70004002B01E501E70002002BFFCA01E3B30B1139B9411D01E70001007601E7008601E70002019401920002002B019301920002002B019201900006002B019101900007002B018F01900002002B018E0190B2022BBFBF01900001007001900080019000020157B292042BB80153B291042BB8014FB297042BB80136B37F032B40B80139B21218394109012401250003002B011001110003002B0104403BFC022B10F850F80240E61A1A399A9B032B9C9B042B9B970A2B9392042B9192062B9297042B9597042B9897022B9697032BA097019F97AF97BF9703BC034803490004002B0349B285022BB9FFC00343B31011391FBE0344000100E00344000103350334B2032B20411203330030033300400333005003330004033303140003002B033203140003002B032F0314B2032B2FBF03140001000002F3002002F3000202F0B2BD062BB802E2B2BF082BB9FFC002E1B2172839B9FFC002E1B20E1139B802E0B2870A2BB802DFB3BF042B40B802D7B323253940B802D7B2151639B9FFC002D2B2101139410D02C602C50006002B02C202C00006002B02C102C00006 + 002B028CB285022BBC027602770004002B0277B285022BB9FFC00271B31011391FBE0272000100E00272000100400260B2151639B9FFC00260B20A0B39B9FFC0025FB2171839B9FFC0025EB2242939B9FFC0025AB31011391F4114025B000100E0025B0001000F024A0001001602490026024900020009022D0019022D0002FFC0022BB2111539B9FFC00229B30D113920B80223B2121639BD022202200002002B02210220B2042BC9411402200001021E02200003002B021F02200002002B01F601CF0003002B01E001B50020002101DF01B5B2262120B801DFB21E2139411A01DD01DC0002002B01DB01DC0002002B01DA01DC0002002B01D901DC0002002B01D801D70003002B01D701D60002002B01D601D4B2022BB0BF01D6000101D501D40002002B01D301D4B2022B69410B01D2000100B901D2000101D201D40002002B01D101D4B2022B20B801D0B2090C39B9FFCA01CFB30B11392BBF01A300A401A300B401A30003FFE001A6B2131539410D018D018C0003002B018B018C0003002B018A018C0002002B0156B286022BB80155B280032BB80154B286052BB80152B287052BB80151B288052BB80150B288032BB8014EB285032BB8014CB285022BB80138B287022BB80131B2BF032BB80122B285022BB8010E400B85022BFAFB042BFB85022BB8FFC0400AF51011391FF601E0F601B8FFC04009B1151C3940E51A1A39B8FFC0402EAF0D0F3900B40140B450B460B470B480B4C0B4D0B4E0B4F0B409B4AF641FE8E7042B898A072B8A8B062B8C8B062BB8FFC0B78E3032398E8D032BB8FFC040148D1E23398D8B022B8B85082B8281042B8180032BB8FFC0B3804A4D39B8FFC0B3803F4339B8FFC0B380343939B8FFC0B380282E39B8FFC0400C801D2339807E022B7F7E062BB8FFC0400C7D4549397D7E062B7E85082BB8FFC04020881E23398887022B8785082B8685062B83840A2B8485062B7085808502BF8501410A03530354000E03500351000E034E034F000E034EB203641F4155034C034D000F031B031C031D000C030F03100311000C030C030D030E000C0327030D0329000D0321031C0323000D031E03100320000D0327003C0321003C031E003C031B003C030F003C030C003C02AD02AE02AF000C02A102A202A3000C029E029F02A0000C02B9029F02BB000D02B302AE02B5000D02B002A202B2000D02B9003C02B3003C02B0003C02AD003C02A1003C029E003C02810282000E027E027F000E027C027D000E027CB203641F4175027A027B000F021002110212000C020D020E020F000C020102020203000C01FE01FF0200000C000B0211009B02110002000F021000500210009F021000BF021000DF02100005001F020D003F020D007F020D0003001F01FE0001021901FF021B000D0213020E0215000D0219003C0213003C02 + 10003C020D003C0206003C0201003C01FE003C01BD01BE01BF000C01B101B201B3000C01AE01AF01B0000C01C901AF01CB000D01C301BE01C5000D01C001B201C2000D01C9003C01C3003C01C0003C01BD003C01B1003C01AE003C016D016E016F000C016101620163000C015E015F0160000C01610166B2171F1F41420166003F0166007F016600030179015F017B000D0173016E0175000D017001620172000D0179003C0173003C0170003C016D003C0166003C0161003C015E003C012C012D000F01260127000F01280129000E012A012B000E01180119000F01120113000F01140115000E01160117000E01050106000E01020103000E01000101000E010040A803641FFEFF0F1B37151836151535151234150F33150C3215093115063015032F15002E1526270E28270F2A2B0E2C2B0F22230E24230F1E1F0E201F0F0F10110C090A0B0C0607080C0304050C0001020C000340131A230003131F06031C1F1F0F3F0F7F0F032003011F034F03BF03FF03041B011D0D18071A0D1510170D1204140D901B012C3C2A3C283C263C243C223C203C1E3C1B3C183C153C123C0F3C093C063C033C003C503301B0124B004B5442B013014B004B5342B0332B4BB8032052B0322B4BB009505B58B101018E59B0332BB00288B8010054B00488B8020054B012435A5B58B80119B101018E851BB900010100B04B60858D59B1020042B00188B0235358B00188B0405158B02088B810005458B1020142595959B0374B5058B1020042592B1DB0644B5358B0801D59B0324B5358B0901D59004BB03A51B01B23422B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B7374732B2B2B2B2B2B2B2B2B2B2B2B2B2BB1282645B02A4561B02C4560442B2B2B2B2B2B2B2B2B2B2B2B002B2B2BB8010045B0FE4561B8010223442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2BB8027C45B8027A4561B8027E23442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2BB8034E45B8034C4561B8035023442B2B7473012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73742B2B2B0173742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B74752B2B732B2B2B2B2B2B2B2B2B2B2B2B2B752B2B2B2B2B73737473742B2B2B2B2B73742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73732B2B2B732B73742B2B2B0073742B2B2B2B2B2B2B2B2B2B00732B2B2B2B2B2B2B2B73742B2B2B2B2B2B73742B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B732B0143581B592B2BB018B0234B53422B2B732B2B2B2B2B732B2B2B2B2B2B732B2B2B01B8017C20456A44B8017D2045 + 6A44B8017E20456A44B8017F20456A44B8018020456A44B8018120456A44B8018220456A44B8018320456A44B8018420456A44B8018520456A44B8018620456A44B8018720456A44B8018820456A44B8018920456A4473732B2B2B732B2BB8023B20456A44B8023C20456A44B8023D20456A44B8023E20456A44B8023F20456A44B8024020456A44B8024120456A44B8024220456A44B8024320456A44B8024420456A44B8024520456A44B8024620456A44B8024720456A44732B732B2B7373B109322B4BB05052424BB008524BB008505BB01A23424BB0C8524BB036505BB00C234200 + 00>] def + /CharStrings 22 dict dup begin + /.notdef 0 def +/space 1 def +/numbersign 2 def +/parenleft 3 def +/parenright 4 def +/one 5 def +/two 6 def +/three 7 def +/four 8 def +/five 9 def +/six 10 def +/B 11 def +/C 12 def +/N 13 def +/O 14 def +/d 15 def +/e 16 def +/l 17 def +/o 18 def +/s 19 def +/w 20 def +/x 21 def + end readonly def + currentdict dup/FontName get exch definefont pop end + %APLsfntEnd + 42/FontType resourcestatus{pop pop true}{false}ifelse + {currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if + /FontInfo 1 dict dup begin + /FSType 6 def + end readonly def + /FontType 1 def + /FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def + /FontBBox{-2186 -1509 3361 2381}def + /UniqueID 4093103 def + currentdict currentfile eexec + 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C92608F4984E4A5769B1336AE461E05CD208550769783E471D7C20DE95AF8A53A6D2A584B1F0B72EBEEFCE0D6604DA481FF8754E42B9FE7D86959959E67CA71EBACF2EE41851959E19C2DE356C7CC411AC6ED14170C40445D0B66687F2477026A486551682ACA365E18D7AF4BF86A3759898F0219785110B46AD447B7F1A5EDFCD5CA9B55BF64EC9BAF7C6315F3A522CA295CFDFF82C73A1205760CB2712D0864A092471CD4EE4445B4AD02EB3A21602B62547229C369DBDCF134B90969B035B031AB6CFA82EDDFE8E96E6C516C0A6985CF84221A1C55DE6B6B4CADEFC9A7AAB91424F11F826189B4BDEC732767AFC6D73C304DD5BA60DE55E39484E4B55926F34A1581A80515D520B5F76760D998A2F885772DCBB04DE7C51B30A07962F553BD33FD86977994D5345A40F9033C051DAD7731478B4A9AEB4BC016BA54EA30667642E2CF6D6411E0552C99F687C0651D78EABE11F9E65C44069E517BCE9CC1B5AF8E94F2177E885F91A0B5D34054D0FFFAAEC5FDBC9211304C457CBCE75EB3059EF88C285D04762DB71CFCDC0C2C0A13BB7B69DCD42B71ECAFE301F40AE0441BB50ED4BEFDC1817B2E58FC13CBC2DBF1535EDD4D5B6E722F66E5FCB3662C8201262653BB509164C36985E03B952FF1AE18811F5F3F08E38303389ADF66F5713975C0D8840E5BB4D2B3D05EA02CE680EF5076A1EA3E39E81F20AFA35DDEF32ED8B6B22B6F017F6B7AF8851C61C7E46A312291AB13FCDD1717598661BB9B9F794AFA3D + 0B0BE246A89F8B0EE5C35628CB6E4A436FE9C5503854DDC4C13CF95BB74747DAF62A16884FCCEA083F564B3B45509D357B3802AA2D0AEEAE20CF577129D3376671FC405F347666994829B1B65885C87B9BFC92860213076F6CDBAEB800C94BED993AA2AC28F61E8744A72AD65A9115554386D7A1F9CBE00AEE3A8DCE10221C696AC09E1148F24CC6DEDFFE11D23D97E64FD4E868CBC1DE124811F05B73375214A45FFF6F12C80C80ADA58B350CB87750DAB1D49D109F8237AC961ECFDF0020BB60BDB7591053CAF93E1A6A22934AB6CD8A2335DE3A4E24A7232981E712557BAB434978D722B338ABB8864BAEE545F5B759FE093D39C9B88B703B853C1BC55B8D1F1103BB945C366CBD95E7FD206EDDD10909672D74AD44E2C7B7823809113B1F5509DF4A6FED8B59F0F4E64FA8ED1A76649AC18B23FB9380A028CFB8C6D105D64C2BE71A7B5775197ED2D8ACECC250A6B939FD3C1FB790C70C468D4CD17D0F28E2714A6CF2FD64AD83EA59449B8627B67E1500ABF790016EF848E45FA5C48FE8EB2259CBCE28F412B204AA91DCD356EEB6F49259B9CBEC3081F26DE20A0277CF7775955FD5CEBFB1AE08D59E86BEA5E1AB6DBA4247D72C1696EE8DB264E05FB5A623A39E1E066DC1DDC11E4BC73B3D7881C516DF01DA90251268CC16E597CB7F30100F8EFCA4D7D95A932471D857F78BDCAA6601E19A50933BA0B72C7A080CB9F8CE793D8F345A8C533567AC6CDB11AA0298FFAD5081836220FA0601C9F50C3F22144249C8E8B6E20AC38343B676FFBCAA61473291E480C2CBEC3BA439B8FF9A6B408C3FC1EE3EA5A67CD458DF0667976B89CC2AE644B8A8593BB9C050956C1E9DAB424B796EA181BFAB91AF5FF2436C26FCDBD9F344C85166654CD9EE7D5792C9E63FFCA7FD7FB31C11C12084A7E518D47EDCB08DA0016FEF2F9D24E82EEE405295890F1290F0C9FEC4B1A0D8AF2006396A1115FF6951390753AA09B75C7876C3EF5D6BD88F127B1D66FEF198F0C2AD301CB13E883CEBC41E12C5E3A6431124AABA21CA56FEC94954904166A20D0FC5CC0939D28A5D21F1F91736FE2D748A292B9DB83CBB05EB08A8B824068BE562E84D366616815FA6CFFEAC112E4503E3C6F8624A5A3BFDDA0CFD3CA4D7027B07E0758734ABE6139EE465A6FBD5B0C646DFCECE1965D943F0AF6BB977D9862A49DF29ABC32182F67B373E09212CCDE06F01C723F6AF01755B3D5290DDA4C3DB31CF6144AEA88FB257E8D3F48C45C1B3FA12A7AE1638B274BE24D280F566EA4843BD38910927DCDB61B589E09E77E533E08637375D16C94C3E8F3978D714D19227BBB95FB197C934C1A3251C61096FD3F24A46759735BFCE12B4EA18CD1C7A252F44F68F3266F920115AD4812AD8D04A3342BD2DE50E33F67311C1391F18A364BC93045F743A34150FF14C13F6B68E547F84 + 01A2287099E733DF86AAC2881B95FC35DFBE8BD3F481FB1FE36F08BA14E2D156BDE47C69CF1EC2BD81F0771FA1EE9CAB27D4BF48AD3878C0001F684F0AB7019D005040F2BEAEDCF73F592C10B111722B48669DFCFB9596BD1E334BBE4CF0675E7FB30A8228655EEBD4E075727D8C3AE004C016B8E941208566417B41250DEF2D889224AFC91C31F1E36F1AFF57653E85C52E9965B45BDBCF316E4F802337BEDC7DFB84C056609C0C67A47EA741A9AF30FCB05E4E35935CD17684189F33D81CE5DE59632523BB8F83AD005CA2E207C180B4E9AE6305110EBB485E5B2283A21E68D3E9D37E9DD1D27D59EC749834F56964BD6FA4544A28222E53132AFC884C435AA39318336B064DC7DCA0DF35BEEE05A4E99572C796D8973EBB889D647D2C70DD7CE1F4854B632116C244E2E1CB993E2D35EE167C01A9732C9C866B350A9659E98D700C2262068CECD85688B515423555B87A40DEA1EEAF5CF59242893EA190394BFCBDB3F2EC890619662E767CC63FE5A01C0B9D4C9E742FC647BF35E976A414473F525372D559AF11FBEA78D2CF80E2F44072AD828B5E37DD2C6B69237F75FA0CB69BBB0DC8383DC6878D72179826057F6CAE315360CAD101673E268D8DED26E6C2EB51BC0AAAF5D39A18E77E5C51AC8F17727FEBCE73F19D4777CA6C7CFEEEFDB87BCDF565F86242BF50609E41BE500AB5BA66E3C26EAC6E7B6F34E8F8D695245E690A36653F10151C660618035A7A1A778F7AD106E6C3DDB012CC065E4CD2B0ED170AC82935767F9F8C3AA5A862CC017310895197F3EF9C0DC9A74C6992327AF9673C81942C88B6F95BBB01F2F48F7E8DAA9E110423F603723A8B0260A1D3590038E9C167DAF18A559FBAD5C046A331130A6DDA9DDCCF56B2FF3B52908BEAE63BE70F751A382790FEEE4E52404A1E1442C1F759826D6AF71A61F48F324E3707F624FD81FBFB13E3292AB715C63D9C1C6A1885AAC971FE9FA262804D83DCCF659019A8BB6950F286CD6869603B12D5172273FAC8E6C60A6F69BAFB804F3EEECCEBCD8EF35AE7BDF89C48A275234104AE1CE1258CD945CAB973C25CDFE242536592B06AF4406DC1FAA7AA98EA37C1CEE4A6DEBE405080FF10A975F383C24F2F5D9C5E6C78438059F168E12D48212E6154681F9E0D3FBE9AF8890384FADF4AFA01F2A0E3792F54285691A18FA632514A04835183761E2A6B1244C4DF254DC45FBE1857A98A1AA47DAF2067AECE29C44A39F31B8CBEBA2FB99F4C50DACCE5657F784658049D3CA6893CAD1A71CB5247021EADC158A3A11B64A68418CE257C0ADCE9DC45DC3FFDBF8B4811BF9C6A6CFAB75C56A703064676D4127E900379F721B25905C3A295EE59215405F4F6427758E0532D15496548D89464802EBE437452B04CD0B650DFBF06705346AA73C683457B41CF132E76DA9C940A654A8C317597E5 + 2D7613279F916461C7CE3D24DDC184FEF5DA22D19E5E47538511B93AA3664C7C3F038F9A5C069841ED2392286C1766FBE20ECC037A2370B32E4853707BA2C24FD7CBCE1ACA7916317AD1D6BF5C653F942B253726B6C011AA1B99281596339A8070FF22A0E0ECA97BE415662F0D909ABDAD51E632D4E7310F9B79590378E5A850451199A3C1071FEDFC20253AE93BC5969DBD2DCDF9A17808ADD97260C5F84EC67A685031EA8C894886967FAF3B484A0771CE1351D095466B713C2B61DD24A06F8AD1F9922702C179EB677956E0E9800804B95ABE08D9F48CFABA01B3F2FBCFFB0972955EAE1CDFA30951EC06E682C38AAD2696E45323B567E367 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark end + %APLT1End + %RBIEndFontSubset +/LucidaGrande cguidfix +/F1.1/LucidaGrande renmfont +[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeA { { 1.8008 exp } bind exec} bind +def +/MatrixA [ 0.9642 1.0000 0.8249 ] def +/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def +/DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def +end ] /Cs1 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind +] def +/MatrixABC [ 0.4124 0.2126 0.0193 0.3576 0.7151 0.1192 0.1805 0.0722 0.9508 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs2 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4295 0.2318 0.0204 0.3278 0.6722 0.1111 0.1933 0.0960 0.9578 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs3 exch/ColorSpace dr pop +%%EndPageSetup +/Cs1 SC +1 sc +q +0 0 398 418 rc +0 418 m +398 418 l +398 0 l +0 0 l +h +f +/Cs2 SC +52 0 0 52 204 340 cm +BI +/Width 156 +/Height 156 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkP +JcC<$JcDkPJcC<$JcDkPJcDhOf)>^Lrdk*Qs+13gs6Ta7r;ci^rdk*fs+14's7QBUrUTmKqtL$^r9XCQ +rdk+)s+14-s8N#^rUp*]qptTEqYL*do).kQqu20HhuA9-kl:GWn,<%Zqtos\eG0+@mJ?hZq#'UZq#5jE +kl656o`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU`qtU*^rUp/@s7cPEs7cQmrpTgbr:p0g +qYU*`q"sgYpA=O^o\K-;oE"UVrq5jUrqH3_rqZHfq"ssdo)8ReJcGKEJcG]Kqu60brquZjq"jm`rqQ9_ +qt9jYqt'gXqsiM3rp^!Zr:9jYp%87Vq"O[\rqZ?crqlTjp&4R_Jc>`MLB%/Mo)8RcqtpBhqt^6dqtL*` +qt9s\qt'UQqsaURrp]gRq!RV:$fqtpkPOKBlMg,Km/-5MnG_nUnG_tWoDA1WpAXgcq>:$f +qtp?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[p&=[a +p\sseq>:$fqtU-brhodrs82fmrVl`lqu6Hhq>U-fpAXaaoD\=XnG_kTmJcDMkl0cEjSn09i;VU4h>Z+, +f`'J$e,Iepci2;jcMl)fbPoZ`ao9U0gpAXaa +o`"F\nc&"VmJcGNlMfuGk5OKAiVqd7hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y`;[[R_Z%CK_#(n8 +^&,SA^];7L_Z%IP`W!mVaSs<\b5TWac2Q)hdJhVoec+5#g&Bb*hYuF3iVqsZ1.f`'J$ +eGdhoci25hbPoZ`aSs0X`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfGC]`Gg[rkABHrkSNLrkn`R +rl+lXrlP/_rm(Mhrm:Yormq)$rnIG.qr%J6roF(BrosFJqsO@Nrq$-]rqHZ=2i;Vd9jo4EAl2L#Jmf)\Snc&+Yo`"O_pAXjdq>U6iqtpZ.-g&BM#e,IbocMl#dao9>[f3]6Zi790 +YPtd*Y5>="X6HY`X8AsuXT>Q+rilC*riuI/rjDa7rj_s>rk8#Vrk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRh +rhT"XqkX4frh][n!N2jpWW&stXo>L&YPtg+ZMq92\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2 +iVqsU0gpAXaao`"C[nG_nU +li-2Kkl0ZBir7j7hYu7.fDa7udf.Slc2Pf``W!^Q_#D(I])K2<[/R#VrkSNIrk&0?rjDa2ric=%ri5srrhTOfrh07_ +rgj%YrgNhSrgMkPjTBiVqd7h>Z.-f)F.tci22gao9?[_>_4K^&GSA[f3T3Yl:d(X8]!qV#I(eT`1P^ +SGnrUR/WENPl?mGP5^R*O8G%#\rltGgrmUktrn@A,ro!e7roF(Arp0RNqsXOTrq-3`rqHEeqtgCrf@&=rf$i7regK,reLK-qh>$(reL9)re^]6!K2m8N;ek:O8b7?PQ$jHQN!?PSGo/[ +T`1bdVuEdsY5Y[)[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhUnc&1[p&=[aq#:*g +qYpBkr;6Hirke]Ps8N#mrVl`oqu6Ejq#:$ep&=U_o)A.Xmf)SPl2KlFjo43;h>Z1.f)F.td/M;hao9?[ +_>_4K]`,A=Zi73.XT#3uVuEChTDkD\RJrQPQ2ZpFOT(:>MuJV5M>i8,L%p;hJbXlsK`Hl*LAm&/MZ/P5 +NrG+=OoCXFQiU9jr;6Hirke]Ps8N#prVl`oqu6Hkq>U0gp\sgao)%nTm/H>MkPjQAi;VX5g]#n* +df.VmcMkoa`W!^Q^AbbD\Gic4YPt['VZ*@iT`1P^S,SfSPQ$^DO8b.iG4NW,"O'Z2V94])KGC_>_FQaSsKad/MJm +g&Be+hu;R5jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr;QZlrke]Ss8N#prVl`oqu6Hkq>U-fpAX^`o)A.X +n,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4YPtX&W;`UlT`1M]Rf8QNP5^OANW+h7M#N), +K)U9!JGt#sI/\HkH2`'`FmjGIFoHUcGl`29rd+QkrdFcrrdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOk +riH+&rj2U4rk8riuI*ri?$p +rhKIbrg`tTrfmDDrf-o8reLK,rdt-"rdOiord"Kfrce6^rcJ-[qf2(Drc.gUrH&'^FT-F^GQ)jdH2`3j +IK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$Z2V94]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lH +m/HGPnG`%Yp&=[aq#:*dqu6NjrVlf;s3(HArqQHkr;QTmqYp9hp\sjbo`"C[nG_hSli-,Ijo46ia8X$V^](kE[f3T3Y5YI#VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qS +DuOY:D>S5MDZFbSE;jkVF8g:\GlE!fHiAKnJ,Y#uLAm#.MuJe:P5^aGSGo,ZT`1hfWW'("ZMq?4]DfSE +_u@^UcMl2idf.r!h#?41iVqsU6iqu6NjrVQT;s3(HArqlZnr;QTmqYp9h +p\smco`"F\n,DbSli-,IjSn0rnm_2rn%/!rm:YgrlG)V +rkJHDrjMg1riH*urhBC`rgWnPrf[8Are^W0re(3#rdFclrc\9_rc8!Wrbh^OrbDFHrb2:Crakt;raY2% +raYh9!+c1BAc?<@B`;`FCAr&KDZ4VSErL1[G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh.kXo>R([f3l; +^]).Ma8X<^d/MPofDaV*i;Va8k5OWEm/HJQnc&+Yp&=[ap\t!fqYpBerQG5as7lQlqu6Hkq>U-fpAX^` +nG_nUmf)MNkPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9h +FoHC[E;jeTD#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?N=L8@:B.EraYq=rb)4ErbMLLrbqdTrc.p[ +rcnEhrdXp!re19/rf6u>rg3VRrh'1ari#guriuI2rk&0Erl"fWrm(Mjrm^r$rnRM2roF(Brp'LNrpTjU +rq-3_rqHEfrqcWkq#/D9cN!nCqu-NlrqcWirqQKcrq-3\rp]pSrp0RGroF(;rndY.rmq(qrlkA_rkeZK +rk&09rilC(rhTOergs+Trfd>Brf$i3rdt-"rd=]jrcA'ZrbqdQrbDFGral(>raPk7qd95+r`oG,r`\Ph +r`];*rEKA.>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!. +]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3irVQTAs3^lGrqlZnr;QTmq>U0g +p\sjboD\7Yn,D\QlMflDir7j7g]#e'df.Pkao96X_#CtF\,NW2XT#0tT`1M]Rf8KLO8b+;LAli)J,Xfo +GQ)^`E;jbSD#S,IB)Z??@fBd7?iF@1>lIt)=oMOZ=8c5%=BPQ*r`fA,ra#M1raGe8rac"?rb2:Irbh^S +rcJ-`rd4Wore(3)rf$i;rf[8Lrgj%]ri#gtrilC2rk&0Frl"fXrm(Mkrn%/(rnm_7roF(Drp9XQrp]pY +rq69brqQKgrql]mqu-NndJqVorr2fnrqucmrqZQgrqHEarpg!Vrp9XLroj@@ro!e4rn.5"rm1Sfrl>#S +rk85he+?2J".@K'd9B`;cGDZ4SRF8g@^I/\ToJc:K)MuJh;Pl@*MT)PJ` +W;`t!ZMqB5^&GkI`r=3]ci2Gnf`'b,i;Va8kl0lHm/HJQo)A:\p\sseq>U9jr;6HlrmCbqs8N#prVl`o +qu6Hkp\smcp&=L\nG_nUlMfuGjo43;h#?"+e,I_nc2P]]_Z%:K[f3T3Y5YI;#X;l;Z'Gl;uTbqlJ%. +@/aU6AH$6@D#S>OE;k"ZH2`6kJGt9%M>iS8PQ$mITDkVbVZ*atZMq<3^AbtJ`W"-]d/MMng&Bh,i;Vj; +kl0lHn,DhUnc&4\pAXgcqYpBkr;QZlrm^tts8N#prVl]nqYp5h\(=8l8" +sJm;uTerQ/"/@fBp;B`;cGDZ4YTFoHXbIf=ot +K`6r0O8b@BRf8oXUAh1lY5Yd,]DfSE_Z%^Wc2Q,if`'Y)hu;[8k5OTDm/HGPnc&1[p&=^bq>U6iqu6Qk +rm^tts8N#prVl]nqYpYl:^&VZ*7fS,S`Q +OT(4@/aL3?2e"+=T2D$<;oem;#=&f:A[cY9__9O9`@`d:Adla:]!uf +;uTbq=8l>$=oM_+?iFI4A,^-?CAr/NErL1[HiAKnJGtB(MuJh;QN!BQT`1hfX8]@&\,O#=_#DCRbPolf +ec+8$h>Z@3jSn?Ali-;NnG`"Xp&=^bq>U6iqu6Qkrm^tts82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7 +gA]\&dJhAha8WpS]Df85hY'_IRbl6#hec+;%hu;X7jSnECm/-;OoD\F^p\t!fqYU3irRCkss8Mur +r;QTmq>U0gp\sjboD\7YmJcDMkl0WAiVq^5fDa;!ci2)d`;[ON\,N`5YPtI!U]-nbQN!'HNrFh5KDpB" +GlDjbEW0eRC&VcE@K'X5?2e"+=8l5!;uT\l:]=)f9__6K8FK(@8Gl$R9)_N`:&@`c;>sMn5P5^dHTDkVbVuEn!Zi7H5^])1Nb5T`de,ItuhYuI4j8S9AlMg2M +nG`%Yp&=^bq#:*gqu6NmrRCl!s8N#srVl`oqu6Ejq#:$eo`"C[n,DYPl2KlFiVqa6h#>k'df.Pk`rlIq+sDk:]=,g9`%KX8c)$/ +7KGtJr^Z`Tr_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&Arg`t[rhKIpriuI1 +rk8rosFJrpTjWrq-3arqQKgrql]mrr)`ngAfe)rr2oqrquclrqQKdrq69] +rp]pUrosFFroF(:rnRM*rmC_jrlY5Wrk8_2 +r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPcpR^uqaCEPqaUQTr^luZr_3;cqb[8kr`9#%r`oG1raYq?rbMLO +rcJ-ardXp#reUQ7rfmDNrh07friH+*rj_sArl"fYrm1Snrn7;,ro!e:roa:IrpKdTrq-3_rqHEgrql]m +rr)iqgAg"/rr2fnrql]krqZQerq-3\rp]pSrp'LEro="8rn@A&rmC_grl4rRrjr*:ric=!rhBC`rfmDD +rf$i/rdauqrcA'Yrbh^IraYq8r`oG*r`9"rr_`Yjr__9rau.Irc%jXrd=]pre(3/rfI,Drgs+`rhob!rj;[9rk\TRrlb;g +rmh#%rnm_7roO.Erp9XRrpp']rq??erqcWkrr)`nh>c=2rr2fnrql]krqZQdrq-3[rpKdOrosFCro*k5 +rn.5"rm1Scrl"fNrj_s5riQ0prh'1Zrf[8?re^W*rdFckrc8!UrbMLDraGe5r`];&r`&knr_NMgr_*5_ +r^m)Zr^QcRr^?*?h*V'-n3d1CqaLKRr^ZrZr_!/_r_EGgr_WSnr`B)&ra5Y6rac"DrbqdVrd"Kkrdk'* +rf6u@rgWnZrhKIprj)O5rkJHNrlP/crm^r"rndY5roF(Crp0ROrpg!Zrq69drqcWkrr)`nh>c=2rr2fn +rqcWirqQKcrq$-YrpKdOroj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQ +rb2:>ra5Y1r`K/"r_i_lr_EGdr_!/]r^d#XqaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9## +ra#M1raGe>rbMLPrcS3drdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pY +rq69crqZQirr)`nh>c=2rr2fnrqcWhrqHEarpp'Wrp9XKroa:>rndY.rmUkmrlb;YrkJHDrilC&rhf[e +rgEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMgr_3;`r^d#Yr^QcRr^?_9rb2:Jrc.p\rd4WqreLK4rfd>Lrh'1eriH+'rjr*Crkn`Yrm1Sm +rn@A-ro*k>rosFKrpTjWrq-3arqZQirr)`nh>c=2q#13grqQKerq$-ZrpTjProsFEro!e2rn7;!rm(Mc +rkeZJrjVm1ri,mmrg`tSrfR2;re:?$rd"KbrbqdOrau.c=2qu-NlrqcWhrqHE`rpg!Vrp'LGroF(: +rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK*rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGcr_!/] +r^QcRr^?c=2rr)iorql]jrqQKdrpp'X +rpKdLroO.=rndY.rmh"prlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'XrbVRFraPk6r`T5%r`&kn +r_EGdr^m)[r^ZrWr^HfSnjC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ra5Y6ral(FrbqdWrd4Wp +re192rf[8Irh'1dri?%(rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??crqZQjrqucoh>c=2rr)io +rql]jrqHEbrpg!VrpB^KroO.=rn[S+rm^qmrlP/Xrk8_2r`K/"r_i_lr_roj@KrpTjVrq69brqZQjrquco +h>c=2rr)iorql]irq??arpg!VrpB^KroO.Are^W)rd=]h +rc%jQrb;@@ra5Y0r`B)!r_`Ykr_cF5rr2oqrquclrqHEcrq-3ZrpB^NroX4?rnm_/rmq(rrlb;\rk\TErj2U-rhTObrgEbI +repc1rdauorcJ-XrbDFFra>_2r`];$r_remr_EGcr^luWr^QlTog@Y(r^#d6r^$BIj?i`2qaC_1r`T5#r_relr_EGcr^m)Zr^QlUnjDG(qa'@0r^$KL +j?iN,r^HfUr^ZrZr_*5cr_NMkr`/r#r`oG1ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fY +rm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_- +rmUkmrlG)VrkJH@riuI(rh07[rg*PDre^W,rd=]hrc8!Srb2:@ra5Y/r`K/!r_`Yjr_3;`r^m)YqaL9I +h*Tp_rBfI0pd>$LqaUQVr_*5ar_NMkr`&l!r`fA/raYq?rbVRSrce?hre(3+rf6uDrg`t\riH+(rjMg@ +rl"fWrm1Snrn.5-ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oprql]krqHEbrpp'Wrp9XLroF(; +rndY*rmUkmrlG)VrkAB=ric=$rh07ZrfmD@reCE&rd+Qdrc%jPrau.=ra,S-r`B(sr_WShr_*5_r^d#X +r^HfSpd=(.r^#.$!'pWO6/t<,6iKLQ7K,dU8H)3[9E%]c;#XAl=8lD&?N+F5BDu]GE;k"ZHN&HoLAm/2 +Pl@0OT`1tjYPtp.^Ac"KaSsNbe,IqthYuL5jSnHDm/HJQo)A=]p\t$gqu6Njro=%:s8N#sr;QTmqYp6g +p&=O]n,DYPl2K`Bi;VR3f)F+sci1r`_>_.IZi7-,W;`FgRJrELMuJG0JGsloFoH@ZCAqiE@K'R3=oMM% +;Z9Jk:&[fb8cD6Z7K,^J6fp`46.S:%5X><7k!J`.r^?`Sr^ZrZr_*5br_WSlr`B)&ra#M3ral(Drc%jZ +rd+QoreCE1rfd>Lrh'1griZ7,rk8_1r`T5$r_i_kr__1r`K/"r_WShr_3;_r^d#Xr^HfSpd=C7qa&Ilp-AUCksG87r^?`Sr^QlWr^m)_ +r_EGhr`/r"r`oG1rac"@rb_XSrcS3hrdt-*rfI,Frg`tari?%'rk&0Frl"f\rmC_prnIG0ro3q@rp'LN +rp]pZrq??erql]mqu5XUi;`fUrquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHDrilC%rhTO` +rg*PEreUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_ +r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rp'LN +rp]pZrq??erql]mqu5XUj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$rm1Serkn`Lrji$4ri5sm +rgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZ +r_3;dr_WSnr`9#%ra5Y7rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4rkABLrlb;ermUl$rnm_7roj@H +rpKdTrq-3`rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Serkn`Lrji$4 +ri5smrgNhOrf@&6rdk&srcS3[rb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQ +r^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.p[rdFctreLK6rfmDNrhKImrilC4rkABLrlb;ermUl$rndY5 +roj@HrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1SerkeZJ +rji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7 +qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKImrilC4rkABKrlb;ermUl$ +rndY5roj@HrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Se +rkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5] +k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKImrilC4rkABKrlb;e +rmUl$rndY5roj@HrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$ +rm1SerkeZJrji$4ri5smrgWnPrf@&6rdk&rrcJ-Yrb_XHraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4 +a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y7rau.Hrc.pZrd=]rreLK6rg!JPrhKImrilC4rkABK +rlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr1sXj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6 +rnIG$rm1Serkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlT +qa9L4a$B5]k!K&7qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y7rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4 +rkABLrlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr1sXi;`fUrquclrqZQerq$-YrpKdOroj@@ +rndY/rm^qorlkAZrkJHDrilC%rhTO`rg*PEreUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#X +r^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%& +rjr*Crkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjProj@@ +rnm_1rm^qorlkA[rkJHDrilC&rh]Ubrg*PFreUQ+rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#X +r^?WNk!Jr2bs:tfr^#[5r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^Urc\9irdt-*rfI,Grgj%b +ri?%&rjr*Drl"f[rm:YornRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjP +roj@@rnm_1rm^qorltG]rkSNFriuI(rhf[crg3VHreUQ+rdXojrc8!Vrb)4@ra>_1r`K/"r_WShr_3;_ +r^d#Xr^HfSpd=:4r^"doq*=pFk!Jr4r^?`Sr^QlWr^m)_r_EGhr`/r"r`oG1rac"@rbqdWrc\9jre(3+ +rfR2Hrgj%criH+(rk&0Frl+l]rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucmrqcWg +rq69\rpTjProsFBro!e2rmq(srm(M^rk\THrj2U,rhoaerg<\Jreg].rdXolrcA'Wrb2:Ara>_1r`T5$ +r_i_kr_RJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg/Ln,DkVo`"UaqYpBk +r;6KRs5rbMLPrcS3drdb!&rf$i@rgWn[ri5t$rj;[=rkeZUrm1Smrmq)*ro*k;rp'LL +rpTjWrq69brqcWkrquZmj8\';rr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_-rmUkmrlG)VrkJH@riuI( +rh07[rg*PDre^W,rd=]hrc8!Srb2:@ra5Y/r`K/!r_`Yjr_3;`r^m)YqaL9Ih*Tp_rBfI0pd>$LqaUQV +r_*5ar_NMkr`&l!r`fA/raYq?rbVRSrce?hre(3+rf6uDrg`t\riH+(rjMg@rl"fWrm1Snrn.5-ro3q= +rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oqrquclrqHEcrq-3ZrpB^NroX4?rnm_.rm^qorlY5ZrkSNC +rj)O*rhKIarg3VGreg].rdOilrcA'Urb2:Ara>_1r`T5"r_i_kr_Are^W)rd=]hrc%jQrb;@@ra5Y0r`B)!r_`Ykr_c=2rr)iorql]irqHEc +rpp'XrpKdLroO.rilC%rhKI`rg!JErepc.rdOilrc.pTrbMLCra>_2r`K/" +r_remr_EGdr^d#YqaUQRr^?NK^-_*Opd>$Kr^H]Rr^ZrYr_3;dr_WSmr`9##ra#M2raYqCrbh^Trd"Kl +re(3.rfI,Ergj%`ri5t%rjVm?rl"fXrm(Mmrn7;,ro*kc=2rr)io +rql]jrqQKdrpp'XrpKdLroO.=rndY.rmh"prlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'XrbVRF +raPk6r`T5%r`&knr_EGdr^m)[r^ZrWr^HfSnjC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ra5Y6 +ral(FrbqdWrd4Wpre192rf[8Irh'1dri?%(rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??crqZQj +rqucoh>c=2qu-NlrqcWhrqHE`rpg!Vrp'LGroF(:rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK* +rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGcr_!/]r^QcRr^?c=2rr2oqrquclrqQKerq-3\rpTjProj@Dro!e2rn7:urm(Mcrk\TIrjVm2ri5sn +rg`tSrfR2;re:?$rd"Kbrc%jOrau.=ra,S.r`K.ur_`Yjr_3;ar_!&Xr^QZNpd<(go0W4>pdG!Kr^Zr[ +r_*5ar_NMjr_reur`];-raPk=rbDFOrcS3crdXp#reg];rg*PRrhTOnrilC2rk/6HrlY5brmC_urn[S3 +roX4Drp0RPrpp'\rqHEfrqcWlrr)iqh>c=2rr2fnrqcWhrqHEarpp'Wrp9XKroa:>rndY.rmUkmrlb;Y +rkJHDrilC&rhf[ergEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMgr_3;`r^d#Yr^QcRr^?_9rb2:Jrc.p\rd4WqreLK4rfd>Lrh'1eriH+' +rjr*Crkn`Yrm1Smrn@A-ro*k>rosFKrpTjWrq-3arqZQirr)`nh>c=2rr2fnrqcWirqQKcrq$-YrpKdO +roj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQrb2:>ra5Y1r`K/"r_i_l +r_EGdr_!/]r^d#XqaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9##ra#M1raGe>rbMLPrcS3d +rdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pYrq69crqZQirr)`nh>c=2 +rr2fnrqcWirqQKdrq-3[rpTjProsFCro!e3rn%/!rm1Sdrl+lOrj_s6riZ6rrh'1Zrf[8?re^W)rd=]i +rc.pTrbDFCraGe5r`T5%r`/qpr_NMfr_*5_r^coVr^QcRr^?NKcpIXspd=pHr^H]Rr^ZrYr^m)^r_c=2rr2fnrql]krqZQerq-3\rp]pSrp'LEro="8rn@A&rmC_grl4rR +rjr*:ric=!rhBC`rfmDDrf$i/rdauqrcA'Yrbh^IraYq8r`oG*r`9"rr_`Yjr__9rau.Irc%jXrd=]pre(3/rfI,Drgs+` +rhob!rj;[9rk\TRrlb;grmh#%rnm_7roO.Erp9XRrpp']rq??erqcWkrr)`nh>c4/rr2oqrqucmrqcWg +rq??`rp]pTrp9XIroF(:rn[S+rm^qnrlP/XrkABBrj2U*rhf[frgNhNrf@&7re(3"rcnEarbqdOrb)4? +ra>_2r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPcpR^uqaCEPqaUQTr^luZr_3;cqb[8kr`9#%r`oG1raYq? +rbMLOrcJ-ardXp#reUQ7rfmDNrh07friH+*rj_sArl"fYrm1Snrn7;,ro!e:roa:IrpKdTrq-3_rqHEg +rql]mrr)iqgAfe)rr2oprql]krqQKdrq-3\rpTjRroj@Cro3q6rn@A&rm:YgrlG)Srk&0;ric=#rhKI` +rg3VIrepc1rdk&rrcnE`rbh^Mrb)4>ra5Y0r`K/#r`&kor_NMfqb-o\r^coVr^QcRmmQV3oL/UFr^H]R +r^ZiVqb$i\r_rbDFMrcA'_rd=]rreCE1rf[8Jrgj%`ri,n#rjDa;rkSNS +rlb;frmq)&rndY6roX4DrpB^Srpp'\rq??drqcWkrquZmgAfe)rr2oqrquclrqQKdrq69]rp]pUrosFF +roF(:rnRM*rmC_jrlY5Wrk8rnm_1rmh"rrm(M_rk\TIrjDa1riQ0prh07\ +rf[8@repc.rdauqrcS3\rbqdMrau.=ra5Y0r`];%r`&kor_WSir_EGdqb-]Uqa]4,!CfQX8,,[T9D_E[ +:B")h;>sPolJ+0@fC!=C&W&MErL4\I/\WpKDpf.O8b=ASGo/[U].CpZ2V01^&GnJ`r=9_dJh\q +h#?10iVr$>l2L#Jn,DnWo`"Uaq#:*gqu6NmrVQTJs4@;MrqlZnr;QQlq#:$eo`"F\n,DbSli-,Ij8S!9 +h>Z%*eGdenao96X^](eC[/R9.W;`RkT)P&TP5^L@L]2r*J,X]lFoHC[D>n8KB)Z6X/d:&%B\8cD947fZ'\84`_Ope1T\r_E>dr_`Ymr`9#"r`K/)ra,S4rau.Drb_XSrcS3brdXp"reLK5 +rf[8Hrgs+`ri#h"rj;[8rkJHNrlP/crmUkurn[S3ro="Arp'LNrpTjWrq-3arqZQiqu$Hlqu5=LeGoFE +rquclrqQKerq69^qsaUOrosFCro3q7rn@A&rmC_hrl>#Srk&0#R +rk/6>rilC&rhf[frgWnQrfI,ra>_3ra#M+r`K/$r`&kpqb[/cr_E>b +oh>-RnkB$W!)EGeqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07f +ri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQirql]nqu5+FeGoOIqu-Nlrql]k +rqHEcrq-3ZrpKdQrosFEro3q6rn@A'rmC_jrlY5WrkABCrj2U-ri5smrh'1Zrfd>Brepc0rdt,urcnEb +rc.pTrbDFFrac";ra5Y1r`];(r`9"ur`&kpqbd>hqbR2dk"Y_Jr_EMjr)!AiqbmDmr`/qur`T5)ra#M1 +raPk;rb)4Frbh^TrcS3brdOitre:?0rf@&BrgWnZrhKImriZ7,rjr*CrkeZWrltGirn%/'rndY6roX4E +rpB^Rrp]pZrq69brqcWkrqucoqu5+FeGoOIqu-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+rmUkn +rltG]rkeZKrjMg3riZ6trhBCarg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5&r`B)! +r`&kqr_iVjh,+)J!)i_mr_reqr`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZrd"Kkrdb!%re^W8rfd>I +rh'1brhf[trj)O3rkABJrl+l]rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??crqcWkrqucoqu5+FdJs4F +qu-Nlrql]jrqQKerq-3[rpTjQrp'LHro3q8rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbMrfI,< +reUQ)rdXoprc\9^rbqdRrbMLHraYq:qd9>.r`oG+r`T5&r`B)"qc3Vpku7R\qc*Vs!EN8#=8l>$=oMV( +>lJ%+?iFL5A,^0@CAr,MDuOhWG5cmgIf=otM#N>3OT(LDRJrfWUAh+jY5Ya+\Gj2@_>_IRbl5rfeGe," +hYuI4ir80@lMg/Ln,DnWo`"Uaq#:*gqu6NjrVlfDs3CZDrqlZnr;QQlq>U0go`"F\nG_kTli-/Jjo4<> +hu;C0fDa7uci2)d`W![P]Df;=Yl:a'W;`LiSc5&VPQ$[CN;eS2K)U9!HN&-fFoH@ZD>n>MBDuNBAc?-; +@/aO4?2e+.>Q.h*=o2>#=6Wcb=8Q)"=TMZ.r`];*r`oG.ra5Y4raGe;rau.BrbMLNrc%jZrcnEgrdXp" +reCE2rf@&BrgEbVrh9=iriH+'rjVm=rkSNPrlY5drmUkurnIG0ro3q=rosFJrpKdTrq$-]rqQKgrqcNi +rr)`ndJqMlrr2fnrquclrqZQgrq69_rpp'XrpB^NroX4@ro*k5rn@A&rm:YgrlG)UrkABDrj2U.riQ0q +rh9=_rg*PIrf@&;reLK)rdauqrd"Karc8!Vrb_XLrb2:Brac";ra>V1qd'2+r`fA*kun!hr`f>+!F/n/ +?2e4.@/aX7A,^'=B`;cGD>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R(Zi7T9^])+LaSsE_ +d/MVqg&Bk-iVqp;k5O]Gmf)_To)A7[p&=acq>U6fr;QZlrmCbhs7lQlqu6Hkq>U-fpAX^`nG_nUmf)MN +kPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9hFoHC[E;jeT +D#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?N=L8@:B.EraYq=rb)4ErbMLLrbqdTrc.p[rcnEhrdXp! +re19/rf6u>rg3VRrh'1ari#guriuI2rk&0Erl"fWrm(Mjrm^r$rnRM2roF(Brp'LNrpTjUrq-3_rqHEf +rqcWkq#/D9bQ%S@qu-Nlrql]krqQKdrq69^rpg!Vrp0RJroa:?rnm_1rmq(trm1SfrlG)VrkABCrjMg1 +riH*trhBC`rgWnPrf[8Are^W0re(3#rdFclrc\9_rc8!Wrbh^PrbDFGqe,n?rakk7raPY2qdT>1rac(A +!G5s@BDuWECAr)LDZ4VSErL4\G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh+jX8]@&[f3l;^Ac%La8X<^ +ci2Dmf)FJ(hu;X7kPj`Fli-APnc&.Zp&=^bq#:-hqu6NmrVQT;s3(HArqlZnr;QTmqYp9hp\smco`"F\ +n,DbSli-,IjSn0#VrkJHE +rjMg3riZ7#rhf[frgs+Zrg!JGrf@&:re^W/rdk'!rdOinrd+QgrcJ-[rc.pVqeuIOk&(!5rbhdUr,DXT +rcA'\rcnEfrd4WnrdXoureCE.repc:rf[8Grg`tZrh07fri,n"rj)O4rk&0Erkn`Urm(MirmLf!rnRM1 +ro*k^])1NaSsE_ci2Dmf)FJ(hYuI4jo4HBl2L)Ln,DkVoD\F^pAXjdq>U6fr;QZirlb>\s8N#prVl`o +qu6Hkq>U-fpAX^`o)A.Xn,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4YPtX&W;`UlT`1M] +Rf8QNP5^OANW+h7M#N),K)U9!JGt#sI/\HkH2`'`FmjGIFoHUcGl`29rd+QkrdFcrrdXp!re19,reg]7 +rf@&ArfmDNrgj%]rhTOkriH+&rj2U4rk8rf$i6reUQ. +re:?)on*0oqgeZson*0r!/1H-L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\bVZ*RoXo>R([/RN5]DfPD +_>_LSb5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6NmrVQT2s2+g8rqQHkr;QTm +qYpibl5T\_u@FM]`,G?[JmE0Y5YO%VuELk +T`1S_SGnuVQN!-JPQ$[CO8b1=N;eb7MYN#,L]3&*L&Qi+L\Q])M?&P8Mi7Rnrf6u=rfI,Crg!JKrgNhV +rh'1_rhTOkriH+%rilC0rj_s?rkJHLrl+l\rm(Mirm^qurn7;.ro*k9roa:Frp0RPrp]pWrq-3_rq??d +rqZQirql]mqu-Ek_Z.:Krr2]kqtpBhrqQKerq??`rposTrp9XMroa:Bro*k7rn[S-rmq(trm1SgrlP/[ +rk\TKrk8_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\ +pAXgcq"speqtU-erkJKGs82fmrVl`oqu6Hkq>U0gp\sjbo`"F\nG_kTmJcALkl0`Dir7j7h>Z+,fDa7u +d/M;hbPoN\_u@IN^AbbD\Gil7ZMq',Xo>@"W;`XmU\g_`T)P8ZRf8`SR/WHOQM?a?Pl$aFQN!6MQiNNT +R@4&Crg`tYqk3q`rh]Umri5t"ric=,rj;[7rjr*CrkSNOrl4r\rltGhrmUktrn7;,ro!e8roX4CrosFL +rpKdTrpp'\rq69brqQKgrqcWkrqucop&;`+\c;[.qu-NlqtpBhrqZQgrq??arq-3[rp]pUrp0RKroj@B +ro3q7rndY.rn%.urmLelrltG`rl+lQrkSNIrjr*U6iqtpZ+,fDa>"d/MAjcMkrba8X$V_>_7L^Ab_C\,Nf7ZMq*-YPt^(XT#:"WW&jq +VYd4hV!k)UV#I4iV?!LpVl0Nnri?%#riZ7(riuI.rjDa8rjr*CrkJHKrl"fUrlP/brm1Sjrmh#"rn7;, +rnm_6roO.Broj@IrpBUOrpp'\rq??crqQBerqlTjrr)`n[f<]6qu6Tnqu$HjrqcWirqQKerq69_rq$-Y +rpKdQrp'LHroa:Aro3q7rn[S-rn7;$rmUknrm(MerlY5[rl"fPrkJHFrk&0>rjMg6rj2U0qlp(&riPsr +ri5amql9FlriH1'!NrU&Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb*h>Z=2ir8$< +kPj`FlMg2Mn,DhUoD\C]p&=^bq#:*gqYpBhr;QZirjMj5s82fmrVl`lqu6Hkq>U0gpAXaao`"F\nc&"V +mf)POl2KiEjSn3=i;VU4h>Z(+f)F5!dJhMlci2,eao9$g]$%+i;Vd9jSnBBl2L#GmecMQoD\C]p\Xa_qYpBhr;QZi +rilF,s7QBjrVQNlqu6Hhq>U0gp&=U_oD\:ZnG_nUmJcJOlMg#Hk5OH@ir7m8hYu:/gA]e)ec+(tdJhMl +cMl&eb5TN^aSs3Y`W!gT_Z%CK_#D+5^AbnE^];1O_86,frl"fTrl4rYrlP/^rlkAdrm:YlrmUksrn7;) +rnIG/ro!e8roF(@roj@Hrp0RNrpTjUrpg!Zrq-3_qtU0drqcWkqu$Hlp&;2qWrMtqqu-NlqtpBhqt^6c +rq??arq$-[qsaUQrpB^Mroj@EroF( +rknWOrl"lWr5S`XrlY5`rltGfrm:YjrmC_ormq)#rn7;,rndP1ro="=roa:Frp'LMrpK[Qrpp'[rq69a +rqHEfqtg +rp'LKrp9OMqsaUUrq#pXqtU0dqtgroF(=p#>H!p#5u3!TW5>jSn9:$fqtpU0ap\XX\o_\7Zo)%t5nG_qXo)/(XoC_bTp%\:Y +q#:*aqYpBhr:U$]rdk(Ls+14Ks760drV6U0dp\smWp&"CDoCqkXo^qhLqtC$`qtU'aqtg*b +q#(-im/DS9!<7WMo`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU`qtU*^rUp/@s7cPEs60LX +rpTg\r;6B^qUG<@qX+.YqtU*XrV6ACs60K6s60LFrq63Lqr[bOqsaLRr9"!0s60K6s4RGFrosCPr9!nN +r:^'TrUTr=s4mX*s2=s(rm^lHrp'K6s2=qgs2=rOrp'K6s2=qgs+13$s/l %APLeod +EI +120 0 0 52 68 340 cm +BI +/Width 360 +/Height 156 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$ +JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?ql +JcC<$JcC<$JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$JcC<$JcEjlJcDhOf)>^Lrdk*% +s+13$s2b5irdk+4s2k:ls2=s(rm^lHrp'K6s-Wh;s+14.s6Ta7rTX<4s8;o=s+14's7QBUrUTmKqtL$^ +r9XCQrdk*Rs+13$s7QEbrosCPr9!nCr9XCQrfmH)s+14-s8N#^rUp*]qptTEqYL*do).kQqu20HZi>UV +JcGWIrr20\p&+L[eGB(>o).kQqu2r^ao?qlkl:GWn,<%Zqtos\eG0+@mJ?hZq#'UZq#5jE]`3Q_K`D&N +qu6'_q#($do(pl3m/$_Yq#'UZq#6rdao?qlo`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU` +qtU*^rUp/@s3(Fns,d9XrqQHhrV6U0[p\X[Hp%A%Op\Xa_q=XU`qtU*^rUp/ns2k:ls7cQm +rpTgbr:p0gqYU*`q"sgYpA=O^o\K-;oE"UVrq5jUrqH3_rqZHfq"ssdo)8ReJcEpnJcCr6rr2Kerr)io +q"t'eqt^$^qtKdWqt9s\h=LO9rq5jUrqH3_rqZHfq"ssdo)8ReYQ)`EJcG]Kqu60brquZjq"jm`rqQ9_ +qt9jYqt'gXqsiM3rp^!Zr:9jYp%87Vq"O[\rqZ?crqlTjp&4R_JcF7"JcD/U0dp\sm`p&=U\oD%kQnG_nUnGD\LmdKQ:$fqtplhKlHn,)VRnb_nV +oDA1TpA"F[qYpBhr:9gcrdk+*s+13Hs8N#drVl`lqu6Hkq"sj]pAX^]oD\=Xnc&%Tn+c;=lgO*,lhKlH +n,)VRnb_nVoDA1TpA"F[qYpBhr:9gcrk\WVs,@!Wrpp$er;QTjqYU*`p\XX_o`"F\nc&"VnG_nRmf)VQ +m/-,JlMKi=kjR^,kQ0o2ros=Frp0RMrpBLKrp]pUrpg!Yqt0m\q"Od`q"k!erquHfqu20Hi;\B.W;lkr +o)8RcrqlThqt^6cqtL!\rq-3\rpg!Vrp]pUqsOINrp9OJrp'CFp#tl-o'$);qs+1Hrp9XOq!S.NrpTjV +rposYrq6'\rqZ?crql]mp&4de`;dsZQ2gXYq#13iqtpBhqt^-`rq??`qt'^TrpTjUrpTjSrp9XMrp'LH +qrdt@qrRhkPOKBlMg,Km/-5MnG_nUnG_tWoDA1WpAXgcq>:$fqtpjSn34ipYk! +ir8!;jSn9s69Q7s0;UprVl`lqu6Heq#:!dp&=U_o)&"WnG_nUmf)SMli-/J +kl0cBjo4??")g[Ekq +g\9J(gt_nbqqqD2rnm_6ro3q>g +rm:>arm:Yjqp>;ir6kSormh#!rn%/%rn72(rn[S2ro*k9roO.Aroa:Frp'LKrpB^Rrp]pXrq$-]qtC$` +qtU0drqlTjq#,dDo)F:@])VR(rquZjqt^6dqtL*`rq-3]rpp'XrpKdQrp0RKrosFFroX4Aro3q8rnmV/ +rnRM+rn.5%rmq)!rm^_kqp>>grm:>arm:Yjqp>,drm^qtrmq)#rn.5'qqV2,rnm_6ro3q=roX4CrosFI +rp0RNrpTjUrpp'[rq-*]rqHU0gp\smcp&=U_nc&%Wn,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0gA]e)f`'G#eGdnqdJhMf +ci25ec2PrUbPTN_c25f`ci2;jdJhSne,Insf`'S'gA]n,h>?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[ +p&=[ap\sseq>:$fqtU-brnmats/Q+rrqlZnr;6BjqYU*fp\smcp&=R^o)%qUmf)VQlMg#HkPjQAiqq[5 +hYu@1g&BY'f)F.tdf.Sld/M>ic2Pocb5TN^`r!aS`;@I@_Z%IM`;[^U`r*jUao9H^bPocccMl2ici2>k +e,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"XoD\F^pAXgcq>:$fqtpU-fpAXaaoD\=XnG_kTmJcDMkl0cEjSn09i;VU4h>Z+,f`'J$e,Iepci2;jcMl)fbPoZ`ao9ke,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"X +oD\F^pAXgcq>:$fqtpU0gpAXaao`"F\nc&"VmJcGNlMfuGk5OKAiVqd7 +hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y`;[[R_Z%CK_#(n8^&,SA^];7L_Z%IP`W!mVaSs<\b5TWa +c2Q)hdJhVoec+5#g&Bb*hYuF3iVqsU0gpAXaao`"F\nc&"VmJcGNlMfuGk5OKAiVqd7hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y +`;[[R_Z%CK_#(n8^&,SA_#)"J_u@XS`r='Yao9H^bl5ldd/MGle,Insf`'S'g]$(/hu;U6jo4EAkPjcG +li-;Nn,DkVo)A:\p&=[^q#:*aqtU-eroO1%s02OurqlZnr;6BjqYp9ep\sgao)%qUn,DbSli-2Kkl0ZB +iqq[5h>Z1.f`'J$eGdhoci25hbPoZ`aSs0X`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfGC]`Gg[ +rkABHrkSNLrkn`Rrl+lXrlP/_rm(Mhrm:Yormq)$rnIG.qr%J6roF(BrosFJqsO@Nrq$-]rqHU6iqtpU0gpAXaa +o`"F\nc&"Vmf)POl2KiEjSn3=i;VU4h>Z(+f)F5!dJhMlci2,eao9Z=2i;Vd9jo4EAl2L#J +mf)\Snc&+Yo`"O_pAXjdq>U6iqtpU0gp\sjbo`"F\nG_kTmJcDMkl0cE +jSn0_7L^&GYC\Gir9[JmN3ZMq',Yl:g&XT#9bWrB'rX8o@' +Xf_T,ric=+rj2U3rjVm:rk&0CrkSNLrl"fUrlP/_rm(MjrmUkrrn7;*rn[S2ro3qrjMg6rj2U0ric=*riZ."ri>:`ri>ptriQ1(ric=+rj2U3 +rjVm:rk&0CrkSNLrl"fUrlP/_rm(MjrmUkrrn7;*rn[S2ro3q#Vrk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRhrhT"XqkX4frh][n!N2jpWW&stXo>L&YPtg+ +ZMq92\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqsZ+,fDa>"d/MAjcMkrb +a8X$V_>_7L^Ab_C\,Nf7ZMq*-YPt^(XT#:"WW&jqVYd4hV!k)UV#I4iVZ*LmWW&stXo>L&YPtg+ZMq92 +\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqs_7L^Ab_C\,Nc6Yl:j*Y5YL$WW&gpV#I+fU&L_aTDkGZSc5/VS+rHOS,8`TSc52\T)kRVrh07arhKIg +rhoapri?%$ric=*rj;[6rjr*CrkJHKrl+lYrltGgrmC_orn%/'rndY3ro3q#VrkSNIrk&0?rjDa2ric=%ri5srrhTOfrh07_rgj%YrgNhSrgC#VZ*CjU&L_aT)P8ZRJrTQQN!-JPQ$aE +OQMW$OT(CCP6$l2rfmDJrg3VPrg`tYrh07arhTOjri?%#rilC-rjMg:rk8C +rf@&=rf$i7regK,reLK-qh>$(reL9)re^]6!K2m8N;ek:O8b7?PQ$jHQN!?PSGo/[T`1bdVuEdsY5Y[) +[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirg*S8 +s5*eTrqQHkr;QTmqYpibl5T\_u@FM]`,G? +[JmE0Y5YO%VuELkT`1S_SGnuVQN!-JPQ$[CO8b1=N;eb7MYN#,L]3&*L&Qi+L\Q])MZ/P5N;ek:O8b7? +PQ$jHQN!?PSGo/[T`1bdVuEdsY5Y[)[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhU +nc&1[p&=[aq#:*gqYpBkr;6HirqcZ:s2+g8rqQHkr;QTmq>U0gp\sjbo`"F\nG_kTm/H8KkPjTBi;VR3 +g]#e'e,I_nc2Piaa8WpS^](nF[f3W4Yl:a'WW&gpU&L\`Sc5&VQi<9LOoCIANrFt9MZ/J3LAQ]"KC=Bd +KDpQ)LAZf*M>iD3MuJb9O8b:@Q2[-LRJrcVTDkP`VuE[pXT#I'[/RN5]`,YE_>_LSb5TZbd/MPof)FG' +hYuI4jo4HBl2L&Kmf)_To)A7[p&=^bq#:*gqu6NjrVQS[s+14,s8N#mrVl`oqu6Ejq#:$ep&=U_o)A.X +mf)SPl2KlFjo43;h>Z1.f)F.td/M;hao9?[_>_4K]`,A=Zi73.XT#3uVuEChTDkD\RJrQPQ2ZpFOT(:> +MuJV5M>i8,L%p;hJbXlsL&6W(M>iD3MuJb9O8b:@Q2[-LRJrcVTDkP`VuE[pXT#I'[/RN5]`,YE_>_LS +b5TZbd/MPof)FG'hYuI4jo4HBl2L&Kmf)_To)A7[p&=^bq#:*gqu6NjrVQTjs2k;Xs8N#prVl`oqu6Hk +q>U0gp\sgao)%nTm/H>MkPjQAi;VX5g]#n*df.VmcMkoa`W!^Q^AbbD\Gic4YPt['VZ*@iT`1P^S,SfS +PQ$^DO8b.iG4NW,"O'Z2V94])KGC_>_FQaSsKad/MJmg&Be+hu;R5jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr;QZl +rg*S8s5*eTrqlZnr;QTmqYpiaSs0X_>_1J]Df>> +Z2Us+Xo>3sU]-qcT)P5YR/Wi8/K`6W'JGXikIf"QgI/\QhIf=ioJGt3#L&Qi+M>iG4 +NW,"O'Z2V94])KGC_>_FQaSsKad/MJmg&Be+hu;R5jSn?Ali-;Kn,DnW +o`"Uaq#:*gqYpBkr;QZlrqcZ:s2G$;rqlZnr;QTmqYpZi70-XT#0tV#I%dSc5)WPl?jFO8b.rkSNMrlG)^ +rm:Ymrmq)%rnm_6ro3q?rosFJrpTjVrpp'\rq69brqZQirqlTjrr)`nSH"0?iW&oVqu-Nlrql]krqZQf +rq??`rpp'XrpTjProsFFro3q8rnm_.rmq(srm:YgrlG)UrkJHGrjMg4ric=&ri#glrh07]rgNhNrf[8A +rf-o7reUQ,rdt-!rdausrd=]krd"KfpiZ%IpiZR\rd"Khrd=]nrdautrdt-&reUQ2rf-orkSNMrlG)^rm:Ymrmq)%rnm_6ro3q?rosFJrpTjVrpp'\rq69brqZQirqlTj +rr)`n!<:1@aT)8=qu-NlqtpBhrqQKdrq-3]rp]pTrp9XLroa:Bro!e3rnIG'rmUknrlb;]rkn`Mrk&0> +riuI*ri?$prhKIbrg`tTrfmDDrf-o8reLK,rdt-"rdOiord"Kfrce6^rcJ-[qf2(Drc.gUrH&'^FT-F^ +GQ)jdH2`3jIK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$Z2V94]DfSE_u@^UbPolfeGe%ug]$(/ +i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*dqu6NjrVleds+142s8N#prVl`lqu6Hkq#:!do`"I]nG_kTm/H;L +kPjTBi;VR3g]#e'e,I_nbPoQ]_u@FM]Df>>Z2Up*X8\spU]-nbSGnoTPl?dDNW+k8L]3#,K)U<"If=`o +H2`'fGPcO^FT-=XEURlGEVjeRFT-F^GQ)jdH2`3jIK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$ +Z2V94]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*dqu6NjrVlcrs2k;as8N#m +rVl`oqu6Hkq#:$ep&=U_nc&%WmJcGNkl0]CiVqa6g]#n*df.VmcMkl``;[ON]Df83O8b=AQ2[ia8X$V^](kE[f3T3Y5YI#VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qSDuOY: +D>S5MDu4MQEW1%YFT-OaH2`0iIf=irJc:E'M#N>3O8b=AQ2[#SrkABDrj2U/riZ6trhKIbrgWnQrf[8Arepc4re(3$ +rdXoord"KdrcA'ZqeuINrbVRLrbDFHqe,n?mq)B.rb)4E!,;OLCAr#JD#S;KDuObUF8g@^GlE'hJ,Y#u +KDp`,N;en;P5^gIS,T&ZU]..iY5Y[)Zi7T9^AbtJa8X9]d/MJmf)FD&hu;X7jSnBBlMg5Nn,DnWo`"R` +p\sseqYpBkr;QZlrh'4As6'F]rqlZnr;QTmqYp9hp\smco`"F\n,DbSli-,IjSn0rnm_2rn%/!rm:YgrlG)VrkJHDrjMg1riH*urhBC`rgWnPrf[8Are^W0re(3# +rdFclrc\9_rc8!Wrbh^OrbDFHrb2:Crakt;raY2%raYh9!+c1BAc?<@B`;`FCAr&KDZ4VSErL1[G5cge +I/\ZqKDpW)M>iS8P5^aGS,T&ZUAh.kXo>R([f3l;^]).Ma8X<^d/MPofDaV*i;Va8k5OWEm/HJQnc&+Y +p&=[ap\t!fqYpBerLa+@s6'FWrVl]nqYphu;I2fDa;!d/M8gaSs*V +^](hD[f3N1XT#3uUAgb`S,S]PP5^OAM>i;0KDpE#IK"QlG5cU_ErL%WDZ4JOCAqrHB`;WCAc$$;A*IJ% +A,Bg9Ac?<@B`;`FCAr&KDZ4VSErL1[G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh.kXo>R([f3l;^]).M +a8X<^d/MPofDaV*i;Va8k5OWEm/HJQnc&+Yp&=[ap\t!fqYpBgr;llqbQ#ccq#13hrqcWirqHEcrq-3Z +rpTjSrp'LGroF(:rn[S-rm^qprm(Marl"fNrk&0D+pg3`&ra>_4!+>n:@K'a8A,^'=BDuWEC]8/LDuO_TEW1+[ +GlE'hJ,Y'!K`6o/NrG.>QiZ.-eGdkpcMkoa`;[ON +]Df8QiV1qd'2+r`fA*kun!hr`f>+!F/n/?2e4.@/aX7A,^'=B`;cGD>nJQ +EW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R(Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_T +o)A7[p&=acq>U6fr;QZlrh]XGs6BX`rqlZnr;QQlq>U0gp&=U_o)A.XmJcGNk5OH@iVq^5gA]\&d/M8g +aSs'U^AbbDZi73.Xo>-qU&LY_QN!*IO8b+;L]2o)JGsrqH2_maErL"VD>n;LB`;TBAH$';@/F=.?2e+. +>Q.gj=oMV(>Ph\)?2e4.@/aX7A,^'=B`;cGD>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R( +Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_To)A7[p&=acq>U6fquHZrrVcWmdJqVorr2fnrqucm +rqZQgrqHEbrq$-YrpTjQrp'LDro3q7rnIG'rmLekrlP/XrkSNFrjVm2riH*trh07]rgNhLrf@&;reCE) +rdXoorce?`rc%jSrbVRIrau.?raPk7ra5Y1r`oG,qcWo#h,jPW!E`J'=oMY)>lJ%.?iFL5@fBp;B)ZKC +D#S>OE;jtYGQ)sgJ,Y*"LAm/2O8b=ARf8lWT`1nhXT#I'\,O#=_#D:Oao9Tbdf.ktg]$+0ir8$U9jr;6Hlrh]XGs6]jcrqlZnr;QTmq>U0gp\sjboD\7Yn,D\QlMflDir7j7g]#e' +df.Pkao96X_#CtF\,NW2XT#0tT`1M]Rf8KLO8b+;LAli)J,XfoGQ)^`E;jbSD#S,IB)Z??@fBd7?iF@1 +>lIt)=oMOZ=8Q,!=oMY)>lJ%.?iFL5@fBp;B)ZKCD#S>OE;jtYGQ)sgJ,Y*"LAm/2O8b=ARf8lWT`1nh +XT#I'\,O#=_#D:Oao9Tbdf.ktg]$+0ir8$U9jquH]nrVlfDs3^lGrqlZn +r;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+W;`OjT)P/WPl?dDN;eY4 +Jc:/uI/\5h\(=T2D$2raYq@rbDFMrbqdWrc\9grdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4 +ro3q@rp'LLrpTjWrq-3arqQKgrql]mqu-NnV>l,HmJm1bqu-Nlrql]jrqQKerq-3[rpTjQrp'LHro3q8 +rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbMrfI,. +r`oG+r`T5&r`B)"qc3Vpku7R\qc3Vrr`B)$r`T5(r`oG.qd9>2raYq@rbDFMrbqdWrc\9grdOitreUQ3 +rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4ro3q@rp'LLrpTjWrq-3arqQKgrql]m!<)io +rr1=FeGoOIqu-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+rmUknrltG]rkeZKrjMg3riZ6trhBCa +rg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5&r`B)!r`&kqr_iVjh,+)J!)i_mr_req +r`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZrd"Kkrdb!%re^W8rfd>Irh'1brhf[trj)O3rkABJrl+l] +rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??crqcWkrqucoqu3PoJcG6>rr2fnrqucmrqcWgrq??arpg!W +rpTjOroa:Bro!e2rn7;"rm:Yhrl+lRrkAB?rj)O+rhf[hrh'1Urfd>Bre^W-rdaurrcnEbrc%jSrbVRH +ral(;ra>_3r`oG*r`K/$r`/qsr_reoqbc0Gr_`Pjr_reqr`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZ +rd"Kkrdb!%re^W8rfd>Irh'1brhf[trj)O3rkABJrl+l]rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??c +rqcWk!;llqr;QZlrm^tts8N#prVl]nqYp5h\(=8l8"sJm;uTerQ/"/@fBp;B`;cGDZ4YTFoHXbIf=otK`6r0O8b@BRf8oX +UAh1lY5Yd,]DfSE_Z%^Wc2Q,if`'Y)hu;[8k5OTDm/HGPnc&1[p&=^bq>U6iqu6Qkri#jJs7$'frqlZn +qu6Hkq>U-fpAX^`nc&"Vm/H5Jk5OE?hu;C0f`':tcMkuc_Z%:K]Df/9YPtR$UAgb`Rf8NMOT(4Q.h*=oMM%sDh:\@KX:%D'Y:]!uf;>sJm;uTerQ/"/@fBp;B`;cGDZ4YTFoHXbIf=otK`6r0O8b@BRf8oXUAh1lY5Yd,]DfSE_Z%^Wc2Q,if`'Y) +hu;[8k5OTDm/HGPnc&1[p&=^bq>U3jqZ6Tkrr)`neGn%urr2fnrql]krqZQfrq69]rp]pSrp0RHroF(: +rn[S,rmh"prlkA^rkSNGrjVm2ri?$qrh07[rg*PFrf$i4rdaurrd4Wdrc.pUrbDFEraYq8ra,S0r`T5& +r`B(ur_iViqbR2dqb?`Wpe10Or_3Afr(d,bqb[8jr`&kur`K/&ra#M1ra>_8rb)4FrbqdVrcJ-drdOis +reUQ3rfI,FrgWn[rhf[qrilC2rk&0Frl>#]rm:Yprn7;,ro!e:roa:HrpB^Srpp']rqHEfrqcWkrr)`n +W;hGKnGiLequ-NkrqcWirqHEbrpp'XrpB^Nroa:Aro!e3rn7;$rm:Ygrl>#Rrk/6>rilC&rhf[frgWnQ +rfI,ra>_3ra#M+r`K/$r`&kpqb[/cr_E>boh>-RnkB$WqbI#aqb[8j +r`&kur`K/&ra#M1ra>_8rb)4FrbqdVrcJ-drdOisreUQ3rfI,FrgWn[rhf[qrilC2rk&0Frl>#]rm:Yp +rn7;,ro!e:roa:HrpB^Srpp']rqHEfrqZWl!W2cnrVQTDs4%)GrVl`oqYp9hp\sjboDA%Vm/H8KjSn0< +hu;@/f)F(rbl5Z^_>_(G[f3Q2XT#*rT`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\QC&VZB@fBa6?2e%,=T2>" +<;oep;#=&c:&[ic9(GRB8G,OS9)M5hh,?iFO6AH$U6fr;QYns+14> +s82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7gA]\&dJhAha8WpS]Df85hY'5hh,?iFO6AH$k'df.Pk`rlIq+sDk:]=,g9`%KX8c)$/7KGtJr^Z`T +r_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&Arg`t[rhKIpriuI1rk8rosFJrpTjWrq-3arqQKgrql]mrr)`nY5a(QoDeghrr)iorql]jrqQKerq-3[rpTjP +rosFFro*k6rnRM'rmLekrl4rRrk8<=riuI)rhKIcrg`tNrf6u9re(3#rd=]frc8!Vrb;@DraPk6r`oG+ +r`9"tr_`Ykr_NMgr_32^pdt?Qe40F-pdtHXqb6l^r_WSkr`&ktr`];+ra5Y6rau.DrbqdVrcS3frdXp" +repc:rf[8Nrh'1briQ1)rjDa=rkeZSrm(Mjrmh#'rndY5roa:Frp0RPrpp'\rqHEe!;QZkq>U9jr;QZl +rn@D(s8N#srVl`oqYp9hpAXaao)A.Xn,DSNkPjQAi;VO2f`':tcMkuc_Z%7J\c/i4X8]$rT`1G[Q2ZjD +M>i2-JGsopG5cI[D>n;LAH$$:?iF7.=T2A#;Z9Pj:]=&e9D_<[8GbpV7efFI7.3M<7/]RP7JfRR8,GjV +8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[HN&HoK`6l.O8bFDS,T)[VuEdsYl;34^Ac"Kb5TZb +dJheth#?72jSn<@l2L/Nnc&+Yp&=^bq#:-hqu6QkriZ9Ps7?9irr2lqr;QQlq#:!dp&=O]nG_nUl2KlF +jSn*:h#>t*dJhGjb5T9W^&GSAYl:^&VuE@gS,S]PO8b"8K`6N$HiA3fE;j_RCAqcC@K'X5>5hY'X/g9`@]^8cD9X8,c!Q7JK:>6hj(E7JfRR8,GjV8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[ +HN&HoK`6l.O8bFDS,T)[VuEdsYl;34^Ac"Kb5TZbdJheth#?72jSn<@l2L/Nnc&+Yp&=[cp]:0brqcWk +rr)`ngAfn,rr2fnrquclrqHEcrq69\rpTjRroj@Cro3q7rn@A&rm:Yfrl4rQrk&0reLK)rd=]hrc8!UrbDFFraGe5r`oG)r`9"t +r_WSir_EGdr_*5_r^coVr^QcRpdEq*pdG*MqaUQTqag]Yr_*5ar_EGgr_WSnr`9##r`oG/raGe=rbDFM +rc8!^rd=]sreLK3rf[8Jrgj%ari,n"rjMgZ(+eGdenao96X^Ab\BZi7'*VZ*7f +Rf8QNO8at7KDpB"GlDgaDuOPOBDuE?@/aI2>5hS%;u9Dj:B!rd9)D3W8,c!T7K,^%6i9=K7/fXP7fGpW +8c)-Z9`@c`;#XGnlJ.1A,^-?C]88OFT-OaJ,Y-#M#NJ7Pl@-NT`1hfXT#R*\Gj5A`;[pYci2Gn +g&Bh,i;Vg:kPjiImf)_To`"O_p\t$gqu6NmrVlf!s+14Ds8N#srVl`oqu6Hkp\smco`"@Zmf)SPkPjQA +i;VR3f`'D"ci2&c`;[LM\c/r7XT#*rT`1DZPl?aCM#N&+J,X]lFT-4XC]7uGA,]m8?2e%,lJ.1A,^-?C]88OFT-OaJ,Y-#M#NJ7 +Pl@-NT`1hfXT#R*\Gj5A`;[pYci2Gng&Bh,i;Vg:kPjiImf)_To`"L`pAt$_rqcWkrqucorr1XOh>dKR +qu-NkrqcWirq??`rpp'XrpB^MroO.>rnm_/rmq(rrlb;\rk\TFrjDa/rhoairgs+RrfI,ra>_1r`T5$r_i_mr_NMfr_!/]r^d#YqaUQRr^?3Bh*V'-o0`LFr^H]Rr^ZrYr^m)^r_U6iqu6Qkrn[V1s8N#prVl]n +qYp5hn.@fBp;C]88OErL@`IK"fsM>iP7P5^sMTDkVbXo>X*\Gj8B`;[mXci2Gnf`'b,iVqp;l2L#Jmf)bU +oD\F^q>U6iqu6QkriuKSs7u]orqlZnqu6Hkq>U'do`"C[mf)POl2KcCiVq^5f`'D"ci2&c`;[ON\Gif5 +Xo>*pTDk>ZP5^I?M>i)*IK"NkErKtUC]7lD@K'X5>5hV&<;o_n:]=,g9E%Q_8cD6Z7f,XR7-m:s6L7)= +7/KFP7fGpW8cD?]9E%]c:]=2i<;otu>5hn.@fBp;C]88OErL@`IK"fsM>iP7P5^sMTDkVbXo>X*\Gj8B +`;[mXci2Gnf`'b,iVqp;l2L#Jmf)bUo)SFap%A=[rqcWkrr)`nh>c=2rr2fnrqcWirqQKcrq$-YrpKdO +roj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQrb2:>ra5Y1r`K/"r_i_l +r_EGdr_!/]r^d#XqaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9##ra#M1raGe>rbMLPrcS3d +rdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pYrq69crqZQirr)`nZ2]CT +q>^Hnqu-NjrqZQgrq69^rp]pTrp0RIro="9rnRM(rmLekrl>#UrkAB>rilC&rh07\rg<\Hrepc1rdXon +rcS3ZrbVRIraGe5ra#M*r`/qqr_WShr_3;`r^m)[r^QcRr^?rbMLPrcS3drdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LN +rp]pY!;-Bcp&=acq>U6irVQTMs5!_SrqlZnqYp9hp\sgao)A+Wm/H8KkPjH>hYu7.e,I\mbPoEY^](hD +Yl:^&VZ*4eRJrELNW+_4Jc:#qG5cL\D>n5JAH$!9>lIn*l2L&Kn,DnWo`"Uaq>U6irVQT!s+14Gs8N#prVlZmq#:$eo`"F\n,D\Ql2KlF +iVq^5gA]S#ci2,e_u@FM])Jr5X8]!qTDk8XPQ$R@L]2l(HiA3fEW0hSB`;QA@/aF1=oMG#;uTSl:B!rd +9)_B\8,c!T7K,^G6c)1_6i0:N7K,dU8,c'Y9)_K_:B"&g;Z9\q=oM_+@/a^9B`;lJEW1.\HiATqL]3;4 +PQ%!LTDk_eXT#I'])KGC_u@jYci2DmgA]q-iVr$>l2L&Kn,DkXoE"UVrqHEfrqcWmqu5FOh>d9KrqcWh +rqHE`rpg!Vrp0RJroX4dp-S=;r^?WPr^QlWr^m)^r_3;er_i_pr`K/'ra,S4rau.F +rbqdXrd"Kmre19.rfR2Grg`t`ri5t$rjVm?rkeZWrm(Mkrn7;,ro!eU6crS@M0s82cor;QQlq#:$eoD\:Zn,DVOkPjQAi;VO2fDa.rbl5]__#CtF[Jm?.W;`LiRf8QN +O8aq6KDp?!G5cO]DuOGLAH#s8>lIn*=8l+s;#X5h9E%Q_8cD3V7K,^G6cVOb6M3_C7/fXP7fH!Y9)_K_ +:B")h;Z9bs=oM\*?iFU8B`;rLF8g@^If=ruL]3A6Pl@-NU&LthY5Yj.])KMEaSsE_d/MYrg]$.1jSnBB +lMg8Onc&.Zp\t!fqYU3irNZBRs7u]lrVl`oqYp9hp\sd`nc&"VlMfuGjSn*:h#>q)d/M8gaSs!S]Df5; +Y5YC!U&LM[Pl?aCL]2r*If=NiErL"VB`;QA?iF=0=oMM%;Z9Ml:B!oc9)_E]7f,XR7.N^U6M3_C7/fXP +7fH!Y9)_K_:B")h;Z9bs=oM\*?iFU8B`;rLF8g@^If=ruL]3A6Pl@-NU&LthY5Yj.])KMEaSsE_d/MYr +g]$.1jSnBBlMg8OnGr.]oCMtUrqZQiqu$Hlh>c=2rr)iorql]jrqQKdrpp'XrpKdLroO.=rndY.rmh"p +rlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'XrbVRFraPk6r`T5%r`&knr_EGdr^m)[r^ZrWr^HfS +njC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ra5Y6ral(FrbqdWrd4Wpre192rf[8Irh'1dri?%( +rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??crqZQjrqucoZ2]CTq>^HmrqucmrqZQgrq??^rp]pT +roj@Cro3q6rn@A%rm:Yfrl+lOrj_s5ri?$prh'1Vrf[8@re19#rd4Wcrc%jQral(roj@LrpTpY!V5g\pAXgcq>U9jr;QZNs5!_SrVl`o +qu6Ejp\sjbnc&"VmJc>Kjo49=h>Z(+eGdbmao96X^&GM?Z2Ua%U]-kaPl?aCMuJ>-If=ZmErKtUCAqcC +@/aI2=T2>";Z9Ml:&[fb8cD9[8,bsV7.3L]6L@,16iKLQ7K,gV8H)3[9E%Zb;#XAlmg&Bh,ir8*>kl0uKn,DkVp&=^bq>U9jr;QZ" +s+14Gs8Murr;QTmq>U-fp&=L\n,D_Rkl0]Cir7d5f`'D"cMkrb`;[IL\,NZ3WW&[lT)OuRO8b(:K)U5u +HN%saDZ4DMAH$!9?2dt*mg&Bh,ir8*>kl0uKmf;kYnaZVO +rqHEfrql]mrr([Qh>dKQrqucmrqQKdrq69\rpTjRroj@Cro*k3rn.5!rltG`rkn`JrjDa/rhoairg`tO +rf6u7rdauqrce?\rbVRJraPk6r`oG(r`/qpr_WSgr_*5]r^ZrWr^HfSog?G[l9b/2r^?`Sr^QlWr^d#] +r_Orh9=hric=/rk/6JrlG)`rmUkurnRM3roO.C +rpB^Rrpg!\rqHEerql]mrr',%JcGQGrr)iorql]irq??arpg!VrpB^KroO.Are^W)rd=]hrc%jQrb;@@ra5Y0r`B)!r_`Ykr_Orh9=hric=/rk/6JrlG)`rmUku +rnRM3roO.CrpB^R!:^*[nc&4\p\ssequ6NmrS@M3s8N#srVl`oqYp6gpAX^`nG_hSli-&Gj8Rs8gA]\& +dJh>g`r5hh,@/ag_IRbPoogec+;%hu;[8k5O]Gmf)_To`"O_p\t$gqu6QkrjVoYs8;orrr2lqr;QQlp\smco`"@Z +mJcGNk5OE?hu;@/f)F(rbPoN\_>_"EZi70-V#HtbRJr5hP$;uTVm +:B!oc8c)$W7fGgK6f:<160UZ66/=m)6i0:K7fGpW8cDB^:B")h;uTer>5hh,@/ag_IRbPoogec+;%hu;[8k5O]GmJu_WnF6GLrq69brqcWkrr)`nj8\';rr2oq +rquclrqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5ZrkJHBrj)O*rhBC_rg3VFreg]/rdFcjrcA'Urb;@C +ra>_1r`T5#r_relr_EGcr^m)Zr^QlUnjDG(qa'@0r^$KLj?iN,r^HfUr^ZrZr_*5cr_NMkr`/r#r`oG1 +ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWk +rr)`n\,V$Zr;Zcqrr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl+lOrj_s5riQ0orgj%Trf@&9 +re:?"rcnE`rb_XKral(:r`oG*r`/qrr_NMgr_*5^r^ZrWr^HBFj$NW/k!8o3i'R*(r^HfUr^ZrZr_*5c +r_NMkr`/r#r`oG1ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fYrm:Yprn7;.ro3q=rp0RN +!:U$YnG`%Yp&=^bqYpBkrVQTSs5i/,I/\?hErKnSB`;N@?iF:/=T2;!;>sAj9`@Z`8cD3V7JK7+6JXp*6K(9+6iKOO +7fH!Y9E%Wa:]=8k<;p#!>Q/"/A,^-?D#SJSGQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gnf`'e- +ir8'=li-;NnG`%Yp&=^bqYpBkrVQT's+14Js8N#srVl`oqYp6gpAX[_nG_hSli-#Fir7j7f`'A!ci2#b +_u@FM[f3Q2XT"mlS,S`QNrFn7KDp8tGQ)X^D#S,IA,]j7>Q.b(<;obo:]=&e9)_E]7f,XL6et)b5i"d% +6iKOO7fH!Y9E%Wa:]=8k<;p#!>Q/"/A,^-?D#SJSGQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gn +f`'e-ir8'=li-8On,`%Jrq$-^rqHEgrql]nqu5XUi;`fUrqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(t +rm1Sbrkn`Lrj;[.ri5sjrgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NK +j$N`2f0B=%!C9$36MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[ +WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg/Ln,DnWp&=^bqYpBkr;6K&s+14Js8N#sr;QTmqYp6gp&=O] +n,D\QlMflDiVq^5f)F.tci2#b_u@CL[/R9.WrA[jRf8QNN;eS2JGsloFoH@ZC]7rF@fB^5>5hV&;Z9Ml +:B!oc9)_B\7fGjU7/0.06N0:&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^d +JGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg,MmfDnGrpp']rqHEgrql]mqu5XUi;`fU +rqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm1S`rk\TIrj2U,ri#ggrgEbLrepc0rdauorcS3ZrbDFE +raGe3r`T5%r_i_kr_5hh, +@K'j;CAr2OFoH^dJGt<&MuJq>RJriXW;`t!Zi7Z;_Z%RSci2Dmf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBk +r;6K&s+14Js8N#sr;QTmqYp6gp&=O]n,DYPl2K`Bi;VR3f)F+sci1r`_>_.IZi7-,W;`FgRJrELMuJG0 +JGsloFoH@ZCAqiE@K'R3=oMM%;Z9Jk:&[fb8cD6Z7K,^J6fp`46.A1!60:N,6iKLQ7K,gV8cDB^:&[ug +;Z9bs>5hh,@K'j;CAr2OFoH^dJGt<&MuJq>RJriXW;`t!Zi7Z;_Z%RSci2Dmf)FM)i;Vd9l2L#LmfDnG +rpp']rqHEgrql]mqu5XUi;`fUrqucmrqcWgrq69\rpTjProsFBro!e2rmq(srm(M^rk\THrj2U,rhoae +rg<\Jreg].rdXolrcA'Wrb2:Ara>_1r`T5$r_i_kr_";#X5h9`@W_8H)*X7K,^M6g6r:6-V[j +5lO(36Mj.L7/fXS7fGpW8cDE_:B")hlJ.1AH$6@DuOhWG5d!jKDp]+OoC^HSc5McXT#L(]DfVF +`W"-]dJhYph#?41ir80@li-APnc&1[pAXpfqu6NjrjVoYs8;orrr2ipqu6HkpAX^`nc&"Vli-,Iir7j7 +h#>h&d/M;h`W![P]Df)7XT#*rSc4uTOoC19KDpB"G5cO]DuODKAH$!9>lIk)lJ.1AH$6@DuOhWG5d!jKDp]+OoC^HSc5Mc +XT#L(]DfVF`W"-]dJhYph#?41ir80@lN$ASn*g8Grq-3`rqcWkrquZmj8\';rr2oprqcWirq??_rp]pT +rp0RIro3q6rnIG%rm:Yhrl"fNrk&07riH*qrg`tRrfI,8re(3!rcS3[rb_XIrac"9r`oG)r`/qor_EGd +r^m)[r^QlUr^?NKlpCS8bs:tfr^#d8qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4Irc.p[rdOiu +reUQ8rg*PRrh]UpriuI7rkSNOrltGirm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZm\,V$Zr;Zcqrqucl +rqZQerq$-YrpKdOroj@@rndY/rm^qorltG\rkJHEriuI(rh]Uarg*PFreUQ+rdOihrc.pSrb)4@ra>_1 +r`K/"r_WShr_3;_r^d#Xr^HfSpd=C7qa&(ar^#d8qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4I +rc.p[rdOiureUQ8rg*PRrh]UpriuI7rkSNOrltGirm^r%rnm_7roj@H!:BmUmf)_To`"R`q>U9jr;6KR +s5n/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_U5k@8'6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7 +B)ZZHEW1+[If=ruM#NJ7Q2[U9jr;6K& +s+14Js8N#sr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/eGdhobl5NZ^](hDYl:[%V#Hn`QMusEM#N&+If=Kh +EW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@66FfAD6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7 +B)ZZHEW1+[If=ruM#NJ7Q2[cNs8N#srVl`oqYpn/HA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:B")h +<;oqt>5hn.A,^*>D>nPSFoHggK)UQ)O8bFDS,T2^WrB7%\c0>B_u@jYci2Dmg]$+0ir80@l2^5QmdC)D +rq-3`rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Serkn`Lrji$4ri5sm +rgNhOrf@&6rdk&srcS3[rb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZ +r_3;cr_WSmr`9#$ra5Y6ral(Grc.p[rdFctreLK6rfmDNrhKImrilC4rkABLrlb;ermUl$rndY5roj@H +rpKdTrq$-^rqZQjrqucorr0D,Jc>cNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ6fp_G5itE46i0:N +7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFoHggK)UQ)O8bCCRf9)]WrB7%\c0>B_u@jYci2Dmg]$(/ +iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Se +rkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5] +k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKImrilC4rkABKrlb;e +rmUl$rndY5roj@HrpKdTrq$-^rqZQjrqucorr0D,Jc>cNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ +6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFT-[eJc:H(O8bCCRf9)]WrB7%\c0>B +_Z%aXci2Dmg]$(/iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RI +ro*k5rnIG$rm1SerkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[ +r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKIm +rilC4rkABKrlb;ermUl$rndY5roj@HrpKdTrq$-^rqZQjrqucorr0D,Jc>cNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm +:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFT-[eJc:H(O8bCC +Rf9)]WrB7%\c0>B_Z%aXci2Dmg]$(/iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWi +rq??_rp]pTrp0RIro3q6rnIG$rm1SerkeZJrji$4ri5smrgWnPrf@&6rdk&rrcJ-Yrb_XHraPk6r`T5% +r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y7rau.Hrc.pZrd=]r +reLK6rg!JPrhKImrilC4rkABKrlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr0D,Jc>cNs8N#s +rVl`oqYpn/H +@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-A,^*>D>nPS +FT-[eJc:H(O8bFDS,T2^WrB7%\c0>B_Z%aXci2Dmg]$+0ir80@l2^5QmdC)Drq-3`rqZQjrqucorr1sX +j8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$rm1Serkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[ +rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y7 +rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4rkABLrlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrquco +rr0D,Jc>cNs8N#srVl`oqYpn/HA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:B")h<;oqt +>5hn.A,^*>D>nPSFoHggK)UQ)O8bFDS,T2^WrB7%\c0>B_u@jYci2Dmg]$+0ir80@l2^5QmdC)Drq-3` +rqZQjrqucorr1sXi;`fUrquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHDrilC%rhTO`rg*PE +reUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rp'LNrp]pZ +rq??erql]mqu4))JcGZJrr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrjr*5ri5snrg`tR +rf@&7re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rosLO!UfCT +nG`(ZpAXmequ6Njro=%:s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1eGdhobl5Q[^](hDYl:^&V>d%b +QN!!FM#N&+If=NiErKtUB)Z<>?iF:/=8l5!;#X5h9`@W_8H)*X7/K@66Mj'n5k[JB60:N56i0:N7fGpW +8cDE_:B")hQ/"/A,^*>DZ4\UG5csiK)UT*OT(UGSc5JbX8]@&])KJD`;\![d/MPoh#?41ir80@ +li-APnc&1[pAXpfqu6NjrjVoYs8;orrr2ipqu6HkpAX^`nc&"Vli-,Iir7j7h#>h&d/M8g`;[ON])Jr5 +X8\spSc4rSOT((8KDp?!G5cO]DZ48IA,]j7>Q._'Q/"/A,^*>DZ4\UG5csiK)UT*OT(UGSc5JbX8]@&])KJD`;\![d/MPoh#?41 +ir80@lN$ASn*g8Grq-3`rqcWkrquZmj8\';rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM&rm:Yhrl+lP +rk&07riH*rrgj%TrfR29re(3"rc\9]rbqdKrac"9r`oG)r`/qor_EGdr^m)[r^QlUr^?NKksGA8bs;(i +r^#[5qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4KrcA'^rdXp"reUQ9rg3VTrhf[rriuI7rkSNP +rltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWkrquZm\,V$Zr;ZcqrqucmrqcWfrq-3[rpTjProj@@rnm_1 +rm^qorltG]rkSNFriuI(rhf[crg3VHreUQ+rdXojrc8!Vrb)4@ra>_1r`K/"r_WShr_3;_r^d#Xr^HfS +pd=:4r^"Lgr^#[5qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4KrcA'^rdXp"reUQ9rg3VTrhf[r +riuI7rkSNPrltGirm^r&rnm_7roj@I!:KsWn,DkVo`"R`qYpBkr;6KRs5n(df.Pk`W!^Q]`,8:Y5Y?uT)P,VP5^@lIn*!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@/aa:B`;rLFT-OaJ,Y-#MZ/e< +R/W]VVuEgtZi7W:_#D=PcMl8kf)FJ(hu;[8l2L&Kn,DkVo`"UaqYpBkr;6K&s+14Js8N#sr;QTmqYp6g +p&=L\n,DYPl2K`Bi;VO2f)F+scMkf^_>_+HZi7-,VuE:eR/W9JMZ/;.J,X]lF8g+WB`;QA@/aF1=oMJ$ +;Z9Jk:&[ca8H)-Y7K,^M6fUMV5i>!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@/aa:B`;rLFT-OaJ,Y-# +MZ/eRJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg/Ln,DkVo`"UaqYpBk +r;6K&s+14Js8N#sr;QTmqYp6gp&=L\n,D\QlMflDi;VR3f)F+scMki__>_.I[/R6-W;`FgRJrELMuJG0 +J,X`mFT-4XCAqiE@K'R3=oMJ$;Z9Ml:B!lb8cD9[7fGjU7/K@36Mj'u5lO(-6N0@O7/fXS7fGsX8cD?] +:B")h;Z9_r=oM_+@K'j;CAr/NFT-RbJ,Y0$MuJq>RJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg,M +mfDnGrpg![rqHEgrql]mqu5XUi;`fUrqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(trm1Sbrkn`Lrj;[. +ri5sjrgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NKj$N`2f0B=%!C9$3 +6MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XU +ci2Dmf)FP*iVqp;lMg/Ln,DnWp&=^bqYpBkr;6K&s+14Js8N#sr;QTmqYp6gp&=O]n,D\QlMflDiVq^5 +f)F.tci2#b_u@CL[/R9.WrA[jRf8QNN;eS2JGsloFoH@ZC]7rF@fB^5>5hV&;Z9Ml:B!oc9)_B\7fGjU +7/0.06N0:&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[ +WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg,MmfDnGrpp']rqHEgrql]mqu5XUi;`fUrr)iorqcWgrq??_ +rp]pSrp0RFro3q7rn.5!rm1Sbrkn`MrjMg2riH*lrgWnQrf6u7re(2trce?^rbVRIraYq7r`fA(r`&ko +r_NMer_!/]r^QcRpd*pT)P)UOT(.:K`6H"H2_maD>n5J +AH$!9>lIn*<;oep:]=)f9)_EW7fGgQ6et*+60:H362a./6N0@L7/07N8cDB^:&[rf;Z9Yp=oM\*@/a^9 +C&VuKF8gF`If>$"MZ/_:Qi$"MZ/_:Qi_2r`];$r_remr_EGcr^luWr^QlTog@Y(r^#d6r^$BIj?i`2qaCK +jo46t*e,IVkaSs*V]`,>i&)I/\?hE;j\QC&VT@?iF=0=8l5!;>sDk:&[fb +8H)-Y7fGjU7.ip]6L$o16iKLQ7K,dU8,c'Y9E%Zb;#X>k<;otu>lJ+0@fC*@D#SDQGQ*!hJGtE)NrG7A +SGo5]VuEn![Jmi<_u@aVc2Q2kfDaS)iVqslIh( +k<;otu>lJ+0@fC*@D#SDQGQ*!h +JGtE)NrG7ASGo5]VuEn![Jmi<_u@aVc2Q2kfDaS)iVqsdKQ +rqucmrqQKerq??^rp]pTroj@Cro*k4rn.5"rm(Mbrl"fLrjMg1ri5smrgj%RrfI,;re(3!rd"K_rbh^N +raYq8ra#M*r`/qrr_WShr_3;^r^ZiTr^HfSpd;b^l9b85r^?`SqaUQTr^d#^r_EGhr_resr`K/*ra>_8 +rbMLNrc.p_rdOj!repc;rg!JRrhKImrilC2rk8rilC%rhKI`rg!JErepc. +rdOilrc.pTrbMLCra>_2r`K/"r_remr_EGdr^d#YqaUQRr^?NKVaC/Gr^?`SqaUQTr^d#^r_EGhr_res +r`K/*ra>_8rbMLNrc.p_rdOj!repc;rg!JRrhKImrilC2rk8U0gpAXX^nG_kTkl0]Cir7g6gA]Y%d/M5f`W!XO\Gif5X8\sp +TDk2VP5^L@K`6K#HiA*cE;j\QAc?0dOpZMqE6^])4Ob5Tceec+8$ +hYuO6k5OTDmf)_To)A@^p\t!fqu6NmrNZBRs7u]orVl`oqu6Ejq#:!do)A.Xmf)GLjo49=hYu7.ec*qp +bPoK[^](bBZMpp(V>d+dQi<0INrF_2J,XfoF8g.XD#S#F@fBa6=oMM%<;o_n:B!rd8cD9[8,c!W7K,^G +6a/oM6iKLQ7K,dU8,c'Y8cDE_:B")h<;oqt=oMe-@fBsdOpZMqE6 +^])4Ob5Tceec+8$hYuO6k5OTDmf)\UncA=Prq??crqZQjrqucoh>c=2qu-NlrqcWhrqHE`rpg!Vrp'LG +roF(:rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK*rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGc +r_!/]r^QcRr^?^?jrquclrqQKe +rq$-ZrpTjOroa:Aro!e2rn%.rrlkA_rkSNFrjDa.ri#girgNhNrf@&6re(3!rc\9]rbqdLrac"8r`oG* +r`B(sr_WShr_*5_r^m)YqaLKPnjBrSogAUEr^H]Rr^m)]r_*5cr_WSlr`B)%r`oG0rac"ArbqdWrc\9i +rdt-)rf@&CrgNh[rhoaurjDa:rkSNSrlkAgrn%/(ro!e:roj@HrpTjV!:p6_oD\L`q>U6fr;QZNs5!_S +rr2lqr;QQlq#:$eo`"F\n,DYPkl0`Di;VO2g&BCucMkuc_>_.I\,NW2WrAgnSGnlSOoC7;L&QT$H2_pb +E;jVOB)Z9=?N+1.=T27u;>sAj9`@]a9)D-X7efCH6cVOb6MNqC7/KIQ8,c-[9E%Wa:]=5j;uTnu>5hk- +@fC!=CAr2OFoH[cJ,Y-#MZ/b;QN!ERV#ICnYl;-2]`,bHb5TZbdJhhuh>Z@3k5OTDli-APo)A:\p\t!f +qYpElrVlf$s+14Gs8N#srVl`oqYp9hp\sgao)A+Wli-,Ik5O</J,X`mFT-7YCAqiE@fB^5>Q.b(;uTYn:]=&e9E%Q\8,c!Q7/0-[6MNqC7/KIQ8,c-[9E%Wa +:]=5j;uTnu>5hk-@fC!=CAr2OFoH[cJ,Y-#MZ/b;QN!ERV#ICnYl;-2]`,bHb5TZbdJhhuh>Z@3k5OTD +li-APnc8:_o^r.WrqZQirqucorr1aRh>dKRqu-NjrqQKerq-3\rpTjQrosFFro*k5rn@A#rm1Serkn`M +rjr*5ri?$qrh'1Xrfd>@reLK(rd4Wfrc.pSrb2:Ara>_1r`T5#r_relr_EGdr_!/\r^ZrWqaLKPnjCYg +p-SF>qaCEPr^QlWr^d#\r_*5cr_NMkr`/r#ra#M2rac"Arb_XSrc\9frdk'(rf-o@rgEbXrhf[rrilC5 +rkABLrlb;ermUl#rn[S4roa:Frp9XQrpp'\rqHEfrqcWmqu3l#JcGQGrr2fnrqcWhrqHEarpp'Wrp9XK +roa:>rndY.rmUkmrlb;YrkJHDrilC&rhf[ergEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMg +r_3;`r^d#Yr^QcRr^?U0gp&=R^nG_kTli-,Ij8S!9h#>n(df.Pka8X!U^AbP>Yl:^&T`1J\R/W3HMuJJ1J,XcnFoH@Z +D#S,I@K'X5?2dt*_Z%UTcMl8kf)FJ(hu;[8kl0lHmf)_T +oD\F^q#:*gqYpHjriuKSs7u]orqlZnqYp?iF@1=T2>";Z9Ml:B!rd9)_E]8H)*U7K,^G6d%gh6i0:N +7JfRR8H)3[9)_N`:&[ug;Z9_r=T2V*?iFL5B`;fHE;k"ZHN&EnLAm,1OT(XHSc5;]X8]@&[Jmo>_Z%UT +cMl8kf)FJ(hu;[8kl0lHmf)_To)SFap%A=ZrqZQirr)`nh>c=2rr2fnrqcWirqQKdrq-3[rpTjProsFC +ro!e3rn%/!rm1Sdrl+lOrj_s6riZ6rrh'1Zrf[8?re^W)rd=]irc.pTrbDFCraGe5r`T5%r`/qpr_NMf +r_*5_r^coVr^QcRr^?NKcpIXspd=pHr^H]Rr^ZrYr^m)^r_^Hnqu-NjrqZQgrq??`rpg!Vrp0RJroF(:rn[S*rm^qnrlY5ZrkJHBrj2U,rhTOcrgWnMrf-o6rdauq +rcnE^rbh^Mrac":ra5Y-r`B)!r_`Yjr_U6irVQTMs5!_SrqlZnqu6Hkq>U*eo`"F\nG_hSlMfoEj8Rs8gA]\&dJh>g +`rlIn*sAj:&[ca8cD9[8,GdT +7K,^D6et*-6h<\E7/fXP7fGpW8H)3[9E%Zb:]=5j;Z9_r=T2S)@/a^9B)Z]IE;jqXI/\WpKDpi/OT(LD +T)PJ`VuEn![/RZ9_>_IRbPoogec+;%hu;X7jo4QEm/HMRo)A=]pAXmeqYpBkrVQT!s+14Gs8N#prVl]n +qYphu;@/f)F(rbPoN\_>_%F[JmB/VuEFiT)OuROT(4@/aF1=oMJ$;Z9Pm:]=)f9)_E]8H)-V7fGjU7.3M!6LR;@7/fXP7fGpW8H)3[9E%Zb:]=5j;Z9_r +=T2S)@/a^9B)Z]IE;jqXI/\WpKDpi/OT(LDT)PJ`VuEn![/RZ9_>_IRbPoogec+;%hu;X7jo4QEm/HMR +o)A:^p&Xm\rqZQirql]nqu5FOgAh0Orr)iorql]krqHEcrq-3ZrpKdProa:Aro!e3rn.5"rm1Scrl"fM +rji$7riH*rrh07ZrfmDCreUQ+rdXolrcJ-XrbMLGraYq8ra#M,r`9"sqb[8er_3;`qapZTr^QcRr^>+# +r'U?Lr^H]Rr^ZrZqb$i]r_<8dr`&ktr`];+ra>_8rb)4GrbqdXrcnElre19,rf@&CrgNhZrhf[rrj2U6 +rkABMrlY5drm^r#rn[S3roF(Arp9XPrp]pZrq69brqcWkrqucorr0)#JcGHDrr2oqrqucmrqcWgrq??` +rp]pTrp9XIroF(:rn[S+rm^qnrlP/XrkABBrj2U*rhf[frgNhNrf@&7re(3"rcnEarbqdOrb)4?ra>_2 +r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPb_8rb)4GrbqdX +rcnElre19,rf@&CrgNhZrhf[rrj2U6rkABMrlY5drm^r#rn[S3roF(Arp9XPrp]pZrq-9c!Vc?fqYpBk +r;QZorn@D(s8N#sr;QTmqYp9hpAX^`o)A+WmJc>Kjo49=hYu7.f)F%qbl5]__#CtF[JmB/WW&[lSc4uT +P5^C=LAlc'I/\BiF8g(VCAqlF@fBa6>lIk)sAj:&@T_9)_BY8,c!T7INY56hEeE7/fXP7fGpT +8Gc$Y9E%Zb:]=5j<;oqt=T2S)?iFO6BDuZFDZ4_VGQ*!hJc:E'MuJn=R/WZUU].7lYPts/]DfVFaSsB^ +d/MVqgA]t.ir8*>kl0uKnG`"Xo`"R`q#:-hqu6NjriZ9Ps7?9irr2ipqu6Hkq#:!do`"F\n,D_Rkl0]C +ir7g6gA]\&d/M8gaSs!S]Df5;YPtO#U]-h`Qi<0IMuJJ1Jc:&rGlDd`DZ4DMBDuB>?iF=0=T2A#<;obo +:]=)c9E%Q_8GbpV7f,XC7.3M37/fXP7fGpT8Gc$Y9E%Zb:]=5j<;oqt=T2S)?iFO6BDuZFDZ4_VGQ*!h +Jc:E'MuJn=R/WZUU].7lYPts/]DfVFaSsB^d/MVqgA]t.ir8*>kl0uKnG`"Xo`"Oap]:0brqcWkrquZm +gAfe)rr2oqrquclrqQKdrq69]rp]pUrosFFroF(:rnRM*rmC_jrlY5Wrk8U0gp\sganc&"Vli-/JkPjH>hu;F1ec+"rcMki__>_.I[JmH1Xo>*pT`1J\ +P5^L@MuJA.JGsrqFoHF\DuOJMB)Z9=?iF=0>5hS%<;obo;#X8i:B!ra9DD*U8(L-17RmAIpdtHXqb6l^ +r_WSkr`&ktr`];+ra5Y6rau.DrbqdVrcS3frdXp"repc:rf[8Nrh'1briQ1)rjDa=rkeZSrm(Mjrmh#' +rndY5roa:Frp0RPrpp'\rqHEerqZQjrqucoqu3buJcG?Arr2oqrqucmrqZQgrqHEarpg!Vrp0RJroa:> +rnm_1rmh"rrm(M_rk\TIrjDa1riQ0prh07\rf[8@repc.rdauqrcS3\rbqdMrau.=ra5Y0r`];%r`&ko +r_WSir_EGdqb-]Uqa].*r^Z`Tr_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&A +rg`t[rhKIpriuI1rk8rosFJrpTjWrq-3arqHKh!VuQjqu6NmrVQTJs4@;M +rqlZnr;QQlq#:$eo`"F\n,DbSli-,Ij8S!9h>Z%*eGdenao96X^](eC[/R9.W;`RkT)P&TP5^L@L]2r* +J,X]lFoHC[D>n8KB)Z6X/d:&%B\8cD947fZ'\84`_Ope1T\r_E>dr_`Ymr`9#" +r`K/)ra,S4rau.Drb_XSrcS3brdXp"reLK5rf[8Hrgs+`ri#h"rj;[8rkJHNrlP/crmUkurn[S3ro="A +rp'LNrpTjWrq-3arqZQiqu$Hlqu3buJcG?Arr2fnrquclrqQKerq-3\rpTjSrp0RIro="9rn[S*rm^qn +rlP/XrkJHCrj;[.ri#gkrgs+Trf[8@reLK*rdXolrcS3[rb_XKrau._(G[f3Q2XT#*rT`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\Q +C&VZB@fBa6?2e%,=T2>"<;oep;#=&c:&[ic9(GRB8G,OS9)M5hh,?iFO6 +AH$U6fr;QYns+14>s82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7gA]\&dJhAha8WpS]Df85hY'5hh,?iFO6AH$#Rrk/6>rilC&rhf[frgWnQrfI,ra>_3 +ra#M+r`K/$r`&kpqb[/cr_E>boh>-RnkB$W!)EGeqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![ +rd4Wnrdb!(repc;rg*PQrh07fri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQi +rql]nqu3PoJcG6>rr2fnrql]krqZQfrq69]rp]pSrp0RHroF(:rn[S,rmh"prlkA^rkSNGrjVm2ri?$q +rh07[rg*PFrf$i4rdaurrd4Wdrc.pUrbDFEraYq8ra,S0r`T5&r`B(ur_iViqbR2dqb?`Wpe10Or_<8b +qbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07fri?%&rjVm=rkSNR +rlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQi!;cfoqu6Qkrm^tts8N#prVl`oqu6Hkp\smco`"@Z +mf)VQl2KiEir7g6gA]_'dJhGjb5T9W^Ab_CZi70-WrAdmTDk>ZPQ$XBMuJG0K)U5uGlDjbEW0kTCAqlF +AH$';?iF@1>5h\(sDh:]=,O:&@]b:B45h;#X>h;Z9YphYu7.fDa1scMkuc_Z%:K +])K&8YPtR$U]-nbS,SWNO8b(:L&Q]'If=TkFoHC[DZ4DMBDuH@@fBa6?2e%,=oMJ$j;#=&f +:?G:J:B"&d;#X>h;Z9YpBre^W-rdaur +rcnEbrc%jSrbVRHral(;ra>_3r`oG*r`K/$r`/qsr_reoqbc0Gr_WYnr)3Mmr`&ksr`B)$r`T5*ra#M2 +raGe:rb)4Hrbh^SrcS3crdFcrre:?.rf@&Brg*PUrhKIiriZ7+rjMg?rk\TQrltGhrmUl"rn[S3roO.C +rp'LOrp]pWrq69arqHEgrql]mrr)`nW;hGKnGiLequ-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+ +rmUknrltG]rkeZKrjMg3riZ6trhBCarg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5& +r`B)!r`&kqr_iVjh,+)JqbmDlr`&ksr`B)$r`T5*ra#M2raGe:rb)4Hrbh^SrcS3crdFcrre:?.rf@&B +rg*PUrhKIiriZ7+rjMg?rk\TQrltGhrmUl"rn[S3roO.Crp'LOrp]pWrq69arqHEgrqc]n!W;lprVQTD +s3^lGrqlZnr;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+W;`OjT)P/W +Pl?dDN;eY4Jc:/uI/\5h\(=T2D$2raYq@rbDFMrbqdWrc\9grdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAf +rm^r"rndY4ro3q@rp'LLrpTjWrq-3arqQKgrql]mqu-NnV>l,HmJm1bqu-Nlrql]jrqQKerq-3[rpTjQ +rp'LHro3q8rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbMrfI,.r`oG+r`T5&r`B)"qc3Vpku7R\qc3Vrr`B)$r`T5(r`oG.qd9>2raYq@rbDFMrbqdWrc\9g +rdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4ro3q@rp'LLrpTjWrq-3arqQKg +rql]m!<)iorr1=FcN!nCqu-NlrqcWirqQKbrpp'XrpKdOrosFDro="8rnIG(rmUkmrlY5ZrkSNFrjVm2 +riH*trh9=^rgEbLrfI,5hb*>lJ%.?iFI4@K'j;B)ZHBC]85NE;k"ZGlE$gJ,Y*"LAm/2O8b@BRJrcVU&M"iXT#I' +\,O#=_#D=Pb5T`de,Itug]$+0ir8'=l2L#Jmf)_ToD\C]q#:*gqYU3irVQSjs+148s8N#prVl`oqYplIt,>5h\%=T2Cd5hb*>lJ%.?iFI4@K'j;B)ZHB +C]85NE;k"ZGlE$gJ,Y*"LAm/2O8b@BRJrcVU&M"iXT#I'\,O#=_#D=Pb5T`de,Itug]$+0ir8'=l2L#J +mf)_ToD\C]q#:*gqYU0jr;llqqu5"CcN!nCqu-NlrqcWirqQKcrq-3\rp]pSrp0RGroF(;rndY.rmq(q +rlkA_rkeZKrk&09rilC(rhTOergs+Trfd>Brf$i3rdt-"rd=]jrcA'ZrbqdQrbDFGral(>raPk7qd95+ +r`oG,r`\Phr`];*rEKA.>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_ +V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3irVQSjs+148s8N#p +rVl`oqYp@fBd4?i+..>lIt,>3T2h>5hb'>lJ%.?i+71@fBm:Ac?BB +CAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@ +li->OnG`"XoD\F^q#:*gqYU0jr;llqqu5"CbQ%A9rql]krqZQfrq??`rp]pUrpKdNroa:Aro!e3rn@A$ +rmC_jrlG)WrkJHErjMg2riQ0trhBCargNhQrfI,=repc/rdk&urd4WhrcS3[rc%jTrbVRKrb;@Eral(= +raPk8ra5Y4oj@K#pg=#.ra,Y6!F]F9@fBm:Ac??AC&VoID#SAPE;jkVFoHXbHiANoK)UH&MuJb9OT(UG +S,T&ZUAh+jXo>U)[f3o<^])1NaSsKadJhYpgA]n,i;Vg:kl0lHmf)\SnG`(Zp&=^bq>U6iqtU,^s+145 +s7lQlqu6Hkq>U-fpAX^`nG_nUmf)MNkPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQ +OT(7=MuJD/Jc:/uHiA9hFoHC[E;jeTD#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?iFL5@fBm:Ac??A +C&VoID#SAPE;jkVFoHXbHiANoK)UH&MuJb9OT(UGS,T&ZUAh+jXo>U)[f3o<^])1NaSsKadJhYpgA]n, +i;Vg:kl0lHmf)\SnG`(Zp&=^bq>U6iqtg6lrVaq>bQ%S@qu-Nlrql]krqQKdrq69^rpg!Vrp0RJroa:? +rnm_1rmq(trm1SfrlG)VrkABCrjMg1riH*trhBC`rgWnPrf[8Are^W0re(3#rdFclrc\9_rc8!Wrbh^P +rbDFGqe,n?rakk7raPY2qdT>1rac(A!G5s@BDuWECAr)LDZ4VSErL4\G5cgeI/\ZqKDpW)M>iS8P5^aG +S,T&ZUAh+jX8]@&[f3l;^Ac%La8X<^ci2Dmf)FJ(hu;X7kPj`Fli-APnc&.Zp&=^bq#:-hqu6NmrVQSd +s+145s8N#prVl`oqu6Hkq#:!dp&=R^nc&"Vli-/JkPjK?hu;F1f)F.tci2/faSs*V^Ab_C[f3N1XT#0t +UAgb`S,S]PP5^OAM>i;0KDpE#IK"QlG5cU_ErL%WDZ4MPCAqoDBDuNBAb]d7@eaC/@eaI4Ac?<=BDuWE +CAr)LDZ4VSErL4\G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh+jX8]@&[f3l;^Ac%La8X<^ci2Dmf)FJ( +hu;X7kPj`Fli-APnc&.Zp&=^bq#:-hqu6NmrVc]rrr1+@bQ%S@qu-Nlrql]krqQKerq??`rpp'WrpKdO +roj@Bro3q7rn@A&rmLemrlb;]rkSNHrk&09riuI*rhf[irh'1Zrg*PHrf@&:re^W,rdk&urd4Wirc\9^ +rc7mSrb_XNrbMLJrb;7BratV1qe#h?rb2@I!GZBKC]8/LD>S8NEW1%YG5cacHiANoJc:<$M>iJ5O8b=A +QiZQN!'HO8b(:M>i/,Jc:/uHiAnANC]8)JC&;QBB('=.B)ZHBC&VlH +C]8/LD>S8NEW1%YG5cacHiANoJc:<$M>iJ5O8b=AQi#`rm:Ymrn7;+rnm_6roO.Crp0RNrp]pWrq$-^rqHEfrqcWkrquZlqu35f +JcFp5rr2]krqucmrqcWhrqHEbrq-3[rp]pSrp0RIroO.#VrkJHErjMg3riZ7# +rhf[frgs+Zrg!JGrf@&:re^W/rdk'!rdOinrd+QgrcJ-[rc.pVqeuIOk&(!5rbq[Qrc.pYrcJ-ard"Ki +rdOirrdk''reUQ3rf@&Arg!JQrgs+^rhf[oriZ7+rjVm=rkJHMrl>#`rm:Ymrn7;+rnm_6roO.Crp0RN +rp]pWrq$-^rqHEfrqcWkrquZlrVcisrlb>bs7lTjrVl`oqYpn(e,I\mbl5]_`;[ON]Df>>ZMq',XT#*rU]-nbS,ScRPl?dDNW+k8LAll*K)U<"If=`oHN&0gG5cX` +FT-@;EW1"ZF9-K*rcS3`rcnEgrd=]ordb!"re19*repc9rfI,Drg3VRrh'1brhf[rric=,rj_s>rkJHN +rlG)_rm1Smrmq)(rndY4roO.BrosFLrpTjVrq$-^rq??drqZQiqu$Hlq#6ocJcFp5q#:0hrquclrqZQg +rq??`rq$-ZrpTjRrosFFroO.;rndY0rmq(trm1SfrlG)WrkJHErj_s5ric=&rhf[irh'1Zrg3VKrfI,= +repc1re19&rdausrd=]krcnEcrcS3^rc?n8rcA'\rcS3`rcnEgrd=]ordb!"re19*repc9rfI,Drg3VR +rh'1brhf[rric=,rj_s>rkJHNrlG)_rm1Smrmq)(rndY4roO.BrosFLrpTjVrq$-^rq??drqZQiqu$Hl +qYgNprlb>\s8N#prVl`oqu6Hkq>U-fpAX^`o)A.Xn,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG +[f3W4YPtX&W;`UlT`1M]Rf8QNP5^OANW+h7M#N),K)U9!JGt#sI/\HkH2`'`FmjGIFoHUcGl`29rd+Qk +rdFcrrdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOkriH+&rj2U4rk8rj2U-riH*trhTOdrgj%WrfmDFrf@&IrcnEfrd+QkrdFcrrdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOkriH+&rj2U4 +rk8riuI+riQ0srhKIc +rgs+Yrg<\KrfR2@rf-o8re^W/re19'rdalqpjW*gpjE'hpjW3l!.autre(3(reCE/repc8rf@&@rfd>K +rgNhXrh07drhf[sric=+rj_s=rkABJrl+lXrm(MirmLf!rnRM1ro!e:roa:HrpBUOrpp'\rqHEerqZQi +rql]mrr)`nQN)O9hZ*TSqu-Nlrql]krqZQgrqHEarposTrp9XMroa:Aro!e5rnIG*rmLemrm(Marl+lQ +rkABDrj_s4ric='rhf[irh07^rgWnSrfd>Drf@&KrgNhXrh07drhf[sric=+rj_s=rkABJrl+lXrm(MirmLf!rnRM1ro!e:roa:H +rpBUOrpp'\rqHEerqZQirql]mrr)`nqZ"\;_Z0W7qu-NlrqlThrqZQgrq69_rpp'XrpKdQrosFFroF(: +rndY0rmq(trm:YhrlP/[rk\TJrk&0rf$i6reUQ.re:?) +on*0oqgeZson*0r!/1H-L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\bVZ*RoXo>R([/RN5]DfPD_>_LS +b5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6NmrVQS[s+14,s8N#prVl`oqtp6h +q>U0gp&=U_o)A.Xmf)VQl2KlFjSn*:hYu=0f)F.td/M;hao9?[_>_1J]Df8=!VZ*=hTDkD\ +R/WENPl?jFOT(:>N;e_6M#N/.L&QbuK)U>uJGt,mK)UH&L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\b +VZ*RoXo>R([/RN5]DfPD_>_LSb5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6Nm +rVQTjs2k;Xs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUli-/JkPjK?i;VX5g&BV&eGdhocMl&e`W!dS +^](nF\Gio8Yl:g)XT#-sV#I%dTDkA[Rf8WPPl?mGOT(=?NrG":MuJV/M#N2/LAQ](LAlu'M#N83MZJ`o +rf$i:rf@&?rfd>Hrg*PPrg`t[rh07drhoasriZ7)rjDa8rk/6FrkeZRrlkAerm:Yormq)%rnm_6ro3q? +rosFJrpTjUrpg![rq69arqQKgrqcWkrquZlqu2o]JcFU,rr2]krqucmrqcWirqQKdrq69_rpg!WrpTjP +rosFFro3q8rnm_.rn%/!rm:YirlkA\rkn`Mrk/6?rjDa0riZ7%rhoakrh07_rg`tVrg*PJrfd>Crf@&= +rf$i7regK,reLK-qh>$(reL9)reg]5rf$i:rf@&?rfd>Hrg*PPrg`t[rh07drhoasriZ7)rjDa8rk/6F +rkeZRrlkAerm:Yormq)%rnm_6ro3q?rosFJrpTjUrpg![rq69arqQKgrqcWkrquZlqu6HlaoB$Rrr2]k +qtpBhrqQKerq??`rposTrp9XMroa:Bro*k7rn[S-rmq(trm1SgrlP/[rk\TKrk8_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\pAXgcq"speqtU-erfdA5s4IAN +rqQHhqu6Hkq#:$epAX^`o)%nTm/H>MkPjTBiVqd7h>Z.-f)F.tci22gao9?[_>_4K^&GSA[f3T3Yl:d( +X8]!qV#I(eT`1P^SGnrUR/WENPl?mGP5^R*O8G%_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\pAXgcq"speqtU-erqHH7s1JC/ +rqlZnr;QTmqYphu;I2g&BV&e,I_nc2Poc`r> +[/RB1YPt['WrAsrV>d7eT`1P^SGnuVRJrTQQi<roa:FrpB^Qrp]pXrq-3_rqHEerqZQi +rql]mrr)NhPQ-46f`1jJqu-Nlrql]krqZQgrqHEbrq-3\rp]pTrpB^Lroj@Dro3q7rn[S,rn%.urm:Yh +rlb;\rkn`NrkABDrj_s7rj)O,riQ1"ri#gmrhK@`rgs+ZrgNhSrg<\Org*>EpltZ@rg*PMrg<\QrgNhV +rgiqZrhKIhri#grriQ1'rj)O1rj_s=rkABIrl"fUrlb;crm:Ynrmq)%rn[S3ro3q>roa:FrpB^Qrp]pX +rq-3_rqHEerqZQirql]mrr)Nhp]&A8\c;[.qu-NlqtpBhrqZQgrq??arq-3[rp]pUrp0RKroj@Bro3q7 +rndY.rn%.urmLelrltG`rl+lQrkSNIrjr*U6iqtpU0gpAXaao`"C[ +nG_nUli-2Kkl0ZBir7j7hYu7.fDa7udf.Slc2Pf``W!^Q_#D(I])K2<[/RU6iqtpMkl0`Djo46d:ZU\gkdV>d=lVZE]nri,mtriQ1&ric=+rj)O2rj_s=rkABHrk\TPrl4rZrm(Mh +rm:Yprn%/&rn[S2ro*k#Vrk\TLrkABCrjVm7rj)O-ric=( +riH+"ri,mqrhfRhrhT"XqkX4frhf[mri,mtriQ1&ric=+rj)O2rj_s=rkABHrk\TPrl4rZrm(Mhrm:Yp +rn%/&rn[S2ro*krjMg6rj2U0 +qlp(&riPsrri5amql9FlriH1'!NrU&Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb* +h>Z=2ir8$Z.-g&BP$e,I_ncMl&eb5TE[`;[UP^](nF]Df>>[f3]6Zi79- +Yl:g)Xn\srWq`RjWq`XoXo>L#Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb*h>Z=2 +ir8$$g]$%+i;Vd9jSnBBl2L#GmecMQoD\C]p\Xa_qYpBhr;QZire1<& +s31NZ1.f`'J$eGdhoci25hbPoZ`aSs0X +`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfJB^&GbF^])%J_>_@O`;[aTaSs<\bPofdci2;jeGe%u +f`'Y)h>?.0j8S-=kl0iGlhg,InG`%Yo`"U^q"speqtpU0gp&=U_ +oD\:ZnG_nUmJcJOlMg#Hk5OH@ir7m8hYu:/gA]e)ec+(tdJhMlcMl&eb5TN^aSs3Y`W!gT_Z%CK_#D+5 +^AbnE^];1O_86,frl"fTrl4rYrlP/^rlkAdrm:YlrmUksrn7;)rnIG/ro!e8roF(@roj@Hrp0RNrpTjU +rpg!Zrq-3_qtU0drqcWkqu$Hlp&9XEJcEsop&=shqu$HjrqcNfrqQKcrq-3]rpg!WrpTjRrp9XLroj@D +roF(rknWOrl+cS +rlP/^rlb;crm(Mirm1SkrmUktrn%/&rn[S1qr%J6roF(ArosFIrpB^QqsaUUrq$-^rq??crqZHfrqlTj +rr)NhjoU0gp\smcp&=U_nc&%W +n,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0gA]e)f`'G#eGdnqdJhMfci25ec2PrUbPTN_c25f`ci2;jdJhSn +e,Insf`'S'gA]n,h>?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[p&=[ap\sseq>:$fqtU-brnmats/5ni +rqlZnr;6BjqYU*fp\smcp&"@[nc&%Wn,DbSm/H;Ll2KiEjo4??ir7m8hu;I2h#?(-g&BY'fDF+teGdqr +dehGkd-8mUd/22jdK.eErmUbormh#"rn.5'rnIG-rn[S2ro*k9roF(?roX4Erp0RMqsOIQrpg!Yrq$-^ +rq??crqZHfrqlTjrr)EeJcGWIJcEXfp&=jerquZjrqcNfrqHEcrq60[rpg!WrpTjSrp9XLrosFEroO.? +ro3q8rnm_2rnRM-rn7;'rn%%trm^qrrmL\krm9oUrm:PirmLepqpbVqrn%/%rn7;*rnRM/rnm_6ro3q< +roO.ArosFJrp9OMrp]pWrpp'[rq69arqHEfqtg?")g[Ekqg\'A$h>?+/i;VX5iVqj9jSn9?k5OTD +l2KuIm/HDOmf)\PnG`%Vo_A1[q>:$fqtprp'LKrp9OMqsaUUrq#pXqtU0d +qtgrp'LKrp9OMqsaUUrq#pXqtU0dqtgkPOKBlMg,K +m/-5MnG_nUnG_tWoDA1WpAXgcq>:$fqtpjSn34ipYk!ir8!;jSn9U0dp\sm`p&=U\oD%kQnG_nUnGD\L +mdKQ:$fqtpU0dp\smW +p&"CDoCqkXo^qhLqtC$`qtU'aqtg*bq#(-im/DS9eGk+"RK)jWqu-Nlqu$6drqc<`rqQBbrq>pUqt0%B +p%7qMqtC$`qtU'aqtg*bq#(-im/FNpao?qlo`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU` +qtU*^rUp/@s3(Fns,d9XrqQHhrV6U0[p\X[Hp%A%Op\Xa_q=XU`qtU*^rUp/ns2k:ls60LX +rpTg\r;6B^qUG<@qX+.YqtU*XrV6ACs1JA_s+LFOrql]`rV6 %APLeod +EI +52 0 0 52 0 340 cm +BI +/Width 156 +/Height 156 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkP +JcC<$JcDkPJcC<$JcDkPJcDhOf)>^Lrdk*Qs+13gs6Ta7r;ci^rdk*fs+14's7QBUrUTmKqtL$^r9XCQ +rdk+)s+14-s8N#^rUp*]qptTEqYL*do).kQqu20HhuA9-kl:GWn,<%Zqtos\eG0+@mJ?hZq#'UZq#5jE +kl656o`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU`qtU*^rUp/@s7cPEs7cQmrpTgbr:p0g +qYU*`q"sgYpA=O^o\K-;oE"UVrq5jUrqH3_rqZHfq"ssdo)8ReJcGKEJcG]Kqu60brquZjq"jm`rqQ9_ +qt9jYqt'gXqsiM3rp^!Zr:9jYp%87Vq"O[\rqZ?crqlTjp&4R_Jc>`MLB%/Mo)8RcqtpBhqt^6dqtL*` +qt9s\qt'UQqsaURrp]gRq!RV:$fqtpkPOKBlMg,Km/-5MnG_nUnG_tWoDA1WpAXgcq>:$f +qtp?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[p&=[a +p\sseq>:$fqtU-brhodrs82fmrVl`lqu6Hhq>U-fpAXaaoD\=XnG_kTmJcDMkl0cEjSn09i;VU4h>Z+, +f`'J$e,Iepci2;jcMl)fbPoZ`ao9U0gpAXaa +o`"F\nc&"VmJcGNlMfuGk5OKAiVqd7hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y`;[[R_Z%CK_#(n8 +^&,SA^];7L_Z%IP`W!mVaSs<\b5TWac2Q)hdJhVoec+5#g&Bb*hYuF3iVqsZ1.f`'J$ +eGdhoci25hbPoZ`aSs0X`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfGC]`Gg[rkABHrkSNLrkn`R +rl+lXrlP/_rm(Mhrm:Yormq)$rnIG.qr%J6roF(BrosFJqsO@Nrq$-]rqHZ=2i;Vd9jo4EAl2L#Jmf)\Snc&+Yo`"O_pAXjdq>U6iqtpZ.-g&BM#e,IbocMl#dao9>[f3]6Zi790 +YPtd*Y5>="X6HY`X8AsuXT>Q+rilC*riuI/rjDa7rj_s>rk8#Vrk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRh +rhT"XqkX4frh][n!N2jpWW&stXo>L&YPtg+ZMq92\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2 +iVqsU0gpAXaao`"C[nG_nU +li-2Kkl0ZBir7j7hYu7.fDa7udf.Slc2Pf``W!^Q_#D(I])K2<[/R#VrkSNIrk&0?rjDa2ric=%ri5srrhTOfrh07_ +rgj%YrgNhSrgMkPjTBiVqd7h>Z.-f)F.tci22gao9?[_>_4K^&GSA[f3T3Yl:d(X8]!qV#I(eT`1P^ +SGnrUR/WENPl?mGP5^R*O8G%#\rltGgrmUktrn@A,ro!e7roF(Arp0RNqsXOTrq-3`rqHEeqtgCrf@&=rf$i7regK,reLK-qh>$(reL9)re^]6!K2m8N;ek:O8b7?PQ$jHQN!?PSGo/[ +T`1bdVuEdsY5Y[)[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhUnc&1[p&=[aq#:*g +qYpBkr;6Hirke]Ps8N#mrVl`oqu6Ejq#:$ep&=U_o)A.Xmf)SPl2KlFjo43;h>Z1.f)F.td/M;hao9?[ +_>_4K]`,A=Zi73.XT#3uVuEChTDkD\RJrQPQ2ZpFOT(:>MuJV5M>i8,L%p;hJbXlsK`Hl*LAm&/MZ/P5 +NrG+=OoCXFQiU9jr;6Hirke]Ps8N#prVl`oqu6Hkq>U0gp\sgao)%nTm/H>MkPjQAi;VX5g]#n* +df.VmcMkoa`W!^Q^AbbD\Gic4YPt['VZ*@iT`1P^S,SfSPQ$^DO8b.iG4NW,"O'Z2V94])KGC_>_FQaSsKad/MJm +g&Be+hu;R5jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr;QZlrke]Ss8N#prVl`oqu6Hkq>U-fpAX^`o)A.X +n,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4YPtX&W;`UlT`1M]Rf8QNP5^OANW+h7M#N), +K)U9!JGt#sI/\HkH2`'`FmjGIFoHUcGl`29rd+QkrdFcrrdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOk +riH+&rj2U4rk8riuI*ri?$p +rhKIbrg`tTrfmDDrf-o8reLK,rdt-"rdOiord"Kfrce6^rcJ-[qf2(Drc.gUrH&'^FT-F^GQ)jdH2`3j +IK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$Z2V94]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lH +m/HGPnG`%Yp&=[aq#:*dqu6NjrVlf;s3(HArqQHkr;QTmqYp9hp\sjbo`"C[nG_hSli-,Ijo46ia8X$V^](kE[f3T3Y5YI#VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qS +DuOY:D>S5MDZFbSE;jkVF8g:\GlE!fHiAKnJ,Y#uLAm#.MuJe:P5^aGSGo,ZT`1hfWW'("ZMq?4]DfSE +_u@^UcMl2idf.r!h#?41iVqsU6iqu6NjrVQT;s3(HArqlZnr;QTmqYp9h +p\smco`"F\n,DbSli-,IjSn0rnm_2rn%/!rm:YgrlG)V +rkJHDrjMg1riH*urhBC`rgWnPrf[8Are^W0re(3#rdFclrc\9_rc8!Wrbh^OrbDFHrb2:Crakt;raY2% +raYh9!+c1BAc?<@B`;`FCAr&KDZ4VSErL1[G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh.kXo>R([f3l; +^]).Ma8X<^d/MPofDaV*i;Va8k5OWEm/HJQnc&+Yp&=[ap\t!fqYpBerQG5as7lQlqu6Hkq>U-fpAX^` +nG_nUmf)MNkPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9h +FoHC[E;jeTD#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?N=L8@:B.EraYq=rb)4ErbMLLrbqdTrc.p[ +rcnEhrdXp!re19/rf6u>rg3VRrh'1ari#guriuI2rk&0Erl"fWrm(Mjrm^r$rnRM2roF(Brp'LNrpTjU +rq-3_rqHEfrqcWkq#/D9cN!nCqu-NlrqcWirqQKcrq-3\rp]pSrp0RGroF(;rndY.rmq(qrlkA_rkeZK +rk&09rilC(rhTOergs+Trfd>Brf$i3rdt-"rd=]jrcA'ZrbqdQrbDFGral(>raPk7qd95+r`oG,r`\Ph +r`];*rEKA.>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!. +]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3irVQTAs3^lGrqlZnr;QTmq>U0g +p\sjboD\7Yn,D\QlMflDir7j7g]#e'df.Pkao96X_#CtF\,NW2XT#0tT`1M]Rf8KLO8b+;LAli)J,Xfo +GQ)^`E;jbSD#S,IB)Z??@fBd7?iF@1>lIt)=oMOZ=8c5%=BPQ*r`fA,ra#M1raGe8rac"?rb2:Irbh^S +rcJ-`rd4Wore(3)rf$i;rf[8Lrgj%]ri#gtrilC2rk&0Frl"fXrm(Mkrn%/(rnm_7roF(Drp9XQrp]pY +rq69brqQKgrql]mqu-NndJqVorr2fnrqucmrqZQgrqHEarpg!Vrp9XLroj@@ro!e4rn.5"rm1Sfrl>#S +rk85he+?2J".@K'd9B`;cGDZ4SRF8g@^I/\ToJc:K)MuJh;Pl@*MT)PJ` +W;`t!ZMqB5^&GkI`r=3]ci2Gnf`'b,i;Va8kl0lHm/HJQo)A:\p\sseq>U9jr;6HlrmCbqs8N#prVl`o +qu6Hkp\smcp&=L\nG_nUlMfuGjo43;h#?"+e,I_nc2P]]_Z%:K[f3T3Y5YI;#X;l;Z'Gl;uTbqlJ%. +@/aU6AH$6@D#S>OE;k"ZH2`6kJGt9%M>iS8PQ$mITDkVbVZ*atZMq<3^AbtJ`W"-]d/MMng&Bh,i;Vj; +kl0lHn,DhUnc&4\pAXgcqYpBkr;QZlrm^tts8N#prVl]nqYp5h\(=8l8" +sJm;uTerQ/"/@fBp;B`;cGDZ4YTFoHXbIf=ot +K`6r0O8b@BRf8oXUAh1lY5Yd,]DfSE_Z%^Wc2Q,if`'Y)hu;[8k5OTDm/HGPnc&1[p&=^bq>U6iqu6Qk +rm^tts8N#prVl]nqYpYl:^&VZ*7fS,S`Q +OT(4@/aL3?2e"+=T2D$<;oem;#=&f:A[cY9__9O9`@`d:Adla:]!uf +;uTbq=8l>$=oM_+?iFI4A,^-?CAr/NErL1[HiAKnJGtB(MuJh;QN!BQT`1hfX8]@&\,O#=_#DCRbPolf +ec+8$h>Z@3jSn?Ali-;NnG`"Xp&=^bq>U6iqu6Qkrm^tts82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7 +gA]\&dJhAha8WpS]Df85hY'_IRbl6#hec+;%hu;X7jSnECm/-;OoD\F^p\t!fqYU3irRCkss8Mur +r;QTmq>U0gp\sjboD\7YmJcDMkl0WAiVq^5fDa;!ci2)d`;[ON\,N`5YPtI!U]-nbQN!'HNrFh5KDpB" +GlDjbEW0eRC&VcE@K'X5?2e"+=8l5!;uT\l:]=)f9__6K8FK(@8Gl$R9)_N`:&@`c;>sMn5P5^dHTDkVbVuEn!Zi7H5^])1Nb5T`de,ItuhYuI4j8S9AlMg2M +nG`%Yp&=^bq#:*gqu6NmrRCl!s8N#srVl`oqu6Ejq#:$eo`"C[n,DYPl2KlFiVqa6h#>k'df.Pk`rlIq+sDk:]=,g9`%KX8c)$/ +7KGtJr^Z`Tr_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&Arg`t[rhKIpriuI1 +rk8rosFJrpTjWrq-3arqQKgrql]mrr)`ngAfe)rr2oqrquclrqQKdrq69] +rp]pUrosFFroF(:rnRM*rmC_jrlY5Wrk8_2 +r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPcpR^uqaCEPqaUQTr^luZr_3;cqb[8kr`9#%r`oG1raYq?rbMLO +rcJ-ardXp#reUQ7rfmDNrh07friH+*rj_sArl"fYrm1Snrn7;,ro!e:roa:IrpKdTrq-3_rqHEgrql]m +rr)iqgAg"/rr2fnrql]krqZQerq-3\rp]pSrp'LEro="8rn@A&rmC_grl4rRrjr*:ric=!rhBC`rfmDD +rf$i/rdauqrcA'Yrbh^IraYq8r`oG*r`9"rr_`Yjr__9rau.Irc%jXrd=]pre(3/rfI,Drgs+`rhob!rj;[9rk\TRrlb;g +rmh#%rnm_7roO.Erp9XRrpp']rq??erqcWkrr)`nh>c=2rr2fnrql]krqZQdrq-3[rpKdOrosFCro*k5 +rn.5"rm1Scrl"fNrj_s5riQ0prh'1Zrf[8?re^W*rdFckrc8!UrbMLDraGe5r`];&r`&knr_NMgr_*5_ +r^m)Zr^QcRr^?*?h*V'-n3d1CqaLKRr^ZrZr_!/_r_EGgr_WSnr`B)&ra5Y6rac"DrbqdVrd"Kkrdk'* +rf6u@rgWnZrhKIprj)O5rkJHNrlP/crm^r"rndY5roF(Crp0ROrpg!Zrq69drqcWkrr)`nh>c=2rr2fn +rqcWirqQKcrq$-YrpKdOroj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQ +rb2:>ra5Y1r`K/"r_i_lr_EGdr_!/]r^d#XqaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9## +ra#M1raGe>rbMLPrcS3drdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pY +rq69crqZQirr)`nh>c=2rr2fnrqcWhrqHEarpp'Wrp9XKroa:>rndY.rmUkmrlb;YrkJHDrilC&rhf[e +rgEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMgr_3;`r^d#Yr^QcRr^?_9rb2:Jrc.p\rd4WqreLK4rfd>Lrh'1eriH+'rjr*Crkn`Yrm1Sm +rn@A-ro*k>rosFKrpTjWrq-3arqZQirr)`nh>c=2q#13grqQKerq$-ZrpTjProsFEro!e2rn7;!rm(Mc +rkeZJrjVm1ri,mmrg`tSrfR2;re:?$rd"KbrbqdOrau.c=2qu-NlrqcWhrqHE`rpg!Vrp'LGroF(: +rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK*rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGcr_!/] +r^QcRr^?c=2rr)iorql]jrqQKdrpp'X +rpKdLroO.=rndY.rmh"prlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'XrbVRFraPk6r`T5%r`&kn +r_EGdr^m)[r^ZrWr^HfSnjC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ra5Y6ral(FrbqdWrd4Wp +re192rf[8Irh'1dri?%(rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??crqZQjrqucoh>c=2rr)io +rql]jrqHEbrpg!VrpB^KroO.=rn[S+rm^qmrlP/Xrk8_2r`K/"r_i_lr_roj@KrpTjVrq69brqZQjrquco +h>c=2rr)iorql]irq??arpg!VrpB^KroO.Are^W)rd=]h +rc%jQrb;@@ra5Y0r`B)!r_`Ykr_cF5rr2oqrquclrqHEcrq-3ZrpB^NroX4?rnm_/rmq(rrlb;\rk\TErj2U-rhTObrgEbI +repc1rdauorcJ-XrbDFFra>_2r`];$r_remr_EGcr^luWr^QlTog@Y(r^#d6r^$BIj?i`2qaC_1r`T5#r_relr_EGcr^m)Zr^QlUnjDG(qa'@0r^$KL +j?iN,r^HfUr^ZrZr_*5cr_NMkr`/r#r`oG1ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fY +rm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_- +rmUkmrlG)VrkJH@riuI(rh07[rg*PDre^W,rd=]hrc8!Srb2:@ra5Y/r`K/!r_`Yjr_3;`r^m)YqaL9I +h*Tp_rBfI0pd>$LqaUQVr_*5ar_NMkr`&l!r`fA/raYq?rbVRSrce?hre(3+rf6uDrg`t\riH+(rjMg@ +rl"fWrm1Snrn.5-ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oprql]krqHEbrpp'Wrp9XLroF(; +rndY*rmUkmrlG)VrkAB=ric=$rh07ZrfmD@reCE&rd+Qdrc%jPrau.=ra,S-r`B(sr_WShr_*5_r^d#X +r^HfSpd=(.r^#.$!'pWO6/t<,6iKLQ7K,dU8H)3[9E%]c;#XAl=8lD&?N+F5BDu]GE;k"ZHN&HoLAm/2 +Pl@0OT`1tjYPtp.^Ac"KaSsNbe,IqthYuL5jSnHDm/HJQo)A=]p\t$gqu6Njro=%:s8N#sr;QTmqYp6g +p&=O]n,DYPl2K`Bi;VR3f)F+sci1r`_>_.IZi7-,W;`FgRJrELMuJG0JGsloFoH@ZCAqiE@K'R3=oMM% +;Z9Jk:&[fb8cD6Z7K,^J6fp`46.S:%5X><7k!J`.r^?`Sr^ZrZr_*5br_WSlr`B)&ra#M3ral(Drc%jZ +rd+QoreCE1rfd>Lrh'1griZ7,rk8_1r`T5$r_i_kr__1r`K/"r_WShr_3;_r^d#Xr^HfSpd=C7qa&Ilp-AUCksG87r^?`Sr^QlWr^m)_ +r_EGhr`/r"r`oG1rac"@rb_XSrcS3hrdt-*rfI,Frg`tari?%'rk&0Frl"f\rmC_prnIG0ro3q@rp'LN +rp]pZrq??erql]mqu5XUi;`fUrquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHDrilC%rhTO` +rg*PEreUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_ +r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rp'LN +rp]pZrq??erql]mqu5XUj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$rm1Serkn`Lrji$4ri5sm +rgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZ +r_3;dr_WSnr`9#%ra5Y7rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4rkABLrlb;ermUl$rnm_7roj@H +rpKdTrq-3`rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Serkn`Lrji$4 +ri5smrgNhOrf@&6rdk&srcS3[rb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQ +r^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.p[rdFctreLK6rfmDNrhKImrilC4rkABLrlb;ermUl$rndY5 +roj@HrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1SerkeZJ +rji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7 +qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKImrilC4rkABKrlb;ermUl$ +rndY5roj@HrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Se +rkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5] +k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKImrilC4rkABKrlb;e +rmUl$rndY5roj@HrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$ +rm1SerkeZJrji$4ri5smrgWnPrf@&6rdk&rrcJ-Yrb_XHraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4 +a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y7rau.Hrc.pZrd=]rreLK6rg!JPrhKImrilC4rkABK +rlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr1sXj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6 +rnIG$rm1Serkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlT +qa9L4a$B5]k!K&7qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y7rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4 +rkABLrlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr1sXi;`fUrquclrqZQerq$-YrpKdOroj@@ +rndY/rm^qorlkAZrkJHDrilC%rhTO`rg*PEreUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#X +r^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%& +rjr*Crkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjProj@@ +rnm_1rm^qorlkA[rkJHDrilC&rh]Ubrg*PFreUQ+rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#X +r^?WNk!Jr2bs:tfr^#[5r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^Urc\9irdt-*rfI,Grgj%b +ri?%&rjr*Drl"f[rm:YornRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjP +roj@@rnm_1rm^qorltG]rkSNFriuI(rhf[crg3VHreUQ+rdXojrc8!Vrb)4@ra>_1r`K/"r_WShr_3;_ +r^d#Xr^HfSpd=:4r^"doq*=pFk!Jr4r^?`Sr^QlWr^m)_r_EGhr`/r"r`oG1rac"@rbqdWrc\9jre(3+ +rfR2Hrgj%criH+(rk&0Frl+l]rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucmrqcWg +rq69\rpTjProsFBro!e2rmq(srm(M^rk\THrj2U,rhoaerg<\Jreg].rdXolrcA'Wrb2:Ara>_1r`T5$ +r_i_kr_RJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg/Ln,DkVo`"UaqYpBk +r;6KRs5rbMLPrcS3drdb!&rf$i@rgWn[ri5t$rj;[=rkeZUrm1Smrmq)*ro*k;rp'LL +rpTjWrq69brqcWkrquZmj8\';rr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_-rmUkmrlG)VrkJH@riuI( +rh07[rg*PDre^W,rd=]hrc8!Srb2:@ra5Y/r`K/!r_`Yjr_3;`r^m)YqaL9Ih*Tp_rBfI0pd>$LqaUQV +r_*5ar_NMkr`&l!r`fA/raYq?rbVRSrce?hre(3+rf6uDrg`t\riH+(rjMg@rl"fWrm1Snrn.5-ro3q= +rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oqrquclrqHEcrq-3ZrpB^NroX4?rnm_.rm^qorlY5ZrkSNC +rj)O*rhKIarg3VGreg].rdOilrcA'Urb2:Ara>_1r`T5"r_i_kr_Are^W)rd=]hrc%jQrb;@@ra5Y0r`B)!r_`Ykr_c=2rr)iorql]irqHEc +rpp'XrpKdLroO.rilC%rhKI`rg!JErepc.rdOilrc.pTrbMLCra>_2r`K/" +r_remr_EGdr^d#YqaUQRr^?NK^-_*Opd>$Kr^H]Rr^ZrYr_3;dr_WSmr`9##ra#M2raYqCrbh^Trd"Kl +re(3.rfI,Ergj%`ri5t%rjVm?rl"fXrm(Mmrn7;,ro*kc=2rr)io +rql]jrqQKdrpp'XrpKdLroO.=rndY.rmh"prlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'XrbVRF +raPk6r`T5%r`&knr_EGdr^m)[r^ZrWr^HfSnjC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ra5Y6 +ral(FrbqdWrd4Wpre192rf[8Irh'1dri?%(rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??crqZQj +rqucoh>c=2qu-NlrqcWhrqHE`rpg!Vrp'LGroF(:rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK* +rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGcr_!/]r^QcRr^?c=2rr2oqrquclrqQKerq-3\rpTjProj@Dro!e2rn7:urm(Mcrk\TIrjVm2ri5sn +rg`tSrfR2;re:?$rd"Kbrc%jOrau.=ra,S.r`K.ur_`Yjr_3;ar_!&Xr^QZNpd<(go0W4>pdG!Kr^Zr[ +r_*5ar_NMjr_reur`];-raPk=rbDFOrcS3crdXp#reg];rg*PRrhTOnrilC2rk/6HrlY5brmC_urn[S3 +roX4Drp0RPrpp'\rqHEfrqcWlrr)iqh>c=2rr2fnrqcWhrqHEarpp'Wrp9XKroa:>rndY.rmUkmrlb;Y +rkJHDrilC&rhf[ergEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMgr_3;`r^d#Yr^QcRr^?_9rb2:Jrc.p\rd4WqreLK4rfd>Lrh'1eriH+' +rjr*Crkn`Yrm1Smrn@A-ro*k>rosFKrpTjWrq-3arqZQirr)`nh>c=2rr2fnrqcWirqQKcrq$-YrpKdO +roj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQrb2:>ra5Y1r`K/"r_i_l +r_EGdr_!/]r^d#XqaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9##ra#M1raGe>rbMLPrcS3d +rdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pYrq69crqZQirr)`nh>c=2 +rr2fnrqcWirqQKdrq-3[rpTjProsFCro!e3rn%/!rm1Sdrl+lOrj_s6riZ6rrh'1Zrf[8?re^W)rd=]i +rc.pTrbDFCraGe5r`T5%r`/qpr_NMfr_*5_r^coVr^QcRr^?NKcpIXspd=pHr^H]Rr^ZrYr^m)^r_c=2rr2fnrql]krqZQerq-3\rp]pSrp'LEro="8rn@A&rmC_grl4rR +rjr*:ric=!rhBC`rfmDDrf$i/rdauqrcA'Yrbh^IraYq8r`oG*r`9"rr_`Yjr__9rau.Irc%jXrd=]pre(3/rfI,Drgs+` +rhob!rj;[9rk\TRrlb;grmh#%rnm_7roO.Erp9XRrpp']rq??erqcWkrr)`nh>c4/rr2oqrqucmrqcWg +rq??`rp]pTrp9XIroF(:rn[S+rm^qnrlP/XrkABBrj2U*rhf[frgNhNrf@&7re(3"rcnEarbqdOrb)4? +ra>_2r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPcpR^uqaCEPqaUQTr^luZr_3;cqb[8kr`9#%r`oG1raYq? +rbMLOrcJ-ardXp#reUQ7rfmDNrh07friH+*rj_sArl"fYrm1Snrn7;,ro!e:roa:IrpKdTrq-3_rqHEg +rql]mrr)iqgAfe)rr2oprql]krqQKdrq-3\rpTjRroj@Cro3q6rn@A&rm:YgrlG)Srk&0;ric=#rhKI` +rg3VIrepc1rdk&rrcnE`rbh^Mrb)4>ra5Y0r`K/#r`&kor_NMfqb-o\r^coVr^QcRmmQV3oL/UFr^H]R +r^ZiVqb$i\r_rbDFMrcA'_rd=]rreCE1rf[8Jrgj%`ri,n#rjDa;rkSNS +rlb;frmq)&rndY6roX4DrpB^Srpp'\rq??drqcWkrquZmgAfe)rr2oqrquclrqQKdrq69]rp]pUrosFF +roF(:rnRM*rmC_jrlY5Wrk8rnm_1rmh"rrm(M_rk\TIrjDa1riQ0prh07\ +rf[8@repc.rdauqrcS3\rbqdMrau.=ra5Y0r`];%r`&kor_WSir_EGdqb-]Uqa]4,!CfQX8,,[T9D_E[ +:B")h;>sPolJ+0@fC!=C&W&MErL4\I/\WpKDpf.O8b=ASGo/[U].CpZ2V01^&GnJ`r=9_dJh\q +h#?10iVr$>l2L#Jn,DnWo`"Uaq#:*gqu6NmrVQTJs4@;MrqlZnr;QQlq#:$eo`"F\n,DbSli-,Ij8S!9 +h>Z%*eGdenao96X^](eC[/R9.W;`RkT)P&TP5^L@L]2r*J,X]lFoHC[D>n8KB)Z6X/d:&%B\8cD947fZ'\84`_Ope1T\r_E>dr_`Ymr`9#"r`K/)ra,S4rau.Drb_XSrcS3brdXp"reLK5 +rf[8Hrgs+`ri#h"rj;[8rkJHNrlP/crmUkurn[S3ro="Arp'LNrpTjWrq-3arqZQiqu$Hlqu5=LeGoFE +rquclrqQKerq69^qsaUOrosFCro3q7rn@A&rmC_hrl>#Srk&0#R +rk/6>rilC&rhf[frgWnQrfI,ra>_3ra#M+r`K/$r`&kpqb[/cr_E>b +oh>-RnkB$W!)EGeqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07f +ri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQirql]nqu5+FeGoOIqu-Nlrql]k +rqHEcrq-3ZrpKdQrosFEro3q6rn@A'rmC_jrlY5WrkABCrj2U-ri5smrh'1Zrfd>Brepc0rdt,urcnEb +rc.pTrbDFFrac";ra5Y1r`];(r`9"ur`&kpqbd>hqbR2dk"Y_Jr_EMjr)!AiqbmDmr`/qur`T5)ra#M1 +raPk;rb)4Frbh^TrcS3brdOitre:?0rf@&BrgWnZrhKImriZ7,rjr*CrkeZWrltGirn%/'rndY6roX4E +rpB^Rrp]pZrq69brqcWkrqucoqu5+FeGoOIqu-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+rmUkn +rltG]rkeZKrjMg3riZ6trhBCarg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5&r`B)! +r`&kqr_iVjh,+)J!)i_mr_reqr`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZrd"Kkrdb!%re^W8rfd>I +rh'1brhf[trj)O3rkABJrl+l]rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??crqcWkrqucoqu5+FdJs4F +qu-Nlrql]jrqQKerq-3[rpTjQrp'LHro3q8rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbMrfI,< +reUQ)rdXoprc\9^rbqdRrbMLHraYq:qd9>.r`oG+r`T5&r`B)"qc3Vpku7R\qc*Vs!EN8#=8l>$=oMV( +>lJ%+?iFL5A,^0@CAr,MDuOhWG5cmgIf=otM#N>3OT(LDRJrfWUAh+jY5Ya+\Gj2@_>_IRbl5rfeGe," +hYuI4ir80@lMg/Ln,DnWo`"Uaq#:*gqu6NjrVlfDs3CZDrqlZnr;QQlq>U0go`"F\nG_kTli-/Jjo4<> +hu;C0fDa7uci2)d`W![P]Df;=Yl:a'W;`LiSc5&VPQ$[CN;eS2K)U9!HN&-fFoH@ZD>n>MBDuNBAc?-; +@/aO4?2e+.>Q.h*=o2>#=6Wcb=8Q)"=TMZ.r`];*r`oG.ra5Y4raGe;rau.BrbMLNrc%jZrcnEgrdXp" +reCE2rf@&BrgEbVrh9=iriH+'rjVm=rkSNPrlY5drmUkurnIG0ro3q=rosFJrpKdTrq$-]rqQKgrqcNi +rr)`ndJqMlrr2fnrquclrqZQgrq69_rpp'XrpB^NroX4@ro*k5rn@A&rm:YgrlG)UrkABDrj2U.riQ0q +rh9=_rg*PIrf@&;reLK)rdauqrd"Karc8!Vrb_XLrb2:Brac";ra>V1qd'2+r`fA*kun!hr`f>+!F/n/ +?2e4.@/aX7A,^'=B`;cGD>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R(Zi7T9^])+LaSsE_ +d/MVqg&Bk-iVqp;k5O]Gmf)_To)A7[p&=acq>U6fr;QZlrmCbhs7lQlqu6Hkq>U-fpAX^`nG_nUmf)MN +kPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9hFoHC[E;jeT +D#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?N=L8@:B.EraYq=rb)4ErbMLLrbqdTrc.p[rcnEhrdXp! +re19/rf6u>rg3VRrh'1ari#guriuI2rk&0Erl"fWrm(Mjrm^r$rnRM2roF(Brp'LNrpTjUrq-3_rqHEf +rqcWkq#/D9bQ%S@qu-Nlrql]krqQKdrq69^rpg!Vrp0RJroa:?rnm_1rmq(trm1SfrlG)VrkABCrjMg1 +riH*trhBC`rgWnPrf[8Are^W0re(3#rdFclrc\9_rc8!Wrbh^PrbDFGqe,n?rakk7raPY2qdT>1rac(A +!G5s@BDuWECAr)LDZ4VSErL4\G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh+jX8]@&[f3l;^Ac%La8X<^ +ci2Dmf)FJ(hu;X7kPj`Fli-APnc&.Zp&=^bq#:-hqu6NmrVQT;s3(HArqlZnr;QTmqYp9hp\smco`"F\ +n,DbSli-,IjSn0#VrkJHE +rjMg3riZ7#rhf[frgs+Zrg!JGrf@&:re^W/rdk'!rdOinrd+QgrcJ-[rc.pVqeuIOk&(!5rbhdUr,DXT +rcA'\rcnEfrd4WnrdXoureCE.repc:rf[8Grg`tZrh07fri,n"rj)O4rk&0Erkn`Urm(MirmLf!rnRM1 +ro*k^])1NaSsE_ci2Dmf)FJ(hYuI4jo4HBl2L)Ln,DkVoD\F^pAXjdq>U6fr;QZirlb>\s8N#prVl`o +qu6Hkq>U-fpAX^`o)A.Xn,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4YPtX&W;`UlT`1M] +Rf8QNP5^OANW+h7M#N),K)U9!JGt#sI/\HkH2`'`FmjGIFoHUcGl`29rd+QkrdFcrrdXp!re19,reg]7 +rf@&ArfmDNrgj%]rhTOkriH+&rj2U4rk8rf$i6reUQ. +re:?)on*0oqgeZson*0r!/1H-L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\bVZ*RoXo>R([/RN5]DfPD +_>_LSb5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6NmrVQT2s2+g8rqQHkr;QTm +qYpibl5T\_u@FM]`,G?[JmE0Y5YO%VuELk +T`1S_SGnuVQN!-JPQ$[CO8b1=N;eb7MYN#,L]3&*L&Qi+L\Q])M?&P8Mi7Rnrf6u=rfI,Crg!JKrgNhV +rh'1_rhTOkriH+%rilC0rj_s?rkJHLrl+l\rm(Mirm^qurn7;.ro*k9roa:Frp0RPrp]pWrq-3_rq??d +rqZQirql]mqu-Ek_Z.:Krr2]kqtpBhrqQKerq??`rposTrp9XMroa:Bro*k7rn[S-rmq(trm1SgrlP/[ +rk\TKrk8_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\ +pAXgcq"speqtU-erkJKGs82fmrVl`oqu6Hkq>U0gp\sjbo`"F\nG_kTmJcALkl0`Dir7j7h>Z+,fDa7u +d/M;hbPoN\_u@IN^AbbD\Gil7ZMq',Xo>@"W;`XmU\g_`T)P8ZRf8`SR/WHOQM?a?Pl$aFQN!6MQiNNT +R@4&Crg`tYqk3q`rh]Umri5t"ric=,rj;[7rjr*CrkSNOrl4r\rltGhrmUktrn7;,ro!e8roX4CrosFL +rpKdTrpp'\rq69brqQKgrqcWkrqucop&;`+\c;[.qu-NlqtpBhrqZQgrq??arq-3[rp]pUrp0RKroj@B +ro3q7rndY.rn%.urmLelrltG`rl+lQrkSNIrjr*U6iqtpZ+,fDa>"d/MAjcMkrba8X$V_>_7L^Ab_C\,Nf7ZMq*-YPt^(XT#:"WW&jq +VYd4hV!k)UV#I4iV?!LpVl0Nnri?%#riZ7(riuI.rjDa8rjr*CrkJHKrl"fUrlP/brm1Sjrmh#"rn7;, +rnm_6roO.Broj@IrpBUOrpp'\rq??crqQBerqlTjrr)`n[f<]6qu6Tnqu$HjrqcWirqQKerq69_rq$-Y +rpKdQrp'LHroa:Aro3q7rn[S-rn7;$rmUknrm(MerlY5[rl"fPrkJHFrk&0>rjMg6rj2U0qlp(&riPsr +ri5amql9FlriH1'!NrU&Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb*h>Z=2ir8$< +kPj`FlMg2Mn,DhUoD\C]p&=^bq#:*gqYpBhr;QZirjMj5s82fmrVl`lqu6Hkq>U0gpAXaao`"F\nc&"V +mf)POl2KiEjSn3=i;VU4h>Z(+f)F5!dJhMlci2,eao9$g]$%+i;Vd9jSnBBl2L#GmecMQoD\C]p\Xa_qYpBhr;QZi +rilF,s7QBjrVQNlqu6Hhq>U0gp&=U_oD\:ZnG_nUmJcJOlMg#Hk5OH@ir7m8hYu:/gA]e)ec+(tdJhMl +cMl&eb5TN^aSs3Y`W!gT_Z%CK_#D+5^AbnE^];1O_86,frl"fTrl4rYrlP/^rlkAdrm:YlrmUksrn7;) +rnIG/ro!e8roF(@roj@Hrp0RNrpTjUrpg!Zrq-3_qtU0drqcWkqu$Hlp&;2qWrMtqqu-NlqtpBhqt^6c +rq??arq$-[qsaUQrpB^Mroj@EroF( +rknWOrl"lWr5S`XrlY5`rltGfrm:YjrmC_ormq)#rn7;,rndP1ro="=roa:Frp'LMrpK[Qrpp'[rq69a +rqHEfqtg +rp'LKrp9OMqsaUUrq#pXqtU0dqtgroF(=p#>H!p#5u3!TW5>jSn9:$fqtpU0ap\XX\o_\7Zo)%t5nG_qXo)/(XoC_bTp%\:Y +q#:*aqYpBhr:U$]rdk(Ls+14Ks760drV6U0dp\smWp&"CDoCqkXo^qhLqtC$`qtU'aqtg*b +q#(-im/DS9!<7WMo`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU`qtU*^rUp/@s7cPEs60LX +rpTg\r;6B^qUG<@qX+.YqtU*XrV6ACs60K6s60LFrq63Lqr[bOqsaLRr9"!0s60K6s4RGFrosCPr9!nN +r:^'TrUTr=s4mX*s2=s(rm^lHrp'K6s2=qgs2=rOrp'K6s2=qgs+13$s/l %APLeod +EI +52 0 0 16 0 324 cm +BI +/Width 156 +/Height 48 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkP +JcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkP +JcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkP +JcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkP +JcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkP +JcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkP +J, +~> %APLeod +EI +188 0 0 52 68 272 cm +BI +/Width 564 +/Height 156 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFj3JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFj3JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcFj3JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFj3JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcFj3JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFj3JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcFj3JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFj3JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcFj3JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcFj3JcDhOf)>^Lrdk*%s+13$s2b5irdk+4s+13$s+142s4%%ks+143 +s+13gs6Ta7r;ci^rdk*:s+13$s5s+143s+14's7QBUrUTmK +qtL$^r9XCQrdk*Rs+13$s7QEbrosCPr9!nCr9XCQrfmG6s+134s7QBUrUTmKqs=7IrUTs_s+143s+14- +s8N#^rUp*]qptTEqYL*do).kQqu20HZi>UVJcGWIrr20\p&+L[eGB(>o).kQqu2r^JcC<$QiI'al2C;Q +p&!88qtos^m/?h\qu;6Ijo9o3kl:GWn,<%Zqtos\eG0+@mJ?hZq#'UZq#5jE]`3Q_K`D&Nqu6'_q#($d +o(pl3m/$_Yq#'UZq#6rdJcC<$T`=fdn,<%Zqtos\eG8J-rqlKgn,<._rr.KKkl656o`+gfo)8@]qtp9e +p%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU`qtU*^rUp/@s3(Fns,d9XrqQHhrV6U0[p\X[Hp%A%O +p\Xa_q=XU`qtU*^rUp/ns+13$s/c7trpp$_r;6BgqXs[`q""1Vp?)&@p@\1Wq"sm[qYpBer;6HirUp/@ +s7cPEs7cQmrpTgbr:p0gqYU*`q"sgYpA=O^o\K-;oE"UVrq5jUrqH3_rqZHfq"ssdo)8ReJcEpnJcCr6 +rr2Kerr)ioq"t'eqt^$^qtKdWqt9s\h=LO9rq5jUrqH3_rqZHfq"ssdo)8ReYQ'1RJcDqRrr2BbrquQg +rqcNfq"Xa\p%J:Urq,%`MLB%/Mo)8RcqtpBhqt^6dqtL*`qt9s\ +qt'UQqsaURrp]gRq!RV:$fqtp>mJ-,Hn,DhUn,)VLnc&.Wo`"O\pAXg`q#:*d +qYpBhr:U$]rk\Vcs+13as82fdrVl`lqu6Hhq>U0dp\sm`p&=U\oD%kQnG_nUnGD\LmdKQU6iqYpBhr:U$]re^Z3s8N#drVl`lqu6Heq"XR^o_\7Zo)%tVnGD\LmI0B0 +l1F<>lhKlHn,)VRnb_nVoDA1TpA"F[qYpBhr:9gcrdk+*s+13Hs8N#drVl`lqu6Hkq"sj]pAX^]oD\=X +nc&%Tn+c;=lgO*,lhKlHn,)VRnb_nVoDA1TpA"F[qYpBhr:9gcrk\Vcs+13ds8N#drVl`lqu6Heq"XR^ +o_\7Zo)%tVnGD\LmI0B0l0ms5mJcSOnG_tTo)A7Xo_A.Wq#:'cqYpBhr:9gcre^Z6s8N#grVl`oqtp6e +q=s^]p&=U_o)A1Yn,DhUn,)PPmJcJLli-2Hl1O9/kOds=kii$1qs+1Hrp9XOq!S.NrpTjVrposYrq6'\ +rqZ?crql]mp&4deJcF[.JcD\Krr2Kerqucmqtg3crqHroF(=p#>H! +p#5u3!TW5>jSn99pcpAX^]oDA(Wn,DhUn,DbSm/H>MlMg#EkPjW@jo4??j7VF#iUu40j8S-=jnn3>kPOKB +lMg,Km/-5MnG_nUnG_tWoDA1WpAXgcq>:$fqtpjSn34ipYk!ir8!;jSn9:$fqtps69Q7s0;Up +rVl`lqu6Heq#:!dp&=U_o)&"WnG_nUmf)SMli-/Jkl0cBjo4?U0gp\smcp&=U_nc&%Wn,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0 +gA]e)f`'G#eGdnqdJhMfci25ec2PrUbPTN_c25f`ci2;jdJhSne,Insf`'S'gA]n,h>?.0ir8!;kPj]E +l2L#JmJcPQn,DhUnc&1[p&=[ap\sseq>:$fqtU-brnma,s+14-s7lTgrVQKkqYpic2Poc +b5TN^`r!aS`;@I@_Z%IM`;[^U`r*jUao9H^bPocccMl2ici2>ke,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuI +mJcPNnG`"XoD\F^pAXgcq>:$fqtpU-fpAXaaoD\=XnG_kTmJcDM +kl0cEjSn09i;VU4h>Z+,f`'J$e,Iepci2;jcMl)fbPoZ`ao9ke,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"XoD\F^pAXgcq>:$fqtpi +c2Pocb5TN^`r!aS`;@I@_Z%IM`;[aQ`r=*Zb5TT`c2Q#fd/MAjdJhVof)F;#g&Bh,hYZ71j8S-=kPj`F +lMg2MmecMQo)A7[p&=[ap\t!cqYpBhr;QZfriQ4#s8N#mrV69eq>U0gpAXaao`"F\nc&"VmJcGNlMfuG +k5OKAiVqd7hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y`;[[R_Z%CK_#(n8^&,SA^];7L_Z%IP`W!mV +aSs<\b5TWac2Q)hdJhVoec+5#g&Bb*hYuF3iVqsU0gpAXaao`"F\nc&"VmJcGNlMfuGk5OKAiVqd7hYu:/gA]b(ec+(tdJhMlcMl&e +b5TN^aSs3Y`;[[R_Z%CK_#(n8^&,SA_#)"J_u@XS`r='Yao9H^bl5ldd/MGle,Insf`'S'g]$(/hu;U6 +jo4EAkPjcGli-;Nn,DkVo)A:\p&=[^q#:*aqtU-eroO02s+140s8N#mrV69eq>U0gpAXaao`"F\nc&"V +mJcGNlMfuGk5OKAiVqd7hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y`;[[R_Z%CK_#(n8^&,SA_#)"J +_u@XS`r='Yao9H^bl5ldd/MGle,Insf`'S'g]$(/hu;U6jo4EAkPjcGli-;Nn,DkVo)A:\p&=[^q#:*a +qtU-eriQ4)s7lTjrVl`lqu6Hkq"sgbo`"FYnG_nUmf)POlMg#HjSn09i;VR3g]#k)f)F1ud/MAjcMl#d +b5TK]`W!gT_u@LO_#D+J^AbhF]_f>?])0&5\Gj&9])K>@]E#VG]tOEZrkJHJrk\TOrl"fTrlG)\rlb;d +rm1Sjrm^qurn.5)rn[J0ro="=roj@Grp0ILqsaUVrq-3aqtU'brqlTjrr)WkK`?W'bl@J;qu-NlqtpBh +rqQBbrq-3\qsaURrpKdOrp'LHroF(Z=2i;Vd9jo4EAl2L#Jmf)\Snc&+Yo`"O_pAXjdq>U6iqtpU0gpAXaao`"F\nc&"Vmf)POl2KiEjSn3=i;VU4h>Z(+f)F5!dJhMlci2,eao9Z=2i;Vd9jo4EAl2L#Jmf)\Snc&+Yo`"O_pAXjdq>U6iqtp_@O`r='YbPoied/MGlec+2"f`'_+hu;R5 +j8S0>k5OWEli->On,DkVo)A:\p&=[aq#:*gqYpBhr;QZfrjMj5s8N#mrV69hq>U0gp\sjbo`"F\nG_kT +mJcDMkl0cEjSn0_7L^&GYC\Gir9[JmN3ZMq',Yl:g&XT#9b +WrB'rX8o@'Xf_T,ric=+rj2U3rjVm:rk&0CrkSNLrl"fUrlP/_rm(MjrmUkrrn7;*rn[S2ro3qrjMg6rj2U0ric=*riZ."ri>:`ri>ptriQ1( +ric=+rj2U3rjVm:rk&0CrkSNLrl"fUrlP/_rm(MjrmUkrrn7;*rn[S2ro3qrk8#V +rk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRhrhT"XqkX4frh][n!N2jpWW&stXo>L&YPtg+ZMq92 +\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqsZ+,fDa>"d/MAjcMkrba8X$V +_>_7L^Ab_C\,Nf7ZMq*-YPt^(XT#:"WW&jqVYd4hV!k)UV#I4iVZ*LmWW&stXo>L&YPtg+ZMq92\Gj)= +^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqsMkl0`Djo46d:ZU\gkdV>d@kVuE[pX8]7#Y5YX(Z2V'.[Jm]8])KGC +^])(K`;[dUao9Tbci2;jec+2"g&Bh,hu;U6jo4HBkl0oImJHAOo)A:\pAXgcq"speqtp_7L^Ab_C +\,Nc6Yl:j*Y5YL$WW&gpV#I+fU&L_aTDkGZSc5/VS+rHOS,8`TSc52\T)kRVrh07arhKIgrhoapri?%$ +ric=*rj;[6rjr*CrkJHKrl+lYrltGgrmC_orn%/'rndY3ro3q#VrkSNIrk&0?rjDa2ric=%ri5srrhTOfrh07_rgj%YrgNhSrgU0gp\sjbo`"F\nG_kT +m/H8KkPjTBiVqa6h>Z+,fDa;!d/M>ibl5Z^`;[RO^AbbD\c0#9ZMq',X8]-uW;`UlUAghbTDkD\SGnuV +RJrTKQMZsBPl?sCQN!9NRJrZSSGo)YTDkM_U].(gW;`dqX8]=%ZMq92\c05?^AbqI`;[gVbl5oed/MPo +f)FA%h>Z=2iVqsC#VZ*CjU&L_aT)P8ZRJrTQQN!-J +PQ$aEOQMW$OT(CCP6$l2rfmDJrg3VPrg`tYrh07arhTOjri?%#rilC-rjMg:rk8#SrkJHGrji$:rj)O-riQ1#rhf[jrh9=args+ZrgEbQ +rg*PJrfd>ErfH9'qiLf?rfd>Grg*PMrgEbUrgj%]rh9=erhf[qriQ1(rj)O3rji$ArkJHKrl>#\rltGg +rmUktrn@A,ro!e7roF(Arp0RNqsXOTrq-3`rqHEeqtgCrf@&=rf$i7regK,reLK-qh>$(reL9)re^]6!K2m8N;ek:O8b7?PQ$jHQN!?PSGo/[T`1bdVuEds +Y5Y[)[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hi +rg*S8s5*eTrqQHkr;QTmqYpibl5T\_u@FM +]`,G?[JmE0Y5YO%VuELkT`1S_SGnuVQN!-JPQ$[CO8b1=N;eb7MYN#,L]3&*L&Qi+L\Q])MZ/P5N;ek: +O8b7?PQ$jHQN!?PSGo/[T`1bdVuEdsY5Y[)[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#J +n,DhUnc&1[p&=[aq#:*gqYpBkr;6HirqcYGs+14Hs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUli-/J +kPjK?i;VX5g&BV&eGdhocMl&e`W!dS^](nF\Gio8Yl:g)XT#-sV#I%dTDkA[Rf8WPPl?mGOT(=?NrG": +MuJV/M#N2/LAQ](LAlu'M#N;2MuJ\7NrG+=OT(ICQ2[*KRf8iVTDkM_V#I:kXT#C%Yl;'0\Gj/?^])+L +`W"*\cMl2ieGe%ug&Bn.iVqj9kPj`Fli-APnG_tWo`"O_pAXjdq>U6iqu6NjrVQT2s2+g8rqQHkr;QTm +q>U0gp\sjbo`"F\nG_kTm/H8KkPjTBi;VR3g]#e'e,I_nc2Piaa8WpS^](nF[f3W4Yl:a'WW&gpU&L\` +Sc5&VQi<9LOoCIANrFt9MZ/J3LAQ]"KC=BdKDpQ)LAZf*M>iD3MuJb9O8b:@Q2[-LRJrcVTDkP`VuE[p +XT#I'[/RN5]`,YE_>_LSb5TZbd/MPof)FG'hYuI4jo4HBl2L&Kmf)_To)A7[p&=^bq#:*gqu6NjrVQS[ +s+14,s8N#mrVl`oqu6Ejq#:$ep&=U_o)A.Xmf)SPl2KlFjo43;h>Z1.f)F.td/M;hao9?[_>_4K]`,A= +Zi73.XT#3uVuEChTDkD\RJrQPQ2ZpFOT(:>MuJV5M>i8,L%p;hJbXlsL&6W(M>iD3MuJb9O8b:@Q2[-L +RJrcVTDkP`VuE[pXT#I'[/RN5]`,YE_>_LSb5TZbd/MPof)FG'hYuI4jo4HBl2L&Kmf)_To)A7[p&=^b +q#:*gqu6NjrVQTjs+13$s8)cprqQHkr;QTmq>U0gp\sjbo`"F\nG_kTm/H8KkPjTBi;VR3g]#e'e,I_n +c2Piaa8WpS^](nF[f3W4Yl:a'WW&gpU&L\`Sc5&VQi<9LOoCIANrFt9MZ/J3LAQ]"KC=BdKDpT%LAm&/ +MZ/P5NrG+=OoCXFQiU9jr;6Hirke]Ps8N#prVl`oqu6Hkq>U0gp\sgao)%nTm/H>MkPjQAi;VX5 +g]#n*df.VmcMkoa`W!^Q^AbbD\Gic4YPt['VZ*@iT`1P^S,SfSPQ$^DO8b.iG4NW,"O'Z2V94])KGC_>_FQaSsKa +d/MJmg&Be+hu;R5jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr;QZlrg*S8s5*eTrqlZnr;QTmqYpiaSs0X_>_1J]Df>>Z2Us+Xo>3sU]-qcT)P5YR/Wi8/K`6W'JGXikIf"QgI/\QhIf=ioJGt3#L&Qi+M>iG4NW,"O' +Z2V94])KGC_>_FQaSsKad/MJmg&Be+hu;R5jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr;QZlrqcYGs+14H +s8N#prVl`oqu6Hkq>U0gp\sgao)%nTm/H>MkPjQAi;VX5g]#n*df.VmcMkoa`W!^Q^AbbD\Gic4YPt[' +VZ*@iT`1P^S,SfSPQ$^DO8b.U6iqu6NmrVQT2s2G$;rqlZnr;QTmqYpZi70-XT#0tV#I%dSc5)WPl?jFO8b.rkSNMrlG)^rm:Ymrmq)% +rnm_6ro3q?rosFJrpTjVrpp'\rq69brqZQirqlTjrr)`nSH"0?iW&oVqu-Nlrql]krqZQfrq??`rpp'X +rpTjProsFFro3q8rnm_.rmq(srm:YgrlG)UrkJHGrjMg4ric=&ri#glrh07]rgNhNrf[8Arf-o7reUQ, +rdt-!rdausrd=]krd"KfpiZ%IpiZR\rd"Khrd=]nrdautrdt-&reUQ2rf-orkSNMrlG)^rm:Ymrmq)%rnm_6ro3q?rosFJrpTjVrpp'\rq69brqZQirqlTjrr)`n!<7WM +JcG]Krr2fnrqucmrqcWirqHEcrq-3\rp]pUrp0RJroa:?ro!e5rn7;%rmLemrlkA_rkeZLrk8<>rj2U- +riH*trhTOdrgj%WrfmDFrf@&IrcnEfrd+QkrdFcrrdXp! +re19,reg]7rf@&ArfmDNrgj%]rhTOkriH+&rj2U4rk8riuI*ri?$prhKIbrg`tTrfmDDrf-o8reLK,rdt-"rdOiord"Kfrce6^rcJ-[ +qf2(Drc.gUrH&'^FT-F^GQ)jdH2`3jIK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$Z2V94]DfSE +_u@^UbPolfeGe%ug]$(/i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*dqu6NjrVleds+142s8N#prVl`lqu6Hk +q#:!do`"I]nG_kTm/H;LkPjTBi;VR3g]#e'e,I_nbPoQ]_u@FM]Df>>Z2Up*X8\spU]-nbSGnoTPl?dD +NW+k8L]3#,K)U<"If=`oH2`'fGPcO^FT-=XEURlGEVjeRFT-F^GQ)jdH2`3jIK"crK)UK'L]352NW,%= +Pl@'LSGo/[UAh"gX8]:$Z2V94]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*d +qu6NjrVlcrs+13$rrE)urqlZnr;6BjqYp9hpAX^`oD\7Ymf)SPlMfuGjo43;h>Z1.f)F.td/M5fa8X!U +^](kE\Gic4Y5YL$V>d7hTDkA[R/W?LOT(7=MuJM2L&Q]'JGt#sI/\EjGlDpaFoHL^Er0kFE;jkSEr0tX +FoHUaGlE!fI/\QnJGt0"L&Ql,MuJ_8OT(LDR/WWTTDkSaV>dOpY5Y^*\Gj,>^]).Ma8X9]d/MPof)FG' +hYuI4jo4KClMg/Lmf)_ToD\F^pAXjdq>:'gr;6HlrlG,_s8N#mrVl`oqu6Hkq#:$ep&=U_nc&%WmJcGN +kl0]CiVqa6g]#n*df.VmcMkl``;[ON]Df83O8b=AQ2[ia8X$V^](kE[f3T3Y5YI#VZ*7f +T)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qSDuOY:D>S5MDu4MQEW1%YFT-OaH2`0iIf=ir +Jc:E'M#N>3O8b=AQ2[ia8X$V^](kE[f3T3Y5YI#VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qS +DuOY:D>S5MDu4MQEW1%YFT-OaH2`0iIf=irJc:E'M#N>3O8b=AQ2[bs8N#prVl`oqu6Hkq#:$e +pAX^`o)A+Wmf)POkl0ZBir7j7gA]\&df.VmbPoQ]_>_1J]Df/9Z2Up*VZ*@iTDk>ZQN!'HO8b(:M>i/, +Jc:/uHiAnANC]8)JC&;QBB('=.B)ZHBB`MlKC23``rbVRNqeuIRrcA'^rcnEhrdXou +re(3,rf$i;rf[8IrgWnZrhKIiriZ7)rj2U9rkABJrl>#]rm:Ymrmq)&rnm_7roF(Brp'LNrpTjWrq-3` +rqHEerqcWkrqucoqu35fJcFp5rr2fnrqucmrqcWhrqHEcrq-3\rpTjSrp0RIroF(#SrkABDrj2U/riZ6trhKIbrgWnQrf[8Arepc4re(3$rdXoord"KdrcA'ZqeuINrbVRLrbDFHqe,n? +mq)B.rb)4ErbDFJrbVRNqeuIRrcA'^rcnEhrdXoure(3,rf$i;rf[8IrgWnZrhKIiriZ7)rj2U9rkABJ +rl>#]rm:Ymrmq)&rnm_7roF(Brp'LNrpTjWrq-3`rqHEerqcWkrqucorVcisrdk*'rrN,u!<2lorqucm +rqcWhrqHEcrq-3\rpTjSrp0RIroF(#SrkABDrj2U/riZ6trhKIbrgWnQrf[8A +repc4re(3$rdXoord"KdrcA'ZqeuINrbVRLrbDFHqe,n?mq)B.rb)4ErbDFJrbVRNqeuIRrcA'^rcnEh +rdXoure(3,rf$i;rf[8IrgWnZrhKIiriZ7)rj2U9rkABJrl>#]rm:Ymrmq)&rnm_7roF(Brp'LNrpTjW +rq-3`rqHEerqcWkrqucoqu4e=bQ%A9rql]krqZQfrq??arpp'XrpTjQrosFEro3q7rn[S*rm^qorlkA_ +rkn`Mrjr*;rilC'ri,mkrgs+Yrg!JGrf@&8reLK*rdaurrd+QercJ-[rc%jSrbVRKrb;@Frau.@qdf\9 +l!jX%qd]\OE;jnWFT-I_HN&Z@3ir8*>l2L&Kn,DkVo)A=]pAXgcq>U6iqtU,^s+145s7lQlqu6Hkq>U-f +pAXaao)A.Xn,D\Ql2KiEir7j7h>Z%*eGdhobl5]__u@FM])K/;Yl:a'WW&XkT)P5YQ2ZsGO8b"8L]2r* +JGsurHN&*eFT-=[E;jbSD#S2KC&VfFB)ZB=AH$*'@fBm7AH$0>B)ZKCC&VlHD#S>OE;jnWFT-I_HN&Z@3ir8*>l2L&Kn,DkVo)A=] +pAXgcq>U6iqtg6lrV_U-fpAXaao)A.Xn,D\Ql2KiEir7j7h>Z%*eGdhobl5]_ +_u@FM])K/;Yl:a'WW&XkT)P5YQ2ZsGO8b"8L]2r*JGsurHN&*eFT-=[E;jbSD#S2KC&VfFB)ZB=AH$*' +@fBm7AH$0>B)ZKCC&VlHD#S>OE;jnWFT-I_HN&Z@3ir8*>l2L&Kn,DkVo)A=]pAXgcq>U6iqtU-5s3(H;rVl]nqYpZ.-eGdkpcMkoa`;[ON]Df8Urql]krqZQfrq??`rp]pUrpKdNroa:Aro!e3rn@A$rmC_jrlG)WrkJHE +rjMg2riQ0trhBCargNhQrfI,=repc/rdk&urd4WhrcS3[rc%jTrbVRKrb;@Eral(=raPk8ra5Y4oj@K# +pg=#.ra5Y5raPk:ral(Arb;@IrbVRPrc%jVrcS3brd4Wordt-&repc9rfI,GrgWnZrhBCjriQ1)rjMg< +rkJHNrlG)armC_prn@A,ro!e:roj@HrpKdSrp]pZrq69brqZQirqlQj!WDtJs+UIRrVcTkrql]krqZQf +rq??`rp]pUrpKdNroa:Aro!e3rn@A$rmC_jrlG)WrkJHErjMg2riQ0trhBCargNhQrfI,=repc/rdk&u +rd4WhrcS3[rc%jTrbVRKrb;@Eral(=raPk8ra5Y4oj@K#pg=#.ra5Y5raPk:ral(Arb;@IrbVRPrc%jV +rcS3brd4Wordt-&repc9rfI,GrgWnZrhBCjriQ1)rjMgV1qd'2+r`fA* +kun!hr`f>+!F/n/?2e4.@/aX7A,^'=B`;cGD>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R( +Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_To)A7[p&=acq>U6fr;QZlrh]XGs6BX`rqlZnr;QQl +q>U0gp&=U_o)A.XmJcGNk5OH@iVq^5gA]\&d/M8gaSs'U^AbbDZi73.Xo>-qU&LY_QN!*IO8b+;L]2o) +JGsrqH2_maErL"VD>n;LB`;TBAH$';@/F=.?2e+.>Q.gj=oMV(>Ph\)?2e4.@/aX7A,^'=B`;cGD>nJQ +EW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R(Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_T +o)A7[p&=acq>U6fquHZrrVcWmJcCc1rr)rsrVc]or;QQlq>U0gp&=U_o)A.XmJcGNk5OH@iVq^5gA]\& +d/M8gaSs'U^AbbDZi73.Xo>-qU&LY_QN!*IO8b+;L]2o)JGsrqH2_maErL"VD>n;LB`;TBAH$';@/F=. +?2e+.>Q.gj=oMV(>Ph\)?2e4.@/aX7A,^'=B`;cGD>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&Lke +Xo>R(Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_To)A7[p&=acq>U6fr;QZlrmCbns8N#prVl`o +qu6Ejq#:$ep&=R^nG_nUm/H;LjSn0PhS&=P['W=92N+r`T5)r`oG.ra5Y5raPk;rau.C +rbVROrc%jYrce?grdXp"reCE2rf@&ArgNhWrh07hriH+'rjVm=rkSNOrlP/brmLetrnIG0ro3q_4ra#M.r`f8&r`IuXqcNi#r`fA,ra#M1raGe8rac"? +rb2:Irbh^SrcJ-`rd4Wore(3)rf$i;rf[8Lrgj%]ri#gtrilC2rk&0Frl"fXrm(Mkrn%/(rnm_7roF(D +rp9XQrp]pYrq69brqQKgrql]mqu-NndJqVorr2fnrqucmrqZQgrqHEarpg!Vrp9XLroj@@ro!e4rn.5" +rm1Sfrl>#Srk85he+?2J".@K'd9B`;cGDZ4SRF8g@^I/\ToJc:K)MuJh; +Pl@*MT)PJ`W;`t!ZMqB5^&GkI`r=3]ci2Gnf`'b,i;Va8kl0lHm/HJQo)A:\p\sseq>U9jr;6Hlrh]XG +s6]jcrqlZnr;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+W;`OjT)P/W +Pl?dDN;eY4Jc:/uI/\5h\(=T2D$5he+?2J".@K'd9B`;cGDZ4SRF8g@^I/\ToJc:K)MuJh;Pl@*MT)PJ`W;`t!ZMqB5^&GkI`r=3]ci2Gn +f`'b,i;Va8kl0lHm/HJQo)A:\p\sseq>U9jquH]nrVleIs,m?\rqu]prVl`oqu6Ejq#:$eo`"C[n,D\Q +lMg#Hir7m8hYu1,eGdenbl5Z^_>_.I\,N]4Y5YC!UAgb`RJrHMOT(4lIq+=oMP&=8l7t$=oMV(>lJ%+?iFL5A,^0@CAr,MDuOhWG5cmg +If=otM#N>3OT(LDRJrfWUAh+jY5Ya+\Gj2@_>_IRbl5rfeGe,"hYuI4ir80@lMg/Ln,DnWo`"Uaq#:*g +qu6NjrVlfDs4%)JrqlZnr;QTmqYp6gpAXaanc&%Wn,DVOkPjTBi;VO2g&BJ"d/M;h`W!aR^AbS?ZMq$+ +VZ*=hTDk/UPQ$XBM>i2-JGsurGlDjbE;jbSD#S)HAc?-;@/aL3>lIn*=T2D$$=oM\*?2e72@K'g:BDu`HDZ4VSFoH[cIK"crL&Qr.O8b@BQN!NUU]..iY5Ya+[f4#? +_>_FQc2Q)he,J&"h>Z@3jo4KClMg8OnG_tWp&=[ap\t$gqu6NmrVQSms+14>s8N#prVl`oqu6Hkp\smc +p&=L\nG_nUlMfuGjo43;h#?"+e,I_nc2P]]_Z%:K[f3T3Y5YI;#X>h;Z9Vo<;ons=8l>$=oM\*?2e72@K'g:BDu`H +DZ4VSFoH[cIK"crL&Qr.O8b@BQN!NUU]..iY5Ya+[f4#?_>_FQc2Q)he,J&"h>Z@3jo4KClMg8OnG_tW +p&=[ap\t$gqZ-Npr;?Qmqu20HQiI'aqu$QnquHZoqu6Hkp\smcp&=L\nG_nUlMfuGjo43;h#?"+e,I_n +c2P]]_Z%:K[f3T3Y5YI;#X>h;Z9Vo<;ons=8l>$=oM\*?2e72@K'g:BDu`HDZ4VSFoH[cIK"crL&Qr.O8b@BQN!NU +U]..iY5Ya+[f4#?_>_FQc2Q)he,J&"h>Z@3jo4KClMg8OnG_tWp&=[ap\t$gqu6NmrVQTDs4%)JrqlZn +qu6Hkq>U-fpAX^`nc&"Vm/H5Jk5OE?hu;C0f`':tcMkuc_Z%:K]Df/9YPtR$UAgb`Rf8NMOT(4Q.h*=oMM%sDh:\@KX:%D'Y:B45h;#X>k;Z9Vo5hb*?iFO6AH$9ACAr,MEW1+[GlE0kJc:?%N;en;PQ%$MT)PJ`WrB1#Zi7T9^])+Lb5TZbdJhet +g]$+0j8S3?kl0rJmf)bUo`"O_p\t!fqYpBkrVQSms+14>s8N#prVl]nqYp5h\(=8l8"k;Z9Vo5hb*?iFO6AH$9ACAr,MEW1+[ +GlE0kJc:?%N;en;PQ%$MT)PJ`WrB1#Zi7T9^])+Lb5TZbdJhetg]$+0j8S3?kl0rJmf)bUo`"O_p\t!f +q>gBnqtpBkqu20HQiI'aqu$QmqZ-NmqYp5h\(=8l8"k;Z9Vo5hb*?iFO6AH$9ACAr,MEW1+[GlE0kJc:?%N;en;PQ%$MT)PJ` +WrB1#Zi7T9^])+Lb5TZbdJhetg]$+0j8S3?kl0rJmf)bUo`"O_p\t!fqYpBkrVQTDs4%)JrqlZnqu6Hk +q>U-fp&=O]nG_hSli-)HjSn*:h>Z+,ec*qpbl5Z^_#D"G\,NW2X8]!qT`1G[QN!!FN;eY4JGsurHiA-d +EW0nUCAqiEA,]m8?N+70=oMP&=8l1u;Ys;f:]=,d:%_3T9CbdU9`Rrd:A[ia;#XDm<;otu=T2J&?2e41 +@/a[8BDuZFDuOeVFT-XdIf=lsM#N>3OT(RFS,T)[VZ*XqYl;-2]DfVFa8X9]d/MSpg&Bh,i;Vg:kPjfH +mJcVSo)A=]p\t!fqYpBkrVQSms+14>s8N#prVl]nqYpYl:^&VZ*7fS,S`QOT(4@/aL3?2e"+=T2D$<;oem;#=&f +:A[cY9__9O9`@c`:A[ia;#XDm<;otu=T2J&?2e41@/a[8BDuZFDuOeVFT-XdIf=lsM#N>3OT(RFS,T)[ +VZ*XqYl;-2]DfVFa8X9]d/MSpg&Bh,i;Vg:kPjfHmJcVSo)A=]p\t!fq>gBnqtpBkqu20HQiI'aqu$Qm +qZ-NmqYpYl:^&VZ*7fS,S`QOT(4@/aL3?2e"+=T2D$<;oem;#=&f:A[cY9__9O9`@c`:A[ia;#XDm<;otu=T2J& +?2e41@/a[8BDuZFDuOeVFT-XdIf=lsM#N>3OT(RFS,T)[VZ*XqYl;-2]DfVFa8X9]d/MSpg&Bh,i;Vg: +kPjfHmJcVSo)A=]p\t!fqYpBkrVQTDs4%)GrVl`oqYp9hp\sjboDA%Vm/H8KjSn0_(G[f3Q2XT#*rT`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\QC&VZB@fBa6?2e%,=T2>"<;oep;#=&c:&[ic +9(GRB8G,OS9)M5hh,?iFO6AH$U6fr;QYns+14>s82cor;QQlq#:$e +p&=R[nG_eRl2KcCir7j7gA]\&dJhAha8WpS]Df85hY'5hh,?iFO6AH$gBkq#:$ep&=R[nG_eRl2KcCir7j7gA]\&dJhAha8WpS]Df85hY'5hh,?iFO6AH$U6fr;QZEs4%)JrVl`oqu6Ejq#:$ep&=R^nG_hSlMg#H +j8S$:hYu.+eGdenb5T?Y^](_AZi70-VuEIjTDk/UP5^L@L]2r*J,X]lFoHC[D#S/JBDu?=?iF@1=oMM% +8+]@M8GGgV9`@c`:]=5j;uTer=8lA%?2e41@K'p=C&VrJEW1+[GlE3lKDpZ* +NrG4@QN!NUU].1jYPtm-\,O/A`;[pYci2DmfDaY+i;Vd9kl0lHmJcVSoD\F^p\sseq>U9jr;QYns+14> +s8Murr;QTmq>U0gp\sjboD\7YmJcDMkl0WAiVq^5fDa;!ci2)d`;[ON\,N`5YPtI!U]-nbQN!'HNrFh5 +KDpB"GlDjbEW0eRC&VcE@K'X5?2e"+=8l5!;uT\l:]=)f9__6K8FK(;8GGgV9`@c`:]=5j;uTer=8lA% +?2e41@K'p=C&VrJEW1+[GlE3lKDpZ*NrG4@QN!NUU].1jYPtm-\,O/A`;[pYci2DmfDaY+i;Vd9kl0lH +mJcVSoD\F^p\spfq#UU0gp\sjboD\7YmJcDMkl0WAiVq^5fDa;! +ci2)d`;[ON\,N`5YPtI!U]-nbQN!'HNrFh5KDpB"GlDjbEW0eRC&VcE@K'X5?2e"+=8l5!;uT\l:]=)f +9__6K8FK(;8GGgV9`@c`:]=5j;uTer=8lA%?2e41@K'p=C&VrJEW1+[GlE3lKDpZ*NrG4@QN!NUU].1j +YPtm-\,O/A`;[pYci2DmfDaY+i;Vd9kl0lHmJcVSoD\F^p\sseq>U9jr;QZEs4@;Mrr2lqr;QTmq>U0g +p\sganc&"Vli-/JkPjH>hu;F1ec+"rcMki__>_.I[JmH1Xo>*pT`1J\P5^L@MuJA.JGsrqFoHF\DuOJM +B)Z9=?iF=0>5hS%<;obo;#X8i:B!ra9DD*U8(L-17RmAIpdtHXqb6l^r_WSkr`&ktr`];+ra5Y6rau.D +rbqdVrcS3frdXp"repc:rf[8Nrh'1briQ1)rjDa=rkeZSrm(Mjrmh#'rndY5roa:Frp0RPrpp'\rqHEe +rqZQjrqucoqu3buJcG?Arr2oqrqucmrqZQgrqHEarpg!Vrp0RJroa:>rnm_1rmh"rrm(M_rk\TIrjDa1 +riQ0prh07\rf[8@repc.rdauqrcS3\rbqdMrau.=ra5Y0r`];%r`&kor_WSir_EGdqb-]Uqa].*r^Z`T +r_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&Arg`t[rhKIpriuI1rk8rosFJrpTjWrq-3arqHKh!VuQjqu6NmrVQSFs.KDkrr2lqr;QQoq=t$drqQKerq-3[ +rpTjProsFFro*k6rnRM'rmLekrl4rRrk8<=riuI)rhKIcrg`tNrf6u9re(3#rd=]frc8!Vrb;@DraPk6 +r`oG+r`9"tr_`Ykr_NMgr_32^pdt?Qe40F-pdtHXqb6l^r_WSkr`&ktr`];+ra5Y6rau.DrbqdVrcS3f +rdXp"repc:rf[8Nrh'1briQ1)rjDa=rkeZSrm(Mjrmh#'rndY5roa:Frp0RPrpp'\rqHEerqZQjrquco +qu5=LfDkjLrr)iorqcWhrq??arpp'XrpTjNroa:Aro!e2rn.4trm(McrkeZJrji$4ri?$rrh07[rg!JD +re^W-rdauprc\9[rb_XLrac":ra5Y.r`K/#r_i_mqbR2br_*,[r^coVr^QZOpdFRpBd!;QQerq69]rp]pUrosFFroF(:rnRM*rmC_jrlY5Wrk8reLK)rd=]hrc8!UrbDFFraGe5r`oG)r`9"t +r_WSir_EGdr_*5_r^coVr^QcRpdEq*rC$QOr^H]Rr^ZiVr_!/_r_3;dr_NMir`&ktr`K/)ra,S4rb)4F +rbh^Urce?hrdt-)rf$i>rg<\UrhTOmriZ7/rk&0Frl4r]rm:Yqrn@A/ro3q>roj@KrpTjVrq69arqHEg +rqlTkrr0)#JcGHDrr2fnrquclrqHEcrq69\rpTjRroj@Cro3q7rn@A&rm:Yfrl4rQrk&0rg<\UrhTOmriZ7/rk&0F +rl4r]rm:Yqrn@A/ro3q>roj@KrpTjVrq69a!;?Ngp\t$gqtp?krdk*Es8N#prVl`oq>p?b!;HKdrq69\ +rpTjRroj@Cro3q7rn@A&rm:Yfrl4rQrk&0rg<\UrhTOmriZ7/rk&0Frl4r]rm:Yqrn@A/ro3q>roj@KrpTjVrq69a +rqHEgrqlTkrr1XOgAh0Orr)iorql]krqHEcrq-3ZrpKdProa:Aro!e3rn.5"rm1Scrl"fMrji$7riH*r +rh07ZrfmDCreUQ+rdXolrcJ-XrbMLGraYq8ra#M,r`9"sqb[8er_3;`qapZTr^QcRr^>+#r'U?Lr^H]R +r^ZrZqb$i]r_<8dr`&ktr`];+ra>_8rb)4GrbqdXrcnElre19,rf@&CrgNhZrhf[rrj2U6rkABMrlY5d +rm^r#rn[S3roF(Arp9XPrp]pZrq69brqcWkrqucorr0)#JcGHDrr2oqrqucmrqcWgrq??`rp]pTrp9XI +roF(:rn[S+rm^qnrlP/XrkABBrj2U*rhf[frgNhNrf@&7re(3"rcnEarbqdOrb)4?ra>_2r`];%r_r\j +r_EGdr_!&Zqa^WTqaLKPb_8rb)4GrbqdXrcnElre19, +rf@&CrgNhZrhf[rrj2U6rkABMrlY5drm^r#rn[S3roF(Arp9XPrp]pZrq-9c!Vc?fqYpBkr;QZordk*E +s8N#srVl`oqu6Emp\+[^rq??`rp]pTrp9XIroF(:rn[S+rm^qnrlP/XrkABBrj2U*rhf[frgNhNrf@&7 +re(3"rcnEarbqdOrb)4?ra>_2r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPb_8rb)4GrbqdXrcnElre19,rf@&CrgNhZrhf[rrj2U6rkABMrlY5drm^r#rn[S3roF(A +rp9XPrp]pZrq69brqcWkrqucorr1XOh>dKRqu-NkrqcWirq??`rpp'XrpB^MroO.>rnm_/rmq(rrlb;\ +rk\TFrjDa/rhoairgs+RrfI,ra>_1r`T5$r_i_mr_NMfr_!/]r^d#YqaUQR +r^?3Bh*V'-o0`LFr^H]Rr^ZrYr^m)^r_U6iqu6Qkrdk*Ks8N#prVl]nqYp9kp@\L[rq-3\rp]pSrp'LEro="8rn@A&rmC_grl4rR +rjr*:ric=!rhBC`rfmDDrf$i/rdauqrcA'Yrbh^IraYq8r`oG*r`9"rr_`Yjr_dKRqu-NkrqcWirq69_ +rpg!Urp0RJroF(;rndY,rm^qnrlP/XrkJHBrj)O*rhKIbrgWnMrf-o6rdk&srd"K`rbh^Nrac":ra5Y. +r`B(ur_WSir_EGcr_!/]r^ZrWqaLKPlpKSqrBp'Ar^?WPr^QlWr^m)]r_*5cr_NMir`&kur`];.raPk; +rbMLOrc8!`rdFcsre^W7rf[8Mrh'1briQ1*rj_sBrl"fXrm1Snrn.5,ro*k;rosFJrpKdUrq$-^rqZQi +rql]nqu3l#JcGQGrr2fnrql]krqZQdrq-3[rpKdOrosFCro*k5rn.5"rm1Scrl"fNrj_s5riQ0prh'1Z +rf[8?re^W*rdFckrc8!UrbMLDraGe5r`];&r`&knr_NMgr_*5_r^m)Zr^QcRr^?*?h*UHqr^?WPr^QlW +r^m)]r_*5cr_NMir`&kur`];.raPk;rbMLOrc8!`rdFcsre^W7rf[8Mrh'1briQ1*rj_sBrl"fXrm1Sn +rn.5,ro*k;rosFJrpKdUrpp-_!VQ-bq>U6iqu6Qkrdk*Ks8N#prVl]nqYp9kp%8=Xrq-3[rpKdOrosFC +ro*k5rn.5"rm1Scrl"fNrj_s5riQ0prh'1Zrf[8?re^W*rdFckrc8!UrbMLDraGe5r`];&r`&knr_NMg +r_*5_r^m)Zr^QcRr^?*?h*UHqr^?WPr^QlWr^m)]r_*5cr_NMir`&kur`];.raPk;rbMLOrc8!`rdFcs +re^W7rf[8Mrh'1briQ1*rj_sBrl"fXrm1Snrn.5,ro*k;rosFJrpKdUrq$-^rqZQirql]nqu5FOh>dKR +qu-NjrqZQgrq69^rp]pTrp0RIro="9rnRM(rmLekrl>#UrkAB>rilC&rh07\rg<\Hrepc1rdXonrcS3Z +rbVRIraGe5ra#M*r`/qqr_WShr_3;`r^m)[r^QcRr^?rkeZTrm(Mkrmq)(rnm_8roj@HrpKdT +rq$-^rqQKgrqcWmqu3l#JcGQGrr2fnrqcWirqQKcrq$-YrpKdOroj@Aro!e2rmq(srm(M`rkn`LrjDa0 +ri?$krg`tTrfI,;reCE%rd+Qdrc%jQrb2:>ra5Y1r`K/"r_i_lr_EGdr_!/]r^d#XqaLKPnjCSeogAUE +r^H]Rr^d#[r_!/`r_rkeZT +rm(Mkrmq)(rnm_8roj@HrpKdTrpp-_!VQ-bq#:*gqYpHjrdk*Ks8N#prVlZmq>U-ip%8=Xrq$-YrpKdO +roj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQrb2:>ra5Y1r`K/"r_i_l +r_EGdr_!/]r^d#XqaLKPnjCSeogAUEr^H]Rr^d#[r_!/`r_rkeZTrm(Mkrmq)(rnm_8roj@HrpKdTrq$-^rqQKgrqcWmqu5FOh>dKR +qu-NjrqQKerq-3\rpTjQrosFFro*k5rn@A#rm1Serkn`Mrjr*5ri?$qrh'1Xrfd>@reLK(rd4Wfrc.pS +rb2:Ara>_1r`T5#r_relr_EGdr_!/\r^ZrWqaLKPnjCYgp-SF>qaCEPr^QlWr^d#\r_*5cr_NMkr`/r# +ra#M2rac"Arb_XSrc\9frdk'(rf-o@rgEbXrhf[rrilC5rkABLrlb;ermUl#rn[S4roa:Frp9XQrpp'\ +rqHEfrqcWmqu3l#JcGQGrr2fnrqcWhrqHEarpp'Wrp9XKroa:>rndY.rmUkmrlb;YrkJHDrilC&rhf[e +rgEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMgr_3;`r^d#Yr^QcRr^?rndY. +rmUkmrlb;YrkJHDrilC&rhf[ergEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMgr_3;`r^d#Y +r^QcRr^?d9KrqcWhrqHE`rpg!V +rp0RJroX4dp-S=;r^?WPr^QlWr^m)^r_3;er_i_pr`K/'ra,S4rau.FrbqdXrd"Km +re19.rfR2Grg`t`ri5t$rjVm?rkeZWrm(Mkrn7;,ro!eU6c +rIP!Js7lQlqYp9hpAsmW!;$3[rpTjProsFEro!e2rn7;!rm(McrkeZJrjVm1ri,mmrg`tSrfR2;re:?$ +rd"KbrbqdOrau.dBNrquclrqQKerq$-ZrpTjOroa:Aro!e2rn%.rrlkA_rkSNFrjDa.ri#girgNhN +rf@&6re(3!rc\9]rbqdLrac"8r`oG*r`B(sr_WShr_*5_r^m)YqaLKPnjCGao0W+;qaCEPqaUQVr_!/_ +r_EGhr_i_sr`T5*ra5Y8rb2:LrcA'^rdOiureLK6rfmDNrh9=hriZ7.rjr*ErlG)_rm:YrrnIG1roF(B +rp'LOrpg!ZrqHEfrqcNirr',%JcGQGqu-NlrqcWhrqHE`rpg!Vrp'LGroF(:rnRM)rm:YgrlG)Srk&0; +riZ7!rh9=[rfmDCreLK*rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGcr_!/]r^QcRr^?p^p\t!fqYU3irIP!Js82cor;QQlq#:!goCDtRrpg!Vrp'LGroF(:rnRM) +rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK*rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGcr_!/]r^QcR +r^?dKQrqucmrqZQgrq??^rp]pTroj@C +ro3q6rn@A%rm:Yfrl+lOrj_s5ri?$prh'1Vrf[8@re19#rd4Wcrc%jQral(U0gp&XaT!:p-YrpKdLroO.=rndY.rmh"prlb;[rkJHBrj)O(rh]Udrg3VIrf6u2 +rdXoorcA'XrbVRFraPk6r`T5%r`&knr_EGdr^m)[r^ZrWr^HfSnjBWJogA^Hr^HfUr^ZrYr^m)_r_EGh +r`&ktr`T5-raPkdKQrqucmrqZQfrq69\rpTjRroj@Cro3q5rn.5"rm(Mbrl"fLrjVm3ri,ml +rgs+Rrf@&:rdt,urd+Qarbh^Mrac"9ra#M*r`/qqr_WSgr_*5^r^d#Yr^HfSmmG#[m6^A2r^?`Sr^ZrY +r^m)^r__2r`K/"r_i_lr_U-fo`=UQ!:g'WrpB^KroO.= +rn[S+rm^qmrlP/Xrk8_2r`K/"r_i_lr_dKQrqucmrqQKdrq69\rpTjR +roj@Cro*k3rn.5!rltG`rkn`JrjDa/rhoairg`tOrf6u7rdauqrce?\rbVRJraPk6r`oG(r`/qpr_WSg +r_*5]r^ZrWr^HfSog?G[l9b/2r^?`Sr^QlWr^d#]r_Orh9=hric=/rk/6JrlG)`rmUkurnRM3roO.CrpB^Rrpg!\rqHEerql]mrr',%JcGQGrr)iorql]i +rq??arpg!VrpB^KroO.Are^W)rd=]hrc%jQrb;@@ra5Y0 +r`B)!r_`Ykr_Orh9=hric=/rk/6JrlG)`rmUkurnRM3roO.CrpB^R!:^*[nc&4\p\ssequ6NmrIP!J +s8Murr;QTmq#:!do`=UQ!:g'WrpB^KroO.Are^W)rd=]h +rc%jQrb;@@ra5Y0r`B)!r_`Ykr_Orh9=hric=/rk/6JrlG)`rmUkurnRM3roO.CrpB^Rrpg!\rqHEe +rql]mrr([Qi;`fUrr)iorqcWgrq??`rp]pSrp0RGro="8rn@A&rmC_grl4rRrji$7ric__2r`];$r_remr_EGcr^luWr^QlTog@Y(r^#d6r^#@, +qa:6KqaUQTr^m)^r_EGhr_rerr`];,ra>__2r`];$r_remr_EGcr^luW +r^QlTog@Y(r^#d6r^#@,qa:6KqaUQTr^m)^r_EGhr_rerr`];,ra>__:rb;@KrcA'` +rdFd"reg]9rg3VTrhBCorj)O5rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu4))JcGZJ +rr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5ZrkJHBrj)O*rhBC_rg3VFreg]/rdFcjrcA'U +rb;@Cra>_1r`T5#r_relr_EGcr^m)Zr^QlUnjDG(qa'@0r^#I/ogA^Ir^QlWr^m)^r_EGgr_i_qr`T5* +ra>_:rb;@KrcA'`rdFd"reg]9rg3VTrhBCorj)O5rkJHNrlY5ermh#$rnm_7roO.Frp9^T!V#UXoD\F^ +p\t$gqu6Qkrdk*Ts8N#srVl`oqYp6gpAXXanF-GIrpB^NroO.=rnm_.rmh"prlY5ZrkJHBrj)O*rhBC_ +rg3VFreg]/rdFcjrcA'Urb;@Cra>_1r`T5#r_relr_EGcr^m)Zr^QlUnjDG(qa'@0r^#I/ogA^Ir^QlW +r^m)^r_EGgr_i_qr`T5*ra>_:rb;@KrcA'`rdFd"reg]9rg3VTrhBCorj)O5rkJHNrlY5ermh#$rnm_7 +roO.FrpB^Srq$-^rqHEgrql]nqu5XUi;`fUrr)iorqcWgrq??_rp]pSrp0RFro3q7rn.5!rm1Sbrkn`M +rjMg2riH*lrgWnQrf6u7re(2trce?^rbVRIraYq7r`fA(r`&kor_NMer_!/]r^QcRpd5hk-@fC$>C]8;PFoH^dJGt<& +N;f(@S,T)[WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg/Ln,DnWp&=^bqYpBkr;6K&s+14Js8N#sr;QTm +qYp6gp&=O]n,D\QlMflDiVq^5f)F.tci2#b_u@CL[/R9.WrA[jRf8QNN;eS2JGsloFoH@ZC]7rF@fB^5 +>5hV&;Z9Ml:B!oc9)_B\7fGjU7/0.06N0:&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$> +C]8;PFoH^dJGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg,MmfDnGrpp']rqHEgrql]m +qu20HZN'q'rqucmrqcWgrq69]!UoIWn,D\QlMflDiVq^5f)F.tci2#b_u@CL[/R9.WrA[jRf8QNN;eS2 +JGsloFoH@ZC]7rF@fB^5>5hV&;Z9Ml:B!oc9)_B\7fGjU7/0.06N0:&5lO(06MNqI7/fXS7fGsX8cDB^ +:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg/L +n,DnWp&=^bqYpBkr;6KRs5Z")df.Sl`rL&QW%HN&'dE;jVOB)Z6rgEbXri#h!rj2U;rkeZSrm1Smrmq)) +ro!e9rosFKrpTjWrq69brqcWkrquZm\,V$Zr;ZcqrqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm1S` +rk\TIrj2U,ri#ggrgEbLrepc0rdauorcS3ZrbDFEraGe3r`T5%r_i_kr_rgEbXri#h!rj2U;rkeZS +rm1Smrmq))ro!e9rosFK!:KsWn,DnWp&=^bqYpBkr;6JEs0D\(rr2ipqu6Hkp\sjbncA4J!:TpQrosFB +ro!e3rmq(srm1S`rk\TIrj2U,ri#ggrgEbLrepc0rdauorcS3ZrbDFEraGe3r`T5%r_i_kr_rgEbX +ri#h!rj2U;rkeZSrm1Smrmq))ro!e9rosFKrpTjWrq69brqcWkrquZmj8\';rr2oprql]krqHEbrpg!V +rp0RJro="9rnRM(rmLekrl+lQrk/6:riZ6urgs+Vrf[8_:rb2:LrcJ-ardXp#reg]< +rg<\Vrhoatrj2U:rkSNPrm(Mkrmq)(rnm_8rosFKrpTjVrq-3arqcWkrquZm\,V$Zr;ZcqrqucmrqcWg +rq69\rpTjProsFBro!e2rmq(srm(M^rk\THrj2U,rhoaerg<\Jreg].rdXolrcA'Wrb2:Ara>_1r`T5$ +r_i_kr__:rb2:LrcJ-ardXp# +reg]_1r`T5$r_i_kr__:rb2:L +rcJ-ardXp#reg]_9rb)4KrcA'^rdXp"reUQ9rg3VTrhf[rriuI7rkSNPrltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWk +rquZm\,V$Zr;ZcqrqucmrqcWfrq-3[rpTjProj@@rnm_1rm^qorltG]rkSNFriuI(rhf[crg3VHreUQ+ +rdXojrc8!Vrb)4@ra>_1r`K/"r_WShr_3;_r^d#Xr^HfSpd=:4r^"Lgr^#[5qa:?Nr^HfUr^ZrZr_3;d +r_WSor`K/)ra>_9rb)4KrcA'^rdXp"reUQ9rg3VTrhf[rriuI7rkSNPrltGirm^r&rnm_7roj@I!:KsW +n,DkVo`"R`qYpBkr;6JEs0D\(rr2ipqu6HkpAX^`nH&+I!:TpQroj@@rnm_1rm^qorltG]rkSNFriuI( +rhf[crg3VHreUQ+rdXojrc8!Vrb)4@ra>_1r`K/"r_WShr_3;_r^d#Xr^HfSpd=:4r^"Lgr^#[5qa:?N +r^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4KrcA'^rdXp"reUQ9rg3VTrhf[rriuI7rkSNPrltGirm^r& +rnm_7roj@IrpTjVrq-3`rqcWkrquZmj8\';rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Yhrl"fN +rk&07riH*qrg`tRrfI,8re(3!rcS3[rb_XIrac"9r`oG)r`/qor_EGdr^m)[r^QlUr^?NKlpCS8bs:tf +r^#d8qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4Irc.p[rdOiureUQ8rg*PRrh]UpriuI7rkSNO +rltGirm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZm\,V$Zr;ZcqrquclrqZQerq$-YrpKdOroj@@rndY/ +rm^qorltG\rkJHEriuI(rh]Uarg*PFreUQ+rdOihrc.pSrb)4@ra>_1r`K/"r_WShr_3;_r^d#Xr^HfS +pd=C7qa&(ar^#d8qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4Irc.p[rdOiureUQ8rg*PRrh]Up +riuI7rkSNOrltGirm^r%rnm_7roj@H!:BmUmf)_To`"R`q>U9jr;6JEs0D\(rr2ipqYp_1r`K/"r_WSh +r_3;_r^d#Xr^HfSpd=C7qa&(ar^#d8qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4Irc.p[rdOiu +reUQ8rg*PRrh]UpriuI7rkSNOrltGirm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZmj8\';rr2oprqcWi +rq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrjr*5ri5snrg`tRrf@&7re(3!rcS3[rb_XHraPk6r`];& +r`&knr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiu +reUQ7rg!JQrhTOorilC5rkABLrlkAgrm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZm\,V$Zr;Zcqrqucl +rqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHDrilC%rhTO`rg*PEreUQ+rdOihrc.pSrau.=ra5Y. +r`B(ur_WShr_3;_r^d#Xr^?WNk!HUDk!K&7qaCEQr^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiu +reUQ7rg!JQrhTOorilC5rkABLrlkAgrm^r%rnm_7roj@H!:BmUmf)_To`"R`q>U9jr;6JEs0D\(rr2ip +qYprr2oq +rquclrqZQerq$-YrpKdOroj@@rndY/rmUkmrlb;YrkABBrilC%rhKI^rg!JDreLK(rdFcgrc.pSrau.> +ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_r_EGhr`&ktr`];.raYq>rb_XS +rcS3grdt-)rf@&DrgWn^ri5t%rji$Brkn`Yrm1SmrnIG0ro3q@rp'LNrp]pZrq??erql]mrr)iq\,V$Z +!WW3!rr2lqr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/e,I\mbPoEY^Ab\BYl:[%U]-b^Q2ZjDL]2l(IK"Bg +EW0hSB)Z<>?iF7.=8l1u;#X5h9`@W_8H)*X7/K@66FfAD6N0@L7/f[T8,c*Z9`@fd;#XGn?iF7.=8l1u;#X5h9`@W_8H)*X7/K@66FfAD6N0@L7/f[T8,c*Z9`@fd;#XGn +U9jr;QZoro=%=s8N#srVl`oqYpn,G@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ6fp_U5k@8'6N0@L7/f[T8,c*Z9`@cc +;#XDmU9jr;QZorjVoYrrN0"rr2oqrquclrqZQdrq$-YrpKdOroj@?rndY/rmUkmrlb;YrkABBrilC% +rhKI]rg!JDreLK(rdFcgrc.pSral(U9jr;QZordk*Ws8N#srVl`oqYpcNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ +6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFT-[eJc:H(O8bCCRf9)]WrB7%\c0>B +_Z%aXci2Dmg]$(/iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr.KK[K$7*rr)iorqcWirq69^rpTsVmJu\S +li-,IiVq^5g]#\$ci2,e_Z%7J\c/i4WrAdmRf8TOO8aq6Jc:&rFT-7YD>n,G@fBa6=oMM%;uTVm:B!rd +8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFT-[eJc:H(O8bCCRf9)] +WrB7%\c0>B_Z%aXci2Dmg]$(/iVr'?lMg5NnG`%Yp&=ddqu6NmrVlfVs5X.Yrr2lqr;QQlq>U'doD\7Y +mf)POkl0Q?hYu:/e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDL]2l(I/\6eE;j_RAc?0nPSFT-[eJc:H(O8bCC +Rf9)]WrB7%\c0>B_Z%aXci2Dmg]$(/iVr'?lMg5NnG`%Yp&=ddqu6NmrVlf*s+11Ns8W)trr)iorqcWi +rq69^rp]pTrp0RIro*k5rnIG$rm1SerkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5% +r_remr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_U'doD\4[md:)Crp0RIro*k5rnIG$rm1SerkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XG +raPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_ +rr2oqrquclrqZQerq$-YrpKdOroj@@rndY/rmUkmrlb;Xrk8 +rb_XSrcJ-erdk'(rf@&DrgWn^ri5t%rji$BrkeZXrm1SmrnIG0ro3q@rp'LNrp]pZrq??erql]mrr)iq +\,V$Z!WW3!rr2lqr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/e,I\mbPoBX^&GSAYl:[%U]-b^Q2ZjDL]2l( +I/\6eE;j_RB)Z9=?iF4-=8l.t;#X5h9`@W_8H)*X7/K@66FfAD6N0@L7/f[T8,c*Z9`@cc;#XDmU9jr;QZoro=%=s8N#srVl`oqYpn/HA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_U5k@8'6N0@L7/f[T8,c*Z +9`@fd;#XGnU9jr;QZorjVoYrrN0"rr2oqrquclrqZQerq$-YrpKdOroj@@rndY/rmUkmrlb;YrkABB +rilC%rhKI^rg!JDreLK(rdFcgrc.pSrau.>ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!HUDk!K&7qaCEQ +r^ZrZr_3;dr_WSnr`9#%ra5Y7rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4rkABLrlb;ermUl$rnm_7 +roj@H!:BmUmf)_To`"R`q>U9jr;QZordk*Ws8N#srVl`oqYpra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!HUD +k!K&7qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y7rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4rkABLrlb;e +rmUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr1sXi;`fUrquclrqZQerq$-YrpKdOroj@@rndY/rm^qo +rlkAZrkJHDrilC%rhTO`rg*PEreUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!I*R +o0DG)r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Z +rm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu4))JcGZJrr2oprqcWirq??_rp]pTrp0RIro3q6rnIG% +rm:Ygrkn`Mrjr*5ri5snrg`tRrf@&7re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9L4 +\No:Dr^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Z +rm:YornIG0ro3q@rosLO!UfCTnG`(ZpAXmequ6Njrdk*Ts8N#sr;QQlq>U*eoD\4[md:)Crp0RIro3q6 +rnIG%rm:Ygrkn`Mrjr*5ri5snrg`tRrf@&7re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlT +qa9L4\No:Dr^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*C +rkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjProj@@rnm_1 +rm^qorlkA[rkJHDrilC&rh]Ubrg*PFreUQ+rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WN +k!Jr2bs:tfr^#[5r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^Urc\9irdt-*rfI,Grgj%bri?%& +rjr*Drl"f[rm:YornRM1ro3q@rp0RPrpg![rq??frql]mqu4))JcGZJrr2oprql]krq??`rpg!Vrp0RI +ro3q7rnRM&rm:Ygrl"fNrjr*5ri?$prgj%SrfI,8re(3!rc\9]rbh^IraYq7r`fA'r`/qor_EGdr^m)[ +r^QlTqa9L4qa&(ar^#[5r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^Urc\9irdt-*rfI,Grgj%b +ri?%&rjr*Drl"f[rm:YornRM1ro3q@rp'RQ!UoLVnc&1[pAXpfqu6Njrdk*Ts8N#sr;QTmqYp3fo`"@] +n*^8Frp0RIro3q7rnRM&rm:Ygrl"fNrjr*5ri?$prgj%SrfI,8re(3!rc\9]rbh^IraYq7r`fA'r`/qo +r_EGdr^m)[r^QlTqa9L4qa&(ar^#[5r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^Urc\9irdt-* +rfI,Grgj%bri?%&rjr*Drl"f[rm:YornRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucmrqcWf +rq-3[rpTjProj@@rnm_1rm^qorltG]rkSNFriuI(rhf[crg3VHreUQ+rdXojrc8!Vrb)4@ra>_1r`K/" +r_WShr_3;_r^d#Xr^HfSpd=:4r^"doq*=pFk!Jr4r^?`Sr^QlWr^m)_r_EGhr`/r"r`oG1rac"@rbqdW +rc\9jre(3+rfR2Hrgj%criH+(rk&0Frl+l]rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu4))JcGZJ +rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM&rm:Yhrl+lPrk&07riH*rrgj%TrfR29re(3"rc\9]rbqdK +rac"9r`oG)r`/qor_EGdr^m)[r^QlUr^?NKksGA8`BaDgk!Jr4r^?`Sr^QlWr^m)_r_EGhr`/r"r`oG1 +rac"@rbqdWrc\9jre(3+rfR2Hrgj%criH+(rk&0Frl+l]rmC_prnRM1ro3q@rp'RQ!UoLVnc&1[pAXpf +qu6Njrdk*Ts8N#sr;QTmqYp3fo`"@]n*^8Frp0RIro3q7rnRM&rm:Yhrl+lPrk&07riH*rrgj%TrfR29 +re(3"rc\9]rbqdKrac"9r`oG)r`/qor_EGdr^m)[r^QlUr^?NKksGA8`BaDgk!Jr4r^?`Sr^QlWr^m)_ +r_EGhr`/r"r`oG1rac"@rbqdWrc\9jre(3+rfR2Hrgj%criH+(rk&0Frl+l]rmC_prnRM1ro3q@rp0RP +rpg![rq??frql]mqu5XUi;`fUrqucmrqcWgrq69\rpTjProsFBro!e2rmq(srm(M^rk\THrj2U,rhoae +rg<\Jreg].rdXolrcA'Wrb2:Ara>_1r`T5$r_i_kr_RJriX +W;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg/Ln,DkVo`"UaqYpBkr;6K&s+14Js8N#sr;QTmqYp6gp&=L\ +n,D\QlMflDi;VR3f)F+scMki__>_.I[/R6-W;`FgRJrELMuJG0J,X`mFT-4XCAqiE@K'R3=oMJ$;Z9Ml +:B!lb8cD9[7fGjU7/K@36Mj'u5lO(-6N0@O7/fXS7fGsX8cD?]:B")h;Z9_r=oM_+@K'j;CAr/NFT-Rb +J,Y0$MuJq>RJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg,MmfDnGrpg![rqHEgrql]mqu20HZN'q' +rqucmrqcWgrq69\!UoIWn,D\QlMflDi;VR3f)F+scMki__>_.I[/R6-W;`FgRJrELMuJG0J,X`mFT-4X +CAqiE@K'R3=oMJ$;Z9Ml:B!lb8cD9[7fGjU7/K@36Mj'u5lO(-6N0@O7/fXS7fGsX8cD?]:B")h;Z9_r +=oM_+@K'j;CAr/NFT-RbJ,Y0$MuJq>RJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg/Ln,DkVo`"Ua +qYpBkr;6KRs5rbMLPrcS3drdb!&rf$i@rgWn[ri5t$rj;[=rkeZUrm1Smrmq)*ro*k; +rp'LLrpTjWrq69brqcWkrquZm\,V$Zr;ZcqrqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(trm1Sbrkn`L +rj;[.ri5sjrgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NKj$N`2f0K=$ +j$NN.r^?`Sr^QlXr^m)^r_EGhr_i_sr`];-raPk>rbMLPrcS3drdb!&rf$i@rgWn[ri5t$rj;[=rkeZU +rm1Smrmq)*ro*k;rp'LL!:KsWn,DnWp&=^bqYpBkr;6JEs0D\(rr2ipqu6Hkp\sjbncA4J!:TpRrp'LD +ro*k5rmq(trm1Sbrkn`Lrj;[.ri5sjrgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\ +r^QlUr^?NKj$N`2f0K=$j$NN.r^?`Sr^QlXr^m)^r_EGhr_i_sr`];-raPk>rbMLPrcS3drdb!&rf$i@ +rgWn[ri5t$rj;[=rkeZUrm1Smrmq)*ro*k;rp'LLrpTjWrq69brqcWkrquZmj8\';rr2oqrquclrqHEc +rq$-YrpB^NroO.=rnm_-rmUkmrlG)VrkJH@riuI(rh07[rg*PDre^W,rd=]hrc8!Srb2:@ra5Y/r`K/! +r_`Yjr_3;`r^m)YqaL9Ih*Tp_rBfI0pd>$LqaUQVr_*5ar_NMkr`&l!r`fA/raYq?rbVRSrce?hre(3+ +rf6uDrg`t\riH+(rjMg@rl"fWrm1Snrn.5-ro3q=rp0RNrp]pYrq69brqcWkrr)`n\,V$Zr;Zcqrr)io +rqcWgrq??_rp]pSrp0RFro3q7rn.5!rm1Sbrkn`MrjMg2riH*lrgWnQrf6u7re(2trce?^rbVRIraYq7 +r`fA(r`&kor_NMer_!/]r^QcRpd$LqaUQVr_*5ar_NMkr`&l!r`fA/raYq?rbVRSrce?h +re(3+rf6uDrg`t\riH+(rjMg@rl"fWrm1Snrn.5-ro3q=rp0RN!:U$YnG`%Yp&=^bqYpBkrVQSFs0D\( +rr2lqr;QQlp\smco)\@M!:^!Trp0RFro3q7rn.5!rm1Sbrkn`MrjMg2riH*lrgWnQrf6u7re(2trce?^ +rbVRIraYq7r`fA(r`&kor_NMer_!/]r^QcRpd$LqaUQVr_*5ar_NMkr`&l!r`fA/raYq? +rbVRSrce?hre(3+rf6uDrg`t\riH+(rjMg@rl"fWrm1Snrn.5-ro3q=rp0RNrp]pYrq69brqcWkrr)`n +j8\';rr2oqrquclrqHEcrq-3ZrpB^NroX4?rnm_.rm^qorlY5ZrkSNCrj)O*rhKIarg3VGreg].rdOil +rcA'Urb2:Ara>_1r`T5"r_i_kr_Are^W) +rd=]hrc%jQrb;@@ra5Y0r`B)!r_`Ykr_^HmrqucmrqQKdrq69\rpTjRroj@Cro*k3rn.5!rltG`rkn`JrjDa/rhoai +rg`tOrf6u7rdauqrce?\rbVRJraPk6r`oG(r`/qpr_WSgr_*5]r^ZrWr^HfSog>WDogA^Hr^HfUr^ZrY +r_*5br_WSkr`&kur`oG0raPk@rbVRQrce?hrdb!)rf6uArg`t]rhob!rjDaWD +ogA^Hr^HfUr^ZrYr_*5br_WSkr`&kur`oG0raPk@rbVRQrce?hrdb!)rf6uArg`t]rhob!rjDac=2rr)iorql]irqHEcrpp'XrpKdLroO.rilC%rhKI`rg!JErepc.rdOilrc.pTrbMLCra>_2r`K/"r_remr_EGdr^d#YqaUQR +r^?NK^-_*Opd>$Kr^H]Rr^ZrYr_3;dr_WSmr`9##ra#M2raYqCrbh^Trd"Klre(3.rfI,Ergj%`ri5t% +rjVm?rl"fXrm(Mmrn7;,ro*k^HmrqucmrqQKerq??^rp]pT +roj@Cro*k4rn.5"rm(Mbrl"fLrjMg1ri5smrgj%RrfI,;re(3!rd"K_rbh^NraYq8ra#M*r`/qrr_WSh +r_3;^r^ZiTr^HfSpd:rGpd>$Kr^H]Rr^ZrYr_3;dr_WSmr`9##ra#M2raYqCrbh^Trd"Klre(3.rfI,E +rgj%`ri5t%rjVm?rl"fXrm(Mmrn7;,ro*k$Kr^H]Rr^ZrYr_3;dr_WSmr`9##ra#M2raYqCrbh^T +rd"Klre(3.rfI,Ergj%`ri5t%rjVm?rl"fXrm(Mmrn7;,ro*kc=2 +rr)iorql]jrqQKdrpp'XrpKdLroO.=rndY.rmh"prlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'X +rbVRFraPk6r`T5%r`&knr_EGdr^m)[r^ZrWr^HfSnjC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ +ra5Y6ral(FrbqdWrd4Wpre192rf[8Irh'1dri?%(rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??c +rqZQjrqucoZ2]CTq>^HmrqucmrqZQgrq??^rp]pTroj@Cro3q6rn@A%rm:Yfrl+lOrj_s5ri?$prh'1V +rf[8@re19#rd4Wcrc%jQral( +roj@LrpTpY!V5g\pAXgcq>U9jr;QYGs/H%trVl`oqu6Ejq#9sfo'ueOrp]pTroj@Cro3q6rn@A%rm:Yf +rl+lOrj_s5ri?$prh'1Vrf[8@re19#rd4Wcrc%jQral(roj@Lrp]pXrq??crqZQjrqucoh>c=2qu-NlrqcWhrqHE`rpg!Vrp'LGroF(: +rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK*rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGcr_!/] +r^QcRr^?^?jrquclrqQKerq$-Z +rpTjOroa:Aro!e2rn%.rrlkA_rkSNFrjDa.ri#girgNhNrf@&6re(3!rc\9]rbqdLrac"8r`oG*r`B(s +r_WShr_*5_r^m)YqaLKPnjBrSogAUEr^H]Rr^m)]r_*5cr_WSlr`B)%r`oG0rac"ArbqdWrc\9irdt-) +rf@&CrgNh[rhoaurjDa:rkSNSrlkAgrn%/(ro!e:roj@HrpTjV!:p6_oD\L`q>U6fr;QYGs/H%qrVl`o +qYp9hpAsmW!;$3[rpTjOroa:Aro!e2rn%.rrlkA_rkSNFrjDa.ri#girgNhNrf@&6re(3!rc\9]rbqdL +rac"8r`oG*r`B(sr_WShr_*5_r^m)YqaLKPnjBrSogAUEr^H]Rr^m)]r_*5cr_WSlr`B)%r`oG0rac"A +rbqdWrc\9irdt-)rf@&CrgNh[rhoaurjDa:rkSNSrlkAgrn%/(ro!e:roj@HrpTjVrq$-`rqZQiqu$Hl +h>c=2rr2oqrquclrqQKerq-3\rpTjProj@Dro!e2rn7:urm(Mcrk\TIrjVm2ri5snrg`tSrfR2;re:?$ +rd"Kbrc%jOrau.=ra,S.r`K.ur_`Yjr_3;ar_!&Xr^QZNpd<(go0W4>pdG!Kr^Zr[r_*5ar_NMjr_reu +r`];-raPk=rbDFOrcS3crdXp#reg];rg*PRrhTOnrilC2rk/6HrlY5brmC_urn[S3roX4Drp0RPrpp'\ +rqHEfrqcWlrr)iqZ2]CTq>^Hnrr)iorqcWhrqHEarpp'Wrp0RIroX4c=2rr2fnrqcWhrqHEarpp'Wrp9XK +roa:>rndY.rmUkmrlb;YrkJHDrilC&rhf[ergEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMg +r_3;`r^d#Yr^QcRr^?_9rb2:Jrc.p\rd4Wq +reLK4rfd>Lrh'1eriH+'rjr*Crkn`Yrm1Smrn@A-ro*k>rosFKrpTjWrq-3arqZQirr)`nZ2]CTq>^Hn +qu-NjrqQKerq-3\rpTjQrosFFro*k5rn@A#rm1Serkn`Mrjr*5ri?$qrh'1Xrfd>@reLK(rd4Wfrc.pS +rb2:Ara>_1r`T5#r_relr_EGdr_!/\r^ZrWqaLKPnjC8\ogAUEr^HfUr^ZrYr_!/_r_EGgr_i_qr`T5+ +ra>_9rb2:Jrc.p\rd4WqreLK4rfd>Lrh'1eriH+'rjr*Crkn`Yrm1Smrn@A-ro*k>rosFKrpTjW!;$U6irVQSFs/H%trqlZnqYp9hpAspY!;-9]rpTjQrosFFro*k5rn@A#rm1Serkn`Mrjr*5ri?$q +rh'1Xrfd>@reLK(rd4Wfrc.pSrb2:Ara>_1r`T5#r_relr_EGdr_!/\r^ZrWqaLKPnjC8\ogAUEr^HfU +r^ZrYr_!/_r_EGgr_i_qr`T5+ra>_9rb2:Jrc.p\rd4WqreLK4rfd>Lrh'1eriH+'rjr*Crkn`Yrm1Sm +rn@A-ro*k>rosFKrpTjWrq-3arqZQirr)`nh>c=2rr2fnrqcWirqQKcrq$-YrpKdOroj@Aro!e2rmq(s +rm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQrb2:>ra5Y1r`K/"r_i_lr_EGdr_!/]r^d#X +qaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9##ra#M1raGe>rbMLPrcS3drdXp%repc;rg<\U +rh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pYrq69crqZQirr)`nZ2]CTq>^Hnqu-NjrqZQg +rq69^rp]pTrp0RIro="9rnRM(rmLekrl>#UrkAB>rilC&rh07\rg<\Hrepc1rdXonrcS3ZrbVRIraGe5 +ra#M*r`/qqr_WShr_3;`r^m)[r^QcRr^? +rbMLPrcS3drdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pY!;-Bcp&=ac +q>U6irVQSFs/H%trqlZnqYp#UrkAB>rilC&rh07\ +rg<\Hrepc1rdXonrcS3ZrbVRIraGe5ra#M*r`/qqr_WShr_3;`r^m)[r^QcRr^?rbMLPrcS3drdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLes +rnRM1ro="Arp'LNrp]pYrq69crqZQirr)`nh>c=2rr2fnrqcWirqQKdrq-3[rpTjProsFCro!e3rn%/! +rm1Sdrl+lOrj_s6riZ6rrh'1Zrf[8?re^W)rd=]irc.pTrbDFCraGe5r`T5%r`/qpr_NMfr_*5_r^coV +r^QcRr^?NKcpIXspd=pHr^H]Rr^ZrYr^m)^r_^Hnqu-Nj +rqZQgrq??`rpg!Vrp0RJroF(:rn[S*rm^qnrlY5ZrkJHBrj2U,rhTOcrgWnMrf-o6rdauqrcnE^rbh^M +rac":ra5Y-r`B)!r_`Yjr_U6irVQSFs/H%trqlZnqYpc=2rr2fnrql]krqZQerq-3\rp]pS +rp'LEro="8rn@A&rmC_grl4rRrjr*:ric=!rhBC`rfmDDrf$i/rdauqrcA'Yrbh^IraYq8r`oG*r`9"r +r_`Yjr__9rau.I +rc%jXrd=]pre(3/rfI,Drgs+`rhob!rj;[9rk\TRrlb;grmh#%rnm_7roO.Erp9XRrpp']rq??erqcWk +rr)`nZ2]CTq>^Hnqu-NkrqcWirq??`rpp'XrpB^MroO.>rnm_/rmq(rrlb;\rk\TFrjDa/rhoairgs+R +rfI,ra>_1r`T5$r_i_mr_NMfr_!/]r^d#YqaUQRr^?3Bh*UQtr^?`SqaUQT +r^d#[r_*5br_NMjr_i_rr`K/)ra>_9rau.Irc%jXrd=]pre(3/rfI,Drgs+`rhob!rj;[9rk\TRrlb;g +rmh#%rnm_7roO.Erp9XRrpp']!;6HepAXmeqYpBkrVQSFs/H%trqlZnqu6Hkq#U3_!;?Earpp'XrpB^M +roO.>rnm_/rmq(rrlb;\rk\TFrjDa/rhoairgs+RrfI,ra>_1r`T5$r_i_m +r_NMfr_!/]r^d#YqaUQRr^?3Bh*UQtr^?`SqaUQTr^d#[r_*5br_NMjr_i_rr`K/)ra>_9rau.Irc%jX +rd=]pre(3/rfI,Drgs+`rhob!rj;[9rk\TRrlb;grmh#%rnm_7roO.Erp9XRrpp']rq??erqcWkrr)`n +h>c4/rr2oqrqucmrqcWgrq??`rp]pTrp9XIroF(:rn[S+rm^qnrlP/XrkABBrj2U*rhf[frgNhNrf@&7 +re(3"rcnEarbqdOrb)4?ra>_2r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPcpR^uqaCEPqaUQTr^luZr_3;c +qb[8kr`9#%r`oG1raYq?rbMLOrcJ-ardXp#reUQ7rfmDNrh07friH+*rj_sArl"fYrm1Snrn7;,ro!e: +roa:IrpKdTrq-3_rqHEgrql]mrr)iqY5a(QpAb-krr)iorql]krqHEcrq-3ZrpKdProa:Aro!e3rn.5" +rm1Scrl"fMrji$7riH*rrh07ZrfmDCreUQ+rdXolrcJ-XrbMLGraYq8ra#M,r`9"sqb[8er_3;`qapZT +r^QcRr^=psqaCEPqaUQTr^luZr_3;cqb[8kr`9#%r`oG1raYq?rbMLOrcJ-ardXp#reUQ7rfmDNrh07f +riH+*rj_sArl"fYrm1Snrn7;,ro!e:roa:IrpKdTrq-3_!;?Ngp\t$gqu6NmrVleIs.fVnrr2lqr;QTm +q>p?b!;HKdrq-3ZrpKdProa:Aro!e3rn.5"rm1Scrl"fMrji$7riH*rrh07ZrfmDCreUQ+rdXolrcJ-X +rbMLGraYq8ra#M,r`9"sqb[8er_3;`qapZTr^QcRr^=psqaCEPqaUQTr^luZr_3;cqb[8kr`9#%r`oG1 +raYq?rbMLOrcJ-ardXp#reUQ7rfmDNrh07friH+*rj_sArl"fYrm1Snrn7;,ro!e:roa:IrpKdTrq-3_ +rqHEgrql]mrr)iqgAfe)rr2oprql]krqQKdrq-3\rpTjRroj@Cro3q6rn@A&rm:YgrlG)Srk&0;ric=# +rhKI`rg3VIrepc1rdk&rrcnE`rbh^Mrb)4>ra5Y0r`K/#r`&kor_NMfqb-o\r^coVr^QcRmmQV3oL/UF +r^H]Rr^ZiVqb$i\r_rbDFMrcA'_rd=]rreCE1rf[8Jrgj%`ri,n#rjDa; +rkSNSrlb;frmq)&rndY6roX4DrpB^Srpp'\rq??drqcWkrquZmY5a(QoDeghrqucmrqcWhrq??`rpp'W +rpB^KroO.=rndY.rmq(qrlkA_rkSNFrjDa/ri,mlrgj%Trf[8=reCE'rd=]ircA'VrbDFFraPk6r`oG) +r`9"tr_`Yjr_<8_r_!/\qa^WTqaKsAmmHP3r^H]Rr^ZiVqb$i\r_rbDFM +rcA'_rd=]rreCE1rf[8Jrgj%`ri,n#rjDa;rkSNSrlb;frmq)&rndY6roX4DrpB^Srpp'\rq6?e!VlHh +qYpBkr;6JEs.KDkrr2ipqu6Emq"Ojarq??`rpp'WrpB^KroO.=rndY.rmq(qrlkA_rkSNFrjDa/ri,ml +rgj%Trf[8=reCE'rd=]ircA'VrbDFFraPk6r`oG)r`9"tr_`Yjr_<8_r_!/\qa^WTqaKsAmmHP3r^H]R +r^ZiVqb$i\r_rbDFMrcA'_rd=]rreCE1rf[8Jrgj%`ri,n#rjDa;rkSNS +rlb;frmq)&rndY6roX4DrpB^Srpp'\rq??drqcWkrquZmgAfe)rr2oqrquclrqQKdrq69]rp]pUrosFF +roF(:rnRM*rmC_jrlY5Wrk8rnm_1rmh"rrm(M_rk\TIrjDa1riQ0p +rh07\rf[8@repc.rdauqrcS3\rbqdMrau.=ra5Y0r`];%r`&kor_WSir_EGdqb-]Uqa]4,!CfQX8,,[T +9D_E[:B")h;>sPolJ+0@fC!=C&W&MErL4\I/\WpKDpf.O8b=ASGo/[U].CpZ2V01^&GnJ`r=9_ +dJh\qh#?10iVr$>l2L#Jn,DnWo`"Uaq#:*gqu6NmrVQSss+14As8N#srVl`oqu6Ejq#:$eo`"C[n,DYP +l2KlFiVqa6h#>k'df.Pk`rlIq+ +sDk:]=,g9`%KX8c)$-7fGpQ8cDB[9`%Ta;#X>k<;oqt>5he+?iFO6B)ZNDDuOeVFoHdfJ,Y*" +MuJe:P5_!NTDkVbXo>U)[Jml=_Z%RScMl5jec+A'hYuL5kPj`Fli-APo)A:\p\spfq#UU0gp\sganc&"Vli-/JkPjH>hu;F1ec+"rcMki__>_.I[JmH1Xo>*pT`1J\ +P5^L@MuJA.JGsrqFoHF\DuOJMB)Z9=?iF=0>5hS%<;obo;#X8i:B!ra9DD*U8(:$-8,,[T9D_E[:B")h +;>sPolJ+0@fC!=C&W&MErL4\I/\WpKDpf.O8b=ASGo/[U].CpZ2V01^&GnJ`r=9_dJh\qh#?10 +iVr$>l2L#Jn,DnWo`"Uaq#:*gqu6NmrVQTJs4@;MrqlZnr;QQlq#:$eo`"F\n,DbSli-,Ij8S!9h>Z%* +eGdenao96X^](eC[/R9.W;`RkT)P&TP5^L@L]2r*J,X]lFoHC[D>n8KB)Z6X/d +:&%B\8cD947fZ'\84`_Ope1T\r_E>dr_`Ymr`9#"r`K/)ra,S4rau.Drb_XSrcS3brdXp"reLK5rf[8H +rgs+`ri#h"rj;[8rkJHNrlP/crmUkurn[S3ro="Arp'LNrpTjWrq-3arqZQiqu$Hlqu3buJcG?Arr2fn +rquclrqQKerq-3\rpTjSrp0RIro="9rn[S*rm^qnrlP/XrkJHCrj;[.ri#gkrgs+Trf[8@reLK*rdXol +rcS3[rb_XKrau.dr_`Ymr`9#"r`K/)ra,S4rau.Drb_XSrcS3brdXp"reLK5rf[8Hrgs+`ri#h" +rj;[8rkJHNrlP/crmUkurn[S3ro="Arp'LNrpTjWrq-3arqZQiqu$Hlqu5=LeGoFErquclrqQKerq69^ +qsaUOrosFCro3q7rn@A&rmC_hrl>#Srk&0qu-NlrqcWhrqHEbrq$$Vrp9XKroF(#Rrk/6>rilC&rhf[frgWnQrfI,ra>_3ra#M+r`K/$r`&kpqb[/cr_E>boh>-RnkB$W!)EGeqbR)cr_reqr`B)$ +r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07fri?%&rjVm=rkSNRrlb;frmh#$rn[S3 +roF(Arp0RNrp]pXrq69brqZQirql]nqu3PoJcG6>rr2fnrql]krqZQfrq69]rp]pSrp0RHroF(:rn[S, +rmh"prlkA^rkSNGrjVm2ri?$qrh07[rg*PFrf$i4rdaurrd4Wdrc.pUrbDFEraYq8ra,S0r`T5&r`B(u +r_iViqbR2dqb?`Wpe10Or_<8bqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc; +rg*PQrh07fri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQi!;cfoqu6Qkrdk*9 +s8N#pr;lfm!;lclrqZQfrq69]rp]pSrp0RHroF(:rn[S,rmh"prlkA^rkSNGrjVm2ri?$qrh07[rg*PF +rf$i4rdaurrd4Wdrc.pUrbDFEraYq8ra,S0r`T5&r`B(ur_iViqbR2dqb?`Wpe10Or_<8bqbR)cr_req +r`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07fri?%&rjVm=rkSNRrlb;frmh#$ +rn[S3roF(Arp0RNrp]pXrq69brqZQirql]nqu5+FeGoOIqu-Nlrql]krqHEcrq-3ZrpKdQrosFEro3q6 +rn@A'rmC_jrlY5WrkABCrj2U-ri5smrh'1Zrfd>Brepc0rdt,urcnEbrc.pTrbDFFrac";ra5Y1r`];( +r`9"ur`&kpqbd>hqbR2dk"Y_Jr_EMjr)!AiqbmDmr`/qur`T5)ra#M1raPk;rb)4Frbh^TrcS3brdOit +re:?0rf@&BrgWnZrhKImriZ7,rjr*CrkeZWrltGirn%/'rndY6roX4ErpB^Rrp]pZrq69brqcWkrquco +qu3PoJcG6>rr2fnrqucmrqcWgrq??`rp]pTrpB^LroX4>rndY.rn%.srm(McrkeZKrjr*8ric=$rhKIb +rgWnNrf@&:re:?'rdOikrcS3[rbh^Mrb)4@raPk6ra#M,r`T5$r`/qsr_iVjr_WJfr_DTMqbI,dqb[8h +qbmDmr`/qur`T5)ra#M1raPk;rb)4Frbh^TrcS3brdOitre:?0rf@&BrgWnZrhKImriZ7,rjr*CrkeZW +rltGirn%/'rndY6roX4ErpB^Rrp]pZrq69brqcWk!;llqr;QZlrdk*9s8N#pr;lio!;uinrqcWgrq??` +rp]pTrpB^LroX4>rndY.rn%.srm(McrkeZKrjr*8ric=$rhKIbrgWnNrf@&:re:?'rdOikrcS3[rbh^M +rb)4@raPk6ra#M,r`T5$r`/qsr_iVjr_WJfr_DTMqbI,dqb[8hqbmDmr`/qur`T5)ra#M1raPk;rb)4F +rbh^TrcS3brdOitre:?0rf@&BrgWnZrhKImriZ7,rjr*CrkeZWrltGirn%/'rndY6roX4ErpB^Rrp]pZ +rq69brqcWkrqucoqu5+FeGoOIqu-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+rmUknrltG]rkeZK +rjMg3riZ6trhBCarg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5&r`B)!r`&kqr_iVj +h,+)J!)i_mr_reqr`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZrd"Kkrdb!%re^W8rfd>Irh'1brhf[t +rj)O3rkABJrl+l]rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??crqcWkrqucoqu3PoJcG6>rr2fnrqucm +rqcWgrq??arpg!WrpTjOroa:Bro!e2rn7;"rm:Yhrl+lRrkAB?rj)O+rhf[hrh'1Urfd>Bre^W-rdaur +rcnEbrc%jSrbVRHral(;ra>_3r`oG*r`K/$r`/qsr_reoqbc0Gr_`Pjr_reqr`/r!r`K/&r`oG.ra>_6 +rac"@rbVROrc%jZrd"Kkrdb!%re^W8rfd>Irh'1brhf[trj)O3rkABJrl+l]rm:Ynrn7;,ro!e;roj@H +rpTjUrpg!\rq??crqcWk!;llqr;QZlrdk*9s8N#pr;lio!;uinrqcWgrq??arpg!WrpTjOroa:Bro!e2 +rn7;"rm:Yhrl+lRrkAB?rj)O+rhf[hrh'1Urfd>Bre^W-rdaurrcnEbrc%jSrbVRHral(;ra>_3r`oG* +r`K/$r`/qsr_reoqbc0Gr_`Pjr_reqr`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZrd"Kkrdb!%re^W8 +rfd>Irh'1brhf[trj)O3rkABJrl+l]rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??crqcWkrqucoqu5+F +dJs4Fqu-Nlrql]jrqQKerq-3[rpTjQrp'LHro3q8rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbM +rfI,.r`oG+r`T5&r`B)"qc3Vpku7R\qc*Vs!EN8#=8l>$ +=oMV(>lJ%+?iFL5A,^0@CAr,MDuOhWG5cmgIf=otM#N>3OT(LDRJrfWUAh+jY5Ya+\Gj2@_>_IRbl5rf +eGe,"hYuI4ir80@lMg/Ln,DnWo`"Uaq#:*gqu6NjrVlems+14;s8N#prVl`oqu6Ejq#:$eo`"C[n,D\Q +lMg#Hir7m8hYu1,eGdenbl5Z^_>_.I\,N]4Y5YC!UAgb`RJrHMOT(4lIq+=oMP&=8l7t$=oMV(>lJ%+?iFL5A,^0@CAr,MDuOhWG5cmg +If=otM#N>3OT(LDRJrfWUAh+jY5Ya+\Gj2@_>_IRbl5rfeGe,"hYuI4ir80@lMg/Ln,DnWo`"Uaq#:*g +qu6KnrVZWnrdk*3s8N#qr;cfqr;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM? +ZMq$+W;`OjT)P/WPl?dDN;eY4Jc:/uI/\5h\(=T2D$5he+?2J".@K'd9B`;cGDZ4SRF8g@^I/\ToJc:K)MuJh;Pl@*MT)PJ`W;`t!ZMqB5 +^&GkI`r=3]ci2Gnf`'b,i;Va8kl0lHm/HJQo)A:\p\sseq>U9jr;6HlrmCbks8N#prVl`oqYplIt,>5h\%=T2Cd_6ral(@rb)4G +rbh^SrcS3brd+Qnre(3)rf$i;rfd>Lrgj%^ri#gtrilC2rk&0Frl+lZrm1Smrn%/(rnm_7roO.Drp0RO +rp]pYrq-3brqZQiqu$Hlqu3GlJcG$8rr2fnrquclrqZQgrq-3\rp]pTrp0RJroO.>rnm_0rn%.urm1Sd +rl+lPrk&0=rilC'ri#girgj%Vrfd>Crf$i2rdt-!rd+QfrcS3Zrb_XMrb)4Bral(;ra>_4ra#M.r`fA* +r`T,#r`A>br`Au!r`T5(r`fA,ra#M1ra>_6ral(@rb)4Grbh^SrcS3brd+Qnre(3)rf$i;rfd>Lrgj%^ +ri#gtrilC2rk&0Frl+lZrm1Smrn%/(rnm_7roO.Drp0ROrp]pYrq-3brqZQiqtpHm!WDuordk*0s8Muu +rVc]nrquclrqZQgrq-3\rp]pTrp0RJroO.>rnm_0rn%.urm1Sdrl+lPrk&0=rilC'ri#girgj%Vrfd>C +rf$i2rdt-!rd+QfrcS3Zrb_XMrb)4Bral(;ra>_4ra#M.r`fA*r`T,#r`A>br`Au!r`T5(r`fA,ra#M1 +ra>_6ral(@rb)4Grbh^SrcS3brd+Qnre(3)rf$i;rfd>Lrgj%^ri#gtrilC2rk&0Frl+lZrm1Smrn%/( +rnm_7roO.Drp0ROrp]pYrq-3brqZQiqu$Hlqu5"CcN!nCqu-NlrqcWirqQKcrq-3\rp]pSrp0RGroF(; +rndY.rmq(qrlkA_rkeZKrk&09rilC(rhTOergs+Trfd>Brf$i3rdt-"rd=]jrcA'ZrbqdQrbDFGral(> +raPk7qd95+r`oG,r`\Phr`];*rEKA.>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en; +PQ$mIT)PG_V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3irVQSj +s+148s8N#prVl`oqYp@fBd4?i+..>lIt,>3T2h>5hb'>lJ%.?i+71 +@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA% +hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU0jr;llqqu20HNrT+X!WDuqrVl`oqYp@fBd4?i+..>lIt,>3T2h>5hb'>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ) +N;en;PQ$mIT)PG_V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3i +rVQTAs3(H;rVl]nqYpZ.-eGdkpcMkoa`;[ON]Df8Urql]krqZQfrq??`rp]pUrpKdN +roa:Aro!e3rn@A$rmC_jrlG)WrkJHErjMg2riQ0trhBCargNhQrfI,=repc/rdk&urd4WhrcS3[rc%jT +rbVRKrb;@Eral(=raPk8ra5Y4oj@K#pg=#.ra5Y5raPk:ral(Arb;@IrbVRPrc%jVrcS3brd4Wordt-& +repc9rfI,GrgWnZrhBCjriQ1)rjMgnGPE;jnWFoHR`HN&n(e,I\mbl5]__u@CL +])K/;Yl:a'W;`OjT)P5YQ2ZsGO8b"8L]2r*JGsurHN&*eFT-=[E;jbSD>n;LB_uHAB)ZB:A,]s4@JaO/ +A,^'=B)?6?C&VlHD>nGPE;jnWFoHR`HN&n(e,I\mbl5]__u@CL])K/;Yl:a'W;`OjT)P5YQ2ZsGO8b"8L]2r* +JGsurHN&*eFT-=[E;jbSD>n;LB_uHAB)ZB:A,]s4@JaO/A,^'=B)?6?C&VlHD>nGPE;jnWFoHR`HN&bs8N#prVl`oqu6Hkq#:$epAX^`o)A+Wmf)POkl0ZBir7j7gA]\&df.VmbPoQ] +_#D%H]Df/9Z2Up*VZ*@iTDk>ZQN!'HO8b(:M>i/,Jc:/uHiAnANC]8)JC&;QBB('=. +B)ZHBB`MlKC23``rbVRNqeuIRrcA'^rcnEhrdXoure(3,rf$i;rf[8IrgWnZrhKIiriZ7)rj2U9rkABI +rl>#]rm:Ymrmq)&rnm_7roF(Brp'LNrpTjWrq-3`rqHEerqcWkrqucoqu35fJcFp5rr2fnrqucmrqcWh +rqHEcrq-3\rpTjSrp0RIroF(#Rrk8#]rm:Ymrmq)&rnm_7roF(Brp'LNrpTjWrq-3` +rqHEerqcWkrqucorVcisrdk*'rrN,u!<2lorqucmrqcWhrqHEcrq-3\rpTjSrp0RIroF(#Rrk8#]rm:Ymrmq)&rnm_7roF(Brp'LNrpTjWrq-3`rqHEerqcWkrqucoqu4e=bQ%S@q#13irql]k +rqQKerq69_rpg!WrpB^Nroj@Cro*k6rnIG*rmLemrm(M`rl"fNrk&0#`rm:Ymrn7;+rnm_6roO.Crp0RNrp]pWrq$-^rqHEf +rqcWkrquZlqu35fJcFp5rr2]krqucmrqcWhrqHEbrq-3[rp]pSrp0RIroO.#V +rkJHErjMg3riZ7#rhf[frgs+Zrg!JGrf@&:re^W/rdk'!rdOinrd+QgrcJ-[rc.pVqeuIOk&(!5rbq[Q +rc.pYrcJ-ard"KirdOirrdk''reUQ3rf@&Arg!JQrgs+^rhf[oriZ7+rjVm=rkJHMrl>#`rm:Ymrn7;+ +rnm_6roO.Crp0RNrp]pWrq$-^rqHEfrqcWkrquZlrVcisrdk*'rrN,u!<2clrqucmrqcWhrqHEbrq-3[ +rp]pSrp0RIroO.#VrkJHErjMg3riZ7#rhf[frgs+Zrg!JGrf@&:re^W/rdk'! +rdOinrd+QgrcJ-[rc.pVqeuIOk&(!5rbq[Qrc.pYrcJ-ard"KirdOirrdk''reUQ3rf@&Arg!JQrgs+^ +rhf[oriZ7+rjVm=rkJHMrl>#`rm:Ymrn7;+rnm_6roO.Crp0RNrp]pWrq$-^rqHEfrqcWkrquZlqu4e= +bQ%A:qu-NlrqcWirqQKdrq-3]rpg!VrpB^Lroa:Bro!e4rnRM(rmUkmrlkA_rl"fNrk&0>rj)O,riH*r +rhKIbrgWnRrfmDDrf-o8reCE*rdt-"rdOiord+Qgrc\9`rcJ-\h/WF8!-A6`FT-F^G5cacHN&Pl@$KS,T&ZU]..iXT#F&ZMqB5]DfSE`;[jWbl5rfe,Iqth#?10i;Vj;kPj`FmJcSR +nc&.Zp&=[aq#:*gqYU3irV6Aas+145s7lTjrVl`oqYpn( +e,I\mbl5]_`;[ON]Df>>ZMq',XT#*rU]-nbS,ScRPl?dDNW+k8LAll*K)U<"If=`oHN&0gG5cX`FT-@; +EW1%YFT-F^G5cacHN&Pl@$KS,T&ZU]..iXT#F&ZMqB5]DfSE`;[jWbl5rf +e,Iqth#?10i;Vj;kPj`FmJcSRnc&.Zp&=[aq#:*gqYU3irVHKorr.KKL&V2QrqcWkrVl`oqYpn(e,I\mbl5]_`;[ON]Df>>ZMq',XT#*rU]-nbS,ScRPl?dDNW+k8 +LAll*K)U<"If=`oHN&0gG5cX`FT-@;EW1%YFT-F^G5cacHN&Pl@$KS,T&Z +U]..iXT#F&ZMqB5]DfSE`;[jWbl5rfe,Iqth#?10i;Vj;kPj`FmJcSRnc&.Zp&=[aq#:*gqYU3irV6B8 +s2G$;rqlZnr;QTmqYpZi70- +XT#0tV#I%dSc5)WPl?jFO8b.rkSNMrlG)^rm:Ymrmq)%rnm_6ro3q?rosFJ +rpTjVrpp'\rq69brqZQirqlTjrr)`nSH"0?iW&oVqu-Nlrql]krqZQfrq??`rpp'XrpTjProsFFro3q8 +rnm_.rmq(srm:YgrlG)UrkJHGrjMg4ric=&ri#glrh07]rgNhNrf[8Arf-o7reUQ,rdt-!rdausrd=]k +rd"KfpiZ%IpiZR\rd"Khrd=]nrdautrdt-&reUQ2rf-orkSNM +rlG)^rm:Ymrmq)%rnm_6ro3q?rosFJrpTjVrpp'\rq69brqZQirqlTjrr)`n!<7WMJcG]Krr2fnrqucm +rqcWirqHEcrq-3\rp]pUrp0RJroa:?ro!e5rn7;%rmLemrlkA_rkeZLrk8<>rj2U-riH*trhTOdrgj%W +rfmDFrf@&IrcnEfrd+QkrdFcrrdXp!re19,reg]7rf@&A +rfmDNrgj%]rhTOkriH+&rj2U4rk8riuI+riQ0srhKIcrgs+Yrg<\KrfR2@rf-o8re^W/re19'rdalq +pjW*gpjE'hpjW3lqgeZure:?+re^W4rf-o#SrkABDrjMg4rilC( +ri,morhBCargj%Urg*PJrf[8Brf6u:reg]2reCE+re0rrrdjrsrdj`ore(9*!JQ7,LAm#.MZ/S6NrG.> +P5^^FQN!9NSc5;]UAh%hWW'%!Yl;$/[f3o<^AbtJa8X6\c2Q)heGe%uh#?10i;Vg:k5OWEmJcPQnG`"X +o`"O_q#:*dqYpBkr;QZlrg*S8s5*eTrqlZnr;QTjqYpn( +e,I_nc2Piaa8WpS^AbbD[f3W4Yl:d(WW&doUAgeaSc5#UQN!-JP5^RBNrG":MZ/G2LAlo+K_9rrJbsus +Jb=WoK`6])LAm#.MZ/S6NrG.>P5^^FQN!9NSc5;]UAh%hWW'%!Yl;$/[f3o<^AbtJa8X6\c2Q)heGe%u +h#?10i;Vg:k5OWEmJcPQnG`"Xo`"O_q#:*dqYpBkr;QZlrqcYGs+14Hs8N#prVl`oqtp6hq>U0gp&=U_ +o)A.Xmf)VQl2KlFjSn*:hYu=0f)F.td/M;hao9?[_>_1J]Df8=!VZ*=hTDkD\R/WENPl?jF +OT(:>N;e_6M#N/.L&QbuK)U>uJGt,mK)UH&L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\bVZ*RoXo>R( +[/RN5]DfPD_>_LSb5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6NmrVQT2s2+g8 +rqQHkr;QTmqYpibl5T\_u@FM]`,G?[JmE0 +Y5YO%VuELkT`1S_SGnuVQN!-JPQ$[CO8b1=N;eb7MYN#,L]3&*L&Qi+L\Q])M?&P8Mi7Rnrf6u=rfI,C +rg!JKrgNhVrh'1_rhTOkriH+%rilC0rj_s?rkJHLrl+l\rm(Mirm^qurn7;.ro*k9roa:Frp0RPrp]pW +rq-3_rq??drqZQirql]mqu-EkQN)O9hZ*TSq#13irql]krqZQgrq??arq-3[rp]pUrp0RJroa:?ro!e5 +rn7;&rm^qorm(Merl+lSrkJHFrj_s8rilC)riH*srhTOdrh'1[rgNhPrfmDGrfI,?rf6u:repc5pk\p) +reC<(reCE-pk\p,repc7rf6u=rfI,Crg!JKrgNhVrh'1_rhTOkriH+%rilC0rj_s?rkJHLrl+l\rm(Mi +rm^qurn7;.ro*k9roa:Frp0RPrp]pWrq-3_rq??drqZQirql]mqu-EkqYu-HJcGTHrr2]krqucmrqcWi +rqQKdrq69_rpg!WrpTjProsFFro3q8rnm_.rn%/!rm:YirlkA\rkn`Mrk/6?rjDa0riZ7%rhoakrh07_ +rg`tVrg*PJrfd>Crf@&=rf$i7regK,reLK-qh>$(reL9)reg]5rf$i:rf@&?rfd>Hrg*PPrg`t[rh07d +rhoasriZ7)rjDa8rk/6FrkeZRrlkAerm:Yormq)%rnm_6ro3q?rosFJrpTjUrpg![rq69arqQKgrqcWk +rquZlqu4J4]`8!1q#1*erqcWhrqHEcrq-3\qsXONrp0RHroO.#SrkJHG +rji$:rj)O-riQ1#rhf[jrh9=args+ZrgEbQrg*PJrfd>ErfH9'qiLf?!0[GIPQ$gGQN!6MRJr`USc5;] +U&LkeVZ*XqXo>R(ZMq<3\c0;A^])(Ka8X6\c2Q&ge,IqtgA]n,i;V^7jSn?Ali-;Kn,DnWo`"R`p\ssb +qYpBerVQSXs+14&s8N#mrVQKkqYp9hp\smco`"FYn,D\Qli-)Hjo46C#VZ*CjU&L_aT)P8ZRJrTQQN!-JPQ$aEOQMW$OT(FBPQ$gGQN!6MRJr`USc5;] +U&LkeVZ*XqXo>R(ZMq<3\c0;A^])(Ka8X6\c2Q&ge,IqtgA]n,i;V^7jSn?Ali-;Kn,DnWo`"R`p\ssb +qYpBerVQTgs+13$s7H?jrqQHhqu6Hkq#:$epAX^`o)%nTm/H>MkPjTBiVqd7h>Z.-f)F.tci22gao9?[ +_>_4K^&GSA[f3T3Yl:d(X8]!qV#I(eT`1P^SGnrUR/WENPl?mGP5^R*O8G%_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\pAXgc +q"speqtU-erkJKGs82fmrVl`oqu6Hkq>U0gp\sjbo`"F\nG_kTmJcALkl0`Dir7j7h>Z+,fDa7ud/M;h +bPoN\_u@IN^AbbD\Gil7ZMq',Xo>@"W;`XmU\g_`T)P8ZRf8`SR/WHOQM?a?Pl$aFQN!6MQiNNTR@4&C +rg`tYqk3q`rh]Umri5t"ric=,rj;[7rjr*CrkSNOrl4r\rltGhrmUktrn7;,ro!e8roX4CrosFLrpKdT +rpp'\rq69brqQKgrqcWkrqucop&:0TJcFC&qu6KkrqucmrqcWirqQKerq69_rpp'XrpKdQrosFGroX4> +rnm_2rn7;&rmUknrltGcrl4rTrkSNIrk&0>rj;[1ric='ri5srrh]Uhqk3q[rg`tVrgEbQrg3VMpm(W= +qj%/Hrg3VOrgEbSrg`tYqk3q`rh]Umri5t"ric=,rj;[7rjr*CrkSNOrl4r\rltGhrmUktrn7;,ro!e8 +roX4CrosFLrpKdTrpp'\rq69brqQKgrqcWkrqucop&=^cJcC<$o`+gfqu-Nlrql]krqZQgrqHEbrq-3\ +rp]pTrpB^Lroj@Dro3q7rn[S,rn%.urm:Yhrlb;\rkn`NrkABDrj_s7rj)O,riQ1"ri#gmrhK@`rgs+Z +rgNhSrg<\Org*>EpltZ@rg*PMrg<\QrgNhVrgiqZrhKIhri#grriQ1'rj)O1rj_s=rkABIrl"fUrlb;c +rm:Ynrmq)%rn[S3ro3q>roa:FrpB^Qrp]pXrq-3_rqHEerqZQirql]mrr)Nh^]1kErr2fnrquZjrqcWi +rqQKdrq69_rpg!WrpTjPrp'LHroF(_FQao9Qaci2>ke,ItugA]t.hu;X7jSnBBl2L#Jn,DhUnc&1[p&=[aq#:*gqYpBhr;QZlrf-r/ +s4./KrqlZnr;6BjqYp_7L +^Ab_C\,Nc6Yl:j*Y5YL$WW&gpV#I+fU&L_aTDkGZSc5/VS+rHOS,8`TSc55[TDkM_U&LhdV#I:kWW&st +Y5YX(Yl;$/\,Nu<^AbnH_>_FQao9Qaci2>ke,ItugA]t.hu;X7jSnBBl2L#Jn,DhUnc&1[p&=[aq#:*g +qYpBhr;QZlrpg#>s+14?s8N#prVl`lqu6Hkq>U0gpAXaao`"C[nG_nUli-2Kkl0ZBir7j7hYu7.fDa7u +df.Slc2Pf``W!^Q_#D(I])K2<[/RU6iqtpZ+,fDa>"d/MAjcMkrba8X$V_>_7L^Ab_C\,Nf7ZMq*-YPt^(XT#:"WW&jqVYd4hV!k)UV#I4iV?!Lp +Vl0Nnri?%#riZ7(riuI.rjDa8rjr*CrkJHKrl"fUrlP/brm1Sjrmh#"rn7;,rnm_6roO.Broj@IrpBUO +rpp'\rq??crqQBerqlTjrr)`nMZ88-ci="Dqu-NlqtpBhrqQKerq??`rposTrp9XMroj@DroO.#Vrk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRhrhT"XqkX4frhf[mri,mt +riQ1&ric=+rj)O2rj_s=rkABHrk\TPrl4rZrm(Mhrm:Yprn%/&rn[S2ro*kI&ZMq30 +[JmZ7\Gj,>^&GeG_>_CP`r=-[bPofdd/MMnec+8$g]$%.hu;X7jSn?Al2KuImJcSRnG`%Yo`"O_p\sse +q>U6iqtpU0gp\sjbo`"I]nG_kTmJcDMkl0cEjSn0ibl5ca`r_4K]`,PB\Gir9[JmN3ZMUm*Y5YQuX8]-oWV`^jX8]7#Y5>I&ZMq30[JmZ7 +\Gj,>^&GeG_>_CP`r=-[bPofdd/MMnec+8$g]$%.hu;X7jSn?Al2KuImJcSRnG`%Yo`"O_p\sseq>U6i +qtpZ.-g&BP$ +e,I_ncMl&eb5TE[`;[UP^](nF]Df>>[f3]6Zi79-Yl:g)Xn\srWq`RjWq`XoXo>L#Yl:s-Zi7B3\,No: +]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb*h>Z=2ir8$U0gpAXaao`"F\nc&"Vmf)POl2KiEjSn3=i;VU4h>Z(+f)F5!dJhMl +ci2,eao9_@O`;[aTaSs<\bPofdci2;jeGe%uf`'Y)h>?.0j8S-=kl0iGlhg,InG`%Y +o`"U^q"speqtp?])0&5\Gj&9])K>@]`,VD^AbnH_#D1L_u@UR +`W!sXao9K_cMl/hd/MPof)F>$g]$%+i;Vd9jSnBBl2L#GmecMQoD\C]p\Xa_qYpBhr;QZirojB5s+146 +s7lTjrVl`lqu6Hkq"sgbo`"FYnG_nUmf)POlMg#HjSn09i;VR3g]#k)f)F1ud/MAjcMl#db5TK]`W!gT +_u@LO_#D+J^AbhF]_f>?])0&5\Gj&9])K>@]`,VD^AbnH_#D1L_u@UR`W!sXao9K_cMl/hd/MPof)F>$ +g]$%+i;Vd9jSnBBl2L#GmecMQoD\C]p\Xa_qYpBhr;QZirilF,s7QBjrVQNlqu6Hhq>U0gp&=U_oD\:Z +nG_nUmJcJOlMg#Hk5OH@ir7m8hYu:/gA]e)ec+(tdJhMlcMl&eb5TN^aSs3Y`W!gT_Z%CK_#D+5^AbnE +^];1O_86,frl"fTrl4rYrlP/^rlkAdrm:YlrmUksrn7;)rnIG/ro!e8roF(@roj@Hrp0RNrpTjUrpg!Z +rq-3_qtU0drqcWkqu$Hlp&9XEJcEsop&=shqu$HjrqcNfrqQKcrq-3]rpg!WrpTjRrp9XLroj@DroF(< +ro!e4rnIG+rn7;$rm^qprm:YirlkAarlP/\rl4rVrl"fQrk\KIrkI^3rkJ?Grk\TNrl"fTrl4rYrlP/^ +rlkAdrm:YlrmUksrn7;)rnIG/ro!e8roF(@roj@Hrp0RNrpTjUrpg!Zrq-3_qtU0drqcWkqu$Hlp&=1T +JcC<$kl:>Trr)`lrql]kqt^6drq69_rq$-Zrp]pUrpB^Orp'LHroX4@ro3q8rndY/rn@A)rmh"trmC_l +rm(MerlY5^rlG)Yrl+lTrkeZNqnW3Gl+[/3qnW3IrkeZQrl+lVrlG)\rlY5arltGhrmC_ormh#$rn@A+ +rndY4ro3qrknWOrl+cSrlP/^rlb;crm(Mirm1SkrmUktrn%/& +rn[S1qr%J6roF(ArosFIrpB^QqsaUUrq$-^rq??crqZHfrqlTjrr)Nhjo9o3JcFa0qu6KkrquZjrqcNf +rqHEcrq69^rposUrpKdQrp'LHroa:Aro3h5rndY1rn7;'rmq(trmLelrm:YirltGcrlY5^rl4iSrl"]O +n&#(Aqo&KQqo8WWrlY5`rltGfrm:YjrmC_ormq)#rn7;,rndP1ro="=roa:Frp'LMrpK[Qrpp'[rq69a +rqHEfqtgU0gp\smc +p&=U_nc&%Wn,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0gA]e)f`'G#eGdnqdJhMfci25ec2PrUbPTN_c25f` +ci2;jdJhSne,Insf`'S'gA]n,h>?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[p&=[ap\sseq>:$fqtU-b +rnma,s+14-s7lTgrVQKkqYp?")g[Ekqg\'A$h>?+/i;VX5iVqj9jSn9?k5OTDl2KuIm/HDOmf)\P +nG`%Vo_A1[q>:$fqtp:$fqtpU0ap&=R^o)%qUn,DbSm/H>MlM0TBk5OKAjSS!:ir7p9 +i:Z!rh=]Y*huVcoro*b6ro="=roO.Apuq_Brp0RMqsO@Nrpp'[q"=OZrqZHfrqlKgo)=4?n,It=[/]gu +q#($drqcNfrqQ9]rq$-[qsaURrpKdPrp0RKpuq_>roO.?qr@\8ro*k7p##5op##c,ro*b6ro="=roO.A +puq_Brp0RMqsO@Nrpp'[q"=OZrqZHfrqlKgo)@,roO.?qr@\8ro*k7p##5op##c,ro*b6ro="=roO.Apuq_Brp0RMqsO@Nrpp'[q"=OZrqZHf +rqlKgo)>-YQ2gXYq#13iqtpBhqt^-`rq??`qt'^TrpTjUrpTjSrp9XMrp'LHqrdt@qrRhkPOKBlMg,Km/-5MnG_nUnG_tWoDA1WpAXgcq>:$fqtpjSn34ipYk!ir8!;jSn99pcpAX^]oDA(W +n,DhUn,DbSm/H>MlMg#EkPjW@jo4??j7VF#iUu40j8S-=jnn3>kPOKBlMg,Km/-5MnG_nUnG_tWoD\C] +o_\@]p\t!cqYpBhr:p6crg!MBs8N#grVl`oqtp6eq=s^]p&=U_o)A1Yn,DhUn,)PPmJcJLli-2Hl1O9/ +kOds=kii$1qs+1Hrp9XOq!S.NrpTjVrposYrq6'\rqZ?crql]mp&4deJcF[.JcD\Krr2Kerqucmqtg3c +rqHU0dp\sm`p&=U\oD%kQnG_nUnGD\LmdKQ:$fqtp>mJ-,Hn,DhUn,)VLnc&.Wo`"O\pAXg`q#:*gqYp?jqtpU0ap\XX\o_\7Zo)%t5nG_qXo)/(XoC_bTp%\:Yq#:*aqYpBhr:U$]rdk+!s+13U0ap\XX\o_\7Zo)%t5nG_tTo)A7Ro`"OYp\Xabq=sgcqtpoE"UVp%A4UrqHpUqt0%B +p%7qMqtC$`qtU'aqtg*bqu$Hkrr)3_Jc>`MJcGBBqu60bq#($dqtg!]rqQ'YqtB1Fp\"X]p@\1Wq"sm[ +qYpBer:U$]rdk*ms+133s82fjrVQQgr;6BgqXs[`q""1Vp?)&@p@\1Wq"sm[qYpBer:U$]ric?Qs+13O +s82fdrV6U0[p\X[Hp%A%Op\Xa_q=XU`qtU*drVQQdrdk+Ds+146s7lT^rV6qss[Irh0:Bs+13C +s5s=Rr8[\:qW[nJr9=4[rdk+5s+14's7QBUrUTmKqtL$^r9XCQrdk*Rs+13$s7QEbrosCPr9!nCr9XCQ +rfmG6s+134s7QBUrUTmKqs=7IrUTs_s+143s+13gs6Ta7r;ci^rdk*:s+13$s5s+143s+13gs1\Ktrdk*:s+13$s5 %APLeod +EI +52 0 0 52 0 272 cm +BI +/Width 156 +/Height 156 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkPJcC<$JcDkP +JcC<$JcDkPJcC<$JcDkPJcDhOf)>^Lrdk*Qs+13gs6Ta7r;ci^rdk*fs+14's7QBUrUTmKqtL$^r9XCQ +rdk+)s+14-s8N#^rUp*]qptTEqYL*do).kQqu20HhuA9-kl:GWn,<%Zqtos\eG0+@mJ?hZq#'UZq#5jE +kl656o`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU`qtU*^rUp/@s7cPEs7cQmrpTgbr:p0g +qYU*`q"sgYpA=O^o\K-;oE"UVrq5jUrqH3_rqZHfq"ssdo)8ReJcGKEJcG]Kqu60brquZjq"jm`rqQ9_ +qt9jYqt'gXqsiM3rp^!Zr:9jYp%87Vq"O[\rqZ?crqlTjp&4R_Jc>`MLB%/Mo)8RcqtpBhqt^6dqtL*` +qt9s\qt'UQqsaURrp]gRq!RV:$fqtpkPOKBlMg,Km/-5MnG_nUnG_tWoDA1WpAXgcq>:$f +qtp?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[p&=[a +p\sseq>:$fqtU-brhodrs82fmrVl`lqu6Hhq>U-fpAXaaoD\=XnG_kTmJcDMkl0cEjSn09i;VU4h>Z+, +f`'J$e,Iepci2;jcMl)fbPoZ`ao9U0gpAXaa +o`"F\nc&"VmJcGNlMfuGk5OKAiVqd7hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y`;[[R_Z%CK_#(n8 +^&,SA^];7L_Z%IP`W!mVaSs<\b5TWac2Q)hdJhVoec+5#g&Bb*hYuF3iVqsZ1.f`'J$ +eGdhoci25hbPoZ`aSs0X`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfGC]`Gg[rkABHrkSNLrkn`R +rl+lXrlP/_rm(Mhrm:Yormq)$rnIG.qr%J6roF(BrosFJqsO@Nrq$-]rqHZ=2i;Vd9jo4EAl2L#Jmf)\Snc&+Yo`"O_pAXjdq>U6iqtpZ.-g&BM#e,IbocMl#dao9>[f3]6Zi790 +YPtd*Y5>="X6HY`X8AsuXT>Q+rilC*riuI/rjDa7rj_s>rk8#Vrk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRh +rhT"XqkX4frh][n!N2jpWW&stXo>L&YPtg+ZMq92\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2 +iVqsU0gpAXaao`"C[nG_nU +li-2Kkl0ZBir7j7hYu7.fDa7udf.Slc2Pf``W!^Q_#D(I])K2<[/R#VrkSNIrk&0?rjDa2ric=%ri5srrhTOfrh07_ +rgj%YrgNhSrgMkPjTBiVqd7h>Z.-f)F.tci22gao9?[_>_4K^&GSA[f3T3Yl:d(X8]!qV#I(eT`1P^ +SGnrUR/WENPl?mGP5^R*O8G%#\rltGgrmUktrn@A,ro!e7roF(Arp0RNqsXOTrq-3`rqHEeqtgCrf@&=rf$i7regK,reLK-qh>$(reL9)re^]6!K2m8N;ek:O8b7?PQ$jHQN!?PSGo/[ +T`1bdVuEdsY5Y[)[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhUnc&1[p&=[aq#:*g +qYpBkr;6Hirke]Ps8N#mrVl`oqu6Ejq#:$ep&=U_o)A.Xmf)SPl2KlFjo43;h>Z1.f)F.td/M;hao9?[ +_>_4K]`,A=Zi73.XT#3uVuEChTDkD\RJrQPQ2ZpFOT(:>MuJV5M>i8,L%p;hJbXlsK`Hl*LAm&/MZ/P5 +NrG+=OoCXFQiU9jr;6Hirke]Ps8N#prVl`oqu6Hkq>U0gp\sgao)%nTm/H>MkPjQAi;VX5g]#n* +df.VmcMkoa`W!^Q^AbbD\Gic4YPt['VZ*@iT`1P^S,SfSPQ$^DO8b.iG4NW,"O'Z2V94])KGC_>_FQaSsKad/MJm +g&Be+hu;R5jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr;QZlrke]Ss8N#prVl`oqu6Hkq>U-fpAX^`o)A.X +n,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4YPtX&W;`UlT`1M]Rf8QNP5^OANW+h7M#N), +K)U9!JGt#sI/\HkH2`'`FmjGIFoHUcGl`29rd+QkrdFcrrdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOk +riH+&rj2U4rk8riuI*ri?$p +rhKIbrg`tTrfmDDrf-o8reLK,rdt-"rdOiord"Kfrce6^rcJ-[qf2(Drc.gUrH&'^FT-F^GQ)jdH2`3j +IK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$Z2V94]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lH +m/HGPnG`%Yp&=[aq#:*dqu6NjrVlf;s3(HArqQHkr;QTmqYp9hp\sjbo`"C[nG_hSli-,Ijo46ia8X$V^](kE[f3T3Y5YI#VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qS +DuOY:D>S5MDZFbSE;jkVF8g:\GlE!fHiAKnJ,Y#uLAm#.MuJe:P5^aGSGo,ZT`1hfWW'("ZMq?4]DfSE +_u@^UcMl2idf.r!h#?41iVqsU6iqu6NjrVQT;s3(HArqlZnr;QTmqYp9h +p\smco`"F\n,DbSli-,IjSn0rnm_2rn%/!rm:YgrlG)V +rkJHDrjMg1riH*urhBC`rgWnPrf[8Are^W0re(3#rdFclrc\9_rc8!Wrbh^OrbDFHrb2:Crakt;raY2% +raYh9!+c1BAc?<@B`;`FCAr&KDZ4VSErL1[G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh.kXo>R([f3l; +^]).Ma8X<^d/MPofDaV*i;Va8k5OWEm/HJQnc&+Yp&=[ap\t!fqYpBerQG5as7lQlqu6Hkq>U-fpAX^` +nG_nUmf)MNkPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9h +FoHC[E;jeTD#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?N=L8@:B.EraYq=rb)4ErbMLLrbqdTrc.p[ +rcnEhrdXp!re19/rf6u>rg3VRrh'1ari#guriuI2rk&0Erl"fWrm(Mjrm^r$rnRM2roF(Brp'LNrpTjU +rq-3_rqHEfrqcWkq#/D9cN!nCqu-NlrqcWirqQKcrq-3\rp]pSrp0RGroF(;rndY.rmq(qrlkA_rkeZK +rk&09rilC(rhTOergs+Trfd>Brf$i3rdt-"rd=]jrcA'ZrbqdQrbDFGral(>raPk7qd95+r`oG,r`\Ph +r`];*rEKA.>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!. +]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3irVQTAs3^lGrqlZnr;QTmq>U0g +p\sjboD\7Yn,D\QlMflDir7j7g]#e'df.Pkao96X_#CtF\,NW2XT#0tT`1M]Rf8KLO8b+;LAli)J,Xfo +GQ)^`E;jbSD#S,IB)Z??@fBd7?iF@1>lIt)=oMOZ=8c5%=BPQ*r`fA,ra#M1raGe8rac"?rb2:Irbh^S +rcJ-`rd4Wore(3)rf$i;rf[8Lrgj%]ri#gtrilC2rk&0Frl"fXrm(Mkrn%/(rnm_7roF(Drp9XQrp]pY +rq69brqQKgrql]mqu-NndJqVorr2fnrqucmrqZQgrqHEarpg!Vrp9XLroj@@ro!e4rn.5"rm1Sfrl>#S +rk85he+?2J".@K'd9B`;cGDZ4SRF8g@^I/\ToJc:K)MuJh;Pl@*MT)PJ` +W;`t!ZMqB5^&GkI`r=3]ci2Gnf`'b,i;Va8kl0lHm/HJQo)A:\p\sseq>U9jr;6HlrmCbqs8N#prVl`o +qu6Hkp\smcp&=L\nG_nUlMfuGjo43;h#?"+e,I_nc2P]]_Z%:K[f3T3Y5YI;#X;l;Z'Gl;uTbqlJ%. +@/aU6AH$6@D#S>OE;k"ZH2`6kJGt9%M>iS8PQ$mITDkVbVZ*atZMq<3^AbtJ`W"-]d/MMng&Bh,i;Vj; +kl0lHn,DhUnc&4\pAXgcqYpBkr;QZlrm^tts8N#prVl]nqYp5h\(=8l8" +sJm;uTerQ/"/@fBp;B`;cGDZ4YTFoHXbIf=ot +K`6r0O8b@BRf8oXUAh1lY5Yd,]DfSE_Z%^Wc2Q,if`'Y)hu;[8k5OTDm/HGPnc&1[p&=^bq>U6iqu6Qk +rm^tts8N#prVl]nqYpYl:^&VZ*7fS,S`Q +OT(4@/aL3?2e"+=T2D$<;oem;#=&f:A[cY9__9O9`@`d:Adla:]!uf +;uTbq=8l>$=oM_+?iFI4A,^-?CAr/NErL1[HiAKnJGtB(MuJh;QN!BQT`1hfX8]@&\,O#=_#DCRbPolf +ec+8$h>Z@3jSn?Ali-;NnG`"Xp&=^bq>U6iqu6Qkrm^tts82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7 +gA]\&dJhAha8WpS]Df85hY'_IRbl6#hec+;%hu;X7jSnECm/-;OoD\F^p\t!fqYU3irRCkss8Mur +r;QTmq>U0gp\sjboD\7YmJcDMkl0WAiVq^5fDa;!ci2)d`;[ON\,N`5YPtI!U]-nbQN!'HNrFh5KDpB" +GlDjbEW0eRC&VcE@K'X5?2e"+=8l5!;uT\l:]=)f9__6K8FK(@8Gl$R9)_N`:&@`c;>sMn5P5^dHTDkVbVuEn!Zi7H5^])1Nb5T`de,ItuhYuI4j8S9AlMg2M +nG`%Yp&=^bq#:*gqu6NmrRCl!s8N#srVl`oqu6Ejq#:$eo`"C[n,DYPl2KlFiVqa6h#>k'df.Pk`rlIq+sDk:]=,g9`%KX8c)$/ +7KGtJr^Z`Tr_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&Arg`t[rhKIpriuI1 +rk8rosFJrpTjWrq-3arqQKgrql]mrr)`ngAfe)rr2oqrquclrqQKdrq69] +rp]pUrosFFroF(:rnRM*rmC_jrlY5Wrk8_2 +r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPcpR^uqaCEPqaUQTr^luZr_3;cqb[8kr`9#%r`oG1raYq?rbMLO +rcJ-ardXp#reUQ7rfmDNrh07friH+*rj_sArl"fYrm1Snrn7;,ro!e:roa:IrpKdTrq-3_rqHEgrql]m +rr)iqgAg"/rr2fnrql]krqZQerq-3\rp]pSrp'LEro="8rn@A&rmC_grl4rRrjr*:ric=!rhBC`rfmDD +rf$i/rdauqrcA'Yrbh^IraYq8r`oG*r`9"rr_`Yjr__9rau.Irc%jXrd=]pre(3/rfI,Drgs+`rhob!rj;[9rk\TRrlb;g +rmh#%rnm_7roO.Erp9XRrpp']rq??erqcWkrr)`nh>c=2rr2fnrql]krqZQdrq-3[rpKdOrosFCro*k5 +rn.5"rm1Scrl"fNrj_s5riQ0prh'1Zrf[8?re^W*rdFckrc8!UrbMLDraGe5r`];&r`&knr_NMgr_*5_ +r^m)Zr^QcRr^?*?h*V'-n3d1CqaLKRr^ZrZr_!/_r_EGgr_WSnr`B)&ra5Y6rac"DrbqdVrd"Kkrdk'* +rf6u@rgWnZrhKIprj)O5rkJHNrlP/crm^r"rndY5roF(Crp0ROrpg!Zrq69drqcWkrr)`nh>c=2rr2fn +rqcWirqQKcrq$-YrpKdOroj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQ +rb2:>ra5Y1r`K/"r_i_lr_EGdr_!/]r^d#XqaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9## +ra#M1raGe>rbMLPrcS3drdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pY +rq69crqZQirr)`nh>c=2rr2fnrqcWhrqHEarpp'Wrp9XKroa:>rndY.rmUkmrlb;YrkJHDrilC&rhf[e +rgEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMgr_3;`r^d#Yr^QcRr^?_9rb2:Jrc.p\rd4WqreLK4rfd>Lrh'1eriH+'rjr*Crkn`Yrm1Sm +rn@A-ro*k>rosFKrpTjWrq-3arqZQirr)`nh>c=2q#13grqQKerq$-ZrpTjProsFEro!e2rn7;!rm(Mc +rkeZJrjVm1ri,mmrg`tSrfR2;re:?$rd"KbrbqdOrau.c=2qu-NlrqcWhrqHE`rpg!Vrp'LGroF(: +rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK*rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGcr_!/] +r^QcRr^?c=2rr)iorql]jrqQKdrpp'X +rpKdLroO.=rndY.rmh"prlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'XrbVRFraPk6r`T5%r`&kn +r_EGdr^m)[r^ZrWr^HfSnjC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ra5Y6ral(FrbqdWrd4Wp +re192rf[8Irh'1dri?%(rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??crqZQjrqucoh>c=2rr)io +rql]jrqHEbrpg!VrpB^KroO.=rn[S+rm^qmrlP/Xrk8_2r`K/"r_i_lr_roj@KrpTjVrq69brqZQjrquco +h>c=2rr)iorql]irq??arpg!VrpB^KroO.Are^W)rd=]h +rc%jQrb;@@ra5Y0r`B)!r_`Ykr_cF5rr2oqrquclrqHEcrq-3ZrpB^NroX4?rnm_/rmq(rrlb;\rk\TErj2U-rhTObrgEbI +repc1rdauorcJ-XrbDFFra>_2r`];$r_remr_EGcr^luWr^QlTog@Y(r^#d6r^$BIj?i`2qaC_1r`T5#r_relr_EGcr^m)Zr^QlUnjDG(qa'@0r^$KL +j?iN,r^HfUr^ZrZr_*5cr_NMkr`/r#r`oG1ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fY +rm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_- +rmUkmrlG)VrkJH@riuI(rh07[rg*PDre^W,rd=]hrc8!Srb2:@ra5Y/r`K/!r_`Yjr_3;`r^m)YqaL9I +h*Tp_rBfI0pd>$LqaUQVr_*5ar_NMkr`&l!r`fA/raYq?rbVRSrce?hre(3+rf6uDrg`t\riH+(rjMg@ +rl"fWrm1Snrn.5-ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oprql]krqHEbrpp'Wrp9XLroF(; +rndY*rmUkmrlG)VrkAB=ric=$rh07ZrfmD@reCE&rd+Qdrc%jPrau.=ra,S-r`B(sr_WShr_*5_r^d#X +r^HfSpd=(.r^#.$!'pWO6/t<,6iKLQ7K,dU8H)3[9E%]c;#XAl=8lD&?N+F5BDu]GE;k"ZHN&HoLAm/2 +Pl@0OT`1tjYPtp.^Ac"KaSsNbe,IqthYuL5jSnHDm/HJQo)A=]p\t$gqu6Njro=%:s8N#sr;QTmqYp6g +p&=O]n,DYPl2K`Bi;VR3f)F+sci1r`_>_.IZi7-,W;`FgRJrELMuJG0JGsloFoH@ZCAqiE@K'R3=oMM% +;Z9Jk:&[fb8cD6Z7K,^J6fp`46.S:%5X><7k!J`.r^?`Sr^ZrZr_*5br_WSlr`B)&ra#M3ral(Drc%jZ +rd+QoreCE1rfd>Lrh'1griZ7,rk8_1r`T5$r_i_kr__1r`K/"r_WShr_3;_r^d#Xr^HfSpd=C7qa&Ilp-AUCksG87r^?`Sr^QlWr^m)_ +r_EGhr`/r"r`oG1rac"@rb_XSrcS3hrdt-*rfI,Frg`tari?%'rk&0Frl"f\rmC_prnIG0ro3q@rp'LN +rp]pZrq??erql]mqu5XUi;`fUrquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHDrilC%rhTO` +rg*PEreUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_ +r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rp'LN +rp]pZrq??erql]mqu5XUj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$rm1Serkn`Lrji$4ri5sm +rgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZ +r_3;dr_WSnr`9#%ra5Y7rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4rkABLrlb;ermUl$rnm_7roj@H +rpKdTrq-3`rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Serkn`Lrji$4 +ri5smrgNhOrf@&6rdk&srcS3[rb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQ +r^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.p[rdFctreLK6rfmDNrhKImrilC4rkABLrlb;ermUl$rndY5 +roj@HrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1SerkeZJ +rji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7 +qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKImrilC4rkABKrlb;ermUl$ +rndY5roj@HrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Se +rkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5] +k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKImrilC4rkABKrlb;e +rmUl$rndY5roj@HrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$ +rm1SerkeZJrji$4ri5smrgWnPrf@&6rdk&rrcJ-Yrb_XHraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4 +a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y7rau.Hrc.pZrd=]rreLK6rg!JPrhKImrilC4rkABK +rlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr1sXj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6 +rnIG$rm1Serkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlT +qa9L4a$B5]k!K&7qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y7rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4 +rkABLrlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr1sXi;`fUrquclrqZQerq$-YrpKdOroj@@ +rndY/rm^qorlkAZrkJHDrilC%rhTO`rg*PEreUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#X +r^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%& +rjr*Crkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjProj@@ +rnm_1rm^qorlkA[rkJHDrilC&rh]Ubrg*PFreUQ+rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#X +r^?WNk!Jr2bs:tfr^#[5r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^Urc\9irdt-*rfI,Grgj%b +ri?%&rjr*Drl"f[rm:YornRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjP +roj@@rnm_1rm^qorltG]rkSNFriuI(rhf[crg3VHreUQ+rdXojrc8!Vrb)4@ra>_1r`K/"r_WShr_3;_ +r^d#Xr^HfSpd=:4r^"doq*=pFk!Jr4r^?`Sr^QlWr^m)_r_EGhr`/r"r`oG1rac"@rbqdWrc\9jre(3+ +rfR2Hrgj%criH+(rk&0Frl+l]rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucmrqcWg +rq69\rpTjProsFBro!e2rmq(srm(M^rk\THrj2U,rhoaerg<\Jreg].rdXolrcA'Wrb2:Ara>_1r`T5$ +r_i_kr_RJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg/Ln,DkVo`"UaqYpBk +r;6KRs5rbMLPrcS3drdb!&rf$i@rgWn[ri5t$rj;[=rkeZUrm1Smrmq)*ro*k;rp'LL +rpTjWrq69brqcWkrquZmj8\';rr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_-rmUkmrlG)VrkJH@riuI( +rh07[rg*PDre^W,rd=]hrc8!Srb2:@ra5Y/r`K/!r_`Yjr_3;`r^m)YqaL9Ih*Tp_rBfI0pd>$LqaUQV +r_*5ar_NMkr`&l!r`fA/raYq?rbVRSrce?hre(3+rf6uDrg`t\riH+(rjMg@rl"fWrm1Snrn.5-ro3q= +rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oqrquclrqHEcrq-3ZrpB^NroX4?rnm_.rm^qorlY5ZrkSNC +rj)O*rhKIarg3VGreg].rdOilrcA'Urb2:Ara>_1r`T5"r_i_kr_Are^W)rd=]hrc%jQrb;@@ra5Y0r`B)!r_`Ykr_c=2rr)iorql]irqHEc +rpp'XrpKdLroO.rilC%rhKI`rg!JErepc.rdOilrc.pTrbMLCra>_2r`K/" +r_remr_EGdr^d#YqaUQRr^?NK^-_*Opd>$Kr^H]Rr^ZrYr_3;dr_WSmr`9##ra#M2raYqCrbh^Trd"Kl +re(3.rfI,Ergj%`ri5t%rjVm?rl"fXrm(Mmrn7;,ro*kc=2rr)io +rql]jrqQKdrpp'XrpKdLroO.=rndY.rmh"prlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'XrbVRF +raPk6r`T5%r`&knr_EGdr^m)[r^ZrWr^HfSnjC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ra5Y6 +ral(FrbqdWrd4Wpre192rf[8Irh'1dri?%(rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??crqZQj +rqucoh>c=2qu-NlrqcWhrqHE`rpg!Vrp'LGroF(:rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK* +rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGcr_!/]r^QcRr^?c=2rr2oqrquclrqQKerq-3\rpTjProj@Dro!e2rn7:urm(Mcrk\TIrjVm2ri5sn +rg`tSrfR2;re:?$rd"Kbrc%jOrau.=ra,S.r`K.ur_`Yjr_3;ar_!&Xr^QZNpd<(go0W4>pdG!Kr^Zr[ +r_*5ar_NMjr_reur`];-raPk=rbDFOrcS3crdXp#reg];rg*PRrhTOnrilC2rk/6HrlY5brmC_urn[S3 +roX4Drp0RPrpp'\rqHEfrqcWlrr)iqh>c=2rr2fnrqcWhrqHEarpp'Wrp9XKroa:>rndY.rmUkmrlb;Y +rkJHDrilC&rhf[ergEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMgr_3;`r^d#Yr^QcRr^?_9rb2:Jrc.p\rd4WqreLK4rfd>Lrh'1eriH+' +rjr*Crkn`Yrm1Smrn@A-ro*k>rosFKrpTjWrq-3arqZQirr)`nh>c=2rr2fnrqcWirqQKcrq$-YrpKdO +roj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQrb2:>ra5Y1r`K/"r_i_l +r_EGdr_!/]r^d#XqaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9##ra#M1raGe>rbMLPrcS3d +rdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pYrq69crqZQirr)`nh>c=2 +rr2fnrqcWirqQKdrq-3[rpTjProsFCro!e3rn%/!rm1Sdrl+lOrj_s6riZ6rrh'1Zrf[8?re^W)rd=]i +rc.pTrbDFCraGe5r`T5%r`/qpr_NMfr_*5_r^coVr^QcRr^?NKcpIXspd=pHr^H]Rr^ZrYr^m)^r_c=2rr2fnrql]krqZQerq-3\rp]pSrp'LEro="8rn@A&rmC_grl4rR +rjr*:ric=!rhBC`rfmDDrf$i/rdauqrcA'Yrbh^IraYq8r`oG*r`9"rr_`Yjr__9rau.Irc%jXrd=]pre(3/rfI,Drgs+` +rhob!rj;[9rk\TRrlb;grmh#%rnm_7roO.Erp9XRrpp']rq??erqcWkrr)`nh>c4/rr2oqrqucmrqcWg +rq??`rp]pTrp9XIroF(:rn[S+rm^qnrlP/XrkABBrj2U*rhf[frgNhNrf@&7re(3"rcnEarbqdOrb)4? +ra>_2r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPcpR^uqaCEPqaUQTr^luZr_3;cqb[8kr`9#%r`oG1raYq? +rbMLOrcJ-ardXp#reUQ7rfmDNrh07friH+*rj_sArl"fYrm1Snrn7;,ro!e:roa:IrpKdTrq-3_rqHEg +rql]mrr)iqgAfe)rr2oprql]krqQKdrq-3\rpTjRroj@Cro3q6rn@A&rm:YgrlG)Srk&0;ric=#rhKI` +rg3VIrepc1rdk&rrcnE`rbh^Mrb)4>ra5Y0r`K/#r`&kor_NMfqb-o\r^coVr^QcRmmQV3oL/UFr^H]R +r^ZiVqb$i\r_rbDFMrcA'_rd=]rreCE1rf[8Jrgj%`ri,n#rjDa;rkSNS +rlb;frmq)&rndY6roX4DrpB^Srpp'\rq??drqcWkrquZmgAfe)rr2oqrquclrqQKdrq69]rp]pUrosFF +roF(:rnRM*rmC_jrlY5Wrk8rnm_1rmh"rrm(M_rk\TIrjDa1riQ0prh07\ +rf[8@repc.rdauqrcS3\rbqdMrau.=ra5Y0r`];%r`&kor_WSir_EGdqb-]Uqa]4,!CfQX8,,[T9D_E[ +:B")h;>sPolJ+0@fC!=C&W&MErL4\I/\WpKDpf.O8b=ASGo/[U].CpZ2V01^&GnJ`r=9_dJh\q +h#?10iVr$>l2L#Jn,DnWo`"Uaq#:*gqu6NmrVQTJs4@;MrqlZnr;QQlq#:$eo`"F\n,DbSli-,Ij8S!9 +h>Z%*eGdenao96X^](eC[/R9.W;`RkT)P&TP5^L@L]2r*J,X]lFoHC[D>n8KB)Z6X/d:&%B\8cD947fZ'\84`_Ope1T\r_E>dr_`Ymr`9#"r`K/)ra,S4rau.Drb_XSrcS3brdXp"reLK5 +rf[8Hrgs+`ri#h"rj;[8rkJHNrlP/crmUkurn[S3ro="Arp'LNrpTjWrq-3arqZQiqu$Hlqu5=LeGoFE +rquclrqQKerq69^qsaUOrosFCro3q7rn@A&rmC_hrl>#Srk&0#R +rk/6>rilC&rhf[frgWnQrfI,ra>_3ra#M+r`K/$r`&kpqb[/cr_E>b +oh>-RnkB$W!)EGeqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07f +ri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQirql]nqu5+FeGoOIqu-Nlrql]k +rqHEcrq-3ZrpKdQrosFEro3q6rn@A'rmC_jrlY5WrkABCrj2U-ri5smrh'1Zrfd>Brepc0rdt,urcnEb +rc.pTrbDFFrac";ra5Y1r`];(r`9"ur`&kpqbd>hqbR2dk"Y_Jr_EMjr)!AiqbmDmr`/qur`T5)ra#M1 +raPk;rb)4Frbh^TrcS3brdOitre:?0rf@&BrgWnZrhKImriZ7,rjr*CrkeZWrltGirn%/'rndY6roX4E +rpB^Rrp]pZrq69brqcWkrqucoqu5+FeGoOIqu-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+rmUkn +rltG]rkeZKrjMg3riZ6trhBCarg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5&r`B)! +r`&kqr_iVjh,+)J!)i_mr_reqr`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZrd"Kkrdb!%re^W8rfd>I +rh'1brhf[trj)O3rkABJrl+l]rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??crqcWkrqucoqu5+FdJs4F +qu-Nlrql]jrqQKerq-3[rpTjQrp'LHro3q8rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbMrfI,< +reUQ)rdXoprc\9^rbqdRrbMLHraYq:qd9>.r`oG+r`T5&r`B)"qc3Vpku7R\qc*Vs!EN8#=8l>$=oMV( +>lJ%+?iFL5A,^0@CAr,MDuOhWG5cmgIf=otM#N>3OT(LDRJrfWUAh+jY5Ya+\Gj2@_>_IRbl5rfeGe," +hYuI4ir80@lMg/Ln,DnWo`"Uaq#:*gqu6NjrVlfDs3CZDrqlZnr;QQlq>U0go`"F\nG_kTli-/Jjo4<> +hu;C0fDa7uci2)d`W![P]Df;=Yl:a'W;`LiSc5&VPQ$[CN;eS2K)U9!HN&-fFoH@ZD>n>MBDuNBAc?-; +@/aO4?2e+.>Q.h*=o2>#=6Wcb=8Q)"=TMZ.r`];*r`oG.ra5Y4raGe;rau.BrbMLNrc%jZrcnEgrdXp" +reCE2rf@&BrgEbVrh9=iriH+'rjVm=rkSNPrlY5drmUkurnIG0ro3q=rosFJrpKdTrq$-]rqQKgrqcNi +rr)`ndJqMlrr2fnrquclrqZQgrq69_rpp'XrpB^NroX4@ro*k5rn@A&rm:YgrlG)UrkABDrj2U.riQ0q +rh9=_rg*PIrf@&;reLK)rdauqrd"Karc8!Vrb_XLrb2:Brac";ra>V1qd'2+r`fA*kun!hr`f>+!F/n/ +?2e4.@/aX7A,^'=B`;cGD>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R(Zi7T9^])+LaSsE_ +d/MVqg&Bk-iVqp;k5O]Gmf)_To)A7[p&=acq>U6fr;QZlrmCbhs7lQlqu6Hkq>U-fpAX^`nG_nUmf)MN +kPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9hFoHC[E;jeT +D#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?N=L8@:B.EraYq=rb)4ErbMLLrbqdTrc.p[rcnEhrdXp! +re19/rf6u>rg3VRrh'1ari#guriuI2rk&0Erl"fWrm(Mjrm^r$rnRM2roF(Brp'LNrpTjUrq-3_rqHEf +rqcWkq#/D9bQ%S@qu-Nlrql]krqQKdrq69^rpg!Vrp0RJroa:?rnm_1rmq(trm1SfrlG)VrkABCrjMg1 +riH*trhBC`rgWnPrf[8Are^W0re(3#rdFclrc\9_rc8!Wrbh^PrbDFGqe,n?rakk7raPY2qdT>1rac(A +!G5s@BDuWECAr)LDZ4VSErL4\G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh+jX8]@&[f3l;^Ac%La8X<^ +ci2Dmf)FJ(hu;X7kPj`Fli-APnc&.Zp&=^bq#:-hqu6NmrVQT;s3(HArqlZnr;QTmqYp9hp\smco`"F\ +n,DbSli-,IjSn0#VrkJHE +rjMg3riZ7#rhf[frgs+Zrg!JGrf@&:re^W/rdk'!rdOinrd+QgrcJ-[rc.pVqeuIOk&(!5rbhdUr,DXT +rcA'\rcnEfrd4WnrdXoureCE.repc:rf[8Grg`tZrh07fri,n"rj)O4rk&0Erkn`Urm(MirmLf!rnRM1 +ro*k^])1NaSsE_ci2Dmf)FJ(hYuI4jo4HBl2L)Ln,DkVoD\F^pAXjdq>U6fr;QZirlb>\s8N#prVl`o +qu6Hkq>U-fpAX^`o)A.Xn,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4YPtX&W;`UlT`1M] +Rf8QNP5^OANW+h7M#N),K)U9!JGt#sI/\HkH2`'`FmjGIFoHUcGl`29rd+QkrdFcrrdXp!re19,reg]7 +rf@&ArfmDNrgj%]rhTOkriH+&rj2U4rk8rf$i6reUQ. +re:?)on*0oqgeZson*0r!/1H-L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\bVZ*RoXo>R([/RN5]DfPD +_>_LSb5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6NmrVQT2s2+g8rqQHkr;QTm +qYpibl5T\_u@FM]`,G?[JmE0Y5YO%VuELk +T`1S_SGnuVQN!-JPQ$[CO8b1=N;eb7MYN#,L]3&*L&Qi+L\Q])M?&P8Mi7Rnrf6u=rfI,Crg!JKrgNhV +rh'1_rhTOkriH+%rilC0rj_s?rkJHLrl+l\rm(Mirm^qurn7;.ro*k9roa:Frp0RPrp]pWrq-3_rq??d +rqZQirql]mqu-Ek_Z.:Krr2]kqtpBhrqQKerq??`rposTrp9XMroa:Bro*k7rn[S-rmq(trm1SgrlP/[ +rk\TKrk8_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\ +pAXgcq"speqtU-erkJKGs82fmrVl`oqu6Hkq>U0gp\sjbo`"F\nG_kTmJcALkl0`Dir7j7h>Z+,fDa7u +d/M;hbPoN\_u@IN^AbbD\Gil7ZMq',Xo>@"W;`XmU\g_`T)P8ZRf8`SR/WHOQM?a?Pl$aFQN!6MQiNNT +R@4&Crg`tYqk3q`rh]Umri5t"ric=,rj;[7rjr*CrkSNOrl4r\rltGhrmUktrn7;,ro!e8roX4CrosFL +rpKdTrpp'\rq69brqQKgrqcWkrqucop&;`+\c;[.qu-NlqtpBhrqZQgrq??arq-3[rp]pUrp0RKroj@B +ro3q7rndY.rn%.urmLelrltG`rl+lQrkSNIrjr*U6iqtpZ+,fDa>"d/MAjcMkrba8X$V_>_7L^Ab_C\,Nf7ZMq*-YPt^(XT#:"WW&jq +VYd4hV!k)UV#I4iV?!LpVl0Nnri?%#riZ7(riuI.rjDa8rjr*CrkJHKrl"fUrlP/brm1Sjrmh#"rn7;, +rnm_6roO.Broj@IrpBUOrpp'\rq??crqQBerqlTjrr)`n[f<]6qu6Tnqu$HjrqcWirqQKerq69_rq$-Y +rpKdQrp'LHroa:Aro3q7rn[S-rn7;$rmUknrm(MerlY5[rl"fPrkJHFrk&0>rjMg6rj2U0qlp(&riPsr +ri5amql9FlriH1'!NrU&Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb*h>Z=2ir8$< +kPj`FlMg2Mn,DhUoD\C]p&=^bq#:*gqYpBhr;QZirjMj5s82fmrVl`lqu6Hkq>U0gpAXaao`"F\nc&"V +mf)POl2KiEjSn3=i;VU4h>Z(+f)F5!dJhMlci2,eao9$g]$%+i;Vd9jSnBBl2L#GmecMQoD\C]p\Xa_qYpBhr;QZi +rilF,s7QBjrVQNlqu6Hhq>U0gp&=U_oD\:ZnG_nUmJcJOlMg#Hk5OH@ir7m8hYu:/gA]e)ec+(tdJhMl +cMl&eb5TN^aSs3Y`W!gT_Z%CK_#D+5^AbnE^];1O_86,frl"fTrl4rYrlP/^rlkAdrm:YlrmUksrn7;) +rnIG/ro!e8roF(@roj@Hrp0RNrpTjUrpg!Zrq-3_qtU0drqcWkqu$Hlp&;2qWrMtqqu-NlqtpBhqt^6c +rq??arq$-[qsaUQrpB^Mroj@EroF( +rknWOrl"lWr5S`XrlY5`rltGfrm:YjrmC_ormq)#rn7;,rndP1ro="=roa:Frp'LMrpK[Qrpp'[rq69a +rqHEfqtg +rp'LKrp9OMqsaUUrq#pXqtU0dqtgroF(=p#>H!p#5u3!TW5>jSn9:$fqtpU0ap\XX\o_\7Zo)%t5nG_qXo)/(XoC_bTp%\:Y +q#:*aqYpBhr:U$]rdk(Ls+14Ks760drV6U0dp\smWp&"CDoCqkXo^qhLqtC$`qtU'aqtg*b +q#(-im/DS9!<7WMo`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU`qtU*^rUp/@s7cPEs60LX +rpTg\r;6B^qUG<@qX+.YqtU*XrV6ACs60K6s60LFrq63Lqr[bOqsaLRr9"!0s60K6s4RGFrosCPr9!nN +r:^'TrUTr=s4mX*s2=s(rm^lHrp'K6s2=qgs2=rOrp'K6s2=qgs+13$s/l %APLeod +EI +256 0 0 52 0 100 cm +BI +/Width 768 +/Height 156 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDhOf)>^Lrdk*%s+13$s2b5irdk+4 +s+13$s+142s4%%ks+13$s+13$rrE)Krdk*Qs+13gs6Ta7r;ci^rdk*:s+13$s5s+13$s+13;s6T^crVb=Gl2H86`;bDgg&LaEl2C2Nk54oNpAF:Uo)=4?YlB:SJcGEC +p&=4So).YIm/65Ko)=mRJcC<$OoP+Rl2C2Nk54NCm/?MSq#>pFJcC<$XoJ(nl2CGUqY]LQm/65Ko)=4? +h#Ds*huE]Tl2C;Qp&!>:!W)Ziqss[OrVQSFs0M`Vs+14Is8N#^rUp*]qpbK>qss[OrVQS\s+13$s-Ncb +rosCSr:Ts:qYU0\r9XCZrql_Hs+13$s0Mb)rosCSr:^!fqpbK>qss[OrVQSFs53j-s60LXrpTg\r;6B^ +qUG<@qX+.YqtU*XrV6ACs1JA_s+LFOrql]`rV6pEff(n\/rqlKgn,<%\JcFs6JcGBBqu60bq#($d +qtg!]rqQ'YqtB1Fp\"X]p@\1Wq"sm[qYpBer:U$]rdk*ms+133s82fjrVQQgr;6BgqXs[`q""1Vp?)&@ +p@\1Wq"sm[qYpBer:U$]ric?Qs+13Os82fdrV6U0[p\X[Hp%A%Op\Xa_q=XU`qtU*drVQQd +rdk*5s+13ks82fdrV6U0\pAjsbp?)&@p@\1Wq"sm[qYpBer:U$]rdk+Ds+14Es8N#drVl`i +qu6Hhq=sa^p\"7Wp&=U>oDS:^o^r.Uo(N(Wq"Xjaqtg*bqu$$`rr.KKbQ!.nPQ1X]o)8RdrquQgrqcNf +q"Xa\p%J:Urq,%U0dp\sm`p&=U\oD%kQnG_nUnGD\LmdKQ`'+UAt,io)8RcqtpBhqt^6dqtL*`qt9s\ +qt'UQqsaURrp]gRq!RVf)dJcEIaqu60b +rquZjrqcNfrqQBbrq?6^rq-*Zq!n7NrpTjUqsX=Jn*To>mJ-,Hn,DhU +n,)VLnc&.Wo`"O\pAXg`q#:*dqYpBhr:U$]re^Z3s8N#drVl`lqu6Heq"XR^o_\7Zo)%tVnGD\LmI0B0 +l1F<>lhKlHn,)VRnb_nVoDA1TpA"F[qYpBhr:9gcrdk+*s+13Hs8N#drVl`lqu6Hkq"sj]pAX^]oD\=X +nc&%Tn+c;=lgO*,lhKlHn,)VRnb_nVoDA1TpA"F[qYpBhr:9gcrk\Vcs+13ds8N#drVl`lqu6Heq"XR^ +o_\7Zo)%tVnGD\LmI0B0l0ms5mJcSOnG_tTo)A7Xo_A.Wq#:'cqYpBhr:9gcrdk*Gs+14+s8N#drVl`l +qu6Heq"XR^o_\7Zo)%tVnGD\LmJQ;BlgO*,lhKlHn,)VRnb_nVoDA1TpA"F[qYpBhr:9gcre^Z6s8N#g +rVl`oqtp6eq=s^]p&=U_o)A1Yn,DhUn,)PPmJcJLli-2Hl1O9/kOds=kii$1qs+1Hrp9XOq!S.NrpTjV +rposYrq6'\rqZ?crql]mp&4deJcF[.JcD\Krr2Kerqucmqtg3crqHkPOKBlMg,Km/-5M +nG_nUnG_tWoDA1WpAXgcq>:$fqtpjSn34ipYk!ir8!;jSn99pcpAX^]oDA(Wn,DhUn,DbSm/H>MlMg#EkPjW@jo4?? +j7VF#iUu40j8S-=jnn3>kPOKBlMg,Km/-5MnG_nUnG_tWoD\C]o_\@]p\t!cqYpBhr:p6crdk*Ss+147 +s7lTgrVl`lqu6Hhq>9pcpAX^]oDA(Wn,DhUn,DbSm/H>MlMg#EkPjW@jo4H!p#>u2roF(? +qr[n@qrn%Erp0RMqsOIQrpTjUrpg!Zqt0dZrqHEfqtg7Z2aCnrquZjrqcEbrq??arq-3\qssaUrpTjSrp9OJrosFGroa1?roEt: +ro3q8p#"ogqqq;/qr7V8qrIbQrquZjrqcEbrq??arq-!Vrp]pUrpKdP +qs47Groj@EqrRh$g&B_&h#?10htu@2ir8!;jo4HBkl0iGm/HDOnG_nUnG_tTo`"O_p\Xa\qYU3frVQScs.98c +rVl`lqtp3gq"sgbpAX^`oD\=[nG_kTmJcGNlMg&IkPjWCjo49=i;VX2h>Z4/g&BY'fDaA#ec+(ndehDj +ci2;aci2;jchl)fdeqPmeGe"tf)F;#f`'S$h#?./hu;U6ir8'=k5OQCl2KuIli-;Nn,DhUo)A7[o_\@] +p\Xabq>U9gr:p5As762@s187*rVl`lqtp3gq"sgbpAX^`oD\=[nG_kTmJcGNlMg&IkPjWCjo49=i;VX2 +h>Z4/g&BY'fDaA#ec+(ndehDjci2;aci2;jchl)adf.bqec+/!fDaG%g&'S(h>Z=2iVqj9jo4EAkPj`F +lMg,KmJcSRnG`"XoD\CZpAXg`q#:*gqtpU0dp\smco`"I]o)A.Xmf)VQ +li-2Kl2KlFk5OKAir7m8htu7/h#?"+f`'M%f)F5!eG.Jhd/MAjd.P`ad/MAgd.l&geGe"tf)F;#f`'S$ +h#?./hu;U6ir8'=k5OQCl2KuIli-;Nn,DhUo)A7[o_\@]p\Xabq>U9gr:p5As185]s763brVl`lqtp3g +q"sgbpAX^`oD\=[nG_kTmJcGNlMg&IkPjWCjo49=i;VX2h>Z4/g&BY'fDaA#ec+(rdf%Vkd/MAjd.P`a +d/MAgd.l&geGe"tf)F;#f`'S$h#?./hu;U6ir8'=k5OQCl2KuIli-;Nn,DhUo)A7[o_\@]p\Xabq>U9g +r:p5^s/5nlrqQHhqu6Hkq>U0gp\smcp&=U_nc&%Wn,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0gA]e)f`'G# +eGdnqdJhMfci25ec2PrUbPTN_c2GogcHc=5rm:YlrmLeprmh##rn7;)rnRM/qr%J5ro="@roj@Grp0RN +rpKdSrp]pWrq-3_rq??crqQKgqtgcqp58grmC_nrmUks +rn.5'rn@A,rn[J0ro3q;roa:ErosFJrpB^QrpTjUrpg![rq69arqHEerqZHfrqlKhq#91NJcC<$huEKN +q#1*erqcWirqQKerq??arq-3[rp]pUrpKdPrp0RJroj@Ero=";qr%J1rnRM,rn7;'rmh"trmLenrm:Gd +rm(DcrljiSqoo&aqp,)brm:YlrmLeprmh##rn7;)rnRM/qr%J5ro="@roj@Grp0RNrpKdSrp]pWrq-3_ +rq??crqQKgqtgrknWOrl+cSrlP/^rlb;crm(Mirm1SkrmUktrn%/& +rn[S1qr%J6roF(ArosFIrpB^QqsaUUrq$-^rq??crqZHfrqlTjrr)Nhjo9o3JcFa0qu6KkrquZjrqcNf +rqHEcrq69^rposUrpKdQrp'LHroa:Aro3h5rndY1rn7;'rmq(trmLelrm:YirltGcrlY5^rl4iSrl"]O +n&#(Aqo&KQqo8WWrlY5`rltGfrm:YjrmC_ormq)#rn7;,rndP1ro="=roa:Frp'LMrpK[Qrpp'[rq69a +rqHEfqtgk +e,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"XoD\F^pAXgcq>:$fqtpibl5caao9B\`rD%F^[Jl5^\beH_Yh:M_u@XS`r='Yao9H^bl5ldd/MGle,Insf`'S'g]$(/hu;U6jo4EAkPjcGli-;N +n,DkVo)A:\p&=[^q#:*aqtU-erdk*#s2P*ibl5caao9B\`rD%F^[Jl5^\bhD_Z%IP`W!mVaSs<\b5TWa +c2Q)hdJhVoec+5#g&Bb*hYuF3iVqsibl5caao9B\ +`rD%F^[Jl5^\bhD_Z%IP`W!mVaSs<\b5TWac2Q)hdJhVoec+5#g&Bb*hYuF3iVqsibl5caao9B\`r$g]$%+i;Vd9jSnBBl2L#GmecMQoD\C]p\Xa_qYpBhr;QZire1<&s31NZ1.f`'J$eGdhoci25hbPoZ`aSs0X`;[[R_>_7L^](tH^&G\A +]DfD=\bN]6\biu;]DfJB^&GbF^])%J_>_@O`;[aTaSs<\bPofdci2;jeGe%uf`'Y)h>?.0j8S-=kl0iG +lhg,InG`%Yo`"U^q"speqtpZ1.f`'J$eGdhoci25hbPoZ`aSs0X`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfJB^&GbF +^])%J_>_@O`;[aTaSs<\bPofdci2;jeGe%uf`'Y)h>?.0j8S-=kl0iGlhg,InG`%Yo`"U^q"speqtp_@O`r='YbPoied/MGlec+2"f`'_+hu;R5 +j8S0>k5OWEli->On,DkVo)A:\p&=[aq#:*gqYpBhr;QZfreg`,s3L`BrqlZnr;6BjqYp_@O`r='YbPoied/MGlec+2"f`'_+hu;R5j8S0>k5OWEli->O +n,DkVo)A:\p&=[aq#:*gqYpBhr;QZfrpKf;s+149s82fmrVl`lqu6Hkq>U0gpAXaao`"F\nc&"Vmf)PO +l2KiEjSn3=i;VU4h>Z(+f)F5!dJhMlci2,eao9Z=2i;Vd9jo4EAl2L#Jmf)\Snc&+Yo`"O_ +pAXjdq>U6iqtpU0gpAXaao`"F\nc&"Vmf)POl2KiEjSn3=i;VU4 +h>Z(+f)F5!dJhMlci2,eao9!42[1qm#:friuI.rj2U2rjMg8rji$? +rk83Drk\TOrl4rYrlb;erm:Ylrmh#"rn.5+rnm_5ro=">roX4Erp0ROrpTjVrpp'\rq69arqQKgrqcWk +qu$Hlp&;E"ZiC%(q#1!brqZQgrqHEbrq-3\rp]pTrpB^Mroj@EroF(^&GhH +_>_CP`r=*ZbPofddJhVoeGe/#g]$%.hu;X7jSn?Al2KuImJcSRnG`"XoD\F^p\sseq=sj^rVQSOs+13r +s8N#mrV69hq>U0gp\sjbo`"F\nG_kTmJcDMkl0cEjSn0_7L +^&GYC\Gir9[JmN3ZMq',Yl:g&XT#9bWrB'rXT#@$Yl:j*Z2V*/[JmZ7\Gj,>^&GhH_>_CP`r=*ZbPofd +dJhVoeGe/#g]$%.hu;X7jSn?Al2KuImJcSRnG`"XoD\F^p\sseq=sj^rVQT^s+13$s6K^arqQHequ6Ej +q#:$ep&=U_o)A.Xmf)VQlMg#HkPjQAir7j7h>Z.-g&BM#e,IbocMl#dao9>[f3]6 +Zi790YPtd*Y5>="X6HY`X8B!tXo>R(YPtg+Zi7B3\,No:]DfMC_#D1L`;[dUao9K_cMl5je,Ikrg&Bb* +h>Z=2ir8$Z.-g&BM#e,IbocMl#dao9>[f3]6Zi790YPta,Y-%c- +qlKdtl)O``qlKe!rilC*riuI/rjDa7rj_s>rk8#Vrk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRhrhT"XqkX4f +rh][n!N2jpWW&stXo>L&YPtg+ZMq92\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqsZ+,fDa>"d/MAjcMkrba8X$V_>_7L^Ab_C\,Nf7ZMq*-YPt^(XT#:"WW&jqVYd4hV!k)UV#I4i +VZ*LmWW&stXo>L&YPtg+ZMq92\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqsMkl0`Djo46< +hu;I2g&BV&ec*qpci25hao9?[`;[UP_#D(I])K2<[JmK2Yl:j*Y5YO%X8]*tW;`[kV>d:ZU\gkdV>d@k +VuE[pX8]7#Y5YX(Z2V'.[Jm]8])KGC^])(K`;[dUao9Tbci2;jec+2"g&Bh,hu;U6jo4HBkl0oImJHAO +o)A:\pAXgcq"speqtpMkl0`Djo46U6iqtpU0gpAXaao`"C[nG_nU +li-2Kkl0ZBir7j7hYu7.fDa7udf.Slc2Pf``W!^Q_#D(I])K2<[/RU6iqtp_7L^Ab_C\,Nc6Yl:j*Y5YL$ +WW&gpV#I+fU&L_aTDkGZSc5/VS+rHOS,8`TSc55[TDkM_U&LhdV#I:kWW&stY5YX(Yl;$/\,Nu<^AbnH +_>_FQao9Qaci2>ke,ItugA]t.hu;X7jSnBBl2L#Jn,DhUnc&1[p&=[aq#:*gqYpBhr;QZlrdk+"s,I'X +rqlZnr;6BjqYp_7L^Ab_C +\,Nc6Yl:j*Y5YL$WW&gpV#I+fU&L\cT:Z+Urgs"Xrg`kTpmV2OqjdYVrgs+]rh07arhKIgrhoapri?%$ +ric=*rj;[6rjr*CrkJHKrl+lYrltGgrmC_orn%/'rndY3ro3qZ=2iVqsU0gp\sjbo`"F\nG_kTm/H8KkPjTBiVqa6h>Z+,fDa;!d/M>ibl5Z^ +`;[RO^AbbD\c0#9ZMq',X8]-uW;`UlUAghbTDkD\SGnuVRJrTKQMZsBPl?sCQN!9NRJrZSSGo)YTDkM_ +U].(gW;`dqX8]=%ZMq92\c05?^AbqI`;[gVbl5oed/MPof)FA%h>Z=2iVqs#SrkJHGrji$:rj)O-riQ1#rhf[jrh9=args+ZrgEbQrg*PJrfd>ErfH9'qiLf?!0[GIPQ$gGQN!6M +RJr`USc5;]U&LkeVZ*XqXo>R(ZMq<3\c0;A^])(Ka8X6\c2Q&ge,IqtgA]n,i;V^7jSn?Ali-;Kn,DnW +o`"R`p\ssbqYpBerVQSXs+14&s8N#mrVQKkqYp9hp\smco`"FYn,D\Qli-)Hjo46C#VZ*CjU&L_aT)P8ZRJrTQQN!-JPQ$aEOQMW$OT(FBPQ$gGQN!6M +RJr`USc5;]U&LkeVZ*XqXo>R(ZMq<3\c0;A^])(Ka8X6\c2Q&ge,IqtgA]n,i;V^7jSn?Ali-;Kn,DnW +o`"R`p\ssbqYpBerVQTgs+13$s7H?jrqQHhqu6Hkq#:$epAX^`o)%nTm/H>MkPjTBiVqd7h>Z.-f)F.t +ci22gao9?[_>_4K^&GSA[f3T3Yl:d(X8]!qV#I(eT`1P^SGnrUR/WENPl?mGP5^R*O8G%_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAO +o)A:\pAXgcq"speqtU-erdk+(s,d9[rqQHhqu6Hkq#:$epAX^`o)%nTm/H>MkPjTBiVqd7h>Z.-f)F.t +ci22gao9?[_>_4K^&GSA[f3T3Yl:d(X8]!qV#I(eT`1P^SGnrUR/WENPQ?u3!0dDFrfH9'qiLf?rfd>G +rg*PMrgEbUrgj%]rh9=erhf[qriQ1(rj)O3rji$ArkJHKrl>#\rltGgrmUktrn@A,ro!e7roF(Arp0RN +qsXOTrq-3`rqHEeqtgCrf@&=rf$i7regK,reLK- +qh>$(reL9)re^]6!K2m8N;ek:O8b7?PQ$jHQN!?PSGo/[T`1bdVuEdsY5Y[)[Jm]8]`,\F_Z%ORbl5oe +d/MPof)FA%hu;U6ir8-?l2L#Jn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirg*S8s5*eTrqQHkr;QTmqYpibl5T\_u@FM]`,G?[JmE0Y5YO%VuELkT`1S_ +SGnuVQN!-JPQ$[CO8b1=N;eb7MYN#,L]3&*L&Qi+L\Q])MZ/P5N;ek:O8b7?PQ$jHQN!?PSGo/[T`1bd +VuEdsY5Y[)[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhUnc&1[p&=[aq#:*gqYpBk +r;6HirqcYGs+14Hs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUli-/JkPjK?i;VX5g&BV&eGdhocMl&e +`W!dS^](nF\Gio8Yl:g)XT#-sV#I%dTDkA[Rf8WPPl?mGOT(=?NrG":MuJV/M#N2/LAQ](LAlu'M#N;2 +MuJ\7NrG+=OT(ICQ2[*KRf8iVTDkM_V#I:kXT#C%Yl;'0\Gj/?^])+L`W"*\cMl2ieGe%ug&Bn.iVqj9 +kPj`Fli-APnG_tWo`"O_pAXjdq>U6iqu6NjrVQSFs5*dAs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nU +li-/JkPjK?i;VX5g&BV&eGdhocMl&e`W!dS^](nF\Gio8Yl:g)XT#-sV#I%dTDkA[Rf8WPPl?mGOT(=? +NrFt$(reL9)reg]5rf$i:rf@&?rfd>Hrg*PPrg`t[rh07drhoasriZ7)rjDa8 +rk/6FrkeZRrlkAerm:Yormq)%rnm_6ro3q?rosFJrpTjUrpg![rq69arqQKgrqcWkrquZlqu4J4_Z0W7 +q#13irql]jrqQKerq69_rpp'XrpKdProsFFroO.;rn[S.rmq(trm:YhrlP/[rk\TKrk/6=rj2U.riH*u +rhoahrh'1\rgEbPrg!JFrfI,>repc5re^W/qh=ftmt(7dre1?,r.b3-reg]5rf6u=rfR2Frg3VPrgj%\ +rh9=hri,murilC/rjMg=rkABJrl>#\rltGhrm^qurnIG/ro!e;roa:Frp9XPrp]pXrq$-^rqHEerqZQj +rquZlqu2o]JcFU,rr2]krqucmrqZQgrqHEbrq-3\rp]pTrp9XKroa:Bro!e3rnIG'rmUknrltGarl>#S +rkJHFrjMg4rilC'ri,mprh9=`rgj%Vrg3VLrfR2Arf6u9reg]3reC<(pk/$dpk/R"qhG*,reg]5rf6u= +rfR2Frg3VPrgj%\rh9=hri,murilC/rjMg=rkABJrl>#\rltGhrm^qurnIG/ro!e;roa:Frp9XPrp]pX +rq$-^rqHEerqZQjrquZlqu6HlJcC<$qZ$Qoq#13irql]jrqQKerq69_rpp'XrpKdProsFFroO.;rn[S. +rmq(trm:YhrlP/[rk\TKrk/6=rj2U.riH*urhoahrh'1\rgEbPrg!JFrfI,>repc5re^W/qh=ftmt(7d +re:6(re^W3repc9rf@&@rg!JLrgEbVrh'1`rhoapriH+'rj;[5rk/6Erk\TSrlY5brm:Yormq)'rndY4 +roO.BrosFKrpKdTrpp'[rq69brqQKgrql]mqu-EkJcFU,QN-s`q#13irql]jrqQKerq69_rpp'XrpKdP +rosFFroO.;rn[S.rmq(trm:YhrlP/[rk\TKrk/6=rj2U.riH*urhoahrh'1\rgEbPrg!JFrfI,>repc5 +re^W/!JQ7+L%p;hJbXlsL&6W(M>iD3MuJb9O8b:@Q2[-LRJrcVTDkP`VuE[pXT#I'[/RN5]`,YE_>_LS +b5TZbd/MPof)FG'hYuI4jo4HBl2L&Kmf)_To)A7[p&=^bq#:*gqu6NjrVQT2s2+g8rqlZnr;QTmqYpiaSs0X_>_1J]Df>>Z2Us+Xo>3sU]-qcT)P5YR/Wi8/K`6W'JGXikIf"QgI/\QhIf=fsJGarsKDpT(LAm&/MuJ_8O8b:@PQ$sKRf8oXT`1bd +VZ*^sYPtg+\Gj)=^AbtJ`W!sXcMl2idf.r!h#?41i;Vg:kPjfHmJHAOo)A:\p\sseq>U6iqu6NmrVQS[ +s+14,s8N#prVl`oqu6Hkq>U0gp\sgao)%nTm/H>MkPjQAi;VX5g]#n*df.VmcMkoa`W!^Q^AbbD\Gic4 +YPt['VZ*@iT`1P^S,SfSPQ$^DO8b.U6iqu6NmrVQTjs+13$s8)cprqlZnr;QTmqYpiaSs0X_>_1J]Df>>Z2Us+Xo>3sU]-qcT)P5YR/Wi8/K`6W'JGXikIf"QgI/\Qh +If=ioJGt3#L&Qi+M>iG4NW,"O'Z2V94])KGC_>_FQaSsKad/MJmg&Be+ +hu;R5jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr;QZlrdk++s-E]arqlZnr;QTmqYpiaSs0X_>_1J]Df>>Z2Us+Xo>3sU]-qcT)P5YR/Wi8/ +K`6W'J,t.LrI=TkqgJ6erdFQjrdXfqre(3(reCE/repc8rf@&@rfd>KrgNhXrh07drhf[sric=+rj_s= +rkABJrl+lXrm(MirmLf!rnRM1ro!e:roa:HrpBUOrpp'\rqHEerqZQirql]mrr)`n_Z.UTrr2fnrqucm +rqcWirqHEcrq-3\rp]pUrp0RJroa:?ro!e5rn7;%rmLemrlkA_rkeZLrk8<>rj2U-riH*trhTOdrgj%W +rfmDFrf@&IrceEg!I8tiHN&s5F"WrqlZnr;QTmqYpZi70-XT#0tV#I%dSc5)WPl?jFO8b.U-fpAX^` +o)A.Xn,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4YPtX&W;`UlT`1M]Rf8QNP5^OANW+h7 +M#N),K)U9!JGt#sI/\HkH2`'`FmjGIFoHXbH2`-hI/\QnJGt&tK)UH&M#N;2NW,"_#D4MaSsB^d/MJmf)FA%hu;U6ir8-?l2L#Jn,DkVo)A:\p&=^bq>U6iqtpU-fpAX^`o)A.Xn,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4 +YPtX&W;`UlT`1M]Rf8QNP5^OANW+h7M#N),K)U9!JGt#sI/\EmH$KC8rcn3\mr\>IrcnEfrd+QkrdFcr +rdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOkriH+&rj2U4rk8riuI*ri?$prhKIbrg`tTrfmDDrf-o8reLK,rdt-"rdOiord"Kfrce6^ +rcJ-[qf2(Drc.gUrH&'^FT-F^GQ)jdH2`3jIK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$Z2V94 +]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*dqu6NjrVleds+142s8N#prVl`l +qu6Hkq#:!do`"I]nG_kTm/H;LkPjTBi;VR3g]#e'e,I_nbPoQ]_u@FM]Df>>Z2Up*X8\spU]-nbSGnoT +Pl?dDNW+k8L]3#,K)U<"If=`oH2`'fGPcO^FT-=XEURlGEVjeRFT-F^GQ)jdH2`3jIK"crK)UK'L]352 +NW,%=Pl@'LSGo/[UAh"gX8]:$Z2V94]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lHm/HGPnG`%Yp&=[a +q#:*dqu6NjrVlcrs+13$rrE)urqlZnr;6BjqYp9hpAX^`oD\7Ymf)SPlMfuGjo43;h>Z1.f)F.td/M5f +a8X!U^](kE\Gic4Y5YL$V>d7hTDkA[R/W?LOT(7=MuJM2L&Q]'JGt#sI/\EjGlDpaFoHL^Er0kFE;jkS +Er0tXFoHUaGlE!fI/\QnJGt0"L&Ql,MuJ_8OT(LDR/WWTTDkSaV>dOpY5Y^*\Gj,>^]).Ma8X9]d/MPo +f)FG'hYuI4jo4KClMg/Lmf)_ToD\F^pAXjdq>:'gr;6Hlrdk+1s.',grqlZnr;6BjqYp9hpAX^`oD\7Y +mf)SPlMfuGjo43;h>Z1.f)F.td/M5fa8X!U^](kE\Gic4Y5YL$V>d7hTDkA[R/W?LOT(7=MuJM2L&Q]' +JGt#sI/\EjGlDpbFT?R`FT-=XEURlGEVjeRFT-F^GQ)jdH2`3jIK"crK)UK'L]352NW,%=Pl@'LSGo/[ +UAh"gX8]:$Z2V94]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*dqu6NjrVlf; +s3(HArqQHkr;QTmqYp9hp\sjbo`"C[nG_hSli-,Ijo46ia8X$V^](kE[f3T3Y5YI# +VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qSDuOY:D>S5MDZFbSE;jkVF8g:\GlE!f +HiAKnJ,Y#uLAm#.MuJe:P5^aGSGo,ZT`1hfWW'("ZMq?4]DfSE_u@^UcMl2idf.r!h#?41iVqsU6iqu6NjrVQSds+145s8N#mrVl`oqu6Hkq#:$ep&=U_nc&%WmJcGNkl0]CiVqa6 +g]#n*df.VmcMkl``;[ON]Df8U6iqu6NjrVc]rrr.KKL&V2QrW)rmrVl`o +qu6Hkq#:$ep&=U_nc&%WmJcGNkl0]CiVqa6g]#n*df.VmcMkl``;[ON]Df8U6iqu6NjrVQSFs6'ESs8N#mrVl`oqu6Hkq#:$ep&=U_nc&%WmJcGNkl0]CiVqa6g]#n*df.VmcMkl` +`;[ON]Df8#`rm:Ym +rn7;+rnm_6roO.Crp0RNrp]pWrq$-^rqHEfrqcWkrquZlqu4e=bQ%S@qu-Nlrql]krqQKerq??`rpp'W +rpKdOroj@Bro3q7rn@A&rmLemrlb;]rk\TJrk&09riuI*rhf[irh'1Zrg*PHrf@&:re^W,rdk&urd4Wi +rc\9^rc7mSrb_XNrbMLJrb;7BratV1qe#h?rb2@I!GZBKC]8/LD>S8NEW1%YG5cacHiANoJc:<$M>iJ5 +O8b=AQi_LSbPolfdf.hsgA^"/ir8$_1J +]Df/9Z2Up*VZ*@iTDk>ZQN!'HO8b(:M>i/,Jc:/uHiAnANC]8)JC&;QBB('=.B)ZHB +C&VlHC]8/LD>S8NEW1%YG5cacHiANoJc:<$M>iJ5O8b=AQi_LSbPolf +df.hsgA^"/ir8$_1J]Df/9Z2Up*VZ*@iTDk>ZQN!'HO8b(:M>i/, +Jc:/uHiAnANC]8)JC&;QBB('=.B)ZHBC&VlHC]8/LD>S8NEW1%YG5cacHiANoJc:<$ +M>iJ5O8b=AQi_LSbPolfdf.hsgA^"/ir8$_1J]Df/9Z2Up*VZ*@iTDk>ZQN!'HO8b(:M>i/,Jc:/uHiAnANCB80b!,DLIqe,n? +mq)B.rb)4ErbDFJrbVRNqeuIRrcA'^rcnEhrdXoure(3,rf$i;rf[8IrgWnZrhKIiriZ7)rj2U9rkABJ +rl>#]rm:Ymrmq)&rnm_7roF(Brp'LNrpTjWrq-3`rqHEerqcWkrqucoqu4e=bQ%A9rql]krqZQfrq??a +rpp'XrpTjQrosFEro3q7rn[S*rm^qorlkA_rkn`Mrjr*;rilC'ri,mkrgs+Yrg!JGrf@&8reLK*rdaur +rd+QercJ-[rc%jSrbVRKrb;@Frau.@qdf\9l!jX%qd]\OE;jnWFT-I_HN&Z@3ir8*>l2L&Kn,DkVo)A=] +pAXgcq>U6iqtU,^s+145s7lQlqu6Hkq>U-fpAXaao)A.Xn,D\Ql2KiEir7j7h>Z%*eGdhobl5]__u@FM +])K/;Yl:a'WW&XkT)P5YQ2ZsGO8b"8L]2r*JGsurHN&*eFT-=[E;jbSD#S2KC&VfFB)ZB=AH$*'@fBm7 +AH$0>B)ZKCC&VlHD#S>OE;jnWFT-I_HN&Z@3ir8*>l2L&Kn,DkVo)A=]pAXgcq>U6iqtg6lrV_U-fpAXaa +o)A.Xn,D\Ql2KiEir7j7h>Z%*eGdhobl5]__u@FM])K/;Yl:a'WW&XkT)P5YQ2ZsGO8b"8L]2r*JGsur +HN&*eFT-=[E;jbSD#S2KC&VfFB)ZB=AH$*'@fBm7AH$0>B)ZKCC&VlHD#S>OE;jnWFT-I_HN&Z@3ir8*>l2L&Kn,DkVo)A=]pAXgc +q>U6iqtU,@s6'ESs7lQlqu6Hkq>U-fpAXaao)A.Xn,D\Ql2KiEir7j7h>Z%*eGdhobl5]__u@FM])K/; +Yl:a'WW&XkT)P5YQ2ZsGO8b"8L]2r*JGsurHN&*eFT-=[E;jbSD#S2KC&VfFAcZIS!+l%#^ +rm:Yorn%/*ro!e8roX4Erp9XQrpg!Yrq69arqHEfrqcWkq#/D9bQ%A9rql]krqZQfrq??`rp]pUrpKdN +roa:Aro!e3rn@A$rmC_jrlG)WrkJHErjMg2riQ0trhBCargNhQrfI,=repc/rdk&urd4WhrcS3[rc%jT +rbVRKrb;@Eral(=raPk8ra5Y4oj@K#pg=#.ra,Y6!F]F9@fBm:Ac??AC&VoID#SAPE;jkVFoHXbHiANo +K)UH&MuJb9OT(UGS,T&ZUAh+jXo>U)[f3o<^])1NaSsKadJhYpgA]n,i;Vg:kl0lHmf)\SnG`(Zp&=^b +q>U6iqtU,^s+145s7lQlqu6Hkq>U-fpAX^`nG_nUmf)MNkPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2 +Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9hFoHC[E;jeTD#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4 +?iFL5@fBm:Ac??AC&VoID#SAPE;jkVFoHXbHiANoK)UH&MuJb9OT(UGS,T&ZUAh+jXo>U)[f3o<^])1N +aSsKadJhYpgA]n,i;Vg:kl0lHmf)\SnG`(Zp&=^bq>U6iqtg6lrV_U-fpAX^` +nG_nUmf)MNkPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9h +FoHC[E;jeTD#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?iFL5@fBm:Ac??AC&VoID#SAPE;jkVFoHXb +HiANoK)UH&MuJb9OT(UGS,T&ZUAh+jXo>U)[f3o<^])1NaSsKadJhYpgA]n,i;Vg:kl0lHmf)\SnG`(Z +p&=^bq>U6iqtU,@s6'ESs7lQlqu6Hkq>U-fpAX^`nG_nUmf)MNkPjQAi;VR3gA]V$dJhGjaSs-W^](kE +[f3Q2Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9hFoHC[E;jeTD#S2KC&VcEAc?3=@KBnG!+Gk6ra>D+ +pg3`&ra>_4raGe8raYq=rb)4ErbMLLrbqdTrc.p[rcnEhrdXp!re19/rf6u>rg3VRrh'1ari#guriuI2 +rk&0Erl"fWrm(Mjrm^r$rnRM2roF(Brp'LNrpTjUrq-3_rqHEfrqcWkq#/D9cN!nCqu-NlrqcWirqQKc +rq-3\rp]pSrp0RGroF(;rndY.rmq(qrlkA_rkeZKrk&09rilC(rhTOergs+Trfd>Brf$i3rdt-"rd=]j +rcA'ZrbqdQrbDFGral(>raPk7qd95+r`oG,r`\Phr`];*rEKA.>lJ%.?i+71@fBm:Ac?BBCAr)LDuObU +F8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"X +oD\F^q#:*gqYU3irVQSjs+148s8N#prVl`oqYp@fBd4?i+..>lIt, +>3T2h>5hb'>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!. +]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU0jr;llqqu20HNrT+X!WDuqrVl`o +qYp@fBd4?i+..>lIt,>3T2h>5hb'>lJ%.?i+71@fBm:Ac?BBCAr)L +DuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->O +nG`"XoD\F^q#:*gqYU3irVQSFs6]i\s8N#prVl`oqYp@fBd4?i410 +?2e+.>Q.gj=oMV(>Ph\)?2e4.@/aX7A,^'=B`;cGD>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&Lke +Xo>R(Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_To)A7[p&=acq>U6fr;QZlrmCbns8N#prVl`o +qu6Ejq#:$ep&=R^nG_nUm/H;LjSn0PhS&=P['W=92N+r`T5)r`oG.ra5Y5raPk;rau.C +rbVROrc%jYrce?grdXp"reCE2rf@&ArgNhWrh07hriH+'rjVm=rkSNOrlP/brmLetrnIG0ro3q_4ra#M.r`f8&r`IuXqcNi#r`fA,ra#M1raGe8rac"? +rb2:Irbh^SrcJ-`rd4Wore(3)rf$i;rf[8Lrgj%]ri#gtrilC2rk&0Frl"fXrm(Mkrn%/(rnm_7roF(D +rp9XQrp]pYrq69brqQKgrql]mqu-NnJcG-;V>pPoqu-Nlrql]jrqQKerq69^rp]pUrp9XLroF(_4 +ra#M.r`f;'!*T;'h,jJUr`T5)r`oG.ra5Y5raPk;rau.CrbVROrc%jYrce?grdXp"reCE2rf@&ArgNhW +rh07hriH+'rjVm=rkSNOrlP/brmLetrnIG0ro3q.r`oG+r`T5&r`B)"qc3Vpku7R\qc*Vs!EN8#=8l>$=oMV( +>lJ%+?iFL5A,^0@CAr,MDuOhWG5cmgIf=otM#N>3OT(LDRJrfWUAh+jY5Ya+\Gj2@_>_IRbl5rfeGe," +hYuI4ir80@lMg/Ln,DnWo`"Uaq#:*gqu6NjrVlems+14;s8N#prVl`oqu6Ejq#:$eo`"C[n,D\QlMg#H +ir7m8hYu1,eGdenbl5Z^_>_.I\,N]4Y5YC!UAgb`RJrHMOT(4lIq+=oMP&=8l7t$=oMV(>lJ%+?iFL5A,^0@CAr,MDuOhWG5cmgIf=ot +M#N>3OT(LDRJrfWUAh+jY5Ya+\Gj2@_>_IRbl5rfeGe,"hYuI4ir80@lMg/Ln,DnWo`"Uaq#:*gqu6Kn +rVZWnrdk*3s8N#qr;cfqr;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+ +W;`OjT)P/WPl?dDN;eY4Jc:/uI/\5h\(=T2D$5he+?2J".@K'd9B`;cGDZ4SRF8g@^I/\ToJc:K)MuJh;Pl@*MT)PJ`W;`t!ZMqB5^&GkI +`r=3]ci2Gnf`'b,i;Va8kl0lHm/HJQo)A:\p\sseq>U9jr;6Hlrdk+:s/#bprqlZnr;QTmq>U0gp\sga +nc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+W;`OjT)P/WPl?dDN;eY4Jc:/uI/\5h\(=T2A&<`T3$qc3Vpku7R\qc3Vrr`B)$r`T5(r`oG.qd9>2raYq@rbDFM +rbqdWrc\9grdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4ro3q@rp'LLrpTjW +rq-3arqQKgrql]mqu-NndJq_rrr2fnrqucmrqcWgrq??arpg!WrpTjOroa:Bro!e2rn7;"rm:Yhrl+lR +rkAB?rj)O+rhf[hrh'1Urfd>Bre^W-rdaurrcnEbrc%jSrbVRHral(;ra>_3r`oG*r`K/$r`/qsr_reo +qbc0Gr_WYnr)3Mmr`&ksr`B)$r`T5*ra#M2raGe:rb)4Hrbh^SrcS3crdFcrre:?.rf@&Brg*PUrhKIi +riZ7+rjMg?rk\TQrltGhrmUl"rn[S3roO.Crp'LOrp]pWrq69arqHEgrql]mrr)`nW;hGKnGiLequ-Nl +rql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+rmUknrltG]rkeZKrjMg3riZ6trhBCarg*PIrf@&8re19$ +rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5&r`B)!r`&kqr_iVjh,+)JqbmDlr`&ksr`B)$r`T5*ra#M2 +raGe:rb)4Hrbh^SrcS3crdFcrre:?.rf@&Brg*PUrhKIiriZ7+rjMg?rk\TQrltGhrmUl"rn[S3roO.C +rp'LOrp]pWrq69arqHEgrqc]n!W;lprVQSFs-NcbrqlWpr;6Qmrql]krqHEcrq69\rp]pUrp'LGroO.; +rnRM+rmUknrltG]rkeZKrjMg3riZ6trhBCarg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/ +r`T5&r`B)!r`&kqr_iVjh,+)JqbmDlr`&ksr`B)$r`T5*ra#M2raGe:rb)4Hrbh^SrcS3crdFcrre:?. +rf@&Brg*PUrhKIiriZ7+rjMg?rk\TQrltGhrmUl"rn[S3roO.Crp'LOrp]pWrq69arqHEgrql]mrr)`n +JcG6>W;lkrqu-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+rmUknrltG]rkeZKrjMg3riZ6trhBCa +rg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5&r`B)!r`&kqr_`bo;>jAJ;#X>h;Z9Vo +<;ons=8l>$=oM\*?2e72@K'g:BDu`HDZ4VSFoH[cIK"crL&Qr.O8b@BQN!NUU]..iY5Ya+[f4#?_>_FQ +c2Q)he,J&"h>Z@3jo4KClMg8OnG_tWp&=[ap\t$gqu6NmrVQTDs4%)JrqlZnqu6Hkq>U-fpAX^`nc&"V +m/H5Jk5OE?hu;C0f`':tcMkuc_Z%:K]Df/9YPtR$UAgb`Rf8NMOT(4Q.h*=oMM%sDh:\@KX:%D'Y:B45h;#X>k;Z9Vo5hb*?iFO6AH$9A +CAr,MEW1+[GlE0kJc:?%N;en;PQ%$MT)PJ`WrB1#Zi7T9^])+Lb5TZbdJhetg]$+0j8S3?kl0rJmf)bU +o`"O_p\t!fqYpBkrVQSms+14>s8N#prVl]nqYp5h\(=8l8"k;Z9Vo5hb*?iFO6AH$9ACAr,MEW1+[GlE0kJc:?%N;en;PQ%$M +T)PJ`WrB1#Zi7T9^])+Lb5TZbdJhetg]$+0j8S3?kl0rJmf)bUo`"O_p\t!fq>gBnqtpBkqu20HQiI'a +qu$QmqZ-NmqYp5h\(=8l8"k;Z9Vo +5hb*?iFO6AH$9ACAr,MEW1+[GlE0kJc:?%N;en;PQ%$MT)PJ`WrB1#Zi7T9^])+Lb5TZb +dJhetg]$+0j8S3?kl0rJmf)bUo`"O_p\t!fqYpBkrVQSFs7$&es8N#prVl]nqYp5h\(=8l8"#Rrk/6> +rilC&rhf[frgWnQrfI,ra>_3ra#M+r`K/$r`&kpqb[/cr_E>boh>-R +nkB$W!)EGeqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07fri?%& +rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQirql]nqu3PoJcG6>rr2fnrql]krqZQf +rq69]rp]pSrp0RHroF(:rn[S,rmh"prlkA^rkSNGrjVm2ri?$qrh07[rg*PFrf$i4rdaurrd4Wdrc.pU +rbDFEraYq8ra,S0r`T5&r`B(ur_iViqbR2dqb?`Wpe10Or_<8bqbR)cr_reqr`B)$r`T5+ra5Y4raYq? +rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07fri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pX +rq69brqZQi!;cfoqu6Qkrdk*9s8N#pr;lfm!;lclrqZQfrq69]rp]pSrp0RHroF(:rn[S,rmh"prlkA^ +rkSNGrjVm2ri?$qrh07[rg*PFrf$i4rdaurrd4Wdrc.pUrbDFEraYq8ra,S0r`T5&r`B(ur_iViqbR2d +qb?`Wpe10Or_<8bqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07f +ri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQirql]nqu20HnGfHerr2fnrql]k +rqZQfrq69]rp]pSrp0RHroF(:rn[S,rmh"prlkA^rkSNGrjVm2ri?$qrh07[rg*PFrf$i4rdaurrd4Wd +rc.pUrbDFEraYq8ra,S0r`T5&r`B(ur_iViqbR2d!DQ;e:%_3T9CbdU:&@]_:]!uf;uTbq=8l>$=oM_+ +?iFI4A,^-?CAr/NErL1[HiAKnJGtB(MuJh;QN!BQT`1hfX8]@&\,O#=_#DCRbPolfec+8$h>Z@3jSn?A +li-;NnG`"Xp&=^bq>U6iqu6Qkrm^tts82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7gA]\&dJhAha8WpS +]Df85hY'_IRbl6#hec+;%hu;X7jSnECm/-;OoD\F^p\t!fqYU3irM]aIs7$'crVl`oqYp9hp\sjb +oDA%Vm/H8KjSn0_(G[f3Q2XT#*rT`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\QC&VZB +@fBa6?2e%,=T2>"<;oep;#=&c:&[ic9(GRB8G,RO9)D<]:&[rc;#XAl;uTer=T2M'?2e41@fBp;C&VrJ +E;jtYH2`6kJc:E'N;eq_IRbl6#hec+;%hu;X7jSnECm/-;OoD\F^p\ssg +q>pHhqu$HlJcD):qu-Nl!W)WmqYp9hp\sjboDA%Vm/H8KjSn0_(G[f3Q2XT#*r +T`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\QC&VZB@fBa6?2e%,=T2>"<;oep;#=&c:&[ic9(GRB8G,RO9)D<] +:&[rc;#XAl;uTer=T2M'?2e41@fBp;C&VrJE;jtYH2`6kJc:E'N;eq_IR +bl6#hec+;%hu;X7jSnECm/-;OoD\F^p\t!fqYU3irIP"tprVl`oqYp9hp\sjboDA%Vm/H8KjSn0< +hu;@/f)F(rbl5Z^_>_(G[f3Q2XT#*rT`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\QC&VZB@fBa6?2e%,=T2>" +<;oep;#=&c:&[ic8c_LToL\LBoh#$Qqb6u`r_NDfr_i_or`/r"r`];,ra5Y6rac"BrbVRQrcJ-brdFcs +reCE2rfI,ErgNhZrhf[rriuI2rk&0Grl4r]rmC_qrn@A/ro3qU9jr;QYGs-NcbrVl`oqZ6Ng!;ZWh +rqHEbrq$-YrpB^Mroj@Aro*k5rn%/!rm1Sdrl"fNrjVm5ric=!rhKIbrg*PHrf6u5re(3"rcnEbrc.pR +rb;@EraGe5ra#M+r`B)!r_reoqbR2cr_3)Zmmun;mn!4Gr_3;cqbR2gr_rerr`B)%ra#M1raGe=rb;@J +rc.p[rcnElre(3*rf6u@rg*PUrhKIjric=-rjVmArl"fYrm1Smrn%/+ro!e9roj@HrpB^Srq$-^rqHEe +rqZQjrqucoJcG6>W;lkqrqucmrqZQgrqHEbrq$-YrpB^Mroj@Aro*k5rn%/!rm1Sdrl"fNrjVm5ric=! +rhKIbrg*PHrf6u5re(3"rcnEbrc.pRrb;@EraGe5ra#M+r`B)!r_reoqbR2cr_3)Zr(-HNmmlh;pe(NZ +r_<8cr_`Ynr`/r!r`T5+ra5Y5rb)4ErbVRRrcS3brdXp"reLK5rf[8Hrh'1brhob!rj2U5rkJHNrlY5d +rmUkurndY4ro="Arp'LMrp]pYrq69brqQKgrql]mrr(@HfDkjLrr)iorql]jrqQKerq-3[rpTjProsFF +ro*k6rnRM'rmLekrl4rRrk8<=riuI)rhKIcrg`tNrf6u9re(3#rd=]frc8!Vrb;@DraPk6r`oG+r`9"t +r_`Ykr_NMgr_32^pdt?Qej][07fGpQ8cDB[9`%Ta;#X>k<;oqt>5he+?iFO6B)ZNDDuOeVFoHdfJ,Y*" +MuJe:P5_!NTDkVbXo>U)[Jml=_Z%RScMl5jec+A'hYuL5kPj`Fli-APo)A:\p\sseq>U9jr;QZlriZ9P +s7?9irr2lqr;QTmq>U0gp\sganc&"Vli-/JkPjH>hu;F1ec+"rcMki__>_.I[JmH1Xo>*pT`1J\P5^L@ +MuJA.JGsrqFoHF\DuOJMB)Z9=?iF=0>5hS%<;obo;#X8i:B!ra9DD*U8(:$-8,,[T9D_E[:B")h;>sPo +lJ+0@fC!=C&W&MErL4\I/\WpKDpf.O8b=ASGo/[U].CpZ2V01^&GnJ`r=9_dJh\qh#?10iVr$> +l2L#Jn,DnWo`"Uap]1*jq>($erqucoqu20HT`>#jrr)iorqc`lq#L6iq#:$eo`"C[n,DYPl2KlFiVqa6 +h#>k'df.Pk`rlIq+sDk +:]=,g9`%KX8c)$-7fGpQ8cDB[9`%Ta;#X>k<;oqt>5he+?iFO6B)ZNDDuOeVFoHdfJ,Y*"MuJe:P5_!N +TDkVbXo>U)[Jml=_Z%RScMl5jec+A'hYuL5kPj`Fli-APo)A:\p\sseq>U9jr;QZlrdk+Cs/Z2!rr2lq +r;QTmq>U0gp\sganc&"Vli-/JkPjH>hu;F1ec+"rcMki__>_.I[JmH1Xo>*pT`1J\P5^L@MuJA.JGsrq +FoHF\DuOJMB)Z9=?iF=0>5hS%<;obo;#X8i:B!ra9DD*V7fZ'/7fGpQ8cDB[9`%Ta;#X>k<;oqt>5he+ +?iFO6B)ZNDDuOeVFoHdfJ,Y*"MuJe:P5_!NTDkVbXo>U)[Jml=_Z%RScMl5jec+A'hYuL5kPj`Fli-AP +o)A:\p\sseq>U9jr;QZlrn@D(s8N#srVl`oqYp9hpAXaao)A.Xn,DSNkPjQAi;VO2f`':tcMkuc_Z%7J +\c/i4X8]$rT`1G[Q2ZjDM>i2-JGsopG5cI[D>n;LAH$$:?iF7.=T2A#;Z9Pj:]=&e9D_<[8GbpV7efFI +7.3M<7/]RP7JfRR8,GjV8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[HN&HoK`6l.O8bFDS,T)[ +VuEdsYl;34^Ac"Kb5TZbdJheth#?72jSn<@l2L/Nnc&+Yp&=^bq#:-hqu6QkriZ9Ps7?9irr2lqr;QQl +q#:!dp&=O]nG_nUl2KlFjSn*:h#>t*dJhGjb5T9W^&GSAYl:^&VuE@gS,S]PO8b"8K`6N$HiA3fE;j_R +CAqcC@K'X5>5hY'X/g9`@]^8cD9X8,c!Q7JK:>6hj(E7JfRR8,GjV8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[HN&HoK`6l.O8bFDS,T)[VuEdsYl;34^Ac"Kb5TZbdJheth#?72jSn<@l2L/N +nc&+Yp&=[cp]:0brqcWkrr)`nJcDDCrr2oqrqucl!VlEiq#:!dp&=O]nG_nUl2KlFjSn*:h#>t*dJhGj +b5T9W^&GSAYl:^&VuE@gS,S]PO8b"8K`6N$HiA3fE;j_RCAqcC@K'X5>5hY'X/g9`@]^8cD9X +8,c!Q7JK:>6hj(E7JfRR8,GjV8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[HN&HoK`6l.O8bFD +S,T)[VuEdsYl;34^Ac"Kb5TZbdJheth#?72jSn<@l2L/Nnc&+Yp&=^bq#:-hqu6Qkrdk+Cs/Z2!rr2lq +r;QQlq#:!dp&=O]nG_nUl2KlFjSn*:h#>t*dJhGjb5T9W^&GSAYl:^&VuE@gS,S]PO8b"8K`6N$HiA3f +E;j_RCAqcC@K'X5>5hY'X/g9`@]^8cD9X8,c!U7K#[M7.3M<7/04J7fGpT8H)3[9E%Z_:]=5j +;Z9_r=T2M'?iFO6AH$?CD>nMRG5cgeJGt6$MZ/\9Q2[9PT`1kgXT#I'\c0>B_Z%^Wc2Q,if`'\*i;Vg: +k5OWEn,DkVo)A=]p\sseqYpBkrVQTJs4[MPrqlZnr;QQlp\smcp&=L\n,D_Rkl0]Cir7j7gA]\&d/M5f +`rlJ(/@K'p=CAr,MErL:^I/\`sL]383 +P5^jJSc5GaWW'("[f3o<_#D@Qbl5ugf)FD&hu;X7k5OTDmJcSRnc&4\pAXgcqYpBhrVlf!s+14Ds8N#p +rVl`oqYp6gpAXaanc&"VmJc>Kjo49=hu;@/f)F%qbPoN\_#CtF[f3H/WW&^mSc4uTP5^F>L]2o)I/\?h +ErKtUCAqlF@K'X5>lIk)lJ(/@K'p=CAr,MErL:^I/\`sL]383P5^jJSc5GaWW'("[f3o<_#D@Qbl5ugf)FD&hu;X7 +k5OTDmJcSRnc&4\p&Ogfp\4[`rqlTkrr.KKU]:>mqu-NlrqZZipAjsepAXaanc&"VmJc>Kjo49=hu;@/ +f)F%qbPoN\_#CtF[f3H/WW&^mSc4uTP5^F>L]2o)I/\?hErKtUCAqlF@K'X5>lIk)lJ(/@K'p=CAr,MErL:^I/\`s +L]383P5^jJSc5GaWW'("[f3o<_#D@Qbl5ugf)FD&hu;X7k5OTDmJcSRnc&4\pAXgcqYpBhrVleIs7ZJq +s8N#prVl`oqYp6gpAXaanc&"VmJc>Kjo49=hu;@/f)F%qbPoN\_#CtF[f3H/WW&^mSc4uTP5^F>L]2o) +I/\?hErKtUCAqlF@K'X5>lIk)R/WZUV#I@mY5Ym/]DfVF`r=3]d/MVq +gA^"/ir8*>kl0uKn,DkVp&=[ap\t$gqtp?krn@D+s8N#srVl`oqu6Hkp\smco`"@Zmf)SPkPjQAi;VR3 +f`'D"ci2&c`;[LM\c/r7XT#*rT`1DZPl?aCM#N&+J,X]lFT-4XC]7uGA,]m8?2e%,5he+@/a[8BDu]GDuOkXGlE3lK`6f,O8bCC +Rf8uZVZ*[rZi7K6^Ac(Mb5T`deGe/#h>Z@3jSn?Am/HGPnG`(Zp&=^bqYpBkr;QZoriZ9Ps7ZKlrr2lq +r;QTmqYp6gpAX^`nG_kTm/H2IjSn*:h>Z(+eGdenao96X^Ab\BZi7'*VZ*7fRf8QNO8at7KDpB"GlDga +DuOPOBDuE?@/aI2>5hS%;u9Dj:B!rd9)D3W8,c!T7K,]u6i0:N7JfRR8,c*W9)_N`:&@cd<;oqt>5he+ +@/a[8BDu]GDuOkXGlE3lK`6f,O8bCCRf8uZVZ*[rZi7K6^Ac(Mb5T`deGe/#h>Z@3jSn?Am/HGPnG`(Z +o`4^ep\4[`rql]mrr)iqJcDMFrr2oqrqucmrqZZipAjsepAX^`nG_kTm/H2IjSn*:h>Z(+eGdenao96X +^Ab\BZi7'*VZ*7fRf8QNO8at7KDpB"GlDgaDuOPOBDuE?@/aI2>5hS%;u9Dj:B!rd9)D3W8,c!T7K,]u +6i0:N7JfRR8,c*W9)_N`:&@cd<;oqt>5he+@/a[8BDu]GDuOkXGlE3lK`6f,O8bCCRf8uZVZ*[rZi7K6 +^Ac(Mb5T`deGe/#h>Z@3jSn?Am/HGPnG`(Zp&=^bqYpBkr;QZordk+Cs/uD$rr2lqr;QTmqYp6gpAX^` +nG_kTm/H2IjSn*:h>Z(+eGdenao96X^Ab\BZi7'*VZ*7fRf8QNO8at7KDpB"GlDgaDuOPOBDuE?@/aI2 +>5hS%;u9Dj:B!rd9)D3W8,c!T7K,^Q6dS3t7/fXP7fGpW8c)-Z9`@c`;#XGnlJ.1A,^-?C]88O +FT-OaJ,Y-#M#NJ7Pl@-NT`1hfXT#R*\Gj5A`;[pYci2Gng&Bh,i;Vg:kPjiImf)_To`"O_p\t$gqu6Nm +rVlfMs5!_SrqlZnqu6Hkq>U*eo`"F\nG_hSlMfoEj8Rs8gA]\&dJh>g`rlIn*sAj:&[ca8cD9[8,GdT7K,^D6et*-6h<\E7/fXP7fGpW +8H)3[9E%Zb:]=5j;Z9_r=T2S)@/a^9B)Z]IE;jqXI/\WpKDpi/OT(LDT)PJ`VuEn![/RZ9_>_IRbPoog +ec+;%hu;X7jo4QEm/HMRo)A=]pAXmeqYpBkrVQT!s+14Gs8N#prVl]nqYp +hu;@/f)F(rbPoN\_>_%F[JmB/VuEFiT)OuROT(4@/aF1=oMJ$;Z9Pm:]=)f +9)_E]8H)-V7fGjU7.3M!6LR;@7/fXP7fGpW8H)3[9E%Zb:]=5j;Z9_r=T2S)@/a^9B)Z]IE;jqXI/\Wp +KDpi/OT(LDT)PJ`VuEn![/RZ9_>_IRbPoogec+;%hu;X7jo4QEm/HMRo)A:^p&Xm\rqZQirql]nqu20H +WW2tsqu-NkrqcWi!VZ3epAX^`o)A.XmJcDMjo4<>hu;@/f)F(rbPoN\_>_%F[JmB/VuEFiT)OuROT(4< +KDpE#I/\3dEW0kTB)Z<>@/aF1=oMJ$;Z9Pm:]=)f9)_E]8H)-V7fGjU7.3M!6LR;@7/fXP7fGpW8H)3[ +9E%Zb:]=5j;Z9_r=T2S)@/a^9B)Z]IE;jqXI/\WpKDpi/OT(LDT)PJ`VuEn![/RZ9_>_IRbPoogec+;% +hu;X7jo4QEm/HMRo)A=]pAXmeqYpBkrVQSFs7u]"s8N#prVl]nqYphu;@/ +f)F(rbPoN\_>_%F[JmB/VuEFiT)OuROT(4@/aF1=oMJ$;Z9Pm:]=)f9)_E] +8H)-V7fGjU7.WeE6et)t6iKLQ7JfRR8,c'Y8cDB^:&[rf;>sJmlJ.1AH$3?DZ4VSF8gRdJ,Y*" +N;eqU6iqu6Qkrn[V1s8N#p +rVl]nqYp5hn.@fBp;C]88OErL@`IK"fsM>iP7P5^sMTDkVbXo>X*\Gj8B`;[mXci2Gnf`'b,iVqp;l2L#J +mf)bUoD\F^q>U6iqu6QkriuKSs7u]orqlZnqu6Hkq>U'do`"C[mf)POl2KcCiVq^5f`'D"ci2&c`;[ON +\Gif5Xo>*pTDk>ZP5^I?M>i)*IK"NkErKtUC]7lD@K'X5>5hV&<;o_n:]=,g9E%Q_8cD6Z7f,XR7-m:s +6L7)=7/KFP7fGpW8cD?]9E%]c:]=2i<;otu>5hn.@fBp;C]88OErL@`IK"fsM>iP7P5^sMTDkVbXo>X* +\Gj8B`;[mXci2Gnf`'b,iVqp;l2L#Jmf)bUo)SFap%A=[rqcWkrr)`nJcD_Lrr2fnrql]krqQTfo`4[a +o`"C[mf)POl2KcCiVq^5f`'D"ci2&c`;[ON\Gif5Xo>*pTDk>ZP5^I?M>i)*IK"NkErKtUC]7lD@K'X5 +>5hV&<;o_n:]=,g9E%Q_8cD6Z7f,XR7-m:s6L7)=7/KFP7fGpW8cD?]9E%]c:]=2i<;otu>5hn.@fBp; +C]88OErL@`IK"fsM>iP7P5^sMTDkVbXo>X*\Gj8B`;[mXci2Gnf`'b,iVqp;l2L#Jmf)bUoD\F^q>U6i +qu6Qkrdk+Fs0;V'rqlZnqu6Hkq>U'do`"C[mf)POl2KcCiVq^5f`'D"ci2&c`;[ON\Gif5Xo>*pTDk>Z +P5^I?M>i)*IK"NkErKtUC]7lD@K'X5>5hV&<;o_n:]=,g9E%Q_8cD6Z7f,XR7.Onc&.Zp&=ddqYpBkrVQTMs5!_SrqlZnqYp?iF@1=T2>";Z9Ml:B!rd9)_E] +8H)*U7K,^G6dS0t6M3_C7/fXP7fGsX8cD?]9`@cc;#XAlC]8;PFoH^dJ,Y3%MuJh; +R/WZUT`2"kYl;'0^Ac"Ka8XB`df.hsh#?41j8S9AlMg5NnG`%Yp&=acq>U6irVQT!s+14Gs8N#prVlZm +q>U0gp&=R^nG_kTli-,Ij8S!9h#>n(df.Pka8X!U^AbP>Yl:^&T`1J\R/W3HMuJJ1J,XcnFoH@ZD#S,I +@K'X5?2dt*C]8;PFoH^dJ,Y3%MuJh;R/WZUT`2"kYl;'0^Ac"Ka8XB`df.hsh#?41j8S9AlMg5NnG`"Zo`=aY +rqQKgrqcWmqu20HWW2tsqu-NjrqZQg!VQ*cp&=R^nG_kTli-,Ij8S!9h#>n(df.Pka8X!U^AbP>Yl:^& +T`1J\R/W3HMuJJ1J,XcnFoH@ZD#S,I@K'X5?2dt*C]8;PFoH^dJ,Y3%MuJh;R/WZUT`2"kYl;'0^Ac"Ka8XB` +df.hsh#?41j8S9AlMg5NnG`%Yp&=acq>U6irVQSFs7u]"s8N#prVlZmq>U0gp&=R^nG_kTli-,Ij8S!9 +h#>n(df.Pka8X!U^AbP>Yl:^&T`1J\R/W3HMuJJ1J,XcnFoH@ZD#S,I@K'X5?2dt*_Z%UTcMl8kf)FJ(hu;[8kl0lHmf)_ToD\F^q#:*gqYpHjrn[V1s8N#prVlZm +q#:$eo`"F\n,D\Ql2KlFiVq^5gA]S#ci2,e_u@FM])Jr5X8]!qTDk8XPQ$R@L]2l(HiA3fEW0hSB`;QA +@/aF1=oMG#;uTSl:B!rd9)_B\8,c!T7K,^G6d7sk6M3_C7/fXS7fGpW8H)6\9E%]c:]=8knPSG5cjfJc:H(NW,.@RJriXVZ*[rYl;65^Ac%LbPoiee,J)#h>ZC4kPj`Fm/HJQo)A:\p\t!f +qYpHjriuKSs7u]orqlZnqYp9hp\sgao)A+Wm/H8KkPjH>hYu7.e,I\mbPoEY^](hDYl:^&VZ*4eRJrEL +NW+_4Jc:#qG5cL\D>n5JAH$!9>lIn*nPSG5cjfJc:H(NW,.@RJriXVZ*[rYl;65^Ac%LbPoiee,J)#h>ZC4 +kPj`Fm/HJQnc8:_o^r.WrqZQirr)`nJcD_Lrr2fnrqcWhrq?HcoDnO_o)A+Wm/H8KkPjH>hYu7.e,I\m +bPoEY^](hDYl:^&VZ*4eRJrELNW+_4Jc:#qG5cL\D>n5JAH$!9>lIn*nPSG5cjfJc:H(NW,.@RJriXVZ*[r +Yl;65^Ac%LbPoiee,J)#h>ZC4kPj`Fm/HJQo)A:\p\t!fqYpHjrdk+Fs0;V'rqlZnqYp9hp\sgao)A+W +m/H8KkPjH>hYu7.e,I\mbPoEY^](hDYl:^&VZ*4eRJrELNW+_4Jc:#qG5cL\D>n5JAH$!9>lIn*l2L&Kn,DnWo`"Uaq>U6irVQTMs5!_M +rVlZmq#:$eoD\:Zn,DYPl2KiEi;VO2g&BG!cMkuc_Z%7J\,NT1WW&^mSGnlSOoC7;L&QT$H2_pbDuOPO +B)Z6sAj9`@Z`8cD6Z7f,XR7.3Lf6M5hk- +@K'mZ@3k5OTDli-APnc&.Zp\t!f +qY:#os+14Gs7lQlqYp9hp\sd`nc&"Vli-/Jk5O</ +J,X`mFT-4XC]7rF@K'U4>Q.b(<;obo:]=&e9)_E]8,c!T7K,^D6c)1\6iKLN7K,dU8,c*Z9E%Wa:]=8k +<;p#!>5hk-@K'mZ@3k5OTDli-AP +nGr.]oCMtUrqZQiq#,dDWW2blrqcWhrq?Hbo)SC]nc&"Vli-/Jk5O</J,X`mFT-4XC]7rF@K'U4>Q.b(<;obo:]=&e9)_E]8,c!T7K,^D6c)1\6iKLN7K,dU +8,c*Z9E%Wa:]=8k<;p#!>5hk-@K'mZ@3k5OTDli-APnc&.Zp\t!fqY:#?s7u]"s7lQlqYp9hp\sd`nc&"Vli-/Jk5O</J,X`mFT-4XC]7rF@K'U4>Q.b(<;obo:]=&e9)_E]8,c!T7K,^D6hs'k +6LmMC7/KFP7fGpW8cDB^9`@ie;Z9Yp=T2M'?N+C4B)ZTFDuOkXH2``WrB4$\,O)? +_Z%^WcMl8kg&Bh,i;VmU6crS@M0s82cor;QQlq#:$eoD\:Zn,DVOkPjQAi;VO2 +fDa.rbl5]__#CtF[Jm?.W;`LiRf8QNO8aq6KDp?!G5cO]DuOGLAH#s8>lIn*=8l+s;#X5h9E%Q_8cD3V +7K,^G6cVOb6M3_C7/fXP7fH!Y9)_K_:B")h;Z9bs=oM\*?iFU8B`;rLF8g@^If=ruL]3A6Pl@-NU&Lth +Y5Yj.])KMEaSsE_d/MYrg]$.1jSnBBlMg8Onc&.Zp\t!fqYU3irNZBRs7u]lrVl`oqYp9hp\sd`nc&"V +lMfuGjSn*:h#>q)d/M8gaSs!S]Df5;Y5YC!U&LM[Pl?aCL]2r*If=NiErL"VB`;QA?iF=0=oMM%;Z9Ml +:B!oc9)_E]7f,XR7.N^U6M3_C7/fXP7fH!Y9)_K_:B")h;Z9bs=oM\*?iFU8B`;rLF8g@^If=ruL]3A6 +Pl@-NU&LthY5Yj.])KMEaSsE_d/MYrg]$.1jSnBBlMg8OnGr.]oCMtUrqZQiqu$HlJcD_Lqu-NlrqcWh +rq?Hbo)SC]nc&"VlMfuGjSn*:h#>q)d/M8gaSs!S]Df5;Y5YC!U&LM[Pl?aCL]2r*If=NiErL"VB`;QA +?iF=0=oMM%;Z9Ml:B!oc9)_E]7f,XR7.N^U6M3_C7/fXP7fH!Y9)_K_:B")h;Z9bs=oM\*?iFU8B`;rL +F8g@^If=ruL]3A6Pl@-NU&LthY5Yj.])KMEaSsE_d/MYrg]$.1jSnBBlMg8Onc&.Zp\t!fqYU3irIP"E +s0;V$rVl`oqYp9hp\sd`nc&"VlMfuGjSn*:h#>q)d/M8gaSs!S]Df5;Y5YC!U&LM[Pl?aCL]2r*If=Ni +ErL"VB`;QA?iF=0=oMM%;Z9Ml:B!oc9)_E]7f,XR7.N_:6H;Fc6i0:N7JfRR8cD?]9E%]c;#XAl=8lA% +>lJ+0AH$9ADuOhWG5csiK)UQ)O8bCCRf9#[VuEju[Jmc:_#DFSbl5ugfDaP(i;Vg:kl0lHn,DkVoD\L` +q>U6fr;QZNs5!_SrVl`oqu6Ejq#:!do)A.Xmf)GLjo49=hYu7.ec*qpbPoK[^](bBZMpp(V>d+dQi<0I +NrF_2J,XfoF8g.XD#S#F@fBa6=oMM%<;o_n:B!rd8cD9[8,c!W7K,^G6c;=Y6M3_F7/fXS7fGpW8H)3[ +9`@fd;#XGn +kl1#LnG`"XpAXgcq>U9jr;QZ"s+14Gs8Murr;QTmq>U0gpAXX^nG_kTkl0]Cir7g6gA]Y%d/M5f`W!XO +\Gif5X8\spTDk2VP5^L@K`6K#HiA*cE;j\QAc?0kl1#Ln,W"[o()eRrqHEfrql]mrr%EJWW2trrqucmrqZQgrq6B`nc87[nG_kTkl0]C +ir7g6gA]Y%d/M5f`W!XO\Gif5X8\spTDk2VP5^L@K`6K#HiA*cE;j\QAc?0kl1#LnG`"XpAXgcq>U9jr;QYGs7u]"s8Murr;QTmq>U0g +pAXX^nG_kTkl0]Cir7g6gA]Y%d/M5f`W!XO\Gif5X8\spTDk2VP5^L@K`6K#HiA*cE;j\QAc?0dOpZMqE6^])4Ob5Tceec+8$hYuO6k5OTDmf)_To)A@^p\t!fqu6NmrS@M0 +s8Murr;QTmq>U-fp&=L\n,D_Rkl0]Cir7d5f`'D"cMkrb`;[IL\,NZ3WW&[lT)OuRO8b(:K)U5uHN%sa +DZ4DMAH$!9?2dt*ZF5k5OTDmJcSRnc&4\p\t!f +qu6NmrNZBRs7u]orVl`oqu6Ejp\sjbnc&"VmJc>Kjo49=h>Z(+eGdbmao96X^&GM?Z2Ua%U]-kaPl?aC +MuJ>-If=ZmErKtUCAqcC@/aI2=T2>";Z9Ml:&[fb8cD9[8,bsV7.3LI6LmMC7/fXS8,c'Y8cDB^:&[ug +;Z9_r=T2V*@K'g:CAr,MErLCaIf=ruMuJh;Pl@9RU].7lZ2V63^&GtLao9TbeGe/#h>ZF5k5OTDmJcPS +nH&1Mrq69brqZQjrqucoJcD_Lrr)iorql]jrqHEb!V,[[nc&"VmJc>Kjo49=h>Z(+eGdbmao96X^&GM? +Z2Ua%U]-kaPl?aCMuJ>-If=ZmErKtUCAqcC@/aI2=T2>";Z9Ml:&[fb8cD9[8,bsV7.3LI6LmMC7/fXS +8,c'Y8cDB^:&[ug;Z9_r=T2V*@K'g:CAr,MErLCaIf=ruMuJh;Pl@9RU].7lZ2V63^&GtLao9TbeGe/# +h>ZF5k5OTDmJcSRnc&4\p\t!fqu6NmrIP"Es0;V'rVl`oqu6Ejp\sjbnc&"VmJc>Kjo49=h>Z(+eGdbm +ao96X^&GM?Z2Ua%U]-kaPl?aCMuJ>-If=ZmErKtUCAqcC@/aI2=T2>";Z9Ml:&[fb8cD9[8,bsV7.3M4 +6GZ"Z6iKLQ7K,gV8H)3[9E%Zb;#XAlmg&Bh,ir8*>kl0uKn,DkVp&=^bq>U9jr;QZNs5!_SrVl`oqu6BipAXaanc&"VmJc>Kjo46< +h#>t*e,IVkaSs*V]`,>i&)I/\?hE;j\QC&VT@?iF=0=8l5!;>sDk:&[fb8H)-Y +7fGjU7.ip]6L$o16iKLQ7K,dU8,c'Y9E%Zb;#X>k<;otu>lJ+0@fC*@D#SDQGQ*!hJGtE)NrG7ASGo5] +VuEn![Jmi<_u@aVc2Q2kfDaS)iVqslIh(k<;otu>lJ+0@fC*@D#SDQGQ*!hJGtE) +NrG7ASGo5]VuEn![Jmi<_u@aVc2Q2kfDaS)iVqslIh(k<;otu>lJ+0@fC*@ +D#SDQGQ*!hJGtE)NrG7ASGo5]VuEn![Jmi<_u@aVc2Q2kfDaS)iVqslIh(sPo +=8lJ(?iFO6C&VrJE;k(\I/\ZqM>iP7PQ%*OU&LthYPts/]`,hJaSsH`e,Ituh#?:3jo4KCmJcSRnc&4\ +p\ssequ6NmrS@M3s8N#srVl`oqYp6gpAX^`nG_hSli-&Gj8Rs8gA]\&dJh>g`r5hh,@/ag_IRbPoogec+;%hu;[8 +k5O]Gmf)_To`"O_p\t$gqu6QkrjVoYs8;orrr2lqr;QQlp\smco`"@ZmJcGNk5OE?hu;@/f)F(rbPoN\ +_>_"EZi70-V#HtbRJr5hP$;uTVm:B!oc8c)$W7fGgK6f:<160UZ6 +6/=m)6i0:K7fGpW8cDB^:B")h;uTer>5hh,@/ag_IR +bPoogec+;%hu;[8k5O]GmJu_WnF6GLrq69brqcWkrr)`nJcE%Urr2oqrquclrqHEcrq$6\n,VtWmJcGN +k5OE?hu;@/f)F(rbPoN\_>_"EZi70-V#HtbRJr5hP$;uTVm:B!oc +8c)$W7fGgK6f:<160UZ66/=m)6i0:K7fGpW8cDB^:B")h;uTer>5hh,@/ag_IRbPoogec+;%hu;[8k5O]Gmf)_To`"O_p\t$gqu6Qkrdk(Ms8TJ+rr2oqrqucl +rqHEcrq-3ZrpB^NroX4?rnm_/rmq(rrlb;\rk\TErj2U-rhTObrgEbIrepc1rdauorcJ-XrbDFFra>_2 +r`];$r_remr_EGcr^luWr^QlTog@n/qEk0Iks556h*V!+qaC_1r`T5#r_relr_EGcr^m)Zr^QlUnjDG(qa'@0r^$KLj?iN,r^HfUr^ZrZr_*5cr_NMk +r`/r#r`oG1ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fYrm:Yprn7;.ro3q=rp0RNrp]pY +rq69brqcWkrr)`n\,V$Zr;Zcqrr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl+lOrj_s5riQ0o +rgj%Trf@&9re:?"rcnE`rb_XKral(:r`oG*r`/qrr_NMgr_*5^r^ZrWr^HBFj$NW/k!8o3i'R*(r^HfU +r^ZrZr_*5cr_NMkr`/r#r`oG1ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fYrm:Yprn7;. +ro3q=rp0RN!:U$YnG`%Yp&=^bqYpBkrVQSFs0D\(rr2lqr;QQlp\smco)\@M!:^!Trp0RFro3q7rn7;$ +rm:Yerl+lOrj_s5riQ0orgj%Trf@&9re:?"rcnE`rb_XKral(:r`oG*r`/qrr_NMgr_*5^r^ZrWr^HBF +j$NW/k!8o3i'R*(r^HfUr^ZrZr_*5cr_NMkr`/r#r`oG1ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1* +rj_sBrl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nJc>cNs0Vh*rr2lqr;QQlp\smcoD\7Y +mJcGNjo49=hu;=.ec*qpb5TBZ^](bBZMq!*UAg__Qi<'FMZ/>/IK"KjF8g%UC&V]C@/aF1=oMG#;uTSl +:B!oc8cD6Z7fGjI6g$f76Mj(25lO(-6M3_F7K,dU8,c*Z9E%]c:]=8klJ.1Ac?ECD>nVUGlE-j +L&Qu/O8bLFSc5A_Xo>X*\Gj8B`;[pYd/MSpg&Bn.ir8'=li-;NnG`%Yp&=^bqYpBkrVQTSs5i/,I/\?hErKnSB`;N@ +?iF:/=T2;!;>sAj9`@Z`8cD3V7JK7+6JXp*6K(9+6iKOO7fH!Y9E%Wa:]=8k<;p#!>Q/"/A,^-?D#SJS +GQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gnf`'e-ir8'=li-;NnG`%Yp&=^bqYpBkrVQT's+14J +s8N#srVl`oqYp6gpAX[_nG_hSli-#Fir7j7f`'A!ci2#b_u@FM[f3Q2XT"mlS,S`QNrFn7KDp8tGQ)X^ +D#S,IA,]j7>Q.b(<;obo:]=&e9)_E]7f,XL6et)b5i"d%6iKOO7fH!Y9E%Wa:]=8k<;p#!>Q/"/A,^-? +D#SJSGQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gnf`'e-ir8'=li-8On,`%Jrq$-^rqHEgrql]n +qu20HZN'q'rr)iorqcWgrq??_!V#RYnG_hSli-#Fir7j7f`'A!ci2#b_u@FM[f3Q2XT"mlS,S`QNrFn7 +KDp8tGQ)X^D#S,IA,]j7>Q.b(<;obo:]=&e9)_E]7f,XL6et)b5i"d%6iKOO7fH!Y9E%Wa:]=8k<;p#! +>Q/"/A,^-?D#SJSGQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gnf`'e-ir8'=li-;NnG`%Yp&=^b +qYpBkrVQSFrrN0"[/^.)rr)iorqcWgrq??_rp]pSrp0RFro3q7rn.5!rm1Sbrkn`MrjMg2riH*lrgWnQ +rf6u7re(2trce?^rbVRIraYq7r`fA(r`&kor_NMer_!/]r^QcRpd=",rBf=*h*Um(r^H]Rr^m)^r_3;e +r_i_pr`K/(ra5Y7rb)4Hrc8!^rd=]treUQ6rg*PRrh07lriuI2rkJHNrlG)brm^r"rnm_7roO.FrpB^S +rq$-^rqHEgrql]nqu5XUi;`fUrqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(trm1Sbrkn`Lrj;[.ri5sj +rgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NKj$N`2f0B=%!C9$36MNqI +7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XUci2Dm +f)FP*iVqp;lMg/Ln,DnWp&=^bqYpBkr;6K&s+14Js8N#sr;QTmqYp6gp&=O]n,D\QlMflDiVq^5f)F.t +ci2#b_u@CL[/R9.WrA[jRf8QNN;eS2JGsloFoH@ZC]7rF@fB^5>5hV&;Z9Ml:B!oc9)_B\7fGjU7/0.0 +6N0:&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[WrB4$ +[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg,MmfDnGrpp']rqHEgrql]mqu20HZN'q'rqucmrqcWgrq69]!UoIW +n,D\QlMflDiVq^5f)F.tci2#b_u@CL[/R9.WrA[jRf8QNN;eS2JGsloFoH@ZC]7rF@fB^5>5hV&;Z9Ml +:B!oc9)_B\7fGjU7/0.06N0:&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^d +JGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg/Ln,DnWp&=^bqYpBkr;6JErrN0"[/^.) +rqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(trm1Sbrkn`Lrj;[.ri5sjrgNhNrf$i2rdauorcS3ZrbMLF +raPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NKj$Ec45la4&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs +>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg/Ln,DnWp&=^b +qYpBkr;6KRs5Z")df.Sl`r +L&QW%HN&'dE;jVOB)Z6rgEbXri#h!rj2U;rkeZSrm1Smrmq))ro!e9rosFK +rpTjWrq69brqcWkrquZm\,V$Zr;ZcqrqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm1S`rk\TIrj2U, +ri#ggrgEbLrepc0rdauorcS3ZrbDFEraGe3r`T5%r_i_kr_rgEbXri#h!rj2U;rkeZSrm1Smrmq)) +ro!e9rosFK!:KsWn,DnWp&=^bqYpBkr;6JEs0D\(rr2ipqu6Hkp\sjbncA4J!:TpQrosFBro!e3rmq(s +rm1S`rk\TIrj2U,ri#ggrgEbLrepc0rdauorcS3ZrbDFEraGe3r`T5%r_i_kr_rgEbXri#h!rj2U; +rkeZSrm1Smrmq))ro!e9rosFKrpTjWrq69brqcWkrquZmJc>cNs0Vh*rr2ipqu6Hkp\sjbo)A+Wli-/J +j8S!9h>Z")df.Sl`rL&QW%HN&'dE;jVOB)Z65hh,@K'j;CAr2OFoH^dJGt<&MuJq> +RJriXW;`t!Zi7Z;_Z%RSci2Dmf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBkr;6KRs5n(df.Pk`W!^Q]`,8:Y5Y?uT)P,VP5^@lIn*!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@/aa:B`;rLFT-OaJ,Y-# +MZ/e_+HZi7-,VuE:eR/W9JMZ/;.J,X]lF8g+WB`;QA@/aF1 +=oMJ$;Z9Jk:&[ca8H)-Y7K,^M6fUMV5i>!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@/aa:B`;rLFT-Oa +J,Y-#MZ/e_+HZi7-,VuE:eR/W9JMZ/;.J,X]lF8g+W +B`;QA@/aF1=oMJ$;Z9Jk:&[ca8H)-Y7K,^M6fUMV5i>!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@/aa: +B`;rLFT-OaJ,Y-#MZ/e_1r`T5$r_i_kr_";#X5h9`@W_8H)*X +7K,^M6g6r:62lJ.1AH$6@DuOhWG5d!jKDp]+OoC^H +Sc5McXT#L(]DfVF`W"-]dJhYph#?41ir80@li-APnc&1[pAXpfqu6Njro=%:s8N#sr;QQlq>U*eoD\7Y +mf)POkl0T@hYu:/eGdhoc2PZ\^](kEZ2Uj(V>d"aQN!!FM#N&+If=KhEW0hSBDuH@@/aF1=T2>";#X5h +9`@W_8H)*X7K,^M6gR/:6-V[g5lO(66Mj.L7/fXS7fGpW8cDE_:B")hlJ.1AH$6@D>nPSFoHjh +K)UT*OT(RFSGoAaX8]C']DfVF`;\$\dJhYpg]$+0ir80@lMg5NnG`(ZpAXmequ6NjrjVoYs8;orrr2ip +qYpn2IAH$!9 +>lIk)lJ.1AH$6@ +D>nPSFoHjhK)UT*OT(RFSGoAaX8]C']DfVF`;\$\dJhYpg]$+0ir80@l2^5QmdC)Drq-3`rqZQjrquZm +JcE%Urr2oprqcWirq??_rpTsVmJu\Sli-,Iir7g6g]#_%d/M;h`;[ON]Df)7XT#'qSGniROT((8KDp?! +FoHC[D>n2IAH$!9>lIk)lJ.1AH$6@D>nPSFoHjhK)UT*OT(RFSGoAaX8]C']DfVF`;\$\dJhYpg]$+0ir80@lMg5NnG`(Z +pAXmequ6Njrdk(Ms8TJ+rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Yhrl"fNrk&07riH*qrg`tR +rfI,8re(3!rcS3[rb_XIrac"9r`oG)r`/qor_EGdr^m)[r^QlUr^?NKlpCS8q*<(fr^#d8qa:?Nr^HfU +r^ZrZr_3;dr_WSor`K/)ra>_9rb)4Irc.p[rdOiureUQ8rg*PRrh]UpriuI7rkSNOrltGirm^r%rnm_7 +roj@HrpKdTrq-3`rqZQjrquZmj8\';rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrjr*5 +ri5snrg`tRrf@&7re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQ +r^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureUQ7rg!JQrhTOorilC5rkABLrlkAgrm^r%rnm_7 +roj@HrpKdTrq-3`rqZQjrquZm\,V$Zr;ZcqrquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHD +rilC%rhTO`rg*PEreUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!HUDk!K&7qaCEQ +r^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureUQ7rg!JQrhTOorilC5rkABLrlkAgrm^r%rnm_7 +roj@H!:BmUmf)_To`"R`q>U9jr;6JEs0D\(rr2ipqYpcNs0Vh*rr2ipqYpn/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6fp`,5fZ.P +6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruM#NJ7Q2[U9jr;6KRs5X.Yrr2lqr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/e,I\m +bPoEY^Ab\BYl:[%U]-b^Q2ZjDL]2l(IK"BgEW0hSB)Z<>?iF7.=8l1u;#X5h9`@W_8H)*X7/K@66H;@_ +5itE46i0:N7fGpW8cDE_:B")h<;oqt>5hn.A,^*>D>nPSFoHggK)UQ)O8bFDS,T2^WrB7%\c0>B_u@jY +ci2Dmg]$+0ir80@lMg5NnG`(ZpAXmequ6NmrVlf*s+11Ns8W)trr)iorqcWirq??_rp]pTrp0RIro3q6 +rnIG$rm1Serkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlT +qa9L4\No:Dr^6QNr^QlWr^m)_r_EGhr`&ktr`];.raYq>rb_XSrcS3grdt-)rf@&DrgWn^ri5t%rji$B +rkn`Yrm1SmrnIG0ro3q@rosLO!UfCTnG`(ZpAXmequ6NmrVleIs0_n+rr2lqr;QQlq>U*eoD\4[md:)C +rp0RIro3q6rnIG$rm1Serkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGd +r^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_EGhr`&ktr`];.raYq>rb_XSrcS3grdt-)rf@&DrgWn^ +ri5t%rji$Brkn`Yrm1SmrnIG0ro3q@rp'LNrp]pZrq??erql]mrr)iqJc>cNs0r%-rr2lqr;QQlq>U*e +oD\7Ymf)POkl0T@hYu:/e,I\mbPoEY^Ab\BYl:[%U]-b^Q2ZjDL]2l(IK"BgEW0hSB)Z<>?iF7.=8l1u +;#X5h9`@W_8H)*X7/K@66M!I_5itE46i0:N7fGpW8cDE_:B")h<;oqt>5hn.A,^*>D>nPSFoHggK)UQ) +O8bFDS,T2^WrB7%\c0>B_u@jYci2Dmg]$+0ir80@lMg5NnG`(ZpAXmequ6NmrVlfVs5X.Yrr2lqr;QQl +q>U'doD\7Ymf)POkl0Q?hYu:/e,I\mbPoEY^Ab\BYl:[%U]-_]Q2ZjDL]2l(IK"BgEW0hSAc?0nPSFoHgg +K)UQ)O8bCCRf9)]WrB7%\c0>B_u@jYci2Dmg]$(/iVr'?lMg5NnG`%Yp&=ddqu6NmrVlf*s+11Ns8W)t +rr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Serkn`Lrji$4ri5smrgNhOrf@&6rdk&srcS3[rb_XG +raPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_U'doD\4[md:)Crp0RIro*k5rnIG$rm1Serkn`Lrji$4ri5smrgNhOrf@&6rdk&s +rcS3[rb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_cNs0r%-rr2lqr;QQlq>U'doD\7Ymf)POkl0Q?hYu:/e,I\mbPoEY^Ab\BYl:[%U]-_]Q2ZjD +L]2l(IK"BgEW0hSAc?0nPSFoHggK)UQ)O8bCCRf9)]WrB7%\c0>B_u@jYci2Dmg]$(/iVr'?lMg5NnG`%Y +p&=ddqu6NmrVlfVs5X.Yrr2lqr;QQlq>U'doD\7Ymf)POkl0Q?hYu:/e,I\mbPoBX^&GSAYl:[%U]-_] +Q2ZjDL]2l(I/\6eE;j_RAc?0nPSFT-[eJc:H(O8bCCRf9)]WrB7%\c0>B_Z%aXci2Dmg]$(/iVr'?lMg5N +nG`%Yp&=ddqu6NmrVlf*s+11Ns8W)trr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1SerkeZJrji$4 +ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlW +r^m)_r_U'doD\4[md:)Crp0RIro*k5rnIG$rm1Se +rkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4\No:D +r^6QNr^QlWr^m)_r_cNs0r%-rr2lqr;QQlq>U'doD\7Ymf)POkl0Q?hYu:/ +e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDL]2l(I/\6eE;j_RAc?0nPSFT-[eJc:H(O8bCCRf9)]WrB7%\c0>B +_Z%aXci2Dmg]$(/iVr'?lMg5NnG`%Yp&=ddqu6NmrVlfVs5X.Yrr2lqr;QQlq>U'doD\7Ymf)POkl0Q? +hYu:/e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDL]2l(I/\6eE;j_RAc?0nPSFT-[eJc:H(O8bCCRf9)]WrB7% +\c0>B_Z%aXci2Dmg]$(/iVr'?lMg5NnG`%Yp&=ddqu6NmrVlf*s+11Ns8W)trr)iorqcWirq69^rp]pT +rp0RIro*k5rnIG$rm1SerkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGd +r^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_U'd +oD\4[md:)Crp0RIro*k5rnIG$rm1SerkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5% +r_remr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_cNs0r%-rr2lq +r;QQlq>U'doD\7Ymf)POkl0Q?hYu:/e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDL]2l(I/\6eE;j_RAc?0< +?iF4-=8l.t;#X5h9`@W_8H)*X7/K@66M!I_5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPS +FT-[eJc:H(O8bCCRf9)]WrB7%\c0>B_Z%aXci2Dmg]$(/iVr'?lMg5NnG`%Yp&=ddqu6NmrVlfVs5X.Y +rr2lqr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/e,I\mbPoBX^&GSAYl:[%U]-b^Q2ZjDL]2l(I/\6eE;j_R +B)Z9=?iF4-=8l.t;#X5h9`@W_8H)*X7/K@66H;@_5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-A,^*> +D>nPSFT-[eJc:H(O8bFDS,T2^WrB7%\c0>B_Z%aXci2Dmg]$+0ir80@lMg5NnG`(ZpAXmequ6NmrVlf* +s+11Ns8W)trr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$rm1SerkeZJrji$4ri5smrgWnPrf@&6rdk&r +rcJ-Yrb_XHraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_rb_XSrcJ-erdk'(rf@&DrgWn^ri5t%rji$BrkeZXrm1SmrnIG0ro3q@rosLO!UfCTnG`(ZpAXme +qu6NmrVleIs0_n+rr2lqr;QQlq>U*eoD\4[md:)Crp0RIro3q6rnIG$rm1SerkeZJrji$4ri5smrgWnP +rf@&6rdk&rrcJ-Yrb_XHraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_rb_XSrcJ-erdk'(rf@&DrgWn^ri5t%rji$BrkeZXrm1SmrnIG0ro3q@rp'LNrp]pZ +rq??erql]mrr)iqJc>cNs0r%-rr2lqr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/e,I\mbPoBX^&GSAYl:[% +U]-b^Q2ZjDL]2l(I/\6eE;j_RB)Z9=?iF4-=8l.t;#X5h9`@W_8H)*X7/K@66M!I_5itE46i0:N7fGpW +8cDE_:&[ug;uThs=oMe-A,^*>D>nPSFT-[eJc:H(O8bFDS,T2^WrB7%\c0>B_Z%aXci2Dmg]$+0ir80@ +lMg5NnG`(ZpAXmequ6NmrVlfVs5X.Yrr2lqr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/e,I\mbPoEY^Ab\B +Yl:[%U]-b^Q2ZjDL]2l(IK"BgEW0hSB)Z<>?iF7.=8l1u;#X5h9`@W_8H)*X7/K@66H;@_5itE46i0:N +7fGpW8cDE_:B")h<;oqt>5hn.A,^*>D>nPSFoHggK)UQ)O8bFDS,T2^WrB7%\c0>B_u@jYci2Dmg]$+0 +ir80@lMg5NnG`(ZpAXmequ6NmrVlf*s+11Ns8W)trr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$rm1Se +rkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlTqa9L4\No:D +r^6QNr^QlWr^m)_r_EGhr`&ktr`];.raYq>rb_XSrcS3grdt-)rf@&DrgWn^ri5t%rji$Brkn`Yrm1Sm +rnIG0ro3q@rosLO!UfCTnG`(ZpAXmequ6NmrVleIs0_n+rr2lqr;QQlq>U*eoD\4[md:)Crp0RIro3q6 +rnIG$rm1Serkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlT +qa9L4\No:Dr^6QNr^QlWr^m)_r_EGhr`&ktr`];.raYq>rb_XSrcS3grdt-)rf@&DrgWn^ri5t%rji$B +rkn`Yrm1SmrnIG0ro3q@rp'LNrp]pZrq??erql]mrr)iqJc>cNs0r%-rr2lqr;QQlq>U*eoD\7Ymf)PO +kl0T@hYu:/e,I\mbPoEY^Ab\BYl:[%U]-b^Q2ZjDL]2l(IK"BgEW0hSB)Z<>?iF7.=8l1u;#X5h9`@W_ +8H)*X7/K@66M!I_5itE46i0:N7fGpW8cDE_:B")h<;oqt>5hn.A,^*>D>nPSFoHggK)UQ)O8bFDS,T2^ +WrB7%\c0>B_u@jYci2Dmg]$+0ir80@lMg5NnG`(ZpAXmequ6NmrVlfVs5n/H@fBa6>5hV&<;o_n:B!rd +8cD9[7fGgQ6fp_U5k@8'6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruM#NJ7Q2[U9jr;6K&s+14Js8N#sr;QQlq>U*eoD\7Y +mf)POkl0T@hYu:/eGdhobl5NZ^](hDYl:[%V#Hn`QMusEM#N&+If=KhEW0hSB)Z9=?iF7.=8l1u;#X5h +9`@W_8H)*X7/K@66FfAD6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruM#NJ7Q2[U9jr;6JErrN0"[/^.)rquclrqZQe +rq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHDrilC%rhTO`rg*PEreUQ+rdOihrc.pSrau.=ra5Y.r`B(u +r_WShr_3;_r^d#Xr^?WNk!JZ)a$AcRr^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-* +rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu5XUi;`fUrqucmrqcWf +rq-3[rpTjProj@@rnm_1rm^qorlkA[rkJHDrilC&rh]Ubrg*PFreUQ+rdOiirc8!Urau.>ra5Y/r`B)! +r_WShr_3;_r^d#Xr^?WNk!Jr2bs:tfr^#[5r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^Urc\9i +rdt-*rfI,Grgj%bri?%&rjr*Drl"f[rm:YornRM1ro3q@rp0RPrpg![rq??frql]mqu4))JcGZJrr2op +rql]krq??`rpg!Vrp0RIro3q7rnRM&rm:Ygrl"fNrjr*5ri?$prgj%SrfI,8re(3!rc\9]rbh^IraYq7 +r`fA'r`/qor_EGdr^m)[r^QlTqa9L4qa&(ar^#[5r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^U +rc\9irdt-*rfI,Grgj%bri?%&rjr*Drl"f[rm:YornRM1ro3q@rp'RQ!UoLVnc&1[pAXpfqu6Njrdk*T +s8N#sr;QTmqYp3fo`"@]n*^8Frp0RIro3q7rnRM&rm:Ygrl"fNrjr*5ri?$prgj%SrfI,8re(3!rc\9] +rbh^IraYq7r`fA'r`/qor_EGdr^m)[r^QlTqa9L4qa&(ar^#[5r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/ +raYq>rbh^Urc\9irdt-*rfI,Grgj%bri?%&rjr*Drl"f[rm:YornRM1ro3q@rp0RPrpg![rq??frql]m +qu20H!WW2,s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1eGdhobl5Q[^](hDYl:^&V>d%bQN!!FM#N&+ +If=NiErKtUB)Z<>?iF:/=8l5!;#X5h9`@W_8H)*X7/K@66Mj(E5fu@k60:N56i0:N7fGpW8cDE_:B")h +Q/"/A,^*>DZ4\UG5csiK)UT*OT(UGSc5JbX8]@&])KJD`;\![d/MPoh#?41ir80@li-APnc&1[ +pAXpfqu6Njro=%:s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1eGdhoc2P]]_#CtFZ2Uj(VZ*.cQi<-H +M#N&+J,XWjErL"VBDuH@@/aF1=T2>";#X5h9`@W_8H)*X7K,^M6g6r:6-V[j5lO(36Mj.L7/fXS7fGpW +8cDE_:B")hlJ.1AH$6@DuOhWG5d!jKDp]+OoC^HSc5McXT#L(]DfVF`W"-]dJhYph#?41ir80@ +li-APnc&1[pAXpfqu6NjrjVoYs8;orrr2ipqu6HkpAX^`nc&"Vli-,Iir7j7h#>h&d/M;h`W![P]Df)7 +XT#*rSc4uTOoC19KDpB"G5cO]DuODKAH$!9>lIk)lJ.1AH$6@DuOhWG5d!jKDp]+OoC^HSc5McXT#L(]DfVF`W"-]dJhYp +h#?41ir80@lN$ASn*g8Grq-3`rqcWkrquZmJcE%Urr2oprql]krq??`rp^$Xmf;hUli-,Iir7j7h#>h& +d/M;h`W![P]Df)7XT#*rSc4uTOoC19KDpB"G5cO]DuODKAH$!9>lIk)lJ.1AH$6@DuOhWG5d!jKDp]+OoC^HSc5McXT#L( +]DfVF`W"-]dJhYph#?41ir80@li-APnc&1[pAXpfqu6Njrdk(Ms8TJ+rr2oprql]krq??`rpg!Vrp0RI +ro3q7rnRM&rm:Yhrl+lPrk&07riH*rrgj%TrfR29re(3"rc\9]rbqdKrac"9r`oG)r`/qor_EGdr^m)[ +r^QlUr^?NKksGA8q*<1ir^#[5qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4KrcA'^rdXp"reUQ9 +rg3VTrhf[rriuI7rkSNPrltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWkrquZmj8\';rr2oprql]krqHEb +rpg!Vrp0RJro="9rnRM(rmLekrl+lQrk/6:riZ6urgs+Vrf[8_:rb2:LrcJ-ardXp# +reg]_1 +r`T5$r_i_kr__:rb2:LrcJ-a +rdXp#reg]_1r`T5$r_i_kr__: +rb2:LrcJ-ardXp#reg]cNs0Vh*rr2ipqu6Hkp\sjbnc&"Vli-/Jj8S!9h#>n(df.Pk`W!^Q]`,8:Y5Y?uT)P,VP5^@lIn*!+6iKLQ7K,gV8cD?]:&[ug;Z9_r +=T2S)@/aa:B`;rLFT-OaJ,Y-#MZ/eZ")df.Pk`r +L&QT$H2_pbDuOMNB)Z6<7i'RE1r^?`Sr^QlX +r^m)]r_EGhr_i_rr`T5+raGe;rbDFNrcJ-brdXp$repc>rgEbXri#h"rj;[rgEbXri#h"rj;[ +rgEbXri#h"rj;[cNs0Vh*rr2ipqu6Hk +p\sjbnc&"Vm/H;LjSn*:h>Z")df.Pk`rL&QT$H2_pbDuOMNB)Z6RJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg/Ln,DkVo`"UaqYpBkr;6KR +s5rbMLPrcS3drdb!&rf$i@rgWn[ri5t$rj;[=rkeZUrm1Smrmq)*ro*k;rp'LLrpTjW +rq69brqcWkrquZm\,V$Zr;ZcqrqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(trm1Sbrkn`Lrj;[.ri5sj +rgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NKj$N`2f0K=$j$NN.r^?`S +r^QlXr^m)^r_EGhr_i_sr`];-raPk>rbMLPrcS3drdb!&rf$i@rgWn[ri5t$rj;[=rkeZUrm1Smrmq)* +ro*k;rp'LL!:KsWn,DnWp&=^bqYpBkr;6JEs0D\(rr2ipqu6Hkp\sjbncA4J!:TpRrp'LDro*k5rmq(t +rm1Sbrkn`Lrj;[.ri5sjrgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NK +j$N`2f0K=$j$NN.r^?`Sr^QlXr^m)^r_EGhr_i_sr`];-raPk>rbMLPrcS3drdb!&rf$i@rgWn[ri5t$ +rj;[=rkeZUrm1Smrmq)*ro*k;rp'LLrpTjWrq69brqcWkrquZmJc>cNs0Vh*rr2ipqu6Hkp\sjbo)A+W +m/H;LjSn-;hYu+*e,I\maSs*V^AbM=YPtR$T`1DZPl?X@LAl`&HN&'dE;jYPB)Z9=?N+.-=8l+s;#X5h +9E%Q_8H)*X7K,^M6fUK65sYK:f0K=$j$NN.r^?`Sr^QlXr^m)^r_EGhr_i_sr`];-raPk>rbMLPrcS3d +rdb!&rf$i@rgWn[ri5t$rj;[=rkeZUrm1Smrmq)*ro*k;rp'LLrpTjWrq69brqcWkrquZmj8\';rr2oq +rquclrqHEcrq$-YrpB^NroO.=rnm_-rmUkmrlG)VrkJH@riuI(rh07[rg*PDre^W,rd=]hrc8!Srb2:@ +ra5Y/r`K/!r_`Yjr_3;`r^m)YqaL9Ih*Tp_rBfI0pd>$LqaUQVr_*5ar_NMkr`&l!r`fA/raYq?rbVRS +rce?hre(3+rf6uDrg`t\riH+(rjMg@rl"fWrm1Snrn.5-ro3q=rp0RNrp]pYrq69brqcWkrr)`n\,V$Z +r;Zcqrr)iorqcWgrq??_rp]pSrp0RFro3q7rn.5!rm1Sbrkn`MrjMg2riH*lrgWnQrf6u7re(2trce?^ +rbVRIraYq7r`fA(r`&kor_NMer_!/]r^QcRpd$LqaUQVr_*5ar_NMkr`&l!r`fA/raYq? +rbVRSrce?hre(3+rf6uDrg`t\riH+(rjMg@rl"fWrm1Snrn.5-ro3q=rp0RN!:U$YnG`%Yp&=^bqYpBk +rVQSFs0D\(rr2lqr;QQlp\smco)\@M!:^!Trp0RFro3q7rn.5!rm1Sbrkn`MrjMg2riH*lrgWnQrf6u7 +re(2trce?^rbVRIraYq7r`fA(r`&kor_NMer_!/]r^QcRpd$LqaUQVr_*5ar_NMkr`&l! +r`fA/raYq?rbVRSrce?hre(3+rf6uDrg`t\riH+(rjMg@rl"fWrm1Snrn.5-ro3q=rp0RNrp]pYrq69b +rqcWkrr)`nJc>cNs0Vh*rr2lqr;QQlp\smcoD\7YmJcGNjo49=hu;:-e,I\maSs*V^](\@Z2Uj(T`1G[ +QMupDM>i/,I/\?hErKnSB`;N@?iF:/=T2;!;>sAj9`@Z`8cD3V7JK7/6N'7,5i"d%6iKOO7fH!Y9E%Wa +:]=8k<;p#!>Q/"/A,^-?D#SJSGQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gnf`'e-ir8'=li-;N +nG`%Yp&=^bqYpBkrVQTSs5lJ.1AH$nVUGlE0kK`6l.OT(UGSc5D`Xo>X*\Gj;C`W"$Zd/MSpg&Bn. +j8S3?li->OnG`(Zp&=^bqYpBkrVQT's+14Js8N#srVl`oqYp6gpAX^`nG_hSli-&Gj8Rs8g&BM#d/M2e +`W![P\Gif5Xo>*pT)P)UOT(.:K`6H"H2_maD>n5JAH$!9>lIn*<;oep:]=)f9)_EW7fGgQ6et*+60:H3 +6/=m,6i0:H7fH!Y9E%Zb:]=8k<;p&">lJ.1AH$nVUGlE0kK`6l.OT(UGSc5D`Xo>X*\Gj;C`W"$Z +d/MSpg&Bn.j8S3?li-;Pn,`%Jrq-3_rqHEgrql]nqu20HZN'q'rr)iorqcWgrq??`!V#RYnG_hSli-&G +j8Rs8g&BM#d/M2e`W![P\Gif5Xo>*pT)P)UOT(.:K`6H"H2_maD>n5JAH$!9>lIn*<;oep:]=)f9)_EW +7fGgQ6et*+60:H36/=m,6i0:H7fH!Y9E%Zb:]=8k<;p&">lJ.1AH$nVUGlE0kK`6l.OT(UGSc5D` +Xo>X*\Gj;C`W"$Zd/MSpg&Bn.j8S3?li->OnG`(Zp&=^bqYpBkrVQSFrrN0"[/^.)rr)iorqcWgrq??` +rp]pSrp0RGro="8rn7;#rm:Yerl+lPrj_s5riQ0prgs+UrfI,:re19"rd"Karb_XJrac"9r`oG*r`&kp +r_NMfr_!/]pdY6Nqa9=/rBgBIk!8o3h*V*.qaC3Kr^m)^r__9rb;@KrcA'`rdOj" +reg]:rg3VTrhKIprj)O5rkSNPrlY5ermh#$rnm_8roX4GrpKdTrq-3_rqHEgrql]nqu5XUi;`fUrr)io +rqcWgrq??`rp]pSrp0RGro="8rn@A&rmC_grl4rRrji$7ric_< +rbMLOrcJ-crdb!&rf$i_2r`];$r_remr_EGcr^luWr^QlTog@Y(r^#d6r^#@,qa:6KqaUQTr^m)^r_EGh +r_rerr`];,ra>__2r`];$r_remr_EGcr^luWr^QlTog@Y(r^#d6r^#@, +qa:6KqaUQTr^m)^r_EGhr_rerr`];,ra>_g`r5hh,@/ag_IRbPoogec+;%hu;[8k5O]Gmf)_To`"O_p\t$gqu6Qkro=%7s8Murr;QTmq#:!dp&=L\ +n,D_Rkl0]CiVqX3f`'A!c2Pf`_u@=J[JmB/VuEFiSGn`ONrFn7JGsrqGQ)R\D#S/J@fBa6>lIh(sPo=8lJ(?iFO6C&VrJE;k(\I/\Zq +M>iP7PQ%*OU&LthYPts/]`,hJaSsH`e,Ituh#?:3jo4KCmJcSRnc&4\p\ssequ6NmrNZBRs7u]orVl`o +qu6BipAXaanc&"VmJc>Kjo46t*e,IVkaSs*V]`,>i&)I/\?hE;j\QC&VT@ +?iF=0=8l5!;>sDk:&[fb8H)-Y7fGjU7.ipF6M3_F7/fXS7fGpW8H)9]:&[ug;>sPo=8lJ(?iFO6C&VrJ +E;k(\I/\ZqM>iP7PQ%*OU&LthYPts/]`,hJaSsH`e,Ituh#?:3jo4KCmJcPSnH&1Mrq69brqQKirquco +JcD_Lrr)iorql]irq??a!V,[[nc&"VmJc>Kjo46t*e,IVkaSs*V]`,>i&) +I/\?hE;j\QC&VT@?iF=0=8l5!;>sDk:&[fb8H)-Y7fGjU7.ipF6M3_F7/fXS7fGpW8H)9]:&[ug;>sPo +=8lJ(?iFO6C&VrJE;k(\I/\ZqM>iP7PQ%*OU&LthYPts/]`,hJaSsH`e,Ituh#?:3jo4KCmJcSRnc&4\ +p\ssequ6NmrIP"Es0;V'rVl`oqu6BipAXaanc&"VmJc>Kjo46t*e,IVkaSs*V]`,>i&)I/\?hE;j\QC&VT@?iF=0=8l5!;>sDk:&[fb8H)-Y7fGjU7.iq46G>eZ6iKLQ7K,dU8,c'Y +9E%Zb;#X>k<;otu>lJ+0@fC*@D#SDQGQ*!hJGtE)NrG7ASGo5]VuEn![Jmi<_u@aVc2Q2kfDaS)iVqs< +kl0uKn,DkVp&=^bq#:0ir;QZNs5!_SrVl`oqu6Bip\smco)A.Xmf)GLjo46Z(+eGdbmao96X^&GJ> +Yl:[%U]-h`Q2ZmEMuJA.If=WlEW0kTC]7iC@/aI2=T2>";uTVm:B!rd8H)-V7fGjU7/0-`6L$o46iKLQ +7JfRR8,c'Y9`@fd;#XDmm +g&Bh,iVqsmg&Bh,iVqsmg&Bh,iVqs!!MuJh;Q2[?RU].:mYl;-2^&GtLao9TbeGe/#h>ZC4jo4KCmf)_To)A@^p\ssequ6NmrS@M0s8Mur +r;QTmq>U0gpAXX^nG_kTkl0]Cir7g6gA]Y%d/M5f`W!XO\Gif5X8\spTDk2VP5^L@K`6K#HiA*cE;j\Q +Ac?0dOpZMqE6^])4Ob5Tceec+8$hYuO6k5OTDmf)_To)A@^p\t!f +qu6NmrNZBRs7u]orVl`oqu6Ejq#:!do)A.Xmf)GLjo49=hYu7.ec*qpbPoK[^](bBZMpp(V>d+dQi<0I +NrF_2J,XfoF8g.XD#S#F@fBa6=oMM%<;o_n:B!rd8cD9[8,c!W7K,^G6a/oM6iKLQ7K,dU8,c'Y8cDE_ +:B")h<;oqt=oMe-@fBsdOpZMqE6^])4Ob5Tceec+8$hYuO6k5OTD +mf)\UncA=Prq??crqZQjrqucoJcD_Lrr)iorql]jrqQKd!V5d]o)A.Xmf)GLjo49=hYu7.ec*qpbPoK[ +^](bBZMpp(V>d+dQi<0INrF_2J,XfoF8g.XD#S#F@fBa6=oMM%<;o_n:B!rd8cD9[8,c!W7K,^G6a/oM +6iKLQ7K,dU8,c'Y8cDE_:B")h<;oqt=oMe-@fBsdOpZMqE6^])4O +b5Tceec+8$hYuO6k5OTDmf)_To)A@^p\t!fqu6NmrIP"Es0;V'rVl`oqu6Ejq#:!do)A.Xmf)GLjo49= +hYu7.ec*qpbPoK[^](bBZMpp(V>d+dQi<0INrF_2J,XfoF8g.XD#S#F@fBa6=oMM%<;o_n:B!rd8cD9[ +8,c!W7K,^G6h!FY6M3_F7/fXS7fGpW8H)3[9`@fd;#XGnkl1#LnG`"XpAXgcq>U9jr;QZNs5!_PrVl`oqYp9hp\sd` +nc&"VlMfuGjSn*:h#>q)d/M8gaSs!S]Df5;Y5YC!U&LM[Pl?aCL]2r*If=NiErL"VB`;QA?iF=0=oMM% +;Z9Ml:B!oc9)_E]7f,XR7.N^c6M!P:6i0:N7JfRR8cD?]9E%]c;#XAl=8lA%>lJ+0AH$9ADuOhWG5csi +K)UQ)O8bCCRf9#[VuEju[Jmc:_#DFSbl5ugfDaP(i;Vg:kl0lHn,DkVoD\L`q>U6fr;QZ"s+14Gs82co +r;QQlq#:$eoD\:Zn,DVOkPjQAi;VO2fDa.rbl5]__#CtF[Jm?.W;`LiRf8QNO8aq6KDp?!G5cO]DuOGL +AH#s8>lIn*=8l+s;#X5h9E%Q_8cD3V7K,^G6b,PV6i0:N7JfRR8cD?]9E%]c;#XAl=8lA%>lJ+0AH$9A +DuOhWG5csiK)UQ)O8bCCRf9#[VuEju[Jmc:_#DFSbl5ugfDaP(i;Vg:kl0lHn,DhWo)\ISrqHEfrqcNi +rr%EJWW2korquclrqQKe!V>m_oD\:Zn,DVOkPjQAi;VO2fDa.rbl5]__#CtF[Jm?.W;`LiRf8QNO8aq6 +KDp?!G5cO]DuOGLAH#s8>lIn*=8l+s;#X5h9E%Q_8cD3V7K,^G6b,PV6i0:N7JfRR8cD?]9E%]c;#XAl +=8lA%>lJ+0AH$9ADuOhWG5csiK)UQ)O8bCCRf9#[VuEju[Jmc:_#DFSbl5ugfDaP(i;Vg:kl0lHn,DkV +oD\L`q>U6fr;QYGs7u]"s82cor;QQlq#:$eoD\:Zn,DVOkPjQAi;VO2fDa.rbl5]__#CtF[Jm?.W;`Li +Rf8QNO8aq6KDp?!G5cO]DuOGLAH#s8>lIn*=8l+s;#X5h9E%Q_8cD3V7K,^G6h/J,X`mFT-7YCAqiE@fB^5>Q.b(;uTYn:]=&e9E%Q\8,c!Q7/0-i6M!P= +6hj(H7fGpW9)_K_9`@ie;>sMn=T2M'?N+F5B)ZQEE;k"ZH2``WrB7%\,O&>_>_UV +c2Q,ig&Bh,i;VmU6ir;QZoriuKSs7u]orr2lqr;QQlq#:$eo`"F\n,DYPkl0`D +i;VO2g&BCucMkuc_>_.I\,NW2WrAgnSGnlSOoC7;L&QT$H2_pbE;jVOB)Z9=?N+1.=T27u;>sAj9`@]a +9)D-X7efCH6b,PY6hj(H7fGpW9)_K_9`@ie;>sMn=T2M'?N+F5B)ZQEE;k"ZH2`` +WrB7%\,O&>_>_UVc2Q,ig&Bh,i;Vm_.I\,NW2WrAgnSGnlSOoC7;L&QT$H2_pbE;jVOB)Z9= +?N+1.=T27u;>sAj9`@]a9)D-X7efCH6b,PY6hj(H7fGpW9)_K_9`@ie;>sMn=T2M'?N+F5B)ZQEE;k"Z +H2``WrB7%\,O&>_>_UVc2Q,ig&Bh,i;VmU6ir;QZordk+F +s0;V'rr2lqr;QQlq#:$eo`"F\n,DYPkl0`Di;VO2g&BCucMkuc_>_.I\,NW2WrAgnSGnlSOoC7;L&QT$ +H2_pbE;jVOB)Z9=?N+1.=T27u;>sAj9`@]a9)D-X7efCH6h5hk-@fC!=CAr2OFoH[cJ,Y-#MZ/b;QN!ERV#ICnYl;-2]`,bHb5TZbdJhhuh>Z@3k5OTDli-APo)A:\ +p\t!fqYpElrVlfPs5!_SrqlZnqYp9hp\sgao)A+Wm/H8KkPjH>hYu7.e,I\mbPoEY^](hDYl:^&VZ*4e +RJrELNW+_4Jc:#qG5cL\D>n5JAH$!9>lIn*l2L&Kn,DnWo`"Uaq>U6irVQT!s+14Gs8N#prVlZmq#:$eo`"F\n,D\Ql2KlFiVq^5gA]S# +ci2,e_u@FM])Jr5X8]!qTDk8XPQ$R@L]2l(HiA3fEW0hSB`;QA@/aF1=oMG#;uTSl:B!rd9)_B\8,c!T +7K,^G6c)1_6i0:N7K,dU8,c'Y9)_K_:B"&g;Z9\q=oM_+@/a^9B`;lJEW1.\HiATqL]3;4PQ%!LTDk_e +XT#I'])KGC_u@jYci2DmgA]q-iVr$>l2L&Kn,DkXoE"UVrqHEfrqcWmqu20HWW2tsqu-NjrqQKe!VH!a +o`"F\n,D\Ql2KlFiVq^5gA]S#ci2,e_u@FM])Jr5X8]!qTDk8XPQ$R@L]2l(HiA3fEW0hSB`;QA@/aF1 +=oMG#;uTSl:B!rd9)_B\8,c!T7K,^G6c)1_6i0:N7K,dU8,c'Y9)_K_:B"&g;Z9\q=oM_+@/a^9B`;lJ +EW1.\HiATqL]3;4PQ%!LTDk_eXT#I'])KGC_u@jYci2DmgA]q-iVr$>l2L&Kn,DnWo`"Uaq>U6irVQSF +s7u]"s8N#prVlZmq#:$eo`"F\n,D\Ql2KlFiVq^5gA]S#ci2,e_u@FM])Jr5X8]!qTDk8XPQ$R@L]2l( +HiA3fEW0hSB`;QA@/aF1=oMG#;uTSl:B!rd9)_B\8,c!T7K,^G6hs'k6M3_C7/fXS7fGpW8H)6\9E%]c +:]=8knPSG5cjfJc:H(NW,.@RJriXVZ*[rYl;65^Ac%LbPoiee,J)#h>ZC4kPj`F +m/HJQo)A:\p\t!fqYpHjrn[V1s8N#prVlZmq>U0gp&=R^nG_kTli-,Ij8S!9h#>n(df.Pka8X!U^AbP> +Yl:^&T`1J\R/W3HMuJJ1J,XcnFoH@ZD#S,I@K'X5?2dt* +_Z%UTcMl8kf)FJ(hu;[8kl0lHmf)_ToD\F^q#:*gqYpHjriuKSs7u]orqlZnqYp?iF@1=T2>";Z9Ml +:B!rd9)_E]8H)*U7K,^G6d%gh6i0:N7JfRR8H)3[9)_N`:&[ug;Z9_r=T2V*?iFL5B`;fHE;k"ZHN&En +LAm,1OT(XHSc5;]X8]@&[Jmo>_Z%UTcMl8kf)FJ(hu;[8kl0lHmf)_To)SFap%A=ZrqZQirr)`nJcD_L +rr2fnrqcWirqHNeo`4[aoD\7Ymf)POkl0WAi;VO2f)F+scMkl`_u@CL[JmE0X8\dkSGnoTOT(1;LAl]% +HN&'dE;j\QB`;H>?iF@1=T2>";Z9Ml:B!rd9)_E]8H)*U7K,^G6d%gh6i0:N7JfRR8H)3[9)_N`:&[ug +;Z9_r=T2V*?iFL5B`;fHE;k"ZHN&EnLAm,1OT(XHSc5;]X8]@&[Jmo>_Z%UTcMl8kf)FJ(hu;[8kl0lH +mf)_ToD\F^q#:*gqYpHjrdk+Fs0;V'rqlZnqYp?iF@1=T2>";Z9Ml:B!rd9)_E]8H)*U7K,^G6i99t +6M3_C7/fXP7fGsX8cD?]9`@cc;#XAlC]8;PFoH^dJ,Y3%MuJh;R/WZUT`2"kYl;'0 +^Ac"Ka8XB`df.hsh#?41j8S9AlMg5NnG`%Yp&=acq>U6irVQTMs5!_SrqlZnqYpZP5^I?M>i&)I/\BiEW0kTCAqcC@K'X5=oMM%sSp=8lA%?iFO6AH$?CD>nPS +GlE*iJGtE)NrG4@S,T)[V#IOrZMqB5^])1Nb5T`de,Ituh>ZC4jSnECm/HJQnc&1[pAXjdq>U6irVQT! +s+14Gs8N#prVlZmq>U0gpAX^`nc&"Vli-/JjSn*:h>Z%*eGdenb5TBZ^](bBZi7-,V#I"cS,STMNW+e6 +JGsrqGlD^^DZ4DMAH$$:?iF4-=8l5!;>sAj:&[fb9)_BY8,c!T7K,^M6d%gk6i0:N7JfRR8,c'Y8cDB^ +:&[rf;>sSp=8lA%?iFO6AH$?CD>nPSGlE*iJGtE)NrG4@S,T)[V#IOrZMqB5^])1Nb5T`de,Ituh>ZC4 +jSnECm/HJQnc&.\p&Xm\rqQKgrqcWmqu20HWW2tsqu-NjrqZQg!VZ3epAX^`nc&"Vli-/JjSn*:h>Z%* +eGdenb5TBZ^](bBZi7-,V#I"cS,STMNW+e6JGsrqGlD^^DZ4DMAH$$:?iF4-=8l5!;>sAj:&[fb9)_BY +8,c!T7K,^M6d%gk6i0:N7JfRR8,c'Y8cDB^:&[rf;>sSp=8lA%?iFO6AH$?CD>nPSGlE*iJGtE)NrG4@ +S,T)[V#IOrZMqB5^])1Nb5T`de,Ituh>ZC4jSnECm/HJQnc&1[pAXjdq>U6irVQSFs7u]"s8N#prVlZm +q>U0gpAX^`nc&"Vli-/JjSn*:h>Z%*eGdenb5TBZ^](bBZi7-,V#I"cS,STMNW+e6JGsrqGlD^^DZ4DM +AH$$:?iF4-=8l5!;>sAj:&[fb9)_BY8,c!T7K,^M6i99t6MNqF7/fXP7fGpW8H)3[9E%Zb:]=5jiP7P5^sMT`1bdY5Ya+\Gj8B`;[pYci2DmfDaV*iVqp;l2L&Kn,DkV +o`"R`q#:*gqYpHjrn[V1s8N#prVl]nqYphu;@/f)F(rbPoN\_>_%F[JmB/ +VuEFiT)OuROT(4@/aF1=oMJ$;Z9Pm:]=)f9)_E]8H)-V7fGjU7.3M!6N':C +6iKLQ7JfRR8,c'Y8cDB^:&[rf;>sJmlJ.1AH$3?DZ4VSF8gRdJ,Y*"N;eqU6iqu6QkriuKSs7u]orqlZnqu6Hkq>U*eo`"F\ +nG_hSlMfoEj8Rs8gA]\&dJh>g`rlIn* +sAj:&[ca8cD9[8,GdT7K,^D6et)t6iKLQ7JfRR8,c'Y8cDB^:&[rf;>sJmlJ.1AH$3? +DZ4VSF8gRdJ,Y*"N;eqg`rlIn*sAj:&[ca8cD9[8,GdT7K,^D6et)t6iKLQ +7JfRR8,c'Y8cDB^:&[rf;>sJmlJ.1AH$3?DZ4VSF8gRdJ,Y*"N;eqU6iqu6Qkrdk+Fs0;V'rqlZnqu6Hkq>U*eo`"F\nG_hS +lMfoEj8Rs8gA]\&dJh>g`rlIn*sAj:&[ca8cD9[8,GdT7K,^H6iBC.6LR;@7/fXP7fGpW8H)3[9E%Zb:]=5j;Z9_r=T2S)@/a^9B)Z]I +E;jqXI/\WpKDpi/OT(LDT)PJ`VuEn![/RZ9_>_IRbPoogec+;%hu;X7jo4QEm/HMRo)A=]pAXmeqYpBk +rVQTMs4[MPrr2lqr;QTmqYp6gpAX^`nG_kTm/H2IjSn*:h>Z(+eGdenao96X^Ab\BZi7'*VZ*7fRf8QN +O8at7KDpB"GlDgaDuOPOBDuE?@/aI2>5hS%;u9Dj:B!rd9)D3W8,c!T7K,^%6i9=K7/fXP7fGpW8c)-Z +9`@c`;#XGnlJ.1A,^-?C]88OFT-OaJ,Y-#M#NJ7Pl@-NT`1hfXT#R*\Gj5A`;[pYci2Gng&Bh, +i;Vg:kPjiImf)_To`"O_p\t$gqu6NmrVlf!s+14Ds8N#srVl`oqu6Hkp\smco`"@Zmf)SPkPjQAi;VR3 +f`'D"ci2&c`;[LM\c/r7XT#*rT`1DZPl?aCM#N&+J,X]lFT-4XC]7uGA,]m8?2e%,lJ.1A,^-?C]88OFT-OaJ,Y-#M#NJ7Pl@-N +T`1hfXT#R*\Gj5A`;[pYci2Gng&Bh,i;Vg:kPjiImf)_To`"L`pAt$_rqcWkrqucorr.KKU]:>mrr)io +rql]k!VclJ.1A,^-?C]88OFT-OaJ,Y-#M#NJ7Pl@-NT`1hfXT#R*\Gj5A`;[pYci2Gng&Bh,i;Vg:kPjiImf)_T +o`"O_p\t$gqu6NmrVleIs7ZJqs8N#srVl`oqu6Hkp\smco`"@Zmf)SPkPjQAi;VR3f`'D"ci2&c`;[LM +\c/r7XT#*rT`1DZPl?aCM#N&+J,X]lFT-4XC]7uGA,]m8?2e%,5he+@/a[8BDu]GDuOkXGlE3lK`6f,O8bCCRf8uZVZ*[rZi7K6 +^Ac(Mb5T`deGe/#h>Z@3jSn?Am/HGPnG`(Zp&=^bqYpBkr;QZorn@D(s8N#sr;QTmqYp9hpAX^`o)A+W +mJc>Kjo49=hYu7.f)F%qbl5]__#CtF[JmB/WW&[lSc4uTP5^C=LAlc'I/\BiF8g(VCAqlF@fBa6>lIk) +sAj:&@T_9)_BY8,c!T7INY56hEeE7/fXP7fGpT8Gc$Y9E%Zb:]=5j<;oqt=T2S)?iFO6BDuZF +DZ4_VGQ*!hJc:E'MuJn=R/WZUU].7lYPts/]DfVFaSsB^d/MVqgA]t.ir8*>kl0uKnG`"Xo`"R`q#:-h +qu6NjriZ9Ps7?9irr2ipqu6Hkq#:!do`"F\n,D_Rkl0]Cir7g6gA]\&d/M8gaSs!S]Df5;YPtO#U]-h` +Qi<0IMuJJ1Jc:&rGlDd`DZ4DMBDuB>?iF=0=T2A#<;obo:]=)c9E%Q_8GbpV7f,XC7.3M37/fXP7fGpT +8Gc$Y9E%Zb:]=5j<;oqt=T2S)?iFO6BDuZFDZ4_VGQ*!hJc:E'MuJn=R/WZUU].7lYPts/]DfVFaSsB^ +d/MVqgA]t.ir8*>kl0uKnG`"Xo`"Oap]:0brqcWkrquZmJcDDCrr2oprql]k!VlEiq#:!do`"F\n,D_R +kl0]Cir7g6gA]\&d/M8gaSs!S]Df5;YPtO#U]-h`Qi<0IMuJJ1Jc:&rGlDd`DZ4DMBDuB>?iF=0=T2A# +<;obo:]=)c9E%Q_8GbpV7f,XC7.3M37/fXP7fGpT8Gc$Y9E%Zb:]=5j<;oqt=T2S)?iFO6BDuZFDZ4_V +GQ*!hJc:E'MuJn=R/WZUU].7lYPts/]DfVFaSsB^d/MVqgA]t.ir8*>kl0uKnG`"Xo`"R`q#:-hqu6Nj +rdk+Cs/Z2!rr2ipqu6Hkq#:!do`"F\n,D_Rkl0]Cir7g6gA]\&d/M8gaSs!S]Df5;YPtO#U]-h`Qi<0I +MuJJ1Jc:&rGlDd`DZ4DMBDuB>?iF=0=T2A#<;obo:]=)c9E%Q_8GbpV7f,XP7.`n96gmGB7JfRR8,GjS +9)_K_:&[rf;>sPolJ+0@fC$>CAr,MF8gC_I/\]rLAm,1P5^jJSc5D`WW'+#[Jmf;_#DFSbPolf +f)FD&hYuO6k5OTDmJcVSo)A:\pAXjdqYpBkr;6KIs4@;Mrr2lqr;QQlq#:!dp&=O]nG_nUl2KlFjSn*: +h#>t*dJhGjb5T9W^&GSAYl:^&VuE@gS,S]PO8b"8K`6N$HiA3fE;j_RCAqcC@K'X5>5hY'X/g +9`@]^8cD9X8,c!Q7JK:>6hj(J7JoUO7fGpT8H)3[9E%Z_:]=5j;Z9_r=T2M'?iFO6AH$?CD>nMRG5cge +JGt6$MZ/\9Q2[9PT`1kgXT#I'\c0>B_Z%^Wc2Q,if`'\*i;Vg:k5OWEn,DkVo)A=]p\sseqYpBkrVQSs +s+14As8N#srVl`oqYp9hpAXaao)A.Xn,DSNkPjQAi;VO2f`':tcMkuc_Z%7J\c/i4X8]$rT`1G[Q2ZjD +M>i2-JGsopG5cI[D>n;LAH$$:?iF7.=T2A#;Z9Pj:]=&e9D_<[8GbpV7efFI7.3M<7/04J7fGpT8H)3[ +9E%Z_:]=5j;Z9_r=T2M'?iFO6AH$?CD>nMRG5cgeJGt6$MZ/\9Q2[9PT`1kgXT#I'\c0>B_Z%^Wc2Q,i +f`'\*i;Vg:k5OWEn,DkVo)A=]pAjshq"Xjbrql]nqu20HT`>#jrr)iorqZZjp]1*gpAXaao)A.Xn,DSN +kPjQAi;VO2f`':tcMkuc_Z%7J\c/i4X8]$rT`1G[Q2ZjDM>i2-JGsopG5cI[D>n;LAH$$:?iF7.=T2A# +;Z9Pj:]=&e9D_<[8GbpV7efFI7.3M<7/04J7fGpT8H)3[9E%Z_:]=5j;Z9_r=T2M'?iFO6AH$?CD>nMR +G5cgeJGt6$MZ/\9Q2[9PT`1kgXT#I'\c0>B_Z%^Wc2Q,if`'\*i;Vg:k5OWEn,DkVo)A=]p\sseqYpBk +rVQSFs7ZJns8N#srVl`oqYp9hpAXaao)A.Xn,DSNkPjQAi;VO2f`':tcMkuc_Z%7J\c/i4X8]$rT`1G[ +Q2ZjDM>i2-JGsopG5cI[D>n;LAH$$:?iF7.=T2A#;Z9Pj:]=&e9D_<[8GbpV7f5^R7JK:>6hj(E7JfRR +8,GjV8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[HN&HoK`6l.O8bFDS,T)[VuEdsYl;34^Ac"K +b5TZbdJheth#?72jSn<@l2L/Nnc&+Yp&=^bq#:-hqu6Qkrn@D(s8N#srVl`oqu6Ejq#:$eo`"C[n,DYP +l2KlFiVqa6h#>k'df.Pk`rlIq+ +sDk:]=,g9`%KX8c)$/7KGtJr^Z`Tr_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]p +re(3.rf@&Arg`t[rhKIpriuI1rk8rosFJrpTjWrq-3arqQKgrql]mrr)`n +Y5a(QoDeghrr)iorql]jrqQKerq-3[rpTjProsFFro*k6rnRM'rmLekrl4rRrk8<=riuI)rhKIcrg`tN +rf6u9re(3#rd=]frc8!Vrb;@DraPk6r`oG+r`9"tr_`Ykr_NMgr_32^pdt?Qe40F-pdtHXqb6l^r_WSk +r`&ktr`];+ra5Y6rau.DrbqdVrcS3frdXp"repc:rf[8Nrh'1briQ1)rjDa=rkeZSrm(Mjrmh#'rndY5 +roa:Frp0RPrpp'\rqHEe!;QZkq>U9jr;QZlrdk*Bs8N#srVl`oqZ6Ng!;ZWhrqHEarpg!Vrp0RJroa:> +rnm_1rmh"rrm(M_rk\TIrjDa1riQ0prh07\rf[8@repc.rdauqrcS3\rbqdMrau.=ra5Y0r`];%r`&ko +r_WSir_EGdqb-]Uqa].*r^Z`Tr_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&A +rg`t[rhKIpriuI1rk8rosFJrpTjWrq-3arqQKgrql]mrr)`nJcGHDX8i1u +rr)iorql]jrqQKerq-3[rpTjProsFFro*k6rnRM'rmLekrl4rRrk8<=riuI)rhKIcrg`tNrf6u9re(3# +rd=]frc8!Vrb;@DraPk6r`oG+r`9"tr_`Ykr_NMgr_32^pdtBR!(YO.r^Z`Tr_*,^qbI,er_`Yor`9#% +r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&Arg`t[rhKIpriuI1rk8rosFJ +rpTjWrq-3arqQKgrql]mrr)`ngAfe)rr2fnrquclrqQKerq-3\rpTjSrp0RIro="9rn[S*rm^qnrlP/X +rkJHCrj;[.ri#gkrgs+Trf[8@reLK*rdXolrcS3[rb_XKrau.$>lJ(/@K'mlIk)=8l8";Z9Pj:]!l]9E%N^8CpB28H)3U9E%Zb:A[id;>sJmnPSFoHXbJ,Y*"L]3>5P5^dHT)PJ`W;a""[/RW8^])1Nao9Wce,Ituh>Z@3j8S9AlMg5Nn,DnWo`"Ua +q#L6lqYL*err)`nJcDDCrr2fnrqlfnq>gBkq#:$eo`"F\n,DbSli-,Ij8S!9h>Z%*eGdenao96X^](eC +[/R9.W;`RkT)P&TP5^L@L]2r*J,X]lFoHC[D>n8KB)Z6X/d:&%B\8cD948,c'Y +8bbsX:&[ob:]=5j;Z9_r=8l>$>lJ(/@K'mlIk)=8l8";Z9Pj:]!l]9E%K`84W_Of15g2r^llXr_#Srk&0#Srk&0W;lbnrquclrqQKerq69^qsaUOrosFCro3q7rn@A&rmC_hrl>#Srk&0< +riuI(rhf[frgNhOrfI,5hh,?iFO6AH$U6fr;QZEs4%)JrqlZnqu6Hkq>U-fp&=O] +nG_hSli-)HjSn*:h>Z+,ec*qpbl5Z^_#D"G\,NW2X8]!qT`1G[QN!!FN;eY4JGsurHiA-dEW0nUCAqiE +A,]m8?N+70=oMP&=8l1u;Ys;f:]=,d:%_3T9CbdU9`Rrd:A[ia;#XDm<;otu=T2J&?2e41@/a[8BDuZF +DuOeVFT-XdIf=lsM#N>3OT(RFS,T)[VZ*XqYl;-2]DfVFa8X9]d/MSpg&Bh,i;Vg:kPjfHmJcVSo)A=] +p\t!fqYpBkrVQSms+14>s8N#prVl]nqYp +Yl:^&VZ*7fS,S`QOT(4@/aL3?2e"+=T2D$<;oem;#=&f:A[cY9__9O +9`@c`:A[ia;#XDm<;otu=T2J&?2e41@/a[8BDuZFDuOeVFT-XdIf=lsM#N>3OT(RFS,T)[VZ*XqYl;-2 +]DfVFa8X9]d/MSpg&Bh,i;Vg:kPjfHmJcVSo)A=]p\t!fq>gBnqtpBkqu20HQiI'aqu$QmqZ-NmqYpYl:^&VZ*7fS,S`QOT(4@/aL3?2e"+=T2D$<;oem;#=&f:A[cY9__9O9`@c`:A[ia;#XDm<;otu=T2J&?2e41@/a[8 +BDuZFDuOeVFT-XdIf=lsM#N>3OT(RFS,T)[VZ*XqYl;-2]DfVFa8X9]d/MSpg&Bh,i;Vg:kPjfHmJcVS +o)A=]p\t!fqYpBkrVQSFs7$&es8N#prVl]nqYpYl:^&VZ*7fS,S`QOT(4@/aL3?2e"+=T2D$<;oem;#=&f:'"'` +rCurYpe10Or_<8bqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07f +ri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQirql]nqu5+FeGoOIqu-Nlrql]k +rqHEcrq-3ZrpKdQrosFEro3q6rn@A'rmC_jrlY5WrkABCrj2U-ri5smrh'1Zrfd>Brepc0rdt,urcnEb +rc.pTrbDFFrac";ra5Y1r`];(r`9"ur`&kpqbd>hqbR2dk"Y_Jr_EMjr)!AiqbmDmr`/qur`T5)ra#M1 +raPk;rb)4Frbh^TrcS3brdOitre:?0rf@&BrgWnZrhKImriZ7,rjr*CrkeZWrltGirn%/'rndY6roX4E +rpB^Rrp]pZrq69brqcWkrqucoqu3PoJcG6>rr2fnrqucmrqcWgrq??`rp]pTrpB^LroX4>rndY.rn%.s +rm(McrkeZKrjr*8ric=$rhKIbrgWnNrf@&:re:?'rdOikrcS3[rbh^Mrb)4@raPk6ra#M,r`T5$r`/qs +r_iVjr_WJfr_DTMqbI,dqb[8hqbmDmr`/qur`T5)ra#M1raPk;rb)4Frbh^TrcS3brdOitre:?0rf@&B +rgWnZrhKImriZ7,rjr*CrkeZWrltGirn%/'rndY6roX4ErpB^Rrp]pZrq69brqcWk!;llqr;QZlrdk*9 +s8N#pr;lio!;uinrqcWgrq??`rp]pTrpB^LroX4>rndY.rn%.srm(McrkeZKrjr*8ric=$rhKIbrgWnN +rf@&:re:?'rdOikrcS3[rbh^Mrb)4@raPk6ra#M,r`T5$r`/qsr_iVjr_WJfr_DTMqbI,dqb[8hqbmDm +r`/qur`T5)ra#M1raPk;rb)4Frbh^TrcS3brdOitre:?0rf@&BrgWnZrhKImriZ7,rjr*CrkeZWrltGi +rn%/'rndY6roX4ErpB^Rrp]pZrq69brqcWkrqucoqu20HnGfHerr2fnrqucmrqcWgrq??`rp]pTrpB^L +roX4>rndY.rn%.srm(McrkeZKrjr*8ric=$rhKIbrgWnNrf@&:re:?'rdOikrcS3[rbh^Mrb)4@raPk6 +ra#M,r`T5$r`/qsr_iVjr_NVk:]4)g:?G:J:B"&d;#X>h;Z9YpI;#X;l +;Z'Gl;uTbqlJ%.@/aU6AH$6@D#S>OE;k"ZH2`6kJGt9%M>iS8PQ$mITDkVbVZ*atZMq<3 +^AbtJ`W"-]d/MMng&Bh,i;Vj;kl0lHn,DhUnc&4\pAXgcqYpBkr;QZlri#jJs7$'frqlZnr;QTmqYp6g +pAXaanc&%Wn,DVOkPjTBi;VO2g&BJ"d/M;h`W!aR^AbS?ZMq$+VZ*=hTDk/UPQ$XBM>i2-JGsurGlDjb +E;jbSD#S)HAc?-;@/aL3>lIn*=T2D$X8j;uTbqlJ%.@/aU6AH$6@ +D#S>OE;k"ZH2`6kJGt9%M>iS8PQ$mITDkVbVZ*atZMq<3^AbtJ`W"-]d/MMng&Bh,i;Vj;kl0lHn,DhU +nc&4\pAXgcqYp?lquQ`nrr)`nJcD):rr2fn!W;iqr;QTmqYp6gpAXaanc&%Wn,DVOkPjTBi;VO2g&BJ" +d/M;h`W!aR^AbS?ZMq$+VZ*=hTDk/UPQ$XBM>i2-JGsurGlDjbE;jbSD#S)HAc?-;@/aL3>lIn*=T2D$ +X8j;uTbqlJ%.@/aU6AH$6@D#S>OE;k"ZH2`6kJGt9%M>iS8PQ$mI +TDkVbVZ*atZMq<3^AbtJ`W"-]d/MMng&Bh,i;Vj;kl0lHn,DhUnc&4\pAXgcqYpBkr;QZlrdk+=s/>ts +rqlZnr;QTmqYp6gpAXaanc&%Wn,DVOkPjTBi;VO2g&BJ"d/M;h`W!aR^AbS?ZMq$+VZ*=hTDk/UPQ$XB +M>i2-JGsurGlDjbE;jbSD#S)HAc?-;@/aL3>lIn*=T2D$#Srk85he+?2J".@K'd9B`;cGDZ4SRF8g@^I/\To +Jc:K)MuJh;Pl@*MT)PJ`W;`t!ZMqB5^&GkI`r=3]ci2Gnf`'b,i;Va8kl0lHm/HJQo)A:\p\sseq>U9j +r;6Hlrh]XGs6]jcrqlZnr;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+ +W;`OjT)P/WPl?dDN;eY4Jc:/uI/\5h\(=T2D$5he+?2J".@K'd9B`;cGDZ4SRF8g@^I/\ToJc:K)MuJh;Pl@*MT)PJ`W;`t!ZMqB5^&GkI +`r=3]ci2Gnf`'b,i;Va8kl0lHm/HJQo)A:\p\sseq>U9jquH]nrVleIs,m?\rqu]prVl`oqu6Ejq#:$e +o`"C[n,D\QlMg#Hir7m8hYu1,eGdenbl5Z^_>_.I\,N]4Y5YC!UAgb`RJrHMOT(4lIq+=oMP&=8l7t$=oMV(>lJ%+?iFL5A,^0@CAr,M +DuOhWG5cmgIf=otM#N>3OT(LDRJrfWUAh+jY5Ya+\Gj2@_>_IRbl5rfeGe,"hYuI4ir80@lMg/Ln,DnW +o`"Uaq#:*gqu6NjrVleIs6]i_s8N#prVl`oqu6Ejq#:$eo`"C[n,D\QlMg#Hir7m8hYu1,eGdenbl5Z^ +_>_.I\,N]4Y5YC!UAgb`RJrHMOT(4lIq+=oMP&lIt,>5h\%=T2Cd5hb*>lJ%.?iFI4@K'j;B)ZHBC]85NE;k"ZGlE$gJ,Y*"LAm/2 +O8b@BRJrcVU&M"iXT#I'\,O#=_#D=Pb5T`de,Itug]$+0ir8'=l2L#Jmf)_ToD\C]q#:*gqYU0jr;llq +qu20HNrT+X!WDuqrVl`oqYplIt,>5h\%=T2Cd5hb*>lJ%.?iFI4@K'j;B)ZHBC]85NE;k"ZGlE$gJ,Y*"LAm/2O8b@BRJrcVU&M"iXT#I'\,O#=_#D=P +b5T`de,Itug]$+0ir8'=l2L#Jmf)_ToD\C]q#:*gqYU3irVQSFs6]i\s8N#prVl`oqYplIt,=ohc/!*T2$r`A>br`Au!r`T5(r`fA,ra#M1ra>_6ral(@rb)4Grbh^S +rcS3brd+Qnre(3)rf$i;rfd>Lrgj%^ri#gtrilC2rk&0Frl+lZrm1Smrn%/(rnm_7roO.Drp0ROrp]pY +rq-3brqZQiqu$Hlqu5"CcN!nCqu-NlrqcWirqQKcrq-3\rp]pSrp0RGroF(;rndY.rmq(qrlkA_rkeZK +rk&09rilC(rhTOergs+Trfd>Brf$i3rdt-"rd=]jrcA'ZrbqdQrbDFGral(>raPk7qd95+r`oG,r`\Ph +r`];*rEKA.>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!. +]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3irVQSjs+148s8N#prVl`oqYp@fBd4?i+..>lIt,>3T2h>5hb'>lJ%.?i+71@fBm:Ac?BBCAr)LDuObU +F8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"X +oD\F^q#:*gqYU0jr;llqqu20HNrT+X!WDuqrVl`oqYp@fBd4?i+.. +>lIt,>3T2h>5hb'>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILq +Yl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3irVQSFs6]i\s8N#prVl`o +qYp@fBd4?i410?2e+.>Q.gj=oMV(>Ph\)?2e4.@/aX7A,^'=B`;cG +D>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R(Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]G +mf)_To)A7[p&=acq>U6fr;QZlrmCbhs7lQlqu6Hkq>U-fpAX^`nG_nUmf)MNkPjQAi;VR3gA]V$dJhGj +aSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQOT(7=MuJD/Jc:/uHiA9hFoHC[E;jeTD#S2KC&VcEAc?3=@fBg8 +?iFI+?hdt&?iFI4?N=L8@:B.EraYq=rb)4ErbMLLrbqdTrc.p[rcnEhrdXp!re19/rf6u>rg3VRrh'1a +ri#guriuI2rk&0Erl"fWrm(Mjrm^r$rnRM2roF(Brp'LNrpTjUrq-3_rqHEfrqcWkq#-ibJcFp5q#13h +rqcWirqHEcrq-3ZrpTjSrp'LGroF(:rn[S-rm^qprm(Marl"fNrk&0D+pg3`&ra>_4raGe8raYq=rb)4ErbMLL +rbqdTrc.p[rcnEhrdXp!re19/rf6u>rg3VRrh'1ari#guriuI2rk&0Erl"fWrm(Mjrm^r$rnRM2roF(B +rp'LNrpTjUrq-3_rqHEfrqcWkqY^HnrIP!&rrN)sqYgEjrqcWirqHEcrq-3ZrpTjSrp'LGroF(:rn[S- +rm^qprm(Marl"fNrk&0D+pg3`&ra>_4raGe8raYq=rb)4ErbMLLrbqdTrc.p[rcnEhrdXp!re19/rf6u>rg3VR +rh'1ari#guriuI2rk&0Erl"fWrm(Mjrm^r$rnRM2roF(Brp'LNrpTjUrq-3_rqHEfrqcWkq#,dDkPq1S +q#13hrqcWirqHEcrq-3ZrpTjSrp'LGroF(:rn[S-rm^qprm(Marl"fNrk&0Qii;0KDpE#IK"QlG5cU_ErL%WDZ4MP +CAqoDBDuNBAb]d7@eaC/@eaI4AH6nGPE;jnWFoHR`HN&bs8N#prVl`oqu6Hkq#:$epAX^`o)A+W +mf)POkl0ZBir7j7gA]\&df.VmbPoQ]_#D%H]Df/9Z2Up*VZ*@iTDk>ZQN!'HO8b(:M>i/,Jc:/uHiAnANC]8)JC&;QBB('=.B)ZHBB`MlKC23``rbVRNqeuIRrcA'^rcnEhrdXoure(3,rf$i; +rf[8IrgWnZrhKIiriZ7)rj2U9rkABJrl>#]rm:Ymrmq)&rnm_7roF(Brp'LNrpTjWrq-3`rqHEerqcWk +rqucoqu35fJcFp5rr2fnrqucmrqcWhrqHEcrq-3\rpTjSrp0RIroF(#Rrk8#]rm:Ym +rmq)&rnm_7roF(Brp'LNrpTjWrq-3`rqHEerqcWkrqucorVcisrdk*'rrN,u!<2lorqucmrqcWhrqHEc +rq-3\rpTjSrp0RIroF(#Rrk8#]rm:Ymrmq)&rnm_7roF(Brp'LNrpTjWrq-3`rqHEe +rqcWkrqucoqu20HkPq1Srr2fnrqucmrqcWhrqHEcrq-3\rpTjSrp0RIroF(#R +rk8bs8N#mrVl`oqu6Hkq#:$e +p&=U_nc&%WmJcGNkl0]CiVqa6g]#n*df.VmcMkl``;[ON]Df83O8b=A +Q2[ia8X$V^](kE +[f3T3Y5YI#VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qSDuOY:D>S5MDu4MQEW1%Y +FT-OaH2`0iIf=irJc:E'M#N>3O8b=AQ2[ia8X$V^](kE[f3T3Y5YI#VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]n +HN&0gFT-=[EW0qSDuOY:D>S5MDu4MQEW1%YFT-OaH2`0iIf=irJc:E'M#N>3O8b=AQ2[j +rqQHkr;QTmqYp9hp\sjbo`"C[nG_hSli-,Ijo46ia8X$V^](kE[f3T3Y5YI#VZ*7f +T)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0nXDf>Smrbgk8qelCOqf)OSrcA'\rcnEfrd4Wn +rdXoureCE.repc:rf[8Grg`tZrh07fri,n"rj)O4rk&0Erkn`Urm(MirmLf!rnRM1ro*k^])1NaSsE_ +ci2Dmf)FJ(hYuI4jo4HBl2L)Ln,DkVoD\F^pAXjdq>U6fr;QZirh'4As6'FWrqlZnr;QQlq>U0gpAX^` +oD\:Zn,D_Rl2KlFjo43;hYu=0f)F.tci2/faSs-W^](kE\Gif5YPtX&VZ*@iTDk>ZQi<6KOT(7=MuJJ1 +K`6T&JGt#sI/\HkGlDmcFoHL^F5:j8F8g:\FoHR`GlE$gI/\ToJGt0"K`6`*MuJb9OT(LDQi^])1NaSsE_ci2Dmf)FJ(hYuI4jo4HBl2L)Ln,DkVoD\F^pAXjdq>U6fr;QZkrW3#t +JcCH(!WN)prqlZnr;QQlq>U0gpAX^`oD\:Zn,D_Rl2KlFjo43;hYu=0f)F.tci2/faSs-W^](kE\Gif5 +YPtX&VZ*@iTDk>ZQi<6KOT(7=MuJJ1K`6T&JGt#sI/\HkGlDmcFoHL^F5:j8F8g:\FoHR`GlE$gI/\To +JGt0"K`6`*MuJb9OT(LDQi^])1NaSsE_ci2Dmf)FJ(hYuI4jo4HBl2L)L +n,DkVoD\F^pAXjdq>U6fr;QZirdk+4s.B>drqlZnr;QQlq>U0gpAX^`oD\:Zn,D_Rl2KlFjo43;hYu=0 +f)F.tci2/faSs-W^](kE\Gif5YPtX&VZ*@iTDk>ZQi<6KOT(7=MuJJ1K`6T&JGt#sI/\HkGlDmcFTHT+ +!-J3]h/WF8rcJ-^rc\9crd+QkrdOisrdt-&reCE1rf6u>rfmDKrgWnZrhKIiriH+&rj)O5rk&0Erl"fW +rlkAfrmUktrnRM0ro!e;roa:FrpB^Rrpg!Zrq69arqQKgrqcNirr)WkbQ#Q]rr2fnrqucmrqcWirqHEc +rq-3\rp]pUrp0RJroa:?ro!e5rn7;%rmLemrlkA_rkeZLrk8<>rj2U-riH*trhTOdrgj%WrfmDFrf@&< +reg]2re19&rdXotrdOiord+Qhrcn3\mr\>IrceEg!I8tiHN&s5F"WrqlZnr;QTmqYpZi70-XT#0tV#I%dSc5)WPl?jFO8b.U-fpAX^`o)A.Xn,DYP +l2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4YPtX&W;`UlT`1M]Rf8QNP5^OANW+h7M#N),K)U9! +JGt#sI/\HkH2`'`FmjGIFoHXbH2`-hI/\QnJGt&tK)UH&M#N;2NW,"_#D4MaSsB^d/MJmf)FA%hu;U6ir8-?l2L#Jn,DkVo)A:\p&=^bq>U6iqtpU-fpAX^`o)A.Xn,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG[f3W4YPtX&W;`Ul +T`1M]Rf8QNP5^OANW+h7M#N),K)U9!JGt#sI/\EmH$KC8rcn3\mr\>IrcnEfrd+QkrdFcrrdXp!re19, +reg]7rf@&ArfmDNrgj%]rhTOkriH+&rj2U4rk8riuI+riQ0srhKIcrgs+Yrg<\KrfR2@rf-o8re^W/ +re19'rdalqpjW*gpjE'hpjW3lqgeZure:?+re^W4rf-orf$i6reUQ.re:?)on*0oqgeZson*0rre:?+reUQ2rf$i:rfI,BrfmDJrg<\Urh07brhf[o +riQ1(rj;[5rk&0Drk\TSrlY5brm:Yormq)(rndY4roF(@rosFLrpKdTrpp'\rq69crqZHfrql]mrr)`n +qYu-HJcGTHrr2fnrqucmqtg#SrkABD +rjMg4rilC(ri,morhBCargj%Urg*PJrf[8Brf6u:reg]2reCE+re0rrrdjrsrdj`ore19)reCE.reg]6 +rf6u>rf[8Frg*PNrgj%]rhBChri,n!rilC/rjMg#\rltGhrm^qurnRM0ro!e:roX4ErpB^Q +rp]pXrq-3_rqQKgqtg#SrkABDrjMg4rilC(ri,morhBCargj%Urg*PJrf[8Brf6u:reg]2re:H-K`Hi+ +K_9rrJbsusJb=WoK`6])LAm#.MZ/S6NrG.>P5^^FQN!9NSc5;]UAh%hWW'%!Yl;$/[f3o<^AbtJa8X6\ +c2Q)heGe%uh#?10i;Vg:k5OWEmJcPQnG`"Xo`"O_q#:*dqYpBkr;QZlrke]Ps8N#mrVl`oqu6Hkq>U0g +pAXaao`"C[nG_nUli-/JkPjK?i;VX5g&BV&eGdhocMl&e`W!dS^](nF\Gio8Yl:g)XT#-sV#I%dTDkA[ +Rf8WPPl?mGOT(=?NrG":MuJV/M#N2/LAQ](LAlu'M#N83MZJ`orf$i:rf@&?rfd>Hrg*PPrg`t[rh07d +rhoasriZ7)rjDa8rk/6FrkeZRrlkAerm:Yormq)%rnm_6ro3q?rosFJrpTjUrpg![rq69arqQKgrqcWk +rquZlqu2o]JcFU,rr2]krqucmrqcWirqQKdrq69_rpg!WrpTjProsFFro3q8rnm_.rn%/!rm:YirlkA\ +rkn`Mrk/6?rjDa0riZ7%rhoakrh07_rg`tVrg*PJrfd>Crf@&=rf$i7regK,reLK-qh>$(reL9)reg]5 +rf$i:rf@&?rfd>Hrg*PPrg`t[rh07drhoasriZ7)rjDa8rk/6FrkeZRrlkAerm:Yormq)%rnm_6ro3q? +rosFJrpTjUrpg![rq69arqQKgrqcWkrquZlqu6HlJcC<$qZ$Qoq#13irql]krqZQgrq??arq-3[rp]pU +rp0RJroa:?ro!e5rn7;&rm^qorm(Merl+lSrkJHFrj_s8rilC)riH*srhTOdrh'1[rgNhPrfmDGrfI,? +rf6u:repc5pk\p)reC<(reCE-pk\p,repc7rf6u=rfI,Crg!JKrgNhVrh'1_rhTOkriH+%rilC0rj_s? +rkJHLrl+l\rm(Mirm^qurn7;.ro*k9roa:Frp0RPrp]pWrq-3_rq??drqZQirql]mqu-EkJcFU,QN-s` +q#13irql]krqZQgrq??arq-3[rp]pUrp0RJroa:?ro!e5rn7;&rm^qorm(Merl+lSrkJHFrj_s8rilC) +riH*srhTOdrh'1[rgNhPrfmDGrfI,?rf6u:!K2j9MuJV/M#N2/LAQ](LAlu'M#N;2MuJ\7NrG+=OT(IC +Q2[*KRf8iVTDkM_V#I:kXT#C%Yl;'0\Gj/?^])+L`W"*\cMl2ieGe%ug&Bn.iVqj9kPj`Fli-APnG_tW +o`"O_pAXjdq>U6iqu6NjrVQT2s1JC2rqQHhqu6Hkq#:$epAX^`o)%nTm/H>MkPjTBiVqd7h>Z.-f)F.t +ci22gao9?[_>_4K^&GSA[f3T3Yl:d(X8]!qV#I(eT`1P^SGnrUR/WENPl?mGP5^R*O8G%#\rltGgrmUktrn@A,ro!e7roF(Arp0RN +qsXOTrq-3`rqHEeqtg#SrkJHGrji$:rj)O-riQ1#rhf[jrh9=args+ZrgEbQrg*PJrfd>ErfH9'qiLf?rfd>G +rg*PMrgEbUrgj%]rh9=erhf[qriQ1(rj)O3rji$ArkJHKrl>#\rltGgrmUktrn@A,ro!e7roF(Arp0RN +qsXOTrq-3`rqHEeqtg_LSb5TZbci2Dmf)FD&h#?72iVqp; +kPjfHmJHAOo)A:\pAXgcq"speqtU-erkJKGs82fmrVl`oqu6Hkq>U0gp\sjbo`"F\nG_kTmJcALkl0`D +ir7j7h>Z+,fDa7ud/M;hbPoN\_u@IN^AbbD\Gil7ZMq',Xo>@"W;`XmU\g_`T)P8ZRf8`SR/WHOQM?a? +Pl$aFQN!6MQiNNTR@4&Crg`tYqk3q`rh]Umri5t"ric=,rj;[7rjr*CrkSNOrl4r\rltGhrmUktrn7;, +ro!e8roX4CrosFLrpKdTrpp'\rq69brqQKgrqcWkrqucop&:0TJcFC&qu6KkrqucmrqcWirqQKerq69_ +rpp'XrpKdQrosFGroX4>rnm_2rn7;&rmUknrltGcrl4rTrkSNIrk&0>rj;[1ric='ri5srrh]Uhqk3q[ +rg`tVrgEbQrg3VMpm(W=qj%/Hrg3VOrgEbSrg`tYqk3q`rh]Umri5t"ric=,rj;[7rjr*CrkSNOrl4r\ +rltGhrmUktrn7;,ro!e8roX4CrosFLrpKdTrpp'\rq69brqQKgrqcWkrqucop&=^cJcC<$o`+gfqu-Nl +rql]krqZQgrqHEbrq-3\rp]pTrpB^Lroj@Dro3q7rn[S,rn%.urm:Yhrlb;\rkn`NrkABDrj_s7rj)O, +riQ1"ri#gmrhK@`rgs+ZrgNhSrg<\Org*>EpltZ@rg*PMrg<\QrgNhVrgiqZrhKIhri#grriQ1'rj)O1 +rj_s=rkABIrl"fUrlb;crm:Ynrmq)%rn[S3ro3q>roa:FrpB^Qrp]pXrq-3_rqHEerqZQirql]mrr)Nh +JcFL)OT54Wqu-Nlrql]krqZQgrqHEbrq-3\rp]pTrpB^Lroj@Dro3q7rn[S,rn%.urm:Yhrlb;\rkn`N +rkABDrj_s7rj)O,riQ1"ri#gmrhK@`rgs+ZrgEkUR/iZSR/WHOQM?a?Pl$aFQN!6MR/WNQRf8iVSbo)Z +U].+hW;`grXo>O'ZMq61\Gj)=^AbqI`;[dUbPoccd/MMnf)FA%h>Z@3ir8*>kPj`FmJcPQnG`"Xo`"O_ +p\sseq>U6iqu6NmrUp0)s1/1/rqlZnr;6BjqYp_7L^Ab_C\,Nc6Yl:j*Y5YL$WW&gpV#I+fU&L_aTDkGZSc5/VS+rHOS,8`TSc52\ +T)kRVrh07arhKIgrhoapri?%$ric=*rj;[6rjr*CrkJHKrl+lYrltGgrmC_orn%/'rndY3ro3qtaTDkGZSc5/VS+rHOS,8`TSc55[TDkM_U&LhdV#I:kWW&stY5YX( +Yl;$/\,Nu<^AbnH_>_FQao9Qaci2>ke,ItugA]t.hu;X7jSnBBl2L#Jn,DhUnc&1[p&=[aq#:*gqYpBh +r;QZlrji'8s8N#prVl`lqu6Hkq#:$epAX^`o)%nTm/H>Mkl0`Djo46d:ZU\gkdV>d=lVZE]nri,mtriQ1&ric=+rj)O2 +rj_s=rkABHrk\TPrl4rZrm(Mhrm:Yprn%/&rn[S2ro*k#V +rk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRhrhT"XqkX4frhf[mri,mtriQ1&ric=+rj)O2rj_s= +rkABHrk\TPrl4rZrm(Mhrm:Yprn%/&rn[S2ro*kd:ZU\gkdV>d@kVuE[pX8]7#Y5YX(Z2V'.[Jm]8])KGC +^])(K`;[dUao9Tbci2;jec+2"g&Bh,hu;U6jo4HBkl0oImJHAOo)A:\pAXgcq"speqtpZ.-g&BP$e,I_ncMl&eb5TE[`;[UP +^](nF]Df>>[f3]6Zi79-Yl:g)Xn\srWq`RjWq`XoXT5L)Y-.Z+rj)O0rjDa7rj_s>rk8rk8rjMg6rj2U0qlp(&riPsrri5amql9FlriQ1&qlp(*rj2U3rjVm:rk&0CrkJHKrl"fUrlY5`rm(Mi +rmUksrn7;*rn[S2ro3q +rjMg6rj2U0qlg+(XoPX(Xn\srWq`RjWq`XoXo>L#Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2i +e,Insg&Bb*h>Z=2ir8$U0gpAXaao`"F\nc&"Vmf)POl2KiEjSn3=i;VU4h>Z(+f)F5!dJhMlci2,eao9U6i +qtpZ1.f`'J$eGdhoci25h +bPoZ`aSs0X`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfGC]`Gg[rkABHrkSNLrkn`Rrl+lXrlP/_ +rm(Mhrm:Yormq)$rnIG.qr%J6roF(BrosFJqsO@Nrq$-]rqHTrr)`lrql]kqt^6drq69_rq$-Zrp]pUrpB^Orp'LHroX4@ro3q8 +rndY/rn@A)rmh"trmC_lrm(MerlY5^rlG)Yrl+lTrkeZNqnW3Gl+[/3qnW3IrkeZQrl+lVrlG)\rlY5a +rltGhrmC_ormh#$rn@A+rndY4ro3qU6iqtpic2Pocb5TN^`r!aS`;@I@_Z%IM +`;[^U`r*jUao9H^bPocccMl2ici2>ke,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"XoD\F^pAXgc +q>:$fqtpU-fpAXaaoD\=XnG_kTmJcDMkl0cEjSn09i;VU4h>Z+, +f`'J$e,Iepci2;jcMl)fbPoZ`ao9ke,IqtfDaJ& +h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"XoD\F^pAXgcq>:$fqtpic2Pocb5TN^`r!aS`;@I@ +_Z%IM`;[aQ`r=*Zb5TT`c2Q#fd/MAjdJhVof)F;#g&Bh,hYZ71j8S-=kPj`FlMg2MmecMQo)A7[p&=[a +p\t!cqYpBhr;QZfrdk*ks+14Ls82fmrVl`lqu6Hhq>U-fpAXaaoD\=XnG_kTmJcDMkl0cEjSn09i;VU4 +h>Z+,f`'J$e,Iepci2;jcMl)fbPoZ`ao99\`Pqeprl"]On&#(Aqo&KQqo8WWrlY5`rltGfrm:YjrmC_o +rmq)#rn7;,rndP1ro="=roa:Frp'LMrpK[Qrpp'[rq69arqHEfqtgU0gp\smcp&=U_nc&%Wn,DbSm/H>Ml2KoGkPjN@iqq[5 +hYu=0gA]e)f`'G#eGdnqdJhMfci25ec2PrUbPTN_c25f`ci2;jdJhSne,Insf`'S'gA]n,h>?.0ir8!; +kPj]El2L#JmJcPQn,DhUnc&1[p&=[ap\sseq>:$fqtU-brnma,s+14-s7lTgrVQKkqYpU0gp\smcp&=U_nc&%Wn,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0gA]e)f`'G# +eGdnqdJhMgcN);jcMPlcbjWaPbl5lacMPred/MGldf._pec+5#g&B_)h#?.,i;Va8j8S6@kl0iGli-;N +mf)\SnG_tWo`"O_pAXgcq#:*dqYpBerV6Ais/5nirqlZnr;6BjqYU*fp\smcp&"@[nc&%Wn,DbSm/H;L +l2KiEjo4??ir7m8hu;I2h#?(-g&BY'fDF+teGdqrdehGkd-8mUd/22jdK.eErmUbormh#"rn.5'rnIG- +rn[S2ro*k9roF(?roX4Erp0RMqsOIQrpg!Yrq$-^rq??crqZHfrqlTjrr)EeJcGWIJcEXfp&=jerquZj +rqcNfrqHEcrq60[rpg!WrpTjSrp9XLrosFEroO.?ro3q8rnm_2rnRM-rn7;'rn%%trm^qrrmL\krm9oU +rm:PirmLepqpbVqrn%/%rn7;*rnRM/rnm_6ro3qkPj]El2L&KmJcVSn,DhUnb_tXp&=^_q"X^_r;6Hirdk+?s+13]s8N#j +rVl`iqYp9ep\XX_o_\1Xn,DhUmf)SPl2KoGkPjTBjSn09i;VX5hYu@1h#?%,g&BY'f)+"seE56WeGe"q +f)F>$g&B_&h#?10htu@2ir8!;jo4HBkl0iGm/HDOnG_nUnG_tTo`"O_p\Xa\qYU3frVQTFs+13$s475L +rq66hr:p-fq"sg_p&=U\nc&"VnG_kTm/H8Kkl0cEjo4??iqq[5hu;L3h>Z4/gA]e)f`'J!ec+(\e,.Yo +ebdqsf`'S'gAB\)hYuF0i;Va8j8S0>kPj]El2L&KmJcVSn,DhUnb_tXp&=^_q"X^_r;6Hirdk*\s+14@ +s8N#jrVl`iqYp9ep\XX_o_\1Xn,DhUmf)SPl2KoGkPjTBjSn09i;VX5hYu@1h#?%,g&BY'ecF=OrRLns +k0s4Wrmgnsrn.5'rn@8)rndY3qr%J5ro=">roa:ErosFKrpB^SrpTjUrpfmXrq69bqtTs_qu$?iqu32e +R/d0bq#13iqtpBhqt^$]rq-*Zrp]gRrpKdQrp9XLrosFGroX4AroF(?+/i;VX5iVqj9jSn9?k5OTDl2KuIm/HDOmf)\PnG`%Vo_A1[q>:$fqtp?")g[Ekqg\'A$h>?+/i;VX5 +iVqj9jSn9?k5OTDl2KuIm/HDOmf)\SnG_qVoDA1Tp\t!cqYpBhr:p6frdk*Ys+14:s8N#mrVl`lqu6Hh +q=s^`o_\7ZnGD\Rmf)VQm/H;Ll2KoGk5OKAjSn0rp'LKrp9OMqsaUU +rq#pXqtU0dqtgrp'LKrp9OMqsaUUrq#pXqtU0dqtgrp'LKrp9OMqsaUUrq#pXqtU0dqtglMg,Km/-5JnG`"XoD&"U +q#:*dqYpBer:9iVs-jSn34 +ipYk!iW/!>j5^."roO%>roa1Brp'LKrp9OMrp]pUrp]pWrq$$ZqtC$`rqZHfrqlTjq#1!eJcG!7JcE"T +q#:'erquZjrqcNfqtL*`rq-*Zqsj[Srp]pUrpKdPrp0RKroj7BroX+>roF(=p#>H!p#>u2roF(?qr[n@ +qrn%Erp0RMqsOIQrpTjUrpg!Zqt0dZrqHEfqtg:$cqtp>mJ-,JmfDnGrp]pUqsaCNrq$$Zrq60^rqHl,HgAh'Lo)8RcqtpBhqt^6dqtL*` +qt9s\qt'UQqsaURrpTsWn,;_MmdKQ:$fqtpU0ap\XX\o_\7Zo)%t5nG_qXo)/(XoC_bTp%\:Yq#:*aqYpBhr:U$]rdk+!s+13< +s82fdrVl`lqtU$bq>U0ap\XX\o_\7Zo)%t5nG_tTo)A7Ro`"OYp\Xabq=sgcqtp`MJcG]K +o)AObq#'parqc<`rqQBbrq>pUqt0%Bp[eLYo_%nSpAXg`q"smaqY9s_r;QZ]rdk+!s+13U0d +p\smWp&"CDoC_bKp&"I^p\Xa_q>:$`qtps+13ts760drV6U0dp\smXo`4[^ +o]GcU0[p\X[Hp%S.\p@e1RqtU'a +p%n[bq#'g`p&9OBbQ!.nOT54Wq#1*gq#($dqtg!]rqQ'YqtB1Fp%J(QqtU'ap%n[bq#'g`p&;/pJcC<$ +XT/1so)8@]qtp9ep%eU^o(W%Tk4SE@p%S@Yqt]p]rqlKgqu-Ejp&9OBPQ-46aT)/:o)8@]qtp9ep%eU^ +oCi7ZqtB1Fp%J(QqtU'ap%n[bq#'g`p&9OBp]#gEkl:GWn,<%Zqtos\eG0+@mJ?hZq#'UZq#5jE]`3Q_ +K`D&Nqu6'_q#($do(pl3m/$_Yq#'UZq#6rdJcC<$T`=fdn,<%Zqtos\eG8J-rqlKgn,<._rr.KKK`?W' +]`7d+n,<%Zqtos\!VuQBq<[tWqtU*XrV6ACs60K6s60LFrq63Lqr[bOqsaLRr9"!0s1JA_s+LFOrosFT +r8[\:qW[nJr9"!Os+13$s.KDSrq63Lqr[b>qss[Lrr2nJs+LE's1JBorq63VqtL!MqW[nJr9"!0s60K6 +s4RGFrosCPr9!nNr:^'TrUTr=s02NSs+14Cs7QBUrUTmKqs=7IrUTrPs+13$s,m?SrosCPr9!nCr9XCQ +rqQMEs+13$s/l=orosCWr;-?Rqs=7IrUTr=s4mX*s2=s(rm^lHrp'K6s-Wh;s+14.s6Ta7rTX<4s8;nJ +s+13$s8;o`rm^o2ro!g-s+13$s-WiQrW2urf)=k4JcE[gJcE[g^AdEsJcD,;JcC<$i;]_SJcGZJJcC<$ +JcGZJVuGWSJcC<$JcD,;lMeNsJcE[gJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +J, +~> %APLeod +EI +120 0 0 52 136 32 cm +BI +/Width 360 +/Height 156 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$ +JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?ql +JcC<$JcC<$JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$JcC<$JcEjlJcDhOf)>^Lrdk*% +s+13$s2b5irdk+4s2k:ls2=s(rm^lHrp'K6s-Wh;s+14.s6Ta7rTX<4s8;o=s+14's7QBUrUTmKqtL$^ +r9XCQrdk*Rs+13$s7QEbrosCPr9!nCr9XCQrfmH)s+14-s8N#^rUp*]qptTEqYL*do).kQqu20HZi>UV +JcGWIrr20\p&+L[eGB(>o).kQqu2r^ao?qlkl:GWn,<%Zqtos\eG0+@mJ?hZq#'UZq#5jE]`3Q_K`D&N +qu6'_q#($do(pl3m/$_Yq#'UZq#6rdao?qlo`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU` +qtU*^rUp/@s3(Fns,d9XrqQHhrV6U0[p\X[Hp%A%Op\Xa_q=XU`qtU*^rUp/ns2k:ls7cQm +rpTgbr:p0gqYU*`q"sgYpA=O^o\K-;oE"UVrq5jUrqH3_rqZHfq"ssdo)8ReJcEpnJcCr6rr2Kerr)io +q"t'eqt^$^qtKdWqt9s\h=LO9rq5jUrqH3_rqZHfq"ssdo)8ReYQ)`EJcG]Kqu60brquZjq"jm`rqQ9_ +qt9jYqt'gXqsiM3rp^!Zr:9jYp%87Vq"O[\rqZ?crqlTjp&4R_JcF7"JcD/U0dp\sm`p&=U\oD%kQnG_nUnGD\LmdKQ:$fqtplhKlHn,)VRnb_nV +oDA1TpA"F[qYpBhr:9gcrdk+*s+13Hs8N#drVl`lqu6Hkq"sj]pAX^]oD\=Xnc&%Tn+c;=lgO*,lhKlH +n,)VRnb_nVoDA1TpA"F[qYpBhr:9gcrk\WVs,@!Wrpp$er;QTjqYU*`p\XX_o`"F\nc&"VnG_nRmf)VQ +m/-,JlMKi=kjR^,kQ0o2ros=Frp0RMrpBLKrp]pUrpg!Yqt0m\q"Od`q"k!erquHfqu20Hi;\B.W;lkr +o)8RcrqlThqt^6cqtL!\rq-3\rpg!Vrp]pUqsOINrp9OJrp'CFp#tl-o'$);qs+1Hrp9XOq!S.NrpTjV +rposYrq6'\rqZ?crql]mp&4de`;dsZQ2gXYq#13iqtpBhqt^-`rq??`qt'^TrpTjUrpTjSrp9XMrp'LH +qrdt@qrRhkPOKBlMg,Km/-5MnG_nUnG_tWoDA1WpAXgcq>:$fqtpjSn34ipYk! +ir8!;jSn9s69Q7s0;UprVl`lqu6Heq#:!dp&=U_o)&"WnG_nUmf)SMli-/J +kl0cBjo4??")g[Ekq +g\9J(gt_nbqqqD2rnm_6ro3q>g +rm:>arm:Yjqp>;ir6kSormh#!rn%/%rn72(rn[S2ro*k9roO.Aroa:Frp'LKrpB^Rrp]pXrq$-]qtC$` +qtU0drqlTjq#,dDo)F:@])VR(rquZjqt^6dqtL*`rq-3]rpp'XrpKdQrp0RKrosFFroX4Aro3q8rnmV/ +rnRM+rn.5%rmq)!rm^_kqp>>grm:>arm:Yjqp>,drm^qtrmq)#rn.5'qqV2,rnm_6ro3q=roX4CrosFI +rp0RNrpTjUrpp'[rq-*]rqHU0gp\smcp&=U_nc&%Wn,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0gA]e)f`'G#eGdnqdJhMf +ci25ec2PrUbPTN_c25f`ci2;jdJhSne,Insf`'S'gA]n,h>?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[ +p&=[ap\sseq>:$fqtU-brnmats/Q+rrqlZnr;6BjqYU*fp\smcp&=R^o)%qUmf)VQlMg#HkPjQAiqq[5 +hYu@1g&BY'f)F.tdf.Sld/M>ic2Pocb5TN^`r!aS`;@I@_Z%IM`;[^U`r*jUao9H^bPocccMl2ici2>k +e,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"XoD\F^pAXgcq>:$fqtpU-fpAXaaoD\=XnG_kTmJcDMkl0cEjSn09i;VU4h>Z+,f`'J$e,Iepci2;jcMl)fbPoZ`ao9ke,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"X +oD\F^pAXgcq>:$fqtpU0gpAXaao`"F\nc&"VmJcGNlMfuGk5OKAiVqd7 +hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y`;[[R_Z%CK_#(n8^&,SA^];7L_Z%IP`W!mVaSs<\b5TWa +c2Q)hdJhVoec+5#g&Bb*hYuF3iVqsU0gpAXaao`"F\nc&"VmJcGNlMfuGk5OKAiVqd7hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y +`;[[R_Z%CK_#(n8^&,SA_#)"J_u@XS`r='Yao9H^bl5ldd/MGle,Insf`'S'g]$(/hu;U6jo4EAkPjcG +li-;Nn,DkVo)A:\p&=[^q#:*aqtU-eroO1%s02OurqlZnr;6BjqYp9ep\sgao)%qUn,DbSli-2Kkl0ZB +iqq[5h>Z1.f`'J$eGdhoci25hbPoZ`aSs0X`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfGC]`Gg[ +rkABHrkSNLrkn`Rrl+lXrlP/_rm(Mhrm:Yormq)$rnIG.qr%J6roF(BrosFJqsO@Nrq$-]rqHU6iqtpU0gpAXaa +o`"F\nc&"Vmf)POl2KiEjSn3=i;VU4h>Z(+f)F5!dJhMlci2,eao9Z=2i;Vd9jo4EAl2L#J +mf)\Snc&+Yo`"O_pAXjdq>U6iqtpU0gp\sjbo`"F\nG_kTmJcDMkl0cE +jSn0_7L^&GYC\Gir9[JmN3ZMq',Yl:g&XT#9bWrB'rX8o@' +Xf_T,ric=+rj2U3rjVm:rk&0CrkSNLrl"fUrlP/_rm(MjrmUkrrn7;*rn[S2ro3qrjMg6rj2U0ric=*riZ."ri>:`ri>ptriQ1(ric=+rj2U3 +rjVm:rk&0CrkSNLrl"fUrlP/_rm(MjrmUkrrn7;*rn[S2ro3q#Vrk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRhrhT"XqkX4frh][n!N2jpWW&stXo>L&YPtg+ +ZMq92\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqsZ+,fDa>"d/MAjcMkrb +a8X$V_>_7L^Ab_C\,Nf7ZMq*-YPt^(XT#:"WW&jqVYd4hV!k)UV#I4iVZ*LmWW&stXo>L&YPtg+ZMq92 +\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqs_7L^Ab_C\,Nc6Yl:j*Y5YL$WW&gpV#I+fU&L_aTDkGZSc5/VS+rHOS,8`TSc52\T)kRVrh07arhKIg +rhoapri?%$ric=*rj;[6rjr*CrkJHKrl+lYrltGgrmC_orn%/'rndY3ro3q#VrkSNIrk&0?rjDa2ric=%ri5srrhTOfrh07_rgj%YrgNhSrgC#VZ*CjU&L_aT)P8ZRJrTQQN!-JPQ$aE +OQMW$OT(CCP6$l2rfmDJrg3VPrg`tYrh07arhTOjri?%#rilC-rjMg:rk8C +rf@&=rf$i7regK,reLK-qh>$(reL9)re^]6!K2m8N;ek:O8b7?PQ$jHQN!?PSGo/[T`1bdVuEdsY5Y[) +[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirg*S8 +s5*eTrqQHkr;QTmqYpibl5T\_u@FM]`,G? +[JmE0Y5YO%VuELkT`1S_SGnuVQN!-JPQ$[CO8b1=N;eb7MYN#,L]3&*L&Qi+L\Q])MZ/P5N;ek:O8b7? +PQ$jHQN!?PSGo/[T`1bdVuEdsY5Y[)[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhU +nc&1[p&=[aq#:*gqYpBkr;6HirqcZ:s2+g8rqQHkr;QTmq>U0gp\sjbo`"F\nG_kTm/H8KkPjTBi;VR3 +g]#e'e,I_nc2Piaa8WpS^](nF[f3W4Yl:a'WW&gpU&L\`Sc5&VQi<9LOoCIANrFt9MZ/J3LAQ]"KC=Bd +KDpQ)LAZf*M>iD3MuJb9O8b:@Q2[-LRJrcVTDkP`VuE[pXT#I'[/RN5]`,YE_>_LSb5TZbd/MPof)FG' +hYuI4jo4HBl2L&Kmf)_To)A7[p&=^bq#:*gqu6NjrVQS[s+14,s8N#mrVl`oqu6Ejq#:$ep&=U_o)A.X +mf)SPl2KlFjo43;h>Z1.f)F.td/M;hao9?[_>_4K]`,A=Zi73.XT#3uVuEChTDkD\RJrQPQ2ZpFOT(:> +MuJV5M>i8,L%p;hJbXlsL&6W(M>iD3MuJb9O8b:@Q2[-LRJrcVTDkP`VuE[pXT#I'[/RN5]`,YE_>_LS +b5TZbd/MPof)FG'hYuI4jo4HBl2L&Kmf)_To)A7[p&=^bq#:*gqu6NjrVQTjs2k;Xs8N#prVl`oqu6Hk +q>U0gp\sgao)%nTm/H>MkPjQAi;VX5g]#n*df.VmcMkoa`W!^Q^AbbD\Gic4YPt['VZ*@iT`1P^S,SfS +PQ$^DO8b.iG4NW,"O'Z2V94])KGC_>_FQaSsKad/MJmg&Be+hu;R5jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr;QZl +rg*S8s5*eTrqlZnr;QTmqYpiaSs0X_>_1J]Df>> +Z2Us+Xo>3sU]-qcT)P5YR/Wi8/K`6W'JGXikIf"QgI/\QhIf=ioJGt3#L&Qi+M>iG4 +NW,"O'Z2V94])KGC_>_FQaSsKad/MJmg&Be+hu;R5jSn?Ali-;Kn,DnW +o`"Uaq#:*gqYpBkr;QZlrqcZ:s2G$;rqlZnr;QTmqYpZi70-XT#0tV#I%dSc5)WPl?jFO8b.rkSNMrlG)^ +rm:Ymrmq)%rnm_6ro3q?rosFJrpTjVrpp'\rq69brqZQirqlTjrr)`nSH"0?iW&oVqu-Nlrql]krqZQf +rq??`rpp'XrpTjProsFFro3q8rnm_.rmq(srm:YgrlG)UrkJHGrjMg4ric=&ri#glrh07]rgNhNrf[8A +rf-o7reUQ,rdt-!rdausrd=]krd"KfpiZ%IpiZR\rd"Khrd=]nrdautrdt-&reUQ2rf-orkSNMrlG)^rm:Ymrmq)%rnm_6ro3q?rosFJrpTjVrpp'\rq69brqZQirqlTj +rr)`n!<:1@aT)8=qu-NlqtpBhrqQKdrq-3]rp]pTrp9XLroa:Bro!e3rnIG'rmUknrlb;]rkn`Mrk&0> +riuI*ri?$prhKIbrg`tTrfmDDrf-o8reLK,rdt-"rdOiord"Kfrce6^rcJ-[qf2(Drc.gUrH&'^FT-F^ +GQ)jdH2`3jIK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$Z2V94]DfSE_u@^UbPolfeGe%ug]$(/ +i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*dqu6NjrVleds+142s8N#prVl`lqu6Hkq#:!do`"I]nG_kTm/H;L +kPjTBi;VR3g]#e'e,I_nbPoQ]_u@FM]Df>>Z2Up*X8\spU]-nbSGnoTPl?dDNW+k8L]3#,K)U<"If=`o +H2`'fGPcO^FT-=XEURlGEVjeRFT-F^GQ)jdH2`3jIK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$ +Z2V94]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*dqu6NjrVlcrs2k;as8N#m +rVl`oqu6Hkq#:$ep&=U_nc&%WmJcGNkl0]CiVqa6g]#n*df.VmcMkl``;[ON]Df83O8b=AQ2[ia8X$V^](kE[f3T3Y5YI#VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qSDuOY: +D>S5MDu4MQEW1%YFT-OaH2`0iIf=irJc:E'M#N>3O8b=AQ2[#SrkABDrj2U/riZ6trhKIbrgWnQrf[8Arepc4re(3$ +rdXoord"KdrcA'ZqeuINrbVRLrbDFHqe,n?mq)B.rb)4E!,;OLCAr#JD#S;KDuObUF8g@^GlE'hJ,Y#u +KDp`,N;en;P5^gIS,T&ZU]..iY5Y[)Zi7T9^AbtJa8X9]d/MJmf)FD&hu;X7jSnBBlMg5Nn,DnWo`"R` +p\sseqYpBkr;QZlrh'4As6'F]rqlZnr;QTmqYp9hp\smco`"F\n,DbSli-,IjSn0rnm_2rn%/!rm:YgrlG)VrkJHDrjMg1riH*urhBC`rgWnPrf[8Are^W0re(3# +rdFclrc\9_rc8!Wrbh^OrbDFHrb2:Crakt;raY2%raYh9!+c1BAc?<@B`;`FCAr&KDZ4VSErL1[G5cge +I/\ZqKDpW)M>iS8P5^aGS,T&ZUAh.kXo>R([f3l;^]).Ma8X<^d/MPofDaV*i;Va8k5OWEm/HJQnc&+Y +p&=[ap\t!fqYpBerLa+@s6'FWrVl]nqYphu;I2fDa;!d/M8gaSs*V +^](hD[f3N1XT#3uUAgb`S,S]PP5^OAM>i;0KDpE#IK"QlG5cU_ErL%WDZ4JOCAqrHB`;WCAc$$;A*IJ% +A,Bg9Ac?<@B`;`FCAr&KDZ4VSErL1[G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh.kXo>R([f3l;^]).M +a8X<^d/MPofDaV*i;Va8k5OWEm/HJQnc&+Yp&=[ap\t!fqYpBgr;llqbQ#ccq#13hrqcWirqHEcrq-3Z +rpTjSrp'LGroF(:rn[S-rm^qprm(Marl"fNrk&0D+pg3`&ra>_4!+>n:@K'a8A,^'=BDuWEC]8/LDuO_TEW1+[ +GlE'hJ,Y'!K`6o/NrG.>QiZ.-eGdkpcMkoa`;[ON +]Df8QiV1qd'2+r`fA*kun!hr`f>+!F/n/?2e4.@/aX7A,^'=B`;cGD>nJQ +EW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R(Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_T +o)A7[p&=acq>U6fr;QZlrh]XGs6BX`rqlZnr;QQlq>U0gp&=U_o)A.XmJcGNk5OH@iVq^5gA]\&d/M8g +aSs'U^AbbDZi73.Xo>-qU&LY_QN!*IO8b+;L]2o)JGsrqH2_maErL"VD>n;LB`;TBAH$';@/F=.?2e+. +>Q.gj=oMV(>Ph\)?2e4.@/aX7A,^'=B`;cGD>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R( +Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_To)A7[p&=acq>U6fquHZrrVcWmdJqVorr2fnrqucm +rqZQgrqHEbrq$-YrpTjQrp'LDro3q7rnIG'rmLekrlP/XrkSNFrjVm2riH*trh07]rgNhLrf@&;reCE) +rdXoorce?`rc%jSrbVRIrau.?raPk7ra5Y1r`oG,qcWo#h,jPW!E`J'=oMY)>lJ%.?iFL5@fBp;B)ZKC +D#S>OE;jtYGQ)sgJ,Y*"LAm/2O8b=ARf8lWT`1nhXT#I'\,O#=_#D:Oao9Tbdf.ktg]$+0ir8$U9jr;6Hlrh]XGs6]jcrqlZnr;QTmq>U0gp\sjboD\7Yn,D\QlMflDir7j7g]#e' +df.Pkao96X_#CtF\,NW2XT#0tT`1M]Rf8KLO8b+;LAli)J,XfoGQ)^`E;jbSD#S,IB)Z??@fBd7?iF@1 +>lIt)=oMOZ=8Q,!=oMY)>lJ%.?iFL5@fBp;B)ZKCD#S>OE;jtYGQ)sgJ,Y*"LAm/2O8b=ARf8lWT`1nh +XT#I'\,O#=_#D:Oao9Tbdf.ktg]$+0ir8$U9jquH]nrVlfDs3^lGrqlZn +r;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+W;`OjT)P/WPl?dDN;eY4 +Jc:/uI/\5h\(=T2D$2raYq@rbDFMrbqdWrc\9grdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4 +ro3q@rp'LLrpTjWrq-3arqQKgrql]mqu-NnV>l,HmJm1bqu-Nlrql]jrqQKerq-3[rpTjQrp'LHro3q8 +rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbMrfI,. +r`oG+r`T5&r`B)"qc3Vpku7R\qc3Vrr`B)$r`T5(r`oG.qd9>2raYq@rbDFMrbqdWrc\9grdOitreUQ3 +rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4ro3q@rp'LLrpTjWrq-3arqQKgrql]m!<)io +rr1=FeGoOIqu-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+rmUknrltG]rkeZKrjMg3riZ6trhBCa +rg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5&r`B)!r`&kqr_iVjh,+)J!)i_mr_req +r`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZrd"Kkrdb!%re^W8rfd>Irh'1brhf[trj)O3rkABJrl+l] +rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??crqcWkrqucoqu3PoJcG6>rr2fnrqucmrqcWgrq??arpg!W +rpTjOroa:Bro!e2rn7;"rm:Yhrl+lRrkAB?rj)O+rhf[hrh'1Urfd>Bre^W-rdaurrcnEbrc%jSrbVRH +ral(;ra>_3r`oG*r`K/$r`/qsr_reoqbc0Gr_`Pjr_reqr`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZ +rd"Kkrdb!%re^W8rfd>Irh'1brhf[trj)O3rkABJrl+l]rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??c +rqcWk!;llqr;QZlrm^tts8N#prVl]nqYp5h\(=8l8"sJm;uTerQ/"/@fBp;B`;cGDZ4YTFoHXbIf=otK`6r0O8b@BRf8oX +UAh1lY5Yd,]DfSE_Z%^Wc2Q,if`'Y)hu;[8k5OTDm/HGPnc&1[p&=^bq>U6iqu6Qkri#jJs7$'frqlZn +qu6Hkq>U-fpAX^`nc&"Vm/H5Jk5OE?hu;C0f`':tcMkuc_Z%:K]Df/9YPtR$UAgb`Rf8NMOT(4Q.h*=oMM%sDh:\@KX:%D'Y:]!uf;>sJm;uTerQ/"/@fBp;B`;cGDZ4YTFoHXbIf=otK`6r0O8b@BRf8oXUAh1lY5Yd,]DfSE_Z%^Wc2Q,if`'Y) +hu;[8k5OTDm/HGPnc&1[p&=^bq>U3jqZ6Tkrr)`neGn%urr2fnrql]krqZQfrq69]rp]pSrp0RHroF(: +rn[S,rmh"prlkA^rkSNGrjVm2ri?$qrh07[rg*PFrf$i4rdaurrd4Wdrc.pUrbDFEraYq8ra,S0r`T5& +r`B(ur_iViqbR2dqb?`Wpe10Or_3Afr(d,bqb[8jr`&kur`K/&ra#M1ra>_8rb)4FrbqdVrcJ-drdOis +reUQ3rfI,FrgWn[rhf[qrilC2rk&0Frl>#]rm:Yprn7;,ro!e:roa:HrpB^Srpp']rqHEfrqcWkrr)`n +W;hGKnGiLequ-NkrqcWirqHEbrpp'XrpB^Nroa:Aro!e3rn7;$rm:Ygrl>#Rrk/6>rilC&rhf[frgWnQ +rfI,ra>_3ra#M+r`K/$r`&kpqb[/cr_E>boh>-RnkB$WqbI#aqb[8j +r`&kur`K/&ra#M1ra>_8rb)4FrbqdVrcJ-drdOisreUQ3rfI,FrgWn[rhf[qrilC2rk&0Frl>#]rm:Yp +rn7;,ro!e:roa:HrpB^Srpp']rqHEfrqZWl!W2cnrVQTDs4%)GrVl`oqYp9hp\sjboDA%Vm/H8KjSn0< +hu;@/f)F(rbl5Z^_>_(G[f3Q2XT#*rT`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\QC&VZB@fBa6?2e%,=T2>" +<;oep;#=&c:&[ic9(GRB8G,OS9)M5hh,?iFO6AH$U6fr;QYns+14> +s82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7gA]\&dJhAha8WpS]Df85hY'5hh,?iFO6AH$k'df.Pk`rlIq+sDk:]=,g9`%KX8c)$/7KGtJr^Z`T +r_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&Arg`t[rhKIpriuI1rk8rosFJrpTjWrq-3arqQKgrql]mrr)`nY5a(QoDeghrr)iorql]jrqQKerq-3[rpTjP +rosFFro*k6rnRM'rmLekrl4rRrk8<=riuI)rhKIcrg`tNrf6u9re(3#rd=]frc8!Vrb;@DraPk6r`oG+ +r`9"tr_`Ykr_NMgr_32^pdt?Qe40F-pdtHXqb6l^r_WSkr`&ktr`];+ra5Y6rau.DrbqdVrcS3frdXp" +repc:rf[8Nrh'1briQ1)rjDa=rkeZSrm(Mjrmh#'rndY5roa:Frp0RPrpp'\rqHEe!;QZkq>U9jr;QZl +rn@D(s8N#srVl`oqYp9hpAXaao)A.Xn,DSNkPjQAi;VO2f`':tcMkuc_Z%7J\c/i4X8]$rT`1G[Q2ZjD +M>i2-JGsopG5cI[D>n;LAH$$:?iF7.=T2A#;Z9Pj:]=&e9D_<[8GbpV7efFI7.3M<7/]RP7JfRR8,GjV +8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[HN&HoK`6l.O8bFDS,T)[VuEdsYl;34^Ac"Kb5TZb +dJheth#?72jSn<@l2L/Nnc&+Yp&=^bq#:-hqu6QkriZ9Ps7?9irr2lqr;QQlq#:!dp&=O]nG_nUl2KlF +jSn*:h#>t*dJhGjb5T9W^&GSAYl:^&VuE@gS,S]PO8b"8K`6N$HiA3fE;j_RCAqcC@K'X5>5hY'X/g9`@]^8cD9X8,c!Q7JK:>6hj(E7JfRR8,GjV8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[ +HN&HoK`6l.O8bFDS,T)[VuEdsYl;34^Ac"Kb5TZbdJheth#?72jSn<@l2L/Nnc&+Yp&=[cp]:0brqcWk +rr)`ngAfn,rr2fnrquclrqHEcrq69\rpTjRroj@Cro3q7rn@A&rm:Yfrl4rQrk&0reLK)rd=]hrc8!UrbDFFraGe5r`oG)r`9"t +r_WSir_EGdr_*5_r^coVr^QcRpdEq*pdG*MqaUQTqag]Yr_*5ar_EGgr_WSnr`9##r`oG/raGe=rbDFM +rc8!^rd=]sreLK3rf[8Jrgj%ari,n"rjMgZ(+eGdenao96X^Ab\BZi7'*VZ*7f +Rf8QNO8at7KDpB"GlDgaDuOPOBDuE?@/aI2>5hS%;u9Dj:B!rd9)D3W8,c!T7K,^%6i9=K7/fXP7fGpW +8c)-Z9`@c`;#XGnlJ.1A,^-?C]88OFT-OaJ,Y-#M#NJ7Pl@-NT`1hfXT#R*\Gj5A`;[pYci2Gn +g&Bh,i;Vg:kPjiImf)_To`"O_p\t$gqu6NmrVlf!s+14Ds8N#srVl`oqu6Hkp\smco`"@Zmf)SPkPjQA +i;VR3f`'D"ci2&c`;[LM\c/r7XT#*rT`1DZPl?aCM#N&+J,X]lFT-4XC]7uGA,]m8?2e%,lJ.1A,^-?C]88OFT-OaJ,Y-#M#NJ7 +Pl@-NT`1hfXT#R*\Gj5A`;[pYci2Gng&Bh,i;Vg:kPjiImf)_To`"L`pAt$_rqcWkrqucorr1XOh>dKR +qu-NkrqcWirq??`rpp'XrpB^MroO.>rnm_/rmq(rrlb;\rk\TFrjDa/rhoairgs+RrfI,ra>_1r`T5$r_i_mr_NMfr_!/]r^d#YqaUQRr^?3Bh*V'-o0`LFr^H]Rr^ZrYr^m)^r_U6iqu6Qkrn[V1s8N#prVl]n +qYp5hn.@fBp;C]88OErL@`IK"fsM>iP7P5^sMTDkVbXo>X*\Gj8B`;[mXci2Gnf`'b,iVqp;l2L#Jmf)bU +oD\F^q>U6iqu6QkriuKSs7u]orqlZnqu6Hkq>U'do`"C[mf)POl2KcCiVq^5f`'D"ci2&c`;[ON\Gif5 +Xo>*pTDk>ZP5^I?M>i)*IK"NkErKtUC]7lD@K'X5>5hV&<;o_n:]=,g9E%Q_8cD6Z7f,XR7-m:s6L7)= +7/KFP7fGpW8cD?]9E%]c:]=2i<;otu>5hn.@fBp;C]88OErL@`IK"fsM>iP7P5^sMTDkVbXo>X*\Gj8B +`;[mXci2Gnf`'b,iVqp;l2L#Jmf)bUo)SFap%A=[rqcWkrr)`nh>c=2rr2fnrqcWirqQKcrq$-YrpKdO +roj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQrb2:>ra5Y1r`K/"r_i_l +r_EGdr_!/]r^d#XqaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9##ra#M1raGe>rbMLPrcS3d +rdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pYrq69crqZQirr)`nZ2]CT +q>^Hnqu-NjrqZQgrq69^rp]pTrp0RIro="9rnRM(rmLekrl>#UrkAB>rilC&rh07\rg<\Hrepc1rdXon +rcS3ZrbVRIraGe5ra#M*r`/qqr_WShr_3;`r^m)[r^QcRr^?rbMLPrcS3drdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LN +rp]pY!;-Bcp&=acq>U6irVQTMs5!_SrqlZnqYp9hp\sgao)A+Wm/H8KkPjH>hYu7.e,I\mbPoEY^](hD +Yl:^&VZ*4eRJrELNW+_4Jc:#qG5cL\D>n5JAH$!9>lIn*l2L&Kn,DnWo`"Uaq>U6irVQT!s+14Gs8N#prVlZmq#:$eo`"F\n,D\Ql2KlF +iVq^5gA]S#ci2,e_u@FM])Jr5X8]!qTDk8XPQ$R@L]2l(HiA3fEW0hSB`;QA@/aF1=oMG#;uTSl:B!rd +9)_B\8,c!T7K,^G6c)1_6i0:N7K,dU8,c'Y9)_K_:B"&g;Z9\q=oM_+@/a^9B`;lJEW1.\HiATqL]3;4 +PQ%!LTDk_eXT#I'])KGC_u@jYci2DmgA]q-iVr$>l2L&Kn,DkXoE"UVrqHEfrqcWmqu5FOh>d9KrqcWh +rqHE`rpg!Vrp0RJroX4dp-S=;r^?WPr^QlWr^m)^r_3;er_i_pr`K/'ra,S4rau.F +rbqdXrd"Kmre19.rfR2Grg`t`ri5t$rjVm?rkeZWrm(Mkrn7;,ro!eU6crS@M0s82cor;QQlq#:$eoD\:Zn,DVOkPjQAi;VO2fDa.rbl5]__#CtF[Jm?.W;`LiRf8QN +O8aq6KDp?!G5cO]DuOGLAH#s8>lIn*=8l+s;#X5h9E%Q_8cD3V7K,^G6cVOb6M3_C7/fXP7fH!Y9)_K_ +:B")h;Z9bs=oM\*?iFU8B`;rLF8g@^If=ruL]3A6Pl@-NU&LthY5Yj.])KMEaSsE_d/MYrg]$.1jSnBB +lMg8Onc&.Zp\t!fqYU3irNZBRs7u]lrVl`oqYp9hp\sd`nc&"VlMfuGjSn*:h#>q)d/M8gaSs!S]Df5; +Y5YC!U&LM[Pl?aCL]2r*If=NiErL"VB`;QA?iF=0=oMM%;Z9Ml:B!oc9)_E]7f,XR7.N^U6M3_C7/fXP +7fH!Y9)_K_:B")h;Z9bs=oM\*?iFU8B`;rLF8g@^If=ruL]3A6Pl@-NU&LthY5Yj.])KMEaSsE_d/MYr +g]$.1jSnBBlMg8OnGr.]oCMtUrqZQiqu$Hlh>c=2rr)iorql]jrqQKdrpp'XrpKdLroO.=rndY.rmh"p +rlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'XrbVRFraPk6r`T5%r`&knr_EGdr^m)[r^ZrWr^HfS +njC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ra5Y6ral(FrbqdWrd4Wpre192rf[8Irh'1dri?%( +rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??crqZQjrqucoZ2]CTq>^HmrqucmrqZQgrq??^rp]pT +roj@Cro3q6rn@A%rm:Yfrl+lOrj_s5ri?$prh'1Vrf[8@re19#rd4Wcrc%jQral(roj@LrpTpY!V5g\pAXgcq>U9jr;QZNs5!_SrVl`o +qu6Ejp\sjbnc&"VmJc>Kjo49=h>Z(+eGdbmao96X^&GM?Z2Ua%U]-kaPl?aCMuJ>-If=ZmErKtUCAqcC +@/aI2=T2>";Z9Ml:&[fb8cD9[8,bsV7.3L]6L@,16iKLQ7K,gV8H)3[9E%Zb;#XAlmg&Bh,ir8*>kl0uKn,DkVp&=^bq>U9jr;QZ" +s+14Gs8Murr;QTmq>U-fp&=L\n,D_Rkl0]Cir7d5f`'D"cMkrb`;[IL\,NZ3WW&[lT)OuRO8b(:K)U5u +HN%saDZ4DMAH$!9?2dt*mg&Bh,ir8*>kl0uKmf;kYnaZVO +rqHEfrql]mrr([Qh>dKQrqucmrqQKdrq69\rpTjRroj@Cro*k3rn.5!rltG`rkn`JrjDa/rhoairg`tO +rf6u7rdauqrce?\rbVRJraPk6r`oG(r`/qpr_WSgr_*5]r^ZrWr^HfSog?G[l9b/2r^?`Sr^QlWr^d#] +r_Orh9=hric=/rk/6JrlG)`rmUkurnRM3roO.C +rpB^Rrpg!\rqHEerql]mrr',%JcGQGrr)iorql]irq??arpg!VrpB^KroO.Are^W)rd=]hrc%jQrb;@@ra5Y0r`B)!r_`Ykr_Orh9=hric=/rk/6JrlG)`rmUku +rnRM3roO.CrpB^R!:^*[nc&4\p\ssequ6NmrS@M3s8N#srVl`oqYp6gpAX^`nG_hSli-&Gj8Rs8gA]\& +dJh>g`r5hh,@/ag_IRbPoogec+;%hu;[8k5O]Gmf)_To`"O_p\t$gqu6QkrjVoYs8;orrr2lqr;QQlp\smco`"@Z +mJcGNk5OE?hu;@/f)F(rbPoN\_>_"EZi70-V#HtbRJr5hP$;uTVm +:B!oc8c)$W7fGgK6f:<160UZ66/=m)6i0:K7fGpW8cDB^:B")h;uTer>5hh,@/ag_IRbPoogec+;%hu;[8k5O]GmJu_WnF6GLrq69brqcWkrr)`nj8\';rr2oq +rquclrqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5ZrkJHBrj)O*rhBC_rg3VFreg]/rdFcjrcA'Urb;@C +ra>_1r`T5#r_relr_EGcr^m)Zr^QlUnjDG(qa'@0r^$KLj?iN,r^HfUr^ZrZr_*5cr_NMkr`/r#r`oG1 +ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWk +rr)`n\,V$Zr;Zcqrr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl+lOrj_s5riQ0orgj%Trf@&9 +re:?"rcnE`rb_XKral(:r`oG*r`/qrr_NMgr_*5^r^ZrWr^HBFj$NW/k!8o3i'R*(r^HfUr^ZrZr_*5c +r_NMkr`/r#r`oG1ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fYrm:Yprn7;.ro3q=rp0RN +!:U$YnG`%Yp&=^bqYpBkrVQTSs5i/,I/\?hErKnSB`;N@?iF:/=T2;!;>sAj9`@Z`8cD3V7JK7+6JXp*6K(9+6iKOO +7fH!Y9E%Wa:]=8k<;p#!>Q/"/A,^-?D#SJSGQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gnf`'e- +ir8'=li-;NnG`%Yp&=^bqYpBkrVQT's+14Js8N#srVl`oqYp6gpAX[_nG_hSli-#Fir7j7f`'A!ci2#b +_u@FM[f3Q2XT"mlS,S`QNrFn7KDp8tGQ)X^D#S,IA,]j7>Q.b(<;obo:]=&e9)_E]7f,XL6et)b5i"d% +6iKOO7fH!Y9E%Wa:]=8k<;p#!>Q/"/A,^-?D#SJSGQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gn +f`'e-ir8'=li-8On,`%Jrq$-^rqHEgrql]nqu5XUi;`fUrqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(t +rm1Sbrkn`Lrj;[.ri5sjrgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NK +j$N`2f0B=%!C9$36MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[ +WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg/Ln,DnWp&=^bqYpBkr;6K&s+14Js8N#sr;QTmqYp6gp&=O] +n,D\QlMflDiVq^5f)F.tci2#b_u@CL[/R9.WrA[jRf8QNN;eS2JGsloFoH@ZC]7rF@fB^5>5hV&;Z9Ml +:B!oc9)_B\7fGjU7/0.06N0:&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^d +JGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg,MmfDnGrpp']rqHEgrql]mqu5XUi;`fU +rqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm1S`rk\TIrj2U,ri#ggrgEbLrepc0rdauorcS3ZrbDFE +raGe3r`T5%r_i_kr_5hh, +@K'j;CAr2OFoH^dJGt<&MuJq>RJriXW;`t!Zi7Z;_Z%RSci2Dmf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBk +r;6K&s+14Js8N#sr;QTmqYp6gp&=O]n,DYPl2K`Bi;VR3f)F+sci1r`_>_.IZi7-,W;`FgRJrELMuJG0 +JGsloFoH@ZCAqiE@K'R3=oMM%;Z9Jk:&[fb8cD6Z7K,^J6fp`46.A1!60:N,6iKLQ7K,gV8cDB^:&[ug +;Z9bs>5hh,@K'j;CAr2OFoH^dJGt<&MuJq>RJriXW;`t!Zi7Z;_Z%RSci2Dmf)FM)i;Vd9l2L#LmfDnG +rpp']rqHEgrql]mqu5XUi;`fUrqucmrqcWgrq69\rpTjProsFBro!e2rmq(srm(M^rk\THrj2U,rhoae +rg<\Jreg].rdXolrcA'Wrb2:Ara>_1r`T5$r_i_kr_";#X5h9`@W_8H)*X7K,^M6g6r:6-V[j +5lO(36Mj.L7/fXS7fGpW8cDE_:B")hlJ.1AH$6@DuOhWG5d!jKDp]+OoC^HSc5McXT#L(]DfVF +`W"-]dJhYph#?41ir80@li-APnc&1[pAXpfqu6NjrjVoYs8;orrr2ipqu6HkpAX^`nc&"Vli-,Iir7j7 +h#>h&d/M;h`W![P]Df)7XT#*rSc4uTOoC19KDpB"G5cO]DuODKAH$!9>lIk)lJ.1AH$6@DuOhWG5d!jKDp]+OoC^HSc5Mc +XT#L(]DfVF`W"-]dJhYph#?41ir80@lN$ASn*g8Grq-3`rqcWkrquZmj8\';rr2oprqcWirq??_rp]pT +rp0RIro3q6rnIG%rm:Yhrl"fNrk&07riH*qrg`tRrfI,8re(3!rcS3[rb_XIrac"9r`oG)r`/qor_EGd +r^m)[r^QlUr^?NKlpCS8bs:tfr^#d8qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4Irc.p[rdOiu +reUQ8rg*PRrh]UpriuI7rkSNOrltGirm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZm\,V$Zr;Zcqrqucl +rqZQerq$-YrpKdOroj@@rndY/rm^qorltG\rkJHEriuI(rh]Uarg*PFreUQ+rdOihrc.pSrb)4@ra>_1 +r`K/"r_WShr_3;_r^d#Xr^HfSpd=C7qa&(ar^#d8qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4I +rc.p[rdOiureUQ8rg*PRrh]UpriuI7rkSNOrltGirm^r%rnm_7roj@H!:BmUmf)_To`"R`q>U9jr;6KR +s5n/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_U5k@8'6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7 +B)ZZHEW1+[If=ruM#NJ7Q2[U9jr;6K& +s+14Js8N#sr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/eGdhobl5NZ^](hDYl:[%V#Hn`QMusEM#N&+If=Kh +EW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@66FfAD6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7 +B)ZZHEW1+[If=ruM#NJ7Q2[cNs8N#srVl`oqYpn/HA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:B")h +<;oqt>5hn.A,^*>D>nPSFoHggK)UQ)O8bFDS,T2^WrB7%\c0>B_u@jYci2Dmg]$+0ir80@l2^5QmdC)D +rq-3`rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Serkn`Lrji$4ri5sm +rgNhOrf@&6rdk&srcS3[rb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZ +r_3;cr_WSmr`9#$ra5Y6ral(Grc.p[rdFctreLK6rfmDNrhKImrilC4rkABLrlb;ermUl$rndY5roj@H +rpKdTrq$-^rqZQjrqucorr0D,Jc>cNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ6fp_G5itE46i0:N +7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFoHggK)UQ)O8bCCRf9)]WrB7%\c0>B_u@jYci2Dmg]$(/ +iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Se +rkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5] +k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKImrilC4rkABKrlb;e +rmUl$rndY5roj@HrpKdTrq$-^rqZQjrqucorr0D,Jc>cNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ +6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFT-[eJc:H(O8bCCRf9)]WrB7%\c0>B +_Z%aXci2Dmg]$(/iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RI +ro*k5rnIG$rm1SerkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[ +r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKIm +rilC4rkABKrlb;ermUl$rndY5roj@HrpKdTrq$-^rqZQjrqucorr0D,Jc>cNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm +:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFT-[eJc:H(O8bCC +Rf9)]WrB7%\c0>B_Z%aXci2Dmg]$(/iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWi +rq??_rp]pTrp0RIro3q6rnIG$rm1SerkeZJrji$4ri5smrgWnPrf@&6rdk&rrcJ-Yrb_XHraPk6r`T5% +r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y7rau.Hrc.pZrd=]r +reLK6rg!JPrhKImrilC4rkABKrlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr0D,Jc>cNs8N#s +rVl`oqYpn/H +@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-A,^*>D>nPS +FT-[eJc:H(O8bFDS,T2^WrB7%\c0>B_Z%aXci2Dmg]$+0ir80@l2^5QmdC)Drq-3`rqZQjrqucorr1sX +j8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$rm1Serkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[ +rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y7 +rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4rkABLrlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrquco +rr0D,Jc>cNs8N#srVl`oqYpn/HA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:B")h<;oqt +>5hn.A,^*>D>nPSFoHggK)UQ)O8bFDS,T2^WrB7%\c0>B_u@jYci2Dmg]$+0ir80@l2^5QmdC)Drq-3` +rqZQjrqucorr1sXi;`fUrquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHDrilC%rhTO`rg*PE +reUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rp'LNrp]pZ +rq??erql]mqu4))JcGZJrr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrjr*5ri5snrg`tR +rf@&7re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rosLO!UfCT +nG`(ZpAXmequ6Njro=%:s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1eGdhobl5Q[^](hDYl:^&V>d%b +QN!!FM#N&+If=NiErKtUB)Z<>?iF:/=8l5!;#X5h9`@W_8H)*X7/K@66Mj'n5k[JB60:N56i0:N7fGpW +8cDE_:B")hQ/"/A,^*>DZ4\UG5csiK)UT*OT(UGSc5JbX8]@&])KJD`;\![d/MPoh#?41ir80@ +li-APnc&1[pAXpfqu6NjrjVoYs8;orrr2ipqu6HkpAX^`nc&"Vli-,Iir7j7h#>h&d/M8g`;[ON])Jr5 +X8\spSc4rSOT((8KDp?!G5cO]DZ48IA,]j7>Q._'Q/"/A,^*>DZ4\UG5csiK)UT*OT(UGSc5JbX8]@&])KJD`;\![d/MPoh#?41 +ir80@lN$ASn*g8Grq-3`rqcWkrquZmj8\';rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM&rm:Yhrl+lP +rk&07riH*rrgj%TrfR29re(3"rc\9]rbqdKrac"9r`oG)r`/qor_EGdr^m)[r^QlUr^?NKksGA8bs;(i +r^#[5qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4KrcA'^rdXp"reUQ9rg3VTrhf[rriuI7rkSNP +rltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWkrquZm\,V$Zr;ZcqrqucmrqcWfrq-3[rpTjProj@@rnm_1 +rm^qorltG]rkSNFriuI(rhf[crg3VHreUQ+rdXojrc8!Vrb)4@ra>_1r`K/"r_WShr_3;_r^d#Xr^HfS +pd=:4r^"Lgr^#[5qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4KrcA'^rdXp"reUQ9rg3VTrhf[r +riuI7rkSNPrltGirm^r&rnm_7roj@I!:KsWn,DkVo`"R`qYpBkr;6KRs5n(df.Pk`W!^Q]`,8:Y5Y?uT)P,VP5^@lIn*!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@/aa:B`;rLFT-OaJ,Y-#MZ/e< +R/W]VVuEgtZi7W:_#D=PcMl8kf)FJ(hu;[8l2L&Kn,DkVo`"UaqYpBkr;6K&s+14Js8N#sr;QTmqYp6g +p&=L\n,DYPl2K`Bi;VO2f)F+scMkf^_>_+HZi7-,VuE:eR/W9JMZ/;.J,X]lF8g+WB`;QA@/aF1=oMJ$ +;Z9Jk:&[ca8H)-Y7K,^M6fUMV5i>!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@/aa:B`;rLFT-OaJ,Y-# +MZ/eRJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg/Ln,DkVo`"UaqYpBk +r;6K&s+14Js8N#sr;QTmqYp6gp&=L\n,D\QlMflDi;VR3f)F+scMki__>_.I[/R6-W;`FgRJrELMuJG0 +J,X`mFT-4XCAqiE@K'R3=oMJ$;Z9Ml:B!lb8cD9[7fGjU7/K@36Mj'u5lO(-6N0@O7/fXS7fGsX8cD?] +:B")h;Z9_r=oM_+@K'j;CAr/NFT-RbJ,Y0$MuJq>RJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg,M +mfDnGrpg![rqHEgrql]mqu5XUi;`fUrqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(trm1Sbrkn`Lrj;[. +ri5sjrgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NKj$N`2f0B=%!C9$3 +6MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XU +ci2Dmf)FP*iVqp;lMg/Ln,DnWp&=^bqYpBkr;6K&s+14Js8N#sr;QTmqYp6gp&=O]n,D\QlMflDiVq^5 +f)F.tci2#b_u@CL[/R9.WrA[jRf8QNN;eS2JGsloFoH@ZC]7rF@fB^5>5hV&;Z9Ml:B!oc9)_B\7fGjU +7/0.06N0:&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[ +WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg,MmfDnGrpp']rqHEgrql]mqu5XUi;`fUrr)iorqcWgrq??_ +rp]pSrp0RFro3q7rn.5!rm1Sbrkn`MrjMg2riH*lrgWnQrf6u7re(2trce?^rbVRIraYq7r`fA(r`&ko +r_NMer_!/]r^QcRpd*pT)P)UOT(.:K`6H"H2_maD>n5J +AH$!9>lIn*<;oep:]=)f9)_EW7fGgQ6et*+60:H362a./6N0@L7/07N8cDB^:&[rf;Z9Yp=oM\*@/a^9 +C&VuKF8gF`If>$"MZ/_:Qi$"MZ/_:Qi_2r`];$r_remr_EGcr^luWr^QlTog@Y(r^#d6r^$BIj?i`2qaCK +jo46t*e,IVkaSs*V]`,>i&)I/\?hE;j\QC&VT@?iF=0=8l5!;>sDk:&[fb +8H)-Y7fGjU7.ip]6L$o16iKLQ7K,dU8,c'Y9E%Zb;#X>k<;otu>lJ+0@fC*@D#SDQGQ*!hJGtE)NrG7A +SGo5]VuEn![Jmi<_u@aVc2Q2kfDaS)iVqslIh( +k<;otu>lJ+0@fC*@D#SDQGQ*!h +JGtE)NrG7ASGo5]VuEn![Jmi<_u@aVc2Q2kfDaS)iVqsdKQ +rqucmrqQKerq??^rp]pTroj@Cro*k4rn.5"rm(Mbrl"fLrjMg1ri5smrgj%RrfI,;re(3!rd"K_rbh^N +raYq8ra#M*r`/qrr_WShr_3;^r^ZiTr^HfSpd;b^l9b85r^?`SqaUQTr^d#^r_EGhr_resr`K/*ra>_8 +rbMLNrc.p_rdOj!repc;rg!JRrhKImrilC2rk8rilC%rhKI`rg!JErepc. +rdOilrc.pTrbMLCra>_2r`K/"r_remr_EGdr^d#YqaUQRr^?NKVaC/Gr^?`SqaUQTr^d#^r_EGhr_res +r`K/*ra>_8rbMLNrc.p_rdOj!repc;rg!JRrhKImrilC2rk8U0gpAXX^nG_kTkl0]Cir7g6gA]Y%d/M5f`W!XO\Gif5X8\sp +TDk2VP5^L@K`6K#HiA*cE;j\QAc?0dOpZMqE6^])4Ob5Tceec+8$ +hYuO6k5OTDmf)_To)A@^p\t!fqu6NmrNZBRs7u]orVl`oqu6Ejq#:!do)A.Xmf)GLjo49=hYu7.ec*qp +bPoK[^](bBZMpp(V>d+dQi<0INrF_2J,XfoF8g.XD#S#F@fBa6=oMM%<;o_n:B!rd8cD9[8,c!W7K,^G +6a/oM6iKLQ7K,dU8,c'Y8cDE_:B")h<;oqt=oMe-@fBsdOpZMqE6 +^])4Ob5Tceec+8$hYuO6k5OTDmf)\UncA=Prq??crqZQjrqucoh>c=2qu-NlrqcWhrqHE`rpg!Vrp'LG +roF(:rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK*rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGc +r_!/]r^QcRr^?^?jrquclrqQKe +rq$-ZrpTjOroa:Aro!e2rn%.rrlkA_rkSNFrjDa.ri#girgNhNrf@&6re(3!rc\9]rbqdLrac"8r`oG* +r`B(sr_WShr_*5_r^m)YqaLKPnjBrSogAUEr^H]Rr^m)]r_*5cr_WSlr`B)%r`oG0rac"ArbqdWrc\9i +rdt-)rf@&CrgNh[rhoaurjDa:rkSNSrlkAgrn%/(ro!e:roj@HrpTjV!:p6_oD\L`q>U6fr;QZNs5!_S +rr2lqr;QQlq#:$eo`"F\n,DYPkl0`Di;VO2g&BCucMkuc_>_.I\,NW2WrAgnSGnlSOoC7;L&QT$H2_pb +E;jVOB)Z9=?N+1.=T27u;>sAj9`@]a9)D-X7efCH6cVOb6MNqC7/KIQ8,c-[9E%Wa:]=5j;uTnu>5hk- +@fC!=CAr2OFoH[cJ,Y-#MZ/b;QN!ERV#ICnYl;-2]`,bHb5TZbdJhhuh>Z@3k5OTDli-APo)A:\p\t!f +qYpElrVlf$s+14Gs8N#srVl`oqYp9hp\sgao)A+Wli-,Ik5O</J,X`mFT-7YCAqiE@fB^5>Q.b(;uTYn:]=&e9E%Q\8,c!Q7/0-[6MNqC7/KIQ8,c-[9E%Wa +:]=5j;uTnu>5hk-@fC!=CAr2OFoH[cJ,Y-#MZ/b;QN!ERV#ICnYl;-2]`,bHb5TZbdJhhuh>Z@3k5OTD +li-APnc8:_o^r.WrqZQirqucorr1aRh>dKRqu-NjrqQKerq-3\rpTjQrosFFro*k5rn@A#rm1Serkn`M +rjr*5ri?$qrh'1Xrfd>@reLK(rd4Wfrc.pSrb2:Ara>_1r`T5#r_relr_EGdr_!/\r^ZrWqaLKPnjCYg +p-SF>qaCEPr^QlWr^d#\r_*5cr_NMkr`/r#ra#M2rac"Arb_XSrc\9frdk'(rf-o@rgEbXrhf[rrilC5 +rkABLrlb;ermUl#rn[S4roa:Frp9XQrpp'\rqHEfrqcWmqu3l#JcGQGrr2fnrqcWhrqHEarpp'Wrp9XK +roa:>rndY.rmUkmrlb;YrkJHDrilC&rhf[ergEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMg +r_3;`r^d#Yr^QcRr^?U0gp&=R^nG_kTli-,Ij8S!9h#>n(df.Pka8X!U^AbP>Yl:^&T`1J\R/W3HMuJJ1J,XcnFoH@Z +D#S,I@K'X5?2dt*_Z%UTcMl8kf)FJ(hu;[8kl0lHmf)_T +oD\F^q#:*gqYpHjriuKSs7u]orqlZnqYp?iF@1=T2>";Z9Ml:B!rd9)_E]8H)*U7K,^G6d%gh6i0:N +7JfRR8H)3[9)_N`:&[ug;Z9_r=T2V*?iFL5B`;fHE;k"ZHN&EnLAm,1OT(XHSc5;]X8]@&[Jmo>_Z%UT +cMl8kf)FJ(hu;[8kl0lHmf)_To)SFap%A=ZrqZQirr)`nh>c=2rr2fnrqcWirqQKdrq-3[rpTjProsFC +ro!e3rn%/!rm1Sdrl+lOrj_s6riZ6rrh'1Zrf[8?re^W)rd=]irc.pTrbDFCraGe5r`T5%r`/qpr_NMf +r_*5_r^coVr^QcRr^?NKcpIXspd=pHr^H]Rr^ZrYr^m)^r_^Hnqu-NjrqZQgrq??`rpg!Vrp0RJroF(:rn[S*rm^qnrlY5ZrkJHBrj2U,rhTOcrgWnMrf-o6rdauq +rcnE^rbh^Mrac":ra5Y-r`B)!r_`Yjr_U6irVQTMs5!_SrqlZnqu6Hkq>U*eo`"F\nG_hSlMfoEj8Rs8gA]\&dJh>g +`rlIn*sAj:&[ca8cD9[8,GdT +7K,^D6et*-6h<\E7/fXP7fGpW8H)3[9E%Zb:]=5j;Z9_r=T2S)@/a^9B)Z]IE;jqXI/\WpKDpi/OT(LD +T)PJ`VuEn![/RZ9_>_IRbPoogec+;%hu;X7jo4QEm/HMRo)A=]pAXmeqYpBkrVQT!s+14Gs8N#prVl]n +qYphu;@/f)F(rbPoN\_>_%F[JmB/VuEFiT)OuROT(4@/aF1=oMJ$;Z9Pm:]=)f9)_E]8H)-V7fGjU7.3M!6LR;@7/fXP7fGpW8H)3[9E%Zb:]=5j;Z9_r +=T2S)@/a^9B)Z]IE;jqXI/\WpKDpi/OT(LDT)PJ`VuEn![/RZ9_>_IRbPoogec+;%hu;X7jo4QEm/HMR +o)A:^p&Xm\rqZQirql]nqu5FOgAh0Orr)iorql]krqHEcrq-3ZrpKdProa:Aro!e3rn.5"rm1Scrl"fM +rji$7riH*rrh07ZrfmDCreUQ+rdXolrcJ-XrbMLGraYq8ra#M,r`9"sqb[8er_3;`qapZTr^QcRr^>+# +r'U?Lr^H]Rr^ZrZqb$i]r_<8dr`&ktr`];+ra>_8rb)4GrbqdXrcnElre19,rf@&CrgNhZrhf[rrj2U6 +rkABMrlY5drm^r#rn[S3roF(Arp9XPrp]pZrq69brqcWkrqucorr0)#JcGHDrr2oqrqucmrqcWgrq??` +rp]pTrp9XIroF(:rn[S+rm^qnrlP/XrkABBrj2U*rhf[frgNhNrf@&7re(3"rcnEarbqdOrb)4?ra>_2 +r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPb_8rb)4GrbqdX +rcnElre19,rf@&CrgNhZrhf[rrj2U6rkABMrlY5drm^r#rn[S3roF(Arp9XPrp]pZrq-9c!Vc?fqYpBk +r;QZorn@D(s8N#sr;QTmqYp9hpAX^`o)A+WmJc>Kjo49=hYu7.f)F%qbl5]__#CtF[JmB/WW&[lSc4uT +P5^C=LAlc'I/\BiF8g(VCAqlF@fBa6>lIk)sAj:&@T_9)_BY8,c!T7INY56hEeE7/fXP7fGpT +8Gc$Y9E%Zb:]=5j<;oqt=T2S)?iFO6BDuZFDZ4_VGQ*!hJc:E'MuJn=R/WZUU].7lYPts/]DfVFaSsB^ +d/MVqgA]t.ir8*>kl0uKnG`"Xo`"R`q#:-hqu6NjriZ9Ps7?9irr2ipqu6Hkq#:!do`"F\n,D_Rkl0]C +ir7g6gA]\&d/M8gaSs!S]Df5;YPtO#U]-h`Qi<0IMuJJ1Jc:&rGlDd`DZ4DMBDuB>?iF=0=T2A#<;obo +:]=)c9E%Q_8GbpV7f,XC7.3M37/fXP7fGpT8Gc$Y9E%Zb:]=5j<;oqt=T2S)?iFO6BDuZFDZ4_VGQ*!h +Jc:E'MuJn=R/WZUU].7lYPts/]DfVFaSsB^d/MVqgA]t.ir8*>kl0uKnG`"Xo`"Oap]:0brqcWkrquZm +gAfe)rr2oqrquclrqQKdrq69]rp]pUrosFFroF(:rnRM*rmC_jrlY5Wrk8U0gp\sganc&"Vli-/JkPjH>hu;F1ec+"rcMki__>_.I[JmH1Xo>*pT`1J\ +P5^L@MuJA.JGsrqFoHF\DuOJMB)Z9=?iF=0>5hS%<;obo;#X8i:B!ra9DD*U8(L-17RmAIpdtHXqb6l^ +r_WSkr`&ktr`];+ra5Y6rau.DrbqdVrcS3frdXp"repc:rf[8Nrh'1briQ1)rjDa=rkeZSrm(Mjrmh#' +rndY5roa:Frp0RPrpp'\rqHEerqZQjrqucoqu3buJcG?Arr2oqrqucmrqZQgrqHEarpg!Vrp0RJroa:> +rnm_1rmh"rrm(M_rk\TIrjDa1riQ0prh07\rf[8@repc.rdauqrcS3\rbqdMrau.=ra5Y0r`];%r`&ko +r_WSir_EGdqb-]Uqa].*r^Z`Tr_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&A +rg`t[rhKIpriuI1rk8rosFJrpTjWrq-3arqHKh!VuQjqu6NmrVQTJs4@;M +rqlZnr;QQlq#:$eo`"F\n,DbSli-,Ij8S!9h>Z%*eGdenao96X^](eC[/R9.W;`RkT)P&TP5^L@L]2r* +J,X]lFoHC[D>n8KB)Z6X/d:&%B\8cD947fZ'\84`_Ope1T\r_E>dr_`Ymr`9#" +r`K/)ra,S4rau.Drb_XSrcS3brdXp"reLK5rf[8Hrgs+`ri#h"rj;[8rkJHNrlP/crmUkurn[S3ro="A +rp'LNrpTjWrq-3arqZQiqu$Hlqu3buJcG?Arr2fnrquclrqQKerq-3\rpTjSrp0RIro="9rn[S*rm^qn +rlP/XrkJHCrj;[.ri#gkrgs+Trf[8@reLK*rdXolrcS3[rb_XKrau._(G[f3Q2XT#*rT`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\Q +C&VZB@fBa6?2e%,=T2>"<;oep;#=&c:&[ic9(GRB8G,OS9)M5hh,?iFO6 +AH$U6fr;QYns+14>s82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7gA]\&dJhAha8WpS]Df85hY'5hh,?iFO6AH$#Rrk/6>rilC&rhf[frgWnQrfI,ra>_3 +ra#M+r`K/$r`&kpqb[/cr_E>boh>-RnkB$W!)EGeqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![ +rd4Wnrdb!(repc;rg*PQrh07fri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQi +rql]nqu3PoJcG6>rr2fnrql]krqZQfrq69]rp]pSrp0RHroF(:rn[S,rmh"prlkA^rkSNGrjVm2ri?$q +rh07[rg*PFrf$i4rdaurrd4Wdrc.pUrbDFEraYq8ra,S0r`T5&r`B(ur_iViqbR2dqb?`Wpe10Or_<8b +qbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07fri?%&rjVm=rkSNR +rlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQi!;cfoqu6Qkrm^tts8N#prVl`oqu6Hkp\smco`"@Z +mf)VQl2KiEir7g6gA]_'dJhGjb5T9W^Ab_CZi70-WrAdmTDk>ZPQ$XBMuJG0K)U5uGlDjbEW0kTCAqlF +AH$';?iF@1>5h\(sDh:]=,O:&@]b:B45h;#X>h;Z9YphYu7.fDa1scMkuc_Z%:K +])K&8YPtR$U]-nbS,SWNO8b(:L&Q]'If=TkFoHC[DZ4DMBDuH@@fBa6?2e%,=oMJ$j;#=&f +:?G:J:B"&d;#X>h;Z9YpBre^W-rdaur +rcnEbrc%jSrbVRHral(;ra>_3r`oG*r`K/$r`/qsr_reoqbc0Gr_WYnr)3Mmr`&ksr`B)$r`T5*ra#M2 +raGe:rb)4Hrbh^SrcS3crdFcrre:?.rf@&Brg*PUrhKIiriZ7+rjMg?rk\TQrltGhrmUl"rn[S3roO.C +rp'LOrp]pWrq69arqHEgrql]mrr)`nW;hGKnGiLequ-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+ +rmUknrltG]rkeZKrjMg3riZ6trhBCarg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5& +r`B)!r`&kqr_iVjh,+)JqbmDlr`&ksr`B)$r`T5*ra#M2raGe:rb)4Hrbh^SrcS3crdFcrre:?.rf@&B +rg*PUrhKIiriZ7+rjMg?rk\TQrltGhrmUl"rn[S3roO.Crp'LOrp]pWrq69arqHEgrqc]n!W;lprVQTD +s3^lGrqlZnr;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+W;`OjT)P/W +Pl?dDN;eY4Jc:/uI/\5h\(=T2D$2raYq@rbDFMrbqdWrc\9grdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAf +rm^r"rndY4ro3q@rp'LLrpTjWrq-3arqQKgrql]mqu-NnV>l,HmJm1bqu-Nlrql]jrqQKerq-3[rpTjQ +rp'LHro3q8rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbMrfI,.r`oG+r`T5&r`B)"qc3Vpku7R\qc3Vrr`B)$r`T5(r`oG.qd9>2raYq@rbDFMrbqdWrc\9g +rdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4ro3q@rp'LLrpTjWrq-3arqQKg +rql]m!<)iorr1=FcN!nCqu-NlrqcWirqQKbrpp'XrpKdOrosFDro="8rnIG(rmUkmrlY5ZrkSNFrjVm2 +riH*trh9=^rgEbLrfI,5hb*>lJ%.?iFI4@K'j;B)ZHBC]85NE;k"ZGlE$gJ,Y*"LAm/2O8b@BRJrcVU&M"iXT#I' +\,O#=_#D=Pb5T`de,Itug]$+0ir8'=l2L#Jmf)_ToD\C]q#:*gqYU3irVQSjs+148s8N#prVl`oqYplIt,>5h\%=T2Cd5hb*>lJ%.?iFI4@K'j;B)ZHB +C]85NE;k"ZGlE$gJ,Y*"LAm/2O8b@BRJrcVU&M"iXT#I'\,O#=_#D=Pb5T`de,Itug]$+0ir8'=l2L#J +mf)_ToD\C]q#:*gqYU0jr;llqqu5"CcN!nCqu-NlrqcWirqQKcrq-3\rp]pSrp0RGroF(;rndY.rmq(q +rlkA_rkeZKrk&09rilC(rhTOergs+Trfd>Brf$i3rdt-"rd=]jrcA'ZrbqdQrbDFGral(>raPk7qd95+ +r`oG,r`\Phr`];*rEKA.>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_ +V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3irVQSjs+148s8N#p +rVl`oqYp@fBd4?i+..>lIt,>3T2h>5hb'>lJ%.?i+71@fBm:Ac?BB +CAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@ +li->OnG`"XoD\F^q#:*gqYU0jr;llqqu5"CbQ%A9rql]krqZQfrq??`rp]pUrpKdNroa:Aro!e3rn@A$ +rmC_jrlG)WrkJHErjMg2riQ0trhBCargNhQrfI,=repc/rdk&urd4WhrcS3[rc%jTrbVRKrb;@Eral(= +raPk8ra5Y4oj@K#pg=#.ra,Y6!F]F9@fBm:Ac??AC&VoID#SAPE;jkVFoHXbHiANoK)UH&MuJb9OT(UG +S,T&ZUAh+jXo>U)[f3o<^])1NaSsKadJhYpgA]n,i;Vg:kl0lHmf)\SnG`(Zp&=^bq>U6iqtU,^s+145 +s7lQlqu6Hkq>U-fpAX^`nG_nUmf)MNkPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQ +OT(7=MuJD/Jc:/uHiA9hFoHC[E;jeTD#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?iFL5@fBm:Ac??A +C&VoID#SAPE;jkVFoHXbHiANoK)UH&MuJb9OT(UGS,T&ZUAh+jXo>U)[f3o<^])1NaSsKadJhYpgA]n, +i;Vg:kl0lHmf)\SnG`(Zp&=^bq>U6iqtg6lrVaq>bQ%S@qu-Nlrql]krqQKdrq69^rpg!Vrp0RJroa:? +rnm_1rmq(trm1SfrlG)VrkABCrjMg1riH*trhBC`rgWnPrf[8Are^W0re(3#rdFclrc\9_rc8!Wrbh^P +rbDFGqe,n?rakk7raPY2qdT>1rac(A!G5s@BDuWECAr)LDZ4VSErL4\G5cgeI/\ZqKDpW)M>iS8P5^aG +S,T&ZUAh+jX8]@&[f3l;^Ac%La8X<^ci2Dmf)FJ(hu;X7kPj`Fli-APnc&.Zp&=^bq#:-hqu6NmrVQSd +s+145s8N#prVl`oqu6Hkq#:!dp&=R^nc&"Vli-/JkPjK?hu;F1f)F.tci2/faSs*V^Ab_C[f3N1XT#0t +UAgb`S,S]PP5^OAM>i;0KDpE#IK"QlG5cU_ErL%WDZ4MPCAqoDBDuNBAb]d7@eaC/@eaI4Ac?<=BDuWE +CAr)LDZ4VSErL4\G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh+jX8]@&[f3l;^Ac%La8X<^ci2Dmf)FJ( +hu;X7kPj`Fli-APnc&.Zp&=^bq#:-hqu6NmrVc]rrr1+@bQ%S@qu-Nlrql]krqQKerq??`rpp'WrpKdO +roj@Bro3q7rn@A&rmLemrlb;]rkSNHrk&09riuI*rhf[irh'1Zrg*PHrf@&:re^W,rdk&urd4Wirc\9^ +rc7mSrb_XNrbMLJrb;7BratV1qe#h?rb2@I!GZBKC]8/LD>S8NEW1%YG5cacHiANoJc:<$M>iJ5O8b=A +QiZQN!'HO8b(:M>i/,Jc:/uHiAnANC]8)JC&;QBB('=.B)ZHBC&VlH +C]8/LD>S8NEW1%YG5cacHiANoJc:<$M>iJ5O8b=AQi_LSbPolfdf.hs +gA^"/ir8$#`rm:Ymrn7;+rnm_6roO.Crp0RNrp]pWrq$-^rqHEfrqcWkrquZlqu35f +JcFp5rr2]krqucmrqcWhrqHEbrq-3[rp]pSrp0RIroO.#VrkJHErjMg3riZ7# +rhf[frgs+Zrg!JGrf@&:re^W/rdk'!rdOinrd+QgrcJ-[rc.pVqeuIOk&(!5rbq[Qrc.pYrcJ-ard"Ki +rdOirrdk''reUQ3rf@&Arg!JQrgs+^rhf[oriZ7+rjVm=rkJHMrl>#`rm:Ymrn7;+rnm_6roO.Crp0RN +rp]pWrq$-^rqHEfrqcWkrquZlrVcisrlb>bs7lTjrVl`oqYpn(e,I\mbl5]_`;[ON]Df>>ZMq',XT#*rU]-nbS,ScRPl?dDNW+k8LAll*K)U<"If=`oHN&0gG5cX` +FT-@;EW1"ZF9-K*rcS3`rcnEgrd=]ordb!"re19*repc9rfI,Drg3VRrh'1brhf[rric=,rj_s>rkJHN +rlG)_rm1Smrmq)(rndY4roO.BrosFLrpTjVrq$-^rq??drqZQiqu$Hlq#6ocJcFp5q#:0hrquclrqZQg +rq??`rq$-ZrpTjRrosFFroO.;rndY0rmq(trm1SfrlG)WrkJHErj_s5ric=&rhf[irh'1Zrg3VKrfI,= +repc1re19&rdausrd=]krcnEcrcS3^rc?n8rcA'\rcS3`rcnEgrd=]ordb!"re19*repc9rfI,Drg3VR +rh'1brhf[rric=,rj_s>rkJHNrlG)_rm1Smrmq)(rndY4roO.BrosFLrpTjVrq$-^rq??drqZQiqu$Hl +qYgNprlb>\s8N#prVl`oqu6Hkq>U-fpAX^`o)A.Xn,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG +[f3W4YPtX&W;`UlT`1M]Rf8QNP5^OANW+h7M#N),K)U9!JGt#sI/\HkH2`'`FmjGIFoHUcGl`29rd+Qk +rdFcrrdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOkriH+&rj2U4rk8rj2U-riH*trhTOdrgj%WrfmDFrf@&IrcnEfrd+QkrdFcrrdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOkriH+&rj2U4 +rk8riuI+riQ0srhKIc +rgs+Yrg<\KrfR2@rf-o8re^W/re19'rdalqpjW*gpjE'hpjW3l!.autre(3(reCE/repc8rf@&@rfd>K +rgNhXrh07drhf[sric=+rj_s=rkABJrl+lXrm(MirmLf!rnRM1ro!e:roa:HrpBUOrpp'\rqHEerqZQi +rql]mrr)`nQN)O9hZ*TSqu-Nlrql]krqZQgrqHEarposTrp9XMroa:Aro!e5rnIG*rmLemrm(Marl+lQ +rkABDrj_s4ric='rhf[irh07^rgWnSrfd>Drf@&KrgNhXrh07drhf[sric=+rj_s=rkABJrl+lXrm(MirmLf!rnRM1ro!e:roa:H +rpBUOrpp'\rqHEerqZQirql]mrr)`nqZ"\;_Z0W7qu-NlrqlThrqZQgrq69_rpp'XrpKdQrosFFroF(: +rndY0rmq(trm:YhrlP/[rk\TJrk&0rf$i6reUQ.re:?) +on*0oqgeZson*0r!/1H-L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\bVZ*RoXo>R([/RN5]DfPD_>_LS +b5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6NmrVQS[s+14,s8N#prVl`oqtp6h +q>U0gp&=U_o)A.Xmf)VQl2KlFjSn*:hYu=0f)F.td/M;hao9?[_>_1J]Df8=!VZ*=hTDkD\ +R/WENPl?jFOT(:>N;e_6M#N/.L&QbuK)U>uJGt,mK)UH&L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\b +VZ*RoXo>R([/RN5]DfPD_>_LSb5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6Nm +rVQTjs2k;Xs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUli-/JkPjK?i;VX5g&BV&eGdhocMl&e`W!dS +^](nF\Gio8Yl:g)XT#-sV#I%dTDkA[Rf8WPPl?mGOT(=?NrG":MuJV/M#N2/LAQ](LAlu'M#N83MZJ`o +rf$i:rf@&?rfd>Hrg*PPrg`t[rh07drhoasriZ7)rjDa8rk/6FrkeZRrlkAerm:Yormq)%rnm_6ro3q? +rosFJrpTjUrpg![rq69arqQKgrqcWkrquZlqu2o]JcFU,rr2]krqucmrqcWirqQKdrq69_rpg!WrpTjP +rosFFro3q8rnm_.rn%/!rm:YirlkA\rkn`Mrk/6?rjDa0riZ7%rhoakrh07_rg`tVrg*PJrfd>Crf@&= +rf$i7regK,reLK-qh>$(reL9)reg]5rf$i:rf@&?rfd>Hrg*PPrg`t[rh07drhoasriZ7)rjDa8rk/6F +rkeZRrlkAerm:Yormq)%rnm_6ro3q?rosFJrpTjUrpg![rq69arqQKgrqcWkrquZlqu6HlaoB$Rrr2]k +qtpBhrqQKerq??`rposTrp9XMroa:Bro*k7rn[S-rmq(trm1SgrlP/[rk\TKrk8_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\pAXgcq"speqtU-erfdA5s4IAN +rqQHhqu6Hkq#:$epAX^`o)%nTm/H>MkPjTBiVqd7h>Z.-f)F.tci22gao9?[_>_4K^&GSA[f3T3Yl:d( +X8]!qV#I(eT`1P^SGnrUR/WENPl?mGP5^R*O8G%_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\pAXgcq"speqtU-erqHH7s1JC/ +rqlZnr;QTmqYphu;I2g&BV&e,I_nc2Poc`r> +[/RB1YPt['WrAsrV>d7eT`1P^SGnuVRJrTQQi<roa:FrpB^Qrp]pXrq-3_rqHEerqZQi +rql]mrr)NhPQ-46f`1jJqu-Nlrql]krqZQgrqHEbrq-3\rp]pTrpB^Lroj@Dro3q7rn[S,rn%.urm:Yh +rlb;\rkn`NrkABDrj_s7rj)O,riQ1"ri#gmrhK@`rgs+ZrgNhSrg<\Org*>EpltZ@rg*PMrg<\QrgNhV +rgiqZrhKIhri#grriQ1'rj)O1rj_s=rkABIrl"fUrlb;crm:Ynrmq)%rn[S3ro3q>roa:FrpB^Qrp]pX +rq-3_rqHEerqZQirql]mrr)Nhp]&A8\c;[.qu-NlqtpBhrqZQgrq??arq-3[rp]pUrp0RKroj@Bro3q7 +rndY.rn%.urmLelrltG`rl+lQrkSNIrjr*U6iqtpU0gpAXaao`"C[ +nG_nUli-2Kkl0ZBir7j7hYu7.fDa7udf.Slc2Pf``W!^Q_#D(I])K2<[/RU6iqtpMkl0`Djo46d:ZU\gkdV>d=lVZE]nri,mtriQ1&ric=+rj)O2rj_s=rkABHrk\TPrl4rZrm(Mh +rm:Yprn%/&rn[S2ro*k#Vrk\TLrkABCrjVm7rj)O-ric=( +riH+"ri,mqrhfRhrhT"XqkX4frhf[mri,mtriQ1&ric=+rj)O2rj_s=rkABHrk\TPrl4rZrm(Mhrm:Yp +rn%/&rn[S2ro*krjMg6rj2U0 +qlp(&riPsrri5amql9FlriH1'!NrU&Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb* +h>Z=2ir8$Z.-g&BP$e,I_ncMl&eb5TE[`;[UP^](nF]Df>>[f3]6Zi79- +Yl:g)Xn\srWq`RjWq`XoXo>L#Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb*h>Z=2 +ir8$$g]$%+i;Vd9jSnBBl2L#GmecMQoD\C]p\Xa_qYpBhr;QZire1<& +s31NZ1.f`'J$eGdhoci25hbPoZ`aSs0X +`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfJB^&GbF^])%J_>_@O`;[aTaSs<\bPofdci2;jeGe%u +f`'Y)h>?.0j8S-=kl0iGlhg,InG`%Yo`"U^q"speqtpU0gp&=U_ +oD\:ZnG_nUmJcJOlMg#Hk5OH@ir7m8hYu:/gA]e)ec+(tdJhMlcMl&eb5TN^aSs3Y`W!gT_Z%CK_#D+5 +^AbnE^];1O_86,frl"fTrl4rYrlP/^rlkAdrm:YlrmUksrn7;)rnIG/ro!e8roF(@roj@Hrp0RNrpTjU +rpg!Zrq-3_qtU0drqcWkqu$Hlp&9XEJcEsop&=shqu$HjrqcNfrqQKcrq-3]rpg!WrpTjRrp9XLroj@D +roF(rknWOrl+cS +rlP/^rlb;crm(Mirm1SkrmUktrn%/&rn[S1qr%J6roF(ArosFIrpB^QqsaUUrq$-^rq??crqZHfrqlTj +rr)NhjoU0gp\smcp&=U_nc&%W +n,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0gA]e)f`'G#eGdnqdJhMfci25ec2PrUbPTN_c25f`ci2;jdJhSn +e,Insf`'S'gA]n,h>?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[p&=[ap\sseq>:$fqtU-brnmats/5ni +rqlZnr;6BjqYU*fp\smcp&"@[nc&%Wn,DbSm/H;Ll2KiEjo4??ir7m8hu;I2h#?(-g&BY'fDF+teGdqr +dehGkd-8mUd/22jdK.eErmUbormh#"rn.5'rnIG-rn[S2ro*k9roF(?roX4Erp0RMqsOIQrpg!Yrq$-^ +rq??crqZHfrqlTjrr)EeJcGWIJcEXfp&=jerquZjrqcNfrqHEcrq60[rpg!WrpTjSrp9XLrosFEroO.? +ro3q8rnm_2rnRM-rn7;'rn%%trm^qrrmL\krm9oUrm:PirmLepqpbVqrn%/%rn7;*rnRM/rnm_6ro3q< +roO.ArosFJrp9OMrp]pWrpp'[rq69arqHEfqtg?")g[Ekqg\'A$h>?+/i;VX5iVqj9jSn9?k5OTD +l2KuIm/HDOmf)\PnG`%Vo_A1[q>:$fqtprp'LKrp9OMqsaUUrq#pXqtU0d +qtgrp'LKrp9OMqsaUUrq#pXqtU0dqtgkPOKBlMg,K +m/-5MnG_nUnG_tWoDA1WpAXgcq>:$fqtpjSn34ipYk!ir8!;jSn9U0dp\sm`p&=U\oD%kQnG_nUnGD\L +mdKQ:$fqtpU0dp\smW +p&"CDoCqkXo^qhLqtC$`qtU'aqtg*bq#(-im/DS9eGk+"RK)jWqu-Nlqu$6drqc<`rqQBbrq>pUqt0%B +p%7qMqtC$`qtU'aqtg*bq#(-im/FNpao?qlo`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU` +qtU*^rUp/@s3(Fns,d9XrqQHhrV6U0[p\X[Hp%A%Op\Xa_q=XU`qtU*^rUp/ns2k:ls60LX +rpTg\r;6B^qUG<@qX+.YqtU*XrV6ACs1JA_s+LFOrql]`rV6 %APLeod +EI +120 0 0 52 0 32 cm +BI +/Width 360 +/Height 156 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$ +JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?ql +JcC<$JcC<$JcC<$JcEjlJcC<$JcC<$JcC<$JcC<$ao?qlJcC<$JcC<$JcC<$JcEjlJcDhOf)>^Lrdk*% +s+13$s2b5irdk+4s2k:ls2=s(rm^lHrp'K6s-Wh;s+14.s6Ta7rTX<4s8;o=s+14's7QBUrUTmKqtL$^ +r9XCQrdk*Rs+13$s7QEbrosCPr9!nCr9XCQrfmH)s+14-s8N#^rUp*]qptTEqYL*do).kQqu20HZi>UV +JcGWIrr20\p&+L[eGB(>o).kQqu2r^ao?qlkl:GWn,<%Zqtos\eG0+@mJ?hZq#'UZq#5jE]`3Q_K`D&N +qu6'_q#($do(pl3m/$_Yq#'UZq#6rdao?qlo`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU` +qtU*^rUp/@s3(Fns,d9XrqQHhrV6U0[p\X[Hp%A%Op\Xa_q=XU`qtU*^rUp/ns2k:ls7cQm +rpTgbr:p0gqYU*`q"sgYpA=O^o\K-;oE"UVrq5jUrqH3_rqZHfq"ssdo)8ReJcEpnJcCr6rr2Kerr)io +q"t'eqt^$^qtKdWqt9s\h=LO9rq5jUrqH3_rqZHfq"ssdo)8ReYQ)`EJcG]Kqu60brquZjq"jm`rqQ9_ +qt9jYqt'gXqsiM3rp^!Zr:9jYp%87Vq"O[\rqZ?crqlTjp&4R_JcF7"JcD/U0dp\sm`p&=U\oD%kQnG_nUnGD\LmdKQ:$fqtplhKlHn,)VRnb_nV +oDA1TpA"F[qYpBhr:9gcrdk+*s+13Hs8N#drVl`lqu6Hkq"sj]pAX^]oD\=Xnc&%Tn+c;=lgO*,lhKlH +n,)VRnb_nVoDA1TpA"F[qYpBhr:9gcrk\WVs,@!Wrpp$er;QTjqYU*`p\XX_o`"F\nc&"VnG_nRmf)VQ +m/-,JlMKi=kjR^,kQ0o2ros=Frp0RMrpBLKrp]pUrpg!Yqt0m\q"Od`q"k!erquHfqu20Hi;\B.W;lkr +o)8RcrqlThqt^6cqtL!\rq-3\rpg!Vrp]pUqsOINrp9OJrp'CFp#tl-o'$);qs+1Hrp9XOq!S.NrpTjV +rposYrq6'\rqZ?crql]mp&4de`;dsZQ2gXYq#13iqtpBhqt^-`rq??`qt'^TrpTjUrpTjSrp9XMrp'LH +qrdt@qrRhkPOKBlMg,Km/-5MnG_nUnG_tWoDA1WpAXgcq>:$fqtpjSn34ipYk! +ir8!;jSn9s69Q7s0;UprVl`lqu6Heq#:!dp&=U_o)&"WnG_nUmf)SMli-/J +kl0cBjo4??")g[Ekq +g\9J(gt_nbqqqD2rnm_6ro3q>g +rm:>arm:Yjqp>;ir6kSormh#!rn%/%rn72(rn[S2ro*k9roO.Aroa:Frp'LKrpB^Rrp]pXrq$-]qtC$` +qtU0drqlTjq#,dDo)F:@])VR(rquZjqt^6dqtL*`rq-3]rpp'XrpKdQrp0RKrosFFroX4Aro3q8rnmV/ +rnRM+rn.5%rmq)!rm^_kqp>>grm:>arm:Yjqp>,drm^qtrmq)#rn.5'qqV2,rnm_6ro3q=roX4CrosFI +rp0RNrpTjUrpp'[rq-*]rqHU0gp\smcp&=U_nc&%Wn,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0gA]e)f`'G#eGdnqdJhMf +ci25ec2PrUbPTN_c25f`ci2;jdJhSne,Insf`'S'gA]n,h>?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[ +p&=[ap\sseq>:$fqtU-brnmats/Q+rrqlZnr;6BjqYU*fp\smcp&=R^o)%qUmf)VQlMg#HkPjQAiqq[5 +hYu@1g&BY'f)F.tdf.Sld/M>ic2Pocb5TN^`r!aS`;@I@_Z%IM`;[^U`r*jUao9H^bPocccMl2ici2>k +e,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"XoD\F^pAXgcq>:$fqtpU-fpAXaaoD\=XnG_kTmJcDMkl0cEjSn09i;VU4h>Z+,f`'J$e,Iepci2;jcMl)fbPoZ`ao9ke,IqtfDaJ&h>Z:.i;Vd9jSn?Al2KuImJcPNnG`"X +oD\F^pAXgcq>:$fqtpU0gpAXaao`"F\nc&"VmJcGNlMfuGk5OKAiVqd7 +hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y`;[[R_Z%CK_#(n8^&,SA^];7L_Z%IP`W!mVaSs<\b5TWa +c2Q)hdJhVoec+5#g&Bb*hYuF3iVqsU0gpAXaao`"F\nc&"VmJcGNlMfuGk5OKAiVqd7hYu:/gA]b(ec+(tdJhMlcMl&eb5TN^aSs3Y +`;[[R_Z%CK_#(n8^&,SA_#)"J_u@XS`r='Yao9H^bl5ldd/MGle,Insf`'S'g]$(/hu;U6jo4EAkPjcG +li-;Nn,DkVo)A:\p&=[^q#:*aqtU-eroO1%s02OurqlZnr;6BjqYp9ep\sgao)%qUn,DbSli-2Kkl0ZB +iqq[5h>Z1.f`'J$eGdhoci25hbPoZ`aSs0X`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfGC]`Gg[ +rkABHrkSNLrkn`Rrl+lXrlP/_rm(Mhrm:Yormq)$rnIG.qr%J6roF(BrosFJqsO@Nrq$-]rqHU6iqtpU0gpAXaa +o`"F\nc&"Vmf)POl2KiEjSn3=i;VU4h>Z(+f)F5!dJhMlci2,eao9Z=2i;Vd9jo4EAl2L#J +mf)\Snc&+Yo`"O_pAXjdq>U6iqtpU0gp\sjbo`"F\nG_kTmJcDMkl0cE +jSn0_7L^&GYC\Gir9[JmN3ZMq',Yl:g&XT#9bWrB'rX8o@' +Xf_T,ric=+rj2U3rjVm:rk&0CrkSNLrl"fUrlP/_rm(MjrmUkrrn7;*rn[S2ro3qrjMg6rj2U0ric=*riZ."ri>:`ri>ptriQ1(ric=+rj2U3 +rjVm:rk&0CrkSNLrl"fUrlP/_rm(MjrmUkrrn7;*rn[S2ro3q#Vrk\TLrkABCrjVm7rj)O-ric=(riH+"ri,mqrhfRhrhT"XqkX4frh][n!N2jpWW&stXo>L&YPtg+ +ZMq92\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqsZ+,fDa>"d/MAjcMkrb +a8X$V_>_7L^Ab_C\,Nf7ZMq*-YPt^(XT#:"WW&jqVYd4hV!k)UV#I4iVZ*LmWW&stXo>L&YPtg+ZMq92 +\Gj)=^AbnH_>_CP`r=*ZcMl/hd/MSpfDaJ&h>Z=2iVqs_7L^Ab_C\,Nc6Yl:j*Y5YL$WW&gpV#I+fU&L_aTDkGZSc5/VS+rHOS,8`TSc52\T)kRVrh07arhKIg +rhoapri?%$ric=*rj;[6rjr*CrkJHKrl+lYrltGgrmC_orn%/'rndY3ro3q#VrkSNIrk&0?rjDa2ric=%ri5srrhTOfrh07_rgj%YrgNhSrgC#VZ*CjU&L_aT)P8ZRJrTQQN!-JPQ$aE +OQMW$OT(CCP6$l2rfmDJrg3VPrg`tYrh07arhTOjri?%#rilC-rjMg:rk8C +rf@&=rf$i7regK,reLK-qh>$(reL9)re^]6!K2m8N;ek:O8b7?PQ$jHQN!?PSGo/[T`1bdVuEdsY5Y[) +[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirg*S8 +s5*eTrqQHkr;QTmqYpibl5T\_u@FM]`,G? +[JmE0Y5YO%VuELkT`1S_SGnuVQN!-JPQ$[CO8b1=N;eb7MYN#,L]3&*L&Qi+L\Q])MZ/P5N;ek:O8b7? +PQ$jHQN!?PSGo/[T`1bdVuEdsY5Y[)[Jm]8]`,\F_Z%ORbl5oed/MPof)FA%hu;U6ir8-?l2L#Jn,DhU +nc&1[p&=[aq#:*gqYpBkr;6HirqcZ:s2+g8rqQHkr;QTmq>U0gp\sjbo`"F\nG_kTm/H8KkPjTBi;VR3 +g]#e'e,I_nc2Piaa8WpS^](nF[f3W4Yl:a'WW&gpU&L\`Sc5&VQi<9LOoCIANrFt9MZ/J3LAQ]"KC=Bd +KDpQ)LAZf*M>iD3MuJb9O8b:@Q2[-LRJrcVTDkP`VuE[pXT#I'[/RN5]`,YE_>_LSb5TZbd/MPof)FG' +hYuI4jo4HBl2L&Kmf)_To)A7[p&=^bq#:*gqu6NjrVQS[s+14,s8N#mrVl`oqu6Ejq#:$ep&=U_o)A.X +mf)SPl2KlFjo43;h>Z1.f)F.td/M;hao9?[_>_4K]`,A=Zi73.XT#3uVuEChTDkD\RJrQPQ2ZpFOT(:> +MuJV5M>i8,L%p;hJbXlsL&6W(M>iD3MuJb9O8b:@Q2[-LRJrcVTDkP`VuE[pXT#I'[/RN5]`,YE_>_LS +b5TZbd/MPof)FG'hYuI4jo4HBl2L&Kmf)_To)A7[p&=^bq#:*gqu6NjrVQTjs2k;Xs8N#prVl`oqu6Hk +q>U0gp\sgao)%nTm/H>MkPjQAi;VX5g]#n*df.VmcMkoa`W!^Q^AbbD\Gic4YPt['VZ*@iT`1P^S,SfS +PQ$^DO8b.iG4NW,"O'Z2V94])KGC_>_FQaSsKad/MJmg&Be+hu;R5jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr;QZl +rg*S8s5*eTrqlZnr;QTmqYpiaSs0X_>_1J]Df>> +Z2Us+Xo>3sU]-qcT)P5YR/Wi8/K`6W'JGXikIf"QgI/\QhIf=ioJGt3#L&Qi+M>iG4 +NW,"O'Z2V94])KGC_>_FQaSsKad/MJmg&Be+hu;R5jSn?Ali-;Kn,DnW +o`"Uaq#:*gqYpBkr;QZlrqcZ:s2G$;rqlZnr;QTmqYpZi70-XT#0tV#I%dSc5)WPl?jFO8b.rkSNMrlG)^ +rm:Ymrmq)%rnm_6ro3q?rosFJrpTjVrpp'\rq69brqZQirqlTjrr)`nSH"0?iW&oVqu-Nlrql]krqZQf +rq??`rpp'XrpTjProsFFro3q8rnm_.rmq(srm:YgrlG)UrkJHGrjMg4ric=&ri#glrh07]rgNhNrf[8A +rf-o7reUQ,rdt-!rdausrd=]krd"KfpiZ%IpiZR\rd"Khrd=]nrdautrdt-&reUQ2rf-orkSNMrlG)^rm:Ymrmq)%rnm_6ro3q?rosFJrpTjVrpp'\rq69brqZQirqlTj +rr)`n!<:1@aT)8=qu-NlqtpBhrqQKdrq-3]rp]pTrp9XLroa:Bro!e3rnIG'rmUknrlb;]rkn`Mrk&0> +riuI*ri?$prhKIbrg`tTrfmDDrf-o8reLK,rdt-"rdOiord"Kfrce6^rcJ-[qf2(Drc.gUrH&'^FT-F^ +GQ)jdH2`3jIK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$Z2V94]DfSE_u@^UbPolfeGe%ug]$(/ +i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*dqu6NjrVleds+142s8N#prVl`lqu6Hkq#:!do`"I]nG_kTm/H;L +kPjTBi;VR3g]#e'e,I_nbPoQ]_u@FM]Df>>Z2Up*X8\spU]-nbSGnoTPl?dDNW+k8L]3#,K)U<"If=`o +H2`'fGPcO^FT-=XEURlGEVjeRFT-F^GQ)jdH2`3jIK"crK)UK'L]352NW,%=Pl@'LSGo/[UAh"gX8]:$ +Z2V94]DfSE_u@^UbPolfeGe%ug]$(/i;Vj;kl0lHm/HGPnG`%Yp&=[aq#:*dqu6NjrVlcrs2k;as8N#m +rVl`oqu6Hkq#:$ep&=U_nc&%WmJcGNkl0]CiVqa6g]#n*df.VmcMkl``;[ON]Df83O8b=AQ2[ia8X$V^](kE[f3T3Y5YI#VZ*7fT)P8ZQ2ZsGO8b(:M>i8/Jc:3!If=]nHN&0gFT-=[EW0qSDuOY: +D>S5MDu4MQEW1%YFT-OaH2`0iIf=irJc:E'M#N>3O8b=AQ2[#SrkABDrj2U/riZ6trhKIbrgWnQrf[8Arepc4re(3$ +rdXoord"KdrcA'ZqeuINrbVRLrbDFHqe,n?mq)B.rb)4E!,;OLCAr#JD#S;KDuObUF8g@^GlE'hJ,Y#u +KDp`,N;en;P5^gIS,T&ZU]..iY5Y[)Zi7T9^AbtJa8X9]d/MJmf)FD&hu;X7jSnBBlMg5Nn,DnWo`"R` +p\sseqYpBkr;QZlrh'4As6'F]rqlZnr;QTmqYp9hp\smco`"F\n,DbSli-,IjSn0rnm_2rn%/!rm:YgrlG)VrkJHDrjMg1riH*urhBC`rgWnPrf[8Are^W0re(3# +rdFclrc\9_rc8!Wrbh^OrbDFHrb2:Crakt;raY2%raYh9!+c1BAc?<@B`;`FCAr&KDZ4VSErL1[G5cge +I/\ZqKDpW)M>iS8P5^aGS,T&ZUAh.kXo>R([f3l;^]).Ma8X<^d/MPofDaV*i;Va8k5OWEm/HJQnc&+Y +p&=[ap\t!fqYpBerLa+@s6'FWrVl]nqYphu;I2fDa;!d/M8gaSs*V +^](hD[f3N1XT#3uUAgb`S,S]PP5^OAM>i;0KDpE#IK"QlG5cU_ErL%WDZ4JOCAqrHB`;WCAc$$;A*IJ% +A,Bg9Ac?<@B`;`FCAr&KDZ4VSErL1[G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh.kXo>R([f3l;^]).M +a8X<^d/MPofDaV*i;Va8k5OWEm/HJQnc&+Yp&=[ap\t!fqYpBgr;llqbQ#ccq#13hrqcWirqHEcrq-3Z +rpTjSrp'LGroF(:rn[S-rm^qprm(Marl"fNrk&0D+pg3`&ra>_4!+>n:@K'a8A,^'=BDuWEC]8/LDuO_TEW1+[ +GlE'hJ,Y'!K`6o/NrG.>QiZ.-eGdkpcMkoa`;[ON +]Df8QiV1qd'2+r`fA*kun!hr`f>+!F/n/?2e4.@/aX7A,^'=B`;cGD>nJQ +EW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R(Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_T +o)A7[p&=acq>U6fr;QZlrh]XGs6BX`rqlZnr;QQlq>U0gp&=U_o)A.XmJcGNk5OH@iVq^5gA]\&d/M8g +aSs'U^AbbDZi73.Xo>-qU&LY_QN!*IO8b+;L]2o)JGsrqH2_maErL"VD>n;LB`;TBAH$';@/F=.?2e+. +>Q.gj=oMV(>Ph\)?2e4.@/aX7A,^'=B`;cGD>nJQEW1%YH2`3jJGt0"L]383O8b@BQN!KTU&LkeXo>R( +Zi7T9^])+LaSsE_d/MVqg&Bk-iVqp;k5O]Gmf)_To)A7[p&=acq>U6fquHZrrVcWmdJqVorr2fnrqucm +rqZQgrqHEbrq$-YrpTjQrp'LDro3q7rnIG'rmLekrlP/XrkSNFrjVm2riH*trh07]rgNhLrf@&;reCE) +rdXoorce?`rc%jSrbVRIrau.?raPk7ra5Y1r`oG,qcWo#h,jPW!E`J'=oMY)>lJ%.?iFL5@fBp;B)ZKC +D#S>OE;jtYGQ)sgJ,Y*"LAm/2O8b=ARf8lWT`1nhXT#I'\,O#=_#D:Oao9Tbdf.ktg]$+0ir8$U9jr;6Hlrh]XGs6]jcrqlZnr;QTmq>U0gp\sjboD\7Yn,D\QlMflDir7j7g]#e' +df.Pkao96X_#CtF\,NW2XT#0tT`1M]Rf8KLO8b+;LAli)J,XfoGQ)^`E;jbSD#S,IB)Z??@fBd7?iF@1 +>lIt)=oMOZ=8Q,!=oMY)>lJ%.?iFL5@fBp;B)ZKCD#S>OE;jtYGQ)sgJ,Y*"LAm/2O8b=ARf8lWT`1nh +XT#I'\,O#=_#D:Oao9Tbdf.ktg]$+0ir8$U9jquH]nrVlfDs3^lGrqlZn +r;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+W;`OjT)P/WPl?dDN;eY4 +Jc:/uI/\5h\(=T2D$2raYq@rbDFMrbqdWrc\9grdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4 +ro3q@rp'LLrpTjWrq-3arqQKgrql]mqu-NnV>l,HmJm1bqu-Nlrql]jrqQKerq-3[rpTjQrp'LHro3q8 +rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbMrfI,. +r`oG+r`T5&r`B)"qc3Vpku7R\qc3Vrr`B)$r`T5(r`oG.qd9>2raYq@rbDFMrbqdWrc\9grdOitreUQ3 +rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4ro3q@rp'LLrpTjWrq-3arqQKgrql]m!<)io +rr1=FeGoOIqu-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+rmUknrltG]rkeZKrjMg3riZ6trhBCa +rg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5&r`B)!r`&kqr_iVjh,+)J!)i_mr_req +r`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZrd"Kkrdb!%re^W8rfd>Irh'1brhf[trj)O3rkABJrl+l] +rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??crqcWkrqucoqu3PoJcG6>rr2fnrqucmrqcWgrq??arpg!W +rpTjOroa:Bro!e2rn7;"rm:Yhrl+lRrkAB?rj)O+rhf[hrh'1Urfd>Bre^W-rdaurrcnEbrc%jSrbVRH +ral(;ra>_3r`oG*r`K/$r`/qsr_reoqbc0Gr_`Pjr_reqr`/r!r`K/&r`oG.ra>_6rac"@rbVROrc%jZ +rd"Kkrdb!%re^W8rfd>Irh'1brhf[trj)O3rkABJrl+l]rm:Ynrn7;,ro!e;roj@HrpTjUrpg!\rq??c +rqcWk!;llqr;QZlrm^tts8N#prVl]nqYp5h\(=8l8"sJm;uTerQ/"/@fBp;B`;cGDZ4YTFoHXbIf=otK`6r0O8b@BRf8oX +UAh1lY5Yd,]DfSE_Z%^Wc2Q,if`'Y)hu;[8k5OTDm/HGPnc&1[p&=^bq>U6iqu6Qkri#jJs7$'frqlZn +qu6Hkq>U-fpAX^`nc&"Vm/H5Jk5OE?hu;C0f`':tcMkuc_Z%:K]Df/9YPtR$UAgb`Rf8NMOT(4Q.h*=oMM%sDh:\@KX:%D'Y:]!uf;>sJm;uTerQ/"/@fBp;B`;cGDZ4YTFoHXbIf=otK`6r0O8b@BRf8oXUAh1lY5Yd,]DfSE_Z%^Wc2Q,if`'Y) +hu;[8k5OTDm/HGPnc&1[p&=^bq>U3jqZ6Tkrr)`neGn%urr2fnrql]krqZQfrq69]rp]pSrp0RHroF(: +rn[S,rmh"prlkA^rkSNGrjVm2ri?$qrh07[rg*PFrf$i4rdaurrd4Wdrc.pUrbDFEraYq8ra,S0r`T5& +r`B(ur_iViqbR2dqb?`Wpe10Or_3Afr(d,bqb[8jr`&kur`K/&ra#M1ra>_8rb)4FrbqdVrcJ-drdOis +reUQ3rfI,FrgWn[rhf[qrilC2rk&0Frl>#]rm:Yprn7;,ro!e:roa:HrpB^Srpp']rqHEfrqcWkrr)`n +W;hGKnGiLequ-NkrqcWirqHEbrpp'XrpB^Nroa:Aro!e3rn7;$rm:Ygrl>#Rrk/6>rilC&rhf[frgWnQ +rfI,ra>_3ra#M+r`K/$r`&kpqb[/cr_E>boh>-RnkB$WqbI#aqb[8j +r`&kur`K/&ra#M1ra>_8rb)4FrbqdVrcJ-drdOisreUQ3rfI,FrgWn[rhf[qrilC2rk&0Frl>#]rm:Yp +rn7;,ro!e:roa:HrpB^Srpp']rqHEfrqZWl!W2cnrVQTDs4%)GrVl`oqYp9hp\sjboDA%Vm/H8KjSn0< +hu;@/f)F(rbl5Z^_>_(G[f3Q2XT#*rT`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\QC&VZB@fBa6?2e%,=T2>" +<;oep;#=&c:&[ic9(GRB8G,OS9)M5hh,?iFO6AH$U6fr;QYns+14> +s82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7gA]\&dJhAha8WpS]Df85hY'5hh,?iFO6AH$k'df.Pk`rlIq+sDk:]=,g9`%KX8c)$/7KGtJr^Z`T +r_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&Arg`t[rhKIpriuI1rk8rosFJrpTjWrq-3arqQKgrql]mrr)`nY5a(QoDeghrr)iorql]jrqQKerq-3[rpTjP +rosFFro*k6rnRM'rmLekrl4rRrk8<=riuI)rhKIcrg`tNrf6u9re(3#rd=]frc8!Vrb;@DraPk6r`oG+ +r`9"tr_`Ykr_NMgr_32^pdt?Qe40F-pdtHXqb6l^r_WSkr`&ktr`];+ra5Y6rau.DrbqdVrcS3frdXp" +repc:rf[8Nrh'1briQ1)rjDa=rkeZSrm(Mjrmh#'rndY5roa:Frp0RPrpp'\rqHEe!;QZkq>U9jr;QZl +rn@D(s8N#srVl`oqYp9hpAXaao)A.Xn,DSNkPjQAi;VO2f`':tcMkuc_Z%7J\c/i4X8]$rT`1G[Q2ZjD +M>i2-JGsopG5cI[D>n;LAH$$:?iF7.=T2A#;Z9Pj:]=&e9D_<[8GbpV7efFI7.3M<7/]RP7JfRR8,GjV +8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[HN&HoK`6l.O8bFDS,T)[VuEdsYl;34^Ac"Kb5TZb +dJheth#?72jSn<@l2L/Nnc&+Yp&=^bq#:-hqu6QkriZ9Ps7?9irr2lqr;QQlq#:!dp&=O]nG_nUl2KlF +jSn*:h#>t*dJhGjb5T9W^&GSAYl:^&VuE@gS,S]PO8b"8K`6N$HiA3fE;j_RCAqcC@K'X5>5hY'X/g9`@]^8cD9X8,c!Q7JK:>6hj(E7JfRR8,GjV8cDB^:&@`c;>sJm5hn.@fBp;CAr)LE;k%[ +HN&HoK`6l.O8bFDS,T)[VuEdsYl;34^Ac"Kb5TZbdJheth#?72jSn<@l2L/Nnc&+Yp&=[cp]:0brqcWk +rr)`ngAfn,rr2fnrquclrqHEcrq69\rpTjRroj@Cro3q7rn@A&rm:Yfrl4rQrk&0reLK)rd=]hrc8!UrbDFFraGe5r`oG)r`9"t +r_WSir_EGdr_*5_r^coVr^QcRpdEq*pdG*MqaUQTqag]Yr_*5ar_EGgr_WSnr`9##r`oG/raGe=rbDFM +rc8!^rd=]sreLK3rf[8Jrgj%ari,n"rjMgZ(+eGdenao96X^Ab\BZi7'*VZ*7f +Rf8QNO8at7KDpB"GlDgaDuOPOBDuE?@/aI2>5hS%;u9Dj:B!rd9)D3W8,c!T7K,^%6i9=K7/fXP7fGpW +8c)-Z9`@c`;#XGnlJ.1A,^-?C]88OFT-OaJ,Y-#M#NJ7Pl@-NT`1hfXT#R*\Gj5A`;[pYci2Gn +g&Bh,i;Vg:kPjiImf)_To`"O_p\t$gqu6NmrVlf!s+14Ds8N#srVl`oqu6Hkp\smco`"@Zmf)SPkPjQA +i;VR3f`'D"ci2&c`;[LM\c/r7XT#*rT`1DZPl?aCM#N&+J,X]lFT-4XC]7uGA,]m8?2e%,lJ.1A,^-?C]88OFT-OaJ,Y-#M#NJ7 +Pl@-NT`1hfXT#R*\Gj5A`;[pYci2Gng&Bh,i;Vg:kPjiImf)_To`"L`pAt$_rqcWkrqucorr1XOh>dKR +qu-NkrqcWirq??`rpp'XrpB^MroO.>rnm_/rmq(rrlb;\rk\TFrjDa/rhoairgs+RrfI,ra>_1r`T5$r_i_mr_NMfr_!/]r^d#YqaUQRr^?3Bh*V'-o0`LFr^H]Rr^ZrYr^m)^r_U6iqu6Qkrn[V1s8N#prVl]n +qYp5hn.@fBp;C]88OErL@`IK"fsM>iP7P5^sMTDkVbXo>X*\Gj8B`;[mXci2Gnf`'b,iVqp;l2L#Jmf)bU +oD\F^q>U6iqu6QkriuKSs7u]orqlZnqu6Hkq>U'do`"C[mf)POl2KcCiVq^5f`'D"ci2&c`;[ON\Gif5 +Xo>*pTDk>ZP5^I?M>i)*IK"NkErKtUC]7lD@K'X5>5hV&<;o_n:]=,g9E%Q_8cD6Z7f,XR7-m:s6L7)= +7/KFP7fGpW8cD?]9E%]c:]=2i<;otu>5hn.@fBp;C]88OErL@`IK"fsM>iP7P5^sMTDkVbXo>X*\Gj8B +`;[mXci2Gnf`'b,iVqp;l2L#Jmf)bUo)SFap%A=[rqcWkrr)`nh>c=2rr2fnrqcWirqQKcrq$-YrpKdO +roj@Aro!e2rmq(srm(M`rkn`LrjDa0ri?$krg`tTrfI,;reCE%rd+Qdrc%jQrb2:>ra5Y1r`K/"r_i_l +r_EGdr_!/]r^d#XqaLKPnjCbjr'L'DqaCEPqaUQUr^m)]r_3;cr_WSlr`9##ra#M1raGe>rbMLPrcS3d +rdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LNrp]pYrq69crqZQirr)`nZ2]CT +q>^Hnqu-NjrqZQgrq69^rp]pTrp0RIro="9rnRM(rmLekrl>#UrkAB>rilC&rh07\rg<\Hrepc1rdXon +rcS3ZrbVRIraGe5ra#M*r`/qqr_WShr_3;`r^m)[r^QcRr^?rbMLPrcS3drdXp%repc;rg<\Urh07krilC0rkABKrl>#`rmLesrnRM1ro="Arp'LN +rp]pY!;-Bcp&=acq>U6irVQTMs5!_SrqlZnqYp9hp\sgao)A+Wm/H8KkPjH>hYu7.e,I\mbPoEY^](hD +Yl:^&VZ*4eRJrELNW+_4Jc:#qG5cL\D>n5JAH$!9>lIn*l2L&Kn,DnWo`"Uaq>U6irVQT!s+14Gs8N#prVlZmq#:$eo`"F\n,D\Ql2KlF +iVq^5gA]S#ci2,e_u@FM])Jr5X8]!qTDk8XPQ$R@L]2l(HiA3fEW0hSB`;QA@/aF1=oMG#;uTSl:B!rd +9)_B\8,c!T7K,^G6c)1_6i0:N7K,dU8,c'Y9)_K_:B"&g;Z9\q=oM_+@/a^9B`;lJEW1.\HiATqL]3;4 +PQ%!LTDk_eXT#I'])KGC_u@jYci2DmgA]q-iVr$>l2L&Kn,DkXoE"UVrqHEfrqcWmqu5FOh>d9KrqcWh +rqHE`rpg!Vrp0RJroX4dp-S=;r^?WPr^QlWr^m)^r_3;er_i_pr`K/'ra,S4rau.F +rbqdXrd"Kmre19.rfR2Grg`t`ri5t$rjVm?rkeZWrm(Mkrn7;,ro!eU6crS@M0s82cor;QQlq#:$eoD\:Zn,DVOkPjQAi;VO2fDa.rbl5]__#CtF[Jm?.W;`LiRf8QN +O8aq6KDp?!G5cO]DuOGLAH#s8>lIn*=8l+s;#X5h9E%Q_8cD3V7K,^G6cVOb6M3_C7/fXP7fH!Y9)_K_ +:B")h;Z9bs=oM\*?iFU8B`;rLF8g@^If=ruL]3A6Pl@-NU&LthY5Yj.])KMEaSsE_d/MYrg]$.1jSnBB +lMg8Onc&.Zp\t!fqYU3irNZBRs7u]lrVl`oqYp9hp\sd`nc&"VlMfuGjSn*:h#>q)d/M8gaSs!S]Df5; +Y5YC!U&LM[Pl?aCL]2r*If=NiErL"VB`;QA?iF=0=oMM%;Z9Ml:B!oc9)_E]7f,XR7.N^U6M3_C7/fXP +7fH!Y9)_K_:B")h;Z9bs=oM\*?iFU8B`;rLF8g@^If=ruL]3A6Pl@-NU&LthY5Yj.])KMEaSsE_d/MYr +g]$.1jSnBBlMg8OnGr.]oCMtUrqZQiqu$Hlh>c=2rr)iorql]jrqQKdrpp'XrpKdLroO.=rndY.rmh"p +rlb;[rkJHBrj)O(rh]Udrg3VIrf6u2rdXoorcA'XrbVRFraPk6r`T5%r`&knr_EGdr^m)[r^ZrWr^HfS +njC>^m6^J5r^?`Sr^QlWr^d#[r_3;dr_WSnr`9#$ra5Y6ral(FrbqdWrd4Wpre192rf[8Irh'1dri?%( +rji$Crl+lZrm:Yprn7;-ro3q>roj@Lrp]pXrq??crqZQjrqucoZ2]CTq>^HmrqucmrqZQgrq??^rp]pT +roj@Cro3q6rn@A%rm:Yfrl+lOrj_s5ri?$prh'1Vrf[8@re19#rd4Wcrc%jQral(roj@LrpTpY!V5g\pAXgcq>U9jr;QZNs5!_SrVl`o +qu6Ejp\sjbnc&"VmJc>Kjo49=h>Z(+eGdbmao96X^&GM?Z2Ua%U]-kaPl?aCMuJ>-If=ZmErKtUCAqcC +@/aI2=T2>";Z9Ml:&[fb8cD9[8,bsV7.3L]6L@,16iKLQ7K,gV8H)3[9E%Zb;#XAlmg&Bh,ir8*>kl0uKn,DkVp&=^bq>U9jr;QZ" +s+14Gs8Murr;QTmq>U-fp&=L\n,D_Rkl0]Cir7d5f`'D"cMkrb`;[IL\,NZ3WW&[lT)OuRO8b(:K)U5u +HN%saDZ4DMAH$!9?2dt*mg&Bh,ir8*>kl0uKmf;kYnaZVO +rqHEfrql]mrr([Qh>dKQrqucmrqQKdrq69\rpTjRroj@Cro*k3rn.5!rltG`rkn`JrjDa/rhoairg`tO +rf6u7rdauqrce?\rbVRJraPk6r`oG(r`/qpr_WSgr_*5]r^ZrWr^HfSog?G[l9b/2r^?`Sr^QlWr^d#] +r_Orh9=hric=/rk/6JrlG)`rmUkurnRM3roO.C +rpB^Rrpg!\rqHEerql]mrr',%JcGQGrr)iorql]irq??arpg!VrpB^KroO.Are^W)rd=]hrc%jQrb;@@ra5Y0r`B)!r_`Ykr_Orh9=hric=/rk/6JrlG)`rmUku +rnRM3roO.CrpB^R!:^*[nc&4\p\ssequ6NmrS@M3s8N#srVl`oqYp6gpAX^`nG_hSli-&Gj8Rs8gA]\& +dJh>g`r5hh,@/ag_IRbPoogec+;%hu;[8k5O]Gmf)_To`"O_p\t$gqu6QkrjVoYs8;orrr2lqr;QQlp\smco`"@Z +mJcGNk5OE?hu;@/f)F(rbPoN\_>_"EZi70-V#HtbRJr5hP$;uTVm +:B!oc8c)$W7fGgK6f:<160UZ66/=m)6i0:K7fGpW8cDB^:B")h;uTer>5hh,@/ag_IRbPoogec+;%hu;[8k5O]GmJu_WnF6GLrq69brqcWkrr)`nj8\';rr2oq +rquclrqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5ZrkJHBrj)O*rhBC_rg3VFreg]/rdFcjrcA'Urb;@C +ra>_1r`T5#r_relr_EGcr^m)Zr^QlUnjDG(qa'@0r^$KLj?iN,r^HfUr^ZrZr_*5cr_NMkr`/r#r`oG1 +ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWk +rr)`n\,V$Zr;Zcqrr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl+lOrj_s5riQ0orgj%Trf@&9 +re:?"rcnE`rb_XKral(:r`oG*r`/qrr_NMgr_*5^r^ZrWr^HBFj$NW/k!8o3i'R*(r^HfUr^ZrZr_*5c +r_NMkr`/r#r`oG1ral(Crb_XUrcnEjre:?/rf@&Frgj%_riQ1*rj_sBrl"fYrm:Yprn7;.ro3q=rp0RN +!:U$YnG`%Yp&=^bqYpBkrVQTSs5i/,I/\?hErKnSB`;N@?iF:/=T2;!;>sAj9`@Z`8cD3V7JK7+6JXp*6K(9+6iKOO +7fH!Y9E%Wa:]=8k<;p#!>Q/"/A,^-?D#SJSGQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gnf`'e- +ir8'=li-;NnG`%Yp&=^bqYpBkrVQT's+14Js8N#srVl`oqYp6gpAX[_nG_hSli-#Fir7j7f`'A!ci2#b +_u@FM[f3Q2XT"mlS,S`QNrFn7KDp8tGQ)X^D#S,IA,]j7>Q.b(<;obo:]=&e9)_E]7f,XL6et)b5i"d% +6iKOO7fH!Y9E%Wa:]=8k<;p#!>Q/"/A,^-?D#SJSGQ*!hKDp]+NrG@DSGo2\XT#L([f4&@`;[jWci2Gn +f`'e-ir8'=li-8On,`%Jrq$-^rqHEgrql]nqu5XUi;`fUrqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(t +rm1Sbrkn`Lrj;[.ri5sjrgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NK +j$N`2f0B=%!C9$36MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[ +WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg/Ln,DnWp&=^bqYpBkr;6K&s+14Js8N#sr;QTmqYp6gp&=O] +n,D\QlMflDiVq^5f)F.tci2#b_u@CL[/R9.WrA[jRf8QNN;eS2JGsloFoH@ZC]7rF@fB^5>5hV&;Z9Ml +:B!oc9)_B\7fGjU7/0.06N0:&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^d +JGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg,MmfDnGrpp']rqHEgrql]mqu5XUi;`fU +rqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm1S`rk\TIrj2U,ri#ggrgEbLrepc0rdauorcS3ZrbDFE +raGe3r`T5%r_i_kr_5hh, +@K'j;CAr2OFoH^dJGt<&MuJq>RJriXW;`t!Zi7Z;_Z%RSci2Dmf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBk +r;6K&s+14Js8N#sr;QTmqYp6gp&=O]n,DYPl2K`Bi;VR3f)F+sci1r`_>_.IZi7-,W;`FgRJrELMuJG0 +JGsloFoH@ZCAqiE@K'R3=oMM%;Z9Jk:&[fb8cD6Z7K,^J6fp`46.A1!60:N,6iKLQ7K,gV8cDB^:&[ug +;Z9bs>5hh,@K'j;CAr2OFoH^dJGt<&MuJq>RJriXW;`t!Zi7Z;_Z%RSci2Dmf)FM)i;Vd9l2L#LmfDnG +rpp']rqHEgrql]mqu5XUi;`fUrqucmrqcWgrq69\rpTjProsFBro!e2rmq(srm(M^rk\THrj2U,rhoae +rg<\Jreg].rdXolrcA'Wrb2:Ara>_1r`T5$r_i_kr_";#X5h9`@W_8H)*X7K,^M6g6r:6-V[j +5lO(36Mj.L7/fXS7fGpW8cDE_:B")hlJ.1AH$6@DuOhWG5d!jKDp]+OoC^HSc5McXT#L(]DfVF +`W"-]dJhYph#?41ir80@li-APnc&1[pAXpfqu6NjrjVoYs8;orrr2ipqu6HkpAX^`nc&"Vli-,Iir7j7 +h#>h&d/M;h`W![P]Df)7XT#*rSc4uTOoC19KDpB"G5cO]DuODKAH$!9>lIk)lJ.1AH$6@DuOhWG5d!jKDp]+OoC^HSc5Mc +XT#L(]DfVF`W"-]dJhYph#?41ir80@lN$ASn*g8Grq-3`rqcWkrquZmj8\';rr2oprqcWirq??_rp]pT +rp0RIro3q6rnIG%rm:Yhrl"fNrk&07riH*qrg`tRrfI,8re(3!rcS3[rb_XIrac"9r`oG)r`/qor_EGd +r^m)[r^QlUr^?NKlpCS8bs:tfr^#d8qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4Irc.p[rdOiu +reUQ8rg*PRrh]UpriuI7rkSNOrltGirm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZm\,V$Zr;Zcqrqucl +rqZQerq$-YrpKdOroj@@rndY/rm^qorltG\rkJHEriuI(rh]Uarg*PFreUQ+rdOihrc.pSrb)4@ra>_1 +r`K/"r_WShr_3;_r^d#Xr^HfSpd=C7qa&(ar^#d8qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4I +rc.p[rdOiureUQ8rg*PRrh]UpriuI7rkSNOrltGirm^r%rnm_7roj@H!:BmUmf)_To`"R`q>U9jr;6KR +s5n/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_U5k@8'6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7 +B)ZZHEW1+[If=ruM#NJ7Q2[U9jr;6K& +s+14Js8N#sr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/eGdhobl5NZ^](hDYl:[%V#Hn`QMusEM#N&+If=Kh +EW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@66FfAD6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7 +B)ZZHEW1+[If=ruM#NJ7Q2[cNs8N#srVl`oqYpn/HA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:B")h +<;oqt>5hn.A,^*>D>nPSFoHggK)UQ)O8bFDS,T2^WrB7%\c0>B_u@jYci2Dmg]$+0ir80@l2^5QmdC)D +rq-3`rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Serkn`Lrji$4ri5sm +rgNhOrf@&6rdk&srcS3[rb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZ +r_3;cr_WSmr`9#$ra5Y6ral(Grc.p[rdFctreLK6rfmDNrhKImrilC4rkABLrlb;ermUl$rndY5roj@H +rpKdTrq$-^rqZQjrqucorr0D,Jc>cNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ6fp_G5itE46i0:N +7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFoHggK)UQ)O8bCCRf9)]WrB7%\c0>B_u@jYci2Dmg]$(/ +iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RIro*k5rnIG$rm1Se +rkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[r^QlTqa9L4a$B5] +k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKImrilC4rkABKrlb;e +rmUl$rndY5roj@HrpKdTrq$-^rqZQjrqucorr0D,Jc>cNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ +6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFT-[eJc:H(O8bCCRf9)]WrB7%\c0>B +_Z%aXci2Dmg]$(/iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp0RI +ro*k5rnIG$rm1SerkeZJrji$4ri5smrgNhOrf@&6rdk&rrcJ-Yrb_XGraPk6r`T5%r_remr_EGdr^m)[ +r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y6ral(Grc.pZrd=]rreLK6rfmDNrhKIm +rilC4rkABKrlb;ermUl$rndY5roj@HrpKdTrq$-^rqZQjrqucorr0D,Jc>cNs8N#srVl`oqYpn,G@fBa6=oMM%;uTVm +:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-@fBsnPSFT-[eJc:H(O8bCC +Rf9)]WrB7%\c0>B_Z%aXci2Dmg]$(/iVr'?l2^5QmdC)Drq$-^rqZQjrqucorr1sXj8],Xrr)iorqcWi +rq??_rp]pTrp0RIro3q6rnIG$rm1SerkeZJrji$4ri5smrgWnPrf@&6rdk&rrcJ-Yrb_XHraPk6r`T5% +r_remr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;cr_WSmr`9#$ra5Y7rau.Hrc.pZrd=]r +reLK6rg!JPrhKImrilC4rkABKrlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrqucorr0D,Jc>cNs8N#s +rVl`oqYpn/H +@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:&[ug;uThs=oMe-A,^*>D>nPS +FT-[eJc:H(O8bFDS,T2^WrB7%\c0>B_Z%aXci2Dmg]$+0ir80@l2^5QmdC)Drq-3`rqZQjrqucorr1sX +j8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$rm1Serkn`Lrji$4ri5smrgWnPrf@&6rdk&srcS3[ +rb_XHraYq7r`];&r`&knr_EGdr^m)[r^QlTqa9L4a$B5]k!K&7qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y7 +rau.Hrc.p[rdFctreLK6rg!JPrhKImrilC4rkABLrlb;ermUl$rnm_7roj@HrpKdTrq-3`rqZQjrquco +rr0D,Jc>cNs8N#srVl`oqYpn/HA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6fp_G5itE46i0:N7fGpW8cDE_:B")h<;oqt +>5hn.A,^*>D>nPSFoHggK)UQ)O8bFDS,T2^WrB7%\c0>B_u@jYci2Dmg]$+0ir80@l2^5QmdC)Drq-3` +rqZQjrqucorr1sXi;`fUrquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHDrilC%rhTO`rg*PE +reUQ+rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNk!I*Ro0DG)r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rp'LNrp]pZ +rq??erql]mqu4))JcGZJrr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrjr*5ri5snrg`tR +rf@&7re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9L4\No:Dr^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm:YornIG0ro3q@rosLO!UfCT +nG`(ZpAXmequ6Njro=%:s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1eGdhobl5Q[^](hDYl:^&V>d%b +QN!!FM#N&+If=NiErKtUB)Z<>?iF:/=8l5!;#X5h9`@W_8H)*X7/K@66Mj'n5k[JB60:N56i0:N7fGpW +8cDE_:B")hQ/"/A,^*>DZ4\UG5csiK)UT*OT(UGSc5JbX8]@&])KJD`;\![d/MPoh#?41ir80@ +li-APnc&1[pAXpfqu6NjrjVoYs8;orrr2ipqu6HkpAX^`nc&"Vli-,Iir7j7h#>h&d/M8g`;[ON])Jr5 +X8\spSc4rSOT((8KDp?!G5cO]DZ48IA,]j7>Q._'Q/"/A,^*>DZ4\UG5csiK)UT*OT(UGSc5JbX8]@&])KJD`;\![d/MPoh#?41 +ir80@lN$ASn*g8Grq-3`rqcWkrquZmj8\';rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM&rm:Yhrl+lP +rk&07riH*rrgj%TrfR29re(3"rc\9]rbqdKrac"9r`oG)r`/qor_EGdr^m)[r^QlUr^?NKksGA8bs;(i +r^#[5qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4KrcA'^rdXp"reUQ9rg3VTrhf[rriuI7rkSNP +rltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWkrquZm\,V$Zr;ZcqrqucmrqcWfrq-3[rpTjProj@@rnm_1 +rm^qorltG]rkSNFriuI(rhf[crg3VHreUQ+rdXojrc8!Vrb)4@ra>_1r`K/"r_WShr_3;_r^d#Xr^HfS +pd=:4r^"Lgr^#[5qa:?Nr^HfUr^ZrZr_3;dr_WSor`K/)ra>_9rb)4KrcA'^rdXp"reUQ9rg3VTrhf[r +riuI7rkSNPrltGirm^r&rnm_7roj@I!:KsWn,DkVo`"R`qYpBkr;6KRs5n(df.Pk`W!^Q]`,8:Y5Y?uT)P,VP5^@lIn*!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@/aa:B`;rLFT-OaJ,Y-#MZ/e< +R/W]VVuEgtZi7W:_#D=PcMl8kf)FJ(hu;[8l2L&Kn,DkVo`"UaqYpBkr;6K&s+14Js8N#sr;QTmqYp6g +p&=L\n,DYPl2K`Bi;VO2f)F+scMkf^_>_+HZi7-,VuE:eR/W9JMZ/;.J,X]lF8g+WB`;QA@/aF1=oMJ$ +;Z9Jk:&[ca8H)-Y7K,^M6fUMV5i>!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@/aa:B`;rLFT-OaJ,Y-# +MZ/eRJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg/Ln,DkVo`"UaqYpBk +r;6K&s+14Js8N#sr;QTmqYp6gp&=L\n,D\QlMflDi;VR3f)F+scMki__>_.I[/R6-W;`FgRJrELMuJG0 +J,X`mFT-4XCAqiE@K'R3=oMJ$;Z9Ml:B!lb8cD9[7fGjU7/K@36Mj'u5lO(-6N0@O7/fXS7fGsX8cD?] +:B")h;Z9_r=oM_+@K'j;CAr/NFT-RbJ,Y0$MuJq>RJriXW;a""[/Rc<_Z%RScMl8kf)FM)iVqp;lMg,M +mfDnGrpg![rqHEgrql]mqu5XUi;`fUrqucmrqcWgrq69]rpTjQrp'LDro*k5rmq(trm1Sbrkn`Lrj;[. +ri5sjrgNhNrf$i2rdauorcS3ZrbMLFraPk5r`];&r_i_lr_EGcr_!/\r^QlUr^?NKj$N`2f0B=%!C9$3 +6MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[WrB4$[/Rf=_Z%XU +ci2Dmf)FP*iVqp;lMg/Ln,DnWp&=^bqYpBkr;6K&s+14Js8N#sr;QTmqYp6gp&=O]n,D\QlMflDiVq^5 +f)F.tci2#b_u@CL[/R9.WrA[jRf8QNN;eS2JGsloFoH@ZC]7rF@fB^5>5hV&;Z9Ml:B!oc9)_B\7fGjU +7/0.06N0:&5lO(06MNqI7/fXS7fGsX8cDB^:B")h;Z9bs>5hk-@fC$>C]8;PFoH^dJGt<&N;f(@S,T)[ +WrB4$[/Rf=_Z%XUci2Dmf)FP*iVqp;lMg,MmfDnGrpp']rqHEgrql]mqu5XUi;`fUrr)iorqcWgrq??_ +rp]pSrp0RFro3q7rn.5!rm1Sbrkn`MrjMg2riH*lrgWnQrf6u7re(2trce?^rbVRIraYq7r`fA(r`&ko +r_NMer_!/]r^QcRpd*pT)P)UOT(.:K`6H"H2_maD>n5J +AH$!9>lIn*<;oep:]=)f9)_EW7fGgQ6et*+60:H362a./6N0@L7/07N8cDB^:&[rf;Z9Yp=oM\*@/a^9 +C&VuKF8gF`If>$"MZ/_:Qi$"MZ/_:Qi_2r`];$r_remr_EGcr^luWr^QlTog@Y(r^#d6r^$BIj?i`2qaCK +jo46t*e,IVkaSs*V]`,>i&)I/\?hE;j\QC&VT@?iF=0=8l5!;>sDk:&[fb +8H)-Y7fGjU7.ip]6L$o16iKLQ7K,dU8,c'Y9E%Zb;#X>k<;otu>lJ+0@fC*@D#SDQGQ*!hJGtE)NrG7A +SGo5]VuEn![Jmi<_u@aVc2Q2kfDaS)iVqslIh( +k<;otu>lJ+0@fC*@D#SDQGQ*!h +JGtE)NrG7ASGo5]VuEn![Jmi<_u@aVc2Q2kfDaS)iVqsdKQ +rqucmrqQKerq??^rp]pTroj@Cro*k4rn.5"rm(Mbrl"fLrjMg1ri5smrgj%RrfI,;re(3!rd"K_rbh^N +raYq8ra#M*r`/qrr_WShr_3;^r^ZiTr^HfSpd;b^l9b85r^?`SqaUQTr^d#^r_EGhr_resr`K/*ra>_8 +rbMLNrc.p_rdOj!repc;rg!JRrhKImrilC2rk8rilC%rhKI`rg!JErepc. +rdOilrc.pTrbMLCra>_2r`K/"r_remr_EGdr^d#YqaUQRr^?NKVaC/Gr^?`SqaUQTr^d#^r_EGhr_res +r`K/*ra>_8rbMLNrc.p_rdOj!repc;rg!JRrhKImrilC2rk8U0gpAXX^nG_kTkl0]Cir7g6gA]Y%d/M5f`W!XO\Gif5X8\sp +TDk2VP5^L@K`6K#HiA*cE;j\QAc?0dOpZMqE6^])4Ob5Tceec+8$ +hYuO6k5OTDmf)_To)A@^p\t!fqu6NmrNZBRs7u]orVl`oqu6Ejq#:!do)A.Xmf)GLjo49=hYu7.ec*qp +bPoK[^](bBZMpp(V>d+dQi<0INrF_2J,XfoF8g.XD#S#F@fBa6=oMM%<;o_n:B!rd8cD9[8,c!W7K,^G +6a/oM6iKLQ7K,dU8,c'Y8cDE_:B")h<;oqt=oMe-@fBsdOpZMqE6 +^])4Ob5Tceec+8$hYuO6k5OTDmf)\UncA=Prq??crqZQjrqucoh>c=2qu-NlrqcWhrqHE`rpg!Vrp'LG +roF(:rnRM)rm:YgrlG)Srk&0;riZ7!rh9=[rfmDCreLK*rdOiirc8!Vrb2:Ara5Y0r`T5%r_i_lr_EGc +r_!/]r^QcRr^?^?jrquclrqQKe +rq$-ZrpTjOroa:Aro!e2rn%.rrlkA_rkSNFrjDa.ri#girgNhNrf@&6re(3!rc\9]rbqdLrac"8r`oG* +r`B(sr_WShr_*5_r^m)YqaLKPnjBrSogAUEr^H]Rr^m)]r_*5cr_WSlr`B)%r`oG0rac"ArbqdWrc\9i +rdt-)rf@&CrgNh[rhoaurjDa:rkSNSrlkAgrn%/(ro!e:roj@HrpTjV!:p6_oD\L`q>U6fr;QZNs5!_S +rr2lqr;QQlq#:$eo`"F\n,DYPkl0`Di;VO2g&BCucMkuc_>_.I\,NW2WrAgnSGnlSOoC7;L&QT$H2_pb +E;jVOB)Z9=?N+1.=T27u;>sAj9`@]a9)D-X7efCH6cVOb6MNqC7/KIQ8,c-[9E%Wa:]=5j;uTnu>5hk- +@fC!=CAr2OFoH[cJ,Y-#MZ/b;QN!ERV#ICnYl;-2]`,bHb5TZbdJhhuh>Z@3k5OTDli-APo)A:\p\t!f +qYpElrVlf$s+14Gs8N#srVl`oqYp9hp\sgao)A+Wli-,Ik5O</J,X`mFT-7YCAqiE@fB^5>Q.b(;uTYn:]=&e9E%Q\8,c!Q7/0-[6MNqC7/KIQ8,c-[9E%Wa +:]=5j;uTnu>5hk-@fC!=CAr2OFoH[cJ,Y-#MZ/b;QN!ERV#ICnYl;-2]`,bHb5TZbdJhhuh>Z@3k5OTD +li-APnc8:_o^r.WrqZQirqucorr1aRh>dKRqu-NjrqQKerq-3\rpTjQrosFFro*k5rn@A#rm1Serkn`M +rjr*5ri?$qrh'1Xrfd>@reLK(rd4Wfrc.pSrb2:Ara>_1r`T5#r_relr_EGdr_!/\r^ZrWqaLKPnjCYg +p-SF>qaCEPr^QlWr^d#\r_*5cr_NMkr`/r#ra#M2rac"Arb_XSrc\9frdk'(rf-o@rgEbXrhf[rrilC5 +rkABLrlb;ermUl#rn[S4roa:Frp9XQrpp'\rqHEfrqcWmqu3l#JcGQGrr2fnrqcWhrqHEarpp'Wrp9XK +roa:>rndY.rmUkmrlb;YrkJHDrilC&rhf[ergEbLrf-o4rdk&qrc\9\rb_XJrac"9r`oG*r`/qrr_NMg +r_3;`r^d#Yr^QcRr^?U0gp&=R^nG_kTli-,Ij8S!9h#>n(df.Pka8X!U^AbP>Yl:^&T`1J\R/W3HMuJJ1J,XcnFoH@Z +D#S,I@K'X5?2dt*_Z%UTcMl8kf)FJ(hu;[8kl0lHmf)_T +oD\F^q#:*gqYpHjriuKSs7u]orqlZnqYp?iF@1=T2>";Z9Ml:B!rd9)_E]8H)*U7K,^G6d%gh6i0:N +7JfRR8H)3[9)_N`:&[ug;Z9_r=T2V*?iFL5B`;fHE;k"ZHN&EnLAm,1OT(XHSc5;]X8]@&[Jmo>_Z%UT +cMl8kf)FJ(hu;[8kl0lHmf)_To)SFap%A=ZrqZQirr)`nh>c=2rr2fnrqcWirqQKdrq-3[rpTjProsFC +ro!e3rn%/!rm1Sdrl+lOrj_s6riZ6rrh'1Zrf[8?re^W)rd=]irc.pTrbDFCraGe5r`T5%r`/qpr_NMf +r_*5_r^coVr^QcRr^?NKcpIXspd=pHr^H]Rr^ZrYr^m)^r_^Hnqu-NjrqZQgrq??`rpg!Vrp0RJroF(:rn[S*rm^qnrlY5ZrkJHBrj2U,rhTOcrgWnMrf-o6rdauq +rcnE^rbh^Mrac":ra5Y-r`B)!r_`Yjr_U6irVQTMs5!_SrqlZnqu6Hkq>U*eo`"F\nG_hSlMfoEj8Rs8gA]\&dJh>g +`rlIn*sAj:&[ca8cD9[8,GdT +7K,^D6et*-6h<\E7/fXP7fGpW8H)3[9E%Zb:]=5j;Z9_r=T2S)@/a^9B)Z]IE;jqXI/\WpKDpi/OT(LD +T)PJ`VuEn![/RZ9_>_IRbPoogec+;%hu;X7jo4QEm/HMRo)A=]pAXmeqYpBkrVQT!s+14Gs8N#prVl]n +qYphu;@/f)F(rbPoN\_>_%F[JmB/VuEFiT)OuROT(4@/aF1=oMJ$;Z9Pm:]=)f9)_E]8H)-V7fGjU7.3M!6LR;@7/fXP7fGpW8H)3[9E%Zb:]=5j;Z9_r +=T2S)@/a^9B)Z]IE;jqXI/\WpKDpi/OT(LDT)PJ`VuEn![/RZ9_>_IRbPoogec+;%hu;X7jo4QEm/HMR +o)A:^p&Xm\rqZQirql]nqu5FOgAh0Orr)iorql]krqHEcrq-3ZrpKdProa:Aro!e3rn.5"rm1Scrl"fM +rji$7riH*rrh07ZrfmDCreUQ+rdXolrcJ-XrbMLGraYq8ra#M,r`9"sqb[8er_3;`qapZTr^QcRr^>+# +r'U?Lr^H]Rr^ZrZqb$i]r_<8dr`&ktr`];+ra>_8rb)4GrbqdXrcnElre19,rf@&CrgNhZrhf[rrj2U6 +rkABMrlY5drm^r#rn[S3roF(Arp9XPrp]pZrq69brqcWkrqucorr0)#JcGHDrr2oqrqucmrqcWgrq??` +rp]pTrp9XIroF(:rn[S+rm^qnrlP/XrkABBrj2U*rhf[frgNhNrf@&7re(3"rcnEarbqdOrb)4?ra>_2 +r`];%r_r\jr_EGdr_!&Zqa^WTqaLKPb_8rb)4GrbqdX +rcnElre19,rf@&CrgNhZrhf[rrj2U6rkABMrlY5drm^r#rn[S3roF(Arp9XPrp]pZrq-9c!Vc?fqYpBk +r;QZorn@D(s8N#sr;QTmqYp9hpAX^`o)A+WmJc>Kjo49=hYu7.f)F%qbl5]__#CtF[JmB/WW&[lSc4uT +P5^C=LAlc'I/\BiF8g(VCAqlF@fBa6>lIk)sAj:&@T_9)_BY8,c!T7INY56hEeE7/fXP7fGpT +8Gc$Y9E%Zb:]=5j<;oqt=T2S)?iFO6BDuZFDZ4_VGQ*!hJc:E'MuJn=R/WZUU].7lYPts/]DfVFaSsB^ +d/MVqgA]t.ir8*>kl0uKnG`"Xo`"R`q#:-hqu6NjriZ9Ps7?9irr2ipqu6Hkq#:!do`"F\n,D_Rkl0]C +ir7g6gA]\&d/M8gaSs!S]Df5;YPtO#U]-h`Qi<0IMuJJ1Jc:&rGlDd`DZ4DMBDuB>?iF=0=T2A#<;obo +:]=)c9E%Q_8GbpV7f,XC7.3M37/fXP7fGpT8Gc$Y9E%Zb:]=5j<;oqt=T2S)?iFO6BDuZFDZ4_VGQ*!h +Jc:E'MuJn=R/WZUU].7lYPts/]DfVFaSsB^d/MVqgA]t.ir8*>kl0uKnG`"Xo`"Oap]:0brqcWkrquZm +gAfe)rr2oqrquclrqQKdrq69]rp]pUrosFFroF(:rnRM*rmC_jrlY5Wrk8U0gp\sganc&"Vli-/JkPjH>hu;F1ec+"rcMki__>_.I[JmH1Xo>*pT`1J\ +P5^L@MuJA.JGsrqFoHF\DuOJMB)Z9=?iF=0>5hS%<;obo;#X8i:B!ra9DD*U8(L-17RmAIpdtHXqb6l^ +r_WSkr`&ktr`];+ra5Y6rau.DrbqdVrcS3frdXp"repc:rf[8Nrh'1briQ1)rjDa=rkeZSrm(Mjrmh#' +rndY5roa:Frp0RPrpp'\rqHEerqZQjrqucoqu3buJcG?Arr2oqrqucmrqZQgrqHEarpg!Vrp0RJroa:> +rnm_1rmh"rrm(M_rk\TIrjDa1riQ0prh07\rf[8@repc.rdauqrcS3\rbqdMrau.=ra5Y0r`];%r`&ko +r_WSir_EGdqb-]Uqa].*r^Z`Tr_*,^qbI,er_`Yor`9#%r`oG0raPk=rb;@Mrc8!\rd=]pre(3.rf@&A +rg`t[rhKIpriuI1rk8rosFJrpTjWrq-3arqHKh!VuQjqu6NmrVQTJs4@;M +rqlZnr;QQlq#:$eo`"F\n,DbSli-,Ij8S!9h>Z%*eGdenao96X^](eC[/R9.W;`RkT)P&TP5^L@L]2r* +J,X]lFoHC[D>n8KB)Z6X/d:&%B\8cD947fZ'\84`_Ope1T\r_E>dr_`Ymr`9#" +r`K/)ra,S4rau.Drb_XSrcS3brdXp"reLK5rf[8Hrgs+`ri#h"rj;[8rkJHNrlP/crmUkurn[S3ro="A +rp'LNrpTjWrq-3arqZQiqu$Hlqu3buJcG?Arr2fnrquclrqQKerq-3\rpTjSrp0RIro="9rn[S*rm^qn +rlP/XrkJHCrj;[.ri#gkrgs+Trf[8@reLK*rdXolrcS3[rb_XKrau._(G[f3Q2XT#*rT`1DZQ2ZmEN;eV3Jc:)sGlDgaE;j\Q +C&VZB@fBa6?2e%,=T2>"<;oep;#=&c:&[ic9(GRB8G,OS9)M5hh,?iFO6 +AH$U6fr;QYns+14>s82cor;QQlq#:$ep&=R[nG_eRl2KcCir7j7gA]\&dJhAha8WpS]Df85hY'5hh,?iFO6AH$#Rrk/6>rilC&rhf[frgWnQrfI,ra>_3 +ra#M+r`K/$r`&kpqb[/cr_E>boh>-RnkB$W!)EGeqbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![ +rd4Wnrdb!(repc;rg*PQrh07fri?%&rjVm=rkSNRrlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQi +rql]nqu3PoJcG6>rr2fnrql]krqZQfrq69]rp]pSrp0RHroF(:rn[S,rmh"prlkA^rkSNGrjVm2ri?$q +rh07[rg*PFrf$i4rdaurrd4Wdrc.pUrbDFEraYq8ra,S0r`T5&r`B(ur_iViqbR2dqb?`Wpe10Or_<8b +qbR)cr_reqr`B)$r`T5+ra5Y4raYq?rbDFNrc8![rd4Wnrdb!(repc;rg*PQrh07fri?%&rjVm=rkSNR +rlb;frmh#$rn[S3roF(Arp0RNrp]pXrq69brqZQi!;cfoqu6Qkrm^tts8N#prVl`oqu6Hkp\smco`"@Z +mf)VQl2KiEir7g6gA]_'dJhGjb5T9W^Ab_CZi70-WrAdmTDk>ZPQ$XBMuJG0K)U5uGlDjbEW0kTCAqlF +AH$';?iF@1>5h\(sDh:]=,O:&@]b:B45h;#X>h;Z9YphYu7.fDa1scMkuc_Z%:K +])K&8YPtR$U]-nbS,SWNO8b(:L&Q]'If=TkFoHC[DZ4DMBDuH@@fBa6?2e%,=oMJ$j;#=&f +:?G:J:B"&d;#X>h;Z9YpBre^W-rdaur +rcnEbrc%jSrbVRHral(;ra>_3r`oG*r`K/$r`/qsr_reoqbc0Gr_WYnr)3Mmr`&ksr`B)$r`T5*ra#M2 +raGe:rb)4Hrbh^SrcS3crdFcrre:?.rf@&Brg*PUrhKIiriZ7+rjMg?rk\TQrltGhrmUl"rn[S3roO.C +rp'LOrp]pWrq69arqHEgrql]mrr)`nW;hGKnGiLequ-Nlrql]krqHEcrq69\rp]pUrp'LGroO.;rnRM+ +rmUknrltG]rkeZKrjMg3riZ6trhBCarg*PIrf@&8re19$rdFcjrcS3Zrbh^Orb)4AraGe6ra,S/r`T5& +r`B)!r`&kqr_iVjh,+)JqbmDlr`&ksr`B)$r`T5*ra#M2raGe:rb)4Hrbh^SrcS3crdFcrre:?.rf@&B +rg*PUrhKIiriZ7+rjMg?rk\TQrltGhrmUl"rn[S3roO.Crp'LOrp]pWrq69arqHEgrqc]n!W;lprVQTD +s3^lGrqlZnr;QTmq>U0gp\sganc&"Vm/H;Lkl0T@i;VU4f`'D"ci2/fa8WpS^&GM?ZMq$+W;`OjT)P/W +Pl?dDN;eY4Jc:/uI/\5h\(=T2D$2raYq@rbDFMrbqdWrc\9grdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAf +rm^r"rndY4ro3q@rp'LLrpTjWrq-3arqQKgrql]mqu-NnV>l,HmJm1bqu-Nlrql]jrqQKerq-3[rpTjQ +rp'LHro3q8rndY,rm^qnrlkA^rk\TIrjVm4riZ7!rhBC`rgEbMrfI,.r`oG+r`T5&r`B)"qc3Vpku7R\qc3Vrr`B)$r`T5(r`oG.qd9>2raYq@rbDFMrbqdWrc\9g +rdOitreUQ3rfI,DrgEbWrhBCjriZ7+rj_s@rk\TRrlkAfrm^r"rndY4ro3q@rp'LLrpTjWrq-3arqQKg +rql]m!<)iorr1=FcN!nCqu-NlrqcWirqQKbrpp'XrpKdOrosFDro="8rnIG(rmUkmrlY5ZrkSNFrjVm2 +riH*trh9=^rgEbLrfI,5hb*>lJ%.?iFI4@K'j;B)ZHBC]85NE;k"ZGlE$gJ,Y*"LAm/2O8b@BRJrcVU&M"iXT#I' +\,O#=_#D=Pb5T`de,Itug]$+0ir8'=l2L#Jmf)_ToD\C]q#:*gqYU3irVQSjs+148s8N#prVl`oqYplIt,>5h\%=T2Cd5hb*>lJ%.?iFI4@K'j;B)ZHB +C]85NE;k"ZGlE$gJ,Y*"LAm/2O8b@BRJrcVU&M"iXT#I'\,O#=_#D=Pb5T`de,Itug]$+0ir8'=l2L#J +mf)_ToD\C]q#:*gqYU0jr;llqqu5"CcN!nCqu-NlrqcWirqQKcrq-3\rp]pSrp0RGroF(;rndY.rmq(q +rlkA_rkeZKrk&09rilC(rhTOergs+Trfd>Brf$i3rdt-"rd=]jrcA'ZrbqdQrbDFGral(>raPk7qd95+ +r`oG,r`\Phr`];*rEKA.>lJ%.?i+71@fBm:Ac?BBCAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_ +V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@li->OnG`"XoD\F^q#:*gqYU3irVQSjs+148s8N#p +rVl`oqYp@fBd4?i+..>lIt,>3T2h>5hb'>lJ%.?i+71@fBm:Ac?BB +CAr)LDuObUF8gIaI/\ZqK)UQ)N;en;PQ$mIT)PG_V#ILqYl;!.]DfSE_Z%XUbl5ugf)FA%hYuL5jSn<@ +li->OnG`"XoD\F^q#:*gqYU0jr;llqqu5"CbQ%A9rql]krqZQfrq??`rp]pUrpKdNroa:Aro!e3rn@A$ +rmC_jrlG)WrkJHErjMg2riQ0trhBCargNhQrfI,=repc/rdk&urd4WhrcS3[rc%jTrbVRKrb;@Eral(= +raPk8ra5Y4oj@K#pg=#.ra,Y6!F]F9@fBm:Ac??AC&VoID#SAPE;jkVFoHXbHiANoK)UH&MuJb9OT(UG +S,T&ZUAh+jXo>U)[f3o<^])1NaSsKadJhYpgA]n,i;Vg:kl0lHmf)\SnG`(Zp&=^bq>U6iqtU,^s+145 +s7lQlqu6Hkq>U-fpAX^`nG_nUmf)MNkPjQAi;VR3gA]V$dJhGjaSs-W^](kE[f3Q2Xo>6tUAgeaRf8ZQ +OT(7=MuJD/Jc:/uHiA9hFoHC[E;jeTD#S2KC&VcEAc?3=@fBg8?iFI+?hdt&?iFI4?iFL5@fBm:Ac??A +C&VoID#SAPE;jkVFoHXbHiANoK)UH&MuJb9OT(UGS,T&ZUAh+jXo>U)[f3o<^])1NaSsKadJhYpgA]n, +i;Vg:kl0lHmf)\SnG`(Zp&=^bq>U6iqtg6lrVaq>bQ%S@qu-Nlrql]krqQKdrq69^rpg!Vrp0RJroa:? +rnm_1rmq(trm1SfrlG)VrkABCrjMg1riH*trhBC`rgWnPrf[8Are^W0re(3#rdFclrc\9_rc8!Wrbh^P +rbDFGqe,n?rakk7raPY2qdT>1rac(A!G5s@BDuWECAr)LDZ4VSErL4\G5cgeI/\ZqKDpW)M>iS8P5^aG +S,T&ZUAh+jX8]@&[f3l;^Ac%La8X<^ci2Dmf)FJ(hu;X7kPj`Fli-APnc&.Zp&=^bq#:-hqu6NmrVQSd +s+145s8N#prVl`oqu6Hkq#:!dp&=R^nc&"Vli-/JkPjK?hu;F1f)F.tci2/faSs*V^Ab_C[f3N1XT#0t +UAgb`S,S]PP5^OAM>i;0KDpE#IK"QlG5cU_ErL%WDZ4MPCAqoDBDuNBAb]d7@eaC/@eaI4Ac?<=BDuWE +CAr)LDZ4VSErL4\G5cgeI/\ZqKDpW)M>iS8P5^aGS,T&ZUAh+jX8]@&[f3l;^Ac%La8X<^ci2Dmf)FJ( +hu;X7kPj`Fli-APnc&.Zp&=^bq#:-hqu6NmrVc]rrr1+@bQ%S@qu-Nlrql]krqQKerq??`rpp'WrpKdO +roj@Bro3q7rn@A&rmLemrlb;]rkSNHrk&09riuI*rhf[irh'1Zrg*PHrf@&:re^W,rdk&urd4Wirc\9^ +rc7mSrb_XNrbMLJrb;7BratV1qe#h?rb2@I!GZBKC]8/LD>S8NEW1%YG5cacHiANoJc:<$M>iJ5O8b=A +Qi_LSbPolfdf.hsgA^"/ir8$ZQN!'HO8b(:M>i/,Jc:/uHiAnANC]8)JC&;QBB('=.B)ZHBC&VlH +C]8/LD>S8NEW1%YG5cacHiANoJc:<$M>iJ5O8b=AQi#`rm:Ymrn7;+rnm_6roO.Crp0RNrp]pWrq$-^rqHEfrqcWkrquZlqu35f +JcFp5rr2]krqucmrqcWhrqHEbrq-3[rp]pSrp0RIroO.#VrkJHErjMg3riZ7# +rhf[frgs+Zrg!JGrf@&:re^W/rdk'!rdOinrd+QgrcJ-[rc.pVqeuIOk&(!5rbq[Qrc.pYrcJ-ard"Ki +rdOirrdk''reUQ3rf@&Arg!JQrgs+^rhf[oriZ7+rjVm=rkJHMrl>#`rm:Ymrn7;+rnm_6roO.Crp0RN +rp]pWrq$-^rqHEfrqcWkrquZlrVcisrlb>bs7lTjrVl`oqYpn(e,I\mbl5]_`;[ON]Df>>ZMq',XT#*rU]-nbS,ScRPl?dDNW+k8LAll*K)U<"If=`oHN&0gG5cX` +FT-@;EW1"ZF9-K*rcS3`rcnEgrd=]ordb!"re19*repc9rfI,Drg3VRrh'1brhf[rric=,rj_s>rkJHN +rlG)_rm1Smrmq)(rndY4roO.BrosFLrpTjVrq$-^rq??drqZQiqu$Hlq#6ocJcFp5q#:0hrquclrqZQg +rq??`rq$-ZrpTjRrosFFroO.;rndY0rmq(trm1SfrlG)WrkJHErj_s5ric=&rhf[irh'1Zrg3VKrfI,= +repc1re19&rdausrd=]krcnEcrcS3^rc?n8rcA'\rcS3`rcnEgrd=]ordb!"re19*repc9rfI,Drg3VR +rh'1brhf[rric=,rj_s>rkJHNrlG)_rm1Smrmq)(rndY4roO.BrosFLrpTjVrq$-^rq??drqZQiqu$Hl +qYgNprlb>\s8N#prVl`oqu6Hkq>U-fpAX^`o)A.Xn,DYPl2KlFir7m8hu;=.f)F+sd/M8gaSs'U^](qG +[f3W4YPtX&W;`UlT`1M]Rf8QNP5^OANW+h7M#N),K)U9!JGt#sI/\HkH2`'`FmjGIFoHUcGl`29rd+Qk +rdFcrrdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOkriH+&rj2U4rk8rj2U-riH*trhTOdrgj%WrfmDFrf@&IrcnEfrd+QkrdFcrrdXp!re19,reg]7rf@&ArfmDNrgj%]rhTOkriH+&rj2U4 +rk8riuI+riQ0srhKIc +rgs+Yrg<\KrfR2@rf-o8re^W/re19'rdalqpjW*gpjE'hpjW3l!.autre(3(reCE/repc8rf@&@rfd>K +rgNhXrh07drhf[sric=+rj_s=rkABJrl+lXrm(MirmLf!rnRM1ro!e:roa:HrpBUOrpp'\rqHEerqZQi +rql]mrr)`nQN)O9hZ*TSqu-Nlrql]krqZQgrqHEarposTrp9XMroa:Aro!e5rnIG*rmLemrm(Marl+lQ +rkABDrj_s4ric='rhf[irh07^rgWnSrfd>Drf@&KrgNhXrh07drhf[sric=+rj_s=rkABJrl+lXrm(MirmLf!rnRM1ro!e:roa:H +rpBUOrpp'\rqHEerqZQirql]mrr)`nqZ"\;_Z0W7qu-NlrqlThrqZQgrq69_rpp'XrpKdQrosFFroF(: +rndY0rmq(trm:YhrlP/[rk\TJrk&0rf$i6reUQ.re:?) +on*0oqgeZson*0r!/1H-L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\bVZ*RoXo>R([/RN5]DfPD_>_LS +b5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6NmrVQS[s+14,s8N#prVl`oqtp6h +q>U0gp&=U_o)A.Xmf)VQl2KlFjSn*:hYu=0f)F.td/M;hao9?[_>_1J]Df8=!VZ*=hTDkD\ +R/WENPl?jFOT(:>N;e_6M#N/.L&QbuK)U>uJGt,mK)UH&L&Qi+M#N;2N;ek:OT(FBPl@!JR/WZUT`1\b +VZ*RoXo>R([/RN5]DfPD_>_LSb5TZbd/MPof)FJ(hYuI4jSn<@l2L)Lmf)_To)A:\p&=acq>:$fqu6Nm +rVQTjs2k;Xs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUli-/JkPjK?i;VX5g&BV&eGdhocMl&e`W!dS +^](nF\Gio8Yl:g)XT#-sV#I%dTDkA[Rf8WPPl?mGOT(=?NrG":MuJV/M#N2/LAQ](LAlu'M#N83MZJ`o +rf$i:rf@&?rfd>Hrg*PPrg`t[rh07drhoasriZ7)rjDa8rk/6FrkeZRrlkAerm:Yormq)%rnm_6ro3q? +rosFJrpTjUrpg![rq69arqQKgrqcWkrquZlqu2o]JcFU,rr2]krqucmrqcWirqQKdrq69_rpg!WrpTjP +rosFFro3q8rnm_.rn%/!rm:YirlkA\rkn`Mrk/6?rjDa0riZ7%rhoakrh07_rg`tVrg*PJrfd>Crf@&= +rf$i7regK,reLK-qh>$(reL9)reg]5rf$i:rf@&?rfd>Hrg*PPrg`t[rh07drhoasriZ7)rjDa8rk/6F +rkeZRrlkAerm:Yormq)%rnm_6ro3q?rosFJrpTjUrpg![rq69arqQKgrqcWkrquZlqu6HlaoB$Rrr2]k +qtpBhrqQKerq??`rposTrp9XMroa:Bro*k7rn[S-rmq(trm1SgrlP/[rk\TKrk8_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\pAXgcq"speqtU-erfdA5s4IAN +rqQHhqu6Hkq#:$epAX^`o)%nTm/H>MkPjTBiVqd7h>Z.-f)F.tci22gao9?[_>_4K^&GSA[f3T3Yl:d( +X8]!qV#I(eT`1P^SGnrUR/WENPl?mGP5^R*O8G%_LSb5TZbci2Dmf)FD&h#?72iVqp;kPjfHmJHAOo)A:\pAXgcq"speqtU-erqHH7s1JC/ +rqlZnr;QTmqYphu;I2g&BV&e,I_nc2Poc`r> +[/RB1YPt['WrAsrV>d7eT`1P^SGnuVRJrTQQi<roa:FrpB^Qrp]pXrq-3_rqHEerqZQi +rql]mrr)NhPQ-46f`1jJqu-Nlrql]krqZQgrqHEbrq-3\rp]pTrpB^Lroj@Dro3q7rn[S,rn%.urm:Yh +rlb;\rkn`NrkABDrj_s7rj)O,riQ1"ri#gmrhK@`rgs+ZrgNhSrg<\Org*>EpltZ@rg*PMrg<\QrgNhV +rgiqZrhKIhri#grriQ1'rj)O1rj_s=rkABIrl"fUrlb;crm:Ynrmq)%rn[S3ro3q>roa:FrpB^Qrp]pX +rq-3_rqHEerqZQirql]mrr)Nhp]&A8\c;[.qu-NlqtpBhrqZQgrq??arq-3[rp]pUrp0RKroj@Bro3q7 +rndY.rn%.urmLelrltG`rl+lQrkSNIrjr*U6iqtpU0gpAXaao`"C[ +nG_nUli-2Kkl0ZBir7j7hYu7.fDa7udf.Slc2Pf``W!^Q_#D(I])K2<[/RU6iqtpMkl0`Djo46d:ZU\gkdV>d=lVZE]nri,mtriQ1&ric=+rj)O2rj_s=rkABHrk\TPrl4rZrm(Mh +rm:Yprn%/&rn[S2ro*k#Vrk\TLrkABCrjVm7rj)O-ric=( +riH+"ri,mqrhfRhrhT"XqkX4frhf[mri,mtriQ1&ric=+rj)O2rj_s=rkABHrk\TPrl4rZrm(Mhrm:Yp +rn%/&rn[S2ro*krjMg6rj2U0 +qlp(&riPsrri5amql9FlriH1'!NrU&Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb* +h>Z=2ir8$Z.-g&BP$e,I_ncMl&eb5TE[`;[UP^](nF]Df>>[f3]6Zi79- +Yl:g)Xn\srWq`RjWq`XoXo>L#Yl:s-Zi7B3\,No:]DfMC^])(K`;[dUb5TT`cMl2ie,Insg&Bb*h>Z=2 +ir8$$g]$%+i;Vd9jSnBBl2L#GmecMQoD\C]p\Xa_qYpBhr;QZire1<& +s31NZ1.f`'J$eGdhoci25hbPoZ`aSs0X +`;[[R_>_7L^](tH^&G\A]DfD=\bN]6\biu;]DfJB^&GbF^])%J_>_@O`;[aTaSs<\bPofdci2;jeGe%u +f`'Y)h>?.0j8S-=kl0iGlhg,InG`%Yo`"U^q"speqtpU0gp&=U_ +oD\:ZnG_nUmJcJOlMg#Hk5OH@ir7m8hYu:/gA]e)ec+(tdJhMlcMl&eb5TN^aSs3Y`W!gT_Z%CK_#D+5 +^AbnE^];1O_86,frl"fTrl4rYrlP/^rlkAdrm:YlrmUksrn7;)rnIG/ro!e8roF(@roj@Hrp0RNrpTjU +rpg!Zrq-3_qtU0drqcWkqu$Hlp&9XEJcEsop&=shqu$HjrqcNfrqQKcrq-3]rpg!WrpTjRrp9XLroj@D +roF(rknWOrl+cS +rlP/^rlb;crm(Mirm1SkrmUktrn%/&rn[S1qr%J6roF(ArosFIrpB^QqsaUUrq$-^rq??crqZHfrqlTj +rr)NhjoU0gp\smcp&=U_nc&%W +n,DbSm/H>Ml2KoGkPjN@iqq[5hYu=0gA]e)f`'G#eGdnqdJhMfci25ec2PrUbPTN_c25f`ci2;jdJhSn +e,Insf`'S'gA]n,h>?.0ir8!;kPj]El2L#JmJcPQn,DhUnc&1[p&=[ap\sseq>:$fqtU-brnmats/5ni +rqlZnr;6BjqYU*fp\smcp&"@[nc&%Wn,DbSm/H;Ll2KiEjo4??ir7m8hu;I2h#?(-g&BY'fDF+teGdqr +dehGkd-8mUd/22jdK.eErmUbormh#"rn.5'rnIG-rn[S2ro*k9roF(?roX4Erp0RMqsOIQrpg!Yrq$-^ +rq??crqZHfrqlTjrr)EeJcGWIJcEXfp&=jerquZjrqcNfrqHEcrq60[rpg!WrpTjSrp9XLrosFEroO.? +ro3q8rnm_2rnRM-rn7;'rn%%trm^qrrmL\krm9oUrm:PirmLepqpbVqrn%/%rn7;*rnRM/rnm_6ro3q< +roO.ArosFJrp9OMrp]pWrpp'[rq69arqHEfqtg?")g[Ekqg\'A$h>?+/i;VX5iVqj9jSn9?k5OTD +l2KuIm/HDOmf)\PnG`%Vo_A1[q>:$fqtprp'LKrp9OMqsaUUrq#pXqtU0d +qtgrp'LKrp9OMqsaUUrq#pXqtU0dqtgkPOKBlMg,K +m/-5MnG_nUnG_tWoDA1WpAXgcq>:$fqtpjSn34ipYk!ir8!;jSn9U0dp\sm`p&=U\oD%kQnG_nUnGD\L +mdKQ:$fqtpU0dp\smW +p&"CDoCqkXo^qhLqtC$`qtU'aqtg*bq#(-im/DS9eGk+"RK)jWqu-Nlqu$6drqc<`rqQBbrq>pUqt0%B +p%7qMqtC$`qtU'aqtg*bq#(-im/FNpao?qlo`+gfo)8@]qtp9ep%eU^o(W%Tk4SKB!VZ6[p\Xa_q=XU` +qtU*^rUp/@s3(Fns,d9XrqQHhrV6U0[p\X[Hp%A%Op\Xa_q=XU`qtU*^rUp/ns2k:ls60LX +rpTg\r;6B^qUG<@qX+.YqtU*XrV6ACs1JA_s+LFOrql]`rV6 %APLeod +EI +0.60000002 i +/Cs3 SC +0 0 0 sc +CM +36.60659 380.6066 m +42.464478 374.74872 42.464478 365.25128 36.60659 359.3934 c +30.748734 353.53552 21.251266 353.53552 15.39341 359.3934 c +9.5355186 365.25128 9.5355186 374.74872 15.39341 380.6066 c +21.251266 386.46448 30.748734 386.46448 36.60659 380.6066 c +f +1 J +1 j +1 0 0 -1 -53 451 cm +89.60659 70.393402 m +95.464478 76.251282 95.464478 85.748718 89.60659 91.606598 c +83.748734 97.464478 74.251266 97.464478 68.39341 91.606598 c +62.535519 85.748718 62.535519 76.251282 68.39341 70.393402 c +74.251266 64.535522 83.748734 64.535522 89.60659 70.393402 c +S +1 0 0 sc +CM +240.6066 380.6066 m +246.46448 374.74872 246.46448 365.25128 240.6066 359.3934 c +234.74872 353.53552 225.25128 353.53552 219.3934 359.3934 c +213.53552 365.25128 213.53552 374.74872 219.3934 380.6066 c +225.25128 386.46448 234.74872 386.46448 240.6066 380.6066 c +f +0 0 0 sc +1 0 0 -1 -53 451 cm +293.6066 70.393402 m +299.46448 76.251282 299.46448 85.748718 293.6066 91.606598 c +287.74872 97.464478 278.25128 97.464478 272.3934 91.606598 c +266.53552 85.748718 266.53552 76.251282 272.3934 70.393402 c +278.25128 64.535522 287.74872 64.535522 293.6066 70.393402 c +S +CM +104.6066 380.6066 m +110.46448 374.74872 110.46448 365.25128 104.6066 359.3934 c +98.748734 353.53552 89.251266 353.53552 83.393402 359.3934 c +77.535522 365.25128 77.535522 374.74872 83.393402 380.6066 c +89.251266 386.46448 98.748734 386.46448 104.6066 380.6066 c +f +1 0 0 -1 -53 451 cm +157.6066 70.393402 m +163.46448 76.251282 163.46448 85.748718 157.6066 91.606598 c +151.74873 97.464478 142.25127 97.464478 136.3934 91.606598 c +130.53552 85.748718 130.53552 76.251282 136.3934 70.393402 c +142.25127 64.535522 151.74873 64.535522 157.6066 70.393402 c +S +CM +172.6066 380.6066 m +178.46448 374.74872 178.46448 365.25128 172.6066 359.3934 c +166.74873 353.53552 157.25127 353.53552 151.3934 359.3934 c +145.53552 365.25128 145.53552 374.74872 151.3934 380.6066 c +157.25127 386.46448 166.74873 386.46448 172.6066 380.6066 c +f +1 0 0 -1 -53 451 cm +225.6066 70.393402 m +231.46448 76.251282 231.46448 85.748718 225.6066 91.606598 c +219.74873 97.464478 210.25127 97.464478 204.3934 91.606598 c +198.53552 85.748718 198.53552 76.251282 204.3934 70.393402 c +210.25127 64.535522 219.74873 64.535522 225.6066 70.393402 c +S +CM +36.60659 312.6066 m +42.464478 306.74872 42.464478 297.25128 36.60659 291.3934 c +30.748734 285.53552 21.251266 285.53552 15.39341 291.3934 c +9.5355186 297.25128 9.5355186 306.74872 15.39341 312.6066 c +21.251266 318.46448 30.748734 318.46448 36.60659 312.6066 c +f +1 0 0 -1 -53 451 cm +89.60659 138.3934 m +95.464478 144.25128 95.464478 153.74872 89.60659 159.6066 c +83.748734 165.46448 74.251266 165.46448 68.39341 159.6066 c +62.535519 153.74872 62.535519 144.25128 68.39341 138.3934 c +74.251266 132.53552 83.748734 132.53552 89.60659 138.3934 c +S +1 0 0 sc +CM +240.6066 312.6066 m +246.46448 306.74872 246.46448 297.25128 240.6066 291.3934 c +234.74872 285.53552 225.25128 285.53552 219.3934 291.3934 c +213.53552 297.25128 213.53552 306.74872 219.3934 312.6066 c +225.25128 318.46448 234.74872 318.46448 240.6066 312.6066 c +f +0 0 0 sc +1 0 0 -1 -53 451 cm +293.6066 138.3934 m +299.46448 144.25128 299.46448 153.74872 293.6066 159.6066 c +287.74872 165.46448 278.25128 165.46448 272.3934 159.6066 c +266.53552 153.74872 266.53552 144.25128 272.3934 138.3934 c +278.25128 132.53552 287.74872 132.53552 293.6066 138.3934 c +S +CM +104.6066 312.6066 m +110.46448 306.74872 110.46448 297.25128 104.6066 291.3934 c +98.748734 285.53552 89.251266 285.53552 83.393402 291.3934 c +77.535522 297.25128 77.535522 306.74872 83.393402 312.6066 c +89.251266 318.46448 98.748734 318.46448 104.6066 312.6066 c +f +1 0 0 -1 -53 451 cm +157.6066 138.3934 m +163.46448 144.25128 163.46448 153.74872 157.6066 159.6066 c +151.74873 165.46448 142.25127 165.46448 136.3934 159.6066 c +130.53552 153.74872 130.53552 144.25128 136.3934 138.3934 c +142.25127 132.53552 151.74873 132.53552 157.6066 138.3934 c +S +CM +172.6066 312.6066 m +178.46448 306.74872 178.46448 297.25128 172.6066 291.3934 c +166.74873 285.53552 157.25127 285.53552 151.3934 291.3934 c +145.53552 297.25128 145.53552 306.74872 151.3934 312.6066 c +157.25127 318.46448 166.74873 318.46448 172.6066 312.6066 c +f +1 0 0 -1 -53 451 cm +225.6066 138.3934 m +231.46448 144.25128 231.46448 153.74872 225.6066 159.6066 c +219.74873 165.46448 210.25127 165.46448 204.3934 159.6066 c +198.53552 153.74872 198.53552 144.25128 204.3934 138.3934 c +210.25127 132.53552 219.74873 132.53552 225.6066 138.3934 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 231.5 409.5 cm +/F1.1[ 12 0 0 -12 0 0]sf +-4.5 4.5 m +(!)s +1 0 0 -1 230 248.5 cm +-4.5 4.5 m +(!)s +1 0 0 -1 162 409.5 cm +-4 4.5 m +(")s +1 0 0 -1 93 409.5 cm +-4 4.5 m +(#)s +1 0 0 -1 26 409.5 cm +-4 4.5 m +($)s +1 0 0 -1 26 248.5 cm +-4 4.5 m +(%)s +1 0 0 -1 94.5 249.25 cm +-4 4.5 m +(&)s +1 0 0 -1 162 249.25 cm +-4 4.5 m +(')s +1 0 0 -1 351 350 cm +-32 4.5 m +(\(\)*+,-.\)/)[ 8.865234 6.685547 9.246094 3.796875 6.902344 7.371094 7.359375 6.685547 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +CM +36.60659 140.6066 m +42.464478 134.74872 42.464478 125.25128 36.60659 119.3934 c +30.748734 113.53552 21.251266 113.53552 15.39341 119.3934 c +9.5355186 125.25128 9.5355186 134.74872 15.39341 140.6066 c +21.251266 146.46448 30.748734 146.46448 36.60659 140.6066 c +f +1 0 0 -1 -53 451 cm +89.60659 310.3934 m +95.464478 316.25128 95.464478 325.74872 89.60659 331.6066 c +83.748734 337.46448 74.251266 337.46448 68.39341 331.6066 c +62.535519 325.74872 62.535519 316.25128 68.39341 310.3934 c +74.251266 304.53552 83.748734 304.53552 89.60659 310.3934 c +S +1 0 0 sc +CM +240.6066 140.6066 m +246.46448 134.74872 246.46448 125.25128 240.6066 119.3934 c +234.74872 113.53552 225.25128 113.53552 219.3934 119.3934 c +213.53552 125.25128 213.53552 134.74872 219.3934 140.6066 c +225.25128 146.46448 234.74872 146.46448 240.6066 140.6066 c +f +0 0 0 sc +1 0 0 -1 -53 451 cm +293.6066 310.3934 m +299.46448 316.25128 299.46448 325.74872 293.6066 331.6066 c +287.74872 337.46448 278.25128 337.46448 272.3934 331.6066 c +266.53552 325.74872 266.53552 316.25128 272.3934 310.3934 c +278.25128 304.53552 287.74872 304.53552 293.6066 310.3934 c +S +CM +104.6066 140.6066 m +110.46448 134.74872 110.46448 125.25128 104.6066 119.3934 c +98.748734 113.53552 89.251266 113.53552 83.393402 119.3934 c +77.535522 125.25128 77.535522 134.74872 83.393402 140.6066 c +89.251266 146.46448 98.748734 146.46448 104.6066 140.6066 c +f +1 0 0 -1 -53 451 cm +157.6066 310.3934 m +163.46448 316.25128 163.46448 325.74872 157.6066 331.6066 c +151.74873 337.46448 142.25127 337.46448 136.3934 331.6066 c +130.53552 325.74872 130.53552 316.25128 136.3934 310.3934 c +142.25127 304.53552 151.74873 304.53552 157.6066 310.3934 c +S +CM +172.6066 140.6066 m +178.46448 134.74872 178.46448 125.25128 172.6066 119.3934 c +166.74873 113.53552 157.25127 113.53552 151.3934 119.3934 c +145.53552 125.25128 145.53552 134.74872 151.3934 140.6066 c +157.25127 146.46448 166.74873 146.46448 172.6066 140.6066 c +f +1 0 0 -1 -53 451 cm +225.6066 310.3934 m +231.46448 316.25128 231.46448 325.74872 225.6066 331.6066 c +219.74873 337.46448 210.25127 337.46448 204.3934 331.6066 c +198.53552 325.74872 198.53552 316.25128 204.3934 310.3934 c +210.25127 304.53552 219.74873 304.53552 225.6066 310.3934 c +S +CM +36.60659 72.606598 m +42.464478 66.748718 42.464478 57.251282 36.60659 51.393402 c +30.748734 45.535522 21.251266 45.535522 15.39341 51.393402 c +9.5355186 57.251282 9.5355186 66.748718 15.39341 72.606598 c +21.251266 78.464478 30.748734 78.464478 36.60659 72.606598 c +f +1 0 0 -1 -53 451 cm +89.60659 378.3934 m +95.464478 384.25128 95.464478 393.74872 89.60659 399.6066 c +83.748734 405.46448 74.251266 405.46448 68.39341 399.6066 c +62.535519 393.74872 62.535519 384.25128 68.39341 378.3934 c +74.251266 372.53552 83.748734 372.53552 89.60659 378.3934 c +S +1 0 0 sc +CM +240.6066 72.606598 m +246.46448 66.748718 246.46448 57.251282 240.6066 51.393402 c +234.74872 45.535522 225.25128 45.535522 219.3934 51.393402 c +213.53552 57.251282 213.53552 66.748718 219.3934 72.606598 c +225.25128 78.464478 234.74872 78.464478 240.6066 72.606598 c +f +0 0 0 sc +1 0 0 -1 -53 451 cm +293.6066 378.3934 m +299.46448 384.25128 299.46448 393.74872 293.6066 399.6066 c +287.74872 405.46448 278.25128 405.46448 272.3934 399.6066 c +266.53552 393.74872 266.53552 384.25128 272.3934 378.3934 c +278.25128 372.53552 287.74872 372.53552 293.6066 378.3934 c +S +CM +104.6066 72.606598 m +110.46448 66.748718 110.46448 57.251282 104.6066 51.393402 c +98.748734 45.535522 89.251266 45.535522 83.393402 51.393402 c +77.535522 57.251282 77.535522 66.748718 83.393402 72.606598 c +89.251266 78.464478 98.748734 78.464478 104.6066 72.606598 c +f +1 0 0 -1 -53 451 cm +157.6066 378.3934 m +163.46448 384.25128 163.46448 393.74872 157.6066 399.6066 c +151.74873 405.46448 142.25127 405.46448 136.3934 399.6066 c +130.53552 393.74872 130.53552 384.25128 136.3934 378.3934 c +142.25127 372.53552 151.74873 372.53552 157.6066 378.3934 c +S +CM +172.6066 72.606598 m +178.46448 66.748718 178.46448 57.251282 172.6066 51.393402 c +166.74873 45.535522 157.25127 45.535522 151.3934 51.393402 c +145.53552 57.251282 145.53552 66.748718 151.3934 72.606598 c +157.25127 78.464478 166.74873 78.464478 172.6066 72.606598 c +f +1 0 0 -1 -53 451 cm +225.6066 378.3934 m +231.46448 384.25128 231.46448 393.74872 225.6066 399.6066 c +219.74873 405.46448 210.25127 405.46448 204.3934 399.6066 c +198.53552 393.74872 198.53552 384.25128 204.3934 378.3934 c +210.25127 372.53552 219.74873 372.53552 225.6066 378.3934 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 231.5 169.5 cm +-4.5 4.5 m +(!)s +1 0 0 -1 230 8.5 cm +-4.5 4.5 m +(!)s +1 0 0 -1 162 169.5 cm +-4 4.5 m +(")s +1 0 0 -1 26 169.5 cm +-4 4.5 m +(#)s +1 0 0 -1 26 8.5 cm +-4 4.5 m +($)s +1 0 0 -1 94 169.5 cm +-4 4.5 m +(%)s +1 0 0 -1 94.5 9.25 cm +-4 4.5 m +(&)s +1 0 0 -1 162 9.25 cm +-4 4.5 m +(')s +1 0 0 -1 355.5 110 cm +-36.5 4.5 m +(012+,-.+34"5)[ 9.322266 3.468750 7.552734 3.796875 6.902344 7.371094 7.359375 3.796875 3.902344 7.587891 7.587891 0.000000 ] xS +ep +end +%%Trailer +%%EOF ADDED Docs/Images/FiringChannels.graffle Index: Docs/Images/FiringChannels.graffle ================================================================== --- Docs/Images/FiringChannels.graffle +++ Docs/Images/FiringChannels.graffle cannot compute difference between binary files ADDED Docs/Images/IMG_9461.JPG Index: Docs/Images/IMG_9461.JPG ================================================================== --- Docs/Images/IMG_9461.JPG +++ Docs/Images/IMG_9461.JPG cannot compute difference between binary files ADDED Docs/Images/Inventory.png Index: Docs/Images/Inventory.png ================================================================== --- Docs/Images/Inventory.png +++ Docs/Images/Inventory.png cannot compute difference between binary files ADDED Docs/Images/TEK00003.png Index: Docs/Images/TEK00003.png ================================================================== --- Docs/Images/TEK00003.png +++ Docs/Images/TEK00003.png cannot compute difference between binary files ADDED Docs/Images/TEK00011.png Index: Docs/Images/TEK00011.png ================================================================== --- Docs/Images/TEK00011.png +++ Docs/Images/TEK00011.png cannot compute difference between binary files ADDED Docs/Images/abort.png Index: Docs/Images/abort.png ================================================================== --- Docs/Images/abort.png +++ Docs/Images/abort.png cannot compute difference between binary files ADDED Docs/Images/debug.png Index: Docs/Images/debug.png ================================================================== --- Docs/Images/debug.png +++ Docs/Images/debug.png cannot compute difference between binary files ADDED Docs/Images/firenet.epsf Index: Docs/Images/firenet.epsf ================================================================== --- Docs/Images/firenet.epsf +++ Docs/Images/firenet.epsf cannot compute difference between binary files ADDED Docs/Images/firenet.png Index: Docs/Images/firenet.png ================================================================== --- Docs/Images/firenet.png +++ Docs/Images/firenet.png cannot compute difference between binary files ADDED Docs/Images/index.png Index: Docs/Images/index.png ================================================================== --- Docs/Images/index.png +++ Docs/Images/index.png cannot compute difference between binary files ADDED Docs/Images/inventory.png Index: Docs/Images/inventory.png ================================================================== --- Docs/Images/inventory.png +++ Docs/Images/inventory.png cannot compute difference between binary files ADDED Docs/Images/login.png Index: Docs/Images/login.png ================================================================== --- Docs/Images/login.png +++ Docs/Images/login.png cannot compute difference between binary files ADDED Docs/Images/main.png Index: Docs/Images/main.png ================================================================== --- Docs/Images/main.png +++ Docs/Images/main.png cannot compute difference between binary files ADDED Docs/Images/main_arm.png Index: Docs/Images/main_arm.png ================================================================== --- Docs/Images/main_arm.png +++ Docs/Images/main_arm.png cannot compute difference between binary files ADDED Docs/Images/man1.png Index: Docs/Images/man1.png ================================================================== --- Docs/Images/man1.png +++ Docs/Images/man1.png cannot compute difference between binary files ADDED Docs/Images/man_fire.png Index: Docs/Images/man_fire.png ================================================================== --- Docs/Images/man_fire.png +++ Docs/Images/man_fire.png cannot compute difference between binary files ADDED Docs/Images/man_ready.png Index: Docs/Images/man_ready.png ================================================================== --- Docs/Images/man_ready.png +++ Docs/Images/man_ready.png cannot compute difference between binary files ADDED Docs/Images/node.eps Index: Docs/Images/node.eps ================================================================== --- Docs/Images/node.eps +++ Docs/Images/node.eps @@ -0,0 +1,8265 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%HiResBoundingBox: 0.000000 0.000000 413.000000 563.000000 +%APL_DSC_Encoding: UTF8 +%APLProducer: (Version 10.7.2 (Build 11C74) Quartz PS Context) +%%Title: (Unknown) +%%Creator: (Unknown) +%%CreationDate: (Unknown) +%%For: (Unknown) +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 0 0 413 563 +%%EndComments +%%BeginProlog +%%BeginFile: cg-pdf.ps +%%Copyright: Copyright 2000-2004 Apple Computer Incorporated. +%%Copyright: All Rights Reserved. +currentpacking true setpacking +/cg_md 141 dict def +cg_md begin +/L3? languagelevel 3 ge def +/bd{bind def}bind def +/ld{load def}bd +/xs{exch store}bd +/xd{exch def}bd +/cmmtx matrix def +mark +/sc/setcolor +/scs/setcolorspace +/dr/defineresource +/fr/findresource +/T/true +/F/false +/d/setdash +/w/setlinewidth +/J/setlinecap +/j/setlinejoin +/M/setmiterlimit +/i/setflat +/rc/rectclip +/rf/rectfill +/rs/rectstroke +/f/fill +/f*/eofill +/sf/selectfont +/s/show +/xS/xshow +/yS/yshow +/xyS/xyshow +/S/stroke +/m/moveto +/l/lineto +/c/curveto +/h/closepath +/n/newpath +/q/gsave +/Q/grestore +counttomark 2 idiv +{ld}repeat pop +/SC{ + /ColorSpace fr scs +}bd +/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld +/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld +/cgmtx matrix def +/sdmtx{cgmtx currentmatrix pop}bd +/CM {cgmtx setmatrix}bd +/cm {cmmtx astore CM concat}bd +/W{clip newpath}bd +/W*{eoclip newpath}bd +statusdict begin product end dup (HP) anchorsearch{ + pop pop pop + true +}{ + pop + (hp) anchorsearch{ + pop pop true + }{ + pop false + }ifelse +}ifelse +{ + { + { + pop pop + (0)dup 0 4 -1 roll put + F charpath + }cshow + } +}{ + {F charpath} +}ifelse +/cply exch bd +/cps {cply stroke}bd +/pgsave 0 def +/bp{/pgsave save store}bd +/ep{pgsave restore showpage}def +/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd +/scrdict 10 dict def +/scrmtx matrix def +/patarray 0 def +/createpat{patarray 3 1 roll put}bd +/makepat{ +scrmtx astore pop +gsave +initgraphics +CM +patarray exch get +scrmtx +makepattern +grestore +setpattern +}bd +/cg_BeginEPSF{ + userdict save/cg_b4_Inc_state exch put + userdict/cg_endepsf/cg_EndEPSF load put + count userdict/cg_op_count 3 -1 roll put + countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put + 3 sub{end}repeat + /showpage {} def + 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + false setstrokeadjust false setoverprint +}bd +/cg_EndEPSF{ + countdictstack 3 sub { end } repeat + cg_dict_array 3 1 index length 3 sub getinterval + {begin}forall + count userdict/cg_op_count get sub{pop}repeat + userdict/cg_b4_Inc_state get restore + F setpacking +}bd +/cg_biproc{currentfile/RunLengthDecode filter}bd +/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd +/ImageDataSource 0 def +L3?{ + /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd + /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd +}{ + /ImageBandMask 0 def + /ImageBandData 0 def + /cg_mibiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd + /cg_miaiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter + dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd +}ifelse +/imsave 0 def +/BI{save/imsave xd mark}bd +/EI{imsave restore}bd +/ID{ +counttomark 2 idiv +dup 2 add +dict begin +{def} repeat +pop +/ImageType 1 def +/ImageMatrix[Width 0 0 Height neg 0 Height]def +currentdict dup/ImageMask known{ImageMask}{F}ifelse exch +L3?{ + dup/MaskedImage known + { + pop + << + /ImageType 3 + /InterleaveType 2 + /DataDict currentdict + /MaskDict + << /ImageType 1 + /Width Width + /Height Height + /ImageMatrix ImageMatrix + /BitsPerComponent 1 + /Decode [0 1] + currentdict/Interpolate known + {/Interpolate Interpolate}if + >> + >> + }if +}if +exch +{imagemask}{image}ifelse +end +}bd +/cguidfix{statusdict begin mark version end +{cvr}stopped{cleartomark 0}{exch pop}ifelse +2012 lt{dup findfont dup length dict begin +{1 index/FID ne 2 index/UniqueID ne and +{def} {pop pop} ifelse}forall +currentdict end definefont pop +}{pop}ifelse +}bd +/t_array 0 def +/t_i 0 def +/t_c 1 string def +/x_proc{ + exch t_array t_i get add exch moveto + /t_i t_i 1 add store +}bd +/y_proc{ + t_array t_i get add moveto + /t_i t_i 1 add store +}bd +/xy_proc{ + + t_array t_i 2 copy 1 add get 3 1 roll get + 4 -1 roll add 3 1 roll add moveto + /t_i t_i 2 add store +}bd +/sop 0 def +/cp_proc/x_proc ld +/base_charpath +{ + /t_array xs + /t_i 0 def + { + t_c 0 3 -1 roll put + currentpoint + t_c cply sop + cp_proc + }forall + /t_array 0 def +}bd +/sop/stroke ld +/nop{}def +/xsp/base_charpath ld +/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd +/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd +/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd +/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd +/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd +/refnt{ +findfont dup length dict copy dup +/Encoding 4 -1 roll put +definefont pop +}bd +/renmfont{ +findfont dup length dict copy definefont pop +}bd +L3? dup dup{save exch}if +/Range 0 def +/DataSource 0 def +/val 0 def +/nRange 0 def +/mulRange 0 def +/d0 0 def +/r0 0 def +/di 0 def +/ri 0 def +/a0 0 def +/a1 0 def +/r1 0 def +/r2 0 def +/dx 0 def +/Nsteps 0 def +/sh3tp 0 def +/ymax 0 def +/ymin 0 def +/xmax 0 def +/xmin 0 def +/setupFunEval +{ + begin + /nRange Range length 2 idiv store + /mulRange + + [ + 0 1 nRange 1 sub + { + 2 mul/nDim2 xd + Range nDim2 get + Range nDim2 1 add get + 1 index sub + + 255 div + exch + }for + ]store + end +}bd +/FunEval +{ + begin + + nRange mul /val xd + + 0 1 nRange 1 sub + { + dup 2 mul/nDim2 xd + val + add DataSource exch get + mulRange nDim2 get mul + mulRange nDim2 1 add get + add + }for + end +}bd +/max +{ + 2 copy lt + {exch pop}{pop}ifelse +}bd +/sh2 +{ + /Coords load aload pop + 3 index 3 index translate + + 3 -1 roll sub + 3 1 roll exch + sub + 2 copy + dup mul exch dup mul add sqrt + dup + scale + atan + + rotate + + /Function load setupFunEval + + + clippath {pathbbox}stopped {0 0 0 0}if newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + currentdict/Extend known + { + /Extend load 0 get + { + 0/Function load FunEval sc + xmin ymin xmin abs ymax ymin sub rectfill + }if + }if + + /Nsteps/Function load/Size get 0 get 1 sub store + /dx 1 Nsteps div store + gsave + /di ymax ymin sub store + /Function load + + 0 1 Nsteps + { + 1 index FunEval sc + 0 ymin dx di rectfill + dx 0 translate + }for + pop + grestore + currentdict/Extend known + { + /Extend load 1 get + { + Nsteps/Function load FunEval sc + 1 ymin xmax 1 sub abs ymax ymin sub rectfill + }if + }if +}bd +/shp +{ + 4 copy + + dup 0 gt{ + 0 exch a1 a0 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a0 a1 arcn + }{ + pop 0 lineto + }ifelse + + fill + + dup 0 gt{ + 0 exch a0 a1 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a1 a0 arcn + }{ + pop 0 lineto + }ifelse + + fill +}bd +/calcmaxs +{ + + xmin dup mul ymin dup mul add sqrt + xmax dup mul ymin dup mul add sqrt + xmin dup mul ymax dup mul add sqrt + xmax dup mul ymax dup mul add sqrt + max max max +}bd +/sh3 +{ + /Coords load aload pop + 5 index 5 index translate + 3 -1 roll 6 -1 roll sub + 3 -1 roll 5 -1 roll sub + 2 copy dup mul exch dup mul add sqrt + /dx xs + 2 copy 0 ne exch 0 ne or + { + + exch atan rotate + }{ + pop pop + }ifelse + + /r2 xs + /r1 xs + /Function load + dup/Size get 0 get 1 sub + /Nsteps xs + setupFunEval + + + + + + dx r2 add r1 lt{ + + 0 + }{ + dx r1 add r2 le + { + 1 + }{ + r1 r2 eq + { + 2 + }{ + 3 + }ifelse + }ifelse + }ifelse + /sh3tp xs + clippath {pathbbox}stopped {0 0 0 0}if + newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + + dx dup mul r2 r1 sub dup mul sub dup 0 gt + { + sqrt r2 r1 sub atan + /a0 exch 180 exch sub store + /a1 a0 neg store + }{ + pop + /a0 0 store + /a1 360 store + }ifelse + currentdict/Extend known + { + /Extend load 0 get r1 0 gt and + { + 0/Function load FunEval sc + + + + + { + { + dx 0 r1 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + r1 0 gt{0 0 r1 0 360 arc fill}if + } + { + + + + + 0 r1 xmin abs r1 add neg r1 shp + } + { + + + r2 r1 gt{ + + 0 r1 + r1 neg r2 r1 sub div dx mul + 0 + shp + }{ + + + + 0 r1 calcmaxs + dup + + r2 add dx mul dx r1 r2 sub sub div + neg + exch 1 index + abs exch sub + shp + }ifelse + } + }sh3tp get exec + }if + }if + + /d0 0 store + /r0 r1 store + /di dx Nsteps div store + /ri r2 r1 sub Nsteps div store + /Function load + 0 1 Nsteps + { + 1 index FunEval sc + d0 di add r0 ri add d0 r0 shp + { + + d0 0 r0 a1 a0 arc + d0 di add 0 r0 ri add a0 a1 arcn + fill + + + d0 0 r0 a0 a1 arc + d0 di add 0 r0 ri add a1 a0 arcn + fill + }pop + + + /d0 d0 di add store + /r0 r0 ri add store + }for + pop + + currentdict/Extend known + { + /Extend load 1 get r2 0 gt and + { + Nsteps/Function load FunEval sc + + + + + { + { + dx 0 r2 0 360 arc fill + } + { + dx 0 r2 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + + + xmax abs r1 add r1 dx r1 shp + } + { + + r2 r1 gt{ + + + + calcmaxs dup + + r1 add dx mul dx r2 r1 sub sub div + exch 1 index + exch sub + dx r2 + shp + }{ + + r1 neg r2 r1 sub div dx mul + 0 + dx + r2 + shp + }ifelse + } + } + sh3tp get exec + }if + }if +}bd +/sh +{ + begin + /ShadingType load dup dup 2 eq exch 3 eq or + { + gsave + newpath + /ColorSpace load scs + currentdict/BBox known + { + /BBox load aload pop + 2 index sub + 3 index + 3 -1 roll exch sub + exch rectclip + }if + 2 eq + {sh2}{sh3}ifelse + grestore + }{ + + pop + (DEBUG: shading type unimplemented\n)print flush + }ifelse + end +}bd +{restore}if not dup{save exch}if + L3?{ + /sh/shfill ld + /csq/clipsave ld + /csQ/cliprestore ld + }if +{restore}if +end +setpacking +%%EndFile +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%PageBoundingBox: 0 0 413 563 +%%BeginPageSetup +cg_md begin +bp +sdmtx +%RBIBeginFontSubset: Helvetica +%!FontType1-1.0: Helvetica 1.0000.0.0000 + 14 dict begin/FontName /Helvetica def + /PaintType 0 def + /Encoding 256 array 0 1 255{1 index exch/.notdef put}for + dup 33 /N put + dup 34 /e put + dup 35 /t put + dup 36 /w put + dup 37 /o put + dup 38 /r put + dup 39 /k put + dup 40 /P put + dup 41 /slash put + dup 42 /S put + dup 43 /a put + dup 44 /u put + dup 45 /s put + dup 46 /L put + dup 47 /E put + dup 48 /D put + dup 49 /V put + dup 50 /one put + dup 51 /two put + dup 52 /three put + dup 53 /four put + dup 54 /five put + dup 55 /six put + readonly def + 42/FontType resourcestatus{pop pop false}{true}ifelse + %APLsfntBegin + {currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if + /FontType 42 def + /FontMatrix matrix def + /FontBBox[2048 -1947 1 index div -985 2 index div 2961 3 index div 2297 5 -1 roll div]cvx def + /sfnts [< + 74727565000900000000000063767420000000000000009C0000036C6670676D000000000000040800000A1D676C79660000000000000E28000015986865616400000000000023C0000000366868656100000000000023F800000024686D7478000000000000241C000000606C6F6361000000000000247C000000326D61787000000000000024B0000000207072657000000000000024D0000003CF05C0001005BD00280580001A042F001F0000FFD90000FFDA0000FFD9FE55FFE605C70010FE6DFFF1033B000000B9000000B902FE3F3C00C0008D009B00AF000600A800C00028005E009800C9016A00B9015C00B400D6011E002E0080000400B8004C00CC01FFFFD1006600A400AF007400C2009500B1000C0028006D0015004C008E0125FF7A000C0040004C00620084FFA200240038008600BD0039005E008E00EDFFA9FFB300400052005500AA00AB00C200CB012302B10413FFAEFFE4000800510074008400AA00D1FF4CFFAF0012002C004200500051008400BE012503DAFF680018003B0098009C009F00A100C100EC018201B4FF68FF76FFD0FFE100020018001C00530053007D01B401E103AF0486FF9CFFEAFFFE001F0028002A00520060009300A300AA00AF00AF00C001000145016B0174019301950240028202B404850517FEFD00060029004700470048006F008800B400B900C400F200F901EF02180310037403C5FF35FFF3000B004B004C0052005500650076007600870087008E00AB00BB0106013001430150017D0194019501D3022A025502580277027802E6034E035C037903D3047304B2058C0598060BFEF5FFBBFFC7FFD50017001D005B0072007E009C00C200D000F400FA01030106011C0125013B0142015E015E0180019B02B901A101B9025001C001D002AA01DF01E301EF01FB0205020C0215022B0274029302AB02C202CE03690395039903DF03F5043E050205A105E5062507DBFE62FE89FECEFF3BFFE1FFF800030008002100390042004E005F0061006F00700034007F008E00AD00AD00AF00BD00C400C500C900C900C900E3011C00ED00F800F901000112011A0132014D014D014E014F01660169019E01BA01BA01BE01E301EF01F602000200020902110217021C02530262026D028002D50280031B032A034A035A03AF03AF03C803D603FB03FB04050413041504470449008C046D049A049A04A604A804B204CF0539053E054E055605800589058C036305D105D6067E068E06B206EF06F00728074C076F078C00B400C900C000C10000000000000000000000000004012400AF0032006E0063014401620096014301A10161008A00740064018801EF01700028FF5D037E0347023000AA00BE007B0062009A007D0089035C00A1FFD803AA00D70093006C0000008000A70442001D0597001D00820030002A + 002A002A002A002A40292A292827262524232221201F1E1D1C1B1A191817161514131211100D0C0B0A090807060504030201002C4523466020B02660B004262348482D2C452346236120B02661B004262348482D2C45234660B0206120B04660B004262348482D2C4523462361B0206020B02661B02061B004262348482D2C45234660B0406120B06660B004262348482D2C4523462361B0406020B02661B04061B004262348482D2C0110203C003C2D2C20452320B0CD442320B8015A51582320B08D44235920B0ED51582320B04D44235920B09051582320B00D44235921212D2C20204518684420B001602045B04676688A4560442D2C01B9400000000A2D2C00B9000040000B2D2C2045B00043617D6818B0004360442D2C45B01A234445B01923442D2C2045B00325456164B050515845441B2121592D2C20B0032552582359212D2C69B04061B0008B0C6423648BB8400062600C642364615C58B0036159B002602D2C45B0112BB0172344B0177AE5182D2C45B0112BB01723442D2C45B0112BB017458CB0172344B0177AE5182D2CB002254661658A46B040608B482D2CB0022546608A46B040618C482D2C4B53205C58B002855958B00185592D2C20B0032545B019236A4445B01A23444565234520B00325606A20B009234223688A6A606120B0005258B21A401A4523614459B0005058B219401945236144592D2CB9187E3B210B2D2CB92D412D410B2D2CB93B21187E0B2D2CB93B21E7830B2D2CB92D41D2C00B2D2CB9187EC4E00B2D2C4B525845441B2121592D2C0120B003252349B04060B0206320B000525823B002253823B002256538008A63381B212121212159012D2C456920B00943B0022660B00325B005254961B0805358B21940194523616844B21A401A4523606A44B209191A45652345604259B00943608A103A2D2C01B005251023208AF500B0016023EDEC2D2C01B005251023208AF500B0016123EDEC2D2C01B0062510F500EDEC2D2C20B001600110203C003C2D2C20B001610110203C003C2D2C764520B003254523616818236860442D2C7645B00325452361682318456860442D2C7645B0032545616823452361442D2C4569B014B0324B505821B0205961442DB8002B2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8002C2C2020456944B001602DB8002D2CB8002C2A212DB8002E2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8002F2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800302C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800312C2020456944B0016020 + 20457D691844B001602DB800322CB800312A2DB800332C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800342C4B535845441B2121592DB800352C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800362C2020456944B001602DB800372CB800362A212DB800382C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800392C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8003A2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8003B2C2020456944B001602020457D691844B001602DB8003C2CB8003B2A2DB8003D2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8003E2C4B535845441B2121592DB8003F2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800402C2020456944B001602DB800412CB800402A212DB800422C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800432C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800442C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800452C2020456944B001602020457D691844B001602DB800462CB800452A2DB800472C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800482C4B535845441B2121592DB800492C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8004A2C2020456944B001602DB8004B2CB8004A2A212DB8004C2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8004D2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8004E2C4B20B0032650585158 + B080441BB04044591B21212045B0C05058B0C0441B2159592DB8004F2C2020456944B001602020457D691844B001602DB800502CB8004F2A2DB800512C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800522C4B535845441B2121592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B003265358B0401BB000598A8A20B0032653582321B0808A8A1B8A235920B0032653582321B800C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592D00000000020042000004D005BD00030007003FB800532BB800082FB800092FB8000810B80000D0B800002FB8000910B80003DCB80004DCB8000010B80007DC00BA0007000000562BBA0002000500562B3031331121112711211142048EB8FCE205BDFA43B8044DFBB30000000100000000026A05BD0003002B4017070117019701030102021C1203030002030A0100020003192F18D4003F3C3F3C05872E2B7D10C4015D0133012301D298FE2E9805BDFA4300000100C4000002D5059200080023B10801B80133400C0404070C04079605000A47091076C418C4D5FD39003F3FF4CD313013353E013733112311C4C39A268EC003F68A1359A6FA6E03F60000000100400000041E059D002200A6404E3604460457056B1D6E1E7A1E84018702082A085A196B197C197C1CB519050022010F041C0E1921071C19040100051F0F0F22130A351305201F7521220C217F0738166F220E270F811F38222447231076C418D4EDF4ED10F5EDE4003F3CFD3C3FED1112392F1217390111123912393911391239005D31304379401C04190C2511260B120E2800091407280119040D100A280108150A2801002B2B1010012B2B2B2B81005D36123F01363736353426232207060723363736213212151407060F01060706072115214A85C1C081 + 3452967DB9472604B70342750128F6E37946B5896238641A030EFC29B90112706F4B35536B7D938C4B85BB76D0FEF6A3AC7A47654C3631576AAA000000010031FFD9041A059A003100C4401F490C532D6529632D7529752D069626014B082B0A182B140D03F93114350D20B8012340141135107F0D0D311B3524050735310D1896274411B8014A400F0A382E6F021F2920810327023347321076C418D4EDF4ED10F5EDEDF4ED003FED3FED12392FF4FDE610ED10ED111239011112393130437940362F301926000905261D2522260600032800040308300A28011C231F28001A251828010401072800092F0728001E211B280119261B2801002B2B2B2B012B2B2B103C2B2B2B2B818181005D015D0402353316171633323635342623220607351E013332373635342623220706072334373621321615140706071E01151400230116E5BC0C2846B78EACB5A11225131C26166541729865B4452605B2406E0115DBF0472C46717FFEF2F8270117C88B3F719878947601019F03022038906B7478427AA070C8C3B98452331D1FB180CDFEFE000000000200340000042F059C0002000D005C402209020A080D010202BE12060607020601050708030106070A02750B05EF030C070403B80117B501960D08AC0AB80158B3050F470E1076C418D4F5F43CFDE4003F3FF43CFD3C1139390111123911123939872E2B047D10C50F3130011109011121350133113315231102A5FE3501CEFD8C029098D3D301FB0289FD77FE05015EB0038EFC5F9DFEA200000000010042FFDC041C0580002000BB402B4812881F02390C461357136713043A080C0D07000C0A0F0E0E75121313120E0F201213070013170A17350AB80122401A0D7F0E0E1D123A0F04043520C71D0D1107381A6F0038202247211076C418D4EDF5EDC4003FEDED3FFD12392FE4F4ED1112390111123939123939872E2B7D10C5001239011112393931301843794028181F01090226031E00280001001F20051C0728010918072801011F042800061B04280008190A2801002B2B2B012B2B103C103C2B2B8181005D5D131617163332363534262322060727132115210336373633320415140221222427FD127D4054A09AB7805D852F9C6D02E8FD9F3D322D5069C50112FBFEEDAFFEF310016D9A3B1ECC7C96A44840090303AEFE72261321FEC3CBFECAC5CC00000002004DFFDB0423059E001B002700A94039771A0117082508271958198600870188090747080A212721350E0E1403C707351B052735140D032902811E38116F170A023C0A2431172947281076C418D4FD397C4B52787A2F1810F5EDF4ED003FED3FEDED12392FED11123931304379403425261C200F1600060526200F1E280126152428001C131E2801060003280104031F1021280125162728001D1227280004010728012B2B2B + 2B01103C2B2B2B2B2B81818181015D005D001615232627262322020336373633320415140223220011103712211236353426232206151416330347BDB21023418497B20A3E5E566AB4010CFEEBC9FEDC417D014C818D7EA674AF9F8D059EF98455305AFEE9FEFC5B2D28E6E4C3FED301310169010BBA0164FADDBF826EC79A9B88B90000000200A50000056305BD000D00180067401F871196120232080B1E0F02001E17080831131A1A0D250E19191AD6217689182B2B4EF44DFD4E10F64DED003FFD3FFD3130437940260116112515260607050704070307020705060A10083201011608320109120B320107140032002B2B012B2B2A2B2B815D2532373637363736351002232111032120171611140702290102D06541744A3B1A0FD9F1FE9FC80253012FA795589BFE86FDAFAA15276F598B53470111012EFB980513D7C2FED1EABDFEB20000000200AF000004ED05BD000B000C004E4024071E04040B031E01000209081E0A0B080C020C0C02000669023B091A0E03082500190D0EB8010BB3219589182B2B4EF44DFD3C4E10F64DF4E41112392F003F3F3CFD3C3F3CED12392FFD313013211521112115211121152101AF042FFC93032BFCD5037CFBC2021F05BDB4FE42AAFE0EAF05BD0000000001009C0000044B05BD000500314013000203021E040508031A070102250500190607B80153B321765E182B2B4EF43C4DFD3C4E10E6003F3C4DFD3C3F31301333112115219CC702E8FC5105BDFAF2AF0002009C0000052A05BD0009000A007640143701380602070117012701470158020507010202B8019B4017120606070207080301020806080A030A0A010608020302B8019BB505041A0C0708B8019B400A0900190B0CA0217670182B2B4EF43C4DFD3C4E10F63C4DFD3C11123939392F003F3F3C3F3C12393904872E2B877DC53130005D015D13330111331123011123019CEB02E6BDDFFD0FBE023A05BDFB5A04A6FA4304A5FB5B05BD0000000200AF000004F805BD000A001400614035690C6912790C7A12044814581468147A140407081E1110100A010E0F1E0100020A080206120C0409141431041A160F092500191516B8010BB3219589182B2B4EF44DFD3C4E10F64DFD11121739003F3F3CFD3C1012392F3CFD3C015D31305D132132161514062321112300272623211121323635AF0295C4F0D6DEFE32C70380784273FE74018C86A705BDDDC8ACFFFD9304B93A1FFE0372900000020060FFD504F605E5002F003000FE405E290F27232626360E3521472662267A0E7724096B08180E172502590E680EAA22030A0E3A2224220A03041C1886142F2F2B1C3A1403043A2B0930020A0E081124221F28303011182517490825281A321F25114900252F193132A0216A89182B2B4EF44DEDF4ED4E10F64DEDF4ED12392F121139391211 + 3939003F3FED3FED12392F10ED111217392EFD335D7131304379404D282E111F0008022602262D2506251A26032C002B002D2E032C002B00052A082B011D131F2B001B15182B011918012D042B0009270B2B01250B012E042B000729042B001E121C2B0119161C2B01002B2B2B2B10102B2B01103C2B2B2B2B103C2B2B2B2B2B2B818181005D0116171633323736353427262F012627263534243332041523262726232206151417161F01161716151404232027263701011E073463FA705CB24B4CA2C7C3518C0112FBE70143BB0F315BDAB09A5A3BD0CE95518CFE9DEBFEEE9B9B03024D01DA7D4E92203EA0783332252D2C355CB7C6FEDFF5763F7394626C3220302F223B67C4F4D28C8BEE040B00000100340000053605BD0006008F40449001A0010240015401021601017805E6010267046805880403192802251203030400251206060501050203060300020504080817171A0402039E0500019E0619078E5E182B194E10F4184DFD3939FD3939194E456544E618003F3C3F173C123901874D2E2B872E182B4B5279400C01020100030401000102060587087D10C487087D10C43130015D005D717172090233012301011001A601A1DFFDE8D3FDE905BDFB1D04E3FA4305BD00000000030052FFDC04470449000F003B003C00DD40382A30010A100B1B0C1C2733481069096A10073908120C09031B320724091D100C1D3B2B022E293BB73B023B322A2512100705081C2722171CB8018A4023171D1F07271D2E0B021D350B3C073C3C1C1407292AA8241A3E1B291C4A0F2738193D3EBC0197002100B9019600182B2B4EF44DEDF4ED4E10F64DE4FDC412392F003F3FED3FED3FEDED1239111217395D1112392EED2EED01111239111739313043794028363715220001192501360F2100181E1B21001620142101212200370221001A1D1721011521172101002B2B2B01103C2B2B2B2B818181005D015D2416333237363D010E010F0106070615013637363534262322070607233E01333217161511141633323637150E0123222726270E012322263534363713010E724E5F59962168326D62315301B43E150C837A8D3B210AA805F7A3BD767517250C1E112A2C265D2A160937CE7C95BDBA978ACF5A2C49A691151C060E0D1C2F67016C082C182D5C534C2A53C69B484898FD971C220303850C06422340486AB58895A41301E40000030048FFDA041A0449001C00240025010C40799708991AA71F03050E020F0514150E120F1514400C401408291A014B0BB603C701C603C71BD808D909D61FD823E817E8230BC711C712025C080521240F9A161D243906070716211D1C070A1D160B2507971CA71CB71CD71C0425160F251C05190A0C07110E270F1D27051A27242E072719192627D421A65D182B2B4EF44DFDE44E10F64DEDD4FD3912393911 + 12393912392F5D003F3FED3FED12392F3CFD3C10ED1112393130437940460023040503050205010504061F26111012101310141004060C25221B24260020001D26011E1D09170726000B150E26010D0E231A2126011E0521260108180A26000D100A2600002B2B2B2B01103C2B2B103C2B2B2B2A2B2A8101715D00715D5D00161716171615211E013332373637330E01070607062322001110003301262726232206070102B4D638361210FCEF0590978D543014B1074F3152794152C8FEEA0118E2011F0B284AAD7CA805012304476B55516C4AA2A3C55D36473B912E501C100123010601020142FE26754682B38A01DC00000000010080000003F805BD000B00A740645902013A08011902010706170657056705790678078705B903C903DA030A05050608080709030284029402A4020302391209090405060504066D12070708080705040305060908050204030A00000403060A07060A061A0D09020A29000B190C0DB22162B9011600182B2B4EF43C4DFD3C3C194E10E618003F3C3C3F3C3F1112173901121739874D2E2B087D10C104872E182B5D057D10C010083C083C3130015D00715D7213331101330901230107112380AD01CEE6FE6601B1E6FEB297AD05BDFCAB01C7FE6FFD62021C8AFE6E00000003003BFFD90421044E000C0018001900904033980896109916A504A808A610A916B808C808D704E50EE9140C3A08061D18070C1D120B190719191502270F1A1B092715191A1BB80109B321725D182B2B4EF44DED4E10F64DED12392F003F3FED3FED31304379402C001704260B1309260000110226010717092600050D0226010A140C260001100C26000816062601030E0626012B2B2B2B012B2B2B2B2B81005D241235342726232206151416331200111002212200351000330702E085304CBAA59696A3D6011EFCFEF7DDFEFC0112E70674010FA6965E94FCB2ABE403DAFEECFEF4FEFDFEAE012BFC010E014005000100890000029204470011004F40262703260D37034704040E0810020E0911090C270805070006110A081A13012E10291100191213B80145B321627E182B2B4EF43C4DFDE44E10E6003F3F4D3FC4FDC411123939011112393130005D1333153E0133321617152E0123220615112389AB15A46B05181D101B108892B4042FB9369B0203BE0302AF72FD980000020042FFD703B6044B002E002F012E408F38099805961299149815982A062824252736214621472447275624572766246726790C790D790E7623742474257426A61EA82C1303000B15052D042E13001A151B171C18152D142E280F0B6908262536250225220D0A042B1318C61C1D1307041D2E9A2B0B2F07090E100207002F212F1A1F18161827173E28260727281A310E1F27103E00272E193031B221A65D182B2B4EF44DEDF4FD394E10F64DFD39 + 10F4FD3911123939392F111239113939003F3FEDED3FEDED111217397131304379404C012D022615251A26210E1F21000926072101032C002100052A0721011D121F21001B14182101200F22210021220E0D08270A21012625090A012D04210006290421001E111C210119161C2101002B2B2B2B103C103C2B103C103C2B012B2B2B2B2B2B2B2B2B81005D5D015D13161716333236353427262F01262726353436333217160723262726232206151417161F011617161514062322262701EF082544A864983D27738F894174DBB9F26B4302AA05263E99666945284E77C24269D9DEEFC70701B701505A3057575B4524161D24222A498198BC8E5A683D32474E40462A19131D2F2C45948FD0D9A002F900010017FFEF0209055A00180052B50D2E0AC00E01B8013F40250416391703060E0A111A17171A0301062900150E150F031F030203FC1619191AFC21677D182B2B4EF44DFD5D39C42F3CFD3C104E456544E6002F3F3F3C4DFD3CED10FDE431301333113315231114171633323637150E012322263511233533A8B6ABAB2615310D1E141F43277E5A9191055AFED593FD4538130B01028E0908816702C593000000020080FFE303DE044900170018005E403AB814C81402091308141913191428067703D707070800050E0A00060D0A051D120B180718180B160D2E0A290C0B1A1A01291619191AD2216242182B2B4EF44DED4E10F63C4DFDE41112392F003F3FED3F3F3C391112393130005D015D0111141716333237363511331123370607062322272635112501381A3083BC4425B4AA0223346793E5532D01AF042FFD39523460A85A9D020EFBD19E3D2A5499528902D81A0000010012000005A1042F000C0120407E4704AA09028E09014607490B87038A08850ACA02C403C607C908C60AC90B0B66076A08650A690B76077908760A790B85078A0B0A4607490B0247037700780503572816282B012B043B013B048F018F0406090401030B020305060C050006080A0B03070A0E17171A0705069B080304C40A0209C40B00019B0C190D677E182B194E10F4184DFD3939FD3939FD3939FD3939194E456544E618003F173C3F173C1217395D4B5179400C0529120607060029120C0C0B0587102B87102B4B5279B4090A09080AB8018B401312010102070604050529120606070908090A08B8018B400E120404030B0C00010029120C0C0B01874D2E2B87107DC41805872E182B087D10C505872E182B877D10C405872E182B087D10C53130015D71717100715D1B02331B013301230B012301D7CED1CAD2DBB4FEC9BBDAD3BBFECB042FFCB4034CFCB90347FBD1033DFCC3042F0000010000000000006B8BED625F0F3CF500110800000000005F4D8F0000000000C9C13CF7F865FC270B9108F9000000090001000000000000000100000629FE29 + 00000C01F865FCED0B910001000000000000000000000000000000180512004202390000047300C4047300400473003104730034047300420473004D05C700A5055600AF0473009C05C7009C055600AF05560060055600340473005204730048040000800473003B02AA008904000042023900170473008005C70012000000340058007E010A01B602040298032E039003D403FC045204A8057405D2069C076607D6084E0894097409C40A1E0ACC000000010000001800920009006B0007000200100010005D000007E80A1D00040001B800532BB800492BB8003F2BB800352BB8002B2B4118008001A6009001A600A001A600030069018B0079018B0089018B0099018B00040089018B0099018B00A9018B00B9018BB2040840BA0179001A014A400B041F5414191F180A0B1FD2B80106B49E1FD918E3BB0119000D00E10119B20D0009410A01A0019F0064001F01A50025017A00480028019AB3296C1F60410A01A9007001A9008001A90003008001A9000101A9B21E321FBE012C00250401001F0126001E0401B61FE7312D1FE531B80201B21FC227B80401B21FC11EB80201400F1FC01D9E1FBF1D671FBE1D671FAB27B80401B21FAA29B80401B61FA91D6C1F931EB8019AB21F921DB80101B21F911DB80101B21F751DB80201B61F6D29961F6431B8019AB21F4C96B802ABB21F391DB80156400B1F3638211F351DE41F2F27B80801400B1F2D1D4C1F2A31CD1F241DB802ABB21F201EB8012540111F1C1D931F3A1D4C1F1E1D45273A1D4527BB01AA019B002A019BB2254A1FBA019B0025017AB349293896B8017BB348283125B8017A403648289629482725294C1F252946272729482756C80784075B07410732072B072807260721071B071408120810080E080C080A08080807B801ACB23F1F06BB01AB003F001F01ABB308060805B801AEB23F1F04BB01AD003F001F01ADB70804080208000814B8FFE0B40000010014B801ABB41000000100B801ABB606100000010006B801ADB300000100B801AD401F04000001000410000001001002000001000200000001000002010802004A00B0018DB806008516763F183F123E113946443E113946443E113946443E113946443E113946443E11394660443E11394660443E11394660442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B18011DB0964B5358B0AA1D59B0324B5358B0FF1D592B2B2B2B2B2B2B2B182B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B74752B2B2B65422B2B4B5279B376706A66456523456023456560234560B08B766818B080622020B16A704565234520B003266062636820B003266165B070236544B06A234420B176664565234520B003266062636820B003266165B066236544B0762344B10066455458B166 + 406544B27640764523614459B36242725D456523456023456560234560B089766818B080622020B172424565234520B003266062636820B003266165B042236544B072234420B1625D4565234520B003266062636820B003266165B05D236544B0622344B1005D455458B15D406544B262406245236144592B2B2B2B456953427374B8019A2045694B20B02853B049515A58B020615944B801A6204569447500 + 00>] def + /CharStrings 24 dict dup begin + /.notdef 0 def +/slash 1 def +/one 2 def +/two 3 def +/three 4 def +/four 5 def +/five 6 def +/six 7 def +/D 8 def +/E 9 def +/L 10 def +/N 11 def +/P 12 def +/S 13 def +/V 14 def +/a 15 def +/e 16 def +/k 17 def +/o 18 def +/r 19 def +/s 20 def +/t 21 def +/u 22 def +/w 23 def + end readonly def + currentdict dup/FontName get exch definefont pop end + %APLsfntEnd + 42/FontType resourcestatus{pop pop true}{false}ifelse + {currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if + /FontType 1 def + /FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def + /FontBBox{-1947 -985 2961 2297}def + /UniqueID 4257378 def + currentdict currentfile eexec + 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C9266A63CD4C2DA03F4BF340963A027151A3FDA461900D733520630E1D847687011288516492D603AB7AAB6F6B3E50DF79393D3D9B37CD832F19B0B110C3906904D966CD3709B23E0976CE48036A0B8943541BDAAB435AF5D2781A114202E5EC2B49D2C1A19C8016509641312B0A390ED74F7E6869257B79516B1D9EB2933A5EB0F6ECAC6AB5FD31EBA6AE81170C4370D8619B380952525FF7209B9B7F0C96DD5C4C4069B9B10015D3B5F76B167C6A243E35621D049F07254767DDDD3C4683DB7D2670CEC5EB0783A5B774A8FDF9614473C79235B5BA83C699794CF1EB598E68379AFA761A6B6E74C5B190689F2B7F3AA2E2343366B4789F08E8F0574E3EA53800552137F23E5F304D123DFAFDC3C5C7142198853887483D221FCB3F31E824159BA216C38A00912DCB8CDD09CA90864E254A028482E668616DE2E3DCF16ACE181AD045AFE28C1D7A26B1EC6E71E95C6E913B9055036F3F431FE14033B13B82972ADFDEAFC15BAD21BD6764E89B9C526C4848C7D8DA339F8C8FC68D273C25A973D641A2B9B51C024AD15E7D2CEAFA2331CB911F218ACD1345D2B81AC1B95E4D69A6324847102DA766D0897595B248C16C3545D27E6D217DADCEF61229969DF503ECE5733DCF7105E93D889691C55C01E0FD0A00365FAEB30A35697182E4C9B87D1B5BC0734DC9F80AFD532B41F8C5422A95BDAB9E53241EF9235D304F7FC436B49F8FD90CD58CB41E61AC40D5F000BA54718477AF026E7116CA28AB03B3B3CE547CC + 72F2083293928940AF9C101788B4A0007E19BAA9307F7596A3D8563B2D0FD65B555936EE82AFC82BFEE8C5F21F4AD2704D615DA1DB9C8CBB6C9018E5BB0E489078D924B7A867CF681232ADAB7EA0C3CE8D1494CD6B86D167C8532271B53B796945F2C5D34038848D0EDC32E959B83B792BEE695D0C5640698C9E174CCFCF83E0CC96FA8DBDF690C17003BA7714E1AB1348B4B3DD2C340566DEBA7B8B60FB742E650F72B239CFE0524CFD2E7FEB69E0D641166459890DBF708F7D27CF194D28362415D7143C15624FB57D9F6A65148391A54CD426CDB788878E8C4D9D503ADDFD6CCBDF64F9F6FDF5DB5798AB63FE565A16369337545751F06E68B535F1B0C76CD95CA1775726B202DDB184CD7EE8ADF057F9A1BFE100B9804CD7150B5727EC6C2671C757D55C00488AA5AF544BD8A6D929B1DE86611440157E5773DCA1C9666556345B6A200E982C8235C3B48F8575B1636ED9B90F5F9527271061FE39C3A28DE6070708B1C887A697E29B4865A93953027CF587200A11093C7F14C1DD9D297C6E1CD1902E3B64CFE8195998F36149818F157BADA32595660B9BCDA9165BD2315B742A5AA1B5FDBBE007601DB0EEE1B5639C398C605F201229892254861DF78BB51C45BF4D5AA1B731D4908455D2EE260AF93808F2024C2CC8192F0155112FA7DA8F2A8689BDF09CAF460436A1D9000135B76D9CD5146B0A27E12EF552B1C94D67215E8AE43E511D2746E2E536B072D21F52B3003AF2BA0172C50E3CD3F64648C8D5E6D1D85D7DCECCF3A08716CB75355F03067D3A756875E0971A07A30137530888ACBD24EAEB2CD9F57A24F542C207FAFCC548E655BFBB1C8BE23DAEDFF56F6E78792B8D909B46BE300887CD6C316D0F81D96DC641B84967B526B3D0B3E1442A20918F60AAB7FF4DBE9F8E08C7E3970D787EF9C9A8D3BBBC93998836B79C6F0C966C712EFF86E48A9F40D5202614635DD320D8C6C3520B866BEDAB32B43E29D1DDC7ABA894F3EA1516AF4B57B660CCB538972AFA6E37438514595BE875C4CBC88436B2426A9384AD8AF1850FC1A18B503ABDAA5FB26E2741D49B5DCDEEA7E66191A83B1F5D7614E68101430AA4D0E0ACA53C9DEB3C781DCFE944245DECBF9CC103B255E132559F5EB78F484E1A0FFE13C1F4187A449ED3A92862AFE566C025B11AB117A4E99D1A496947B4860E9ACA84360F351529690B9228F21AB22FEB77E099C2D24D5EF7A88D45A11F5E2AF841922FC319D7CDA5BBE36E12BF14A702DED5194BA427A36E71D88C86B65345537D7F657EF0B678BE826566B5B2F5A1D9BEAD3144DE26E820E34703A9F95C2004D90B108492B6CD7E632965C5E054BFD0B024BE1C297801E4DE0C75EB9024F6643DA0BE895B6143C780B47D58C3A25B05C7B66419119740487ECD71B32181F2CCF29E8D0EE7998C64CAEF2EBC5EE60EB11E + F9448331D1DC020A60E96AEBA4DCD391C4F0BEA7848540A2DA500A2EB3C0D97138A534F0A75269DD514E02CBEDAE67AF97FE126E0120389C9C6F93E2AB6FAD6C78C9C5E0C5F07E4B0BD0D7F1AF036F18CDC95C3F18262666D742EE01C3456D6AE9D0E146756AEF8691F7B3993B2221A95D56D5EDD6F7FF089BFDADB46CDEA33B3AB88DDECCFF4C62E4FAE116FB49456AF21BEEEE07FCD4DE933FD44BF2B6FA487C50CBAD199A6F99972C8EEFD8F44ECD68EC77D7AE1B9A8CB574DA2DF7A5954873D75A532456D1C92E48C20484BFD17F3C5FC87B3E9BB9F587C143FC5203060C0DD99421296EC58C7D804923D5C699BCB8AC7415E4A74045A8B5C0C87A698BB17CDE014D7562B23C6D48D0F93345CC3B130A207FF78091B3AB088298B9978C980BABD41525AB26C1CB2371F36FFE690C0B54D6DEE6933BF55A3A9385C5B9ADE99AB47E2E18F4987F726BD1B9EDA8579CB69C0736C2A0AA14C757F5574B532389597C8E2BA1129091F3C4E6A3695FFB513C164C86BAD6CFB4C65997C986FE2C316BEA4DCE62D858F5BFBE7765C2AAC5ECEB577CCE5A5FE829671BB1A0B6566CAA73647661287BE9157B12EE76E5DE2F0F1B5F2F0B26865E76746E476D697F189915755B6A84969594C03C6E95E0D2E5EA28CB1F2F83ECC850B705B33FB9C57D39529AD56612E16A34A9ACBE1454BA84222DDDBD1442F4F4C96D84FC069716BF12F321FE440C39703A3F46BF7697315A28E1F72AF58FC0FFC33EADFC027C34AFFBEACB212253361D2D571EBB158E942429A5342F7D5D70433F298483590734DFC93F1DCFBE6A36CBBCE33BFB8908F1ED8B454EB95FA3712B54753D5A46E253AD5661E18AB74955CA3538C8A5B1B18AE3E3FA181A7A83A097A91010AACACD7C61501CED956EB6ED5AFC92D451C7B5DEA81D4C4A5C672F3B9E3C63ADFF69D3944BFEAA7E46EAF2CF1461B8B10FB0A47E4E91B582E210F4F0B8F7284A9B830E94BE137C6493DF49552B8E87DD078EC915A7E9F99C4CE28835832B5C89A4F4A285312B21622121B720F4A78EDEBFDADAC37C4221D2096EBFE152986D857BA5F6EC691FF3AED37B46EE91E32C2EBE31272BA55596763036A7DC95415085BB021A45F6342F12606449C429C9E211894E6A68E9EF3401EEF988EEF615D0E53B92C08BB274A6CD354B73146782A7E5DAA5FF03EB02F3D1071E7FE3584F65D7412B3C76679E98160A85E1E09284B9E4CD3F7189D364D9DB1A39663ACC805CD1E06EC822A2CBF4A8F8F72720D157C0A6EF9F90E3442BF95C1F94FD166B5FAE038B82FA3003E2B71235640CA30DE625C2BB53C2618E7CD9688E50B29032261D7F0A69FA7704243264CE7E83707F92DE9D7507C23D5A19526BF26A40C9CFE01D8AF1AC2657E149205D257797E1B7332DEEFA06C345B61A035DC54F3F440D6D98BB1DE0DFD7811C + DCF9E142D6118703ABCF754B45EBF6E5C4EDCD71750D3891BFFCBFB0C5479788548ECF30FE696B1B0C266D0D9CDCDCBC38BEFDA415235AB35DC971DC261E20D1320FF8DA508AC42507DFB19BF549321FC7FE9777DF49DFCE160C7DB3E4C9E31DCA1D387EC0934BC36D2553367BC0444164CCC7784C8D2391AA7F920FA58C804B63D61FBF6DC5BFC8AA0CF4D0A25317C52C790FDE64E05F20DD216C23C7097AD89853C53A9462019226A340A034304835E30DEC1196E05943704D73DE124A91B35A04203CC570662C1935E3F96594401A93FE04F9A299179E29CEF98669AFD5E5D130349D8883B076653468AB34106F55ED5F89607CD97294263042CBCFF738D087B10E50640BDD32E170D49747E0AC66D08611AC53729FB65A0C66F2A973E2C25DEBE66799F18F97D422E2AEF85DF355CD016E923CB250295C3E3F3EAF2D88DB43437ACCE9FE311660E28955D448C1BA3CCE9EB43E74005CEA5700D9E273C05EF1AA30F9EC26FC3E396F3F57C7CA20596DA31E4A52FA44EC31067DC53270FB645CD01C694AF4243E8697EDA91B448F57B9D6011B70A7B4DCED8FA0FAF567A663B344799EB141409BB0B724688B31C3463AF2F5D9C4A91EC2E7133A3D26253F10F3BF96BE487F8C091EE4F7C570B0150EF495EA2402DC83BD1F4248C21E2B1F3DB1273B108C22ADC4DC1305EF280FC5A32F805E83808B6F7CB0F2DF0770CE5C7A07E957B1A78FD443F39EA69A13B2A136DB49FDFE14259273178920D74B014FBA551D62DC9424C8BDCF751F40027E223F6CBE5A6C50D5A0C42B68E55C7B0548A65D9EA05B615DFB06010AB2F169AA0CA49ECC5EA6AB41916D80DEE5C512E3DF20AC8316211C80966718840CADC70A5353A14FCC36117C26E29157A8C5BF658F37D1165F2BE4936F52CB3E37A50FA60A8E75A5FB7C3F7600ACE1EEB2D39CAE019B7D3CF25E96885CB930368157559B8C1C3971DCFEBAC9E6C4E834A8116DE266CFC95C0D3E5F0F06F94F1FEF6D4126C50BD3A8DD7798669DE1E94DF85105BC92D4AC + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark end + %APLT1End + %RBIEndFontSubset +/Helvetica cguidfix +/F1.1/Helvetica renmfont +[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeA { { 1.8008 exp } bind exec} bind +def +/MatrixA [ 0.9642 1.0000 0.8249 ] def +/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def +/DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def +end ] /Cs1 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind +] def +/MatrixABC [ 0.4124 0.2126 0.0193 0.3576 0.7151 0.1192 0.1805 0.0722 0.9508 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs2 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4295 0.2318 0.0204 0.3278 0.6722 0.1111 0.1933 0.0960 0.9578 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs3 exch/ColorSpace dr pop +%%EndPageSetup +/Cs1 SC +1 sc +q +0 0 413 563 rc +0 0 m +413 0 l +413 563 l +0 563 l +h +f +/Cs2 SC +413 0 0 414 0 84 cm +BI +/Width 1239 +/Height 1242 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcGZJJcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcGZJJcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcGZJJcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcGZJJcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcGZJJcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcGZJJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcGZJJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcGZJJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcGZJJcG'9Qi;R8Jc:6"Jc:6"Jc:6"Jc:6"Jc:6"Jc:6"Jc:6" +Jc:6"Jc:6"Jc:6"Jc:6"Jc:6"P5atNJcGZJP5iDuYPj%NJc1/uJc1/uJc1/uJc1/uJc1/uJc1/uJc1/u +Jc1/uJc1/uJc1/uJc1/uJc1/uXo6fLmf&:IP5k"MeGZTKJc()sJc()sJc()sJc()sJc()sJc()sJc()s +Jc()sJc()sJc()sJc()sJc()sJc)YJec#IFo)=^MV#U,en,;qWp%t!MJbjroJbjroJbjroJbjroJbjro +JbjroJbjroJbjroJbjroJbjroJbjroJbjroJbkQ+p&"[brVYpYq#6ueXoIbep&+1Rrqb.?]D-sPJbXfk +JbXfkJbXfkJbXfkJbXfkJbXfkJbXfkJbXfkJbXfkJbXfkJbXfkJbXfk[eSAJrqcQiqYTj]qu,m\XoGO' +q#9sbq#($drqcEcp%[/5]CpgLJbFZgJbFZgJbFZgJbFZgJbFZgJbFZgJbFZgJbFZgJbFZgJbFZgJbFZg +JbFZg[eA>IqtU*bp\F^`qu#p]q#7Dq[f?.%q#1*fqtp0bqt^-aqtKmZqt9OPo(00XJb"B_Jb"B_Jb"B_ +Jb"B_Jb"B_Jb"B_Jb"B_Jb"B_Jb"B_Jb"B_Jb"B_Jb"B_Jb$/m_oD%tWp@\1Zq#:*dqYpBhr:U$crk/9Ms82fgrVl`lqtp6hq>U0dp\XX_ +o_\7Tnb_hQn,)PPmJcJLlhKc?l*BN(k^hrKk^hrKk^hrKk^hrKk^hrKk^hrKk^hrKk^hrKk^hrKk^hrK +k^hrKk^hrKkd0LDl2KuIlh0WDmJH>KmfDqIrUB^SrpojVqtBp]rqQ9brqlTjq#13k^]2CTq#:9kq#($d +rqcNfrqQKerq??aq"+LTrp]pUqsOINrp9OJq!.P9qrdP4\E/;'J`VIEJ`VIEJ`VIEJ`VIEJ`VIEJ`VIE +J`VIEJ`VIEJ`VIEJ`VIEJ`VIEJ`VIEZfUc?qrdY9qs+1Hq* +qq_8.rnm_5ro*k9!TW2?j8S-=k5OQCkl0lHli-8JmJcSRnG_tWoDA4Xp\ssbqYpBkr;6Hfrm(Pks7lTm +rVl`lqu6Hkq=s^`p&"@XnG_nUmJcDMl2KlFk5OKAj8S$:i;;F2hY>k)g&BXsfCd\\eAp$hdt,u!dt,u! +dt,u!dt,u!dt,u!dt,u!dt,u!dt,u!dt,u!dt,u!dt,u!dt,u!e'$5#eFhAkfCdeqgA]k+h#?./hZ;Zn +rS[\7ro="=roa1Brp0RMrpKdSrp]pWqt0m]rqHqr.P4rndY0rnIG)rn%/#rm^hoqpP&^p!:.nJ^/hlJ^/hlJ^/hlJ^/hlJ^/hl +J^/hlJ^/hlJ^/hlJ^/hlJ^/hlJ^/hlJ^/hlJ^1^Lo$@!UrmCVkrmUbprn%/%!SZ6-gA]n,hYuF3i;Va8 +j8S0>kPj]ElMg5Nn,DhUnc&+Yo_\@]p\sseq>U6fr:p6irmCbts7lTjrVl`lqYpdrm:Ynrmq)#rn@A.rnm_6roO.Aroj@Irp9XQrp]pXrq-*] +rqHEfrqcWkq#1*hfDjS)q#:9krqucmrqcWhrqHEcqt'gWrp]pTrp0RIroa:Aro!e5rnRM+rn.5#rmC_l +rm(DarlG)Yrl"fQrkSNJrkABErk%s:o!nA%_7"p'J[U-U6fr;QZlrn%2(s8N#mrVQKkq>U0gp\sjbo)A1Yn,D_R +m/H5JkPjTBiVqa6h>Z+,fDa>"dJhGjbl5caa8X'W_u@IN^](qD]Df>>\,Ni8[JmQ1ZhUj!YeI;lYCWm. +YCWm.YCWm.YCWm.YCWm.YCWm.YCWm.YCWm.YCWm.YCWm.YCWm.YCWm.YIUk0YkYO'Zhq00[f3c8\Gj): +]`,YE^]D#Zrlb;erm:Ynrn%/%rnIG0ro!e9roa:Erp0ROrpTjUqt0m]rqHEerqcNirr)`n +fDjS)rr2fnrquZirqQKerq69^rpg!WrpKdNrosFEro3q9rndY-rn.5"rm:YjrlkA_rl4rTrkSNJrk8Z@3 +jSn9?kl0oImJcVSo)A7[o`"Uaq#:*gqu6NgrVlfMs4[MPrqlZnr;6?iq#:!do`"F\nG_nUm/H5JkPjQA +i;VU4gA]_'ec*tqc2Plba8X!U_Z%:K])K8>\,N`5ZMq',Xo>F$X8]*tW;`^lV>d:fU].!nTn/ngTn/ng +Tn/ngTn/ngTn/ngTn/ngTn/ngTn/ngTn/ngTn/ngTn/ngTn/ngTn/o>U&1VaV"gecVuEXoWrB+!Y5YX( +ZMq33[C$"Brj_s?rk8U9jr;6Hlrn@D1s82fprVl`oqu6Hkq#:$e +p&"=ZnG_eRli-,IjSn0iaSs*V_>_.I\Gir9ZMq',Xo>@"V>d7hU&L_aTDkA[Rf8`S +Qi<9LPk^IAP5(0OOF`LEOF`LEOF`LEOF`LEOF`LEOF`LEOF`LEOF`LEOF`LEOF`LEOF`LEOF`LEOF`M+ +OSFt5P5^[BPl@$KR/WNQS,SrWSc58\T`1_cVZEcr!3,t!ric=+rj;[8rk/6Grl+lWrlkAfrmC_rrnIG. +ro!e;roX4ErpKdSrpfmXrqHEerqZQjqu-NngAg+2qu6TnrqucmrqcWhrqHEarpp'YrpKdMroj@Dro*k7 +rnRM)rmh"prlkAarl+lPrkABBrj;[1riZ7!rhoakrh07_rg`tVrgEbOrfmDGrf[8Brf?i7rf+4BJW,/= +JW,/=JW,/=JW,/=JW,/=JW,/=JW,/=JW,/=JW,/=JW,/=JW,/=JW,/=JW-popl502rf@&?rfR2Drg!JK +rg<\RrgWnYrh0@fUB%(gVZ*XqXo>U)[JmW6]DfVF_u@aVcMl2ieGe/#g]$(/ir8'=kkj`Gn,DnWo`"R` +p\sseqYU3irn@D1s82fprVQKkq>U0gp\sganG_nUmJc>KkPjQAi;VU4g&BP$df.PkaSs3Y_#CtF\c/u8 +YPt['WW&^mUAgeaS,SlUQN!-JPQ$^DO8b1=N;JM3M>i>1LTcG`L4P)1L4P)1L4P)1L4P)1L4P)1L4P)1 +L4P)1L4P)1L4P)1L4P)1L4P)1L4P)1L8p"-L]3,/M>iG4N;eh9NrG+=P5^aGQN! +rf$i5reLK-re10"qgbbtJU`6#JU`6#JU`6#JU`6#JU`6#JU`6#JU`6#JU`6#JU`6#JU`6#JU`6#JU`6# +JUanRomm$mre(*$reLK/repc9rf@&@rg!SOQN3BOS,T&ZU&LnfX8]7#Z2V63])KME`W!pWc2Q/jec+8$ +hu;U6jSn?Al2L)LnG`"Xo`"Uaq#:-er;QZlro!h7s82fpr;6?iq#9scoD\=[n,D_Rl2KiEj8Rs8gA]e) +eGdenbl5W]_#D(I\Gif5YPtU%V>d4gTDk8XR/W?LOT(:>MuJP3L]2u(K)U<"If=cpI/A8oH@^BnH@^Bn +H@^BnH@^BnH@^BnH@^BnH@^BnH@^BnH@^BnH@^BnH@^BnH@^BnH@^CBHMDmeIf=irJGt0"KDpW)M#N;2 +NW,%@PEQ!1rg3VQrgj%^rhoapriQ1,rjVm>rk\TPrlY5ermLetrnRM0ro="@rosFKrpTjVrq-3`rqHEg +qu$Hlqu5ORi;`]QrquclrqZQfrq-3]rp]pTrp0RHro=";rndY,rmq(rrlb;^rkn`Jrjr*9riZ7$rhoag +rgs+Xrg!JGrf@&9re^W/rdt-#rdXoprd4WjrcnJTQHbJTQHbJTQHbJTQHbJTQHbJTQHb +JTQHbJTQHbJTQHbJTQHbJTQHbJTQHbX`XPbqf_s_rcnEfrd4WmrdOisre19)reUQ4!KE'=NW,+?QidInYl;!.\Gj8B_>_LScMl5jec+;%h>Z@3k5OQCli-APnG`%YpAXgcq>U9jr;QZlro!h:s8N#s +rVl`oqu6Ejq#:$boD\7Ym/H;Lk5O?=hu;C0f)F.tci2#b`rM#N/.JGsrqHN&-fF8g4ZDuOVQD#S2KC&Vf7 +BDuMTAV"EDAV"EDAV"EDAV"EDAV"EDAV"EDAV"EDAV"EDAV"EDAV"EDAV"EDAV"EDAV"F$Ab'L2B`;`F +CAr&KDuO_TEW1.\GQ)pfIfY(M!.b'$reUQ2rf@&ErgEbXrh]UmriZ7.rj_sBrl4rZrm(Mmrn%/)ro!e8 +roa:Grp9XQrq$-]rqHEfrql]mqu,IQj8],Xrr)iorqcWhrqHEarpg!Wrp9XJroX4>rn[S-rmq(qrm(Ma +rk\TIrjMg0riH*prh'1[rg!JErf-o4rdk'!rd=]hrcS3\rbqdQrbMLHrb)4@qd]D0Y@)ohJRF%:JRF%: +JRF%:JRF%:JRF%:JRF%:JRF%:JRF%:JRF%:JRF%:JRF%:JRF%:X^Lp4raPb8rau.DrbMLMrbqdUrcJ-` +!I8qjH2`_-.2>_-.2>_-.2>_-.2>_-.2>_-.2 +>_-.2>_-.2>_-.2>_-.2>_-.2>_-.2>_-.g>khV"?N+=2@/aU6A,^*>BDuWED>nGPEW1+^GBX%2rd4Wp +re(3+rf@&@rg*PSrh07friZ7+rji$Drkn`Wrm:Ymrn%/*ro!e:rosFJrpKdUrq$-_rqQKhrquZli;_j; +rr2oprql]krqQKerq-3ZrpKdOroa:Arnm_/rn.5!rltGbrl"fLrji$5ri,mnrh'1Wrg!JDreUQ.rdaup +rd"Kcrc%jSrbMLHrau.>ra>_4ra,S/r`f/$oi\n/JQRJ*JQRJ*JQRJ*JQRJ*JQRJ*JQRJ*JQRJ*JQRJ* +JQRJ*JQRJ*JQRJ*JQRJ*JQTQenlb`kr`f8+ra5Y5raYq>rb2:Grbh^T!HW;^F8gC_IK"crL&R#0NrG:B +S,T#YV#IIpYPu$1^AbtJa8XB`dJh_rh#?10j8S9AlMg5NnG`"Xp&=acq>U9grS[_9s8Murr;QTmqYp9h +pAX[_nG_kTlMfrFjSn*:g&BS%dJh;fa8WpS\c0#9YPtEuU]-h`Pl?jFN;eP1K)U5uGQ)aaE;j_RCAqiE +@fBg8?iF=0>Q.e)=T2D$$>Q.t.?iFL5AH$0>C&VuNDf5VorcA'`rd4WpreLK1rfI,GrgNh[ri,murj2U; +rkSNPrltGhrm^r%rn[S5roa:Frp9XRrpp'\rqHEerqlTki;_j;rr)iorql]krqHEbrpp'WrpB^MroO.= +rndY,rmq(qrlP/ZrkSNDrjDa-rhTOergNhLrf@&8re(3#rd+Qdrc8!Urb2:Drac"9ra5Y0r`T5&r`8en +WD\:FJPq%sJPq%sJPq%sJPq%sJPq%sJPq%sJPq%sJPq%sJPq%sJPq%sJPq%sJPq%sW`&gpqc*Pqr`B)$ +r`];*ra,S4raYq>rb;IND#eGPEW11]H2`9lK`6c+NrG=CR/W`WVZ*UpZ2V?6^Ac(MbPofdeGe2$h>ZC4 +kPj`Fm/HJQnc&1[p\sseqYU6jro=%=s8Murr;QTmq>U-fp&=O]n,D_Rl2KcCir7d5fDa;!ci2#b`W!XO +[f3T3X8\glSc4uTOT(7=L]2i'IK"HiEW0nUC]7uGAc?*:?N+4,=T2D$<;TPi:omHD:Ou;m:Ou;m:Ou;m +:Ou;m:Ou;m:Ou;m:Ou;m:Ou;m:Ou;m:Ou;m:Ou;m:Ou;m:T%"f;#X>k;Z9Vo_:!G5pDB)ZQEE;jqXGlE3lJc:H( +NrG4@RJrr[VZ*at[f3l;_>_OTbPolffDaM'i;Vj;k5O]Gn,DkVo`"Uaq#:-erVlfVs5X.YrVQKkq#:!d +o`"C[mJcGNkl0WAi;VL1ec+"rbl5T\_>_(GZMq$+VuE:eRf8NMN;e\5Jc9upGQ)[_D#S2KAc?*:?N+1. +=T2A#;uTYn;#X5h9^,3^8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc +8qBUC9(GXP9`%Q`:]=5j;uTer=T2M'?N+C7ARtjQrb;@Mrc.p]rd=]pre:?3rf[8Jrh07driH+,rji$D +rl>#\rm:Yrrn7;-ro=">rp'LNrp]pZrqHEerqcNjrr1sXj8],WqtpBfrq??`rpg!Trp'LGro*k6rn@A$ +rmC_grl"fPrjr*6riQ0rrgj%VrfR2:re:?$rcnEcrc%jOrb2:Ara5Y1r`T5$r`&kor_WSir_32]kt&NY +JOb8]JOb8]JOb8]JOb8]JOb8]JOb8]JOb8]JOb8]JOb8]JOb8]JOb8]JOb8]JOd7@lq%+Iqb6u`r_NMj +r`&kur`T5*ra,\7@/sa8BDu`HDuOnYHiAKnK`6r0O8bLFT)PJ`X8]L*\,O/A`r=*Zci2Jof`'b,j8S0> +lMg5Nn,DqXp\sseqYU6jro=%=s8Muoqu6Bip&=R^nc%nSlMfrFi;VU4g&BJ"d/M2e_Z%=L\Gic4XT#!o +Rf8ZQOT((8K`6H"G5cR^DuOGLB)Z6<>lIq+=8Pnp;#X2g9E%N^8H),V7Y+$[7Y+$[7Y+$[7Y+$[7Y+$[ +7Y+$[7Y+$[7Y+$[7Y+$[7Y+$[7Y+$[7Y+$[7Y+%)7fGpW8H)3[9)_Tb:]=5j<;ons=oMb/@:9.Erac"C +rb_XTrcnEhrdk'*rf-oArgs+`ri,n&rjMg>rl"fVrm(Mnrn.5*ro3q=rosFMrpTjWrqHEerqcNjrr1sX +j8],WqtpBfrq69^rp]pRrp'LFro!e4rn.4urm1Scrk\TIrjVm1ri?$mrgEbNrf6u4re(2trcS3\rb_XH +raYq7r`];(r`/qpr_WSgqb-fWr^WhSJOP,YJOP,YJOP,YJOP,YJOP,YJOP,YJOP,YJOP,YJOP,YJOP,Y +JOP,YJOP,YJOQA'r^QlWr^d#[r_3;cr_WSmr`/r"r`oP2?3"=2A,^0@C]8>QGQ)pfJGtB(MuJq>SGo2\ +W;a($[Jmi<_u@[TcMl>mfDaS)iVqp;kl1#Ln,DnWpAXgcqYU3iro=%=s8Murqu6Hkp\sgao)A+Wli-2K +jo43;h>Z%*d/M>iaSs$T^&GJ>Y5YI#T`1>XPl?[AL&QZ&HiA-dErKnSAc?0sMn=8lD)?!RG9raGe=rb;@Mrc\9drdXp%reg]QA%.@/ag*$MZ/_:RJrcVV>dXsZMqH7_Z%ORbPorhec+>&iVqp;kl0uKmf)bU +pAXgcq>:*hro=%=s8MurqYpn(d/M;ha8WjQ]`,;;X8]$rT)P#SOoC7; +KDpE#GlD^^DZ4ALA,]p9>lIh(sPo=TM`2!*fG0ral(B +rb_XUrc\9hre:?.rfI,Irgj%ariZ7+rjr*Frl"fZrmLerrn@A1roF(Brp9XOrpg!]rqHEfqu$Hmj8\0> +rr)imrqZQfrq-3\rpTjOrosFCrnm_1rmq(qrltG^rkJHFrj;[*rhoaerfmDEreg],rdOijrc%jRrb)4= +ra5Y/r`B)!r_`Yir_3;_r^d#Yr^H]Od6cDLJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO%gPc9hCqr^?`Tr^d#\r_3;er_`Yor`B2)=o_b*?N+L7BDucIF8g@^I/\fuL]3A6 +Qi_CPbPorhec+;%i;Va8kPjfHmJcYTpAXgcq>:*hro=%=s8MurqYpn2I@K'X5>Q.\&<;obo:B!rd +8cD6Z7fGgQ6fUMO5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_22> +5i>!+6iKLQ7K,gV8H)9]:]=2i;uTi!=]k`-ra,S6ral(Erc8!\rd4WsreCE4rg*PPrhKIpriuI5rk\TP +rlY5frm^r#ro!e8roa:HrpB^Trq69arqZHhrr1sXj8],WrqcWirqHE`rpp'Vrp'LIroF(8rnIG'rm1Sf +rl4rNrji$7ri,mnrg`tOrfI,8rdk&src\9[rb_XIraGe5r`fA&r`&knr_i'R<.r^?`Sr^ZrY +r_*5cr_NMkr`9,'=TDV(?N+I6Ac?KEEW1(ZHiAZsLAm54QN!?PUAh:oZ2V94_>_CPb5TffeGe/#hu;U6 +k5O]GmJcYTp&=[aq>:*hro=%=s8MurqYpn2I@K'X5>Q.\&<;o_n:&[fb8cD6Z7fGgQ6gR.O5_21O5_21O5_21O5_21O +5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_22>5i>!+6iKLQ7K,gV8H)9]:B"&g;Z9_u=]k`- +ra,S6ral(Erc.pZrd4WsreCE3rg*PPrhBCnric=1rkJHMrlY5frm^r#rnm_6roX4FrpB^Trq69arqZHh +rr1sXj8],WrqcWirqHE`rpp'VrosFFro="6rn@A%rm1Sfrl+lMrji$6ri,mnrg`tOrfI,8rdauqrcS3Y +rbVRHra>_3r`];%r`&knr_U-f +oD\=[mf)JMkPjN@h>Z.-ec*nobl5T\^&GSAZMpj&V>d"aPQ$[CM#Mr(I/\9fDuOSPBDu<_3r`];%r`&knr_U-foD\=[mf)JMkPjN@h>Z.-ec*nobl5T\^&GSA +ZMpj&V>d"aP5^L@L]2f&I/\9fDuOSPBDu<rr)imrqZQfrq$-[rpKdMroa:@rn[S-rmh"orlkA\rk8&r^$EJqa:?Nr^HfVr^d#]r_EGgr_i_s!EiP*=oM_+A,^'= +CAr5PFT-UcK)UN(NW,4BRJroZXT#F&\,O,@_Z%[Vd/MMng&Bn.iVr!=lMg2Mnc&4\pAXmbr;Q]Us5X.Y +rVlZmq>U-foD\=[mf)JMkPjN@h>Z.-ec*nobl5T\^&GSAZMpj&V>d"aP5^L@L]2f&I/\9fDuOSPBDu<< +?N+.-rr)imrqZQfrq$-[rpKdM +roa:@rn[S-rmh"orlkA\rk8:*hro=%Cs82fprVlZmq>U-foD\=[mf)JMkPjN@h>Z.-ec*no +bl5T\^&GSAZMpj&V>d"aP5^L@L]2f&I/\9fDuOSPBDu<:*hrT!qBs82fprVlZmq>U-foD\=[mf)JMkPjN@h>Z.-ec*nobl5T\^&GSAZMpj&V>d"aP5^L@L]2f& +I/\9fDuOSPBDu<rn[S-rmh"orlkA\rk8U-fo)A1Y +mf)GLk5OB>h>Z.-ec*knbPoK[^&GSAZMpj&V>d"aP5^L@L]2f&I/\9fDZ4GNB)Z3;?N+.-_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOO$LcNX?_>%JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$_1 +a?P;BJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO$+uQp8MSJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOcp3s_Rm;NiJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO_Ecg>XZkc0 +fg(*RJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO&Ndg-;]'j$0b5JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO%1>ks+W# +YW_>:lp'JpJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOmQg#$mlms=losc#\Nk^2JO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp/s5JKI7 +5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/ +rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5 +rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOc9Uh_mlp2'loa;ir]L0Alob&+ks"Z&kWj\aJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO&rpmm$8)mlg#"j#d6&r]BI/pc[k*nislSJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,B*4RtZ(53tMT5_21O5_21r +5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO%gPlp(/,nicY.ofM_*juMunofMh/pc\(0lp(,-JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +!'om8ofhq0ofVn/niGnnniHG*ofW"4mlp)&blJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp<"3:Am& +3q>B-4SV).54Ur15_21O5_21O5_21O5_21O5_21O5_21O5_21O5QF(?5OUf24nq/447tZ*3U\rr3VYZ+ +48:r54mtT*5Kc_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOh*CU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, +N/ +3r;#64SV)454:_`5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO&-Yniue2pc\:4q`F[9pc842pc%k(ju)fiq`"1-r]0a7pcJ@8 +of_k0pcnU?JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO#&Wq*4^?ofi.6ofW+5q`=L4q`+@0oetqioeu\+ +of2q2pcA13q`OO7nilh5d6N7JJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYpB*,2u>T33VYZ448:r54nV#35L_rL5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`- +r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKi +rqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXop +rcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOk!8B"pceI9pcSF8q`=^:pc/73 +pbr",q_\:.r\X:(pbMCrpb_k*pbr+1q`+I5q`=L6q`Oa=ofhn1!C&f"5_D=Q5_21O5_21O5_21O5_21O +5_21O5`\2%5Q*hA557;94Sq5;3rV/73;tl32Z#B/2#]<12"`["1@d6r2#B0*2Z>Z43;Y`53qtf64Sq;7 +54:_i5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO&?_ofr+5pc\L:pcJ@6q`4X8q`"C1q_e7-pbVIrpbD=ppbVe(q_e7/q`"L6 +q`4O7q`FR8pc\C9oKN@@5Cl(P5_21O5_21O5_21O5_21O5_21O5_21]5kR>B5!J^)pc\L:pcJ@6q`4X8 +q`"C1q_e7-pbVIrpbD=ppbVe(q_e7/q`"L6q`4O7q`FR8pc\C9nithnJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,N12>]6-1]&s)1#Ob_1&Ea$1]'$.2>]<22u>T33W;):48:r84nV#55Q!`s5__OT +5_21O5_21O5_21O5_21O5_21O5a"D'563r3qEFR8r]L'>q`=U7q`+R6q_n=/q_\1+q_J%'i%Y$_q_Iq& +q_\:0q_nF4q`+I5r]9plJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp3r:r:3;YZ62Z#B2 +2#B*.1A`g'0_d<`0)I=!0`*U%1A`m)2#]B32Z#H43;Y`53r;#94Sq;755IMA5Cl(S5_21O5_21O5_21O +5_21O5_21O5_21`5kRA>55IJ?4nq/:48q;<3W;#82uY`42?#H01]B0,1&E["0BOna0DdI#1&Ea'1]'$. +2?#N22uYf63Vtl748V/;4nV#35M\SU5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(D +rc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BD +qu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLF +ra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOks5#.pceI9q`OX8r]9p:r]'d6r\jX2r\XL. +r\FI-pb;Ruq_%"_pb)Fsq_8"(q_J.,q_\:0r\jX4r]'d8q`=^U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,N4 +2?#H01]B0/1&E[(0DdC!/c.*]/,Lmp/c.0t0E*[)1&Ea*1]B612?#N22uYf63W;):48V/84nq5>5P@3rV/:3;tl62Z>T52#B*.1B'$*0`Ea& +0)I6t/ESJ[/Gh$r0)I=$0`Eg(1B'*/2#]B32Z#H43;Y`83r;#94SV)754Uqu5_21O5_21r5lO+L6i0:N +8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO&Zh +nj!"8pc\L:q`Fd= +4Sq5>3r:r:3;tl92Z#B22#]<11B'$*0`Ea)0)I7"/Ggsm.dSVZ.f1aq/Gh$u0)dO$0`Eg+1A`m,2#B31 +2uYf63W;):48V/84nq565N>"[5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jX +rd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6Tm +rqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOmm-P1pceRlJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3rV/=3;tl62Z>T52#]<11B'$-0`Ea)0)dI%/Ggss.fLml./PCY +-MStc./k[p.f1aq/H.7#0)dO'0`Eg+1B'*,2#]B02uYf93Vtl:48V/;4nh,@5!Ja+JO#/ZJO"cOJO"cO +JO"cOJO"cOJO"cOJO#\iofr48r&t!Aq`Oj>q`=^:r]'m9q_nF2r\XU1r\FI-r\4=)r\"1%r[dpsr[Rmr +paH"elmDKTq^DFmr[Rdqr[e%#r\"1'r\4=+r\FI/q_\:0q`"L6r]0j:r]C!>q`XU9pcme(JO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,4o7A@48V)<3W;#;2uY`42?#H31]B0/1&`m+0)dI"/H.1!.fLmr./PCk-MSnR,l8nb +-Mo1i./k[p.fLst/H.7#0)dO$0`Eg+1]B612>]<22uYf93W;):48qA;4o.>C5!JX(JO#8]JO"cOJO"cO +JO"cOJO"cOJO"cOJO#\iofr48r&k$Cq`Oj>q`=^:r]'m9r\jX2r\XU1r\FI-r\4=(r[n!ur[[str[Igp +q^;@ipa,8Pq^)+dq^;@kr[Igrr[[t!r[n+%r\+.&r\=C.r\XU3q_nF4r]'m;r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3r:r:3;tl92Z>T52#]<11B'$-0`Ea)0)dI"/,h$t.K1ap-i57i +-28bP,Prb`-2o7g-iPOn.K1gr/,h+!/cIC%0E*[)1&`s-1]B612?#N52uYf93Vtl:48V/84oISB557?n +5`\0]5_21O5_21O5_21O5_21O5_21O5at%65PRG>4TRZ-rB0s=r]9p:r]'m9r\ja5r\XU1r\FI-r\4=) +r\"1%q^_Xqr[Igpr[7Rir[%=blm)BQq^)4gq^;@kr[Igrr[[t!r[n+%r\+7)r\=C-r\OO1r\a[5r\sg9 +r]0j:r]C!>pc\C9pcmn+JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, +4o7A@48V)<3W;#;2uY`72?#H31]B0/1&`m+ +0E*R&/H.1!.fLmr./PCk-N5=j,l8h`,4ZoM,5WVa,lT+e-N5Cl./k[p.fLst/H.:$0E*[)1&`s-1]B61 +2?#N52uYf93Vtl:48V/;4oISB557?n5`\0]5_21O5_21O5_21O5_21O5_21O5at%65PmY>4TRZ-rB1'@ +q`=^:r]'m9r\ja5r\XU1r\FI-r\4=)r[n+#r[[str[Igpq^;@ir[%Ohq]kt^nfdZMq]l(cr[%Fgr[7[n +r[Igrr[[t!r\"1'r\4=+r\FI/r\XU3r\ja7r]'m;q`=^lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpT52#]<11B'$-0`Ea)0)dF$/,h$t.K1ap-iPIl-2o1e,Q8na+o!2Z+9!D^ ++8$cU+oT52#]<11B'$-0`Ea) +0)dF$/,h$t.K1ap-iPIl-2o1e,Q8na+o!2Z+9!D^+8$cU+o_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOpd"L:pce[?pcSO;r]9p:r]'m9 +r\ja5r\XU1r\=C+r\+7'r[n+"r[Rmrr[@anr[.UjrZqIfq]c"_q]PPRq]>MSq]Pk]q]c"arZqIhr[.Ul +r[@apr[Rmur[n+%r\+7)r\=C.r\XU3r\ja7r]'m;q`=^r]C*?q`4X8r\sg7r\a[3r\OO.r\4=)r\"1%r[[str[Igpr[7[lr[%Oh +rZh:arZV.]ocO&Pp`KAUrZV._rZhCfr[%Ojr[7[nr[Igrr[e%#r\"1'r\4=+r\OO1r\a[5r\sg9r]0j: +r]C!>q`Xg?ofq\+JO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,4TI\A557?n5a"B`5_21O5_21O5_21O5_21O5_21O5bUI95PRGA4o7>B +4$3C&r]:$=r]'m9r\ja5r\XU1r\FI-r\+7'r[n+#r[Rmrr[@anr[.UjrZqIfrZ_=brZM([q]>)Eq]>VV +rZM1`rZ_4ar[%Ojr[7[nr[Igsr[e%#r\"1'r\4=,r\OO1q_nF4r]'m;r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3rV/=3;tl92Z>T52#]901&`m+0E*R&/H.1!.K1ap-iPFk,lT%f,5rb_ ++T4TI\A54q-k5a=Tc5_21O5_21O5_21O5_21O5_21O5bUI<5PRG>4o7>B4$*F(q`=^:r]'m9 +r\ja5r\XU0r\=C+r\+7&r[e%!r[Igpr[7[krZqIfrZ_=bq]Pk[rZ:hTq],SSrZ(nVp`0/OrZ:qYrZM1` +q]l(cr[.Ulr[@aqr[[t!r[n+%r\4=+r\FI0r\a[5r\sg9r]0s=q`Fd>q`X^U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,5PmY>4o7A@48q;?3Vtf82Z>T52#]<11B'!,0E*U'/H.1!.fLjq-iPIl,lT%f,5rbb+T!8[*r[2W +*;(9J)Z(KK*<$uX*r@&Y+T!A^,Q9"g-N5Cl.K1gr/,h."0)dO'1&`s-1]B612Z#H43;tr;3rV5<4T7JD +55%285Cl(b5_21O5_21O5_21O5_21O5_21O5_21o5kmS@557;<497N*!'C0@r]0j8r\ja5r\XU1r\FI, +r\+7'r[e%!r[Rmqr[7[lrZqIfrZ_=brZM([rZ;%Zq],8Jq\o>Np`08RrZ:qYrZM(^rZhCgr[.Ulr[Igr +r[[t"r\"1'r\=C-r\OO1r\jX4r]'m;r]:$?q`Oj@ofi.8lp-+eJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp +3rV/=3;tl92Z>T52#]901&`m+0)dI%/,h$t.K1^o-N5=j,lT"e+oWV`+9!>Y*W@&U)u(?H)>G-I)u^iV +*W$oW+9!D^+oW\b,lT+h-N5Fm.K1gr/H.7#0)dR(1&`s-2#]B32Z>Z73;tr83rV5?4T.DD4[&R(pcj

_YrZM1`rZ_=er[%Ojr[@apr[Rmu +r[n+%r\4=+r\FI0r\a[5r\sg9r]0j:r]C*Aq`X^U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,5PmY>4oRSC48q;? +3W;#82uY]62#]<11B'$-0E*U'/H.1!.K1ap-N5=j,lT"e+oWV`+9!>\*W@&U)u^cN)=eXA)>b?L)u^iV +*W@,Z+9!D^+oW_c,lT+h-iPOn.K1js/H.:$0E*^*1B'*/2#]E42uYf93Vtl:48V,?4TR]/pceI;JO#Jc +JO"cOJO"cOJO"cOJO"cOJO"cOJO#nopcnX>pc\U=r]:-A3WM5?3W;#82uY]62#]<11B'$-0E*U'/H.1! +.K1ap-N5=j,lT"e+oWV`+9!>\*W@&U)u^cN)=eXA)>b?L)u^iV*W@,Z+9!D^+oW_c,lT+h-iPOn.K1js +/H.:$0E*^*1B'*/2#]E42uYf93Vtl:48V/>4nq595O:Xd5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u +=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_ +rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4 +rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOpd"^@pceRr]:$= +r]'m9r\ja5r\XU1r\=C+r\+7&r[e$ur[Igor[.UjrZhCdrZV7`rZ;%ZrZ(eSrYkYOp_`cBq\]2Jq\oGQ +q],SUq]Ge[rZ_=drZqIir[7[nr[[t!r[n+&r\4=,r\OO1r\a[5r\sg9r]0s=r]C!>!'U6Cq`ad>JO#Jc +JO"cOJO"cOJO"cOJO"cOJO"cOJO#noq`jj>q`Xg=r]:-A3WM5?3W;#;2uY`72?#H31]B-.0`Ea)/cI=# +.fLmr-iPIl-2o.g,5rbb+TG'D(],'H)>b?O)uCWS*W$rX+TZ73;tr;3rV5<4Sq;=557A/5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/j +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO&uqq`jj>q`Xp@q`Fd< +r]0s;r\sg7r\a[2r\FI-r\4=(r[e%!r[Igpr[.UjrZqIerZV7`rZD+[rZ(eSrYkbRq\])EobRE@rYYMM +rYkYQrZ(nYrZD+^rZV7brZhCgr[.Umr[Igsr[e%$r\+7*r\OO1r\a[5r\sg9r]0s=q`Fd>!'U6Cq`ad> +JO#JcJO"cOJO"cOJO"cOJO"cOJO"cOJO#noq`jj>q`Xp@q`=g>3WM5?3W;#;2uY`72?#E21B'$-0`E^( +/H.1!.K1ap-N5=j,lT"e+oWV`+9!;[*;^]S)ZCWO)#+p?(AepI)#G3M)Z(KQ*<%#Y+9!D^+oW\b,Q9"g +-N5Fm.K1js/H.:$0E*^*1]B612?#N52uYf93W;):48qA>4o7G<5O:Xd5_21O5bp[E6N0@L7/f^U8H)6\ +:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.E +rpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mm +rgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOpd"^@q`am? +q`Oj>r]9p:r]'m8r\a[3r\OO/r\=C*r[n+#r[Rmqr[7[lrZqIfrZ_=arZD+\q],SSrYkbRq\];Kp_NW> +p_N`CrYYVPrYkbTrZ(nXrZ;%\rZM1`rZhCfr[.Ulr[Igrr[e%#r\+7)r\FI/r\XU4r\sg9q`4X:r]C*A +!'U6Cq`ad>JO#JcJO"cOJO"cOJO"cOJO"cOJO"cOJO#noq`jsAq`Xg=r]C*?!BE1=3W;#;2Z>T52#]<1 +1B'$-0E*R&/H.-u./kUn-N5:i,Q8nd+Tb9M(\ed@(&/RA(]G9N)?(QR)u^iV*W@,Z ++9!D^+oW_c,lT.i-iPRo.fM!u/cIF&0`Ej,1]B612Z>Z73;Y`83rV5?4Sq;=557A/5_21O5_21r5lO+L +6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO&uqq`jsAq`Xg=r]C*?r]0s;r\sg7r\a[3r\OO.r\4=)r[n+#r[Rmqr[7[krZqIerZV7`rZ;%ZrZ(nV +rYkbRrYYMKq\JN5q\K&FrYYVPrYkbTrZ(nXrZ;%]rZV7brZqIhr[7[nr[Rmtr[n+%r\4=,r\OO1r\a[5 +r]'d8r]:$?rB(*C4T7M@557?n5a=Tc5_21O5_21O5_21O5_21O5_21O5bUI?5PmYA4o7A@48q8A3B7(" +r]'m9r\ja5r\XU1r\=C+r\+7&r[e$ur[@anr[%OhrZ_=brZM1]rZ1tXrYthTrYb\Pq\T,FlkTC5q\T5K +rYb\RrYthVrZ1tZrZM1`rZ_=er[%Okr[@aqr[[t"r\"1(r\FI/r\XU3r\ja8q`4X:r]C!>r]U-Bpcn+1 +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,b9M(]G3I(%2k6(&JdG(],'K)?(QR)u^lW*r[8\+TJO#JcJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rpcnX> +q`Xg=r]C*?!BE.?3W;#;2uY`72?#H31]B-.0`E^(/H.1!.K1ap-N5=j,Q8nd+Tb9M +(]G3I(%2k6(&JdG(],'K)?(QR)u^lW*r[8\+T4o7G<5O:Xd5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Ko +re:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWi +rq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOq`sp@q`am?q`Oj>r]:$=r]'m9r\ja5r\XU0r\=C+r\"1$ +r[[ssr[7[lrZqIfrZV7`rZ;%ZrZ(nVrYkbRrYYVNrYGAGp_<]@rY5>Fp_<]Bq\K/IrYYVPrYkbTrZ(nX +rZD+^rZV7crZqIir[7[or[Rmur\"1'r\=C-r\XU3r\ja7r]'m;r]:$?rB(*C4T7M@557?n5a=Tc5_21O +5_21O5_21O5_21O5_21O5bp[?5PmYA4o7A@48q8A3B7("r]'m9r\ja5r\XU0r\=C+r\"1$r[[ssr[7[l +rZqIfrZV7`rZ;%ZrZ(nVrYkbRrYYVNrYGAGp_<]@rY5>Fp_<]Bq\K/IrYYVPrYkbTrZ(nXrZD+^rZV7c +rZqIir[7[or[Rmur\"1'r\=C-r\XU3r\ja7r]'m;r]:$?q`Oj@q`ad>lp-+eJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpQ41]B0/0`Ea)0)dF$.fLmr-iPFk,lT"e+oWS_*r[2Z*<$oV)>b9M(]G3I +(&J^<'E/^F'DiLC(&f!G(]GZ7 +3;tr;3rV5>497Q,r]U$?q`fWsPsBmcJO"cOJO"cOJO"cOJO"cOJO"cOUd4]>q`am?q`Oj>r]1'?3<2)= +3;tl92Z>Q41]B0/0`Ea)0)dF$.fLmr-iPFk,lT"e+oWS_*r[2Z*<$oV)>b9M(]G3I(&J^<'E/^F'DiLC +(&f!G(]GZ73;tr;3rV5<4T7M= +55RS25_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO')tpcnX>q`Xp@q`Fd3WV6$!'1$q`Xg?q`jF4JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,'`/XE(B,-L)#bEP)ZC]T +*<%#Y+9!D^,5rhd-2o:k./k^q/H.7#0E*[)1B'*/2#]E42uYf93W;):3rhAD4?WL(q`amAJO#JcJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rpcnX>q`Xp@q`Fd'`/XE(B,-L)#bEP)ZC]T*<%#Y+9!D^,5rhd +-2o:k./k^q/H.7#0E*[)1B'*/2#]E42uYf93W;):48qA>4o7G?5O:Xd5_21O5bp[E6N0@L7/f^U8H)6\ +:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.E +rpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mm +rgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOq`sp@q`am? +r]L'>r]:$=r]'m9r\ja4r\OO/r\4=)r[n+"r[Rmqr[.UjrZhCcrZM1^rZ1tXrYt_PrYYVNrYGJJq\8o@ +ne1g5q\9#ErYGJLrYYVPrYkbTrZ(nYrZD+^rZ_=dr[%Okr[@aqr[e%#r\+7)r\FI/r\XU4r\sg9r]0s= +q`=d?!B`LA4o7G?5Cl(b5_21O5_21O5_21O5_21O5_21O5_21r5kmS@55RMB4Sq5>3WV6$!'1$;Eq\/N5q\/i@rY>DJrYPPN +rYb\RrYthVrZ;%\rZM1arZhCgr[7[nr[Rmur[n+&r\4=,r\OO1r\ja7r]'m;r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3rV/=3;tl92Z>Q41]B0/0`Ea)/cI:".fLjq-N5=j,Q8kc+T'`JjH(AepI)#bHQ)u^iV*r[8\+TZ73;tr;3r:u=497Q,q`Xg?q`fWsPsBmcJO"cOJO"cOJO"cOJO"cOJO"cOUd4]>q`am? +r]L'>r]1'?3<2)=3;tl92Z>Q41]B0/0`Ea)/cI:".fLjq-N5=j,Q8kc+T'`JjH(AepI)#bHQ)u^iV*r[8\+TZ73;tr; +3r;#<4Sq;=55RS25_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO')tpcnX>q`Xp@q`Fd;Ep_3<5q\/i@rY>DJrYPPNrYb\RrYthVrZ;%\rZM1a +rZhCgr[7[nr[Rmur[n+&r\4=,r\OO1r\ja7r]'m;r]9pq`Xg?q`jF4JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,'`/XE +(B,-L)#bEP)ZC]T*<%#Y+9!D^,5rhd-2o:k./k^q/H.7#0E*[)1B'*/2#]E42uYf93W;):3rhAD4?WL( +q`amAJO#JcJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rpcnX>q`Xp@q`Fd'`/XE(B,-L)#bEP)ZC]T +*<%#Y+9!D^,5rhd-2o:k./k^q/H.7#0E*[)1B'*/2#]E42uYf93W;):48qA>4o7G?5O:Xd5_21O5bp[E +6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)b +rmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Md +rl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOq`sp@q`am?r]L'>r]:$=r]'m9r\ja4r\OO/r\4=)r[n+#r[Rmqr[7[krZqIerZV7_rZ;%ZrYthT +rYb\PrYPPLq\Al?mh>R4q\B)GrYPPNrYb\RrYthVrZ;%\rZM1arZhCgr[7[nr[Rmur[n+&r\=C-r\OO2 +r\ja7r]'m;r]9pR4 +q\B)GrYPPNrYb\RrYthVrZ;%\rZM1arZhCgr[7[nr[Rmur[n+&r\=C-r\OO2r\ja7r]'m;r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpQ41]B0/0`Ea)0)dF$.fLmr-iPIl +,lT"e+oWV`*r[2Z*<$oV)ZCWR)#b?N(AejA'_i@:'`/XE(B,-L)#bEP)ZC]T*<$uX*r[8\+oW_c,lT+h +-iPRo.fM!u0)dO'1&`s-1]B922Z>Z73;tr;3rV5>497Q,r]U$?q`fWsPsBmcJO"cOJO"cOJO"cOJO"cO +JO"cOUd4]>q`am?q`Oj>r]1'?3<2)=3;tl92Z>Q41]B0/0`Ea)0)dF$.fLmr-iPIl,lT"e+oWV`*r[2Z +*<$oV)ZCWR)#b?N(AejA'_i@:'`/XE(B,-L)#bEP)ZC]T*<$uX*r[8\+oW_c,lT+h-iPRo.fM!u0)dO' +1&`s-1]B922Z>Z73;tr;3rV5<4T7M=55RS25_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO')tpcnX>q`Xg=r]C*?r]0s;r\sg7 +r\a[3r\FI-r\4=(r[e%!r[Igor[.UirZhCcrZM1^rZ1tXrYthTrYb\Pq\T5Iq\AH3q\AuDrYPPNrYb\R +rYthVrZ1t[rZM1`rZhCfr[.Ulr[Igsr[e%$r\+7*r\FI0r\a[5r\sg9r]0s=r]C'@!B`LD4o7G<5Cl(b +5_21O5_21O5_21O5_21O5_21O5_21r5kmS@55RM?4T7GA3WV6$!'1$r]U-Bpcn+1JO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,'_iFB(AepI)#bEP)ZC]T*<$uX*r[8\+oW\b,Q9"g-N5Fm.K1js/cIC%0`Eg+1]B612?#N52uYf9 +3W;)=48h8B4?WU+q`ad>JO#JcJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rpcnX>q`Xg=r]C*?!BE.?3W;#; +2uY`72?#H31]B-.0`E^(/H.1!.K1ap-N5=j,Q8nd+oWS_*r[2Z*<$oV)ZCWR)#b?K(AJX>'_iFB(AepI +)#bEP)ZC]T*<$uX*r[8\+oW\b,Q9"g-N5Fm.K1js/cIC%0`Eg+1]B612?#N52uYf93W;)=48V/>4o7G< +5O:Xd5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=l +riZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@D +ro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOpd"^@pceRr]9p9r\sg6r\XU1r\=C+r\+7&r[e$ur[@anr[.UirZhCc +rZM1^rZ;%YrYthTq\fAMq\T,FobI6;q\T5KrYbSOrYthVrZ;%\rZM1`rZ_=er[%Okr[Igrr[e%#r\+7) +r\FI/r\XU4r\sg9r]0j:r]C'@!B`LD4o7G<5Cl(b5_21O5_21O5_21O5_21O5_21O5_21o5l3e@55RMB +4Sq2@3][7%q`+R6r\a[3r\OO.r\4=)r[n+#r[Rmqr[7[lrZqIfrZV7`rZD+\rZ(nVrYkYOrYYMKq\Ji> +p_N`CrYYVPq\oGQrZ(nYrZD+^rZV7brZqIhr[7[or[Rmur[n+&r\4=,r\OO1r\ja7r]'m;q`=^lp-+eJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3rV/=3;tl92?#H31]B0/1&`j*0)dF$/,h!s./kRm +,lT%f,5r_a+9!>\*W@&X)u^cQ)?(KM([Mq7(],'K)?(QR)u^iV*W@,Z+9!G_,5rhd-2o7j-iPRo.fM!u +0)dO'1&`s-1]B922Z>Z73;tr;3r;#<49.PB4o7G<5Cl(b5_21O5_21O5_21O5_21O5_21O5_21o5l3e@ +55RMB4Sq2@3][7%r]0s;r\sg6r\XU1r\FI-r\+7'r[e%!r[Igpr[.UirZhCdrZM1^rZ;%ZrZ(nVrYkYO +rYYMKlk]I7q\];MrYkbTrZ(nXrZ;%\rZV7brZhCgr[.Ulr[Igrr[e%$r\+7*r\FI/r\a[5r\sg9r]0s= +q`Fd>q`Xg?pcn+1JO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,4oRS@48q;?3W;#;2uY`72?#H31B'$-0`E^(/cI:" +.fLjq-iPFk,lT%f+oWV`+9!>\*W@&X)u^cQ)>b9;(],'H)?(QR)u^iV*W@,Z+9!D^,5rhd,lT.i-iPOn +.fLst/cIF&0`Eg+1]B612?#N52uYf93W;):48q>B4o@J?557?n5a=Tc5_21O5_21O5_21O5_21O5_21O +5bUI?5PRG>4oRS@3rqB'!':*>r]'m9r\ja5r\XU0r\=C+r\"1%r[[str[@anr[%OhrZhCcrZM1^rZ;%Z +rZ(nVrYkYOq\\Z9q\]2JrYkbTrZ(nXrZ;%\rZM1arZhCfr[.Ulr[@aqr[[t"r\+7)r\=C.r\XU3r\ja7 +r]'m;r]9plp-+eJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYpq`Xg?pcn+1JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, +5PmY>4oRSC48q;<3W;#;2uY`72#]<11B'$-0E*U' +/cI:".fLjq-iPIl-2o.g,5rbb+TZ73;tr83rV5<49.MF4[&R(pcjQ41]B0/1&`j*0)dI%/,h$t./kUn-N5=j,Q8nd+oWV`+9!>\ +*W@&U)uCQ?)>b?L)u^iS*W@,Z+T4nq595O:Xd5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1 +rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^ +rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOpd"U=q`adr]:$=r]'m9r\ja5r\XU1r\FI,r\+7&r[e%! +r[Igpr[.UjrZqIfrZ_=brZM1^rZ:qWrZ(eSll,a?q],SUrZ;%\rZM1`rZ_=drZqIhr[.Umr[Igrr[e%# +r\+7)r\=C.r\XU3r\ja7r]'m;r]9p4oRSA3rhAA3rV/=3;tl92Z>T52#]<11B'!,0E*R&/H.1!.K1ap-N5=j,lT%f,5rbb+TZ73;tr;3r;#< +4Sq;:557A/5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO&uqofrF>pc\L:r]C*?r]0j8r\sg7r\XU1r\FI-r\4=(r[n+#r[Rdn +r[7[krZqIfrZ_=brZM([rZ:qWq],&Dq],SUq]>_YrZM1`rZ_=drZqIhr[.Ulr[Igrr[[t"r\"1'r\=C- +r\OO2r\ja7r]'m;q`=^Q41]B0/1&`m+0)dI%/H.-r./kUn-2o1h,Q8nd+oWV]+9!>Y*W$iF)uCWS*W$oW ++9!D^+oW\b,Q8tf-2o7j-iPRo.fLst/cIC%0E*^*1B'*/2?#N52uYf93Vtl:48V/>4nV#65O:Xd5_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOpd"L:q`am?q`Oj>q`=^:r]'m9r\ja5r\XU1r\=C+r\+7&r[e%!r[Igpr[7[lr[%OhrZhCd +rZV7`q]GeYp`8oFq]5PTq]Ge[rZV7brZhCfr[%Ojr[7[nr[Rmtr[e%$r\+7)r\FI/r\XU3r\ja7r]'m; +r]9p3rV/=3;tl9 +2Z>T52#]<11&`m+0E*R&/H.1!.K1ap-iPIl-2o1h,Q8nd+oWV]+9!>V*V(3I*W$oT+9!D^+oW\b,Q8tf +-2o7j-iPOn.fLst/H.:$0E*[)1B'*/2#]B32Z>Z73;tr;3r;#<4Sq;:54q/,5_21O5_21r5lO+L6i0:N +8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO&uq +ofr48q`Xp@q`Fdq`OpCq*+R_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOpd"L:pceRq`OpCr''m?JO#8]JO"cOJO"cOJO"cOJO"cOJO"cOJO#no +ofr48q`Xj>!'L-?r]:$=r]'m9r\ja5r\XU1r\FI-r\+7'r[n+#r[[stq^DFkq^)4erZhCdq]Y_WocO/U +rZD"[rZV._rZhCfr[%Fgr[7[or[Rmtr[e%#r\"1(r\=C-r\OO1r\a[5r\sg9r]0j:r]C!>q`Xg?pcmn+ +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,4o7A@48q;<3W;#;2uY`72?#H31]B0/0`Ea)0)dI%/H.0s.K1ap-iPIl +-2o1e,Q8na+n$QK+oW\_,Q8tf-2o7g-iPOn.fLst/H.7#0)dO'0`Eg+1B'-02?#N52uYf93Vtl748qA> +4oISB557?n5`\0]5_21O5_21O5_21O5_21O5_21O5bUI65PmY>4TRZ-rB1'@r]9p:r]'m9r\ja5r\XU1 +r\FI,r\+7'r[n+#r[[jpr[@anr[.UjrZq@crZ_4_mi_BKrZ_4arZqIhr[.Lir[@aqr[[t!r[n+%r\+7) +r\=C-r\XU3r\ja7r]'m;q`=U9r]L'@pceI;k!4J_JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp3rV/:3;tl9 +2Z>Q41]B0/1&`m+0E*U'/cI=#/,h$t.K1ap-iPIi-2Stb,O?WL,Q8tf-2T%g-iPOn.K1gr/,h+!/cIC% +0E*[&1B'*/2?#N22uYf93W;):48V/;4oISB557?n5`\0]5_21O5_21O5_21O5_21O5_21O5at%65PRG< +4TIYE4Sq5>3rV/:3;tl92Z>Q41]B0/1&`m+0E*U'/cI=#/,h$t.K1ap-iPIi-2Stb,O?WL,Q8tf-2T%g +-iPOn.K1gr/,h+!/cIC%0E*[&1B'*/2?#N22uYf93W;):48V/;4nq595NY4^5_21O5bp[E6N0@L7/f^U +8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6 +roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5 +ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOnj)t7 +pceI9q`Oj>q`=^:r]'m9r\ja5r\XU1r\FI-r\4=)r\"1%r[e%!r[Rdor[@anq^2(akp6-Pq^2:ir[@ap +q^VRqr[e%#r\"1'r\4=+q_S4.q_nF4r]'m;q`=^pc\C9pcmn+JO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,4o7A=48q;?3Vtf82uY`72?#H31]B0/1&`m+0E*U'/cI=#/,Lgq.JkOm-i57T-28ha-iPOn +.K1go/,h*s0)dO'0`Eg+1B'*/2#]B32Z>Z73;Y`83r;#<4SV)94omi2ofn!mO$J7]JO"cOJO"cOJO"cO +JO"cOJO"cORm?X2pceU=!'U3Aq`FdlJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3rV/:3;tl92Z>T52#]<11A`g*0`Ea)0)dI%/Ggss.f1[l.-;oS./PIm.f1aq +/H.7#0)I=$0`*X)1]B612?#N52u>T63Vtl:48V/;4nh,@5!Ja+JO#/ZJO"cOJO"cOJO"cOJO"cOJO"cO +JO#\iofr+5!BiUE4o7A=48q;?3Vtf82uY`72?#H31]B0,1&`m+0E*U'/cIZ43;tr83rV5<4Sq;7557A&5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO&Zhofr48pc\L: +q`FdU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, +q`=^:q`+R6r\ja5r\XL.r\FI-r\44&r\"1%pal:m +kplHYq^hUrr\"($r\4=+r\F@,r\XU3r\jX4r]'m;r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpT22#]<.1B'$*0`Ea&0).$\/Gh$r0)I=!0`Eg+1A`m,2#B002Z>Z43;tr8 +3rV5<4SV)455d_A5Cl(V5_21O5_21O5_21O5_21O5_21O5_21f5k7/84odeA4o7A=48V)<3Vtf82uY`7 +2>]601]&s,1&E[(0DdBs/`nV]/c.0t0DdI&1&`s*1]B6.2?#N52u>T63Vtl:48V/84nV#35N"eX5_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOks5#.nim%9ofW48q`=U7r]'m9r\jX2q_\1+r\F@*q_7n#i%Fm[q_7n%q_J.,r\XL0r\jX4 +q`+R8q`=U9q`Oa=ofi4:r',`tL-U;TJO"cOJO"cOJO"cOJO"cOJO"cOP!Je,q*+X=r]Tp:r]C!U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,N42>]6-1]&s)1&*Hb0DI6u1&Ea'1]B6.2?#N22u>T63Vtl: +48qAA48qA;4nq585Q!`s5__OT5_21O5_21O5_21O5_21O5_21O5a"D*5Q!_A557;<4Sq5;3rV/:3;tl6 +2Z>T22#B*+1A`g$0]k%`0`*U%1A`m,2#B002Z#H13;tr83rV5?4T7GA4SV)754Uqo5_21O5_21r5lO+L +6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO&Hbniun5of`17q`F[9q`4O5q`"L4q_e@0q_Rn#i%b!^q_S++q_e7/q`"L6q`4O7r]Bm;pc\:6pHJ[C +5Cl(P5_21O5_21O5_21O5_21O5_21O5_21`5k7,?5!Jg,of`17q`F[9q`4O5q`"L4q_e@0q_Rn#i%b!^ +q_S++q_e7/q`"L6q`4O7r]Bm;pc\:6ofq.qJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,N. +2>]6'1[-[i1\`g(2>]<22u>T33Vtl448V/;4n:f/563u5JO"iQJO"cOJO"cOJO"cOJO"cOJO"cOJO#8] +o034>pceI9ofW+5r]9p:q`+I3q_n4,q_[t%kq`#ipb_k*q_nF4q`+I5q`=L6q`Oa=nilV/g-C3SJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,N%2>B$! +2>&m)2u>T33VYZ448V/54n:f05Q*iu5_21O5_21O5_21O5_21O5_21O5_21O5`%c%5PdV>54q)64Sq5; +3r:r43;>H02X`Nu2"ENs2Z#H13;Y`23r;#94S:l.54q.i5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/j +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO&-Yniue2nick4pcJ@6 +pc8+/pc%"eof)Y*q`4F4q`FI5q`XC3ofr:lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYpN/3qtf34SV)454:`45_21O5_21O5_21O5_21O5_21O5_21O5_21W5l!Y:5P7554o7A748V)3 +3VYSf2t]0*3VYZ148:r54nV#-5LD`I5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(D +rc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BD +qu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLF +ra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOh*CU*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,B-4S:l.54UqZ5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO%gPks+`&of`(4 +r]C*AofLP^ofMh/pc\(0lp(#*JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO!'od5nil_0pcSO;r]Kj8 +d5pq^ofW"4mlp)&a?Y;AJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOb'mm"QPJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,)E5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO%1>k!/)o_EI$Flp'AmJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOmQfo! +krusIk!&,r[QoC/JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp#a53Y;b5_21O5_21O5_21O5_21O5_21O5_21O5_21O +5ik8q5M\Nc4l&_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO]Kk:;ZTd;3fg(*RJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO&<^h*850i'4G2JO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO#noUd)RYJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOb!;aePsBmc +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +K0\Q`RQuEhJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$;%k!+D^nN_XjJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO\j38[T0RrmJO&-YW]u&"q*9KrL-YZ$ +YU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOhE]dZXZkc0]g.-6KL#N$ +h*8,-i'3PnJO$5#h*:g$Z9I22JO&`jJO"cOfKe.TYWgu0_a&clJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYprn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO&B`j$2Zi_EHpCk!.'TJO#2[ofqn0k!$XFk!%fiVEf\tZU!Y;l9>/1_EHpCj$/)[!'l*#JO&0Z +j$2Zi_EI$Fj$1sWJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, +'5eKAK5N"a'4nLnb4RYGq53"ka5_21O5jCW$5M\Nl4k)U_4m"rg5MJGS5_21O5_21O5bp[E +6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)b +rmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Md +rl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOn3H>)losYs^HCsJks"GueNe[NQ9ae$mloks_E@9Mk!&,rY<[Y(]KkpMlosf"rB7nXmlfo! +ks("iJO"cOl9O]#mloks_E@9Mk!&,rgH^lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp)d5_21m5jU`1557>14mtMV47#*#4mYAp5I`t05fH"T5OUf)4n_#74NfhQ4RtZ%53>(m +5_21O5k@8-5OUf)4mtMV47#*#4mYAp5NG(\5_21O5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`- +r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKi +rqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXop +rcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"fP!'fa5ks"l*ml^8)b<#2U +r]L0AofVn1mlp)&iBVrZW'K]6mlpM1pc\(.pcHPXniQ;&pc[t-lp&*IJO%LGlp'_upc\11r]C*A!BWC> +430JR47YN,4mYB!5F"Kb5_22u5jU_t557;04SV"Z3q>B$4SV)+53tMs5_21O5_21O5_21r5lO+L6i0:N +8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +Jj9<#m6C&'of_k.niQD'h)XpbniQM,nicG*niu(uJO$/!lp'r&of_k.niQD'h)XpbniQV/mlg,'nis`O +JO%LGmm$8)nicP+p,i47niGSemlL#$pcS+1mlp2)PsBmcJO',ulp'r&of_k.niQD'h)XpbniQV/mlg,' +niu;&JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,H+47t`/4n:f'5O(Lb5c[0: +5P7584o7D84SV#/3qYMh3:Alu3qYT04RtZ.53Y;M5_22J5jU`.54Ul04SV#33rM,43Sc[`3V#6(48:r/ +4nV#'5Ft,k5_20$5X=[#ofhq0ofW"2niHG(h)Oj`niHG*pcS+1ofhV)n3DOiJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp155RM94SV#23qt`+37KnX3;#<,3qtf04Sq;.54:`*5_22*5jU`(55RMB4SV&648:l33U\rW +2tAs$3VYZ148:r54mtT$5KZ6B5hA9i5OUf24nUr747tZ03<;*!pGi.2r]&Cdni6D)pcA:6r]L0ApcSF: +losc#Ud0JrKg>T$n3?A*q`XU7pcJ73pc7e&e2QqXof;e.pcJ75pc\(0lp(2/JO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,B&2qg1_2t]0*3VYZ.48V/54n:f*5O^ph5dN/3qtf64RtZ.53tMV5_22P5k7/154q)64S:f23r:r53;ki02qKt\2t]0*3VYZ1 +48V/24nV#*5GUPq5_VK%5P@>454q)34SV#53r:r13;#5^2YB$%3;>N/3qtf64RtZ.53tN-5_21O5_21O +5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cON^35$r'0a9pc\C7pcJ@6pc8+/pc%k(d5C\Wof)b-pc8+1q`FR8of_k0niu_2JO$S- +niuS,pc\C7pcJ@6pc842of)P%e2?nWpc%t-q`4F4pcJ75pc\(0nitAaJO%pSniu\/pc\:4q`FR6pc842 +q)A72pbpMWoeuS(pc/.2pcA13q`OO7nilM,Va,euLd:f$q*4=3pc\C7pcJ@6pc842of)P%e2?nWpc%t- +q`4F4pcJ75pc\(0niuq8JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,N+ +2>]601]B5k1]B611\EU"2>]<,2u>T33VYZ447t`84mtT'5P[Qq5e95O5Oq#54nq/748V)63W;#52u#<+ +2>B#a1[d0q2>]N22>T3*1u0tY +2#&s'2Z#H.3;tr53r;#34Sq;453tM95_21\5kI8A5rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOPX+e(rBBp=pc\C7q`F[9pc842q`"C1 +pbhh'mka2`nh^/"pbhh)r\sU3q`4F4q`FI5pc\:6niuq8JO$e3ofqn/pc\C7q`FdA54Cc24nq/:48V)93Vtf22u>N12>&fs +1ZgI`1]'$(2>B*/2u#B03Vtl448:r54n:f-564#7JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,4nq/7 +48q;<3Vtf52u>N.2>]6*1\ENT1&*O!1]'$+2>]T33Vtl448V/54nV#05Q!ct5eTGR5P7584nq/: +48V)<3W;&93;YZ32Z#B,2#&m%1=S&R1AE[&2#B0-2Z#H13;Y`53qtf64S:l154Uqh5_22\5kRA4557;9 +4Sq5;3r:r73;YZ32Z#B,1]]BgrA4+%f.m%UoeZJ%q_e@2q`":0r]0a7q`FR8of`(6mm"$AJO#>_nim+< +p-/77pcSF8q`=U7q`+I3q_n=/pb_b%pbL>RpbMV#q_\1-q_n=1q`+I5q`=L6q`OO7ofht3!'c$"Jj=lP +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3r:r:3;to72u>N42>]6-1]&s&1%d6k +0DI0j0D.$r1&Ea'1]'$+2?#N22u>T33Vtl748:r54nV#-5MSMT5j:Q)5Oq#84o7A@48qAA48V)93Vtf8 +2u#<12?#H-1]&p.0erV]nhBVfq_%Fmoe?.qq_J%)q_\1-r\jX4q`+I5q`=U9q`OX:nilM,[QoC/QU(++ +qEF^=pc\C7r]C!U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,N12?#H01]&s)1&EZt +0AS8R0DdHu1&Ea'1]'$.2>]<22u>T33Vtl448V/84nV#156*p!5f>q\5P7524oRS=48q;<3Vtf52uY`4 +2>]6-1]&s)1&EZt0AS8R0DdHu1&Ea*1]'$+2>]<22u>T33Vtl748V/84n:f-5MSMT5j:Q,5P7554o7A: +48q;<3Vtf52uY`42>]601\`a'0`Ws*0_I*T0).*p0_dC%1A`m)2#B002Z#H13;tr53r;#94SV)154UqH +5_21e5kRA94omi2nict7pcJI9q`4O5q`"L4q_e7-q_S+)q_@t%oe5,Roe61rpbDY$r\OF.q_e7/r\s^6 +q`4O7q`F[;pc\13q*4^?JO##VJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,K02#B*. +1A`g'0`*O#0).$S/GLgl0)I=!0`*U(1A`m)2#]B02Z>Z43;tr53rV594SV)455%5>5Cl)B5k7/7557;9 +4Sq5;3rV/:3;YZ62Z#B/2#]<.1A`g'0`*O#0).$V/G1Ui0)I=!0`Eg(1A`m,2#B002Z#H13;tr83r;#6 +4SV)454Uqq5_22e5kRA7557;94Sq5;3rV/:3;YZ62Z>T22#B*+1A`g'0EEg[r@e%#patDToe#qkq_.h# +r\=:*q_S4.q_e@2q`"L6q`4O7q`FR8pc\C9mm"?JJO#Yhniun5!'U-@pcSF8q`=^:q`+I3r\jX2q_\:. +q_J%'q_7n#q_%Xqi%4OQpb)Fsq_8"(q_J%)r\XL0r\jX4q`+R8q`=U9pcS=7ofi:lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3r:r73;tl92Z#B22#B*.1A`g*0`*O#0)dHt/GgsI.f1an/Gh$r +0)dO$0`*U(1B'*,2#]B32Z#H43;Y`53rV564Sq;755@GA5Cl)H5k7/155RM<4Sq5>3r:r:3;YZ62Z>T5 +2?#H01]B0,1&`m(0E*U$/bgmo/(?'G/,Lmp/c.1"0DdI&1&Ea*1]B6.2?#N22uYf63Vtl:48:r54nV#3 +5Mn_W5k7225Oq#84o7A=48V)93W;#;2u>N42?#H01]&s,1&E[%0E*U%/H@Bt/H.0L.f1ak/H.6r0)dO$ +0`Eg(1B'*/2#]B02Z#H43;tr53rV594Sq;454q.N5_21n5k7/14odbD4nq/:48q;<3W;#82uY`42?#H0 +1]B0,1&`m(0E*U$/bgmo/(?'G/,Lmp/c.1"0DdI&1&Ea*1]B6.2?#N22uYf63Vtl:48:r54nUu>5U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,4S_,=48V)93W;#82u>K32#B*.1A`g*0`Ea&0)I6t/Ggsm +.e5%`..Sh^.f1an/H.6u0)I=$0`Eg(1B'*,2#]B32Z#H43;Y`83qtf64SV)455[YD5Cl)H5k7/7557;9 +4Sq5;3rV/:3;tl92Z#B22#B*.1B'$*0`Ea&0)dHt/Ggsp.dnh]..Sh^.f1an/H.6u0)dO$0`Eg(1B'*/ +2#B002Z#H43;Y`83r;#94SV)1557A"5_22k5k7/7557;94T7G;3rV/:3;tl92Z>T22#]<.1B'$-0`*O# +0)dI#/-%6r/,Lge.JP=[.JPCi/,h*s/cIC"0E*[&1&`s*1]B612>]<22u>T63Vtl748V/84n:f35Ij%1 +5bLC55PRG=4TR]/pcSF8q`=^:q`+R6r\jX2r\XL.r\FI-q_8"&q_%k"pal:mq^V%`paG\^paZ.kq^h^u +q_%k$q_8"(q_J.,r\XL0r\jX4r]'d8r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpZ4 +3;tr83rV594SV)454q/%5_22k5kRA755RM<4Sq5>3r:r:3;YZ62Z>T52#B*.1B'$-0`*O&0)dI"/H.0t +.fCjr.JP=^-ho%Z-hSnb.K1go/,h*s/cIC%0DdI&1&`s*1]B612?#N22uYf63W;):48:r54nq535JKI7 +5bLC85P75;4TIV?4Sq5>3r:r:3;YZ62Z>T52#B*.1A`g*0`Ea)0)I7"/Ggsp.fLml..8PY-LrPZ./PIm +.f1aq/Gh$u0)I=$0`Eg(1B'*/2#]B02Z>Z43;tr83rV594SV)855d\<5Cl(^5_21O5_21r5lO+L6i0:N +8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +WBg,@nim%9pcJO'JO&lnofr+5q`Xg=q`F[9r]0s;q`"L4r\a[3 +q_S4,r\=C+r\+.$r[n+#r[[jqr[Ian!%@^lpa5b^kp6$Mpa5kcr[@Xmr[Rdqr[e%#r\"($r\4=+r\FI/ +q_\:0r\ja7q`+R8q`=^U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,'JO&lnpcnF8pc\L:r]C!W-2T%g-i5=k.JkUo/,h+!/cIC%0DdI&1&`s-1]B6.2>]?33;Y`83r;#9 +4SV)754UqT5_21q5kmS755RMA497Q,q`FdU*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,N42?#H31]B0/1&`m+0DdC$ +/cI=#/,h$t.K1am-i57i-2St_,PWJO+n[&S,Prbc-2T%g-i5=k.K1gr/,h*s/c.4#0`*X)1]B612?#N2 +2uYf93Vtl:48V/84o%8A54q-k5iP'"5PRG;4o7A=48q;<3W;#;2uY`42?#H31]B0/1&`m+0E*U'/cI=# +/,Lgq.K1am-iPIi-2Stb,P<8O+n?iS,Prb`-2T%g-i5=k.K1gr/,h+!/cIC%0E*[)1&`s*1]B612?#N5 +2u>T63Vtl:48V/;4nV#35Nk@`5l3h;5PRG;4o7A=48q;?3Vtf82uY`72?#H01]B0/1&`m+0E*U'/cI=# +/,h$q.K1am-iPFn,piL9q]u%`ocirMnfmrUq]u%br[.Lir[@Xmq^_Xsr[n+%r\+7)r\=C-r\OF.q_nF4 +r]'d8r]9pq`Xj@qEFR:JO#GbJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,3WM2<3W;#;2uY`7 +2?#H01]B0/1&`m+0E*U$/H.1!.fLmr./kUk-N5=g,lT%c,5<>S+S?iI+T!>W,5rha,lT+e-N5Cl./k[p +.fLst/H.7#0)dO'0`Eg+1B'*,2#B312uYf63W;)=48:r;4o%;<54q-k5j1K+5PRG;4o7A=48q;<3W;#; +2uY`72?#H31]B0/1&`m+0E*U'/cI5PRG>4o7A= +48V)<3W;#82uY`72?#H31]B0/1&`m+0E*U'/cI=#/,Lgq./PCk-Mo+g,QT,7r?M1`q]YVTnfREFq]Yh\ +q]l(cq^)4gr[7[nr[I^or[[t!r[n"#r\44)r\OO1r\a[5r\s^6r]0j:r]C!>q`XU9nit2\JO$2"ofr48 +pc\L:rAt$A48q;<3W;#;2uY`72?#H31]B0/1&`m+0E*U'/cIU*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3WM/@3B?srr\sg7r\a[3r\OO/r\=C+r\+7' +r[n+#r[[str[Igpr[7[lq^)4eq]l(aq]YVTh&lM:p`]V\q]l(cq^)+er[@apr[Rmtr[e%#r\"1'r\4=+ +r\FI/r\XU3r\ja7q`+R8r]9g9q`Oa=!Br^A557?n5j1K+5PRG;4oRS@48V)<3W;#;2u>N42?#H31]B0/ +1&`m+0E*U'/cI=#/,h$t.K1ap-iPIi-2o1e,Q8na+o!26+8[2X+oZ73;Y`83r;#94SV)754q/.5_22t5kmS=557;<4Sq5;3rV/=3;tl92Z#B2 +1]&s,0`*O&/cI=#/,h$q.K1ap-iPIl-2Ste,68u4r?D+^p`SB7p`TGWq]c"aq]u.er[.Ulr[@Xmr[[js +r\"1'r\4=+r\FI/r\XL0q`"L6r]0j:q`F[;q`XU9ofpM_JO$2"ofr48pc\U=q`=d=r&Xg;r]'m9q_nF2 +r\XU1r\FI-r\4=)r\"1%r[e%!r[Rmrr[@anr[.LgrZq@crZ_4_p`S94q]PbZq]bn^rZqIhr[.Ulq^DFm +r[Rmtr[e%#r\"1'q_A(*r\OO1r\a[5r\sg9q`4X:q`F[;r&t!Apce@8JO#YhJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV,>2utuuq`"L4r\a[3r\OO/q_8"&r[n+#r[[str[Igpq^;@iq]u.cq]c"_q]PbX +ocE69ocF)Sq]PYWq]l(cr[%Ojr[7[nq^MLpq^h_!r\+7)r\=C-r\OO1r\a[5q`"L6pcAC9q`O[;!'U*@ +pcjq`=^:r]'d6r\ja5r\XU1r\FI,r\+7'r[n+#r[[str[Igpr[7[lr[%Ohq]l(a +q]YhZq]GJPjrO4!BN:@3W;#82uY`72?#H31]B0/ +0`Ea)0)dI%/H.1!.fLmr./kUn-N5=j,l8hc,5WP\+T!8R*p+L<*r@&V+T!>],5WVa,lT+h-N5Cl./k[p +.fLst/H.7#0)dO'0`Eg+1B'*/2#]B32Z>Z73;tr83r;#9497T.rB9p>ofn!mRQuEhJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpVVrZM(]rZ_=drZqIhr[.Ulr[@apr[Rmtr[e%#r\"1'q_A(+r\XU3 +r\ja7r]'d8r]9p!'U*@ofn!mmQgP3ofi79q`Oj>q`=^:r]'m9r\ja5r\XU1r\FI-r\4=)r\"1% +r[e%!r[Rmqr[7[lr[%FerZhCdrZV.]rZD"Yp`9,Lmi1^8q]5PTq]Ge[rZV._rZhCfr[%Ojr[7[nr[Igr +r[[t!r\"1'r\4=+r\FI/r\XU3r\ja7r]'d8r]9pr]9p:r]'m9 +r\ja5r\XU1r\FI-r\4=)q^qdtr[Rmrr[@anr[.UjrZq@cq]YhZ!?WB`+8[,V*VCE@)t+dD*W$oT+9!D^ ++oW\_,Q8tf-2o7j-iPOn.JkXp/H.:$0E*[)1&`s-1]B612?#N52uYf93Vtl748qA;4nq565Kc:54q-k5b1/k5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(D +rc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BD +qu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLF +ra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO$M+pcnO;pc\L:r]C!4o7A=48q;<3W;#;2uY`72?#H31]B0/1&`m+0)dI%/H.1!.fLmr./kUn-N5=j,lT%f,5rbb+T!8X +*r?uT*:FjA)XeXB*;^cU*r@&Y+T!>],5rhd,lT+h-N5Cl./k^q/,h+!/cIC%0E*[)1&`s-2#]B32Z#H4 +3;tr83rV5<4SV)7557A45_23"5kmS=55RM?4Sq5>3rV/:3;tl92Z>T51]&s,0`Ea)0)dI%/H.0s.K1^o +-N5=j,lT%c,5rbb+T!5]*Zk8$q]5PRnf.?Bnf.QJrYt_Sq]5YWq]Ge[rZV7brZhCfq^)4hq^DFnr[[t! +r[n+%r\+7*r\FI/r\XU3r\ja7q`+R8q`=^3;tl9 +2Z>T52#]<11B'$-0`E^(/cI=#/,h$t.K1ap-iPIl-2o1h,Q8nd+oWV]+8[,V*W$iF)u(??)uCWP*W@,W ++9!D[+oW\b,Q8tf-2o7j-iPOn.fLst/H.7#0)dO'0`Eg+1B'-02?#N22uYf93Vtl:48_2@4SV)7557?n +5b1/k5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=l +riZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@D +ro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO$_1niun5q`Xg=q`Fd!BiUE4nq595Cl)l5kRA:557;<4T7G>3rV/=3;tl92Z>T5 +2#]<11B'$-0E*U'/cI=#/,h$t./kUn-N5=j,lT%f,5rbb+T!8[*r?uT*;^]J)Whq4)Yb9K*<$uU*r[8\ ++TZ73;Y`83r;#94Sq;:557A45_MDq +5PRG>4o7A=48V)93;tl92Z>T52#]<11B'!,0E*U'/cI=#/,h$t./kUn-N5=j,lT%f,5rbb+T+pC)uCWS*W@,W+9!D^+oW\b,Q8tf-2o7j-iPOn.K1js/H.7#0)dO'0`Eg+1]B612?#N5 +2uYf63W;):48qA;4nq595Kc3&pmrr\ja5r\XU1r\FI-r\+7'r[n+# +r[[str[@anr[.UjrZqIfrZ_=brZM([rZ:qWq],JPobus1p_roHq],SUq]>_YrZM1`rZ_=drZqIhr[.Ul +r[@apr[Rmur[n+%r\+7)r\=C.r\XU3r\ja7r]'d8r]9p_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO$_1ofr+5r]U$=r]C*?r]0s;r\sg7!&Xd72?#H31]B0/1&`m+0)dI%/H.1!.fLjq-iPIl-2o1h,PrY` ++T]?33;tr;3r;#:49.M@4nq565Cl)r5kRA:55RM?4T7G>3rV/=3;tl92Z>T52#]<11B'$-0E*U' +/cI=#.fLmr./kUn-N5=j,lT%f+o\*W$iR)u^cK);Q/))>b?I)u^iV*W$oW+9!D^+oW\b,Q8tf +-2o7j-iPRo.fLst/cIC%0E*[)1&`s-2#]B32Z>Z43;tr;3rV5<4SV)754q/75_MDt5P75;4o7A@48V)< +3W;#;2uY`72?#H31]B-.0`Ea&/cI:".fLmr./kRm-2o1h,Q8nd+oWV]+8[)U*!$utr>Y_SoblR&p_irI +p`'2PrZ1tZrZD"[rZV7brZhCfr[%Okr[@apr[[t!r[n+%r\+7)r\FI/r\XU3r\ja7r]'d8r]:$?q`Oa= +pce75d6N7JZ9\(IpceRq`=^:r\sm:!B2t:2Z>T52#]<11B'$-0E*U'/cI=#.fLmr./kUn-N5=j +,lT%f+o\*W$iR)u^cK);Q/))>b?I)u^iV*W$oW+9!D^+oW\b,Q8tf-2o7j-iPRo.fLst/cIC% +0E*[)1&`s-2#]B32Z>Z43;tr;3rV2A4?WR)pc\C9ofn!mUHjAqJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp+j/(\ejE)>G-L)uCWS +*W@,Z+9!D[+oW_c,lT+h-N5Cl./k^q/,h+!0)dO'0`Eg+1B'*/2?#N52u>T63W;)=48V/84nq565LD`I +5dEZJ5PRGA4o7A=48q;<3W:u<2ZYirr\ja5r\XU1r\=C+r\+7&r[e%!r[Rmrr[7[lr[%OhrZhCdrZV7` +rZD+\q]5YUrYt_Qp_i`Ajqm\-q\f8Lq]#MSrZ1tZrZD"[rZV7crZqIhr[.Ulr[@aqr[[t!r[n+%r\4=+ +r\FI/r\XU3r\ja7r]'m;r]9s=!'C0Bpc\C9ofn!mUHjAqJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp4o7A@48V)< +3W;#82uYZ71]]Eir\OO/r\=C*r\"1%r[[str[Igpr[.UjrZqIfrZ_=brZM1^rZ;%ZrZ(eSrYkYOp_`Z? +ith;(q\];Mq\o>NrZ(nXrZ;%\rZM1`rZ_=drZqIhr[7[nr[Igsq^h_"q_8")r\OO1q_nF4r]'m;r]9p< +!B`IE4SV)7557?n5lEt@5PRG>4o7A@48q;<3W;#;2uY`72?#H31]B0/0`Ea)0)dF$/,h$t./kUn-N5=j +,lT%f+oWV`+8[,Y*W@&X)uCQN)>b9A(ZlM+(],'H)>b?O)uCWS*W@,Z+9!D^+oW\b,Q9"g-N5Cl./k[p +/,h+!/cIF&0`Eg+1B'*/2#]E12uYf93W;)=48V/;4nq565PIEu5kRA:55RM?4T7GA3rV/:3;tl92Z>T5 +1]&s,0`Ea)0)dF$/,h$t./kUn-Mo(f,Q8kc+Tb9D(ZQ;((],'H)>b?O)u^iS +*W@,Z+9!D[,5rke-2o7j-iPOn.fLst/H.:$0E*[)1&a!.2#]B32Z>Z43;Yc948V/;4nq565LD`I5d`lM +5PRG>4o7A@48q;<3W;#;2ZP`:2E(Olr\XU1r\FI,r\+7'r[e%!r[Rmqr[7[lr[%OhrZhCcrZM1^q]>_W +rZ(nVq\o>Lq\\l?jqdV+q\]2Jq\oGQq],SUrZ;%\rZM1`rZ_=dr[%Ojr[7[nr[Igsr[e%#r\+7)r\=C- +r\OO1r\jX4r]'m;r]1'A3rhA>4Sq;:54q-k5bgSq5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`- +r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKi +rqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXop +rcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO$h4ofr48q`Xp@q`Fd\*W@&U)u^cT)>G'G(\JR%(&/R; +(]G9N)>b?L)u^iV*W$rX+Tq`X^q`=U6r\sg7r\a[3 +r\FI-r\4=)r[n+#r[[ssr[@anr[.UirZhCdrZV7`rZD+\q],SSrYkYOr"oDNq\Sf=it_5&p_WoHq\f8L +rYthVrZ1tZrZD+^rZV7brZhCfr[%Okr[@apr[[t!r[n+&r\4=+r\OO1r\a[5r\sg9r]0j:r]C!>q`X^< +pcm.kJO$V.ofr48r]U-@q`Fd\*W@&X)uCQQ)>b9J(\/@%(%i@;(],'K)>b?O)u^iV*W@,Z+9!D^+oW\b,Q8tf-2o:k./k[p +/,h+!/cIF&0`Eg+1]B612?#N52uYf63<;0%!':*@q`Oa=pceI;JO#tqJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,JO'0!pcnO;q`Xg=r]C*?q`4X8r\sg7r\a[3r\FI-r\4=(r[n+#r[Rmr +r[@amr[%OhrZhCdrZM1^rZ;%ZrZ(nVq\oGOq\]2Hp_M-iq\K&Fq\];Mq\oGQrZ(nXrZ;%\rZM1`rZhCf +r[%Ojr[7[nr[Rmtr[n+%r\+7*r\FI/r\XU3r\ja7r]'m;r]9ppHXL!pcnO;r]U-@q`Fd< +r]0j8r\sg6r\XU1r\FI-r\4=(r[n+#r[Rmrr[@amr[%OhrZ_=brZM1^rZ;%ZrZ(nVrYkYOq\T>M(]>0F +(=T63W;)= +48V/84o7G<5LD`I5d`lP5PRG>4o7A@48q;<3W;#;2uY]82$#Qlr\XU0r\=C+r\"1%r[e$ur[Igpr[.Uj +rZqIfrZ_=arZD+\rZ1tXrYt_QrYbSMq\T#Cc5$3lq\T,HrYbSOrYthVrZ1tZrZD+^rZV7crZqIhr[.Ul +r[@aqr[[t"r\"1'r\=C-r\OO1r\a[5r\sg9r](!?3WM5<48qA;4o7G<5Cl(p5_21O5_21r5lO+L6i0:N +8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +]0Q-UpceRr]:$=r]'m9r\ja5r\XU1!&=R11B'$-0E*U'/cI:".fLjq-iPIl,lT%f,5rbb+8[,Y +*;^]P)>b9M(],!@("!`m(&JdD(],'K)?(QR)uCWS*r[8\+Te.hZmq\K&Fq\];MrYkbTrZ(nXrZ;%\ +rZM1`rZ_=er[%Ojr[7[or[Rmur[n+%r\4=+r\FI0r\a[5r\sg9r]0s=q`F[;q`Xg?ofr:q`=^:r]'m9r\jX1r\OO.r\4=)r[n+#r[[ssr[@anr[%OhrZhCcrZM1^rZ;%ZrZ(nVrYkbRq\];K +r"f5Hp_D0jq\AlAq\T5Kq\fAOrYthVrZ1tZrZD+^rZ_=drZqIhr[.Umr[Igsr[e%$r\+7)r\FI/r\XU3 +r\ja7r]'m;r]9pr]:$=r]'m9r\ja5!&O^52#]<11&`m+0E*R& +/H.1!.K1ap-iPFk,lT%f+oWV`+9!>\*W@&X)u^cQ)?(KM(],!@("Z73;to=3][7%q`F[;q`Xg?ofn!mVEf\t +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpT51]B-00`a!`r\+7'r[n+"r[Rmrr[7[lrZqIf +rZV7`rZD+\rZ1tXrYt_Qq\];Kq\K&Dob@B=rY4'"ob@94o7A@48q;?3W;#8 +2uY`72#]<11B'!,0E*U'/H.1!.fLjq-iPFk,lT%f+oWV`+9!>\*W@&X)u^cT)>b9M(],!F(%i9j'DN:: +(&f!G(]G9N)>b?O)u^lW*r[8\+T3rV/=3;tl62Z>Q41]B0/0`Ea)0)dF$/,h$t./kRm-2o1h,5rbb ++Tb9M(]G3J(&\m?'\X6"'`Jd@'`/XB(AepI)#bEP)ZC]T*<$uX*r[8\+T4o7A@48q;? +3W;#82uY`71]T<41Gf"cr\4=)r\"1$r[[str[@anr[%OhrZhCcrZM1^rZ;%ZrZ(nVrYkbRq\];Kq\K&D +ob>mhp__3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO$h4q`jj>q`Xg=r]C*?r]0s;q`"L3r\XU1 +r\4C,!AH5,0E*R&/H.1!.K1ap-iPFk,lT%f+oWV`+8[)X*;^ZR)?(KM(]G3I(%i:3'Bp/)'E/^F'DiL= +(&f!G(]G9N)?(QR)uCWS*r[8\+TZ43;bf;3rV5< +4T7M=557?n5QF(H5PRG>4o7A@48q;?3W;#;2uY`72?#H31]B-.0`Ea)/cI=#/,h!s./kUn-2o.g,5rbb ++T4nq595PdX&5l3e@557;?4Sq5;3W;#;2uY`7 +2?#H31B'$-0`E^(/cI:".fLmr-iPIl-2o.g,5rbb+9!>\*W@&X)u^cT)?(KM(],!G'`]!D'_2q%'(lq2 +'`/XB(B,-I)#G6N)u^iV*W@,Z+T4o7A@48q;?3W;#;2uY`72?#E41BB9fr\=C+r\+7&r[e%!r[Igpr[7[k +rZhCdrZV7`rZD+[rZ(nVrYkYOrYYMKrYGAGp_<94jq@G&ob@09rYGAIrYYVPrYkbTrZ(nXrZ;%\rZM1a +rZhCfr[.Ulr[@aqr[e%#r\"1(r\=C-r\XU3r\ja7r\sp=3<2)=3r;#<4Sq;:557?n5c-et5_21O5bp[E +6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)b +rmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Md +rl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO%%:ofr48q`Xp@q`FdZ73;to=3][7%q`Fd>q`Xg?ofn9uofr48q`Xp@r]C*?q`4X8r\sg7r\XU1 +r\FI-r\+7'r[e%!r[Rmqr[.UjrZqIerZV7`rZ;%ZrZ(nVrYkbRq\];KrYGAGq\8T7e.VNip_qEU$*pcnO;pc\U=r]C*?r]0j8r\ja5r\XU1r\FI-r\+7&r[e$ur[Igpr[.UjrZhCdrZV7`rZ;%Z +rZ(nVrYkbRrYYMKrYGAGr"K,Fob5gfob7*7q\B)Gq\T5KrYb\RrYthVrZ1t[rZM1`rZhCfr[%Okr[@ap +r[[t!r[n+&r\=C-r\OO1r\a[6q`+I6r]C!>r]U$?pcm7nJO$h4ofr48q`Xp@r]C*?q`4X8r\sg7r\XU1 +!&=R11B'$-0E*U'/H.1!.fLjq-N5=j,lT"e+oWV`*r[2Z*<$oV)ZCWO)#b?N(AejD'_2pe')3.8'`/XB +(B,-L)#bEP)ZC]T*<$uX*r[8\+oW\b,Q9"g-N5Cl.K1js/H.7#0E*[)1B'*/2#]B32Z>W93&gmtr]0s= +r]C!>q`Xg?pcjlJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpQ41]B0/0Er]C*Aq`X^r]:$=r]'m9r\ja5r\OO/r\=C*r\"1$ +r[[ssr[@anr[%OhrZhCcrZM1^rZ1tXrYthTrYb\PrYPGIrY>2B!>?.F'CQRr&aU/*'DiLC(&JdG(]G9N +)?(QR)u^iS*r[;]+oW_c,lT.i-iPOn.fLst/H.:$0`Eg+1]'$.2Z>Z73;tr;3r;#<4T7M=557@l5_224 +5kRA=55RM?4T7GA3rV/=3;tl92Z>T52#]610`a!`r\4=(r[n+"r[Rmrr[7[krZqIfrZV7`rZD+[rZ(nV +rYkbRrYYMKrYGAGq\8o@lk8Fmmh5C/q\9#Eq\K/IrYYVPrYkbTrZ(nXrZ;%\rZV7brZqIhr[.Umr[Igr +r[e%$r\+7*r\FI/r\XU4r\jj;2ukr;3Vtl:48qA>4nq5<5Cl(s5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO_*IZXr]^*? +q`Oj>r]:$=r]'m9r\ja5r\XU0r\=C+!%n:)0)dI%/,h$t./kRm-2o1h,5rbb+TM*U_ur]^*?r]L'>r]:$=r]'m9r\ja5r\OO/r\=C*r\"1% +r[[ssr[@amr[%OhrZ_=brZM1]rZ1tXrYthTrYb\PrYPPLq\AuBq\/N5e.MHgp_3N=q\B)Gq\T5KrYb\R +rYthWrZ;%\rZV7brZhCgr[.Ulr[Igrr[e%$r\+7)r\FI/r\XU4r\sg9q`4X:r]C!>r]U$?q`jpBNBm8' +q`adr]U$?q`iRqJO$h4ofrF>pc\U=q`Fd.0E*U' +/cI:".K1ap-N5=j,lT"e+oWV`*r[2Z*<$oV)ZCWR)#b?N(AejD'`/R7'%@Ng')3.;'`/XE(AepI)#bEP +)ZC]T*W@,Z+9!G_,5rhd-2o7j-iPRo.fM!u0)dO'0`Ej,1]B612Z>W93&gmtq`4X:r]C!>r]U$?q`fWs +VEf\tJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp4oRS@48q;?3W;#;2uY`72?#E21B'$-0*!U*/h[,Sr[Rmrr[@am +rZqIfrZV7`rZD+[rZ(nVrYkbRrYYVNq\K/Gq\8o@ob,=Xob.-8q\9#ErYGAIrYYVPq]#MSrZ;%\rZM1a +rZhCfr[7[nr[Igsr[e%$r\+7*r\FI/r\a[5r\sg9!BE.?3W;):48qA>4nq595E%l&5PmYA4o7A@48V)< +3W;#;2uY]62#]<11&`m+0E*R&/H.-u./kUn-2o1h,Q8kc+T4o7G956*s.5kmS@55RM?4T7G>3rV,92uY]62#]<11&`m+0E*O%/,h$t./kUn-2o.g,5rbb ++9!>\*W@&X)u^cQ)#b?N(AejD'`JdD')E6[&bm"9'DiL@(&f!J(]G9N)?(QR)u^iV*W@,Z+T3rV/=3;tl9 +2?#H31]B*/0EEj]r\+7&r[e$ur[@anr[%OhrZhCcrZM1^rZ1tXrYthTrYb\PrYPPLq\AuBq\/`;`=_bU +q\/i@rY>DJrYPPNq\fAPrZ(nXrZ;%\rZM1arZqIhr[7[nr[Igsr[n+%r\4=+r\FI0r\a[5!B2q;2uYf9 +3W;):48qA>4o7G95Cl)$5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO_*Ic[q`ad\*;^]S)?(KP(],!I(&J^E'Cle/&_@Te&bm"9'DiLC(&f!G +(]G9N)ZC]T*<$uX*r[8\+oW\b,lT+h-iPOn.fLst/H.=%0`Eg+1]B612>]<53&gmtq`=^r]:$=r]'m9r\ja5r\XU0r\=C+r\"1$r[[ssr[7[lrZqIfrZ_=arZ;%ZrZ(nVrYkbR +rYYVNrYGAGq\9#Cne1^0e.DBeob.-8q\9#ErYGJLq\];NrYthVrZ1t[rZM1`rZhCfr[.Ulr[@aqr[e%# +r\+7*r\FI/r\a[5r\sg9r]0s=q`Fd>q`X^r]:$=r]'m9r\ja4r\OO/r\4=) +r\"1$r[Rmrr[7[lrZqIerZV7`rZ;%ZrZ(nVrYkbRrYYVNrYGJJp_<]@q%EW=ob#deob$j0q\/i@q\K/I +rYYVPrYkbTrZ(nXrZD+^rZV7cr[%Ojr[7[or[Rmur\"1'r\=C-r\XU3r\ja7r]'m;r]9pr]:$=r]'m9r\ja5r\XU0r\4C,!AH5,0)dF$/,h!s-iPIl,lT%f,5r_a*r[2Z +*<$oV)ZCWR)#b?N(AejD'`Jd:')3'g&GQk1')N@>'`JjH(B,-I)#bHQ)u^iV*W@/[+TU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,T52#]<11&`m+/c[F'/1gcNr[Igpr[.UirZhCdrZM1^rZ;%YrYthTq\];K +rYGAGrY55Cp_*-0d1Gs_p_*Q>q\8oBrYGJLrYYVPrYkbTrZ(nYrZD+^rZ_=dr[%Ojr[@aqr[[t!r\+7) +r\=C.r\XU3r\ja7!B<%=3;tr;3rV5<4Sq;=557@$5l3e@55RMB4Sq5>3rV/=3;tl92Z>T52#]900`Ea) +0)dF$/,h!s-iPIl,lT"e+oWV`*r[2Z*<$oV)ZCTN(]G3L(&J^B'DiF2&_%B_&bm"<'DiLC(&JdG(]G9N +)?(QR)u^lW*r[8\+oW\b,Q9"g-iPOn.fM!u/cIF&0`Eg+1]B612?#N23;tr;3rV5?4SV):557>B5`J&+ +5PRGA4o7A@48V)<3W;#;2uY`72#]<11B'!,0E*R&/,h$t.K1^o-2o1h,5rbb+9!>\*W@&X)ZCWR)#b?K +(B,'J'_i@=&ciRVoF]I^ne(X0rY,/CrY>DJq\T5KrYb\SrZ(nXrZD+^rZV7crZqIhr[7[or[Rmur\"1' +r\4=,r\OO1r\a[6r]'d8q`Fd>pc\Lq`Xp@q`Fd +JO$;%JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92?#H31]B0/1&`j*/H@=&/1gcMr[@an +r[%OhrZ_=brZD+\rZ1tWrYkbRrYYVNrYGAGq\8o@q\&Q6b7O4Vp_*H;rY5>Hq\K/IrYYVPrYkbUrZ1tZ +rZM1`rZ_=er[%Okr[Igrr[e%$r\+7)r\FI/r\XU4r\jj;2ukr;3W;):48qA>4o7G<5E%l)5PRGA4o7A@ +48V)<3W;#;2uY]62#]<11B'!,0E*R&/,h$t./kRm-2o.g,5rbb+9!;[*<$oV)ZCWR)#b?N(B,'G'`/R= +')3'^&FU5+')iRA'`JjH(B,-L)#bEP)ZC]T*<$uX*r[;],5rhd,lT.i-iPRo/,h+!0)dR(1&`s-2#]B3 +2Z>Z73;tr;3rV5<4Sq;=557>B5`J&+5PRGA4o7A@48q;?3W;#;2uY`72?#H31]B-.0`E^(/cI:".K1ap +-N5:i,Q8kc+T;Eq\/`;p^t[\mh,=-rY,/CrY>DJrYPPNrYb\RrYthVrZ1tZrZM1arZhCfr[.Ulr[Igsr[e%$r\4=+ +r\FI0r\X^72?5Z72uYf93W;)=48V/;4o7G<5Cl)$5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO`'F)^pce[?q`Oj>q`=^9 +q`"L3r\XU1r\=C+r\+7%!%S(#/,h$t./kRm-2o.g+oWV`*r[2Z*<$oV)>b9M(]G3L(&epE'DN45&],+P +&bm"<'DiLC(&f!J(]G9N)?(QR)u^iV*W@/[+TW93&gmt +q`4X:r]C!>r]U-Bpcjg)pcnX>q`Xg=r]C*?r]0s;r\sg7r\a[3r\OO.r\+7'r[e$ur[Igpr[.UirZ_=b +rZM1]rZ1tXrYkbRrYYVNq\K/GrY55Cp_*63_@ZJSp_*H;q\9#ErYGJLrYYVPrYkbTrZ1tZrZD+_rZ_=e +r[%Ojr[@aqr[e%#r\+7)r\FI/r\XU4r\sg9r]0s=r]C!>q`Xg?pceaDO?iS*q`am?r]L'>r]:$=r]'m9 +r\ja5r\OO/r\=C*r[n+#r[Rmrr[7[krZqIerZM1^rZ;%YrYthTrYb\PrYPPLq\B)Eq\/`;r"8l>_@ZAP +p_*Q>q\8oBrYGJLrYYMNrZ(nXrZ;%]rZV7crZqIir[7[nr[[t!r\"1'r\=C-r\OO2r\ja7r]'m;r]:$? +q`Oa=q`ad>g-C3S^-MHXq`am?q`Oj>r]:$=r]'m9r\ja5r\XU1r\=C*!%n:)0)dF$.fLmr./kRm,lT"e ++oWV`*r[2Z*<$lU)?(KP(],!I(&epE'DN45&],+S&bm"9'DiLC(&f!J(]G9N)?(QR)u^lW*r[8\+oW\b +,lT+h-N5Fm.fM!u/cIF&0`Ej,1]B332DtOnr\sg9r]0s=r]C!>q`Xg?pcj%JO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpq_5PRGA4o7A@48q;?3W;#;2uY`72?#H31]B-.0`E^(/-%1$.kCTJr[7[lrZqIfrZV7`rZ;%ZrZ(nV +rYb\PrYPGIq\9#Cp_*?6\IeEGq\&lAq\9#ErYGAIq\fAPrZ(nXrZD+^rZV7crZqIir[@apr[[t"r\"1( +r\=C-r\XU3r\ad:3;ki93W;)=48V/>4o7G<5EA))5PmYA4o7A@48q;?3W;#;2uY`72?#E21B'$-0E*U' +/H.-u.K1^o-2o1h,5r_a+9!>\*W@&X)ZCWR)#b?N(B,'G'`Jd@')3'O&FpG4')N@>'`JjH(B,-L)#bEP +)ZC]T*<$uX+9!D^+oW_c-2o7j./k^q/,h."0E*[)1&a!.2#]B32uYf93Vtl:48qA>4o7G<56*s15kmS@ +55RMB4Sq5;3W;#;2uY`72#]<11B'!,0E*R&/H.-u./kUn-2o.g,5r_a+9!>\*<$oV)Z(BN(]G3L(&J^E +'DN49&HEEU&FpG4')N@A'`/XE(B,-L)#bEP)ZC]T*<%#Y+9!G_,5rke-2o:k./kar/H.7#0E*[)1&a!. +2#]B32uYf93W;)=48V/;4o7G<5MAAR5e]MY5PmYA4o7A@48q;?3W;#;2uY`72?#E21B'$-0*!U*/h[,S +r[Rmrr[7[krZqIerZM1^rZ;%ZrZ(nUrYb\PrYPPLrY>;ErY,&>p^t.Mne(j6q\/i@rY>DJrYPPNrYb\R +rYthVrZ1t[rZM1`rZhCgr[.Umr[Rmtr[n+&r\4=+r\OO1!Au_72?#Q63;tr83rV5?4Sq;=557?n5cd5% +5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/ +rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5 +rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO%.=pcnO;r]U-@r]C*?r]0s;r\sg7r\XU1r\FI,r\+7'r[\%!!@fSu.K1^o-2o1h +,5rbb+9!;[*<$oV)ZCWR)#b?N(B,'G'`Jd@')3'L&G6Y4')N@>'`JjH(B,-L)#bEP)ZC]T*<%#Y+9!D^ +,Q8tf-2o:k.K1gr/H.:$0E*^*1B'*/2?#K72`C^qr]'m;r]:$?q`Oj@q`ad>O$NJ)q`am?q`Oj>r]:$= +r]'m9r\ja4r\OO/r\4=(r[n+"r[Igpr[.UirZhCdrZM1^rZ1tXrYthTrYYVNrYGAGrY55Cq\&Q6]FaWG +q\&c>rY55ErYGJLrYYVPrYkbUrZ1tZrZM1`rZhCgr[.Ulr[Igsr[e%$r\+7*r\OO1r\a[5r\sg9r]0s= +r]C!>r]U-BpceaDO?iS*q`am?r]L'>q`4X8r\ja5r\XU1r\=C+r\"1%r[[ssr[@amrZqIfrZV7`rZ;%Z +rZ(nVrYkbQrYPPLq\B)Eq\/i>p(79:]FaWGq\&c>rY5>Hq\K/IrYYVPrYthVrZ1t[rZM1arZhCgr[.Um +r[Rmtr[e%%r\4=+r\OO1r\a[6q`+R9q`Fd>q`Xg?pcmItJO$q7pcnX>q`Xg=r]C*?r]0s;r\sg7r\XU1 +r\FI,r[n1&!A,o&/,h!s./kRm,lT%f,5r_a+9!;[*<$oV)ZCTQ(]G3I(&epE'DiF8&\J\G&c34<'E/^C +(&f!J(]G9N)?(QR*<$uX*r[;]+oW_c-2o7j-iPRo/,h+!0)dO'1&a!.1]]Hk!&aa6r\sg9r]0s=r]C!> +r]U-Bpcj%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpq_5PRGA4oRS@48q;?3W;#;2uY`72#]<11B'!,0E*R&.f_"! +.4P6Er[.UjrZhCcrZM1^rZ1tXrYthSrYYVNq\K/GrY55Cp_*?6ZOlmDq\&c>rY5>HrYGAIrYYVQrYthV +rZ;%\rZM1arZhCfr[7[nr[Rmur[n+&r\=C-r\OO1r\ad92ZPf93;tr;3r;#<4Sq;=55RR*5kmS@55RMB +4T7GA3r:r:3;ti82?#H31B'$-0`E^(/cI:".K1ap-N5:i,Q8kc+9!>\*W@&X)u^`S)#b?N(AejG'`Jd@ +')3'C&GQk7')N@A'`JjH(B,-L)#bEP)ZC]T*<%#Y+9!D^,5rke-2o:k.K1gr/H.:$0E*^*1B'*/2?#N5 +2uYf93W;)=48V/>4nq5<56*s15kmS@55RMB4T7GA3rV/=3;tl92Z>T52#]901&`j*0)dF$/,gsr-iPIl +,lT"e+oWS_*r[/Y)u^cT)?(KP(]G3L(&epE'DN48&HNFS[1N*Fp_*Q>q\8oCrYPPNrYb\RrYthWrZ;%\ +rZV7brZqIir[7[or[[t!r\"1(r\=C.r\XU3q`"L6q`=^g-C3S^-MHXq`am?r]L0Ar]9p: +r]'m8r\a[3r\FI-r\4=(!%e4'/cI:".K1ap-N5:i,Q8kc+9!>\*W@&X)u^`S)#b?N(AejG'`Jd@')3'C +&GQk7')N@A'`JjH(B,-L)#bEP)ZC]T*<%#Y+9!D^,5rke-2o:k.K1gr/H.:$0E*^*1B''12)P@kr\ja7 +r]'m;r]:$?q`Oj@pceR>JO$;%JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,3rV/=3;YW52#]<11B'!, +0)dI%.f_"!.4P6Er[.UjrZhCcrZM1]rZ(eSrYb\PrYPPLrY>;ErY,&>p^sV>p_!KT52#]901&`j*0)dI%/,h!s./kRm,lT%f+oWS_*r[/Y)u^cT)?(KP(]G3L +(&epE'DN48&[2iA&c34<'E/^F(&JdG)#bEP)ZC]T*<$uX+9!D^,5rke-2o7j.K1gr/H.:$0E*^*1B'*/ +2#]E42uYf93W;)=48V/>4nq5<56*s15kmSC55RM?4T7GA3rV/=3;tl92Z>T52#]901&`j*/cI=#/,gsr +-iPFk,lT"e+TZ73;tr;3rV5<4T7M=55RRu5_2275kmS@55RMB +4T7GA3rV/=3;tl92Z>T52#]901&`j*/c[I(/M6rPr[Igpr[.UirZhCcrZD+\rZ(nVrYkbRrYYVNrYGJJ +rY55Cp_*?6YRpRAq\&c>rY5>Hq\K/JrYb\RrYthVrZ1t[rZM1arZqIhr[.Unr[Rmur\"1'r\=C-r\FR3 +1]TB32Z>Z73;tr;3rV5<4T7M=55RQq5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%.=pcnX>q`Xp@r]C!&c34? +'DiLC(&f!J(]G9N)?(QR)u^lW*r[8\+oW\b,lT.i-iPRo/,h."0)dR(1&a!.2#]?52DtOnr]'d8q`Fd> +q`Xg?q`g-,pcnX>q`Xp@r]C*?r]0s;r\sg7r\a[3r\FI-r\+7&r[e$ur[@anr[%OgrZ_=arZD+\rZ(nV +rYkbRrYYVNrYGJJrY55Cq\&Q6YRpRAp_*Q>rY55ErYGJLrYYVPrYthVrZ1t[rZM1`rZhCfr[.Umr[Igt +r[n+%r\4=,r\OO1r\ja7r]'m;r]:$?q`Oa=q`amA!'lW2pcnaAq`Xg=r]C*?r]0s;r\s^3r\OO/r\4=) +r[n+#r[Rmqr[.UjrZhCcrZM1]rZ1tXrYthTrYYVNq\K&CrY,&>p_!E8Z4QdCq\&c>rY5>HrYGAIrYYVP +rYthVrZ1t[rZM1arZhCgr[.Umr[Rmur\"1'r\4=,r\OO1r\ja7r]'m;r]:$?q`Oj@pceR>g-C3S^-MHX +q`am?r]L0Ar]:$=r]'m9r\ja5r\XU0r\=C*r[e+$!A#f$.fLjq-iPFk,Q8nd+TU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,T52#]901&`j*0)dF$.KCmu.4P6Dr[%OgrZ_=arZD+\rZ(nVrYkbQq\T5IrY>DHq\/i>ob";; +p_!B9q\/rCrY>DJrYPPNrYb\RrYthVrZ;%\rZV7brZqIir[7[nr[[t!r\"1(r\=C-r\XU3!B)h92Z>Z7 +3;tr;3rV5?4Sq;=55RR*5l3e@55m_E4Sq5>3rV/=3;tl92Z>T51]B0/1&`j*/cI=#.fLjq-iPFk,Q8nd ++T4nq5< +5MAAR5e]M\5PRGA4oRS@48q;?3W;#;2uY`72?#E21B'$-0E*O'/-.:Qr[Rmqr[7[krZhCdrZM1]rZ1tX +rYkbRrYYVNq\K/GrY5>Fp_*63YRpI>q\&lAq\9#ErYGJLrYYVPrYkbTrZ1tZrZD+_rZhCfr[.Umr[Igs +r[n+%r\4=,r\FR31]TB32?#N53;Y`83rV5?4Sq;=55RQq5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe +;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^S +rq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnL +rf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%.=pcnX>r]U-@ +r]C*?r]0s;r\sg7r\a[2r\FI-r\+7'r[e$u!%@pt.K1^o,lT%f,5r_a+9!;[*<$oV)ZCTQ(]G3I(&epE +'E/X>&Z638&bm"<'DiLC(B,-L)#bEP)ZC]T*<$uX+9!G_,5rke-2o:k./kar/H.:$0`Eg+1B'-02$#Tn +!&jg8r]'m;r]:$?r]L'@q`amAO$NS,pce[?r]L'>r]:$=r]'m9r\ja5r\OO/r\=C*r[n+#r[Rmqr[7[j +rZhCdrZM1]rZ1tWrYkbRrYYVNrYGJJq\9#Cq\&Z9WY"h8q\&c>rY5>HrYGJLrYYVPrYkbTrZ(nYrZD+_ +rZhCfr[.Umr[Igsr[n+%r\4=,r\OO1r\a[5r\s^7r]:$?r]L'@q`amA!'lW2q`jsAq`Xp@r]C!DJrYPPNrYbSPrZ(nYrZM1`rZhCgr[.Umr[Rmtr[n+&r\4=,r\OO1r\ja7r]'m;r]:$?q`Oj@ +pceR>g-C3S^-MQ[pce[?r]L'>r]:$=r]'m9r\ja5r\OO/r\=C*r[e+$!A#f$.fLjq-iPCj,Q8nd+T%JO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpq_5PmYD +4o7A@48q;?3W;#;2uY`72?#E21B'$-0E*R&/H.+!-ik_Er[7[jrZhCdrZM1^rZ1tXq\oGNrYPPLq\B)E +rY,/Ap^sD8p_!96rY,/Cq\K/IrYYVQrYthVrZ1t[rZM1arZhCgr[7[nr[[t!r[n+&r\=C-r\XU3!B)h9 +2Z>Z73;tr;3rV5?4Sq;=55RR*5l3eC55RMB4Sq5>3rV/=3;tl92?#H31]B-.0`Ea)/cI:".K1^o-N5:i +,5rbb+T4o7G?56*s15l3eC55RMB4T7G>3r:o9 +2uY]62#]<11&`m+0E*O%/,h!s-iPIl,lT"e+oWS_*r[/Y)u^cT)?(KP(]G3L(&epE'DiF;&c!!D&G6Y4 +')iRA'`JjH(B,-L)#bEP)ZC]T*<%#Y+TZ73;tr;3r;#< +4T7M=55RRu5_2275l3eC55RMB4Sq5>3rV/=3;tl92?#H31]B-.0`Ea)/H@:%.kCTJr[7[lrZqIerZV7` +rZ;%ZrYthTrYb\PrYPPLrY>;ErY,/Ap^sM;ob%'6q\/rCrY>DJrYPPNrYb\RrYthVrZ;%\rZV7brZhCg +r[7[or[[t"r\"1(r\=C-!AlV52#]B32Z>Z73;tr;3rV5?4Sq;=55RQq5cd5%5_21O5bp[E6N0@L7/f^U +8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6 +roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5 +ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%.= +pcnX>r]U-@r]C*?r]0s;r\sg7r\a[2r\FI-r\+7&r[e$u!%7jr./kUn,lT%f+oWV`*r[2Z)uCQQ)#b?N +(B,'G'`JdC')3'7&Gm(7')iRA'`/[F(]G9N)?(QR*<$uX*r[;]+oW_c-2o:k./k^q/H.7#0E*^*1B'*/ +2$#Tn!&jg8r]'m;r]:$?r]L'@q`amAO$NS,q`am?r]L'>r]:$=r]'m9r\a[3r\OO.r\4=(r[e%!r[Igo +r[.UirZ_=brZD+\rZ1tWrYkbRrYYVNrYGJJq\9#Cq\&Z9U_*D8q\&c>rY5>HrYGAIrYYVQrYthVrZ;%\ +rZM1arZhCgr[7[nr[Rmur\"1(r\=C-r\XU3r\ja7r]'m;r]:$?r]L'@q`amA!'lW2q`jsAq`Xp@r]C!< +r]'d6r\a[3r\OO.r\4=(r[e%!r[Igor[%OhrZ_=arZD+[rZ(nVrYkbRrYYVNrYGJJrY55Cq\&Z9q%0V= +q[r]DJrYPGKrYkbTrZ(nYrZD+^rZhCfr[%Olr[Igsr[n+%r\4=,r\OO1q_nF5r]0s=q`Fd> +r]U$?q`ie"JO$q7q`jsAq`Xp@q`FdU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,T51]B0/1&`j*/cI=#.KCjt-n,'BrZqIfrZV7_rZ;%ZrYthTrYb\PrYPPL +rY>;ErY,/Ap^s;5p_!B9rY,/CrY>DJrYPPNrYb\RrZ(nXrZ;%]rZV7cr[%Okr[@aqr[e%#r\+7)r\FI/ +r&"I3r\sg9r]0s=r]C!>q`XpBq`g-,q`jsAq`Xp@q`Fd;ErY,/Ap^s;5p_!KDJrYPPNrYkbTrZ(nYrZD+^ +rZ_=dr[%Okr[@aqr[e%$r\+7*r\FI0r\a[5r\sg9r]0s=r]C*Aq`Xg?q`b'GO?i\-q`am?r]L0Aq`=^9 +q`"L3r\XU1r\=C+r\"1$r[[ssr[7[krZqIerZM1^rZ1tXrYt_PrYYVNrYGJJrY55Cq\&Z9q%0V=p_!K< +q\/rCq\B)Hq\];NrYthVrZ;%\rZM1arZqIhr[@apr[[t"r\"1(r\=C.r\XU3r\ja8r]0j:r]C*Aq`Xg? +q`ie"JO$q7q`jsAq`Xp@q`FdU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,Q41]B0/0`Ea)/cI:".0(as-n,'BrZqIfrZV7_rZ;%ZrYthTrYb\PrYPPLrY>DH +q\/i>p^s;5p_!B9rY,/CrY>DJrYPPNrYb\RrZ(nXrZ;%]rZV7cr[%Ojr[@aqr[e%#r\+7)r\FI/r&"I3 +r\sg9r]0s=r]C!>q`XpBq`g-,q`jsAq`Xp@q`FdDHq\/i>q[oM5p_!B9rY,/CrY>DJrYPPNrYkbTrZ(nXrZ;%]rZ_=d +r[%Okr[@aqr[e%#r\+7*r\FI0r\a[5r\sg9r]0s=r]C*Aq`Xg?q`b'GO?i\-q`am?r]L0Aq`=^9q`"L3 +r\XU1r\=C*r\"1$r[Rmrr[7[krZqIerZM1^rZ1tXrYt_PrYPPLq\B)Eq\/i>q[rN5X:Y.=rY#)ArY55E +rYPGKrYkbTrZ(nYrZD+^rZ_=er[%Okr[Igsr[n+%r\4=+r\OO1r\a[5r]'m;q`=^r]:$=r]'m9r\a[3r\OO.r\4=(r[\%"!@o]".K1^o-N5:i,5rbb+9!;[*<$oV)ZCWR +)#b?N(B,'J'`/R@')N97&GQk7')iRA'`JjH(B,-L)#bHQ)u^iV*W@,Z+T%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYpq_5Q3kD4o7A@48q;? +3W;#;2uY`72#]<11B'!,0E*R&/,gst-ik_Er[7[jrZhCcrZD+\rZ1tWrYkbRrYYVNrYGJJrY55Cq\&Z9 +U_*;5q\&lAq\9#ErYGJLrYYVPrYkbUrZ1tZrZM1`rZhCgr[.Umr[Rmur[n+&r\4=,r\OI0!&aa7r]'m; +r]:$?q`Oa=r]^3DO$NS,q`am?r]L'>r]:$=r]'m9r\a[3r\OO.r\4=(r[e%!r[Igor[.UirZ_=brZD+[ +rZ(nVrYkbRrYYVNrYGJJrY55Cq\&c&YTd2&c34?'DiLC(&f!J(]G9N)ZC]T*<$uX*r[;],5rhd-2o:k./k^q/H.7#0E*^*1''3g +!&X[4r\ja7r]'m;r]:$?r]L'@q`amAJO$;%JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,Q41]B0/0`Ea)/cI:".0(as-n,'BrZqIfrZV7_rZ;%ZrYthTrYb\PrYPPLrY>DHq\/i>p^s;5p_!B9 +rY,/CrY>DJrYPPNrYb\RrZ(nXrZ;%]rZV7cr[%Ojr[@aqr[e%#r\+7)r\FI/r\X^72?5Z72uYf93W;)= +48V/;4oRYB5EA),5PmYA4oRS@48q;?3W;#;2uY]62#]<11&`m+0)dF$/,h!s-iPIl,lT"e+oWS_*W@&X +)u^cT)?(KP(]G3L(&epE'DiF>&YTd2&c34?'DiLC(&f!J(]G9N)ZC]T*<$uX*r[;],5rhd-2o:k./k^q +/H.7#0E*^*1B'-02?#N52uYf93W;)=48qA>4o7G?56*s15l3eC55RMB4T7G>3rV,92uY]62#]<11&`j* +0)dF$.fLmr-iPFk,lT"e+T&bZd;&GQk:')N@A'`/XB(]G9N)ZC]T +*<%#Y+9!D^,Q8tf-2o:k.K1js/cIC%0`Eg+1]B6.2Z>]83Vtl:48qA>4o7G?5MAAR5e]M\5PmYA4oRS@ +48q;?3W;#;2uY]62#]<11&`m+0)dC%.fh.Nr[Igor[.UirZ_=brZD+[rZ(nVrYkbRrYYVNrYGJJrY55C +q\&cZ73;tr;3rV5?4Sq;=55RQq5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(D +rc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BD +qu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLF +ra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%.=pcnX>r]U-@r]C*?r]0s;r\sg7r\XU1 +r\FI,r\+7&r[e$t!%7jr./kUn,lT%f+oWS_*r[2Z)u^cT)?(KP(]G3L(&epE'DiF;&Yp!5&c34?'DiLC +(&f!J(]G9N)?(QR*<$uX*r[;]+oW_c-2o7j./k^q/H.7#0E*[)1B'*/2$#Tn!&jg8r]'m;r]:$?q`Oa= +r]^3DO$NS,q`am?r]L'>r]:$=r]'m9r\a[3r\OO.r\4=(r[e%!r[Igor[.UirZ_=brZD+[rZ(nVrYkbR +rYYVNrYGJJrY55Cq\&cr]:$= +r]'m9r\a[3r\OO.r\4=(r[\%"!@o]".K1^o-N5:i,5rbb+9!;[*<$oV)ZCWR)#b?N(B,'J'`/R@')N97 +&GQk7')iRA'`JjH(B,-L)#bHQ)u^iV*W@,Z+T%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYpq_5PmYD4o7A@48q;?3W;#;2uY`72?#E21B'$- +0E*R&/H.+!-ik_Er[7[jrZhCcrZM1]rZ1tXrYkbRrYYVNrYGJJq\9#Cq\&Z9V\&M5q\&lAq\9#ErYGJL +rYYVPrYkbUrZ1tZrZM1arZhCgr[7[nr[[t!r[n+&r\4=,r\OO2!B)h92Z>Z73;tr;3rV5<4Sq;@55RR* +5l3eC55RMB4Sq5>3rV/=3;tl92?#H31]B-.0`Ea)/cI:".K1^o-N5:i,5rbb+9!>\*W@#W)ZCWR)#b?N +(B,'G'`JdC')3'=&FpG4')N@>'`JjH(]G9N)?(QR)u^iV*r[8\+TZ73;tr;3rV5?4Sq;=55RPE5`e8.5PmYA4oRSC48V)<3;YZ62?#H31]B-.0`Ea)/H.1!.K1^o +-2o1h,5r_a+9!;[*<$oS)?(KP(]G3L(&epE'DiF;&c!!D&FpG4')iRA'`/XE(]G9N)?(QR)u^iV*r[8\ ++T3rV/= +3;tl92?#H31]B-.0`Ea)/H@:%.kCTJr[7[lrZqIerZV7_rZ;%ZrYthTrYb\PrYPPLrY>;ErY,/Ap^sM; +ne(j6q\/i@rY>DKrYYVPrYkbTrZ(nYrZD+^rZ_=dr[%Okr[Igsr[n+%r\+7*r\=L21]TB32?#N52uYf9 +3W;)=48qA>4o7G?5Cl)$5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO`'F)^q`b!Bq`Oj>r]:$=r]'m9r\ja5r\OO/r\=C* +r[n+#r[Imr!@TAq-iPCj,Q8nd+T'`/[F(]G9N +)ZC]T*<$uX*r[;],5rhd-2o:k./kar/H.7#0E*^*1B'*/2$#Tn!&jg8r]'m;r]:$?r]L'@q`amAO$NS, +q`am?r]L'>r]:$=r]'m9r\a[3r\OO.r\4=)r[n+#r[Rmpr[.UirZ_=brZM1]rZ1tXrYkbRrYYVNrYGJJ +q\9#Cq\&Z9WY"h8q\&c>rY5>HrYGJLrYYVPrYkbTrZ(nYrZD+_rZ_=dr[%Okr[Igsr[n+%r\4=+r\FI0 +r\a[5r\sg9r]0s=r]C*Aq`Xg?q`b'GO?i\-q`am?r]L0Aq`=^9q`"L3r\XU1r\=C+r\+7%r[[ssr[7[k +rZqIerZV7_rZ;%ZrYthTrYb\PrYPPLrY>DHq\/i>p_!<5Z4Q[@rY#)Aq\9#ErYGJLrYYVPrYkbTrZ(nY +rZD+_rZhCfr[.Umr[Igsr[n+%r\4=,r\OO1q_nF5r]0s=q`Fd>r]U$?q`ie"JO$q7q`jsAq`Xp@q`Fd< +r]0s;r\sg6r\XU1r\=C+r\+7&!%\.%/H.-u-iPIl,lT"e+oWV`*r[2Z*<$lU)?(KP(]G3L(&J^E'DiF; +&ZQE8&c34<'E/^F(&f!J(]G9N)?(QR)u^iV*r[8\+oW\b,Q9"g-iPRo/,h."0)dR(1&`p/1c,1hr\a[5 +r\sg9r]0s=r]C*Aq`Xg?q`fWsX?_>%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYpq_5PmYD4o7A@48q;?3W;#;2uY`72?#E2 +1B'$-0E*U'/H.+!-ik_Er[7[jrZhCdrZM1^rZ;%YrYthTrYYVNrYGAGrY5>Fq\&Z9V\&V8q\&c>q\8oC +rYPPNrYkbTrZ(nXrZD+^rZ_=dr[%Okr[@arr[e%$r\4=+r\FI0r\X^72?5Z72uYf93W;)=48qA>4o7G? +5EA),5PRGA4oRS@48q;?3W;#;2uY`72?#E21&`m+0E*R&/H.-u./kRm,lT%f,5r_a*r[2Z*<$lU)?(KP +(]G3L(&J^E'DiF;&ZQE8&c34<'E/^F(&f!J(]G9N)?(QR)u^iV*r[8\+oW\b,lT.i./k[p/,h."0)dR( +1&`s-2#]B32Z>Z73;tr;3rV5?4Sq;=55RPE5`e8.5PmYA4oRSC48V)93;tl92?#H31]B-.0`Ea)/H.1! +.K1^o-N5:i,5rbb+9!>\*W@#W)ZCWR)#b?N(B,'J'`/R@')3(7&@)l?&cNF?'DiLC(&f!J(]G9N)>bBP +*<%#Y+TZ73;tr;3r;#<4T7M=55RRu5_2275l3e@55m_E +4Sq5>3rV/=3;tl92Z>T51]B-.0`Ea)/H@=&/1gcMr[@amrZqIfrZ_=arZ;%ZrZ(nUrYb\PrYPPLrY>;E +rY,/Ap^sM;ob%'6q\/rCrY>DJrYPPNrYb\RrYthVrZ;%\rZV7brZqIir[@apr[[t"r\"1(r\=C-!AlV5 +2#]B32Z>Z73;tr;3rV5?4Sq;=55RQq5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%.=pcnX>r]U-@r]C*?r]0s;r\sg7 +r\a[3r\FI-r\+7'r[e$u!%@pt.K1^o-2o1h,5r_a+9!>\*<$oV)Z(BN(]+sH'`/RC'(QX:&GQk7')N@A +'`JjH(B,-L)#bEP)ZC]T*W@,Z+9!G_,5rke-N5Cl.K1js/H.:$0`Eg+1]B612$#Tn!&jg8r]'m;q`Fd> +q`Xg?q`g-,q`jj>r]U6Cq`Fd;Eq\/rAne&);ob%'6q\/rCrY>DJrYPPNrYb\RrYthWrZ;%\rZV7crZqIir[@apr[[t" +r\"1(r\FI/r\XU3r\ja7r]0s=r]C!>q`Xg?q`b'GO?i\-q`am?r]L'>r]:$=r]'m9r\a[3r\OO.r\4=) +r[n+"r[Rmqr[.UjrZhCcrZM1]rZ1tXrYkbRrYYVNrYGJJq\9#Cq\&Q6r"-.Fob%09q\/rCrY>;GrYPPN +rYb\SrZ(nXrZD+^rZV7cr[%Ojr[@aqr[[t"r\+7)r\FI/r\XU4r\sg9r]0s=r]C!>r]U$?q`ie"JO$q7 +q`jj>r]U6Cq`Fd&c34<'E/^F(&f!J(]G9N)?(QR)u^lW*r[8\+oW_c,lT.i./k[p/,h."0)dR( +1B''11c,1hr\a[5r\sg:r]:$?q`Oa=q`amAJO$;%JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,T52#]<11&`j*0)dF$.KCmu.4P6Dr[%OhrZhCbrZD+\rZ(nVrYkbRrYYVNrYGJJrY5,@rY"l9 +YRpI>q\&c>rY5>HrYGJLrYYVPrYkbTrZ1tZrZD+_rZ_=er[.Ulr[Igsr[n+%r\4=+r\OO1r\X^72?5Z7 +2u>W448qA>4o7G?5EA),5PRG>4oRSC48q;?3W;#;2uY`72?#H31B'$-0E*R&/H.-u./kUn-2o.g,5r_a +*r[2Z*<$oV)ZCWR(]G6M(B,'J'`/R@'(lj@&G6Y4')iRD'`/XE(B,-L)#bEP)ZC]T*W@,Z+9!G_,Q8tf +-N5Fm.K1js/cIC%0`Ej,1]B612?#N53;tr;3rV5<4Sq;=55RPE5`e8.5PmYA4oRS@48q;?3W;#;2u>K3 +1]B0/0`Ea)/cI:".fLjq-N5=j,Q8kc+T4nq5<5MAAR +5e]M\5PRG>4oRSC48q;?3W;#;2uY`72?#H31B'$-0E*O'/-.:Qr[Rmqr[7[krZhCdrZM1]rZ1tXrYthT +rYbSLrYGJJrY55Cq\&Q6YRpI>q\&lArY55ErYGJLrYYVPrYkbTrZ1tZrZD+_rZhCfr[.Umr[Igsr[n+% +r\4=,r\FR31]TB32?#N53;tr;3rV5<4Sq;=55RQq5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u +=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_ +rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4 +rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%.=pcnX>q`Xp@r]C!< +r]0s;q_nF1r\OO.r\4=(r[n+"!%@pt.K1ap-N5:i,Q8kc+T +&cNF?'DiLC(&f!J(]G9N)?(QR*<$uX*r[;]+oW_c,lT1j./k[p/,h."0)dR(1&a!.2#]?52`C^qr]'m; +r]9pDHq\/i>ob"D>p_!B9q\/rCq\B)GrYPPNrYb\SrZ(nXrZD+^rZ_=dr[%Ok +r[@aqr[e%$r\+7)r\FI/r\XU4r\sg9r]0s=r]C!>q`Xg?q`b'GO?iS*r]^3Bq`Oj>r]:$=r]'m9r\ja5 +r\OO/r\4=)r[n+#r[Rmqr[7[krZhCdrZM1^rZ1tXrYthTrYYVNq\K/GrY55Cq\&Z9r"-7Iob%'6q\/rC +rY>DJrYPPNq\fAPrZ(nXrZD+_rZ_=er[%Okr[Igrr[e%$r\+7)q_S4.r\ja7r]'d9r]C!>r]U$?q`ie" +JO$q7pcnX>q`Xp@r]C*?r]0s;r\sg7r\a[3r\FI-r\+7'!%\.%/H.-u./kUn-2o.g,5rbb+9!>\*<$oV +)ZCWR)#b?N(B,'J'`/R@'(lj@&GQk7')N@A'`/XE(B,-L)#bEP)u^iV*W@/[+Tq`Xg?q`fWsX?_>%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYpq_5PmYA4oRSC +48V)<3W;#;2uY`72#]<11B'!,0E*R&.f_%".OtEGr[.UjrZhCcrZM1^rZ1tXrYthSrYYMKrYGJJrY55C +q\&Q6[Li*Dq\&lAq\8oBrYPGKrYkbTrZ(nYrZD+^rZ_=dr[%Okr[@aqr[e%#r\+7*r\FI/r\a[5!B2q; +2uYf93W;)=48V/>4nq5<5EA))5PmYA4oRSC48q;<3W:u:2Z>T52#]<11B'!,0)dI%/,h!s./kRm,lT%f ++oWV`+9!;[*<$oV)?(KP(]G3I(&epE'DiF;&[N&A&c34?'DiLC(&f!J(]G9N)?(QR)u^iV*r[8\+TZ73;tr;3rV5<4T7M=55RPE5`e8+5Q3kD4o7A@48q;?3W;#; +2uY`72?#H31B'$-0E*U'/H.1!.K1^o-2o1h,5rbb+9!>\*W@#W)ZCWR)#b?N(B,'J'_i@@'(lh;&.l5\ +p_!96rY,/CrY>DJrYPPNrYb\RrYthWrZ;%\rZV7brZqIir[7[or[[t!r\+7)r\=C.r\XU3q`"L6q`=^< +r]L'@pceR>g-C3S^-MHXq`am?r]L0Ar]9p:r\sg7r\a[3r\OO/r\4=(!%e4'/cI:".K1ap-N5:i,Q8kc ++TJO$;%JO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>Q41]B0/0`Ea)/cI:$.KM"Kr[@amr[%OgrZ_=brZD+[rZ(nVrYkbR +rYYVNrYGJJrY55Cp_*-0^C^&Mq\&c>q\9#ErYGJLrYYVPrYkbTrZ(nYrZD+^rZ_=dr[%Okr[@aqr[e%$ +r\+7*r\FI/r\a[5!B2q;2uYf93W;)=48V/>4o7G<5EA))5PmYA4oRS@48q;?3W;#;2Z>T52#]<11B'!, +0)dI%/,h!s./kRm,lT%f,5r_a+9!;[*<$oV)ZCTQ)#b?N(B,'J'`/R@'(6FL&FpG1')N@>'`JjH(B,-L +)#bEP)ZC`U*W@,Z+T4o7G<56*s1 +5kmS@55RMB4Sq5>3W;#;2uY`72?#H31]B-.0`E^(/H.1!.K1^o-N5:i,Q8kc+T'`/[F(]G9N)?(TS*<$uX*r[;]+oW_c,lT.i./k[p/,h."0E*[)1&a!. +2#]B02uYf63rV5?4Sq;=557@r5_2275kmS@55RMB4Sq5>3rV/=3;ti82?#H31]B0/0`E[)/HIFTr[[ss +r[@amrZqIfrZ_=arZD+[rZ(nVrYkYNrYPPLrY>DHq\/i>mh*DJne(a3q\/i@rY>DJrYPPNrYb\RrZ(nX +rZ;%]rZV7brZqIhr[7[or[Rn!r\"1'r\=C.r\OX52#oN52Z>Z73;tr;3rV5<4T7M@557?n5cd5%5_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO%.=pcnO;r]U-@r]C*?r]0s;r\sg7r\XL.r\4=)r\"1$!%J"!.fLmr-iPIl,lT"e+oWV` +*r[2Z)u^cT)?(KP(],!F'`/R@'(QXL&G6Y4')N@A'`/XE(B,-L)#bEP)u^iV*W@,Z+9!G_,Q8tf-N5Fm +.K1gr/cIC%0`Eg+1]B612?#K72`C^qr]'m;r]:$?q`Oj@q`ad>O$NJ)q`am?q`Oj>r]:$=r]'m9r\ja4 +r\OO/r\4=)r\"1$r[Rmrr[7[krZqIerZM1^rZ;%YrYthTrYb\PrYPPLrY>;Eq\/i>ne&_Mne(a3q\/rC +rY>;GrYPPOrYkbTrZ(nXrZ;%]rZV7cr[%Ojr[@aqr[[t"r\+7)r\FI/r\XU3r\sg9r]0j:r]C*Aq`Xg? +pceaDO?iS*q`am?r]L'>q`4X8r\sg6r\XU1r\=C+r\"1%r[[ssr[@anrZqIfrZ_=arZD+\rZ(nVrYkYN +rYPPLrY>;Eq\/i>q%rY5>HrYGJLrYYVPrYkbTrZ(nXrZD+^rZ_=dr[%Okr[@aqr[[t" +r\+7*r\FI/r\XU3r\sg9r]0s=q`Fd>q`Xg?pcmItJO$q7pcnX>q`Xg=r]C*?r]0s;r\sg7r\XU1r\FI, +r\"7(!A6#(/H.-u.K1^o-2o1h,5r_a+9!>\*<$oV)ZCWR)#b?N(B,'G'`/R@'(QXO&FpG1')N@A'`JjE +(B,-L)?(QR)u^iV*W@,Z+T%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp4oRSC48q;?3W;#82uY]62#]<11&`m+0E*L&.fh.Nr[Rmq +r[.UjrZhCdrZM1^rZ1tXrYthTrYb\PrYPPLrY>DHq\/i>mh*MMob%'6q\/i@rY>DJrYPPNq\fAPrZ(nX +rZD+^rZ_=dr[%Ojr[@aqr[[t"r\"1(r\FI/r\XU4r\jj;2ukr;3Vtl:48qA>4o7G<5E%l)5PRGA4o7A@ +48q;?3W;#;2uY`72?#H31]B-.0E*U'/H.-u.K1^o-N5=j,Q8kc+T'`JjH(B,-L)#bEP)ZC]T*W@,Z+9!G_,5rke-2o:k.K1gr/,h."0E*[)1B'*/2#]E4 +2uYf93W;):48qA>4o7G<56*s.5l3e@55m_B4T7G>3W;#;2uY`72?#E21B'$-0E*U'/H.-u.K1^o-2o1h +,Q8kc+9!>Y*<$oV)?(KP(]G3I(&epE'DiF<&c**Y&FpG4')N@>'`/XB(]G9N)?(QR*<$uX*r[;]+oW_c +,lT.i-iPRo/,h+!0)dO'1&`s-1]B922Z>Z73;tr;3rV5<4Sq;=557@r5_2245l3e@55m_B4T7GA3rV/= +3;tl92Z>T52#]<11&`g+/cdRWr[e$ur[Igor[.UjrZhCcrZM1]rZ1tXrYthTrYb\Oq\K/GrY55Cq\&H3 +_@ZAPq\&c>q\9#ErYGJLrYYVPrYkbTrZ1tZrZD+_rZ_=er[%Okr[Igrr[[t"r\+7)r\FI/r\OX62?5Z7 +2uYf93W;):48qA>4o7G<5Cl)$5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO_*Ic[q`am?r]L0Aq`=^:r]'m9r\a[3r\OO. +r\4=)r[e+$!A#f$.fLjq-iPFk,Q8nd+TN'R/&q`b!Bq`Oj>r]9p:r\sg7r\a[3r\OO.r\4=)r[n+"r[Rmqr[.UjrZhCcrZM1^rZ1tXrYthT +rYb\PrYPPLrY>;Eq\/`;mh+%\mh,=-rY,/CrY>;GrYPPNrYb\RrZ(nXrZ;%]rZV7brZqIir[7[or[[t! +r\"1(r\=C-r\OO1r\ja7r]'m;r]:$?q`Oa=q`ad>!'lN/pcnX>r]U-@r]C*?r]0s;r\sg7r\a[3r\FI- +r\+7'r[e%!r[Igor[.UirZhCcrZM1^rZ1tXrYt_Pq\T5IrY>DHq\/`;r"8Q5d1GaYq\&c>q\9#ErYGAI +rYYVQrYthVrZ;%\rZM1arZhCfr[.Umr[Igsr[e%$r\4=+r\OO1r\a[5r\sg9r]0j;r]Ks=q`ad>g-C3S +]0Q-Uq`b!Bq`Oj>r]9p:r\sg7r\a[3r\OO.r\+=*!A?,*/cI:".fLjq-N5=j,Q8kc+Tq`Xg?pcj%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp;E +q\/`;ne'7\ob$s3q\/i@rY>DJrYPPNrYb\RrYthVrZ1t[rZM1`rZhCgr[.Ulr[Igsr[e%$r\+7*r\OF. +r\ja7!B<%=3;tr;3rV5<4Sq;=557@$5kmS@55RMB4T7G>3rV/=3;tl92Z>Q41]B0/0`Ea)/cI:".fLjq +-iPIl,lT"e+oWS_*r[2Z*<$lU)?(KM(]G3L(&epE'DN4/&_%B_&bm"9'E/^C(&f!J(]G9N)?(QR)u^iV +*r[8\+TQ41]B0/0`E^(/cI:".fLjq-N5=j,Q8nd+THq\K/IrYYVPq]#MSrZ;%\rZM1brZqIhr[7[nr[Rmur[n+&r\4=,r\OO1r\a[6 +r]'d8q`Fd>pc\Lq`Xp@r]C!\*W@&X)ZCWR)#G-K(B,'J'`/R='(6F^&FpG.')N@A'`/XE(B,-L)#bEP)ZC]T*<%#Y ++9!D^,5rhd-2o:k./k[p/,h+!0)dR(1&a!.2#]?52DtOnr\sg9r]0s=r]C!>q`Xg?pcj%JO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpq`Xg?pcj^&pcnX>q`Xp@q`Fdkn3%hmh,=- +p_3W@q\B)GrYPPNrYb\RrYthVrZ1t[rZM1`rZhCfr[.Ulr[@aqr[e%#r\+7*r\FI/r\a[5r\sg9q`4O8 +r]Ks=r]^!>!'lN/pcnX>q`Xp@r]C!2Bq\/l?!#"W1jq-kkp_*?8rY55ErYGJLrYYVPrYkbTrZ(nXrZD+^rZV7c +r[%Ojr[@apr[Rn!r\"1(r\=C-r\XU3r\ja7r]'d8q`Fd>pc\U?ofq.qJO$h4pcnX>q`Xp@q`Fdpc\U?ofn!mX?_>%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp4oRS@48V&;3;tl92?#H31]B0/ +0`E^*/HIFTr[e$ur[Igor[%OhrZhCcrZM1^rZ1tXrYthTrYb\PrYPPLrY>;Eq\/W8_@cPUq\/i@q\B)G +rYPPNrYb\RrYthVrZ;%\rZM1arZhCfr[.Ulr[@arr[e%#r\+7*r\FI/q_e@3r\sp=3<2):3rV5<4T7M= +557@$5kmS=55m_B4T7GA3rV/=3;tl92Z>T52#]<11&`m+0)dI%/H.-u./kUn-2o.g,5rbb+9!>\*W@&X +)u^cT)?(KP(]G3L(&J^B'D3!T&bm"9'DiLC(&JdG(]G9N)?(QR)u^iV*r[8\+T4o7G956*s.5kmS=55m_E4Sq5>3rV/=3;tl92Z>T52#]<1 +1&`j*0)dF$/,h$t./kRm-2o.g,5rbb+9!>\*W@#T)ZCTN(]+sE'`/RA')`H[&bm"6'DiLC(&f!J(],'K +)?(QR*<$uX*r[;]+oW\b,lT+h-N5Fm.fLst/cIC%0`Ej,1]B612?#N52uYf93W;):48qA>4o7G95MAAR +5eB;V5PRGA4o7A@48q;?3W;#;2uY`72?#H31]B*/0EEj]r\"1%r[e$ur[@anr[%OgrZ_=brZD+\rZ1tX +rYthTrYb\PrYPPLrY>;Eq\/W8_@cPUq\/i@rY>;GrYPPNrYb\RrYthVrZ;%\rZM1arZhCfr[.Umr[Igs +r[n+%r\4=+r\FI0r\a[5!B2q;2uYf93W;):48qA>4o7G95Cl)$5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO_*Ic[pceR< +r]L'>r]:$=r]'m9r\ja5r\OO/r\=C*!%n:)0)dI%/,h!s./kRm-2o.g,5rbb+9!>\*W@&X)ZCWO)#b?N +(AejD'`/R:'$_*^')3.>'`JjE(B,-L)#G3M)u^iV*W@,Z+9!G_,Q8tf-2o:k./k^q/,h."0)dR(1&a!. +2#]B32Z>Z72uu$"!'1$>r]C!>q`X^;Eq\/N5d1Pp^q\/i@rY>;GrYPPNrYb\RrYthV +rZ1tZrZM1`rZhCfr[%Okr[Igrr[e%#r\"1(r\FI/r\XU3r\ja7r]'m;r]:$?q`Oj@pce@8!'lN/pcnO; +r]U-@r]C!6%;'%%<^')N@A'`/XE(AepI)#bEP)ZC]T*<$uX+9!D^,5rhd-2o7j-iPRo/,h+!0)dO'0`Ej, +1]B612Z>Z73;tr83rV5<4T7M=54q.o5_2245kmS=55RMB4Sq5>3rV/=3;tl92Z>T51]B-00`a!`r\+7& +r[e%!r[Igpr[.UirZhCdrZM1^rZ;%YrYthTrYb\PrYPGIrY>;Eq\/N5d1Pp^q\/i@rY>;GrYPPNrYb\R +rYthVrZ1tZrZM1`rZhCfr[%Okr[Igrr[e%#r\"1(r\FI/r\XU3r\ad92ZPf93;tr;3rV5<4T7M=54q-k +5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=l +riZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@D +ro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO%%:ofr=;q`Xg=r]C!\*W@&X)u^cQ)#b?N(AejD'_N.1'&sSp')3.>'_iF?(]G9N)?(QR)u^iV*W@,Z+9!G_ +,5rhd-2o7j./k[p.fM!u0)dO'1&`s-1]B922Z>Z73;bc:3Vto;4SV):557@!5kRA=55RMB4Sq5>3rV/= +3;tl92Z>T52#]<11B'!,0)dI%/,h$t.K1^o-N5=j,Q8kc+TZ7 +3;tr;3r;#<4Sq;:55RS@5`J&(5PRG>4oRS@48q;?3W;#;2uY`72?#H31B'$-0`E^(/H.1!.K1ap-iPFk +,lT%f+oWV`+9!;[*<$oV)ZCWR)#b?K(B,'D'EJj\q@iE4it:hpq\/rCrY,8Fq\B)Gq\T5KrYb\RrYthV +rZ;%\rZM1arZhCfr[.Ulr[@aqr[[t"r\+7)r\=C.r\XU3q`"L6r]0s=q`Fd>q`Xg?pcm7nJO$h4ofr=; +q`Xp@q`Fd\*W@#W)ZCWR +)#G-K(AejD'_i@1''9ep')3.>'`/XE(AepI)#bEP)ZC]T*<$uX*r[;]+oW\b,lT+h-N5Fm.fLst/cIC% +0E*^*1]B612?#N52ZYlt!''sJO$(tJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++, +3rV/=3;tl92Z>Q11]B'.0**^Zr\"1$r[[str[@anr[%OgrZ_=brZM1]rZ1tXrYthTrYb\Pq\T5IrY>)? +q\.-cob73:q\B)Gq\T5KrYb\RrYthVrZ1tZrZM1`rZ_=er[%Ojr[@aqr[[t"r\"1'r\=C-r\XU3r\ja7 +r]'m;!BN7A3r;#<4Sq;:557@!5kRA=55RM?4T7GA3r:r:3;tl92Z>Q41]B0/0`Ea)0)dF$.fLmr./kRm +-2o.g,5rbb+9!>\*W@&X)u^cT)?(KP(],!I(&/L?'?Cg]'DN:@(&JdG(],'K)?(QR)u^lW*r[8\+TZ73;tr;3rV5<4Sq;:55RS@5`J&%5PmYA4o7A@48q;? +3W;#;2uY`72?#H31]B-.0`E^(/cI=#.fLmr./kRm,lT%f+oWV`+8[)X*<$oV)ZCWR)#b?N(AejB'EAjE +'?Cg]'DN:@(&JdG(]G9K)?(TS*<$uX*r[8\+TQ41B9021,Ah_r\+7'r[e$ur[Igpr[.Uj +rZhCdrZV7_rZ;%ZrZ(nVrYkbRrYYVNq\K/Gp_rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cO]0Q-Uq`am?r]L'>r]:$=r]'d6r\a[3r\OO.!&+F-0`Ea)/cI=#/,h!s./kRm,lT%f,5r_a+9!>\ +*W@&X)u^cT)?(KM(]G3F(&J^6'B9_r'DiL@(&JdG(],'K)?(QR)u^iS*r[8\+oW\b,Q9"g-N5Fm.K1gr +/H.:$0E*[)1B'*/2#]E42u>T63<;0%!':*@q`Oa=q`ad>JNs3#q`jj>q`Xp@q`FdR4q\AuD +rYPPNq\fAOrYthVrZ;%\rZM1`rZhCfr[%Okr[@apr[[t!r\"1(r\=C-r\OO1r\ja7r]'m;q`=^qETp'pcnX>pc\U=q`F[8r]'m9r\ja5r\OO/r\=C*r\"1%r[[str[@anr[%OhrZ_=brZM1^rZ;%Z +rZ(nVrYkbRrYYVNq\K&D!>H7E'_2pt'(lq;'`JdC'`/XE(AepI)#bEP)ZC]T*<$uX*r[8\+TZ73;tr;3r;#94T7M=557@l5_22.5l3e@55RMB4Sq5>3rV/= +3;tl92Z>T51]T<41Gf"br\4=)r[n+"r[Rmrr[7[lrZqIfrZ_=arZD+\rZ1tXrYthTrYb\Pq\T5Iq\Al? +mh=grmh>R4q\AuDrYPPNq\fAOrYthVrZ;%\rZM1`rZhCfr[%Okr[@apr[[t!r\"1(r\=C-r\OO1r\ja7 +r\sp=3<2):3rV5<4Sq;=557?n5c-et5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(D +rc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BD +qu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLF +ra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO$h4pcnX>q`Xg=r]C!.0`E^(/cI=#.fLmr-iPIl-2o.g,5rbb+9!>\*W@&X)uCQN)#b?K(AJX>'\!fk'`/XB(AepI +)#bEM)ZC]Q*W@/X+T4o7A@48q;<3W;#;2uY`72#]<11B'!,0E*U'/H.1!.fLjq-iPIl,lT%f,5r_a+9!>\*W@&X +)u^cT)>b9M(],!C(&/Km'DiL=(&JdD(]G9N)?(QR)u^iV*W@,Z+9!D^+oW\b,lT+h-N5Fm.K1js/cIC% +0E*^*1B'*/2#]B02uYf93W;):48qA>4nq595PdX&5kmS@557;<4T7GA3r:r:3;tl92Z>Q41]B0/0`Ea) +0)dF$/,h$t./kUn-2o1h,Q8nd+Tb9M(]G3J(&\m?'\X6"'`JdC'_iFB(AJ^F)#bEP +)ZC]T*<$uX*r[8\+TN51BB9fr\FI,r\+7'r[e%!r[Rmqr[7[lrZqIfrZ_=arZD+\ +rZ1tXrYthTrYbSMrYPGIp_EQ4nq595Cl(s5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO]0Q-UpceR< +q`Oj>r]:$=r]'m9r\ja5r\XU1!&=R11B'!,0E*R&/H.-u.K1ap-N5=j,lT"e+oWV`+9!>\*W@&X)u^cT +)>b9M(],!C(%N(<'E/^4'D3(7(&/RD(],'H)ZC]T*<$uX*r[8\+T]?33;Y`;4$3C&r]L'@q`a[;JNs3#q`jj>pc\U=r]C!EneCF(rY5>Fob@09q\K/Iq\];MrYkbTq],SVrZD+^rZV7brZhCgr[.Ulr[Igrr[[t"r\"1(r\=C- +r\XU3r\ja7r]'m;r]9pq`Oa=q`a[;JO$(t +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,T51B9021,Ah`r\4=(r[n+#r[Rmrr[@am +r[%Ohq]c"^rZD+\rZ1tXrYt_QrYb\Pq\T#CneL1!p_EQ>q\T,Hq\f8MrZ(nXrZ;%\rZM1arZhCfr[%Oj +r[@apr[Rmur[n+&r\4=+r\OO1r\a[5r\sg9r]0j:!BW@C48V/;4o7G<5Cl)u5kmS=55RM?4T7GA3rV/: +3;tl92Z>T51]B0/1&`j*0)dI%/,h$t.K1^o-N5=j,Q8nd+oWV`+9!>\*W@&X)u^cQ)?(KM(],!:($65' +(&/RA(],'K)?(QR)uCWS*W@,Z+9!G_,5rhd,lT.i-iPOn.fLst/H.:$0E*[)1B'*/2#]B32Z>Z73;tr; +3r;#<4SV):557A:5_hW"5PRG>4oRS@48q;?3W;#82uY]62#]<11&`m+0E*R&/H.1!.K1ap-iPFk,lT%f +,5rbb+Tb9K(B>9K(@i4#'_N49(AepF)#bEP)ZC]T*;^cU+9!D^+oW\b,Q8tf-N5Cl +./k^q/,h+!0)dO'0`Ej,1]B612Z>Z43;tr;3r;#<4SV):557@i5_22.5kmS=55RM?4T7GA3rV/:3;tl9 +2?5T82)Y@hr\FI-r\+7'r[n+"r[Rmrr[7[lr[%OgrZ_=brZM1^rZ;%ZrZ(nVrYkYOrYYMKq\JW8jqRJ' +p_N`Cq\];MrYkbTq],SUrZ;%\rZV7brZhCfr[.Ulr[@aqr[[t!r\"1'r\4=,r\OO1r\a[5r\sg9r](!? +3WM5<48qA;4o7G<5Cl(p5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO]0Q$Rq`adr]9p:r]'d5r\OU2!AcP21B'$- +0`E^(/cI=#/,h!s./kUn-2o1h,Q8kc+TZ73;Y`83rV2A4?WR)q`X^r]:$=r]'m9r\ja5r\XU1r\FI-r\+7'r[n+"r[Rmrr[7[lr[%OhrZhCcrZM1^rZ;%ZrZ(eS +rYkYOq\]2HneU@&obRE@p_`uJq\oGQrZ(nXrZ;%\rZM1`rZ_=drZqIir[7[nr[Igsr[e%#r\+7)r\=C. +r\XU3r\ja7r]'m;q`=^q`Xg?ofphhJO$V.ofr=; +pc\U=q`Fd\*W@&U +)u^cQ)>b9J(\/@((%i@>(\ejH)>b?O)u^iV*W@,Z+9!D^+oW\b,Q8tf-N5Cl./k[p/,h+!/cIF&0`Eg+ +1]B612?#N52uYf93W(o<3rV5<4Sq;=54q-k5bgSq5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`- +r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKi +rqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXop +rcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO$h4ofr48q`Xg=r]C!\*W@&U)u^cQ)>b9D(YTZ" +(],'E)?(QR)uCWS*W@,Z+9!D^+oW_c,lT+h-N5Cl./k^q/,h+!0)dO'0`Ej,1]B612?#N52uYf93W;): +3rqH+!'L$>q`a[;JO'0!ofr48q`Xg=r]C*?q`4X8r\sg7r\a[2r\FI-r\+7'r[n+#r[[ssr[@anr[.Ui +rZhCdrZV7`rZD+\rZ1tXq]#MQq\f8Jp_VNtp_WfEq\f8LrYthVrZ1kWrZM(]rZhCfr[%Ojr[@apr[Rmt +r[e%$r\+7)r\FI/r\XU3r\ja7r]'m;r]9pr]9p:r]'m9!&aj92Z>T51]B0/1&`j*0)dI%/H.1!.K1ap-iPIl,lT%f,5rbb+TU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,N +rZ(nXq]>_YrZM1arZhCfr[%Ojr[7Rlr[[t!r[n+&r\4=+r\OF.r\ja7r]'d8r]:$?r&asApc\Lr]:$=r]'m9r\ja5r\XU1r\FI-r\4=(r[n+#r[Rmrr[@anr[.UjrZhCdrZV7`rZD+\ +rZ1kUrYt_Qq\f/Gf,+3!q\f8LrYt_SrZ1tZrZD+^rZV7brZhCfr[%Ojr[@apr[Rmtr[n+%r\+7)r\=C. +r\XU3r\ja7r]'m;q`=^r]:$=r]'m9!&aj92Z>T52#]<11B'$-0`E^(/cI=#.fLmr./kUn-N5=j,Q8nd+oWV`+9!>\*W$iU +)uCQN)>G'#(\ejE)>b?O)uCWS*W@,Z+9!D^+oW\b,Q8tf-2o7j./k[p.fLst/cIC%0E*[)1&a!.2#]B3 +2Z>Z73;tr83WV<(!'C'?q`X^lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_WrZ(eSoc!TCiu%P/q\o>Nq],SU +q]>_YrZM1`rZ_=drZqIir[7[nr[Igrr[[t"r\"1'r\4=+r\FI/q_e@3q`+R8r]9p=54q-k +5kdP:5PRG>4o7A=48q;?3W;#;2uY`72?#H31]B0/1&`m+0)dI%/H.1!.fLjq-iPIl-2o1h,Q8nd+oWV` ++9!>Y*W@&U)tb-E)G-I)uCWS*W@,Z+9!D[+oW\b,lT+h-N5Cl./k[p.fLst/cIC%0E*[)1B'*/ +2#]B32Z>Z43;tr;3r;#<4SV):557A45_MDq5PmY>4o7A@48V)<3W;#;2uY`72?#H31]&p+0E*U'/cI=# +.fLmr./kUn-N5=j,lT%f,5WM^+9!>Y*W@#Z)]S_pp_roFiu%P/q\o>Nq],JRrZ;%\rZM1`rZ_=drZqIh +r[.Ulr[@apr[[t!r[n+%r\+7)r\FI/r\XU3r\ja7r]'d8q`F[;q`X^Y*W@&U)tb-E +)G-I)uCWS*W@,Z+9!D[+oW\b,lT+h-N5Cl./k[p.fLst/cIC%0E*[)1B'*/2#]B32Z>Z43;tr; +3rD&>48qA;4o7G<5Cl(j5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO\3TULpceRY*W$iR)u(?-)>G-I)u(EP*W$oW+9!D^+oW\b +,Q8tf-2o7j-iPOn.fLst/Gh(!0E*^*1B'*/2#]B32Z>Z73;tr83r;#<497T.rB9p>ofn!mpH\C9pceI9 +r]L'>r]:$=q`+R6r\ja5r\OO/r\=C+r\+7'r[n+"r[Rmrr[@anr[.LfrZhCdrZV7`rZD+\q]5PRq]#;K +h&5u+q]#DPq]5YWq]Ge[rZV7brZhCfr[%Ojr[7[nr[Rmtr[e%$q_.q'r\FI/r\XU3r\ja7r]'m;q`=^< +q`Oa=pceI;nN_amofr48q`Xg=q`Fdpc\C9pclqeJO$M+ofr48pc\U=q`FdU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3r:r:2ukl<2`L^oq_\:.r\=C+r\+7'r[n+#r[[ssr[@anr[.UjrZq@cq]Yq] +rZD"YrZ1bRoc)p0q]#;Mq]5PTrZD+^rZV._rZhCfr[%Ojr[@Xmr[[t!r[n+&q_8")r\OO1r\a[5r\sg9 +q`4X:q`Fd>r&t!Aq`a[;JO&imniun5q`Xg=q`Fd4o7A=48q;?3<2#>3&pmrr\ja5r\XL.r\=C+r\+7'r[n+#r[Rmrr[@anr[.UjrZqIfrZ_=bq]Pk[ +q]>_Wp`/rGjr4"6p`0/OrZ:qYrZM1`rZ_=drZqIhr[.Ulr[@apr[Rmtr[e%#r\+7)r\=C-r\OO1r\a[5 +r\sg9q`4X:q`=g@49.M=4o7G95Cl(j5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOZ9\(Iq`adT52#]<11B'$-0`*L%/H.1!.fLmr./kUn-N5=j,l8hc,5rbb+T!8X*r$c3*;(?L*r[8Y+T +4o7A=48q;?3W;#82uY`72?#H31]B0/1&`j*0)dI%/H.1!.fLmr./kUn-N5=j,lT%c,5rbb+T!8X*r?u3 +*;(?L*r[8Y+TZ73;tr83r;#<4Sq;: +54Ur.5_23"5kRA=557;<4Sq5;3W;#;2u>N42#B*.1&`m+0E*U'/cI=#/,h$t./kUk-Mo(f,Q8na+oWSb ++!:G'q]>VTg)Tc+rZ:qYrZM(]rZ_=drZqIhr[.Ulr[@Xmr[[t!r[n+%r\+7)q_J.-r\aR2r\sg9r]0s= +pcJI;q`X^Z73;tr83r;#<497T.rB9p>niq[jSNq`kJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp3&pmrq_nF2r\OF,r\4=)r\"1%r[e%!q^MLmr[7[lr[%Ohq]kt]q]PbXq]>2Hoc3NCq]>VVq]Pk] +rZ_4arZqIhr[.Ulr[@apr[Rmtr[dq!r\+7)r\=C-r\XL0q`"L6r]0j:r]C!>q`OsD55IJ65Cl)f5kRA: +557;?4Sq5>3r:r:3;tl92Z>T52#]<11B'$-0`Ea)0)dI%/,h$t.K1ap-iPIi-2o1h,Q8na+oT63W;):48V/; +4nq535Oh!i5lO%A5PRG;4oRS@48q;?3Vtf82uY`72?#H31]B0/1&`m+0E*U'/cI:".fLmr./kUn-N5=g +,lT%f,5rb`+93PZ+9!>M*VCEC*V^]Q+9!D^+oT52#]<11B'$-0`Ea) +0)dI%/,h$t.K1ap-iPIi-2o1h,Q8na+oT63W;):48V,@4[&a,pce75JO#bkJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rM&>3B@'ur\s^4q_\:.r\=C+r\+7'r[n+#r[[str[Igpq^;7erZq@crZ_4_q]PPRiu\(> +p`TGWrZ_4arZqIhr[.Ulq^DFmr[Rmtr[e%#r\+.&r\FI/r\XL0r\ja7r]'m;q`=U9q`Oa=!Br^D54q-k +5jL]+5PRG>4o7A=48q;?3Vtf82uY`72?#H31]B0/1&`m+0E*U'/cI=#/,h$t.K1ap-iPIl-2Ste,Pr\^ ++o+8?uU+oW\b,Prbc-2o7j-iPOn.K1gr/,h+!/cIC%0E*[)1&`s-1]B612>]<22uYf93W;): +48V/84nq565OLdf5lO%A5PRG;4o7A@48V)<3W;#82uY`72?#H31]B0/1&`m+0E*U$/H.0s.K1ap-iPIl +-2Ste,Q&_c,5rb_+S?i:*r$iS+S[,Z,5rhd,l8ne-N5Cl./k[p.fLst/H.7#0)dO'0`Eg+1B'*/2#]B3 +2Z>Z73;Y`83r;#94Sq;:54UqZ5_22%5k7/755RM?4Sq2?3WV9&r]0j8r\sg7r\a[3r\OO/r\=C+r\+7' +r[n+#r[[str[Igpr[7[lr[%FerZh:aq]YhZocN<;p`K8Rq]Yq_rZh:cr[%Ojr[7[nr[Igrr[[t!r[n+% +r\+7)r\=C-r\OO1r\aR2r\sg9r]0s=q`F[;r&t!Apce@8JO#YhJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,]601]B0/1&`m+0E*U'/cI=#/,h$t.K1ap-i57i-2Stb,Pr\X+m'p?+oT63W;):48V/94TIY?54Uph5ajrh +5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/ +rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5 +rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO$D(niue2q`Xg=q`=d=!BN:@3Vtf82uY`42>]3/1A`d)0E*U'/cI=#/,h$t.JkOm +-i57i-2Ste,PWJO+oWVT+o!8Y,Prb`-2o7j-i5=k.K1gr/,h+!/cIC%0E*[)1&`s-1]'$.2?#N52uYf6 +3W;):48qA;4o%8A54:^e5j1K+5Oq#;4nq/:48q;?3W;#82uY`72?#H31]B0/1&`m+0E*X(0)dI%/H.1! +.fLmr./PCk-Mo+g,l8h],4ZoS+S$]N,5WV^,l8ne-N5Cl./k[m.fLst/H.7#0)dO'0`Eg+1B'*/2#B00 +2Z>Z73;Y`83r;#<4SV)754:`(5_22t5kRA455m_?4Sq5;3W;#;2u>N42?#H31]B0/1&`m+0DdC$/Ggsp +.K1am-iPIj,lf7j,l8h],4ZoS+S$]N,5WV^,lT+e-N5Cl./k[p.fLst/H.6u0)dO'0`Eg(1]B612?#N5 +2u>T63Vtl748qA;4nq505KH*@5cI$A5Oq#;4nq,>48_2>3rV/=3;YZ62Z>T52#]<11B'$-0`*O&0)dI% +/H.1!.fLmr./PCk-Mo+g,l8h],4ZoS+S$]N,5WV^,l8ne-N5Cl./k[m.fLst/H.7#0)dO'0`Eg+1B'*/ +2#B002Z>Z73;Y`83r;#<4SV&?5!Jg,mlu@gRQuEhJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYpq`=^:q`+R6r\ja5 +r\XL.r\FI-r\4=)r\"1%r[dpsr[Rmrq^DFkq^21dq]tVTp`f8Rq]tq_r[.Lir[@apq^VRqr[e%#r\"1' +r\44(r\FI/r\XU3q_nF4r]'m;q`=U9q`Oa=pce75kWj\apd"L:ofi.6q`Oj>q`=^:r]'d6r\ja5r\XU1 +q_J%&r\+7'r[n+#r[[jqr[Igpq^2Ck-N,:g-2StY,PWJR,PWP]-2T%g-i5=k.K1go/,h+!/cIC%0E*[) +1&`s*1]B612?#N52u>T63Vtl:48:r84nq535Jf[:5bgU>5P7584oIJD4?WU)q`=^:q`+R6r\ja5r\XL. +r\FI-r\4=)r\"1%r[dpsr[Rmrq^DFkq^21dq]tVTp`f8Rq]tq_r[.Lir[@apq^VRqr[e%#r\"1'r\44( +r\FI/r\XU3q_nF4r]'m;q`=U9q`Oa=r'('Cniq[jPX'dbJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp5PRG84oRPD48_2> +3r:r:3;YZ62Z>T22#]<11B'$-0`Ea&0)dI%/Ggss.f1[o./PCe-JBdC-Mo1f./PIm.f1aq/H.7#0)I=$ +0`Eg+1A`m,2#]B32Z>Z43;Y`83rV5?4T7GA4SV)74oml4pHO3ofg,*mpceI9q`Oa;r]9p:r]'d6r\ja5 +r\XU1r\FI.r\=C+r\+7'q^qdur[[jqq^MLmq^;.cg*QVCq^;7hq^MLoq^_Xsr[n+%r\+.&r\=C-r\OO1 +q_e@2r\s^6r]0j:r]Bm;pc\C9ofqP'JO&lnofr48of`::q`F[9r]0j8r\s^4q_\:.r\FI-q_8"&r\"1% +q^h^sq^VRo!@TAp./PCe-JBdC-Mo1f./k[m.fLsq/Gh(!0E*[&1&Ed+2#]B02Z>Z43;tr83rV5<4SV)7 +54UqQ5_21q5k7/75578@4T%>=48q;<3W;#82uY`72?#H31]&s,1&`m+0E*U$/cI=#/,Lgn.K1am-ho%B +-2T%d-i5=h.K1go/,h+!/cIC%0DdI&1&`s-1]B6.2?#N52u>T63Vtl:48:r54o@MB54q-k5`n<_5_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO$2"mm$S2pc\RN42?#H01]&p+0`Ea&0)dI%/Ggsp.fLmo./51G +-M8b`./k[m.fLsq/H.7#0)I=$0`Eg(1B'*/2#]B32Z#H43;Y`83r;#64T7M74oml4pHO3ofg,*mpceI9 +pcSO;q`=^:q`+R6r\jX2r\XU1r\FI-q_8"&r\"("r[dpsq^VRoq^D4eh'VnEq^D=jq^VRqq^h^ur\"1' +q_8"(r\F@,r\XU3r\ja7q`+I5r]9pT6 +3Vtl748V/;4nV#05JKI75bgU85PRG;4TIV?4T7G>3rV/:3;tl92Z#B22#]<11B'$*0`Ea)0)I7"/Ggsp +.fLmo./51G-MStc./PIj.fLsq/H.7#0)dO$0`Eg+1A`m,2#]B32Z>Z43;Y`83r;#64T7M;55d\<5Cl(^ +5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/j +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOVEj]:pceI9rB1!?q`FdlJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpr]C*Aof`(6q*4gBJO%@Cofr+5pc\L:q`F[9r]0j8r\s^4r\aR0r\OO/q_A((q_.h! +q^q[rngiiPodfnjq^q[tr\+.&r\=:*q_S4.q_e@2r\s^6q`4X:q`FR8pc\C9niu"sJO&Qeofr48pc\L: +pcJI9q`4O5r\sg7q_e7-r\OO/q_A((q_.h!!A,o%/c.*l/*8>P/,h*p/c.1"0DdI&1&Ea'1]B612>]<2 +2u>T33W;):48V/54nq535Ij%15ajt25P72?4o%8<4Sq5;3rV/:3;tl62Z>T22#]<11A`g*0`*O#0)I6t +/Fk=R.eP=h/Gh$r0)dO$0`Eg(1A`m,2#B002Z>Z43;Y`83r;#64SV)755[Y>5Cl(X5_21O5_21r5lO+L +6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOTKr'4ofi=;r&sp>q`F[9r]0j8r\s^4r\aR0r\OF,q_A((q_.h!q^qIlj"'dRpauItpb2V#q_A(* +q_S++pbr+1q`+R8q`=U9pcSO=nilb3rBGiub!>M^pceI9pcSF8r]9p:q`+R6r\ja6r\aR0r\OF,r\=:( +q_.h!q^qIlj"'dRq^q[tq_.h#q_A(*r\OF.r\aI/r\sg9q`4O7q`FR8r]Tg9niu"sJO&Qeofr+5pc\C7 +q`FdRodotlq_%b!r\4+%q_S++r\aR2r\s^6q`4O7 +q`F[;q`XU9mm"?JJO#Yhniun5!'U-@pcSF8r]9p:q`+R6q_nF2q_\:.q_J.*q_7n#q_%atodo,Rodotl +q_%b!q_7n%r\FI/q_\:0pbr+1r]'d8q`=U9pcSO=nilt9pHO3oMa2hYJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpT22#B*+1B'$'0`*Nr0&S>V0).*s0`*U%1B'*,2#B002Z#H13;Y`83qtf6 +4SV)454^u=5Cl)?5k7/454q)94Sq5;3r:r:3;tl92uY`42>]6-1]B0,1&E["0D-sX/bLak0DdI#1&Ea* +1]'$+2?#N22u>T33W;)748V/;4n:f-5MSMT5jUc,5P7554o7A@48:l63W;#82uY`42>]6-1]B0,1&N^* +0_dU*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,JO%+;Wpb;Itq_J%)q_\1-q_nF4pc/.2q`=U9pcS=7pce75ej+dOks4]%pce@6r]L0Ar]L'>r]9p:q`+I3 +q_n=/q_\1+r%\7-pbDOth(SOWpbDY$q_S++q_e7/r\s^6pc8=7pcJ@8of`(6nis?DJO#Pemm$b7q*+R: +pcSF8r]9p:q`+I3q_n=/q_\1+q_Iq$oe>;Wpb;Itq_J%)q_\1-q_nF4pc/.2q`=U9pcS=7pce:6!'c$" +Jj=lPJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpT/2#B*(1AET[0_I0q1A`m)2#B0- +2Z#H13;Y`53qtf94SV)154Ur95_22<5jU`1557;94Sq5;3r:r:3W;#82u>N12>B$*1]&s&1"n>S1&*O$ +1]'$+2>]<22u#B03Vtl448qA;4n:f-5Lr)N5j:Q&5P7584nq/:48V)93Vtf52u>N12>]6+1B96.1AETX +0_I0q1A`m,2#&s*2Z>Z13;Y`83r;#<4T7GA4SV)454:_?5_21e5jU]855@D;4nq/:48V)63W;#82u>N1 +2>B$*1]&s&1"n>S1&*O$1]'$+2>]<22u#B03Vtl448qA;4n:f.56*p!5_;7P5_21O5bp[E6N0@L7/f^U +8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6 +roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5 +ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO#Pe +mm$b7q*+R:pcSF8pcAC7pc/.0q_n4,q_[t%d5(SToecY*q_n4.q`+I5q`=L6pcS=7ofhh/r'5fu]g2-Q +nilh3pcSF8q`=U7pc/.0q_n4,q_[t%e2$eTpb_k*q_n4.q`+I5q`=L6q`OX:nilM,ej+dOj$<0"nilh3 +q`OX8q`=U7q`+@0r\jO/r%nC1oeXuNpbV\%q_e7/pc&13pc844pcJ@8pc\13mm"$AJO#>_nim+lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpr]L'>q`=U7pc/.0pbqn)nhfJboecG$oeue.of2h/q`=L6q`OF4ofhh/ +q*9Kr\j5UHpce@6q`OX8r]C!&m,2u#B03VYZ448:r24nV#*5HR2%5`S,% +5P[P=54q)94S:f53r:r73;>H02YAru2!-Ue2#&s$2Z>Z13;>N23qtf64RtZ153tK75X9lcJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpH*2YArc2"EO$2YB$+3;>N23r;#<4T7G>4SV)153tN0 +5_2235jU`+557;94T7GA48:l33Vtf22u#<%2<-O^2>]<,2u#B-3Vtl748:r54mtT$5LVlK5i=oo5Oq#5 +4o7A:48:l63VYT22uGT12Y&`c2"EO!2Y]6+3;>N23r;#64SV)153Y;65_21\5kI;:5Oq#54nq/:48:l3 +3Vtf22u#<%2<-O^2>]<,2u#B-3Vtl748:r54mtT$564#7JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,Gp2Y]/r2YB$(3;>N/3qtf34S:l154:_Y5_22S5k7/154q)34Sq583qt`12utrsqD[Xsoel(opc%k* +pc8+1q`FI5pc\13mm!U5JO##VqEOd?mlpM0ofW+5pcA11pc/%-ju2ullo+Mqpc/%/pcA13pcS44ofhh/ +p-=0oJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp<(37Kn^3:]*)3qYT04SV).54UqV5_22P5jU`.54Ul34S:f53qbT43V>Ac +2uYf92u#B'3VYZ448qAA48V/54n:f*5Ft,k5_VK%5O^o154Ul34S:f53q><(37Kn^3:]*)3qYT04SV). +54Ur-5_21O5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOMa7#$o0;\-pc\:4pcJ.0ni=uTni?A(q`Fd>r]C!>nicY0lp'c# +JO$J*lp'r&pc\:4ofMh-ni=uTni?J+pcJ.2nicb3ks**OJO%gPlp'r&pc\:4ofMq0r&OC0c8bJWofDk0 +ofVn1ofhV)Sj7ilKg>T$n3?A*pc\:4ofMh-ni=uTni?J+pcJ.2nicb3ks+Z&JO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,5X3U]$%47t`/4n:f'5Nb:_5c?s75OUf24nUr.47>5[3U]$%47YN/4mtT$ +5J]U95gDX`5OUf/4nUr148_/33mftV3qYT-4S:l.53Y;$5_21O5l5[3U]$%47YN/ +4mtT$5OC^e5_21O5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1 +rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^ +rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOr'9L2ofhh-niZA&d5ph[r]L0Aq`O=1mlp)&iBVrZU-Rs- +pce.0ml^&#e2m%[ofVe.mlou#]0Lp4a?])Vofhh-ofW48r]C3C47kV^3q#0'4RtZ(53Y:s5_21O5k[J- +5PRG24mtN%44H=[47t`,4mtT!5Nb:_5_21O5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOr'9C/mlp;*niYqoofD>!r]L0A +ofVn1ks">riBVrZU-Rs-pceI:mlg>+i&g]pju`#oof_P'ks)dFJO%:Aks+W#nicS,!'K:'ofD4sniZJ+ +losPrPsBmcJO&ooks+W#mlg>+i&g]pju`#oof_P'ks+>rJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,*.48qA/46AZo4mYB!5M/5P5aan%5OUf)4m"lh46AZo4mtT!5I*P*5efSN5OUf&4TRZ-kWJ2nr]L0A +kreDtlosYuN'MqZJO&Tfks+W#mlfeqju_]fmlg,'ks+#iJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,)b4mtT!5L2TG5`e8%5PRJ352ABa4P`0h53Y;25_22/5jU`(54^r$4m>)b4mtSs5D)4P5_22]5j:N% +52ABa4P`0h53Y;^5_21O5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO&Kck!.cf^HL^Cj$1jTJO#;^niun6h*/\=k!%]f +WBc#"[Qs(Aj?EN+^HL^Ci'2iZJO"cOj?Vroh*/\=k!%]feNe[NJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYprn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO%jQf0@#6h*8J9JO"cOr]o("_EQ[U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, +_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO`^#\OX$D5$JO&QeP!=XcJO#A` +n3<[4JO&*XJO"cO^d+&IYslJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOW'JWmNBi%[JO%LGc9HkFkU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO&0ZW]u&"pcsBqJO&-YW]u&"q*9KrL-YZ$YU*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOp-@P#blJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYprn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cON^35$n3>_mh*'7Oj$0A* +JO#2[ofqn0h*0XXe3;nWVEf\tZU!Y;l9=`%h*'7Oj$/)[!'l*#JO&0Zj$2?`h*'7Oj$1sWJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,'5eKAK5NtB'4nLnb4Q\fq53"ka5_21O5jCW$5NY/l4k)UV4mtSp5MJGS5_21O +5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/ +rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5 +rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO#knlp(5.n36V1juh-Tloai%losPr[m5L0T0Va-pce.1pc[b%e3!"Znic>'k!-@@ +JO%1>lp'Vrpc\=5pH8F:r]Jmrr]L0Aloar(ks"5oP!FR`JO&fllp'Vrpc[b%e3!"Znic>'k!.olJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,<#4mtT$5IWn/5bC=.5PRG;54:Z*4MNuH4RYH%53tMD +5_22>5jpr+54:Z+49.LV47><&4mYB!5E\9_5_22l5jU`(54:Z*4MNuH4RYH%53tMp5_21O5_21O5_21r +5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOWBff7mlg_7n3-G,niO]LofM_,nicP-lp&'HJO$/!lp'r&mlg>+niO]LofM_,nicP-lp&*I +JO%LGlp'r&nicP+q)eO:_E.6LofV\+nilD)PsBmcJO',ulp'r&mlg>+niO]LofM_,nicP-lp'YuJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,H(48:r54mtT!5Joa;5c[0:5O:T24nUr1 +47YH$3T`H(48:r54mtT!5K#g<5g_j`5OUf24nUr148Cr93q#)k3:Alu3qtf94T7G;4SV).53Y;' +5_21O5QO,8lp'i#q`XU7ofM_*mlBMimlC&%niQV/pc\(0ks+Z&JO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,ofW"2ofDb+a>irTofDb-ofVn1 +mlp;,`'Al=d6R7enilV-pcS42pcA=5pGp;Spc8+1niQM,pc\(0mm!C/JO"cO!C/p@5OUf/4nUr447tZ- +3QO2T3V>H+47t`/4mtT*5O^ph5_21O5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(D +rc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BD +qu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLF +ra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO$M+lp(/,of`79r&jX6pcA11pc.Cppbq@q +of2_,pcA13pcS=7mlp)&aZtDBYs@Y?ofi%3r]L'?ofMq0pc8+/ju<&nkr88ppc8+1pcJ75pc\(0lp&WX +JO%gPmm$A,of`(4pcJ73pc873qDd^upbq@qof2_,ofDk0pcS=7mlp)&Ud0JrKg>T$n3?S0of`(4ofMq0 +pc8+/ju<&nkr88ppc8+1pcJ75pc\(0lp(2/JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,B*)2u#B-3VYZ148:r54mtT*5KlBD5dWfI5OUf24nq/748:l63VYT/2t])Y2>B*)2u#B- +3VYZ148:r54mtT*5KuHE5h\Ko5OUf54nUr748:l33Vtf32uP].2V0hZ2Y]6+3;Y`23r;#<4T7G>4SV). +54:_65_21V5l*_@5OUf24nq/748:l63VYT/2t])Y2>B*)2u#B-3VYZ148:r54mtT*5P[Qq5_21O5_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO$V.niue2nick4rB'p=q`=L4q`+@0pbqRujtuNaq_n4.pc/.2pcA:6pcS=7mlp;,bWp_E +Zp=1Hofhq0q`Oj>q`F[9pc842pc%t+mks5amksu#pc%t-q`4F4q`FR8pc\(0nitAaJO%pSofr"2of`17 +ofN%3pc842q`"F2rAO+%j#$U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,N+2>B#X1\`g%2>B*,2u>T33VYZ447t`24nq5-5LMfJ5e95O5Oq#54nq/748V)93Vtf2 +2u>N+2>B#X1\`g%2>B*,2u>T33VYZ447t`24nq5-5LVlK5i=ou5P7554nq/:48:l63Vtf52u#oE* +1tjbb2#]<+2#B0*2Z#H.3;Y`53qtf34SV)453tM95_21\5kI8A5rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO^-M6Rnilq6pcS=5q`4^; +r&Oa9pc&(.q_e7-pbVRug+i@XpbVe(q_e7/q`":0q`4O7q`FR8q`XC3nitYiJO$n6niu\/q`X^:pcJ@6 +q`4X8pc&(.q_e7-pbVRug+i@XpbVe(q_e7/q`":0q`4O7q`FR8q`XC3nit\jJO&6\ofqn/q`X^:q`F[9 +pc8=5q`":.q_e7-!AcP.1\ENW1&*O$1\`g(2>]T33VYZ448:r84n:f*5HmD(5`n>&56*n=55RM< +4SV#83r:r:3;>H02Z#B/2#&m"1>4JX1AE[&2#B0-2Z#H.3;Y`53r;#64Sq;154^u=5Cl(O5_21O5_21r +5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cO^-M6RpceI9pcS=5q`=[9!BE1>3;YZ32Z#B,2#B*(1@d0^0_I0q1AE[&2#B0-2Z>Z13;Y`5 +3r;#64SV)454Uqg5_2265k7/7557;94SV#83rV/=3W;#82u>N12>B$*1\``r1$11_1&*O!1]'$+2>]<2 +2u#B03Vtl748:r54nV#05Lr)N5iY-&5P7584nq/:48:l63W;#82u>N12>]6+1B96+1A*B^0_I0q1AE[) +2#&s-2Z#H.3;Y`83r;#34SV)454UqB5_21_5k7,>55@D;4nq/748V)93W;#82u>N12>B$*1\``r1$11_ +1&*O!1]'$+2>]<22u#B03Vtl748:r54nV#156*p!5_;7P5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u +=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_ +rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4 +rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%.=niu\/pc\L:q`F[9 +q`4U7!B<(<2u>N12>]6-1]&s)1%d6q0BOn^0DI6r1&Ea'1]B6.2>]T63Vtl448V/84nV#-5MJGS +5f5kX5Oq#54o7A=48V)93W;#;3;tl62Z#B/2#B*+1A`g!0_d<`0).*p0_dC"1A`m,2#B0-2Z#H13;tr8 +3qtf64SV)454:_k5_22b5k7/4557;<4SV#83r:r73;tl62Z>T22#&m(1''*arA"1'r\+7)pb1kaoe6(o +q_@k$r\OF.q_e@2q`":0r]0j:pcJI;of_t3mm"6GJO#Peniut7q*+R:q`Oa;q`=U7q`+R6q_n=/q_\1+ +q_J%'oe?.ojt?E^pb;Itq_J%)r\XL0q_n=1q`+R8q`=L6q`OX:ofi(6qEKNrLd6MVJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp]55m_?4Sq5;3r:r73;YZ62Z>T22#B*.1A`g$0`Ea#0(ggY/GLgl0)I=!0`*U%1B'*, +2#]B02Z#H43;Y`53r;#64Sq;455[Y>5Cl(X5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOa$B2[pceI9pcSF8q`=^:q`+R6 +rAF[72Z>T22#]<.1A`g'0`*O&0).$k/ESJX/GLgo0)I=$0`*U%1A`m,2#B002Z#H13;tr83r;#64SV)7 +54Uqp5_22?5k7/7557;94Sq5;3rV/:3;tl92Z>W62>]601]&s)1&E[%0E*U!/bL[W/,1[j/c.0t0E*[& +1&Ea'1]B6.2?#N22u>T63Vtl748:r54nq535Mn_W5jUc/5PRG;4nUr748q;<3Vtf82u>N42>]601]&s, +1&E[%0**[Xr@[jsodo5Upal:opb)Fsr\44(r\F@,q_\1-r\ja7q`+I5q`=U9q`OX:ofhq2\Nk^2RR$F. +pc\[@q*"L8q`F[9r]0j8r\s^4r\aR0r\OF,q_@t%q_.q$pau.ijt$3Xpau@qq_.q&q_@t'q_S4.q_e@2 +q`"C3r]0j:q`FR8pc\C9r'0p?JO#,YJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO%IFofr"2r]U$=q`Fd]<22u>T63Vtl:48:r84n:f05NG(\5g2Ld5Oq#;4nq/:48q;<3W;#8 +2uY`42?#H31]B0,1&`m(0E*U'/c.*u/,Lgn.J5+I-ho+e.JkUl/,h*s/cIC%0DdI&1&`s*1]B612>]<2 +2u>T63Vtl:48:r84n:f05NP.]5k7255Oq#;4nq/:48q;<3W;#82uY`72>]601]B0/1&E[(0DdC$/c.*u +.fh+Lr@7[npaFrGpaH+jpaZ.kr[e%#q_%k$q_7n&q_S4.r\a[5r\s^6q`4X:r]Bd8q`XU9nislSJO#kn +ofr"2r]L6Dq)nO9r]9p:r]'d6r\jX2r\XU1r\F@*r\44&r\"1%q^h^sq^VIlodJ`GpaH"gq^VInr[dpu +r\"1'q_8"(r\F@,r\XU3q_nF4q`+R8q`=^lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpqeq^MClr[[jsr[n+%r\+7)q_A(*q_S4.r\a[5 +r\s^6r]0j:q`F[;pc\:6ofqP'JO&ckpcnF8q`XU7r]C*?q`4X8q`"L4q_e@0r\OF,q_8"&r\"("r[dps +r[Ipt.K(^m..ntG-MStf./57g.fLst/Gh$r0E*[)1&Ea*1]'$.2?#N52u>T63Vtl748V/84nV#35JKI7 +5bLC85PRG;4TIV?4T7G>3r:r:3;tl92Z#B22#B*.1B'$-0`Ea&0)dI"/H.0s.fLml./51J-MStc./PIj +.fLsq/H.7#0)dO'0`*U(1A`m,2#]B32Z>Z43;tr83r;#94SV)855d\<5Cl(^5_21O5_21r5lO+L6i0:N +8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +cp77gofi79q`Oa;q`=^:q`+R6r\ja5q_\:.r\=I.!AQ>.0`*O&0)dI%/H.0s.fLmo./PCh-M8\I,kr\\ +-Mo1i./PIm.fLst/Gh$u0)dO'0`Eg(1B'*/2#]B32Z#H43;Y`83r;#94SV)754Ur$5_22H5kRA755RM? +4Sq5;3rV/:3;tl92Z>T22#]<11B'$-0`*O&0)dI%/H.0s.fLmo./PCh-M8\I,kr\\-Mo1i./PIm.fLst +/Gh$u0)dO'0`Eg(1B'*/2#]B32Z#H43;Y`83r;#94SV)754Ur%5_22n5kRA:557;<4Sq5;3rV/=3;YZ6 +2Z>T52#B*.1B'$-0`Ea&0)I4!/,h$q.JtRo./kUh-MSnI,kr\_-Mo1f./PIm.fLst/H.6u0)dO'0`Eg+ +1A`m,2#]B32Z>Z43;tr83r;#<4SV)454UqT5_21q5kRA755RMA497Q,q`F[9r]0j8r\sg7r\aR0r\OO/ +r\=C+q_.q$r[n+#r[[jqr[I^mq^;7fod/`Gpa,\^q^;@kq^MLor[[t!q^qe"r\+7)r\=:*r\OO1r\a[5 +q`"L6q`4X:q`F[;pc\O=rBBd:JO#GbJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,3r:r:3;YZ62Z>T5 +2#]<11B'$-0Eq`XU9ofqV)JO%aNniue2q`Xg=q`Fdq`XU9ofqY*JO')tniue2q`Xg=q`FdZ73;Y`83rV594T7M754q.W5_22"5k7/455RM?49.J@48q;<3W;#82uY`72?#H31]B0/1&`m+ +0E*U$/cI=#/,h$t.JkOm-i57i-28b_,MaR=,Prb`-2o7g-iPOn.K1go/,h+!/cIC%0E*[)1&`s-1]B6. +2?#N52u>T63Vtl:48V/;4o@M?54q-k5a4Nb5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%dOniun5q`X^:r]C!Z43;tr83r;#94SV)7557A*5_22N5k7/755RM<4T7G>3rV/=3;YZ6 +2Z>T52#]<.1B'!,0E*X(0)dI%/H.1!.fLmr./PCk-Mo+d,l8h],3'jA,5WV^,l8ne-Mo1i./k[m.fLst +/H.7#0)dO'0`Eg+1B'*/2#]B32Z>Z43;tr83r;#94SV)7557A+5_22t5k7/755RM<4T7GA3r:r:3;YZ6 +2Z>T52#]<11B'$-0`Ea&0)I4!/,h$t.K1ap-i57i,lo8:qBYq_p`e`Ap`fS[q]u.eq^21fr[@apr[Rmt +r[e%#q_%k$r\4=+q_S4.r\a[5r\s^6r]0j:q`F[;pc\C9pclV\JO$2"niun5q`X^:!':3C48V)<3W;#8 +2uY`72?#H31]&s,0`*O&0)dI%/H.1!.fLmr./PCk-Mo+d,l8h],3'jA,5WV^,l8ne-Mo1i./k[m.fLst +/H.7#0)dO'0`Eg+1B'*/2#]B32Z>Z43;tr83r;#94S_,?4nq595Cl(a5_21O5_21r5lO+L6i0:N8,c'Y +9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOej/mm +pceI9q`Oa;r]9p:r]'m9r\ja5r\XU1r\FI-r\4=)r[n1&!A,o&/H.1!.fLmo./kUn-N5=g,lT%c,5<>V ++Qad@+T!>Z,5WVa,lT+e-N5Cl./k[p.fLst/H.7#0)dO'0`Eg+1B'*/2#]B32Z#H43;Y`83r;#94Sq;7 +54q/-5_22N5kRA:557;<4Sq5>3r:r:3;tl92Z>T52#]<11B'$-0`Ea)0)dI%/H.1!.fLmo./kUn-N5=g +,lT%c,5<>V+Qad@+T!>Z,5WVa,lT+e-N5Cl./k[p.fLst/H.7#0)dO'0`Eg+1B'*/2#]B32Z#H43;Y`8 +3r;#94Sq;754q/.5_22t5kRA:55RM?4Sq5;3rV/=3;YZ62Z>T52#]<11B'$-0`Ea)0)dI%/H.1!.fLmr +./PCh-2Sqg,9m15q]bn\ocWTCrZM1^q]PYWq]bn^rZqIhr[.Ulq^DFmr[Rmtr[e%#r\"1'r\4=+r\FI/ +r\XU3r\ja7q`+R8q`=U9r]Ks=pce75a?Y;AWBg,@pceI9q`Og=!BWCB3r:r:3;tl92Z>T52#]<11B'$- +0`Ea)0)dI%/H.1!.fLmo./kUn-N5=g,lT%c,5<>V+Qad@+T!>Z,5WVa,lT+e-N5Cl./k[p.fLst/H.7# +0)dO'0`Eg+1B'*/2#]B32Z#H43;Y`83r;#94T%>B4nV#35Cl(g5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOfg,3pofi79 +q`Oj>q`=^:r]'d6r\ja5r\XU1r\FI-r\4=)r[n+#!%S(#/,h$t.K1ap-i57i-2o1h,Pr\a+o!2W+8?oA +*VCKN+8[2[+oZ73;tr83rV594Sq;: +54q/-5_22Q5kRA755RM?4T7G>3rV/=3;YZ62Z>T52#]<11B'$-0`Ea)/cI=#/,h$t.K1ap-i57i-2o1h +,Pr\a+o!2W+8?oA*VCKN+8[2[+oZ7 +3;tr83rV594Sq;:54q/.5_23"5kRA755RM?4T7G>3rV/=3;YZ32>]3/1B'!,0E*U'/cI=#/,h$t.K1ap +-iPIl-2Ste,Q8nb+TN\_+T!8R*pF^?*r@&S+T]<22uYf93Vtl:48:r;4nV#35KH*@5cd6D5P75;4o7A@48h2@3]d7#r]'d6r\ja5r\XU1r\FI-r\4=) +r[n+#r[[str[Igpr[7Rir[%OhrZh:arZV%Zq]GSSkoKF_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%mRpcn=5 +r]U-@q`F[9r]0s;r\sg7r\a[3r\OO/r\=C+r\+7'r[n+#!%S(#/,h$t.K1ap-iPIl-2o1h,Pr\a+oZ43;tr; +3r;#94Sq;:54q/-5_22Q5kmS755m_B4Sq5;3rV/=3;tl92Z>T52#]<11B'$-0`Ea)0)dI%/H.1!.fLmr +./kUn-N5=j,lT%c,5rb_+T!8X*q(-E*:b-I*r@&V+T!>],5rhd,lT+e-N5Cl./k[p.fLst/H.7#0E*[) +1&`s-1]B612?#N52u>T63W;):48V/;4nq565OLdf5lO%D5P75;4o7A=48q;?3Vtf82uY`72?#H31]B0/ +1&`m+0E*U'/H.0s.fLjn-i54h,lT%c,5r_d+T52#]<11B'$-0`Ea)0)dI%/H.1!.fLmr./kUn-N5=j,lT%c,5rb_+T!8X*q(-E*:b-I +*r@&V+T!>],5rhd,lT+e-N5Cl./k[p.fLst/H.7#0E*[)1&`s-1]B612?#N52u>T63W;):48V,@4[&a, +pce@8JO#YhJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3r:r:3;tl92Z>T52#]<11B'$-0`Ea)0)dI% +/,h!u.01kHr[@anr[.UjrZqIfrZ_4_rZM([q]>VToc3*5oc3iLq]>_YrZM(]rZ_=drZqIhr[.Ulr[@ap +r[Rmtr[e%#r\"1'r\=C-r\OO1r\a[5r\sg9q`4X:q`Fd>pc\C9ofqq2JO%jQpcnO;pc\U=q`FdVToc3*5oc3iLq]>_Y +rZM(]rZ_=drZqIhr[.Ulr[@apr[Rmtr[e%#r\"1'r\=C-r\OO1r\a[5r\sg9q`4X:q`Fd>pc\C9ofqt3 +JO'3"pcnO;pc\U=q`Fdpc\C9ofpVbJO$;%pcnO;pc\U=q`Fd],5rhd,lT+h +-N5Cl./k[p.fLst/H.7#0)dO'1&`s-1]B612?#N52uYf63W;):48q>C4[&X)pce@8JO#bkJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T52#]<11B'$-0`Ea)/cI=#/,h$t.0(as-n,'Ar[%Oh +rZh:arZV7`rZD+\q]5PRp`&Z?p_iN=q]#DPq]5YWrZD"[rZV7brZhCfr[%Ojr[7[nr[Igsr[e%#r\"1' +r\4=,r\OO1r\a[5r\sg9q`4X:r]Bm;r]Tp_YrZM(]rZ_=drZq@fr[7[or[Rmtr[e%#r\"1'r\=C-r\OO1r\a[5r\sg9q`4X: +r]C!>q`XU9pclqeJO$M+ofr48pc\L:r]C!Y*W$iO)t+^?)=JL@)uCWP*W@,Z+8[2[+oW\b,Q8tf-2o7j-iPOn.K1js +/H.7#0)dO'0`Ej,1]B612?#N52uYf63W;)=48_5>4T7M:557?n5b1/k5_21O5bp[E6N0@L7/f^U8H)6\ +:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.E +rpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mm +rgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&*Xofr48 +pc\U=q`FdY +*W$iR)u(?-)>G-F)u^iS*W@,W+9!D^+oW\b,Q8tf-2o7j./k[p.fLst/H.7#0E*[)1&`s-1]B612?#N5 +2uYf93W;):48V/;4nq595O^ph5i+d!5PRG;4oRS@48q;?3Vtf82uY`72?#H31]B0/0`Ea)0)dI%/H.1! +.K1ap-iPIl-2o1h,Q8nd+oWV`+9!>Y*W$iR)u(?-)>G-F)u^iS*W@,W+9!D^+oW\b,Q8tf-2o7j./k[p +.fLst/H.7#0E*[)1&`s-1]B612?#N52uYf93W;):48V/;4nq595Oh!l5kmS=557;<4T7G>3rV/=3;YZ6 +2?#H31]B0/1&`m+0E*U'/H.1!.fLmr./kUn-N5:f,Q8k`+TG-I)uCWS*W$oW ++8[2X,5rhd-2o7j-iPOn.K1gr/,h+!/cIF&0`Eg+1]'$.2Z>Z43;tr;3r;#94Sq;:557@c5_22+5kRA: +557;?4Sq5>3rV/<2utuur\sg7r\a[3r\OO/r\4=)r\"1%r[e%!r[Igpr[7[lr[%OhrZhCdrZV7`rZD+\ +q]5PRq]#;Kh&5u+p`'2Pq]5YWq]Ge[rZV7brZhCfr[%Ojr[@apr[Rmtr[e%#r\+7)r\=C-r\OO1r\a[5 +r\sg9r]0s=q`=g@4T.D>4nq595Cl(j5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOha$j!pceRq`=^:r]'m9r\ja5 +r\XU1r\=C+r\+7'r[n+"r[Rmrr[@am!$qXl-2o1h,Q8nd+oWV`+9!>Y*W@&U)uCQK):TN#)>b?L)u^iS +*W@,Z+9!D^+oW\b,Q8tf-2o7j-iPRo.fLst/H.:$0E*[)1&`s-1]B922Z>Z43;tr;3r;#<4SV)754q/6 +5_22W5kRA:55RM?4T7G>3rV/=3;tl92Z>T52#]<11&`m+0E*U'/cI:".fLmr./kRm-2o1h,Q8nd+oWV` ++9!>Y*W@&U)uCQK):TN#)>b?L)u^iS*W@,Z+9!D^+oW\b,Q8tf-2o7j-iPRo.fLst/H.:$0E*[)1&`s- +1]B922Z>Z43;tr;3r;#<4SV)754q/75_MDt5PRG;4o7A@48q;<3W;#;2uY`42#]<11&`m+0E*R&/H.1! +.fLmr./kRm-2o1h,Q8nd+oWV`+9!>Y*W@&V)ZUiS)Yb3%)#,!G)Z(KQ*<$uU*r[8\+TZ73;Y`83rV5<4Sq;:54Uqc5_22+5kRA:55RM?4T7G>3rV/= +2ukl<2`L^or\a[3r\OO.r\4=)r\"1%r[[str[Igpr[.UjrZqIfrZ_=brZM1^rZ:qWrZ(eSq\o5Ie/8'# +q\o>NrZ(eUrZ;%\rZM1`rZ_=drZqIhr[.Ulr[Igrr[[t!r\"1'r\4=+r\FI/r\a[5r\s^6r]0s=r&Xm? +r]Ks=pce@8JO#tqJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T52#]<11B'!,0E*U' +/H.1!.fLmr./kRm,lf1k,UE@6rZ_=brZM1^rZ;%ZrZ(eSrYkYOobdH?mhY@.p_`lGq\oGQq],SUrZ;%\ +rZM1`rZ_=er[%Ojr[7[nr[Igsr[e%#r\+7)r\=C-r\OO1r\ja7q`+R8r]:$?q`Oa=pce@8p-=0oiB['# +pceRq`=^:r]'m9r\ja5r\XU1r\FI,r\+7'r[e%!r[Rmrr[@amr[%OhrZhCdrZV7`rZD+\rZ1tX +q]#MQq\f&Dp_WB7mhba9q\f8LrYt_SrZ1tZrZD+^rZV7brZqIhr[.Ulr[@apr[[t!r[n+&r\4=+r\FI/ +r\XU4r\s^6r]0s=r]C!>q`X^r]9p:r]'m9r\ja5r\XU1r\FI,r\+7'r[e%! +r[Rmqr[7[lr[%OhrZhCcrZM1^rZ:qWrZ(eSrYbeT)>tHM)#b?N)#+p9(@N(:)#,!J)Z(KQ*;^cR+9!D^ +,5rhd,lT+h-N5Cl.K1gr/,h+!0)dO'0`Eg+1]B612?#N52u>T33rV5<4T7M:54q.f5_22.5kRA:55RM? +4T7G>3rV/=3;ti:2?>]or\a[3r\OO/r\4=)r\"1$r[[str[Igpr[.UjrZqIfrZ_=brZM1^rZ;%ZrZ(eS +rYkYOobdH?mhY@.p_`lGq\oGQq],SUrZ;%\rZM1`rZ_=er[%Ojr[7[nr[Igsr[e%#r\+7)r\=C-r\OO1 +r\ja7q`+R8r]1'A3rhA>4Sq;:54q-k5bgSq5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&3[ofr=;pc\L:r]C*?q`4X8r\sg7 +r\a[2r\FI-r\4=)r[n+#r[[ssr[@anr[%Lg!@/ri,5rbb+TZ73;tr;3r;#94T7M= +54q/65_22Z5kRA=557;<4T7GA3r:r:3;tl92Z>T51]B0/1&`m+0E*R&/H.1!.K1ap-iPFk,lT(g,5rbb ++TZ73;tr;3r;#94T7M=54q/75_hVt5PmY>4o7A@48q;?3W;#82uY`72#]<11B'$- +0E*U'/cI:".fLmr./kRm-2o1h,Q8na+T]or\a[2r\FI-r\4=)r[n+#r[[ssr[@anr[%FerZ_=brZM1^rZ;%ZrZ(eS +rYkYOq\\uBg(sH"q\]2Jq\oGQrZ(nXq]>_YrZV7brZhCfr[%Ojr[@apr[Rmur[n+%r\4=+r\FI/r\XU3 +r\ja7r]'m;r]1'A48h8<4T7M=54q-k5bgSq5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&3[ofr=;q`Xg=q`Fd\*W@&X)uCQQ)>b9J(\ecq(&JdA +(]G9K)?(QR)u^iS*W@,Z+9!D^+oW_c,lT+h-iPOn.K1gr/,h."0E*[)1&`s-1]B922Z>Z73;Y`83r;#< +4Sq;:557A95_22Z5kRA=55RM?4Sq5>3rV/=3;tl92Z>T52#]<11B'!,0E*U'/H.1!.fLjq-iPIl,lT%f +,5rbb+T4nq595PIEu5kRA=55RM?4T7G>3r:o92uY`72?#H3 +1B'$-0`E^(/cI=#.fLmr./kRm-2o1h,Q8nd+Tk],Q8tf-2o:k./k[p/,h+!/cIF&0`Eg+1]B612?#N52uYf93Vtl:48V/;4nq595LD`I +5d`lM5PmYA4o7A=48q;?3W;#;2uY]82$#Qlr\XU1r\FI,r\+7'r[e%!r[Rmqr[7[lrZqIfrZ_=brZM1^ +rZ;%ZrZ(nVq\oGOq\]2Hp_M?oq\JrCrYYMMrYkbTrZ(eUrZ;%\rZM1`rZhCfr[%Okr[@apr[Rmtr[n+& +r\4=+r\FI/r\a[5r\sg9q`+[<3WM5<48qA>4nq595Cl(p5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/j +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOi^!9'pceR +r]:$=r]'m9r\ja5r\XU1r\FI-r\+7'r[n+"r[Igpr[7[krZqIfrZV=c!?iWc+9!>\*W@&U)u^cT)>b9M +(\ed@("Z73;tr;3r;#94T7M=54q/95_22Z5kmS=55RM?4T7GA3rV/=3;tl92Z>T52#]<11B'$-0E*U'/cI:" +.K1ap-iPFk,lT%f,5rbb+9!>\*W@&U)u^cT)>b9M(\ed@("Z73;tr;3r;#94T7M=54q/:5_hW"5PRGA4o7A= +48q;?3W;#;2uY`72?#H31]B-.0`Ea)/cI=#/,h!s./kUn-2o1h,Q8kc+Tq\T5KrYb\Rq]#MSrZ1kXrZM1arZhCfr[.Ulr[@aqr[[t!r\"1'r\4=,r\OO1r\a[5 +r\sg9r]0s=q`Fd>q`X^U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T52#]<11&`m+0E*R&/H.-u.K1ap-N5=j,lT"e ++TNVc+<^Y*rZ;%ZrZ(nVrYkbRq\];Kq\Ji>ob?j.lkK40q\K&FrYYVPrYkYQrZ(eVrZD+_rZ_=dr[%Oj +r[7[or[Rmtr[n+%r\+7*r\FI/r\XU3r\sg9q`4X:r]C!>q`X^JO&0ZpcnX>pc\U=q`Fdob?j. +lkK40q\K&FrYYVPrYkYQrZ(eVrZD+_rZ_=dr[%Ojr[7[or[Rmtr[n+%r\+7*r\FI/r\XU3r\sg9q`4X: +r]C!>q`X^q`=^:r]'m9r\jX1r\OO.r\4=)r[n+"r[Rmqr[7[lrZqIfrZ_4^ +rZD+[q],JOrYbSMrYPJJ!#G5Bob?j.lkK40rYGAIq\];MrYkbTq],SVrZD+^rZV7brZhCgr[.Ulr[Igr +r[[t"r\"1(r\=C-r\XU3r\ja7r]'d8q`F[;q`X^pc\U=q`Fd_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&3[q`jj>q`Xg=r]C*?r]0s;r\sg7r\a[3r\OO/r\4=)r\"1$ +r[[ssr[@anr[%OhrZhCcrZD1_!?WE_*r[2Z*<$oV)ZCWR)#G-K(AJX;'\!fh'`/XB(B,-L)#bEM)ZC]T +*<$uX*r[;]+oW\b,Q8tf-N5Cl./k^q/H.7#0E*[)1&a!.2#]B32Z>Z73;tr;3r;#<4Sq;:557A<5_22Z +5l3e@55RM?4T7GA3rV/=3;tl92Z>T52#]<11B'!,0E*U'/H.1!.K1ap-iPFk,lT%f+oWV`+9!>\*W@&X +)u^cT)?(KM(]G3F(%i9j'D3(:(&JdG(]G9N)>b?O)u^iV*W@,Z+T4nq595PdX&5kmS@557;?4Sq5>3rV/=3;tl92Z>T52#]<11B'!, +0E*U'/H.-u.K1ap-N5=j,Q8nd+oWV`+9!>\*;^]P)?(KM(]G3J(&\mE'`JdF'\!fh'`JjB(B,-L)#bEP +)Z(KQ*W@,Z+9!D^+oW\b,lT+h-N5Fm.K1gr/H.:$0E*[)1B'*/2#]B32Z>Z73;tr;3rV5<4Sq;:557@l +5_22.5l3e@55RM?4T7GA3rV/=3;tl92Z>T51]T<41Gf"cr\4=)r\"1$r[[ssr[@anr[%OhrZhCcrZM1^ +rZ;%ZrZ(nVrYkbRrYYMKrYG8Dob>mhob@9_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&Eaofr48 +q`Xp@r]C!]?33;tr;3rV5<4Sq;=557A<5_22`5kRA:55RMB4T7G>3rV/=3;tl92Z>Q41]B0/1&`j*0)dI% +/,h$t./kRm-2o1h,5rbb+T'_i?k')3.8'`/XB(B,-L)#bEP)ZC]T*<$uX +*r[8\+oW\b,Q9"g-N5Cl.K1js/H.7#0E*[)1B'*/2#]B02uYf93W;)=48V/;4o7G<5PdX)5kmS=557;? +4T7GA3r:r:3;ti82?#H31]B0/1&`j*0)dF$/,h!s./kRm-2o.g,5rbb+T4nq595L_rL5eB;S5PRG>4oRSC48V)<3W;#;2uY`72#]921''-cr\=C*r\"1% +r[[str[@amr[%OhrZ_=brZM1]rZ1tXq]#MQq\];KrYGAGob@07e.VNip_rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOkWnf*pce[?q`Oj>r]9p:r]'m8r\a[3r\OO/r\=C*r\"1$r[Rmrr[@amr[%OgrZ_=b +rZD+\!$)(\*W@&X)u^cT)?(KP(],!F(&J^?'@%6`'DN:@(&JdG(]G9N)?(QR)u^iV*W@,Z+9!D^,5rhd +,lT.i-iPRo.fLst/cIF&0`Eg+1]B612?#N52uYf93W;)=48V/;4o7G<5P[Qq5j(E*5PRGA4o7A@48q;< +3W;#;2Z>T52#]<11B'$-0E*U'/H.-u.K1ap-N5=j,Q8nd+oWS_*r[2Z*<$oV)ZCWR)#b?K(AejD'_i?e +'(lq5'`JjE(B,-L)#bEP)ZC]T*<$uX*r[8\+TZ7 +3;tr;3rV5<4Sq;=557A=5`J&(5PRG>4o7A@48q;?3W;#;2uY`72?#H31]B0/0`E^(/cI=#.fLmr-iPIl +,lT%f+oWV`+9!>\*W@&U)ZCWR)#b?N(AJXB'EAjB'@%6`'DN:@(&JdG(]G9N)?(QR)u^iV*W@,Z+9!D^ +,5rhd,lT.i-iPRo/,h+!/cIF&0`Eg+1]B612>]?33;tr;3rV5<4Sq;=557@l5_2245kRA:55m_B4T7GA +3r:r:3;ti82?#H31B9021,Ah`r\+7'r[e$ur[Igpr[.UjrZhCdrZV7_rZ;%ZrZ(nVrYkbRrYYVNq\K&D +q\8f=c4]d`p_<]Bq\K/IrYYVPrYkbTrZ(nXrZ;%\rZM1arZhCfr[.Ulr[Igrr[[t"r\+7)r\=C.r\XU3 +r\ja7!B<%=3;tr;3rV5<4Sq;=557?n5c-et5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&Eaofr=;q`Xp@q`Fd4nq5<5P[Qq5j(E*5PmYA4oRS@48q;?3W;#;2uY`72?#H31B'$-0`E^(/cI:".K1ap-iPFk +,lT"e+oWV`*r[2Z*<$oV)ZCWR)#G-K(AejD'`/R:'&=/g')3.;'`/XE(B,-L)#bEP)ZC]T*<$uX*r[8\ ++oW\b,Q9"g-N5Fm.K1gr/H.:$0E*^*1B'*/2#]E42uYf63W;)=48qA>4nq5<5PdX)5kmS=55RMB4T7G> +3rV/=3;tl62?#E21B'$-0E*U'/H.1!.K1ap-iPCj,Q8nd+Te3JRM]0Q$Rq`am?r]L'>r]:$=r]'m9r\ja5r\XU0!&4L/1&`m+0)dI%/,h!s +./kUn-2o1h,5rbb+TW93&gmtq`4X:r]C*Aq`X^lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3rV,92uY]62#]<11&`m+0E*O%/,h$t./kUn-2o1h,5rbb ++T_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&EapcnX>q`Xg=r]C*?r]0s;r\sg7r\a[3r\OO. +r\4=(r[n+#r[Rmqr[7[krZhCdrZV7_rZ;%ZrYtnW!?3!W)ZCWR)#b?N(B,'G'_i@:'(6Fp&FU5+')N@> +'`JjE(B,-L)#bEP)ZC]T*<%#Y+9!D^,5rke-2o7j./k[p/,h."0)dO'1&`s-1]B922Z>Z73;tr;3r;#< +4Sq;=54q,@5X9lckr]:$=r]'m9r\ja5r\XU1r\=C+r\"1%r[e$ur[@anr[%OgrZ_=b +rZD+\rZ1tXrYthTrYb\PrYPPLrY>;Ep_3E8mh+[nmh,=-q\/i@rY>;GrYPPNrYb\RrYthVrZ;%\rZM1a +rZqIhr[.Umr[Igsr[n+%r\+7*r\FI/r\a[5r\sg9r]0s=q`Fd>q`Xg?ofiFANBm8'q`am?r]L'>r]:$= +r]'m9r\ja5r\XU1r\=C*r\"1$r[[str[@amr[%OgrZ_=brZD+\rZ1tWq\oGNq\T,Eq\8o@r"Ar@lk/In +mh,4*rY,&@rY>DJrYPGKrYb\RrZ(nXrZ;%\rZV7brZqIhr[.Umr[Rmtr[n+%r\4=+r\FI0r\a[5q`+R8 +r]:$?q`Oa=q`a[;g-C3S]0Q-Uq`am?q`Oj>r]:$=r]'m9r\ja5r\XU1r\4C,!AH5,0)dI%/H.-u./kUn +-2o.g,5rbb+9!>\*W@&X)u^cT)?(KP(]G3L(&J^?'DN4/&`sYn&bm"9'DiLC(&JdG(]G9N)?(QR)u^iV +*r[8\+TU*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T52#]901&`m+0)dF$/,h!s-iPIl,lT%f,5r_a +*r[2Z*<$lW)?C`prYb\PrYPPLq\B)Eq\/`;ne'@_ob$s3q\/i@rY>DJrYPGKrYb\SrZ(nXrZ;%\rZV7c +rZqIhr[7[nr[Rmur[n+&r\4=+r\OO1r\a[6r]'m;r]9pB5`J&(5PmYA4oRSC48V)<3W;#;2uY`72#]<11B'!,0E*U'/H.-u.K1^o-2o1h +,5rbb+T&c`R8&_@Tb&bm"9'DiLC(&f!J(]G9K)?(TS*<$uX+9!D^ ++oW_c,lT.i-iPRo.fM!u0)dO'1&`s-1]B922Z>Z73;tr;3r;#<4Sq;:557@r5_2245kmS@55RMB4Sq5> +3rV/=3;tl92Z>T52#]900`Wm.0JNJYr[e%!r[Igor[.UirZhCdrZM1]rZ1tXrYthTrYb\PrYPPLq\B)E +q\/`;ne'@_ob$s3q\/i@rY>DJrYPGKrYb\SrZ(nXrZ;%\rZV7crZqIhr[7[nr[Rmur[n+&r\4=+r\OO1 +r\X^82ZPf93;tr;3r;#<4Sq;:557?n5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&Eaq`jj>r]U-@r]C!udS)#b?N(B,'D'`Jd@')3'^&FU5+ +')iRA'`JjH(B,-L)#bEP)ZC]T*<$uX*r[;],5rhd,lT.i-iPRo/,h+!0)dR(1&`s-2#]B32Z>Z73;tr; +3rV5<4T7M=557>C5X9lckq`=^:r]'m9r\ja4r\OO/r\4=)r[n+"r[Rmqr[.UjrZqIe +rZV7_rZ;%ZrYthTrYb\PrYPPLrY>2BrY,&>p^t[\mh,=-rY,/CrY>DJrYPPNrYb\RrYthVrZ1tZrZM1a +rZhCfr[.Ulr[Igsr[e%$r\4=+r\FI0r\a[5r\sg9r]0s=r]C!>r]U$?pceaDNBmA*pce[?q`Oj>r]:$= +r]'m9q_nF1r\OO/r\4=(r[n+"r[Igpr[.UjrZhCdrZM1^rZ1tXrYthTrYb\PrYPPLrY>;Eq\/`;!>,q? +&^(aV&bm"9'E/^C(&f!J(]G9N)?(QR)u^iV*r[8\+T4nq595MAAR5eB;Y5PRGA4o7A@48V)<3W;#;2uY`72#]<11B&s-0**^Zr[n+"r[Rmq +r[.UjrZqIerZV7_rZ;%ZrYthTrYb\PrYPPLrY>2BrY,&>p^t[\mh,=-rY,/CrY>DJrYPPNrYb\RrYthV +rZ1tZrZM1arZhCfr[.Ulr[Igsr[e%$r\4=+r\FI0r\X^72?5Z72uYf93W;)=48V/>4nq595Cl)$5_21O +5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOkWo#0pce[?q`Oj>r]:$=r]'d6r\a[3r\OO.r\4=)r[n+"r[Rmqr[.UjrZhCcrZM1^ +rZ1tXrYthT!#YeT)?(KP(]G3L(&J^B'DN48&]G=S&bm"9'E/^C(&f!J(]G9N)?(QR*<$uX*r[;]+oW\b +,lT.i-iPRo/,h+!0)dR(1&`s-2#]B32Z>Z73;tr;3r;#<4Sq;=557>C5X9lckr]:$= +r]'d6r\a[3r\OO.r\4=)r[n+"r[Rmqr[.UjrZhCcrZM1^rZ1tXrYthTrYb\PrYPPLrY>;Eq\/`;p^tIV +ob$s3q\/rCq\B)GrYPPNrYb\RrZ(nXrZ;%]rZV7brZqIir[7[or[[t!r\"1(r\=C-r\XU3r\ja7r]'m; +r]9p!'lN/q`jj>r]U-@r]C*?r]0s;r\sg7r\a[3r\FI-r\4=(r[e%!r[Igor[.UirZhCc +rZM1^rZ1tXrYt_Pq\T5IrY>;ErY,&>r"8l>_@ZAPp_*Q>q\8oBrYPGKrYkbTrZ(nYrZD+^rZ_=drZqIi +r[@apr[[t"r\"1(r\=C.r\XU3r\ja7r]'m;r]:$?q`Oa=q`ad>g-C3S]0Q6Xpce[?q`Oj>r]:$=r]'d6 +r\a[3r\OO.r\+=*!A?,*/cI:".fLjq-N5=j,Q8kc+Tq`Xg?pcj%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYpDHq\/i>ne&_Mob%'6q\/i@rY>DJ +rYPPNrYb\RrYthVrZ1t[rZV7brZhCgr[.Umr[Rmtr[n+&r\4=,r\OO1r\ja7r]'m;q`=^ +!C/o$5jCW05PmYA4o7A@48q;?3W;#;2uY`72?#E21B'$-0E*U'/H.-u.K1^o-2o1h,5rbb+T'`JjH(B,-L)#bEP)ZC]T*<$uX+9!G_,5rhd-2o7j./k^q +/,h."0E*[)1B'*/2#]E42uYf93Vtl:48qA>4o7G<56*s15kmS@55RMB4Sq5>3rV/=3;tl92Z>T51]B0/ +1&`j*/cI=#.fLjq-iPFk,lT"e+TDHq\/i>ne&_Mob%'6q\/i@rY>DJrYPPNrYb\RrYthVrZ1t[rZV7brZhCgr[.Um +r[Rmtr[n+&r\4=,r\OO1!B)h92Z>Z73;tr83rV5?4Sq;=557?n5cd5%5_21O5bp[E6N0@L7/f^U8H)6\ +:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.E +rpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mm +rgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&NdpcnX> +q`Xg=r]C*?r]0s;r\sg7r\XU1r\FI,r\"1%r[e$ur[@amrZqIfrZ_=arZD+\rZ(nVrYkbQ!#GYP(],!I +(&epE'DiF8&\J\G&c34<'E/^C(&f!J(]G9N)?(QR*<$uX*r[;]+oW_c-2o7j./k^q/,h+!0)dR(1&a!. +2#]B32Z>Z73;tr;3rV5<4T7M@557>C5X9lcl9P,/q`am?q`Oj>r]:$=r]'m9r\ja4r\OO/r\4=(r[n+# +r[Rmqr[.UirZhCdrZM1^rZ;%YrYthTrYYVNq\K/GrY55Cq\&Q6]FaWGq\&c>rY55ErYGJLrYYVPrYkbU +rZ1tZrZM1`rZhCgr[.Umr[Rmtr[e%$r\4=+r\OO1r\a[5r\sg9r]0s=r]C!>r]U-BpceaDO?iS*q`am? +r]L'>r]:$=r]'m8r\a[3r\OO.r\4=(r[n+"r[Igpr[.UirZhCdrZM1^rZ;%YrYthTrYYVNrYGAGrY55C +q\&T7!"ljTne(a3q\/rCrY>;Gq\];MrYthVrZ1t[rZM1arZhCgr[7[nr[Rmtr[e%%r\4=+r\OO1r\a[6 +q`+R9q`Fd>q`Xg?pcmItJO$q7pcnX>q`Xg=r]C*?r]0s;r\sg7r\XU1r\FI,r[n1&!A,o&/H.-u./kRm +,lT%f,5r_a+9!>\*<$oV)ZCTQ(],!I(&epE'DiF8&\J\G&c34<'E/^C(&f!J(]G9N)?(QR*<$uX*r[;] ++oW_c-2o7j./k^q/,h+!0)dR(1&a!.1]]Hk!&aa6r\sg9r]0s=r]C!>r]U-Bpcj%JO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpq\9#ErYGJLrYYVPrYkbUrZ1tZrZM1`rZ_=er[%Okr[Igr +r[e%$r\+7*r\OO1r\a[5r\sg9r]0s=r]C!>r]U$?q`b*H5_22c5kmS@55RMB4T7G>3rV/=3;tl92Z>Q4 +1]B0/0`E^(/cI:".K1ap-N5:i,Q8kc+T4nq5< +56*s15kmSC557;?4T7GA3r:r:2uY`72?#H31]B-.0`E^(/H.1!.K1^o-N5:i,5rbb+TT63r;#<4Sq;:55RRu5_2275kmS@55RMB4T7G>3rV/=3;tl92Z>Q41]B0/0`E[) +/HIFTr[[ssr[@amrZqIfrZV7`rZD+[rZ(nVrYb\PrYPPLq\B)Eq\/i>ob"VDp_!96rY,/CrY>DJrYPPN +rYb\RrZ(nXrZ;%]rZV7brZqIhr[7[or[Rmur\"1'r\=C.r\OX52#oN52Z>Z73;tr;3rV5<4T7M=55RQq +5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=l +riZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@D +ro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO&NdpcnX>q`Xp@r]C*?r]0s;r\sg7r\a[3r\FI-r\4=(r[n+"r[Igpr[.Ui +rZhCcrZD+\rZ1tWrYkbRrYPVO!>cRO(AejG'`Jd@')3'C&GQk7')N@A'`JjH(B,-L)#bEP)ZC]T*<%#Y ++9!D^,5rke-2o:k.K1gr/H.:$0E*^*1B'*/2?#N52uYf93W;)=48V/>4nq5<564#7JO&KcpcnX>q`Xp@ +r]C*?r]0s;r\sg7r\a[3r\FI-r\4=(r[n+"r[Igpr[.UirZhCcrZD+\rZ1tWrYkbRrYYVNrYGAGrY5>F +p_*?6YRpRAq\&c>rY5>HrYGJLrYYVPrYkbTrZ(nYrZD+^rZ_=er[%Okr[Igrr[e%$r\+7*r\FI/r\a[5 +r\sg9r]0s=r]C!>r]U$?q`b'GO?iS*r]^*?r]L0Ar]:$=r]'m9r\ja5r\XU0r\=C*r\"1$r[[srr[7[l +rZqIerZV7_rZ;%YrYthTrYb\PrYPPLrY>DHq\/i>oaq39&@E)E&bm"<'DiLC(&f!J(]G9N)?(QR)u^lW +*r[8\+oW\b,lT.i-iPRo/,h+!0)dR(1&a!.2#]B02uYf63rV5<4T7M=55RRu5_2275kmS@55RMB4T7GA +3rV/=3;tl92Z>T52#]901&`m+/c[I(/M6rPr[Igpr[.UirZhCcrZD+\rZ1tWrYkbRrYYVNrYGAGrY5>F +p_*?6YRpRAq\&c>rY5>HrYGJLrYYVPrYkbTrZ(nYrZD+^rZ_=er[%Okr[Igrr[e%$r\+7*r\FI/!Au_7 +2?#N52uYf93W;)=48V/>4nq5<5Cl)$5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOlTk50q`am?r]L0Ar]:$=r]'m9r\ja5 +r\XU0r\=C+r\"1$r[Rmqr[7[krZhCdrZM1^rZ;%YrYthTrYb\P!#GYP(]G3L(&J^E'DiF8&[2iA&bm"< +'E/^C(&f!J(]G9N)ZC]T*<$uX+9!D^,5rhd,lT.i./k[p/H.7#0)dR(1B'*/2#]E42uYf93W;)=48V/; +4o7G?564#7JO&KcpcnX>q`Xp@r]C*?r]0s;r\sg7r\a[3r\FI-r\4=(r[e$ur[@anr[%OgrZ_=arZD+\ +rZ(nVrYkbRrYYVNrYGJJq\9#Cq\&Q6YRpRAp_*Q>rY55ErYGJLrYYVQrYthVrZ1t[rZM1arZhCfr[.Um +r[Igtr[n+%r\4=,r\OO1r\ja7r]'m;r]:$?q`Oa=q`amA!'lW2pcnaApc\U=r]C*?r]0s;r\sg7r\a[2 +r\FI-r\+7&r[e$ur[@amr[%OgrZV7`rZ;%ZrZ(nVrYkbQrYPGIq\8o@q\&Z9r"-.Fq[rT9q\/rCrY>DJ +q\T5LrYkbTrZ(nXrZD+_rZ_=dr[%Ojr[@aqr[e%$r\+7)r\FI/r\XU4r\sg9q`=^g-C3S +^-MHXq`am?r]L0Ar]:$=r]'m9r\ja5r\XU0r\=C+r[n1%!A#f$.fLjq-iPFk,Q8nd+TU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,T51]B0/1&`j*/cI=#.fLjq-iPFk,Q8nd+TrY55ErYGJLrYYVPrYthVrZ1t[rZM1`rZhCfr[.Umr[Igsr[n+%r\4=,r\OO1r\ja7r]'m; +q`=^\*<$oV)ZCTQ(]G6J(&epE'E/X8&[2iA&bm"<'E/^C(&f!J(]G9N)?(TS*<$uX+9!D^+oW_c +,lT.i./k[p/,h."0)dR(1B'*/2#]E42uYf93Vtl:48qA>4o7G?56*s15kmSC55RM?4T7GA3rV/=3;tl9 +2?#H31]B-.0`Ea)/cI:".fLjq-N5=j,Q8kc+T +4nq5<5MAAR5e]MY5PmYD4o7A@48q;?3W;#;2uY`72?#E21B'$-0E*O'/-.:Qr[Rmqr[7[krZhCdrZM1^ +rZ;%YrYthTrYYMKq\B)Eq\/rAne&);p_!96rY,8Fq\B)GrYPPNrYb\SrZ(nXrZD+^rZV7crZqIir[@ap +r[[t"r\"1(r\FI/!AlV52#]E42uYf93Vtl:48qA>4o7G?5Cl)$5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOlTk>3pce[? +r]L'>r]:$=r]'m9r\ja5r\OO/r\=C*r[n+#r[Rmqr[7[krZhCdrZM1]rZ1tXrYkbRrYYVN!#>SN(B,'G +'`JdC'(QX=&G6Y4')N@A'`JjH(B,-L)#bEP)ZC]T*W@,Z+9!G_,Q8tf-N5Fm.K1js/cIC%0`Ej,1]B61 +2?#N53;Y`83rV5?4Sq;=55RPF5X9lcl9P52pce[?r]L'>r]:$=r]'m9r\ja5r\OO/r\=C*r[n+#r[Rmq +r[7[krZhCdrZM1]rZ1tXrYkbRrYYVNrYGJJq\9#Cq\&H3YRpI>q\&c>rY5>HrYGJLrYYVPrYkbTrZ1tZ +rZD+_rZhCfr[.Umr[Igsr[n+%r\4=,r\OO1r\a[5r]'d8r]:$?r]L'@q`amA!'lW2q`jsAq`Xp@r]C!< +r]0s;r\sg6r\XU1r\=C+r\+7%r[[str[@amrZqIerZV7`rZ;%ZrYthTrYb\PrYPPLrY>;ErY,/Aob%*5 +Z4Q[@rY#)Aq\9#ErYGJLrYYVPrYthVrZ1t[rZM1`rZhCgr[.Umr[Rmtr[n+&r\4=,r\OO1r\ja7r]'m; +r]:$?q`Oj@pceR>g-C3S^-MQ[pce[?r]L'>r]:$=r]'m9r\ja5r\OO/r\=C*r[e+$!A#f$.fLjq-iPFk +,Q8nd+T%JO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3O()Hlaq\9#Cq\&Z9WY"h8q\&c>rY5>HrYGJLrYYVPrYkbTrZ(nYrZD+_rZ_=er[.Ulr[Igsr[n+% +r\4=+r\FI0r\a[5r]'d8r]:$?r]L'@q`amA!C/o$5jCW35PmYA4oRS@48q;?3W;#;2uY]62#]<11&`m+ +0E*R&/H.-u./kRm,lT"e+oWV`*r[2Z*<$lU)?(KP(]G3L(&J^E'DiF;&ZQE8&c34<'E/^F(&f!J(]G9N +)?(QR)u^iV*r[8\+oW\b,lT.i-iPRo/,h."0)dR(1&`s-2#]B32Z>]53W;)=48qA>4o7G?56*s15l3eC +55RMB4T7G>3r:o92uY]62#]<11&`m+0E*O%/,h!s-iPIl,lT"e+oWS_*r[2Z)u^cT)?(KP(]G3L(&epE +'DiF;&c!!D&G6Y4')iRA'`JjH(B,-L)#bEP)ZC]T*<%#Y+TZ73;tr;3r;#<4T7M=55RRu5_2275l3eC55RMB4Sq5>3rV/=3;tl92?#H31]B-.0`Ea)/H@=&/1gcM +r[@amrZqIerZV7`rZ;%ZrZ(nUrYb\PrYPPLrY>;ErY,/Ap^sM;ob%'6q\/rCrY>DJrYPPNrYb\RrYthV +rZ;%\rZV7brZqIir[7[or[[t"r\"1(r\=C-!AlV52#]B32Z>]53W;)=48qA>4o7G?5Cl)$5_21O5_21r +5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOlTk>3q`am?r]L'>r]:$=r]'m9r\a[3r\OO.r\4=(r[n+"r[Igor[.UirZ_=brZD+\rZ1tW +rYkbRrYYVN!#>SN(B,'G'`JdC')3'7&Gm(:')N@A'`JjH(AepI)#bHQ)u^iV*r[8\+TZ73;tr;3rV5?4Sq;=55RPF5X9lcl9P52q`am?r]L'>r]:$=r]'m9r\a[3 +r\OO.r\4=(r[n+"r[Igor[.UirZ_=brZD+\rZ1tWrYkbRrYYVNrYGJJq\9#Cq\&Z9U_*D8q\&c>rY5>H +rYGAIrYYVQrYthVrZ;%\rZM1arZhCgr[7[or[[t"r\"1'r\=C-r\XU3r\ja7r]'m;r]:$?r]L'@q`amA +!'lW2q`jsAq`Xp@r]C!DHq\/i>p_!<5X:Y7@q\&lAq\9#ErYGJLq\];NrYthVrZ;%\rZM1brZqIir[@apr[[t"r\"1(r\FI/ +r\XU4r\sg9r]0s=q`Fd>q`Xg?q`ie"JO$q7q`jsAq`Xp@q`FdU*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92?#H31]B-.0`E^(/H.1!.K1^o-N5:i,5rbb+9!>\ +*W@#W)ZCWR)#b;ErY,/Ap^s;5q[r]DJq\T5KrYkbTrZ(nYrZD+^rZ_=dr[%Ok +r[@aqr[e%$r\+7*r\FI0r\a[5r\sg9r]0s=r]C*Aq`Xg?q`b*H5_22c5l3eC55RMB4Sq5>3rV/=3;tl9 +2?#H31]B-.0`E^(/H.1!.K1^o-N5:i,5rbb+9!>\*W@#W)ZCWR)#b?N(B,'G'`JdC')3'7&Gm(:')N@A +'`JjH(AepI)#bHQ)u^iV*r[8\+TZ73;tr;3rV5?4Sq;= +55RPE5`e8.5PmYA4oRSC48V)<3;YZ62?#H31]B-.0`E^(/H.1!.K1^o-2o1h,5r_a+9!;[*<$oS)?(KP +(]G3L(&epE'DiF;&c!!>&Gm(:')N@A'`JjH(B,-I)#bHQ)u^iV*r[8\+T3rV/=3;tl92?#H31]B-.0`E^(/-%1$ +.kCTJr[7[lrZqIerZV7_rZ;%ZrYthTrYb\PrYPPLrY>;ErY,/Ap^s;5q[r]DJq\T5KrYkbT +rZ(nYrZD+^rZ_=dr[%Okr[@aqr[e%$r\+7*r\=L21]TB32?#N52uYf93W;)=48qA>4o7G?5Cl)$5_21O +5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOlTk>3q`am?r]L'>r]:$=r]'m9r\a[3r\OO.r\4=(r[e%!r[Igor[.UirZ_=brZD+[ +rZ(nVrYkbRrYYVN!#>SN(B,'J'`/R@')N97&Gm(7')iRD'`JjH(AepI)#bHQ)u^iV*W@,Z+TZ73;tr;3rV5?4Sq;=55RPF5X9lcl9P52q`am?r]L'>r]:$=r]'m9 +r\a[3r\OO.r\4=(r[e%!r[Igor[.UirZ_=brZD+[rZ(nVrYkbRrYYVNrYGJJrY55Cq\&c +rY5>HrYGAIrYYVQrYthVrZ1tZrZM1arZhCgr[7[nr[Rmur[n+&r\=C-r\XU3r\ja7r]'m;r]:$?r]L'@ +q`amA!'lW2q`jsAq`Xp@r]C!DJrYPGKrYkbTrZ(nYrZD+^rZ_=er[%Okr[Igsr[n+%r\4=+ +r\OO1q_nF5r]0s=q`Fd>q`Xg?q`ie"JO$q7q`jsAq`Xp@q`Fd&YTd5&bm"<'E/^F(&f!G(]G9N)ZC]T +*<$uX*r[;],5rhd-2o:k./k^q/H.7#0E*^*1''3g!&X[4r\ja7r]'m;r]:$?r]L'@q`amAJO$;%JO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92?#H31]B-.0`E^(/H.1!.K1^o-N5:i,5rbb+9!;[ +*<$oV)ZCWR)#bDHq\/i>q[oM5p_!B9rY,/CrY>DJrYPPNrYkbTrZ(nXrZ;%]rZ_=dr[%Ok +r[@aqr[e%#r\+7*r\FI0r\a[5r\sg9r]0s=r]C*Aq`Xg?q`b*H5_22c5l3eC55RMB4Sq5>3rV/=3;tl9 +2?#H31]B-.0`E^(/H.1!.K1^o-N5:i,5rbb+9!;[*<$oV)ZCWR)#b?N(B,'J'`/R@')N97&GQk7')iRA +'`JjH(B,-L)#bHQ)u^iV*W@,Z+TZ73;tr;3rV5?4Sq;= +55RPE5`e8.5PmYA4oRSC48V)<3;YZ62?#H31]B-.0E*U'/H.-u.K1^o-2o1h,5r_a+9!;[*<$oS)?(HO +(AejG'`/R@')N:7&?HH<&cNF?'E/^C(&f$H)#bHQ)u^iV*r[8\+T]83Vtl:48qA>4o7G?5MAAR5e]M\5PmYA4oRS@48q;?3W;#;2uY]62#]<11&`m+0)dC%.fh.N +r[Igor[.UirZ_=brZD+[rZ(nVrYkbRrYYVNrYGJJrY55Cq\&cZ73;tr;3rV5?4Sq;=55RQq5cd5%5_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO&Ndq`jsAq`Xp@q`FdZIM(&epE'DiF>&YTd2&c34?'DiLC(&f!J(]G9N)ZC]T*<$uX*r[;],5rhd-2o:k +./k^q/H.7#0E*^*1B'-02?#N52uYf93W;)=48qA>4o7G?564#7JO&Kcq`jsAq`Xp@q`FdDHq\/i>q[oM5p_!B9rY,/C +rY>DJrYPPNrYkbTrZ(nXrZ;%]rZ_=dr[%Okr[@aqr[e%#r\+7*r\FI0r\a[5r\sg9r]0s=r]C*Aq`Xg? +q`b'GO?i\-q`am?r]L0Aq`=^9q`"L3r\XU1r\=C*r\"1$r[Rmrr[7[krZqIerZM1^rZ1tXrYt_PrYPPL +q\B)Eq\/i>q[rN5X:Y.=rY#)ArY55Eq\T5KrYkbTrZ(nYrZD+^rZ_=er[%Okr[Igsr[n+%r\4=+r\OO1 +r\a[5r]'m;q`=^r]:$=r]'m9r\a[3r\OO.r\4=(r[\%"!@o]" +.K1^o-N5:i,5rbb+9!;[*<$oV)ZCWR)#b?N(B,'J'`/R@')N97&GQk7')iRA'`JjH(B,-L)#bHQ)u^iV +*W@,Z+T%JO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3O()HlarY55Cq\&c&YTd2&c34?'DiLC +(&f!J(]G9N)ZC]T*<$uX*r[;],5rhd-2o:k./k^q/H.:$0E*^*1B'-02?#N52uYf93W;)=48qA>4o7G? +56*s15l3eC55RMB4T7G>3rV,92uY]62#]<11&`j*0)dF$/,h!s-iPFk,lT"e+T&bZd;&GQk:')N@A'`/XE(],'K)ZC]T*<%#Y+9!D^,Q8tf-2o:k.K1js/cIC%0`Eg+1]B61 +2?#N53;tr83rV5?4Sq;=55RRu5_2275l3eC55RMB4Sq5>3rV/=3;tl92?#H31]B-.0`E^(/-%1$.kCTJ +r[7[lrZqIerZV7_rZ1tXrYthTrYb\PrYPPLrY>DHq\/i>q[oM5p_!B9rY,/CrY>DJrYPPNrYkbTrZ(nX +rZ;%]rZ_=dr[%Okr[@aqr[e%$r\+7*r\=L21]TB32?#N52uYf93W;)=48qA>4o7G?5Cl)$5_21O5_21r +5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOlTk>3q`am?r]L'>r]:$=r]'m9r\a[3r\OO.r\4=)r[n+"r[Igor[.UirZ_=brZD+[rZ(nV +rYkbRrYYVN!#>SN(B,'J'`/R@')N9=&G6Y1')iRD'`JjH(AepI)?(QR)u^iV*W@,Z+TZ73;tr;3rV5?4Sq;=55RPF5X9lcl9P52q`am?r]L'>r]:$=r]'m9r\a[3 +r\OO.r\4=)r[n+"r[Igor[.UirZ_=brZD+[rZ(nVrYkbRrYYVNrYGJJrY55Cq\&crY5>H +rYGAIrYb\RrYthVrZ1tZrZM1arZhCgr[7[nr[[t"r\"1'r\=C-r\XU3r\ja7r]'m;r]:$?r]L'@q`amA +!'lW2q`jsAq`Xp@r]C!DJrYPPNrYb\RrYthVrZ;%\rZM1brZqIhr[7[or[[t"r\"1(r\=C. +r\XL1r]'m;r]9pr]:$=r]'m9r\a[3r\OO.r\4=)r[e+#!@o]" +.K1^o-N5:i,5rbb+9!;[*<$oV)ZCWR)#b?N(B,'J'`/R@')N9=&G6Y1')iRD'`JjH(AepI)?(QR)u^iV +*W@,Z+T%JO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3O()Hlaq\9#Cq\&Z9WY"h8q\&c>rY5>HrYGJLrYYVPrYkbTrZ(nYrZD+^rZ_=dr[%Ok +r[Igsr[n+%r\+7*r\FI0r\a[5r\sg9r]0s=r]C*Aq`Xg?q`b*H5_22c5l3eC55RMB4Sq5>3rV/=3;tl9 +2?#H31]B-.0`Ea)/cI:".K1^o-N5:i,5rbb+9!>\*W@#W)ZCWR)#b?N(B,'G'`JdC')3'=&G6Y4')N@A +'`JjH(B,-L)#bEP)ZC]T*<%#Y+9!D^,5rhd-2o:k.K1js/cIC%0E*^*1B'-02?#N52uYf93W;)=48qA> +4o7G?56*s15l3eC55RMB4T7G>3rV,92uY]62#]<11&`m+0E*O%/,h!s-iPFk,lT"e+T3rV/=3;tl92?#H31]B-.0`Ea) +/H@:%.kCTJr[7[lrZqIerZV7_rZ;%ZrYthTrYb\PrYPPLrY>;ErY,/Ap^sM;ob%'6q\/rCrY>DJrYPPN +rYb\RrYthVrZ;%\rZM1arZhCgr[7[or[[t"r\"1'r\=C-!AlV52#]B32Z>Z73;tr;3rV5?4Sq;=55RQq +5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=l +riZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@D +ro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO&Ndq`jj>r]U6Cq`FdZIM(&J^E'DiF;&ZQE8&c34<'E/^F(&f!J(]G9N)?(QR)u^iV*r[8\ ++oW\b,Q9"g-iPRo/,h."0)dR(1&`s-2#]B32Z>Z73;tr;3rV5?4Sq;=55RPF5X9lcl9P52pce[?r]L'> +r]:$=r]'m9r\ja5r\OO.r\4=)r[n+#r[Igpr[.UirZhCcrZD+\rZ1tWrYkbRrYYVNrYGJJq\9#Cq\&Z9 +WY"h8q\&c>rY5>HrYGJLrYYVPrYkbTrZ(nYrZD+_rZ_=dr[%Okr[Igsr[n+%r\4=+r\FI0r\a[5r\sg9 +r]0s=r]C*Aq`Xg?q`b'GO?i\-q`am?r]L0Aq`=U6r\sg6r\XU1r\=C+r\+7%r[[ssr[7[lrZqIerZV7_ +rZ1tXrYt_PrYYVNrYGJJrY55Cq\&Z9q%0hCob%09q\/i@rY>DJrYPPNrYbSPrZ(nYrZM1`rZhCfr[.Um +r[Igsr[n+&r\4=,r\OO1r\ja7r]'m;r]9pr]:$=r]'m9r\ja5 +r\OO.r\4=)r[e+$!A#f$.K1ap-N5:i,Q8kc+9!>\*W@#W)ZCWR)#b?N(B,'G'`JdC')3'=&G6Y4')N@A +'`JjH(B,-L)#bEP)ZC]T*<%#Y+9!G_,5rhd-2o:k.K1js/cIC%0`Eg+1''3g!&X[4r\ja7r]'m;r]:$? +r]L'@q`amAJO$;%JO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T51]B-.0`Ea)/cI=# +.fLjq-iPFk,Q8nd+T;ErY,&>ob"D>ob%'6rY,/CrY>DJrYPPNrYb\R +rYthWrZ;%\rZV7crZqIir[@apr[[t"r\"1(r\=C-r\XU3r\ja8q`4O8r]L'@q`amA!C/o$5jCW35PRGA +4oRS@48q;?3W;#;2uY`72?#E21&`m+0E*R&/H.-u./kUn-2o.g,5r_a*r[2Z*<$lU)?(KP(]G3L(&J^E +'DN45&[2i>&c34?'DiLC(&f!J(]G9N)?(QR)u^lW*r[8\+oW_c,lT.i./k[p/,h."0)dR(1&`s-2#]B3 +2Z>]53Vto;4Sq;=55RPE5`e8.5PmYA4oRSC48V)<3W;#;2uY]62#]<11&`m+0E*R&/,h!s-iPIl,lT"e ++oWS_*r[2Z)u^cT)?(KP(]G3L(&epE'DN48&c<3G&G6Y7')N@A'`/XE(B,-L)#bEP)u^iV*W@/[+TZ73;tr;3r;#<4T7M=55RRu5_2275l3e@55m_E4Sq5>3rV/= +3;tl92Z>T51]B-.0`Ea)/H@=&/1gcMr[@anr[%OgrZ_=arZ;%ZrZ(nUrYb\PrYPPLrY>;ErY,&>ob"D> +ob%'6rY,/CrY>DJrYPPNrYb\RrYthWrZ;%\rZV7crZqIir[@apr[[t"r\"1(r\=C-!AlV52#]B32Z>]5 +3Vto;4Sq;=55RQq5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Ko +re:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWi +rq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&Ndq`jj>r]U6Cq`FdZIM(&J^B'DiF8&[2i>&c34?'E/^C(&f!J(]G9N +)?(QR)u^lW*r[8\+oW_c,lT.i./k[p/,h."0)dR(1B'*/2#]B32Z>]83W;)=48V/;4o7G?564#7JO&Kc +q`jj>r]U6Cq`Fd;Eq\/i>ob"D>ob%'6rY,8Fq\B)GrYPPNrYb\RrYthWrZ;%\rZV7crZqIir[@apr[[t"r\"1(r\FI/ +r\XU3r\ja8r]0s=r]C!>q`Xg?q`b'GO?i\-q`am?r]L'>r]:$=r]'m9r\a[3r\OO.r\4=)r[n+"r[Rmq +r[.UjrZhCcrZM1]rZ1tXrYkbRrYYVNrYGJJq\9#Cp_*?6r"-.Fob%09q\/rCrY>;GrYPPNrYb\SrZ(nX +rZD+^rZV7cr[%Ojr[@aqr[[t#r\+7)r\FI/r\XU4r\sg9r]0s=r]C!>r]U$?q`ie"JO$q7q`jj>r]U6C +q`Fd&c34?'E/^C(&f!J(]G9N)?(QR)u^lW*r[8\+oW_c,lT.i./k[p/,h."0)dR(1B''11c,1h +r\a[5r]'m;r]:$?q`Oa=q`amAJO$;%JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,T5 +1]B0/1&`j*0)dF$.fLjq-iPFk,Q8nd+oWS_*r[/Y)u^cT)?(HQ(BGob"D>p_!B9q\/rC +q\B)GrYPPNrYb\SrZ(nXrZD+^rZV7cr[%Okr[@apr[[t"r\+7)r\FI/r\XU4r\sg9r]0s=r]C!>q`Xg? +q`b*H5_22c5kmS@55RMB4T7GA3rV/=3;tl92Z>T51]B0/1&`j*0)dF$.fLjq-iPFk,Q8nd+oWS_*r[/Y +)u^cT)?(KP(]+sH'`/R@'(lj@&GQk7')N@A'`/XE(B,-L)#bEP)u^iV*W@/[+TZ73;tr;3rV5<4Sq;=55RPE5`e8+5Q3kD4o7A@48q;?3W;#;2uY]62#]<11&`m+ +0E*R&/H.-u./kRm-2o.g,5r_a+9!;[*<$oV)ZCTQ(]G3I(&epE'DiF;&c<3J&G6Y4')N@A'`JjH(AepI +)#bEP)u^iV*W@/[+T4nq5<5MAAR5e]MY +5PmYA4oRSC48q;?3W;#;2uY`72?#E21B'$-0E*R(/-.:Qr[Rmqr[7[krZhCdrZV7_rZ;%YrYthTrYb\P +rYPGHrY55Cq\&Q6YRpRAq\&c>rY55ErYGJLrYYVPrYthVrZ1t[rZM1`rZhCgr[7[nr[Igsr[n+&r\4=, +r\FR31]TB32Z>Z73;tr;3rV5<4Sq;=55RQq5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`- +r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKi +rqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXop +rcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&NdpcnX>q`Xp@r]C*?q`4X8 +r\ja5r\XU0r\=C+r\"1%r[[ssr[@amrZqIfrZV7_rZ;%ZrYthTrYb\P!#GYP(]G3L(&J^E'DiF8&[2iA +&c34<'E/^F(&f!J(],'K)ZC]T*<$uX+9!D^,5rke-2o:k.K1gr/H.:$0E*^*1B'*/2?#N52uYf93W;)= +48V/;4o7G?564#7JO&KcpcnX>q`Xp@r]C*?q`4X8r\ja5r\XU0r\=C+r\"1%r[[ssr[@amrZqIfrZV7_ +rZ;%ZrYthTrYb\PrYPPLrY>;ErY,/Aob"D>p_!B9q\/rCrY>DJrYPGKrYkbTrZ(nXrZD+^rZ_=er[%Ok +r[Igrr[e%$r\+7*r\FI/r\a[5r\sg9r]0s=r]C!>q`Xg?q`b'GO?iS*r]^*?r]L0Ar]:$=r]'m9r\ja5 +r\OO/r\=C*r\"1$r[[srr[7[krZhCdrZM1^rZ;%YrYthTq\];KrYGJJrY55Cq\&Q6!>#gM&GQk4')N@A +'`JjH(B,-L)#bEP)ZC]T*<%#Y+9!G_,5rke-2o:k.K1gr/H.:$0`Eg+1]B612>]?33;Yc948V/>4nq5< +5MAAR5e]MY5PmYA4oRSC48q;<3W;#;2Z>T52#]901&`m+/c[I(/M6rPr[Igpr[.UirZhCcrZD+\rZ1tW +rYkbRrYYVNrYGJJq\9#Cq\&Q6YRpRAq\&c>rY5>HrYGJLq\];NrYthVrZ1t[rZM1arZqIhr[7[or[Rmu +r\"1'r\=C-r\FR42#oN52Z>Z73;tr;3rV5<4Sq;=55RQq5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe +;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^S +rq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnL +rf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&NdpcnX>q`Xp@ +r]C*?q`4X8r\ja5r\XU1r\FI,r\"1%r[[ssr[@amrZqIfrZV7`rZD+[rZ(nVrYb\P!#GYP(]G3I(&epE +'DiF;&[N&D&bm"<'DiLC(&f!J(]G9N)?(QR)u^iV*r[8\+TZ73;tr;3rV5<4T7M=55RPF5X9lcl9P,/q`am?r]L0Ar]9p:r]'m8r\a[3r\OO/r\4=(r[n+"r[Igp +r[.UirZhCcrZM1^rZ1tXrYthSrYYVNrYGAGrY55Cq\&Z9ZOlmDp_*Q>q\9#ErYGJLrYYVPrYkbTrZ(nY +rZD+^rZ_=er[%Okr[Igrr[e%$r\+7*r\OO1r\a[5r\sg9r]0s=r]C!>r]U$?q`b'GO?iS*r]^*?r]L0A +r]:$=r]'m9r\ja5r\XU0r\=C+r\"1$r[[ssr[7[lrZqIerZV7_rZ;%ZrYthTrYb\PrYPPLrY>;Eq\/rA +oaq39&@E)E&bm"<'DiL@(B,-L)#bEP)ZC`U*W@,Z+T]?3 +3;Yc948qA>4nq5<5MAAR5e]MY5PmYA4oRSC48q;<3W;#;2Z>T52#]<11B'!,/c[I(/M6rPr[Igpr[.Ui +rZhCcrZM1^rZ1tXrYthSrYYVNrYGAGrY55Cq\&Z9ZOlmDp_*Q>q\9#ErYGJLrYYVPrYkbTrZ(nYrZD+^ +rZ_=er[%Okr[Igrr[e%$r\+7*r\OO1!Au_72?#N52uYf93W;)=48V/>4nq5<5Cl)$5_21O5_21r5lO+L +6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOlTk50q`am?q`Oj>r]:$=r]'m9r\ja4r\OO/r\4=)r[n+"r[Rmrr[7[krZqIerZM1^rZ1tXrYthT +rYY\Q!>l[Q(]G3L(&J^B'E/X5&],+M&c34<'E/^F(&JdG(]G4o7G<564#7JO&KcpcnX>q`Xg=r]C*?r]0s;r\sg7r\XU1 +r\FI,r\+7&r[[str[Igor[%OhrZ_=arZD+[rZ(nVrYkbRrYYVNrYGJJq\8o@rY"Z3_@Z8Mq\&c>rY5>H +q\K/IrYb\RrYthVrZ1tZrZM1`rZhCgr[.Umr[Rmtr[n+&r\4=+r\OO1r\a[6r]'m;q`=^ +!'lW2pcnaApc\U=q`F[8r]'m9r\a[3r\OO.r\4=(r[n+"r[Igpr[7[jrZhCdrZM1]rZ1tXrYthTq\];K +q\AuBq\/rAp(@68^C]rJq\&c>rY5>HrYGJLrYYVPrYkbTrZ(nXrZD+^rZ_=dr[%Okr[@aqr[[t"r\+7) +r\=C.r\XU3r\sg9r]0s=q`Fd>q`Xg?pcmItJO$q7pcnX>q`Xg=r]C*?r]0s;r\sg7r\XU1r\FI,r\"7' +!A,o&/,h$t.K1^o-2o1h,5r_a+9!;[*<$oV)ZCWR)#b?N(B,'G'`/RC'(6FL&FpG1')N@A'`JjE(B,-L +)?(QR)u^iV*W@,Z+T%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp;Eq\/i>ne&_Mob$s3q\/rCrY>DJrYPPNrYb\RrYthVrZ1t[ +rZM1`rZhCgr[.Umr[Rmtr[n+&r\4=,r\OO1r\ja7r]'m;q`=^!C/o$5jCW05PmYA4o7A@ +48q;?3W;#;2uY`72?#E21B'$-0E*U'/H.-u.K1^o-2o1h,5rbb+T4o7G<56*s15kmS@55RMB4Sq5>3rV/=3;tl92Z>Q41]B0/0`Ea)/cI:".fLjq-iPFk +,Q8nd+T4o7G<5MAAR5e]MY5PmYA4o7A@ +48q;?3W;#;2uY`72?#E21B'$-0*!U*/h[,Sr[Rmrr[7[krZqIerZV7`rZ;%YrYthTrYb\PrYPPLrY>;E +q\/i>ne&_Mob$s3q\/rCrY>DJrYPPNrYb\RrYthVrZ1t[rZM1`rZhCgr[.Umr[Rmtr[n+&r\4=,r\OO1 +!B)h92Z>Z73;tr83rV5?4Sq;=557?n5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&Eaq`jj>r]U-@r]C*?r]0s;r\sg7 +r\a[3r\OO.r\+7'r[e%!r[Rmqr[.UjrZhCcrZM1]rZ1tXrYthT!#YeT)?(HL(B,'G'`Jd@'(ljR&G6Y4 +')N@>'`JjH(B,-L)#bEP)ZC`U*W@,Z+9!G_,5rke-N5Cl.K1gr/H.:$0E*[)1B'*/2#]E42uYf93W;): +48qA>4o7G<564#7JO&B`q`jj>r]U-@r]C*?r]0s;r\sg7r\a[3r\OO.r\+7'r[e%!r[Rmqr[.UjrZhCc +rZM1]rZ1tXrYthTrYb\Oq\K/Gq\9#Cp_*63_@ZAPq\&c>q\9#ErYGJLrYYVPrYkbUrZ1tZrZD+_rZ_=e +r[.Ulr[Igrr[e%$r\+7)r\FI/r\XU4r\sg9r]0s=q`Fd>q`Xg?pceaDNBmA*pce[?q`Oj>r]:$=r]'m9 +r\ja5r\OO/r\=C*r\"1$r[Rmrr[7[krZqIfrZV7_rZ:qVrYthSrYYVNrYGAGrY55Cp_*K:q@U[Xne(j6 +q\/i@q\AuErYYVQrYthVrZ1tZrZM1`rZhCfr[.Ulr[Igsr[e%$r\4=+r\FI0r\a[5r\sg9r]0s=r]C!> +q`Xg?pcmItJO$h4q`jj>r]U-@r]C*?r]0s;r\sg7r\a[3r\OO.r\"7(!A6#(/H.1!.fLjq-N5=j,Q8kc ++T'`JjH(B,-L)#bEP)ZC`U*W@,Z+9!G_,5rke +-N5Cl.K1gr/H.:$0E*[)1B'*/1]]Km!&jg8r]'m;r]9pJO$;%JO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92?#H31]B-.0`Ea)/cI:".fLjq-N5=j,Q8nd+oWS_*r[2Z)u^`U)$(Tm +rYYVNrYGAGrY55Cp_*$-e.D'\q\&c>rY55ErYGJLrYYVPrYkbTrZ(nYrZD+^rZ_=dr[%Okr[@apr[[t! +r\"1(r\=C.r\XU3r\ja7r]'m;r]:$?q`Oa=q`ad>!C/o$5j(E-5PmYA4oRSC48V)<3W;#;2uY]62#]<1 +1&`m+0E*R&/,h$t./kRm-2o.g,5rbb+9!>\*W@#W)ZCWR)#b?N(AejG'`/R='(6F^&FU5.')N@A'`/XE +(B,-L)#bEP)ZC]T*<%#Y+9!D^,5rhd-2o:k./k[p/,h+!0)dR(1&a!.2#]B32Z>Z73;tr;3rV5<4Sq;= +557>B5`J&(5PmYD4o7A@48q;<3W;#;2Z>T52#]901&`m+0)dI%/,h$t./kRm-2o.g+oWV`+9!;[*<$oV +)ZCWR)#b?N(B,'G'`/R@')W@6&^_0\&bm"9'E/^C(&f!J(]G9N)>bBP*<%#Y+9!D^,5rke-2o:k./k^q +/,h."0E*[)1B'*/2#]B02uYf93Vto;4SV):557@r5_2245kmS@55RMB4T7G>3rV/=3;tl92?#H31]B-. +0ErY55E +rYGJLrYYVPrYkbTrZ(nYrZD+^rZ_=dr[%Okr[@apr[[t!r\"1(r\=C.r\XU3!B)h92Z>Z73;tr;3rV5< +4Sq;=557?n5cd5%5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1 +rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^ +rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO&EapcnX>q`Xp@r]C!4nq59564#7JO&B` +pcnX>q`Xp@r]C!;ErY,&>jq6_ekn3e*p_3W@q\B)GrYPPNrYb\RrYthWrZ;%\rZV7brZhCgr[7[nr[Rmur[n+& +r\4=+r\OO1r\a[6q`+I6r]C!>r]U$?pceaDNBm8'q`am?r]L0Ar]9p:r]'m9r\ja4r\OO/r\4=(r[n+" +r[Rmqr[7[krZqIerZV7`rZ;%ZrZ(nUrYb\PrYPGIrY>DHq\/`;!>,q0&`sYe&c34<'DiLC(&f!G(]G9N +)?(TS*<$uX+9!D^+oW_c,lT+h-iPRo.fM!u/cIF&0`Ej,1]B612Z>Z73;tr;3r;#<4Sq;:557@r5_224 +5kmS@55RMB4T7G>3rV/=3;tl92Z>Q41]B0/0E;ErY,&>jq6_ekn3e*p_3W@q\B)GrYPPNrYb\RrYthWrZ;%\rZV7brZhCgr[7[nr[Rmu +r[n+&r\4=+r\OO1r\X^82ZPf63;Yc948V/>4nq595Cl)$5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/j +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOkWno-q`am?q`Oj> +r]:$=r]'m9r\ja5r\XU0r\=C+r\"1$r[[ssr[@anr[%OgrZ_=brZD+\rZ1tW!#bkV)ZCWR)#b?N(AejD +'`/R=''p4m&FU5+')3.>'`/XE(B,-L)#bEP)ZC]T*<$uX+9!D^+oW_c,lT.i./k[p.fM!u/cIF&1&`s- +1]B922Z>Z73;tr;3r;#<4Sq;=54q,@5X9lckr]:$=r]'m9r\ja5r\XU0r\=C+r\"1$ +r[[ssr[@anr[%OgrZ_=brZD+\rZ1tWrYkbRrYYVNrYGAGq\8o@p_)p*jq-tnp_*?8rY55ErYGJLrYYVP +rYkbTrZ(nXrZD+^rZV7crZqIir[@apr[Rmur[n+&r\=C-r\OO2r\ja7r]'m;r]9pq`Xp@q`FdHq\K/IrYYVPrYkbTrZ(nXrZD+^rZ_=dr[%Ojr[@apr[[t" +r\"1(r\=C-r\XU3r\ja7r]'m;r]9pr]:$=r]'m9r\ja5r\XU0 +r\4C,!AH5,0)dF$/,h!s./kUn-2o.g,5rbb+9!>\*W@#W)ZCWR)#b?N(AejD'`/R=''p4m&FU5+')3.> +'`/XE(B,-L)#bEP)ZC]T*<$uX+9!D^+oW_c,lT.i./k[p.fM!u/cIF&1&`s-1]B922?>`q!&sm:r]0s= +q`Fd>q`Xg?ofn!mX?_>%JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp4oRSC48q;?3Vtf82uY`72?#E21B'$-0E*R& +/H.-u./kUn-N5:i,Q8kc+Tr]U$?ofiIB +5_22`5kmS@557;?4T7GA3rV/:3;tl92Z>T51]B0/1&`j*/cI=#.fLjq-iPIl,lT%f+oWV`+9!;[*<$oV +)ZCWR)#b?K(B,'G'`/R='#G7X')3.>'`/XE(B,-L)#bEP)ZC]T*<$uX*r[;]+oW\b,lT+h-iPRo.fLst +/cIC%0`Ej,1]B612?#N52uYf93W;)=48V/>4nq5656*s.5kmS@55RM?4T7GA3rV/=3;YZ62?#H31]B-. +0`Ea)/cI=#.fLjq-iPFk,lT"e+oWV`*r[2Z*<$oV)ZCWR)#b?K(B,'G'`/OE&eb$R`=_kXq\/i@q\AuE +rYYVPrYkbTrZ(nXrZ;%]rZV7cr[%Ojr[7[or[Rmur[n+&r\4=,r\OO1q_nF5r]0j:r]C!>r]U$?ofq.q +JO$h4pcnX>pc\U=r]C*?r]0j8r\sg7r\a[2r\=I.!AQ>.0E*R&/H.-u./kUn-N5:i,Q8kc+T`q!&sm:r]0s=r]C!>r]U$?ofn!mX?_>%JO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp +4oRS@48q;?3W;#;2uY`72?#E21B'$-0E*U'/cI:".K1ap-N5:i,Q8nd+Tq`X^3rV/=3;tl92Z>T51]B0/1&`j*0)dI% +/,h!s./kRm,lT%f,5r_a+9!>\*W@&X)uCNP)#b?N(AejD'`/R7'%@Nd')3.>'`/XE(AepI)#bEP)ZC]T +*<$uX+9!D^+oW_c-2o7j-iPRo.fM!u0)dO'0`Ej,1]B612Z>Z73;Y`548qA>4nq5656*s.5kmS=55m_B +4T7G>3r:o92uY]62#]<11B'!,0E*R&/H.1!./kUn-N5:i,Q8nd+T4o7G65MAAR5eB;V5PRG>4oRS@48q;?3W;#;2uY`72?#E21&s$00erY\r\"1%r[[ssr[@am +rZqIfrZ_=arZD+\rZ1tXrYt_PrYYVNrYGAGq\8o@ne0Faob.$5rY55ErYGAIrYYVPrYkbTrZ(nXrZD+^ +rZV7cr[%Ojr[7[or[Rmur\"1'r\4=,r\OO1r\ja7!B<%=3;Y`548qA>4nq565Cl)$5_21O5_21r5lO+L +6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOkWnf*q`am?r]L'>r]:$=r]'m9r\ja5r\XU1r\FI,r\"1%r[e$ur[Igor[.UjrZhCcrZM1^rZ2%[ +!?E3[*<$oV)ZCWR)#b?N(AejD'_i@1''9ep')N@>'`/XE(B,-I)#bEP)ZC]T*<$uX*r[;]+oW\b,lT+h +-N5Fm.fLst/cIC%0E*^*1]B612?#N52uYf93W;)=48V/;4nq5<5P[Qq5j(E*5PmYA4oRS@48q;?3W;#; +2uY`72?#H31]B0/0`E^(/cI=#.fLmr-iPIl-2o.g+oWV`+9!>\*W@&X)u^cT)?(KP(]G3I(&J^?'CQRr +&apA0'DiL@(&f!J(],'K)?(QR)u^iV*W@,Z+TZ7 +3;tr;3rV5<4Sq;:55RS@5`J&(5PRG>4oRS@48q;?3W;#;2uY`72?#H31]B-.0`E^(/cI:".fLjq-iPFk +,lT%f+oWV`+9!;[*<$oV)ZCWR)#G-K(AejD'EJj\q@i<1kn3@sq\/`=rY>;GrYPPNq\f8MrZ(nYrZD+^ +rZ_=drZqIir[7[nr[Rmur[n+&r\4=+r\OO1r\aR3r]'m;r]:$?q`Oa=q`ad>e3JRM]0Q$Rq`am?r]L'> +r]:$=r]'m9r\ja5r\XU1!&=R11B'!,0)dI%/H.-u.K1^o-N5=j,Q8kc+T'`/XE(B,-I)#bEP)ZC]T*<$uX*r[;]+oW\b,lT+h-N5Fm.fLst/cIC%0E*^* +1]B612?#N52ZYlt!''sJO$(tJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,3rV/= +3;tl92Z>T52#]<11&`m+0E*R&/,h$t./kUn-N5:i,5rbb+TR4p_EcDrYPPNq\fAOrYthVrZ1t[rZM1`rZhCfr[%Okr[@apr[[t!r\"1'r\4=,r\OO1r\a[6 +r]'d8r]:$?q`Oa=q`ad>q*9KriB[9)pceRr]:$=r]'m9r\ja5r\XU1r\=C+r\+7&r[[str[@an +r[.UirZ_=brZM1^rZ;%ZrZ(nVrYkbRrYYVNq\K&Dp_<01jq@+rq\8f?rYGJLrYYMMrYkbTrZ(nXrZD+^ +rZV7crZqIhr[7[nr[Igsr[e%$r\+7)r\FI/r\XU3r\sg9q`4X:r]C!>q`Xg?pcnU?MEpr$q`am?q`Oa; +q`4X8r\sg7r\a[2r\FI-r\+7'r[n+"r[Igpr[.UjrZqIerZV7`rZ:qWrZ(nVrYkYNrYPGIq\9,G'`&O7 +'B9_o'DiL=(&JgH)#bEM)ZC]T*<$uX+9!D^+oW_c,lT+h-iPOn.K1js/cIC%0`Eg+1B'*/2#]B32uYf9 +3Vtl:48V/;4o7G<5L_rL5d`lS5PRG>4oRS@48q;?3W;#;2uY`72?#E41BB9fr\=C+r\+7&r[[str[@an +r[.UirZ_=brZM1^rZ;%ZrZ(nVrYkbRrYYVNq\K&Dp_<01jq@+rq\8f?rYGJLrYYMMrYkbTrZ(nXrZD+^ +rZV7crZqIhr[7[nr[Igsr[e%$r\+7)r\FI/r\XU3r\sg9!BE1=3W;)=48V/;4o7G<5Cl(s5_21O5_21r +5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOi^!B*pceRr]:$=r]'m9r\ja5r\XU1r\=C+r\+7&r[[str[Igor[.UjrZhCdrZV7_ +!$2.^*r[2Z*<$oV)Z(EO)#G-K(AejA'_2q"'(lq2'`/XE(AepI)#bEP)ZC]T*<$uX*r[8\+TZ73;tr83rV5?4SV):557A<5_22Z5l3e@55RMB4Sq5>3rV/= +3;tl92Z>T52#]<11&`m+0E*R&/,h$t.K1^o-N5=j,Q8nd+oWS_*r[2Z*<$oV)Z(EO)#G-K(AejA'_2q" +'(lq2'`/XE(AepI)#bEP)ZC]T*<$uX*r[8\+TZ7 +3;tr83rV5?4SV):557A=5`.i%5PRG>4oRS@48q;?3W;#;2uY`72?#H31B'$-0`E^(/cI:".fLmr-iPIl +-2o.g,5rbb+9!>\*W@&X)u^cT)?(KM(],!G'`]!D'_2q%'(Q_/'`/XE(B,-I)#bEP)ZC]T*<$uX*r[8\ ++oW\b,Q9"g-N5Fm.K1gr/H.7#0)dR(1&a!.2#]B32Z>Z73;tr;3rV5<4Sq;:557@l5_22.5l3e@55RMB +4Sq5>3rV/=3;tl92Z>T51]T<41Gf"br\4=)r[n+"r[Rmrr[7[lr[%OgrZ_=brZD+\rZ1tXrYthTq\fAM +q\T5Iq\Al?ne:-uob7!4q\B)Gq\T5KrYb\RrYthVrZ1tZrZD+^rZ_=drZqIir[7[nr[Rmtr[e%$r\4=+ +r\FI0r\a[5r\sg9!BE.?3Vtl:48qA;4o7G<5Cl(s5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOi^!B*pceRq`=^: +r]'m9r\ja5r\XU0r\=C+r\"1%r[e$ur[@anr[.UirZhCdrZD1_!?WE_*r[2Z*<$oS)ZCWR)#G-K(AJX> +'\=#n'_iF?(B,-I)#bEP)ZC]T*<$uX*r[8\+T3rV/=3;tl92Z>T52#]901&`m+0)dI%/H.-u./kUn +-N5:i,Q8nd+T'\=#n'_iF?(B,-I)#bEP)ZC]T*<$uX*r[8\+T4o7A@48q;< +3W;#;2uY`72#]<11B'!,0E*U'/H.1!.fLjq-iPIl,lT%f,5r_a+9!>\*W@&X)u^cQ)?(KM(]G0N'c$Q[ +p_;Eqob@09rYGAIrYYMMrYkbTrZ(nXrZ;%\rZM1arZhCfr[.Ulr[@aqr[[t"r\"1'r\=C-r\OO2r\ja7 +r]'d8r]:$?r]Ks=pceI;e3JRM[6XURpceRq`=^:r]'m9r\ja5!&O^52#]901&`m+0)dI%/H.-u +./kUn-N5:i,Q8nd+T'\=#n'_iF?(B,-I)#bEP)ZC]T*<$uX*r[8\ ++Tr]C!>q`X^lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp4oRS@48q;?3Vtf82uY`72?#E21B'$-0E*U'/cI:".fLmr-iPIl-2o.g+oibe ++X-h-rZD+\q],SSrYkYOrYYMKq\Ji>g(a;sp_NiFq\];Mq\oGQrZ(nXrZ;%\rZM1arZhCfr[%Ojr[@ap +r[Rmur\"1'r\4=,r\OO1r\a[5r\sg9r]0s=q`Fd>pc\LrYPGK +rYbSOrYthVrZ1tZrZD+^rZ_=drZqIhr[.Umr[Igrr[e%$r\+7)r\FI/r\XU3r\ja7r]'m;r]9ppHXL!pcnO;q`Xp@r]C!rYPGKrYb\Rq]#MSrZ1kXrZM1arZhCfr[.Ulr[@aqr[[t!r\"1' +r\4=,r\OO1q_n=2r]0s=q`Fd>pc\Lb?O)u^iV +*W@,Z+9!D^,5rhd,lT+h-N5Fm.K1gr/H.:$0E*[)1B'*/2#]B32Z>Z73;to=3][7%q`Fd>pc\LlJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp +q`=^:r]'m9r\ja5r\OO/r\=C+r\"1%r[e$ur[Igpr[.UjrZqIerZV7`rZD+\rZ1kUrYthTrYbSMq\T#C +neL^0lkTC5q\T,HrYbSOrYthVrZ1tZrZD+^rZV7brZhCgr[.Ulr[Igrr[[t"r\"1'r\=C-r\OO1r\ja7 +q`+R8r]:$?q`Oa=pceI;pHXL!ofr=;q`Xp@q`F[9q`+R6r\a[3r\OO/r\=C+r\"1%r[e$ur[Igpr[.Uj +rZqIerZV7`rZD+\rZ1tXq]#DMq\T>M(]>0F(@i42'^QS3(AepF)#bEM)ZC]T*<$uX*r[8\+TZ73;Y`83rV5<4Sq;:557@i5_22.5kRA=55RM?4T7G>3rV/= +3;tl92?5T82)Y@hr\FI-r\4=(r[n+#r[Rmrr[@amr[%OhrZ_=brZM1^rZ;%Zq],SSrYkbRq\]2Hp_NE8 +neCF*q\K&Fq\];Mq\oGQrZ(nXrZ;%\rZM1`rZ_=dr[%Ojr[7[or[Rmtr[n+%r\+7*r\FI/r\XU4r\s^6 +r](!?3WM5?48V/;4nq595Cl(p5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOi^!0$q`adr]:$=r]'m9r\ja5r\XU1 +r\FI-r\+7'r[n+"r[Rmrr[7[lr[%Oh!$_Lh,Q8kc+TZ73;tr83rV5<4Sq;= +54q/65_22Z5kRA=557;?4Sq5>3rV/=3;tl92Z>T52#]<11B'$-0E*U'/cI:".fLmr-iPIl-2o1h,Q8kc ++TZ73;tr83rV5<4Sq;=54q/75_hVt5PmYA4o7A@48V)<3W;#;2uY`72?#H3 +1]B0/1&`j*0)dI%/,h$t.K1^o-N5=j,lT"e+oWV`+9!>\*W@&U)u^cQ)$(Qkr>>;GobR!2mhY[7q\]2J +rYkbTq],JSrZD+^rZV7brZqIhr[.Umr[Igrr[[t"r\"1'r\=C-r\OO1r\aR3r]'m;r]9pr]:$=r]'m9r\aa6!Aub62#]<11B'$-0E*U'/cI:".fLmr-iPIl-2o1h,Q8kc ++TZ73;tr93WM5?48V/;4o7G95Cl(p5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOha$j!pceR< +r]L'>r]:$=r]'m9r\ja5r\XU1r\FI,r\+7'r[n+#r[Rmrr[@amrZqOi!@/ri,Q8nd+oWV`+9!>\*W$iU +)uCQN)>G';(\ed7(\ejE)?(QO)u^iV*W@,W+9!D^,5rhd,lT+h-N5Cl.K1gr/,h."0)dO'0`Eg+1]B61 +2?#N52uYf93Vtl:48V/;4nq565P@?n5i+d!5PRG>4oRS@48q;?3W;#;2uY`72?#H31]B0/0`Ea)0)dI% +/H.-u.K1ap-N5=j,lT%f,5rbb+TZ73;tr83rV5<4Sq;:54q/75_MDt5PRG>4o7A= +48V&;3;tl92Z>T52#]<11B'!,0E*U'/H.1!.fLjq-iPIl-2o1h,PrY`+T+j; +(\JR:(]G9N(],'E)?(QR)uCWS*W@,Z+8[2[,5rhd,l8qf./k[p.fM!u/cIC%0E*^*1B'*/2#]B32Z>Z7 +3;tr;3r;#94Sq;=54Uqc5_22+5kRA:55RMB4Sq5>3rV/=3;ti:2?>]or\a[3r\OO/r\4=)r\"1%r[e$u +r[Igpr[.UjrZqIfrZ_=brZM1^rZ;%Zq],SSq\o>Lp_`H9p_N<7p_`lGrYkYQrZ(nXrZ:qYrZM1arZhCf +r[%Ojr[7[or[Rmtr[n+%r\+7)r\=C.r\XU3r\ja7r]'m;q`4a>3rhA>4Sq;:54q-k5bgSq5_21O5bp[E +6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)b +rmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Md +rl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO&*Xofr48q`Xp@q`Fd4oRS@48q;?3W;#82uY`72#]<1 +1B'$-0`Ea)/cI=#/,h!s./kUn-N5=j,lT%f,5rbb+T3rV/=3;tl62Z>Q41]B0/1&`m+0E*R&/H.1!.K1ap-iPIl-2o1h,5rbb+T4Sq;:54q-k5bgSq +5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/ +rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5 +rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO&*Xofr48q`Xg=q`Fdb?L)uCWP*W@,Z+9!D^+oW\b,Q8tf-2o7j-iPOn +.K1js/H.7#0)dO'1&`s-1]B612?#N52uYf93Vtl:48V/;4nq595O^ph5i+d!5PRG>4o7A=48q;?3W;#; +2uY`72?#H31]B0/1&`m+0)dI%/H.1!.fLmr-iPIl-2o1h,Q8nd+oWV`+8[,Y*W$iR)u(?H)=JF2)>b?L +)uCWP*W@,Z+9!D^+oW\b,Q8tf-2o7j-iPOn.K1js/H.7#0)dO'1&`s-1]B612?#N52uYf93Vtl:48V/; +4nq595Oh!l5kRA=557;<4T7G>3rV/=3;tl92Z>T52#]<11B'$-0`E^(/cI=#/,h$t./kUn-N5=j,lT%f +,5rbb+Tb?L)uCWP*W@,Z+9!D^+oW\b,Q8tf-2o7j-iPOn.K1js/H.7# +0E*[)1&`s-1]B6.2Z>Z73;tr;3r;#<4SV)7557@c5_22+5kRA:55RM?4Sq5>3rV/=2ukl<2`L^or\a[3 +r\OO/r\=C+r\"1%r[e%!r[Rmrr[7[lr[%OhrZhCdrZV7`rZD"YrZ1kUq]#;Kp_iN;mhu!@q]#DPq]5YW +rZD+^rZV7brZhCfr[%Ojr[7[nr[Igsr[e%#r\"1'r\=C-r\OO1r\a[5r\sg9r]0j:r]:-C4T.D>4nq59 +5Cl(j5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOha$`sq`adZ73;Y`83r;#<4SV):54q/05_22W5k7/:557;<4Sq5>3rV/=3;tl9 +2Z>T52#B*.1&`m+0E*U'/H.1!.fLmr./kUn-N5=j,lT%f,5rbb+T!8[*r?uT*;CK/)Yb9K*;^cR*r[8\ ++TZ73;Y`83r;#<4SV):54q/15_MDn +5PmY>4oRS@48V)<3W;#;2uY`72?#H31]B0/1&`m+0E*U'/H.1!.f1Xn-i54e,Q8nd+oWV]+9!;^*?G)! +q],AMh&?&-q],JRq]>_YrZM1`rZ_=dq]u.fr[7[nr[Igrr[[t!r[n+&r\4=+r\FI/r\XU3q`"L6r]0j: +r]C!>pc\LY*W$iO)r2G-)uCWP*W$oW+9!D^+oW\_,Q8tf-2o7j./k[p.fLst/H.7# +0)dR(1&`s-1]B612?#N52uYf63W;):3rqH+!'L$>q`a[;JO#bkJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3r:r:3;tl92Z>T52#]<11B'!,0E*U'/cI=#/,h!u.01kHr[@amr[%Ohq]l(arZV7`q]GeYq]5GO +f,OK)q]5YWq]Ge[q]Yq_rZhCfr[%Ojr[7[nr[Igrr[e%#r\"1'r\4=+r\FI/r\XU3r\ja7r]'m;r]9p< +q`Oa=pce@8n3DOihE^Nopce[?q`Oa;r]9p:r]'m9r\ja5r\XU1r\FI,r\+7'r[n+#r[[str[Igpr[.Uj +rZq@crZ_=brZM([rZ:qWp`.m)p`0/OrZ:qYrZM(]rZ_=drZqIhr[.Ulr[@apr[Rmur[n+%r\+7)r\=C- +r\OO1r\a[5r\sg9r]0s=q`F[;q`X^3;tl9 +2Z>T52#]<11B'!,0E*U'/cI=#/,h$t.K1ap-N5=j,l8hc,5rbb+T!8[*r?uQ*7l/)*;^cU*r@&Y+T!>] +,5rhd,lT+h-N5Cl./k[p.fM!u/cIC%0E*[)1&`s-1]B612?#N52uYf93W;):48_2@4Sq;:54q-k5b1/k +5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/ +rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5 +rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO%mRofr48q`Xg=q`Fd],5rhd,lT+h-N5Cl./k[p.fLst/H.7#0)dO' +0`Eg+1B'*,2?#N52uYf93Vtl:48V/;4nq535O^ph5hJ?p5PRG>4o7A=48q;?3W;#82uY`72?#H31]B0/ +1&`j*0)dI%/H.1!.fLmr./kUn-N5=j,lT%c,5rb_+T!8X*r$c9*;(?L*r@&Y+T!>],5rhd,lT+h-N5Cl +./k[p.fLst/H.7#0)dO'0`Eg+1B'*,2?#N52uYf93Vtl:48V/;4nq535Oh!i5lO%A5PRG>4o7A=48q;? +3W;#;2u>N12#]<11&`m+0E*U'/cI=#/,h$t.K1ap-iPIl-2o1h,Q8na+oEG_+TZ,Q8tf-2o7j-iPOn.K1gr/,h+!/c.4#0`Ej,1]B612?#N22uYf93W;):48V/;4nq535Kc4o7A=48q8@3<;-#r]'d6r\ja5r\XU1r\FI-r\+7'r[n+#r[[str[Igpr[7[lr[%OhrZh:arZV.] +q]G\Vp`8B7oc_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%mRniun5q`Xg=q`FdZ73;Y`83r;#<4SV)754q/-5_22Q5k7/755RM?4Sq5>3rV/: +3;tl92Z>T52#]<11B'$-0`Ea)0)dI%/H.1!.fLmr./kUn-N5=g,lT%c,5rb_+S[&7*r$iS+T!>Z,5rhd +,lT+h-Mo1i./k[p.fLst/H.7#0)dR(1&`s-1]B612>]<22uYf63W;):48qA;4nq565OLdf5lO%A5PRG; +4o7A@48V)<3W;#82u>K32#]<11B'$-0`Ea)0)dF!/,h!s./PCk-N5=j,l8hc+ori1r?;%\p`J<5p`KAU +q]Yq_q]l(cr[%Ojr[7Rkr[Rmtr[e%#r\"1'r\4=+r\FI/r\XU3r\ja7r]'[5q`F[;pc\LZ73;Y`83r;#< +4T%A@4nq565Cl(g5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOfg,*mpceI9r]L'>q`=^:r]'m9q_nF2r\XU1r\F@)r\+7' +!%e4'/cI9t.fLjn-iPIl-2Ste,Pr\^+oN42?#H3 +1]B0,0`Ea)0)dI%/,Lgq./PCk-N5=g,lT%c,5WP\+R^EI*qCEJ+T!>],5WVa,l8ne-N5Cl./k[p.fLst +/H.7#0)dO'0`Eg+1B'*/2#]B32Z>Z73;Y`83r;#94SV)754q/.5_23"5k7/755RM?4Sq5;3r:o92uY`7 +2?#H31]&s,0`*O&/cI=#/,h$t.K1am-iPIl-2o1e,68u4r?D+^q]PGOocEcJocX5Wq]c"aq]u.er[.Ul +r[@Xmq^_Xsq_%k$r\=:*r\XL0r\ja7r]'d8r]9p@pceI9r]L'>!':$=r]0s; +r\s^4r\a[3r\OO/q_8"&r\"1%r[[jqr[@Xkr[.Ujq]u.cq]bn\q]P>Lp`AuJp`TGWrZ_4arZq@er[.Ul +r[@apr[Rmtr[e%#r\"1'r\4=+r\FI/r\XU3r\ja7r]'d8r]9prB9p>ofn!mRQuEhJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%RIpcnO;of`::q`F[9r]0j8r\sg7 +r\a[3r\OO/r\=@*!AH5,0E*U'/cI]<22uYf63W;):48V/;4nq535Nb:_5gM^j5PRG84oRS@48V)<3Vtf82uY`7 +2?#H31]B0/1&`m+0`Ea)0)dI%/Ggss.fLmr./PCk-MSnd,kWDN,4?cR,l8ne-Mo1i./PIm.fLst/H.6u +0)dO'0`Eg+1B'*/2#]B02Z>Z73;Y`83r;#94Sq;:54Ur%5_22q5kRA:54q)<4Sq5;3rV/=3;YZ32?#H3 +1]B0/1&`m(0Dd@#/H.0s.f1Xn-i>:k-MSnd,kWDN,4?cR,l8ne-Mo1i./k[m.fLst/H.7#0)dO$0`Eg+ +1B'*/2#]B32Z>Z43;Y`83rV594Sq;:54UqT5_21q5kmS=54q)<49.J@48V)<3Vtf82uY`72?#H31]B0/ +1&E[(0E*U'/cI]<22uYf63W;):48V/;4o@MB54Uph5a4Nb5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`- +r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKi +rqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXop +rcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%RIofr+5q`Xg=q`FdN4 +2?#H31]B0/1&`p,0`Ea)0)dI%/H.1!.f1[o./PCh-Mo+^,j$?H,l8nb-Mo1i./k[m.fLst/H.7#0)I=$ +0`Eg+1B'*,2#]B32Z>Z73;Y`53rV5<4SV)754Ur%5_22q5k7/7557;<4T7G>3rV/:3;tl92Z#B22#]<1 +1B'$-0`Ea&0)dI%/H.1!.f1[o./YFm-i57f-1rPM,Q8tf,PWP]-2T%d-iPOn.K1go/,h+!/cIC%0DdI& +1&`s-1]B6.2?#N52uYf63W;):48V/;4nq505Jf[:5bgU;5P75;4oIJD4?WL&r]9p:r]'m9q_nF2r\XU1 +r\F@*r\4=)r\"1%r[e%!r[Rdor[@Xkq^21dod&ZEpa#__q^21fr[@apq^VRqr[e%#r\"($r\4=+r\FI/ +q_\:0r\ja7r]'d8q`=^lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_JO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,T51]T?01]B0/1&`m(0E*U$/cIN42?#H01]B0/1&`m(0E*U$/cIT33W;)748qA84nq535JKI75bLC8 +5P75:4TR]/q`Oa;q`=^:q`+R6q_nF2r\XL.r\FI-r\44&r\"("r[dpsq^V@ipaGASodK\dq^VInr[dpu +r\"1'q_8"(q_J.,q_\:0r\jX4r]'d8r]9g9r]Kj:q*"dBniq[jO[+I_JO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpN42#oH61c51fq_J.*q_8"&q_%k"q^hUpq^V7fkpZ3Rq^VInq^hUrr\"($r\4=+ +r\F@,r\XL0r\jX4r]'d8q`=U9q`Oa=ofhh/j?S8]bWtV]pceI9q`Oa;r]9p:q`+R6q_nF2r\XU1q_J.* +q_8"&q_%k"q^hUpq^V7fkpZ3Rq^VInq^hUrr\"($r\4=+r\F@,r\XL0r\jX4r]'d8q`=U9q`Oa=ofhh/ +jZnA^nj)Y.pceI9q`Oj>q`=^:pc/73q_n=.r\OF,r\=:(r\+.$r[n%!!%e+"paYqckpZr&sp>q`Fdrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOa$B;^ofi.6q`Oa;q`=U7r]'d6r\aa6!Aub32#B*. +1A`g*0`*O#0)I6q/GLa[.eP=h/Gh$r0)I=!0`Eg(1B'*,2#]B02Z>Z43;Y`83r;#64SV)754Uqp5_22? +5kRA7557;<4Sq5;3r:r:3;YZ62Z>T22#B*.1A`g*0`*O#0)I6q/GLa[.eP=h/Gh$r0)I=!0`Eg(1B'*, +2#]B02Z>Z43;Y`83r;#64SV)754Uqq5_22e5kRA:557;94Sq5>3qt`73;YZ62Z>T22#B*.1A`g*0`*O$ +/c[O'/bL[i/*SPV/,Lmp/c.0t0DdI&1&`s*1]B6.2?#N22u>T63Vtl748V/84nV#05Ij%15ajt25P72? +4o%8<4Sq5;3r:r:3;YZ62Z>T22#B*.1A`g*0`*O#0)I6q/GLa[.eP=h/Gh$r0)I=!0`Eg(1B'*,2#]B0 +2Z>Z43;Y`83r;#64SV)755[Y>5Cl(X5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOa$B2[pce73r]L'>q`=L4r]'j8!B2t: +2Z#B/2#]<.1A`g'0`*Nu0%V]M0)I=!0`*U%1A`m,2#B0-2Z>Z43;Y`83qtf64S:l454Uqm5_22?5k7/7 +54Ul94Sq5;3qt`73;tl92uY`42>]601]&s)1&E[%0DI0O/bgsq0DdI#1&Ea'1]B6.2>]<22u>T33W;)7 +48V/54nq535MSMT5jUc,5PRG54oRS@48V)93Vtf82u>N12>]601]B0)1&N^*0`*O#0%;KJ0)I=!0`*U% +1A`m,2#B0-2Z>Z43;Y`83r;#64S:l454UqH5_21h5k7/74odb;4oRS@48V)63W;#82uY`42>]601]&s) +1&E[%0DI0O/bgsq0DdI#1&Ea'1]B6.2>]<22u>T33W;)748V/54nq5:5PdTq5_q[V5_21O5bp[E6N0@L +7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeu +rnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fK +rji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO%7@niu\/pc\L:q`F[9q`4O5!&sg7r\jX2q_\:.q_J%'pb;Irmk4Aemk4Agq_7n%q_J.,q_\1-q_nF4 +q`+I5q`=U9q`OX:ofhh/gH^Z43;Y`53r;#94Sq;454:_E5_21h5k7/655[V> +4o7A=48V)93Vtf52uY`42>]601]&s)1&*Ht0CLOg/ak=e0DdI#1&Ea*1]'$+2>]<22u>T33Vtl748V/8 +4nV#45PdTq5_q[V5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1 +rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^ +rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO%.=mm$J/pc\C7q`F[9q`+X9r&FR4r\jX2q_\((q_Iq$oe>M] +pb;ItpbM_&q_\1-q_nF4q`+I5q`=L6pcS=7pce75eNe[N_a*ZTofi.6pcSF8q`=U7q`+I3r\jX2q_\(( +q_Iq$oe>M]pb;ItpbM_&q_\1-q_nF4q`+I5q`=L6pcS=7pce75ej+dOks4]%pce@6pcSF8q`=^:q`+I3 +q_n=/q_\1+r%e4+pbDFqlnA>lr\+%#pbDY$q_S"(r\aI/r\s^6q`4O7pcJ@8pc\:6nis?DJO#Pemm$b7 +q*+R:pcSF8q`=U7q`+I3r\jX2q_\((q_Iq$oe>M]pb;ItpbM_&q_\1-q_nF4q`+I5q`=L6pcS=7pce:6 +!'c$"Jj=lPJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpN53qtf64SV)154:_d5_2265k7/454q)94SV#83r:r73;YZ02Z#B/2"`Zt1?L=a1AE[#2#B0- +2Z#H13;>N53qtf64SV)154:_e5_22\5k7/454q)94SV#;3qt`43;YZ32Y]0-1]TB*1\``f1%I*p1\`g+ +2>B*,2u>T33Vtl448V/84n:f*5HmD(5`n>&56*n@54q)94SV#83r:r73;YZ02Z#B/2"`Zt1?L=a1AE[# +2#B0-2Z#H13;>N53qtf64SV)154Cc:5Cl(O5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO^-M6RmlpM0pcSF8rAjs?3r:r7 +3;>H02Y]0,2"EH_1A*Hr2#B0*2Z#H13;Y`23r;#64SV)453tMa5_2265k7/.557;94Sq5>3rV2;3Vtf2 +2u>N.2>]6$1ZL7`1\EU%2>B*,2u>T33VYZ448:r54nV#*5Lr)N5iY-#5Oq#54o7A@48qA>48V)93Vtf2 +2u>N/2#oN22"EH_1A*Hr2#B0*2Z#H13;Y`23r;#94SV)153tM<5_21_5k7,>54Cc24nq/:48V)93Vtf2 +2u>N.2>]6$1ZL7`1\EU%2>B*,2u>T33VYZ448:r54nV#+56*p!5_;7P5_21O5bp[E6N0@L7/f^U8H)6\ +:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.E +rpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mm +rgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO$h4lp(8/ +of`(4qE"^>48V)63Vtf22u#<(2:OJU2>]<,2u#B03VYZ448:r24nV#*5LMfJ5e95I5PRG84nq/:48q>= +3qt`43;>H-2YArW2"`a'2Y]6+3;Y`23r;#64S:l153tM_5_22Y5jpr154q)64SV#83r:r73;#6.2Z5Q/ +2:48R2>]<,2u>T03VYZ448:r24nV#*5HR2%5`S,%5P[P=54q)64SV#83qt`43;>H-2YArW2"`a'2Y]6+ +3;Y`23r;#64S:l153tK75X9lcJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp48Cu53qt`13;>H$2Wcmc +2Y]6+3;>N23qYT34S:l154:_X5_22-5k7/.557;94SV#53qt`13;>H$2Wcmc2Y]6+3;>N23qYT34S:l1 +54:_Y5_22S5k7/154q)64SV#83qt`.2utrsrAX1'ju)Tcq`"L6r\s^6pc8+1q`Fd>r]C!>of_t3mm!U5 +JO##VqEOd?mlpM0pcS=5pcA11pc/%-ml';cml'r"pc/%/q`=C3q`OO7ofhh/p-=0oJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp4?W9uq`=C1pc.q*e2I(\of2_,pcA:6ofW"4nilD)aZtDBZpU*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,Ai2t&a$3V>H+47t`24mtT*5Joa;5dAi2t&a$3V>H+47t`24mtT*5K#g<5hA9f5Oq#24nUr447tZ43W1u/38cad3;#<)3qtf0 +4S:l.54:_-5_21S5lEq:5OUf24nUr447tZ-3V>Ai2t&a$3V>H+47t`24mtT*5O^ph5_21O5_21O5bp[E +6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)b +rmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Md +rl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO$2"lp(8/pHA=8pcS+/ofBrMofDY*pcS=7mlp)&^d*H9W'K]6pceI9pc\C7niQM*_E%9MniQV/ +pc\(0lp&U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,5a3V#6%47t`,4mtT$ +5JTO85c?s75OUf24mtN+47>5a3V#6%47t`,4mtT$5J]U95gDX]5OUf24mtN,3rhA23ncUb3q>B*4S:l+ +53Y;$5_21O5l5a3V#6%47t`,4mtT$5OC^e5_21O5_21O5bp[E6N0@L7/f^U8H)6\ +:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.E +rpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mm +rgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO#tqks+o+ +q*+@4ofV\)e2m%[pcS".mlou#\j1g3U-Rs-pceI:nicY.mlT#[mlU;,mlg,'ks)dFJO%:Alp'r&mlg>+ +!BWC544cOa48qAA48:r,4mtT!5F"Kb5_22o5j:N%54Ul04RYA]3q#0*4RYH%53Y;p5_21O5_21O5_21r +5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cORR$+%!'^*?krnJte3!+]mlg,'ks)Frn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cORR$+%!']R0mleNMmlfesks)FU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,/m5D)4P5_22]5j:Mq5-R3453Y;^5_21O5_21O5_21r5lO+L +6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOLd:f$n3?&!b<=uOi'3i!JO"uUq`jO6k!$sOk!%]fTKn&nX[),8m6:A1b<=uOi'2cXqETTsJO%sT +ks+;ob<=uOi'5FNJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, +_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO!C/p%5JfV<5Ee?`5_23"5hA6; +52&5c5_21r5i+a(5JKD95Cl)f5_21O5ghpL5JfV<5JTO85_21O5_21O5bp[E6N0@L7/f^U8H)6\:&[oe +;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^S +rq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnL +rf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOm6Hh!KKt)R +JO&QeP!=XcJO#A`n3<[4JO&*XJO"cO^d+&IYslJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYprn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO%OHc9HkFk!4J_JO%LGc9HkF +kU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOnNa3@JO&<^JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOPsF_$mQ\6Gf0>!TJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, +_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO#elks,)0lTW0Ki'-9f +P!FR`JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOVa0T5n36e7krm3Pj#ursk!,># +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$b2ks+W#o0!(:ofV\)c8tMX +niZA(nil;&W^),#JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYprn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cO^Hh-MmlpM0ofN7:3rhAA4Sq553q>;e3:&[&3qYT*4S:l.53Y;<5_21O5_21r5lO+L6i0:N8,c'Y +9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cO_EdHPofi.6ofVq0!'Bs:of;\)f/N7[of;e.pcJ.2pc\13ks)UA +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,r]C!>of_k0mm"6GJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,MY2>B*,2uYf92u>T03Vtl747t`/4nV#*5J0745_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO%CDniuS,q`Xg=ofN%3pc/@73;ki62u#<+ +2=`U'1]B6"1[d0q2>]<,2u#B03VYZ448V/54nV#*5JKI75_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u +=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_ +rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4 +rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO%CDofr+5nick4pcJ@6q`4O5!B2t62u>N12>&fp1\*B*/2u#B- +3W;)748:r24nq505JKI75_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Ko +re:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWi +rq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO%UJniu\/ +q`XU7q`F[9r]0j8pbr432Z5Q22>]6'1\``W1&Ea$1\`g(2>]T33VYZ448V/54nV#-5K,m=5_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO%^Mniu\/pc\U=pcJ@6q`4O5q`"C1!Au_7 +2>]6-1\`a&1%d6V0DI6r1&Ea'1]B6+2>]<22u>T03W;):48:r54nV#-5KH*@5_21O5bp[E6N0@L7/f^U +8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6 +roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5 +ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO%^Mofr+5of`17q`F[9q`4X8pc&(.r\X^52#T9.1]&s)1&EZt +0AnJU0DdHu1&Ea*1]'$+2>]<22u>T33W;)448qA54o7G35KH*@5_21O5bp[E6N0@L7/f^U8H)6\:&[oe +;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^S +rq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnL +rf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO%pSniu\/q`Xg=pcJI9q`4O5q`"L4r\aR0r%e=/q_J.*q_7duq_%ath(8=Q +pb)Fsq_7n%r\FI/pb_t-q_nF4q`+I5q`=^lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYpN42>]601]&p.0eiY_q_8"&q_%Xqq^hUp +h(&(Jq^hUrr\"($r\44(r\F@,r\XL0r\jX4r]'d8r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp]6-1]B0/0``s^!&4:' +q_%atq^hUppaY)Kq^V@kq^h^uq_%k$q_8"(q_J.,q_\:0q_n4/r]0j:q`F[;of`19nitDbJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,T33W;)= +48:r54nq535LD`I5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1 +rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^ +rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO&6\ofr"2q`Xg= +q`F[9r]0j8r\sg7r\a[3q_S4,r\=C+r\+.$!A,l'/cIZ73;Y`83rV594SV)754:_f5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOj$<9%pce@6q`Oa;r]:$=q`+R6r\jX2q_S4,r\=:(r\+.#!A#c%/Ggss +.fLmr./51h-MSn[,kWDT,kWJ\-Mo1i./PIm.fLst/H.6u0)dO'0`Eg+1A`m,2#]B32Z>Z43;tr83r;#< +4S:l454Uqi5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOk!8T(ofi79q`Oa; +q`=^:r]'d6r\ja5r\XL.q_@t$r\"1%r[e%!!@fQ!.f1[i-iPIl-28b_,MaR:,Prb`-2o7j-i5=k.K1gr +/,Lms/c.4#0`Eg+1A`p-2?#N22uYf63W;)=48V/54o7G65M&/O5_21O5bp[E6N0@L7/f^U8H)6\:&[oe +;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^S +rq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnL +rf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO&?_ofr48pc\U=q`F[9r]0j8r\sg7r\a[3r\OO/r\=C+r\+7'r[n+#r[[st +r[@jr-ib[m-iPIi-2o1e,Pr\^+ke(9+o!8\,Prbc-2o7j-i5=k.K1gr/,h+!/cIC%0E*[)1&`s-1]B61 +2>]<22uYf63W;)=48:r84o7G35MAAR5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(D +rc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BD +qu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLF +ra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO&?_ofr=;pc\L:q`FdT63W;)7 +48qA>4nq535MAAR5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1 +rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^ +rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO&Qeofr+5q`X^: +r]C*?q`4O4r\ja5r\XU1r\FI-r\4=)q^q[qr[Rdnr[.^n-3,Cl-2o1h,Pr\a+o*V^]Q+8[2X ++oW\_,Q8tf-2o7j-i5=k.JkXp/H.:$0E*[)1&`s-1]B612?#N22uYf93W;):48V/84nq595MAAR5_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO#Jcm6BAjJO$(tJO"cOJO"cOJO"cOJO"cOJO&Qeofr48q`Xg=q`Fd_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO#Jcm6BAjJO$(tJO"cOJO"cOJO"cOJO"cOJO&QepcnF8q`Xg=r]C!],5rhd,lT+h-N5Cl./k[p.f1dr0)dO'0`Eg+1B'*/2#]B32Z#K23W;)=48V/84o7G65N"eX5_21O +5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABK +rlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$ +rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO$>&eN^u:JO$q7JO"cOJO"cOJO"cOJO"cOJO&Zhofr48q`Xg=q`FdZ,Q8tf-2o:k./k[p.fLst/Gh(!0`Eg+1A`p-2?#N52uYf93Vtl44Sq;:54q.u5_21O5_21r5lO+L +6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cO\No(;l9\*W@&R)uCQK);lA,)>b?I)u^iS*W@,Z ++9!D^+oW\b,Q8tf-2o7j-i5@l/,Lpt0E*[)1&`s*2#]B02uYf93W;):48qA;4nq565N>"[5_21O5bp[E +6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)b +rmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Md +rl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO$b2ks+,jcp$\YJO%@CJO"cOJO"cOJO"cOJO"cOJO&ZhpcnO;q`Xp@pcJI9r]0s;r\sg7 +r\a[3r\OO/r\=:'r[n+#r[[ssr[@anr[.LfrZh:`!?WB`+8[,Y*W$iU)uCQK)>G'J(]G9E(]G9N(\/FB +)>b?L)uCWP*W$rX+T"[5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=l +riZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@D +ro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO%:Ai'6-`r&s@/h*1'fJO%[LJO"cOJO"cOJO"cOJO"cOJO&lnofr48 +q`Xg=q`Fd"[5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jX +rd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6Tm +rqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO%CDks+;ol93f`j$)foJO&!UJO"cOJO"cO +JO"cOJO"cOJO&lnofr48q`Xg=r]C*?r]0j8r\sg7q_\:-r\=C+r\+7&r[e%!r[Igpr[7[krZqIfq]Yq\ +q]5bX*;plV)u^cQ)>b9J(\/@%(&/R>(],'K)>b?O)uCWS*W$rX+T!A^,lT+h-N5Fm.K1gr/,h."0)dR( +1&`s-1]'',2uYf93W;)=48V/84o7G<5N>"[5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO%CDmm$&#lok&)i]QZmk!&?# +JO&!UJO"cOJO"cOJO"cOJO"cOJO&lnofr48q`Xp@q`Fdb?O)u^iV*W@,Z+9!D^+oW\b +,lT+h-N5Cl./k[p/,h."0)dO$1&a!.2#]B32Z>Z73;tr;3r;#94Sq;=557A&5_21O5_21r5lO+L6i0:N +8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOe3N7_mlp2'l9,#-r]C*Ar]B7)mlg#$mlu@gi]r&[JO"cOJO"cOJO"cOJO"cOog&::pceR +r]9p:r\s^4r\XL.r\=:'r[n!tr[@anr[.Uiq]l(`rZM1^rZ:qV!?2sX)u^cT)>b9J(]G3C("!`m(&/RD +(],'K)?(QR)u^iS*W@/X+T]?33;tr;3rV5<4Sq;= +54Ur&5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOg-G!hmlpD-niZn5r]K[3qE+R8ju`5unicG*lp$%dlTg"dJO"cO +JO"cOJO"cOJO"cOog&::pce[?q`Oa;r]:$=r]'m9r\ja5r\OO/r\=C+r\"1%r[e$ur[Igpr[.UjrZhCd +rZV7`q]>_Vq\oPS)?:]Q)#b?K(AJX>'`JdF'\sGq'_iFB(AepI)#G3M)ZC]T*<$uU+9!G_,5rhd,lT.i +-iPOn.fLst/c.4#1&Ed+2?#N52uYf93W;):48qA;4oRY95NtFa5_21O5bp[E6N0@L7/f^U8H)6\:&[oe +;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^S +rq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnL +rf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO%pSlp(/, +nicP+niQP+jZ;ilofW"4losl&JO&NdJO"cOJO"cOJO"cOJO"cOJO&lnpcnX>q`Xg=r]C*?r]0j8r\sg7 +r\a[2r\FI-r\+7'r[n+"r[Rmrr[7RhrZh:`rZD+\rZ1tXrYthT!>uaT)?(KM(],!I(%i9g'E/^F'DiL= +(&JdD)#bEP)ZC]T*<$uX*r[8\+T!A^,lT+h-N5Fj.fM!u0)dO'0`Ej,1]B6.2Z>]53W;)=48V/;4o7G9 +5NtFa5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=l +riZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@D +ro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO&$Vmm$A,of_t1ofMq0o/Z+sloOf$q`OF4nilM,JO&WgJO"cOJO"cO +JO"cOJO"cOJO&uqpcnO;q`Xp@q`FdlXR)#G-K(AejD'_N-h')3.5'`/XE(B,-L)#bEM)ZC`R*W@/[+T4nq595NtFa5_21O5bp[E6N0@L7/f^U8H)6\:&[oe +;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^S +rq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnL +rf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO&6\lp(&) +pc\:4r]Bd6of;V'i]-]nofDt3r]L0Aq`Oa=losl&JO&imJO"cOJO"cOJO"cOJO"cOJO&uqpcnX>q`Xg= +r]C!cOP(],!I(&J^B +'CQRr&aU/*'DiL@(&f!J(]G9K)?(TP*<%#Y+9!D^,5WYb-Mo4j.fM!u/cIF#1&a!.2#]B32u>T63W;)= +48qA>4nq595NtFa5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1 +rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^ +rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO&6\niu\/of`17ofN%3of;\)q)@Uuni6D)pcA13pcS44 +nilV/JO&imJO"cOJO"cOJO"cOJO"cOJO&uqpcnX>q`Xg=r]C!_VrYthTrYb\Pr"f>LrYGAGrY5,@p_)'gne1g5p_<]Bq\K/IrYYVPrYkbTrZ(nXrZD+^ +rZV7crZqIhr[7[nr[Rdrr\"1(r\=C.r\XU3r\ja7r]'m;r]:$?q`Oa=q`ad>ks0ebJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp4o7A@48q;?3W;#;2uY`72?#H31]B-.0E*U'/Ggpr./kRm-2o.d+oWS\*W@#W)ZCWO +)#b2BrY+r;a:\(Xq\/i@q\AuErYYVPq]#MSrZ;%\rZM1arZhCfq^;@lr[[t!r\"1'r\4=, +r\OO1r\ja7r]'m;q`=L7r]U$?pcn+1JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,H- +2YAp.1c4MTpbhh)pc&(0q`4F4q`FR8r]T^6ofn!mpHX9pJO"cOJO"cOJO"cOJO"cOpd"^@pceR +q`4X7q_nF1r\OO/r\44%r[[str[Igor[%OhrZ_4^rZ;%ZrZ(nVq\f8IrY>ML'`]!G'`/R='"JVO')N@> +'`JjH(AepI)#G6N*<$uX*r[8\+oW\b,lT+h-N5Fm.fLst/cIF&0`Eg+1]B612?#N52uYf93W;)=48V/; +4o7G<5O:Xd5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JN +rh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!U +roj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO&Qeniu\/pc\C7q`F[9q`4O5q`"C1oelG"rA=:*r\XU1oecP' +pbr".q`+I5q`=U9ofW+7nilh5JO&rpJO"cOJO"cOJO"cOJO"cOJO&uqq`jj>r]U-@r]C*?r]0s;r\sg7 +r\a[3r\OO/r\4=(r[n+"q^MLlq]u.brZM1^rZ;%YrYthTrYb\PrYPGI!>Q=L(&epE'D3"/&_[fb&c34< +'DN:@(&f!J(]G9N)?(QR)uCZT+8[5\,Q9"g-N5Fm.K1gr/Gh+"1&a!.2#]B32Z>Z73;tr;3rV5<4Sq;= +557A/5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOlp1,+pce@6q`OX8r]9p:q`+I3q_n=/q_[t%r%dIkq_S"(q_e7/ +q`"C3r]0j:pcJ@8q`XL6niq[jrBPp!JO"cOJO"cOJO"cOJO"cOpd"gCpceRr]:$=r]'m9r\ja5 +r\OO/r\=C*r[n+#r[Rmqr[7[lrZqIfrZV7`rZD+[rZ(nVrYb\PrYPPLq\9,G'`AaC'DiF8&^(aV&bm"9 +'E/^C(&f!G)#bEP)ZC`U*W@,W+T +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOmm-G.pce@6q`Oj>q`=L4r]'d6r\jX2q_\1+q_Iq$r%RFjpbDY$pbVn+ +r\aR2q`"C3r]0j:q`FR8r]Tg9niq[j!'l*#JO"cOJO"cOJO"cOJO"cOr]p6CpceRr]:$=r]'m9 +r\a[3r\OF+r\+7&r[e$ur[@anr[%OgrZ_=arZD+\rZ(nVrYkYNrYPPLrY>DH!>?.F'DN42&^(aP&cNF? +'DiLC(&f!J(]G9N)?(QR)u^iV*W@/[+Trn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOmm-G.pceI9q`Oa;q`=^:q`+I3r\jX2r\XC+r\F7'p+QJ# +oe6:ur\+%#q_@k$r\OF.r\aR2r\s^6q`4O7r]Bd8q`XU9ofn!m!'l*#JO"cOJO"cOJO"cOJO"cOr]p6C +pceR')3'U&FU5.')N@A'`/XB(]G9N)?(TS*<$uX+9!D^+oW_c,lT.i./k[p/,h."0)dR(1&`s- +2#]B32Z>]53W;)=48V/>4o7G<5O:Xd5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(D +rc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BD +qu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLF +ra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO&Zhofr+5q`Xg=q`F[9r]0j8r\sg7 +q_e7-r\OF,q_A((pb2Fqr@[jsoe-+pq_7n%q_J%)r\XU3q_nF4q`+R8q`=U9q`Oa=ofi%5JNs3#JO"cO +JO"cOJO"cOJO"cOJO'3"pcnO;r]U-@r]C*?r]0s;r\sg7r\a[3r\F@)r\"1$r[[ssr[7[lrZqIerZV7_ +rZ;%ZrYthTrYb\PrYPPLrY>;E!>?+H'DN48&\/JD&cNF?'E/^C(&f!J(]G9N)?(QR)u^iV*r[8\+TZ73;tr;3r;#<4Sq;@557A/5_21O5_21r5lO+L6i0:N8,c'Y +9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +og&(4ofi79q`Oj>q`=U7r]'m9q_nF2r\XL.r\F@*r\44&r\"("p+-1podf\dq^q[tq_.h#r\=C-r\OF. +r\a[5q`"L6r]0j:q`F[;q`XU9niqjoJO"cOJO"cOJO"cOJO"cOJO'3"pcnO;r]U6Cq`FdDHr"B&Dp_*?6\Ie +rY5>HrYGAIrYYMNrZ(nXrZ;%]rZ_=dr[%Ojr[7[pr[e%#r\+.'r\OO1r\a[6r]'m;r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpZ43;tr83rV5<4SV)754Upm5_21O5_21O5_21O5_21O +5_23"5kmS@55RMB4T7G>3rV/=3;tl92Z>Q41]B0/0`Ea)/cI:".fLjq-N5=j,Q8kc+T'`JjH(B,-L)#bEP)ZC`U*W@,Z+Trn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOog&17pceRpc\C9ofn0rJO"cOJO"cOJO"cOJO"cOJO'3"pcnX>q`Xp@r]C!6%D')3'=&GQk7')iRA'`JjH(B,-L)#bEP +)ZC`R*W@2\+oW\b,lT.i-iPRo/,h+!0)dR(1&a!.2#]B32Z#K53W;)=48qA>4o7G?5O:Xd5_21O5bp[E +6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)b +rmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Md +rl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO&uqofr48pc\L:r]C!T52#]<11&`j*0)dF$.fLmr-iPFk,lT"e+TrY5>Hq\K/Jq\fAPrZ(nXrZD+_rZ_=er[.Ulr[Igs +r[e%$q_8")r\XU3r\ja7r]'m;r]:$?r]L'@q`amAlp-+eJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp5PRG;4o7A= +48q;<3W;#;2uY`72?#H31]B0/1&`m+0E*U$/cI=#/,h$t.JkOj-i#+f-MSn[-Mo1i./PIm.fLst/H.6u +0)dO'0`Eg+1B'*/2#]B32Z>Z73;Y`83r;#94T7M:557?s5_21O5_21O5_21O5_21O5_23"5kmS@55m_B +4T7G>3rV,<2uY`72>]3/1&`j*0)dF$.fLmr-iPFk,lT"e+T;GrYYMMrYthVrZ1t[q]Yqar[%Ojr[@Xor\"1'r\4=,r\XU3r\ja7r]'m;r]:$? +r]L'@q`amAlp-+eJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp5PRG;4oRS@48V)<3W;#;2uY`72?#H31]B0/1&`m+ +0E*U'/cI=#/,h$q.K1ap-i57f-2]%e,lT%f,lT%],lT+e-N5Ci./k[p.fLst/H.7#0)dO'0`Eg+1B'*/ +2#B312uYf93Vtl:48V/;4nq565D_XV5_21O5_21O5_21O5_21O5lO%D5PmYD4o7A@48q;?3W;#;2uY`7 +2>]3/1&`j*0)dF$.fLmr-iPFk,lT"e+TDJrYPPNrYb\SrZ(nXrZD+^rZV7cr[%Ojr[@Xor[n+&r\4=,q_\:1r\sg9r]0s=r]C*Aq`X^U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T52#]<11B'$-0`Ea)/cI=#/,h$t +.JkOm-iPIl-2Stb,Q&ba,5WPS,5rha,lT+h-Mo1i./k[p/,h+!/cIC%0E*[)1&`s-1]B612?#N52uYf9 +3Vtl:48V/>4nV#65D_XV5_21O5_21O5_21O5_21O5lO%D5PmYD4o7A@48q;?3W;#;2uY`72?#E21B'$- +0E*U'/H.-u.K1^l,lStd+TZ73;tr;3rV5?4Sq;:55me55_21O5_21r +5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOpd"U=q`adr]9p:r]'m9r\ja5r\XU1r\FI,r\+7'r[n+#r[[jpr[@anr[.Uj +q]u.cq]bq]lQQ-LrZh:cr[%Ojr[7[nr[Igrr[[t!r[n+%r\+7*r\FI/r\XU3r\ja7q`+R8r]9pr]:$=r]'m9r\ja5r\OO/r\=C*r\"1$r[Rmr +r[7[jrZhCcq]GeXq]#MPrYYVNrYGAGrY5>Fr"8uBp^s;5p_!B9q\/rCrY>DJrYPPNrYb\RrZ(nXrZ;%] +rZV7cr[%Ojr[@aqr[[t"r\+7)r\FI/r\XU3r\sg9r]0s=r]C!>q`Xg?r]fa7JO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T52#]<11B'$-0E*U'/cI=#/,h$t./kUn-N5=j,l8hc,5WP\ ++9r]:$=r]'m9r\ja4r\OO/r\4=)r\"1#r[Rmrr[7[j +rZhCcq]GeXq]#MPrYYVNrYGAGq\/l?!##&=U_*;5q\&c>rY5>HrYGJLrYYVPrYkYRrZ;%]rZV7cr[%Oj +r[@aqr[[t"r\+7)r\FI/r\XU3r\sg9r]0s=r]C*Apc\LU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T52#]<11B'$-0E*U'/cI=#.fLmr./kUn-N5=j,lT%f,5rbb+T!8V*WR8P +*V^]T+8[2[+oW\b,Q8tf-2o7j-iPOn.K1js/H.7#0E*[)1&`s-1]B612Z>Z43;tr;3r;#<4Sq;:557@$ +5_21O5_21O5_21O5_21O5_23"5kmS@55m_B4T7GA3rV/=3;tl92Z>Q41]B0/0`Ea)0)dC#.fLmr-iPCj +,Q8k`+9!;[)u^cT)?(KP(]G3I(&J[B&c`R>&Yp!5&c34<'E/^F(&f!J(]G9N)?(QO*<%#Y+Trn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOr]p-@ +pce[?q`Oj>q`=^:r]'m9r\ja5r\XU1r\=C+r\+7&r[e%!q^MLmr[.UjrZqIfrZ_=bq]Pk[q]>YUr>kPN +q]5PTrZD"[rZV7brZhCfr[%Fhr[@aqr[[t!r\"1'r\4=,r\OO1r\a[5r\sg9r]0s=q`F[;r]Tpr]U-@r]C*?r]0s;r\sg7r\XU1r\FI,r\+7'r[[str[IgorZqIf +rZV.\rZ1tWrYkbRrYYVNrYGAGq\/l?!##&=U_*;5q\&c>rY5>HrYGJLrYYVPrYkYRrZ;%]rZV7cr[%Oj +r[@aqr[[t"r\+7)r\FI/r\XU4r\sg9r]0s=r]C!>q`Xg?r]fa7JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>Q41]B0/0`Ea)0)dF$/,h$t./kUn-N5=j,lT%c+oWV`+9!>Y*VgZT*:FjD +*;^cU*r[8\+TZ43;tr;3rV5<4T7M:557@' +5_21O5_21O5_21O5_21O5_23"5kmS@55m_B4T7GA3rV/=3;tl92Z>Q41]B0/0`Ea)0)dF$.fLmr-iPCj +,Q8k`+9!;X)u^`S)#b?N(AejD'DrIC')3'7&GQk7')N@A'`JjH(B,-L)#bEP)Z(NR*r[;]+oW_c-2o7j +./k^q/,h."0E*[)1B'*/2#]E42uYf93W;)=48V/;4o7GB5O:Xd5_21O5bp[E6N0@L7/f^U8H)6\:&[oe +;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^S +rq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnL +rf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO'3"pcnO; +q`Xp@q`FdZ73;tr83rV5?4Sq;: +557@'5_21O5_21O5_21O5_21O5_23"5kmS@55m_B4T7GA3rV/=3;tl92Z>T51]B0/1&`j*0)dF$.fLmr +-iPCj,Q8kc+T&Yp!5&c34?'DiLC(&f!J(]G9N)?(QR*<$uX +*r[;]+oW_c-2o7j./k^q/,h."0E*[)1B'*/2#]E42uYf93W;)=48V/;4o7GB5O:Xd5_21O5bp[E6N0@L +7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeu +rnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fK +rji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO'3"pcnX>q`Xg=r]C*?q`4X8r\sg7r\a[3r\FI-r\+7'r[n+"r[Rmrr[7[lr[%OgrZ_=brZM1^ +rZ;%Zq],SSq\fJQ)=AC>)ZC]Q*<$uX*r[8\+T&Z635&c34?'DiLC(&f!J +(]G9N)?(QR*<$uX*r[;]+oW_c-2o7j./k^q/,h."0E*[)1B'*/2#]E42uYf93W;)=48qA>4nq5?5O:Xd +5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/ +rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5 +rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO'3"pcnX>q`Xg=r]C*?r]0s;r\sg7r\a[3r\OO/r\4=)r[n+#r[Rmrr[@am +r[%OgrZ_=brZM1^rZ;%ZrZ(eSrYkYO!>l[A)#G3J)ZC]T*<$uX*r[8\+T]?33;Yc948V/;4o7G<5EA'\5_21O5_21O5_21O5_21O5lO%D5PmYD4o7A@48q;? +3W;#;2uY`72>]3/1&`j*0)dF$.fLmr-iPFk,lT"e+TDJrYPPNrYb\SrZ(nXrZD+^rZV7cr[%Ojr[@Xor\"1'r\4=,q_\:1r\sg9r]0s=r]C*A +q`X^U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T51]B0/1&`m+0)dI% +/,h!s./kUn-2o1h,Q8kc+Tb9K([Dn:)#G3M)ZC]T*<$uX*r[8\+TZ73;tr;3r;#<4Sq;=557@'5_21O5_21O5_21O5_21O5_23"5kmS@ +55m_B4T7G>3rV,<2uY`72?#H31]B-.0E*U'/H.-u.K1^o-2o1h,5WM^*r[/Y)u^cT)?(KP(]G3L(&epE +'*/^Yr=\u>V\&V8q\&c>rY5>Hq\K/JrYb\RrYthVrZ1t[rZV7brZqIhr[.Umr[[t!r\"1(r\=C.r\XU3 +r\ja7r]'m;r]:$?r]L'@q`amAlp-+eJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp4oRS@48q;<3;tl92?#H3 +1]B0/1&`j*0)dF$/,h!s./kRm,lT%f,5r_a+9!>\*W@&X)uCQQ)?(KK(B>9B(AJ^F)#G3J)u^iV*W@,Z ++9!G_,5rhd-2o7j./k[p.fM!u0)dO'1&`s-1]B922Z>Z73;tr83rV5<4T7M@557@'5_21O5_21O5_21O +5_21O5_23"5kmS@55m_B4T7G>3rV,<2uY`72?#H31]B-.0`Ea)/Ggpr-iPFk,lT"b+TDJrYPPNrYb\RrYt_TrZD+_rZ_=er[.Ulr[Igsr[e%$ +r\4=+r\OO1r\a[5r\sg9r]0s=r]C*Aq`Xg?q`jF4JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,T52#]<11&`m+0E*R&/H.-u./kUn-N5:i,Q8kc+TZ73;Y`83rV5<4T7M@ +557@'5_21O5_21O5_21O5_21O5_23"5kmS@55RMB4T7G>3rV/=3;tl92?#H31]B-.0`Ea)/cI:".fLgp +-N5=j,Q8kc+T&c34?'DiLC(&f!J(]G9N)?(QR*<$uX +*r[;]+oW\b,lT.i-iPRo/,h+!0)dR(1&a!.2#]B32uYf93W;):48qA>4o7G?5O:Xd5_21O5bp[E6N0@L +7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeu +rnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fK +rji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO&upq`am?q`Oj>r]:$=r]'m9r\ja5r\XU1r\=C+r\"1$r[[ssr[@anr[%OgrZ_=arZD+\rZ1tX +rYkbRq\];Kq\K)E!#>&=q\AuDrYPPNq\fAOrYthWrZ;%\rZM1arZhCgr[.Umr[Igsr[n+%r\4=,r\OO1 +r\a[5r\sg9r]0s=r]C!>r]U-Bpcjg)JO"cOJO"cOJO"cOJO"cOJO'3"pcnX>q`Xp@r]C!DJrYPPNq\oGRrZ1tZrZM1arZhCfr[7[nr[Rmur[n+&r\4=+r\OO1r\a[6r]'m;r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpQ41]B0/1&`m+0)dF$/,h!s./kRm +-2o.g+oWV`+9!;[*<$oV)ZCWR)#G-K(AegI'GTsLrY>;Gq\T5KrYb\RrYthVrZ;%\rZM1arZhCfr[.Ul +r[Igsr[n+%r\4=+r\FI0r\a[5r\sg9r]0s=r]C!>r]U$?q`g-,JO"cOJO"cOJO"cOJO"cOJO'3"pcnO; +r]U6Cq`Fdrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOpcnX>q`Xg=r]C*?r]0s;r\sg7r\XU1r\FI, +r\+7'r[e$ur[Igor[.UirZ_=brZM1]rZ1tXrYthSq\];KrYGAGr"T)Dp_3E:rY>;GrYPPNrYb\RrYthV +rZ1tZrZD+_rZhCfr[%Okr[Igrr[e%$r\+7*r\FI/r\a[5r\sg9r]0s=r]C!>r]U$?q`g-,JO"cOJO"cO +JO"cOJO"cOJO'3"pcnO;q`Xp@r]C*?r]0s;r\sg7r\a[3r\OO.r\4=(r[e%!r[Igor[.Uiq]c"]rZ;%Z +rYt_QrYYMKrYGAF!>?.F'DiF8&\J\J&c34<'E/^C(&f!J(]G9N)>bBP*W@,Z+9!G\,Q9%h-iPOn.f1gs +0`Eg+1B'-02?#N52uYf93W;):48qAA4o7G<5O:Xd5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`- +r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKi +rqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXop +rcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO&upq`am?r]L'>r]:$= +r]'m9r\ja4r\OO/r\4=)r[n+#r[Rmqr[.UjrZhCdrZV7_rZ;%ZrYthTrYb\PrYPPLq\B)ErY#;H'EAj9 +'DiLC(&JdG(]G9N)?(QR)u^iV*r[8\+TZ73;tr;3r;#< +4Sq;=55RR*5_21O5_21O5_21O5_21O5_22q5lO"C55RMB4Sq5>3Vtf82Z>T52#]<11&`m+0E*R&/H.-u +./kUn-2o.g,5r_a+9!>\*<$oV)ZCWR)#b?N(B,'J'EJj\q@i`=ob"qMob%'6rY,/CrY>DJrYPGKrYb\S +rZ(nXrZD+^rZ_=drZqIir[@apr[[t"r\"1(r\FI/r\XU3r\ja8q`4X:r]C!>r]U-Bpcn+1JO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,4o7G?5EA'\5_21O5_21O5_21O5_21O5kmVD5PRG>4oRS@48q;? +3W;#;2uY`72?#E21B'$-0E*R&/H.-u./kUn-2Sqd+Tne&qS +ne(a3q\/i@rY>DJrYPPNrYb\RrYthVrZ;%\rZM1aq]u.fr[@apr[[t"r\"1(r\FI/r\XL1r]'d8q`Fd> +q`Xg?pcn+1JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,'`JjH(B,-L)#bEP)ZC]T*<%#Y+9!D^ +,5rhd-2o:k./k^q/H.7#0E*[)1B'*/2#]E42uYf93W;):48qA>4o7G?5EA'\5_21O5_21O5_21O5_21O +5kmVA5PRGA4oRS@48q;?3W;#;2uY`72?#E21B'$-0Dd@#/,h!s./kRm,lT%f+oWV`+9!;[*<$oV)Z(BN +(]G3L'`f!_r=o,Bp_*63c4KOYq\&Z;rY5>Hq\K/Jq\fAPrZ(nXrZD+^rZV7cq^)4hr[Igrr[e%$r\+7* +r\FI/r\XU4r\sg9r]0s=q`Fd>q`Xg?pcn+1JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,'`JjH +(AepI)#bHQ)u^iV*r[8\+TZ73;tr;3r;#<4Sq;=55RR* +5_21O5_21O5_21O5_21O5_22q5l3e@55m_B4T7GA3r:r:2u>N42#]<11B'!,0)dI%/,h$t.K1^o-2o1h +,5WM^*r[2Z*<$oS)>b6L(',-b!#>AFrY+r;ne'Remh,F0q\/i@q\AuErYYVPrYkbUrZ1tZrZD+_rZ_=e +r[%Ojr[@aqr[[t"r\+7)r\=C.r\XU3r\ja7r]'m;r]:$?q`Oa=q`ad>lp-+eJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3rV/=3;tl92Z>Q41]B0/0`Ea)/cI:".fLjq-N5=j,Q8kc+T4o7G?5EA'\5_21O5_21O5_21O5_21O5kmVA5PRG>4oRSC48V)<3W;#82Z>Q41]B0/ +0`*L%/H.-u.K1^l-2o.g+oWV`+9!;[*<$oV)ZCWR)#b?N(',-b!#>AFq\/`;mh+[nmh,+'q\/rCq\B)G +rYPGKq\oGRrZ1tZrZM1`rZ_=eq^2:jr[Rmtr[n+&r\4=,r\OO1r\aR3r]'m;r]:$?q`Oa=q`ad>lp-+e +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3rV/=3;tl92Z>Q41]B0/0`Ea)/cI:".fLjq-N5=j,Q8nd ++TZ73;tr;3r;#<4Sq;=55RR*5_21O5_21O5_21O5_21O5_22q5kmS@55RM? +4T7GA3rV/=3;tl92Z>T21]B-+0E*R&/,h$t./kRm-2o.g,5rbb+9!>\*W@#T)Z(BN(BG9e!#GGHq\8o@ +ob,F[p_*?8rY55ErYGAIrYYVPq]#MTrZ;%\rZM1arZhCgq^;@lr[[t!r\"(%r\OF.r\ja7r]'m;r]:$? +q`Oa=pceI;lp-+eJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp3rV/=3;tl92Z>Q41]B0/0`Ea)/cI=# +.fLjq-iPFk,Q8nd+Tq`Xg?q`g-,JO"cOJO"cOJO"cO +JO"cOJO&uqpcnO;r]U-@r]C!M(B>9K(B,'G'_i@4'&=/j')N@>'`/XE(B,-L)#G3M)Z(NR*r[8\+TT63W;)=48V/;4nq5<5NtFa5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3 +ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirquco +j8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3X +rbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO&upq`am?r]L'>r]:$=r]'m9 +r\ja4r\OO/r\4=)r\"1$r[Rmqr[7[krZqIerZV7_rZ;%ZrYthTrYbSMrYGAGq%NfCmh>R4rY>DJq\T5K +rYb\SrZ(nXrZ;%\rZV7crZqIhr[7[nr[Rmur\"1'r\=C-r\OO2r\ja7r]'m;r]9pq`=^:r]'m9r\jX1r\F@)r\"1$r[[str[@anr[%FdrZV7` +rZD+[rZ(nVrYkbRrYPYP(B>9K(B,'G'`JdF'`/Qb')3.;'`/XE(AepI)#bEP)ZC]T*<$uX*r@)Z,5WYb +-N5Fm.K1jp/cIF&1&`s-2#]B32Z>Z73;tr;3r;#<4Sq;:557A,5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa +:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOpcnX> +q`Xg=r]C*?r]0s;r\sg7r\XU1r\FI,r\+7'r[e%!r[Igor[.UirZ_=brZM1]rZ1tXrYthTrYb\PrYPPL +p_4nq5<5EA'\5_21O5_21O5_21O5_21O5kRD;5PmYA4oRS@48q;?3Vtf82uY]62#]<. +1&`j*/cI=#/,h!s./kRj,lT"b+Tq`X^U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,Z73;tr;3rV5<4T7M@557@'5_21O5_21O5_21O5_21O5_22n5kmS@557;? +4Sq5>3rV/=3;tl92Z>T52#B'-0`E^(/cI=#.fLmr-iPIl-2o.g,5rbb+8[,Y*;^ZU)B&Soq\];Kq\JrA +p_;r]U$?ofq\+JO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,4o7G<5EA'\5_21O5_21O5_21O5_21O +5kRD;5PRG>4o7A@48q;<3W:u:2Z>T52#]<11B'!)0)dF$.fLmr./kRm-2o.g,5rbb+TlJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp4oRS@48q;< +3;tl92?#H31]B0/1&`j*/cI=#.fLjq-iPIl,lT%f,5r_a+9!>Y*<$oV)ZCWO)#b?L(@Dt5(]G9N)?(QR +)u^iV*W@,Z+9!D^,5rhd,lT.i-iPRo.fM!u0)dO'0`Ej,1]B612Z>Z73;tr83rV5<4T7M@557@'5_21O +5_21O5_21O5_21O5_22n5kmS:55m_B4T7G>3rV/=3;tl92Z>T21]B-.0`Ea)/cI=#/,h!s./kUn-2o1h +,Q8nd+Tq`Xg?pcme(JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3rV/=3;tl92Z>T52#]901&`m+0)dI%/,h!s./kUn-2o1h,Q8kc+Tb9K +([`+:)#G3M)ZC]T*<$uX*r[8\+TZ73;tr83rV5? +4Sq;=557@'5_21O5_21O5_21O5_21O5_22n5kmS:55RM?4T7GA3rV/:3;tl92Z#?11B'$-0`E^(/cI=# +.fLmr./kRm-2o1h,PrY`+8[)[*#nquq]#MQq\f8Jq\So@h%ff&p_W]BrYb\RrYt_SrZ1tZrZD+^q]c"b +r[%Ojr[@apr[Rmtr[n+%r\+7*r\FI/q_e@3q`+R8r]:$?q`OX:q`ad>j$8/\JO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp\*W@&U +)u^cT)>P*L)"JL<)#bEP)ZC]Q*<$uX*r[8\+T3rV/=3;tl92Z>T52#]<.1&`j' +/cI9t.K1^o-N5=j,Q8nd+oWV`+9!;^*?>,#rZ(eSrYkYOq\])Ee/%fqq\]2Jq\oGQrZ(nXrZ;%\rZM1` +rZ_=drZqIir[7[nr[Igrr[e%#r\"1(r\=C-r\XU3r\ja7r]'m;q`=^lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp4oRSC48q;<3W;#;2uY]62#]<11B'$-0E*U'/H.1!.K1ap-N5=j,lT%f+oWV` ++9!>\*W$iU)uCQO)>tHG)#G3J)ZC]Q*<$uX*r[8\+T_Y +rZM1`rZh:cr[.Ulr[@apr[[t!r[n+&r\4=+q_S4.q_nF5q`4X:q`Fd>pc\LU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rZ(nXrZ;%\q]Pk^rZhCfr[%Ojr[@apr[Rmur[n+%r\4=+r\OO1r\a[5r\sg9r]0s= +q`Fd>q`X^4nV#65N"eX5_21O5bp[E6N0@L +7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeu +rnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fK +rji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO'3"pcnO;q`Xp@q`FdSRp_roHq],SUrZ:qYrZM1`rZ_=dr[%Ojr[7[nr[Rmtr[n+%r\+7*r\FI/r\XU3r\ja7 +r]'m;r]:$?q`Oa=pceI;O$J7]JO"cOJO"cOJO"cOJO"cOmm-P1pceRq`=^:r]'m9r\ja5r\XU1 +r\FI,r\+7'r[n+#r[[ssr[@anr[.Ujq]l(a!?iTd+oWV`+9!>Y*W$iR)u(??)?(KA)>G-F)u^iS*W@,Z ++8[2[+oT63W;):48qA>4nV#65N"eX5_21O5bp[E +6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)b +rmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Md +rl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO'3"ofr=;q`Xg=r]C!Z73;tr8 +3rV5?4Sq;7557@'5_21O5_21O5_21O5_21O5_22h5kRA755RMB4Sq5;3rV/=3;tl92Z#?11]B0/1&`j* +0)dI%/H.1!.fLjn-iPFk,lAke,PrYZ+9!>\*V^WL)rMY3)u^iV)uCWS*W$oT+9!D[,5rhd,lT+h-N5Cl +./k[p/,h+!/cIC%0E*[&1B'-02?#N52u>T63W;):48V/;4o7G65N"eX5_21O5bp[E6N0@L7/f^U8H)6\ +:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.E +rpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mm +rgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO'3" +ofr48q`Xp@q`Fdq`X^]rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOr]p$=q`am? +r]L'>r]:$=q`+R6r\ja5r\XU0r\=C+r\+7'r[n+"r[Rmrr[@anr[.LfrZhCdq]Yq]q]>h[*q:4o7A=48V)<3W;#;2u>N42#B*.1&`m+0E*U'/cI=#/,Ldp-i54k,p`O; +rZqIfrZ_4_q]PbXq]>MQkoB77q]>VVrZM1`q]c"aq]u.eq^;@kq^VRrr[n+%r\+7)r\=C-r\OO1r\a[5 +r\sg9q`4X:r]C!>q`XU9niu%tJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,3rV/=3;YZ62Z>T5 +1]B0/1&`m+0E*U'/H.1!.fLmr./kUn-N5=j,l8hc,5<;^+<]tmq]Yq_q]l(cr[%Ojr[7[nr[Igrr[[t! +r\"1'r\4=+r\FI/r\XU3q`"L6r]0j:r]C!>r]U$?pcjU#JO"cOJO"cOJO"cOJO"cOJO&Qeniun5pc\U= +q`F[9r]0s;q`"L4q_\:.r\=C+r\+.$r[e%!r[Rmrr[@[l!%7XirZq@crZ_4_q]PYUi#_b;rZM1^q]PbZ +rZ_=dq]u%cq^DFmr[Rmtr[e%#r\"1'r\44)q_\:0r\ja7r]'d8r]9plJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp5PmY>4o7A@48q;<3Vtf82Z>T52#]<11B'$-0`Ea)0)dI%/H.1!.fLmr./kUn-N5=g +,krSb+sQ=sq]kt`r[%Ojr[7[nr[Igrr[[t!r[n+%r\+7)r\=C-r\OF/r\ja7r]'m;q`=U9r]L'@pceI; +M*QVWJO"cOJO"cOJO"cOJO"cOk!8]+nim%9q`Oa;q`=^:q`+R6q_e@0r\OO/r\=C+r\+7'r[n+#r[[st +r[@jr-ib[m-iPIi-2o1e,Pr\^+n?cT+7C?F+oZ43;tr;3rV5<4SV)754Uql5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOpd"L:q`adr]9p:r]'m9 +r\ja5r\XU1q_A((r\"1%r[e%!r[Rmrq^DFkr[.Lgq]u(ar?M(]p`oY]q^)4gr[7Rkr[Igrr[[t!r[n+& +r\4=+r\FI/r\XU3r\ja7q`+R8r]:$?pcSO=pce@8M*QVWJO"cOJO"cOJO"cOJO"cOk!8T(ofi79q`Oj> +q`=^:q`+R6r\ja5r\XL.r\F@)r\+7'r[n+#r[[st!@]Gt.JkOm-i57i-2Ste,PWJX+n$QH+o!8Y,Prbc +-2T%g-iPOn.K1gr/,h+!/c.1"0`*U%1]B612?#N52uYf63W;):48V/84nq535MAAR5_21O5bp[E6N0@L +7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeu +rnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fK +rji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO&uqofr=;pc\L:r]C!T63W;):48V/;4nq565D_XV5_21O5_21O +5_21O5_21O5iY-)5P7584oRS=48q;<3W;#82uY`42#]<11B'$-0`*O&0)I1#.k:TMr[Rmrq^D=hr[.Lg +q]t_Wp`f/Opa#__q^2:iq^DFmr[Rmtr[dpur\"1'r\4=+r\FI/q_\:0r\ja7q`+R8q`=^lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYpZ43;tr83rV5<4Sq;7557?s +5_21O5_21O5_21O5_21O5_22\5kRA7557;<4Sq5;3rV/:3;tl92Z>T52#B*.1B'$-0`Ea&/cdOU!%n1$ +r[[jqq^MLmq^;.cod08Vmj7r[pa>qer[I^or[[jsr[n+%r\+7)q_A(*r\OO1r\aR2r\s^6r]0s=pcJ@8 +r]Tg9pcm.kJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,T22#]<11B'$-0`Ea) +0)dI"/H.0s.fLmj-ib[d-ho+e.K1go/,h*s/cIC%0E*[)1&`s-1]B6.2?#N52uYf93Vtl748V/;4nq56 +5DDFS5_21O5_21O5_21O5_21O5iY-#5P7584o7A@48V)<3Vtf82u>N42?#H01]&p+0`Ea)/cdOU!%n(! +r[[anr[I^mq^9l?q^;7hq^MLoq^_Xsq^qe"r\+.&r\=C-r\OF.r\a[5r\sg9q`4O7r]Bm;q`XU9ofphh +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,3r:r:3;tl92Z#B22#]<11B'$*0`Ea)0)I7"/Ggsm +.KLtIoI9G_q^_Opq^qe"r\+7)q_A(*r\OO1r\aR2r\sg9q`4X:q`F[;q`XU9ofn0rJO"cOJO"cOJO"cO +JO"cOJO&$Vofr+5q`Xg=pcJI9q`4O5r\sg7q_e.)r\FI-r\+@+0*![&0)dI"/Ggsp.f1[i./kUn..nte +./kUh..o%g.f1aq/Gh$u0)I=$0`*U(1B'*,2#]B32Z#H43;Y`53r;#<4S:l454Uqc5_21O5_21r5lO+L +6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOog&(4pceI9q`Oa;r]9p:r]'d6r\ja5q_\:.q_J.*r\44&q_%atq()Lsodf\dq^q[tq_.q& +q_A(*r\OF.r\a[5r\s^6r]0j:q`Fd>of`(6ofn'oJO"cOJO"cOJO"cOJO"cOJO%pSpcnF8pc\C7q`F[9 +r]0j8r\s^4r\aR0r\OF,!AQ;/1&E[(0DdC!/c.*o/);]J/,Lmp/cIC"0DdI&1&`s*1]'$+2>]?33;>N5 +3qtf64SV)754Uq`5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOog%t1pceI9r]L'>q`=U7r]'m9q_nF2q_\:.r\F@* +r\4+#r\!mr!%mampau7nr\+.&q_A(*q_S4.r\aR2r\s^6r]0j:r]C!>pc\C9niqalJO"cOJO"cOJO"cO +JO"cOJO%pSofr"2q`X^:r]Bm9q`4F1r\ja5r\XC+!AZD11A`g*0`*O#0)I6n/GLaj.dnn_/Gh$r0)I=! +0`*U(1B'*,2#]B02Z>Z43;Y`83r;#64Sq;454Uq`5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/jrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOmm-P1ofi79pcSF8 +r]9p:r]'d6r\jX2r\XL.q_J%'pb;Lsr@dgroe61rq_@t'r\OF.q_e@2r\s^6q`4X:pcJ@8q`XU9ofn!m +!'l*#JO"cOJO"cOJO"cOJO"cOg-G*kofi.6r]Ks;q`=U7q`+R6q_nF2q_S=01]9-,1B'$'0`*Nr0&8,V +0(gmp0`*U(1A`m,2#B002Z#H.3;tr83r;#94S:l454UqZ5_21O5_21r5lO+L6i0:N8,c'Y9)_Qa:B"/j +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOmm-G.pce@6 +q`Oa;r]9g7q`+R6r\jX2q_\1+q_IatrA!t!oeH>!q_S"(r\aI/r\s^6r]0j:q`F[;of`(6ofn!mrBPp! +JO"cOJO"cOJO"cOJO"cOe3N[kofi%3q`Oa;pcA:4r]'d6q_n@0!&aX1q_S+)pbDY"r\+7)h(SOWpbDY$ +q_S++q_e7/r\sU3q`4X:q`FI5pc\:6ofpD\JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,]T63Vtl748V/84n:f05Cl)u5_21O5_21O5_21O5_21O +5_22M5k7/.55RM?4SV#83r:r:3;YZ32?>ZmrAFR2r\OO1q_S+)pbCASoeH4sq_S++q_e@2q`":0q`4O7 +r]Bm;pc\13nit)YJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,]T33Vtl748:r84nV#-5Cl)u5_21O5_21O5_21O5_21O5_22J5jpr1557;94Sq583r:r73;b]8 +2u>N12>B$$1\*T63Vtl148V/84nV#*5K,m=5_21O5bp[E6N0@L7/f^U +8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6 +roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5 +ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO&?_niun5of`17pcJI9pc842pc%t+oecb,2"&m,2u#B33VYZ148qA54nV#35Cl)o5_21O5_21O +5_21O5_21O5_22D5kRA454q)94S:f53r:r82ukr52u>N+2>&fd1]B611\`g%2>&m,2u#B03VYZ448:r5 +4n:f*5JKI75_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JN +rh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!U +roj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO&?_mm$J/pc\C7q`F[9q`4F2pc%k(r&*dtoeuS(pc/.2q`=L6 +q`OX:nilV/JO&rpJO"cOJO"cOJO"cOJO"cOJO%CDniuS,q`XU7q`FR6q)JF8r]'R0q_n"&g,/@Xq_n4. +pc/.2pcAC9r]L0Aq`OO7nilM,^Hd?8JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYpB'2uP]. +2Y&g"3;Y`/3r;#64SV)154Uph5kIrn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOj$;rqpce73pcS=5ofDb+p,M%k +pc8".q`Fd>r]C!>of_t3niq[jmQc=gJO"cOJO"cOJO"cOJO"cO_EdZVmlpM0ofVq0!'Bs:pc8",d5UVU +of;e.pcJ.2of_k0nisHGJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, +H148qAA48:r5 +4mtT$5I3V+5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JN +rh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!U +roj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO&$Vlp(/,nicY.ofMP%rAs^6krSK!ofVn1nilM,JO&NdJO"cO +JO"cOJO"cOJO"cOJO$b2niuS,nick4!BW@C48qA847YGU3V#6(47t`/4n:f'5HR2%5_21O5bp[E6N0@L +7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeu +rnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fK +rji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO%pSks+`&nicY.r]C*An2pS1pc@P!pcS".mlp;,JO&<^JO"cOJO"cOJO"cOJO"cOJO$Y/mm$/& +ofW=<4S1c)43fnR48:r,4mtT$5H6u"5_21O5bp[E6N0@L7/f^U8H)6\:&[oe;Z9_u=]k`-r`oG3ral(D +rc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^Srq-3_rqQKirqucoj8\BD +qu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnLrf-o4rdXoprcS3XrbMLF +ra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO%pSj$3)unicP+o/kqnml^A.losc# +JO&<^JO"cOJO"cOJO"cOJO"cOJO$Y/lp'Vrr&t!AofW48r]KF,loOJpr]L0AniZS.ks">rW^),#JO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYprn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cObU*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO%(;i'60abs(/P +JO%[LJO"cOJO"cOJO"cOJO"cOJO#\iklJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp(\5QF'#5_21O5bp[E6N0@L7/f^U8H)6\:&[oe +;Z9_u=]k`-r`oG3ral(Drc%jXrd"Kore:?1rg!JNrh9=lriZ7/rkABKrlG)brmLeurnm_6roO.ErpB^S +rq-3_rqQKirqucoj8\BDqu6TmrqcWirq??^rpg!Uroj@Dro3q5rn@A$rm(Mdrl"fKrji$5ri,mmrgWnL +rf-o4rdXoprcS3XrbMLFra>_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO$b2aZmC% +JO%7@JO"cOJO"cOJO"cOJO"cOJO#A`n3?5']KY.9JNs3#JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOM*Ul$mQZ7fPX'dbJO"cO +JO"cOJO"cOJO"cOJO&*Xd6E1Idm/ILJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB> +h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@ +riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,' +=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_ +q#:0ir;QZTs69R\rr2ipqYp_3 +r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GL +k5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Z +rk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGj +r`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVS +o`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Y +mf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qm +rlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\t +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/a +r_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QE +mJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*e +o)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S- +rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QL +VEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrY +r_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6 +jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++, + +rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrV +r^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QN +r^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nu +hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3; +?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5] +r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oG +r^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNb +df.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GN +B)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMe +r_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +Ud4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"K +aSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9f +DZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qq +r_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/ +^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f& +I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S, +r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@> +L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^Nrau.; +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3N +U&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua%V#Hk_ +OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]frbh^N +rau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1 +Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfRqa./F +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCERr^d#\ +r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@Z2Ua% +V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK&rd=]f +rbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`Bo +L&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp_3r`T5#r_i_kr_3;ar^d#Yr^HfR +qa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TOqaCER +r^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ]`,J@ +Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2>reLK& +rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqX +H2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ip +qYp_3r`T5#r_i_kr_3;ar^d#Y +r^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"rr^-TO +qaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbmbPoHZ +]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_rfR2> +reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HD +E;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\ +rr2ipqYp_3r`T5#r_i_kr_3;a +r^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO$"r +r^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.-eGdbm +bPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI%rhTO_ +rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43 +Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0ir;QZT +s69R\rr2ipqYp_3r`T5#r_i_k +r_3;ar^d#Yr^HfRqa./FJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO$"rr^-TOqaCERr^d#\r_U*eo)A1Ymf)GLk5OB>h>Z.- +eGdbmbPoHZ]`,J@Z2Ua%V#Hk_OoC@>L]2f&I/\9fDZ4GNB)Z3;?N++,rn[S-rm^qmrlb;Zrk/6@riuI% +rhTO_rfR2>reLK&rd=]frbh^Nrau.;ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO"cOJO"cOJO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6QNr^ZrYr_!/ar_EGjr`9,'=TDV( +>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+lY5Ym/^Ac"KaSsNbdf.nuhu;U6jo4QEmJcVSo`"O_q#:0i +r;QZTs69R\rr2ipqYp_3r`T5# +r_i_kr_3;ar^d#Yr^HfRpd1rFJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cO +JO"cOJO$"rr^-TOr^?`Sr^ZrYr_!/ar_EGjr`9,'=TDV(>lJ43Ac?HDE;jqXH2`BoL&R&1Q2[3NU&M+l +Y5Ym/^Ac"Kao9Wcdf.r!hu;U6jo4QEmJcVSo`"O_q#:0ir;QZTs69R\rr2ipqYp$IWBc#"JO"cO +JO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOJO"cOUd4oGr^6ZQr^HfVr^d#\r_EGg +r_i_s!EiP*=oM_+A,^'=CAr5PFT-UcK)UN(NW,4BRJroZXT#F&\,O,@_Z%[Vd/MMng&Bn.iVr!=lMg2M +nc&1[p&=acqu6NmrT!qBs82fprVlZmq>U-foD\=[mf)JMkPjN@h>Z.-ec*nobl5T\^&GSAZMpj&V>d"a +P5^L@L]2f&I/\9fDuOSPBDu<_3r`];%r`&knr_U9jr;QZTs5X.YrVlZm +q>U-foD\=[mf)JMkPjN@h>Z.-ec*nobl5T\^&GSAZMpj&V>d"aP5^L@L]2f&I/\9fDuOSPBDu<rr)imrqZQfrq$-[rpKdMroa:@ +rn[S-rmh"orlkA\rk8&pd4jF +r^?`Sr^ZrYr_*5cr_NMkr`9,'=TDV(?2e@5Ac?HDEW1(ZHN&NqLAm23Q2[3NU&M.mYPu$1^Ac"Kao9Zd +e,J&"hu;U6k5OZFmJcYTp&=[aq>:*hro=%=s8MurqYp5hS%<;o_n:&[fb8cD6Z7fGgQ6hNdO5_21O5_21O +5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_22,5l3kB6Mj.L7/fXS8,c'Y9E%]c +:]=8krr)imrqZQfrq$-[rpKdMroa:@rn[S-rmh"orlkA\rk8:*hro=%= +s8MurqYp5hS%<;o_n:&[fb8cD6Z7fGgQ6hNdO5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O +5_21O5_21O5_21O5_22,5k78=6iKLQ7K,gV8H)9]:B"&g;Z9_u=]k`-ra#M5ral(Drc.pZrd+QqreCE3 +rg!JNrh9=mric=1rkABKrlP/drmUl"rnm_6roX4FrpB^Trq69arqZHhrr1sXj8],WrqcWirqHE`rpp'V +rosFFro="6rn@A%rm1Sfrl+lMrji$6ri,mnrg`tNrf6u5rdXoprcS3YrbVRHra>_3r`];%r`&knr_:*hro=%=s8MurqYp5hS%<;o_n:&[fb8cD6Z7fGgQ6gR.O +5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_22,5k78=6iKLQ7K,gV +8H)9]:B"&g;Z9_u=]k`-ra#M5ral(Drc.pZrd+QqreCE3rg!JNrh9=mrilC3rkJHLrlP/drmUl"rnm_6 +roX4FrpB^Trq69arqZHhrr1sXj8],WrqcWirqHE`rpp'VrosFFro="6rn@A%rm1Sfrl+lMrji$7ri,mn +rg`tOrfI,8rdk&src\9[rb_XIra>_3r`];%r`&knr_QFT-XdKDpW)NW,7CRf9&\XT#I'\Gj;C_u@gXd/MMng&Bn.iVr!=lMg2Mnc&4\pAXmb +r;Q]Us5X.YrVlZmq>U-foD\=[mf)JMkPjN@hYu:/ec*nobl5T\^&GSAZi7!(VZ*.cPl?gEM>i)*IK"Eh +E;j_RBDu?=?iF:/s;h9E%N^8,c!W7/K@<6Mj'b5_21O5_21O5_21O5_21O5_21O5_21O5_21O +5_21O5_21O5_21O5_21O5_21O5_22A5kmY-6Mj.L7/fXS8,c'Y9E%`d;#XDmrr)im +rqZQfrq$-[rpKdMroj@BrndY/rmq(prlkA\rk8:*hro=%=s8MurqYpK@fBa6>Q.\&<;obo:B!rd8cD6Z +7fGgQ6et)O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_21O5_22A5i"d( +6iKLQ7fGsX9)_N`:]=2i;uTi!=]k`-ra,S7rb)4Hrc8!\rd4WtreLK6rg3VSrhTOqriuI5rk\TPrlb;h +rmh#%ro!e8roa:HrpB^Trq69arqZHhrr1sXj8],WrqcWirqHEarpp'Wrp'LIroO.9rnIG'rm:Yhrl>#P +rjr*8ri5sprh'1SrfR2;rdt,urce?]rbqdMraPk6r`fA'r`/qpr_EGdr^m)[r^ZrVpd5hn.AH$6@D>nVUG5cmgK`6c+O8bLFSGo>`Y5Ya+\c0GE`;[sZdf.ergA^%0ir8-?li-;N +nc&4\pAXmbr;Q]Us5X.YrVlZmq>U-fo`"I]nG_bQl2KfDhu;F1fDa.rcMkoa_#D"G[/R-*W;`IhQN!$G +MZ/5,J,X]lErL"VC&VWA@K'O2=T2A#;Z9Jk:&[ca8H)-Y7JK6L6@hIS6@hIS6@hIS6@hIS6@hIS6@hIS +6@hIS6@hIS6@hIS6@hIS6@hIS6@hIS6@hJ'6MNqF7/f[T8H)6\9`@ie;>sPo=TMc4!*oM2rau.Crb_XV +rce?ire:?.rfI,Hrg`t`riZ7+rji$Erl"fZrmLerrn@A1roF(Brp9XOrpg!]rqHEfqu$Hmj8\0>rr)im +rqZQfrq-3\rpTjPrp'LEro!e4rn.4trm(Mark\TIrjMg.ri#ggrg3VKrf$i0rdk&prcA'XrbDFDraPk5 +r`K/#r_remr_NMer^m)[r^QlUr^&qaC_.I\,NQ0WrA^kRJrKNNW+Y2Jc:#qFT-=[D#S&GA,]j7=oMP&<;o_n:]=)f9)_E] +8,Ga&7+O_V6\.UU6\.UU6\.UU6\.UU6\.UU6\.UU6\.UU6\.UU6\.UU6\.UU6\.UU6\.UU6e=]N7/fXS +8,GjV9E%Wa:]=5j;uThs>6/#8!+#S5rb)4ErbqdZrd+QoreLK1rf[8Mrgs+eric=-rk&0Jrl>#_rm^qu +rnIG3roO.CrpB^Qrpp'^rqHEgqu$Hmj8\0>rr)`krqQKcrq$-Yrp9XLroO.;rndY-rmLelrlP/UrkABA +ric=$rhBC[rg!JDreCE)rd=]frc8!Urb2:Cra>_0r`T5$r_i_mr_E>`qagTSqaT:.ejP'WJOG&WJOG&W +JOG&WJOG&WJOG&WJOG&WJOG&WJOG&WJOG&WJOG&WJOG&WJOG&Wf0n+Wogf!Pr^m)_r_iJ5PQ%*OT`1nhZ2V01]`,kKa8XB`eGe)!h#?=4jo4KCmf)\So)A@^ +p\t$dr;Q]Us5X.YrVQKkq#9scoD\:ZmJcDMkPjE=hYu4-eGdkpbPoEY_#CnDZ2Um)V#Hk_Qi<'FM#N,- +If=TkFoH=YC&VcE@fB^5>lIk)sVq=8lG'?NFSD!+Gkrr)`k +rqQKdrq-3[rpKdOroa:>rnm_/rm^qprlb;Zrk\TFriuI)rhf[brgEbKre^W/rdaunrc\9\rbMLIrac"8 +ra#M,r`B)!r_i_lr_NMenk-)VJOk>_JOk>_JOk>_JOk>_JOk>_JOk>_JOk>_JOk>_JOk>_JOk>_JOk>_ +JOk>_JOln6r^llWqb6uar_NMjr`&kur`T5*ra>h;@fU$M#Mu)HiA9hErKtUC]7uG@/aL3>Q.b(=8l1u;>sDk:]=)f +9__8a8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBTc8qBU:9)D9Y9`@fd +:]=2i;Z9Vo5hn.@KC%O!+l.DrbqdUrce?jrdk'(rf6u@rg<\XrhTOprjMg;rkSNRrlY5ern%/& +rndY8roX4FrpTjUrq$-`rqQKhqu-Nnj8\0>rr)`krqZQfrq69]rpTjRroj@Aro*k3rn%/!rm(M`rl"fL +rjDa1ri5skrgj%Srf6u9re:?$rd=]grc%jSrbDFDraPk6qcj&%r`9"tr_`YkohY$O_+fJTJPC\iJPC\i +JPC\iJPC\iJPC\iJPC\iJPC\iJPC\iJPC\iJPC\iJPC\iJPC\i`D,Slnk]6]r_i_rr`B)%ra#M0ra>_< +!GQ6JC&VuKErL4\HN&EnK)UZ,OT(LDSGo;_VZ*du\,O#=_>_RUbl6&if`'V(hu;^9k5O]Gn,DkVo`"Ua +q#:-erVlfVs5X.YrVQKkq>U-fp&=R^n,D_Rl2KcCir7d5f`'G#ci2#b`W!UN[f3W4XT#!oT`1>XOoC@> +L]2i'If=WlF8g1YD#S,IB)Z65hY'=8l4s;ts5\:qf_V:Ou;m:Ou;m:Ou;m:Ou;m:Ou;m:Ou;m +:Ou;m:Ou;m:Ou;m:Ou;m:Ou;m:Ou;m:Vool;#!oe;uTbq_4ra#D(r`K/$r`9"ur`&bnZ;Q6OJPq%sJPq%sJPq%sJPq%sJPq%sJPq%sJPq%sJPq%s +JPq%sJPq%sJPq%sJPq%sZVpQsqc*Ppr`9#"r`K&&ra5Y4raPk>rbDOOD#eGPEW11]H2`d+dQi<6KNW+b5L&QT$GlDmcEW0kTD#S/J +B)Z??@/aO4?2e(*>4Pe'=+OG(=+OG(=+OG(=+OG(=+OG(=+OG(=+OG(=+OG(=+OG(=+OG(=+OG(=+OG( +=+OGW=7o\p=oMY)>lJ%.?iFI4@fC$>B`;fHDZOit!-/!\rd4Wmrdt-+rf$i=rgEbUrhBCmriZ7.rkABJ +rl>#_rm:YqrnIG.ro3q?rosFLrp]pXrq69brqQKiqu,IQj8]#TrquclrqQKerq-3ZrpKdOroa:Bro!e1 +rn.5!rltGbrl"fLrji$6ri5sqrh07Yrg*PFreg]1rdk&rrd+Qdrc%jTrbVRIrb)4@raGe6ra,S0r`o,# +nlik4JQ[P,JQ[P,JQ[P,JQ[P,JQ[P,JQ[P,JQ[P,JQ[P,JQ[P,JQ[P,JQ[P,JQ[P,JQ]Wgpfd>pqcs,, +ra5Y4raYqR(\,O,@_Z%XUci2>kfDaV* +hu;[8kl0lHmJcVSo)A=]q#:*gqtp?Ms5X.Yrr2lqr;QQlq#:$eo`"@Zn,D\Qkl0`DiVqX3gA]V$d/M;h +`r=!UAgY]RJrHMNW+h7L&QW%If=TkFoHI]E;j\QC]8#HB)Z??@fBd.?gh=;?%H:4?%H:4 +?%H:4?%H:4?%H:4?%H:4?%H:4?%H:4?%H:4?%H:4?%H:4?%H:4?%H:o?1M>!?i+71@K'a8AH$6@B`;cG +DZ4SREW1+^G^'45rd=]qre(3+rf@&@rg3VUrhBCjric=,rji$Erl"fYrm:Ynrn.5-ro*k;rosFJrpKdU +rq$-_rqQKgrqlTki;_j;rr2oqrquclrqQKerq69\rp]pTroj@Dro="7rnIG(rm:YirlP/UrkABAriuI) +rhoagrgs+VrfR2?reg].rdt,urd"KfrcJ-YrbqdQqeH"Arb)4@pg^U=JRX1>JRX1>JRX1>JRX1>JRX1> +JRX1>JRX1>JRX1>JRX1>JRX1>JRX1>JRX1>JRYrpojdu3ral(Arb2:GqeZ7Mrc%jWrce?g!I]@rIK"cr +L]3/0NW,.@QN!ERUAh%hXT#R*[f3u>`;[gVc2Q/jec+;%hu;U6k5OZFm/HJQo)A:\p\t!fqu6NjrS[_9 +s8N#srVl`oqu6Ejq#9scnc&%Wmf)JMkl0ZBhu;I2f`'A!d/M2e`;[UP])K&8Yl:[%U]-qcS,S]PP5^I? +M#N/.K)U2tHiA9hFoHI]E;jeTDZ4JLCAV]ABnJQE;jqXG5c^bHN&BpJUmfPre19-rf$i_>_OT +bPolffDaJ&h>ZC4jSnBBmJcPQnc&1[p&=acqYpBkr;6KOs5X.YrqlZnr;QQlq>U-fo`"F\n,D\Qli-,I +j8S$:h#>q)eGdenao9?[_>_%F\,NZ3XT#3uU]-nbSGnlSOoCIAN;eY4LAlf(JGt&tI/\EjGlDmcFSg.J +EP$1@E.MtZE.MtZE.MtZE.MtZE.MtZE.MtZE.MtZE.MtZE.MtZE.MtZE.MtZE.MtZE40`YEVjeUF8g=] +G5cacHiAElIf=irJc:?%M#iNm!/pi;rfd>HrgWnZrh9=hriZ7*rjMg>rkSNPrlkAermUl!rn@A/roF(@ +rp'LNrpTjWrq69arqQKhrql]nqu5ORi;`]QrquclrqZQfrq69_rpg!Urp9XKroO.=rndY,rmq(srlkAa +rl"fLrjr*:ric=&rhoahrh'1Zrg3VLrfI,dLoZ2V-0\c0DD_Z%UTcMl5jec+;%h>Z@3k5OQCli-APnG`%YpAXgc +q>U9jr;QZlro!h7s82cor;6?iq#:!do`"C[nG_kTlMfuGjo43;g]#n*ec*qpc2Pc__#D(I\Gii6Yl:^& +VZ*CjT`1G[RJrKNOoCIAN;e\5M#N,*K)U?#JGt&tIJA3bHb4TTH@^BnH@^BnH@^BnH@^BnH@^BnH@^Bn +H@^BnH@^BnH@^BnH@^BnH@^BnH@^BnHG"RsHhDdcIf=irJGt/tK`6c+MZ/S6NrG1BP`u04rg3VSrgs+` +rhoapric=/rj_s@rkn`SrlY5ermUl!rndY3ro3q?rosFKrpTjVrq-3arqQKgrql]mrr)`ni;_a8qu6Tn +qtpBgrqHEbrq$-YrpTjQroj@Dro*k6rn[S+rmLelrlb;[rkeZKrj_s9rilC(ri5sorh07_rg`tTrg*PI +rfI,?rf-o7re^W0qhG*'pk/?n]7GNaJUrB'JUrB'JUrB'JUrB'JUrB'JUrB'JUrB'JUrB'JUrB'JUrB' +JUrB'JUrB'[Xn4*qh+m$re:?+reLK1qi(N8rfI,Brg!JN!LoPYS,T&ZUAh"gWW'+#Z2V-0])KDB_>_LS +ao9WceGe%ug]$+0iVqsi==LOk53LOk53LOk53LOk53LOk53LOk53LOk53LOk53LOk53LOk53LOk53LOk53LOk5kL\6JuM>iG1 +N;en;OT(CAPQ$pJR/WTSScPIU!2'7crhoapriH+(rj;[7rkABIrl+lZrltGirn%/&rn[S4ro="?rp'LL +rpTjVrq$-^rqHEerqcEggAg+2qu6TnqtpBhrqQKerq-3[rp]pUrp'LIroa:>ro!e3rn.5$rm:YhrlY5[ +rkSNIrjr*:rj)O,ri5ssrh]Ugrh9=_qjRMOrg*PJrfd,>rfI,?pl;kDJW55?JW55?JW55?JW55?JW55? +JW55?JW55?JW55?JW55?JW55?JW55?JW55?JW7*tpl>64rfI,Arf[8ErfmDKrg<\Qrg`tYrh9=d!MuUm +V>dInXo>L&Z2V63\c0;A_Z%ORaSsNbdJhYpf`'Y)i;Vd9jo4KCm/HDOnG`%Yo`"R`q#:*gqY:$Cs5ibPoK[_Z%=L]DfD@[JmH1Yl:d( +WrB!sV>d4gU&L\]T)P8WRerKOQhZlVQ%>3OQ%>3OQ%>3OQ%>3OQ%>3OQ%>3OQ%>3OQ%>3OQ%>3OQ%>3O +Q%>3OQ%>3OQ%>4,Q2?mEQi_@O`r=0\c2Q,if)F;#g]$+0iVqp;kPj`Fm/HJQnG`%YpAXgcq"spe +qtp?krn@D+s8N#srVl`oqtp6hq#:!do`"F\nG_nUm/H5JkPjTBi;VU4g]#k)f)F(rcMl&eaSs0X_u@IN +^&GYC\c0#9Zi76/YPt['X8&[nW;`^oV>d:`UU[%LU4K%iU4K%iU4K%iU4K%iU4K%iU4K%iU4K%iU4K%i +U4K%iU4K%iU4K%iU4K%iU9gTnU\gkaV>d@kVuEXoWW&stXT#@$Yl:p,Zi7B6\$l@Hrjr*BrkABKrl4rX +rlb;ermC_prn.5(rndY5ro="@rosFJrpTjUrpp'\rqHEerqZQirql]mqu-NngAfn,rr2fnrquZirqZQg +rqHEarp]pUrpK[Lroj@Bro3q7rnRM,rn%.trmC_krlb;`rl4rSrk\TKrk/6Brjr*U0gp\sj_o)A.XmJcGNlMfuGjo46_7L^AGPA])K5=\,Ni5[JmQ1ZhUi9Z%902Z%902Z%902Z%902Z%902Z%902Z%902Z%902Z%902 +Z%902Z%902Z%902Z%90gZ1YF"[.q'.\,No:\c05<^&GeG_?%Tn!6"lVrlG)]rlkAfrmC_prn%/&rnRM1 +ro*k;roa:Frp9XPrpTjVqt0m]rqHEerqcWkrqucoqu54IfDkXEqtpBhrqQKerq??`rq$-Zrp]pTrp0RI +roa:Bro!e5rn[S,rn.5$rmUkprm1Sfrlb;_rl>#WrknWLrkSNIrk8J[^3> +J[^3>J[^3>J[^3>J[^3>J[^3>J[^3>J[^3>J[^3>J[^3>J[^3>e@4JJossk/rk&0Brk8I0tj2L]3rlG)\rlY5`rlkAerm1SjrmChrdf@kreGe%ufDaM$h#?41ir8$U9jr:U$9s4@;GrqlZnr;6?iq>U0gp\sjbo`"I]nc&%Wn,D_Rl2KoG +kPjTBjSn-;i;VX5h>Z+,f`'M"ec+(qdJM;ici25bbkTBMb/DDQaaqQbaaqQbaaqQbaaqQbaaqQbaaqQb +aaqQbaaqQbaaqQbaaqQbaaqQbaaqQbaiMTjb4s0TbkoZ^chl)ge,.Yof)aOVrRh,(rnRM0rnm_5ro3q> +roa:Erp0RMqsXORrpp'\rq6']rqcWkrquQirr1=FdJs4Fq#13irql]krqZQgrqH<`rq-3ZqsXOOrp9XM +roj@EroX+Z4,g\BLefuhrufR_\+fR_\+fR_\+fR_\+fR_\+fR_\+fR_\+fR_\+fR_\+fR_\+fR_\+fR_\+fZ;_3 +g%*krg\]e*h>?(+hu;R5iVqjU0gp\=I]o_\4VnG_nUmJcJL +lhK`DkkjQ6jo4?9j0IZqidp*?idp*?idp*?idp*?idp*?idp*?idp*?idp*?idp*?idp*?idp*?idp*? +ij7Y>j7q^1jnn3;kPj]El29lGlhg)Hn,DhRo)A7[o_\@Zp\sseq>U9gr:9g*s2G$8rqQHkr;6BjqYU*c +q#:$epAX^`oD\=Xnb_hTn,DbPmJcJLlMg&7kk4,Kk(2ZGk(2ZGk(2ZGk(2ZGk(2ZGk(2ZGk(2ZGk(2ZG +k(2ZGk(2ZGk(2ZGk(2ZGk(2['k47^+kkjWDlMg,Hm/68OmecJPnG)PQoDA1Wp\Xa\qYpBkr:U$crl+oP +s8N#grVl`iqYU*cq#:$epA":Wnb_hKn+c>GmJH7Ol[eAQl[eAQl[eAQl[eAQl[eAQl[eAQl[eAQl[eAQ +l[eAQl[eAQl[eAQl[eAQl[eB%lhKiDmIfo?mfDqI!:^!Xrpp'[rq-*\rq??cqtTs_rqlTjq#1!e^]1tH +n,<%Yqtgn:C([n:C([n:C([n:C([n:C([n:C([n:C([n:C([n:C([n:C([n:C([ +n:C([n?_WKnbD\SoD%tUp&Og`p\"=\q=sgcqtp<^rVlf)s0Mb#rpp$er;6BaqYU*cq""1Sp@@m[oRZXc +oRZXcoRZXcoRZXcoRZXcoRZXcoRZXcoRZXcoRZXcoRZXcoRZXcoRZXcoRZY7o^_\Mp@@qYq"Ojaq"a^] +rqlKgo)8@_Zi@'*n,<%Zq"sj_j7rWJVY5T7JbFZgJbFZgJbFZgJbFZgJbFZgJbFZgJbFZgJbFZgJbFZg +JbFZgJbFZgJbFZgV"X][l1k2P!;ZEdrqlKgl2@X^WrMknn,<%Zq"sOVo(f0XJbXfkJbXfkJbXfkJbXfk +JbXfkJbXfkJbXfkJbXfkJbXfkJbXfkJbXfkJbXfkJbZ&9p%dnL!;cTiqu#p]o)>ZhS,`0\k5FcHT_j<; +Jbt#qJbt#qJbt#qJbt#qJbt#qJbt#qJbt#qJbt#qJbt#qJbt#qJbt#qJbt#qT)7mPq>Ksao)>$VO8o"S +h>O#EJc()sJc()sJc()sJc()sJc()sJc()sJc()sJc()sJc()sJc()sJc()sJc()sJc)#8kPbAXq#6-M +LB$E8Qi2L6Jc1/uJc1/uJc1/uJc1/uJc1/uJc1/uJc1/uJc1/uJc1/uJc1/uJc1/uJc1/uP5XnLrVhBJ +!<7WMJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?J +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$r;V?JJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$r;V9 +~> %APLeod +EI +48 0 0 48 296 2 cm +BI +/Width 144 +/Height 144 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcF-tJcC<$JcF-tJcC<$JcF-tJcC<$JcF-tJcC<$JcF-tJcC<$JcF-tJcC<$JcF-tJcC<$JcF-t +JcC<$JcF-tJcFF'm/GW8m/Ht`JcF-tJcFa0q#9"Gqu#1HrVcisrdk*us+14?s760UrT=%Wqs"%Er;llq +p&9OBhuA9-rVuZln,<.]qtoXSj8&0?q"t$fr;?-aq#5jEmf.k=q#:'erquZjq"jm_ +qtL!\rq-*Yrpg!Wp$_SAn*T]6qsX4IrpfsZr:Km[qtL*brqZ?cq#'pcq#66PU&Xoeq#13iqtpBhqt^-a +rqHEcrq-*Zq!n@QqsXFMrp9OJrp'CFj66C)rp'CIrpBUNrp]pU!:U$YnG_tWo)A7[o_\=\pAXgcq#:*a +qYU3`rVQSWs.TJ`rVl`iqu6Ejq"sg_pAX^]o)A1YnGD\RmJcJIli-/JkkjQ?k2YRrkPj]El2L#Gm/?;P +mHsoBrpTjUrpp'[qt0m]rqH3_rqZQjqu$$`P5hH[qu69erqucmq"jm_rqHEcrq-3]rpg!WqsXFMrp9OJ +rosFGroa:CroEt:qr6bsro3q;p#Q#5roj@Hrp'RN!UT1PmJH>NnG_nUnG`%Vo`"R`p\sseq>:$fqtp#duh>Z:1htZ./iVqj9j8S-=joFQFkNDj.rp'LKrp9XQqsaLQrq$$[qtL*bq"k!eq#1!eT)Yhjp&4[_ +qt^6drqHEcrq-*YrpTjUrpTjQqs47Groj@EroO%:rnm_5rnmV.rnI5%j4O7_rnI>*rndY3ro!e7ro4"> +!T`>@jo4HBkl0iGli-8Mmf)\SnG`"Uo`"R`p\Xa_q>U9gr:U#[s02P#rqQHkr:p-fq"sgbp&=U_oD\7V +n,D_Rm/H>Mkl0cEk5439i;VX5h>Z4/g]#n*f_a:tec+(ee+hGiec+2"f`'S'gAB\)hYuC4huVcoro*b8 +roa:ErosFJqsO@Nrpp'\qtC$`rqQKgrqcWkqu$6fqu3DkZiC%(q#1*erqcWirqQKeqtC$]qssXQrpB^N +roj@EroO%;rnm_5rnm_1rn7;'rmq(uqpYGhrm1Sjqp5/bp!*BZrm:Yjqp>5frmUktrn%/%rn@G.!SlK0 +hYuF3i;Va5jSn?Akl0lHmJcSRnG_tWoDA1Zp\Xa_qYpBhr:p6irhoe&s7lQlr;6Bjq>U0gp\smco`"I] +o)A.Xn,DbPli-/Jk5OH@j8S!9hu;I/gA]b(fDa>"df.VjchP`]b4s*OaSro*k6rn[S/rn@A(rmq(trmC_lrm1SgrlkAbrlP/\rl=oTrl"9Cpr*'Krl>#[ +rlb;bqp,2frm:_p!RoNsec+5#gA]n,hu;R5iVqp;jo4KClMg,KmJcSRnG_tTo`"R`p\ssbqYpBkr:p6f +riQ45s8N#mrVQKkqYp9ep\sjbo`"I]nGD\Oli-,Ik5OH=i;VU4g]#k)f)F.td/MAjcMPfaaSs3Y`;[XN +_#(nG^Abh@]`,P9]`,VD^\bhD_>_@O`r=$Xao0Eabfp(5rmC_ormh##rn@A.rnm_5ro3q=roX4Eqs=4L +rpp'\qtC$`rqQKgrqcNiq#13kYlDB9q#13iqtpBgrqQKerq??`rq$-ZrpTjSrp9XKroj@Cro3q9rnm_/ +rn7;%rm^qrrm1Sgrlb;_rl>#Wrkn`OrkSNHqn)j=rj_j7ppU(-ppU12rj_s2^ +aSs?]cMl/hdf.erf)FA"h#?72ir8$rjDX/qlg"$ri>prql&t]ql'LpqlKe"ric=* +rj2U2rjVm_@O`r=-[bl5ugdf.bqfDaP(h>Z@3j8S-=kPjcGm/-;Onc&.Wp&=^bq#:*g +qYU3irVQT&s2G$;rqQHhqu6Ejq#:$epA=IYn,D_RlMg#Hk5OB>i;VU4g]#h(ec*tqcMl&eao99Y_u@FM +]`,MA\,Nc6Zi70-Y5YO%WrAsrVuEOlV#I.aUA1D\U%kAZV#I7jVuEXoX8]:$YPtg+[/dW9[^Q1Grk8#\rm1Skrm^r!rn7;,ro!e8roO.Crp'LMrpTjUrposYqtL*brqcWkrquQi[f=>Hrr2fnrquZi +rqZQgrqHEarpg!WrpTjQrp0RIroX4?rnm_1rnIG)rmUkorm(McrlP/WrkSNJrk/6>rjDa1rilC)ri?$s +rhf[irh9=arh'(ZqjdGNopl#Prh'(\rhBCerh]Ulri,n!riZ=,!O8p/[/RT7])KJD_#D4M`r=-[bl5ug +e,Insg&Bk-hu;U6k5OQClMg5Nn,DhUoD\C]pAXgcq#:-hqtprr2lqr;QTmqYp"d/M>ibl5]__u@LO^Ab\B\,N]4Yl:g)X8]!qV#-haTDkA[ +RJrTQQi<6HPPC:;OT(C>P5^[EQ2[*KR/WQRS,T#YTDkM_U]..kW<&utriQ1'riuI1rjr*BrkSNPrl4r[ +rm1SjrmUl!rn@A/ro*k:roX4Erp0INrpp'\rq??crqQBerqlKhqu4A1bQ%A9qtpBhrqQKerq??`rq$-Y +rpTjRrp'LGroO.;rndY0rn7;#rmLekrlG)Zrkn`Mrk8U)[JmW6]`,_G_Z%RSb5TZbdJh_r +fDaP(hu;U6jSn?Al2L)Ln,DhUo)&+Zp\sseq>U9drVQT/s3CZDrqQHhqu6Hkq#:$ep&=R^o)A+Wm/H>M +kl0]Cir7j7g]#q+ec*qpcMl#d`W!aR^](hD\c/r7Yl:g)WrAjoUAgeaSGnuVQi!!DO8b1=N;JM3M#N2# +LAlu-M#N81MuJ\7NW,"#[rm1Skrm^r" +rn[S1ro*k=roa:GrpKdSrp]gWqtL*brqcNirr)`n^]2UZrr2fnrquZirqQKerq69^rp]pUrpKdMroj@C +ro!e4rnIG(rmh"orlkAarkn`NrkABBrj2U/riQ0urhf[frgs+Zrg<\Lrfd>Brf-o8re^W/re19'qgn`r +rdaZkrdautqgeZsrdt-&reLK/reg]8rf@&?rfmJL!LB&NS,T&ZU&LkeWW'!uYl;'0\,O)?_#D4Ma8X?_ +ci2AlfDaJ&hu;U6j8S3?lMg/InG`"Xo`"Uaq#:*gqtpZ+,eGdnqbl5W]`;[LM])K5=ZMq$+XT#-sU]-tdSGnlSQ2ZpFO8b.3NrY:COcfX-rgEbTrh'1brh]Upric=+rjMg< +rkABLrlG)]rm:Yormq)'rnm_6roF(Crp0RNrpTjUrq$-_rqHEeq"sserr0e7eGoFFrr)iorql]krqZQg +rqHEarq$$UrpB^MroX4?rnm_1rn@A%rm:YirlP/VrkSNGrjDa2riZ7"rhoahrgs+Zrg<\JrfI,=re^W1 +re19$rdXorrd4Wjrd"Kerc\9`qfMLPrcJ-^rce6ard+QlrdOirrdt-%re:?/!/gl9MuJe:PQ$jHS,T#Y +T`1eeX8]7#Z2V63\c0AC_u@[Tc2Q,ieGe,"h>Z:1iVr$>kl0oIn,DhUo)&+Zp\t!fqYpBhrVlf5s4%)G +rr2lnqu6Hkq#:$ep&=O]nc&"VlMg&Ijo46OD>S5JDuO_TF8g:\GQ)pfHiAKnJcLE( +K7j/Yrf$i9rfR2HrgNhXrhKIhri?%%rj)O6rk8PQ%!LSc5;]V>dOpXo>[+\Gj)=_#D@Qao9TbeGe%uh#?41iVqp;kPj`F +n,DhUo)A:\p\sseqYpBkr;QZlrlG,ks8N#prVl`lqYp9hp\sjbnc&"Vmf)MNk5OH@hu;F1gA]Y%cMl#d +aSs!S^Ab_CZMq',WrAgnUAgY]Qi<6KNrFt9M>i2-J,XlqHiA3fFoHC[DZ4MPD#S2KC&VcEB)ZB7AG]m6 +AG]s8BDuTAC]82MDZ4VSFT-IaGl`29rd=]prdk''repc8rf[8JrgNhYrhf[nriQ1-rjVm>rkeZSrlkAf +rmLeurn[S2ro="?roj7Irp]pYrqHEerqcWkrqucoqu4\:fDkjLrr)iorql]krqZQerq$-[qsOIMroa:@ +ro!e1rmq(trltGbrlG)Srk&0>riuI'ri#gjrg`tVrg!JDrf-o6rdt-"rd4WhrcS3[qec=Jrb2:Drac"< +raPk7qd08-mp,Wnra5P1raYq$"L]352OoCRDRJrcVU&M"iXo>R( +\,O&>^])4Ob5TWadJhetg]$+0j8S-=lMg2Mmf)bUp&=[ap\t$gqu6NjrVlf>s4@;JrVl`oqYp9hp\sj_ +nc%qTlMg#Hjo43;hYu4-df.Vmb5TE[_u@=J[f3W4X8]!qV#Hk_Qi<6KO8b"8L]2r*IK"QlGQ)X^E;j\Q +C&VcEAc?3=@fBa3?2Ik*>5h[n=Sl7u>5hb*>l.n-@K'g:Ac??AB`MoLCMWoercA']rd+Qmrdk''reg]7 +rfd>KrgWn]ri#grrilC3rk&0Erl4rYrltGkrmq)(ro!e8roa:Hrp9XRqt'g[rqQKgrqlTkrr1+@h>dBO +rr)iorql]jrqHEcrq-3[rp]pSroj@Dro3q3rn@A&rm:Ygrl>#SrkABBriuI*ri#girh'1Wrfd>Breg]/ +rdt,srd"Kerc8!TrbMLHral(>raG\0r`T5(r`T5&pf?i`pf@8nr`K/&r`];+ra5Y4raYn>!G?'EC&W&M +E;k"ZGlE'hJc:K)MZ/Y8Q2[-LS,T5_VZ*Xq[/RN5]Df_I`r=*Zd/MMngA]q-i;Vg:lMg,KmecSSp&=ac +q>U9grVlf>s5!_Prr2lqqu6Hkq>U*ep&=O]mf)SPl2K`BiVq[4g&BV&dJh>gaSs'U])K2i2-IK"NkGQ)R\DZ4ALB`;WCA,]g6>khJ$X8glJ+2@0'eF +ral(Brb;@KrcA']rd"Klrdk'(rf-orkJHQrlkAfrm^r#rnIG1roO.Brp9XP +rp]pZrq69arqZHhrr(%?h>dBOrquZirqHEcrq-3Zrp9XMroa:?ro!e0rmq(trlb;]rkn`JrjMg4ri?$p +rhBC]rg!JGrf$i1re(2urce?arc.pRrb;@Cra>_4ra#M*r`B)!qc!Jkr_WSiqb@&`j%K/Ar_NMir_req +r`/r!rEB;,>Q.t.@fBp;B`;lJDuOnYH2`3jKDpZ*MZ/_:QN!_u@^Ub5TfffDaJ& +h>ZI6jo4NDmJcSRo)A=]pAXjar;QZlIh(rg*PQrhKIj +riZ7,rjMg>rl4rXrm(Mnrn%/(rnm_7rosFJrpKdUrq69arqQBfrr)`ndJr&&qu-NkrqQKerq69\rpTjP +rosFFro*k4rn@A%rm(Mdrl"fLrk&09riQ1!rhBC]rg<\Ireg]0rdk&orce?^rbVRJral(;ra5Y/qc3Vp +r_NMgr_3;`r^m)[nj`UIksYM>pdY-Nr^d#]r_3;cr_WYn!E)hpU6ir;6K@s5!_Sr;QTm +q>U0gp\sganG_nUlMfrFj8S!9g&BV&df.GhaSs$T])K/;YPtI!V#HtbQ2ZsGN;eM0Jc:#qFT-=[D>n5J +Ac?-;>Q.h*s>i9`@]a8GbmR7/fRQ6MNk25kmYE6iKLN7K,gV8H)3[9E7fg:/:dcr_reqr`T5* +ra5Y8rb;@Hrc%j[rd"KnreCE/rfI,FrgNh[ri,n!rj)O9rkSNPrlkAfrmh#%rnRM5roj@GrpB^Urq$-_ +rqZQiq#&P>i;`fUrqucmrqZQgrqHEarpTjRrosFCro3q6rmq(trm1Sarl"fNrj_s7riH*nrh'1YrfI,= +reLK'rdFcirc.pTrb;@AraGe3r`T5%r_`Yjr_EGcr^m)[qaCENr^-TMq`t$Cj$*H,r]pHKqa19Mr^6ZQ +r^QlY!(m8a9)_Qa;#X>kQ/(1Ac?BBD>nPSFoHdfJc:B&N;f%?QN!KTV#I=lZ2V94]Df_IaSsE_ +eGe/#h#?72jo4HBm/HPSoD\F^q#:*ar6bQ&s8N#sr;QTmq>U'doD\:ZmJcJOkl0Q?hu;=.eGdkpb5T_"EYl:^&V#HtbRf8HKMZ/D1J,XfoGQ)R\C]8#H@K'U4>Q.\&;>sDk:B!ia8H)-V6iKCN5lNtH4o7A: +46AU!48:r;55mhH62j4M6i]XV77I2Gr_!/`r_WSmr`&l#ra,S3ral(FrbqdYrd=]pre:?0rf6uErgs+` +ri?%)rjVmCrl"fWrm(Morn.5*ro3q>rp'CLrq$-`rqZQiqu"kAi;`fTrql]krqZQdrq$-Yrp'LIroX4; +rnRM)rm:Yhrl>#Rrk/6;riQ0urh07XrfmDAre:?'rd4Wdrc.pQral(=ra#M*r`B(sr_EGdr_!/Zr^HfR +q`t-Eq`Oj>r]9p:h)PBoofE(7q`XgA!'pWO62j:O7fGsX9E%`d;>sPo>5hh,@K'm_CPc2Q/jf)FG'i;Vd9l2L&Kmf)eVp&=[aq>:*;s5U0go`"I] +n,DSNkPjQAh>Z1.e,I_nbl5T\^AbbDZ2Ua%V>ct`QN!'HM>i,+J,X]lEW0kTB`;K??iF7.56*tH5l4"L8cDE_:B"/j:*hrm^u+s8Mrq +qYp>lIq+ +Z73;tr=3rqE)r]U6Fr]pHMr^ZrZr_3;g +r_rf!ra#M2rb)4Grbh^ZrdFcsreUQ:rg!JRrhoaqrilC6rkJHOrltGhrmh#(rndY9roj@Irp]pYrq69c +qtpBkeGnJ,rquZhrq??_rpg!Rroa:Arnm_.rmh"qrl>#Wrk8C]8>QGlE*iK`6o/OT(XHU&LqgY5Yp0])KSGao9Qae,J,$hYuO6kl0oI +mf)eVo`"U^qu6QDs5 +4oR_G62jCR9)_N`;#XMp=T2Y+A,^*>DZ4eXH2`?nMZ/V7Q2[BSUAh4m[Jm]8^])=Rb5TigfDaP(i;Vp= +l2L&Knc&1[p\XjerRCl0s82coqu6Bip\sd`nG_hSkl0WAi;VI0ec+"rb5T9W^](bBXo>@"UAgJXPQ$F< +KDpB"G5c@XCAq`B>lIn*<;o\m:&[]_7K,[R5Q3eE3rV);2?#H31A`g*0`E`r0&8,P0(gms0`<^,0erYa +r\sg9r]0j=r^$NPr^Zr\r_`Yor`K/,raPk?rbh^Vrd=]sreLK8rgEbWrhob!rj2U8rkn`VrmC_rrn.5- +roO.Arp0RRrq$-_qtg +re18urcnE]rb;@Dra,S+r`/qor_*5^r^6ZMr]^B62j7N8,c3]:B"2k>5he+A,^9CDuOt[If>!!NW,4BR/Wl[XT#F&\c0GE`W"-]eGe)!h#?C6 +jo4QEnG`"Xo_\I`qpbZ.s82coqu6?hpAX[_mf)POk5O<Z(+cMl#d`W!RM\c/l5VZ*@iRJr- +HN&*eD#S&G@fB[4sPo>5i%2B)Z]IFoH[cKDpo1P5^sMVZ*Up[/RZ9^Ac4QcMl;lgA^"/ir8-?mJcSR +o`"Xbq>U9grn@D7s82coqu69fo`"@Zm/H5Jj8Rm6g]#\$bPoT^^](_AZi7!(T`1G[OoC.8K)U#oE;j\Q +AH#j5=oM=u9`@Z`7K,RO55mVB2Z>T51&`j*/cIQ/"/B)Z]IFT-[eL]383QN!QVV#ILq\,O#=`;[pYcMlGph#?41k5OcIn,DnWp\t!f +qtpBHs5s@Yr;QNkp&=R^n,DPMk5O<VrqZQdrq$-Xroj@Drnm_-rm^qlrl4rSrjVm1ri?$krg<\KreUQ%rd"K]ral(Q4 +0`E^(/H.*t-iPIl,l8hc+f?I]+TW`0rZ_4ar[%Olr[Igsr\"1'r\OO4r]0sAr^-TQr_3;hr`9#)rau.E +rcA'hre191rg<\Vrhob!rj2U#\rmC`!rndY6rp'LKrp]pZrqHEhqu5=Lk5Y>VrqZQcrpp'UroX4A +rnm_+rmUkhrkeZJrjMg-rhoafrfd>Bre(2qrcS3UraGe3r`&kmr_*5Yr]^5i%2BDulL +HiAQpMuK"@S,T5_Y5Ya+]`,nLb5Tcef`'\*iqr!>n,DqXp\t$drn@D7s82`nq>U!bnc%qTjo4<>hYu"' +dJh;f_Z%7J[/R-*VuE4cOoC==Jc9lmErKbO?N+.-;Z9>g8H(pS4oRMA2?#?00E*O%./kUn-2o.g+oWV` ++8[,S*Te@4)r2M1*<@0$rZ:qYrZV7crZqIir[Rmtr\+7*r\XU7r]U6Gr^Hf\r_WSrraGe;rbh^\rdOj& +rfmDLrhKIorilC5rkn`Wrm:YsrnIG2roj@GrpTjXrqHEgqu,7Kk5YGYrql]irq$-ZrpB^Hro="7rmUko +rlP/Vrk8<:ri5sorgWnLrf$i-rcS3Zrb)49r`T4tr_!/[r^$NFr]0s7r\4=(r[[srr[7[irZ_=arZD"Y +p`-LWqA]MU*<$uX*r[8\+TneZIK#'%PQ$sK +U].@oYl;65_u@aVci2MpgA^(1kPj`Fn,DqXp\t$drS%;6s8Mrqqu6Bio)A.Xm/H)Fir7a4e,I\ma8WmR +]Df)7VuEIjR/W0GMZ/&'FT-4XAH#g4=8l"p8,bsV55mSA2Z>N3/cI=#.K1[n,lT"e+Tho%EW0eRA,]X1\*<$oV)VQ(k(ucD6 +)&`DlrYthVrZ1t[rZM1ar[%Ojr[Igur\+7-r]'m=r^$NSr_*5hr`oG1rb;@Rrd"KsrfI,Erh07hriH+. +rkn`TrlkAkrn.5.roa:FrpKdVrq??fqu,7Kk5YGYrql]irq$-Zrp0REro3q4rmUkmrl4rPrjr*4rhoai +rg*PBreUQ$rc%jQraGe.r`&kjr^?`Pr]C*_=rcJ-bre193rfmDSri#gtrjMgCrl4r] +rm^r#ro!e=rosFMrpp'^rqcNjgAg=8rqucmrqQKarpg!RroF(;rnIG#rm(M^rk8<@riZ6srh07Urf$i2 +rd+Q_rbMLAr`B(tr_*5Yr^$NEr\a[1r\"1"r[@alrZ_=brZ;%YrYthTrYbSMe/.lqh&$#,!>l[N)?(QR +*<$uX*r[;],Q8tf./kar/cIL(2Z>`955n"M8cDTd=oM_+B)ZoOGlEd.eQ2Z[?L&QAs +DZ4AL@/a1*;>s2e6iK=L3rUu81B&m).K1^o,lStd+T_*r_i_fr^-TKr]:$8r\=C(r[@amrZqIcrZD+[rYthTrYb\Pq\R`sq\7a!r>#DL(B,-L)#bEP)ZC]T +*<%&Z+oW\b-N5In/H.@&2?#Q64oRkK8,c?a=T2S)Ac?ZJG5d'lN;f">SGoGcXT#[-^]).Mb5Tlhf`'h. +k5OWEmf)hWp&=darS%;6s8Mrqqu6?hoD\:Zm/H)FiVqU2e,I\m`rL&QDtD>n5J +?iF();#X&c62j+J3;t]40`EX&./kRm,Q8hb+9!8Z)ZCWR)#b?N(@N!Q'_E+@'c$]`rYPPNrYb\RrYthX +rZV7br[%Olr[Rn$r\XU4r]U6Jr^Ql_r`B)'ral(Jrc\9lrf-o?rgj%driH++rkABLrlb;jrn.5.roO.C +rpKdWrq69dqu,7Kk5YGYrql]hrq$-Zrp0RFro*k1rmUkmrl+lLrj_s1rhKIbrg!J?re18rrbVRIra#M' +r_`Ycr]pHGr\sg3r\4=%r[7[krZ_=`rZ;%Xq\fALrYGAGrY2RMpCmWB'`JjH(B,-L)#bHQ)u^lW+TSc5PdXT#[-^Ac"KbPouifDa\,jo4KCmJc_V +p&=darS%;6s8Mrqqu6BioD\7YlMfoEir7^3eGdhoa8WdO\c/f3U]-nbQ2Z[?L&QDtD#S,I?2dk';>s/d +62j%H2uYT30`EU%-N5:i,5rY_*W@&X)?(KP(],!C'XJJI'EJm^rY>DJrYPPNrYb\SrZ1t[rZV7dr[@aq +r\"1+r\a[:r^-TQr_#Nrj_s3rhKIbrg!J?re:>srbh^Lra,S(r_`Ycr^$NIr\sg3r\4=% +r[.UjrZV7_rZ1tVrYYVNrYGJJq\8o@YS-gH!#5>FrY>DJrYPPOrYkbUrZD+^rZqIjr[Ih!r\OO2r]C*G +r^Ql]r`B)(rau.Lrc\9lrf-o?rg`tcri?%,rkJHNrlb;krn.5.roa:GrpTjYrq69dqu,7Kk5YGYrql]i +rq-3\rp0RGro3q3rmUkmrlG)Prji$4rhTOdrg*P@re:>trbh^Kra,S)r_i_dr^$NIr]'m4r\4=$r[7[k +rZV7^rZ1tWq\];JrY>;Eq\-1Hq@`lC'E/^C(&f$H)ZC`U+9!D^,lT4k.fM("1]B<34T7_I8,c9_=8lJ( +Ac?ZJGQ*6oNrG7ASc5SeXT#^._#D7Nbl6,kfDa_-kl0oIn,DtYp&=darS%;6s8Murr;QKjo`"F\m/H2I +j8Rg4ec+"raSrsR]Df)7VZ*=hQi;sCM#Mc#DuOMN@/a4+;Z9;f6N04K3W:i60`ER$-iPFk,5rY_*W@#T +)#bHrYGJLrYb\RrZ1t[rZV7cr[Igrr\"1,r\sg=r^6ZSr_NMrra#M9 +rc.p]re(32rfmDPri#gtrjVmCrl"f]rmh#$ro*k?rp0RPrq-3_rqcNjgAg=8rr)iorqQKcrpp'Troa:@ +rnRM'rmLefrkSNFrj)O$rhBCZrf$i3rdFcbrbDF?r`B(sr_!/Wr]gBBr\OO.r[[sqr[.UgrZ;%ZrYthS +rYYVMrY>;Ene/\Lp_*Q>!#5>Fq\B)HrYb\RrZ1t[rZV7dr[@aqr\+7-r\sg>r^?`Vr_WSsr`oG9rc8!_ +re193rfmDRri,n"rjVmDrl4rarmh#$ro*k?rp0RPrq-3_rqcNjgAg=8rr)iorqQKcrpp'Troj@Brn[S) +rmLefrk\THrj;['rhKI[rf-o4rd=]brbVRCr`K.ur_3;Yr]gBCr\XU0r[e$rr[.UhrZD+\rZ(nTrYYVM +rY>DHrY+i8_@cGRr=]2F'E/^F(&f!J(]G5hk-B`<)P +HN&TsOT(LDT)PbhYPu'2_u@^Ud/MVqgA^(1kl0oIn,E"ZpAXpcrS%;6s8Murr;QKjp&=O]mJc>Kjo4-9 +f)F+sb5T6V^&GDhu'F8g(V@fBR1DJrYPPNrYkbTrZ;%^rZ_=gr[Rmur\=C2r]:$Cr^Zr[r_i`#ra>_@ +rc\9greLK9rg3VXri?%%rjr*Hrl>#crmq)&ro3q@rp0RQrq69arqcNjgAg=8rr)iorqZQdrpp'Uroj@C +rndY*rmUkirkeZKrjDa*rhf[brfI,;rdXohrbqdHr`fA'r_NM`r^6ZJr\sg5r\+7#r[@alrZV7`rZ1tV +rYb\PrYPPLrY>DHp_2m)kn37pp_3W@!#>DHq\T5LrYthVrZD+`rZhChr[[t"r\FI4r]C*Fr^m)_r_rf& +raPkCrce?ire^W6(Pl@*MV#IOrZMqK8`r=-[df.r!h#?C6l2L&KnG`+[pAXpcrS%;6s8Murr;QNk +pAX[_mf)JMk5O<=!TDk)SO8ah3GlDa_C&VK=>5hG!9E%K]5lNeC2uYQ20)dC# +-iPCj,5r_a*W@&X)ZCWR)#b?H(&/L0'CQS)'DN::(&esK(BG_\rZqIir[Rn#r\=C1 +r]C*Cr^?`Zr_WSsraPk=rc.p`rdb!-rg3VSrhob!rj2U;rl>#\rmLf"rnRM6rp'LNrpg!\rq??gqu,7K +k5YGZrquckrq??`rpTjOroa:=rn7;%rm1S`rkeZFric=%rhBCWrfR28rd4WerbMLAra#M'r_PbV)u^iS*r[>^,5rhd-iPXq/H.@&2?#Q64T7_I7K,sZ<;otu@/am>D>nbYKDpZ*PQ%-PUAh1l +[f3l;_Z%aXci2MphYuL5kPjiIn,DnWpAXgcqtp?Gs5s@\rVl`oqYp6gp&=FZli-/Jj8Rp7gA]P"bPoN\ +^&GG=Yl:R"Sc5&VNrFY0I/\0cC&V`D?2dh&;>s2e7/fOP48q2<2?#b?O)uU`W*$"r!rZM1`rZhCgr[.Unr[n+&r\FI4r]:$Cr^QlYr_NMor`];2rb_XSrd+Qt +re^W=rgs+ariQ1.rk&0JrlkAgrn%/,ro3q@rpB^Rrpp'^rqHEhqu,7Kk5YGZrquclrqHEcrpg!Srp'LD +rnm_0rm^qjrl>#PrjMg3ri#ghrgNhJre19#rcS3Wrb2:=r`B(ur_`r=6^dJhethu;X7kl0uKn,DnWp\sseqtp?Gs5s@\rVl`o +qYp6gpAXU]mJcDMk5O9;g]#e'bl5``_Z%(E[Jm3*UAg__Pl?I;KDp5sE;j\QAc>p5=8l+s9)_?[6iK7J +3rV#91B'!,/cI7!.K1[n,lT%f,5WM^+9!>Y*V^W+)u^iS*V^]T+8m>`+X-h/rZqIhr[@aqr[e%%r\OO2 +r]'m@r^$NQr_*5cr`9#(raGe@rc8!^rdk'+rfI,KrhTOlrj)O8rkJHRrm1Smrn@A0ro="CrpKdTrq-3a +rqQKiqu,7Kk5YGZrquclrqHEcrpg!Trp'LFro!e2rn%.prlkA[rk/6?riZ6srh07Vrepc1rdFcfrc%jM +ra5Y0r`/qmr_!/Yr]pHHr]:$9r\OO-r[n+#r[Rmpr[.Ujq]l(`q]PYUq]=Z9q]>MSrZM(]rZ_:d!@/ri +-N5Cl./kar0)dO'1B'323W;/?6N0CP8cDNb;Z9hu@K'j;D>n_XHiAZsNrG7ASGoGcXT#X,^Ac"Kao9]e +e,J)#iVqshYu1,d/M8g`;[IL\c/f3 +VZ*=hR/W0GMZ/,)G5cO]CAq`B?iF.+;>s>i7fGdS62j%H2uY`71]B*-0)dF$.K1am-N5=j,lT%f,5<>S ++R(!@+T!>],5WV^,lf7m-78^?r[Igrr\"1(r\=C0r]0s>r]gBNr^Zr]r_`Ypr`fA4rb2:Lrd"Kkre:?4 +rfmDRri5t#rjVmDrl"fYrmC_orn@A1roO.GrpTjVrq-3brqZQjqu,7Kk5YGZrqucmrqQKerq$-XrpKdM +ro="9rn.4urm1SarkSNFrj;[*rhf[arf[8?re18trce?\rau.>r`oG'r_rejr^d#Xr^-TIr]:$;r\OO/ +r\4=(r[n+"q^MCiq^21drZq7`miqNOpa#hbq^21fr[@aq!%S(#/,h."0)dO'1B'-02Z>c:55mhH7K,jW +9`@rh=T2P(@K's>D#SPUIK"itMZ/n?RJrr[XT#L(\c0JF`W"-]f)F>$h>ZF5jo4ZHn,DkVpAXjdq>U9g +rS%;6s8Murr;QTmq#:$eo`"=Ymf)MNj8S$:gA]Y%dJh;f_Z%=L\,NQ0WrAXiQ2ZpFM#Ml&HN&$cD#S,I +@K'I0=8l.t:&[ca7K,UP5Q3eE3W:u:2#]901&`j*/cI=#/,h$q.JkOj-f$-H-i5=h.fLst/H.4$0**^Z +r\=C.r\XU5r]0s=r]^sMn>5hn.@fC*@E;jtYI/\j! +M>i_lIe'<;o_n8cD6Z +7K,UP5lNqD48q5=2Z>T21]&s)0`E`r0(ggk0).*s0`Ej,1]B612?#N72utuur]:$?r]L0Er^6ZQr^Zr\ +r_#QrjVm4ri5slrgs+Rrf$i5 +re(2srce?\rbDFGraGe2r`];$r_WShr_!/[r^QlSr^$NJr]U-?r]0s;r\sg7q_e@0q_R@iq_S++q_e@3 +q`+R9r]:*B!B`LD5Q3qI62j=P8,c*Z9`@og;uTr!?2e41Ac?HDDZ4eXHiANoL]3A6P5^sMV#I=lYl;34 +^&H"MbPofdec+A'hu;^9kl0lHn,DnWoD\L`q>U9jr;6HHs5s@\rVl`oqu6Ejq#:!dnc&%Wm/H5Jk5O?= +g]#k)df.GhaSs!S]Df8XOoC@>LAlW#HN&$cDZ4DMAc?'9?2dt*T33W;)=48qAA55mbH5QO,8r^-TQr^QlXr_*5br_`Ypr`B)'raPk:rb;@M +rc8!_rdOiure^W;rg*PTrh]Unrj2U8rkABOrm1Slrmq)(ro!e;rosFJrpTaVrqHEfrql]mqu,7Kk5Y>W +rquckrqQKerq$-[rpKdMroj@ArnIG+rmq(qrlkA]rk/6?rj)O&rhf[crg*PIrepc/rdk&qrcS3\rbh^J +ral(;r`oG*r`B(sr_`Yir_*5_r^d#Yr^QlTqa:?Kq`t-Fr]^3Bml^A.q`b!Dr]pHKr^-KLr^HfV!([,] +8H)6\9`@cc;#XGnU9jrVQTJs5s@YrVl`oqYpi,+HiA_9rb)4Grc%jXrcnEjrdb!&repc: +rg3VUrh9=hrilC/rk/6Jrl4r]rmLeqrnIG2ro="ArpB^QrpfmZrqHEfrql]nqu5=Lk5Y>WrquclrqZQf +rq-3]rp]pQrosFEro!e4rn@A"rm1Scrl"fOrji$6riZ6urh'1[rg*PFrf$i2rdausrd"K_rbqdPrb2:D +raYq7ra#M-r`B)"r_r\kr_WJer_32]r^d#[qag0GognsOqb-o^r_EGgr_`Ym!)ins;uTer=T2J&>Q/%0 +@fBsiY:Pl@-NU&LkeXT#R*[f3u>`r='Yci2Dmf)FJ(j8S-=kl0uKmf)eV +pAXgcq#:-hqu6Qkrn@D7s7lQlqYplIt,=oMM"sJm +;uTeole5:ra5Y5raYq>rbDFJrbVRSrcJ-brdFcqreCE.repc=rg3VRrh9=iri?%)rjVm> +rl"fXrltGjrn.5(ro!e;roX4FrpTjUrq$-`rqQKgrql]mrr)`ngAg=8qu6TnrqcWirqHEcrq69]rpTjR +rp'LFroF(9rn7;&rmLejrlY5Yrk/6@rj2U*ri5smrgs+Xrg!JFrf-o5re19&rdO`hrcJ-YrbqdOrb2:D +rac"_LSc2Q)hf)FD&h>ZC4kPj`FmJcSRnG`%Yp\sseqYpBkr;QZl +rn@D7s82fprVQHjq#:$ep&=R^nG_kTlMfrFjSn'9h#?%,eGdenbPoN\^AbeE[JmK2Y5Y?uU&LY_Rf8TO +PQ$UAM#N2/K)U<"IK"QlG5cX`EW0qVDZ4GNC&VfFB)ZB@AH$*<@fBg2?iFC#?2.b'?iFI4@K'a8A,^'= +B)ZHBB`MlKC23`brc%jVrcJ-`rd"Kkrdb!!re:?/rf$i?rg!JMrgs+arhTOnrj2U3rjr*Erkn`Wrm:Yn +rn.5)rndY8roa:FrpKdTrpp'\rqHEerqcWkrqucoqu5=Lk5Y>Xrr)`krqZQgrqHEarp]pUrpKdMroj@B +rndY0rn.4urm:Yerl+lSrkAB?rj2U/ri5srrhKI`rgWnSrfd>Erf-o5reCE*rdautrd=]krcnEdrcS3^ +rcA'Yrc%jSphfeAltZE5qeZ.Hrbh^Sqf;[XrcS9c!I&beGlE$gHiAKnK)UH&L&Qu/N;eqhu;C0fDa>"d/M5fao96X^AbbD[f3T3Yl:^&VuEOlTDkA[Rf8ZQ +PQ$^DNr+_5L]2u+KDpDuIK"WkH2`'cGPH=UF8L"NF8g:YFoHR`GQ)jdH2DsfIK"]rJ,t1Nrdt-'reCE/ +repc8rfI,Drg*POrgj%[rhKIiri,n"rj)O2rjr*DrkeZSrlb;ermUl"rnIG0roO.Arp'LMrpKdTrq$-] +rqHEerqZQiq#/_Bk5Y>Xrr)iorql]krqQKerq?6\rpTjRrp0RHroO.>rn[S,rn%.trm1Serl>#TrkSNE +rjVm7rilC&ri,morhBCbrgj%Urg3VJrfI,?rf$i6reUQ.re19'rdt#trdXorrdFZkrd4Edom-F\rd4Ni +rdFZmqgeZtre(3(!/:N/LAm#.MuJ\7O8b=APQ$jHS,SrWT)PJ`V#I:kXT#F&[/RQ6\c0;A_u@URao9Wc +dJh_rg]$%.iVqsU6crRCl*s8Murr;QTmqYpd7hUAgeaS,SlUQi<9LPl?jFOT(=? +NrG":MuJV2M#N1`LAlu-M#3&.MZ/S6NW,";Oo^`/rfd>Irg3VPrgj%[rhBCfrhf[nriQ1&riu@/rk&0D +rkeZSrlP/`rm:Yormq)(rn[S2roO.Crp'CLrp]pYqt9s_rqZQirqlTkrr1FIi;`fUrr)iorql]krqZQf +rq??arq$-YrpTjRrp'LIroO.EplXTuqiUl@qiq)Fqj7;MrgNnYr13_XrhBChrhoaqqlKe$rj;[5rji$A +rkJHKrl4rXrlP/crmC_prn7;*rnm_7ro="Aqs47Nrpg!Yrq$-`qtU'brqlTkrr1FIi;`fUrr)iorqlTh +rqQKerq??`rpg!WrpTaLroX4Aro="7rn@A(rm^qqrm:Ygrl>#Wrl"fOrkABErj_s:rj;[/riZ7%ri,dn +rh]Uirh9=aqk!SPqjR;Ik*H"5pmCiGqjdYWrh0=d!MZ=fV#.(hWW&psX8]:$ZMq30[/RT7\c0AC_#D1L +`r='Yb5T]cdJhVof`'Y)h>ZC4jo4EAl2L&KmJcVSo)A7[o`"Uaq#:*gqYpBkr;6Hlrm^u+s8N#prVl`l +qYphYu=0g]#h(f)F.tdJhGjb5TH\`r_1G])K5=[JmK2YPYL% +Xo#-tW;`^oVZ*FeU]."eU$86IU&1S`U\gkdV>dClW;`gqWr]9%ql]q&rj)F0rjhp=rkSNMrkn`RrlG)\ +rlkAgrmLeqqq1o'rnm_6roO.Crp'LLrpTjUrposYrq??crqQKhrql]mq#13keGnA)q#1*erqcWhqtL*^ +qt'gVrpTjQqs+1Cro=":rnm_0rn@A(rm^qrrmLelrltGcrlG)Yrl"fPrkSEErk&0?qmZI0rj2U/qlp(& +riQ(!qlBUonu;MdpoFCqriQ(#qlp(*rNlU4[/RN2\Gj&<]DfPD_>D.L`r=$XaSsB^cMl/he,Insf)FD& +h#?41iVqp;jo4NAli-APnG_tWoDA7\p\sseq>U6iqu6NmrVQTAs5!_MrVQKkqYU*fq#:!do`"I]nc&%W +n,DYPlMfuGk5OKAiqqR2gA]b(f)F4sdJhGgbl5]_a8X'W`;@CM^AbeE]DfA<\GN`6[JmQ4Zhq'*Z2:co +YPtd$Z2V'+[/791[f3c7\H07Orjr*BqnE'Grkn`Url4rXrlY5arm(MhrmLeqrmq)%rn@A+rnm_5roF(? +roX4FrpKdSrp]pXrq$-]rq??crqQBdrqcNirr)`ndJr&&qu6TnrquZjqtg3brqHEbqt'gUrp]pUrp9OI +roX4Aro="9rnRM-rn@8%rmq(trmLenqp,)^rlY5]rl>#Xrl"fRrkeZNrkJHHrk83An%8A+m(On,DhUo)&(Y +pAXgcq#:*gqYpBkr:p6frmCc%s82fmrVl`iqu6Hkq"sgbo_\7Znc&%Wmf)SPli-2Hkl0]Cj8S';i;;@0 +g]#q+g&BS%eGI_id/2)ebPTEYaSs6Z`r!aS`;@I4_Z%IM`;@OQ`r=$XaSX'ZaoTZ-rlb2bqp>>irmUkt +rn%/%rn@A+rnRM0rnm_6ro="=roX4Erp'LKrpB^Qrp]^SqtBp]rqQKhrql]mq#13kbQ$Duqu6BhrquZj +rqcEbrq??arq-*YrpTjUrpTjQqs"+CroO%;qr.P2rnRM-rn@8$rmptrrmUkpqpG;frm(Dboud0Rj2h,> +pr`TZrlt>crQkSld/MJmdJhSne,Inpf)+/"g]$%.hYuI4iVqj9jSn9?k5OTDlMg,Kmf)\SnG_tWoDA1Z +p\Xa_q>U6iqu6NgrVlf>s4@;MrqQHkr;6BgqYpp#PK"p#Po0roWn:!9aIIkl0iAlMg,Km/-2Cmf)_Tnc&+So`"O\pA=U`q#:*aqYpBhr:9gc +rke]Ys82fgrUTjbqYU*cq"=C\pA=LZoDA+RnGD\RmecDBm/H>GlMg&(kkjW;lMg,DliHJ>rpBUNrpTXO +rpg!Yq"+:Qo(W%Vqt^6fq"ssdq#1!e^]2LWqu69eq#($dq"k!cm.gSSrq?6^rq-*Zq""FSq!dkCrpKIH +h %APLeod +EI +3 w +1 J +1 j +0.60000002 i +/Cs3 SC +1 0.81442457 0.19630885 sc +1 0 0 -1 -75 618 cm +391.48828 592 m +391.48828 613.10156 l +S +1 0.81442499 0.196309 sc +398.6543 592 m +398.6543 613.10156 l +S +0 0 0 sc +CM +15.71875 491.02344 m +396.96094 491.02344 l +399.72235 491.02344 401.96094 488.78485 401.96094 486.02344 c +401.96094 104.78125 l +401.96094 102.01984 399.72235 99.78125 396.96094 99.78125 c +15.71875 99.78125 l +12.957329 99.78125 10.71875 102.01984 10.71875 104.78125 c +10.71875 104.78125 10.71875 104.78125 10.71875 104.78125 c +10.718735 486.02344 l +10.718735 488.78485 12.957314 491.02344 15.718735 491.02344 c +15.718735 491.02344 15.718735 491.02344 15.718735 491.02344 c +h +15.71875 491.02344 m +f +1 w +1 0 0 -1 -75 618 cm +90.71875 126.97656 m +471.96094 126.97656 l +474.72235 126.97656 476.96094 129.21515 476.96094 131.97656 c +476.96094 513.21875 l +476.96094 515.98016 474.72235 518.21875 471.96094 518.21875 c +90.71875 518.21875 l +87.957329 518.21875 85.71875 515.98016 85.71875 513.21875 c +85.71875 513.21875 85.71875 513.21875 85.71875 513.21875 c +85.718735 131.97656 l +85.718735 129.21515 87.957314 126.97656 90.718735 126.97656 c +90.718735 126.97656 90.718735 126.97656 90.718735 126.97656 c +h +90.71875 126.97656 m +S +1 1 1 sc +CM +318.73361 450.83908 m +315.73984 453.83282 315.73984 458.68671 318.73361 461.68045 c +321.72739 464.67422 326.58121 464.67422 329.57498 461.68045 c +332.56876 458.68671 332.56876 453.83282 329.57498 450.83908 c +326.58121 447.84531 321.72739 447.84531 318.73361 450.83908 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +393.73361 167.16092 m +390.73984 164.16718 390.73984 159.31329 393.73361 156.31955 c +396.72739 153.32578 401.58121 153.32578 404.57498 156.31955 c +407.56876 159.31329 407.56876 164.16718 404.57498 167.16092 c +401.58121 170.15469 396.72739 170.15469 393.73361 167.16092 c +S +1 1 1 sc +CM +95.733612 450.83908 m +92.739838 453.83282 92.739838 458.68671 95.733612 461.68045 c +98.727371 464.67422 103.58122 464.67422 106.57498 461.68045 c +109.56876 458.68671 109.56876 453.83282 106.57498 450.83908 c +103.58122 447.84531 98.727371 447.84531 95.733612 450.83908 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +170.73361 167.16092 m +167.73984 164.16718 167.73984 159.31329 170.73361 156.31955 c +173.72737 153.32578 178.58122 153.32578 181.57498 156.31955 c +184.56876 159.31329 184.56876 164.16718 181.57498 167.16092 c +178.58122 170.15469 173.72737 170.15469 170.73361 167.16092 c +S +1 0 0 sc +CM +137.73361 144.34689 m +134.73984 147.34067 134.73984 152.19449 137.73361 155.18826 c +140.72737 158.18204 145.58122 158.18204 148.57498 155.18826 c +151.56876 152.19449 151.56876 147.34067 148.57498 144.34689 c +145.58122 141.35312 140.72737 141.35312 137.73361 144.34689 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +212.73361 473.65311 m +209.73984 470.65933 209.73984 465.80551 212.73361 462.81174 c +215.72737 459.81796 220.58122 459.81796 223.57498 462.81174 c +226.56876 465.80551 226.56876 470.65933 223.57498 473.65311 c +220.58122 476.64688 215.72737 476.64688 212.73361 473.65311 c +S +0.60000002 0.40000001 0.2 sc +CM +328.11795 163.68045 m +333.05444 158.74399 333.05444 150.74039 328.11795 145.80392 c +323.18149 140.86743 315.17789 140.86743 310.24142 145.80392 c +305.30493 150.74039 305.30493 158.74399 310.24142 163.68045 c +315.17789 168.61694 323.18149 168.61694 328.11795 163.68045 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +403.11795 454.31955 m +408.05444 459.25601 408.05444 467.25961 403.11795 472.19608 c +398.18149 477.13257 390.17789 477.13257 385.24142 472.19608 c +380.30493 467.25961 380.30493 459.25601 385.24142 454.31955 c +390.17789 449.38306 398.18149 449.38306 403.11795 454.31955 c +S +8 w +0.60000002 0.40000001 0.2 sc +394.17969 476.39844 m +394.17969 584.99609 l +S +0 0 0 sc +CM +328.11795 39.789795 m +333.05444 34.853333 333.05444 26.849792 328.11795 21.91333 c +323.18149 16.976807 315.17789 16.976807 310.24142 21.91333 c +305.30493 26.849792 305.30493 34.853333 310.24142 39.789795 c +315.17789 44.726318 323.18149 44.726318 328.11795 39.789795 c +f +1 w +1 0 0 -1 -75 618 cm +403.11795 578.21021 m +408.05444 583.14667 408.05444 591.15021 403.11795 596.08667 c +398.18149 601.02319 390.17789 601.02319 385.24142 596.08667 c +380.30493 591.15021 380.30493 583.14667 385.24142 578.21021 c +390.17789 573.27368 398.18149 573.27368 403.11795 578.21021 c +S +CM +306.53906 33.542969 m +331.82031 33.542969 l +331.82031 18.210938 l +306.53906 18.210938 l +h +306.53906 33.542969 m +f +1 0 0 -1 -75 618 cm +381.53906 584.45703 m +406.82031 584.45703 l +406.82031 599.78906 l +381.53906 599.78906 l +h +381.53906 584.45703 m +S +0.37170765 0.38130584 0.38556284 sc +CM +130.99295 287.57108 m +135.92944 282.63461 135.92944 274.63101 130.99295 269.69455 c +126.05649 264.75806 118.05289 264.75806 113.11642 269.69455 c +108.17993 274.63101 108.17993 282.63461 113.11642 287.57108 c +118.05289 292.50757 126.05649 292.50757 130.99295 287.57108 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +205.99295 330.42892 m +210.92944 335.36539 210.92944 343.36899 205.99295 348.30545 c +201.05649 353.24194 193.05289 353.24194 188.11642 348.30545 c +183.17993 343.36899 183.17993 335.36539 188.11642 330.42892 c +193.05289 325.49243 201.05649 325.49243 205.99295 330.42892 c +S +0.37170765 0.38130584 0.38556284 sc +CM +187.99295 287.57108 m +192.92944 282.63461 192.92944 274.63101 187.99295 269.69455 c +183.05649 264.75806 175.05289 264.75806 170.11642 269.69455 c +165.17993 274.63101 165.17993 282.63461 170.11642 287.57108 c +175.05289 292.50757 183.05649 292.50757 187.99295 287.57108 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +262.99295 330.42892 m +267.92944 335.36539 267.92944 343.36899 262.99295 348.30545 c +258.05649 353.24194 250.05289 353.24194 245.11642 348.30545 c +240.17993 343.36899 240.17993 335.36539 245.11642 330.42892 c +250.05289 325.49243 258.05649 325.49243 262.99295 330.42892 c +S +0.37170765 0.38130584 0.38556284 sc +CM +240.57889 287.57108 m +245.51538 282.63461 245.51538 274.63101 240.57889 269.69455 c +235.64243 264.75806 227.63882 264.75806 222.70236 269.69455 c +217.76587 274.63101 217.76587 282.63461 222.70236 287.57108 c +227.63882 292.50757 235.64243 292.50757 240.57889 287.57108 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +315.57889 330.42892 m +320.51538 335.36539 320.51538 343.36899 315.57889 348.30545 c +310.64243 353.24194 302.63882 353.24194 297.70236 348.30545 c +292.76587 343.36899 292.76587 335.36539 297.70236 330.42892 c +302.63882 325.49243 310.64243 325.49243 315.57889 330.42892 c +S +0.37170765 0.38130584 0.38556284 sc +CM +240.57889 371.07108 m +245.51538 366.13461 245.51538 358.13101 240.57889 353.19455 c +235.64243 348.25806 227.63882 348.25806 222.70236 353.19455 c +217.76587 358.13101 217.76587 366.13461 222.70236 371.07108 c +227.63882 376.00757 235.64243 376.00757 240.57889 371.07108 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +315.57889 246.92892 m +320.51538 251.86539 320.51538 259.86899 315.57889 264.80545 c +310.64243 269.74194 302.63882 269.74194 297.70236 264.80545 c +292.76587 259.86899 292.76587 251.86539 297.70236 246.92892 c +302.63882 241.99243 310.64243 241.99243 315.57889 246.92892 c +S +0.37170765 0.38130584 0.38556284 sc +CM +135.40701 371.07108 m +140.34351 366.13461 140.34351 358.13101 135.40701 353.19455 c +130.47055 348.25806 122.46695 348.25806 117.53049 353.19455 c +112.59399 358.13101 112.59399 366.13461 117.53049 371.07108 c +122.46695 376.00757 130.47055 376.00757 135.40701 371.07108 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +210.40701 246.92892 m +215.34351 251.86539 215.34351 259.86899 210.40701 264.80545 c +205.47055 269.74194 197.46695 269.74194 192.53049 264.80545 c +187.59399 259.86899 187.59399 251.86539 192.53049 246.92892 c +197.46695 241.99243 205.47055 241.99243 210.40701 246.92892 c +S +1 0 0 sc +CM +306.65701 371.07108 m +311.59351 366.13461 311.59351 358.13101 306.65701 353.19455 c +301.72055 348.25806 293.71695 348.25806 288.78049 353.19455 c +283.84399 358.13101 283.84399 366.13461 288.78049 371.07108 c +293.71695 376.00757 301.72055 376.00757 306.65701 371.07108 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +381.65701 246.92892 m +386.59351 251.86539 386.59351 259.86899 381.65701 264.80545 c +376.72055 269.74194 368.71695 269.74194 363.78049 264.80545 c +358.84399 259.86899 358.84399 251.86539 363.78049 246.92892 c +368.71695 241.99243 376.72055 241.99243 381.65701 246.92892 c +S +1 0 0 sc +CM +306.65701 287.57108 m +311.59351 282.63461 311.59351 274.63101 306.65701 269.69455 c +301.72055 264.75806 293.71695 264.75806 288.78049 269.69455 c +283.84399 274.63101 283.84399 282.63461 288.78049 287.57108 c +293.71695 292.50757 301.72055 292.50757 306.65701 287.57108 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +381.65701 330.42892 m +386.59351 335.36539 386.59351 343.36899 381.65701 348.30545 c +376.72055 353.24194 368.71695 353.24194 363.78049 348.30545 c +358.84399 343.36899 358.84399 335.36539 363.78049 330.42892 c +368.71695 325.49243 376.72055 325.49243 381.65701 330.42892 c +S +0.37170765 0.38130584 0.38556284 sc +CM +187.99295 371.07108 m +192.92944 366.13461 192.92944 358.13101 187.99295 353.19455 c +183.05649 348.25806 175.05289 348.25806 170.11642 353.19455 c +165.17993 358.13101 165.17993 366.13461 170.11642 371.07108 c +175.05289 376.00757 183.05649 376.00757 187.99295 371.07108 c +f +0 0 0 sc +1 0 0 -1 -75 618 cm +262.99295 246.92892 m +267.92944 251.86539 267.92944 259.86899 262.99295 264.80545 c +258.05649 269.74194 250.05289 269.74194 245.11642 264.80545 c +240.17993 259.86899 240.17993 251.86539 245.11642 246.92892 c +250.05289 241.99243 258.05649 241.99243 262.99295 246.92892 c +S +316.79688 84 m +363.01428 113.82159 l +S +CM +294.73688 499.8407 m +289.6413 506.69891 l +286.38824 501.65732 l +h +294.73688 499.8407 m +f +0 J +0 j +1 0 0 -1 -75 618 cm +369.73688 118.1593 m +364.6413 111.30109 l +361.38824 116.34268 l +h +369.73688 118.1593 m +S +1 J +1 j +199.65262 112.18939 m +250.35547 84 l +S +CM +117.6606 501.92325 m +126.11038 503.1886 l +123.19485 508.43262 l +h +117.6606 501.92325 m +f +0 J +0 j +1 0 0 -1 -75 618 cm +192.6606 116.07675 m +201.11038 114.8114 l +198.19485 109.56738 l +h +192.6606 116.07675 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 206.33984 554.3125 cm +/F1.1[ 12 0 0 -12 0 0]sf +-22.5 4 m +(!"#$%&')[ 8.666016 6.673828 3.333984 8.666016 6.673828 3.996094 0.000000 ] xS +1 0 0 -1 87 66 cm +-36 -3 m +(\(%$"&\)*#+#,-)[ 8.003906 6.673828 8.666016 6.673828 3.996094 3.333984 8.003906 3.333984 6.673828 3.333984 6.673828 0.000000 ] xS +-36 11 m +(./0)[ 6.673828 8.003906 0.000000 ] xS +1 0 0 -1 379.46094 46.507812 cm +-17.5 4 m +(\(%$"&)[ 8.003906 6.673828 8.666016 6.673828 0.000000 ] xS +/Cs3 SC +1 0 0 sc +1 0 0 -1 297.71875 241 cm +-4.5 4 m +(1)s +1 0 0 -1 231.64062 396.88281 cm +-3.5 4 m +(2)s +1 0 0 -1 300.85938 396.88281 cm +-4.5 4 m +(1)s +1 0 0 -1 183.19531 396.13672 cm +-3.5 4 m +(3)s +1 0 0 -1 126.46875 396.13672 cm +-3.5 4 m +(4)s +1 0 0 -1 119.5 241 cm +-3.5 4 m +(5)s +1 0 0 -1 174.91406 241 cm +-3.5 4 m +(6)s +1 0 0 -1 227.5 241 cm +-3.5 4 m +(7)s +ep +end +%%Trailer +%%EOF ADDED Docs/Images/node.graffle Index: Docs/Images/node.graffle ================================================================== --- Docs/Images/node.graffle +++ Docs/Images/node.graffle cannot compute difference between binary files ADDED Docs/Images/node_inside.gif Index: Docs/Images/node_inside.gif ================================================================== --- Docs/Images/node_inside.gif +++ Docs/Images/node_inside.gif cannot compute difference between binary files ADDED Docs/Images/node_inside.png Index: Docs/Images/node_inside.png ================================================================== --- Docs/Images/node_inside.png +++ Docs/Images/node_inside.png cannot compute difference between binary files ADDED Docs/Images/node_outside.gif Index: Docs/Images/node_outside.gif ================================================================== --- Docs/Images/node_outside.gif +++ Docs/Images/node_outside.gif cannot compute difference between binary files ADDED Docs/Images/node_outside.png Index: Docs/Images/node_outside.png ================================================================== --- Docs/Images/node_outside.png +++ Docs/Images/node_outside.png cannot compute difference between binary files ADDED Docs/Images/nodes.eps Index: Docs/Images/nodes.eps ================================================================== --- Docs/Images/nodes.eps +++ Docs/Images/nodes.eps @@ -0,0 +1,6159 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%HiResBoundingBox: 0.000000 0.000000 416.000000 517.000000 +%APL_DSC_Encoding: UTF8 +%APLProducer: (Version 10.6.7 (Build 10J869) Quartz PS Context) +%%Title: (Unknown) +%%Creator: (Unknown) +%%CreationDate: (Unknown) +%%For: (Unknown) +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 0 0 416 517 +%%EndComments +%%BeginProlog +%%BeginFile: cg-pdf.ps +%%Copyright: Copyright 2000-2004 Apple Computer Incorporated. +%%Copyright: All Rights Reserved. +currentpacking true setpacking +/cg_md 141 dict def +cg_md begin +/L3? languagelevel 3 ge def +/bd{bind def}bind def +/ld{load def}bd +/xs{exch store}bd +/xd{exch def}bd +/cmmtx matrix def +mark +/sc/setcolor +/scs/setcolorspace +/dr/defineresource +/fr/findresource +/T/true +/F/false +/d/setdash +/w/setlinewidth +/J/setlinecap +/j/setlinejoin +/M/setmiterlimit +/i/setflat +/rc/rectclip +/rf/rectfill +/rs/rectstroke +/f/fill +/f*/eofill +/sf/selectfont +/s/show +/xS/xshow +/yS/yshow +/xyS/xyshow +/S/stroke +/m/moveto +/l/lineto +/c/curveto +/h/closepath +/n/newpath +/q/gsave +/Q/grestore +counttomark 2 idiv +{ld}repeat pop +/SC{ + /ColorSpace fr scs +}bd +/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld +/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld +/cgmtx matrix def +/sdmtx{cgmtx currentmatrix pop}bd +/CM {cgmtx setmatrix}bd +/cm {cmmtx astore CM concat}bd +/W{clip newpath}bd +/W*{eoclip newpath}bd +statusdict begin product end dup (HP) anchorsearch{ + pop pop pop + true +}{ + pop + (hp) anchorsearch{ + pop pop true + }{ + pop false + }ifelse +}ifelse +{ + { + { + pop pop + (0)dup 0 4 -1 roll put + F charpath + }cshow + } +}{ + {F charpath} +}ifelse +/cply exch bd +/cps {cply stroke}bd +/pgsave 0 def +/bp{/pgsave save store}bd +/ep{pgsave restore showpage}def +/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd +/scrdict 10 dict def +/scrmtx matrix def +/patarray 0 def +/createpat{patarray 3 1 roll put}bd +/makepat{ +scrmtx astore pop +gsave +initgraphics +CM +patarray exch get +scrmtx +makepattern +grestore +setpattern +}bd +/cg_BeginEPSF{ + userdict save/cg_b4_Inc_state exch put + userdict/cg_endepsf/cg_EndEPSF load put + count userdict/cg_op_count 3 -1 roll put + countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put + 3 sub{end}repeat + /showpage {} def + 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + false setstrokeadjust false setoverprint +}bd +/cg_EndEPSF{ + countdictstack 3 sub { end } repeat + cg_dict_array 3 1 index length 3 sub getinterval + {begin}forall + count userdict/cg_op_count get sub{pop}repeat + userdict/cg_b4_Inc_state get restore + F setpacking +}bd +/cg_biproc{currentfile/RunLengthDecode filter}bd +/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd +/ImageDataSource 0 def +L3?{ + /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd + /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd +}{ + /ImageBandMask 0 def + /ImageBandData 0 def + /cg_mibiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd + /cg_miaiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter + dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd +}ifelse +/imsave 0 def +/BI{save/imsave xd mark}bd +/EI{imsave restore}bd +/ID{ +counttomark 2 idiv +dup 2 add +dict begin +{def} repeat +pop +/ImageType 1 def +/ImageMatrix[Width 0 0 Height neg 0 Height]def +currentdict dup/ImageMask known{ImageMask}{F}ifelse exch +L3?{ + dup/MaskedImage known + { + pop + << + /ImageType 3 + /InterleaveType 2 + /DataDict currentdict + /MaskDict + << /ImageType 1 + /Width Width + /Height Height + /ImageMatrix ImageMatrix + /BitsPerComponent 1 + /Decode [0 1] + currentdict/Interpolate known + {/Interpolate Interpolate}if + >> + >> + }if +}if +exch +{imagemask}{image}ifelse +end +}bd +/cguidfix{statusdict begin mark version end +{cvr}stopped{cleartomark 0}{exch pop}ifelse +2012 lt{dup findfont dup length dict begin +{1 index/FID ne 2 index/UniqueID ne and +{def} {pop pop} ifelse}forall +currentdict end definefont pop +}{pop}ifelse +}bd +/t_array 0 def +/t_i 0 def +/t_c 1 string def +/x_proc{ + exch t_array t_i get add exch moveto + /t_i t_i 1 add store +}bd +/y_proc{ + t_array t_i get add moveto + /t_i t_i 1 add store +}bd +/xy_proc{ + + t_array t_i 2 copy 1 add get 3 1 roll get + 4 -1 roll add 3 1 roll add moveto + /t_i t_i 2 add store +}bd +/sop 0 def +/cp_proc/x_proc ld +/base_charpath +{ + /t_array xs + /t_i 0 def + { + t_c 0 3 -1 roll put + currentpoint + t_c cply sop + cp_proc + }forall + /t_array 0 def +}bd +/sop/stroke ld +/nop{}def +/xsp/base_charpath ld +/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd +/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd +/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd +/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd +/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd +/refnt{ +findfont dup length dict copy dup +/Encoding 4 -1 roll put +definefont pop +}bd +/renmfont{ +findfont dup length dict copy definefont pop +}bd +L3? dup dup{save exch}if +/Range 0 def +/DataSource 0 def +/val 0 def +/nRange 0 def +/mulRange 0 def +/d0 0 def +/r0 0 def +/di 0 def +/ri 0 def +/a0 0 def +/a1 0 def +/r1 0 def +/r2 0 def +/dx 0 def +/Nsteps 0 def +/sh3tp 0 def +/ymax 0 def +/ymin 0 def +/xmax 0 def +/xmin 0 def +/setupFunEval +{ + begin + /nRange Range length 2 idiv store + /mulRange + + [ + 0 1 nRange 1 sub + { + 2 mul/nDim2 xd + Range nDim2 get + Range nDim2 1 add get + 1 index sub + + 255 div + exch + }for + ]store + end +}bd +/FunEval +{ + begin + + nRange mul /val xd + + 0 1 nRange 1 sub + { + dup 2 mul/nDim2 xd + val + add DataSource exch get + mulRange nDim2 get mul + mulRange nDim2 1 add get + add + }for + end +}bd +/max +{ + 2 copy lt + {exch pop}{pop}ifelse +}bd +/sh2 +{ + /Coords load aload pop + 3 index 3 index translate + + 3 -1 roll sub + 3 1 roll exch + sub + 2 copy + dup mul exch dup mul add sqrt + dup + scale + atan + + rotate + + /Function load setupFunEval + + + clippath {pathbbox}stopped {0 0 0 0}if newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + currentdict/Extend known + { + /Extend load 0 get + { + 0/Function load FunEval sc + xmin ymin xmin abs ymax ymin sub rectfill + }if + }if + + /Nsteps/Function load/Size get 0 get 1 sub store + /dx 1 Nsteps div store + gsave + /di ymax ymin sub store + /Function load + + 0 1 Nsteps + { + 1 index FunEval sc + 0 ymin dx di rectfill + dx 0 translate + }for + pop + grestore + currentdict/Extend known + { + /Extend load 1 get + { + Nsteps/Function load FunEval sc + 1 ymin xmax 1 sub abs ymax ymin sub rectfill + }if + }if +}bd +/shp +{ + 4 copy + + dup 0 gt{ + 0 exch a1 a0 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a0 a1 arcn + }{ + pop 0 lineto + }ifelse + + fill + + dup 0 gt{ + 0 exch a0 a1 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a1 a0 arcn + }{ + pop 0 lineto + }ifelse + + fill +}bd +/calcmaxs +{ + + xmin dup mul ymin dup mul add sqrt + xmax dup mul ymin dup mul add sqrt + xmin dup mul ymax dup mul add sqrt + xmax dup mul ymax dup mul add sqrt + max max max +}bd +/sh3 +{ + /Coords load aload pop + 5 index 5 index translate + 3 -1 roll 6 -1 roll sub + 3 -1 roll 5 -1 roll sub + 2 copy dup mul exch dup mul add sqrt + /dx xs + 2 copy 0 ne exch 0 ne or + { + + exch atan rotate + }{ + pop pop + }ifelse + + /r2 xs + /r1 xs + /Function load + dup/Size get 0 get 1 sub + /Nsteps xs + setupFunEval + + + + + + dx r2 add r1 lt{ + + 0 + }{ + dx r1 add r2 le + { + 1 + }{ + r1 r2 eq + { + 2 + }{ + 3 + }ifelse + }ifelse + }ifelse + /sh3tp xs + clippath {pathbbox}stopped {0 0 0 0}if + newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + + dx dup mul r2 r1 sub dup mul sub dup 0 gt + { + sqrt r2 r1 sub atan + /a0 exch 180 exch sub store + /a1 a0 neg store + }{ + pop + /a0 0 store + /a1 360 store + }ifelse + currentdict/Extend known + { + /Extend load 0 get r1 0 gt and + { + 0/Function load FunEval sc + + + + + { + { + dx 0 r1 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + r1 0 gt{0 0 r1 0 360 arc fill}if + } + { + + + + + 0 r1 xmin abs r1 add neg r1 shp + } + { + + + r2 r1 gt{ + + 0 r1 + r1 neg r2 r1 sub div dx mul + 0 + shp + }{ + + + + 0 r1 calcmaxs + dup + + r2 add dx mul dx r1 r2 sub sub div + neg + exch 1 index + abs exch sub + shp + }ifelse + } + }sh3tp get exec + }if + }if + + /d0 0 store + /r0 r1 store + /di dx Nsteps div store + /ri r2 r1 sub Nsteps div store + /Function load + 0 1 Nsteps + { + 1 index FunEval sc + d0 di add r0 ri add d0 r0 shp + { + + d0 0 r0 a1 a0 arc + d0 di add 0 r0 ri add a0 a1 arcn + fill + + + d0 0 r0 a0 a1 arc + d0 di add 0 r0 ri add a1 a0 arcn + fill + }pop + + + /d0 d0 di add store + /r0 r0 ri add store + }for + pop + + currentdict/Extend known + { + /Extend load 1 get r2 0 gt and + { + Nsteps/Function load FunEval sc + + + + + { + { + dx 0 r2 0 360 arc fill + } + { + dx 0 r2 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + + + xmax abs r1 add r1 dx r1 shp + } + { + + r2 r1 gt{ + + + + calcmaxs dup + + r1 add dx mul dx r2 r1 sub sub div + exch 1 index + exch sub + dx r2 + shp + }{ + + r1 neg r2 r1 sub div dx mul + 0 + dx + r2 + shp + }ifelse + } + } + sh3tp get exec + }if + }if +}bd +/sh +{ + begin + /ShadingType load dup dup 2 eq exch 3 eq or + { + gsave + newpath + /ColorSpace load scs + currentdict/BBox known + { + /BBox load aload pop + 2 index sub + 3 index + 3 -1 roll exch sub + exch rectclip + }if + 2 eq + {sh2}{sh3}ifelse + grestore + }{ + + pop + (DEBUG: shading type unimplemented\n)print flush + }ifelse + end +}bd +{restore}if not dup{save exch}if + L3?{ + /sh/shfill ld + /csq/clipsave ld + /csQ/cliprestore ld + }if +{restore}if +end +setpacking +%%EndFile +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%PageBoundingBox: 0 0 416 517 +%%BeginPageSetup +cg_md begin +bp +sdmtx +%RBIBeginFontSubset: Helvetica +%!FontType1-1.0: Helvetica 1.0000.0.0000 + 14 dict begin/FontName /Helvetica def + /PaintType 0 def + /Encoding 256 array 0 1 255{1 index exch/.notdef put}for + dup 33 /L put + dup 34 /a put + dup 35 /p put + dup 36 /t put + dup 37 /o put + dup 38 /N put + dup 39 /d put + dup 40 /e put + dup 41 /space put + dup 42 /one put + dup 43 /two put + dup 44 /three put + dup 45 /four put + dup 46 /F put + dup 47 /i put + dup 48 /r put + dup 49 /n put + dup 50 /g put + dup 51 /C put + dup 52 /k put + dup 53 /s put + dup 54 /T put + dup 55 /m put + dup 56 /B put + dup 57 /y put + readonly def + 42/FontType resourcestatus{pop pop false}{true}ifelse + %APLsfntBegin + {currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if + /FontType 42 def + /FontMatrix matrix def + /FontBBox[2048 -1947 1 index div -985 2 index div 2961 3 index div 2297 5 -1 roll div]cvx def + /sfnts [< + 74727565000900000000000063767420000000000000009C0000036C6670676D000000000000040800000A1D676C79660000000000000E28000015CC6865616400000000000023F40000003668686561000000000000242C00000024686D74780000000000002450000000686C6F636100000000000024B8000000366D61787000000000000024F000000020707265700000000000002510000003CF05C0001005BD00280580001A042F001F0000FFD90000FFDA0000FFD9FE55FFE605C70010FE6DFFF1033B000000B9000000B902FE3F3C00C0008D009B00AF000600A800C00028005E009800C9016A00B9015C00B400D6011E002E0080000400B8004C00CC01FFFFD1006600A400AF007400C2009500B1000C0028006D0015004C008E0125FF7A000C0040004C00620084FFA200240038008600BD0039005E008E00EDFFA9FFB300400052005500AA00AB00C200CB012302B10413FFAEFFE4000800510074008400AA00D1FF4CFFAF0012002C004200500051008400BE012503DAFF680018003B0098009C009F00A100C100EC018201B4FF68FF76FFD0FFE100020018001C00530053007D01B401E103AF0486FF9CFFEAFFFE001F0028002A00520060009300A300AA00AF00AF00C001000145016B0174019301950240028202B404850517FEFD00060029004700470048006F008800B400B900C400F200F901EF02180310037403C5FF35FFF3000B004B004C0052005500650076007600870087008E00AB00BB0106013001430150017D0194019501D3022A025502580277027802E6034E035C037903D3047304B2058C0598060BFEF5FFBBFFC7FFD50017001D005B0072007E009C00C200D000F400FA01030106011C0125013B0142015E015E0180019B02B901A101B9025001C001D002AA01DF01E301EF01FB0205020C0215022B0274029302AB02C202CE03690395039903DF03F5043E050205A105E5062507DBFE62FE89FECEFF3BFFE1FFF800030008002100390042004E005F0061006F00700034007F008E00AD00AD00AF00BD00C400C500C900C900C900E3011C00ED00F800F901000112011A0132014D014D014E014F01660169019E01BA01BA01BE01E301EF01F602000200020902110217021C02530262026D028002D50280031B032A034A035A03AF03AF03C803D603FB03FB04050413041504470449008C046D049A049A04A604A804B204CF0539053E054E055605800589058C036305D105D6067E068E06B206EF06F00728074C076F078C00B400C900C000C10000000000000000000000000004012400AF0032006E0063014401620096014301A10161008A00740064018801EF01700028FF5D037E0347023000AA00BE007B0062009A007D0089035C00A1FFD803AA00D70093006C0000008000A70442001D0597001D00820030002A + 002A002A002A002A40292A292827262524232221201F1E1D1C1B1A191817161514131211100D0C0B0A090807060504030201002C4523466020B02660B004262348482D2C452346236120B02661B004262348482D2C45234660B0206120B04660B004262348482D2C4523462361B0206020B02661B02061B004262348482D2C45234660B0406120B06660B004262348482D2C4523462361B0406020B02661B04061B004262348482D2C0110203C003C2D2C20452320B0CD442320B8015A51582320B08D44235920B0ED51582320B04D44235920B09051582320B00D44235921212D2C20204518684420B001602045B04676688A4560442D2C01B9400000000A2D2C00B9000040000B2D2C2045B00043617D6818B0004360442D2C45B01A234445B01923442D2C2045B00325456164B050515845441B2121592D2C20B0032552582359212D2C69B04061B0008B0C6423648BB8400062600C642364615C58B0036159B002602D2C45B0112BB0172344B0177AE5182D2C45B0112BB01723442D2C45B0112BB017458CB0172344B0177AE5182D2CB002254661658A46B040608B482D2CB0022546608A46B040618C482D2C4B53205C58B002855958B00185592D2C20B0032545B019236A4445B01A23444565234520B00325606A20B009234223688A6A606120B0005258B21A401A4523614459B0005058B219401945236144592D2CB9187E3B210B2D2CB92D412D410B2D2CB93B21187E0B2D2CB93B21E7830B2D2CB92D41D2C00B2D2CB9187EC4E00B2D2C4B525845441B2121592D2C0120B003252349B04060B0206320B000525823B002253823B002256538008A63381B212121212159012D2C456920B00943B0022660B00325B005254961B0805358B21940194523616844B21A401A4523606A44B209191A45652345604259B00943608A103A2D2C01B005251023208AF500B0016023EDEC2D2C01B005251023208AF500B0016123EDEC2D2C01B0062510F500EDEC2D2C20B001600110203C003C2D2C20B001610110203C003C2D2C764520B003254523616818236860442D2C7645B00325452361682318456860442D2C7645B0032545616823452361442D2C4569B014B0324B505821B0205961442DB8002B2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8002C2C2020456944B001602DB8002D2CB8002C2A212DB8002E2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8002F2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800302C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800312C2020456944B0016020 + 20457D691844B001602DB800322CB800312A2DB800332C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800342C4B535845441B2121592DB800352C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800362C2020456944B001602DB800372CB800362A212DB800382C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800392C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8003A2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8003B2C2020456944B001602020457D691844B001602DB8003C2CB8003B2A2DB8003D2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8003E2C4B535845441B2121592DB8003F2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800402C2020456944B001602DB800412CB800402A212DB800422C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800432C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800442C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800452C2020456944B001602020457D691844B001602DB800462CB800452A2DB800472C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800482C4B535845441B2121592DB800492C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8004A2C2020456944B001602DB8004B2CB8004A2A212DB8004C2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8004D2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8004E2C4B20B0032650585158 + B080441BB04044591B21212045B0C05058B0C0441B2159592DB8004F2C2020456944B001602020457D691844B001602DB800502CB8004F2A2DB800512C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800522C4B535845441B2121592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B003265358B0401BB000598A8A20B0032653582321B0808A8A1B8A235920B0032653582321B800C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592D00000000020042000004D005BD00030007003FB800532BB800082FB800092FB8000810B80000D0B800002FB8000910B80003DCB80004DCB8000010B80007DC00BA0007000000562BBA0002000500562B3031331121112711211142048EB8FCE205BDFA43B8044DFBB30000000100C4000002D5059200080023B10801B80133400C0404070C04079605000A47091076C418C4D5FD39003F3FF4CD313013353E013733112311C4C39A268EC003F68A1359A6FA6E03F60000000100400000041E059D002200A6404E3604460457056B1D6E1E7A1E84018702082A085A196B197C197C1CB519050022010F041C0E1921071C19040100051F0F0F22130A351305201F7521220C217F0738166F220E270F811F38222447231076C418D4EDF4ED10F5EDE4003F3CFD3C3FED1112392F1217390111123912393911391239005D31304379401C04190C2511260B120E2800091407280119040D100A280108150A2801002B2B1010012B2B2B2B81005D36123F01363736353426232207060723363736213212151407060F01060706072115214A85C1C0813452967DB9472604B70342750128F6E37946B5896238641A030EFC29B90112706F4B35536B7D938C4B85BB76D0FEF6A3AC7A47654C3631576AAA000000010031FFD9041A059A0031 + 00C4401F490C532D6529632D7529752D069626014B082B0A182B140D03F93114350D20B8012340141135107F0D0D311B3524050735310D1896274411B8014A400F0A382E6F021F2920810327023347321076C418D4EDF4ED10F5EDEDF4ED003FED3FED12392FF4FDE610ED10ED111239011112393130437940362F301926000905261D2522260600032800040308300A28011C231F28001A251828010401072800092F0728001E211B280119261B2801002B2B2B2B012B2B2B103C2B2B2B2B818181005D015D0402353316171633323635342623220607351E013332373635342623220706072334373621321615140706071E01151400230116E5BC0C2846B78EACB5A11225131C26166541729865B4452605B2406E0115DBF0472C46717FFEF2F8270117C88B3F719878947601019F03022038906B7478427AA070C8C3B98452331D1FB180CDFEFE000000000200340000042F059C0002000D005C402209020A080D010202BE12060607020601050708030106070A02750B05EF030C070403B80117B501960D08AC0AB80158B3050F470E1076C418D4F5F43CFDE4003F3FF43CFD3C1139390111123911123939872E2B047D10C50F3130011109011121350133113315231102A5FE3501CEFD8C029098D3D301FB0289FD77FE05015EB0038EFC5F9DFEA2000000000300970000050405BD000A00150028008240385A0D5A116A026A0D6A117A02772107490D4811021D081F0F041F131E000027081E17020B1E270804311B690F31231A2A091525281619292AB8015FB3217666182B2B4EF43C4DFD3C4E10F64DEDF4ED003FFD3FED12392FFD3901111239313043794012181A0508192506260718042B01051A082B01002B012B2B2B8181015D5D013237363534272623211101323736353427262321110321201716151407060716171615140706290102C47E466E754282FE9D01ADB74E318F4C7DFE75C3027701026D404F294D7138635985FEDEFD93035023378F90321CFE39FD5A6A435FA03A1FFDFB05139A5B778B592F272B3660A98E73AC0002005AFFDA057105E5001D001E00B1403B1B0597019605031F011F0482018705891305530803861D111115063A1D030C3A15091E021E1E190331023B1031111A20093119191F20A1216A66182B2B4EF44DED4E10F64DEDF4ED12392F003F3FED3FED12392F10ED31304379403A001C172513260E251B260B160932000D1410320112110F10071C0932000500033201010204030A180C32000F120C3200081A06320104010632012B2B2B2B01103C103C2B2B103C103C2B2B2B2B2B2B815D015D080117232E0123220011101233323736373306070621202726111037362123041E013411C221C5B2D9FEF5F1EFDC733D1EC21A92AFFED7FF00AEE5ACBA01472805E5FEDABB8EA6FECFFEC5FEFEFEBF + A95991E89DBD9BCD01AC0145D0E20000000100AF000004AA05BD000900394018071E040409031E0100020908066B011A0B03082500190A0BB80157B32195DC182B2B4EF44DFD3C4E10F64DE4003F3F3CED12392FFD313013211521112115211123AF03FBFCCC02D1FD2FC705BDB4FE42AFFD64000001009C0000044B05BD000500314013000203021E040508031A070102250500190607B80153B321765E182B2B4EF43C4DFD3C4E10E6003F3C4DFD3C3F31301333112115219CC702E8FC5105BDFAF2AF0002009C0000052A05BD0009000A007640143701380602070117012701470158020507010202B8019B4017120606070207080301020806080A030A0A010608020302B8019BB505041A0C0708B8019B400A0900190B0CA0217670182B2B4EF43C4DFD3C4E10F63C4DFD3C11123939392F003F3F3C3F3C12393904872E2B877DC53130005D015D13330111331123011123019CEB02E6BDDFFD0FBE023A05BDFB5A04A6FA4304A5FB5B05BD000000010021000004C905BD00070034401A01061E00070204080917171A00FB0203250504FB0619088C5E182B4E10F44DF43CFD3CF44E456544E6003F3F3C4DFD3C3130011521112311213504C9FE11CAFE1105BDAFFAF2050EAF00000000030052FFDC04470449000F003B003C00DD40382A30010A100B1B0C1C2733481069096A10073908120C09031B320724091D100C1D3B2B022E293BB73B023B322A2512100705081C2722171CB8018A4023171D1F07271D2E0B021D350B3C073C3C1C1407292AA8241A3E1B291C4A0F2738193D3EBC0197002100B9019600182B2B4EF44DEDF4ED4E10F64DE4FDC412392F003F3FED3FED3FEDED1239111217395D1112392EED2EED01111239111739313043794028363715220001192501360F2100181E1B21001620142101212200370221001A1D1721011521172101002B2B2B01103C2B2B2B2B818181005D015D2416333237363D010E010F0106070615013637363534262322070607233E01333217161511141633323637150E0123222726270E012322263534363713010E724E5F59962168326D62315301B43E150C837A8D3B210AA805F7A3BD767517250C1E112A2C265D2A160937CE7C95BDBA978ACF5A2C49A691151C060E0D1C2F67016C082C182D5C534C2A53C69B484898FD971C220303850C06422340486AB58895A41301E40000020038FFDA03ED05C2000B001D00774032370E470E570EA704A91B05250814020F1D1000081D1D07130A021D170B052E132E102911121A1F0B271A191E1F87217242182B2B4EF44DED4E10F63C4DFDE4E4003FED3F3FED3F1139113931304379401A181C090A000101180B2600091C0B260000190226000A1B0826012B2B012B2B818181005D1216333236353426232206150017161711331123350E012322 + 0035341233F692A17DA1A67A88A9018A53303DADA23FAC6FB3FEFAEFDE015FE8D7C9CBC3D0CA0237341E4B021DFA3E956358012DFAEA015700030048FFDA041A0449001C00240025010C40799708991AA71F03050E020F0514150E120F1514400C401408291A014B0BB603C701C603C71BD808D909D61FD823E817E8230BC711C712025C080521240F9A161D243906070716211D1C070A1D160B2507971CA71CB71CD71C0425160F251C05190A0C07110E270F1D27051A27242E072719192627D421A65D182B2B4EF44DFDE44E10F64DEDD4FD391239391112393912392F5D003F3FED3FED12392F3CFD3C10ED1112393130437940460023040503050205010504061F26111012101310141004060C25221B24260020001D26011E1D09170726000B150E26010D0E231A2126011E0521260108180A26000D100A2600002B2B2B2B01103C2B2B103C2B2B2B2A2B2A8101715D00715D5D00161716171615211E013332373637330E01070607062322001110003301262726232206070102B4D638361210FCEF0590978D543014B1074F3152794152C8FEEA0118E2011F0B284AAD7CA805012304476B55516C4AA2A3C55D36473B912E501C100123010601020142FE26754682B38A01DC0000000003003DFE3B03E80449001F002D002E00B7404D36144908490958085909880CA91BA81DA927A62BB91B0B4008031622290EC40A221D1F070406291D190A121D0A0F2E072E2E051C032E162E2D29051A300C0E270D3E26271C192F3087217242182B2B4EF44DEDF4ED394E10F64DFDE4F51112392F003F3FED3FED3F3FED10ED1112393931304379402C23281A1E0B1124251026231E262600281A262600110B0E21000F0E0C0D251D222601271B2926000F0C122100002B2B2B01103C103C2B2B2B2B2B818181005D00171617353311140706212226273316171633323736270E0123222411100033002623220706151416333237363501027C5E3335A63C70FEC9ADEC0EB70D273D83CF40260336987DAEFEFB0107BA0144A47FBE4625937CC24F2CFED104423E234387FC32CC76DA9BA548273C9256DD5250F7011D010D012EFEA1C0B25F9AB5BDAF6384022D0000000200840000013B05BD000300070036401C07E50400010006030A0917171A06010229070300190809AA216242182B2B4EF43C4DC4FD3CC44E456544E6003F3F3C3F4DED3130133311231133152384B7B7B7B7042AFBD605BDCC000000010080000003F805BD000B00A740645902013A08011902010706170657056705790678078705B903C903DA030A05050608080709030284029402A4020302391209090405060504066D12070708080705040305060908050204030A00000403060A07060A061A0D09020A29000B190C0DB22162B9011600182B2B4EF43C4DFD3C3C194E10E61800 + 3F3C3C3F3C3F1112173901121739874D2E2B087D10C104872E182B5D057D10C010083C083C3130015D00715D7213331101330901230107112380AD01CEE6FE6601B1E6FEB297AD05BDFCAB01C7FE6FFD62021C8AFE6E00000001008400000625044700260085403B0708070E060F1708170E170F2708270E270F4819560B670B0C23250A1A1D23190A02041725211D171D0D060700061B1C2503130A2817171A112914B80101B21A291DB80101400A00012E25292600192728B8010DB3216242182B2B4EF43C4DFDE410F4EDF4FD4E456544E6003F173C3F3F3C4DEDED111217390111123912393130005D13331536373633321716173E01333217161511231134262322061511231134272623220615112384B240345971804E2C243CA265D84E2ABB6B4D6A99B71A297066A7B4042F984F243D3F244656539C548EFD3702E86B508EA6FD9102BB6D324B9ECFFDC80000020084000003ED04490019001A005E4031B706C706020406140627147606740705140C021418101D05070006180B0A1A071A1A000C29091A1C012E18291900191B1CB80106B3216242182B2B4EF43C4DFDE44E10F64DED12392F003F3F3C3F3FED1139390112393130005D015D1333153E01333217161511231134272623220706070E011511230184AB4CAA68E4502CB71D307E40294A382D1BB401A7042F985E529F57A2FD5102A3623C640D1642357169FDCF0449000003003BFFD90421044E000C0018001900904033980896109916A504A808A610A916B808C808D704E50EE9140C3A08061D18070C1D120B190719191502270F1A1B092715191A1BB80109B321725D182B2B4EF44DED4E10F64DED12392F003F3FED3FED31304379402C001704260B1309260000110226010717092600050D0226010A140C260001100C26000816062601030E0626012B2B2B2B012B2B2B2B2B81005D241235342726232206151416331200111002212200351000330702E085304CBAA59696A3D6011EFCFEF7DDFEFC0112E70674010FA6965E94FCB2ABE403DAFEECFEF4FEFDFEAE012BFC010E01400500020076FE5504250449000E00220074402CA908A717022808201C110E061D15070F060E1D1C0B220E0227181A240A2E102E2129220F1923248721BD5D182B2B4EF43C4DFDE4E44E10F64DED003F3FED3F3FED1139123931304379401C161B00051A260426001B022601051602260101190E260003170626012B2B012B2B2B2B8181005D243635342726232207061514171633013315363736333212111007062322272627112302C6A72546BABB45252546BAFE2EAF36405B7BB6FEB7749A7952303BB479D3D2805CB1BB649A7C57A603B18E49283CFEE9FEFDFEA2965F351E49FDDD00000100890000029204470011004F40262703260D37034704040E0810020E0911090C2708 + 05070006110A081A13012E10291100191213B80145B321627E182B2B4EF43C4DFDE44E10E6003F3F4D3FC4FDC411123939011112393130005D1333153E0133321617152E0123220615112389AB15A46B05181D101B108892B4042FB9369B0203BE0302AF72FD980000020042FFD703B6044B002E002F012E408F38099805961299149815982A062824252736214621472447275624572766246726790C790D790E7623742474257426A61EA82C1303000B15052D042E13001A151B171C18152D142E280F0B6908262536250225220D0A042B1318C61C1D1307041D2E9A2B0B2F07090E100207002F212F1A1F18161827173E28260727281A310E1F27103E00272E193031B221A65D182B2B4EF44DEDF4FD394E10F64DFD3910F4FD3911123939392F111239113939003F3FEDED3FEDED111217397131304379404C012D022615251A26210E1F21000926072101032C002100052A0721011D121F21001B14182101200F22210021220E0D08270A21012625090A012D04210006290421001E111C210119161C2101002B2B2B2B103C103C2B103C103C2B012B2B2B2B2B2B2B2B2B81005D5D015D13161716333236353427262F01262726353436333217160723262726232206151417161F011617161514062322262701EF082544A864983D27738F894174DBB9F26B4302AA05263E99666945284E77C24269D9DEEFC70701B701505A3057575B4524161D24222A498198BC8E5A683D32474E40462A19131D2F2C45948FD0D9A002F900010017FFEF0209055A00180052B50D2E0AC00E01B8013F40250416391703060E0A111A17171A0301062900150E150F031F030203FC1619191AFC21677D182B2B4EF44DFD5D39C42F3CFD3C104E456544E6002F3F3F3C4DFD3CED10FDE431301333113315231114171633323637150E012322263511233533A8B6ABAB2615310D1E141F43277E5A9191055AFED593FD4538130B01028E0908816702C593000000020015FE4903E804490018001900CA406E8A158818A71803070617063812481258126707770377078C1498009705981597169717A800A8161048004B154717C915044405C605028705A600A601A705A8170524280518151716010006150C0B0F1D080E19071919161B17171A050001AF171518AF0C8F16191A1BD421677E182B2B194EF44DE418FD3939FD3939194E456544E61812392F003F3F4DFD3932192F183F3C3C3C123939014B5279401215150016166D121717180501016D12000018872E2B107DC418872E2B10087DC418015D71313071015D005D013306030207020623222627351E01333236373E0137013301030321C7268362429C809C26291E2F2A10322F10053E0EFE74CC011F01042F67FE91FEECAEFE66B40608A40D062118089424044EFC980382000001000000000000642C0B93 + 5F0F3CF500110800000000005F4D8F0000000000C621BCD6F865FC270B9108F9000000090001000000000000000100000629FE2900000C01F865FCED0B9100010000000000000000000000000000001A0512004202390000047300C40473004004730031047300340556009705C7005A04E300AF0473009C05C7009C04E300210473005204730038047300480473003D01C700840400008006AA0084047300840473003B0473007602AA0089040000420239001704000015000000340034005A00E6019201E0026402F40326034E03A403D2049C050805D2067A06A80718079407F0086808DA09200A000A500AE6000000010000001A006F0009006B0007000200100010005D000007E80A1D00040001B800532BB800492BB8003F2BB800352BB8002B2B4118008001A6009001A600A001A600030069018B0079018B0089018B0099018B00040089018B0099018B00A9018B00B9018BB2040840BA0179001A014A400B041F5414191F180A0B1FD2B80106B49E1FD918E3BB0119000D00E10119B20D0009410A01A0019F0064001F01A50025017A00480028019AB3296C1F60410A01A9007001A9008001A90003008001A9000101A9B21E321FBE012C00250401001F0126001E0401B61FE7312D1FE531B80201B21FC227B80401B21FC11EB80201400F1FC01D9E1FBF1D671FBE1D671FAB27B80401B21FAA29B80401B61FA91D6C1F931EB8019AB21F921DB80101B21F911DB80101B21F751DB80201B61F6D29961F6431B8019AB21F4C96B802ABB21F391DB80156400B1F3638211F351DE41F2F27B80801400B1F2D1D4C1F2A31CD1F241DB802ABB21F201EB8012540111F1C1D931F3A1D4C1F1E1D45273A1D4527BB01AA019B002A019BB2254A1FBA019B0025017AB349293896B8017BB348283125B8017A403648289629482725294C1F252946272729482756C80784075B07410732072B072807260721071B071408120810080E080C080A08080807B801ACB23F1F06BB01AB003F001F01ABB308060805B801AEB23F1F04BB01AD003F001F01ADB70804080208000814B8FFE0B40000010014B801ABB41000000100B801ABB606100000010006B801ADB300000100B801AD401F04000001000410000001001002000001000200000001000002010802004A00B0018DB806008516763F183F123E113946443E113946443E113946443E113946443E113946443E11394660443E11394660443E11394660442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B18011DB0964B5358B0AA1D59B0324B5358B0FF1D592B2B2B2B2B2B2B2B182B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B74752B2B2B65422B2B4B5279B376706A66456523456023456560234560B08B766818B080622020B16A704565 + 234520B003266062636820B003266165B070236544B06A234420B176664565234520B003266062636820B003266165B066236544B0762344B10066455458B166406544B27640764523614459B36242725D456523456023456560234560B089766818B080622020B172424565234520B003266062636820B003266165B042236544B072234420B1625D4565234520B003266062636820B003266165B05D236544B0622344B1005D455458B15D406544B262406245236144592B2B2B2B456953427374B8019A2045694B20B02853B049515A58B020615944B801A6204569447500 + 00>] def + /CharStrings 26 dict dup begin + /.notdef 0 def +/space 1 def +/one 2 def +/two 3 def +/three 4 def +/four 5 def +/B 6 def +/C 7 def +/F 8 def +/L 9 def +/N 10 def +/T 11 def +/a 12 def +/d 13 def +/e 14 def +/g 15 def +/i 16 def +/k 17 def +/m 18 def +/n 19 def +/o 20 def +/p 21 def +/r 22 def +/s 23 def +/t 24 def +/y 25 def + end readonly def + currentdict dup/FontName get exch definefont pop end + %APLsfntEnd + 42/FontType resourcestatus{pop pop true}{false}ifelse + {currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if + /FontType 1 def + /FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def + /FontBBox{-1947 -985 2961 2297}def + /UniqueID 4265107 def + currentdict currentfile eexec + 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C9264C9384F249EBFD8DD5BFBB9BE844B0E83BCFE532E688793A86D21BD36F43AB56AFBEE013A0B4328FDBE9C264EC8DF8BDC4CC39A63B03A287D9D46922FD363B161B8B0E7F51F855951EB03E85DC701C64F37004253E0E97FE14AFEDDEF60E4B990F7D1AE27A1A3473C06F47F1D0A2BF0FA5AEE5EE69552D10B83B5B163252B839CF292EF00E5467D6F2B2237B6B6F18DDA85FAA7ACFFAD28A401323DC19B0AC62022AE4E2F6B6E585D3CB9322A8DC09AA2CFC58DEF7F2748D30A5A6A348E8EBA9FF24C16FE55429A565D805CCD783CF779DE3C16E8323C251B173AE3FFC53FAFE779AF91C43BB9BE4DED09DC9AE790ADB1143E1D8D4FDF95E420C7AD62460083FBDECC0C704014F870595F6B7F92FCCB4D33405EE210B640FBB2C9A810BB15C9E98F0B17F3A093F4128E11DC1624F860CC79EEBCD0BBB4A349F034E646A473F7B8D0774CC9A2BFB9C9DED9FCAAAD8CB50DCF5CCF572B766FB07FDA1F7CD40A9EC17C633856F06F84997146020156CA046901E8B39F8D6DA3D9277534BECE253788756E3D45DEECDA0E6F0093B2F0660A0C0B3E3D2D693166FAB4AE548EBB0A1B563351B798E14CB4E260FB02AC29697D39ABA5DE36623AA7513846F447817B0E38A27739629DC9E19FCA434C8BCBBC75B70CE3EFA2AE477B166409C180ED2DAB7692B742137325732B942206BDB4A206D508C37EE2F3AD7A5BF1CB4C7B3B0DB7B0A5F60AAF80B0BDCDEAC04424D9A380C971BCDB5EB93C1BEA9EDED2FC8ECD8B + A80323CE0A2B398D08CA843EFC4E49AC0ED6D86D1DD4EEA7CF322788900BF3D8A3712EF99E843E48E0E5C949CEF786EC76FC07A3972C1E1B06DAB6381B799A84230E10D0B3782112313326C2947D6135D62C560F713E51B3E9D7DD07CDFE8659C301FA02FF00BCA1FF1961E96D02815979219F85EA63565B9720CAEB1CBF912043571919250A964EE473CD1991ED3882E1440C64BFC18E984BCC68581CDD55D37C1FC47CD0C8A18A057F95B2DDB64F2241F9F4D92DCC9A2957442C859304C09712E593FF1389CD3914651B2745F6E28D69E1A1806910F6C2642AEBFA65465B85569B6A514BC3797B4CB97DC61035052AB386B8E06EF7D3198FF19565C9D1455176E89FBFA7CFDFCB321336230F9C328756AE710CE7B602124D2F3B0E981811AFAC33CC68B4BB0CCC42D0F9C456D7FB41B37DDBE267B8B14320BE125F5AD8D102F90DEE3297B41E35B77F83F7D56CBE7C6EC60D48D15ACE41EF5C3B1C789DD54B78CF686A0BDA3ACC48C79FF2C07379D7F626E5D701F4D5F6C3EB39F8E33DB81D25913DB1AF1D16627B762E7D5FD004F241F41D169D7DFD81A083AAF1A7205D1B3E623354590FB3A7638803BEFB933595AD0D36A637BB59F04F7B392AF729DF7E66DFD782A145FCA5953C980D23E7FB2DD9833A4C23C111EE3381CE1F954B7A76BA6788BA8730D920928467107DD2B5C6282B363784B84D44D21D31919EE45163A251FCC471AEC96D6DF95C129032928311236DAB8F38EFBDA5BF5EC6D6678B099007621103FE54FEFF0F2F60D78816751EEEC6F165854048B595AADE5EB4A0BCECB2F3F8B38F7890177B7669B2BD0B06CE3A9C6B1F9241367A4604D68370D95D01AF5839A68362BDB2C396B398917453B7452B4C27ADD72574E3677314B6B3E49E428FFD30FB292C046F420A52F752A4043D8B89FE23BEF53CBACE09C7203FD0617C8E8F1EAD8673CB23592695897DCD2E40DE959C05BB70F7FD01F23234504BF9FFA81226B246148F992E36051D195298721C69DFE0BC52431E5CD19F2ADB9642CB36239E9EA5C903B8C2D861D14F17105A4E1B73D00A157E20DC5429C8ED957F5D957DF036274E6A4D3B50AA74224FFE2F2B24C13795F536F013B8D9B3EF7A5F9A578FCA03B8893F5F248D91C276FE8425F348834B2884332933B5A338303E618606F1878D7AC1041F2BCD3BA5F01F59B94175DB85398C4377C2EA94C5743C88CFE25019A8E863D1BBF9B106B8CB143D0032F478C6B78840CC68B441119F6C05E5B52107648E1C645BBDCEBE0AB7B579E43C89251F40F554B3C9911FCF44214882D3660368D57EE92F41BE4A4833B819CA53A53111C840B229D9A2FA6AAAE07BF5731DA2FA0074063EB33AD99D99920D35318BBE776617461CB5610B9AE1037F84DE15A42B1C3111FF9CE8C10437BC003EAF3BEE29EA1D749886EAAE637F5B + 900FEDFD1A3DFF8D0644B3B1867B5591C7BAC786463703C9882FA7776074BA7030C0E0ADCBBBFAED757DF32294D15219E4368120C7D9C8FC1656455956EBAC1E8F6F82346DF033CB4958FA9AF5401418495B60C96EA8C865C79A0A007E2F0FB6D9701E74781B822D847622D906973FBA1BCE221BABAEEB3D6E249988672D7C4AE698C7785FDE750B9BCCC870B7A1745CB127C8DCFA05D4335FA362C111E9F1E1213C5A434F62664F480F9A05E3E7071E5790A270164345D9BF4463DB27F7280302E4A2C50B78E5BE96C23EAE7254B4D021C575A2CF512F527F84BCE4378464BE122182533C48AC7BDAF9D323745BC1D4A474C8624B92173CD68E04A3F65EBB5ADF805B0D86E7DF0ED91CD36A9ACC8FAF2BBCEDC2BABA1E4801883EBEE44924188FBC903A36580976F61569E9A611F0708C7E72222F0B932719544E30E0729EF743D89570C339B9BF5854E7C33128CE3315C239CE49241851D9375B8BEA21A6B0E314BFBD8B949DC90FE81BBDC228ADA0DC0F28B0A5807E4A2D7F41B961D475D3659C9CB53F57235D1529F685F0259573776ACD50D2048A42DDEC907C88BBB9E7441AED3CC3E5985B5A66881A469EC1822498D90B503B305851C7B0CFFB905E788E143E8DF9DDFDEA04815563BDF252811705B6F962C52DE3914CC2F4307F8FFB4471514626FACBEC828517330ED369E2F2FFC95B08BEF94237F83EAA3017409B5B321B1B89844C4A9742A57B55BDE58909DCC1E9E4AEF38E1EF8F9D4647DCDBF78E24859D67F822597238B882C5B0F8CA5DEEFE6B03F897CCD6D6C86DB742E154D07FC577FA6A7557BA759EA8A689E5B8F30FCD6247F9BB50CD7FC678D9CC61817F25EDB495D4DD8626E12C965FC0B1A5E95CB72010EFCCF9B71A4E87CA714896391D3A55B1BD8664302D270701A08BF9916251FD0203BEF38FDFFE2DA72609C6756F611C551E354CC03A4E45222BC5C60A579DACFF3123F7E32DD55D2F6B50A4BFD384D6B58358490077509C1B33F10ADF465523E27CC3817183DA61BEBB92B8766B1BE6719838CC59709C18032D9B5901320ADA1107702F2672DD03D8224D50B796CFCFDE49BC0916139B1A61C966D884782562490203BB92D99B48ADFDCE9EDD0A1647475A5CFAAFDDB63F792140DD2C11A24CB505BFFE6333B3C3D447BA6B9B4893205070ACB351B81EF66BB6956E03C2470A810E50475BB003CCAE54650546882C5DC9DE7B6FFF4C10360145D5A1110B1DB12003D0682C8A35D8A36A9EC76D1837B7B3EFAA08322B84D838F0084273C503F2886AB4E35F09ECF0EFFDB6D2818AD2DC8330CD6765749DD5A657AC07254E2A23DF2715132DFB1A04BDF945BE8CA8649C2F5F7D82AA41F9FA731E6AF369BD969A5C41FC6D894E7A825908F0C5B41EB3DEEC4AC14937C06931F4D522B83A778ABFE2D0F7693CA049E630A1280 + 9A21807A58EB310B03D6EE9843448243280BCB6AF4AB5F9544038FC51D985302227CC7D23C4776405DF254FD471E1B58C2D2B6B24974CBC172E32929E0AD35F198052B3E6F0C0440C7E45C80AE3913DDBA375B7CCD9BFBDF954E140E6BE2DAF2BFDF733B29FBD6E64421E29B766479CB313A78C62EE87AFD7BD52B3E18B7B33347570030778EAA2A697A978DCD9DB5AF40DEB678B6A3A24E9E5C3DE897938E16FC298B71CB42B2239F936470827F21954EAB6816A9C3543E1C6A753E8FBCC13F3CAC69F4E7861B47C5B9B25107CC3D21C9B2A86BBF5244503A5657FDF17A001AC957FD1DAE15CE947EA98B8DCC098B2CD4B23B169156C37629311ED486FD7EE1826CA718EC8D31A8BCAF93037B98A24C7B0B2EC1A7BDA2D95BD4808EAB6DA51F9727A3D13358DF53BAB34CEBEEE2063D0743718D7C997B426648ECDC027D88D3664E5E92EACA1213932D99C2040E38F1E7C02AA2C5D5554A99FBB9120D64D6385CA12C65C433D7A30DDC4D748870072E2F1D14C4CEB1D16D0A19003D5E891E92F999382599B5CC3791631D3C7CA254EFD166824006D37E407241DC3935C9CBF739A1353761B6BBBB7F05AA4184334DD7F0E8A357F76EFD51BE22D769727DCDF3D84150ED4F7DD89EB9DE23417AC3C59C2288DA787B0ABF75A00B53967B61AF42D43AAA4DEC9CB6809E760494D34C7D47FEA8A3691C3975FA5222C4ECE321B6DAF35228C027C86D959ED29CB7E690C8556801E38F778067AAF48D8C3021AE6ABFA7E40AC1994F76FE6B7C2B0452DB95171B30A30CE72F46AEE698CB62480966D56425A223317B96AE9035AA0CFA339DCD8733A069A37E742BF85F971DD4D88D983229B40CBAB2157099CCE8D544FA9C371D5A41D78CC07EFD9FDF45E48500296D154302565BDA43E65DC0A05D5C79BEF1057DD0366A7FDBBE349CA94404E2D224361C52CA490B132D4F033F975DB08A090B56D781DDD89F0FB207333A92E979668ED3E9FAE519E66C5C1150D9A36ABA6FD7A36BE3B5754924AF31CAAF2A75395C1DB46215C6B08C6AD30123F3605A0636680CD3DDAA9E89CD1CFEC50AC56126CE5CF2AEE5175F520DC0FFE3DF9F163FFC76A9983BF0AC1F17D6B8EA130E53DE5ED53DF2F7AE998122135389254739CF79A7DEDD79863A11724809EF61BC40435A042F4CD8F0F3F027AB1B3CC30F7699070017BA07BD85DE3280F5F1BA0E2EB72B57C499493CC1732A230F687984814C992342006B09F5E05885079EA71EECFA10274DCCF62F6F5140964BE33E9C761A978B2F45C3AB9A12D60073655A513DBA97E5935090042BE258D16DB1E37E537DF44DE69DCCD2E61D60BAC6AB2104A81BDCC48E9F907AB25002EE14573F0234D8DC54A4B05738AE5151F88A68383ACA812179A622D8CE7A9B7FC1EE8FD809DC7065B162F2B8BE31390995157F9EE9736EDF + C0DDE844E8828C28FAD53E2AEEF2413A71401E6A90012C765546B4F7 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark end + %APLT1End + %RBIEndFontSubset +/Helvetica cguidfix +/F1.1/Helvetica renmfont +%RBIBeginFontSubset: LucidaGrande +%!FontType1-1.0: LucidaGrande 1.0000.6.0040 + /FontInfo 1 dict dup begin + /FSType 6 def + end readonly def + 14 dict begin/FontName /LucidaGrande def + /PaintType 0 def + /Encoding 256 array 0 1 255{1 index exch/.notdef put}for + dup 33 /F put + dup 34 /i put + dup 35 /r put + dup 36 /e put + dup 37 /n put + dup 38 /t put + dup 39 /I put + dup 40 /f put + dup 41 /a put + dup 42 /c put + dup 43 /U put + dup 44 /S put + dup 45 /B put + readonly def + 42/FontType resourcestatus{pop pop false}{true}ifelse + %APLsfntBegin + {currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if + /FontType 42 def + /FontMatrix matrix def + /FontBBox[2048 -2186 1 index div -1509 2 index div 3361 3 index div 2381 5 -1 roll div]cvx def + /sfnts [< + 74727565000900000000000063767420000000000000009C000006B66670676D000000000000075400000D33676C7966000000000000148800000B3C686561640000000000001FC400000036686865610000000000001FFC00000024686D74780000000000002020000000386C6F636100000000000020580000001E6D61787000000000000020780000002070726570000000000000209800000CAF062B0019000005C80025000005C800250000000000000000000000000000043E001800000000FFDB00000000FFE800000000FFDB0000FE75FFE8000000000000FED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000080000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5006F000CFF3BFF91FFF400BF00680014FF41FF98FFEC00000000000000000000000000000000000000000082FF7E00DF00D200C900B400AD009B00DE00D200C500BE00B900AB00E300D200C600B900AD00950062000000A4009D0085000000AA00A10094007200AD00A100940085000000C5000000000000000000000000000000000000012800000000000000000000000000F700F700970141004A00F7000000000000000000000000000000000094009400940000000000000000000000000000000000000000000000000000000000000000000000000000000000E6FF1A00000000000000000000000000000000000000DEFF22007C007C027502E400750075009A009400AC00A0000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A0001900000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B00000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B0000006F0073000000000000000000B9008C010A007E00C50031004F009A004200000000000000000000000000000000000000000000012800F700A00063009400820082009700C600B300B3007C007B009100000000000000000000000006440000000004A00019000000000800043E0018000004000000000000000534000000000000FFE70000FF780000000000C500940000FED80000000000E100760063003C002D001E000FFF1FFF3BFF48FF65FF79FF9DFFBD00DE00B900AD00A600DE00D200C500BF00B900A900910197007C0062005C005602CC01ED0197007C006F00620056004A011D010D009E00940035000000000000000000000000000005C8002500000503 + 00000000000008000000000000000400000000000000047B000000000000FFDB00000000FFE70000000000000000FF3B00000000000000000192011700F700C800C300B800AD00A6009C0092008A0080007B00740068005A0050001E003A00000192011700F700E500D200C500B900AD008A0080007B00740068005E0054004A000000000141003E00DE00DE00000000000000000000000005D500190000056600000000000008000000000000000400000000000000043E001800C503C200DE00000000FFE70000000000000000FE00000000000000000000CD00C500AD00A100940088007C0075006F0063003100F700C600B900A0006300C500B300A10088007C0075006F00630056003100F700C600B900C600940082006F0063003E003200190000FF3AFF7EFF9DFFCE0057006F02B3012801830088008800000000000000000000000000000000000000AC008800C501ED006201BC001800DE013E000000000000000000000000000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190000000000000000000000000000007C00AC00C500960000000000000000000000000085005D006500000000000000000000000000000000000000000000000000000000080000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000005ED01B0009400D200B600AC007B007B007C00000000000000000000000000000000000000B904A000C50063007A005100410087014100DE01280068009D0064007500D2012000DE00D100B40000000000000000000000000000000000000000006100AC00D0006F006F036603660000000000000000000000000000000000000000000000000000004A004A004A000000000000000000000000000000000000000005ED00000000000008000104005C000004000000000000000000000000000000FFDB000000000000000000000000000000000000000000000000003E050300D8011200AD009300D800F700AD00B700790067050300D800920000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190082006E002A002A002A002A000040405249483C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002C0118B0184358456AB0194360B00C2344231020B00C4EF04D2FB000121B21231120332F592D2C0118B0184358B0052BB000134BB0145058B100403859B0062B1B21231120332F592D2C0118B01843584EB0032510F221B000124D1B2045B00425B00425234A6164B028 + 5258212310D61BB0032510F221B0001259592D2CB01A435821211BB00225B0022549B00325B003254A612064B01050582121211BB00325B0032549B0005058B0005058B8FFE238211BB0003821591BB0005258B01E38211BB0003821595959592D2C0118B0184358B0052BB000134BB0145058B90000FFC03859B0062B1B21231120332F592D2C4E018A10B10C194344B00014B1000CE2B00015B90000FFF03800B0003CB0282BB0022510B0003C2D2C0118B0002FB00114F2B00113B001154DB000122D2C0118B0184358B0052BB00013B90000FFE038B0062B1B21231120332F592D2C0118B018435845646A23456469B01943646060B00C2344231020B00CF02FB000121B2121208A208A525811331B212159592D2C014BB0C85158B10B0A432343650A592D2C004BB0C8515800B10A0B4323430B592D2C00B00C2370B1010C3E01B00C2370B1020C453AB10200080D2D2CB0122BB0022545B00225456AB0408B60B0022523442121212D2CB0132BB0022545B00225456AB8FFC08C60B0022523442121212D2CB000B0122B2121212D2CB000B0132B2121212D2C014BB0C85158B00643B00743650A592D2C2069B04061B0008B20B12CC08A8CB8100062602B0C642364615C58B00361592D2CB1000325456854B01C4B505A58B0032545B0032545606820B004252344B0042523441BB00325204568208A2344B00325456860B003252344592D2CB00325204568208A2344B003254564686560B00425B0016023442D2CB00943588721C01BB01243588745B0112BB00D2344B00D7AE41B038A45186920B00D23448A8A8720B0A05158B0112BB00D2344B00D7AE41B21B00D7AE4595959182D2C208A4523456860442D2C456A422D2C01182F2D2C0118B0184358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB0194360B00C2344218A10B00CF6211B21212121592D2C01B0184358B0022545B002254564606AB00325456A6120B00425456A208A8B65B0042523448CB00325234421211B20456A4420456A44592D2C012045B00055B018435A584568234569B0408B6120B080626A208A236120B003258B65B0042523448CB00325234421211B2121B0192B592D2C018A8A45642345646164422D2CB00425B00425B0192BB0184358B00425B00425B00325B01B2B01B0022543B04054B0022543B000545A58B003252045B040614459B0022543B00054B0022543B040545A58B004252045B04060445959212121212D2CB0032520B0072587052E23208AB00425B00725B0142B1021C4212D2CC02D2C4B525845441B2121592D2CB00243583DED181BED592D2C4B505845441B2121592D2C01184B52588A2FED1B212121592D2C4B53234B515A58B003254568B003254568B003256054582121211BB00225456860B003252344 + 2121591B212121592D2CB00243583DCD181BCD592D2C462346608A8A462320468A608A61B8FF8062232010238AB10C0C8A70456020B0005058B00161B8FFBA8B1BB0468C59B0106068013A2D2C2045B0032546524BB013515B58B0022546206861B00325B003253F2321381B2111592D2C2045B00325465058B0022546206861B00325B003253F2321381B2111592D2C004BB0C8515800B00743B006430B592D2C8A10EC2D2CB00C4358211B2046B0005258B8FFF0381BB0103859592D2C20B0005558B8100063B003254564B00325456461B0005358B0021BB04061B00359254569535845441B2121591B21B0022545B00225456164B028515845441B212159592D2C21210C6423648BB84000622D2C21B08051580C6423648BB82000621BB200402F2B59B002602D2C21B0C051580C6423648BB81555621BB200802F2B59B002602D2C0C6423648BB84000626023212D2C184B5358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB00C2344218A10B00CF6211B218A11231220392F592D2CB00225B002254964B0C05458B8FFF838B008381B2121592D2CB0134358031B02592D2CB0134358021B03592D2CB00A2B2310203CB0172B2D2CB00225B8FFF038B0282B8A102320D023B0102BB0054358C01B3C59201011B00012012D2C4B53234B515A58381B2121592D2C01B0022510D023C901B00113B0001410B0013CB001162D2C01B00013B001B0032549B0031738B001132D2C4B53234B515A5820458A60441B2121592D2C184B5358B00425B004254964B00325B00325496468B0408B6120B080626AB00225B00225618CB00C234421B004251023B00CF61BB00425B0042511122320392F59CC21212D2C0118B0184358B0052546234564611B21B00425B004254A59B00E23442310B00EEC2310B00EEC2D2CB01B435820B0016045B000515820B0016020452068B0005558B0206044211B212121591B20B0016020452068B0005558B8FFE06044B01C4B50582045B02060441B21591B21212159591B21592D2C4B53234B515A58381B2121592D2C4B5458381B2121592D2C4B52587D1B7A592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B00326 + 5358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592DB8005D2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8005E2C2020456944B001602DB8005F2CB8005E2A212DB800602C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800612C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800622C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800632C2020456944B001602020457D691844B001602DB800642CB800632A2DB800652C4B20B003265358B0801BB040598A8A20B003265358B0022621B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B80003265358B0032545B8014050582321B8014023211BB003254523212321591B2159442DB800662C4B535845441B2121592DB800672C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800682C2020456944B001602DB800692CB800682A212DB8006A2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8006B2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8006C2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8006D2C2020456944B001602020457D691844B001602DB8006E2CB8006D2A2DB8006F2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800702C4B535845441B2121592DB800712C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800722C2020456944B001602DB800732CB800722A212DB800742C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800752C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800762C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800772C2020456944B001602020457D6918 + 44B001602DB800782CB800772A2DB800792C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8007A2C4B535845441B2121592D0000020100000005000500000300070014B706020400060204002FCDD4CD002FCDD4CD3130211121112521112101000400FC400380FC800500FB00400480000000000300BF0000044505C8000C0016001E00FD4032E60801491401E91401091C391C491C591C04491C591CA91CF91C046D1C7D1C8D1C03351A451A027D138D13021330010D4811B8FFD0402C0E11483906019906010C0A9C0AAC0A03B604C6040203041304230403090C1C4C1C020C104C10020D9703010AB8FFF840511A1D480C0B011103400B500B020F131F1302140507169317400100179330301E9201030D92003A074A078A0703070D1B7E05127D090F091F09029F0901170D7E00400F094F0902090320096F021F006B022B2B015F5E5D1A18104DED325D7110EDD4ED12395D002FED3FED2B001A18104DED393130015F5E5D5D5F5E5D2B5D5E5D5D005E5D5D5D5D712B2B5D5D5D5D715D715D3311213216151005041114062327333237363534262B013533323635342123BF0180DEEDFED0016BF0E2E42BE74482ECB13B43A8B9FEAE5205C8A89EFEF3726FFEDEB4BE9D1D379584AF859083DA000000000100BF000003FA05C8000900424026089205050004920103000F062F06020F022F02020F0306060205097E00400B026F020A006B022B2B011A18104DED3211392F5F5E5D5D002F3FED12392FED313033112115211121152111BF033BFD970206FDFA05C89DFE109BFD6000000100BE0000019005C80003001B400D010300037E00400405007E30302B011A18104DED002F3F313033113311BED205C8FA380000010064FFDB03E905ED00230138B90013FFF840AF1B1E48F51B01180101F801010916191602D916E91602B604C604027A198A1902151D01851D01571E012A0C5A0C023A0C4A0C6A0C7A0C8A0C05991F01121F221F026B0D011B0D3B0D0228230108230107110109280601591001E81001562201472201D822E822024C0B018C0BEC0B020C0A1C0A4C0A032C0A6C0A7C0A03680E780EF80E03441C01341C441C841CA41CB41CF41C060920192002080F1A2104001214921F152F15021517921204029203B8FFC04033090C4803059200131A7F0F14400C0F4814140F035F087F08025F217F2102087E2140000320035003030A0325216F0224036C022B2B015F5E5D1A18104DED5D5D1239392F2B2FED003FFDD62BED3FFDD65DED11121739313001715D715D5D715D715D715D5D5D71005E5D5D715D715D + 5D5D715D5D715D5D5D715D715D2B05222735163332363534262F012E0135343633321715262322061514161F011E0115140401E195E8FAA17C97638566BD9BF8C0ABBEEA736D8E688A6AC098FEE32541D074826A577A4B3B6CBF7FABDD39C05C74584A724F3C6DC288C1EA00000100B3FFDB04D905C800110083405C280401D71001F60F01490F010A0C019A0CFA0C02090D190D02E90D013B0D4B0D5B0DAB0D0429070113072307B307031303010303130323039303A303B303060B03020D01170409000305920E1309800A017E0040130A6E0212006B022B2B011A18104DED10ED003FED3F333130015F5E5D005F5E5D715D715D5D715D715D5D5D71133311141633323635113311100221200011B3D2A5B4B093B8F9FEF0FEEBFEF805C8FC5ADFCBBFE403ADFC56FED1FEEC011E012B00000000020067FFE704390456001D002700FA4025290D390D490DE90D040906010A212A2102FA2101E80301E90B01D90BE90BF90B03D7070107B8FFF840292124487907890702EB22016B227B228B2203050601AA22017522852202E724011725E72502C4010101B8FFE040492023480C011C015C0103FC0101790301C903D90302190429040202131213221303091F98AF090109090002110F970F0E010B030E0C9711101917971C1626960216001A091E851A150EB8FFC040100B0F480E2385054029156802280566022B2B011A18104DEDC42B10C4ED321139003FED3FFDC63FFDD65F5E5DED111239392F5DED3130015E5D5D5D715D712B7171715D005D5D5D715D2B715D715D5D7171712506232226353424213335342322073536333216151114333237170623220311272206151416333202F5B1A487B2012B01172FC29CB5C7AEB6AD680D190E43518A4342A2C864487B8AA3A981B2BF83BD60A351A4ADFE14A9046D20010E0119027B64476200000001006FFFE703B70456001500CD4069090C290C390C03C90C011C0D010C0D1C0D6C0D9C0DAC0DCC0D0675020185020117020177028702023C014C01022404013404D404E40403E905013405440502140F01040F140F640F940FA40FC40FF40F070BA8010185019501A501C501F50105061001861001089709B8FFC0402C0D1448090B97061014960F131F13020D131196001609130E8303400F132F134F13030E0317136902160366022B2B015F5E5D1A18104DED10C6003FFDD65E5DED3FFDD62BED3130015D715D5D005E5D715D5D5D715D5D715D5D5D715D7105220035100021321715262322061514163332371506026DDCFEDE011F01017F9DA76997B7BC98878FBF190146F80109012823A531E3BDB7E245AA3A000002006FFFE703E604570011001600EA405737100101101B1F482404340402C404E40402050335034503550304A503F5030259036903023A0601CA06EA06025506F50602 + 450701450755076507031316231602D316F316023A1601120E220E320EB20EC20EE20E060EB8FFD0400A1A1E480509850902090DB8FFE040441A1F480C14012C145C14EC14FC140403740A012F0A01400450046004030F04010E0512970D0D02159708100097110F970216120D1385110B0D850540180B6902170566022B2B011A18104DED10C6ED1139003FFDD6ED3FED11392FED3130015F5E5D5D5D5D5F5D712B005E5D2B5D5D5D715D715D5D715D5D715D712B71250623220035340033321211072112213237012110232203E1C68DF0FED1010BD0C5D701FD532B01507BB3FD6001DFE2E3233C013FFEF7013CFEE8FEFE3DFE7D4201D5012F00000100500000032D064400140047402D300701140824083408030B970C0E97090112000397060F02A00CB00C020C3014011412060085045003D00302032F5DCDFD3939DD5DC65D002F3FED39393FFDD6ED31305D7101112311233533351021321715262322061D01211501B0C69A9A0162637E85506147010F03AAFC5603AA94820184219C295D7E97940000000200C50000018A05C80003000700254013049E0503010F000704038500400809008530302B011A18104DED3939002F3F3FED31303311331103353315C5C5C5C5043EFBC20503C5C5000000000100C50000043D0456001100784053B90F01A910012D0F3D0F4D0F7D0F8D0F9D0F06770701D707E70702DB0DEB0DFB0D030D201A1D48180E0104061406240603090003100302100310030E950510010F0A000A8509031185004013096802120065022B2B011A18104DED3210ED002F2F3F3FED32325F5E5D31305E5D712B5D5D717171015D331133153633321615112311342623220711C5C59CE28DA8C54752B5A0043ECCE4B397FCF402CC7967EDFD410000000100C50000031D0456000D005B401F470B01490C590C02A90CB90C02070401090C030A079508000A100A022F030AB8FFC040171F23480A950510010F00030D8500400F076A020E0065022B2B011A18104DED32002F3F3FFD2B5F5E5DD6ED11333331305E5D5D71713311331536333217152623220711C5C575DF1E213327BB7E043ECCE405B811DEFD340000010045FFE702AE05160014006C400C9802D80202070201F702010EB8FFD040371519481B012B013B015B01040D0A049709070F139712109700160F125F12020F0C5F0C0209030C120A070D8505044016126902150465022B2B011A1810CD4DED393910C65F5E5D5D003FFDD6ED3FCDED393931305D2B5D7171052226351123353335371521152111143332371506020B96A88888C5011CFEE4B827385B19AC99027E94C513D894FDA6D50D8819000000010000000601060F596BAF5F0F3CF5011B080000000000B47FC3BC00000000C005BDE3F776FA1B0D21094D00000009000100000000000000010000 + 07BCFE5000000D1EF776F7430D2100010000000000000000000000000000000E06000100049A00BF044A00BF024E00BE044F0064058B00B3046B00670419006F0475006F02F10050025000C504F700C5034600C502FE00450000002000D00106012001F20256030E039A043A048004A605000546059E000000010000000E0077000F004F0007000100100030007B000005E00D3300030001B800712BB800672BB8005D2BB800532B410E00000246001002460002007F02440001023F023C0001002B023E023CB2012BEFBB023D0001023D023CB2141F00BD023C0010023C000201870188B21A1F40B80189B310163900410E0188001001880002018301850002002B018401850002002B01860185B2022B80BB017F000100DF017C406601DFE016171CD4D516171C7B7C161B0F7B1F7B2F7B037B7C19D1D216171C767716171C6D7016171C6C6F16171C6B6E161B5F6E7F6B026B6E7F721A747514151C676A14151C666914151C6568141B8F65A065D06503656885711A1973167A4319217943192102B90352034AB2022B10BD034600500346000200400339B20B0E39B9FFC00338B20E0E39B9FFC00338B3090C3950410B032D0001033003310003002B02F402F30008002B02E3B2BE022BB802DCB3BE641F40B802DBB3313A3940B802DBB2232739B9FFC002DBB2141439B9FFC002D9B2333939B9FFC002D9B22A2E39B9FFC002D9B2212339B9FFC002D9B2171939B9FFC002D9B20E1139B9FFC002D0B2111139B902800278B2022B10412B02740050027400020010025D0050025D0002000B024C001B024C006B024C0003000B024B001B024B0002023A02040016001F023802040012001F023202310002002B023002310002002B022F0231001E001F022E0231B21E1F20B80231B2121639B901F701E3B2032B0A412001F4000101EF01EE0002002B01ED01EE0002002B01EC01EE0002002B01EB01EE0002002B01E801E70003002B01E601E70004002B01E501E70002002BFFCA01E3B30B1139B9411D01E70001007601E7008601E70002019401920002002B019301920002002B019201900006002B019101900007002B018F01900002002B018E0190B2022BBFBF01900001007001900080019000020157B292042BB80153B291042BB8014FB297042BB80136B37F032B40B80139B21218394109012401250003002B011001110003002B0104403BFC022B10F850F80240E61A1A399A9B032B9C9B042B9B970A2B9392042B9192062B9297042B9597042B9897022B9697032BA097019F97AF97BF9703BC034803490004002B0349B285022BB9FFC00343B31011391FBE0344000100E00344000103350334B2032B20411203330030033300400333005003330004033303140003002B033203140003002B032F0314B2032B2FBF03140001000002F3 + 002002F3000202F0B2BD062BB802E2B2BF082BB9FFC002E1B2172839B9FFC002E1B20E1139B802E0B2870A2BB802DFB3BF042B40B802D7B323253940B802D7B2151639B9FFC002D2B2101139410D02C602C50006002B02C202C00006002B02C102C00006002B028CB285022BBC027602770004002B0277B285022BB9FFC00271B31011391FBE0272000100E00272000100400260B2151639B9FFC00260B20A0B39B9FFC0025FB2171839B9FFC0025EB2242939B9FFC0025AB31011391F4114025B000100E0025B0001000F024A0001001602490026024900020009022D0019022D0002FFC0022BB2111539B9FFC00229B30D113920B80223B2121639BD022202200002002B02210220B2042BC9411402200001021E02200003002B021F02200002002B01F601CF0003002B01E001B50020002101DF01B5B2262120B801DFB21E2139411A01DD01DC0002002B01DB01DC0002002B01DA01DC0002002B01D901DC0002002B01D801D70003002B01D701D60002002B01D601D4B2022BB0BF01D6000101D501D40002002B01D301D4B2022B69410B01D2000100B901D2000101D201D40002002B01D101D4B2022B20B801D0B2090C39B9FFCA01CFB30B11392BBF01A300A401A300B401A30003FFE001A6B2131539410D018D018C0003002B018B018C0003002B018A018C0002002B0156B286022BB80155B280032BB80154B286052BB80152B287052BB80151B288052BB80150B288032BB8014EB285032BB8014CB285022BB80138B287022BB80131B2BF032BB80122B285022BB8010E400B85022BFAFB042BFB85022BB8FFC0400AF51011391FF601E0F601B8FFC04009B1151C3940E51A1A39B8FFC0402EAF0D0F3900B40140B450B460B470B480B4C0B4D0B4E0B4F0B409B4AF641FE8E7042B898A072B8A8B062B8C8B062BB8FFC0B78E3032398E8D032BB8FFC040148D1E23398D8B022B8B85082B8281042B8180032BB8FFC0B3804A4D39B8FFC0B3803F4339B8FFC0B380343939B8FFC0B380282E39B8FFC0400C801D2339807E022B7F7E062BB8FFC0400C7D4549397D7E062B7E85082BB8FFC04020881E23398887022B8785082B8685062B83840A2B8485062B7085808502BF8501410A03530354000E03500351000E034E034F000E034EB203641F4155034C034D000F031B031C031D000C030F03100311000C030C030D030E000C0327030D0329000D0321031C0323000D031E03100320000D0327003C0321003C031E003C031B003C030F003C030C003C02AD02AE02AF000C02A102A202A3000C029E029F02A0000C02B9029F02BB000D02B302AE02B5000D02B002A202B2000D02B9003C02B3003C02B0003C02AD003C02A1003C029E003C02810282000E027E027F000E027C027D000E027CB203641F4175027A027B000F021002110212000C02 + 0D020E020F000C020102020203000C01FE01FF0200000C000B0211009B02110002000F021000500210009F021000BF021000DF02100005001F020D003F020D007F020D0003001F01FE0001021901FF021B000D0213020E0215000D0219003C0213003C0210003C020D003C0206003C0201003C01FE003C01BD01BE01BF000C01B101B201B3000C01AE01AF01B0000C01C901AF01CB000D01C301BE01C5000D01C001B201C2000D01C9003C01C3003C01C0003C01BD003C01B1003C01AE003C016D016E016F000C016101620163000C015E015F0160000C01610166B2171F1F41420166003F0166007F016600030179015F017B000D0173016E0175000D017001620172000D0179003C0173003C0170003C016D003C0166003C0161003C015E003C012C012D000F01260127000F01280129000E012A012B000E01180119000F01120113000F01140115000E01160117000E01050106000E01020103000E01000101000E010040A803641FFEFF0F1B37151836151535151234150F33150C3215093115063015032F15002E1526270E28270F2A2B0E2C2B0F22230E24230F1E1F0E201F0F0F10110C090A0B0C0607080C0304050C0001020C000340131A230003131F06031C1F1F0F3F0F7F0F032003011F034F03BF03FF03041B011D0D18071A0D1510170D1204140D901B012C3C2A3C283C263C243C223C203C1E3C1B3C183C153C123C0F3C093C063C033C003C503301B0124B004B5442B013014B004B5342B0332B4BB8032052B0322B4BB009505B58B101018E59B0332BB00288B8010054B00488B8020054B012435A5B58B80119B101018E851BB900010100B04B60858D59B1020042B00188B0235358B00188B0405158B02088B810005458B1020142595959B0374B5058B1020042592B1DB0644B5358B0801D59B0324B5358B0901D59004BB03A51B01B23422B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B7374732B2B2B2B2B2B2B2B2B2B2B2B2B2BB1282645B02A4561B02C4560442B2B2B2B2B2B2B2B2B2B2B2B002B2B2BB8010045B0FE4561B8010223442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2BB8027C45B8027A4561B8027E23442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2BB8034E45B8034C4561B8035023442B2B7473012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73742B2B2B0173742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B74752B2B732B2B2B2B2B2B2B2B2B2B2B2B2B752B2B2B2B2B73737473742B2B2B2B2B73742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73732B2B2B732B73742B2B2B0073742B2B2B2B2B2B2B2B2B2B00732B2B2B2B2B + 2B2B2B73742B2B2B2B2B2B73742B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B732B0143581B592B2BB018B0234B53422B2B732B2B2B2B2B732B2B2B2B2B2B732B2B2B01B8017C20456A44B8017D20456A44B8017E20456A44B8017F20456A44B8018020456A44B8018120456A44B8018220456A44B8018320456A44B8018420456A44B8018520456A44B8018620456A44B8018720456A44B8018820456A44B8018920456A4473732B2B2B732B2BB8023B20456A44B8023C20456A44B8023D20456A44B8023E20456A44B8023F20456A44B8024020456A44B8024120456A44B8024220456A44B8024320456A44B8024420456A44B8024520456A44B8024620456A44B8024720456A44732B732B2B7373B109322B4BB05052424BB008524BB008505BB01A23424BB0C8524BB036505BB00C234200 + 00>] def + /CharStrings 14 dict dup begin + /.notdef 0 def +/B 1 def +/F 2 def +/I 3 def +/S 4 def +/U 5 def +/a 6 def +/c 7 def +/e 8 def +/f 9 def +/i 10 def +/n 11 def +/r 12 def +/t 13 def + end readonly def + currentdict dup/FontName get exch definefont pop end + %APLsfntEnd + 42/FontType resourcestatus{pop pop true}{false}ifelse + {currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if + /FontInfo 1 dict dup begin + /FSType 6 def + end readonly def + /FontType 1 def + /FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def + /FontBBox{-2186 -1509 3361 2381}def + /UniqueID 4093103 def + currentdict currentfile eexec + 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C91B0B7175CE49F0688B3F79EA3DBC898217EC91EE332F98D08B0D78E002610AC5858EAF625BF673983D70210293AF44B5873D9BD4164D0FE0468184D7036711A930D37CFB0EBA4CA4E0BB73C83B1EDE3FF59EB72440E3D0584FC166A541D7DB2970976543E0E10D854AB4D9F0B00FBFF2D5CD862853E80381D10A0D903C20A3CE357147DE0CB523DFF50A9802D3472F7BC218F57ECF14CF94E48F4D4A4721FDBD23788F7BAC1ED041520EB5626C57B31DD87013DD804FF9F97EE8DF03DAB916FC171C4AF9AE8EDBE593D9D6379AEA6B676330251C88AB029B45A211824BBF7EE73352E64E08C74D6F21B54896730EE941B7634F5C12C6871B0EDD88FFAE17C8B33840D61D95845360DAB75DC03FED538DEF1F8FEE8749F1D4023089FB63B51FDD639042C57EB44D88770E7BA085531620629ACC44176427CACC13C93EF59213C4DDD99426B83173BA1C735EE4572F1F727C10870871A2E905204BC487F8D1ACF1E49E6575AC6357A7DF34DECC6B0ED7039C5B01EB737DC0BC4048508FE5D87C3ED38A9AF7310BE18D8C6EF0EDB1BB8F4CF76A60D31B142D8C0817765164B81136DF2CD67E0BB6AE6F7EEE8F30F942B42798951E727A3D0C4507EB52ED7E497EC2D02476CDD9C917486103AA192ED2D6747FB91B4B162C08F49B52DA3C5C515EC4AC0A8ED853D33965316B2546B237D961989CE42A20A46B15B60DE49DA7B719699F378D213CC48048052186929EC73413A8B9143155E9B830DEF35B1068346566D + 573855B4B2EF0ED2D0969F4A75782EBDD33FFB71E7AB8EB5B4AA2D059ED52DD32674DA6478023E21664CEE7B9C346EA30B46FCAFF0B8CABAA46437BD9FB83734DC4821FE4F7DB312170834B586574B68E7ED98CED264BD9133F503FC08C8E4710CDE721583352150EB46A6D1B6274AD76951EEFC576C2AAB85ABD5795859E6CE94A10FB39C1536FFD073283E611DCA4BDCCF4AB981DAF74E6464FF594CB150492886C682301E8320CE44361B40FDF6E6F698DE7AB927EDD2BEC696D187FB42423B2F4A780F6ED9CE903A26E33E31B4E57673218C34C8AA46FB564A91E21D1DE385AB9D7C418E4120F1F195BBF0728D4EB3E22D5536685C283E62A66A43A059E6CFE1BEDB26BF2F2749B37160C23FEB42EB5C6A8C1DE5EE818D03E0BB5D90715FEF683E07762411DE5BB7A67770D10B4C05C7D208551EE83CA525C2ABEBFB43A0120E3C53E77E80ADFBEC413E0047C3B312FD6EAD28A8C55875179DA659C9473E1E3B685C5EDD489FB704229EEC2435B036A47620C6C34B197A70F6E8CB4F42BB00F72EC847B7561C521F0D38FBCE0C8CED452D3DB9030FEEF0CD666A22D24F3B0E0A82FF5685560F620FD551C9AEE7248D2B98D96B1560A5DD930CDD141C2DA49B154BC3E47CE7A600801C30D4CB93BC56168FD2C009D43E27209AA816E78BFBBD0A6B63B2A4801FA884636C48EBFC5A735362A7472413121589CC7E28A2573D4337E6C912B9846A38E3EB25E716A358930D7F71279CF54BED09D164DF73936706D679302DE543FC294DF1D49234FA99C2A7C54F85CE19C43B8DEB6B940C948234309797DE54E02347806033724605394ACEAE2CE9726083D7DED16E2CC7497D7C799C46517E494C70B63AB964574429FAE2BEE2B23FE863F570C58811C4B3483A6184BE85885704C5A3B4F6CD04CEC8781A1BD216234C61E0F4A98FC9EF259EE85E9E4F1A0D11EFC6B6A5FA7CFB39BB1A9CC7E102687A3D8F2581142537DE975D505314CD07B75D392BD411FBF3FFD9E916215E088C0A7B066A966B59F6C4E2C995ED81EBBD25E43EC6F52F515E61C32E195687FF9EBE1B06F68AB5D560FEF14E83A084EEDBE0C08B6A75E89BA402D8991CDD51D19D11DA8414CC2AAAB495A2454A041DCD527A11C82461B68F606CD87101835DC3ABFDE104DDB2EC8EBE3DEC8B84FDAE2C9FF5F9CA5BC55A9703786CABF6BA0970C708DD19E43ED94F056F61FC9722FDC83B21335B488844ABAC72FA9712EABF3E643412D3733C247EB994DF1E2FABDFF5E3CA1DF349AED51A69AE36D4F8012537F67EF2E500C23EA88FDE034157D33D7393850468383DD005C8C08D4E27E5ED937BFD7266400CC6A76085E2997F8793B40FC2B9E6A0A86721127C8365C5EBEC51289A80E9FB65E0919A0A01440767EE291E16FDD02F0434C2516C3D402890057CF2AA7DAC2ADE40421CFDBC + 73CAAF807D7E33FE7417EE434B30D6F688623907259AECC3839C6D7CFD32A4029865A41B7921BBC40E57E8C2216455EDCF052674455157F7B10B675C1F82187212A3E98A5D15385121D525D579BC0E1C428506EB1E4D79194FCA924DA17CF9EDDDB97A5E1C4EA702EFD119AF7619963F31F91C + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark end + %APLT1End + %RBIEndFontSubset +/LucidaGrande cguidfix +/F2.1/LucidaGrande renmfont +[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeA { { 1.8008 exp } bind exec} bind +def +/MatrixA [ 0.9642 1.0000 0.8249 ] def +/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def +/DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def +end ] /Cs1 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind +] def +/MatrixABC [ 0.4124 0.2126 0.0193 0.3576 0.7151 0.1192 0.1805 0.0722 0.9508 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs2 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4295 0.2318 0.0204 0.3278 0.6722 0.1111 0.1933 0.0960 0.9578 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs3 exch/ColorSpace dr pop +%%EndPageSetup +/Cs1 SC +1 sc +q +0 0 416 517 rc +0 517 m +416 517 l +416 0 l +0 0 l +h +f +/Cs2 SC +90 0 0 76 195 441 cm +BI +/Width 270 +/Height 228 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$fDgF%JcC<$JcC<$JcF@%JcC<$JcC<$JcC<$fDgF%JcC<$JcC<$JcF@%JcC<$JcC<$ +JcC<$fDgF%JcC<$JcC<$JcF@%JcC<$JcC<$JcC<$fDgF%JcC<$JcC<$JcF@%JcC<$JcC<$JcC<$fDgg0 +Jc>BBJc:6"Jc=*sYlE>TT)\9YJc5<@Jc1/uJc4$qn,C3(fDhuQo)@&8Pl-+1Jc()snGL]4o)@&:fDiD] +q#9a\o)/C^Jbo3=JbjroJbmpno)&=^n,;hVj8[a2\c;-sq#'g^q"jm`JbT9@pjr3kpjr4pq"sm[qXsa_ +r9=1?s4@:fs7lTdrVQNfqt9g_q>9sFpRV#/p4;pgpA+F?p\Xa\q==CZqu6N^rV6BYs4@:os7lTdrVQNl +qtU$bq>9sap\X[Zp%%bJo:#6$nq$@_o(MYFoC)>Np&"I[p\Xa_q=sg`qtpU6cqu6NarU9d:$cqu6Nd +rVQTes4@;#s7lTgrVl`oqtp6hq>U0ap\sj_o`"FYnb_hQn,)PPmJH8LlhKc?l(.$hk^hrKkk=68l20cC +li-8MmJH>Kn,DhUn,)YSo)&%Xo_\@Zp\ss_qYU0hr:p6irqQNFs4%)Jrpp$eqtp6hq>U0gp\=I]o`"I] +o)%qUn,DbPm.foAl20]AkP421jalNEjalOejnn3;kPOKMl2KoDkPOE:jSn37igo%ZiITs= +iVDI-iqqd5jSS*:kPj]El20cFli-8MmJcPQn,)VRoD\C]p&=^_q"smdqYU0hr;6Hfrr2rLs4[MMrqQHk +r;QTmqYp?(+ht>q, +iVVX6jSS'9kPj]Eli-8MmJcSRnG_tToD\C]pAXgcq#:*dqYpBkr;6Hirr2rLs4[MMrqQHkqtp6hq>U0g +p\smco`"I]o)A.Un,D\Qli-/Jkl0cEjo4??j8S$:i;VX5i;;@*h"]V&fq$cHfR_\+f_O2!g%a;#g\]e' +h>Z:1htu@/j8S0>k5OQCl20cFm/HJQnG`"UoD\F^p\Xa_q>U9jr:U$fs4@;)s82fprVQNlqtp6hq#:$e +pAX^`oD\=[nG_nUmf)SPlMg#HkPO?>iVqd4htu7/h#?(-gA]e)f_a:qeb.Fkdt,u!dt6'DeFhAkfDaG% +g&'M#g]$"-hYuF0i;;R6k5OQCkl0oImJcPQn,DkVo)A:YpAXgcq#:*gqYpBkr:p6irn%2+s8N#mrVl`o +qu6Hkq"sg_o`"F\nG_nUnG_eRli-,Ik5OKAir7m5htu4.g&BV&f)F5!eGdqrde1u[c_Jd:c@O8lc2l59 +p!dKRq#13irql]jrqQKerq??`rq$-Zrp]pUrp9XMrosFEroF(dKRqu-Nlrql]krqZQgrqHEbrq$-Zrp]gQrp0RIroa:Aro*k6rn[S.rn7;& +rm^qrrmC_lrm1Shqoo&^rlP/\rl=oTn&2ro!e4rn[S+rmh"trmC_lrm1SfrlY5]rl4iRrke?DrkJ->VS%JmJ\6TIotC@=qnN$DrkeQMrl+lW +rlG)_rm1Sjrm1Jjrn%/'rnRM1qr@\d9Krql]j +rqQKeqt9sZrp]pUrpB^NrosFEro3q8rndY.rn.5#rmLemrm1SerlY5]rl+lTrkeZMrkJHGrk/-?rji$< +pp[$,J[U-U0gp\XU^nG_nUmf)POkl0cEjSn-;hu;C0 +fDaA#dJhJkcMl#da8X*X_u@IN^](tH]`,PB\c0);[f3]6[/RE2ZMUo%Y^s$0Y^s"ZYd"#0pp0n+rjDa6 +rj_j;rk8#UrkSNJrkABCrj_s8 +rj2U0rilC*riZ7&riH+"ri2NfJZ+-uJZ/CCri,dqriH+%qlfn&rj;[6rj_s>rkABIrk\TQrl>#^rm1Sj +rmh#$rnIG0qr@\=rp'LKrpTjUrpg![rqHEerqcNhrr)`nh>cO8qu6TnrqucmrqZQgrqHEbrpp'XrpTjP +rosFEro=":rnm_/rn.5!rm(MfrlG)Xrkn`Nrk/6ArjVm6rj2U.riQ1$ri5srrhoamqkX4dpnFXZJY@Xg +Jt_k3rhKIgrhf[mri#grri?%"ric=+rj)O2rji$>rkABJrkn`Vrlb;crmC_rrn.5+ro!e7roX4Erp'LM +rp]pWrq$-_rqQKgqtpBkqu,@Nj8]#Urr)iorql]jrqQKerq-3[rpTjSrp'LHroO.#[rm1Smrmq)&rndY4ro="@roj@JrpTjUrpp']rqHEeqtgJWPGEJrotoqi^i?rfmDKrgEbSrg`t[qk3qarhf[priQ1'rj)O3 +rj_sBrkeZRrlb;drm:Yqrn@A-ro!e:roX4FrpK[Qrq$-]rqHEfrqcWlqu,@Nj8\oQrql]jrqH<_rpg!W +rpTjOroa:Cro!e3rnIG'rmC_krlb;[rkeZJrj_s9rilC(ri5sprhKIdrh'1[rgNhQqj%/CrfI#cO8qu-Nlrql]jrqH<^rpg!VrpKdMroX4@ro!e1rn7;# +rm:YirlG)UrkJHCrj;[0riZ7"rhoairh'1]rgNhPrg!JGrfI,?rf-o9repc5reUQ/UP=>SJVJ`1!JZ@. +L]3,/M>N20NW,"9OT(LDQN!U-co`"@ZmJcJOkl0ZBiVq^5g&BV&dJhDib5T6tUAghbT)P,VQN!'HOT(=?MuJP3L]2u+KDpK%Jc:3!J,XtqIt<*#It<+IJ,=cnJc:?%L]3,/ +MuJ_8O8b7?Q2[-LS,T#YT`1eeWrB."Z2V63])KMEa8X6\ci2JofDaS)i;V^7k5OZFm/HJNoD\L`q#:*g +qu6NmrVlfSs5X.VrVl`oqYp9hp\sgao)A.Xm/H;LkPjK?i;VR3f`'J$d/M5faSs$T]Df>>Z2Uj(WW&^m +T`1P^R/WBMP5^OAMuJS4LAll*KDpE#J,XorIK"WnH_Yk;H%C6lGl`29qg8U0gpAX[_nc&"VlMg#Hjo46ODuO_TF8g=]GlE'hIK"`qK`6`*MZ/\9OoC^H +Sc5;]V>dRqYl;-2^AbtJaSsKad/MSpg]$(/ir8*>kl0uKnG_tWp&=^bq#:0ir;QZoro!h:s82coqu6Bi +p\sjbo)A.Xmf)JMkPjN@hYu=0fDa1sci2#b_Z%=L\c/l5Xo>3sT`1M]Qi<-HO8b%9L&Q]'J,XcnGlDga +EVj\RD#S5LCAqoDB;T6kAV"EEAc$->B`;`CCAr)LDuO_TErL7]GlE-jJGt-!L]383O8bCCRf8lWU].=n +Y5Yj.^&GhH`r=3]ci2GngA]q-iVr!=kl0rJnG_tWo`"Uaq#:-hr;QZoro!h:s82coqu6Bip\sgao)A.X +mJcALkPjK?h>Z1.ec*tqcMki__>_1J[Jm?.WrAalSGnrUPQ$R@MZ/;.Jc:/uGlDjbF8g.XD>nANB`;WC +Ac?3:@A@4]@"D^:?iaYCqdKJ5raYq_4 +ra,S0VHe[WJR!e3ra#D-ra5Y4raGe;rb)4DrbMLNrc%jYrd+QkrdXp%reUQ6rfmDKrgs+cri,n%rj_s> +rkeZVrlkAhrn%/&rnm_8roX4GrpKdTrq$-`rqQKhrql]mrr1jUj8]#Trql]irqHEarpp'Xrp9XIroX4< +rnRM+rmUkkrlb;ZrkABDrj)O'rhf[frg<\Mrf@&8reCE&rd+Qgrc8!Vrbh^Mrb)4BraGe6ra5Y1r`oG, +r`Z1%JQ[P,Jm&(Vqcj&*ra,S2ra>_9rau.DrbVROrc%j[rcnEkre(3)rf-o?rg!JQrhTOkric=0rjr*F +rlP/`rm:Yrrn7;.ro="?rp0ROrp]pYrqHEerqcWkrqucpi;_j;qu-NjrqQKerq-3[rpTjQroX4Aro!e1 +rn.4urlkA`rkeZHrj_s3ri#glrgj%Srf[8=re:?'rdOijrcS3ZrbVRJral(_9rb2:FrbqdVrcS3drdXp!re^W8rf[8Krh9=eriZ7.rji$Crl>#\ +rm1Sprn.5,ro="?rp'LMrpTjWrq??drqcWkrqucpi;_j;qu-NjrqQKerq-3[rpTjProX4@ro!e0rn.4t +rlb;^rk\TFrjMg0rhf[irgWnOrfR2:re(3#rd4Werc8!Urb;@EraYq8ra5Y/r`K/$r`8nqr_o[kJPgtq +Jl2DDr`&ksr`B)$r`fA-ra5Y5rau.CrbVRRrcA'`rdOisreLK4rfR2Irh07criH++rjVmArl4rZrm1So +rn.5+ro="?rosFLrpTjWrq??drqcWkrqucpi;_j;qu-NjrqQKerq-3[rpTjProX4@ro!e/rn%.rrlY5[ +rkSNDrjMg/rh]UfrgNhLrf6u5rdk&urcnE_rbqdPrb)4Bra>_3ra#M+r`9"ur_renqbX.cJPUhmJPQ;B +:]=2i;>sJm<;oqt=T2P(>lJ+0A,^*>CAr,ME;k"ZI/\WpK`6r0O8bIESc5>^X8]F([f4#?`W!sXci2Gn +fDaV*ir8'=l2L)Ln,DnWpAXjdqYpBkr;Q]Rs5X.VrVlZmq#:$eoD\7Yn,DVOk5OH@hu;=.fDa.rb5TH\ +_#CnD[Jm<-V#I"cQi<*GNW+Y2If=]nFoHC[DuOGLAH$$:?iF7.=T2>";uT\l;#X8i9r:U89S#lh9`@cc +:]=2i:]"#g^WW'1%[/R`;`;[gVcMl>mfDaS) +ir8$X/d9VY428qBTc8c_OVr_*5ar_EGg +r_WSnr`9#"r`fA.ra>_;rbDFLrc.p^rd4WqreUQ3rf[8Mrh07griuI0rk/6Jrl4r^rmUktrnRM4roF(B +rp9XPrpp']rqHEgrql]mrr1jUj8]#TrqcWhrqHE`rpTjSrp'LEro="7rn.5#rm:Ycrl+lOrjMg4ri?$m +rgs+Srf6u8re(2trd"K`rb_XMral(;ra5Y.r`B)"r_i_lr_NMer_*5_r^itXJOk>_Jk5l4qb$i]r_EGg +r_WSnr`9#%ra#M1raYqArbDFNrcS3crdXp®]#Vrk8<>rj)O'rh07\ +rfd>?re^W*rd+Qfrc.pRrb;@Ara,S0r`K/"r_remr_Q._'<;oep;#X/f9E%N^8H)-Y7A`J(7"IaX7/fXS8,GjS9)_Tb;#X>k +lJ.1B)ZKCDZ4_VG5cphL&Qr.OT([ISGo>`Y5Ya+]DfYG`;[sZdJhYpg]$.1j8S9Am/HGPnc&4\ +p\t$gqu6Nmro!h:s82coqYp9hp\sd`n,DbSl2KfDir7d5fDa;!ci1ua`;[IL[f3T3WW&OhS,STMMZ/A0 +JGsfmFoH@ZC&VcE@K'R3>5hS%;uTYn:]=#d9)_B\8,c!T7&`P)6\.UV6iKLN7fGpW8H)3[:&[rf;#XJo +>5hb*?iFX9B`;lJF8g@^IK"p!L]3A6Qi_CPbPoogeGe5%i;Vd9kl0rJmf)bUp&=^b +qYpBkr;Q]Rs5X.VrVlZmq#:$eoD\4Xmf)JMjo49=h>Z%*eGdena8X$V^&GG=Yl:U#T)P5YOoC7;LAl]% +GQ)^`E;jSNBDu<<>lIn*_CPbPoogeGe5%i;Vd9kl0rJmf)bUp&=^bqYpBk +r;Q]Rs5X.VrVlZmq#:$eoD\4Xmf)JMjo49=h>Z%*eGdena8X$V^&GG=Yl:U#T)P5YOoC7;LAl]%GQ)^` +DuOJMBDu<<>lIn*D#SJSFoHdfKDpW)O8bIERf9)]Xo>U)\c0GE`;[sZdJhYpg]$.1j8S9Am/HGPnc&4\p\t$gqu6Nm +ro!h=s8N#prVlZmq#:$eoD\4Xmf)JMjo49=h>Z%*eGdena8X$V^&GG=Yl:U#T)P5YOoC7;LAl]%GQ)^` +DuOJMB)Z3;>Q.e)D#SJSFoHdfKDpW)O8bIERf9)]Xo>U)\Gj>D`;[sZdJhYpg]$.1j8S9Am/HGPnc&4\p\t$gqu6Nm +ro!h=s8N#pr;QQlp\smco)A+Wmf)GLjSn-;h>Z")e,IYl`rKB)Z3;>Q.b(<;obo:]=)f8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+ +@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\c0DD_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QP +s5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1W +B`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_< +s8N#pr;QQlp\smco)A+Wmf)GLjSn-;h>Z")e,IYl`rK +Ac?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBs< +C]8>QFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\ +rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB +@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*: +>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQ +FT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWm +qYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/ +=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY' +<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-Xd +Jc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6g +pAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;! +;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo +:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B& +NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^ +n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj +9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e +8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@D +Rf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbS +kl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_ +8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z +7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)] +Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZB +iVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W +7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT +6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U) +\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4 +f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ +6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z") +e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL +5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C +_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.t +cMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#! +5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl +`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O +5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jY +dJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki_ +_u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P +5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9# +6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYp +gA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=J +Zi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I +6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L +7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/ +iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70- +W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR +8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV +8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$> +lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`Cf +Rf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y +9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9] +:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2M +nG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJ +MZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c +;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h +;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(Z +pAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0 +J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl +:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r +=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmb +qu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZk +FT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'g +rS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+ +@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QP +s5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1W +B`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_< +s8N#pr;QQlp\smco)A+Wmf)GLjSn-;h>Z")e,IYl`rK +Ac?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBs< +C]8>QFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\ +rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB +@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*: +>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQ +FT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWm +qYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/ +=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY' +<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-Xd +Jc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6g +pAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;! +;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo +:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B& +NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^ +n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj +9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e +8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@D +Rf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbS +kl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_ +8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z +7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)] +Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZB +iVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W +7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT +6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U) +\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4 +f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ +6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z") +e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL +5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C +_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.t +cMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#! +5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl +`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O +5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jY +dJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki_ +_u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P +5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9# +6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYp +gA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=J +Zi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I +6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L +7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/ +iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70- +W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR +8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV +8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$> +lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`Cf +Rf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y +9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9] +:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2M +nG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJ +MZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c +;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h +;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(Z +pAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0 +J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl +:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r +=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmb +qu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZk +FT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'g +rS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+ +@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QP +s5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1W +B`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_< +s8N#pr;QQlp\smco)A+Wmf)GLjSn-;h>Z")e,IYl`rK +Ac?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBs< +C]8>QFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\ +rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB +@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*: +>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQ +FT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWm +qYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/ +=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY' +<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-Xd +Jc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6g +pAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;! +;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo +:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B& +NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^ +n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj +9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e +8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@D +Rf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbS +kl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_ +8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z +7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)] +Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZB +iVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W +7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT +6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U) +\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4 +f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ +6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z") +e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL +5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C +_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.t +cMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#! +5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl +`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O +5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jY +dJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki_ +_u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P +5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9# +6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYp +gA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=J +Zi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I +6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L +7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/ +iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70- +W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR +8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV +8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$> +lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`Cf +Rf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y +9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9] +:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2M +nG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJ +MZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c +;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h +;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(Z +pAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0 +J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl +:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r +=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmb +qu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZk +FT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'g +rS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+ +@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QP +s5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1W +B`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_< +s8N#pr;QQlp\smco)A+Wmf)GLjSn-;h>Z")e,IYl`rK +Ac?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBs< +C]8>QFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\ +rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB +@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*: +>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQ +FT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWm +qYp6gpAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/ +=T2;!;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY' +<;obo:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-Xd +Jc:B&NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6g +pAXX^n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;! +;>sAj9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo +:]=&e8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B& +NrG@DRf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^ +n,DbSkl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj +9`@W_8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e +8cD6Z7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@D +Rf9)]Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbS +kl0ZBiVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_ +8,c!W7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z +7fGgT6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)] +Xo>U)\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZB +iVq[4f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W +7/fRQ6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z")e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT +6iKEL5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U) +\Gj;C_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4 +f)F.tcMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;TB@/a@/=T2;!;>sAj9`@W_8,c!W7/fRQ +6Dd#!5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z") +e,IYl`rKAc?*:>5hY'<;obo:]=&e8cD6Z7fGgT6iKEL +5_21O5_;9#6Mj.L7K,gV8H)9]:B")h;Z9_r=T2Y+@fBsQFT-XdJc:B&NrG@DRf9)]Xo>U)\Gj;C +_u@jYdJhYpgA^"/iVr$>lMg2MnG`(ZpAXmbqu6QPs5s@\rqlWmqYp6gpAXX^n,DbSkl0ZBiVq[4f)F.t +cMki__u@=JZi70-W;`CfRf8EJMZ/A0J,XZkFT-1WB`;WC@/aC0=T2;!;>sAj:&[``8,c!W7/fRQ6Dd#! +5_21P5lO+I6iKOR8,c'Y9E%]c;#XAl:'grS[_Z%*eGden +a8X$V^&GG=Yl:U#T)P5YOoC7;LAl]%GQ)^`DuOJMB)Z3;>Q.e)D#SJSFoHdfKDpW)O8bIERf9)]Xo>U)\Gj>D`;[sZ +dJhYpg]$.1j8S9Am/HGPnc&4\p\t$gqu6Nmro!h=s8N#prVlZmq#:$eoD\4Xmf)JMjo49=h>Z%*eGden +a8X$V^&GG=Yl:U#T)P5YOoC7;LAl]%GQ)^`DuOJMBDu<<>lIn*_CP +bPoogeGe5%i;Vd9kl0rJmf)bUp&=^bqYpBkr;Q]Rs5X.VrVlZmq#:$eoD\4Xmf)JMjo49=h>Z%*eGden +a8X$V^&GG=Yl:U#T)P5YOoC7;LAl]%GQ)^`E;jSNBDu<<>lIn*_CPbPoog +eGe5%i;Vd9kl0rJmf)bUp&=^bqYpBkr;Q]Rs5X.VrVlZmq#:$eoD\4Xmf)JMjo49=h>Z%*eGdena8X$V +^&GJ>ZMpj&TDk>ZP5^@sAj9E%Q_8H)-Y7f,TQ6\.UU6\7]) +7/KIQ8,c'Y8cDH`:]=2iQ/"/Ac?BBD>nVUG5cphK`6c+O8bLFS,T5_Xo>U)])KPF`;[sZdJhYp +g]$.1j8S9Am/HGPnc&4\p\t$gqu6Nmro!h:s82coqYp9hp\sd`n,DbSl2KfDir7d5f`'G#ci1ua`;[IL +[f3T3WW&OhS,STMMuJP3JGsloGQ)R\C]8#H@fB[4>Q._';uTYn;#X/f9E%N^8H),S7=dmY7=dl.77I2G +qagTWr_EGir_i_rr`];,ra5Y:rb2:KrcJ-`rdOj"reUQ7rg<\Srh]UrriuI6rk\TQrlkAirmh#'ro*k: +roj@JrpKdUrq69brqcWkrqucpi;_j;qu-NjrqQKerq$-XrpKdMroO.=rndY,rmh"orl>#Vrk8<>rj)O' +rh07\rfd>?re^W*rd+Qfrc.pRrb;@Ara,S0r`K/"r_remr_n>MAc?-;?iF7.=8l8";Z9Ml:]=&e9E%Q_8Z#%08:a<`8H)3X9)_N`:B"&g +;#XGnhu;:-f)F%qb5TE[^](_A[/R0+UAgb` +Qi<$EMuJD/If=ZmF8g(VD#S)H@fBd7>lIk)=8l.t;>sDk:A[`a9;Y=48qBTd9)D9\9`@cc:]=2i;Z9_r +=T2P(?N+@3AH$?CD#SDQGQ)pfJc:K)MuJq>S,T&ZVuEq"Zi7W:`;[gVcMl>mfDaS)iVqm:kl0uKn,DkV +p&=^bqYpBkr;Q]Rs5X.VrVlZmq#:$eoD\7Yn,DVOk5OH@hu;=.fDa.rb5TH\_#CnD[Jm<-V#I"cQi<*G +NW+Y2If=]nFoHC[DuOGLAH$$:?iF7.=T2>";uT\l;#X8i9r:U89S#lh9`@cc:]=2i:]"#g^WW'1%[/R`;`;[gVcMl>mfDaS)ir8$d1fRf8KLNrFh5 +Jc:/uGlDa_DuOSPBDuNB@/aL3?2e"+:Ou;m:B=6er_WSkr_i_pr`9##r`fA,ra5Y7 +rau.Erbh^SrcS3frdXp#rf$i;rg*PSrh9=lrj)O3rkABNrlG)brm^r!rn[S5roO.DrpB^Rrpp'^rqQKh +rql]mrr1jUj8]#TrqcWhrqHEarpg!Vrp9XHroF(:rn7;&rmC_grlG)Trjr*;rilC!rhBC^rfd>Creg]- +rdauprcS3\rbh^Lrb)4?ra>_4r`oG*r`B)"qc'=gJPq%sJPlMH;Z9Vo<;oqt=8l>$>5hh,?iFL5B)ZKC +D#SGRF8gF`If=lsLAm23OoC^HT`1_cXT#U+\,O/A`W"!Yci2JofDaY+ir8'=lMg2Mn,DnWpAXjdqYpBk +r;Q]Rs5X.VrVlZmq#:$eo`"C[n,D\Qk5OKAi;VL1f`'=ubl5``_Z%1H\Gi`3W;`UlSc4rSP5^C=L&Q]' +If=QjFoH@ZD#S/JAc?09@/aC0>5hY'=8l8"iS8P5^mKU&LkeY5Yj.\c0ACa8X6\ci2Mpf`'b,j8S3?lMg2Mn,DnWpAXjdqYpBkr;Q]R +s5X.VrVl]nq#:$eo`"F\nG_eRkPjWCi;VO2g&BJ"c2Poc`;[LM]Df,8WrAmpT`1>XQ2ZjDM>i8/JGslo +GlDa_DuOYRCAqlFB)Z6<@/aO4?2e+.>Q.g'=b0_,=b9fU>5MP'?2e10?iFI4AH$3?C&VrJDZ4VSG5cac +If>!!LAm23P5^aGSGo>`VuEn![f3l;_>_RUbl5ugfDaJ&hu;[8k5O]Gmf)_ToD\L`q#:-hqu6Nmro!h: +s82coqu6Bip\sgao)A.XmJcALkPjK?h>Z.-eGdenbl5T\^](nFZi7$)W;`LiRf8ZQOT(1;M#N#*IK"Tm +G5cL\DuOVQC&VcEAc?3=@fBd7?iFC2?)CkX>_-.3>lJ%.?Me+,@K'g:BDuTDD#SAPE;jtYH2`0iJ,Y3% +M#NJ7Pl@$KT)PScWW'.$\c08@_Z%[Vc2Q,if`'Y)hu;a:kPjfHmf)_To`"Uaq#:-hqu6Nmro!h:s82co +qu6Bip\sgao)A.XmJcALkPjK?h>Z1.ec*tqcMki__>_1J[Jm?.WrAalSGnrUPQ$R@MZ/;.Jc:/uGlDjb +F8g.XD>nANB`;WCAc?3:@A@4]@"D^:?iaYCqdKJ5raYqrfR2HrgEbXrhTOkriQ1+rjMg>rkn`TrlkAirm^r# +rndY4roF(Crp'LNrpg!Yrq??crqQKirqucorr1jUj8]#TrqucmrqZQeqt0mWrpB^Nroa:?ro!e3rn%/! +rm:YerlG)Trjr*#\rm1Sorn%/)ro!e7roX4Frp9XQqt'g]rqQKg +rql]mrr)iqi;_j;qu-Nlrql]jrqH<^rpg!VrpKdMroX4@ro!e1rn7;#rm:YirlG)UrkJHCrj;[0riZ7" +rhoairh'1]rgNhPrg!JGrfI,?rf-o9repc5reUQ/UP=>SJVJ`1!JZ@.L]3,/M>N20NW,"9OT(LDQN!_.I\Gir9Z2Um)WrApqU]-td +TDk>ZRf8]RQ2[$IP5^R?O8Fp3N.Hq=N.HogN/[Xnrf6u=rfI,Arfd>Grg*POrgNhWrh07arh]Unri5t$ +rj2U4rk&0Frkn`Vrm(Mirm^r$rnIG0ro3q=rosFKrpKdTrq$-]rqHEfrqcWlqu,@Nj8]#Urr)inrqcWh +rqHEcrpp'XrpTjQroj@Ero3q7rndY,rm^qprm(M`rl+lPrk/6@rj;[0ric=&rhoamrhBCbrh'1]rgWnT +rg3MHrfd5BrfO(>JWPGEJrotoqi^i?rfmDKrgEbSrg`t[qk3qarhf[priQ1'rj)O3rj_sBrkeZRrlb;d +rm:Yqrn@A-ro!e:roX4FrpK[Qrq$-]rqHEfrqcWlqu,@Nj8]#Urr)iorql]jrqQKerq-3[rpTjSrp'LH +roO.#[rm1Smrmq)&rndY4ro="@roj@JrpTjU +rpp']rqHEeqtgrkABKrkn`Urlb;drmC_rrn.5*ro!e7roO.CrosFLrpTjUrq-3`rqHEfqtg#UrkSNJrkABCrj_s8rj2U0rilC* +riZ7&riH+"ri2NfJZ+-uJZ/CCri,dqriH+%qlfn&rj;[6rj_s>rkABIrk\TQrl>#^rm1Sjrmh#$rnIG0 +qr@\=rp'LKrpTjUrpg![rqHEerqcNhrr)`nh>cO8qu6Tnqu$HirqZQgrqH<^rp]pUrpKdOroj@EroF(; +rnm_0rn%/#rmC_krm(Mdrl>#Xrkn`NrkJHHrk/6Brji$;rjMg6rj;[2rj)F+UTfiVqa6gA]b(ec+"rd/MAjbl5caa8OnG_tWoD\C]pAXgcq#:-hqu6NmrVQTMs5!_SrqlZnqu6Hkq>U-cp&=R^nb_hTm/H;LkPO?> +i;VU4h>Z(+ec+(tdJhMlci2/fb5TK]`r!^R_Y(_D^\,:;]Rd_H]Rmfh^&GbC^\bhG_Y_7M`W!pWaSsE_ +ci2;jchl2jfDaM'h#?4.j8S3?l2KuImJcSRnG`%Yo`"O_p\sseq>U9jr;6Hirn[V1s8N#prVl`oqu6Hk +q>U0gp\sjboD\:ZnGDYQli-,IkPjQAiVqa6h>Z1.g&BV&eGdqrdJhMlci25ebl5caao9B\a8$g&Be+hu;R5iVr!=kl0lHm/HDOn,DkVo)A:\p\Xa_ +qYpEirVlfJs5!_SrqlZnr;QTjqYp9hp\smco`"I]nc&%Wn,D_RlMg#Hk5OE?ir7m8h>Z4/gA]b(fDa>" +eGdqrdJhMlci25ec2PrdbOs$QafNR7aFVEgaS:$fr;6Hlrn%2+s8N#mrVl`oqu6Hkq"sg_o`"F\nG_nUnG_eRli-,I +k5OKAir7m5htu4.g&BV&f)F5!eGdqrde1u[c_Jd:c@O8lc2l59p!ro*k7qqq;,rnRM-rn@A)rn.,"pso&eWRHFIJ^]5"pseuern%/%rn72& +qqM,*rndY3qr%A3roX4Croj@IrpB^QrpTjVrpp'\qtC$`rqQKgrqcWkrquQirr1OLgAh'Lrr)Wirql]k +qtU0brq69_rq$-[rp]pUrpB^Orp0RJroj@EroO.>qr7V5rnm_5qq_/)qqLSmVV$IPJ_5S,n(I]oqqM,* +qq_8.rnmV2qr7V9roX4Croj7ErpB^RqsaLSrq69arqHEeq"k!erqucoq#8nFgAh'Lq#13irql]krqZQg +qtL![rq$$Wrp]pUrpKdOqs"+DroX4AqrIb:ro3V/rnm_5qqddtJ_bn5J_g%Uqqh5-p#,i.qr7V9qrR_< +roj@Irp9XOrpTjUrpfmWrq-3`rqHEerqZHfrql]mqu-Ekrr:UMeGoOIq#1*fq"jm_rqHEbqt0mXrp]pU +rp]gPqs==JrosFGqrdk=puMG7pu7k'J`21=J`6F`pu;22qrIY:qrdtBros=Frp0RMrpB^QrpTaRrq$-] +rq69bqtU'arqcNhrquZlq#:9mfDjA#q#:9kqu$HjqtgBrq60^qtL!_qt^$`qtp9gq#1!en,M#>_Z0E1p&4dcq"sa\qt^-a +i:if9JbFZgJbJp5i:m-Dq"aLWqtpBjn,<%\m/P];_Z0*(rr)Ecp&"X_gA.<7JbXfkJb]'9gA1O?o)&4[ +rr)*\m/P];\c;I(n,;hTqtks@q>,[=Jbjroeb\k6qu#p]o)@\LfDhuQo)@&8Pl-+1Jc()snGL]4o)@&: +fDhuQ_Z#euJc1/uJc5*:_Z%s_fDgg0Jc>BBJc:6"Jc=*sYlE>TJcC<$JcC<$JcC<$fDgF%JcC<$JcC<$ +JcF@%JcC<$JcC<$JcC<$fDgF%JcC<$JcC<$JcF@%JcC<$JcC<$JcC<$fDgF%JcC<$JcC<$JcF@%JcC<$ +JcC<$JcC<$fDgF%JcC<$JcC<$JcF@%JcC<$JcC<$JcC<$fDg@ +~> %APLeod +EI +76 0 0 76 0 441 cm +BI +/Width 228 +/Height 228 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$ +JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcFs6Rf7m;Jc>*:JcFs6JcG]K +m/EIPJc1/umeuDLJc>`MO8neMdJ^BKJc(/u!WDuMrTsNHs.TJcrpTgYr:TrRqLSKoqWReQqss[RrUTr` +s.o\orp9UYr:p0^qYU)Wpjr3kq!RqVq==CWqtU*UrVlels/Q+rrpp$_r;6BaqY9m]ptb\Yp4;q#p@.hE +p\=OYq==C]qtU*^rUp/ls0Mb&rq66er;6BdqYU*fq"XUYpA=ORo^_U]nq$@go(hnUoBc,Kp%\7Up\Xab +q=sgcqt9marUp/us0ht,rq66hr:TsdqYU*cq#:$\pA":WoDA+Cn[7k;n;6Z1nauAEo)A7Uo_%qWp\=O_ +q>:$cqtp:$fqtpH.+hYuI4htu@2iVVX6j8S-=jo4EAkPj]El2KuIlhg,I +nGDeUo`"O_pAXgcq#:*dqYpBhr;6Hirlb>bs8N#mrVl`lqu6Hkq>U0gp\smco`"I]o)A.Un,D\Nli-/J +kl0cEjo4??j8S';iVqa6i;VX5hY>n!gABR2fR_\3f`'S%g@s=rh##t-i;VX5iVqj9j8S-=jo4HBkl0iG +lhg&Jn,)VRo)A7[o`"R`p\sseq>U6fqu6NjrVQT;s3CZArqlZnr;6BjqYp?+/i;V^7j8S0>k5OTDl2L#JmJcPQnG_nUnc&.Zp&=[ap\sseq>U6iqtp!7:_kpsB#frmLepqpbVrrn%/%rnIG-rndY3ro!e7ro=">roX4DrosFJrpTjUrpg!Y +rq$-]rqHaqoeu]YK;@;L<9A9!6Y;aprr`^rm(Mhqp>>jrmUkrrmq)#rn7;+ +rn[S2ro!e8ro="?roa:Frp9XOqsaUUrq$$\rqHEfrqcNhrquZlrr1=FeGoOIq#13irql]krqZQgrqHEc +rq-3\rp]pUrpB^Orp'LGroO.>ro!e5rndY/rn@A(rmh"trmC_lqp58drlkAbrlY5]prEBRqo.:-fu&BY +Xi&c/!QE"X`V[[Pa8X3[b5TT`bl5laci2;jdJhVoec+5#g&Bb*hYuF3i;Vd9jo4HBlMg,KmJcSRnc&+Y +o`"O_p\sseq>U6iqu6NjrVQTDs4%)JrqlZnr;QTmqYpiVqa6 +hYu:/f`'G#e,.MkcMl)fb5TK]a8X'W`;[[O_>D%I^](t3]u7R7]Tp.s]`>bF^AbnB_#D1L_u@UR`W!pW +ao9H^c2Q#cd/MMnec+5#gA]t.hu;U6ir8*>kl0lHmf)\SnG`"XoD\C]p\sseq>U6iqu6NmrVQTDs4%)D +rVl]nqYpZ+,fDa>"df.VmcMkucao9B\`W!gT_u@LO +_#D(I^&G\D]DfD=\aR#A[XklM[d^a+\,Nr8])K>@]`,VD^AbnH_>_@O`;[aTaSs<\b5T]cd/MJmec+2" +g&Bh,hu;R5jSn<@kl0oImJcSRnG`"XoD\I_p\sseq>U6iqtU->s4@;MrqQHkqu6Hkq>U-fpAXaao)A.X +n,D_Rli-/Jk5OE?i;VX5h#?%,f)F.td/MAjbl5fb`rU0gpAX^`oD\:ZnG_kTlMg#Hk5OB> +i;VU4g&BV&eGdhocMl&ea8X'W_u@IN^AbhF\c0);[JmK2Z2Us+Yl:g)Xn\srWr&d'W.Cn(W;`doWW9'o +X8]7#Y5Y[)YPtg+ZMq92\,Nr;^&GeG_#D7N`W!pWbl5oed/MPof)FA%hYuI4ir8*>kl0lHmf)\Snc&.Z +p&=[aq#:*gqYU3irVQTJs4[MPrqlZnr;QTmq>U0gp\sjbo`"F\nG_kTm/H5Jk5OE?i;VR3g]#e'e,I_n +c2PlbaSs*V_>_4K]DfA?\,N`5ZMq',Xo>C#WrAsrVuERgV#-qXU;c=2rr2fnrql]krqZQfrq??arpg!WrpKdNroj@Dro*k6rnRM)rm^qorlkA_rkn`Mrk&0>rj2U/ +riZ7"rhoalrh07^rgj%Vrg<\OrfmDFrfR2AqiC`:qi1B0^5IQ#P)K*orf-i9!07&>qiLf>rfd>Grg3VO +rgEbVrh'1_rh]Ulri,n"rilC.rj_s>rkJHMrl>#^rm:Yorn%/)rndY5roX4Drp'LNrpTjVrq69arqHEf +rqcWkrr)`nh>c=2rr2fnrql]krqZQfrq??`rp]pTrpB^KroX4?ro!e3rn@A$rmC_jrlG)WrkJHFrj_s6 +rilC(ri5smrh9=`rg`tUrg3VKrf[/?rf6u;qhtH2reUH,[>'6eM2)"br.k?/qhkB2rf-o;qiLf@rfmDK +rgNhVrh'1`rhKImriH+'rj2U5rk/6Frl"fWrm(Mjrm^r$rnRM2ro="?roj@KrpTjUrq-3_rqHEfrqcWk +rr)`nh>c=2rr2fnrqcWirqQKcrq-3[rp]pSrp0RGro="9rn[S,rmq(qrlkA`rkeZLrk/6;riuI+rhoal +rh9=`rgWnTrfd>Erf@&=repc4reCE+re10"qgbl"JU`E(r.+Wordk'%re:?+re^W4rf6u=rfR2DrgEbU +rh'1`rhTOkric=,rj;[;rkJHLrlP/arm:Yqrn7;,ro!e:roX4GrpB^Srpg!Zrq69crqZQirr)`nh>c=2 +q#13grqQKerq69^rp]pTrp9XLroF(C +rf-o8reLK-re19%rdautqgJHkqg8OnG`%Yp&=^bq>U6crS@M0s82co +r;QQlq#:$eo`"F\n,DbSli-,Ij8S$:hYu1,eGdhobl5Z^_Z%7J\Gii6YPtR$VuE@gSc5,XPl?gEO8b(: +M>i8/K)U<"J,XlqI/\KiH2`'fG5HEiFFeOjFT-F\FoZ^_GlE!fHiAElIK"`qJc:9#LAm#.MuJe:P5^^F +S,T#YT`1kgX8]=%Zi7K6^&GnJa8X<^d/MSpf`'b,i;Vd9kl0lHmf)\So)A:\p\t!fqYU3irS@M3s8N#s +rVl`oqu6Ejq#:$eoD\=[n,D\Ql2KiEiVq^5g]#b&df.Sla8X$V^](bB[/R9.W;`UlT`1J\R/Wi2-K)U9!IK"QlH2_scFT-=XEVj_JDnBn&hYuL5k5OTDm/HJQnc&.Zp\sseq>U9jr;QZlro=%: +s8N#srVl`oqu6Ejq#:!doD\:Zn,DVOkPjTBi;VR3gA]V$d/M8g`W!^Q^&GG=Z2Um)V>d4gT)P)UPl?aC +MuJM2K`6N$If=`oGlDmcFT-=[E;OPPD>nAKCU.]+C4g7%CMNocrbVRNqelCPrc8![rc\9crd=]ordb!$ +reLK2rf@&Brg3VUrh9=friQ1)rjDa=rk\TQrlkAgrm^r$rn[S3roO.Crp'LOrpg!Zrq??crqZQjrquco +qu5XUi;`fUrr)iorql]irq??arpp'XrpKdMroa:@ro!e2rn7:urm(MdrkeZKrjr*6riZ7#rh9=_rgWnN +rfI,=reLK+rdXoqrd+QgrcA'YrbqdRrbVRLrbDFHrb1k8rarlUJRt!Uqe#P7!,):Erb;@HrbMLMrbh^R +rc.pYrcnEgrdFcqre(3*rf-o=rfd>Nrgs+_ri5t"riuI6rkABKrlb;drmC_urnRM2ro="?rosFMrp]pX +rq69brqQKirqucoqu5XUi;`fUrr)iorqcWgrq??`rpg!Vrp9XJroO.ZC4jo4KC +m/HGPnc&1[p&=^bqYpBkrVQTSs5`r@b?2S%- +?N+=2@/aU6A,^$Onc&1[p&=^bqYpBkrVQTSs5hu;@/f)F+s +c2Pf`_u@@K[f3N1WrAgnTDk5WPQ$XBM>i5.J,XipGlDgaE;jbSD#S)HAc?3=@/aO4?N+70>khOr>/"-j +=cuqY=ohi3rEK8+ra#M0ra5Y4raYq=rb)4Hrb_XRrcJ-ard=]pre19-rf@&Crg<\WrhTOnrilC2rk8Crf$i0rdk&trc\9^rbqdQrb;@DraPk7ra5Y0r`];( +qcEbtnl<;$JQ.S-p/M)mqc<\tr`T5)r`oG0raGe8rau.Drb_XQrcA'^rdOitre190rf@&Brgj%^rh]Ut +rj;[8rkSNPrlY5ermh#$rnm_7roO.Erp9XRrpp']rqHEgrql]mrr)iqj8\0>rr2oqrquclrqZQfrq69] +rpTjProsFCro*k5rn%/!rm1Scrl"fNrjVm3riH*orh'1Yrf[8?re^W*rdOinrcJ-Zrbh^Lrau.=ra>_2 +r`fA)r`K/$r`/qsnl,Nc]2=,VO&>mSp/Cogr`&ksr`B)$r`T5)ra#M2raPk=rb;@Lrc.pZrd4Wnrdk'* +rf6u@rgNhXrhKIoriuI3rkJHNrlP/crmUkurndY5roF(Crp9XQrpp']rqHEfrql]mrr)iqj8\0>rr2oq +rquclrqZQerq-3[rpTjProsFBro!e3rmq(srm1Sarkn`MrjDa0ri?$krg`tSrfI,;reCE&rd=]irc.pU +rbVRGraYq7ra,S.r`T5%r`9"tqbd>gr_TdoJPUno!DlSm;#X8i;#X>k<;ons=8lA%>Q.t.?iFR7B)ZWG +DZ4YTGlE'hJGt<&MuJh;QiZ@3j8SU'doD\7Ymf)POkl0T@hu;F1ec*tqc2P]]_>_+HZi7-,VuE@gRf8QNNrFk6 +K)U/sGlDd`DuOMNBDuB>@/aL3=oMM%sAj;#X8i:@_,k9S#lr9_M0\:&@]b;#X8i;>sJmU6iqu6Qnro=%=s8N#srVl]nqYpLAlc'HiA3fEW0hSC&V`D@/aL3>lIh(nPSG5cjfJc:E'MuJq>R/W]VV>dRqZMqK8_#D:Obl5ugeGe5%hYuL5kPjcG +mf)_ToD\F^q>U6iqu6Qnro=%=s8N#srVl]nqYp9hp&=R^nG_hSl2KlFiVq^5gA]S#ci2,e_u@FM\c/i4 +WrAgnSc4rSOT(.:K`6K#GlDgaDuOPOBDuE??iF=0>5hP$;u9Dj:B!rd9'Jp]8:alJ+0A,^-?C]88OFT-OaJ,Y-#MZ/_:QiZC4kPjcG +mJcVSoD\F^q#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\nG_eRl2KiEi;VO2g&BG!cMkuc_>_.I\,NW2 +WW&XkRf8TOO8aq6K)U5uFoHF\DuODKAH$!9>lIn*=8l+s;>sAj:&[ca8cD9[8#\t/7Y+&-7fGpW8H)3[ +9E%Zb:]=5j;Z9bs=oM\*@/a^9BDuiKErL4\If=ruL]3A6Pl@-NUAh.kYl;-2]`,bHb5T]cdf.r!h>Z@3 +k5OTDm/HMRoD\C]q#:*gqu6Qnro=%=s8N#srVl]nq>U-fo`"F\nG_eRkl0ZBi;VO2g&BCuc2Pia_>_+H +[f3H/W;`LiRJrELNrFb3Jc:&rFT-7YD>n/HA,]j7>Q.b(sVq=T2P(?iFR7B)ZZHEW1(ZI/\ZqL&R,3PQ%!LU&LthY5Ym/]`,bHao9Qa +dJhhuh#?72jSnBBm/HMRoD\C]p\t!fqu6Qnro=%=s8N#srVl]nq>U-fo`"C[n,DYPkl0ZBi;VO2f`'7s +bl5Z^_#CtF[Jm?.VuE=fQi<-HNW+V1J,XfoF8g.XD#RuE@K'U4=oMM%;uTVm:B!rd8cD9[8,c!W7J0'V +6\.U]6hs.K7/fXS7fGpW8H)3[9`@cc;#XDm-IK"NkEW0kTCAq`B@/aI2=8l5!;Z9Ml:&[fb8H)-Y +7fGgB6b>[96B"8)6iBCL7/f[T8,c'Y9E%]c;#XAl<;otu?2e72A,^6BD>nPSH2`9lK)U]-OT(RFTDk\d +XT#U+]DfVFaSsE_d/MYrg]$.1jSnBBm/HJQo)A:\p\t!fqYpHmro=%=s8N#srVlZmq#:$eo`"C[n,DYP +kl0ZBi;VL1f)F%qbPoN\_#CqE[/R0+V>d+dPl?aCMuJ;,IK"NkEW0hSC&VT@?iF=0=8l1u;#X8i9`@Z` +8,c!W7Hm2"6J4YU6*3H26MlJ+0@fC*@D>nPSH2`6kJc:T,OT(LD +TDk\dXT#U+])KME`r=0\d/MVqg]$.1jSnBBli-APo)A:\p\t!fqYpHmro=%=s8N#srVlZmq#:$eo`"C[ +n,DVOkPjN@hu;@/ec*qpbPoK[^](eCZi7$)V#HtbPQ$XBMZ/2+IK"HiE;j\QB`;H>?N+1.Q.t.@K's>C]8;PGQ*!hJc:Q+ +NrG7AT)PPbX8]I)\c0AC`W"$Zd/MSpgA^"/j8S6@lMg8Oo)A:\p\t!fqYpHmro=%=s8N#srVlZmq#:$e +oD\:Zn,DVOkPjN@hYu7.ec*nob5TBZ^AbYAZMpm'U]-h`PQ$UAM>i&)HiA6gE;jYPBDu?=?N+1.Q.t.@K'p=D#SDQGQ*!h +JGtE)NrG7ASc5D`WrB='\Gj5A`W"$Zci2Jog&Bk-j8S6@lMg8Onc&.Zp\t!fqYpHmro=%=s8N#srVlZm +q#:$eoD\:Zn,DSNk5OB>hYu7.ec*noao96X^AbYAZMpm'U]-h`PQ$UAM#Mr(HiA3fE;jYPBDu?=?N+1. +Q.t.@K'p= +C]8;PG5cjfJGtB(NrG7ASc5D`WrB='\Gj5A`;[pYci2Jog&Bk-ir8*>l2L/Nnc&.Zp\t!fqYpHmro=%= +s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>hYu7.ec*noao96X^&GM?ZMpj&UAg\^P5^I?L]2i'HiA0eE;jYP +BDu?=?N+1.^95a"D%6Ma%J6iKLQ7K,dU8cDB^:&[rf;Z9\q>Q.t. +@K'p=C]8;PFoH^dJGt?'NW,+?SGo8^WW'4&\Gj2@`;[pYci2Jog&Bk-ir8*>l2L,MnG`%Yp\t!fqYpHm +ro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2Ua%UAg\^P5^I?L]2f&H2_pb +DuOMNBDu<5hh,@/agl2L,MnG`%Y +p\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC== +LAl]%H2_pbDuOMNBDu<5hh,@/ag +l2L,MnG`%Yp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$ +UAg\^OoC==LAl]%H2_pbDuOMNBDu<5hh,@/agl2L,MnG`%Yp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM? +Z2U^$UAg\^OoC==LAl]%H2_pbDuOMNBDu<_rosFMrp]pYrqHEfrqcWmrr1sXj8],Xrr)imrqQKerq$-ZrpKdMroX4>rn[S+rm^qn +rlP/Xrk8ZF5k5OWEmf)_ToD\L`q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiE +ir7d5f`'D"ci2&c`;[IL\,NZ3W;`OjSGnZMN;eS2J,X`mFT-4XCAqlF@/aI2>5hP$;uTSl:&[ca8cD3Y +7K,^P6i04L6*`b,5__Q'5lj;=qEk0Kr^?`Sr^QlYr_*5br_NMkr`/r$ra#M2rb)4GrbqdXrd+QnreCE2 +rfR2Mrh9=iriuI3rk8rr2oqrqcWhrqHE` +rpg!UrosFEro3q5rn.5"rm1Scrl"fLrjVm3ri#gjrg`tMrf$i2rdXomrcJ-XrbDFFra>_2r`];$r_rel +r_%JNs3#qa19Lr^?`Sr^QlYr_*5br_NMkr`/r$ra#M2rb)4GrbqdXrd+Qn +reCE2rfR2Mrh9=iriuI3rk8rr2oqrqcWh +rqHE`rpg!UrosFEro3q5rn.5"rm1Scrl"fLrjVm3ri#gjrg`tMrf$i2rdXomrcJ-XrbDFFra>_2r`];$ +r_relr_%JNs3#qa19Lr^?`Sr^QlYr_*5br_NMkr`/r$ra#M2rb)4GrbqdX +rd+QnreCE2rfR2Mrh9=iriuI3rk8_2 +r`];$r_relr_%JNs3#qa19Lr^?`Sr^QlYr_*5br_NMkr`/r$ra#M2rb)4G +rbqdXrd+QnreCE2rfR2Mrh9=iriuI3rk8_2r`];$r_relr_%JNs3#qa19Lr^?`Sr^QlYr_*5br_NMkr`/r$ra#M2 +rb)4GrbqdXrd+QnreCE2rfR2Mrh9=iriuI3rk8_2r`];$r_i_kr_3;`r^m)Yr^?NKr^*\OJO"cO!'pEJqa:?Or^QlYr_*5ar_NMkr`/r$r`oG1 +rau.Erbh^Wrd+QnreCE2rfR2Mrh9=iriuI3rk8%JNs3#pd4sIr^HfUr^m)^r_3;er_i_pr`];+ +ra>_:rb;@LrcJ-crdXp%rf$i=rg`t]ri#h$rjVm?rl"fXrm(Mmrn7;,ro*k_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp% +rf$i_:rb;@L +rcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i_:rb;@LrcJ-crdXp%rf$i%JNs3#pd4sIr^HfUr^m)^r_3;er_i_pr`];+ra>_:rb;@LrcJ-crdXp%rf$i=rg`t]ri#h$ +rjVm?rl"fXrm(Mmrn7;,ro*k%JNs3#pd4sJr^HfUr^m)^r__;rbDFNrcJ-crdXp%rf$i=rg`t] +ri#h$rjVm?rl"fYrm1Snrn7;,ro*k_2r`];$r_relr_%JNs3#qa19Lr^?`Sr^QlYr_*5br_NMkr`/r$ra#M2rb)4GrbqdXrd+QnreCE2 +rfR2Mrh9=iriuI3rk8_2r`];$r_rel +r_%JNs3#qa19Lr^?`Sr^QlYr_*5br_NMkr`/r$ra#M2rb)4GrbqdXrd+Qn +reCE2rfR2Mrh9=iriuI3rk8_2r`];$ +r_relr_%JNs3#qa19Lr^?`Sr^QlYr_*5br_NMkr`/r$ra#M2rb)4GrbqdX +rd+QnreCE2rfR2Mrh9=iriuI3rk8_2 +r`];$r_relr_%JNs3#qa19Lr^?`Sr^QlYr_*5br_NMkr`/r$ra#M2rb)4G +rbqdXrd+QnreCE2rfR2Mrh9=iriuI3rk8 +rr2oqrqcWhrqHE`rpg!UrosFEro3q5rn.5"rm1Scrl"fLrjVm3ri#gjrg`tMrf$i2rdXomrcJ-XrbDFF +ra>_2r`];$r_relr_5hh,@/agl2L,MnG`%Yp\t!f +qYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC==LAl]% +H2_pbDuOMNBDu<_rosFM +rp]pYrqHEfrqcWmrr1sXj8],Xrr)imrqQKerq$-ZrpKdMroX4>rn[S+rm^qnrlP/Xrk8ZF5k5OWEmf)_ToD\L`q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7d5f`'D"ci2&c`;[IL +\,NZ3W;`OjSGnZMN;eS2J,X`mFT-4XCAqlF@/aI2>5hP$;uTSl:&[ca8cD3Y7K,^P6hNdR5_21W5l!bC +6N0@O7/fXS7fH!Y9E%Zb:]=8kZF5k5OWEmf)_ToD\L`q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7d5f`'D"ci2&c +`;[IL\,NZ3WW&XkSGn]NNW+_4J,X`mFT-4XCAqlF@/aI2>5hP$;uTSl:&[ca8cD3Y7K,^P6hNeC6+]C5 +5`@u-62ZF5k5OWEmf)_ToD\L`q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7d5 +f`'D"ci2&c`;[IL\,NZ3WW&XkSGn]NNW+_4J,X`mFT-4XCAqlF@/aI2>5hP$;uTSl:&[ca8cD3Y7K,^P +6h3SC6+]C55`\2062!YA6N0@O7/fXS7fH!Y9E%Zb:]=8kZF5k5OWEmf)_ToD\L`q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tU +l2KiEir7g6gA]Y%ci2&c`;[IL\,N]4WW&XkSGn]NNW+_4JGsopFoH@ZC]7uG@K'U4>Q.Y%;uTSl:&[ca +8cD3Y7K,^P6gR.R5_21`5k%,:6N0@O7/fXS7fH!Y9E%Zb:]=8kU6irVlfVs5X.Yrr2lqqYp9hp\sd` +nc%tUlMfuGj8Rp7gA]Y%ci2)d`W!RM\,N]4WW&XkSGn]NNW+b5JGsopFoH@ZC]7uG@K'U4>Q.Y%;uTSl +:&[ca8cD3Y7K,^P6gR/76,u6A5at%661@5;6N0@O7/fXS7fH!Y9E%Zb:]=8kU6irVlfVs5X.Yrr2lq +qYp9hp\sd`nc&"VlMfuGj8Rp7gA]Y%ci2)d`W!UN\Gif5WrAdmSc4iPNrFn7JGsopGQ)R\C]7uG@K'U4 +>Q.Y%;uTVm:B!oc8cD3Y7K,^P6fUMR5_21i5j(K16N0@O7/fXS7fH!Y9E%]c;#XDmiP7PQ%-PU].:mZMqB5^Ac+Nb5T`dec+8$hYuR7kPjcGn,DkVoD\L`q>U6irVlfVs5X.Y +rr2lqqYp9hp\sganc&"VlMfuGj8Rs8gA]Y%d/M5f`W!XO\c/r7X8\poT)OrQO8b%9Jc:)sGQ)R\D#S,I +@K'U4>Q.\&;uTVm:B!oc8cD6Z7fGjR6d\6R5_22&5h/3t6N0@O7K,dU8,c*Z9E%]c;#XGn&?N+C4 +B`;fHE;k(\I/\]rMZ/Y8PQ%0QV#IFoZi7N7^])4Ob5Tceec+;%hu;[8kPjcGn,DnWo`"Uaq>U6irVlfV +s5X.Yrr2lqqYp9hp\sganc&"VlMfuGj8Rs8gA]\&d/M5f`rlIe'<;obo:]=&e9)_B\8,c!W7/fR$6J4YU6*3H'6N'7M6iKLQ7fGpW8H)6\9`@ie;>sPo +U6irVlfVs5X.Yrr2lqqYp9hp\sgao)A+Wm/H5JjSn*:g]#h(d/M8gaSs!S])K)9XT#*rTDk/UOT(1; +K)U2tH2_g_DZ4DMA,]m8?2dq)dRq[/R]:_#DFSbl5ugfDaP(i;Vg:kl0rJn,DnW +o`"Uaq>U6irVlfVs5X.Yrr2lqqu6Ejp\sganc&"Vli-,IjSn*:h#>t*d/M8ga8WmR]Df5;Y5Y?uTDk2V +OoC@>K`6K#HiA*cE;j\QAH$$:?N++,=8l.t;#X5h9`@W_8H)-Y7fGjL7(#C56]"2+7/]OQ7K,dU8,c'Y +8cDE_:&[ug;uThs=oMb,@K'g:D#SAPF8gOcJGt6$NW,+?QiU9jrVlfVs5X.Yrr2lqqu6Hkq#9pbo)A+Wm/H8Kk5O<t*dJhDiao9*T]Df8< +YPtL"U&LGYPQ$UAL&QZ&I/\6eE;j_RAc?0sAj:&[fb9)_B\8,buW7=dmY7K#[S7fGpW +8H)3[9E%Zb:]=5j5hn.@fBsnPSFT-[eJGt9%NrG4@R/WfYW;a""[f3r=_#DITc2Q,if`'\* +i;VmU9jrVlfVs5X.Yrr2lqqu6Hkq#9pbo)A.Xm/H8Kk5O<gU +8,c'Y8cDB^:&[rf;>sJm=8lA%>lJ.1AH$6@DuOeVFoHjhK)UQ)O8bCCRf9&\WW'.$\,O&>_>_UVcMl8k +g&Bh,i;VmU9jrVlfVs5X.Yrr2lqqu6Hkq#9scoD\7YmJcALkPjH>hYu7.e,I\m +bPoEY^](eCYl:[%V#HqaQN!!FMZ/;.J,X]lFT-4XC]7uGA,]j7>lIq+5he+?iFR7BDu]GDuOkXGlE3lK`6l.OT(UGSc5GaWrB7%\c0>B_u@jYci2Dm +gA]q-iVr$>lMg2MnG`%Yp&=acq>U9jrVlfVs5X.Yrr2lqqu6Hkq#9scoD\7YmJcDMkl0T@hYu:/eGdho +bl5Q[^](kEZ2Uj(VZ*1dR/W9JN;eS2JGsloG5cO]D#S,IAc?*:?2e(-=8l5!;uTYn;#X5h9^,3a8qBTt +9(5LP9D_E^:B"&g;>sMnQ.t.@/aa:B`;iIErL7]HN&HoLAm/2P5^jJT)PVdXT#L(]DfVF`;\![ +d/MPog]$+0ir80@lMg2MnG`%Yp&=acq>U9jrVlfVs5X.Yrr2lqqu6Hkq>U'doD\7Ymf)POkl0T@hu;F1 +ec*tqc2P]]_>_+HZi7-,VuE@gRf8QNNrFk6K)U/sGlDd`DuOMNBDuB>@/aL3=oMM%sAj;#X8i +:@_,k9S#lr9_M0\:&@]b;#X8i;>sJmU6iqu6Qnro=%=s8N#srVl`oqYpZ")df.Sla8X!U^](Y?Yl:^&T`1J\Qi<*GMuJJ1JGsrqGlD^^DuOSPB)Z<>?iFC2>Q.e) +=8l8"<;TPl:]=1o:Ou;o:B=9g!)WYjr_WSkr`&ksr`B)%r`fA.ra5Y7rau.Grbh^TrcnEhrdb!&repc; +rg3VSrh07krilC0rkJHMrl>#armUktrn[S3ro="Brp9XQrpg![rq??erql]mrr)iqj8\0>rr2oqrqucm +rqcWfrq-3[rpTjQrp'LDro*k5rn%/!rm1Scrl"fNrj_s5riQ0prh'1YrfR2>re^W+rdOimrcJ-Zrbh^K +rau.?ra>_3r`oG*r`K/#pf+=mJPq%s!)iSkr`9#"r`T5*ra,S3rac"?rb2:Krc.pZrd+Qmrdt-+rf-o> +rgNhXrhKIprj)O5rkJHNrlP/crmUkurndY5roF(Drp9XQrpg![rq??frql]mrr)iqj8\0>rr2oqrqucm +rqcWgrq69]rp]pSrp'LEro="8rn7;#rm:Yerl+lPrji$7ricCrf$i0rdk&trc\9^rbqdQ +rb;@DraPk7ra5Y0r`];(qcEbtnl<;$JQ.S-p/M)mqc<\tr`T5)r`oG0raGe8rau.Drb_XQrcA'^rdOit +re190rf@&Brgj%^rh]Utrj;[8rkSNPrlY5ermh#$rnm_7roO.Erp9XRrpp']rqHEgrql]mrr)iqj8\'; +rr2oprql]krqHEcrq$-YrpB^NroX4>rnm_/rmq(srltG`rkn`KrjMg1ri5snrh'1Wrfd>Bre^W.rdXop +rcnEarc%jSrbVRHral(=ra>_4ra,S0r`o5&oif(4JQ\.=nlc&u>Q%e*>lJ%.?N+=2@/a[8Ac??AD#S;N +E;jtYGlE*iJ,Y-#M>iS8Pl@'LTDkYcWrB7%\,O)?_u@aVc2Q/jfDaM'hu;[8k5O]GmJcVSoD\F^p\t$g +qu6Njro=%:s8N#sr;QTmqYp6gpAX^`nG_kTm/H2IjSn*:h#>t*eGdbmb5TBZ^Ab\BZi7'*VuEChS,S`Q +OoC@>M#N&+J,XfoGlDd`EW0nUCAqoGBDuH@@fBg8@/aO1?LhC9>_-.C>kMD#?N"40?iFI4@K'd9AH$6@ +C&VlHDuObUF8gF`HiANoKDp]+NW,(>QN!BQU&LqgXT#R*\Gj5A`W"!YcMl>mf`'\*i;Vg:kPjiImf)_T +o`"O_p\t$gqu6Njro=%:s8N#srVl`oqYp6gpAX^`nc&"Vm/H5Jjo46Z+,f)F%qbl5]__#CtF[JmB/ +WW&[lTDk8XPl?dDMuJM2Jc:/uI/\ +rb)4Grb_XQrc.pZrc\9grdOitreLK2rfI,DrgNhYrhKIlric=/rk&0FrlG)_rm:Yqrn7;,ro*kNrgs+_ri5t"riuI6rkABKrlb;drmC_u +rnRM2ro="?rosFMrp]pXrq69brqQKirqucoqu5XUi;`fUrr)iorql]irqHEcrpp'XrpKdNroa:Bro!e3 +rn@A#rm:Yhrl+lQrk/6;rilC'rhTOergs+UrfmDDrf$i4re:?%rdFcmrce?brcJ-Zrc%jTqec=KokXPA +]4lh1O(nT.p1jYDqeZ7KrbqdTrc.pZrcS3ard4Wnrdb!%reUQ4rfI,Drg3VUrh9=eriH+'rj;[;rkSNP +rltGhrmUl#rn[S3roO.Crp'LNrp]pXrq??crqQKirqucoqu5XUi;`fUrr)iorql]jrqQKerq$-[rpTjQ +rosFEro*k5rnIG&rmLelrl>#VrkJHBrj;[.ri#glrh07\rg<\KrfI,Jrg`t\rhTOlric=-rj_sB +rkn`Urm1Slrmh#&rndY5roX4Drp9XQrpg!ZrqHEerqZQjrqucoqu5XUh>dBNrquclrqQKerq-3\rpTjS +rp0RIro=":rndY,rm^qorlkA^rkeZJrj_s6ric=$rhoagrgj%XrfmDErf@&:re^W/rdt-"rdXoqrd=]l +qg&0crc\0][<-tAM0/`>r,r'`qfr*crd4WlrdFcqrdk'#reCE.repc:rf[8FrgWnYrh07gri?%%rj2U6 +rk8#^rm:Yprn.5,ro!e9roj@HrpKdSrpp'\rqHEfrqcNirr([Qh>dKRrr)iorqcWirqQKbrq$-Z +rpTjProsFDro3q7rn@A'rmUkmrlY5ZrkSNGrj_s4riZ7$rhTOerh'1Xrg3VJrfI,=repc3reCE*rdt-# +rdXorrdFcnqg5VpJU2rp!IK.nHi&3iIf=irJc:9#K`6`*M#N>3NW,%=PQ$mIRJriXUAgtfX8]:$Z2V94 +]DfVF`W"$Zci2DmfDaM'hu;X7jo4NDm/HJQnc&.Zo`"Xbq>U6ir;QZorn[V1s8N#prVlZmq>U0gp&=U_ +nc&%WmJcGNk5OE?i;VR3g&BS%d/M8gao90V^](nF[/R?0YPtI!V>d1fTDk>ZRJrELP5^OANrFt9M>i8/ +L&Qc&Jbsu$It<*(J,FinJGt-!K`6])LAm&/MuJb9O8b:@PQ%!LSGo/[U&LkeVuEn!ZMq61]`,\F_Z%[V +c2Q)hf)FA%h>Z@3jSn<@li-;NnG_tWoD\F^q#:*gqYpHjrn[V1s8N#prVl]nqYpZ.-eGdkpcMkoa`;[ON]`,G?Zi73.Xo>@"U]-tdTDkA[RJrQPPl?jCOT(:>NVeY5MZ/G/ +LUDkfL5CZaL\ur.M#3)/MuJ_8Nr+q;PQ$gGQi^])1NaSsKadJhYp +gA]n,i;Vd9k5OTDmJcSRnG`(Zp&=^bq>U6iqu6Qkrn[V1s8N#prVl`oqu6Hkq#:!do`"F\nG_kTl2KoG +k5O?=hu;F1f)F.tci2/faSs-W_#D"G\c/r7Z2Up*W;`[nV#I%dT)P8ZRf8]RQN!-JPQ$aEOT(=";O8b7?P5^[EPl@!JR/WQRSGo,ZT`1bdVZ*OnY5Y[)Zi7N7]`,_G`;[jWbl5rfe,Iqt +h#?10iVr!=kPj`Fmf)_To)A:\pAXjdqYpBkr;QZlrn[V1s8N#prVl`oqu6Hkq#:!dp&=O]nc&"Vm/H;L +kl0WAiVqa6g&BS%df.Vmbl5]__Z%=L^&GM?[JmH1YPtX&WrAgnUALV_T)P8ZRf8]RQi<9LPk^IAP5(0R +OF`LVOSFt8Oo^c1rKI5Frg!JLrgEbSrg`tYqk3q`rhTOnriH+&riuI0rjVm?rkSNMrlG)^rm:Ymrmq)% +rnm_6ro="ArosFKrpTjVrpp']rqHEerqcWkrqucoqu5FOgAh0Oqu-Nlrql]jrqQKerq-3\qsXONrp0RG +ro="9rndY/rn.4urm:YirlG)XrkeZMrk8d@kWrB+!YPtd*Zi7B3])KAA_#D4M`r='YcMl2idf.nugA]t. +i;Vg:k5O]GmJHAOo)A:\p\sseq>U9jr;6Hlrn@D(s8N#prVl`oqYp_1J])K5=\,N`5Z2Us+Xo>F$X8]*tW;`^lV>d:fU].!qTn/noU&1Pb +US@gaqkX4frhoaori,mtriH+$ric=+rj2U5rji$>rkABIrkn`UrlY5brm:Yormq)&rn[S3roF(@roj@J +rpB^Srpg!Zrq69crqZQiqu$Hlqu5=LfDkjLqu-NlrqcWirqQKdrq-3]rpg!WrpKdNroj@Dro3q8rndY- +rn%/!rm:YirlkA^rl+lSrkSNIrk8#^rm(Mirm^qurn7;-ro!e8roX4Drp'LNrpTjVrq$-^rq??d +rqZQiqu$Hlqu5=LfDkjLq#13hrqcWirqHEcrq69]rp]pUrpB^NrosFEro="9rnm_1rn@A&rmUknrm1Sf +rlb;\rl"fRrkSNJrkABErjr*>rjVm8rjDa4qm6('pp%Q;JZt>frltGbrlG)Zrl+lTrknWLqnW3Grk@X1`4UZ6 +Q+ZLt!58BGrkJ6Drk\TOrl"fTrl>#[rlY5brm(DfrmUksrn.5(rndY3ro*k9roX4Drp'LNrpTjUrpp'[ +rq-3arqQKgrqcWkrqucoqu5+FeGoOIq#13irql]krqZQgrqHEcrq-3\rp]pUrpB^Orp'LGroO.>ro!e5 +rndY/rn@A(rmh"trmC_lqp58drlkAbrlY5]prEBRqo.:-fu&BYXi&c/!QE"X`V[[Pa8X3[b5TT`bl5la +ci2;jdJhVoec+5#g&Bb*hYuF3i;Vd9jo4HBlMg,KmJcSRnc&+Yo`"O_p\sseq>U6iqu6NjrVQTDs4%)D +rqlZnr;QQiq>U0gpAXaaoD\=XnG_kTm/H8Kkl0`DjSn09hu;F1g]#n*f`'M%eGI_odJhMlci25hc25`^ +bOs$9ak=adaK?+/ir8$!7:_kpsB#frmLepqpbVrrn%/%rnIG- +rndY3ro!e7ro=">roX4DrosFJrpTjUrpg!Yrq$-]rqHHbO8neM +dJ^BKJc(/u!WDuMrTsNHs,[3!ric9OrJ(:Krl"f!s+146s-iq %APLeod +EI +76 0 0 76 202 334 cm +BI +/Width 228 +/Height 228 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$ +JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#O8je1oDX=?Jcs:Ln,@n: +oDO7=Jc3jln,AgVXoJ(ncMa"*Jc()slho0/o)>Zh]`7d+n,;qWp%s=:q>,[=Jbmaiqtos^n,<%\[f=#? +n,;qWp&"O\rqV-?r:kjp$;VDrpKdSqsaUUrq$-]q"F^]rqQKgqtg*qq_/,ro!e7ro="=roO.B +roj@Grp0RMrpKdSrp]pXrq$-]rq??crqQKgqtgro3q8rnm_3rnRM,rn.5$rmh"trmUbmqp=o[T[&,6J^4,;p!<#ZrlP/^rlb;brm(Mh +rm:YlrmUkrrn%/&rnIG.rnm_6roF(Aroj@IrpB^QrpTjVrq$-^rqHEerqZQirql]mqu-NngAg+2qu6Tn +rqucmrqcWhrqHEbrq-3]rpg!WrpKdOroj@EroF(;rnm_2rn7;&rm^qqrm:YjrlkAbrlP/[rl4rUrkn`P +qnW*Do"Cp5J\6QHrOhg:rkJ-ArkeZPrl"fUrlG)]rlkAfrm:YlrmUksrn.5*rndY4ro="=roa:Grp9XQ +rp]pWrq$-]rq69brqZQirql]mrr)iqgAg+2q#13irql]jrqQKerq69^rpp'XrpB^Nrp'LGroO.#Vrkn`OrkJHGrk/$pr +SZ%+ri5suriH+$riZ7(rilC-rj2U3rj_s=rk8#Vrk\TJrk&0>rjMg4rilC*riH+"ri5srrhoamqkX4dpnFXZJY@XgrLs"\qkO.d +rhf[mri#grri?%#rilC.rj;[6rjr*ArkJHLrl+lXrlkAermUkurn@A.ro*k:roX4Erp0ROrp]pXrq69b +rqQKgrql]mrr)`ni;_j;rr2oqrqucmrqZQgrqHEarq$-YrpKdProsFEro="8rnRM,rmq(rrm(Mdrl+lR +rkJHFrjr*:rj2U/riZ7%ri5sprhTOgrh9=aqk*bVqjaFNJX_4[!1WYOrgj%\qk3h[rhKIhrhoarriQ1' +rj)O1rjMgroj@IrpKdTrpp']rqHEerqcWkrr)`ni;_j;qu-NlrqcWhrqHEb +rpp'XrpTjProsFEro*k6rnRM*rmh"prlkA_rkn`Krjr*;riuI*ri?$rrh]Ugrh'1\rgWnSrg3VLrf[8B +plGE6rf!V1JW#);!/p`5qi1K6rfI,ArfmDIrg3VQrg`tZrh9=drhf[priQ1(rjDa8rk/6Irl+lZrm(Mj +rmq)&rn[S3roO.Brp'LNrp]pWrq-3_rqHEfrqlKhi;_j;rr)iorql]krqQKerq-3\rp]pTrp'LHroO.< +rndY.rmh"rrm(Mbrl+lOrjr*Drf@&rf[8Grg<\Urh07brhoasric=-rji$Arkn`WrltGirmq)%rn[S4roF(Brp0RNrp]pY +rq-3arqZQjrquZli;_j;rr)iorql]jrqQKdrq$-YrpKdOroj@Dro*k4rn@A&rmC_jrlP/WrkJHCrj2U- +ri5sorhBC`rgEbOrfd>Brf-o7reLK,re(3#rdXorrdFcnrd1;`JU)flqK`'erd=]nrdOirrdb!#re19* +re^W4rf6u@rg!JMrgj%]rhTOmriH+(rjVm=rk\TSrlb;frmh##rnRM2ro3q?rp'LLrpTjWrq-3arqQKh +rquZli;_j;rr)iorql]jrqHEbrq$-YrpKdOroa:Arnm_1rn@A$rm:Ygrl>#Srk8<>riuI)rhoahrgs+Y +rg!JGrf@&:re^W/rdt-"rdXoprd4WjrcnEdrcOlUJTQHbqK2^Zrc\9crd+Qjrd=]prdb!!re:?,reg]8 +rfR2ErgNhWrh07fri,n#rj;[7rkJHOrlP/brmLerrnIG/ro*k=rp'LLrpTjWrq-3`rqQKhrquZli;_j; +rr)iorql]jrqHEbrpp'WrpB^LroX4@ro!e1rn%.trltGbrl"fMrji$6riH*trhKIargWnPrfR2?repc0 +re(3#rdFcmrcnEcrcJ-[pi-4NUMbX#JSt=%rbq[Qrc8!ZrcS3ard"KjrdXoure19.rf-o=rfmDKrgj%_ +rh]UorilC0rk/6Irl+l[rm:Yorn7;-ro*kArepc2rdt-"rd=]jrce?` +rcA'Yrbh^PrbVRLTPB$mJSP$rrbMLLrb_XPrbqdVrcA']rcnEhrdFcsreCE/rf-o?rg!JNrh'1bri#h! +rj)O7rkSNOrlY5drmUl!rn[S3roF(Brp'LMrp]pXrq69crqZQjrqucoi;_j;rr)iorql]irq??`rpg!U +rp9XJroO.=rn[S,rmh"orlP/ZrkSNErjDa.ri#glrgs+Wrg!JDrepc3re(3"rdFckrcS3]rc%jTrb_XM +rbDFHph-I8JRsCDrFPk=rb2:GrbMLLrbh^Rrc.pZrcnEgrdOiure:?/rf6u?rg3VSrh07friH+(rj_sA +rkeZUrm(Mjrn%/(rndY7roX4ErpB^Srpp']rqHEerql]mrr(dTj8],WrqucmrqQKcrq$-ZrpB^Nroj@B +ro*k3rn%.urm1Sbrl"fNrjVm4ri?$orh07Zrg!JFrepc0rdt-!rd"KdrcA'XrbqdPrb;@Eral(>raYq9 +TO<=YJRJ=^qdKJ6rac"?rb2:Hrb_XRrcA']rcnEkrdk'%reg]7rfd>Krg`t^ri,n"rjDa=rk\TRrltGi +rmh#%rn[S5roX4Erp9XRrpp'\rqHEerql]mrr(dTj8],WrquclrqHEarq$-ZrpB^Mroa:?rnm_0rmh"r +rltG_rkn`KrjMg2ri,mkrgs+Vrfd>BreUQ,rdauprc\9_rc.pTrbVRJrau.?raPk7ra5Y2qd$((JR!b2 +rET>-ra,S2ra>_7raYq=rb2:Grb_XRrc8!\rd+Qlrdt-(reg];rg*PPrh07griH++rk&0Erl+l[rm1Sn +rn@A-ro*k=roj@IrpTjWrq-3arqQKirqucoi;_j;rr)iorqcWgrq-3]rpg!Trp'LFro*k5rn@A%rmLei +rl4rSrk/6_4ra#M.r`f8'VHJIQJQ_qS +r`];*r`oG.ra5Y4raGe;rb)4Frb_XQrc8!^rd+Qnre:?.rf6uBrg<\Wrh]Uorj)O6rkABMrlY5brmUl! +rnRM2roO.Brp0RPrpp'\rqHEerql]mrr(dTj8],Wrql]jrqHEarq$-YrpB^MroO._3r`];'r`B)"qc0LmJQ.2"rD`br +r`9#"r`K/'r`fA/ra>_7ral(CrbVRQrcJ-`rdFctre:?/rfR2Grg`t_ri#h#rjVm=rkeZUrlkAirn%/( +ro!e:roX4GrpKdUrq-3arqQKhrqucoi;_j;rr)inrqZQfrq-3\rpTjQrp'LEro*k5rn7;"rm1Scrkn`M +rj_s4riH*prgj%Urf[8_8rau.Drb_XTrcS3drdXp"reUQ8rfmDNrh9=griZ7.rjr*Frl>#]rmC_srn@A/ro="? +rp0ROrpg![rqHEerqcWlrr(dTj8],Wrql]jrqHEarpp'Wrp9XLroO.Mrh07iriuI2rk/6Jrl>#`rmUkurn[S5roO.DrpB^Rrq$-_rqQKhrqucoi;_j; +rr)inrqZQfrq-3\rpKdNroa:@rn[S-rmh"prlkA\rkABBrj2U(rh]Uarg!JEreUQ*rdFchrc.pTrb2:@ +ra5Y/r`B)!r_i_kr_lJ.1B)ZNDDZ4_V +GQ*'jL&Qu/OoCdJT)PYeYPts/]`,hJa8XB`e,Ituh#?=4jo4NDmJcSRoD\I_q#:-hr;QZQs69R\rr2lq +qu6Ejp\sgao)A(VlMfuGj8Rm6gA]Y%d/M8g`W!UN\c/o6WrAjoSGncPNrFh5JGsrqFoH@ZD#S)H@K'U4 +>5hS%;uTSl9`@]a8cD6Z7f,UQ6iKEO5_21Q5QO2rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau._:rb2:JrcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TR +rltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BDqu6Tnrql]jrqHEarpp'Vrp'LGro="6rn@A% +rm:Ygrl+lNrji$6ri5sorg`tPrf6u5rdauqrcS3ZrbVRHraGe4r`];%r_relr_3;ar^m)Zr^QcQr^6ZO +WBc#"K0TH(6N'7J6iKLQ7fGsX9)_N`:]=5jQ/"/Ac?ECDZ4_VGQ*'jL&Qu/OoCdJT)PYeYPts/ +]`,hJa8XB`e,Ituh#?=4jo4NDmJcSRoD\I_q#:-hr;QZoro=%Cs82fprVl]nq>U-fo`"F\mf)MNkPjN@ +h>Z.-ec*qpbl5T\^Ab\BZMpm'V>d"aPl?^BL]2i'I/\9fE;j\QBDu?=?N+.-#`rmUkurnRM4roO.DrpB^Rrq$-_rqQKhrqucorr1sXj8],Wrql]jrqHEarpp'Vrp'LG +ro="6rn@A%rm:Ygrl+lNrji$6ri5sorg`tPrf6u5rdauqrcS3[rb_XIraGe4r`];%r`&knr__;rb;@MrcA'_rdOj#reg];rgEbWrhob! +rjDa#`rmUkurnRM4roO.DrpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpKdNroa:@rn[S- +rmq(qrlkA\rkABBrj2U(rh]Uarg!JEre^W+rdFcirc.pTrb;@BraGe2r`T5$r_i_lr_EGcr^m)[r^WVM +JOP,YqF1BRr^d#[r_*5ar_NMjr_retr`];,raPk>rbMLPrc\9erdb!'repc=rgEbXri#h$rjMg=rkn`U +rm(Mmrn.5*ro3q=rosFLrpTjXrq??drqcWlrr(dTj8],Wrql]jrqHEarpp'Vrp'LGro="7rnIG'rm:Yg +rl+lNrji$7ri?$qrgj%SrfR2;re(3"rcnE`rbqdNral(_rCHoZ +r_!/_r_3;er_WSlr`/r!r`];-raGe;rbDFLrc8!_rd=]tre^W7rg!JRrhBClriuI2rkABMrlG)brm^r" +rn[S5roO.ErpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpKdOrosFCro!e2rmq(rrltG_rkSNG +rjDa.ri,mirgEbMrf$i2rdk&qrcS3\rb_XKrau.rbMLNrcA'ardOj"reg]8rg*PSrhBCmrj)O4rkABNrlY5ermh##rndY6 +roO.ErpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpTjProsFDro!e2rn%.srm(MarkeZJrjMg/ +ri,mjrgEbMrf6u5re(2trce?_rbqdMrau.=ra5Y1r`T5$r`&kpr_WJfqb_8 +rau.Drb_XTrcS3drdXp"re^W8rfd>Nrh9=gric=/rjr*Frl>#]rmC_rrn7;.ro="?rp0ROrpg![rqHEe +rqcWlrr(dTj8],Wrql]jrqHEarq$-YrpB^MroO._3r`];'r`B)"qc0LmJQ.2"rD`brr`9#"r`K/'r`fA/ra>_7ral(C +rbVRQrcJ-`rdFctre:?/rfR2Grg`t_ri#h#rjVm=rkeZUrlkAirn%/(ro!e:roX4GrpKdUrq-3arqQKh +rqucoi;_j;rr)iorqcWgrq-3]rpg!Trp'LFro*k5rn@A%rmLeirl4rSrk/6_4ra#M.r`f8'VHJIQJQ_qSr`];*r`oG.ra5Y4raGe;rb)4Frb_XQ +rc8!^rd+Qnre:?.rf6uBrg<\Wrh]Uorj)O6rkABMrlY5brmUl!rnRM2roO.Brp0RPrpp'\rqHEerql]m +rr(dTj8],WrqucmrqQKcrq$-ZrpB^Mroa:@ro!e1rmh"rrltG_rkn`KrjMg2ri,mlrh'1Wrf[8@re^W- +rdk&rrcnEbrc%jRrbMLHrau.?raPk7ra5Y2qd$((JR!b2rET>-ra,S2ra>_7raYq=rb)4ErbVRPrc.p\ +rd+Qlrdt-)repc;rg*PPrh9=hri?%)rjr*Drl+l[rm1Snrn@A-ro3q>rosFKrp]pXrq-3arqQKirquco +i;_j;rr)iorql]irq69^rpg!Trp0RIroF(;rnRM)rmUkmrlG)WrkJHArj)O(rhTOdrgNhOrfR2rosFKrp]pXrq-3arqQKirqucoi;_j;rr)io +rql]irq??`rpg!Urp9XJroO.=rn[S,rmh"orlP/ZrkSNErjDa.ri#glrgs+Wrg!JDrepc3re(3"rdFck +rcS3]rc%jTrb_XMrbDFHph-I8JRsCDrFPk=rb2:GrbMLLrbh^Rrc.pZrcnEgrdOiure:?/rf6u?rg3VS +rh07friH+(rj_sArkeZUrm(Mjrn%/(rndY7roX4ErpB^Srpp']rqHEerql]mrr(dTj8],WrqucmrqQKe +rq69]rpTjRroj@Cro3q6rn7;%rmC_grl>#Urk/6?rilC%rhf[frg`tTrf[8?reg]1rdt-"rd=]jrce?a +rc8!WrbqdQrbVRLqeE!BJSB[LrFu7GrbMLLrb_XQrc%jVrcJ-_rcnEhrdFcsreCE/rf$i=rfmDNrgs+` +ri#h!rj)O7rk\TQrlP/crmUl!rn[S3roF(ArosFMrpg!Zrq??crqQKirqucoi;_j;rr)iorql]jrqHEb +rpp'WrpB^LroX4@ro!e1rn%.trltGbrl"fMrji$6riH*trhKIargWnPrfR2?repc0re(3#rdFcmrcnEc +rcJ-[pi-4NUMbX#JSt=%rbq[Qrc8!ZrcS3ard"KjrdXoure19.rf-o=rfmDKrgj%_rh]UorilC0rk/6I +rl+l[rm:Yorn7;-ro*k#\rm1Smrn%/)ro!e8roa:G +rpB^Srq$-]rq??erql]mqu,IQj8],WrqucmrqcWhrqHEarpg!Vrp9XKroX4>rndY/rn%.trm1Serl+lR +rk/6=rj)O+ri,morh9=_rgWnQrfd>Drf@&;repc3re:?(rdt#uqgbGkJU`6#pOE0mrdk'#re(3'reLK/ +repc9rfI,Brg!JMrgj%]rhBCiriH+&rj2U7rk8ErfI,?rf6u;TT"G\JW0Gaqi1T8rf@&?rf[8Erg!JMrgNhUrgs+_rhKIjri5t" +riuI1rj_s?rk\TPrlY5crmC_rrn@A-ro*kEqiRb;JWPGErK.#@qi^i?rfmDKrgEbTrgj%\rh07brh]Ulri?%$riuI0rji$@rkSNO +rl>#_rmC_prn.5+rnm_7roX4Drp0ROrp]pXrq69brqQKhrql]nqu5ORj8],Xrr)iorql]jrqQKerq-3] +rp]pTrp9XKroX4?rnm_1rn@A&rmC_jrlb;[rkeZLrk/6ArjDa3riuI*riH+!rhf[jrhKIdrh0.\qjmVS +URQh(JXZY/opl#Prh'(\qk="arh]Ulri?%#ric=,rj;[5rk&0Drk\TPrlY5brm:Yprn.5*rnm_6roO.C +rp'LMrpTjVrq-3arqQKgrql]mrr)`ni;_j;rr2fnrqucmrqZQfrq-3]rpp'WrpB^Mroj@Dro3q7rn[S+ +rmh"rrm(McrlG)Wrk\TJrjr*=rjMg4rilC*riQ1#ri,[jrh]UirhH$XJY@XgoV)8ZrhTOiqksFlri5t! +riZ7)rj2U3rj_s=rk&0ErkeZRrlP/arm:Yorn%/&rndY5ro="@rosFJrpKdUrq$-]rqHEerqcWkrquco +qu5ORj8],Xqu-Nlrql]jrqHEbrq-3\rp]pTrp0RIroa:Aro*k5rnIG(rmh"prm(MerlG)Xrkn`NrkABE +rji$:rj;[1rilC*riZ7&riH+"ql63cJZ+-uoVhbhri?%"riQ1&ric=*rj)O0rjDa8rjr*BrkJHJrkn`T +rlP/arm1Skrmq)&rn[S3ro=">roj@IrpB^Srpp'[rq69brqQKhrql]mrr)`ni;_j;rr2fnrqucmrqcWi +rqQKerq-3[rpTjSrp9XMroj@Cro3q7rnRM,rmq(srm:YirlkAarl4rUrkeZLrkABFrk&0?rj_s9rjDa4 +rj2L-rir-#JZs^0qQTk%rj)O0rj;[4rjMg8rji$?rk/6ErkJHJrkn`Srl>#]rltGgrmC_qrn%/(rndY5 +roF(Aroj@IrpB^Rrp]pYrq-3arqQKgrqcWkrqucoqu5ORj8\oRrqucmqtgrj_X1VRD&aJ[YNcqmZI4 +qml^;rk&0BrkABHrkSNMrkn`Rrl>#\rlkAerm:Ymrmh##rn@A.ro*k:roO.Crp'LMrpTjUrpp'[rq-3a +rqZHfrql]mq#94Oi;`]Rrr)iorql]krqQKerq69_rq$-Zrp]pTrp0RIroa:Aro*k6rn[S,rn%/!rmLem +rm1Sfrlb;_rl>#Xrl"fRrkeQJqnM^8VS%JmJ\:rootC@>ot^RDrkn`Rrl4rYrlY5arm1SjrmC_ormh## +rnRM0ro!e9roF(Arp'LLrpTjUrpg!Zrq-3_rqHEfrqcWkrqucorr1XOi;`]Rrr)iorql]krqZQgrqHEb +rq-3\rp]pUrpKdPrp0RIroO.=rnm_2rnRM,rn.5$rmUkorm:Yjqp,2brlb;`rlP/\rl>#Wm)6!CJ]!&V +!5nBGqo/QTrlG)\rlY5`rlkAerm1SjrmC_orm^r!rn7;*rn[S2ro*k;roa:Erp0RNrpKdSrpg!Zrq69b +rqQKgrqcWkrquZlrr1XOi;`]Rrr)iorqlKerqQKerq69^rpg!WrpTjRrp9XKroa:Bro3q8rnm_1rnIG* +rn%/"rm^qrrmC_lrm1JerltGdrlauWprTMVJ]NJb!QiI[anZ@3ir8!;k5OTDlMg2Mn,DhUnc&.Zo`"R`p\ssbqYpBkr;6Hlrn@D1s82fmrVl`oqtp6eq#:$e +o`"I]o)%qUmf)POkl0cEjo4<>ir7m8hu;L3h#?%,f`'J$ec+(te,.Sjd.5MUc@O8lcMGiZch5Zadf._p +eGe"tf)F;#g&Bb*h#?10hu;R5ir8$Ml2KoGkPjQAir7m2hu;I2h#?(-gABS#f`'Ltebdjkdt,u! +df@kieG.SkfDaG%g&B_)g]$"*h>?+/i;V^7j8S-=kPj]ElMg/Lmf)\SnG`"XoD\C]pAXgcq"spbqu6Nm +rVQTGs4[MPrqlZkr;QTmqYp9ep\sjbo`"I]o)A1Yn,D_Rm/H>Ml2KoGkPjTBjS7a3i;VX5h>Z4&g[Egm +fR_\+f_sIkg&'P$h##q)hu;R2ir8!;jo4HBkl0iGli-8MmJcSRnG`"XoD\C]p&=^_q#:-hqtU*grVQTG +s4[MPrqQHkr;QTmqYU*cq#:$bo`"I]nc&%Wn,DbSm/H>Ml2KoGkPjTBjSS!7ipu%,hu;K!h1=C5h=9=u +hYZ4'i;Va8j87p:jo4EAkkjWDli-;Nn,DhRnb_qWo_\C^q#:*gqYpBkr:p6frn%2%s82fjrVl`oqtp6h +q"sg_p&=U_o)A1VnG_nUmJcJLlhfrDkl0cEk4Rg7j7qW)iITs=iUl+(iqqd5jSS*:kPj]El2L#Gm/-2I +n,DhUnc&.Zo`"O_p\Xa\qYpBkr:p6irmCbts7lTjrVQNlqu6Hhq>U0gp\smcp&=U\oD\:ZnG_nRmf)VQ +m/H>GlLO0U0dp\XX_o`"I]o)A1YnFc8LmecDKm/H>GlM0V7k^hrKkk+*6l1jQ@li-8M +mJH>Kn,)VOnc&+YoD\C]p%\:\q#:*dqYpBkr:p6crmCbns7lTgrVQNlqtU$bq"sg_p&"C\oD\=Xnb_hH +muHgemXafime-&AnG_tWo)A7Uo`"OVp\ss_qYU0hr:p6crm(Pks7QBgrVQNiqtp6bq>9sdp\"4Yo_%hN +o)A0>n:C([nEBB=nbD\JoD\CTp&"L_q"X[aqYpBbr;QZcrm(Phs7lTarVQNlqtU$eq>U0^p\sm]p%@tJ +o9]$!nq$B%o(DVFo_A+VpA=U]q"sm^qYU0hr:U$`rlG,Ys7lTarVQNiqssU_q=XOCpRV#/p4;r0p>G]B +q"sm[qXsabr:U$`rkJKPs6osarUTmZqu6HDq47;3pjr54ptGQ@qXXOVr;QZ`rkJKGs7lT^rUp*]qgnV> +qLSKoqU#*9qss[RrV6B#s/l=orm(J,r.4csr9O:.rUTrfs/l= %APLeod +EI +76 0 0 2 202 310 cm +BI +/Width 228 +/Height 6 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$ +JcC<$JcF:#J, +~> %APLeod +EI +76 0 0 74 202 236 cm +BI +/Width 228 +/Height 222 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#O8je1oDX=?Jcs:Ln,@n:oDO7=Jc3jl +n,AgVXoJ(ncMa"*Jc()slho0/o)>Zh]`7d+n,;qWp%s=:q>,[=Jbmaiqtos^n,<%\[f=#?n,;qWp&"O\ +rqV-?r:kjp$;VDrpKdSqsaUUrq$-]q"F^]rqQKgqtg*qq_/,ro!e7ro="=roO.Broj@Grp0RM +rpKdSrp]pXrq$-]rq??crqQKgqtgro3q8rnm_3rnRM,rn.5$rmh"trmUbmqp=o[T[&,6J^4,;p!<#ZrlP/^rlb;brm(Mhrm:YlrmUkr +rn%/&rnIG.rnm_6roF(Aroj@IrpB^QrpTjVrq$-^rqHEerqZQirql]mqu-NngAg+2qu6TnrqucmrqcWh +rqHEbrq-3]rpg!WrpKdOroj@EroF(;rnm_2rn7;&rm^qqrm:YjrlkAbrlP/[rl4rUrkn`PqnW*Do"Cp5 +J\6QHrOhg:rkJ-ArkeZPrl"fUrlG)]rlkAfrm:YlrmUksrn.5*rndY4ro="=roa:Grp9XQrp]pWrq$-] +rq69brqZQirql]mrr)iqgAg+2q#13irql]jrqQKerq69^rpp'XrpB^Nrp'LGroO.#Vrkn`OrkJHGrk/$prSZ%+ +ri5suriH+$riZ7(rilC-rj2U3rj_s=rk8#Vrk\TJrk&0>rjMg4rilC*riH+"ri5srrhoamqkX4dpnFXZJY@XgrLs"\qkO.drhf[mri#gr +ri?%#rilC.rj;[6rjr*ArkJHLrl+lXrlkAermUkurn@A.ro*k:roX4Erp0ROrp]pXrq69brqQKgrql]m +rr)`ni;_j;rr2oqrqucmrqZQgrqHEarq$-YrpKdProsFEro="8rnRM,rmq(rrm(Mdrl+lRrkJHFrjr*: +rj2U/riZ7%ri5sprhTOgrh9=aqk*bVqjaFNJX_4[!1WYOrgj%\qk3h[rhKIhrhoarriQ1'rj)O1rjMg< +rkABJrl"fYrltGhrmh##rnRM1ro*kroj@IrpKdTrpp']rqHEerqcWkrr)`ni;_j;qu-NlrqcWhrqHEbrpp'XrpTjP +rosFEro*k6rnRM*rmh"prlkA_rkn`Krjr*;riuI*ri?$rrh]Ugrh'1\rgWnSrg3VLrf[8BplGE6rf!V1 +JW#);!/p`5qi1K6rfI,ArfmDIrg3VQrg`tZrh9=drhf[priQ1(rjDa8rk/6Irl+lZrm(Mjrmq)&rn[S3 +roO.Brp'LNrp]pWrq-3_rqHEfrqlKhi;_j;rr)iorql]krqQKerq-3\rp]pTrp'LHroO.Drf@&rf[8Grg<\Urh07brhoasric=-rji$Arkn`WrltGirmq)%rn[S4roF(Brp0RNrp]pYrq-3arqZQj +rquZli;_j;rr)iorql]jrqQKdrq$-YrpKdOroj@Dro*k4rn@A&rmC_jrlP/WrkJHCrj2U-ri5sorhBC` +rgEbOrfd>Brf-o7reLK,re(3#rdXorrdFcnrd1;`JU)flqK`'erd=]nrdOirrdb!#re19*re^W4rf6u@ +rg!JMrgj%]rhTOmriH+(rjVm=rk\TSrlb;frmh##rnRM2ro3q?rp'LLrpTjWrq-3arqQKhrquZli;_j; +rr)iorql]jrqHEbrq$-YrpKdOroa:Arnm_1rn@A$rm:Ygrl>#Srk8<>riuI)rhoahrgs+Yrg!JGrf@&: +re^W/rdt-"rdXoprd4WjrcnEdrcOlUJTQHbqK2^Zrc\9crd+Qjrd=]prdb!!re:?,reg]8rfR2ErgNhW +rh07fri,n#rj;[7rkJHOrlP/brmLerrnIG/ro*k=rp'LLrpTjWrq-3`rqQKhrquZli;_j;rr)iorql]j +rqHEbrpp'WrpB^LroX4@ro!e1rn%.trltGbrl"fMrji$6riH*trhKIargWnPrfR2?repc0re(3#rdFcm +rcnEcrcJ-[pi-4NUMbX#JSt=%rbq[Qrc8!ZrcS3ard"KjrdXoure19.rf-o=rfmDKrgj%_rh]UorilC0 +rk/6Irl+l[rm:Yorn7;-ro*kArepc2rdt-"rd=]jrce?`rcA'Yrbh^P +rbVRLTPB$mJSP$rrbMLLrb_XPrbqdVrcA']rcnEhrdFcsreCE/rf-o?rg!JNrh'1bri#h!rj)O7rkSNO +rlY5drmUl!rn[S3roF(Brp'LMrp]pXrq69crqZQjrqucoi;_j;rr)iorql]irq??`rpg!Urp9XJroO.= +rn[S,rmh"orlP/ZrkSNErjDa.ri#glrgs+Wrg!JDrepc3re(3"rdFckrcS3]rc%jTrb_XMrbDFHph-I8 +JRsCDrFPk=rb2:GrbMLLrbh^Rrc.pZrcnEgrdOiure:?/rf6u?rg3VSrh07friH+(rj_sArkeZUrm(Mj +rn%/(rndY7roX4ErpB^Srpp']rqHEerql]mrr(dTj8],WrqucmrqQKcrq$-ZrpB^Nroj@Bro*k3rn%.u +rm1Sbrl"fNrjVm4ri?$orh07Zrg!JFrepc0rdt-!rd"KdrcA'XrbqdPrb;@Eral(>raYq9TO<=YJRJ=^ +qdKJ6rac"?rb2:Hrb_XRrcA']rcnEkrdk'%reg]7rfd>Krg`t^ri,n"rjDa=rk\TRrltGirmh#%rn[S5 +roX4Erp9XRrpp'\rqHEerql]mrr(dTj8],WrquclrqHEarq$-ZrpB^Mroa:?rnm_0rmh"rrltG_rkn`K +rjMg2ri,mkrgs+Vrfd>BreUQ,rdauprc\9_rc.pTrbVRJrau.?raPk7ra5Y2qd$((JR!b2rET>-ra,S2 +ra>_7raYq=rb2:Grb_XRrc8!\rd+Qlrdt-(reg];rg*PPrh07griH++rk&0Erl+l[rm1Snrn@A-ro*k= +roj@IrpTjWrq-3arqQKirqucoi;_j;rr)iorqcWgrq-3]rpg!Trp'LFro*k5rn@A%rmLeirl4rSrk/6< +ric=!rh9=^rg*PFrf$i3rdk&trd"Kbrc.pTrbMLIrau.=ra>_4ra#M.r`f8'VHJIQJQ_qSr`];*r`oG. +ra5Y4raGe;rb)4Frb_XQrc8!^rd+Qnre:?.rf6uBrg<\Wrh]Uorj)O6rkABMrlY5brmUl!rnRM2roO.B +rp0RPrpp'\rqHEerql]mrr(dTj8],Wrql]jrqHEarq$-YrpB^MroO._3r`];'r`B)"qc0LmJQ.2"rD`brr`9#"r`K/' +r`fA/ra>_7ral(CrbVRQrcJ-`rdFctre:?/rfR2Grg`t_ri#h#rjVm=rkeZUrlkAirn%/(ro!e:roX4G +rpKdUrq-3arqQKhrqucoi;_j;rr)inrqZQfrq-3\rpTjQrp'LEro*k5rn7;"rm1Scrkn`Mrj_s4riH*p +rgj%Urf[8_8rau.Drb_XTrcS3drdXp"reUQ8rfmDNrh9=griZ7.rjr*Frl>#]rmC_srn@A/ro="?rp0ROrpg![ +rqHEerqcWlrr(dTj8],Wrql]jrqHEarpp'Wrp9XLroO.Mrh07iriuI2rk/6Jrl>#`rmUkurn[S5roO.DrpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQf +rq-3\rpKdNroa:@rn[S-rmh"prlkA\rkABBrj2U(rh]Uarg!JEreUQ*rdFchrc.pTrb2:@ra5Y/r`B)! +r_i_kr_lJ.1B)ZNDDZ4_VGQ*'jL&Qu/ +OoCdJT)PYeYPts/]`,hJa8XB`e,Ituh#?=4jo4NDmJcSRoD\I_q#:-hr;QZQs69R\rr2lqqu6Ejp\sga +o)A(VlMfuGj8Rm6gA]Y%d/M8g`W!UN\c/o6WrAjoSGncPNrFh5JGsrqFoH@ZD#S)H@K'U4>5hS%;uTSl +9`@]a8cD6Z7f,UQ6iKEO5_21Q5QO2rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau._:rb2:JrcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)( +ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BDqu6Tnrql]jrqHEarpp'Vrp'LGro="6rn@A%rm:Ygrl+lN +rji$6ri5sorg`tPrf6u5rdauqrcS3ZrbVRHraGe4r`];%r_relr_3;ar^m)Zr^QcQr^6ZOWBc#"K0TH( +6N'7J6iKLQ7fGsX9)_N`:]=5jQ/"/Ac?ECDZ4_VGQ*'jL&Qu/OoCdJT)PYeYPts/]`,hJa8XB` +e,Ituh#?=4jo4NDmJcSRoD\I_q#:-hr;QZoro=%Cs82fprVl]nq>U-fo`"F\mf)MNkPjN@h>Z.-ec*qp +bl5T\^Ab\BZMpm'V>d"aPl?^BL]2i'I/\9fE;j\QBDu?=?N+.-#`rmUkurnRM4roO.DrpB^Rrq$-_rqQKhrqucorr1sXj8],Wrql]jrqHEarpp'Vrp'LGro="6rn@A% +rm:Ygrl+lNrji$6ri5sorg`tPrf6u5rdauqrcS3[rb_XIraGe4r`];%r`&knr__;rb;@MrcA'_rdOj#reg];rgEbWrhob!rjDa#` +rmUkurnRM4roO.DrpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpKdNroa:@rn[S-rmq(qrlkA\ +rkABBrj2U(rh]Uarg!JEre^W+rdFcirc.pTrb;@BraGe2r`T5$r_i_lr_EGcr^m)[r^WVMJOP,YqF1BR +r^d#[r_*5ar_NMjr_retr`];,raPk>rbMLPrc\9erdb!'repc=rgEbXri#h$rjMg=rkn`Urm(Mmrn.5* +ro3q=rosFLrpTjXrq??drqcWlrr(dTj8],Wrql]jrqHEarpp'Vrp'LGro="7rnIG'rm:Ygrl+lNrji$7 +ri?$qrgj%SrfR2;re(3"rcnE`rbqdNral(_rCHoZr_!/_r_3;e +r_WSlr`/r!r`];-raGe;rbDFLrc8!_rd=]tre^W7rg!JRrhBClriuI2rkABMrlG)brm^r"rn[S5roO.E +rpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpKdOrosFCro!e2rmq(rrltG_rkSNGrjDa.ri,mi +rgEbMrf$i2rdk&qrcS3\rb_XKrau.rbMLNrcA'ardOj"reg]8rg*PSrhBCmrj)O4rkABNrlY5ermh##rndY6roO.ErpB^R +rq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpTjProsFDro!e2rn%.srm(MarkeZJrjMg/ri,mjrgEbM +rf6u5re(2trce?_rbqdMrau.=ra5Y1r`T5$r`&kpr_WJfqb_8rau.Drb_XT +rcS3drdXp"re^W8rfd>Nrh9=gric=/rjr*Frl>#]rmC_rrn7;.ro="?rp0ROrpg![rqHEerqcWlrr(dT +j8],Wrql]jrqHEarq$-YrpB^MroO._3r`];'r`B)"qc0LmJQ.2"rD`brr`9#"r`K/'r`fA/ra>_7ral(CrbVRQrcJ-` +rdFctre:?/rfR2Grg`t_ri#h#rjVm=rkeZUrlkAirn%/(ro!e:roX4GrpKdUrq-3arqQKhrqucoi;_j; +rr)iorqcWgrq-3]rpg!Trp'LFro*k5rn@A%rmLeirl4rSrk/6_4ra#M.r`f8'VHJIQJQ_qSr`];*r`oG.ra5Y4raGe;rb)4Frb_XQrc8!^rd+Qn +re:?.rf6uBrg<\Wrh]Uorj)O6rkABMrlY5brmUl!rnRM2roO.Brp0RPrpp'\rqHEerql]mrr(dTj8],W +rqucmrqQKcrq$-ZrpB^Mroa:@ro!e1rmh"rrltG_rkn`KrjMg2ri,mlrh'1Wrf[8@re^W-rdk&rrcnEb +rc%jRrbMLHrau.?raPk7ra5Y2qd$((JR!b2rET>-ra,S2ra>_7raYq=rb)4ErbVRPrc.p\rd+Qlrdt-) +repc;rg*PPrh9=hri?%)rjr*Drl+l[rm1Snrn@A-ro3q>rosFKrp]pXrq-3arqQKirqucoi;_j;rr)io +rql]irq69^rpg!Trp0RIroF(;rnRM)rmUkmrlG)WrkJHArj)O(rhTOdrgNhOrfR2rosFKrp]pXrq-3arqQKirqucoi;_j;rr)iorql]irq??` +rpg!Urp9XJroO.=rn[S,rmh"orlP/ZrkSNErjDa.ri#glrgs+Wrg!JDrepc3re(3"rdFckrcS3]rc%jT +rb_XMrbDFHph-I8JRsCDrFPk=rb2:GrbMLLrbh^Rrc.pZrcnEgrdOiure:?/rf6u?rg3VSrh07friH+( +rj_sArkeZUrm(Mjrn%/(rndY7roX4ErpB^Srpp']rqHEerql]mrr(dTj8],WrqucmrqQKerq69]rpTjR +roj@Cro3q6rn7;%rmC_grl>#Urk/6?rilC%rhf[frg`tTrf[8?reg]1rdt-"rd=]jrce?arc8!WrbqdQ +rbVRLqeE!BJSB[LrFu7GrbMLLrb_XQrc%jVrcJ-_rcnEhrdFcsreCE/rf$i=rfmDNrgs+`ri#h!rj)O7 +rk\TQrlP/crmUl!rn[S3roF(ArosFMrpg!Zrq??crqQKirqucoi;_j;rr)iorql]jrqHEbrpp'WrpB^L +roX4@ro!e1rn%.trltGbrl"fMrji$6riH*trhKIargWnPrfR2?repc0re(3#rdFcmrcnEcrcJ-[pi-4N +UMbX#JSt=%rbq[Qrc8!ZrcS3ard"KjrdXoure19.rf-o=rfmDKrgj%_rh]UorilC0rk/6Irl+l[rm:Yo +rn7;-ro*k#\rm1Smrn%/)ro!e8roa:GrpB^Srq$-] +rq??erql]mqu,IQj8],WrqucmrqcWhrqHEarpg!Vrp9XKroX4>rndY/rn%.trm1Serl+lRrk/6=rj)O+ +ri,morh9=_rgWnQrfd>Drf@&;repc3re:?(rdt#uqgbGkJU`6#pOE0mrdk'#re(3'reLK/repc9rfI,B +rg!JMrgj%]rhBCiriH+&rj2U7rk8ErfI,?rf6u;TT"G\JW0Gaqi1T8rf@&?rf[8Erg!JMrgNhUrgs+_rhKIjri5t"riuI1rj_s? +rk\TPrlY5crmC_rrn@A-ro*kEqiRb;JWPGErK.#@qi^i?rfmDKrgEbTrgj%\rh07brh]Ulri?%$riuI0rji$@rkSNOrl>#_rmC_p +rn.5+rnm_7roX4Drp0ROrp]pXrq69brqQKhrql]nqu5ORj8],Xrr)iorql]jrqQKerq-3]rp]pTrp9XK +roX4?rnm_1rn@A&rmC_jrlb;[rkeZLrk/6ArjDa3riuI*riH+!rhf[jrhKIdrh0.\qjmVSURQh(JXZY/ +opl#Prh'(\qk="arh]Ulri?%#ric=,rj;[5rk&0Drk\TPrlY5brm:Yprn.5*rnm_6roO.Crp'LMrpTjV +rq-3arqQKgrql]mrr)`ni;_j;rr2fnrqucmrqZQfrq-3]rpp'WrpB^Mroj@Dro3q7rn[S+rmh"rrm(Mc +rlG)Wrk\TJrjr*=rjMg4rilC*riQ1#ri,[jrh]UirhH$XJY@XgoV)8ZrhTOiqksFlri5t!riZ7)rj2U3 +rj_s=rk&0ErkeZRrlP/arm:Yorn%/&rndY5ro="@rosFJrpKdUrq$-]rqHEerqcWkrqucoqu5ORj8],X +qu-Nlrql]jrqHEbrq-3\rp]pTrp0RIroa:Aro*k5rnIG(rmh"prm(MerlG)Xrkn`NrkABErji$:rj;[1 +rilC*riZ7&riH+"ql63cJZ+-uoVhbhri?%"riQ1&ric=*rj)O0rjDa8rjr*BrkJHJrkn`TrlP/arm1Sk +rmq)&rn[S3ro=">roj@IrpB^Srpp'[rq69brqQKhrql]mrr)`ni;_j;rr2fnrqucmrqcWirqQKerq-3[ +rpTjSrp9XMroj@Cro3q7rnRM,rmq(srm:YirlkAarl4rUrkeZLrkABFrk&0?rj_s9rjDa4rj2L-rir-# +JZs^0qQTk%rj)O0rj;[4rjMg8rji$?rk/6ErkJHJrkn`Srl>#]rltGgrmC_qrn%/(rndY5roF(Aroj@I +rpB^Rrp]pYrq-3arqQKgrqcWkrqucoqu5ORj8\oRrqucmqtgrj_X1VRD&aJ[YNcqmZI4qml^;rk&0B +rkABHrkSNMrkn`Rrl>#\rlkAerm:Ymrmh##rn@A.ro*k:roO.Crp'LMrpTjUrpp'[rq-3arqZHfrql]m +q#94Oi;`]Rrr)iorql]krqQKerq69_rq$-Zrp]pTrp0RIroa:Aro*k6rn[S,rn%/!rmLemrm1Sfrlb;_ +rl>#Xrl"fRrkeQJqnM^8VS%JmJ\:rootC@>ot^RDrkn`Rrl4rYrlY5arm1SjrmC_ormh##rnRM0ro!e9 +roF(Arp'LLrpTjUrpg!Zrq-3_rqHEfrqcWkrqucorr1XOi;`]Rrr)iorql]krqZQgrqHEbrq-3\rp]pU +rpKdPrp0RIroO.=rnm_2rnRM,rn.5$rmUkorm:Yjqp,2brlb;`rlP/\rl>#Wm)6!CJ]!&V!5nBGqo/QT +rlG)\rlY5`rlkAerm1SjrmC_orm^r!rn7;*rn[S2ro*k;roa:Erp0RNrpKdSrpg!Zrq69brqQKgrqcWk +rquZlrr1XOi;`]Rrr)iorqlKerqQKerq69^rpg!WrpTjRrp9XKroa:Bro3q8rnm_1rnIG*rn%/"rm^qr +rmC_lrm1JerltGdrlauWprTMVJ]NJb!QiI[anZ@3 +ir8!;k5OTDlMg2Mn,DhUnc&.Zo`"R`p\ssbqYpBkr;6Hlrn@D1s82fmrVl`oqtp6eq#:$eo`"I]o)%qU +mf)POkl0cEjo4<>ir7m8hu;L3h#?%,f`'J$ec+(te,.Sjd.5MUc@O8lcMGiZch5Zadf._peGe"tf)F;# +g&Bb*h#?10hu;R5ir8$Ml2KoGkPjQAir7m2hu;I2h#?(-gABS#f`'Ltebdjkdt,u!df@kieG.Sk +fDaG%g&B_)g]$"*h>?+/i;V^7j8S-=kPj]ElMg/Lmf)\SnG`"XoD\C]pAXgcq"spbqu6NmrVQTGs4[MP +rqlZkr;QTmqYp9ep\sjbo`"I]o)A1Yn,D_Rm/H>Ml2KoGkPjTBjS7a3i;VX5h>Z4&g[EgmfR_\+f_sIk +g&'P$h##q)hu;R2ir8!;jo4HBkl0iGli-8MmJcSRnG`"XoD\C]p&=^_q#:-hqtU*grVQTGs4[MPrqQHk +r;QTmqYU*cq#:$bo`"I]nc&%Wn,DbSm/H>Ml2KoGkPjTBjSS!7ipu%,hu;K!h1=C5h=9=uhYZ4'i;Va8 +j87p:jo4EAkkjWDli-;Nn,DhRnb_qWo_\C^q#:*gqYpBkr:p6frn%2%s82fjrVl`oqtp6hq"sg_p&=U_ +o)A1VnG_nUmJcJLlhfrDkl0cEk4Rg7j7qW)iITs=iUl+(iqqd5jSS*:kPj]El2L#Gm/-2In,DhUnc&.Z +o`"O_p\Xa\qYpBkr:p6irmCbts7lTjrVQNlqu6Hhq>U0gp\smcp&=U\oD\:ZnG_nRmf)VQm/H>GlLO0< +kP421jalNEjn.[0k54?7kkjZEli-8JmJcPQn,DhUnbD_To`"O_pAXgcq#:*dqYU0hr;QZirmCbts7lTg +rVl`oqtU$eq>U0dp\XX_o`"I]o)A1YnFc8LmecDKm/H>GlM0V7k^hrKkk+*6l1jQ@li-8MmJH>Kn,)VO +nc&+YoD\C]p%\:\q#:*dqYpBkr:p6crmCbns7lTgrVQNlqtU$bq"sg_p&"C\oD\=Xnb_hHmuHgemXafi +me-&AnG_tWo)A7Uo`"OVp\ss_qYU0hr:p6crm(Pks7QBgrVQNiqtp6bq>9sdp\"4Yo_%hNo)A0>n:C([ +nEBB=nbD\JoD\CTp&"L_q"X[aqYpBbr;QZcrm(Phs7lTarVQNlqtU$eq>U0^p\sm]p%@tJo9]$!nq$B% +o(DVFo_A+VpA=U]q"sm^qYU0hr:U$`rlG,Ys7lTarVQNiqssU_q=XOCpRV#/p4;r0p>G]Bq"sm[qXsab +r:U$`rkJKPs6osarUTmZqu6HDq47;3pjr54ptGQ@qXXOVr;QZ`rkJKGs7lT^rUp*]qgnV>qLSKoqU#*9 +qss[RrV6B#s/l=orm(J,r.4csr9O:.rUTrfs/l= %APLeod +EI +76 0 0 74 0 236 cm +BI +/Width 228 +/Height 222 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$ +JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#N;nJ.pATXBJc7o).tTq#7i(_Z0E1o)8Rc +q"sa\qt^$^i:iodKRq#13irql]krqZQgrqHEcrq-3\rp]pUrpKdPrp0RIroX4Aro*k7rnm_2rnRM-rn7;' +rmq(urmUkprmC_lps8WYUWnA7J^*r6o$7-Yrm:YlrmLeprm^qurn%/&rnIG-rn[S2ro!e7roO.Broj@I +rpB^QrpTjVrpp'\rq69brqQKgrqcWkrquZlqu5FOh>dKRqu-Nlrql]krqZQgrqHEbrq-3\rp]gRrp0RK +roj@Bro3h4rnRM,rn%/#rm^qqrmC_krm:Yirlt>`rlY5^rlG)Yn&;BHJ]*,X!6"?Frl4rXrlP&[rlb;c +rm(Mirm1SkrmLeqrmh#"rn@A,qqqD4roF(BrosFJrpTaRrpp'[rq69brqQKgrqcWkrqucoqu5FOh>dKR +qu-EhrqcWhrqHEcrq-3\qsaUQrp9XKroj@Dro3q8rndY/rn7;&rm^qqrm:YjrltGdrlY5^rlG)Yqo/HM +rke6BrkJHJYJ5Y'K>.H&^];1L^])%A_>D+K_u@XP`r='Yao9H^bl5ldci2;je,IkrfDaJ&g]$(/i;Va8 +k5OQCl2L&KmJHDPoD\C]pAXgcq"spequ6Qkrn[V1s8N#prVQKkqYp6gpAXaaoD\=Xn,D\Qli-)Hjo49= +i;VU4h#>t*ec+%sd/MAjcMl#db5TK]`W!gT_u@LO_"b\D^@f.9]7ISF]D]A4]_fG?^])%J_>_@O`;[aT +aSs<\bPofdci2;je,Iqtf`'\*h>Z@3ir8'=kPjfHmJHAOnc&.Zp&=[ap\Xgdqu6Qkrn[V4s8N#prVl`o +qYU*fp\smco`"C[nG_nUli-2Kkl0ZBir7j7h>Z+,f)F+sd/MAjbl5``a8X$V_Z%=L_#D(I]`,MA\c0,< +[f3]6[/73/ZD4[UZ%91SZ2:j+Zi7?2[JmW6\Gj&<])KAA^&GhH^])+L`;[gVb5TWaci2>kdf.hsg&Bh, +hu;X7jSnBBl2L#Jn,DhUnc&1[p&=^bq>:$cr;QZlro=%:s8N#prVl`oqYpZ+,f)F+sd/M;hbPoQ]`W!dS_#D(I]`,J@\Giu:[JmQ4ZMq-.Yl:j*Y5YPrXF[I(XRrUn +Xo>L&YPtd*Z2V'.Zi7B3\,No:\c08@^AbqI_u@XSa8X9]c2Q)hdf.hsg&Bh,i;Va8k5OTDlMg/Lmf)_T +oD\F^pAXjdq>U6fr;QZlro=%:s8N#prVl`oqYp9hp\sjbo`"C[nG_hSli-,Ik5OE?i;VR3g]#e'df.Sl +bl5caaSs'U_#D+J]`,J@\,Nc6ZMUm*Y5YR&XT#7!WW&jqVkBoL#Yl;!. +[/RQ6])KAA^])(K_Z%XUb5TWaci2Dmf)FG'h>Z@3j8S3?kl0oImJcVSnc&.Zp&=^bq>U6fr;QZlro=%: +s8N#srVl`oqu6Ejq#:$eo`"F\nG_kTli-/Jjo4<>hu;L3gA]\&dJhJkbl5T\_u@FM^&GSA[f3W4Z2Us+ +XT#7!W;`XmV#I+cU&1JTSZ/-1S:R4,SGSlVT)5/ZT`1YaUAgqeV>dFmWrB+!YPtg+Zi7E4\c0;A^])+L +`W"*\cMl5jf)FA%hYuF3ir8'=l2L#Jmf)_ToD\C]p\sseq>U9jr;QZlro=%:s8N#srVl`oqu6Ejq#:$e +oD\=[n,D_RlMg#HjSn-;hYu7.fDa7ud/M8gaSs'U^](nF\Gio8Z2V!,Xo>@"VuEOlU]-qcT)P;[SGo#W +Rf8]OQ_TjtQ@Y@rQN!6JR/WQRS,SrWSc58\T`1_cV>dClWrB+!Yl:p,[Jm]8]`,\F_Z%XUbPolfe,Itu +gA]t.iVqp;kl0lHmJcSRnc&.Zp\sseq>U9jr;QZlro=%:s8N#srVl`oqYp9hp\smco)A.Xn,DYPl2KlF +iVqa6h>Z(+eGdhoc2Pf``;[RO]`,J@Zi76/YPtR$VuEOlU&L_aTDkA[Rf8`SQ2[$IPQ$aBOoCH>O+E@C +O8Y.:OT(C>P5^[EPl?sIRJr]TSGo/[T`1YaV>dFmWrB4$Z2V*/\c08@_#D:Oao9Qad/MSpf`'_+hu;U6 +kPj`Fli-APnc&+YpAXgcq#:-hqu6Qkro=%=s8N#srVl`oqu6Hkp\smco`"C[nG_kTl2KlFjo43;h>Z.- +eGdkpci2#b`;[ON])K/;ZMq',WrApqU]-tdTDk>ZRJrNOPQ$aBO8b.iD3 +MuJ\7NVee9OoCRDQN!9NS,T&ZU&LhdVuEarYPtj,[f3l;^])1NaSsNbdf.bqgA]q-i;Vj;kPj`Fmf)\S +nc&1[p&=^bqYpBkr;QZoro=%=s8N#srVl`oqu6Hkp\smco`"C[n,D_Rl2KlFj8Rs8g]#k)df.Slbl5T\ +_>_.I[f3W4YPtU%VuELkT`1M]Rf8WPPl?gEOT(7=MuJS4M#N2/L&QauK7SZ+KCjfqK`6])L]3,/M>iG4 +NW,%=OoCUEQN!?PSc5;]V#I:kX8]=%Zi7E4^&GkI`W"*\ci2Alf`'Y)hu;[8k5OWEmJcSRnc&1[p&=^b +qYpBkr;QZoro=%=s8N#srVl`oqu6Hkp\smcoD\7Ymf)SPkl0]CiVq^5gA]_'d/M;hbPoBX^AbbDZMq', +Xo>6tV#I"cSc5&VQN!$GOT(:>MZ/G2LAli)K)U?#JGXhkIXus!IeSi;0K)U?#J,XorI/\KlH2`'fG,'22Fb+]0FoHR`GQ)meHiAElIf=irJc:9#L]3/0N;en; +P5^aGSGo,ZU&LthXT#I'[f3o<_#DCRbPolfe,Ituh#?41j8S3?li->OnG`%Yp&=[aq>U9jr;QZoro=%= +s8N#srVl]nqYpU6iqu6Qnro=%=s8N#s +rVl]nqYpS8KE;jqXFT-OaH2`0iJ,Y#uKDpc-N;eq^VZ*Xq +Yl;-2^&GqKa8X<^dJh\qg&Bn.ir8'=l2L&Kn,DkVo`"R`q>U6iqu6Qnro=%=s8N#srVl]nqYp9hp&=R^ +nG_kTli-,Ij8S!9h>Z%*eGdenao96X_#CnDZi70-VZ*=hTDk2VPl?aCMuJM2KDpE#I/\EjFoHIZE;jbS +D#S5LC%u>?Aq=QFB)6-:BDuWEC]8/LD>S;OF8g=]H2`3jJGt3#L]352O8b@BQiZ")df.Sla8X$V^](_AZ2Uj(V#I%dSGnfQOoC@>L]2u+JGsrqH2`!dErL%WDZ4GNCAqoGB)ZB= +AH$)<@Y&!>@f9d8A,Bg9Ac?<@B`;`FC]85NE;jnWG5cacI/\ZqK`6c+NW,(>Q2[k'df.Pk`rYl:^&U&LY_Rf8KLNrFq8K`6Q%If=TkFoHC[E;j_RC]8#HB)Z??@fBg8 +?iFH1?\)R8?i"./@/aO4@K'a8AH$3?B`;fHD>nMREW1+[GlE0kJc:?%MZ/Y8P5^pLSc5>^X8]@&[Jmo> +_Z%RScMl5jec+A'hu;X7kl0lHmJcVSoD\C]q#:*gqu6Qnro=%=s8N#srVl]nq>U-fo`"F\nG_eRl2KiE +iVq^5gA]S#d/M8g`;[RO]`,59XT#-sT`1G[Q2ZmEMuJM2JGsrqH2_maEW0nUCAqoGB)Z9=@JaF2?2e+. +>Q.g*=b0_,=oDM&>5hb*>lJ%+?iFL5@fC!=B`;cGDuObUF8gIaIK"crL]352OT(OES,T)[VuEgtZMqN9 +_#D:Obl5rfe,J)#h>ZC4k5OTDm/HMRoD\C]p\t!fqu6Qnro=%=s8N#srVl]nq>U-fo`"F\nG_eRkl0]C +i;VO2g&BJ"ci2,e_u@FM])Ju6XT#'qTDk8XPQ$R@M#N),J,XcnGQ)U]DuOSPBDuKAA,]m8?N+70>Q.h* +=ef&L=+OHI=8lA%>5hb*?2e41@/a[8Ac??AD#S>OEW11]HiANoK`6i-NW,.@RJriXV>dOpZ2V?6^Ac%L +bPoiee,J&"h>Z@3jo4KCm/HMRoD\C]p\t!fqu6Qnro=%=s8N#srVlZmq#:$eo`"C[n,DYPkl0ZBi;VO2 +g&BG!cMkuc_Z%7J\Gi`3WrAgnSc4uTP5^C=LAlc'IK"KjFT-7YD>n;LAc?3:?iF=0>5hY'=8l8"l.n-@fBs +:k;I;;#XAl;uTbqQ._'X.d:4Z/k:AR`_ +:]=2i;>sPoQ.q-@/a[8BDu]GDuOhWG5csiK)UN(NrG7ARJrlYVuEju[f3o<_#DCRbl5ugfDaP( +i;Vg:kl0oIn,DkVoD\L`q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc&"VlMfuGjSn'9gA]\&d/M8ga8WmR +]Df5;Xo>3sTDk2VOoC@>L&QZ&I/\9fErKtUB`;QA@/aL3>Q.e)Q.t.@/aa:B`;oKEW1+[I/\ZqL&R)2P5^gITDk_eXo>a-])KMEa8X9]d/MVqg]$+0jSnBBlMg8O +nc&.Zp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)MNkPjN@hYu7.f)F%qbPoK[^](eCZi7$)V>d+d +QN!!FMuJA.J,XcnErL"VD#S#FA,]j7>Q.b(sAj:&[fb9)D2Z8:a<_8GYmV8cD?]9E%Zb:]=5j +;Z9_r=T2P(?iFO6Ac?NFDuOeVHN&BmKDpf.OT(RFTDk\dX8]I)\c0AC`W"'[d/MVqg&Bk-j8S6@lMg5N +nG`%Yp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>hYu7.ec*qpb5T?Y^AbYAZMpm'V#Htb +Pl?aCMuJ>-IK"NkEW0kTC]7lD@K'U4=oMM%<;obo;#X5h9E%Q_8cD8X7tF0]8,YsT8H)3[9)_K_:B"&g +;>sPol2L,M +nG`%Yp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>hYu7.ec*noao96X^&GM?ZMpm'U]-h` +PQ$XBMZ//*I/\BiEW0kTCAq`B@/aI2=T2>";Z9Ml:B!rd9)_E]8>AY*7Y+&'7fGsX8cD?]9`@cc;#XAl +nPSGlE*iJGtH*NrG7ASc5D`WrB='\Gj2@`;[pYci2Jog&Bk-ir8*>l2L,MnG`%Y +p\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?ZMpj&UAg\^P5^I? +M#Mr(HiA3fE;j\QB`;H>?N+1.sDk:&[ca8H)-Y7fGfQ6\.UU6iBCL7/f[T8,c'Y9)_N`;#X>k +<;oqt>Q.t.@K's>D#SDQG5cjfJGtB(NW,+?SGo8^WW'4&\Gj2@`;[pYci2Gng&Bh,ir8*>l2L,MnG`%Y +p\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?ZMpg%UAg\^OoC== +LAl`&HN&$cE;jYPBDu?=?N+1.Q.t.@K'p=C]8;PFT-UcJGt<&N;et=SGo5]W;a+%\Gj2@`;[pYci2Gng&Bh,ir8*>l2L,MnG`%Yp\t!f +qYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC==LAl]% +H2_pbDuOMNBDu<5hh,@/agl2L,MnG`%Yp\t!f +qYpHmro=%@s8N#prVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC==LAl]% +H2_pbDuOMNBDu<5hh,@/agl2L,MnG`%Y +p\t!fqYpHjroX7Cs8N#prVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdbmao96X]`,A=Yl:U#U&LP\OoC== +LAl]%H2_pbDZ4DMB)Z3;>lIn*&5_20#5lO(K6Mj.L7K,dU8cDB^ +9`@ie;Z9\q=oM\*@/ad;CAr,MFT-UcJ,Y3%N;et=S,T,\W;a%#[f3r=`;[mXcMl>mg&Bh,ir8*>l2L,M +nG`%Yp\t!fqYpHjroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5lEtI62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX62 + +~> %APLeod +EI +76 0 0 22 0 214 cm +BI +/Width 228 +/Height 66 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[J, +~> %APLeod +EI +76 0 0 26 202 188 cm +BI +/Width 228 +/Height 78 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$ +JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#O8je1oDX=?Jcs:Ln,@n: +oDO7=Jc3jln,AgVXoJ(ncMa"*Jc()slho0/o)>Zh]`7d+n,;qWp%s=:q>,[=Jbmaiqtos^n,<%\[f=#? +n,;qWp&"O\rqV-?r:kjp$;VDrpKdSqsaUUrq$-]q"F^]rqQKgqtg*qq_/,ro!e7ro="=roO.B +roj@Grp0RMrpKdSrp]pXrq$-]rq??crqQKgqtgro3q8rnm_3rnRM,rn.5$rmh"trmUbmqp=o[T[&,6J^4,;p!<#ZrlP/^rlb;brm(Mh +rm:YlrmUkrrn%/&rnIG.rnm_6roF(Aroj@IrpB^QrpTjVrq$-^rqHEerqZQirql]mqu-NngAg+2qu6Tn +rqucmrqcWhrqHEbrq-3]rpg!WrpKdOroj@EroF(;rnm_2rn7;&rm^qqrm:YjrlkAbrlP/[rl4rUrkn`P +qnW*Do"Cp5J\6QHrOhg:rkJ-ArkeZPrl"fUrlG)]rlkAfrm:YlrmUksrn.5*rndY4ro="=roa:Grp9XQ +rp]pWrq$-]rq69brqZQirql]mrr)iqgAg+2q#13irql]jrqQKerq69^rpp'XrpB^Nrp'LGroO.#Vrkn`OrkJHGrk/$pr +SZ%+ri5suriH+$riZ7(rilC-rj2U3rj_s=rk8#Vrk\TJrk&0>rjMg4rilC*riH+"ri5srrhoamqkX4dpnFXZJY@XgrLs"\qkO.d +rhf[mri#grri?%#rilC.rj;[6rjr*ArkJHLrl+lXrlkAermUkurn@A.ro*k:roX4Erp0ROrp]pXrq69b +rqQKgrql]mrr)`ni;_j;rr2oqrqucmrqZQgrqHEarq$-YrpKdProsFEro="8rnRM,rmq(rrm(Mdrl+lR +rkJHFrjr*:rj2U/riZ7%ri5sprhTOgrh9=aqk*bVqjaFNJX_4[!1WYOrgj%\qk3h[rhKIhrhoarriQ1' +rj)O1rjMgroj@IrpKdTrpp']rqHEerqcWkrr)`ni;_j;qu-NlrqcWhrqHEb +rpp'XrpTjProsFEro*k6rnRM*rmh"prlkA_rkn`Krjr*;riuI*ri?$rrh]Ugrh'1\rgWnSrg3VLrf[8B +plGE6rf!V1JW#);!/p`5qi1K6rfI,ArfmDIrg3VQrg`tZrh9=drhf[priQ1(rjDa8rk/6Irl+lZrm(Mj +rmq)&rn[S3roO.Brp'LNrp]pWrq-3_rqHEfrqlKhi;_j;rr)iorql]krqQKerq-3\rp]pTrp'LHroO.< +rndY.rmh"rrm(Mbrl+lOrjr*Drf@&rf[8Grg<\Urh07brhoasric=-rji$Arkn`WrltGirmq)%rn[S4roF(Brp0RNrp]pY +rq-3arqZQjrquZli;_j;rr)iorql]jrqQKdrq$-YrpKdOroj@Dro*k4rn@A&rmC_jrlP/WrkJHCrj2U- +ri5sorhBC`rgEbOrfd>Brf-o7reLK,re(3#rdXorrdFcnrd1;`JU)flqK`'erd=]nrdOirrdb!#re19* +re^W4rf6u@rg!JMrgj%]rhTOmriH+(rjVm=rk\TSrlb;frmh##rnRM2ro3q?rp'LLrpTjWrq-3arqQKh +rquZli;_j;rr)iorql]jrqHEbrq$-YrpKdOroa:Arnm_1rn@A$rm:Ygrl>#Srk8<>riuI)rhoahrgs+Y +rg!JGrf@&:re^W/rdt-"rdXoprd4WjrcnEdrcOlUJTQHbqK2^Zrc\9crd+Qjrd=]prdb!!re:?,reg]8 +rfR2ErgNhWrh07fri,n#rj;[7rkJHOrlP/brmLerrnIG/ro*k=rp'LLrpTjWrq-3`rqQKhrquZli;_j; +rr)iorql]jrqHEbrpp'WrpB^LroX4@ro!e1rn%.trltGbrl"fMrji$6riH*trhKIargWnPrfR2?repc0 +re(3#rdFcmrcnEcrcJ-[pi-4NUMbX#JSt=%rbq[Qrc8!ZrcS3ard"KjrdXoure19.rf-o=rfmDKrgj%_ +rh]UorilC0rk/6Irl+l[rm:Yorn7;-ro*kArepc2rdt-"rd=]jrce?` +rcA'Yrbh^PrbVRLTPB$mJSP$rrbMLLrb_XPrbqdVrcA']rcnEhrdFcsreCE/rf-o?rg!JNrh'1bri#h! +rj)O7rkSNOrlY5drmUl!rn[S3roF(Brp'LMrp]pXrq69crqZQjrqucoi;_j;rr)iorql]irq??`rpg!U +rp9XJroO.=rn[S,rmh"orlP/ZrkSNErjDa.ri#glrgs+Wrg!JDrepc3re(3"rdFckrcS3]rc%jTrb_XM +rbDFHph-I8JRsCDrFPk=rb2:GrbMLLrbh^Rrc.pZrcnEgrdOiure:?/rf6u?rg3VSrh07friH+(rj_sA +rkeZUrm(Mjrn%/(rndY7roX4ErpB^Srpp']rqHEerql]mrr(dTj8],WrqucmrqQKcrq$-ZrpB^Nroj@B +ro*k3rn%.urm1Sbrl"fNrjVm4ri?$orh07Zrg!JFrepc0rdt-!rd"KdrcA'XrbqdPrb;@Eral(>raYq9 +TO<=YJRJ=^qdKJ6rac"?rb2:Hrb_XRrcA']rcnEkrdk'%reg]7rfd>Krg`t^ri,n"rjDa=rk\TRrltGi +rmh#%rn[S5roX4Erp9XRrpp'\rqHEerql]mrr(dTj8],WrquclrqHEarq$-ZrpB^Mroa:?rnm_0rmh"r +rltG_rkn`KrjMg2ri,mkrgs+Vrfd>BreUQ,rdauprc\9_rc.pTrbVRJrau.?raPk7ra5Y2qd$((JR!b2 +rET>-ra,S2ra>_7raYq=rb2:Grb_XRrc8!\rd+Qlrdt-(reg];rg*PPrh07griH++rk&0Erl+l[rm1Sn +rn@A-ro*k=roj@IrpTjWrq-3arqQKirqucoi;_j;rr)iorqcWgrq-3]rpg!Trp'LFro*k5rn@A%rmLei +rl4rSrk/6_4ra#M.r`f8'VHJIQJQ_qS +r`];*r`oG.ra5Y4raGe;rb)4Frb_XQrc8!^rd+Qnre:?.rf6uBrg<\Wrh]Uorj)O6rkABMrlY5brmUl! +rnRM2roO.Brp0RPrpp'\rqHEerql]mrr(dTj8],Wrql]jrqHEarq$-YrpB^MroO._3r`];'r`B)"qc0LmJQ.2"rD`br +r`9#"r`K/'r`fA/ra>_7ral(CrbVRQrcJ-`rdFctre:?/rfR2Grg`t_ri#h#rjVm=rkeZUrlkAirn%/( +ro!e:roX4GrpKdUrq-3arqQKhrqucoi;_j;rr)inrqZQfrq-3\rpTjQrp'LEro*k5rn7;"rm1Scrkn`M +rj_s4riH*prgj%Urf[8_8rau.Drb_XTrcS3drdXp"reUQ8rfmDNrh9=griZ7.rjr*Frl>#]rmC_srn@A/ro="? +rp0ROrpg![rqHEerqcWlrr(dTj8],Wrql]jrqHEarpp'Wrp9XLroO.Mrh07iriuI2rk/6Jrl>#`rmUkurn[S5roO.DrpB^Rrq$-_rqQKhrqucoi;_j; +rr)inrqZQfrq-3\rpKdNroa:@rn[S-rmh"prlkA\rkABBrj2U(rh]Uarg!JEreUQ*rdFchrc.pTrb2:@ +ra5Y/r`B)!r_i_kr_lJ.1B)ZNDDZ4_V +GQ*'jL&Qu/OoCdJT)PYeYPts/]`,hJa8XB`e,Ituh#?=4jo4NDmJcSRoD\I_q#:-hr;QZQs69R\rr2lq +qu6Ejp\sgao)A(VlMfuGj8Rm6gA]Y%d/M8g`W!UN\c/o6WrAjoSGncPNrFh5JGsrqFoH@ZD#S)H@K'U4 +>5hS%;uTSl9`@]a8cD6Z7f,UQ6iKEO5_21Q5QO2rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. %APLeod +EI +76 0 0 26 0 188 cm +BI +/Width 228 +/Height 78 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+Qn +reCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)io +rqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(C +rbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[ +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l" +r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKh +rqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1 +rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/` +r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdT +rpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#gi +rgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZR +r^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)armUl!rn[S4 +roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`J +rjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO'0! +r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1rk/6JrlG)a +rmUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5! +rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,Krh9=irilC1 +rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^rp]pTroj@C +ro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-WrbDFDra>_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO'0!r^$NMr^6ZRr^QlXr_!/`r_NMkr`&l"r`oG1ral(Crbh^Wrd+QnreCE2rfI,K +rh9=irilC1rk/6JrlG)armUl!rn[S4roO.CrpKdTrpp'^rqQKhrqucorr2'[k5YG[rr)iorqcWhrq??^ +rp]pTroj@Cro*k4rn.5!rm1Scrkn`KrjVm3ri#gjrg`tLrepc1rdXomrcJ-XrbDFEra>_2r`];#r_i_k +r_%JNs3#r^$EJr^?`Sr^QlXr_!/ar_NMkr`&l#ra#M2rau.ErbqdXrd+Qn +reCE2rfI,Lrh9=iriuI3rk8rn[S+rm^qnrlP/Xrk8_rosFMrp]pYrqHEfrqcWmqu5aXj8],X +rr)imrqQKerq$-ZrpKdMroX4>rn[S+rm^qnrlP/Xrk8_rosFMrp]pYrqHEfrqcWmrr1sXj8],X +rr)imrqQKerq$-ZrpKdMroX4>rn[S+rm^qnrlP/Xrk8_= +rbMLPrcS3drdXp&rf-o?rg`t^ri,n%rjVm?rl"fYrm1Snrn7;,ro3q>rosFMrp]pYrqHEfrqcWmrr1sX +j8],Xrr)imrqQKerq$-ZrpKdMroX4>rn[S+rm^qnrlP/Xrk8ra,S.r`9"tr_`Ykr_ +rbVRQrc\9frdb!(rf-o?rg`t^ri,n&rj_s@rl"fYrm1Snrn7;,ro3q>rosFMrp]pYrqHEfrqcWmrr1sX +j8],Xrr)imrqQKerq$-ZrpKdMroX4>rndY.rmh"orlP/Xrk8Breg]*rd=]irc.pT +rbDFBra>_2r`K/"r_i_lr_EGdr_!/]r^`eRJOY2[pI>-Qr^m)]r_3;cr_WSlr`9##ra#M2raYqBrb_XS +rcnEirdb!*rf6uArgj%`ri5t'rj_s@rl"fYrm1Sorn7;-ro3q>rosFMrp]pYrqHEfrqcWmrr1sXj8],X +rr)imrqQKerq$-ZrpKdNroa:@rndY.rmh"orlY5ZrkABBrj2U)rhTObrfmDCreg],rdFckrc8!UrbMLD +raGe4r`T5%r`/qpr_NMfr_*5_r^ikTJOb8]pIG3Sr_!/_r_f3qbI#br_rerr`T5)ra,S3ral(Brbh^TrcS3frdb!%rf-o?rg3VV +rhf[srjDa:rkSNRrlb;frmq)'rnm_9roj@HrpTjVrq$-`rqZQirr)iqj8\0>rr2oqrqcWhrqHEarpg!V +rp'LGroF(9rnIG)rm:YgrlG)Srk&0;riQ0trh9=Yrfd>BreCE'rdFcircA'Wrb;@EraYq8ra#M-r`B)! +r_reor_`PgVG2V9JPH);r_E>dr_`Ymr_rerr`B)'ra#M2raYq>rb;@MrcA'_rdFctreCE5rfd>Krh9=h +riQ1-rk&0FrlG)_rm:YsrnIG0roF(Brp'LOrpp'\rqHEfrqcWmrr1sXj8],Xrr)imrqQKerq-3\rpTjQ +roj@Bro!e2rn.4srlkA_rkSNFrjMg0ri#girgNhOrf@&7re19#rd"Kbrc%jQrb;@DraGe6ra,S,r`B)! +r`&kqr_fLfJP^nopJCier_reqr`/r!r`T5,ra5Y5rau.CrbVRQrcS3crdXp"reUQ7rfmDNrh9=iric=0 +rk/6GrlG)_rm:YsrnIG1roF(Brp9XQrpp'\rqHEfrqcWmrr1sXj8],Xrr)imrqQKerq-3[rpTjProj@B +ro!e2rn7;!rm(McrkeZJrj_s3ri5snrgj%Trf[8=reCE'rdFcjrcJ-Yrb_XLral(=qd9>-r`];'r`B)" +r`/qsWDe@HJQ)MGr`&ksr`9#"r`K/'r`o>-raPk_9rau.CrbVROrc.p]rd4Wore19-rf-oArgEbWrh]UpriuI7 +rkJHMrlb;ermLf"rn[S3roX4Drp9XQrpp'\rqHEfrqcWmrr1sXj8],Xrr)inrqZQfrq-3\rp]pRrosFE +ro*k5rn@A#rm:Ygrl"fOrk/69riH*srh07[rg!JErepc2rdauqrd"Karc.pUrbDFGrau.=raG\2ra#M. +r`fA*WEFdTJQ_qSr`];*r`oG.qd9>2raPk=rb2:GrbqdUrcA'ardFcrreLK2rfI,ErgWn[rhoatrj)O9 +rkSNOrlkAfrmUl#rn[S4roX4Drp9XRrq$-]rqHEfrql]nrr1sXj8],Xrr)inrqcWhrq-3\rp]pSrp'LH +ro3q7rnRM'rmLekrl4rSrkAB>rilC&rh9=_rgNhLrf6u8re19%rdOikrcS3[rc%jRrbMLHrau.?raPk8 +ra5Y4VI+m]JRA7\ra>_4raGe8rac"?rb2:Hrb_XRrc.p[rcnEkrdk'%reg]8rf[8Lrgj%^ri?%&rjDa> +rkeZSrm(Mjrmh#'rnm_7roj@HrpB^Srq$-]rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rp]pSrp'LH +ro3q7rnRM(rmLelrl>#UrkJHArj)O*rhTOdrg`tQrfR2>reLK+rdauqrd"Kdrc8!Wrbh^NrbDFGrb)4B +ra_d6JRa7@pLF25ral(Arb2:FrbMLNrc%jWrc\9crd=]qre19+rf-o>rg!JQrh07driQ1*rjVmArkn`U +rm1Smrmq)(rnm_7roj@HrpB^Srq$-]rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq69^rp]pTrp0RIro="9 +rn[S*rm^qnrlP/XrkSNDrj2U-rhf[hrh'1VrfmDCrepc2re(3#rd=]jrcS3]qf)OPrbVRLrb;.?WFg]n +JS+ajqe,nBrbMLLrb_OOrcA']rd"Kjrdb!#reLK2rf@&Brg3VVrhKIiric=.rji$Drl+lYrm1Smrn%/* +ro!e9roj@HrpKdTrq$-^rqQKgrql]nrr1sXj8],Xrr)inrqcWirq??`rpg!Vrp0RJroO.=rnm_.rmq(r +rlkA_rkn`KrjMg1ri?$qrh9=^rg<\LrfI,=reg]-rdk&urd4WjrcnEarc7mTqer6HJSfsTpMKeGqf)OU +rcJ-ard"KirdXoure(3-rf$i#^rmC_qrn7;.ro3q=rosFKrpTjV +rq-3`rqZQirql]nrr1sXj8],Xrr)iorqcWirq??`rpg!Vrp9XLroX4?rnm_0rmq(srm(Mbrl"fMrji$7 +riQ0urhTOcrgWnSrf[8Arf-o4re:?'rdaurrd4WircnEcrcJ$YUN(j)JT:F(rc@sYrc\9brd"KirdFcr +rdt-'reLK4rfI,Brg<\Srh'1cri,n!rj2U6rkABMrlP/brmLetrnIG0ro="?rp'LLrpTjVrq-3`rqZQj +rqucorr1sXj8],Xrr)iorqcWirq??`rq$-YrpB^NroX4?rnm_1rn.5!rm:Yfrl>#Rrk&0reg]2reCE)rdt-#rdalqUOIcCJU[?BrdXfqrdk'#re(3)reUQ2rf6u=rfR2GrgEbV +rh'1brhoatrilC-rk&0ErkeZXrm(Mirn%/'rndY5roO.Crp9XOrp]pYrq69brqcWkrqucorr1sXj8],X +rr)iorql]krqHEcrq-3ZrpKdQroj@Cro3q7rnIG*rmUknrltG^rkeZKrjMg4ric=%rhoajrh07]rgNhP +rfmDErf@&E +qiC`9rf$i7reg]3UPOJWJVa&Vre^W3repc7rf-f9rfR2Drg*PNrgWnZrh9=drhoarric=,rjMg;rkJHN +rlG)brmLeqrn@A-ro!e;roa:FrpKdSrpg![rq69brqcWkrqucorr1sXi;`fUrr)iorqcWhrqHEcrpp'X +rpTjProsFFro*k6rn[S+rm^qorltG`rl"fOrk/6@rj2U/ric=$rhoalrh9=arh'1[rgNhSrg!JIrfd>E +qiUl>VN6:hJWKbjqiLf>qi^rBrfmDIrgEbTrg`t[rh07arh]Umri5t$riuI/rji$@rkSNOrlP/arm:Yp +rn.5+rnm_6roa:Frp0RPrpg!Yrq??crqQKhrql]nqu5XUi;`fUrr)iorqcWhrqHEcrq$-[rpTjRrp'LH +ro=":rnm_/rn%.urm1SerlG)UrkJHGrjVm7rj)O,riH+!rhf[jrhKIcrh'1]rgWnUrgEbQpm:uGWKi%" +JX-2!rg*GJqj@ANrgNhUrgs+]rh07crh]Ukri5t!ric=,rjDa7rk8rnm_3 +rn@A&rmC_krlkA\rkn`Mrk8#]rltGhrmLes +rn.5+ro!e8roX4CrosFLrpTjUrq$-^rq??drqZQiqu$Hlqu5XUi;`fUqu-NlrqcNfrqHEcrq-3[rp]pU +rp0RKroj@Bro3q7rn[S,rmq(srm:YjrlkA`rl>#VrkeZLrkSNIrk/6Arji$dKRqu-EhrqcWgrq??arq$-[qsXONrp0RHroO.=ro!e4rnRM*rmh"s +rm:Yjrm(MdrlY5]rl+lTrkn`OrkSdKRqu-Nlrql]krqQKerq??` +rq$-Zrp]pTrpB^Lroj@Dro3q8rndY.rn.5%rm^qqqp>>frlkAarlP/\rl4rVqo&KOrkb,>J\ZiPm_Jh= +rknWOrl+lVrlG)\rlY5arlt>ermUkrrn%/&rn@A.ro!e8roX4CrosFLrpKdTrpg!Zrq-3`rqHEerqcWk +rqucoqu5FOh>dKRqu-Nlrql]krqZQgrqHEbrq-3\rp]gRrp0RKroj@Bro3h4rnRM,rn%/#rm^qqrmC_k +rm:Yirlt>`rlY5^rlG)Yn&;BHJ]*,X!6"?Frl4rXrlP&[rlb;crm(Mirm1SkrmLeqrmh#"rn@A,qqqD4 +roF(BrosFJrpTaRrpp'[rq69brqQKgrqcWkrqucoqu5FOh>dKRq#13irql]krqZQgrqHEcrq-3\rp]pU +rpKdPrp0RIroX4Aro*k7rnm_2rnRM-rn7;'rmq(urmUkprmC_lps8WYUWnA7J^*r6o$7-Yrm:YlrmLep +rm^qurn%/&rnIG-rn[S2ro!e7roO.Broj@IrpB^QrpTjVrpp'\rq69brqQKgrqcWkrquZlqu5FOh>d9L +qu-NlrqcNfrqQKdrq69^rposUrpKdQrp'LHroa:Aro=";ro!e5rndY0rn@8&rn.5%qpk\qqpYGjS^E#9 +J^O,;p!WigqpbVqrn%/%qq:u'rnRM0rnm_5ro3q;roF(ArosFIrpB^QqsaUUrq$-^rqHEerqZHfqu$Hl +q#9+LfDkjLqu-NlqtpBhrqQKerq??`rq$-[rpg!WrpTjQrp'LIroa:CroO.=ro*b4rnm_3rn[S/rnI>' +rn.,"qptGjWRQLKJ^jPGqpkAjrn%&"rn7;*rnRM/rndY3qr%J4ro3q=roX4CrosFJrp9XQrp]pWrpp'[ +rq-3`rqHEeqtg7o).tTq#7i(\c:gkm/2G3q>5a?Jc!gkl29]C\c8]0p&<88 +Qi)F4Jc+a0dJ`Y8XoF@[Jc>BBJc:6"b5RA"N;nJ.pATXBJc %APLeod +EI +76 0 0 50 202 138 cm +BI +/Width 228 +/Height 150 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau._:rb2:JrcA'_ +rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BDqu6Tn +rql]jrqHEarpp'Vrp'LGro="6rn@A%rm:Ygrl+lNrji$6ri5sorg`tPrf6u5rdauqrcS3ZrbVRHraGe4 +r`];%r_relr_3;ar^m)Zr^QcQr^6ZOWBc#"K0TH(6N'7J6iKLQ7fGsX9)_N`:]=5jQ/"/Ac?EC +DZ4_VGQ*'jL&Qu/OoCdJT)PYeYPts/]`,hJa8XB`e,Ituh#?=4jo4NDmJcSRoD\I_q#:-hr;QZoro=%C +s82fprVl]nq>U-fo`"F\mf)MNkPjN@h>Z.-ec*qpbl5T\^Ab\BZMpm'V>d"aPl?^BL]2i'I/\9fE;j\Q +BDu?=?N+.-#`rmUkurnRM4roO.DrpB^Rrq$-_rqQKhrquco +rr1sXj8],Wrql]jrqHEarpp'Vrp'LGro="6rn@A%rm:Ygrl+lNrji$6ri5sorg`tPrf6u5rdauqrcS3[ +rb_XIraGe4r`];%r`&knr__; +rb;@MrcA'_rdOj#reg];rgEbWrhob!rjDa_rCHoZr_!/_r_3;er_WSlr`/r!r`];-raGe;rbDFLrc8!_rd=]tre^W7 +rg!JRrhBClriuI2rkABMrlG)brm^r"rn[S5roO.ErpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\ +rpKdOrosFCro!e2rmq(rrltG_rkSNGrjDa.ri,mirgEbMrf$i2rdk&qrcS3\rb_XKrau.rbMLNrcA'ardOj"reg]8rg*PS +rhBCmrj)O4rkABNrlY5ermh##rndY6roO.ErpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpTjP +rosFDro!e2rn%.srm(MarkeZJrjMg/ri,mjrgEbMrf6u5re(2trce?_rbqdMrau.=ra5Y1r`T5$r`&kp +r_WJfqb_8rau.Drb_XTrcS3drdXp"re^W8rfd>Nrh9=gric=/rjr*Frl>#] +rmC_rrn7;.ro="?rp0ROrpg![rqHEerqcWlrr(dTj8],Wrql]jrqHEarq$-YrpB^MroO._3r`];'r`B)"qc0LmJQ.2" +rD`brr`9#"r`K/'r`fA/ra>_7ral(CrbVRQrcJ-`rdFctre:?/rfR2Grg`t_ri#h#rjVm=rkeZUrlkAi +rn%/(ro!e:roX4GrpKdUrq-3arqQKhrqucoi;_j;rr)iorqcWgrq-3]rpg!Trp'LFro*k5rn@A%rmLei +rl4rSrk/6_4ra#M.r`f8'VHJIQJQ_qS +r`];*r`oG.ra5Y4raGe;rb)4Frb_XQrc8!^rd+Qnre:?.rf6uBrg<\Wrh]Uorj)O6rkABMrlY5brmUl! +rnRM2roO.Brp0RPrpp'\rqHEerql]mrr(dTj8],WrqucmrqQKcrq$-ZrpB^Mroa:@ro!e1rmh"rrltG_ +rkn`KrjMg2ri,mlrh'1Wrf[8@re^W-rdk&rrcnEbrc%jRrbMLHrau.?raPk7ra5Y2qd$((JR!b2rET>- +ra,S2ra>_7raYq=rb)4ErbVRPrc.p\rd+Qlrdt-)repc;rg*PPrh9=hri?%)rjr*Drl+l[rm1Snrn@A- +ro3q>rosFKrp]pXrq-3arqQKirqucoi;_j;rr)iorql]irq69^rpg!Trp0RIroF(;rnRM)rmUkmrlG)W +rkJHArj)O(rhTOdrgNhOrfR2rosFK +rp]pXrq-3arqQKirqucoi;_j;rr)iorql]irq??`rpg!Urp9XJroO.=rn[S,rmh"orlP/ZrkSNErjDa. +ri#glrgs+Wrg!JDrepc3re(3"rdFckrcS3]rc%jTrb_XMrbDFHph-I8JRsCDrFPk=rb2:GrbMLLrbh^R +rc.pZrcnEgrdOiure:?/rf6u?rg3VSrh07friH+(rj_sArkeZUrm(Mjrn%/(rndY7roX4ErpB^Srpp'] +rqHEerql]mrr(dTj8],WrqucmrqQKerq69]rpTjRroj@Cro3q6rn7;%rmC_grl>#Urk/6?rilC%rhf[f +rg`tTrf[8?reg]1rdt-"rd=]jrce?arc8!WrbqdQrbVRLqeE!BJSB[LrFu7GrbMLLrb_XQrc%jVrcJ-_ +rcnEhrdFcsreCE/rf$i=rfmDNrgs+`ri#h!rj)O7rk\TQrlP/crmUl!rn[S3roF(ArosFMrpg!Zrq??c +rqQKirqucoi;_j;rr)iorql]jrqHEbrpp'WrpB^LroX4@ro!e1rn%.trltGbrl"fMrji$6riH*trhKIa +rgWnPrfR2?repc0re(3#rdFcmrcnEcrcJ-[pi-4NUMbX#JSt=%rbq[Qrc8!ZrcS3ard"KjrdXoure19. +rf-o=rfmDKrgj%_rh]UorilC0rk/6Irl+l[rm:Yorn7;-ro*k#\rm1Smrn%/)ro!e8roa:GrpB^Srq$-]rq??erql]mqu,IQj8],WrqucmrqcWhrqHEarpg!V +rp9XKroX4>rndY/rn%.trm1Serl+lRrk/6=rj)O+ri,morh9=_rgWnQrfd>Drf@&;repc3re:?(rdt#u +qgbGkJU`6#pOE0mrdk'#re(3'reLK/repc9rfI,Brg!JMrgj%]rhBCiriH+&rj2U7rk8ErfI,?rf6u;TT"G\JW0Gaqi1T8rf@&? +rf[8Erg!JMrgNhUrgs+_rhKIjri5t"riuI1rj_s?rk\TPrlY5crmC_rrn@A-ro*kEqiRb;JWPGErK.#@qi^i?rfmDKrgEbTrgj%\ +rh07brh]Ulri?%$riuI0rji$@rkSNOrl>#_rmC_prn.5+rnm_7roX4Drp0ROrp]pXrq69brqQKhrql]n +qu5ORj8],Xrr)iorql]jrqQKerq-3]rp]pTrp9XKroX4?rnm_1rn@A&rmC_jrlb;[rkeZLrk/6ArjDa3 +riuI*riH+!rhf[jrhKIdrh0.\qjmVSURQh(JXZY/opl#Prh'(\qk="arh]Ulri?%#ric=,rj;[5rk&0D +rk\TPrlY5brm:Yprn.5*rnm_6roO.Crp'LMrpTjVrq-3arqQKgrql]mrr)`ni;_j;rr2fnrqucmrqZQf +rq-3]rpp'WrpB^Mroj@Dro3q7rn[S+rmh"rrm(McrlG)Wrk\TJrjr*=rjMg4rilC*riQ1#ri,[jrh]Ui +rhH$XJY@XgoV)8ZrhTOiqksFlri5t!riZ7)rj2U3rj_s=rk&0ErkeZRrlP/arm:Yorn%/&rndY5ro="@ +rosFJrpKdUrq$-]rqHEerqcWkrqucoqu5ORj8],Xqu-Nlrql]jrqHEbrq-3\rp]pTrp0RIroa:Aro*k5 +rnIG(rmh"prm(MerlG)Xrkn`NrkABErji$:rj;[1rilC*riZ7&riH+"ql63cJZ+-uoVhbhri?%"riQ1& +ric=*rj)O0rjDa8rjr*BrkJHJrkn`TrlP/arm1Skrmq)&rn[S3ro=">roj@IrpB^Srpp'[rq69brqQKh +rql]mrr)`ni;_j;rr2fnrqucmrqcWirqQKerq-3[rpTjSrp9XMroj@Cro3q7rnRM,rmq(srm:YirlkAa +rl4rUrkeZLrkABFrk&0?rj_s9rjDa4rj2L-rir-#JZs^0qQTk%rj)O0rj;[4rjMg8rji$?rk/6ErkJHJ +rkn`Srl>#]rltGgrmC_qrn%/(rndY5roF(Aroj@IrpB^Rrp]pYrq-3arqQKgrqcWkrqucoqu5ORj8\oR +rqucmqtgrj_X1VRD&aJ[YNcqmZI4qml^;rk&0BrkABHrkSNMrkn`Rrl>#\rlkAerm:Ymrmh##rn@A. +ro*k:roO.Crp'LMrpTjUrpp'[rq-3arqZHfrql]mq#94Oi;`]Rrr)iorql]krqQKerq69_rq$-Zrp]pT +rp0RIroa:Aro*k6rn[S,rn%/!rmLemrm1Sfrlb;_rl>#Xrl"fRrkeQJqnM^8VS%JmJ\:rootC@>ot^RD +rkn`Rrl4rYrlY5arm1SjrmC_ormh##rnRM0ro!e9roF(Arp'LLrpTjUrpg!Zrq-3_rqHEfrqcWkrquco +rr1XOi;`]Rrr)iorql]krqZQgrqHEbrq-3\rp]pUrpKdPrp0RIroO.=rnm_2rnRM,rn.5$rmUkorm:Yj +qp,2brlb;`rlP/\rl>#Wm)6!CJ]!&V!5nBGqo/QTrlG)\rlY5`rlkAerm1SjrmC_orm^r!rn7;*rn[S2 +ro*k;roa:Erp0RNrpKdSrpg!Zrq69brqQKgrqcWkrquZlrr1XOi;`]Rrr)iorqlKerqQKerq69^rpg!W +rpTjRrp9XKroa:Bro3q8rnm_1rnIG*rn%/"rm^qrrmC_lrm1JerltGdrlauWprTMVJ]NJb!QiI[anZ@3ir8!;k5OTDlMg2Mn,DhUnc&.Zo`"R`p\ssbqYpBk +r;6Hlrn@D1s82fmrVl`oqtp6eq#:$eo`"I]o)%qUmf)POkl0cEjo4<>ir7m8hu;L3h#?%,f`'J$ec+(t +e,.Sjd.5MUc@O8lcMGiZch5Zadf._peGe"tf)F;#g&Bb*h#?10hu;R5ir8$Ml2KoGkPjQAir7m2 +hu;I2h#?(-gABS#f`'Ltebdjkdt,u!df@kieG.SkfDaG%g&B_)g]$"*h>?+/i;V^7j8S-=kPj]ElMg/L +mf)\SnG`"XoD\C]pAXgcq"spbqu6NmrVQTGs4[MPrqlZkr;QTmqYp9ep\sjbo`"I]o)A1Yn,D_Rm/H>M +l2KoGkPjTBjS7a3i;VX5h>Z4&g[EgmfR_\+f_sIkg&'P$h##q)hu;R2ir8!;jo4HBkl0iGli-8MmJcSR +nG`"XoD\C]p&=^_q#:-hqtU*grVQTGs4[MPrqQHkr;QTmqYU*cq#:$bo`"I]nc&%Wn,DbSm/H>Ml2KoG +kPjTBjSS!7ipu%,hu;K!h1=C5h=9=uhYZ4'i;Va8j87p:jo4EAkkjWDli-;Nn,DhRnb_qWo_\C^q#:*g +qYpBkr:p6frn%2%s82fjrVl`oqtp6hq"sg_p&=U_o)A1VnG_nUmJcJLlhfrDkl0cEk4Rg7j7qW)iITs= +iUl+(iqqd5jSS*:kPj]El2L#Gm/-2In,DhUnc&.Zo`"O_p\Xa\qYpBkr:p6irmCbts7lTjrVQNlqu6Hh +q>U0gp\smcp&=U\oD\:ZnG_nRmf)VQm/H>GlLO0U0dp\XX_o`"I]o)A1YnFc8LmecDK +m/H>GlM0V7k^hrKkk+*6l1jQ@li-8MmJH>Kn,)VOnc&+YoD\C]p%\:\q#:*dqYpBkr:p6crmCbns7lTg +rVQNlqtU$bq"sg_p&"C\oD\=Xnb_hHmuHgemXafime-&AnG_tWo)A7Uo`"OVp\ss_qYU0hr:p6crm(Pk +s7QBgrVQNiqtp6bq>9sdp\"4Yo_%hNo)A0>n:C([nEBB=nbD\JoD\CTp&"L_q"X[aqYpBbr;QZcrm(Ph +s7lTarVQNlqtU$eq>U0^p\sm]p%@tJo9]$!nq$B%o(DVFo_A+VpA=U]q"sm^qYU0hr:U$`rlG,Ys7lTa +rVQNiqssU_q=XOCpRV#/p4;r0p>G]Bq"sm[qXsabr:U$`rkJKPs6osarUTmZqu6HDq47;3pjr54ptGQ@ +qXXOVr;QZ`rkJKGs7lT^rUp*]qgnV>qLSKoqU#*9qss[RrV6B#s/l=orm(J,r.4csr9O:.rUTrfs/l=< +rfmA4rIOq5rPJQ6s,[22rq$,?rdk'nre^Z+s+13$s+13$s4..#s+13$s+13$s4..#s+13$s+13$s4..# +s+13$s+13$s4..#s+13$s+13$s4..#s+13$s+13$s4..#s+13$s+13$s4..#s+13$s+13$s4..#s+13$ +s+13$s4.." +~> %APLeod +EI +76 0 0 116 202 0 cm +BI +/Width 228 +/Height 348 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$ +JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#O8je1oDX=?Jcs:Ln,@n: +oDO7=Jc3jln,AgVXoJ(ncMa"*Jc()slho0/o)>Zh]`7d+n,;qWp%s=:q>,[=Jbmaiqtos^n,<%\[f=#? +n,;qWp&"O\rqV-?r:kjp$;VDrpKdSqsaUUrq$-]q"F^]rqQKgqtg*qq_/,ro!e7ro="=roO.B +roj@Grp0RMrpKdSrp]pXrq$-]rq??crqQKgqtgro3q8rnm_3rnRM,rn.5$rmh"trmUbmqp=o[T[&,6J^4,;p!<#ZrlP/^rlb;brm(Mh +rm:YlrmUkrrn%/&rnIG.rnm_6roF(Aroj@IrpB^QrpTjVrq$-^rqHEerqZQirql]mqu-NngAg+2qu6Tn +rqucmrqcWhrqHEbrq-3]rpg!WrpKdOroj@EroF(;rnm_2rn7;&rm^qqrm:YjrlkAbrlP/[rl4rUrkn`P +qnW*Do"Cp5J\6QHrOhg:rkJ-ArkeZPrl"fUrlG)]rlkAfrm:YlrmUksrn.5*rndY4ro="=roa:Grp9XQ +rp]pWrq$-]rq69brqZQirql]mrr)iqgAg+2q#13irql]jrqQKerq69^rpp'XrpB^Nrp'LGroO.#Vrkn`OrkJHGrk/$pr +SZ%+ri5suriH+$riZ7(rilC-rj2U3rj_s=rk8#Vrk\TJrk&0>rjMg4rilC*riH+"ri5srrhoamqkX4dpnFXZJY@XgrLs"\qkO.d +rhf[mri#grri?%#rilC.rj;[6rjr*ArkJHLrl+lXrlkAermUkurn@A.ro*k:roX4Erp0ROrp]pXrq69b +rqQKgrql]mrr)`ni;_j;rr2oqrqucmrqZQgrqHEarq$-YrpKdProsFEro="8rnRM,rmq(rrm(Mdrl+lR +rkJHFrjr*:rj2U/riZ7%ri5sprhTOgrh9=aqk*bVqjaFNJX_4[!1WYOrgj%\qk3h[rhKIhrhoarriQ1' +rj)O1rjMgroj@IrpKdTrpp']rqHEerqcWkrr)`ni;_j;qu-NlrqcWhrqHEb +rpp'XrpTjProsFEro*k6rnRM*rmh"prlkA_rkn`Krjr*;riuI*ri?$rrh]Ugrh'1\rgWnSrg3VLrf[8B +plGE6rf!V1JW#);!/p`5qi1K6rfI,ArfmDIrg3VQrg`tZrh9=drhf[priQ1(rjDa8rk/6Irl+lZrm(Mj +rmq)&rn[S3roO.Brp'LNrp]pWrq-3_rqHEfrqlKhi;_j;rr)iorql]krqQKerq-3\rp]pTrp'LHroO.< +rndY.rmh"rrm(Mbrl+lOrjr*Drf@&rf[8Grg<\Urh07brhoasric=-rji$Arkn`WrltGirmq)%rn[S4roF(Brp0RNrp]pY +rq-3arqZQjrquZli;_j;rr)iorql]jrqQKdrq$-YrpKdOroj@Dro*k4rn@A&rmC_jrlP/WrkJHCrj2U- +ri5sorhBC`rgEbOrfd>Brf-o7reLK,re(3#rdXorrdFcnrd1;`JU)flqK`'erd=]nrdOirrdb!#re19* +re^W4rf6u@rg!JMrgj%]rhTOmriH+(rjVm=rk\TSrlb;frmh##rnRM2ro3q?rp'LLrpTjWrq-3arqQKh +rquZli;_j;rr)iorql]jrqHEbrq$-YrpKdOroa:Arnm_1rn@A$rm:Ygrl>#Srk8<>riuI)rhoahrgs+Y +rg!JGrf@&:re^W/rdt-"rdXoprd4WjrcnEdrcOlUJTQHbqK2^Zrc\9crd+Qjrd=]prdb!!re:?,reg]8 +rfR2ErgNhWrh07fri,n#rj;[7rkJHOrlP/brmLerrnIG/ro*k=rp'LLrpTjWrq-3`rqQKhrquZli;_j; +rr)iorql]jrqHEbrpp'WrpB^LroX4@ro!e1rn%.trltGbrl"fMrji$6riH*trhKIargWnPrfR2?repc0 +re(3#rdFcmrcnEcrcJ-[pi-4NUMbX#JSt=%rbq[Qrc8!ZrcS3ard"KjrdXoure19.rf-o=rfmDKrgj%_ +rh]UorilC0rk/6Irl+l[rm:Yorn7;-ro*kArepc2rdt-"rd=]jrce?` +rcA'Yrbh^PrbVRLTPB$mJSP$rrbMLLrb_XPrbqdVrcA']rcnEhrdFcsreCE/rf-o?rg!JNrh'1bri#h! +rj)O7rkSNOrlY5drmUl!rn[S3roF(Brp'LMrp]pXrq69crqZQjrqucoi;_j;rr)iorql]irq??`rpg!U +rp9XJroO.=rn[S,rmh"orlP/ZrkSNErjDa.ri#glrgs+Wrg!JDrepc3re(3"rdFckrcS3]rc%jTrb_XM +rbDFHph-I8JRsCDrFPk=rb2:GrbMLLrbh^Rrc.pZrcnEgrdOiure:?/rf6u?rg3VSrh07friH+(rj_sA +rkeZUrm(Mjrn%/(rndY7roX4ErpB^Srpp']rqHEerql]mrr(dTj8],WrqucmrqQKcrq$-ZrpB^Nroj@B +ro*k3rn%.urm1Sbrl"fNrjVm4ri?$orh07Zrg!JFrepc0rdt-!rd"KdrcA'XrbqdPrb;@Eral(>raYq9 +TO<=YJRJ=^qdKJ6rac"?rb2:Hrb_XRrcA']rcnEkrdk'%reg]7rfd>Krg`t^ri,n"rjDa=rk\TRrltGi +rmh#%rn[S5roX4Erp9XRrpp'\rqHEerql]mrr(dTj8],WrquclrqHEarq$-ZrpB^Mroa:?rnm_0rmh"r +rltG_rkn`KrjMg2ri,mkrgs+Vrfd>BreUQ,rdauprc\9_rc.pTrbVRJrau.?raPk7ra5Y2qd$((JR!b2 +rET>-ra,S2ra>_7raYq=rb2:Grb_XRrc8!\rd+Qlrdt-(reg];rg*PPrh07griH++rk&0Erl+l[rm1Sn +rn@A-ro*k=roj@IrpTjWrq-3arqQKirqucoi;_j;rr)iorqcWgrq-3]rpg!Trp'LFro*k5rn@A%rmLei +rl4rSrk/6_4ra#M.r`f8'VHJIQJQ_qS +r`];*r`oG.ra5Y4raGe;rb)4Frb_XQrc8!^rd+Qnre:?.rf6uBrg<\Wrh]Uorj)O6rkABMrlY5brmUl! +rnRM2roO.Brp0RPrpp'\rqHEerql]mrr(dTj8],Wrql]jrqHEarq$-YrpB^MroO._3r`];'r`B)"qc0LmJQ.2"rD`br +r`9#"r`K/'r`fA/ra>_7ral(CrbVRQrcJ-`rdFctre:?/rfR2Grg`t_ri#h#rjVm=rkeZUrlkAirn%/( +ro!e:roX4GrpKdUrq-3arqQKhrqucoi;_j;rr)inrqZQfrq-3\rpTjQrp'LEro*k5rn7;"rm1Scrkn`M +rj_s4riH*prgj%Urf[8_8rau.Drb_XTrcS3drdXp"reUQ8rfmDNrh9=griZ7.rjr*Frl>#]rmC_srn@A/ro="? +rp0ROrpg![rqHEerqcWlrr(dTj8],Wrql]jrqHEarpp'Wrp9XLroO.Mrh07iriuI2rk/6Jrl>#`rmUkurn[S5roO.DrpB^Rrq$-_rqQKhrqucoi;_j; +rr)inrqZQfrq-3\rpKdNroa:@rn[S-rmh"prlkA\rkABBrj2U(rh]Uarg!JEreUQ*rdFchrc.pTrb2:@ +ra5Y/r`B)!r_i_kr_lJ.1B)ZNDDZ4_V +GQ*'jL&Qu/OoCdJT)PYeYPts/]`,hJa8XB`e,Ituh#?=4jo4NDmJcSRoD\I_q#:-hr;QZQs69R\rr2lq +qu6Ejp\sgao)A(VlMfuGj8Rm6gA]Y%d/M8g`W!UN\c/o6WrAjoSGncPNrFh5JGsrqFoH@ZD#S)H@K'U4 +>5hS%;uTSl9`@]a8cD6Z7f,UQ6iKEO5_21Q5QO2rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S- +rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau. +rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.< +ra,S,r`/qqr_NMer_*5]r^ZrVr^6QLVEf\tJO'0!r^-TOr^?`Tr^ZrZr_3;er_`Yor`K/'ra5Y8rb2:J +rcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TRrltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BD +qu6Tmrql]jrq??_rpg!UrosFEro3q5rn@A$rm1Serl"fMrji$5ri5snrgWnMrf-o4rdauqrcS3YrbMLF +raGe4r`T5#r_i_kr_3;ar^d#Yr^HfRqa./FJO"cOrBU?Kr^6ZQr^QlWr^m)_r_NMjr`&l!r`];.rac"A +rb_XUrce?jre:?/rfI,Irgs+eriZ7,rk&0Grl4r^rmLesrnRM3roF(BrpB^Rrpp']rqHEgrql]mrr1sX +l2UY[rqucmrqZQerq$-ZrpKdMroX4>rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdO +rau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]f +rbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8?reLK' +rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_rf[8? +reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI&rhTO_ +rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABBriuI& +rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;ZrkABB +riuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qnrlb;Z +rkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau.rn[S-rm^qn +rlb;ZrkABBriuI&rhTO_rf[8?reLK'rd=]frbqdOrau._:rb2:JrcA'_rdOj#reg]:rgEbWrhoaurj2U9rk\TR +rltGjrmq)(ro*k;roj@KrpTjWrq69brqcWkrqucpj8\BDqu6Tnrql]jrqHEarpp'Vrp'LGro="6rn@A% +rm:Ygrl+lNrji$6ri5sorg`tPrf6u5rdauqrcS3ZrbVRHraGe4r`];%r_relr_3;ar^m)Zr^QcQr^6ZO +WBc#"K0TH(6N'7J6iKLQ7fGsX9)_N`:]=5jQ/"/Ac?ECDZ4_VGQ*'jL&Qu/OoCdJT)PYeYPts/ +]`,hJa8XB`e,Ituh#?=4jo4NDmJcSRoD\I_q#:-hr;QZoro=%Cs82fprVl]nq>U-fo`"F\mf)MNkPjN@ +h>Z.-ec*qpbl5T\^Ab\BZMpm'V>d"aPl?^BL]2i'I/\9fE;j\QBDu?=?N+.-#`rmUkurnRM4roO.DrpB^Rrq$-_rqQKhrqucorr1sXj8],Wrql]jrqHEarpp'Vrp'LG +ro="6rn@A%rm:Ygrl+lNrji$6ri5sorg`tPrf6u5rdauqrcS3[rb_XIraGe4r`];%r`&knr__;rb;@MrcA'_rdOj#reg];rgEbWrhob! +rjDa#`rmUkurnRM4roO.DrpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpKdNroa:@rn[S- +rmq(qrlkA\rkABBrj2U(rh]Uarg!JEre^W+rdFcirc.pTrb;@BraGe2r`T5$r_i_lr_EGcr^m)[r^WVM +JOP,YqF1BRr^d#[r_*5ar_NMjr_retr`];,raPk>rbMLPrc\9erdb!'repc=rgEbXri#h$rjMg=rkn`U +rm(Mmrn.5*ro3q=rosFLrpTjXrq??drqcWlrr(dTj8],Wrql]jrqHEarpp'Vrp'LGro="7rnIG'rm:Yg +rl+lNrji$7ri?$qrgj%SrfR2;re(3"rcnE`rbqdNral(_rCHoZ +r_!/_r_3;er_WSlr`/r!r`];-raGe;rbDFLrc8!_rd=]tre^W7rg!JRrhBClriuI2rkABMrlG)brm^r" +rn[S5roO.ErpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpKdOrosFCro!e2rmq(rrltG_rkSNG +rjDa.ri,mirgEbMrf$i2rdk&qrcS3\rb_XKrau.rbMLNrcA'ardOj"reg]8rg*PSrhBCmrj)O4rkABNrlY5ermh##rndY6 +roO.ErpB^Rrq$-_rqQKhrqucoi;_j;rr)inrqZQfrq-3\rpTjProsFDro!e2rn%.srm(MarkeZJrjMg/ +ri,mjrgEbMrf6u5re(2trce?_rbqdMrau.=ra5Y1r`T5$r`&kpr_WJfqb_8 +rau.Drb_XTrcS3drdXp"re^W8rfd>Nrh9=gric=/rjr*Frl>#]rmC_rrn7;.ro="?rp0ROrpg![rqHEe +rqcWlrr(dTj8],Wrql]jrqHEarq$-YrpB^MroO._3r`];'r`B)"qc0LmJQ.2"rD`brr`9#"r`K/'r`fA/ra>_7ral(C +rbVRQrcJ-`rdFctre:?/rfR2Grg`t_ri#h#rjVm=rkeZUrlkAirn%/(ro!e:roX4GrpKdUrq-3arqQKh +rqucoi;_j;rr)iorqcWgrq-3]rpg!Trp'LFro*k5rn@A%rmLeirl4rSrk/6_4ra#M.r`f8'VHJIQJQ_qSr`];*r`oG.ra5Y4raGe;rb)4Frb_XQ +rc8!^rd+Qnre:?.rf6uBrg<\Wrh]Uorj)O6rkABMrlY5brmUl!rnRM2roO.Brp0RPrpp'\rqHEerql]m +rr(dTj8],WrqucmrqQKcrq$-ZrpB^Mroa:@ro!e1rmh"rrltG_rkn`KrjMg2ri,mlrh'1Wrf[8@re^W- +rdk&rrcnEbrc%jRrbMLHrau.?raPk7ra5Y2qd$((JR!b2rET>-ra,S2ra>_7raYq=rb)4ErbVRPrc.p\ +rd+Qlrdt-)repc;rg*PPrh9=hri?%)rjr*Drl+l[rm1Snrn@A-ro3q>rosFKrp]pXrq-3arqQKirquco +i;_j;rr)iorql]irq69^rpg!Trp0RIroF(;rnRM)rmUkmrlG)WrkJHArj)O(rhTOdrgNhOrfR2rosFKrp]pXrq-3arqQKirqucoi;_j;rr)io +rql]irq??`rpg!Urp9XJroO.=rn[S,rmh"orlP/ZrkSNErjDa.ri#glrgs+Wrg!JDrepc3re(3"rdFck +rcS3]rc%jTrb_XMrbDFHph-I8JRsCDrFPk=rb2:GrbMLLrbh^Rrc.pZrcnEgrdOiure:?/rf6u?rg3VS +rh07friH+(rj_sArkeZUrm(Mjrn%/(rndY7roX4ErpB^Srpp']rqHEerql]mrr(dTj8],WrqucmrqQKe +rq69]rpTjRroj@Cro3q6rn7;%rmC_grl>#Urk/6?rilC%rhf[frg`tTrf[8?reg]1rdt-"rd=]jrce?a +rc8!WrbqdQrbVRLqeE!BJSB[LrFu7GrbMLLrb_XQrc%jVrcJ-_rcnEhrdFcsreCE/rf$i=rfmDNrgs+` +ri#h!rj)O7rk\TQrlP/crmUl!rn[S3roF(ArosFMrpg!Zrq??crqQKirqucoi;_j;rr)iorql]jrqHEb +rpp'WrpB^LroX4@ro!e1rn%.trltGbrl"fMrji$6riH*trhKIargWnPrfR2?repc0re(3#rdFcmrcnEc +rcJ-[pi-4NUMbX#JSt=%rbq[Qrc8!ZrcS3ard"KjrdXoure19.rf-o=rfmDKrgj%_rh]UorilC0rk/6I +rl+l[rm:Yorn7;-ro*k#\rm1Smrn%/)ro!e8roa:G +rpB^Srq$-]rq??erql]mqu,IQj8],WrqucmrqcWhrqHEarpg!Vrp9XKroX4>rndY/rn%.trm1Serl+lR +rk/6=rj)O+ri,morh9=_rgWnQrfd>Drf@&;repc3re:?(rdt#uqgbGkJU`6#pOE0mrdk'#re(3'reLK/ +repc9rfI,Brg!JMrgj%]rhBCiriH+&rj2U7rk8ErfI,?rf6u;TT"G\JW0Gaqi1T8rf@&?rf[8Erg!JMrgNhUrgs+_rhKIjri5t" +riuI1rj_s?rk\TPrlY5crmC_rrn@A-ro*kEqiRb;JWPGErK.#@qi^i?rfmDKrgEbTrgj%\rh07brh]Ulri?%$riuI0rji$@rkSNO +rl>#_rmC_prn.5+rnm_7roX4Drp0ROrp]pXrq69brqQKhrql]nqu5ORj8],Xrr)iorql]jrqQKerq-3] +rp]pTrp9XKroX4?rnm_1rn@A&rmC_jrlb;[rkeZLrk/6ArjDa3riuI*riH+!rhf[jrhKIdrh0.\qjmVS +URQh(JXZY/opl#Prh'(\qk="arh]Ulri?%#ric=,rj;[5rk&0Drk\TPrlY5brm:Yprn.5*rnm_6roO.C +rp'LMrpTjVrq-3arqQKgrql]mrr)`ni;_j;rr2fnrqucmrqZQfrq-3]rpp'WrpB^Mroj@Dro3q7rn[S+ +rmh"rrm(McrlG)Wrk\TJrjr*=rjMg4rilC*riQ1#ri,[jrh]UirhH$XJY@XgoV)8ZrhTOiqksFlri5t! +riZ7)rj2U3rj_s=rk&0ErkeZRrlP/arm:Yorn%/&rndY5ro="@rosFJrpKdUrq$-]rqHEerqcWkrquco +qu5ORj8],Xqu-Nlrql]jrqHEbrq-3\rp]pTrp0RIroa:Aro*k5rnIG(rmh"prm(MerlG)Xrkn`NrkABE +rji$:rj;[1rilC*riZ7&riH+"ql63cJZ+-uoVhbhri?%"riQ1&ric=*rj)O0rjDa8rjr*BrkJHJrkn`T +rlP/arm1Skrmq)&rn[S3ro=">roj@IrpB^Srpp'[rq69brqQKhrql]mrr)`ni;_j;rr2fnrqucmrqcWi +rqQKerq-3[rpTjSrp9XMroj@Cro3q7rnRM,rmq(srm:YirlkAarl4rUrkeZLrkABFrk&0?rj_s9rjDa4 +rj2L-rir-#JZs^0qQTk%rj)O0rj;[4rjMg8rji$?rk/6ErkJHJrkn`Srl>#]rltGgrmC_qrn%/(rndY5 +roF(Aroj@IrpB^Rrp]pYrq-3arqQKgrqcWkrqucoqu5ORj8\oRrqucmqtgrj_X1VRD&aJ[YNcqmZI4 +qml^;rk&0BrkABHrkSNMrkn`Rrl>#\rlkAerm:Ymrmh##rn@A.ro*k:roO.Crp'LMrpTjUrpp'[rq-3a +rqZHfrql]mq#94Oi;`]Rrr)iorql]krqQKerq69_rq$-Zrp]pTrp0RIroa:Aro*k6rn[S,rn%/!rmLem +rm1Sfrlb;_rl>#Xrl"fRrkeQJqnM^8VS%JmJ\:rootC@>ot^RDrkn`Rrl4rYrlY5arm1SjrmC_ormh## +rnRM0ro!e9roF(Arp'LLrpTjUrpg!Zrq-3_rqHEfrqcWkrqucorr1XOi;`]Rrr)iorql]krqZQgrqHEb +rq-3\rp]pUrpKdPrp0RIroO.=rnm_2rnRM,rn.5$rmUkorm:Yjqp,2brlb;`rlP/\rl>#Wm)6!CJ]!&V +!5nBGqo/QTrlG)\rlY5`rlkAerm1SjrmC_orm^r!rn7;*rn[S2ro*k;roa:Erp0RNrpKdSrpg!Zrq69b +rqQKgrqcWkrquZlrr1XOi;`]Rrr)iorqlKerqQKerq69^rpg!WrpTjRrp9XKroa:Bro3q8rnm_1rnIG* +rn%/"rm^qrrmC_lrm1JerltGdrlauWprTMVJ]NJb!QiI[anZ@3ir8!;k5OTDlMg2Mn,DhUnc&.Zo`"R`p\ssbqYpBkr;6Hlrn@D1s82fmrVl`oqtp6eq#:$e +o`"I]o)%qUmf)POkl0cEjo4<>ir7m8hu;L3h#?%,f`'J$ec+(te,.Sjd.5MUc@O8lcMGiZch5Zadf._p +eGe"tf)F;#g&Bb*h#?10hu;R5ir8$Ml2KoGkPjQAir7m2hu;I2h#?(-gABS#f`'Ltebdjkdt,u! +df@kieG.SkfDaG%g&B_)g]$"*h>?+/i;V^7j8S-=kPj]ElMg/Lmf)\SnG`"XoD\C]pAXgcq"spbqu6Nm +rVQTGs4[MPrqlZkr;QTmqYp9ep\sjbo`"I]o)A1Yn,D_Rm/H>Ml2KoGkPjTBjS7a3i;VX5h>Z4&g[Egm +fR_\+f_sIkg&'P$h##q)hu;R2ir8!;jo4HBkl0iGli-8MmJcSRnG`"XoD\C]p&=^_q#:-hqtU*grVQTG +s4[MPrqQHkr;QTmqYU*cq#:$bo`"I]nc&%Wn,DbSm/H>Ml2KoGkPjTBjSS!7ipu%,hu;K!h1=C5h=9=u +hYZ4'i;Va8j87p:jo4EAkkjWDli-;Nn,DhRnb_qWo_\C^q#:*gqYpBkr:p6frn%2%s82fjrVl`oqtp6h +q"sg_p&=U_o)A1VnG_nUmJcJLlhfrDkl0cEk4Rg7j7qW)iITs=iUl+(iqqd5jSS*:kPj]El2L#Gm/-2I +n,DhUnc&.Zo`"O_p\Xa\qYpBkr:p6irmCbts7lTjrVQNlqu6Hhq>U0gp\smcp&=U\oD\:ZnG_nRmf)VQ +m/H>GlLO0U0dp\XX_o`"I]o)A1YnFc8LmecDKm/H>GlM0V7k^hrKkk+*6l1jQ@li-8M +mJH>Kn,)VOnc&+YoD\C]p%\:\q#:*dqYpBkr:p6crmCbns7lTgrVQNlqtU$bq"sg_p&"C\oD\=Xnb_hH +muHgemXafime-&AnG_tWo)A7Uo`"OVp\ss_qYU0hr:p6crm(Pks7QBgrVQNiqtp6bq>9sdp\"4Yo_%hN +o)A0>n:C([nEBB=nbD\JoD\CTp&"L_q"X[aqYpBbr;QZcrm(Phs7lTarVQNlqtU$eq>U0^p\sm]p%@tJ +o9]$!nq$B%o(DVFo_A+VpA=U]q"sm^qYU0hr:U$`rlG,Ys7lTarVQNiqssU_q=XOCpRV#/p4;r0p>G]B +q"sm[qXsabr:U$`rkJKPs6osarUTmZqu6HDq47;3pjr54ptGQ@qXXOVr;QZ`rkJKGs7lT^rUp*]qgnV> +qLSKoqU#*9qss[RrV6B#s/l=orm(J,r.4csr9O:.rUTrfs/l=s4..#s+14G +s7lTgrVl`oqtp6eq>9sdp\sm`p&"CYoC)8LoC_bTp&"I[p\sseq=sgcqu6NgrV6Ads+14#s+13$s7u]o +rqQHkr;6Bgq>9sdp\=IZo`"IWo)A1JnGDbNo)&%Xo_\@]p\=O_q>U9gr:p6frhBFDs4..#s+11Ns8Vln +qu-Eirql]krqZQgq"Od\rq-3]rpoaOqsX"Ap$_eIrpp'[rq-*\qtL*brqZHfqtpBjrr)WkV>l,Hec14# +K)YiMq>UBlrquZjqtg3brqHEbrq-3]rposVqsaURrpKdPqs3_9rp0IJqsO@Mrp]pWrpp'[rq-*\qtL*b +rqcWkqu$?iq#7>oJcF:#JcC?%!<*#urqQHkr;6Bjq>U0gp\X[`o`"I]o)%qUn,D_Rm/-,Gl20]5kPj]E +l2L#Gm/-2In,DhUo)A7[o`"R`p\sseq=sjdr;6Hiri?'Ms4..#s+p^OrW3#tqu-Eirql]krqQKerq??` +rq$-[rp]gRrpB^Orp0IHqrn%BroNV0qrR_U-cpAX^`o)A1YnG_nUmJcGNl2KoGkPjTBjSn3:io]1uir8!; +jSn9?kPj]El2L#Jm/HGPn,DhUnc&.Zo`"R`p\sseqYpBhr;6Hfrj;]Vs4..#s,6pVrqcQorVc`nqtpBf +rqHEcrq69_rpp'XrpTjSrp9XMrosFGroa:Bro=";qr%J2rn[%uqq_/,ro!e8roF(?roa:ErosFJrpB^R +rp]pXrq$-^rq??crqQ9crquZlqu3u&JcF:#JcCl4q#:0h!;ucmrql]krqQKerq69_rq$-YrpTjSrp9XL +roj@EroF(=ro*k7rnm_2rnRM-rn?horn@A+rnRD,rnm_5ro*k:roX4DrosFJrp9XPrpTjVrq-*\rqHEf +rqcNhrqucoq#7c&JcF:#JcCu7q#:9krqu`l!W2cnqYp_s4..#s-3Q_rqQHkr;HKnqtpBfrqHEcrq-3]rpp'XrpTjQrp'LHroO.>ro*k6 +rnRM-rn7;&rmh"sqpPJjrm1/\rm1SjrmLeprm^qurn.5(rnRM1ro!e8roF(@rosFJrp9XQrpg!Zrq-3` +rqHEeq"t'gqu-Ek^&NZ`ec14#RfE0^qu-Eirqc]l!W)Zlq#:$ep&=U_o)A+WmJcJOlMfuGjo49=i;VX5 +h#?%,f`'G#e,Ibochl#bbl5f\b59B]bl5oeci2;jdf.bqf)FA%g]$"-hu;U6j8S3?l2L#JmJcSRnG`%Y +o`"O_p\t!fqYU0hr;QZirkSPbs4..#s.02brr2lqr;6BjqYp9jpAt$_rq69_rq$-YrpTjSrp'LHroO.> +ro*k6rn@A(rmq(trmC_krlkAbrlP/Zrl+lTrkn_@O`W!sXb5TT`cMl5j +e,IqtgA]n,hu;X7jSn?AlMg/Lmf)bUoD\C]pAXgcq"Xacr;6Hirl4ths4..#s.fVhrqlZkr;QTmqYp9h +pAjjep%A=Vrpp'Wrp9XMrosFEroF(:rn[S.rn.5"rmC_krlkAarl4rUrkeZLrk8p^nG_nUmf)JMkPjTBiVqa6h>Z(+ec+"rci22gaSs0X_u@IN +^AbeE\c0&:[/RE#Yl;!.[/RK4\Gj)=^&GeG_>_CPa8X3[cMl5je,Iqtg]$(/i;Vg:k5OTDmJcSRnG`%Y +o`"O_p\sseqYpBhr;6HlrlP1ks4..#s.fVhrVl`lqu6Bfp\sgao)S=^o()eKrpB^Nroa:Bro="7rnRM+ +rmh"rrm(MdrlP/Xrk\TJrk&0>rjMg4riuI,ric=&nuMbmrilC,rj2U2rjVmroj@Cro*k6rnRM*rmh"prltGbrl+lQ +rkABCrjDa3rilC(ri5sqrhTOgrh9=apn.GVqk="arhf[nri?%$riuI0rji$@rkSNOrl>#^rm1Skrmq)& +rn[S3roF(@rosFLrpTjVrq$-]rq??crqQKhrql]mq#13kdf4muec14#XT.tlrqucmrqZQgrqHEbrq-3\ +rp]pU!:0aQm/H8Kk5OE?hu;I2g&BP$df.Mjao9d7hT`1S_Sc5/YS+rEN +S,SrWSc58\UAgtfVZ*UpXo>R([Jm]8]`,bH`;[jWbl5oee,ItugA]t.ir8$_.I\,NZ3Y5YL$V>d7h +T`1M]Rf8WPPQ$aEOT(=?NqeV5NrG+=OT(FBQ2[-LS,T#YU&LkeWrB."Yl;*1\c0AC_u@^Ubl5rfdJh_r +g]$(/ir8'=kPjfHmf)_Tnc&.Zo`"Uaq#:*gqYpBkr;QZlrn.7%s4..#s0)J"rVl`oqtp6hq>U0gpAX[_ +nc&%WmJcGNklBcFjQ-=!rndY.rmh"rrltGarl4rSrk/6@rj;[.ri?$qrh9=_rgWnRrg!JFrf@&rf[8HrgNhWrh07eri#gurj)O2rjr*Erl"fWrlkAfrm^r#rnRM2ro=">rp'LLrpKdU +rq$-]rqHEerqZQirql]mq#/kFJcF:#JcDqRqu-NlrqlThrqQKerq69^rp]pUrp9XKroO4?!TN,i8/K_U2sK`6`*L]321N;ek:OoC[G +RJrcVU&LkeWrB1#Z2V63]`,_G`;[pYc2Q,if)FA%hYuL5jSnBBli-8Mn,DnWo`"R`p\sseqYpBkr:p6C +s+14#s+13Xs82fprVl`oqu6Hkq>U0gp\sgaoD\:ZnG_kTl2KiEj8e*=i8FUhrn%.urm1Sfrl4rRrkABA +rj)O+ri?$orh9=^rg<\MrfI,=reg]0re(3%rdautrdOWirdOirrdb!"re:?,repc9rfR2GrgWnYrhBCk +riQ1(rjMg;rkSNPrlG)armLerrn7;-ro*k[+ +\,O&>_Z%ORbPoiee,J#!h>Z@3jSn?Al2L&Kn,DhUoD\F^p\t!fqYpBkr;6HlrnII(s4..#s0_n(rr2lq +r;QTmqYp9hp\sjboD\:Zn,D\QlMfuGir7j9g]?3crn.5"rm1Scrl4rQrk&0=riuI(ri#gjrgj%WrfmDD +rf-o5re19%rdOiord4WhrcS!WqfMg]rcnEhrdFcqrdt-(re^W7rf[8Hrg`t]rhTOnric=-rji$BrkeZU +rm(Mjrmq)&rn[S4roX4Drp0ROrp]pXrq-3`rqQKhrql]mqu-Nng])j)ec14#[K$.'rr)iorql]krqQKe +rq-3\rp]pSrp'LHroF(;rn[Y.!SQ0*eGdhobPoK[_Z%7J[f3T3Y5YU6iqu6NmrVlfNs+14#s+13Xs7lQlr;QTmq>U0gpAX[_nG_nUm/H8K +k5OE?hu;F3fE'XWrmLekrlY5XrkJHCrj;[/ri5smrh'1Yrg!JFrepc1re(3!rd+QgrcJ-ZrbqdQrbVRL +qeH+GrbVRNrbh^SrcA']rd"Kkrdb!%reg]7rfd>Krg`t]ri#gtrj)O4rk&0GrlG)_rm:Yqrn7;-ro3q= +roj@IrpB^Srq$-]rqHEerqZQjrquZlg])j)ec14#[K$%#rql]krqZQfrq69^rp]pTrp0RIroX4=rn[S- +!7h2%f)F%qc2Pf`_Z%7J\,NZ3Xo>6tU&LV^Qi<-HNrFk6KDpB"HiA6gFoH@ZDZ4JOCAqoABDZBACAr#J +D>nJQEW1.\HN&?lJc:E'M>iS8Q2[3NTDk\dWW'+#[Jm`9^])4Oao9TbeGe,"h#?72ir8-?lMg/Ln,DnW +o`"R`q#:*gqYpEirS.@'s4..#s1&+.rqlZnr;QTmqYp9hpAX^`o)A+WmJcDMk5OH@i;VL1f)X8#e'n<@ +rlY5YrkABBrj2U+ri,mkrg`tTrf[8?re^W,rdOinrc\9]rc%jRrb;@Eral(>raY_3raYqU-fo`"I]nc%tUm/H5Jjo49=h>Z+,eH!nrcd2U4 +rl+lOrji$9ric=#rh]Udrg<\Lrf-o5re19"rd"Kdrc%jRrbDFFraYq9ra5P/pg*l*ra5Y4raPk=rb;@J +rbqdVrcnEjrdb!&repc:rg*PSrh9=hriQ1*rj_sArkeZUrm(Mjrn%/(rndY7roX4ErpB^Srpp'\rqHEe +rqcWkrqucoqu5RSJcF:#JcE7[rr2oqrqucmrqZQgrqHEarq$-YrpB^Mroa:@ro*k3rn%.u!7(\lci2#b +`;[ON\,N`5Xo>3sU&LP\Pl?dDMZ/;.JGsopFoHF\DZ4ALB)Z<>@/aO4?2e(->528">5he+?N+@3A,^'= +B`;lJE;jtYHN&?lK)UT*N;f">RJrcVU].:mYPts/^&GkI`r=6^dJh\qgA]q-ir8*>l2L&Kn,DkVo`"Ua +q#:*gqu6NmrVQTQs+14#s+13[s8N#srVl`oqu6Ejq#:$eo`"F\n,D\QlMfuGir7j7g]#b&dK%Mmc-?7. +rkn`KrjMg2ri?$orh07Zrfd>BreUQ*rdOimrcJ-ZrbVRIral(rbDFL +rc8!_rd=]qreCE0rfR2Irg`t^ri,n"rj;[:rkJHOrlb;erm^r$rn[S4roX4Drp0ROrp]pYrq??drqZQj +rqucoqu5RSJcF:#JcE7[rr2oqrqucmrqZQgrq??`rpp'Wrp9XLroX4=rndY.rmh"r!6bJfbl5W]_Z%4I +[f3Q2WrAalT)P,VP5^I?L]2l(If=TkErKtUCAqiEA,]j7>lIt,=oMP&=85hq=8l>$>5he+?iFL5Ac?EC +D#SDQG5cddJ,Y0$M>iS8Q2[6OT`1nhXT#R*\c0>B`;[pYc2Q2kf`'Y)hu;^9kPjfHmf)_ToD\F^p\t!f +qu6NmrVQTQs+14#s+13[s8N#srVl`oqu6Bip\smco`"F\mf)POl2KfDiVq^5g&BM#ciD5ibKKn'rkSND +rj2U-ri#gjrgj%SrfI,_8rau.E +rc%jYrce?ire(3*rf6uBrgEbYrhf[priuI3rk&0HrlP/armLetrnIG1roF(@rp'LMrpTjXrq69brqQKi +rqucoqu5RSJcF:#JcE7[rr2oqrqucmrqQKerq??`rpp'Vrp0RJroO.5hY'=8l5!<;TVn<;ons=8l>$=oM\*?N+I6 +B)ZNDDZ4_VGQ*$iKDpZ*NW,.@QidLoZ2V63]Df\Hao9QadJhbsgA^"/j8S3?lMg2Mn,DqXp&=^b +q#:0ir;QZlro*m.s4..#s1&+.rr2lqr;QQlq#:$epAX[_nc%tUli-/Jjo46Jrgs+cri5t%rjVm=rkeZUrlkAhrn%/'rnm_8roX4FrpB^Rrpp']rqHEe +rqcWkrr)`niW"K/ec14#\GuR-rr)iorqcWhrqHEcrq$-ZrpKdOrosFDro*k5rn7;"rm(Se!QrRa`;[RO +\c/o6Xo>6tT`1J\Q2ZjDMuJD/If=ZmFoH=YC]7uGA,]p9?2e%,=T2A#<;9Dh<;oqt=8lA%>lJ(/@fC!= +C&VuKF8gC_I/\`sLAm23PQ$pJT)PScWrB7%\,O#=_Z%XUbl6#hfDaM'hu;[8k5OZFmJcSRo)A=]p\sse +qYpBkrVQTQs+14#s+13[s8N#srVl`oqYp9hp\smcoD\:Zmf)POl2KfDiVq^5g&BM#ciD2hb0'_%rkSND +rj)O+ri#girg`tRrf@&:re19"rd+Qdrc%jRrb2:AraGe4r`fA)r`8Jer`9#"r`];,ra5Y6rau.Drbh^V +rce?hrdt-(rf-oArg<\Vrh]UorilC2rk&0HrlG)_rmLetrn@A/ro="?rp'LMrpTjWrq69brqQKhrql]n +qu5RSJcF:#JcE7[rr2oqrqucmrqQKerq??`rpp'Vrp0RJroO.Q.e)=8Q"m<;ons=8l>$>5hk-@/a[8B)ZQEE;jtY +GQ*$iKDpZ*NrG:BRJrlYVZ*UpZ2V63]Df\Hao9Qadf.ktg]$.1jSn<@lMg2Mn,DqXp&=^bq#:0ir;QZl +ro*m.s4..#s1&+.rr2lqr;QTmq>U0gpAX^`o)A+Wm/H;Lk5O?=hYu7.ec*tsbQ5r3rl4rSrk/6=riuI& +rhBC`rg<\Jrf-o4rdk&trcnE_rbh^Mrau.>ra5Y0r`fA)r`K/$pf@Aqr`K/'r`oG0raGe;rb;@Jrc%j[ +rd"Kmre:?.rf@&DrgNhZri#gtrj2U7rkABMrlY5brmUl!rnIG0roF(Arp0ROrp]pYrq69brqZQjrquco +qu5RSJcF:#JcE7[rr2oqrqucmrqZQgrq??`rq$-YrpB^MroX4>rnm_0rmh"r!6kPhc2Pc__u@@K[f3Q2 +X8\poT`1AYPQ$XBM>i/,J,X`mFoHC[C]8#HB)Z6Q.e)=Sl2!=T2J&>Q.n,?2e72@fC$>CAr)L +F8gC_HiATqL]352OoC^HS,T/]WW'("[/R]:^])4ObPoieeGe2$h>ZC4jo4KCm/HJQnc&1[pAXgcq>U9j +r;QZlro*m.s4..#s1&+.rr2lqr;QTmq>U0gp\sgaoD\7YmJcDMkPjN@iVqX3fDa5!cN2A_8ral(Brb_XR +rcJ-crdFctreUQ4rf[8Krgj%`ri5t$rjDa=rk\TRrltGirmh#%rn[S5roX4Erp9XQrpg![rqHEerqZQj +rqucoqu5RSJcF:#JcE7[rr2fnrqucmrqZQfrq-3]rpg!Urp9XJroO.=rn[S,rm_"p!RK*kao99Y^](eC +[JmB/WW&anTDk5WPl?[AM#N),If=WlG5cI[D>n;LBDuE?@K'X2?MIh*?N+=2@/aX7B)ZNDD#SAPErL=_ +IK"crLAm,1O8bIESc5>^VuEgtZMqB5^Ac"KaSsKadJhbsg]$(/j8S3?l2L)LnG`"Xo`"Uaq#:-hqu6Nm +rVQTQs+14#s+13[s8N#prVl`oqu6Hkq#9scoD\=[n,D_Rl2KfDir7g6g&BP&d/hYBrlb;]rkeZIrj_s4 +ri?$rrh9=[rg*PFreg]0rdauqrd"Kbrc%jRrbDFFral(M.qdBD4raYq>rb;@Irbh^UrcS3drdOiu +reUQ6rf[8Jrh'1bri,n#rj2U8rkSNOrlP/crmUl!rn[S3roF(Brp'LNrpg!Zrq-3arqQKhrql]mrr)`n +iW"K/ec14#\GuR-qu-Nlrql]krqQKdrq-3\rpTjRrp'LFroF(:rnIG(!7Ltte,IVkb5T?Y^Ab\BZi7*+ +WW&XkSGnoTP5^I?M>i/,If=]nG5cO]E;j_RC&VcEAc?6>A,'L3A,^$OEW1+[GlE-jK)UK' +MuJh;Pl@-NT`1bdX8]C'[f3r=_Z%ORbPoogec+8$hYuL5jo4NDli->Onc&.Zp&=^bq#:-hqu6NmrVQTQ +s+14#s+13Xs7lQlqu6Hkq>U-fp&=R^nG_kTli-,Ik5O?=h>Z+.ecF@Qrm:YhrlG)Urk8qe5tDrbMLMrbqdUrc\9erdFcsreCE/rf@&DrgEbX +rh]Unric=/rji$Crl+lYrm(Mmrn.5*ro!e8roa:Grp9XQrpp'\rq??drqZQirquZlg])j)ec14#[K$.' +rr)inqtgnANC\VZDC]8/LDZ4VSFT-I_H2`6kJGt9%MZ/V7PQ$sKSGo8^W;`mtZMqB5 +]`,eIa8X9]d/MVqg&Bh,ir8'=kl0oImJcVSoD\C]pAXmbqYpElrVlfNs+14#s+13Xs82fprVl`oqu6Hk +q#:$eo`"F\nG_hSlMg#HjSn-;h>l40g"HASrm:Yfrl+lRrk8<>rj)O+rhf[hrgs+VrfmDCre^W/rdk&t +rd=]ircS3]qf)OQqelCOpi-4Rrc\9drdFcrre(3+rf6u?rg*PRrh07driH+'rj;[:rkJHNrlY5brmLet +rnIG1ro=">rosFKrpKdUrq$-]rqHEfrqcWkrqucorr1[PJcF:#JcE.Xqu6TnrqucmrqcWhrqHEbrq$-Z +rpTjQrp'LGro3q8!8IV1h#>t*eGdenao9h#Z?frn7;%rmC_hrlP/XrkABCrjDa/ri?$rrh9=_rgEbMrfR2=re^W/rdt-"rdOinrd"Kfqfi$a +rd"Kird=]prdk'$reLK1rf-o?rg3VQrh'1dri,n!rj2U5rk/6Irl+lZrm1Slrn%/(rndY7roX4ErpB^R +rp]pYrq69brqQKhrql]mqu-Nng])j)ec14#[K$.'rr)iorql]krqZQgrqHEarq$-Zrp]pTrosFEro=(; +!T;o8g]#h(e,I\mbl5W]_>_1J\Gif5Y5YL$V#I(eSc5#UQ2ZmENW+h7LAli)K)U<"J,XolI/\ToJ,Xut +K)UK'L]352NrG1?QN!BQT)PJ`WW'%!Yl;*1])KME`W!sXcMl8kec+8$hYuL5jo4KClMg8OnG`"Xo`"Ua +q#:*gqYpBkr;6HlrnII(s4..#s0)J"rVl`oqtp6hq#:$ep&=R^nG_nUm/H8KjoFBAio9sprn[S+rmUkm +rlb;[rkeZKrji$9ric=%ri#gjrgs+Yrg3VIrfI,=repc4reCE*pk/HsreCE-reg]6rf6u?rg*POrgj%^ +rhTOnriZ7*rjVm>rkSNOrlY5brmC_rrn7;-ro*k;roj@Irp9XQrpp'\rq??crqQKhrql]mq#/kFJcF:# +JcDqRrr2fnrqucmrqcWhrqHEcrq-3[rpTjRrp'LH!9F7Cjo462o+M>iG4N;ek:OoCRDQN!?PSc5>^VZ*RoXo>X*[Jmf;^]).M +aSsH`d/MPog&Be+i;Vg:k5OWEm/HGPnG`%Yo`"R`p\sseqYpBkr;QZlrn.7%s4..#s0)J%rqlZnr;QTm +qYp#^rm1Skrmq)'rndY6 +roO.Brp0ROrp]pWrq$-]rqHEerqZQirql]mrr)`nf`-O&ec14#YQ+V$q#13irql]krqQBbrq-3]rp]pU +rp9^N!UAtLk5OH@i;VR3gA]\&dJhGjbPoK[_Z%:K\c0&:Z2Up*X8]!qUAghbT)P8ZS,SfSQN!0EPl?sI +QidFmXo>R(Zi7K6^&GeG_u@dWbl5rfeGe,"h#?41iVqs;roj@Dro="8rn[S+rmh"r +rm(Mbrl4rRrk8#^rm1Smrmq)%rndY6roF(Arp'LLrpTjWrq-3_rqHEerqZQirql]mqu-t*ec*qpc2Plb`W!^Q^Ab_C[JmN3Yl:d(WrApq +V#I.gU&L_[TDP;YU&LhdVZ*OnX8]:$Z2V-0\c08@_#D:Oa8X<^ci2>kf)FD&h>Z@3jSn<@l2L)Ln,DkV +oD\C]pAXgcq#:-hqu6NgrVlfEs+14#s+13Is8N#prVQNlqu6Hkq#:$epAX^`nc8+Zn*g8Crp9XKroX4? +rnm_1rn@A&rmC_jrlb;\rl"fOrk8hu;I2g&BP$df.Slb5TK]`W!^Q^AbbD\Giu:[/R?0 +YPt]nXT#C%YPtd*Zi7B3\Gj,>^&GhH`;[dUao9Tbd/MMnfDaM'hYuL5j8S6@lMg/Ln,DhUo)A:\pAXgc +q>U6iqtU*arm1Uqs4..#s.fVkrr2lqr;6BjqYpMl2KiEjSn*:h>Z1.f`'D"dJhJkbl5ca`rU-hp&Xm\rq-3]rpg!VrpB^Nroj@Dro="9rndY/rn%/"rmUknrm(MdrlG)Zrl"fQrk\TLrkJ$< +rkJHJrk\TOrl"fVrlY5arm1Slrm^qurn@A,rnm_7roF(Arp'LLrpKdTrpp'\rq??crqZQirqlKgp&<)5 +JcF:#JcD;@q#:9krquZjrqcWi!;?Ngp\sjbo`"I]nG_nUmf)MNkl0]Cj8S$:hu;@/f`'J$e,Iboci2/f +bPoW_`rUBlrquZjqtg3brqHEbrq-3]rposVqsaURrpKdPqs3_9 +rp0IJqsO@Mrp]pWrpp'[rq-*\qtL*brqcWkqu$?iq#7>oJcF:#JcC<$!WW2prqlZkr;QTmqYpl,Hec14#JcGQGq#:'erqucmqtg3c +qtU0brq?6^qt0dWn+-JLp%87VqtBp]rqQKgq"k!erquQiq#7#fJcF:#JcC<$pAapeq#13iqtp0bqt^-a +p%S7Tq"=FUo(W.YrqZ?crqlTjq#1!eSH"0?ec14#JcGHDo)AXep&+^aqtg!]rqPXMqtTaXrqcQZJcGECJcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$ +JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:# +JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#JcC<$JcC<$JcF:#J, +~> %APLeod +EI +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +16 510 m +60 510 l +62.761421 510 65 507.76141 65 505 c +65 461 l +65 458.23859 62.761421 456 60 456 c +16 456 l +13.238579 456 11 458.23859 11 461 c +11 461 11 461 11 461 c +11 505 l +11 507.76141 13.238579 510 16 510 c +16 510 16 510 16 510 c +h +16 510 m +f +1 J +1 j +0 0 0 sc +1 0 0 -1 -54 551 cm +70 41 m +114 41 l +116.76142 41 119 43.238586 119 46 c +119 90 l +119 92.761414 116.76142 95 114 95 c +70 95 l +67.238579 95 65 92.761414 65 90 c +65 90 65 90 65 90 c +65 46 l +65 43.238586 67.238579 41 70 41 c +70 41 70 41 70 41 c +h +70 41 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 38 483 cm +/F1.1[ 12 0 0 -12 0 0]sf +-18.351562 4 m +(!"#$%#)[ 6.673828 6.673828 6.673828 3.333984 6.673828 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +212.76001 403 m +266.76001 403 l +266.76001 349 l +212.76001 349 l +h +212.76001 403 m +f +0 0 0 sc +1 0 0 -1 -54 551 cm +266.76001 148 m +320.76001 148 l +320.76001 202 l +266.76001 202 l +h +266.76001 148 m +S +1 1 1 sc +CM +212.76001 305 m +266.76001 305 l +266.76001 251 l +212.76001 251 l +h +212.76001 305 m +f +0 0 0 sc +1 0 0 -1 -54 551 cm +266.76001 246 m +320.76001 246 l +320.76001 300 l +266.76001 300 l +h +266.76001 246 m +S +1 1 1 sc +CM +212.76001 207 m +266.76001 207 l +266.76001 153 l +212.76001 153 l +h +212.76001 207 m +f +0 0 0 sc +1 0 0 -1 -54 551 cm +266.76001 344 m +320.76001 344 l +320.76001 398 l +266.76001 398 l +h +266.76001 344 m +S +1 1 1 sc +CM +212.76001 109 m +266.76001 109 l +266.76001 55 l +212.76001 55 l +h +212.76001 109 m +f +0 0 0 sc +1 0 0 -1 -54 551 cm +266.76001 442 m +320.76001 442 l +320.76001 496 l +266.76001 496 l +h +266.76001 442 m +S +3 w +293.76001 202.5 m +293.76001 245.5 l +S +293.76001 300.5 m +293.76001 343.5 l +S +293.76001 398.5 m +293.76001 441.5 l +S +322 150.5 m +376 150.5 l +S +322 160.5 m +376 160.5 l +S +322 170.5 m +376 170.5 l +S +322 180.5 m +376 180.5 l +S +322 190.5 m +376 190.5 l +S +322 199.5 m +376 199.5 l +S +322 248.5 m +376 248.5 l +S +322 258.5 m +376 258.5 l +S +322 268.5 m +376 268.5 l +S +322 278.5 m +376 278.5 l +S +322 288.5 m +376 288.5 l +S +322 297.5 m +376 297.5 l +S +322 346.5 m +376 346.5 l +S +322 356.5 m +376 356.5 l +S +322 366.5 m +376 366.5 l +S +322 376.5 m +376 376.5 l +S +322 386.5 m +376 386.5 l +S +322 395.5 m +376 395.5 l +S +322 444.5 m +376 444.5 l +S +322 454.5 m +376 454.5 l +S +322 464.5 m +376 464.5 l +S +322 474.5 m +376 474.5 l +S +322 484.5 m +376 484.5 l +S +322 493.5 m +376 493.5 l +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 243.38501 376.5 cm +-19.5 4 m +(&%'\(\)*)[ 8.666016 6.673828 6.673828 6.673828 3.333984 0.000000 ] xS +1 0 0 -1 239.76001 277 cm +-19.5 4 m +(&%'\(\)+)[ 8.666016 6.673828 6.673828 6.673828 3.333984 0.000000 ] xS +1 0 0 -1 239.76001 178.75 cm +-19.5 4 m +(&%'\(\),)[ 8.666016 6.673828 6.673828 6.673828 3.333984 0.000000 ] xS +1 0 0 -1 243.38501 81.5 cm +-19.5 4 m +(&%'\(\)-)[ 8.666016 6.673828 6.673828 6.673828 3.333984 0.000000 ] xS +1 0 0 -1 371.52499 376.5 cm +-29 4 m +(./0/12\)34$5)[ 7.330078 2.666016 3.996094 2.666016 6.673828 6.673828 3.333984 8.666016 6.000000 3.333984 0.000000 ] xS +1 0 0 -1 371.52499 278.5 cm +-29 4 m +(./0/12\)34$5)[ 7.330078 2.666016 3.996094 2.666016 6.673828 6.673828 3.333984 8.666016 6.000000 3.333984 0.000000 ] xS +1 0 0 -1 371.52499 180.5 cm +-29 4 m +(./0/12\)34$5)[ 7.330078 2.666016 3.996094 2.666016 6.673828 6.673828 3.333984 8.666016 6.000000 3.333984 0.000000 ] xS +1 0 0 -1 371.52499 82.5 cm +-29 4 m +(./0/12\)34$5)[ 7.330078 2.666016 3.996094 2.666016 6.673828 6.673828 3.333984 8.666016 6.000000 3.333984 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +CM +239.76001 33 m +248.76001 24 l +239.76001 15 l +230.76001 24 l +h +239.76001 33 m +f +1 w +1 0 0 -1 -54 551 cm +293.76001 518 m +302.76001 527 l +293.76001 536 l +284.76001 527 l +h +293.76001 518 m +S +3 w +293.76001 496.5 m +293.76001 517.5 l +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 299.625 22 cm +-31.5 4 m +(6)s +-25.5 4 m +(\(07/1"$/%1)[ 6.673828 3.996094 9.996094 2.666016 6.673828 6.673828 3.333984 2.666016 6.673828 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +11 303.5 m +65 303.5 l +65 202.5 l +11 202.5 l +h +11 303.5 m +f +1 w +0 0 0 sc +1 0 0 -1 -54 551 cm +65 247.5 m +119 247.5 l +119 348.5 l +65 348.5 l +h +65 247.5 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 38 253 cm +-19.007812 4 m +(8"$$\(09)[ 8.003906 6.673828 3.333984 3.333984 6.673828 3.996094 0.000000 ] xS +3 w +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 -54 551 cm +266.76001 174.5 m +119.40833 278.63098 l +S +263.13501 274 m +119.49516 294.14407 l +S +263.13501 372.25 m +119.45869 309.91345 l +S +266.76001 469.5 m +119.35686 324.84656 l +S +1 1 1 sc +CM +205.95251 510 m +273.5675 510 l +273.5675 456 l +205.95251 456 l +h +205.95251 510 m +f +1 w +0 0 0 sc +1 0 0 -1 -54 551 cm +259.95251 41 m +327.5675 41 l +327.5675 95 l +259.95251 95 l +h +259.95251 41 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 239.76001 483 cm +/F2.1[ 12 0 0 -12 0 0]sf +-20.05957 -3 m +(!"#$%$&)[ 6.433594 3.468750 4.910156 6.685547 7.447266 6.685547 0.000000 ] xS +-25.429688 12 m +('%&$#\(\)*$)[ 3.457031 7.447266 4.488281 6.685547 4.910156 4.412109 6.626953 6.146484 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 -54 551 cm +119.50002 68 m +259.95251 68 l +259.95251 67 l +S +3 w +295 95 m +295 149 l +S +1 1 1 sc +CM +215.5 438.5 m +266.5 438.5 l +266.5 423.5 l +215.5 423.5 l +h +215.5 438.5 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 241 431 cm +-20.05957 4.5 m +(!"#$%$&)[ 6.433594 3.468750 4.910156 6.685547 7.447266 6.685547 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +124 490.5 m +156 490.5 l +156 475.5 l +124 475.5 l +h +124 490.5 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 140 483 cm +-10.839844 4.5 m +(+,-)[ 8.314453 6.462891 0.000000 ] xS +ep +end +%%Trailer +%%EOF ADDED Docs/Images/nodes.graffle Index: Docs/Images/nodes.graffle ================================================================== --- Docs/Images/nodes.graffle +++ Docs/Images/nodes.graffle cannot compute difference between binary files ADDED Docs/Images/nodes.png Index: Docs/Images/nodes.png ================================================================== --- Docs/Images/nodes.png +++ Docs/Images/nodes.png cannot compute difference between binary files Index: Docs/Images/packet.eps ================================================================== --- Docs/Images/packet.eps +++ Docs/Images/packet.eps @@ -1,17 +1,17 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%HiResBoundingBox: 0.000000 0.000000 472.000000 74.000000 +%%HiResBoundingBox: 0.000000 0.000000 420.000000 74.000000 %APL_DSC_Encoding: UTF8 %APLProducer: (Version 10.5.8 (Build 9L30) Quartz PS Context) %%Title: (Unknown) %%Creator: (Unknown) %%CreationDate: (Unknown) %%For: (Unknown) %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%Pages: 1 -%%BoundingBox: 0 0 472 74 +%%BoundingBox: 0 0 420 74 %%EndComments %%BeginProlog %%BeginFile: cg-pdf.ps %%Copyright: Copyright 2000-2004 Apple Computer Incorporated. %%Copyright: All Rights Reserved. @@ -639,11 +639,11 @@ %%EndFile %%EndProlog %%BeginSetup %%EndSetup %%Page: 1 1 -%%PageBoundingBox: 0 0 472 74 +%%PageBoundingBox: 0 0 420 74 %%BeginPageSetup cg_md begin bp sdmtx %RBIBeginFontSubset: LucidaGrande @@ -653,65 +653,58 @@ end readonly def 14 dict begin/FontName /LucidaGrande def /PaintType 0 def /Encoding 256 array 0 1 255{1 index exch/.notdef put}for dup 33 /colon put - dup 34 /T put - dup 35 /Y put - dup 36 /P put - dup 37 /E put - dup 38 /O put - dup 39 /F put - dup 40 /R put - dup 41 /M put - dup 42 /D put - dup 43 /A put - dup 44 /semicolon put - dup 45 /C put - dup 46 /K put - dup 47 /S put - dup 48 /U put + dup 34 /F put + dup 35 /R put + dup 36 /O put + dup 37 /M put + dup 38 /D put + dup 39 /A put + dup 40 /T put + dup 41 /semicolon put + dup 42 /C put + dup 43 /K put + dup 44 /S put + dup 45 /U put readonly def 42/FontType resourcestatus{pop pop false}{true}ifelse %APLsfntBegin {currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if /FontType 42 def /FontMatrix matrix def /FontBBox[2048 -2186 1 index div -1509 2 index div 3361 3 index div 2381 5 -1 roll div]cvx def /sfnts [< - 74727565000900000000000063767420000000000000009C000006B66670676D000000000000075400000D33676C7966000000000000148800000ED06865616400000000000023580000003868686561000000000000239000000024686D747800000000000023B4000000446C6F636100000000000023F8000000246D617870000000000000241C0000002070726570000000000000243C00000CAF062B0019000005C80025000005C800250000000000000000000000000000043E001800000000FFDB00000000FFE800000000FFDB0000FE75FFE8000000000000FED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000080000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5006F000CFF3BFF91FFF400BF00680014FF41FF98FFEC00000000000000000000000000000000000000000082FF7E00DF00D200C900B400AD009B00DE00D200C500BE00B900AB00E300D200C600B900AD00950062000000A4009D0085000000AA00A10094007200AD00A100940085000000C5000000000000000000000000000000000000012800000000000000000000000000F700F700970141004A00F7000000000000000000000000000000000094009400940000000000000000000000000000000000000000000000000000000000000000000000000000000000E6FF1A00000000000000000000000000000000000000DEFF22007C007C027502E400750075009A009400AC00A0000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A0001900000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B00000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B0000006F0073000000000000000000B9008C010A007E00C50031004F009A004200000000000000000000000000000000000000000000012800F700A00063009400820082009700C600B300B3007C007B009100000000000000000000000006440000000004A00019000000000800043E0018000004000000000000000534000000000000FFE70000FF780000000000C500940000FED80000000000E100760063003C002D001E000FFF1FFF3BFF48FF65FF79FF9DFFBD00DE00B900AD00A600DE00D200C500BF00B900A900910197007C0062005C005602CC01ED0197007C006F00620056004A011D010D009E00940035000000000000000000000000000005C8002500000503 + 74727565000900000000000063767420000000000000009C000006B66670676D000000000000075400000D33676C7966000000000000148800000C906865616400000000000021180000003868686561000000000000215000000024686D74780000000000002174000000386C6F636100000000000021AC0000001E6D61787000000000000021CC000000207072657000000000000021EC00000CAF062B0019000005C80025000005C800250000000000000000000000000000043E001800000000FFDB00000000FFE800000000FFDB0000FE75FFE8000000000000FED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000080000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5006F000CFF3BFF91FFF400BF00680014FF41FF98FFEC00000000000000000000000000000000000000000082FF7E00DF00D200C900B400AD009B00DE00D200C500BE00B900AB00E300D200C600B900AD00950062000000A4009D0085000000AA00A10094007200AD00A100940085000000C5000000000000000000000000000000000000012800000000000000000000000000F700F700970141004A00F7000000000000000000000000000000000094009400940000000000000000000000000000000000000000000000000000000000000000000000000000000000E6FF1A00000000000000000000000000000000000000DEFF22007C007C027502E400750075009A009400AC00A0000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A0001900000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B00000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B0000006F0073000000000000000000B9008C010A007E00C50031004F009A004200000000000000000000000000000000000000000000012800F700A00063009400820082009700C600B300B3007C007B009100000000000000000000000006440000000004A00019000000000800043E0018000004000000000000000534000000000000FFE70000FF780000000000C500940000FED80000000000E100760063003C002D001E000FFF1FFF3BFF48FF65FF79FF9DFFBD00DE00B900AD00A600DE00D200C500BF00B900A900910197007C0062005C005602CC01ED0197007C006F00620056004A011D010D009E00940035000000000000000000000000000005C8002500000503 00000000000008000000000000000400000000000000047B000000000000FFDB00000000FFE70000000000000000FF3B00000000000000000192011700F700C800C300B800AD00A6009C0092008A0080007B00740068005A0050001E003A00000192011700F700E500D200C500B900AD008A0080007B00740068005E0054004A000000000141003E00DE00DE00000000000000000000000005D500190000056600000000000008000000000000000400000000000000043E001800C503C200DE00000000FFE70000000000000000FE00000000000000000000CD00C500AD00A100940088007C0075006F0063003100F700C600B900A0006300C500B300A10088007C0075006F00630056003100F700C600B900C600940082006F0063003E003200190000FF3AFF7EFF9DFFCE0057006F02B3012801830088008800000000000000000000000000000000000000AC008800C501ED006201BC001800DE013E000000000000000000000000000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190000000000000000000000000000007C00AC00C500960000000000000000000000000085005D006500000000000000000000000000000000000000000000000000000000080000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000005ED01B0009400D200B600AC007B007B007C00000000000000000000000000000000000000B904A000C50063007A005100410087014100DE01280068009D0064007500D2012000DE00D100B40000000000000000000000000000000000000000006100AC00D0006F006F036603660000000000000000000000000000000000000000000000000000004A004A004A000000000000000000000000000000000000000005ED00000000000008000104005C000004000000000000000000000000000000FFDB000000000000000000000000000000000000000000000000003E050300D8011200AD009300D800F700AD00B700790067050300D800920000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190082006E002A002A002A002A000040405249483C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002C0118B0184358456AB0194360B00C2344231020B00C4EF04D2FB000121B21231120332F592D2C0118B0184358B0052BB000134BB0145058B100403859B0062B1B21231120332F592D2C0118B01843584EB0032510F221B000124D1B2045B00425B00425234A6164B028 5258212310D61BB0032510F221B0001259592D2CB01A435821211BB00225B0022549B00325B003254A612064B01050582121211BB00325B0032549B0005058B0005058B8FFE238211BB0003821591BB0005258B01E38211BB0003821595959592D2C0118B0184358B0052BB000134BB0145058B90000FFC03859B0062B1B21231120332F592D2C4E018A10B10C194344B00014B1000CE2B00015B90000FFF03800B0003CB0282BB0022510B0003C2D2C0118B0002FB00114F2B00113B001154DB000122D2C0118B0184358B0052BB00013B90000FFE038B0062B1B21231120332F592D2C0118B018435845646A23456469B01943646060B00C2344231020B00CF02FB000121B2121208A208A525811331B212159592D2C014BB0C85158B10B0A432343650A592D2C004BB0C8515800B10A0B4323430B592D2C00B00C2370B1010C3E01B00C2370B1020C453AB10200080D2D2CB0122BB0022545B00225456AB0408B60B0022523442121212D2CB0132BB0022545B00225456AB8FFC08C60B0022523442121212D2CB000B0122B2121212D2CB000B0132B2121212D2C014BB0C85158B00643B00743650A592D2C2069B04061B0008B20B12CC08A8CB8100062602B0C642364615C58B00361592D2CB1000325456854B01C4B505A58B0032545B0032545606820B004252344B0042523441BB00325204568208A2344B00325456860B003252344592D2CB00325204568208A2344B003254564686560B00425B0016023442D2CB00943588721C01BB01243588745B0112BB00D2344B00D7AE41B038A45186920B00D23448A8A8720B0A05158B0112BB00D2344B00D7AE41B21B00D7AE4595959182D2C208A4523456860442D2C456A422D2C01182F2D2C0118B0184358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB0194360B00C2344218A10B00CF6211B21212121592D2C01B0184358B0022545B002254564606AB00325456A6120B00425456A208A8B65B0042523448CB00325234421211B20456A4420456A44592D2C012045B00055B018435A584568234569B0408B6120B080626A208A236120B003258B65B0042523448CB00325234421211B2121B0192B592D2C018A8A45642345646164422D2CB00425B00425B0192BB0184358B00425B00425B00325B01B2B01B0022543B04054B0022543B000545A58B003252045B040614459B0022543B00054B0022543B040545A58B004252045B04060445959212121212D2CB0032520B0072587052E23208AB00425B00725B0142B1021C4212D2CC02D2C4B525845441B2121592D2CB00243583DED181BED592D2C4B505845441B2121592D2C01184B52588A2FED1B212121592D2C4B53234B515A58B003254568B003254568B003256054582121211BB00225456860B003252344 2121591B212121592D2CB00243583DCD181BCD592D2C462346608A8A462320468A608A61B8FF8062232010238AB10C0C8A70456020B0005058B00161B8FFBA8B1BB0468C59B0106068013A2D2C2045B0032546524BB013515B58B0022546206861B00325B003253F2321381B2111592D2C2045B00325465058B0022546206861B00325B003253F2321381B2111592D2C004BB0C8515800B00743B006430B592D2C8A10EC2D2CB00C4358211B2046B0005258B8FFF0381BB0103859592D2C20B0005558B8100063B003254564B00325456461B0005358B0021BB04061B00359254569535845441B2121591B21B0022545B00225456164B028515845441B212159592D2C21210C6423648BB84000622D2C21B08051580C6423648BB82000621BB200402F2B59B002602D2C21B0C051580C6423648BB81555621BB200802F2B59B002602D2C0C6423648BB84000626023212D2C184B5358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB00C2344218A10B00CF6211B218A11231220392F592D2CB00225B002254964B0C05458B8FFF838B008381B2121592D2CB0134358031B02592D2CB0134358021B03592D2CB00A2B2310203CB0172B2D2CB00225B8FFF038B0282B8A102320D023B0102BB0054358C01B3C59201011B00012012D2C4B53234B515A58381B2121592D2C01B0022510D023C901B00113B0001410B0013CB001162D2C01B00013B001B0032549B0031738B001132D2C4B53234B515A5820458A60441B2121592D2C184B5358B00425B004254964B00325B00325496468B0408B6120B080626AB00225B00225618CB00C234421B004251023B00CF61BB00425B0042511122320392F59CC21212D2C0118B0184358B0052546234564611B21B00425B004254A59B00E23442310B00EEC2310B00EEC2D2CB01B435820B0016045B000515820B0016020452068B0005558B0206044211B212121591B20B0016020452068B0005558B8FFE06044B01C4B50582045B02060441B21591B21212159591B21592D2C4B53234B515A58381B2121592D2C4B5458381B2121592D2C4B52587D1B7A592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B00326 5358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592DB8005D2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8005E2C2020456944B001602DB8005F2CB8005E2A212DB800602C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800612C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800622C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800632C2020456944B001602020457D691844B001602DB800642CB800632A2DB800652C4B20B003265358B0801BB040598A8A20B003265358B0022621B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B80003265358B0032545B8014050582321B8014023211BB003254523212321591B2159442DB800662C4B535845441B2121592DB800672C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800682C2020456944B001602DB800692CB800682A212DB8006A2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8006B2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8006C2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8006D2C2020456944B001602020457D691844B001602DB8006E2CB8006D2A2DB8006F2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800702C4B535845441B2121592DB800712C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800722C2020456944B001602DB800732CB800722A212DB800742C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800752C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800762C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800772C2020456944B001602020457D6918 44B001602DB800782CB800772A2DB800792C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8007A2C4B535845441B2121592D0000020100000005000500000300070014B706020400060204002FCDD4CD002FCDD4CD3130211121112521112101000400FC400380FC800500FB00400480000000000200E1000001A6043E000300070057B70004100420040304B8FFC0B31D244804B8FFC04029151948049E050F0F011F012F01030D0301401D24480140151948019E000704038500400809008530302B011A18104DED3939002FED2B2B5F5E5D3FED2B2B5D31303335331503353315E1C5C5C5C5C50378C6C6000000000200E1FEBF01A6043E0009000D00A2400E1402340202F40201C309D3090209B8FFD840141D25480C09010909101D2148000A100A200A030AB8FFC0B31D24480AB8FFC0402C1519480A9E0B0F01B300B20F061F062F06030D06401D24480640151948069E050F041F042F04031903040700B8FFC0401209114800000A0D03078506400E0F068530302B011A18104DED1739C02B10CD5F5E5D002FED2B2B5E5DF6ED3FED2B2B5D3130012B005E5D2B5D5D711335363D01233533151003353315E14747C5C5C5FEBF4A25BB17C5A6FED10488C6C6000200110000056E05C80002000A0096405EA70901990401960501090001080A010602010004030913520301037F0A09140A0A09020506081352060106800708140707080400059270028002020202070109080306030A0307600A900A020A08090A030F013F01CF01FF0104010106072F3333192F5D1733182F5D002F17333F333312392F5DED33328705102B872BC410C0C08718102B872BC410C0C03130015D5D5D5D5D5D010B01010321032301330103ADFCFD02D7A1FD8DA3C3024BD002420236027EFD82FDCA019AFE6605C8FA3800000000010068FFDB051705ED001500DB4039E71001091501E91501050C01090C01E90C01D70701280A380A02780A880A02250F01050F450FA50FC50FE50F05390D01090D490DC90D030908B8FFF040450D11480605460556056605047804E804024604014A025A026A0203B7010109010109014901C90103270D01B80401B505E5050208920F091F092F09030A090B920604149113B8FFC0401B090C48131191001309130F13010F030E7D034017136F0216036C022B2B011A18104DED5F5E5D10C6003FFDD62BED3FFDD65E5DED3130015D5D71005D715D5D5D5D5D2B5E5D715D715D715D5D71715D715D052000111000213205152423220011100033323715060339FEA7FE88017F015CC7010BFED0A5F1FEF8011A - F4D2F0DB25019501730172019841C569FEBAFED7FEE5FEB981B47100000200BF0000059605C8000A001600AF40523913018913E913023C12010C124C1202860E01020E420E0209070901E709F70902480958096809B809040B09014908B908F908032408013408014206520602250501050515054505C5050404041404020A04B8FFE040290E11480A0F4A0F6A0F030D030F116F11021106169201030B9200107D070B7E004018076F0217006B022B2B011A18104DED10ED002FED3FED3130015F5E5D5F5E5D002B5E5D5D715D5D715D5D5D5D715E5D5D5D715D71331121320417161110002125212037361110272E012B01BF01ECDC010F639DFE7AFE9EFEE3010D012078817F4DD6D7AD05C86275BAFED0FE8FFE6A9D9BA501160105955B43000100BF0000042505C8000B003D4021089205400100059230300492010309920007030B05097E00400D0B70020C006B022B2B011A18104DED3210C4C4002FED3FED2B001A18104DED3130331121152111211521112115BF033BFD970205FDFB029405C89DFE259BFDE89D00000100BF000003FA05C8000900424026089205050004920103000F062F06020F022F02020F0306060205097E00400B026F020A006B022B2B011A18104DED3211392F5F5E5D5D002F3FED12392FED313033112115211121152111BF033BFD970206FDFA05C89DFE109BFD6000000100BF0000051505C8000A00CC408F5D060106280C1048BA06CA06DA06035F09010B093B0902280948097809030B035B039B03BB03FB03056703010404010410171A485C060109063906020C7406940602060152060704030482050614050506081815194806015206050809087F07061407070601030006093005010507071003097F00401F0701CF0701000770079007A007040E030C0770020B006B022B2B015F5E5D5D711A18104DED323810C65D1139002F3F31308705102B87082BC4012B8718102B87082BC4015D5E5D5D2B71005D5D5D5D5D5D2B5D3311331101330901210111BFC50257D3FDBC02ABFEF6FD7905C8FD2802D8FD3EFCFA02EEFD12000100BF0000062605C8000C010B4016C80801A803B80302D70301030F0301023803B8030204B8FFF040A4141748D804010B041B042B044B04042902E90202370201040214022402440204020901460956098609030D0A01390A490A890AA90AB90AC90AE90A0704090809820304140303040A0203027F0B0A140B0B0A000301090308090B04020A0004070A030002030003030B087F060B80004010062006400650069006B006C006070006200630069006B006F006060C0F060113030E066E028F0001000070000209030D006B022B015F5E5D5D2B015F5E5D5E5D711A18104DED10ED1139192F00182F3F12173910CC1117395E5D8705102B877DC48718102B877DC43130015D - 5D5D5D5D5D5D5D5D2B5D005F5D5F5D5D5D33112109012111231101230111BF0123019A01A60104C4FE68CBFE7405C8FB870479FA3804B4FBAF0454FB4900000000020068FFDB05D005ED000B0017010840C6240C012B12018602F60202F60A01C90A01180401F80401270401C70401190801F90801260801C6080136160106164616E616033A14010A144A14EA14034910E91002460EE60E02170B470B02C70B01290B01190B590B690B790BD90B05480701C807011607011607560766077607D60705480501C805011605011605560566057605D605051701012901011901590169017901D901050C0D010317010313010C110109032F0F012015010008011A06129206040C9200130F7D09157D034019096F0218036C022B2B011A18104DED10ED003FED3FED3130015F5E5D5D5D5F5E5D5D5D5D005D71715D715D715D715D715D715D715D5D5D715D715D715D715D715D715D5D5D71710520001110002120001110002532121110022322021110120313FECCFE890179013B013A017AFE86FEC0E3F8F9DCDDF8F62501AB015F016101A7FE5AFEA0FE99FE5B9D0147012A01210146FEB9FEDDFEDEFEB400000200BF0000044805C8000A0013009F403035040195040108112811381103E81101750D850DB50DC50D04420652066206030906190629060310180C0F48D70E010EB8FFC0403F0A0F48150301050375038503F503040944045404020B923F09AF09CF09DF090409090013920103000F7D050B0A7E004000052005020C031505700214006B022B2B015F5E5D1A18104DED3210ED002F3FED11392F5DED3130015D005E5D712B5D2B715D5D5D715D713311212016151400212319013332363534262B01BF0193010CEAFEC0FEE45D55BBCCA0BB8105C8B5CFECFEF4FDB402EBAC9D857200000200BF000004FA05C8000C001300AE40742707013906010606260602E606012E113E114E110311380D1148260F01260F360F020603F6030209450F01160401A707019A07015E126E127E12030918151948070A010A090152097E0807140808070D9207010B0B08001392010300107E050705080D0C7E00400F080112031508700214006B022B2B015F5E5D1A18104DED321139392FED002F3FED1139392F1239ED31308705102B2B10C4015D2B5D5D5D5D5D005E5D5D712B715D715D713311213216151005012101231901332011342123BF01C0D5E3FED501EEFEFEFE5BC444018CFEB48405C8BCB3FED87CFD4B0272FD8E030F0137E500010064FFDB03E905ED00230138B90013FFF840AF1B1E48F51B01180101F801010916191602D916E91602B604C604027A198A1902151D01851D01571E012A0C5A0C023A0C4A0C6A0C7A0C8A0C05991F01121F221F026B0D011B0D3B0D0228230108230107110109280601591001E81001562201472201D8 - 22E822024C0B018C0BEC0B020C0A1C0A4C0A032C0A6C0A7C0A03680E780EF80E03441C01341C441C841CA41CB41CF41C060920192002080F1A2104001214921F152F15021517921204029203B8FFC04033090C4803059200131A7F0F14400C0F4814140F035F087F08025F217F2102087E2140000320035003030A0325216F0224036C022B2B015F5E5D1A18104DED5D5D1239392F2B2FED003FFDD62BED3FFDD65DED11121739313001715D715D5D715D715D715D5D5D71005E5D5D715D715D5D5D715D5D715D5D5D715D715D2B05222735163332363534262F012E0135343633321715262322061514161F011E0115140401E195E8FAA17C97638566BD9BF8C0ABBEEA736D8E688A6AC098FEE32541D074826A577A4B3B6CBF7FABDD39C05C74584A724F3C6DC288C1EA0000010012000004FE05C80007004E40350602920303000005100540058005040005800590050305060F021F024F028F02040F028F029F02030A0302067E01400809017E30302B011A18104DEDCD5F5E5D7110CD5D71002F3FED3231302111213521152111021FFDF304ECFDF3052B9D9DFAD50000000100B3FFDB04D905C800110083405C280401D71001F60F01490F010A0C019A0CFA0C02090D190D02E90D013B0D4B0D5B0DAB0D0429070113072307B307031303010303130323039303A303B303060B03020D01170409000305920E1309800A017E0040130A6E0212006B022B2B011A18104DED10ED003FED3F333130015F5E5D005F5E5D715D715D5D715D715D5D5D71133311141633323635113311100221200011B3D2A5B4B093B8F9FEF0FEEBFEF805C8FC5ADFCBBFE403ADFC56FED1FEEC011E012B00000000010011000004E205C8000800BF40875404C404025201C201E20103074817490748141548074812496C077C079C07CC07FC070507280A0E48080401B604C60402A706B70602D805E805F80503A705B705028603C603E603F603040507060780040514040405010304037F02011402010305060107040602030012040105000640068006C006040A0306070302077E0140090A017E30302B011A18104DEDCD3210CD5F5E5D321239003F3F1733313087052B87047DC48718102B87057DC4015D5D5D5D5D71002B5D2B2B2B5D5D21110133090133011101FFFE12F00180019EC3FDEF026A035EFD64029CFCA6FD9200000001000000060106687C3D255F0F3CF5011B080000000000B47FC3BC00000000C005BDE3F776FA1B0D21094D0000000900010000000000000001000007BCFE5000000D1EF776F7430D2100010000000000000000000000000000001106000100028800E1028800E1058500110589006805FE00BF045600BF044A00BF053900BF06E400BF06370068046C00BF050F00BF044F0064050F0012058B00B304FC001100000020005E00C8 - 013201CA024C028202B8033803DC0492050405800652068C06F007680001000000110077000F004F0007000100100030007B000005E00D3300030001B800712BB800672BB8005D2BB800532B410E00000246001002460002007F02440001023F023C0001002B023E023CB2012BEFBB023D0001023D023CB2141F00BD023C0010023C000201870188B21A1F40B80189B310163900410E0188001001880002018301850002002B018401850002002B01860185B2022B80BB017F000100DF017C406601DFE016171CD4D516171C7B7C161B0F7B1F7B2F7B037B7C19D1D216171C767716171C6D7016171C6C6F16171C6B6E161B5F6E7F6B026B6E7F721A747514151C676A14151C666914151C6568141B8F65A065D06503656885711A1973167A4319217943192102B90352034AB2022B10BD034600500346000200400339B20B0E39B9FFC00338B20E0E39B9FFC00338B3090C3950410B032D0001033003310003002B02F402F30008002B02E3B2BE022BB802DCB3BE641F40B802DBB3313A3940B802DBB2232739B9FFC002DBB2141439B9FFC002D9B2333939B9FFC002D9B22A2E39B9FFC002D9B2212339B9FFC002D9B2171939B9FFC002D9B20E1139B9FFC002D0B2111139B902800278B2022B10412B02740050027400020010025D0050025D0002000B024C001B024C006B024C0003000B024B001B024B0002023A02040016001F023802040012001F023202310002002B023002310002002B022F0231001E001F022E0231B21E1F20B80231B2121639B901F701E3B2032B0A412001F4000101EF01EE0002002B01ED01EE0002002B01EC01EE0002002B01EB01EE0002002B01E801E70003002B01E601E70004002B01E501E70002002BFFCA01E3B30B1139B9411D01E70001007601E7008601E70002019401920002002B019301920002002B019201900006002B019101900007002B018F01900002002B018E0190B2022BBFBF01900001007001900080019000020157B292042BB80153B291042BB8014FB297042BB80136B37F032B40B80139B21218394109012401250003002B011001110003002B0104403BFC022B10F850F80240E61A1A399A9B032B9C9B042B9B970A2B9392042B9192062B9297042B9597042B9897022B9697032BA097019F97AF97BF9703BC034803490004002B0349B285022BB9FFC00343B31011391FBE0344000100E00344000103350334B2032B20411203330030033300400333005003330004033303140003002B033203140003002B032F0314B2032B2FBF03140001000002F3002002F3000202F0B2BD062BB802E2B2BF082BB9FFC002E1B2172839B9FFC002E1B20E1139B802E0B2870A2BB802DFB3BF042B40B802D7B323253940B802D7B2151639B9FFC002D2B2101139410D02C602C50006002B02C202C00006 - 002B02C102C00006002B028CB285022BBC027602770004002B0277B285022BB9FFC00271B31011391FBE0272000100E00272000100400260B2151639B9FFC00260B20A0B39B9FFC0025FB2171839B9FFC0025EB2242939B9FFC0025AB31011391F4114025B000100E0025B0001000F024A0001001602490026024900020009022D0019022D0002FFC0022BB2111539B9FFC00229B30D113920B80223B2121639BD022202200002002B02210220B2042BC9411402200001021E02200003002B021F02200002002B01F601CF0003002B01E001B50020002101DF01B5B2262120B801DFB21E2139411A01DD01DC0002002B01DB01DC0002002B01DA01DC0002002B01D901DC0002002B01D801D70003002B01D701D60002002B01D601D4B2022BB0BF01D6000101D501D40002002B01D301D4B2022B69410B01D2000100B901D2000101D201D40002002B01D101D4B2022B20B801D0B2090C39B9FFCA01CFB30B11392BBF01A300A401A300B401A30003FFE001A6B2131539410D018D018C0003002B018B018C0003002B018A018C0002002B0156B286022BB80155B280032BB80154B286052BB80152B287052BB80151B288052BB80150B288032BB8014EB285032BB8014CB285022BB80138B287022BB80131B2BF032BB80122B285022BB8010E400B85022BFAFB042BFB85022BB8FFC0400AF51011391FF601E0F601B8FFC04009B1151C3940E51A1A39B8FFC0402EAF0D0F3900B40140B450B460B470B480B4C0B4D0B4E0B4F0B409B4AF641FE8E7042B898A072B8A8B062B8C8B062BB8FFC0B78E3032398E8D032BB8FFC040148D1E23398D8B022B8B85082B8281042B8180032BB8FFC0B3804A4D39B8FFC0B3803F4339B8FFC0B380343939B8FFC0B380282E39B8FFC0400C801D2339807E022B7F7E062BB8FFC0400C7D4549397D7E062B7E85082BB8FFC04020881E23398887022B8785082B8685062B83840A2B8485062B7085808502BF8501410A03530354000E03500351000E034E034F000E034EB203641F4155034C034D000F031B031C031D000C030F03100311000C030C030D030E000C0327030D0329000D0321031C0323000D031E03100320000D0327003C0321003C031E003C031B003C030F003C030C003C02AD02AE02AF000C02A102A202A3000C029E029F02A0000C02B9029F02BB000D02B302AE02B5000D02B002A202B2000D02B9003C02B3003C02B0003C02AD003C02A1003C029E003C02810282000E027E027F000E027C027D000E027CB203641F4175027A027B000F021002110212000C020D020E020F000C020102020203000C01FE01FF0200000C000B0211009B02110002000F021000500210009F021000BF021000DF02100005001F020D003F020D007F020D0003001F01FE0001021901FF021B000D0213020E0215000D02 - 19003C0213003C0210003C020D003C0206003C0201003C01FE003C01BD01BE01BF000C01B101B201B3000C01AE01AF01B0000C01C901AF01CB000D01C301BE01C5000D01C001B201C2000D01C9003C01C3003C01C0003C01BD003C01B1003C01AE003C016D016E016F000C016101620163000C015E015F0160000C01610166B2171F1F41420166003F0166007F016600030179015F017B000D0173016E0175000D017001620172000D0179003C0173003C0170003C016D003C0166003C0161003C015E003C012C012D000F01260127000F01280129000E012A012B000E01180119000F01120113000F01140115000E01160117000E01050106000E01020103000E01000101000E010040A803641FFEFF0F1B37151836151535151234150F33150C3215093115063015032F15002E1526270E28270F2A2B0E2C2B0F22230E24230F1E1F0E201F0F0F10110C090A0B0C0607080C0304050C0001020C000340131A230003131F06031C1F1F0F3F0F7F0F032003011F034F03BF03FF03041B011D0D18071A0D1510170D1204140D901B012C3C2A3C283C263C243C223C203C1E3C1B3C183C153C123C0F3C093C063C033C003C503301B0124B004B5442B013014B004B5342B0332B4BB8032052B0322B4BB009505B58B101018E59B0332BB00288B8010054B00488B8020054B012435A5B58B80119B101018E851BB900010100B04B60858D59B1020042B00188B0235358B00188B0405158B02088B810005458B1020142595959B0374B5058B1020042592B1DB0644B5358B0801D59B0324B5358B0901D59004BB03A51B01B23422B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B7374732B2B2B2B2B2B2B2B2B2B2B2B2B2BB1282645B02A4561B02C4560442B2B2B2B2B2B2B2B2B2B2B2B002B2B2BB8010045B0FE4561B8010223442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2BB8027C45B8027A4561B8027E23442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2BB8034E45B8034C4561B8035023442B2B7473012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73742B2B2B0173742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B74752B2B732B2B2B2B2B2B2B2B2B2B2B2B2B752B2B2B2B2B73737473742B2B2B2B2B73742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73732B2B2B732B73742B2B2B0073742B2B2B2B2B2B2B2B2B2B00732B2B2B2B2B2B2B2B73742B2B2B2B2B2B73742B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B732B0143581B592B2BB018B0234B53422B2B732B2B2B2B2B732B2B2B2B2B2B732B2B2B01B8017C20 - 456A44B8017D20456A44B8017E20456A44B8017F20456A44B8018020456A44B8018120456A44B8018220456A44B8018320456A44B8018420456A44B8018520456A44B8018620456A44B8018720456A44B8018820456A44B8018920456A4473732B2B2B732B2BB8023B20456A44B8023C20456A44B8023D20456A44B8023E20456A44B8023F20456A44B8024020456A44B8024120456A44B8024220456A44B8024320456A44B8024420456A44B8024520456A44B8024620456A44B8024720456A44732B732B2B7373B109322B4BB05052424BB008524BB008505BB01A23424BB0C8524BB036505BB00C234200 + F4D2F0DB25019501730172019841C569FEBAFED7FEE5FEB981B47100000200BF0000059605C8000A001600AF40523913018913E913023C12010C124C1202860E01020E420E0209070901E709F70902480958096809B809040B09014908B908F908032408013408014206520602250501050515054505C5050404041404020A04B8FFE040290E11480A0F4A0F6A0F030D030F116F11021106169201030B9200107D070B7E004018076F0217006B022B2B011A18104DED10ED002FED3FED3130015F5E5D5F5E5D002B5E5D5D715D5D715D5D5D5D715E5D5D5D715D71331121320417161110002125212037361110272E012B01BF01ECDC010F639DFE7AFE9EFEE3010D012078817F4DD6D7AD05C86275BAFED0FE8FFE6A9D9BA501160105955B43000100BF000003FA05C8000900424026089205050004920103000F062F06020F022F02020F0306060205097E00400B026F020A006B022B2B011A18104DED3211392F5F5E5D5D002F3FED12392FED313033112115211121152111BF033BFD970206FDFA05C89DFE109BFD6000000100BF0000051505C8000A00CC408F5D060106280C1048BA06CA06DA06035F09010B093B0902280948097809030B035B039B03BB03FB03056703010404010410171A485C060109063906020C7406940602060152060704030482050614050506081815194806015206050809087F07061407070601030006093005010507071003097F00401F0701CF0701000770079007A007040E030C0770020B006B022B2B015F5E5D5D711A18104DED323810C65D1139002F3F31308705102B87082BC4012B8718102B87082BC4015D5E5D5D2B71005D5D5D5D5D5D2B5D3311331101330901210111BFC50257D3FDBC02ABFEF6FD7905C8FD2802D8FD3EFCFA02EEFD12000100BF0000062605C8000C010B4016C80801A803B80302D70301030F0301023803B8030204B8FFF040A4141748D804010B041B042B044B04042902E90202370201040214022402440204020901460956098609030D0A01390A490A890AA90AB90AC90AE90A0704090809820304140303040A0203027F0B0A140B0B0A000301090308090B04020A0004070A030002030003030B087F060B80004010062006400650069006B006C006070006200630069006B006F006060C0F060113030E066E028F0001000070000209030D006B022B015F5E5D5D2B015F5E5D5E5D711A18104DED10ED1139192F00182F3F12173910CC1117395E5D8705102B877DC48718102B877DC43130015D5D5D5D5D5D5D5D5D2B5D005F5D5F5D5D5D33112109012111231101230111BF0123019A01A60104C4FE68CBFE7405C8FB870479FA3804B4FBAF0454FB4900000000020068FFDB05D005ED000B0017010840C6240C012B12018602F60202F60A01C90A01180401F80401270401 + C70401190801F90801260801C6080136160106164616E616033A14010A144A14EA14034910E91002460EE60E02170B470B02C70B01290B01190B590B690B790BD90B05480701C807011607011607560766077607D60705480501C805011605011605560566057605D605051701012901011901590169017901D901050C0D010317010313010C110109032F0F012015010008011A06129206040C9200130F7D09157D034019096F0218036C022B2B011A18104DED10ED003FED3FED3130015F5E5D5D5D5F5E5D5D5D5D005D71715D715D715D715D715D715D715D5D5D715D715D715D715D715D715D5D5D71710520001110002120001110002532121110022322021110120313FECCFE890179013B013A017AFE86FEC0E3F8F9DCDDF8F62501AB015F016101A7FE5AFEA0FE99FE5B9D0147012A01210146FEB9FEDDFEDEFEB400000200BF000004FA05C8000C001300AE40742707013906010606260602E606012E113E114E110311380D1148260F01260F360F020603F6030209450F01160401A707019A07015E126E127E12030918151948070A010A090152097E0807140808070D9207010B0B08001392010300107E050705080D0C7E00400F080112031508700214006B022B2B015F5E5D1A18104DED321139392FED002F3FED1139392F1239ED31308705102B2B10C4015D2B5D5D5D5D5D005E5D5D712B715D715D713311213216151005012101231901332011342123BF01C0D5E3FED501EEFEFEFE5BC444018CFEB48405C8BCB3FED87CFD4B0272FD8E030F0137E500010064FFDB03E905ED00230138B90013FFF840AF1B1E48F51B01180101F801010916191602D916E91602B604C604027A198A1902151D01851D01571E012A0C5A0C023A0C4A0C6A0C7A0C8A0C05991F01121F221F026B0D011B0D3B0D0228230108230107110109280601591001E81001562201472201D822E822024C0B018C0BEC0B020C0A1C0A4C0A032C0A6C0A7C0A03680E780EF80E03441C01341C441C841CA41CB41CF41C060920192002080F1A2104001214921F152F15021517921204029203B8FFC04033090C4803059200131A7F0F14400C0F4814140F035F087F08025F217F2102087E2140000320035003030A0325216F0224036C022B2B015F5E5D1A18104DED5D5D1239392F2B2FED003FFDD62BED3FFDD65DED11121739313001715D715D5D715D715D715D5D5D71005E5D5D715D715D5D5D715D5D715D5D5D715D715D2B05222735163332363534262F012E0135343633321715262322061514161F011E0115140401E195E8FAA17C97638566BD9BF8C0ABBEEA736D8E688A6AC098FEE32541D074826A577A4B3B6CBF7FABDD39C05C74584A724F3C6DC288C1EA0000010012000004FE05C80007004E40350602920303000005100540058005040005800590 + 050305060F021F024F028F02040F028F029F02030A0302067E01400809017E30302B011A18104DEDCD5F5E5D7110CD5D71002F3FED3231302111213521152111021FFDF304ECFDF3052B9D9DFAD50000000100B3FFDB04D905C800110083405C280401D71001F60F01490F010A0C019A0CFA0C02090D190D02E90D013B0D4B0D5B0DAB0D0429070113072307B307031303010303130323039303A303B303060B03020D01170409000305920E1309800A017E0040130A6E0212006B022B2B011A18104DED10ED003FED3F333130015F5E5D005F5E5D715D715D5D715D715D5D5D71133311141633323635113311100221200011B3D2A5B4B093B8F9FEF0FEEBFEF805C8FC5ADFCBBFE403ADFC56FED1FEEC011E012B0000000001000000060106687C3D255F0F3CF5011B080000000000B47FC3BC00000000C005BDE3F776FA1B0D21094D0000000900010000000000000001000007BCFE5000000D1EF776F7430D2100010000000000000000000000000000000E06000100028800E1028800E1058500110589006805FE00BF044A00BF053900BF06E400BF06370068050F00BF044F0064050F0012058B00B300000020005E00C8013201CA024C0282030203A6045C04D805AA05E40648000000010000000E0077000F004F0007000100100030007B000005E00D3300030001B800712BB800672BB8005D2BB800532B410E00000246001002460002007F02440001023F023C0001002B023E023CB2012BEFBB023D0001023D023CB2141F00BD023C0010023C000201870188B21A1F40B80189B310163900410E0188001001880002018301850002002B018401850002002B01860185B2022B80BB017F000100DF017C406601DFE016171CD4D516171C7B7C161B0F7B1F7B2F7B037B7C19D1D216171C767716171C6D7016171C6C6F16171C6B6E161B5F6E7F6B026B6E7F721A747514151C676A14151C666914151C6568141B8F65A065D06503656885711A1973167A4319217943192102B90352034AB2022B10BD034600500346000200400339B20B0E39B9FFC00338B20E0E39B9FFC00338B3090C3950410B032D0001033003310003002B02F402F30008002B02E3B2BE022BB802DCB3BE641F40B802DBB3313A3940B802DBB2232739B9FFC002DBB2141439B9FFC002D9B2333939B9FFC002D9B22A2E39B9FFC002D9B2212339B9FFC002D9B2171939B9FFC002D9B20E1139B9FFC002D0B2111139B902800278B2022B10412B02740050027400020010025D0050025D0002000B024C001B024C006B024C0003000B024B001B024B0002023A02040016001F023802040012001F023202310002002B023002310002002B022F0231001E001F022E0231B21E1F20B80231B2121639B901F701E3B2032B0A412001F4000101EF01EE0002002B01ED01EE000200 + 2B01EC01EE0002002B01EB01EE0002002B01E801E70003002B01E601E70004002B01E501E70002002BFFCA01E3B30B1139B9411D01E70001007601E7008601E70002019401920002002B019301920002002B019201900006002B019101900007002B018F01900002002B018E0190B2022BBFBF01900001007001900080019000020157B292042BB80153B291042BB8014FB297042BB80136B37F032B40B80139B21218394109012401250003002B011001110003002B0104403BFC022B10F850F80240E61A1A399A9B032B9C9B042B9B970A2B9392042B9192062B9297042B9597042B9897022B9697032BA097019F97AF97BF9703BC034803490004002B0349B285022BB9FFC00343B31011391FBE0344000100E00344000103350334B2032B20411203330030033300400333005003330004033303140003002B033203140003002B032F0314B2032B2FBF03140001000002F3002002F3000202F0B2BD062BB802E2B2BF082BB9FFC002E1B2172839B9FFC002E1B20E1139B802E0B2870A2BB802DFB3BF042B40B802D7B323253940B802D7B2151639B9FFC002D2B2101139410D02C602C50006002B02C202C00006002B02C102C00006002B028CB285022BBC027602770004002B0277B285022BB9FFC00271B31011391FBE0272000100E00272000100400260B2151639B9FFC00260B20A0B39B9FFC0025FB2171839B9FFC0025EB2242939B9FFC0025AB31011391F4114025B000100E0025B0001000F024A0001001602490026024900020009022D0019022D0002FFC0022BB2111539B9FFC00229B30D113920B80223B2121639BD022202200002002B02210220B2042BC9411402200001021E02200003002B021F02200002002B01F601CF0003002B01E001B50020002101DF01B5B2262120B801DFB21E2139411A01DD01DC0002002B01DB01DC0002002B01DA01DC0002002B01D901DC0002002B01D801D70003002B01D701D60002002B01D601D4B2022BB0BF01D6000101D501D40002002B01D301D4B2022B69410B01D2000100B901D2000101D201D40002002B01D101D4B2022B20B801D0B2090C39B9FFCA01CFB30B11392BBF01A300A401A300B401A30003FFE001A6B2131539410D018D018C0003002B018B018C0003002B018A018C0002002B0156B286022BB80155B280032BB80154B286052BB80152B287052BB80151B288052BB80150B288032BB8014EB285032BB8014CB285022BB80138B287022BB80131B2BF032BB80122B285022BB8010E400B85022BFAFB042BFB85022BB8FFC0400AF51011391FF601E0F601B8FFC04009B1151C3940E51A1A39B8FFC0402EAF0D0F3900B40140B450B460B470B480B4C0B4D0B4E0B4F0B409B4AF641FE8E7042B898A072B8A8B062B8C8B062BB8FFC0B78E3032398E8D032BB8FFC040148D1E + 23398D8B022B8B85082B8281042B8180032BB8FFC0B3804A4D39B8FFC0B3803F4339B8FFC0B380343939B8FFC0B380282E39B8FFC0400C801D2339807E022B7F7E062BB8FFC0400C7D4549397D7E062B7E85082BB8FFC04020881E23398887022B8785082B8685062B83840A2B8485062B7085808502BF8501410A03530354000E03500351000E034E034F000E034EB203641F4155034C034D000F031B031C031D000C030F03100311000C030C030D030E000C0327030D0329000D0321031C0323000D031E03100320000D0327003C0321003C031E003C031B003C030F003C030C003C02AD02AE02AF000C02A102A202A3000C029E029F02A0000C02B9029F02BB000D02B302AE02B5000D02B002A202B2000D02B9003C02B3003C02B0003C02AD003C02A1003C029E003C02810282000E027E027F000E027C027D000E027CB203641F4175027A027B000F021002110212000C020D020E020F000C020102020203000C01FE01FF0200000C000B0211009B02110002000F021000500210009F021000BF021000DF02100005001F020D003F020D007F020D0003001F01FE0001021901FF021B000D0213020E0215000D0219003C0213003C0210003C020D003C0206003C0201003C01FE003C01BD01BE01BF000C01B101B201B3000C01AE01AF01B0000C01C901AF01CB000D01C301BE01C5000D01C001B201C2000D01C9003C01C3003C01C0003C01BD003C01B1003C01AE003C016D016E016F000C016101620163000C015E015F0160000C01610166B2171F1F41420166003F0166007F016600030179015F017B000D0173016E0175000D017001620172000D0179003C0173003C0170003C016D003C0166003C0161003C015E003C012C012D000F01260127000F01280129000E012A012B000E01180119000F01120113000F01140115000E01160117000E01050106000E01020103000E01000101000E010040A803641FFEFF0F1B37151836151535151234150F33150C3215093115063015032F15002E1526270E28270F2A2B0E2C2B0F22230E24230F1E1F0E201F0F0F10110C090A0B0C0607080C0304050C0001020C000340131A230003131F06031C1F1F0F3F0F7F0F032003011F034F03BF03FF03041B011D0D18071A0D1510170D1204140D901B012C3C2A3C283C263C243C223C203C1E3C1B3C183C153C123C0F3C093C063C033C003C503301B0124B004B5442B013014B004B5342B0332B4BB8032052B0322B4BB009505B58B101018E59B0332BB00288B8010054B00488B8020054B012435A5B58B80119B101018E851BB900010100B04B60858D59B1020042B00188B0235358B00188B0405158B02088B810005458B1020142595959B0374B5058B1020042592B1DB0644B5358B0801D59B0324B5358B0901D59004BB03A51B01B23422B2B2B2B + 2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B7374732B2B2B2B2B2B2B2B2B2B2B2B2B2BB1282645B02A4561B02C4560442B2B2B2B2B2B2B2B2B2B2B2B002B2B2BB8010045B0FE4561B8010223442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2BB8027C45B8027A4561B8027E23442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2BB8034E45B8034C4561B8035023442B2B7473012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73742B2B2B0173742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B74752B2B732B2B2B2B2B2B2B2B2B2B2B2B2B752B2B2B2B2B73737473742B2B2B2B2B73742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73732B2B2B732B73742B2B2B0073742B2B2B2B2B2B2B2B2B2B00732B2B2B2B2B2B2B2B73742B2B2B2B2B2B73742B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B732B0143581B592B2BB018B0234B53422B2B732B2B2B2B2B732B2B2B2B2B2B732B2B2B01B8017C20456A44B8017D20456A44B8017E20456A44B8017F20456A44B8018020456A44B8018120456A44B8018220456A44B8018320456A44B8018420456A44B8018520456A44B8018620456A44B8018720456A44B8018820456A44B8018920456A4473732B2B2B732B2BB8023B20456A44B8023C20456A44B8023D20456A44B8023E20456A44B8023F20456A44B8024020456A44B8024120456A44B8024220456A44B8024320456A44B8024420456A44B8024520456A44B8024620456A44B8024720456A44732B732B2B7373B109322B4BB05052424BB008524BB008505BB01A23424BB0C8524BB036505BB00C234200 00>] def - /CharStrings 17 dict dup begin + /CharStrings 14 dict dup begin /.notdef 0 def /colon 1 def /semicolon 2 def /A 3 def /C 4 def /D 5 def -/E 6 def -/F 7 def -/K 8 def -/M 9 def -/O 10 def -/P 11 def -/R 12 def -/S 13 def -/T 14 def -/U 15 def -/Y 16 def +/F 6 def +/K 7 def +/M 8 def +/O 9 def +/R 10 def +/S 11 def +/T 12 def +/U 13 def end readonly def currentdict dup/FontName get exch definefont pop end %APLsfntEnd 42/FontType resourcestatus{pop pop true}{false}ifelse {currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if @@ -721,13 +714,13 @@ /FontType 1 def /FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def /FontBBox{-2186 -1509 3361 2381}def /UniqueID 4277797 def currentdict currentfile eexec - 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C91B322782D282AC603D1F5A452D1E7AE90B2FF78B151C731C717F5B5A2ECE57D3BD22888D3650C03C2DCA804C19EB7D69457CEBD24131DB488F3CA3D336BDBD4FB45B9837AB09747478D7E2F00EA5B259005B58BD27C4E5BBCD5FB2B1673D47BFC5B6C447EE0559C6967E1C971A7DF173E7BAB4D63FBEC224781A4CC86C73DB89CF37C3E009A7ECC8580FF7939A7F82E799EF71B242ABB4D59BADDEA6DC3655B4B5B3056FB8FFFFF604F42015172C5ED7A02607E0D9435CC1851C1EF4173C79AAFBAD79A80689B0F85464175B9A61BF2695BCFF76F3E95683E3A6070BD117F95190EC6AE323A776EC3C425F63978A058EAFAEEADEB542C1C33429E173B89AA7D6EE766D5CBAFC23AF1D9CB29F231483238FF1E51FE7B6F20C48D65CDECD5F23E03D992E13AF5358D0A47388E45F9EBEE29E4D0C37A5A818041EC0011CB5F3698A38EEDA6C25AE09E9D934C674FBC2152E17D27A957094204A0811D34CD845CE707F68B0E1A1585776B6DE6CD5B19F327F64B2DB01695C3D4E5F84F3BE9203D2675C29DBF461FA34E67A9C3047BF2E154A1ADF9E5F52AC6222DFF01912BC9A09CD897C512D8B65F525BC845C914870D5386666882A10D32DC344E2B9C88D8A85465AF1C48F47A1598196C168BB5ED71C591263E80DC8961ED6FA05A5FFC1EA5BB909BDE64C03D66E3EF90633BF2040E9473B129CBEF613C927DD3483B8085281E712EE2E30877534F0E226E07B997D551C2CE62D21DBDA7511885FA3F82044178DA - 73F9B0797D89215EE23A9C083E0C9DEA12C5B223605B84568072F386D863A95FCAE1F9932BA033DF56A407A5048FD084BBA0B501BCEF003D7C4FA708627D9F7420B153722704F0E7CF508E6ECE3BB33933264912F15430E5E1CFA547A722EFBFBA15F71F2FBE29B56A16944C7E33D94623CF9DE9803E71503F35CD03C052DF1D0CB9A3E9A150D95EAB490076B6313C086B062891270FB1758BC4DC171F7BF99010280FD64B3C4617CFB061234E736C271CB0F2704210921E580A7E7543FB583F1A93EF683344B3C626B5911C4131502D7C3AF74A00D431C04E915BFE9FEB0829EF39D878A1A707FA74E171BDABD25B7DA750F5EDE7AFC11914B16B3D705B5525F2ED1FD362EFCCC06D15A3F706CBB78541A2AB75D1FB96DD7994C174A2FE64BC7976144FF8D509C6ABF755FA749BB2A4CD4499C6BCDE099073B0E1A2FCC4441C2E6D48D693C696F21A3CB48844EB3D81CBFF1633B84725ABC3FA6658CECFB39DB38B8BBCDFC4D6716C6BE9560F2B1BBC353F9F80B4FECFEFFFC5B2C79AD9D6E06169071ADABD445C3EE16DE87E7A6483DD7B2782BE3AC886EF46A9C90B688E15C68E2F9CE080BEB7D7773D5E7AFD03DBC79908DCEA92248FB5E81BF71AC5FB8A78CD8C85DB153F042781C06419B2E937DCA79E039D034EF4658327750FFE1314627041A3117623A2A47EE44F74EE00CABB85E00C49F759210A9E280D38B5D6CDE8FF6B4CE0495DBE56C9FA12B7B1D26C2C94FBCB81F7A3D10CA0028358A56756FEF5D321AEED3FE40858AB60653BAD9EFDAB6D899BFAAF71FF657C81ADEA76C161BDFAE1C5B9FDCEFA4A8BD0A4A2CEED61D8B2E11AD7125BF2F903D8F2F47CE1BA4E6FCECD226A75565BC8B00F4E874837E40EA58AB5E05C2CC5303D37E7D6413C93C19D4E4AA0AD9A079A0463B7AE6C853FE8EA7C98E997059A02FFC76257DF1DBFDBB7F2BCB1C3B86B494EEB789AC911B75E960C1EC4F91F16CC7B0254B076E83F65EAFD4CD1B85F2D46D5C3FBE76B6122C9D2623CD3D0AE741376BB4AFF2A10D34D16BAB2977DA8F602DAB82326451A0D004A17003FF08A8472A4C56ECE9D3F9BB7E26FC312DA5D31CA2C1F52A8160279880BD0E533AB1A9907A69E3F448ED37735F0ACBEA2DFDE1C9130094DC5EF7E24CDFB43CD78B34C7B25BD8ECD793A4BA31C55CC26F34D170BF46E67D7F23D8ADCCFEA0EF4529126A2608F3F64FBF60B9292853C7301E3110F567D851221801E3B5DA65020D4AD0DB5412B41EE8282DE8D21928F58968C8B36A514048089F36A6151B359C82822C8C499B7D02888CE4978E5E5D0F50B2B866D1E088A5BC38F948DE1A44EDB703F6C8DEC33AAF8679F9EDC3D577E15ADB933C5B220E6EA74044DCAC9BBE0218B68A99FC67410AA41CE7EF36CA54A89CCDBAE493A0515193556E13BE7DCB83061C2152AB8A540E8D5E5 - 299D927B8C7A0CCFF052270E31FE9AA97401A6441E27644FFDEC161413C53B0516F0D1786F31C106A9D7D5DB5CC68E4FAF671CCCF53F15BE64A15468024DB17C4FC62D646A5591309155551C406AB7BB9D6D6EC8238F27EB46B9BC800B338D0EDD6EED7B43D23A10080B5C30F271628703E7DAD7B702E46C5F5F04AAC805114FFA9D0D772EFD79FEDB554A91D814F1972B5E495F35E642E1C92E4D5540E401E7BF86AB1F2808182EAB8A4DC002405DDC2162A6D41DB2DD4FF92EC09306B95A135641F9FDE0400339DA4E1ED9923091E8D4A446F9D37C86527E6DC0C925880C763808673F3BC28D1CA06FBC4EBC32992232C796FC8ECDD936C9B0E15ACD160A3B86FC2148D8CEF4F3AF4A0326CD6CBAB0BF010299F5B0F26E64FE1EBABD3304E5F6490DE3A96CAAD33577FA5E8318774780687F64486686945CB104976AFF0B3CF5B2D57B + 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C91B0B7175CE49F0688B3F79EA3DBC898217EC91EE332F98D08B0D78E002610AC5858EAF625BF673983D70210293AF44B5873D9BD4164D0FE0468184D7036711A930D37CFB0EBA4CA4E0BB73C83B1EDE3FF59EB72440E3D0584FC166A75B6FEC765FB16E5772A73894B196F655E526E66923ED97E5AB3D3B57FD2AF8A2DBC7188A7ACE7F3628D827E1F81E0EF2CABC5263DEECA2F68A1117856E15A52D0DA021A0A41EBD0A47F1144CA15646FDBC35F23AD12226A2046A5E73A5AEF8A6D81D45F23EAD0245884DC0D749B933995A8824604FF0C7E5BD4B9C8664CBA0D51317137A9EE284A18C4409C8A544F1FE3846657160312405DE0D393306208D622AAFC0A2BA50342D62D67770DC1DB22846CE56D3B703F9C984A37E18FA9C2CA343B5F5A7D2C3879FC5A8712C584F8C9FF03915B0A223496777042AF4516D80E3D8677418B854CDCAAC8584DEA4BDB1FBA244B03B56263B216BAC33A58EF88DACA6E519C40B024E37656C746B8FF3775244BC2EC60ADD4B83050CC86660C99F2ADE103CA46FB2DE94C58621A74E1695F3B0EECDEF4397EF1B855195268ABA76794D656656E6D14582BC7DC0F8B44A22C51BD91C0EA3BD09335BC05BE5161033DC578E591195286A7F322023B788414E6BCEFCB4CA590D8F6643D8B72175A94D27DD6D3A1DB0CFCE9DC2434F762EEA4A73D6D50E98830A9CC78267403F6D687DCCA6F0D6D19C5940254B32E5E1D8A8A08ED5F468F72D1283A5BDF123115909AD6C2F253511D + D005B8E528C5016B146CA8D53F64F845C648B0DD17F71AFE5D36B32C5D7458EF6662E60862D6B50C14E9110102BAE35190A7D4F8F74B4A0C97C77391C0835B3336FC21BF6A2560E992F289F11080409CFC8242D914EBDC5652DDC5E01338D8B3A3CD597E12E2B7A7CF7C80FBA920C4B0643BD84CE1E45AD56A49742ED2243EC81AF2B2C0BD7ECD05F9AF99F7DDE0DECD1B95229E5D25ED6A51E3388BD0EFDD6FC3B775EE5C535C6D3412EA5F4F44DCB862887531FE1B252A7BE6D29154E02D99769CCF856C2803CF1C05DA6F61072DFEFF30C757983509208127F19440BB9B15DBCE8E7AAB4BB682F13B9E4AD6DD33B32D8C3B7079B1174352A47AF472C910F90658FB4BD55DF1C24DC2A59C55FA4429851EF7A0AE576CEB2008D65CA08A3D0B07234DAB2892B5DB198DDBEBBFBE120D5102C27CD0777666B12629EDBCD6CBBE4098A1FB9A1D9725044504A1B65D55CE46C88EE30C7D491C5845CE7DC05508AC1C37E397A3D53696BEE13F1574A4D1C0AC07788B20FC94102B736E6BC976800D494C7978AC7C17677ED2703221940FF4FCAB600BD8AD4BB16964729047AADB927F77F680865C885E0859D90AA8D3A380030BCC9CB195F504554913DE62966C019A66C033835ABA3D03123E0875BCBE725426312B00E23C5A8BBE3406123E135F830E87E8152F0B120C1C4B22590EAC7E9F8FFC8ABF04B38D7946C15BB9B1058F690AB98E357EB36498C1A5704C3A5175B40E9CC3AB5D1190321E9945160F0A8B18DD07FF7CF736FC2391391398566653AB3A70DC7E3279AE2CE7B645DEB552514182A0F9982230388C1D9B126BB34DA54526F7224046D411AD2CDA4322BA42D4752B52DD14A9ABE39A07289139AC597BABB83B6C22402CDA463C9288E9F05281A68C6399D85F5D113C2A72B8299F5D722B32941641C0689E18AB7EE3FF5EA45450657B7E59D4244DFC422D1984D1CC21E6EFC3082E5C5A8FEC7CD91F01BED16BEC7273E7D4CD1E3682DBC5462982EADF2394FAC5E4F00FA2DFA5281FF2941A48F39344C62EDBA1FC196B4D4BE555B8B9A34FFFDEFCF92D97BF5ED7659E9971D885D6D98CFD4DFB3AB5C59B25555E283731483222ADE4D21EE98DF1945B9D33AE2CF24D14488A61425F7A88D43D5105C4B3C14187018A3CA3AF0781263CB7AFF42924BA810EF4F98A0B52B5D0B31219A31CFEC8DCED6301750ABF8E6E8B262133252635C9773C1CD945FC735890D8D6BFA7DE839336FCC01FCDBDA453DFD3C04CED97B8BF4004CF455E0997A4970989CAEABC3B6D0876E5F8DB6E67CC6EB4D88DD69E40C2652F344684B372E53154B7DA3D16789826796D39B0993559DCB363A923D2C652191E352D9E73EB0598DB02264790E68ACE79982D3425F7D2162666F969F72055A58152CD74A83852CDFB0F8A0BB038BDEECB84F8B4239CDFBBABC1BD + 1D86C1CF732B928891BF137F1EA434394B35D0D2999B3766C98AA3155FAA3E9437737213602EB4D16E56E029B8DE246D0A6F50727456ACCB17DC26C103885AD5D616F694D5D879237E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -738,38 +731,30 @@ %APLT1End %RBIEndFontSubset /LucidaGrande cguidfix /F1.1/LucidaGrande renmfont +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4294 0.2332 0.0202 0.3278 0.6737 0.1105 0.1933 0.0938 0.9580 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs1 exch/ColorSpace dr pop [ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def /DecodeA { { 1.8008 exp } bind exec} bind def /MatrixA [ 0.9642 1.0000 0.8249 ] def /RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def /DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def -end ] /Cs1 exch/ColorSpace dr pop -[ /CIEBasedABC 4 dict dup begin -/WhitePoint [ 0.9505 1.0000 1.0891 ] def -/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def -/MatrixABC [ 0.4294 0.2332 0.0202 0.3278 0.6737 0.1105 0.1933 0.0938 0.9580 ] def -/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def end ] /Cs2 exch/ColorSpace dr pop %%EndPageSetup /Cs1 SC -1 sc -q -0 0 472 74 rc -0 74 m -472 74 l -472 0 l -0 0 l -h -f -/Cs2 SC -472 0 0 74 0 0 cm -BI -/Width 1416 +q +0 0 420 74 rc +420 0 0 74 0 0 cm +BI +/Width 1260 /Height 222 /BitsPerComponent 8 /Decode[ 0 1 0 1 @@ -776,2000 +761,1770 @@ 0 1 ] /Interpolate true /DataSource cg_aiproc ID -JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ -JcG!7JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ -JcC<$JcG!7JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ -JcC<$JcC<$JcG!7JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ -JcC<$JcC<$JcC<$JcG!7JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ -JcC<$JcC<$JcC<$JcC<$JcG!7JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ -JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ -JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ -JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ -JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcG!7N;nJ.pATXBJc=I(h>`'*b5QtkM#R8NjSsf1 -T)OJc:6"i;VR4`r:PgJc:6"Jc:6"Jc:6"Jc:E'h>a/IJc:6"ZMr\[Jc><@Jc:6"hYrK6 -T)\9YJc5<@Jc1/uh#6(.Jc3aiJc1E'qYoRTJc22=Jc2tSh>[!DJc1/uJc4O*h>YFmJc1/uJc1/uJc1/u -Jc1/uLAfs-T`'H?Jc2nQh>W!(o_j@>Jc4I(n,ApYWrMbkcMa+-Jc()sqY]1Jk5='6Jc+j3Jc)DCh>I?O -kPX07Jc*:\Jc*soh>QL6n,;_RJc(`0Jc,NFh>QL6h>QO7Jc()sJc()sJc()sJc()sV#9'Ik5='6_>Jl^ -Jc*mmh>QL6h>NW:Jc()sr;=t@o)>ck\c;I(n,;qWp%s=:r;)!@JbnL)qt^6frqY^Qqt^-crqV-Ae,"Xl -Oo"tNrqcWirVGgUqt^-crqV-AVttu@^&%X%rqcWik5+uNqtg9sapOW+gpjr4&q#:$\p]1*j -q>'LSqt^-aqtG[:Vtbi<^%hU$p%\O^n+ceUqtU'_qtPa;JbXfkl1k8Pp%\O^n+ceUqtU'_chN(dJbXfk -JbXfkJbXfkJbY<$rqH*\rqZ$Xqt^-aqtI)bJbXfk]D2C"p%\O^n+ceUqtU'_Jb]3=JbXfkkP5&Pp%n@Y -q#'UZ\c9PHq#9j_rquQgp%nR]q"WeAT_UNJbGW-L\C*/ -n+QbTrqQKen+QbTrq??cn+Q#?nFhG,JbFZgJbFZgJbFZgJbH5>m.]uBrqHEerqGmTrqHEcrqGmTl1`?o -JbFZgg%Oe,n+QbTrqQKen+QbTrq??cn+Q#?T([a/L%bK>kP+cHrqZ-]q"ssdp&4[b_Z.gZq#9j_rquZj -qtg3crqQ0\rq?-[p%7hHRdu%#Jarg3q"+LUqt'URqt&>.rq#pUrq$$Xq"'(-mdbr"XRc/XrposXq""=R -p[[23rq#pUrq$$Xq"'(-_X`9Kf^eh/rposXq""=ReFNV1qssaWrq$$Xq"'(-QL]_"q"+LUqt'URqt&>. -rq#pUrq$$Xq"*eAJb"B_Jb"B_Jb"B_Jb"B_Wq,rVrposXq""=ReFNV1q""FUqssOR`:AKMJb%C_q"+LU -qt'URqt&>.rq#pUrq$$Xq"'mDJb"E`!;#pUo(;_MqtBp]qtU0dp%n[bqu$-cq#8J:bQ%S@o)8Rcq"t'e -rqZ?ap%JCXqt0dWq"!nDRdbmtJa`[/q!n@QqsW\:n*fE.rpTaRq!iq)mdPesXRQ#Trp]gRkjSWBnF,i. -nG_nRnG)O)nA=[GnC[7*nc&%Tn)j-.n*0?@nG_nRnG)O)nc!Qnc&%Tn)j-.n)j-=n,)VLn\jpJn:C)[nG)PQnGD\:nF,i.nG_nRnG)O@n:C(\ -n,W"JnbD\SoD%tWp%A%Rq#:*gqYU0er:U$crlb>es82fgrVl`lqtp6hq>U0ap\XX\o`"I]o)%tSnFH%1 -mXaeWmeZANmJcPKmJcPQmJ-&CmJH8FmJcJImJ-&ImJcJLmJH>Km=F]kmXaf'mf)VQmeH2Kmf)VKm/$)M -mHsf;q!J(Iq!IkCrpB^OqsF:KqsAt&^[?[@ddI,%rpKRKrpKdQq!@eCqs=+Frp9FIq!A"Irp9OLqsO@K -JaS`iJaWO*rpB^Qq!J(KrpBLIq!ItFq!J(Iq!IkCrpB^OqsF:KqsES7JaS*WJaS*WJaS*WJaS*WV!e6L -rpKRKrpKdQq!@eCqs=+Frp9FIq!A"Irp9OLqsO@K_l2KoGl20]Al%/'jk^hs$kl0iGkkjWAkkjWAkl0iGkl0iGkPaTFkii$/roj7B -roX4Croj7BrosFIrosFGp$)J>ros=Dqrr[qaQS3=gZ\Y$roj7DqrmqAqrn%Droj@Groa1Broa:Eqrdt@ -roa:EqrdtCrp'LIroj@Gq!%eAros=Dqrr[qSEPalrosFGqs""Aqs""ArosFGrosFFqrn%Broj7BroX4C -roj7BrosFIrosFGp$)J>ros=Dqs!V6J`q[KJ`q[KJ`q[KJ`q[KXm#cKroj7DqrmqAqrn%Droj@Groa1B -roa:Eqrdt@roa:EqrdtCrp'LIroj%>roj@GqrmqAb34E?J`teNrosFGqs""Aqs""ArosFGrosFFqrn%B -roj7BroX4Croj7BrosFIrosFGp$)J>ros=Dqrs^9J`qgOrTO@Il1O?@lhg&JmJH>Kn,)VRnb_nSo`"OY -p\t!`qYpBkr:p6crm^tts8N#grVQKkqYU*fq"XR^o`"I]o)A.Un,DbSmJcJIlhK`Dkk4-9k+1UbjbDmp -joFQCjo4?jSS'roEt -roEtrp9XOrpKdSqsaUUrq$-]q"FU[rqZHfrqlBequ5+FeGoOIp&4mfq"k!bqtL!\rq-*X -rpTjUrpKdQrp9OJqs"+Dqrdt@puM>4qr41*J`2@Br8I_9ro*k7ro*b6pu253ro*k7qr.P6ro*k6p#,i, -ro*k7qr.P6ro*b6pu253ro*k9ro*k9J`6.XJ`3onqr7V6ro!e7qr7D0ro3q9ro!\4ro*q:!TE#:ht>q, -hu;U6i;;L4ir7p6iqVL3ir7p9ir7p9idp(-iITtEiVVX6iVqd7iVVX0iVqj9iVqd4iVqj9iVqa-i;VX5 -iVqd4iVqj9iVVX0iVqj9iVqj9iVqhfiL/Y^iVVX6iVqd7iVVX0iVqj9iVqd4iVqj9iVqa-i;VX5iVqd4 -iVqj9iVVX0iVqj9iVqj9iVqj(iITs=iITs=iITs=iITs=iNV;q,hu;U6i;;L4ir7p6iqVL3ir7p9ir7p9ilC#/iITtCiVVX6iVqd7iVVX0iVqj9iVqd4iVqj9iVqa- -i;VX5iVqd4iVqj9iVVX0iVqj9iVqj9iVqi+iITsDiVMR3ir8!5jSS*=kPOKBl2L#Gm/HDOmf)_Tn,DhU -nb_tXp&=^_q"X^_r;6Hirm^u"s8N#mrVl`oqu6Hhq>U0gp\smco`"I]o)A1YnG_nUmf)POlMg&Ikl0`D -jo4?*rndY1ptUGVaPDF'gYMY[rndP-rnIG+p"TAtk1fR_ -qqM,(rn@A+qqV2-rn[A)J_cjPLY_a\rndP-rnIG+p"TAtk1fR_qqM#%rnI>*rndY1ptYApJ_bn5J_bn5 -J_bn5J_bn5Xkid-rndP-rnIG+p"TAtk1fR_qqM#%rnI>*rndY1ptX$JJ_bn5g"lGYrndP-rnIG+p"TAt -k1fR_qqM#%rnI>*rndY1ptVIsJ_bq6!8dY1ro!e5pu)/1ro3q;qrIb$fDaG%fD*sKfS\=4f_*nlfDaG%fDF.rfDaA#f_F%sfDaG%f)+(uf)F>$fDaFq -fA>/2fR_\+fR_\+fR_\+fR_\Ef_F(tf`'M"f)+(uf)F=sf)F;#f`'J!fDaA#f`'M%f_*k+fR_\+fZ2Y> -fDaG%fDF.rfDaA#f_F%sfDaG%f)+(uf)F>$fDaFqf8S@5fS.uWf`9b%gA'J&h>Z:1i;VX5i;V^7j8S-= -jo4HBkl0iGli-;Kn,DkVo)A7[p&=[ap\sseq>:$fqtU-ern@D(s8N#prVl`lqu6Hkq#:$epAX^`oD\=[ -nG_nUmf)SPlMg&IkPjWCjSn-;i;;F2hYu@1h#?(-gABS&f`'M%f(deme>C]GduVuLe,\"te*5BWe,.Pl -df._pde2)gdehGee*PT]e+M4Ae,%OEe%=*"eGdq]eG.Mid/_SqdaJ-DrmLJgrmL\kps\TZqpY5fJ^_on -J^`f2o$mZfl.#LWqpGDkrmUkpp!`ogqpG2fqpb2dqpY5fJ^^@BPLK*PrmU,]ps],frmLeprmLJgrmL\k -ps\TZqpY5fp="TAJ^]2!J^]2!J^]2!J^_0Yo$mZfl.#LWqpGDkrmUkpp!`ogqpG2fm*tp]p!h@;J^]2! -jjWeMrmU,]ps],frmLeprmLJgrmL\kps\TZqpY5fUsjnDOjj!QrRCr!ec+/!fDF5"g&B_)g]$"-h>Z:. -hu;R5iVqp;jo4HBl2L#Jm/HGPn,DhUo)A7[o`"R`p\ssbqYpBhr;QZlrn@D.s8N#mrVl`oqu6Hkq>U0g -p\smco`"F\nc&"VnG_hSli-,Ik5OKAir7p6hu;I2h#?"+f`'J$ec+(te,IepdJM;]c_Jd:cA'XBc2,]a -bl5fYbk90Ychku[b5TT`b59H_ci2,ebkTBVbl5f_bkoY9cLK22cEbagc2PrdbOs*PbPoidblQ)6oud9W -rlY,_rm1Serlk/\prr`\qonr^J^26[J^3,tp!*K[rlauYoum?\qp"fVrlb;`qp#,drlb;bpriHVrlb2_ -qos];REg]8p!*K[rlauYoum?\qp"fVrlb;`qp#,drlb;bpriHVrlb2_qp"NRJ^/hlJ^/hlJ^/hlJ^/hl -Yg2pdrlkAbp!!*Prm1Jdoud9WrlY,_rm1Serlk/\prr`\qonr^a3K7]J^3&rp!*K[rlauYoum?\qp"fV -rlb;`qp#,drlb;bpriHVrlb2_qotVUJ^02!pWildchPlddJhSne,Ikrec+/!fDaJ&h#?.,hu;U6ir8'= -kPj]Eli-;NnG_nUnc&+Yo`"O_p\sseq>U6iqu6NjrVQTMs5!_SrqQHkr;QTmq>U0gp\smco`"I]nc&%W -n,D\Qli-2Kk5OH@ir7m8hYu@1gA]e)f`'J$eGdqrdf.Ykci22dbl5fbb*pG'abe.=aSa'Ya8!aQa8X0W -a8X0Za8#ZqoAKQrl=oWJ]Z*WJ]ZlmrlFuWprN?QrlFuWrlG)ZqoJZT -rlG)Zpr<3OrlFuWrlFuWqoJcWrlFuWprNHTqoF?1T?3)7rlFuWprN?QrlFuWrlG)ZqoJZTrlG)Zpr<3O -rlFuWrlFuWqoJcWrlFuWprNHTqoJBNJ]WJbJ]WJbJ]WJbJ]WJbZcW3fqoAKQqoA]WqoA]Wrl=oWqoA]W -rl=fRqoA]WqoA]WqoATTrl>#ZqoAKQrl=oWc,kOYJ]ZfkrlFuWprN?QrlFuWrlG)ZqoJZTrlG)Zpr<3O -rlFuWrlFuWqoJcWrlFuWprNHTqoGJQJ]WMc!6P>bb5TT]bl5laci2>kdf._pec+/!f`'S'gA]q-hYuI4 -ir8'=k5OZFli-8Mn,DhUnc&.Zp&=[ap\sseq>U9jr;6Hirn[V1s8N#prVl`oqu6Hkq>U0gp\sjbo`"C[ -nG_nUmf)POlMg#HjSn-;hu;I2h#?%,fDa>"e,Ibod/MAjcMl)fbl5c^ao9?[`rf+_h#_>_t_1L_tCnG -_u%CO_u%CI_Z%IP_Yq@Q_o)JjpqcjErknWMrknNJrkn`RqnrEOrknNJqnr3IJ]$!TJ]$cjpr*0Lotp^G -qo&KOqo&9Hrkn`PqnrEMpqcjErknWMrknNJrkn`RqnrEOrknNJqnr3IJ]"G(QG`L9rknEGrknWOrknWO -pqm$JrkeQMrkeHHqni?Mqni?Mpqm$Jrl"]Orl"fRpqlpGpr**JJ]!&VJ]!&VJ]!&VJ]!&V]YjN_rknEG -rknWOrknWOpqm$JrkeQMrkeHHqni?Mqni?Mpqm$Jrl"]Orl"fRpqlpGpr(b$J]!&Vkem26rknEGrknWO -rknWOpqm$JrkeQMrkeHHqni?Mqni?Mpqm$Jrl"]Orl"fRpqlpGpr'2MJ]!_in&,4F!QE%W`r=$Xans6[ -bl5ldcMl/hd/MGle,InsfDaM'g]$%.hu;X7jSnBBl2L#Gmf)_Tnc&.Zp&=^bq#:*gqYpBkr;QZlrn[V1 -s8N#prVQKkqYp6gpAXaaoD\=XnG_hSli-)Hk5OH@i;VU4h>Z(+f)F1udJhMlci2/fb5TN^`rD%F^[f(;]Rd_S]`,VD]_oAA]D0&<\am?2^&,J>]D/u4]D/u:]DfJB]DfM7])K8>]`,PB]`,P?]_fBn -]`#Ko]XYWR^&G\A]D0&<\am?2^&,J>])]G<](io4])K>@]`,PB^%/c6\c08@]DfJB]DK8<]n*iD]Rd`V -]`,VD]_f>9]`,J4])KD?]_f>9](io4])K>@]`,PB^&,D9])K8>]`,PB]`,P?]_fBn]VW9&]`,VD]_f>9 -]`,J4])KD?]_f>9](io4])K>@]`,PB^%/c6\c08@]DfJB]DK8<^%o9]`,J4])KD?]_f>9](io4])K>@]`,PB^%/c6\c08@]DfJB]DK8<^!jWF]Rd`T]`,VD]_f>9]`,J4 -])KD?]_f>9](io4])K>@]`,PB^%/c6\c08@]DfJB]DK8<]r/Mo]T0Yt]`>eJ^VBQZrk\TNrl"fTrl4rZ -rlb;brm1SjrmC_prmq)$rn[S2ro!e:roO.Brp0RNqsaUUrq$-^rq??cqtgc=2q#13hrqcWi -rqHEcrq69]rpg!VrpB^Nrp'LFro="9rndY/rn7;$rmUknrm1SfrlY5]rl4rUrkeZMrkJHGrk/-?rjr*> -pp[$,J[UEDq6^41ppTk'rjMg6qmQL5rjLssqmQL5qmPt$ppTt*J[Y<]J[VtpppKn*osOe-rjDX3rjVm8 -rO(puqmQL5qmPt$ppTt*J[Wb1J[XOGppKn*osOe-rjDX3rjVm8k-b)prjVd5qmH+)ppTt*J[V2ZNOJVi -ppTk'rjMg6qmQL5rjLssqmQL5qmPt$ppTt*o_=N`;[dUaSs?]bl5rfd/MMnec+8$g]$(/i;Vg:k5OZFli-;Nn,DkVo)A=]pAXgc -q>U6iqtU-Gs5U-fpAX^`nG_nUmf)POlMg#HjSn-;hu;C0g&BS%dJhMlcMl#dao9@$Z2V!)Z2V!&Z2V!,Z2:d&YPYR'Z2V'+Z2:d) -Z2V!,Yl:p#YktX'Y5#2OYbeRcYktX'YkYEsYl:p,Ykt^)YkYL&Yl:p)YktX$Yl:p,ZMUp(Yl:p)Yl:p# -YktX'Y5#3rY^s$0Y^s$0Y^s$0Y^s$0YdUe5YPtd$YP>@$Z2V!)Z2V!&Z2V!,Z2:d&YPYR'Z2V'+Z2:d) -Z2:d)Z1Y?uYPt^"YLB_,Y^s% -rjDa2rilC)ri?$trhf[irhBCcrh0.\qjmVSVON.+O.6-=rgW_P!1NeSqjRMPrgS,SrWS+rHLS,8ZRRJrTN -RerWPS+rNNS,8`QS+rNNS,8`TS,SlUR/WNKRf8fURf8fURf8fURa[aWRt7'jS,SrWS+rHLS,8ZRRJrTN -RerWPS+rNNS,8`QS+rNNS,8`TS,SlUR/WNKRf8fURf8fURf8fUR\uX+Rus35SGo&ZT)kRVqk3q^rhBCe -rhf[nri?%$rilC-rjDa8rk&0ErkeZQrlb;drm:Yqrn7;+rnm_7roO.Drp0ROrpTjWrq-3arqQKgrql]m -rr)`nj8\';rr2oqrquclrqQKerq??^rpg!Vrp9XKroa:?ro!e4rn.5#rmC_jrlP/YrkSNHrjr*9rj)O, -riH*urhf[hrh9=`rgs+ZrgNhQrg*PJqih#BqiRk>JWPGE!0I2@rfI,Aqi^rCqih#Bqih#Eqiq)Drg*5A -rg*PIqiq)FrfmDGrf[/BrfmDGrf[/@rf;VlmZP5^^CPQ$aBPQ$jEPl?mGQM$LAQN!*F -Pl?sIPl?mGP5^[EPQ$gGPQ$aBOoCDmOHtu]OT(=?OT(C>P5^^CPQ$aBPQ$jEPl?mGQM$LAQN!*FPl?sI -Pl?mGP5CIBPl?mGP5CC@O6VgXOF`LEOF`LEOF`LEOF`LnOT(=?OT(C>P5^^CPQ$aBPQ$jEPl?mGQM$LA -QN!*FPl?sIPl?mGP5CIBPl?mGP5CC@O2R-2OF`MEOT(=?OT(C>P5^^CPQ$aBPQ$jEPl?mGQM$LAQN!*F -Pl?sIPl?mGP5CIBPl?mGP5CC@O-l#[OH,G%Oo(=@P5pgJPa)04rg3VQrgWnYrh'1`rhBChri#gtric=, -rj;[9rk8rr2fnrqucl -rqHEcrq69\rp]pUrp'LHroX4E8!KN3>OSFn6OT(:8 -O8b1=NW,"#]rm1Smrmq)(rndY4roX4Drp'LO -rp]pWrq69arqHEgrqlTkrr1sXj8],Xrr)iorql]krqHEcrq-3[rp]pTrosFFroF(:rn[S-rm^qprm(Ma -rkn`Mrji$:riuI*ri5sqrhBCbrgs+Xrg3VLrf[8Brf@&2o+LAlu'LAlu*L&Qc)Kn5!WL4P)kLAlo+K`6]) -LAlu-LAlu-LAlu'M#3&%MZ/M6Muelronra,reg]6repH,re^E+reCE-pkJd'qh>$&re5oXd>!4,kD&ti -re19)reCE-reCE-reCE-pk\g(onra,rf$N-repc5rf$i7onra*reUH-reCE-pkJd'qh>$&re5oXV1t1g -re:?)re:?+reLK-reLK-reL9)qhb!'repc7onra,reg]6repH,re^E+reCE-pkJd'qh>$&re:0&JVJ`1 -JVJ`1JVJ`1JVJ`1\VC*;re19)reCE-reCE-reCE-pk\g(onra,rf$N-repc5rf$i7onra*pk\p(reL9' -reLB)re19)dtWF.JVN9@re:?)re:?+reLK-reLK-reL9)qhb!'repc7onra,reg]6repH,re^E+reCE- -pkJd'qh>$&re78)JVK);reLK0re^]6!K2m8N;eh9O8b:@P5^aGR/WQRT)PD^UAh(iWrB1#Z2V01\c0AC -`;[jWcMl5jeGe2$h#?72jSn?Al2L,Mn,DkVo`"O_p\t$gqu6NmrVlfVs5X.Yrr2lqr;QTmqYp6gpAX^` -nG_kTm/H5Jjo46rr2oqrqucl -rqZQfrq69]rp]pSrp0RHroF(:rn[S,rmq(qrlkA`rk\TIrji$5riZ7#rhTOergs+Vrg!JGrf@&;reg]0 -re19'rdautrdOiprd=]lUNqE9O*UVIqfr3gHMVseH2)a]IK"]mJ,=cqJa\-dJc:3!J,=]iIK"TmHN&9j -H1cL_H2Di;H2W#>H+SA!Gl)d]HN&3bHh`$gIf"WlJ,k-$JV!9?qgn`srdXfopjN-grd+Qjrd"0_rd"Bc -JU,XgJU-F(qfr!`pj2pbpj;dardO`oqgeZsmst:drdautqgSEjrdFcmrd+Qjrd"0_rd"BcJU+);PBm%M -qg%s_rd"9cpjN-jqg\KnrdjNgqgn`srdXfopjN-grd+Qjrd"0_rd"Bcq0@O:JU)flJU)flJU)flJU+eO -qfr!`pj2pbpj;dardO`oqgeZsmst:drdautqgS;Krd=]n!.FrtIf=irJGt3#L&Qi+ -MZ/S6O8b=AQN!9NT)PG_V#ICnXo>U)\c0;A_>_RUc2Q)hf)FA%h>Z@3jSn?Ali-;NnG`"Xp&=^bq>U9j -r;QZoro=%=s8N#srVl`oqYphu;C0f`'A!ci2)d`rrr2oqrql]krqZQerq-3[rpTjProsFDro="8rn@A&rmC_hrlG)Vrk8Q2[3NT)PJ`VuEarZ2V63^&GqKa8X<^dJh\qgA^"/ir8'=l2L&Kn,DkVo`"R`q>U6iqu6Qnro=%= -s8N#srVl]nqYp_(G[JmB/WW&^mT`1DZQN!'HNrFq8 -L]2l(J,XipGlDmcFT-=[E;jbSD>nANCSPWqC6*-&B`Vs`!,DLIrbDFJqeZ7Krbh^Rrc%aTrc@jVqfVdW -rcJ-^piQCSrc7mTrbh^PqeZ7IrbDFHrbD+?JSP-uJSMf3okFD?rb;@HrbMCIrb_XPrbqdTqf;[WqK)a[ -FSg4XF8g:\Fng(UF8g4WE;jbSD>S/KC]8)JC&Vl?Bn:$HC4U-_C@unGPDuO_QErL.TFSg4XF8g:\Fng(UF8g4WE;jbSD>S/KC]8)JC&Vl?C"$gJC4U-]C@urr2oqrql]krqQKcrq$-YrpKdOroj@Aro!e3rn%.urm1Sbrl"fN -rji$7riZ6trhBC`rg3VJrf@&9reCE(rdXoord"Kbrc7mSrbVRLrbDFGqe,n?WF^WlN+N!#ral(@!G?$F -BDuNBBDuTDBDZEBC]8/LDZ4MPDtn;NEW1"OEW1"XEVOMPDZ4MPDZ4JOC]8&IB`;ZDB_uE@BDZ9>Aq=Oi -AV"F&Ac?<@Ac?<@BDuNBBDuTDBDZEBC]8/LDZ4MPDtn8OE<1'!rc7[Orc8!Xpi-4Mrb_XPrbVRLrb;@F -rb)4Dqe#h?qdob=JS!,ratk8JRsCDJRsCDJRsCDJRsCD[UoGMral(@rb)4B -rb)4Drb)+BrbMLLrbh^PrbqRNrc.pXol9tOrc.^Prbh^Prbh^OrbMLIrb2:Drb21@rb)+>rasMgJRsCD -iar+$ral(@rb)4Brb)4Drb)+BrbMLLrbh^PrbqRNrc.pXol9tOrc.^Prbh^Prbh^OrbMLIrb2:Drb21@ -rb)+>raqs;JRssTrau%?rb;@H!,DUNC]82JDuOeVFT-RbI/\WpK)UQ)MZ/\9PQ$pJT)PJ`VZ*atZi7N7 +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`N;nJ.pATXBJc=I(h>`'*b5QtkM#R8NjSsf1T)OJc:6"Jc:6"Jc:6"Jc:6"gA]q.bl31mJc:E'h>a/IJc:6"ZMog_T)\9YJc5<@Jc1/uh#6(.Jc3ai +Jc1E'qYoRTJc22=Jc2tSh>[!DJc1/uJc1/uJc1/uJc1/uJc4=$h>YXsJc1/uLAfs-T`'H?Jc2nQn,ApY +WrMbkcMa+-Jc()sqY]1Jk5='6Jc+j3Jc)DCh>I?OkPX07Jc*:\Jc*soh>QL6n,;_RJc(`0Jc()sJc()s +Jc()sJc,<@h>QL6h>Qa=Jc()sV#9'Ik5='6_>Jl^Jc*mmdJ`Y8XoGs3q#9a\p&+L[Jbo<@JbjrojnelM +rqcWik5+uNqtgJbZkPrqZ6`p&"O^n,9fs_Z0E1o)8Rcq"sa\qt^$^i:io.rq#pUrq$$Xq"'(-mdbr"XRc/XrposX +q""=Rp[[23rq#pUrq$$Xq"'(-_X`9Kf^eh/rposXq""=ReFNV1qssaWrq$$Xq"'(-QL]UtJb"B_Jb"B_ +Jb"B_rpojUrposXq""=ReFNV1q""FUqssORnFD/$Jb#i3q"+LUqt'URqt&>.rq#pUrq$$Xq")GpJb"B_ +f(/M*o(;_MqtBp]qtU0dp%n[bqu$-cq#8J:bQ%S@o)8Rcq"t'erqZ?ap%JCXqt0dWq"!nDRdbmtJa`[/ +q!n@QqsW\:n*fE.rpTaRq!iq)mdPesXRQ#Trp]gRkjSWBnF,i.nG_nRnG)O)nA=[GnC[7*nc&%Tn)j-. +n*0?@nG_nRnG)O)nes82fgrVl`lqtp6hq>U0a +p\XX\o`"I]o)%tSnFH%1mXaeWmeZANmJcPKmJcPQmJ-&CmJH8FmJcJImJ-&ImJcJLmJH>Km=F]kmXaf' +mf)VQmeH2Kmf)VKm/$)MmHsf;q!J(Iq!IkCrpB^OqsF:KqsAt&^[?[@ddI,%rpKRKrpKdQq!@eCqs=+F +rp9FIq!A"Irp9OLqsO@KJaS`iJaS*WJaS*WJaS*WJaW=$rpB^Qq!J(KrpBLIq!ItFq!J(Iq!IkCrpB^O +qsF:KqsEe=JaS*WV!e6LrpKRKrpKdQq!@eCqs=+Frp9FIq!A"Irp9OLqsO@K_kl0iDkkjUq +kk+(ikca4Ll2KoDl20]Al20]Dl2KoGl2KlEkQ0o2roa:Eqrdt@roa:EqrdtCrp'LIroj%>roj@GqrmqA +J`t2=J`tkProsFGqs""Aqs""ArosFGrosFFqrn%Broj7BroX4Croj7BrosFIrosFGros4Broj@GqrmqA +J`rWfJ`q[KJ`q[KJ`q[KJa!*troj7DqrmqAqrn%Droj@Groa1Broa:Eqrdt@roa:EqrdtCrp'LIroj%> +roj@GqrmqAp?7(kJ`s6"rosFGqs""Aqs""ArosFGrosFFqrn%Broj7BroX4Croj7BrosFIrosFGp$)J> +ros=Dqru8eJ`q[Kg$&=tp$2PBqs==LqsO@MqsaUTqssXVrq6'\rqZ?crql]mq#1!eeGn%urr2KeqtpBh +qt^6dq"F^Zrq$-[rp]gRrpKdQrp9FGq!%eAp#l57S`PFaL?8?q!9X:BroEt>`ZK:uGroO.?qrR_;qrRh4jkf+rk5OKAjSS'9k549>jSS'jSS'< +jSn3=jSn9jo4?q,hu;U6i;;L4ir7p6iqVL3ir7p9ir7p9 +idp(YiITsniVVX6iVqd7iVVX0iVqj9iVqd4iVqg:i;qorrnmD,rnm_6ro!\4ro3q9qr7D0ro3q9ro3q9 +ro/Lf`SlC,hVn@kro*k7ro*b6pu253ro*k7qr.P6ro*k6p#,i,ro*k7qr.P6ro*b6pu253ro*k9ro*k9 +J`3$UJ`21=J`21=J`21=K]2gfro*k7ro*b6pu253ro*k7qr.P6ro*k6p#,i,ro*k7qr.P6ro*b6pu253 +ro*k9ro*k9oAP8ZJ`3ilqr7V6ro!e7qr7D0ro3q9ro!\4ro3q9rnmD,rnm_6ro!\4ro3q9qr7D0ro3q9 +ro3q9ro1uWJ`21=gu7qcro#cVh=TNSh65Z0h#?1-h#?(-g@a4tgATdk +g\':tg\]_(g\]e*hYu@+gk";&h1=D:h>#e)hYZ+-g]#q"g\]^eg\':tg]#q+gA]k(h#?10h>#cVh43;P +h1=C5h1=C5h1=C5h>#e)hYZ+-g]#q"g\]^eg\':tg\]_(g\]e*hYu@+h"KQTh1=Cah>#e)hYZ+-g]#q" +g\]^eg\':tg\]_(g\]e*hYu@+greH(h1=D5h>?(.i;VX/i;V^7ir8!8jSn9?kPj]El2KuIli->On,DhU +nc&+YoD\C]p&=^_q#:*gqYpBkr:p6frn@D(s8N#mrVQKkqYpMl2KoG +kPjTBjSn3:iVqa6i;VU4h>#e#gABQrfR_\+f^[VhfDaG%fDF.rfDaA#f_F%sfDaG%f)+(uf)F>$fDaFq +f7DT6fR_\Gf_F(tf`'M"f)+&!ecF@Qrn."srn%/%rmpturmq)$rn%/%p"+cI[b-/`ak6C?rn.5%qptYr +rmq)$pt#Grrn.5$qq(hurn.5%rn.5%pt()LMV*L4J_5P+J_5P+J_5P+n(@Eern.5%qptYrrmq)$pt#Gr +rn.5$qq(hurn.5%rn-nqjOf%9J_6IEpt,Mtrn%%uqq(hurn."srn%/%rmpturmq)$rn%/%p"-_+J_5P+ +g"?;WptGMurn[S1ro!e5ro!e7ro="=roO.Broj@Grp0RNqsXOSrpp'[rq69arqHEerqZHfrqlKhqu5=L +fDkjLqu-NlqtpBhrqQKerq??`rq$-[rp]pUrpKdPrp'LIroa:CroF(;ro!\2rndY1rnRM-rn@8&rn.5% +rmpkpqp_LlJ^]\/o@*cirmU,]ps],frmLeprmLJgrmL\kps\TZqpY5fJ^aJEJ^_6[o$mZfl.#LWqp>Dl +!RfEqe,Iege,IemdJ22WeGI_fe:H)odt-!2e+2#fe*5BWe,.Pldf._pde2)gdehGee,.YceGI_fe:H)C +dt,u!dt,u!dt,u!duDiIeGdq]eG.MidJhSne,Iege,IemdJ22WeGI_feGRdHdt,uYe+2#fe*5BWe,.Pl +df._pde2)gdehGee*PT]e+M5;dt,u!e)f'OeGIeqf)F:uf`'S'gA]k+h#?./hYZ40i;V^7jSn9?kPj`F +li-8Mmf)\SnG`"XoD\C]pAXgcq"speqtpZ4/g&BY'f)F5!eGdqrdf.Ykd.5MXc@O8qcMYr`c2PrdbOs*PbPoibc1T6Y +bPoZ]c2Q&gbPo`\bP9<\bPTN\c%411c@O9HcLoH]bl5fYbk90Yci))hc->q(rlb;`qp#,drlb;bpriHV +rlb2_qos];`Qj%[hTkf=rlkAbp!!*Prm1Jdoud9WrlY,_rm1Serlk/\prr`\qonr^J^0\/J^/hlJ^/hl +J^/hlK[088rlkAbp!!*Prm1Jdoud9WrlY,_rm1Serlk/\prr`\qonr^o?Mp4J^1LFp!*K[rlauYoum?\ +qp"fVrlb;`qp#,drlb;bpriHVrlb2_qp!1,J^/hlhp1o@psB#frmLeprm^qtrmq)#rn7;+rn[J/ro*k9 +roO.Broj@IrpB^SrpTjVrpp'\rq69brqQKgrqcWkrquZlqu5FOh>dKRq#13irql]jrqQKerq??`rq$-Z +rp]pUrp9XMrp'LFroF(arlb;`R`U-&M95bkdf._pec+/!f`'S' +gA]q-hYuI4ir8'=k5OZFli-8Mn,DhUnc&.Zp&=[ap\sseq>U9jr;6Hirn[V1s8N#prVl`oqu6Hkq>U0g +p\sjbo`"C[nG_nUmf)POlMg#HjSn-;hu;I2h#?%,fDa>"e,Ibod/MAjcMl)fbl5c^ao9?[`rf+_h#_> +_t_1L_tCnG_u%CO_u%CI_Z%IP_Yq@Q_o)JjpqcjErknWMrknNJrkn`RqnrEOrknNJqnr3IJ]$!TJ]$cj +pr*0Lotp^Gqo&KOqo&9Hrkn`PqnrEMpqcjErknWMrknNJrkn`RqnrEOrknNJqnr3IJ]"G(J]!&VJ]!&V +J]!&VOMgk3rknEGrknWOrknWOpqm$JrkeQMrkeHHqni?Mqni?Mpqm$Jrl"]Orl"fRpqlpGq8<9OJ]!)W +]YjN_rknEGrknWOrknWOpqm$JrkeQMrkeHHqni?Mqni?Mpqm$Jrl"]Orl"fRpqlpGpr(b$J]!&Vkell- +rl+lVrl>#[qo\o^rltGfrm1SjrmC_ormh#"rn@A+rn[S2ro3qc=2rr2fnqtpBhrqHEcrq69^rposUrpB^Nroa:CroF(:rndY1rn.5$rm^qprm:YjrlkAa +rlP/Zrl+lTrkeZNqnW*Do"D$8J\6rSrk8J\9CCJ\:'Vrk8 +!PH'r]Rd`(]`,VD]_f>9]`,J4])KD?]_f>9](io4])K>@]`,PB^%/c6\c08@]DfJB]DK8<^!jWF]Rd`T +]_/u;^\GVD_>_=N`;[aT`r=*ZbPo`bci2;jdJhYpf)F>$h>Z=2i;Vg:jo4HBli-;KnG`"XoD\F^pAXg` +qYpBkrVQTMs5!_MrVl]nqYp?])K88\"gB_[Y_Hg[/dW0[e7'-[f3]3[f3c8[cY!p[f3c5[dUX![eR7][eI4] +[^ER=[J73'[JmW6[JRE3\,Ni7[Hb0s[f3c5[dUX![eR7][`c+1[c+[i[J73'[JmW6[JRE3\,Nhu[JRE3 +\,3W2[Ips&[eR7][\(!Z[Xkl<[Xkl<[XklB[eR9*[e7'-[f3]3[f3c8[cY!p[f3c5[dUX![eR9+[Xkl< +[^3F;[J73'[JmW6[JRE3\,Nhu[JRE3\,3W&[J73*[EZ.2[XkmE[eR?2\c02;]DfJB^&GeG_>_=N`;[dU +aSs?]bl5rfd/MMnec+8$g]$(/i;Vg:k5OZFli-;Nn,DkVo)A=]pAXgcq>U6iqtU-Gs5U-fpAX^`nG_nUmf)POlMg#HjSn-;hu;C0g&BS%dJhMlcMl#dao9@$Z2V!)Z2V!&Z2V!,Z2:d&YPYR'Z2V'+Z2:d)Z2V!,Yl:p#YktX'Y5#2OYbeRT +Y^s$0Y^s$0Y^s$9YktX'YkYEsYl:p,Ykt^)YkYL&Yl:p)YktX$Yl:p,ZMUp(Yl:p)Yl:p#YktX'Y5#1$ +Ycr\_JZuSeqlg"'pojIsriuI,qm$.)pp'h&riu@)qlfn$riuI.qm$%&riu@)riu.#qlg"%poi/NJZs^0 +hm!*bqm-4-rj;[4rjMg8rji$?rk8rjDa2rilC)ri?$trhf[irhBCcrh0.\qjmVSVON.+O.6-=rgW_P!1NeSqjRMPrgJWPGE!0I2@rfI,Aqi^rCqih#B +qih#Eqiq)Drg*5Arg*PIqiq)FrfmDGrf[/BrfmDGrf[/@rf;VlmZP5^^CPQ$aBPQ$jE +Pl?mGQM$LAQN!*FPl?sIPl?mGP5^[EPQ$gGPQ$aBOoCDmOHtuZOF`LEOF`LEOF`LEOT(@@O8b7?Oo(=@ +Pl$[DP5CIBQ2?gFPQ$m@Pl@!JPP^UDQ2[$IPQ$aBPQ$gGPQ$aBOoCF2OF`LEOK+EAO8b7?Oo(=@Pl$[D +P5CIBQ2?gFPQ$m@Pl@!JPP^UDQ2[$IPQ$aBPQ$gGPQ$aBOoCE[OF`LEOQ)B$Oo(=@PQ$gGQ2[-LRf8fU +T)PA]U&LecVZ*OnXT#F&ZMq61])KDB_#D=Pao9TbdJh\qf`'b,i;Va8kPj`Fm/HJQnc&+YpAXgcq#:-h +qu6Qkro=%=s8N#prVl`oqYp6gpAXaanc&%Wn,DVOkl0`Di;VU4h#>n(e,I\mbPoN\_Z%7J\c0&:Yl:d( +X8]!qV#I(eTDkA[S,ScRQN!0KOoCI>O8b1=NW+m6Mh-eFMuJV5Mu8M6N;JM3MuJ\4NVeb8O8b.NR6jGX"prepZ4qhkB2rf$`6 +qi:Z:rf-o;plGE7rfHo9qiLf;plGE7rf-oplG<6rf6c7rf6u;rf@&$&re5oX +rJ#lX]8$<=re19)reCE-reCE-reCE-pk\g(onra,!/pr;N:i)-MuJV5N;eb.MZ/J-M#N/.L\QW'L\lf) +K`6[VL=(a,L?Fi>.M#N/.L\QW' +L\lf)K`6[VL8BWUL4P)1L4P)1L4P)=LAlo+K`6])LAlu-LAlu-LAlu'M#3&%MZ/P5N:i)-MuJV5N;eb. +MZ/J-M#N/.L\QW'L\lf)K`6Z+L5(86JVL^ire:?)re:?+reLK-reLK-reL9)qhb!'repc7onra,reg]6 +repH,re^E+reCE-pkJd'qh>$&re8gUJVJ`1hhM,cre^W3repc7rf-oiG4O8b:@P5^dHRJrfWT`1bd +VuEjuYl;!.]`,\F_u@jYcMl5jfDaM'hYuL5jo4KCm/HGPnG`(Zp&=^bqYpBkr;QZoro=%=s8N#srVl`o +qYpJU+kQqfr!`pj2pbpj;dardO`oqg\Zt!J,gjJGXosJGt&qIe\?jHiA?jHiA<`HN&3e +G_(.fH%C8(H2Dj`H2)^bH2)a]IK"]mJ,=cqJa\-dJc:3!J,=]lIK"ZoHiA?jHiA<`HN&3eG_(.:H%C6l +H%C6lH%C6lH&[+HGl)d]HN&3bHh`$gIf"WlJGt,gJGXosJGt&qIe\?jHiA?jHiA<`HN&3eGQE)8JU)fl +\U"'sqg%s_rd"9cpjN-jqg\KnrdjNgqgn`srdXfopjN-grd+Qjrd"0_rd"Bcds6LiJU--urd4WlrdFcp +rdXotre(3(reCE0rf$i;rf[8Hrg<\Vrh9=eri5t"riuI5rk8rr2oqrquclrqZQerq-3\rp]pSrp0RGro3q7rnIG)rmUkmrlY5[rkSNF +rjDa0ri?$rrh07]rgWnOrfR2@reg]2reCE'rdautrd=]lrd+Qgrc\9`UND'/O*(/U9jr;QZoro=%=s8N#srVl]nqYphu;@/f)F(rbl5]__u@@K +\,NZ3X8]!qUAgb`RJrKNOT(7=MuJD/K)U9!IK"QlGlDjbFT-=XE;ORNDLl\dDZ4MPDY\/JD>S5JE;O\Q +F8g@^GQ)dbGPHF^GPcR_GPcX^GQ)dbFoHR]F8L"TE;OPGD>nGPD1QU'DLl];DZ4MPDY7lDDYnDMEr0qW +G5c^bG5c^aGl2gcGPcR_GPcX^GQ)dbFoHR]F8L"TE;OPGD>nGPD1QTPDLl]gDZ4MPDY7lDDYnDMEr0qW +G5c^bG5c^\GlDpaG5c^_Gl)^aG5cX`G5H@XEr0hQDY7lGDZ4L(DP_6%DLl\VDLl\VDLl\bDZ4MPDY7lD +DYnDMEr0qWG5c^bG5c^\GlDpaG5c^_Gl)^aG5cX`G5H@XEr0hQDY7lGDZ4JRDJk#CJSr#9rb_XPokjSD +qf)FQqfDa[rce?brce-^rce6_rce6aqfi$_rcS3`qfDXTqf)FMokj\Grb^,%JSp$VibnX3qf)OTrcA'] +rcnEgrdFcqrdt-&repc9rfI,ErgEbWrhBCiri?%'rjVm?rkn`UrlkAhrmh#%rnm_7roO.Drp9XQrpg![ +rq??erqcWkrr)iqj8\0>rr2oqrql]krqZQdrq$-YrpKdOrosFCro*k5rn.5"rm:Yfrl4rRrk&0;ric=# +rhTOdrgNhPrf[8@reg]1rdk&urd=]irc\9_rc8!Wrbh^PrbVRLUM>?pO)"?%!GZ?LCAqrHCAr#GD#S;N +DZ4SRE;O\TF80kSFo-7ZFT-FXFSg.YEr0hTDZ4MMD#S5LCAqrHC@u:lCAhmuC:e6RC&VlHC&VlHC\qrI +D>nGPDuO_QErL.VF9-K*qfVdWrcJ-^piQCSrc7mTrbh^PqeZ7IrbDFHrbD+?JSNSIJSO@_okFD?rb;@H +rbMCIrb_XPrbqdTqf;[WpiQCUqfDaYrcS!XqfDaWqf)OPrb_OKrbMLJrb;@HokAtlV.tQrJSKaNJSKaN +JSL0ZokFD?rb;@HrbMCIrb_XPrbqdTqf;[WpiQCUqfDaYrcS!XqfDaWqf)OPrb_OKrbMLJrb;@Hok=GA +C4U,NC:S*PC&VlHC&VlHC\qrID>nGPDuO_QErL.TFSg4XF8g:\Fng(UF8g4WE;jbSD>S/KC]8)JC&Vl? +C"$gJC4U-WCAr#JD#S;NDZ4VSErL1[G5cacI/\ToJc:H(MZ/Y8P5^dHRf8uZV>dInYPts/]DfYG`r=0\ +d/MSpf`'b,iVqp;l2L#Jmf)_ToD\F^q>U6iqu6Qnro=%=s8N#srVl]nqYp9hp&=R^nG_kTli-,Ij8S!9 +h>Z%*e,I\maSs-W^](eCZi7-,VZ*=hT)P)UPQ$XBMZ/A0K)U9!HiArap^mqIP4h\7PYOral(@rb)4Brb)4Drb)+BrbMLLrbh^PrbqRN!-&$ZEW1"OEW1"XEVOMP +DZ4MPDZ4JOC]8&IB`;ZDB_uE@BDZ9>Aq=O=AV"FRAc?<@Ac?<@BDuNBBDuTDBDZEBC]8/LDZ4MPDtn;N +EW1"OEW1"XEVOMPDZ4MPDZ4JOC]8&IB`;ZDB_uE@BDZ9>Aq=NfAV"EDAV"EDAV"EDAVt'uB)ZB@B)ZHB +B)ZHBB`;ZAC&VoID#S>OD>nJKE;jkVEqOGOErL(RE;jbSD>nGPD#S5LC&VfFBDuTAB)ZH?Ac?<>AV"ED +A[Z1LB)ZB@B)ZHBB)ZHBB`;ZAC&VoID#S>OD>nJKE;jkVEqOGOErL(RE;jbSD>nGPD#S5LC&VfFBDuTA +B)ZH?Ac?;gAV"EDA`[M&B)?6?C&VlHC]82JDuOeVFT-RbI/\WpK)UQ)MZ/\9PQ$pJT)PJ`VZ*atZi7N7 ^])1NaSsNbe,Ituh>Z@3j8S9AlMg5NnG`%Yp&=acq>U9jrVlfVs5X.Yrr2lqqu6Hkq#9pbo)A.XmJcDM kl0T@hu;F1ec+"rci1r`_Z%=L[JmE0X8\jmT)P2XPQ$XBMuJD/Jc:/uGlDjbF8g.XDZ4JOB`;WCAc?3= @fBf2@"D^H@/++,@/XL1@JaU4Ac$->CA;TDD#S>LD>S/HD>nGPD>S,GCAqlFB)?0:AG]g4@.dlX@/XJa @(ThA?he%+@JaU4Ac$->CA;TDC]J>RDJo>gqeZ.Hrbh^PqeQ(Drb)4BqdoY8qdKA0oj<8Xd9qN5k@"'l -pgEu-qdfS8qe,nCphTkFrbhUMqeZ.Hrbh^PqeQ(Drb)4BqdoY8qdKA0oj<8XV-oKppgU-fo`"F\nG_eRl2KlFiVq^5g]#_%d/M;h`W!^Q^&GD_-.@>lIt$>QA%+?2e4.@K'd9@f'^8B)ZHBB_uN@ -C\VZ>C]8)JC&VfFBDuN?AH$';A,B^3?iF>^>jbjJ>e=8?>P27u?2e4.@K'd9@f'^8B)ZHBB_uKDC]%uC -CA;TDCAqrHB`;ZDB)?-<@fBm7@JaF2?%H7t>_-/C>lIt#>l.h+?i+:2A,]s7AH$3?BDuTAC&;]@CA;TD -CAqrHB`;ZDB)?-<@fBm7@JaF2?%H7H>a&Fl>P27u?2e4.@K'd9@f'^8B)ZHBB_uN@C\VZ>C]8)JC&VfF -BDuN?AH$';A,B^3?iF?r>_-.2>_-.2>_-.2>_-.2>e+,=>P27u?2e4.@K'd9@f'^8B)ZHBB_uN@C\VZ> -C]8)JC&VfFBDuN?AH$';A,B^3?iF?L>_-.2>if5i>P27u?2e4.@K'd9@f'^8B)ZHBB_uN@C\VZ>C]8)J -C&VfFBDuN?AH$';A,B^3?iF>u>_-.?>lJ%.?N+=2?iXX:@Uf=Hral(CrbMLNrc%jXrcS3erdXp!reUQ4 -rfR2Irg`t\ri,n#rj;[_4ra#M.r`fA*VHJIQK384Y>5_Y%>Q.t+?iFI1@K'g:Ac$*=B`;`FB`;ZAB`;`FB`;`F -BDZ<528"=FjWR=b0_Z=o2D">Q.t+?iFI1@K'g:Ac$*=BE2`IBkdQ[rb)+Arb;@F -rb;@Eqe#_9qdKJ3ra5P/qcir$pf[SuJQ^B'JQ^`1qc`l$ra,J/ra>V3rac">qe#h@rb;@Frb)+Arb;@F -rb;@Eqe#_9qdKJ3ra5P/qcir$pf[SuJQ\gPLKXLXqcj&+qd9>1qdKJ7rakt=rb2:Frb2:Dqe5tCrb2:F -rb)+?qdfS4ra>_4qd0/(qc`btr`Ju!JQ[P,JQ[P,JQ[P,JQ[P,X]bO)qcj&+qd9>1qdKJ7rakt=rb2:F -rb2:Dqe5tCrb2:Frb)+?qdfS4ra>_4qd0/(qc`btr`IWPJQ[P,fie2Uqcj&+qd9>1qdKJ7rakt=rb2:F -rb2:Dqe5tCrb2:Frb)+?qdfS4ra>_4qd0/(qc`btr`H($JQ\+Z@3k5OTDm/HMRoD\C]p\t!f -qu6Qnro=%=s8N#srVlZmq#:$eo`"F\n,D\Qkl0]Ci;VO2g&BG!cMkuc_Z%7J\c/i4WrAgnSc4uTP5^C= -LAlf(If=WlFoH@ZD>n;LAc?3:@/aI2>5hY'=8l7t_6raYq:pgjA8qdf\;qdf\9raPk:raGe6ra5Y2ra#D)r`K/&r`K/#r`+MKnPk'=]2\c.pf.5mr`9#" -r`T5&qc`u)ra,S2ra>_6raYq:rFGh:rakt;rakt;raYq:raYq9ra>_4ra,S0qc`u$r`T5&r`9"uJQ0Tf -JQ1f3r_rSkr`/qur`B)%r`K&$ra#M0ra5Y4raGe9raPY5rakt;rakt;raYq:raYq9ra>_4ra,S0qc`u$ -r`T5&r`9"uJQ/%:P>qN[pf.5mr`9#"r`T5&qc`u)ra,S2ra>_6raYq:pgjA8qdf\;qdf\9raPk:raGe6 -ra5Y2ra#D)r`K/&r`K/#r`/>bJQ.2"JQ.2"JQ.2"JQ.2"\Q&Q,pf.5mr`9#"r`T5&qc`u)ra,S2ra>_6 -raYq:pgjA8qdf\;qdf\9raPk:raGe6ra5Y2ra#D)r`K/&r`K/#r`.!_6raYq:pgjA8qdf\;qdf\9raPk:raGe6ra5Y2ra#D)r`K/&r`K/#r`,FeJQ.Y/r`/qu -r`B)$!*TD,>5he(@/a[8Ac?HDD>nMRFoH[cIf=ruL]352P5^jJSc5GaX8]@&\c0>B_Z%^WcMl8kg&Bh, -i;Vj;kl0rJn,DnWo`"Uaq>U6irVlfVs5X.Yrr2lqqYp9hp\sganc&"Vli-,IjSn*:h#?"+dJhDiao9-U -^&GM?YPtO#U]-b^QN!$GM>i2-JGsopG5cO]DZ4GNB`;N@@K'X5>Q.e)=8l8"=#i -;cEWnr`&ksr`Au!qcir'ra5P1qdT#(raPk8qdBD0qd'2+r`f8%r`B)!r`&YkqbhuBqGDf@\5E$!qc!Jn -r`/r!qcN`"qd'2.qdBA3!FfO,A,]s:@JaI3?Me%->lIt)=T2D$Ph_*?i+7.@ddh+@fBg5@/aL0?2e+.>PhP%=8l5!<;9Dh;Lq]>;34ZM;YsDl<;ons=8Q+s>Ph_* -?i+7.@ddh+@fBg5@/aL0?2e+.>PhP%=8l5!<;9Dh;YEt=;1VSq;1VSq;1VSq;1VTQ;>=&d;uTbq"?2e4.@/FF%A,]s:@JaI3?Me%->lIt)=T2D$;1VSq;;tIJ;YsDl<;ons=8Q+s>Ph_* -?i+7.@ddh+@fBg5@/aL0?2e+.>PhP%=8l5!<;9Dh;P[0@;3=`T;Z9Vo<;ons_3ra#M+r`B)!r_reoqbX.cJPV>&r_EGgr_EGg!DlSm;#X>k;Z9VoQ.h*>lJ%.?i+7(@K'[6@JaI3?iF@1>lIq+>Q.h*=nl"r;uT\o;>X2h:B"&g:4Z4>:OusJm;uTer5he+?2e40?iaYCojRi-raG\3ra5Y1r`oG+r`fA*r`T"rr_reo -r_`Phr_EGgr_A#?d8,2(Pr_NMgr_NMir_`Ymr_rerr`9"uqcWo&r`];+ra#M1qdB)*ra>_6qdBD1 -ra#M.r`];*r`];(pf7;lr_i_mqb[8er_NMgJPW+

D0Qr_NMgr_NMir_`Ymr_rerr`9"uqcWo&r`];+ -ra#M1qdB)*ra>_6qdBD1ra#M.r`];*r`];(pf7;lr_i_mqb[8er_NMgq+lQ;JPUhmJPUhmJPUhmJPWgP -r_EGgr_EGgr_WSkr_i_or`/qur`/hur`fA*r`oG.ra5P1ojRi-raG\3ra5Y1r`oG+r`fA*r`T"rr_reo -r_`Phr_EGgr_Cp_6qdBD1 -ra#M.r`];*r`];(pf7;lr_i_mqb[8er_NMgVb_k>N_fOKr_i_o!*'&"sMk<;oqt=8lD#>Ph_*?N+@3 -?i+1/?iFI1?N+7->Q.h*=8l7t<;oep;>X/g:A@P79_V539Y4!t9E%W[:&@]b:]=5j;u9Pn5MP$ ->l\13?=*V=ra5P/ra5Y4qd08-qcj&'r`B)"qc*Pmr_`Pgr_E5_JP=6\JP>6#r_*5apeCW\r_NMjr_r\n -r`9#"r`]2'qd'2-ra>_4qd08/ra>V0ra#D*r`];&r`8nqr_i_mqbR2dpe?<5T1kGBr_*5apeCW\r_NMj -r_r\nr`9#"r`]2'qd'2-ra>_4qd08/ra>V0ra#D*r`];&r`8nqr_i_mqbR2dpeC?RJP:VgJP:VgJP:Vg -JP:Vg\P2uqr_3)]qbI,dr_`Ynqc*Pqr`B)&qcir'ra,S3ra5P/ra5Y4qd08-qcj&'r`B)"qc*Pmr_`Pg -r_E5_btN[^JP>0!r_*5apeCW\r_NMjr_r\nr`9#"r`]2'qd'2-ra>_4qd08/ra>V0ra#D*r`];&r`8nq -r_i_mqbR2dpe@GUJP;(tr_U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc&"V -lMfuGjSn$8gA]\&d/M5f`r?iF@1>5hY'<;oem -:]=)f9VY428rlUA8c)*\9M>F[r_*5br_EGhr_`Ynr_i_pr`/r"r`T5(r`o>+ra,8'ra,S0qcs,(r`T5& -r`/qsr_i_or_`Ykr_EGer_*5ar_*5_qal?2rCVW5]1Vrlqb$i]r_*5br_EGhr_`Ynr_i_pr`/r"r`T5( -r`oD-!F9"1?M.V'?N+7->lIq+=oMP&sDk:B!ue9E%Wa9E%Q\8V'L]8qBUt9)D3W9)_N` -9E%Zb:B")h;>sMn;Z9Ypl.h+?M.V'?N+7->lIq+=oMP&sDk:B!ue9E%Wa -9E%Q\8V'L18s;mE8c)-Z9`@]a:&[oe;#X>k;uT\o<;ons=T2J&>5he(?2e1'?2e10?2In+>5h\(=T2>" -<;oep;uTYn;#X5h:&[fb9`@]a9)D3U8qBTc8qBTc8qBTc8qBTc9"@Rk8c)-Z9`@]a:&[oe;#X>k;uT\o -<;ons=T2J&>5he(?2e1'?2e10?2In+>5h\(=T2>"<;oep;uTYn;#X5h:&[fb9`@]a9)D3/8qBTc9'&\B -8c)-Z9`@]a:&[oe;#X>k;uT\o<;ons=T2J&>5he(?2e1'?2e10?2In+>5h\(=T2>"<;oep;uTYn;#X5h -:&[fb9`@]a9)D2X8qBTm9)_N`:&Rig:J^sfr`&l!r`];,ra5Y7rau.Hrc.pZrd4Wpre190rfI,Frh'1d -riH++rjr*Erl4r\rm:Yqrn@A.roF(Brp'LOrpg!ZrqHEfrqcWmrr1sXj8],Xrr)imrqQKerq$-ZrpKdN -roa:@rndY.rmh"prlb;[rkJHCrj2U)rhTOcrg!JErepc.rdXonrc8!VrbVRFraPk6r`];'r`9"rr_WSi -r_3;ar_!&ZWCVS2O%B7?pdbEW8H;?]9D_E^:B"&g;#XAl;uTbk=SQ,"?2.\%?2e(->lIt,=T2D$=T2;! -;uT\o;#X8i:B!ra9D_;38G#H(8@qFl8,,XS8cDB[9`@fd:]=2i;Z9Vo<;9Sl>6.r4ra#;(qd'2*r`oG, -r`K/$r`K/!r_reor_WSir_EGdqb-fXJOmjQJOnrpr^Z`Sr^m)^qb6uar_NMir_i_or`&Yppfm`'pg!]% -r`fA,r`fA(r`B)$r`&kqr_i_lr_NMgr_32^qal?0S4Ji7r^Z`Sr^m)^qb6uar_NMir_i_or`&Yppfm`' -pg!]%r`fA,r`fA(r`B)$r`&kqr_i_lr_NMgr_32^qap9JJOk>_JOk>_JOk>_JOk>_\Oc]ipdkBUr_*,^ -r_EGgr_WSlr_reqpfR;qra#;(qd'2*r`oG,r`K/$r`K/!r_reor_WSir_EGdqb-fXb".(SJOnlnr^Z`S -r^m)^qb6uar_NMir_i_or`&Yppfm`'pg!]%r`fA,r`fA(r`B)$r`&kqr_i_lr_NMgr_32^qamAMJOkel -r^m)]r_*5a!)EVk:]=5j;Z9_r=T2M'?iFO6Ac?NFDuOeVHN&BmKDpf.OT(OETDk\dX8]I)\c0AC`W"$Z -d/MSpg&Bk-j8S6@lMg5NnG`%Yp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>hYu7.ec*no -ao96X^&GM?ZMpm'U]-h`PQ$XBMZ/2+IK"KjEW0kTCAq`B@/aI2=T2>";uTVm:B!rd9)_E]8>AY*7ZU%9 -7JfOT7n3PLr^d#[r_!/_qb@&dqbmDor`/quqcNi$r`o5%r`fA,qc`u$r`9#"r`9"rr_`Ykr_khM%>Q.n)>5hY' -sDk:&[ic9E%Q_8cD9X8,c!T7=dqU7Y+%l7f,XO7fGpW8H)3[9)_K\:&[ud;Z9_rkhM%>Q.n)>5hY'sDk:&[ic9E%Q_8cD9X8,c!T7=dq)7[$==7JfRR8,c'Y8cD?] -9D_H_;#=/i5he%>5hb*>l._(=T2A#=8l8";Z9Pm;#X2g9`@]a9)_E]8GbpV7f,XM7Y+$[ -7Y+$[7Y+$[7Y+$[7_)"c7JfRR8,c'Y8cD?]9D_H_;#=/i5he%>5hb*>l._(=T2A#=8l8" -;Z9Pm;#X2g9`@]a9)_E]8GbpV7f,X'7Y+$[7cd,:7JfRR8,c'Y8cD?]9D_H_;#=/i5he% ->5hb*>l._(=T2A#=8l8";Z9Pm;#X2g9`@]a9)_E]8GbpV7f,WP7Y+$e7fGsX8cD<^9E@g\r_EGhr_res -r`K/*ra>_8rbDFLrc.p^rd=]rreg]8rfd>PrhKImrj)O5rk8rr2oqrqcWhrqHE`rpg!UrosFEro3q6rn7;#rm1Scrl"fLrjVm4ri5smrgj%Prf6u7 -rdauprce?]rb_XKraPk6r`oG(r`/qqr_WSgr_*5^r^d#YqaIJPJOGPer^6ZQr^H`S!(QrXr^coYr_3;c -qb[8hqc3VrqcNi#r`f&!r`fA)qcN_rr`/qpqb[8dr_32]r^d#YqaUQRJOK6#JOI+*=oMXu>5hb*=o2=uX2h:&[i`9)_B\8,GdT7=dkM7"Ibh7/fRQ -7/fXP7fGpW8Gc$Y9`@c`;#X>hP22!>Q.e&=Sl.uXAm5hb*=o2=uX2h:&[i`9)_B\8,GdT -7Irou7"IaW7"IaW7"IaW7"Ib:7/fRQ7/fXP7fGpW8Gc$Y9`@c`;#X>hP22!>Q.e&=Sl.u -XAm5hb* -=o2=uX2h:&[i`9)_B\8,GdT7A3,#7#j\77K,gV8H)0\9*%[Yr_PrhKImrj)O5rk8 -rr2oqrqcWhrqHE`rpg!UrosFEro3q5rn.5"rm1Scrl"fLrjVm4ri,mkrg`tNrf-o4rdauprcS3ZrbVRI -raGe4r`fA&r`&kor_NMer_!/\r^ZrWr^8]r^?ZQ!(HlVr^ZrZr_!/_r_3;dr_NMiqc*Gnr`A>e -r`K%ur`/qsr_WSir_EGdr_*5_r^m)Zr^QcRr^?`Qr^)0'rBl-'[6sp]qaLKRr^ZrZr_!/_r_3;dr_NMi -qc*Gnr`9)&l<4*gqc<\rr`&knr_NMgr_3;ar_!/]r^ZrWqaLKPr^6ZOJO@gPJOAB`r^?WPr^QlWr^m)] -r_*5ar_EGgr_WJkqc<\tkun!fqc<\rr`&knr_NMgr_3;ar_!/]r^ZrWqaLKPr^6ZOJO?8$NC3\5qaLKR -r^ZrZr_!/_r_3;dr_NMiqc*Gnr`A>er`K%ur`/qsr_WSir_EGdr_*5_r^m)Zr^QcRr^?`Qr^-EJJO=uU -JO=uUJO=uUJO=uUZU=^[qaLKRr^ZrZr_!/_r_3;dr_NMiqc*Gnr`A>er`K%ur`/qsr_WSir_EGdr_*5_ -r^m)Zr^QcRr^?`Qr^,($JO=uUha@B2qaLKRr^ZrZr_!/_r_3;dr_NMiqc*Gnr`A>er`K%ur`/qsr_WSi -r_EGdr_*5_r^m)Zr^QcRr^?`Qr^*MMJO>PeqaCEQr^ZrY!(m8a9)_N`:]=5j<;oqt>Q.t.@K's>C]8;P -FoH^dJGt?'NW,+?SGo8^WW'4&\Gj2@`;[pYci2Gng&Bh,ir8*>l2L,MnG`%Yp\t!fqYpHmro=%=s8N#s -rVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC==LAl]%H2_pbE;jYPBDu<< -?2e%,_rosFMrp]pYrqHEfrqcWmrr1sXj8],Xrr)imrqQKerq$-ZrpKdMroX4>rn[S+rm^qn -rlP/Xrk8dr`8nrqc!Afr_EGcr_!/\r^ZiSqa:$C -JO'9%JO."9r^-TMqa10Ir^HfUr^ZrYr^m)^qbI,dr_reqqc3Vs!*JMgr`8nrqc!Afr_EGcr_!/\r^ZiS -qa:$CJO.dOJO/Qer^-TMqa10Ir^HfUr^ZrYr^m)^qbI,dr_reqqc3Vskudpcqc3MlqbR2dr_*5_r^d#Y -qaLBLog43qW'Q_8r^-TMqa10Ir^HfUr^ZrYr^m)^qbI,dr_reqqc3Vskudpcqc3MlqbR2dr_*5_r^d#Y -qaLBLog8RBJO+iQJO+iQJO+iQJO+iQ]KuN`r^$EJqa:?Or^QlWr^d#[r_*,`r_NMlr`&bpr`A>dr`8nr -qc!Afr_EGcr_!/\r^ZiSqa:$Cej4jQJO/Kcr^-TMqa10Ir^HfUr^ZrYr^m)^qbI,dr_reqqc3Vskudpc -qc3MlqbR2dr_*5_r^d#YqaLBLog5ZEJO,Mdqa19Lr^?`Sr^HlZ!D,l^9E%Zb:]=8kZF5k5OWEmf)_ToD\L`q>U6irVlfVs5s@\ -rqlZnqYp9hp\sd`nc%tUl2KiEir7d5f`'D"ci2&c`;[IL\,NZ3W;`OjSGnZMN;eS2J,X`mFT-4XCAqiE -@/aI2>5hP$;Z9Jk9`@Z`8cD3Y7K,^P6iKER5_21`5l3kE6Ms1N6iKOO7fGsX8cDB^:B!ue:]=8k<;T\p -=6Wid$=8l8"$=8l8"262j4M6iKOR7K>s[84`_Pr__;rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ -8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ -6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5* -ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"2 -62j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S -6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"! -5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@L +pgEu-qdfS8qe,nCphTkFrbhUMqeZ.Hrbh^PqeQ(Drb)4BqdoY8qdKA0oj<8XV-nj^JRF%:JRF%:JRFIF +pgU-fo`"F\nG_eRl2KlFiVq^5g]#_%d/M;h`W!^Q^&GD_-.@>lIt$>QA%+?2e4.@K'd9@f'^8 +B)ZHBB_uN@C\VZ>C]8)JC&VfFBDuN?AH$';A,B^3?iF>^>jbjJ>e=8?>P27u?2e4.@K'd9@f'^8B)ZHB +B_uKDC]%uCCA;TDCAqrHB`;ZDB)?-<@fBm7@JaF2?%H7t>_-/C>lIt#>l.h+?i+:2A,]s7AH$3?BDuTA +C&;]@CA;TDCAqrHB`;ZDB)?-<@fBm7@JaF2?%H7H>_-.2>_-.2>_-.2>`E"f>P27u?2e4.@K'd9@f'^8 +B)ZHBB_uN@C\VZ>C]8)JC&VfFBDuN?AH$';A,B^3?iF@#>_-.2>e+,=>P27u?2e4.@K'd9@f'^8B)ZHB +B_uN@C\VZ>C]8)JC&VfFBDuN?AH$';A,B^3?iF?L>_-.2>iK#f?2e10?iFI4@fBm:Ac?ECC]85NE;jqX +FoHaeJ,Y'!M#NA4OoCaISGo2\WW'+#[/Rc<_>_FQc2Q,ieGe5%hYuL5kPj`Fm/HMRoD\C]p\t!fqu6Qn +ro=%=s8N#srVl]nq>U-fo`"F\nG_eRl2KiEi;VR3gA]S#d/M8g`;[RO]`,59XT#*rT`1G[Q2ZjDMZ/A0 +JGsrqH2_j`E;jbSCAqoGB)Z6<@/aO4?2e+.>Q.g'=b0_.=TM]0rEB)&ra,J/ra>V3rac">qe#h@rb;@F +rb)+Arb;@Frb;@Eqe#_9qdKJ3ra5P/qcir$pf[SuJQ_qSJQ]0Zqc`l$ra,J/ra>V3rac">qe#h@!,2IJ +C&VfFBDZBAC&VfFC&VcBB)?-9@K'[6?i+1,>PhV!=oMNS=j^B'=kd*V>5MP'?Me+/@/FC3AH$0;B)ZKC +C&VfFBDZBAC&VfFC&VcBB)?-9@K'[6?i+1,>PhV!=oMNS=f#8P=b0_,=b0_,=b0_,=o2D">Q.t+?iFI1 +@K'g:Ac$*=B`;`FB`;ZAB`;`FB`;`FBDZ<528"=92Q-JQ[P,X]bO)qcj&+qd9>1 +qdKJ7rakt=rb2:Frb2:Dqe5tCrb2:Frb)+?qdfS4ra>_4qd0/(qc`btr`IWPJQ[P,j]VIar`fA,ra#M1 +ra>_6rau.CrbDFMrc%jWrd"Kjrdb!&repc:rg!JOrh07friQ1*rk/6Grl"f[rm1Smrn@A-ro!err2oqrqcWhrqHEarpp'Wrp9XJroO.;rnRM+rmLekrlY5Wrk85hh,?N+=2@/aU6A,]s4AH$0;AH$0;AH$*<@fBm:@K'[6?iFC2?2Ih)=T2J&=T2A#<.S#\ +<;ohk<;ons5hh,?N+=2@/aU6A,]s9AGg!;Ac$$;Ac$$;A,]s:A,]p9@/aO4?N+7->5hY' +=oMP&k5hY'=oMP&5hh,?N+=2@/aU6 +A,]s4AH$0;AH$0;AH$*<@fBm:@K'[6?iFC2?2Ih)=T2J&=T2A#5hh,?N+=2@/aU6A,]s4AH$0;AH$0;AH$*<@fBm:@K'[6?iFC2?2Ih)=T2J&=T2A#l.q.A,^'=CAr)LE;k"ZH2`9lK)UQ)MuJn=R/WZUV#IFoYl;34^Ac"Kb5T]cdf.r!h>Z@3 +jo4KCm/HJQo)A:\p\t!fqYpHmro=%=s8N#srVlZmq#:$eo`"C[n,DYPkl0ZBi;VO2g&BCuc2Pia_>_.I +\,NT1WW&[lS,S`QOoC4:K`6N$HiA3fErKtUC]8#HA,]p9?iF:/=oMM%PhP%=8l5!<;9Dh;Lq]j;1VU*;>=&d;uTbq"?2e4.@/FF%A,]s:@JaI3?Me%->lIt)=T2D$=&d;uTbq +"?2e4.@/FF%A,]s:@JaI3?Me%->lIt)=T2D$Ph_*?i+7.@ddh+@fBg5@/aL0?2e+.>PhP%=8l5!<;9Dh;UA9l;1VU+;>sJm;uTbqQ/"/ +@K'd9B`;cGDZ4\UGQ)sgJGt9%M>iY:QN!BQU].7lYPu$1]`,bHao9QadJhhuh#?72jSnBBli-APo)A:\ +p\t!fqYpHmro=%=s8N#srVlZmq#:$eo`"C[n,DYPkl0ZBi;VO2f`'7sbl5Z^_#CtF[f3H/W;`LiRf8QN +O8aq6KDpB"GlDgaDuOSPC&V`D@/aL3?2e"+=8l5!;uT\l:o7$>:QJ_6qdBD1ra#M.r`];*r`];(pf7;lr_i_mqb[8er_NMgJPZ5?JPWmR +r_EGgr_EGgr_WSkr_i_or`/qur`/hur`fA*r`oG.ra5V3!FT=.@K'[6@JaI3?iF@1>lIq+>Q.h*=nl"r +;uT\o;>X2h:B"&g:4Z3g:Ou=):]=,g:]=,g:]=2i;>sJm;uTer5he+?2e4.@.dt-@/aU3 +@/aO4?2e+.>5hb*>5h\"sJm +;uTer5he+?2e4.@.dt-@/aU3@/aO4?2e+.>5hb*>5h\"#^rm:YsrnIG1roF(Brp0RPrpp'\rqHEfrqcWmrr1sXj8],Xrr)imrqQKerq$-Z +rpTjOroa:Arnm_/rn%.rrlkA_rkSNFrjDa-rhf[frg3VIrf6u3rdk&rrcS3\rbqdLral(;ra5Y/r`T5# +r`&kpr_WJfqb=%`JP;+ur_*5aq+Ui`qbI,dr_`Ynqc*Pqr`B)&qcir'ra,S3ra5P/ra5Y4qd08-qcj&' +r`B)"qc*Pmr_`Pgr_E5_JP>f3JP<[Lr_*5apeCW\r_NMjr_r\nr`9#"r`]2'qcs2.!FB+3@/aO1?N+=2 +@/F:0?2Ik*>5hV&sMk<;oqt=8lD#>Ph_*?N+@3 +?i+1/?iFI1?N+7->Q.h*=8l7t<;oep;>X/g:A@P79V5"09S#lg9S#lg9S#ls9`@]a9__?Z:B"&g;>sMk +<;oqt=8lD#>Ph_*?N+@3?i+1/?iFI1?N+7->Q.h*=8l7t<;oep;>X/g:A@QZ9S#lg9Y!jr9E%W[:&@]b +:]=5j;u9Pn5MP$?2e10@/aO1?N+=2@/F:0?2Ik*>5hV&lJ+0@K'j;B`;rLErL4\I/\ZqL&R,3P5^gIT`1kgXo>a-]DfVFaSsE_d/MYrg]$+0 +jSnBBlMg8Onc&.Zp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zn,DVOkPjQAhYu7.f)F%qbPoN\_#CqE +[/R0+VZ*4eQN!$GN;eM0J,XfoFT-7YD>n/HA,]j7?2e%,=T2;!;Ys8h:&[h]8qBTq9)D3W8c_UZ!)3Ab +r_5h\( +=T2>"<;oep;uTYn;#X5h:&[fb9`@]a9)D229$p7^9'8hD8c)-Z9`@]a:&[oe;#X>k;uT\o<;ons=T2J& +>5he(?2e1'?2e10?2In+>5h\(=T2>"<;oep;uTYn;#X5h:&[fb9`@]a9)D228u5.28qBTc8qBTc8qBTo +9)D3W9)_N`9E%Zb:B")h;>sMn;Z9Ypl.h+?M.V'?N+7->lIq+=oMP&sDk +:B!ue9E%Wa9E%Q\8HDFUJP(Jc\Ou`jqb$i]r_*5br_EGhr_`Ynr_i_pr`/r"r`T5(r`o>+ra,8'ra,S0 +qcs,(r`T5&r`/qsr_i_or_`Ykr_EGer_*5ar_*5_qao7/JP(Jchb*lAr_<8cr_i_pr`K/'ra#M1raYq> +rb_XSrcJ-drdb!$rf$irr2oqrqcWhrqHE`rpg!Urp'LGro="7rn@A%rm:Yfrl+lOrji$7ri?$orh'1TrfI,;re(3"rd+Qa +rbqdPral(Q.q'>l.h+>Q.n,>Q.b(=8l>$<;ohq;Z9Ml:]=,g9`%K[8V'G)8:a=D8H)-S8H)3[9D_E^:B"&g;#XAl +;uTbk=Sc5&>?h)4pg!]%r`fA,r`fA(r`B)$r`&kqr_i_lr_NMgr_32^qal?0a@LkQk=GSBpdkBUr_*,^ +r_EGgr_WSlr_reqpfR;qra#;(qd'2*r`oG,r`K/$r`K/!r_reor_WSir_EGdqb-fXJOl;%JOk>_JOk>_ +JOk>_NCa%=pdkBUr_*,^r_EGgr_WSlr_reqpfR;qra#;(qd'2*r`oG,r`K/$r`K/!r_reor_WSir_EGd +qb-fXp.0a*JOm=Br^Z`Sr^m)^qb6uar_NMir_i_or`&Yppfm`'pg!]%r`fA,r`fA(r`B)$r`&kqr_i_l +r_NMgr_32^qanq$JOk>_i^j&?r_!/_r_3;er_`Ymr`9##r`];.raPkrr2oqrqcWhrqHE`rpg!U +rosFEro3q6rn@A%rm1Scrl"fLrjVm4ri5smrgj%Prf@&9rdk&srcnE^rbh^MraYq8ra#M*r`/qrr_WSh +r_3;`r^m)[UIKf(O%0"8qaLTV7fZ'Y8H)3[9)_K\:&[ud;Z9_rkhM%>Q.n)>5hY'sDk:&[ic9E%Q_8cD9X8,c!T7=dr,7Y+%@7f,XO7fGpW8H)3[9)_K\:&[ud;Z9_r$Co1pfdZ$r`o>(r`K/#r`B)"r_i_mr_WSgr_3;ar_!/]r^coVr^QcRJO\$VJO\flqaLBOr^ZrYr^m)] +r_*,_r_WJir`9"ur`8nur`];+pfdZ$r`o>(r`K/#r`B)"r_i_mr_WSgr_3;ar_!/]r^coVr^QcRJOZJ* +JOY2[JOY2[JOY2[NCNe6qaUQTr^d#[r_!/_qb@&dqbmDor`/quqcNi$r`o5%r`fA,qc`u$r`9#"r`9"r +r_`Ykr_5he% +>5hb*>l._(=T2A#=8l8";Z9Pm;#X2g9`@]a9)_E]8GbpV7f,X'7Y+$[7c-]78H)3[9)_N`:B")h;uThs +=T2V*@/a[8CAr)LEW14^I/\]rMZ/Y8PQ%-PU].:mZMqB5^&GtLb5T`dec+8$hYuO6k5OWEmf)_ToD\L` +q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7g6g&BM#ci2&c`;[IL\,N]4WrAdmSc4iPNrFn7 +JGsopGQ)U]D>n8K@fBa6>lIh(hP22!>Q.e&=Sl.uXAmPrhKImrj)O5rk8rr2oqrqcWh +rqHE`rpg!UrosFEro3q5rn.5"rm1Scrl"fLrjVm4ri,mkrg`tNrf-o4rdauprcS3ZrbVRIraGe4r`fA& +r`&kor_NMer_!/\r^ZrWr^8]r^?ZQ!(HlVr^ZrZr_!/_r_3;dr_NMiqc*Gnr`A>er`K%ur`/qs +r_WSir_EGdr_*5_r^m)Zr^QcRr^?`Qr^)0'rBl-'[6sp]qaLKRr^ZrZr_!/_r_3;dr_NMiqc*Gnr`9)& +l<4*gqc<\rr`&knr_NMgr_3;ar_!/]r^ZrWqaLKPr^6ZOJO@gPJOAB`r^?WPr^QlWr^m)]r_*5ar_EGg +r_WJkqc<\tkun!fqc<\rr`&knr_NMgr_3;ar_!/]r^ZrWqaLKPr^6ZOJO?8$JO=uUJO=uUJO=uULI;&/ +qaLKRr^ZrZr_!/_r_3;dr_NMiqc*Gnr`A>er`K%ur`/qsr_WSir_EGdr_*5_r^m)Zr^QcRr^?`Qr^$WQ +6\.UU6aK/Z7/KFP7fGpW8cD?]9E%Wa:B"&g;#=5hQ.t.@K's>C]8;PFoH^dJGt?'NW,+?SGo8^ +WW'4&\Gj2@`;[pYci2Gng&Bh,ir8*>l2L,MnG`%Yp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JM +k5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC==LAl]%H2_pbE;jYPBDu<262O"G6iKOR7fGpW8H)3[9D_K`:]=;l +<;oqt5hh,@/agl2L,MnG`%Y +p\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC== +LAl]%H2_pbDuOMNBDu<ZF5k5OWEmf)_ToD\L`q>U6irVlfVs5s@\rqlZnqYp9hp\sd`nc%tUl2KiEir7d5 +f`'D"ci2&c`;[IL\,NZ3W;`OjSGnZMN;eS2J,X`mFT-4XCAqiE@/aI2>5hP$;Z9Jk9`@Z`8cD3Y7K,^P +6iKER5_21`5l3kE6Ms1N6iKOO7fGsX8cDB^:B!ue:]=8k<;T\p=6Widdr`8nrr_reoqbR2dr_*5^r^d#XqaLBLpd4sGej+dOJO&Eaqa19Lr^?`Sr^QlYr_*5ar_NMk +r`/r$r`oG1rau.FrbqdXrd+QnreCE2rfR2Mrh9=iriuI3rk8$ +=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ym +r`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?H +qa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU +7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" +sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J +5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_ren +r_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_: +rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF +62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlW +r^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs! +!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg +:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp +=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y +7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGs +r`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;e +r_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O +5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?H +r'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfS +r^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$ +sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z +:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ym +r`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TO +r^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K +5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" +_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDc +r_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu +!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K +7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlW +r^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et! +JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W +7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp +=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;` +r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)" +r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^ +r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M +5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBI +qa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfS +r^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< +rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k$=8l8"sAj +:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z +:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ks +qcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?N +r^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ +6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6 +!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDc +r_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@L rcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"262j4M6iKOR -7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K -5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K4 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% -rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"sAg:&[ca -8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"262j4M6iKOR7K>s[84`_P -r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" -sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\7 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K +sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K 7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld -9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)] +qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*# +^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca +8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p +=8l>$=8l8"sAg:&[ca8H)-Y7fGjU -7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -262j4M6iKOR7K>s[84`_Pr_3;er_i_p +7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)" +r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_p r`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W -7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J -5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_: -rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"262j4M -6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL -62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O -5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-c +sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O +5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHO +r^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZO +qa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf +;>sJm<;onp=8Q+p=8l>$=8l8"sAg +:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ks +qcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfU +r^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$ +=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u +5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#" +P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\ +r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA" +=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS +7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)] +qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cO +jZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S +6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p +=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qs +r_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMj +r_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW6 +5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*H +r^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZO +qa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld +9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf +;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5" +r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYs +pfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfU +r^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J +5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$" +Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\ +r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-c rdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"sAg -:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[ -84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$ -=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u -5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< -rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k$=8l8"sAj -:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y -7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"262j4M6iKOR7K>s[84`_Pr_3;e -r_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ -8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS +7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&c +r_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^ +r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y +7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ +=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ -6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5* +6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qs +r_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5* ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"2 -62j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S -6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"! -5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@L -rcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"262j4M6iKOR -7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K -5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K4 +=SPts=T2D$sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e81 5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% +7K,^S6iKFL62j+M5_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`S +r^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3H +r]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm +<;onp=8Q+p=8l>$=8l8"sAg:&[ca +8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYs +pfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\ +r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" +sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O +5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2 +r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrW +r^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts +=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW +8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&c +r_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2 +r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL +62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ +=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Q +r^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_ren +r_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_p +r`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF +62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`S +r^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3H +r]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ +8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm +<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGs +r`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZ +r_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!! +5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6 +r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrW +r^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"sAg:&[ca -8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"262j4M6iKOR7K>s[84`_P -r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" -sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\7 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K +;>sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW +8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ym +r`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?H +qa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU +7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" +sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J +5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_ren +r_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_: +rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF +62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlW +r^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs! +!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg +:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp +=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y +7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGs +r`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;e +r_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O +5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?H +r'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfS +r^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$ +sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z +:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ym +r`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TO +r^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K +5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" +_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDc +r_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu +!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K +7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlW +r^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et! +JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W +7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp +=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;` +r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)" +r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^ +r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M +5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBI +qa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfS +r^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< +rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k$=8l8"sAj +:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z +:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ks +qcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?N +r^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ +6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6 +!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDc +r_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@L +rcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K 7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld -9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)] +qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*# +^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca +8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p +=8l>$=8l8"sAg:&[ca8H)-Y7fGjU -7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -262j4M6iKOR7K>s[84`_Pr_3;er_i_p +7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)" +r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_p r`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W -7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J -5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_: -rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"262j4M -6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL -62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O -5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-c +sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O +5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHO +r^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZO +qa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf +;>sJm<;onp=8Q+p=8l>$=8l8"sAg +:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ks +qcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfU +r^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$ +=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u +5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#" +P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\ +r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA" +=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS +7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)] +qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cO +jZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S +6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p +=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qs +r_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMj +r_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW6 +5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*H +r^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZO +qa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld +9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf +;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5" +r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYs +pfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfU +r^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J +5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$" +Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\ +r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-c rdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"sAg -:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[ -84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$ -=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u -5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< -rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k$=8l8"sAj -:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y -7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"262j4M6iKOR7K>s[84`_Pr_3;e -r_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ -8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS +7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&c +r_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^ +r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y +7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ +=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ -6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5* +6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qs +r_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5* ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"2 -62j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S -6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"! -5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@L -rcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"262j4M6iKOR -7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K -5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K4 +=SPts=T2D$sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e81 5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% +7K,^S6iKFL62j+M5_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`S +r^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3H +r]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm +<;onp=8Q+p=8l>$=8l8"sAg:&[ca +8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYs +pfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\ +r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" +sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O +5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2 +r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrW +r^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts +=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW +8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&c +r_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2 +r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL +62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ +=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Q +r^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_ren +r_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_p +r`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF +62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`S +r^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3H +r]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ +8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm +<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGs +r`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZ +r_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!! +5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6 +r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrW +r^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"sAg:&[ca -8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"262j4M6iKOR7K>s[84`_P -r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" -sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\7 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld -9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"sAg:&[ca8H)-Y7fGjU -7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -262j4M6iKOR7K>s[84`_Pr_3;er_i_p -r`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W -7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW +8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ym +r`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?H +qa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU +7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" +sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J -5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_: +5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_ren +r_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_: rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"262j4M -6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL -62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O -5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-c -rdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"sAg -:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[ -84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$ -=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u -5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF +=T2D$sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF 62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< +6iKFL62j+M5_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlW +r^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs! +!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg +:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp +=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y +7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGs +r`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;e +r_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O +5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?H +r'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfS +r^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$ +sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z +:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ym +r`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TO +r^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K +5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" +_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDc +r_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu +!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K +7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlW +r^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et! +JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W +7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp +=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;` +r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)" +r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^ +r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M +5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBI +qa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfS +r^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k$=8l8"sAj -:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y -7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"262j4M6iKOR7K>s[84`_Pr_3;e -r_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ -8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ -6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5* -ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"2 -62j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S -6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"! -5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@L +:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z +:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ks +qcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?N +r^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ +6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6 +!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDc +r_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@L rcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"262j4M6iKOR -7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K -5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K4 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% -rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"sAg:&[ca -8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"262j4M6iKOR7K>s[84`_P -r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" -sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\7 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K +sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K 7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld -9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)] +qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*# +^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca +8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p +=8l>$=8l8"sAg:&[ca8H)-Y7fGjU -7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -262j4M6iKOR7K>s[84`_Pr_3;er_i_p +7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)" +r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_p r`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W -7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J -5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_: -rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"262j4M -6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL -62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O -5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-c +sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O +5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHO +r^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZO +qa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf +;>sJm<;onp=8Q+p=8l>$=8l8"sAg +:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ks +qcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfU +r^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$ +=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u +5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#" +P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\ +r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA" +=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS +7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)] +qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cO +jZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S +6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p +=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qs +r_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMj +r_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW6 +5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*H +r^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZO +qa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld +9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf +;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5" +r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYs +pfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfU +r^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J +5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$" +Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\ +r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-c rdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"sAg -:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[ -84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$ -=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u -5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< -rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k$=8l8"sAj -:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y -7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"262j4M6iKOR7K>s[84`_Pr_3;e -r_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ -8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS +7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&c +r_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^ +r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y +7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ +=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ -6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5* +6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qs +r_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5* ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"2 -62j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S -6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"! -5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@L -rcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"262j4M6iKOR -7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K -5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K4 +=SPts=T2D$sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e81 5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% +7K,^S6iKFL62j+M5_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`S +r^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3H +r]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm +<;onp=8Q+p=8l>$=8l8"sAg:&[ca +8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYs +pfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\ +r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" +sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O +5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2 +r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrW +r^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts +=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW +8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&c +r_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2 +r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL +62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ +=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Q +r^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_ren +r_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_p +r`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF +62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`S +r^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3H +r]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ +8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm +<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yj +r_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGs +r`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZ +r_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!! +5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6 +r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrW +r^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"sAg:&[ca -8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"262j4M6iKOR7K>s[84`_P -r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" -sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\7 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld -9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"sAg:&[ca8H)-Y7fGjU -7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -262j4M6iKOR7K>s[84`_Pr_3;er_i_p -r`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W -7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW +8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ym +r`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?H +qa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU +7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" +sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J -5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_: +5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_ren +r_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_: rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"262j4M -6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL -62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O -5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-c -rdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"sAg -:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[ -84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$ -=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u -5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF +=T2D$sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF 62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< -rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k$=8l8"sAj -:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlW +r^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs! +!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg +:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp +=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y -7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"262j4M6iKOR7K>s[84`_Pr_3;e +7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGs +r`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;e r_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ -8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ -6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5* -ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"2 -62j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S -6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"! -5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@L -rcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"262j4M6iKOR -7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$isAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O +5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?H +r'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfS +r^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu!EWA"=SPts=T2D$ +sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z +:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ym +r`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et!JO"cOjZrf2r^-TO +r^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K -5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K4 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% -rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"sAg:&[ca -8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"262j4M6iKOR7K>s[84`_P -r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" -sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\7 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld -9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"sAg:&[ca8H)-Y7fGjU -7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -262j4M6iKOR7K>s[84`_Pr_3;er_i_p -r`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$isJm<;onp=8Q+p=8l>$=8l8" +_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDc +r_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^r_NMjr_i_pr`/nu +!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M5jCW65Q3qF62O%K +7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBIqa(*Hr^?`Sr^QlW +r^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]et! +JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W -7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J -5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_: -rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"262j4M -6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL -62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O -5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-c -rdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf -;>sJm<;onp=8Q+p=8l>$=8l8"sAg -:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[ -84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$ -=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u -5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< +7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp +=8Q+p=8l>$=8l8"_1r`T5"r_`Yjr_3;` +r^d#Xr^?`Qr^-TMWBc#"P!K"2r]p?Hr'LHOr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)" +r`/qsr_renr_NDcr_!/\r^ZrWr^HfSr^6ZOqa(3Hr]bs!!'l*#^-MZ^r]p?Hqa:?Nr^HfUr^ZrZr_!&^ +r_NMjr_i_pr`/nu!EWA"=SPts=T2D$sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO!!5h&&M +5jCW65Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5QO)6!'c$"Jj?t6r]gBI +qa(*Hr^?`Sr^QlWr^m)]qb@&cr_`Ymr`&ksqcEYspfIGsr`B)"r`/qsr_renr_NDcr_!/\r^ZrWr^HfS +r^6ZOqa(3Hr]et!JO"cOjZrf2r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k$=8l8"sAj -:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp -=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y -7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"262j4M6iKOR7K>s[84`_Pr_3;e -r_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF -62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\ -8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$ -=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ -6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5* -ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS -7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"2 -62j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S -6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"! -5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@L -rcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z -:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"262j4M6iKOR -7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K -5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K4 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp% -rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm -<;onp=8Q+p=8l>$=8l8"sAg:&[ca -8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"262j4M6iKOR7K>s[84`_P -r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8" -sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\7 -5Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld -9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p -=8l>$=8l8"sAg:&[ca8H)-Y7fGjU -7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -262j4M6iKOR7K>s[84`_Pr_3;er_i_p -r`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K -7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW -8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i$=8l8"sAj:&[ld9)_B\8,c!W -7K,^S6iKFL62j.K5Cl(u5aF\75Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8" -sAg:&[ca8H)-Y7fGjU7/fRQ6Mj(J -5lO"!5_21O5j1K45Q3qF62O%K7/fXS7fGpW8cD?Z:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"262j4M6iKOR7K>s[84`_Pr_3;er_i_pr`T5*ra>_: -rb;@LrcJ-crdXp%rf$i$=8l8"$=8l8"262j4M6iKOR7K>s[84`_Pr__;rb;@LrcJ-crdXp%rf$i_2r`];$r_i_kr_3;`r^m)Yr^HfSqa:?LX?_>%P!Jn1qa13J!(6`SqaUQUr^m)^r_EGe -r_NMkr`&bpr`A>dr`8nrr_reoqbR2dr_*5^r^d#XqaLBLpd4sGJNs3#JO$q7qa(*Gqa:?OqaUQUr^m)^ -r_EGer_NMkr`&bpr`9)%l<+$dqc3Vor_iVhr_EGcr^m)[r^QcRqa:-Fr]u*#e3JRMl9P54qa10Ir^H]R -r^d#[r_*5cr_dr`8nrr_reoqbR2dr_*5^r^d#XqaLBLpd4sGr'5fuJO"cOJO"cO -JO"cOJO$k5qa(*Gqa:?OqaUQUr^m)^r_EGer_NMkr`&bpr`A>dr`8nrr_reoqbR2dr_*5^r^d#XqaLBL -pd4sGej+dOJO&Eaqa(*Gqa:?OqaUQUr^m)^r_EGer_NMkr`&bpr`A>dr`8nrr_reoqbR2dr_*5^r^d#X -qaLBLpd4sGW^),#PX,+4r^6ZQr^HfU!(d2_8cDB^9`@ie;Z9\q>5he+@/ad;C]88OFT-UcJ,Y3%N;et= -SGo5]W;a($\,O)?`;[pYci2Gng&Bh,ir8*>l2L,MnG`%Yp\t!fqYpHjroX7Cs8N#prVlZmq#:$eoD\:Z -mf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC==LAl]%H2_pbDuOMNBDu<162O"G6iKOR7fGpW8H)3[9D_K`:]=;l<;T\p=6Wid_rosFMrp]pYrqHEfrqcWmqu5aXj8],Xrr)imrqQKe -rq$-ZrpKdMroX4>rn[S+rm^qnrlP/Xrk8dr`9"ur`9"tr_r\ir_EGcr_!/\r^ZiSqa5p$S3iE+r^$EJqa:?Or^QlWr^d#[r_*,`r_NMlr`&kt -r`/r!kudpcr`/qur`&kqqbR2dr_*5_r^d#YqaLBLn3V[mJO4oSJO4oSJO4oSJO6n6r^$EJqa:?Or^QlW -r^d#[r_*,`r_NMlr`&ktr`/r!kudpcr`/qur`&kqqbR2dr_*5_r^d#YqaLBLb!LYGJO8Hbr^$EJqa:?O -r^QlWr^d#[r_*,`r_NMlr`&ktr`/r!kudpcr`/qur`&kqqbR2dr_*5_r^d#YqaLBLSjIupN^E_4r^?`S -r^HlZ!D,l^9E%Zb:]=8kZF5k5OWEmf)_ToD\L`q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7d5f`'D"ci2&c`;[IL -\,N]4WW&XkSGn]NNW+_4JGsopFoH@ZD#S,I@K'U4>Q.\&<;obo:]=&e9)_B\8,c!W7&E>&6]"207/TIR -7K,dU8,c*Z9)_K_9`@fd:]=2f<;T_q=6Wle=Sl.urr2oqrqcWhrqHE`rpg!UrosFEro3q5rn7;$rm1Scrl"fLrjVm4 -ri,mkrg`tNrf-o6rdauprce?\rbVRJraPk6r`oG(r`/qpr_WSgr_*5^r^d#YUIB`&O%&q6r^H`S!(QrX -r^coYr_*5br_NMir_`Pmr`8nur`T,%pf[T"r`T,#r`8nrr_`Ykr_NMfr_32]r^d#YqaUQRqa?!(rC)9+ -]1)Tbr^H]Rr^ZrYqb$i\r_528">5h\%=T2@uXAm#sDk -:]=)f9`%H]8H)-V7fGjR7"Ie'7?^1;7/fXP7fGpW8Gc$Y9E%Zb:]=2i;>XAm# -sDk:]=)f9`%H]8H)-V7fGjR7/99&7=dmY7=dmY7=dmY7=dn<7JfLP7JfRR8,c'V9)_K_:&[rf -;#X>h528">5h\%=T2@uXAm#sDk:]=)f9`%H]8H)-V7fGjR7&NJ)7>jV6 -8,c'Y8H;Ba92#7Yr_WSkr`&kur`oG0raPk@rb_XRrce?hrdb!)rf6u@rg`t^ri,n&rj_s@rl"fYrm1So -rn7;,ro3q>rosFMrp]pYrqHEfrqcWmrr1sXj8],Xrr)imrqQKerq$-ZrpKdMroX4>rndY.rmh"orlP/X -rk8Breg]+rdFcjrc.pTrbDFBra>_2r`K/"r_remr_EGdr_!/]r^`eRJOY\iqaLBO -!CoW[8,c'Y8cD?]9D_H_;#=/i5he%>5hb*>l._(=T2A#=8l8";Z9Pm;#X2g9`@]a9)_E] -8GbpV7f,W*7f>f-7_;.e7JfRR8,c'Y8cD?]9D_H_;#=/i;qaUQTr^d#[r_!/_qb@&dqbmDor`/quqcNi$ -r`o5%r`fA,qc`u$r`9#"r`9"rr_`Ykr_(r`K/#r`B)"r_i_mr_WSgr_3;ar_!/]r^coVr^QcRq*op)JOY2[ -JOY2[JOY2[JO[1>qaLBOr^ZrYr^m)]r_*,_r_WJir`9"ur`8nur`];+pfdZ$r`o>(r`K/#r`B)"r_i_m -r_WSgr_3;ar_!/]r^coVr^QcRdmemXJO\`jqaLBOr^ZrYr^m)]r_*,_r_WJir`9"ur`8nur`];+pfdZ$ -r`o>(r`K/#r`B)"r_i_mr_WSgr_3;ar_!/]r^coVr^QcRVac5,Mam\:r^m)]!)*De9`@fd;#XDmnPSGlE*iJc:Q+NrG7ASc5D`WrB='\Gj2@`;[pYci2Jog&Bk-ir8*>l2L,MnG`%Yp\t!f -qYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)MNkPjN@hYu7.ec*qpbPoK[^](eCZi7$)V#I"cQ2ZmEMuJA. -J,XcnErL"VD#S#F@fBa6>5hY'lIt,=T2D$=T2;!;uT\o;#X8i:B!ra9D_;38B=>Q8EWPC8,,XS -8cDB[9`@fd:]=2i;Z9Vo<;9Sj>Q.q'>l.h+>Q.n,>Q.b(=8l>$<;ohq;Z9Ml:]=,g9`%K[8V'F&8Q.q'>l.h+>Q.n,>Q.b(=8l>$<;ohq;Z9Ml:]=,g9`%K[8ao9% -8:a<_8:a<_8:a<_8:a=B8H)-S8H)3[9D_E^:B"&g;#XAl;uTbk=SQ,"?2.\%?2e(->lIt,=T2D$=T2;! -;uT\o;#X8i:B!ra9D_<'8:a<_8EEDA8,,XS8cDB[9`@fd:]=2i;Z9Vo<;9Sj>Q.q'>l.h+>Q.n,>Q.b( -=8l>$<;ohq;Z9Ml:]=,g9`%K[8Y/J(8<-7?8cD?]9E%Tb:B=6er_`Ymr`9##r`];.raPkrr2oq -rqcWhrqHE`rpg!Urp'LGro="8rn@A&rm:Yfrl4rPrji$8riH*rrh'1VrfR2=re19#rd4Wcrc%jRrb)4@ -ra>_1r`T5%r_reor_WShr_sMnlJ%% -?N+70?N+7->l.\'=T2A#sDk:]!lc9`%J69(Y`,9"R^p8c)-Z8cDB^9`%Q`:]=2i;>sMnQA%1?![,0ra#M0ra#D+qcWo#r`9"ur_renr_WSiqb@&`qb)K4a@_"Uk=Y_Fqb$iZr_*5aqb@&c -r_WSkr_rerr`9##qcWf$ra#2'ra#M0ra#D+qcWo#r`9"ur_renr_WSiqb@&`qb)K4S4\u;r^luZr^m)^ -r_32`r_NMir_`Ynr`/qur`K&#qcs,+oj7W'ra,S0qcs#$r`K/#r`/qrr_`Ykr_NDcr_32^n4J7(JP(Jc -JP(JcJP(JcJP*IFr^luZr^m)^r_32`r_NMir_`Ynr`/qur`K&#qcs,+oj7W'ra,S0qcs#$r`K/#r`/qr -r_`Ykr_NDcr_32^b"@4WJP,#rr^luZr^m)^r_32`r_NMir_`Ynr`/qur`K&#qcs,+oj7W'ra,S0qcs#$ -r`K/#r`/qrr_`Ykr_NDcr_32^Sk=Q+N_9:Dqb6ua!)N\m;#XAl;uTkt=oM\*@/a^9BDucIE;jqXHiAQp -K`6r0OoC^HTDk\dXT#U+])KJD`r=3]d/MVqgA^"/j8S6@lMg5NnG`%Yp\t!fqYpHmro=%=s8N#srVlZm -q#:$eoD\:Zn,DVOkPjQAhu;@/fDa.rbl5]__#CtF[Jm<-VZ*7fQi<0INrFb3Jc:&rFoHF\DuOGLAc?-; -?iF:/=oMG#<;oep;#=&c9rUg;9TMmH9E%W\9`Rob:B"&g;>sMk<;oqt=8lD#>Ph_*?N+@3?i+1/?iFI1 -?N+7->Q.h*=8l7t<;oep;>X/g:A@P79_V539Y4!t9E%W[:&@]b:]=5j;u9Pn5MP$>l\13?=*V= -ra5P/ra5Y4qd08-qcj&'r`B)"qc*Pmr_`Pgr_E5_JP=6\JP>6#r_*5apeCW\r_NMjr_r\nr`9#"r`]2' -qd'2-ra>_4qd08/ra>V0ra#D*r`];&r`8nqr_i_mqbR2dpe?<5T1kGBr_*5apeCW\r_NMjr_r\nr`9#" -r`]2'qd'2-ra>_4qd08/ra>V0ra#D*r`];&r`8nqr_i_mqbR2dpeC?RJP:VgJP:VgJP:VgJP:Vg\P2uq -r_3)]qbI,dr_`Ynqc*Pqr`B)&qcir'ra,S3ra5P/ra5Y4qd08-qcj&'r`B)"qc*Pmr_`Pgr_E5_btN[^ -JP>0!r_*5apeCW\r_NMjr_r\nr`9#"r`]2'qd'2-ra>_4qd08/ra>V0ra#D*r`];&r`8nqr_i_mqbR2d -pe@GUJP;(tr_U6irVlfVs5X.Yrr2lqqYp9hp\sganc&"Vli-,IjSn*: -h#>t*d/M8ga8WmR]Df85hb*>5h\"k;Z9Vo -Q.h*>lJ%.?i+7(@K'[6@JaI3?iF@1>lIq+>Q.h*=nl"r;uT\o;>X2h:B"&g:4Z3;:QnTR -:B"&g:B"&g;#X>k;Z9VoQ.h*>lJ%.?i+7(@K'[6@JaI3?iF@1>lIq+>Q.h*=nl"r;uT\o -;>X2h:B"&g:AI\::Ou;m:Ou;m:Ou;m:OusJm;uTer5he+?2e4. -@.dt-@/aU3@/aO4?2e+.>5hb*>5h\"k;Z9Vo -Q.h*>lJ%.?i+7(@K'[6@JaI3?iF@1>lIq+>Q.h*=nl"r;uT\o;>X2h:B"&g:8^m=:QA6J -;#XAl;ZKeu#^rm:Ys -rnIG1roF(Brp0RPrpp'\rqHEfrqcWmrr1sXj8],Xrr)imrqQKerq-3\rpTjQroj@Bro!e2rn.4trltGa -rk\TIrjVm2ri,mkrg`tRrfI,:re:?%rd4Wfrc8!UrbMLHraYq9ra5Y0r`];'r`9"ur`#XjJPqP,qbd5g -!E2ns;uTbqPh_*?i+71@d.D%@f'R4?Me%*>PhP%=8l8"g -;Z9Vo<;ons"?2e4.@/aU8A*RS'@f'R4?Me%*>PhP%=8l8"g -;Z9Vo<;ons"?2e4.@/aX"A,]s7@/aL0?2e(->PhP%=8l8"X8j -;uTbqPh_*?i+71@d.D%@f'R4?Me%*>PhP%=8l8"F+@;Lq_s;Lq_s;Lq_s -;Lq`V;Ys>g;Z9Vo<;ons"?2e4.@/aX"A,]s7@/aL0?2Ik'=T2D$?;Lq_s -;WUgR;>X8j;uTbqPh_*?i+71@d.D%@f'R4?Me%*>PhP%=8l8"5hY'=oMP& -k5hh,?N+=2@/aU6A,]s4AH$0;AH$0; -AH$*<@fBm:@K'[6?iFC2?2Ih)=T2J&=T2A#k5hY'=oMP&k -5hY'=oMP& -<.S#"<97*Y;ts>k5hY'=oMP&$Co1qdBD5ral(Drb_XRrcS3crdOiureLK2rf[8Jrgj%a -ri?%&rji$BrkeZWrm(Mkrn7;,ro!e;roj@JrpTjWrq-3arqZQirr)iqj8\0>rr2oqrql]jrqHEarpp'X -rp9XKroX45MP'?Me+/@/FC3AH$0;B)ZKCC&VfFBDZBAC&VfFC&VcBB)?-9@K'[6 -?i+1,>PhV!=oMNS=oDKS=g)!*>5MP'?Me+/@/FC3AH$0;B)ZHDB`Vp^rb2:Dqe5tCrb2:Frb)+?qdfS4 -ra>_4qd0/(qc`btr`F_Sd92$'gKFDWqcj&+qd9>1qdKJ7rakt=rb2:Frb2:Dqe5tCrb2:Frb)+?qdfS4 -ra>_4qd0/(qc`btr`F_SV-/RVqc`l$ra,J/ra>V3rac">qe#h@rb;@Frb)+Arb;@Frb;@Eqe#_9qdKJ3 -ra5P/qcir$pf[Suq,r8OJQ[P,JQ[P,JQ[P,JQ]*Xqc`l$ra,J/ra>V3rac">qe#h@rb;@Frb)+Arb;@F -rb;@Eqe#_9qdKJ3ra5P/qcir$pf[Sudoh6)JQ^Z/qc`l$ra,J/ra>V3rac">qe#h@rb;@Frb)+Arb;@F -rb;@Eqe#_9qdKJ3ra5P/qcir$pf[SuVceRRO]hQbr`fA,r`oM2!FK45@/aU6B)ZKCCAr,ME;jnWH2`3j -JGt<&MuJe:Q2[6OT`1hfXo>X*]`,_G`;\![ci2DmgA]q-i;VmU9jrVlfVs5X.Y -rr2lqqu6Hkq#9pbo)A.XmJcALkPjK?hYu:/eGdhoc2P]]_>_.IZi7-,WW&UjSc5#UOT(4i,+J,Xip -G5cR^DuOVQCAqoGAc?6>@fBd7?iFC/?)_([>`W.h>Ph\'?2@k+?i+7.@fBp;Ac$->B`;`7CAr#GCAV`B -B`;ZDAc?6;@fBg8@/F=.?%H8N>_-.l>lIt)>kMD%?i+7.@fBp;Ac$->B`;`EC@c3>C\qlDC&;TCBDuKA -AG]j8@K'[3?i+,[>fBs!>j#Ak>Ph[u?2e4.@/FF4AH$0;BDuTDC%#g9C\qlDC&;TCBDuKAAG]j8@K'[3 -?i+,[>a\i\>lIt)>kMD%?i+7.@fBp;Ac$->B`;`7CAr#GCAV`BB`;ZDAc?6;@fBg8@/F=.?0tmJ>_-.2 ->_-.2>_-.2>_-.j>lIt)>kMD%?i+7.@fBp;Ac$->B`;`7CAr#GCAV`BB`;ZDAc?6;@fBg8@/F=.?,p3$ ->_-/A>lIt)>kMD%?i+7.@fBp;Ac$->B`;`7CAr#GCAV`BB`;ZDAc?6;@fBg8@/F=.?(5)M>`N(g?2e10 -?iFF5@KBqIraYq=rb2:Grb_XQrcA'^rd=]prdt-+rf-o=rg<\Trh9=jriZ7,rk8rr2oqrql]krqQKbrpp'XrpB^Mroj@@rnm_1rmh"rrm1S` -rkeZLrjDa0ri?$mrgs+Xrfd>Brepc/rdk&urcnEbrcA'Xrbh^Orb2:Cral(=raPk8UL8X\O'q`ir*]J2 -qdKA4qdoY;rbD4DrbVROqec4Hqec=Mrb_OJqeH+Crau%=qdfS4qdB)(JRJFaJRH)tpgS/HD>nGPD>S,GCAqlFB)?0:AG]g4@.dlX@*rA5@-:qm?he%+@JaU4Ac$->CA;TD -D#S>LD>S/HD>nGPD>S,GCAqlFB)?0:AG]g4@.dlX@&77p@/++(@/FC0AG]s8BDuZ@C]8/LDYn;JD#8)K -DZ4MMC\qlGBDuN?Ac$$8@JaI*?hn)\@"D^:@"D^:@"D^:@"D^r@/++(@/FC0AG]s8BDuZ@C]8/LDYn;J -D#8)KDZ4MMC\qlGBDuN?Ac$$8@JaI*?diD6@"D_I@/++(@/FC0AG]s8BDuZ@C]8/LDYn;JD#8)KDZ4MM -C\qlGBDuN?Ac$$8@JaI*?`.:_@#JFl@K'a8@fU'@AS(jRrb2:Irbh^SrcA'^rcnElrdt-&repc:rfd>M -rgs+`ri?%&rjDa?rkn`Trm1Slrmh#'rnm_7roj@HrpB^Srq$-]rqQKgrql]nrr1sXj8],Xrr)inrqcWh -rq69^rp]pTrp0RIro="9rn[S*rmUkmrlG)WrkJHCrj2U,rhf[hrgs+Urfd>Breg]0rdt-!rd4WircJ-[ -qeuIMrbMLJrb21Arar-@JRsdOrau.@ral1DB)lTDB)ZHBB`;ZAC&VoID#S>OD>nJKE;jkVEqOGOErL(R -E;jbSD>nGPD#S5LC&VfFBDuTAB)ZH?Ac?:mAbothA[l=NB)ZB@B)ZHBB)ZHBB`;ZAC&VoID#S>OD>nJK -DuakYEH1tuol9tOrc.^Prbh^Prbh^OrbMLIrb2:Drb21@rb)+>rap^mc=MQrap^mU1KEtrau.@ -rau.Brau.Brb2:Dqe?%FrbVROrb_XQpi-4Prc7[Orc8!Xpi-4Mrb_XPrbVRLrb;@Frb)4Dqe#h?qdob= -p18edJRsCDJRsCDJRsCDJRu9$rau.@rau.Brau.Brb2:Dqe?%FrbVROrb_XQpi-4Prc7[Orc8!Xpi-4M -rb_XPrbVRLrb;@Frb)4Dqe#h?qdob=ct.c>JS!hPrau.@rau.Brau.Brb2:Dqe?%FrbVROrb_XQpi-4P -rc7[Orc8!Xpi-4Mrb_XPrbVRLrb;@Frb)4Dqe#h?qdob=Uh,*gO_+N(qe,nBrb;FK!GcKMD>S8NErL1[ -H2`3jJ,Y'!L]321O8b@BQiZ -QN!$GNW+e6L]2l(J,XipGlDmcFoHC[E;jeTD>nANC]8(GBn9uNB`Vs`!,DCHrbD4Frbh^Rrc%aTrcA'Z -rcJ-^qfM^VqfMg[rcJ-[rc@sWqf)OPrb_XNrb_XLqeQ1GphB_@JSG'sJSD<%rbD=GrbD4Frbh^Rrc%aT -rcA'ZrcA-_!HiP^FSg.VFT-F^FT-=[F8L"TE;jbSD>nAND>n;IC]8)DC&VdsC!gXGC"mA$CAVfGCA;ZF -DZ4SRE;O\TF8g4ZFT-F[FSg.VFT-F^FT-=[F8L"TE;jbSD>nAND>n;IC]8)DC&VdsBr,O!C&VlEC]8)D -D>nGPDuO_QErL.ZErL1[Fo-:XF8L(YFoHL^ErL.WEr0hTDZ4MPD#S;NCAVfGCA;NBB_c@nBn9uLBn9uL -Bn9uLBn:!#C&VlEC]8)DD>nGPDuO_QErL.ZErL1[Fo-:XF8L(YFoHL^ErL.WEr0hTDZ4MPD#S;NCAVfG -CA;NBB[^[HBn:!OC&VlEC]8)DD>nGPDuO_QErL.ZErL1[Fo-:XF8L(YFoHL^ErL.WEr0hTDZ4MPD#S;N -CAVfGCA;NBBW#QqBp!-,CAr#JD#S8ODZOcprc%jVrcS3arcnEirdOitreLK1rf-o>rg*PQrh'1cri,n# -rjDa;rkeZSrlY5ermh##rndY5roF(Brp0RPrpg![rq??drqZQjrr)iqj8\0>rr2oqrql]krqZQerq-3[ -rpTjProsFDro="8rn@A&rmC_hrlG)Vrk8Q2[3NT)PJ`VuEarZ2V63^&GqK -a8X<^dJh\qgA^"/ir8'=l2L&Kn,DkVo`"R`q>U6iqu6Qnro=%=s8N#srVl`oqYphu;C0f`'A!ci2)d`rrr2oqrqucmrqcWfrq69_rp]pTrp9XI -roF(:rn[S+rm^qorlkA`rk\TIrj_s4riZ7#rhTOergs+Wrg*PHrf@&;repc1re19'rdautrdOiord1;a -JU3B'qg&0cr-A6dqg/6gqgABkrdOiprdO`oqgeZsqgeQnqgeZsqgeQnrdOWjrd=Tiqg/$_rcnHAHnHHiABmIK=nHrdXotre(3(reCE1rf-orr2oqrqucmrqcWgrq??`rp]pTrp9XJroO.< -rndY.rn%.srm(Mdrkn`Nrk/6:riuI*rhoakrh07^rgNhPrf[8Brf@&:reg]2re19'rdt#urdXotVLO/H -O+7%UqgAKoIK4irIJ\KmJGt&tJGXrtJGXrtL&Q`%K`6])K_pE$K`6]&K`6W'L&Q`(K)U<"Jc:8rJGt#p -IJ\KmIJ\JEJ,OkJJ%L4-If"QmIf=cmIf=lsJ,XuqK)U;tK)UK'KDgH(KS9>Yre10$re19)qh4s$re:?( -rdt-"rdk'#pji?mqgJ?jrdFZmJUc'sJUcj4qgSEjrdOipqgSNprdXotqh"ftqh"g$re(*$re:?)qh+m$ -re:6&re(3(re(3%rdb!!rdsoqrdO`mqgSNmqgO*GV14\YqgSEjrdOipqgSNprdXotqh"ftqh"g$re(*$ -re:?)qh+m$re:6&re(3(re(3%rdb!!rdsoqrdO`mqgSNmqgS?jJU`6#JU`6#JU`6#JU`6#\UXL*qgJHm -rdFZmrdautrdaltrdaltre:?(qh4s&re10$re19)qh4s$re:?(rdt-"rdk'#pji?mqgJ?jrdFZmdslpu -JUcd2qgSEjrdOipqgSNprdXotqh"ftqh"g$re(*$re:?)qh+m$re:6&re(3(re(3%rdb!!rdsoqrdO`m -qgSNmqgPGmJU`]0rdautrdb!!!.k6'K)UE%K`6f,M>iG4O8b:@P5^dHRJrfWT`1bdVuEjuYl;!.]`,\F -_u@jYcMl5jfDaM'hYuL5jo4KCm/HGPnG`(Zp&=^bqYpBkr;QZoro=%=s8N#srVl`oqu6Hkp\smco`"C[ -nG_kTl2KlFjSn*:h>Z.-eGdkpcMkoa_u@FM\c0&:Z2Up*WrApqUAghbT)P2XQi<9LP5^RBO8b.2o+ -LAlu'LAlu*L&Qc)Kn5!+L4P*BLAlo+K`6])LAlu-LAlu-LAlu'M#3&%MZ/P5N:i)-MuJV5N;eb.MZ/J3 -M#3#-LAlu'LAlu*L&Qc)Kn4uTL6IAkL&Qc)L&Qi+L]3&-L]3&-L\Q]&M=lc*MuJ\.MZ/P5MZ/S6MtMu, -M>2o+LAlu'LAlu*L&Qc)L&$ISL4P)1L4P)1L4P)1L4P)iLAlo+K`6])LAlu-LAlu-LAlu'M#3&%MZ/P5 -N:i)-MuJV5N;eb.MZ/J-M#N/.L\QW'L\lf)K`6\SL4P)1L?40hL&Qc)L&Qi+L]3&-L]3&-L\Q]&M=lc* -MuJ\.MZ/P5MZ/S6MtMu,M>2o+LAlu'LAlu*L&Qc)Kr9ZVL5UfcL]3/0M?&P8Mi7Rnrf-o1N;JP1N:i20O8Ft3Nrb<&rfHf6rfH]3rf6u=oo8a*repc7regK/JW/!8 -JW/ZKpl#-1qht?1oo8s3qi:?1rfHf6rfH]3rf6u=rf-]4pl,31rf$i6pks]^V2ULppl#-1qht?1oo8s3 -qi:?1rfHf6rfH]3rf6u=oo8a*repc7regK/q2Bl`JW,/=JW,/=JW,/=JW.$rpl#-1qht?1oo8s3qi:?1 -rfHf6rfH]3rf6u=oo8a*repc7regK/du8j:JW/TIpl#-1qht?1oo8s3qi:?1rfHf6rfH]3rf6u=oo8a* -repc7regK/Vi61cMi@Xprf6r1 -fT?)nrfI,Aqi^rCqih#Bqih#Eqiq)Drg*5Arg*PIqiq)FrfmDGrf[8Erfd>Grfd>EqiUl=JWQ1ZKTQ1o -rfI,Aqi^rCqih#Bqih#Eqiq)Drg*5Arg*PIqiq)FrfmDGrf[/BrfmDGrf[/@rf??+JWPGEJWPGEJWPGE -JWPGEWf[4@rfI,Aqi^rCqih#Bqih#Eqiq)Drg*5Arg*PIqiq)FrfmDGrf[/BrfmDGrf[/@rf>!ZJWPGE -er]llrfI,Aqi^rCqih#Bqih#Eqiq)Drg*5Arg*PIqiq)FrfmDGrf[/BrfmDGrf[/@rfH!L/iJQ2[-LRf8fUT)PA]U&LecVZ*OnXT#F&ZMq61])KDB_#D=Pao9TbdJh\qf`'b,i;Va8kPj`F -m/HJQnc&+YpAXgcq#:-hqu6Qkro=%:s8N#srVl`oqu6Ejq#:$eo`"F\n,DbSli-/Jjo49=hu;F1g&BS% -d/M;hbPoHZ_>_4K]Df>>[JmK2Yl:g)X8]*tVZ*@iUAgkcT_kAYSbnqSRt7&iS,SrWS,&KQRerTORf8`S -R/ -rg`tWpmV)LqjRMPrgO -n,DnWo`"Uaq#:*gqu6NmrVQTSs5@"W;ELlVZ*FkU].!\Tn/nrU&L_aTDkJaTqV4Srh'1`rh07b -qk="`rhK@brh8nWrhK%Yrh9=cqk="`qk3q\rh9=cqk="^rh'(\JYE%9JYBTIrh07_rh/qXrh'1`rh07b -qk="`rhK@brh0=do:l5ZntQ,WrhB:`rhB:_rh'1`rhB:`rh07_qk/M6d@l,bjIuRGrh'1_oqDAWrh9=a -rhB:`rhBCeqkF(`ntQ,YntQ,WrhB:`rhB:_rh'1`rhB:`rh07_qk/M6V4j!Erh07_rh/qXrh'1`rh07b -qk="`rhK@brh8nWrhK%Yrh9=cqk="`qk3q\rh9=cqk="^rh'(\q4WA5JY@XgJY@XgJY@XgJYBNGrh07_ -rh/qXrh'1`rh07bqk="`rhK@brh8nWrhK%Yrh9=cqk="`qk3q\rh9=cqk="^rh'(\e"M>dJYD(srh07_ -rh/qXrh'1`rh07bqk="`rhK@brh8nWrhK%Yrh9=cqk="`qk3q\rh9=cqk="^rh'(\VkJ[8LnXgBrhBIi -!MuXlVYd:jWW&psXo>O'Yl;!.[f3f9])KAA_#D7N`r=*ZcMl5jeGe,"g]$+0iVqp;kPjcGm/HJQnc&.Z -o`"Uaq>U6fr;QZlro=%:s8N#prVl`oqYp9hp\sjbo`"F\nG_hSli-,Ik5OH@i;VR3g]#e'e,I\mcMl#d -aSs*V_Z%=L^AbbD\c0#9[/RB1Yl:j*Y5YR&XT#:"WrAujW.Cn+W;`^oVZ*IoW2K]pm&0`Xql'Lnj/;mT -rhoapql'Lkri#^lrhf@dri#gorhfRjJZ/OGJZ-)Wrhoamrhoaom&0`Xql'LnqPWVVri#gori,dnrhf[n -qksFjor%efrhoamqko"DdAVVpjJ`'Urhf[mri#1]qkj7hri+qUri#gori,dnrhf[nqksFjor%efrhoam -qko"DV5TKSrhoamrhoaom&0`Xql'Lnj/;mTrhoapql'Lkri#^lrhf@dri#gorhfRjq5AkCJZ+-uJZ+-u -JZ+-uJZ-#Urhoamrhoaom&0`Xql'Lnj/;mTrhoapql'Lkri#^lrhf@dri#gorhfRje#7hrJZ.S,rhoam -rhoaom&0`Xql'Lnj/;mTrhoapql'Lkri#^lrhf@dri#gorhfRjVl50FLoC_@OaSs?]cMl/he,Iqtg]$(/i;Vg:k5OTDli->OnG`"XoD\F^p\t!fqYU3i -rVQTSs5U-fpAX^`nG_nUmf)POlMg#HjSn-;hu;C0g&BS%dJhMlcMl#dao9@$Z2V!)Z2V!&Z2V!,Z2:d&YPYR'Z2V'+Z2:d)Z2V!, -Yl:p#YktX'Y5#2OYbeRcYktX'YkYEsYl:p,Ykt^)YkYL&Yl:p)YktX$Yl:p,ZMUp(Yl:p)Yl:p#YktX' -Y5#3rY^s$0Y^s$0Y^s$0Y^s$0YdUe5YPtd$YP>@$Z2V!)Z2V!&Z2V!,Z2:d&YPYR'Z2V'+Z2:d)Z2:d) -Z1Y?uYPt^"YLB_,Y^s%!O]?6[IUd$[JmW3[JmW6 -\,Ni/[JmW6[JmW6[JmW6[JRE3[JmW6[JmW6[JRE*[=PdY[Xklj[emK'[eR90[emK3[f3`9[K3hFosOe- -rjDa6rjDa6rjDX3rjDa6rjDa6rjDX3osK@ZaL6Z.gU@!eo!\>$rjM^3rjMg8rjML-rjMg6rjMg6rjMg6 -qmQL3rjMg6rjMg6qmQ1*J[V)WLUR)fo!\>$rjM^3rjMg8rjML-rjMg6rjMg6rjMg6qmQL3rjMg6rjMg6 -qmQ1*n@!nVJ[U-$rjM^3rjMg8rjML-rjMg6rjMg6rjMg6qmQL3rjMg6rjMg6qmQ1*T!j3Y -NjehoqmZX:!P,c<])KAA^&,SD_>_=N`;[aTa8X9]c2Q&gd/MMnec+8$h#?41iVqm:jo4NDli-;Nn,DkV -o)A:\p&=^\qYpElrV6BPs5!_SrqlZkqu6Hkp\smcp&=R^o)%qUmJcGNkPjWCjSn*:hYu@1f`'J$eGdkp -d/MAjbl5caao99](io4])K>@]`,PB -^%/c6\c08@]DfJB]DK8<]n*ip]Rd`*]`,VD]_f>9]`,J4])KD?]_f;@](rr4]D/u:]DfJB]DfM7])K8> -]`,PB]`,P?]_fBn][=BC]]?a)^&G\A]D0&<\am?2^&,J>]D/u4]D/u:]DfJB]DfM@](il9\c08@]DfJB -]DK8<]n*hm]TBf*^&G\A]D0&<\am?2^&,J>]D/u4]D/u:]DfJB]DfM7])K8>]`,PB]`,P?]_fD<]Rd_H -]Rd_H]Rd_H]Rd_H]XGKP^&G\A]D0&<\am?2^&,J>]D/u4]D/u:]DfJB]DfM7])K8>]`,PB]`,P?]_fCk -]Rd_H]]-U'^&G\A]D0&<\am?2^&,J>]D/u4]D/u:]DfJB]DfM7])K8>]`,PB]`,P?]_fC?]Rd_U]_/r< -^B)*apqZmFrkeZQrl+lVrlP/_rlkAfrm:Ylrm^qurn.5+rnm_5roF(?roa:HrpBUPrpp'[rq69arqHdKRqu-Nlrql]krqZQgrqHEbrq-3[rp]pUrpKdOrp'LHroF(;rnm_2rnRM,rn%/"rmUko -rm:Yjrm(MfrlkAaqoSiXrl4rVn&2hU_h#_j_t_1L_tCnG_u%CO_u%CI_Z%IP_Y_7M_YCtE_Z%IM_Z%IJ_Z%IP -`;@IO`;[[L_Y_7G`.>h)_j848`;[[I_Z%IM`;[[O`;%4K_u@OM_u@OJ_>D+K_u%=M_t_+J_u@UO_u@UR -_t_+G_t_1J_h#^V_h#^V_h#^V_h#^V_nD+K_u%=M_t_+J -_u@UO_u@UR_t_+G_t_1$_h#^V_s##5`;[[I_Z%IM`;[[O`;%4K_u@OM_u@OJ_>D+K_u%=M_t_+J_u@UO -_u@UR_t_+G_t_0M_h#^i_sbMD`dKRqu-NlrqlThrqZQgrq??`rq$-Zrp]pUrpB^N -rosFEroF(7aSX$WaR[H(aOJ:^aQgk>ans0V -a87aSX$WaR[INaFVE`aFVE` -aFVE`aFVE`aLoUeans0Va87 -aSX$WaR[HQaFVEsaScrm1SjrmC_orm^qtrn%/&rn@A,rndY4ro3qdKRq#13irql]krqZQgrqHEcrq-3\rpg!Vrp]pSrp0RI -roX4Aro3q9qqqD/rnRM+rn.5$rmh"trmUkprmCVio$=)VJ^0"qr6>)_rlkAbp!!*Prm1Jdoud9WrlY,_ -rm1Serlk/\prr`\qonr^J^3f2J^1RHp!*K[rlauYoum?\rQPAfc1T6YbPoZ]c2Q&gbPo`\bP9<\bPTN\ -c%40Zc@O9tcLoH]bl5fYbk90Ychku[b5TT`b59H_ci2,ebkTBVbl5f_bkoY9cC)t8cLoH]bl5fYbk90Y -chku[b5TT`b59H_ci2,ebkTBVbl5f_bkoZPc@O8lc@O8lc@O8lc@O8lcEPUec2PrdbOs*PbPoibc1T6Y -bPoZ]c2Q&gbPo`\bP9<\bPTN\c,\+\c@O9rcLoH]bl5fYbk90Ychku[b5TT`b59H_ci2,ebkTBVbl5f_ -bkoYSc@O9!cM,Wccd2C5rmC_nrmUkrrmh#!rn%/&rnRM/qqqD3ro3q=roa:Erp0RNrp]pUrpg!Yrq-3_ -rqHEerqZQirql]mqu-Ekh>c+,rr2fnrquZjrqcWhrqHEcrq-3]rpp'XrpTjSrp9XLrosFFroX4@ro*k7 -qqqD0rn[S/rnIG+qq:u$rn%/#pso8kVUL+FO43^M!7_"sl.#LWqpGDkrmUkpp!`ogqpG2fm*tp]p!eQA -qU:#E]@6?#rmU,]ps],f!7Cnrdf._pde2)gdehGee*PT]e+M4Ae'?Ene*#3NeGdq]eG.MidJhSne,Ieg -e,IemdJ22feFM,de+M4Ae"Y$fDa@ufDF4tfDF4qfn%fSfR_\bf_F/!f`'Lqf`'M%f)F;#f`'J!fDaA#eH"1cf)F;#f)+(u -f)F>$fDa@ufDF4tfDF4qfn%f'fR_]9f_F/!f`'Lqf`'M%f)F;#f`'J!fDaA#e`kZafDa@ufDaA#f`'M% -f)+(rf_a:tf_F-NfVR5^f_F/!f`'Lqf`'M%f)F;#f`'J!fDaA#e`kZafDa@ufDaA#f`'M%f)+(rf_a:t -f_F.qfR_\+fR_\+fR_\+fR_\+fXBH-g&BY'fCdeqfDaA#fDaG%f)+(uf)F4af)F;#f)+(uf)F>$fDa@u -fDF4tfDF4qg!eT)fR_]7f_F/!f`'Lqf`'M%f)F;#f`'J!fDaA#e`kZafDa@ufDaA#f`'M%f)+(rf_a:t -f_F-tfR_\8f_!htg"HAYqqM#'rn[S1ro!e5ro*b6ro=">roa:ErosFJrp9XOrpTjVrpp'[rq-3_rqH#e) -hYZ+-g]#q"g\]_'gZmPdgABY%gA]k(h#?10h>#cVh8nE'h:pc\h#?1-h#?(-g@a4tg?./_gABY(gA]h* -g\]e*hYu@+gk":Oh1sh]h#?1-h#?(-g@a4tg?./_gABY%gA]k(h#?10h>#dph1=C5h1=C5h1=C5h1=C5 -h6#N.h#?1-h#?(-g@a4tg?./_gABY%gA]k(h#?10h>#dJh1=C5h:^WZh#?1-h#?(-g@a4tg?./_gABY% -gA]k(h#?10h>#csh1=C6h#Q=0hYuI4htZ./iVqj9j87p:jo4HBkl0iGlMg,Kmf)\SnG_tWo)A7[o`"O_ -p\Xabq>U6iqu6NgrVQTJs4%)Jrq66hr:p-fq"sg_p&=U\nc&"VnG_kTmJcJLlhfrGkkjQBk4n$7j87i, -iITsBiV_[8ir7p9i;V^4iqVL3ir7p9i;;L4ir7p9ht>q,hu;U6i;;L4ir7p6iqVL3ir7p9ir7p9idp(Y -iITsniVVX6iVqd7iVVX0iVqj9iVqd4iVqg:i;qorrnmD,rnm_6ro!\4ro3q9qr7D0ro3q9ro3q9ro/Lf -`SlC,hVn@kro*k7ro*b6pu253ro*k7qr.P6ro*k6p#,i,ro*k7qr.P6ro*b6pu253ro*k9ro*k9J`3$U -MW+Hlro*k7ro*b6pu253ro*k7qr.P6ro*k6p#,i,ro*k7qr.P6ro*b6pu253ro*k9ro*k9mGWWTJ`21= -J`21=J`21=J`3ilqr7V6ro!e7qr7D0ro3q9ro!\4ro3q9rnmD,rnm_6ro!\4ro3q9qr7D0ro3q9ro3q9 -ro1uWJ`21=gu8.iro*k7ro*b6pu253ro*k7qr.P6ro*k6p#,i,ro*k7qr.P6ro*b6pu253ro*k9ro*k9 -S)JqWLuJ3ir8R_9puM>7roa1BrosFJqs==LrpKdTrpTjUrpfmXrq69bqtTs_qu$?iqu5+FeGo=Cqu-Nl -qtpBhqt^6drq?6^q"+LTrp]pUrpK[Nrp9XMqs+1Fp#u;9qrXI2J`VXJr8n"AqrRV8roO.?qrRhros=Dqrr[qo]UkiYNYuMroj7DqrmqAqrn%Droj@Groa7D!U/bHkPj]BkPjWC -kPj]BkPj`FlMg&Ikk43>kl0iDkkjUqkfDt=khG>#l2KoDl20]Al20]Dl2KoGl2KlCkl0cEkkjQBk5OQC -kkjQBl2KuIl2KoGl1jNBkl0iDkkjUqka^jlkl0iGkkjWAkkjWAkl0iGkl0iGkPOKBkPj]BkPjWCkPj]B -kPj`FlMg&Ikk43>kl0iDkkjW6k^hrKk^hrKk^hrKk^hrKkcO(Jl2KoDl20]Al20]Dl2KoGl2KlCkl0cE -kkjQBk5OQCkkjQBl2KuIl2Ko>l2KoGl20]Al,r4@k^hsNkl0iGkkjWAkkjWAkl0iGkl0iGkPOKBkPj]B -kPjWCkPj]BkPj`FlMg&Ikk43>kl0iDkkjV9k^hrOkl'`Hl07m+rp0IJrpBUNqsXFOrpfmVqt0m\q"Od` -q"k!erquQiq#8eCcN!e@p&4mfqtp9erqZQgq"O[Yqt0mZrposVqsa1FOm[egJaWC&rpB^Qq!J(KrpBLI -q!ItFq!J(Iq!IkCrpB^OqsF:KqsAt&lgB>lVXFHNrpKRKrpKdQq!@kE!U]:Om.fuIm.fuCm/HDOm/-2I -mecC&m_A1@maCP&mJcPKmJcPQmJ-&CmJH8FmJcJImJ-&ImJcJLmJH>Km=F\hmXag*mf)VQmeH2Kmf)VK -m.fuFm.fuIm.fuCm/HDOm/-2ImecD7mXaeWmXaeWmXaeWmXaeWm\K:MmJcPKmJcPQmJ-&CmJH8FmJcJI -mJ-&ImJcJLmJH>KmD84AmXafQmf)VQmeH2Kmf)VKm.fuFm.fuIm.fuCm/HDOm/-2ImecC:mXaeWmeQ;D -n+H2Lnc&+YoD%tWp%\:\q#:*aqYpBhr;6HcrmCbks7QBgrVQNiqu6Hbq>U0gp\smZp%%_Oo)%s>n:C([ -nG;YRn,DhRnb)DKn,DhOn+cDIn,)VRn+,uInb_hQmt'uon:C)+nG_nUnGDbKnGD\RnGVhRn+cDIn,)VR -n+,uInb_hQmt'uCn:C)WnG_nUnGDbKnGD\RnG)JInG)JLnG_nLnG_qVnb_hQmt'tln:C*.nG_nUnGDbK -nGD\RnG)JInG)JLnG_nInG_tTnGD\;n:C([n:C([n:C([n:C([n>,RQn,DhRnb)DKn,DhOn+cDIn,)VR -n+,uInb_hQn%nLEn:C)UnG_nUnGDbKnGD\RnG)JInG)JLnG_nInG_tTnGD[>n:C([nG2SQnb)JGoC_eU -pAXg`q"smaqYpBbr;QZcrmCbhs7lTarVl`lqtp6eq>U0^p\sm]p%@tJo:#6$nq$?3o(_hUo)&%Ro)&%. -o)A7Uo)A7Xo(_g-o'Z("nuVEWoD\=XoD%nRoCqh4o)A7Uo)A7Xo(_g-o"ssKo%L3Nnq$A_o(_hUo)&%Ro)&%.o)A7Uo)A7Xo(_gDnq$@`nc8:ToCDPKp&"I[ +:&[ld9)_B\8,c!W7K,^S6iKFL62j.K5Cl(u5_21O5_21O5_21O5`e815Q3qF62O%K7/fXS7fGpW8cD?Z +:&[rf;>sJm<;onp=8Q+p=8l>$=8l8"_1 +r`T5"r_i_kr_$=8l8"$=8l8"_;rb;@LrcJ-crdXp%rf$i_2r`];$r_i_kr_3;`r^m)Y +r^HfSqa:?LX?_>%P!Jn1qa13J!(6`SqaUQUr^m)^r_EGer_NMkr`&bpr`A>dr`8nrr_reoqbR2dr_*5^ +r^d#XqaLBLpd4sGJNs3#JO$q7qa(*Gqa:?OqaUQUr^m)^r_EGer_NMkr`&bpr`9)%l<+$dqc3Vor_iVh +r_EGcr^m)[r^QcRqa:-Fr]u*#e3JRMl9P54qa10Ir^H]Rr^d#[r_*5cr_dr`8nrr_reoqbR2dr_*5^r^d#XqaLBLpd,!I5la3%5_;865l3kE6Mj.L7JfRR8H)3[9E%]c +:&[rf;Z9Ym5he+@/ad;C]88OFT-UcJ,Y3%N;et=SGo5]W;a($\,O)?`;[pYci2Gng&Bh,ir8*>l2L,M +nG`%Yp\t!fqYpHjroX7Cs8N#prVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^ +OoC==LAl]%H2_pbDuOMNBDu<dr`8nrqc!Afr_EGcr_!/\r^ZiSqa:-Fdm8ONJO/Kcqa19Lr^?`S +r^QlYr_*5br_NMkr`/r$ra#M2rb)4GrbqdXrd+QnreCE2rfR2Mrh9=iriuI3rk8_2r`];$r_relr_LJO5Dar^$EJr'LHO +r^HfUr^ZrYr^m)^qbI,dr_reqr`9"ur`A>dr`9"ur`9"tr_r\ir_EGcr_!/\r^ZiSqa5p$oKn*q]0cK_ +qa10Ir^HfUr^ZrYr^m)^qbI,dr_reqr`9"ur`9)%l<+$dr`/qur`&kqqbR2dr_*5_r^d#YqaLBLJO7FE +JO8Ndr^$EJqa:?Or^QlWr^d#[r_*,`r_NMlr`&ktr`/r!kudpcr`/qur`&kqqbR2dr_*5_r^d#YqaLBL +JO5knJO4oSJO4oSJO4oSNC*V1qa10Ir^HfUr^ZrYr^m)^qbI,dr_reqr`9"ur`A>dr`9"ur`9"tr_r\i +r_EGcr_!/\r^ZiSqa:'DJO4oS\O-9]qa10Ir^HfUr^ZrYr^m)^qbI,dr_reqr`9"ur`A>dr`9"ur`9"t +r_r\ir_EGcr_!/\r^ZiSqa8LmJO4oSi^3W3r^?`Sr^QlYr_*5br_NMkr`/r$ra#M2rb)4Grc%jYrd+Qn +reCE2rfR2Mrh9=iriuI3rk8rr2oqrqcWh +rqHE`rpg!UrosFEro3q5rn.5"rm1Scrl"fLrjVm4ri,mkrg`tNrf-o4rdauprcS3ZrbVRIraGe4r`fA& +r`&kor_NMer_!/\r^ZrWr^8]r^?ZQ!(HlVr^ZrZr_!/_r_3;dr_NMiqc*Gnr`A>er`K%ur`/qs +r_WSir_EGdr_*5_r^m)Zr^QcRr^?`Qr^)0'rBl-'[6sp]qaLKRr^ZrZr_!/_r_3;dr_NMiqc*Gnr`9)& +l<4*gqc<\rr`&knr_NMgr_3;ar_!/]r^ZrWqaLKPr^6ZOJO@gPJOAB`r^?WPr^QlWr^m)]r_*5ar_EGg +r_WJkqc<\tkun!fqc<\rr`&knr_NMgr_3;ar_!/]r^ZrWqaLKPr^6ZOJO?8$JO=uUJO=uUJO=uULI;&/ +qaLKRr^ZrZr_!/_r_3;dr_NMiqc*Gnr`A>er`K%ur`/qsr_WSir_EGdr_*5_r^m)Zr^QcRr^?`Qr^$WQ +6\.UU6aK/Z7/KFP7fGpW8cD?]9E%Wa:B"&g;#=5hQ.t.@K's>C]8;PFoH^dJGt?'NW,+?SGo8^ +WW'4&\Gj2@`;[pYci2Gng&Bh,ir8*>l2L,MnG`%Yp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JM +k5OB>h>Z+,ec*noao96X^&GM?ZMpj&UAg\^P5^I?M>i&)HiA6gE;j\QC&VT@?iF=0=8l5!;>sDk:&[fb +8cD9[8#&M(7?9n77/fXQ7K>pW8,c'V9)_K_:&[rf;#X>h528">5h\%=T2@uXAmXAm#sDk:]=)f9`%H]8H)-V +7fGjR7+4SU7=dnb7K,gV8H)3[9E%Zb;#X>k<;otu>lJ+0@fC*@D>nMRGQ*!hJGtE)NrG4@SGo8^WW'4& +\Gj2@`;[pYci2Jog&Bh,ir8*>l2L,MnG`%Yp\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB> +hYu7.ec*noao96X^&GM?ZMpm'U]-h`PQ$XBMZ/2+IK"KjEW0kTCAq`B@/aI2=T2>";uTVm:B!rd9)_E] +8>AY*7ZU%97JfOT7n3PLr^d#[r_!/_qb@&dqbmDor`/quqcNi$r`o5%r`fA,qc`u$r`9#"r`9"rr_`Yk +r_khM% +>Q.n)>5hY'sDk:&[ic9E%Q_8cD9X8,c!T7=dqU7Y+%l7f,XO7fGpW8H)3[9)_K\:&[ud +;Z9_rkhM%>Q.n)>5hY'sDk:&[ic9E%Q_8cD9X8,c!T7=dq)7Y+$[7Y+$[ +7Y+$[7ZBn77JfRR8,c'Y8cD?]9D_H_;#=/i5he%>5hb*>l._(=T2A#=8l8";Z9Pm;#X2g +9`@]a9)_E]8GbpV7f,UT7RhquJO[1>qaLBOr^ZrYr^m)]r_*,_r_WJir`9"ur`8nur`];+pfdZ$r`o>( +r`K/#r`B)"r_i_mr_WSgr_3;ar_!/]r^coVr^QcRdmemXJO\Ndr^d#[r_!/`r_EGhr_resr`K/*ra>_8 +rbDFLrc.p^rd=]rreg]8rfd>PrhKImrj)O5rk8rr2oqrqcWhrqHE`rpg!Urp'LGro="7rn@A%rm:Yfrl+lOrji$7ri?$orh'1TrfI,;re(3"rd+Qa +rbqdPral(Q.q'>l.h+>Q.n,>Q.b(=8l>$<;ohq;Z9Ml:]=,g9`%K[8V'G)8:a=D8H)-S8H)3[9D_E^:B"&g;#XAl +;uTbk=Sc5&>?h)4pg!]%r`fA,r`fA(r`B)$r`&kqr_i_lr_NMgr_32^qal?0a@LkQk=GSBpdkBUr_*,^ +r_EGgr_WSlr_reqpfR;qra#;(qd'2*r`oG,r`K/$r`K/!r_reor_WSir_EGdqb-fXJOl;%JOk>_JOk>_ +JOk>_NCa%=pdkBUr_*,^r_EGgr_WSlr_reqpfR;qra#;(qd'2*r`oG,r`K/$r`K/!r_reor_WSir_EGd +qb-fXp.0a*JOm=Br^Z`Sr^m)^qb6uar_NMir_i_or`&Yppfm`'pg!]%r`fA,r`fA(r`B)$r`&kqr_i_l +r_NMgr_32^qanq$JOk>_i^j&?r_!/_r_3;er_`Ymr`9##r`];.raPkrr2oqrqcWhrqHE`rpg!U +rp'LGro="8rn@A&rm:Yfrl4rPrji$8riH*rrh'1VrfR2=re19#rd4Wcrc%jRrb)4@ra>_1r`T5%r_reo +r_WShr_sMnlJ%%?N+70?N+7->l.\' +=T2A#sDk:]!lc9`%J69(Y`,9"R^p8c)-Z8cDB^9`%Q`:]=2i;>sMnQA%1?![,0 +ra#M0ra#D+qcWo#r`9"ur_renr_WSiqb@&`qb)K4a@_"Uk=Y_Fqb$iZr_*5aqb@&cr_WSkr_rerr`9## +qcWf$ra#2'ra#M0ra#D+qcWo#r`9"ur_renr_WSiqb@&`qb)K4S4\?)JP(JcJP(JcJP(nor^luZr^m)^ +r_32`r_NMir_`Ynr`/qur`K&#qcs,+oj7W'ra,S0qcs#$r`K/#r`/qrr_`Ykr_NDcr_32^p.Bm.JP*IF +r^luZr^m)^r_32`r_NMir_`Ynr`/qur`K&#qcs,+oj7W'ra,S0qcs#$r`K/#r`/qrr_`Ykr_NDcr_32^ +b"@4WJP+oor_*,^r_EGhr_i_or`B)%r`oG1rac"@rb_XRrcA'crdb!$rf$i=rg3VVrh]Uqrj;[9rkJHP +rlkAgrmq)&rnm_8roa:GrpKdTrq$-`rqZQirr)iqj8\0>rr2oqrqcWhrqHE`rpg!Vrp'LGroF(9rn@A' +rm:YgrlG)Srk&0;riQ0srh07Wrf[8@re:?&rd=]frc8!Vrb2:BraGe5r`fA)r`/qsr_i_lqbR)`WD%k: +O%fOGr_3,^!)<>cr_NMjr_r\nr`9#"r`]2'qd'2-ra>_4qd08/ra>V0ra#D*r`];&r`8nqr_i_mqbR2d +pe?<5pIp-3]1i2sr_3)]qbI,dr_`Ynqc*Pqr`B)&qcir'!+#\4?N+@3?i+1/?iFI1?N+7->Q.h*=8l7t +<;oep;>X/g:A@P79Zp+\9]o+K9E%W[:&@]b:]=5j;u9Pn5MP$?2e10@/aO1?N+=2@/F:0?2Ik* +>5hV&5MP$?2e10 +@/aO1?N+=2@/F:0?2Ik*>5hV&sMk<;oqt=8lD# +>Ph_*?N+@3?i+1/?iFI1?N+7->Q.h*=8l7t<;oep;>X/g:A@Q.9S#lg9]AbF:&[rc;#XAl;uTer=oM\* +?iFL5Ac?BBDuOeVFoHdfJGt9%NrG4@QiU6irVlfVs5X.Yrr2lqqYp9hp\sganc&"Vli-,IjSn*:h#>t*d/M8ga8WmR]Df85hb*>5h\"k;Z9VoQ.h*>lJ%.?i+7(@K'[6@JaI3 +?iF@1>lIq+>Q.h*=nl"r;uT\o;>X2h:B"&g:4Z3;:Ou;m:Ou;m:Ou;m:Q80L:B"&g:B"&g;#X>k;Z9Vo +Q.h*>lJ%.?i+7(@K'[6@JaI3?iF@1>lIq+>Q.h*=nl"r;uT\o;>X2h:B"&g:'"-dJPUhm +\PN3"r_NMgr_NMir_`Ymr_rerr`9"uqcWo&r`];+ra#M1qdB)*ra>_6qdBD1ra#M.r`];*r`];(pf7;l +r_i_mqb[8er_NMgdnbNjJPY9$qb[8ir_rerr`B)%ra#M1ra>_;rb2:IrbqdXrcnElre(3*rf@&CrgNh[ +rhoaurjMgrr2oqrqcWhrqHEarpp'W +rp9XJroF(:rnRM*rmC_irlP/Urk8"?2e4.@/aX"A,]s7@/aL0?2Ik'=T2D$X8j;uTbqPh_*?i+71@K9p'A,]s7@/aL0?2Ik'=T2D$X8j;uTbqPh_*?i+71@d.D%@f'R4?Me%->Q.k(=T2D$g;Z9Vo<;ons"?2e4.@/aX"A,]s7@/aL0?2Ik' +=T2D$5hY'=oMP&k5hh, +?N+=2@/aU6A,]s4AH$0;AH$0;AH$*<@fBm:@K'[6?iFC2?2Ih)=T2J&=T2A#k5hY' +=oMP&k5hY'=oMP&<.S#"<8pmV$>5he(@/a[8Ac?HDD>nMRFoH[cIf=ruL]352 +P5^jJSc5GaX8]@&\c0>B_Z%^WcMl8kg&Bh,i;Vj;kl0rJn,DnWo`"Uaq>U6irVlfVs5X.Yrr2lqqu6Ej +p\sgao)A.Xm/H8Kk5O<Z.-e,I_nbl5Q[_#D"GZMps)VZ*7fS,S]PO8b%9LAl`&I/\EjErL%WDZ4DM +B`;WC@K'[6?iF@1>lIt,>,GGR=bBiX>$Cl.qcj&+qd9>1qdKJ7rakt=rb2:Frb2:Dqe5tCrb2:Frb)+? +qdfS4ra>_4qd0/(qc`btr`F_SrE4\SY?Ca+qcj&+qd9>1qdKJ7rakt=rb):G!GQ9IB`;ZAB`;`FB`;`F +BDZ<528"=FjW&=b0`1=o2D">Q.t+?iFI1@K'g:Ac$*=B`;`FB`;ZAB`;`FB`;`F +BDZ<528"=FjVO=b0_,=b0_,=b0_,=b0`Q>5MP'?Me+/@/FC3AH$0;B)ZKCC&VfF +BDZBAC&VfFC&VcBB)?-9@K'[6?i+1,>PhV!=oMM(=]p;YJQ]*Xqc`l$ra,J/ra>V3rac">qe#h@rb;@F +rb)+Arb;@Frb;@Eqe#_9qdKJ3ra5P/qcir$pf[Sudoh6)JQ_);qc`u'r`oG.ra5Y4raGe_4ra,J-WEb!ZO'MZgqcs&)qHa)-qdB;1rac">qe,nArb:h9 +rbMCGqe>q@rb)4Arabn8raGe6qd95+JR%_MJR#flr`f8)oj.Q(qdB;1rac">qe,nArb;=Go4n8?qeH"B +qe5tAral(>qdTP5ra>V1qd"bX`E[t!k?S!jqcrf"ra5P1qdTP8rakt>rb2:FmqVi;qeH"Bqe5tAral(> +qdTP5ra>V1qd"bXR9Y;JJR!b2JR!b2JR"1>r`f8)oj.Q(qdB;1rac">qe,nArb:h9rbMCGqe>q@rb)4A +rabn8raGe6qd95+o3?iOJR#`jr`f8)oj.Q(qdB;1rac">qe,nArb:h9rbMCGqe>q@rb)4Arabn8raGe6 +qd95+a'=1#JR%2>ra#M0ra5Y4raPk:ral(BrbDFLrbqdWrc\9grdXp!re^W6rfI,Hrg`t]ri,n"rj2U; +rk\TQrltGirm^r%rnm_7roa:GrpB^Srq$-]rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rp]pSrp'LH +ro3q7rnRM'rmLelrl4rSrkJH?rilC&rhBC`rgNhMrf@&:re19%rdXolrcS3]rc%jSrbVRIrau.@raYq: +raDR0JRFOHpgCA;TDD#S>LD>S/HD>nGPD>S,GCAqlFB)?0:AG]g4@.dk-?snOnJRH#rpgrr2oqrql]krqQKcrq$-YrpKdOroj@Aro!e3rn%.urm1Sbrl"fNrji$7riZ6trhBC` +rg3VJrf@&9reCE(rdXoord"Kbrc7mSrbVRLrbDFGqe,n?WF^WlN+N!#ral(@!G?$FBDuNBBDuTDBDZEB +C]8/LDZ4MPDtn;NEW1"OEW1"XEVOMPDZ4MPDZ4JOC]8&IB`;ZDB_uE@BDZ9>Aq=OiAV"F&Ac?<@Ac?<@ +BDuNBBDuTDBDZEBC]8/LDZ4MPDtn8OE<1'!rc7[Orc8!Xpi-4Mrb_XPrbVRLrb;@Frb)4Dqe#h?qdob= +JS!,rau(>JRsCD[UoGMral(@rb)4Brb)4Drb)+BrbMLL +rbh^PrbqRNrc.pXol9tOrc.^Prbh^Prbh^OrbMLIrb2:Drb21@rb)+>rasMgJRsCDj^nF'qe,nBrbDFJ +rb_ONrc8![rd"KjrdXp!reLK1rf@&Brg3VUrhBChriZ7,rji$Crl"fWrm1Smrn%/*ro!e9roj@HrpKdT +rq$-^rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq??`rpg!Vrp0RIroF(;rndY,rm^qorlY5[rkeZHrjDa/ +ri,mmrh'1Zrg*PGrf-o6reLK(rdXoprcnEcrcS3[rc%jTrb_XNrbMLJVJ1TqK4t@$C&i#GC]8)DD>nGP +DuO_QErL.ZErL1[Fo-:XF8L(YFoHL^ErL.WEr0hTDZ4MPD#S;NCAVfGCA;NBBRsmrBn:!%C&VlEC]8)D +D>nGPDuO_QErL.ZErL.\FTHW-qfM^VqfMg[rcJ-[rc@sWqf)OPrb_XNrb_XLqeQ1GphB_@JSEMGJSEkQ +rbD=GrbD4Frbh^Rrc%aTrcA'ZrcJ-^qfM^VqfMg[rcJ-[rc@sWqf)OPrb_XNrb_XLqeQ1GphB_@JSCrp +JSB[LJSB[LJSB[LJSG*uqeQ1Gphg"JrbqdTqf;[Wrc8![rcS*[qfDXVrcS3^rc8!Zqf;RQrbh^PrbVRN +rbD=GrbD4Brb)=HBn9uLBru+KCAVfGCA;ZFDZ4SRE;O\TF8g4ZFT-F[FSg.VFT-F^FT-=[F8L"TE;jbS +D>nAND>n;IC]8)DC&VepBn9uLC#s(+CAr#JD#S;NDuO_TEW1+[GQ)jdI/\ToJc:H(MZ/V7OoC[GS,T&Z +V#I@mYPts/]Df\H`r=-[d/MSpf`'b,iVqp;kl0oIn,DkVo`"R`q#:*gqu6Qnro=%=s8N#srVl]nqYphu;@/f)F(rbl5]__u@@K\,NZ3X8]!qUAgb`RJrKNOT(7=MuJD/K)U9!IK"Ql +GlDjbFT-=XE;ORNDLl\dDZ4MPDY\/JD>S5JE;O\QF8g@^GQ)dbGPHF^GPcR_GPcX^GQ)dbFoHR]F8L"T +E;OPGD>nGPD1QU'DLl];DZ4MPDY7lDDYnDMEr0qWG5c^bG5c^aGl2gcGPcR_GPcX^GQ)dbFoHR]F8L"T +E;OPGD>nGPD1QTPDLl]gDZ4MPDY7lDDYnDMEr0qWG5c^bG5c^\GlDpaG5c^_Gl)^aG5cX`G5H@XEr0hQ +DY7lGDZ4L(DP_6%DLl\VDLl\VDLl\bDZ4MPDY7lDDYnDMEr0qWG5c^bG5c^\GlDpaG5c^_Gl)^aG5cX` +G5H@XEr0hQDY7lGDZ4JRDJk#CJSr#9rb_XPokjSDqf)FQqfDa[rce?brce-^rce6_rce6aqfi$_rcS3` +qfDXTqf)FMokj\Grb^,%JSp$VibnX3qf)OTrcA']rcnEgrdFcqrdt-&repc9rfI,ErgEbWrhBCiri?%' +rjVm?rkn`UrlkAhrmh#%rnm_7roO.Drp9XQrpg![rq??erqcWkrr)iqj8\0>rr2oqrquclrqZQerq-3\ +rp]pSrp0RGro3q7rnIG)rmUkmrlY5[rkSNFrjDa0ri?$rrh07]rgWnOrfR2@reg]2reCE'rdautrd=]l +rd+Qgrc\9`UND'/O*(/U9jr;QZoro=%=s8N#srVl`oqu6HkpAXaa +o`"@Zmf)SPkPjQAi;VR3f`'D"d/M8gao9-U^&GP@Z2Up*WrAgnU&LY_RJrNOP5^OAN;eb7LAll*KDpE# +J,XorI/\JcH@^C'HM`!eGl2jcH2DpeHi&3iIK"]pIK"]mJ,=cqJbsupJ,=cqJbsupJ,XolIK"WkHi&-a +H2`'cH%C;?H@^CSHM`!eGkcR]HN&9gI/\QnIf=cpIf"WlJ,k-$JV!]Kqg\Knrdjrsqg\TopjN-hqg83d +pj)j`qg!a=d<^@ikBd#Nrcn3`qg/6gqgABkrdOiprdO`oqgeZsqgeQnqgeZsqgeQnrdO`mrdFcnqg83d +pj)j`qg!a=V0[]=JU2lnJU2lnJU3<%qg&0cpj)a_rd4NirdFcprdFcpqg\Knrdjrsqg\Knrdjrsqg\To +pjN-hqg83dpj)j`qfr3gH@^BnHF\A!H2`'`H2DpeHi&3iIK"]pIK"]mJ,=cqJbsupJ,=cqJbsupJ,Xol +IK"WkHi&-aH2`'cH..(jH@^CtHN&9jI/\ToJ,XutKDpT(LAm,1NW,"2o+LAlu' +LAlu*L&Qc)Kn5!WL4P)kLAlo+K`6])LAlu-LAlu-LAlu'M#3&%MZ/M6Muelronra,reg]6repH,re^E+ +reCE-pkJd'qh>$&re5oXd>!4,kD&tire19)reCE-reCE-reCE-pk\g(onra,rf$N-repc5rf$i7onra* +reUH-reCE-pkJd'qh>$&re5oXV1sPUJVJ`1JVJ`1JVK/=re:?)re:?+reLK-reLK-reL9)qhb!'repc7 +onra,reg]6repH,re^E+reCE-pkJd'qh>$&re1B-L4P)1L:N'2o+LAlu'LAlu*L&Qc)L!td-L4P*:LAlu-M>iD3MuJ\7NW,"_.I\c0&:Z2Up*X8]$r +V>d1fTDkA[Rf8]RQN!-JP5^U@O8Fp3N.HqHN;/;3N/Raqqht?1oo8s3qi:?1rfHf6rfH]3rf6u=oo8a* +repc7regK/JW0PdJW.*tpl#-1qht?1oo8s3qi:E3!KW<@OS+\6OReJ3NrG+4NVJJ3MuJ\7MYN*\N7!T8 +N9#rmMuJ\4Mu/J+NW,"9NqJJ4OS+\6OReJ3NrG+=NVJM.N;eb7N;e_0Mh-h`N.Hq=N.Hq=N.Hq=N/ESh +MuJ\4Mu/J+NW,"9NqJJ4OS+\6OReJ3NrG+4NVJJ3MuJ\7MYN)1N/W=HJW.$rpl#-1qht?1oo8s3qi:?1 +rfHf6rfH]3rf6u=oo8a*repc7regK/du8j:JW/KFrf-o;qiC`=rf[8Frg*PNrgNhVrh'1`rhTOkri?%$ +riuI2rji$Ark\TRrlb;ermUktrnIG/ro*k=roj@HrpKdTrpp']rqHEerqcWkrquZmj8\';rr2oqrqucl +rqQKerq??^rpg!Vrp9XKroa:?ro!e4rn.5#rmC_jrlP/YrkSNHrjr*9rj)O,riH*urhf[hrh9=`rgs+Z +rgNhQrg*PJqih#BqiRk>JWPGE!0I2@rfI,Aqi^rCqih#Bqih#Eqiq)Drg*5Arg*PIqiq)FrfmDGrf[/B +rfmDGrf[/@rf;VlmZP5^^CPQ$aBPQ$jEPl?mGQM$LAQN!*FPl?sIPl?mGP5^[EPQ$gG +PQ$aBOoCDmOHtuZOF`LEOF`LEOF`LEOT(@@O8b7?Oo(=@Pl$[DP5CIBQ2?gFPQ$m@Pl@!JPP^UDQ2[$I +PQ$aBPQ$gGPQ$aBOoCF2OF`LEOK+EAO8b7?Oo(=@Pl$[DP5CIBQ2?gFPQ$m@Pl@!JPP^UDQ2[$IPQ$aB +PQ$gGPQ$aBOoCE[OF`LEOQ)B$Oo(=@PQ$gGQ2[-LRf8fUT)PA]U&LecVZ*OnXT#F&ZMq61])KDB_#D=P +ao9TbdJh\qf`'b,i;Va8kPj`Fm/HJQnc&+YpAXgcq#:-hqu6Qkro=%:s8N#srVl`oqu6Ejq#:$eo`"F\ +n,DbSli-/Jjo49=hu;F1g&BS%d/M;hbPoHZ_>_4K]Df>>[JmK2Yl:g)X8]*tVZ*@iUAgkcT_kAYSbnqS +Rt7&iS,SrWS,&KQRerTORf8`SR/S,SrWS+rHLS,8ZRRJrTNRerWPS+rNNS,8`QS+rNNS,8`TS,SlUR/WNK +Rf8fURf8fURf8fURa[aWRt7'jS+WOn,DnWo`"Uaq#:*gqu6NmrVQTSs5@"W;ELlVZ*FkU].!\Tn/nr +U&L_aTDkJaTqV4Srh'1`rh07bqk="`rhK@brh8nWrhK%Yrh9=cqk="`qk3q\rh9=cqk="^rh'(\JYE%9 +JYBTIrh07_rh/qXrh'1`rh07bqk="`rhK@brh0=do:l5ZntQ,WrhB:`rhB:_rh'1`rhB:`rh07_qk/M6 +d@l,bjIuRGrh'1_oqDAWrh9=arhB:`rhBCeqkF(`ntQ,YntQ,WrhB:`rhB:_rh'1`rhB:`rh07_qk/M6 +V4iI6JY@XgJY@XgJY@sprh07_rh/qXrh'1`rh07bqk="`rhK@brh8nWrhK%Yrh9=cqk="`qk3q\rh9=c +qk="^rh'(\!MQ3O'Yl;!.[f3f9])KAA_#D7N`r=*ZcMl5jeGe," +g]$+0iVqp;kPjcGm/HJQnc&.Zo`"Uaq>U6fr;QZlro=%:s8N#prVl`oqYp9hp\sjbo`"F\nG_hSli-,I +k5OH@i;VR3g]#e'e,I\mcMl#daSs*V_Z%=L^AbbD\c0#9[/RB1Yl:j*Y5YR&XT#:"WrAujW.Cn+W;`^o +VZ*IoW2K]pm&0`Xql'Lnj/;mTrhoapql'Lkri#^lrhf@dri#gorhfRjJZ/OGJZ-)Wrhoamrhoaom&0`X +ql'LnqPWVVri#gori,dnrhf[nqksFjor%efrhoamqko"DdAVVpjJ`'Urhf[mri#1]qkj7hri+qUri#go +ri,dnrhf[nqksFjor%efrhoamqko"DV5SsDJZ+-uJZ+-uJZ+I)rhoamrhoaom&0`Xql'Lnj/;mTrhoap +ql'Lkri#^lrhf@dri#gorhfRj!N;rJW.CnUW;`^oVZ*LmW9gGZVYd=kWT0oUW;`^oWV`XnVZ*OkVuERd +VuEXoVuERjVphSqW.Co&W;`dqWrB'uXT#@$Y5YX(Yl:s-Zi7B3\c05?^AbnH_>_@OaSs?]cMl/he,Iqt +g]$(/i;Vg:k5OTDli->OnG`"XoD\F^p\t!fqYU3irVQTSs5U-fpAX^`nG_nUmf)PO +lMg#HjSn-;hu;C0g&BS%dJhMlcMl#dao9@$ +Z2V!)Z2V!&Z2V!,Z2:d&YPYR'Z2V'+Z2:d)Z2V!,Yl:p#YktX'Y5#2OYbeRTY^s$0Y^s$0Y^s$9YktX' +YkYEsYl:p,Ykt^)YkYL&Yl:p)YktX$Yl:p,ZMUp(Yl:p)Yl:p#YktX'Y5#1$Ycr\_JZuSeqlg"'pojIs +riuI,qm$.)pp'h&riu@)qlfn$riuI.qm$%&riu@)riu.#qlg"%poi/NJZs^0hm!*bqm-4-rj;[4rjMg8 +rji$?rk8#Xrl"fQ +rk\KHrk8$rjM^3rjMg8rjML-rjMg6rjMg6rjMg6qmQL3rjMg6rjMg6qmQ1*b-ll0J[XRHqmZI4rjhp;rk/6D +qnN-HrkeZQrl+lWrlb;crm1SjrmUksrn7;+rnm_6ro=">rosFJrpB^Rrpg!Yrq-3_rqH3arqucoq#9=R +h>dKRqu-EhrqcWgrq??arq$-[qsaUPrp0RHroX4@ro!e4rn[S+rmq(urmC_lrm1SfrlY5^rl4rVrl"fQ +rk\KIqnM^8WP!epN4f/'rk/0@!5&$=rjhU2rk83Aqn)X7pq-=4rk&0Brk&0Co"+h2rk/6Brk/6Bqn2g> +J\:roJ\8M*rk8q7?@5pq$I:rk/6Brk7m6rji$@rk&0Brk&'?qn7QndCb%C +jLkK*rk/-?pq6U:o"+h6qn2gJ\7hlJ\6QHJ\6QH +J\6QHMS/r%rk/-?pq6U:o"+h6qn2g]D/u4]D/u:]DfJB]DfM7])K8>]`,PB]`,P?]_fCk]Rd_H]]-Ts^&GeA_#D1L +_Z%LQ`W!mVao9K_bl5rfd/MGleGe%uf`'_+hu;R5jSn9?kPjfHmJHDPo)A7[p&=[ap\Xgdqu6Qkrn[V1 +s8N#prVl`oqu6Hkq>U0gp\sjbo`"C[nG_nUmf)POlMg#HjSn-;hu;I2h#?%,fDa>"e,Ibod/MAjcMl)f +bl5c^ao9?[`rf+_h#_>_t_1L_tCnG_u%CO_u%CI_Z%IP_Yq@Q_o)JjpqcjErknWMrknNJrkn`RqnrEO +rknNJqnr3IJ]$!TJ]$cjpr*0Lotp^Gqo&KOqo&9Hrkn`PqnrEMpqcjErknWMrknNJrkn`RqnrEOrknNJ +qnr3IJ]"G(J]!&VJ]!&VJ]!&VOMgk3rknEGrknWOrknWOpqm$JrkeQMrkeHHqni?Mqni?Mpqm$Jrl"]O +rl"fRpqlpGq8<9OJ]!)W]YjN_rknEGrknWOrknWOpqm$JrkeQMrkeHHqni?Mqni?Mpqm$Jrl"]Orl"fR +pqlpGpr(b$J]!&Vkell-rl+lVrl>#[qo\o^rltGfrm1SjrmC_ormh#"rn@A+rn[S2ro3qc=2rr2fnrqucmqtg7aSX$WaR[I(aFVE`aQU_?anU0gp\smco`"F\nc&"VnG_hSli-,Ik5OKAir7p6hu;I2h#?"+f`'J$ec+(te,IepdJM;]c_Jd:cA'XB +c2,]abl5fYbk90Ychku[b5TT`b59H_ci2,ebkTBVbl5f_bkoY9cLK22cEbagc2PrdbOs*PbPoidblQ)6 +oud9WrlY,_rm1Serlk/\prr`\qonr^J^26[J^3,tp!*K[rlauYoum?\qp"fVrlb;`qp#,drlb;bpriHV +rlb2_qos];REgB/J^/hlJ^/hlJ^/qop!*K[rlauYoum?\qp"fVrlb;`qp#,drlb;bpriHVrlb2_qp"`X +J^/hlYg2pdrlkAbp!!*Prm1Jdoud9WrlY,_rm1Serlk/\prr`\qonr^a3K7]J^3/up!c+,rr2fn +rquZjrqcWhrqHEcrq-3]rpp'XrpTjSrp9XLrosFFroX4@ro*k7qqqD0rn[S/rnIG+qq:u$rn%/#pso8k +VUL+FO43^M!7_"sl.#LWqpGDkrmUkpp!`ogqpG2fm*tp]p!eQAqU:#E]@6?#rmU,]ps],f!7Cnrdf._p +de2)gdehGee*PT]e+M4Ae'?Ene*#3NeGdq]eG.MidJhSne,Iege,IemdJ22feFM,de+M4Ae"YZ:.hu;R5iVqp;jo4HBl2L#Jm/HGP +n,DhUo)A7[o`"R`p\ssbqYpBhr;QZlrn@D(s8N#prVQNlqu6Hkq"sgbp&=U_oD\=[nG_nUmJcJOli-/J +kl0cEjo4?Z:1i;VX5iVVX6j8S0>kPj]El2L#Jm/HDOn,DkVo)A7[ +o`"O_p\XabqYpBer;QZlrn@D(s8N#mrVl`oqu6Hhq>U0gp\smco`"I]o)A1YnG_nUmf)POlMg&Ikl0`D +jo4?*rndY1ptUGVaPDF'gYMY[rndP-rnIG+p"TAtk1fR_ +qqM,(rn@A+qqV2-rn[A)J_cjPJ_bn5J_bn5J_bn5J_g+VrndP-rnIG+p"TAtk1fR_qqM#%rnI>*rndY1 +ptYT!J_bn5Xkid-rndP-rnIG+p"TAtk1fR_qqM#%rnI>*rndY1ptX$JJ_bn5f%p5[ro!e5pu)/1ro3q; +qrIb4qr41*J`2@Br8I_9ro*k7ro*b6pu253ro*k7qr.P6ro*k6 +p#,i,ro*k7qr.P6ro*b6pu253ro*k9ro*k9J`6.XJ`3onqr7V6ro!e7qr7D0ro3q9ro!\4ro*q:!TE#: +ht>q,hu;U6i;;L4ir7p6iqVL3ir7p9ir7p9idp(-iITtEiVVX6iVqd7iVVX0iVqj9iVqd4iVqj9iVqa- +i;VX5iVqd4iVqj9iVVX0iVqj9iVqj9iVqhfiL/YUiITs=iITs=iITs@iVVX6iVqd7iVVX0iVqj9iVqd4 +iVqj9iVqa-i;VX5iVqd4iVqj9iVVX0iVqj9iVqj9iVqj.iITs=iNV;q,hu;U6i;;L4ir7p6iqVL3ir7p9ir7p9ilC#/iITtCiUu40j7q^4k5OQ@kl0iGlhg&JmJcPQ +nG_nUnG_tTo`"O_p\Xa\qYU3frVQTDs4%)DrqlZnr;6BjqYU*fq#:!ap%\.Xnc&%Wn,DbPmJcJOlhfuH +l1O9;kPOD4jalNJjo"6@k5498k5OKAjSS'l2KoGl20]A +l%/'jk^hs$kl0iGkkjWAkkjWAkl0iGkl0iGkPaTFkii$/roj7BroX4Croj7BrosFIrosFGp$)J>ros=D +qrr[qaQS3=gZ\Y$roj7DqrmqAqrn%Droj@Groa1Broa:Eqrdt@roa:EqrdtCrp'LIroj@Gq!%eAros=D +qrr[qSEPOfJ`q[KJ`q[KJ`q[KrosFGqs""Aqs""ArosFGrosFFqrn%Broj7BroX4Croj7BrosFIrosFG +p$)J>ros=Dqs!h +roj@GqrmqAb34E?J`teNqs!e=rp0IJrpBUNqsXFOrpfmVqt0m\q"Od`q"k!erquQiq#8eCcN!e@p&4mf +qtp9erqZQgq"O[Yqt0mZrposVqsa1FOm[egJaWC&rpB^Qq!J(KrpBLIq!ItFq!J(Iq!IkCrpB^OqsF:K +qsAt&lgB>lVXFHNrpKRKrpKdQq!@kE!U]:Om.fuIm.fuCm/HDOm/-2ImecC&m_A1@maCP&mJcPKmJcPQ +mJ-&CmJH8FmJcJImJ-&ImJcJLmJH>Km=F\hmXaeWmXaeWmXaeWmXag$mf)VQmeH2Kmf)VKm.fuFm.fuI +m.fuCm/HDOm/-2ImecD=mXaeWm\K:MmJcPKmJcPQmJ-&CmJH8FmJcJImJ-&ImJcJLmJH>KmD84AmXafN +me-&AnG_tWo)A7Uo`"OYp\sseq=sgcqtp>^Sn,DhRnb)DKn,DhTn,2YLnG)JL +nG_nInG_tTnGD[*nA"IDnC$h*n,DhRnb)DKn,DhOn+cDIn,)VRn+H2LnG_tTnGD[*n<U0^ +p\sm]p%@tJo:#6$nq$?3o(_hUo)&%Ro)&%.o)A7Uo)A7Xo(_g-o'Z("nuVEWoD\=XoD%nRoCqh4o)A7U +o)A7Xo(_g-o"ssKo%p4;pip&Xp^me?2DrqHEerqGmTrqHEcrqGmT l1]c&o_*k0YP.>Wn+QbTrqHKf!Vc?WpAXgcpAXgTp?D=&p;lrYp=o<-p[@hTp\ssep[@hTp\smcp[\%W -p?D=&p71i3p?_PBpAXgcq#:$VpAXgcpAXgTp?D>@p4;pgp4;pgp4;pgp4;pgp9"&Tp[@hTp\ssep[@hT -p\smcp[@h?pWE2\p4;qjp?_PBpAXgcq#:$VpAXgcpAXgTp?D=Cp4;pkpAOaKp\=O_q==CWqtp?Kk5F6;^AWW]Jc4'rgA^75i;SoFp4;pgp9"&Tp[@hTp\ssep[@hT +p\smcp[@h?pWE2\p4;qjp>boBq#:*[qY9sbr:U$`rke]Ps6osarUp*Zqu6HDq4RM6pk/>Bq>'IS\bPFb +Jb\m4JbZGDm.ol?deN)&Jb[=]Jb\!pm.n`'*b5QtkM#R8NjSsf1T)OJc:6"Jc:6"Jc:6"Jc:6" +gA]q.bl31mJc:E'h>a/IJc:6"ZMog_JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcEF`JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcEF`JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcEF`JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF` +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEF`J, ~> %APLeod EI 0.60000002 i 1 1 1 sc CM @@ -2781,53 +2536,27 @@ 11 67 m f 1 J 1 j 0 0 0 sc -1 0 0 -1 -47 130 cm -58 63 m -110 63 l +1 0 0 -1 -99 130 cm +110 63 m +162 63 l +162 115 l 110 115 l -58 115 l h -58 63 m +110 63 m S -/Cs1 SC +/Cs2 SC 0 sc 0 i 1 0 0 -1 37 41 cm /F1.1[ 12 0 0 -12 0 0]sf -1.8984375 4.5 m (!)s 0.60000002 i -/Cs2 SC -1 1 1 sc -CM -63 67 m -115 67 l -115 15 l -63 15 l -h -63 67 m -f -0 0 0 sc -1 0 0 -1 -47 130 cm -110 63 m -162 63 l -162 115 l -110 115 l -h -110 63 m -S /Cs1 SC -0 sc -0 i -1 0 0 -1 89 41 cm --14.100586 4.5 m -("#$%)[ 7.587891 7.476562 6.632812 0.000000 ] xS -0.60000002 i -/Cs2 SC 1 1 1 sc CM 115 67 m 167 67 l 167 15 l @@ -2834,78 +2563,78 @@ 115 15 l h 115 67 m f 0 0 0 sc -1 0 0 -1 -47 130 cm -162 63 m -214 63 l -214 115 l -162 115 l -h -162 63 m -S -/Cs1 SC -0 sc -0 i -1 0 0 -1 141 41 cm --8.4550781 4.5 m -("&)[ 7.587891 0.000000 ] xS -0.60000002 i -/Cs2 SC -1 1 1 sc -CM -167 67 m -219 67 l -219 15 l -167 15 l -h -167 67 m -f -0 0 0 sc -1 0 0 -1 -47 130 cm +1 0 0 -1 -99 130 cm 214 63 m 266 63 l 266 115 l 214 115 l h 214 63 m S -/Cs1 SC +/Cs2 SC 0 sc 0 i -1 0 0 -1 193 41 cm +1 0 0 -1 141 41 cm -16.839844 4.5 m -('\(&\))[ 6.433594 7.587891 9.322266 0.000000 ] xS +("#$%)[ 6.433594 7.587891 9.322266 0.000000 ] xS 0.60000002 i -/Cs2 SC +/Cs1 SC 1 1 1 sc CM -219 67 m -357 67 l -357 15 l -219 15 l +167 67 m +305 67 l +305 15 l +167 15 l h -219 67 m +167 67 m f 0 0 0 sc -1 0 0 -1 -47 130 cm +1 0 0 -1 -99 130 cm 266 63 m 404 63 l 404 115 l 266 115 l h 266 63 m S +/Cs2 SC +0 sc +0 i +1 0 0 -1 236 41 cm +-16.567383 4.5 m +(&'\(')[ 8.988281 8.279297 7.587891 0.000000 ] xS +0.60000002 i /Cs1 SC +1 1 1 sc +CM +305 67 m +357 67 l +357 15 l +305 15 l +h +305 67 m +f +0 0 0 sc +1 0 0 -1 -99 130 cm +404 63 m +456 63 l +456 115 l +404 115 l +h +404 63 m +S +/Cs2 SC 0 sc 0 i -1 0 0 -1 288 41 cm --16.567383 4.5 m -(*+"+)[ 8.988281 8.279297 7.587891 0.000000 ] xS +1 0 0 -1 331 41 cm +-1.8984375 4.5 m +(\))s 0.60000002 i -/Cs2 SC +/Cs1 SC 1 1 1 sc CM 357 67 m 409 67 l 409 15 l @@ -2912,49 +2641,49 @@ 357 15 l h 357 67 m f 0 0 0 sc -1 0 0 -1 -47 130 cm -404 63 m -456 63 l -456 115 l -404 115 l -h -404 63 m -S -/Cs1 SC -0 sc -0 i -1 0 0 -1 383 41 cm --1.8984375 4.5 m -(,)s -0.60000002 i -/Cs2 SC -1 1 1 sc -CM -409 67 m -461 67 l -461 15 l -409 15 l -h -409 67 m -f -0 0 0 sc -1 0 0 -1 -47 130 cm +1 0 0 -1 -99 130 cm 456 63 m 508 63 l 508 115 l 456 115 l h 456 63 m S +/Cs2 SC +0 sc +0 i +1 0 0 -1 383 41 cm +-20.625 4.5 m +(*+,-%)[ 8.302734 7.833984 6.462891 8.314453 0.000000 ] xS +0.60000002 i /Cs1 SC +1 1 1 sc +CM +63 67 m +115 67 l +115 15 l +63 15 l +h +63 67 m +f +0 0 0 sc +1 0 0 -1 -99 130 cm +162 63 m +214 63 l +214 115 l +162 115 l +h +162 63 m +S +/Cs2 SC 0 sc 0 i -1 0 0 -1 435 41 cm --20.625 4.5 m -(-./0\))[ 8.302734 7.833984 6.462891 8.314453 0.000000 ] xS +1 0 0 -1 89 41 cm +-8.4550781 4.5 m +(\($)[ 7.587891 0.000000 ] xS ep end %%Trailer %%EOF Index: Docs/Images/packet.graffle ================================================================== --- Docs/Images/packet.graffle +++ Docs/Images/packet.graffle cannot compute difference between binary files ADDED Docs/Images/packet.png Index: Docs/Images/packet.png ================================================================== --- Docs/Images/packet.png +++ Docs/Images/packet.png cannot compute difference between binary files ADDED Docs/Images/rest_cmds.eps Index: Docs/Images/rest_cmds.eps ================================================================== --- Docs/Images/rest_cmds.eps +++ Docs/Images/rest_cmds.eps @@ -0,0 +1,17355 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%HiResBoundingBox: 0.000000 0.000000 1232.000000 497.000000 +%APL_DSC_Encoding: UTF8 +%APLProducer: (Version 10.6.7 (Build 10J869) Quartz PS Context) +%%Title: (Unknown) +%%Creator: (Unknown) +%%CreationDate: (Unknown) +%%For: (Unknown) +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 0 0 1232 497 +%%EndComments +%%BeginProlog +%%BeginFile: cg-pdf.ps +%%Copyright: Copyright 2000-2004 Apple Computer Incorporated. +%%Copyright: All Rights Reserved. +currentpacking true setpacking +/cg_md 141 dict def +cg_md begin +/L3? languagelevel 3 ge def +/bd{bind def}bind def +/ld{load def}bd +/xs{exch store}bd +/xd{exch def}bd +/cmmtx matrix def +mark +/sc/setcolor +/scs/setcolorspace +/dr/defineresource +/fr/findresource +/T/true +/F/false +/d/setdash +/w/setlinewidth +/J/setlinecap +/j/setlinejoin +/M/setmiterlimit +/i/setflat +/rc/rectclip +/rf/rectfill +/rs/rectstroke +/f/fill +/f*/eofill +/sf/selectfont +/s/show +/xS/xshow +/yS/yshow +/xyS/xyshow +/S/stroke +/m/moveto +/l/lineto +/c/curveto +/h/closepath +/n/newpath +/q/gsave +/Q/grestore +counttomark 2 idiv +{ld}repeat pop +/SC{ + /ColorSpace fr scs +}bd +/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld +/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld +/cgmtx matrix def +/sdmtx{cgmtx currentmatrix pop}bd +/CM {cgmtx setmatrix}bd +/cm {cmmtx astore CM concat}bd +/W{clip newpath}bd +/W*{eoclip newpath}bd +statusdict begin product end dup (HP) anchorsearch{ + pop pop pop + true +}{ + pop + (hp) anchorsearch{ + pop pop true + }{ + pop false + }ifelse +}ifelse +{ + { + { + pop pop + (0)dup 0 4 -1 roll put + F charpath + }cshow + } +}{ + {F charpath} +}ifelse +/cply exch bd +/cps {cply stroke}bd +/pgsave 0 def +/bp{/pgsave save store}bd +/ep{pgsave restore showpage}def +/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd +/scrdict 10 dict def +/scrmtx matrix def +/patarray 0 def +/createpat{patarray 3 1 roll put}bd +/makepat{ +scrmtx astore pop +gsave +initgraphics +CM +patarray exch get +scrmtx +makepattern +grestore +setpattern +}bd +/cg_BeginEPSF{ + userdict save/cg_b4_Inc_state exch put + userdict/cg_endepsf/cg_EndEPSF load put + count userdict/cg_op_count 3 -1 roll put + countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put + 3 sub{end}repeat + /showpage {} def + 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + false setstrokeadjust false setoverprint +}bd +/cg_EndEPSF{ + countdictstack 3 sub { end } repeat + cg_dict_array 3 1 index length 3 sub getinterval + {begin}forall + count userdict/cg_op_count get sub{pop}repeat + userdict/cg_b4_Inc_state get restore + F setpacking +}bd +/cg_biproc{currentfile/RunLengthDecode filter}bd +/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd +/ImageDataSource 0 def +L3?{ + /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd + /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd +}{ + /ImageBandMask 0 def + /ImageBandData 0 def + /cg_mibiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd + /cg_miaiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter + dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd +}ifelse +/imsave 0 def +/BI{save/imsave xd mark}bd +/EI{imsave restore}bd +/ID{ +counttomark 2 idiv +dup 2 add +dict begin +{def} repeat +pop +/ImageType 1 def +/ImageMatrix[Width 0 0 Height neg 0 Height]def +currentdict dup/ImageMask known{ImageMask}{F}ifelse exch +L3?{ + dup/MaskedImage known + { + pop + << + /ImageType 3 + /InterleaveType 2 + /DataDict currentdict + /MaskDict + << /ImageType 1 + /Width Width + /Height Height + /ImageMatrix ImageMatrix + /BitsPerComponent 1 + /Decode [0 1] + currentdict/Interpolate known + {/Interpolate Interpolate}if + >> + >> + }if +}if +exch +{imagemask}{image}ifelse +end +}bd +/cguidfix{statusdict begin mark version end +{cvr}stopped{cleartomark 0}{exch pop}ifelse +2012 lt{dup findfont dup length dict begin +{1 index/FID ne 2 index/UniqueID ne and +{def} {pop pop} ifelse}forall +currentdict end definefont pop +}{pop}ifelse +}bd +/t_array 0 def +/t_i 0 def +/t_c 1 string def +/x_proc{ + exch t_array t_i get add exch moveto + /t_i t_i 1 add store +}bd +/y_proc{ + t_array t_i get add moveto + /t_i t_i 1 add store +}bd +/xy_proc{ + + t_array t_i 2 copy 1 add get 3 1 roll get + 4 -1 roll add 3 1 roll add moveto + /t_i t_i 2 add store +}bd +/sop 0 def +/cp_proc/x_proc ld +/base_charpath +{ + /t_array xs + /t_i 0 def + { + t_c 0 3 -1 roll put + currentpoint + t_c cply sop + cp_proc + }forall + /t_array 0 def +}bd +/sop/stroke ld +/nop{}def +/xsp/base_charpath ld +/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd +/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd +/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd +/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd +/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd +/refnt{ +findfont dup length dict copy dup +/Encoding 4 -1 roll put +definefont pop +}bd +/renmfont{ +findfont dup length dict copy definefont pop +}bd +L3? dup dup{save exch}if +/Range 0 def +/DataSource 0 def +/val 0 def +/nRange 0 def +/mulRange 0 def +/d0 0 def +/r0 0 def +/di 0 def +/ri 0 def +/a0 0 def +/a1 0 def +/r1 0 def +/r2 0 def +/dx 0 def +/Nsteps 0 def +/sh3tp 0 def +/ymax 0 def +/ymin 0 def +/xmax 0 def +/xmin 0 def +/setupFunEval +{ + begin + /nRange Range length 2 idiv store + /mulRange + + [ + 0 1 nRange 1 sub + { + 2 mul/nDim2 xd + Range nDim2 get + Range nDim2 1 add get + 1 index sub + + 255 div + exch + }for + ]store + end +}bd +/FunEval +{ + begin + + nRange mul /val xd + + 0 1 nRange 1 sub + { + dup 2 mul/nDim2 xd + val + add DataSource exch get + mulRange nDim2 get mul + mulRange nDim2 1 add get + add + }for + end +}bd +/max +{ + 2 copy lt + {exch pop}{pop}ifelse +}bd +/sh2 +{ + /Coords load aload pop + 3 index 3 index translate + + 3 -1 roll sub + 3 1 roll exch + sub + 2 copy + dup mul exch dup mul add sqrt + dup + scale + atan + + rotate + + /Function load setupFunEval + + + clippath {pathbbox}stopped {0 0 0 0}if newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + currentdict/Extend known + { + /Extend load 0 get + { + 0/Function load FunEval sc + xmin ymin xmin abs ymax ymin sub rectfill + }if + }if + + /Nsteps/Function load/Size get 0 get 1 sub store + /dx 1 Nsteps div store + gsave + /di ymax ymin sub store + /Function load + + 0 1 Nsteps + { + 1 index FunEval sc + 0 ymin dx di rectfill + dx 0 translate + }for + pop + grestore + currentdict/Extend known + { + /Extend load 1 get + { + Nsteps/Function load FunEval sc + 1 ymin xmax 1 sub abs ymax ymin sub rectfill + }if + }if +}bd +/shp +{ + 4 copy + + dup 0 gt{ + 0 exch a1 a0 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a0 a1 arcn + }{ + pop 0 lineto + }ifelse + + fill + + dup 0 gt{ + 0 exch a0 a1 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a1 a0 arcn + }{ + pop 0 lineto + }ifelse + + fill +}bd +/calcmaxs +{ + + xmin dup mul ymin dup mul add sqrt + xmax dup mul ymin dup mul add sqrt + xmin dup mul ymax dup mul add sqrt + xmax dup mul ymax dup mul add sqrt + max max max +}bd +/sh3 +{ + /Coords load aload pop + 5 index 5 index translate + 3 -1 roll 6 -1 roll sub + 3 -1 roll 5 -1 roll sub + 2 copy dup mul exch dup mul add sqrt + /dx xs + 2 copy 0 ne exch 0 ne or + { + + exch atan rotate + }{ + pop pop + }ifelse + + /r2 xs + /r1 xs + /Function load + dup/Size get 0 get 1 sub + /Nsteps xs + setupFunEval + + + + + + dx r2 add r1 lt{ + + 0 + }{ + dx r1 add r2 le + { + 1 + }{ + r1 r2 eq + { + 2 + }{ + 3 + }ifelse + }ifelse + }ifelse + /sh3tp xs + clippath {pathbbox}stopped {0 0 0 0}if + newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + + dx dup mul r2 r1 sub dup mul sub dup 0 gt + { + sqrt r2 r1 sub atan + /a0 exch 180 exch sub store + /a1 a0 neg store + }{ + pop + /a0 0 store + /a1 360 store + }ifelse + currentdict/Extend known + { + /Extend load 0 get r1 0 gt and + { + 0/Function load FunEval sc + + + + + { + { + dx 0 r1 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + r1 0 gt{0 0 r1 0 360 arc fill}if + } + { + + + + + 0 r1 xmin abs r1 add neg r1 shp + } + { + + + r2 r1 gt{ + + 0 r1 + r1 neg r2 r1 sub div dx mul + 0 + shp + }{ + + + + 0 r1 calcmaxs + dup + + r2 add dx mul dx r1 r2 sub sub div + neg + exch 1 index + abs exch sub + shp + }ifelse + } + }sh3tp get exec + }if + }if + + /d0 0 store + /r0 r1 store + /di dx Nsteps div store + /ri r2 r1 sub Nsteps div store + /Function load + 0 1 Nsteps + { + 1 index FunEval sc + d0 di add r0 ri add d0 r0 shp + { + + d0 0 r0 a1 a0 arc + d0 di add 0 r0 ri add a0 a1 arcn + fill + + + d0 0 r0 a0 a1 arc + d0 di add 0 r0 ri add a1 a0 arcn + fill + }pop + + + /d0 d0 di add store + /r0 r0 ri add store + }for + pop + + currentdict/Extend known + { + /Extend load 1 get r2 0 gt and + { + Nsteps/Function load FunEval sc + + + + + { + { + dx 0 r2 0 360 arc fill + } + { + dx 0 r2 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + + + xmax abs r1 add r1 dx r1 shp + } + { + + r2 r1 gt{ + + + + calcmaxs dup + + r1 add dx mul dx r2 r1 sub sub div + exch 1 index + exch sub + dx r2 + shp + }{ + + r1 neg r2 r1 sub div dx mul + 0 + dx + r2 + shp + }ifelse + } + } + sh3tp get exec + }if + }if +}bd +/sh +{ + begin + /ShadingType load dup dup 2 eq exch 3 eq or + { + gsave + newpath + /ColorSpace load scs + currentdict/BBox known + { + /BBox load aload pop + 2 index sub + 3 index + 3 -1 roll exch sub + exch rectclip + }if + 2 eq + {sh2}{sh3}ifelse + grestore + }{ + + pop + (DEBUG: shading type unimplemented\n)print flush + }ifelse + end +}bd +{restore}if not dup{save exch}if + L3?{ + /sh/shfill ld + /csq/clipsave ld + /csQ/cliprestore ld + }if +{restore}if +end +setpacking +%%EndFile +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%PageBoundingBox: 0 0 1232 497 +%%BeginPageSetup +cg_md begin +bp +sdmtx +%RBIBeginFontSubset: LucidaGrande +%!FontType1-1.0: LucidaGrande 1.0000.6.0040 + /FontInfo 1 dict dup begin + /FSType 6 def + end readonly def + 14 dict begin/FontName /LucidaGrande def + /PaintType 0 def + /Encoding 256 array 0 1 255{1 index exch/.notdef put}for + dup 33 /less put + dup 34 /R put + dup 35 /E put + dup 36 /S put + dup 37 /T put + dup 38 /greater put + dup 39 /A put + dup 40 /D put + dup 41 /M put + dup 42 /I put + dup 43 /N put + dup 44 /F put + dup 45 /U put + dup 46 /Y put + dup 47 /C put + dup 48 /P put + dup 49 /O put + dup 50 /W put + dup 51 /L put + dup 52 /bracketleft put + dup 53 /bracketright put + dup 54 /slash put + dup 55 /h put + dup 56 /a put + dup 57 /n put + dup 58 /e put + dup 59 /l put + dup 60 /G put + dup 61 /Q put + dup 62 /s put + dup 63 /p put + dup 64 /space put + dup 65 /V put + dup 66 /H put + readonly def + 42/FontType resourcestatus{pop pop false}{true}ifelse + %APLsfntBegin + {currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if + /FontType 42 def + /FontMatrix matrix def + /FontBBox[2048 -2186 1 index div -1509 2 index div 3361 3 index div 2381 5 -1 roll div]cvx def + /sfnts [< + 74727565000900000000000063767420000000000000009C000006B66670676D000000000000075400000D33676C7966000000000000148800001C9C6865616400000000000031240000003668686561000000000000315C00000024686D747800000000000031800000008C6C6F6361000000000000320C000000486D61787000000000000032540000002070726570000000000000327400000CAF062B0019000005C80025000005C800250000000000000000000000000000043E001800000000FFDB00000000FFE800000000FFDB0000FE75FFE8000000000000FED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000080000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5006F000CFF3BFF91FFF400BF00680014FF41FF98FFEC00000000000000000000000000000000000000000082FF7E00DF00D200C900B400AD009B00DE00D200C500BE00B900AB00E300D200C600B900AD00950062000000A4009D0085000000AA00A10094007200AD00A100940085000000C5000000000000000000000000000000000000012800000000000000000000000000F700F700970141004A00F7000000000000000000000000000000000094009400940000000000000000000000000000000000000000000000000000000000000000000000000000000000E6FF1A00000000000000000000000000000000000000DEFF22007C007C027502E400750075009A009400AC00A0000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A0001900000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B00000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B0000006F0073000000000000000000B9008C010A007E00C50031004F009A004200000000000000000000000000000000000000000000012800F700A00063009400820082009700C600B300B3007C007B009100000000000000000000000006440000000004A00019000000000800043E0018000004000000000000000534000000000000FFE70000FF780000000000C500940000FED80000000000E100760063003C002D001E000FFF1FFF3BFF48FF65FF79FF9DFFBD00DE00B900AD00A600DE00D200C500BF00B900A900910197007C0062005C005602CC01ED0197007C006F00620056004A011D010D009E00940035000000000000000000000000000005C8002500000503 + 00000000000008000000000000000400000000000000047B000000000000FFDB00000000FFE70000000000000000FF3B00000000000000000192011700F700C800C300B800AD00A6009C0092008A0080007B00740068005A0050001E003A00000192011700F700E500D200C500B900AD008A0080007B00740068005E0054004A000000000141003E00DE00DE00000000000000000000000005D500190000056600000000000008000000000000000400000000000000043E001800C503C200DE00000000FFE70000000000000000FE00000000000000000000CD00C500AD00A100940088007C0075006F0063003100F700C600B900A0006300C500B300A10088007C0075006F00630056003100F700C600B900C600940082006F0063003E003200190000FF3AFF7EFF9DFFCE0057006F02B3012801830088008800000000000000000000000000000000000000AC008800C501ED006201BC001800DE013E000000000000000000000000000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190000000000000000000000000000007C00AC00C500960000000000000000000000000085005D006500000000000000000000000000000000000000000000000000000000080000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000005ED01B0009400D200B600AC007B007B007C00000000000000000000000000000000000000B904A000C50063007A005100410087014100DE01280068009D0064007500D2012000DE00D100B40000000000000000000000000000000000000000006100AC00D0006F006F036603660000000000000000000000000000000000000000000000000000004A004A004A000000000000000000000000000000000000000005ED00000000000008000104005C000004000000000000000000000000000000FFDB000000000000000000000000000000000000000000000000003E050300D8011200AD009300D800F700AD00B700790067050300D800920000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190082006E002A002A002A002A000040405249483C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002C0118B0184358456AB0194360B00C2344231020B00C4EF04D2FB000121B21231120332F592D2C0118B0184358B0052BB000134BB0145058B100403859B0062B1B21231120332F592D2C0118B01843584EB0032510F221B000124D1B2045B00425B00425234A6164B028 + 5258212310D61BB0032510F221B0001259592D2CB01A435821211BB00225B0022549B00325B003254A612064B01050582121211BB00325B0032549B0005058B0005058B8FFE238211BB0003821591BB0005258B01E38211BB0003821595959592D2C0118B0184358B0052BB000134BB0145058B90000FFC03859B0062B1B21231120332F592D2C4E018A10B10C194344B00014B1000CE2B00015B90000FFF03800B0003CB0282BB0022510B0003C2D2C0118B0002FB00114F2B00113B001154DB000122D2C0118B0184358B0052BB00013B90000FFE038B0062B1B21231120332F592D2C0118B018435845646A23456469B01943646060B00C2344231020B00CF02FB000121B2121208A208A525811331B212159592D2C014BB0C85158B10B0A432343650A592D2C004BB0C8515800B10A0B4323430B592D2C00B00C2370B1010C3E01B00C2370B1020C453AB10200080D2D2CB0122BB0022545B00225456AB0408B60B0022523442121212D2CB0132BB0022545B00225456AB8FFC08C60B0022523442121212D2CB000B0122B2121212D2CB000B0132B2121212D2C014BB0C85158B00643B00743650A592D2C2069B04061B0008B20B12CC08A8CB8100062602B0C642364615C58B00361592D2CB1000325456854B01C4B505A58B0032545B0032545606820B004252344B0042523441BB00325204568208A2344B00325456860B003252344592D2CB00325204568208A2344B003254564686560B00425B0016023442D2CB00943588721C01BB01243588745B0112BB00D2344B00D7AE41B038A45186920B00D23448A8A8720B0A05158B0112BB00D2344B00D7AE41B21B00D7AE4595959182D2C208A4523456860442D2C456A422D2C01182F2D2C0118B0184358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB0194360B00C2344218A10B00CF6211B21212121592D2C01B0184358B0022545B002254564606AB00325456A6120B00425456A208A8B65B0042523448CB00325234421211B20456A4420456A44592D2C012045B00055B018435A584568234569B0408B6120B080626A208A236120B003258B65B0042523448CB00325234421211B2121B0192B592D2C018A8A45642345646164422D2CB00425B00425B0192BB0184358B00425B00425B00325B01B2B01B0022543B04054B0022543B000545A58B003252045B040614459B0022543B00054B0022543B040545A58B004252045B04060445959212121212D2CB0032520B0072587052E23208AB00425B00725B0142B1021C4212D2CC02D2C4B525845441B2121592D2CB00243583DED181BED592D2C4B505845441B2121592D2C01184B52588A2FED1B212121592D2C4B53234B515A58B003254568B003254568B003256054582121211BB00225456860B003252344 + 2121591B212121592D2CB00243583DCD181BCD592D2C462346608A8A462320468A608A61B8FF8062232010238AB10C0C8A70456020B0005058B00161B8FFBA8B1BB0468C59B0106068013A2D2C2045B0032546524BB013515B58B0022546206861B00325B003253F2321381B2111592D2C2045B00325465058B0022546206861B00325B003253F2321381B2111592D2C004BB0C8515800B00743B006430B592D2C8A10EC2D2CB00C4358211B2046B0005258B8FFF0381BB0103859592D2C20B0005558B8100063B003254564B00325456461B0005358B0021BB04061B00359254569535845441B2121591B21B0022545B00225456164B028515845441B212159592D2C21210C6423648BB84000622D2C21B08051580C6423648BB82000621BB200402F2B59B002602D2C21B0C051580C6423648BB81555621BB200802F2B59B002602D2C0C6423648BB84000626023212D2C184B5358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB00C2344218A10B00CF6211B218A11231220392F592D2CB00225B002254964B0C05458B8FFF838B008381B2121592D2CB0134358031B02592D2CB0134358021B03592D2CB00A2B2310203CB0172B2D2CB00225B8FFF038B0282B8A102320D023B0102BB0054358C01B3C59201011B00012012D2C4B53234B515A58381B2121592D2C01B0022510D023C901B00113B0001410B0013CB001162D2C01B00013B001B0032549B0031738B001132D2C4B53234B515A5820458A60441B2121592D2C184B5358B00425B004254964B00325B00325496468B0408B6120B080626AB00225B00225618CB00C234421B004251023B00CF61BB00425B0042511122320392F59CC21212D2C0118B0184358B0052546234564611B21B00425B004254A59B00E23442310B00EEC2310B00EEC2D2CB01B435820B0016045B000515820B0016020452068B0005558B0206044211B212121591B20B0016020452068B0005558B8FFE06044B01C4B50582045B02060441B21591B21212159591B21592D2C4B53234B515A58381B2121592D2C4B5458381B2121592D2C4B52587D1B7A592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B00326 + 5358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592DB8005D2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8005E2C2020456944B001602DB8005F2CB8005E2A212DB800602C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800612C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800622C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800632C2020456944B001602020457D691844B001602DB800642CB800632A2DB800652C4B20B003265358B0801BB040598A8A20B003265358B0022621B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B80003265358B0032545B8014050582321B8014023211BB003254523212321591B2159442DB800662C4B535845441B2121592DB800672C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800682C2020456944B001602DB800692CB800682A212DB8006A2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8006B2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8006C2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8006D2C2020456944B001602020457D691844B001602DB8006E2CB8006D2A2DB8006F2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800702C4B535845441B2121592DB800712C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800722C2020456944B001602DB800732CB800722A212DB800742C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800752C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800762C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800772C2020456944B001602020457D6918 + 44B001602DB800782CB800772A2DB800792C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8007A2C4B535845441B2121592D0000020100000005000500000300070014B706020400060204002FCDD4CD002FCDD4CD3130211121112521112101000400FC400380FC800500FB00400480000000000100C1FED8037105C800030055402B790301160226028602034603560302039F01010F001F00020C0601030203BF000114000100200103021000B8FFF0B705026802040065022B2B01383800183F3F313087054D2B877DC4015F5E5D5D5F5D5D005D13013301C102159BFDEBFED806F0F91000000100DE0000057E04A000050079404F37054705023803480378038803E8030508001800D800030E770401350101030F011F016F0103150504050152040305BF00011400000104030152040503BF0201140201020120000700E0020601DF022B2B00182F1A19DDDD313087184D2B082B10C4870418102B082B10C4015F5E5D5F5D5D005E5D5D5D210901150901057EFB6004A0FCAB035502500250A5FE55FE56000100DE0000057E04A000050023B800532B00B800022FB800002FBA000100000002111239BA0004000000021112393031330901150901DE04A0FB600355FCAB02500250A5FE55FE56000000000200110000056E05C80002000A0096405EA70901990401960501090001080A010602010004030913520301037F0A09140A0A09020506081352060106800708140707080400059270028002020202070109080306030A0307600A900A020A08090A030F013F01CF01FF0104010106072F3333192F5D1733182F5D002F17333F333312392F5DED33328705102B872BC410C0C08718102B872BC410C0C03130015D5D5D5D5D5D010B01010321032301330103ADFCFD02D7A1FD8DA3C3024BD002420236027EFD82FDCA019AFE6605C8FA3800000000010068FFDB051705ED001500DB4039E71001091501E91501050C01090C01E90C01D70701280A380A02780A880A02250F01050F450FA50FC50FE50F05390D01090D490DC90D030908B8FFF040450D11480605460556056605047804E804024604014A025A026A0203B7010109010109014901C90103270D01B80401B505E5050208920F091F092F09030A090B920604149113B8FFC0401B090C48131191001309130F13010F030E7D034017136F0216036C022B2B011A18104DED5F5E5D10C6003FFDD62BED3FFDD65E5DED3130015D5D71005D715D5D5D5D5D2B5E5D715D715D715D5D71715D715D052000111000213205152423220011100033323715060339FEA7FE + 88017F015CC7010BFED0A5F1FEF8011AF4D2F0DB25019501730172019841C569FEBAFED7FEE5FEB981B47100000200BF0000059605C8000A001600AF40523913018913E913023C12010C124C1202860E01020E420E0209070901E709F70902480958096809B809040B09014908B908F908032408013408014206520602250501050515054505C5050404041404020A04B8FFE040290E11480A0F4A0F6A0F030D030F116F11021106169201030B9200107D070B7E004018076F0217006B022B2B011A18104DED10ED002FED3FED3130015F5E5D5F5E5D002B5E5D5D715D5D715D5D5D5D715E5D5D5D715D71331121320417161110002125212037361110272E012B01BF01ECDC010F639DFE7AFE9EFEE3010D012078817F4DD6D7AD05C86275BAFED0FE8FFE6A9D9BA501160105955B43000100BF0000042505C8000B003D4021089205400100059230300492010309920007030B05097E00400D0B70020C006B022B2B011A18104DED3210C4C4002FED3FED2B001A18104DED3130331121152111211521112115BF033BFD970205FDFB029405C89DFE259BFDE89D00000100BF000003FA05C8000900424026089205050004920103000F062F06020F022F02020F0306060205097E00400B026F020A006B022B2B011A18104DED3211392F5F5E5D5D002F3FED12392FED313033112115211121152111BF033BFD970206FDFA05C89DFE109BFD600000010068FFDB051705ED001700CF40950609010110181B48C90401B60E01290C390C490C03790C890C02C50601770601180301D803015C037C03023B0F014B0FEB0F028907C90702140754070202113211421172118211A211E211070B0F010C40121548690701030E0109281201D612010B035B03020F1701171708020A920F0B1F0B2F0B030A0B0D920804139202130B167E17107D05400F1701140319176E0218056C022B2B015F5E5D1A18104DED10EDC6003FED3FFDD65E5DED1112392F5D3130015D5D715E5D5D2B005D5D5D5D5D715D5D715D5D5D715D5D2B712504232000111000213217152423220011100021323711330517FEF3C8FE9FFE87017E0159E2F4FECEA3F0FEF7011C0100697AD1284D019201770170019943C268FEBAFED8FEDBFEBB2501E2000000000100BF0000052305C8000B003D40210A92034001000392303005030103080004087E07030B7E00400D076E020C006B022B2B011A18104DED3210ED32002F2F3F3F2B001A18104DED3130331133112111331123112111BFD202C0D2D2FD4005C8FD900270FA3802BBFD4500000100BE0000019005C80003001B400D010300037E00400405007E30302B011A18104DED002F3F313033113311BED205C8FA3800000100BF0000042B05C80005002140110103039200037E00400704700206006B022B2B011A18104DED002FED + 3F3130331133112115BFD2029A05C8FAD59D0000000100BF0000062605C8000C010B4016C80801A803B80302D70301030F0301023803B8030204B8FFF040A4141748D804010B041B042B044B04042902E90202370201040214022402440204020901460956098609030D0A01390A490A890AA90AB90AC90AE90A0704090809820304140303040A0203027F0B0A140B0B0A000301090308090B04020A0004070A030002030003030B087F060B80004010062006400650069006B006C006070006200630069006B006F006060C0F060113030E066E028F0001000070000209030D006B022B015F5E5D5D2B015F5E5D5E5D711A18104DED10ED1139192F00182F3F12173910CC1117395E5D8705102B877DC48718102B877DC43130015D5D5D5D5D5D5D5D5D2B5D005F5D5F5D5D5D33112109012111231101230111BF0123019A01A60104C4FE68CBFE7405C8FB870479FA3804B4FBAF0454FB49000000000100BF0000052A05C80009006E401E460301031F03010002300202102007010F070107080D1048000201120602B8FFF840240C0F480301520807087F0203140203020300070208038006088000400B066E020A006B022B2B011A18104DED10ED113939002F3F3130872B872BC4012B5F5E5D2B5D5D005E5D5D5F5D33113301113311230111BFCE02E9B4CDFD1605C8FB890477FA380477FB89000000020068FFDB05D005ED000B0017010840C6240C012B12018602F60202F60A01C90A01180401F80401270401C70401190801F90801260801C6080136160106164616E616033A14010A144A14EA14034910E91002460EE60E02170B470B02C70B01290B01190B590B690B790BD90B05480701C807011607011607560766077607D60705480501C805011605011605560566057605D605051701012901011901590169017901D901050C0D010317010313010C110109032F0F012015010008011A06129206040C9200130F7D09157D034019096F0218036C022B2B011A18104DED10ED003FED3FED3130015F5E5D5D5D5F5E5D5D5D5D005D71715D715D715D715D715D715D715D5D5D715D715D715D715D715D715D5D5D71710520001110002120001110002532121110022322021110120313FECCFE890179013B013A017AFE86FEC0E3F8F9DCDDF8F62501AB015F016101A7FE5AFEA0FE99FE5B9D0147012A01210146FEB9FEDDFEDEFEB400000200BF0000044805C8000A0013009F403035040195040108112811381103E81101750D850DB50DC50D04420652066206030906190629060310180C0F48D70E010EB8FFC0403F0A0F48150301050375038503F503040944045404020B923F09AF09CF09DF090409090013920103000F7D050B0A7E004000052005020C031505700214006B022B2B015F5E5D1A18104DED3210ED002F3FED11392F5D + ED3130015D005E5D712B5D2B715D5D5D715D713311212016151400212319013332363534262B01BF0193010CEAFEC0FEE45D55BBCCA0BB8105C8B5CFECFEF4FDB402EBAC9D85720000020068FED8066605ED0011001D014840C82D0E011B0C01FB0C01540C740CC40C03440601F406015B067B069B06031B0801FB080154087408C408034B01BB01023414014414E414023B16014B1601341C01441CE41C021D1A3D1A024D1A01361001201030104010031B055B056B05034B0B01CB0BDB0B02140B01140B540B640B03490901C909D90902140901140954096409030B172B17020B1701241301041301241D01041D010D192D193D19030D19ED190209960CA60C02960E019908A90802AB05010605960502113B1601090F690F0214020F011C040FB8FFE840290D1048119100201892020D0F03040A04129204131102040F0307157D0D1B7D07401F0D6F021E076C022B2B011A18104DED10ED121739C6003FED3F121739ED3FED3130012B5F5E5D5E5D5D5E5D5D5D5D5D005E5D715D715D715D715D715D715D715D715D5D715D715D715D715D715D5D5D715D5D715D5D717101242706232000111000212000111005160525321211100223220211101205E1FEA3EC5E33FED6FE8B0179013B013C0178FE85FF0112FCB0E3F8F8DDDDF8F6FED8719C0A01B00159016201A7FE58FE9CFE02C47030F90146012A01210147FEB9FEDDFEDEFEB40000000200BF000004FA05C8000C001300AE40742707013906010606260602E606012E113E114E110311380D1148260F01260F360F020603F6030209450F01160401A707019A07015E126E127E12030918151948070A010A090152097E0807140808070D9207010B0B08001392010300107E050705080D0C7E00400F080112031508700214006B022B2B015F5E5D1A18104DED321139392FED002F3FED1139392F1239ED31308705102B2B10C4015D2B5D5D5D5D5D005E5D5D712B715D715D713311213216151005012101231901332011342123BF01C0D5E3FED501EEFEFEFE5BC444018CFEB48405C8BCB3FED87CFD4B0272FD8E030F0137E500010064FFDB03E905ED00230138B90013FFF840AF1B1E48F51B01180101F801010916191602D916E91602B604C604027A198A1902151D01851D01571E012A0C5A0C023A0C4A0C6A0C7A0C8A0C05991F01121F221F026B0D011B0D3B0D0228230108230107110109280601591001E81001562201472201D822E822024C0B018C0BEC0B020C0A1C0A4C0A032C0A6C0A7C0A03680E780EF80E03441C01341C441C841CA41CB41CF41C060920192002080F1A2104001214921F152F15021517921204029203B8FFC04033090C4803059200131A7F0F14400C0F4814140F035F087F08025F217F2102087E2140000320035003030A0325216F0224036C022B2B015F + 5E5D1A18104DED5D5D1239392F2B2FED003FFDD62BED3FFDD65DED11121739313001715D715D5D715D715D715D5D5D71005E5D5D715D715D5D5D715D5D715D5D5D715D715D2B05222735163332363534262F012E0135343633321715262322061514161F011E0115140401E195E8FAA17C97638566BD9BF8C0ABBEEA736D8E688A6AC098FEE32541D074826A577A4B3B6CBF7FABDD39C05C74584A724F3C6DC288C1EA0000010012000004FE05C80007004E40350602920303000005100540058005040005800590050305060F021F024F028F02040F028F029F02030A0302067E01400809017E30302B011A18104DEDCD5F5E5D7110CD5D71002F3FED3231302111213521152111021FFDF304ECFDF3052B9D9DFAD50000000100B3FFDB04D905C800110083405C280401D71001F60F01490F010A0C019A0CFA0C02090D190D02E90D013B0D4B0D5B0DAB0D0429070113072307B307031303010303130323039303A303B303060B03020D01170409000305920E1309800A017E0040130A6E0212006B022B2B011A18104DED10ED003FED3F333130015F5E5D005F5E5D715D715D5D715D715D5D5D71133311141633323635113311100221200011B3D2A5B4B093B8F9FEF0FEEBFEF805C8FC5ADFCBBFE403ADFC56FED1FEEC011E012B000000000100240000053205C8000600D14096080501F806010A0301FA030185039503B503C50304180101E8010138000168007800A80003270237020257029702A702039906C90602360666067606A60604170501C705E70502380501380401380458048804030406050680030414030304000203027F010014010100060300120204050301030405000605032F035F038F030300030140037003A003D003040303025001800102012F713333192F5D71711733182F33003F17333F32328705102B877DC48718102B877DC43130015D715D5D715D5D5D715D715D71005D5D715D71210133090133010253FDD1D201CA01BAB8FDE705C8FB4404BCFA38000000010002000006D505C8000C018940FF370901B90801080B280B023D0B016D0B8D0B02650375038503030A030138060116060166067606860603180828083808030801F80102E804012802380202170201C702E70202170301A703E703020709270902A809B809D809F80904B707015807880702170001F700013800011800B80002F8050106057605B605D605E605F60506090601B80CD80CE80CF80C04060C01080B0107090809810607140606070A0506057F0B0A140B0B0A040C0B0C82030414030304000203027F010014010002040507080B0601030C0A09030605000C001F032F033F036F037F03050003010003400302030120090A2F063F066F067F068F06054F06010607300880080208402205041F0B2F0B3F0B6F0B7F0B8F0B065F0BCF0B + 02300B800B020B0B023F018F0102012F5D3333192F5D5D713333C45D3218CD5D7132321A1910CD5D7171323200182F17333F173387052B877DC48718102B877DC48718102B877DC48718102B877DC43130015D5D5D5D5D5D5D715D715D5D5D715D715D71715D5D71005D71715D5D5D71715D7121013309013309013301230901017FFE83CA012F0117CA01080146ABFE61D1FEFBFEEF05C8FB6F0491FB7F0481FA380475FB8B000000010011000004E205C8000800BF40875404C404025201C201E20103074817490748141548074812496C077C079C07CC07FC070507280A0E48080401B604C60402A706B70602D805E805F80503A705B705028603C603E603F603040507060780040514040405010304037F02011402010305060107040602030012040105000640068006C006040A0306070302077E0140090A017E30302B011A18104DEDCD3210CD5F5E5D321239003F3F1733313087052B87047DC48718102B87057DC4015D5D5D5D5D71002B5D2B2B2B5D5D21110133090133011101FFFE12F00180019EC3FDEF026A035EFD64029CFCA6FD920000000100C5FED80250062B000700244012049B0100059B00200307058D0040080065022B011A18104DEDCD32003FED3FED31301311211523113315C5018BDEDEFED8075394F9D594000001004AFED801D5062B00070037B800532BBA0001000200562BB8000110B80004DCB8000210B80006D000BA0005000000562BB8000510BA0002000300562BB80002103031011121153311231501D5FE75DEDEFED8075394F9D5940000020067FFE704390456001D002700FA4025290D390D490DE90D040906010A212A2102FA2101E80301E90B01D90BE90BF90B03D7070107B8FFF840292124487907890702EB22016B227B228B2203050601AA22017522852202E724011725E72502C4010101B8FFE040492023480C011C015C0103FC0101790301C903D90302190429040202131213221303091F98AF090109090002110F970F0E010B030E0C9711101917971C1626960216001A091E851A150EB8FFC040100B0F480E2385054029156802280566022B2B011A18104DEDC42B10C4ED321139003FED3FFDC63FFDD65F5E5DED111239392F5DED3130015E5D5D5D715D712B7171715D005D5D5D715D2B715D715D5D7171712506232226353424213335342322073536333216151114333237170623220311272206151416333202F5B1A487B2012B01172FC29CB5C7AEB6AD680D190E43518A4342A2C864487B8AA3A981B2BF83BD60A351A4ADFE14A9046D20010E0119027B64476200000002006FFFE703E604570011001600EA405737100101101B1F482404340402C404E40402050335034503550304A503F5030259036903023A0601CA06EA06025506F50602450701450755076507031316231602D3 + 16F316023A1601120E220E320EB20EC20EE20E060EB8FFD0400A1A1E480509850902090DB8FFE040441A1F480C14012C145C14EC14FC140403740A012F0A01400450046004030F04010E0512970D0D02159708100097110F970216120D1385110B0D850540180B6902170566022B2B011A18104DED10C6ED1139003FFDD6ED3FED11392FED3130015F5E5D5D5D5D5F5D712B005E5D2B5D5D5D715D715D5D715D5D715D712B71250623220035340033321211072112213237012110232203E1C68DF0FED1010BD0C5D701FD532B01507BB3FD6001DFE2E3233C013FFEF7013CFEE8FEFE3DFE7D4201D5012F00000100C50000043D062B0011008C4065B90F01290F390F790F890F990F057607860702D607E60702DB0DEB0DFB0D030D201A1D48880E980E023C104C10AC1003741001720382030204061406240603030004100470048004040905010010030E9505100A000A8509031185004013096802120065022B2B011A18104DED3210ED002F2F3FED32323F31305F5E5D5F5D5D5D71712B5D5D7171015D331133113633321615112311342623220711C5C59CE28DA8C54752B5A0062BFD47E4B397FCF402CC7967EDFD4100000100C50000018A062B0003001B400D010000038500400405008530302B011A18104DED002F3F313033113311C5C5062BF9D500000100C50000043D0456001100784053B90F01A910012D0F3D0F4D0F7D0F8D0F9D0F06770701D707E70702DB0DEB0DFB0D030D201A1D48180E0104061406240603090003100302100310030E950510010F0A000A8509031185004013096802120065022B2B011A18104DED3210ED002F2F3F3FED32325F5E5D31305E5D712B5D5D717171015D331133153633321615112311342623220711C5C59CE28DA8C54752B5A0043ECCE4B397FCF402CC7967EDFD410000000200C5FE75049A0456000E001700D34098130901580D01240F01040F012810581002F71001B817C817028803011916016916E91602380C480C02B60A012A0A3A0A4A0A03250635064506031212B212022714011D1401270A01970AA70A02F90C01B911C911028A09BA09022509350902250735074507030D0F1D0F2D0F030B0C0D1C0D020C03010F1703159505100D0F11970B16001B1384080F030E850040190869021800650219853F2B2B011A18104DED323210ED003F3FED32323FED32323F5F5E5D5E5D3130015D5D5D5D5D5D71005D715D5D5D5D5D5D715D5D5D715D71715D131133153633321215100223222719011633201110232207C5C579F2C4E1FFD0C180988A011CFCA59DFE7505C9CCE4FEE2F8FEF2FEB594FDFA028E8801B1017EB30001009DFFE7037704560020010140867C0B8C0B02660401281701E61B01F81B01371957199719034A0A011A0A6A0A7A0A8A0AFA0A054C0C5C0C7C0C032C0C7C + 0C8C0C030A201A2002331C01031C131C231C631C931C05050F150F0209590401A80C01A90EC90ED90E0320281D2048C90B01B620019920010C0CBC0C020A13970014101420140312141697080D181E04001010029703B8FFC040350B1148030597001618860D14400F144814140D0208851E404F1E011E401A2248000240029002A002B002051403221E6802210265022B2B015F5E5D2B5D1A18104DED1239392F2B2FED003FFDD62BED3F121739FDD65E5DED3130015E5D5D5D5D2B5D5D00715E5D5D715D5D715D715D5D5D71715D052227351633323635342F012635343633321F011526232215141F011E0115140601E587C1C18F55709D73FFC9AF5B8629A561BE905FA186E2193FB5605C456542316AC78EA31908A4318A593D284497718FB8000000010000000601060F596BAF5F0F3CF5011B080000000000B47FC3BC00000000C005BDE3F776FA1B0D21094D0000000900010000000000000001000007BCFE5000000D1EF776F7430D210001000000000000000000000000000000230600010002880000043200C1065C00DE065C00DE058500110589006805FE00BF045600BF044A00BF05C8006805E100BF024E00BE044400BF06E400BF05E900BF06370068046C00BF06370068050F00BF044F0064050F0012058B00B3053B002406D8000204FC0011029A00C5029A004A046B00670475006F04F700C5025000C504F700C5050900C50414009D000000200020005A00AA00D0013A01D20254028A02C00356038C03A603C6046A04B8056E05E006C0073C080E084808AC092A0A100A880AAC0ADA0B920C320C960CB00D0A0D9C0E4E0001000000230077000F004F0007000100100030007B000005E00D3300030001B800712BB800672BB8005D2BB800532B410E00000246001002460002007F02440001023F023C0001002B023E023CB2012BEFBB023D0001023D023CB2141F00BD023C0010023C000201870188B21A1F40B80189B310163900410E0188001001880002018301850002002B018401850002002B01860185B2022B80BB017F000100DF017C406601DFE016171CD4D516171C7B7C161B0F7B1F7B2F7B037B7C19D1D216171C767716171C6D7016171C6C6F16171C6B6E161B5F6E7F6B026B6E7F721A747514151C676A14151C666914151C6568141B8F65A065D06503656885711A1973167A4319217943192102B90352034AB2022B10BD034600500346000200400339B20B0E39B9FFC00338B20E0E39B9FFC00338B3090C3950410B032D0001033003310003002B02F402F30008002B02E3B2BE022BB802DCB3BE641F40B802DBB3313A3940B802DBB2232739B9FFC002DBB2141439B9FFC002D9B2333939B9FFC002D9B22A2E39B9FFC002D9B2212339B9FFC002D9B2171939B9FFC002D9B20E1139B9FFC002D0B2111139B902 + 800278B2022B10412B02740050027400020010025D0050025D0002000B024C001B024C006B024C0003000B024B001B024B0002023A02040016001F023802040012001F023202310002002B023002310002002B022F0231001E001F022E0231B21E1F20B80231B2121639B901F701E3B2032B0A412001F4000101EF01EE0002002B01ED01EE0002002B01EC01EE0002002B01EB01EE0002002B01E801E70003002B01E601E70004002B01E501E70002002BFFCA01E3B30B1139B9411D01E70001007601E7008601E70002019401920002002B019301920002002B019201900006002B019101900007002B018F01900002002B018E0190B2022BBFBF01900001007001900080019000020157B292042BB80153B291042BB8014FB297042BB80136B37F032B40B80139B21218394109012401250003002B011001110003002B0104403BFC022B10F850F80240E61A1A399A9B032B9C9B042B9B970A2B9392042B9192062B9297042B9597042B9897022B9697032BA097019F97AF97BF9703BC034803490004002B0349B285022BB9FFC00343B31011391FBE0344000100E00344000103350334B2032B20411203330030033300400333005003330004033303140003002B033203140003002B032F0314B2032B2FBF03140001000002F3002002F3000202F0B2BD062BB802E2B2BF082BB9FFC002E1B2172839B9FFC002E1B20E1139B802E0B2870A2BB802DFB3BF042B40B802D7B323253940B802D7B2151639B9FFC002D2B2101139410D02C602C50006002B02C202C00006002B02C102C00006002B028CB285022BBC027602770004002B0277B285022BB9FFC00271B31011391FBE0272000100E00272000100400260B2151639B9FFC00260B20A0B39B9FFC0025FB2171839B9FFC0025EB2242939B9FFC0025AB31011391F4114025B000100E0025B0001000F024A0001001602490026024900020009022D0019022D0002FFC0022BB2111539B9FFC00229B30D113920B80223B2121639BD022202200002002B02210220B2042BC9411402200001021E02200003002B021F02200002002B01F601CF0003002B01E001B50020002101DF01B5B2262120B801DFB21E2139411A01DD01DC0002002B01DB01DC0002002B01DA01DC0002002B01D901DC0002002B01D801D70003002B01D701D60002002B01D601D4B2022BB0BF01D6000101D501D40002002B01D301D4B2022B69410B01D2000100B901D2000101D201D40002002B01D101D4B2022B20B801D0B2090C39B9FFCA01CFB30B11392BBF01A300A401A300B401A30003FFE001A6B2131539410D018D018C0003002B018B018C0003002B018A018C0002002B0156B286022BB80155B280032BB80154B286052BB80152B287052BB80151B288052BB80150B288032BB8014EB285032BB8014CB285022B + B80138B287022BB80131B2BF032BB80122B285022BB8010E400B85022BFAFB042BFB85022BB8FFC0400AF51011391FF601E0F601B8FFC04009B1151C3940E51A1A39B8FFC0402EAF0D0F3900B40140B450B460B470B480B4C0B4D0B4E0B4F0B409B4AF641FE8E7042B898A072B8A8B062B8C8B062BB8FFC0B78E3032398E8D032BB8FFC040148D1E23398D8B022B8B85082B8281042B8180032BB8FFC0B3804A4D39B8FFC0B3803F4339B8FFC0B380343939B8FFC0B380282E39B8FFC0400C801D2339807E022B7F7E062BB8FFC0400C7D4549397D7E062B7E85082BB8FFC04020881E23398887022B8785082B8685062B83840A2B8485062B7085808502BF8501410A03530354000E03500351000E034E034F000E034EB203641F4155034C034D000F031B031C031D000C030F03100311000C030C030D030E000C0327030D0329000D0321031C0323000D031E03100320000D0327003C0321003C031E003C031B003C030F003C030C003C02AD02AE02AF000C02A102A202A3000C029E029F02A0000C02B9029F02BB000D02B302AE02B5000D02B002A202B2000D02B9003C02B3003C02B0003C02AD003C02A1003C029E003C02810282000E027E027F000E027C027D000E027CB203641F4175027A027B000F021002110212000C020D020E020F000C020102020203000C01FE01FF0200000C000B0211009B02110002000F021000500210009F021000BF021000DF02100005001F020D003F020D007F020D0003001F01FE0001021901FF021B000D0213020E0215000D0219003C0213003C0210003C020D003C0206003C0201003C01FE003C01BD01BE01BF000C01B101B201B3000C01AE01AF01B0000C01C901AF01CB000D01C301BE01C5000D01C001B201C2000D01C9003C01C3003C01C0003C01BD003C01B1003C01AE003C016D016E016F000C016101620163000C015E015F0160000C01610166B2171F1F41420166003F0166007F016600030179015F017B000D0173016E0175000D017001620172000D0179003C0173003C0170003C016D003C0166003C0161003C015E003C012C012D000F01260127000F01280129000E012A012B000E01180119000F01120113000F01140115000E01160117000E01050106000E01020103000E01000101000E010040A803641FFEFF0F1B37151836151535151234150F33150C3215093115063015032F15002E1526270E28270F2A2B0E2C2B0F22230E24230F1E1F0E201F0F0F10110C090A0B0C0607080C0304050C0001020C000340131A230003131F06031C1F1F0F3F0F7F0F032003011F034F03BF03FF03041B011D0D18071A0D1510170D1204140D901B012C3C2A3C283C263C243C223C203C1E3C1B3C183C153C123C0F3C093C063C033C003C503301B0124B004B5442B013014B004B5342B0332B4BB8 + 032052B0322B4BB009505B58B101018E59B0332BB00288B8010054B00488B8020054B012435A5B58B80119B101018E851BB900010100B04B60858D59B1020042B00188B0235358B00188B0405158B02088B810005458B1020142595959B0374B5058B1020042592B1DB0644B5358B0801D59B0324B5358B0901D59004BB03A51B01B23422B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B7374732B2B2B2B2B2B2B2B2B2B2B2B2B2BB1282645B02A4561B02C4560442B2B2B2B2B2B2B2B2B2B2B2B002B2B2BB8010045B0FE4561B8010223442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2BB8027C45B8027A4561B8027E23442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2BB8034E45B8034C4561B8035023442B2B7473012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73742B2B2B0173742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B74752B2B732B2B2B2B2B2B2B2B2B2B2B2B2B752B2B2B2B2B73737473742B2B2B2B2B73742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73732B2B2B732B73742B2B2B0073742B2B2B2B2B2B2B2B2B2B00732B2B2B2B2B2B2B2B73742B2B2B2B2B2B73742B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B732B0143581B592B2BB018B0234B53422B2B732B2B2B2B2B732B2B2B2B2B2B732B2B2B01B8017C20456A44B8017D20456A44B8017E20456A44B8017F20456A44B8018020456A44B8018120456A44B8018220456A44B8018320456A44B8018420456A44B8018520456A44B8018620456A44B8018720456A44B8018820456A44B8018920456A4473732B2B2B732B2BB8023B20456A44B8023C20456A44B8023D20456A44B8023E20456A44B8023F20456A44B8024020456A44B8024120456A44B8024220456A44B8024320456A44B8024420456A44B8024520456A44B8024620456A44B8024720456A44732B732B2B7373B109322B4BB05052424BB008524BB008505BB01A23424BB0C8524BB036505BB00C234200 + 00>] def + /CharStrings 35 dict dup begin + /.notdef 0 def +/space 1 def +/slash 2 def +/less 3 def +/greater 4 def +/A 5 def +/C 6 def +/D 7 def +/E 8 def +/F 9 def +/G 10 def +/H 11 def +/I 12 def +/L 13 def +/M 14 def +/N 15 def +/O 16 def +/P 17 def +/Q 18 def +/R 19 def +/S 20 def +/T 21 def +/U 22 def +/V 23 def +/W 24 def +/Y 25 def +/bracketleft 26 def +/bracketright 27 def +/a 28 def +/e 29 def +/h 30 def +/l 31 def +/n 32 def +/p 33 def +/s 34 def + end readonly def + currentdict dup/FontName get exch definefont pop end + %APLsfntEnd + 42/FontType resourcestatus{pop pop true}{false}ifelse + {currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if + /FontInfo 1 dict dup begin + /FSType 6 def + end readonly def + /FontType 1 def + /FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def + /FontBBox{-2186 -1509 3361 2381}def + /UniqueID 4093103 def + currentdict currentfile eexec + 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C93142184C9D9AF35B09B9B2CFE320E80E6018C5839BB77E6DFC734C6896EBE4F25925244349D163606DE278031C7591B3D0D1D1D2E08E112F57FAA8467F5D23B13F4AF58177953CEF7B34BD3C7E4605B5FA5B6A67565FADCAB0B1FBA09D49D866A0142996D072EEFCFAB39804CFFAF4EC3DD41A660619FD945B09CE9C696FA6A922B0E4AB00499CFEFE11FD3F6EA7794B33D19249C5F3E22872E9D30FD93EB4F1B8F7A040EE62BD1C126AA8C8F14247E78B0CADB3DB934F208E81C9DFEDEDCD0E3DE2E5DCABBC454988750F4E4AACD33167F23C1CD8C36FC13EDC5357264AC0133FCB913A9C344EFC516EBFC232B1F16DCCA87156935B81430E8612F98B1FEB98D8074F947DA600C7D1948E4085B027EA232DFA5B8F8C752295AADD5D411989D0CD053824876F6777C88D96322A1AAB5C3CD353A703338EDC6062036C6901DC96D299BEC5F3CB08D41E0E69CB8BC22FEC271E2667F7F8E465E198CB0372770B7F30BD819D652DC6489A3A6B4F9AC7508E198B0AA088CF02BB1314F50A5D49C22548CF8F86EF992AE2B7C5803B507CDD5739E08C707EC0FC62AD07871304E2E1C4A7175699BA2AEBA8614D0E76149831490F5E8D6BC2F1FD516CF8024AF7BE82A43A1668792C5D770CA022F8457EF96064F73460657593CFF9156048D8FCD2BD97EBDFDEAF12B22207BF74EC6A2C3A410D9DA5A216BA7AFE56BCEFCBE9B3CF65BABDA11CC6CC4E659B8FF1261E8BE140D7FDFBFD6EBD25B0940AAAFB14E515E48D5 + 5BFDA5EF268979D546EB00EC5422BD6A5918A81587B3E22FC1AD0974456F9D1C857366087F433D2CF8FBABB57BA34B18BC1D60C58235886C4DD79CF9E800EBCA80F213E81AC47F1CC9275ABF6458D5FCD1A4366F5F791658F54A2AE342453D6D96811AFEDBDFCC751C192560073B9077F8CBBC24A36BCF1C4D33019549737980E0A46656CE08CCC9493B946D50B5D7C5DC5B6B860EFAE5AFE8490A6A741D18588740AF7C2391EF165478DBBEB7A3E94EE81E81EEEBA92A49243F733A3CD2541CB5F1E7DF80A06CEA8D8566337B81CCD9D543A5852ACDFCD57D3339220D0F8A6703BFFF47AC0E6E7096220CCA7A9C90C8479100E8A8775B6710F40B5A82A4EF58555A4C1A5BEB62066C2C1BBEF74C8485D7884C205CB92A6998F2C4DC62D0687BC1FCD948AF050A4AB8783A152EE584A4670E6E22FA43567500E68870963416DE4670BE09A6D6AFB4A2C9F7FFCA044E37C941BBEAB5020A3233579F422B97E75C67B33C125349AD8D4AA3BF3E50F8560118ABA0411DFF448277B353663C2262C201233CA75A7915285AEF8E934D48EEC3D1FB5F10B22B3F012864F58D006A3650E1D542FB0406381E20DDC1E1E02A2A6DA571EE842FE232EDD833B119502672B111FFB084095C7A6FA993D57F4A9060D72EB05FEEE1CCE87D4879B6335EB5491D81195CD464E116596A8443CEE28960C017928E045B0E119C70FA0262F04C4021E5BF76B5152351B97CBED0A8A18671751B1238BC237E370C852059F94CF57D7D0D3B4F97E79D96674C9AC18871DDF800A4BCB0A83411B4E4210D7271DB270C5C2DDA9592DC4FC552BEE2A25437BF11D8BA22223DB5686A09709CC008859A8950DED5D139A75094D73F3DF2C33473DD9D0E419BDDA710DC26460734C68756943BA6DCFD48D12C85A8ACCCB7AABC8A808E1DAA35D02450684EDBB5754666E234C37CDFD21EA5989C2A1A1B92AE81263E935C9F649D7F689FF5379493B04B0CA0C1DE13A617CDE98FAB8FC37C253C19C06B95D60A631BF529BE31AA1A282BAE27D57E1A8482A55241AF4719271BBD5C3254BD07CEBB3EC00E5C3DAD162A94FF5DB8F36A27F0372C150060C985F18819217B7138D2BF0F7E6473EE884EB837E9F74D3AC4B7998D3D9B323FCE83396D81C8E0019F1AEC0D2337DD57B2078112CEDEE35C9D2C7CB869DFCFB9EB930657D358596293B4283D9F4BDEE8F3C8281D4362E1C2224F9F5623D55F9FE7BC060FFCCB75B490432E0A10041C8EA66A71302A962B9B0FD5FA7A1C7E0D838BD6DA1B8FA9F9413C4684E407EB189CB8F06E1ED15E6B2E9729283AB85B01EFC092E96B8A3AC5347557E6AB5BE6CC0BB3293D6F900CE327F59D38148253620415026677B6301115D908BA8026711C179BDC5ADD686B64E6A7C1239F90B6579E2D2E20D71613D619BCE592D54AFBF6E1FD2582FF0F98E0 + FB07657BEC920FEDC2AFB172976EB6C73286EA269AB4265F7DF06B089EE20BC1E497935E97A7ACA0CB2FFD1378B8EFC7CA117E59B850A330259BDF6E38A8558B2B8A80E9BE95B926894ACC945D28A5A928B9519C3E07BFCD2C9CBC2B3A8BD741B96C602F53C63DC8E1658FB5291923CF58F5E3D5428DCDFA9EDCB578641176047C6748DF06853020A7E6FCA820155F9C7E8AEC6A31B660E4A6DB05688062AD3DFE626090782A2A478518F40D3293801860E455AB9478B04DF6076E0B3EA35C1451281892E66749643810FBC8C6BA55C62CBDC15583939DECB31440569DC14B2570053664184C5718F5043A14026006A63D86B0F8078EDA344949DFF1F823822513B55C424F21F1198417EA8CBF2C490988E2CFD36CD8FD7F6B72539989C25C9668DD002650B81E248AAE25D656E8F56264730444DA215517D9ACC8C09BBF143C11917D3C7392A352C9329112E72640325BDD87F151599EE782B523DD7E82EA2B938E4FE328DBC1AA9AC231C1187EE69E21500B5785FA9C98C6B29811C9E04764882A3371BC271882D14DA488259EA9574C49294513C6B0E8DF0F5442F79DC4E681165B870DDCD53A05688B0E570E8C98128A4FC5694BA7E29728C376F9938EFFDD312FA45D65AA93546EC36372CEA343BD002FCDFE3E0DE16B56319D7B32D5B94163F64CACE938E6ABA13E1D963A23D1124A94EEBB5375A83FB4D8AD301197634BC96442EAFEBA597B58DC0A422ACC72DFFEBD27C468ACFAA664DF08FABEAA2EEB1F002402D7615151885E47999A5075320D00F5435CCCE3DFEF34C298350A3EFFE7267695B4E57E3E1FCCB94D1E6DAB8E41596C1844926815646728A1E4916F47081DC5B2B90BB9823E9D92CEEA8FE1B7C6E01FD2B72CF20ADF23A685BD3C4ACA71C4B026DC7F18F227B2B2B4DAB2D3029F50B56A48FDA0C1FE8FEE594362929132E5717537D00B9557C770216FCDCB1FDB6A8DDEEBBB45283929CF2A7067C79BA600BF5300D6E003C14B03989E1F1918E18411FA7C5CB9F9683841BFF1E207B4B63230231EFB353A394117AC6F409129AE61965C73552D38A765A752B19E4CF88F749950C897090279807DCB35B0FE74C8863C8B1788B091C205CF606B97E6DFC40908873727A7738B51C3C436C6C22B5ECF1C8706EE094E814BEC275CA82652747F5753993477783C8DFD96A1A5E2CB2BDF584BAA5D97B0D13D0A7EC951C49D3D09CA3D597FD22C0B7B01288543064401476BE925E6BC00AFCBD2C7A7A4CA9F2E90D4A4794F7CB1771157F0D286333B9C908764FC776C0787A4BD5CE6D6534F96257EA829D81EEC88C9C10FEE70CBB7CF79010B5403FA8455D0E27BC563C0C74A2DD0A35CDF12A5131D3AAD6E998BC2514F77001039E1368792B788527302EB81A3ED5F7AC4F21E4F4AC96B0BEFC78E201E8C9F2C48C15813D09066FEB7FE + A8B18C28E9CA2EFB2AF3C7E2D0073F28C74CC729E5D29473530CD0A1322E9F14B291B87314CD00F78CA8D9BD09BCB234B7153738E595C350B716ABA2CE019C8ADECDAF7097E6F9811290976313BA54B5A2A64B63976D1206BDC413E95EC08DE39B19227D97E86C39558CF7DBE8C6CE248E6C4E71168B01B50F62CFFD150B4638B6FF9AEEF0CBF8346DAED08D499CF3B39126B4AC51C4A4655651A10FEC0F0FEED584CAD3BDA4389F8DBCAC4599DCDF65DC4912171B47145107AE651263711C8EB0C552D742F90C6EFD8588B060557FD4FCC52DA29B80095E2EDDF38351718964B1B24F825971F1FE0563596E1A0FB2147284F8917F951AF3670DCEEB4B9ED226D7A75B0EEF46DE7A3CA68904F0C3F9B37360BF420F917CDB1F6FA2F4C4FB994342862A523EBC6465816A04A20157440E7FA4617A4DB49978553FAA60BB43114339F13C76BF0A61D65390FDF41751C030F4471F83BA39BC3DF78C5A80F4D533E005A6641D18F904468AB960422036AF8CD080C53FC2304D4F5E132E75C67FB5CE8CF5ADD383C2F70B80513F9EF831FBB9B10C476335B90374C555E613E4B4CD7AA18DFE93E540B07F3BA5EFFDBF1685F224687DED5746F3DFD0FF93527905633BE0171FB5034A556E27E115EABCF151F00F06FC2E2A0EF35CA0C72802725FD4669F50E7AC2DDCDF58B9CA8557D4C14206208418EA51672F66C91B1F5429D0D511E00AF391E336D84A1555B5554BB157B158943ADB1B84992E2AB4DEBE9A5EF38D055C3EAFAC729EE670D2369771B4CB29AE68E0838954D8131EC5CB5C979F12D8031A4380BDA6574E17488E941316F268AB2F94888206BA2D827FD2DFFF2BF205CA405A60204E070B3B3F90B846F78148ACB237F9267B10E0E8822E8E062552C3B69E40BA38437B641421E9317661BD9E79831D9219473BB095B7BA4C1E8485A747FB7B82AA3FF60EBC80FAA796334ADB1067C5AE05E85C14ACA0099B744432D28FFF2239EA43CB8C1AD42D198CD1ADAFE422DB43D17F4266822B8F2EC4D3051BE3902D96EB012A18116238278F7575F4B6052301FECC7AD5EC4935465EFC1BCB84EB1238E797C55D2C824EEB058817B187A9A0B13310DC956DD33BCCB0ADC77E675B142650E1F51FC8067721FA8E8D5BD2DBA986F4D55FD44D8AFC7B1D9C9C10CE8ED3EB4AA24ECFD0E72C6D2242716A81A8168A4E654C07CC0EC6795A10BA602FAC97D213C42ECD3DE0EA102BCDF6EF3DB15409ABF8F7E471EFA38531214C5762D97EBDC9D864CBA529FB0B1A0EC155DCE3000B4F52B002AE78B32D11CC90F6251B58D5545B5044B4FD16203F1AD56EA2DD243ED4634C1F160275DDCBC8E6E11F8197D63BD18D3A5DDAA39F7110190C8492F55D0F4D47CD2856B19449A1BEEC1B202A94F58AC55A015F74B8986B5B43BB57BE26C7BAA4EDD472CCA6C493D3B4 + 32BD47C508E236016BF864790FABE7E367E1105DBAD4249206B181B0B0037F602FECA4E6AAFF6F0AD79C3411FF492BE695F229DD75FA8918646EC7512E34C22967C352569722F97B6E3996AAF56EE114E4E4EA248DDA23B1867F0B2E196AF6C2C3E924B6F82C579FF0D0ED9507D42CFEE48768206B + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark end + %APLT1End + %RBIEndFontSubset +/LucidaGrande cguidfix +/F1.1/LucidaGrande renmfont +[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeA { { 1.8008 exp } bind exec} bind +def +/MatrixA [ 0.9642 1.0000 0.8249 ] def +/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def +/DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def +end ] /Cs1 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind +] def +/MatrixABC [ 0.4124 0.2126 0.0193 0.3576 0.7151 0.1192 0.1805 0.0722 0.9508 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs2 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4295 0.2318 0.0204 0.3278 0.6722 0.1111 0.1933 0.0960 0.9578 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs3 exch/ColorSpace dr pop +%%EndPageSetup +/Cs1 SC +1 sc +q +0 0 1232 497 rc +0 497 m +1232 497 l +1232 0 l +0 0 l +h +f +/Cs2 SC +106 0 0 13 590 413 cm +BI +/Width 318 +/Height 39 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdj +JcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdj +JcC<$JcC<$JcC<$JcEdjJcD_Lg&?R%Jc:6"TDmmNJcEdjJcEIam/G]:Jc1/uJc25>l2LS[JcEdjJcF*s +o)@&8nbdt9Jc()s[/APSq#9scJcF4!JcFa0qu5jYq#'^[f(ssoJbjroRJQURq#(-in,;qYJcFj3JcFs6 +rr29_p&+U^p%n[`f(agkJbXfkSG<*Zp%nI\rquHeo)8IbJcFs6JcG9?q#9j_qu$?gn+uqWqtSe;rUtg9 +JbFZg_tMgYp%\O^p%nR^rqlBdp&4[bJcG9?JcG]Kqu60brquHdqtg3crqQ0\qtBp[n+?)?o^[S(Jb"B_ +](5=]n+?VPp%J:WqtU0dp%nR_qu$-cp&9OB!<7WM!<<&tn,<7`q"t'erqZ6^p%JCXqt0dWp%%A;o^IG$ +Jae6[](#(Vo()eOq"4RYqtBp\p%\O^rqcEequ$$`rr.KK!<7]Orr2KerquZjq"k!crqQ9_rq?6^rq-*Z +rposVqs`t@kjF#iJaS*WX7#QIp$htNqssaXrq-3^rq60^qtL*brqZ?crqlTjp&4deKE$o1q#:'erquZj +rqcNfrqQBbrq??aqt0mZrpojSrp]ULrpK[Nqs==Jqs*b:o]UkiJ`q[K]'/hOq!.kEq!A"IqsO@MqsaUT +qsj[Vrq$$Zrq69arqHroNh6puD&,pYg\^ +J`21=^u=kDpuD&.roO.Apuq_Arp'CHrp9XOqsOIQrpTjVrposYrq69bqtU0dqtgroO.Broj@Grp0RMrpB^RqsaUUrq$-]qtC$`qtU0drqlTjp&4mhS,])[rr2ThrquZjrqcWirqQKe +rq??arq-*XqsXOOrp9XMrp'LHroX4AroEt8rnm_5rnm_3rnRD*pt>Z!qq(;eo[NK^J^]\/J^`/uk1&kM +rn%&"pt>Z$qqV)*ro!e5ro!e7roF(?roX4DrosFJrp9XOqsXORrpg![rq69arqHEerqZHfrqlTjqu-Ek +T)YMarr2]krquZjrqcWirqQKerq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$ +rmh"tqpYPmrmCDcl-K=RJ^/hlJ^20Ym*G7LrmC_nqpYPormh#!rn%/&rnIG-rndY3ro!e7ro="=roO.C +rosFIrpKdSrp]pWrpp'[rq69arqHEerqZQirqlTjq#1*hV#R7jrr2Thq"t'drqQKerq??arq-3\rpg!V +rpKdPrp0RHroX4Aro=";qqqD/rnRM+rn.5$rmh"tqpPJkrm1Sjrm(MfprrWYrlXQKJ]WJbJ]Y1=qo\o] +prr`^rm(Mirm1SkqpPJmrmh#!rn%/&rnRM/qqqD3ro=">roX4Crp0RMrpKdSrpg!Yrq-3_rq??crqQKg +q"sa_rr/_nVuQbqp&4mfq"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"trmLem +qp58erltGdrlb;`rlOrUrl4iSlbqu)J]!tpJ]$QdcG]_$qo8EOrlP/^rlb;brltGfrm1JgrmLeprmh## +rn7;*rn[S1qr%J6roO.CrosFJqsO@Nrq$-]rq??crqQ9bqu$?iqu3MnWrN(tq#13irql]krqZQgrqHEc +rq69_qsj[SrpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`Pqn`0FrkJHJ +rkJHHlb*>4]n*hK]Rd`8]^3?/^AbqI^\bhG_>D+K_u@UR`W!pWao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3 +i;Vd9jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6friQ4&s8N#jrVl]nqYpic2PlbaSs6Z`W!gT_u@LO_#D+G^&G\A]DfD= +\c0,-\,Ead[Xkl<[_oQB\,3]7\biu;]DK8?^&GeG_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+ +hYuI4j8S-=kPj`FlMg2Mn,DhUo)A7[p&=^_q#:*gqYpBbrVleus02P&rq66hr;QQiq>9pcpAX^`o)%nT +m/H>Mkl0`DjSn-;i;VU4gA]b(f)F+sd/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'! +Z2LnXY^s$0Yf!^@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t. +hu;U6jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6HirilF,s8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%W +n,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>Es +X8]-oWV!-?W.CmuW4Jr&WV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>k +e,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQSus02OurVQKkqYp9hp\smc +o`"I]o)A.Xmf)SPl2KlFjo46I(cU[+ZPU4K"mTn/o]U#r*KU\LYaV>d@kVuE[mWrB'uY5YX(Z2V'.[JmZ7\c0;A^])(K +_u@[TaSsE_cMl2ieGe%ug&Bh,hu;U6jo4HBl2L&Kmf)_To)A7[o`"R`p\ssbqYpBerNQ=.s8N#prVl`l +qu6Hkp\smcp&=R^o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$ +WrAmpV>d:iU]."bT_P/YT(nlHSG\n.RtdD`S'7AdSGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/ +\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\Xgdqtproj@H +rpTjUrpg![rq69arqQKgrqcWkrquZlqu4/+\c;[.q#13irql]jrqQKerq69_rpp'XrpKdProj@Dro="9 +rn[S.rmq(trm:YhrlP/Zrk\TKrk/6>rjDa2ric=%ri,mnrhTOerh'1[rgWnSrg3VMrfmDGrf[/@rf@&? +rf@&=qi10*!/lDdJW#);ac#MErf-f8rfI,?rfI,Arf[8ErfmDJrg3VOrgWnXrh'1`rhKIhri,muric=, +rjDa7rk/6Erk\TRrlP/arm:Yormq)'rn[S3ro="?roj@JrpKdTrpp'[rq69brqQKgrql]mqu-Ek\c95? +rr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7" +rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,nV2ULJVJ`1["eR8reUQ1qhkB2rf$i9 +rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rndY4roF(@ +rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu4/+]`8!1qu-NlrqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2 +rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUH*re19&qgnEj +mXKe;JU`6#[t!t!rdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TS +rlb;ermC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)`n^]2(Krr2fnrqucmrqcWirqQKd +rq-3]rp]pTrp9XJroX4?ro!e3rn@A%rmLelrlY5\rkn`Lrjr*(JTQHbZul:irc\9bqfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJrg`tZrh07f +ri,n"riuI1rji$CrkeZRrlkAermC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-Ek_Z,, +~> %APLeod +EI +106 0 0 45 590 368 cm +BI +/Width 318 +/Height 135 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +_Z0W7qu-Nlrql]krqQKdrq69^rpp'Wrp9XLroj@Aro*k6rn.5#rmC_jrlY5[rkSNHrjr*7ric='rh]Uh +rh'1Zrg3VKrfI,=repc0re()urdOiord"Kfrc\9_rc@sWrc.^PrbqdTqeu+EJSp$VJSr&:qeuIQrbqRN +rc.gUrcA'\rc\9brd"KjrdFZore(3(repc9rfI,Drg3VRrh'1arh]UrrilC-rjr*BrkSNQrlP/brmC_q +rn.5-ro*k:roj@Grp9XQrpg!Zrq69brqQKhrql]mrr)`n_Z.LQq#13hrqcWirqHEcrq69]rp]pTrp'LH +roX4=rndY/rmh"rrm1Scrl4rRrk8Brf$i4re:?&rdXoqrd+Qgrce?` +rcA'Zrc%jTqelCMqeZ.FlY:ucJSKaNZ"j8Rph]qHqelCOrc%jWrcA'\rce?erd+QlrdXoure:?-rf$i; +rf[8GrgWnZrhBCjri?%%rjDa9rk8rau.Crb;@Irbh^Src8!]rcnEhrdXp"reCE2rf@&Arg<\Trh07g +ri?%%rjDa9rkABMrlG)_rmC_qrn.5,ro*k;roj@HrpB^Rrpg!ZrqHEerqZQjrquZlrr1"=bQ%S@qu-Nl +rql]krqQKerq??_rpg!Vrp0RJroa:>rnm_1rmq(srm1Sbrl"fOrk&0Brepc3 +rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4ra,J-r`o"uoih;sJQ[P,JQ]lnnlk]jqcs,+qd080 +ra5Y4raGe:ral(ArbDFKrbqdTrcJ-`rd=]ordk')repc:rfd>Krgj%_rhoasriuI2rk&0Frl+lXrm1Sm +rmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]mrr)`nbQ#ccrr2fnqtpBhrqHEcrq-3[rpTjRroj@D +ro="9rnRM*rmC_krlkAZrkSNHrj;[/riQ0qrh07]rg!JGrf@&6re19$rdFcjrcS3Zrbh^Prb)4Brac": +ra>_4qd'2+qcWo#qcEbtk#M@ZJQ.2"JQ0Ndk#M:Zr`Au!r`T,'ra#M1ra>_6rac">rb)4IrbqdTrcS3c +rdFcrre19+rf@&Arg!JRrh9=eriQ1)rj;[bpeq&fJPgtqJPj<^ +pepQZqc*Gmr`9#"qcNi#r`fA-ra5Y4raYq_4ra,S.r`];(r`B)"r`/hor_iMgr_V]PJPUhmJPWFEqb[&bqbmDlr`/qur`B)%r`];*ra,S2 +ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.F +rpB^Rrpg![rq??drqZQiqu$Hlqu5"CcN!nCrr)iorql]krqQKerq-3\rp]pSrp'LHro3q8rndY*rmUkm +rlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$r`/qsr_iVj +qb[8fr_WSiqbH]VoLsg0JP:Vg\kMckohPK_r_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"ArbMLPrc8!^ +rd=]qre19,rf@&Brg<\WrhKIkric=.rji$Crl"fXrm1Smrmq)*ro!e8roj@HrpB^Srq$-]rqHEfrqcWk +rqucoqu5"CdJs4Fqu-Nlrql]jrqQKerq$-[rpTjQrosFEro!e3rnIG%rm:Yhrl+lQrk8<=riuI)rhTOd +rg`tPrfI,br_2uXkXpCuJP(Jc +X%N7^qb6u`qbI,dqb[8hr_reqr`B)$r`T5+ra5Y5ral(BrbVRPrcA'_rdOitre190rfI,Drg`t\rhTOq +riuI1rk8_JOm[Lj%9,?r_*#[r_#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WSh +r_3;`oh#-Rpda=5JOY2[JOZS-pdb3PqapZWr_3;cr_WSir_`Ymr`9##r`];.raGe9rb2:Hrc%jYrd"Kk +rdt-*rf-o?rg<\VrhKIlric=/rk&0Frl>#]rm:Yprn7;,ro*kre^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr_ +rp'LMrpTjWrq-3arqZQiqu$HleGn/#rr2fnrquclrqQKerq-3[rpTjProsFDro!e2rn7;"rm1Serk\TJ +rji$4ri?$qrh'1XrfmDAreLK)rd=]ircA'VrbDFFra>_2r`fA&r_r\jr_EGdr^m)[r^ZrWqaLKPnjD(s +k_rnm_/rmh"prlY5ZrkSNCrj2U, +rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKPpd$Kr^?`Sr^QlWr^m)^r_EGhr_i_pr`B)(ra5Y6rb2:Irc%j\rd=]qreUQ4rfR2Krh'1criZ7+ +rj_sCrl+lZrm:Yprn@A/ro3q=rp0ROrp]pYrq69brqcWkrqucorr1XOgAh0Orr)inrqcWirqHEbrpp'X +rpB^MroF(;rndY,rm^qnrlP/WrkJH?riuI(rhBC_rg3VGrepc0rdOilrcJ-XrbDFEra>_2r`];%r_rem +r_NMer_!/\r^ZrWr^HfSog@4qoK[smJO"cO\j4b3ogA^Hr^HfUr^ZrYr_!/`r_NMir`&ktr`];,ra>_; +rbDFNrcJ-brdOj#reg]:rg3VTrhBCnrilC0rkJHNrlP/crm^r"rndY5roF(Drp9XRrpp']rqHEfrqcWk +rr)iqgAg"/rr2fnrql]krqZQerq-3[rpTjProj@Aro!e3rmq(srm(M_rk\TIrj2U-ri,mirgWnPrf6u7 +re(2trce?^rb_XJrac"9r`oG*r`/qqr_NMer_!/]qa^WTr^?dKRqu-NjrqZQgrq-3\rp]pSrosFFro*k5rnIG$rm:Ygrkn`M +rjr*5ri?$qrgs+Vrf[8=re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'Ci'RE/kWj\a +JO"cOY!DtPh*V!+qa:?OqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-brdb!&repc=rg<\Vrhf[r +rilC5rkABLrlkAfrmUl$rndY5roa:GrpB^Srq$-]rqQKgrqcWmqu5FOh>dKRqu-NjrqQKerq-3\rp]pR +rosFEro!e3rn@A"rm(McrkeZJrjVm1ri,mmrgWnQrfR2:re19#rce?^rbh^Kral(;r`oG*r`9"qr_WSh +r_!/]r^d#XqaL'Ci'RE/kWj\aJO"cOY!DtPh*V!+qa:?OqaUQUr^m)]r_EGgr_`Yqr`K/)raGe;rb2:K +rc8!^rdXp#re^W:rg*PQrhTOnric=1rk8dKRrr)iorqcWhrqHEarpg!Vrp0RIroF(:rnRM+rm:YgrlP/Trk&0dBNrquclrqQKerq$-ZrpTjNroa:@rndY.rmq(qrlb;\ +rkSNErj2U)rh]Udrg3VIrf6u1rdXoorc8!UrbMLDraGe5r`K/"r_remr_EGdr^m)[r^QlUr^?NKg-Xda +JO"cOJO$/!g-Yd*qa:?Nr^HfUr^ZrZr_3;dr_WSmr`9##ra5Y6rac"DrbqdVrd4Wore(31rf[8Irh'1d +ri?%)rji$Drl4r]rm:Yqrn7;-ro="?rosFNrpg!ZrqHEfrqcNirr([Qh>dKQrqucmrqZQgrqHE`rp]pS +rosFEro3q6rn7;#rm1Sdrl+lNrj_s4ri,mlrgs+RrfI,_8 +rbDFLrc.p`rdOiurf$idKQrqucmrqZQgrq??^rpTjRroj@Cro*k4rn.5"rm(Mbrl"fLrjMg0ri#gjrgj%Prf@&9rdauq +rce?\rbVRJraPk6r`oG'r`&kor_NMer_!/\r^ZrWr^?EHi'RE/h`u`XJO"cOV*P#Gi'RE0qa:6Kr^QlW +r^d#\r_3;er_`Yor`9#'ra5Y6rb;@Jrc%j\rd=]qreg]8rfd>PrhBCjric=0rk8dKQrqucmrqQKdrq69\rpTjQroa:Aro!e1rmq(srlkA^rk\TF +rjDa/rh]UdrgNhJrepc1rdauorcJ-YrbMLGra>_2r`];$r_relr_dKQrqucmrqHEcrq69\rpKdOroX4?rnm_/ +rmq(rrlb;[rkSNDrj2U,rhKIarg<\Hrepc0rdFcjrcA'VrbDFDra>_1r`T5#r_i_kr_3;`r^m)Zr^QlU +pd=11pd*RuJO"cOJO#hmpd+75qa1'Fr^HfUr^ZrZr_*5ar_NMkr`/r#r`oG1ral(Crbh^VrcnEjre:?/ +rfI,Hrgs+ariZ7,rji$Drl4r\rmC_qrn@A/ro="?rp0ROrpg!\rq??crql]mrr([Qi;`fUrr)iorqcWg +rq??_rp]pSrp0RFro3q7rn7;$rm:Yerl"fNrjVm4riQ0orgj%Trf@&8re(2trce?^rb_XJrac"8r`fA( +r`&kor_NMer_!/]r^QlUr^?NKk!IE[JO"cOJO#MdlpCS9pd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8 +rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]n +qu5XUi;`fUrr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&q +rc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$M*XJO"cOJO#MdlpCA3r^6ZQr^HfUr^d#[ +r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.E +rpB^Srq-3_rqHEgrql]nqu5XUi;`fUrr)iorqcWgrq69]rp]pRrosFCro*k5rn%.urm1Sarkn`Lrj;[- +ri#ghrgNhNrf$i2rdauorcS3ZrbDFEraPk4r`T5%r_i_lr_EGcr^m)Zr^HfSpd=(.cp3.IJO"cOQ9ae' +og8OCr^?`Sr^ZrZr_*5cr_WSlr`B)&ra#M4rau.Erc%jZrd+QoreCE2rfmDNrh07hric=.rkABKrl>#a +rmUkurndY5roF(Crp9XRrpp']rqHEgrql]nqu5XUi;`fUrqucmrqcWgrq69]rpTjProsFBro!e3rmq(s +rm(M_rk\TIrj2U,ri#ggrgEbLrepc0rdXomrcA'Wrb;@DraGe2r`T5$r_i_kr_Lrh'1g +riZ7,rk8_1r`K/"r_`Yjr_3;_ +r^d#Xr^HfSpd=C7a$>2@JO"cONBm/'og8OCr^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdWrce?k +re19-rfR2Hrgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucl +rqZQerq$-YrpKdOroj@@rndY/rmh"qrltG\rkJHEriuI(rh]Uarg*PFreUQ+rdXoirc8!Urb)4@ra>_1 +r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=U=qa&7fJO"cOJO#2[r^$rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$Brkn`Zrm:YornIG0ro3q@ +rp'LNrp]pZrq??erql]mqu5XUj8],Xrr)iorqcWirq69^rp]pTrp'LGro*k5rn@A#rm1SerkeZJrji$4 +ri5smrgNhOrf@&5rdk&rrcJ-Yrb_XGraPk6r`T5%r`&knr_EGdr^m)[r^QlTqa9^:r^"IfJO"cOJO#)X +r^$EJnj<=CqaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y6ral(Grc.pZrd=]qreCE5rfmDNrhKImrilC4rkABK +rlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQjrqucorr1sXj8],Xrr)inrqcWirq69^rp]pTrp'LGro*k5 +rn@A#rm1SerkeZJrj_s3ri,mkrgNhNrf@&4rdauprcA'XrbVRFraPk5r`T5$r_i_lr_$Mr^ZrZr_*5br_WSlr`9#$ra5Y6ral(FrbqdWrd4Wpre:?4rfmDN +rhBCkrilC3rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQirql]nrr1sXj8],Xrr)inrqcWirq69^ +rp]pSrosFFro!e3rn@A"rm(MdrkeZJrjVm1ri#gjrgNhNrf6u2rdXoorcA'WrbMLDraGe4r`K/"r_i_l +r_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdW +rd4Wpre192rfd>MrhBCkric=1rk8$Lr^ZrYr_*5br_WSkr`/r" +ra,S4rac"DrbqdVrd4Wpre191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKg +rql]nrr1sXj8],Xrr)inrqcWhrq69^rp]pRrosFDro!e2rn7:urltGark\THrjMg/rhoagrg<\Jrf-o0 +rdXoorc8!UrbMLDra>_2r`K/"r_`Ykr_$Lr^QlW +r_*5br_WSkr`/r"ra#M3rac"DrbqdVrd4Wore(30rf[8Jrh07griZ7/rk/6HrlP/armC_urnRM2roO.C +rp9XRrq$-^rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rp]pRrosFDro!e2rn7:urltGarkSNFrjMg/ +rhoagrg3VHrf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0B +pd>$Lr^QlWr_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07griZ7/rk/6GrlP/armC_u +rnRM2roO.Crp9XRrq$-]rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGa +rkSNFrjDa.rhoagrg3VHrf$i.rdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cO +JO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rk&0F +rlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rpTjQroj@Bro!e2 +rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTL +mm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07g +riZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rpTjQ +roj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;` +r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-. +rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sXj8],Xrr)inrqcWh +rq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)! +r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XS +rd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sXj8],X +rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdOimrc8!UrbDFB +ra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`&kura#M2 +raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]n +rr1sXj8],Xrr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdOim +rc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMj +r`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\ +rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rp]pRrosFDro!e2rn7:urltGarkSNFrjMg/rhoagrg3VH +rf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlW +r_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07griZ7/rk/6GrlP/armC_urnRM2roO.C +rp9XRrq$-]rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rp]pRrosFEro!e2rn7;!rm(McrkSNFrjMg/ +ri#girg3VHrf-o1rdXonrc8!UrbDFCraGe4r`K/"r_`Yjr_3;`r^d#Xr^HTLmm?n;`'Al=JO"cOLHti) +r^-0Bpd>$Lr^ZrYr_!/`r_NMjr`/r"ra,S4rac"Crbh^Urd+Qnre191rf[8Irh9=hriZ7/rk/6GrlY5c +rmLf!rn[S3roX4Drp9XRrq$-]rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq69^rp]pRrosFEro!e2rn7;! +rm(Mcrk\THrjMg/ri#girg<\Jrf-o1rdXoorc8!UrbMLDraGe4r`K/"r_`Ykr_$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdVrd4Wpre191rf[8Jrh9=h +riZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]nrr1sXj8],Xrr)inrqcWirq69^rp]pS +rosFFro!e3rn@A"rm(MdrkeZJrjVm1ri#gjrgNhNrf6u2rdXoorcA'WrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wp +re192rfd>MrhBCkric=1rk8MrhKIlric=1rk8rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$B +rkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjProj@@rnm_1 +rm^qorltG\rkJHEriuI(rh]Ubrg*PFre^W,rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WN +lpCS8a$>2@JO"cONBmJ/pd4Orbh^Urc\9ire(3,rfI,G +rgj%bri?%'rk&0Frl"f\rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucmrqcWfrq-3[ +rpTjProj@@rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yj +r_3;_r^d#Xr^HfSpd=C7a$>2@JO"cONBm/'og8OCr^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdW +rce?kre19-rfR2Hrgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fU +rqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm(M_rk\TIrj2U,ri#ggrgEbLrepc0rdXomrcA'Wrb;@D +raGe2r`T5$r_i_kr_Lrh'1griZ7,rk8#armUktrndY5 +roF(Drp9XQrq$-^rqHEgrql]mqu5XUi;`fUrr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fN +rjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$M*XJO"cO +JO#MdlpCA3r^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0 +rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu5XUi;`fUrr)iorqcWgrq??_rp]pSrp0RF +ro3q7rn7;$rm:Yerl"fNrjVm4riQ0orgj%Trf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_NMer_!/] +r^QlUr^?NKk!IE[JO"cOJO#MdlpCS9pd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]t +re^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5XUi;`fUrr)io +rqcWhrq??`rp]pTrp9XHro="8rnIG'rmC_grl+lPrji$7riZ6qrgs+VrfI,:re19"rd"Karbh^Mral(: +r`oG*r`&kpr_NMfr_!/]r^QlUr^?NKk!Ji/fg(*RJO"cOT0W0;lpCS9pd>$Kr^HfUr^m)^r__:rb;@LrcA'`rdOj"reg]:rg<\VrhKIqrj2U7rkSNQrlb;grmq)'rnm_8roX4HrpKdTrq-3` +rqQKhrql]nqu5XUh>dKQrqucmrqQKdrq69\rpTjQroa:Aro!e1rmq(srlkA^rk\TFrjDa/rh]UdrgNhJ +repc1rdauorcJ-YrbMLGra>_2r`];$r_relr_dKQrqucmrqZQgrq??^rpTjRroj@Cro*k4rn.5"rm(Mbrl"fL +rjMg0ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG'r`&kor_NMer_!/\r^ZrWr^?EHi'RE/h`u`X +JO"cOV*P#Gi'RE0qa:6Kr^QlWr^d#\r_3;er_`Yor`9#'ra5Y6rb;@Jrc%j\rd=]qreg]8rfd>PrhBCj +ric=0rk8dBNrquclrqQKdrpp'XrpKdL +roO.=rn[S,rmh"orlY5ZrkABArj)O'rhTOcrg!JErepc-rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;a +r^d#Yr^QlTog@Y(qa'4,JO"cOJO$/!r^#@,r^-KLqaCEQr^ZrYr_*5br_NMjr`&kura#M2raYqBrb_XS +rd"Klrdt--rfI,Erh'1cri5t'rj_sArl+lZrm1Sorn7;,ro3q>roj@Lrp]pXrq??drqcNirr([Qh>dBN +rquclrqQKerq$-ZrpTjNroa:@rndY.rmq(qrlb;\rkSNErj2U)rh]Udrg3VIrf6u1rdXoorc8!UrbMLD +raGe5r`K/"r_remr_EGdr^m)[r^QlUr^?NKg-XdaJO"cOJO$/!g-Yd*qa:?Nr^HfUr^ZrZr_3;dr_WSm +r`9##ra5Y6rac"DrbqdVrd4Wore(31rf[8Irh'1dri?%)rji$Drl4r]rm:Yqrn7;-ro="?rosFNrpg!Z +rqHEfrqcNirr([Qh>dKRrr)iorqcWhrqHEarpg!Vrp0RIroF(:rnRM+rm:YgrlP/Trk&0dKRrr)iorqcWirqQKbrpp'WrpB^L +roX4_1r`T5$r_i_lr_EGb +r^m)[r^QlUr^?NKg-Yd)kWj\aJO"cOY!DtPg-Yd+qa:?Nr^HfUr^d#[r_!/br_WSlr`9##r`oG1ral(B +rbqdWrce?kre19-rfI,Frg`t`ri5t%rj_sArkeZXrm1Slrn@A-ro!edKRqu-NjrqZQgrq-3\rp]pSrosFFro*k5rnIG$rm:Ygrkn`Mrjr*5ri?$qrgs+Vrf[8=re:?% +rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'Ci'RE/kWj\aJO"cOY!DtPh*V!+qa:?OqaUQV +r_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-brdb!&repc=rg<\Vrhf[rrilC5rkABLrlkAfrmUl$rndY5 +roa:GrpB^Srq$-]rqQKgrqcWmqu5FOh>dKRqu-NkrqcWirq??`rpg!Vrp0RIro="9rn[S)rmLekrl4rR +rk8<;ric=#rh07[rg!JCre^W,rd=]hrc8!Trb2:Ara>_1r`T5#r_i_kr_3;`r^luWr^QlTnjCnnoK[sm +JO"cO\j4b3ogAUEqaUQTr^m)^r_3;er_i_qr`T5*ra>_9rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7, +rk8c=2rr2fnrqucmrqcWfrq-3[rpTjP +rosFCro*k5rn%.urm1Sarkn`MrjDa0ri?$mrgj%TrfI,;re:?#rd"KbrbqdNrb)4=ra,S.r`9"sr_WSh +r_3;`r^d#Yr^QZNpd$KqaCEQr^ZrYr_!/_r_EGhr`&ktr`fA.raGe=rbMLO +rcJ-brdOj#reg]:rg3VTrhBCmrilC0rkJHMrl>#armUkurndY5roF(Crp9XQrpg![rq??frql]mrr)`n +h>c4/rr2oqrqucmrqcWgrq69^rp]pSrp0RFro="8rn@A%rm:Yerl+lPrj_s6riZ6rrh'1YrfR2>reUQ( +rd4Wgrc%jQrb2:?ra5Y0r`B)!r_i_lr__9rb)4Jrc.p[rdFcsre:?3rf[8Jrh07fri?%)rj_sArl+lZrm1Snrn7;,ro3q>roj@Krp]pX +rq-3`rqQKhrql]nqu5=LfDkjLrr)iorql]jrqHEbrpp'XrpKdMroa:@rnm_/rmq(qrlkA_rkSNFrjDa/ +ri#gjrgNhOrf@&7re19#rcnEarbqdNrau.=ra5Y/r`K.ur_i_kr_rp'LMrpTjWrq-3arqZQiqu$Hlqu5=LeGoFErqucl +rqQKerq-3\rp]pTrp0RIro3q7rnRM(rmLelrl>#UrkJH@riuI)rhKIbrgNhKrf-o6rdk&srcnE^rbh^N +rac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-qEfa"JO4oS]gCXEqaCEPpdY6Qr^d#[r_*5b +r_NMjr_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o>rgNhXrhKIprj)O3rkJHMrl>#armUktrnRM1 +ro3q@rp'LNrp]pYrq-3arqZQiqu$HleGn%urr2fnrql]krqZQerq-3\rpTjQrp'LEro3q7rn7;$rm:Yg +rl4rQrk&0;ric=#rhKIbrg*PHrf6u4rdt,urc\9]rbqdMrau.=ra5Y/r`T5#r_r\jr_EGdr_*5_r^m)[ +r^ZWNpdOjDmR)OmJO=uU[mT^SpdOjFr^ZrYr^m)]r_*5ar_<8dr_rerr`T5*ra5Y6rau.DrbqdWrc\9i +rdt-(rf6u@rg*PUrhTOmric=/rk&0Frl4r]rm:Yprn7;.ro3q=rp'LLrpTjWrq69arqZQirql]nqu5+F +eGoOIqu-Nlrql]krq??arq$-YrpB^Nroa:Aro!e2rn.5!rm(Mbrkn`Krj_s6ri?$qrh9=[rg!JDre^W- +rdXomrcS3[rb_XKrau.;ra,S/r`K/#r`&kor_WShr___arfZqb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbV +rh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e:roj@HrpKdTrpp'^rqHEerqcWkqu-NndJqMlrr2oqrqucl +rqZQgrq??_rpg!Vrp0RJroa:>rndY/rmh"rrm(M_rkeZKrjMg2riQ0qrh07\rfmDDrf-o1rdk&trce?` +rbqdPrb;@DraGe6ra,S-r`K/#r`&kqr_i_lr_NMgpeC`]i(O#@JP(JcJP*gPj%K8CpeC`_r_NMir_i_o +r`&ktr`K/'ra,S2raGerfmDPrh07driQ1*rjMg?rkeZSrm(Mjrmh#& +rndY5roa:Frp0RPrpg!Zrq??crqZQirql]nqu5"CcN!nCrr)iorql]krqQKerq-3\rp]pSrp'LHro3q8 +rndY*rmUkmrlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$ +r`/qsr_iVjqb[8fr_WSiqbH]VoLsg0JP:Vg\kMckohPK_r_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"A +rbMLPrc8!^rd=]qre19,rf@&Brg<\WrhKIkric=.rji$Crl"fXrm1Smrmq)*ro!e8roj@HrpB^Srq$-] +rqHEfrqcWkrqucoqu5"CcN!nCqu-NlrqcWirqQKdrq-3[rpTjQrp0RFro3q7rn@A'rmUklrlP/XrkJHD +rjDa.ri,mlrh'1Yrg!JDreg]0rdaurrd+Qbrc.pUrbDFFral(:ra5Y2r`fA*r`T5%r`9"uqc!Jlpeh#e +j\LG'JPUhmY#"pkpegodr_rerr`9#"r`T5(r`fA.ra5Y4ral(BrbDFNrc.pYrd+Qkrdb!&repc:rg!JO +rh'1bri#h!rjDa:rkJHNrlP/brmUkurn@A/ro3q=rp0RNrpTjVrq-3`rqQKgrqcNirr)`ndJqMlqu6Tn +rquclqt^6brq-3\rp]pTrp9XIroO.' +r`K&!r`8/]rD\>IJQ.2"_c5buqc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6 +rf[8Grgj%^rhTOqriuI0rk8_4ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMgrosFJrpTjVrq$-_rqHEerqcWkrqucoqu4e=bQ%A:rqucmrqcWirqQKdrq-3\ +rpTjSrp0RJro=":rndY,rmh"qrlkA_rkn`Lrjr*:rilC&rhf[frg`tUrf[8Arf$i2re(3"rd=]jrc\9\ +rc%jSrbMLJrb;7@rac";qdKJ3qd9#&nm23!JR!b2JR$)toj.,pra5P1raG\5qdf\;rb;@HrbMLNrbqdU +rc\9crd=]pre(3)rf$i;rf[8Krg`t\rhf[qrilC0rji$Brkn`UrlkAhrmh##rndY4ro="Brp0ROrpTjW +rq-3`rqHEfrqcWkrquQjbQ#Q]rr2oqrqucmrqcWhrqHEarposUrpB^MroO.>rnm_0rn%.urm:Yfrl>#R +rk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jSrb_XLrb2:Dqdob;qd]V7nmV&r +JRF%:JRGimojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!#reLK3rf@&Brg*PSrh07cri?%% +rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEfrqcWkrqucoqu4\:`W,r:qu-NlrqcNf +rqHEcrq-3ZrpKdQroj@Dro="9rnRM+rmLelrltG^rkeZLrji$9rilC&rhf[hrh'1Yrg3VGrf6u:reCE) +rdXorrd4WircS3^rc.pVrbqdRrb_XNrbMLJqe?%Clt?<0rFLOkJRsCD_e&^Wnn7i5rb;7ErbMLLrb_OM +rc%jVrcA']rd"KirdOirre(3)rf$i:rfI,GrgWnZrhBCiri?%&rjDa9rkJHMrl4r^rm:Ymrn7;+ro!e9 +roX4DrpB^Rrp]pZrq69brqZHfqu$Hlqu4\:`W,i7rr)ioqtpBhrqQKdrq-3\rp]pTrosFGroX4=rnm_1 +rmq(trm1Sdrl4rSrk8<@rj;[.ri?$srh9=_rgWnPrfd>Brf$i5reCE'rdXoqrd+Qgrce?`rcA'Zrc.pV +rbqdRqec=Knn\5>pM#1mJSB[L^hN[\okXG@rb_OMrbqdTrc.pXrcA'\rce?erd+QlrdXoureCE.rf$i; +rf[8GrgWnYrh9=iri?%%rj;[8rk8rfmDKrgWnZrhBCgriQ1(rj)O7rk8#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,? +rf6u9reg]2qh>$&rdt#uomlI[JU`6#JUb.Ynpp^jqh"]ure:?-re^W4rf6u=rfI,Crg*PNrgj%\rh07e +ri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r!rn[S3ro3q>roj@HrpTjUrpg![rq69brqZHfqu$Hlqu4A1 +\c;[.qu-Nlrql]krqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Marl+lQrkABDrj_s5rilC) +ri,morhKIcrgs+[rgEbPrg!JGrfR2@rfI,>rf-o9repZ2re^W1qhO]rJVJ`1JVLOdreLK/re^N0repc7 +rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJrl+lXrm(MirmLeurn@A.ro!e: +roX4Frp9ONrpp'\rq??crqQKhrql]mrr)`n\c95?rr2fnrqucmrqcWirqQKerq69_rpp'XrpKdProj@D +roF(:rn[S-rmq(trm:YgrlP/[rk\TKrk/6?rjDa1ric=%ri,morhTOerh'1[rgWnTrg<\NrfmDGrf[8C +rfI,?pl>-/oSe?[JW,/=\r?EDpl>?7rfI,Arf[8ErfmDJrg3VPrgWnXrh'1`rhTOjri,muric=+rjDa8 +rk/6Erk\TSrlP/`rm:Yormq)&rn[S3roF(@roj@JrpB^Srpp'\rq69brqQKgrqcWkrqucoqu4/+\c;[. +q#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4rn7;&rm^qorltGcrl+lSrkJHHrjr*kl0lH +n,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirji'8s8N#prVl`lqu6Hkp\smcp&=R^o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:iU]."bT_P/YT(nlHSG\n.RtdD` +S'7AdSGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n) +i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\XgdqtpF$X8]*tW;ELlVYd4h +V"g_aU@b.1Tn/ngTt6rpUAL_bV#."fVYd:jW;`dqX8]4"Xo>O'Z2V'.[JmZ7\Gj/?^AbqI`;[dUaSsE_ +cMl2iec+2"g&Be+hYuL5jSn<@kl0rJmJcVSnc&.Zo`"R`p\sseqYpBhr;QZirjMj2s8N#prVl`oqu6Hk +q>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9 +[JmN3ZMUm*YPt^(Xo>EsX8]-oWV!-?W.CmuW4Jr&WV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG +_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQSu +s02P&rq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b(f)F+sd/MAjc2Pocao99Y`;[XQ +_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z2LnXY^s$0Yf!^@]`,\C_#D4M +_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6HirilF,s7lTj +rVl`lqu6Hkq#:$epAXaao`"F\nG_kTmJcDMkl0cEjSn0"e,I_ncMl)fb5TN^aSs0X +`;[[R_#D+G^AbhF]_K)8\bio)[fNtIJ[U3>J[WS,o!e;%rjhg8rk/6DqnE'ErkSNNrl"fTrlG)\rlY5b +rm1SjrmUksrn%/&rnIG/rnm_7roF(ArosFIrpB^Qrp]pXrq-3_rq??crqQBerqlTjrr)WkYlCa'rr2]k +rqucmrqcWirqQKerq??arq-*XrpTjSrp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#W +rl"fRrkeZNpqZmDrkSNJrk@^3!PQ0t]S!kJ]Z.VN^&,PC_#D+D_#D1L_Z%IP`;[aTa8X3[b5TZbcMPuf +df._pf)F>$g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[p&=[ap\sseq>U6iqu6NgrVQSrs/5nrrq66h +r:p-fq#:$epAX^`o)%qUn,DbSli-2Kkl0]Cj87d6hYu@1g]#q+f`'G#eGdnqd/2/gcMl)fbl5fbb5TNX +a8X*U`TtJ*`.>gq_h#_d_p64"`V[[Ma8X3[b5TT`bl5ldcMl/ed/MJme,Insf`'S'g]$%.hYZ71j8S0> +kl0iGlhg,InG`%Yo`"R`p\ss_qYU3frVQSls/5nlrqlZnr;6BjqYpU0gp\smcp&=R^o)A1YnG_nUmf)MNl2KoGjo4??j87g7hu;L3 +h#?(-g&BY'f)F5!eGI_odf.Yed-8mTc@O8lc@O9YcKrmJd/MGldehMmeGe"tf)F;#g&Bb*h#?10hu;R5 +iVqm:jSn9?kl0iGlMg5Nn,DhUnc&+YoD\F^pAXgcq#:*gqYpBhr:p6frhTRcs8N#jrVl`lqu6Hkq>U0g +p\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?U-fpAXa[oD\7Yn,DbSmJcJOlM0T?jo4??ir7p6i;;F/h>Z4)g]#pgg%3mJ +fT4[9f[\X.g&'Lug\]e*h>?+,i;;O5jSn6>jnS'=lMg,KmJcPQn,DhOoD\F^pAXgcq>:$fqtU*grUp/] +s-Wi`rq66hr:p-fq"sg_p&=U_o)%tVnG_nUmf)SPli-2KkkjQ?jo4?9iq;7&htu9uh1=C5h1=Ckh=]Y% +ht#_#iqqg9jo4H?kl0lHli-8Mmf)\SnG_tTo)&(Yp&=^_q"X^_r;6HcrgWqQs7lTgrVl`lqu6Hhq>U0d +p\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&Ckl0`Djn7^0j7VF+iITs=iITt'iUZ"'j7VL4jo4E;kl0iG +lMKoHm/HDLmf)_Tn,DkVo)&(Yp&=^_q#:*dqYpBhr:p6crg!MKs6os^r;6BjqYU*fq#:$epA=O^o`"I] +o)A1Yn,DhUn,DbPmJcJLli-2Hl1O9;kORd0jalNEjalO/jm;./kORj9l20cFlhg&JmJcPQmf)_Tn,DkV +o)A7[o_\=\pAXg`q#:*dqYpBer9sWMs,@!QrqQHkr;6BjqYU*fq"sgbpAXa^o`"I]o(_bSnFc8LmecDK +m/H>JlLO33k^hrKk^hs/kk438lMg,Em/HDLmecJMnG_tTnc&+YoDA1Zp&=[ap\Xabq>:$fqtpnG_tTo)A7[o`"L^p&"I[ +p\sseq=sgcqtp9s=p\jf:p4;pgp;?UXp\"=\q=XU] +qYpBbr:U$`rdk+>s+14?s6TaarUp*Wqu6H;q>L)>pjr3kpqumSq>:$]qtp9`r;QZ]rdk+>s+140s82f[ +rV6<]qptUpqLSKoqO.3QqtU*grU9^Xrdk+2s+13ss760:rUKf:r.4csr3ZCRrV6Bbrdk*us+13ss2G!* +rIOourIOpVrQG35rdk*us+13Os471#rdk'"rgEcMs+13js+13$s+13$s+13$s+13js+13$s+13$s+13$ +s+13js+13$s+13$s+13$s+13js+13$s+13$s+13$s+13js+13$s+13$s+13$s+13js+13$s+13$s+13$ +s+13js+13$s+13$s+13$s+13js+13$s+13$s+13$s+13js+13$s+13$s+13$s+13js*t +~> %APLeod +EI +106 0 0 45 58 368 cm +BI +/Width 318 +/Height 135 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdj +JcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdj +JcC<$JcC<$JcC<$JcEdjJcD_Lg&?R%Jc:6"TDmmNJcEdjJcEIam/G]:Jc1/uJc25>l2LS[JcEdjJcF*s +o)@&8nbdt9Jc()s[/APSq#9scJcF4!JcFa0qu5jYq#'^[f(ssoJbjroRJQURq#(-in,;qYJcFj3JcFs6 +rr29_p&+U^p%n[`f(agkJbXfkSG<*Zp%nI\rquHeo)8IbJcFs6JcG9?q#9j_qu$?gn+uqWqtSe;rUtg9 +JbFZg_tMgYp%\O^p%nR^rqlBdp&4[bJcG9?JcG]Kqu60brquHdqtg3crqQ0\qtBp[n+?)?o^[S(Jb"B_ +](5=]n+?VPp%J:WqtU0dp%nR_qu$-cp&9OB!<7WM!<<&tn,<7`q"t'erqZ6^p%JCXqt0dWp%%A;o^IG$ +Jae6[](#(Vo()eOq"4RYqtBp\p%\O^rqcEequ$$`rr.KK!<7]Orr2KerquZjq"k!crqQ9_rq?6^rq-*Z +rposVqs`t@kjF#iJaS*WX7#QIp$htNqssaXrq-3^rq60^qtL*brqZ?crqlTjp&4deKE$o1q#:'erquZj +rqcNfrqQBbrq??aqt0mZrpojSrp]ULrpK[Nqs==Jqs*b:o]UkiJ`q[K]'/hOq!.kEq!A"IqsO@MqsaUT +qsj[Vrq$$Zrq69arqHroNh6puD&,pYg\^ +J`21=^u=kDpuD&.roO.Apuq_Arp'CHrp9XOqsOIQrpTjVrposYrq69bqtU0dqtgroO.Broj@Grp0RMrpB^RqsaUUrq$-]qtC$`qtU0drqlTjp&4mhS,])[rr2ThrquZjrqcWirqQKe +rq??arq-*XqsXOOrp9XMrp'LHroX4AroEt8rnm_5rnm_3rnRD*pt>Z!qq(;eo[NK^J^]\/J^`/uk1&kM +rn%&"pt>Z$qqV)*ro!e5ro!e7roF(?roX4DrosFJrp9XOqsXORrpg![rq69arqHEerqZHfrqlTjqu-Ek +T)YMarr2]krquZjrqcWirqQKerq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$ +rmh"tqpYPmrmCDcl-K=RJ^/hlJ^20Ym*G7LrmC_nqpYPormh#!rn%/&rnIG-rndY3ro!e7ro="=roO.C +rosFIrpKdSrp]pWrpp'[rq69arqHEerqZQirqlTjq#1*hV#R7jrr2Thq"t'drqQKerq??arq-3\rpg!V +rpKdPrp0RHroX4Aro=";qqqD/rnRM+rn.5$rmh"tqpPJkrm1Sjrm(MfprrWYrlXQKJ]WJbJ]Y1=qo\o] +prr`^rm(Mirm1SkqpPJmrmh#!rn%/&rnRM/qqqD3ro=">roX4Crp0RMrpKdSrpg!Yrq-3_rq??crqQKg +q"sa_rr/_nVuQbqp&4mfq"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"trmLem +qp58erltGdrlb;`rlOrUrl4iSlbqu)J]!tpJ]$QdcG]_$qo8EOrlP/^rlb;brltGfrm1JgrmLeprmh## +rn7;*rn[S1qr%J6roO.CrosFJqsO@Nrq$-]rq??crqQ9bqu$?iqu3MnWrN(tq#13irql]krqZQgrqHEc +rq69_qsj[SrpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`Pqn`0FrkJHJ +rkJHHlb*>4]n*hK]Rd`8]^3?/^AbqI^\bhG_>D+K_u@UR`W!pWao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3 +i;Vd9jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6friQ4&s8N#jrVl]nqYpic2PlbaSs6Z`W!gT_u@LO_#D+G^&G\A]DfD= +\c0,-\,Ead[Xkl<[_oQB\,3]7\biu;]DK8?^&GeG_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+ +hYuI4j8S-=kPj`FlMg2Mn,DhUo)A7[p&=^_q#:*gqYpBbrVleus02P&rq66hr;QQiq>9pcpAX^`o)%nT +m/H>Mkl0`DjSn-;i;VU4gA]b(f)F+sd/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'! +Z2LnXY^s$0Yf!^@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t. +hu;U6jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6HirilF,s8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%W +n,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>Es +X8]-oWV!-?W.CmuW4Jr&WV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>k +e,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQSus02OurVQKkqYp9hp\smc +o`"I]o)A.Xmf)SPl2KlFjo46I(cU[+ZPU4K"mTn/o]U#r*KU\LYaV>d@kVuE[mWrB'uY5YX(Z2V'.[JmZ7\c0;A^])(K +_u@[TaSsE_cMl2ieGe%ug&Bh,hu;U6jo4HBl2L&Kmf)_To)A7[o`"R`p\ssbqYpBerNQ=.s8N#prVl`l +qu6Hkp\smcp&=R^o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$ +WrAmpV>d:iU]."bT_P/YT(nlHSG\n.RtdD`S'7AdSGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/ +\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\Xgdqtproj@H +rpTjUrpg![rq69arqQKgrqcWkrquZlqu4/+\c;[.q#13irql]jrqQKerq69_rpp'XrpKdProj@Dro="9 +rn[S.rmq(trm:YhrlP/Zrk\TKrk/6>rjDa2ric=%ri,mnrhTOerh'1[rgWnSrg3VMrfmDGrf[/@rf@&? +rf@&=qi10*!/lDdJW#);ac#MErf-f8rfI,?rfI,Arf[8ErfmDJrg3VOrgWnXrh'1`rhKIhri,muric=, +rjDa7rk/6Erk\TRrlP/arm:Yormq)'rn[S3ro="?roj@JrpKdTrpp'[rq69brqQKgrql]mqu-Ek\c95? +rr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7" +rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,nV2ULJVJ`1["eR8reUQ1qhkB2rf$i9 +rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rndY4roF(@ +rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu4/+]`8!1qu-NlrqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2 +rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUH*re19&qgnEj +mXKe;JU`6#[t!t!rdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TS +rlb;ermC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)`n^]2(Krr2fnrqucmrqcWirqQKd +rq-3]rp]pTrp9XJroX4?ro!e3rn@A%rmLelrlY5\rkn`Lrjr*(JTQHbZul:irc\9bqfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJrg`tZrh07f +ri,n"riuI1rji$CrkeZRrlkAermC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-Ek_Z.LQ +rr2fnrqucmrqcWhrq??arq$-[rpTjQrp'LHro=":rnm_-rmh"qrm(Mcrl4rQrk8rfmDKrgWnZrhBCgriQ1(rj)O7rk8rf$i2re(3"rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2rau+?JRsCDJRu`1qe#D3 +qe5tCqeH+GrbVRNqelCPrc.pYrcS3crd4WnrdXp"reCE2rf6u>rg3VRrh'1arhoarrilC0rji$Crkn`T +rltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`naT'6Zrr2oqrqucmrqcWhrqHEarposU +rpB^MroO.>rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[ +rc%jSrb_XLrb2:Dqdob;qd]V7nmV&rJRF%:JRGimojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wm +rdb!#reLK3rf@&Brg*PSrh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEf +rqcWkrqucoqu4\:aT)8=qu-Nlrql]jrqQKerq$-[rpTjRrp'LHroF(;rndY,rmh"qrlkA_rl"fMrjr*: +ric=$rhoagrg`tTrf[8Arf$i2re(3"rd4Whrc\9]rc%jSrbMLJrb2:Cral(>raPb5ra>V1oj72prEOnY +JR!b2_d)k?nm;<&qdBD3qdTP8ral(@rb2:FrbMLNrc%jWrc\9crd4Wore(3)rf$i;rf[8Jrg`t\rhoar +ric=/rji$Brl"fWrlkAhrmh##rndY5roF(Brp'LMrpTjVrq$-`rqQKgrql]mqu-NnaT'H`rr2fnrqucm +rqcWhrqHEcrq$-ZrpTjProsFFro*k6rnRM(rmLelrlG)WrkSNFrjMg2riH*srhBC_rg<\Krf@&:reUQ) +rdXoprce?`rc%jTrbVRKrb)4Brabn7ra5Y4ra5Y2qd'2+nltcjrE4\SJQ[P,_ccP6oiq;ura#D-ra>_4 +ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMgrosFJrpTjVrq$-_rqHEerqcWkrqucoqu4e=bQ%S@qu-EhrqcWgrq??`rpg!VrpB^KroX4? +ro!e2rn.4trm1Sfrkn`Nrk8<'r`K&!r`8/]rD\>IJQ.2"_c5buqc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kk +rdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8_4r`oG,qcWo#r`B)"pf7;mmo0!ZrDA,CJPgtq_bp2, +mo0*_qc3Vrr`Au!r`T5)ra#M1ra>_8rac"ArbDFMrc.p[rcnEkrdk'%reg]8rf[8Krgj%^ri#gtrilC4 +rk8Krh'1bri#h"rj;[8rkJHNrlP/crmUktrndY4ro3q@rp'LMrp]pYrq-3arqZQirql]m +rr)`ndJqVorr2fnrqucmrqZQgrqHE`rpp'Wrp9XKroX4__arfZqb$i\pe:Z]r_EGgr_WSkr`&ks +r`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbVrh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e: +roj@HrpKdTrpp'^rqHEerqcWkqu-NndJq_rrr2fnrqucmrqcWgrq??`rpg!Vrp9XJroO.#UrkJH?riuI) +rhKIbrgNhKrf-o6rdk&srcnE^rbh^Nrac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-qEfa" +JO4oS]gCXEqaCEPpdY6Qr^d#[r_*5br_NMjr_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o>rgNhX +rhKIpriuI1rkJHMrl>#armUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$HleGn%uqu-NlrqcWhrqHEa +rpp'WrpB^Lroa:>rndY.rm^qorlkA\rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQrb2:?ra5Y1 +r`K/#r`&knr_NMgr_!/]r^d#Yr^QZOr^>@*qEj@3JO,bkJO/?_g-XL\qaC_7rb2:Hrc%jZrd+QnreCE1rfI,Frg`t]ri,n"rj2U:rkSNPrlkAgrm^r$rn[S4roa:G +rpB^Rrpp'\rqHEfrqcNirr(@HfDkjLqu-NlrqcWhrqHEarpg!Vrp0RJroO.;rnRM+rmUkmrlb;WrkABB +rilC&rhf[ergEbMrf-o4rdt,srcnE`rbh^Mrb)4Are:?&rdFcgrc8!Urb)4@ra>_2r`T5$r_i_lr_EGcr_!/]r^ZrWqaLKPmmGYm +r'Gs"L-U;TbWsH?njECEqaLKRr^ZrZr_!/_r_EGhr_i_rr`T5+ra>_9rb)4Jrc.p[rdFcsre:?3rf[8J +rh07fri?%)rj_sArl+lZrm1Snrn7;,ro3q>roj@KrpTjVrq69brqQKirqucoqu5=LfDkjLrr)iorqcWg +rq??`rp]pTrp9XIroF(:rnRM*rmUkkrlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6 +r`];&r`/qor_EGer_!/]r^d#XqaLKPog?tjr'Gs"L-U;TbWs-6qa:6Kr^H]Rr^d#[r_!/ar_NMir`/r" +r`];.raPkdKRqu-NkrqcWirq??`rpg!Vrp0RIro="9rn[S)rmLekrl4rRrk8<;ric=#rh07[rg!JCre^W, +rd=]hrc8!Trb2:Ara>_1r`T5#r_i_kr_3;`r^luWr^QlTnjCnnoK[smJO"cO\j4b3ogAUEqaUQTr^m)^ +r_3;er_i_qr`T5*ra>_9rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7,rk8c=2rr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHD +rilC&rhf[drg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>%r^#a5JO"cO +JO$A'r^#@,qa:6Jr^H]Rr^m)]r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+' +rjr*Crkn`Zrm1SmrnIG/ro*k>rp'LMrp]pYrq-3brqZQirr)`nh>c=2rr2fnrqcWhrqHEarpp'Xrp9XK +roX4%r^#a5JO"cOJO$A'r^#@,qa:6Jr^H]Rr^d#[r_!/br_NMjr`9##r`oG2ral(Brbh^U +rce?kre19-rfR2GrgWn_ri5t$rjVm?rkeZWrm(Mkrn@A-ro!ec=2 +rr2oqrquclrqQKerq-3[rpTjProj@Bro!e2rn7:trlkA`rkSNFrjMg/ri#gjrgNhNrf@&5rdt,urcS3[ +rb_XIraYq7r`];&r`/qor_EGer^m)[r^ZrWr^HfSpdc=2qu-NlrqcWhrqHE`rpg!VrosFFro="7rn@A&rm:Yfrl4rQ +rjr*8ri?$prh'1Vrf[8@re(3"rd4Wbrbh^Nrac":ra5Y,r`/qrr_WShr_3;_r^d#Xr^HfSpdc=2rr)iorql]jrqQKerq$-YrpB^L +roX4>rndY-rm^qnrlY5ZrkABAriuI%rhKIarfmDDrf$i.rdOimrc.pTrbDFBra>_2r`B)!r_i_lr_Jh*V*-qa:?Nr^HfUr^ZrZr_*5br_WSlr`/r!ra#M2raYqB +rb_XSrd+Qmrdt-.rfI,Drgs+ari,n%rjVm@rl+lZrm1Snrn7;-ro3q>rosFLrp]pYrqHEerqZQjrquco +h>c=2rr)iorql]jrqQKdrpp'WrpB^KroO.ric="rhBC_rfd>Breg]*rd=]h +rc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTog@Y(r^#F,JO"cOJO$%sr^#I/r^-KLqaCEQr^ZrY +r_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrm(Mmrn7;,ro*k< +roj@Krp]pXrq??crqZQjrqucoh>c=2rr)iorql]irq??arpg!Vrp9XIroF(:rnIG'rmLeirl>#Srjr*: +ric$Lr^QlWr^m)^r__c=2rr)iorql]hrq??arpg!Urp0RGro="8rn@A& +rmC_grl+lPrji$7riZ6qrgs+VrfI,;re:?"rcnE`rbh^Mral(:r`oG*r`/qqr_NMer_!/]r^ZrWr^HTL +k!Ji/fg(*RJO"cOT0W0;lpCS9pd>$Lr^QlWr^m)^r_3;er_i_qr`T5*ra>_:rb;@LrcA'`rdFd"reg]: +rg<\VrhKIqrj2U7rkSNQrlb;grmh#%rnm_8roX4GrpKdUrq69arqHEhrqucoh>cF5rr2oqrquclrqHEc +rq$-YrpB^NroO.=rnm_.rmh"prlY5YrkJHArj)O*rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/! +r_`Yjr_3;`r^m)Yr^HfSpd=11cp3.IJO"cOQ9ae'qa1'Fr^?`Sr^QlYr_*5ar_NMkr`&l!r`fA/rac"B +rb_XTrce?hre(3,rf@&Frgj%_riQ1*rjVmArl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`n +j8\';rr2oqrquclrqHEcrq-3ZrpB^MroO.=rnm_,rm^qnrlP/XrkJH@rilC%rh07[rg!JBreLK(rd4Wf +rc.pQrau.=ra,S.r`K.tr_WSir_*5_r^d#Xr^HfSqa9C1cp3.IJO"cOQ9ae'og8XFr^?`Sr^QlXr^m)^ +r_NMjr_i_tr`];-raPk>rbMLQrc\9frdk'(rf-oBrgWn[ri5t$rjMg@rl"fXrm1Smrn%/,ro3q=rp'LM +rp]pZrq69brqcWkrr)`nj8\';rr2oqrquclrqHEbrpp'Xrp9XKroF(;rndY+rmUkmrl>#UrkAB=riZ7! +rh07ZrfmD@reCE&rd+Qdrc%jOrau.=ra#M+r`B(sr_WShr_*5^r^ZrVr^?NKj$M*XJO"cOJO#MdlpCA3 +qa:?Nr^HfVr^m)^r_EGhr_i_sr`];,raPk=rbDFOrcS3drdb!&rf$i@rgNhZri#h"rj;[=rkeZTrm1Sm +rn%/+ro*k;rosFKrp]pXrq69brqcWkrr)`nj8\';rr2oprql]krqHEbrpp'Wrp0RJro="9rn[S)rmLek +rl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau.rgEbXri#h! +rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWkrquZmj8\';rr2oprql]krq??`rpg!Vrp0RI +ro3q7rnRM'rmLekrl+lQrk/69riH*rrgj%TrfR2:re19#rce?_rbqdLrac"9r`oG)r`/qpr_NMer^m)[ +r^QlUr^?NKlpA`XJO"cOJO#2[og8=_9rb2:LrcA'_rdXp# +re^W:rg3VTrhf[srj)O9rkSNPrm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmj8\';rr2oprqcWi +rq??_rp]pTrp0RIro3q6rnIG&rmC_irl"fNrk&07riH*qrg`tRrfI,8re(3"rcS3\rbh^Jrac"9r`oG) +r`/qpr_NMer^m)[r^QlUr^?NKnj<4>a$>2@JO"cONBmJ/pd4X?qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/) +ra>_9rb)4Jrc.p[rdXp"reUQ8rg*PRrh]UpriuI7rkSNOrltGirmh#&rnm_7roj@HrpKdTrq-3`rqZQj +rquZmj8\';rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrji$4ri5snrg`tQrf@&6re(3! +rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r^"IfJO"cOJO#)Xr^$EJnj<=CqaCEQr^ZrZ +r_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureLK6rg!JQrhTOnrilC4rkABLrlkAgrm^r%rnm_7roj@H +rpKdTrq-3`rqZQjrquZmj8\0>rr2oqrquclrqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8rp'LNrp]pYrq69drql]mrr)iqj8\0>rr2oqrql]krqZQdrq$-YrpKdNroa:>rndY. +rmUkmrlb;Xrk8<@rilC$rhBC\rfmDCre:?%rd4Wcrc%jQral(rp'LNrp]pYrq69drqcWkrr)iqj8\0>rr2oqrql]krqZQdrq$-Y +rpB^Lroa:=rn[S-rmLekrlb;Xrk8rr2oq +rql]krqQKcrq$-Yrp9XKroX4rr2oqrql]krqQKcrq$-Yrp9XKroO.;rnRM+rmC_irlP/Urk/6=riZ6urh07Xrf[8?re(3" +rd4Wbrbh^Nrac"9ra#M*r`/qpr_WSgr_*5\r^QlUpd=L:qa&.cJO"cOJO"uUr^$NMnj<+=r^HfUr^Zr\ +r_rr2oqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+= +r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ +ro!e;roj@Jrp]pYrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rmC_irlP/T +rk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cO +KL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNT +rltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+ +rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L: +^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_rdOiurf$i=rg3VWrhoau +rjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Wrp9XJ +roF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[ +r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_rdOiurf$i= +rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKb +rpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qp +r_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_ +rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oq +rql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,urd+Qarbh^MraYq8 +ra#M)r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8 +rbDFMrc8!ardOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iq +j8\0>rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qa +rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yo +r`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3b +rqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0 +re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[ +r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ro!e;roj@J +rp]pYrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Xrp9XKroX4re19#rd+Qarbh^Mrac":ra,S+r`/qpr_NMer_!/\r^QlUpd=L:qa&.cJO"cOJO"uUr^$NM +nj<+=r^HfVr^d#\r_3;er_`Ypr`K/+raGe:rbDFMrc8!ardXp#rf-o?rg3VXrhoaurjMg=rkSNUrm(Mk +rn7;,ro!err2oqrql]krqQKcrq$-Yrp9XKroX4rr2oqrql]krqZQdrq$-YrpB^L +roa:=rn[S-rmLekrlb;Xrk8rr2oqrqucl +rqZQdrq$-YrpB^Lroa:=rn[S-rmLekrlb;Xrk8rr2oqrquclrqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8 +rp'LNrp]pYrq69drql]mrr)iqj8\';rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrji$4 +ri5snrg`tQrf@&6re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r^"IfJO"cOJO#)X +r^$EJnj<=CqaCEQr^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureLK6rg!JQrhTOnrilC4rkABL +rlkAgrm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZmj8\';rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM& +rm:Yhrl"fNrk&07riH*qrgj%SrfI,9re(3!rc\9]rbh^IraYq7r`fA'r`/qor_EGdr^m)[r^QlTqa9^: +qa&7fJO"cOJO#2[r^$_9rb2:LrcA'_ +rdXp#re^W:rg3VTrhf[srj)O9rkSNPrm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmj8\';rr2op +rql]krqHEbrpp'Wrp0RJro="9rn[S)rmLekrl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau.< +r`oG*r`9"rr_NMfr_!/\r^ZrVr^?NKj$M*XJO"cOJO#MdlpCA3qa:?Nr^HfVr^m)]r_rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWk +rquZmj8\';rr2oprql]krqHEcrq$-Xrp9XLroF(;rndY*rmLelrl>#UrkAB=ric=#rh07ZrfmD@reLK( +rd+Qdrc%jPrau.rbMLQrc\9frdk'(rf-oBrgWn[ri5t$rjMg@ +rl"fXrm1Smrn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nj8\';rr2oqrquclrqHEcrq$-YrpB^NroO.= +rnm_.rmh"prlY5YrkJHArj)O*rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Y +r^HfSpd=11cp3.IJO"cOQ9ae'qa1'Fr^?`Sr^QlYr_*5ar_NMkr`&l!r`fA/rac"Brb_XTrce?hre(3, +rf@&Frgj%_riQ1*rjVmArl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oqrqucl +rqQKdrq-3ZrpKdProX4?rnm_0rmq(rrlb;[rkSNDrj2U,rhKIarg<\Hreg].rdOilrcA'VrbDFDra>_1 +r`T5"r_i_kr_$Lr^QlW +r^m)^r__c=2rr)iorql]jrqQKdrpp'WrpB^KroO. +ric="rhBC_rfd>Breg]*rd=]hrc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTog@Y(r^#F,JO"cO +JO$%sr^#I/r^-KLqaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#h" +rjMg>rl"fXrm(Mmrn7;,ro*kc=2qu-NlrqcWhrq??^rp]pTroj@C +ro3q5rn7;$rm1Sdrl+lNrj_s5ri5snrh'1TrfI,;rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_*5] +r^ZrWr^?EHi'R<,i]r&[JO"cOW'L>Jh*V*-qa:6Kr^QlWr^d#]r__8rbDFLrc.p_ +rdOiurepc;rg!JTrhTOnrj)O5rkABNrlY5drmh#$rn[S5roX4DrpKdTrpp'^rqQKhqu$Hlh>c=2qu-Nl +rqcWhrqHE`rpg!VrosFFro="7rn@A&rm:Yfrl4rQrjr*8ri?$prh'1Vrf[8@re(3"rd4Wbrbh^Nrac": +ra5Y,r`/qrr_WShr_3;_r^d#Xr^HfSpdc=2rr2oqrquclrqQKerq-3[rpTjProj@Bro!e2rn7:trlkA`rkSNFrjMg/ri#gjrgNhN +rf@&5rdt,urcS3[rb_XIraYq7r`];&r`/qor_EGer^m)[r^ZrWr^HfSpdc=2rr2oqrquclrqZQgrq-3\rpTjRrosFE +ro!e3rn@A"rm(MdrkeZJrj_s3ri5snrg`tRrfI,9re(3"rce?_rbqdLrac"9r`oG*r`9"rr_WShr_!/] +r^d#Xr^HfSpd_:rb2:L +rcA'_rdXp#re^W9rg*PRrhTOnrilC3rkABKrlb;ermLf"rn[S3roX4ErpB^Rrpp'\rqQKgrqcWlrr)iq +h>c=2rr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC&rhf[drg<\Jrepc0rdaun +rcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>%r^#a5JO"cOJO$A'r^#@,qa:6Jr^H]Rr^m)] +r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1SmrnIG/ro*k> +rp'LMrp]pYrq-3brqZQirr)`nh>c=2rr2fnrql]krqZQerq-3[rpTjProj@Aro!e3rmq(srm(M_rk\TI +rj2U-ri,mirgWnPrf6u7re(2trce?^rb_XJrac"9r`oG*r`/qqr_NMer_!/]qa^WTr^?dKRqu-Nlrql]krq??`rpg!Vrp0RJ +roF(;rndY+rmUkmrl>#UrkJH?rilC&rhBC_rg3VGrepc0rdOilrcJ-XrbDFFraGe4r`fA&r_remr_EGd +r_!/\r^ZrWpdFmEe3`dmJO"cOJO$e3e3`ptr^?WOr^QlWr^d#\r_*5cr_WSnr`9#&ra,S4rb)4GrbqdX +rd"Klre:?/rfI,Grgj%_ri?%&rjDa?rkn`Urm1Smrn%/+ro*k;rosFKrpTjVrq-3`rqcWkrqucoqu5FO +gAh0Orr)iorql]krqHEbrq$-YrpB^NroO.>rnm_/rmh"prlY5ZrkSNCrj2U,rhTOcrgNhKrf-o5rdaup +rce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKPpd$Kr^?`Sr^QlW +r^m)^r_EGhr_i_pr`B)(ra5Y6rb2:Irc%j\rd=]qreUQ4rfR2Krh'1criZ7+rj_sCrl+lZrm:Yprn@A/ +ro3q=rp0ROrp]pYrq69brqcWkrqucorr1XOfDkjLrr)iorqcWgrq??`rp]pTrp9XIroF(:rnRM*rmUkk +rlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6r`];&r`/qor_EGer_!/]r^d#XqaLKP +og?tjr'Gs"L-U;TbWs-6qa:6Kr^H]Rr^d#[r_!/ar_NMir`/r"r`];.raPkAre:?&rdFcgrc8!Urb)4@ +ra>_1r`T5%r_i_lr_EGcr_!/\pdY$Hqa8Upr'Gs"L-U;TbWs-6r^6HKr^QcSr^d#[r_*5cr_WSlr`B)% +r`oG1rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^Srpp'\ +rq??drqcWkrr)`ngAfe)rr2oqrqucmrqZQfrq69]rp]pTrosFFro="8rn@A&rm:YgrlG)Srk&0;ric=" +rhBC\rg!JDreUQ,rdXolrcJ-XrbDFEraPk6r`fA(r_reor_NMfr_!/]qa^WTqaLKPnjCtpr'Gs"L-U;T +bWsH?ogAUEr^HfUr^QlWr^m)^r__2r`fA& +r_r\jr_EGdr^m)[r^ZrWqaLKPnjD(sk_rndY/rmh"qrltG\rkSNGrj2U- +ri5sjrg`tSrf@&9re:?$rd+Qdrc%jQrb;@Ara>_2r`K/"r_renr_NMfr_*5_r^coVr^QcRqaC_8rb;@Jrc%jZrd+Qnre:?/rf@&F +rg`t\ri5t#rj2U:rkSNOrltGirmh#&rndY5roa:GrpB^Rrpp'\rqHEfrqcNirr)`ngAf\&qu-NlrqcWh +rqHEarpp'XrpKdOroj@@rnm_1rmq(srm1Sarkn`MrjMg2riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLD +raPk6r`fA'r`/qqr_`Yjr__3r`oG)r`9"tr_`Ykr_EGer_3;ar^m)[ogedHi^JDeJOP,YW($JNogf!Pr^m)^ +r_3;cr_EGgr_`Yor`9##r`oG/ra>_;rb;@Krc.p[rd"Kmre19-rf@&CrgNh[rhf[qrj2U6rk8#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"r +r_`Yjr_WShr_3;`oh#-Rpda=5JOY2[JOZS-pdb3PqapZWr_3;cr_WSir_`Ymr`9##r`];.raGe9rb2:H +rc%jYrd"Kkrdt-*rf-o?rg<\VrhKIlric=/rk&0Frl>#]rm:Yprn7;,ro*k_ +JOm[Lj%9,?r_*#[r__3r`];'r`9"tr_reor_WSir_E5_r_26CrCVW5JP(Jc_b/r^qb6cZr_EGgr_WSlr_req +r`9##r`];-ra5Y5rau.CrbVRPrcA'_rdOitre191rfR2Erg`t\rhTOqrj)O3rkABKrl4r_rmC_qrnIG/ +ro*k>rosFJrpTjVrq$-_rqHEfrqcWkrr)`ndJqMlrr2oqrqucmrqcWhrqHEarpp'XrpB^Mroj@@ro!e4 +rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7re19$rd=]hrc8!WrbVRIrac";ra5Y2r`fA)r`9"u +r`&kpqbd5er_NMir_NDdnkJaMJP:VgJPKrh'1bri#h"rj;[8rkJHNrlP/crmUktrndY4ro3q@rp'LMrp]pYrq-3a +rqZQirql]mrr)`ndJqMlrr2fnrquclrqZQgrq??`rpg!Vrp9XMroO.=rnm_/rn%.urm(Mbrl"fNrjr*: +riZ7"rhKIbrgNhOrf@&9reCE&rdFclrcA'YrbqdNrb)4Ara>_4ra,S.r`];(r`B)"r`/hor_iMgr_V]P +JPUhmJPWFEqb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhY +rhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hlqu5"CcN!e@rr)io +rqcNfrq??`rpp'XrpKdProa:Bro*k4rn7;$rm:YgrlG)Srk/6@riuI)ri,mjrgj%VrfR2?repc.rdaur +rce?arc.pTrbMLIrac";ra>_4ra#M.r`];(r`Jqrpf.,hkYct0JPq%sX&Apqpf.#hr`K/&r`];+ra#M1 +ra>_8rac"BrbMLNrc.pZrce?irdb!#repc9rfR2Jrgj%^ri,n!riuI5rk8_4qd'2+qcWo# +qcEbtk#M@ZJQ.2"JQ0Ndk#M:Zr`Au!r`T,'ra#M1ra>_6rac">rb)4IrbqdTrcS3crdFcrre19+rf@&A +rg!JRrh9=eriQ1)rj;[rnm_1rmq(srm1Sbrl"fOrk&0B +repc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4ra,J-r`o"uoih;sJQ[P,JQ]lnnlk]jqcs,+ +qd080ra5Y4raGe:ral(ArbDFKrbqdTrcJ-`rd=]ordk')repc:rfd>Krgj%_rhoasriuI2rk&0Frl+lX +rm1Smrmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]mrr)`nbQ#ccq#:9jrql]krqZQgrq??`rpp'W +rpKdOrosFBro*k5rn.5#rmC_hrlG)VrkABCrjDa0ri?$qrh07\rgEbKrf@&;reCE)rdXoprd"Kdrc.pV +rbh^NrbDFHqdob;raPb5ra>V1oj72prEOnYJR!b2_d)k?nm;<&qdBD3qdTG5ral(CrbDFJrbh^Rrc.p\ +rcnEirdXp"reCE2rf@&ArgEbUrh07fri?%&rjDa9rkABLrl>#^rmC_qrn.5,ro!e9rosFJrpKdSrpp'\ +rq??crqZQirql]mq#8J:`W,r:rr)iorql]krqQKerq-3\qsaUPrp'LEro="8rnIG(rmUknrlb;]rkSNG +rji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^PrbDFGrb)+>rabn9raPG,nR-oU +JRF%:Zs`Q8qdTP7qdf\;rb)4ErbDFLrbqdTrc8!ZrcS3erdFcrre(3*rf$i;rfd>Irgj%]rhKInric=, +rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]mrr)`naT'6Zrr2fnrquclqt^6c +rq??`rp]pTrpB^KroX4?ro!e2rn7;!rm1Sgrl4rSrkJHCrjDa0ri?$qrhBCargNhQrfI,>rf$i2re(3" +rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2rau+?JRsCDJRu`1qe#D3qe5tCqeH+GrbVRNqelCP +rc.pYrcS3crd4WnrdXp"reCE2rf6u>rg3VRrh'1arhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2ro="? +roj@KrpTjUrq-3_rqHEfqtg3frr)`naT'6Zqu6TnrquZjrqcWhrq??`rpp'XrpKdMroj@Dro*k6rnRM( +rmUkmrlY5[rkeZJrj_s7ric=%ri#girgs+Yrg!JHrf@&;re^W/rdk&urdFclrcnEdrcJ-\rc8!Xrc%jT +rbhUMrbV.@rbD1AJSB[LJSDo6qeGe>qeZ7KqelCOrc%jVrc8!ZrcJ-`rd"KhrdFcqrdk''reUQ4rf@&A +rg!JPrgs+_ri#gsric=.rji$ArkeZSrlY5drmUktrnRM0ro*k=roa:FrpKdTrpp'\rq??dqtg %APLeod +EI +106 0 0 13 58 355 cm +BI +/Width 318 +/Height 39 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +_Z0W7q#13irql]krqQKerq-3\rp]pUrp9XMroa:Aro!e4rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sp +rh07^rg`tRrfmDErf@&;reg]0re19'rdautrdOiprd=]lrd+Qhqfr*arc\0]nT9>(JTQHbZul:irc\9b +qfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJrg`tZrh07fri,n"riuI1rji$CrkeZRrlkAe +rmC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-Ek_Z.LQq#:0hrquclrqZQgrq69_rpp'X +rpKdQrosFFroF(:rn[S-rm^qprm1Scrl4rSrkABCrjVm4ric=&rhf[irh'1\rgNhRrf[8Brf6u:reg]2 +reCE*rdt#uqg\TnqgA9fl[",.JU2lnZ$QCrpjE'hqg\Tqrdk'#re19*reUQ2rf$i:rfI,Brg<\Rrgj%\ +rhKIiriH+&rj)O4rjr*CrkeZSrlP/crmLeqrn@A-ro!e:roX4ErpB^Qrp]pXrq-3_rqQKgrqcNirr)Wk +_Z.:Krr2fnrquclqt^6crq??`rpg!WrpTjOroj@Dro3q7rn[S*rmh"qrm1Sdrl>#SrkJHFrjMg4ric=& +ri#gmrh07^rgj%Urg!JHrfI,?rf6u9reg]2qh>$&rdt#uomlI[JU`6#JUb.Ynpp^jqh"]ure:?-re^W4 +rf6u=rfI,Crg*PNrgj%\rh07eri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r!rn[S3ro3q>roj@HrpTjU +rpg![rq69brqZHfqu$Hlqu4A1\c;[.qu-Nlrql]krqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLem +rm(Marl+lQrkABDrj_s5rilC)ri,morhKIcrgs+[rgEbPrg!JGrfR2@rfI,>rf-o9repZ2re^W1qhO]r +JVJ`1JVLOdreLK/re^N0repc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJ +rl+lXrm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\rq??crqQKhrql]mrr)`n\c95?rr2fnrqucmrqcWi +rqQKerq69_rpp'XrpKdProj@DroF(:rn[S-rmq(trm:YgrlP/[rk\TKrk/6?rjDa1ric=%ri,morhTOe +rh'1[rgWnTrg<\NrfmDGrf[8CrfI,?pl>-/oSe?[JW,/=\r?EDpl>?7rfI,Arf[8ErfmDJrg3VPrgWnX +rh'1`rhTOjri,muric=+rjDa8rk/6Erk\TSrlP/`rm:Yormq)&rn[S3roF(@roj@JrpB^Srpp'\rq69b +rqQKgrqcWkrqucoqu4/+\c;[.q#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4rn7;&rm^qo +rltGcrl+lSrkJHHrjr*kl0lHn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirji'8s8N#prVl`lqu6Hkp\smc +p&=R^o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:i +U]."bT_P/YT(nlHSG\n.RtdD`S'7AdSGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F +_>_@OaSs?]cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\XgdqtpF$X8]*tW;ELlVYd4hV"g_aU@b.1Tn/ngTt6rpUAL_bV#."fVYd:jW;`dqX8]4"Xo>O'Z2V'. +[JmZ7\Gj/?^AbqI`;[dUaSsE_cMl2iec+2"g&Be+hYuL5jSn<@kl0rJmJcVSnc&.Zo`"R`p\sseqYpBh +r;QZirjMj2s8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25h +bPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>EsX8]-oWV!-?W.CmuW4Jr&WV`^mX8]4"Xo>L& +YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Z +o`"O_p\sseq>U6iqu6NmrVQSus02P&rq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b( +f)F+sd/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z2LnXY^s$0Yf!^@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAOo)A:Y +pAXgcq>:$cr;6HirilF,s7lTjrVl`lqu6Hkq#:$epAXaao`"F\nG_kTmJcDMkl0cEjSn0"e,I_ncMl)fb5TN^aSs0X`;[[R_#D+G^AbhF]_K)8\bio)[fNtIJ[U3>J[WS,o!e;%rjhg8rk/6D +qnE'ErkSNNrl"fTrlG)\rlY5brm1SjrmUksrn%/&rnIG/rnm_7roF(ArosFIrpB^Qrp]pXrq-3_rq??c +rqQBerqlTjrr)WkYlCa'rr2]krqucmrqcWirqQKerq??arq-*XrpTjSrp0RJroX4@ro="9rnm_3rnIG* +rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrkeZNpqZmDrkSNJrk@^3!PQ0t]S!kJ]Z.VN^&,PC_#D+D_#D1L +_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[p&=[ap\sse +q>U6iqu6NgrVQSrs/5nrrq66hr:p-fq#:$epAX^`o)%qUn,DbSli-2Kkl0]Cj87d6hYu@1g]#q+f`'G# +eGdnqd/2/gcMl)fbl5fbb5TNXa8X*U`TtJ*`.>gq_h#_d_p64"`V[[Ma8X3[b5TT`bl5ldcMl/ed/MJm +e,Insf`'S'g]$%.hYZ71j8S0>kl0iGlhg,InG`%Yo`"R`p\ss_qYU3frVQSls/5nlrqlZnr;6BjqYpU0gp\smcp&=R^o)A1YnG_nU +mf)MNl2KoGjo4??j87g7hu;L3h#?(-g&BY'f)F5!eGI_odf.Yed-8mTc@O8lc@O9YcKrmJd/MGldehMm +eGe"tf)F;#g&Bb*h#?10hu;R5iVqm:jSn9?kl0iGlMg5Nn,DhUnc&+YoD\F^pAXgcq#:*gqYpBhr:p6f +rhTRcs8N#jrVl`lqu6Hkq>U0gp\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?U-fpAXa[oD\7Yn,DbSmJcJOlM0T?jo4?? +ir7p6i;;F/h>Z4)g]#pgg%3mJfT4[9f[\X.g&'Lug\]e*h>?+,i;;O5jSn6>jnS'=lMg,KmJcPQn,DhO +oD\F^pAXgcq>:$fqtU*grUp/]s-Wi`rq66hr:p-fq"sg_p&=U_o)%tVnG_nUmf)SPli-2KkkjQ?jo4?9 +iq;7&htu9uh1=C5h1=Ckh=]Y%ht#_#iqqg9jo4H?kl0lHli-8Mmf)\SnG_tTo)&(Yp&=^_q"X^_r;6Hc +rgWqQs7lTgrVl`lqu6Hhq>U0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&Ckl0`Djn7^0j7VF+iITs= +iITt'iUZ"'j7VL4jo4E;kl0iGlMKoHm/HDLmf)_Tn,DkVo)&(Yp&=^_q#:*dqYpBhr:p6crg!MKs6os^ +r;6BjqYU*fq#:$epA=O^o`"I]o)A1Yn,DhUn,DbPmJcJLli-2Hl1O9;kORd0jalNEjalO/jm;./kORj9 +l20cFlhg&JmJcPQmf)_Tn,DkVo)A7[o_\=\pAXg`q#:*dqYpBer9sWMs,@!QrqQHkr;6BjqYU*fq"sgb +pAXa^o`"I]o(_bSnFc8LmecDKm/H>JlLO33k^hrKk^hs/kk438lMg,Em/HDLmecJMnG_tTnc&+YoDA1Z +p&=[ap\Xabq>:$fqtpnG_tTo)A7[o`"L^p&"I[p\sseq=sgcqtp9s= +p\jf:p4;pgp;?UXp\"=\q=XU]qYpBbr:U$`rdk+>s+14?s6TaarUp*Wqu6H;q>L)>pjr3kpqumSq>:$] +qtp9`r;QZ]rdk+>s+140s82f[rV6<]qptUpqLSKoqO.3QqtU*grU9^Xrdk+2s+13ss760:rUKf:r.4cs +r3ZCRrV6Bbrdk*us+13ss2G!*rIOourIOpVrQG35rdk*us+13Os471#rdk'"rgEcMs+13js+13$s+13$ +s+13$s+13js+13$s+13$s+13$s+13js+13$s+13$s+13$s+13js+13$s+13$s+13$s+13js+13$s+13$ +s+13$s+13js+13$s+13$s+13$s+13js+13$s+13$s+13$s+13js+13$s+13$s+13$s+13js+13$s+13$ +s+13$s+13js*t +~> %APLeod +EI +379 0 0 62 0 262 cm +BI +/Width 1137 +/Height 186 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QK)YiMJc:6"Jc:6"q#5jEMZ88-JcC<$ +JcC<$JcC<$JcC<$JcFR+Jc;MFJc:6"e,FpuYQ'1RJcDnQJcD):m/@"`Jc1/uJc1/uq#0IVJcDJEJcC<$ +JcC<$JcC<$JcC<$JcC<$o)J(UJc2GDJc1/ue,AP1JcEdjJcC<$Y5a(QWW2Pgkl'fFJc(o5Jc(N*p&3qL +m/DS9[/Y^WJcC<$JcC<$JcC<$JcC<$K`D&Np&jN6m/?VTq"sa\rqZNfJbXfkJbXfkp%\O^p%nI\o)/(Wqu20H +ao?qlJcC<$JcC<$JcC<$JcC<$SH&Tfm/?q]q#'pap%n[`JbYu7JbXfkd.mV9p%nI\o)/(Wqu20Hmf.k< +JcDnQJcEmmq#9j_qu$?gn+uqWqtU$^hY2TpV"TB5SG)+>p%S.SrqZ$ZrqlBdp&4[bJcF0uJcC<$JcC<$ +JcC<$JcC<$JcDSHq#9j_qu$?gn+uqWqtSe;JbI4ZJbFZgp\*>8p%\O^n,!%\p&+L]q#5jEp]#gEJcDnQ +JcF=$qu60brquHdqtg3crqQ0\qtBp[p[n:Rn+2,$S+;.$POe26n+?VPp%J:WqtU0dp%nR_qu$-cp&9OB +iW"K/JcC<$JcC<$JcC<$JcC<$Z2a_#o)8Rcp&"X_qt^6dp%S@Wqt9FMn+2,$_"*'IJb&7"n+6#?rq5sX +qtL!_rqZ6`qtp9gp&4R_LAui)JcDnQJcFF'rr2BbrquQgrqcWip%\O\q"F^[qt0dWp[S@Uo',[qn=/ou +n<U6cqtp<^rVleNs+13$s/uBQ +s4mYRrpp$er;6BdqYpnG_tTo)A7Xo`"O\pA=U`q#:*aqYpBhr:U$cre^Z+s+13Qs+143s7lTg +rVl`lqu6Hhq>U0dp\smcp&"C\oD\=Unc&%Nn,DbPmJZAPm-O`;qs*b:J`rTeJ`r<]p$)A=rp'LKq!A"I +qsO@MqsaCNrpp'[qt0m\rq??cqtU0dqtgrTF:Gkjmp3k(2W`jalNWjnS!5kPjZ;kl0i>li-8MmJH>NnG_nUnb_nVoD\CW +pAXgcq#:*dqYpBhr:U#>s6]i;s+13$s+13$s+13$s+13$s1n[*rVl`lqu6Hhq>U0apAX^`oDA+Xnc&"V +nG_nUmf)VQm.K]Al20]8kP41jjhTu/jalO]jnS!2kOn'U0dp\XX_o`"F\nc&"VnG_nU +mf)VQm/-,JlMg&Ckl0`Djn7^0j7VD_iPXW*iITt[iUZ"'j7VL4jo4E;kl0iGlMKoHm/HDLmf)_Tn,DkV +o)&(Yp&=^_q#:*dqYpBhr:p6crgWq=s+13Qs+14?s82fgrVl`iqYp9ep\XX_o`"FYnc&%Wn,DbSm/H>M +lMg#EkPOB?jS7a/huVcop##Z'J_cUIJ_cFDp"o]*rnm;)pu;23roO.Bqrn%Erp0RMrpKdSrp]pWqssXV +rq69bqtTs_qu$?ip&9OBr;V?JJcC<$JcC<$JcC<$JcC<$bl@S>p&4mfq"k!bqtL!\rq-3\qsj[TrpTjS +rp9XMrp'LHqrdkU9gr:U$frdk+Is+13$s+13$s+13$s+13$s+13rs8N#jrVl`lqtp3g +q"sgbpAX^`oD\=[nGD\RmJcJOli-/Jkl0cBjo4??ir7p6i;VX5hY#\'g[a(qfn%ekfR_\+f^@Dkg$dYo +g\'A!hYZ7.iqqg9jo4HBkl0iGli-8MmJcSOnG`"XoD\CZpAXg`q#:*gqtpMlMg#HkPjTBjSRp8hu;R5hu;L3h##k$f`9Y*f\$)Q +n($RMJ^_'VJ^^dNk1&kMrn%&"pt>Z$qqV)*ro!e5ro!e7roF(?roX4CrosFJrp9XOqsXORrpg![rq69a +rqHEerqZHfrqlTjqu-EkJc>cNs+13$s+13$s+13$s+13$s+13us8N#jrVl`lqu6Hkq>U0gp\smcp&=U\ +nb_eSmJcJOli-2Kkl0`Djo4?9sdpAXaaoD\=[nc&%Wn,DbSlMg&Ikl0`DjSn3:iVqa6hYu=0g]#n*f`'J$ +ec+(qe,Iepd/_Ped-8l-cD8a:cCE2Hchl)ad/MGldehMmeGe"tf)F;#g&Bb*h#?10hu;R5iVqm:jSn9? +kPj`FlMg5Nn,DhUnc&+YoD\F^pA=U`q>U6iqtpU0gp\smcp&=R^o)A1YnG_nUmf)MNl2KoGjo4??j87g7hu;L3h#?(-g&BY'f)F5!eGI_odf.Ye +d-8l-cH4@_c@O:8cKrmJd/MGldehMmeGe"tf)F;#g&Bb*h#?10hu;R5iVqm:jSn9?kl0iGlMg5Nn,DhU +nc&+YoD\F^pAXgcq#:*gqYpBhr:p6fri6!Ls+13Qs+14Ks8N#jrV69hq>U0gp\smcp&=U_o)A1Yn,DbS +m/H>Mkl0`Djo4<>iqqX4h>Z4/g&BY'f)F5!eGI\ndJhJkd/M>iblGu`bkoT_b(7ZtaaqQkans6[bP9<\ +c2Q#fd/MAjdJMAke,Insf)F;#g&Be+h>?+/iVqm:jo4EAkPjcGm/HGPn,DkVo)A:\p&=[ap\sseq=sj[ +rVleMs+13$s+13$s+13$s+13$s+14&s8N#jrV69hq>U0gp\smcp&=U_o)A1Yn,DbSm/H>MkPjWCjo4<> +iqqX4h>Z4/g&BY'f)F5!eGI\ndJhJkd/M>ic1oN[bPoY8ag]BCaaqRqans6[bP9<\c2Q#fd/MAjdJMAk +e,Insf)F;#g&Be+h>?+/iVqm:jo4EAkPjfHm/HGPn,DkVo)A:\p&=[ap\sseq=sj[rVlers+13$s/uBQ +rrE)urq66hr:p-fq#:$epAX^`o)%qUn,DbSli-2Kkl0`Dj87d6hYu@1g]#q+f`'J$eGdnqd/2/gcMl)f +bl5fbb5TK_a8sB'qoA]Uqo-t$J]#@BJ]#1=cG]_$qo8EOrlG)]rlb;brltGfrm1JgrmLeprmh#"rn7;* +rn[S1qr%J6roO.BrosFJqsO@Nrq$-]rq??crqQ9bqu$?iqu2EOJcC<$JcC<$JcC<$JcC<$JcFL)rr2Th +rquQfrqQKerq??`rposUrpTjSrp0RKroj@Cro>jrmUksrn.5'rnIG.rndP1ro="> +roj@Grp0ILqsaUVrq-3`rqHEeq"jmcqu-EkXoEtPJcDnQKE(rMq#13irql]krqZQgrqHEcrq69_qsj[S +rpKdOrosFFroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`PqnW9Jr4r#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro=">roX4D +rp0ROrpTjUrpg![rq69arqHEerqZQirql]mq#1*hNrO\1JcC<$JcC<$JcC<$JcC<$hZ*TSq#13irql]k +rqZQgrqHEcrq69_qsj[SrpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkprm:Ykrm(MfrlY5]rl>#Wrl"fR +rkeQKqnW3GrkSNJrk@X1J\9=AJ\6QHqRl1.qnE'FrkJ?Grk\KKrkn`Rrl+lWrlP/^rltGfqp>>jrmUkt +rn.5)rndY3ro!e9roO.ArosFJrpKdSrp]pWrq-3_rq??crqQKgrqcWkrquQiqu3r%JcC<$Y5a7Vrr2Th +rql]krqZQgqtL*_rq-3\rp]pTrpB^Mroj@EroF(#Wrl"fR +rk\TLrkJ?Drk&6Cr4Ds>qmlU6o!a1YUpbi_S@7dnrj_s#[rlY5b +rm1SjrmUksrmq)%rnIG/ro!e9roF(ArosFIrpB^Rrp]pXrq$-^rqH#Wrl"fRrk\TLrkJ?Drk/-?rjr!;rj_F+J[W\/J[U-#[rlY5brm1SjrmUksrmq)&rnIG/ro!e9roF(ArosFIrpB^Rrp]pXrq$-^rqHL&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W!sXbPofdci2>ke,Itu +gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQSVs+13$s+13$s+13$s+13$s+142 +s8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS +_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>EsX8]-oWI_"`W.CmuW:$VZWV`^mX8]4"Xo>L&YPYR'Z2V*/ +[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sse +q>U6iqu6NmrVQT&s+13$s/uBYs7lQiqu6Hkq#:$epAX^`oD\=[nG_kTm/H8KkPjTBiVqa6h>Z+,fDa;! +d/M>ibl5]_`W!dS_>_4K^&GSA\,Nf7ZMq-.YPt^(XS]$sW;`[pV?*Qkrh]LfqkN;JJYB3>JYAp6k+_jM +qkX4erh]Ukrhoapql9XrriZ7(riuI.rjDa7rji$ArkJHKrkn`TrlG)_rm(Mirm^qurn7;,rnm_6roO.B +rosFKrpKdTrpp'[rq-3`rqHEeqtgO'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg: +k5OZFm/-8Nnc&.Zp&=[ap\XgdqtpU0gp\sjbo`"C[nG_nU +lMg#Hk5OB>i;VU4g&BV&eGdhoc2Poc`rro!e4rn7;&rm^qo +rltGcrl+lSrkJHHrjr* +JWT_ioo]$4plk]Brg*PMrg<\QrgNhVrgj%]rh'1`rhKIkri,mtric=+rj2U5rjr*CrkJHLrl+l[rm(Mi +rm^qurn7;-ro!e8roX4Drp'LOrp]pWrq-3_rq??drqZQirql]mqu-Ek^]/lbJcDnQP5kO\q#13irql]j +rqQKerq69_rpp'XrpKdProj@Dro="9rn[S.rn%.urm:YhrlP/Zrk\TKrk/6?rjDa2ric=%ri,morhTOe +rh'1[rgWnSrg3VMrfmDGrfR8Dr/pu>rfI,?rf6l8nr/-XVi-+aU5SAsrf-f8rfI,?rfI,Arf[8ErfmDJ +rg3VOrgWnXrh'1`rhKIhri#gtric=,rjDa7rk&0Drk\TRrlP/arm:Yormq)&rn[S3ro="?roj@JrpKdT +rpp'[rq69brqQKgrql]mqu-EkRf@s=JcC<$JcC<$JcC<$JcC<$mJm1bq#13irql]jrqQKerq69_rpp'X +rpKdProj@Dro="9rn[S.rmq(trm:YhrlP/Zrk\TKrk/6>rjDa2ric=%ri,mnrhTOerh'1[rgWnSrg3VM +rfmDGrf[/@rf@&?rf@&=qi10*JW%a1JW#);rJU$$rf-f8rfI,?rfI,Arf[8ErfmDJrg3VOrgWnXrh'1` +rhKIhri,muric=,rjDa7rk/6Erk\TRrlP/arm:Yormq)'rn[S3ro="?roj@JrpKdTrpp'[rq69brqQKg +rql]mqu-Ek^]/lbJcDnQP5kO\qu-Nlrql]krqQKerq??`rposTrp9XLroa:@ro!e4rnIG)rmUknrm(Ma +rl+lQrkABDrj_s6rilC)ri,morhKIcrgs+[rgEbPrg!JGrfR2@rfI,>rf$o:!KN,.LOk2I +L4P)=LAQc*M>iD3MZ/P5N;eh9NrG.>O8b:@P5^aGQi_FQ +aSsKad/MJmfDaM'hYuI4jSn<@l2L&Hn,DnWo`"R`p\sseqYpBkr;QZlrgNkiaSs0X_>_1J]Df>>ZMq*- +Y5YF"VZ*@iT`1P^Sc5&VQi<9LP5^UCO8b7?NrG%;N;eb4MZ/J3M#2sYL:r=mL4P*CLAlu-M#N8.MZ/P5 +N;eh9NrG.>O8b:@P5^aGQi_FQaSsKad/MJmf`'V(hYuI4 +jSn<@lMg/In,DnWo`"R`p\sseqYpBkr;QZlrkJJas+13Qs-U0gpAX^`nc&%Wn,DVO +kl0`Dir7j7h>Z(+ec*tqci2)da8WpS^](nF\,N`5YPtX&W;`XmT`1P^Sc5#UQ2[!HOT(=?NrFt9MZ/G2 +LAlo+KE-T)JqElNomhUCQ%+@7OFQhOrdjruqh4s&reLK0repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+& +rj2U4rk&0Drk\TSrlb;ermC_prn%/)ro!e8roX4Drp'LOrp]pWrq-3_rqHEeqtg3frr)`nT`9TCJcC<$ +JcC<$JcC<$JcC<$nGiLequ-NlrqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2rn%/"rmC_krlY5\rk\TK +rk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUH*re19&qgnEjJUb7\JU`6#l[SJUrdjru +qh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TSrlb;ermC_prn%/*ro!e8 +roX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)`n`W(MhJcDnQR/d0bqu-Nlrql]krqZQgrqHEarq$-YrpKdP +roj@Dro="9rn[S-rmq(srm1Sdrl>#UrkABCrjVm3riZ7$rhf[irh07\rgEbPrfd>Drf@&:reg]3reCE* +re(3$rdaut!.FrtIf"QmI/&'fH@^@/H%C7&H2`-eHi&3iIJ\KmJ,XutJc:<$K`6])M#N;2MuJe:OoCRD +Qii5.K`6W'Jc:3! +J,XooIK"WhHiA>BH+eKSH%C8,H2`-eHi&3iIJ\KmJ,XutJc:<$K`6])M>iD3MuJe:OoCRDQidRqYl:s-\c0;A_#D@Qao9TbdJh\qf`'e- +iVqm:kPj`Fm/HJQnc&.Zp&=^bq#:-hqu6NmrVQShs+13$s+13$s+13$s+13$s+14Ds8N#prVl`oqu6Hk +q#:!dp&=R^o)A+Wm/H;Lkl0WAiVqa6f`'G#dJhGjb5TE[_#D%H])K#7YPt['V>d7hTDk>ZQi<6KOT(7= +MuJG0KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDh2fADLl\VDXME>DuO_TDtn;NEVjeUF8g:\G5c^b +H2`3jIJ\QoKDpT(MuJb9OT(LDQidUrYl:s-])KDB_#D@Qao9TbdJh\qf`'e-iVqm:kl0iG +m/HJQnc&.Zp&=^bq#:-hqu6NmrVQT8s+13$s/uBks7lQlqu6Hkq>U0gpAXaao)A.Xmf)MNkl0`DiVq^5 +g]#e'df.Slao9_.I\c0#9YPtU%W;`RkT)P5YQN!*IO8b+;M#N,-Jc:/uIK"QlGlDpdFT-@\ErL%W +DuFPSDJoGjqeZ.FJSL?_JSL'WrbMCIrbVRNqelCOrc%jWrcA'\rce?erd+QlrdXoure:?-rf$i;rf[8G +rgNhYrhBCiri?%%rjDa9rk8Brf$i4re:?&rdXoqrd+Qgrce?`rcA'Zrc%jTqelCMqeZ.FJSMZ/ +JSKaNj_Fd1ph]qHqelCOrc%jWrcA'\rce?erd+QlrdXoure:?-rf$i;rf[8GrgWnZrhBCjri?%%rjDa9 +rk8#TrkJHCrjDa0ri?$qrhBCargNhQrfI,>rf$i3 +re(3"rdOinrd"KdrcJ-Zrc%jTrbh^PrbVRL!,;OLCAV`EB^BC2Aq=NhAV"E_Ac$*1BDZBAC&;ZEC]8/L +D>S5ME;jkVF8g=]GlE'hIf=irKDpW)MuJb9OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=3]d/MJmf`'\* +i;Vd9k5OTDmJcSRnG`(Zp&=^bq"spbr;QZlri,pKs+13$s+13$s+13$s+13$s7u]orqlZnr;QQiq>U-f +pAX^`nG_kTmJc>Kk5OE?i;VO2g&BG!ci22g`rN;eS2KDpB" +If=]nH2_scFT-:ZE;jeTDZ4MPD#S5LCAV`EB^BC2Aq=O8AV"EDAbTd5B(BU3B`;`CCAr#JD#S;KDZ4VS +EW1%YFoH[cHiAKnJ,Y*"LAm/2NrG.>Qis+13$s/uBns8N#srVl`oqu6Hkq#:$eo`"FYnG_hSlMfrFj8Rs8 +g]#h(e,I_nbPoQ]_#D"G\c/r7Y5YL$V#I%dSc4uTPQ$XBN;eY4KDpE#IK"TmG5cU_ErL%WDZ4MPCAqoG +BDZ9>A,p-;A,]s.@=_gR@"D^F@.dt*@fBm7AH$0>BDuWECAr)LDuO_TErL.ZFoH^dIK"crKDpZ*N;en; +PQ$mISGo2\U].:mYPtj,\Gj2@_#DCRbPolfe,Itug]$+0ir8'=l2L&HnG`%Yo`"Uaq>U6iqu6NmrVQSn +s+13$s+13$s+13$s+13$s+14Gs8N#srVl`oqu6Hkq#:$eo`"FYnG_hSlMfoEj8Rs8g]#h(e,I_nbPoQ] +_#D"G\c/o6Y5YL$U]-qcSc4rSPQ$XBN;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*rY +@(fs!@"D_L@.dt*@fBm7AH$0>BDuWECAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$mISc5;]U].=n +YPtj,\c0;A_#DCRbPolfe,Itug]$+0ir8'=lMg/InG`%Yo`"Uaq>U6iqu6NmrVQT>s+13$s/uBqs8N#p +rVl`oqu6Ejq#:$eoD\=[n,D_RlMg#Hjo46@f'R6?iaYCqd9#&nm-fOUg/IUS6Y_mnm;<&qdBD3 +qdTP8ral(@rb)4ErbMLNrc%jWrc\9crd4Wore(3)repc:rf[8Irg`t\rhoarric=/rji$Brl"fWrlkAh +rmh##rndY5roF(Arp'LMrpTjVrq$-`rqQKgrql]mqu-NnWW.PLJcC<$JcC<$JcC<$JcC<$r;Zcqqu-Nl +rql]jrqQKerq$-[rpTjRrp'LHroF(;rndY,rmh"qrlkA_rl"fMrjr*:ric=$rhoagrg`tTrf[8Arf$i2 +re(3"rd4Whrc\9]rc%jSrbMLJrb2:Cral(>raPb5ra>V1oj72pJR$<%JR!b2pK[Asnm;<&qdBD3qdTP8 +ral(@rb2:FrbMLNrc%jWrc\9crd4Wore(3)rf$i;rf[8Jrg`t\rhoarric=/rji$Brl"fWrlkAhrmh## +rndY5roF(Brp'LMrpTjVrq$-`rqQKgrql]mqu-NncMrIqJcDnQV#UGnqu-Nlrql]krqQKerq??_rpg!V +rp0RJroa:>rnm_1rn%.trm1Sbrl"fOrk&0Brepc3rdt-!rd=]ircJ-YrbqdP +rbDFGrau.?qdKJ2ra>_4ra#S1r*B;,nltcjJQ\dOJQ\LGnlk]jqcs,+qd080ra5Y4raGe:ral(Arb;@J +rbqdTrcJ-`rd4Wnrdk'(repc:rfd>Krgj%_rhoasriuI2rk&0Frl+lXrm1Smrmq)'rndY5roa:Frp0RP +rpg!Zrq??crqQKhrql]mrr)`nXT*kOJcC<$JcC<$JcC<$JcC<$!WW3!rqlZnr;QTmqYp9hp\smcoD\:Z +n,DYPl2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP20N=ijft=b0`M=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZF +D#SAPE;jtYGQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L([f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#J +n,DkVoD\I_p\sseqYpBkr;QZlrmCass+13Qs.o\orqlZkqu6Hkq#:!do`"C[n,D_Rkl0`Dj8S!9h#>t* +df.Slbl5Q[_#D%H[JmE0Xo>0rT`1M]QN!'HO8at7K`6N$IK"KjFoH@ZDZ4MPB`;WCAH$$:@/aO1?2e++ +=oDG'=BPQ(r`8/]JQ/FEJQ/.=k#M:ZqcEc!r`T,'ra#M1ra>_6rac">rb)4HrbqdTrcS3crdFcrre19+ +rf6u@rg!JQrh9=eriH+(rj;[;rkSNNrlb;drmC_srnIG1ro="?roj@KrpTjVrq-3_rqHEfrqcWkrr)`n +XT*kOJcC<$JcC<$JcC<$JcC<$!WW3!rqlZkqu6Hkp\smco`"C[n,D_Rkl0`Dj8S!9h#>t*dJhJkbl5NZ +_#D%H[/R-qT`1M]Q2ZsGO8aq6K`6N$IK"KjFoH@ZDZ4MPBDuNBAH$$:@/aO1?2e++=oMP#=8l7_ +BDucIDuO_TFoH[cIK"crK`6c+O8b=AQ2[?R +U&LkeXo>U)[/Rc<_#D7Nbl5oedJhetg]$.1j8S3?kl0uKn,DkVo`"O_p\Xgdqu6QkrmCass+13Qs.o\i +rVl]nqYp/ +Jc:,tGlDjbEW0kTC]8#HAc?0<@/aO4>lIt)=o2>#Q.q-?iFI4A,^$_LSbPolf +ec+8$h>ZC4jSn<@li->OnG`%Yp&=^bq#:-hqtU,ks+13$s+13$s+13$s+13$s+11Ns8Vlmrql]krqZQf +rq69^rp]pTrp9XHroF(;rn[S,rmh"prlkA_rk\TIrji$4riH*trh9=^rgEbKrf6u8re19%rdOikrcS3[ +rbh^Nrb2:AraPk7ra5Y0r`f8&r`K/$r`8eor`&>bpelZ?a\dUdJPl/=pepQZqc*Gmr`9#"qcNi#r`fA- +ra5Y4raYq_4ra,S.r`];(r`B)" +r`/hor_iMgr_S/AYtopHJPY9$qb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]q +reCE1rf@&DrgNhYrhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hl +qu54IJcC<$Y5bF"rr2oqrqucmrqcWhrqHEarpp'XrpB^Mroj@Aro!e4rn%.urm1Scrl"fNrji$8ric=# +rhTOcrgEbMrf@&8re19$rd=]hrc8!WrbVRIral(h;Z9YpZ@3ir8-?lMg2MnG`%Yo`"Uaq>U6iqu6NmrVQT"s+13$ +s+13$s+13$s+13$s+::Mrr2lqr;QTmqYp9hp\sgao)A.XmJcDMkl0T@i;VU4f)F.tci2&c`;[ON\c/u8 +YPtL"V#I"cR/W?LO8at7K`6N$I/\?hErL%WD#S,IAH$';?iFC2>Q.e)X2h:]=2i:]!oX +9n?!R9S#lg9^YUI:%_9\;#X8f;#X>h;Z9YpU6iqu6NmrVQTGs+13$ +s/uC%s8N#prVl`oqu6Ejq#:$eoD\=[n,D\Ql2KiEi;VR3g]#b&d/M;h`rZ2Um)V>d.eSGnfQ +OT(4br_2uXJP*:AJP(Jchb*c=qb6u` +qbI,dqb[8hr_reqr`B)$r`T5+ra5Y5ral(BrbVRPrcA'_rdOitre190rfI,Drg`t\rhTOqriuI1rk8Je-8=W658cDk +<;ons=8lD&?2e41@K'j;B`;lJE;jqXHN&BmJGtB(NW,%=R/WZUT`1qiY5Ya+])KJD_Z%^Wci2Alf`'\* +i;Vg:kl0lHmf)_To)A@^p\sseqYpBhrVlf%s+13$s+13$s+13$s+13$s+ULPrqlZnr;QQlq#:$epAXX^ +nG_kTlMfuGjSn*:h#?"+df.PkbPoBX^AbbDZMq$+WrA[jSGnrUOT(4i&)IK"TmF8g.XD>n5JAc?-; +?iF=0>Q._'sDk:]=,g:&@W]9E%QA8V'FS8:a<_8G>[88c)-Z9DD3[:&[oe:]=2i;>sPoQ.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoiedf.r!h#?72jSnBB +lMg5NnG`"XpAXgcq#:-hqtp?krn%1$s+13Qs/l>#rqlZnr;QTmqYp9hpAX^`nc&"Vm/H5Jjo46Z+, +ec*qpbPoQ]_#CtF[JmB/WW&[lT)P,VP5^I?L]2o)IK"KjFT-7YD#S,IAH$$:?iF7.=T2A#;Z9Pm:]=2i +:B!rd9(bdS8-)7PqaZ3,M+3%cJO]<&r^coXqb$i]r_#R +rk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WShr_3;`oh#-R +pd]m)Y"!t3JO\Eapdb3PqapZWr_3;cr_WSir_`Ymr`9##r`];.raGe9rb2:Hrc%jYrd"Kkrdt-*rf-o? +rg<\VrhKIlric=/rk&0Frl>#]rm:Yprn7;,ro*kJOJ]iogSXFr^ZWPr^m)] +r_*5ar_EGgr_WSnr`/r!r`fA.raGergEbW +rhKIoriuI1rkABLrl>#`rmUktrnIG0ro3q?rp'LNrp]pYrq-3arqZQiqu$Hl[JtgXJcC<$JcC<$JcC<$ +JcCQ+qu-NlrqcWhrqHEarpp'XrpKdOroj@@rnm_1rmq(srm1Sarkn`MrjDa1riQ0prh'1YrfR2>re^W* +rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr_rndY.rmh"prlkA]rk\THrj;[-ri,mkrg`tRrfI,;reCE%rd+Qdrc%jQrb2:@ra5Y1r`K/#r`&kn +r_NMgr_!/]qag]UpdP0MpI!n,i'Mu\_Ei`=]g:@=lpL5/qaCrbMLPrcS3drdXp%repc;rg*PRrh9=iriZ7,rk&0Frl+l[rm:Yorn7;,ro*k>rp'LMrpTjWrq-3a +rqZQiqu$Hl[JtgXJcC<$JcC<$JcC<$JcCQ+qu-NlrqcWhrqHEarpp'WrpB^Lroa:>rndY.rm^qorlkA\ +rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQrb2:?ra5Y1r`K/#r`&knr_NMgr_!/]r^d#Yr^QZO +r^>@*i'Mu\k_7rb2:Hrc%jZrd+Qn +reCE1rfI,Frg`t]ri,n"rj2U:rkSNPrlkAgrm^r$rn[S4roa:GrpB^Rrpp'\rqHEfrqcNirr(RNJcC<$ +Y5ba+rr2fnrquclrqQKerq-3[rpTjProsFDro!e2rn7;#rm1SerkeZKrji$5ri?$qrh'1XrfmDAreLK) +rd=]ircA'VrbDFFra>_2r`fA'r_r\jr_EGdr^m)[r^ZrWqaLKPnjJO$n6r^"Ulpd4X@ +qaCEPqaUQTr^d#[r_3;cqb[8kr`9#%ra,S3rb)4Frbh^Vrce?hrdt-*rf-oArgNhYrhf[qrilC3rk8_2r`fA&r_r\jr_EGdr^m)[r^ZrWqaLKPnjC/Yr]u*#l9KncQpCX:m6]8gogAUEr^H]Rr^ZrYr^m)_ +r_<8dr`&ktr`fA.ra>_&JO$%sh*U[!njECEqaLKRr^ZrYr_!/_r_EGh +r_i_rr`T5+ra>_9rb)4Irc.p[rd=]rre:?2rf[8Jrh'1eri?%)rj_sArl+lZrm1Snrn7;,ro3q>roj@K +rpTjVrq69brqQKirqucoqu45-JcC<$JcC<$JcC<$JcC<$MuWeUrr)iorql]irq??arpg!VrpB^KroO.= +rn[S+rm^qnrlY5ZrkABBrj2U)rh]Uerg<\Krf6u3rdk&srcS3\rbh^Jrac"9ra#M+r`9"rr_WShr_*5_ +r^m)Zr^QcRr^?3Bd6`CLdQi@KJNs3#c9h(hr^?WPr^QlWr^m)]r_*5cr_WSlr`9#$ra#M2rac"@rbh^T +rcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^Rrpg!\rqHEerql]mrr)`n +i;\B.JcDnQYlF_%rr)iorqcWhrq??`rp]pTrp9XJroF(:rnRM*rmUkkrlG)Vrk/6=rilC$rhKIbrg*PG +rf$i/rdOinrcJ-YrbVRGraPk6r`];&r`/qor_EGer_!/]r^d#YqaLKPogA@rnm_/rmh"prlY5ZrkSNCrj2U,rhTOcrgNhKrf-o5rdaup +rce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKPpd_2r`];&r_remr_NMer_!/\r^ZrW +r^HfSogA.6krl"fXrm1Snrn.5,ro*k;rosFKrp]pXrq69brqQKhrql]nrr0P0JcC<$ +JcC<$JcC<$JcC<$NrT+Xrr)inrqcWirqHEbrpp'XrpB^MroF(;rndY,rm^qnrlP/WrkJH?riuI(rhBC_ +rg3VGrepc0rdOilrcJ-XrbDFEra>_2r`];%r_remr_NMer_!/\r^ZrWr^HfSog@4qJO%"9JO"cOmQf8g +ogA^Hr^HfUr^ZrYr_!/`r_NMir`&ktr`];,ra>_;rbDFNrcJ-brdOj#reg]:rg3VTrhBCnrilC0rkJHN +rlP/crm^r"rndY5roF(Drp9XRrpp']rqHEfrqcWkrr)iqi;\B.JcDnQ[f?@+qu-NkrqcWirqHEarpg!V +rp0RIroF(:rn[S*rmLekrl>#Srk8<_1r`T5$r_i_k +r_3;`r^m)[r^ZrWr^?_9rb;@K +rc8!^rd=]treUQ6rg!JOrh07hriZ7,rk/6Irl4r^rmLesrnRM2ro="@rp0RPrpg![rq??drqcWkrr)`n +^AicaJcC<$JcC<$JcC<$JcCl4rr2fnrql]krqZQerq-3[rpTjProj@Aro!e3rmq(srm(M_rk\TIrj2U- +ri,mirgWnPrf6u7re(2trce?^rb_XJrac"9r`oG*r`/qqr_NMer_!/]qa^WTr^?rndY/rm^qorlkA[rkJHDriuI'rhf[drg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMe +r_!/]r^ZiSnjD_0p-SaEJO#8]JO"uUr^$NMi'R*(r^H]Rr^d#\r_3;er_`Ymr`B)&ra#M4rau.ErbqdX +rd"KnreCE1rf[8Jrgs+driH+'rji$Brkn`Yrm1Smrn@A.ro*k>rp'LMrp]pYrq-3arqZQirr)`n^Aica +JcC<$JcC<$JcC<$JcCl4rr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC&rhf[d +rg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>%r]u*#Zp91-JO&3[r^#@, +ogA^IqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-brdb!&repc=rg<\Vrhf[rrilC5rkABLrlkAf +rmUl$rndY5roa:GrpB^Srq$-]rqQKgrqcWmqu5XUJcC<$Y5bs1rr2fnrqcWhrqHEarpp'Xrp9XKroX4< +rn[S-rmUklrlY5Xrk8rkeZVrm(Mkrn7;,ro!e%r]u*#Zp91-JO&3[r^#@,ogA^I +qaUQUr^m)]r_EGgr_`Yqr`K/)raGe;rb2:Krc8!^rdXp#re^W:rg*PQrhTOnric=1rk8$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdt-(rf@&CrgNh\ri#h!rjMg= +rkSNTrltGhrn7;+ro!e:roj@IrpTjWrq-3arqZQirqucorr1sXJcC<$Y5bs1qu-NlrqcWhrqHE`rpg!V +rosFFro="7rn@A&rm:Yfrl4rQrjr*8ri?$prh'1Wrf[8@re19#rd4Wcrbh^Nral(;ra5Y,r`/qrr_WSh +r_3;_r^d#Xr^HfSpd=%-q*KWtM*QVWJO%gRqa:?Nr^HfUr^ZrZr_3;dr_WSmr`9##ra5Y6rac"CrbqdV +rd+Qnre(30rf[8Irgs+cri?%)rji$Drl4r]rm:Yqrn7;-ro="?rosFNrpg!ZrqHEfrqcNirr'S2JcC<$ +JcC<$JcC<$JcC<$OoP=WrquclrqQKerq$-ZrpTjNroa:@rndY.rmq(qrlb;\rkSNErj2U)rh]Udrg3VI +rf6u1rdXoorc8!UrbMLDraGe5r`K/"r_remr_EGdr^m)[r^QlUr^?`Qqa9((JO$A'JO"cOgd'IXqa:?N +r^HfUr^ZrZr_3;dr_WSmr`9##ra5Y6rac"DrbqdVrd4Wore(31rf[8Irh'1dri?%)rji$Drl4r]rm:Yq +rn7;-ro="?rosFNrpg!ZrqHEfrqcNirr(mWJcC<$Y5bs1rr)iorql]jrqQKerq$-YrpB^LroX4>rndY- +rm^qnrlY5ZrkABAriuI%rhKIarg!JErf$i/rdOimrc8!UrbDFCra>_2r`K/"r_i_lr_lJ.1A,^3AD>nPSH2`9l +K)U]-OT(LDSc5D`WW'1%\,O,@`W"$Zci2Gng&Bk-ir8*>l2L)LnG`%Yp\sseq>U9jr;QZ/s+13$s+13$ +s+13$s+13$s,m?\rVl`oqu6Ejq#:$eoD\7YmJcALk5OB>hYu4-eGdenb5TBZ^AbYAZ2Ua%U]-kaPl?dD +N;eG.If=ZmEW0kTCAq`B@/aI2=8l5!;Z9Ml:&[fb8cD9[7fGjU7/fRN6f:<.6%M;(5_21O5hnX(6/"[& +6iKLQ7K,dU8,c*Z9E%Zb;#XAlnPSHN&BmK)U`.OT(LDT)PMaWW'1%\,O,@`W"$Z +ci2Gng&Bk-ir8*>l2L)LnG`%Yp\sseq>U9jr;QZTs+13$s/uC1s8Murr;QTmq>U0gpAXX^n,D_Rkl0]C +iVq[4f`'D"cMkrb`;[IL[f3K0WW&XkSc4lQO8b%9Jc:&rGQ)U]D#S/JA,]j7>lIh(<;obo:]=&e9)_B\ +8,c!W7.iq,630D>r]u*#L-U;TJO'3"r^#@,qa:6Kr^QlWr^d#\r_3;er_`Yor`9#&ra5Y6rb2:Irc%j[ +rd=]qre^W7rfd>OrhBCjriZ7/rk8PrhBCjric=0rk8#Srjr*:ric$Lr^QlWr^d#]r__#Srjr*:ric$Lr^QlWr^d#]r_3;er_i_qr`K/)ra>_:rb;@LrcA'`rdFd"reg]:rg3VUrhKIprj2U7rkSNQ +rlb;grmh#%rnm_8roX4FrpKdUrq69arqHEgrquco^AicaJcC<$JcC<$JcC<$JcCl4rr)iorql]hrq??a +rpg!Urp0RGro="8rn@A&rmC_grl+lPrji$7riZ6qrgs+VrfI,;re:?"rcnE`rbh^Mral(:r`oG*r`/qq +r_NMer_!/]r^ZrWr^HTLk!Ji/JO$%sJO"cOdm3[ok!Ji1r^HfUr^ZrZr_*5ar_NMkr`/r#r`oG1ral(C +rbh^VrcnEjre:?/rfI,Hrgs+ariZ7,rji$Drl4r\rmC_qrn@A/ro="?rp0ROrpg!\rq??crql]mrr(mW +JcC<$Y5c'4rr2oqrquclrqQKdrq$-YrpB^NroX4>rnm_.rmh"prlY5YrkJHBrj)O*rhKI`rg3VGre^W, +rd=]hrc8!Trb2:Ara5Y/r`K/"r_`Yjr_3;`r^m)Zr^HfSpd=11pHX9pJO"cOJO&Zhk!Ji1r^?`Sr^QlX +r_*5ar_NMkr`&kur`fA/rac"Brb_XTrce?hre(3,rf@&Ergj%_riH+)rjVm@rl"fYrm:Yprn7;.ro3q= +rp'LMrp]pYrq69brqZQjrr)`n`;bDgJcC<$JcC<$JcC<$JcCu7rr2oqrquclrqHEcrq$-YrpB^NroO.= +rnm_.rmh"prlY5YrkJHArj)O*rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Y +r^HfSpd=11JO#_jJO"cOb!>)Upd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]tre^W8 +rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5j[JcC<$Y5c'4rr2oq +rquclrqQKdrq-3ZrpB^MroX4>rnm_-rm^qnrlP/XrkJHArilC%rh9=\rg!JBreLK(rd4Wfrc.pQrau.= +ra,S.r`K.ur_WSir_*5_r^d#Yr^HfSqa9C1pHX9pJO"cOJO&Zhi'RE1r^?`Sr^QlWr^m)^r_NMjr_i_s +r`];-raPk>rbMLQrc\9frdk'(rf-oBrgWn[ri,n#rjMg?rl"fXrm1Smrn%/+ro3q=rosFLrp]pZrq69b +rqZQjrr)`n`;bDgJcC<$JcC<$JcC<$JcCu7rr2oqrquclrqHEcrq-3ZrpB^MroO.=rnm_,rm^qnrlP/X +rkJH@rilC%rh07[rg!JBreLK(rd4Wfrc.pQrau.=ra,S.r`K.tr_WSir_*5_r^d#Xr^HfSqa:?Lk!FVa +S3VWjJO%@Ci'RE1r^?`Sr^QlXr^m)^r_NMjr_i_tr`];-raPk>rbMLQrc\9frdk'(rf-oBrgWn[ri5t$ +rjMg@rl"fXrm1Smrn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nl2Q>7JcDnQ\c;[.rr)iorqcWhrq69] +rp]pRrosFDro*k5rn.5!rm1Sbrkn`LrjDa.ri#girgNhNrf$i2rdauorcS3ZrbDFEraPk4r`T5%r_i_l +r_EGcr^m)Zr^HfSpd=(.pHX9pJO"cOJO&Zhi'R<.r^?`Sr^ZrZr_*5cr_WSlr`B)&ra#M4rau.Erc%jZ +rd+QoreCE2rfmDNrh07gric=.rk8#`rmUkurn[S4roF(Brp9XRrpp']rqHEfrql]nqu4P6JcC<$ +JcC<$JcC<$JcC<$PlLa^rr)iorqcWgrq69]rp]pRrosFCro*k5rn%.urm1Sarkn`Lrj;[-ri#ghrgNhN +rf$i2rdauorcS3ZrbDFEraPk4r`T5%r_i_lr_EGcr^m)Zr^HfSpd>$Ik!FVaS3VWjJO%@Ci'R<.r^?`S +r^ZrZr_*5cr_WSlr`B)&ra#M4rau.Erc%jZrd+QoreCE2rfmDNrh07hric=.rkABKrl>#armUkurndY5 +roF(Crp9XRrpp']rqHEgrql]nqu5j[JcC<$Y5c'4rr2oprql]krqQKcrpp'Wrp0RJroF(:rn[S*rmLek +rl>#Srk8<>re:?$rd"KarbqdMrau.rgEbXrhoau +rj2U:rkeZSrltGjrmq)(ro!e9roj@JrpTjWrq69brqZQjrquZm`;bDgJcC<$JcC<$JcC<$JcCu7rr2op +rql]krqHEbrpp'Wrp0RJro="9rn[S)rmLekrl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau.< +r`oG*r`9"rr_NMfr_!/\r^ZrVr^?NKr^,a6JO#_jJO"cOb!=lOqa:?Nr^HfVr^m)]r_rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWk +rquZml2Q>7JcDnQ\c;[.rqucmrqcWgrq-3[rpTjProj@Arnm_1rmq(srm(M_rk\THrj2U*rhf[crg3VH +re^W-rdXolrcA'Wrb;@Bra>_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=C7mQc=gJO"cOJO&?_ksG87r^?`S +r^QlWr^m)_r_EGir`/r"r`oG1rac"Arbh^Vrce?jre19-rfR2Hrgj%criQ1*rk&0Frl+l]rmC_qrnIG0 +ro3q?rp0RPrpg![rq??erql]mqu4P6JcC<$JcC<$JcC<$JcC<$PlLa^rqucmrqcWfrq-3[rpTjProj@@ +rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_r^d#X +r^HfSpd>$Imm;RjPmQc=gJO"cOJO&?_r^#m;qa:?Nr^HfUr^ZrZr_3;dr_`Yp +r`K/)ra>_9rb)4Irc.p[rdOj!reUQ7rg*PRrh]UpriuI6rkSNOrlkAhrmh#%rnm_7roa:GrpKdTrq-3` +rqQKirquZm`;bDgJcC<$JcC<$JcC<$JcCu7rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG&rmC_irl"fN +rk&07riH*qrg`tRrfI,8re(3"rcS3\rbh^Jrac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKr^-9Eqa#cu +P_9rb)4Jrc.p[rdXp"reUQ8rg*PRrh]Up +riuI7rkSNOrltGirmh#&rnm_7roj@HrpKdTrq-3`rqZQjrquZml2Q>7JcDnQ\c;[.rquclrqZQfrq$-Y +rpKdOroj@ArndY/rmh"prlkA[rkJHCriuI&rhTO`rg!JDreUQ+rdOiirc.pSrb)4>ra5Y.r`B(ur_WSh +r_3;_r^d#Xr^?WNlpC\;lTg"dJO"cOJO&6\r^#m;r^6QNr^QlWr^m)_r_rbVRR +rcS3grdt-)rf6uCrg`t`ri5t%rj_sArkn`Yrm:Yorn@A/ro3q?rp'LNrp]pZrq??drql]mqu4P6JcC<$ +JcC<$JcC<$JcC<$PlLa^rquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHCrilC%rhTO`rg!JD +reLK*rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNpd4X?r]u*#O?e@^JO$q7r^#m;r^6QN +r^QlWr^m)_r_rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$Brkn`Zrm:YornIG0 +ro3q@rp'LNrp]pZrq??erql]mqu5j[JcC<$Y5c07rr2oqrquclrqZQerq$-YrpKdNroa:>rndY.rm^qn +rlb;Yrk8rp'LNrp]pYrq69crql]mrr)iq`;bDgJcC<$JcC<$JcC<$JcD): +rr2oqrquclrqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8rp'LNrp]pY +rq69drql]mrr)iql2Q>7JcDnQ]`8!1rr)inrqcWirq??_rp]pTrp'LGro*k5rn@A$rm1Serkn`Krj_s4 +ri,mkrgNhNrf@&5rdauprcJ-YrbVRGraPk5r`T5$r_i_lr_$Mr^ZrZr_*5br_WSlr`9#$ra5Y6ral(ErbqdWrd+Qore:?3rfmDNrhBCkrilC2rkABKrlY5d +rmUl"rn[S4roa:GrpKdTrq$-^rqQKhrql]nrr0k9JcC<$JcC<$JcC<$JcC<$QiI'arr)inrqcWirq69^ +rp]pTrp'LGro*k5rn@A#rm1SerkeZJrj_s3ri,mkrgNhNrf@&4rdauprcA'XrbVRFraPk5r`T5$r_i_l +r_$Mr^ZrZr_*5br_WSlr`9#$ra5Y6ral(FrbqdW +rd4Wpre:?4rfmDNrhBCkrilC3rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQirql]nrr20^JcC<$ +Y5c07rr2oqrql]krqZQerq$-YrpB^Lroa:=rn[S-rmUklrlb;Yrk8rkeZWrm1Slrn7;,ro!e=rp'LMrp]pY +rq69crqcWkrr)iq`;bDgJcC<$JcC<$JcC<$JcD):rr2oqrql]krqZQdrq$-YrpB^Lroa:=rn[S-rmLek +rlb;Xrk87JcDnQ]`8!1rr)inrqcWhrq??_ +rp]pRrosFEro!e2rn7;"rm(McrkeZIrjMg/ri#girgEbKrf-o2rdXoorcA'VrbMLEraGe4r`K/"r_`Yk +r_$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"CrbqdV +rd+Qore190rf[8Jrh07griZ7/rk/6HrlP/brmLeurn[S3roX4Drp9XRrq$-^rqHEfrql]nrr0k9JcC<$ +JcC<$JcC<$JcC<$QiI'arr)inrqcWhrq69^rp]pRrosFEro!e2rn7;!rm(Mcrk\THrjMg/ri#girg<\J +rf-o1rdXoorc8!UrbMLDraGe4r`K/"r_`Ykr_$L +r^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdVrd4Wpre191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3 +roX4Drp9XRrq$-^rqQKgrql]nrr20^JcC<$Y5c07rr2oqrql]krqQKdrq$-Yrp9XKroO.;rnRM+rmLej +rlP/Vrk/6=riZ6urh07Yrf[8?re19#rd4Wcrbh^Nral(:ra#M*r`/qpr_WSgr_*5]r^QlUpd=L:qa'O5 +JO"cOJO"cOi'@9-mm?e:r^HfUr^Zr[r_rg<\Wrhoau +rjMg=rk\TTrltGirn.5*ro!e;roj@Jrp]pYrq69brqZQjrr)iq`;bDgJcC<$JcC<$JcC<$JcD):rr2oq +rql]krqQKcrq$-Yrp9XKroO.;rnRM+rmC_irlP/Urk/6=riZ6urh07Xrf[8?re(3"rd4Wbrbh^Nrac"9 +ra#M*r`/qpr_WSgr_*5\r^QlUpd=gCpd4jDJO#;^JO"cO]0Q?]mm?e:r^HfUr^Zr\r_7JcDnQ]`8!1rr)inrqcWhrq69]rp]pRrosFDro!e2rn7;!rltGark\TGrjMg/rhoagrg<\I +rf-o1rdXonrcA'VrbDFDra>_2r`K/"r_`Yjr_3;`r^d#Xr^HTLmm?,$JO"cOJO"cOh*CEqpd>$Lr^QlW +r^m)_r_NMjr`/r"ra#M3rac"Brbh^Urd"Klre(3/rf[8Irh'1friZ7/rk/6GrlG)`rmC_trnRM2roO.C +rp9XRrq$-]rqHEfrql]nrr0k9JcC<$JcC<$JcC<$JcC<$QiI'arr)inrqcWhrq-3\rp]pRrosFDro!e2 +rn7:urltGarkSNFrjMg/rhoagrg3VHrf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTL +pd4aBJO#)XJO"cO\3TLLpd>$Lr^QlWr_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07g +riZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrq$-]rqQKgrql]nrr20^JcC<$Y5c07rr2oqrql]krqQKc +rpp'Wrp9XJroF(:rnRM+rmLejrlP/Urk&0;riZ6urh07XrfR2=re(3!rd+Qbrbh^Mrac"9ra#M*r`/qp +r_NMer_!/\r^QlUpd=L:jZnA^JO"cOJO&$Vmm?e:r^HfUr^ZrZr_3;er_`Yor`B)(ra>_8rb;@Lrc8!` +rdOiurepc_8rbDFMrc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@J +rpTjWrq-3brqZQjrr)iql2Q>7JcDnQ]`8!1rr)inrqcWhrq69]rpTjQroj@Bro!e2rn7;!rltGark\TG +rjDa.rhoagrg<\Irf$i/rdFckrc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^d#Xr^HTLmm?,$JO"cOJO"cO +h*CEqpd>$Lr^QlWr^m)_r_NMjr`&kur`oG1raYqArb_XSrcnEkrdt--rfR2Hrh'1friZ7.rk&0FrlG)` +rmC_trnRM2roF(Brp9XQrpp'\rqHEfrql]nrr0k9JcC<$JcC<$JcC<$JcC<$QiI'arr)inrqcWhrq-3\ +rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yj +r_3;`r^ZrWr^HTLpd4aBJO#)XJO"cO\3TLLpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Kl +rdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr20^JcC<$Y5c07 +rr2oqrql]krqQKcrpp'Wrp9XJroF(:rnRM+rmC_hrlP/Urk&0;riQ0srh07XrfR2=re(2urd"K`rbh^M +rac"9ra#M*r`/qpr_NMer_!/\r^QlUpd=L:jZnA^JO"cOJO&$Vmm?e:r^HfUr^ZrZr_3;er_`Yor`B)( +ra>_8rb;@Krc.p^rdOiurepc_8rbDFLrc.p_rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGh +rn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iql2Q>7JcDnQ]`8!1rr)inrqcWhrq69]rpTjQroj@Bro!e2 +rn7:urlkA`rk\TGrjDa-rhf[frg<\Irf$i/rdFckrc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^d#Xr^HTL +mm?,$JO"cOJO"cOh*CEqpd>$Lr^QlWr^m)_r_NMjr`&kur`oG1raYqArb_XSrcnEkrdt--rfR2Hrh'1f +riQ1-rk&0FrlG)`rm:YsrnRM2roF(Brp9XQrpp'\rqHEfrql]nrr0k9JcC<$JcC<$JcC<$JcC<$QiI'a +rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFB +ra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLpd4aBJO#)XJO"cO\3TLLpd>$Lr^QlWr_!/`r_NMjr`&kura#M2 +raYqBrb_XSrd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]n +rr20^JcC<$Y5c07rr2oqrql]krqQKcrpp'Wrp9XJroF(:rnRM+rmC_hrlP/Urk&0;riQ0srh07XrfR2= +re(3!rd+Qbrbh^Mrac"9ra#M*r`/qpr_NMer_!/\r^QlUpd=L:jZnA^JO"cOJO&$Vmm?e:r^HfUr^ZrZ +r_3;er_`Yor`B)(ra>_8rb;@Lrc8!`rdOiurepc_8rbDFMrc8!ardOiurf$i=rg3VWrhoat +rjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iql2Q>7JcDnQ]`8!1rr)inrqcWhrq69] +rpTjQroj@Bro!e2rn7;!rltGark\TGrjDa.rhoagrg<\Irf$i/rdOimrcA'VrbDFCra>_2r`K/"r_`Yj +r_3;`r^d#Xr^HTLmm?,$JO"cOJO"cOh*CEqpd>$Lr^QlWr^m)_r_NMjr`&kur`oG1raYqArbh^Urd"Kl +rdt--rfR2Hrh'1friZ7.rk&0FrlG)`rmC_trnRM2roF(Brp9XQrpp'\rqHEfrql]nrr0k9JcC<$JcC<$ +JcC<$JcC<$QiI'arr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i. +rdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLpd4aBJO#)XJO"cO\3TLLpd>$Lr^QlWr_!/` +r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQ +rpp'\rqQKgrql]nrr20^JcC<$Y5c07rr2oqrql]krqQKcrpp'Xrp9XKroO.;rnRM+rmLejrlP/Urk&0< +riZ6urh07XrfR2>re19#rd+Qbrbh^Mral(:ra#M*r`/qpr_NMer_!/\r^QlUpd=L:jZnA^JO"cOJO&$V +mm?e:r^HfUr^ZrZr_3;er_`Ypr`K/*raGe:rb;@Lrc8!`rdOj!rf$i>rg3VVrhoaurjMg=rkSNSrltGi +rn.5*ro!e;roj@Jrp]pYrq-3arqZQjrr)iq`;bDgJcC<$JcC<$JcC<$JcD):rr2oqrql]krqQKbrpp'X +rp9XKroO.;rnRM+rmC_irlP/Trk&0re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMe +r_!/[r^QlUpd=gCpd0NsMEl_XJO$_1mm?e:r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj! +rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ro!e;roj@Jrp]pYrq-3brqZQjrr)iql2Q>7JcDnQ]`8!1 +rr)inrqcWhrq69]rp]pRrosFEro!e2rn7;"rm(Mcrk\TGrjMg/ri#girg<\Irf-o2rdXonrcA'VrbDFD +raGe4r`K/"r_`Yjr_3;`r^d#Xr^HTLmm?n;lTg"dJO"cOJO&-Yr^$!>pd>$Lr^ZrYr_!/`r_NMjr`/r" +ra,S4rac"Brbh^Urd"Kmre190rf[8Irh07griZ7/rk/6GrlP/brmLeurn[S3roX4Drp9XRrq$-]rqHEf +rql]nrr0k9JcC<$JcC<$JcC<$JcC<$QiI'arr)inrqcWhrq-3\rp]pRrosFEro!e2rn7;!rm(McrkSNF +rjMg/ri#girg3VHrf-o1rdXonrc8!UrbDFCraGe4r`K/"r_`Yjr_3;`r^d#Xr^HTLpd4aBqa#cuO?e@^ +JO$h4r^$!>pd>$Lr^ZrYr_!/`r_NMjr`/r"ra,S4rac"Crbh^Urd+Qnre191rf[8Irh9=hriZ7/rk/6G +rlY5crmLf!rn[S3roX4Drp9XRrq$-]rqQKgrql]nrr20^JcC<$Y5c07rr2oqrql]krqQKdrq$-Yrp9XK +roX4rg<\XrhoaurjMg=rk\TUrm(Mkrn.5+ro!e7JcDnQ]`8!1rr)inrqcWirq??_rp]pSrosFFro!e3rn@A#rm(Mdrkn`K +rjVm2ri#gjrgNhNrf6u3rdXoorcJ-XrbMLEraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"CrbqdWrd+Qore191rfd>MrhBCkric=0rk8$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"D +rbqdWrd4Wpre192rfd>MrhBCkric=1rk8rkeZWrm1Slrn7;,ro!e= +rp'LMrp]pYrq69crql]mrr)iq`;bDgJcC<$JcC<$JcC<$JcD):rr2oqrquclrqZQdrq$-YrpB^Lroa:= +rn[S-rmLekrlb;Xrk87JcDnQ]`8!1 +rr)iorqcWirq??_rp]pTrp'LGro*k5rn@A$rm1Serkn`Krji$5ri5smrgNhOrf@&6rdk&rrcS3Zrb_XH +raYq7r`];&r`&knr_EGdr^m)[r^QlTqa9^:r^#j8JO"cOJO"cOj$7JcDnQ\c;[.rqucmrqcWgrq-3[rpTjProj@Arnm_1rmh"p +rltG]rkJHErj)O)rh]Ubrg*PFre^W,rdOijrc8!Urb)4?ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WNlpCS8 +mQc=gJO"cOJO&?_r^#d8r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rb_XTrc\9hre(3,rfI,Grgj%b +ri?%'rjr*Erl"f[rmC_prnIG0ro3q?rp0RPrpg![rq??erql]mqu4P6JcC<$JcC<$JcC<$JcC<$PlLa^ +rqucmrqcWfrq-3[rpTjProj@@rnm_1rm^qorltG\rkJHEriuI(rh]Ubrg*PFre^W,rdOiirc8!Urau.> +ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WNpd4X?qa#cuPrbh^Urc\9ire(3,rfI,Grgj%bri?%'rk&0Frl"f\rmC_prnRM1ro3q@rp0RPrpg![rq??f +rql]mqu5j[JcC<$Y5c'4rr2oprql]krqHEarpg!Vrp0RIro="8rnRM(rmLekrl4rRrk/6:riH*rrgj%T +rfR2:re19#rcnE`rbqdMrac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKlpC,*JO"cOJO"cOk!8/tqa:?N +r^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb2:KrcA'_rdOj"re^W:rg3VTrhf[srj)O8rkSNPrltGirmh#& +rnm_7roa:HrpTjVrq-3`rqZQjrquZm`;bDgJcC<$JcC<$JcC<$JcCu7rr2oprql]krq??`rpg!Vrp0RI +ro3q7rnRM'rmLekrl+lQrk/69riH*rrgj%TrfR2:re19#rce?_rbqdLrac"9r`oG)r`/qpr_NMer^m)[ +r^QlUr^?NKr^-'?JO#DaJO"cO_*I6Oqa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb2:LrcA'_rdXp# +re^W:rg3VTrhf[srj)O9rkSNPrm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZml2Q>7JcDnQ\c;[. +rqucmrqcWhrq69]rpTjProsFCro!e3rn%.trm(M`rk\TIrj;[-ri#ghrgEbLrepc0rdXomrcA'Wrb;@D +raGe2r`T5$r_i_kr_Lrh'1friZ7,rk/6Irl4r^rmLesrnRM2ro="Arp9XQrpp']rqHEf +rql]mqu4P6JcC<$JcC<$JcC<$JcC<$PlLa^rqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm(M_rk\TI +rj2U,ri#ggrgEbLrepc0rdXomrcA'Wrb;@DraGe2r`T5$r_i_kr_$Ik!FVaS3VWj +JO%@Ci'R<.r^?`Sr^ZrZr_!/ar_WSlr`9##r`oG2ral(CrbqdXrd"Kmre:?0rfd>Lrh'1griZ7,rk8#UrkAB=ric=#rh07ZrfmD@ +reLK(rd+Qdrc%jPrau.7JcDnQ\c;[.rr)iorqcWhrq??`rp]pSrp'LFro3q7rn.5" +rm1Scrl"fNrjVm2ri5skrgWnPrf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_remr_NMdr_!/\r^ZrVr^?WN +j$NK*JO"cOJO"cOmm,etr^6ZQr^HfUr^ZrZr_*5dr_`Ymr`B)&ra,S5rb)4Grc.p\rd4WqreLK4rg!JP +rh07iric=0rkABMrlP/crmUkurndY6roO.DrpB^Srq-3_rqHEfrql]nqu4P6JcC<$JcC<$JcC<$JcC<$ +PlLa^rr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\ +rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNr^,a6JO#_jJO"cOb!=lOr^6ZQr^HfUr^d#[r_*5d +r_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^S +rq-3_rqHEgrql]nqu5j[JcC<$Y5c'4rr2oqrquclrqQKdrq$-YrpB^NroX4>rnm_.rmh"prlY5YrkJHB +rj)O*rhKI`rg3VGre^W,rd=]hrc8!Trb2:Ara5Y/r`K/"r_`Yjr_3;`r^m)Zr^HfSpd=11pHX9pJO"cO +JO&Zhk!Ji1r^?`Sr^QlXr_*5ar_NMkr`&kur`fA/rac"Brb_XTrce?hre(3,rf@&Ergj%_riH+)rjVm@ +rl"fYrm:Yprn7;.ro3q=rp'LMrp]pYrq69brqZQjrr)`n`;bDgJcC<$JcC<$JcC<$JcCu7rr2oqrqucl +rqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5YrkJHArj)O*rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/ +r`K/!r_`Yjr_3;`r^m)Yr^HfSpd=11JO#_jJO"cOb!>)Upd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8 +rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]n +qu5j[JcC<$Y5c'4rr2oqrquclrqQKdrq-3ZrpKdProa:@rnm_0rmq(rrlb;[rkSNDrj2U,rhTObrg<\I +reg].rdOilrcA'VrbDFDra>_1r`T5#r_i_kr_$Kr^HfUr^m)^r__:rb;@L +rcA'`rdOj"reg]:rg<\VrhKIqrj2U7rkSNQrlb;grmq)'rnm_8roX4HrpKdTrq-3`rqQKhrql]nqu5j[ +JcC<$Y5bs1rr)iorql]irq??arpg!Vrp9XJroF(:rnIG'rmLeirl>#Srjr*:ric$Lr^QlWr^d#] +r__#Srjr*:ricric=#rhBC_rfmDCreg]+rd=]hrc.pRrb;@Ara5Y0r`B(u +r_`Yjr_3;`r^d#Yr^QlTog@_*!CB-P6%M:U5_21O5lO%J6/=m)6i0:N7fGpW8H)6\9`@ie;>sPo& +?iFO6B`;iIE;k%[I/\ZqM>iP7PQ%*OUAh+jY5Ym/^&GtLao9TbeGe/#h>ZC4jo4KCmJcVSo)A@^p\t!f +qu6NmrP&;_s+13$s+13$s+13$s+134s8Murr;QTmq>U0gpAXX^n,D_Rkl0]CiVq[4f`'D"cMkrb`;[IL +[f3K0W;`OjSc4iPO8b%9JGsrqGQ)R\D#S/J@fBa6>lIe'<;obo:]=&e9)_B\8,c!W7/K@K6f:<16%M;% +5_21O5hSF%6/=m)6i0:N7fGpW8H)6\9`@ie;>sPoZC4jo4KCmJcVSo)A@^p\t!fqu6NmrT!p/s+13Qs0ht)rVl`oqYp9hpAXX^ +nG_kTkl0]Cir7d5g&BP$ci2)d`W!UN\Gif5WrAgnTDk/UOT(1;KDp;uH2_j`DZ4DMAH$!9?2dt*qa#cuM*QVWJO'3#g-Y[(qaCEQr^ZrYr_*5br_NMjr`&kur`oG1raYqA +rb_XSrcnEkrdt-,rfI,Ergs+bri5t'rj_sArl+lZrm1Sorn7;,ro3q>roj@Lrp]pXrq??drqcNirr'S2 +JcC<$JcC<$JcC<$JcC<$OoP=WrquclrqQKdrpp'XrpKdLroO.=rn[S,rmh"orlY5ZrkABArj)O'rhTOc +rg!JErepc-rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;ar^d#Yr^QlTqa:6Ji'R<,JO$A'JO"cOgd(j) +g-Y[(qaCEQr^ZrYr_*5br_NMjr`&kura#M2raYqBrb_XSrd"Klrdt--rfI,Erh'1cri5t'rj_sArl+lZ +rm1Sorn7;,ro3q>roj@Lrp]pXrq??drqcNirr(mWJcC<$Y5bs1qu-NlrqcWhrqHE`rpg!VrosFFro="7 +rn@A&rm:Yfrl4rQrjr*8ri?$prh'1Wrf[8@re19#rd4Wcrbh^Nral(;ra5Y,r`/qrr_WShr_3;_r^d#X +r^HfSpd=%-q*KWtM*QVWJO%gRqa:?Nr^HfUr^ZrZr_3;dr_WSmr`9##ra5Y6rac"CrbqdVrd+Qnre(30 +rf[8Irgs+cri?%)rji$Drl4r]rm:Yqrn7;-ro="?rosFNrpg!ZrqHEfrqcNirr'S2JcC<$JcC<$JcC<$ +JcC<$OoP=WrquclrqQKerq$-ZrpTjNroa:@rndY.rmq(qrlb;\rkSNErj2U)rh]Udrg3VIrf6u1rdXoo +rc8!UrbMLDraGe5r`K/"r_remr_EGdr^m)[r^QlUr^?`Qqa9((JO$A'JO"cOgd'IXqa:?Nr^HfUr^ZrZ +r_3;dr_WSmr`9##ra5Y6rac"DrbqdVrd4Wore(31rf[8Irh'1dri?%)rji$Drl4r]rm:Yqrn7;-ro="? +rosFNrpg!ZrqHEfrqcNirr(mWJcC<$Y5bs1rr2oqrquclrqQKerq-3[rpTjProj@Bro!e2rn7:urlkA` +rk\TGrjMg/ri#gjrgNhNrf@&6rdt,urc\9\rb_XJraYq7r`];&r`/qor_EGer^m)[r^ZrWr^HfSpd=.0 +p-SaEJO#8]JO"uUr^$NMh*Um(r^?`Sr^QlWr^d#[r_$K +r^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdt-(rf@&CrgNh\ri#h!rjMg=rkSNTrltGh +rn7;+ro!e:roj@IrpTjWrq-3arqZQirqucorr1sXJcC<$Y5bs1rr2oqrquclrqZQgrq69]rpTjRrosFE +ro!e3rn@A#rm(Mdrkn`Krj_s4ri5snrg`tRrfI,9re(3"rcnE`rbqdLrac"9r`oG*r`9"rr_WShr_!/] +r^d#Yr^HfSpd=.0p-SaEJO#8]JO"uUr^$NMh*Um(r^?`Sr^QlWr^m)]r_EGhr_i_rr`K/)ra>_:rb2:L +rcA'_rdOj"re^W9rg*PRrhTOnrilC2rkABKrlY5drmLf!rn[S3roX4ErpB^Rrpp'\rqHEfrqcWlrr)iq +^AicaJcC<$JcC<$JcC<$JcCl4rr2oqrquclrqZQgrq-3\rpTjRrosFEro!e3rn@A"rm(MdrkeZJrj_s3 +ri5snrg`tRrfI,9re(3"rce?_rbqdLrac"9r`oG*r`9"rr_WShr_!/]r^d#Xr^HfSpd$Kr^HfUr^d#[r_!/br_WSlr`9##r`oG1ral(BrbqdWrce?kre19-rfI,Frg`t`ri5t% +rj_sArkeZXrm1Slrn@A-ro!erndY/rm^qorlkA[rkJHDriuI'rhf[drg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5% +r_i_mr_NMer_!/]r^ZiSnjD_0p-SaEJO#8]JO"uUr^$NMi'R*(r^H]Rr^d#\r_3;er_`Ymr`B)&ra#M4 +rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rji$Brkn`Yrm1Smrn@A.ro*k>rp'LMrp]pYrq-3arqZQi +rr)`n^AicaJcC<$JcC<$JcC<$JcCl4rr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHD +rilC&rhf[drg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>%r]u*#Zp91- +JO&3[r^#@,ogA^IqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-brdb!&repc=rg<\Vrhf[rrilC5 +rkABLrlkAfrmUl$rndY5roa:GrpB^Srq$-]rqQKgrqcWmqu5XUJcC<$Y5bs1rr2fnrql]krqZQfrq-3[ +rpTjProj@Bro!e3rn%.trm(M`rk\TIrj;[.ri,mjrgWnPrf6u7re(2trce?^rb_XJrac"9r`oG*r`9"r +r_NMer_!/]r^d#Yr^QlTnjDh3k0JcC<$JcC<$JcC<$JcC<$OoPF[qu-NkrqcWirq??`rpg!Vrp0RIro="9rn[S)rmLekrl4rRrk8<; +ric=#rh07[rg!JCre^W,rd=]hrc8!Trb2:Ara>_1r`T5#r_i_kr_3;`r^luWr^QlTnjCnnJO%"9JO"cO +mQf8gogAUEqaUQTr^m)^r_3;er_i_qr`T5*ra>_9rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7,rk8rkn`Urm(Mlrn%/*ro*k;roj@JrpTjVrq-3`rqZQjrquco +qu4>0JcC<$JcC<$JcC<$JcC<$OoPF[qu-Nlrql]krq??`rpg!Vrp0RJroF(;rndY+rmUkmrl>#UrkJH? +rilC&rhBC_rg3VGrepc0rdOilrcJ-XrbDFFraGe4r`fA&r_remr_EGdr_!/\r^ZrWpdFmEe3\^O^d*H9 +JO&Wge3`ptpdG*Nr^ZrYr_!/_r_EGhr`&ktr`fA.raGe=rbMLOrcJ-brdOj#reg]:rg3VTrhBCmrilC0 +rkJHMrl>#armUkurndY5roF(Crp9XQrpg![rq??frql]mrr)`nj8X]1JcDnQZiC%(rr)iorql]krqQKc +rq$-YrpB^NroX4?rnm_/rmh"prlY5ZrkSNDrj2U,rh]UdrgNhLrf-o5rdk&qrce?\rbVRIraYq7r`oG) +r`/qqr_WSgr_*5^r^d#XqaLKPpd=I9krnm_/rmh"p +rlY5ZrkSNCrj2U,rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKP +pdAre:?&rdFcgrc8!Urb)4@ra>_1 +r`T5%r_i_lr_EGcr_!/\pdY$Hqa8FkJO%XKJO"cO!'nLir^6HKpdY6Rr^m)^r_EGhr_i_sr`T5*ra>_9 +rb)4Jrc.p[rdFcsre:?3rf[8Jrh07fri?%)rj_sArl+lZrm1Snrn7;,ro3q>roj@Krp]pXrq-3`rqQKh +rql]nqu5ORJcC<$Y5ba+rr2oqrqucmrqZQfrq69]rp]pTrosFFro="8rn@A&rm:YgrlG)Trk&0;ric=" +rhBC\rg!JDre^W-rdXomrcJ-XrbDFEraPk6r`fA(r`&kpr_NMfr_!/]r^d#Yr^QcRr^?& +JO$%sh*U[!ogAUEr^H]Rr^ZrYr_*5br_NMjr_retr`fA/raPk=rbDFNrcA'`rdOj!reUQ6rfmDNrhBCk +ric=/rk&0Frl>#^rm:Yqrn@A/ro="?rosFMrp]pXrq69brqZQjrqucoqu45-JcC<$JcC<$JcC<$JcC<$ +MuWeUrr)iorql]jrqHEbrpp'XrpKdMroa:@rnm_/rmq(qrlkA_rkSNFrjDa/ri#gjrgNhOrf@&7re19# +rcnEarbqdNrau.=ra5Y/r`K.ur_i_kr_]g2Q_a?oYgogAUEr^H]Rr^ZrYr^m)_r_<8dr`&ktr`];-ra>_< +rbDFMrcA'_rd=]sreUQ5rfmDNrh'1eri?%&rj_s@rk\TVrm1Smrn.5*ro!e;roj@IrpTjWrq-3arqZQi +qu$Hlqu45-JcC<$JcC<$JcC<$JcC<$MuWeUqu-NlrqcWhrqHEarpg!Vrp0RJroO.;rnRM+rmUkmrlb;W +rkABBrilC&rhf[ergEbMrf-o4rdt,srcnE`rbh^Mrb)4rndY/rmq(rrltG]rkSNGrj;[.ri5skrg`tSrfI,:re:?$ +rd+Qdrc%jQrb;@Bra>_2r`K/"r_renr_NMfr_*5_qag]Vr^QcRqaCdr^6?H +r^H]Rqa^WWr_*5br_NMjr_resr`K/*ra>_8rb2:Irc%jZrd+Qnre:?/rf@&Erg`t\ri,n"rj2U9rkSNO +rlkAhrmh#%rndY5roa:GrpB^Rrpp'\rqHEfrqcNirr)`n]DmH^JcC<$JcC<$JcC<$JcCZ.rr2fnrqucl +rqQKerq-3\rpTjRrosFFro*k5rnIG&rmC_irl"fOrk/6:ric=$rh07\rg3VFreg]/rdXonrcS3ZrbVRJ +raYq8ra#M*r`/qrr_`Yjr_rp'LMrpTjWrq-3arqZQiqu$Hlqu5ORJcC<$Y5bX(qu-NlrqcWhrqHEarpp'XrpKdOroj@Arnm_1 +rn%.trm1Sbrkn`MrjVm3riQ0qrh'1Yrf[8?re^W+rdFcjrc8!UrbMLEraPk6r`fA'r`/qqr_`Yjr_rgEbWrhKIorj)O3rkABLrl>#`rmUktrnIG0ro3q?rp'LNrp]pYrq-3arqZQi +qu$Hl[JtgXJcC<$JcC<$JcC<$JcCQ+qu-NlrqcWhrqHEarpp'XrpKdOroj@@rnm_1rmq(srm1Sarkn`M +rjMg2riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr__3r`oG)r`9"tr_`Yk +r_EGer_3;ar^m)[og]!Oq*op(M+)taJOT?'ogf!Pr^m)^r_3;cr_EGgr_`Yor`9##r`oG/ra>_;rb;@K +rc.p[rd"Kmre19-rf@&CrgNh[rhf[qrj2U6rk8#Rrk&0;ric=#rhKIarg<\J +rf-o4rdt,trcnEarc%jQrb2:AraGe5r`];'r`9"rr_`Yjr_WShr_3;`oh#*Q!D#cY7tF-d7Y+$[7eK:N +8Gc!U9)_N`:&[ug:]=5j;Z9_r=T2M'?iFL5A,^-?C]8;PFT-RbIK"itM#ND5P5^jJT)PMaWW'+#[Jmf; +_#DCRbPolfec+8$h>ZC4jo4KCm/HGPnc&1[p&=^bq>U9jr;QZlrjDcWs+13$s+13$s+13$s+13+s8N#p +rVl`oqu6Hkp\smco`"C[n,D\Qkl0]CiVq[4g&BP$d/M5fa8WmR]Df5;YPtO#U]-kaR/W9JNW+_4K)U2t +GlDgaE;j\QB`;N@@K'X5>5hY'sAj;#X5h9`@ZW8cD9U7tF.47Y+$[7bgK.8,GjS8c)-Z9`@cc +;#X8i;>sJm5hn.@K'd9B`;fHE;jtYH2`6kK)UT*NW,+?R/W]VU].7lYPts/]DfVFa8X9]d/MSp +g&Bh,iVqslIt, +=T2A#<;obo;#X8i:B!ub9`%H_8c_OVi(8JjUe$&-S4Md6r^luZr_*#[r__pIO=9qb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe; +rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbVrh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e:roj@HrpKdTrpp'^ +rqHEerqcWkqu-NnfDgF%JcDnQVuQbqrr)iorqcWirqQKdrq$-ZrpTjProsFFro*k5rnIG'rmLekrl>#T +rkAB@riuI)rh]Uerg`tQrfI,=re:?&rdOikrcJ-XrbVRJrau._3r`];'r`9"tr_reor_WSir_E5_ +!)*De9]/Qp8u,(18t8N99E%T]9__?]:B"&g;#XAl;uTbq5hk-?iFL5B)ZKCD#SAPF8gC_IK"fs +K`6r0OoCUES,T)[V#IIpZMq<3^&GnJ`r=6^dJh\qgA]t.iVr$>l2L#Jn,DkVoD\I_p\t!fqYpBkrVQT" +s+13$s+13$s+13$s+13$s+::Mrr2lqr;QQlq>U0gpAX[_nc&"Vli-/JkPjH>hYu:/ec+"rcMki__Z%:K +[f3Q2Xo>-qT`1J\Pl?dDNW+V1Jc:,tGQ)^`DuOSPC&V`D@K'[6?N+.-=T2A#<;ohq;Z9Ml:]=,a:&[iE +97]^W8qBTc9(ts<9D_EX:&[oe:]=2i;Z9Vo<;oqt=T2M'?N+=2@K'm +Pl@3PT`1bdXo>X*[f4#?_Z%RScMl5jec+>&hYuL5kPj`Fli-APnc&.ZpAXgcq>U6iqu6Qkrn%1$s+13Q +s/5nrrr2lqr;QTmqYp9hp\sgao)A.XmJcDMkl0WAi;VU4fDa7uci2&c`;[ON\c/u8YPtO#V#I"cRJrHM +O8b"8K`6N$I/\?hErL%WD#S,IAc?0Q.e)=8l5!<;oem;>X2h:B42l:f.-eqbH]VJP;P,JP;8$ +ohGrnm_/rn%.urm(Mbrl"fNrjr*:riZ7"rhKIbrgNhOrf@&9reCE& +rdFclrcJ-ZrbqdNrb)4Ara>_4ra,S.r`];(r`K/#r`/hor_`_nq,.,fJPV5#JPV%sqb[&bqbmDlr`/qu +r`B)$r`];*ra,S2ra>_:rb2:GrbqdUrcA'ard=]qreCE1rf@&DrgNhYrhKIkriZ7.rjr*Drl"fXrm(Ml +rn%/'rnm_7roO.ErpB^Rrpg![rq??crqZQiqu$Hlqu3o$JcC<$JcC<$JcC<$JcC<$K)biLqu-NlrqcWi +rqQKdrq-3[rpTjQrp0RFro3q7rn@A'rmUklrlP/XrkJHDrjDa.ri,mlrh'1Yrg!JDreg]0rdaurrd+Qb +rc.pUrbDFFral(:ra5Y2r`fA*r`T5%r`9"uqc!Jlpeh#eJPWOHJPUhmi_TGJpegodr_rerr`9#"r`T5( +r`fA.ra5Y4ral(BrbDFNrc.pYrd+Qkrdb!&repc:rg!JOrh'1bri#h!rjDa:rkJHNrlP/brmUkurn@A/ +ro3q=rp0RNrpTjVrq-3`rqQKgrqcNirr)`nfDgF%JcDnQVuQYnrr)iorqcNfrqHEarpp'XrpKdProj@C +ro*k4rn7;$rm:YgrlG)Trk/6@rj)O*ri,mkrgj%Vrf[8@repc/rdaurrcnEbrc.pTrbMLIral(_4 +ra#M.r`];(r`K/$qc3\rq,I5iJPqP,JPq/!r_rSkpf@Aqr`T5(r`oG.ra5Y4raYq_4ra#M.r`];(r`Jqr +pf.,hJPrjQJPq%shbsGPpf.#hr`K/&r`];+ra#M1ra>_8rac"BrbMLNrc.pZrce?irdb!#repc9rfR2J +rgj%^ri,n!riuI5rk8'rE')&=T2D$$ +=o2J'?2e41@/aU6AH$0>BDu`HDuO_TFoH[cIK"crK`6c+NrG4@Q2['r`K&!r`8/]JQ0`jJQ.2"pJg9Tqc<\tqcNi#qcs,+ra5Y4 +raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8 +rnm_1rn%.trm1Sbrl"fOrk&0Brepc3rdt-!rd=]ircJ-YrbqdPrbDFGrau.? +qdKJ2ra>_4ra#S1r*B;,nltcjJQ\dOJQ\LGnlk]jqcs,+qd080ra5Y4raGe:ral(Arb;@JrbqdTrcJ-` +rd4Wnrdk'(repc:rfd>Krgj%_rhoasriuI2rk&0Frl+lXrm1Smrmq)'rndY5roa:Frp0RPrpg!Zrq??c +rqQKhrql]mrr)`nXT*kOJcC<$JcC<$JcC<$JcC<$!WW3!rqlZnr;QTmqYp9hp\smcoD\:Zn,DYPl2KlF +iVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP20N=ijft=b0`M=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtY +GQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L([f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#Jn,DkVoD\I_ +p\sseqYpBkr;QZlrmCass+13Qs.o\irr2ipqu6Hkq>U0gpAX^`o)A+Wmf)POl2KcCiVq^5f`'G#dJhAh +aSs*V^Ab_C[JmE0X8]!qT`1J\RJrELO8b+;L]2r*J,XipH2`!dEW0qVDZ4GNCAqrHB)ZB@AH$'8@/s[9 +?srk=oj72pJR#!UJR"^Moj.,pra5P1raG\5qdf\;rb2:GrbMLNrbqdUrc\9crd=]pre(3)repc:rf[8J +rg`t\rhf[qrilC0rji$Brkn`UrlkAhrmh##rndY4ro="Arp0ROrpTjWrq-3`rqHEfrqcWkrquQjXT*kO +JcC<$JcC<$JcC<$JcC<$!WW2prr2ipqu6Hkq>U0gpAX^`o)A+Wmf)POl2K`BiVq^5f`'G#dJhAhaSs*V +^Ab_C[JmE0X8]!qT`1J\RJrBKO8b+;LAli)J,XipH2`!dEW0qVDZ4GNCAqrEAc?6>@f'U5@/F=(?LhBQ +>fg6%>_-/S>kMCn?N+=/@/aU3@f'^8Ac?ECCAr#JDZ4SREW1.\GlE*iJ,Y*"LAm/2O8b=ARJr`UT`1hf +X8]@&[Jm`9^Ac%La8X<^dJh\qf`'b,i;Vd9l2L#Jmf)\So)A:\pAXgcq>U6iqu6NgrmCass+13Qs.98i +rr2lqr;QTmqYp9hp\sgao)%qUmJcDMk5OE?hu;C0fDa7ud/M5fa8WmR]`,J@Zi7-,X8\poT`1M]Qi<3J +O8b+;M#N&+JGsurHiA3fFT-=[E;jbSD>n;LB`;ZAAc?3?A,Kj9@e*rY@$k>Q@#\Re@JaO5A,Bg9Ac??A +C&VlHD>nJQE;jnWF8g=]HN&?lJGt3#L]383O8b@BQN!ERT`1_cWrB4$ZMqB5^&GhHa8X9]d/MMnfDaP( +hu;X7jo4NDm/-;OoD\C]p\t!fqYpBkr;QZlri,pKs+13$s+13$s+13$s+13$s7u]orr2lqr;QTmqYp9h +p\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1M]QN!*IO8b+;M#N&+JGsur +HiA0eFT-=[E;jbSD>n;LB`;ZAAc?6;A,]s.@=_h"@"D^:@-D"k@JaO5A,Bg9Ac??AC&VlHD>nJQE;jnW +F8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X9]d/MMnfDaP(hu;X7jo4QEm/-;O +oD\C]p\t!fqYpBkr;QZlrm(Ops+13Qs.98irqlZnr;QQiq>U0gpAX^`nG_kTmJc>Kk5OE?i;VO2g&BJ" +ci22ga8WsT^](eC[JmE0X8]!qUAgeaRf8ZQOT(:>N;eV3KDpB"If=]nH2`!dFT-:ZE;jeTDZ4MPD#S2M +C&r'aqe?%Clt?<0JRtWgJRt?_qe#D3qe5tCqeH+GrbVRNqelCPrc.pYrcS3brd4WnrdXp"reCE1rf6u> +rg3VRrh'1arhoarrilC0rji$Crkn`TrlkAgrmLeurnRM2ro="?roj@KrpTjUrq-3_rqHEeqtg3frr)`n +WW.PLJcC<$JcC<$JcC<$JcC<$q>^Hnqu-NlrqcNfrqHEcrq-3ZrpKdQroj@Dro="9rnRM+rmLelrltG^ +rkeZLrji$9rilC&rhf[hrh'1Yrg3VGrf6u:reCE)rdXorrd4WircS3^rc.pVrbqdRrb_XNrbMLJqe?%C +lt?<0JRur7JRsCDpLX56nn7i5rb;7ErbMLLrb_OMrc%jVrcA']rd"KirdOirre(3)rf$i:rfI,GrgWnZ +rhBCiri?%&rjDa9rkJHMrl4r^rm:Ymrn7;+ro!e9roX4DrpB^Rrp]pZrq69brqZHfqu$Hlqu4n@JcC<$ +Y5b*nqu6TnrquZjrqcWhrq??`rpp'XrpKdMroj@Dro*k6rnRM)rmUkmrlY5[rkeZJrj_s7ric=%ri#gj +rgs+Yrg*PIrf@&;re^W/rdk&urdFclrcnEdrcJ-\rc8!Xrc%jT!,_gTDYn;MD";B@C4U)jBn9udC&;Z< +C\qrID>S5MDuO_TEW1"XF8g:\GQ)meHN&?lJ,Y#uLAm#.N;en;P5^aGRf8oXU&LthX8]=%[/RW8^&GnJ +`r=-[ci2Dmf)FG'hYuL5k5OQCl2L,MnG`"Xo`"R`q"spequ6NmrV6Aks+13$s+13$s+13$s+13$s+14G +s82fprVl`lqu6Hkq#:!do`"F\nG_kTl2KoGk5O?=hu;F1f)F.tci2)d`rnABC]8("Bu=Y9Bn:!jC&;ZS5MDuO_TEW1"XF8g:\GQ)meHN&?lJ,Y#uLAm#.N;en;P5^aGS,T#YU&M"iX8]=%[/RW8^&GnJ`r=-[ +ci2Dmf)FJ(hYuL5k5OQCl2L,MnG`"Xo`"R`q"spequ6NmrV6B;s+13$s/uBks8N#prVl`oqu6Hkq#:!d +p&=R^o)A+Wm/H;Lkl0ZBiVqa6f`'G#dJhGjb5TE[_#D%H])K&8YPt['VZ*@iTDk>ZQi<6KOT(7=MuJJ1 +KDU2uIf=`oH2`'fG5cU_F8^+[EcV/!pi-4Nrc%aQJSprpJSpZhqeuIQrbq[Qrc%jVqf;[WrcJ-_rce?e +rd=]nqgeZure:?/rf6u>rfmDKrgWnZrhBCgriH+'rj)O6rk8rfmDKrgWnZrhBCgriQ1(rj)O7rk8U0gpAX^`o)A.Xmf)VQl2KlFjSn*:h>Z.-ec*tqci2&c`rrf[8IrgNhWrh'1brhf[qric=,rjVmrnm_2rn.5#rmC_krlY5\ +rk\TKrk/6>rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUQ.re:?)!.k6'K):,lJ:W38It<*2 +J+A-hJbt&rK`6])L]3/0MuJb9O8b7?PQ$mIR/WZUTDkM_V>dFmXT#F&Zi7E4]DfPD_>_LSbPoiedJhYp +fDaS)i;Va8k5OTDlMg8OnG_tWo`"O_p\ssbqYU3irVQSes+13$s+13$s+13$s+13$s+14>s8N#prVl`o +qYU*fp\smco`"C[nG_nUlMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70-XT#0tV>d.eT)P;[ +R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=PEJ%C,\It<+8J+A-hJbt&rK`6])M#N81MuJb9O8b7?PQ$mI +R/WZUTDkM_V>dFmXT#F&Zi7E4]`,YE_>_LSbPoiedJhYpfDaV*i;Va8k5OTDlMg8OnG_tWo`"O_p\t!c +qYU3irVQT5s+13$s/uBbs8N#prVl`oqu6Hkq#:$epAX^`o)%nTm/H;LkPjN@i;VU4g]#k)e,I_ncMkoa +`W!^Q^AbbD\Gii6Yl:g)WW&doU]-qcT)P;[RJrQPQ2ZsGOoCF@OT(:>N<"nrf-o9repZ2re^W1qhK`W]nV)mJVNBCreLK/re^N0repc7 +rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJrl+lXrm(MirmLeurn@A.ro!e: +roX4Frp9ONrpp'\rq??crqQKhrql]mrr)`n^]/lbJcDnQP5kO\qu-Nlrql]krqZQgrqHEbrq-3\rp]pT +rp9XJroX4@ro!e3rn@A'rmUknrlkA`rl>#SrkJHFrj_s8riuI+ri?$trhoakrh9=`rg`tWrgEbQrg*PJ +rfd>E!0I;EOoCIAO8+b1NId%XN.HqON;/D-NrG+=OT(CAP5^[EPl@!JQi_LSao9N`d/MPof)FA%h>Z@3jSn<@kl0rJmJcVSo)A:\p&=^bq#:*gqYpBkr;QZl +rgNkZ.- +f)F.td/M8gao9?[_>_4K]`,G?[JmH1YPtU%WW&doV#I(eTDkA[S,SiTR/WENPl?mGP5^UCOT(=9NqeTb +N51C'N.HrUN;/D-NrG+=OT(CAP5^[EPl@!JQi_LS +ao9N`d/MPof)FD&h>Z@3jSn<@kl0rJmJcVSo)A:\p&=^bq#:*gqYpBkr;QZlrkJJas+13Qs-!E]rqQHk +r;QTmqYproj@HrpTjUrpg![ +rq69arqHEfrqcWkrquZlqu3&aJcC<$JcC<$JcC<$JcC<$JcG-;rr2]krqucmrqcWirqQKdrq69_rpg!W +rpTjOroj@Dro3q8rndY-rn%/!rm:Yhrlb;[rkn`MrkABCrjVm5riuI+ri?$uri#gkrhBCarh07^rg`tV +rgEbQrg3VMrg!8Bplb31JWS3>JWPGEqN1B4plbE9rg!JKrg3VOrgEbSrg`tYrh07_rh9=dri#gqri?%% +riuI/rjVmroj@HrpTjUrpg![rq69arqQKgrqcWkrquZl +qu4A1JcC<$Y5aI\rr2fnrquZjrqcWhrq??arq$-[qsXONrp'LGroO'Z2V*/\,Nu<]`,\F_>_@OaSs?] +cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\Xgdqtp"d/M>ibl5]_`rrjMg6 +rj2U0qlp('riQ7'!NiL'XSAjqWq`QEW10`:W0=1TWV`^pX8]1!XT#@$Y5YX%Yl:p,Zi7B3\,No:]DfMC +^])%J_u@XSaSsB^cMl/hdJhVofDaM'hYuF3iVqm:kPj`Fli-APnG_tWoD\C]p&=^bq#:*gqYpBkr;QZl +rfR53s+13$s+13$s+13$s+13$s5a4ZrqlZnr;QTmqYp>[f3]6Zi79-Yl:j*Y5YR&XSAjqWq`QEW5,?_W.Co8 +W;*@hWr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No:]DfMC^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm: +kPj`Fli-APnG_tWoD\C]p&=^bq#:*gqYpBkr;QZlrjMiXs+13Qs,$dTrq66hr;QQiq>U0gp\smco`"FY +n,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$df.Vmci22gbPoW_`r9oZMq3-[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W!sXbPoccci2>kdf.hsf`'V( +hYuF3iVqp;k5OTDli-;Kn,DnWo_\@]p\ssbqYU3frVQSVs+13$s+13$s+13$s+13$s+142s8N#jrVl`o +qYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@ +\Giu:[emK3[/73,ZLY8OYfX,#Y^s%QYk>9oZMq3-[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!YbPocc +ci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnWo_\@]p\t!cqYU3frVQT&s+13$s/uBYs7lTjrVl`l +qu6Hkq#:$epAXaao`"F\nG_kTmJcDMkl0cEjSn0"e,I_n +cMl)fb5TN^aSs0X`;[[R_#D+G^AbhF]_K)8\bio'[t2!6[Xkl<[edH'\+R91\bNc8]`,VA^AbnH_#D7N +`;[aTaSs<\b5TZbci2;je,InsfDaJ&g]$(/hu;X7jSn?Al2KuImJcPQnG`"Xo`"O_pAXgcq"speqtpU0gp\smcp&=U\nc&"Vmf)POl2KlFjSn3=i;VX5hYu:/g&BS% +e,Iemd/M>ic2PlbaSs6Z`W!gT_u@OP_>V1I_#D+J_#D+J^?N=^]W/Vq]Uuk'^&,PC_#D+D_#D1L_Z%IP +`;[aTa8X3[b5TZbcMPufdf._pf)F>$g]$(/hu;R5j8S0>k5OTDli->On,DhUnc&1[p&=[ap\sseq>U6i +qu6NgrVQSSs+13$s+13$s+13$s+13$s+14,s8N#mrVl`oqu6Hkq>U0gp\smcp&=U\nc&"Vmf)POl2KiE +jSn3=i;VX5hYu:/g&BS%e,Iepd/MDkcMl)fb5TK]a8X'W`;[[R_Z%CH_#D+J_#D+J^?N=^][+6A]Rd`l +]^3?/^AbqI^\GVD_>_=N_u@UR`W!pWao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3i;Vd9jo4EAl2L#Jmf)\S +nG_tWo`"O_pAXgcq#:*gqYpBkr:p6frj2WUs+13Qs+11Ms8N#jrVl`iqYp9hp\smco`"FYnG_nUmf)PO +lMg#Hk5OEZ1.gA]b(f)F1udf.Vjci25hc2PrdbPoZ`aT0B_aN48!rl4iSdDUUR_S^rB]u/.6 +rl+cSprEBTrlY5`rlkAdrm(Mhqp>>jrmUksrn%/&rnIG.rndP1ro=">roa:Frp0ILqsaUVrq-3`rqHEe +q"jmcqu-EkM#W&+JcC<$JcC<$JcC<$JcC<$g].9Pp&4mfq"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.> +qr%J1rn[S.rn@A(rmh"trmLemqp58erltGdrlb;`rlOrUrl4iSdDUURkJMkgR)A4-ji%/;qo8EOrlP/^ +rlb;brltGfrm1JgrmLeprmh##rn7;*rn[S1qr%J6roO.CrosFJqsO@Nrq$-]rq??crqQ9bqu$?iqu3_t +JcC<$Y5a(Q!<;inqu-NlqtpBhrqZQgrqHEbrq-3]rpg!WrpTjRrp9XLroj@DroO.=ro*b3rnRM-rn7;' +rn%/"rm^qrrmC_lqp58erlkGeq98`Zm)n8.J]PgOJ]PFDj2pQ.rlb)\rltGfqp58grmC_orm^qtrn%/% +rn7;*rn[J/ro*k9roO.Broj@Hrp0RNrpTjUrpg!Zrq-3_rqHEerqZHfrqlTjrr)WkM#W&+JcC<$JcC<$ +JcC<$JcC<$g].'Jqu-NlqtpBhrqZQgrqHEbrq-3]rpg!WrpTjRrp9XLroj@DroO.=ro*b3rnRM-rn7;' +rn%/"rm^qrrmC_lqp58erlt5^qoe?Ki5pPklH"OtQ,r@7pW;[Brlb)\rltGfqp58grmC_orm^qtrn%/% +rn7;*rn[J/ro*k9roO.Broj@Hrp0RNrpTjUrpg!Zrq-3_rqHEerqZHfrqlTjrr)WkXoEtPJcDnQJcGTH +rr2]krquZjrqcWiqtU0arq69^rpp'Yrp]pUrpKdNrosFGroX4@ro,brmC_nqpYPormh#!rn%/&rnIG-rndY3ro!e7ro="=roO.BrosFI +rpKdSrp]pWrpp'[rq69aqtL*crqcWkqu$6fqu2*qqh>1rnm_5ro*k;roO.Aroj@Grp0RMrpBUO +rp]pWrq-3_rq??crqQKgqtg&0fSS8Vg#C]^ +gA'G"h#?.,htu@/iqqg9jnS'=lMg,KmJcPQn,DhOoD\F^pAXgcq>:$fqtU*grUp/cs+13$s/uBQs7--d +rq66hr:p-fq"sg_p&=U_o)%tVnG_nUmf)SPli-2KkkjQ?jo4?9iqM@3i8F:cqqcn[Q/.#IOPTTdrnm_4 +o&0<&qrIbq;h>2p#:P]T&G7ZRGm_rpuD&. +roO.Aroa1BrosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqHrosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqH +JcDnQJcG0qs+1Hqs==LqsOIQrpTjVrpp'[rq-*\rq?6`rqQKgqtgJcDnQ +JcFj3q#:'erquZjrqcNfrqQBbrq??aqt0mZrpojSrp]ULrpK[NrTjROm/H>JlLO1jkaUdek`b6'l20cF +lMg,Em/HDLmecJMnG)PQo)A7Xo`"O_pAXg`q#:*dqYpBhr:p6crdk+:s+13$s+13$s+13$s+13$s+13c +s7lTgrVl`lqu6Hhq>U0dp\smcp&"C\oD\=Unc&%Nn,DbPmJH8LlhfuKn,)VLnc&+YoDA1Zp&=[ap\Xabq>:$fqtp +nG_tTo)A7Xo`"O\pA=U`q#:*aqYpBhr:U$cre^Z+s+13Qs+14*s7QBgrV6U0dp\smZp&=UV +oDS7Uo)%s.n;m'in:^<1nac8JoDA1Qp&=[^p\ssbq=XU`qtU*grUTr=s5a32s+13$s+13$s+13$s+13$ +s0r%$rqlZhr;6BgqY9mcq#:$ep\smZp&=UVoC_\OnU^2:n:C([nDEa7nac8JoDA1Qp&=[^p\ssbq=XU` +qtU*grUTrEs+13$s/uBQs475Irpp$er:TsaqYU*fq"=CYpA=OWo_J.Jo7?J%nq$@qo'c2=o`"OVpA=U] +q#:*^qYU0er:U$]rdk+.s+13$s+13$s+13$s+13$s+13Ts82fdrVl`fqtp6eq>U0^p\X[]p$_PAo7?JJ +nq$@_o'Z);oC)>Np%A%Up\Xabq=XU]qtp:$Wqt9mdrTsN7s3gpus+13$s+13$s+13$s+13$s/#b^rr2lhr9sO^qTenfprW;^pjr57psJp7qX==S +r;QZ]rdk+Ds+13$s/uBQs1A=.rosCVr:9a`qLSKoqLSKoqXXLUqtU*UrUp/@s2P(is+13$s+13$s+13$ +s+13$s-E]^rpp$_rV6<]qgnU4rK.!Krm(Los0VfWs+13$s+13$s+13$s+13$s+LFOrlG(irOVrYrIOq5rP/>_s4RF's+13Q +s+13(s8DqJrdk'"rdk(>rdk*2s+13$s+13$s+13$s+13$s+13$s5 %APLeod +EI +846 0 0 58 386 204 cm +BI +/Width 2538 +/Height 174 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEXfJcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEXfJcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEXfJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEXfJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcEXfJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcEXfJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcEXfJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEXf +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEXfJcD_Lg&?R% +Jc:6"TDmmNJcC<$PQ-45n,@n;Jc:N*JcGQGJcC<$rVqHJL&QZ&Jc>9?JcCf2JcFp5S,S!X8N +JcC<$Jc>`MK)U?#Jc:6"pAU$NJcC<$iW"K.U&KWBJc=:#JcDeNJcCB&!WN(Lrdk'"rdk(Erdk*+s+13H +s5![*rdk'"rgWoMs+13fs+13as6TarTX=Ys+13$s/>tardk%:rIOourJCL;rfR53s-!EO +rr)hIrIt3$rIOq=rTX<4s/5mJs8;o`rgWk;rIOourS@G:rk8>_s+138s6T`:rIOourIOq@rTXMp'Jc1/uS,MUN +!WW1Ns24kfs3Uf:rmC]7r.4csr.4dQr7CoBrq68As,I&is760:rJ1<%r.4d;r7Co6rhKLEs.o\crpB[G +rIOm;r.4d%r;-BKrTsN7s1//is760:rNlEQr.4csr:9d;rTsO0s+13$s/5nfrmC\5r.4csr/:L)rTsNl +s+13+s8)`jrmC[qr42`Vr.4e4r7Co6rdk+"s+13Ms760PrTjE5r0R>4r/U^IrT*qDrdk*Us+13os760: +rUp)>r.4csr36+NrVZZbrdk*us+140s82f[rV6<]qptUpqLSKoqO.3QqtU*grU9^Xrdk*As31N?rosCV +r:9`9qX"'0qLSKqqXsa\r9XCTrjDcWs0ht)rosCVr:BdcqgnTqqLSKoqX+.PqtU*UrUp/@s3(G8s82f[ +rV6<]qj@52qLSKoqUbT:qtU*UrUp0Ks+13$s1/1,rosCVr:9`9q>pHhJbjroJbnm4p&"O^m/?VVaT$hk +RfE9amf!(^q#'^[Jbku7JbjrodJEP5q#'LWp&9OBkPp,5]`7m.l2CDTo)&@]JbjroJbjrooD8.Wq#'LW +p&9OB`W(MhhZ*KPl2CDTo)%/;JbjroJbkZ.p&"R_!;u3^p&9OBjo9o3kl:Y]m/?VTq"sa\rqY.?JbXfk +JbYc1rqZ6`q"t'gp&+CZqu20HUAr[Arr29_p&+U^p%n[`Jb\U,JbXfkLA:cDp%nI\o)/(Wqu4,*JcEC_ +rr29_p&+U^p%e^bq#L5Apk&9lpjr50q#:*^qY9sYr:9g`rdk*ps/,hqrp9UVr:p0^qYp;Xpjr3kpjr4o +q#:*^qY9sYr:9g`roF*1s+13bs8N#arUp*`qt9gbq18;Aq"TF8JbXfkoD&=\p%nI\o)/(Wqu4e=JcDDC +rr29_qY^9hq"sa\rqV-?T(mm3Jb[airqZ6`q"sX[o)8IbJcG$8JcEUerr29_p&+U^p%n[`r:kj9s_pYY^rp7q>4 +p7:p=p\+@Sq#:*XqYpBbr:U$`rdk*ss+14;s7lTarVQNiqsXCYq>9s=pOW$hp4;qPp=f96q#:*bqY0jc +qt9m[rV6ACs7-,?s8Duprpp$er:TsaqYU*fq"=CYpA=OOo^DDDnq$@_nq$ACo'c2=o`"OVpA=U]q#:*^ +qYU0er:U$]rdk*\s6'FZrpp$er:TsaqYU*fq"=CYpA=OOo^DC/nq$@_ntbjFoC)>Np%A%Up\Xabq=XU] +qtpU0^p\X[]p&+ISo^DC&nt>Q)nrE;5oDJ4Ko`"OVpA=U]q#:*^ +qYU0er:U$]rdk+3s1A=.rpp$er:TsaqYU*fq"=CYpA=OOo^DC[nq$@_nq$B,o'c2=o`"OVpA=U]q#:*^ +qYU0er:U$]rqueIs+14"s82fdrVl`fqtp6eq>U0^p\X[]p$_PAo:>H'nq$@oo'c2=o`"OVpA=U]q#:*^ +qYU0er:U$]ro=$0s0_n(rpp$er:TsaqYU*fp]1'^p\X[]p$_PAo7?JFnq$@_o()A?oC)>Np%A%Up\Xab +q=XU]qtpU0^p\X[]p%J%So^DC&ns]-#ns&_6o)SFPo`"OVpA=U] +q#:*^qYU0er:U$]rdk+-s+14Gs82fdrVl`fqtp6eq>U0^p\X[]p$_PAoD%m-nq$@_o!\,XoC)>Np%A"Z +p\4X\qtU0dp%nR_qu$-cp&9OB!<7WM!<<&tn,<7`q"t'erqZ6^p%JCXqt0dWp%%A;o^IG$Jae6[](#(V +o()eOq"4RYqtBp\p%\O^rqcEequ$$`rr.KK])V'qrr2BbrquQgrqcWip%\4Rrq60\qt'LOl1'Z#Jae6[ +V"!a@o()eOq"4RYp%J(RrqZQiq"ssdo)8Red/S[seGoOIn,<7`q"t'erqZ6^p%JCXqt0dWr:9^Tl1'>o +T^[O%Npu]2q=4%Hrq#pWrq5sXp%\O^rqcEequ$$`rr.KKk5W0qrr2BbrquQgrqcWip%\4Rrq60\qt'LO +l1)4OJae6[JaiI(m.'Z;rq#pWrq5sXp%\O^rqcEequ$$`rr2iqJcC<$fDkjLn,<7`q"t'erqZ6^p%JCX +qt0dWp%%A;Sa_4"Jaefkm.'Z;rq#pWrq5sXp%\O^rqcEequ$$`rr1sXJcE7[rr2BbrquQgrqcWip%\LZ +q=ag\qt0dWp%%A;Jag>AJae6[o'l#9o()eOq"4RYp%J(RrqZQiq"ssdo)8ReK)^E%gAh0On,<7`q"t'e +rqZ6^p%JCXqt0dWp@84Sl1'>oRdbmtPjn,2!V,^No)A7Uo`"OVp@\4[q>U6cqtp<^rVleIs5`MKE(rMo)8Rcqtp0brqZQgq"Od]qt9s\qt'gXqsjRQm-j0+JaS*WJaTT,o'c8@rpfmVrq$-]rq-3_ +qtBp]rqQKgq"k!equ$-cqu20H^&RL"rr2KerquZjq"k!crqQ9_rq?6^rq-*ZrposVqs`t@JaWO*JaS*W +Q1"53p$htNqssaXqt0m\qtBp]rqQKgq"k!equ$-cqu5(EJcF@%rr2KerquZjq"k!crqQ9_rq?6^rq-*Z +rposVqsXXTn*]XqmZd-jmXad,mdBZ7p$htNqssaXqt0m\qtBp]rqQKgq"k!equ$-cqu20Hl2SU"rr2Ke +rquZjq"k!crqQ9_rq?6^rq-*ZrposVqs`t@WpYH+JaS*Wl0e-2p$htNqssaXqt0m\qtBp]rqQKgq"k!e +qu$-cqu-Wrs+13$s4[MPrpp$er;6BdqYpU0ap\smbo`=aYrq-*ZrposVqs`t@ +JaTc1JaS*Wj6lL,p$htNqssaXqt0m\qtBp]rqQKgq"k!equ$-cqu2cNs8N#grVl`lqtU$eq>U0ap\sm`p&=U\oD\=Xnb_hBn*KInmXaeWm\fLDn+H2Lnb_kXoCDtRqt0m\ +qtBp]rqQKgq"k!equ$-cqu26JN;r\Pq#13iqtpBhqt^6dqtL*`rq60\rq$-[q!n@Qp$_nJqsF:Irp0IH +o',f1J`q[KJ`s]/p$)8:rp0@GrpBUNqsXFOrpfmUrpp'[qt0m\rq??cqtU0dqtgJlLO21k^hrKk`P*%l1jQClhKiGmJH>Kn,)VL +nc&+YoDA1Zp&=[ap\Xabq>:$fqtpU0dp\smcp&"C\oD\=ZnbhqV +nFc8LmecDKm/H>JlLO1jke-,1k^hsgkk438lMg,Em/HDLmecJMnG)PQo)A7Xo`"O_pAXg`q#:*dqYpBh +r:p6crf7#0s5s@VrqQHkr;6BjqYU*fq"sgbpAXa^o`"I]o(_bSnFc8LmecDLli?DOlhfuqrmV6pu_51J`VIEJ`XK)pu_84p#uD>p$;VDrpB^QrpKdTrpTjVqssaXrq-!ZqtU0dqtgqrmV6pu[IqJ`VIEUuhC6p#l#3 +ros+Arp9XOqsOIQrpTjVqssaXrq-!ZqtU0dqtgqrmV6pu]$H +J`VIEJ`Z[gpu_84p#uD>p$;VDrpBUNrp]pUrpfmVrq$-]q"FU[rqZHfrqlTjr;HKjJcCQ+j8\]KrquZj +rqcNfrqQ9^rq-3]qssaVrpTjUrpTjSrpB^Op$;M>qrmV6pu\./J`VIEOlcB#p#l#3ros+Arp9XOqsOIQ +rpTjVqssaXrq-!ZqtU0dqtgli-8MmJH>NnG_nUnb_nVoD\CWpA=Xaq>:$fqtpU0apAX^`oDA+Xnc&"VnG_nUmf)VQm.K]Al29`Fkjmp3k(2W_jalNXjnS!4 +k5jc/p#uD>p$;VDrpBUNrp]pUrpfmVrq$-]q"FU[rqZHfrqlTjp&0IAm/MnAo)8RcqtpBhqt^6dq"F^Z +rq$$Xrpg!Vrp]pUrpKdQrp9=Dqs""Ao&of1puR(gJ`VIE[cR;Hp#l#3ros+Arp0[Qm/ZPNmf)_Tn,DkS +o)A7[o_A.Wq#:*dqYpBhr:U#Is-l2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xab +q>:$fqtp +roNh6puD&,NT#HIJ`3Wfo&BH)p#Q,6roX">rosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqH!TiDCjn7^0 +j7VD_iM5@_iKWl2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$fqtp9lrVcTkq#5jE +OoOeJq#:'erquZjrqcNfrqQBbqt9s\rpp'YrpTjUrpTjSrpB^Oqs47Hros4AroX4Ap#Po.p#;Y'J`21= +Qf7MppuD&.roO.Apuq_Arp'CHrp9XOqsOIQrpTjVrposYrq69bqtU0dqtgl2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$fqtpU0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&Ckl0`Djo"39jS7d.idp'ZiITsViUZ"'irJ06 +jSn9?k4n0>l2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$fqtpU0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&Ckl0`Djn7^0j7VF/iITs=iITt#iUZ"'j7VL4jo4E; +kl0iGl2g5:rTjILrpBUNrp]pUrpg!Yqt0m\rqH>r/ +p##Z'J_cRHJ_cIEp"oZ)!T2f*i:u=/jSn9?kPOKBlMg,Km/HGPn,DhUnb_nSo`"O_p\Xa\qYU3frUp/@ +s82h\s82fgrVl`iqYp9ep\XX_o`"FYnc&%Wn,DbSm/H>MlMg#EkPOB?jS7a-i:Z")hX]KRh1=C5h6Yr1 +hYZ4$i:u=/j8nB(!9O4Cqrn%Erp0RMrpKdSrp]pWqssXVrq69bqtTs_qu$?ip&:H\S,`Kep&4mfqtp9d +rqQBbrq??`rq$-[rp]gRrpB^Orp0RJroj@EqrRh'rnI"tqq:VoJ_5P+J_7Qdrn6bo +rnI,$qqh5.qr7V9roF(?roa:ErosFJrp9XOrpTaRrpp'[rq-*]rqH'rnI"tqq8F1 +J_5P+J_9bMrn6bornI,$qqh5.qr7M6roO.Broj@Grp0RMrpB^RqsaUUrq$-]qtC$`qtU0d!W2`oqtpU9g +r:U$frr2qKs3q#Irq66hr;6Bgq>U0dp\smco`"I]o)A.Un,D_Rm/H>Ml2KoGkPaKCjlQL&ro3q9qr%J2 +rnd>'rnI"tqq6PQ]\%efJ_9PGrn6bornI,$qqh5.qr7M6roO.Broj@Grp0RMrpB^RqsaUUrq$-]qtC$` +qtU0drqlTjp&4mhSc=9@p&G$jp&4mfqtp9drqQBbrq??`rq$-[rp]gRrpB^Orp0RJroj@EqrRhrn6hq!SZ9,g\'A!hYZ7.iqqg9jo4HBkl0iGli-8MmJcSOnG`"X +oD\CZpAXg`q#:*gqtpU9gr:U$frgWqZs8N#jrVl`lqu6Hkq>U0gp\smcp&=U\nb_eSmJcJOli-2K +kl0`Djo4?MlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$g&BY$fC.8Pe>:WFdt,u_e)o0K +ec+1tf_F/!g\]e'hYuI4hu;R5iVqp;jo4EAkl0iGli-8MmJHAOnG_tWo`"O_pAXgcq#:*dqYpBhr;6Hi +rpKf;s763hrq66hr;6BjqYpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k( +g&9V'f_a:he`PA4e%=([e#CgYeF_;hec+1tf_F/!g\]e'hYuI4hu;R5iVqp;jo4EAkl0iGli-8MmJHAO +nG_tWo`"O_pAXgcq#:*dqYpBhr;6Hire1=,s8N#jrVl`lqu6Hkq>U0gp\smcp&=U\nb_eSmJcJOli-2K +kl0`Djo4?Z!qq(;ek1$oiJ^]2!XOH=] +n(%Ehqq1\srnI>*qqh>1rnm_5ro*k;roO.Aroj@Grp0RMrpBUOrp]pWrq-3_rq??crqQKgqtgM +lMg#Hk5OKAjSRp8hu;R5hu;L3h##k$f`BaX!8.2#n($RMJ^_$UJ^^gOk1&kM!7q8'fDF4qg&Bb'h##t- +i;VX5i;V^7jSn9?k5OTDl2L#Jm/HDLn,DhUnc&1[p&=[ap\sseq>:$fqtpU0gp\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?uQm!9!k6ro!e7roF(?roX4DrosFJrp9XOqsXORrpg![rq69arqHEe +rqZHfrqlTjqu-EkT)YMarr2]krquZjrqcWirqQKerq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3 +rndY0rnIG*rn.5$rmh"tqpYPmrmCDcl-K=RJ^/hlJ^20Ym*G7LrmC_nqpYPormh#!rn%/&rnIG-rndY3 +ro!e7ro="=roO.CrosFIrpKdSrp]pWrpp'[rq69arqHEerqZQirqlTjq#1*hJcFs6rr2cm!WDurr;6Bj +qYp[Yo?dKarmL\mrm^qt +rmq)#rn7;*rnRM0rnm_5ro*k:roF(?roj@Grp'LNrpTjUrpg!Yrq$-^rq??crqQKgrqcWkqu$6fqu2KQ +huE]Tq#13iqtpBhrqZQgrqHEcrq69^rpp'Yrp]pUrpKdNrosFGroO.?roU6i +qtpl=3 +gt_n`rn7;'rmq)!rm^hormLenp!DsLJ^26[J^/hlqp+QSo$IB`rmL\mrm^qtrmq)#rn7;*rnRM0rnm_5 +ro*k:roF(?roj@Grp'LNrpTjUrpg!Yrq$-^rq??crqQKgrqcWkqu$6fqu3JmJcGWIrr2]krquZjrqcWi +rqQKerq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$rmh"tqpYPmrm:bnd.boO +c[jB:c@O93cKrmRd.u&fdJhSke,Ikrec+/!fDaJ&g]$"-hYuF3i;V^7j8S-=jo4KCl2KuImf)\SnG_tW +o)A7[p&=[ap\sseq>U6iqtproX4C +rp0RMrpKdSrpg!Yrq-3_rq??crqQKgq"sa_rr.KKli6t`p\b-krV69hq>U0gp\smcp&=U_o)A1Yn,DbS +m/H>MkPjWCjo4<>iqqX4h>Z4/g&BY'f)F5!eGI\ndJhJkd/M>ic1oN[bPoY8aaqQbad^ELb5TTZbl5ld +cMl2ici2>hdf._pec+/!fDaJ&h#?.,hu;U6j8S0>k5OQCli-8Mmf)\Snc&+Yo`"O_pAXgcq#:*aqt9pe +rq-5As7lWnrq66bqu6Ejq#:$epAXaao`"F\nc&"Vmf)SPli-)Hk5OKAj8S'8hu;I2h#?"+f`'J$ec+(q +df.Ynci28lcHZF8rlt5^qoeu]J]X8#J]WVfrQ5/`b5TTZbl5ldcMl2ici2>hdf._pec+/!fDaJ&h#?., +hu;U6j8S0>k5OQCli-8Mmf)\Snc&+Yo`"O_pAXgcq#:*aqt9perega8s8N#jrV69hq>U0gp\smcp&=U_ +o)A1Yn,DbSm/H>MkPjWCjo4<>iqqX4h>Z4/g&BY'f)F5!eGI\ndJhJkd/M>ic1oN[bPoYdaaqQbaaqS& +ans6[bP9<\c2Q#fd/MAjdJMAke,Insf)F;#g&Be+h>?+/iVqm:jo4EAkPjfHm/HGPn,DkVo)A:\p&=Xc +p\+[^rqQKgq"sa_rr.KKT`=ohrr2Thq"t'drqQKerq??arq-3\rpg!VrpKdPrp0RHroX4Aro=";qqqD/ +rnRM+rn.5$rmh"tqpPJkrm1Sjrm(MfprrWYrlUJIJ]WJbLroP:rlb)\rltGfrm:YjrmCVkrmUksrmq)# +rn7;+rn[J/ro*k:roO.Aroa:Hrp9XPrpTjVrpp'\rq69arqHEerqZ?dq#13jrr.KKirB#Wp&4[_rqZQg +rqHEcrq69_rpp'YrpTjSrp9XMroa:CroO.>ro3h4rn[S/rn.;(!SH'(f)F5!eGI\ndJhJkd/M>ic1oN[ +bPoY8ag9*?aaqRuans6[bP9<\c2Q#fd/MAjdJMAke,Insf)F;#g&Be+h>?+/iVqm:jo4EAkPjfHm/HGP +n,DkVo)A:\p&=[ap\sseq=sj[rVlens+14Ls8N#jrV69hq>U0gp\smcp&=U_o)A1Yn,DbSm/H>MkPjWC +jo4<>iqqX4h>Z4/g&BY'f)F5!eGI\ndJhJkd/M>iblQ&4qTSi[rlTf6Oi`0rMokk=rlY;cq98i_rm(Mi +rm1SkqpPJmrmh#!rn%/&rnRM/qqqD3ro=">roX4Crp0RMrpKdSrpg!Yrq-3_rq??crqQKgq"sa_rr.TN +T`>#jp&4[_rqZQgrqHEcrq69_rpp'YrpTjSrp9XMroa:CroO.>ro3h4rn[S/rn7;'rmq)!rm^hnrmC_k +rm:Yirlt5^qoeu]n&^.&J]WJbXi^I_rlb)\rltGfrm:YjrmCVkrmLnueH"/!f)F;#g&Be+h>?+/iVqm: +jo4EAkPjfHm/HGPn,DkVo)A:\p&=[ap\sseq=sj[rVlels/5nrrq66hr:p-fq#:$epAX^`o)%qUn,DbS +li-2Kkl0]Cj87d6hYu@1g]#q+f`'G#eGdnqd/2/gcMl)fbl5fbb5TNXa8X*U`TtJ*`.>gq_h#_d_p64" +`V[[Ma8X3[b5TT`bl5ldcMl/ed/MJme,Insf`'S'g]$%.hYZ71j8S0>kl0iGlhg,InG`%Yo`"R`p\ss_ +qYU3frVQSFs7--grq63iquQ`nq"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"t +rmLemqp58erltGdrlb;`rlOrUrl4iSdDW<-J]!&VcGRrGrl+cSprEBUrlY5`rlkAdrm(Mhqp>>jrmUks +rn.5'rnIG.rndP1ro=">roj@Grp0ILqsaUVrq-3`rqHEeq"jmcqu-Ekp]#gEqu?Zpp&4mfq"k!brqHEc +rq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"trmLemqp58erltGdrlY>baoKT`anWpU`r!a& +`.>hH_h#_8_p64"`;mpU`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:.i;Vd9jo4KCl2L#G +mecMQoD\C]pAXgcq"X^_r;6Hirf-s>s8N#jrVl`iqYp9hp\smco`"FYnG_nUmf)POlMg#Hjo4<;i;VU4 +h>Z1.gA]b(ec+(tdf.Vjci25hc2PrdbPoZ`anWpU`r!a&`8/=^_h#_"_p64"`V[[Ma8X3[b5TT`bl5ld +cMl/ed/MJme,Insf`'S'g]$%.hYZ71j8S0>kl0iGlhg,InG`%YoE"[Z!;?EdrqQ9bqu$?iqu20HU]:>n +rr2ThrquQfrqQKerq??`rposUrpTjSrp0RKroj@Cro +`V[[Ma8X3[b5TT`bl5ldcMl/ed/MJme,Insf`'S'g]$%.hYZ71j8S0>kl0iGlhg,InG`%Yo`"R`p\ss_ +qYU3frVQSns+14Lrq66hr:p-fq#:$epAX^`o)%qUn,DbSli-2Kkl0]Cj87d6hYu@1g]#q+f`'G#eGdnq +d/2/gcMl)fbl5fbb5TK`a2e%srl4iSdDUUR_8CiA^;J77rl+cS!6=oUrlP/^rlb;brltGfrm1JgrmLep +rmh##rn7;*rn[S1qr%J6roO.CrosFJqsO@Nrq$-]rq??crqQ9bqu$?iqu2BNU]:>mp&4mfq"k!brqHEc +rq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"trmLemqp58erltGdrlb;`rlOrUrl4iSn&48) +J]"+tJ]$E`cG]_$qo8EOrlP/^rlb;brltGfrm1Mh!7:_nrmUksrn.5'rnIG.rndP1ro=">roj@Grp0IL +qsaUVrq-3`rqHEeq"jmcqu-EkVuNdsrr2]krqucmrqcWirqQKerq??arq-*XrpTjSrp0RJroX4@ro="9 +rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrkeQKqnW3GrkSNJrk@^3!PQ0t]S!kJ]Z.VN^&,PC +_#D+G_#D1I_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[ +p&=[ap\sseq>U6iqu6NgrVQSFs8)cprqQHkr;QQnq>pHhrqZQgrqHEcrq69_qsj[SrpKdOrosFEroF(= +ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`Pqn`0FrkJHJrkJHHl+NLtJ\6QHYe9>9qnE'F +rkJ?Grk\KKrkn`Rrl+lWrlP/^rltGfqp>>jrmUktrn.5)rndY3ro!e9roO.ArosFJrpKdSrp]pWrq-3_ +rq??crqQKgrqcWkrquQiqu6QoJcG`Lrr2]krqucmrqcWirqQKerq??arq-*XrpTjSrp0RJroX4@ro="9 +rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrk\]P_>V4I_#D+J_#D+J^?N=^]W\u!]UHM"^&>YG +^:sT^rkJ?Grk\KKrkn`Rrl+lWrlP/^rltGfqp>>jrmUktrn.5)rndY3ro!e9roO.ArosFJrpKdSrp]pW +rq-3_rq??crqQKgrqcWkrquQiqu2fZkl:Y]q#13irql]krqZQgrqHEcrq69_qsj[SrpKdOrosFEroF(= +ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`Pqn`0FrkJHJrkJHHl+P'KJ\6QHKY6ZbqnE'F +rkJ?Grk\KKrkn`Rrl+lWrlP/^rltGfqp>>jrmUktrn.5)rndY3ro!e9roO.ArosFJrpKdSrp]pW!VH!a +o`"O_pAXgcq#:*gqYpBkr:p6frdk*Ks8N#mrVl`oqu6Hkq>U0gp\smcp&=U\nc&"Vmf)POl2KiEjSn3= +i;VX5hYu:/g&BS%e,Iemd/M>ic2PlbaSs6Z`W!gT_u@OM_>D%I^])%J^](t3]r\kt]Rd_d]^3?/^AbqI +^\bhG_>D+K_u@UR`W!pWao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3i;Vd9jo4EAl2L#Jmf)\SnG_tWo`"O_ +pAXgcq#:*gqYpBkr:p6frdk+>s8N#mrVl`oqu6Hkq>U0gp\smcp&=U\nc&"Vmf)POl2KiEjSn3=i;VX5 +hYu:/g&BS%e,IemciD>lcHcF6rlY5]rl>#Wrl"fRrkeQKqnW3GrkSNJrk@X1J\91=J\6QHrk.U2qnE'F +rkJ?Grk\KKrkn`Rrl+lWrlP/^rltGfqp>>jrmUktrn.5)rndY3ro!e9roO.ArosFJrpKdSrp]pWrq-3_ +rq??crqQKgrqcWkrquQiqu3f!K`D&Nq#13irql]krqZQgrqHEcrq69_qsj[SrpKdOrosFEroF(=ro!e5 +rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`PqnW#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro=">roX4Erp0ROrpTjUrpg![ +rq69arqHEerqZQirql]mq#1*hNW5mUrr2]krqucmrqcWirqQKerq??arq-*XrpTjSrp0RJroX4@ro="9 +rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrkeQKqnW3GrkSNJrk@j7qn7QnLV/2N_S#6KqnE'F +rkJ?Grk\KKrkn`Rrl+lWrlG2`aoKT`c2Q#cd/MJme,Iqtf`'Y)hYuF3i;Vd9jo4EAl2L#Jmf)\SnG_tW +o`"O_pAXgcq#:*gqYpBkr:p6friQ4&s8N#jrVl]nqYpic2PlbaSs6Z`W!gT_u@LO_#D+G^&G\A]DfD=\c0,-\,Ead[Xkl<[_oQB\,3]7 +\biu;]DK8?^&GeG_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+hYuI4j8S-=kPj`FlMg2Mn,DhU +o)A7[p&=^_q#:*gqYpBbrVleIs8Dusrq66hqu6Elq#U#[rlY5brm1SjrmUksrmq)&rnIG/ro!e9roF(ArosFIrpB^Rrp]pX +rq$-^rqHU0dp\sjbo`"F\nG_kTmJcDMkl0cEjSn0_7L^\b_D]_f>?])0&;\F6oA[Xkl<[XkmU\,3]7\biu; +]DK8?^&GeG_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+hYuI4j8S-=kPj`FlMg2Mn,DeWo'ueO +rq$-^rqH#[rlY5brm1SjrmUksrmq)&rnIG/ro!e9roF(ArosFIrpB^Rrp]pXrq$-^ +rqH2^aSs6Z`W!gT_u@LO_#D+G^&G\A]DfD=\c0,-[t2!,[Xkl<[emN%\,3]7\biu; +]DK8?^&GeG_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+hYuI4j8S-=kPj`FlMg2Mn,DhUo)A7[ +p&=^_q#:*gqYpBbrVlf"s+gXRrq66hqu6Hkq>U0dp\sjbo`"F\nG_kTmJcDMkl0cEjSn0_7L^\b_D]E,XVrO`'?qml^9n$dkVUUG`^S[S!rqmcX9!4r*> +rk&'?rk8%n$i2(rjhp;rk&'? +rk89pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b(f)F+s +d/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z2LnXY^s$0Yf!^@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAOo)A:YpAXgc +q>:$cr;6Hire(7Mrq66hr;QQkq#U@]`,\C_#D4M_u@XSao9K_ +c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6Hirj)Q]s8N#jrVl`oqYU*c +p\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\Giu: +[K3eDrO)X3qm61*o!*bMUTfrjMg6rj2U0qlp(' +riZ7&riGmqri5amoVd>>JZ+-u\u>D'ql9OoriH+$riZ7(qlp()rj2U3rjVm:rk&0CrkJHJrkn`SrlP/_ +rm(MhrmC_orn.5(rndY3ro*k:roa:Frp0RPrp]pWrq$-]rq69brqQKgrqcWkrqucoqu26Jrr2fnrqucm +rqcWirqHKf!Vc?fp&=U_oD\:ZnG_nUli-/JkPjN@ir7j7hYu:/f`'A!df.SlcMl#dao99Y_u@IN^](nF +]Df>>[f3]6Zi79-Yl:j*Y5YR&XSAjqWq`QNW.CmuW2-BeWV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,> +^&GeG_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6Nm +rVQQos+LFOrqlZnr;QTmqYp>[f3]6Zi79-YQ:r2!3cC)riQ1$poFCopo/hCTW!F?Ni;`PrMfmuWr&jrXT#@$ +Y5YX%Yl:p,Zi7B3\,No:]DfMC^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`Fli-APnG_tW +oD\C]p&=^bq#:*gqYpBkr;QZlrg*TPs8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S'; +hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>EsX8]-oWOAaVW.Cmu +W;*=dWV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6 +j8S6@l2KuLn*^8Frp]pWrq$-]rq69brqQKgrqcWkrqucoqu20HZN'q'rr)iprqucmrqcWirqQKerq69_ +rq$-Zrp]pUrp0RJroa:@ro3q7rndY/rn.5!rmLelrm(MdrlP/Yrkn`NrkJHFrk&0>rjMg6rj2U0qlp(' +riZ7&riGmqri5amSZ%+rk8L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhU +nc&.Zo`"O_p\sseq>U6iqu6NmrVQSUs/c8"rqlZnr;QTmqYp>[f3]6Zi79-Yl:j*Y5YR&XSAjqWq`RgW.Cmu +W.CnUW;*@hWr&jrXT#@$Y5YX%Yl:p,Zi7B3[fO"K!4`$?rk8I(cUZS;@Tn/ngTsgZWUAgq_V#I4iVZ*LmWV`^pX8]:$YPtg+ZMq92\,Nr;^&GeG_>_@O +`r='Ybl5oed/MPof)FA%h>Z=2iVqsZ+,fDa;!d/M>ibl5]_`W!dS +_>_4K^&GSA\,Nf7ZMq-.YPt^(XS]$sW;`^oVZ*FhV#-qLU9C8ATn/o4U#r*KU\LYaV>d@kVuE[mWrB'u +Y5YX(Z2V'.[JmZ7\c0;A^])(K_u@[TaSsE_cMl2ieGe%ug&Bh,hu;U6jo4HBl2L&Kmf)_To)A7[o`"R` +p\ssbqYpBerIP"Fs7lQiqu6Hkq#:$epAX^`oD\=[nG_kTm/H8KkPjTBiVqa6h>Z+,fDa;!d/M>ibl5]_ +`W!dS_>_4K^&GPB[fNtIrjDa2riuI+riZ7%ql9Xorhoamrh]LfqkN;JJYCA_JY@ajrhAYOrhK7arh]Uk +rhoapql9XrriZ7(riuI.rjDa7rji$ArkJHKrkn`TrlG)_rm(Mirm^qurn7;,rnm_6roO.BrosFKrpKdT +rpp'[rq-3`rqHEeqtgTn/o7U#r*K +U\^beUnn!drhf[mri,dpri?%$ric=+rj)O2rjVm;rk85 +MP5TpaJ%ajrhK7arh]Ukrhoapql9XrriZ7(rilL0Z2h30[JmZ7\c0;A^])(K_u@[TaSsE_cMl2ieGe%u +g&Bh,hu;U6jo4HBl2L&Kmf)_To)A7[o`"R`p\ssbqYpBerNQ=.s8N#prVl`lqu6Hkp\smcp&=R^o)%nT +m/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:iU]."bT_P/Y +T(nlHSG\n.RtdD`S'7AdSGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?] +cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\Xgdqtp_4K]`,J@ +\,N`5Z2Us+Xo>F$WrAmpV>d:iU]."bT_P/YT(nlCS?JE5Rt7'(S*?I?Sc55XTD5)YU&LhdV#I4iVZ*Up +X8]7#YPtg+Zi7H5])KAA^])(K_u@aVb5T]cci2Alec+;%h#$%/jSn<@lMg/In,DkVoD\F^pAXg`qYpBh +r;QZlre(7MrqlZnr;6BjqYp6gpAXaaoD\=Xn,D\QlMfrFj87d6h>Z.-ec+%sci25hbPoT^_u@LO^](nF +\c0);ZN.62Z*F;3riQ1$ri5sprh]UirhKIeqk3_VrgrnUm$rWrcC9BSKU_t2m%!sDrgs"Zpn7V[rhKIg +rh]Ukri5suriQ1'riuI/rjVmro!e4rn7;&rm^qorltGcrl+lSrkJHHrjr*kl0lHn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirg!N_ +rqQHkr;QTmqYpro!e4rn7;&rm^qorltGcrl+lSrkJHHrjr*< +rj2U/ric=%ri5srrhKIerh'1_rgs+ZrgNhSrg<\Org*PKplkK9nr]?%JWPGEY`SO?plbE9rg!JKrg3VO +rgEbSrg`tYrh07_rh9=dri#gqri?%%riuI/rjVmroj@H +rpTjUrpg![rq69arqQKgrqcWkrqu`n!WDuorg!N_rqQHkr;QTmqYpr0.,Frg*PMrg<\QrgNhVrgj%]rh'1`rhKIkri,mtric=+rj2U5 +rjr*CrkJHLrl+l[rm(Mirm^qurn7;-ro!e8roX4Drp'LOrp]pWrq-3_rq??drqZQirql]mqu-EkTE"Zc +rr2]krqucmrqcWirqQKdrq69_rpg!WrpTjOroj@Dro3q8rndY-rn%/!rm:Yhrlb;[rkn`MrkABCrjVm5 +riuI+ri?$uri#gkrhBCarh07^rg`tVrgEbQrg3VMrg!8Bplb31`K5Y4JWPPHoo]$4plk]Brg*PMrg<\Q +rgNhVrgj%]rh'1`rhKIkri,mtric=+rj2U5rjr*CrkJHLrl+l[rm(Mirm^qurn7;-ro!e8!TrMEk5OTD +lMg8OnG_tWo`"O_pAXjdq>U6iqu6NjrVQSFs2=s:rqQHkr;QTmqYpU6iqu6NjrVQSQs8N#mrVl`o +qu6Hkq>U0gpAXaao`"C[nG_nUlMg#Hk5OB>i;VU4g&BV&eGdhoc2Poc`W!dS^](tH])K2roj@HrpTjU +rpg![rq69arqQKgrqcWkrquZlqu45-PQ1X]q#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4 +rn7;&rm^qorltGcrl+lSrkJHHrjr*kl0lH +n,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirji'>s8N#mrVl`oqu6Ejq#:$ep&=U_o)A.Xmf)SPkl0`Dj8S!9 +h>Z1.f)F.td/M;hao9_4K]`,D>[JmK2YPtU%WW&anV#I(eTDkA[S,SfSQi<_IRao9Qad/MPof)FG'h>Z@3j8S3?kl0rJmf)_To)A7[p&=^bq#:*gqu6NjrVQSZs8N#m +rVl`oqu6Ejq#:$ep&=R`ncA=Prp]pTrp9XJroX4?ro!e3rnIG'rmUknrltGarl4rRrkJHFrjVm7rj)O, +ri?$trh]Uirh9=`rg`tWrg<\Org*PJrfd>EqiUl=rfI,?rf6l8nr/lmJW#);Z]"1/rf-f8rfI,?rfI,A +rf[8ErfmDJrg3VOrgWnXrh'1`rhKIhri,muric=,rjDa7rk/6Erk\TRrlP/arm:Yormq)'rn[S3ro="? +roj@JrpKdTrpp'[rq69brqQKgrql]mrVZcqrVQSZs8N#mrVl`oqu6Ejq#:$ep&=U_o)A.Xmf)SPkl0`D +j8S!9h>Z1.f)F.td/M;hao9_4K]`,D>[JmK2YPtU%WW&anV#I(eTDkA[S,SfSQi<OT(=?OT(CAP5^[EPl@!JQi_IRao9Qad/MPof)FG'h>Z@3j8S3?kl0rJmf)_To)A7[p&=^bq#:*gqu6Nj +rVQSds7cQmrqQHkr;QTmq>U0gp\sjbo`"F\nG_kTm/H5Jk5OE?i;VR3g]#e'e,I_nc2Pia`rd:iU&L\`SGo#WR/WHOQN!-JPQ$aBOoCF@OT(=?Nr+h,N5CL(Mh-eAMsQE%NVeb8 +OT(=?OT(CAP5^[EPl@!JQi_IRao9Qad/MPof)FG' +h>Z=5j5U."roX4Drp9XPrp]pXrq$-^rqHEerqZQjrquZlqu20H`;fi9q#13irql]jrqQKerq69_rpp'X +rpKdProj@Dro="9rn[S.rmq(trm:YhrlP/Zrk\TKrk/6>rjDa2ric=%ri,mnrhTOerh'1[rgWnSrg3VM +rfmDGrf[/@rf@&?rf@&=qi10*WJc=cJW$1Zm#:q'qi:Z;rf@&?rfR2Crfd>Grg*PMrg<\Srgj%\rh9=d +rh]UnriH+&rj)O2rjVm>rkABJrl4rZrltGhrm^qurnIG.ro!e9roX4Drp9XPrp]pXrq$-^rqHEerqZQj +rquZlqu2QSrr2]krqucmrqZQgrqHEbrq-3\rp]pTrp9XJroX4?ro!e3rnIG'rmUknrltGarl4rRrkJHF +rjVm7rj)O,ri?$trhTUj!MlOjU&L\`SGo#WR/WHOQN!-JPQ$aBOoCF@OT(=?Nr+h,N.Ho.Mh-e;MsQE% +NVeb8OT(=?OT(CAP5^[EPl@!JQi_IRao9Qad/MPo +f)FG'h>Z@3j8S3?kl0rJmf)_To)A7[p&=^bq#:*gqu6NjrVQT+s-*K^rqQHkr;QTmq>U0gp\sjbo`"F\ +nG_kTm/H5Jk5OE?i;VR3g]#e'e,I_nc2Pia`rd:iU&L\`SGo#WR/WHO +QN!-JPQ$^GOcfU)rf@&?rf@&=qi10*JW$C`JW$:]m#:q'qi:Z;!07/AO8b7?OoCOCPQ$gGQN!6MR/WTS +Sc58\U&LhdV>dInXT#F&ZMq92\,O&>^AbtJ`r=*Zc2Q)heGe%ug]$%.i;Vd9k5OTDm/HGPnG`"XoD\F^ +p\sseq>U9jr;6HirgEeos8N#mrVl`oqu6Ejq#:$ep&=U_o)A.Xmf)SPkl0`Dj8S!9h>Z1.f)F.td/M;h +ao9_4K]`,D>[JmK2YPtU%WW&anV#I(eTDkA[S,SfSQi<rkABJ +rl4rZrltGhrm^qurnIG.ro!e9roX4Drp9XPrp]pXrq$-^rqHEerqZQjrquZlqu4/+\c;[.qu-Nlrql]k +rqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Marl+lQrkABDrj_s5rilC)ri,morhKIcrgs+[ +rgEbPrg!JGrfR2@rfI,>rf-o9repZ2re^W1qhO]rJVJ`1JVLOdreLK/re^N0repc7rf-o;rfI,?rfR2C +rg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJrl+lXrm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\ +rq??crqQKhrql]mrr)`nQ2gj_qu-Nlrql]krqQKerq??`rpg'Xr9sXOrp'LFro="9rndY/rn.4urm:Yi +rlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,LPCA7 +JVKbNreLK/re^N0repc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJrl+lX +rm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\rq??crqQKhrql]m!;ursrVQSZs8N#prVl`oqu6Hkq#:$e +pAX^`o)%nTm/H;Lk5OE?i;VU4g]#k)df.VmcMkoa`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[RJrQP +Q2ZsGOoCF@O9(B%!07&N20MuJ\7NW+t;OT(=?OoCOC +Q2[-LRJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nugA]t.i;Vg:k5OZFm/-8No)A:\ +pAXgcq#:-hqu6NmrVQSds7cQmrqlZnr;QTmqYp9hp\smco`"FYn,D\QlMfrFj8S!9hYu:/f`'=ud/M>i +aSs0X_>_1J]Df>>ZMq*-Y5YF"VZ*@iT`1P^Sc5&VQi<9LP5^UCO8b7?NrG%;N;eb4MZ/J3M#2t6L4P)1 +L4P*MLAlu-M#N8.MZ/P5N;eh9NrG.>O8b:@P5^aGQi_FQ +aSsKad/MJmf`'V(h>uQm!9!k;roX4Frp9ONrpp'\rq??crqQKhrql]mrr)`nJcE[grr2fnrqucmrqcWh +rqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%V +rg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,RYHBJJVK);reLK/re^N0repc7rf-o;rfI,?rfR2Crg!JL +rgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJrl+lXrm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\rq??c +rqQKhrql]mrr)`nN;rnVqu-Nlrql]krqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Marl+lQ +rkABDrj_s5rilC)ri,morhKIc!1j4_T)P;[RJrQPQ2ZsGOoCF@OT(:>NW+n9Mu/D2M>i>.LOk2jL4P)1 +L?sZoL]3,/M>N20MuJ\7NW+t;OT(=?OoCOCQ2[-LRJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sX +cMl2idf.nugA]t.i;Vg:k5OZFm/-8No)A:\pAXgcq#:-hqu6NmrVQT+s-*K^rqlZnr;QTmqYp9hp\smc +o`"FYn,D\QlMfrFj8S!9hYu:/f`'=ud/M>iaSs0X_>_1J]Df>>ZMq*-Y5YF"VZ*@iT`1P^Sc5&VQi<9L +P5^UCO8b7?NrG"=N/RaqrepZ2re^W1qhK`WQ\L'GNe[OgreUQ1rJCW5MZ/P5N;eh9NrG.>O8b:@P5^aG +Qi_FQaSsKad/MJmf`'V(hYuI4jSn<@lMg/In,DnWo`"R` +p\sseqYpBkr;QZlrgEeos8N#prVl`oqu6Hkq#:$epAX^`o)%nTm/H;Lk5OE?i;VU4g]#k)df.VmcMkoa +`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[RJrQPQ2ZsGOoCF@OT(:>NW+n9Mu/D2M>i>.L\6CQL4P)1 +L9QF3L]3,/M>N20MuJ\7NW+t;OT(=?OoCOCQ2[*NR@+&Crgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQ +rlG)arm:Ymrn.5(rndY4roF(@rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu4/+]`8!1qu-NlrqcNfrqHEc +rq-3[rp]pUrp'LHroX4>rnm_2rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>C +rf@&=repc5reUH*re19&qgnEjmXKe;JU`6#[t!t!rdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_ +rh]UmriH+&rj2U4rk/6Erk\TSrlb;ermC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)`n +T)\fhqu-NlrqcNfrqHEcrq-3[rpTpV!UoLVlMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70- +XT#0tV>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=PHIt<*#J"_A_JGt,sK):6#L&Qo-M>iG4 +NrG+=OT(ICQN!9NSc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lHn,DhU +nc&1[p&=^bq>:!gr;?KlrVQScs8N#prVl`oqYU*fp\smco`"C[nG_nUlMg#Hk5OB>hu;I2fDa>"dJhJk +b5TH\_>_4K]`,A=Zi70-XT#0tV>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5M#;r,L&Qc)K):,lJ:W3=It<*- +J+nKkJGt,sK):6#L&Qo-M>iG4NrG+=OT(ICQN!9NSc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>k +eGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^bq>:$cr;QZlrh]Yks8N#prVl`oqYU*fp\smco`"C[nG_nU +lMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70-XT#0tV>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5 +M#2o*K`6T#Jb=PtIt<*#It<+BJ+A-hJbt&rK`6])M#N81MuJb9O8b7?PQ$mIR/WZUTDkM_V>dFmXT#F& +Zi7E4]`,YE_>_LSbPoiedJhYpf)a^`!8[Y4ro3q>roj@HrpTjUrpg![rq69brqZHfqu$Hlqu20Hc2[eB +qu-NlrqcWirqZQfrq??`rpg!WrpTjOroj@Dro3q7rn[S*rmh"qrm1Sdrl>#SrkJHFrjMg4ric=&ri#gm +rh07^rgj%Urg!JHrfI,?rf6u9reg]2qh>$&rdt#uomiBYJU`6#NdpVMrdjruqh4s&reUQ1repc9rf@&? +rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TSrlb;ermC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_ +rqHEfqtg3frr)`nQ2gj_qu-NlrqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2rn%/"rmC_krlY5\rk\TK +rk/6=rj2U-riH*trh]Uergs+[rg3\N!L8rLPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=PEJ$siXIt<+dFmXT#F&Zi7E4]`,YE_>_LSbPoiedJhYpfDaV* +i;Va8k5OTDlMg8OnG_tWo`"O_p\t!cqYU3irVQT1s-E]arqlZnr;QQiq>U-fpAX^`nc&%Wn,DVOkl0`D +ir7j7h>Z%*ec*tqci2)da8WpS^](nF[f3W4YPtX&W;`XmT`1P^Sc5#UQ2[!HOT(=?NrFt9MZ/G/L&Q`+ +JqiG4NrG+=OT(ICQN!9NSc58\T`1eeW;`mtYPtm- +[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^bq>:$cr;QZlrh'5#s8N#prVl`o +qYU*fp\smco`"C[nG_nUlMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70-XT#0tV>d.eT)P;[ +R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=QaIt<*#It<*UJ+A-hJbt&rK`6])M#N81MuJb9Nrb?(!0I2D +rg*PNrgj%\rh07eri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r!rn[S3ro3q>roj@HrpTjUrpg![rq69b +rqZHfqu$Hlqu4A1^]4<4qu-Nlrql]krqZQgrq??`rq$-YrpKdProj@Dro="9rn[S-rmh"rrm1Sdrl>#U +rkABCrjVm3riZ7$rh]Uhrh07\rgEbPrfd>Drf@&:reg]3re:?)re(3$rdautrdO`mrd=Kfrd+*[JU)fl +JU+_Mrd+HgqgABkqgSNordb!!re(3're:?.reg]5rf@&@rfd>JrgEbUrh07crh]UpriZ7*rjVm#\rm1Slrmh#%rnRM2ro="?roj@JrpKdTrq$-^rq??drqZQirql]mqu-NnU&Y,kqu-Nlrql]krqZQg +rq??`rq$-YrpBdQ!UT1Pkl0`Dj8S!9h>Z.-ec+"rci2)da8X!U^Ab_C\,NZ3Y5YL$V>d7hT`1J\RJrQP +PQ$^DO8b(:MZ/J3L&Qc)KDpH$JGt&tIf"QmI/&'fHA?csH%C77H2`-eHi&3iIJ\KmJ,XutJc:<$K`6]) +M>iD3MuJe:OoCRDQigBnqtpBjqu-NnU&Y,kqu-Nlrql]krqZQgrq??`rq$-YrpKdProj@Dro="9rn[S- +rmh"rrm1Sdrl>#UrkABCrjVm3riZ7$rh]Uhrh07\rgEbPrfd>Drf@&:reg]3re:?)re(3$!J#\#JGt&t +If"QmI/&'fH@^@4H%C7!H2`-eHN8HkI/\QkIf=irJGt-!KDpQ'L&Qr.MZ/P5O8b:@PQ$pJRJr`UT`1_c +V>dOpY5Y^*\,Nu<^Ac%La8X6\ci2Alec+;%h#?72j8S3?kl0rJmf)_ToD\F^pAXjdq>U6iqu6NjrVlem +s8DusrqlZnr;QTmqYpi5.K`6W'Jc:3!J,XooIK"WhHiA>tH%C6lH%C86H2`-eHi&3i +IJ\KmJ,XutJc:<$K`6])M>iD3MuJe:OoCRDQiJrgEbUrh07crh]UpriZ7*rjVm#\rm1Slrmh#%rnRM2ro="?roj@JrpKdTrq$-^rq??d +rqZQirql]mqu-NnR/d0bqu-Nlrql]krqZQgrq??`rq$-YrpKdProj@Dro="9rn[S-rmh"rrm1Sdrl>#U +rkABCrjVm3riZ7$rh]Uhrh07\rgEbPrf[>E!KiNDO8b(:MZ/J3L&Qc)KDpH$JGt&tIf"QmI/&'fH@^@P +H%C6lH1-%XHM`'dI/\QkIf=irJGt-!KDpQ'L&Qr.MZ/P5O8b:@PQ$pJRJr`UT`1_cV>dOpY5Y^*\,Nu< +^Ac%La8X6\ci2Alec+;%h#?72j8S3?kl0rJmf)_ToD\F^pAXjdq>U6iqu6NjrVlf4s-`odrqlZnr;QTm +qYpi5.K`6W'Jc:3!IfY"I!.Ofnrd=Kfrd'-@Q[+.-Oa6qPqg83f!.=lrIJ\KmJ,Xut +Jc:<$K`6])M>iD3MuJe:OoCRDQiU0gpAX^`oD\7Ymf)SPkl0`D +j8S!9h>Z.-ec+"rci2)da8X!U^Ab_C\,NZ3Y5YL$V>d7hT`1J\RJrQPPQ$^DO8b(:MZ/J3L&Qc)KDpH$ +JGt&tIf"QmI/&'fHM)Q7H%C6lH*_eqHM`'dI/\QkIf=irJGt-!KDpQ'L&Qr.M?/Wn!/pi;rfR2Drg3VP +rg`t\rhKIhri?%$riuI3rjr*Crkn`UrlY5drmLerrn@A,ro!e9roX4Drp9XPrp]pYrq69arqQKgrqcWk +rquZlrr0\4_Z0W7q#13irql]krqQKerq-3\rp]pUrp9XMroa:Aro!e4rnIG)rmC_krlkA\rkeZLrji$: +riuI*ri5sprh07^rg`tRrfmDErf@&;reg]0re19'rdautrdOiprd=]lrd+Qhqfr*arc\0]nT9>(JTQHb +Zul:irc\9bqfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJrg`tZrh07fri,n"riuI1rji$C +rkeZRrlkAermC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-EkVuQbqq#13irql]krqQKe +rq-3\rp]pUrp0XN!UK(NkPjQAi;VU4g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniRPl?gE +O8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpdG5HE;FFeObFImURFoHR`GPcXaH2`-hHiAElIK"]p +J,XutKDpT(LAm)0N;en;OoCUEQN!ERT)PD^VZ*RoY5Y^*[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4jSn?A +li-;Nn,DhUoD\C]p\t!fq>gBnqtpBjqu-EkVuQbqq#13irql]krqQKerq-3\rp]pUrp9XMroa:Aro!e4 +rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sprh07^rg`tRrfmDErf@&;reg]0re19'rdautrdOip!IT7p +I/\KlHN&3eGlDpdG5HE5FIdN)FGP&MkPjQAi;VU4g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniR +Pl?gEO8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpdG5HENFFeObFGk8?FoHR`GPcXaH2`-hHiAEl +IK"]pJ,XutKDpT(LAm)0N;en;OoCUEQN!ERT)PD^VZ*RoY5Y^*[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4 +jSn?Ali-;Nn,DhUoD\C]p\t!fqYpBkr;6Hirgs/hrqQHkr;QTmqYp9hp\sgao)A.Xn,D\Qli-)HjSn*: +hYu:/f`':tci2/f`W!aR^](eC[f3Q2Y5YI#VZ*7fT)P8ZQN!-JOoCCAMuelrreg]0re19'rdautrdOip +rd=]lrd+Qhqfr*arc\0]JTSGEJTQHblu`5Lrc\9bqfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@ +rfmDJrg`tZrh07fri,n"riuI1rji$CrkeZRrlkAermC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQi +rql]mqu-Ek`;cA-rr2]krqucmrqcWhrqHEarpp'XrpTjQrp0RHroF(:rndY/rn.4trm1Sfrl+lRrkJHC +rjMg2riZ7#rhf[frgs+Zrg*PJrfR2@rf$i6reCE*re(3#rdXorrdFcnrd+ZlH2r9jH2DjcGQ)d_Fb+Y$ +FFeOoFT-F^G5c^aGQE&6rd"Khrd4WlrdFcprdXotre(3(reCE0rf$i;rfR2Erg*PRrgs+^rhf[oriZ7* +rjDa9rkJHLrl+l\rm(Mjrn.5(rndY4roF(Arp0RNrpTjUrq$-]rqHEfrqcWkrquZlqu3>i^An33q#13i +rql]krqQKerq-3\rp]pUrp9XMroa:Aro!e4rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sprh07^rg`tR +rfmDErf@&;reg]0re19'rdautrdOiprd=]lrd+Qhqfr*arc\0]olPb,JTQHbY]Tkerc\9bqfr*crd+Qj +rd=]nrdOirrdb!#re1B-L&cu-MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'("Z2V01\c0AC_Z%ORbl5oedJhet +gA]t.i;Vg:kPjfHmJcSRnG`%Yo`"Uaq>U6iqu6NjrVQT2s2+g8rqlZnr;QTmqYp9hpAXaaoD\=[n,D\Q +lMg#Hj8S$:hu;:-ec*tqcMkuc`r0rU]-nbS,ScRPl?dDNW+k8L&Q`%JGt#sI/\Ej +GlDmcFT-@YErL(RE;jeTE;OSGDLl\VDLl]:DYnAOE;jeNE;jkSErL.ZFT-I_GQ)meI/\QkJGt3#L&R#0 +NrG.>Pl@$KS,T&ZUAh"gXo>R(ZMqH7^&GhH`r=*ZcMl5jec+5#hu;U6j8S9Al2L&Kn,DkVoD\F^p\sse +qYpBkr;QZlrhoeqrqlZnr;QTmqYp9hpAXaaoD\=[n,D\Ql2^#Kkii$+ro*k6rn.5#rmC_jrlY5[rkSNH +rjr*7ric='rh]Uhrh'1Zrg3VKrfI,=repc0re()urdOiord"Kfrc\9_rc@sWrc.^PrbqdTqeq@0JSp$V +Ui-'Jrc%jTpi-4Pqf;[WrcJ-_rce?erd=]nqgeZure:?0rf6u>rfmDKrgWnZrhBCgriQ1(rj)O7rk8rfmDKrgWnZ +rhBCgriQ1(rj)O7rk8d7hTDk>ZQi<6KOT(7=MuJG0KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDk1csDLl\fDYnAOE;jeN +E;jkSErL.ZFT-I_GQ)meI/\QkJGt3#L&R#0NrG.>Pl@$KS,T&ZUAh"gXo>R(ZMqH7^&GhH`r=*ZcMl5j +ec+5#hu;U6j8S9Al2L&Kn,DkVoD\F^p\sseqYpBkr;QZlrgs/hrqlZnr;QTmqYp9hpAXaaoD\=[n,D\Q +lMg#Hj8S$:hu;:-ec*tqcMkuc`r0rU]-nbS,ScRPl?dDNW+k8K`H`+K7j&OrdOio +rd"Kfrc\9_rc@sWrc.^PrbqdTqeq%']P`:Pl@$KS,T&ZUAh"gXo>R( +ZMqH7^&GhH`r=*ZcMl5jec+5#hu;U6j8S9Al2L&Kn,DkVoD\F^p\sseqYpBkr;QZlrhBG,s8N#prVl`o +qu6Hkq#:!dp&=R^o)A+Wm/H;Lkl0WAiVqa6f`'G#dJhGjb5TE[_#D%H])K#7YPt['V>d7hTDk>ZQi<6K +OT(7=MuJG0KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDtn4$DLl\VDROH[DuO_TDtn;NEVjeUF8g:\ +G5c^bH2`3jI0"kKrIFm"re:?0rf6u>rfmDKrgWnZrhBCgriQ1(rj)O7rk8_.I\c0#9YPtU%W;`OjT)P5Y +Q2[!HO8b+;M#N,-Jc:/uIK"QlGlDpdFT-@\ErL%WDu4GOD>S/HCOp5OC4U,hCAr#DD#S;KDZ4SRE;jnW +F8g:\GQ)meHN&?lJ,Y#uL&Qo-N;en;P5^aGS,T&ZUAh+jX8]=%[Jm`9^&GkI`W"!Yci2Alec+>&hYuL5 +k5OTDlMg5NnG`"Xp&=[apAk!iq>($drqlKhVuQPjrql]krqZQfrq??arpp'XrpKdNroj@Dro*k5rnIG& +rmLelrlP/Zrk\TIrji$9ric=%ri#gjrgs+Yrg!JHrf@&;reUQ-rdk&urdFclrcnEdrcJ-\rc8!W!H2lV +Du4GOD>S/HCOp5eC4U,RCAquKD#%oHD>S5MDuO_TErL.ZFT-L`H2`-hIK"`qJc:B&M#NA4O8b=AQ2[9P +TDkSaW;`jsYPts/\c0;A_>_FQao9Wcdf.erg]$(/iVr!=kl0lHmf)_To)A=]pAXgcq>U6iqtU,grrE)o +rVl]nqYpBrf$i4re:?&rdXoqrd+Qgrce?`rcA'Zrc%jT +qelCMqeZ.FP\PbaJSL!UrbM:Frb_OMrbqdTrc8!ZrcJ-`rd"KhrdFcqrdk'&reUQ4rf@&Arg!JPrh'1a +ri#gsric=/rji$Ark\TQrlP/crmLerrnIG/ro*k=roj@HrpKdTrpp']rq??crqZQirqlKhT)\Tarql]k +rqZQfrq??arpp'XrpKdNroj@Dro*k5rnIG&rmLelrlP/Zrk\TIrji$9ric=%ri#gjrgs+Yrg!JHrf@&; +reUQ-rdb'!!IoUuIK"QlGlDpdFT-@\ErL%WDu4GOD>S/HCOp6,C4U,NC?]L4C\V`FD>S5MDuO_TErL.Z +FT-L`H2`-hIK"`qJc:B&M#NA4O8b=AQ2[9PTDkSaW;`jsYPts/\c0;A_>_FQao9Wcdf.erg]$(/iVr!= +kl0lHmf)_To)A=]pAXgcq>U6iqtU-.s.',arVl]nqYpS/HCOp5_C4U,XCAr#FC]S?grb_OMrbqdTrc8!ZrcJ-`rd"KhrdFcqrdk'&reUQ4rf@&Arg!JPrh'1a +ri#gsric=/rji$Ark\TQrlP/crmLerrnIG/ro*k=roj@HrpKdTrpp']rq??crqZQirqlKhUAqt-q#13h +rqcWirqHEcrq69]rp]pTrp'LHroX4=rndY/rmh"rrm1Scrl4rRrk8B +rf$i4re:?&rdXoqrd+Qgrce?`rcA'Zrc%jTqelCMqeZ.FmqRDgJSKaNX_RiNph]qHqelCOrc%jWrcA'\ +rce?e!IB%lHN&?lJ,Y#uL&Qo-N;en;P5^aGS,T&ZUAh+jX8]=%[Jm`9^&GkI`W"!Yci2Alec+>&hYuL5 +k5OTDlMg5NnG`"Xp&=[ap\t!fqYpBerPJTRs8N#prVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+ +df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiAnAN +C]8)GC&Vf4BDuNAAV"EDAV"F1Ac$*1BDZBAC&;ZEC]8/LD>S5ME;jkVF8g=]H2`0iIf=irKDpW)N;ek: +OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTDmJcSRnG`(Zp&=^bq>:$cr;QZl +rilG%rqlZnr;QQiq>U-fpAX^`nG_kTmJc>KjoFEBj5^-srnRM+rmLelrltG^rkeZLrji$9rilC&rhf[h +rh'1Yrg3VGrf6u:reCE)rdXorrd4WircS3^rc.pVrbqdRrb_XNrbMLJqe?%Clt?<0P@];VJRtrpqe#D3 +qe5tCqeH+GrbVRNqelCPrc.pYrcS3crd4WnrdXp"reCE2rf6u>rg3VRrh'1arhoarrilC0rji$Crkn`T +rltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rq?Eg!VuQgqYU3irVQSus8N#prVl`oqYU*fp\smco`"@Z +mf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiArg3VRrh'1arhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2ro="?roj@K +rpTjUrq-3_rqHEfqtg3frr)`nYl=b'rW)rprVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Sl +c2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiAnANC]8)G +C&Vf4BDuMXAV"EDAV"FiB(BU3B`;`CCAr#JD#S;KDZ4VSEW1%YFoH[cHiAKnJ,Y*"LAm/2NrG.>Qirg3VRrh'1arhoarrilC0rji$Crkn`TrltGh +rmLf!rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`nVuQbqqu-NlrqcNfrqHEcrq-3ZrpKdQroj@D +ro="9rnRM+rmLelrltG^rkeZLrji$9rilC&rhf[hrh'1Yrg3VGrf6u:reCE)rdXor!.+`nHiAnANC]8)GC&Vf4BDuLoA]853AV"FiAc$*1BDZBAC&;ZEC]8/LD>S5ME;jkVF8g=]H2`0i +If=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTDmJcSRnG`(Z +p&=^bq>:$cr;QZlrlY85s8N#prVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L +\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiAnANCB80b!,DCFrb1Y2 +rap^mULf!fSRq\1nn7i5!,2IJC&;ZEC]8/LD>S5ME;jkVF8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&Z +UAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTDmJcSRnG`(Zp&=^bq>:$cr;QZlri#k5s8N#p +rVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*G +NrG":LAli)J,XorHiAnANC]8)GC&Vf4BDuLoAV"EDA\VgRB(BU3B`;`CCAr#J +D#S;KDZ4VSEW1"[F`d\,rd"KirdOirre(3)rf$i:rfI,GrgWnZrhBCiri?%&rjDa9rkJHMrl4r^rm:Ym +rn7;+ro!e9roX4DrpB^Rrp]pZrq69brqZHfqu$Hlqu4\:`W,r:rr)iorql]krqQKerq-3\qsaUPrp'LE +ro="8rnIG(rmUknrlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^P +rbDFGrb)+>rabn9raPG,nR-oUJRF%:Zs`Q8qdTP7qdf\;rb)4ErbDFLrbqdTrc8!ZrcS3erdFcrre(3* +rf$i;rfd>Irgj%]rhKInric=,rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]m +rr)`nYlF_%rr)iorql]krqQKerq-3\qsaUPrp'LEro4"9!T2f6g]#h(e,I_nbPoQ]_#D"G\c/o6Y5YL$ +U]-qcSc4rSPQ$XBN;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*r_@"D^:@%Ld!@JaO5 +A,Bg9Ac??AC&VlHD>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X9] +d/MMnfDaP(hu;X7jo4QEm/-;OoD\@^pAt$_rqZQirql]mrr)`nYlF_%rr)iorql]krqQKerq-3\qsaUP +rp'LEro="8rnIG(rmUknrlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!W +rbh^PrbDFGrb).?!+l.?qd]V7nmR)WSR@"VLg^'fr*fJ3raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wm +rdb!#reLK3rf@&Brg*PSrh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEf +rqcWkrqucoqu3i"!WN&urr2lqr;QTmqYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ +ZMq$+X8\mnT`1M]QN!*IO8b+;M#N&+JGsurHiA0eFT-=[E;jbSD>n;LB`;ZAAc?6;A,]s.@C'?m@"D^: +@.I^u@JaO5A,Bg9Ac??AC&VlHD>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6 +^&GeJa2\2#rlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]mrr)`nJcFX-rr2oqrqucmrqcWh +rqHEarposUrpB^MroO.>rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaur +rd4WercJ-[rc%jSrb_XLrb2:Dqdob;qd]V7nmRtpJRF%:MdZ3dqdTP7qdf\;rb)4ErbDFLrbqdTrc8!Z +rcS3erdFcrre(3*rf$i;rfd>Irgj%]rhKInric=,rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUV +rq-3arqZQirql]mrr)`nVuQbqrr)iorql]krqQKerq-3\qsaUPrp'LEro="8rnIG(rmUknrlb;]rkSNG +rji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcJ3_!H`G_ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*rY +@(BZr@"D_P@.dt*@fBm7AH$0>BDuWECAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$mISc5;]U].=n +YPtj,\c0;A_#DCRbPolfe,Itug]$+0ir8'=lMg/InG`%Yo`"Uaq>U6iqu6NmrVQT:s.B>jrr2lqr;QTm +qYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1M]QN!*IO8b+;M#N&+ +JGsurHiA0eFT-=[E;jbSD>n;LB`;ZAAc?3@@q5IIraPG,JRFgPJRFLGojIi0r*oY8qdf\;rb)4ErbDFL +rbqdTrc8!ZrcS3erdFcrre(3*rf$i;rfd>Irgj%]rhKInric=,rji$ArkSNRrlb;frmUkurnIG0ro3q= +rp'LLqsaUVrq-3arqZQirql]mrr)`nW;j^6rr2oqrqucmrqcWhrqHEarposUrpB^MroO.>rnm_0rn%.u +rm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jSrb_XLrb2:Dqdob; +qd]V7nmV3!JRF%:JRG]iojR`,raYh9ral(Arb;@Hrb_XQ!H;uXE;jnWF8g=]HiAHmJGt3#L]383O8b@B +QN!HST`1_cX8]=%ZMqE6^&GhHa8X9]d/MMnfDaP(hu;X7jo4QEm/-;OoD\C]p\t!fqYpBkr;QZlrlG,\ +s8N#prVl`oqu6Ejq#:$eoD\=[n,D_RlMg#HjSn-;hYu1,ec*tqbl5]_`;[LM])K,:YPtR$VuE@gSGnoT +P5^OAN;eS2KDpB"HiA9hG5cO]E;jbSC]8)JB`;WCAc?6>@f'U5@/F=(?LhD#>_-.2>_-.t>kMCn?N+=/ +@/aU3@fBp;Ac?<@B`;`FC]85NE;jnWG5cacHiANoKDpW)N;en;P5^jJSGo2\VuEarYPts/\c0>B`;[jW +bl6#hec+5#hYuL5jSnBBlMg2Mn,DkVoD\L`q#:*gqu6NjrVlf&s8N#prVl`oqu6Ejq#:$eoD\=[n,D_R +lMg#HjSn*uKirn.5#rmC_hrlG)WrkABCrjDa/ri5sqrh07\rg<\Jrf@&;reCE)rdXoorcnEcrc8!W +rbh^NrbDFGrau.@rac";qdKJ3qd9#&nm.GaJR!b2X^(O)nm;<&qdBD3qdTP8ral(@rb2:FrbMLNrc%jW +rc\9crd4Wore(3)rf$i;rf[8Jrg`t\rhoarric=/rji$Brl"fWrlkAhrmh##rndY5roF(Brp'LMrpTjV +rpp-a!Vc?fq#:*gqu6NjrVlf&s8N#prVl`oqu6Ejq#:$eoD\=[n,D_RlMg#HjSn-;hYu1,ec*tqbl5]_ +`;[LM])K,:YPtR$VuE@gSGnoTP5^OAN;eS2KDpB"HiA9hG5cO]E;jbSC]8)JB`;WCAc?6>@KBnGrF,\5 +qd9#&nm-fOWEb!ZQX'2hpKmc(ra5P1raG\5rac">rau.Crb;@Irbh^Src8!]rcnEhrdXp"reCE2rf@&A +rg<\Trh07gri?%%rjDa9rkABMrlG)_rmC_qrn.5,ro*k;roj@HrpB^Rrpg!ZrqHEerqZQjrquZlrr08( +rr)rsrVc]or;QTmq>U0gp\sd`o)A+WmJcDMkl0ZBiVq^5f`'G#dJhAhaSs-W^Ab_C[JmB/WrApqT`1J\ +R/W9JO8b+;LAli)J,XfoGlDmcErL%WDZ4GNCAqoGB)ZB@AH$'8@K'[3?hIar?,'Wq>_-.2>kMCn?N+=/ +@/aU3@fBp;Ac?<@B`;`FC]85NE;jnWG5cacHiANoKDpW)N;en;P5^jJSGo2\VuEarYPts/\c0;D`5DYo +rlG)_rmC_qrn.5,ro*k;roj@HrpB^Rrpg!ZrqHEerqZQjrquZlrr.KKirB#Wqu-Nlrql]jrqQKerq$-[ +rpTjRrp'LHroF(;rndY,rmh"qrlkA_rl"fMrjr*:ric=$rhoagrg`tTrf[8Arf$i2re(3"rd4Whrc\9] +rc%jSrbMLJrb2:Cral(>raPb5ra>V1oj72pVHe[WJR"XKoj.,pra5P1raG\5rac">rau.Crb;@Irbh^S +rc8!]rcnEhrdXp"reCE2rf@&Arg<\Trh07gri?%%rjDa9rkABMrlG)_rmC_qrn.5,ro*k;roj@HrpB^R +rpg!ZrqHEerqZQjrquZlrr/qtrr2fnrqucmrqZQgrqHE`rpp'WrpB^Mroj@Bro*k5rn.5#rmC_hrlG)W +rkABCrjDa/ri5sqrh07\rg<\Jrf@&;reCE)rdXoorcnEcrc/!X!H<#WDZ4GNCAqoGB)ZB@AH$'8@K'[3 +?hIar?%H8">_-.2>l.e!?1M>$?i+71@JaO5AH$0>B)ZKCC&VoIDZ4VSErL7]GlE'hJ,Y*"LAm/2O8b=A +R/WWTT`1kgX8]=%[Jm`9^Ac(MaSsE_dJh\qf`'b,iVqp;kl0lHmJcSRnc&.Zp\sseq>U9jr;6HlrlY88 +s8N#prVl`oqu6Ejq#:$eoD\=[n,D_RlMg#HjSn-;hYu1,ec*tqbl5]_`;[LM])K,:YPtR$VuE@gSGnoT +P5^OAN;eS2KDpB"HiA9hG5cO]E;jbSC]8)JB`;WCAc?6>@f'R7?sitBqd9#&nm-fOUKi@TSQthnnm2<' +!FK42@/aU3@fBp;Ac?<@B`;`FC]85NE;jnWG5cacHiANoKDpW)N;en;P5^jJSGo2\VuEarYPts/\c0>B +`;[jWbl6#hec+5#hYuL5jSnBBlMg2Mn,DkVoD\L`q#:*gqu6NjrVleps2=s:rqlZnr;QTmq>U0gp\sd` +o)A+WmJcDMkl0ZBiVq^5f`'G#dJhAhaSs-W^Ab_C[JmB/WrApqT`1J\R/W9JO8b+;LAli)J,XfoGlDmc +ErL%WDZ4GNCAqoGB)ZB@AH$'8@K'[3?hIar?%H73>_-.p>kMCn?N+=/@/aU3@fBp;Ac?<@B`;]HCMNoc +rbh^Src8!]rcnEhrdXp"reCE2rf@&Arg<\Trh07gri?%%rjDa9rkABMrlG)_rmC_qrn.5,ro*k;roj@H +rpB^Rrpg!ZrqHEerqZQjrquZlrr1"=bQ%S@qu-Nlrql]krqQKerq??_rpg!Vrp0RJroa:>rnm_1rmq(s +rm1Sbrl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4 +ra,J-r`o"uoih;sJQ[P,JQ]lnnlk]jqcs,+qd080ra5Y4raGe:ral(ArbDFKrbqdTrcJ-`rd=]ordk') +repc:rfd>Krgj%_rhoasriuI2rk&0Frl+lXrm1Smrmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]m +rr)`n\c;[.qu-Nlrql]krqQKerq??_rpg!Vrp0RJroa:>rnd_2!SlK0f)F+sci2#b`;[RO]Df8k2+l>*E*?=b0_X +=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtYGQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L( +[f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#Jn,DkVo)SIbp@eL[rqQKhrql]mrr)`n\c;[.qu-Nlrql]k +rqQKerq??_rpg!Vrp0RJroa:>rnm_1rmq(srm1Sbrl"fOrk&0Brepc3rdk&u +rd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra5b6?N=I4?Me%->k2+l>(KhU=b0_B=n5bm>Pq_&>lJ%+?N+@3 +?iFI4@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_VuEdsZ2V32]DfVF`W!sXci2Dm +f)FJ(hYuL5kPj`Fli-APnc&.ZpAXgcq#:-hqu6NmrVQT)s8N#qr;cfqr;QTmqYp9hp\smcoD\:Zn,DYP +l2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP217=b0_,=b0`H>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_T +FT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_VuEdsZ2V32])f^_!5STQrlG)brmUktrnRM0ro*k>rosFJrpTjV +rq$-_rqHEerqcWkrqucoqu20Hkl:Y]qu-Nlrql]krqQKerq??_rpg!Vrp0RJroa:>rnm_1rmq(srm1Sb +rl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4ra,J- +r`o"uoie4qJQ[P,RT]2boiq;ura#D-ra>_4ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&B +rg<\UrhBCiriH+(rjMgrosFJrpTjVrq$-_rqHEerqcWkrqucoqu3i" +rr2fnrqucmrqcWhrqHEcrq$-ZrpTjProsFFro*k6rnRM(rmLelrlG)WrkSNFrjMg2riH*srhBC_rg<\K +rf@&:reUQ)rdXoprce?`rc%jT!,M[PD#S2KBDuNBAG]g7?iFI4?iFC/?2e+">P20N=iFNp=b0`Q=n5bh +>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtYGQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L([f3o< +_#D=PaSsNbe,Iqth#?10iVr$>l2L#Jn,DkVoD\I_p\sseqYpBkr;QZlrltJ>s8N#prVl`oqu6Hkq#:$e +pAX[_nc&"Vli-/JkPjH>hu;F1f)F+sci2#b`;[RO]Df8;rE]D-nltcjJQ\aNJQ\OHnlk]j!*oG,ra#D-ra>_4ra>_6 +rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMgrosFJrpTjVrq$-_rqHEerqcWkrqucoqu3Yra8c/ +rnm_1rmq(srm1Sbrl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.? +qdKJ2ra>_4ra,J-r`o"uoicoLJQ[P,^KL,2oiq;ura#D-ra>_4ra>_6rac">!G?$FBDuZFD#SAPE;jtY +GQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L([f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#Jn,DkVoD\I_ +p\sseqYpBkr;QZlrlb>bs8N#prVQKkqYp6gpAX^`nc&"VmJc>Kk5OE?i;VO2f`':tci2/f_u@IN^&GD< +Yl:d(V#I%dSc4oRP5^OAL]2u+JGsurGlDjbE;jbSD>n2IB)Z??@K'[6?i+..>l.\'=Sl2!lJ%.?iFI4@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^V#ILq +Z2V-0^&GhH_u@mZcMl5jf`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQT)s8N#prVQKkqYp6gpAX^` +nc&"VmJc>Kk5OE?i;VL3fE'XWrmC_krlkAZrkSNHrj;[/riQ0qrh07]rg!JGrf@&6re19$rdFcjrcS3Z +rbh^Prb)4Brac":ra>_4qd'2+qcWo#qcEbtk#IUEJQ.2"X]4F_qc<\tqcNi#qcs,+ra5Y4raGe:ral(A +rb_XQrc%jZrd"Kkrdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8Kk5OE?i;VO2f`':tci2/f_u@IN +^&GDn2IB)Z??@K'[6?i+..>l7_)=oMP#=8l7_ +BDucIDuO_TFoH[cIK"crK`6c+O8b=AQ2[?R +U&LkeXo>U)[/Rc<_#D7Nbl5oedJhetg]$.1j8S3?kl0uKn,DkVo`"O_p\Xgdqu6Qkrji(.rqu]prVQKk +qYp6gpAX^`nc&"VmJc>Kk5OE?i;VO2f`':tci2/f_u@IN^&GDn2IB)Z??@K'[6?i+..>l.\'=Sl2!BDucIDuO_TFoH[cIK"crK`6c+O8b=AQ2[?RU&LkeXo>U)ZiRkR!58BIrkn`Zrm(Mjrn.5)ro!e9 +roX4DrpB^Rrpg![rq69bqtg_4qd'2+qcWo# +qcEbtk#J9XJQ.2"RT/ELqc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8G +rgj%^rhTOqriuI0rk8l.\'=Sl2!lJ%. +?iFI4@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^V#ILqZ2V-0^&GhH_u@mZcMl5jf`'Y) +i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQT=s/#bprqlZkqu6Hkp\smco`"C[n,D_Rkl0`Dj8S!9h#>t* +dJhJkbl5NZ_#D%H[/R-qT`1M]Q2ZsGO8aq6K`6N$IK"KjFoH@ZDZ4MPBDuNBAH$$:@/aO1?2e++ +=oMM(=',?%r`8/]JQ/CDJQ/1>k#DC^r)WeuqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$ +reLK6rf[8Grgj%^rhTOqriuI0rk8_4qd'2+qcWo#qcEbtk#Ht3JQ.2"^Js>qqc<\tqcNi# +qcs,+ra5Y4!F]C:@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^V#ILqZ2V-0^&GhH_u@mZ +cMl5jf`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQT;s3(H;rVl]nqYplIt)=oMP&=8l7q=&X;u9Pk^W;`mtYl;34^&GkIaSsB^d/MSpg&Bh,iVqp;k5O`Hmf)_ToD\F^ +p\t!fqYpBerOMt'rVl]nqYpbpem;QJPgtq +X\njkmo0*_qc3Vrr`Au!r`T5)ra#M1ra>_8rac"ArbDFMrc.p[rcnEkrdk'%reg]8rf[8Krgj%^ri#gt +rilC4rk8lIt)=oMP&bpelZ?WDS4DQVmNUoMbZdqc*Gmr`9#"qcNi#r`fA- +ra5Y4raYq_4r`oG,qcWo#r`B)" +pf7;mmo0!Z^JTPZJPgtqpepQZqc*Gmr`9#"qcNi#r`fA-ra5Y4raYq_OTbPolfec+8$h>ZC4jSn<@m/HGPnG`%Yp&=^bq>U6iqtU,@ +s60LXrVl]nqYplIt)=oMP&=8l7qQ.q-?iFI4A,^$_OT +bPolfec+8$h>ZC4jSn<@m/HGPnG`%Yp&=^bq>U6iqtU,os7lQlqu6Hkq>U-fp&=R^nG_kTm/H/HjSn-; +h>Z+,ec*qpbl5]__>_.I\c/i4XT#0tU&LV^RJrBKNrFq8K`6Q%If=TkFoHC[DZ4GNB`;NB@KBqIra>_4 +r`oG,qcWo#r`B)"pf7;mmo0!ZJPjB`JPgtqqbd,dmo0*_qc3Vrr`Au!r`T5)ra#M1ra>_8rac"ArbDFM +rc.p[rcnEkrdk'%reg]8rf[8Krgj%^ri#gtrilC4rk8p>hrql]krqZQfrq69^rp]pTrp9XHroF(;rn[S,rmh"prlkA_rk\TIrji$4riH*t +rh9=^rgEbKrf6u8re19%rdOikrcS3[rbh^Nrb2:AraPk7ra5Y0r`f8&r`K/$r`8qsrDihrmo0!ZJPi1> +JPht8pepQZ!*&kqqc3Vrr`Au!r`T5)ra#M1ra>_8rac"ArbDFMrc.p[rcnEkrdk'%reg]8rf[8Krgj%^ +ri#gtrilC4rk8bpelZ?JPgtq^JXc(mo0*_qc3Vrr`Au!r`T5)r`oP3 +?N=I4@/a[8AH$9ACAr,MEW1+[GlE0kJc:?%MZ/Y8P5^mKSc5>^W;`mtYl;34^&GkIaSsB^d/MSpg&Bh, +iVqp;k5O`Hmf)_ToD\F^p\t!fqYpBerQG5ds8N#prVl`oqYpQ.h*=oMM% +sDR:Ou;m:OuX8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&_4ra,S.r`];(r`B)"r`/hor_iMgr_S/AqbMc=JPVY/ +qb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriZ7. +rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^R!:^*[nc&1[pAXjdq>U6fr;QZlrke^7rqlZnr;QQlq>U0g +pAX^`nc&"Vm/H>Mjo49=hu;@/fDa7ucMkrb`;[ON])K,:Y5YF"U]-nbRf8TOO8b%9LAl`&IK"QlF8g1Y +DuOMNBDuKA@/aO4?N+1.>5h\(=8l8"sCC:Q\G(:P)@B;#F/b;>X8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&_4ra,S.r`];( +r`B)"r`/hor_iMgr_TLgJPUhmJPYW.qb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'b +rd=]qreCE1rf@&DrgNhYrhKIkriQ:0[/dW6])KJD`;[mXcMl;lfDaM'hu;X7jo4TFmJcSRnc&1[pAXjd +q>U6fr;QZlrdk+>s8N#prVl`oqYpQ.h*=oMM%sCP:Ou;m +:PDUA;#!ob;Z9Vo5hb*?N+=2@/aa:B`;cGDuObUF8gLbI/\ZqLAm,1O8bFDRf8rYU].4k +Y5Yj.])KJD`;[mXcMl;lfDaM'hu;X7jo4TFmJcSRnc&1[pAXjdq>U6fr;QZlrji(.rqlZnr;QQlq>U0g +pAX^`nc&"Vm/H>Mjo49=hu;@/fDa7ucMkrb`;[ON])K,:Y5YF"U]-nbRf8TOO8b%9LAl`&IK"QlF8g1Y +DuOMNBDuKA?iXO7?XNe=r`fA*r`T5%r`9"uqc!Jlpeh#eJPWCDJPUhmk"kkNpegodr_rerr`9#"r`T5( +r`fA.ra5Y4ral(BrbDFNrc.pYrd+Qkrdb!&repc:rg!JOrh'1bri#h!rjDa:rkJHNrlP/brmUkurn@A/ +ro3q=rp0RNrpTjVrq-3`rqQKgrqcNirr)`ne,QBHrr2fnrquclrqZQgrq??`rpg!Vrp9XMroO.=rnm_/ +rn%.urm(Mbrl"fNrjr*:riZ7"rhKIbrgNhOrf@&9reCE&rdFclrcA'YrbqdNrb)4Ara>_4ra,S.r`];( +r`B)"r`/hor_`bo;>O/h:k;E#:Ou;t:]!rg;>F)d;Z9Vo5hb*?N+=2@/aa:B`;cGDuObU +F8gLbI/\ZqLAm,1O8bFDRf8rYU].4kY5Yj.])KJD`;[mXcMl;lfDaM'hu;X7jo4TFmJcSRnc&1[pAXjd +q>U6fr;QZlriuLGs8N#prVl`oqYpQ.h*=oMM%sDV:Ou;m +:OuX8j;uTer?_)3ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhY +rhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hlqu5"CcN!nCrr)io +rql]krqQKerq-3\rp]pSrp'LHro3q8rndY*rmUkmrlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauq +rce?^rc%jQrb2:AraPk6ra,S.r`T5$r`/qsr_iVjqb[8fr_WSiqbH]VoLsg0JP:Vg\kMckohPK_r_NDf +r_`Pjr`&ksr`9#$r`fA.ra5Y6rac"ArbMLPrc8!^rd=]qre19,rf@&Brg<\WrhKIkric=.rji$Crl"fX +rm1Smrmq)*ro!e8roj@HrpB^Srq$-]rqHEfrqcWkrqucoqu4J4rr2oqrqucmrqcWhrqHEarpp'XrpB^M +roj@@ro!e4rmq(t!7(\lci2&c`;[ON\c/u8YPtL"V#I"cR/W?LO8at7K`6N$I/\?hErL%WD#S,IAH$'; +?iFC2>Q.e)X2h:]=2i:]!oX9o;Vq9S#m59_D-Q:B")h:]!uf;>X8j<;onsQ.t. +?iFO6AH$9AC]8;PErL:^I/\ZqK`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lH +m/ZVVnF6GKrq-3arqZQirql]mrr)`n_Z0W7rr)iorql]krqQKerq-3\rp]pSrp'LHro3q8rndY*rmUkm +rlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$r`/qsr_iVj +r(mAir_NMir_NDdnkF[/TM0o1N_K+?!)E5_r_WSiqb[8hqbmDmr`/qur`T5)ra,S2raPk;rb2:Hrc%jW +rce?hrdb!$reUQ7rfd>Krh'1bri#h"rj;[8rkJHNrlP/crmUktrndY4ro3q@rp'LMrp]pYrq-3arqZQi +rql]mrr)`n_Z0W7rr)io!W2`oqu6Hkq#:$eo`"F\nG_hSlMg#Hir7m8hYu+*e,I\mao96X^](eC[/R9. +W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA@fBa6?N+1.=oMJ$g;#X8i;#X8f:@_,f +9S#lg9S#n49_D-Q:B")h:]!uf;>X8j<;onsQ.t.?iFO6AH$9AC]8;PErL:^I/\ZqK`6f,O8b@B +R/W`WU].1mYHIr0rj;[8rkJHNrlP/crmUktrndY4ro3q@rp'LMrp]pYrq-3arqZQirql]mrr)`nJcG9? +rr2oqrqucmrqcWhrqHEarpp'XrpB^Mroj@@ro!e4rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7 +re19$rd=]hrc8!WrbVRIrac";ra5Y2r`fA)r`9"ur`&kpqbd5er_NMir_NDdnkGZKJP:VgO\GFBohPK_ +r_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"ArbMLPrc8!^rd=]qre19,rf@&Brg<\WrhKIkric=.rji$C +rl"fXrm1Smrmq)*ro!e8roj@HrpB^Srq$-]rqHEfrqcWkrqucoqu4/+rr2oqrqucmrqcWhrqHEarpp'X +rpB^Mroj@@ro!e4rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7re19$rd=]hrc8!WrbVRIrac"; +ra5Y2!*]J.>Q.e)X2h:]=2i:]!oX9n?!N9S#lg9_(mM:%_9\;#X8f;#X>h;Z9YpU6iqu6NmrVQTCs/>tsrr2lqr;QTmqYp9hp\sgao)A.XmJcDMkl0T@i;VU4 +f)F.tci2&c`;[ON\c/u8YPtL"V#I"cR/W?LO8at7K`6N$I/\?hErL%WD#S,IAH$';?iFC2>Q.e)X2h:B=9g!)WYjqbH]VJP;M+JP;;%ohG9Xr(d5fr_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"A +rbMLPrc8!^rd=]qre19,rf@&Brg<\WrhKIkric=.rji$Crl"fXrm1Smrmq)*ro!e8roj@HrpB^Srq$-] +rqHEfrqcWkrqucoqu3l#b5_J?rr)iorql]krqQKerq-3\rp]pSrp'LHro3q8rndY*rmUkmrlP/XrkJHC +rj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$r`/qsr_iVjqb[8fr_WSi +qbH]Vpe664JP:Vg[S6?gohPK_r_NDfr_`Pjr`&ks!EN5$Q.t.?iFO6AH$9AC]8;PErL:^I/\Zq +K`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lHmJcVSoD\C]p\t!fqYpBkr;QZl +rmCbns8N#prVl`oqu6Ejq#:$eoD\=[n,D\Ql2KiEi;VR3g]#_%d/M;h`W!^Q^&GG=Z2Um)V#I%dSGncP +OT(4k;uTbq=8l>$=oM_+?iFL5Ac?BBD#SAPF8gC_If=otK`6r0OT(LDSGo2\V#ILqZ2V01 +^&GkI`W"-]dJhYpg]$(/i;VmU9jr;6Hlrl+p:rqlZnr;QTmq>U0gp\sd`o)A+Wm/H8Kk5O<Z1.eGdho +c2P]]_>_.I[JmH1Xo>-qT`1J\Pl?dDN;eM0Jc:,tGQ)^`DuOSPB`;TB@K'X5?2e"+=T2D$<;oep;>sDh +:]=)i9hkR\r_2uXJP)/!JP(Jc!D5u]9D_E^:&@]b:]!uf;>sMn<;otu=T2J&?2e41@K'j;B`;iIDuOhW +GQ*'jJc:?%N;eqU)[Jml=_>_FQc2Q,ieGe5%hYuI4k5OTDm/HJQnc&.Zp\sseq>U9j +r;6Hlrl+p:rqlZnquQ]l!;lckrqQKerq$-[rpTjQrosFEro!e3rnIG%rm:Yhrl+lQrk8<=riuI)rhTOd +rg`tPrfI,br_2uXW_.h7JP(Jc +kt:hGqb6u`qbI,dqb[8hr_reqr`B)$r`T5+ra5Y5ral(BrbVRPrcA'_rdOitre190rfI,Drg`t\rhKRs +XT5L&Z2V01^&GkI`W"-]dJhYpg]$(/i;VmU0gp\sd`o)A+Wm/H8Kk5O<Z1.eGdhoc2P]]_>_.I[JmH1Xo>-qT`1J\Pl?dDN;eM0Jc:,tGQ)^` +DuOSPB`;TB@K'X5?2e"+=T2D$<;oep;>sDh:]=,d:&[iZ99Dht8qBTd9)D9Y9`@c`:B"&d;#X>k;uTbq +=8l>$=oM_+?iFL5Ac?BBD#SAPF8gC_If=otK`6r0OT(LDSGo2\V#ILqZ2V01^&GkI`W"-]dJhYpg]$(/ +i;Vmb!DH/e9_D&08rcMp +8qfn99*%[Yqb6u`qbI,dqb[8hr_reqr`B)$r`T5+ra5Y5ral(BrbVRPrcA'_rdOitre190rfI,Drg`t\ +rhTOqriuI1rk8U)[Jml=_>_FQc2Q,i +eGe5%hYuI4k5OTDm/HJQnc&.Zp\sseq>U9jr;6HlrmCbns8N#prVl`oqYp9hp\smco)A.Xmf)MNkPjQA +i;VO2g&BG!cMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt,=8l8" +<;obo;#X8i:B!ub9`%K^9&N;>8:a<_8:a=L8E3;=9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41@K'j; +B`;lJE;jqXHiAKnJGtE)NW,%=RJrcVT`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kl0lHmf)_To)A@^ +p\sseqYpBhrVlf8s8N#prVl`oqYp9hp\smco)A.Xmf)MNkPjQAi;VO2g&BG!c2c#gbKKn%rkABDrj)O+ +ri5sjrg`tUrfI,_X[qJDqb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbV +rh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e:roj@H!:BmUmf)_To)A@^p\sseqYpBhrVlf8s8N#prVl`o +qYp9hp\smco)A.Xmf)MNkPjQAi;VO2g&BG!cMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt,=8l8"<;obo;#X8i:B!ub9E@dZrCd,^i(8JjWCVS2QUpF6q+:HUr_*#[r_gBkq#:$epAXX^nG_kTlMfuG +jSn*:h#?"+df.PkbPoBX^AbbDZMq$+WrA[jSGnrUOT(4i&)IK"TmF8g.XD>n5JAc?-;?iF=0>Q._' +sDk:]=,g:&@W]9E%QA8\[fI8:a<_8E3;=9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41@K'j; +B`;lJE;jqXHiAKnJGtE)NW,%=RJrcVTE2'm!36%$rj)O8rkJHLrlb;ermLf!rnRM2roF(Brp'LNrp]pX +rq??crqQKhrqlTkrr.KKo`+piqu-NlrqcWhrqHEcrpp'XrpKdNroa:Aro!e2rn7;!rm(MdrkeZKrk&08 +riZ7#rh07\rgEbIrf$i5rdaurrd4Wcrc%jRrb2:BraGe5r`oG,r`B)"r`&kor_WSir_EGeqb6l[r^u*? +VFZ8/JOl5#j%9,?r_*#[r_sDk:]=,g:&@W]9E%QA8V'FO8:a<_8Gbs<8c)-Z9DD3[:&[oe +:]=2i;>sPoQ.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoie +df.r!h#?72jSnBBlMg5NnG`"XpAXgcq#:-hqtp?krmUnJs8N#prVl`oqYp9hp\smco)A.Xmf)MNkPjQA +i;VO2g&BG!cMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt,=8l8" +<;obo;#X8i:B!ub9`%H`8kK(Ui(8JjUI]r,SOhj6!D,l[9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41 +@K'j;B`;lJE;jqXHiAKnJGtE)NW,%=RJrcVT`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kl0lHmf)_T +o)A@^p\sseqYpBhrVlf$s3:TCrqlZnr;QQlq#:$epAXX^nG_kTlMfuGjSn*:h#?"+df.PkbPoBX^AbbD +ZMq$+WrA[jSGnrUOT(4i&)IK"TmF8g.XD>n5JAc?-;?iF=0>Q._'sDk:]=,g:&@W]9E%QA +8V'E`8:a=H8E3;=9)_KY9`@cc:B"&g:]XEj!)`_pr`/r!r`fA-ra5Y5ral(Brb_XRrcA'crdOisre^W6 +rfI,Irgj%]ri5t#rj)O8rkJHLrlb;ermLf!rnRM2roF(Brp'LNrp]pXrq??crqQKhrqlTkrr1=FeGoOI +qu-Nlrql]krqHEcrq-3[rpTjQroj@Cro*k4rn7;$rm:Yfrl>#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,t +rcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WShr_3;`oh#-Rpda=5JOY2[JOZS-pdb3PqapZWr_3;c +r_WSir_`Ymr`9##r`];.raGe9rb2:Hrc%jYrd"Kkrdt-*rf-o?rg<\VrhKIlric=/rk&0Frl>#]rm:Yp +rn7;,ro*k5hY'sAj;#X5h9`@ZW8cD9U7tF/)7Y+$[7Zp798,GjS8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fH +E;jtYH2`6kK)UT*NW,+?R/W]VU].7lYPts/]DfVFa8X9]d/MSpg&Bh,iVqsrpg![rq69b +rqcWkrqucoqu4e=rr2fnrqucmrqcWgrq??`rpg!Vrp9XJroO.#]rm:Yprn7;,ro*kgBk +p\smco`"C[n,D\Qkl0]CiVq[4g&BP$d/M5fa8WmR]Df5;YPtO#U]-kaR/W9JNW+_4K)U2tGlDgaE;j\Q +B`;N@@K'X5>5hY'sAj;#X5h9`@ZW8cD9U8#/V*7Y+$[7cm288,GjS8c)-Z9`@cc;#X8i;>sJm +5hn.@K'd9B`;fHE;jtYH2`6kK)UT*NW,+?R/WZXUS@gari,n#rjDa;rkSNRrlb;frmh#$rn[S4 +roO.Crp9XPrpg![rq69brqcWkrqucoqu20HqZ$Qoqu-Nlrql]krqHEcrq-3[rpTjQroj@Cro*k4rn7;$ +rm:Yfrl>#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WSh +r_3;`oh#-Rpd^63JOY2[JOTZ07efLN8Gc!U9)_N`:&[ug:]=5j;Z9_r=T2M'?iFL5A,^0@C]8;PFT-Rb +IK"itM#ND5P5^jJT)PMaWW'+#[Jmf;_#DCRbPolfec+8$h>ZC4jo4KCm/HGPnc&1[p&=^bqYpBkr;QZl +rke^7rqlZnr;QTmqYp6gpAX^`nc&"Vm/H5Jjo46Z+,ec*qpbPoQ]_#CtF[JmB/WW&[lT)P,VP5^I? +L]2o)IK"KjFT-7YD#S,IA,]p9?iF7.=T2A#;?0Pp;,R#]rm:Yprn7;,ro*k`,7YjNb7Y4)08,5[P8Gc!U9)_N`:&[ug:]=5j;Z9_r=T2M' +?iFL5A,^0@C]8;PFT-RbIK"itM#ND5P5^jJT)PMaWW'+#[Jmf;_#DCRbPolfec+8$h>ZC4jo4KCm/HGP +nc&1[p&=^bqYpBkr;QZlrj;^Ps8N#prVl`oqu6Hkp\smco`"C[n,D\Qkl0]CiVq[4g&BP$d/M5fa8WmR +]Df5;YPtO#U]-kaR/W9JNW+_4K)U2tGlDgaE;j\QB`;N@@K'X5>5hY'sAj;#X5h9`@ZW8cD9U +8*39l7Y+$[7\iNK8,GjS8c)-Z9`@`e:f%-gr_NMjr_i_rr`K/'ra5Y5raYq@rbMLPrcJ-brdFctreUQ5 +rf[8Jrgs+ari,n#rjDa;rkSNRrlb;frmh#$rn[S4roO.Crp9XPrpg![rq69brqcWkrqucoqu5+FeGoOI +qu-NkrqcWirqHEbrq$-YrpB^NroX4?rnm_0rn%.urltG`rl"fMrj_s5riH*rrh07Zrg!JEreg]/rdauo +rc\9]rbVRJrau./JGsloG5cO]D#S/JB)Z67JK@O8+fFP8cD?]9E%Wa:B"&g;#XGnQ.t. +@K'm;rpKdT +rq$-^rqHEfrqcWkrr)`nbQ%S@qu-NkrqcWirqHEbrq$-YrpB^NroX4?rnm_0rn%.urltG`rl"fMrj_s5 +riH*rrh07Zrg!JEreg]/rdauorc\9]rbVRJrau.pEf!;ZWgrq69^rp]pSrp0RGro="8rnIG(rmUkkrlG)WrkABArj)O)rhf[frgNhOrfI,:re:?% +rd+Qerc8!Srb;@DraGe4r`fA'r`9"tr_WSir_EGdr_*5_qapZUqa^ENnjTlQJOG&WJOK&sogSXFr^ZWP +r^m)]r_*5ar_EGgr_WSnr`/r!r`fA.raGeOnG`%Yp&=^bq>U6iqu6Qkrdk+Gs8N#prVl]nqYp/JGsloG5cO]D#S/JB)Z6Q.t.@K'mO +nG`%Yp&=^bq>U6iqu6Qkrke^7rqlZnqu6Hkq>U-fp&=R^nG_hSli-&Gj8Rs8g]#h(e,IVkaSs-W^AbYA +ZMps)VZ*7fRf8TOOT(.:L&QW%HN&*eErKnSC&V`D@K'U4>Q._'Q.t.@K'mOnG`%Yp&=^bq>U6iqu6Qkrj;^Ps8N#prVl]nqYp/JGsloG5cO]D#S/JB)Z6F[r_EGgr_WSn +r`/r!r`fA.raGeQ.e)l2g28rp9XQrpp']rq??erqcWkrr)`nbQ%S@qu-NkrqcWirq??`rpp'Wrp9XLroO.= +rnm_.rmh"prlkA]rkSNFrjDa/ri,mlrh'1Urf[8@reCE(rdOiirc8!Vrb;@DraPk6r`fA)r`/qrqb[8e +r_3;ar_!/]r^d#Yq*tknJO>>_pI+pIpdOjFr^ZrYr^m)]r_*5ar_<8dr_rerr`T5*ra5Y6 +rau.DrbqdWrc\9irdt-(rf6u@rg*PUrhTOmric=/rk&0Frl4r]rm:Yprn7;.ro3q=rp'LLrpTjWrq69a +rqZQirql]nqu4e=rr2fnrql]k!VuNkq>U*eo`"F\n,D\QlMfoEir7j7g&BP$d/M8g`rGbnjN7Aog\pNr^d#[r_!/_r_3;c +qb[8jr`/r#r`oG0raPk=rb;@MrcA'^rdOiureCE4rf[8Hrh'1cri,n#rjDa;rkSNQrlkAgrmh#$rnm_7 +roO.Erp9XQrpp']rq??erqcWkrr)`n_Z0W7qu-NkrqcWirq??`rpp'Wrp9XLroO.=rnm_.rmh"prlkA] +rkSNFrjDa/ri,mlrh'1Urf[8@reCE(rdOiirc8!Vrb;@DraPk6r`fA)r`/qrqbR8f!DZDh9`@]a9)_E] +8H)-P7efFF7"I_66\.UU6gmD57/04D7fGpW8H)3[9)_K_9`@c`;#XDmlJ+0@fC!=C&W&MF8g@^ +If=ruLAm54P5^dHTDkYcWW'+#[Jmf;_#D@Qbl5ugec+8$hu;X7jo4QEm/HJQo)A=]pAXmeqYpBkrVQTF +s/uD$rqlZnqu6Hkq>U*eo`"F\n,D\QlMfoEir7j7g&BP$d/M8g`rU6iqu6Qkrm^tts82cor;QQlq#:$eo`"F\nG_kTli-,Iir7j7h#>n(df.Sla8X!U^](Y? +Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR7+t$) +6@hIS6@hJ:6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N*NW,(> +Rf8oXU].CpZ2V01^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QZn(df.Sla8WsV^B)*arjDa1riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLD +raPk6r`fA'r`/qqr_`Yjr_rgNhXrhKIpriuI1rkJHMrl>#armUktrnRM1ro*qA +!U/bHlMg5NnG`%Yo`"Uaq>U6fr;QZn(df.Sla8X!U +^](Y?Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR +6ifYBgd?WZVF#i#O[AS*n3d(@r^HTOr^ZrYr^m)^r_*pTDk;YOoC@>M>i)*IK"Kj +EW0kTC]7lD@fBa6>Q._'sAj:&[ca8cD9[8,GdQ7K,^/6bGa:6@hIS6Mj+-6i0:N7JK@O8,c'Y +8cDB^:&[rf;>sJmQ/"/@fBp;C]85NEW14^I/\]rM>iM6OTCo>!1NnYrhKIpriuI1rkJHMrl>#a +rmUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$HlJcGTHqu-NlrqcWhrqHEarpp'XrpKdOroj@@rnm_1 +rmq(srm1Sarkn`MrjDa1riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr_rgNhXrhKIpriuI1rkJHMrl>#armUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$Hl +_Z0N3rquclrqQKerq-3\rp]pTrp0RIro3q7rnRM(rmLelrl>#UrkJH?riuI)rhKIbrgNhKrf-o6rdk&s +rcnE^rbh^Nrac";ra5Y/r`B)!r_i_mr_NMf!(m8a9)_E]8H)-V7f,XR7+t"Z6Gc'?6@hJr6Jt6.7/fXM +7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N*NW,(>Rf8oXU].CpZ2V01^]).M +a8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QZGs/uD!rVl`oqYp9hp\sgao)A.Xmf)POkl0T@ +hu;F1f)F+sci1ua_u@FM[JmH1Xo>*pTDk;YOoC@>M>i)*IK"KjEW0kTC]7lD@fBa6>Q._'sAj +:&[ca8cD9[8,GdQ7K,^N6fLIa6D-Yr6C1%)6hWnE7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6 +AH$BDDZ4YTGlE*iJc:N*NW,(>Rf8oXU].CpZ2V01^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Ua +q>U6fr;QZ%s3UfCrVl`oqYp9hp\sgao)A.Xmf)POkl0T@hu;F1f)F+sci1ua_u@FM[JmH1Xo>*pTDk;Y +OoC@>M>i)*IK"KjEW0kTC]7lD@fBa6>Q._'sAj:&[ca8cD9[8,GdQ7K,^/6iKE'6@hIS6FfG@ +6i0:N7JK@O7fc.O!(d)\r_*5br_NMjr_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o>rgNhXrhKIp +riuI1rkJHMrl>#armUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$HleGn%uqu-NlrqcWhrqHEarpp'W +rpB^Lroa:>rndY.rm^qorlkA\rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQrb2:?ra5Y1r`K/# +r`&knr_NMgr_!/]r^d#Yr^QZOr^>@*qEj@3JO,bkJO/?_g-XL\qaC_7rb2:Hrc%jZrd+QnreCE1rfI,Frg`t]ri,n"rj2U:rkSNPrlkAgrm^r$rn[S4roa:GrpB^R +rpp'\rqHEfrqcNirr(%?qu-NlrqcWhrqHEarpp'WrpB^Lroa:>rndY.rm^qorlkA\rkSTI!PH)EZi7-, +WW&UjSGniROT(1;LAl]%HN&'dE;j\QB`;K??iF@1=T2A#<;o_n:]=,g9)_E]8H)-Y7efFO7+Xfa6Erh- +6%M>I6/"ZZ6i0:K7K,dU8,c'Y8cD?]:B"&g;#XGnrndY.rm^qorlkA\rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQrb2:?ra5Y1 +r`K/#r`&knr_NMgr_!/]r^d#Yr^QZOr^?ZOgdC!dJO.=BJO-e3g-Y +rp'LMrpTjWrq-3arqZQiqu$HlbQ%Jrp'LMrpTjWrq-3arqZQiqu$HlJcGTHqu-Nl +rqcWhrqHEarpp'WrpB^Lroa:>rndY.rm^qorlkA\rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQ +rb2:?ra5Y1r`K/#r`&knr_NMgr_!/]r^d#Yr^QZOr^>@*i'P@JJO+iQ]0Y.;g-ba*qaLKRr^ZrYr^m)] +r_EGgr_WSnr`9##ra#M2raPk?rbMLPrcS3drdXp%repc;rg*PRrh9=jriZ7,rk/6Grl+l\rm:Yorn@A- +ro*k>rp'LMrpTjWrq-3arqZQiqu$Hl_Z0N3rquclrqQKerq-3\rpTjRrosFFro*k5rn@A$rm:Ygrl+lQ +rk/6:riZ7"rh9=]rg*PFrepc1rdXonrcS3ZrbVRIraPk6ra#M*r`9"tr_WSir_EGb!(d2_8cD9[8,c!Q +7K,^,6f::^6/t7^6(C7'6M3\!6i0:K7K,dU8,c'Y8cD?]:B"&g;#XGnlMg2Mn,DnWo`"Uaq>U6fr;QZGs/uD! +rVl`oqYp9hp\sgao)A+WmJcALkPjH>hYu7.eGdhobl5T\_>_+HZi7-,WW&UjSGniROT(1;LAl]%HN&'d +E;j\QB`;K??iF@1=T2A#<;o_n:]=,g9)_E]8H)-Y7efFO7.s"-6f::^6,>j<6,#Y=6L.#.6i0:K7K,dU +8,c'Y8cD?]:B"&g;#XGnlMg2Mn,DnWo`"Uaq>U6fr;QZ%s3UfCrVl`oqYp9hp\sgao)A+WmJcALkPjH>hYu7. +eGdhobl5T\_>_+HZi7-,WW&UjSGniROT(1;LAl]%HN&'dE;j\QB`;K??iF@1=T2A#<;o_n:]=,g9)_E] +8H)-Y7efFO7+Xg*6K:C`6(^Go6/Y&_6J=g(7/KFP7KH"L!([#Zr^m)]r_EGgr_WSnr`9##ra#M2raPk? +rbMLPrcS3drdXp%repc;rg*PRrh9=jriZ7,rk/6Grl+l\rm:Yorn@A-ro*k>rp'LMrpTjWrq-3arqZQi +qu$HleGn/#rr2fnrquclrqQKerq-3[rpTjProsFDro!e2rn7;"rm1Serk\TJrji$4ri?$qrh'1XrfmDA +reLK)rd=]ircA'VrbDFFra>_2r`fA&r_r\jr_EGdr^m)[r^ZrWqaLKPnjD(sk_Q.\&;u9Dj +:B!rd8cD9[8,c!T7K,^G6bbte6*rn.5_22G5lO'a6M3_C7/fXP7fGpW8H)3[9`@c`;#XGn&?N+@3 +BDuZFDZ4_VGQ*!hK)UT*NW,1ARf8rYVZ*XqYl;34^&GkIbPoiee,J&"h#?43jT4K)roj@IrpTjWrq-3a +rqZQiqu$Hlqu5+Frr2fnrquclrqQKerq-3[rpTjProsFDro!e2rn7;"rm1Serk\TJrji$4ri?$qrh'1X +rfmDAreLK)rd=]ircA'VrbDFFra>_2r`fA&r_r\jr_EGdr^m)[r^ZrWqaLKPp-\dG^I%ocJO%@CJO$_1 +r^"dqo0W+;qaCEPqaUQTr^d#[r_3;cqb[8kr`9#&ra,S3rb)4Frbh^Vrce?hrdt-*rf-oArgNhYrhf[q +rilC4rk8Q.t.@/ag2@ +JO$h4r^":cogAUEr^H]Rr^ZrYr^m)_r_<8dr`&ktr`fA.ra>__2r`fA& +r_r\jr_EGdr^d)\!D#c\8,c!T7K,^G6bbte6%M;`5_21j5lO(66J"Qs6i0:N7JfRR8,c'Y8cDE_:&@cd +<;oqt>Q.t.@/ag_XWci2Dmg&Be+i;Vj;kl0oI +n,DnWo`"Uaq>U6fr;QZlrnROYs8N#prVl`oqYp9hp\sganc&"Vli-/Jjo43;h#?"+e,I\mbPo?W^Ab\B +Yl:^&VZ*4eRJrHMNW+_4K)U/sGlDd`DZ4DMBDu<__Q.b(;uT\o:]=)f9)_EZ8,c!T7K,^G6d\5j5_21O5dir'6M3_C7/fXP7fGpW8cDB^ +:&[rf;>sMn=T2P(?iFO6B)ZQEDuOhWGlE3lKDp]+O8bCCRf9&\W;`t![Jmf;_#DFSbl5ugf)FD&hZ2[; +j5^.$rosFMrp]pXrq69brqZQjrqucoqu5+Frr2oqrqucmrqZQfrq69]rp]pTrosFFro="8rn@A&rm:Yg +rlG)Srk&0;riZ7!rhBC\rg!JDreUQ,rdXolrcJ-XrbDFEraPk6r`fA(r_reor_NMfr_!/]qa^WTqaLKP +o0WLFd6`CLZ9Wt+TKqL'm6^J5qaCEPqaUQTr^m)^r_Q/"/@fC!=CAr/NF8gF`J,Y*"L]NQt!0@,DrgNh\ri#h!rjDa;rkSNSrlkAgrmq)&rnm_8 +roX4ErpKdTrpp']rqHEfrql]mrr)`nKE(rMrr)iorql]jrqHEbrpp'XrpKdMroa:@rnm_/rmq(qrlkA_ +rkSNFrjDa.ri#gjrgNhOrf@&7re19#rcnEarbqdNrau.=ra5Y/r`K.ur_i_kr_Q/"/@fC!=CAr/NF8gF`J,Y*"M#NJ7Pl@-NUAh+jY5Yj.]DfVFaSsE_d/MVqgA^"/j8S3?l2L,M +nG`"Xp&=^bq>U9jr;QZlrnROYs8N#srVl`oqu6Ejp\sjbo)A.Xmf)JMkPjN@hu;@/f)F%qbl5]__#CtF +[Jm?.W;`OjRf8TOO8at7K`6K#GlDgaDuOMNB)Z9=?iF:/=T27u;Z9Jk:&[ca8c)$W7f,XR7.N_C6InJS +5cd5%5c-g%6M!P:6i0:N7JfRR8,c*Z9E%Zb:]=5j;uTnu>Q/"/@fC!=CAr/NF8gF`J,Y*"M#NJ7Pl@-N +UAh+jY5Yj.]DfVFaSsE_d/MVqgA^"/j8S3?l2L,MnG`"Xp&=^bq>U9jr;QZlrjr-Ys8N#srVl`oqu6Ej +p\sjbo)A.Xmf)JMkPjN@hu;@/f)F%qbl5]__#CtF[Jm?.W;`OjRf8TOO8at7K`6K#GlDgaDuOMNB)Z9= +?iF:/=T27u;Z9Jk:&[ca8c)$W7f,XR7.N_!6MNlu5`.gX5fc496M3_C6if_F!(HcSr^ZrZr_*5br_NMj +r_reur`fA/raPk=rbDFNrcA'`rdXp"reUQ7rfmDNrhBCjriZ7.rk&0FrlG)_rm:Yqrn@A/ro="?rosFM +rp]pXrq69brqZQjrqucoqu5=LfDkjLrr)iorql]irq??arpg!VrpB^KroO.=rn[S+rm^qnrlY5ZrkABB +rj2U)rh]Uerg<\Krf6u3rdk&srcS3\rbh^Jrac"9ra#M+r`9"rr_WShr_*5_r^m)Zr^QcRr^?3BejB:$ +JO"rTJO%FEc9h(hr^?WPr^QlWr^m)]r_*5cr_WSlr`9#$ra#M2rac"@rbh^TrcS3grdk'&rf6u@rg<\X +rhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^Rrpg!\rqHEerql]mrr)`neGoOIrr)iorql]irq??a +rpg!VrpB^KroO.=rn[S+rm^qnrlY5ZrkABB!4)^4Zi7$)V>d.eR/W_9rb)4Jrc.p[rdFcsre:?3rf[8Jrh07f +ri?%)rj_sArl+lZrm1Snrn7;,ro3q>roj@KrpTjVrq69brqQKirqucoqu5+Frr2oqrqucmrqQKd!VQ*c +p&=L\n,D_Rkl0]Cir7d5f`'D"ci2)d`W!UN\c/r7X8\spT`1>XPQ$UAL&QZ&IK"BgErKtUBDuH@@/aI2 +=oMJ$;Z9Ml:B!oc9)_E]8,c!T7K,^D6d\6A5_21O5`.hP6LmMC7/KFP7fGpW8cD?]9E%]c;#XAlroj@KrpTjV +rq69brqQKirqucoqu26Jrr2oqrqucmrqQKdrq69\rpTjRroj@Cro3q5rn.5"rm1Sdrl+lNrji$7ri?$p +rh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra>_2r`T5$r_i_lr_EGcr_!/]r^ZrWqaLKPmmGJhY<[Y(JO#tq +c9h(hr^?WPr^QlWr^m)]r_*5cr_WSlr`9#$ra#M2rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6 +rkABNrlY5drm^r#rn[S5roX4DrpB^Rrpg!\rqHEerql]mrr)`nbQ%S@rr)iorql]irq??arpg!VrpB^K +roO.=rn[S+rm^qnrlY5ZrkABBrj2U)rh]Uerg<\Krf6u3rdk&srcS3\rbh^Jrac"9ra#M+r`9"rr_WSh +r_*5_r^m)Z!(HuY7f,XR7.3Lj6@hDI5_21R5lO*t6LmMC7/KFP7fGpW8cD?]9E%]c;#XAlZF5k5OTDmJcSRnc&4\p\sse +qu6NmrVQTLs0;V'rr2lqr;QTmq#:!dp&=L\n,D_Rkl0]Cir7d5f`'D"ci2)d`W!UN\c/r7X8\spT`1>X +PQ$UAL&QZ&IK"BgErKtUBDuH@@/aI2=oMJ$;Z9Ml:B!oc9)_E]8,c!T7K,^D6i9:%6@hD'5_21t5hn]t +6LmMC7/KFP7fGpW8cD?]9E%]c;#XAlZF5k5OTDmJcSRnc&4\p\ssequ6NmrVQT*s3q#Irr2lqr;QTmq#:!dp&=L\n,D_R +kl0]Cir7d5f`'D"ci2)d`W!UN\c/r7X8\spT`1>XPQ$UAL&QZ&IK"BgErKtUBDuH@@/aI2=oMJ$;Z9Ml +:B!oc9)_E]8,c!T7K,^D6eXm%6@hCZ5_22A5gD^e6iKIS77I/Dr^QlWr^m)]r_*5cr_WSlr`9#$ra#M2 +rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^Rrpg!\rqHEe +rql]mrr)`ngAfe)rr2oqrquclrqHEcrq-3ZrpKdProa:Aro!e2rn.5!rltG`rkn`JrjMg1ri,mlrh'1T +rfR2=rdt,urd4Wcrc%jQral(5hn.@fBst*e,IVk +aSs*V]`,A=Yl:X$U]-nbQ2ZpFN;eG.If=]nF8g.XD#S#F@fBa6>5hV&rnm_/rmh"prlY5ZrkSNCrj)U-!NrU)V#I"cRf8HKNW+b5JGsopGQ)R\ +D#S,I@fBa6>lIh(rnm_/rmh"prlY5ZrkSNC +rj2U,rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKPpd=X>i^/2] +TKn&nN^35'iBm<,qaCEPr^QlWr^m)^r_EGhr_i_pr`B)(ra5Y6rb2:Irc%j\rd=]qreUQ4rfR2Krh'1c +riZ7+rj_sCrl+lZrm:Yprn@A/ro3q=rp0ROrp]pYrq69brqcWkrqucorr1OLrr2oqrqucmrqcWgrq-<` +o)SC]nG_hSli-#Fj8Rs8gA]Y%d/M2e`W![P\Gii6Y5Y6rTDk;YOoC@>M#Mr(HiA6gE;j\QB`;K??iF=0 +=8l5!;Z9Ml:&[fb8cD9[7f,XR7/0.!6FK.15_21O5kmUo6MNqF7/fXS7fGpW8cDB^:B")h;Z9Yp=8lJ( +?iFO6B`;iIE;k(\I/\WsLkl%erf$i=rgNhYrhTOrrj)O5rkSNPrlY5ermh#%rnm_7roO.FrpKdTrq$-^ +rqHEgrql]mrr)iqLB%8Prr)iorql]krqHEbrq$-YrpB^NroO.>rnm_/rmh"prlY5ZrkSNCrj2U,rhTOc +rgNhKrf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKPpd_e3`pt +qaCEPr^QlWr^m)^r_EGhr_i_pr`B)(ra5Y6rb2:Irc%j\rd=]qreUQ4rfR2Krh'1criZ7+rj_sCrl+lZ +rm:Yprn@A/ro3q=rp0ROrp]pYrq69brqcWkrqucorr14Crr2oqrqucmrqcWgrq69^rp]pSrp0RFro="8 +rn@A%rm:Yerl+lPrj_s6riZ6rrh'1YrfR2>reUQ(rd4Wgrc%jQrb2:?ra5Y0r`B)!r_i_lr_OnG`%Yp&=^bqYpBkr;QZornRO\ +s8N#srVl`oqu6Hkp\sjboD\7YmJcGNjo4<>hu;@/ec*qpb5TBZ_#CkCZi7-,V#I"cRf8HKNW+b5JGsop +GQ)R\D#S,I@fBa6>lIh(OnG`%Yp&=^bqYpBkr;QZorjr-\s8N#srVl`oqu6Hkp\sjboD\7YmJcGNjo4<>hu;@/ec*qp +b5TBZ_#CkCZi7-,V#I"cRf8HKNW+b5JGsopGQ)R\D#S,I@fBa6>lIh(OnG`%Yp&=^bqYpBkr;QZorn@D+s8N#srVl]n +qYp5hS%;uTVm:]=&e9)_B\8,c!W7K,^J6e"Hp5_21O5_2235h&-n6iKLQ7K,dU8,c'Y9)_N`:]=2i +<;oqt>5hh,@/ad;CAr/NFT-RbIf>'#MZ/_:Qi_;rbDFNrcJ-brdOj#reg]:rg3VTrhBCnrilC0 +rkJHNrlP/crm^r"!8[b5hYuL5jSnHDm/HMRo)A=]p\t!fqYpBkrVlfJs8N#srVl]nqYp5hS%;uTVm +:]=&e9)_B\8,c!W7K,^J6hU6i +qu6Qnrn%2Lrr2lqqu6Hkq>U-fo`=XS!:p-YrpB^MroF(;rndY,rm^qnrlP/WrkJH?riuI(rhBC_rg3VG +repc0rdOilrcJ-XrbDFEra>_2r`];%r_remr_NMer_!/\r^ZrWr^HfSog@4q[QoC/JO"cOpd!=qogA^H +r^HfUr^ZrYr_!/`r_NMir`&ktr`];,ra>_;rbDFNrcJ-brdFm%K`Hi+MZ/_:Qi5hS%;uTVm:]=&e9)_B\ +8,c!W7K,^J6e"Gn5_21O5`n=]6M3_F7/fXS7fGpW8H)6\9`@ie;#XGnU6iqu6Qnrm(QCrr2lq +qu6Hkq>U-fp&=O]nG_hSlMflDiVq^5f`'D"ci2&c_u@FM[JmH1XT"snSc4uTOT(1;L&QQ#H2_pbDuOMN +B)Z3;?2e%,_;rbDFNrcJ-brdOj#reg]:rg3VTrhBCnrilC0rkJHNrlP/crm^r"rndY5roF(D +rp9XRrpp']rqHEfrqcWkrr)iqh#Fb]rr2oqrql]krqZQfrq69]rp]pSrp'LDro*k5rn.5"rm1Scrkn`M +rjDa1riH*nrgj%TrfI,;re:?#rd"KbrbqdNrau.;ra#M,r`9"sr_WSir_3;`r^d#Yr^QlUr^?EHm6^#' +JO#YhJO#GbmR$)'ogA^Hr^HfUr^ZrYr_!/`r_NMir`&ktr`];,ra>_;rbDFNrcJ-brdOj#reg]:rg3VT +rhBCnrilC0rkJHNrlP/crm^r"rndY5roF(Drp9XRrpp']rqHEfrqcWkrr)iq])U@]rr2oqrql]krqZQf +rq69]rp]pSrp'LDro*k5rn.5"rm1Scrkn`MrjDa1riH*nrgj%TrfI,;re:?#rd"KbrbqdNrau.;ra#M, +r`9"sr_WSir_3;`r^d#Yr^QlUr^?EHe3`pqJO"cOJO$Y/e3`surBpQPr^HfUr^ZrYr_!/`r_NMir`&kt +r`];,ra>_;rbDFNrcJ-brdOj#reg]:rg3VTrhBCnrilC0rkJHNrlP/crm^r"rndY5roF(Drp9XRrpp'] +rqHEfrqcWkrr)iqgAg"/rr2fnrql]krqZQerq-3[rpTjProj@Aro!e3rmq(srm(M_rk\TIrj2U-ri,mi +rgWnPrf6u7re(2trce?^rb_XJrac"9r`oG*r`/qqr_NMer_!/]qa^WTr^?n5JAH$!9>lIn*_9 +rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7,rk8dKRqu-NkrqcWirq??`!V,[[nc&"Vli-,Ij8S!9h>Z")df.Pk`ri/,I/\?hErKqTB`;QA@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6e"H25_21O5_22q5h&-n6i0:K7fGpW +8cDB^9`@ie;Z9\q=oM\*@/a^9C&VuKErL:^Hi\kP!/(9,rf6uCrgNhZri,n"rj2U;rkeZSrm(Mkrmq)) +ro!e9roj@IrpTjVrq-3`rqZQirql]nqu2QSrr2fnrql]krqZQerq-3[rpTjProj@Aro!e3rmq(srm(M_ +rk\TIrj2U-ri,mirgWnPrf6u7re(2trce?^rb_XJrac"9r`oG*r`/qqr_NMer_!/]qa^WTr^?_9rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7, +rk8/ +q*Y*JqaCdKRqu-NjrqZQgrq-3\rp]pSrosFFro*k5 +rnIG$rm:Ygrkn`Mrjr*5ri?$qrgs+Vrf[8=re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)Y +qaL'Ci'RE/kWj\aJO"cOY!DtPh*V!+qa:?OqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-brdb!& +repc=rg<\Vrhf[rrilC5rkABLrlkAfrmUl$rndY5roa:GrpB^Srq$-]rqQKgrqcWmqu5FOrr2fnrqcWi +rqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC&!2]doVZ*1dR/W9JMuJG0JGsinFT-4XCAqiE +@fB[4=oMM%;Z9Pm:]=&e9)_E]7f,XF6f:<16%M<#5_21O5aXh96/=m#6iKOO7fH!Y9)_N`:]=5j;Z9bs +>5hh,@fC!=CAr/NFT-RbJGt<&MuJn=R/W]VVZ*[rYl;65^Ac%Lbl5rfdfA,'gY;_aro*k>rp'LMrp]pY +rq-3brqZQirr)`nh>dKRqu-NjrqZQgrq-3\rp]pSrosFFro*k5rnIG$rm:Ygrkn`Mrjr*5ri?$qrgs+V +rf[8=re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'Cn3ZY3r]u*#PX'dbJj9<%!C9$- +6M3_F7JfRR8cD?]9`@ie;>sJm=8lD&?2e=4B)ZQEDuOkXH2`?nLAm,1P5^jJT)PVdXT#I'])KGC_u@mZ +ci2Dmg]$(/iVr$>lMg2MnG`%Yo`"Xbq>U6irVQTMs8N#prVlZmq>U0go`"C^nF-GIrpB^Lroa:>rndY/ +rmUknrlkAZrkJHDrilC&rhf[drg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcR +njD>%r^!PLJO"cOJO&Qer^#@,ogA^IqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-b!J#\#JGt<& +MuJn=R/W]VVZ*[rYl;65^Ac%Lbl5rfe,J,$hYuL5kPjcGmJcVSoD\C]q#:*gqYpHjrf$mVrqlZnqYphYu:/e,I_nbl5NZ^](hDYl:^&VZ*1dR/W9JMuJG0JGsinFT-4XCAqiE@fB[4 +=oMM%;Z9Pm:]=&e9)_E]7f,XF6f:<16'4E`5_21S5lO(*6M3_F7JfRR8cD?]9`@ie;>sJm=8lD&?2e=4 +B)ZQEDuOkXH2`?nLAm,1P5^jJT)PVdXT#I'])KGC_u@mZci2Dmg]$(/iVr$>lMg2MnG`%Yo`"Xbq>U6i +rVQTDs8N#prVlZmq>U0go`"F\nG_hSl2KlFiVq^5g]#\$d/M8g_u@FM])Jr5X8]!qT)P,VP5^C=L&QW% +H2_pbDuOMNB)Z9=?2e"+=8l+s;>sAj9`@Z`8cD3V7K#UI6f:<16%M;*5_21O5it?26/=m#6iKOO7fH!Y +9)_N`:]=5j;Z9bs>5hh,@fC!=CAr/NFT-RbJGt<&MuJn=R/W]VVZ*[rYl;65^Ac%Lbl5rfe,J,$hYuL5 +kPjcGmJcVSoD\C]q#:*gqYpHjrnmabs8N#prVlZmq>U0go`"F\nG_hSl2KlFiVq^5g]#\$d/M8g_u@FM +])Jr5X8]!qT)P,VP5^C=L&QW%H2_pbDuOMNB)Z9=?2e"+=8l+s;>sAj9`@Z`8cD3V7Iih26MEhG6%M:] +5_21V5lO(J6K(9(6iKOO7fH!Y9)_N`:]=5j;Z9bs>5hh,@fC!=CAr/NFT-RbJGt<&MuJn=R/W]VVZ*[r +Yl;65^Ac%Lbl5rfe,J,$hYuL5kPjcGmJcVSoD\C]q#:*gqYpHjrk8?bs8N#prVlZmq>U0go`"F\nG_hS +l2KlFiVq^5g]#\$d/M8g_u@FM])Jr5X8]!qT)P,VP5^C=L&QW%H2_pbDuOMNB)Z9=?2e"+=8l+s;>sAj +9`@Z`8cD3V7Iih(6N0:;5_21O5_22#5lO(*630G@pI"pKqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFN +rcJ-brdb!&repc=rg<\Vrhf[rrilC5rkABLrlkAfrmUl$rndY5roa:GrpB^Srq$-]rqQKgrqcWmqu5FO +h>dKRqu-NjrqQKerq-3\rp]pRrosFEro!e3rn@A"rm(McrkeZJrjVm1ri,mmrgWnQrfR2:re19#rce?^ +rbh^Kral(;r`oG*r`9"qr_WShr_!/]r^d#XqaL'Ci'RE/kWj\aJO"cOY!DtPh*V!+qa:?OqaUQUr^m)] +r_EGgr_`Yqr`K/)raGe;rb2:Krc8!^rdXp#re^W:rg*PQrhTOnric=1rk8i2-J,XZkErKtUB`;TB@K'O2=oMJ$;>sDk:B!lb8cD9[7f,XF6f:<16%M<#5_21O +5aXh96/=m#6iKOO7fGsX8cD?]:B"&g;>sVq=T2S)@K'j;B`;oKErL:^J,Y-#M>iY:QN!BQV#ICnYPu$1 +^&GnJb5T]cdK%u%g=lP^ro!edKRqu-NjrqQKerq-3\rp]pRrosFE +ro!e3rn@A"rm(McrkeZJrjVm1ri,mmrgWnQrfR2:re19#rce?^rbh^Kral(;r`oG*r`9"qr_WShr_!/] +r^d#XqaL'Cn3ZY3r]u*#PX'dbJj9<%!C9$-6M3_F7JfRR8H)3[9)_Tb:]=5jlJ12Ac?BBDZ4\U +GQ**kK`6i-OoC[GS,T5_WrB4$\,O)?_Z%^WcMl8kgA]q-i;VmU6irVQTMs8N#p +rVlZmq#:$eo`"C^nF-GIrp9XKroX4%r^!PLJO"cOJO&Qer^#@,ogA^IqaUQUr^m)]r_EGg +r_`Yqr`K/)raGe;rb2:Krc8!^!IoS!J,Y-#M>iY:QN!BQV#ICnYPu$1^&GnJb5T]cdf.u"h>Z@3k5OTD +m/HMRoD\C]p\t!fqYpHjrf$mVrqlZnqYp9hp\sgao)A.Xm/H8Kk5O<Z.-df.Pkb5T9W^&GM?YPtO# +V#Hk_QN!$GM>i2-J,XZkErKtUB`;TB@K'O2=oMJ$;>sDk:B!lb8cD9[7f,XF6f:<16'4E`5_21S5lO(* +6M3_F7JfRR8H)3[9)_Tb:]=5jlJ12Ac?BBDZ4\UGQ**kK`6i-OoC[GS,T5_WrB4$\,O)?_Z%^W +cMl8kgA]q-i;VmU6irVQTDs8N#prVlZmq#:$eo`"F\nG_eRl2KiEi;VR3gA]P" +cMkuc_Z%7J\,NT1WW&^mS,S`QOoC4:K`6K#GQ)X^DZ4>KAc?-;>lIn*sVq=T2S)@K'j;B`;oKErL:^J,Y-#M>iY: +QN!BQV#ICnYPu$1^&GnJb5T]cdf.u"h>Z@3k5OTDm/HMRoD\C]p\t!fqYpHjrnmabs8N#prVlZmq#:$e +o`"F\nG_eRl2KiEi;VR3gA]P"cMkuc_Z%7J\,NT1WW&^mS,S`QOoC4:K`6K#GQ)X^DZ4>KAc?-;>lIn* +sVq=T2S) +@K'j;B`;oKErL:^J,Y-#M>iY:QN!BQV#ICnYPu$1^&GnJb5T]cdf.u"h>Z@3k5OTDm/HMRoD\C]p\t!f +qYpHjrk8?bs8N#prVlZmq#:$eo`"F\nG_eRl2KiEi;VR3gA]P"cMkuc_Z%7J\,NT1WW&^mS,S`QOoC4: +K`6K#GQ)X^DZ4>KAc?-;>lIn*dKRrr)iorqcWhrqHEarpg!Vrp0RIroF(:rnRM+rm:Yg +rlP/Trk&0n2I +A,]j7>5hV&5hn.A,^-?D>nPSFoHjhK)UN(O8bCCRf9&\W;`t![f3r=_#DITc2Q&if`BdZrnRM2roF(B +rp0RPrpp'\rqHEfrqcWlrr)iqh>dKRrr)iorqcWhrqHEarpg!Vrp0RIroF(:rnRM+rm:YgrlP/Trk&0< +riZ7!rhBC\rfmDCreCE(rdOihrc.pSrb)4?ra5Y.r`B)!r_WShr_$Kr^HfUr^ZrYr^m)`r_NMir`/r" +r`];.raYq?rb_XSrcJ6jIK4irK)UN(O8bCCRf9&\W;`t![f3r=_#DITc2Q)hg&Be+i;Vg:kl0oIn,DnW +o`"Uaq>U6ir;QZorf$mVrr2lqr;QQlq#:$eo`"C[n,DYPkl0ZBi;VO2g&B@tbl5``_#CtF[f3H/W;`Oj +Rf8QNO8an5K)U5uFoHC[D>n2IA,]j7>5hV&5hn.A,^-?D>nPS +FoHjhK)UN(O8bCCRf9&\W;`t![f3r=_#DITc2Q)hg&Be+i;Vg:kl0oIn,DnWo`"Uaq>U6ir;QZornmab +s8N#srVl`oqYp9hp\sganc&"Vli-,IjSn*:h#?"+d/M8gao9*T]Df85hn.A,^-?D>nPSFoHjhK)UN(O8bCCRf9&\W;`t![f3r=_#DITc2Q)hg&Be+ +i;Vg:kl0oIn,DnWo`"Uaq>U6ir;QZork8?bs8N#srVl`oqYp9hp\sganc&"Vli-,IjSn*:h#?"+d/M8g +ao9*T]Df85hn.A,^-?D>nPSFoHjhK)UN( +O8bCCRf9&\W;`t![f3r=_#DITc2Q)hg&Be+i;Vg:kl0oIn,DnWo`"Uaq>U6ir;QZorn[V1s82cor;QQl +q#:$eoD\:Zn,DSNkPjN@hYu7.f)F%qbPoN\_#CqEZi7$)V>d+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5 +=T2>";uTVm:B!rd8cD9[7fGjU7/0.'6K17]5_21O5c?s%6N0=K6iKLQ7K,dU8,c*Z9`@fd;#XDmU6fr;QZNs82cor;QQlq#:$eoD\:Zn,DSNkPjN@hYu7.f)F%qbPoN\_#CqE +Zi7$)V>d+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm:B!rd8cD9[7fGjU7/0.46M*Tq5`S*\ +5_22u5hA@"6iKLQ7K,dU8,c*Z9`@fd;#XDmdOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QYRs82cor;QQl +q#:$eoD\:Zn,DSNkPjN@hYu7.f)F%qbPoN\_#CqEZi7$)V>d+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5 +=T2>";uTVm:B!rd8cD9[7fGjU7/0.'6An*[5_21O5QO,8f0]@%r^?`Sr^QlWr^m)_r_EGhr_resr`K/, +raPk;rbMLOrc8!brdXp"rf6u@rg3VVrh]Uprj2U7rkSNQrlkAgrmq)%rndY7roX4ErpTjVrq$-`rqZQi +qu$HleGoFErquclrqQKerq$-ZrpTjNroa:@rndY.rmq(qrlb;\rkSNErj2U)rh]Udrg3VIrf6u1rdXoo +rc8!UrbMLDraGe5r`K/"r_remr_EGdr^m)[r^QlUr^?TM!CK6.6@hD%5_21O5i=oZ6Mj.L7/fXS7fGpW +8cDE_:B")h;uThs=T2\,@fBp;C]88OErLFbJ,Y*"NrG4@QidOpZi7N7_#D@Qbl5ugf)FA%hYuR7 +k5OWEn,DkVoD\L`q>U6fr;QZPs0r%*rVl`oqYp9hp\sd`nc&"Vl2KlFj8Rp7gA]\&d/M5f`rdOpZi7N7 +_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QZ.s4RGLrVl`oqYp9hp\sd`nc&"Vl2KlFj8Rp7 +gA]\&d/M5f`rdOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QZNs5!_SrVl`oqu6Ej +q#:$eoD\7YmJcALk5OB>hYu4-eGdenb5TBZ^AbYAZ2Ua%U]-kaPl?dDN;eG.If=ZmEW0kTCAq`B@/aI2 +=8l5!;Z9Ml:&[fb8cD9[7fGjU7/0.-6Mj(.5_21O5_22!5lO(*6N0=K6iKLQ7K,dU8,c*Z9E%Zb;#XAl +nPSHN&BmK)U`.OT(LDT)PMaWW'1%\,O,@`W"$Zci2Gng&Bk-ir8*>l2L)LnG`%Y +p\sseq>U9jr;QZNs8Murr;QTmq>U0gp\sd`nG_hSl2KiEir7g6g&BM#ci2)d`W!UN\Gic4WW&XmScPFS +rfmDDrf$i.rdOimrc.pTrbDFBra>_2r`B)!r_i_lr__8rbDFLrc.p`rdOiurf$i +hYu4-eGdenb5TBZ^AbYAZ2Ua%U]-kaPl?dDN;eG.If=ZmEW0kTCAq`B@/aI2=8l5!;Z9Ml:&[fb8cD9[ +7fGjU7/0.46Ma%G6%M:]5_21O5lnPS +HN&BmK)U`.OT(LDT)PMaWW'1%\,O,@`W"$Zci2Gng&Bk-ir8*>l2L)LnG`%Yp\sseq>U9jr;QZNs8Mur +r;QTmq>U0gp\sd`n,_qD!:BdMroX4>rndY-rm^qnrlY5ZrkABAriuI%rhKIarfmDDrf$i.rdOimrc.pT +rbDFBra>_2r`B)!r_i_lr__8rbDFLrc%sbH2r9jIf=ruN;eqhYu4-eGdenb5TBZ^AbYA +Z2Ua%U]-kaPl?dDN;eG.If=ZmEW0kTCAq`B@/aI2=8l5!;Z9Ml:&[fb8cD9[7fGjU7/0.-6Mj',5_21O +5_20$5X><7g-Y[(r^?`Sr^QlWr^m)^r__8rbDFLrc.p`rdOiurf$irndY-rm^qnrlY5ZrkABAriuI%rhKIarfmDDrf$i.rdOimrc.pTrbDFBra>_2r`B)!r_i_lr_U0gp\sd`nG_hSl2KiEir7g6g&BM#ci2)d`W!UN\Gic4WW&[lT)OuROT(4_8rbDFLrc.p`rdOiurf$i_8rbDFLrc.p`rdOiurf$i< +rfmDRrhKIlriuI3rkABNrlY5drm^r#rndY6roX4ErpB^Srq$-`rqQKgrql]mrr([Qh>dKQrqucmrqZQg +rq??^rpTjRroj@Cro*k4rn.5"rm(Mbrl"fLrjMg0ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG' +r`&kor_NMer_!/\r^ZrWr^?EHi'RE/h`u`XJO"cOV*P#Gi'RE0qa:6Kr^QlWr^d#\r_3;er_`Yor`9#' +ra5Y6rb;@Jrc%j\rd=]qreg]8rfd>PrhBCjric=0rk8ric="rh9C`!M,e\PQ$XB +MZ//*I/\?hE;j\QC&VT@?iF=0sAj9`@Z`8H)-Y7fGgK6f:<16%M;o5_21O5`\206/=m)6i0:N +7fGpW8H)6\9`@ie;>sPodKQrqucmrqZQgrq??^rpTjRroj@Cro*k4rn.5"rm(Mb +rl"fLrjMg0ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG'r`&kor_NMer_!/\r^ZrWr^?EHkP +rhBCjric=0rk8Kjo46Z(+eGdbmao96X^&GJ>YPtL"UAg__PQ$XBMZ//*I/\?hE;j\QC&VT@?iF=0sAj9`@Z`8H)-Y7fGgK6f:<16(pPp5_21O5iY-/6/=m)6i0:N7fGpW8H)6\9`@ie;>sPorl"fXrm(Mmrn7;,ro*krl"fXrm(Mmrn7;,ro*k< +roj@Krp]pXrq??crqZQjrqucoeGoOHrqucmrqZQgrq??^rpTjRroj@Cro*k4rn.5"rm(Mbrl"fLrjMg0 +ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG'r`&kor_NMer_!/\r^ZrWr^?KJ!CK646N09%5c6ku +5_22V5lO(*6Mj.I7/f[T8,c'Y9)_N`:]=5j<;oqt>lJ+0@fC*@D#SDQGQ*!hJGtH*NrG7ASc5A_W;a"" +[f3u>`;[mXcMl>mg&Bh,iVqsU9jr;QZPs0r%-rVl`oqu6Ejq#:!do)A+WmJc>K +jo46Z(+eGdbmao96X^&GJ>YPtL"UAg__PQ$XBMZ//*I/\?hE;j\QC&VT@?iF=0sAj9`@Z` +8H)-Y7fGgK6fC?36N09%5_VIS5_20$5X><7h*V!+qaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQ +rce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrm(Mmrn7;,ro*kric="rhBC_rfd>Breg]*rd=]hrc%jQ +rb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTog@Y(r^#R0JO"cOJO#nor^#U3qEk'HqaCEQr^ZrYr_!/` +r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrm(Mmrn7;,ro*kc=2rr)iorql]irq??arpg!Vrp9XIroF(:rnIG'rmLeirl>#Srjr*:ric$Lr^QlWr^m)^r__dKQrqucmrqQKdrq69\rpTjQroa:Aro!e1rmq(srlkA^ +rk\TFrjDa/rh]Ud!1EqWRf8EJMuJJ1JGsloFT-7YC]7uG@/aI2>5hP$;uTSl:&[ca8cD6Z7fGjO6et([ +5jpsh5_21W5i"d%6iKOR7fGpW8cDB^:&[rf;Z9\q>5hh,@/agd[t +[/RZ9_>_IRbQ-&ldaJ-HrnIG1roF(Arp9XPrpg!\rqHEerql]mrr([Qrr)iorql]irq??arpg!Vrp9XI +roF(:rnIG'rmLeirl>#Srjr*:ric$Lr^QlWr^m)^r__dKQrqucmrqQKd +rq69\rpKmSli?DOkPjQAi;VL1f)F+sbl5Z^_>_%F[JmB/V>d+dRf8EJMuJJ1JGsloFT-7YC]7uG@/aI2 +>5hP$;uTSl:&[ca8cD6Z7fGjO6et(u5_21O5_22V5i"d%6iKOR7fGpW8cDB^:&[rf;Z9\q>5hh,@/ag< +C]88RFE@M)rd+QoreCE2rfI,Jrh'1dric=.rjr*Frl4r]rmLetrnIG1roF(Arp9XPrpg!\rqHEerql]m +rr%fUrr)iorql]irq??arpg!Vrp9XIroF(:rnIG'rmLeirl>#Srjr*:ric#Srjr*:ric$Lr^QlW +r^m)^r__#Srjr*: +ric_%F[JmB/V>d+dRf8EJMuJJ1JGsloFT-7YC]7uG@/aI2>5hP$;uTSl:&[ca8cD6Z7fGjO +6et)b5_21O5_21i5j(K.6MNqI7K,dU8,c*Z9E%Zb:]=8klJ.1Ac?EC +DZ4_VGlE-jL&Qu/OT(XHT)PMaY5Yd,\c0DD`r=0\dJh\qgA^"/j8S3?li->Onc&4\pAXgcqu6NmrS@MQ +rVl`oqu6?hpAXaanc%tUli-&Gj8Rs8gA]\&dJh>g`W![P\c/r7Y5Y3qScG,YR$dl7repc0rdFcjrcA'V +rbDFDra>_1r`T5#r_i_kr_3;`r^m)Zr^QlUpd=11pd'Hrmm)FhJO#&Wpd+%/pd>$Lr^QlWr^m)^r_3;e +r_i_qr`T5*ra>_:rb;@LrcA'`rdFd"reg]:rg<\VrhKIqrj2U7rkSNQrlY;h!R]lJ.1Ac?ECDZ4_VGlE-jL&Qu/OT(XHT)PMaY5Yd,\c0DD`r=0\ +dJh\qgA^"/j8S3?li->Onc&4\pAXgcqu6NmrS@MQrVl`oqu6?hpAXaanc%qWlg"Q:roX4?rnm_/rmq(r +rlb;[rkSNDrj2U,rhKIarg<\Hrepc0rdFcjrcA'VrbDFDra>_1r`T5#r_i_kr_3;`r^m)Zr^QlUpd=11 +pd(B7JO"cOJO&$Vpd+%/pd>$Lr^QlWr^m)^r_3;er_i_qr`T5*ra>_:rb;@L!HW;^F8gF`IK"s"MZ/_: +R/W]VU].FqZi7N7_#D@QbPoogec+;%hu;[8k5O]Gmf)bUp&=[ap\t'hr;QYRs8Murr;QTmp\smcp&=L\ +mf)POk5OE?hu;@/f)F(rbPoK[_#CnDZi7-,U]-kaR/W3HMuJG0IK"KjF8g(VCAqfD@/aF1=oMG#;Z9Jk +9`@Z`8cD6Z7fGjO6fp`16%V@Q5_21O5k[J<60:N/6iKOR7fGpW8cDB^9`@ie;Z9\q=oM\*@/aa:C&W#L +F8gF`IK"s"MZ/_:R/W]VU].FqZi7N7_#D@QbPoogec+;%hu;[8k5O]Gmf)bUp&=[ap\t'hr;QZEs8Mur +r;QTmp\smcp&=L\mf)POk5OE?hu;@/f)F(rbPoK[_#CnDZi7-,U]-kaR/W3HMuJG0IK"KjF8g(VCAqfD +@/aF1=oMG#;Z9Jk9`@Z`8cD6Z7fGjO6iB@:6MNit5bUGo5_22P5kmY-6MNqI7K,dU8,c*Z9E%Wa:]=8k +lJ.1Ac?ECDZ4_VGlE-jL&Qu/OT(XHT)PMaY5Yd,\c0DD`r=0\dJh\qgA^"/j8S3?li->Onc&4\ +pAXgcqu6NmrSRXas8Murr;QTmp\smcp&=L\mf)POk5OE?hu;@/f)F(rbPoK[_#CnDZi7-,U]-kaR/W3H +MuJG0IK"KjF8g(VCAqfD@/aF1=oMG#;Z9Jk9`@Z`8cD6Z7fGjO6fp`15lj59JO"cOJO"cOq*=^@k!Ji1 +r^HfUr^ZrZr_*5ar_NMkr`/r#r`oG1ral(Crbh^VrcnEjre:?/rfI,Hrgs+ariZ7,rji$Drl4r\rmC_q +rn@A/ro="?rp0ROrpg!\rq??crql]mrr'P1g&M'MrqucmrqHEcrq69\rpKdOroX4?rnm_/rmq(rrlb;[ +rkSNDrj2U,rhKIarg<\Hrepc0rdFcjrcA'VrbDFDra>_1r`T5#r_i_kr_3;`r^m)Zr^QlUpd=11pd*_$ +JO"cOJO#\ipd+C9pHnXBr^HfUr^ZrZr_*5ar_NMkr`/r#r`oG1ral(Crbh^VrcnEjre:?/rfI,Hrgs+a +riZ7,rji$Drl4r\rmC_qrn@A/ro="?rp0ROrpg!\rq??crql]mrr([Qi;`fUrr)iorqcWgrq??_rp]pS +rp0RFro3q7rn7;$rm:Yerl"fNrjVm4riQ0orgj%Trf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_NMe +r_!/]r^QlUr^?NKk!IE[JO"cOJO#MdlpCS9pd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^ +rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5aXrr2oq +rquclrqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5YrkJHArj)O*rhBC_!1*_QQi<'FM>i/,I/\?hErKqT +B`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6fp^d5it=_5_21O5QF(36MNqI7/fXS7fH!Y9E%Wa:]=8k +<;p#!>Q/"/AH$nSTGQ*!hKDp`,O8bLFSc5A_Xo>X*\,O/A`;[mZciMM?rmh#$rnm_7roO.FrpB^S +rq$-^rqHEgrql]nqu5aXrr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5YrkJHArj)O*rhBC_ +rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Yr^HfSpd=11r'5fuJO"cOJO&Kck!Ji1 +r^?`Sr^QlYr_*5ar_NMkr`&l!r`fA/rac"Brb_XTrce?hre(3,rf@&Frgj%_riQ1*rjVmArl"fYrm:Yp +rn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nk5YG[rr)iorqcWgrq??_rp]pS!UK%Oli-#Fir7j7g&BP$ +d/M2e`;[ON\,N]4Xo>'oSc4uTO8b"8KDp8tGQ)X^D>n5JAH#s8>Q.b(<;obo:]=&e9)_E]7fGjU7/0.3 +6BXTb5_21O5h&']6MNqI7/fXS7fH!Y9E%Wa:]=8k<;p#!>Q/"/AH$dKR +rr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl"fNrjVm4riQ0orgj%Trf@&8re(2trce?^rb_XJ +rac"8r`fA(r`&kor_NMer_!/]r^QlUr^?NKrBfd9JO#SfJO"cOc9UMYpd>$Kr^HfUr^m)^r_3;er_i_p +r`K/(ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^ +rqHEgrql]nqu5^W])Vd/rr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl"fNrjVm4riQ0orgj%T +rf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_NMer_!/]r^QlUr^?NKk!Jc,JO"cOJO"cOn3H,&pd>$K +r^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$ +rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu4M5h#IBQrr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Ye +rl"fNrjVm4riQ0orgj%Trf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_NMer_!/]r^QlUr^?NKk!IQ_ +JO"cOJO#A`n3Zk9pd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrhBCo +rj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5XUi;`fUrr)iorqcWgrq??`rp]pS +rp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMd +r_!/\r^QlUr^?WNj$M*XJO"cOJO#MdlpCA3r^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\ +rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu5aXrr2oq +rquclrqHEcrq-3ZrpB^MroO.=rnm_,rm^qnrlP/XrkJH@rilC%rh07[!0mSMQ2ZdBL]2l(HiA3fEW0bQ +B)Z9=?N+1.=T24t;#X8i9E%Q_8H)*X7K,^P6fULa5it=_5_21O5QF(-6N0@O7/fXS7fGsX8cDB^:]=5j +;Z9et>5hk-@fC$>C]8>QG5cjfJc:H(NW,4BS,T)[WrB4$[f4&@`;[jYcN2ArbMLQrc\9frdk'(rf-oBrgWn[ri5t$rjMg@rl"fXrm1Sm +rn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nk5YG[rr)iorqcWgrq??`rp]pS!UAqMlMfoEir7j7fDa;! +ci2&c`;[ON[f3N1WrA[jS,S]PNW+_4Jc:#qG5cL\C]7rF@fB^5>Q.b(;Z9Ml:]=#d9)_B\7fGjU7/K@3 +6BXTb5_21O5h&'W6N0@O7/fXS7fGsX8cDB^:]=5j;Z9et>5hk-@fC$>CB8Ep!-/!]rd4WqreLK4rg!JP +rh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu2l\rr2oqrquclrqHEcrq-3Z +rpB^MroO.=rnm_,rm^qnrlP/XrkJH@rilC%rh07[rg!JBreLK(rd4Wfrc.pQrau.=ra,S.r`K.tr_WSi +r_*5_r^d#Xr^HfSqa9C1JO'#rJO"cOJO&Tfi'RE1r^?`Sr^QlXr^m)^r_NMjr_i_tr`];-raPk>rbMLQ +rc\9frdk'(rf-oBrgWn[ri5t$rjMg@rl"fXrm1Smrn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nh>dKR +rr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLF +raPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNqEjI6JO#SfJO"cOc9U;Sr^6ZQr^HfUr^d#[r_*5dr_`Ym +r`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_ +rqHEgrql]nqu5^W])Vd/rr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnP +rf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$NH)JO"cOJO"cOn3Gnur^6ZQ +r^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUku +rnm_7roO.ErpB^Srq-3_rqHEgrql]nqu4M5h#IBQrr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Sc +rl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$M6\ +JO"cOJO#A`n3ZY3r^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07j +ric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu5XUi;`fUrr)iorqcWgrq69]rp]pR +rosFCro*k5rn%.urm1Sarkn`Lrj;[-ri#ghrgNhNrf$i2rdauorcS3ZrbDFEraPk4r`T5%r_i_lr_EGc +r^m)Zr^HfSpd=(.cp3.IJO"cOQ9ae'og8OCr^?`Sr^ZrZr_*5cr_WSlr`B)&ra#M4rau.Erc%jZrd+Qo +reCE2rfmDNrh07hric=.rkABKrl>#armUkurndY5roF(Crp9XRrpp']rqHEgrql]nqu5aXrr2oqrqucl +rqHEbrpp'Xrp9XKroF(;rndY+rmUkmrl>#UrkAB=riZ7!rh07Z!0dMKPl?X@LAl`&HN&'dE;jVOB)Z9= +?2e"+=8l+s;#X5h9E%N^8,bsV7/0.06@hDa5_21O5_20#5i>!+6iKLQ7K,gV8cDB^:B")h;Z9bs>5hh, +@fC!=CAr2OFoH^dJGt<&N;f(@Rf8uZW;a""[/Rf=_Z%RUcN2A#UrkAB=riZ7!rh07ZrfmD@reCE& +rd+Qdrc%jOrau.=ra#M+r`B(sr_WShr_*5^r^ZrVr^?NKj$NZ/JO"cOJO"cOl9O8oqa:?Nr^HfVr^m)^ +r_EGhr_i_sr`];,raPk=rbDFOrcS3drdb!&rf$i@rgNhZri#h"rj;[=rkeZTrm1Smrn%/+ro*k;rosFK +rp]pXrq69brqcWkrr)`nk5YG[rr)iorqcWgrq69]rp]pR!U8hKl2KcCiVq^5fDa7uci1ua_u@CL[/R6- +W;`IhRf8QNN;eS2JGsloFoH@ZCAqiE@fB[4=oMM%;Z9Ml:B!oc8cD6Z7K,^M6fULr5_21O5_22M5i>!+ +6iKLQ7K,gV8cDB^:B")h;Z9bs>5hh,@fC!=C&r9m!-%p[rd+QoreCE2rfmDNrh07hric=.rkABKrl>#a +rmUkurndY5roF(Crp9XRrpp']rqHEgrql]nqu2l\rr2oqrquclrqHEbrpp'Xrp9XKroF(;rndY+rmUkm +rl>#UrkAB=riZ7!rh07ZrfmD@reCE&rd+Qdrc%jOrau.=ra#M+r`B(sr_WShr_*5^r^ZrVr^?NKj$J;^ +q*9KrJO"cOm6KSrqa:?Nr^HfVr^m)^r_EGhr_i_sr`];,raPk=rbDFOrcS3drdb!&rf$i@rgNhZri#h" +rj;[=rkeZTrm1Smrn%/+ro*k;rosFKrp]pXrq69brqcWkrr)`nh>dKRrr)iorqcWgrq69]rp]pRrosFC +ro*k5rn%.urm1Sarkn`Lrj;[-ri#ghrgNhNrf$i2rdauorcS3ZrbDFEraPk4r`T5%r_i_lr_EGcr^m)Z +r^HfSpd=mEl9^%eQp?3fJO%LGi'R<.r^?`Sr^ZrZr_*5cr_WSlr`B)&ra#M4rau.Erc%jZrd+QoreCE2 +rfmDNrh07hric=.rkABKrl>#armUkurndY5roF(Crp9XRrpp']rqHEgrql]nqu5^W])Vd/rr)iorqcWg +rq69]rp]pRrosFCro*k5rn%.urm1Sarkn`Lrj;[-ri#ghrgNhNrf$i2rdauorcS3ZrbDFEraPk4r`T5% +r_i_lr_EGcr^m)Zr^HfSpd=(.p-=0oJO"cOJO&]ii'R<.r^?`Sr^ZrZr_*5cr_WSlr`B)&ra#M4rau.E +rc%jZrd+QoreCE2rfmDNrh07hric=.rkABKrl>#armUkurndY5roF(Crp9XRrpp']rqHEgrql]nqu4M5 +h#IBQrr)iorqcWgrq69]rp]pRrosFCro*k5rn%.urm1Sarkn`Lrj;[-ri#ghrgNhNrf$i2rdauorcS3Z +rbDFEraPk4r`T5%r_i_lr_EGcr^m)Zr^HfSpd=(.e3JRMJO"cOP!JM'nO!+?r^?`Sr^ZrZr_*5cr_WSl +r`B)&ra#M4rau.Erc%jZrd+QoreCE2rfmDNrh07hric=.rkABKrl>#armUkurndY5roF(Crp9XRrpp'] +rqHEgrql]nqu5XUi;`fUrqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm(M_rk\TIrj2U,ri#ggrgEbL +repc0rdXomrcA'Wrb;@DraGe2r`T5$r_i_kr_Lrh'1griZ7,rk8L&QT$H2_maDuOJMB)Z6<>lIn*!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@K'j;C&W&MFT-RbJ,Y0$MuJq>RJriXW;`t!Zi7Z; +_Z%OTc2l59rmLesrn[S3ro="Brp9XQrpp']rqHEgrql]mqu5aXrr2oprql]krqHEbrpp'Wrp0RJro="9 +rn[S)rmLekrl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau. +rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWkrquZmk5YG[rqucmrqcWgrq69] +rpTjP!U8hKl2K`Bi;VR3f)F+scMki__>_.IZi7-,W;`FgRJrELMuJG0J,X`mF8g+WC&V`D@K'O2=oMJ$ +;Z9Jk:&[ca8H)-Y7K,^M6fULr5_21O5_22M5i>!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@K'j;B`W-j +!,qjYrd"Kmre:?0rfd>Lrh'1griZ7,rk8rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69b +rqcWkrquZmh>dKRrqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm(M_rk\TIrj2U,ri#ggrgEbLrepc0 +rdXomrcA'Wrb;@DraGe2r`T5$r_i_kr_Lrh'1griZ7,rk8Lrh'1griZ7,rk8Lrh'1g +riZ7,rk8_1r`K/"r_`Yjr_3;_ +r^d#Xr^HfSpd=C7a$>2@JO"cONBm/'og8OCr^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdWrce?k +re19-rfR2Hrgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5aXrr2oprql]k +rq??`rpg!Vrp0RIro3q7rnRM'rmLekrl+lQrk/69riH*rrgj%T!0I;EOoC4:K`6K#GQ)[_DuOGLAH$!9 +>lIk)sSp=T2S) +@/a^9B`;rLF8gC_J,Y-#M>iY:Qi_9rb2:LrcA'_rdXp#re^W:rg3VTrhf[srj)O9rkSNPrm(Mjrmh#'rnm_7roj@I +rpTjVrq-3`rqcWkrquZmk5YG[rqucmrqcWfrq-3[rpTjP!U/_Ikl0T@hu;F1ec+"rcMkf^_>_+HZMps) +VZ*.cQi<-HM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6gR-r5_21O5_22D5j:W4 +6iKLQ7K,dU8,c*Z9`@fd;>sSp=T2S)@/a^9BE<$i!,qjXrce?kre19-rfR2Hrgj%criQ1*rk/6Grl+l^ +rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu2l\rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM'rmLek +rl+lQrk/69riH*rrgj%TrfR2:re19#rce?_rbqdLrac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKlp?7g +n3DOiJO"cOj?Vrrqa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb2:LrcA'_rdXp#re^W:rg3VTrhf[s +rj)O9rkSNPrm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmh>dKRrqucmrqcWfrq-3[rpTjProj@@ +rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_r^d#X +r^HfSpd=mEo0S!nO$J7]JO%1>ksG87r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdWrce?kre19- +rfR2Hrgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5^W])Vd/rqucmrqcWf +rq-3[rpTjProj@@rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/" +r_`Yjr_3;_r^d#Xr^HfSpd=C7m6H4fJO"cOJO&B`ksG87r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"A +rbqdWrce?kre19-rfR2Hrgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu4M5 +h#IBQrqucmrqcWfrq-3[rpTjProj@@rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'W +rb2:Ara>_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=C7b_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=U=qa&7fJO"cOJO#2[r^$lIk)sSp=T2S)@/a^9BDufJEW1+[J,Y*"M#NM8QN!ER +V>dOpZ2VB7_#D7PblQ)6rmC_qrnIG0ro3q@rp'LNrp]pZrq??erql]mqu5aXrr2oprqcWirq??_rp]pT +rp0RIro3q6rnIG&rmC_irl"fNrk&07riH*qrg`tRrfI,8re(3"rcS3\rbh^Jrac"9r`oG)r`/qpr_NMe +r^m)[r^QlUr^?NKnj<4>o0@jlJO"cOJO&0Zr^#m;qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb)4J +rc.p[rdXp"reUQ8rg*PRrh]UpriuI7rkSNOrltGirmh#&rnm_7roj@HrpKdTrq-3`rqZQjrquZmk5YG[ +rquclrqZQerq$-YrpKdO!U/_Ikl0T@hYu:/ec*tqc2PZ\^](kEZ2Uj(V>d"aQN!!FM#N&+J,XTiErKtU +BDuH@@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6h3S@6&@jX5_21O5g)Fl60pr86iKLQ7K,dU8,c*Z9`@fd +;>sSp=T2S)@/a^9B)umf!,hdUrcS3ire(3+rfI,Frg`tari?%'rk&0Frl"f\rmC_qrnIG0ro3q@rp'LN +rp]pZrq??erql]mqu2l\rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG&rmC_irl"fNrk&07riH*qrg`tR +rfI,8re(3"rcS3\rbh^Jrac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKnj<4>JO&]iJO"cOJO&9]r^#m; +qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb)4Jrc.p[rdXp"reUQ8rg*PRrh]UpriuI7rkSNOrltGi +rmh#&rnm_7roj@HrpKdTrq-3`rqZQjrquZmh>dKRrquclrqZQerq$-YrpKdOroj@@rndY/rmh"qrltG\ +rkJHEriuI(rh]Uarg*PFreUQ+rdXoirc8!Urb)4@ra>_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=mEq*OsE +JO#8]JO"cO`BaDglpCS:r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"@rbh^TrcS3ire(3+rfI,Frg`ta +ri?%'rk&0Frl"f\rmC_qrnIG0ro3q@rp'LNrp]pZrq??erql]mqu5^W])Vd/rquclrqZQerq$-YrpKdO +roj@@rndY/rmh"qrltG\rkJHEriuI(rh]Uarg*PFreUQ+rdXoirc8!Urb)4@ra>_1r`K/"r_`Yjr_3;_ +r^d#Xr^HfSpd=U=qa'U7JO"cOJO"cOk_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=U=qa&CjJO"cOJO#&Wr^$HKnO!+?r^?`Sr^QlWr^m)_r_EGi +r`/r"r`oG1rac"@rbh^TrcS3ire(3+rfI,Frg`tari?%'rk&0Frl"f\rmC_qrnIG0ro3q@rp'LNrp]pZ +rq??erql]mqu5XUi;`fUrquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHCrilC%rhTO`rg!JD +reLK*rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNlpC\;`'Al=JO"cOMEq/,qa0j?r^6QN +r^QlWr^m)_r_rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$Brkn`Zrm:YornIG0 +ro3q@rp'LNrp]pZrq??erql]mqu5aXrr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrji$4 +ri5snrg`tQ!07/AO8aq6KDp?!FoHC[D>n/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6%M;T5_21O +5_22m5lO(96N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6Q2[dKRrquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHCrilC%rhTO`rg!JDreLK* +rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNoKr@?r]u*#N'MqZJO%(;r^#m;r^6QNr^QlW +r^m)_r_rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$Brkn`Zrm:YornIG0ro3q@ +rp'LNrp]pZrq??erql]mqu5^W])Vd/rquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHCrilC% +rhTO`rg!JDreLK*rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNlpC\;l9KncJO"cOJO&9] +r^#m;r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$Brkn`Z +rm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu4M5h#IBQrquclrqZQerq$-YrpKdOroj@@rndY/rm^qo +rlkAZrkJHCrilC%rhTO`rg!JDreLK*rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNlpC\; +a?Y;AJO"cOL-Y`(!CB-@6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6Q2[U9jr;6KRs5X.Yrr2lqr;QQlq>U'doD\7Y +mf)MNkPjH>hYu7.e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_RAc?05hn.@fBsnPS +FT-[eJGt<&O8bCCRf9)]WrB7%\c0>B_Z%aXci2DmgA]q-iVr$>lMg5NnG`%Yp&=ddqu6NmrVlf\s8N#s +rVl`oqYplMg5N +nG`%Yp&=ddqu6NmrVlf\s8N#srVl`oqYpn,G@fBa6=oMM%<;o_n:B!rd8cD9[7fGgQ6gR/=61@-j5_21O5_22W5lO(9 +6N0@L7/f[T8,c*Z9`@fd;#XGnZC4kPjcGmf)_ToD\F^q>U9jr;QZorosI^rr2lqr;QQlq>U'doD\7Ymf)JPkN;j.ro*k5rn@A# +rm1SerkeZJrji$4ri5smrgNhOrf@&5rdk&rrcJ-Yrb_XGraPk6r`T5%r`&knr_EGdr^m)[r^QlTqa9^: +r]u9(JO"cOJO%:Ar^#m;r^6QNr^QlWr^m)_r_EGhr`&ktr`];.raPknPSFT-[eJGt<&O8bCC +Rf9)]WrB7%\c0>B_Z%aXci2DmgA]q-iVr$>lMg5NnG`%Yp&=ddqu6NmrVle`s8N#srVl`oqYpn,G@fBa6=oMM%<;o_n +:B!rd8cD9[7fGgQ6gR/=6%M;g5_21O5_22Z5lO(96N0@L7/f[T8,c*Z9`@fd;#XGnZC4kPjcGmf)_ToD\F^q>U9jr;QZoro!hU +rr2lqr;QQlq>U'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_R +Ac?05hn.@fBsnPSFT-[eJGt<&O8bCCRf9)]WrB7%\c0>B_Z%aXci2DmgA]q-iVr$>lMg5NnG`%Y +p&=ddqu6NmrVlfXs1SI3rr2lqr;QQlq>U'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX^&GSAYl:[%U]-_] +Q2ZjDLAlc'I/\6eE;j_RAc?05hn.@fBsnPSFT-[eJGt<&O8bCCRf9)]WrB7%\c0>B_Z%aXci2Dm +gA]q-iVr$>lMg5NnG`%Yp&=ddqu6NmrVlf6s53kUrr2lqr;QQlq>U'doD\7Ymf)MNkPjH>hYu7.e,I\m +bPoBX^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_RAc?0rp'LNrp]pYrq69drql]mrr)iqj8\0>rr2oqrql]krqZQdrq$-Y +rpKdNroa:>rndY.rmUkmrlb;Xrk8<@rilC$rhBC\rfmDCre:?%rd4Wcrc%jQral(rp'LNrp]pYrq69drqcWkrr)iql2Ub^rr)in +rqcWirq69^rp]pTrp'LGro*k5rn@A#rm1SerkeZJrj_s3ri,mkrgNhN!07/AO8ak4JGsopF8g.XD#S#F +@fB^5=oMJ$;Z9Ml:&[fb8cD9[7ef@;6N09%5h\JS5_21O5kI>@60pr56iKRS8,c*Z9E%Zb;#XAlrp'LNrp]pYrq69d +rqcWkrr)iql2Ub^rr)inrqcWirq69^rp]pTrp'LGro*k5rn@A#rm1SerkeZJrj_s3ri,mkrgNhNrf@&4 +rdauprcA'XrbVRFraPk5r`T5$r_i_lr_$Mr^ZrZ +r_*5br_WSlr`9#$ra5Y6ral(FrbqdWrd4Wpre:?4rfmDNrhBCkrilC3rkABKrlb;ermUl#rn[S4roa:G +rpKdTrq$-^rqZQirql]nrr20^rr2oqrql]krqZQdrq$-YrpKdN!U&VGkPjH>hYu7.e,I\mbPoBX^&GP@ +Yl:X$UAgV\Pl?aCL&QW%HiA*cE;j\QAc?0rp'LNrp]pYrq69drqcWkrr)iqR/d0brr)inrqcWirq69^rp]pTrp'LGro*k5rn@A# +rm1SerkeZJrj_s3ri,mkrgNhNrf@&4rdauprcA'XrbVRFraPk5r`T5$r_i_lr_$Mr^ZrZr_*5br_WSlr`9#$ra5Y6ral(FrbqdWrd4Wpre:?4rfmDNrhBCk +rilC3rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQirql]nrr1jUrr2oqrql]krqZQdrq$-YrpKdN +roa:>rndY.rmUkmrlb;Xrk8<@rilC$rhBC\rfmDCre:?%rd4Wcrc%jQral(rp'LNrp]pYrq69drqcWkrr)iqjo<$orr2oqrql]k +rqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8<@rilC$rhBC\rfmDCre:?%rd4Wcrc%jQral(rp'LNrp]pYrq69drqcWkrr)iq +_uJWorr2oqrql]krqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8<@rilC$rhBC\rfmDCre:?%rd4Wc +rc%jQral(ZC4kPjcGmf)_T +oD\F^q>U6iqu6Qnro=%=s8N#srVl]nqYp";Z9Ml:&[fb8H)-Y7ef@;6N09h5_21O5_21X5lO(H6LmJ< +6iKRS8,c'Y9E%Zb;#XAlZ@3kPjcGmJcVSoD\F^q>U6iqu6QnrosI^rr2lqqu6Hkq>U'doD\7YmJcALkPjE=h>Z.-df.PkbPoBX +^&GM?YPtL"UAgV\PQ6^ENfO*lrdXoorcA'WrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1 +rk8Z@3kPjcGmJcVSoD\F^q>U6iqu6QnrosI^rr2lqqu6Hkq>U'doD\7YmJcAL +kPjE=h>Z.-df.PkbPoBX^&GM?YPtL"UAgV\Pl?^BK`6K#HiA*cDuOPOAH$$:?N+(+rn[S-rmLekrlb;Xrk8$Mr^ZrYr_*5br_WSlr`9##ra,S4raZ%F +CB//LDuOhWHiAQpK`7#2PQ%$MUAh.kYPu$1^&GnJbPoiedf.u"h>Z@3kPjcGmJcVSoD\F^q>U6iqu6Qn +rg<`brr2lqqu6Hkq>U'doD\7YmJcALkPjE=h>Z.-df.PkbPoBX^&GM?YPtL"UAgV\Pl?^BK`6K#HiA*c +DuOPOAH$$:?N+(+";Z9Ml:&[fb8H)-Y7ef@C6MWtI6%M:[5_21O5f,ec60pr56iKRS +8,c'Y9E%Zb;#XAlZ@3 +kPjcGmJcVSoD\F^q>U6iqu6QnroO0ns8N#srVl]nqYp";Z9Ml:&[fb8H)-Y7ef@;6N0:95_21O5_21O +5ib3060pr56iKRS8,c'Y9E%Zb;#XAlZ@3kPjcGmJcVSoD\F^q>U6iqu6Qnrkncns8N#srVl]nqYp";Z9Ml:&[fb8H)-Y7ef@; +6N09l5_21O5_21T5lO%M6:1*,pd>$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>M +rhBCkric=1rk8$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdV +rd4Wpre191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]nrr20^rr2oq +rql]krqQKcrq$-Yrp9XKroX4sSp +=T2Y+@K'g:C]88OErLFbJGt6$NW,+?R/WfYVuEju[f3r=_#VUYb0'_/rmLf!rn[S3roX4Drp9XRrq$-^ +rqQKgrql]nrr20^rr2oqrql]krqQKcrq$-Yrp9XKroX4_+H +[f3H/W;`LiR/W9JNW+V1J,XfoErKtUC]7lD@K'U4=T2>";>sDk:&[fb8H)*X7JK7:6N09*5_21O5_22A +5lO(96MNqI7K,gV8H)9]:&[ug;>sSp=T2Y+@K'd$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdVrd4Wp +re191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]nrr2$Z^&S*2rr)in +rqcWhrq69^rp]pRrosFEro!e2rn7;!rm(Mcrk\THrjMg/ri#girg<\Jrf-o1rdXoorc8!UrbMLDraGe4 +r`K/"r_`Ykr_$Lr^ZrYr_*5br_WSkr`/r"ra,S4 +rac"DrbqdVrd4Wpre191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]n +rr0h8huE]Trr)inrqcWhrq69^rp]pRrosFEro!e2rn7;!rm(Mcrk\THrjMg/ri#girg<\Jrf-o1rdXoo +rc8!UrbMLDraGe4r`K/"r_`Ykr_sSp=T2Y+@K'g:C]88OErLFbJGt6$NW,+?R/WfYVuEju[f3r=_>_UVcMl8kg&Bh,i;VmU9jrVlfVs5X.Yrr2lqqu6Hkq#9scoD\7Ym/H8Kjo43;h#?"+dJhDiao9-U]`,A=Y5Y?u +T`1>XP5^I?KDpB"HiA'bDZ4GNAH$!9?2dt*5_21O5_hW(62j4A +6MNqI7K,dU8,c0\:&[ug;>sSp=T2V*@K'g:C]88OErLFbJ,Y*"NW,+?R/WcXVuEju[f3r=_>_RUc2Q,i +g&Be+i;Vj;kl0rJnG`%Yp&=acq>U9jrVlf\s8N#srVl]nqYp9hp&=R^nG_eRl2KfDi;VO2g&BCuc2Pia +_>_+H[f3H/VuE@gR/W6KN<,#ure(3"rd4Wbrbh^Nrac"9ra#M*r`/qpr_WSgr_*5\r^QlUpd=L:qa#cu +g-C3SJO"cOnNd(>mm?e:r^HfUr^Zr\r_U9jrVlf\s8N#srVl]nqYp9hp&=R^nG_eR +l2KfDi;VO2g&BCuc2Pia_>_+H[f3H/VuE@gR/W9JNW+S0J,XfoErKtUC]7lD@/aI2=T2>";>sDk:&[fb +8,c!W7JK7=6Mj(<5_21O5_21O5heR'617/86iKOR7fGpW9E%Zb;#X>k_2 +r`K/"r_`Ykr__RUc2Q,ig&Be+i;Vj;kl0rJnG`%Yp&=acq>U9j +rVle`s8N#srVl]nqYp9hp&=R^nG_eRl2KfDi;VO2g&BCuc2Pia_>_+H[f3H/VuE@gR/W9JNW+S0J,Xfo +ErKtUC]7lD@/aI2=T2>";>sDk:&[fb8,c!W7JK7=6Mj'"5j^gf5_21O5i+d*617/86iKOR7fGpW9E%Zb +;#X>kX +P5^I?KDpB"HiA'bDZ4GNAH$!9?2dt*sSp=T2V*@K'g:C]88OErLFbJ,Y*"NW,+?R/WcXVuEju[f3r=_>_RUc2Q,ig&Be+ +i;Vj;kl0rJnG`%Yp&=acq>U9jrVlfXs1SI3rr2lqqu6Hkq#9scoD\7Ym/H8Kjo43;h#?"+dJhDiao9-U +]`,A=Y5Y?uT`1>XP5^I?KDpB"HiA'bDZ4GNAH$!9?2dt*sSp=T2V*@K'g:C]88OErLFbJ,Y*"NW,+?R/WcXVuEju[f3r= +_>_RUc2Q,ig&Be+i;Vj;kl0rJnG`%Yp&=acq>U9jrVlf6s53kUrr2lqqu6Hkq#9scoD\7Ym/H8Kjo43; +h#?"+dJhDiao9-U]`,A=Y5Y?uT`1>XP5^I?KDpB"HiA'bDZ4GNAH$!9?2dt*rr2oqrql]krqQKb +rpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0re(3"rd+Qarbh^Mrac"9ra#M*r`/qp +r_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!a +rdOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ro!e;roj@Jrp]pYrq-3brqZQjrr)iql2Ub^rr)in +rqcWhrq-3\rp]pRrosFDro!e2rn7:urltGarkSNFrjMg/rhoagrg3VH!0%#=NW+S0J,XcnErKtUCAqcC +@/aI2=T2>";>sAj9`@Z`8,c!W7JK7=6@hDO5_21O5_22g5jq&76iKOR7fGpW9)_N`:]=5j_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmm?;)JO"cOJO"cOfKemlpd>$Lr^QlWr_!/`r_NMj +r`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07griZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrq$-] +rqQKgrql]nrr20^rr2oqrql]krqQKbrpp'Xrp9XK!TiDCjo43;h#?"+dJhDiao9*T]Df8KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'dre(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:JO&B`JO"cOJO%sT +mm?e:r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGi +rn7;+ro!e;roj@Jrp]pYrq-3brqZQjrr)iqi;`fUrr)inrqcWhrq-3\rp]pRrosFDro!e2rn7:urltGa +rkSNFrjMg/rhoagrg3VHrf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTLoKrIBJO"rT +JO"cO]KkpPpd>$Lr^QlWr_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07griZ7/rk/6G +rlP/armC_urnRM2roO.Crp9XRrq$-]rqQKgrql]nrr2$Z^&S*2rr)inrqcWhrq-3\rp]pRrosFDro!e2 +rn7:urltGarkSNFrjMg/rhoagrg3VHrf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTL +mm?)#JO"cOJO"cOhE^Nrpd>$Lr^QlWr_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07g +riZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrq$-]rqQKgrql]nrr0h8huE]Trr)inrqcWhrq-3\rp]pR +rosFDro!e2rn7:urltGarkSNFrjMg/rhoagrg3VHrf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yjr_3;` +r^ZrWr^HTLmm=lVJO"cOJO"cO!'p!>pd>$Lr^QlWr_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30 +rf[8Irh07griZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrq$-]rqQKgrql]nrr1sXj8],Xrr)inrqcWh +rq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdOimrc8!UrbDFBra>_2r`B)! +r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^U +rd+Qmrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr20^rr2oq +rql]krqQKbrpp'Wrp9XJroF(:rnRM+rmC_irlP/Trk&0;riZ6urh07WrfI2>!KsPo=8lM) +@/a[8CAr,MErLCaIf=ruN;et=Qi_8rbDFMrc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjW +rq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQroaCDj8e9?i;VO2g&BCuc2Pia_#CtF[Jm?.VuE@g +Qi<-HN;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hB%5_21O5_22;5jq&76iKOR +7fGpW9)_N`:]=5j<;otu?2e72@f^=Z!,DLNrc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ +ro!e:roj@JrpTjWrq-3brqZQjrr)iqR/d0brr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNF +rjDa.rhoagrg3VHrf$i.rdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;Rjk$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rk&0FrlP/a +rmC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1jUrr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rmC_i +rlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=[?r'Gs" +L-U;TJO$k5mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VWrhoaurjDa; +rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqjo<$orr2oqrql]krqQKbrpp'Wrp9XJroF(: +rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlU +pd=L:j?S8]JO"cOJO&'Wmm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VW +rhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iq_uJWorr2oqrql]krqQKbrpp'W +rp9XJroF(:rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMe +r_!/[r^QlUpd=L:_E`Z;JO"cOJNs3#mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiu +rf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oqrql]k +rqQKbrpp'Wrp9XJroF(:rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M) +r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFL +rc.p_rdOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iql2Ub^ +rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VH!/pr;N;eG.IK"NkEW0kT +CAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hDO5_21O5_22g5jq&76iKOR7fGpW9)_N`:]=5j<;otu +?2e72A,^6BD>nPSH2`9lK)U`.OoC^HT`1kgY5Yj.]DfSGaT9N*rltGirn7;+ro!e:roj@JrpTjWrq-3b +rqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i. +rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm?;)JO"cOJO"cOfKemlpd>$Lr^QlWr_!/` +r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQ +rpp'\rqQKgrql]nrr20^rr2oqrql]krqQKbrpp'Wrp9XJ!T`;AjSn*:h#?"+dJhDiao9*T]Df5;Y5Y?u +T`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/aX:C2*``rb_XSrd"Klrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_u +rnRM2roF(Brp9XQrpp'\rqQKgrql]nrr/;brr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rmC_irlP/T +rk&0;riZ6urh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:JO&B`JO"cO +JO%sTmm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_rdOiurf$i=rg3VWrhoaurjDa;rkSNT +rltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqi;`fUrr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:u +rltGarkSNFrjDa.rhoagrg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLoKrIB +JO"rTJO"cO]KkpPpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griZ7. +rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr2$Z^&S*2rr)inrqcWhrq-3\rpTjQroj@B +ro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrW +r^HTLmm?)#JO"cOJO"cOhE^Nrpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2H +rh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr0h8huE]Trr)inrqcWhrq-3\ +rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yj +r_3;`r^ZrWr^HTLmm=lVJO"cOJO"cO!'p!>pd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Kl +rdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sXj8],Xrr)in +rqcWhrq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFBra>_2 +r`B)!r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqB +rb_XSrd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr20^ +rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfI2>!KsPo +=8lM)@/a[8CAr)LEW17_If=ruN;et=Qi_8rbDFLrc.p_rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@J +rpTjWrq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQroaCDj8e9?i;VO2g&B@tbl5``_#CtF[Jm<- +VZ*7fQi<-HN;eG.IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hB%5_21O5_22;5jq&7 +6iKOR7fGpW9)_N`:]=5j<;otu?2e72@f^=Z!,DLMrc.p_rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGh +rn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqR/d0brr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:trlkA` +rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;Rjk$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griQ1-rk&0F +rlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1jUrr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+ +rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=[? +r'Gs"L-U;TJO$k5mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_rdOiurf$i=rg3VWrhoat +rjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqjo<$orr2oqrql]krqQKbrpp'Wrp9XJ +roF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[ +r^QlUpd=L:j?S8]JO"cOJO&'Wmm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_rdOiurf$i= +rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iq_uJWorr2oqrql]krqQKb +rpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qp +r_NMer_!/[r^QlUpd=L:_E`Z;JO"cOJNs3#mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_ +rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oq +rql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8 +ra#M)r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8 +rbDFLrc.p_rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iq +l2Ub^rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VH!/pr;N;eG.IK"Nk +EW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hDO5_21O5_22g5jq&76iKOR7fGpW9)_N`:]=5j +<;otu?2e72A,^6BD>nPSH2`9lK)U`.OoC^HT`1kgXo>a-]DfSGaT9N*rltGhrn7;+ro!e:roj@JrpTjW +rq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VH +rf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm?;)JO"cOJO"cOfKemlpd>$Lr^QlW +r_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(B +rp9XQrpp'\rqQKgrql]nrr20^rr2oqrql]krqQKbrpp'Wrp9XJ!T`;AjSn*:h#?"+d/M8gao9*T]Df5; +Xo>3sT`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/aX:C2*``rb_XSrd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/a +rm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr/;brr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:Yg +rlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:JO&B` +JO"cOJO%sTmm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_rdOiurf$i=rg3VWrhoatrjDa; +rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqi;`fUrr)inrqcWhrq-3\rpTjQroj@Bro!e2 +rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTL +oKrIBJO"rTJO"cO]KkpPpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07g +riQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr2$Z^&S*2rr)inrqcWhrq-3\rpTjQ +roj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;` +r^ZrWr^HTLmm?)#JO"cOJO"cOhE^Nrpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-. +rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr0h8huE]Trr)inrqcWh +rq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)! +r_`Yjr_3;`r^ZrWr^HTLmm=lVJO"cOJO"cO!'p!>pd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XS +rd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sXj8],X +rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdOimrc8!UrbDFB +ra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`&kura#M2 +raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]n +rr20^rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfI2>!KsPo=8lM)@/a[8CAr,MErLCaIf=ruN;et=Qi_8rbDFMrc8!ardOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e: +roj@JrpTjWrq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQroaCDj8e9?i;VO2g&B@tbl5``_#CtF +[Jm<-VZ*7fQi<-HN;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hB%5_21O5_22; +5jq&76iKOR7fGpW9)_N`:]=5j<;otu?2e72@f^=Z!,DLNrc8!ardOiurf$i=rg3VWrhoatrjDa;rkSNT +rltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqR/d0brr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:t +rlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;Rj +k$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griQ1- +rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1jUrr2oqrql]krqQKbrpp'Wrp9XJroF(: +rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlU +pd=[?r'Gs"L-U;TJO$k5mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VW +rhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqjo<$orr2oqrql]krqQKbrpp'W +rp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMe +r_!/[r^QlUpd=L:j?S8]JO"cOJO&'Wmm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiu +rf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iq_uJWorr2oqrql]k +rqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M) +r`/qpr_NMer_!/[r^QlUpd=L:_E`Z;JO"cOJNs3#mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFM +rc8!ardOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0> +rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^M +raYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B)) +ra>_8rbDFMrc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQj +rr)iql2Ub^rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VH!/pr;N;eG. +If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hDO5_21O5_22g5jq&76iKOR7fGpW9)_N` +:]=5j<;otu?2e72A,^6BDZ4\UHN&BmK)U`.OoC^HT`1kgY5Yj.]DfSGaT9N*rltGirn7;+ro!e:roj@J +rpTjWrq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoag +rg3VHrf$i.rdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm?;)JO"cOJO"cOfKemlpd>$L +r^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2 +roF(Brp9XQrpp'\rqQKgrql]nrr20^rr2oqrql]krqQKbrpp'Wrp9XJ!T`;AjSn*:h#?"+dJhDiao9*T +]Df5;Y5Y?uT`1;WOoC==K)U5uHN%saDZ4DMA,]m8?2dq)sPo=8lM)@/aX:C2*``rbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rk&0F +rlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr/;brr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+ +rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L: +JO&B`JO"cOJO%sTmm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VWrhoau +rjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqi;`fUrr)inrqcWhrq-3\rpTjQroj@B +ro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrW +r^HTLoKrIBJO"rTJO"cO]KkpPpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2H +rh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr2$Z^&S*2rr)inrqcWhrq-3\ +rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdOimrc8!UrbDFBra>_2r`B)!r_`Yj +r_3;`r^ZrWr^HTLmm?)#JO"cOJO"cOhE^Nrpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qm +rdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr0h8huE]Trr)in +rqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdOimrc8!UrbDFBra>_2 +r`B)!r_`Yjr_3;`r^ZrWr^HTLmm=lVJO"cOJO"cO!'p!>pd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqB +rbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sX +j8],Xrr)inrqcWhrq-3\rp]pRrosFDro!e2rn7:urltGarkSNFrjMg/rhoagrg3VHrf-o0rdXonrc8!U +rbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`/r" +ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07griZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrq$-]rqQKg +rql]nrr20^rr2oqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0sSp=T2V*@K'g:CAr,MErLCaIf>!!NW,+?Qire(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:l9KncJO"cOJO%jQmm?e: +r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ +ro!e;roj@Jrp]pYrq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rp]pRrojIFjT+EAi;VO2g&BCuc2Pia +_#CtF[f3H/VuE@gQi<-HNW+S0J,XcnErKtUCAqcC@/aI2=T2>";>sAj9`@Z`8,c!W7JK7=6@hB%5_21O +5_22;5jq&76iKOR7fGpW9)_N`:]=5j_2r`K/"r_`Yjr_3;`r^ZrWr^HTL +mm;Rjk$Lr^QlWr_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07g +riZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrq$-]rqQKgrql]nrr1jUrr2oqrql]krqQKbrpp'Xrp9XK +roO.;rnRM+rmC_irlP/Trk&0re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[ +r^QlUpd=[?r'Gs"L-U;TJO$k5mm?e:r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o? +rg3VWrhoaurjMg=rkSNTrltGirn7;+ro!e;roj@Jrp]pYrq-3brqZQjrr)iqjo<$orr2oqrql]krqQKb +rpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0re(3"rd+Qarbh^Mrac"9ra#M*r`/qp +r_NMer_!/[r^QlUpd=L:j?S8]JO"cOJO&'Wmm?e:r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!a +rdOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ro!e;roj@Jrp]pYrq-3brqZQjrr)iq_uJWorr2oq +rql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0re(3"rd+Qarbh^Mrac"9 +ra#M*r`/qpr_NMer_!/[r^QlUpd=L:_E`Z;JO"cOJNs3#mm?e:r^HfUr^Zr[r_3;er_`Ypr`K/*raGe: +rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ro!e;roj@Jrp]pYrq-3brqZQjrr)iq +j8\0>rr2oqrql]krqQKbrpp'Xrp9XKroX4re19#rd+Qa +rbh^Mrac":ra,S+r`/qpr_NMer_!/\r^QlUpd=L:qa&.cJO"cOJO"uUr^$NMnj<+=r^HfVr^d#\r_3;e +r_`Ypr`K/+raGe:rbDFMrc8!ardXp#rf-o?rg3VXrhoaurjMg=rkSNUrm(Mkrn7;,ro!e";>sAj9`@Z`8H)*X7JK7=6Mj'"5h\JS5_21O5k.,=617/8 +6iKOR8,c'Y9)_N`:]=5jpd>$Lr^ZrYr_!/`r_NMjr`/r"ra,S4rac"Crbh^Urd+Qnre191rf[8Irh9=hriZ7/ +rk/6GrlY5crmLf!rn[S3roX4Drp9XRrq$-]rqQKgrql]nrr20^rr2oqrql]krqQKbrpp'Xrp9XK!TrME +k5O<K`6K#HN%saDZ4DMAH$$:?N+(+pd>$Lr^ZrYr_!/`r_NMjr`/r"ra,S4rac"C +rbh^Urd+Qnre191rf[8Irh9=hriZ7/rk/6GrlY5crmLf!rn[S3roX4Drp9XRrq$-]rqQKgrql]nrr1jU +rr2oqrql]krqQKbrpp'Xrp9XKroX4re19#rd+Qarbh^M +rac":ra,S+r`/qpr_NMer_!/\r^QlUpd=[?r'L9HJO#/ZJO"cO^Hhcamm?e:r^HfVr^d#\r_3;er_`Yp +r`K/+raGe:rbDFMrc8!ardXp#rf-o?rg3VXrhoaurjMg=rkSNUrm(Mkrn7;,ro!e +re19#rd+Qarbh^Mrac":ra,S+r`/qpr_NMer_!/\r^QlUpd=L:qa'L4JO"cOJO"cOiB[B.mm?e:r^HfV +r^d#\r_3;er_`Ypr`K/+raGe:rbDFMrc8!ardXp#rf-o?rg3VXrhoaurjMg=rkSNUrm(Mkrn7;,ro!e< +roj@Jrp]pYrq-3brqZQjrr)iq_uJWorr2oqrql]krqQKbrpp'Xrp9XKroX4re19#rd+Qarbh^Mrac":ra,S+r`/qpr_NMer_!/\r^QlUpd=L:qa&:gJO"cOJO"iQ +!C9!O617/86iKOR8,c'Y9)_N`:]=5jZ@3k5OTDm/HMRoD\C]q#:*gqu6Qnro=%=s8N#srVl]nqYp9hp&=R^nG_eRl2KiEi;VO2 +g&BG!cMkuc_>_+H[f3H/W;`LiR/W9JNW+V1J,XfoErKtUC]7lD@K'U4=T2>";>sDk:&[fb8H)*X7JK7: +6N09h5_21O5_21X5lO(H6LmJ<6iKOR8,c'Y9E%Zb;#X>kZ@3k5OTDm/HMRoD\F^q#:*gqu6QnrosI^rr2lqqu6Hkq#9scoD\7Y +m/H8Kk5O<$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdV +rd4Wpre191rf[8Jrh9=hriZ7/rk/6H!6P>bb5T]cdf.r!h>Z@3k5OTDm/HMRoD\F^q#:*gqu6QnrosI^ +rr2lqqu6Hkq#9scoD\7Ym/H8Kk5O<sSp +=T2Y+@K'g:C]88OErLFbJGt6$NW,+?R/WfYVuEju[f3r=_>_UVcMl8kg&Bh,i;VmU9jrVlf\s8N#srVl]nqYp9hp&=R^nG_eRklKr/!9X:=rnRM+rmLekrlY5Vrk/6=riZ7!rh9=Yrf[8? +re19#rd4Wbrbh^Nrac":ra,S+r`/qpr_WSgr_*5]r^QlUpd=C7r]u9(JO"cOJO%:Ar^#m;pd>$Lr^ZrY +r_*5br_WSkr`/r"ra,S4raZ%FCB//LDuOeVHiAQpK`6u1P5^jJU&LthY5Ym/]`,bHb5T]cdf.r!h>Z@3 +k5OTDm/HMRoD\F^q#:*gqu6Qnrg<`brr2lqqu6Hkq#9scoD\7Ym/H8Kk5O<sSp=T2Y+@K'g:C]88OErLFbJGt6$NW,+?R/WfYVuEju[f3r=_>_UV +cMl8kg&Bh,i;VmU9jrVlfSs8N#srVl]nqYp9hp&=R^nG_eRl2KiEi;VO2g&BG! +cMkuc_>_+H[f3H/W;`LiR/W9JNW+V1J,XfoErKtUC]7lD@K'U4=T2>";>sDk:&[fb8H)*X7JK7B6MWtI +6%M:[5_21O5f,ec60pr56iKOR8,c'Y9E%Zb;#X>kZ@3k5OTDm/HMRoD\F^q#:*gqu6QnroO0ns8N#srVl]nqYp9hp&=R^nG_eR +l2KiEi;VO2g&BG!cMkuc_>_+H[f3H/W;`LiR/W9JNW+V1J,XfoErKtUC]7lD@K'U4=T2>";>sDk:&[fb +8H)*X7JK7:6N0:95_21O5_21O5ib3060pr56iKOR8,c'Y9E%Zb;#X>kZ@3k5OTDm/HMRoD\F^q#:*gqu6Qnrkncns8N#srVl]n +qYp9hp&=R^nG_eRl2KiEi;VO2g&BG!cMkuc_>_+H[f3H/W;`LiR/W9JNW+V1J,XfoErKtUC]7lD@K'U4 +=T2>";>sDk:&[fb8H)*X7JK7:6N09l5_21O5_21T5lO%M6:1*,pd>$Lr^ZrYr_*5br_WSkr`/r"ra,S4 +rac"DrbqdVrd4Wpre191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]n +rr1sXj8],Xrr)inrqcWirq69^rp]pSrosFFro!e3rn@A"rm(MdrkeZJrjVm1ri#gjrgNhNrf6u2rdXoo +rcA'WrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5b +r_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1rk8K`6K#HiA*cDuOPOAH$$:?N+(+qa[bKKn2 +rmLf"rn[S3roa:GrpB^Srq$-^rqZQirql]nrr20^rr2oqrql]krqZQdrq$-YrpB^Lroa:=rn[S-rmLek +rlb;Xrk8";Z9Ml:&[fb +8H)-Y7ef@;6N09*5_21O5_22A5lO(96MNqI7fGpW8H)9]:&[ug;Z9_r=T2Y+@K'dMrhBCkric=1rk8$Mr^ZrYr_*5br_WSl +r`9##ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1rk8$M +r^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1rk8U'doD\7YmJcALkPjE= +h>Z.-df.PkbPoBX^&GM?YPtO#U]-_]Pl?^BK`6N$I/\6eE;j\QAH$$:?N+(+Z@3 +kPjcGmJcVSoD\F^q>U9jr;QZorosI^rr2lqr;QQlq>U'doD\7YmJc>NkN;j.ro!e3rn@A"rm(MdrkeZJ +rjVm1ri,mlrgNhNrf6u2rdauqrcJ-YrbVREraGe4r`K/#r_remr_EGdr^d#Yr^QlTqa9^:r]u9(JO"cO +JO%:Ar^#m;r^6QNr^QlWr^d#^r_Z@3kPjcGmJcVSoD\F^q>U9jr;QZoro!hUrr2lqr;QQl +q>U'doD\7YmJcALkPjE=h>Z.-df.PkbPoBX^&GM?YPtO#U]-_]Pl?^BK`6N$I/\6eE;j\QAH$$:?N+(+ +U'doD\7YmJcALkPjE=h>Z.-df.PkbPoBX^&GM?YPtO#U]-_]Pl?^BK`6N$ +I/\6eE;j\QAH$$:?N+(+U'doD\7YmJcALkPjE=h>Z.-df.PkbPoBX^&GM? +YPtO#U]-_]Pl?^BK`6N$I/\6eE;j\QAH$$:?N+(+rr2oqrquclrqZQdrq$-YrpKdNroa:> +rndY.rmUkmrlb;Xrk8rp'LNrp]pYrq69drql]mrr)iql2Ub^rr)iorqcWi +rq69^rp]pTrp'LGro*k5rn@A#rm1SerkeZJrji$4ri5smrgNhO!07/AO8an5Jc:&rFT-7YD>n,GA,]j7 +>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6%M;T5_21O5_22m5lO(96N0@L7/f[T8,c*Z9`@fd;#XGnrp'LNrp]pYrq69d +rql]mrr)iql2Ub^rr)iorqcWirq69^rp]pTrp'LGro*k5rn@A#rm1SerkeZJrji$4ri5smrgNhOrf@&5 +rdk&rrcJ-Yrb_XGraYq7r`];&r`&knr_EGdr^m)[r^QlTqa9^:r^$$=JO"cOJO"cOhE_'+lpC\=qaCEQ +r^ZrZr_3;dr_WSnr`9#%ra5Y6ral(Grc.pZrd=]qreCE5rfmDNrhKImrilC4rkABKrlb;ermUl#rn[S4 +roa:GrpKdTrq$-^rqZQjrqucorr20^rr2oqrquclrqZQdrq$-YrpKdN!U&VGkPjH>hYu7.e,I\mbPoBX +^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_RAc?3=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N09*5_21O +5_22A5lO(96N0@L7/f[T8,c*Z9`@fd;#XGnrp'LNrp]pYrq69drql]mrr)iqR/d0brr)iorqcWirq69^rp]pTrp'LG +ro*k5rn@A#rm1SerkeZJrji$4ri5smrgNhOrf@&5rdk&rrcJ-Yrb_XGraYq7r`];&r`&knr_EGdr^m)[ +r^QlTqa9^:r]u*#m6H4fJO"cOiB[B.lpC\=qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y6ral(Grc.pZrd=]q +reCE5rfmDNrhKImrilC4rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQjrqucorr1jUrr2oqrqucl +rqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8rp'LNrp]pYrq69drql]m +rr)iqjo<$orr2oqrquclrqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8 +rp'LNrp]pYrq69drql]mrr)iq_uJWorr2oqrquclrqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8ZC4kPjcGmf)_ToD\F^q>U9jr;QZoro=%:s8N#sr;QQlq>U*eoD\7Ymf)POkl0T@ +hYu:/eGdhobl5NZ^](eCYl:[%V#Hn`Q2ZjDL]2r*If=KhEW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X +7/K@<6N09h5_21O5_21X5lO(H6LmJB6i0:N7fGpW8cDE_:&[ug<;p#!>5hn.A,^*>D>nPSFoHjhK)UQ) +O8bFDSGo>`WrB7%\c0>B_u@mZd/MPog]$+0ir80@lMg5NnG`(ZpAXmequ6NjroX7[rr2ipqYp +rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$Brke`[!R/ded/MPog]$+0ir80@lMg5NnG`(ZpAXmequ6Nj +roX7[rr2ipqYpn/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=61@-j5_21O5_22W5lO(96N0@L7/f[T8,c*Z9`@cc +;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6Q2[U9jr;6KUs8N#sr;QQlq>U*eoD\7Ymf)MQki`$1ro3q6rnIG%rm:Ygrkn`Mrji$4ri5snrg`tQ +rf@&6re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r]u9(JO"cOJO%:Ar^#m;r^6QN +r^QlWr^m)_r_!GuZRD>nPSFoHjhK)UQ)O8bFDSGo>`WrB7%\c0>B_u@mZd/MPo +g]$+0ir80@lMg5NnG`(ZpAXmequ6Njrg!N_rr2ipqYpn/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6%M;g5_21O +5_22Z5lO(96N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6Q2[U9jr;6KLs8N#sr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/ +eGdhobl5NZ^](eCYl:[%V#Hn`Q2ZjDL]2r*If=KhEW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@D +6MWtI6%M:[5_21O5f,ec60pr;6i0:N7fGpW8cDE_:&[ug<;p#!>5hn.A,^*>D>nPSFoHjhK)UQ)O8bFD +SGo>`WrB7%\c0>B_u@mZd/MPog]$+0ir80@lMg5NnG`(ZpAXmequ6NjroO0ks8N#sr;QQlq>U*eoD\7Y +mf)POkl0T@hYu:/eGdhobl5NZ^](eCYl:[%V#Hn`Q2ZjDL]2r*If=KhEW0hSB)Z9=?iF7.=8l1u;#X5h +9`@W_8H)*X7/K@<6N0:95_21O5_21O5ib3060pr;6i0:N7fGpW8cDE_:&[ug<;p#!>5hn.A,^*>D>nPS +FoHjhK)UQ)O8bFDSGo>`WrB7%\c0>B_u@mZd/MPog]$+0ir80@lMg5NnG`(ZpAXmequ6Njrkncks8N#s +r;QQlq>U*eoD\7Ymf)POkl0T@hYu:/eGdhobl5NZ^](eCYl:[%V#Hn`Q2ZjDL]2r*If=KhEW0hSB)Z9= +?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N09l5_21O5_21T5lO%M6:1*,r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$Brkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??e +rql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjProj@@rnm_1rm^qorltG\rkJHEriuI(rh]Ubrg*PFre^W, +rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WNlpCS8a$>2@JO"cONBmJ/pd4Orbh^Urc\9ire(3,rfI,Grgj%bri?%'rk&0Frl"f\rmC_prnRM1ro3q@ +rp0RPrpg![rq??frql]mqu5aXrr2oprql]krq??`rpg!Vrp0RIro3q7rnRM&rm:Yhrl"fNrk&07riH*q +rgj%S!0@5COT(+9KDp?!G5cO]DZ48IA,]j7>Q._'!!M>iV9QidOpZ2VB7_#D7P +blQ)6rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu5aXrr2oprql]krq??`rpg!Vrp0RIro3q7rnRM& +rm:Yhrl"fNrk&07riH*qrgj%SrfI,9re(3!rc\9]rbh^IraYq7r`fA'r`/qor_EGdr^m)[r^QlTqa9^: +qa'g=JO"cOJO"cOiB[B.ksGA:qaCEQr^ZrZr_3;dr_WSor`K/(ra5Y7rau.Irc8!]rdOj!re^W9rg3VT +rh]UpriuI7rkSNOrltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWkrquZmk5YG[rqucmrqcWfrq-3[rpTjP +!U/_Ikl0T@hu;F1eGdhoc2PZ\^](kEZ2Uj(V>d%bQN!!FM>i/,If=NiErKtUB)Z<>?iF:/=8l5!;#X5h +9`@W_8H)*X7/K@<6Mj'*5_21O5_22D5lO(66N0@L7/f[T8,c*Z9`@fd;#XJo=T2P(?iFR7AcZde!,hdV +rc\9ire(3,rfI,Grgj%bri?%'rk&0Frl"f\rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu2l\rr2op +rql]krq??`rpg!Vrp0RIro3q7rnRM&rm:Yhrl"fNrk&07riH*qrgj%SrfI,9re(3!rc\9]rbh^IraYq7 +r`fA'r`/qor_EGdr^m)[r^QlTqa9^:qa#cun3DOiJO"cOj?W]1ksGA:qaCEQr^ZrZr_3;dr_WSor`K/( +ra5Y7rau.Irc8!]rdOj!re^W9rg3VTrh]UpriuI7rkSNOrltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWk +rquZmh>dKRrqucmrqcWfrq-3[rpTjProj@@rnm_1rm^qorltG\rkJHEriuI(rh]Ubrg*PFre^W,rdOii +rc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WNoKr@?qa#cuO$J7]JO%1>r^#d8r^6QNr^QlWr^m)_ +r_EGhr`/r"r`fA/raYq>rbh^Urc\9ire(3,rfI,Grgj%bri?%'rk&0Frl"f\rmC_prnRM1ro3q@rp0RP +rpg![rq??frql]mqu5^W])Vd/rqucmrqcWfrq-3[rpTjProj@@rnm_1rm^qorltG\rkJHEriuI(rh]Ub +rg*PFre^W,rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WNlpCS8m6H4fJO"cOJO&B`r^#d8 +r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^Urc\9ire(3,rfI,Grgj%bri?%'rk&0Frl"f\rmC_p +rnRM1ro3q@rp0RPrpg![rq??frql]mqu4M5h#IBQrqucmrqcWfrq-3[rpTjProj@@rnm_1rm^qorltG\ +rkJHEriuI(rh]Ubrg*PFre^W,rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WNlpCS8brbh^Urc\9ire(3,rfI,Grgj%bri?%' +rk&0Frl"f\rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjProj@@ +rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_r^d#X +r^HfSpd=C7a$>2@JO"cONBm/'og8OCr^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdWrce?kre19- +rfR2Hrgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5aXrr2oprql]krq??` +rpg!Vrp0RIro3q7rnRM'rmLekrl+lQrk/69riH*rrgj%T!0I;EOoC4:K`6K#GQ)[_DuOGLAH$!9>lIk) +sSp=T2S)@/a^9 +B`;rLF8gC_J,Y-#M>iY:Qi_9rb2:LrcA'_rdXp#re^W:rg3VTrhf[srj)O9rkSNPrm(Mjrmh#'rnm_7roj@IrpTjV +rq-3`rqcWkrquZmk5YG[rqucmrqcWfrq-3[rpTjP!U/_Ikl0T@hu;F1ec+"rcMkf^_>_+HZMps)VZ*.c +Qi<-HM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6gR-r5_21O5_22D5j:W46iKLQ +7K,dU8,c*Z9`@fd;>sSp=T2S)@/a^9BE<$i!,qjXrce?kre19-rfR2Hrgj%criQ1*rk/6Grl+l^rmC_q +rnRM1ro3q@rp0RPrpg![rq??frql]mqu2l\rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM'rmLekrl+lQ +rk/69riH*rrgj%TrfR2:re19#rce?_rbqdLrac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKlp?7gn3DOi +JO"cOj?Vrrqa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb2:LrcA'_rdXp#re^W:rg3VTrhf[srj)O9 +rkSNPrm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmh>dKRrqucmrqcWfrq-3[rpTjProj@@rnm_1 +rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_r^d#Xr^HfS +pd=mEo0S!nO$J7]JO%1>ksG87r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdWrce?kre19-rfR2H +rgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5^W])Vd/rqucmrqcWfrq-3[ +rpTjProj@@rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yj +r_3;_r^d#Xr^HfSpd=C7m6H4fJO"cOJO&B`ksG87r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdW +rce?kre19-rfR2Hrgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu4M5h#IBQ +rqucmrqcWfrq-3[rpTjProj@@rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:A +ra>_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=C7bLrh'1griZ7,rk8!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@K'j;C&W&MFT-RbJ,Y0$MuJq>RJriXW;`t!Zi7Z;_Z%OT +c2l59rmLesrn[S3ro="Brp9XQrpp']rqHEgrql]mqu5aXrr2oprql]krqHEbrpp'Wrp0RJro="9rn[S) +rmLekrl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau.rgEbX +ri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWkrquZmk5YG[rqucmrqcWgrq69]rpTjP +!U8hKl2K`Bi;VR3f)F+scMki__>_.IZi7-,W;`FgRJrELMuJG0J,X`mF8g+WC&V`D@K'O2=oMJ$;Z9Jk +:&[ca8H)-Y7K,^M6fULr5_21O5_22M5i>!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@K'j;B`W-j!,qjY +rd"Kmre:?0rfd>Lrh'1griZ7,rk8rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWk +rquZmh>dKRrqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm(M_rk\TIrj2U,ri#ggrgEbLrepc0rdXom +rcA'Wrb;@DraGe2r`T5$r_i_kr_Lrh'1griZ7,rk8Lrh'1griZ7,rk8Lrh'1griZ7, +rk8#armUktrndY5roF(Drp9XQrq$-^rqHEgrql]mqu5aXrr2oprql]k +rqHEcrq$-Xrp9XLroF(;rndY*rmLelrl>#UrkAB=ric=#rh07Z!0dMKPl?X@L]2l(HN&'dE;jYPB)Z6< +?2e"+=8l+s;#X5h9)_E]8H)*X7K,^P6fULa5it=_5_21O5QF(-6N0@O7/fXS7fGsX8cD?]:B")h;Z9bs +>5hh,@K'm#UrkAB=ric=#rh07ZrfmD@ +reLK(rd+Qdrc%jPrau.5hh,@K'm#armUktrndY5roF(Drp9XQrq$-^rqHEgrql]mqu2l\rr2oprql]krqHEcrq$-Xrp9XL +roF(;rndY*rmLelrl>#UrkAB=ric=#rh07ZrfmD@reLK(rd+Qdrc%jPrau.dKRrqucm +rqcWgrq??_rpTjQrp'LDro*k5rmq(srm1Sarkn`Lrj;[.ri,mirgNhNrf$i3rdk&prcS3ZrbMLFraGe3 +r`T5%r_i_lr_EGbr^m)[r^QlUr^?WNqEjI6JO#SfJO"cOc9U;Sr^6ZQr^HfUr^d#[r_!/br_WSlr`B)& +ra#M3rau.Frc%jZrd+QpreCE2rfmDNrh07iric=.rkABKrl>#armUktrndY5roF(Drp9XQrq$-^rqHEg +rql]mqu5^W])Vd/rqucmrqcWgrq??_rpTjQrp'LDro*k5rmq(srm1Sarkn`Lrj;[.ri,mirgNhNrf$i3 +rdk&prcS3ZrbMLFraGe3r`T5%r_i_lr_EGbr^m)[r^QlUr^?WNj$NH)JO"cOJO"cOn3Gnur^6ZQr^HfU +r^d#[r_!/br_WSlr`B)&ra#M3rau.Frc%jZrd+QpreCE2rfmDNrh07iric=.rkABKrl>#armUktrndY5 +roF(Drp9XQrq$-^rqHEgrql]mqu4M5h#IBQrqucmrqcWgrq??_rpTjQrp'LDro*k5rmq(srm1Sarkn`L +rj;[.ri,mirgNhNrf$i3rdk&prcS3ZrbMLFraGe3r`T5%r_i_lr_EGbr^m)[r^QlUr^?WNj$M6\JO"cO +JO#A`n3ZY3r^6ZQr^HfUr^d#[r_!/br_WSlr`B)&ra#M3rau.Frc%jZrd+QpreCE2rfmDNrh07iric=. +rkABKrl>#armUktrndY5roF(Drp9XQrq$-^rqHEgrql]mqu5XUi;`fUrr)iorqcWgrq??`rp]pSrp'LE +ro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\ +r^QlUr^?WNj$M*XJO"cOJO#MdlpCA3r^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4Wq +reLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu5aXrr2oqrqucl +rqHEcrq-3ZrpB^MroO.=rnm_,rm^qnrlP/XrkJH@rilC%rh07[!0mSMQ2ZdBL]2l(HiA3fEW0bQB)Z9= +?N+1.=T24t;#X8i9E%Q_8H)*X7K,^P6fULa5it=_5_21O5QF(-6N0@O7/fXS7fGsX8cDB^:]=5j;Z9et +>5hk-@fC$>C]8>QG5cjfJc:H(NW,4BS,T)[WrB4$[f4&@`;[jYcN2ArbMLQrc\9frdk'(rf-oBrgWn[ri5t$rjMg@rl"fXrm1Smrn%/, +ro3q=rp'LMrp]pZrq69brqcWkrr)`nk5YG[rr)iorqcWgrq??`rp]pS!UAqMlMfoEir7j7fDa;!ci2&c +`;[ON[f3N1WrA[jS,S]PNW+_4Jc:#qG5cL\C]7rF@fB^5>Q.b(;Z9Ml:]=#d9)_B\7fGjU7/K@36BXTb +5_21O5h&'W6N0@O7/fXS7fGsX8cDB^:]=5j;Z9et>5hk-@fC$>CB8Ep!-/!]rd4WqreLK4rg!JPrh07j +ric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu2l\rr2oqrquclrqHEcrq-3ZrpB^M +roO.=rnm_,rm^qnrlP/XrkJH@rilC%rh07[rg!JBreLK(rd4Wfrc.pQrau.=ra,S.r`K.tr_WSir_*5_ +r^d#Xr^HfSqa9C1JO'#rJO"cOJO&Tfi'RE1r^?`Sr^QlXr^m)^r_NMjr_i_tr`];-raPk>rbMLQrc\9f +rdk'(rf-oBrgWn[ri5t$rjMg@rl"fXrm1Smrn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nh>dKRrr)io +rqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLFraPk5 +r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNqEjI6JO#SfJO"cOc9U;Sr^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/' +ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEg +rql]nqu5^W])Vd/rr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4 +rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$NH)JO"cOJO"cOn3Gnur^6ZQr^HfU +r^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7 +roO.ErpB^Srq-3_rqHEgrql]nqu4M5h#IBQrr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fN +rjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$M6\JO"cO +JO#A`n3ZY3r^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0 +rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu5XUi;`fUrr)iorqcWgrq??_rp]pSrp0RF +ro3q7rn7;$rm:Yerl"fNrjVm4riQ0orgj%Trf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_NMer_!/] +r^QlUr^?NKk!IE[JO"cOJO#MdlpCS9pd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]t +re^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5aXrr2oqrqucl +rqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5YrkJHArj)O*rhBC_!1*_QQi<'FM>i/,I/\?hErKqTB`;QA +?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6fp^d5it=_5_21O5QF(36MNqI7/fXS7fH!Y9E%Wa:]=8k<;p#! +>Q/"/AH$nSTGQ*!hKDp`,O8bLFSc5A_Xo>X*\,O/A`;[mZciMM?rmh#$rnm_7roO.FrpB^Srq$-^ +rqHEgrql]nqu5aXrr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5YrkJHArj)O*rhBC_rg3VF +re^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Yr^HfSpd=11r'5fuJO"cOJO&Kck!Ji1r^?`S +r^QlYr_*5ar_NMkr`&l!r`fA/rac"Brb_XTrce?hre(3,rf@&Frgj%_riQ1*rjVmArl"fYrm:Yprn7;. +ro3q=rp0RNrp]pYrq69brqcWkrr)`nk5YG[rr)iorqcWgrq??_rp]pS!UK%Oli-#Fir7j7g&BP$d/M2e +`;[ON\,N]4Xo>'oSc4uTO8b"8KDp8tGQ)X^D>n5JAH#s8>Q.b(<;obo:]=&e9)_E]7fGjU7/0.36BXTb +5_21O5h&']6MNqI7/fXS7fH!Y9E%Wa:]=8k<;p#!>Q/"/AH$dKRrr)io +rqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl"fNrjVm4riQ0orgj%Trf@&8re(2trce?^rb_XJrac"8 +r`fA(r`&kor_NMer_!/]r^QlUr^?NKrBfd9JO#SfJO"cOc9UMYpd>$Kr^HfUr^m)^r_3;er_i_pr`K/( +ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEg +rql]nqu5^W])Vd/rr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl"fNrjVm4riQ0orgj%Trf@&8 +re(2trce?^rb_XJrac"8r`fA(r`&kor_NMer_!/]r^QlUr^?NKk!Jc,JO"cOJO"cOn3H,&pd>$Kr^HfU +r^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7 +roO.FrpB^Srq$-^rqHEgrql]nqu4M5h#IBQrr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl"fN +rjVm4riQ0orgj%Trf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_NMer_!/]r^QlUr^?NKk!IQ_JO"cO +JO#A`n3Zk9pd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4 +rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5XUi;`fUrr)iorqcWhrq??`rp]pTrp9XH +ro="8rnIG'rmC_grl+lPrji$7riZ6qrgs+VrfI,:re19"rd"Karbh^Mral(:r`oG*r`&kpr_NMfr_!/] +r^QlUr^?NKk!Ji/fg(*RJO"cOT0W0;lpCS9pd>$Kr^HfUr^m)^r__:rb;@LrcA'` +rdOj"reg]:rg<\VrhKIqrj2U7rkSNQrlb;grmq)'rnm_8roX4HrpKdTrq-3`rqQKhrql]nqu5aXrr2oq +rquclrqQKdrq-3ZrpKdProX4?rnm_0rmq(rrlb;[rkSNDrj2U,rhKIa!13eSR/W3HMZ/;.If=WlF8g(V +CAqfD@/aF1=oMD";Z9Jk:&[ca8cD3Y7K,^M6fp`16%M;i5_21O5`%c$60:N/6iKLQ7K,dU8cDB^:&[rf +;Z9Yp=oM\*@/aa:C&W#LF8gF`If>$"MZ/_:R/W]VU].FqZi7N7_#D@Qb5fojdF%sErnIG0ro="?rp9XP +rp]pZrq??drqcWkrr)`nk5YG[rr)iorqcWhrq??`rp]pTrp9XHro="8rnIG'rmC_grl+lPrji$7riZ6q +rgs+VrfI,:re19"rd"Karbh^Mral(:r`oG*r`&kpr_NMfr_!/]r^QlUr^?NKk!Ju3rBZ!"Kg:2SJO&fl +pd+%/pd>$Kr^HfUr^m)^r__:rb;@LrcA'`rdOj"reg]:rg<\VrhKIqrj2U7rkSNQ +rlb;grmq)'rnm_8roX4HrpKdTrq-3`rqQKhrql]nqu5aXrr2oqrquclrqQKdrq-3ZrpBgRli?DOk5OE? +hu;C0f)F(rbPoK[_#CnDZi7-,U]-kaR/W3HMZ/;.If=WlF8g(VCAqfD@/aF1=oMD";Z9Jk:&[ca8cD3Y +7K,^M6fp`16(:,j5_21O5i"^#60:N/6iKLQ7K,dU8cDB^:&[rf;Z9Yp=oM\*@/aa:C&VuNF)q>&rcnEk +re19.rfI,Hrgs+ariZ7,rji$Drl4r\rmC_rrnIG0ro="?rp9XPrp]pZrq??drqcWkrr)`nQ2gj_rr)io +rqcWhrq??`rp]pTrp9XHro="8rnIG'rmC_grl+lPrji$7riZ6qrgs+VrfI,:re19"rd"Karbh^Mral(: +r`oG*r`&kpr_NMfr_!/]r^QlUr^?NKk!Ji/Jj=lPJO"cOp-AC=k!Ji1r^?`Sr^QlYr_*5br_NMkr`&l" +r`oG1ral(Crbh^VrcnEkre19.rfI,Hrgs+ariZ7,rji$Drl4r\rmC_rrnIG0ro="?rp9XPrp]pZrq??d +rqcWkrr)`nh>dKRrr)iorqcWhrq??`rp]pTrp9XHro="8rnIG'rmC_grl+lPrji$7riZ6qrgs+VrfI,: +re19"rd"Karbh^Mral(:r`oG*r`&kpr_NMfr_!/]r^QlUr^?NKrBfd9pd'HrTg4/oJO%gPpd+%/pd>$K +r^HfUr^m)^r__:rb;@LrcA'`rdOj"reg]:rg<\VrhKIqrj2U7rkSNQrlb;grmq)' +rnm_8roX4HrpKdTrq-3`rqQKhrql]nqu5^W])Vd/rr)iorqcWhrq??`rp]pTrp9XHro="8rnIG'rmC_g +rl+lPrji$7riZ6qrgs+VrfI,:re19"rd"Karbh^Mral(:r`oG*r`&kpr_NMfr_!/]r^QlUr^?NKk!Ji/ +!C/o$5_21O5_22r5kmY-6MNqI7/fXS7fH!Y9E%Zb:]=8k<;p&">lJ.1Ac?ECDZ4_VGlE0kK`6l.OT(XH +T)PMaY5Yd,\c0DD`r=0\dJh_rg]$+0j8S3?m/HGPnG`(ZpAXjdqYpBkrVQT3s4mYRrr2lqr;QQlq#:!d +o`"@Zmf)SPk5OE?hu;C0f)F(rbPoK[_#CnDZi7-,U]-kaR/W3HMZ/;.If=WlF8g(VCAqfD@/aF1=oMD" +;Z9Jk:&[ca8cD3Y7K,^M6fp`16/=eW5_21O5at%661@586MNqI7/fXS7fH!Y9E%Zb:]=8k<;p&">lJ.1 +Ac?ECDZ4_VGlE0kK`6l.OT(XHT)PMaY5Yd,\c0DD`r=0\dJh_rg]$+0j8S3?m/HGPnG`(ZpAXjdqYpBk +rVQTSs5!_SrVl`oqu6BipAXaanc&"Vm/H2IjSn*:g]#e'df.Jia8WpS])K,:YPtBtTDk;YOT(1;LAl`& +HN&$cE;jYPBDu<5hh,@/agd[t[/RZ9_>_IRbl6&ifDaP(i;Vg:kPjiI +mf)bUp&=^bq#:0ir;QZNs8Murr;QTmq#:!dp&=L\n,D\QkPjQAi;VL1f)F+sbl5Z^_>_%F[JmB/V>d(e +RK8kGrfI,;reCE&rd+Qcrc%jPrb)45hh,@/agd[t +[/RZ9_>_IRbl6&ifDaP(i;Vg:kPjiImf)bUp&=^bq#:0ir;QZNs8Murr;QTmq#:!dp&=L\mfDeA!:9^J +roF(:rnIG'rmLeirl>#Srjr*:ric5hh,@/agd[t[/RZ9_>_IRbl6&ifDaP(i;Vg:kPjiImf)bUp&=^b +q#:0ir;QZPs0r%-rVl`oqu6BipAXaanc&"Vm/H2IjSn*:g]#e'df.Jia8WpS])K,:YPtBtTDk;YOT(1; +LAl`&HN&$cE;jYPBDu<:JO"cOJO"cOq*$Lr^QlW +r^m)^r__#Srjr*: +ric$Lr^QlWr^m)^r__c=2rr)iorql]jrqQKdrpp'WrpB^KroO.ric="rhBC_rfd>Breg]*rd=]hrc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlT +og@Y(r^#F,JO"cOJO$%sr^#I/r^-KLqaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!* +rf6uArgj%_ri#h"rjMg>rl"fXrm(Mmrn7;,ro*kdKQrqucmrqZQg +rq??^rpTjRroj@Cro*k4rn.5"rm(Mbrl"fLrjMg0ri#gj!1a.]Sc4iPO8b%9JGsrqGQ)R\D#S/J@fBa6 +>lIe'<;obo:]=&e9)_B\8,c!W7.iq*6N09%5kRBn5_21]5lO(*6Mj.I7/f[T8,c'Y9)_N`:]=5j<;oqt +>lJ+0@fC*@D#SDQGQ*!hJGtH*NrG7ASc5A_W;a""[f3u>`;[mXc2c>peC=KNrn[S4roO.CrpB^Srpp'^ +rqHEfrql]mrr([Qrr)iorql]jrqQKdrpp'WrpB^KroO.ric="rhBC_rfd>B +reg]*rd=]hrc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTog@n/qEk0IJO#,YJO"cOq*=pFh*V!+ +qaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrm(Mm +rn7;,ro*kdKQrqucmrqZQgrq??^rpKmTm/ZPQkl0]CiVq[4f`'D" +cMkrb`;[IL[f3K0W;`OjSc4iPO8b%9JGsrqGQ)R\D#S/J@fBa6>lIe'<;obo:]=&e9)_B\8,c!W7.iq* +6N09E5_21O5_22\5lO(*6Mj.I7/f[T8,c'Y9)_N`:]=5j<;oqt>lJ+0@fC*@D#SASGBX%2rd=]qreg]8 +rfd>PrhBCjric=0rk8ric="rhBC_rfd>Breg]*rd=]hrc%jQrb;@@ra5Y0r`9"t +r_`Yjr_3;`r^d#Yr^QlTog@Y(r]u?*JO"cOJO',ur^#@,qa:6Kr^QlWr^d#\r_3;er_`Yor`9#'ra5Y6 +rb;@Jrc%j\rd=]qreg]8rfd>PrhBCjric=0rk8ric="rhBC_rfd>Breg]*rd=]h +rc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTpHnsK6f:<16%M;!5_21O5i"^)6/=m)6i0:N7fGpW +8H)6\9`@ie;>sPoZC4 +jo4KCmJcVSo)A@^p\t!fqu6NmrSRXas8Murr;QTmq>U0gpAXX^n,D_Rkl0]CiVq[4f`'D"cMkrb`;[IL +[f3K0W;`OjSc4iPO8b%9JGsrqGQ)R\D#S/J@fBa6>lIe'<;obo:]=&e9)_B\8,c!W7.iq+63'@O6%M:T +5_21O5QO,8r^#@,qa:6Kr^QlWr^d#\r_3;er_`Yor`9#'ra5Y6rb;@Jrc%j\rd=]qreg]8rfd>PrhBCj +ric=0rk8PrhBCjric=0rk8dBNrquclrqQKdrpp'XrpKdLroO.=rn[S,rmh"orlY5ZrkABArj)O'rhTOcrg!JErepc-rdFckrc.pT +rbDFBra>_2r`B)!r_`Yjr_3;ar^d#Yr^QlTog@Y(qa'4,JO"cOJO$/!r^#@,r^-KLqaCEQr^ZrYr_*5b +r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt--rfI,Erh'1cri5t'rj_sArl+lZrm1Sorn7;,ro3q>roj@L +rp]pXrq??drqcNirr([Qqu-NlrqcWhrq??^rp]pTroj@Cro3q5rn7;$rm1Sdrl+lNrj_s5ri5sn!1s:a +TDk,TOT(1;K)U2tH2_g_DZ4DMA,]m8?2dq)nPSH2`9lK)U]-OT(OETDkYcWrB='\Gj5A`W"$Z +cN)Jre^aZPrn[S5roX4DrpKdTrpp'^rqQKhqu$Hlh>dBNrquclrqQKdrpp'XrpKdLroO.=rn[S,rmh"o +rlY5ZrkABArj)O'rhTOcrg!JErepc-rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;ar^d#Yr^QlTog@n/ +qEk'FJO#5\JO"cOr':6Ig-Y[(qaCEQr^ZrYr_*5br_NMjr`&kura#M2raYqBrb_XSrd"Klrdt--rfI,E +rh'1cri5t'rj_sArl+lZrm1Sorn7;,ro3q>roj@Lrp]pXrq??drqcNirr([Qqu-NlrqcWhrq??^rpTsV +mJu\Skl0]Cir7d5g&BP$ci2)d`W!UN\Gif5WrAgnTDk,TOT(1;K)U2tH2_g_DZ4DMA,]m8?2dq)nMUH$KC8rdOiurepc;rg!JTrhTOnrj)O5rkABNrlY5drmh#$rn[S5roX4DrpKdTrpp'^rqQKhqu$Hl +N;reRrquclrqQKdrpp'XrpKdLroO.=rn[S,rmh"orlY5ZrkABArj)O'rhTOcrg!JErepc-rdFckrc.pT +rbDFBra>_2r`B)!r_`Yjr_3;ar^d#Yr^QlTog@Y(qa$-*JO"cOJNs6$5lO('6Mj.I7/f[T8,c'Y9E%Zb +:]=5j<;otu?2e72A,^6BD>nPSH2`9lK)U]-OT(OETDkYcWrB='\Gj5A`W"$Zci2Jog&Bh,ir8*>kl1#L +nG`"XpAXjdqYU3irRClErVl`oqYp9hpAXX^nG_kTkl0]Cir7d5g&BP$ci2)d`W!UN\Gif5WrAgnTDk,T +OT(1;K)U2tH2_g_DZ4DMA,]m8?2dq)_8rbDFLrc.p_rdOiurepc;rg!JTrhTOnrj)O5rkABNrlY5d +rmh#$rn[S5roX4DrpKdTrpp'^rqQKhqu$HlhuC1cqu-NlrqcWhrq??^rp]pTroj@Cro3q5rn7;$rm1Sd +rl+lNrj_s5ri5snrh'1TrfI,;rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_*5]r^ZrWr^?EHiBdN2 +qa#cuLd6MVJj9<%!C9$*6Mj.I7/f[T8,c'Y9E%Zb:]=5j<;otu?2e72A,^6BD>nPSH2`9lK)U]-OT(OE +TDkYcWrB='\Gj5A`W"$Zci2Jog&Bh,ir8*>kl1#LnG`"XpAXjdqYU3irOr6as82cor;QQlq#:!do)A.X +mf)GLjo49=h>Z+,ec*nob5TBZ^AbYAZMpm'V#I"cQ2ZmEMuJ>-IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj +9`@]a8H)-Y7fGgK6f:<.60:F`5_21O5bp[E6/b0,6Mj.I7/f[T8,c'Y9E%Zb:]=5j<;otu?2e72A,^6B +D>nPSH2`9lK)U]-OT(OETDkYcWrB='\Gj5A`W"$Zci2Jog&Bh,ir8*>kl1#LnG`"XpAXjdqYU3irS@M0 +s82cor;QQlq#:$eoD\:Zn,DSNkPjN@hYu7.f)F%qbPoN\_#CqEZi7$)V>d+dQi<0INrF\1J,XfoErKtU +C]7lD@K'X5=T2>";uTVm:B!rd8cD9[7fGjU7/0.'6K17]5_21O5c?s%6N0=K6iKLQ7K,dU8,c*Z9`@fd +;#XDmU6fr;QZNs82cor;QQlq#:$eoD\:Zn,DSNkPjN@hYu7.f)F%q +bPoN\_#CqEZi7$)V>d+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm:B!rd8cD9[7fGjU7/0.4 +6M*Tq5`S*\5_22u5hA@"6iKLQ7K,dU8,c*Z9`@fd;#XDmdOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QYR +s82cor;QQlq#:$eoD\:Zn,DSNkPjN@hYu7.f)F%qbPoN\_#CqEZi7$)V>d+dQi<0INrF\1J,XfoErKtU +C]7lD@K'X5=T2>";uTVm:B!rd8cD9[7fGjU7/0.'6An*[5_21O5QO,8f0]@%r^?`Sr^QlWr^m)_r_EGh +r_resr`K/,raPk;rbMLOrc8!brdXp"rf6u@rg3VVrh]Uprj2U7rkSNQrlkAgrmq)%rndY7roX4ErpTjV +rq$-`rqZQiqu$HleGoFErquclrqQKerq$-ZrpTjNroa:@rndY.rmq(qrlb;\rkSNErj2U)rh]Udrg3VI +rf6u1rdXoorc8!UrbMLDraGe5r`K/"r_remr_EGdr^m)[r^QlUr^?TM!CK6.6@hD%5_21O5i=oZ6Mj.L +7/fXS7fGpW8cDE_:B")h;uThs=T2\,@fBp;C]88OErLFbJ,Y*"NrG4@QidOpZi7N7_#D@Qbl5ug +f)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QZPs0r%*rVl`oqYp9hp\sd`nc&"Vl2KlFj8Rp7gA]\&d/M5f +`rdOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QZ.s4RGLrVl`oqYp9hp\sd`nc&"V +l2KlFj8Rp7gA]\&d/M5f`rdOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QZNs5!_S +rr2lqr;QQlq#:$eo`"C[n,DYPkl0ZBi;VO2g&B@tbl5``_#CtF[f3H/W;`OjRf8QNO8an5K)U5uFoHC[ +D>n2IA,]j7>5hV&$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdt-(rf@&C +rgNh\ri#h!rjMg=rkSNTrltGh!8.D+g&Be+i;Vg:kl0oIn,DnWo`"Uaq>U6ir;QZorn[VRrr2lqr;QQl +q#:$eo`"C[n,DYPkl0ZBi;VO2g&B@tbl5``_#CtF[f3H/W;`OjRf8QNO8an5K)U5uFoHC[D>n2IA,]j7 +>5hV&dKRrr)iorqcWhrqHEarp^$Xmf;hUli-,IjSn*:h#?"+d/M8gao9*T]Df8< +Y5YC!UAgV\Pl?aCLAlf(If=KhEW0hSBDuE??iF7.=8l5!;#X5h:&[``8H)-Y7fGjU7/0.'6N09N5_21O +5_22e5lO('6MNqI7/fXS7fGpW8H)3[:&[rf;#XJo=T2M'?iFR7BDucIEW1(]IXV9Grdt-(rf@&CrgNh\ +ri#h!rjMg=rkSNTrltGhrn7;+ro!e:roj@IrpTjWrq-3arqZQirqucorr.lVrr2oqrquclrqQKerq-3[ +rpTjProj@Bro!e2rn7:trlkA`rkSNFrjMg/ri#gjrgNhNrf@&5rdt,urcS3[rb_XIraYq7r`];&r`/qo +r_EGer^m)[r^ZrWr^HfSpdW'g-YR%r^?`Sr^QlWr^d#[r_$K +r^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdt-(rf@&CrgNh\ri#h!rjMg=rkSNTrltGh +rn7;+ro!e:roj@IrpTjWrq-3arqZQirqucorr1gT\,ZI,rr)iorqcWhrqHEarpg!Vrp0RIroF(:rnRM+ +rm:YgrlP/Trk&0$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3h +rdt-(rf@&CrgNh\ri#h!rjMg=rkSNTrltGhrn7;+ro!e:roj@IrpTjWrq-3arqZQirqucorr0V2g&M'N +rr)iorqcWhrqHEarpg!Vrp0RIroF(:rnRM+rm:YgrlP/Trk&0$Kr^HfUr^ZrY +r^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdt-(rf@&CrgNh\ri#h!rjMg=rkSNTrltGhrn7;+ro!e: +roj@IrpTjWrq-3arqZQirqucorr1aRh>dKRrr)iorqcWirqQKbrpp'WrpB^LroX4_1r`T5$r_i_lr_EGbr^m)[r^QlUr^?NKg-Yd) +kWj\aJO"cOY!DtPg-Yd+qa:?Nr^HfUr^d#[r_!/br_WSlr`9##r`oG1ral(BrbqdWrce?kre19-rfI,F +rg`t`ri5t%rj_sArkeZXrm1Slrn@A-ro!elIn*lJ.1Ac?BBDuOhWGQ**kK`6i-OT(RFSGo>`WrB7%\Gj5A_Z%aXci2>mg&]p]rn[S3roX4ErpB^R +rpp'\rqQKgrqcWlrr)iqh>dKRrr)iorqcWirqQKbrpp'WrpB^LroX4_1r`T5$r_i_lr_EGbr^m)[r^QlUr^?NKl9b#-r]u*#PX'db +Jj9<%!C9$*6MNqI7/fXS7fGsX8cD?]:B")h;Z9_r=T2S)@/aa:B`;rLF8gC_J,Y-#M>iV9QN!ERV#ICn +Yl;03^Ac"KbPoiedf.u"h>Z@3k5OWEmJcSRo)A:\q#:*gqYpElrVlfPs8N#srVl`oqYp$Kr^HfUr^d#[r_!/br_WSlr`9##r`oG1 +ral(BrbqdWrc\BmIfOutK`6i-OT(RFSGo>`WrB7%\Gj5A_Z%aXci2AlgA]q-i;VmU6ir;QZorf$mVrr2lqr;QQlq>U0go`"F\n,D_Rl2KiEi;VR3gA]P"cMl#d_Z%7J\Gi`3WrAgnSGniR +OT(+9KDpB"GQ)[_DuOGLAH$!9>lIn*iV9QN!ERV#ICnYl;03^Ac"KbPoie +df.u"h>Z@3k5OWEmJcSRo)A:\q#:*gqYpElrVlfGs8N#srVl`oqYpZ.- +df.PkbPoBX^&GP@Yl:[%V#Hn`QN!!FM>i/,J,XZkF8g+WB`;QA@/aF1=oMJ$;Z9Ml:B!lb8cD9[7fGjU +7/]LN6eXm+6%M;*5_21O5it?26/"[#6iKLQ7K,dU8H)3[9)_Tb;#XAllJ.1Ac?BBDuOhWGQ**k +K`6i-OT(RFSGo>`WrB7%\Gj5A_Z%aXci2AlgA]q-i;VmU6ir;QZornmabs8N#s +rVl`oqYpZ.-df.PkbPoBX^&GP@Yl:[%V#Hn`QN!!FM>i/,J,XZkF8g+W +B`;QA@/aF1=oMJ$;Z9Ml:B!lb8cD9[7fGjU7/0.16MEhG6%M:]5_21V5lO(J6Jb'(6iKLQ7K,dU8H)3[ +9)_Tb;#XAllJ.1Ac?BBDuOhWGQ**kK`6i-OT(RFSGo>`WrB7%\Gj5A_Z%aXci2AlgA]q-i;Vm< +l2L)Ln,DnWo`"Xbq>U6ir;QZork8?bs8N#srVl`oqYpZ.-df.PkbPoBX +^&GP@Yl:[%V#Hn`QN!!FM>i/,J,XZkF8g+WB`;QA@/aF1=oMJ$;Z9Ml:B!lb8cD9[7fGjU7/0.'6N0:; +5_21O5_22#5lO((63'@I6iKLQ7K,dU8H)3[9)_Tb;#XAllJ.1Ac?BBDuOhWGQ**kK`6i-OT(RF +SGo>`WrB7%\Gj5A_Z%aXci2AlgA]q-i;VmU6ir;QZorn[V1s8N#prVlZmq>U0g +o`"F\nG_hSl2KlFiVq^5g]#\$d/M8g_u@FM])Jr5X8]!qT)P,VP5^C=L&QW%H2_pbDuOMNB)Z9=?2e"+ +=8l+s;>sAj9`@Z`8cD3V7Iih(6N0:75_21O5_22'5lO(*6Mj.I6iKOO7fH!Y9)_N`:]=5j;Z9bs>5hh, +@fC!=CAr/NFT-RbJGt<&MuJn=R/W]VVZ*[rYl;65^Ac%Lbl5rfe,J,$hYuL5kPjcGmJcVSoD\C]q#:*g +qYpHjrn[VRrqlZnqYphYu:/e,I_nbl5NZ^](hDYl:['V?*Qkrgs+Vrf[8= +re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'Ci'RE/JO'3"JO"cOQpCX:h*Ud%r^H]R +r^m)]r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1Sm!8@P/ +g]$(/iVr$>lMg2MnG`%Yo`"Xbq>U6irVQTMs8N#prVlZmq>U0go`"F\nG_hSl2KlFiVq^5g]#\$d/M8g +_u@FM])Jr5X8]!qT)P,VP5^C=L&QW%H2_pbDuOMNB)Z9=?2e"+=8l+s;>sAj9`@Z`8cD3V7Iih86LdDA +6%M:c5_21P5QF(N5sahYu:/e,I_nbl5NZ^](hDYl:^&VZ*1dR/W9JMuJG0JGsinFT-4XCAqiE@fB[4=oMM% +;Z9Pm:]=&e9)_E]7f,XF6f:<16)m2$5_21O5jUc86/=m#6iKOO7fH!Y9)_N`:]=5j;Z9bs>5hh,@fC!= +CAr/NFT-OdJ:IWMreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1SmrnIG/ro*k>rp'LMrp]pYrq-3brqZQi +rr)`nN;rnVqu-NjrqZQgrq-3\rp]pSrosFFro*k5rnIG$rm:Ygrkn`Mrjr*5ri?$qrgs+Vrf[8=re:?% +rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'Ci'RE/O[+I_JO"oSr^#@,ogA^IqaUQVr_!/` +r_NMjr_i_sr`];,raPk=rbDFNrcJ-brdb!&repc=rg<\Vrhf[rrilC5rkABLrlkAfrmUl$rndY5roa:G +rpB^Srq$-]rqQKgrqcWmqu5+Frr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC& +rhf[drg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRrBp9Gi'RE/JO$G)JO"cO +k!8o3h*Ud%r^H]Rr^m)]r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rjr*C +rkn`Zrm1SmrnIG/ro*k>rp'LMrp]pYrq-3brqZQirr)`nhuC1crr2fnrqcWirqQKbrpp'XrpB^Lroa:> +rndY/rmUknrlkAZrkJHDrilC&rhf[drg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/] +r^QcRnjD\/pHnjFJO#5\JO##Vr^$KLiBm3)r^H]Rr^m)]r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"Kn +reCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1SmrnIG/ro*k>rp'LMrp]pYrq-3brqZQirr)`n^&Qdcrr2fn +rqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC&rhf[drg<\Jrepc0rdaunrcJ-XrbDFE +raPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>%r^#m9JO"cOJO$5#r^#@,!CK6K6iKOO7fH!Y9)_N`:]=5j +;Z9bs>5hh,@fC!=CAr/NFT-RbJGt<&MuJn=R/W]VVZ*[rYl;65^Ac%Lbl5rfe,J,$hYuL5kPjcGmJcVS +oD\C]q#:*gqYpHjrn[V1s8N#prVl]nqYpZ")df.Pk`ri/,I/\?hErKqTB`;QA@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6e"Hp5_21O5_2235h&-n +6i0:K7fGpW8cDB^9`@ie;Z9\q=oM\*@/a^9C&VuKErL:^I/\ctM#NG6Q2[6OT`1qiY5Yd,^&GnJ`r=9_ +df.hsh>Z@3j8S9Ali-APnc&1[pAXmeqYpBkrVQTMs8N#prVl]nqYpZ") +df.Pk`r_9rb;@Krc8!^rd=]treUQ6rg!JO +rh07iriZ7,rk8Z@3j8S9Ali-APnc&1[pAXmeqYpBkrVQTMs8N#prVl]nqYpZ")df.Pk`ri/,I/\?hErKqTB`;QA@/aF1 +=oMG#;Z9Jk9`@Z`8c)$W7fGgH6hlJ.1 +AH$nSTGQ*!hKDp]+NrG=CRf8uZWW'("Zi7Z;_Z%RScMl8kf)FM)i;Vd9kl0oIn,DkVo`"R`q>U6i +qu6Qkrn[VRrqlZnqu6Hkq>U*eoE"LP!:g'Wrp0RIro="9rn[S)rmLekrl4rRrk8<;ric=#rh07[rg!JC +re^W,rd=]hrc8!Trb2:Ara>_1r`T5#r_i_kr_3;`r^luWr^QlTnjCnn[QoC/JO"cOpd!=qogAUEqaUQT +r^m)^r_3;er_i_qr`T5*ra>_9rb;@Krc8!^rd4a!K)gQ'M#NG6Q2[6OT`1qiY5Yd,^&GnJ`r=9_df.hs +h>Z@3j8S9Ali-APnc&1[pAXmeqYpBkrVQSQs8N#prVl]nqYpZ")df.Pk +`ri/,I/\?hErKqTB`;QA@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6e"Gn +5_21O5`n=]6M3_C7/KIQ8,c*Z9E%Wa:]=8klJ.1AH$nSTGQ*!hKDp]+NrG=CRf8uZWW'(" +Zi7Z;_Z%RScMl8kf)FM)i;Vd9kl0oIn,DkVo`"R`q>U6iqu6Qkrm^uIrqlZnqu6Hkq>U*eo`"C[n,DYP +kl0WAi;VR3f)F+scMki__>_.IZi70-WW&RiS,S]PNrFn7KDp8tGQ)X^D>n5JAH$!9>lIn*Z@3j8S9Ali-APnc&1[pAXmeqYpBkrVQTOs0r%- +rqlZnqu6Hkq>U*eo`"C[n,DYPkl0WAi;VR3f)F+scMki__>_.IZi70-WW&RiS,S]PNrFn7KDp8tGQ)X^ +D>n5JAH$!9>lIn*Z@3j8S9Ali-AP +nc&1[pAXmeqYpBkrVQT-s4RGOrqlZnqu6Hkq>U*eo`"C[n,DYPkl0WAi;VR3f)F+scMki__>_.IZi70- +WW&RiS,S]PNrFn7KDp8tGQ)X^D>n5JAH$!9>lIn*Z@3j8S9Ali-APnc&1[pAXmeqYpBkrVQTMs5!_SrqlZnr;QTmqYp3fo`"C[n,DYPl2KcC +iVq^5fDa7uci1ua_u@FM[JmE0X8\jmSc4uTOT(1;L&QQ#H2_pbDuOMNBDu?=?N+1.Q.t.@K'p=C]88OFT-Rb +If>'#MZ/_:Qi#armUku!8[b5hYuL5jSnEC +m/HJQnc&1[pAXpfqu6NmrVQTMs8N#prVl`oqu6HkpAX^`nc&"Vli-/JjSn-;hYu.+e,I\ma8X!U^](Y? +Yl:^&UAg__Qi<*GMuJG0If=WlFT-4XCAqlF@K'U4>Q.\&;uTVm:B!rd9)_B\8,c!Q7/0.@6K1=_5bLAn +5`S,%6K(9+6hj(K7fGpW8H)6\9E%]c;#XGn&?N+C4BDu]GDuOkXH2`9lL&Qu/OT(UGSc5A_X8]@& +[Jmr?_u@^Uci2DmfDaY+iVqp;l2L&Kn,DkVo`"R`qYpBkr;QZlrn[VRrqlZnr;QTmqYp3foE"LP!:g'W +rp0RJroF(;rndY+rmUkmrl>#UrkJH?rilC&rhBC_rg3VGrepc0rdOilrcJ-XrbDFFraGe4r`fA&r_rem +r_EGdr_!/\r^ZrWpdFmEe3^T/JO"cOJO&uqe3`ptpdG*Nr^ZrYr_!/_r_EGhr`&ktr`fA.raGe=rbMLO +rcJ-brdFm%K`Hi+MZ/_:QiQ.\&;uTVm:B!rd9)_B\8,c!Q7/0.!6CgAm5_21_5h&-q6hj(K7fGpW8H)6\ +9E%]c;#XGn&?N+C4BDu]GDuOkXH2`9lL&Qu/OT(UGSc5A_X8]@&[Jmr?_u@^Uci2DmfDaY+iVqp; +l2L&Kn,DkVo`"R`qYpBkr;QZlrm^uIrqlZnr;QTmqYp3fo`"C[n,DYPl2KcCiVq^5fDa7uci1ua_u@FM +[JmE0X8\jmSc4uTOT(1;L&QQ#H2_pbDuOMNBDu?=?N+1.aQ7/0.!6@hD7 +5_21O5k71i6MNqC7/f[T8,c'Y9)_K_:B")h<;oqt>Q.t.@K'p=C]88OFT-RbIf>'#MZ/_:QiQ.t.@K'p= +C]88OFT-RbIf>'#MZ/_:QiQ.t.@K'p=C]88OFT-RbIf>'#MZ/_:QiM#Mr(HiA6gE;j\QB`;K??iF=0=8l5!;Z9Ml:&[fb8cD9[7f,XR +7/0.!6M*No5_21O5e9516MNqI7/fUR7K,dU8,c*Z9E%]c;#XAl<;otu>lJ+0@fC'?D#SDQGQ*!hJGtB( +N;et=Rf8rYV#IOrZMqB5_#D=Pb5Tceec+;%hu;X7jo4TFmf)_ToD\F^p\t$gqu6NmrVlfJs8N#srVl`o +qu6Hkp\sjboD\7YmJcGNjo4<>hu;@/ec*qpb5TBZ_#CkCZN.-/Y-.c"rh'1YrfR2>reUQ(rd4Wgrc%jQ +rb2:?ra5Y0r`B)!r_i_lr_hu;@/ec*qpb5TBZ_#CkC +Zi7-,V#I"cRf8HKNW+b5JGsopGQ)R\D#S,I@fBa6>lIh(OnG`%Yp&=^bqYpBkr;QZorn%2Lrr2lqr;QTmqYp6go`=[U +!;$3ZrpB^NroO.>rnm_/rmh"prlY5ZrkSNCrj2U,rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG( +r`/qqr_WSgr_*5^r^d#XqaLKPpdhu;@/ec*qpb5TBZ_#CkCZi7-,V#I"c +Rf8HKNW+b5JGsopGQ)R\D#S,I@fBa6>lIh(OnG`%Yp&=^bqYpBkr;QZorm(QCrr2lqr;QTmqYp6gp&=R^nG_hSli-#Fj8Rs8 +gA]Y%d/M2e`W![P\Gii6Y5Y6rTDk;YOoC@>M#Mr(HiA6gE;j\QB`;K??iF=0=8l5!;Z9Ml:&[fb8cD9[ +7f>aV77I2DpdreUQ(rd4Wgrc%jQrb2:?ra5Y0r`B)!r_i_lr_5hn.@fBst*e,IVkaSs*V]`,A=Yl:X$U]-nbQ2ZpF +N;eG.If=]nF8g.XD#S#F@fBa6>5hV&Are:?&rdFcgrc8!Urb)4@ra>_1r`T5%r_i_lr_EGcr_!/\pdY$Hqa8Upr'Gs"L-U;TbWs-6r^6HK +r^QcSr^d#[r_*5cr_WSlr`B)%r`oG1rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5d +rm^r#rn[S5roX4DrpB^Srpp'\rq??drqcWkrr)`neGoOIrr)iorqcWhrq??`rpp'WrpB^KroO.=rn[S+ +rm^qnrlY5ZrkABB!4)^4Zi7$)V>d.eR/WlIn*=8l+s;#X5h9E%Q_ +8GG[L7/K?m6C^;l5_22/5fH(h6hj(E7fGsX8cDB^:B")h;Z9bs=oM\*@/a^9BDufJEW1+[IK"fsL&R,3 +P5^jJT`1hfX8]I)\Gj5A`W"$Zci2Gng&Be-iW8&uroX4DrpB^Srpp'\rq??drqcWkrr)`neGoOIrr)io +rqcWhrq??`rpp'WrpB^KroO.=rn[S+rm^qnrlY5ZrkABBrj2U)rh]Uerg<\Krf6u3rdk&srcS3\rbh^J +rac"9r`oG*r`B(sr_WShr_*5_r^cfRpdG!Hq*NFpJO$M+JO#kni^2]mr^6HKpdY6Rr^m)^r_EGhr_i_s +r`T5*ra>_9rb)4Jrc.p[rdFcsre:?3rf[8Jrh07fri?%)rj_sArl+lZrm1Snrn7;,ro3q>roj@Krp]pX +rq-3`rqQKhrql]nqu5+Frr2oqrquclrqQKd!VH!ao`"F\n,D_Rkl0]Cir7d5f`'D"ci2)d`W!UN\c/r7 +X8\spT`1>XPQ$UAL&QZ&IK"BgErKtUBDuH@@/aF1=oMM%;Z9Ml:B!oc9)_BV7efCK6c_U85_21O5`.hG +6N0@I7/07N8H)3[9E%]c;#XAl=8lA%>lJ.1AH$6@DZ4YTFoHggJc:?(NfF+"rf[8Jrh07fri?%)rj_sA +rl+lZrm1Snrn7;,ro3q>roj@Krp]pXrq-3`rqQKhrql]nqu26Jrr2oqrquclrqQKdrq-3\rpTjRroj@C +ro3q5rn.5"rm1Sdrl+lNrji$7ri?$prh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra>_1r`T5%r_i_lr_EGc +r_!/\pdY$Hqa8FkY<[Y(JO#tq`BsPkpdFmHr^d#[r_*5cr_WSlr`B)%r`oG1rac"@rbh^TrcS3grdk'& +rf6u@rg<\Xrhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^Srpp'\rq??drqcWkrr)`nbQ%S@rr)io +rqcWhrq??`rpp'WrpB^KroO.=rn[S+rm^qnrlY5ZrkABBrj2U)rh]Uerg<\Krf6u3rdk&srcS3\rbh^J +rac"9r`oG*r`B(sr_WShr_*5_r^cuWr'pHLqa8FkJO%LGJO"lRr^+[mr^6HKpdY6Rr^m)^r_EGhr_i_s +r`T5*ra>_9rb)4Jrc.p[rdFcsre:?3rf[8Jrh07fri?%)rj_sArl+lZrm1Snrn7;,ro3q>roj@Krp]pX +rq-3`rqQKhrql]nqu5CNZ2ah&rr)iorqcWhrq??`rpp'WrpB^KroO.=rn[S+rm^qnrlY5ZrkABBrj2U) +rh]Uerg<\Krf6u3rdk&srcS3\rbh^Jrac"9r`oG*r`B(sr_WShr_*5_r^cfRpdG!Ho0V"pJO$;%JO$(t +gd:9mr^6HKpdY6Rr^m)^r_EGhr_i_sr`T5*ra>_9rb)4Jrc.p[rdFcsre:?3rf[8Jrh07fri?%)rj_sA +rl+lZrm1Snrn7;,ro3q>roj@Krp]pXrq-3`rqQKhrql]nqu42,e,TFHrr)iorqcWhrq??`rpp'WrpB^K +roO.=rn[S+rm^qnrlY5ZrkABBrj2U)rh]Uerg<\Krf6u3rdk&srcS3\rbh^Jrac"9r`oG*r`B(sr_WSh +r_*5_r^cfRpdG!Hd6dUpJO#)XJO%:A`BsPkq*Y3NpdY6Rr^m)^r_EGhr_i_sr`T5*ra>_9rb)4Jrc.p[ +rdFcsre:?3rf[8Jrh07fri?%)rj_sArl+lZrm1Snrn7;,ro3q>roj@Krp]pXrq-3`rqQKhrql]nqu5=L +fDkjLrr)iorql]jrqHEbrpp'XrpKdMroa:@rnm_/rmq(qrlkA_rkSNFrjDa/ri#gjrgNhOrf@&7re19# +rcnEarbqdNrau.=ra5Y/r`K.ur_i_kr_Q.b(;uT\o:]=)f9)_EZ +8,c!T7K,^G6d\5j5_21O5dir'6M3_C7/fXP7fGpW8cDB^:&[rf;>sMn=T2P(?iFO6B)ZQEDuOhWGlE3l +KDp]+O8bCCRf9&\WW'+#[Jmf;_#DFSbl5ugf)FD&hZ2[;j5^.$rosFMrp]pXrq69brqZQjrqucoqu5+F +rr2oqrqucmrqZQfrq69]rp]pTrosFFro="8rn@A&rm:YgrlG)Srk&0;ric="rhBC\rg!JDreUQ,rdXol +rcJ-XrbDFEraPk6r`fA(r_reor_NMfr_!/]qa^WTqaLKPo0WLFd6`CLZ9Wt+TKqL'm6^J5qaCEPqaUQT +r^m)^r_Q/"/@fC!=CAr/NF8gF`J,Y*" +L]NQt!0@,DrgNh\ri,n#rjDa;rkSNSrlkAgrmq)&rnm_8roX4ErpKdTrpp']rqHEfrql]mrr)`nKE(rM +rr)iorql]jrqHEbrpp'XrpKdMroa:@rnm_/rmq(qrlkA_rkSNFrjDa/ri#gjrgNhOrf@&7re19#rcnEa +rbqdNrau.=ra5Y/r`K.ur_i_kr_U9jr;QZlrnROYs8N#srVl`o +qu6Ejp\sjbo)A.Xmf)JMkPjN@hu;@/f)F%qbl5]__#CtF[JmB/W;`OjRf8TOO8at7K`6K#GlDgaDuOMN +B)Z9=?iF:/=T27u;Z9Jk:&[ca8c)$W7f,XR7.N_C6InJS5cd5%5c-g%6M!P:6i0:N7JfRR8,c*Z9E%Zb +:]=5j;uTnu>Q/"/@fC!=CAr/NF8gF`J,Y*"M#NJ7Pl@-NUAh.kYPts/]DfVFaSsE_d/MVqgA^"/j8S3? +l2L,MnG`"Xp&=^bq>U9jr;QZlrjr-Ys8N#srVl`oqu6Ejp\sjbo)A.Xmf)JMkPjN@hu;@/f)F%qbl5]_ +_#CtF[JmB/W;`OjRf8TOO8at7K`6K#GlDgaDuOMNB)Z9=?iF:/=T27u;Z9Jk:&[ca8c)$W7f,XR7.N_! +6MNlu5`.gX5fc496M3_C6if_F!(HcSr^ZrZr_*5br_NMjr_reur`fA/raPk=rbDFNrcA'`rdXp"reUQ7 +rfmDNrhBCkric=/rk&0FrlG)_rm:Yqrn@A/ro="?rosFMrp]pXrq69brqZQjrqucoqu5=LfDkjLqu-Nl +rqcWhrqHEarpg!Vrp0RJroO.;rnRM+rmUkmrlb;WrkABBrilC&rhf[ergEbMrf-o4rdt,srcnE`rbh^M +rb)4Q.t.@/ag_XWci2Dmg&Be+huMj>jlQL*rp0RPrpp'\rqHEfrqcNirr)`neGoOI +qu-NlrqcWhrqHEarpg!Vrp0RJroO.;rnRM+rmUkmrlb;WrkABBrilC&rhf[ergEbMrf-o4rdt,srcnE` +rbh^Mrb)4__1J\c/i4X8]!qTDk8XPl?[AL]2o)I/\BiF8g(VCAqlF@/aI2>Q.\&;u9Dj:B!rd8cD9[ +8,c!T7K,^G6bbte6/Y"Z5_21p5lO'a6M3_C7/fXP7fGpW8H)3[9`@c`;#XGn&?N+@3BDuZFDZ4_V +GQ*!hK)UT*N<,9.!0mJOrh'1eri?%&rji$Ark\TWrm1Smrn7;+ro!e;roj@IrpTjWrq-3arqZQiqu$Hl +qu26Jrr2fnrquclrqQKerq-3[rpTjProsFDro!e2rn7;"rm1Serk\TJrji$4ri?$qrh'1XrfmDAreLK) +rd=]ircA'VrbDFFra>_2r`fA&r_r\jr_EGdr^m)[r^ZrWqaLKPnjC/Yr^"RiJO"cO]0Q?]^I%T\qaCEP +qaUQTr^d#[r_3;cqb[8kr`9#&ra,S3rb)4Frbh^Vrce?hrdt-*rf-oArgNhYrhf[qrilC4rk8&?N+@3BDuZF +DZ4_VGQ*!hK)UT*NW,1ARf8rYVZ*XqYl;34^&GkIbPoiee,J&"h#?72jo4KCli-APo)A:\p\t!fqYU3i +rVQTLs0;V'rqlZnr;QQlq#:$eo`"C[n,DYPl2KfDi;VO2g&BJ"ci2,e_>_1J\c/i4X8]!qTDk8XPl?[A +L]2o)I/\BiF8g(VCAqlF@/aI2>Q.\&;u9Dj:B!rd8cD9[8,c!T7K,^G6NKM?_*\,eJO%.=JO$q7r^"Rk +q*OaAqaCEPqaUQTr^d#[r_3;cqb[8kr`9#&ra,S3rb)4Frbh^Vrce?hrdt-*rf-oArgNhYrhf[qrilC4 +rk8_2r`fA&r_r\j +r_EGdr^m)[r^ZrWqaLKPnjD5"j$N`2JO#qpJO&-Yr^":cogAUEr^H`S!(QrXr^d#[r_3;cqb[8kr`9#& +ra,S3rb)4Frbh^Vrce?hrdt-*rf-oArgNhYrhf[qrilC4rk8rp'LMrpTjWrq-3arqZQiqu$Hlqu5+Frr2fnrquclrqQKe +rq-3\rpTjRrosFFro*k5rnIG&rmC_irl"fO!5&?F]`,8:YPtR$T`1J\Qi<'FMZ/>/J,XcnFoH@ZD#S/J +A,]m8?2dt*sAj:&[fb9)_BY8,c!T7JfLM6bbsm6%M=Q6-_d/6N0@F7/fXP7fGpW8H)3[9E%Zb +:]=5j;uThs=T2V*@/a[8C&VrJE;k"ZHN&EnL&Qu/O8bLFSGo2\WrB1#Zi7W:_#D:Oc2Q,iec+>&hYuI6 +k5jc/rp'LMrpTjWrq-3arqZQiqu$Hlqu5+Frr2fnrquclrqQKerq-3\rpTjRrosFFro*k5rnIG&rmC_i +rl"fOrk/6:ric=$rh07\rg3VFreg]/rdXonrcS3ZrbVRJraYq8ra#M*r`/qrr_`Yjr_sMnlMg2Mn,DnWo`"Uaq>U6fr;QZl +rm^uIrqlZnr;QQlp]:-`!;HKbrpp'WrpB^Lroa:>rndY/rmh"qrltG\rkSNGrj2U-ri5sjrg`tSrf@&9 +re:?$rd+Qdrc%jQrb;@Ara>_2r`K/"r_renr_NMfr_*5_r^coVr^QcRqaClMg2Mn,DnWo`"Uaq>U6fr;QZlre(7MrqlZnr;QQlq#:$eo`"F\n,D_R +l2KlFiVq^5g]#b&dJhDi`;[RO]`,8:YPtR$T`1J\Qi<'FMZ/>/J,XcnFoH@ZD#S/JA,]m8?2dt*sAj:&[fb9)_BY8,c!T7JfLM6bbt+6%M=Q6+]Fq6N0@F7/fXP7fGpW8H)3[9E%Zb:]=5j;uThs=T2V* +@/a[8C&VrJE;k"ZHN&EnL&Qu/O8bLFSGo2\WrB1#Zi7W:_#D:Oc2Q,iec+>&hYuL5kPjcGmJcSRo)A:\ +p\t!fqYU3irVQT;s8N#prVl`oqYp9hp\sgao)A+WmJcALkPjH>hYu:/ec*tqc2PZ\_#D"GZi70-WrA[j +SGnlSO8b%9L&QT$HN&'dE;j\QC&VWA@/aI2=T2>";uTYn:]=)f9)qQb8kT(Rqa^WTqaLBMqa8+bJO/<^ +JO,elk!IZdr^6?Hr^H]Rr^ZrYr^m)^r_rp'LMrpTjWrq-3arqZQiqu$Hlqu5CNZ2ah&qu-NlrqcWh +rqHEarpp'WrpB^Lroa:>rndY/rmh"qrltG\rkSNGrj2U-ri5sjrg`tSrf@&9re:?$rd+Qdrc%jQrb;@A +ra>_2r`K/"r_renr_NMfr_*5_r^coVr^QcRqaC96,Z+c6N0@F7/fXP7fGpW8H)3[ +9E%Zb:]=5j;uThs=T2V*@/a[8C&VrJE;k"ZHN&EnL&Qu/O8bLFSGo2\WrB1#Zi7W:_#D:Oc2Q,iec+>& +hYuL5kPjcGmJcSRo)A:\p\t!fqYU3irVQT*s3q#IrqlZnr;QQlq#:$eo`"F\n,D_Rl2KlFiVq^5g]#b& +dJhDi`;[RO]`,8:YPtR$T`1J\Qi<'FMZ/>/J,XcnFoH@ZD#S/JA,]m8?2dt*sAj:&[fb9)_BY +8,c!T7JfLM6et)h6@hFp6%M>[6+fP`6hNkH7JfOT7n3PLr^d#[r_*5br_NMjr_resr`K/*ra>_8rb;@J +rc%jZrd+Qnre:?/rf@&Frg`t\ri5t#rj2U:rkSNOrltGirmh#&rndY5roa:GrpB^Rrpp'\rqHEfrqcNi +rr)`ngAf\&qu-NlrqcWhrqHEarpp'XrpKdOroj@@rnm_1rmq(srm1Sarkn`MrjMg2riQ0prh'1YrfR2> +re^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr_*pTDk;YOoC@>M>i)*IK"KjEW0kTC]7lD@fBa6>Q._'sAj:&[ca8cD9[8,GdQ7K,^/6]aWc6@hJ$6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6 +AH$BDDZ4YTGlE*iJc:N*NW,(>Rf8oXU].CpZMq<3^]).Ma8XEae,Iqth#?41iW/0Ckii$2rpKdTrq$-] +rqHEfrqcNirr(%?qu-NlrqcWhrqHEarpp'XrpKdOroj@@rnm_1rmq(srm1Sarkn`MrjMg2riQ0prh'1Y +rfR2>re^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr_sJmQ/"/@fBp;C]85NEW14^I/\]rM>iM6OoCgKT)PMa +Xo>X*[f4&@_u@^Uci2Dmf)FJ(hu;X7kl0lHmf)_ToD\C]p\t!fqYU3irQG6#UrkJH@riuI)rhKIbrgNhKrf-o6rdk&srcnE^rbh^Nrac";ra5Y/ +r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-]L%09JO4oSqa04.qaCEPpdY6Qr^d#[r_*5br_NMjr_i_q +r`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o>!LfGWRf8oXU].CpZMq<3^]).Ma8XEae,Iqth#?41ir80@ +lMg5NnG`%Yo`"Uaq>U6fr;QYGs8)cmrVl`oqYp9hp\sgao)A.Xmf)POkl0T@hu;F1f)F+sci1ua_u@FM +[f3Q2Xo>*pTDk;YOoC@>M>i)*IK"KjEW0kTC]7lD@fBa6>Q._'sAj:&[ca8cD9[8,GdQ7K,^/ +6_cu!6@hIf6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N*NW,(> +Rf8oXU].CpZMq<3^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QZ3s82cor;QQlq#:$e +o`"F\nG_kTli-,Iir7j7h#>n(df.Sla8X!U^](\@Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$'; +?iF:/=8l5!;Z9Pm:]=&g8c_OVr^m)[r^ZiTqaLKPg-^EX_Erf?JO9#ri'[B0r^HTOr^ZrYr^m)^r_#U +rkJH@riuI)rhKIbrgNhKrf-o6rdk&srcnE^rbh^Nrac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHO +r^?QLi^88`TL+2rQU:"*p-\^Fr^HTOr^ZrYr^m)^r_#UrkJH@riuI)rhKIbrgNhKrf-o6rdk&srcnE^ +rbh^Nrac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-r^)0&JO4oS\O,4AqaCEPpdY6Q!D#`] +8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N*NW,(>Rf8oXU].CpZMq<3^]).Ma8XEa +e,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QZEs4%)JrqlZnqu6Hkq>U*eo`"F\n,D\QlMfoEir7j7 +g&BP$d/M8g`rU6i +qu6Qkrlb?@rqlZnqu6Hkq>U*eo`"F\n,D\QlMfoEir7j7g&BP$d/M8g`W3dT^qfr]rjDa/ri,mlrh'1U +rf[8@reCE(rdOiirc8!Vrb;@DraPk6r`fA)r`/qrqb[8er_3;ar_!/]r^d#Yog\^FogFI#JO=uUTgSB= +pdOjFr^ZrYr^m)]r_*5ar_<8dr_rerr`T5*ra5Y6rau.DrbqdWrc\9irdt-(rf6u@rg*PUrhTOmric=/ +rk&0Frl4r]rm:Yprn7;.ro3q=!9sUMlMg/Ln,DnWp&=[aq>U6iqu6Qkrlb?@rqlZnqu6Hkq>U*eo`"F\ +n,D\QlMfoEir7j7g&BP$d/M8g`rlJ+0@fC!=C&W&MF8g@^If=ruLAm54P5^dHTDkYcWW'+#[Jmf;_#D@Qbl5ugec+8$hu;X7jo4QE +m/HJQo)A=]pAXmeqYpBkrVQT;s8N#prVl]nq>pEf!;ZWfrq-3\rpTjQrp'LEro3q7rn7;$rm:Ygrl4rQ +rk&0;ric=#rhKIbrg*PHrf6u4rdt,urc\9]rbqdMrau.=ra5Y/r`T5#r_r\jr_EGdr_*5_r^m)[r^ZWN +pdOjDYXU6iqu6Qkrdk+G +s8N#prVl]nqYpQ.e)U6iqu6Qkrke^7rqlZnqu6Hkq>U*eo`"F\n,D\QlMfoEir7j7 +g&BP$d/M8g`rU6iqu6Qkrj;^Ps8N#prVl]nqYpQ.e)i2-J,X`mFoHC[D>n8KB)Z3;?N+4/=T2A#<;obo;#X5h:&[ic9E%N^8G,LJ7Y+#'7=dmY7?U+77eK:N +8H)3[9E%Wa:&[oe:]=5j<;oqt=T2S)?N+@3B)ZNDD>nPSFoH[cJ,Y-#M>iS8Pl@-NU&LqgX8]I)\Gj2@ +_u@aVcMl;lfDaS)i;Vg:k5afKlg+Q;rp]pYrq69arqcWkrqucoqu4e=rr2fnrqucmrqcWfrq69^rp]pS +rp0RHroF(:rnRM*rmUklrlP/Wrk8<@rj2U)rhf[grgNhOrf@&8re19#rd"Kcrc.pSrb;@Dra>_3r`oG) +r`9"tr_`Ykr_EGer_3;ar^m)[q+(BRpdTg'N^\LfJOTK*pdXpHr^d#[r_*5ar_gBkpAXaaoD\7YmJcGNkPjQAi;VO2f`'A!cMkrb_u@@K +\Gii6X8]!qU&LM[Q2ZjDM>i2-J,X`mFoHC[D>n8KB)Z3;?N+4/=T2A#<;obo;#X5h:&[ic9E%N^8G,LJ +7\iJ(7=dmY7HR&67eK:N8H)3[9E%Wa:&[oe:]=5j<;oqt=T2S)?N+@3B)ZNDD>nPSFoH[cJ,Y-#M>iS8 +Pl@*PTqMI[rhf[qrj2U6rk8sPolJ(/@/ad;C&VuKEW1+[H2`t*e,IYlao93W^&GP@Zi7$)VZ*:gRf8TOO8b"8K`6K#H2_scEW0hSC&V`D@/aL3>lIk)_3r`oG)r`9"tr_`Ykr_EGer_3;ar^m)[og]$P7f#T*7>OB` +7=mr.7eoOH8,c'Y8cDB^9`@cc:B"&g;>sPolJ(/@/ad;C&VuKEW1+[H2`i2-J,X`mFoHC[D>n8K +B)Z3;?N+4/=T2A#<;obo;#X5h:&[ic9E%N^8G,LJ7cm-j7=dmY7ANBI7eK:N8H)3[9E%Tc9hbU^r_EGg +r_`Yor`9##r`oG/ra>_;rb;@Krc.p[rd"Kmre19-rf@&CrgNh[rhf[qrj2U6rk8#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WSh +r_3;`oh#-Rpda=5JOY2[JOZS-pdb3PqapZWr_3;cr_WSir_`Ymr`9##r`];.raGe9rb2:Hrc%jYrd"Kk +rdt-*rf-o?rg<\VrhKIlric=/rk&0Frl>#]rm:Yprn7;,ro*k5hY'sAj;#X5h9`@ZW8cD9U7tF/)7Y+$[7Zp798,GjS +8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fHE;jtYH2`6kK)UT*NW,+?R/W]VU].7lYPts/]DfVF +a8X9]d/MSpg&Bh,iVqsrpg![rq69brqcWkrqucoqu4e=rr2fnrqucmrqcWgrq??`rpg!V +rp9XJroO.#]rm:Yprn7;,ro*kgBkp\smco`"C[n,D\Qkl0]CiVq[4g&BP$d/M5fa8WmR +]Df5;YPtO#U]-kaR/W9JNW+_4K)U2tGlDgaE;j\QB`;N@@K'X5>5hY'sAj;#X5h9`@ZW8cD9U +8#/V*7Y+$[7cm288,GjS8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fHE;jtYH2`6kK)UT*NW,+? +R/WZXUS@gari,n#rjDa;rkSNRrlb;frmh#$rn[S4roO.Crp9XPrpg![rq69brqcWkrqucoqu20HqZ$Qo +qu-Nlrql]krqHEcrq-3[rpTjQroj@Cro*k4rn7;$rm:Yfrl>#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,t +rcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WShr_3;`oh#-Rpd^63JOY2[JOTZ07efLN8Gc!U9)_N` +:&[ug:]=5j;Z9_r=T2M'?iFL5A,^0@C]8;PFT-RbIK"itM#ND5P5^jJT)PMaWW'+#[Jmf;_#DCRbPolf +ec+8$h>ZC4jo4KCm/HGPnc&1[p&=^bqYpBkr;QZlrke^7rqlZnr;QTmqYp6gpAX^`nc&"Vm/H5Jjo46< +h>Z+,ec*qpbPoQ]_#CtF[JmB/WW&[lT)P,VP5^I?L]2o)IK"KjFT-7YD#S,IA,]p9?iF7.=T2A#;?0Pp +;,R#]rm:Yprn7;,ro*k`,7YjNb +7Y4)08,5[P8Gc!U9)_N`:&[ug:]=5j;Z9_r=T2M'?iFL5A,^0@C]8;PFT-RbIK"itM#ND5P5^jJT)PMa +WW'+#[Jmf;_#DCRbPolfec+8$h>ZC4jo4KCm/HGPnc&1[p&=^bqYpBkr;QZlrj;^Ps8N#prVl`oqu6Hk +p\smco`"C[n,D\Qkl0]CiVq[4g&BP$d/M5fa8WmR]Df5;YPtO#U]-kaR/W9JNW+_4K)U2tGlDgaE;j\Q +B`;N@@K'X5>5hY'sAj;#X5h9`@ZW8cD9U8*39l7Y+$[7\iNK8,GjS8c)-Z9`@`e:f%-gr_NMj +r_i_rr`K/'ra5Y5raYq@rbMLPrcJ-brdFctreUQ5rf[8Jrgs+ari,n#rjDa;rkSNRrlb;frmh#$rn[S4 +roO.Crp9XPrpg![rq69brqcWkrqucoqu5+FdJs4Fqu-NlrqcWhrqHEcrpp'XrpKdNroa:Aro!e2rn7;! +rm(MdrkeZKrk&08riZ7#rh07\rgEbIrf$i5rdaurrd4Wcrc%jRrb2:BraGe5r`oG,r`B)"r`&kor_WSi +r_EGeqb6l[r^u*?rCDK1JOk>__arfZqb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jX +rd4Wnrdb!)rf-o=rgEbVrh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e:roj@HrpKdTrpp'^rqHEerqcWk +qu-Nn`W,r:qu-NlrqcWhrqHEcrpp'XrpKdNroa:Aro!e2rn7;!rltMe!R&[c_Z%:K]Df,8Y5YI#T`1J\ +RJrlIt,=8l8"<;obo;#X8i:B!ub9`%K^9&N:)8:a<_8?GGC +8c)-Z9DD3[:&[oe:]=2i;>sPoQ.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1# +ZMqK8^])+LbPoiedf.r!h#?72jSnBBl2^5QmdC)Drpp'^rqHEerqcWkqu-Nn`W,r:qu-NlrqcWhrqHEc +rpp'XrpKdNroa:Aro!e2rn7;!rm(MdrkeZKrk&08riZ7#rh07\rgEbIrf$i5rdaurrd4Wcrc%jRrb2:B +raGe5r`oG,r`B)"r`&kor_WSir_EGeqb.#`9DqN_9&N9l8?#.28=)m58bksT9)_KY9`@cc:B"&g;#X>k +<;ons=8lG'?2e41@K'j;B`;lJE;jqXHiAKnJGtE)NW,%=RJrcVT`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+ +i;Vg:kl0lHmf)_To)A@^p\sseqYpBhrVlf8s8N#prVl]qqYC3grqQKerq??^rp]pTrp'LGroF(:rnRM+ +rmLekrlb;XrkABDrj)O+ri5sjrg`tUrfI,_JOnfmqb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jX +rd4Wnrdb!)rf-o=rgEbVrh':lWW9'uY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kl0lHmf)_To)A@^p\sse +qYpBhrVleIs7H?jrqlZnr;QQlq#:$epAXX^nG_kTlMfuGjSn*:h#?"+df.PkbPoBX^AbbDZMq$+WrA[j +SGnrUOT(4i&)IK"TmF8g.XD>n5JAc?-;?iF=0>Q._'sDk:]=,g:&@W]9E%QA8Z#%08:a=# +8E3;=9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41@K'j;B`;lJE;jqXHiAKnJGtE)NW,%=RJrcVT`1tj +Y5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kl0lHmf)_To)A@^p\sseqYpBhrVlf/s8N#prVl`oqYp9hp\smc +o)A.Xmf)MNkPjQAi;VO2g&BG!cMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt,A_,8=`<58HDCSqb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:J +rc%jXrd4Wnrdb!)rf-o=rgEbVrh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e:roj@HrpKdTrpp'^rqHEe +rqcWkqu-NnZ2`)Krr2fnrquclrqQKerq??^rp]pTrp'LGroF(:rnRM+rmLekrlb;XrkABDrj)O+ri5sj +rg`tUrfI,_ +^I[BVqb$i\pe:Z]r_EGgr_NVm;#jJm<;ons=8lG'?2e41@K'j;B`;lJE;jqXHiAKnJGtE)NW,%=RJrcV +T`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kl0lHmf)_To)A@^p\sseqYpBhrVlfDs3CZDrr2lqr;QQl +q>U0gpAX[_nc&"Vli-/JkPjH>hYu:/ec+"rcMki__Z%:K[f3Q2Xo>-qT`1J\Pl?dDNW+V1Jc:,tGQ)^` +DuOSPC&V`D@K'[6?N+.-=T2A#<;ohq;Z9Ml:]=,a:&[iE9DqJ68qBTc9#F9]9D_EX:&[oe:]=2i;Z9Vo +<;oqt=T2M'?N+=2@K'mPl@3PT`1bdXo>X*[f4#?_Z%RScMl5jec+>& +hYuL5kPj`Fli-APnc&.ZpAXgcq>U6iqu6Qkrke^7rr2lqr;QQlq>U0gpAX[_nc&"Vli-/JkPjH>hYu:/ +ec*tsc2l59rl4rSrkAB?riuI)rhTOdrg`tPrfI,=re19%rdOijrcJ-XrbVRJrau._3r`];'r`9"t +r_reor_WSir_E5_r_26CP=gBuJP*%:j%K8CpeC`_r_NMir_i_or`&ktr`K/'ra,S2raGerfmDPrh07driQ1*rjMg?rkeZSrm(Mjrmh#&rndY5roa:Frp'RQ!UoLVnc&.ZpAXgc +q>U6iqu6Qkrke^7rr2lqr;QQlq>U0gpAX[_nc&"Vli-/JkPjH>hYu:/ec+"rcMki__Z%:K[f3Q2Xo>-q +T`1J\Pl?dDNW+V1Jc:,tGQ)^`DuOSPC&V`D@K'[6?N+.-=T2A#<;ohq;Z9Ml:]=,e:&Rfc9]/Qp8uYF6 +8s`099DM6X9__?]:B"&g;#XAl;uTbq5hk-?iFL5B)ZKCD#SAPF8gC_If=otK`6u1OoCUESGo2\ +V#ILqZMq<3^Ac"K`r=9_dJh\qg]$(/iVr$>l2L#Jn,DkVoD\I_p\t!fqYpBkrVQT2s8N#srVl]qqYC3g +rqZQgrq??_rpg!Vrp0RJroa:>rndY/rmh"rrm(M_rkeZKrjMg2riQ0qrh07\rfmDDrf-o1rdk&trce?` +rbqdPrb;@DraGe6ra,S-r`K/#r`&kqr_i_lr_NMgpeC`]i(LgWJP(JcJP+rqqb6cZr_EGgr_WSlr_req +r`9##r`];-ra5Y5rau.CrbVRPrcA'_rdOitre191rfR2Erg`t\rhKRsXT5L&ZMq<3^Ac"K`r=9_dJh\q +g]$(/iVr$>l2L#Jn,DkVoD\I_p\t!fqYpBkrVQSFs7--grr2lqr;QQlq>U0gpAX[_nc&"Vli-/JkPjH> +hYu:/ec+"rcMki__Z%:K[f3Q2Xo>-qT`1J\Pl?dDNW+V1Jc:,tGQ)^`DuOSPC&V`D@K'[6?N+.-=T2A# +<;ohq;Z9Ml:]=,a:&[iE9;Y=48qBU'9&iSA9__?]:B"&g;#XAl;uTbq5hk-?iFL5B)ZKCD#SAP +F8gC_If=otK`6u1OoCUESGo2\V#ILqZMq<3^Ac"K`r=9_dJh\qg]$(/iVr$>l2L#Jn,DkVoD\I_p\t!f +qYpBkrVQT)s8N#srVl`oqYprfmDPrh07d +riQ1*rjMg?rkeZSrm(Mjrmh#&rndY5roa:Frp0RPrpg!Zrq??crqZQirql]nqu5(EW;lkrrr)iorqcWi +rqQKdrq$-ZrpTjProsFFro*k5rnIG&rmLekrl4rSrkAB?riuI)rhTOdrg`tPrfI,=re19%rdOijrcJ-X +rbVRJrau._3r`];'r`9"tr_reor_WSir_E5_!DH/e9]/Qp8u#"08tAT99*%[Yqb6cZr_EGgr_WSl +r_reqr`9##r`];-ra5Y5rau.CrbVRPrcA'_rdOitre191rfR2Erg`t\rhTOqrj)O3rkABKrl4r_rmC_q +rnIG/ro*k>rosFJrpTjVrq$-_rqHEfrqcWkrr)`nZ2_uHrr2oqrquclrqZQgrq??_rpg!Vrp0RJroa:> +rndY/rmh"rrm(M_rkeZKrjMg2riQ0qrh07\rfmDDrf-o1rdk&trce?`rbqdPrb;@DraGe6ra,S-r`K/# +r`&kqr_i_lr_NMgpeC`]i(JVnJP(Jc^ImNZqb6cZr_EGgr_WSlr_ihs;ufns5hk-?iFL5B)ZKC +D#SAPF8gC_If=otK`6u1OoCUESGo2\V#ILqZMq<3^Ac"K`r=9_dJh\qg]$(/iVr$>l2L#Jn,DkVoD\I_ +p\t!fqYpBkrVQTAs3CZDrr2lqr;QTmqYp9hp\sgao)A.XmJcDMkl0T@i;VU4f)F.tci2&c`;[ON\c/u8 +YPtL"V#I"cR/W?LO8at7K`6N$I/\?hErL%WD#S,IAH$';?iFC2>Q.e)X2h:]=2i:]!oX +:%V,19S#lg9Y*pj:%_9\;#X8f;#X>h;Z9YpU6iqu6NmrVQT2s8N#s +rVl`oqu6Hkq#:$eo`"F\nG_hSlMg#Hir7m8hYu+*df@\pcd2U4rl"fNrji$8ric="rhTOcrg<\Lrf@&7 +re19$rd=]hrc8!WrbVRIrac";ra5Y2r`fA)r`9"ur`&kpqbd5er_NMir_NDdnkG!8JP:VgUeLGUohPK_ +r_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"ArbMLPrc8!^rd=]qre19,rf@&Brg<\WrhKIkric=.rji$C +rl"fXrm1Smrmq)*ro!e8roj@Hrp9^T!V#UXoD\C]p\t!fqYpBkr;QZlrke^7rr2lqr;QTmqYp9hp\sga +o)A.XmJcDMkl0T@i;VU4f)F.tci2&c`;[ON\c/u8YPtL"V#I"cR/W?LO8at7K`6N$I/\?hErL%WD#S,I +AH$';?iFC2>Q.e)a5j;#X8i;#X8f:@_,19V>(19TDg>9`Rr^:B")h:]!uf;>X8j<;ons +Q.t.?iFO6AH$9AC]8;PErL:^I/\ZqK`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mXci2Dmf)FP* +i;Va8kl0lHmJcVSoD\C]p\t!fqYpBkr;QZlrke^7rr2lqquQ]l!;lclrqQKerq-3\rp]pSrp'LHro3q8 +rndY*rmUkmrlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$ +r`/qsr_iVjqb[8fr_WSiqbH]V[S26GJP:Vgpe:?TohPK_r_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"A +rbMLPrc8!^rd=]qre19,rf@&Brg<\WrhKIk!O&[,YPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lHmJcVS +oD\C]p\t!fqYpBkr;QZlrdk+>s8N#srVl`oqu6Hkq#:$eo`"F\nG_hSlMg#Hir7m8hYu+*e,I\mao96X +^](eC[/R9.W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA@fBa6?N+1.=oMJ$g;#X8i +;#X8f:@_,M9S#lg9T`$A:%_9\;#X8f;#X>h;Z9YpU6iqu6NmrVQT) +s8N#srVl`oqu6Hkq#:$eo`"F\nG_hSlMg#Hir7m8hYu+*e,I\mao96X^](eC[/R9.W;`UlTDk5WPl?aC +M#N),JGsrqGQ)X^E;j\QB`;QA@fBa6?3"11>?h)0r`9"ur`&kpqbd5er_NMir_NDdnkF[/]M*lMJP>W. +ohG*Sr_WSiqb[8hqbmDmr`/qur`T5)ra,S2raPk;rb2:Hrc%jWrce?hrdb!$reUQ7rfd>Krh'1bri#h" +rj;[8rkJHNrlP/crmUktrndY4ro3q@rp'LMrp]pYrq-3arqZQirql]mrr)`ne,QBHrr2oqrqucmrqcWh +rqHEarpp'XrpB^Mroj@@ro!e4rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7re19$rd=]hrc8!W +rbVRIrac";ra5Y2r`fA)r`9"ur`&kpqbd5er_EPk:]O>k:]!oX9n?!,9S#m%9_D-V:Adld;#X8f;#X>h +;Z9YpU6iqu6NmrVQT!s2tB@rr2lqr;QTmqYp9hp\sgao)A.XmJcDM +kl0T@i;VU4f)F.tci2&c`;[ON\c/u8YPtL"V#I"cR/W?LO8at7K`6N$I/\?hErL%WD#S,IAH$';?iFC2 +>Q.e)X2h:]=2i:]!oX:&%D59S#lg9X[Xf:%_9\;#X8f;#X>h;Z9Yp<<6-$!*9)%r`fA. +ra5Y6rac"ArbMLPrc8!^rd=]qre19,rf@&Brg<\WrhKIkric=.rji$Crl"fXrm1Smrmq)*ro!e8roj@H +rpB^Srq$-]rqHEfrqcWkrqucoqu5"CcN!nCqu-NlrqcWirqQKdrq-3[rpTjQrp0RFro3q7rn@A'rmUkl +rlP/XrkJHDrjDa.ri,mlrh'1Yrg!JDreg]0rdaurrd+Qbrc.pUrbDFFral(:ra5Y2r`fA*r`T5%r`9"u +qc!Jlpeh#ej\LG'JPUhmY#"pkpegodr_rerr`9#"r`T5(r`fA.ra5Y4ral(BrbDFNrc.pYrd+Qkrdb!& +repc:rg!JOrh'1bri#h!rjDa:rkJHNrlP/brmUkurn@A/ro3q=rp0RNrpTjVrq-3`rqQKgrqcNirr)`n +_Z0W7qu-NlrqcWirqQKdrq-3[rpTjQrp0RFro3q7rn@A'!7Ltte,IYlao96X^](hD[Jm?.WW&[lTDk;Y +Q2ZjDMZ/A0JGsurHN&!bEW0nUCAqlFAc?*:?iFC2>Q.h*=oMM%sCC:]!q=:OuX8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&_4ra,S.r`];(r`B)"r`/kp!)rkppeh#eJPVD(JPUkn!)WSipegodr_rerr`9#"r`T5(r`fA. +ra5Y4ral(BrbDFNrc.pYrd+Qkrdb!&repc:rg!JOrh'1bri#h!rjDa:rkJHNrlP/brmUkurn@A/ro3q= +rp0RNrpTjVrq-3`rqQKgrqcNirr)`n_Z0W7qu$QnquHZoqYpQ.h*=oMM% +sCi:Ou;m:Ou=.:]!u`;>X8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriZ7. +rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hlqu4/+rr2fnrquclrqZQgrq??` +rpg!Vrp9XMroO.=rnm_/rn%.urm(Mbrl"fNrjr*:riZ7"rhKIbrgNhOrf@&9reCE&rdFclrcA'YrbqdN +rb)4Ara5_5!FK45?N+1.>5h\(=8l8"5hb* +?N+=2@/aa:B`;cGDuObUF8gLbI/\ZqLAm,1O8bFDRf8rYU].4kY5Yj.])KJD`;[mXcMl;lfDaM'hu;X7 +jo4TFmJcSRnc&1[pAXjdq>U6fr;QZlrmUnGs8N#prVl`oqYpQ.h*=oMM% +_:rb2:GrbqdUrcA'b +rd=]qreCE1rf@&DrgNhYrhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQi +qu$Hlqu3l#b5_J?qu-NlrqcWirqQKdrq-3[rpTjQrp0RFro3q7rn@A'rmUklrlP/XrkJHDrjDa.ri,ml +rh'1Yrg!JDreg]0rdaurrd+Qbrc.pUrbDFFral(:ra5Y2r`fA*r`T5%r`9"uqc!Jlpeh#ektck+JPUhm +W_`Lgpegodr_rerr`9#"r`T5(!F&b.>Q.t.?iFI4Ac?BBCAr/NEW1%YHN&U*eo`"F\nG_kTm/H2Ijo46Z+,ec*qpbl5]__#D"G\c/l5Xo>=!U&LV^RJr?JNrFt9KDpE#IK"Hi +FoHC[DZ4GNC&VZB@fBd7?iF@1>lIq+=oMOuelJ%.?iFI4 +A,^$U)\c0;A_#DFSbPolfec+8$h>ZC4jSn?A +m/HDOnG`"Xp&=[aq>:$fr;QZirke^4rr2lqr;QQiq>U*eo`"F\nG_kTm/H2Ijo46Z(-eH+4Nrm:Yg +rlG)Srk/6@riuI)ri,mjrgj%VrfR2?repc.rdaurrce?arc.pTrbMLIrac";ra>_4ra#M.r`];(r`Jqr +pf.,hJPuJFJPq%sPu@T[pf.#hr`K/&r`];+ra#M1ra>_8rac"BrbMLNrc.pZrce?irdb!#repc9rfR2J +rgj%^ri,n!riuI5rk85h\(=Su4uU*eo`"F\nG_kTm/H2Ijo46< +h>Z+,ec*qpbl5]__#D"G\c/l5Xo>=!U&LV^RJr?JNrFt9KDpE#IK"HiFoHC[DZ4GNC&VZB@fBd7?iF@1 +>lIq+=oMOuelJ%.?iFI4A,^$R+\[_^Nrk8_8rac"BrbMLNrc.pZrce?irdb!#repc9rfR2Jrgj%^ri,n!riuI5rk85h\(=SPql<;TUF;Qs&M;Lqa+;Z9Vi<;9Mn=T2J&>5he+?2e41@/a[8AH$^WW'%!Z2V<5^&GhHaSsB^d/MSpg&Bh,iVqp;kPjiImJcVSo)A=]pAXmb +qYpElrV6B@s/>tprr2lqr;QQiq>U*eo`"F\nG_kTm/H2Ijo46Z+,ec*qpbl5]__#D"G\c/l5Xo>=! +U&LV^RJr?JNrFt9KDpE#IK"HiFoHC[DZ4GNC&VZB@fBd7?iF@1>lIq+=oMOujJPqM+JPq2" +r_ierq,I,ir`K/&r`];+ra#M1ra>_8rac"BrbMLNrc.pZrce?irdb!#repc9rfR2Jrgj%^ri,n!riuI5 +rk8U)\c0;A_#DFSbPolfec+8$h>ZC4jSn?Am/HDO +nG`"Xp&=[aq>:$fr;QZirmCbhs8N#prVQKkqYp6gpAX^`nc&"VmJc>Kk5OE?i;VO2f`':tci2/f_u@IN +^&GDn2IB)Z??@K'[6?i+..>l.\'=Sl2!lJ%.?iFI4@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^ +V#ILqZ2V-0^&GhH_u@mZcMl5jf`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQT)s8N#prVQKkqYp6g +pAX^`nc&"VmJc>Kk5OE?i;VL3fE'XWrmC_krlkAZrkSNHrj;[/riQ0qrh07]rg!JGrf@&6re19$rdFcj +rcS3Zrbh^Prb)4Brac":ra>_4qd'2+qcWo#qcEbtk#IUEJQ.2"X]4F_qc<\tqcNi#qcs,+ra5Y4raGe: +ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8Kk5OE?i;VO2f`':tci2/f +_u@IN^&GDn2IB)Z??@K'[6?i+..>l7_)=oMP# +=8l7_BDucIDuO_TFoH[cIK"crK`6c+O8b=A +Q2[?RU&LkeXo>U)[/Rc<_#D7Nbl5oedJhetg]$.1j8S3?kl0uKn,DkVo`"O_p\Xgdqu6Qkrji(.rqu]p +rVQKkqYp6gpAX^`nc&"VmJc>Kk5OE?i;VO2f`':tci2/f_u@IN^&GDn2IB)Z??@K'[6?i+..>l.\'=Sl2!BDucIDuO_TFoH[cIK"crK`6c+O8b=AQ2[?RU&LkeXo>U)ZiRkR!58BIrkn`Zrm(Mjrn.5) +ro!e9roX4DrpB^Rrpg![rq69bqtg_4qd'2+ +qcWo#qcEbtk#J9XJQ.2"RT/ELqc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6 +rf[8Grgj%^rhTOqriuI0rk8l.\'=Sl2!lJ%.?iFI4@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^V#ILqZ2V-0^&GhH_u@mZcMl5j +f`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQT=s/#bprqlZkqu6Hkp\smco`"C[n,D_Rkl0`Dj8S!9 +h#>t*dJhJkbl5NZ_#D%H[/R-qT`1M]Q2ZsGO8aq6K`6N$IK"KjFoH@ZDZ4MPBDuNBAH$$:@/aO1 +?2e++=oMM(=',?%r`8/]JQ/CDJQ/1>k#DC^r)WeuqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kk +rdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8_4qd'2+qcWo#qcEbtk#Ht3JQ.2"^Js>qqc<\t +qcNi#qcs,+ra5Y4!F]C:@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^V#ILqZ2V-0^&GhH +_u@mZcMl5jf`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQT;s3(HArqlZnr;QTmqYp9hp\smcoD\:Z +n,DYPl2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP21u=b0_,=b0_n=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZF +D#SAPE;jtYGQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L([f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#J +n,DkVoD\I_p\sseqYpBkr;QZlrji(.rqlZnr;QTmqYp9hp\smcoD\:Zn,DYPl2KlFiVq^7g]?3crmq(s +rm1Sbrl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4 +ra,J-r`o"uoidP^JQ[P,X]b3uoiq;ura#D-ra>_4ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3 +rf@&Brg<\UrhBCiriH+(rjMgrosFJrpTjVrpp-`!VZ6dp\sseqYpBk +r;QZlrji(.rqlZnr;QTmqYp9hp\smcoD\:Zn,DYPl2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-s +UAg__R/WKrgj%_rhoas +riuI2rk&0Frl+lXrm1Smrmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]mrr)`n\c;[.r;?Worqucm +rqcWhrqHEcrq$-ZrpTjProsFFro*k6rnRM(rmLelrlG)WrkSNFrjMg2riH*srhBC_rg<\Krf@&:reUQ) +rdXoprce?`rc%jTrbVRKrb)4Brabn7ra5Y4ra5Y2qd'2+nltcj^KH+jJQ[P,nlk]jqcs,+qd080ra5Y4 +raGe:ral(ArbDFKrbqdTrcJ-`rd=]ordk')repc:rfd>Krgj%_rhoasriuI2rjr3H^];1L`W!sXci2Dm +f)FJ(hYuL5kPj`Fli-APnc&.ZpAXgcq#:-hqu6NmrVQSFs60L^rqlZnr;QTmqYp9hp\smcoD\:Zn,DYP +l2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP20s=b0_,=diLa>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_T +FT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_VuEdsZ2V32]DfVF`W!sXci2Dmf)FJ(hYuL5kPj`Fli-APnc&.Z +pAXgcq#:-hqu6NmrVQSus8N#prVl`oqu6Hkq#:$epAX[_nc&"Vli-/JkPjH>hu;F1f)F+sci2#b`;[RO +]Df8_4ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&B +rg<\UrhBCiriH+(rjMgrosFJrpTjVrq$-_rqHEerqcWkrqucoqu4k? +V>pPoqu-Nlrql]krqQKerq??_rpg!Vrp0RJroa:>rnm_1rmq(srm1Sbrl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4ra#V2?2\(.>k2+l>(KhO=b0_H=n5bh +>6%q+>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_VuEdsZ2V32 +]DfVF`W!sXci2Dmf)FJ(hYuL5kPj`Fli-APnc&.ZpAXgcq#:-hqu6NmrVQSps2Y0=rqlZnr;QTmqYp9h +p\smcoD\:Zn,DYPl2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP20N=b0_,=he,1>4l+s>lJ%+?N+@3?iFI4@K'g: +AH?FV!,):GrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMgrosFJrpTjVrq$-_rqHEerqcWkrqucoqu4e=bQ%A:rqucmrqcWirqQKdrq-3\rpTjSrp0RJro=": +rndY,rmh"qrlkA_rkn`Lrjr*:rilC&rhf[frg`tUrf[8Arf$i2re(3"rd=]jrc\9\rc%jSrbMLJrb;7@ +rac";qdKJ3qd9#&nm23!JR!b2JR$)toj.,pra5P1raG\5qdf\;rb;@HrbMLNrbqdUrc\9crd=]pre(3) +rf$i;rf[8Krg`t\rhf[qrilC0rji$Brkn`UrlkAhrmh##rndY4ro="Brp0ROrpTjWrq-3`rqHEfrqcWk +rquQj\c;I(rqucmrqcWirqQKdrq-3\rpTjSrp0RJro=":!8[b5hYu1,ec*tqbl5]__u@CL])K,:Yl:^& +VZ*7fSGnrUP5^OAN;eS2KDpB"I/\EjG5cL\E;jbSC]8)JC&;K@AH$'8@K'[3?hIar?'ANE>_-.^>kMCn +?N+=/@/aU3@f'^8Ac?ECCAr#JDZ4SREW1.\GlE*iJ,Y*"LAm/2O8b=ARJr`UT`1hfX8]@&[Jm`9^Ac%L +a8X<^dJh\qf`'b,i;Vd9l2L#Jmf)\So)A7]p&Xm\rqHEfrqcWkrquQj\c;I(rqucmrqcWirqQKdrq-3\ +rpTjSrp0RJro=":rndY,rmh"qrlkA_rkn`Lrjr*:rilC&rhf[frg`tUrf[8Arf$i2re(3"rd=]jrc\9\ +rc%jSrbMLJrb;7@rac";!F]F8@K'[3?hIar?%H7[>_-.H>kMCs?Mn./?i+71@JaO2AH$0>C&VlHC]85N +DuObUG5cacI/\WpKDpW)N;en;P5^mKSGo2\VZ*XqYl;'0\c0>B_u@^Ubl6#hec+5#hYuI4j8SO +n,DnWo`"R`p\t!fqYpBkr:p9%s7uWorr2ipqu6Hkq>U0gpAX^`o)A+Wmf)POl2K`BiVq^5f`'G#dJhAh +aSs*V^Ab_C[JmE0X8]!qT`1J\RJrBKO8b+;LAli)J,XipH2`!dEW0qVDZ4GNCAqrEAc?6>@f'U5@/F=( +?LhC:>_-.2>_-/Q?1M>$?i+71@JaO2AH$0>C&VlHC]85NDuObUG5cacI/\WpKDpW)N;en;P5^mKSGo2\ +VZ*XqYl;'0\c0;D_nuJlrl>#^rmC_qrn.5,ro!e9rosFJrpKdSrpp'\rq??crqZQirql]mq#5jEkl:GW +rqucmrqcWirqQKdrq-3\rpTjSrp0RJro=":rndY,rmh"qrlkA_rkn`Lrjr*:rilC&rhf[frg`tUrf[8A +rf$i2re(3"rd=]jrc\9\rc%jSrbMLJrb;7@rac";qdKJ3qd9#&nm/+tJR!b2RU#Mknm;<&qdBD3qdTG5 +ral(CrbDFJrbh^Rrc.p\rcnEirdXp"reCE2rf@&ArgEbUrh07fri?%&rjDa9rkABLrl>#^rmC_qrn.5, +ro!e9rosFJrpKdSrpp'\rq??crqZQirql]mq#7Mtq#:9jrql]krqZQgrq??`rpp'WrpKdOrosFBro*k5 +rn.5#rmC_hrlG)VrkABCrjDa0ri?$qrh07\rgEbKrf@&;reCE)rdXoprd"Kdrc%pW!H<#WDZ4GNCAqrE +Ac?6>@f'U5@/F=(?LhBQ>fBs!>_-/W>kMCn?N+=/@/aU3@f'^8Ac?ECCAr#JDZ4SREW1.\GlE*iJ,Y*" +LAm/2O8b=ARJr`UT`1hfX8]@&[Jm`9^Ac%La8X<^dJh\qf`'b,i;Vd9l2L#Jmf)\So)A:\pAXgcq>U6i +qu6NgrltJ>s7lTmr;QTmqYp\2oj72pJR"sTJR"aN +oj.,p!+,b6?i+71@JaO2AH$0>C&VlHC]85NDuObUG5cacI/\WpKDpW)N;en;P5^mKSGo2\VZ*XqYl;'0 +\c0>B_u@^Ubl6#hec+5#hYuI4j8SOn,DnWo`"R`p\t!fqYpBkr:p8ls2Y07rr2ipqu6Hkq>U0g +pAX^`o)A+Wmf)POl2K`BiVq^5f`'G#dJhAhaSs*V^Ab_C[JmE0X8]!qT`1J\RJrBKO8b+;LAli)J,Xip +H2`!dEW0qVDZ4GNCAqrEAc?6>@f'U5@/F=(?LhBQ>_-.2>eaP:?1M>$?i+71@JaO2AH$0>C&ViJCMNoc +rbh^Rrc.p\rcnEirdXp"reCE2rf@&ArgEbUrh07fri?%&rjDa9rkABLrl>#^rmC_qrn.5,ro!e9rosFJ +rpKdSrpp'\rq??crqZQirql]mq#8J:`W,r:rr)iorql]krqQKerq-3\qsaUPrp'LEro="8rnIG(rmUkn +rlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^PrbDFGrb)+>rabn9 +raPG,nR-oUJRF%:Zs`Q8qdTP7qdf\;rb)4ErbDFLrbqdTrc8!ZrcS3erdFcrre(3*rf$i;rfd>Irgj%] +rhKInric=,rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]mrr)`nYlF_%rr)io +rql]krqQKerq-3\qsaUPrp'LEro4"9!T2f6g]#h(e,I_nbPoQ]_#D"G\c/o6Y5YL$U]-qcSc4rSPQ$XB +N;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*r_@"D^:@%Ld!@JaO5A,Bg9Ac??AC&VlH +D>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X9]d/MMnfDaP(hu;X7 +jo4QEm/-;OoD\@^pAt$_rqZQirql]mrr)`nYlF_%rr)iorql]krqQKerq-3\qsaUPrp'LEro="8rnIG( +rmUknrlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^PrbDFGrb).? +!+l.?qd]V7nmR)WSR@"VLg^'fr*fJ3raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!#reLK3rf@&B +rg*PSrh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEfrqcWkrqucoqu3i" +!WN&urr2lqr;QTmqYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1M] +QN!*IO8b+;M#N&+JGsurHiA0eFT-=[E;jbSD>n;LB`;ZAAc?6;A,]s.@C'?m@"D^:@.I^u@JaO5A,Bg9 +Ac??AC&VlHD>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GeJa2\2#rlb;f +rmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]mrr)`nJcFX-rr2oqrqucmrqcWhrqHEarposUrpB^M +roO.>rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jS +rb_XLrb2:Dqdob;qd]V7nmRtpJRF%:MdZ3dqdTP7qdf\;rb)4ErbDFLrbqdTrc8!ZrcS3erdFcrre(3* +rf$i;rfd>Irgj%]rhKInric=,rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]m +rr)`nVuQbqrr)iorql]krqQKerq-3\qsaUPrp'LEro="8rnIG(rmUknrlb;]rkSNGrji$6riZ7$rhKIc +rgj%Srfd>Brf$i4re(3#rdFcmrcJ3_!H`G_ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*rY@(BZr@"D_P@.dt* +@fBm7AH$0>BDuWECAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$mISc5;]U].=nYPtj,\c0;A_#DCR +bPolfe,Itug]$+0ir8'=lMg/InG`%Yo`"Uaq>U6iqu6NmrVQT:s.B>jrr2lqr;QTmqYp9hp\sgao)%qU +mJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1M]QN!*IO8b+;M#N&+JGsurHiA0eFT-=[ +E;jbSD>n;LB`;ZAAc?3@@q5IIraPG,JRFgPJRFLGojIi0r*oY8qdf\;rb)4ErbDFLrbqdTrc8!ZrcS3e +rdFcrre(3*rf$i;rfd>Irgj%]rhKInric=,rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3a +rqZQirql]mrr)`nW;j^6rr2oqrqucmrqcWhrqHEarposUrpB^MroO.>rnm_0rn%.urm:Yfrl>#Rrk/6@ +rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jSrb_XLrb2:Dqdob;qd]V7nmV3!JRF%: +JRG]iojR`,raYh9ral(Arb;@Hrb_XQ!H;uXE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=% +ZMqE6^&GhHa8X9]d/MMnfDaP(hu;X7jo4QEm/-;OoD\C]p\t!fqYpBkr;QZlrlG,Ys8N#prVl`oqYU*f +p\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli) +J,XorHiAnANC]8)GC&Vf4BDuNAAV"EDAV"F1Ac$*1BDZBAC&;ZEC]8/LD>S5M +E;jkVF8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9 +k5OTDmJcSRnG`(Zp&=^bq>:$cr;QZlrilG%rqlZnr;QQiq>U-fpAX^`nG_kTmJc>KjoFEBj5^-srnRM+ +rmLelrltG^rkeZLrji$9rilC&rhf[hrh'1Yrg3VGrf6u:reCE)rdXorrd4WircS3^rc.pVrbqdRrb_XN +rbMLJqe?%Clt?<0P@];VJRtrpqe#D3qe5tCqeH+GrbVRNqelCPrc.pYrcS3crd4WnrdXp"reCE2rf6u> +rg3VRrh'1arhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rq?Eg!VuQgqYU3i +rVQSus8N#prVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=h +TDk;YQi<*GNrG":LAli)J,XorHiArg3VRrh'1arhoarrilC0rji$C +rkn`TrltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`nYl=b'rW)rprVl`oqYU*fp\smc +o`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,Xor +HiAnANC]8)GC&Vf4BDuMXAV"EDAV"FiB(BU3B`;`CCAr#JD#S;KDZ4VSEW1%Y +FoH[cHiAKnJ,Y*"LAm/2NrG.>Qirg3VR +rh'1arhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`nVuQbq +qu-NlrqcNfrqHEcrq-3ZrpKdQroj@Dro="9rnRM+rmLelrltG^rkeZLrji$9rilC&rhf[hrh'1Yrg3VG +rf6u:reCE)rdXor!.+`nHiAnANC]8)GC&Vf4BDuLoA]853AV"FiAc$*1BDZBA +C&;ZEC]8/LD>S5ME;jkVF8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=6^ +d/MJmg&Be+i;Vd9k5OTDmJcSRnG`(Zp&=^bq>:$cr;QZlrlY85s8N#prVl`oqYU*fp\smco`"@Zmf)VQ +kl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiAnANCB80b!,DCFrb1Y2rap^mULf!fSRq\1nn7i5!,2IJC&;ZEC]8/LD>S5ME;jkVF8g=] +H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTDmJcSR +nG`(Zp&=^bq>:$cr;QZlri#k5s8N#prVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^ +_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiAnANC]8)GC&Vf4 +BDuLoAV"EDA\VgRB(BU3B`;`CCAr#JD#S;KDZ4VSEW1"[F`d\,rd"KirdOirre(3)rf$i:rfI,GrgWnZ +rhBCiri?%&rjDa9rkJHMrl4r^rm:Ymrn7;+ro!e9roX4DrpB^Rrp]pZrq69brqZHfqu$Hlqu4\:`W,i7 +rr)ioqtpBhrqQKdrq-3\rp]pTrosFGroX4=rnm_1rmq(trm1Sdrl4rSrk8<@rj;[.ri?$srh9=_rgWnP +rfd>Brf$i5reCE'rdXoqrd+Qgrce?`rcA'Zrc.pVrbqdRqec=Knn\5>pM#1mJSB[L^hN[\okXG@rb_OM +rbqdTrc.pXrcA'\rce?erd+QlrdXoureCE.rf$i;rf[8GrgWnYrh9=iri?%%rj;[8rk8nABC]8(.Bn9uLBrYnEC@uB>D#S;KDZ4SRE;jkVErL.ZFT-L`H2`-hIK"`q +Jc:E'M#NA4O8b=AQ2[9PT)PG_W;`jsYPtp.\c0;A_Z%RSb5T`de,Iqth#?10iVr!=kPj`Fmf)_To)A:\ +pAXgeqY^3hqu6NmrV6Ars82fprVl`lqu6Hkq#:!do`"F\nG_kTl2KoGk5O?=hu;F1f)F.tci2)d`rn(e,I\mb5TE[_Z%7J\Gil7YPtU%W;`LiT)P5Y +Q2[!HO8b+;M>i8/Jc:/uIK"QlGlDpdFT-@\ErL(XE;jeTDYn;MD";B@C:S&0Bn9uLC&ViDC@uB>D#S;K +DZ4SRE;jkVErL.ZFT-L`H2`-hIK"`qJc:E'M#NA4O8b=AQ2[9PT)PG_W;`jsYPtp.\c0;A_Z%RSaoTi7 +!71Ynrmq)(rndY5roX4CrosFMrp]pXrq-3`rqQBerql]mrr)WkJcFX-qu6TnrquZjrqcWhrq??`rpp'X +rpKdMroj@Dro*k6rnRM(rmUkmrlY5[rkeZJrj_s7ric=%ri#girgs+Yrg!JHrf@&;re^W/rdk&urdFcl +rcnEdrcJ-\rc8!Xrc%jTrbhUMrbV.@rbA*?JSB[LQYH>3okXG@rb_OMrbqdTrc.pXrcA'\rce?erd+Ql +rdXoureCE.rf$i;rf[8GrgWnYrh9=iri?%%rj;[8rk8Brf$i5reCE'!.P$!J,XlqHN&0gGQ)^`F8g4ZEW0qVDuOYOD>nAB +C]8("BtnA5Bn:!nC&;ZS5MDuO_TEW1"XF8g:\GQ)meHN&?lJ,Y#uLAm#.N;en;P5^aGS,T#Y +U&M"iX8]=%[/RW8^&GnJ`r=-[ci2Dmf)FJ(hYuL5k5OQCl2L,MnG`"Xo`"R`q"spequ6NmrV6B7s.B>g +rr2lqr;6BjqYp9hpAX^`o)A.Xmf)JMkl0`DiVqa6h#>n(e,I\mb5TE[_Z%7J\Gil7YPtU%W;`LiT)P5Y +Q2[!HO8b+;M>i8/Jc:/uIK"QlGlDpdFT-@\ErL(XE;jbVDJfGlqec=Knn\5>JSCZhJSCQeqeGe>qeQ7L +!Gu]NDZ4SRE;jkVErL.ZFT-L`H2`-hIK"`qJc:E'M#NA4O8b=AQ2[9PT)PG_W;`jsYPtp.\c0;A_Z%RS +b5T`de,Iqth#?10iVr!=kPj`Fmf)_To)A:\pAXjaqYpBkr;QZiri#k5s82fprVl`lqu6Hkq#:!do`"F\ +nG_kTl2KoGk5O?=hu;F1f)F.tci2)d`rnABC]8)GBn9uLBn:!2C&;ZS5MDuO_TEW1"XF8g:\GQ)jg +H?oR;rdFcqrdk''reUQ4rf@&Arg!JPrgs+_ri#gsric=.rji$ArkeZSrlY5drmUktrnRM0ro*k=roa:F +rpKdTrpp'\rq??dqtgd7h +TDk>ZQi<6KOT(7=MuJG0KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDi/F`DLl]$DYnAOE;jeNE;jkS +ErL.ZFT-I_GQ)meI/\QkJGt3#L&R#0NrG.>Pl@$KS,T&ZUAh"gXo>R(ZMqH7^&GhH`r=*ZcMl5jec+5# +hu;U6j8S9Al2L&Kn,DkVoD\F^p\spfq>pHhrql]mrr)`nVuQbqqu-Nlrql]krqQKdrq69^rpp'Wrp9XL +roj@Aro*k6rn.5#rmC_jrlY5[rkSNHrjr*7ric='rh]Uhrh'1Zrg3VKrfI,=repc0re()urdOiord"Kf +rc\9_!HW;^F8L"WEVOMPDuO_QDh2f!DLl\cDYnAOE;jbUE;=JPEVjeUF8g:\G5c^bH2`3jIJ\QoKDpT( +MuJb9OT(LDQidUrYl:s-])KDB_#D@Qao9TbdJh\qf`'e-iVqm:kl0iGm/HJQnc&.Zp&=^b +q#:-hqu6NmrVQSmrrE)urqlZnr;QTmqYp9hpAXaaoD\=[n,D\QlMg#Hj8S$:hu;:-ec*tqcMkuc`r0rU]-nbS,ScRPl?dDNW+k8L&Q`%JGt#sI/\EjGlDmcFT-@YErL(RE;jeTE;OR^DLl\V +DLl^#DYnAOE;jeNE;jkSErL.ZFT-I_GQ)meI/\QkJGt3#L&R#0NrG.>Pl@$KS,T&ZUAh"gXo>R(ZMqH7 +^&GhH`r=*Zc2l>?!7Cerrn.5-ro*k:roj@Grp9XQrpg!Zrq69brqQKhrql]mrr)`nJcF=$rr2fnrqucm +rqcWhrq??arq$-[rpTjQrp'LHro=":rnm_-rmh"qrm(Mcrl4rQrk8dUrYl:s-])KDB_#D@Qao9TbdJh\qf`'e-iVqm:kl0iGm/HJQnc&.Zp&=^bq#:-hqu6NmrVQT4 +s.',grqlZnr;QTmqYp9hpAXaaoD\=[n,D\QlMg#Hj8S$:hu;:-ec*tqcMkuc`r0r +U]-nbS,ScRPl?dDNW+k8L&Q`%JGt#sI/\EjGlDmcFT-@ZEWC.ZEVOMPDuO_QDh2epDLl\iDYnAOE;jeP +Dujosrc.gUrcA'\rc\9brd"KjrdFZore(3(repc9rfI,Drg3VRrh'1arh]UrrilC-rjr*BrkSNQrlP/b +rmC_qrn.5-ro*k:roj@Grp9XQrpg!Zrq69brqQKhrql]mrr)`nUAqt-rr2fnrqucmrqcWhrq??arq$-[ +rpTjQrp'LHro=":rnm_-rmh"qrm(Mcrl4rQrk8Pl@$KS,T&ZUAh"gXo>R(ZMqH7^&GhH`r=*ZcMl5jec+5#hu;U6j8S9Al2L&Kn,DkV +oD\F^p\sseqYpBkr;QZlrke]Ps8N#mrVl`oqu6Hkq#:$eo`"F\nG_nUm/H>MkPjQAi;VU4g]#k)dJhJk +bl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniRPl?gEO8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpd +G5HFPFFeObFFeP@FT-F^G5c^_GlE!fHN&9jI/\QnIf=irJGt3#L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hf +WW'("Z2V01\c0AC_Z%ORbl5oedJhetgA]t.i;Vg:kPjfHmJcSRnG`%Yo`"Uaq>U6iqu6NjrVQSls8N#m +rVl`oqu6Hkq#:$eo`"F\nG_nUli?>Plg+Q5roF(:rndY/rn.4trm1Sfrl+lRrkJHCrjMg2riZ7#rhf[f +rgs+Zrg*PJrfR2@rf$i6reCE*re(3#rdXorrdFcnrd4Wjrd"Bcrce?bqfR[9JTQHbSojsSrc\9bqfr*c +rd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJrg`tZrh07fri,n"riuI1rji$CrkeZRrlkAermC_t +rn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQi!;cfoqu6NjrVQSls8N#mrVl`oqu6Hkq#:$eo`"F\nG_nU +m/H>MkPjQAi;VU4g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniRPl?gEO8b+;MZ/A0K`6W' +JGt&tIf=`rI!bpArd4Wjrd"Bcrce?bqfRI3STKF)LiiW=rcS9c!I&bbGlE!fHN&9jI/\QnIf=irJGt3# +L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'("Z2V01\c0AC_Z%ORbl5oedJhetgA]t.i;Vg:kPjfHmJcSR +nG`%Yo`"Uaq>U6iqu6NjrVQSmrrE)urqQHkr;QTmqYp9hp\sgao)A.Xn,D\Qli-)HjSn*:hYu:/f`':t +ci2/f`W!aR^](eC[f3Q2Y5YI#VZ*7fT)P8ZQN!-JOoCF@N;e_6LAll*KDpE#J,XorIK"WnHiA?jH2Djc +GQ)d_FgH1@FFeObFRjPQFoHR`GPcXaH2`-hHiAElIK"]pJ,XutKDpT(LAm)0N;en;OoCUEQN!ERT)PD^ +VZ*RoY5Y^*[Jm`9^])+L`W"*\cMl2lf[p2Vrn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-Ek +JcF=$rr2]krqucmrqcWhrqHEarpp'XrpTjQrp0RHroF(:rndY/rn.4trm1Sfrl+lRrkJHCrjMg2riZ7# +rhf[frgs+Zrg*PJrfR2@rf$i6reCE*re(3#rdXorrdFcnrd4Wjrd"Bcrce?bqfS?LJTQHbMfer@rc\9b +qfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJrg`tZrh07fri,n"riuI1rji$CrkeZRrlkAe +rmC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-EkT)\fhq#13irql]krqQKerq-3\rp]pU +rp9XMroa:Aro!e4rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sprh07^rg`tRrfmDErf7&U6iqu6NjrVQT4s.',grqQHkr;QTmqYp9hp\sgao)A.Xn,D\Qli-)HjSn*:hYu:/f`':t +ci2/f`W!aR^](eC[f3Q2Y5YI#VZ*7fT)P8ZQN!-JOoCF@N;e_6LAll*KDpE#J,XorIK"WnHNAG=!.+Wi +qfr*arc\0]JTR6#JTQoorcS3`rceMkPjQAi;VU4g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up* +WrAmpT`1P^SGniRPl?gEO8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpdG5HFTFFeObFFeP +rf$i6reUQ.re19&qgnWordFZkqg7XTJU2lnJU4SIrd4EfrdFZnrdb!!rdt-&reCE.reg]6rf6u>rf[8J +rgNhWrh'1brhf[rric=,rjVmZ.-eGdkpci2&c`rP5^jJRf8lWTDkVbVZ*[rYPtj,\,Nu<^Ac"K`r=*Zci2AleGe2$h>Z@3 +jSn<@l2L)Lmf)_To)A:\p&=acq>U3jr;?KlrV6Ais7lTjrVl`oqYpN;e_6M#N/.K`6T$JH18u +J,XlnI/A8AHC&r/HA-\EHN8HhI/\QkJ,XutJc:9#K`6`*M#N;2N;ek:OT(FBR/WQRSc58\U]..iXT#F& +ZMq?4])KGC_Z%RSao9Wcdf.bqgA]q-i;Vg:k5OWEmJcPQnG`"Xo`"O_q#:*gqYU3irV6AjrrE)orqlZn +r;QQlq>U0gp&=U_o)A.Xmf)VQl2KlFjSn*:h>Z.-eGdkpci2&c`rrf$i6reUQ.re19&qgnWordFZkqg4QRJU2ln +LjK&IpjE'hqg\Tqrdk'#re19*reUQ2rf$i:rfI,Brg<\Rrgj%\rhKIiriH+&rj)O4rjr*CrkeZSrlP/c +rmLeqrn@A-ro!e:roX4ErpB^Qrp]pXrq-3_rqQKgrqcNirr)WkT)\Tbqu-NlrqcWirqQKcrq-3\rp]pT +rpB^Lroa:Aro!e3rn@A$rmC_krlP/ZrkeZKrjr*N;e_6 +M#N/.K`6T#JbsrrIJ\EhH\$LLH@^BnHKfbTHh`!fIJ\NnJGt-!K)UH&LAm#.MZ/S6NrG.>P5^jJRf8lW +TDkVbVZ*[rYPtj,\,Nu<^Ac"K`r=*Zci2AleGe2$h>Z@3jSn<@l2L)Lmf)_To)A:\p&=acq>U6fr;QZi +rl"i,s7lTjrVl`oqYpN;e_6M#N/.K`6T#Jc'utJ,XlnI/A8AHBEN)HAd+KHhr*jI!kpAqg\Tq +rdk'#re19*reUQ2rf$i:rfI,Brg<\Rrgj%\rhKIiriH+&rj)O4rjr*CrkeZSrlP/crmLeqrn@A-ro!e: +roX4ErpB^Qrp]pXrq-3_rqQKgrqcNirr)WkUAqt-q#:0hrquclrqZQgrq69_rpp'XrpKdQrosFFroF(: +rn[S-rm^qprm1Scrl4rSrkABCrjVm4ric=&rhf[irh'1\rgNhRrf[8Brf6u:reg]2reCE*rdt#uqg\Tn +qgA9fms9P2JU2lnXa9tnpjE'hqg\Tqrdk'#re19*reUQ2!K;s;N;ek:OT(FBR/WQRSc58\U]..iXT#F& +ZMq?4])KGC_Z%RSao9Wcdf.bqgA]q-i;Vg:k5OWEmJcPQnG`"Xo`"O_q#:*gqYU3irV6B/s1JC2rqlZn +r;QQiq>U-fpAX^`nc&%Wn,DVOkl0`Dir7j7h>Z%*ec*tqci2)da8WpS^](nF[f3W4YPtX&W;`XmT`1P^ +Sc5#UQ2[!HOT(=?NrFt9MZ/G/L&Qc)K):,lJF7oiG4NrG+=OT(IC +QN!9NSc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^b +q>:$cr;QZlrgs/hrqlZnr;QQiq>U-fpAX^`nc&"XmfDnGrp'LHroX4>rnm_2rn%/"rmC_krlY5\rk\TK +rk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUH*re19&qgnEjKR\Q&JUaACnpp^jqh"]u +re:?-re^W4rf6u=rfI,Crg*PNrgj%\rh07eri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r!rn[S3ro3q> +roj@HrpTjUrpg![rq69brqZHf!;ucmrr)`nT)\fhqu-NlrqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2 +rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUK+!/:E*rdt#u +omhUCRX]m#]rm1Skrm^r!rn[S3ro3q>roj@HrpTjUrpg![rq69brqZHfqu$Hlqu3GlqZ$Qoqu-NlrqcNfrqHEc +rq-3[rp]pUrp'LHroX4>rnm_2rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>C +rf@&=repc5reUH*re19&qgnEjY^_4RJU`6#omcO_rdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_ +rh]UmriH+&rj2U4rk/6Erk\TSrlb;ermC_prmq2,h#Q:1i;Va8k5OTDlMg8OnG_tWo`"O_p\t!cqYU3i +rVQSFs3:TCrqlZnr;QQlq>U3hp\smco`"C[nG_nUlMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A= +Zi70-XT#0tV>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=P[It<*#Iu]$LJGt,sK):6#L&Qo- +M>iG4NrG+=OT(ICQN!9NSc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lH +n,DhUnc&1[p&=^bq>:$cr;QZlrg!N_rqlZnr;QQiq>U-fpAX^`nc&%Wn,DVOkl0`Dir7j7h>Z%*ec*tq +ci2)da8WpS^](nF[f3W4YPtX&W;`XmT`1P^Sc4uVPl[/8rfd>Crf@&=repc5reUH*re19&qgnEjJUb+X +JU`6#msjnYrdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TSrlb;e +rmC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)`n_>fi$rr2fnrquclqt^6crq??`rpg!W +rpTjOroj@Dro3q7rn[S*rmh"qrm1Sdrl>#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9 +reg]2qh>$&!J5n'K):,lJ:W37It<*3J+A*iJH:=Qqh"]ure:?-re^W4rf6u=rfI,Crg*PNrgj%\rh07e +ri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r!rn[S3ro3q>roj@HrpTjUrpg![rq69brqZHfqu$Hlqu35f +\GuR-qu-NlrqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*t +rh]Uergs+[rg<\Mrfd>Crf@&=repc5reUH*re19&qgnEjnpc4?JU`6#Z[_Orrdjruqh4s&reUQ1repc9 +rf7)AO8tCAPQ$mIR/WZUTDkM_V>dFmXT#F&Zi7E4]`,YE_>_LSbPoiedJhYpfDaV*i;Va8k5OTDlMg8O +nG_tWo`"O_p\t!cqYU3irVQT/s1/1/rqlZnr;QTmqYp9hp\smco`"FYn,D\QlMfrFj8S!9hYu:/f`'=u +d/M>iaSs0X_>_1J]Df>>ZMq*-Y5YF"VZ*@iT`1P^Sc5&VQi<9LP5^UCO8b7?NrG%;N;eb4MZ/J3M#2tt +L4P)1L4P)dLAlu-M#N8.MZ/P5N;eh9NrG.>O8b:@P5^aGQi_FQaSsKad/MJmf`'V(hYuI4jSn<@lMg/In,DnWo`"R`p\sseqYpBkr;QZlrg!N_rqlZnr;QTmqYp9h +p\smco`"C]n,2YRm/H;Lk5OE?i;VU4g]#k)df.VmcMkoa`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[ +RJrQPQ2ZsGOoCF@OT(:>NW+n9Mu/D2M>i>.LPLV8L4P)NLAlu-M#N8.MZ/P5N;eh9NrG.>O8b:@P5^aG +Qi_FQaSsKad/MJmf`'V(hYuI4jSn<@lMg/In,DnWo`"R` +p\sseqYpBkquHZrrVcWmQ2gj_qu-Nlrql]krqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Ma +rl+lQrkABDrj_s5rilC)ri,morhKIcrgs+[rgEbPrg!JGrfR2@rf@/@NW>+=NW+n9Mu/D2M>i>.LOk2N +L4P)8LAlu-L]E84M2D+erepc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJ +rl+lXrm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\rq??crqQKhrql]mrr)`nTE"Zcrr2fnrqucmrqcWh +rqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%V +rg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,Z\F$cJVJ`1nqR.!reUQ1qhkB2rf$i9rf6u>rf@&@rf[8G +rg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rn[\6huM^7jSn<@lMg/In,DnW +o`"R`p\sseqYpBkr;QZlrdk*fs8N#prVl`oqu6Hkq#:$epAX^`o)%nTm/H;Lk5OE?i;VU4g]#k)df.Vm +cMkoa`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[RJrQPQ2ZsGOoCF@OT(:>NW+n9Mu/D2M>i>.LRNsK +L4P);LAlu-M#N8.MZ/P5N;eh9NrG.>O8b:@P5^aGQi_FQ +aSsKad/MJmf`'V(hYuI4jSn<@lMg/In,DnWo`"R`p\sseqYpBkr;QZlrf$mVrqlZnr;QTmqYp9hp\smc +o`"FYn,D\QlMfrFj8S!9hYu:/f`'=ud/M>iaSs0X_>_1J]Df>>ZMq*-Y5YF"VZ*@iTE(PaSt>qPrgEbP +rg!JGrfR2@rfI,>rf-o9repZ2re^W1qhK`W\V>ZiJVNNGreLK/re^N0repc7rf-o;rfI,?rfR2Crg!JL +rgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJrl+lXrm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\rq??c +rqQKhrql]mrr)`n]Dn)prr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)X +rk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;!K;s;N;eb4MZ/J3M#2sYL6mXG +L5q#fL]3,/M>`;4MMhCkrf$i9rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQ +rlG)arm:Ymrn.5(rndY4roF(@rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu3#`[K$7*qu-Nlrql]krqQKe +rq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Marl+lQrkABDrj_s5rilC)ri,morhKIcrgs+[rgEbP +rg!JGrfR2@rfI,>rf-o9repZ2re^W1qhOj!JVJ`1JVLC`reLK/re^N0repc7rf-o;rfI,?rfR2Crg!JL +!L]>URJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nugA]t.i;Vg:k5OZFm/-8No)A:\ +pAXgcq#:-hqu6NmrVQT)s1/1/rqlZnr;QTmqYpZ.-f)F.t +d/M8gao9?[_>_4K]`,G?[JmH1YPtU%WW&doV#I(eTDkA[S,SiTR/WENPl?mGP5^UCOT(=9NqeV+N.Hq= +N.Hr!N;/D-NrG+=OT(CAP5^[EPl@!JQi_LSao9N` +d/MPof)FD&h>Z@3jSn<@kl0rJmJcVSo)A:\p&=^bq#:*gqYpBkr;QZlrg!N_rqlZnr;QTmqYp#SrkJHFrj_s8riuI+ri?$trhf[jrh9=` +rg`tWrgEbQrg*PJrfd>ErfR2Arf?i7pl1/iJW,/=Ul>).pl>?7rfI,Arf[8ErfmDJrg3VPrgWnXrh'1` +rhTOjri,muric=+rjDa8rk/6Erk\TSrlP/`rm:Yormq)&rn[S3roF(@roj@JrpB^Srpp'\rq69brqQKg +rqcWkrqlcp!WDuorg!N_rqlZnr;QTmqYpZ.-f)F.td/M8g +ao9?[_>_4K]`,G?[JmH1YPtU%WW&doV#I(eTDkA[S,SiTR/WENPQ?u3!0dDFrfR2Arf?i7pl0i`TT"G\ +NfGrg*PMrgEbTrgj%\rh9=erhf[oriH+&riuI1rj_s?rkABJrl>#[rlkAg +rm^qurn@A-ro!e:roX4Drp9XOrp]pXrq-3_rqHEerqZQirql]mrr)`nTE"Zcrr2fnrqucmrqcWirqQKe +rq69_rpp'XrpKdProj@DroF(:rn[S-rmq(trm:YgrlP/[rk\TKrk/6?rjDa1ric=%ri,morhTOerh'1[ +rgWnTrg<\NrfmDGrf[8CrfI,?pl>-/[Z#crJW,/=pl,!-pl>?7rfI,Arf[8ErfmDJrg3VPrgWnXrh'1` +rhTOjri,muric=+rjDa8rk/6Erk\TSrlP/`rm:Yormq)&rn[S3!T`;AjSn<@kl0rJmJcVSo)A:\p&=^b +q#:*gqYpBkr;QZlrdk*fs8N#prVl`oqu6Hkq>U0gp\sjbo`"F\nG_kTm/H5Jk5OH@i;VR3gA]\&e,I_n +bl5``a8WpS^](nF\Gio8Z2Us+X8]*tVZ*CjU&L\`SGo#WRJrTQQN!-JPQ$aEOoCIAO8+b1NLc#ZN.HqM +N;/D-NrG+=OT(CAP5^[EPl@!JQi_LSao9N`d/MPo +f)FD&h>Z@3jSn<@kl0rJmJcVSo)A:\p&=^bq#:*gqYpBkr;QZlrf$mVrqlZnr;QTmqYpZ.-f)F.td/M8gao9?[_>_4K]`,G?[JmH1YPtU%WW&apU]I9erh9=`rg`tW +rgEbQrg*PJrfd>ErfR2Arf?i7pl0i`]SqE#JW0/Ypl5'/rf@&?rfR2Crfd>Grg*PMrgEbTrgj%\rh9=e +rhf[oriH+&riuI1rj_s?rkABJrl>#[rlkAgrm^qurn@A-ro!e:roX4Drp9XOrp]pXrq-3_rqHEerqZQi +rql]mrr)`n]Dn)prr2fnrqucmrqcWirqQKerq69_rpp'XrpKdProj@DroF(:rn[S-rmq(trm:YgrlP/[ +rk\TKrk/6?rjDa1ric=%ri,morhTOerh'1[rgWnTrg<\NrfmDGrfR;EOT:OCOT(=9NqeTbN1,]VN0K:r +NVJM6Nrb<&rfI,Arf[8ErfmDJrg3VPrgWnXrh'1`rhTOjri,muric=+rjDa8rk/6Erk\TSrlP/`rm:Yo +rmq)&rn[S3roF(@roj@JrpB^Srpp'\rq69brqQKgrqcWkrqucoqu3#`[K$7*qu-Nlrql]krqZQgrqHEb +rq-3\rp]pTrp9XJroX4@ro!e3rn@A&rmUknrlkA`rl>#SrkJHFrj_s8riuI+ri?$trhf[jrh9=`rg`tW +rgEbQrg*PJrfd>ErfR2Arf?i7pl5'-JW,/=JW.$rpl5'/rf@&?rfR2Crfd>Grg*PMrgEbTrga(^T)bM_ +U&LkeVZ*RoXT#F&Z2V01\Gj/?^AbtJa8X3[bl5ugeGe%ugA]q-i;Vg:k5OTDm/HDOnG`"Xo`"O_p\sse +q>U6iqu6NmrVQT)s1/1/rqQHkr;QTmqYproj@HrpTjUrpg![rq69arqQKgrqcWkrquZlqu2l\rr2]krqucmrqcWirqQKdrq-9` +!VH$`nc&%Wn,DVOkl0`Dir7m8hYu4-fDa;!d/M;hbPoK[_u@FM^Ab_C\,N`5Z2Us+X8]-uW;`RkUAgea +T`1P^SGnuVRJrTQQi<Onb+7PQ$jHQN!6MR/WNQRf8iVSc5;]TDkP`U].4k +WW&stYPtg+Zi7H5])KGC^])+L`W"'[cMl2ieGe%ug&Bk-i;Va8k5OTDlMg8OnG_tWo`"O_pAXjdq>U6i +qu6Nlr;llqqu2l\rr2]krqucmrqcWirqQKdrq69_rpg!WrpTjOroj@Dro3q8rndY-rn%/!rm:Yhrlb;[ +rkn`MrkABCrjVm5riuI+ri?$uri#gkrhBCarh07^rg`tV!L]>URJrTQQi<kl0lHn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirh'5bs8N#mrVl`oqu6Hkq>U0gpAXaa +o`"C[nG_nUlMg#Hk5OB>i;VU4g&BV&eGdhoc2Poc`W!dS^](tH])K2ro!e4rn7;&rm^qorltGcrl+lSrkJHHrjr*U6iqu6Nj +rVQT+s-*K^rqQHkr;QTmqYpkl0lHn,DhUnc&1[p&=[aq#:*gqYpBkr;6HirgEeos8N#mrVl`oqu6Hkq>U0gpAXaao`"C[ +nG_nUlMg#Hk5OB>i;VU4g&BV&eGdhoc2Poc`W!dS^](tH])K2roj@HrpTjUrpg![rq69arqQKgrqcWk +rquZlqu4/+ZiC%(qu-NlqtpBhrqHEcrq69^rposTrp9XLroX4?qr%J0rn@A%rmUkmrm(MdrlG)Vrk\TK +rk/6@rjVm5riuI+riQ1$ri5sprh]UirhKIeqk3_VrgrnUnXTNIJX_C`JXalQl(%XArgs"Zpn7V[rhKIg +rh]Ukri5suriQ1'riuI/rjVm_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:iU]."bT_P/YT(nlCS=H("Rt7';S*?I?Sc55XTD5)Y +U&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA^])(K_u@aVb5T]cci2Alec+;%h#$%/jSn<@lMg/In,DkV +oD\F^pAXg`qYpBhr;QWprqubSs8N#prVl`lqu6Hkp\smcp&=R^o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:iUB.*`!2B@`pn.PWpmpcAJX`s7JX`=%l(%XA +!1j4_T)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg: +k5OZFm/-8Nnc&.Zp&=[ap\XgdqtpZ.-ec+%sci25hbPoT^_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I.gUALVYTDkGWSa;lfRt7&[ +Ru3^"SGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n) +i;Vg:joOc4!:'RMqsXOSrq$-^rq??cqtg_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:i +U]."cTE(Y[TDkGWSa;ktS#i*1S#2\>SGSlVT)G8^T:bnOrh9=drhTOirhf[pri?%#ric=+rj2U5rjr*A +rkJHKrkn`VrlY5crm1Slrmh#%rnRD/roF(@rp'LLqsXOSrq$-^rq??cqtgO' +Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\XgdqtpF$X8]*tW;ELlVYd4hV"g_aU@b.1Tn/ngTt6rpUAL_bV#."fVYd:jW;`dq +X8]4"Xo>O'Z2V'.[JmZ7\Gj/?^AbqI`;[dUaSsE_cMl2iec+2"g&Be+hYuL5jSn<@kl0rJmJcVSnc&.Z +o`"R`p\sseqYpBhr;QZirf$mSrr2lnr;QTmqYp9hpAjmfp@eLXrq$-Zrp]pTrp9XJroX4@ro*k6rnRM+ +rn%/"rm:YirlkA_rl4rUrkSNIrk/6?rjMg6rj)O-ric='riH+"ri,mqqksFjqka:fpnRh_MP5TpJYAm5 +qkEt_rhTFfrhfRjri#gqri?%"riQ1'riuI.rjDa7rj_s?rkABIrl"fUrlG)_rm(Mirmh#"rn7;+rndY5 +roF(@roj@JrpB^Srpg!Zrq-3`rqHEerqcWkqu$HlrVl`oN;reSrr)`lrql]krqQKerq??`rq$-Zrp]pT +rp9XJroX4@ro*k6rnRM+rn%/"rm:YirlkA_rl4rUrkSNIrk/6?rjMg6rj)O-ric='riH+"ri#psVuWdn +VuERjV>d:cU].!=TqJ*1ToPiDUAL\cU]I9eqka:hqksFlri,mtriH+$ric=+rj)O2rjVm:rk/6ErkSNO +rl4rYrlkAerm:Yprn%/&rnRM0ro*k;roX4Drp9XOrp]pWrq$-]rq??crqQKhrqlTjrr)WkSH&-Zqu6Tn +qu$HjrqcWhrqHEcrq-3]rpg!WrpKdProj@DroF(;rnm_1rn7;&rmh"prm(MerlG)Yrl"fOrkABErj_s9 +rjDa2rilC*riQ1$ri?$tri#^lrhfRhrhT=arh?ipJY@XgJYDk4qkEt_rhTFfrhfRjri#gqri?%"riQ1' +riuI.rjDa7rj_s?rkABIrl"fUrlG)_rm(Mirmh#"rn7;+rndY5roF(@roaCLli?DOmJcVSnc&.Zo`"R` +p\sseqYpBhr;QZirdk*]s82fprVQNlqu6Hkq#:$epAX^`oD\:ZnG_kTm/H5Jk5OH@iVqa6h#?"+fDa>" +d/M>ibl5]_`rd:cU].!YTn/ngTol&GUAL_b +V#."fVYd:jW;`dqX8]4"Xo>O'Z2V'.[JmZ7\Gj/?^AbqI`;[dUaSsE_cMl2iec+2"g&Be+hYuL5jSn<@ +kl0rJmJcVSnc&.Zo`"R`p\sseqYpBhr;QZire(7Jrr2lnr;QTmqYp9hp\smco`"I]nc&%Wmf)SPkl0`D +jSn-;hu;F1g&BV&ec*qpcMl&eaSs3Y`;[RO^AbeE\,`r<[^Q1Crj)O-ric='riH+"ri,mqqksFjqka:f +pnRh_JYB`MJY@XgntGrTqkO.dqka:hqksFlri,mtriH+$ric=+rj)O2rjVm:rk/6ErkSNOrl4rYrlkAe +rm:Yprn%/&rnRM0ro*k;roX4Drp9XOrp]pWrq$-]rq??crqQKhrqlTjrr)Wk\GqQgqu6Tnqu$HjrqcWh +rqHEcrq-3]rpg!WrpKdProj@DroF(;rnm_1rn7;&rmh"prm(MerlG)Yrl"fOrkABErj_s9rjDa2rilC* +riQ1$ri?$tri#am!2ognqka:fpnRh_JYAO+JYA=%qkEt_rhTLh!MuXlVYd:jW;`dqX8]4"Xo>O'Z2V'. +[JmZ7\Gj/?^AbqI`;[dUaSsE_cMl2iec+2"g&Be+hYuL5jSn<@kl0rJmJcVSnc&.Zo`"R`p\sseqYpBh +r;QZirg*Sfs82fprVQNlqu6Hkq#:$epAX^`oD\:ZnG_kTm/H5Jk5OH@iVqa6h#?"+fDa>"d/M>ibl5]_ +`rd:cU]."_Tn/ngTn/oGU&1S]U].(dV>d@h +VuEXoWW&stXT#@$YPtd-ZEaJ9rjDa7rj_s?rkABIrl"fUrlG)_rm(Mirmh#"rn7;+rndY5roF(@roj@J +rpB^Srpg!Zrq-3`rqHEerqcWkqu$Hlq#7`%YlF_%qu-Nlrql]krqZQgrqHEbrq-3]rpg!WrpTjProsFF +ro=";rnm_3rnIG)rmUkprm1Shrlb;_rl+lSrkSNJrk/6Brj_s9rjDa3rj)F*ric=(riQ1$poFCopo3na +JZ+-uJZ-/Ypo4.jqlB^triQ1&ric4'riuI/rjDa7rj_s>rk8EsX8]-oWJ[X*W.CnCW;*@hWr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No:]DfMC^])%J_u@XSao9K_ +cMl/hdJhVof`'V(hYuF3iVqm:kPj`Fli-APnG_tWoD\C]p&=^bq#:*gqYpBkr;QZlrW)tOs8N#prVl`o +qu6Hkq>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB +\Gir9[JmN3ZMUj,YHIr0riZ7&riGmqri5amJZ,6?JZ+U-po44l!NN0sX8]4"Xo>L&YPYR'Z2V*/[JmZ7 +\Gj,>^&GeG_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6i +qu6NmrVQS[s6fpdrqlZnr;QTmqYp>[f3]6Zi79-Yl:j*Y5YR&XSAjqWq`R%W.CmuW.CoBW;*@hWr&jrXT#@$ +Y5YX%Yl:p,Zi7B3\,No:]DfMC^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`FlN-JC!:TpV +rpg!Zrq-3_rqHEerqZQirql]mrr)`nJcE%Urr2oqrr)iorql]krqZQgrqHEbrq-3]rpg!WrpTjProsFF +ro=";rnm_3rnIG)rmUkprm1Shrlb;_rl+lSrkSNJrk/6Brj_s9rjDa3rj)F*ric=(riQ1$poFCopo0g_ +JZ+-uOf8&Sql9OoriH+$riZ7(qlp()rj2U3rjVm:rk&0CrkJHJrkn`SrlP/_rm(MhrmC_orn.5(rndY3 +ro*k:roa:Frp0RPrp]pWrq$-]rq69brqQKgrqcWkrqucoqu20HqZ$Qoqu-Nlrql]krqZQgrqHEbrq-3] +rpg!WrpTjProsFFro=";rnm_3rnIG)rmUkprm1Shrlb;_rl+lSrkSNJ!5&?F]`,PB\Gir9[JmN3ZMUm* +YPt^(Xo>EsX8]-oWI_"\W.CmuW:Hn^WV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!Y +bPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQT"s,-jUrqlZn +r;QTmqYp>[f3]6Zi79-Yl:j*XoYZ,!3Q7%poFCopo/hCR](e9Pc4AVql9Uq!NW:#XT#@$Y5YX%Yl:p,Zi7B3 +\,No:]DfMC^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`Fli-APnG_tWoD\C]p&=^bq#:*g +qYpBkr;QZlrfI/]s8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iep +ci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>EsX8]-oWVEECW.CmuW4&Z"WV`^mX8]4" +Xo>L&YPYR'Z2V*/[JmW9\@;OKrk&0CrkJHJrkn`SrlP/_rm(MhrmC_orn.5(rndY3ro*k:roa:Frp0RP +rp]pWrq$-]rq69brqQKgrqcWkrqucoqu3i"YlF_%p&4mfrqcNfqtL*`rq-3\qsXONrp0RIroX4@ro*k7 +rndY.rn.5$rmLemrm1Sgrlb;_rl+lTrkeZMqnN-Crk&0@rj_s:rjM^3rj;R/qm,dtrNLjWJZs^0_m&g= +os4S'qm?@1rjMg8rj_s=rk&0BrkJ?GrkeZPrl+lYrlb;crm1SkrmLesrn.5(rndY3ro*k;roX4Drp0RN +qsXOTrq-*]rqHEfqtg3fqu-EkKE(rMp&4mfrqcTh!VuQgp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7. +f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\Giu:[emK3[/73,ZLY8aY^s$0YcY/&Z1YF%Zhq-/ +[JmW6\,No:])K>@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAOo)A:Y +pAXgcq>:$cr;6HirW)tOs8N#jrVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$df.Vm +ci22gbPoW_`W!gT_Z%@J^](nF]DfD@\,j(J!4Vs9qmHF1qm61*o!*bMWN^rXQa$.fpTah*ZMq3-[/RK4 +[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnWo_\@] +p\t!cqYU3frVQS[s6fpdrq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b(f)F+sd/MAj +c2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z+mMoY^s$0Yk>9oZMq3-[/RK4[f3c8\Gj)= +]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Lmf;hUo)A:YpAXgcq>:$c +r;6Hirdk*Ts8N#srV6?jr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b(f)F+sd/MAjc2Poc +ao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z)4aVY^s$IYk>9oZMq3-[/RK4[f3c8\Gj)=]DfJB +^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnWo_\@]p\t!cqYU3frVQSF +s8)cprq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b(f)F+sd/MAjc2Pocao96Z_u[fp +rkeZMqnN-Crk&0@rj_s:rjM^3rj;R/qm,dtJ[!+tJZs^0qloauos4S'qm?@1rjMg8rj_s=rk&0BrkJ?G +rkeZPrl+lYrlb;crm1SkrmLesrn.5(rndY3ro*k;roX4Drp0RNqsXOTrq-*]rqHEfqtg3fqu-EkZN#g^ +rr2Thrquclqt^-`rq??`rposTrp9XMroj@DroF(;ro!e4rn@A(rmq(srm:YjrltGcrlP/Yrl"fQrkSEG +rk/6Brjr*=rjVm8!O]?6[JmQ1Zhq'!Z%9-SY^s$LYk>9oZMq01[/@<1[JmW6\,No:])K>@]`,\C_#D4M +_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6HirfI/]s8N#j +rVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF +]DfD@\Giu:[emK3[/73,ZLY8OY^s$0YeRF8Z1YF%Zhq-/[JmW6\,No:])K>@]`,\D^];1L_Z%IP`W"!Y +bPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnWo_\@]p\t!cqYU3frVQSus02OurqlZnr;6Bj +qYp9hp\smcp&=U_o)A.Xmf)VQlMg#HkPjQAir7j7hYu:/g&BV&ec+%sd/M>ic2Plbao9B\`W!gT_u@IN +^\bbE^&G\>])0&8\F-g,\$ppsK=6?>`jYHIosk"3pq$I;rk83CrkJHJrkn`Rrl+lXrlP/^rltGgrm:Yn +rmh#"rn7;*rndY3ro3qic2Plbao9B\`W!gT_u@IN +^\bbE^&G\>])0&8\Ep\m[Xkl<[]m42\+R91\bNc8]`,VA^AbnH_#D7N`;[aTaSs<\b5TZbci2;je,Ins +fDaJ&g]$(/hu;X7jSn?Al2KuImJcPQnG`"Xo`"O_pAXgcq"speqtpic2Plbao9B\`W!gT_u@IN^\b_G +]tFEZrk/$;qmlU6m'hPSYI9"jR^VdrpUC76\Gj&6])KAA^&,PC^])%J_u@UR`W!sXao9H^c2Q&gd/MMn +ec+2"g&Bb*hYuF3ir8$"e,I_ncMl)fb5TN^aSs0X`;[[R_#D+G +^AbhF]_K)8\bio'\&Ge,[Xkl?[dpp#\Gj&6])KAA^&,PC^])%J_u@UR`W!sXao9H^c2Q&gd/MMnec+2" +g&Bb*hYuF3ir8$ic2Plbao9B\`W!gT_u@IN^\bbE +^&GYF]"7aLqmlU6m'hPSWO@AdTXOF#osk"3!4r!;rk/6DqnE'ErkSNNrl"fTrlG)\rlY5brm1SjrmUks +rn%/&rnIG/rnm_7roF(ArosFIrpB^Qrp]pXrq-3_rq??crqQBerqlTjrr)WkOT2E^q#:0hrquZjrqcWh +rqHEcrq69_rpp'XrpKdQrp'LHroa:Aro3q7rndY/rn7;&rmh"srm:YirltGbrlP/\rl+lTrkn`NrkJ?E +rk8U0gp\smcp&=U\nc&"Vmf)POl2KiEjSn3=i;VX5hYu:/g&BS%e,Iemd/M>ic2PlbaSs6Z`W!gT_u@OP +_>(hF^])%J^](t5]`Gg[J\6WJJ\9"8m(N;1rkSNJpqZmFrkeZPrl"fTrl>#[rlY5brm(DfrmLeprmq)$ +rnIG/rnm_5ro=">roX4Erp0ROrpTjUrpg![rq69arqHEerqZQirql]mq#1*hJcGTHrr2]krqucm!;Z`m +qYp!]Rd_H]Wf'8^&,PC_#D+D_#D1L_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$ +g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[p&=[ap\sseq>U6iqu6NgrVQTms+14Ls8N#mrVl`oqu6Hk +q>U0gp\smcp&=U\nc&"Vmf)POl2KiEjSn3=i;VX5hYu:/g&BS%e,Iemd/M>ic2PlbaSs6Z`W!gT_u@LR +_8-,fpqZmDrkSNJrk@X1J\82!J\7Gam(NA3!PZ;I_#D+D_#D1L_Z%IP`;[aTa8X3[b5TZbcMPufdf._p +f)F>$g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[p&=[ap\sseq>U6iqu6NgrVQSXs60L^rqQHkr;QTm +qYpM]Rd_H]S*ra^&,PC_#D+D_#D1L_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$ +g]$(/hu;R5j8S0>k5OWEli->On,DhUnH&:S!;-9`rq??crqQKgrqcWkrquQiqu20HWW2tsq#13irql]k +rqZQgrqHEcrq69_qsj[SrpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`P +rk\BFrkJHJrkJHHl+O12J\6QHS\4=&qnE'FrkJ6Drk\TNrkn`Rrl+lWrlP/^rltGfqp>>jrmUktrn.5) +rndY3ro!e9roO.ArosFJrpKdSrp]pWrq-3_rq??crqQKgrqcWkrquQiqu20Hnc/Ufq#13irql]krqZQg +rqHEcrq69_qsj[SrpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp5>g!RB!ic2PlbaSs6Z`W!gT_u@OP +_>(hF^])%J^](t3]n*i>]Rd_H]`,S1^&,PC_#D+D_#D1L_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$ +g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[p&=[ap\sseq>U6iqu6NgrVQSts+LFOrqQHkr;QTmqYp#[rlY5brm(DfrmLeprmq)$ +rnIG/rnm_5ro=">roX4Erp0ROrpTjUrpg![rq69arqHEerqZQirql]mq#1*hNW5mUrr2]krqucmrqcWi +rqQKerq??arq-*XrpTjSrp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrkeZN +pqZmDrkSNJrk@j7qn7QnLV/2N_S#6KqnE'FrkJ6Drk\TNrkn`Rrl+lWrlG2`aoKT`c2Q#cd/MJme,Iqt +f`'Y)hYuF3i;Vd9jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6friQ3us8N#jrVl`iqYp9h +p\smco`"FYnG_nUmf)POlMg#Hjo4<;i;VU4h>Z1.gA]b(ec+(tdf.Vjci25hc2PrdbPoZ`anWpU`r!a@ +`95'i_jePp_rS_\`;[aQ`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:.i;Vd9jo4KCl2L#G +mecMQoD\C]pAXgcq"X^_r;6Hirdk+>s8N#jr;c`rr;??drqQKerq??`rposUrpTjSrp0RKroj@Crokl0iGlhg,InG`%Yo`"R`p\ss_qYU3frVQSRs5j:[rq66hr:p-fq#:$epAX^`o)%qUn,DbS +li-2Kkl0]Cj87d6hYu@1g]#q+f`'G#eGdnqd/2/gcMl)fbl5fbb5TNXa8X*U`R2W[_h#^V_kP&o`;[aQ +`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:.i;Vd9jo4KCl2L#GmecMQoD\@_p@\L[rqHEe +q"jmcqu-EkJcDMFrr;usp&4mfq"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"t +rmLemqp58erltGdrlb;`rlOrUrl4iSdDWu@J]!&V]>Mq4rl+cSprEBUrlY5`rlkAdrm(Mhqp>>jrmUks +rn.5'rnIG.rndP1ro=">roj@Grp0ILqsaUVrq-3`rqHEeq"jmcrr)ipqu20Hkl:Y]p&4mfq"k!brqHEc +rq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rm_"u!S#Wudf.Vjci25hc2PrdbPoZ`anWpU`r!a& +`.>hd_h#^q_reo%`;[aQ`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:.i;Vd9jo4KCl2L#G +mecMQoD\C]pAXgcq"X^_r;6Hiri,pKs8N#jrVl`iqYp9hp\smco`"FYnG_nUmf)POlMg#Hjo4<;i;VU4 +h>Z1.gA]b(ec+(tdf.Vjci25hc2PrdbPoZ`aT9H&qT&TTqo-t$J]#=AJ]#4>cG]_$qo/WVq8`KVrlY5` +rlkAdrm(Mhqp>>jrmUksrn.5'rnIG.rndP1ro=">roj@Grp0ILqsaUVrq-3`rqHEeq"jmcqu-EkL]=.L +rr2ThrquQfrqQKerq??`rposUrpTjSrp0RKroj@CroQ5ti5?+/iVqj9jo4HBkl0lHli-;Nn,DhUnc&.Zo`"O_p\sseq>:$fqtpU0gp\sjbo`"I]nc&%Wn,D_Rm/H;Lkl0`Djo49=iVVO3h#?(-g&BY'fDa>" +eGdqrdJhMicN2>:!7(SgprrWYm)n8.J]Q!TJ]P7?j2pW0!QrRabP9<\c2Q#cci2;jdJhVoeGe"tfDaG% +g&Bb*h>?+/iVqj9jo4HBkl0lHli-;Nn,DhUnc&.Zo`"O_p\sseq>:$fqtp?+/iVqj9jo4HBkl0lH +li-;Nn,DhUnc&.Zo`"Lap\+[^rqQKgqtgnq#:0hrquZjrqcWirqQKerq69_rq$-Z +rp]pUrpB^Orp'LHroX4Aro3q9qqqD.rnIG*rn.5%rmh"trmUkorm:Pgrm(MfprrWYm)n8.a2ihQJ]P@B +j2pQ.rlb)\rltGfqp58grmC_orm^qtrn%/%rn7;*rn[J/ro*k9roO.Broj@Hrp0RNrpTjUrpg!Zrq-3_ +rqHEerqZHfrqlTjrr)WkJcFs6q#:0hrquZjrqcWirqQKerq69_rq$-Zrp]pUrpB^Orp'LHroX4Aro3q9 +qqqD.rnIG*!8%>)f`'M%ec+(te,Ibod/2/gcMl)`bkoTMb2CBmaQCQpaI1-6ans3Eb5TTZbl5ldcMPre +d/MGle,Ikrec+2"f`'S'g]$%+hu;U6ir8'=kPj]ElMg,KmJcSRnG_tWoD\C]p&=^bq#:*dqYpBhr;QZi +ri,pKs7lTjrVl`lqu6Hkq>U0gp\sjbo`"I]nc&%Wn,D_Rm/H;Lkl0`Djo49=iVVO3h#?(-g&BY'fDa>" +eGdqrdJhMici25hblQ&4qTSi[m)n8.J]PdNJ]PIEj2pQ.rlY;cq98i_rm(Derm:YlrmUkrrmh#"rn.5' +rnIG.qqqD3ro3q=roa:Erp'LKrpB^Rrp]pWrq$-]rq69brqQKgqtgU0gp\smcp&=R^o)A1Y +nG_nUmf)MNl2KoGjo4??j87g7hu;L3h#?(-g&BY'f)F5!eGI_odf.Yed-8mTc@O8lc@O9YcKrmJd/MGl +dehMmeGe"tf)F;#g&Bb*h#?10hu;R5iVqm:jSn9?kl0iGlMg5Nn,DhUnc&+YoD\F^pAXgcq#:*gqYpBh +r:p6frdk+5s8N#or;llqrquZjrqcWirqQKerq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0 +rnIG*rn.5$rmh"tqpYPmrmCDcl-GR=J^/hlXj6:Zo$IB`rmL\mrm^qtrmq)#rn7;*rnRM0rnm_5ro*k: +roF(?roj@Grp'LNrpTjUrpg!Yrq$-^rq??crqQKgrqcWkqu$6fqu66fJcGECrr2]krquZjrqcWirqQKe +rq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$rmh"tqpPSodK%_pdIklNc[jB@ +c@O9-cKrjWd.>W`dJhSke,Ikrec+/!fDaJ&g]$"-hYuF3i;V^7j8S-=jo4KCl2KuImf)\SnG_tWo)A7[ +p&=[ap\sseq>U6iqtpU6iqtpU0gp\smcp&=R^o)A1YnG_nUmf)MNl2KoGjo4??j87g7hu;L3h#?(- +g&BY'f)F5!eGI_odf.Vpd*VO6l-Fq+UX"G9S^-TJqU#&brmC_nqpYPormh#!rn%/&rnIG-rndY3ro!e7 +ro="=roO.CrosFIrpKdSrp]pWrpp'[rq69arqHEerqZQirqlTjq#1*hK`@VCrr2]krquZjrqcWirqQKe +rq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$rmh"tqpYPmrmCDcl-Fq+J^/hl +^Wu2lo$IB`rmL\mrm^qtrmq)#!SQ-+g&Bb*h#?10hu;R5iVqm:jSn9?kl0iGlMg5Nn,DhUnc&+YoD\F^ +pAXgcq#:*gqYpBhr:p6frhTRcs8N#jrVl`lqu6Hkq>U0gp\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?< +iVqa6i;VX5hYu=-g\BJ$f_a:heb%A_e:H)0dt,uue)o0Kec+1tf_F/!g\]e'hYuI4hu;R5iVqp;jo4EA +kl0iGli-8MmJHAOnG_tWo`"O_pAXgcq#:*dqYpBhr;6Hirdk+,s8N#rrV?Ekr;6BjqYpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$g&BY$fC.8Pe>:WFdt,u_e)o0Kec+1tf_F/! +g\]e'hYuI4hu;R5iVqp;jo4EAkl0iGli-8MmJHAOnG_tWo`"O_pAXgcq#:*dqYpBhr;6HirpKf;s763h +rq66hr;6BjqYpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k(g&9V'f_a:h +e`PA4e%=([e#CgYeF_;hec+1tf_F/!g\]e'hYuI4hu;R5iVqp;jo4EAkl0iGli-8MmJHAOnG_tWo`"O_ +pAXgcq#:*dqYpBhr;6Hire1=,s8N#jrVl`lqu6Hkq>U0gp\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?< +iVqa6i;VX5hYu=-g\BJ$f_a:he`PB/dt,u!e!&8CeF1refDF4qg&Bb'h##t-i;VX5i;V^7jSn9?k5OTD +l2L#Jm/HDLn,DhUnc&1[p&=[ap\sseq#U?grVHNjqu$?iqu20HRfE'\rr2ThrquZjrqcWirqQKerq??a +rq-*XqsXOOrp9XMrp'LHroX4AroEt8rnm_5rnm_3rnRD*pt>Z!qq(;ek1$oiJ^]2!XOH=]n(%Ehqq1\s +rnI>*qqh>1rnm_5ro*k;roO.Aroj@Grp0RMrpBUOrp]pWrq-3_rq??crqQKgqtgMlMg#Hk5OKA +jSRp8hu;R5hu;L3h##k$f`BaX!8.2#n($RMJ^_$UJ^^gOk1&kM!7q8'fDF4qg&Bb'h##t-i;VX5i;V^7 +jSn9?k5OTDl2L#Jm/HDLn,DhUnc&1[p&=[ap\sseq>:$fqtpU0g +p\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?uQm!9!k6ro!e7roF(?roX4DrosFJrp9XOqsXORrpg![rq69arqHEerqZHfrqlTj +qu-EkT)YD^p&=shqu$?grqcNfrqHEcrq6'Xrp]pUrpKdQrp9XLpuqV:roF(uW +V:^@OJ_7`ig=cAWptP]$rn[J/qr%A2qrIb-!8[Y0ptPf%f@b`- +]@_\eWS#qX!8@A)ptP]$rn[J/qr%A2qrIbU-fpAXa[oD\7Yn,DbSmJcJOlM0T?jo4??ir7p6i;;F/h>Z4)g]#pYfso[cfR_\V +f\5$UgA'G"h#?.,htu@/iqqg9jnS'=lMg,KmJcPQn,DhOoD\F^pAXgcq>:$fqtU*grUp/@s475Crr2ln +r;6BjqYU*fp\smcp%\.XnG_nUmf)VQm/H;Fkl'TDjlQL&ro3q9qr%A/qq_8,ptPf%f@b`-f@YZ,NS*pW +k1TXcptP]$rn[J/qr%A2qrIb:$fqtU*grUp/@s8N%es7QBj +rVQNiqu6Hhq>U-fpAXa[oD\7Yn,DbSmJcJOlM0T?jo4??ir7p6i;;F/h>Z4)g]#pkg$dUFfTXs=f[8@* +g&'Lug\]e*h>?+,i;DR7iqqg9jnS'=lMg,KmJcPQn,DhOoD\F^pAXgcq>:$fqtU*grUp/]s-Wi`rq66h +r:p-fq"sg_p&=U_o)%tVnG_nUmf)SPli-2KkkjQ?jo4?9iq;7&htu9uh1=C5h1=Ckh=]Y%ht#_#iqqg9 +jo4H?kl0lHli-8Mmf)\SnG_tTo)&(Yp&=^_q"X^_r;6Hcrdk+#rrE&rrq66hr:p-fq"sg_p&=U_o)%tV +nG_nUmf)SPli-2KkkjQ?jo4?9iq;7&htu8`h1=C5h4`ZthYZ4$i:u=/jSn9?kPOKBlMg,Km/HGPn,DhU +nb_nSo`"O_p\Xa\qYU3frUp0Us+14:s82fgrVl`iqYp9ep\XX_o`"FYnc&%Wn,DbSm/H>MlMg#EkPOB? +jS7a4i;2C)htu8]h4!/Nh2C+`h>uKiqqpu&pu;23roO.Bqrn%Erp0RMrpKdSrp]pWqssXVrq69bqtTs_ +qu$?ip&9OBf)PXHp&4mfq"k!bqtL!\rq-3\qsj[TrpTjSrp9XMrp'LHqrdkMlMg#EkPOB?jS7a-i:Z")hO!&Lh1=CBh=]Y%ht#_#iqqg9 +jo4H?kl0lHli-8Mmf)\SnG_tTo)&(Yp&=^_q"X^_r;6Hcrr2qKs3UfCrq66hr:p-fq"sg_p&=U_o)%tV +nG_nUmf)SPli-2KkQ'fDkPOB?jS7a-i:Z")hLXLkh1=C5h='1mhYZ4$i:u=/jSn9?kPOKBlMg,Km/HGP +n,DhUnb_nSo`"O_p\Xa\qYU3frUp/\s+14@s82fgrVl`iqYp9ep\XX_o`"FYnc&%Wn,DbSm/H>MlMg#E +kPOB?jS7a.huM^.htu8]h3?`Hh3$OdhYl=4hr""_pu;23roO.Bqrn%Erp0RMrpKdSrp]pWqssXVrq69b +qtTs_qu$?ip&9OBqu;o\qu69erquQfrqQBbqt9s\rposVrp]pUrpKdPrp0RKroj7BqrRhU0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&Ckl0`Djn7^0j7VF+iITs=iITt' +iUZ"'j7VL4jo4E;kl0iGlMKoHm/HDLmf)_Tn,DkVo)&(Yp&=^_q#:*dqYpBhr:p6crdk*qrrN0"q#:'e +rquZjrqcNfrqQBbqt9s\rpp'YrpTjUrpTjSrpB^Oqs47Hros4AroX4Ap#Po.p#:tiJ`21=Wol2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$fqtpU0d +p\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&Ckl0`Djn7^0j7VEBiITs=iITteiUZ"'j7VL4jo4E;kl0iG +lMKoHm/HDLmf)_Tn,DkVo)&(Yp&=^_q#:*dqYpBhquQcpqYg3gJcCl4m/Qk[q#13iqtpBhqt^6dqtL!\ +rq-3\rpg!Vrp]pUrpKdQrp9OJrp'LIpuq_>roNh6puD&,T](I\J`2sSo&BH)p#Q,6roX">rosFIqs47J +rpBUNrp]pUrpg!Yqt0m\rqHpFc2[Sl2KrKlg+N8rp9XOqsOIQrpTjV +rposYrq69bqtU0dqtgU0gp\sm`p&=U_oD\=[nc&"VnG_nUmecDNm/-,JlMKi=kkjQ6 +k)JJRjalNnjm;./kORj9l20cFlhg&JmJH>NnG_nUnc&+YoD\CZp&=[ap\Xabq>:$fqtU*XroO02s69RP +rqQEgqu6Hhq>U0gp\sm`p&=U_oD\=[nc&"VnG_nUmecDNm/-,JlMTlHl1O9;kORbdjeLpgjcnlpjoOW, +ro`k9ros=Frp0IJrpBUNrp]pUrpg!Yrq$-]qt9s^rqH.Fn,E+[qtpBhqt^6d +rqHEcqt9s\rq$-[rpg!Vrp]pUrpK[Nrp9OJrp'CFp#u;9o&dLEJ`VIEJ`Zmmm,n<1o'$);qs+1Hqs==L +qsOIQrpTjVrpp'[rq-*\rq??cqtU0dqtg +o&bMbS`PFaRcWnuroX:FoB?2NnG_nUnc&+YoD\CZp&=[ap\Xabq>:$fqtU*Xrg!MBs7lTgrVl`lqu6Hh +q>U0dp\smcp&"C\oD\=Unc&%Nn,DbPmJH8LlhfuKn,)VRnb_kU +o)A7Xo`"O_pAXg`q#:*dqYpBhr:p6crdk*hs7ZKfrqQHkr;6BjqYU*fq"sgbpAXa^o`"I]o(_bSnFc8L +mecDKm/H>JlLO1sk^hrKkbRG8l1jQClhKiGmJH>Kn,)VLnc&+YoDA1Zp&=[ap\Xabq>:$fqtpU0dp\smcp&"C\oD\=Unc&%Nn,DbQm/ZPNm/H>JlLO1jkb.-jk`4m"klC#E +lMg,Em/HDLmecJMnG)PQo)A7Xo`"O_pAXg`q#:*dqYpBhr:p6crdk+?s2tB:rqQHkr;6BjqYU*fq"sgb +pAXa^o`"I]o(_bSnFc8LmecDKm/H>JlLO2Jk^hrKk^hsmkk438lMg,Em/HDLmecJMnG)PQo)A7Xo`"O_ +pAXg`q#:*dqYpBhr:p3krr2cnJcCQ+j8\oRq#13iqtpBhqt^6dqtL*`rq60\rq$-[q!n@Qp$_nJqsF:I +rp0IHo')_/J`q[KOm)K&q!.kEq!A"IqsO@MqsaCNrpp'[qt0m\rq??cqtU0dqtgKn,)VLnc&+YoDA1Zp&=[a +p\Xabq>:$fqtpU0dp\smcp&"C\oD\=Unc&%Nn,DbPmJH8Llhfu< +l1jInk^hrKkdK^Jl1jQClhKiGmJH>Kn,2YTnG)PQo)A7Xo`"O_pAXg`q#:*dqYpBhr:p6crf$l0s8N#g +rVl`lqtU$eq>U0ap\sm`p&=U\oD\=Xnb_hBn*'1jmXaeWm]5dHn+H2Lnb_nVoD\C]o`"O\pA=U`q#:*a +qYpBhr:U$crdk*_s6]jcrpp$er;6BdqYpnG_tT +o)A7Xo`"O\pA=U`q#:*aqYpBhr:U$crmUmus4@;Mrpp$er;6BdqYpnG_tTo)A7Xo`"O\pA=U`q#:*aqYpBhr:U$crdk+6s2"a7rpp$er;6BdqYpnG_tTo)A7Xo`"O\pA=U`q#:*aqYpBhr:U$crW3'! +JcC<$gAh0Oo)8Rcqtp0brqZQgq"Od]qt9s\qt'gXqsjRQm-g))JaS*WK'r3up$htNqssaXqt0m\qtBp] +rqQKgq"k!equ$-cqu5aXJcE@^rr2KerquZjq"k!crqQ9_rq?<`!VQ-bo_\7Zo)%tSnEfUpm]c,1mXafd +mdfi>nG_tTo)A7Xo`"O\pA=U`q#:*aqYpBhr:U$cre:B's5!_Srpp$er;6BdqYpU0dp\smZp&=UVoC_\On`]Inn:C([n>l'Xnac8JoDA1Qp&=[^ +p\ssbq=XU`qtU*grUTr=s1SI"s7QBgrV6U0dp\smZp&=UVoC_\OnU^3/n:C([nU0dp\smZp&=UWo)SCTo)%s.nn:C([n:L0/nac8JoDA1Qp&=[^p\ssbq=XU`qtU*grUTsMs+13^s7QBgrV6U0dpAjmfp@e1Prq,mTp%&"MJafo5Jae6[j7*'cNs7QBgrV6U0dp\smZp&=UVoC_\Ona,arn:C([n>GdTnac8JoDA1U +p&4R_pA=U`q"sm[qYpBer;QZcre(6%s8Duprpp$er:TsaqYU*fq"=CYpA=OOo^DDDnq$@_nq$ACo'c2= +o`"OVpA=U]q#:*^qYU0er:U$]rdk*\s6'FZrpp$er:TsaqYU*fq"=CYpA=OOo^DC/nq$@_ntbjFoC)>N +p%A%Up\Xabq=XU]qtpU0^p\X[]p&+ISo^DC&nt>Q)nrE;5oDJ4K +o`"OVpA=U]q#:*^qYU0er:U$]rdk+3s1A=.rpp$er:TsaqYU*fq"=CYpA=OOo^DC[nq$@_nq$B,o'c2= +o`"OVpA=U]q#:*^qYU0er:U$]rqueIs+14"s82fdrVl`fqtp6eq>U0^p\X[]p$_PAo:>H'nq$@oo'c2= +o`"OVpA=U]q#:*^qYU0er:U$]ro=$0s0_n(rpp$er:TsaqYU*fp]1'^p\X[]p$_PAo7?JFnq$@_o()A? +oC)>Np%A%Up\Xabq=XU]qtpU0^p\X[]p%J%So^DC&ns]-#ns&_6 +o)SFPo`"OVpA=U]q#:*^qYU0er:U$]rdk+-s+14Gs82fdrVl`fqtp6eq>U0^p\X[]p$_PAoD%m-nq$@_ +o!\,XoC)>Np%A"Zp\4X\qtU0dp%nR_qu$-cp&9OB!<7WMnc/C`o)8I`qtojYqt^-afD#7;JbFZgJbI"T +g@t:8rqZ6`qtgg@t:8rqZ$ZrqlBdp&4[b +_>f)d`W,`4o)8I`qtojYqt^-a!Vc?ApOW%;p4;q(p?VJBp\"=\q="1Zqt9m[rV6ACs4@:Ss7lTarVQNi +qsXCYq>9s=pV6EQp4;pgp=f96q#:*XqYpBbr:U$`rpB`:s+13ks7lTarVQNiqsXCYq>9s=pSRY8p4;q+ +p=f96q#:*XqYpBbr:U$`rm^t!s/H%nrpp$br;6BiqXaR\q>9s=pOW%Wp4;pgpA=R;p\"=\q="1Zqt9m[ +rV6ACs7?8As3(H;rpp$br;6B[qYU*cq"a[ApOW%5p4;q.p>u&Bp\"=\q="1Zqt9m[rV6ACs3^jts6]j] +rpp$br;6B[qYU*cpt,7kp4;pgp:p=Tp\"=\q>'m]qYpBbr:U$`rdk+>s+14?s6TaarUp*Wqu6H;q>L)> +pjr3kpqumSq>:$]qtp9`r;QZ]rdk*Ms4dS?rr2lhr9sO^qTeo#pjr3kpoX>=q>:$Wqt9mdrTsO"s+13h +s6TaarUp*Wqu6Hcq:YRppo4%>pm:dAq<.SNqX==Sr;QZ]rdk+$s0)Ihrr2lhr9sO^qTeoOpjr3kpjr4f +q>:$Wqt9mdrTsONs+13$s2b6,rr2lhr9sO^qTeo6pjr3kpmV!*q>:$Wqt9mdrTsO5s+13Ls6TaarUp*e +qt'^aqTenfpr3#Zpjr5;psJp7qX==Sr;QZ]rdk+@s+13ns6TaarUp*Wqu6H]q;;"!pnRV8pmq3Aq8s82f[rV6<]qgnV1qLSKoqLeY;qtU*UrUp/ts+13Ys82f[ +rV6<^qZ-MEqL\QpqLSM1qXsa\r9XCTrdk*ms.KDhrosCVr:9`PqLSKoqLSLpqXsa\r9XCTro*m.s+13\ +s82f[rV6<]qgnSEqYGd>JbjronG;hTq#'LWp&<&4JcD2=qu6$^r;HEgo)""7T)+$7Jbmdjp&"O^m/?VV +JcFp5JcEC_qu5jYq#'^[r;)!@JbjroJbo!7p&"O^m/?VVJcE^hJcFU,qu5jYq#'^[gA6BsJbjroQ2:1N +q>:6jm/?VVJcFj3JcF*so)@&8nbdt9Jc()s[/APSq#9scJcC`0])V@#dJ\juJc()sT)@4=m/Ed[JcDPG +o)A%Tjo'c.Sc"':M#@,JhYlg?JcE:\NrS\LdJ^ELJc()sJc,*:fDY(8ci8RrJcDYJo)@&8Rf%a7Jc(H( +fDY(8[f:pYM#[>Nq>Se?Jc*(VJc()sm/5K6m/DS9ec14#WrMYhkPa`FJc(l4Jc(Q+o_mkLm/DS9Zi>UV +bl@85dJ`b9Jc()sJc)bMfDYXHnc"+>e,P"!d/V)ameq_8Jc1/u\,FMLp&9OBNW6Ti`VtPhJc1/uU&Db* +U]5oFV#TcNs+13$rrE(Mrdt-#rdk(9rdk*7 +s+148s-We:rdk'"rn%.Ms+13$s+C?&rW3#tJc:6"Jc>0 %APLeod +EI +379 0 0 58 0 204 cm +BI +/Width 1137 +/Height 174 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcFF'Jc;YJ +Jc:6"ci/LqZi>UVJcFR+Jc;MFJc:6"e,FpuYQ'1RJcDnQJcC<$JcC<$JcC<$JcC<$JcC<$nc.kQJc2SH +Jc1/uci*50JcEgkJcC<$o)J(UJc2GDJc1/ue,AP1JcEdjJcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$KDtuO +rpg!;rIOm\r.4csr9+"-rU9`:s4[L(s+LFOrq69pEfrV??cqtKmZqt9OPm.5f!`:AKMJb&*so(25?rq6'[ +p%SI\rqZ?cq"ssdp&4[bL];r*Z2a_#o)8Rcp&"X_qt^6dp%S@Wqt9FMn+2,$_"*'IJb&7"n+6#?rq5sX +qtL!_rqZ6`qtp9gp&4R_LAui)JcDnQJcC<$JcC<$JcC<$JcC<$JcDtSn,<7`p&"abp@nX_rqH*Zq"4IT +p%%A;JagVIJae6[lL=01o()eOq"47QrqH*\qtg3equ#p]L];r*[/^.)n,<7`q"t'erqZ6^p%JCXqt0dW +p%%A;JagJEJae6[mdTT5o()eOq"4RYp%J(RrqZQiq"ssdo)8ReLAui)JcDnQJcC<$JcC<$JcC<$JcC<$ +JcE(Vrr2KerquZjq"k!crqQBb!VZ6cpAXaao_\7Wo)A1VnG_nUnFH%!m^;J6mXaf_mdfiGnG_nRnGDbT +o)A7Xo_\=\pA"C]q#:*aqYpBhr:U$crf-r/s0r%-rpp$er;6BdqYpnG_tTo)A7Xo`"O\pA=U`q#:*aqYpBhr:U$cre^Z+s+13Qs+13$s+13$s+13$s+13$ +s+13_s7lTgrVl`lqu6Hhq>9sdp\sm]oE"ORrUTaRrpTjUqsXFMrpBLIq!.G7J`t&9J`q[KlKIp*q!.Y@ +qsFCNqsXORrpTjUq!n@Sq"4IWqtL*brqZHfrqlTjq#1!eQN)O9_#O3/q#13iqtpBhqt^6dqtL*`rq60\ +rq$-[q!n@Qp$_nJqsF:Irp0IHo'(_h_!$@5J`uOcp$)8:rp0@GrpBUNqsXFOq!n@Srq$$Zrq69arqHU6iqtp<^ +rKdJ7s1n[*rVl`lqu6Hhq>U0apAX^`oDA+Xnc&"VnG_nUmf)VQm.K]Al20]8kP41jjhTu/jalO]jnS!2 +kOn'roNh6puD&,J`4N*J`21=o\oB#puD&.roO.A +puq_Arp'CHrp9XOqsOIQrpTjVrposYrq69bqtU0dqtg#k(hu;R5ht>q)ir8!;jSS'9kPj]ElMKrFn,DhUnc&+YoD\CZp&"L_q"spequ6NgrV6Ad +s+13os82fgrVl`iqYp9ep\XX_o`"FYnc&%Wn,DbSm/H>MlMg#EkPOB?jS7a-i:Z")hLXLoh1=C5h'rnI"tqq6PQ^t=4jJ_9DCrn6bornI,$qqh5.qr7M6roO.Broj@Grp0RMrpB^RqsaUUrq$-]qtC$` +qtU0drqlTjp&4mhU&T]DJcDnQJcC<$JcC<$JcC<$JcC<$JcF$qrr2]krquZjqtgMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$g&BY$fC.8P +e:H*'dt,u)e+qM]eF1refDF4qg&Bb'h##t-i;VX5i;V^7jSn9?k5OTDl2L#Jm/HDLn,DhUnc&1[p&=[a +p\sseq>:$fqtpqr%J1rn[S.rn@A(rmh"trmLem +qp58erltGdrlb;`rlOrUrl4iSdDUURkJMkgR)A4-ji%/;qo8EOrlP/^rlb;brltGfrm1JgrmLeprmh## +rn7;*rn[S1qr%J6roO.CrosFJqsO@Nrq$-]rq??crqQ9bqu$?iqu3_tJcC<$Y5a(QJcC<$JcC<$JcC<$ +JcC<$h>dBOq#13iqtgD%F^\bb3]n*iC]Rd_H]_T5)^&GbF^\,DA_>D+K_u%FPa8X3[bPoccci2;j +dJhVoeGe%ugA]n)hu;R5j8S3?kPj`FmJcPQnG_tWo)A:YpAXgcq#:*gqYU3crVlf's+14,s8N#mrVl`o +qu6Hkq>U0gp\smcp&=U\nc&"Vmf)POl2KiEjSn3=i;VX5hYu:/g&BS%e,Iepd/MDkcMl)fb5TK]a8X'W +`;[[R_Y_1H_#D+J_#D+J^?N=^][+6A]Rd`l]^3?/^AbqI^\bhG_>D+K_u@UR`W!pWao9H^c2Q#cd/MJm +e,Iqtf`'Y)hYuF3i;Vd9jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6frj2WUs+13Qs+13$ +s+13$s+13$s+13$s+14+s7Q?ir;QTjq>9sdp\sj_o)A+Wmf)SPlMg#HkPjQAiVqd7h>Z.-g&BS"e,IYo +cHZF8rlkAarlG)Zrl+cPqnW3Grk8rosFJrpKdSrp]pXqt9j\rqQKgrql]mp&28tJcF^/ +rr2Thrql]krqZQgqtL*_rq-3\rp]pTrpB^Mroj@EroF(#W +rl"fRrk\TLrkJ?Drk/-?rjr!;rj_F+J[W\/J[U-#[ +rlY5brm1SjrmUksrmq)&rnIG/ro!e9roF(ArosFIrpB^Rrp]pXrq$-^rqHro!e5rn[S- +rn%/"rmC_lrm1Sg!QiF`ao9B\`V[OO^])%J^](nC])K5=\,Ni8[JmQ1ZhUisZ%9.(Y^s$0Yk,*lZ1tX( +Zhq-,[JmW6\,No:])0/>_#D+J_#D4M`W!mVans?^d/MGle,Iqtg&Bb*hu;R5ir8$On,DhR +o`"R`p\sseq>U6iqu6NgrVQT*s+142s8N#jrVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7. +f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\Giu:[emK3[/73,ZLY8OYfX,#Y^s%QYk>9oZMq3- +[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnW +o_\@]p\t!cqYU3frVQT&s+13$s/uBQs+13$s+13$s+13$s+13$s5U0gp\sj_oDA%V +mf)POkl0`Dj8S!9hu;I2f`'J$e,I_nci22gao9B\`rkABHrk\TQrl4rZrltGfrm:Ynrmh##rn[S1 +ro!e9roF(Arp'LLqsaUTrq$$[rqHEerqZQiqu$Hlqu42,JcFg2rr2fnrqucmrqcWirqQKerq69_rq$-Z +rp]pUrp0RJroa:@ro3q7rndY/rn.5!rmLelrm(MdrlP/Yrkn`NrkJHFrk&0>rjMg6rj2U0qlp('riZ7& +riGmqri5amJZ-A_JZ+-um\oo[ql9OoriH+$riZ7(qlp()rj2U3rjVm:rk&0CrkJHJrkn`SrlP/_rm(Mh +rmC_orn.5(rndY3ro*k:roa:Frp0RPrp]pWrq$-]rq69brqQKgrqcWkrqucoqu4&(JcC<$Y5a(QJcC<$ +JcC<$JcC<$JcC<$i;`]QrqucmqtgkeGe,"gA]t.i;Va8jo4KClMg2Mn,DhUo)&(Y +pAXgcq#:-hqu6NgrOW#[s5a4TrVQKkqYp9hp\smco`"I]o)A.Xmf)SPl2KlFjo46I(cUZS;%U!fWcTn/m;U#r*KU\LYa +V>d@kVuE[mWrB'uY5YX(Z2V'.[JmZ7\c0;A^])(K_u@[TaSsE_cMl2ieGe%ug&Bh,hu;U6jo4HBl2L&K +mf)_To)A7[o`"R`p\ssbqYpBerO2`Ws+13Qs+13$s+13$s+13$s+13$s+144s82fprVl`lqu6Hkq>U-f +p&=U_oD\7Yn,DbSlMg&Ik5O?=i;VX5gA]e)ec*qpci22gaSs3Y_Z%@M^](kH\@;OKrjMg3rilC*riQ1" +ri,morhTFdqk3q\rh0.\pmpcAJXb,XJX_4[!LoSCSG8ZPTDkM_TDP;\U\gkdVZ*LmWr&ptYl:s-[/RQ6 +]DfJB_#D4M`W!sXc2Q#fd/MSpf)FD&hu;R5iVr!=kPjcGmf)\SnG`%Yo`"O_p\sseqYpBhr;6Hlrk8>_ +s6'F]rqlZnr;6BjqYp6gpAXaaoD\=Xn,D\QlMfrFj87d6h>Z.-ec+%sci25hbPoT^_u@LO^](nF\c0); +Zi76/YPt['XT#7!VZ*FkV#I.gUALVYTDkGWSa;ktS'mdWRt7%/S*?I?Sc55XTD5)YU&LhdV#I4iVZ*Up +X8]7#YPtg+Zi7H5])KAA^])(K_u@aVb5T]cci2Alec+;%h#$%/jSn<@lMg/In,DkVoD\F^pAXg`qYpBh +r;QZlrk/8^s+13Qs+13$s+13$s+13$s+13$s+147s8N#mrVQKkqYp9hp\smco`"IZnG_kTlMfuGjo46< +hu;I2g&BP$e,I\mbl5ca`W![P^](qG\Gir9Z2q26!3lI*ri?$srhf[irh0.\rg`tWrgNhRqj7;Irfm2A +plb<4JWS6?JWPGEq2k00plbNJWPGEqN1B4plbE9rg!JKrg3VOrgEbSrg`tYrh07_ +rh9=dri#gqri?%%riuI/rjVmroj@HrpTjUrpg![rq69a +rqQKgrqcWkrquZlqu4A1JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$l2Ub^q#1*erqZQgrqHEbqssaTrpB^N +roj@Cro3q7rnIG+rmq(rrm:Ygrl>#WrkSNHrjr*P5CLCQN!6MR/WTST)PA]UAh"gVZ*RoY5YX( +Zi7H5\c0;A_#D4M`r=0\c2Q,if)F;#g]$+0iVqp;kPj`FmJcSRnG`"Up&=^bq#:*gqtU-erknbes6]jc +rqQHkr;QTmq>U0gp\sjbo`"F\nG_kTm/H5Jk5OE?i;VR3g]#e'e,I_nc2Pia`rd:iU&L\`SGo#WR/WHOQN!-JPQ$aBOoCF@OT(=?Nr+h,N.Ho2Mh-e;MuAS#N;eh6NrG.>O8b7? +OoCOCPQ$gGQN!6MR/WTSSc58\U&LhdV>dInXT#F&ZMq92\,O&>^AbtJ`r=*Zc2Q)heGe%ug]$%.i;Vd9 +k5OTDm/HGPnG`"XoD\F^p\sseq>U9jr;6HirkJJas+13Qs+13$s+13$s+13$s+13$s+147s8N#prVl`l +qYp9hp\smco`"@Zn,DbSlMg&Ik5O?=i;VR3f`'J$dJhJkc2Pf`_u@LO^&GP@[f3Q2YPt['W<&fj!2TUh +rh'1]rg`tUrg*PJrf[8BqiCW6rf$W0reUH,JVLmnJVJ`1kD&tkqhY$)qi(N6rf?r#[rm1Skrm^r"rn[S1ro*k=roa:GrpKdSrp]gWrq??crqQKh +qu$Hlqu4M5JcG-;rr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJ +rk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,JVLjmJVJ`1k_B(l +reUQ1qhkB2rf$i9rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)arm:Ym +rn.5(rndY4roF(@rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu4A1JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$ +n,N:arr)iorql]krqZQgrqHEarq$$VrpKdNroa:Bro*k5rnIG(rmLenrm(Marl4rQrk8dLoXo>R([f3f9^&GhH_Z%UTc2Q&gdf.ktg&Bk- +iVqm:k5OWElhg2No)A:\p\sseq>U6iqu6NjrVlf9s+14>s8N#prVl`oqYU*fp\smco`"C[nG_nUlMg#H +k5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70-XT#0tV>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5M#2o* +K`6T#Jb=PEJ%C,\It<+8J+A-hJbt&rK`6])M#N81MuJb9O8b7?PQ$mIR/WZUTDkM_V>dFmXT#F&Zi7E4 +]`,YE_>_LSbPoiedJhYpfDaV*i;Va8k5OTDlMg8OnG_tWo`"O_p\t!cqYU3irVQT5s+13$s/uBQs+13$ +s+13$s+13$s+13$s6p!_rVQKkqYp9hp\sm`oD\4XmJcGNkl0]Cir7j7gA]e)eGdhocMkuc`W!aR^&GP@ +[f3N1XT#7!V>d1fTDk;\R$[l@rg*PHrfI,>repc4reUQ-qh+crrdXorqgJHkpj7R;^3P9TJU-F(pj;mc +rdFZmqgeZsre(3(reCE/repc7rfI,BrfmDKrgNhWrh9=frhf[rrilC-rjVm>rkJHNrlP/_rm:Yormq)& +rnm_6roF(ArosFLrpTjUrq$-_rqHEeqtgZ:1iVr$>kl0oImf)\Snb_tXp\t!fqYpBerVQTMkPjQAi;VU4g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^ +SGniRPl?gEO8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpdG5HE5FM2dIFFePtFT-F^G5c^_GlE!f +HN&9jI/\QnIf=irJGt3#L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'("Z2V01\c0AC_Z%ORbl5oedJhet +gA]t.i;Vg:kPjfHmJcSRnG`%Yo`"Uaq>U6iqu6NjrVQT8s+13$s/uBQs+13$s+13$s+13$s+13$s763h +rqlZnr;6?iq#:!do`"I]nG_kTli-,Ik5OB>i;VU4f`'A!dJhDia8X'W^](kE\Gic4Y5YL$V>d.eT)P2X +Q2[!HNrb2u!0$o7re:?&rdautrd=]lrd"Kerc\9_pi?%Hol#D!`,:-DJSsajqeu%Epi?7Rrc\9crd+Qk +rdXotrdk'&reCE2rf@&@rfmDMrg`t\rh]UlriZ7*rj;[:rkJHKrl4r]rm(Mkrn%/&ro!e8roO.Crp0RN +rp]pYrq-3_rqHEerqcNirr)`nbl<7opAb-kqu-Nlrql]krqQKdrq69^rpp'Wrp9XLroj@Aro*k6rn.5# +rmC_jrlY5[rkSNHrjr*7ric='rh]Uhrh'1Zrg3VKrfI,=repc0re()urdOiord"Kfrc\9_rc@sWrc.^P +rbqdTqeq%'^i"^@JSsmnqeuIQrbqRNrc.gUrcA'\rc\9brd"KjrdFZore(3(repc9rfI,Drg3VRrh'1a +rh]UrrilC-rjr*BrkSNQrlP/brmC_qrn.5-ro*k:roj@Grp9XQrpg!Zrq69brqQKhrql]mrr)`naT$hk +JcDnQJcC<$JcC<$JcC<$JcC<$JcG<@qu-Nlrql]jrqQKerq69_rpg!VrpB^Mroa:Bro!e2rn@A$rm:Yi +rlP/Wrk\THrjVm6riZ7!rhf[grg`tVrg!JErf6u9!JZ=/LAll*JGt#sI/\HkGlDpdFSg+UDu4GID#8"! +C:e53C4U-YCAr#DD#8,IDuO_TEr0tXGQ)meHiAKnJGt0"L&Qu/NW,%=Q2[*KSGo5]V#I=lY5Y[)[f3o< +^&GnJaSs?]d/MPof)FJ(i;Va8k5OWEli-APnc&.Zp&=^bq#:*gqu6NgrQP:ms7ZKfrVl]nqYp&hYuL5k5OTDlMg5NnG`"X +p&=[ap\t!fqYpBerQ,"is+13Qs+13$s+13$s+13$s+13$s+14Fs82fprVl`oqu6Hkq>U0gp\sgaoD\4X +mf)SPkl0]Cir7j7g&BV&dJhGjbPoK[_#D(I\c/o6YPtR$V#I+fT)P,VQMusENW+h7L&lgT!.b&urdFck +rcnEbrc8!Xrbq[Orb_OJrbD=Eqe5P5qdtCjc"2H;JS"FaratM0rb2:FqeH+Gqec=MrbqdTrc8!\rc\9d +rdFcprdb!&reUQ5rf@&@rg3VTrh'1bri,muriuI4rjr*Erl+lXrm(Mjrm^r#rnm_6roF(ArosFMrpTjV +rq-3arqQKgrqcWkrquZlrr17DJcGQGrr2fnrquclqt^6crq??`rp]pTrpB^KroX4?ro!e2rn7;!rm1Sg +rl4rSrkJHCrjDa0ri?$qrhBCargNhQrfI,>rf$i2re(3"rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=E +rb1Y2rap^ma^p$7JS"Reqe#D3qe5tCqeH+GrbVRNqelCPrc.pYrcS3crd4WnrdXp"reCE2rf6u>rg3VR +rh'1arhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`ncMrIq +JcDnQJcC<$JcC<$JcC<$JcC<$JcGNFqu6TnqtpBhrqQKerq-3[rp]pUrp'LIroO.;rndY.rmh"rrm1Sb +rl4rPrjr*dRqZ2V-0])KJD_>_LScMl5jeGe/#h#?72jo4EAlMg8OnG_tTo`"Uaq>U6iqtp?krm1Uqs7u]orr2lq +r;QTmqYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1M]QN!*IO8b+; +M#N&+JGsurHiA0eFT-=[E;jbSD>n;LB`;ZAAc?6;A,]s.@=_h"@"D^:@-D"k@JaO5A,Bg9Ac??AC&VlH +D>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X9]d/MMnfDaP(hu;X7 +jo4QEm/-;OoD\C]p\t!fqYpBkr;QZlrm(Ops+13Qs+13$s+13$s+13$s+13$s+14Fs7lQiqu6Ejq#:!d +oD\7Yn,D\Qkl0cEj8Rs8h>Z(+e,I_nbPoN\_u@@K\,Nc6Y5YC!VZ*4eRJrNOOoC@>MZ/A0JGt#sH3&56 +!-eEbrc.pUrb_XMrb2:Drau.?raYq:qdKJ2ra>_4oj72pJR$H)JR!b2o3Cronm;<'ra5Y4raGe8raYq< +rau.Brb2:HrbVRPrc.pYrc\9drd=]qreCE.rf-o>rfmDMrh'1`rhoatrilC1rk/6Frl+lZrltGjrn%/& +rnm_8roO.Crp9XOrp]pYrq-3arqQKgrqlKhci8Rrr;Zcqqu-Nlrql]jrqQKerq$-[rpTjRrp'LHroF(; +rndY,rmh"qrlkA_rl"fMrjr*:ric=$rhoagrg`tTrf[8Arf$i2re(3"rd4Whrc\9]rc%jSrbMLJrb2:C +ral(>raPb5ra>V1oj72pJR$<%JR!b2pK[Asnm;<&qdBD3qdTP8ral(@rb2:FrbMLNrc%jWrc\9crd4Wo +re(3)rf$i;rf[8Jrg`t\rhoarric=/rji$Brl"fWrlkAhrmh##rndY5roF(Brp'LMrpTjVrq$-`rqQKg +rql]mqu-NncMrIqJcDnQJcC<$JcC<$JcC<$JcC<$JcGWIrr2fnrquZirqQKerq69]rp]pTrp0RIroX4< +rn[S-rmh"prm(MarkeZLrjr*8rilC&rhTOfrg`tQrf[8@reUQ.rdaurrd+Qf!HE)ZEW0qVDZ4DMC&VcE +AH$*<@K'[3?i+1/?2e+">OksK=j:*#=b0`I=nPtk>Ph\&?2e10?i+71@K'a8AH$6@B`;cGDZ4SREW11] +H2`6kJGt3#M#NG6OT(LDS,SuXU].:mXo>X*\c08@_>_LSao9Zdec+5#h>Z@3ir8-?lMg/LnG`"Xo`"R` +p\sseqYU3irVQTEs+11Ns8W)tqu-Nlrql]krqQKerq??_rpg!Vrp0RJroa:>rnm_1rmq(srm1Sbrl"fO +rk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4ra,J-r`o"u +oicoLa]X0tJQ__Mnlk]jqcs,+qd080ra5Y4raGe:ral(ArbDFKrbqdTrcJ-`rd=]ordk')repc:rfd>K +rgj%_rhoasriuI2rk&0Frl+lXrm1Smrmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]mrr)`ndJndt +JcDnQJcC<$JcC<$JcC<$JcC<$JcGWIrr2oqrqucmrqcWirqHEarq$-YrpKdProj@Cro3q7rn.5$rm:Yh +rlP/VrkABDrj2U,ri?$nrgs+YrfmDDrf-o4rdk'!rd=]grcJ-X!H)cTDZ4GNBDuH@A,B[5?iF@1>lIt, +=oMP#=8Q%\l.h(@/aX7AH$6@C&W#LDuObUFoHaeIK"fsL]3/0 +OT(LDQi'r`K&!r`8/]JQ0`jJQ.2"pJg9Tqc<\t +qcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8ro*k3rn%/!rm1Sbrl4rQrjr*Q.e)=Sl1p=&[;u9PhQ.t.?iFL5AH$0>B`;lJDZ4\UGQ)meJ,Y*"L&R#0OoCUERf8uZU].7lYPtj,])KME_u@aVci2>k +f)FG'h>ZF5k5OTDmJcSRnG`%Yp\sseq>U9jr:p6@s+11Ns8Vlmrql]krqZQfrq69^rp]pTrp9XHroF(; +rn[S,rmh"prlkA_rk\TIrji$4riH*trh9=^rgEbKrf6u8re19%rdOikrcS3[rbh^Nrb2:AraPk7ra5Y0 +r`f8&r`K/$r`8eor`&>bpelZ?a\dUdJPl/=pepQZqc*Gmr`9#"qcNi#r`fA-ra5Y4raYqQ.e)=T2D$sAj:k;EP:Ou;m:Z5+K;#X8i;#!oe;Z9Vo<;ons=8l>$=oMY)>l.n-@K'j; +C&VoIE;jnWFoH^dJ,Y#uL]3;4OT(RFSc5;]V#IIpYPu!0^&GhH`W"*\ci2Gng&Bb*i;Vg:k5O]Gmf)\S +o)A@^p\sseqYpBkr;6Hlrn.7&s8N#prVl`oqYpQ.h*=oMM%sCC:U*]H:Ou=$:]!u`;>X8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&_1J +\Gic4Xo>6tT`1M]Qi<*GNW+_4Jc:/uHiA-dErL"VB`;ZDA-$(G!+>e5ra#M+r`K/#r`&kqr_iVjqb[/c +peLBSJP=!UJP:Vgl:gkFpeLfaohbWbr_i_or`&ktr`B)%ra#M0ra>_9ral(BrbqdTrcA'brdFcsreLK1 +rfI,GrgNhZrhoaqrilC2rjr*Erl>#\rm:Yqrn.5-ro*k;roj@JrpB^Tqt0m^rqZQirqlTkrr1RMK)biL +rr)iorql]krqQKerq-3\rp]pSrp'LHro3q8rndY*rmUkmrlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ, +rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$r`/qsr_iVjqb[8fr_WSiqbH]VJP@reg]- +rdXoprce?\rbh^Nrau.?ra5b5?3"=2>lIn*=T2D$<;TPl:]=2i:]=,d:&[i]97]^C8qBTc9&<289D_E^ +:&@]b;#X8i;#X>h<;otu=T2M'?N+@3@fBsU9drRh.(s8N#prVl`oqu6Ejq#:$eoD\=[n,D\Q +l2KiEi;VR3g]#_%d/M;h`W!^Q^&GG=Z2Um)V#I%dSGncPOT(4k;uTbq=8l>$=oM_+?iFL5 +Ac?BBD#SAPF8gC_If=otK`6r0OT(LDSGo2\V#ILqZ2V01^&GkI`W"-]dJhYpg]$(/i;Vm_+H\c/l5X8]'sTDk;YQi<'FMZ/D1J,XipH2_j`DZ4JOB`;N@@K'R6>?_)3r`];& +r`&kqqb[8fr_E5^qb-o\i(8Jjbt*CVJOoB'j%9,?r_*#[qbI#br_i_pr`B)$r`fA.ra5Y6rb)4Erbh^U +rcS3frdXp!reg]9rf[8Lrh'1ari?%'rj;[;rk\TPrlkAhrm^r#rnm_6roO.Drp0RPrpg!Zrq??crqQKh +q#/kFL&_/Oqu-NlrqcWhrqHEcrpp'XrpKdNroa:Aro!e2rn7;!rm(MdrkeZKrk&08riZ7#rh07\rgEbI +rf$i5rdaurrd4Wcrc%jRrb2:BraGe5r`oG,r`B)"r`&kor_WSir_EGeqb6l[r^u*?JOmmRJOk>_pIO=9 +qb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbVrh07jriZ7+ +rk&0ErkeZXrm1Slrn7;+ro!e:roj@HrpKdTrpp'^rqHEerqcWkqu-NnfDgF%JcDnQJcC<$JcC<$JcC<$ +JcC<$K`D&Nqu-NlrqcWirqHEarq$-YrpB^Nroj@Aro*k3rn%/!rm1Sbrl4rPrj_s7riZ6srhBC_rfmDF +rf$i0rdt,src\9^rbqdLrau.=ra>_3r`T>($L77Y+%]7f,^Q +8GGdU9)_K_9`@ib;#XAl;uThs=oMY)@/aX7Ac?BBDuObUFoHaeIK"luMuJ_8PQ%*OTDkYcXo>R(\,O,@ +_>_LScMl5jf)FG'h>ZF5kPj`FmJcVSo)A:\p\sseqYU3irVQTNs+p^SrqlZnr;QTmqYp6gpAX^`nc&"V +m/H5Jjo46Z+,ec*qpbPoQ]_#CtF[JmB/WW&[lT)P,VP5^I?L]2o)IK"KjFT-7YD#S,IA,]p9?iF7. +=T2A#;Z9Pm:]=2i:B!rd9(bdT8GG]+7]o437Y+%a7efLN8Gc!U9)_N`:&[ug:]=5j;Z9_r=T2M'?iFL5 +A,^0@C]8;PFT-RbIK"itM#ND5P5^jJT)PMaWW'+#[Jmf;_#DCRbPolfec+8$h>ZC4jo4KCm/HGPnc&1[ +p&=^bqYpBkr;QZlrn@C's+13Qs+13$s+13$s+13$s+13$s+LFOrr2lqr;QTmq>U0gp\XR]n,D\QlMfrF +i;VU4gA]Y%df.Ji`r5hS(<)`is +r_r\ir_EGdqb$iZogo'PpdXpFJOI4?JOG&Wk="l0pdY-NqagTUr_!&]qbR2gr`&kur`K/)ra>_7rau.E +rb_XUrcnEhrdk')repc +JOJ]iogSXFr^ZWPr^m)]r_*5ar_EGgr_WSnr`/r!r`fA.raGekU9jr;QZlrnd[2s8N#prVl]nqYpQ.e)U6iqu6Qkrn@C's+13Qs+13$s+13$s+13$s+13$s+LFOrVl`oqu6Hkq#:$e +o`"C[nG_hSkl0`DiVq[4gA]Y%d/M;h`rR0JO7CDJO4oSn3YquqaCEPpdY6Qr^d#[r_3;cr_WSl +r_rerr`T5*ra>_9ral(Frc%jXrd"Knre(3-rfI,CrgWn]rhf[trj;[6rkSNQrlP/drmh##rn[S4roF(B +rpB^QrpfmXrqHEfrql]mqu,COM#[ANrquclrqQKerq-3\rp]pTrp0RIro3q7rnRM(rmLelrl>#UrkJH? +riuI)rhKIbrgNhKrf-o6rdk&srcnE^rbh^Nrac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I- +JO7@CJO4oSnNu/$qaCEPpdY6Qr^d#[r_*5br_NMjr_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o> +rgNhXrhKIpriuI1rkJHMrl>#armUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$HlgAca(JcDnQJcC<$ +JcC<$JcC<$JcC<$K`D&MrqucmrqcWhrqHEarp]pUrp9XJroX4@*h*QZYlTp(fPX4_( +n3YhrqaC3Jr^ZiVr_!/_qbR2gr`&kur`T5,raGe:rb2:Lrc.p\rdFcrreLK5rfR2Irh'1bri5t'rjMg> +rl"fVrltGkrmh#&ro!e8roa:HrpB^Sqt0m^rqZQjrquZlhZ&E3qu-NlrqcWhrqHEarpp'WrpB^Lroa:> +rndY.rm^qorlkA\rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQrb2:?ra5Y1r`K/#r`&knr_NMg +r_!/]r^d#Yr^QZOr^>@*i'Mu\k_7 +rb2:Hrc%jZrd+QnreCE1rfI,Frg`t]ri,n"rj2U:rkSNPrlkAgrm^r$rn[S4roa:GrpB^Rrpp'\rqHEf +rqcNirr(RNJcC<$Y5a(QJcC<$JcC<$JcC<$JcCW-qu6TnrqucmrqcWhrqHE`rp]pTrp0RHroF(9rn7;& +rmLeirlP/Trk&0=ric="rh]Ucrg*PIrf$i0rdk&qrcS3\rb_XJrau.:r`oG+r`9"qr_WSi!DH/e9`@]a +8cD9[8,c!T7K,^G6bbs=5jL[d5a4P%6I/!k6i0:N7JfRR8,c'Y9)_N`:]=2i;>sVq=8lJ(?iFL5BDu`H +DuOkXHN&?lKDpf.NrG=CSc5;]VuEjuZMqK8_#D7Nbl6&iec+8$hu;U6k5OZFm/HMRoD\C]p\t!fqu6Nj +rVlfTs,6pVrqlZnr;QQlq#:$eo`"C[n,DYPl2KfDi;VO2g&BJ"ci2,e_>_1J\c/i4X8]!qTDk8XPl?[A +L]2o)I/\BiF8g(VCAqlF@/aI2>Q.\&;u9Dj:B!rd8cD9[8,c!T7K,^G6bbte6%M;d5_21f5lO(:6IS9o +6i0:N7JfRR8,c'Y8cDE_:&@cd<;oqt>Q.t.@/ag_XWci2Dmg&Be+i;Vj;kl0oIn,DnWo`"Uaq>U6fr;QZlro!g-s+13Qs+13$s+13$s+13$s+13$s,-jR +rr2lnqu6EjpAX^`nc&"VmJcALjo49=hYu.+ec*noao9_1r`B)!r_`Yjr_sMn&?2e:3BDuWEDuOkXGQ*'jK`6c+O8bIERf9#[WW'%![/R`; +^])7Pc2Q)hec+>&h>ZI6kPj`Fmf)_To)A=]p\sseqtp?kro*m8s8N#srVl`oqu6BipAXaanc&"VmJc>K +jo49=h>Z(+eGdenb5TBZ^Ab\BZi7$)V>d.eR/WZF5k5OTDmJcSRnc&4\p\ssequ6Nm +rVQTPs+13$s/uBQs+13$s+13$s+13$s+13-s82fprVlZmq>U-fo`"I]n,D_RlMfuGiVqa6g]#b&df.Ji +`W!^Q]Df,8YPtI!U&LV^Pl?[AM>i)*I/\EjErKqTCAqcC@/aL3>5hS%<;o\m:B!rd8c_IR!(d)Zr^QcR +r^?NK`Bo,@ej+dOJO',ua?oYhqaCEPr^QlWr^d#\r_*5cr_NMjr`/r#r`fA0rac"@rb_XTrcS3frdk'& +rf-oArg3VWrhf[priuI6rkABMrlb;drm^r$rn[S4roa:FrpB^Rrpg![rqHEerqcNjrr1mVMuWeUrr)io +rqcWgrq??`rp]pTrp9XIroF(:rnRM*rmUkkrlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRF +raPk6r`];&r`/qor_EGer_!/]r^d#XqaLKPog?eeJO%XKJO"cO!'nLiqa:6Kr^H]Rr^d#[r_!/ar_NMi +r`/r"r`];.raPkiV9PQ%'NU]..iYPu!0])KPFaSsB^dJhetg]$.1jo4EAm/HJQnG`%Yp\sseqYU3irSdd:s8N#s +rVl`oqu6Hkp\sjboD\7YmJcGNjo4<>hu;@/ec*qpb5TBZ_#CkCZi7-,V#I"cRf8HKNW+b5JGsopGQ)R\ +D#S,I@fBa6>lIh(lJ+0@fC'?D#SDQGQ*!hJGtB(N;et=Rf8rYV#IOrZMqB5_#D=Pb5Tceec+;%hu;X7jo4TF +mf)_ToD\F^p\t$gqu6NmrVlfSs+13$s/uBQs+13$s+13$s+13$s+13-s8Murr;QTmq>U0gp\sd`o)A+W +lMg&Ij8Rs8h>Z(+dJhGja8WpS^&GD=!U&LJZQ2ZjDL]2u+IK"EhF8g(VBDuKA?iF:/=oMJ$;>sDk +:A[Z_8-)4N!([#Xr^HBFe3\^O`'Al=JO&Kce3`gqqaLKRr^ZrYr_!/br_NMjr`9#"r`fA/raGe_2r`];%r_remr_NMer_!/\r^ZrWr^HfSog@4qJO%"9JO"cOmQf8gogA^Hr^HfUr^ZrY +r_!/`r_NMir`&ktr`];,ra>_;rbDFNrcJ-brdOj#reg]:rg3VTrhBCnrilC0rkJHNrlP/crm^r"rndY5 +roF(Drp9XRrpp']rqHEfrqcWkrr)iqi;\B.JcDnQJcC<$JcC<$JcC<$JcC<$NW9"Wrr)iorql]jrqQKd +rpp'YrpKdLroX4>rndY/rmh"orlkA\rkABCrj)O(rhoafrg3VKrf-o2rdk&qrcJ-[rbVRGraYq7r`T5& +r`&knr_NMer^m)[r^QuY7f>gU7.N^p6@hD?5_21O5jCVa6M3_C7/f[T8,c'Y8c)3\;#XGnnVUHN&BmK`6r0O8bIET)PJ`X8]F([f4#?`W!sXci2Jof`'b,ir8'=kl1#Ln,DnWpAXgcq>U9j +r;QZlroaZ")df.Pk`ri/,I/\?hErKqTB`;QA@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6e"GR5eoX95_22g5h&-n6i0:K7fGpW +8cDB^9`@ie;Z9\q=oM\*@/a^9C&VuKErL:^I/\ctM#NG6Q2[6OT`1qiY5Yd,^&GnJ`r=9_df.hsh>Z@3 +j8S9Ali-APnc&1[pAXmeqYpBkrVQTSs+13$s/uBQs+13$s+13$s+13$s+130s8N#srVl`oqYp9hp\sga +nc&%Wm/H5Jk5O<>YPtO#V>d%bPl?gEMZ/5,J,X]lEW0kTC&VZB@fBX3=T2A# +;Z9Ml:B!oc8cD9[7KGqH!(HlTog@P%JO$V.JO"cOhE]m`ogA^Hr^HfUr^ZrZr_*5br_WSlr_retr`fA- +raYq@rbMLPrce?frdk'*rf$i?rg`t[ri#h!rj)O8rkeZSrltGjrmh#'ro!e8roa:HrpB^Trq-3_rqQKh +rql]nqu5dYOoPF[qu-NjrqZQgrq-3\rp]pSrosFFro*k5rnIG$rm:Ygrkn`Mrjr*5ri?$qrgs+Vrf[8= +re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'Ci'RE/JO$S-JO"cOi^!K/h*Ud%r^H]R +r^m)]r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1SmrnIG/ +ro*k>rp'LMrp]pYrq-3brqZQirr)`nj8X]1JcDnQJcC<$JcC<$JcC<$JcC<$NW9"Wrr)iorqcWhrqHEa +rpg!Vrp0RHroO.:rnIG)rmC_grlG)Trji$9riZ6trhBC\rfd>CreUQ)rdFcgrbqdQrb2:@ra>_0r`B)! +r_WSir_U)\c0GE`;[sZdJhYpg]$+0iVr!=lMg2Mnb_tXp\t!f +qu6QkroaKAc?-;>lIn*lJ12Ac?BBDZ4\UGQ**kK`6i-OoC[GS,T5_WrB4$\,O)?_Z%^WcMl8kgA]q- +i;VmU6irVQTSs+13$s/uBQs+13$s+13$s+13$s+130s8N#sr;QTmqYp9hp\sd` +nG_kTli-&Gj8Rs8g&BV&ci2)da8WjQ\c0#9Xo>-qU&LGYOoC@>L&QT$I/\6eDZ4GNB)Z3;?N+.-$Kr^HfU +r^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdt-(rf@&CrgNh\ri#h!rjMg=rkSNTrltGhrn7;+ +ro!e:roj@IrpTjWrq-3arqZQirqucorr1sXJcC<$Y5a(QJcC<$JcC<$JcC<$JcC`0rr)iorql]krqQKd +rpp'XrpKdMroO.=rn[S*rmh"orlP/YrkJH?riuI&rh9=^rg!JDrepc-rd=]jrc.pRrbDFBra>_3r`K/! +r_relr__OTcMl5jf)FJ(hu;^9kl0lHnG`"Xo`"Uaq>U9jr;6HU +s,m?YrVl`oqYp9hp\sd`nc&"Vl2KlFj8Rp7gA]\&d/M5f`rdOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWE +n,DkVoD\L`q>U6fr;QZTs+13$s/uBQs+13$s+13$s+13$s+130s8Muoqu6Ejq#:!do)A(Vm/H8KjSn0< +h>Z")e,IYla8X$V^&GA;Yl:R"T`1J\PQ$R@M>i)*HiA9hE;jYPB`;K??N+1.=8l.t;Z9Jh9E%N^8,c!W +70,bCqEs(*qa#cuZ9Wt+JO%jQr^#@,pd=pIr^QlXr^m)^r_NMir_retr`T5,raPkrndY-rm^qnrlY5ZrkABAriuI%rhKIarfmDDrf$i.rdOimrc.pTrbDFBra>_2 +r`B)!r_i_lr_rosFLrp]pY +rqHEerqZQjrqucoj8X]1JcDnQJcC<$JcC<$JcC<$JcC<$NW9"VqtpBgrqHEbrpg!Urp9XJro=":rnRM( +rmUkkrl4rTrk/68riQ0srgs+Xrf[8=reUQ'rd"KcrbqdMrb)4=ra#M,r`9"rr_`Yiqb$iYr^ZrWr^6cS +6i'1+6@hD'5_21O5h/-U6MNqF7/f[T8,c'Y9)_Tb:]=8kU9grTF3Cs8Murr;QTmq>U0gpAXX^ +n,D_Rkl0]CiVq[4f`'D"cMkrb`;[IL[f3K0W;`OjSc4iPO8b%9JGsrqGQ)R\D#S/J@fBa6>lIe'<;obo +:]=&e9)_B\8,c!W7/K@K6f:<16%M;%5_21O5hSF%6/=m)6i0:N7fGpW8H)6\9`@ie;>sPoZC4jo4KCmJcVSo)A@^p\t!fqu6Nm +rT!p/s+13Qs+13$s+13$s+13$s+13$s,I'XrVQKkq#:!do`"@ZmJcDMkPjH>hu;@/eGdkpbPoEY_#CnD +Z2Um)U]-b^R/W0GM>i5.J,XWjF8g+WB`;WC?iF:/=oMG#;#X8i9`@W_8H)-Y7K,^Q6iBC.6@hD$5_21O +5gM^O6Mj.L7/fXS8,c'Y8cDE_:&[ugQ/"/@K'p=DZ4YTFoHjhJc:K)NrG4@S,T2^VuEq"\Gj,> +_Z%^Wc2Q2kg&Be+iVr$>l2L)LnG`"Xp&=^bq#:0frTF3Cs8Murr;QTmq#:!dp&=L\n,D\QkPjQAi;VL1 +f)F+sbl5Z^_>_%F[JmB/V>d+dRf8EJMuJJ1JGsloFT-7YC]7uG@/aI2>5hP$;uTSl:&[ca8cD6Z7fGjO +6et([5c$_s5_22L5i"d%6iKOR7fGpW8cDB^:&[rf;Z9\q>5hh,@/agd[t[/RZ9_>_IRbl6&ifDaP(i;Vg:kPjiImf)bUp&=^bq#:0ir;QZTs+13$s/uBQs+13$s+13$s+13$ +s+130s8Murqu6Hkp\sjbo`"@Zm/H;Lk5O<g`W![P\c/r7Y5Y3q +T)P,VOT(1;L&QN"GlDd`DZ4DMAc?*:>lIn*lJ.1Ac?ECDZ4_VGlE-jL&Qu/OT(XHT)PMaY5Yd,\c0DD`r=0\ +dJh\qgA^"/j8S3?li->Onc&4\pAXgcqu6NmrT!p/s+13Qs+13$s+13$s+13$s+13$s-*K[rr2lqqYpY5YI#U&LJZQ2ZgCL&QZ&HiA-dErKnSB)Z<>?N+(+ +=8l.t;#X8i9`@W_8H)*X7/94K6fp^d5bLAn5_22?5itE16i0:N7fGpW8c)3\;#XDmnVUHN&BmK`6u1OoCdJU&LnfY5Ym/\c0DDa8X9]dJhetgA^%0jSn<@li-APnc&1[p\sseqYU6jrp'NJ +s8N#srVl`oqYp6gpAX[_nG_hSli-#Fir7j7g&BP$d/M2e`;[ON\,N]4Xo>'oSc4uTO8b"8KDp8tGQ)X^ +D>n5JAH#s8>Q.b(<;obo:]=&e9)_E]7fGjU7/0.36@hCl5_21O5fu@S6MNqI7/fXS7fH!Y9E%Wa:]=8k +<;p#!>Q/"/AH$nSTGQ*!hKDp`,O8bLFSc5A_Xo>X*\,O/A`;[pYd/MSpg&Bn.ir8'=li-;NnG`%Y +p&=^bqYpBkrVQTYs+13$s/uBQs+13$s+13$s+13$s+136s82fprVlZmq>U-fo`"I]n,DYPl2KcCi;VR3 +fDa.rcMkoa_>_.I[/R-*W;`FgR/W?LN;eJ/JGsloF8g.XCAqcC@fB[4=T2A#;>sDk:B!oc8H)-Y7fGgQ +6NKM?i^/2]TKn&nJO%4?j$N`4qaCEQr^ZrYr_*5ar_WSkr`&l!ra#M0raYqArbVRSrd"Kjrdt--rf6uE +rgs+`ri?%*rj_sCrl>#\rm:Yrrn7;/roF(@rp0RPrpg![rqHEerqcNjrr23_PlLa^rr)iorqcWgrq??` +rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_l +r_NMdr_!/\r^QlUr^?WNr^,a6JO#_jJO"cOb!=lOr^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4G +rc.p\rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu5j[ +JcC<$Y5a(QJcC<$JcC<$JcC<$JcCr6qu6TnrqcWirqHE`rpp'WrosFGro="8rnRM(rm:Yhrl4rPrk/6: +ri5sprh'1Urf[8=rdt-!rd"K`rbqdMrac";r`oG)r`9"qr_NMfr_*5]r^ZrVpd5'K6K1=_5bLAn5_22? +5iY3+6i0=O8,c-[9`@ie;>sMn=8lG'?2e@5B`;fHEW14^HiATqMZ/Y8Q2[BSUAh1lZi7E4^])7Pao9Zd +f)FA%hu;[8jo4NDn,DhUoD\L`q#:-erVlf]s-3Q_rr2lqr;QQlp\sjbo)A.Xm/H8KjSn-;hYu.+e,I\m +a8X!U^AbM=Y5YC!T`1DZPl?X@LAl`&HN&'dE;jVOB)Z9=?2e"+=8l+s;#X5h9E%N^8,bsV7/0.K6KUUc +5b()j5_22C5i>!+6iKLQ7K,gV8cDB^:B")h;Z9bs>5hh,@fC!=CAr2OFoH^dJGt<&N;f(@Rf8uZW;a"" +[/Rf=_Z%UTci2DmfDaY+iVqp;l2L&KnG`"Xp&=^bqYpBkrVQTYs+13$s/uBQs+13$s+13$s+13$s+136 +s82fpr;QQlq>U-foD\=[mf)JMkPjK?hYu:/ec*nobl5T\^Ab_CZMpm'VZ*1dQ2ZpFMZ/2+If=QjEW0kT +C&VWA@/aC0=8l5!;>s>i9`@Z`8H)-Y7JK4N6:0ZuJO#knJO"cO`^&QNpd=pIr^ZrZr_*5cr_`Ynr`9#% +ra#M4rb2:Grc%j[rd+Qore^W6rfmDQrh9=krj)O3rkABNrlG)brmh##rndY6roO.DrpKdSrq$-`rqQKh +qu$HmlMm+Krr2oprql]krqHEbrpp'Wrp0RJro="9rn[S)rmLekrl4rRrk8<;riZ7!rh'1Xrfd>>re:?$ +rd"KarbqdMrau.rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFK +rpTjWrq69brqcWkrquZml2Q>7JcDnQJcC<$JcC<$JcC<$JcC<$PQ1OZrquclrqZQerpp'YrpKdLroX4= +rn[S-rm^qnrlkA[rk8CreUQ)rdFchrc%jRrb)4=ra5Y/r`9"tr_WSgr_*5^r^ZrW +r^HTL!CB-=6@hCg5_21O5eTGL6MNqF7K,dU8H)6\:&[ug;Z9\q>5hh,@K'p=CAr2OG5cddJGt?'MZ/e< +S,T#YW;a%#[Jml=`;[gVci2GnfDaV*iVqp;kl1#Ln,DnWpAXgcqYU3irp'NJs8N#sr;QTmqYp3fo`"C[ +n,DYPkl0T@hu;F1ec+"rcMkf^_>_+HZMps)VZ*.cQi<-HM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj +9`@W_8H)*X7K,^M6iKF@6@hCc5_21O5f#_M6Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$9ADuOhW +GQ**kK`6i-OoC^HSc5McXo>X*]`,_G`W"0^dJh\qh#?41ir80@li-APnc&1[pAXpfqu6NjrosH6s+13Q +s+13$s+13$s+13$s+13$s-*K[rr2ipq>U0gpAXU]nG_hSkl0`DiVqX3gA]V$cMl#d_u@=J\c/i4W;`Rk +S,STMNrFe4JGsurFT-4XD#S)H@K'X5>Q.\&<;o_n:&[fb8cD6Z7fGjO6NKM?nO!+=JO#PeJO"cO]g2Q_ +mm?e:qaLKRr^d#\r__1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd>$Iog8OA +JO#DaJO"cO_*IuclpCS:r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"@rbh^TrcS3ire(3+rfI,Frg`ta +ri?%'rk&0Frl"f\rmC_qrnIG0ro3q@rp'LNrp]pZrq??erql]mqu5j[JcC<$Y5a(QJcC<$JcC<$JcC<$ +JcCr6qu6TmrqZQgrq??]rp]pSroj@Dro*k3rn@A#rltGarkeZHrjVm1rhf[hrgNhKrf-o3rdXoprcJ-W +rbMLEra>_3r`];%r_relr_3;ar^m)Zr^QlTqa:9JnNqdlO[+I_JO$e3ksGA:qaCEQr^d#\r_3;er_`Yp +r`T5)ra>_:rb2:KrcJ-`rdXp%re^W9rgEbWrh]Usrj)O8rkeZSrltGkrmh#'ro*k;roj@KrpKdUrq??c +rqZHhrr23_PlLa^rquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHCrilC%rhTO`rg!JDreLK* +rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WNpd4X?r]u*#O?e@^JO$q7r^#m;r^6QNr^QlW +r^m)_r_rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$Brkn`Zrm:YornIG0ro3q@ +rp'LNrp]pZrq??erql]mqu5j[JcC<$Y5a(QJcC<$JcC<$JcC<$JcCr6qu-NlrqZQgrq69\rp]pSroj@D +ro!e1rn.4urlkA`rk\TFrjVm1rhf[grgEbJrf-o1rdFclrcA'VrbMLDra>_3r`T5#r_relr__:rb)4JrcA'^rdFd!reUQ8 +rg<\Trh]Usrj)O7rk\TPrlkAirmh#&ro!e8roa:IrpKdUrq69arqZHhrr)-^QiI'arr)iorqcWirq69^ +rp]pTrp'LGro*k5rn@A#rm1SerkeZJrji$4ri5smrgNhOrf@&5rdk&rrcJ-Yrb_XGraPk6r`T5%r`&kn +r_EGdr^m)[r^QlTqa:-Fog8XDJO#;^JO"cO^-MZ`lpC\=qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y6ral(G +rc.pZrd=]qreCE5rfmDNrhKImrilC4rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQjrqucorr20^ +JcC<$Y5a(QJcC<$JcC<$JcC<$JcCr6rr)iorql]jrqQKcrpg!WrpB^KroX4re18urd"K`rb_XLrac"8ra#M+r`&kpr_NDar^m)Zr^HTLr'Kp?JO#>_JO"cO\j5LH +qa:?Nr^QlXr^m)^r_NMir_reur`];/rac"@rb_XTrcS3fre19+rfI,GrgWn^riZ7+rjr*Frl"f[rmLer +rnIG1ro3q?rp9XPrpg!\rq??erql]mrr)-^QiI'arr)inrqcWirq69^rp]pTrp'LGro*k5rn@A#rm1Se +rkeZJrj_s3ri,mkrgNhNrf@&4rdauprcA'XrbVRFraPk5r`T5$r_i_lr_$Mr^ZrZr_*5br_WSlr`9#$ra5Y6ral(FrbqdWrd4Wpre:?4rfmDNrhBCkrilC3 +rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQirql]nrr20^JcC<$Y5a(QJcC<$JcC<$JcC<$JcCr6 +rr)iorql]jrqQKcrpg!Wrp9XJroX4;rnIG)rmC_hrlP/Urji$9riZ6rrh9=YrfI,_JO"cO\j5LHqa:?Nr^QlWr^d#]r_NMir_retr`T5- +raYq=rbVRSrcS3fre(3)rf@&FrgWn^riQ1)rji$Erl"f[rmC_prnIG0ro*k>rp0RNrpg!\rq??erql]m +rr)-^QiI'arr)inrqcWirq69^rp]pSrosFFro!e3rn@A"rm(MdrkeZJrjVm1ri#gjrgNhNrf6u2rdXoo +rcA'WrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5b +r_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1rk8_JO"cO\j5LHqa:?Nr^HfVr^d#]r_NMir_i_sr`T5-raYq=rbVRRrcJ-ere(3)rf6uDrgNh\ +riH+&rj_sBrkn`YrmC_prn@A/ro*k=rp'LMrpg!\rq??drql]mrr)-^QiI'arr)inrqcWhrq69^rp]pR +rosFEro!e2rn7;!rm(Mcrk\THrjMg/ri#girg<\Jrf-o1rdXoorc8!UrbMLDraGe4r`K/"r_`Ykr_$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdVrd4Wp +re191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]nrr20^JcC<$Y5a(Q +JcC<$JcC<$JcC<$JcCr6rr)iorql]irqHEbrpg!Vrp0RHroF(9rn7;&rm:Yerl>#Rrji$9riQ0orgs+T +rf6u8rdt,srd"K_rbVRKraYq6r`oG)r_renr_NMdr_!/[r^HfSpd=sGoKrOCJO#>_JO"cO\j6-Ymm?n= +r^?`Sr^ZrYr_*5dr_WSlr`B)%ra,S6ral(Frc.pZrd=]sreCE4rg*PPrh9=mric=2rkJHMrlY5ermUl" +rnm_6roX4FrpB^Trq69arqQKirqucolMm4Nrr2oqrql]krqQKcrq$-Yrp9XKroO.;rnRM+rmC_irlP/U +rk/6=riZ6urh07Xrf[8?re(3"rd4Wbrbh^Nrac"9ra#M*r`/qpr_WSgr_*5\r^QlUpd=gCpd4jDJO#;^ +JO"cO]0Q?]mm?e:r^HfUr^Zr\r_7JcDnQJcC<$JcC<$JcC<$JcC<$PQ1X\ +rqucmrqQKerq-3[rpTjProa:Arnm_.rn%.rrlY5\rkJHCrjDa-rhBC`rg!JCreg],rd4Whrc.pQrb;@A +ra,S/r`K.ur_`Yir_!/]r^ZrVr^?NKr'L$BJO#5\JO"cOZp=(Hqa:?Nr^HfVr^d#\r_EGgr_i_sr`T5, +raYq=rbMLQrcJ-drdt-(rf6uCrgEbZriH+&rj_sArkeZWrm:Ynrn7;.ro*k=rp'LMrpg![rq69crql]m +rr)-^QiI'arr)inrqcWhrq-3\rp]pRrosFDro!e2rn7:urltGarkSNFrjMg/rhoagrg3VHrf-o0rdXon +rc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTLpd4aBJO#)XJO"cO\3TLLpd>$Lr^QlWr_!/`r_NMj +r`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07griZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrq$-] +rqQKgrql]nrr20^JcC<$Y5a(QJcC<$JcC<$JcC<$JcCr6rr)iorql]irqHEarp]pTrp0RGro="8rn7;& +rm:Yerl>#Qrj_s7riQ0orgs+Srf-o6rdk&qrcnE^rbMLHraPk5r`fA'r_i_mr_EGbr^m)Zr^HfSpd=sG +oKn*oN^/.\JO$S-mm?n=r^?`Sr^ZrYr_!/br_NMkr`B)%ra,S5ral(Erc.pZrd4Wqre:?2rg!JNrh9=m +ric=1rkABKrlY5ermUl"rnm_6roO.ErpB^Srq-3_rqQKirqucolMm4Nrr2oqrql]krqQKbrpp'Wrp9XJ +roF(:rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[ +r^QlUpd=gCpd0NsMEl_XJO$_1mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiurf$i= +rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iql2Q>7JcDnQJcC<$JcC<$ +JcC<$JcC<$PQ1X\rqucmrqQKerq-3ZrpKdOroX4?rnm_.rn%.rrlY5\rkJHBrj;[,rhBC`rg!JBre^W* +rd+Qfrc%jPrb2:?ra,S.r`B(sr_`Yir_!/]r^ZrVr^?NKr'L$BJO#5\JO"cOZp=(Hqa:?Nr^HfVr^d#\ +r_EGgr_i_sr`T5,raPk_2r`B)!r_`Yjr_3;`r^ZrWr^HTLpd4aBJO#)XJO"cO\3TLLpd>$L +r^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2 +roF(Brp9XQrpp'\rqQKgrql]nrr20^JcC<$Y5a(QJcC<$JcC<$JcC<$JcCr6rr)iorql]irqHEarp]pT +rp0RGro="8rn7;&rm1Sdrl>#Qrj_s7riH*nrgs+Srf-o6rdk&prce?\rbMLHraPk5r`fA'r_i_mr_EGb +r^m)Zr^HfSpd=sGoKn*oN^/.\JO$S-mm?n=r^?`Sr^ZrYr_!/br_NMkr`B)%ra,S5ral(Erc%jXrd+Qp +re:?2rg!JNrh9=lriZ70rkABKrlY5drmLf!rnm_6roO.ErpB^Srq-3_rqQKirqucolMm4Nrr2oqrql]k +rqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M) +r`/qpr_NMer_!/[r^QlUpd=gCpd0NsMEl_XJO$_1mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFL +rc.p_rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iql2Q>7 +JcDnQJcC<$JcC<$JcC<$JcC<$PQ1X\rqucmrqQKerq-3ZrpKdOroX4?rnm_.rn%.qrlY5\rkJHBrj;[+ +rhBC`rg!JBre^W*rd+Qfrc%jPrb2:?ra,S.r`B(sr_`Yir_!/]r^ZrVr^?NKr'L$BJO#5\JO"cOZp=(H +qa:?Nr^HfVr^d#\r_EGgr_i_sr`T5,raPk_2r`B)!r_`Yjr_3;`r^ZrWr^HTLpd4aBJO#)X +JO"cO\3TLLpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griQ1-rk&0F +rlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr20^JcC<$Y5a(QJcC<$JcC<$JcC<$JcCr6rr)io +rql]irqHEarp]pTrp0RGro="8rn7;&rm1Sdrl>#Qrj_s7riH*nrgs+Srf-o6rdk&qrcnE^rbMLHraPk5 +r`fA'r_i_mr_EGbr^m)Zr^HfSpd=sGoKn*oN^/.\JO$S-mm?n=r^?`Sr^ZrYr_!/br_NMkr`B)%ra,S5 +ral(Erc.pZrd4Wqre:?2rg!JNrh9=lriZ70rkABKrlY5drmLf!rnm_6roO.ErpB^Srq-3_rqQKirquco +lMm4Nrr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,urd+Qa +rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=gCpd0NsMEl_XJO$_1mm?e:r^HfUr^Zr[r_3;er_`Yo +r`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3b +rqZQjrr)iql2Q>7JcDnQJcC<$JcC<$JcC<$JcC<$PQ1X\rqucmrqQKerq-3ZrpKdOroX4?rnm_.rn%.r +rlY5\rkJHBrj;[,rhBC`rg!JBre^W*rd4Whrc.pQrb2:?ra,S.r`B(sr_`Yir_!/]r^ZrVr^?NKr'L$B +JO#5\JO"cOZp=(Hqa:?Nr^HfVr^d#\r_EGgr_i_sr`T5,raPk_2r`B)!r_`Yjr_3;`r^ZrW +r^HTLpd4aBJO#)XJO"cO\3TLLpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2H +rh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr20^JcC<$Y5a(QJcC<$JcC<$ +JcC<$JcCr6rr)iorql]irqHEarpg!Vrp0RHroF(9rn7;&rm:Yerl>#Qrji$9riQ0orgs+Srf6u8rdt,r +rcnE^rbMLIraYq6r`oG)r_renr_EGbr^m)Zr^HfSpd=sGoKn*oN^/.\JO$S-mm?n=r^?`Sr^ZrYr_!/b +r_NMkr`B)%ra,S6ral(Erc.pZrd4WrreCE4rg!JNrh9=mric=2rkABKrlY5ermUl"rnm_6roX4FrpB^T +rq-3_rqQKirqucolMm4Nrr2oqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=gCpd0NsMEl_XJO$_1mm?e:r^HfU +r^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ro!e; +roj@Jrp]pYrq-3brqZQjrr)iql2Q>7JcDnQJcC<$JcC<$JcC<$JcC<$PQ1X\rqucmrqQKerq-3[rpTjP +roa:Brnm_/rn%.srlb;^rkJHCrjDa-rhKIbrg!JCrepc.rd4Whrc.pQrb;@Ara5Y1r`K.ur_`Yiqb$iY +r^QlTpd=sGoKrOCJO#>_JO"cO\j6-Ymm?n=r^?`Sr^ZrYr_!/br_NMkr`B)%ra5Y7ral(Erc.pZrd4Ws +reCE4rg!JNrhBCnric=2rkABKrlb;grm^r$rnm_6roX4FrpB^Trq-3_rqQKirqucolMm4Nrr2oqrql]k +rqQKbrpp'Xrp9XKroX4re19#rd+Qarbh^Mrac":ra,S+ +r`/qpr_NMer_!/\r^QlUpd=gCpd4jDJO#;^JO"cO]0Q?]mm?e:r^HfVr^d#\r_3;er_`Ypr`K/+raGe: +rbDFMrc8!ardXp#rf-o?rg3VXrhoaurjMg=rkSNUrm(Mkrn7;,ro!e7JcDnQJcC<$JcC<$JcC<$JcC<$PQ1X\rqucmrqQKerq69\rpTjProa:Brnm_/rn%.srlb;^rkSND +rjDa-rhKIbrg*PDrepc.rd=]jrc.pRrbDFBra5Y1r`K.ur_`Yjqb-oZr^QlTpd=sGnNqdlO[+I_JO$e3 +ksG87r^?`Sr^ZrYr_*5dr_WSlr`B)%ra5Y7ral(Frc.pZrd=]treCE4rg*PPrhBCnric=2rkJHMrlb;g +rm^r$rnm_6roX4FrpB^Trq69arqQKirqucolMm4Nrr2oqrql]krqQKcrq$-Yrp9XKroX47JcDnQJcC<$JcC<$JcC<$JcC<$ +PQ1X\rqucmrqZQgrq69\rp]pRroj@Drnm_0rn.4trlkA`rk\TErjDa.rhTOerg<\Hrf$i/rd=]jrc8!S +rbDFBra5Y1r`K/!r_i_kqb-oZr^ZrVpd=sGnNqdlO[+I_JO$e3ksG87r^?`Tr^ZrYr_*5dr_WSmr`B)% +ra5Y7ral(Frc8!\rd=]treCE5rg3VRrhKIpriuI5rk\TPrlkAhrm^r%rnm_6roa:HrpB^Trq69arqZQj +rqucolMm4Nrr2oqrql]krqZQdrq$-YrpB^Lroa:=rn[S-rmLekrlb;Xrk87JcDnQJcC<$JcC<$JcC<$JcC<$PQ1OYrquckrqQKcrpg!Wrp9XJroX4; +rnIG)rmC_hrlP/Urji$9riZ6srh9=YrfI,_JO"cO\j5LHr^6QNr^QlWr^m)_r_NMjr`&kur`T5-raYq>rb_XUrc\9hre(3)rf@&F +rg`t`riQ1)rji$Erl"f[rmC_prnIG0ro*k>rp0RNrpg!\rq??equ$HllMm4Nrr2oqrquclrqZQdrq$-Y +rpB^Lroa:=rn[S-rmLekrlb;Xrk87 +JcDnQJcC<$JcC<$JcC<$JcC<$PQ1OYrquckrqQKcrpg!WrpB^KroX4re19!rd+Qbrbh^Nral(:ra,S,r`/qrr_NMfr_*5^r^ZrWr^?WNr'Kp?JO#>_JO"cO\j5LH +r^6QNr^QlXr_!/ar_NMjr`&l!r`fA0ral(Arbh^Vrc\9hre19,rfI,Hrg`tariZ7+rjr*Frl"f[rmLer +rnIG1ro3q?rp9XPrpg!\rq??equ$HllMm4Nrr2oqrquclrqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;X +rk8rp'LNrp]pYrq69drql]mrr)iql2Q>7JcDnQJcC<$JcC<$JcC<$JcC<$ +PQ1OZrquckrqQKdrpg!WrpB^KroX4=rnRM,rmUkkrlP/Vrk&0=ricreCE%rd=]erbh^N +ral(:ra,S-r`9"sr_NMer_*5^r^ZrWr^?WNr'Kp?JO#>_JO"cO\j5LHr^6QNr^QlXr_!/`r_NMjr`/r# +r`fA0ral(Brbh^Wrce?kreCE/rfI,Irgs+criZ7+rk&0Hrl4r^rmUksrnRM3roF(BrpB^Qrpg!]rqHEf +qu$HmlMm+Krr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrji$4ri5snrg`tQrf@&6re(3! +rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa:-Fog8XDJO#;^JO"cO^-MZ`lpC\=qaCEQr^ZrZ +r_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureLK6rg!JQrhTOnrilC4rkABLrlkAgrm^r%rnm_7roj@H +rpKdTrq-3`rqZQjrquZml2Q>7JcDnQJcC<$JcC<$JcC<$JcC<$PQ1OZrquclrqZQerpp'YrpKdLroX4= +rn[S-rmUklrlb;Yrk/6@rilC#rhTO`rf[8AreLK'rd=]frbqdPrau.;ra,S-r`9"tr_NMfr_*5^r^ZrW +r^?WNr'Kp?qa#cuQU$*eJO$n6r^#d8r^6QNr^QlXr_!/ar_NMjr`/r#r`oG1rau.CrbqdYrcnElreCE0 +rfR2Lrgs+eric=-rk/6Jrl4r_rmUktrn[S4roF(BrpKdSrpp'^rqHEgqu$HmlMm+Krr2oprql]krq??` +rpg!Vrp0RIro3q7rnRM&rm:Yhrl"fNrk&07riH*qrgj%SrfI,9re(3!rc\9]rbh^IraYq7r`fA'r`/qo +r_EGdr^m)[r^QlTqa:-Fog8OAJO#DaJO"cO_*IucksGA:qaCEQr^ZrZr_3;dr_WSor`K/(ra5Y7rau.I +rc8!]rdOj!re^W9rg3VTrh]UpriuI7rkSNOrltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWkrquZml2Q>7 +JcDnQJcC<$JcC<$JcC<$JcC<$PQ1OZrquclrqZQerpp'YrpKdLroX4=rn[S-rm^qnrlkA[rk8CreUQ)rdFchrc%jRrb)4=ra5Y/r`9"tr_WSgr_*5^r^ZrWr^HTL!CB-=6@hCg5_21O5eTGL +6MNqF7K,dU8H)6\:&[ug;Z9\q>5hh,@K'p=CAr2OG5cddJGt?'MZ/e_+HZMps)VZ*.cQi<-HM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6iKF@6@hCc +5_21O5f#_M6Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$9ADuOhWGQ**kK`6i-OoC^HSc5McXo>X* +]`,_G`W"0^dJh\qh#?41ir80@li-APnc&1[pAXpfqu6NjrosH6s+13Qs+13$s+13$s+13$s+13$s-*K[ +rr2ipqYpQ._'$Ik!FVaS3VWjJO%@Ci'R<.r^?`Sr^ZrZr_!/a +r_WSlr`9##r`oG2ral(CrbqdXrd"Kmre:?0rfd>Lrh'1griZ7,rk8Q.q-@fC*@D#SGRGlE'hK)UZ, +NrG=CT)PJ`X8]I)[f4&@`r=*Zd/MSpf`'e-j8S0>lMg5NnG`(Zp\sseqYU3irp'NJs8N#sr;QTmqYp6g +pAX[_n,D\QlMflDiVq^5f)F+sci1ua_u@CL[/R9.WW&RiRf8QNN;eV3Jc9upFoH@ZC]7rF@K'R3=oMM% +;Z9Ml:B!lb8cD9[7fGjU7/K@N6KUUc5b()j5_22C5i>!.6iKLQ7K,dU8H)3[9)_Tb;#XAl=8lD&?2e:3 +B)ZTFE;k"ZHN&KpLAm/2Pl@-NT`1qiYPtp.^Ac"Ka8XEae,IqthYuL5jSnHDm/HJQoD\F^p\t$gqu6Nj +rosH6s+13Qs+13$s+13$s+13$s+13$s-*K[rr2lqqYpZ%*d/M>iaSs$T +^&GDrbMLQrc\9frdk'( +rf-oBrgWn[ri5t$rjMg@rl"fXrm1Smrn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nl2Q>7JcDnQJcC<$ +JcC<$JcC<$JcC<$PQ1OZrr)imrqZQfrq-3\rpTjPrp'LDro!e4rn7;!rm1Sbrk\TIrjMg/ri5skrgEbN +rf6u3rdk&qrcJ-[rbVRGraYq6r`K/$r_remr_NMer^m)[r^QlTq*Y*Jk!FVaTKn&nJO%4?k!Jr4qaCEQ +r^ZrZqb6ucr_rerr`K/+ra>_:rbMLMrcA'brdOj"rf-o>rgEbZrh]UsrjMg:rkSNRrlb;grn.5(ro!e: +roX4GrpTjVrq-3arqQKhqu-NnlMm+Krr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5YrkJHA +rj)O*rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Yr^HfSpd=11JO#_jJO"cO +b!>)Upd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHN +rlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5j[JcC<$Y5a(QJcC<$JcC<$JcC<$JcCr6qu6Tn +qtg#Srjr*:ric_r^d#Yr^QlT!CK6N6et([5cd5% +5_22N5i"d%6i0:N7fGpW8H)6\:B"&g;Z9_r=T2V*@K'g:C&W&MErL@`J,Y'!MuJn=QN!KTVZ*UpYl;96 +^Ac+Nbl5rfec+>&h>ZF5kPj`Fmf)bUoD\I_q#:*gqtp?Ts,m?\rVl`oqu6Ejq#:!do)A+WmJc>Kjo46< +h>Z(+eGdbmao96X^&GJ>YPtL"UAg__PQ$XBMZ//*I/\?hE;j\QC&VT@?iF=0sAj9`@Z`8H)-Y +7fGgQ6i07/6N09%5c[/$5_22R5lO(*6Mj.I7/f[T8,c'Y9)_N`:]=5j<;oqt>lJ+0@fC*@D#SDQGQ*!h +JGtH*NrG7ASc5A_W;a""[f3u>`;[mXcMl>mg&Bh,iVqsU9jr;QZTs+13$s/uBQ +s+13$s+13$s+13$s+130s8Murr;QTmqYp6gp&=L\n,D_Rkl0ZBir7a4fDa;!cMkl``;[IL[/R?0W;`Li +Sc4lQN;e\5Jc9upGQ)R\C]8#H@fB^5>Q._';Z9Pm:A[]`8H)-Y7fGdV6UU];h*V!)JO$M+JO"cOfKfF% +h*Um(qaCEQr^ZrYr_*5cr_NMkr`B)%ra,S5ral(Erc%jXrd+Qpre190rfmDKrh07gri?%)rk/6Frl4r^ +rm:YqrnIG.ro="@rosFNrpg!Zrq??erql]mqu,^XOoP=WrquclrqQKdrpp'XrpKdLroO.=rn[S,rmh"o +rlY5ZrkABArj)O'rhTOcrg!JErepc-rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;ar^d#Yr^QlTqa:6J +i'R<,JO$A'JO"cOgd(j)g-Y[(qaCEQr^ZrYr_*5br_NMjr`&kura#M2raYqBrb_XSrd"Klrdt--rfI,E +rh'1cri5t'rj_sArl+lZrm1Sorn7;,ro3q>roj@Lrp]pXrq??drqcNirr(mWJcC<$Y5a(QJcC<$JcC<$ +JcC<$JcC`0rr)iorql]krqQKdrpp'XrpKdMroO.=rn[S*rmh"orlP/YrkJH?riuI&rh9=^rg!JDrepc- +rd=]jrc.pRrbDFBra>_3r`K/!r_relr__OTcMl5jf)FJ(hu;^9 +kl0lHnG`"Xo`"Uaq>U9jr;6HUs,m?YrVl`oqYp9hp\sd`nc&"Vl2KlFj8Rp7gA]\&d/M5f`rdOpZi7N7 +_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QZTs+13$s/uBQs+13$s+13$s+13$s+130s8N#s +r;QTmqYp9hp\sd`nG_kTli-&Gj8Rs8g&BV&ci2)da8WjQ\c0#9Xo>-qU&LGYOoC@>L&QT$I/\6eDZ4GN +B)Z3;?N+.-$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdt-(rf@&CrgNh\ri#h!rjMg= +rkSNTrltGhrn7;+ro!e:roj@IrpTjWrq-3arqZQirqucorr1sXJcC<$Y5a(QJcC<$JcC<$JcC<$JcC`0 +rr2oprql]krqQKerq-3ZrpTjQroa:Brnm_0rn.4trlkA`rk\TFrjMg0rhf[hrgWnMrf@&6rdk&src\9[ +rbh^KraPk6r`fA'r`/qpr_NMfr_!/\r^ZrW!CT5hh,@K'p=C&W)NG5cddJGt<&MZ/b;Rf8oXV>dXsZMqH7_>_CPbl6#heGe5%hu;U6k5O]G +mJcVSo`"O_q#:-hqu6NjroaZ.-df.PkbPoBX^&GP@ +Yl:[%V#Hn`QN!!FM>i/,J,XZkF8g+WB`;QA@/aF1=oMJ$;Z9Ml:B!lb8cD9[7fGjU7/0.'6N09%5dWe- +5_22[5lO('6MNqI7/fXS7fGsX8cD?]:B")h;Z9_r=T2S)@/aa:B`;rLF8gC_J,Y-#M>iV9QN!ERV#ICn +Yl;03^Ac"KbPoiedf.u"h>Z@3k5OWEmJcSRo)A:\q#:*gqYpElrVlfVs+13$s/uBQs+13$s+13$s+13$ +s+130s8N#srVl`oqYp9hp\sganc&%Wm/H5Jk5O<>YPtO#V>d%bPl?gEMZ/5, +J,X]lEW0kTC&VZB@fBX3=T2A#;Z9Ml:B!oc8cD9[7KGqH!(HlTog@P%JO$V.JO"cOhE]m`ogA^Hr^HfU +r^ZrZr_*5br_WSlr_retr`fA-raYq@rbMLPrce?frdk'*rf$i?rg`t[ri#h!rj)O8rkeZSrltGjrmh#' +ro!e8roa:HrpB^Trq-3_rqQKhrql]nqu5dYOoPF[qu-NjrqZQgrq-3\rp]pSrosFFro*k5rnIG$rm:Yg +rkn`Mrjr*5ri?$qrgs+Vrf[8=re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'Ci'RE/ +JO$S-JO"cOi^!K/h*Ud%r^H]Rr^m)]r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+d +riH+'rjr*Crkn`Zrm1SmrnIG/ro*k>rp'LMrp]pYrq-3brqZQirr)`nj8X]1JcDnQJcC<$JcC<$JcC<$ +JcC<$NW9"Wrr)iorql]jrqQKdrpp'YrpKdLroX4>rndY/rmh"orlkA\rkABCrj)O(rhoafrg3VKrf-o2 +rdk&qrcJ-[rbVRGraYq7r`T5&r`&knr_NMer^m)[r^QuY7f>gU7.N^p6@hD?5_21O5jCVa6M3_C7/f[T +8,c'Y8c)3\;#XGnnVUHN&BmK`6r0O8bIET)PJ`X8]F([f4#?`W!sXci2Jof`'b, +ir8'=kl1#Ln,DnWpAXgcq>U9jr;QZlroaZ")df.Pk +`ri/,I/\?hErKqTB`;QA@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6e"GR +5eoX95_22g5h&-n6i0:K7fGpW8cDB^9`@ie;Z9\q=oM\*@/a^9C&VuKErL:^I/\ctM#NG6Q2[6OT`1qi +Y5Yd,^&GnJ`r=9_df.hsh>Z@3j8S9Ali-APnc&1[pAXmeqYpBkrVQTSs+13$s/uBQs+13$s+13$s+13$ +s+130s8N#prVl`oqYpn(d/M;h`r5hS%;>sDk:&@Q^8-)4N!([#XqaC*Ee3\^O`'Al=JO&Kce3a%"ogJdKr^ZrY +r_!/ar_EGir`9#"r`oG1raPk>rb_XRrcS3frdXp%rf6u@rgEbZrhTOprj;[6rkSNQrlP/drmq)%rnm_8 +roO.DrpKdSrpp'^rqHEgqu$Hlqu5dYOoPF[qu-Nlrql]krq??`rpg!Vrp0RJroF(;rndY+rmUkmrl>#U +rkJH?rilC&rhBC_rg3VGrepc0rdOilrcJ-XrbDFFraGe4r`fA&r_remr_EGdr_!/\r^ZrWpdFmEe3\^O +^d*H9JO&Wge3`ptpdG*Nr^ZrYr_!/_r_EGhr`&ktr`fA.raGe=rbMLOrcJ-brdOj#reg]:rg3VTrhBCm +rilC0rkJHMrl>#armUkurndY5roF(Crp9XQrpg![rq??frql]mrr)`nj8X]1JcDnQJcC<$JcC<$JcC<$ +JcC<$MZiV9PQ%'NU]..iYPu!0])KPFaSsB^dJhetg]$.1 +jo4EAm/HJQnG`%Yp\sseqYU3irSdd:s8N#srVl`oqu6Hkp\sjboD\7YmJcGNjo4<>hu;@/ec*qpb5TBZ +_#CkCZi7-,V#I"cRf8HKNW+b5JGsopGQ)R\D#S,I@fBa6>lIh(lJ+0@fC'?D#SDQGQ*!hJGtB(N;et=Rf8rY +V#IOrZMqB5_#D=Pb5Tceec+;%hu;X7jo4TFmf)_ToD\F^p\t$gqu6NmrVlfSs+13$s/uBQs+13$s+13$ +s+13$s+13-s82fprVlZmq>U-fo`"I]n,D_RlMfuGiVqa6g]#b&df.Ji`W!^Q]Df,8YPtI!U&LV^Pl?[A +M>i)*I/\EjErKqTCAqcC@/aL3>5hS%<;o\m:B!rd8c_IR!(d)Zr^QcRr^?NK`Bo,@ej+dOJO',ua?oYh +qaCEPr^QlWr^d#\r_*5cr_NMjr`/r#r`fA0rac"@rb_XTrcS3frdk'&rf-oArg3VWrhf[priuI6rkABM +rlb;drm^r$rn[S4roa:FrpB^Rrpg![rqHEerqcNjrr1mVMuWeUrr)iorqcWgrq??`rp]pTrp9XIroF(: +rnRM*rmUkkrlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6r`];&r`/qor_EGer_!/] +r^d#XqaLKPog?eeJO%XKJO"cO!'nLiqa:6Kr^H]Rr^d#[r_!/ar_NMir`/r"r`];.raPksMn=8lD&?2e:3BDuWEDuOkXGQ*'jK`6c+O8bIERf9#[WW'%! +[/R`;^])7Pc2Q)hec+>&h>ZI6kPj`Fmf)bUoD\C]p\sseqYU6jro*m8s8N#srVl`oqYp9hpAX^`o)A+W +mJc>Kjo49=h>Z(+eGdenb5TBZ^Ab\BZi7$)V>d.eR/WlIn*=8l+s +;#X5h9E%Q_8GG[L7/K?m6@hDM5_21O5QF'g6N0@I7/07N8H)3[9E%]c;#XAl=8lA%>lJ.1AH$6@DZ4YT +FoHggJc:B&NrG4@R/WcXVZ*XqZi7K6^Ac+Nb5T`deGe/#h>ZF5k5OTDmJcVSo)A:\pAXjdqYpBkrVQTP +s+13$s/uBQs+13$s+13$s+13$s+13-s82fprVQKkq>U*eo`"C[n,D_Rl2KfDir7g6fDa>"ci2&c`rL]2i'IK"HiE;jbSC&VZB@fB^5=T2A#;uTVm:]=#g8P&nRr^d#YqaUQRr^?sVq +=8lJ(?iFL5BDu`HDuOkXHN&?lKDpf.NrG=CSc5;]VuEjuZMqK8_#D7Nbl6&iec+8$hu;U6k5OZFm/HMR +oD\C]p\t!fqu6NjrVlfTs,6pVrqlZnr;QQlq#:$eo`"C[n,DYPl2KfDi;VO2g&BJ"ci2,e_>_1J\c/i4 +X8]!qTDk8XPl?[AL]2o)I/\BiF8g(VCAqlF@/aI2>Q.\&;u9Dj:B!rd8cD9[8,c!T7K,^G6bbte6%M;d +5_21f5lO(:6IS9o6i0:N7JfRR8,c'Y8cDE_:&@cd<;oqt>Q.t.@/ag_XWci2Dmg&Be+i;Vj;kl0oIn,DnWo`"Uaq>U6fr;QZlro!g-s+13Qs+13$s+13$ +s+13$s+13$s,-jRrr2lqr;QTmqYp9hp\sganG_nUm/H5Jk5O<?N+4/=T2;!;uTSo:/1dar_3;ar^coVqaUQRpdG!H^I!K;lTp(f +PX4_(cU.UupdG!Jr^QlWqag]Zr_3;dr_WSkr_retr`T5,raPkrkn`Trm(Mmrmq)(ro!e8roa:HrpB^Sqt0m^rqZQjrquZlrr1mVMuWeUqu-NlrqcWhrqHEa +rpp'WrpB^Lroa:>rndY/rmh"qrltG\rkSNGrj2U-ri5sjrg`tSrf@&9re:?$rd+Qdrc%jQrb;@Ara>_2 +r`K/"r_renr_NMfr_*5_r^coVr^QcRqaC_8rb;@Jrc%jZrd+Qnre:?/rf@&Frg`t\ri5t#rj2U:rkSNOrltGirmh#&rndY5roa:G +rpB^Rrpp'\rqHEfrqcNirr)`ni;\B.JcDnQJcC<$JcC<$JcC<$JcC<$K`D&MrqucmrqcWhrqHEarpg!W +rpB^KroX4=rn[S-rmh"prltG^rkSNHrjDa.ri5slrgWnSrfI,:reLK'rd"Kdrc%jQrbDFCra>_3r`];% +r`&kp!DlSm;#X8i9`%E\8H)-V7f,XR7,:4]6H;ED6@hJm6JY$+7/fXM7fGpW8H)3[9`@cc;#XAl;uTer +=oM\*@/a^9Ac?NFE;jqXH2`?nKDpc-OT(ICS,T/]VZ*at[Jm]8_#D@Qao9Zdec+5#h>ZC4jSnBBmJcPQ +nb_tXp\t!fqu6NjrSIR1s82cor;QQlq#:$eo`"F\nG_kTli-,Iir7j7h#>n(df.Sla8X!U^](\@Z2Um) +U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR7+t"Z6H2?C +6@hJn6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N*NW,(>Rf8oX +U].CpZMq<3^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QZKs+13$s/uBQs+13$s+13$ +s+13$s+13's8N#srVl`oqu6Ejq#:!doD\=[mf)MNl2KcCi;VU4g&BG!ci2,e_Z%=L])Ju6Y5Y?uU&LV^ +Q2ZjDN;eP1J,XipFoH@ZDZ4ALAH$';?N++,=T2;$;,IZC4kPj]Eli-AP +nc&1[pAXgcqYU3irVQTNs+p^SrqlZnr;QTmqYp3fp&=R^nG_hSli-)HjSn*:h#>t*e,IYlao93W^&GP@ +Zi7$)VZ*:gRf8TOO8b"8K`6K#H2_scEW0hSC&V`D@/aL3>lIk)sDk:B!ue9`@]a8cD9R8,,Q) +7BT(17=dn_7JK@F8,c'Y8cDB^9`@cc:B"&g;>sPolJ(/@/ad;C&VuKEW1+[H2`U-fo`"I]nG_hSli-,Ij8S$:h#>q)eGdenaSs3Y^](bB[/R6- +V>d4gSc4lQP5^F>K`6T&I/\_7ral(BrbqdUrcS3erdFcurepc8rfd>Orh'1c +riQ1(rjVm@rk\TSrm(Mjrmq)'rn[S5roa:FrpB^Srpp'\rqHEerqcNirr)`nhZ&E3rr2fnrqucmrqcWg +rq??`rpg!Vrp9XJroO.+8E3;=9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41@K'j;B`;lJE;jqXHiAKnJGtE)NW,%=RJrcV +T`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kl0lHmf)_To)A@^p\sseqYpBhrVlfJs+13$s/uBQs+13$ +s+13$s+13$s+13$s82fprVQHjq>U-fp&=O]nG_kTli-,Ik5O<_7rau.Erb_XRrce?erdXp"reCE4rfd>Irgj%`rhf[trjDa8 +rkJHOrlG)brm^qurnRM2ro3q?rp'LLrp]pXrq-3`rqQKgrqcNjrr1RMK)biLrr)iorqcWirqQKdrq$-Z +rpTjProsFFro*k5rnIG&rmLekrl4rSrkAB?riuI)rhTOdrg`tPrfI,=re19%rdOijrcJ-XrbVRJrau.< +ra>_3r`];'r`9"tr_reor_WSir_E5_r_26CJP+$VJP(JcpIaI=qb6cZr_EGgr_WSlr_reqr`9##r`];- +ra5Y5rau.CrbVRPrcA'_rdOitre191rfR2Erg`t\rhTOqrj)O3rkABKrl4r_rmC_qrnIG/ro*k>rosFJ +rpTjVrq$-_rqHEfrqcWkrr)`nfDgF%JcDnQJcC<$JcC<$JcC<$JcC<$JcGWHrr)`krqcWhrqHEarpg!W +rp9XJroX4=rnm_1rmq(qrm(Mark\TJrj_s4riQ0trh07]rg3VGrf-o4rdk&urd4Wdrc8!Vrb2:DraZ%; +?iXU6?iF@1=oMP&X2e:\[]U9n?!V9S#lg9^5=E:&%K_:\@Q`;>sJm;uTbqB`;rLE;jqXHN&?lJc:H(MZ/_:Qi$hu;U6jSnBB +m/HDOnb_tXp\t!fqYpBhrVlfKs+::Mrr2lqr;QTmqYp9hp\sgao)A.XmJcDMkl0T@i;VU4f)F.tci2&c +`;[ON\c/u8YPtL"V#I"cR/W?LO8at7K`6N$I/\?hErL%WD#S,IAH$';?iFC2>Q.e)X2h +:]=2i:]!oX9n?!R9S#lg9^YUI:%_9\;#X8f;#X>h;Z9YpU6iqu6Nm +rVQTGs+13$s/uBQs+13$s+13$s+13$s+13$s82fprVl`oqu6Hkq#:$epAXX^nc%tUli-2KjSn*:hYu7. +ec+"rc2P`^_u@CL\,Nc6Xo>0rUAgb`Qi<6KNrFk6L&QT$HN&0gErL%WDZ4AOAnD$Trabn5ra#M-r`T5& +r`B)!r`&kqqbm2dr_NMiJPWdOJPUhmiD9GLr_NMipeh#gr_reqr`/r!r`K/&r`fA,qd9>2ral(CrbMLP +rc8!\rd+Qnrdk'(rf-o=rg*PSrh07driH+&rjMg>rkSNPrlkAfrm^r#rnIG1roF(@rp0ROrpTjWrq??c +rqQKhrql]mqu-Nnf`-R'rr2fnrquclrqZQgrq??`rpg!Vrp9XMroO.=rnm_/rn%.urm(Mbrl"fNrjr*: +riZ7"rhKIbrgNhOrf@&9reCE&rdFclrcA'YrbqdNrb)4Ara>_4ra,S.r`];(r`B)"r`/hor_iMgr_S/A +YtopHJPY9$qb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhY +rhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hlqu54IJcC<$Y5a(Q +JcC<$JcC<$JcC<$JcC<$q#:9jrql]krqZQgrq??_rpp'Wrp9XLroa:?ro*k3rn%/!rm1Sbrl4rPrjr*< +rilC%rhoagrgNhQrfI,lIt,>5hY'=85hn<;TUF +;RKDR;Lqa&;Z9Vf<;T_q=8l>$>5hb*>lJ(/?iFL5AH$0>C&VuKDZ4\UGQ)meIf=ruL&R&1OT(ICRf8uZ +U].:mYl;!.])KJD_Z%XUci2>kf)FG'h>ZF5kPj`Fm/HJQnG`%YpAXgcq>U6iqu6Ngrn.7&s82fprVl`o +qYU*fpAX^`o)A.Xmf)SPkPjTBiVq[4g&BP$d/M8gaSs!S]`,J@Z2Um)WW&UjSc5&VOoCC?MuJA.JGsur +GQ)aaEW0kTC]8&IAH$';@/aO4?2e+.>5h\(=SPql<;TUF;RB>Q;Lqa';Z9Vi<;9Mn=T2J&>5he+?2e41 +@/a[8AH$^WW'%!Z2V<5^&GhHaSsB^d/MSpg&Bh,iVqp; +kPjiImJcVSo)A=]pAXmbqYpElrV6BDs+13$s/uBQs+13$s+13$s+13$s+13$s82iqrr2lqr;QTmqYpcNs8N#prVQKkqYp6gpAX^`nc&"VmJc>Kk5OE?i;VO2 +f`':tci2/f_u@IN^&GDn2IB)Z??@K'[6?i+.. +>l.\'=Sl2!lJ%.?iFI4@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$ +L]3A6P5^aGSc5>^V#ILqZ2V-0^&GhH_u@mZcMl5jf`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQTA +s+13$s/uBQs+13$s+13$s+13$s+13$s82iqrqlZnr;6?iq#:$ep&=O]nG_kTli-,Ik5O<Z.-ec*qp +cMkoa_Z%=L])K&8Yl:^&V#I+fSGnfQP5^L@M#N/.JGsurHN&*hEH(turc%jSrbDFHrb)4@raYq9ra>V1 +qd08-r`o"unlgTIbuoU#JQ_SIoih#mqcs#(ra,S2qdBD3raPk;rb)4DrbDFMrbqdUrce?erdFcrre(3+ +rf6u>rfmDOrgj%`ri5t"rj)O6rk/6Hrl>#[rm:Yprn.5+ro!e8roa:Grp9XRrpp'\rq??crqQKhqu$Hl +qu5.GJc>cNs8N#prVl`oqu6Hkq#:$epAX[_nc&"Vli-/JkPjH>hu;F1f)F+sci2#b`;[RO]Df8k2+l>(Khu=b0_, +=nc(i>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_VuEds +Z2V32]DfVF`W!sXci2Dmf)FJ(hYuL5kPj`Fli-APnc&.ZpAXgcq#:-hqu6NmrVQTAs+13$s/uBQs+13$ +s+13$s+13$s+13$s82ikrr2imqYpZ(+e,I_nbPoK[_Z%7J\,Nc6 +YPtL"V>d+dRJrQPOoC@>MZ/A0JGt#sHNA>7!-eEbrc%jTrb_XMrb;@Fral(>raYq:qdKJ2ra>_4oj72p +JR$H)JR!b2o3Cronm;<'ra5Y4raGe8raYqrfmDM +rh'1`rhoauriuI2rk/6Frl"fYrltGjrn%/&rnm_7roO.DrpB^Qrp]gWrq??drqZQiqu$6gec14#!WW2p +rr2ipqu6Hkq>U0gpAX^`o)A+Wmf)POl2K`BiVq^5f`'G#dJhAhaSs*V^Ab_C[JmE0X8]!qT`1J\RJrBK +O8b+;LAli)J,XipH2`!dEW0qVDZ4GNCAqrEAc?6>@f'U5@/F=(?LhBQ>fg6%>_-/S>kMCn?N+=/@/aU3 +@f'^8Ac?ECCAr#JDZ4SREW1.\GlE*iJ,Y*"LAm/2O8b=ARJr`UT`1hfX8]@&[Jm`9^Ac%La8X<^dJh\q +f`'b,i;Vd9l2L#Jmf)\So)A:\pAXgcq>U6iqu6NgrmCass+13Qs+13$s+13$s+13$s+13$s+14Fs82fp +rVQKkqYp9hp\sganc&%Wn,DVOl2KfDi;VU4gA]Y%df.SlaSs3Y^](hD\,NZ3XT#3uUAgb`S,S`QOT(:> +MuJG0K)U6#H[>a>rd+Qdqf;[Srbh^OrbDFGrb)4Arabn9qdT5,JRH3"JRF%:k@!jhraPk:qdfS8rb)4E +rbMLNrbqdTrc8!\rc\9frdXoure19.rf-o=rg*PNrgs+`rh]UqriuI0rjr*Drk\TSrm(Mjrm^r#rnRM2 +roO.Arp'LOrp]pWqt0m^rqZQirqlTkrr17DJcGQGrr2oqrqucmrqcWhrqHEarposUrpB^MroO.>rnm_0 +rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jSrb_XLrb2:D +qdob;qd]V7nmR)W]jQD!JRI\LojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!#reLK3rf@&B +rg*PSrh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEfrqcWkrqucoqu4n@ +JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$q#C6jrr)iorql]krqZQgrqHEarq$-XrpKdProj@Cro3q7rn7;& +rmC_jrlb;[rkSNIrji$6ric=$rhTOfrgs+Vrg*PErf-o7re:H(J,k-!J,XlqH2`'fFoHF\EW0nRDZ4MM +C]8)GC&;T7BDZ:lA^+e;AV"FaAc?<.BDuTDC&;ZEC\quJDZ4SRE;jnWFoHR`H2`6kIf=lsLAm#.NW,"< +OoC^HSc58\U].7lXT#L(\Gj)=_#D=PaSsKadJhYpg&Bn.iVqp;kPj`Fmf)\Snc&1[p\sseq>U6iqu6Nj +rVlfBs+14Gs8N#prVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^& +VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiAnANC]8)GC&Vf4BDuLoA]\M7AV"Fe +Ac$*1BDZBAC&;ZEC]8/LD>S5ME;jkVF8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9 +^]).M`r=6^d/MJmg&Be+i;Vd9k5OTDmJcSRnG`(Zp&=^bq>:$cr;QZlrm(Ops+13Qs+13$s+13$s+13$ +s+13$s+14Fs7lTmr;6BgqYp9hp&=R^nc&"VmJcALkPjTBi;VR3gA]\&d/M>iao96X_Z%4I[f3W4Y5YC! +VZ*7fSGnuVQ2ZmENrFq;LPGkbre:?%rdOiord+Qgrce?`qf;RQrbqdRqec=Knn\5>JSE/=JSB[Ln7hc7 +okXG@rb_OMqf)OSrc7mXrce?erd4Wnrdb!"reCE0rf-o=rg!JKrg`t\rhKIkriZ7)rjDa;rk8JcGQGqu6TnrquZjrqcWhrq??`rpp'X +rpKdMroj@Dro*k6rnRM(rmUkmrlY5[rkeZJrj_s7ric=%ri#girgs+Yrg!JHrf@&;re^W/rdk&urdFcl +rcnEdrcJ-\rc8!Xrc%jTrbhUMrbV.@rb@!u_eF[9JSFajqeGe>qeZ7KqelCOrc%jVrc8!ZrcJ-`rd"Kh +rdFcqrdk''reUQ4rf@&Arg!JPrgs+_ri#gsric=.rji$ArkeZSrlY5drmUktrnRM0ro*k=roa:FrpKdT +rpp'\rq??dqtgriuI*ri?$prh07^rgNhOrfd>B!K;s;N;e_6L&QZ& +JGt&tI/\KlH2`$eG5cUYEqODEDh2fEDLl\VDX)-:Dt7lBEr0tXG5cacHN&dClY5Y^*[/R]:^])(K`r=3]cMl8kfDaJ&i;Va8jo4KCli-;NnG`%Yo`"O_p\sseqYU3i +rVQTd7hTDk>ZQi<6KOT(7=MuJG0KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDh2fADLl\VDXME> +DuO_TDtn;NEVjeUF8g:\G5c^bH2`3jIJ\QoKDpT(MuJb9OT(LDQidUrYl:s-])KDB_#D@Q +ao9TbdJh\qf`'e-iVqm:kl0iGm/HJQnc&.Zp&=^bq#:-hqu6NmrVQT8s+13$s/uBQs+13$s+13$s+13$ +s+13$s763hrqQHhqu6Hkq#:$eo`"C[nG_kTli-2KkPjH>i;VR3f`'J$d/M;hb5T?Y_#D(I\c/r7Z2Um) +VuEOlTDkD\Rf8TRP*,g.rfR2?reg]3reC<&qg\TordFZjrd+?arce?brcNd6^3"pJJTU'sqfVm]rce6a +qg/6gqgJ?krdb!#reCE-reg]8rf@&Arg*PNrgj%\rh9=griH+%rj)O5rjr*Erl"fVrltGhrmUl!rn[S1 +ro*k>roj@IrpKdSrpfmXrqHEfrqcWkq#1*hbl<7opAb-kq#13irql]krqQKerq-3\rp]pUrp9XMroa:A +ro!e4rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sprh07^rg`tRrfmDErf@&;reg]0re19'rdautrdOip +rd=]lrd+Qhqfr*arc\0]JTSSIJTQHbk]HfHrc\9bqfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@ +rfmDJrg`tZrh07fri,n"riuI1rji$CrkeZRrlkAermC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQi +rql]mqu-EkaT$hkJcDnQJcC<$JcC<$JcC<$JcC<$JcG<@q#:9krqucmrqcWhrqHEbrq$-[rpTjRrp9XK +roO.>rnm_0rn7;"rm:YirlP/XrkeZJrj_s9riuI)ri5sprh07_rgX"VQiNNQQN!$GO8b1=N;eY4L]3&* +K)U?#JGt&tIe\U)Zi7H5]`,YE_u@aVb5Tcee,Insg]$+0iVqp;kl0lHmJcSRnG`%Yp&=[aq#:-hqu6NjrV6B9s+14D +s7lTjrVl`oqYpN;e_6M#N/.K`6T#JbsrrIJ\EhH\$LPH@^BnHKBJPHh`!fIJ\NnJGt-!K)UH& +LAm#.MZ/S6NrG.>P5^jJRf8lWTDkVbVZ*[rYPtj,\,Nu<^Ac"K`r=*Zci2AleGe2$h>Z@3jSn<@l2L)L +mf)_To)A:\p&=acq>U6fr;QZirlG+js+13Qs+13$s+13$s+13$s+13$s+14=s82fprVl`oqu6Hkq>U0g +p\sgaoDA%Vmf)MNkPjTBiVq^5g]#h(df.YncMkoa`r#_rm1Slrn%/&rndY5ro="?rosFJqsaUUrq-3a +rqQKgrqcWkrquZlrr0q;JcG6>rr2fnrquclqt^6crq??`rpg!WrpTjOroj@Dro3q7rn[S*rmh"qrm1Sd +rl>#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9reg]2qh>$&rdt#uomhUC\po9\JUd!8 +npp^jqh"]ure:?-re^W4rf6u=rfI,Crg*PNrgj%\rh07eri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r! +rn[S3ro3q>roj@HrpTjUrpg![rq69brqZHfqu$Hlqu4S7JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$l2Ub^ +qu-NlqtgNW+n9Mu/D2M>i>.LOk2nL4P)1 +L?OBkL]3,/M>N20MuJ\7NW+t;OT(=?OoCOCQ2[-LRJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sX +cMl2idf.nugA]t.i;Vg:k5OZFm/-8No)A:\pAXgcq#:-hqu6NmrVQT/s+13$s/uBQs+13$s+13$s+13$ +s+13$s69R_rqlZnr;6?iq>U0gp\sjboD\=[n,D\Qli-,Ijo4<>hu;C0g&BS%dJhJkbPoT^`rrf[/C +rg*PNrgEbTrgs+]rhBChrhoapriZ7(rj)O4rji$ArkSNMrl>#\rltGirmq)#rnIG0ro*k;roa:Frp9XQ +rp]pYqt9s_rqQKgrqcNirr)`n_uG;fmJm1bqu-Nlrql]krqZQgrqHEbrq-3\rp]pTrp9XJroX4@ro!e3 +rn@A&rmUknrlkA`rl>#SrkJHFrj_s8riuI+ri?$trhf[jrh9=`rg`tWrgEbQrg*PJrfd>ErfR2Arf?i7 +pl0i`^l3i'JW0#Upl5'/rf@&?rfR2Crfd>Grg*PMrgEbTrgj%\rh9=erhf[oriH+&riuI1rj_s?rkABJ +rl>#[rlkAgrm^qurn@A-ro!e:roX4Drp9XOrp]pXrq-3_rqHEerqZQirql]mrr)`n^]/lbJcDnQJcC<$ +JcC<$JcC<$JcC<$JcG!7rr2]kqtpBhrqQKerq??`rq$$VrpKdNroa:Bro*k6rn[S,rmh"srm1SfrlY5Z +rkSNJrk8<@rjMg3!O/d.Yl:g)X8]'sVZ*@iT_kA\SGo#WRf8]OQi<9LPk^I;P4argOO0)?OF`MhOReP/ +P5CIBPl?sIQi!0LRf8fUSGo/XT`1_cV>dFmX8]4"Yl:s-[/RQ6]`,YE_#D=P`r=3]ci2>keGe,"gA^"/ +iVqm:k5OWElhg2No)A:\pAXgcq"speqtU-erknbes6]jcrqQHkr;QTmqYpOF`MiOS+b2P5(7?Q2[*KQikl0lHn,DhUnc&1[p&=[aq#:*gqYpBkr;6HirkJJa +s+13Qs+13$s+13$s+13$s+13$s+144s82fprVl`lqu6Hkq>U-fp&=U_oD\7Yn,DbSlMg&Ik5O?=i;VX5 +gA]e)ec*qpci22gaSs3Y_Z%@M^](kH\@;OKrjMg3rilC*riQ1"ri,morhTFdqk3q\rh0.\pmpcAJXb,X +JX_4[!LoSCSG8ZPTDkM_TDP;\U\gkdVZ*LmWr&ptYl:s-[/RQ6]DfJB_#D4M`W!sXc2Q#fd/MSpf)FD& +hu;R5iVr!=kPjcGmf)\SnG`%Yo`"O_p\sseqYpBhr;6Hlrk8>_s6'F]rqlZnr;6BjqYp6gpAXaaoD\=X +n,D\QlMfrFj87d6h>Z.-ec+%sci25hbPoT^_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I.gUALVY +TDkGWSa;ktS'mdWRt7%/S*?I?Sc55XTD5)YU&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA^])(K_u@aV +b5T]cci2Alec+;%h#$%/jSn<@lMg/In,DkVoD\F^pAXg`qYpBhr;QZlrk/8^s+13Qs+13$s+13$s+13$ +s+13$s+144s7lTgr;6?iq#:$epAX^`o)A1Yn,D\Qli-,Ijo4<>i;VR3g]#n*f)F1uci22gbPoT^`W!dS +^B)$]!58BDrj_s9rj;[0rilC*riQ'uri,mqqks4cpnR_\JYC#UJY@XglCn3OpnRV\po"+iri,mtqlTk% +riuI/rjDa7rji$ArkJHKrl"fVrlP/arm1Skrmh##rn@A-ro!e8roF(ArosFKrpTjUrposYrq??crqQKh +q#'pd^&NZ`kPtGYrr)`lrql]krqQKerq??`rq$-Zrp]pTrp9XJroX4@ro*k6rnRM+rn%/"rm:YirlkA_ +rl4rUrkSNIrk/6?rjMg6rj)O-ric='riH+"ri,mqqksFjqka:fpnRh_JYBlQJY@Xgm\0NPqkO.dqka:h +qksFlri,mtriH+$ric=+rj)O2rjVm:rk/6ErkSNOrl4rYrlkAerm:Yprn%/&rnRM0ro*k;roX4Drp9XO +rp]pWrq$-]rq??crqQKhrqlTjrr)Wk]`3Q_JcDnQJcC<$JcC<$JcC<$JcC<$JcF[.rr2fnrquZirqZQg +rqHEbqt'^SrpKdOroj@Dro="9rnm_2rn.5$rmUknrm1SgrlP/\rl"oS_#V=N_#D(F]Df>>[f3Z5Zhq!( +YPt^(Xn\soWq`QEW5PWcW.Co4W;*@kWq`XlXo#=!Yl;!.[/RK4\,No:]DfPD^])(K`W!mVao9QacMl2i +e,Insf`'_+hYuI4j8S-=kPjcGm/-;Onc&.Wp&=^bq#:*gqYU3irVQT*s+142s8N#prVl`oqu6Hkq>U0g +p\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3 +ZMUm*YPt^(Xo>EsX8]-oWI_"`W.CmuW:$VZWV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N +`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQT&s+13$ +s/uBQs+13$s+13$s+13$s+13$s5Lkl0]Cj8S!9hu;I2 +gA]_'ec*tqd/MAjblPr.!6P5]rl+cOrkJHJrkJHFqmud:rjVm8rjDa4qm6('o!*bMc*2c'J["aMos+:t +rj2L/qmHF3rjVm:rjr!>rkSNJrkSNMrl+lVrlP&^rm:YlrmUktrn7;*rnm_5ro3qZ:1i;;U7 +kPj`Fli-;Nn,DhUoDA4[pAXgcq#:-hqtp"e,I_ncMl)fb5TN^aSs0X`;[[R_#D+G^AbhF]_K)8\bio'[t2!6 +[Xkl<[edH'\+R91\bNc8]`,VA^AbnH_#D7N`;[aTaSs<\b5TZbci2;je,InsfDaJ&g]$(/hu;X7jSn?A +l2KuImJcPQnG`"Xo`"O_pAXgcq"speqtpU0gp\smco`"I]nc&%Wn,D_Rl2KoGk5439hu;I2g]#h(ec+"udEqsArm:YjrltGdrlY5]rl>#W +qnrEMot^I>qnDF1J\9@BJ\6QHq7Pt*rkABHo"b.>rknWPrl>#[rlb;crm1SjrmC_orm^qurn@A,qqqD2 +ro="?roa:FrpB^Qrp]pWrpp'\qtC$`rqQKgrqcNiq#13k[/Y^WhZ*TSq#13irql]krqZQgrqHEcrq69_ +qsj[SrpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkprm:Ykrm(MfrlY5]rl>#Wrl"fRrkeZNpqZmDrkSNJ +rk@X1J\9=AJ\6QHqRl1.qnE'FrkJ6Drk\TNrkn`Rrl+lWrlP/^rltGfqp>>jrmUktrn.5)rndY3ro!e9 +roO.ArosFJrpKdSrp]pWrq-3_rq??crqQKgrqcWkrquQiqu3r%JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$ +fDkjLq#13irqlKerqQKerq??`rpg!WrpTjSrpB^Nroj@EroO.hl_h#^i_sYJ%`;[aQ`r!gUaSs<\bPTN\cMl2ici2;jdf.erf)F>$ +g]$"-h>Z=2i;V^7jo4EAkl0oIm/HGPn,DhUnb_tXpAXgcq"spequ6NgrVQT!s+14)s8N#jrVl`iqYp9h +p\smco`"FYnG_nUmf)POlMg#Hjo4<;i;VU4h>Z1.gA]b(ec+(tdf.Vjci25hc2PrdbPoZ`anWpU`r!a& +`.>hh_h#^m_s52%`;[aQ`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:.i;Vd9jo4KCl2L#G +mecMQoD\C]pAXgcq"X^_r;6HiriQ3Os+13Qs+13$s+13$s+13$s+13$s+14%s7lTmrVl`lqtp6hq>U0g +p\sj_oDA%Vn,D_OlMg#Hk5OH@ir7m8hu;I5gY;\]rn7;'rn%/"qpYGhqp5/aqonr\l,r&.J]R/uJ]O(s +m`G(Bm)o=Np!!E[qp5/drmC_oqpk\trn.5'rnIG/rnm_5ro3q;roO.Broj@HqsF:Mrpg!Zqt9s_rqQKg +rqcWkqu$?iq#7PuJcFL)q#:0hrquZjrqcWirqQKerq69_rq$-Zrp]pUrpB^Orp'LHroX4Aro3q9qqqD. +rnIG*rn.5%rmh"trmUkorm:Pgrm(MfprrWYm)n8.J]R,tJ]O+tmE,+El,s"Kprr`^rm(Derm:YlrmUkr +rmh#"rn.5'rnIG.qqqD3ro3q=roa:Erp'LKrpB^Rrp]pWrq$-]rq69brqQKgqtg>t+g&BV&f)F4pe,.Pfd/MAjd-T)0cHXXcc@O:4cL9*Yd/MAad/MGfe,.\pf)F>$g&Bb*h>Z:1 +i;;L4j8S0>k5OTDlMg,Hn,DhUnc&.Zo`"O_p\Xa_qYpBhr:p6iri?'Ms4./KrqQHkr;6BjqYpU6iqtp-qqLo!qq1o"n($[PJ^`E'J^]G(qUFf[n(%*rndY3qr%J4ro3q*qqh>1rnm_5ro*k;roO.Aroj@Grp0RMrpBUOrp]pWrq-3_ +rq??crqQKgqtgTfJcF0up&=shqu$?grqcNfrqHEc +rq6'Xrp]pUrpKdQrp9XLpuqV:roF(uWJ_8`0J_5h3q:Xc\qqCi"qqV2,qqq;/ +qr7M6roNq=rp'LKrpB^QrpTjUq"+LXrq??crqZHfrqlKgrr)NhV#Q#GJcDnQJcC<$JcC<$JcC<$JcC<$ +JcEpnq#:'erqucmq"jm_rqHEbrq-3]rposVqsXOPrp0[NlM^#Fkl0cEjo4??j7qX/i;VX5i;;F,hLXLs +h1=C5h<3VhhYZ40i;VX,i;;O5j8S-:jnn6?kl0lEm/-8NnG_tWo)A7[o_\=Yp\ssbqYpBkr:p6crhBFD +s31N?rq66hr:p-fq"sg_p&=U_o)%tVnG_nUmf)SPli-2KkkjQ?jo4?9iq;7&htu8]h7DEnh1=DJh=]Y% +ht#_#iqqg9jo4H?kl0lHli-8Mmf)\SnG_tTo)&(Yp&=^_q"X^_r;6Hcrh9@Cs+13Qs+13$s+13$s+13$ +s+13$s+13hs7lTgrVl`lqu6Hhq>9sdp\sjbo`"I]o)A.UmfDkErU0[Pq!7hAqrn%BroWn7p#G`)J`4Z. +J`21=nDWrtqr@8.roX4Cpuq_Aq!7hErpKdSqsaUUrq$-]qt9j\rqQKgqtgrosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqHJcDnQJcC<$JcC<$ +JcC<$JcC<$JcE^hn,E4^qtp9erqZQgqtKmYqt'gX!V#RYnGD\Omf)VQm/-,GlMg&@kkjQ3k(2X7jalNE +jm_C#k5OQ7kkjWDlMg,Hm/-2Lmf)\PnGDeUoD&"Xp\Xa_q>U6iqt9mUrh'4As2k<0rqQEgqu6Hhq>U0g +p\sm`p&=U_oD\=[nc&"VnG_nUmecDNm/-,JlMKi=kkjQ6k(2X3jalNEjn.[$k5OQ7kl0iDlMg,Hm/HDL +mf)_Tn,DkVo)A7[o_\=\pAXg`q#:*dqYpBer9sWSs+13$s/uBQs+13$s+13$s+13$s+13$s1JC,rqQHk +r;6BjqYU*cq#:$epA"7\o()bMq!n@Prp]gRqsOINq!@e@o'(_h`9;d9J`uC_p$)8:q!@nFrpK[Prp]pU +rp]^QrpojVqtBp]rqQKgqtgU0ap\sm`p&=U\oD\=Xnb_hBmt'o6mXaeWmbdI'n+H2Lnb_nVoDA1Zp&"I[p\sseq=sgcqtp9sap\=IZp%%bAo7?JNnq$@_o'5f:oBc,Kp%\7Rp\sseq=sg]qtpU0^p\X[]p$_PAo7?JJnq$@_o'Z);oC)>Np%A%Up\Xabq=XU]qtp8p%\O^n,!%\p&+L]q#5jE +p]#gEJcDnQJcC<$JcC<$JcC<$JcC<$JcDGDm/H_V!;u3\rqaq9Jb[LbJbXfkoD$`/qtfm\o).bOJcGWI +JcDSHm/I"_p&+:Urqaq9Jb[@^JbXfkp\d^AWW]Jc4d1 +_Z#,dgAca(K`D&NaSpbh])@3YJc4p5^]&fag&HX'JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$huA9,U],iD +Jc %APLeod +EI +379 0 0 10 0 194 cm +BI +/Width 1137 +/Height 30 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(Q +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcDnQJ, +~> %APLeod +EI +326 0 0 122 906 72 cm +BI +/Width 978 +/Height 366 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$MuSA.JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCZ.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$MuSA.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCZ.JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$MuSA.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcCZ.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +MuSA.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCZ.JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$MuSA.WW1ZNJc:6"Jc;;@j8X]1JcC<$JcC<$JcC<$JcC<$ +JcC<$mJiINJc:6"Jc=^/TDsiLJcEIam/G]:Jc1/uJc25>l2LS[JcC<$JcC<$JcC<$JcC<$JcC<$K)b3: +Q2Q:4Jc1/uj8J6A\,VBdJcF*so)@&8nbdt9Jc()s[/APSq#9scJcC`0JcC<$JcC<$JcC<$JcC<$PlL=R +dJ^3FJc()sJc,<@fDY(8ao@;!JcFa0qu5jYq#'^[f(ssoJbjroRJQURq#(-in,;qYJcDABJcC<$JcC<$ +JcC<$JcC<$VZ6Pml2CDTo)"UHJbjroJbn4!p&"O^m/?VVg]*33JcFs6rr29_p&+U^p%n[`f(agkJbXfk +SG<*Zp%nI\rquHeo)8IbJcDJEJcC<$JcC<$JcC<$JcC<$XT/;!m/?VTq"sa\rqV`PJbXfkJb\0urqZ6` +q"sX[o)8IbhZ&N6JcG9?q#9j_qu$?gn+uqWqtSe;rUtg9JbFZg_tMgYp%\O^p%nR^rqlBdp&4[bJcDeN +JcC<$JcC<$JcC<$JcC<$[K$%$o)8I`qtojYqt^-afCuiLJbFZgL\BHrp%\O^n,!%\p&+L]q#9IVMuSA. +rVucoo)8Rcp&"X_qt^6dp%S@Wqt9FMn+62BJb"B_Jb$DCn+6#?rq5sXqtL!_rqZ6`qtp9gp&4R_JcE=] +JcEpn\,LsXJc:6"_>_:NJcC<$_>jE3o)8Rcp&"X_qt^6dp%S@Wqt9FMn+3dSJb"B_Jb&g2n+6#?rq5sX +qtL!_rqZ6`qtp9gp&4R_pA^'NJc>`Mrr2BbrquQgrqcWip%\4Rrq60\qt'LOl1+E8Jae6[Jag8?m.'Z; +rq#pWrq60^qtB^XrqZQiq"ssdo)8ReJcE=]JcF[.m/FKmJc1/uJc3F`l2KB9JcC<$`;fi9n,<7`q"t'e +rqZ6^p%JCXqt0dWp%%A;Yjd55Jae6[rp]:Eo()eOq"4RYp%J(RrqZQiq"ssdo)8RepA^'NKE(rMo)8Rc +qtp0brqZQgq"Od]qt9s\qt'gXqsjRQm-j0+JaS*WJaTT,o'c8@rpfmVrq$-]rq-3_qtBp]rqQKgq"k!e +qu$-cqu20H^&NZ`o)J:[dJ_DhJc()sJc+*sfDY(8li2P9JcEdjrr2KerquZjq"k!crqQ9_rq?6^rq-*Z +rposVqs`t@V!`g%JaS*Wn*]c8p$htNqssaXqt0m\qtBp]rqQKgq"k!equ$-cqu6EkMuSb9q#:'erquZj +rqcNfrqQBbrq??aqt0mZrpojSrp]ULrpK[Nqs==Jqs*b:o]UkiJ`q[K]'/hOq!.kEq!A"IqsO@MqsaUT +qsj[Vrq$$Zrq69arqHq!.kE +q!A"IqsO@MqsaCNrpp'[qt0m\rq??cqtU0dqtgLBnN;nk:o)8RcqtpBhqt^6dq"F^Zrq$$X +rpg!Vrp]pUrpKdQrp9=Dqs""Ao&of1o]:YcJ`VIE]&i_Lp#l#3ros+Arp9XOrpKdRrp]pUrpfmVrq$-] +q"FU[rqZHfrqlTjp&0IA`rCqrrr29_p&+U^p%n[`[.o4IJbXfk^A.^'p%nI\o)/(Wqu-TqJcC<$d/W\8 +rquZjrqcNfrqQ9^rq-3]qssaVrpTjUrpTjSrpB^Op$;M>qrmV6pu\gBJ`VIEJ`Zmmpu_84p#uD>p$;VD +rpBUNrp]pUrpfmVrq$-]q"FU[rqZHfrqlTjpAG!iN;o1Cq#:'erquZjrqcNfrqQBbqt9s\rpp'YrpTjU +rpTjSrpB^Oqs47Hros4AroX4Ap#Po.p#>`)J`21=J`4E'o&BH)p#Q,6roX">rosFIqs47JrpBUNrp]pU +rpg!Yqt0m\rqHPsFM>u9/q#:'erquZjrqcNfrqQBbqt9s\rpp'YrpTjUrpTjSrpB^Oqs47Hros4AroX4A +p#Po.p#<=:J`21=K]2L]puD&.roO.Apuq_Arp'CHrp9XOqsOIQrpTjVrposYrq69bqtU0dqtgU0dp\smco`"I] +o)A.Un,D_Rm/H>Ml2KoGkPOB?jSn0jo4HBkl0iGli-8MmJcSOnG`"XoD\CZpAXg`q#:*gqtpU6cqZ-Qlr:9gcrdk*:s53kUrq66hr;6Bg +q>U0dp\smco`"I]o)A.Un,D_Rm/H>Ml2KoGkPOB?jSn0U9hquHZfrVlecs.98irq66h +r;6BjqYpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$g&BY$fC.8^eFV1@ +duVt/e()q0eF1refDF4qg&Bb'h##t-i;VX5i;V^7jSn9?k5OTDl2L#Jm/HDLn,DhUnc&1[p&=[ap\sse +q>:$fqtpU0ap\sm`p&=U\oD\=Xnb_hBn&FdHmXaeWm`k1jn+H2L +nb_nVoDA1Zp&"I[p\sseq=sddqZ6Tkqu$-cqu20HS,_LJrr2ThrquZjrqcWirqQKerq??arq-*XqsXOO +rp9XMrp'LHroX4AroEt8rnm_5rnm_3rnRD*pt>Z!qq(;ek1%T'J^]2!RFC*qqh>1 +rnm_5ro*k;roO.Aroj@Grp0RMrpBUOrp]pWrq-3_rq??crqQKgqt^?jqZ-Njr;6Hirgs.`s8N#mrVl`l +qu6Hkq>U0gp\smcp&=R^o)A1YnG_nUmf)MNl2KoGjo4??j87g7hu;L3h#?(-g&BY'f)F5!eGI_odf.Ye +d-8mTc@O8lc@O9YcKrmJd/MGldehMmeGe"tf)F;#g&Bb*h#?10hu;R5iVqm:jSn9?kl0iGlMg5Nn,DhU +nc&+YoD\F^pAXgcq#:*gqYpBhr:p6frdk++s/uCsrqQHkr;6BjqYU*fq"sgbpAXa^o`"I]o(_bSnFc8L +mecDKm/H>JlLO2fk^hrKk^hsQkk438lMg,Em/HDLmecJMnG)PQo)A7Xo`"O_pAXg`p]1*jq>'parqlTj +q#1!eJcDPGjo>>Zq#13iqtpBhrqZQgrqHEcrq69^rpp'Yrp]pUrpKdNrosFGroO.?rohdf._pec+/!fDaJ&h#?.,hu;U6j8S0>k5OQCli-8Mmf)\Snc&+Yo`"O_ +pAXgcq#:*aqt9perdk++s/uCmrVl`lqu6Hhq>U0apAX^`oDA+Xnc&"VnG_nUmf)VQm.K]Al20]8kP42f +jalNEjalOKjnS!2kOn':$fqtphdf._pec+/!fDaJ&h#?.,hu;U6j8S0>k5OQCli-8M +mf)\Snc&+Yo`"O_pAXgcp]:3d!;ZEep&4mhV#R@mrr2ThrquQfrqQKerq??`rposUrpTjSrp0RKroj@C +rokJVqhS&9fpjMT9]rl+cSprEBU +rlY5`rlkAdrm(Mhqp>>jrmUksrn.5'rnIG.rndP1ro=">roj@Grp0ILqsaUVrq-3`rqHEeq"jmcqu-Ek +JcF^/\,Z7&q#13iqtpBhqt^6dqtL!\rq-3\rpg!Vrp]pUrpKdQrp9OJrp'LIpuq_>roNh6puD&,e_u)< +J`21=io0IfpuD&.roO.Apuq_Arp'CHrp9XOqsOIQrpTjVrposYrq-9c!Vc?cq#:*dqYpBhr:p6crdk*O +s6K^arq66hr:p-fq#:$epAX^`o)%qUn,DbSli-2Kkl0]Cj87d6hYu@1g]#q+f`'G#eGdnqd/2/gcMl)f +bl5fbb5TNXa8X*U`R2WU_h#^V_l1Ju`;[aQ`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:. +i;Vd9jo4KCl2L#GmecMQoD\C]pAXdeq"Ojaq"jmcqu-EkVuNdsrr2]krqucmrqcWirqQKerq??arq-*X +rpTjSrp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrkeQKqnW3GrkSNJrk@^3 +!PQ0t]S!kJ]Z.VN^&,PC_#D+G_#D1I_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$g]$(/hu;R5j8S0> +k5OWEli->On,DhUnc&1[p&=[ap\sseq>U6iqu6NgrVQSFs6'Ens82fgrVl`iqYp9ep\XX_o`"FYnc&%W +n,DbSm/H>MlMg#EkPOB?jS7a-i:Z")hTXf,h1=C5h:^WWhYZ4$i:u=/jSn9?kPOKBlMg,Km/HGPn,DhU +nb_kWo_e@\p&=^_q"X^_r;6Hcrdk*Us6fpdrqQHkr;QTmqYpG]Rd_H]SaAg^&,PC +_#D+G_#D1I_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[ +o`=d[!;?EdrqQKgrqcWkrquQiqu3_tXoJD"p&4merqcWirqQBbrq69_rpp'XrpKdQrp'LHroa:Aro3q8 +rndY0rn@A&rm^qrrm:YirltGbrlG)Zrl+lTrkn`OrkSNJqn'rnI"tqq9EMJ_5P+J_8c1rn6bornI,$qqh5.qr7M6roO.Broj@Grp0RMrpB^R +qsXUV!V5g\oD\CZpAXg`q#:*gqtpic2PlbaSs6Z`W!gT_u@LO_#D+G^&G\A]DfD=\c0,-\%/qu[XklB +[dU^&\Gj&9])K>=]`,VD^])%J_>_@O`;[aTa8X3[b5TZbci2;je,Insf)FD&g]$(/i;Vd9jSn?Al2KuI +mJcSRnG`"Xo)\OW!;6?cqtU0drqcWkp&4mhXoGX*rr2Thrquclqt^-`rq??`rposTrp9XMroj@DroF(; +ro!e4rn@A(rmq(srm:YjrltGcrlP/Yrl"fQrkSEGrk/6Brjr*=rjVm8qmHF1qm61*o!/.tJZs^0J[!%r +os+1qrj2L/rjDa6rjVm:rjr*@rk/6FqnW3Jrkn`SrlP/_rltGgrmC_nrmq)$rn@A.rnm_6roF(@roj@I +rpBUOrpp'\qtC$`rqZHfqu$?iqu20HlMn["rr2ThrquZjrqcWirqQKerq??arq-*XqsXOOrp9XMrp'LH +roX4AroEt8rnm_5rnm_3rnRD*pt>Z!qq(;ek1&eIJ^]2!J^aABk1&kMrn%&"pt>Z$qqV)*ro!e5ro!e7 +roF(?roX4DrosFJrp9XOrU0dUn,DhUnc&1[p&=[ap\sseq>:$fqtp@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSn +f)F>$gA]t.hu;U6jSn<@kl0oImJHAOncACT!;-0^rqHEfqtg3fqu-EkYlCs-rr2fnrqucmrqcWirqQKe +rq69_rq$-Zrp]pUrp0RJroa:@ro3q7rndY/rn.5!rmLelrm(MdrlP/Yrkn`NrkJHFrk&0>rjMg6rj2U0 +qlp('riZ7&riGmqri5amoVd>>JZ+-u\u>D'ql9OoriH+$riZ7(qlp()rj2U3rjVm:rk&0CrkJHJrkn`S +rlP/_rm(MhrmC_orn.5(rndY3ro*k:roa:Frp0RPrp]pWrq$-]rq69brqQKgrqcWkrqucoqu20HlMnd% +rr2]krquZjrqcWirqQKerq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$rmh"t +qpYPmrmCDcl-J,0J^/hlJ^3B&m*G7LrmC_nqpYPormh#!rn%/&rnIG-rndY3ro!e7ro="=roO.CrosFI +!:BmUmf)\SnG_tWo)A7[p&=[ap\sseq>U6iqtpU0gp\sjbo`"I] +nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^( +Xo>EsX8]-oWN`=PW.CmuW;`ajWV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofd +ci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DeWnaQVLrq$-]rq69brqQKgrqcWkrqucoqu3i"YlFLsqtpBh +rqQKerq??`rq$-[rp]pTrp9XKroa:Bro*k6rn[S,rn%/!rm:YirlkA_rl+lSrk\TKrk8ro3h4rn[S/rn7;'rmq)!rm^hnrmC_k +rm:Yirlt5^qoeu]aiT+UJ]WJbe&hL0rlb)\rltGfrm:YjrmCVkrmUksrmq)#rn7;+rn[J/ro*k:roO.A +roX:I!UK(Nm/HGPn,DkVo)A:\p&=[ap\sseq=sj[rVleIs1JC(s7lQiqu6Hkq#:$epAX^`oD\=[nG_kT +m/H8KkPjTBiVqa6h>Z+,fDa;!d/M>ibl5]_`W!dS_>_4K^&GSA\,Nf7ZMq-.YPt^(XS]$sW;`^oVZ*Fh +V#-qLU;EUTTn/o!U#r*KU\LYaV>d@kVuE[mWrB'uY5YX(Z2V'.[JmZ7\c0;A^])(K_u@[TaSsE_cMl2i +eGe%ug&Bh,hu;U6jo4HBl2L&KmK)hH!:^!Yrq$-]rq??crqQBerqlKhYlD'0rr2fnrquZjrqcWgrq??a +rq$-[qsXONrp'LFroZ.-ec+%sci25hbPoT^_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I.gUALVYTDkGWSa;l`Rt7&[ +Ruj-(SGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n) +i;Vg:k5OZFliHSDrU9aUrq$-^rq??cqtgro!e4rn7;&rm^qorltGcrl+lSrkJHHrjr*kl0lHn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hi +rdk+@s31NBrqQHkr;QTmqYpi]Rd_H]Rd`Z]^3?/^AbqI^\bhG_>D+K_u@UR`W!pW +ao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3huMdro!e4rn7;&rm^qorltGcrl+lS +rkJHHrjr*roaCJl2^,Kn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirji'>s8N#mrVl`oqu6Ejq#:$ep&=U_o)A.X +mf)SPkl0`Dj8S!9h>Z1.f)F.td/M;hao9_4K]`,D>[JmK2YPtU%WW&anV#I(eTDkA[S,SfSQi<_IRao9Qad/MPof)FG'h>Z@3j8S3?kl0rJmf)_To)A7[p&=^bq#:*g +qu6NjrVQSFs7?9:s8N#jrVl]nqYpic2PlbaSs6Z`W!gT_u@LO_#D+G^&G\A]DfD=\c0,-\(e?B[Xkl<[cOsd\,3]7\biu;]DK8?^&GeG +_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+h>lI7i8FUproF(ArosFIrpB^Rrp]pXrq$-^rqHEqiUl=rfI,?rf6l8nr15>JW#); +NJm.^rf-f8rfI,?rfI,Arf[8ErfmDJrg3VOrgWnXrh'1`rhKIhri,muric=,rjDa7rk/6Erk\TRrlP/a +rm:Yormq)'rn[S3ro="?!U/_Ikl0rJmf)_To)A7[p&=^bq#:*gqu6NjrVQT)s1/1/rqlZnr;QTmqYp9h +p\smco`"FYn,D\QlMfrFj8S!9hYu:/f`'=ud/M>iaSs0X_>_1J]Df>>ZMq*-Y5YF"VZ*@iT`1P^Sc5&V +Qi<9LP5^UCO8b7?NrG%;N;eb4MZ/J3M#2ttL4P)1L4P)dLAlu-M#N8.MZ/P5N;eh9NrG.>O8b:@P5^aG +Qi_FQaSsKad/MJmf`'V(hYuI4jSn<@lMg/In,DnWo`"R` +p\sseqYpBkr;QZlrdk+@s3grHrq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b(f)F+s +d/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z.lL6Y^s$0YiW+^Z1YF%Zhq-/[JmW6 +\,No:])K>@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$g&Tt1hVS7hro*k;roX4Drp0RNqsXOTrq-*] +rqHEfqtg3fqu-EkJcEgkrVulrqu-Nlrql]krqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Ma +rl+lQrkABDrj_s5rilC)ri,morhKIcrgs+[rgEbPrg!JGrfR2@rfI,>rf-o9repZ2re^W1qhM;.JVJ`1 +JVNrSreLK/re^N0repc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJrl+lX +rm(MirmLeurn@A.ro!e:!TrMEk5OZFm/-8No)A:\pAXgcq#:-hqu6NmrVQT)s1JC2rqlZnr;QQiq>U-f +pAX^`nc&%Wn,DVOkl0`Dir7j7h>Z%*ec*tqci2)da8WpS^](nF[f3W4YPtX&W;`XmT`1P^Sc5#UQ2[!H +OT(=?NrFt9MZ/G/L&Qc)K):,lJF7oiG4NrG+=OT(ICQN!9NSc58\ +T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^bq>:$cr;QZl +rdk+Fs3grHrqlZnr;QTmqYp>[f3]6Zi79-Yl:j*Y5YR&XSAjqWq`RAW.CmuW.Co&W;*@hWr&jrXT#@$Y5YX% +Yl:p,Zi7B3\,No:]DfMC^])%J_u@XSao9K_cMl/hdJhSpfE'XWrn@A.rnm_6ro="@rosFJrpTjUrpg!Z +rq-3_rqHEerqZQirql]mrr)`nJcEgk!<<&tqu-NlrqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2rn%/" +rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUH*re19&qgnEjWdfSL +JU`6#qg\0erdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TSrlb;e +rmC_prn%/*rnmh:iW/!;k5OTDlMg8OnG_tWo`"O_p\t!cqYU3irVQT/s1eU5rqlZnr;QTmqYpi5.K`6W'Jc:3!J,XooIK"WhHiA?]H%C6lH%C7MH2`-eHi&3iIJ\KmJ,XutJc:<$K`6])M>iD3 +MuJe:OoCRDQiI(cUZS<3Tn/ngTn/p*U#r*K +U\LYaV>d@kVuE[mWrB'uY5YX(Z2V'.[JmZ7\c0;A^])(K_u@[TaSsE_cMl/je,e(Krmq)%rn[S2ro*k< +roa:Frp9XPrp]pXrq$-]rq??crqQBerqlKhJcEmm!WN&urqlZnr;QTmqYpi5.K`6W' +Jc:3!J,XooIK"WhHiA>nH%C6lH%C8iD3MuJe:OoCRDQid7hTDk>ZQi<6KOT(7=MuJG0 +KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDtIpuDLl\VDRs`_DuO_TDtn;NEVjeUF8g:\G5c^bH2`3j +IJ\QoKDpT(MuJb9OT(LDQidUrYl:s-])KDB_#D@Qao9TbdJh\qf`'e-iVqm:kl0iGm/HJQ +nc&.Zp&=^bq#:-hqu6NmrVQSFs8;oOs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUlMg#Hk5OB>i;VU4 +g&BV&eGdhoc2Poc`W!dS^](tH])K2roj@HrpTjUrpg![rq69arqQKgrqcWkrquZlqu20Hf)PaK!WDuq +rVl`oqu6Hkq#:!dp&=R^o)A+Wm/H;Lkl0WAiVqa6f`'G#dJhGjb5TE[_#D%H])K#7YPt['V>d7hTDk>Z +Qi<6KOT(7=MuJG0KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDm4,1DLl\VDZ4PNDuO_TDtn;NEVjeU +F8g:\G5c^bH2`3jIJ\QoKDpT(MuJb9OT(LDQidUrYl:s-])KDB_#D@Qao9TbdJhYsf[p2V +rnm_6ro="ArosFKrpTjVrq$-^rqHEerqcWkrqucoqu4J4_Z0E0rql]krqZQfrq??arpp'XrpKdNroj@D +ro*k5rnIG&rmLelrlP/Zrk\TIrji$9ric=%ri#gjrgs+Yrg!JHrf@&;reUQ-rdk&urdFclrcnEdrcJ-\ +rc8!Wrbq[Orb_OKqePM4JSKaNJSMH)rbM:Frb_OMrbqdTrc8!ZrcJ-`rd"KhrdFcqrdk'&reUQ4rf@&A +rg!JPrh'1ari#gsric=/rji$Ark\TQrlP/crmLerrnIG/ro*k=roj@HrpKdTrpp']rq??crqZQirqlKh +JcGZJg].9Pq#13irql]jrqQKerq69_rpp'XrpKdProj@Dro="9rn[S.rmq(trm:YhrlP/Zrk\TKrk/6> +rjDa2ric=%ri,mnrhTOerh'1[rgWnSrg3VMrfmDGrf[/@rf@&?rf@&=qi10*hMZrCJW#);l\k+grf-f8 +rfI,?rfI,Arf[8ErfmDJrg3VOrgWnXrh'1`rhKIhri,muric=,rjDa7rk/6ErkSTS!QN.Yao9Qad/MPo +f)FG'h>Z@3j8S3?kl0rJmf)_To)A7[p&=^bq#:*gqu6NjrVQSFs475JrVc]oqu6Hkq>U-fpAXaao)A.X +mf)MNkl0`DiVq^5g]#b&df.Slao9_.I\c0#9YPtU%W;`OjT)P5YQ2[!HO8b+;M#N,-Jc:/uIK"Ql +GlDpdFT-@\ErL%WDu4GOD>S/HCStouC4U,NC@u?@C\V`FD>S5MDuO_TErL.ZFT-L`H2`-hIK"`qJc:B& +M#NA4O8b=AQ2[9PTDkSaW;`jsYPts/\c0;A_>_FQao9WcdK.nK!7h)'rndY5roX4Drp'LNrp]pXrq69a +rqHEfrqcWkq#/)0`W,r:qu-NlrqcNfrqHEcrq-3ZrpKdQroj@Dro="9rnRM+rmLelrltG^rkeZLrji$9 +rilC&rhf[hrh'1Yrg3VGrf6u:reCE)rdXorrd4WircS3^rc.pVrbqdRrb_XNrbMLJqe?%Clt?<0rFLOk +JRsCD_e&^Wnn7i5rb;7ErbMLLrb_OMrc%jVrcA']rd"KirdOirre(3)rf$i:rfI,GrgWnZrhBCiri?%& +rjDa9rkJHMrl4r^rm:Ymrn7;+ro!e9roX4DrpB^Rrp]pZrq69brqZHfqu$Hlqu23Ig].9Pqu-Nlrql]k +rqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Marl+lQrkABDrj_s5rilC)ri,morhKIcrgs+[ +rgEbPrg!JGrfR2@rfI,>rf-o9repZ2re^W1qhNLPJVJ`1JVMa1reLK/re^N0repc7rf-o;rfI,?rfR2C +rg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rk8BK!PuVO`W!sXcMl2idf.nugA]t.i;Vg:k5OZFm/-8N +o)A:\pAXgcq#:-hqu6NmrVQSFs4RGOrqu]prVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Sl +c2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiAnANC]8)G +C&Vf4BDuMRAV"EDAVXjoB(BU3B`;`CCAr#JD#S;KDZ4VSEW1%YFoH[cHiAKnJ,Y*"LAm/2NrG.>Qi#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9reg]2qh>$& +rdt#uomk89JU`6#JUc@&npp^jqh"]ure:?-re^W4rf6u=rfI,Crg*PNrgj%\rh07eri#gtric=-rjDg> +!PH)E^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^bq>:$cr;QZlrdk+,s8N#sr;lio +!;uinrqcWhrqHEarposUrpB^MroO.>rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&; +reUQ+rdaurrd4WercJ-[rc%jSrb_XLrb2:Dqdob;qd]V7nmSY.JRF%:JRJ7\ojR`,raYh9ral(Arb;@H +rb_XQrc%jWrcA']rd4Wmrdb!#reLK3rf@&Brg*PSrh07cri?%%rj)O6rk8#]!RT0nd/MMnfDaP( +hu;X7jo4QEm/-;OoD\C]p\t!fqYpBkr;QZlrlG,\s8N#prVl`oqu6Ejq#:$eoD\=[n,D_RlMg#HjSn-; +hYu1,ec*tqbl5]_`;[LM])K,:YPtR$VuE@gSGnoTP5^OAN;eS2KDpB"HiA9hG5cO]E;jbSC]8)JB`;WC +Ac?6>@f'U5@/F=(?LhD#>_-.2>_-.t>kMCn?N+=/@/aU3@fBp;Ac?<@B`;`FC]85NE;jnWG5cacHiANo +KDpW)N;en;P5^jJSGo2\VuEarYPts/\c0>B`;[jWbl6#hec+5#hYuL5jSnBBlMg2Mn,DkVoD\L`q#:*g +qu6NjrVleJs5F"WrqlZnr;QTmqYpi5.K`6W'Jc:3!J,XooIK"WhHiA?;H%C6lH%C7o +H2`-eHi&3iIJ\KmJ,XutJc:<$K`6])M>iD3MuJe:OoCRDQi#\rm1Slrmh#%rnRM2ro="?roj@JrpKdTrq$-^rq??drqZQirql]mqu-NnJcFa0rr2fn!W;iqr;QTm +q>U0gp\sd`o)A+WmJcDMkl0ZBiVq^5f`'G#dJhAhaSs-W^Ab_C[JmB/WrApqT`1J\R/W9JO8b+;LAli) +J,XfoGlDmcErL%WDZ4GNCAqoGB)ZB@AH$'8@K'[3?hIar?+F3k>_-.8>kMCn?N+=/@/aU3@fBp;Ac?<@ +B`;`FC]85NE;jnWG5cacHiANoKDpW)N;en;P5^jJSGo2\VuEarYPts/\c0>B`;[gYbfg(2rmC_qrn.5, +ro*k;roj@HrpB^Rrpg!ZrqHEerqZQjrquZlrr1"=bQ%S@qu-Nlrql]krqQKerq??_rpg!Vrp0RJroa:> +rnm_1rmq(srm1Sbrl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.? +qdKJ2ra>_4ra,J-r`o"uoih;sJQ[P,JQ]lnnlk]jqcs,+qd080ra5Y4raGe:ral(ArbDFKrbqdTrcJ-` +rd=]ordk')repc:rfd>Krgj%_rhoasriuI2rk&0Frl+lXrm1Smrmq)(rndY5roa:Frp0RPrpg!Zrq??c +rqQKhrql]mrr)`nL&^66rr2]krqucmrqcWhrqHEarpp'XrpTjQrp0RHroF(:rndY/rn.4trm1Sfrl+lR +rkJHCrjMg2riZ7#rhf[frgs+Zrg*PJrfR2@rf$i6reCE*re(3#rdXorrdFcnrd4Wjrd"Bcrce?bqfU5, +JTQHbJTTIbrcS3`rce6ard"Khrd4WlrdFcprdXotre(3(reCE0rf$i;rfR2Erg*PRrgs+^rhf[oriQ7+ +!O8p/[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4jSn?Ali-;Nn,DhUoD\C]p\t!fqYpBkr;6Hirdk+5s8N#p +rVl]qqtgBjrqcWhrqHEcrq$-ZrpTjProsFFro*k6rnRM(rmLelrlG)WrkSNFrjMg2riH*srhBC_rg<\K +rf@&:reUQ)rdXoprce?`rc%jTrbVRKrb)4Brabn7ra5Y4ra5Y2qd'2+nltcj\QOJdJQ[b2nlk]jqcs,+ +qd080ra5Y4raGe:ral(ArbDFKrbqdTrcJ-`rd=]ordk')repc:rfd>Krgj%_rhoasriuI2rk&0Frl"oZ +a8j<\ci2Dmf)FJ(hYuL5kPj`Fli-APnc&.ZpAXgcq#:-hqu6NmrVQT;s3(HArqlZkqu6Hkp\smco`"C[ +n,D_Rkl0`Dj8S!9h#>t*dJhJkbl5NZ_#D%H[/R-qT`1M]Q2ZsGO8aq6K`6N$IK"KjFoH@ZDZ4MP +BDuNBAH$$:@/aO1?2e++=oMP#=8l7_BDucI +DuO_TFoH[cIK"crK`6c+O8b=AQ2[?RU&LkeXo>U)[/Rc<_#D7Nbl5oedJhetg]$.1j8S3?kl0uKn,DkV +o`"O_p\Xgdqu6Qkre:C5s8N#prVl`oqu6Hkq#:!dp&=R^o)A+Wm/H;Lkl0WAiVqa6f`'G#dJhGjb5TE[ +_#D%H])K#7YPt['V>d7hTDk>ZQi<6KOT(7=MuJG0KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDpiNS +DLl\VDVT.,DuO_TDtn;NEVjeUF8g:\G5c^bH2`3jIJ\QoKDpT(MuJb9OT(LDQi_4qd'2+qcWo#qcEbtk#JrkJQ.2"LK*D9qc<\tqcNi#qcs,+ra5Y4 +raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8lIt)=oMP& +=8l7q=&X;u9Pk^W;`mtYl;34^&GkIaSsB^d/MSpg&Bh,iVqp;k5O`Hmf)_ToD\F^p\t!fqYpBe +rIt:4s7lQlqu6Hkq>U-fpAXaao)A.Xmf)MNkl0`DiVq^5g]#b&df.Slao9_.I\c0#9YPtU%W;`Oj +T)P5YQ2[!HO8b+;M#N,-Jc:/uIK"QlGlDpdFT-@\ErL%WDu4GOD>S/HCWU=BC4U,NC=?qsC\V`FD>S5M +DuO_TErL.ZFT-L`H2`-hIK"`qJc:B&M#NA4O8b=AQ2[9PTDkPbVu`iqri?%%rjDa9rk8gBkq>U-fp&=R^nG_kTm/H/H +jSn-;h>Z+,ec*qpbl5]__>_.I\c/i4XT#0tU&LV^RJrBKNrFq8K`6Q%If=TkFoHC[DZ4GNB`;QA@fBd7 +?iF=0>PhS&=T2D$=&X;u9Pk^W;`mtYl;34]`Gsc!5\ZUrlb;frmh#$rn[S4roF(@rp9XPrp]pY +rq69brqZQirqlKhbQ#lfrr2fnrquclrqZQgrq??`rpg!Vrp9XMroO.=rnm_/rn%.urm(Mbrl"fNrjr*: +riZ7"rhKIbrgNhOrf@&9reCE&rdFclrcA'YrbqdNrb)4Ara>_4ra,S.r`];(r`B)"r`/hor_iMgr_V]P +JPUhmJPWFEqb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhY +rhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hlqu2NRkPtP\qu-Nl +rqcNfrqHEcrq-3ZrpKdQroj@Dro="9rnRM+rmLelrltG^rkeZLrji$9rilC&rhf[hrh'1Yrg3VGrf6u: +reCE)rdXorrd4WircS3^rc.pVrbqdRrb_XNrbMLJqe?%Clt?<0gLYqIJRsCDj^n=$nn7i5rb;7ErbMLL +rb_OMrc%jVrcA']rd"KirdOirre(3)rf$i:rfI,GrgWnZ!29LgUAh(iX8]@&[Jm`9^]).M`r=6^d/MJm +g&Be+i;Vd9k5OTDmJcSRnG`(Zp&=^bq>:$cr;QZlrdk+>s8N#prVl`oq>pEf!;ZWhrq??`rpg!Vrp9XM +roO.=rnm_/rn%.urm(Mbrl"fNrjr*:riZ7"rhKIbrgNhOrf@&9reCE&rdFclrcA'YrbqdNrb)4Ara>_4 +ra,S.r`];(r`B)"r`/hor_iMgr_T:aJPUhmJPYi4qb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:G +rbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriZ7.rji-F^Au%J`;[mXcMl;lfDaM'hu;X7jo4TFmJcSR +nc&1[pAXjdq>U6fr;QZlrmCbks8N#srVl`oqu6Hkq#:$eo`"F\nG_hSlMg#Hir7m8hYu+*e,I\mao96X +^](eC[/R9.W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA@fBa6?N+1.=oMJ$g;#X8i +;#X8f:@_-O9S#lg9S#mK9_D-Q:B")h:]!uf;>X8j<;onsQ.t.?iFO6AH$9AC]8;PErL:^I/\Zq +K`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lHmJcVSoD\C]p\t!fqYpBkr;QZl +repg>s8N#srVl`oqu6Hkq#:$eo`"FYnG_hSlMfoEj8Rs8g]#h(e,I_nbPoQ]_#D"G\c/o6Y5YL$U]-qc +Sc4rSPQ$XBN;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*sR@"D^:@"D_:@.dt*@fBm7 +AH$0>BDuWECAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$jJSH5:Prh07cri?%%rj)O6rk8#] +rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEfrqcWkrqucoqu20Hnc/Ufrr)iorql]k!VlEiq#:$eo`"F\ +nG_hSlMg#Hir7m8hYu+*e,I\mao96X^](eC[/R9.W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA +@fBa6?N+1.=oMJ$g;#X8i;#X8f:@_,`9S#lg9S#n:9_D-Q:B")h:]!uf;>X8j<;onsQ.t.?iFO6AH$9AC]8;PErL:^I/\ZqK`6f,O8b@BR/W`WU].4kYPtm0\[_^NrkJHNrlP/crmUktrndY4 +ro3q@rp'LMrp]pYrq-3arqZQirql]mrr)`ndJqVorr2fnrqucmrqZQgrqHE`rpp'Wrp9XKroX4raPb5ra>V1oj72pgK];7JR!b2 +j]qIanm;<&qdBD3qdTP8ral(@rb2:FrbMLNrc%jWrc\9crd4Wore(3)rf$i;rfR8K!LT8RSGo2\VuEar +YPts/\c0>B`;[jWbl6#hec+5#hYuL5jSnBBlMg2Mn,DkVoD\L`q#:*gqu6NjrVleIs7H?jrqlZnr;QTm +q#U9c!;QQfrq$-[rpTjQrosFEro!e3rnIG%rm:Yhrl+lQrk8<=riuI)rhTOdrg`tPrfI,br_2uXUe621JP(Jcmn3IMqb6u`qbI,dqb[8h +r_reqr`B)$r`T5+ra5Y5ral(BrbVRPrcA'_rdOitre190rfI,Drg`t\rhTOqrilL3[/dW6^&GkI`W"-] +dJhYpg]$(/i;Vmi&)IK"TmF8g.XD>n5JAc?-;?iF=0>Q._' +sDk:]=,g:&@W]9E%QA8c;228:a<_8Ae!Y8c)-Z9DD3[:&[oe:]=2i;>sPoQ.q-?iFL5 +Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoiedf.r!h#?72jSnBBlMg5NnG`"X +pAXgcq#:-hqtp?krepgDs8N#prVl`oqu6Hkq#:$epAX[_nc&"Vli-/JkPjH>hu;F1f)F+sci2#b`;[RO +]Df8k2+l +>2*22=b0_,=lifW>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K)MuJb;P6$l2 +rg<\UrhBCiriH+(rjMgrosFJrpTjVrq$-_rqHEerqcWkrqucoqu20H +p](6lqu-NlrqcWh!VclIt,=8l8"<;obo;#X8i:B!ub9`%K^9&N:O8:a<_8;Bar8c)-Z +9DD3[:&[oe:]=2i;>sPoQ.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB.%ZEaJ9 +rk&0ErkeZXrm1Slrn7;+ro!e:roj@HrpKdTrpp'^rqHEerqcWkqu-NndJq_rrr2fnrqucmrqcWgrq??` +rpg!Vrp9XJroO.'r`K&!r`8/] +gJi`'JQ.2"j](ABqc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reCK7!KW<@P5^aG +Sc5>^V#ILqZ2V-0^&GhH_u@mZcMl5jf`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQSFs8)cprqlZn +r;QTmqYp3ip@\L[rq-3[rpTjQroj@Cro*k4rn7;$rm:Yfrl>#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,t +rcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WShr_3;`oh#-Rpd^oFJOY2[JO\uqpdb3PqapZWr_3;c +r_WSir_`Ymr`9##r`];.raGe9rb2:Hrc%jYrd"Kkrdt-*rf-o?rg<\VrhKIl!O&[,YPts/]DfVFa8X9] +d/MSpg&Bh,iVqsU-fp&=R^nG_hSli-&G +j8Rs8g]#h(e,IVkaSs-W^AbYAZMps)VZ*7fRf8TOOT(.:L&QW%HN&*eErKnSC&V`D@K'U4>Q._'Q.t. +@K'mOnG`%Y +p&=^bq>U6iqu6Qkrf7$Gs7lQlqu6Hkq>U-fp&=R^nG_kTm/H/HjSn-;h>Z+,ec*qpbl5]__>_.I\c/i4 +XT#0tU&LV^RJrBKNrFq8K`6Q%If=TkFoHC[DZ4GNB`;QA@fBd7?iF=0>PhS&=T2D$Q.q-?iFI4A,^$/JGslo +G5cO]D#S/JB)Z6_4ra,S.r`];(r`B)"r`/hor_iMgr_UL. +JPUhmJPXWgqb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]q!/:N/LAm,1O8bFD +Rf8rYU].4kY5Yj.])KJD`;[mXcMl;lfDaM'hu;X7jo4TFmJcSRnc&1[pAXjdq>U6fr;QZlrdk(Ls8N#p +rVl]nqYp)JO=uUqa9pBpdOjFr^ZrY +r^m)]r_*5ar_<8dr_rerr`T5*ra5Y6rau.DrbqdWrc\9irdt-(rf6u@rg*PUrhKRoW;rpsYPts/]DfVF +`r=3]d/MSpg&Bn.ir8'=lMg/Ln,DnWp&=[aq>U6iqu6Qkrm^tts82cor;QQlq#:$eo`"F\nG_kTli-,I +ir7j7h#>n(df.Sla8X!U^](Y?Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm +:]=)f9)_E]8H)-V7f,XR7+t$)6@hIS6@hJ:6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6 +AH$BDDZ4YTGlE*iJc:N*NW,(>Rf8oXU].CpZ2V01^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Ua +q>U6fr;QYTs7$'frr2lqr;QTmqYp9hp\sgao)A.XmJcDMkl0T@i;VU4f)F.tci2&c`;[ON\c/u8YPtL" +V#I"cR/W?LO8at7K`6N$I/\?hErL%WD#S,IAH$';?iFC2>Q.e)X2h:]=2i:]!oX:!u^d +9S#lg9\`>7:%_9\;#X8f;#X>h;Z9Ypn(df.Sla8X!U^](Y?Z2Um)U]-nbRf8HKNW+e6Jc:)s +GlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR7+t#:6@hIS6@hJ]6i0:N7JK@O8,c'Y +8cDB^:&[rf;>sJmQ/"/@fBp;C]85NEW14^I/\]rM>iM6OoCgKScPU]!2KOqriuI1rkJHMrl>#a +rmUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$HleGn%uqu-NlrqcWhrqHEarpp'WrpB^Lroa:>rndY. +rm^qorlkA\rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQrb2:?ra5Y1r`K/#r`&knr_NMgr_!/] +r^d#Yr^QZOr^>@*qEj@3JO,bkJO/?_g-XL\qaC_7rb2:H +rc%jZrd+QnreCE1rfI,Frg`t]ri,n"rj2U:rkSNPrlkAgrm^r$rn[S4roa:GrpB^Rrpp'\rqHEfrqcNi +rr%lWoDeghqu-Nlrql]jrqQKerq$-[rpTjQrosFEro!e3rnIG%rm:Yhrl+lQrk8<=riuI)rhTOdrg`tP +rfI,br_2uX`_(eSJP(Jcbt@k+ +qb6u`qbI,dqb[8hr_reqr`B)$r`T5+ra5Y5ral(BrbVRPrcA'_!.FrtIf=otK`6r0OT(LDSGo2\V#ILq +Z2V01^&GkI`W"-]dJhYpg]$(/i;Vm_7rb2:Hrc%jZrd+QnreCE1rfI,FrgX"_T`CecWW'("Zi7W:_#D=Pbl5ugeGe2$h>ZC4 +kPjcGmJcSRo)A:\p\t!fqYU3irRCl!s8N#prVl`oqYp9hp\sganc&"Vli-/Jjo43;h#?"+e,I\mbPo?W +^Ab\BYl:^&VZ*4eRJrHMNW+_4K)U/sGlDd`DZ4DMBDu<&?N+@3BDuZFDZ4_VGQ*!hK)UT* +NW,1ARf8rYVZ*XqYl;34^&GkIbPoiee,J&"h#?72jo4KCli-APo)A:\p\t!fqYU3irVQSYs7?9irqlZn +r;QQlq#:$epAXX^nG_kTlMfuGjSn*:h#?"+df.PkbPoBX^AbbDZMq$+WrA[jSGnrUOT(4i&)IK"Tm +F8g.XD>n5JAc?-;?iF=0>Q._'sDk:]=,g:&@W]9E%QA8_Zde8:a<_8EED&8c)-Z9DD3[:&[oe +:]=2i;>sPoQ.q-?iFL5Ac?BBD>nMREr^OfH[Ga@rdb!)rf-o=rgEbVrh07jriZ7+rk&0ErkeZX +rm1Slrn7;+ro!e:roj@HrpKdTrpp'^rqHEerqcWkqu-NnKE(rMqu-NlrqcWhrqHEa!V,[[nc&"Vli-/J +jo43;h#?"+e,I\mbPo?W^Ab\BYl:^&VZ*4eRJrHMNW+_4K)U/sGlDd`DZ4DMBDu<Q.t.@/ag< +CAr,MF8gC_I/\`sM#ND5Pl@*PT:Z+Urhf[qrilC4rk8ZC4jo4KCm/HGP +nc&1[p&=^bqYpBkr;QZlreCIPrr2lqr;QTmq>U-fp&=L_nF-GIrpKdMroa:@rnm_/rmq(qrlkA_rkSNF +rjDa.ri#gjrgNhOrf@&7re19#rcnEarbqdNrau.=ra5Y/r`K.ur_i_kr_U9jr;QZlrn@D(s8N#srVl`oqu6Bi +pAXaanc&"VmJc>Kjo49=h>Z(+eGdenb5TBZ^Ab\BZi7$)V>d.eR/WZF5k5OTDmJcSR +nc&4\p\ssequ6NmrVQSYs7ZKlrqlZnqu6Hkq>U-fp&=R^nG_hSli-&Gj8Rs8g]#h(e,IVkaSs-W^AbYA +ZMps)VZ*7fRf8TOOT(.:L&QW%HN&*eErKnSC&V`D@K'U4>Q._'Q.t.@K'mKjo49=h>Z(+eGdenb5TBZ^Ab\BZi7$)V>d.eR/WM#Mr(HiA6g +E;j\QB`;K??iF=0=8l5!;Z9Ml:&[fb8cD9[7f,XR7/0.!6M*No5_21O5e9516MNqI7/fUR7K,dU8,c*Z +9E%]c;#XAl<;otu>lJ+0@fC'?D#SDQGQ*!hJGtB(N;et=Rf8rYV#IOrZMqB5_#D=Pb5Tceec+;%hu;X7 +jo4TFmf)_ToD\F^p\t$gqu6NmrVle\s7ZKirVl`oqYp9hp\sgao)A.Xmf)POkl0T@hu;F1f)F+sci1ua +_u@FM[JmH1Xo>*pTDk;YOoC@>M>i)*IK"KjEW0kTC]7lD@fBa6>Q._'sAj:&[ca8cD9[8,GdQ +7K,^/6eF_V6@hIS6Jk,f6i0:N7JK@O8,c'Y8cDB^:&[rf;>sJmQ/"/@fBmrgNhXrhKIpriuI1rkJHMrl>#armUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$HlM?!SS +rr)iorql]krqHEbrq$-Y!U]7SmJcGNjo4<>hu;@/ec*qpb5TBZ_#CkCZi7-,V#I"cRf8HKNW+b5JGsop +GQ)R\D#S,I@fBa6>lIh(lJ+0@fC'?D#SDQGQ*!hJGtB(Muf''!0R8Lrh'1criZ7+rj_sCrl+lZrm:Yprn@A/ +ro3q=rp0ROrp]pYrq69brqcWkrqucorr1XOgAh0Orr)inrqcWirqHEbrpp'XrpB^MroF(;rndY,rm^qn +rlP/WrkJH?riuI(rhBC_rg3VGrepc0rdOilrcJ-XrbDFEra>_2r`];%r_remr_NMer_!/\r^ZrWr^HfS +og@4qoK[smJO"cO\j4b3ogA^Hr^HfUr^ZrYr_!/`r_NMir`&ktr`];,ra>_;rbDFNrcJ-brdOj#reg]: +rg3VTrhBCnrilC0rkJHNrlP/crm^r"rndY5roF(Drp9XRrpp']rqHEfrqcWkrr)iqPlLIWqu-NlrqcWh +rqHEarpp'WrpB^Lroa:>rndY.rm^qorlkA\rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQrb2:? +ra5Y1r`K/#r`&knr_NMgr_!/]r^d#Yr^QZOr^>@*i'R6*JO+iQL-aN[g-ba*qaLKRr^ZrYr^m)]r_EGg +r_WSnr`9##ra#M2raGk@!GH0GC]8;PFoH^dJ,Y3%MuJh;QN!ERU&M%jY5Yd,]`,_G`W"*\d/MPogA]q- +iVr$>lMg2Mn,DnWo`"Uaq>U6fr;QYOs8N#srVl]nqYpU6iqu6Qnrn@D.s8N#prVl]n +qYpZ")df.Pk`ri/,I/\?hErKqTB`;QA +@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6e"Hp5_21O5_2235h&-n6i0:K7fGpW8cDB^9`@ie;Z9\q=oM\* +@/a^9C&VuKErL:^I/\ctM#NG6Q2[6OT`1qiY5Yd,^&GnJ`r=9_df.hsh>Z@3j8S9Ali-APnc&1[pAXme +qYpBkrVQS\s7u]orqlZnr;QQlq#:$eo`"C[n,DYPl2KfDi;VO2g&BJ"ci2,e_>_1J\c/i4X8]!qTDk8X +Pl?[AL]2o)I/\BiF8g(VCAqlF@/aI2>Q.\&;u9Dj:B!rd8cD9[8,c!T7K,^G6bbte62X!!5_21T5lO'a +6M3_C7/fXP7fGpW8H)3[9`@c`;#XGn&?N+=4B)uXXrbDFMrcA'_rd=]sreUQ5rfmDNrh'1eri?%& +rji$Ark\TWrm1Smrn7;+ro!e;roj@IrpTjWrq-3arqZQiqu$Hlqu2cYrr2fnrql]krqZQerq-3[rpKmR +lN$8Mkl0WAi;VR3f)F+scMki__>_.IZi70-WW&RiS,S]PNrFn7KDp8tGQ)X^D>n5JAH$!9>lIn*lJ.1AH$nST +GQ*!hKDpZ-NfF+"rg!JOrh07iriZ7,rk8c=2rr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC&rhf[drg<\Jrepc0rdaun +rcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>%r^#a5JO"cOJO$A'r^#@,qa:6Jr^H]Rr^m)] +r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1SmrnIG/ro*k> +rp'LMrp]pYrq-3brqZQirr)`nQiHm]rr2oqrqucmrqZQfrq69]rp]pTrosFFro="8rn@A&rm:YgrlG)S +rk&0;riZ7!rhBC\rg!JDreUQ,rdXolrcJ-XrbDFEraPk6r`fA(r_reor_NMfr_!/]qa^WTqaLKPnjCek +j?S8]JO"cOmQf&aogAUEr^H]Rr^ZrZr_*5br_NMjr_reur`fA/!+Gt<@fC!=CAr/NF8gF`J,Y*"M#NJ7 +Pl@-NUAh+jY5Yj.]DfVFaSsE_d/MVqgA^"/j8S3?l2L,MnG`"Xp&=^bq>U9jr;QZlrf[<\rqlZnqYplMg2MnG`%Y +o`"Xbq>U6irVQTMs5!_SrqlZnqYp9hp\sgao)A.Xm/H8Kk5O<Z.-df.Pkb5T9W^&GM?YPtO#V#Hk_ +QN!$GM>i2-J,XZkErKtUB`;TB@K'O2=oMJ$;>sDk:B!lb8cD9[7f,XF6f:<160LRb5_21O5d!BO6/=m) +6i07M7JfRR8H)3[9)_Tb:]=5jlJ12Ac?BBDZ4\UGQ**kK`6i-OoC[GS,T5_WrB4$\,O)?_Z%^W +cMl8kgA]q-i;VmU6irVQS\s7u]orr2lqr;QTmq#:!dp&=L\n,D_Rkl0]Cir7d5 +f`'D"ci2)d`W!UN\c/r7X8\spT`1>XPQ$UAL&QZ&IK"BgErKtUBDuH@@/aI2=oMJ$;Z9Ml:B!oc9)_E] +8,c!T7K,^D6d\6]5_21O5_22g5gD^e6iKLN7K,dU8,c*Z9)_K_:B")h;Z9_r=oM\,?iaYCrac"@rbh^T +rcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^Rrpg!\rqHEerql]mrr)`n +P5kO\qu-NjrqQKerq-3\rp]pR!U8hKl2KiEi;VR3gA]P"cMkuc_Z%7J\,NT1WW&^mS,S`QOoC4:K`6K# +GQ)X^DZ4>KAc?-;>lIn*lJ12Ac?BBDZ4\UGQ**kKE6pd!/^];rg*PQrhTOnric=1rk8dKRrr)iorqcWhrqHEarpg!Vrp0RIroF(:rnRM+rm:YgrlP/T +rk&0^Hnrr)iorqcWg +rq??`rp]pTrp9XIroF(:rnRM*rmUkkrlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6 +r`];&r`/qor_EGer_!/]r^d#XqaLKPog?eej?S8]JO"cOmQe`Xqa:6Kr^H]Rr^d#[r_!/ar_NMir`/r" +r`T;/!FK45@fBsFJO"cO +JO&ckr^#7)pd>$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdk0*L&cu-O8bCCRf9&\ +W;`t![f3r=_#DITc2Q)hg&Be+i;Vg:kl0oIn,DnWo`"Uaq>U6ir;QZorn[V1s82cor;QQlq#:$eoD\:Z +n,DSNkPjN@hYu7.f)F%qbPoN\_#CqEZi7$)V>d+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm +:B!rd8cD9[7fGjU7/0.'6K17]5_21O5c?s%6N0=K6iKLQ7K,dU8,c*Z9`@fd;#XDmhu;@/ec*qpb5TBZ_#CkCZi7-,V#I"cRf8HKNW+b5JGsop +GQ)R\D#S,I@fBa6>lIh(QJ)7ra5Y6rb2:Irc%j\rd=]qreUQ4rfR2Krh'1criZ7+rj_sCrl+lZrm:Yprn@A/ +ro3q=rp0ROrp]pYrq69brqcWkrqucorr/)\qu-NlrqcWhrqHE`rpg!VrojIHk5a]Ej8Rp7gA]\&d/M5f +`rc=2rr)iorql]jrqQKerq$-Y +rpB^LroX4>rndY-rm^qnrlY5ZrkABAriuI%rhKIarfmDDrf$i.rdOimrc.pTrbDFBra>_2r`B)!r_i_l +r_Jh*V*-qa:?Nr^HfUr^ZrZr_*5br_WSlr`/r!ra#M2 +raYqBrb_XSrd+Qmrdt-.rfI,Drgs+ari,n%rjVm@rl+lZrm1Snrn7;-ro3q>rosFLrp]pYrqHEerqZQj +rqucoQiI!`rr2oqrql]krqZQfrq69]rp]pSrp'LDro*k5rn.5"rm1Scrkn`MrjDa1riH*nrgj%TrfI,; +re:?#rd"KbrbqdNrau.;ra#M,r`9"sr_WSir_3;`r^d#Yr^QlUr^?EHe3_SKJO"cOJO&!Ue3`gqr^?`S +r^QlWr^d#\r_3;er_WSnr`0#&!Er\+?2e72B)ZQEDuOkXH2`9lL&Qu/OT(UGSc5A_XT#I'[Jmr?`;[mX +ci2Gnf`'b,iVqp;lMg/LnG`"Xp&=^bq>U6iqu6Qnrf[<\rVl`oqu6Ejq#:$eoD\7YmJc>Nk2l[+ro3q6 +rn7;#rm1Sdrl+lNrj_s4ri,mlrgs+RrfI,l2L)LnG`%Yp\sseq>U9jr;QZNs5!_S +rVl`oqu6Ejq#:!do)A+WmJc>Kjo46Z(+eGdbmao96X^&GJ>YPtL"UAg__PQ$XBMZ//*I/\?hE;j\Q +C&VT@?iF=0sAj9`@Z`8H)-Y7fGgK6f:<16/OqY5_21O5c$aF6/Y*/6Mj.I7/f[T8,c'Y9)_N` +:]=5j<;oqt>lJ+0@fC*@D#SDQGQ*!hJGtH*NrG7ASc5A_W;a""[f3u>`;[mXcMl>mg&Bh,iVqsU9jr;QY]rrN0"rr2fnrql]krqZQerq-3[rpTjProj@Aro!e3rmq(srm(M_rk\TIrj2U- +ri,mirgWnPrf6u7re(2trce?^rb_XJrac"9r`oG*r`/qqr_NMer_!/]qa^WTr^?lJ.1AH$nSTGQ*!hKDp]+NrG=CRf8uZWW'("Zi7Z; +_Z%RScMl8kf)FM)i;Vd9kl0oIn,DkVo`"R`q>U6iqu6Qkrg!N_rVl`oqu6Ejq#:!do)A+WmJc;MjlHL( +ro*k4rn.5"rm(Mbrl"fLrjMg0ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG'r`&kor_NMer_!/\ +r^ZrWr^?EHi'RE/Rm;NiJO"cOks556h*V!+qaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?h +!J#\#JGtH*NrG7ASc5A_W;a""[f3u>`;[mXcMl>mg&Bh,iVqsU9jr;QZNs5!_S +rVl`oqu6BipAXaanc&"Vm/H2IjSn*:g]#e'df.Jia8WpS])K,:YPtBtTDk;YOT(1;LAl`&HN&$cE;jYP +BDu<5hh,@/agd[t[/RZ9_>_IRbl6&ifDaP(i;Vg:kPjiImf)bUp&=^b +q#:0ir;QY]rrN0"rr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC&rhf[drg<\J +repc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>%r^"OhJO"cOJO%RIr^#@,ogA^I +qaUQVr_!/`r_NMjr_`_t!EWA%>5hh,@fC!=CAr/NFT-RbJGt<&MuJn=R/W]VVZ*[rYl;65^Ac%Lbl5rf +e,J,$hYuL5kPjcGmJcVSoD\C]q#:*gqYpHjrg!N_rVl`oqu6BipAXaanc&"Vm/H/KjQ$=%ro!e1rmq(s +rlkA^rk\TFrjDa/rh]UdrgNhJrepc1rdauorcJ-YrbMLGra>_2r`];$r_relr_$Lr^QlWr^m)^r__d[t[/RZ9_>_IRbl6&ifDaP(i;Vg:kPjiImf)bUp&=^bq#:0ir;QZNs5!_SrVl`oqu6?hpAXaanc%tU +li-&Gj8Rs8gA]\&dJh>g`W![P\c/r7Y5Y3qT)P,VOT(1;L&QN"GlDd`DZ4DMAc?*:>lIn*%r^"OhJO"cOJO%RIr^#@,ogA^IqaUQUr^m)]r_EGg +r_WYr!EN8#=T2S)@K'j;B`;oKErL:^J,Y-#M>iY:QN!BQV#ICnYPu$1^&GnJb5T]cdf.u"h>Z@3k5OTD +m/HMRoD\C]p\t!fqYpHjrg!N_rVl`oqu6?hpAXaanc%tUli-#Ij5U."rnm_/rmq(rrlb;[rkSNDrj2U, +rhKIarg<\Hrepc0rdFcjrcA'VrbDFDra>_1r`T5#r_i_kr_3;`r^m)Zr^QlUpd=11pd(01JO"cOJO&6\ +pd+%/pd>$Lr^QlWr^m)^r_3;er_i_qr`T5*ra>_:rb;@LrcA'`!I]@rIK"s"MZ/_:R/W]VU].FqZi7N7 +_#D@QbPoogec+;%hu;[8k5O]Gmf)bUp&=[ap\t'hr;QZNs5i/,I/\?hErKqTB`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y +7K,^M6fp_^5_21O5_21d5jUi76MNqI7/fXS7fH!Y9E%Wa:]=8k<;p#!>Q/"/AH$nSTGQ*!hKDp`, +O8bLFSc5A_Xo>X*\,O/A`;[pYd/MSpg&Bn.ir8'=li-;NnG`%Yp&=^bqYpBkrVQSbrrN0"rr2oqrqucl +rqQKerq-3[rpTjProj@Bro!e2rn7:trlkA`rkSNFrjMg/ri#gjrgNhNrf@&5rdt,urcS3[rb_XIraYq7 +r`];&r`/qor_EGer^m)[r^ZrWr^HfSpd$Kr^HfUr^ZrYr^m)`r_NMi +!*'&"5hn.A,^-?D>nPSFoHjhK)UN(O8bCCRf9&\W;`t![f3r=_#DITc2Q)hg&Be+i;Vg:kl0oI +n,DnWo`"Uaq>U6ir;QZorg<`brr2lqr;QQlp\smcoD\7YmJcGNjT4B#!94"8rn7;$rm:Yerl"fNrjVm4 +riQ0orgj%Trf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_NMer_!/]r^QlUr^?NKk!G"lJO"cOJO%pS +k!Ji1r^?`Sr^QlYr_*5ar_NMkr`&l!r`fA/rac"Brb_XTrc\BjHiSQnKDp`,O8bLFSc5A_Xo>X*\,O/A +`;[pYd/MSpg&Bn.ir8'=li-;NnG`%Yp&=^bqYpBkrVQTSs55hk-@fC$>C]8>QG5cjfJc:H( +NW,4BS,T)[WrB4$[f4&@`;[mXci2DmfDa\,ir8'=lMg2MnG`(Zp&=^bqYpBkrVQSbrrN0"qu-NlrqcWh +rqHE`rpg!VrosFFro="7rn@A&rm:Yfrl4rQrjr*8ri?$prh'1Vrf[8@re(3"rd4Wbrbh^Nrac":ra5Y, +r`/qrr_WShr_3;_r^d#Xr^HfSpdrbMLQrcS5hh,@fC!=CAr2OFoH^dJGt<&N;f(@Rf8uZW;a""[/Rf= +_Z%UTci2DmfDaY+iVqp;l2L&KnG`"Xp&=^bqYpBkrVQSbrrN0"rr)iorql]jrqQKerq$-YrpB^LroX4> +rndY-rm^qnrlY5ZrkABAriuI%rhKIarfmDDrf$i.rdOimrc.pTrbDFBra>_2r`B)!r_i_lr_qlg-Y[(r^?`Sr^QlWr^m)^r_Z")df.Pk`rL&QT$H2_maDuOJMB)Z6<>lIn*RJriXW;`t!Zi7Z;_Z%RScMl8kf)FM) +i;Vd9l2L&Kn,DnWp&=^bqYpBkr;6JarrN0"rr)iorql]jrqQKdrpp'WrpB^KroO.ric="rhBC_rfd>Breg]*rd=]hrc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTog@Y(r^"4_ +JO"cOJO%7@r^#@,qa:6Kr^QlWr^d#\r_3;e!)Wbo;>sPoZC4jo4KCmJcVSo)A@^p\t!fqu6NmrL!Warr2ipqu6Hkp\sjbo)A+W +li-/JirS)r!9!k4rmq(srm(M_rk\TIrj2U,ri#ggrgEbLrepc0rdXomrcA'Wrb;@DraGe2r`T5$r_i_k +r_RJriXW;`t!Zi7Z;_Z%RScMl8kf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBkr;6KRs5k'df.Pk`W!^Q]`,59XT#*rSc4uTOoC4:K`6K#GQ)[_DuOGL +AH$!9>lIk)sSp +=T2S)@/a^9B`;rLF8gC_J,Y-#M>iY:Qi#Srjr*:ric_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=C7K0XuQJO"cO +d6Qq_qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb2:Lrc8*aG5ujdJ,Y-#M>iY:QilIk)sSp=T2S)@/a^9BDufJEW1+[J,Y*" +M#NM8QN!ERV>dOpZ2VB7_#D:Oc2Q,iec+>&hu;X7kl0lHmf)_To`"R`q>U9jr;6JarrN0"rr)iorql]h +rq??arpg!Urp0RGro="8rn@A&rmC_grl+lPrji$7riZ6qrgs+VrfI,;re:?"rcnE`rbh^Mral(:r`oG* +r`/qqr_NMer_!/]r^ZrWr^HTLk!Ji/[m5L0JO"cO_*Ic]k!Ji1r^HfUr^ZrZr_*5a!)EVk:]=8klJ.1Ac?ECDZ4_VGlE-jL&Qu/OT(XHT)PMaY5Yd,\c0DD`r=0\dJh\qgA^"/j8S3?li->Onc&4\pAXgc +qu6NmrL!Warr2ipqYp_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=U=qa#j"JO"cOJO%UJr^#m;qa:?Nr^HfU +r^ZrZr_3;dr_`Ypr`K/)ra>_9rb)4Jrc%s]FT?R`J,Y*"M#NM8QN!ERV>dOpZ2VB7_#D:Oc2Q,iec+>& +hu;X7kl0lHmf)_To`"R`q>U9jr;6KRs5n/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6,Z$>5_21O +5`.i+62O">6N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6Q2[U9jr;6JbrrE$!rr2oqrquclrqHEcrq$-YrpB^NroO.= +rnm_.rmh"prlY5YrkJHArj)O*rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Y +r^HfSpd=11Y!@P'JO"cO\3T1Cpd>$Kr^HfUr^m)^r_*;f!DcMj;Z9Yp=T2P(?iFU8C&VuKErL:^I/\ct +M>iS8Qirb_XS!HiMbFoHjhK)UQ)O8bFDSGo>`WrB7%\c0>B_u@mZd/MPog]$+0ir80@lMg5NnG`(ZpAXme +qu6Njro=%=s8N#srVl`oqYpn,G@fBa6=oMM%<;o_n:B!rd8cD9[7fGgQ6gR/=6,Z$>5_21O5`.i+62O">6N0@L7/f[T +8,c*Z9`@fd;#XGnZC4 +kPjcGmf)_ToD\F^q>U9jr;QZorgs,irW3#trr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fN +rjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$Kn6JO"cO +JO$_1i'RE1r^?`Sr^QlXr^m)^!)EVk:]=5j;Z9et>5hk-@fC$>C]8>QG5cjfJc:H(NW,4BS,T)[WrB4$ +[f4&@`;[mXci2DmfDa\,ir8'=lMg2MnG`(Zp&=^bqYpBkrVQSfs8N#srVl`oqYpB_Z%aXci2DmgA]q-iVr$>lMg5NnG`%Yp&=ddqu6NmrVlfVs5X.Y +rr2lqqu6Hkq>U'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX^&GP@Yl:X$UAgV\Pl?aCL&QW%HiA*cE;j\Q +Ac?05_21O5`.i+62O">6MNqI7fGpW8cDB^:&[ug;Z9_r +=oMe-@fBslMg5NnG`%Yp&=dd +qYpBkrVlefrrE$!rr2oqrquclrqHEbrpp'Xrp9XKroF(;rndY+rmUkmrl>#UrkAB=riZ7!rh07ZrfmD@ +reCE&rd+Qdrc%jOrau.=ra#M+r`B(sr_WShr_*5^r^ZrVr^?NKj$Kn6JO"cOJO$_1i'R<.r^?`Sr^ZrZ +r_!5d!DZDh;#XAl=8lD&?2e=4B)ZQEE;k"ZHN&HoLAm/2Pl@-NT`1nhYPtp.^Ac"Ka8XEae,ItuhYuL5 +jSnECm/HMRo)A=]p\t$gqu6Qkrh9Akrr2lqqu6Hkq>U'doD\7Ymf)MNkPjE@hVJ7hrn@A#rm1SerkeZJ +rj_s3ri,mkrgNhNrf@&4rdauprcA'XrbVRFraPk5r`T5$r_i_lr_$Mr^ZrZr_*5br_WSlr`9#$ra5Y6ral(FrbhgYEr^:\HiAQpL&R/4Pl@-NUAh.kYl;03 +^Ac"KbPoiee,J)#h>ZC4kPjcGmf)_ToD\F^q>U6iqu6Qnro=%=s8N#srVl]nqYp";Z9Ml:&[fb8H)-Y +7ef@;6N09h5_21O5_21X5lO(H6LmJ<6iKRS8,c'Y9E%Zb;#XAlZ@3kPjcGmJcVSoD\F^q>U6iqu6Qnrgs,irW3#trqucmrqcWg +rq69]rpTjProsFBro!e3rmq(srm(M_rk\TIrj2U,ri#ggrgEbLrepc0rdXomrcA'Wrb;@DraGe2r`T5$ +r_i_kr_RJriXW;`t!Zi7Z;_Z%RScMl8kf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBkr;6Je +s8N#srVl]nqYp5_21O5`.i+62O"> +6MNqI7K,gV8H)9]:&[ug;>sSp=T2Y+@K'g:C]88OErLFbJGt6$NW,+?R/WfYVuEju[f3r=_>_UVcMl8k +g&Bh,i;VmU9jrVlefrrE$!rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM'rmLek +rl+lQrk/69riH*rrgj%TrfR2:re19#rce?_rbqdLrac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKlp@O6 +JO"cOJO$D(ksG87r^?`Sr^QlWr^d)`!DH2d:B",ilJ.1AH$9ADuOhWGQ**kK`6i-OoC^HSc5Mc +Xo>X*]`,_G`W"0^dJh\qh#?41ir80@li-APnc&1[pAXpfqu6Njrh9Akrr2lqqu6Hkq#9scoD\7Ym/H8K +k5O9>gtVnbrn7;!rm(Mcrk\THrjMg/ri#girg<\Jrf-o1rdXoorc8!UrbMLDraGe4r`K/"r_`Ykr_$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbhgXEWC.Z +HiAQpK`6u1P5^jJU&LthY5Ym/]`,bHb5T]cdf.r!h>Z@3k5OTDm/HMRoD\F^q#:*gqu6Qnro=%=s8N#s +rVl]nqYp9hp&=R^nG_eRl2KfDi;VO2g&BCuc2Pia_>_+H[f3H/VuE@gR/W9JNW+S0J,XfoErKtUC]7lD +@/aI2=T2>";>sDk:&[fb8,c!W7JK7=6Mj'e5_21O5_21U5lO(K6LmJ<6iKOR7fGpW9E%Zb;#X>k_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=U=qa%&DJO"cOJO$D(r^#m;qa:?Nr^HfU +r^ZrZ!)*De9`@fd;>sSp=T2S)@/a^9BDufJEW1+[J,Y*"M#NM8QN!ERV>dOpZ2VB7_#D:Oc2Q,iec+>& +hu;X7kl0lHmf)_To`"R`q>U9jr;6Jes8N#srVl]nqYp9hp&=R^nG_eRl2KfDhuVWg!8RS,rmC_irlP/U +rk/6=riZ6urh07Xrf[8?re(3"rd4Wbrbh^Nrac"9ra#M*r`/qpr_WSgr_*5\r^QlUpd=L:qa#cu!'l*# +JO"cOb_RUc2Q,ig&Be+i;Vj;kl0rJnG`%Yp&=acq>U9jrVlfVs5X.Yrr2lqqu6Hkq#9pbo)A.Xm/H8K +jo43;h#?"+dJhDiao9*T]Df8KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'g:CAr,MErLCaIf>!!NW,+? +QiU9jrVlefrrE$!rr2oprqcWirq??_ +rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrji$4ri5snrg`tQrf@&6re(3!rcS3[rb_XHraPk6r`];&r`&kn +r_EGdr^m)[r^QlTqa9^:r^!8DJO"cOJO$;%r^#m;r^6QNr^QlWr^d)`!DH2d:&[ug<;p#!>5hn.A,^*> +D>nPSFoHjhK)UQ)O8bFDSGo>`WrB7%\c0>B_u@mZd/MPog]$+0ir80@lMg5NnG`(ZpAXmequ6Njrh9Ak +rr2lqqu6Hkq#9pbo)A.Xm/H8Kjo40=gtVnbrn7:urltGarkSNFrjMg/rhoagrg3VHrf-o0rdXonrc8!U +rbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmm;RjqETTsJO"cOa?]2\pd>$Lr^QlWr_!/`r_NMjr`/r" +ra#M3rac"Crb_aWEWC.ZHN&BmKDpl0P5^gIT`1kgY5Ym/]`,_Gao9QadJhhuh#?72jo4KCm/HMRoD\C] +q#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&BCuc2Pia_#CtF[Jm?.VuE@gQi<-H +N;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6G>^95_21O5_ME%6LmJ<6iKOR7fGpW +9)_N`:]=5j<;otu?2e72A,^6BDZ4\UHN&BmK)U`.OoC^HT`1kgY5Yj.]DfVFao9QadJhhuh#?72jSnBB +m/HJQo)A:\q#:*gqu6Qnrh9AkrW)ltrVc`nrqcWirq69^rp]pTrp'LGro*k5rn@A#rm1SerkeZJrji$4 +ri5smrgNhOrf@&5rdk&rrcJ-Yrb_XGraPk6r`T5%r`&knr_EGdr^m)[r^QlTqa9^:r^!8DJO"cOJO$;% +r^#m;r^6QNr^QlWr^d)`!DH2d:B")h<;oqt>5hn.@fBsnPSFT-[eJGt<&O8bCCRf9)]WrB7%\c0>B +_Z%aXci2DmgA]q-iVr$>lMg5NnG`%Yp&=ddqu6NmrVleis8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBhuVWg +!8RS,rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlU +pd=L:JO'&sJO"cOJO%:Amm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFM!HN2\ErLCaIf=ruN;et= +QiU9jrVlfVs5X.Yrr2lqqu6Hkq#9pb +o)A+Wm/H5JjSn*:h#?"+dJhDiao9*T]Df5;Y5Y?uT`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr)LEW17_ +If=ruN;et=QiU9jrVleis8Mutr;llq +rql]krqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8<@rilC$rhBC\rfmDCre:?%rd4Wcrc%jQral(< +ra,S,r`9"rr_WSgr_*5^r^d#Xpd=C7r^!8DJO"cOJO$;%r^#m;pd>$Mr^ZrZ!)!>c9E%Zb;#XAlZC4kPjcGmf)_ToD\F^q>U6i +qu6Qnrh9Akrr2lqqu6Hkq#9pbo)A+Wm/H5JjSn'_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;RjqETTsJO"cOa?]2\pd>$Lr^QlWr_!/` +r_NMjr`&kura#M2raYqBrbV[UE<("XH2`9lK)U`.OoC^HT`1kgY5Yj.]DfVFao9QadJhhuh#?72jSnBB +m/HJQo)A:\q#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF[Jm<- +VZ*7fQi<-HN;eG.IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6G>^95_21O5_ME%6LmJ< +6iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6BD>nPSH2`9lK)U`.OoC^HT`1kgXo>a-]DfVFao9Qad/M_t +h#?72jSnBBm/HJQo)A:\q#:*gqu6Qnrh9AkrW)ltrVc`mrqcWirq69^rp]pSrosFFro!e3rn@A"rm(Md +rkeZJrjVm1ri#gjrgNhNrf6u2rdXoorcA'WrbMLDraGe4r`K/"r_i_lr__8rbDFL!HE)ZEW17_If=ru +N;et=QiU9jrVlfVs5X.Yrr2lqqu6Hk +q#9pbo)A+Wm/H5JjSn*:h#?"+d/M8gao9*T]Df5;Xo>3sT`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq) +sPo=8lM)@/a[8CAr)L +EW17_If=ruN;et=QiU9jrVleis8Mut +r;llqrql]krqQKcrq$-Yrp9XKroX4$Lr^ZrY!)!>c9E%Zb;#X>k +Z@3k5OTDm/HMRoD\F^ +q#:*gqu6Qnrh9Akrr2lqqu6Hkq#9pbo)A+Wm/H5JjSn'_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;RjqETTsJO"cOa?]2\pd>$Lr^QlW +r_!/`r_NMjr`&kura#M2raYqBrbV[UE<("XH2`9lK)U`.OoC^HT`1kgXo>a-]DfVFao9Qad/M_th#?72 +jSnBBm/HJQo)A:\q#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF +[Jm<-VZ*7fQi<-HN;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6G>^95_21O5_ME% +6LmJ<6iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6BDZ4\UHN&BmK)U`.OoC^HT`1kgXo>a-]DfVFao9Qa +d/M_th#?72jSnBBm/HJQo)A:\q#:*gqu6Qnrh9AkrW)ltrVc`mrqcWhrq69^rp]pRrosFDro!e2rn7:u +rltGark\THrjMg/rhoagrg<\Jrf-o0rdXoorc8!UrbMLDra>_2r`K/"r_`Ykr_sSp=T2V*@K'g:C]88OErLFbJ,Y*"NW,+?R/WcX +VuEju[f3r=_>_RUc2Q,ig&Be+i;Vj;kl0rJnG`%Yp&=acq>U9jrVleis8N#srVl]nqYp9ho`"F\n,D\Q +kl0ZBhuVWg!8RS,rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMe +r_!/[r^QlUpd=L:JO'&sJO"cOJO%:Amm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFM!HN2\ErLCa +If=ruN;et=QiU9jrVlfVs5X.Yrr2lq +qu6Hkq#9pbo)A+Wm/H5JjSn*:h#?"+dJhDiao9*T]Df5;Y5Y?uT`1;WOoC==K)U5uHN%saDZ4DMA,]m8 +?2dq)sPo=8lM)@/a[8 +CAr,MErLCaIf=ruN;et=QiU9jrVlei +s8Mutr;llqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0re(3"rd+Qa +rbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:S3VWjJO"cOVEjT:pd>$Lr^QlW!(m8a9)_N`:]=5j +_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;RjqETTsJO"cOa?]2\pd>$Lr^QlW +r_!/`r_NMjr`&kura#M2raYqBrb_aWEWC.ZHN&BmK)U`.OoC^HT`1kgY5Yj.]DfVFao9QadJhhuh#?72 +jSnBBm/HJQo)A:\q#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\nG_eRl2KfDi;VO2g&BCuc2Pia_#CtF +[f3H/VuE@gQi<-HNW+S0J,XcnErKtUCAqcC@/aI2=T2>";>sAj9`@Z`8,c!W7JK7=6G>^95_21O5_ME% +6LmJ<6iKOR7fGpW9)_N`:]=5j_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmmsPo=8lM)@/a[8CAr,MErLCaIf=ruN;et=QiU9jrVleis8N#srVl]nqYp9ho`"F\nG_eRl2KfD +huVWg!8RS,rmC_irlP/Trk&0re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[ +r^QlUpd=L:JO'&sJO"cOJO%:Amm?e:r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFM!HN2\ErLCaIf>!! +NW,+?QiU9jrVlfVs5X.Yrr2lqqu6Hk +q#9pbo)A.Xm/H8Kk5O<K`6K#HN%saDZ4DMAH$$:?N+(+ +5_21O5_hW(62j4A6MNqI7K,gV8H)6\9`@ie;>sSp=T2Y+@K'g: +CAr,MErLCaJ,Y-#NW,+?Qi<]XVuEju[f3r=_#DLUcMl8kg&Bh,i;VmU9jrVlei +s8Mutr;llqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,trd"K_ +rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:S3VWjJO"cOVEjT:pd>$Lr^QlW!(m8a9)_N`:]=5j +<;otu?2e72A,^6BD>nPSH2`9lK)U`.OoC^HT`1kgY5Yj.]DfVFao9QadJhhuh#?72jSnBBm/HJQo)A:\ +q#:*gqu6Qnrh9Akrr2lqqu6Hkq#9pbo)A.Xm/H8Kk5O9>gtVnbrn7;!rm(McrkSNFrjMg/ri#girg3VH +rf-o1rdXonrc8!UrbDFCraGe4r`K/"r_`Yjr_3;`r^d#Xr^HTLmm?n;JNs3#JO"cOJO%CDr^$!>pd>$L +r^ZrYr_!/`r_NMjr`/r"ra,S4rac"Crb_aWEWC.ZHN&EnK`6u1P5^gIU&LthY5Ym/]`,_Gb5T]cdf.r! +h>Z@3k5OTDm/HMRoD\C]q#:*gqu6Qnro=%=s8N#srVl]nqYp9hp&=R^nG_eRl2KiEi;VO2g&BG!cMkuc +_>_+H[f3H/W;`LiR/W9JNW+V1J,XfoErKtUC]7lD@K'U4=T2>";>sDk:&[fb8H)*X7JK7:6N09h5_21O +5_21X5lO(H6LmJ<6iKOR8,c'Y9E%Zb;#X>kZ@3k5OTDm/HMRoD\F^q#:*gqu6Qnrh9AkrW)ltrVc`mrqcWhrq-3\rpTjQroj@B +ro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrW +r^HTLmmsPo=8lM)@/a[8CAr)LEW17_If=ruN;et= +QiU9jrVleis8N#srVl]nqYp9hp&=R^ +nG_eRl2KiEhuVWg!8RS,rmLekrlY5Vrk/6=riZ7!rh9=Yrf[8?re19#rd4Wbrbh^Nrac":ra,S+r`/qp +r_WSgr_*5]r^QlUpd=C7r]u*#!'l*#JO"cOc9V@plpCJ7r^HfVr^d#]r__UVcMl8kg&Bh,i;VmU9jrVlfV +s5X.Yrr2lqqu6Hkq>U'doD\7YmJcALkPjE=h>Z.-df.PkbPoBX^&GM?YPtL"UAgV\Pl?^BK`6K#HiA*c +DuOPOAH$$:?N+(+5_21O5`.i+62O">6MNqI7fGpW8H)9]:&[ug +;Z9_r=T2Y+@K'g:C]88OF8gOcJGt6$NrG7ARf9&\WW'+#\,O)?_Z%aXci2AlgA]q-i;Vp=lMg2MnG`%Y +p&=ddqYpBkrVleis8Mutr;llqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07W +rfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:S3VWjJO"cOVEjT:pd>$Lr^QlW +!(m8a9)_N`:]=5j<;otu?2e72A,^6BD>nPSH2`9lK)U`.OoC^HT`1kgXo>a-]DfVFao9Qad/M_th#?72 +jSnBBm/HJQo)A:\q#:*gqu6Qnrh9Akrr2lqqu6Hkq>U'doD\7YmJcALkPjB?h;&(ern@A"rm(MdrkeZJ +rjVm1ri#gjrgNhNrf6u2rdXoorcA'WrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbhgYEr^:\HiAQpK`7#2PQ%$MUAh.kYPu$1 +^&GnJbPoiedf.u"h>Z@3kPjcGmJcVSoD\F^q>U6iqu6Qnro=%=s8N#srVl`oqYp5_21O5`.i+62O">6N0@L7/f[T8,c'Y9`@cc;#XDmZ@3kPjcGmJcVSoD\F^q>U9jr;QZorh9AkrW)ltrVc`m +rqcWhrq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdOimrc8!UrbDFBra>_2 +r`B)!r_`Yjr_3;`r^ZrWr^HTLmmsPo=8lM)@/a[8 +CAr,MErLCaIf=ruN;et=QiU9jrVlei +s8N#srVl`oqYpU'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX^&GSA +Yl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_RAc?3=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N09h5_21O5_21X +5lO(H6LmJB6i0:N7fGpW8cDE_:B")h<;oqt>5hn.@fBsnPSFT-[eJGt<&O8bCCRf9)]WrB7%\c0>B +_Z%aXci2DmgA]q-iVr$>lMg5NnG`%Yp&=ddqu6NmrVleis8Mutr;llqrql]krqQKbrpp'Wrp9XJroF(: +rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlU +pd=L:S3VWjJO"cOVEjT:pd>$Lr^QlW!(m8a9)_N`:]=5j<;otu?2e72A,^6BDZ4\UHN&BmK)U`.OoC^H +T`1kgY5Yj.]DfVFao9QadJhhuh#?72jSnBBm/HJQo)A:\q#:*gqu6Qnrh9Akrr2lqr;QQlq>U'doD\7Y +mf)MNkPjE@hVJ7hrn@A#rm1SerkeZJrji$4ri5smrgNhOrf@&5rdk&rrcJ-Yrb_XGraYq7r`];&r`&kn +r_EGdr^m)[r^QlTqa9^:r]u*#!'l*#JO"cOc9V@plpC\=qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y6ral(G +rc%s\F9$F^I/\ZqLAm85Pl@-NU].:mYl;34^Ac"KbPoiee,J)#h>ZC4kPjcGmf)_ToD\F^q>U9jr;QZo +ro=%:s8N#sr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/eGdhobl5NZ^](eCYl:[%V#Hn`Q2ZjDL]2r*If=Kh +EW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N09h5_21O5_21X5lO(H6LmJB6i0:N7fGpW8cDE_ +:&[ug<;p#!>5hn.A,^*>D>nPSFoHjhK)UQ)O8bFDSGo>`WrB7%\c0>B_u@mZd/MPog]$+0ir80@lMg5N +nG`(ZpAXmequ6Njrh9AkrW)ltrVc`mrqcWhrq-3\rp]pRrosFDro!e2rn7:urltGarkSNFrjMg/rhoag +rg3VHrf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmmsSp=T2V*@K'g:CAr,MErLCaIf>!!NW,+?QiU9jrVlefs8N#sr;QQlq>U*eoD\7Ymf)POkl0QBhVJ7hrnIG%rm:Ygrkn`M +rji$4ri5snrg`tQrf@&6re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r]u*#!'l*# +JO"cOc9V@plpC\=qaCEQr^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc%s]FT?R`If=ruL]3A6Q2[U9jr;6KRs5h&d/M;h`;[ON]Df)7XT#'qSc4rSOT(+9KDp?!G5cO]DZ48IA,]j7>Q._'!! +M>iV9QidOpZ2VB7_#D:Oc2Q,ieGe8&hu;X7kl0oIn,DkVo`"R`qYpBkr;6Jes8Mutr;llqrql]k +rqQKbrpp'Xrp9XKroX4re19#rd+Qarbh^Mrac":ra,S+ +r`/qpr_NMer_!/\r^QlUpd=L:qa$rAJO"cOJO$2"r^$!>pd>$Lr^ZrY!(m8a9)_N`:]=5jZ@3k5OTDm/HMRoD\C]q#:*gqu6Qn +rgs/hrr2ipqu6HkpAX^`nc&"Vli-,IiW7ro!8me2rm^qorltG\rkJHEriuI(rh]Ubrg*PFre^W,rdOii +rc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WNlpCS8K0XuQJO"cOd6R[sksGA:qaCEQr^ZrZr_3;d +r_WSor`K/(ra5Y7rau.Irc/$_FoZ^bIf>!!M>iV9QidOpZ2VB7_#D:Oc2Q,ieGe8&hu;X7kl0oI +n,DkVo`"R`qYpBkr;6KRs5k'df.Pk`W!^Q]`,59XT#*r +Sc4uTOoC4:K`6K#GQ)[_DuOGLAH$!9>lIk)sSp=T2S)@/a^9B`;rLF8gC_J,Y-#M>iY:Qi$Lr^ZrY!)!>c9E%Zb;#X>kZ@3k5OTDm/HMRoD\F^q#:*gqu6Qnrgs/hrr2ipqu6HkpAX^`nc&"Vli-,I +iW7ro!8me2rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_ +r^d#Xr^HfSpd=C7K0XuQJO"cOd6Qq_qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb2:Lrc8*aG5ujd +J,Y-#M>iY:QiZ")df.Pk`rL&QT$H2_maDuOJMB)Z6< +>lIn*RJriXW;`t!Zi7Z;_Z%RScMl8kf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBk +r;6Jes8Mutr;llqrql]krqZQdrq$-YrpB^Lroa:=rn[S-rmLekrlb;Xrk8$Mr^ZrY!)!>c +9E%Zb;#XAlZ@3kPjcG +mJcVSoD\F^q>U6iqu6Qnrgs/hrr2ipqu6Hkp\sjbo)A+Wli-/JirS)r!9!k4rmq(srm(M_rk\TIrj2U, +ri#ggrgEbLrepc0rdXomrcA'Wrb;@DraGe2r`T5$r_i_kr_RJriXW;`t!Zi7Z;_Z%RS +cMl8kf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBkr;6KRs55hh,@K'mZ@3kPjcGmJcVSoD\F^q>U9jr;QZo +rgs/hrr2ipqu6Hkp\smcoD\4Xm/H;Lj8n5u!9*q6rmq(srm1Sarkn`Lrj;[.ri,mirgNhNrf$i3rdk&p +rcS3ZrbMLFraGe3r`T5%r_i_lr_EGbr^m)[r^QlUr^?WNj$J\iJO"cOJO%pSi'RE1r^?`Sr^QlXr^m)] +r_EGhr_i_sr`];,raGe5hk-@fC$>C]8>QG5cjfJc:H(NW,4BS,T)[WrB4$[f4&@ +`;[mXci2DmfDa\,ir8'=lMg2MnG`(Zp&=^bqYpBkrVQSfs8Mutr;llqrquclrqZQdrq$-YrpKdNroa:> +rndY.rmUkmrlb;Xrk8ZC4kPjcGmf)_ToD\F^q>U9jr;QZorgs/hrr2lqr;QQl +p\smco`"@ZmJcDMjT4B#!94"8rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLFraPk5 +r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$J\iJO"cOJO%pSi'RE1r^?`Sr^QlXr^m)^r_NMjr_i_tr`];- +raPk>rbMLQrcSi/,I/\?hErKqTB`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6fp_^5_21O5_21d5jUi76MNqI7/fXS +7fH!Y9E%Wa:]=8k<;p#!>Q/"/AH$nSTGQ*!hKDp`,O8bLFSc5A_Xo>X*\,O/A`;[pYd/MSpg&Bn. +ir8'=li-;NnG`%Yp&=^bqYpBkrVQScrrE$!rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`M +rji$4ri5snrg`tQrf@&6re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r^!8DJO"cO +JO$;%r^#m;r^6QNr^QlWr^d)`!DH2d:&[ug<;p#!>5hn.A,^*>D>nPSFoHjhK)UQ)O8bFDSGo>`WrB7% +\c0>B_u@mZd/MPog]$+0ir80@lMg5NnG`(ZpAXmequ6Njrgs/hrr2lqr;QQlp\smcoD\7YmJcGNjT4B# +!94"8rn7;$rm:Yerl"fNrjVm4riQ0orgj%Trf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_NMer_!/] +r^QlUr^?NKk!G"lJO"cOJO%pSk!Ji1r^?`Sr^QlYr_*5ar_NMkr`&l!r`fA/rac"Brb_XTrc\BjHiSQn +KDp`,O8bLFSc5A_Xo>X*\,O/A`;[pYd/MSpg&Bn.ir8'=li-;NnG`%Yp&=^bqYpBkrVQTSs5lJ.1Ac?ECDZ4_VGlE0kK`6l.OT(XHT)PMaY5Yd,\c0DD`r=0\dJh_rg]$+0j8S3?m/HGPnG`(Z +pAXjdqYpBkrVQScrrE$!rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM&rm:Yhrl"fNrk&07riH*qrgj%S +rfI,9re(3!rc\9]rbh^IraYq7r`fA'r`/qor_EGdr^m)[r^QlTqa9^:qa%&DJO"cOJO$D(r^#d8r^6QN +r^QlWr^d)`!DH2d:B")hQ/"/A,^*>DZ4\UG5csiKDp`,OT(UGSc5JbX8]C']DfVF`;\$\dJhYp +h#?41ir80@li-APnc&1[pAXpfqu6Njrgs/hrr2lqr;QQlq#:!do`"@Zmf)SPjoON&!9=(9rnIG'rmC_g +rl+lPrji$7riZ6qrgs+VrfI,:re19"rd"Karbh^Mral(:r`oG*r`&kpr_NMfr_!/]r^QlUr^?NKk!Ji/ +PsBmcJO"cOj$5hh,@/agd[t[/RZ9_>_IRbl6&ifDaP(i;Vg:kPjiImf)bUp&=^bq#:0ir;QY^rrE$! +rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM'rmLekrl+lQrk/69riH*rrgj%TrfR2:re19#rce?_rbqdL +rac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKlp@O6JO"cOJO$D(ksG87r^?`Sr^QlWr^d)`!DH2d:B",i +lJ.1AH$9ADuOhWGQ**kK`6i-OoC^HSc5McXo>X*]`,_G`W"0^dJh\qh#?41ir80@li-APnc&1[ +pAXpfqu6NjrgWrerVl`oqu6BipAXaanc&"Vm/H/KjQ$=%ro!e1rmq(srlkA^rk\TFrjDa/rh]UdrgNhJ +repc1rdauorcJ-YrbMLGra>_2r`];$r_relr_$Lr^QlW +r^m)^r__d[t[/RZ9_>_IRbl6&ifDaP( +i;Vg:kPjiImf)bUp&=^bq#:0ir;QZNs5!_SrVl`oqu6Ejq#:!do)A+WmJc>Kjo46Z(+eGdbmao96X +^&GJ>YPtL"UAg__PQ$XBMZ//*I/\?hE;j\QC&VT@?iF=0sAj9`@Z`8H)-Y7fGgK6f:<16/OqY +5_21O5c$aF6/Y*/6Mj.I7/f[T8,c'Y9)_N`:]=5j<;oqt>lJ+0@fC*@D#SDQGQ*!hJGtH*NrG7ASc5A_ +W;a""[f3u>`;[mXcMl>mg&Bh,iVqsU9jr;QY^rrE$!rr2oprql]krqHEbrpp'W +rp0RJro="9rn[S)rmLekrl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau.lJ12Ac?ECDuOkX +H2`Z@3j8S`;[mXcMl>mg&Bh,iVqsU9jr;QZNs5!_PrVl`oqYp9hpAXX^nG_kTkl0]Cir7d5g&BP$ci2)d`W!UN\Gif5WrAgn +TDk,TOT(1;K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr)LEW17_If=ruMuJh;Q2[ETV#ICnZMqB5^Ac+N +b5T`dec+8$h>ZF5k5OTDmf)_To)A@^q#:-er;QY^rrE$!rr2oprql]krqHEcrq$-Xrp9XLroF(;rndY* +rmLelrl>#UrkAB=ric=#rh07ZrfmD@reLK(rd+Qdrc%jPrau.rn[S,rmh"orlY5ZrkABArj)O'rhTOcrg!JErepc-rdFckrc.pTrbDFBra>_2r`B)! +r_`Yjr_3;ar^d#Yr^QlTog@Y(qa$f=JO"cOJO&Qer^#7)qa:6Kr^QlWr^d#]r__8 +rbDFLrc.p_rdFm"JcLE%MuJh;Q2[ETV#ICnZMqB5^Ac+Nb5T`dec+8$h>ZF5k5OTDmf)_To)A@^q#:-e +r;QZNs5!_PrVl`oqYp9hp\sd`nc&"Vl2KlFj8Rp7gA]\&d/M5f`rdOpZi7N7_#D@Qbl5ugf)FA%hYuR7 +k5OWEn,DkVoD\L`q>U6fr;QY^rrE$!rr2oqrquclrqHEcrq-3ZrpB^MroO.=rnm_,rm^qnrlP/XrkJH@ +rilC%rh07[rg!JBreLK(rd4Wfrc.pQrau.=ra,S.r`K.tr_WSir_*5_r^d#Xr^HfSqa9C1Y!@P'JO"cO +\3St=r^6ZQr^HfUr^d#[r_!5e!DcMj;>sJm=T2M'?N+F5BDu]GEW1.\HiATqL]3;4Q2[9PT`1tjYPu!0 +^])1Nao9Wce,Ituhu;X7jo4QEmJcVSo`"O_p\t$gqu6QkrgWrbrVl`oqYp9hp\sd`nc&"VklKu1!9a@A +rndY.rmq(qrlb;\rkSNErj2U)rh]Udrg3VIrf6u1rdXoorc8!UrbMLDraGe5r`K/"r_remr_EGdr^m)[ +r^QlUr^?NKg-VArJO"cOJO&Qef0]@%r^?`Sr^QlWr^m)_r_EGhr_resr`K/,raPk;rbMLOrc8!brdOs$ +K)gQ'NrG4@QidOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QZNs5!_Srr2lq +r;QQlq#:$eo`"C[n,DYPkl0ZBi;VO2g&B@tbl5``_#CtF[f3H/W;`OjRf8QNO8an5K)U5uFoHC[D>n2I +A,]j7>5hV&$Kr^HfUr^m)^r_*;f!DcMj;Z9Yp=T2P(?iFU8C&VuKErL:^I/\ctM>iS8QiU0go`"F\n,D_Rl2KiEi;VR3gA]P"cMl#d_Z%7J\Gi`3WrAgnSGniROT(+9 +KDpB"GQ)[_DuOGLAH$!9>lIn*iV9QN!ERV#ICnYl;03^Ac"KbPoie +df.u"h>Z@3k5OWEmJcSRo)A:\q#:*gqYpElrVle`rrE$!rr2oqrquclrqQKdrq-3ZrpKdProX4?rnm_0 +rmq(rrlb;[rkSNDrj2U,rhKIarg<\Hreg].rdOilrcA'VrbDFDra>_1r`T5"r_i_kr_$Kr^HfUr^m)^r_3Ag!DcMj;Z9Yp=oM\*@/aa:C&W#LF8gF`If>$" +MZ/_:R/W]VU].FqZi7N7_#D@QbPoogf)FG'hu;[8k5O`Hmf)_To`"R`q#:-hqu6QkrgWrerr2lqr;QQl +q>U0go`"F\n,D\Tl0/34roX4_1r`T5$r_i_lr_EGbr^m)[r^QlUr^?NKg-Yd)Ud0JrJO"cOnj*1?g-YR%r^?`Sr^QlXr^m)]r_EGh +r_i_rr`K/)ra>_:rb2:LrcA'_rdXp#!JuX5M>iV9QN!ERV#ICnYl;03^Ac"KbPoiedf.u"h>Z@3k5OWE +mJcSRo)A:\q#:*gqYpElrVlfPs5!_SrqlZnqYphYu:/e,I_nbl5NZ^](hD +Yl:^&VZ*1dR/W9JMuJG0JGsinFT-4XCAqiE@fB[4=oMM%;Z9Pm:]=&e9)_E]7f,XF6f:<160LRb5_21O +5d!BO6/=m)6i07M7JfRR8cD?]9`@ie;>sJm=8lD&?2e=4B)ZQEDuOkXH2`?nLAm,1P5^jJT)PVdXT#I' +])KGC_u@mZci2Dmg]$(/iVr$>lMg2MnG`%Yo`"Xbq>U6irVQS\rrN0"rr)iorql]irq??arpg!Vrp9XI +roF(:rnIG'rmLeirl>#Srjr*:riclMg2MnG`%Y +o`"Xbq>U6irVQTMs5!_SrqlZnqu6Hkq>U*eo`"C[n,DYPkl0WAi;VR3f)F+scMki__>_.IZi70-WW&Ri +S,S]PNrFn7KDp8tGQ)X^D>n5JAH$!9>lIn*lJ.1AH$nSTGQ*!hKDp]+NrG=CRf8uZWW'("Zi7Z;_Z%RScMl8k +f)FM)i;Vd9kl0oIn,DkVo`"R`q>U6iqu6Qkrg3Wcs8W)srqucmrqZQgrq??^rpTjRroj@Cro*k4rn.5" +rm(Mbrl"fLrjMg0ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG'r`&kor_NMer_!/\r^ZrWr^?EH +i'RE/]g.-6JO"cOa$BVih*V!+qaCEQr^ZrYr_!/`r_EMk!Du_n<;oqt>lJ+0@fC*@D#SDQGQ*!hJGtH* +NrG7ASc5A_W;a""[f3u>`;[mXcMl>mg&Bh,iVqsU9jr;QY[s8N#prVl]nqYpU6iqu6Qkrn[V1s8N#prVl`oqu6HkpAX^`nc&"Vli-/JjSn-;hYu.+e,I\ma8X!U^](Y?Yl:^&UAg__ +Qi<*GMuJG0If=WlFT-4XCAqlF@K'U4>Q.\&;uTVm:B!rd9)_B\8,c!Q7/0.!6M*No5_21O5e9516MNqI +7/KCO7fGpW8H)6\9E%]c;#XGn&?N+C4BDu]GDuOkXH2`9lL&Qu/OT(UGSc5A_X8]@&[Jmr?_u@^U +ci2DmfDaY+iVqp;l2L&Kn,DkVo`"R`qYpBkr;QZlrg3Wcs8VuprquclrqQKdrpp'XrpKdLroO.=rn[S, +rmh"orlY5ZrkABArj)O'rhTOcrg!JErepc-rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;ar^d#Yr^QlT +og@Y(qa&"_JO"cOJO%@Cr^#7)qa:6Kr^QlWr^d#]r_sPo=8lM)@/a[8CAr)LEW17_If=ru +MuJh;Q2[ETV#ICnZMqB5^Ac+Nb5T`dec+8$h>ZF5k5OTDmf)_To)A@^q#:-er;QY[s8N#prVl`oqu6Hk +pAX^`nc%tXlg"Q:rosFCro*k5rn%.urm1Sarkn`MrjDa0ri?$mrgj%TrfI,;re:?#rd"KbrbqdNrb)4= +ra,S.r`9"sr_WShr_3;`r^d#Yr^QZNpdhu;@/ec*qpb5TBZ_#CkCZi7-, +V#I"cRf8HKNW+b5JGsopGQ)R\D#S,I@fBa6>lIh(OnG`%Yp&=^bqYpBkr;QZorfmE`s8VuprquclrqQKerq$-ZrpTjN +roa:@rndY.rmq(qrlb;\rkSNErj2U)rh]Udrg3VIrf6u1rdXoorc8!UrbMLDraGe5r`K/"r_remr_EGd +r^m)[r^QlUr^?NKg-WS?JO"cOJO%@Cf0]@%r^?`Sr^QlWr^m)_r_EGh!)ins;uThs=T2\,@fBp;C]88O +ErLFbJ,Y*"NrG4@QidOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QYXs8N#s +rVl`oqu6Hkp\sjboD\4[mHjo@rp0RFro="8rn@A%rm:Yerl+lPrj_s6riZ6rrh'1YrfR2>reUQ(rd4Wg +rc%jQrb2:?ra5Y0r`B)!r_i_lr_OnG`%Yp&=^bqYpBkr;QZorn@D(s8N#srVl`oqYp6gpAX^`nG_kTm/H2IjSn*:h#>t*e,IVk +aSs*V]`,A=Yl:X$U]-nbQ2ZpFN;eG.If=]nF8g.XD#S#F@fBa6>5hV&5hn.@fBs$Kr^HfUr^ZrYr^m)`r_NMi +!*'&"5hn.A,^-?D>nPSFoHjhK)UN(O8bCCRf9&\W;`t![f3r=_#DITc2Q)hg&Be+i;Vg:kl0oI +n,DnWo`"Uaq>U6ir;QZorf@*Yrr2lqr;QQlp\smco`"=\md:)Crp9XIroF(:rnRM*rmUkkrlG)Vrk/6= +rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6r`];&r`/qor_EGer_!/]r^d#XqaLKPog?ee_E`Z; +JO#;^`BsGhqaCEPqaUQUr^m)]r_Kjo49=h>Z(+eGdenb5TBZ^Ab\BZi7$)V>d.eR/WlIn* +=8l+s;#X5h9E%Q_8GG[L7/K?r6Ms0$5__OT5g2L46N0@I7/f[Q7fGsX8cDB^:B")h;Z9bs=oM\*@/a^9 +BDufJEW1+[IK"fsL&R,3P5^jJT`1hfX8]I)\Gj5A`W"$Zci2Gng&Bh,ir8*>kl0uKnG`"Xo`"R`q#:-h +qu6QkrfmE`s8W)trr)iorqcWirqQKbrpp'WrpB^LroX4_1r`T5$r_i_lr_EGbr^m)[r^QlUr^?NKg-Yd)`^#)?JO"cOcp7Rrg-YR% +r^?`Sr^QlXr^m)]r_EGhr_`_s!EN8#=T2S)@/aa:B`;rLF8gC_J,Y-#M>iV9QN!ERV#ICnYl;03^Ac"K +bPoiedf.u"h>Z@3k5OWEmJcSRo)A:\q#:*gqYpElrVleWs8N#srVl`oqYp9hpAX^`ncA4J!:TpSroj@C +ro3q5rn.5"rm1Sdrl+lNrji$7ri?$prh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra>_1r`T5%r_i_lr_EGc +r_!/\pdY$Hqa8Fk_E`Z;JO#;^`BsPkpdFmHr^d#[r_*5cr_WSlr`B)%r`oG1rac"@rbh^TrcS3grdk'& +rf6u@!LT5SR/WcXVZ*XqZi7K6^Ac+Nb5T`deGe/#h>ZF5k5OTDmJcVSo)A:\pAXjdqYpBkrVQTJs4@;M +rr2lqr;QTmq>U-fp&=O]nG_kTl2KlFj8Rs8gA]\&d/M8gaSs!S]Df5;YPtL"UAgV\Q2ZjDM#N),J,X]l +FT-4XCAqiE@fBa6>Q.b(;uT\o:]=)f9)_EZ8,c!T7K,^G6e4U%6@hCV5_22E5gD^h6i0:N7K,dU7fGpW +8cDB^:&[rf;>sMn=T2P(?iFO6B)ZQEDuOhWGlE3lKDp]+O8bCCRf9&\WW'+#[Jmf;_#DFSbl5ugf)FD& +hu;[8k5OWEmf)_To)A=]p\t!fqu6NmrVQSYrrN0"rr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUkn +rlkAZrkJHDrilC&rhf[drg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>% +r^"OhJO"cOJO%RIr^#@,ogA^IqaUQVr_!/`r_NMjr_`_t!EWA%>5hh,@fC!=CAr/NFT-RbJGt<&MuJn= +R/W]VVZ*[rYl;65^Ac%Lbl5rfe,J,$hYuL5kPjcGmJcVSoD\C]q#:*gqYpHjrf@*Yrr2lqr;QTmq>U-f +p&=L_nF-GIrpKdMroa:@rnm_/rmq(qrlkA_rkSNFrjDa/ri#gjrgNhOrf@&7re19#rcnEarbqdNrau.= +ra5Y/r`K.ur_i_kr_U9jr;QZlrn@D(s8N#prVl`oqYp9hp\sganc&"Vli-/Jjo43;h#?"+e,I\mbPo?W^Ab\B +Yl:^&VZ*4eRJrHMNW+_4K)U/sGlDd`DZ4DMBDu<&?N+@3BDuZFDZ4_VGQ*!hK)UT*NW,1A +Rf8rYVZ*XqYl;34^&GkIbPoiee,J&"h#?72jo4KCli-APo)A:\p\t!fqYU3irVQSYrrN0"rr2fnrql]k +rqZQerq-3[rpTjProj@Aro!e3rmq(srm(M_rk\TIrj2U-ri,mirgWnPrf6u7re(2trce?^rb_XJrac"9 +r`oG*r`/qqr_NMer_!/]qa^WTr^?lJ.1AH$nSTGQ*!hKDp]+NrG=CRf8uZWW'("Zi7Z;_Z%RScMl8kf)FM)i;Vd9kl0oIn,DkVo`"R` +q>U6iqu6Qkrf@*YrqlZnr;QQlq#:$eoE"LP!:g'Wrp0RJroO.;rnRM+rmUkmrlb;WrkABBrilC&rhf[e +rgEbMrf-o4rdt,srcnE`rbh^Mrb)4_taTDk_e +X8]@&\c0;A_>_XWci2Dmg&Be+i;Vj;kl0oIn,DnWo`"Uaq>U6fr;QZlrn@D(s8N#prVl`oqYp9hp\sga +o)A+WmJcALkPjH>hYu:/ec*tqc2PZ\_#D"GZi70-WrA[jSGnlSO8b%9L&QT$HN&'dE;j\QC&VWA@/aI2 +=T2>";uTYn:]=)f9E%Q_8GbpV7f,XO7/K@)6K^[d6(:/k60(>E6N0@F7/fXP7fGpW8H)3[9E%Zb:]=5j +;uThs=T2V*@/a[8C&VrJE;k"ZHN&EnL&Qu/O8bLFSGo2\WrB1#Zi7W:_#D:Oc2Q,iec+>&hYuL5kPjcG +mJcSRo)A:\p\t!fqYU3irVQSYrrN0"rr2fnrqucmrqcWfrq-3[rpTjProsFCro*k5rn%.urm1Sarkn`M +rjDa0ri?$mrgj%TrfI,;re:?#rd"KbrbqdNrb)4=ra,S.r`9"sr_WShr_3;`r^d#Yr^QZNpdrndY/rmh"qrltG\rkSNGrj2U-ri5sjrg`tSrf@&9re:?$rd+Qdrc%jQrb;@Ara>_2 +r`K/"r_renr_NMfr_*5_r^coVr^QcRqaC +lMg2Mn,DnWo`"Uaq>U6fr;QZlrn@D%s82cor;QQlq#:$eo`"F\nG_kTli-,Iir7j7h#>n(df.Sla8X!U +^](\@Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR +7+t$)6@hIS6@hJ:6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N* +NW,(>Rf8oXU].CpZMq<3^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QYTs8;orrr2lq +r;QTmqYp6gp&=R^nG_hSli-#Fj8Rs8gA]Y%d/M2e`W![P\Gii6Y5Y6rTDk;YOoC@>M#Mr(HiA6gE;j\Q +B`;K??iF=0=8l5!;Z9Ml:&[fb8cD9[7f,XR7/0.!6IJ,M5_21O5hnWS6MNqF7/fXS7fGpW8cDB^:B")h +;Z9Yp[788raPk?rbVRQrce?hrdb!(rf$i=rgNhYrhTOrrj)O5rkSNPrlY5ermh#%rnm_7roO.F +rpKdTrq$-^rqHEgrql]mrr)iqM?!JOrquclrqQKerq$6^nc87[nG_kTli-,Iir7j7h#>n(df.Sla8X!U +^](\@Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR +7+t#:6@hIS6@hJ]6i0:N7JK@O8,c'Y8cDB^:&[rf;>sJmQ/"/@fBp;C]85NEW14^I/\]rM>iM6 +OoCgKScPU]!2KOqrj)O3rkJHMrl>#armUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$HleGn%urr2fn +rql]krqZQerq-3\rpTjQrp'LEro3q7rn7;$rm:Ygrl4rQrk&0;ric=#rhKIbrg*PHrf6u4rdt,urc\9] +rbqdMrau.=ra5Y/r`T5#r_r\jr_EGdr_*5_r^m)[r^ZWNpdOjDmR)OmJO=uU[mT^SpdOjFr^ZrYr^m)] +r_*5ar_<8dr_rerr`T5*ra5Y6rau.DrbqdWrc\9irdt-(rf6u@rg*PUrhTOmric=/rk&0Frl4r]rm:Yp +rn7;.ro3q=rp'LLrpTjWrq69arqZQirql]nqu2WUq>^Hnrr)iorqcWgrq??`rp]pTrp9XIroF(:rnRM* +rmUkkrlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6r`];&r`/qor_EGer_!/]r^d#X +qaLKPog?eej?S8]JO"cOmQe`Xqa:6Kr^H]Rr^d#[r_!/ar_NMir`/r"r`T;/!FK45@fBs)JO=uUqa9pBpdOjFr^ZrY +r^m)]r_*5ar_<8dr_rerr`T5*ra5Y6rau.DrbqdWrc\9irdt-(rf6u@rg*PUrhKRoW;rpsYPts/]DfVF +`r=3]d/MSpg&Bn.ir8'=lMg/Ln,DnWp&=[aq>U6iqu6Qkrm^tts8N#prVl`oqu6HkpAXaaoD\7YmJcGN +kPjQAi;VO2f`'A!cMkrb_u@@K\Gii6X8]!qU&LM[Q2ZjDM>i2-J,X`mFoHC[D>n8KB)Z3;?N+4/=T2A# +<;obo;#X5h:&[ic9E%N^8G,LJ7cHjf7=dmY7ArZM7eK:N8H)3[9E%Wa:&[oe:]=5j<;oqt=T2S)?N+@3 +B)ZNDD>nPSFoH[cJ,Y-#M>iS8Pl@-NU&LqgX8]I)\Gj2@_u@aVcMl;lfDaS)i;Vg:kPjfHmJcVSoD\F^ +pAXpfqu6NmrVQSSs7u]orr2lqr;QQlq#:!do`"F\n,D_Rkl0]Cir7d5f`'D"ci2)d`W!UN\c/r7X8\sp +T`1>XPQ$UAL&QZ&IK"BgErKtUBDuH@@/aF1=oMM%;Z9Ml:B!oc9)_BV7efCK6c_UT5_21O5_22g5fH(h +6hj(E7fGsX8cDB^:B")h;Z9bs=oMY+?iaYCrac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABN +rlY5drm^r#rn[S5roX4DrpB^Srpp'\rq??drqcWkrr)`nM?!SSqu-Nlrql]krq6Bco`4[aoD\7YmJcGN +kPjQAi;VO2f`'A!cMkrb_u@@K\Gii6X8]!qU&LM[Q2ZjDM>i2-J,X`mFoHC[D>n8KB)Z3;?N+4/=T2A# +<;obo;#X5h:&[ic9E%N^8G,LJ7\3&"7=dmY7I3J<7eK:N8H)3[9E%Wa:&[oe:]=5j<;oqt=T2S)?N+@3 +B)ZNDD>nPSFoH[cJ,Y-#M>iS8Pl@-NU&LniX/c6$rj2U6rk8#Rrk&0; +ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WShr_3;`oh#-Rpda=5 +JOY2[JOZS-pdb3PqapZWr_3;cr_WSir_`Ymr`9##r`];.raGe9rb2:Hrc%jYrd"Kkrdt-*rf-o?rg<\V +rhKIlric=/rk&0Frl>#]rm:Yprn7;,ro*kU9jr;QZlre^[SrqlZnr;QTmqYp3ip@\L[rq-3[rpTjQroj@Cro*k4rn7;$rm:Yf +rl>#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WShr_3;` +oh#-Rpd^oFJOY2[JO\uqpdb3PqapZWr_3;cr_WSir_`Ymr`9##r`];.raGe9rb2:Hrc%jYrd"Kkrdt-* +rf-o?rg<\VrhKIl!O&[,YPts/]DfVFa8X9]d/MSpg&Bh,iVqsi&)IK"TmF8g.XD>n5JAc?-;?iF=0>Q._'sDk:]=,g:&@W]9E%QA8c;228:a<_8Ae!Y8c)-Z +9DD3[:&[oe:]=2i;>sPoQ.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8 +^])+LbPoiedf.r!h#?72jSnBBlMg5NnG`"XpAXgcq#:-hqtp?krepgPs8N#prVl`oqYp9hp\sganc&"V +li-/Jjo43;h#?"+e,I\mbPo?W^Ab\BYl:^&VZ*4eRJrHMNW+_4K)U/sGlDd`DZ4DMBDu<Q.t. +?iXg?B4q3Yrbh^Vrce?hrdt-*rf-oArgNhYrhf[qrilC4rk8lIt,=8l8"<;obo;#X8i:B!ub9`%K^9&N:O +8:a<_8;Bar8c)-Z9DD3[:&[oe:]=2i;>sPoQ.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([I +Sc5;]WrB.%ZEaJ9rk&0ErkeZXrm1Slrn7;+ro!e:roj@HrpKdTrpp'^rqHEerqcWkqu-NndJqMlrr2oq +rquclrqZQgrq??_rpg!Vrp0RJroa:>rndY/rmh"rrm(M_rkeZKrjMg2riQ0qrh07\rfmDDrf-o1rdk&t +rce?`rbqdPrb;@DraGe6ra,S-r`K/#r`&kqr_i_lr_NMgpeC`]i(O#@JP(JcJP*gPj%K8CpeC`_r_NMi +r_i_or`&ktr`K/'ra,S2raGerfmDPrh07driQ1*rjMg?rkeZSrm(Mj +rmh#&rndY5roa:Frp0RPrpg!Zrq??crqZQirql]nqu2NRq>^Hnqu-NlrqcWhrqHEarpp'WrpB^Lroa:> +rndY/rmh"qrltG\rkSNGrj2U-ri5sjrg`tSrf@&9re:?$rd+Qdrc%jQrb;@Ara>_2r`K/"r_renr_NMf +r_*5_r^coVr^QcRqaClMg2Mn,DnWo`"Ua +q>U6fr;QZlre(7Mrr2lqr;QQlq#U9c!;QQerq$-ZrpTjProsFFro*k5rnIG&rmLekrl4rSrkAB?riuI) +rhTOdrg`tPrfI,=re19%rdOijrcJ-XrbVRJrau._3r`];'r`9"tr_reor_WSir_E5_r_26C\OqEF +JP(\ij%K8CpeC`_r_NMir_i_or`&ktr`K/'ra,S2raGerfmDPrh07d +riQ1*!OfE:[f4#?_Z%RScMl5jec+>&hYuL5kPj`Fli-APnc&.ZpAXgcq>U6iqu6QkrmCbks8N#srVl`o +qu6Hkq#:$eo`"F\nG_hSlMg#Hir7m8hYu+*e,I\mao96X^](eC[/R9.W;`UlTDk5WPl?aCM#N),JGsrq +GQ)X^E;j\QB`;QA@fBa6?N+1.=oMJ$g;#X8i;#X8f:@_-O9S#lg9S#mK9_D-Q:B")h:]!uf +;>X8j<;onsQ.t.?iFO6AH$9AC]8;PErL:^I/\ZqK`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mX +ci2Dmf)FP*i;Va8kl0lHmJcVSoD\C]p\t!fqYpBkr;QZlrepgMs82cor;QQlq#:$eo`"F\nG_kTli-,I +ir7j7h#>n(df.Sla8X!U^](\@Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm +:]=)f9)_E]8H)-V7f,XR7+t#\6@hIS6@hJ\6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6 +A,pBGCMWoerc.p^rd=]rre^W6rfR2Krgs+ariQ1*rjMg@rkn`Urm1Smrmq)(rnm_7roj@HrpKdTrq$-] +rqHEfrqcNirr%EJrVulrrr)iorql]k!VlEiq#:$eo`"F\nG_hSlMg#Hir7m8hYu+*e,I\mao96X^](eC +[/R9.W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA@fBa6?N+1.=oMJ$g;#X8i;#X8f +:@_,`9S#lg9S#n:9_D-Q:B")h:]!uf;>X8j<;onsQ.t.?iFO6AH$9AC]8;PErL:^I/\ZqK`6f, +O8b@BR/W`WU].4kYPtm0\[_^NrkJHNrlP/crmUktrndY4ro3q@rp'LMrp]pYrq-3arqZQirql]mrr)`n +dJqMlrr2fnrquclrqZQgrq??`rpg!Vrp9XMroO.=rnm_/rn%.urm(Mbrl"fNrjr*:riZ7"rhKIbrgNhO +rf@&9reCE&rdFclrcA'YrbqdNrb)4Ara>_4ra,S.r`];(r`B)"r`/hor_iMgr_V]PJPUhmJPWFEqb[&b +qbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriZ7.rjr*D +rl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hlqu2NRpAb-kqu-NkrqcWirq??`rpp'W +rp9XLroO.=rnm_.rmh"prlkA]rkSNFrjDa/ri,mlrh'1Urf[8@reCE(rdOiirc8!Vrb;@DraPk6r`fA) +r`/qrqb[8er_3;ar_!/]r^d#Yog\^FogI"kJO=uUJOA*XnjN7Aog\pNr^d#[r_!/_r_3;cqb[8jr`/r# +r`oG0raPk=rb2@N!H2oUF8g@^If=ruLAm54P5^dHTDkYcWW'+#[Jmf;_#D@Qbl5ugec+8$hu;X7jo4QE +m/HJQo)A=]pAXmeqYpBkrVQSFs8DusrqlZnr;QNnq=t$drqQKdrq-3[rpTjQrp0RFro3q7rn@A'rmUkl +rlP/XrkJHDrjDa.ri,mlrh'1Yrg!JDreg]0rdaurrd+Qbrc.pUrbDFFral(:ra5Y2r`fA*r`T5%r`9"u +qc!Jlpeh#eThg58JPUhmnk]-Zpegodr_rerr`9#"r`T5(r`fA.ra5Y4ral(BrbDFNrc.pYrd+Qkrdb!& +repc:rg!JOrh'1bri#h!rjDa:!PcAL^])1Nao9Tbe,ItugA^"/ir8'=li-;Nn,DkVo`"R`q#:*gqYU3i +rVQTAs3CZArr2lqr;QQiq>U*eo`"F\nG_kTm/H2Ijo46Z+,ec*qpbl5]__#D"G\c/l5Xo>=!U&LV^ +RJr?JNrFt9KDpE#IK"HiFoHC[DZ4GNC&VZB@fBd7?iF@1>lIq+=oMOue +lJ%.?iFI4A,^$U)\c0;A_#DFS +bPolfec+8$h>ZC4jSn?Am/HDOnG`"Xp&=[aq>:$fr;QZirepgMs8N#prVl`oqu6HkpAXaaoD\7YmJcGN +kPjQAi;VO2f`'A!cMkrb_u@@K\Gii6X8]!qU&LM[Q2ZjDM>i2-J,X`mFoHC[D>n8KB)Z3;?N+4/=T2A# +<;obo;#X5h:&[ic9E%N^8G,LJ7_hHD7=dmY7ES'o7eK:N8H)3[9E%Wa:&[oe:]=5j<;oqt=T2S)?N+@3 +B)ZNDD#ePVEH1u#rd"Kmre19-rf@&CrgNh[rhf[qrj2U6rk8L-gpAX^`o)A.Xmf)SPkPjTBiVq[4g&BP$d/M8gaSs!S +]`,J@Z2Um)WW&UjSc5&VOoCC?MuJA.JGsurGQ)aaEW0kTC]8&IAH$';@/aO4?2e+.>5h\(=SPql<;TUi +;Lq_s;Lqa7;Z9Vi<;9Mn=T2J&>5he+?2e41@/a[8AH$^ +WW'%!Z2V<5]`Gpa!5STTrlb;frmh#$rn[S4roF(Arp9XOrp]pXrq69arqZHfrqucoq#8\@bQ%S@qu-Eh +rqcWgrq??`rpg!VrpB^KroX4?ro!e2rn.4trm1Sfrkn`Nrk8<'r`K&!r`8/]rD\>IJQ.2"_c5buqc<\tqcNi#qcs,+ra5Y4 +raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8ZC4jo4KCm/HGPnc&1[p&=^bqYpBkr;QZl +rdk+Gs8N#prVZNmqu6Hkp\smco`"C[n,D_Rkl0`Dj8S!9h#>t*dJhJkbl5NZ_#D%H[/R-qT`1M] +Q2ZsGO8aq6K`6N$IK"KjFoH@ZDZ4MPBDuNBAH$$:@/aO1?2e++=oMP#=8l7_lJ%.?iFI4@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^V#ILqZ2V-0^&GeJ_nuJl +rlkAermC_trnIG1ro="?roj@KrpTjVrq-3_rqHrnm_1rmq(srm1Sbrl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdP +rbDFFrau.?qdKJ2ra>_4ra,J-r`o"uoih;sJQ[P,JQ]lnnlk]jqcs,+qd080ra5Y4raGe:ral(ArbDFK +rbqdTrcJ-`rd=]ordk')repc:rfd>Krgj%_rhoasriuI2rk&0Frl+lXrm1Smrmq)(rndY5roa:Frp0RP +rpg!Zrq??crqQKhrql]mrr)`nL&^cErr2fnrquclrqQKerq??^rp]pTrp'LGroF(:rnRM+rmLekrlb;X +rkABDrj)O+ri5sjrg`tUrfI,_JOnlnj%9,?r_*#[r_iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoiedf.r!h#?72jSnBBlMg5NnG`"XpAXgcq#:-hqtp?k +rdk+Ds8N#prVl]qqtgBjrqcWhrqHEcrq$-ZrpTjProsFFro*k6rnRM(rmLelrlG)WrkSNFrjMg2riH*s +rhBC_rg<\Krf@&:reUQ)rdXoprce?`rc%jTrbVRKrb)4Brabn7ra5Y4ra5Y2qd'2+nltcj\QOJdJQ[b2 +nlk]jqcs,+qd080ra5Y4raGe:ral(ArbDFKrbqdTrcJ-`rd=]ordk')repc:rfd>Krgj%_rhoasriuI2 +rk&0Frl"oZa8j<\ci2Dmf)FJ(hYuL5kPj`Fli-APnc&.ZpAXgcq#:-hqu6NmrVQT;s3(H;rr2ipqu6Hk +q>U0gpAX^`o)A+Wmf)POl2K`BiVq^5f`'G#dJhAhaSs*V^Ab_C[JmE0X8]!qT`1J\RJrBKO8b+;LAli) +J,XipH2`!dEW0qVDZ4GNCAqrEAc?6>@f'U5@/F=(?LhD#>_-.2>_-.t>kMCn?N+=/@/aU3@f'^8Ac?EC +CAr#JDZ4SREW1.\GlE*iJ,Y*"LAm/2O8b=ARJr`UT`1hfX8]@&[Jm`9^Ac%La8X<^dJh\qf`'b,i;Vd9 +l2L#Jmf)\So)A:\pAXgcq>U6iqu6Ngre:CAs8N#srVl`oqYp5hY'5hk-?iFL5B)ZKCD#SAPF8g@` +IK=nHrdk'%rf-o>rfmDPrh07driQ1*rjMg?rkeZSrm(Mjrmh#&rndY5roa:Frp0RPrpg!Zrq??crqZQi +rql]nqu20Hp]($frqlfoqZ-NmqYp_-.8 +>kMCn?N+=/@/aU3@f'^8Ac?ECCAr#JDZ4SREW1.\GlE*iJ,Y*"LAm/2O8b=ARJr`UT`1hfX8]@&[Jm`9 +^Ac%L`rXE.!6kGirmh##rndY4ro="Brp0ROrpTjWrq-3`rqHEfrqcWkrquQjbQ#Q]rr2oqrqucmrqcWh +rqHEarposUrpB^MroO.>rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaur +rd4WercJ-[rc%jSrb_XLrb2:Dqdob;qd]V7nmV&rJRF%:JRGimojR`,raYh9ral(Arb;@Hrb_XQrc%jW +rcA']rd4Wmrdb!#reLK3rf@&Brg*PSrh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OO +rq$-]rqHEfrqcWkrqucoqu23InGiLerr)iorql]krqQKerq-3\rp]pSrp'LHro3q8rndY*rmUkmrlP/X +rkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$r`/qsr_iVjqb[8f +r_WSiqbH]VdS,3cJP:Vgge@B8ohPK_r_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"ArbMLPrc8!^rd4]r +!J#_"K`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lHmJcVSoD\C]p\t!fqYpBk +r;QZlrdk+>s8N#sr;lio!;uinrqcWhrqHEarposUrpB^MroO.>rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ +ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jSrb_XLrb2:Dqdob;qd]V7nmSY.JRF%:JRJ7\ +ojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!#reLK3rf@&Brg*PSrh07cri?%%rj)O6rk8#]!RT0nd/MMnfDaP(hu;X7jo4QEm/-;OoD\C]p\t!fqYpBkr;QZlrlG,Ys8N#prVl`oqYU*fp\smc +o`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,Xor +HiAnANC]8)GC&Vf4BDuNAAV"EDAV"F1Ac$*1BDZBAC&;ZEC]8/LD>S5ME;jkV +F8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTD +mJcSRnG`(Zp&=^bq>:$cr;QZlrdt1>s8N#prVl`oqYpQ.h*=oMM%sD0:Ou;m:OuX8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&rf$i2re(3"rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2rar]PJRsCDLLp?p +nn7i5rb;7ErbMLLrb_OMrc%jVrcA']rd"KirdOirre(3)rf$i:rfI,GrgWnZrhBCiri?%&rjDa9rkJHM +rl4r^rm1\odK%_pg&Be+i;Vd9k5OTDmJcSRnG`(Zp&=^bq>:$cr;QZlrlG,Ys82fprVl`lqu6Hkq#:!d +o`"F\nG_kTl2KoGk5O?=hu;F1f)F.tci2)d`rnABC]8)CBn9uLBn:!6C&;ZS5MDuO_TEW1"XF8g:\ +GQ)meHN&?lJ,Y#uLAm#.N;en;P5^aGS,T#YU&M"iX8]=%[/RW8^&GnJ`r=-[ci2Dmf)FJ(hYuL5k5OQC +l2L,MnG`"Xo`"R`q"spequ6NmrV6ADs7$'crr2lqr;QQiq>U*eo`"F\nG_kTm/H2Ijo46Z+,ec*qp +bl5]__#D"G\c/l5Xo>=!U&LV^RJr?JNrFt9KDpE#IK"HiFoHC[DZ4GNC&VZB@fBd7?iF@1>lIq+=oMOu +elJ%.?iFI4A,^$n(e,I\mb5TE[_Z%7J\Gil7YPtU%W;`Li +T)P5YQ2[!HO8b+;M>i8/Jc:/uIK"QlGlDpdFT-@\ErL(XE;jeTDYn;MD";B@C9qW*Bn9uOC&;ZS5MDuO_TEW1"XF8g:\GQ)meHN&?lJ,Y#uLAm#.N;en;P5^aGS,T#YU&M"iX8]=%[/RW8^&GnJ`r=-[ +ci2Aof%'iPrnRM0ro*k=roa:FrpKdTrpp'\rq??dqtg'r`K&!r`8/] +gJi`'JQ.2"j](ABqc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reCK7!KW<@P5^aG +Sc5>^V#ILqZ2V-0^&GhH_u@mZcMl5jf`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQSFs60L^rW2ur +rVc`nrql]krqQKdrq69^rpp'Wrp9XLroj@Aro*k6rn.5#rmC_jrlY5[rkSNHrjr*7ric='rh]Uhrh'1Z +rg3VKrfI,=repc0re()urdOiord"Kfrc\9_rc@sWrc.^PrbqdTqer]VJSp$VJStI)qeuIQrbqRNrc.gU +rcA'\rc\9brd"KjrdFZore(3(repc9rfI,Drg3VRrh'1arh]UrrilC-rjr*BrkSNQrlP/brmC_q!SH$) +f`'e-iVqm:kl0iGm/HJQnc&.Zp&=^bq#:-hqu6NmrVQT2s2+g8rqQHkr;QTmqYp9hp\sgao)A.Xn,D\Q +li-)HjSn*:hYu:/f`':tci2/f`W!aR^](eC[f3Q2Y5YI#VZ*7fT)P8ZQN!-JOoCF@N;e_6LAll*KDpE# +J,XorIK"WnHiA?jH2DjcGQ)d_Fn'R)FFeObFL6/hFoHR`GPcXaH2`-hHiAElIK"]pJ,XutKDpT(LAm)0 +N;en;OoCUEQN!ERT)PD^VZ*RoY5Y^*[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4jSn?Ali-;Nn,DhUoD\C] +p\t!fqYpBkr;6Hirdk+Is6]jcrqlZnr;QTmqYp9hp\smcoD\:Zn,DYPl2KlFiVqa6h#>n(df.SlaSs-W +_#CtF[f3Q2XT#-sUAg__R/WP21S=b0_,=b0`;=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtYGQ*!hIf=otM#N>3NrY@E +PEZ!5rgj%_rhoasriuI2rk&0Frl+lXrm1Smrmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]mrr)`n +JcFs6rr)rsrVHKlr;QTmqYp9hp\sgao)A.Xn,D\Qli-)HjSn*:hYu:/f`':tci2/f`W!aR^](eC[f3Q2 +Y5YI#VZ*7fT)P8ZQN!-JOoCF@N;e_6LAll*KDpE#J,XorIK"WnHiA?jH2DjcGQ)d_Fffb:FFeObFSKtW +FoHR`GPcXaH2`-hHiAElIK"]pJ,XutKDpT(LAm)0N;en;OoCUEQN!ERT)PD^VZ*RoY5Y^*[Jm`9^])+L +`W"*\cMl5jf`'S*hVJ7hro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-Ek_Z.LQq#:0hrquclrqZQg +rq69_rpp'XrpKdQrosFFroF(:rn[S-rm^qprm1Scrl4rSrkABCrjVm4ric=&rhf[irh'1\rgNhRrf[8B +rf6u:reg]2reCE*rdt#uqg\TnqgA9fl[",.JU2lnZ$QCrpjE'hqg\Tqrdk'#re19*reUQ2rf$i:rfI,B +rg<\Rrgj%\rhKIiriH+&rj)O4rjr*CrkeZSrlP/crmLeqrn@A-ro!e:roX4ErpB^Qrp]pXrq-3_rqQKg +rqcNirr)WkJcGZJmJlt\rqucmrqcWirqQKdrq-3\rpTjSrp0RJro=":rndY,rmh"qrlkA_rkn`Lrjr*: +rilC&rhf[frg`tUrf[8Arf$i2re(3"rd=]jrc\9\rc%jSrbMLJrb;7@rac";qdKJ3qd9#&nm1!TJR!b2 +JR%;Aoj.,pra5P1raG\5qdf\;rb;@HrbMLNrbqdUrc\9crd=]pre(3)rf$i;rfR8L!L]ATSGo2\VZ*Xq +Yl;'0\c0>B_u@^Ubl6#hec+5#hYuI4j8SOn,DnWo`"R`p\t!fqYpBkr:p8Bs60L\rr)inrVl`o +qYpN;e_6M#N/.K`6T#JbsrrIJ\EhH`)1@H@^BnHM)U`Hh`!fIJ\NnJGt-!K)UH&LAm#.MZ/S6 +NrG.>P5^jJRf8lWTDkVbVZ*[rYPtj,\,Nu<^Ac"K`r=*Zci2AleGe2$h#ZHl!9!k;roX4ErpB^Qrp]pX +rq-3_rqQKgrqcNirr)Wk_Z.:Krr2fnrquclqt^6crq??`rpg!WrpTjOroj@Dro3q7rn[S*rmh"qrm1Sd +rl>#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9reg]2qh>$&rdt#uomlI[JU`6#JUb.Y +npp^jqh"]ure:?-re^W4rf6u=rfI,Crg*PNrgj%\rh07eri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r! +rn[S3ro3q>roj@HrpTjUrpg![rq69brqZHfqu$Hlqu20Hq>]XXrr2oqrqucmrqcWhrqHEarposUrpB^M +roO.>rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jS +rb_XLrb2:Dqdob;qd]V7nmTjPJRF%:JRI&:ojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!# +reLK3rf@&Brg!PT!M,e\T`1_cX8]=%ZMqE6^&GhHa8X9]d/MMnfDaP(hu;X7jo4QEm/-;OoD\C]p\t!f +qYpBkr;QZlrdk+-rrE)urqlZnr;QQiq>U-fpAX^`nc&%Wn,DVOkl0`Dir7j7h>Z%*ec*tqci2)da8WpS +^](nF[f3W4YPtX&W;`XmT`1P^Sc5#UQ2[!HOT(=?NrFt9MZ/G/L&Qc)K):,lJ?"*MIt<*#J,=`dJGt,s +K):6#L&Qo-M>iG4NrG+=OT(ICQN!9NSc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z=5 +io0stroX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)`n^]1kErr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LF +ro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u; +rf$i7qhkB0reUH,nV2ULJVJ`1["eR8reUQ1qhkB2rf$i9rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[o +riZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rndY4roF(@rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu20H +oDe"Rrr2fnrquclqt^6crq??`rp]pTrpB^KroX4?ro!e2rn7;!rm1Sgrl4rSrkJHCrjDa0ri?$qrhBCa +rgNhQrfI,>rf$i2re(3"rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2rasnrJRsCDJS!qSqe#D3 +qe5tCqeH+GrbVRNqelCPrc.pYrcS3crd4WnrdXp"reCE2rf6u>rg3VRrgs1b!MZ=fVuEarYl;'0\c0AC +_u@[Tc2Q)hdf.r!h#?72j8S3?kl0uKn,DhUo`"O_p\t!cqYU3irVQSFs5NW+n9Mu/D2M>i>.LTQ;^L4P)1LA6N&L]3,/M>N20MuJ\7NW+t;OT(=?OoCOCQ2[-L +RJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nugA]t.i;Vd#SrkJHFrj_s8riuI+ri?$trhf[jrh9=`rg`tWrgEbQrg*PJrfd>ErfR2Arf?i7pl4p)JW,/= +JW.1!pl5'/rf@&?rfR2Crfd>Grg*PMrgEbTrgj%\rh9=erhf[oriH+&riuI1rj_s?rkABJrl>#[rlkAg +rm^qurn@A-ro!e:roX4Drp9XOrp]pXrq-3_rqHEerqZQirql]mrr)`nJcG?AkPtGYrr)ioqtpBhrqQKd +rq-3\rp]pTrosFGroX4=rnm_1rmq(trm1Sdrl4rSrk8<@rj;[.ri?$srh9=_rgWnPrfd>Brf$i5reCE' +rdXoqrd+Qgrce?`rcA'Zrc.pVrbqdRqec=Knn\5>eS0SKJSB[LibA:)okXG@rb_OMrbqdTrc.pXrcA'\ +rce?erd+QlrdXoureCE.rf$i;rf[8GrgWnYrh0=j!N;srX8]=%[/RW8^&GnJ`r=-[ci2Dmf)FJ(hYuL5 +k5OQCl2L,MnG`"Xo`"R`q"spequ6NmrV6ACs5U0gp\sjbo`"F\nG_kTm/H5J +k5OH@i;VR3gA]\&e,I_nbl5``a8WpS^](nF\Gio8Z2Us+X8]*tVZ*CjU&L\`SGo#WRJrTQQN!-JPQ$aE +OoCIAO8+b1NNe@mN.Hq=N;ee2NVJP5O8b7?OoCOCPQ$gGQN!6MRJr]TSc58\U&LkeVZ*RoXT#F&Z2V01 +\Gj/?^AbtJa8X3[bl5ugeGe%ugA]q-i;Vg:joO]0!9jFKrpB^Srpp'\rq69brqQKgrqcWkrqucoqu4/+ +\c;[.q#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4rn7;&rm^qorltGcrl+lSrkJHHrjr*< +rj2U/ric=%ri5srrhKIerh'1_rgs+ZrgNhSrg<\Org*PKplkK9oT90:Ob&UHOF`M5OS+b2P5(7?Q2[*K +Qi +kl0lHn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirdk+@s5a4ZrqlZnr;QTmqYp9hpAXaaoD\=[n,D\QlMg#H +j8S$:hu;:-ec*tqcMkuc`r0rU]-nbS,ScRPl?dDNW+k8L&Q`%JGt#sI/\EjGlDmc +FT-@YErL(RE;jeTE;OS%DLl\VDLl]\DYnAOE;jeNE;jkSErL.ZFT-I_GQ)meI/\QkJGt3#L&R#0NrG.> +Pl@$KS,T&ZUAgthXT>Q+rilC-rjr*BrkSNQrlP/brmC_qrn.5-ro*k:roj@Grp9XQrpg!Zrq69brqQKh +rql]mrr)`nJcFI(rVulrq#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4rn7;&rm^qorltGc +rl+lSrkJHHrjr*roaCJl2^,Kn,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirji'8s8N#prVl`lqu6Hkp\smcp&=R^ +o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:iU]."b +T_P/YT(nlHSG\n.RtdD`S'7AdSGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@O +aSs?]cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\XgdqtpMkPjQAi;VU4g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniRPl?gE +O8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpdG5HF.FFeObFFePbFT-F^G5c^_GlE!fHN&9jI/\Qn +If=irJGt3#L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'%#YlV,7rjDa9rkJHLrl+l\rm(Mjrn.5(rndY4 +roF(Arp0RNrpTjUrq$-]rqHEfrqcWkrquZlqu20HgAgpIrr2fnrquZjrqcWgrq??arq$-[qsXONrp'LF +roF$X8]*t +W;ELlVYd4hV"g_aU@b.1Tn/ngTt6rpUAL_bV#."fVYd:jW;`dqX8]4"Xo>O'Z2V'.[JmZ7\Gj/?^AbqI +`;[dUaSsE_cMl2iec+2"g&Be+hYuL5jSn<@kl0rJmJcVSnc&.Zo`"R`p\sseqYpBhr;QZirdk+=s5a4T +rqlZnr;QQlq>U0gp&=U_o)A.Xmf)VQl2KlFjSn*:h>Z.-eGdkpci2&c`rU0g +p\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3 +ZMUm*YPt^(Xo>EsX8]-oWV!-?W.CmuW4Jr&WV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N +`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQSFs6BX@ +s8N#prVl`oqYU*fp\smco`"C[nG_nUlMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70-XT#0t +V>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=Q;It<*#It<+&J+A-hJbt&rK`6])M#N81MuJb9 +O8b7?PQ$mIR/WZUTDkM_V>dFmXT#F&Zi7B5]E,[XrkABJrl>#]rm1Skrm^r!rn[S3ro3q>roj@HrpTjU +rpg![rq69brqZHfqu$Hlqu20HfDkLCrr2fnrqucmrqcWirqQKerq69_rq$-Zrp]pUrp0RJroa:@ro3q7 +rndY/rn.5!rmLelrm(MdrlP/Yrkn`NrkJHFrk&0>rjMg6rj2U0qlp('riZ7&riGmqri5amYc*,OJZ+-u +ri#Ukql9OoriH+$riZ7(qlp()rj2U3rjVm:rk&0CrkJHJrkn`SrlP/_rm(MhrmC_orn.5(rndY3ro*k: +roa:Frp0RPrpTsYnGr+YoD\C]p&=^bq#:*gqYpBkr;QZlrilF,s8N#jrVl`oqYU*cp\smco`"FYn,D\Q +li-,Ik5OH@iVqd7hYu7.f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\Giu:[emK3[/73,ZLY:! +Y^s$0Y^s$rYk>9oZMq3-[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3 +iVqp;k5OTDli-;Kn,DnWo_\@]p\t!cqYU3frVQSFs6BX=s8N#prVl`oqu6Hkq#:$epAX^`o)%nTm/H;L +k5OE?i;VU4g]#k)df.VmcMkoa`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[RJrQPQ2ZsGOoCF@OT(:> +NW+n9Mu/D2M>i>.LX1^+L4P)1L=V+YL]3,/M>N20MuJ\7NW+t;OT(=?OoCOCQ2[-LRJrcVTDkM_U]..i +WW'("Yl:s-\Gj)=^&YtM_86,irlG)arm:Ymrn.5(rndY4roF(@rp'LLqsXOTrq-3`rqHEerqcWkrquco +qu20HdJrk=rr2Thrquclqt^-`rq??`rposTrp9XMroj@DroF(;ro!e4rn@A(rmq(srm:YjrltGcrlP/Y +rl"fQrkSEGrk/6Brjr*=rjVm8qmHF1qm61*o!,a0JZs^0LTpHVos4S'qm?@1rjMg8rj_s=rk&0BrkJ?G +rkeZPrl+lYrlb;crm1SkrmLesrn.5(rndY3ro*k;roX4Drp0RNqsXOT!VH!ao_\@]p\t!cqYU3frVQSu +s02OurqlZnr;6BjqYp9hp\smcp&=U_o)A.Xmf)VQlMg#HkPjQAir7j7hYu:/g&BV&ec+%sd/M>ic2Plb +ao9B\`W!gT_u@IN^\bbE^&G\>])0&8\F-g,\$ppsK=6?>`jYHIosk"3pq$I;rk83CrkJHJrkn`Rrl+lX +rlP/^rltGgrm:Ynrmh#"rn7;*rndY3ro3q-/dYra9JW,/=gl2#fpl>?7rfI,A +rf[8ErfmDJrg3VPrgWnXrh'1`rhTOjri,muric=+rjDa8rk/6ErkSTT!QW7[ao9N`d/MPof)FD&h>Z@3 +jSn<@kl0rJmJcVSo)A:\p&=^bq#:*gqYpBkr;QZlrdk*ss7H?drqlZnr;6BjqYp9hp\smcp&=U_o)A.X +mf)VQlMg#HkPjQAir7j7hYu:/g&BV&ec+%sd/M>ic2Plbao9B\`W!gT_u@IN^\bbE^&G\>])0&8\Ep]> +[Xkl<[YhNa\+R91\bNc8]`,VA^AbnH_#D7N`;[aTaSs<\b5TZbci2;je,InsfDaJ&g]$(/hu;X7jSn?A +l2KuImJcPQnG`"XoE"XX!;6?brqHEeqtg>frltGbrlG)Zrl+lTrkn`Prk\BFrkJHJrkJHHlb*>4 +]n*hK]Rd`8]^3?/^AbqI^\GVD_>_=N_u@UR`W!pWao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3i;Vd9jo4EA +l2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6frdk+4s4dSQrqQHkr;QTmqYp>frltGbrlG)Zrl+lTrkn`Prk\BFrkJHJrkJHHl+OjEJ\6QHMS/;hqnE'FrkJ6Drk\TNrkn`Rrl+lW +rlP/^rltGfqp>>jrmUktrn.5)rndY3ro!e9roO.ArosFJrpKdSrp]pWrq-3_!VZ3epAXgcq#:*gqYpBk +r:p6friQ3us8N#jrVl`iqYp9hp\smco`"FYnG_nUmf)POlMg#Hjo4<;i;VU4h>Z1.gA]b(ec+(tdf.Vj +ci25hc2PrdbPoZ`anWpU`r!a@`95'i_jePp_rS_\`;[aQ`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5# +g&Bb*h>Z:.i;Vd9jo4KCl2L#GmecMQoD\C]pAXgcq"X^_r;6Hirdk+.s4./KrqlZnr;6BjqYp6gpAXaa +oD\=Xn,D\QlMfrFj87d6h>Z.-ec+%sci25hbPoT^_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I.g +UALVYTDkGWSa;m-Rt7&[Rt7'sS*?I?Sc55XTD5)YU&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA^])(K +_u@aVb5TZdcN2Aqr%J1rn[S.rn@A(rmh"trmLemqp58erltGdrlb;`rlOrU +rl4iSdDXYSJ]!&VW5Hp!rl+cSprEBUrlY5`rlkAdrm(Mhqp>>jrmUksrn.5'rnIG.rndP1ro=">roj@G +rp0ILqsaUVrq-3`rq?Hgp]1*aqYU3frVQSls/5nlrqlZnr;6BjqYpF$X8]*tW;ELlVYd4hV"g_aU=,`dTn/ngU"l@=UAL_b +V#."fVYd:jW;`dqX8]4"Xo>O'Z2V'.[JmZ7\Gj/?^AbqI`;[dUaSsE_cMl/jeH+4Nrn%/&rnRM0ro*k; +roX4Drp9XOrp]pWrq$-]rq??crqQKhrqlTjrr)WkJcF$qli6bZqu-NlqtpBhrqZQgrqHEbrq-3]rpg!W +rpTjRrp9XLroj@DroO.=ro*b3rnRM-rn7;'rn%/"rm^qrrmC_lqp58erlt5^qoe?Ki5s]oJ]ND`V9%]= +l,s"Kprr`^rm(Derm:YlrmUkrrmh#"rn.5'rnIG.qqqD3ro3q=roa:Erp'LKrpB^Rrp]pWrq$-]rq69b +rqHNiq#L6fqYpBhr;QZirhodis8N#mrVl`lqu6Hkq>U0gp\smcp&=R^o)A1YnG_nUmf)MNl2KoGjo4?? +j87g7hu;L3h#?(-g&BY'f)F5!eGI_odf.Yed-8mTc@O8lc@O9YcKrmJd/MGldehMmeGe"tf)F;#g&Bb* +h#?10hu;R5iVqm:jSn9?kl0iGlMg5Nn,DhUnc&+YoD\F^pAXgcq#:*gqYpBhr:p6frdk++s3grHrqlZn +r;QTmqYp>[f3]6Zi79-Yl:j*Y5YR&XSAjqWq`RAW.CmuW.Co&W;*@hWr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No: +]DfMC^])%J_u@XSao9K_cMl/hdJhSpfE'XWrn@A.rnm_6ro="@rosFJrpTjUrpg!Zrq-3_rqHEerqZQi +rql]mrr)`nJcEgkjo>>Zq#13iqtpBhrqZQgrqHEcrq69^rpp'Yrp]pUrpKdNrosFGroO.?ro9oZMq3-[/RK4[f3c8\Gj)=]DfJB +^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'S)h>uKirnm_6roF(@roj@IrpBUOrpp'\qtC$`rqZHfqu$?i +qu20HaT(9"rr2ThrquZjrqcWirqQKerq??arq-*XqsXOOrp9XMrp'LHroX4AroEt8rnm_5rnm_3rnRD* +pt>Z!qq(;ek1%T'J^]2!RFC*qqh>1rnm_5ro*k;roO.Aroj@Grp0RMrpBUOrp]pW +rq-3_rq??crqQKgqt^?jqZ-Njr;6Hirgs.]s7QBjrVQNiqu6Hhq>U-fpAXa[oD\7Yn,DbSmJcJOlM0T? +jo4??ir7p6i;;F/h>Z4)g]#pgg%3mJfT4[9f[\X.g&'Lug\]e*h>?+,i;;O5jSn6>jnS'=lMg,KmJcPQ +n,DhOoD\F^pAXgcq>:$fqtU*grUp/@s4IA"s7lTjrVl`lqu6Hkq#:$epAXaao`"F\nG_kTmJcDMkl0cE +jSn0"e,I_ncMl)fb5TN^aSs0X`;[[R_#D+G^AbhF]_K)8\bio'\)FcH[Xkl<[ck0j +\+R91\bNc8]`,VA^AbnH_#D7N`;[aTaSs<\b5TZbci2;je,InsfDaJ&g]$%0hZ;Wlro3quWbLhBuJ_6CCg=cAWptP]$rn[J/qr%A2qrIb>jrmUktrn.5)rndY3rnme:!TW5>jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*g +qYpBkr:p6frdk*gs4mYOrq66hr:p-fq"sg_p&=U_o)%tVnG_nUmf)SPli-2KkkjQ?jo4?9iq;7&htu91 +h1=C5h1=DZh=]Y%ht#_#iqqg9jo4H?kl0lHli-8Mmf)\SnG_tTo)&(Yp&=^_q"X^_quQcprVcEgS,\cR +q#:'erquZjrqcNfrqQBbqt9s\rpp'YrpTjUrpTjSrpB^Oqs47Hros4AroX4Ap#Po.p#>`)J`21=J`4E' +o&BH)p#Q,6roX">rosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqHp&4mf +q"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"trmLemqp58erltGdrlb;`rlOrU +rl4iSdDYjuJ]!&VL;V>jrmUksrn.5'rnIG.rndP1ro=">!9aII +kl0iGlhg,InG`%Yo`"R`p\ss_qYU3frVQSFs1eTes7lTgrVl`lqu6Hhq>U0dp\XX_o`"F\nc&"VnG_nU +mf)VQm/-,JlMg&Ckl0`Djn7^0j7VEl2KuFli-8MmJH>NnG_nUnc&+V +o`"O_p\Xabq>:$fqtpU0gp\sjbo`"I]nc&%Wn,D_Rm/H;Lkl0`Djo49=iVVO3h#?(- +g&BY'fDa>"eGdqrdJhMici25hc1oN[bO!C0ao'52aFVEbaQ(D,b5TTZbl5ldcMPred/MGle,Ikrec+2" +f`'S'g]$%+hu;U6ir8'=kPjZFl2g28rp0RNrpTjUrpg!Zrq-3_rqHEerqZHfrqlTjrr)WkJcELbg&LO? +q#($drqcNfrqQKerq?6^rq-3]rpp'YrpTjUrpTjSqsFCLqs47Hqs!e;qrdP4ZfQc"J`VRHm,n<1o'$); +qs+1Hqs==LqsOIQrpTjVrpp'[rq-*\rq??cqtU0dqtgKn,)VLnc&+YoDA1Zp&=[ap\Xabq>:$fqtpU0ap\sm`p&=U\ +oD\=Xnb_hBn*'1jmXaeWm]5dHn+H2Lnb_nVoD\C]o`"O\pA=U`q#:*aqYpBhr:U$crdk*_s1n[6rq66h +r;6BjqYpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$g&BY$fC.8PeEt_9 +dt,u!e+_>ReF1refDF4qg&Bb'h##t-i;VX5i;V^7jSn9?k5OTDl2L#Jm/HDNmfDnGrp]pWrq-3_rq??c +rqQKgqtguWmF[!BJ_5P+pXn3QqqCi"qqV2,qqq;/qr7M6 +roNq=rp'LKrpB^QrpTjU!;$$Xrq69arqHEfqtgHo()\Lqt0RSrq?6`rqQBdp%n[bq#(-io)AIbMuSA.rVucoo)8Rcp&"X_ +qt^6dp%S@Wqt9FMn+62BJb"B_Jb$DCn+6#?rq5sXqtL!_rqZ6`qtp9gp&4R_JcE=]])V[,p&4mfq"k!b +qtL!\rq-3\qsj[TrpTjSrp9XMrp'LHqrdkrosFIqs47JrpBUNrp]pUrpg!Yqt0m\ +!;?Ngp\Xabq>:$fqtp9s=pUU!Kp4;pmp=f96q#:*XqYpBbr:U$` +roa<>s+14?s6TaarUp*Wqu6H;q>L)>pjr3kpqumSq>:$]qtp9`r;QZ]rdk*Ms0r$srqQEgqu6Hhq>U0g +p\sm`p&=U_oD\=[nc&"VnG_nUmecDNm/-,JlMKi=kkjQ6k1/REjalNEjl5Cgk5OQ7kl0iDlMg,Hm/HDL +mf)_Tn,DkVo)A7[o_\=\pAXddq#'pdq>:$fqtU*Xrdk*Os0_mnrr2lhr9sO^qTeoIpjr3kpkSXlq>:$W +qt9mdrTsOHs,6o.s5O(UrosCVr:9a9qLSKoqLSL2qXsa\r;QZ`rUp/@s.B=os7lTgrVl`lqu6Hhq>U0d +p\smcp&"C\oD\=Unc&%Nn,DbPmJH8LlhfuKn,)VLnc&+YoDA1Z +p&=[ap\X^cq#U6gAq#'LWp&<_GMuSA.d/W\9 +dJ`V5Jc()sJc)nQfDYLDp&9OBNW5jTrr2KerquZjq"k!crqQ9_rq?6^rq-*ZrposVqs`t@`pSEGJaS*W +c0k/kp$htNqssaXqt0m\qtBp]rqQKgq"b!f!W2ckr:U$crdk*=s-3QSrmC\Hr.4csr.4e@r7Co6rlP1u +s+13ss2G!*rIOourIOpVrQG35rdk*/s/#bgrqlZhr;6BgqY9mcq"sgbp@\+Xo_%hKo)%ssn:C([n:C)R +nG_tKo)&%Uo_%nVpA=U`q"sm[qYp?lr;$9irUTr=s-s%Qs2Fu;rIOourIOqErP/?Rs,6o.s/c7Ordk'" +rdk':rosH6s+13Bs82fdrVl`fqtp6eq>U0^p\X[]p$_PAo@!2\nq$@_o%`g)oC)>Np%A%Up\Xabq=XU] +qtp9krV$3_rdk*:s+14>s-!A4rdk'"rn[RMs,6o.s+13$s+13$s+13$s+136s7lTarVQNiqsXCYq>9s= +pY5Cmp4;pgp>u#%p\"=\q="1Zqt9m[r;cimrdk*+s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+136 +s6TaarUp*Wqu6H;q:k[qpjr3kpuV:uq>:$Wqt9mdrUg*brdk*+s+13$s+13$s+13$s,6o.s+13$s+13$ +s+13$s+13's82f[rV6<]qm?3NqLSKoqRcUsqtU*UrUp0gs+13$s+13$s+13$s+13$s,6o.s+13$s+13$ +s+13$s+13$s763\rmC\jr.4csr.4dsr7Co6rp0T8s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$ +s+14@s2Fu]rIOourIOq#rP/?ts+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s3CYOrdk'" +rdk'\rl>%is+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o. +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13. +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o. +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13. +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13.s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s,6o.s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13.s+13$s+13$s+13$s+13$s+13ns0quYrdk'"rk\TMs+13$s+14;s-9s=pY5Cmp4;pgp>u#%p\"=\q="1Zqt9m[r;cimrdk*+s0_n%rpp$b +r;6B[qYU*cpt,8Np4;pgp4r@qp\"=\q="1Zqt9m[rV6BTs,6o.s+13$s+13$s+13$s+13Bs82fdrVl`f +qtp6eq>U0^p\X[]p$_PAo@!2\nq$@_o%`g)oC)>Np%A%Up\Xabq=XU]qtp9krV$3_rdk*:s2"a4rpp$e +r:TsaqYU*fq"=CYpA=OOo^DCUnq$@_nq$B2o'c2=o`"OVpA=U]q#:*^qYU0er:U$]rq?AMs+13$s+13$ +s+13$s+13$s.]PmrpTgbr:p0gqYp<`q"=@[p&"CYoC_\=n^?oXn:C([nD*O"nac8MoD%tWp%A%Oq#:*g +qY9pfr;?K`rVleIs-Wi)s8N#drVl`iqu6Hkq=XOUpAXa^o_\7Qo',\Kn:C([n:C*.nEf]9o)A7Uo`"OV +p@\4[q>U6cqtp<^rVlfis,6o.s+13$s+13$s+13$s+13Hs8N#grVl`lqtU$eq>U0ap\sm`p&=U\oD\=X +nb_hBn&FdHmXaeWm`k1jn+H2Lnb_nVoDA1Zp&"I[p\sseq=sddqZ6Tkqu$-cqu20HS,^P/rr2KerquZj +q"k!crqQ9_rq?6^rq-*ZrposVqs`t@V!`g%JaS*Wn*]c8p$htNqssaXqt0m\qtBp]rqQKgq"k!equ$-c +qu6EkMuSA.JcC<$JcC<$JcC<$JcDnQq#:'erquZjrqcNfrqQBbrq??aqt0mZrpojSrp]ULrpK[Nqs==J +qs*b:dcc8GJ`q[Kh!"Fqq!.kEq!A"IqsO@MqsaCNrpp'[qt0m\rq??cqtL0e!VuQgqYpBhr:p6crdk*F +s3Uf@rqQHkr;6BjqYU*fq"sgbpAXa^o`"I]o(_bSnFc8LmecDKm/H>JlLO2Dk^hrKk^hsskk438lMg,E +m/HDLmecJMnG)PQo)A7Xo`"O_pAXg`q#:*dqYpBhr:p6drW)qVs+13$s+13$s+13$s+13$s/uCmrVl`l +qu6Hhq>U0apAX^`oDA+Xnc&"VnG_nUmf)VQm.K]Al20]8kP42fjalNEjalOKjnS!2kOn':$fqtpU0apAX^`oDA+Xnc&"VnG_nU +mf)VQm.K]Al20]8kP42DjalNEjalOmjnS!2kOn'U0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,J +lMg&Ckl0`Djn7^0j7VE^iITs=iITtIiUZ"'j7VL4jo4E;kl0iGlMKoHm/HDLmf)_Tn,DkVo)&(Yo`4^e +p\4R[rqZHfrqlTjq#1!eJcDkPg&LjHq#13iqtpBhqt^6dqtL!\rq-3\rpg!Vrp]pUrpKdQrp9OJrp'LI +puq_>roNh6puD&,Zf-JoJ`2:@o&BH)p#Q,6roX">rosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqHCJcC<$JcC<$JcC<$JcEOcrr2ThrquZjrqcWirqQKerq??a +rq-*XqsXOOrp9XMrp'LHroX4AroEt8rnm_5rnm_3rnRD*pt>Z!qq(;ek1&eIJ^]2!J^aABk1&kMrn%&" +pt>Z$qqV)*ro!e5ro!e7roF(?roX4DrosFJrp9XOrU0dUn,DhUnc&1[p&=[ap\sseq>:$fqtpU0gp\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?:!hqtgBjqu$?iqu32eJcC<$JcC<$JcC<$JcC<$_uK`8q#13iqtpBhrqZQgrqHEcrq69^ +rpp'Yrp]pUrpKdNrosFGroO.?roPc@O8rcKrmJd/MGldehMmeGe"tf)F;#g&Bb*h#?10 +hu;R5iVqm:jSn9?kl0iGlMg5Nn,DhUnc&+YoD\F^pAXgcq#:'iqYC3grqlTjq#1*hV#Q#GJcC<$JcC<$ +JcC<$JcEairr2Thq"t'drqQKerq??arq-3\rpg!VrpKdPrp0RHroX4Aro=";qqqD/rnRM+rn.5$rmh"t +qpPJkrm1Sjrm(MfprrWYrlW@)J]WJbJ]ZB_qo\o]prr`^rm(Mirm1SkqpPJmrmh#!rn%/&rnRM/qqqD3 +ro=">roX4C!:'[Oli-8Mmf)\Snc&+Yo`"O_pAXgcq#:*aqt9perdk*^s60L^rq66bqu6Ejq#:$epAXaa +o`"F\nc&"Vmf)SPli-)Hk5OKAj8S'8hu;I2h#?"+f`'J$ec+(qdf.Ynci2;jcMl)`bkoT_b,<@4aaqQb +anhdf._pec+/!fDaJ&h#?.,hu;U6j8S0>k5OQCli-8Mmf)\Snc&+Yo`"O_ +pAXgcp]:3d!;ZEep&4mhV#Q#GJcC<$JcC<$JcC<$JcEjlrr2ThrquQfrqQKerq??`rposUrpTjSrp0RK +roj@CroZ:.i;Vd9jo4KCl2L#GmecMQoD\C]pAXdeq"Ojaq"jmcqu-EkVuM>JJcC<$JcC<$JcC<$JcEso +rr2]krqucmrqcWirqQKerq??arq-*XrpTjSrp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\jrm(MfrlY5] +rl>#Wrl"fRrkeQKqnW3GrkSNJrk@X1iOj`SJ\6QHke-8qqnE'FrkJ?Grk\KKrkn`Rrl+lWrlP/^rltGf +qp>>jrmUktrn.5)rndY3rnme:!TW5>jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6frdk*g +s6fpdrqQHkr;QTmqYpG]Rd_H]SaAg^&,PC_#D+G_#D1I_Z%IP`;[aTa8X3[b5TZb +cMPufdf._pf)F>$g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[o`=d[!;?EdrqQKgrqcWkrquQiqu3_t +JcC<$JcC<$JcC<$JcC<$ci="Dp&4merqcWirqQBbrq69_rpp'XrpKdQrp'LHroa:Aro3q8rndY0rn@A& +rm^qrrm:YirltGbrlG)Zrl+lTrkn`OrkSNJqnic2PlbaSs6Z`W!gT_u@LO_#D+G^&G\A]DfD=\c0,-\%/qu[XklB[dU^&\Gj&9])K>= +]`,VD^])%J_>_@O`;[aTa8X3[b5TZbci2;je,Insf)FD&g]$(/i;Vd9jSn?Al2KuImJcSRnG`"Xo)\OW +!;6?cqtU0drqcWkp&4mhXoEtPJcC<$JcC<$JcC<$JcF0urr2Thrquclqt^-`rq??`rposTrp9XMroj@D +roF(;ro!e4rn@A(rmq(srm:YjrltGcrlP/Yrl"fQrkSEGrk/6Brjr*=rjVm8qmHF1qm61*o!-rRJZs^0 +J["7?os+1qrj2L/rjDa6rjVm:rjr*@rk/6FqnW3Jrkn`SrlP/_rltGgrmC_nrmq)$rn7A/!T)]4hu;U6 +jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6Hirdk*js7H?jrq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`D +jSn-;i;VU4gA]b(f)F+sd/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z+7)iY^s$6 +Yk>9oZMq3-[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTD +li-;Kn,DkYo^i.UqtC$`rqZHfqu$?iqu3i"JcC<$JcC<$JcC<$JcC<$df9=Gqu-Nlrql]krqZQgrqHEb +rq-3]rpg!WrpTjProsFFro=";rnm_3rnIG)rmUkprm1Shrlb;_rl+lSrkSNJrk/6Brj_s9rjDa3rj)F* +ric=(riQ1$poFCopo2]?JZ+-uJZ.A&po4.jqlB^triQ1&ric4'riuI/rjDa7rj_s>rk8U6iqu6NmrVQSFs2b64 +s8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS +_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>EsX8]-oWN`=PW.CmuW;`ajWV`^mX8]4"Xo>L&YPYR'Z2V*/ +[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DeWnaQVLrq$-]rq69b +rqQKgrqcWkrqucoqu3i"JcC<$JcC<$JcC<$JcC<$df9+@qtpBhrqQKerq??`rq$-[rp]pTrp9XKroa:B +ro*k6rn[S,rn%/!rm:YirlkA_rl+lSrk\TKrk8Z=2iVqsZ+,fDa;!d/M>ibl5]_`W!dS_>_4K^&GSA\,Nf7ZMq-.YPt^(XS]$sW;`^o +VZ*FhV#-qLU;EUTTn/o!U#r*KU\LYaV>d@kVuE[mWrB'uY5YX(Z2V'.[JmZ7\c0;A^])(K_u@[TaSsE_ +cMl2ieGe%ug&Bh,hu;U6jo4HBl2L&KmK)hH!:^!Yrq$-]rq??crqQBerqlKhYlB:SJcC<$JcC<$JcC<$ +JcF:#rr2fnrquZjrqcWgrq??arq$-[qsXONrp'LFrod@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg:k5OZFliHSDrU9aU +rq$-^rq??cqtgro!e4rn7;&rm^qorltGcrl+lSrkJHHrjr*U6iqu6Nj +rVQSFs3^lFs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUlMg#Hk5OB>i;VU4g&BV&eGdhoc2Poc`W!dS +^](tH])K2kQ0u6!:'RPrp]pWrq-3_rq??drqZQirql]mqu-Ek\c76\JcC<$JcC<$JcC<$JcFL)rr2]krqucm +rqZQgrqHEbrq-3\rp]pTrp9XJroX4?ro!e3rnIG'rmUknrltGarl4rRrkJHFrjVm7rj)O,ri?$trh]Ui +rh9=`rg`tWrg<\Org*PJrfd>EqiUl=rfI,?rf6l8nr2F`JW#);JW&iPm#:q'qi:Z;rf@&?rfR2Crfd>G +rg*PMrg<\Srgj%\rh9=drh]UnriH+&rj)O2rjVm>rkABJ!6,&Z`r=*Zc2Q)heGe%ug]$%.i;Vd9k5OTD +m/HGPnG`"XoD\F^p\sseq>U9jr;6Hirdk*ss8DusrqQHkr;QTmq>U0gp\sjbo`"F\nG_kTm/H5Jk5OE? +i;VR3g]#e'e,I_nc2Pia`rd:iU&L\`SGo#WR/WHOQN!-JPQ$aBOoCF@ +OT(=?Nr+h,N4b("Mh-eGMsQE%NVeb8OT(=?OT(CAP5^[EPl@!JQi_IRao9Qad/MPof)FG'h>Z@3j8S0Aki`$1rp9XPrp]pXrq$-^rqHEerqZQjrquZlqu4/+ +JcC<$JcC<$JcC<$JcC<$g].9Pqu-Nlrql]krqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Ma +rl+lQrkABDrj_s5rilC)ri,morhKIcrgs+[rgEbPrg!JGrfR2@rfI,>rf-o9repZ2re^W1qhNLPJVJ`1 +JVMa1reLK/re^N0repc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rk8BK!PuVO +`W!sXcMl2idf.nugA]t.i;Vg:k5OZFm/-8No)A:\pAXgcq#:-hqu6NmrVQSFs3^lFs8N#prVl`oqu6Hk +q#:$epAX^`o)%nTm/H;Lk5OE?i;VU4g]#k)df.VmcMkoa`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[ +RJrQPQ2ZsGOoCF@OT(:>NW+n9Mu/D2M>i>.LTQ;^L4P)1LA6N&L]3,/M>N20MuJ\7NW+t;OT(=?OoCOC +Q2[-LRJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nugA]t.i;Vdrnm_2rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUH* +re19&qgnEjb^Y1nJU`6#fmiRCrdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4 +!5&?F]`,YE_>_LSbPoiedJhYpfDaV*i;Va8k5OTDlMg8OnG_tWo`"O_p\t!cqYU3irVQSFs4@8Ns8N#p +rVl`oqYU*fp\smco`"C[nG_nUlMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70-XT#0tV>d.e +T)P;[R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=PnIt<*#It<+HJ+A-hJbt&rK`6])M#N81MuJb9O8b7? +PQ$mIR/WZUTDkM_V>dFmXT#F&Zi7E4]`,YE_>_LSbPoiedJhYpfDaV*huVis!94"?roj@HrpTjUrpg![ +rq69brqZHfqu$Hlqu4A1JcC<$JcC<$JcC<$JcC<$iW&oVqu-Nlrql]krqZQgrq??`rq$-YrpKdProj@D +ro="9rn[S-rmh"rrm1Sdrl>#UrkABCrjVm3riZ7$rh]Uhrh07\rgEbPrfd>Drf@&:reg]3re:?)re(3$ +rdautrdO`mrd=Kfrd)n9JU)flJU,pord+HgqgABkqgSNordb!!re(3're:?.reg]5rf@&@rfd>JrgEbU +rh07crh]UpriZ7*!4N!<\,Nu<^Ac%La8X6\ci2Alec+;%h#?72j8S3?kl0rJmf)_ToD\F^pAXjdq>U6i +qu6NjrVleIs4RDQrr)osqu-Nlrql]krqZQgrq??`rq$-YrpKdProj@Dro="9rn[S-rmh"rrm1Sdrl>#U +rkABCrjVm3riZ7$rh]Uhrh07\rgEbPrfd>Drf@&:reg]3re:?)re(3$rdautrdO`mrd=Kfrd(\lJU)fl +JU.-JrgEbUrh07crh]UpriZ7*rjVm#\rm1Slrmh#%rnIP4huM^7j8S3?kl0rJmf)_ToD\F^pAXjdq>U6iqu6NjrVlf2s+13$s+13$s+13$ +s+13$s5a4ZrqQHkr;QTmqYp9hp\sgao)A.Xn,D\Qli-)HjSn*:hYu:/f`':tci2/f`W!aR^](eC[f3Q2 +Y5YI#VZ*7fT)P8ZQN!-JOoCF@N;e_6LAll*KDpE#J,XorIK"WnHiA?jH2DjcGQ)d_FjG/\FFeObFOkR5 +FoHR`GPcXaH2`-hHiAElIK"]pJ,XutKDpT(LAm)0N;en;OoCUEQN!ERT)PD^VZ*RoXoP^-Z*F;9rji$C +rkeZRrlkAermC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-EkJcFX-rr)rsrVHKlr;QTm +qYp9hp\sgao)A.Xn,D\Qli-)HjSn*:hYu:/f`':tci2/f`W!aR^](eC[f3Q2Y5YI#VZ*7fT)P8ZQN!-J +OoCF@N;e_6LAll*KDpE#J,XorIK"WnHiA?jH2DjcGQ)d_Fffb:FFeObFSKtWFoHR`GPcXaH2`-hHiAEl +IK"]pJ,XutKDpT(LAm)0N;en;OoCUEQN!ERT)PD^VZ*RoY5Y^*[Jm`9^])+L`W"*\cMl5jf`'S*hVJ7h +ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-Ek_Z,2eJcC<$JcC<$JcC<$JcFg2rr2fnrqucmrqcWh +rq??arq$-[rpTjQrp'LHro=":rnm_-rmh"qrm(Mcrl4rQrk8rfmDKrgWnZrhBCg!3H:(Xo>R(ZMqH7^&GhH`r=*ZcMl5jec+5#hu;U6j8S9A +l2L&Kn,DkVoD\F^p\sseqYpBkr;QZlrdk+,s8MuurVc]nrqucmrqcWhrq??arq$-[rpTjQrp'LHro=": +rnm_-rmh"qrm(Mcrl4rQrk8rfmDK +rgWnZrhBCgriQ1(rj)O7rk8U-fpAXaao)A.Xmf)MNkl0`DiVq^5g]#b&df.Sl +ao9_.I\c0#9YPtU%W;`OjT)P5YQ2[!HO8b+;M#N,-Jc:/uIK"QlGlDpdFT-@\ErL%WDu4GOD>S/H +CWU=BC4U,NC=?qsC\V`FD>S5MDuO_TErL.ZFT-L`H2`-hIK"`qJc:B&M#NA4O8b=AQ2[9PTDkPbVu`iq +ri?%%rjDa9rk8B +rf$i4re:?&rdXoqrd+Qgrce?`rcA'Zrc%jTqelCMqeZ.FVeUctJSKaNokOJAph]qHqelCOrc%jWrcA'\ +rce?erd+QlrdXoure:?-rf$i;rf[8GrgWnZrhBCjri?%%rjDa9rk8&hYuL5 +k5OTDlMg5NnG`"Xp&=[ap\t!fqYpBerPJScs+13$s+13$s+13$s+145s8N#prVl`oqYU*fp\smco`"@Z +mf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiAnANC]8)GC&Vf4BDuMtAV"EDAV"FSAc$*1BDZBAC&;ZEC]8/LD>S5ME;jkVF8g=] +H2`0iIf=irKDpW)N;ek:OT(UGS,T#[U&h!_rhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2ro="?roj@K +rpTjUrq-3_rqHEfqtg3frr)`nJcFs6rr2io!<)oprqcNfrqHEcrq-3ZrpKdQroj@Dro="9rnRM+rmLel +rltG^rkeZLrji$9rilC&rhf[hrh'1Yrg3VGrf6u:reCE)rdXorrd4WircS3^rc.pVrbqdRrb_XNrbMLJ +qe?%Clt?<0\Rg>'JRsUJqe#D3qe5tCqeH+GrbVRNqelCPrc.pYrcS3crd4WnrdXp"reCE2rf6u>rg3VR +rh'1arhoarrilC0rji$Crkn`TrltGh!RfBrdf.r!h#?72j8S3?kl0uKn,DhUo`"O_p\t!cqYU3irVQT8 +s+13$s+13$s+13$s+13$s6'F]rr2lqr;QTmqYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR +]`,J@ZMq$+X8\mnT`1M]QN!*IO8b+;M#N&+JGsurHiA0eFT-=[E;jbSD>n;LB`;ZAAc?6;A,]s.@F&>4 +@"D^:@+J`Y@JaO5A,Bg9Ac??AC&VlHD>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQ2mHVSXobQrhKIn +ric=,rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]mrr)`nJcFs6rr2oq!W;iq +r;QTmqYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1M]QN!*IO8b+; +M#N&+JGsurHiA0eFT-=[E;jbSD>n;LB`;ZAAc?6;A,]s.@BEpg@"D^:@/+.&@JaO5A,Bg9Ac??AC&VlH +D>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X6_d*Md>rmUkurnIG0 +ro3q=rp'LLqsaUVrq-3arqZQirql]mrr)`naT$hkJcC<$JcC<$JcC<$JcG$8rr2fnrqucmrqZQgrqHE` +rpp'WrpB^Mroj@Bro*k5rn.5#rmC_hrlG)WrkABCrjDa/ri5sqrh07\rg<\Jrf@&;reCE)rdXoorcnEc +rc8!Wrbh^NrbDFGrau.@rac";qdKJ3qd9#&nm1!TJR!b2JR%;Aoj.,pra5P1raG\5rac">rau.Crb;@I +rbh^Src8!]rcnEhrdXp"reCE2rf@&A!13eSR/WWTT`1kgX8]=%[Jm`9^Ac(MaSsE_dJh\qf`'b,iVqp; +kl0lHmJcSRnc&.Zp\sseq>U9jr;6Hlrdk+8s8N#pr;lio!;uinrqZQgrqHE`rpp'WrpB^Mroj@Bro*k5 +rn.5#rmC_hrlG)WrkABCrjDa/ri5sqrh07\rg<\Jrf@&;reCE)rdXoorcnEcrc8!Wrbh^NrbDFGrau.@ +rac";qdKJ3qd9#&nm/e2JR!b2LKsLXnm;<&qdBD3qdTP8ral(@rb2:FrbMLNrc%jWrc\9crd4Wore(3) +rf$i;rf[8Jrg`t\rhoarric=/rji$Brl"fW!R/afbl6#hec+5#hYuL5jSnBBlMg2Mn,DkVoD\L`q#:*g +qu6NjrVlf;s+13$s+13$s+13$s+13$s6]jcrqlZnr;QTmqYp9hp\smcoD\:Zn,DYPl2KlFiVqa6h#>n( +df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP21S=b0_,=b0`;=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtYGQ*!hIf=ot +M#N>3NrY@EPEZ!5rgj%_rhoasriuI2rk&0Frl+lXrm1Smrmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKh +rql]mrr)`nJcG9?rr2fnrqlfoqZ-NmqYp9hp\smcoD\:Zn,DYPl2KlFiVqa6h#>n(df.SlaSs-W_#CtF +[f3Q2XT#-sUAg__R/WP211 +=b0_,=bg/N>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_ +VuEdsZ2V32]DfVF`<"'$!6G/crmUktrnRM0ro*k>rosFJrpTjVrq$-_rqHEerqcWkrqucoqu4e=JcC<$ +JcC<$JcC<$JcC<$mJm1bqu-EhrqcWgrq??`rpg!VrpB^KroX4?ro!e2rn.4trm1Sfrkn`Nrk8<'r`K&!r`8/]gJi`'JQ.2" +j](ABqc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reCK7!KW<@P5^aGSc5>^V#ILq +Z2V-0^&GhH_u@mZcMl5jf`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQSFs7--grqlZlqZ-NmqYp6g +pAX^`nc&"VmJc>Kk5OE?i;VO2f`':tci2/f_u@IN^&GDn2IB)Z??@K'[6?i+..>l.\'=Sl2! +BDucIDuO_TFoH[cIK"crK`6c+O8b=AQ2[?RU&LkeXo>U)[/Rc<^]D?j!5nf[rm(Mjrn.5)ro!e9roX4D +rpB^Rrpg![rq69bqtg_4 +r`oG,qcWo#r`B)"pf7;mmo0!ZgJNN!JPgtqj\beNmo0*_qc3Vrr`Au!r`T5)ra#M1ra>_8rac"ArbDFM +rc.p[rcnEkrdk'%!/^f7MZ/Y8P5^mKSc5>^W;`mtYl;34^&GkIaSsB^d/MSpg&Bh,iVqp;k5O`Hmf)_T +oD\F^p\t!fqYpBerIP"=s7lQlqZ6Qi!;c]jrqHEbrq$-YrpKdProX4@ro*k4rn7;$rm:YgrlG)Trk8_4r`oG,qcWo#r`B)"pf7;mmo0!Z +\P[oTJPh2"pepQZqc*Gmr`9#"qcNi#r`fA-ra5Y4raYq_OTbPolfec+8$h>ZC4jSn<@m/HGPnG`%Yp&=^bq>U6iqtU-5s+13$s+13$ +s+13$s+13$s7$'frqlZnr;QQlq>U0gpAX^`nc&"Vm/H>Mjo49=hu;@/fDa7ucMkrb`;[ON])K,:Y5YF" +U]-nbRf8TOO8b%9LAl`&IK"QlF8g1YDuOMNBDuKA@/aO4?N+1.>5h\(=8l8"5hb*?N+=2@/aa:B`;cGDuObUF8gLbI/\WrL&m$`repc:rg!JOrh'1b +ri#h!rjDa:rkJHNrlP/brmUkurn@A/ro3q=rp0RNrpTjVrq-3`rqQKgrqcNirr)`nJcGTHrr2fnrqucl +!VuNkq>U0gpAX^`nc&"Vm/H>Mjo49=hu;@/fDa7ucMkrb`;[ON])K,:Y5YF"U]-nbRf8TOO8b%9LAl`& +IK"QlF8g1YDuOMNBDuKA@/aO4?N+1.>5h\(=8l8"5hb*?N+=2@/aa:B`;cGDuObUF8gLbI/\ZqLAm,1O8bFDRf8rYU].4kY5Yj.\cKR\!5JNOrlP/b +rmUkurn@A/ro3q=rp0RNrpTjVrq-3`rqQKgrqcNirr)`ndJndtJcC<$JcC<$JcC<$JcG6>rr2oqrqucm +rqcWhrqHEarpp'XrpB^Mroj@@ro!e4rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7re19$rd=]h +rc8!WrbVRIrac";ra5Y2r`fA)r`9"ur`&kpqbd5er_NMir_NDdnkIP+JP:VgJP=imohG*Sr_WSiqb[8h +qbmDmr`/qur`T5)ra,S2raPk;rb2:Hrc%jWrce?h!.Y*#JGt6$M#NJ7PQ$sKTDkVbW;a""[/RW8^])1N +ao9Wce,IqthYuI4ir80@lMg2MnG`%Yo`"Uaq>U6iqu6NmrVQSFs8)cprr2lqr;QTmq>pBd!;QQfrq-3\ +rp]pSrp'LHro3q8rndY*rmUkmrlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:A +raPk6ra,S.r`T5$r`/qsr_iVjqb[8fr_WSiqbH]VYY9UAJP:Vgr_2uZohPK_r_NDfr_`Pjr`&ksr`9#$ +r`fA.ra5Y6rac"ArbMLPrc8!^rd=]qre19,rf@&Brg<\WrhKIkric=.!P,`@\c0AC`;[mXci2Dmf)FP* +i;Va8kl0lHmJcVSoD\C]p\t!fqYpBkr;QZlrmCass+13$s+13$s+13$s+14As8N#prVl`oqu6Ejq#:$e +oD\=[n,D\Ql2KiEi;VR3g]#_%d/M;h`W!^Q^&GG=Z2Um)V#I%dSGncPOT(4k;uTbq=8l>$ +=oM_+?iFL5Ac?BBD#SAPF8g@`IK=nHrdk'%rf$ik;uTbq=8l>$=oM_+?iFL5Ac?BBD#SAP +F8gC_If=otK`6r0OT(LDSGo2\V#ILqYlV8?!4Dg>rk\TQrltGirm^r%rndY4roX4Drp9XQrpg!ZrqHEe +rqZQjrquZlrr1=FJcC<$JcC<$JcC<$JcC<$oDeghqu-NlrqcWhrqHEcrpp'XrpKdNroa:Aro!e2rn7;! +rm(MdrkeZKrk&08riZ7#rh07\rgEbIrf$i5rdaurrd4Wcrc%jRrb2:BraGe5r`oG,r`B)"r`&kor_WSi +r_EGeqb6l[r^u*?gIQldJOk>_j[eE'qb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jX +!.+`nHiAKnJGtE)NW,%=RJrcVT`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kl0lHmf)_To)A@^p\sse +qYpBhrVleIs8DusrqlZnr;QQlp]:-`!;HKdrpp'XrpKdNroa:Aro!e2rn7;!rm(MdrkeZKrk&08riZ7# +rh07\rgEbIrf$i5rdaurrd4Wcrc%jRrb2:BraGe5r`oG,r`B)"r`&kor_WSir_EGeqb6l[r^u*?\O_9B +JOkPej%9,?r_*#[r_5hY'sAj;#X5h9`@ZW8cD9U8&.TF7Y+$[7`n3q +8,GjS8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fHDuat\FEIM-rdFctreUQ5rf[8Jrgs+ari,n# +rjDa;rkSNRrlb;frmh#$rn[S4roO.Crp9XPrpg![rq69brqcWkrqucoqu26Jrr2fnrqucmrqcWg!VZ3e +pAX^`nc&"Vm/H5Jjo46Z+,ec*qpbPoQ]_#CtF[JmB/WW&[lT)P,VP5^I?L]2o)IK"KjFT-7YD#S,I +A,]p9?iF7.=T2A#;Z9Pm:]=2i:B!rd9(bdT8GG]H7Y+$[7Y+%q7efLN8Gc!U9)_N`:&[ug:]=5j;Z9_r +=T2M'?iFL5A,^0@C]8;PFT-RbIK"itM#ND5P5^jJT)PMaW<'3+!3cC0rk&0Frl>#]rm:Yprn7;,ro*k< +roj@JrpKdUrq-3_rqHEgrql]mrr)`neGk+"JcC<$JcC<$JcC<$JcGHDrr2fnrql]krqZQfrq69^rp]pS +rp0RGro="8rnIG(rmUkkrlG)WrkABArj)O)rhf[frgNhOrfI,:re:?%rd+Qerc8!Srb;@DraGe4r`fA' +r`9"tr_WSir_EGdr_*5_qapZUqa^ENnjUkmJOG&WJOJ'WogSXFr^ZWPr^m)]r_*5ar_EGgr_WSnr`/r! +r`fA.raGeOnG`%Yp&=^bq>U6iqu6Qkre(7MrqlZnqu6Hkq>U*hp%8=Xrq$-YrpB^NroX4?rnm_0rn%.urltG` +rl"fMrj_s5riH*rrh07Zrg!JEreg]/rdauorc\9]rbVRJrau.U*eo`"F\n,D\QlMfoEir7j7g&BP$d/M8g`rQ.e)lJ+0@fC!=C&W&MF8g@^If=ruLAm54P5^dHTDkVeWMolsric=/rk&0F +rl4r]rm:Yprn7;.ro3q=rp'LLrpTjWrq69arqZQirql]nqu5+FJcC<$JcC<$JcC<$JcC<$pAb$grqucl +rqQKerq-3\rp]pTrp0RIro3q7rnRM(rmLelrl>#UrkJH?riuI)rhKIbrgNhKrf-o6rdk&srcnE^rbh^N +rac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-fKt-UJO4oSha66gqaCEPpdY6Qr^d#[r_*5b +r_NMjr_i_qr`K/(ra5Y6raZ"E!GcKMDZ4YTGlE*iJc:N*NW,(>Rf8oXU].CpZ2V01^]).Ma8XEae,Iqt +h#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QYIs82cor;QQlq#:$eoE"OR!:p-YrpKdOroj@@rnm_1rmq(s +rm1Sarkn`MrjDa1riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr_rgNhX!McCiU].CpZ2V01^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QZE +s+13$s+13$s+13$s+13$s7ZKirVl`oqYp9hp\sgao)A+WmJcALkPjH>hYu7.eGdhobl5T\_>_+HZi7-, +WW&UjSGniROT(1;LAl]%HN&'dE;j\QB`;K??iF@1=T2A#<;o_n:]=,g9)_E]8H)-Y7efFO7+Xfa6MWou +6%M=V6/"ZZ6i0:K7K,dU8,c'Y8cD?]:B"&g;#XGnhYu7.eGdhobl5T\_>_+HZi7-,WW&UjSGniROT(1;LAl]%HN&'dE;j\QB`;K? +?iF@1=T2A#<;o_n:]=,g9)_E]8H)-Y7efFO7+Xfa6J"MS6%M>#6/"ZZ6i0:K7K,dU8,c'Y8cD?]:B"&g +;#XGn^Hnqu-NlrqcWhrqHEarpg!Vrp0RJ +roO.;rnRM+rmUkmrlb;WrkABBrilC&rhf[ergEbMrf-o4rdt,srcnE`rbh^Mrb)4_XWci2Dmg&Be+i;Vj;kl0oIn,DnWo`"Ua +q>U6fr;QZlrf$mVrqlZnr;QQlq#:$eoE"LP!:g'Wrp0RJroO.;rnRM+rmUkmrlb;WrkABBrilC&rhf[e +rgEbMrf-o4rdt,srcnE`rbh^Mrb)4_taTDk_e +X8]@&\c0;A_>_XWci2Dmg&Be+i;Vj;kl0oIn,DnWo`"Uaq>U6fr;QZlrn@C's+13$s+13$s+13$s+14G +s8N#srVl`oqu6Ejp\sjbo)A.Xmf)JMkPjN@hu;@/f)F%qbl5]__#CtF[Jm?.W;`OjRf8TOO8at7K`6K# +GlDgaDuOMNB)Z9=?iF:/=T27u;Z9Jk:&[ca8c)$W7f,XR7.N^m6KCC_5_21O5jgn_6M3_C7/fXP7fGpW +8cDB^:&[rf;>sMn=T2P(?N=O9@Uf=KrbDFNrcA'`rdXp"reUQ7rfmDNrhBCjriZ7.rk&0FrlG)_rm:Yq +rn@A/ro="?rosFMrp]pXrq69brqZQjrqucoqu2QSrr2oqrqucmrqZQfrq69]!V#RYnG_kTl2KlFj8Rs8 +gA]\&d/M8gaSs!S]Df5;Y5YC!UAgV\Q2ZjDM#N),J,X]lFT-4XCAqiE@fBa6>Q.b(;uT\o:]=)f9)_EZ +8,c!T7K,^G6d\6;5_21O5`e7V6M3_C7/fXP7fGpW8cDB^:&[rf;>sMn=T2P(?iFO6B)ZQEDuOhWGlE3l +KDp]+O8b@ER[O5FrhBCjriZ7.rk&0FrlG)_rm:Yqrn@A/ro="?rosFMrp]pXrq69brqZQjrqucoqu5=L +JcC<$JcC<$JcC<$JcC<$q>^Hnrr)iorql]irq??arpg!VrpB^KroO.=rn[S+rm^qnrlY5ZrkABBrj2U) +rh]Uerg<\Krf6u3rdk&srcS3\rbh^Jrac"9ra#M+r`9"rr_WShr_*5_r^m)Zr^QcRr^?3Bd6cnZJO"cO +JO&Wgc9h(hr^?WPr^QlWr^m)]r_*5cr_WSlr`9#$r`oM3!FT=7AH$6@DZ4YTFoHggJc:B&NrG4@R/WcX +VZ*XqZi7K6^Ac+Nb5T`deGe/#h>ZF5k5OTDmJcSRnc&4\p\ssequ6NmrVQSQs8N#srVl`oqu6BipAXaa +nH&+I!:TpSroj@Cro3q5rn.5"rm1Sdrl+lNrji$7ri?$prh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra>_2 +r`T5$r_i_lr_EGcr_!/]r^ZrWqaLKPmmGJh_E`Z;JO#;^c9h(hr^?WPr^QlWr^m)]r_*5cr_WSlr`9#$ +ra#M2rac"@rbh^TrcS3grdk'&rf6u@!LT5SR/WcXVZ*XqZi7K6^Ac+Nb5T`deGe/#h>ZF5k5OTDmJcSR +nc&4\p\ssequ6NmrVQTJs+13$s+13$s+13$s+13$s7u]orr2lqr;QQlp\smco`"@Zmf)SPkPjQAi;VO2 +f`'A!c2Pf`_u@=J[f3N1WW&[lTDk,TOoC==K)U5uHiA*cE;j\QAc?0t*e,IVkaSs*V]`,A=Yl:X$U]-nbQ2ZpFN;eG.If=]n +F8g.XD#S#F@fBa6>5hV&OnG`%Yp&=^bqYpBk +r;QZorf@*Yrr2lqr;QTmqYp6gp&=R^n,_qD!:BdOroO.>rnm_/rmh"prlY5ZrkSNCrj2U,rhTOcrgNhK +rf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKPpdU-fp&=O]nG_hSlMflDiVq^5f`'D"ci2&c_u@FM[JmH1XT"snSc4uTOT(1;L&QQ#H2_pbDuOMNB)Z3; +?2e%,$Co2ra>_;rbDFNrcJ-brdOj#reg]:rg3VTrhBCnrilC0rkJHNrlP/crm^r"rndY5roF(Drp9XR +rpp']rqHEfrqcWkrr)iqO8o4Yrr)inrqcWirqHEbrpp'X!U]7SmJcDMjSn-;hYu1,eGdenao93W^](Y? +Z2Uj(UAg__Qi<*GMuJG0If=WlFT-4XCAqiE@/aI2>5hS%;uTVm:]=&e9)_B\8,c!W7K,^J6e"H,5_21O +5_23"5h&-n6iKLQ7K,dU8,c'Y9)_N`:]=2i<;oqt>5hh,@/ad;CAr/NFT-RbIf>'#M?/g#!0I2Hrgj%_ +riH+'rjDa?rl"fXrm1Snrn.5,ro*k;rp'LLrp]pXrq69brqZQirql]nrr1XOJcC<$JcC<$JcC<$JcC<$ +!WW3!rqlZnqu6Hkq>U*eo`"C[n,DYPkl0WAi;VR3f)F+scMki__>_.IZi70-WW&RiS,S]PNrFn7KDp8t +GQ)X^D>n5JAH$!9>lIn*_9rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7,rk8Z")df.Pk`ri/,I/\?hErKqTB`;QA@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6e"H,5_21O +5_23"5h&-n6i0:K7fGpW8cDB^9`@ie;Z9\q=oM\*@/a^9C&VuKErL:^I/\ctL]NNr!07&DrgNhZri,n" +rj2U;rkeZSrm(Mkrmq))ro!e9roj@IrpTjVrq-3`rqZQirql]nqu5FOJcC<$JcC<$JcC<$JcC<$!WW3! +rqlZnqYphYu:/e,I_nbl5NZ^](hDYl:^&VZ*1dR/W9JMuJG0JGsinFT-4X +CAqiE@fB[4=oMM%;Z9Pm:]=&e9)_E]7f,XF6f:<16,l0@5_21O5gVdq6/=m#6iKOO7fH!Y9)_N`:]=5j +;?0c!=',B)ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1SmrnIG/ro*k>rp'LM +rp]pYrq-3brqZQirr)`nQ2gj_qu-NjrqZQgrq-3\rp]pS!U8hKl2KlFiVq^5g]#\$d/M8g_u@FM])Jr5 +X8]!qT)P,VP5^C=L&QW%H2_pbDuOMNB)Z9=?2e"+=8l+s;>sAj9`@Z`8cD3V7Iih(6N09H5_21O5_22k +5lO(*6M3_F7JfRR8cD?]9`@ie;>sJm=8lD&?2e=4B)ZQEDuOkXH2`?nL&m3j!/pi>rg<\Vrhf[rrilC5 +rkABLrlkAfrmUl$rndY5roa:GrpB^Srq$-]rqQKgrqcWmqu5FOJcC<$JcC<$JcC<$JcC<$!WW3!rqlZn +qYp9hp\sgao)A.Xm/H8Kk5O<Z.-df.Pkb5T9W^&GM?YPtO#V#Hk_QN!$GM>i2-J,XZkErKtUB`;TB +@K'O2=oMJ$;>sDk:B!lb8cD9[7f,XF6f:<16,l0@5_21O5gVdq6/=m#6iKOO7fGsX8cD?]:B"&g;#jVt +<`]3%r`oG2ral(Brbh^Urce?kre19-rfR2GrgWn_ri5t$rjVm?rkeZWrm(Mkrn@A-ro!eKAc?-;>lIn*lJ12Ac?BBDZ4\UGQ**kKE6pd!/^];rg*PQrhTOnric=1rk8n2IA,]j7 +>5hV&d+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm:B!rd8cD9[7fGjU7/0.'6CpGn5_21O5jUbf +6Mj.L7/fXS7fGpW8cDE_:B")h;uThs=T2\,@fBp;C]88OErLFbIfY1S!/(92rf[8Irh'1dri?%)rji$D +rl4r]rm:Yqrn7;-ro="?rosFNrpg!ZrqHEfrqcNirr([QJcC<$JcC<$JcC<$JcC<$!WW3!rVl`oqu6Ej +q#:$eoD\7YmJcALk5OB>hYu4-eGdenb5TBZ^AbYAZ2Ua%U]-kaPl?dDN;eG.If=ZmEW0kTCAq`B@/aI2 +=8l5!;Z9Ml:&[fb8cD9[7fGjU7/0.-6Mj'a5_21O5_22C5lO('6Mj.L7/fXS7fGpW8cDB^:&[rh;?9Zn +r`/r!ra#M2raYqBrb_XSrd+Qmrdt-.rfI,Drgs+ari,n%rjVm@rl+lZrm1Snrn7;-ro3q>rosFLrp]pY +rqHEerqZQjrqucoQ2gj^rqucmrqZQgrqHE`rp]pSrojIGjoFQCir7g6g&BM#ci2)d`W!UN\Gic4WW&[l +T)OuROT(4m5_21O5jUc8 +6/"[&6iKLQ7K,dU8,c*Z9E%Zb;#XAlnPSHN&?oJqKjo46Z(+eGdbmao96X^&GJ>YPtL"UAg__PQ$XBMZ//*I/\?hE;j\QC&VT@ +?iF=0sAj9`@Z`8H)-Y7fGgK6f:<16+oO75_21O5fZ.h6/=m)6i0:N7fGpW8H)6\9`@ff;#sNk +r`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrm(Mmrn7;,ro*klIe'<;obo:]=&e9)_B\8,c!W7.iq*6N09?5_21O5_22b5lO(* +6Mj.I7/f[T8,c'Y9)_N`:]=5j<;oqt>lJ+0@fC*@D#SDQGQ)sjJ:IWMreg]8rfd>PrhBCjric=0rk8_< +rbMLPrcJ-crdb!&rf$i_%F[JmB/V>d+dRf8EJMuJJ1JGslo +FT-7YC]7uG@/aI2>5hP$;uTSl:&[ca8cD6Z7fGjO6et(o5_21O5_22\5i"d%6iKOR7fGpW8cDB^:&[rf +;Z9\q>5hh,@/agg`W![P\c/r7Y5Y3qT)P,VOT(1;L&QN"GlDd`DZ4DMAc?*:>lIn*_:rb;@LrcA'`rdFd"reg]: +rg<\VrhKIqrj2U7rkSNQrlb;grmh#%rnm_8roX4GrpKdUrq69arqHEhrqucoQ2gj^rqucmrqHEcrq69\ +rpKdOroO7AirJ-=hu;@/f)F(rbPoK[_#CnDZi7-,U]-kaR/W3HMuJG0IK"KjF8g(VCAqfD@/aF1=oMG# +;Z9Jk9`@Z`8cD6Z7fGjO6fp`16'X]d5_21O5iY-)60:N/6iKOR7fGpW8cDB^9`@ie;Z9\q=oM\*@/aa: +C&W#LF8gCbI=2*Dre:?/rfI,Hrgs+ariZ7,rji$Drl4r\rmC_qrn@A/ro="?rp0ROrpg!\rq??crql]m +rr([QJcC<$JcC<$JcC<$JcC?%!<*#urr2lqr;QQlp\smcoD\7YmJcGNjo49=hu;=.ec*qpb5T?Y^](_A +ZMq!*UAg__Qi<'FM>i/,I/\?hErKqTB`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6fp_<5_21O5_221 +5itE.6iKLQ7K,dU8cDB^9E7ih:J^sfr`&l!r`fA/rac"Brb_XTrce?hre(3,rf@&Frgj%_riQ1*rjVmA +rl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nT)\fhrr)iorqcWgrq??_rp]pSrp0RF!TN)= +ir7j7g&BP$d/M2e`;[ON\,N]4Xo>'oSc4uTO8b"8KDp8tGQ)X^D>n5JAH#s8>Q.b(<;obo:]=&e9)_E] +7fGjU7/0.36B"0\5_21O5h\Kc6MNqI7/fXS7fH!Y9E%Wa:]=8k<;p#!>Q/"/AH$nSTG6*)=!.=cu +re^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5XUJcC<$JcC<$ +JcC<$JcC?%!<*#urr2lqr;QQlp\smco`"@ZmJcDMjo49=hu;7,eGdenao96X^](\@Yl:[%T`1G[Q2ZdB +L]2l(HiA3fEW0bQB)Z9=?N+1.=T24t;#X8i9E%Q_8H)*X7K,^P6fUM95_21O5_2215i>!.6iKLQ7K,dU +8H)3[9)q`g:J^ser_i_tr`];-raPk>rbMLQrc\9frdk'(rf-oBrgWn[ri5t$rjMg@rl"fXrm1Smrn%/, +ro3q=rp'LMrp]pZrq69brqcWkrr)`nT)\fhrr)iorqcWgrq??`rp]pSrp'LE!TN)=ir7j7fDa;!ci2&c +`;[ON[f3N1WrA[jS,S]PNW+_4Jc:#qG5cL\C]7rF@fB^5>Q.b(;Z9Ml:]=#d9)_B\7fGjU7/K@36B"0\ +5_21O5h\K]6N0@O7/fXS7fGsX8cDB^:]=5j;Z9et>5hk-@fC$>C]8>QFocr:!.4]rreLK4rg!JPrh07j +ric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu5XUJcC<$JcC<$JcC<$JcC?%!<*#u +rr2lqr;QQlp\sjbo)A.Xm/H8KjSn-;hYu.+e,I\ma8X!U^AbM=Y5YC!T`1DZPl?X@LAl`&HN&'dE;jVO +B)Z9=?2e"+=8l+s;#X5h9E%N^8,bsV7/0.06EWS)5_21O5e');6Mj.L7/fXS8,c*Z9)q]f:/:dbr_i_s +r`];,raPk=rbDFOrcS3drdb!&rf$i@rgNhZri#h"rj;[=rkeZTrm1Smrn%/+ro*k;rosFKrp]pXrq69b +rqcWkrr)`nT)\fhrr)iorqcWgrq69]rp]pRrosFC!TDu;iVq^5fDa7uci1ua_u@CL[/R6-W;`IhRf8QN +N;eS2JGsloFoH@ZCAqiE@fB[4=oMM%;Z9Ml:B!oc8cD6Z7K,^M6fULl5_21O5_22S5i>!+6iKLQ7K,gV +8cDB^:B")h;Z9bs>5hh,@fC!=CAr2OFTHf7!.+WpreCE2rfmDNrh07hric=.rkABKrl>#armUkurndY5 +roF(Crp9XRrpp']rqHEgrql]nqu5XUJcC<$JcC<$JcC<$JcC?%!<*#urr2ipqu6Hkp\sjbo)A+Wli-/J +j8S!9h>Z")df.Pk`rL&QT$H2_maDuOJMB)Z6<>lIn*rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWkrquZmT)\fhrqucmrqcWg +rq69]rpTjProsFB!T;l9i;VR3f)F+scMki__>_.IZi7-,W;`FgRJrELMuJG0J,X`mF8g+WC&V`D@K'O2 +=oMJ$;Z9Jk:&[ca8H)-Y7K,^M6fULl5_21O5_22S5i>!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@K'j; +C&W&MF9-Z4!."Qnre:?0rfd>Lrh'1griZ7,rk8k'df.Pk`W!^Q]`,59 +XT#*rSc4uTOoC4:K`6K#GQ)[_DuOGLAH$!9>lIk)_9rb2:LrcA'_rdXp#re^W:rg3VTrhf[srj)O9rkSNP +rm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmT)\fhrqucmrqcWfrq-3[rpTjProj@@!T2c7hu;F1 +ec+"rcMkf^_>_+HZMps)VZ*.cQi<-HM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M +6gR-l5_21O5_22J5j:W46iKLQ7K,dU8,c*Z9`@fd;>sSp=T2S)@/a^9B`;rLErgK/!-eElre19-rfR2H +rgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5XUJcC<$JcC<$JcC<$JcC?% +!<*#urr2ipqYplIk)_9rb)4Jrc.p[rdXp"reUQ8rg*PRrh]UpriuI7rkSNOrltGirmh#&rnm_7roj@H +rpKdTrq-3`rqZQjrquZmT)\fhrquclrqZQerq$-YrpKdOroj@@!T)Z5hYu:/ec*tqc2PZ\^](kEZ2Uj( +V>d"aQN!!FM#N&+J,XTiErKtUBDuH@@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6h3S@6%_FR5_21O5g_jr +60pr86iKLQ7K,dU8,c*Z9`@fd;>sSp=T2S)@/a^9BDufJE<13)!-S9jre(3+rfI,Frg`tari?%'rk&0F +rl"f\rmC_qrnIG0ro3q@rp'LNrp]pZrq??erql]mqu5XUJcC<$JcC<$JcC<$JcC?%!<*#urr2ipqYpn/H@fBa6>5hV& +<;o_n:B!rd8cD9[7fGgQ6gR/=6)$Vq5_21O5cd6M60pr;6i0:N7fGpW8H;Eb9MGF[r_WSnr`K/'ra5Y7 +rau.Hrc.p[rdOiureLK6rg!JQrhTOnrilC4rkABLrlkAgrm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZm +T)\fhrquclrqZQerq$-YrpKdOroj@@!T)Z5hYu:/eGdhobl5NZ^](eCYl:[%V#Hn`Q2ZjDL]2r*If=Kh +EW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N09%5QF'#5_21O5gDXo60pr;6i0:N7fGpW8cDE_ +:&[ug<;p#!>5hn.A,^*>D>nMUF`d\,rdOiureLK6rg!JQrhTOnrilC4rkABLrlkAgrm^r%rnm_7roj@H +rpKdTrq-3`rqZQjrquZmj8X]1JcC<$JcC<$JcC<$L&_/O!;ursrVl`oqYpn,G@fBa6=oMM%<;o_n:B!rd8cD9[7fGgQ +6gR/=6)$Vq5_21O5cd6M60pr;6i0:N7fGpW8H;Eb9MGF\r_WSnr`9#%ra5Y6ral(Grc.pZrd=]qreCE5 +rfmDNrhKImrilC4rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQjrqucorr/Vkrr2oqrquclrqZQd +rq$-YrpKdNroa:>!T)Z5hYu7.e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_RAc?05hn. +@fBsnMUFE@M)rd=]qreCE5rfmDNrhKImrilC4rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQj +rqucorr1sXJcC<$JcC<$JcC<$JcCH(rr)or!WDurqu6Hkq>U'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX +^&GP@Yl:X$UAgV\Pl?aCL&QW%HiA*cE;j\QAc?0rp'LNrp]pYrq69drqcWkrr)iqU&Y,krr)inrqcWirq69^rp]pTrp'LGro!n7 +h>lF3gA]S#ci2,e_Z%7J\Gi`3WW&XkRf8QNO8ak4JGsopF8g.XD#S#F@fB^5=oMJ$;Z9Ml:&[fb8cD9[ +7ef@;6N09%5QF'#5_21O5gDXo60pr56iKRS8,c*Z9E%Zb;#XAlrp'LNrp]pYrq69drqcWkrr)iqj8X]1JcC<$JcC<$ +JcC<$L&_/O!;ursrVl]nqYp";Z9Ml:&[fb8H)-Y7ef@;6N09F5_21O5_22%5lO(96MNqI7fGpW8,u9` +92#7Yr_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1rk8Z.-df.PkbPoBX^&GM? +YPtL"UAgV\Pl?^BK`6K#HiA*cDuOPOAH$$:?N+(+&rd4Wpre192rfd>MrhBCkric=1rk8_+H[f3H/W;`LiR/W9JNW+V1J,Xfo +ErKtUC]7lD@K'U4=T2>";>sDk:&[fb8H)*X7JK7:6N09%5QF'#5_21O5gDXo60pr56iKOR8,c'Y9E%Zb +;#X>k_+H[f3H/VuE@gR/W9JNW+S0J,XfoErKtUC]7lD@/aI2=T2>";>sDk:&[fb8,c!W7JK7= +6Mj'C5_21O5_22"5lO(<6MNqI7K,dU7fZ0_92#7Yr_WSkr`/r"ra#M3rac"DrbqdVrd4Wore(30rf[8J +rh07griZ7/rk/6HrlP/armC_urnRM2roO.Crp9XRrq$-^rqQKgrql]nrr/Vkrr2oqrql]krqQKcrq$-Y +rp9XKroO.;!SlH1h#?"+dJhDiao9-U]`,A=Y5Y?uT`1>XP5^I?KDpB"HiA'bDZ4GNAH$!9?2dt*sSp=T2V*@K'g:C]85Q +EcM/#rd4Wore(30rf[8Jrh07griZ7/rk/6HrlP/armC_urnRM2roO.Crp9XRrq$-^rqQKgrql]nrr1sX +JcC<$JcC<$JcC<$JcCH(rr)or!WDurqu6Hkq#9pbo)A.Xm/H8Kjo43;h#?"+dJhDiao9*T]Df8KDpB"HN%saDZ4DMAH$!9?2dt*";>sAj9`@Z`8,c!W7JK7=6@hDu5_21O +5_22A5jq&76iKOR7fGpW9)_N`:]=5jsAj9`@Z`8,c!W7JK7=6C^;l5_21O5c-g86MNqI7K,dU7fZ-^8kT(Vr_NMjr`&kura#M2raYqB +rbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr/Vk +rr2oqrql]krqQKbrpp'Wrp9XJroF(:!SlH1h#?"+dJhDiao9*T]Df5;Y5Y?uT`1;WOoC==K)U5uHN%sa +DZ4DMA,]m8?2dq)sPo +=8lM)@/a[8CAr)OEcM/#rd+Qmrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\ +rqQKgrql]nrr1sXJcC<$JcC<$JcC<$JcCH(rr)or!WDurqu6Hkq#9pbo)A+Wm/H5JjSn*:h#?"+dJhDi +ao9*T]Df5;Y5Y?uT`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq)_8rbDFLrc.p_rdOiurf$i=rg3VWrhoaurjDa; +rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqU&Y,krr)inrqcWhrq-3\rpTjQroj@Brnmh4 +g]6./g&BCuc2Pia_#CtF[Jm?.VuE@gQi<-HN;eG.IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W +7JK7=6@hDu5_21O5_22A5jq&76iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6BD#nWr!-/!`rdOiurf$i= +rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8X]1JcC<$JcC<$JcC<$ +L&_/O!;ursrVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF[Jm<-VZ*7fQi<-HN;eG.IK"Nk +EW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6C^;l5_21O5c-g86MNqI7K,dU7fZ-^8kT(Vr_NMj +r`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\ +rqQKgrql]nrr/Vkrr2oqrql]krqQKbrpp'Wrp9XJroF(:!SlH1h#?"+d/M8gao9*T]Df5;Xo>3sT`1;W +OoC==K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr&NEH(turd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2 +roF(Brp9XQrpp'\rqQKgrql]nrr1sXJcC<$JcC<$JcC<$JcCH(rr)or!WDurqu6Hkq#9pbo)A+Wm/H5J +jSn*:h#?"+d/M8gao9*T]Df5;Xo>3sT`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq)_8rbDFLrc.p_rdOiurf$i= +rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqU&Y,krr)inrqcWhrq-3\ +rpTjQroj@Brnmh4g]6./g&B@tbl5``_#CtF[Jm<-VZ*7fQi<-HN;eG.IK"NkEW0kTCAq`B@/aI2=8l5! +;>sAj9`@Z`8,c!W7JK7=6@hDu5_21O5_22A5jq&76iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6BD#nWr +!-/!`rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8X]1 +JcC<$JcC<$JcC<$L&_/O!;ursrVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF[Jm<-VZ*7f +Qi<-HN;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6C^;l5_21O5c-g86MNqI7K,dU +7fZ-^8kT(Vr_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2 +roF(Brp9XQrpp'\rqQKgrql]nrr/Vkrr2oqrql]krqQKbrpp'Wrp9XJroF(:!SlH1h#?"+d/M8gao9*T +]Df5;Xo>3sT`1;WOoC==K)U5uHN%saDZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr)OEcM/#rd+Qmrdt-.rfR2Hrh07griQ1-rk&0F +rlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sXJcC<$JcC<$JcC<$JcCH(rr)or!WDurqu6Hk +q#9pbo)A+Wm/H5JjSn*:h#?"+dJhDiao9*T]Df5;Y5Y?uT`1;WOoC==K)U5uHN%saDZ4DMA,]m8?2dq) +_8rbDFM +rc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqU&Y,k +rr)inrqcWhrq-3\rpTjQroj@Brnmh4g]6./g&BCuc2Pia_#CtF[Jm?.VuE@gQi<-HN;eG.If=ZmErKtU +CAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hDu5_21O5_22A5jq&76iKOR7fGpW9)_N`:]=5j<;otu +?2e72A,^6BD?4cu!-8'brdOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3b +rqZQjrr)iqj8X]1JcC<$JcC<$JcC<$L&_/O!;ursrVl]nqYp9ho`"F\nG_eRl2KfDi;VO2g&BCuc2Pia +_#CtF[f3H/VuE@gQi<-HNW+S0J,XcnErKtUCAqcC@/aI2=T2>";>sAj9`@Z`8,c!W7JK7=6C^;l5_21O +5c-g86MNqI7K,dU7fZ-^8kT(Vr_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07griZ7/rk/6G +rlP/armC_urnRM2roO.Crp9XRrq$-]rqQKgrql]nrr/Vkrr2oqrql]krqQKbrpp'Xrp9XKroO.;!SlH1 +h#?"+dJhDiao9*T]Df8KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'g:CAr)OEcM/#rd+Qmre(30rf[8I +rh07griZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrq$-]rqQKgrql]nrr1sXJcC<$JcC<$JcC<$JcCH( +rr)or!WDurqu6Hkq#9pbo)A.Xm/H8Kk5O<K`6K#HN%sa +DZ4DMAH$$:?N+(+";>sAj9`@Z`8H)*X7JK7=6Mj'"5QF'#5_21O5g)Fl617/8 +6iKOR8,c'Y9)_N`:]=5j_+H[f3H/W;`LiR/W9JNW+V1J,XfoErKtUC]7lD@K'U4=T2>";>sDk +:&[fb8H)*X7JK7:6N09F5_21O5_22%5lO(96MNqI7K,gV8,u9`92#7Yr_WSkr`/r"ra,S4rac"DrbqdV +rd4Wpre191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]nrr/Vkrr2oq +rql]krqQKcrq$-Yrp9XKroX4sSp +=T2Y+@K'g:C]85QEcM/#rd4Wpre191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^ +rqQKgrql]nrr1sXJcC<$JcC<$JcC<$JcCH(rr)or!WDurqu6Hkq>U'doD\7YmJcALkPjE=h>Z.-df.Pk +bPoBX^&GM?YPtL"UAgV\Pl?^BK`6K#HiA*cDuOPOAH$$:?N+(+";Z9Ml:&[fb +8H)-Y7ef@;6N09%5QF'#5_21O5gDXo60pr56iKRS8,c'Y9E%Zb;#XAlMrhKIlric=1rk8Z.-df.Pk +bPoBX^&GM?YPtO#U]-_]Pl?^BK`6N$I/\6eE;j\QAH$$:?N+(+M +rhKIlric=1rk8U'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6e +E;j_RAc?3=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N09F5_21O5_22%5lO(96N0@L7/f[T8,c'[9E@g\ +r_EGhr`&ktr`];.raPkrp'LN +rp]pYrq69drql]mrr)iqU&Y,krr)iorqcWirq69^rp]pTrp'LGro!n7h>lF3gA]S#ci2,e_Z%7J\c/i4 +WrAdmRf8TOO8an5Jc:&rFT-7YD>n,GA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6%M9$5_21O5_22G +5lO(96N0@L7/f[T8,c*Z9`@fd;#XGnrp'LNrp]pYrq69drql]mrr)iqj8X]1JcC<$JcC<$JcC<$K)YiM!WN)tr;QQl +q>U*eoD\7Ymf)POkl0T@hYu:/eGdhobl5NZ^](eCYl:[%V#Hn`Q2ZjDL]2r*If=KhEW0hSB)Z9=?iF7. +=8l1u;#X5h9`@W_8H)*X7/K@<6N09F5_21O5_22%5lO(96N0@L7/f[T8,c'[9E@g\r_rb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$Brkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??erql]m +qu32err2oprqcWirq??_rp]pTrp0RIro*t8h>lF3g]#_%d/M8g_u@FM\c/i4WrAgnSGnfQO8aq6KDp?! +FoHC[D>n/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6%M9$5_21O5_22G5lO(96N0@L7/f[T8,c*Z +9`@cc;#XGn=T2M'?iFR7B)ZZHE<13)!-S9irdt-)rf@&Drg`t`ri5t%rji$Brkn`Zrm:YornIG0ro3q@ +rp'LNrp]pZrq??erql]mqu5XUJcC<$JcC<$JcC<$JcC?%!<*#urr2ipqu6HkpAX^`nc&"Vli-,Iir7j7 +h#>h&d/M;h`;[ON]Df)7XT#'qSc4rSOT(+9KDp?!G5cO]DZ48IA,]j7>Q._'d%bQN!!FM>i/,If=NiErKtUB)Z<>?iF:/=8l5! +;#X5h9`@W_8H)*X7/K@<6Mj'$5_21O5_22J5lO(66N0@L7/f[T8,c*Z9`@fd;#XJo=T2P(?iFR7B)Z]I +EWL?,!-\?jre(3,rfI,Grgj%bri?%'rk&0Frl"f\rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu5XU +JcC<$JcC<$JcC<$JcC?%!<*#urr2ipqu6HkpAX^`nc&"Vli-,Iir7j7h#>k'df.Pk`W!^Q]`,59XT#*r +Sc4uTOoC4:K`6K#GQ)[_DuOGLAH$!9>lIk)_9rb2:LrcA'_rdXp#re^W:rg3VTrhf[srj)O9rkSNPrm(Mj +rmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmT)\fhrqucmrqcWfrq-3[rpTjProj@@!T2c7hu;F1ec+"r +cMkf^_>_+HZMps)VZ*.cQi<-HM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6gR-l +5_21O5_22J5j:W46iKLQ7K,dU8,c*Z9`@fd;>sSp=T2S)@/a^9B`;rLErgK/!-eElre19-rfR2Hrgj%c +riQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5XUJcC<$JcC<$JcC<$JcC?%!<*#u +rr2ipqu6Hkp\sjbo)A+Wli-/Jj8S!9h>Z")df.Pk`rL&QT$H2_maDuOJM +B)Z6<>lIn*rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69b +rqcWkrquZmT)\fhrqucmrqcWgrq69]rpTjProsFB!T;l9i;VR3f)F+scMki__>_.IZi7-,W;`FgRJrEL +MuJG0J,X`mF8g+WC&V`D@K'O2=oMJ$;Z9Jk:&[ca8H)-Y7K,^M6fULl5_21O5_22S5i>!+6iKLQ7K,gV +8cD?]:&[ug;Z9_r=T2S)@K'j;C&W&MF9-Z4!."Qnre:?0rfd>Lrh'1griZ7,rk8!.6iKLQ7K,dU8H)3[8cVTe:/:dbr_i_sr`];,raGe5hh,@K'm#armUktrndY5roF(Drp9XQrq$-^ +rqHEgrql]mqu5XUJcC<$JcC<$JcC<$JcC?%!<*#urr2lqr;QQlp\smco`"@ZmJcDMjo49=hu;7,eGden +ao96X^](\@Yl:[%T`1G[Q2ZdBL]2l(HiA3fEW0bQB)Z9=?N+1.=T24t;#X8i9E%Q_8H)*X7K,^P6fUM9 +5_21O5_2215i>!.6iKLQ7K,dU8H)3[9)q`g:J^ser_i_tr`];-raPk>rbMLQrc\9frdk'(rf-oBrgWn[ +ri5t$rjMg@rl"fXrm1Smrn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nT)\fhrr)iorqcWgrq??`rp]pS +rp'LE!TN)=ir7j7fDa;!ci2&c`;[ON[f3N1WrA[jS,S]PNW+_4Jc:#qG5cL\C]7rF@fB^5>Q.b(;Z9Ml +:]=#d9)_B\7fGjU7/K@36B"0\5_21O5h\K]6N0@O7/fXS7fGsX8cDB^:]=5j;Z9et>5hk-@fC$>C]8>Q +Focr:!.4]rreLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu5XU +JcC<$JcC<$JcC<$JcC?%!<*#urr2lqr;QQlp\smcoD\7YmJcGNjo49=hu;=.ec*qpb5T?Y^](_AZMq!* +UAg__Qi<'FM>i/,I/\?hErKqTB`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6fp_<5_21O5_2215itE. +6iKLQ7K,dU8cDB^9E7ih:J^sfr`&l!r`fA/rac"Brb_XTrce?hre(3,rf@&Frgj%_riQ1*rjVmArl"fY +rm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nT)\fhrr)iorqcWgrq??_rp]pSrp0RF!TN)=ir7j7 +g&BP$d/M2e`;[ON\,N]4Xo>'oSc4uTO8b"8KDp8tGQ)X^D>n5JAH#s8>Q.b(<;obo:]=&e9)_E]7fGjU +7/0.36B"0\5_21O5h\Kc6MNqI7/fXS7fH!Y9E%Wa:]=8k<;p#!>Q/"/AH$nSTG6*)=!.=cure^W8 +rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5XUJcC<$JcC<$JcC<$ +JcC?%!<*#urr2lqr;QQlq#:!do`"@Zmf)SPk5OE?hu;C0f)F(rbPoK[_#CnDZi7-,U]-kaR/W3HMZ/;. +If=WlF8g(VCAqfD@/aF1=oMD";Z9Jk:&[ca8cD3Y7K,^M6fp`16+9+15_21O5f#_\60:N/6iKLQ7K,dU +8cDB^9`Rri:J^sfr`&l"r`oG1ral(Crbh^VrcnEkre19.rfI,Hrgs+ariZ7,rji$Drl4r\rmC_rrnIG0 +ro="?rp9XPrp]pZrq??drqcWkrr)`nT)\fhrr)iorqcWhrq??`rp]pTrp9XH!TW2?j8Rs8g]#e'dJh>g +`W![P\c/r7Y5Y3qT)P,VOT(.:K`6H"H2_maDZ4DMAc?*:>lIn*<;oep:]=)f9)_E]7fGjU7/0.36MNj3 +5_21O5_22\5kmY-6MNqI7/fXS7fH!Y9E%Zb:]=8k<;p&">lJ.1Ac?ECDZ4_VGQE8B!.Op#reg]:rg<\V +rhKIqrj2U7rkSNQrlb;grmq)'rnm_8roX4HrpKdTrq-3`rqQKhrql]nqu5XUJcC<$JcC<$JcC<$JcC<$ +!WW3!rVl`oqu6BipAXaanc&"Vm/H2IjSn*:g]#e'df.Jia8WpS])K,:YPtBtTDk;YOT(1;LAl`&HN&$c +E;jYPBDu<__%F[JmB/V>d+d +Rf8EJMuJJ1JGsloFT-7YC]7uG@/aI2>5hP$;uTSl:&[ca8cD6Z7fGjO6et(o5_21O5_22\5i"d%6iKOR +7fGpW8cDB^:&[rf;Z9\q>5hh,@/agKjo46Z(+eGdbmao96X^&GJ>YPtL"UAg__PQ$XBMZ//*I/\?hE;j\QC&VT@?iF=0sAj +9`@Z`8H)-Y7fGgK6f:<16+oO75_21O5fZ.h6/=m)6i0:N7fGpW8H)6\9`@ff;#sNkr`&ktr`oG0raPk@ +rbVRQrce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrm(Mmrn7;,ro*klIe'<;obo:]=&e9)_B\8,c!W7.iq*6N09?5_21O5_22b5lO(*6Mj.I7/f[T8,c'Y +9)_N`:]=5j<;oqt>lJ+0@fC*@D#SDQGQ)sjJ:IWMreg]8rfd>PrhBCjric=0rk8_8rbDFLrc.p_ +rdOiurepc;rg!JTrhTOnrj)O5rkABNrlY5drmh#$rn[S5roX4DrpKdTrpp'^rqQKhqu$HlQ2ga[rqucl +rqQKdrpp'XrpKdL!TiDCjo49=h>Z+,ec*nob5TBZ^AbYAZMpm'V#I"cQ2ZmEMuJ>-IK"NkEW0kTCAq`B +@/aI2=8l5!;>sAj9`@]a8H)-Y7fGgK6f:<.6(U>m5_21O5jUc86/"[&6i0:N7fGpW8H)9]:&[rf;>sPo +=8lM)@/a[8CAr)LEW17_IK>%P!.t3.rfI,Erh'1cri5t'rj_sArl+lZrm1Sorn7;,ro3q>roj@Lrp]pX +rq??drqcNirr([QJcC<$JcC<$JcC<$JcC<$!WW2srVl`oqYp9hp\sd`nc&"Vl2KlFj8Rp7gA]\&d/M5f +`rd+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm +:B!rd8cD9[7fGjU7/0.'6CpGn5_21O5jUbf6Mj.L7/fXS7fGpW8cDE_:B")h;uThs=T2\,@fBp;C]88O +ErLFbIfY1S!/(92rf[8Irh'1dri?%)rji$Drl4r]rm:Yqrn7;-ro="?rosFNrpg!ZrqHEfrqcNirr([Q +JcC<$JcC<$JcC<$JcC<$!WW3!rr2lqr;QQlq#:$eo`"C[n,DYPkl0ZBi;VO2g&B@tbl5``_#CtF[f3H/ +W;`OjRf8QNO8an5K)U5uFoHC[D>n2IA,]j7>5hV&U0go`"F\n,D_Rl2KiEi;VR3gA]P" +cMl#d_Z%7J\Gi`3WrAgnSGniROT(+9KDpB"GQ)[_DuOGLAH$!9>lIn*m_:rb2:LrcA'_rdXp# +re^W9rg*PRrhTOnrilC3rkABKrlb;ermLf"rn[S3roX4ErpB^Rrpp'\rqQKgrqcWlrr)iqQ2gj_rr)io +rqcWirqQKbrpp'Wrp9aNklBuIk5O<Z.-df.PkbPoBX^&GP@Yl:[%V#Hn`QN!!FM>i/,J,XZkF8g+W +B`;QA@/aF1=oMJ$;Z9Ml:B!lb8cD9[7fGjU7/0.'6N09H5_21O5_22k5lO('6MNqI7/fXS7fGsX8cD?] +:B")h;Z9_r=T2S)@/aa:B`;rLF8gC_J,Y*%M2;4hrfI,Frg`t`ri5t%rj_sArkeZXrm1Slrn@A-ro!e< +rosFLrpTjWrq-3brqZQirqucorr1aRJcC<$JcC<$JcC<$JcC<$!WW3!rqlZnqYphYu:/e,I_nbl5NZ^](hDYl:^&VZ*1dR/W9JMuJG0JGsinFT-4XCAqiE@fB[4=oMM%;Z9Pm:]=&e +9)_E]7f,XF6f:<16,l0@5_21O5gVdq6/=m#6iKOO7fH!Y9)_N`:]=5j;?0c!=',B)ra#M4rau.ErbqdX +rd"KnreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1SmrnIG/ro*k>rp'LMrp]pYrq-3brqZQirr)`nQ2gj_ +qu-NjrqZQgrq-3\rp]pS!U8hKl2KlFiVq^5g]#\$d/M8g_u@FM])Jr5X8]!qT)P,VP5^C=L&QW%H2_pb +DuOMNB)Z9=?2e"+=8l+s;>sAj9`@Z`8cD3V7Iih(6N09H5_21O5_22k5lO(*6M3_F7JfRR8cD?]9`@ie +;>sJm=8lD&?2e=4B)ZQEDuOkXH2`?nL&m3j!/pi>rg<\Vrhf[rrilC5rkABLrlkAfrmUl$rndY5roa:G +rpB^Srq$-]rqQKgrqcWmqu5FOJcC<$JcC<$JcC<$JcC<$!WW3!rqlZnqu6Hkq>U*eo`"C[n,DYPkl0WA +i;VR3f)F+scMki__>_.IZi70-WW&RiS,S]PNrFn7KDp8tGQ)X^D>n5JAH$!9>lIn*_9rb;@Krc8!^rd=]t +reUQ6rg!JOrh07iriZ7,rk8Z")df.Pk`ri/,I/\?hErKqT +B`;QA@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6e"H,5_21O5_23"5h&-n6i0:K7fGpW8cDB^9`@ie;Z9\q +=oM\*@/a^9C&VuKErL:^I/\ctL]NNr!07&DrgNhZri,n"rj2U;rkeZSrm(Mkrmq))ro!e9roj@IrpTjV +rq-3`rqZQirql]nqu5FOJcC<$JcC<$JcC<$JcC<$!WW3!rqlZnr;QTmqYp3fo`"C[n,DYPl2KcCiVq^5 +fDa7uci1ua_u@FM[JmE0X8\jmSc4uTOT(1;L&QQ#H2_pbDuOMNBDu?=?N+1.)>?h)5raGe=rbMLOrcJ-brdOj# +reg]:rg3VTrhBCmrilC0rkJHMrl>#armUkurndY5roF(Crp9XQrpg![rq??frql]mrr)`nQ2gj_qu-Nl +rql]krq??`rpg!V!UK%Oli-/JjSn-;hYu.+e,I\ma8X!U^](Y?Yl:^&UAg__Qi<*GMuJG0If=WlFT-4X +CAqlF@K'U4>Q.\&;uTVm:B!rd9)_B\8,c!Q7/0.!6Ei_+5_21O5lO$u6MNqC7/f[T8,c'Y9)_K_:B")h +<;oqt>Q.t.@K'p=C]88OFT-RbIf>'#M?/g#!0I2Hrgj%_ri?%&rjDa?rkn`Urm1Smrn%/+ro*k;rosFK +rpTjVrq-3`rqcWkrqucoqu5FOJcC<$JcC<$JcC<$JcC<$r;Zcqrr)iorql]krqHEbrq$-YrpB^NroO.> +rnm_/rmh"prlY5ZrkSNCrj2U,rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^ +r^d#XqaLKPpdlJ+0@fC'?D#SDQ +GQ*!hJGtB(N;et=Rf8rYV#IOrZMqB5_#D=Pb5Tceec+;%hu;X7jo4TFmf)_ToD\F^p\t$gqu6NmrVleW +s8N#srVl`oqu6Hkp\sjboD\4[mHjo@rp0RFro="8rn@A%rm:Yerl+lPrj_s6riZ6rrh'1YrfR2>reUQ( +rd4Wgrc%jQrb2:?ra5Y0r`B)!r_i_lr_OnG`%Yp&=^bqYpBkr;QZorn@C's+13$s+13$s+13$s+14Gs8N#srVl`oqYp6gpAX^` +nG_kTm/H2IjSn*:h#>t*e,IVkaSs*V]`,A=Yl:X$U]-nbQ2ZpFN;eG.If=]nF8g.XD#S#F@fBa6>5hV& +5hn.@fBsQ'D?7rh'1cri,n$rjMg= +rkn`VrltGkrn%/)ro!e:roa:IrpKdTrq-3_rqHEgrql]nqu5=LJcC<$JcC<$JcC<$JcC<$q>^Hnrr)io +rqcWhrq??`rpp'WrpB^KroO.=rn[S+rm^qnrlY5ZrkABBrj2U)rh]Uerg<\Krf6u3rdk&srcS3\rbh^J +rac"9r`oG*r`B(sr_WShr_*5_r^cfRpdG!Ha?nrQJO"cOJO&Wg`BsPkpdFmHr^d#[r_*5cr_WSlr`B)% +r`fG2!FT=7AH$6@DZ4YTFoHggJc:B&NrG4@R/WcXVZ*XqZi7K6^Ac+Nb5T`deGe/#h>ZF5k5OTDmJcVS +o)A:\pAXjdqYpBkrVQSQs8N#srVl`oqYp9hpAX^`ncA4J!:TpSroj@Cro3q5rn.5"rm1Sdrl+lNrji$7 +ri?$prh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra>_1r`T5%r_i_lr_EGcr_!/\pdY$Hqa8Fk_E`Z;JO#;^ +`BsPkpdFmHr^d#[r_*5cr_WSlr`B)%r`oG1rac"@rbh^TrcS3grdk'&rf6u@!LT5SR/WcXVZ*XqZi7K6 +^Ac+Nb5T`deGe/#h>ZF5k5OTDmJcVSo)A:\pAXjdqYpBkrVQTJs+13$s+13$s+13$s+13$s7u]orr2lq +r;QTmq>U-fp&=O]nG_kTl2KlFj8Rs8gA]\&d/M8gaSs!S]Df5;YPtL"UAgV\Q2ZjDM#N),J,X]lFT-4X +CAqiE@fBa6>Q.b(;uT\o:]=)f9)_EZ8,c!T7K,^G6d\6]5_21O5_22g5gD^h6i0:N7JfRR8,c*Z9E%Zb +:]=5j;uTnu>Q.t0@KBqIrau.ErbqdWrcnElre(3+rf@&CrgNh\ri,n#rjDa;rkSNSrlkAgrmq)&rnm_8 +roX4ErpKdTrpp']rqHEfrql]mrr)`nN;rnVrr)iorql]jrqHEbrpg*Zn,VtWmf)JMkPjN@hu;@/f)F%q +bl5]__#CtF[JmB/W;`OjRf8TOO8at7K`6K#GlDgaDuOMNB)Z9=?iF:/=T27u;Z9Jk:&[ca8c)$W7f,XR +7.N^m6Gc!=5_21^5gD^h6i0:N7JfRR8,c*Z9E%Zb:]=5j;uTnu>Q/"/@fC!=CAr/NF8gF`J,Y*"M#NJ7 +PQ@5A!1Nn]ri,n#rjDa;rkSNSrlkAgrmq)&rnm_8roX4ErpKdTrpp']rqHEfrql]mrr)`ngAca(JcC<$ +JcC<$JcC<$JcGQGrr2fnrquclrqQKerq-3[rpTjProsFDro!e2rn7;"rm1Serk\TJrji$4ri?$qrh'1X +rfmDAreLK)rd=]ircA'VrbDFFra>_2r`fA&r_r\jr_EGdr^m)[r^ZrWqaLKPnjC/Yr^$HIJO"cOL-Y`( +^I%T\qaCEPqaUQTr^d#[r_3;cqb[8kr`9#&ra,S3!+u=FBDuZFDZ4_VGQ*!hK)UT*NW,1ARf8rYVZ*Xq +Yl;34^&GkIbPoiee,J&"h#?72jo4KCli-APo)A:\p\t!fqYU3irVQSQs8N#prVl`oqYp9hp\sdcnaQVL +rpTjProsFDro!e2rn7;"rm1Serk\TJrji$4ri?$qrh'1XrfmDAreLK)rd=]ircA'VrbDFFra>_2r`fA& +r_r\jr_EGdr^m)[r^ZrWqaLKPnjC/Yr^#7'JO"cOW'L>J^I%T\qaCEPqaUQTr^d#[r_3;cqb[8kr`9#& +ra,S3rb)4Frbh^Vrce?hrdt-*rf-oArgEk[T)bM_VZ*XqYl;34^&GkIbPoiee,J&"h#?72jo4KCli-AP +o)A:\p\t!fqYU3irVQTJs+13$s+13$s+13$s+13$s7u]orqlZnr;QQlq#:$eo`"F\n,D_Rl2KlFiVq^5 +g]#b&dJhDi`;[RO]`,8:YPtR$T`1J\Qi<'FMZ/>/J,XcnFoH@ZD#S/JA,]m8?2dt*sAj:&[fb +9)_BY8,c!T7JfLM6bbt`6%M=Q6&%\<6N0@F7/fXP7fGpW8H)3[9E%Zb:]=5j;uThs=T2V*@/aX9B`Vp^ +rbVRQrcS3drdXp$reg]9rg3VSrh07jriZ7,rk/6Grl"f\rmC_qrnIG/ro*k>rp'LMrpTjWrq-3arqZQi +qu$Hlqu2QSrr2fnrquclrqQKerq$6^nc87[n,D_Rl2KlFiVq^5g]#b&dJhDi`;[RO]`,8:YPtR$T`1J\ +Qi<'FMZ/>/J,XcnFoH@ZD#S/JA,]m8?2dt*sAj:&[fb9)_BY8,c!T7JfLM6bbt>6%M=Q6)[)^ +6N0@F7/fXP7fGpW8H)3[9E%Zb:]=5j;uThs=T2V*@/a[8C&VrJE;k"ZHN&EnL&Qu/O8bLFS,o:U!20=k +riZ7,rk/6Grl"f\rmC_qrnIG/ro*k>rp'LMrpTjWrq-3arqZQiqu$Hlqu5=LJcC<$JcC<$JcC<$JcC<$ +pAb$grquclrqQKerq-3\rp]pTrp0RIro3q7rnRM(rmLelrl>#UrkJH@riuI)rhKIbrgNhKrf-o6rdk&s +rcnE^rbh^Nrac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-fKt-UJO4oSha66gqaCEPpdY6Q +r^d#[r_*5br_NMjr_i_qr`K/(ra5Y6raZ"E!GcKMDZ4YTGlE*iJc:N*NW,(>Rf8oXU].CpZMq<3^]).M +a8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QYIs82cor;QQlq#:$eoE"OR!:p-YrpKdOroj@@ +rnm_1rmq(srm1Sarkn`MrjMg2riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yj +r_rgNhX!McCiU].CpZMq<3^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Ua +q>U6fr;QZEs+13$s+13$s+13$s+13$s7ZKlrqlZnqu6Hkq>U*eo`"F\n,D\QlMfoEir7j7g&BP$d/M8g +`rQ.e)lJ+0@fC!=C&W&MF8g@^If=ruLAm54P5^dHTDkVeWMolsric=/ +rk&0Frl4r]rm:Yprn7;.ro3q=rp'LLrpTjWrq69arqZQirql]nqu5+FJcC<$JcC<$JcC<$JcC<$pAb-k +qu-Nlrql]krq??arq$-YrpB^Nroa:Aro!e2rn.5!rm(Mbrkn`Krj_s6ri?$qrh9=[rg!JDre^W-rdXom +rcS3[rb_XKrau.;ra,S/r`K/#r`&kor_WShr_iS8Pl@-NU&LqgX8]I)\Gj2@_u@aV +cMl;lfDaS)i;Vg:kPjfHmJcVSoD\F^pAXpfqu6NmrVQSHs8N#prVl`oqu6Hkp&XjZ!;6?_rp]pSrp0RH +roF(:rnRM*rmUklrlP/Wrk8<@rj2U)rhf[grgNhOrf@&8re19#rd"Kcrc.pSrb;@Dra>_3r`oG)r`9"t +r_`Ykr_EGer_3;ar^m)[ogedHSje3!JOP,Ylp^\=ogf!Pr^m)^r_3;cr_EGgr_`Yor`9##r`oG/ra>_; +rb;@Krc.p[rd"Kmre19-rf@&CrgNh[rh]^sWrT4"Zi7K6^&GqKaSsKae,Ituh#?72jSn?Ali-;NnG`%Y +p&=[aqYpBkr;QZlrm^t!s+13$s+13$s+13$s+14Ds8N#prVl`oqu6Hkp\smco`"C[n,D\Qkl0]CiVq[4 +g&BP$d/M5fa8WmR]Df5;YPtO#U]-kaR/W9JNW+_4K)U2tGlDgaE;j\QB`;N@@K'X5>5hY'sAj +;#X5h9`@ZW8cD9U8&.TF7Y+$[7`n3q8,GjS8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fHDuat\ +FEIM-rdFctreUQ5rf[8Jrgs+ari,n#rjDa;rkSNRrlb;frmh#$rn[S4roO.Crp9XPrpg![rq69brqcWk +rqucoqu26Jrr2fnrqucmrqcWg!VZ3epAX^`nc&"Vm/H5Jjo46Z+,ec*qpbPoQ]_#CtF[JmB/WW&[l +T)P,VP5^I?L]2o)IK"KjFT-7YD#S,IA,]p9?iF7.=T2A#;Z9Pm:]=2i:B!rd9(bdT8GG]H7Y+$[7Y+%q +7efLN8Gc!U9)_N`:&[ug:]=5j;Z9_r=T2M'?iFL5A,^0@C]8;PFT-RbIK"itM#ND5P5^jJT)PMaW<'3+ +!3cC0rk&0Frl>#]rm:Yprn7;,ro*k_JOnlnj%9,? +r_*#[r_iM6OT([ISc5;]WrB1# +ZMqK8^])+LbPoiedf.r!h#?72jSnBBlMg5NnG`"XpAXgcq#:-hqtp?krdk+Js8N#prVl`oqYp6jp\+[^ +rq??^rp]pTrp'LGroF(:rnRM+rmLekrlb;XrkABDrj)O+ri5sjrg`tUrfI,_LIgGsqb$i\pe:Z]r_EGgr_WSkr`&ks +r`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbVrh07jriQ:-Z2h30]DfSE_Z%aXci2Alg&Be+ +i;Vg:kl0lHmf)_To)A@^p\sseqYpBhrVlfDs+13$s+13$s+13$s+13$s7$'frr2lqr;QQlq>U0gpAX[_ +nc&"Vli-/JkPjH>hYu:/ec+"rcMki__Z%:K[f3Q2Xo>-qT`1J\Pl?dDNW+V1Jc:,tGQ)^`DuOSPC&V`D +@K'[6?N+.-=T2A#<;ohq;Z9Ml:]=,a:&[iE9A<'i8qBTc9'&\*9D_EX:&[oe:]=2i;Z9Vo<;oqt=T2M' +?N+=2@K'm +rosFJrpTjVrq$-_rqHEfrqcWkrr)`nJcGTHrr2oqrquclrqQTip]1*gpAX[_nc&"Vli-/JkPjH>hYu:/ +ec+"rcMki__Z%:K[f3Q2Xo>-qT`1J\Pl?dDNW+V1Jc:,tGQ)^`DuOSPC&V`D@K'[6?N+.-=T2A#<;ohq +;Z9Ml:]=,a:&[iE9=[ZG8qBTi9&iSA9__?]:B"&g;#XAl;uTbq5hk-?iFL5B)ZKCD#SAPF8gC_ +If=otK`6u1OoCUESGo2\V#ILqZ2qDB!4Mm@rkeZSrm(Mjrmh#&rndY5roa:Frp0RPrpg!Zrq??crqZQi +rql]nqu5"CJcC<$JcC<$JcC<$JcC<$nGiLerr)iorql]krqQKerq-3\rp]pSrp'LHro3q8rndY*rmUkm +rlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$r`/qsr_iVj +qb[8fr_WSiqbH]VdS,3cJP:Vgge@B8ohPK_r_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"ArbMLPrc8!^ +rd4]r!J#_"K`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lHmJcVSoD\C]p\t!f +qYpBkr;QZlrdk+Gs8N#srVl`oqu6Emq"OjarqHEarpp'XrpB^Mroj@@ro!e4rmq(trm1Scrl"fNrji$8 +ric="rhTOcrg<\Lrf@&7re19$rd=]hrc8!WrbVRIrac";ra5Y2r`fA)r`9"ur`&kpqbd5er_NMir_NDd +nkH>^JP:VgJP?&:ohG*Sr_WSiqb[8hqbmDmr`/qur`T5)ra,S2raPk;rb2:Hrc%jWrce?hrdb!$reUQ7 +rfd>Krh'1bri#h"rj2^:\H'2>^])1Nao9Wce,IqthYuI4ir80@lMg2MnG`%Yo`"Uaq>U6iqu6NmrVQTA +s+13$s+13$s+13$s+13$s7$'frqlZnr;QQlq>U0gpAX^`nc&"Vm/H>Mjo49=hu;@/fDa7ucMkrb`;[ON +])K,:Y5YF"U]-nbRf8TOO8b%9LAl`&IK"QlF8g1YDuOMNBDuKA@/aO4?N+1.>5h\(=8l8"5hb*?N+=2@/aa:B`;cGDuObUF8gLbI/\WrL&m$`repc: +rg!JOrh'1bri#h!rjDa:rkJHNrlP/brmUkurn@A/ro3q=rp0RNrpTjVrq-3`rqQKgrqcNirr)`nJcGTH +rr2fnrqucl!VuNkq>U0gpAX^`nc&"Vm/H>Mjo49=hu;@/fDa7ucMkrb`;[ON])K,:Y5YF"U]-nbRf8TO +O8b%9LAl`&IK"QlF8g1YDuOMNBDuKA@/aO4?N+1.>5h\(=8l8"5hb*?N+=2@/aa:B`;cGDuObUF8gLbI/\ZqLAm,1O8bFDRf8rYU].4kY5Yj.\cKR\ +!5JNOrlP/brmUkurn@A/ro3q=rp0RNrpTjVrq-3`rqQKgrqcNirr)`ndJndtJcC<$JcC<$JcC<$JcG6> +qu6Tnrquclqt^6brq-3\rp]pTrp9XIroO.U)\c0;A_#DFSbPolf +ec+8$h>ZC4jSn?Am/HDOnG`"Xp&=[aq>:$fr;QZirdk+Gs82fprVl`oq>pEfrV?Hdrq-3\rp]pTrp9XI +roO.ZC4jSn?Am/HDOnG`"Xp&=[a +q>:$fr;QZirmCass+13$s+13$s+13$s+14;s8N#prVQKkqYp6gpAX^`nc&"VmJc>Kk5OE?i;VO2f`':t +ci2/f_u@IN^&GDn2IB)Z??@K'[6?i+..>l.\' +=Sl2!lJ%.?iFI4@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$LB*A9 +O,s:'rg!JRrh9=eriQ1)rj;[_4qd'2+qcWo#qcEbtk#JrkJQ.2"LK*D9qc<\tqcNi# +qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP21S=b0_,=b0`;=n5bh>Ph\)?2It-@/aO4 +@/aU6AH$0>BDuZFD#SAPE;jtYGQ*!hIf=otM#N>3NrY@EPEZ!5rgj%_rhoasriuI2rk&0Frl+lXrm1Sm +rmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]mrr)`nJcG9?rr2fnrqlfoqZ-NmqYp9hp\smcoD\:Z +n,DYPl2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP211=b0_,=bg/N>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&K +DuO_TFT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_VuEdsZ2V32]DfVF`<"'$!6G/crmUktrnRM0ro*k>rosFJ +rpTjVrq$-_rqHEerqcWkrqucoqu4e=JcC<$JcC<$JcC<$JcC<$mJlt\rqucmrqcWirqQKdrq-3\rpTjS +rp0RJro=":rndY,rmh"qrlkA_rkn`Lrjr*:rilC&rhf[frg`tUrf[8Arf$i2re(3"rd=]jrc\9\rc%jS +rbMLJrb;7@rac";qdKJ3qd9#&nm1!TJR!b2JR%;Aoj.,pra5P1raG\5qdf\;rb;@HrbMLNrbqdUrc\9c +rd=]pre(3)rf$i;rfR8L!L]ATSGo2\VZ*XqYl;'0\c0>B_u@^Ubl6#hec+5#hYuI4j8SOn,DnW +o`"R`p\t!fqYpBkr:p8Bs7--arr2frqtgBjrqcWirqQKdrq-3\rpTjSrp0RJro=":rndY,rmh"qrlkA_ +rkn`Lrjr*:rilC&rhf[frg`tUrf[8Arf$i2re(3"rd=]jrc\9\rc%jSrbMLJrb;7@rac";qdKJ3qd9#& +nm/e2JR!b2LKsLXnm;<&qdBD3qdTG5ral(CrbDFJrbh^Rrc.p\rcnEirdXp"reCE2rf@&ArgEbUrh07f +ri?%&rjDa9rkABLrl5&`bQ,lddJh\qf`'b,i;Vd9l2L#Jmf)\So)A:\pAXgcq>U6iqu6Ngrlb=ms+13$ +s+13$s+13$s+145s8N#srVl`oqu6Hkq#:$eo`"FYnG_hSlMfoEj8Rs8g]#h(e,I_nbPoQ]_#D"G\c/o6 +Y5YL$U]-qcSc4rSPQ$XBN;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*sR@"D^:@"D_: +@.dt*@fBm7AH$0>BDuWECAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$jJSH5:Prh07cri?%%rj)O6 +rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEfrqcWkrqucoqu20Hkl:Y]rqulqquHZoqu6Hk +q#:$eo`"FYnG_hSlMfoEj8Rs8g]#h(e,I_nbPoQ]_#D"G\c/o6Y5YL$U]-qcSc4rSPQ$XBN;eY4KDpE# +IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*s0@"D^:@"D_\@.dt*@fBm7AH$0>BDuWECAr)LDuO_T +ErL.ZFoHaeIK"crKDpZ*N;en;PQ$mISc5;]U].=nYPtj,\c0;A_#DCRb5ou:!7:_orn%/(rnm_7roO.E +rp9OOrq$-]rqHEfrqcWkrqucoqu4\:JcC<$JcC<$JcC<$JcC<$kPtP\qu-NlrqcNfrqHEcrq-3ZrpKdQ +roj@Dro="9rnRM+rmLelrltG^rkeZLrji$9rilC&rhf[hrh'1Yrg3VGrf6u:reCE)rdXorrd4WircS3^ +rc.pVrbqdRrb_XNrbMLJqe?%Clt?<0gLYqIJRsCDj^n=$nn7i5rb;7ErbMLLrb_OMrc%jVrcA']rd"Ki +rdOirre(3)rf$i:rfI,GrgWnZ!29LgUAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTDmJcSR +nG`(Zp&=^bq>:$cr;QZlrdk+5s8N#qr;cfqr;QQiq>U-fpAX^`nG_kTmJc>Kk5OE?i;VO2g&BG!ci22g +`rN;eS2KDpB"If=]nH2_scFT-:ZE;jeTDZ4MPD#S5LCAV`E +B^BC2B";K(AV"EJAc$*1BDZBAC&;ZEC]8/LD>S5ME;jkVF8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&Z +UAh(iX8]@&[Jm`9^]).M`r=6^ciMSC!7Ll"rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`naT$hk +JcC<$JcC<$JcC<$JcFp5qu6TnrquZjrqcWhrq??`rpp'XrpKdMroj@Dro*k6rnRM(rmUkmrlY5[rkeZJ +rj_s7ric=%ri#girgs+Yrg!JHrf@&;re^W/rdk&urdFclrcnEdrcJ-\rc8!Xrc%jTrbhUMrbV.@rbBtt +JSB[LJSF+XqeGe>qeZ7KqelCOrc%jVrc8!ZrcJ-`rd"KhrdFcqrdk''reUQ4rf@&Arg!JPrgs+_!2ops +W;`jsYPtp.\c0;A_Z%RSb5T`de,Iqth#?10iVr!=kPj`Fmf)_To)A:\pAXjaqYpBkr;QZirdk+5s82cr +rVZ`prquZjrqcWhrq??`rpp'XrpKdMroj@Dro*k6rnRM(rmUkmrlY5[rkeZJrj_s7ric=%ri#girgs+Y +rg!JHrf@&;re^W/rdk&urdFclrcnEdrcJ-\rc8!Xrc%jTrbhUMrbV.@rbAcRJSB[LKPC0rU]-nbS,ScR +Pl?dDNW+k8L&Q`%JGt#sI/\EjGlDmcFT-@YErL(RE;jeTE;OS%DLl\VDLl]\DYnAOE;jeNE;jkSErL.Z +FT-I_GQ)meI/\QkJGt3#L&R#0NrG.>Pl@$KS,T&ZUAgthXT>Q+rilC-rjr*BrkSNQrlP/brmC_qrn.5- +ro*k:roj@Grp9XQrpg!Zrq69brqQKhrql]mrr)`nJcFX-rr)rsrVc]or;QTmqYp9hpAXaaoD\=[n,D\Q +lMg#Hj8S$:hu;:-ec*tqcMkuc`r0rU]-nbS,ScRPl?dDNW+k8L&Q`%JGt#sI/\Ej +GlDmcFT-@YErL(RE;jeTE;ORXDLl\VDLl^)DYnAOE;jeNE;jkSErL.ZFT-I_GQ)meI/\QkJGt3#L&R#0 +NrG.>Pl@$KS,T&ZUAh"gXo>R(ZMqH7^&GhH`r=*ZcMl5jeH+=T!8.;.ro*k:roj@Grp9XQrpg!Zrq69b +rqQKhrql]mrr)`n_Z,2eJcC<$JcC<$JcC<$JcFg2rr2]krqucmrqcWhrqHEarpp'XrpTjQrp0RHroF(: +rndY/rn.4trm1Sfrl+lRrkJHCrjMg2riZ7#rhf[frgs+Zrg*PJrfR2@rf$i6reCE*re(3#rdXorrdFcn +rd4Wjrd"Bcrce?bqfU5,JTQHbJTTIbrcS3`rce6ard"Khrd4WlrdFcprdXotre(3(reCE0rf$i;rfR2E +rg*PRrgs+^rhf[oriQ7+!O8p/[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4jSn?Ali-;Nn,DhUoD\C]p\t!f +qYpBkr;6Hirdk+,s8MuurVcTkrqucmrqcWhrqHEarpp'XrpTjQrp0RHroF(:rndY/rn.4trm1Sfrl+lR +rkJHCrjMg2riZ7#rhf[frgs+Zrg*PJrfR2@rf$i6reCE*re(3#rdXorrdFcnrd4Wjrd"Bcrce?bqfT#_ +JTQHbJTU[/rcS3`rce6ard"Khrd4WlrdFcprdXotre(3(reCE0rf$i;rfR2Erg*PRrgs+^rhf[oriZ7* +rjDa9rkJHLrl+l\rm(Mjrn.5(!T)Z5hYuI4jSn?Ali-;Nn,DhUoD\C]p\t!fqYpBkr;6Hirke\ds+13$ +s+13$s+13$s+142s7lTjrVl`oqYpN;e_6M#N/.K`6T#JbsrrIJ\EhHc^SbH@^BnHII3>Hh`!f +IJ\NnJGt-!K)UH&LAm#.MZ/S6NrG.>P5^jJRf8lWTDkVbVZ*[rYPtg-[fNtIrjr*CrkeZSrlP/crmLeq +rn@A-ro!e:roX4ErpB^Qrp]pXrq-3_rqQKgrqcNirr)WkJcFX-r;QZoqu-NlrqcWirqQKcrq-3\rp]pT +rpB^Lroa:Aro!e3rn@A$rmC_krlP/ZrkeZKrjr*rf$i6reUQ. +re19&qgnWordFZkqg55eJU2lnJU7!8rd4EfrdFZnrdb!!rdt-&reCE.reg]6rf6u>rf[8JrgNhWrh'1b +rhf[rric=,rjVmU6fr;QZi +rke\ds+13$s+13$s+13$s+14,s8N#prVl`oqYU*fp\smco`"C[nG_nUlMg#Hk5OB>hu;I2fDa>"dJhJk +b5TH\_>_4K]`,A=Zi70-XT#0tV>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=Q;It<*#It<+& +J+A-hJbt&rK`6])M#N81MuJb9O8b7?PQ$mIR/WZUTDkM_V>dFmXT#F&Zi7B5]E,[XrkABJrl>#]rm1Sk +rm^r!rn[S3ro3q>roj@HrpTjUrpg![rq69brqZHfqu$Hlqu20HfDbjNrr2fnrquclqt^6crq??`rpg!W +rpTjOroj@Dro3q7rn[S*rmh"qrm1Sdrl>#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9 +reg]2qh>$&rdt#uomj&lJU`6#JUdQHnpp^jqh"]ure:?-re^W4rf6u=rfI,Crg*PNrgj%\rh07eri#gt +ric=-rjMg=rkABJrl>#]rm1Skrm^r!rn[S3!TN)=ir8*>kl0lHn,DhUnc&1[p&=^bq>:$cr;QZlrkJJa +s+13$s+13$s+13$s+14)s8N#prVl`oqu6Hkq#:$epAX^`o)%nTm/H;Lk5OE?i;VU4g]#k)df.VmcMkoa +`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[RJrQPQ2ZsGOoCF@OT(:>NW+n9Mu/D2M>i>.LX1^+L4P)1 +L=V+YL]3,/M>N20MuJ\7NW+t;OT(=?OoCOCQ2[-LRJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^&YtM_86,i +rlG)arm:Ymrn.5(rndY4roF(@rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu20HdJs1Frr2fnrqucmrqcWh +rqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%V +rg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,XbMC]JVJ`1pkJd'reUQ1qhkB2rf$i9rf6u>rf@&@rf[8G +rg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rndY4ro=+BjoFQClMg/In,DnW +o`"R`p\sseqYpBkr;QZlrji&[s+13$s+13$s+13$s+14)s8N#prVl`oqu6Hkq>U0gp\sjbo`"F\nG_kT +m/H5Jk5OH@i;VR3gA]\&e,I_nbl5``a8WpS^](nF\Gio8Z2Us+X8]*tVZ*CjU&L\`SGo#WRJrTQQN!-J +PQ$aEOoCIAO8+b1NREc:N.Hq=N80BeNVJP5O8b7?OoCOCPQ$gGQN!6MRJr]TSc58\U&LkeVZ*RoXT#F& +Z2V01\Gj/?^AbqK`rX6$rlP/`rm:Yormq)&rn[S3roF(@roj@JrpB^Srpp'\rq69brqQKgrqcWkrquco +qu20HdJs1Frr2fnrqucmrqcWirqQKerq69_rpp'XrpKdProj@DroF(:rn[S-rmq(trm:YgrlP/[rk\TK +rk/6?rjDa1ric=%ri,morhTOerh'1[rgWnTrg<\NrfmDGrf[8CrfI,?pl>-/Y`+-lJW,/=rf$W3pl>?7 +rfI,Arf[8ErfmDJrg3VPrgWnXrh'1`rhTOjri,muric=+rjDa8rk/6Erk\TSrlP/`rm:Yormq)&rn[S3 +roF(@!U/_Ikl0rJmJcVSo)A:\p&=^bq#:*gqYpBkr;QZlrji&[s+13$s+13$s+13$s+14)s8N#mrVl`o +qu6Hkq>U0gpAXaao`"C[nG_nUlMg#Hk5OB>i;VU4g&BV&eGdhoc2Poc`W!dS^](tH])K2roj@HrpTjU +rpg![rq69arqQKgrqcWkrquZlqu20HdJs1Frr2]krqucmrqcWirqQKdrq69_rpg!WrpTjOroj@Dro3q8 +rndY-rn%/!rm:Yhrlb;[rkn`MrkABCrjVm5riuI+ri?$uri#gkrhBCarh07^rg`tVrgEbQrg3VMrg!8B +plb31^Q=#.JWPbNoo]$4plk]Brg*PMrg<\QrgNhVrgj%]rh'1`rhKIkri,mtric=+rj2U5rjr*CrkJHL +rl+l[rm(Mirm^qurn7;-ro!e8roX4D!UAqMlMg8OnG_tWo`"O_pAXjdq>U6iqu6NjrVQT)s+13$s+13$ +s+13$s+13$s4./KrqlZnr;6BjqYp6gpAXaaoD\=Xn,D\QlMfrFj87d6h>Z.-ec+%sci25hbPoT^_u@LO +^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I.gUALVYTDkGWSa;m-Rt7&[Rt7'sS*?I?Sc55XTD5)YU&Lhd +V#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA^])(K_u@aVb5TZdcN2A"d/M>ibl5]_`rd:cU]."9Tn/ngTn/omU&1S]U].(dV>d@hVuEXoWW&stXT#@$YPtg+ZMq92\,No:]`,YE +_#D:O`r='Ybl5oeciDSse^aZNrn7;+rndY5roF(@roj@JrpB^Srpg!Zrq-3`rqHEerqcWkqu$Hlq#5jE +cN!Y=qu6Tnqu$HjrqcWhrqHEcrq-3]rpg!WrpKdProj@DroF(;rnm_1rn7;&rmh"prm(MerlG)Yrl"fO +rkABErj_s9rjDa2rilC*riQ1$ri?$tri#^lrhfRhrhT=arh?WjJY@XgJYE(:qkEt_rhTFfrhfRjri#gq +ri?%"riQ1'riuI.rjDa7rj_s?rkABIrl"fUrlG)_rm(Mirmh#"rn7;+rndY5roF(@roj@Jrp9aUn,VtW +nc&.Zo`"R`p\sseqYpBhr;QZirjMiXs+13$s+13$s+13$s+13us8N#prVl`oqu6Hkq>U0gp\sjbo`"I] +nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^( +Xo>EsX8]-oWR@_rW.CmuW8+?HWV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofd +ci2>kdfA#$f\$2WrndY3ro*k:roa:Frp0RPrp]pWrq$-]rq69brqQKgrqcWkrqucoqu20HaT(o4rr2fn +rqucmrqcWirqQKerq69_rq$-Zrp]pUrp0RJroa:@ro3q7rndY/rn.5!rmLelrm(MdrlP/Yrkn`NrkJHF +rk&0>rjMg6rj2U0qlp('riZ7&riGmqri5amYc*,OJZ+-uri#Ukql9OoriH+$riZ7(qlp()rj2U3rjVm: +rk&0CrkJHJrkn`SrlP/_rm(MhrmC_orn.5(rndY3ro*k:roa:Frp0RPrpTsYnGr+YoD\C]p&=^bq#:*g +qYpBkr;QZlrilERs+13$s+13$s+13$s+13us8N#jrVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7 +hYu7.f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\Giu:[emK3[/73,ZLY9TY^s$0Y^s%?Yk>9o +ZMq3-[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'S)h>uKirnm_6roF(@roj@I +rpBUOrpp'\qtC$`rqZHfqu$?iqu20HaT(o4rr2Thrquclqt^-`rq??`rposTrp9XMroj@DroF(;ro!e4 +rn@A(rmq(srm:YjrltGcrlP/Yrl"fQrkSEGrk/6Brjr*=rjVm8qmHF1qm61*o!,a0JZs^0LTpHVos4S' +qm?@1rjMg8rj_s=rk&0BrkJ?GrkeZPrl+lYrlb;crm1SkrmLesrn.5(rndY3ro*k;roX4Drp0RNqsXOT +!VH!ao_\@]p\t!cqYU3frVQSus+13$s+13$s+13$s+13$s3grBrqlZnr;6BjqYp9hp\smcp&=U_o)A.X +mf)VQlMg#HkPjQAir7j7hYu:/g&BV&ec+%sd/M>ic2Plbao9B\`W!gT_u@IN^\bbE^&G\>])0&8\Ep]` +[Xkl<[XkmN[dpp#\Gj&6])KAA^&,PC^])%J_u@UR`W!sXao9H^c2Q&gd/MMnec+2"g&Bb*h>lF6hr"Fm +roF(ArosFIrpB^Qrp]pXrq-3_rq??crqQBerqlTjrr)WkJcEgko`+^cqu-NlqtpBhrqQKerq??arq-3\ +rp]pTrpB^Mroj@EroF(U0gp\smcp&=U\nc&"Vmf)POl2KiEjSn3=i;VX5hYu:/g&BS%e,Iemd/M>ic2PlbaSs6Z`W!gT +_u@OP_>(hF^])%J^](t3^#?VT]Rd_H]]d#p^&,PC_#D+D_#D1L_Z%IP`;[aTa8X3[b5TZbcMPufdf._p +f)F>$g]$(/hu;O6irS3#roO.ArosFJrpKdSrp]pWrq-3_rq??crqQKgrqcWkrquQiqu20H`W,B+rr2]k +rqucmrqcWirqQKerq??arq-*XrpTjSrp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#W +rl"fRrkeZNpqZmDrkSNJrk@X1^V#-1J\6lQm(N;1rkSNJpqZmFrkeZPrl"fTrl>#[rlY5brm(DfrmLep +rmq)$rnIG/rnm_5ro=">roX4Erp0ROrpTjUrpg![rq-U6iqu6NgrVQSrs+13$s+13$ +s+13$s+13$s2kZ:.i;Vd9jT+KFkii$1rp0ILqsaUVrq-3`rqHEeq"jmcqu-EkJcELbli6t`p&4mfq"k!brqHEc +rq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"trmLemqp58erltGdrlb;`rlOrUrl4iSdDXYS +J]!&VW5Hp!rl+cSprEBUrlY5`rlkAdrm(Mhqp>>jrmUksrn.5'rnIG.rndP1ro=">roj@Grp0ILqsaUV +rq-3`rq?Hgp]1*aqYU3frVQSls+13$s+13$s+13$s+13$s2k<9rqlZnr;6BjqYpaFVE`aFhRo +am$tIbP9<\c2Q#cci2;jdJhVoeGe"tfDaG%g&Bb*h>?+/iVqj9jo4HBkQ'lKlK\B7rpB^Rrp]pWrq$-] +rq69brqQKgqtg:$fqtp %APLeod +EI +412 0 0 122 386 72 cm +BI +/Width 1236 +/Height 366 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$L&Z`(JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCH(JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$L&Z`(JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCH(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$L&Z`(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCH(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$L&Z`(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcCH(JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$L&Z`(JcC<$JcC<$JcC<$JcCr6Jc>-;Jc:6"M>i)+q>Z$GJcG]KJc:B&Jc:6"oDX=@O8je2 +kPq%NJc:6"Jc=L)V>l8LJcE.Xc2N:nJc:6"QN$7NJcC<$W;l5`Jc5'9Jc1/uM>c]Jr;Z-_S,Ip:Jc1/uh>QU;^&NfdJcF!pm/G0+Jc1/uJc1o5m/I"`JcCE'])V@# +dJ\juJc()sT)@4=m/Ed[JcDPGo)A%Tjo'c.Sc"':M#@,JhYlg?JcE:\NrS\LdJ^ELJc()sJc,*:fDY(8 +ci8_!JcFX-q#9FSp&+(OlhZ2/Jbjro[/0.do)/(Wq#0mbJcD&9bl@S>l2CDTo)""7m.u;0Jbk#qp&"O^ +m/?VV[JtgX[f?7(l2CDToD8ObJbjupJbjromJ?MQq#'LWp&9OBbQ"78qu5jYq#'^[R/2C1JbjrofD>1; +q#'LWp&9pfp\3A8JbH):JbGH(lhBoCp%\O^n,!%\p&+L]q#5jEfDi&S +q#9j_qu$?gn+uqWqtSe;^\36PJbFZgg@t:8rqZ$ZrqlBdp&4[bmJhn?JcGTHq#9j_rquZjp%nR]rqPsV +rq?$Xht2KlJb4NcW:]lXq"FCTqtU0do(r@_qu$-cp&9OBZ2a"equ60brquHdqtg3crqQ0\qtBp[n+?)? +MXl>hJb#W-n+6#?rq5sXqtL!_rqZ6`qtp9gp&4R_d/S[sdJs+Co)8Rcp&"X_qt^6dp%S@Wqt9mZo^qVD +Jb#K)Jb"ilo^i"Pn+?VPp%J:WqtU0dp%nR_qu$-cp&9OBk5W'nqu60brquHdqtg3crqQ0\qtBp[n+?)? +[do"?Jb"B_q"!nFn+?VPp%J:WqtU0dp%nR_qu$-cp&=mhL&Z`(qZ$$_rquQgrqcWip%\O\p%J1Rrq,mT +ht$^9JanKbJaq1YfCJ_.q"4RYo(N(Xp%\O^qtgoT^[O%Npu]2q=4%Hrq#pWrq5sXp%\O^rqcEequ$$`rr.KKk5W0qrr2BbrquQgrqcWi +p%\4Rrq60\qt'LOl1)4OJae6[JaiI(m.'Z;rq#pWrq5sXp%\O^rqcEequ$$`rr2iqL&Zf*q#:'eq#($d +qtg:$fqtpU0dp\smcp&"C\oD\=Unc&%Nn,DbPmJH8Llhfu< +l&+\Uk^hrnkk438lMg,Em/HDLmecJMnG)PQo)A7Xo`"O_pAXg`q#:*dqYpBhr:p6crnRO)s5K +n,)VLnc&+YoDA1Zp&=[ap\Xabq>:$fqtpU0dp\smcp&"C\oD\=U +nc&%Nn,DbPmJH8LlhfuKn,)VLnc&+YoDA1Zp&=[ap\Xabq>:$f +qtpqrmV6pu[IqJ`VIEUuhC6p#l#3ros+Arp9XOqsOIQrpTjVqssaXrq-!Z +qtU0dqtgqrmV6pu]$HJ`VIEJ`Z[gpu_84p#uD>p$;VDrpBUN +rp]pUrpfmVrq$-]q"FU[rqZHfrqlTjr;HKjN;nt=qu69erquZjrqcWirqQBbrq??arq-3\rpg!WqsXOP +qsFCLqs47Hqs!n>qrdk=roNA)J`MCCJ`O)spu_S=o'#u9qs47JrpB^QrpKdTrpTaRrpp'[rq-3_rq??c +qtU0dqtgU0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&C +kl0`Djn7^0j7VDkiITs=iMtl-iqVR,jSn9?k4n0>l2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$f +qtpU0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&Ckl0]FjlHL( +p#Po.p#:P]UZ$d_Pi;2mrT!h9p#Q,6roX">rosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqHroNh6puD&, +\`&+uJ`21=ro*G-puD&.roO.Apuq_Arp'CHrp9XOqsOIQrpTjVrposYrq69bqtU0dqtgU0gp\smcp&=U_oD\=[nGD\Rmf)VQm/H;Ll2KoGkPjW@jo4??j7qX2iSWRE +i.9g;i2GT5iUu40j87p:jo4EAkPj]El2KuIli-;Nmf)_Tn,DhUnc&+YoD\C]p&=[ap\Xabq>:$fqtpMlMg#EkPOB?jS7a-i:Z")hLs^9h1=CU +h=]Y%ht#_#iqqg9jo4H?kl0lHli-8Mmf)\SnG_tTo)&(Yp&=^_q"X^_r;6Hcrp0T8s6Td_rq66hr:p-f +q"sg_p&=U_o)%tVnG_nUmf)SPli-2KkkjQ?jo4?9ir%a2i:Z")hLXLOh1=C?h=ob,hVS.eo&0<&qrIb< +roa1Brp'LKrp9XPrpTjUrpfmVqt0m\rqHU0dp\smco`"I]o)A.U +n,D_Rm/H>Ml2KoGkPOB?jSn0U9gr:U$frdk+&s8N#jrVl`lqtp3gq"sgbpAX^` +oD\=[nGD\RmJcJOli-/Jkl0cBjo4??ir7p6i;VX5hY#\'g[a(qfs]OafR_\+f_F+ug$dYog\'A!hYZ7. +iqqg9jo4HBkl0iGli-8MmJcSOnG`"XoD\CZpAXg`q#:'iqtgBjqu$-crr/DeR/d0bq#13iqtpBhrqZQg +rqHEcrq69_rposUrpTjSrp9XMrp'LHroa:CroF(Z!qq(;e +k1$6VJ^]2!^XM>pn(%Ehqq1\srnI>*qqh>1rnm_5ro*k;roO.Aroj@Grp0RMrpBUOrp]pWrq-3_rq??c +rqQKgqtg*qqh>1rnm_5ro*k;roO.A +roj@Grp0RMrpBUOrp]pWrq-3_rq??crqQKgqtgZ$ +qqV)*ro!e5ro!e7roF(?roX4DrosFJrp9XOqsXORrpg![rq69arqHEerqQTkqYg9iqtpU0gp\smco_\7Znc&%Wn,D_Rm/H;Lkl0`Djo4<>ir7p9i;VU4h>Z4/gA]e)f`'M%f)+"s +eGI_odeM5Ud"0Ppd"0QNd/25fdeM;jeGe"qf)F;#f`'Y)h#?./hYuF3i;;O5j8S0>kPj]ElMg,KmJcSR +nG_tWo)A7[o_\@]p\t!cqYpBkr;6Hcrdk+5s8N#or;llqrquZjrqcWirqQKerq??arq$-[rpg!WrpTjS +rp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$rmh"tqpYPmrmCDcl-GR=J^/hlXj6:Zo$IB`rmL\mrm^qt +rmq)#rn7;*rnRM0rnm_5ro*k:roF(?roj@Grp'LNrpTjUrpg!Yrq$-^rq??crqQKgrqcWkqu$6fqu66f +JcGECrr2]krquZjrqcWirqQKerq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$ +rmh"tqpPSodK%_pdIklNc[jB@c@O9-cKrjWd.>W`dJhSke,Ikrec+/!fDaJ&g]$"-hYuF3i;V^7j8S-= +jo4KCl2KuImf)\SnG_tWo)A7[p&=[ap\sseq>U6iqtpU0g +p\smcp&=U_o)A1Yn,DbSm/H>MkPjWCjo4<>iqqX4h>Z4/g&BY'f)F5!eGI\ndJhJkd/M>ic1oN[bPoY8 +aaqQbad^ELb5TTZbl5ldcMl2ici2>hdf._pec+/!fDaJ&h#?.,hu;U6j8S0>k5OQCli-8Mmf)\Snc&+Y +o`"O_pAXgcq#:*aqt9perq-5As7lWnrq66bqu6Ejq#:$epAXaao`"F\nc&"Vmf)SPli-)Hk5OKAj8S'8 +hu;I2h#?"+f`'J$ec+(qdf.Ynci28lcHZF8rlt5^qoeu]J]X8#J]WVfrQ5/`b5TTZbl5ldcMl2ici2>h +df._pec+/!fDaJ&h#?.,hu;U6j8S0>k5OQCli-8Mmf)\Snc&+Yo`"O_pAXgcq#:*aqt9perega8s8N#j +rV69hq>U0gp\smcp&=U_o)A1Yn,DbSm/H>MkPjWCjo4<>iqqX4h>Z4/g&BY'f)F5!eGI\ndJhJkd/M>i +c1oN[bPoYdaaqQbaaqS&ans6[bP9<\c2Q#fd/MAjdJMAke,Insf)F;#g&Be+h>?+/iVqm:jo4EAkPjfH +m/HGPn,DkVo)A:\p&=Xcp\+[^rqQKgq"sa_rr/_nU&Y,kq#1*erqcWirqQKerq??arq-3ZqsXOOrp9XL +roj@DroF(;ro!e5rn[S/rn@A(rmq)!rmLenqp>>gqp,2crlk8_qo\fXlc4RsJ]E>^]#X]hrlOrXpriZ] +qp,)brm:YlrmLeprmh#"rn7;*rn[S1rnm_5ro*k;roX4Drp'LKrpB^RqsaLTrq69brqQKgqtgZ1.gA]b(ec+(tdf.Vj +ci25hc2PrdbPoZ`anWpU`r!a&`3I42_h#_N_p64"`V[[Ma8X3[b5TT`bl5ldcMl/ed/MJme,Insf`'S' +g]$%.hYZ71j8S0>kl0iGlhg,InG`%Yo`"R`p\ss_qYU3frVQTgs+14Is8N#jrVl`iqYp9hp\smco`"FY +nG_nUmf)POlMg#Hjo4<;i;VU4h>Z1.gA]b(ec+(tdf.Vjci25hc2Prdb5oc.!6Y;_prEBRqo-t$J]#OG +J]#"8cG]_$!64rVprEBUrlY5`rlkAdrm(Mhqp>>jrmUksrn.5'rnIG.rndP1ro=">roj@Grp0ILqsaUV +rq-3`rqHEeq"jmcqu-EkNW8,?rr2ThrquQfrqQKerq??`rposUrpTjSrp0RKroj@CroU-fpAXaaoD\=XnG_hSli-,Ik5OKAir7p9hu;L3g]#n*f)F1ue,I_kci22gbl5fbao9B\`r!aS +`;%4H_kdf.bqec+2"g]$"-hYuF3iVqj9jo4HB +kl0oImJHDPo)A7[p&=[ap\sseq>U6iqu6NjrVQSFs7H?jrqQHkr;QQnq>pHhrqZQgrqHEcrq69_qsj[S +rpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`Pqn`0FrkJHJrkJHHl+NLt +J\6QHYe9>9qnE'FrkJ?Grk\KKrkn`Rrl+lWrlP/^rltGfqp>>jrmUktrn.5)rndY3ro!e9roO.ArosFJ +rpKdSrp]pWrq-3_rq??crqQKgrqcWkrquQiqu6QoJcG`Lrr2]krqucmrqcWirqQKerq??arq-*XrpTjS +rp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrk\]P_>V4I_#D+J_#D+J^?N=^ +]W\u!]UHM"^&>YG^:sT^rkJ?Grk\KKrkn`Rrl+lWrlP/^rltGfqp>>jrmUktrn.5)rndY3ro!e9roO.A +rosFJrpKdSrp]pWrq-3_rq??crqQKgrqcWkrquQiqu2fZkl:Y]q#13irql]krqZQgrqHEcrq69_qsj[S +rpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`Pqn`0FrkJHJrkJHHl+P'K +J\6QHKY6ZbqnE'FrkJ?Grk\KKrkn`Rrl+lWrlP/^rltGfqp>>jrmUktrn.5)rndY3ro!e9roO.ArosFJ +rpKdSrp]pW!VH!ao`"O_pAXgcq#:*gqYpBkr:p6friQ3us7lQlr;6Bgq>U0gpAXaao`"F\nG_nUm/H;L +l2KiEjSn0_@O`;[aTa8X0Zao9N`c25iddf.bqf)F;#g&Be+h>Z@3ir8'=k5OWEli-;Nn,DkV +o)A:\p&=[ap\sseq>U9gr:p5As7cQmrq66hqu6Elq#U#[rlY5brm1SjrmUksrmq)&rnIG/ro!e9roF(ArosFIrpB^Rrp]pX +rq$-^rqHU0dp\sjbo`"F\nG_kTmJcDMkl0cEjSn0_7L^\b_D]_f>?])0&;\F6oA[Xkl<[XkmU\,3]7\biu; +]DK8?^&GeG_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+hYuI4j8S-=kPj`FlMg2Mn,DeWo'ueO +rq$-^rqH +rk&'?qnDsCrkn`Rrl>#[rlY5brm(MirmC_prmq)%rnIG/rnm_6ro="@rosFJqsOIQrpg!Zrq-3aqtU'b +rqlKhqu20H!<<&tp&4mfrqcTh!VuQgp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$df.Vmci22g +bPoW_`W!gT_Z%@J^](nF]DfD@\Giu:[emK3[/73,ZLY8aY^s$0YcY/&Z1YF%Zhq-/[JmW6\,No:])K>@ +]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6Hi +rW)tOs8N#jrVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$df.Vmci22gbPoW_`W!gT +_Z%@J^](nF]DfD@\,j(J!4Vs9qmHF1qm61*o!*bMWN^rXQa$.fpTah*ZMq3-[/RK4[f3c8\Gj)=]DfJB +^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnWo_\@]p\t!cqYU3frVQS[ +s6fpdrq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b(f)F+sd/MAjc2Pocao99Y`;[XQ +_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z+mMoY^s$0Yk>9oZMq3-[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP +`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Lmf;hUo)A:YpAXgcq>:$cr;6HirilF,s8N#m +rVl`oqu6Hhq>U-fpAX^`o)A1Yn,DbSli-/Jk5OH@ir7m8hYu=0f)F1ue,I_ncMl&eaSs3Y`;[UP_#D(I +]`,MA\c0&:[JmQ4ZMq-+YktX!Y5#-kXF[I(XF[IdXS]-mY5Y[)YPYR'Z2V'.Zi7B3[f3c8])K>@^AbnH +_>_=N`W!pWao9Qaci2;je,InsfDaS)hYuI4ir8$U6iqu6NjrVQSH +s8N#prVl`oqu6Hkq>U-hpAt$_rq69_rq$-Zrp]pUrp0RJroa:@ro3q7rndY/rn.5!rmLelrm(MdrlP/Y +rkn`NrkJHFrk&0>rjMg6rj2U0qlp('riZ7&riGmqri5amMPu*)JZ,BCpo4.jqlB^triQ1&ric4'riuI/ +rjDa7rj_s>rk8rjMg6rj2U0qlg+)Y5kd*Y5YR&XSAjqWq`QEW1^)?W/dhOWVrgt +WiGrsriH+$riZ7(qlp()rj2U3rjVm:rk&0CrkJHJrkn`SrlP/_rm(MhrmC_orn.5(rndY3ro*k:roa:F +rp0RPrp]pWrq$-]rq69brqQKgrqcWkrqucoqu2o]mf3:cqu-Nlrql]krqZQgrqHEbrq-3]rpg!WrpTjP +rosFFro=";rnm_3rnIG)rmUkprm1Shrlb;_rl+lSrkSNJrk/6Brj_s9rjDa3rj)F*ric=(riQ1$poFCo +po1^#JZ+-uJZ/@Bpo4.jqlB^triQ1&ric4'riuI/rjDa7rj_s>rk8U6iqu6NmrVQSus02OrrVl`oqtp3gq#:!d +o`"I]nG_nUmf)MNkl0cEj8S$:hu;F1gA]b(e,Iboci2/fao9?[_u@LO^](nF])K8>[f3Z5Zi76/Yl:j* +XS]'tWrB!pW;ELYVLbUqVLbVOVZ*LgW;*ClXT#@!YPtd*Z2V-0[JmZ7])K>@^AbqI_u@URaSs?]c2Q&g +df.bqf`'V(h#?41iVqm:kPj`Fli->On,DhUoD\F^pAXgcq#:*gqu6NdrIb.FrVQKkqYp9hpAjmfp@eLX +rq$-[rp]pTrp9XKroa:Bro*k6rn[S,rn%/!rm:YirlkA_rl+lSrk\TKrk8JY@Xg[\;iXrhK7arh]Ukrhoapql9XrriZ7(riuI.rjDa7rji$ArkJHKrkn`T +rlG)_rm(Mirm^qurn7;,rnm_6roO.BrosFKrpKdTrpp'[rq-3`rqHEeqtg_@O`r='Ybl5oed/MPof)FA%h>Z=2iVqsI(cUZS;lTn/ngTo,Q+UAgq_V#I4iVZ*LmWV`^pX8]:$YPtg+ZMq92 +\,Nr;^&GeG_>_@O`r='Ybl5oed/MPof)FA%h>Z=2iVqs#Wrk\TL +rk8uUqkF(bqkX+drhoaqri?%# +ric=*riuI0rjMg9rk/6DrkSNMrl4rYrlkAdrm:Ynrmq)%rn[S2ro!e;roa:Frp9XOqsaUVrq-3arqQKg +rqcWkrquQiqu2QSrr2fnrquZjrqcWgrq6?b!VQ-boD\=Xn,D\QlMfrFj87d6h>Z.-ec+%sci25hbPoT^ +_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I.gUALVYTDkGWSa;l:Rt7&[S$ngNSGSlVT)5/TT`1Ya +U].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Z +p&=[ap\XgdqtpZ.-ec+%sci25h +bPoT^_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I+iU7qX^qk3_VrgrnUm$rWrZC?E7TUY29qjd_Y +!M5n[TD5)YU&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA^])(K_u@aVb5T]cci2Alec+;%h#$%/jSn<@ +lMg/In,DkVoD\F^pAXg`qYpBhr;QZlrga#Ys8N#prVl`lqu6Hkp\smcp&=R^o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:iU]."bT_P/YT(nlCSB.1NRt7&d +S*?I?Sc55XTD5)YU&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA^])(K_u@aVb5T]cci2Alec+;%h#$%/ +jSn9BlKSB7rp9ONrpg!Zrq69arqH#VrkSNHrk&0i;VU4g&BV&eGdhoc2Poc`W!dS^](tH])K2kl0lHn,DhUnc&1[p&=[aq#:*g +qYpBkr;HQprVcWmQ2gj_q#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4rn7;&rm^qorltGc +rl+lSrkJHHrjr*U6iqu6NjrVQSds7cQmrqQHkr;QTmqYpEqiUl=rfI,?rf6l8nr1GDJW#);LPtMXrf-f8rfI,?rfI,Arf[8ErfmDJrg3VOrgWnXrh'1`rhKIh +ri,muric=,rjDa7rk/6Erk\TRrlP/arm:Yormq)'rn[S3!TW2?j8S3?kl0rJmf)_To)A7[p&=^bq#:*g +qu6NjrVQT)s1/1/rqlZnr;QTmqYpZ1.f)F.tci2/faSs0X +_#D(I]`,>MU.1NMtN&+ +NVeb5O8G%9P5^aGQN!6MS,SuUTDkSaV#ICnXT#F&Z2V-0[f3r=^AbtJ`r=*Zc2Q&ge,Iqtg]$%.i;Vd9 +k5OTDm/HDOnG_tWoD\F^p\sseq>U9gr;QZlrg!N_rqlZnr;QTmqYp9hp\smco`"C]n,2YRm/H;Lk5OE? +i;VU4g]#k)df.VmcMkoa`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[RJrQPQ2ZsGOoCF@OT(:>NW+n9 +Mu/D2M>i>.LPLV8L4P)NLAlu-M#N8.MZ/P5N;eh9NrG.>O8b:@P5^aGQi_FQaSsKad/MJmf`'V(hYuI4jSn<@lMg/In,DnWo`"R`p\sseqYpBkquHZrrVcWmQ2gj_ +qu-Nlrql]krqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Marl+lQrkABDrj_s5rilC)ri,mo +rhKIcrgs+[rgEbPrg!JGrfR2@rf@/@NW>+=NW+n9Mu/D2M>i>.LOk2NL4P)8LAlu-L]E84M2D+erepc7 +rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJrl+lXrm(MirmLeurn@A.ro!e: +roX4Frp9ONrpp'\rq??crqQKhrql]mrr)`nTE"Zcrr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LFro="9 +rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7 +qhkB0reUH,Z\F$cJVJ`1nqR.!reUQ1qhkB2rf$i9rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7) +rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rn[\6huM^7jSn<@lMg/In,DnWo`"R`p\sseqYpBkr;QZlrji'A +s8N#mrVQKkqYp6gpAXaaoD\=[n,D_RlMg#HjSn0"d/M>ibl5T\_u@FM]Df8@" +V#I+fTDkD\RJrQPPQ$aBO8b.i>.L&6Q#KDpJjJUrB'JUrBfJb=WoKD:-!L&Ql,M#N81MZ/P5 +NW+t8OT(ICPl@*MS,T#YTDkSaV#IFoY5Y[)[/RQ6]DfSE_Z%ORbl5oed/MVqg&Bh,hu;X7jSnBBlMg2M +n,DkVoD\F^pAXg`qYpBerL!WarqlZnr;QQiq>U-fpAX^`nc&"XmfDnGrp'LHroX4>rnm_2rn%/"rmC_k +rlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUH*re19&qgnEjKR\Q&JUaAC +npp^jqh"]ure:?-re^W4rf6u=rfI,Crg*PNrgj%\rh07eri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r! +rn[S3ro3q>roj@HrpTjUrpg![rq69brqZHf!;ucmrr)`nT)\fhqu-NlrqcNfrqHEcrq-3[rp]pUrp'LH +roX4>rnm_2rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUK+ +!/:E*rdt#uomhUCRX]m#]rm1Skrm^r!rn[S3ro3q>roj@HrpTjUrpg![rq69brqZHfqu$Hlqu3GlqZ$Qoqu-Nl +rqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[ +rg<\Mrfd>Crf@&=repc5reUH*re19&qgnEjY^_4RJU`6#omcO_rdjruqh4s&reUQ1repc9rf@&?rfd>I +rg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TSrlb;ermC_prmq2,h#Q:1i;Va8k5OTDlMg8OnG_tWo`"O_ +p\t!cqYU3irVQT/s1eU5rqQHkr;QTmqYp"dJhGjbPoT^ +_Z%:K]Df5;ZMq',WW&gpV#I%dSc5,XQi<6HOT(7=MuJS4M#N2/L&Qc)KDpH$JG"EXI=ZftI=ZgUIK"]j +J,=cnK)UE%K`6])L]3,/M>iM6NrG.>P5^aGQidFmX8]=%ZMq92]DfSE_Z%XUb5T]cdf.hs +g&Bh,i;Va8k5OTDlMg5NnG`"Xo`"O_p\t!fqYpBerL +roj@Dro="9rn[S-rmh"rrm1Sdrl>#UrkABCrjVm3riZ7$rh]Uhrh07\rgEbPrfd>Drf@&:reg]3re:?) +re(3$rdautrdO`mrd=Kfrd'?FJU)flTm?W`qg83frdFZmrdXotrdk'$re19)re^W3repc:rfR2Drg3VP +rg`t\rhKIhri?%$riuI3rjr*Crkn`UrlY5drmLerrn@A,ro!e9roX4Drp9XPrp]pYrq69arqQKgrqZWl +!W2cnr;6Hlrh9AkrqlZnr;QTmqYpi5.K`6W'JH::O!.b&urdO`mrd=Kfrd'-@SU#d3 +Mg>;Jqg/JrgEbUrh07crh]UpriZ7*rjVm#\rm1Slrmh#%rnRM2ro="?roj@JrpKdTrq$-^rq??drqZQirql]mqu-NnV>pMorr2fnrqucmrqcWi +rqQKdrq-3]rp]pTrp9XJroX4?ro!e3rn@A%rmLelrlY5\rkn`Lrjr*U0gpAX^`o)A.Xmf)VQkl0`DjSn*: +h>Z.-ec+"rci2)d`rC#V#I(eTDk>ZR/WBMOoCF@NW+h7M#N/.KDpK"JGt&tIf=`f +HiA?dH1Z?4G_(*jGf+e!H2Dp_Hi&3iIK"]pJ,XutJc:<$K`6c+M>iG4O8b:@P5^dHRJrcVTDkSaV>dOp +Y5Y[)\,O#=^])+La8X6\ci2Dmf)FG'h>Z@3jSn?Akl0uKmf)_To)A=]pAXjdq>U6fr;QZlrhTSnrqQHk +r;QTmqYp9hp\sgao)A.Xn,DYRlN->;roa:Aro!e4rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sprh07^ +rg`tRrfmDErf@&;reg]0re19'rdautrdOiprd=]lrd+Qhqfr*arc\0]LNJ)hJTRK*rcS3`rce6ard"Kh +rd4WlrdFcprdXotre(3(reCE0rf$i;rfR2Erg*PRrgs+^rhf[oriZ7*rjDa9rkJHLrl+l\rm(Mjrn.5( +rndY4roF(Arp0RNrpTjUrq$-]rqHEfrqZWl!W2cnr;6HirhoeqrqQHkr;QTmqYp9hp\sgao)A.Xn,D\Q +li-)HjSn*:hYu:/f`':tci2/f`W!aR^](eC[f3Q2Y5YI#VZ*7fT)P8ZQN!-JOoCF@N;e_6LAll*KDpE# +J,XorI0"_C!.=cmrd+Qhqfr*arc\0]JTRH)JTQ]ircS3`!-\HfGPcXaH2`-hHiAElIK"]pJ,XutKDpT( +LAm)0N;en;OoCUEQN!ERT)PD^VZ*RoY5Y^*[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4jSn?Ali-;Nn,DhU +oD\C]p\t!fqYpBkr;6Hiri#hss8N#mrVl`oqu6Hkq#:$eo`"F\nG_nUm/H>MkPjQAi;VU4g]#k)dJhJk +bl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniRPl?gEO8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpd +G5HEgFFeObFFeQ)FT-F^G5c^_GlE!fHN&9jI/\QnIf=irJGt3#L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hf +WW'("Z2V01\c0AC_Z%ORbl5oed/hnP!8.;)rndY4roF(Arp0RNrpTjUrq$-]rqHEfrqcWkrquZlqu4J4 +_Z0W7qu-Nlrql]krqZQgrqHEarposUrpB^MroO.>rnm_1rn7;%rm:YgrlP/Wrk\TJrjMg4ric=&rhoai +rh'1ZrgEbLrfR2?reg]1re:?&rdautrd=]lrd+Qgrc\9`rcJ$Ypi?.LoPfA#JT-0Z_f59gnoFVLrcS3` +rce?erd4WlrdOirrdk'#reCE.repc:rfR2DrgEbUrh07brhoasric=-rjMg>rkSNNrlb;drm:Yqrn7;, +rnm_7roO.Erp9OOrq$-]rqHEerqZQirqlTkqu3Mnrr2fnrqucmrqcWhrq??arq$-[rpTjQrosLI!U/bH +j8S$:hu;:-ec*tqcMkuc`r0rU]-nbS,ScRPl?dDNW+k8L&Q`%JGt#sI/\EjGlDmc +FT-@YErL(RE;jeTE;OR2DLl\VDPV1IDuO_TDtn;NEVjeUF8g:\G5c^bH2`3jIJ\QoKDpT(MuJb9OT(LD +QidUrYl:s-])KDB_#D@Qao9TbdJh\qf`'e-iVqm:kl0iGm/HJQnc&.Zp&=^bp]1-kqYL3g +rqucoqu3Mnrr2fnrqucmrqcWhrq??arq$-[rpTjQrp'LHro=":rnm_-rmh"qrm(Mcrl4rQrk8Pl@$KS,T&ZUAh"gXo>R(ZMqH7^&GhH +`r=*ZcMl5jec+5#hu;U6j8S9Al2L&Kn,DkVoD\F^p\sseqYpBkr;QZlri#hss8N#prVl`oqu6Hkq#:!d +p&=R^o)A+Wm/H;Lkl0WAiVqa6f`'G#dJhGjb5TE[_#D%H])K#7YPt['V>d7hTDk>ZQi<6KOT(7=MuJG0 +KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDmjP7DLl\VDYS,HDuO_TDtn;NEVjeUF8g:\G5c^bH2`3j +IJ\QoKDpT(MuJb9OT(LDQidUrYl:s-])KDB_#D@Qao9QddEqsArmh##rnm_6ro="ArosFK +rpTjVrq$-^rqHEerqcWkrqucoqu4J4_Z0E0qtpBhrqQKerq??_rpp'WrpB^Mroj@Bro*k5rn7;%rmLek +rlY5[rkSNHrjr*7ric=&rh]Uhrh'1Zrg3VJrfI,_.I\c0#9YPtU%W;`OjT)P5YQ2[!H +O8b+;M#N,-Jc:/uIK"QlGlDpdFT-@\ErL%WDu4GOD>S/HCOp5OC4U,hCAr#DD#S;KDZ4SRE;jnWF8g:\ +GQ)meHN&?lJ,Y#uL&Qo-N;en;P5^aGS,T&ZUAh+jX8]=%[Jm`9^&GkI`W"!Yci2Alec+>&hYuL5k5OTD +lMg5NnG`"Xp&=[apAk!iq>($drqlKhVuQPjrql]krqZQfrq??arpp'XrpKdNroj@Dro*k5rnIG&rmLel +rlP/Zrk\TIrji$9ric=%ri#gjrgs+Yrg!JHrf@&;reUQ-rdk&urdFclrcnEdrcJ-\rc8!W!H2lVDu4GO +D>S/HCOp5eC4U,RCAquKD#%oHD>S5MDuO_TErL.ZFT-L`H2`-hIK"`qJc:B&M#NA4O8b=AQ2[9PTDkSa +W;`jsYPts/\c0;A_>_FQao9Wcdf.erg]$(/iVr!=kl0lHmf)_To)A=]pAXgcq>U6iqtU,grrE)orVl]n +qYpi;VO2g&BG!ci22g`r +N;eS2KDpB"If=]nH2_scFT-:ZE;jeTDZ4MPD#S5LCAV`EB^BC2As6eWAV"EpAc$*1BDZBAC&;ZEC]8/L +D>S5ME;jkVF8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+ +i;Vd9k5OTDmJcSRnG`(Zp&=[cq#US5ME;jkVF8g=]H2`0iIf=ir +KDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTDmJcSRnG`(Zp&=^b +q>:$cr;QZlrilD'rr)osqu-NlrqcNfrqHEcrq-3ZrpKdQroj@Dro="9rnRM+rmLelrltG^rkeZLrji$9 +rilC&rhf[hrh'1Yrg3VGrf6u:reCE)rdXorrd4WircS3^rc.pVrbqdRrb_XNrbMLJqe?%Clt?<0^L_t- +JRsCDqe#D3qe5tCqeH+GrbVRNqelCPrc.pYrcS3crd4WnrdXp"reCE2rf6u>rg3VRrh'1arhoarrilC0 +rji$Crkn`T!R8jhc2Q)hdf.r!h#?72j8S3?kl0uKn,DhUo`"O_p\t!cqYU3irVQT8s2G$;rqlZnr;QQl +q>U0gpAX^`oD\7Ymf)SPkl0]Cir7j7g]#k)dJhJkbl5Q[_>_1J[f3W4YPtO#V#I%dSGnlSP5^OAMuJP3 +K)U<"If=WlGQ)aaErL(XDuOYRD#S5LC&VfFBDZ9;AG'I&@Y&!>@Y&"%@eF7+AH$0;B)ZHBB`;`FC]82J +DuObUErL4\GlE$gJ,Y#uK)UT*MuJe:P5^gISGo2\V#I:kYPtm-[f4#?_>_CPbl5oedJhbsg]$+0iVqs< +kl0oImf)_ToD\F^pAXjdq>U6fr;QZlrilG%rr2lqr;QTmqYp9hp\sgao)%qUmJcDMjo49?hZ;WlrnIG( +rmUknrlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^PrbDFGrb)+> +rabn9raPG,LL>[@JRG'WojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!#reLK3rf@&Brg*PS +rh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]!;?Ngp\t!fqYpBkr;QZlrilG% +rr2lqr;QTmqYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1M]QN!*I +O8b+;M#N&+JGsurHiA0eFT-=[E;jbSD>n;LB`;ZBAH6<@AG]m9@e*rY@%C\V@#/4e@JjR2@fBm7AH$0> +BDuWECAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$mISc5;]U].=nYPtj,\c0;A_#DCRbPolfe,Itu +g]$+0ir8'=lMg/InG`%Yo`"Uaq>U6iqu6NmrVQSurrN,u!<2urrqucmrqcWhrqHEarposUrpB^MroO.> +rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jSrb_XL +rb2:Dqdob;qd]V7nmSk4JRF%:JRJ%VojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!#reLK3 +rf@&Brg*PSrh07cri?%%rj)O6rk8U6iqu6NjrVlf&s8N#prVl`oqu6Ejq#:$eoD\=[ +n,D_RlMg#HjSn*uKirn.5#rmC_hrlG)WrkABCrjDa/ri5sqrh07\rg<\Jrf@&;reCE)rdXoorcnEc +rc8!Wrbh^NrbDFGrau.@rac";qdKJ3qd9#&nm.GaJR!b2X^(O)nm;<&qdBD3qdTP8ral(@rb2:FrbMLN +rc%jWrc\9crd4Wore(3)rf$i;rf[8Jrg`t\rhoarric=/rji$Brl"fWrlkAhrmh##rndY5roF(Brp'LM +rpTjVrpp-a!Vc?fq#:*gqu6NjrVlf&s8N#prVl`oqu6Ejq#:$eoD\=[n,D_RlMg#HjSn-;hYu1,ec*tq +bl5]_`;[LM])K,:YPtR$VuE@gSGnoTP5^OAN;eS2KDpB"HiA9hG5cO]E;jbSC]8)JB`;WCAc?6>@KBnG +rF,\5qd9#&nm-fOWEb!ZQX'2hpKmc(ra5P1raG\5rac">rau.Crb;@Irbh^Src8!]rcnEhrdXp"reCE2 +rf@&Arg<\Trh07gri?%%rjDa9rkABMrlG)_rmC_qrn.5,ro*k;roj@HrpB^Rrpg!ZrqHEerqZQjrquZl +rr08(rr)rsrVc]or;QTmq>U0gp\sd`o)A+WmJcDMkl0ZBiVq^5f`'G#dJhAhaSs-W^Ab_C[JmB/WrApq +T`1J\R/W9JO8b+;LAli)J,XfoGlDmcErL%WDZ4GNCAqoGB)ZB@AH$'8@K'[3?hIar?,'Wq>_-.2>kMCn +?N+=/@/aU3@fBp;Ac?<@B`;`FC]85NE;jnWG5cacHiANoKDpW)N;en;P5^jJSGo2\VuEarYPts/\c0;D +`5DYorlG)_rmC_qrn.5,ro*k;roj@HrpB^Rrpg!ZrqHEerqZQjrquZlrr1"=aT)8=qu-Nlrql]jrqQKe +rq-3\qsXOMrosFDro3q7rn7;%rmC_irlG)VrkJHDrjDa0riH*trh07\rgEbKrf@&;re:?'rdXoorcnEa +rc%jSrb_XLrb2:Drac"eQ_0@oj.5sra>_4qdBD5qdf\>rb;@Irbh^R +rc.p\rcnEhrdXp!re:?1rf@&ArgEbUrh07fri?%&rjDa:rkJHMrlG)`rmC_qrn7;.ro3qn(df.Sl +aSs-W_#CtF[f3Q2XT#-sUAg__R/WP20`=b0_,=fkit>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K)MuJe: +PQ$sKSc5A_VuEdsZ2V32]DfVF`W!sXci2Dmf)FJ(hYuL5kPj`Fli-APnc&+[p&Xm\rqHEerqcWkrquco +qu4/+rr2fnrqucmrqcWhrqHEcrq$-ZrpTjProsFFro*k6rnRM(rmLelrlG)WrkSNFrjMg2riH*srhBC_ +rg<\Krf@&:reUQ)rdXoprce?`rc%jTrbVRKrb)4Brabn7ra5Y4!FK16?iFC/?2e+">P20N=fGPT=dN:^ +>5DJ$>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtYGQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L( +[f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#Jn,DkVoD\I_p\sseqYpBkr;QZlrji(.rqu]prVl`oqu6Hk +q#:$epAX[_nc&"Vli-/JkPjH>hu;F1f)F+sci2#b`;[RO]Df8k2+l>/+3k=b0_,=n5bh>Ph\)?2It-@/aO4@/aU6 +AH$0>BDuZFD#SAPE;jtYGQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L([f3l>^q]rcrl+lXrm1Smrmq)( +rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]mrr)`nbQ#ccrr2fnrqucmrqcWhrq??arpp'YrpTjQrosFE +ro*k5rnIG&rmLelrl>#VrkJHCrj;[.ri5sorh07[rg*PHrf-o5re(3#rd=]jrcA'ZrbqdPrb;@Erac"; +raGe6ra5Y2r`o>)qcWeunlPHaJQ@>&JQBHboiL]dr`T#$ra,S2ra>_6raYq)f`':tci2/f_u@IN^&GDn2IB)Z??@K'[6?i+..>l.\'=Sl2!BDucIDuO_TFoH[cIK"crK`6c+O8b=AQ2[?RU&LkeXo>U)[/Rc< +_#D7Nbl5oedJhetg]$.1j8S3?kl0uKn,DhWoE"UVrq69bqtg_6rac">rb)4I +rbqdTrcS3crdFcrre19+rf@&Arg!JRrh9=eriQ1)rj;['r`K&!r`8/]^Job` +JQ.2"k#M:Zr`Au!r`T,'ra#M1ra>_6rac">rb)4IrbqdTrcS3crdFcrre19+rf@&Arg!JRrh9=eriQ1) +rj2^>]`>bF_#D7Nbl5oedJhetg]$.1j8S3?kl0uKn,DkVo`"O_p\Xgdqu6Qkrlb>bs8N#prVl]nqYp_+H[JmH1Xo>-qU&LY_QN!'HO8at7K`6N$I/\Bi +FoH@ZDZ4JOBDuNBAH$$:@/aL3>l.b)=oMP#=8l7elJ(/?iFL5 +AH$3?B`;iIDZ4VSG5cacI/\ZqL&Qo-NrG4@QN!KTU&LnfXo>U)[Jml=_>_FQbPoiedf.r!h#?72j8S6@ +lMg2Mn,DkVp&=[ap\t!fqYpBkrVQT)s7lQlqu6Hkq>U-fp&=R^nG_kTm/H/HjSn-;h>Z(-eH+4Nrm:Yg +rlG)Trk8_4r`oG,qcWo#r`B)" +pf7;mmo0!ZP>Qm.JPiOHpepQZqc*Gmr`9#"qcNi#r`fA-ra5Y4raYqp^p&=^bq>U6iqtU-# +s7lQlqu6Hkq>U-fp&=R^nG_kTm/H/HjSn-;h>Z+,ec*qpbl5]__>_.I\c/i4XT#0tU&LV^RJrBKNrFq8 +K`6Q%If=TkFoHC[DZ4GNB`;QA@fBd7?iF=0>PhS&=T2A&<`T3$pf7;mmo0!ZJPiCDJPhb2pep`_r)_8rac"ArbDFMrc.p[rcnEkrdk'%reg]8rf[8Krgj%^ri#gtrilC4rk8Cbpenk(JPgtqJPl2?mo0*_qc3Vrr`Au!r`T5)ra#M1ra>_8rac"ArbDFM +rc.p[rcnEkrdk'%reg]8rf[8Krgj%^ri#gtricF6\H'2>^&GkIaSsB^d/MSpg&Bh,iVqp;k5O`Hmf)_T +oD\F^p\t!fqYpBerQG5as8N#prVl]nqYpPhS&=T2@uQ.q*?iFO6AH$^WrB."Z2V?6 +^&GkIao9N`d/MVqgA]t.i;Vj;kl0rJmf)_To`"O_p\t!fqYpBkrVQT,s8N#prVl`oqYp_4ra,S.r`];(r`B)"r`/hor_iMgr_S/AqbMc=JPVY/qb[&bqbmDlr`/qur`B)%r`];*ra,S2 +ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.F +rpB^R!:^*[nc&1[pAXjdq>U6fr;QZlrke^7rqlZnr;QQlq>U0gpAX^`nc&"Vm/H>Mjo49=hu;@/fDa7u +cMkrb`;[ON])K,:Y5YF"U]-nbRf8TOO8b%9LAl`&IK"QlF8g1YDuOMNBDuKA@/aO4?N+1.>5h\(=8l8" +sCC:Q\G(:P)@B;#F/b;>X8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&_4ra,S.r`];(r`B)"r`/hor_iMgr_TLgJPUhmJPYW. +qb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriQ:0 +[/dW6])KJD`;[mXcMl;lfDaM'hu;X7jo4TFmJcSRnc&1[pAXjdq>U6fr;QZlrmCbhs82cor;QQlq>U0g +p&=U_nc&%WmJcDMjo4<>hu;@/f)F+scMkrb_u@CL\Gif5Xo>6tUAgb`R/W9JNrFn7KDpE#HiA6gEW0nU +D>n2IAc?-;@/aL3>lIk)=8l8"<;ohq;Ys>d;#X8i;"[WS:4Z/k:4Z0O:A%EO;#X>h;Z9VolJ(/@/a[8Ac??AD>nMRErL=_HiAQpKDp]+NrG7AR/W]VU].4kY5Yd,\Gj5A_u@aVc2Q/jf)FD&hu;X7 +jo4QEm/HMRnc&.Zp&=acq>U6fr;QZlrke^7rr2lqr;QTmqYp9hp\sgao)A.XmJcDMkl0T@i;VU4f)F+u +cN2AKrh'1bri#h"rj;[8rkJHNrlP/crmUktrndY4ro3q@rp'LM!:U$YnG`%Yo`"Ua +q>U6iqu6NmrVQT2s8N#srVl`oqu6Hkq#:$eo`"F\nG_hSlMg#Hir7m8hYu+*e,I\mao96X^](eC[/R9. +W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA@fBa6?N+1.=oMJ$h:]O>k:]=2i:]!oX +9n?!29S#lt9_D*[:A.H^;#X8f;#X>h;Z9YpU6iqu6NmrVQT2s8N#s +rVl]qqtgBjrqcWhrqHEarpp'XrpB^Mroj@@ro!e4rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7 +re19$rd=]hrc8!WrbVRIrac";ra5Y2r`fA)r`9"ur`&kpqbd5er_NMir_NDdnkHPdJP:VgJP>i4ohG*S +r_WSiqb[8hqbmDmr`/qur`T5)ra,S2raPk;rb2:Hrc%jWrce?hrdb!$reUQ7rfd>Krh'1brhok$Y5kd* +[/RW8^])1Nao9Wce,IqthYuI4ir80@lMg2MnG`%Yo`"Uaq>U6iqu6NmrVQTAs3(HArVl`oqu6Ejq#:$e +p&=R^nG_kTli-/JjSn-;hYu1,eGdhob5TBZ_#CqE[JmE0WW&^mTDk8XPl?aCMZ/>/JGsrqGlDd`DuOPO +C&VZB@K'X5>Q.h*=oMJ$sMn<;ons +=8lA%>Q.t.@/a[8AH$dLoYl;'0])KME`W"$Zd/MSpf`'b, +iVqp;l2L#Jmf)_ToD\F^p\t!fqYpBkr;QZlrl+p:rqlZnr;QTmq>U0gp\sd`o)A+Wm/H8Kk5O<Z1. +eGdepblQ)6rl+lQrk8<=riuI)rhTOdrg`tPrfI,br_2uXJP,o6JP(JcPtLpHqb6u`qbI,dqb[8hr_reqr`B)$r`T5+ra5Y5ral(BrbVRP +rcA'_rdOitre190rfI,Drg`t\rhTOqriuI1rk8k;uTbq=8l>$=oM_+?iFL5Ac?BBD#SAPF8gC_If=otK`6r0OT(LD +SGo2\V#ILqZ2V01^&GkI`W"-]dJhYpg]$(/i;VmU)[Jml=_>_FQ +c2Q,ieGe5%hYuI4k5OTDm/HJQnc&.Zp\sseq>U9jr;6HlrmCbks8N#srVl`oqu6Ejq#:$eo`"C[n,D\Q +lMg#HiVqa6h#>n(df.Sla8X!U^](\@ZMq$+V>d1fSc4lQOT(7=LAlf(If=TkFT-4XD#S/JB)Z3;?N+70 +=oMP&5hk-?iFI4BDuZF +D>nJQFT-OaIf=ruLAm23P5^dHT)PJ`VZ*duZi7H5^]).Ma8XEae,Iqth#?10iVr'?lMg/Ln,DnWo`"Ua +q>U6iqu6NmrVQT5s8N#prVl`oqYp9hp\smco)A.Xmf)MNkPjQAi;VO2g&BG!c2c#gbKKn%rkABDrj)O+ +ri5sjrg`tUrfI,_X[qJDqb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbV +rh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e:roj@H!:BmUmf)_To)A@^p\sseqYpBhrVlf8s8N#prVl`o +qYp9hp\smco)A.Xmf)MNkPjQAi;VO2g&BG!cMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt,=8l8"<;obo;#X8i:B!ub9E@dZrCd,^i(8JjWCVS2QUpF6q+:HUr_*#[r_gBkq#:$epAXX^nG_kTlMfuG +jSn*:h#?"+df.PkbPoBX^AbbDZMq$+WrA[jSGnrUOT(4i&)IK"TmF8g.XD>n5JAc?-;?iF=0>Q._' +sDk:]=,g:&@W]9E%QA8\[fI8:a<_8E3;=9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41@K'j; +B`;lJE;jqXHiAKnJGtE)NW,%=RJrcVTE2'm!36%$rj)O8rkJHLrlb;ermLf!rnRM2roF(Brp'LNrp]pX +rq??crqQKhrqlTkrr1=FcN!nCrr)iorqcWhrq??arpp'XrpTjOroa:Bro!e2rn7;!rm(MdrkeZKrjr*6 +riQ0urh07[rg3VGrepc2rdauqrcnE_rbqdQrau.>ra>_3r`fA(r`/qsr_i_lqbR2cr_3;apdt6Ommm"> +JOY2[JO[=Bnji@DqapZWr_*5ar_ZC4jo4HDliHJ>rpKdUrq-3_rqHEgrql]mrr)`nbQ%S@qu-Nlrql]krqHEcrq-3[rpTjQroj@Cro*k4 +rn7;$rm:Yfrl>#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yj +r_WShr_3;`p.56Ur^cfSJOYYhJOY2[r'pHOqagTUqb$i]r_Z+,ec*qpbPoQ]_#CtF[JmB/WW&[l +T)P,VP5^I?L]2o)IK"KjFT-7YD#S,IA,]p9?iF7.=T2A#;Z9Pm:]=2i:B!rd9(bdT8GG]N7Y+$[7Y+%k +7efLN8Gc!U9)_N`:&[ug:]=5j;Z9_r=T2M'?iFL5A,^0@C]8;PFT-RbIK"itM#ND5P5^jJScPU]!2KOm +ric=/rk&0Frl>#]rm:Yprn7;,ro*kQ.t.@K'mOnG`%Yp&=^bq>U6iqu6Qkrlb?@rqlZnqu6Emq=t$drqHEbrq$-YrpB^N +roX4?rnm_0rn%.urltG`rl"fMrj_s5riH*rrh07Zrg!JEreg]/rdauorc\9]rbVRJrau.pdY6Qogo'Rr_!/_r_3;dr_NMir`&ksr`B)' +ra,S4rau.CrbVRSrc\9erdb!%reg]:rg!JO!MH(cT`1hfXT#O)\Gj5A`;[mXc2Q2kfDaP(hu;[8k5O]G +mf)_ToD\F^p\t!fqYpBkrVQTDs3^lGrr2lqr;QTmqYp6gpAX[_nG_kTm/H2IjSn*:h>Z(+eGdenb5TBZ +^](eC[/R3,VuEChS,S]POT(1;L&QT$HiA3fEW0kTCAqlF@/aL3>lIk)Q.e)gO7J0'"6^gAn6]4>+7/TIJ7J0.L8,c'Y8cD?]9E%Wa:&@cd;uTer=oM\*?iFO6 +B)ZNDDuOhWG5csiK)UN(NrG4@QN!NUV#I@mYPts/]DfVF`r=3]d/MSpg&Bn.ir8'=lMg/Ln,DnWp&=[a +q>U6iqu6Qkrlb?@rqlZnqu6Emq=t$drq??`rpp'Wrp9XLroO.=rnm_.rmh"prlkA]rkSNFrjDa/ri,ml +rh'1Urf[8@reCE(rdOiirc8!Vrb;@DraPk6r`fA)r`/qrqb[8er_3;ar_!/]r^d#Yog\^FogH#OJO=uU +JOB)tnjN7Aog\pNr^d#[r_!/_r_3;cqb[8jr`/r#r`oG0raPk=rb;@MrcA'^rdOiureCE4rf[8H!M>ta +TDkYcWW'+#[Jmf;_#D@Qbl5ugec+8$hu;X7jo4QEm/HJQo)A=]pAXmeqYpBkrVQTDs4%)JrqlZnqu6Hk +q>U*eo`"F\nG_hSlMfoEj8Rs8gA]\&dJh>g`rU6iqu6Qkrlb?=rVl`oqYp9hp\sgao)A.Xmf)POkl0T@hu;F1f)F+sci1ua_Z7FP^VBcUriuI) +rhKIbrgNhKrf-o6rdk&srcnE^rbh^Nrac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-O@"Lb +JO68$i'[B0r^HTOr^ZrYr^m)^r_*pTDk;YOoC@>M>i)*IK"KjEW0kTC]7lD@fBa6 +>Q._'sAj:&[ca8cD9[8,GdQ7K,[U6UTWrJO65#JO5JcnO)e5qaCEPpdY6Qr^d#[r_*5br_NMj +r_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o>rgNhXrhKIpriuI1rkJHMrl>#armUktrnRM1ro3q@ +rp'LNrp]pYrq-3arqZQiqu$HlbQ%Jn(df.Sla8X!U +^](Y?Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR +7+t#@6@hIS6@hK#6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N* +NW,%@R[O5Frgs+ariQ1)rjDa?rkn`Urm1Smrmq)(rnm_7roj@HrpKdTrq$-]rqHEfrqcNirr(@HeGoOI +qu-NkrqcWhrq69_rpg!Urp0RJroF(;rndY,rm^qnrlP/XrkJHBrj)O*rh]UergWnNrf@&9rdk&trd+Qb +rc%jQrau.>ra5Y/r`K/#r_i_lr_EGdr_*5_r^coVpdP0MdmJ[RJO=uUS4!0ApdP0Pqag]Yr_*5ar_NMj +r_i_rr`K/)ra5Y7rau.GrbqdWrd+Qlrdk',rf@&Brg`t\rh]Urrj)O5rkJHNrlY5drm^r"rndY5roF(C +rp0ROrpg!Zrq69crqZQjq#/D9qu-NlrqcWhrqHEarpp'WrpB^Lroa:>rndY.rm^qorlkA\rkSTI!PH)E +Zi7-,WW&UjSGniROT(1;LAl]%HN&'dE;j\QB`;K??iF@1=T2A#<;o_n:]=,g9)_E]8H)-Y7efFO7+Xfa +6Erh-6%M>I6/"ZZ6i0:K7K,dU8,c'Y8cD?]:B"&g;#XGnrndY.rm^qorlkA\rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQrb2:? +ra5Y1r`K/#r`&knr_NMgr_!/]r^d#Yr^QZOr^?ZOgdC!dJO.=BJO-e3g-Yrp'LMrpTjWrq-3arqZQiqu$HlbQ%Jrp'LMrpTjWrq-3arqZQiqu$HleGn%u +rr2fnrqcWhrqHEarpp'WrpKdOroj@@rnm_1rmq(srm(M_rkeZKrjDa0ri?$lrgj%UrfI,;reCE&rd=]h +rc%jRrbDFCraGe4r`K/#r_remr_EGer_*5_r^luWr^QcRr^?3Bi^/2_JO4oSW']r?qaCEPqaUQTr^m)] +r_*5br_NMir`/r!r`T5,ra>_8rbDFKrc%j\rd4WpreLK2rfI,Hrgj%^ri?%&rjDa>rkeZTrm(Mkrmq)( +rnm_7roj@HrpKdTrq$-]rqHEfrqcNirr(.Brr2fnrquclrqQKerq-3[rpTjProsFDro!e2rn7;"rm1Se +rk\TJ!4`-@\c/i4X8]!qTDk8XPl?[AL]2o)I/\BiF8g(VCAqlF@/aI2>Q.\&;u9Dj:B!rd8cD9[8,c!T +7K,^G6bbte6*rn.5_22G5lO'a6M3_C7/fXP7fGpW8H)3[9`@c`;#XGn&?N+@3BDuZFDZ4_VGQ*!h +K)UT*NW,1ARf8rYVZ*XqYl;34^&GkIbPoiee,J&"h#?43jT4K)roj@IrpTjWrq-3arqZQiqu$Hlqu5+F +rr2fnrquclrqQKerq-3[rpTjProsFDro!e2rn7;"rm1Serk\TJrji$4ri?$qrh'1XrfmDAreLK)rd=]i +rcA'VrbDFFra>_2r`fA&r_r\jr_EGdr^m)[r^ZrWqaLKPp-\dG^I%ocJO%@CJO$_1r^"dqo0W+;qaCEP +qaUQTr^d#[r_3;cqb[8kr`9#&ra,S3rb)4Frbh^Vrce?hrdt-*rf-oArgNhYrhf[qrilC4rk8Q.t.@/ag_ +r^?`Sr^QlWr^d#[r_*5br_WSkr_rerr`];,ra>_;rb;@Lrc8!^rd=]sreUQ6rfmDNrh07friH+'rji$B +rkeZXrm1Smrn7;,ro!eQ/"/@fC!=CAr/N +F8gF`J,Y*"M#NJ7Pl@-NUAh+jY5Yj.]DfVFaSsE_d/MVqgA]t0irS3#roX4ErpKdTrpp']rqHEfrql]m +rr)`neGoOIrr)iorql]jrqHEbrpp'XrpKdMroa:@rnm_/rmq(qrlkA_rkSNFrjDa.ri#gjrgNhOrf@&7 +re19#rcnEarbqdNrau.=ra5Y/r`K.ur_i_kr_ric=#rhTO`rg3VHreg]/ +rdauorc\9\rbMLGraYq7r`fA(r`&kpr_NMgr_3;`r^coVr^HfSmmGYmr'KX6JO#elJO%jQog.(olpLb? +r^HfVqag]Yr_*5cr_NMkr`&l!r`fA/raYq?rbMLPrcS3drdb!%reg]d.eR/W_9rb)4Jrc.p[rdFcsre:?3rf[8Jrh07fri?%)rj_sArl+lZrm1Sn +rn7;,ro3q>roj@KrpTjVrq69brqQKirqucoqu5+Frr2oqrqucmrqQKd!VQ*cp&=L\n,D_Rkl0]Cir7d5 +f`'D"ci2)d`W!UN\c/r7X8\spT`1>XPQ$UAL&QZ&IK"BgErKtUBDuH@@/aI2=oMJ$;Z9Ml:B!oc9)_E] +8,c!T7K,^D6d\6A5_21O5`.hP6LmMC7/KFP7fGpW8cD?]9E%]c;#XAlroj@KrpTjVrq69brqQKirqucoqu5=L +fDkjLrr)iorql]jrqQKdrpp'XrpKdMroa:@rnm_/rmq(qrlkA^rkSNFrjDa.rhoagrgNhNrf@&6re(3! +rc\9]rbqdLrac"9ra#M+r`B(sr_WSir_3;`r^luWr^QlTnjCbjr'Gs"L-U;TbWs?_:rb2:LrcA'^rdOiureLK6rfmDNrh07griQ1-rjr*Erl>#]rm:YqrnIG0 +ro="?rosFMrp]pXrq??crqZQjrqucoqu5+Frr2oqrquclrqHEcrq-3ZrpKdProa:Aro!e2rn.5!rltG` +rkn`JrjDg2!O/g-WW&[lTDk,TOoC==K)U5uHiA*cE;j\QAc?05hn.@fBst*e,IVkaSs*V]`,A= +Yl:X$U]-nbQ2ZpFN;eG.If=]nF8g.XD#S#F@fBa6>5hV&re(3"rd4WbrbqdQral(=ra5Y.r`B)! +r_WShr_rg*PUrhTOmriuI3rk8rnm_/rmh"prlY5ZrkSNCrj)U-!NrU)V#I"cRf8HK +NW+b5JGsopGQ)R\D#S,I@fBa6>lIh(rnm_/ +rmh"prlY5ZrkSNCrj2U,rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#X +qaLKPpd=X>i^/2]TKn&nN^35'iBm<,qaCEPr^QlWr^m)^r_EGhr_i_pr`B)(ra5Y6rb2:Irc%j\rd=]q +reUQ4rfR2Krh'1criZ7+rj_sCrl+lZrm:Yprn@A/ro3q=rp0ROrp]pYrq69brqcWkrqucorr1OLrr2oq +rqucmrqcWgrq-<`o)SC]nG_hSli-#Fj8Rs8gA]Y%d/M2e`W![P\Gii6Y5Y6rTDk;YOoC@>M#Mr(HiA6g +E;j\QB`;K??iF=0=8l5!;Z9Ml:&[fb8cD9[7f,XR7/0.!6FK.15_21O5kmUo6MNqF7/fXS7fGpW8cDB^ +:B")h;Z9Yp=8lJ(?iFO6B`;iIE;k(\I/\WsLkl%erf$i=rgNhYrhTOrrj)O5rkSNPrlY5ermh#%rnm_7 +roO.FrpKdTrq$-^rqHEgrql]mrr)iqgAfn,rr2fnrquclrqHEcrq-3[rpKdOroX4?rnm_0rmq(srltG_ +rkeZHrjDa/rhoahrgj%Prf@&9rdk&srd"K_rbh^Mrac":ra,S+r`9"sr_WShr_3;_r^d#YpdOa@g-YEs +JO"cOJO$n6r^#.&ogA^IqaLKSr^d#[r_*5br_WSmr`9##ra,S4rac"Crb_XSrd"Kkrdk'+rf6uArgj%_ +rhob!rjDa;rkeZUrltGjrn%/(rnm_8roX4GrpKdTrq-3_rqHEgrqlTkrr1OLrr2oqrql]krqZQfrq69] +rp]pSrp'LDro*k5rn.5"rm1Scrkn`MrjDa1!3?4&XT"snSc4uTOT(1;L&QQ#H2_pbDuOMNB)Z3;?2e%, +5hh, +@/ad;CAr/NFT-RbIf>'#MZ/_:QiuKiro*k;rp'LLrp]pXrq69b +rqZQirql]nrr1OLrr2oqrql]krqZQfrq69]rp]pSrp'LDro*k5rn.5"rm1Scrkn`MrjDa1riH*nrgj%T +rfI,;re:?#rd"KbrbqdNrau.;ra#M,r`9"sr_WSir_3;`r^d#Yr^QlUr^?EHo0VG'JO#knJO#5\oKqM' +ogA^Hr^HfUr^ZrYr_!/`r_NMir`&ktr`];,ra>_;rbDFNrcJ-brdOj#reg]:rg3VTrhBCnrilC0rkJHN +rlP/crm^r"rndY5roF(Drp9XRrpp']rqHEfrqcWkrr)iqfDkjLrr)inrqcWirqHEb!V5d]o)A.XmJcDM +jSn-;hYu1,eGdenao93W^](Y?Z2Uj(UAg__Qi<*GMuJG0If=WlFT-4XCAqiE@/aI2>5hS%;uTVm:]=&e +9)_B\8,c!W7K,^J6e"H25_21O5_22q5h&-n6iKLQ7K,dU8,c'Y9)_N`:]=2i<;oqt>5hh,@/ad;CAr/N +FT-RbIK>.V!/:E0rfI,Grgj%_riH+'rjDa?rl"fXrm1Snrn.5,ro*k;rp'LLrp]pXrq69brqZQirql]n +rr1XOgAh0Orr)iorql]krqHEcrq$-YrpB^NroO.=rnm_.rmh"prlb;[rkJHCrj2U,rhTOcrgWnKrf$i3 +rdauprc\9[rbVRIraGe5r`oG(r`/qpr_WSgr_*5^r^d#XqaLKPpd$Kr^?`S +r^QlWr^m)^r_n5JAH$!9>lIn*_9 +rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7,rk8dKRqu-NkrqcWirq??`!V,[[nc&"Vli-,Ij8S!9h>Z")df.Pk`ri/,I/\?hErKqTB`;QA@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6e"H25_21O5_22q5h&-n6i0:K7fGpW +8cDB^9`@ie;Z9\q=oM\*@/a^9C&VuKErL:^Hi\kP!/(9,rf6uCrgNhZri,n"rj2U;rkeZSrm(Mkrmq)) +ro!e9roj@IrpTjVrq-3`rqZQirql]nqu5FOgAh0Orr)iorqcWirq??`rpg!Wrp9XKroF(:rn[S)rmUkm +rlG)VrkJH?rilC&rh9=]rg*PEre^W,rdFcjrcA'WrbDFEra>_2r`];$r_relr__;rbDFNrcA'`rdFcure^W8rg*PR +rh9=kric=/rkJHMrlG)brmUktrn[S4roF(Crp9XQrpg![rq??erqcWkrr)iqgAh0Oqu-NjrqZQgrq-3\ +rp]pSrosFFro*k5rnIG$rm:Ygrkn`Mrjr*5ri6$r!N)anT)P,VP5^C=L&QW%H2_pbDuOMNB)Z9=?2e"+ +=8l+s;>sAj9`@Z`8cD3V7Iih(6N09%5lO$"5_21f5lO(*6M3_F7JfRR8cD?]9`@ie;>sJm=8lD&?2e=4 +B)ZQEDuOkXH2`?nLAm,1P5^jJT)PVdXT#I'])KGC_u@mZci2AngB$'`rndY5roa:GrpB^Srq$-]rqQKg +rqcWmqu5FOrr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC&rhf[drg<\Jrepc0 +rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjDn5nO!4@JO#GbJO"fP!'pWO6/=m#6iKOO +7fH!Y9)_N`:]=5j;Z9bs>5hh,@fC!=CAr/NFT-RbJGt<&MuJn=R/W]VVZ*[rYl;65^Ac%Lbl5rfe,J,$ +hYuL5kPjcGmJcVSoD\C]q#:*gqYpHjrn[VRrqlZnqYplMg2MnG`%Yo`"Xbq>U6irVQTMs4[MPrr2lqqu6Hkq>U'd +oD\7Ymf)POl2K`Bi;VR3ec+"rcMki__>_+HZi7-,WW&RiS,S]PNW+_4Jc:#qG5cL\D>n5JA,]j7>Q.e) +<;obo:]=#d9)_E]8,c!W7INV(6N0:75_21O5_22'5lO(*6Mj.I6iKOR7fGpW8cD?]9E%`d;Z9Yp=oM\* +?iFR7B`;lJEW1.\HiATqL]3;4Pl@-NT`1kgY5Yg-]`,bH`r=9_dJh\qh>Z@3j8SOnG`%Yp&=dd +qYpBkrVlfMs8N#prVlZmq#:$eo`"F\nG_eRl2KiEi;VR3gA]P"cMkuc_Z%7J\,NT1W;r^pUnn!Zrg*PG +re^W-rdXokrc8!Urb2:BraGe2r`T5$r_`Ykr_EGbr^m)[r^QcRnjD>%r]u*#r]l$"JO#Sfr^#@,ogA^I +qaUQUr^m)]r_EGgr_`Yqr`K/)raGe;rb2:Krc8!^rdXp#re^W:rg*PQrhTOnric=1rk8Z@3k5OTDm/HMRoD\C]p\t!fqYpHjrn[VRrqlZnqYp9hp\sgao)A.Xm/H8Kk5O<Z.-df.Pk +b5T9W^&GM?YPtO#V#Hk_QN!$GM>i2-J,XZkErKtUB`;TB@K'O2=oMJ$;>sDk:B!lb8cD9[7f,XF6h!G4 +6N09%5a4Nb5_;6$5lj8;h*Ud%r^H]Rr^d#[r_!/br_NMjr`9##r`oG2ral(Brbh^Urce?kre19-rfR2G +rgWn_ri5t$rjVm?rkeZWrm(Mkrn@A-ro!edKRqu-NjrqQKerq-3\ +!V#RYnG_eRl2KiEi;VR3gA]P"cMkuc_Z%7J\,NT1WW&^mS,S`QOoC4:K`6K#GQ)X^DZ4>KAc?-;>lIn* +lJ12 +Ac?BBDZ4\UG6*2C!.Y!$re^W:rg*PQrhTOnric=1rk8dKRqu-NkrqcWhrq69^rp]pTrp0RIro3q7rnRM&rm:Yhrl+lPrk&06ri?$qrh'1Xrfd>> +re:?$rd"KbrbqdOrau.=ra,S.r`K.tr_WSir_*5_r^m)YqaL'Ci'RE/kWj\aJO"cOY!DtPh*V!+qa:?O +qaUQVr_!/_r_NMjr_i_tr`];-raPk>rbMLOrcJ-brdXp$repc=rg<\Vrhf[rriuI7rkSNPrltGirm^r& +rnm_7roj@HrpKdTrq$-^rqQKgrql]nrr1XOrr2oqrquclrqQKerq-3[rpTjProj@Bro!e2rn7:trlkA` +rkSNFrjMg/rhogk!MZ=fRf8QNO8an5K)U5uFoHC[D>n2IA,]j7>5hV&5hn.A,^-?D>nPSFoHjhK)UN( +O8bCCRf9&\W;`t![f3r=_#DITc2Q&if`BdZrnRM2roF(Brp0RPrpp'\rqHEfrqcWlrr)iqh>dKRrr)io +rqcWhrqHEarpg!Vrp0RIroF(:rnRM+rm:YgrlP/Trk&0$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcJ6jIK4irK)UN(O8bCC +Rf9&\W;`t![f3r=_#DITc2Q)hg&Be+i;Vg:kl0oIn,DnWo`"Uaq>U6ir;QZorn[V1s8N#prVlZmq>U0g +o`"F\nG_eRl2KiEi;VO2g&BG!cMl#d_Z%7J\Gi`3WrAdmSGniRO8at7KDpB"FoHF\DuODKAH$!9>lIk) +sSp=T2S) +@/a^9BDuiKF8g@^J,Y*"M#NJ7Q2[9PU].:mYl;34^Ac"KbPoiee,J&"h>Z@3k5OTDm/HMRoD\C]p\t!f +qYpHjrn[VOrVl`oqYp9hp\sd`nc&"Vl2KlFj8Rp7gA]\&d/M5f`rU6fr;QZNs82cor;QQlq#:$eoD\:Zn,DSNkPjN@hYu7.f)F%qbPoN\_#CqE +Zi7$)V>d+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm:B!rd8cD9[7fGjU7/0.46M*Tq5`S*\ +5_22u5hA@"6iKLQ7K,dU8,c*Z9`@fd;#XDmdOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L`q>U6fr;QZNs5!_SrqlZn +qYp9hp\sgao)A+Wm/H5JjSn*:h#?"+dJhGjb5T3U]`,D>Y5YC!U&LP\Pl?^BLAlc'I/\6eE;j_RB)Z<> +?iF:/=8l5!;#X5h:&[``8H)-Y7K,^J6fUN16/k.\5_21O5c?sI6/Y*/6hj%J7/fXS8,c'Y8cDH`:]=2i +Q/"/A,^*>D>nPSFT-[eJc:E'NrG7ARJroZW;a""\,O&>_#DLUcMl8kg&Be+i;Vg:kl0rJn,DnW +o`"Uaq>U6irVQTMs8Murr;QTmq>U0gp\sd`nG_hSl2KiEir7g6g&BM#ci2)d`W!UN\Gic4WW&XmScPFS +rfmDDrf$i.rdOimrc.pTrbDFBra>_2r`B)!r_i_lr__8rbDFLrc.p`rdOiurf$i +hYu4-eGdenb5TBZ^AbYAZ2Ua%U]-kaPl?dDN;eG.If=ZmEW0kTCAq`B@/aI2=8l5!;Z9Ml:&[fb8cD9[ +7fGjU7/0.46Ma%G6%M:]5_21O5lnPS +HN&BmK)U`.OT(LDT)PMaWW'1%\,O,@`W"$Zci2Gng&Bk-ir8*>l2L)LnG`%Yp\sseq>U9jr;QZNs8Mur +r;QTmq>U0gp\sd`n,_qD!:BdMroX4>rndY-rm^qnrlY5ZrkABAriuI%rhKIarfmDDrf$i.rdOimrc.pT +rbDFBra>_2r`B)!r_i_lr__8rbDFLrc%sbH2r9jIf=ruN;eqa-])KMEa8X9]d/MYrg]$.1jSnBBli-APo)A:\p\t!fqYpHjrn[VRrVl`oqu6Ejq#:!do)A+WmJc>K +jo46Z(+eGdbmao96X^&GJ>YPtL"U&^_bSXobDrf@&9rdauqrce?\rbVRJraPk6r`oG'r`&kor_NMe +r_!/\r^ZrWr^?EHi'RE/JO&lnJO"cOO$N\1h*V!+qaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQ +rce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrltMn!S#Wug&Bh,iVqsU9jr;QZN +s8Murr;QTmq>U0gpAXX^n,D_Rkl0]CiVq[4f`'D"cMkrb`;[IL[f3K0W;`OjSc4iPO8b%9JGsrqGQ)R\ +D#S/J@fBa6>lIe'<;obo:]=&e9)_B\8,c!W7.iq16Ma%J6%M:Z5_21O5l!\E6/=m)6i0:N7fGpW8H)6\ +9`@ie;>sPoZC4jo4KC +mJcVSo)A@^p\t!fqu6NmrS@MQrVl`oqu6Ejq#:!do)A(YmHjo@roj@Cro*k4rn.5"rm(Mbrl"fLrjMg0 +ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG'r`&kor_NMer_!/\r^ZrWr^?EHi'RE/Tg4/oJO"cO +j$`;[mXcMl>mg&Bh,iVqsU9jr;QZNs5!_PrVl`oqYp9hp\sd`nc%tUl2KiE +ir7g6gA]Y%d/M5f`W!UN\Gif5WrAjoTDk/UOT(1;Jc:)sH2_g_DZ4DMA,]m8?2dq)sSp=T2V*@/a[8CAr)LEW17_If=ru +MuJh;QN!NUV>dOpZMqB5^Ac+Nb5Tceec+8$hYuR7k5OWEmf)_ToD\L`q>U6ir;QZorn[VRrVl`oqu6Bi +pAXaanc&"Vm/H2IjSn*:g]#e'df.Jia8WpS])K,:YPtBtT)b;\R[X5;repc1rdauorcJ-YrbMLGra>_2 +r`];$r_relr_$Lr^QlWr^m)^r__< +rbMLPrcJ-crdb!&rf$i_%F[JmB/V>d+dRf8EJMuJJ1JGslo +FT-7YC]7uG@/aI2>5hP$;uTSl:&[ca8cD6Z7fGjO6fCB16@hCU5_21O5k@7s6MNqI7K,dU8,c*Z9E%Zb +:]=8k_2r`];$r_relr_$L +r^QlWr^m)^r__d[t[/RZ9_>_IRbl6&i +fDaP(i;Vg:kPjiImf)bUp&=^bq#:0ir;QZNs5!_PrVl`oq>U0gp\sd`nG_hSl2KiEir7g6g&BM#cMkrb +`;[IL\,NZ3WW&[lT)OuRO8b%9JGsrqGlD[]D#S,I@fBa6>lIe';uTVm:B!rd9E%H\7fGjO6fUN16.nMS +5_21O5bC=@60:N56M3_F7K,dU8,c0\:&[rf;>sPo=8lJ(?iFO6C&VuKEW14^I/\]rMZ/\9Pl@9RU].7l +Z2V63^Ac(Mao9TbeGe/#hYuO6k5OWEmf)_ToD\L`q#:*dr;QZNs8Murr;QTmp\smcp&=L\mf)POk5OE? +hu;@/f)F(rbPoK[_#CnDZi7-,U]-hbQiWSArfI,;re:?"rcnE`rbh^Mral(:r`oG*r`/qqr_NMer_!/] +r^ZrWr^HTLk!Ji/JO&ZhJO"cOM*Ui%k!Ji1r^HfUr^ZrZr_*5ar_NMkr`/r#r`oG1ral(Crbh^VrcnEj +re:?/rfI,Hrgs+ariZ7,rji$Drl4r\!7:hpdJh\qgA^"/j8S3?li->Onc&4\pAXgcqu6NmrS@MQrVl`o +qu6?hpAXaanc%tUli-&Gj8Rs8gA]\&dJh>g`W![P\c/r7Y5Y3qT)P,VOT(1;L&QN"GlDd`DZ4DMAc?*: +>lIn*!:0XHro="8rn@A&rmC_grl+lPrji$7riZ6qrgs+VrfI,; +re:?"rcnE`rbh^Mral(:r`oG*r`/qqr_NMer_!/]r^ZrWr^HTLk!Ji/Rm;NiJO"cOh*Ca$k!Ji1r^HfU +r^ZrZr_*5ar_NMkr`/r#r`oG1ral(Crb_aXEr^:\GlE-jL&Qu/OT(XHT)PMaY5Yd,\c0DD`r=0\dJh\q +gA^"/j8S3?li->Onc&4\pAXgcqu6NmrS@M0s82cor;QNkq#:!do)A+WmJc>Kjo46Z(+e,IYlao93W +]`,A=YPtL"UAg\^PQ$UAM#Mr(HiA3fE;jYPBDu?=?N+1.Q.t.@K's>C]8;PG5cjfJGtB(NrG7ASc5A_W;a%# +\,O)?`;[mXcMl>mg&Bh,iVqs:*hrS[_Trr2lqr;QQlp\smcoD\7YmJcGNjo49= +hu;=.ec*qpb5T?Y^](_AZMq!*UAg\`QNrf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_NMer_!/] +r^QlUr^?NKk!FVak!4J_JO"cO!'o[5pd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]t +re^W8rg3VTrhBCorj)O4rkJHNrlP5f!RT3mec+8$hu;X7jo4TFmJcVSoD\F^p\t$gqu6QkroX7[rr2lq +r;QQlp\smcoD\7YmJcGNjo49=hu;=.ec*qpb5T?Y^](_AZMq!*UAg__Qi<'FM>i/,I/\?hErKqTB`;QA +?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6fp`55_21O5_21O5jCVs6MNqI7/fXS7fH!Y9E%Wa:]=8k<;p#! +>Q/"/AH$nSTGQ*!hKDp`,O8bLFSc5A_Xo>X*\,O/A`;[pYd/MSpg&Bn.ir8'=li-;NnG`%Yp&=^b +qYpBkrVQTVs8N#srVl`oqYp6gpAX[_nG_eUlg"Q:roO.=rnm_.rmh"prlY5YrkJHArj)O*rhBC_rg3VF +re^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Yr^HfSpd=11P!FR`JO"cOe3N._pd>$Kr^HfU +r^m)^r_3;er_i_pr`K/(ra5Y8rb;@K!HN2\ErL:^I/\ctM>iS8Qi_%F[JmB/V>d+dRf8EJMuJJ1If=WlFT-1WCAqiE@/aI2>5hP$;uTSl:&[ca8cD3Y7K,^M6fp_^5_21O +5_21d5jUi76MNqI7JfRR8cDB^:&[rf;Z9\q>5hh,@/ad;CAr/NFT-UcJGt<&N;eq_IRbl6&ifDaP(i;Vg:kPjlJn,DkVp&=^bq>U9jr;QZQs8N#srVl`oqYp6gpAX^`nG_hSlMfoEir7j7 +fDa;!ci2&c`;[ON[f3N1WrA[jRfJ]SQ'M?.reLK(rd4Wfrc.pQrau.=ra,S.r`K.tr_WSir_*5_r^d#X +r^HfSqa9C1JO&?_JO"cOJNs3#i'RE1r^?`Sr^QlXr^m)^r_NMjr_i_tr`];-raPk>rbMLQrc\9frdk'( +rf-oBrgWn[ri5t$rjMg@rl"fX!7(\lci2DmfDa\,ir8'=lMg2MnG`(Zp&=^bqYpBkrVQTVs8N#srVl`o +qYp6gpAX^`nG_hSlMfoEir7j7fDa;!ci2&c`;[ON[f3N1WrA[jS,S]PNW+_4Jc:#qG5cL\C]7rF@fB^5 +>Q.b(;Z9Ml:]=#d9)_B\7fGjU7/K@36Ms*"5_21O5_22c5i>!.6iKLQ7K,dU8H)3[9E%`d;>sJm=T2M' +?N+F5BDu]GEW1.\HiATqL]3;4Q2[9PT`1tjYPu!0^])1Nao9Wce,Ituhu;X7jo4QEmJcVSo`"O_p\t$g +qu6QkroX7[rr2lqr;QQlp\smco`"@Zm/cM;!:'RFro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4 +rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$JnoJO"cOJO%^Mi'RE1r^?`Sr^QlX +r^m)^r_NMjr_i_tr`];-raPk>rbDOSE<("XG5cjfJc:H(NW,4BS,T)[WrB4$[f4&@`;[mXci2DmfDa\, +ir8'=lMg2MnG`(Zp&=^bqYpBkrVQTSs5!_SrVl`oqu6BipAXaanc%tUli-)HjSn*:gA]\&dJhAh`rlIn*<;obo:]=&e9)_E]7fGjU7/0.36I7uK5_21O +5aF\%6Mj+E6iKOO7fH!Y9E%Wa:]=8klJ.1AH$!+6iKLQ7K,gV8cDB^:B")h;Z9bs>5hh,@fC!=CAr2O +FoH^dJGt<&N;f(@Rf8uZW;a""[/Rf=_Z%UTci2DmfDaY+iVqp;l2L&KnG`"Xp&=^bqYpBkrVQTVs8N#s +rVl`oqYp6gp&=O]nG_bTl0/34roF(;rndY+rmUkmrl>#UrkAB=riZ7!rh07ZrfmD@reCE&rd+Qdrc%jO +rau.=ra#M+r`B(sr_WShr_*5^r^ZrVr^?NKj$JnoJO"cOJO%^Mi'R<.r^?`Sr^ZrZr_*5cr_WSlr`B)& +ra#M4rau.E!H;uXE;k"ZHN&HoLAm/2Pl@-NT`1nhYPtp.^Ac"Ka8XEae,ItuhYuL5jSnECm/HMRo)A=] +p\t$gqu6Qkro=%7s8Murr;QTmq#:!do`"C[mf)POk5OB>hu;=.ec*qpbPoK[^](bBZMq!*UAg__Qi<'F +M>i/,I/\?hErKqTB`;N@?iF:/=T27u;>sAj9`@Z`8cD3Y7K,^P6fUM[5_21O5_21d5jUi16N0@O7/fXS +7fH!Y9E%Wa:]=8k<;p#!>Q/"/AH$nSTGQ*!hKDp`,O8bOGT)PMaXo>[+\c0AC`W"'[dJh\qg&Bn. +j8S3?li->Onc&1[pAXjdqu6NmrS[_Trr2ipqu6Hkp\sjbo)A+Wli-/Jj8S!9h>Z")df.Pk`rLrh'1griZ7,rk8Z@3j8SZ")df.Pk`rL&QT$H2_maDuOJMB)Z6<>lIn*!+6iKLQ7K,gV8cD?]:&[ug;Z9_r=T2S)@K'j;C&W&MFT-RbJ,Y0$MuJq> +RJriXW;`t!Zi7Z;_Z%RScMl8kf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBkr;6KUs8N#sr;QTmqYp6gp&=O] +n,DVRl0/34ro="9rn[S)rmLekrl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau.Z@3j8SQ.b(;Z9Ml:]=#d9)_B\7fGgN6gR.[5_21O5_21a5lO(?6M3\E6iKLQ7K,dU8H)3[9E%`d +;>sJm=T2M'?N+I6BDu]GEW1.\HiAWrM#NG6Q2[9PU&M.mZ2V63^])1Nao9WceGe/#hu;X7jo4TFmf)_T +o`"O_p\t$gqu6QPs8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1ec+"rcMkf^_>_+HZMps)VZ*.cQN3-K +OcfX"re19#rce?_rbqdLrac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKlp?7gh*?NVJO"cOpH[t0qa:?N +r^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb2:LrcA'_rdXp#re^W:rg3VTrhf[srj)O9rkSNP!6tVjcMl5j +ec+A'hu;X7kl0oIn,DkVo`"R`qYpBkr;6KUs8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1ec+"rcMkf^ +_>_+HZMps)VZ*.cQi<-HM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6gR/25_21O +5_21O5iFum6Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$9ADuOhWGQ**kK`6i-OoC^HSc5McXo>X* +]`,_G`W"0^dJh\qh#?41ir80@li-APnc&1[pAXpfqu6NjroX7[rr2ipqu6HkpAX^`nc&"VlN-55!9jFA +rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_r^d#X +r^HfSpd=C7M*QVWJO"cOb_9rb)=NDZF_TF8gC_J,Y-# +M>iY:QisJm=8lD&?N+F5 +B)ZQEE;k"ZHN&KpL]3;4Pl@0OT`2"kYl;'0^])1Nao9Wce,Ituhu;X7jo4TFmJcVSoD\F^p\t$gqu6QP +s8N#sr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/ec*tqc2PZ\^](kEZ2Uj(V>d"aQ2m!IOHBHtre(3"rcS3\ +rbh^Jrac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKnj<4>JO&$VJO"cOJO&rpr^#m;qa:?Nr^HfUr^ZrZ +r_3;dr_`Ypr`K/)ra>_9rb)4Jrc.p[rdXp"reUQ8rg*PRrh]UpriuI7rkSNO!6kPhc2Q,iec+>&hu;X7 +kl0lHmf)_To`"R`q>U9jr;6KUs8N#sr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/ec*tqc2PZ\^](kEZ2Uj( +V>d"aQN!!FM#N&+J,XTiErKtUBDuH@@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6h3S@61[?m5_21O5_22Z +5lO(96Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$6@DZ4YTFoHmiKDp]+OT(RFSGoAaX8]C']DfVF +`;\$\dJh\qg]$+0ir80@lMg5NnG`(ZpAXmequ6NjroX7[rr2ipqYp_1r`K/"r_`Yjr_3;_r^d#Xr^HfS +pd=U=qa$'(JO"cOJO%CDr^#m;qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rau7LD?+SREW1+[J,Y*" +M#NM8QN!ERV>dOpZ2VB7_#D:Oc2Q,iec+>&hu;X7kl0lHmf)_To`"R`q>U9jr;6KRs55hh,@K'j; +CAr2OFoH[cJGt<&N;f(@Rf8uZWW'+#[Jmr?`;[jWci2DmfDaY+iVqsU*eoD\7Ymf)POkl0T@hYu:/eGdhobl5NZ^](eCYl:[%V#Hn`PlQjGO,s9qre(3!rcS3[ +rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r]u*#g-C3SJO"cOoK`CAlpC\=qaCEQr^ZrZr_3;c +r_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureLK6rg!JQrhTOnrilC4rkABL!6bJfbl5ugeGe5%hu;X7kl0lH +mf)_To`"R`q>U9jr;6KUs8N#sr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/eGdhobl5NZ^](eCYl:[%V#Hn` +Q2ZjDL]2r*If=KhEW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N0:?5_21O5_21O5i+d*60pr; +6i0:N7fGpW8cDE_:&[ug<;p#!>5hn.A,^*>D>nPSFoHjhK)UQ)O8bFDSGo>`WrB7%\c0>B_u@mZd/MPo +g]$+0ir80@lMg5NnG`(ZpAXmequ6NjroX7[rr2ipqYpU9jr;6KRs5Z")df.Pk`rlIn*sVq=T2S)@/aa:C&W&MFT-RbJ,Y0$ +MuJn=RJrlYW;`t!Zi7Z;_Z%RSci2Dmf)FM)iVqp;lMg/Ln,DnWp&=^bqYpBkrVQTYs8N#srVl`oqYplMg5NnG`%Yp&=dd +qu6NmrVlf\s8N#srVl`oqYpn,G@fBa6=oMM%<;o_n:B!rd8cD9[7fGgQ6gR/=61@-j5_21O5_22W5lO(96N0@L7/f[T +8,c*Z9`@fd;#XGnZC4 +kPjcGmf)_ToD\F^q>U9jr;QZorosI^rr2lqr;QQlq>U'doD\7Ymf)JPkN;j.ro*k5rn@A#rm1SerkeZJ +rji$4ri5smrgNhOrf@&5rdk&rrcJ-Yrb_XGraPk6r`T5%r`&knr_EGdr^m)[r^QlTqa9^:r]u9(JO"cO +JO%:Ar^#m;r^6QNr^QlWr^m)_r_EGhr`&ktr`];.raPknPSFT-[eJGt<&O8bCCRf9)]WrB7% +\c0>B_Z%aXci2DmgA]q-iVr$>lMg5NnG`%Yp&=ddqu6NmrVlfVs5Z")df.Pk`W!^Q^&GA;Y5Y?uT)P,VP5^@lIk)sSp=T2S)@/a^9BDuiKF8gC_ +J,Y-#MZ/e_FQcMl8kf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBkrVQTYs8N#srVl]n +qYplMg5NnG`%Yp&=dd +qYpBkrVlf\s8N#srVl]nqYpZC4kPjcG +mf)_ToD\F^q>U6iqu6QnrosI^rr2lqqu6Hkq>U'doD\7Ymf)JPkN;j.ro*k5rn@A#rm1SerkeZJrj_s3 +ri,mkrgNhNrf@&4rdauprcA'XrbVRFraPk5r`T5$r_i_lr_lMg5NnG`%Yp&=ddqYpBkrVlfVs5n( +df.Pk`W!^Q]`,59XT#*rT)P,VP5^=;KDpB"G5cO]DuODKAH$!9>lIk)5_21O5`.i+62O">6N0@O7/fXS7fGpW8cDE_:B",ilJ.1AH$6@DuOhWGQ**kK`6i-P5^jJ +T)PVdXo>[+]`,_G`W"0^df.hsh#?41j8SU'doD\7Y +mJcALkPjE=h>Z.-df.PkbPoBX^&GM?YPtL"UAgV\PQ6^ENfO*lrdXoorcA'WrbMLDraGe4r`K/"r_i_l +r_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdW +rd4Wpre192rfd>MrhBCkric=1rk8Z@3kPjcGmJcVSoD\F^q>U6iqu6QnrosI^ +rr2lqqu6Hkq>U'doD\7YmJcALkPjE=h>Z.-df.PkbPoBX^&GM?YPtL"UAgV\Pl?^BK`6K#HiA*cDuOPO +AH$$:?N+(+rn[S-rmLekrlb;Xrk8$Mr^ZrY +r_*5br_WSlr`9##ra,S4raZ%FCB//LDuOhWHiAQpK`7#2PQ%$MUAh.kYPu$1^&GnJbPoiedf.u"h>Z@3 +kPjcGmJcVSoD\F^q>U6iqu6Qnro=%:s8N#sr;QTmqYp6gp&=L\n,DYPkl0T@hu;F1ec*tqc2P]]_>_+H +Z2Uj(VZ*.cQN!!FM#N&+If=KhErKtUBDuH@?iF:/=8l5!;#X5h9`@W_8H)*X7.iq<6N09h5_21O5_21X +5lO(H6LmJB6i0:N7fGpW8cDE_:B")hlJ+0A,^-?DZ4\UG5csiK)UT*OoC^HSc5McXo>X*]`,_G +`W"-]dJh\qh#?41ir80@li-APnc&1[p\t$gqu6NjrosI^rr2lqqu6Hkq#9scoD\7Ym/H8Kk5O<$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdVrd4Wpre191rf[8J +rh9=hriZ7/rk/6H!6P>bb5T]cdf.r!h>Z@3k5OTDm/HMRoD\F^q#:*gqu6QnrosI^rr2lqqu6Hkq#9sc +oD\7Ym/H8Kk5O<sSp=T2Y+@K'g:C]88O +ErLFbJGt6$NW,+?R/WfYVuEju[f3r=_>_UVcMl8kg&Bh,i;VmU9jrVlf\s8N#s +rVl]nqYp9hp&=R^nG_eRklKr/!9X:=rnRM+rmLekrlY5Vrk/6=riZ7!rh9=Yrf[8?re19#rd4Wbrbh^N +rac":ra,S+r`/qpr_WSgr_*5]r^QlUpd=C7r]u9(JO"cOJO%:Ar^#m;pd>$Lr^ZrYr_*5br_WSkr`/r" +ra,S4raZ%FCB//LDuOeVHiAQpK`6u1P5^jJU&LthY5Ym/]`,bHb5T]cdf.r!h>Z@3k5OTDm/HMRoD\F^ +q#:*gqu6Qnro=%:s8N#sr;QTmqYp6gp&=L\n,DYPkl0T@hu;F1ec*tqc2P]]_#CtFZ2Uj(VZ*+bQN!!F +M#N&+If=KhEW0hSBDuH@?iF:/=8l5!;#X5h9`@W_8H)*X7.iq?6Mj'e5_21O5_21U5lO(K6LmJB6i0:N +7fGpW8cDE_:B")hlJ+0A,^-?D>nPSFoHjhK)UT*OT(UGSc5McXT#L(]DfVF`W"-]dJh\qh#?41 +ir80@li-APnc&1[p\t$gqu6NjrosI^rr2lqqu6Hkq#9scoD\7Ym/H8Kjo43;h#?"+dJhDiao9-U]`,A= +Y5Y?uT`1>XOoUIBNK*pirdXoorc8!UrbMLDra>_2r`K/"r_`Ykr_pd>$Lr^QlWr_*5br_WSkr`/r"ra#M3rac"DrbqdVrd4Wore(30rf[8Jrh07griZ7/rk/6H +!6G8`ao9QadJhhuh#?72jo4KCm/HMRoD\F^q#:*gqu6QnrosI^rr2lqqu6Hkq#9scoD\7Ym/H8Kjo43; +h#?"+dJhDiao9-U]`,A=Y5Y?uT`1>XP5^I?KDpB"HiA'bDZ4GNAH$!9?2dt*sSp=T2V*@K'g:C]88OErLFbJ,Y*"NW,+? +R/WcXVuEju[f3r=_>_RUc2Q,ig&Be+i;Vj;kl0rJnG`%Yp&=acq>U9jrVlf\s8N#srVl]nqYp9hp&=R^ +nG_eRklKo-!9O4r^$!>pd>$Lr^QlWr_*5br_WSkr`/r"ra#M3raZ%FCB//L +DuOeVHiANoKDpl0P5^jJT`1kgY5Ym/]`,bHao9QadJhhuh#?72jo4KCm/HMRoD\F^q#:*gqu6Qnro=%: +s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1eGdhoc2PZ\^](kEZ2Uj(V>d"aQN!!FM#N&+If=KhEW0hS +BDuE??iF7.=8l1u;#X5h9`@W_8H)*X7/K@?6G>^95_21O5_ME%6LmJB6i0:N7fGpW8cDE_:B")h5hn.A,^-?D>nPSFoHjhK)UT*OT(UGSc5JbX8]C']DfVF`;\$\dJhYph#?41ir80@li-APnc&1[pAXpf +qu6NjrosI^rr2lqqu6Hkq#9pbo)A.Xm/H8Kjo43;h#?"+dJhDiao9*T]Df8_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmm;Rje3JRMJO"cOmQg5-pd>$Lr^QlWr_!/` +r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07griZ7/rk/6G!6G8`ao9QadJhhuh#?72jo4KC +m/HMRoD\C]q#:*gqu6QnrosI^rr2lqqu6Hkq#9pbo)A.Xm/H8Kjo43;h#?"+dJhDiao9*T]Df8KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'g:CAr,MErLCaIf>!!NW,+?QiU9jrVlf\s8N#srVl]nqYp9ho`"F\nG_eRklKo-!9O4re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:JNs3#JO"cO +JO%(;mm?e:r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:!GZ?LCAr,MErLCaIf>!!NW,+?QiU9jrVlfVs5h&d/M8g`;[ON]Df&6X8\spSGniRO8at7KDp?!FoHC[D>n/HA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ +6gm@U5_21O5_21R5lO+@6N0@L7/f[T8,c*Z9`@fd;#XJo=T2P(?iFR7B)ZZHEW1+[If=ruM#NJ7Q2[dOpYl;96_#D:Obl5ugeGe8&hu;X7kl0oIn,DkVo`"R`qYpBkr;6KXs8N#srVl]nqYp9ho`"F\n,D\Q +kl0ZBi;VO2g&BCuc2Pia_#CtF[Jm?.VuE@gQi<*IMuelrrdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMe +r_!/[r^QlUpd=L:JO%^MJO"cOJO&Wgmm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiu +rf$i=rg3VWrhoaurjDa;rkJNU!QiI_c2Q,ig&Be+i;Vg:kl0rJn,DnWo`"Xbq>U9jrVlf\s8N#srVl]n +qYp9ho`"F\n,D\Qkl0ZBi;VO2g&BCuc2Pia_#CtF[Jm?.VuE@gQi<-HN;eG.If=ZmErKtUCAq`B@/aI2 +=8l5!;>sAj9`@Z`8,c!W7JK7=6L$ge5_21O5_22Q5jq&76iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6B +DZ4\UHN&BmK)U`.OoC^HT`1kgY5Yj.]DfVFao9QadJhhuh#?72jSnBBm/HJQo)A:\q#:*gqu6QnrosI^ +rr2lqqu6Hkq#9pbo)A+Wm/H2LjQ$=%ro!e2rn7:urltGarkSNFrjDa.rhoagrg3VHrf$i.rdOimrc8!U +rbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;Rj!'l*#JO"cO_EdQVpd>$Lr^QlWr_!/`r_NMjr`&ku +ra#M2raPtDC&i#JDZ4\UHN&BmK)U`.OoC^HT`1kgY5Yj.]DfVFao9QadJhhuh#?72jSnBBm/HJQo)A:\ +q#:*gqu6Qnro=%:s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1eGdhobl5Q[^](kEYl:^&V>d"aQMusE +M#N#*IK"BgEW0hSB)Z9=?iF4-=8l.t;#X5h9`@W_8H)*X7/K@?6G>^95_21O5_ME%6LmJB6i0:N7fGpW +8cDE_:&[ug<;otu=oMe-A,^*>D>nPSFoHggK)UT*O8bFDSGoAaX8]@&]DfVF`;\![d/MPoh#?41ir80@ +lMg5Nnc&1[pAXmequ6NjrosI^rr2lqqu6Hkq#9pbo)A+Wm/H5JjSn*:h#?"+dJhDiao9*T]Df5;Y5Y?u +T`1;WOT:=@N/[afrdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;Rje3JRMJO"cOmQg5- +pd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griZ7.rk&0F!6G8`ao9Qa +dJhhuh#?72jSnBBm/HJQo)A:\q#:*gqu6QnrosI^rr2lqqu6Hkq#9pbo)A+Wm/H5JjSn*:h#?"+dJhDi +ao9*T]Df5;Y5Y?uT`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr)LEW17_If=ruN;et=QiU9jrVlf\s8N#srVl]nqYp9ho`"F\n,D\QkQ0c*!9F.; +rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlU +pd=L:JNs3#JO"cOJO%(;mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8!GZ?LCAr)LEW17_If=ruN;et= +QiU9jrVlfVs5h&d/M8g`;[ON])Jr5X8\spSGniRO8at7K)U2tFoHC[D>n/H@fBa6=oMM%;uTVm +:B!rd8cD9[7fGgQ6gm@U5_21O5_21R5lO+@6N0@L7/f[T8,c*Z9`@cc;#XDmdOpYl;65^])1Nbl5ugeGe8&hu;X7kl0lHmf)bUo`"R`q>U9jr;6KXs8N#srVl]n +qYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF[Jm<-VZ*7fQi<*IMuelrrdt,trd"K_rbh^MraYq8 +ra#M)r`/qpr_NMer_!/[r^QlUpd=L:JO%^MJO"cOJO&Wgmm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8 +rbDFLrc.p_rdOiurf$i=rg3VWrhoatrjDa;rkJNU!QiI_c2Q)hg&Be+i;Vg:kl0rJn,DnWo`"Xbq>U9j +rVlf\s8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF[Jm<-VZ*7fQi<-HN;eG.IK"Nk +EW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6L$ge5_21O5_22Q5jq&76iKOR7fGpW9)_N`:]=5j +<;otu?2e72A,^6BD>nPSH2`9lK)U`.OoC^HT`1kgXo>a-]DfVFao9Qad/M_th#?72jSnBBm/HJQo)A:\ +q#:*gqu6QnrosI^rr2lqqu6Hkq#9pbo)A+Wm/H2LjQ$=%ro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VH +rf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;Rj!'l*#JO"cO_EdQVpd>$Lr^QlW +r_!/`r_NMjr`&kura#M2raPtDC&i#JD>nPSH2`9lK)U`.OoC^HT`1kgXo>a-]DfVFao9Qad/M_th#?72 +jSnBBm/HJQo)A:\q#:*gqu6Qnro=%:s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1eGdhobl5Q[^](hD +Yl:^&V>d"aQMusEM#N#*IK"BgEW0hSB)Z9=?iF4-=8l.t;#X5h9`@W_8H)*X7/K@?6G>^95_21O5_ME% +6LmJB6i0:N7fGpW8cDE_:&[ug;uThs=oMe-A,^*>D>nPSFoHggK)UT*O8bFDSGoAaX8]@&])KJD`;\![ +d/MPoh#?41ir80@lMg5Nnc&1[pAXmequ6NjrosI^rr2lqqu6Hkq#9pbo)A+Wm/H5JjSn*:h#?"+d/M8g +ao9*T]Df5;Xo>3sT`1;WOT:=@N/[afrdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;Rj +e3JRMJO"cOmQg5-pd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griQ1- +rk&0F!6G8`ao9Qad/M_th#?72jSnBBm/HJQo)A:\q#:*gqu6QnrosI^rr2lqqu6Hkq#9pbo)A+Wm/H5J +jSn*:h#?"+d/M8gao9*T]Df5;Xo>3sT`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr)LEW17_If=ruN;et= +QiU9jrVlf\s8N#srVl]nqYp9ho`"F\ +n,D\QkQ0c*!9F.;rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qp +r_NMer_!/[r^QlUpd=L:JNs3#JO"cOJO%(;mm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8!GZ?LCAr)L +EW17_If=ruN;et=QiU9jrVlfVs5h&d/M8g`;[ON])Jr5X8\spSGniRO8at7KDp?!FoHC[D>n/H +@fBa6=oMM%;uTVm:B!rd8cD9[7fGgQ6gm@U5_21O5_21R5lO+@6N0@L7/f[T8,c*Z9`@cc;#XDm=8lD& +?iFR7B)ZZHEW1+[If=ruM#NJ7Q2[dOpYl;65^])1Nbl5ugeGe8&hu;X7kl0oIn,DkVo`"R`qYpBk +r;6KXs8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF[Jm<-VZ*7fQi<*IMuelrrdt,u +rd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:JO%^MJO"cOJO&Wgmm?e:r^HfUr^Zr[r_3;e +r_`Yor`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VWrhoatrjDa;rkJNU!QiI_c2Q)hg&Be+i;Vg:kl0rJ +n,DnWo`"Xbq>U9jrVlf\s8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF[Jm<-VZ*7f +Qi<-HN;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6L$ge5_21O5_22Q5jq&76iKOR +7fGpW9)_N`:]=5j<;otu?2e72A,^6BDZ4\UHN&BmK)U`.OoC^HT`1kgXo>a-]DfVFao9Qad/M_th#?72 +jSnBBm/HJQo)A:\q#:*gqu6QnrosI^rr2lqqu6Hkq#9pbo)A+Wm/H2LjQ$=%ro!e2rn7:trlkA`rkSNF +rjDa-rhf[frg3VHrf$i.rdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;Rj!'l*#JO"cO +_EdQVpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raPtDC&i#JDZ4\UHN&BmK)U`.OoC^HT`1kgXo>a-]DfVF +ao9Qad/M_th#?72jSnBBm/HJQo)A:\q#:*gqu6Qnro=%:s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1 +eGdhobl5Q[^](kEYl:^&V>d"aQMusEM#N&+If=KhEW0hSB)Z<>?iF7.=8l1u;#X5h9`@W_8H)*X7/K@? +6G>^95_21O5_ME%6LmJB6i0:N7fGpW8cDE_:B")h<;otu>Q/"/A,^*>D>nPSFoHjhK)UT*O8bFDSGoAa +X8]@&])KJD`;\![d/MPoh#?41ir80@li-APnc&1[pAXpfqu6NjrosI^rr2lqqu6Hkq#9pbo)A+Wm/H5J +jSn*:h#?"+dJhDiao9*T]Df5;Y5Y?uT`1;WOT:=@N/[afrdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;` +r^ZrWr^HTLmm;Rje3JRMJO"cOmQg5-pd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-. +rfR2Hrh07griZ7.rk&0F!6G8`ao9QadJhhuh#?72jSnBBm/HJQo)A:\q#:*gqu6QnrosI^rr2lqqu6Hk +q#9pbo)A+Wm/H5JjSn*:h#?"+dJhDiao9*T]Df5;Y5Y?uT`1;WOoC==K)U5uHN%saDZ4DMA,]m8?2dq) +sPo=8lM)@/a[8CAr,M +ErLCaIf=ruN;et=QiU9jrVlf\s8N#s +rVl]nqYp9ho`"F\n,D\QkQ0c*!9F.;rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^M +raYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:JNs3#JO"cOJO%(;mm?e:r^HfUr^Zr[r_3;er_`Yor`B)) +ra>_8!GZ?LCAr,MErLCaIf=ruN;et=QiU9jrVlfVs5h&d/M;h`;[ON]Df)7XT#*rSGniROT((8 +KDp?!FoHC[D>n2IA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6gm@U5_21O5_21R5lO+@6N0@L7/f[T8,c*Z +9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruM#NM8QidOpZ2VB7_#D:Oc2Q,ieGe8&hu;X7kl0oI +n,DkVo`"R`qYpBkr;6KXs8N#srVl]nqYp9ho`"F\nG_eRl2KfDi;VO2g&BCuc2Pia_#CtF[f3H/VuE@g +Qi<*IN<,#ure(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:JO%^MJO"cOJO&Wgmm?e: +r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkJNU!QiI_c2Q,i +g&Be+i;Vj;kl0rJnG`%Yo`"Xbq>U9jrVlf\s8N#srVl]nqYp9ho`"F\nG_eRl2KfDi;VO2g&BCuc2Pia +_#CtF[f3H/VuE@gQi<-HNW+S0J,XcnErKtUCAqcC@/aI2=T2>";>sAj9`@Z`8,c!W7JK7=6L$ge5_21O +5_22Q5jq&76iKOR7fGpW9)_N`:]=5j_2r`K/"r_`Yjr_3;`r^ZrWr^HTL +mm;Rj!'l*#JO"cO_EdQVpd>$Lr^QlWr_!/`r_NMjr`/r"ra#M3raZ%EC&i#JDZ4\UHN&BmKDpl0P5^gI +T`1kgY5Ym/]`,_Gao9QadJhhuh#?72jo4KCm/HMRoD\C]q#:*gqu6Qnro=%:s8N#sr;QTmqYp3fo`"C[ +n,DYPkl0T@hu;F1eGdhoc2PZ\_#D"GZMps)VZ*.cQi<-HM#N&+If=KhErKtUBDuH@?iF:/=8l5!;#X5h +9`@W_8H)*X7/K@?6Mj'e5_21O5_21U5lO(K6LmJB6i0:N7fGpW8cDE_:B")hQ/"/A,^*>DZ4\U +G5csiK)UT*OoC^HSc5JbXT#O)]`,_G`;\$\dJhYph#?41ir80@li-APnc&1[pAXpfqu6NjrosI^rr2lq +qu6Hkq#9pbo)A.Xm/H8Kk5O<pd>$Lr^ZrYr_!/`r_NMjr`/r" +ra,S4rac"Crbh^Urd+Qnre191rf[8Irh9=hriZ7/rk/6G!6P>bb5T]cdf.r!h>Z@3k5OTDm/HMRoD\C] +q#:*gqu6QnrosI^rr2lqqu6Hkq#9pbo)A.Xm/H8Kk5O< +K`6K#HN%saDZ4DMAH$$:?N+(+sSp=T2Y+@K'g:CAr,MErLCaJ,Y-#NW,+?Qi<]XVuEju[f3r=_#DLUcMl8kg&Bh,i;Vm< +kl0rJnG`%Yo`"Xbq>U9jrVlf\s8N#srVl]nqYp9ho`"F\nG_eRklKr/!9X:=rnRM+rmLekrlY5Urk&0< +riZ7!rh9=XrfR2>re19#rd+Qarbh^Mrac":ra,S+r`/qpr_NMer_!/\r^QlUpd=L:qa#s%JO"cOJO%1> +r^$!>pd>$Lr^ZrYr_!/`r_NMjr`/r"ra,S4raZ%EC&i#JDZ4\UHN&EnK`6u1P5^gIU&LthY5Ym/]`,_G +b5T]cdf.r!h>Z@3k5OTDm/HMRoD\C]q#:*gqu6Qnro=%:s8N#sr;QTmqYp6gp&=L\n,DYPkl0T@hu;F1 +ec*tqc2P]]_>_+HZMps)VZ*.cQi<-HM#N&+If=KhErKtUBDuH@?iF:/=8l5!;#X5h9`@W_8H)*X7/K@< +6N09h5_21O5_21X5lO(H6LmJB6i0:N7fGpW8cDE_:B")hQ/"/A,^-?DZ4\UG5csiK)UT*OoC^H +Sc5McXo>X*]`,_G`W"-]dJh\qh#?41ir80@li-APnc&1[p\t$gqu6QkrosI^rr2lqqu6Hkq#9scoD\7Y +m/H8Kk5O<$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdV +rd4Wpre191rf[8Jrh9=hriZ7/rk/6H!6P>bb5T]cdf.r!h>Z@3k5OTDm/HMRoD\F^q#:*gqu6QnrosI^ +rr2lqqu6Hkq#9scoD\7Ym/H8Kk5O<sSp +=T2Y+@K'g:C]88OErLFbJGt6$NW,+?R/WfYVuEju[f3r=_>_UVcMl8kg&Bh,i;VmU9jrVlf\s8N#srVl]nqYp9hp&=R^nG_eRklKr/!9X:=rnRM+rmLekrlY5Vrk/6=riZ7!rh9=Yrf[8? +re19#rd4Wbrbh^Nrac":ra,S+r`/qpr_WSgr_*5]r^QlUpd=C7r]u9(JO"cOJO%:Ar^#m;pd>$Lr^ZrY +r_*5br_WSkr`/r"ra,S4raZ%FCB//LDuOeVHiAQpK`6u1P5^jJU&LthY5Ym/]`,bHb5T]cdf.r!h>Z@3 +k5OTDm/HMRoD\F^q#:*gqu6Qnro=%:s8N#srVl`oqYp6gp&=O]n,DYPl2K`Bi;VO2f)F+scMkf^_>_+H +Zi7*+VZ*.cQi<0IM>i/,J,XWjErL"VBDuH@@/aF1=T2>";>sAj9`@W_8H)*X7.iq<6N09h5_21O5_21X +5lO(H6LmJB6i0:N7fGpW8cDE_:B",ilJ.1AH$6@DuOhWGQ**kK`6i-P5^jJT)PVdXo>[+]`,_G +`W"0^df.hsh#?41j8SU'doD\7YmJcALkPjE=h>Z.- +df.PkbPoBX^&GM?YPtL"UAgV\PQ6^ENfO*lrdXoorcA'WrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>M +rhBCkric=1rk8Z@3kPjcGmJcVSoD\F^q>U6iqu6QnrosI^rr2lqqu6Hkq>U'd +oD\7YmJcALkPjE=h>Z.-df.PkbPoBX^&GM?YPtL"UAgV\Pl?^BK`6K#HiA*cDuOPOAH$$:?N+(+rn[S-rmLekrlb;Xrk8$Mr^ZrYr_*5br_WSlr`9## +ra,S4raZ%FCB//LDuOhWHiAQpK`7#2PQ%$MUAh.kYPu$1^&GnJbPoiedf.u"h>Z@3kPjcGmJcVSoD\F^ +q>U6iqu6Qnro=%:s8N#srVl`oqYp6gp&=O]n,DYPl2KcCi;VO2f)F+scMki__>_+HZi7-,VuE:eR/W9J +MZ/>/J,X]lFT-4XC&VZB@/aF1=oMJ$;>sAj9`@W_8H)*X7.iq<6Mj'h5_21O5_21[5lO(E6LmJB6i0:N +7fGpW8cDE_:B",ilJ.1Ac?ECDuOkXH2`[+]`,bH`r=9_df.hsh#?72 +jSnHDm/HJQo)A=]p\t$gqu6QkrosI^rr2lqr;QQlq>U'doD\7YmJcALkPjE=h>Z.-df.PkbPoBX^&GM? +YPtO#U]-_]PQ6^ENfO*lrdauqrcJ-YrbVREraGe4r`K/#r_remr_EGdr^d#Yr^QlTqa9^:r]u*#g-C3S +JO"cOoK`CAlpC\=qaCEQr^ZrYr_3;cr_WSmr`9##ra,S4rac"Erc%jYrd=]qre192rfd>MrhKIlric=1 +rk8Z@3kPjcGmJcVSoD\F^q>U9jr;QZorosI^rr2lqr;QQlq>U'doD\7YmJcAL +kPjE=h>Z.-df.PkbPoBX^&GM?YPtO#U]-_]Pl?^BK`6N$I/\6eE;j\QAH$$:?N+(+rn[S-rmLekrlb;Xrk8Z@3kPjcGmJcVSoD\F^ +q>U9jr;QZoro=%:s8N#srVl`oqYp6gp&=O]n,DYPl2KcCi;VR3f)F+scMki__>_.IZi7-,W;`FgR/W9J +MuJG0J,X`mFT-4XC&VZB@/aF1=oMJ$;>sAj:&[``8H)-Y7K,^M6gR.[5_21O5_21[5kRJ:6Mj.L7/fXS +8,c'Y8cDH`:]=5jlJ.1Ac?ECDuOkXH2`ZC4 +jSnHDm/HJQo)A=]p\t$gqu6QkrosI^rr2lqr;QQlq>U'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX^&GSA +Yl:[%U]-_]PlQjGO,s9prdk&rrcJ-Yrb_XGraYq7r`];&r`&knr_EGdr^m)[r^QlTqa9^:r]u*#g-C3S +JO"cOoK`CAlpC\=qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y6ral(Grc.pZrd=]qreCE5rfmDNrhKImrilC4 +rkABK!6YDdbPoiee,J)#h>ZC4kPjcGmf)_ToD\F^q>U9jr;QZorosI^rr2lqr;QQlq>U'doD\7Ymf)MN +kPjH>hYu7.e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_RAc?3=?iF7.=8l1u;#X5h9`@W_ +8H)*X7/K@<6N0:?5_21O5_21O5i+d*60pr;6i0:N7fGpW8cDE_:B")h<;oqt>5hn.@fBsnPSFT-[e +JGt<&O8bCCRf9)]WrB7%\c0>B_Z%aXci2DmgA]q-iVr$>lMg5NnG`%Yp&=ddqu6NmrVlf\s8N#srVl`o +qYpZC4kPjcGmf)_ToD\F^ +q>U9jr;QZoro=%:s8N#srVl`oqYp6gpAX[_nG_hSlMfoEir7g6fDa7uci1ua_u@CL[/R9.WW&RiRf8QN +N;eS2JGsinFT-4XCAqiE@K'R3=oMM%;Z9Ml:B!lb8H)-Y7K,^M6gR.[5_21O5_21[5kRJ:6Mj.L7/fXS +8,c*Z9)_Tb;#XAl=8lD&?2e:3Ac?HDDuOkXH2`?nLAm,1Pl@-NT`1qiYPts/^Ac"Ka8XEae,ItuhYuL5 +jo4QEm/HMRoD\F^p\t$gqu6QkroX7[rr2ipqYprb_XSrcS3hrdt-)rf@&Drg`t`ri5t%rji$B +rke`[!R/ded/MPog]$+0ir80@lMg5NnG`(ZpAXmequ6NjroX7[rr2ipqYpn/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ +6gR/=61@-j5_21O5_22W5lO(96N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6 +Q2[U9jr;6KUs8N#sr;QQlq>U*eoD\7Y +mf)MQki`$1ro3q6rnIG%rm:Ygrkn`Mrji$4ri5snrg`tQrf@&6re(3!rcS3[rb_XHraPk6r`];&r`&kn +r_EGdr^m)[r^QlTqa9^:r]u9(JO"cOJO%:Ar^#m;r^6QNr^QlWr^m)_r_!GuZR +D>nPSFoHjhK)UQ)O8bFDSGo>`WrB7%\c0>B_u@mZd/MPog]$+0ir80@lMg5NnG`(ZpAXmequ6Njro=%: +s8N#srVl`oqYp6gpAX^`nG_hSlMfoEir7g6f`'D"ci2&c_u@CL[JmE0WrA[jS,S]PNW+_4Jc9upFoH@Z +C]7rF@fB[4>5hY';Z9Ml:B!lb8cD9[7fGjU7/K@<6H;?B5_21O5`e8161mS;6N0@O7/fXS7fGsX8cD?] +:B")h;Z9et>5hh,@fC$>C]8;PFoH^dJc:E'N;f+AS,T)[X8]C'[f4#?_u@dWci2Gnf`'b,iVqsd%b +Q2m!IOHBHure(3!rc\9]rbh^IraYq7r`fA'r`/qor_EGdr^m)[r^QlTqa9^:qa#cuh*?NVJO"cOpH\^D +ksGA:qaCEQr^ZrZr_3;dr_WSor`K/(ra5Y7rau.Irc8!]rdOj!re^W9rg3VTrh]UpriuI7rkSNO!6kPh +c2Q,ieGe8&hu;X7kl0oIn,DkVo`"R`qYpBkr;6KUs8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1eGdho +c2PZ\^](kEZ2Uj(V>d%bQN!!FM>i/,If=NiErKtUB)Z<>?iF:/=8l5!;#X5h9`@W_8H)*X7/K@<6Mj(? +5_21O5_21O5iG!-60U`86i0:N7fGpW8cDE_:B")hQ/"/A,^*>DZ4\UG5csiKDp`,OT(UGSc5Jb +X8]C']DfVF`;\$\dJhYph#?41ir80@li-APnc&1[pAXpfqu6NjroX7[rr2ipqu6HkpAX^`nc&"VlN-55 +!9jFArnm_1rm^qorltG\rkJHEriuI(rh]Ubrg*PFre^W,rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_ +r^d#Xr^?WNlpCS8M*QVWJO"cOb!!M>iV9QidOpZ2VB7_#D:Oc2Q,ieGe8&hu;X7kl0oIn,DkVo`"R`qYpBkr;6KRs5sJm +=T2M'?N+I6BDu]GEW1.\HiAWrM#ND5Q2[9PU&M.mZ2V63^])1Nao9WceGe/#hu;X7jo4TFmf)_To`"O_ +p\t$gqu6QPs8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1ec+"rcMkf^_>_+HZMps)VZ*.cQN3-KOcfX" +re19#rce?_rbqdLrac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKlp?7gh*?NVJO"cOpH[t0qa:?Nr^HfU +r^ZrZr_3;dr_`Ypr`K/)ra>_9rb2:LrcA'_rdXp#re^W:rg3VTrhf[srj)O9rkSNP!6tVjcMl5jec+A' +hu;X7kl0oIn,DkVo`"R`qYpBkr;6KUs8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1ec+"rcMkf^_>_+H +ZMps)VZ*.cQi<-HM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6gR/25_21O5_21O +5iFum6Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$9ADuOhWGQ**kK`6i-OoC^HSc5McXo>X*]`,_G +`W"0^dJh\qh#?41ir80@li-APnc&1[pAXpfqu6NjroX7[rr2ipqu6HkpAX^`nc&"VlN-55!9jFArnm_1 +rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_r^d#Xr^HfS +pd=C7M*QVWJO"cOb_9rb)=NDZF_TF8gC_J,Y-#M>iY: +Qi'oSc4uTO8b"8KDp8tGQ)X^D>n5JA,]j7>Q.b(;uTYn +:]=&e9)_E]7fGjU7/K@36I7uK5_21O5aF\%6M3\E6iKLQ7K,dU8cDB^9`@ie;Z9Yp=T2P(?iFR7B`;lJ +ErL:^I/\ctM>iS8Qi_.IZi7-,W;`FgR/iEOPEZ!(re:?$rd"KarbqdM +rau.rgEbXri#h!rj2U;rkeZS!6tVjcMl8kf)FM)i;Vd9l2L&Kn,DnW +p&=^bqYpBkr;6KUs8N#sr;QTmqYp6gp&=O]n,DYPl2K`Bi;VR3f)F+scMki__>_.IZi7-,W;`FgRJrEL +MuJG0J,X`mF8g+WC&V`D@K'O2=oMJ$;Z9Jk:&[ca8H)-Y7K,^M6fUN25_21O5_21O5jCVm6Mj.L7/fXS +8,c*Z9)_Qa;#XAllJ12Ac?ECDuOkXH2`Z@3 +j8SRJriXW;`t!Zi7Z; +_Z%RScMl8kf)FM)i;Vd9l2L&Kn,DnWp&=^bqYpBkr;6KRs5!_SrVl`oqu6BipAX^`nG_kTm/H/Hj8Rs8 +g]#e'dJh>g`rn5JAH$!9>lIn*<;oep:]=)f9)_E]7fGjU +7/K@36I7uK5_21O5aF\%6M3\E6iKLQ7K,dU8cDB^:&[rf;Z9Yp=oM\*@/a^9C&VuKF8gF`If>$"MZ/_: +R/W]VU].FqZi7N7_>_IRbPoogf)FG'hu;[8k5O`Hmf)bUo`"R`q#:0ir;QZQs8N#sr;QTmqYp6gpAX[_ +n,D\QlMflDiVq^5f)F+sci1ua_u@CL[/R9.WW&RiRK/QQPa)0+reLK(rd+Qdrc%jPrau.!.6iKLQ7K,dU8H)3[ +9)_Tb;#XAl=8lD&?2e:3B)ZTFE;k"ZHN&KpLAm/2Pl@-NT`1qiYPtp.^Ac"Ka8XEae,IqthYuL5jSnHD +m/HJQoD\F^p\t$gqu6NjroX7[rr2ipqu6Hkp\smcoD\4XliHD:!:'REro*k5rmq(srm1Sarkn`Lrj;[. +ri,mirgNhNrf$i3rdk&prcS3ZrbMLFraGe3r`T5%r_i_lr_EGbr^m)[r^QlUr^?WNj$JnoJO"cOJO%^M +i'RE1r^?`Sr^QlXr^m)]r_EGhr_i_sr`];,raGe5hh,@/ad;C&W#LFT-UcJ,Y3%N;eqd[t[/RZ9_>_IRbl6&ifDaP(i;Vg:kPjiImf)bUp&=^bq#:0ir;QZQs8N#srVl`oqYp6gpAX^`nG_hS +lMfoEir7j7fDa;!ci2&c`;[ON[f3N1WrA[jRfJ]SQ'M?.reLK(rd4Wfrc.pQrau.=ra,S.r`K.tr_WSi +r_*5_r^d#Xr^HfSqa9C1JO&?_JO"cOJNs3#i'RE1r^?`Sr^QlXr^m)^r_NMjr_i_tr`];-raPk>rbMLQ +rc\9frdk'(rf-oBrgWn[ri5t$rjMg@rl"fX!7(\lci2DmfDa\,ir8'=lMg2MnG`(Zp&=^bqYpBkrVQTV +s8N#srVl`oqYp6gpAX^`nG_hSlMfoEir7j7fDa;!ci2&c`;[ON[f3N1WrA[jS,S]PNW+_4Jc:#qG5cL\ +C]7rF@fB^5>Q.b(;Z9Ml:]=#d9)_B\7fGjU7/K@36Ms*"5_21O5_22c5i>!.6iKLQ7K,dU8H)3[9E%`d +;>sJm=T2M'?N+F5BDu]GEW1.\HiATqL]3;4Q2[9PT`1tjYPu!0^])1Nao9Wce,Ituhu;X7jo4QEmJcVS +o`"O_p\t$gqu6QkroX7[rr2lqr;QQlp\smco`"@Zm/cM;!:'RFro3q7rn%/!rm1Scrl"fNrjMg1ri5sj +rgWnPrf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$JnoJO"cOJO%^Mi'RE1 +r^?`Sr^QlXr^m)^r_NMjr_i_tr`];-raPk>rbDOSE<("XG5cjfJc:H(NW,4BS,T)[WrB4$[f4&@`;[mX +ci2DmfDa\,ir8'=lMg2MnG`(Zp&=^bqYpBkrVQTSs5!_SrVl`oqu6Ejq#:!dnc&"VmJc>Kjo46Z(+ +e,IYlao93W]`,A=YPtL"UAg\^PQ$UAM#Mr(HiA3fE;jYPBDu?=?N+1.&?N+C4BDu]GE;k%[HiAQpM#NG6P5_!N +U&M"iYPts/]`,hJaSsKae,J#!h>ZC4jo4KCmJcSRnc&7]p\t!fqu6NmrS[_Trr2lqr;QQlp\smcoD\7Y +mJcGNjo49=hu;=.ec*qpb5T?Y^](_AZMq!*UAg\`QNrf@&8re(2trce?^rb_XJrac"8r`fA(r`&ko +r_NMer_!/]r^QlUr^?NKk!FVak!4J_JO"cO!'o[5pd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@K +rc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlP5f!RT3mec+8$hu;X7jo4TFmJcVSoD\F^p\t$gqu6Qk +roX7[rr2lqr;QQlp\smcoD\7YmJcGNjo49=hu;=.ec*qpb5T?Y^](_AZMq!*UAg__Qi<'FM>i/,I/\?h +ErKqTB`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6fp`55_21O5_21O5jCVs6MNqI7/fXS7fH!Y9E%Wa +:]=8k<;p#!>Q/"/AH$nSTGQ*!hKDp`,O8bLFSc5A_Xo>X*\,O/A`;[pYd/MSpg&Bn.ir8'=li-;N +nG`%Yp&=^bqYpBkrVQTVs8N#srVl`oqYp6gpAX[_nG_eUlg"Q:roO.=rnm_.rmh"prlY5YrkJHArj)O* +rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Yr^HfSpd=11P!FR`JO"cOe3N._ +pd>$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@K!HN2\ErL:^I/\ctM>iS8QiZ(+ +eGdenao96X^&GM?Z2Ua%UAg__Pl?aCMZ//*I/\BiE;j\QC&VT@?iF=0sAj9`@Z`8H)-Y7fGgQ +6fp`16.nMS5_21O5bC=:60pr86N0@L7/f[T8,c'Y9)_N`:]=5j<;otu>lJ+0@fC*@D>nMRGlE*iJGtH* +NrG7ASc5D`WW'1%\,O)?`;[pYci2Gng&Bh,iVqsg`W![P\c/r7Y5Y3qT)P,VOT(.: +K`6H"H2_maDZ4DMAc?*:>lIn*<;oep:]=)f9)_E]7fGjU7/0.36Ms.J6%M:T5_21O5k@8960:N/6iKLQ +7K,dU8cDB^:&[rf;Z9Yp=oM\*@/aa:C&W#LF8gF`If>$"MZ/_:R/W]VU].FqZi7N7_#D@QbPoogf)FG' +hu;[8k5O`Hmf)_To`"R`q#:-hqu6QkroX7[rr2lqr;QQlq#:!do`"@ZmK)\@!:9^Iro="8rnIG'rmC_g +rl+lPrji$7riZ6qrgs+VrfI,:re19"rd"Karbh^Mral(:r`oG*r`&kpr_NMfr_!/]r^QlUr^?NKk!Ji/ +Rm;NiJO"cOh*Ca$k!Ji1r^?`Sr^QlYr_*5br_NMkr`&l"r`oG1ral(Crb_aXEr^:\GlE0kK`6l.OT(XH +T)PMaY5Yd,\c0DD`r=0\dJh_rg]$+0j8S3?m/HGPnG`(ZpAXjdqYpBkrVQTSs5!_PrVl`oqYp9hp\sd` +nc%tUl2KiEir7g6gA]Y%d/M5f`W!UN\Gif5WrAjoTDk/UOT(1;Jc:)sH2_g_DZ4DMA,]m8?2dq)sSp=T2V*@/a[8CAr)L +EW17_IK"fsMuJh;Q2[ETV#ICnZMqB5^Ac+Nb5Tceec+8$hYuO6k5OWEmf)_ToD\I_q#:-er;QZNs8Mur +r;QTmq#:!dp&=L\n,D\QkPjQAi;VL1f)F+sbl5Z^_>_%F[JmB/V>d(eRK8kGrfI,;reCE&rd+Qcrc%jP +rb)45hh,@/agd[t[/RZ9_>_IRbl6&ifDaP(i;Vg: +kPjiImf)bUp&=^bq#:0ir;QZNs8Murr;QTmq#:!dp&=L\mfDeA!:9^JroF(:rnIG'rmLeirl>#Srjr*: +ricq)d/M8ga8WmR]Df5;XT#*rTDk8XP5^I?K`6K#HiA*cE;j\QAH$$:?N+(+dRq[Jmc:_#DCRbPolffDaP(i;Vg:kl0lHn,DnWo`"Uaq>U6ir;QZorn[VRrVl`o +qu6Ejq#:!do)A+WmJc>Kjo46Z(+eGdbmao96X^&GJ>YPtL"U&^_bSXobDrf@&9rdauqrce?\rbVRJ +raPk6r`oG'r`&kor_NMer_!/\r^ZrWr^?EHi'RE/JO&lnJO"cOO$N\1h*V!+qaCEQr^ZrYr_!/`r_NMj +r`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrltMn!S#Wug&Bh,iVqsU9jr;QZNs8Murr;QTmq>U0gpAXX^n,D_Rkl0]CiVq[4f`'D"cMkrb`;[IL[f3K0W;`Oj +Sc4iPO8b%9JGsrqGQ)R\D#S/J@fBa6>lIe'<;obo:]=&e9)_B\8,c!W7.iq16Ma%J6%M:Z5_21O5l!\E +6/=m)6i0:N7fGpW8H)6\9`@ie;>sPoZC4jo4KCmJcVSo)A@^p\t!fqu6NmrS@MQrVl`oqu6Ejq#:!do)A(YmHjo@roj@Cro*k4 +rn.5"rm(Mbrl"fLrjMg0ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG'r`&kor_NMer_!/\r^ZrW +r^?EHi'RE/Tg4/oJO"cOj$`;[mXcMl>mg&Bh,iVqsU9jr;QZNs5!_Srr2lq +r;QQlq#:$eo`"F\n,D\Ql2KiEi;VO2f`':tc2Pia_>_+H[f3H/W;`OjRf8QNO8ak4Jc:)sFT-7YD>n,G +@fBa6=oMM%<;o_n:B!rd9)_BY7fGjU7/K@06Mj(.5_21O5_22!5lO(-6N0@L6iKLQ7JfRR8H)6\9`@fd +;#XGn=8lD&?iFR7B)ZZHEW1(ZIK"fsL&R/4Pl@-NUAh+jY5Ym/]`,bHao9QadJheth#?72k5OTDli-AP +o)A:\p\t!fqYpElrVlfPs82cor;QQlq#:!do)A.Xmf)GLjo49=h>Z+,ec*nob5TBZ^AbYAZMpm'U]@"f +T:c+JrfI,;rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_*5]r^ZrWr^?EHi'R<,JO&uqJO"cOP!K"4 +g-Y[(qaCEQr^ZrYr_*5br_NMjr`&kura#M2raYqBrb_XSrd"Klrdt--rfI,Erh'1cri5t'rj_sArl+lZ +rm(Sp!S,a"g&Bh,ir8*>kl1#LnG`"XpAXjdqYU3irS@MNrVl`oqYp9hpAXX^nG_kTkl0]Cir7d5g&BP$ +ci2)d`W!UN\Gif5WrAgnTDk,TOT(1;K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr)LEW17_If=ruMuJh; +Q2[ETV#ICnZMqB5^Ac+Nb5T`dec+8$h>ZF5k5OTDmf)_To)A@^q#:-er;QZNs82cor;QQlq#:!do)A+Z +md:)Croj@Cro3q5rn7;$rm1Sdrl+lNrj_s5ri5snrh'1TrfI,;rdt,trd"K_rbh^MraYq8ra#M)r`/qp +r_NMer_*5]r^ZrWr^?EHi'R<,Ud0JrJO"cOk!8o3g-Y[(qaCEQr^ZrYr_*5br_NMjr`&kura#M2raYqB +rb_XS!I8qjH2`9lK)U]-OT(OETDkYcWrB='\Gj5A`W"$Zci2Jog&Bh,ir8*>kl1#LnG`"XpAXjdqYU3i +rS@M0s8N#prVlZmq#:$eo`"F\n,D\Ql2KiEi;VO2g&BG!cMl#d_Z%7J\Gi`3WrAdmSGniRO8at7KDpB" +FoHF\DuODKAH$!9>lIk)sSp=T2S)@/a^9BDuiKErL4\J,Y*"M#NJ7Q2[9PU].7lYl;-2^&GnJb5T]cdf.r!h>Z@3 +k5OTDm/HJQo)A:\p\t!fqYpHjrn[VOrVl`oqYp9hp\sd`nc&"Vl2KlFj8Rp7gA]\&d/M5f`rU6fr;QZNs82cor;QQlq#:$eoD\:Zn,DSNkPjN@ +hYu7.f)F%qbPoN\_#CqEZi7$)V>d+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm:B!rd8cD9[ +7fGjU7/0.46M*Tq5`S*\5_22u5hA@"6iKLQ7K,dU8,c*Z9`@fd;#XDmdOpZi7N7_#D@Qbl5ugf)FA%hYuR7k5OWEn,DkVoD\L` +q>U6fr;QZNs5!_SrqlZnqu6Hkq#9scoD\7Ymf)POkl0T@hu;F1eGdhoc2P]]_#CtFYl:^&VZ*4eRJrEL +MuJG0J,X`mFT-4XC]7rF@fB^5>Q.b(;Z9Ml:]=#d9)_E]7f,XL6eXm+60LRb5_21O5d!BO6/=m)6i07M +7JfRR8cD?]9E%`d;>sJm=T2M'?N+F5BDuZFDuOkXH2`U9jrVQTMs8N#srVl`oqYp9hp\sganc&"Vli-,IjSn*:h#?"+d/M8g +ao9*T]Df8$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdt-( +rf@&CrgNh\ri#h!rjMg=rkSNTrltGh!8.D+g&Be+i;Vg:kl0oIn,DnWo`"Uaq>U6ir;QZorn[VRrr2lq +r;QQlq#:$eo`"C[n,DYPkl0ZBi;VO2g&B@tbl5``_#CtF[f3H/W;`OjRf8QNO8an5K)U5uFoHC[D>n2I +A,]j7>5hV&dKRrr)iorqcWhrqHEarp^$Xmf;hUli-,IjSn*:h#?"+d/M8gao9*T +]Df8dKRqu-NlrqcWh +rq??`rpg!Vrp0RIro="9rnRM'rmLekrl4rRrk8<;riZ7!rh07ZrfmD@reLK)rd4Wfrc8!Srb2:Ara5Y/ +r`T5!r_i_kr_iV9QN!ERV#ICnYl;03^Ac"KbPoie +dK%u%g=lP^ro!elJ.1Ac?BBDuOhW +GQ**kK`6i-OT(RFSGo>`WrB7%\Gj5A_Z%aXci2AlgA]q-i;VmU6ir;QZorn[VR +rr2lqr;QQlq>U0go`"C^n*^8FrpB^LroX4_1r`T5$r_i_lr_EGbr^m)[r^QlUr^?NKg-Yd)W^),#JO"cOlp1P9g-YR%r^?`Sr^QlX +r^m)]r_EGhr_i_rr`K/)ra>_:rb2:LrcA'_!IoS!J,Y-#M>iV9QN!ERV#ICnYl;03^Ac"KbPoiedf.u" +h>Z@3k5OWEmJcSRo)A:\q#:*gqYpElrVlfPs4[MPrr2lqr;QQlq>U*eo`"C[nG_eRl2KcCi;VR3f)F.t +ci2#b_u@FM[JmE0X8\glSGniRO8b"8KDp;uGlDd`DuOMNB)Z3;?2e%,_u@aVci2Dmf)FM)iVqp;l2L&Kn,DkVo`"R`q>U6iqu6Qnrn@DOrqlZnqYphYu:/e,I_nbl5NZ^](hDYl:['V?*Qkrgs+Vrf[8=re:?%rd"KbrbqdNrau.=ra#M+r`B(s +r_`Yjr_3;`r^m)YqaL'Ci'RE/JO'3"JO"cOQpCX:h*Ud%r^H]Rr^m)]r_3;er_`Ymr`B)&ra#M4rau.E +rbqdXrd"KnreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1Sm!8@P/g]$(/iVr$>lMg2MnG`%Yo`"Xbq>U6i +rVQTMs8N#prVlZmq>U0go`"F\nG_hSl2KlFiVq^5g]#\$d/M8g_u@FM])Jr5X8]!qT)P,VP5^C=L&QW% +H2_pbDuOMNB)Z9=?2e"+=8l+s;>sAj9`@Z`8cD3V7Iih86LdDA6%M:c5_21P5QF(N5sahYu:/e,I_nbl5NZ +^](hDYl:^&VZ*1dR/W9JMuJG0JGsinFT-4XCAqiE@fB[4=oMM%;Z9Pm:]=&e9)_E]7f,XF6f:<16)m2$ +5_21O5jUc86/=m#6iKOO7fH!Y9)_N`:]=5j;Z9bs>5hh,@fC!=CAr/NFT-OdJ:IWMreCE1rf[8Jrgs+d +riH+'rjr*Crkn`Zrm1SmrnIG/ro*k>rp'LMrp]pYrq-3brqZQirr)`nh>c4/rr2oqrqucmrqcWgrq??_ +rp]pSrp0RFro3q7rn7;$rm:Yfrl+lOrji$7riZ6rrh'1ZrfI,_=rbMLPrc\9frdb!'rf$ilJ.1AH$nSTGQ*!hKDp]+NrG=CRf8uZWW'("Zi7Z;_Z%RScMl8kec=M, +h;/(gro="Arp0RPrpg![rq??erqcWkrr)`nh>dKRqu-NkrqcWirq??`rpg!Vrp0RIro="9rn[S)rmLek +rl4rRrk8<;ric=#rh07[rg!JCre^W,rd=]hrc8!Trb2:Ara>_1r`T5#r_i_kr_3;`r^luWr^QlTnjE"8 +i^/2]TKn&nN^35'iBm3)qaC_.IZi70-WW&RiS,S]PNrFn7KDp8tGQ)X^D>n5JAH$!9>lIn* +lJ.1AH$nSTGQ)sjK7a/VreUQ6rg!JOrh07iriZ7,rk8c+,rr2oprql]krqQKdrq-3ZrpKdProa:Aro!e1rmq(srlkA^rkeZHrjDa/rhoahrgj%Prf@&9 +rdk&srd"K_rbh^NraYq8ra#M*r`/qrr_WShr_3;`r^d#Yr^QlUr^?NKe3`dmJO"cOJO$n6r^#%#pd>$K +r^HfUr^ZrZr_!/`r__8rb;@Krc.p_rdFcsreg]8rfd>PrhBCiric=.rjr*Grl>#^ +rmLetrnIG1roF(Arp9XPrp]pZrq??drqcWkrquZmgAh0Oqu-Nlrql]krq??`rpg!Vrp0RJroF(;rndY+ +rmUkmrl>#UrkJH?ricC'!NW:#UAg__Qi<*GMuJG0If=WlFT-4XCAqlF@K'U4>Q.\&;uTVm:B!rd9)_B\ +8,c!Q7/0.!6Ae$Z5_21r5h&-q6hj(K7fGpW8H)6\9E%]c;#XGn&?N+C4BDu]GDuOkXH2`9lL&Qu/ +OT(UGSc5A_X8]@&[Jmr?_u@^Uci2Dmf)XY.hVS7jroF(Crp9XQrpg![rq??frql]mrr)`nh>dKRqu-Nl +rql]krq??`rpg!Vrp0RJroF(;rndY+rmUkmrl>#UrkJH?rilC&rhBC_rg3VGrepc0rdOilrcJ-XrbDFF +raGe4r`fA&r_remr_EGdr_!/\r^ZrWpdFmEo0VG'JO#knJO#5\oKqM'pd=gEr^QlWr^d#\r_*5cr_WSn +r`9#&ra,S4rb)4GrbqdXrd"Klre:?/rfI,Grgj%_ri?%&rjDa?rkn`Urm1Smrn%/+ro*k;rosFKrpTjV +rq-3`rqcWkrqucoqu5FOrr2fnrqucmrqcWfrq$6]nGr+Yn,DYPl2KcCiVq^5fDa7uci1ua_u@FM[JmE0 +X8\jmSc4uTOT(1;L&QQ#H2_pbDuOMNBDu?=?N+1.&?N+C4BDu]GDuOkXH2`6nKnTM\reg]:rg3VTrhBCmrilC0 +rkJHMrl>#armUkurndY5roF(Crp9XQrpg![rq??frql]mrr)`nh>c+,rr2oqrquclrqQKdrq-3[rpTjQ +roj@Cro*k3rn.5!rm1Scrl"fLrjVm3ri,mmrh'1UrfR2>re(3"rd4Wcrc%jRral(=ra5Y.r`B)!r_WSh +r_rg*PUrhTOmriuI2rk/6KrlY5drmUkurnRM3roO.Crp9XPrpg![rq??drqcWkrr)`n +fDkjLrr)iorql]krqHEbrq$-YrpB^NroO.>rnm_/rmh"prlY5ZrkSNCrj)U-!NrU)V#I"cRf8HKNW+b5 +JGsopGQ)R\D#S,I@fBa6>lIh(rnm_/rmh"p +rlY5ZrkSNCrj2U,rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKP +pd=X>i^/2]TKn&nN^35'iBm<,qaCEPr^QlWr^m)^r_EGhr_i_pr`B)(ra5Y6rb2:Irc%j\rd=]qreUQ4 +rfR2Krh'1criZ7+rj_sCrl+lZrm:Yprn@A/ro3q=rp0ROrp]pYrq69brqcWkrqucorr1OLrr2oqrqucm +rqcWgrq-<`o)SC]nG_hSli-#Fj8Rs8gA]Y%d/M2e`W![P\Gii6Y5Y6rTDk;YOoC@>M#Mr(HiA6gE;j\Q +B`;K??iF=0=8l5!;Z9Ml:&[fb8cD9[7f,XR7/0.!6FK.15_21O5kmUo6MNqF7/fXS7fGpW8cDB^:B")h +;Z9Yp=8lJ(?iFO6B`;iIE;k(\I/\WsLkl%erf$i=rgNhYrhTOrrj)O5rkSNPrlY5ermh#%rnm_7roO.F +rpKdTrq$-^rqHEgrql]mrr)iqgAfe)rr2oqrqucmrqZQgrq??^rp]pTrosFFro="8rn@A&rm:Ygrl>#R +rk&0;riZ7!rh9=[rfmDCreLK*rdOijrcA'Wrb2:Ara>_2r`];'r_i_lr_NMer_!/]qa^WTr^?5hV&5hn.@fBsrk\TU +rltGirn.5)ro!e:roj@HrpTjVrq$-_rqQKhqu$Hlqu5+Frr2oqrquclrqQKdrq-3\rpTjRroj@Cro3q5 +rn.5"rm1Sdrl+lNrj`$8!OK-3X8\spT`1>XPQ$UAL&QZ&IK"BgErKtUBDuH@@/aF1=oMM%;Z9Ml:B!oc +9)_BV7efCK6c_Ta5_21O5diqs6N0@I7/07N8H)3[9E%]c;#XAl=8lA%>lJ.1AH$6@DZ4YTFoHggJc:B& +NrG4@R/WcXVZ*XqZi7K6^Ac+Nb5T`deGe/#h#QF8io9t"roj@Krp]pXrq-3`rqQKhrql]nqu5+Frr2oq +rquclrqQKdrq-3\rpTjRroj@Cro3q5rn.5"rm1Sdrl+lNrji$7ri?$prh07Xrfd>Are:?&rdFcgrc8!U +rb)4@ra>_1r`T5%r_i_lr_EGcr_!/\pdY$Hqa:0GcpE:KZ9Wt+TKqL'j?ii5pdFmHr^d#[r_*5cr_WSl +r`B)%r`oG1rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^S +rpp'\rq??drqcWkrr)`neGoOIrr)iorqcWhrq6BboDnO_o)A+WmJc>Kjo49=h>Z(+eGdenb5TBZ^Ab\B +Zi7$)V>d.eR/WlIn*=8l+s;#X5h9E%Q_8GG[L7/K?m6HDEC5_21X +5fH(h6hj(E7fGsX8cDB^:B")h;Z9bs=oM\*@/a^9BDufJEW1+[IK"fsK`R3o!07&Arg<\Xrhf[qrj2U6 +rkABNrlY5drm^r#rn[S5roX4DrpB^Srpp'\rq??drqcWkrr)`ngAf\&qu-NlrqcWhrqHEarpp'Wrp9XJ +roO.;rnRM+rmUkmrlb;XrkABCrilC&rhf[frgNhMrf-o4rdt,srce?^rbh^Mrau.;ra#M-r`/qsr_`Yk +r__;rbDFNrc8!^rd=]sreUQ6rfmDNrh07friH+'rjr*CrkeZXrm1Smrn7;,ro!eQ.b(;uT\o:]=)f9)_EZ8,c!T7K,^G6d\5j5_21O5dir' +6M3_C7/fXP7fGpW8cDB^:&[rf;>sMn=T2P(?iFO6B)ZQEDuOhWGlE3lKDp]+O8bCCRf9&\WW'+#[Jmf; +_#DFSbl5ugf)FD&hZ2[;j5^.$rosFMrp]pXrq69brqZQjrqucoqu5+Frr2oqrqucmrqZQfrq69]rp]pT +rosFFro="8rn@A&rm:YgrlG)Srk&0;ric="rhBC\rg!JDreUQ,rdXolrcJ-XrbDFEraPk6r`fA(r_reo +r_NMfr_!/]qa^WTqaLKPo0WLFd6`CLZ9Wt+TKqL'm6^J5qaCEPqaUQTr^m)^r_Q/"/@fC!=CAr/NF8gF`J,Y*"L]NQt!0@,DrgNh\ri,n#rjDa; +rkSNSrlkAgrmq)&rnm_8roX4ErpKdTrpp']rqHEfrql]mrr)`ngAf\&rr2fnrqcWhrqHEarpp'WrpKdO +roj@@rnm_1rmq(srm(M_rkeZKrjDa0ri?$lrgj%UrfI,;reCE&rd=]hrc%jRrbDFCraGe4r`K/#r`/qo +r_EGer_*5_r^luWr^QcRr^?3Bi^/2_JO4oSX$Z/?qaCEPqaUQTr^m)]r_*5cr_NMir`/r!r`T5,raGe: +rbDFKrc%j\rd4WpreCE1rfI,Hrgs+`riH+'rjDa>rkeZSrm(Mkrmq)(rnm_7roj@HrpKdTrq$-^rqQKg +rqcNirr(.Brr2fnrquclrqQKerq-3[rpTjProsFDro!e2rn7;"rm1Serk\TJ!4`-@\c/i4X8]!qTDk8X +Pl?[AL]2o)I/\BiF8g(VCAqlF@/aI2>Q.\&;u9Dj:B!rd8cD9[8,c!T7K,^G6bbte6*rn.5_22G5lO'a +6M3_C7/fXP7fGpW8H)3[9`@c`;#XGn&?N+@3BDuZFDZ4_VGQ*!hK)UT*NW,1ARf8rYVZ*XqYl;34 +^&GkIbPoiee,J&"h#?43jT4K)roj@IrpTjWrq-3arqZQiqu$Hlqu5+Frr2fnrquclrqQKerq-3[rpTjP +rosFDro!e2rn7;"rm1Serk\TJrji$4ri?$qrh'1XrfmDAreLK)rd=]ircA'VrbDFFra>_2r`fA&r_r\j +r_EGdr^m)[r^ZrWqaLKPp-\dG^I%ocJO%@CJO$_1r^"dqo0W+;qaCEPqaUQTr^d#[r_3;cqb[8kr`9#& +ra,S3rb)4Frbh^Vrce?hrdt-*rf-oArgNhYrhf[qrilC4rk8Q.t.@/agrbVRPrc8!ardOiureg]8rfd>Orh07eriZ7+rj_sBrl"fXrm1Smrn%/*ro!e9rosFK +rpTjVrq-3`rqQKgrqcWlrr)iqcN!nCqu-NlrqcWhrqHEarpp'WrpB^Lroa:>rndY/rmh"qrltG\rkJNH +!PH)EZi70-WrA[jSGnlSO8b%9L&QT$HN&'dE;j\QC&VWA@/aI2=T2>";uTYn:]=)f9E%Q_8GbpV7f,XO +7/K?d6Erh-6%M>I6+fP`6hNkH7JfRR8,c'Y8cDB^:&[rf;>sMnrndY/rmh"qrltG\rkSNGrj2U-ri5sjrg`tSrf@&9re:?$rd+Qd +rc%jQrb;@Ara>_2r`K/"r_renr_NMfr_*5_r^coVr^QcRqa:HP6iBBe6@hGC6%M>36-;Oc6N0@F7/fXP +7fGpW8H)3[9E%Zb:]=5j;uThs=T2V*@/a[8C&VrJE;k"ZHN&EnL&Qu/O8bLFSGo2\WrB1#Zi7W:_#D:O +c2Q,iec+>&hYuL5kPjcGmJcSRo)A:\p\t!fqYU3irVQTDs8N#prVl`oqYp6jp\+[^rq-3\rpTjRrosFF +ro*k5rnIG&rmC_irl"fOrk/6:ric=$rh07\rg3VFreg]/rdXonrcS3ZrbVRJraYq8ra#M*r`/qrr_`Yj +r__8 +rb;@Jrc%jZrd+Qnre:?/rf7)HQN3BOSGo2\WrB1#Zi7W:_#D:Oc2Q,iec+>&hYuL5kPjcGmJcSRo)A:\ +p\t!fqYU3irVQTJs4%)JrqlZnqu6Hkq>U*eo`"C[nG_hSlMfoEj8Rs8gA]\&dJh>g`rU6iqu6Qkrlb?=rVl`oqYp9hp\sgao)A.Xmf)POkl0T@ +hu;F1f)F+sci1ua_Z7FP^VBcVriuI)rhKIbrgNhKrf-o6rdk&srcnE^rbh^Nrac";ra5Y/r`B)!r_i_m +r_NMfr_!/]r^d#YqaUHOr^>I-O@"LbJO68$i'[B0r^HTOr^ZrYr^m)^r_*pTDk;Y +OoC@>M>i)*IK"KjEW0kTC]7lD@fBa6>Q._'sAj:&[ca8cD9[8,GdQ7K,[U6UTWrJO65#JO5Jc +nO)e5qaCEPpdY6Qr^d#[r_*5br_NMjr_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o>rgNhXrhKIp +rj)O3rkJHMrl>#armUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$HlbQ%Jn(df.Sla8X!U^](\@Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/ +=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR7+t#@6@hIS6@hK#6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q +=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N*NW,%@R[O5Frgs+ariQ1*rjMg@rkn`Urm1Smrmq)(rnm_7roj@H +rpKdTrq$-]rqHEfrqcNirr(@HdJs4Frr)iorql]krqHEcrq$-YrpKdProa:Aro!e3rn.5"rm1Sdrl+lO +rji$8riQ0trh9=\rg!JErepc0rdXoorc\9\rbh^Mrb)4_lJ+0@fC!=C&W&MF8g@^If=ruLAm54P5^dHTDkYcWW'+#[Jmf;_#D@Qbl5ug +ec+8$hu;X7jT+QHlK\B8rpTjWrq69arqZQirql]nqu4e=rr2fnrql]krqZQerq-3\rpTjQrp'LEro3q7 +rn7;$rm:Ygrl4rQrk&0;ric=#rhKIbrg*PHrf6u4rdt,urc\9]rbqdMrau.=ra5Y/r`T5#r_r\jr_EGd +r_*5_r^m)[r^ZcRrC6QNogF?uRR;WnMaR5,r'^Q.e)lJ+0@fC!=C&W&MF8g@^If=ruLAm54P5^aJT:Z+U +rhTOmric=/rk&0Frl4r]rm:Yprn7;.ro3q=rp'LLrpTjWrq69arqZQirql]nqu5+FcN!nCrqucmrqcWh +rq??`rpg!VrpB^LroX4>rndY.rn%.rrlkA_rkSNGrjVm1ri5sorgs+Wrfd>@reUQ+rdOimrc\9[rb_XL +rac":ra,S-r`K/#r_reor_NMgr_rosFLrp]pXrq-3`rqQKhrql]mrr)`nbQ%S@qu-Nlrql]krq??arq$-YrpB^Nroa:Aro!e2rn.5! +rm(Mb!5eiT_u@@K\Gii6X8]!qU&LM[Q2ZjDM>i2-J,X`mFoHC[D>n8KB)Z3;?N+4/=T2A#<;obo;#X5h +:&[ic9E%N^8G,LJ7Y+#'7=dmY7?U+77eK:N8H)3[9E%Wa:&[oe:]=5j<;oqt=T2S)?N+@3B)ZNDD>nPS +FoH[cJ,Y-#M>iS8Pl@-NU&LqgX8]I)\Gj2@_u@aVcMl;lfDaS)i;Vg:k5afKlg+Q;rp]pYrq69arqcWk +rqucoqu4e=rr2fnrqucmrqcWfrq69^rp]pSrp0RHroF(:rnRM*rmUklrlP/Wrk8<@rj2U)rhf[grgNhO +rf@&8re19#rd"Kcrc.pSrb;@Dra>_3r`oG)r`9"tr_`Ykr_EGer_3;ar^m)[q+(BRpdTg'N^\LfJOTK* +pdXpHr^d#[r_*5ar_gBkpAXaa +oD\7YmJcGNkPjQAi;VO2f`'A!cMkrb_u@@K\Gii6X8]!qU&LM[Q2ZjDM>i2-J,X`mFoHC[D>n8KB)Z3; +?N+4/=T2A#<;obo;#X5h:&[ic9E%N^8G,LJ7\iJ(7=dmY7HR&67eK:N8H)3[9E%Wa:&[oe:]=5j<;oqt +=T2S)?N+@3B)ZNDD>nPSFoH[cJ,Y-#M>iS8Pl@*PTqMI[rhf[qrj2U6rk8ra>_3r`fA(r`/qsr_i_lqbR2cr_3;a +r^uiTqag'DqF6$*JOY2[]ghQ_ognsOqb$i\r_3;cr_NDfr_i_or`/r"r`];-ra>_9rau.Hrc%jWrcnEi +rdb!'rf$i5hY'sAj;#X5h9`@ZW8cD9U7tF/)7Y+$[7Zp798,GjS +8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fHE;jtYH2`6kK)UT*NW,+?R/W]VU].7lYPts/]DfVF +a8X9]d/MSpg&Bh,iVqsrpg![rq69brqcWkrqucoqu4e=rr2fnrqucmrqcWgrq??`rpg!V +rp9XJroO.#]rm:Yprn7;,ro*kgBkp\smco`"C[n,D\Qkl0]CiVq[4g&BP$d/M5fa8WmR +]Df5;YPtO#U]-kaR/W9JNW+_4K)U2tGlDgaE;j\QB`;N@@K'X5>5hY'sAj;#X5h9`@ZW8cD9U +8#/V*7Y+$[7cm288,GjS8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fHE;jtYH2`6kK)UT*NW,+? +R/WZXUS@gari,n#rjDa;rkSNRrlb;frmh#$rn[S4roO.Crp9XPrpg![rq69brqcWkrqucoqu5+FcN!nC +rr)iorql]krqQKerq-3[rpTjQrosFFro*k6rnRM(rmLekrl>#UrkJH@rj)O+rh]Ufrgj%QrfI,=re:?' +rdOikrcJ-XrbVRJrau.;ra,S0r`T5&r`9"sr_iViqbR)`qb6ZUoh+jJJOtDaJP!XKlq77MnkB$WqbR)c +r_i_or`B)%r`];-ra5Y4rb)4Frb_XQrcJ-ardOitre:?2rfR2Frgj%_rhf[trj)O4rkJHMrl>#`rmLes +rnRM0ro*k>rp'LLrpTjWrq-3arqZQirql]mrr)`n`W,r:qu-NlrqcWhrqHEcrpp'XrpKdNroa:Aro!e2 +rn7;!rltMe!R&[c_Z%:K]Df,8Y5YI#T`1J\RJrlIt,=8l8" +<;obo;#X8i:B!ub9`%K^9&N:)8:a<_8?GGC8c)-Z9DD3[:&[oe:]=2i;>sPoQ.q-?iFL5Ac?BB +D>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoiedf.r!h#?72jSnBBl2^5QmdC)Drpp'^ +rqHEerqcWkqu-Nn`W,r:qu-NlrqcWhrqHEcrpp'XrpKdNroa:Aro!e2rn7;!rm(MdrkeZKrk&08riZ7# +rh07\rgEbIrf$i5rdaurrd4Wcrc%jRrb2:BraGe5r`oG,r`B)"r`&kor_WSir_EGeqb.#`9DqN_9&N9l +8?#.28=)m58bksT9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41@K'j;B`;lJE;jqXHiAKnJGtE)NW,%= +RJrcVT`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kl0lHmf)_To)A@^p\sseqYpBhrVlf8s8N#prVl]q +qYC3grqQKerq??^rp]pTrp'LGroF(:rnRM+rmLekrlb;XrkABDrj)O+ri5sjrg`tUrfI,_JOnfmqb$i\pe:Z]r_EGg +r_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbVrh':lWW9'uY5Ya+]DfSE_Z%aX +ci2Alg&Be+i;Vg:kl0lHmf)_To)A@^p\sseqYpBhrVlfDs3CZDrqlZnr;QQlq>U0go`"F\nG_kTli-/J +j8S!9h>Z%*eGdenbPoN\_>_%F[JmB/WW&^mTDk;YQ2ZjDMZ/>/JGsrqGlDgaDuOPOC&VZB@fBa6?2e%, +=T2A#j;#X8i:@_-P9_:u/97]`e9=dde9_D-Z:B"&g;#X>h;Z9Yp_FQb5T`de,Ituh>Z@3j8SOnG`%Y +o`"Xbq>U6fr;QZlrke^7rr2lqr;QQlq>U0gpAX[_nc&"Vli-/JkPjH>hYu:/ec*tsc2l59rl4rSrkAB? +riuI)rhTOdrg`tPrfI,=re19%rdOijrcJ-XrbVRJrau._3r`];'r`9"tr_reor_WSir_E5_r_26C +P=gBuJP*%:j%K8CpeC`_r_NMir_i_or`&ktr`K/'ra,S2raGerfmDP +rh07driQ1*rjMg?rkeZSrm(Mjrmh#&rndY5roa:Frp'RQ!UoLVnc&.ZpAXgcq>U6iqu6Qkrke^7rr2lq +r;QQlq>U0gpAX[_nc&"Vli-/JkPjH>hYu:/ec+"rcMki__Z%:K[f3Q2Xo>-qT`1J\Pl?dDNW+V1Jc:,t +GQ)^`DuOSPC&V`D@K'[6?N+.-=T2A#<;ohq;Z9Ml:]=,e:&Rfc9]/Qp8uYF68s`099DM6X9__?]:B"&g +;#XAl;uTbq5hk-?iFL5B)ZKCD#SAPF8gC_If=otK`6u1OoCUESGo2\V#ILqZMq<3^Ac"K`r=9_ +dJh\qg]$(/iVr$>l2L#Jn,DkVoD\I_p\t!fqYpBkrVQT2s8N#srVl]qqYC3grqZQgrq??_rpg!Vrp0RJ +roa:>rndY/rmh"rrm(M_rkeZKrjMg2riQ0qrh07\rfmDDrf-o1rdk&trce?`rbqdPrb;@DraGe6ra,S- +r`K/#r`&kqr_i_lr_NMgpeC`]i(LgWJP(JcJP+rqqb6cZr_EGgr_WSlr_reqr`9##r`];-ra5Y5rau.C +rbVRPrcA'_rdOitre191rfR2Erg`t\rhKRsXT5L&ZMq<3^Ac"K`r=9_dJh\qg]$(/iVr$>l2L#Jn,DkV +oD\I_p\t!fqYpBkrVQTAs3(H>rVl`oqYpi/,JGsrqGlD^^DuOVQBDuKA@fBd7?N+4/=T2D$a;"@ES +:4Z/k:4Z0O:A%ER;#X>h;Z9Vo<;onsQ.e)a5j;#X8i;#X8f:@_,19V>(19TDg>9`Rr^:B")h:]!uf;>X8j<;onsQ.t.?iFO6AH$9AC]8;PErL:^I/\ZqK`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mXci2Dmf)FP*i;Va8 +kl0lHmJcVSoD\C]p\t!fqYpBkr;QZlrke^7rr2lqquQ]l!;lclrqQKerq-3\rp]pSrp'LHro3q8rndY* +rmUkmrlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$r`/qs +r_iVjqb[8fr_WSiqbH]V[S26GJP:Vgpe:?TohPK_r_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"ArbMLP +rc8!^rd=]qre19,rf@&Brg<\WrhKIk!O&[,YPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lHmJcVSoD\C] +p\t!fqYpBkr;QZlrmCbhs8N#prVl]nqYpQ.h*=oMP&U)])KDB_>_RUbl5ugf)FD&hYuI4jo4KCm/HDOnG`%Yp&=^bq>U6iqu6Qkrk/:1rqlZnr;QQlq>U0g +pAX^`nc&"Vm/H>Mjo49=hu;@/f)X8#e'nQ.h* +=oMM%5hb*?N+=2@/aa:B`;cGDuObU +F8gLbI/\ZqLAm,1O8bFDRf8rYU].4kY5Yj.])KJD`;[mXcMl;lfDaM'hu;X7jo4TFmJcSRnc&1[pAXjd +q>U6fr;QZlrke^7rqlWpr;6QmrqcWirqQKdrq-3[rpTjQrp0RFro3q7rn@A'rmUklrlP/XrkJHDrjDa. +ri,mlrh'1Yrg!JDreg]0rdaurrd+Qbrc.pUrbDFFral(:ra5Y2r`fA*r`T5%r`9"uqc!Jlpeh#eVb_k> +JPUhmlqdLTpegodr_rerr`9#"r`T5(r`fA.ra5Y4ral(BrbDFNrc.pYrd+Qkrdb!&repc:rg!JOrh'1b +ri#h!!O]<8[Jmc:^])1Nao9Tbe,ItugA^"/ir8'=li-;Nn,DkVo`"R`q#:*gqYU3irVQTAs3(HArqlZn +r;QTmqYp9hpAX^`nc&"VmJcALkPjQAi;VO2g&BG!ci2/f`;[RO]`,>d1fSc4rSP5^OAM#N), +JGsrqGlDjbEW0nUD#S)HB)Z??@K'[6?N+4,>PhS#=T2D!Ph\) +?N+=2@K'g:Ac??AD>nJQEW1+[GlE*iJGt6$L]3A6P5^aGSc5>^V>dUrZ2V01]`,_G`;\![ci2Alg&Be+ +i;Vd9k5OWEmJcSRnc&1[pAXjdqYpBkr;QZlrk/:.rr2lqr;QQiq>U*eo`"F\nG_kTm/H2Ijo46Z(- +eH+4Nrm:YgrlG)Srk/6@riuI)ri,mjrgj%VrfR2?repc.rdaurrce?arc.pTrbMLIrac";ra>_4ra#M. +r`];(r`Jqrpf.,hJPuJFJPq%sPu@T[pf.#hr`K/&r`];+ra#M1ra>_8rac"BrbMLNrc.pZrce?irdb!# +repc9rfR2Jrgj%^ri,n!riuI5rk85h\(=Su4uU*eo`"F\nG_kT +m/H2Ijo46Z+,ec*qpbl5]__#D"G\c/l5Xo>=!U&LV^RJr?JNrFt9KDpE#IK"HiFoHC[DZ4GNC&VZB +@fBd7?iF@1>lIq+=oMOuelJ%.?iFI4A,^$R+\[_^Nrk8#VrkJHC +rj;[.ri,mmrh07[rg*PHrf6u7re19$rdFclrcJ-[rbqdQrb;@Erac";raGe6qd95+r`oG+r`SnrnlPZg +JQ@>&JQBHboiLojr`T,%qcs,+ra5P1raGe9rac"@rbDFLrbqdVrcJ-crd=]qre(3+rf-o>rg*PQrh07e +ri,n#rj;[8rkJHMrl>#armLerrnIG/ro*k=roj@IrpTjVrpp']rqHEerqcWkrqucoqu4/+rr2fnqtpBh +rqHEcrq-3[rpTjRroj@Dro="9rnIM+!SH'(dJhJkbl5NZ_#D%H[/R-qT`1M]Q2ZsGO8aq6K`6N$ +IK"KjFoH@ZDZ4MPBDuNBAH$$:@/aO1?2e++=oMP#=8l7_lJ%.?iFI4 +@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^V#ILqZ2V-0^&GhH_u@mZcMl5jf`'Y)i;Vd9 +k5OTDmJcSRnGr1^o^r.UrqH_4qd'2+r)j#& +r`K&!r`8/]JQ/UJJQ.t8lW*j_qc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6 +rf[8Grgj%^rhTOqriuI0rk8_4qd'2+qcWo#qcEbtk#K/qJQ.2"JQ1c3qc<\tqcNi#qcs,+ +ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8Grgj%^rhTOqriuI0!PQ/H^&GhH_u@mZcMl5j +f`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQT;s2b6>rqlZnr;QTmq>U0gp\sgao)%nTli-/Jjo49= +hu;=.f)F(rc2Pf`_u@FM])K,:Yl:a'W;`IhSc5)WP5^OANW+Y2KDpB"I/\BiFoHC[E;jbSC]8)JB`;TB +AH$*9@K'X5@/aO1?M.Uo>kqWU>DZR8>Kg=?>khUq?N+@3?iFI4@K'd6AH$9AC&VoIDZ4SREW1.\GlE'h +J,Y'!L&R&1O8b=ARJr`UT`1hfX8]@&[Jmc:^]).MaSsH`dJh\qg&Bn.ir8$Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4ra,J-r`o"uoidP^ +JQ[P,X]b3uoiq;ura#D-ra>_4ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCi +riH+(rjMgrosFJrpTjVrpp-`!VZ6dp\sseqYpBkr;QZlrji(.rqlZn +r;QTmqYp9hp\smcoD\:Zn,DYPl2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WKrgj%_rhoasriuI2rk&0Frl+lX +rm1Smrmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]mrr)`n\c;[.r;?WorqucmrqcWhrqHEcrq$-Z +rpTjProsFFro*k6rnRM(rmLelrlG)WrkSNFrjMg2riH*srhBC_rg<\Krf@&:reUQ)rdXoprce?`rc%jT +rbVRKrb)4Brabn7ra5Y4ra5Y2qd'2+nltcj^KH+jJQ[P,nlk]jqcs,+qd080ra5Y4raGe:ral(ArbDFK +rbqdTrcJ-`rd=]ordk')repc:rfd>Krgj%_rhoasriuI2rjr3H^];1L`W!sXci2Dmf)FJ(hYuL5kPj`F +li-APnc&.ZpAXgcq#:-hqu6NmrVQT;s2G$;rqlZnr;QQlq>U0gp&=U_nc&%WmJcGNkPjQAi;VR3g&BP$ +ci2,eaSs$T^&GSAZi70-X8\spU&LV^Qi<6KOT(1;L]2u+JGsurHN&'dF8KqUDZ4JOC&VfFBDZ9>AH$*< +@eF1/@.%BQ?\)R8?bKhG@/aO1@.dt-@fBm7AH$0>BDuTDC&VoID>S;OF8g=]HN&U6fr;QZlrjMk% +rr2ipqu6Hkq>U0gpAX^`o)A+Wmf)POl2K`Bi;h^8hVS7armh"qrlkA_rkn`Lrjr*:rilC&rhf[frg`tU +rf[8Arf$i2re(3"rd=]jrc\9\rc%jSrbMLJrb;7@rac";qdKJ3qd9#&nm.GaJR!b2X^(O)nm;<&qdBD3 +qdTG5ral(CrbDFJrbh^Rrc.p\rcnEirdXp"reCE2rf@&ArgEbUrh07fri?%&rjDa9rkABLrl>#^rmC_q +rn.5,ro!e9rosFJrpKdSrpp'\!;6HepAXgcq>U6iqu6Ngrji((rr2ipqu6Hkq>U0gpAX^`o)A+Wmf)PO +l2K`BiVq^5f`'G#dJhAhaSs*V^Ab_C[JmE0X8]!qT`1J\RJrBKO8b+;LAli)J,XipH2`!dEW0qVDZ4GN +CAqrEAc?6>@KBnGrF,\5qd9#&nm-fOWEb!ZQX'2hpKmc(ra5P1raG\5qdf\;rb;@HrbMLNrbqdUrc\9c +rd=]pre(3)rf$i;rf[8Krg`t\rhf[qrilC0rji$Brkn`UrlkAhrmh##rndY4ro="Brp0ROrpTjWrq-3` +rqHEfrqcWkrquQj\c;L)!<2uqrql]krqZQgrq??`rpp'WrpKdOrosFBro*k5rn.5#rmC_hrlG)VrkABC +rjDa0ri?$qrh07\rgEbKrf@&;reCE)rdXoprd"Kdrc.pVrbh^NrbDFHqdob;raPb5ra>V1oj72p^Kc=p +JR!b2oj.,pra5P1raG\5qdf\;rb;@HrbMLNrbqdUrc\9crd=]pre(3)rf$i;rf[8Krg`t\rhf[qrilC0 +rji$B!Q2eT_u@^Ubl6#hec+5#hYuI4j8SOn,DnWo`"R`p\t!fqYpBkr:p97s2G$;rqlZnr;QQl +q>U0gpAX^`oD\7Ymf)SPkl0]Cir7m8h#>t*dJhJkbl5Q[_>_1J[f3W4YPtO#V#I%dSc5#UPQ$[CN;e\5 +KDpH$J,XcnGQ)aaErL(UDuOSPC]8)JB`;ZDB)?07AGB[,@Y&!>@Y&"%@eF7+AH$0;B)ZHBC&VlHC]82J +DuObUErL4\GlE$gJ,Y#uKDp`,N;en;P5^gISGo2\V#I:kYPtm-[f3u>_>_CPbl5oedJhetg]$+0iVqs< +kl0oImf)_ToD\F^pAXjdq>U6fr;QZlrilG%rr2lqr;QTmqYp9hp\sgao)%qUmJcDMjo49?hZ;WlrnIG( +rmUknrlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^PrbDFGrb)+> +rabn9raPG,LL>[@JRG'WojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!#reLK3rf@&Brg*PS +rh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]!;?Ngp\t!fqYpBkr;QZlrilG% +rr2lqr;QTmqYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1M]QN!*I +O8b+;M#N&+JGsurHiA0eFT-=[E;jbSD>n;LB`;ZBAH6<@AG]m9@e*rY@%C\V@#/4e@JjR2@fBm7AH$0> +BDuWECAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$mISc5;]U].=nYPtj,\c0;A_#DCRbPolfe,Itu +g]$+0ir8'=lMg/InG`%Yo`"Uaq>U6iqu6NmrVQSurrN,u!<2urrqucmrqcWhrqHEarposUrpB^MroO.> +rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jSrb_XL +rb2:Dqdob;qd]V7nmSk4JRF%:JRJ%VojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!#reLK3 +rf@&Brg*PSrh07cri?%%rj)O6rk8OnG`"Xp&=[ap\Xgdqu6Qkri6"trqlZnr;QQiq>U-fpAX^`nG_kTmJc>KjoFEBj5^-s +rnRM+rmLelrltG^rkeZLrji$9rilC&rhf[hrh'1Yrg3VGrf6u:reCE)rdXorrd4WircS3^rc.pVrbqdR +rb_XNrbMLJqe?%Clt?<0P@];VJRtrpqe#D3qe5tCqeH+GrbVRNqelCPrc.pYrcS3crd4WnrdXp"reCE2 +rf6u>rg3VRrh'1arhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rq?Eg!VuQg +qYU3irVQSus8N#prVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^& +VZ*=hTDk;YQi<*GNrG":LAli)J,XorHiArg3VRrh'1arhoarrilC0 +rji$Crkn`TrltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`nYl=b'rW)rprVl`oqYU*f +p\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli) +J,XorHiAnANC]8)GC&Vf4BDuMXAV"EDAV"FiB(BU3B`;`CCAr#JD#S;KDZ4VS +EW1%YFoH[cHiAKnJ,Y*"LAm/2NrG.>QinABC]8(.Bn9uLBrYnEC@uB> +D#S;KDZ4SRE;jkVErL.ZFT-L`H2`-hIK"`qJc:E'M#NA4O8b=AQ2[9PT)PG_W;`jsYPtp.\c0;A_Z%RS +b5T`de,Iqth#?10iVr!=kPj`Fmf)_To)A:\pAXgeqY^3hqu6NmrV6Ars82fprVl`lqu6Hkq#:!do`"F\ +nG_kTl2KoGk5O?=hu;F1f)F.tci2)d`rn( +e,I\mb5TE[_Z%7J\Gil7YPtU%W;`LiT)P5YQ2[!HO8b+;M>i8/Jc:/uIK"QlGlDpdFT-@\ErL(XE;jeT +DYn;MD";B@C:S&0Bn9uLC&ViDC@uB>D#S;KDZ4SRE;jkVErL.ZFT-L`H2`-hIK"`qJc:E'M#NA4O8b=A +Q2[9PT)PG_W;`jsYPtp.\c0;A_Z%RSaoTi7!71Ynrmq)(rndY5roX4CrosFMrp]pXrq-3`rqQBerql]m +rr)WkaT'-Wrr2fnrqucmrqcWirqQKerq-3\qsaUPrp'LEro="8rnRM+rmq(qrltGcrkn`OrkAB?rj2U- +riH*trhKIcrgj%Wrfd>Drf@&:re^W/rdt-#rdXorrd=]lrd"Kfrc\0]rcIgRol9hIJT-0ZJT/MGol9YF +rc@sYrcS3`rce?erd4WlrdOirrdk'#reCE.rf$i;rfR2DrgNhVrh07crhoasric=-rjMg>rkSNNrlb;d +rm:Yqrn7;-ro!e9roO.Erp9OOrq$-]rqHEerqZQirqlTkqu3Mnrr2fnrqucmrqcWhrq??arq$-[rpTjQ +rosLI!U/bHj8S$:hu;:-ec*tqcMkuc`r0rU]-nbS,ScRPl?dDNW+k8L&Q`%JGt#s +I/\EjGlDmcFT-@YErL(RE;jeTE;OR2DLl\VDPV1IDuO_TDtn;NEVjeUF8g:\G5c^bH2`3jIJ\QoKDpT( +MuJb9OT(LDQidUrYl:s-])KDB_#D@Qao9TbdJh\qf`'e-iVqm:kl0iGm/HJQnc&.Zp&=^b +p]1-kqYL3grqucoqu3Mnrr2fnrqucmrqcWhrq??arq$-[rpTjQrp'LHro=":rnm_-rmh"qrm(Mcrl4rQ +rk8Pl@$KS,T&ZUAh"gXo>R( +ZMqH7^&GhH`r=*ZcMl5jec+5#hu;U6j8S9Al2L&Kn,DkVoD\F^p\sseqYpBkr;QZlri#hss8N#prVl`o +qu6Hkq#:!dp&=R^o)A+Wm/H;Lkl0WAiVqa6f`'G#dJhGjb5TE[_#D%H])K#7YPt['V>d7hTDk>ZQi<6K +OT(7=MuJG0KDU2uIf=`oH2`'fG5cU_F8L"WEVOMPDuO_QDmjP7DLl\VDYS,HDuO_TDtn;NEVjeUF8g:\ +G5c^bH2`3jIJ\QoKDpT(MuJb9OT(LDQidUrYl:s-])KDB_#D@Qao9QddEqsArmh##rnm_6 +ro="ArosFKrpTjVrq$-^rqHEerqcWkrqucoqu4J4^]4<4qu-Nlrql]krqZQgrq??arq$-YrpKdQrosFF +roF(:rn[S-rmh"rrm1Sdrl4rSrkJHErj_s4ric=&rh]Uhrh'1\rgEbOrf[8Brf@&:re^W0re19'rdt-" +qg\TordFcnpjrkJHLrl>#\rm1Smrmq)'rn[S3roF(ArosFLrpTjUrq-3_rq??drqZQiqu$Hl +qu3Dkrr2]krqucmrqcWhrqHEarpp'XrpTjQ!:'[Oli-)HjSn*:hYu:/f`':tci2/f`W!aR^](eC[f3Q2 +Y5YI#VZ*7fT)P8ZQN!-JOoCF@N;e_6LAll*KDpE#J,XorIK"WnHiA?jH2DjcGQ)d_Fbb'iFFeP*FT-F^ +G5c^_GlE!fHN&9jI/\QnIf=irJGt3#L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'("Z2V01\c0AC_Z%OR +bl5oedJhetgA]t.i;Vg:kPjfHmJcSRnG`%Yo`"Uaq>U3jqZ6TkrquZlqu3Mnrr2]krqucmrqcWhrqHEa +rpp'XrpTjQrp0RHroF(:rndY/rn.4trm1Sfrl+lRrkJHCrjMg2riZ7#rhf[frgs+Zrg*PJrfR2@rf$i6 +reCE*re(3#rdXorrd=fpHiSQnHiA?jH2DjcGQ)d_Fb+Y*FFeOiFT-F^FoZ^eGB`q/rd"Khrd4WlrdFcp +rdXotre(3(reCE0rf$i;rfR2Erg*PRrgs+^rhf[oriZ7*rjDa9rkJHLrl+l\rm(Mjrn.5(rndY4roF(A +rp0RNrpTjUrq$-]rqHEfrqcWkrquZlqu3Po!<<&tq#13irql]krqQKerq-3\rp]pUrp9XMroa:Aro!e4 +rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sprh07^rg`tRrfmDErf@&;reg]0re19'rdautrdOiprd=]l +rd+Qhqfr*arc\0]ZZLb?JTQHbnoXkRrc\9bqfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJ +rg`tZrh07fri,n"riuI1rji$CrkeZRrlkAerm:c!fDsS'gA]t.i;Vg:kPjfHmJcSRnG`%Yo`"Uaq>U6i +qu6NjrVQT2s1JC2rqlZnr;QQiq>U*ep&=U_nc&%Wn,DYPl2KlFir7j7h#>t*ec*tqcMkuca8WpS^AbbD +[JmN3YPtU%W;`[nT`1P^SGnoTQN!-JOT(:>N;e_6M>i>1LAlo+K`6T&JbXcmJ,"KlIJS>BI"?ZrI)(./ +IJA9gJ,"QnJc:9#K`6])LAm#.M>iD3N;ek:OT(LDQN!9NSGo,ZT`1hfW;`mtYPtm-[f3o<^AbtJa8X6\ +cMl8kf)F>$hYuI4ir8-?l2L#Jn,DkVo)A:\p&=[aq>:$cr;QZlrhTShrqlZnr;QQlq>U0gp&=U_o)A.X +mJuVTmHso;roa:Aro!e3rn@A$rmC_krlP/ZrkeZKrjr*rf$i6 +reUQ.re19&qgnWordFZkqg3m?JU2lnRsP'\pjE'hqg\Tqrdk'#re19*reUQ2rf$i:rfI,Brg<\Rrgj%\ +rhKIiriH+&rj)O4rjr*CrkeZSrlP/crmLeqrn@A-ro!e:roX4ErpB^Qrp]pXrq-3_rqQKgrqZWmr;?Qm +q#72kq#:0hrquclrqZQgrq69_rpp'XrpKdQrosFFroF(:rn[S-rm^qprm1Scrl4rSrkABCrjVm4ric=& +rhf[irh'1\rgNhRrf[8Brf6u:reg]2reCE*rdt'!!.k#srdFZkqg3m?Q[44/KmN`F!.=TirdFZnrdb!! +rdt-&reCE.reg]6rf6u>rf[8JrgNhWrh'1brhf[rric=,rjVmrf$i6reUQ.re19&qgnWordFZk +qg5GkJU2lnJU6d2rd4EfrdFZnrdb!!rdt-&reCE.reg]6rf6u>rf[8JrgNhWrh'1brhf[rric=,rjVm< +rkABKrl4rZrm1SlrmUu&g&Tk+h>Z@3jSn<@l2L)Lmf)_To)A:\p&=acq>U6fr;QZirke]Js8N#mrVQKk +qYp6gpAXaaoD\=[n,D_RlMg#HjSn0"d/M>ibl5T\_u@FM]Df;=[/RC#V#I+fTDkG] +S,SiTPl?jCOT(:>NW+k8MZ/J3M#N/.L%p>uKDU8pJUrB'JUrBfJb=WoKD:-!L&Ql,M#N81MZ/P5NW+t8 +OT(ICPl@*MS,T#YT`1_cV>dOpY5Y[)[/RQ6]`,\F_Z%ORbl5oed/MVqg&Bh,hu;X7jo4KClMg2Mn,DkV +oD\F^pAXg`qYpBerVQScs8N#prVl`oqYU*fp\smco`"C[n,VnXn*g8@roj@Dro3q7rn[S*rmh"qrm1Sd +rl>#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9reg]2qh>$&rdt#uomh^FJU`6#TmuW` +rdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TSrlb;ermC_prn%/* +ro!e8roX4Drp'LOrp]pWrq-3_rqHEfqt^#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9reg]2r.P-) +re19&qgnEjJUa,Irg<\Urh'1_rh]UmriH+&rj2U4 +rk/6Erk\TSrlb;ermC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)`nV>pDlrr2fnrqucl +qt^6crq??`rpg!WrpTjOroj@Dro3q7rn[S*rmh"qrm1Sdrl>#SrkJHFrjMg4ric=&ri#gmrh07^rgj%U +rg!JHrfI,?rf6u9reg]2qh>$&rdt#uomj8rJU`6#JUd?Bnpp^jqh"]ure:?-re^W4rf6u=rfI,Crg*PN +rgj%\rh07eri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r!!SuQ3h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^b +q>:$cr;QZlrkJKDs8N#prVl`oqu6Hkq>U0gp\sjbo`"C[nG_kTm/H5Jjo49=i;VR3g]#e'df.Slbl5`` +`r_IRao9Qaci2Dmf)FG'h>Z@3 +jSn?Akl0rJmJcVSnc&.Zp&=^bq#:*gqYpBkr;QZlrg!N_rqlZnr;QTmqYp9hp\smco`"C]n,2YRm/H;L +k5OE?i;VU4g]#k)df.VmcMkoa`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[RJrQPQ2ZsGOoCF@OT(:> +NW+n9Mu/D2M>i>.LPLV8L4P)NLAlu-M#N8.MZ/P5N;eh9NrG.>O8b:@P5^aGQi_FQaSsKad/MJmf`'V(hYuI4jSn<@lMg/In,DnWo`"R`p\sseqYpBkquHZrrVcWm +Q2gj_qu-Nlrql]krqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Marl+lQrkABDrj_s5rilC) +ri,morhKIcrgs+[rgEbPrg!JGrfR2@rf@/@NW>+=NW+n9Mu/D2M>i>.LOk2NL4P)8LAlu-L]E84M2D+e +repc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJrl+lXrm(MirmLeurn@A. +ro!e:roX4Frp9ONrpp'\rq??crqQKhrql]mrr)`nTE"Zcrr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LF +ro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u; +rf$i7qhkB0reUH,Z\F$cJVJ`1nqR.!reUQ1qhkB2rf$i9rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[o +riZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rn[\6huM^7jSn<@lMg/In,DnWo`"R`p\sseqYpBkr;QZl +rji'>s8N#prVl`lqu6Hkq>U0gpAX^`oD\:Zn,D_Rl2KoGk5OB>i;VU4g&BS%df.Vmc2Poc`W!dS^](nF +\c0&:ZMq*-Y5YI#W;`[nUAgkcTDkG]SGo#WRJrTQQi!'IPl$[AP4Fb6O9(H)rf@&?JWGYKJWJ-Z.-f)F.td/M8gao9?[_>_4K]`,G?[JmH1YPtU%WW&doV#I(eTDkA[S,SiT +R/WENPl?mGP5^UCOT(=9NqeTkN.Hq=N22F-NVJP5O8b7?OoCOCPQ$gGQN!6MRJr]TSc58\U&LkeVZ*Ro +XT#F&Z2V01\Gj/?^AbtJa8X3[bl5ugeGe%ugA]q-i;Vg:k5OTDm/HDOnG`"Xo`"O_p\sseq>U6iqu6Kn +r;llqqu2l\rr2fnrqucmrqcWirqQKerq69_rpp'XrpKdProj@DroF(:rn[S-rmq(trm:YgrlP/[rk\TK +rk/6?rjDa1ric=%ri,morhTOerh'1[rgWnTrg<\NrfdGIP5pgGP5^UCOT(=9NqeTbN1c,\N/iklNW"n8 +NrG+=OT(CAP5^[EPl@!JQi_LSao9N`d/MPof)FD& +h>Z@3jSn<@kl0rJmJcVSo)A:\p&=^bq#:*gqYpBkr;QZlrh'5bs8N#prVl`oqu6Hkq>U0gp\sjbo`"F\ +nG_kTm/H5Jk5OH@i;VR3gA]\&e,I_nbl5``a8WpS^](nF\Gio8Z2Us+X8]*tVZ*CjU&L\`SGo#WRJrTQ +QN!-JPQ$aEOoCIAO8+b1NOFdsN.Hq=N;/A,NVJP5O8b7?OoCOCPQ$gGQN!6MRJr]TSc58\U&LkeVZ*Ro +XT#F&Z2V01\Gj/?^AbtJa8X3[bl5ugeGe%ugA]q-huVp"!9F.Aroj@JrpB^Srpp'\rq69brqQKgrqcWk +rqucoqu4/+\c;[.p&4mfrqcNfrqHEcrq-3\rpg!Vrp9XLroj@Bro3q7rndY.rn%.urmC_krlY5\rl+lP +rkABErjVm7rj)O-riZ7%ri#gnrhTOfrh9=`rh07^rgj%YrgWnUqjIGNn!F!=JX1kQJX43>n!Ep=rgEYP +rgWnXrgs+^rh'1_rh9=erhf[nriH+%rilC.rjMg9rk8Onb+7PQ$jHQN!6MR/WNQRf8iVSc5;]TDkP`U].4kWW&stYPtg+Zi7H5])KGC +^])+L`W"'[cMl2ieGe%ug&Bk-i;Va8k5OTDlMg8OnG_tWo`"O_pAXjdq>U6iqu6Nlr;llqqu2l\rr2]k +rqucmrqcWirqQKdrq69_rpg!WrpTjOroj@Dro3q8rndY-rn%/!rm:Yhrlb;[rkn`MrkABCrjVm5riuI+ +ri?$uri#gkrhBCarh07^rg`tV!L]>URJrTQQi<kl0lH +n,DhUnc&1[p&=[aq#:*gqYpBkr;6Hirh'5bs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUlMg#Hk5OB> +i;VU4g&BV&eGdhoc2Poc`W!dS^](tH])K2rk8_4K +]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:iU]."bT_P/YT(nlCS=H("Rt7';S*?I?Sc55XTD5)YU&LhdV#I4i +VZ*UpX8]7#YPtg+Zi7H5])KAA^])(K_u@aVb5T]cci2Alec+;%h#$%/jSn<@lMg/In,DkVoD\F^pAXg` +qYpBhr;QWprqubSs8N#prVl`lqu6Hkp\smcp&=R^o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:iUB.*`!2B@`pn.PWpmpcAJX`s7JX`=%l(%XA!1j4_T)5/T +T`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg:k5OZFm/-8N +nc&.Zp&=[ap\XgdqtpZ.-ec+%s +ci25hbPoT^_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I.gUALVYTDkGWSa;lfRt7&[Ru3^"SGSlV +T)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg:joOc4 +!:'RMqsXOSrq$-^rq??cqtg +JYdpo_kl^tri#^nri5suqlKe!ric=*riuI0rjDa7rjr*@rkABHrkeZQrlG)]rlkAfrmC_orn%/'rn[S2 +ro*k:roa:Frp'LMrpTjVrq$-]rq60`rqZQirql]mrr)NhN;reSrr)`lrql]krqQKe!;6HepAX^`oD\:Z +nG_kTm/H5Jk5OH@iVqa6h#?"+fDa>"d/M>ibl5]_`rd:cU].!FTn/ngTqnCZUAL_bV#."fVYd:jW;`dqX8]4"Xo>O'Z2V'.[JmZ7\Gj/?^AbqI`;[dU +aSsE_cMl2iec+2"g&Be+hYuL5jSn<@kl0rJmJcVSnc&.Zo`"R`p\sseqYpBhr;QZnrqubSs82fprVQNl +qu6Hkq#:$epAX^`oD\:ZnG_kTm/H5Jk5OH@iVqa6h#?"+fDa>"d/M>ibl5]_`rd@hVuEXoWW&stXT#@$ +YPtg+ZMq92\,No:]`,YE_#D:O`r='Ybl5oed/MSpfDaJ&h#?10iVqp;k5OTDm/HDOnG_tWoD\C]pAXgc +q#:-hqtpF$X8]*tW;ELlVYd4hV"g_aU:-bHTn/ngU%k>YUAL_b +V#."fVYd:jW;`dqX8]4"Xo>O'Z2V'.[JmZ7\Gj/?^AbqI`;[dUaSsE_cMl2iec+2"g&Be+hYuL5jSn<@ +kQ1&:!:9^Prp]pWrq$-]rq??crqQKhrqlTjrr)Wk[f>[f3]6 +Zi79-Yl:j*Y5YR&XSAjqWq`QNW.CmuW2-BeWV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N +`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQQos+LFO +rqlZnr;QTmqYp>[f3]6Zi79-YQ:r2!3cC)riQ1$poFCopo/hCTW!F?Ni;`PrMfmuWr&jrXT#@$Y5YX%Yl:p, +Zi7B3\,No:]DfMC^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`Fli-APnG_tWoD\C]p&=^b +q#:*gqYpBkr;QZlrg*TPs8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k) +e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>EsX8]-oWOAaVW.CmuW;*=dWV`^m +X8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2KuL +n*^8Frp]pWrq$-]rq69brqQKgrqcWkrqucoqu3i"WrN(tq#1*erqcWirqQKerq-3\qsaUQrpB^Mroj@E +ro=";rnm_3rnRM,rmq(urmC_lrm(MfrlY5]rl4rUrkeQJqnN$Ark/6Arji$rk&'?qnDsCrkn`Rrl4rYrlY5brm(MirmC_prmq)%rnIG.rnm_6ro="@rosFI +rpB^QqsaUVrq-3aqtU'brqlTjrr)WkKE(rMp&4mfrqcTh!VuQgp\smco`"FYn,D\Qli-,Ik5OH@iVqd7 +hYu7.f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\Giu:[emK3[/73,ZLY8aY^s$0YcY/&Z1YF% +Zhq-/[JmW6\,No:])K>@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAO +o)A:YpAXgcq>:$cr;6HirW)tOs8N#jrVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$ +df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\,j(J!4Vs9qmHF1qm61*o!*bMWN^rXQa$.fpTah*ZMq3- +[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnW +o_\@]p\t!cqYU3frVQS[s6fpdrq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b(f)F+s +d/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z+mMoY^s$0Yk>9oZMq3-[/RK4[f3c8 +\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Lmf;hUo)A:YpAXgc +q>:$cr;6HirilF&s82fmrVl`oqtp6hq>U0gp&=U_oD\:ZnG_nUm/H;Ll2KiEjo4??i;VU4h>Z+,f`'M% +e,Iepd/MAjbl5fbao9B\`q[LO_Z%CK^\bbB^&,J>]C`[c\q.GD]"5KP]Cii9^&,P@^\bhG_Z%IP`;[dU +a8X3[bPo`bcMl2idf._pfDaG%g&Bh,hu;R5ir8$pHhrqQKerq??arq-3\rp]pTrpB^Mroj@EroF(bF]_K)8\bio'[t1uk[XklU[dpp%\,j+Lrjhg8rk/6DqnE'ErkSNNrl"fT +rlG)\rlY5brm1SjrmUksrn%/&rnIG/rnm_7roF(ArosFIrpB^Qrp]pXrq-3_rq??crqQBerqlTjrr)Wk +QN-CQq#:0hrquZjrqcWhrqHEcrq69_rpp'XrpKdQrp'LHroa:Aro3q7rndY/rn7;&rmh"srm:YirltGb +rlP/\rl+lTrkn`NrkJ?Erk8#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro="> +roX4Erp0ROrpTjUrpg![rq69arqHEerqZQirql]mq#1*hrVqHKrr;usq#13irql]krqZQgrqHEcrq69_ +qsj[SrpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`P!PuSP_>(hF^])%J +^](t3]n*i"]Rd_a]^3?1^&bs^rkSNJpqZmFrkeZPrl"fTrl>#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5 +ro=">roX4Erp0ROrpTjUrpg![rq69arqHEerqZQirql]mq#1*hPQ0kHrr2]krqucmrqcWirqQKerq??a +rq-*XrpTjSrp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrkeZNpqZmDrkSNJ +rk@X1`Opc7J\6ZKm(N;1rkSNJpqZmFrkeZPrl"fTrl>#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro="> +roX4Erp0ROrpTjUrp^$]oDnO_p&=[ap\sseq>U6iqu6NgrVQSrs.TJlrqQHkr;QTmqYpMkl0`Djo46Z4/g]#n*fDa=te,Iepd/2/gcMPlcbk90Yb59<[aRmN(a+;9^ +a1B=dans6RbPoc`cMPred/MGldf._pec+2"g&Bb*h>Z:1hu;R5iVqs:$fqtU-brdk+>s8N#jr;c`rr;??drqQKerq??`rposUrpTjSrp0RKroj@Cro +kl0iGlhg,InG`%Yo`"R`p\ss_qYU3frVQSRs5j:[rq66hr:p-fq#:$epAX^`o)%qUn,DbSli-2Kkl0]C +j87d6hYu@1g]#q+f`'G#eGdnqd/2/gcMl)fbl5fbb5TNXa8X*U`R2W[_h#^V_kP&o`;[aQ`q[URao9H^ +bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:.i;Vd9jo4KCl2L#GmecMQoD\@_p@\L[rqHEeq"jmcqu-Ek +VuNIjqu6KkrquZjrqcWirqQKerq??arq$-[qsaUQrpB^MrosFGroO.?ro3q8qqqD.rn@A)rn.5%rmq)! +rm^qrrmLenqp>#^rm(Dcn]ZR.J]r\h]$0roqp+u_qp>5grmUbormq)#rn.5'rnIG-rnmV2ro3q;roO.C +rosFIrp9XOqsaUUrq$-^rq??crqZHfrqlTjrr)EeJcG9?q#:0h!;llqr;6BjqYp?+/iVqj9jo4HBkl0lHli-;Nn,DhUnc&.Zo`"O_ +p\sseq>:$fqtpU0gp\sjbo`"I]nc&%Wn,D_Rm/H;Lkl0`Djo49= +iVVO3h#?(-g&BY'fDa>"eGdqrdJhMicN2>:!7(SgprrWYm)n8.J]Q!TJ]P7?j2pW0!QrRabP9<\c2Q#c +ci2;jdJhVoeGe"tfDaG%g&Bb*h>?+/iVqj9jo4HBkl0lHli-;Nn,DhUnc&.Zo`"O_p\sseq>:$fqtp?+/iVqj9jo4HBkl0lHli-;Nn,DhUnc&.Zo`"Lap\+[^rqQKgqtg[Yo?dKarmL\mrm^qtrmq)#rn7;*rnRM0rnm_5ro*k:roF(?roj@Grp'LNrpTjUrpg!Y +rq$-^rq??crqQKgrqcWkqu$6fqu2KQhuE]Tq#13iqtpBhrqZQgrqHEcrq69^rpp'Yrp]pUrpKdNrosFG +roO.?ron'g]#pqg%:$fqtpU0gp\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?< +iVqa6i;VX5hYu=-g\BJ$f_a:he`PAXdt,u!e%aAoeF1refDF4qg&Bb'h##t-i;VX5i;V^7jSn9?k5OTD +l2L#Jm/HDLn,DhUnc&1[p&=[ap\sseq>:$fqtpU0gp\smcp&=U\ +nb_eSmJcJOli-2Kkl0`Djo4?:$fqtpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$g&BY$fC.8P +eBu`rdt,u3e)o0Kec+1tf_F/!g\]e'hYuI4hu;R5iVqp;jo4EAkl0iGli-8MmJHAOnG_tWo`"O_pAXgc +q#:'iqYL0erqlTjqu-EkT)Y2Xqu6Kkq#(-fqt^6dqtL*_rq-*ZrposTqsF:Hrp'LHroa:CroO.?ro="; +ro*b4ptu)-p"fDuo\4rOJ_Pb1]%d#8p"fW(pttu,qr7V8roF(?roX4Croj@Hrp0RMrpB^Qrp]pUrpfmW +rq-3_rqHEerqZ?cq#(-ip&9OBh#I6Mr;Q]oqu$?grqcNfrqHEcrq6'Xrp]pUrpKdQrp9XLpuqV:roF(< +ro*b4qqq;,rnR;'rn>uWV:^@OJ_7`ig=cAWptP]$rn[J/qr%A2qrIb-!8[Y0ptPf%f@b`-]@_\eWS#qX!8@A)ptP]$rn[J/qr%A2qrIbMlMg#EkPOB?jS7a4i;2C)htu8]h4!/Nh2C+`h>uKi +qqpu&pu;23roO.Bqrn%Erp0RMrpKdSrp]pWqssXVrq69bqtTs_qu$?ip&9OBf)PXHp&4mfq"k!bqtL!\ +rq-3\qsj[TrpTjSrp9XMrp'LHqrdk:$fqtproNh6puD&,NT#HIJ`3Wfo&BH)p#Q,6roX">rosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqH!TiDC +jn7^0j7VD_iM5@_iKWl2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$fqtp9lrVcTk +q#6QYO8nnPqu-EiqtpBhqt^6dqtKmYqt'gXqsj[Srp]pUrpK[Nqs=4Gq!.b@kidT]J`q[KX6BQIo'65? +qs==LqsOIQrpTjUrpfdTq"=X\qtU0dqtgU0dp\sm`p&=U\oD\=Xnb_hHn,DbJmHEp7m"+JWl[eBGleq.,mIfoEn+H2Lnc&+Y +o)A7Xo`"O\pAXg`q#:*dqYpBhr;6Hcrdk*es7ZKfrqQHkr;6BjqYU*fq"sgbpAXa^o`"I]o(_bSnFc8L +mecDKm/H>JlLO1sk^hrKkbRG8l1jQClhKiGmJH>Kn,)VLnc&+YoDA1Zp&=[ap\Xabq>:$fqtpU0dp\smcp&"C\oD\=Unc&%Nn,DbQm/ZPNm/H>JlLO1jkb.-jk`4m"klC#E +lMg,Em/HDLmecJMnG)PQo)A7Xo`"O_pAXg`q#:*dqYpBhr:p6crdk+?s2tB:rqQHkr;6BjqYU*fq"sgb +pAXa^o`"I]o(_bSnFc8LmecDKm/H>JlLO2Jk^hrKk^hsmkk438lMg,Em/HDLmecJMnG)PQo)A7Xo`"O_ +pAXg`q#:*dqYpBhr:p3krr2cnN;nP1q#9j_rquZjqtg3crqQ0\rq?6^rq-*ZrpojSo'lYIrp]@EJa\0Y +Ja]u7rp]pUm-t#EqssaXqt0m\rq??bqtL!_rqZ6`rqlTjp&4deJcE=]mJm1bo)8Rcqtp0brqZQgq"Od] +qt9s\qt'gXqsjRQm-fMnrpG@*JaSfko'c8@rpfmVrq$$Zrq60^qtL*brqZ?crqlTjp&4dee,P"!fDkjL +o)8Rcqtp0brqZQgq"Od]qt9s\qt'gXqsjRQ!UoLFmt'nkmXaeWmK)bDo'c8@rpfmVrq$$Zrq60^qtL*b +rqZ?crqlTjp&4deJcG!7_>jN6o)8Rcqtp0brqZQgq"Od]qt9s\qt'gXqsjRQm-gtBJaS*WJaVdjo'c8@ +rpfmVrq$$Zrq60^qtL*brqZ?crqlTjp&4de!WW1Rs+C@?rqlZkr:TsdqY9mcq"XU_p@\+Ro^DD;nq$@_ +nq$A:o'c2Fo_%nVpA=U]q"X[^qYU0_r;QZcrdk*\s6]jZrqlZhr;6BgqY9mcq"sgbp@\+Xo_%hKo)%s. +nG_p.n:C(onG_tKo)&%Uo_%nVpA=U`q"sm[qYpBer;QZcrmUmus4@;DrqlZhr;6BgqY9mcq"sgbp@\+X +o_.kVoC_\OnU^1on:C([n,`%JrpfRMqt'^Wp%A=XqtL*bqt]p]rqlKgrr)EeJcG!7_>j3-qu-U0[p\=IQp#u%!oRZXcoW.WWp%\7Rp\Xabq>:!_qYpBhr9sU]rdk*Ss6'FZrpp$e +r:TsaqYU*fq"=CYpA=OOo^DC/nq$@_ntbjFoC)>Np%A%Up\Xabq=XU]qtpU0^p\X[]p&+ISo^DC&nt>Q)nrE;5oDJ4Ko`"OVpA=U]q#:*^qYU0er:U$]rdk+3s1A=.rpp$e +r:TsaqYU*fq"=CYpA=OOo^DC[nq$@_nq$B,o'c2=o`"OVpA=U]q#:*^qYU0er:U$]rqueMs+14?s7QBX +rVQNiqs=1Mq="+NpOW'ipOW(MpZ_JGq="1Zqtp9fr:9gZrdk*Js4dSKrpp$br;6B[qYU*cpt,8(p4;pg +p9"&Bp\"=\q="1Zqt9m[rV6B.s+13hs7lTarVQNiqsXCYq>9pfp\3A8JbH):JbGH(lhBoCp%\O^n,!%\ +p&+L]q#5jEfDi&Sq#9j_qu$?gn+uqWqtSe;^\36PJbFZgg@t:8rqZ$ZrqlBdp&4[bmJhn?JcG9?j8T&V +p&*tLq"j"GJbalmJbc/rr)Nfn,*+\cM<\!JbXfkXn^<>qtfdYp&+gf +m/Fj$JcE^hm/I"_p&+:Urqc?ag%g3oWVD&>Qh]nBkP>#On,)eUrr)3_JcF@%YQ*tgrr)Nfn,*+\cM>6M +JbXfkJb[XgqtfdYp&+gfm/HDPL&Z`(huEBKj8JZKk54fIJbjroJbltSj88EFp&4[ao)=4?RK(M2qu5jY +q#'^[Jbna0JbjroKDP9ZJJcCE'])TbKK`-K#Jc2;@^](#.JcDPGhYuacNs+13$rrE(Mrdt-#rdk(9rdk*7 +s+148s-We:rdk'"rn%.Ms+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13( +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK( +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13( +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK( +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$ +s+136s+11tardk%:rIOourJCL;rfR53s-!EOrr)hIrIt3$rIOq=rTX<4s/5mJs8;o`rgWk;rIOou +rS@G:rk8>cs+13$s+13$s+13$s+13$s187$rmC\"r.4csr1rdk*[s,R-MrmC\Nr.4csr.4e:r7Co6rm1Uus+13$s+13$s+13$s+13$s31N?rosCVr:9`9qX"'0 +qLSKqqXsa\r9XCTrjDcWs0ht)rosCVr:BdcqgnTqqLSKoqX+.PqtU*UrUp/@s3(G8s82f[rV6<]qj@52 +qLSKoqUbT:qtU*UrUp0Ks+UK(s+13$s+13$s+13$s+13us8N#arUp*`qt9gbq18>-pjr3kpkJSCq=XUZ +qss[UrVQT(s+13_s8N#arUp*`qt9ddq=t$dJbXilJbXfknG*"Yp%nI\o)/(Wqu20HcMsdArr29_p&+U^ +p%n[`R.u7-JbXfkgA([Cp%nI\o)/(Wqu5[VL&Z`(JcC<$JcC<$JcC<$JcFL)q#9j_qu$?gn+uqWqtSe; +PP0S$JbH5>g@t:8rqZ$ZrqlBdp&4[b_>f)d`W,`4o)8I`qtojYqt^-a!Vc?ApOW%;p4;q(p?VJBp\"=\ +q="1Zqt9m[rV6ACs4@:Ss7lTarVQNiqsXCYq>9s=pV6EQp4;pgp=f96q#:*XqYpBbr:U$`rpB`>s+13$ +s+13$s+13$s+13$s6'FZrpp$er:TsaqYU*fq"=CYpA=OOo^DC/nq$@_ntbjFoC)>Np%A%Up\Xabq=XU] +qtpU0^p\X[]p&+ISo^DC&nt>Q)nrE;5oDJ4Ko`"OVpA=U]q#:*^ +qYU0er:U$]rdk+3s1A=.rpp$er:TsaqYU*fq"=CYpA=OOo^DC[nq$@_nq$B,o'c2=o`"OVpA=U]q#:*^ +qYU0er:U$]rqueMs+13$s+13$s+13$s+13$s6BX`rpTgbr:p0gqYp<`q"=@[p&"CYoC_\=nVZgen:C)) +nEf]9o)A7Uo`"OVp@\4[q>U6cqtp<^rVlfCs+14"s8N#drVl`iqu6Hkq=XOUpAXa^o_\7Xo(qqAnU^2& +n:C(hnFZ8Hnac8MoD%tWp%A%Oq#:*gqY9sbr:9gcrdk+3s1\O4rpTgbr:p0gqYp<`q"=@[p&"CYoC_\= +n[@qnac8MoD%tWp%A%Oq#:*gqY9sbr:9gcrqueMs+13$s+13$s+13$s+13$s6]jcrpp$e +r;6BdqYpnG_tTo)A7Xo`"O\pA=U`q#:*aqYpBh +r:U$crmUmus4@;Mrpp$er;6BdqYpnG_tT +o)A7Xo`"O\pA=U`q#:*aqYpBhr:U$crdk+6s2"a7rpp$er;6BdqYpnG_tTo)A7Xo`"O\pA=U`q#:*aqYpBhr:U$crW3'!L&Z`(JcC<$JcC<$JcC<$JcGHD +q#:'erquZjrqcNfrqQBbrq??aqt0mZrpojSrp]ULrpK[Nqs==Jqs*b:MWfWTJ`ronp$)8:rp0@GrpBUN +qsXFOq!n@Srq$$Zrq69arqHs7634s76-fr;6BjqYU*fq"XR^o`"IZo)A1Yn,DhUn,DbSmJcJFlhfrDkjmp3 +k-jB&jalNEjnRs4k4Rp1kl0i>li-8MmJH>NnG_nUnb_nVoD\CWpA=Xaq>:$fqtpl2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$fqtpU0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&Ckl0`Djn7^0j7VEBiITs=iITte +iUZ"'j7VL4jo4E;kl0iGlMKoHm/HDLmf)_Tn,DkVo)&(Yp&=^_q#:*dqYpBhquQcpqYg3gQ2cF8JcC<$ +JcC<$JcC<$K)YiMr;QBfrquQfrqQBbqt9s\rposVrp]pUrpKdPrp0RKroj7BqrRhJcC<$JcC<$JcC<$L&_/O!<)WirquZjqt^6dqtL*`rq-3] +rpp'XqsXOOrp9XMrosFGroa1?roF('rnI"tqq8F1J_5P+J_9bMrn6bornI,$ +qqh5.qr7M6roO.Broj@Grp0RMrpB^RqsaUUrq$-]qtC$`qtU0d!W2`oqtpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$ +g&BY$fC.8Pe>:WFdt,u_e)o0Kec+1tf_F/!g\]e'hYuI4hu;R5iVqp;jo4EAkl0iGli-8MmJHAOnG_tW +o`"O_pAXgcq#:*dqYpBhr;6HirpKf;s763hrq66hr;6BjqYpMlMg#H +k5OKAjSRp8hu;R5hu;L3h##k(g&9V'f_a:he`PA4e%=([e#CgYeF_;hec+1tf_F/!g\]e'hYuI4hu;R5 +iVqp;jo4EAkl0iGli-8MmJHAOnG_tWo`"O_pAXgcq#:*dqYpBhr;6Hire1=,s8N#jrVl`lqu6Hkq>U0g +p\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?[Yo?dKarmL\mrm^qtrmq)#rn7;*rnRM0rnm_5ro*k:roF(?roj@Grp'LN +rpTjUrpg!Yrq$-^rq??crqQKgrqcWkqu$6fqu2KQhuE]Tq#13iqtpBhrqZQgrqHEcrq69^rpp'Yrp]pU +rpKdNrosFGroO.?roro3h4rn[S/rn7;'rmq)!rm^hnrmC_krm1\kc2c/h +c1oN[bPoY8ad:,#ab@k8aoTZ-rlb)\rltGfrm:YjrmCVkrmUksrmq)#rn7;+rn[J/ro*k:roO.Aroa:H +rp9XPrpTjVrpp'\rq69arqHEerqZ?dp&4mhMZ;]9rr2Thq"t'drqQKerq??arq-3\rpg!VrpKdPrp0RH +roX4Aro=";qqqD/rnRM+rn.5$rmh"tqpPJkrm1Sjrm(MfprrWYrlV@bJ]WJbJ][B&qo\o]prr`^rm(Mi +rm1SkqpPJmrmh#!rn%/&rnRM/qqqD3ro=">roX4Crp0RMrpKdSrpg!Yrq-3_rq6BepAjseq#:*aqt9pe +rhTRFs+13$s+13$s+13$s,m?\rq63iquQ`nq"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S. +rn@A(rmh"trmLemqp58erltGdrlb;`rlOrUrl4iSdDW<-J]!&VcGRrGrl+cSprEBUrlY5`rlkAdrm(Mh +qp>>jrmUksrn.5'rnIG.rndP1ro=">roj@Grp0ILqsaUVrq-3`rqHEeq"jmcqu-Ekp]#gEqu?Zpp&4mf +q"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"trmLemqp58erltGdrlY>baoKT` +anWpU`r!a&`.>hH_h#_8_p64"`;mpU`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:.i;Vd9 +jo4KCl2L#GmecMQoD\C]pAXgcq"X^_r;6Hirf-s>s8N#jrVl`iqYp9hp\smco`"FYnG_nUmf)POlMg#H +jo4<;i;VU4h>Z1.gA]b(ec+(tdf.Vjci25hc2PrdbPoZ`anWpU`r!a&`8/=^_h#_"_p64"`V[[Ma8X3[ +b5TT`bl5ldcMl/ed/MJme,Insf`'S'g]$%.hYZ71j8S0>kl0iGlhg,InG`%YoE"[Z!;?EdrqQ9bqu$?i +qu3MnJcC<$JcC<$JcC<$JcCu7rr2]krqucm!;Z`mqYp!]Rd_H]Wf'8^&,PC_#D+G +_#D1I_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[p&=[a +p\sseq>U6iqu6NgrVQTms+14Ls8N#mrVl`oqu6Hkq>U0gp\smcp&=U\nc&"Vmf)POl2KiEjSn3=i;VX5 +hYu:/g&BS%e,Iemd/M>ic2PlbaSs6Z`W!gT_u@LR_86)dqnW3GrkSNJrk@X1J\82!J\7Gam(NA3!PZ;I +_#D+G_#D1I_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$g]$(/hu;R5j8S0>k5OWEli->On,DhUnc&1[ +p&=[ap\sseq>U6iqu6NgrVQSXs60L^rqQHkr;QTmqYpM]Rd_H]S*ra^&,PC_#D+G +_#D1I_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$g]$(/hu;R5j8S0>k5OWEli->On,DhUnH&:S!;-9` +rq??crqQKgrqcWkrquQiqu3_tJcC<$JcC<$JcC<$JcD):rr2Thrql]k!;QZkq>U0dp\sjbo`"F\nG_kT +mJcDMkl0cEjSn0_7L^\b_D]_f>?])0&;\F6nj +[Xkl<[]R",\,3]7\biu;]DK8?^&GeG_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+hYuI4j8S-= +kPj`FlMg2Mn,DhUo)A7[p&=^_q#:*gqYpBbrVlfps+14Lrq66hqu6Hkq>U0dp\sjbo`"F\nG_kTmJcDM +kl0cEjSn0_7L^\kbF^&G\A]DfD=\c0,-[t1ue +[XklR[dU^(\,j+Lrjhp;rk&'?rk89qZ2q8:rj2L/rjDa6rjVm:rjr*@rk/6FqnW3Jrkn`SrlP/_rltGgrmC_nrmq)$ +rn@A.rnm_6roF(@roj@IrpBUOrpp'\qtC$`rqZHfqu$?iqu2o]mf3:cp&4mfrqcNfqtL*`rq-3\qsXON +rp0RIroX4@ro*k7rndY.rn.5$rmLemrm1Sgrlb;_rl+lTrkeZMqnN-Crk&0@rj_s:rjM^3rj;R/qm,dt +^T`9nJZs^0os+1qrj2L/rjDa6rjVm:rjr*@rk/6FqnW3Jrkn`SrlP/_rltGgrmC_nrmq)$rn@A.rnm_6 +roF(@roj@IrpBXP!:TpXrq-*]rqHEfqtg3fqu-EkYlB:SJcC<$JcC<$JcC<$RfEBdqu-Nlrql]krqZQg +!;?Ngp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9 +[JmN3ZMUm*YPt^(Xo>EsX8]-oWJ[X*W.CnCW;*@hWr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No:]DfMC^])%J +_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`Fli-APnG_tWoD\C]p&=^bq#:*gqYpBkr;QZlrW)tO +s8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS +_#D+J]`,PB\Gir9[JmN3ZMUj,YHIr0riZ7&riGmqri5amJZ,6?JZ+U-po44l!NN0sX8]4"Xo>L&YPYR' +Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_ +p\sseq>U6iqu6NmrVQS[s6fpdrqlZnr;QTmqYp>[f3]6Zi79-Yl:j*Y5YR&XSAjqWq`R%W.CmuW.CoBW;*@h +Wr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No:]DfMC^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`F +lN-JC!:TpVrpg!Zrq-3_rqHEerqZQirql]mrr)`nYlB:SJcC<$JcC<$JcC<$RfE0]qtpBhrqQKe!;6He +pAX^`oD\=[nG_kTm/H8KkPjTBiVqa6h>Z+,fDa;!d/M>ibl5]_`W!dS_>_4K^&GSA\,Nf7ZMq-.YPt^( +XS]$sW;`^oVZ*FhV#-qLU7@p.Tn/oGU#r*KU\LYaV>d@kVuE[mWrB'uY5YX(Z2V'.[JmZ7\c0;A^])(K +_u@[TaSsE_cMl2ieGe%ug&Bh,hu;U6jo4HBl2L&Kmf)_To)A7[o`"R`p\ssbqYpBer;ckNs7lQiqu6Hk +q#:$epAX^`oD\=[nG_kTm/H8KkPjTBiVqa6h>Z+,fDa;!d/M>ibl5]_`W!dS_>_4K^&GSA\,Nf7ZMq-. +YPt^(XS]!uW2K]prhoamrh]LfqkN;JJYBBCJYAa1k+_jM!2TFdrh]Ukrhoapql9XrriZ7(riuI.rjDa7 +rji$ArkJHKrkn`TrlG)_rm(Mirm^qurn7;,rnm_6roO.BrosFKrpKdTrpp'[rq-3`rqHEeqtghOpn7V[rhKIgrh]Ukri5suriQ1'riuI/rjVmU0gpAX^boE"UVrpg!WrpTjOroj@Dro3q8rndY-rn%/!rm:Yhrlb;[rkn`MrkABCrjVm5 +riuI+ri?$uri#gkrhBCarh07^rg`tVrgEbQrg3VMrg!8Bplb31R?2u]JWR*too]$4plk]Brg*PMrg<\Q +rgNhVrgj%]rh'1`rhKIkri,mtric=+rj2U5rjr*CrkJHLrl+l[rm(Mirm^qurn7;-ro!e8roX4Drp'LO +rp]pWrq-3_rq??drqZQirql]mrVZcqrVQSZs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUlMg#Hk5OB> +i;VU4g&BV&eGdhoc2Poc`W!dS^](tH])K2roj@HrpTjUrpg![rq69arqQKgrqcWkrquZlqu35fp](6l +q#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4rn7;&rm^qorltGcrl+lSrkJHHrjr*U0gp\sjboDnF_ +o()eLrpKdProj@Dro="9rn[S.rmq(trm:YhrlP/Zrk\TKrk/6>rjDa2ric=%ri,mnrhTOerh'1[rgWnS +rg3VMrfmDGrf[/@rf@&?rf@&=qi10*QA^Grg*PMrg<\Srgj%\ +rh9=drh]UnriH+&rj)O2rjVm>rkABJrl4rZrltGhrm^qurnIG.ro!e9roX4Drp9XPrp]pXrq$-^rqHEe +rqZQjrqu`n!WDuorg!N_rqQHkr;QTmq>U0gp\sjbo`"F\nG_kTm/H5Jk5OE?i;VR3g]#e'e,I_nc2Pia +`rd:iU&L\`SGo#WR/WHOQN!*LPEQ!1rf[/@rf@&?rf@&=qi10*JW$Uf +JW$(Wm#:q'rJgo=NrG.>O8b7?OoCOCPQ$gGQN!6MR/WTSSc58\U&LhdV>dInXT#F&ZMq92\,O&>^AbtJ +`r=*Zc2Q)heGe%ug]$%.i;Vd9k5OTDm/HGPnG`"XoD\F^p\sseq>U9jr;6Hirh'5bs8N#mrVl`oqu6Ej +q#:$ep&=U_o)A.Xmf)SPkl0`Dj8S!9h>Z1.f)F.td/M;hao9_4K]`,D>[JmK2YPtU%WW&anV#I(e +TDkA[S,SfSQi<O8b7?OoCOCPQ$gGQN!6M +R/WTSSc58\U&LhdV>dInXT#F&ZMq92\,O&>^AbtJ`r=*Zc2Q)heGe%ug]$%.huVlu!9=(@roj@JrpKdT +rpp'[rq69brqQKgrql]mqu-Ek\c76\JcC<$JcC<$JcC<$U]:>mqu-Nlrql]krqQKerq??`rpg'Xr9sXO +rp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&? +rf6u;rf$i7qhkB0reUH,LPCA7JVKbNreLK/re^N0repc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIi +ri,n"rilC-rj_s=rkABJrl+lXrm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\rq??crqQKhrql]m!;urs +rVQSZs8N#prVl`oqu6Hkq#:$epAX^`o)%nTm/H;Lk5OE?i;VU4g]#k)df.VmcMkoa`W!^Q^AbbD\Gif5 +Yl:g)WW&doU]-qcT)P;[RJrQPQ2ZsGOoCF@O9(B%!07&N20MuJ\7NW+t;OT(=?OoCOCQ2[-LRJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nu +gA]t.i;Vg:k5OZFm/-8No)A:\pAXgcq#:-hqu6NmrVQSds7cQmrqlZnr;QTmqYp9hp\smco`"FYn,D\Q +lMfrFj8S!9hYu:/f`'=ud/M>iaSs0X_>_1J]Df>>ZMq*-Y5YF"VZ*@iT`1P^Sc5&VQi<9LP5^UCO8b7? +NrG%;N;eb4MZ/J3M#2t6L4P)1L4P*MLAlu-M#N8.MZ/P5N;eh9NrG.>O8b:@P5^aGQi_FQaSsKad/MJmf`'V(h>uQm!9!k;roX4Frp9ONrpp'\rq??crqQKhrql]m +rr)`n\c76\JcC<$JcC<$JcC<$VZ6Ypqu-NlrqcNfrqHEcrq-3[rpTpV!UoLVlMg#Hk5OB>hu;I2fDa>" +dJhJkb5TH\_>_4K]`,A=Zi70-XT#0tV>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=PHIt<*# +J"_A_JGt,sK):6#L&Qo-M>iG4NrG+=OT(ICQN!9NSc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>k +eGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^bq>:!gr;?KlrVQScs8N#prVl`oqYU*fp\smco`"C[nG_nU +lMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70-XT#0tV>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5 +M#;r,L&Qc)K):,lJ:W3=It<*-J+nKkJGt,sK):6#L&Qo-M>iG4NrG+=OT(ICQN!9NSc58\T`1eeW;`mt +YPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^bq>:$cr;QZlrh]Yks8N#p +rVl`oqYU*fp\smco`"C[nG_nUlMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70-XT#0tV>d.e +T)P;[R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=PtIt<*#It<+BJ+A-hJbt&rK`6])M#N81MuJb9O8b7? +PQ$mIR/WZUTDkM_V>dFmXT#F&Zi7E4]`,YE_>_LSbPoiedJhYpf)a^`!8[Y4ro3q>roj@HrpTjUrpg![ +rq69brqZHfqu$Hlqu4A1JcC<$JcC<$JcC<$JcD_Lrr2fnrqucmrqcWirqQKdrq-3]rp]pT!:0aQm/H5J +k5OE?i;VR3gA]Y%df.Slb5TH\_u@CL])K2i5.K`6W' +Jc:3!J,XooIK"WhHiA>HH%C6lH(fN_HM`'dI/\QkIf=irJGt-!KDpQ'L&Qr.MZ/P5O8b:@PQ$pJRJr`U +T`1_cV>dOpY5Y^*\,Nu<^Ac%La8X6\ci2Alec+;%h#?72j8S3?kl0rJmf)_ToD\F^pAXjdq>U3jqZ6Tk +rquZlrr/Vkrr2fnrqucmrqcWirqQKdrq-3]rp]pTrp9XJroX4?ro!e3rn@A%rmLelrlY5\rkn`Lrjr*< +riuI*ri?$prhKIcrg`tUrg3VJrfR2@repc5re^W.re19'rdb*#J,k-!J,XooIK"WhHiA>BH(B53H&HtI +HM`$hI/JBkIJ\KmJ,XutJc:<$K`6])M>iD3MuJe:OoCRDQiU0g +pAX^`oD\7Ymf)SPkl0`Dj8S!9h>Z.-ec+"rci2)da8X!U^Ab_C\,NZ3Y5YL$V>d7hT`1J\RJrQPPQ$^D +O8b(:MZ/J3L&Qc)KDpH$JGt&tIf"QmI/&'fHF%mJH%C6lH1cI^HM`'dI/\QkIf=irJGt-!KDpQ'L&Qr. +MZ/P5O8b:@PQ$pJRJr`UT`1_cV>dOpY5Y^*\,Nu<^Ac%La8X6\ci2AleH+CX!8@G-ro!e9roX4Drp9XP +rp]pYrq69arqQKgrqcWkrquZlrr0\4JcC<$JcC<$JcC<$JcDhOrr2]krqucmrqcWhrqHEarpp'XrpTjQ +!:'[Oli-)HjSn*:hYu:/f`':tci2/f`W!aR^](eC[f3Q2Y5YI#VZ*7fT)P8ZQN!-JOoCF@N;e_6LAll* +KDpE#J,XorIK"WnHiA?jH2DjcGQ)d_Fbb'iFFeP*FT-F^G5c^_GlE!fHN&9jI/\QnIf=irJGt3#L&Qi+ +MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'("Z2V01\c0AC_Z%ORbl5oedJhetgA]t.i;Vg:kPjfHmJcSRnG`%Y +o`"Uaq>U3jqZ6TkrquZlqu3Mnrr2]krqucmrqcWhrqHEarpp'XrpTjQrp0RHroF(:rndY/rn.4trm1Sf +rl+lRrkJHCrjMg2riZ7#rhf[frgs+Zrg*PJrfR2@rf$i6reCE*re(3#rdXorrd=fpHiSQnHiA?jH2Djc +GQ)d_Fb+Y*FFeOiFT-F^FoZ^eGB`q/rd"Khrd4WlrdFcprdXotre(3(reCE0rf$i;rfR2Erg*PRrgs+^ +rhf[oriZ7*rjDa9rkJHLrl+l\rm(Mjrn.5(rndY4roF(Arp0RNrpTjUrq$-]rqHEfrqcWkrquZlqu3Po +!<<&tq#13irql]krqQKerq-3\rp]pUrp9XMroa:Aro!e4rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sp +rh07^rg`tRrfmDErf@&;reg]0re19'rdautrdOiprd=]lrd+Qhqfr*arc\0]ZZLb?JTQHbnoXkRrc\9b +qfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJrg`tZrh07fri,n"riuI1rji$CrkeZRrlkAe +rm:c!fDsS'gA]t.i;Vg:kPjfHmJcSRnG`%Yo`"Uaq>U6iqu6NjrVQT2s+13$s+13$s+13$s+13Os8N#p +rVl`oqu6Hkq#:!dp&=R^o)A+Wm/H8MkQ0o2ro=":rnm_-rmh"qrm(Mcrl4rQrk8d7hTDk>ZQi<6KOT(7=MuJG0KDU2uIf=`oH2`'f +G5cRaF)q>&qf;[Upi-4Nrc%aQJSq,uJSpKcqeuIQrbhdUq/H=Qqf;[WrcJ-_rce?erd=]nqgeZure:?0 +rf6u>rfmDKrgWnZrhBCgriQ1(rj)O7rk8U-fpAXaao)A.Xmf)MNkQ'`Gk2u[%rndY/rmh"rrm1Scrl4rRrk8Brf$i4re:?&rdXoqrd+Qgrce?`rcA'Zrc%jTqelCMqeZ.FJSKaNJSLZhrbM:Frb_OM +rbqdTrc8!ZrcJ-`rd"KhrdFcqrdk'&reUQ4rf@&Arg!JPrh'1ari#gsric=/rji$Ark\TQrlP/crmLer +rnIG/ro*k=roj@HrpKdTrpp']rq??c!;QZkq>U6iqtU,fs7lQlqu6Hkq>U-fpAXaao)A.Xmf)MNkl0`D +iVq^5g]#b&df.Slao9_.I\c0#9YPtU%W;`OjT)P5YQ2[!HO8b+;M#N,-Jc:/uIK"QlGlDpdFT-@\ +ErL"YDf5VoqelCMqeZ.FJSLNdJSKmRrbDLMq/$%IqelCOrc%jWrcA'\rce?erd+QlrdXoure:?-rf$i; +rf[8GrgWnZrhBCjri?%%rjDa9rk8U6iqtU-,s+13$s+13$s+13$s+13Rs8N#prVl`oqYU*f +p\smco`"@Zmf)VQkl0]EirS3#ro!e2rn7;!rm1Sgrl4rSrkJHCrjDa0ri?$qrhBCargNhQrfI,>rf$i2 +re(3"rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2raq@*JRsCDX_%BAnn7i5rb;7ErbMLLrb_OM +rc%jVrcA']rd"KirdOirre(3)rf$i:rfI,GrgWnZrhBCiri?%&rjDa9rkJHMrl4r^rm:Ymrn7;+ro!e9 +roX4DrpB^Rrp]pZrq69b!;QZkq>:$cr;QZlrilG%rqlZnr;QQiq>U-fpAX^`nG_kTmJc>Kk5OE?i;VO2 +g&BG!ci22g`rN;eS2KDpB"If=]nH2_scFT-:ZE;jeTDZ4JR +Chs)frbMLJqe?%Clt?<0JRtflJRt0Zqe#D3!,2:Drb;7ErbMLLrb_OMrc%jVrcA']rd"KirdOirre(3) +rf$i:rfI,GrgWnZrhBCiri?%&rjDa9rkJHMrl4r^rm:Ymrn7;+ro!e9roX4DrpB^Rrp]pZrq69brqZHf +qu$Hlqu3i"!WN&urqlZnr;QQiq>U-fpAX^`nG_kTmJc>Kk5OE?i;VO2g&BG!ci22g`rN;eS2KDpB"If=]nH2_scFT-:ZE;jeTDZ4MPD#S5LCAV`EB^BC2B"qo.AV"ED +Ac$*1BDZBAC&;ZEC]8/LD>S5ME;jkVF8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9 +^]).M`W=?/!6tMirmLf!rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`naT$hkJcC<$JcC<$JcC<$ +YQ+V$rr)iorql]krqQKerq-3\qsaUPrp'LEro4"9!T2f6g]#h(e,I_nbPoQ]_#D"G\c/o6Y5YL$U]-qc +Sc4rSPQ$XBN;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*r_@"D^:@%Ld!@JaO5A,Bg9 +Ac??AC&VlHD>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X9]d/MMn +fDaP(hu;X7jo4QEm/-;OoD\@^pAt$_rqZQirql]mrr)`nYlF_%rr)iorql]krqQKerq-3\qsaUPrp'LE +ro="8rnIG(rmUknrlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^P +rbDFGrb).?!+l.?qd]V7nmR)WSR@"VLg^'fr*fJ3raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!# +reLK3rf@&Brg*PSrh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEfrqcWk +rqucoqu3i"!WN&urr2lqr;QTmqYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+ +X8\mnT`1M]QN!*IO8b+;M#N&+JGsurHiA0eFT-=[E;jbSD>n;LB`;ZAAc?6;A,]s.@C'?m@"D^:@.I^u +@JaO5A,Bg9Ac??AC&VlHD>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GeJ +a2\2#rlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]mrr)`naT$hkJcC<$JcC<$JcC<$ZN'q' +qu-Nlrql]jrqQKerq$-[rpTjRrp'LHroF(;!8[b5hYu1,ec*tqbl5]_`;[LM])K,:YPtR$VuE@gSGnoT +P5^OAN;eS2KDpB"HiA9hG5cO]E;jbSC]8)JB`;WCAc?6>@f'U5@/F=(?LhBc>_-.2>ch9(?1M>$?i+71 +@JaO5AH$0>B)ZKCC&VoIDZ4VSErL7]GlE'hJ,Y*"LAm/2O8b=AR/WWTT`1kgX8]=%[Jm`9^Ac(MaSsE_ +dJh\qf`'b,iVqp;kl0lHmJcSRnc&+[pAt$_rqQKgrql]mqu-NnZiC%(qu-Nlrql]jrqQKerq$-[rpTjR +rp'LHroF(;rndY,rmh"qrlkA_rl"fMrjr*:ric=$rhoagrg`tTrf[8Arf$i2re(3"rd4Whrc\9]rc%jS +rbMLJrb2:Cral(>raGn:@JsX6@/F=(?LhBQ>cCtZ>aJ^g?2%\'?N+=/@/aU3@fBp;Ac?<@B`;`FC]85N +E;jnWG5cacHiANoKDpW)N;en;P5^jJSGo2\VuEarYPts/\c0>B`;[jWbl6#hec+5#hYuL5jSnBBlMg2M +n,DkVoD\L`q#:*gqu6NjrVlf&s8MuurVc]nrqucmrqZQgrqHE`rpp'WrpB^Mroj@Bro*k5rn.5#rmC_h +rlG)WrkABCrjDa/ri5sqrh07\rg<\Jrf@&;reCE)rdXoorcnEcrc8!Wrbh^NrbDFGrau.@rac";qdKJ3 +qd9#&nm0"8JR!b2JR%kRnm;<&qdBD3qdTP8ral(@rb2:FrbMLNrc%jWrc\9crd4Wore(3)rf$i;rf[8J +rg`t\rhoarric=/rji$B!Q;nV`;[jWbl6#hec+5#hYuL5jSnBBlMg2Mn,DkVoD\L`q#:*gqu6NjrVlf; +s+13$s+13$s+13$s+13Xs8N#prVl`oqu6Hkq#:$epAX[_nc&"Vli-/JkPjH>hZ2F4gt_n[rmLelrlG)W +rkSNFrjMg2riH*srhBC_rg<\Krf@&:reUQ)rdXoprce?`rc%jTrbVRKrb)4Brabn7ra5Y4ra5Y2qd'2+ +nltcjP?EH>JQ]*Xnlk]jqcs,+qd080ra5Y4raGe:ral(ArbDFKrbqdTrcJ-`rd=]ordk')repc:rfd>K +rgj%_rhoasriuI2rk&0Frl+lXrm1Smrmq)(rndY5roa:Frp0RPrpg!Z!;6HepAXgcq#:-hqu6NmrVQT) +s8N#prVl`oqu6Hkq#:$epAX[_nc&"Vli-/JkPjH>hu;F1f)F+sci2#b`;[RO]Df8_4ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMg< +rkSNPrlG)brmUktrnRM0ro*k>rosFJrpTjVrq$-_rqHEerqcWkrqucoqu4/+rr2io!<)oprql]krqQKe +rq??_rpg!Vrp0RJroa:>rnm_1rmq(srm1Sbrl"fOrk&0Brepc3rdk&urd=]h +rcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4ra,J-r`o"uoif+5JQ[P,JQ_PIoiq;ura#D-ra>_4ra>_6rac"> +rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMgl2L#Jn,DkVoD\I_p\sseqYpBkr;QZlrlb=ms+13$s+13$s+13$s0_n+rqlZkqu6Hkp\smco`"C[ +n,D_Rkl0`Dj8S!9g]5t-f\$2Nrm1Sfrkn`Nrk8<'r`K&!r`8/]P>m*4JQ/aNk#M:Zr`Au!r`T,'ra#M1ra>_6rac">rb)4I +rbqdTrcS3crdFcrre19+rf@&Arg!JRrh9=eriQ1)rj;[t*dJhJkbl5NZ_#D%H +[/R-qT`1M]Q2ZsGO8aq6K`6N$IK"KjFoH@ZDZ4MPBDuNBAH$$:@/aO1?2e+,=TDV(=Sl2!lJ%.?iFI4@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^ +V#ILqZ2V-0^&GhH_u@mZcMl5jf`'Y)i;Vd9k5OTDmJcSRnc&1[p&=^_qYpBkrVQT)s8N#qr;cfnqu6Hk +p\smco`"C[n,D_Rkl0`Dj8S!9h#>t*dJhJkbl5NZ_#D%H[/R-qT`1M]Q2ZsGO8aq6K`6N$IK"Kj +FoH@ZDZ4MPBDuNBAH$$:@/aO1?2e++=oMP#=8l7_lJ%.?iFI4@K'g: +Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^V#ILqZ2V*2]tFEZrkSNNrlkAermC_trnIG1ro="? +roj@KrpTjVrq-3_rqHlIt)=oMP&=8l7qQ.q-?iFI4A,^$_OTbPolfec+8$h>ZC4jSn<@m/HGPn,W%\ +oCMtSrqHEfrqcWkq#.c'q#13hrqcWirqHEbrq$-YrpKdProX4@ro*k4rn7;$rm:YgrlG)Trk8_4r`oG,qcWo#r`9,$^W;`mtYl;34^&GkIaSsB^d/MSpg&Bh,iVqp;k5O`Hmf)_ToD\F^p\t!fqYpBerOMt(r;cfqqu6Hk +q>U-fp&=R^nG_kTm/H/HjSn-;h>Z+,ec*qpbl5]__>_.I\c/i4XT#0tU&LV^RJrBKNrFq8K`6Q%If=Tk +FoHC[DZ4GNB`;QA@fBd7?iF=0>PhS&=T2D$=&X;u9Pk^W;`mtYQ;;F!4i*Brk\TTrlb;frmh#$ +rn[S4roF(@rp9XPrp]pYrq69brqZQirqlKhbQ!.nJcC<$JcC<$JcC<$\GuR-qu-NlrqcWirqQKdrq-3[ +rpTjQrp0RFro3q7rn@A'!7Ltte,IYlao96X^](hD[Jm?.WW&[lTDk;YQ2ZjDMZ/A0JGsurHN&!bEW0nU +CAqlFAc?*:?iFC2>Q.h*=oMM%sCC:]!q=:OuX8j;uTerQ.t. +?iFI4Ac?BBCAr/NEW1%YHN&_4ra,S.r`];(r`B)" +r`/kp!)rkppeh#eJPVD(JPUkn!)WSipegodr_rerr`9#"r`T5(r`fA.ra5Y4ral(BrbDFNrc.pYrd+Qk +rdb!&repc:rg!JOrh'1bri#h!rjDa:rkJHNrlP/brmUkurn@A/ro3q=rp0RNrpTjVrq-3`rqQKgrqcNi +rr)`n_Z0W7qu$QnquHZoqYpQ.h*=oMM%sCi:Ou;m:Ou=. +:]!u`;>X8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&Q.e)X2h:]=2i:]!oX9o;Vq9S#m5 +9_D-Q:B")h:]!uf;>X8j<;onsQ.t.?iFO6AH$9AC]8;PErL:^I/\ZqK`6f,O8b@BR/W`WU].4k +YPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lHm/ZVVnF6GKrq-3arqZQirql]mrr)`n_Z0W7rr)iorql]k +rqQKerq-3\rp]pSrp'LHro3q8rndY*rmUkmrlP/XrkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^ +rc%jQrb2:AraPk6ra,S.r`T5$r`/qsr_iVjr(mAir_NMir_NDdnkF[/TM0o1N_K+?!)E5_r_WSiqb[8h +qbmDmr`/qur`T5)ra,S2raPk;rb2:Hrc%jWrce?hrdb!$reUQ7rfd>Krh'1bri#h"rj;[8rkJHNrlP/c +rmUktrndY4ro3q@rp'LMrp]pYrq-3arqZQirql]mrr)`n_Z0W7rr)io!W2`oqu6Hkq#:$eo`"F\nG_hS +lMg#Hir7m8hYu+*e,I\mao96X^](eC[/R9.W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA@fBa6 +?N+1.=oMJ$g;#X8i;#X8f:@_,f9S#lg9S#n49_D-Q:B")h:]!uf;>X8j<;onsQ.t. +?iFO6AH$9AC]8;PErL:^I/\ZqK`6f,O8b@BR/W`WU].1mYHIr0rj;[8rkJHNrlP/crmUktrndY4ro3q@ +rp'LMrp]pYrq-3arqZQirql]mrr)`ndJndtJcC<$JcC<$JcC<$]Dqm0qu-Nlrql]jrqQKerq$-[rpTjQ +rosFEro!e3rnIG%rm1Yi!R8mg`W!^Q^&GG=Z2Um)V#I%dSGncPOT(4k;uTbq=8l>$=oM_+ +?iFL5Ac?BBD#SAPF8gC_If=otK`6r0OT(LDSGo2\V#ILqZ2V01^&GkI`W"-]dJhYpg]$(/i;VmU0gp\sd`o)A+Wm/H8Kk5O<Z1.eGdhoc2P]]_>_.I[JmH1Xo>-qT`1J\ +Pl?dDN;eM0Jc:,tGQ)^`DuOSPB`;TB@K'X5?2e"+=T2D$<;oep;>sDh:]=,d:&[iZ9<(U88qBTc9'JtF +9D_E^:&@]b:]!uf;>sMn<;otu=T2J&?2e41@K'j;B`;iIDuOhWGQ*'jJc:?%N;eqlIt,=8l8"<;obo;#X8i:B!ub9`%K^9&N:)8:a<_8?GGC8c)-Z +9DD3[:&[oe:]=2i;>sPoQ.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8 +^])+LbPoiedf.r!h#?72jSnBBl2^5QmdC)Drpp'^rqHEerqcWkqu-Nn`W,r:qu-NlrqcWhrqHEcrpp'X +rpKdNroa:Aro!e2rn7;!rm(MdrkeZKrk&08riZ7#rh07\rgEbIrf$i5rdaurrd4Wcrc%jRrb2:BraGe5 +r`oG,r`B)"r`&kor_WSir_EGeqb.#`9DqN_9&N9l8?#.28=)m58bksT9)_KY9`@cc:B"&g;#X>k<;ons +=8lG'?2e41@K'j;B`;lJE;jqXHiAKnJGtE)NW,%=RJrcVT`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg: +kl0lHmf)_To)A@^p\sseqYpBhrVlf8s8N#prVl]qqYC3grqQKerq??^rp]pTrp'LGroF(:rnRM+rmLek +rlb;XrkABDrj)O+ri5sjrg`tUrfI,_JOnfmqb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jXrd4Wn +rdb!)rf-o=rgEbVrh':lWW9'uY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kl0lHmf)_To)A@^p\sseqYpBh +rVlfDs+13$s+13$s+13$s+13as8N#prVl`oqu6Hkp\smco`"C[n,D\Qkl0]CiVq[4g&BP$d/M2g`rX6$ +rkSNFrjDa/ri,mlrgs+Vrf[8?reLK)rdFcjrcJ-YrbVRIraYq9ra5Y.r`K/#r_i_mr_NMir_EGdr^uiT +r^cfSJO]E(JOY2[P",4:qagTUqb$i]r_Z+,ec*qpbPoQ]_#CtF[JmB/WW&[lT)P,VP5^I?L]2o) +IK"KjFT-7YD#S,IA,]p9?iF7.=T2A#;Z9Pm:]=2i:B!rd9(kgV8cD9U7tF-i7Y+$[7f5aN8,GjS8c)-Z +9`@cc;#X8i;>sJm5hn.@K'd9B`;fHE;jtYH2`6kK)UT*NW,+?R/W]VU].7lYPts/]DfVFa8X9] +d/MSpg&Bh,iVqsZC4jo4KCm/HGPnc&1[ +p&=^bqYpBkr;QZlrm^t!s+13$s+13$s+13$s1\O4rqlZnqu6Hkq>U-fp&=R^nG_hSli-&Gj8Rs8g]#h( +e,IVka8j-Z`5MYhrj_s5riH*rrh07Zrg!JEreg]/rdauorc\9]rbVRJrau./JGsloG5cO] +D#S/JB)Z6lJ+0@fC!=C&W&MF8g@^If=ruLAm54P5^dHTDkYcWW'+#[Jmf;_#D@Qbl5ugec+8$hu;X7 +jT+QHlK\B8rpTjWrq69arqZQirql]nqu4e=rr2fnrql]krqZQerq-3\rpTjQrp'LEro3q7rn7;$rm:Yg +rl4rQrk&0;ric=#rhKIbrg*PHrf6u4rdt,urc\9]rbqdMrau.=ra5Y/r`T5#r_r\jr_EGdr_*5_r^m)[ +r^ZcRrC6QNogF?uRR;WnMaR5,r'^Q.e)lJ+0@fC!=C&W&MF8g@^If=ruLAm54P5^aJT:Z+UrhTOmric=/ +rk&0Frl4r]rm:Yprn7;.ro3q=rp'LLrpTjWrq69arqZQirql]nqu5+FJcC<$JcC<$JcC<$JcEIaqu-Nl +rqcWhrqHEarpp'XrpKdOroj@@rnm_1rmq(srm1Sarke`N!PcDK[JmH1Xo>*pTDk;YOoC@>M>i)*IK"Kj +EW0kTC]7lD@fBa6>Q._'sAj:&[ca8cD9[8,GdQ7K,^/6]aWc6@hJ$6Jt6.7/fXM7fGpW8H)3[ +9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N*NW,(>Rf8oXU].CpZ2V01^]).Ma8XEae,Iqt +h#?41iW/0Ckii$2rpKdTrq$-]rqHEfrqcNirr(%?qu-NlrqcWhrqHEarpp'XrpKdOroj@@rnm_1rmq(s +rm1Sarkn`MrjDa1riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr_sJmQ/"/@fBp;C]85N +EW14^I/\]rM>iM6OoCgKT)PMaXo>U)[Jmr?_u@^Uci2Dmf)FJ(hu;X7kl0lHmf)_ToD\C]p\t!fqYU3i +rQG6#UrkJH?riuI)rhKIbrgNhKrf-o6 +rdk&srcnE^rbh^Nrac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-]L%09JO4oSqa04.qaCEP +pdY6Qr^d#[r_*5br_NMjr_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o>!LfGWRf8oXU].CpZ2V01 +^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QZEs+13$s+13$s+13$s+13as82cor;QQl +q#:$eo`"F\n,D_Rl2KlFiVq^5gA]V$d/M8g`W![R]E,[Xrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQ +rb2:?ra5Y1r`K/#r`&knr_NMgr_!/]r^d#Yr^QZOr^>@*i'O\7JO+iQc9^/Ng-ba*qaLKRr^ZrYr^m)] +r_EGgr_WSnr`9##ra#M2raPk?rbMLPrcS3drdXp%repc;rg*PRrh9=jriZ7,rk/6Grl+l\rm:Yorn@A- +ro!k?!U&YFlMg2Mn,DnWo`"Uaq>U6fr;QZ36/"Zq6g@&97/KFP7fGpW8H)3[9)_Tb:]=2i<;oqt=T2V*@/aX7B`;fHE;k"Z +HN&EnLAm,1OT(RFSGo5]WW'("Zi7W:_#D=Pbl5ugeGe2$h>ZC4kPjcGmJcSRo)A:\p\t!fqYU3irQG6< +rVl`oqYp6jp\+[^rq-3\rpTjRrosFFro*k5rn@A$rm:Ygrl+lQrk/6:riZ7"rh9=]rg*PFrepc1rdXon +rcS3ZrbVRIraPk6ra#M*r`9"tr_WSir_EGbr^m)[r^ZrWpdP0Mf0eI_h*HTXJO-"rg-XL\qaC_7rb2:Hrc%jZrd+QnreCE1rf@/HQ2m6MSGo5]WW'("Zi7W:_#D=P +bl5ugeGe2$h>ZC4kPjcGmJcSRo)A:\p\t!fqYU3irRCjus+13$s+13$s+13$s2"a7rqlZnr;QQlq#:$e +o`"C[n,DYPl2KfDi;VO2g&BJ"ci2,e_>_.K\H07OrilC&rhf[ergEbMrf-o4rdt,srcnE`rbh^Mrb)4< +ra#M-r`9"sqb[8er_3;_r^d#Yr^QcRr^?_U6fr;QZlrm^uIrqlZnr;QQlq#:$eo`"C[n,DYPl2KfDi;VO2g&BJ"ci2,e_>_1J +\c/i4X8]!qTDk8XPl?[AL]2o)I/\BiF8g(VCAqlF@/aI2>Q.\&;u9Dj:B!rd8cD9[8,c!T7K,^K6iBBe +6N09%5fu?C5e')Y6-Vaf6M3_C7/fXP7fGpW8H)3[9`@c`;#XGn&?N+@3BDuZFDZ4_VGQ*!hK)UT* +NW,1ARf8rYVZ*XqYl;34^&GkIbPoiee,J&"h#?72jo4KCli-APo)A:\p\t!fqYU3irVQTDs8N#prVl`o +qYp6jp\+[^rq-3[rpTjProsFDro!e2rn7;"rm1Serk\TJrji$4ri?$qrh'1XrfmDAreLK)rd=]ircA'V +rbDFFra>_2r`fA&r_r\jr_EGdr^m)[r^ZrWqaLKPnjC/Yr^#I-JO"cOU-S]D^I%T\qaCEPqaUQTr^d#[ +r_3;cqb[8kr`9#&ra,S3rb)4Frbh^Vrce?hrdt-*rf$rCPQ6sIRf8rYVZ*XqYl;34^&GkIbPoiee,J&" +h#?72jo4KCli-APo)A:\p\t!fqYU3irVQTJs+13$s+13$s+13$s+13ds8N#srVl`oqu6Ejp\sjbo)A.X +mf)JMkPjN@hu;@/f)F%qbl5]__#CqG[/m\CriZ7!rhBC\rg!JDreUQ,rdXolrcJ-XrbDFEraPk6r`fA( +r_reor_NMfr_!/]qa^WTqaLKPnjCekS3VWjJO$Y/c9h1kqaCEPqaUQTr^m)^r_k5OWEmf)_To)A=] +p\t!fqu6NmrVQTDs8N#srVl`oqu6Ejp\sjbo)A.Xmf)JMkPjN@hu;@/f)F%qbl5]__#CtF[Jm?.W;`Oj +Rf8TOO8at7K`6K#GlDgaDuOMNB)Z9=?iF:/=T27u;Z9Jk:&[ca8c)$W7f,XR7.WbG6d\5O5dEY+5bLC% +6L@,46i0:N7JfRR8,c*Z9E%Zb:]=5j;uTnu>Q/"/@fC!=CAr/NF8gF`J,Y*"M#NJ7Pl@-NUAh+jY5Yj. +]DfVFaSsE_d/MVqgA^"/j8S3?l2L,MnG`"Xp&=^bq>U9jr;QZlrm^uIrr2lqr;QTmq>U*hp%8=Xrpp'X +rpKdMroa:@rnm_/rmq(qrlkA_rkSNFrjDa.ri#gjrgNhOrf@&7re19#rcnEarbqdNrau.=ra5Y/r`K.u +r_i_kr_JO"cOMEoHRogAUEr^H]Rr^ZrZr_*5br_NMjr_reur`fA/raPk= +rbDFNrcA'`rdXp"reLT9NrY7?Pl@-NUAh+jY5Yj.]DfVFaSsE_d/MVqgA^"/j8S3?l2L,MnG`"Xp&=^b +q>U9jr;QZlrn@C's+13$s+13$s+13$s2"a7rr2lqr;QTmq#:!dp&=L\n,D_Rkl0]Cir7d5f`'D"ci2)d +`W!UN\H&r:Za9Y3rh]Uerg<\Krf6u3rdk&srcS3\rbh^Jrac"9ra#M+r`9"rr_WShr_*5_r^m)Zr^QcR +r^?3Bd6a?gJO"cO[Qr,)njECEqaLKRr^ZrZr_!/_r_EGhr_i_rr`T5+ra>_9rb)4Jrc.p[rdFcsre:?3 +rf[8Jrh07fri?%)rj_sArl+lZrm1Snrn7;,!9+%=ir8*>kl0uKn,DkVp&=^bq#:0ir;QZlrm^uIrr2lq +r;QTmq#:!dp&=L\n,D_Rkl0]Cir7d5f`'D"ci2)d`W!UN\c/r7X8\spT`1>XPQ$UAL&QZ&IK"BgErKtU +BDuH@@/aI2=oMJ$;Z9Ml:B!oc9)_E]8,c!T7K,^E6NBL$6@hD-5_21n5iP,t6LmMC7/KFP7fGpW8cD?] +9E%]c;#XAlZF5 +k5OTDmJcSRnc&4\p\ssequ6NmrVQTDs8N#srVl`oqu6Bip&XjZ!;6?]rpTjRroj@Cro3q5rn.5"rm1Sd +rl+lNrji$7ri?$prh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra>_2r`T5$r_i_lr_EGcr_!/]r^ZrWqaLKP +mmGJha?Y;AJO#)Xc9h(hr^?WPr^QlWr^m)]r_*5cr_WSlr`9#$ra#M2rac"@rbh^TrcS3grdk'&!KN0? +NrG4@R/WcXVZ*XqZi7K6^Ac+Nb5T`deGe/#h>ZF5k5OTDmJcSRnc&4\p\ssequ6NmrVQTJs+13$s+13$ +s+13$s+13ds8N#srVl`oqYp6gpAX^`nG_kTm/H2IjSn*:h#>t*e,IVkaSs*V]`,>>YQ:u4ri,mlrh'1T +rfR2=rdt,urd4Wcrc%jQral(t*e,IVkaSs*V]`,A=Yl:X$U]-nbQ2ZpFN;eG.If=]nF8g.XD#S#F@fBa6>5hV&OnG`%Yp&=^bqYpBk +r;QZorn%2Lrr2lqr;QTmqYp6gp&=R^nG_hSli-#Fj8Rs8gA]Y%d/M2e`W![P\Gii6Y5Y6rTDk;YOoC@> +M#Mr(HiA6gE;j\QB`;K??iF=0=8l5!;Z9Ml:&[fb8cD9[7f,XR7/0.@6K1=_5bLAn5`S,%6K(9+6i0:N +7K,dU8,c*Z9E%]c;#XAl<;otu>lJ+0@fC'?D#SDQGQ*!hJGtB(N;et=Rf8rYV#IOrZMqB5_#D=Pb5Tce +ec+;%hu;X7jo4TFmf)_ToD\F^p\t$gqu6NmrVlfJs8N#srVl`oqu6Hkp\sgdoCDtRrp]pSrp0RFro="8 +rn@A%rm:Yerl+lPrj_s6riZ6rrh'1YrfR2>reUQ(rd4Wgrc%jQrb2:?ra5Y0r`B)!r_i_lr_OnG`%Yp&=^bqYpBkr;QZorn@C' +s+13$s+13$s+13$s2=s:rr2lqqu6Hkq>U-fp&=O]nG_hSlMflDiVq^5f`'D"ci2&c_u@FM[JmE2X9#E( +rhBC_rg3VGrepc0rdOilrcJ-XrbDFEra>_2r`];%r_remr_NMer_!/\r^ZrWr^HfSog@4qMEl_XJO$"r +e3`gqr^?`Sr^QlWr^d#\r_3;er_WSnr`9#%ra#M2rau.ErbqdXrd"Klre:?/rfI,Grgj%_riH+'rjDa? +rl"fXrm1Snrn%5-!T)]4iVqp;lMg/LnG`"Xp&=^bq>U6iqu6Qnrn%2Lrr2lqqu6Hkq>U-fp&=O]nG_hS +lMflDiVq^5f`'D"ci2&c_u@FM[JmH1XT"snSc4uTOT(1;L&QQ#H2_pbDuOMNB)Z3;?2e%,5hh,@/ad; +CAr/NFT-RbIf>'#MZ/_:QiU6iqu6Qnrn@C's+13$s+13$s+13$s2Y0=rqlZnqu6Hkq>U*e +o`"C[n,DYPkl0WAi;VR3f)F+scMki__>_.IZi7-.W<&utrh07[rg!JCre^W,rd=]hrc8!Trb2:Ara>_1 +r`T5#r_i_kr_3;`r^luWr^QlTnjCnnMEl_XJO$"re3`gqqaCU6i +qu6Qkrn[VRrqlZnqu6Hkq>U*eo`"C[n,DYPkl0WAi;VR3f)F+scMki__>_.IZi70-WW&RiS,S]PNrFn7 +KDp8tGQ)X^D>n5JAH$!9>lIn*Z@3 +j8S9Ali-APnc&1[pAXmeqYpBkrVQTMs8N#prVl]nqYpU6iqu6Qkrn[U*s+13$s+13$s+13$s2Y0= +rqlZnqYphYu:/e,I_nbl5NZ^](hDYl:['V?*Qkrgs+Vrf[8=re:?%rd"Kb +rbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'Ci'RE/JO'3"JO"cOQpCX:h*Ud%r^H]Rr^m)]r_3;e +r_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1Sm!8@P/g]$(/iVr$> +lMg2MnG`%Yo`"Xbq>U6irVQTMs8N#prVlZmq>U0go`"F\nG_hSl2KlFiVq^5g]#\$d/M8g_u@FM])Jr5 +X8]!qT)P,VP5^C=L&QW%H2_pbDuOMNB)Z9=?2e"+=8l+s;>sAj9`@Z`8cD3V7Iih86LdDA6%M:c5_21P +5QF(N5sahYu:/e,I_nbl5NZ^](hDYl:^&VZ*1dR/W9JMuJG0JGsinFT-4XCAqiE@fB[4=oMM%;Z9Pm:]=&e +9)_E]7f,XF6f:<16)m2$5_21O5jUc86/=m#6iKOO7fH!Y9)_N`:]=5j;Z9bs>5hh,@fC!=CAr/NFT-Od +J:IWMreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1SmrnIG/ro*k>rp'LMrp]pYrq-3brqZQirr)`nh>`'+ +JcC<$JcC<$JcC<$a8c/KAc?-;>lIn*lJ12Ac?BBDZ4\UGQ**kK`6i-OoC[GS,T5_WrB4$\,O)?_Z%^W +cMl5lg&]p]rn[S3roX4Drp9XRrq$-]rqHEfrqcWmqu5FOrr2fnrqcWhrqHEarpp'Xrp9XKroX4sVq=T2S)@K'j;B`;oKErL:^J,Y-# +M>iY:QN!BQV#ICnYPu$1^&GnJb5T]cdf.u"h>Z@3k5OTDm/HMRoD\C]p\t!fqYpHjrn[VRrqlZnqYp9h +p\sgancA7L!:^!SrosFEro!e3rn@A"rm(McrkeZJrjVm1ri,mmrgWnQrfR2:re19#rce?^rbh^Kral(; +r`oG*r`9"qr_WShr_!/]r^d#XqaL'Ci'RE/W^),#JO"cOlp1P9h*Ud%r^H]Rr^d#[r_!/br_NMjr`9## +r`oG2ral(Brbh^Urc\BmIfOutK`6i-OoC[GS,T5_WrB4$\,O)?_Z%^WcMl8kgA]q-i;VmU6irVQTMs+13$s+13$s+13$s+13js8N#srVl`oqYp9hp\sganc&"Vli-,IjSn*:h#?"+d/M8g +ao9*T]Df8$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcS3hrdt-( +rf@&CrgNh\ri#h!rjMg=rkSNTrltGh!8.D+g&Be+i;Vg:kl0oIn,DnWo`"Uaq>U6ir;QZorn[VRrr2lq +r;QQlq#:$eo`"C[n,DYPkl0ZBi;VO2g&B@tbl5``_#CtF[f3H/W;`OjRf8QNO8an5K)U5uFoHC[D>n2I +A,]j7>5hV&dKRrr)iorqcWhrqHEarp^$Xmf;hUli-,IjSn*:h#?"+d/M8gao9*T +]Df8dBNrquclrqQKerq$-ZrpTjNroa:@rndY.rmq(qrlb;\rkSNErj2U) +rh]Udrg3VIrf6u1rdXoorc8!UrbMLDraGe5r`K/"r_remr_EGdr^m)[r^QlUr^?NKka>rdXp" +rf6u@rg3VVrh]Uprj2U7rkSNQrlkAgrmq)%rndY7roX4ErpTjVrq$-`rqZQiqu$Hlh>`'+JcC<$JcC<$ +JcC<$a8c/;rqucmrqZQgrqHE`rp]pSrosFEro3q6rn7;#rm1Sdrl+lNrj_s4ri,ml!1j4_T)OuROT(4< +K)U5uHN%p`DZ4DMA,]m8?2dq)nPSHN&BmK)U`.OT(LDT)PMaWW'1%\,O,@`W"$ZcN)Gq +eC=KNrndY6roX4ErpB^Srq$-`rqQKgrql]mrr([Qrr)iorql]jrqQKerq$-YrpB^LroX4>rndY-rm^qn +rlY5ZrkABAriuI%rhKIarfmDDrf$i.rdOimrc.pTrbDFBra>_2r`B)!r_i_lr_rosFLrp]pYrqHEerqZQjrqucoh>dKQrqucmrqZQg +rqHE`rpTsUm/ZPQl2KiEir7g6g&BM#ci2)d`W!UN\Gic4WW&[lT)OuROT(4nMUH?oR;rdOiurf$iric="rh9C`!M,e\PQ$XBMZ//*I/\?hE;j\QC&VT@?iF=0sAj9`@Z`8H)-Y7fGgK +6f:<16%M;o5_21O5`\206/=m)6i0:N7fGpW8H)6\9`@ie;>sPodKQrqucmrqZQg +rq??^rpTjRroj@Cro*k4rn.5"rm(Mbrl"fLrjMg0ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG' +r`&kor_NMer_!/\r^ZrWr^?EHkPrhBCjric=0rk8Kjo46Z(+eGdbmao96X^&GJ>YPtL"UAg__PQ$XB +MZ//*I/\?hE;j\QC&VT@?iF=0sAj9`@Z`8H)-Y7fGgK6f:<16(pPp5_21O5iY-/6/=m)6i0:N +7fGpW8H)6\9`@ie;>sPorl"fXrm(Mm +rn7;,ro*k`'+JcC<$JcC<$JcC<$a8c/;rqucmrqQKdrq69\rpTjQ +roa:Aro!e1rmq(srlkA^rk\TFrjDa/rh]Ud!1EqWRf8EJMuJJ1JGsloFT-7YC]7uG@/aI2>5hP$;uTSl +:&[ca8cD6Z7fGjO6et([5jpsh5_21W5i"d%6iKOR7fGpW8cDB^:&[rf;Z9\q>5hh,@/agd[t[/RZ9_>_IRbQ-&ldaJ-HrnIG1roF(Arp9XPrpg!\rqHEerql]mrr([Qrr)io +rql]irq??arpg!Vrp9XIroF(:rnIG'rmLeirl>#Srjr*:ric$Lr^QlWr^m)^r__dKQrqucmrqQKdrq69\rpKmSli?DOkPjQAi;VL1f)F+sbl5Z^_>_%F[JmB/V>d+dRf8EJMuJJ1 +JGsloFT-7YC]7uG@/aI2>5hP$;uTSl:&[ca8cD6Z7fGjO6et(u5_21O5_22V5i"d%6iKOR7fGpW8cDB^ +:&[rf;Z9\q>5hh,@/aglIn*lJ.1Ac?ECDZ4_VGlE-jL&Qu/ +OT(XHT)PMaY5Yd,\c0DD`r=-]d/hYBrmh#%rnm_8roX4GrpKdUrq69arqHEhrqucoh>dKQrqucmrqHEc +rq69\rpKdOroX4?rnm_/rmq(rrlb;[rkSNDrj2U,rhKIarg<\Hrepc0rdFcjrcA'VrbDFDra>_1r`T5# +r_i_kr_3;`r^m)Zr^QlUpd=11r'C9IJO"oSJO"cOo0E(:k!Ji1r^HfUr^ZrZr_*5ar_NMkr`/r#r`oG1 +ral(Crbh^VrcnEjre:?/rfI,Hrgs+ariZ7,rji$Drl4r\rmC_qrn@A/ro="?rp0ROrpg!\rq??crql]m +rr([Qrr)iorql]hrq??arpg!U!UK%Oli-&Gj8Rs8gA]\&dJh>g`W![P\c/r7Y5Y3qT)P,VOT(1;L&QN" +GlDd`DZ4DMAc?*:>lIn*lJ.1Ac?ECD?4g"!-A-ardFd"reg]:rg<\VrhKIqrj2U7rkSNQrlb;grmh#%rnm_8 +roX4GrpKdUrq69arqHEhrqucoh>`'+JcC<$JcC<$JcC<$b5_J?rr)iorqcWgrq??_rp]pSrp0RFro3q7 +rn7;$rm:Yerl"fNrjVm4riQ0orga%U!LK/PO8b"8KDp8tGQ)X^D>n5JAH#s8>Q.b(<;obo:]=&e9)_E] +7fGjU7/0.36@hDa5_21O5_20#5itE.6iKLQ7K,dU8cDB^9`@ie;Z9Yp=T2P(?iFU8C&VuKErL:^I/\ct +M>iS8Qi$Kr^HfUr^m)^r_3;er_i_pr`K/( +ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlY5ermh#$rnm_7roO.FrpB^Srq$-^rqHEg +rql]nqu5aXrr2oqrquclrqHEcrq$-Yrp9aPlN$8Mjo49=hu;=.ec*qpb5T?Y^](_AZMq!*UAg__Qi<'F +M>i/,I/\?hErKqTB`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6fp^u5_21O5_22M5itE.6iKLQ7K,dU +8cDB^9`@ie;Z9Yp=T2P(?iFU8C&VrMEcM/#rce?hre(3,rf@&Frgj%_riQ1*rjVmArl"fYrm:Yprn7;. +ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8X]1JcC<$JcC<$JcC<$b5_J?rr)iorqcWgrq??`rp]pSrp'LE +ro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgNnQ!L8rLNW+_4Jc:#qG5cL\C]7rF@fB^5>Q.b(;Z9Ml:]=#d +9)_B\7fGjU7/K@36@hDa5_21O5_20#5i>!.6iKLQ7K,dU8H)3[9E%`d;>sJm=T2M'?N+F5BDu]GEW1.\ +HiATqL]3;4Q2[9PT`1tjYPu!0^])1NaT0Wfcd2U>rn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nk5YG[ +rr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLF +raPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$NZ/JO"cOJO"cOl9O8or^6ZQr^HfUr^d#[r_*5dr_`Ym +r`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_ +rqHEgrql]nqu5aXrr2oqrquclrqHEcrq-3Zrp9aOl2^,Kjo49=hu;7,eGdenao96X^](\@Yl:[%T`1G[ +Q2ZdBL]2l(HiA3fEW0bQB)Z9=?N+1.=T24t;#X8i9E%Q_8H)*X7K,^P6fULr5_21O5_22M5i>!.6iKLQ +7K,dU8H)3[9E%`d;>sJm=T2M'?N+F5BDuZIEH(turc\9frdk'(rf-oBrgWn[ri5t$rjMg@rl"fXrm1Sm +rn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nj8X]1JcC<$JcC<$JcC<$b5_J?rr)iorqcWgrq69]rp]pR +rosFCro*k5rn%.urm1Sarkn`Lrj;[-ri#ghrgEhO!L/iJN;eS2JGsloFoH@ZCAqiE@fB[4=oMM%;Z9Ml +:B!oc8cD6Z7K,^M6fULa5it=_5_21O5QF(-6Mj.L7/fXS8,c*Z9E%]c;#XAl=8lD&?2e=4B)ZQEE;k"Z +HN&HoLAm/2Pl@-NT`1nhYPtp.^Ac"K`rOEdcd2U>rn%/+ro*k;rosFKrp]pXrq69brqcWkrr)`nk5YG[ +rr)iorqcWgrq69]rp]pRrosFCro*k5rn%.urm1Sarkn`Lrj;[-ri#ghrgNhNrf$i2rdauorcS3ZrbDFE +raPk4r`T5%r_i_lr_EGcr^m)Zr^HfSpd=(.r'5fuJO"cOJO&Kci'R<.r^?`Sr^ZrZr_*5cr_WSlr`B)& +ra#M4rau.Erc%jZrd+QoreCE2rfmDNrh07hric=.rkABKrl>#armUkurndY5roF(Crp9XRrpp']rqHEg +rql]nqu5aXrr2oqrquclrqHEbrpp'Xrp0[MklBuIjSn-;hYu.+e,I\ma8X!U^AbM=Y5YC!T`1DZPl?X@ +LAl`&HN&'dE;jVOB)Z9=?2e"+=8l+s;#X5h9E%N^8,bsV7/0.06BXTb5_21O5h&'W6Mj.L7/fXS8,c*Z +9E%]c;#XAl=8lD&?2e=4B)ZNGE,YerrcS3drdb!&rf$i@rgNhZri#h"rj;[=rkeZTrm1Smrn%/+ro*k; +rosFKrp]pXrq69brqcWkrr)`nj8X]1JcC<$JcC<$JcC<$b5_J?rqucmrqcWgrq69]rpTjProsFBro!e3 +rmq(srm(M_rk\TIrj2U,ri#ggrglJ12Ac?ECDuOkXH2`Lrh'1griZ7,rk8Z")df.Pk`rL&QT$H2_ma +DuOJMB)Z6<>lIn*lJ12Ac?BEDf5VorcJ-brdXp$repc>rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjW +rq69brqcWkrquZmj8X]1JcC<$JcC<$JcC<$b5_J?rqucmrqcWfrq-3[rpTjProj@@rnm_1rmh"rrm(M^ +rk\THrj)O)rhf[crg*VI!KiNDM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6gR-j +5i"\V5_21O5kdP.6Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$9ADuOhWGQ**kK`6i-OoC^HSc5Mc +Xo>X*]`,_G`;n0acHcF:rmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmk5YG[rqucmrqcWfrq-3[rpTjP +roj@@rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_ +r^d#Xr^HfSpd=C7o0@jlJO"cOJO&0ZksG87r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdWrce?k +re19-rfR2Hrgj%criQ1*rk/6Grl+l^rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5aXrr2oprql]k +rq??`rpg!Vrp'UKkQ'iGir7j7h#>k'df.Pk`W!^Q]`,59XT#*rSc4uTOoC4:K`6K#GQ)[_DuOGLAH$!9 +>lIk)lJ.1 +AH$6CDf5VorcA'_rdXp#re^W:rg3VTrhf[srj)O9rkSNPrm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWk +rquZmj8X]1JcC<$JcC<$JcC<$b5_J?rquclrqZQerq$-YrpKdOroj@@rndY/rmh"qrltG\rkJHEriuI( +rh]Uarg!PG!K`EBM#N&+J,XTiErKtUBDuH@@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6h3S@6%M;W5_21O +5_22p5lO(96Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$6@DZ4YTFoHmiKDp]+OT(RFSGoAaX8]C' +]DfVF_uS$_c-?78rmh#&rnm_7roj@HrpKdTrq-3`rqZQjrquZmk5YG[rquclrqZQerq$-YrpKdOroj@@ +rndY/rmh"qrltG\rkJHEriuI(rh]Uarg*PFreUQ+rdXoirc8!Urb)4@ra>_1r`K/"r_`Yjr_3;_r^d#X +r^HfSpd=U=qa'g=JO"cOJO"cOiB[B.lpCS:r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"@rbh^TrcS3i +re(3+rfI,Frg`tari?%'rk&0Frl"f\rmC_qrnIG0ro3q@rp'LNrp]pZrq??erql]mqu5aXrr2oprqcWi +rq??_rp]pTrp'UKkQ'iGir7g6g]#b&dJhDi`;[ON]Df)7XT#'qSGniROT((8KDpB"FoHF\DZ4;JAH$!9 +>lIk)lJ.1AH$3BDJfGlrc.p[rdXp"reUQ8rg*PRrh]UpriuI7rkSNOrltGirmh#&rnm_7roj@HrpKdTrq-3` +rqZQjrquZmj8X]1JcC<$JcC<$JcC<$b5_J?rquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHC +rilC%rhTO`rfmJE!KW<@L]2r*If=KhEW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N09%5h\JS +5_21O5kI>@60pr;6i0:N7fGpW8cDE_:&[ug<;p#!>5hn.A,^*>D>nPSFoHjhK)UQ)O8bFDSGo>`WrB7% +\c0>B_Z7m]bfp(5rm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZmk5YG[rquclrqZQerq$-YrpKdOroj@@ +rndY/rm^qorlkAZrkJHCrilC%rhTO`rg!JDreLK*rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#X +r^?WNlpC\;n3DOiJO"cOJO&'Wr^#m;r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-) +rf@&Drg`t`ri5t%rji$Brkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu5aXrr2oprqcWirq??_ +rp]pTrp'UKkQ'iGir7g6g]#_%d/M8g_u@FM\c/i4WrAgnSGnfQO8aq6KDp?!FoHC[D>n/H@fBa6>5hV& +<;o_n:B!rd8cD9[7fGgQ6gR/=6&%XU5_21O5fc4i60pr;6i0:N7fGpW8cDE_:&[ug<;p#!>5hn.A,^'@ +D/B8irc.p[rdOiureLK6rg!JQrhTOnrilC4rkABLrlkAgrm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZm +j8X]1JcC<$JcC<$JcC<$c2[eBrr)iorqcWirq69^rp]pTrp'LGro*k5rn@A#rm1SerkeZJrji$4ri5sm +rgNhO!07/AO8an5Jc:&rFT-7YD>n,G@fBa6=oMM%<;o_n:B!rd8cD9[7fGgQ6gR/=6%M;T5_21O5_22m +5lO(96N0@L7/f[T8,c*Z9`@fd;#XGnrp'LNrp]pYrq69drql]mrr)iql2Ub^rr)iorqcWirq69^rp]pTrp'LGro*k5 +rn@A#rm1SerkeZJrji$4ri5smrgNhOrf@&5rdk&rrcJ-Yrb_XGraPk6r`T5%r`&knr_EGdr^m)[r^QlT +qa9^:r^$$=JO"cOJO"cOhE_'+lpC\=qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y6ral(Grc.pZrd=]qreCE5 +rfmDNrhKImrilC4rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQjrqucorr20^rr2oqrquclrqZQd +rq$-YrpKdN!U&VGkPjH>hYu7.e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_RAc?0rp'LNrp]pYrq69drql]m +rr)iqj8X]1JcC<$JcC<$JcC<$c2[eBrr)inrqcWirq69^rp]pTrp'LGro*k5rn@A#rm1SerkeZJrj_s3 +ri,mkrgNhN!07/AO8ak4JGsopF8g.XD#S#F@fB^5=oMJ$;Z9Ml:&[fb8cD9[7ef@;6N09%5h\JS5_21O +5kI>@60pr56iKRS8,c*Z9E%Zb;#XAlrp'LNrp]pYrq69drqcWkrr)iql2Ub^rr)inrqcWirq69^rp]pTrp'LGro*k5 +rn@A#rm1SerkeZJrj_s3ri,mkrgNhNrf@&4rdauprcA'XrbVRFraPk5r`T5$r_i_lr_$Mr^ZrZr_*5br_WSlr`9#$ra5Y6ral(FrbqdWrd4Wpre:?4rfmDN +rhBCkrilC3rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQirql]nrr20^rr2oqrql]krqZQdrq$-Y +rpKdN!U&VGkPjH>hYu7.e,I\mbPoBX^&GP@Yl:X$UAgV\Pl?aCL&QW%HiA*cE;j\QAc?0rp'LNrp]pYrq69drqcWkrr)iqj8X]1 +JcC<$JcC<$JcC<$c2[eBrr)inrqcWirq69^rp]pSrosFFro!e3rn@A"rm(MdrkeZJrjVm1ri#gjrgNhN +!0.)?NrF_2J,XfoF8g+WC]7lD@K'U4=T2>";Z9Ml:&[fb8H)-Y7ef@;6N09%5h\JS5_21O5kI>@60pr5 +6iKRS8,c'Y9E%Zb;#XAl$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1 +rk8Z.-df.PkbPoBX^&GM?YPtL"UAgV\Pl?^BK`6K#HiA*cDuOPOAH$$:?N+(+";>sDk:&[fb8H)*X7JK7:6N09%5h\JS5_21O5kI>@60pr56iKOR8,c'Y +9E%Zb;#X>k$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdVrd4Wpre191rf[8Jrh9=hriZ7/rk/6HrlY5c +rmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]nrr20^rr2oqrql]krqQKcrq$-Yrp9XK!TrMEk5O<k";>sDk:&[fb8,c!W7JK7=6Mj'"5h\JS5_21O5k.,=617/86iKOR7fGpW9E%Zb;#X>k +_2r`K/"r_`Ykr_pd>$L +r^QlWr_*5br_WSkr`/r"ra#M3rac"DrbqdVrd4Wore(30rf[8Jrh07griZ7/rk/6HrlP/armC_urnRM2 +roO.Crp9XRrq$-^rqQKgrql]nrr20^rr2oqrql]krqQKcrq$-Yrp9XK!TiDCjo43;h#?"+dJhDiao9-U +]`,A=Y5Y?uT`1>XP5^I?KDpB"HiA'bDZ4GNAH$!9?2dt*k";>sAj9`@Z`8,c!W7JK7=6@hDO5_21O5_22g5jq&76iKOR7fGpW9)_N`:]=5j_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmm?;)JO"cOJO"cOfKemlpd>$Lr^QlWr_!/`r_NMjr`/r" +ra#M3rac"Crbh^Urd+Qmre(30rf[8Irh07griZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrq$-]rqQKg +rql]nrr20^rr2oqrql]krqQKbrpp'Xrp9XK!TiDCjo43;h#?"+dJhDiao9*T]Df8 +KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'd!KsPo=8lM)@/a[8CAr,MErLCaIf=ruN;et=Qi_8rbDFMrc8!ardOiu +rf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iql2Ub^rr)inrqcWh +rq-3\rpTjQroaCDj8e9?i;VO2g&BCuc2Pia_#CtF[Jm?.VuE@gQi<-HN;eG.If=ZmErKtUCAq`B@/aI2 +=8l5!;>sAj9`@Z`8,c!W7JK7=6@hB%5_21O5_22;5jq&76iKOR7fGpW9)_N`:]=5j<;otu?2e72@f^=Z +!,DLNrc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iq +j8X]1JcC<$JcC<$JcC<$c2[eBrr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoag +rg3VH!/pr;N;eG.IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hDO5_21O5_22g5jq&7 +6iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6BD>nPSH2`9lK)U`.OoC^HT`1kgY5Yj.]DfSGaT9N*rltGi +rn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGa +rkSNFrjDa.rhoagrg3VHrf$i.rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm?;)JO"cO +JO"cOfKemlpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfR2Hrh07griZ7.rk&0F +rlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr20^rr2oqrql]krqQKbrpp'Wrp9XJ!T`;AjSn*: +h#?"+dJhDiao9*T]Df5;Y5Y?uT`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/aX:C2*``rb_XSrd"Klrdt-.rfR2H +rh07griZ7.rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sXJcC<$JcC<$JcC<$JcF!p +rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfI2>!KsPo +=8lM)@/a[8CAr)LEW17_If=ruN;et=Qi_8rbDFLrc.p_rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@J +rpTjWrq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQroaCDj8e9?i;VO2g&B@tbl5``_#CtF[Jm<- +VZ*7fQi<-HN;eG.IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hB%5_21O5_22;5jq&7 +6iKOR7fGpW9)_N`:]=5j<;otu?2e72@f^=Z!,DLMrc.p_rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGh +rn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8X]1JcC<$JcC<$JcC<$c2[eBrr)inrqcWhrq-3\rpTjQ +roj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VH!/pr;N;eG.IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj +9`@Z`8,c!W7JK7=6@hDO5_21O5_22g5jq&76iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6BD>nPSH2`9l +K)U`.OoC^HT`1kgXo>a-]DfSGaT9N*rltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iql2Ub^rr)in +rqcWhrq-3\rpTjQroj@Bro!e2rn7:trlkA`rkSNFrjDa-rhf[frg3VHrf$i.rdFckrc.pTrbDFBra>_2 +r`B)!r_`Yjr_3;`r^ZrWr^HTLmm?;)JO"cOJO"cOfKemlpd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqB +rb_XSrd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\rqQKgrql]nrr20^ +rr2oqrql]krqQKbrpp'Wrp9XJ!T`;AjSn*:h#?"+d/M8gao9*T]Df5;Xo>3sT`1;WOoC==K)U2tH2_g_ +DZ4DMA,]m8?2dq)sPo +=8lM)@/aX:C2*``rb_XSrd"Klrdt-.rfR2Hrh07griQ1-rk&0FrlP/arm:YtrnRM2roF(Brp9XQrpp'\ +rqQKgrql]nrr1sXJcC<$JcC<$JcC<$JcF!prr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/T +rk&0;riQ0srh07WrfI2>!KsPo=8lM)@/a[8CAr,MErLCaIf=ruN;et=Qi_8rbDFMrc8!ardOiurf$i=rg3VW +rhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQ +roaCDj8e9?i;VO2g&B@tbl5``_#CtF[Jm<-VZ*7fQi<-HN;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj +9`@Z`8,c!W7JK7=6@hB%5_21O5_22;5jq&76iKOR7fGpW9)_N`:]=5j<;otu?2e72@f^=Z!,DLNrc8!a +rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8X]1JcC<$ +JcC<$JcC<$c2[eBrr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa.rhoagrg3VH!/pr; +N;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6@hDO5_21O5_22g5jq&76iKOR7fGpW +9)_N`:]=5j<;otu?2e72A,^6BDZ4\UHN&BmK)U`.OoC^HT`1kgY5Yj.]DfSGaT9N*rltGirn7;+ro!e: +roj@JrpTjWrq-3brqZQjrr)iql2Ub^rr)inrqcWhrq-3\rpTjQroj@Bro!e2rn7:urltGarkSNFrjDa. +rhoagrg3VHrf$i.rdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm?;)JO"cOJO"cOfKeml +pd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rk&0FrlP/armC_u +rnRM2roF(Brp9XQrpp'\rqQKgrql]nrr20^rr2oqrql]krqQKbrpp'Wrp9XJ!T`;AjSn*:h#?"+dJhDi +ao9*T]Df5;Y5Y?uT`1;WOoC==K)U5uHN%saDZ4DMA,]m8?2dq)sPo=8lM)@/aX:C2*``rbh^Urd+Qmrdt-.rfR2Hrh07griZ7. +rk&0FrlP/armC_urnRM2roF(Brp9XQrpp'\rqQKgrql]nrr1sXJcC<$JcC<$JcC<$JcF!prr2oqrql]k +rqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0sSp=T2V*@K'g: +CAr,MErLCaIf>!!NW,+?Qire(3"rd+Qa +rbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:l9KncJO"cOJO%jQmm?e:r^HfUr^Zr[r_3;er_`Yp +r`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ro!e;roj@Jrp]pYrq-3b +rqZQjrr)iql2Ub^rr)inrqcWhrq-3\rp]pRrojIFjT+EAi;VO2g&BCuc2Pia_#CtF[f3H/VuE@gQi<-H +NW+S0J,XcnErKtUCAqcC@/aI2=T2>";>sAj9`@Z`8,c!W7JK7=6@hB%5_21O5_22;5jq&76iKOR7fGpW +9)_N`:]=5j";>sAj9`@Z`8H)*X +7JK7=6Mj'"5h\JS5_21O5k.,=617/86iKOR8,c'Y9)_N`:]=5jpd>$Lr^ZrYr_!/`r_NMjr`/r"ra,S4rac"C +rbh^Urd+Qnre191rf[8Irh9=hriZ7/rk/6GrlY5crmLf!rn[S3roX4Drp9XRrq$-]rqQKgrql]nrr20^ +rr2oqrql]krqQKbrpp'Xrp9XK!TrMEk5O<K`6K#HN%sa +DZ4DMAH$$:?N+(+";>sDk:&[fb8H)*X7JK7:6N09% +5h\JS5_21O5kI>@60pr56iKOR8,c'Y9E%Zb;#X>k$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdVrd4Wp +re191rf[8Jrh9=hriZ7/rk/6HrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]nrr20^rr2oqrql]k +rqQKcrq$-Yrp9XK!TrMEk5O<k";Z9Ml:&[fb8H)-Y7ef@;6N09%5h\JS5_21O +5kI>@60pr56iKRS8,c'Y9E%Zb;#XAl$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>M +rhBCkric=1rk8Z.-df.PkbPoBX^&GM?YPtL"UAgV\Pl?^BK`6K#HiA*cDuOPOAH$$:?N+(+M +rhKIlric=1rk8Z.-df.PkbPoBX^&GM?YPtO#U]-_]Pl?^BK`6N$I/\6eE;j\QAH$$:?N+(+n,GA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6%M;T5_21O5_22m +5lO(96N0@L7/f[T8,c*Z9`@fd;#XGnrp'LNrp]pYrq69drql]mrr)iql2Ub^rr)iorqcWirq69^rp]pTrp'LGro*k5 +rn@A#rm1SerkeZJrji$4ri5smrgNhOrf@&5rdk&rrcJ-Yrb_XGraYq7r`];&r`&knr_EGdr^m)[r^QlT +qa9^:r^$$=JO"cOJO"cOhE_'+lpC\=qaCEQr^ZrZr_3;dr_WSnr`9#%ra5Y6ral(Grc.pZrd=]qreCE5 +rfmDNrhKImrilC4rkABKrlb;ermUl#rn[S4roa:GrpKdTrq$-^rqZQjrqucorr20^rr2oqrquclrqZQd +rq$-YrpKdN!U&VGkPjH>hYu7.e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_RAc?3=?iF7. +=8l1u;#X5h9`@W_8H)*X7/K@<6N09*5_21O5_22A5lO(96N0@L7/f[T8,c*Z9`@fd;#XGnrp'LNrp]pYrq69drql]m +rr)iqj8X]1JcC<$JcC<$JcC<$b5_J?rquclrqZQerq$-YrpKdOroj@@rndY/rm^qorlkAZrkJHCrilC% +rhTO`rfmJE!KW<@L]2r*If=KhEW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N09%5h\JS5_21O +5kI>@60pr;6i0:N7fGpW8cDE_:&[ug<;p#!>5hn.A,^*>D>nPSFoHjhK)UQ)O8bFDSGo>`WrB7%\c0>B +_Z7m]bfp(5rm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZmk5YG[rquclrqZQerq$-YrpKdOroj@@rndY/ +rm^qorlkAZrkJHCrilC%rhTO`rg!JDreLK*rdOihrc.pSrau.=ra5Y.r`B(ur_WShr_3;_r^d#Xr^?WN +lpC\;n3DOiJO"cOJO&'Wr^#m;r^6QNr^QlWr^m)_r_rb_XSrcS3hrdt-)rf@&D +rg`t`ri5t%rji$Brkn`Zrm:YornIG0ro3q@rp'LNrp]pZrq??erql]mqu5aXrr2oprqcWirq??_rp]pT +rp'UKkQ'iGir7g6g]#_%d/M8g_u@FM\c/i4WrAgnSGnfQO8aq6KDp?!FoHC[D>n/H@fBa6>5hV&<;o_n +:B!rd8cD9[7fGgQ6gR/=6&%XU5_21O5fc4i60pr;6i0:N7fGpW8cDE_:&[ug<;p#!>5hn.A,^'@D/B8i +rc.p[rdOiureLK6rg!JQrhTOnrilC4rkABLrlkAgrm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZmj8X]1 +JcC<$JcC<$JcC<$b5_J?rqucmrqcWfrq-3[rpTjProj@@rnm_1rm^qorltG\rkJHEriuI(rh]Ubrg!PG +!K`EBM>i/,If=NiErKtUB)Z<>?iF:/=8l5!;#X5h9`@W_8H)*X7/K@<6Mj'"5i"\V5_21O5kdPC60U`8 +6i0:N7fGpW8cDE_:B")hQ/"/A,^*>DZ4\UG5csiKDp`,OT(UGSc5JbX8]C']DfVF_uS$_c-?78 +rm^r&rnm_7roj@IrpTjVrq-3`rqcWkrquZmk5YG[rqucmrqcWfrq-3[rpTjProj@@rnm_1rm^qorltG\ +rkJHEriuI(rh]Ubrg*PFre^W,rdOiirc8!Urau.>ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WNlpCS8o0@jl +JO"cOJO&0Zr^#d8r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rbh^Urc\9ire(3,rfI,Grgj%bri?%' +rk&0Frl"f\rmC_prnRM1ro3q@rp0RPrpg![rq??frql]mqu5aXrr2oprql]krq??`rpg!Vrp'UKkQ'iG +ir7j7h#>h&d/M;h`;[ON]Df)7XT#'qSc4rSOT(+9KDp?!G5cO]DZ48IA,]j7>Q._'Q/"/A,^'@DJfGlrc8!]rdOj! +re^W9rg3VTrh]UpriuI7rkSNOrltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWkrquZmj8X]1JcC<$JcC<$ +JcC<$b5_J?rqucmrqcWfrq-3[rpTjProj@@rnm_1rmh"rrm(M^rk\THrj)O)rhf[crg*VI!KiNDM>i2- +J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6gR-j5i"\V5_21O5kdP.6Mj.L7/fXS7fGpW +8cDE_:B",ilJ.1AH$9ADuOhWGQ**kK`6i-OoC^HSc5McXo>X*]`,_G`;n0acHcF:rmh#'rnm_7 +roj@IrpTjVrq-3`rqcWkrquZmk5YG[rqucmrqcWfrq-3[rpTjProj@@rnm_1rmh"rrm(M^rk\THrj)O) +rhf[crg3VHre^W-rdXokrcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=C7o0@jlJO"cOJO&0Z +ksG87r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdWrce?kre19-rfR2Hrgj%criQ1*rk/6Grl+l^ +rmC_qrnRM1ro3q@rp0RPrpg![rq??frql]mqu5aXrr2oprql]krq??`rpg!Vrp'UKkQ'iGir7j7h#>k' +df.Pk`W!^Q]`,59XT#*rSc4uTOoC4:K`6K#GQ)[_DuOGLAH$!9>lIk)lJ.1AH$6CDf5VorcA'_rdXp#re^W:rg3VT +rhf[srj)O9rkSNPrm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmj8X]1JcC<$JcC<$JcC<$b5_J? +rqucmrqcWgrq69]rpTjProsFBro!e3rmq(srm(M_rk\TIrj2U,ri#ggrglJ12Ac?ECDuOkXH2`Lrh'1griZ7,rk8L&QT$H2_maDuOJMB)Z6<>lIn*lJ12Ac?BEDf5VorcJ-brdXp$repc>rgEbXri#h!rj2U; +rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWkrquZmj8X]1JcC<$JcC<$JcC<$b5_J?rqucmrqcWg +rq??_rpTjQrp'LDro*k5rmq(srm1Sarkn`Lrj;[.ri,mirgEhO!L/iJN;eV3Jc9upFoH@ZC]7rF@K'R3 +=oMM%;Z9Ml:B!lb8cD9[7fGjU7/K@36@hDa5_21O5_20#5i>!.6iKLQ7K,dU8H)3[9)_Tb;#XAl=8lD& +?2e:3B)ZTFE;k"ZHN&KpLAm/2Pl@-NT`1qiYPtp.^Ac"K`rOEdcd2U>rmq)*ro*k;rp'LLrpTjXrq69b +rqcWkrquZmk5YG[rqucmrqcWgrq??_rpTjQrp'LDro*k5rmq(srm1Sarkn`Lrj;[.ri,mirgNhNrf$i3 +rdk&prcS3ZrbMLFraGe3r`T5%r_i_lr_EGbr^m)[r^QlUr^?WNj$NZ/JO"cOJO"cOl9O8or^6ZQr^HfU +r^d#[r_!/br_WSlr`B)&ra#M3rau.Frc%jZrd+QpreCE2rfmDNrh07iric=.rkABKrl>#armUktrndY5 +roF(Drp9XQrq$-^rqHEgrql]mqu5aXrr2oprql]krqHEcrq$-Xrp0[Nl2^,KjSn-;hYu+*df.Sla8X!U +^AbM=YPtO#T`1DZPl?X@L]2l(HN&'dE;jYPB)Z6!.6iKLQ7K,dU8H)3[9)_Tb;#XAl=8lD&?2e:3B)ZQHE,YerrcS3drdk''rf$i@rgNhZri,n# +rj;[=rkeZTrm1Smrmq)*ro*k;rp'LLrpTjXrq69brqcWkrquZmj8X]1JcC<$JcC<$JcC<$b5_J?rr)io +rqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgNnQ!L8rLNW+_4Jc:#qG5cL\C]7rF +@fB^5>Q.b(;Z9Ml:]=#d9)_B\7fGjU7/K@36@hDa5_21O5_20#5i>!.6iKLQ7K,dU8H)3[9E%`d;>sJm +=T2M'?N+F5BDu]GEW1.\HiATqL]3;4Q2[9PT`1tjYPu!0^])1NaT0Wfcd2U>rn%/,ro3q=rp'LMrp]pZ +rq69brqcWkrr)`nk5YG[rr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnP +rf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$NZ/JO"cOJO"cOl9O8or^6ZQ +r^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHNrlP/crmUku +rnm_7roO.ErpB^Srq-3_rqHEgrql]nqu5aXrr2oqrquclrqHEcrq-3Zrp9aOl2^,Kjo49=hu;7,eGden +ao96X^](\@Yl:[%T`1G[Q2ZdBL]2l(HiA3fEW0bQB)Z9=?N+1.=T24t;#X8i9E%Q_8H)*X7K,^P6fULr +5_21O5_22M5i>!.6iKLQ7K,dU8H)3[9E%`d;>sJm=T2M'?N+F5BDuZIEH(turc\9frdk'(rf-oBrgWn[ +ri5t$rjMg@rl"fXrm1Smrn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nj8X]1JcC<$JcC<$JcC<$b5_J? +rr)iorqcWgrq??_rp]pSrp0RFro3q7rn7;$rm:Yerl"fNrjVm4riQ0orga%U!LK/PO8b"8KDp8tGQ)X^ +D>n5JAH#s8>Q.b(<;obo:]=&e9)_E]7fGjU7/0.36@hDa5_21O5_20#5itE.6iKLQ7K,dU8cDB^9`@ie +;Z9Yp=T2P(?iFU8C&VuKErL:^I/\ctM>iS8Qi$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHNrlY5e +rmh#$rnm_7roO.FrpB^Srq$-^rqHEgrql]nqu5aXrr2oqrquclrqHEcrq$-Yrp9aPlN$8Mjo49=hu;=. +ec*qpb5T?Y^](_AZMq!*UAg__Qi<'FM>i/,I/\?hErKqTB`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M +6fp^u5_21O5_22M5itE.6iKLQ7K,dU8cDB^9`@ie;Z9Yp=T2P(?iFU8C&VrMEcM/#rce?hre(3,rf@&F +rgj%_riQ1*rjVmArl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8X]1JcC<$JcC<$JcC<$ +b5_J?rr)iorqcWhrq??`rp]pTrp9XHro="8rnIG'rmC_grl+lPrji$7riZ6qrgj+W!LT8ROT(.:K`6H" +H2_maDZ4DMAc?*:>lIn*<;oep:]=)f9)_E]7fGjU7/0.36MNit5jpsh5_21W5kmY-6MNqI7/fXS7fH!Y +9E%Zb:]=8k<;p&">lJ.1Ac?ECDZ4_VGlE0kK`6l.OT(XHT)PMaY5Yd,\c0DD`r=-]d/hYBrmq)'rnm_8 +roX4HrpKdTrq-3`rqQKhrql]nqu5aXrr2oqrquclrqQKdrq-3ZrpKdProX4?rnm_0rmq(rrlb;[rkSND +rj2U,rhKIarg<\Hreg].rdOilrcA'VrbDFDra>_1r`T5"r_i_kr_lIn*<;oep:]=)f +9)_E]7fGjU7/0.36MNj95_21O5_22V5kmY-6MNqI7/fXS7fH!Y9E%Zb:]=8k<;p&">lJ.1Ac?ECD?4g" +!-A-ardOj"reg]:rg<\VrhKIqrj2U7rkSNQrlb;grmq)'rnm_8roX4HrpKdTrq-3`rqQKhrql]nqu5XU +JcC<$JcC<$JcC<$JcEdjrr)iorql]irq??arpg!Vrp9XIroF(:rnIG'rmLeirl>#Srjr*:ricdKQrqucmrqQKdrq69\rpTjQroa:Aro!e1rmq(srlkA^ +rk\TFrjDa/rh]UdrgNhJrepc1rdauorcJ-YrbMLGra>_2r`];$r_relr_`'+JcC<$JcC<$ +JcC<$a8c/;rqucmrqZQgrq??^rpTjRroj@Cro*k4rn.5"rm(Mbrl"fLrjMg0ri#gj!1a.]Sc4iPO8b%9 +JGsrqGQ)R\D#S/J@fBa6>lIe'<;obo:]=&e9)_B\8,c!W7.iq*6N09%5kRBn5_21]5lO(*6Mj.I7/f[T +8,c'Y9)_N`:]=5j<;oqt>lJ+0@fC*@D#SDQGQ*!hJGtH*NrG7ASc5A_W;a""[f3u>`;[mXc2c>peC=KN +rn[S4roO.CrpB^Srpp'^rqHEfrql]mrr([Qrr)iorql]jrqQKdrpp'WrpB^KroO.ric="rhBC_rfd>Breg]*rd=]hrc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTog@n/qEk0I +JO#,YJO"cOq*=pFh*V!+qaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ +ri#h"rjMg>rl"fXrm(Mmrn7;,ro*kdKQrqucmrqZQgrq??^rpKmT +m/ZPQkl0]CiVq[4f`'D"cMkrb`;[IL[f3K0W;`OjSc4iPO8b%9JGsrqGQ)R\D#S/J@fBa6>lIe'<;obo +:]=&e9)_B\8,c!W7.iq*6N09E5_21O5_22\5lO(*6Mj.I7/f[T8,c'Y9)_N`:]=5j<;oqt>lJ+0@fC*@ +D#SASGBX%2rd=]qreg]8rfd>PrhBCjric=0rk8nPSH2`9lK)U]-OT(OETDkYcWrB='\Gj5A +`W"$ZcN)Jre^aZPrn[S5roX4DrpKdTrpp'^rqQKhqu$Hlh>dBNrquclrqQKdrpp'XrpKdLroO.=rn[S, +rmh"orlY5ZrkABArj)O'rhTOcrg!JErepc-rdFckrc.pTrbDFBra>_2r`B)!r_`Yjr_3;ar^d#Yr^QlT +og@n/qEk'FJO#5\JO"cOr':6Ig-Y[(qaCEQr^ZrYr_*5br_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-- +rfI,Erh'1cri5t'rj_sArl+lZrm1Sorn7;,ro3q>roj@Lrp]pXrq??drqcNirr([Qqu-NlrqcWhrq??^ +rpTsVmJu\Skl0]Cir7d5g&BP$ci2)d`W!UN\Gif5WrAgnTDk,TOT(1;K)U2tH2_g_DZ4DMA,]m8?2dq) +nMUH$KC8rdOiurepc;rg!JTrhTOnrj)O5rkABNrlY5drmh#$rn[S5roX4DrpKdTrpp'^rqQKh +qu$Hlh>`'+JcC<$JcC<$JcC<$a8c&8rquclrqQKerq$-ZrpTjNroa:@rndY.rmq(qrlb;\rkSNErj2U) +rhTUe!M?"`Qi<0INrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm:B!rd8cD9[7fGjU7/0.'6@hDs5_21O +5a"Ca6Mj.L7/fXS7fGpW8cDE_:B")h;uThs=T2\,@fBp;C]88OErLFbJ,Y*"NrG4@QidOpZi7N7 +_#D@Qbl5rhecF@Qrn7;-ro="?rosFNrpg!ZrqHEfrqcNirr([Qqu-NlrqcWhrqHE`rpg!VrosFFro="7 +rn@A&rm:Yfrl4rQrjr*8ri?$prh'1Vrf[8@re(3"rd4Wbrbh^Nrac":ra5Y,r`/qrr_WShr_3;_r^d#X +r^HfSpd=42oKn*oN^/.\JO',uf0]@%r^?`Sr^QlWr^m)_r_EGhr_resr`K/,raPk;rbMLOrc8!brdXp" +rf6u@rg3VVrh]Uprj2U7rkSNQrlkAgrmq)%rndY7roX4ErpTjVrq$-`rqZQiqu$Hlh>dBNrquclrqQKe +rq$-Z!UoIWn,DSNkPjN@hYu7.f)F%qbPoN\_#CqEZi7$)V>d+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5 +=T2>";uTVm:B!rd8cD9[7fGjU7/0.'6DQkt5_21O5it>`6Mj.L7/fXS7fGpW8cDE_:B")h;uThs=T2\, +@fBp;C]88OEWLN6!.4]pre(31rf[8Irh'1dri?%)rji$Drl4r]rm:Yqrn7;-ro="?rosFNrpg!ZrqHEf +rqcNirr([QJcC<$JcC<$JcC<$JcEdjrr2oqrquclrqQKerq-3[rpTjProj@Bro!e2rn7:trlkA`rkSNF +rjMg/rhogk!MZ=fRf8QNO8an5K)U5uFoHC[D>n2IA,]j7>5hV&5hn.A,^-?D>nPSFoHjhK)UN(O8bCC +Rf9&\W;`t![f3r=_#DITc2Q&if`BdZrnRM2roF(Brp0RPrpp'\rqHEfrqcWlrr)iqh>dKRrr)iorqcWh +rqHEarpg!Vrp0RIroF(:rnRM+rm:YgrlP/Trk&0$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XSrcJ6jIK4irK)UN(O8bCCRf9&\ +W;`t![f3r=_#DITc2Q)hg&Be+i;Vg:kl0oIn,DnWo`"Uaq>U6ir;QZorn[U*s+13$s+13$s+13$s2Y0= +rr2lqr;QQlq>U0go`"F\n,D_Rl2KiEi;VR3gA]P"cMl#d_Z%7J\Gi`3WW8gqUnn![rg*PFre^W,rdXok +rcA'Wrb2:Ara>_1r`T5$r_i_lr_EGbr^m)[r^QlUr^?NKg-Yd)JO'3"JO"cOQpCX:g-YR%r^?`Sr^QlX +r^m)]r_EGhr_i_rr`K/)ra>_:rb2:LrcA'_rdXp#re^W9rg*PRrhTOnrilC3rkABKrlb;ermCf#!SZ9, +h>Z@3k5OWEmJcSRo)A:\q#:*gqYpElrVlfPs8N#srVl`oqYpZ.-df.Pk +bPoBX^&GP@Yl:[%V#Hn`QN!!FM>i/,J,XZkF8g+WB`;QA@/aF1=oMJ$;Z9Ml:B!lb8cD9[7fGjU7/0.7 +6LdDA6%M:c5_21P5QF(N5sa3kpd>$Kr^HfUr^d#[r_!/br_WSlr`9##r`oG1ral(BrbqdWrce?kre19- +rfI,Frg`t`ri5t%rj_sArkeZXrm1Slrn@A-ro!elIn*lJ.1Ac?BBDuOhWG6*2C!.Y!$re^W9rg*PRrhTOnrilC3rkABKrlb;ermLf"rn[S3roX4E +rpB^Rrpp'\rqQKgrqcWlrr)iqh>`'+JcC<$JcC<$JcC<$a8c/sAj9`@Z` +8cD3V7Iih(6N09%5lO$"5_21f5lO(*6M3_F7JfRR8cD?]9`@ie;>sJm=8lD&?2e=4B)ZQEDuOkXH2`?n +LAm,1P5^jJT)PVdXT#I'])KGC_u@mZci2AngB$'`rndY5roa:GrpB^Srq$-]rqQKgrqcWmqu5FOrr2fn +rqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC&rhf[drg<\Jrepc0rdaunrcJ-XrbDFE +raPk4r`T5%r_i_mr_NMer_!/]r^QcRnjDn5nO!4@JO#GbJO"fP!'pWO6/=m#6iKOO7fH!Y9)_N`:]=5j +;Z9bs>5hh,@fC!=CAr/NFT-RbJGt<&MuJn=R/W]VVZ*[rYl;65^Ac%Lbl5rfe,J,$hYuL5kPjcGmJcVS +oD\C]q#:*gqYpHjrn[VRrqlZnqYplMg2MnG`%Yo`"Xbq>U6irVQTMs+13$s+13$s+13$s+13js8N#prVl]nqYpZ")df.Pk`r_9 +rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7,rk8Z@3j8S9Ali-APnc&1[pAXme +qYpBkrVQTMs8N#prVl]nqYpZ")df.Pk`ri/,I/\?hErKqTB`;QA@/aF1=oMG#;Z9Jk9`@Z`8c)$W7fGgH6hlJ.1AH$nSTGQ*!hKDp]+NrG=CRf8uZWW'("Zi7Z;_Z%RScMl8kf)FM) +i;Vd9kl0oIn,DkVo`"R`q>U6iqu6Qkrn[VRrqlZnqu6Hkq>U*eoE"LP!:g'Wrp0RIro="9rn[S)rmLek +rl4rRrk8<;ric=#rh07[rg!JCre^W,rd=]hrc8!Trb2:Ara>_1r`T5#r_i_kr_3;`r^luWr^QlTnjCnn +[QoC/JO"cOpd!=qogAUEqaUQTr^m)^r_3;er_i_qr`T5*ra>_9rb;@Krc8!^rd4a!K)gQ'M#NG6Q2[6O +T`1qiY5Yd,^&GnJ`r=9_df.hsh>Z@3j8S9Ali-APnc&1[pAXmeqYpBkrVQTMs+13$s+13$s+13$s+13j +s8N#prVl`oqu6HkpAX^`nc&"Vli-/JjSn-;hYu.+e,I\ma8X!U^](Y?YQ1^)X/l5orgj%TrfI,;re:?# +rd"KbrbqdNrb)4=ra,S.r`9"sr_WShr_3;`r^d#Yr^QZNpd#armUku!8[b5hYuL5 +jSnECm/HJQnc&1[pAXpfqu6NmrVQTMs8N#prVl`oqu6HkpAX^`nc&"Vli-/JjSn-;hYu.+e,I\ma8X!U +^](Y?Yl:^&UAg__Qi<*GMuJG0If=WlFT-4XCAqlF@K'U4>Q.\&;uTVm:B!rd9)_B\8,c!Q7/0.@6K1=_ +5bLAn5`S,%6K(9+6hj(K7fGpW8H)6\9E%]c;#XGn&?N+C4BDu]GDuOkXH2`9lL&Qu/OT(UGSc5A_ +X8]@&[Jmr?_u@^Uci2DmfDaY+iVqp;l2L&Kn,DkVo`"R`qYpBkr;QZlrn[VRrqlZnr;QTmqYp3foE"LP +!:g'Wrp0RJroF(;rndY+rmUkmrl>#UrkJH?rilC&rhBC_rg3VGrepc0rdOilrcJ-XrbDFFraGe4r`fA& +r_remr_EGdr_!/\r^ZrWpdFmEe3^T/JO"cOJO&uqe3`ptpdG*Nr^ZrYr_!/_r_EGhr`&ktr`fA.raGe= +rbMLOrcJ-brdFm%K`Hi+MZ/_:Qihu;@/ec*qpb5TBZ +_#CkCZN.-/Y-.c"rh'1YrfR2>reUQ(rd4Wgrc%jQrb2:?ra5Y0r`B)!r_i_lr_hu;@/ec*qpb5TBZ_#CkCZi7-,V#I"cRf8HKNW+b5JGsopGQ)R\D#S,I@fBa6 +>lIh(OnG`%Y +p&=^bqYpBkr;QZorn%2Lrr2lqr;QTmqYp6go`=[U!;$3ZrpB^NroO.>rnm_/rmh"prlY5ZrkSNCrj2U, +rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKPpdt*e,IVkaSs*V]`,>>YQ:u4ri,mlrh'1TrfR2=rdt,urd4Wc +rc%jQral(t*e,IVkaSs*V +]`,A=Yl:X$U]-nbQ2ZpFN;eG.If=]nF8g.XD#S#F@fBa6>5hV&_9rb)4Jrc.p[rdFcsre:?3rf[8J +rh07fri?%)rj_sArl+lZrm1Snrn7;,!9+%=ir8*>kl0uKnG`"Xo`"R`q#:-hqu6Qkrm^uIrr2lqr;QQl +q#:!do`"F\n,D_Rkl0]Cir7d5f`'D"ci2)d`W!UN\c/r7X8\spT`1>XPQ$UAL&QZ&IK"BgErKtUBDuH@ +@/aF1=oMM%;Z9Ml:B!oc9)_BV7efCK6hs'q6@hD-5_21n5iP,k6N0@I7/07N8H)3[9E%]c;#XAl=8lA% +>lJ.1AH$6@DZ4YTFoHggJc:B&NrG4@R/WcXVZ*XqZi7K6^Ac+Nb5T`deGe/#h>ZF5k5OTDmJcVSo)A:\ +pAXjdqYpBkrVQTDs8N#srVl`oqYp9hp&XgX!;-9]rpTjRroj@Cro3q5rn.5"rm1Sdrl+lNrji$7ri?$p +rh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra>_1r`T5%r_i_lr_EGcr_!/\pdY$Hqa8Fka?Y;AJO#)X`BsPk +pdFmHr^d#[r_*5cr_WSlr`B)%r`oG1rac"@rbh^TrcS3grdk'&!KN0?NrG4@R/WcXVZ*XqZi7K6^Ac+N +b5T`deGe/#h>ZF5k5OTDmJcVSo)A:\pAXjdqYpBkrVQTJs+13$s+13$s+13$s+13ds8N#srVl`oqu6Ej +p\sjbo)A.Xmf)JMkPjN@hu;@/f)F%qbl5]__#CqG[/m\Cric="rhBC\rg!JDreUQ,rdXolrcJ-XrbDFE +raPk6r`fA(r_reor_NMfr_!/]qa^WTqaLKPnjCekS3VWjJO$Y/c9h1kqaCEPqaUQTr^m)^r_k5OWE +mf)_To)A=]p\t!fqu6NmrVQTDs8N#srVl`oqu6Ejp\sjbo)A.Xmf)JMkPjN@hu;@/f)F%qbl5]__#CtF +[JmB/W;`OjRf8TOO8at7K`6K#GlDgaDuOMNB)Z9=?iF:/=T27u;Z9Jk:&[ca8c)$W7f,XR7.WbG6d\5O +5dEY+5bLC%6L@,46i0:N7JfRR8,c*Z9E%Zb:]=5j;uTnu>Q/"/@fC!=CAr/NF8gF`J,Y*"M#NJ7Pl@-N +UAh.kYPts/]DfVFaSsE_d/MVqgA^"/j8S3?l2L,MnG`"Xp&=^bq>U9jr;QZlrm^uIrr2lqr;QTmq>U*h +p%8=Xrpp'XrpKdMroa:@rnm_/rmq(qrlkA_rkSNFrjDa/ri#gjrgNhOrf@&7re19#rcnEarbqdNrau.= +ra5Y/r`K.ur_i_kr_JO"cOMEoHRogAUEr^H]Rr^ZrZr_*5br_NMjr_reu +r`fA/raPk=rbDFNrcA'`rdXp"reLT9NrY7?Pl@-NUAh.kYPts/]DfVFaSsE_d/MVqgA^"/j8S3?l2L,M +nG`"Xp&=^bq>U9jr;QZlrn@C's+13$s+13$s+13$s2"a7rqlZnr;QQlq#:$eo`"C[n,DYPl2KfDi;VO2 +g&BJ"ci2,e_>_.K\H07OrilC&rhf[ergEbMrf-o4rdt,srcnE`rbh^Mrb)4_U6f +r;QZlrm^uIrqlZnr;QQlq#:$eo`"C[n,DYPl2KfDi;VO2g&BJ"ci2,e_>_1J\c/i4X8]!qTDk8XPl?[A +L]2o)I/\BiF8g(VCAqlF@/aI2>Q.\&;u9Dj:B!rd8cD9[8,c!T7K,^K6iBBe6N09%5fu?C5e')Y6-Vaf +6M3_C7/fXP7fGpW8H)3[9`@c`;#XGn&?N+@3BDuZFDZ4_VGQ*!hK)UT*NW,1ARf8rYVZ*XqYl;34 +^&GkIbPoiee,J&"h#?72jo4KCli-APo)A:\p\t!fqYU3irVQTDs8N#prVl`oqYp6jp\+[^rq-3[rpTjP +rosFDro!e2rn7;"rm1Serk\TJrji$4ri?$qrh'1XrfmDAreLK)rd=]ircA'VrbDFFra>_2r`fA&r_r\j +r_EGdr^m)[r^ZrWqaLKPnjC/Yr^#I-JO"cOU-S]D^I%T\qaCEPqaUQTr^d#[r_3;cqb[8kr`9#&ra,S3 +rb)4Frbh^Vrce?hrdt-*rf$rCPQ6sIRf8rYVZ*XqYl;34^&GkIbPoiee,J&"h#?72jo4KCli-APo)A:\ +p\t!fqYU3irVQTJs+13$s+13$s+13$s+13ds8N#prVl`oqYp9hp\sgao)A+WmJcALkPjH>hYu:/ec*tq +c2PZ\^];"J]Y+6Mric=$rh07\rg3VFreg]/rdXonrcS3ZrbVRJraYq8ra#M*r`/qrr_`Yjr__8rb;@Jrc%jZ +rd+Qnre:?/rf@&Frg`t\ri5t#rj2U:rkSNOrltGirmh#&rndY5!9XCGkPjcGmJcSRo)A:\p\t!fqYU3i +rVQTDs8N#prVl`oqYp9hp\sgao)A+WmJcALkPjH>hYu:/ec*tqc2PZ\_#D"GZi70-WrA[jSGnlSO8b%9 +L&QT$HN&'dE;j\QC&VWA@/aI2=T2>";uTYn:]=)f9E%Q_8GbpV7f,XO6ifYBrBn=dJO.=BJO-e3b!P\d +r^6?Hr^H]Rr^ZrYr^m)^r_rp'LMrpTjWrq-3arqZQiqu$Hlqu5+Frr2fnrquclrqHNgpAjseo`"F\ +n,D_Rl2KlFiVq^5g]#b&dJhDi`;[RO]`,8:YPtR$T`1J\Qi<'FMZ/>/J,XcnFoH@ZD#S/JA,]m8?2dt* +sAj:&[fb9)_BY8,c!T7JfLM6bbtD6%M=Q6)$ZX6N0@F7/fXP7fGpW8H)3[9E%Zb:]=5j;uThs +=T2V*@/a[8C&VrJE;k"ZHN&EnL&Qu/NrbT6!13\Trh07jriZ7,rk/6Grl"f\rmC_qrnIG/ro*k>rp'LM +rpTjWrq-3arqZQiqu$Hlqu5=LJcC<$JcC<$JcC<$JcEIaqu-NlrqcWhrqHEarpp'XrpKdOroj@@rnm_1 +rmq(srm1Sarke`N!PcDK[f3Q2Xo>*pTDk;YOoC@>M>i)*IK"KjEW0kTC]7lD@fBa6>Q._'sAj +:&[ca8cD9[8,GdQ7K,^/6]aWc6@hJ$6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BD +DZ4YTGlE*iJc:N*NW,(>Rf8oXU].CpZMq<3^]).Ma8XEae,Iqth#?41iW/0Ckii$2rpKdTrq$-]rqHEf +rqcNirr(%?qu-NlrqcWhrqHEarpp'XrpKdOroj@@rnm_1rmq(srm1Sarkn`MrjMg2riQ0prh'1YrfR2> +re^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr_sJmQ/"/@fBp;C]85NEW14^I/\]rM>iM6OoCgKT)PMaXo>X* +[f4&@_u@^Uci2Dmf)FJ(hu;X7kl0lHmf)_ToD\C]p\t!fqYU3irQG6#UrkJH@riuI)rhKIbrgNhKrf-o6rdk&srcnE^rbh^Nrac";ra5Y/r`B)! +r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-]L%09JO4oSqa04.qaCEPpdY6Qr^d#[r_*5br_NMjr_i_qr`K/( +ra5Y6rac"Drbh^TrcnEirdk'*rf-o>!LfGWRf8oXU].CpZMq<3^]).Ma8XEae,Iqth#?41ir80@lMg5N +nG`%Yo`"Uaq>U6fr;QZEs+13$s+13$s+13$s+13as8N#prVl]nqYpQ.e)gO7J0'"6^gAn6]4>+ +7/TIJ7J0.L8,c'Y8cD?]9E%Wa:&@cd;uTer=oM\*?iFO6B)ZNDDuOhWG5csiK)UN(NrG4@QN!NUV#I@m +YPts/]DfVF`r=3]d/MSpg&Bn.ir8'=lMg/Ln,DnWp&=[aq>U6iqu6Qkrlb?@rqlZnqu6Emq=t$drq??` +rpp'Wrp9XLroO.=rnm_.rmh"prlkA]rkSNFrjDa/ri,mlrh'1Urf[8@reCE(rdOiirc8!Vrb;@DraPk6 +r`fA)r`/qrqb[8er_3;ar_!/]r^d#Yog\^FogH#OJO=uUJOB)tnjN7Aog\pNr^d#[r_!/_r_3;cqb[8j +r`/r#r`oG0raPk=rb;@MrcA'^rdOiureCE4rf[8H!M>taTDkYcWW'+#[Jmf;_#D@Qbl5ugec+8$hu;X7 +jo4QEm/HJQo)A=]pAXmeqYpBkrVQTDs+13$s+13$s+13$s+13as8N#prVl`oqu6HkpAXaaoD\7YmJcGN +kPjQAi;VO2f`'A!cMkoc_Z@Zmrk8<@rj2U)rhf[grgNhOrf@&8re19#rd"Kcrc.pSrb;@Dra>_3r`oG) +r`9"tr_`Ykr_EGer_3;ar^m)[ogedHJOT?&JOP,YP"#.8ogf!Pr^m)^r_3;cr_EGgr_`Yor`9##r`oG/ +ra>_;rb;@Krc.p[rd"Kmre19-rf@&CrgNh[rhf[qrj2U6rk8t*e,IYlao93W^&GP@ +Zi7$)VZ*:gRf8TOO8b"8K`6K#H2_scEW0hSC&V`D@/aL3>lIk)sDk:B!ue9`@]a8cD9V8,YsQ +7Y+!g7=dmY7JoUL7eK:N8H)3[9E%Wa:&[oe:]=5j<;oqt=T2S)?N+@3B)ZNDD>nPSFoH[cJ,Y-#M>iS8 +Pl@-NU&LqgX8]I)\Gj2@_u@aVcMl;lfDaS)i;Vg:kPjfHmJcVSoD\F^pAXpfqu6NmrVQT;s8N#prVl`o +qZ6Qi!;c]grq69^rp]pSrp0RHroF(:rnRM*rmUklrlP/Wrk8<@rj2U)rhf[grgNhOrf@&8re19#rd"Kc +rc.pSrb;@Dra>_3r`oG)r`9"tr_`Ykr_EGer_3;ar^m)[ogedHUd]i'JOP,Yk!f&7ogf!Pr^m)^r_3;c +r_EGgr_`Yor`9##r`oG/ra>_;rb;@Krc.p[rd"Kmre19-rf@&CrgEk]T`CecVZ*XqZi7K6^&GqKaSsKa +e,Ituh#?72jSn?Ali-;NnG`%Yp&=[aqYpBkr;QZlrm^t!s+13$s+13$s+13$s1\O4rqlZnr;QTmqYp6g +pAX^`nc&"Vm/H5Jjo46Z+,ec*qpb5fQ`a2e1prk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQ +rb2:@raGe5r`];'r`9"rr_`Yjr_WShr_3;`oh#-Rpd]m)pdTg(JOYelpdb3PqapZWr_3;cr_WSir_`Ym +r`9##r`];.raGe9rb2:Hrc%jYrd"Kkrdt-*rf-o?rg<\VrhKIlric=/rk&0Frl>#]rm:Yprn7;,ro*k< +roa@K!UT1Pmf)bUo`"O_p\t$gqu6NmrVQT;s8N#prVl`oqu6Hkp\smco`"C[n,D\Qkl0]CiVq[4g&BP$ +d/M5fa8WmR]Df5;YPtO#U]-kaR/W9JNW+_4K)U2tGlDgaE;j\QB`;N@@K'X5>5hY'sAj;#X5h +9`@ZX8H;?]8GG]+7ZKrh7Y+&,7efLN8Gc!U9)_N`:&[ug:]=5j;Z9_r=T2M'?iFL5A,^0@C]8;PFT-Rb +IK"itM#ND5P5^jJT)PMaWW'+#[Jmf;_#DCRbPolfec+8$h>ZC4jo4KCm/HGPnc&1[p&=^bqYpBkr;QZl +rlb?@rqlZnr;QQoqYC3grqHEcrq-3[rpTjQroj@Cro*k4rn7;$rm:Yfrl>#Rrk&0;ric=#rhKIarg<\J +rf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yjr_WShr_3;`oh#-Rpd_,LJOY2[JO\ckpdb3P +qapZWr_3;cr_WSir_`Ymr`9##r`];.raGe9rb2:Hrc%jYrd"Kkrdt-*rf-o?rg<\V!McCiU].7lYPts/ +]DfVFa8X9]d/MSpg&Bh,iVqs_X[qJDqb$i\pe:Z] +r_EGgr_WSkr`&ksr`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbVrh07jriZ7+rk&0ErkeZX +rm1Slrn7;+ro!e:roj@H!:BmUmf)_To)A@^p\sseqYpBhrVlf8s8N#prVl`oqYp9hp\smco)A.Xmf)MN +kPjQAi;VO2g&BG!cMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt, +=8l8"<;obo;#X8i:B!ub9E@dZrCd,^i(8JjWCVS2QUpF6q+:HUr_*#[r_gBkq#:$epAXX^nG_kTlMfuGjSn*:h#?"+df.PkbPoBX +^AbbDZMq$+WrA[jSGnrUOT(4i&)IK"TmF8g.XD>n5JAc?-;?iF=0>Q._'sDk:]=,g:&@W] +9E%QA8\[fI8:a<_8E3;=9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41@K'j;B`;lJE;jqXHiAKnJGtE) +NW,%=RJrcVTE2'm!36%$rj)O8rkJHLrlb;ermLf!rnRM2roF(Brp'LNrp]pXrq??crqQKhrqlTkrr1=F +JcC<$JcC<$JcC<$JcE7[rr2oqrquclrqZQgrq??_rpg!Vrp0RJroa:>rndY/rmh"r!6tVjcMki__Z%:K +[f3Q2Xo>-qT`1J\Pl?dDNW+V1Jc:,tGQ)^`DuOSPC&V`D@K'[6?N+.-=T2A#<;ohq;Z9Ml:]=,a:&[iE +99Vu!8qBU:9&iSA9__?]:B"&g;#XAl;uTbq5hk-?iFL5B)ZKCD#SAPF8gC_If=otK`6u1OoCUE +SGo2\V#ILqZMq<3^Ac"K`r=9_dJh\qg]$(/iVr$>l2KuKmfDnGrpg!Zrq??crqZQirql]nqu4J4rr2oq +rquclrqZQgrq??_rpg!Vrp0RJroa:>rndY/rmh"rrm(M_rkeZKrjMg2riQ0qrh07\rfmDDrf-o1rdk&t +rce?`rbqdPrb;@DraGe6ra,S-r`K/#r`&kqr_i_lr_NMgr([,ar_26CJP)n6JP)8$lV%%Hqb6cZr_EGg +r_WSlr_reqr`9##r`];-ra5Y5rau.CrbVRPrcA'_rdOitre191rfR2Erg`t\rhTOqrj)O3rkABKrl4r_ +rmC_qrnIG/ro*k>rosFJrpTjVrq$-_rqHEfrqcWkrr)`n_Z0W7rr)io!W)WmqYp5hY'Pl@3PT`1_fXfVT*rj)O3rkABKrl4r_rmC_qrnIG/ro*k>rosFJrpTjV +rq$-_rqHEfrqcWkrr)`ndJndtJcC<$JcC<$JcC<$\GuR-rr)iorql]krqQKerq-3\rp]pSrp'LHro3q8 +rndY*rmLkn!RK*kao96X^](eC[/R9.W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA@fBa6?N+1. +=oMJ$g;#X8i;#X8f:@_,:9S#lg9VbAT:%_9\;#X8f;#X>h;Z9YpE]p.kT`r_NDfr_`Pjr`&ksr`9#$r`fA.ra5Y6rac"ArbMLPrc8!^rd=]q +re19,rf@&Brg<\WrhKIkric=.rji$Crl"fXrm1Smrmq)*ro!e8roj@HrpB^Srq$-]rqHEfrqcWkrquco +qu4J4rr2oqrqlfoqZ-NmqYp9hp\sgao)A.XmJcDMkl0T@i;VU4f)F.tci2&c`;[ON\c/u8YPtL"V#I"c +R/W?LO8at7K`6N$I/\?hErL%WD#S,IAH$';?iFC2>Q.e)X2h:]=2i:]!oX9t!`H9S#lg +9__h;Z9Yp5h\(=8l8":Ou;m +:RFrT;#!ob;Z9Vo5hb*?N+=2@/aa:B`;cGDuObUF8gLbI/\ZqLAm,1O8bFDRf8rYU].4k +Y5Yj.])KJD`;[mXcMl;lfDaM'hu;X7jo4TFmJcPSnH&1Mrq-3`rqQKgrqcNirr)`n_Z0W7qu-NlrqcWi +rqQKdrq-3[rpTjQrp0RFro3q7rn@A'rmUklrlP/XrkJHDrjDa.ri,mlrh'1Yrg!JDreg]0rdaurrd+Qb +rc.pUrbDFFral(:ra5Y2r`fA*r`T5%r`9"ur)3Sor_iMgr_S/AO\^O(JklACr)!/cqbmDlr`/qur`B)% +r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriZ7.rjr*Drl"fXrm(Mlrn%/' +rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hlqu4J4rr2fn!W;iqr;QQlq>U0gpAX^`nc&"Vm/H>Mjo49= +hu;@/fDa7ucMkrb`;[ON])K,:Y5YF"U]-nbRf8TOO8b%9LAl`&IK"QlF8g1YDuOMNBDuKA@/aO4?N+1. +>5h\(=8l8"5hb*?N+=2@/aa:B`;cGDuObU +F8gLbI/\ZqLAm,1O8bFDRf8rYU].4kXoYr5h\(=SPql<;TUF;Z9RF;Lq`2;Z9Vi<;9Mn=T2J&>5he+?2e41@/a[8AH$^WW'%!Z2V<5^&GhHaSsB^d/MSpg&Bh,iVqp;kPjiImJcSTncA=Prq69arqZHfrquco +q#8/1qu6Tnrquclqt^6brq-3\rp]pTrp9XIroO.e +lJ%.?iFI4A,^$U)\c0;A_#DFS +bPolfec+8$h>ZC4jSn?Am/HDOnG`"Xp&=[aq>:$fr;QZirke^4rr2isr;6QmrqcNfrq??`rpp'XrpKdP +roa:Bro*k4rn7;$rm:YgrlG)Srk/6@riuI)ri,mjrgj%VrfR2?repc.rdaurrce?arc.pTrbMLIrac"; +ra>_4ra#M.r`];(r`Jqrpf.,hW`"CGJPq%sku.LZpf.#hr`K/&r`];+ra#M1ra>_8rac"BrbMLNrc.pZ +rce?irdb!#repc9rfR2Jrgj%^ri,n!rilL7\H'2>^&GhHaSsB^d/MSpg&Bh,iVqp;kPjiImJcVSo)A=] +pAXmbqYpElrV6B>s+13$s+13$s+13$s+13Xs8N#prVQKkqYp6gpAX^`nc&"VmJc>Kk5OE?i;VL3fE'XW +rmC_krlkAZrkSNHrj;[/riQ0qrh07]rg!JGrf@&6re19$rdFcjrcS3Zrbh^Prb)4Brac":ra>_4qd'2+ +qcWo#qcEbtk#IUEJQ.2"X]4F_qc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6 +rf[8Grgj%^rhTOqriuI0rk8Kk5OE?i;VO2f`':tci2/f_u@IN^&GDn2IB)Z??@K'[6?i+..>l7_)=oMP#=8l7_BDucIDuO_TFoH[cIK"crK`6c+O8b=AQ2[?RU&LkeXo>U)[/Rc<_#D7Nbl5oe +dJhetg]$.1j8S3?kl0uKn,DkVo`"O_p\Xgdqu6Qkrji(.rqu]prVQKkqYp6gpAX^`nc&"VmJc>Kk5OE? +i;VO2f`':tci2/f_u@IN^&GDn2IB)Z??@K'[6 +?i+..>l.\'=Sl2!BDucIDuO_TFoH[cIK"cr +K`6c+O8b=AQ2[?RU&LkeXo>U)ZiRkR!58BIrkn`Zrm(Mjrn.5)ro!e9roX4DrpB^Rrpg![rq69bqtgrnd_2!SlK0f)F+s +ci2#b`;[RO]Df8k2+l>*E*?=b0_X=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtYGQ*!hIf=otM#N>3 +O8b@BR/WZUUAh(iXT#L([f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#Jn,DkVo)SIbp@eL[rqQKhrql]m +rr)`n\c;[.qu-Nlrql]krqQKerq??_rpg!Vrp0RJroa:>rnm_1rmq(srm1Sbrl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra5b6?N=I4?Me%->k2+l>(KhU=b0_B +=n5bm>Pq_&>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_VuEds +Z2V32]DfVF`W!sXci2Dmf)FJ(hYuL5kPj`Fli-APnc&.ZpAXgcq#:-hqu6NmrVQT)s8N#qr;cfqr;QTm +qYp9hp\smcoD\:Zn,DYPl2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP217=b0_,=b0`H>4l+s>lJ%+?N+@3?iFI4 +@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_VuEdsZ2V32])f^_!5STQrlG)brmUkt +rnRM0ro*k>rosFJrpTjVrq$-_rqHEerqcWkrqucoqu4e=JcC<$JcC<$JcC<$JcE.Xq#:9jrql]krqZQg +rq??`rpp'WrpKdOrosFBro!k6!T)]4f`'G#dJhAhaSs*V^Ab_C[JmE0X8]!qT`1J\RJrBKO8b+;LAli) +J,XipH2`!dEW0qVDZ4GNCAqrEAc?6>@f'U5@/F=(?LhBc>_-.2>ch9(?1M>$?i+71@JaO2AH$0>C&VlH +C]85NDuObUG5cacI/\WpKDpW)N;en;P5^mKSGo2\VZ*XqYl;'0\c0>B_u@^Ubl6#hec+5#hYuI4j8SOn,DnWoDnRcp@eL[rqZQirql]mq#7i(q#:9jrql]krqZQgrq??`rpp'WrpKdOrosFBro*k5rn.5# +rmC_hrlG)VrkABCrjDa0ri?$qrh07\rgEbKrf@&;reCE)rdXoprd"Kdrc.pVrbh^NrbDFHqdob;raGn: +@JsX6@/F=(?LhBQ>cCtZ>aJ^g?2%\'?N+=/@/aU3@f'^8Ac?ECCAr#JDZ4SREW1.\GlE*iJ,Y*"LAm/2 +O8b=ARJr`UT`1hfX8]@&[Jm`9^Ac%La8X<^dJh\qf`'b,i;Vd9l2L#Jmf)\So)A:\pAXgcq>U6iqu6Ng +rji()rW)rsr;QTmqYp_-.2>kMCn?N+=/ +@/aU3@f'^8Ac?ECCAr#JDZ4SREW1.\GlE*iJ,Y*"LAm/2O8b=ARJr`UT`1hfX8]@&[Jm`9^&c-h!5nfV +rlkAhrmh##rndY4ro="Brp0ROrpTjWrq-3`rqHEfrqcWkrquQjbQ!.nJcC<$JcC<$JcC<$YQ+V$rr)io +rql]krqQKerq-3\qsaUPrp'LEro4"9!T2f6g]#h(e,I_nbPoQ]_#D"G\c/o6Y5YL$U]-qcSc4rSPQ$XB +N;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*r_@"D^:@%Ld!@JaO5A,Bg9Ac??AC&VlH +D>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X9]d/MMnfDaP(hu;X7 +jo4QEm/-;OoD\@^pAt$_rqZQirql]mrr)`nYlF_%rr)iorql]krqQKerq-3\qsaUPrp'LEro="8rnIG( +rmUknrlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^PrbDFGrb).? +!+l.?qd]V7nmR)WSR@"VLg^'fr*fJ3raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wmrdb!#reLK3rf@&B +rg*PSrh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEfrqcWkrqucoqu3i" +!WN&urr2lqr;QTmqYp9hp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1M] +QN!*IO8b+;M#N&+JGsurHiA0eFT-=[E;jbSD>n;LB`;ZAAc?6;A,]s.@C'?m@"D^:@.I^u@JaO5A,Bg9 +Ac??AC&VlHD>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GeJa2\2#rlb;f +rmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]mrr)`naT$hkJcC<$JcC<$JcC<$YQ+V$qu-NlrqcNf +rqHEcrq-3ZrpKdQroj@D!94+?j8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG": +LAli)J,XorHiAnANC]8)GC&Vf4BDuM,AV"EDAZ]P@B(BU3B`;`CCAr#JD#S;K +DZ4VSEW1%YFoH[cHiAKnJ,Y*"LAm/2NrG.>Qi'paqu$Hlqu3i"rr2fnrquclqt^6crq??`rp]pTrpB^KroX4?ro!e2 +rn7;!rm1Sgrl4rSrkJHCrjDa0ri?$qrhBCargNhQrfI,>rf$i2re(3"rdOinrd"KcrcJ-Zrc%jTrbh^P +!GlQPD#S5LCAV`EB^BC2Aq=NmAV"EZAc$*1B)lWCB`;`CCAr#JD#S;KDZ4VSEW1%YFoH[cHiAKnJ,Y*" +LAm/2NrG.>Qirf$i2re(3"rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2raroVJRsCD +JS"^jnn7i5rb;7ErbMLLrb_OMrc%jVrcA']rd"KirdOirre(3)rf$i:rfI,GrgWnZrhBCiri?%&rjDa9 +rkJHMrl+u`blH#fd/MJmg&Be+i;Vd9k5OTDmJcSRnG`(Zp&=^bq>:$cr;QZlrlG+js+13$s+13$s+13$ +s0)J"rr2lqr;6BjqYp9hpAX^`o)A.Xmf)JMkQ'`Gk2u[%rnm_1rmq(trm1Sdrl4rSrk8<@rj;[.ri?$s +rh9=_rgWnPrfd>Brf$i5reCE'rdXoqrd+Qgrce?`rcA'Zrc.pVrbqdRqec=Knn\5>NG3rXJSD,uqeGe> +qeZ7KqelCOrc%jVrc8!ZrcJ-`rd"KhrdFcqrdk''reUQ4rf@&Arg!JPrgs+_ri#gsric=.rji$ArkeZS +rlY5drmUktrnRM0ro*k=roa:FrpKdTrpp'\rq??d!;cWirql]mrr)WkYlFV"rr)ioqtpBhrqQKdrq-3\ +rp]pTrosFGroX4=rnm_1rmq(trm1Sdrl4rSrk8<@rj;[.ri?$srh9=_rgWnPrfd>Brf$i5reCE'rdXoq +rd+Qgrce?`rcA'Zrc%sXDuakVDuOYOD>nABC]8("BqoBnBpS5MDuO_TEW1"XF8g:\ +GQ)meHN&?lJ,Y#uLAm#.N;en;P5^aGS,T#YU&M"iX8]=%[/RW8^&GnJ`r=-[ci2Dmf)FJ(hYuL5k5OQC +l2L,MnG`"Xo`"R`q"spequ6NmrV6ArrrN,urVlfprquZjrqcWhrq??`rpp'XrpKdMroj@Dro*k6rnRM( +rmUkmrlY5[rkeZJrj_s7ric=%ri#girgs+Yrg!JHrf@&;re^W/rdk&urdFclrcnEdrcJ-\rc8!Xrc%jT +rbhUMrbV.@rbAuXJSB[LJSG*tqeGe>qeZ7KqelCOrc%jVrc8!ZrcJ-`rd"KhrdFcqrdk''reUQ4rf@&A +rg!JPrgs+_ri#gsric=.rji$ArkeZSrlP8fcN);je,Iqth#?10iVr!=kPj`Fmf)_To)A:\pAXjaqYpBk +r;QZirlG+js+13$s+13$s+13$s/c8"rqlZnr;QTmqYp9hpAXaaoD\=[n,D\Ql2^#Kkii$+ro*k6rn.5# +rmC_jrlY5[rkSNHrjr*7ric='rh]Uhrh'1Zrg3VKrfI,=repc0re()urdOiord"Kfrc\9_rc@sWrc.^P +rbqdTqeq@0JSp$VUi-'Jrc%jTpi-4Pqf;[WrcJ-_rce?erd=]nqgeZure:?0rf6u>rfmDKrgWnZrhBCg +riQ1(rj)O7rk80rU]-nb +S,ScRPl?dDNW+k8L&Q`%JGt#sI/\EjGlDmcF9-H(!-A$Xrc.^PrbqdTqeq%'TPfrfmDKrgWnZrhBCgriQ1(rj)O7rk8;roa:A +ro!e4rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sprh07^rg`tRrfmDErf@&;reg]0re19'rdautrdOip +rd=]lrd+Qhqfr*arc\0]LNJ)hJTRK*rcS3`rce6ard"Khrd4WlrdFcprdXotre(3(reCE0rf$i;rfR2E +rg*PRrgs+^rhf[oriZ7*rjDa9rkJHLrl+l\rm(Mjrn.5(rndY4roF(Arp0RNrpTjUrq$-]rqHEfrqZWl +!W2cnr;6HirhoeqrqQHkr;QTmqYp9hp\sgao)A.Xn,D\Qli-)HjSn*:hYu:/f`':tci2/f`W!aR^](eC +[f3Q2Y5YI#VZ*7fT)P8ZQN!-JOoCF@N;e_6LAll*KDpE#J,XorI0"_C!.=cmrd+Qhqfr*arc\0]JTRH) +JTQ]ircS3`!-\HfGPcXaH2`-hHiAElIK"]pJ,XutKDpT(LAm)0N;en;OoCUEQN!ERT)PD^VZ*RoY5Y^* +[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4jSn?Ali-;Nn,DhUoD\C]p\t!fqYpBkr;6Hiri#hss8N#mrVl`o +qu6Hkq#:$eo`"F\nG_nUm/H>MkPjQAi;VU4g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniR +Pl?gEO8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpdG5HEgFFeObFFeQ)FT-F^G5c^_GlE!fHN&9j +I/\QnIf=irJGt3#L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'("Z2V01\c0AC_Z%ORbl5oed/hnP!8.;) +rndY4roF(Arp0RNrpTjUrq$-]rqHEfrqcWkrquZlqu4J4JcC<$JcC<$JcC<$JcDhOq#:0hrquclrqZQg +rq69_rpp'XrpBdR!U]:Rl2KlFjSn*:h>Z.-eGdkpci2&c`r +P5^jJRf8lWTDkVbVZ*[rYPtj,\,Nu<^Ac"K`r=*Zci2AleGe2$h>Z@3jSn<@l2L)Lmf)_To)A:\p&=ac +q>U3jr;?KlrV6Ais7lTjrVl`oqYpN;e_6M#N/.K`6T$JH18uJ,XlnI/A8AHC&r/HA-\EHN8Hh +I/\QkJ,XutJc:9#K`6`*M#N;2N;ek:OT(FBR/WQRSc58\U]..iXT#F&ZMq?4])KGC_Z%RSao9Wcdf.bq +gA]q-i;Vg:k5OWEmJcPQnG`"Xo`"O_q#:*gqYU3irV6AjrrE)orqlZnr;QQlq>U0gp&=U_o)A.Xmf)VQ +l2KlFjSn*:h>Z.-eGdkpci2&c`rZ%*ec*tqci2)d +a8WpS^](nF[f3W4YPtX&W;`XmT`1P^Sc5#UQ2[!HOT(=?NrFt9MZ/G/L&Qc)K):,lJ:rE'It<*CJ+A-h +Jbt&rK`6])M#N81MuJb9O8b7?PQ$mIR/WZUTDkM_V>dFmXT#F&Zi7E4]`,YE_>_LSbPoiedJhYpfDaV* +i;Va8k5OTDlMg8OnG_tWo`"O_p\t!cq>gHkr;QZlrgs/hrqlZnr;QQiq>U-fpAX^`nc&%Wn,DVOkl0`D +ir7j7h>Z%*ec*tqci2)da8WpS^](nF[f3W4YPtX&W;`XmT`1P^Sc5#UQ2[!HOT(=?NrFt9MZ/G0K`Hi+ +K`6T#Jb=PEJ!tkdFmXT#F&Zi7E4 +]`,YE_>_LSbPoiedJhYpfDaV*i;Va8k5OTDlMg8OnG_tWo`"O_p\t!cqYU3irVQSjs8)cprqlZnr;QQi +q>U-fpAX^`nc&%Wn,DVOkl0`Dir7j7h>Z%*ec*tqci2)da8WpS^](nF[f3W4YPtX&W;`XmT`1P^Sc5#U +Q2[!HOT(=?NrFt9MZ/G/L&Qc)K):,lJ?XNSIt<*#J+\<^JGt,sK):6#L&Qo-M>iG4NrG+=OT(ICQN!9N +Sc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe&#h;&(ero!e8roX4Drp'LOrp]pWrq-3_rqHEf +qtg3frr)`n^]/lbJcC<$JcC<$JcC<$U]:>mqu-Nlrql]krqQKerq??`rpg'Xr9sXOrp'LFro="9rndY/ +rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0 +reUH,LPCA7JVKbNreLK/re^N0repc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s= +rkABJrl+lXrm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\rq??crqQKhrql]m!;ursrVQSZs8N#prVl`o +qu6Hkq#:$epAX^`o)%nTm/H;Lk5OE?i;VU4g]#k)df.VmcMkoa`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qc +T)P;[RJrQPQ2ZsGOoCF@O9(B%!07&N20MuJ\7NW+t; +OT(=?OoCOCQ2[-LRJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nugA]t.i;Vg:k5OZF +m/-8No)A:\pAXgcq#:-hqu6NmrVQSds7cQmrqlZnr;QTmqYp9hp\smco`"FYn,D\QlMfrFj8S!9hYu:/ +f`'=ud/M>iaSs0X_>_1J]Df>>ZMq*-Y5YF"VZ*@iT`1P^Sc5&VQi<9LP5^UCO8b7?NrG%;N;eb4MZ/J3 +M#2t6L4P)1L4P*MLAlu-M#N8.MZ/P5N;eh9NrG.>O8b:@P5^aGQi_FQaSsKad/MJmf`'V(h>uQm!9!k;roX4Frp9ONrpp'\rq??crqQKhrql]mrr)`n\c76\JcC<$ +JcC<$JcC<$U]:>mqu-Nlrql]krqZQgrqHEbrq$3]!V5g\nG_kTm/H5Jk5OH@i;VR3gA]\&e,I_nbl5`` +a8WpS^](nF\Gio8Z2Us+X8]*tVZ*CjU&L\`SGo#WRJrTQQN!-JPQ$aEOoCIAO8+b1NJ`[GN.Hq`N;/D- +NrG+=OT(CAP5^[EPl@!JQi_LSao9N`d/MPof)FD& +h>Z@3jSn<@kl0rJmJcVSo)A:\p&=^bq#:*gqYpBkquHZrrVcWmQ2gj_qu-Nlrql]krqZQgrqHEbrq-3\ +rp]pTrp9XJroX4@ro!e3rn@A&rmUknrlkA`rl>#SrkJHFrj_s8riuI+ri?$trhf[jrh9=`rg`tWrgEbQ +rg*PJ!L&]IPQ$aEOoCIAO8+b1NId%]N.HqJN;/D2Nr4q:O8b7?OoCOCPQ$gGQN!6MRJr]TSc58\U&Lke +VZ*RoXT#F&Z2V01\Gj/?^AbtJa8X3[bl5ugeGe%ugA]q-i;Vg:k5OTDm/HDOnG`"Xo`"O_p\sseq>U6i +qu6NmrVQSds7cQmrqlZnr;QTmqYpZ.-f)F.td/M8gao9?[ +_>_4K]`,G?[JmH1YPtU%WW&doV#I(eTDkA[S,SiTR/WENPl?mGP5^UCOT(=9NqeUBN.Hq=N.Hr_N;/D- +NrG+=OT(CAP5^[EPl@!JQi_LSao9N`d/MPof)FD& +h>Z=5jQ$=%roX4Drp9XOrp]pXrq-3_rqHEerqZQirql]mrr)`n\c76\JcC<$JcC<$JcC<$U]:>mq#13i +rql]krqZQgrq??a!;$i;VU4g&BV&eGdhoc2Poc`W!dS^](tH])K2kl0lHn,DhU +nc&1[p&=[aq#:*gqYpBkr;HQprVcWmQ2gj_q#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4 +rn7;&rm^qorltGcrl+lSrkJHHrjr*U6iqu6NjrVQSds7cQmrqQHk +r;QTmqYpZ.-ec+%sci25hbPoT^_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I.gUALVY +TDkGWSa;l:Rt7&[S$ngNSGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/\,Nu<]`,\F_>_@OaSs?] +cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\XgdqtpZ.-ec+%sci25hbPoT^_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I+i +U7qX^qk3_VrgrnUm$rWrZC?E7TUY29qjd_Y!M5n[TD5)YU&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA +^])(K_u@aVb5T]cci2Alec+;%h#$%/jSn<@lMg/In,DkVoD\F^pAXg`qYpBhr;QZlrga#Ys8N#prVl`l +qu6Hkp\smcp&=R^o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$ +WrAmpV>d:iU]."bT_P/YT(nlCSB.1NRt7&dS*?I?Sc55XTD5)YU&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5 +])KAA^])(K_u@aVb5T]cci2Alec+;%h#$%/jSn9BlKSB7rp9ONrpg!Zrq69arqH" +d/M>ibl5]_`rd:cU].!FTn/ngTqnCZUAL_b +V#."fVYd:jW;`dqX8]4"Xo>O'Z2V'.[JmZ7\Gj/?^AbqI`;[dUaSsE_cMl2iec+2"g&Be+hYuL5jSn<@ +kl0rJmJcVSnc&.Zo`"R`p\sseqYpBhr;QZnrqubSs82fprVQNlqu6Hkq#:$epAX^`oD\:ZnG_kTm/H5J +k5OH@iVqa6h#?"+fDa>"d/M>ibl5]_`rd@hVuEXoWW&stXT#@$YPtg+ZMq92\,No:]`,YE_#D:O`r='Y +bl5oed/MSpfDaJ&h#?10iVqp;k5OTDm/HDOnG_tWoD\C]pAXgcq#:-hqtpF$X8]*tW;ELlVYd4hV"g_aU:-bHTn/ngU%k>YUAL_bV#."fVYd:jW;`dqX8]4"Xo>O'Z2V'. +[JmZ7\Gj/?^AbqI`;[dUaSsE_cMl2iec+2"g&Be+hYuL5jSn<@kQ1&:!:9^Prp]pWrq$-]rq??crqQKh +rqlTjrr)Wk[f:pYJcC<$JcC<$JcC<$RfEBdqu-Nlrql]krqZQg!;?Ngp\sjbo`"I]nc&%Wn,DYPl2KlF +j8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>EsX8]-oWJ[X* +W.CnCW;*@hWr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No:]DfMC^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3 +iVqm:kPj`Fli-APnG_tWoD\C]p&=^bq#:*gqYpBkr;QZlrW)tOs8N#prVl`oqu6Hkq>U0gp\sjbo`"I] +nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUj,YHIr0 +riZ7&riGmqri5amJZ,6?JZ+U-po44l!NN0sX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!Y +bPofdci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQS[s6fpdrqlZn +r;QTmqYp>[f3]6Zi79-Yl:j*Y5YR&XSAjqWq`R%W.CmuW.CoBW;*@hWr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No: +]DfMC^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`FlN-JC!:TpVrpg!Zrq-3_rqHEerqZQi +rql]mrr)`nYlB:SJcC<$JcC<$JcC<$RfEBdp&4mfrqcTh!VuQgp\smco`"FYn,D\Qli-,Ik5OH@iVqd7 +hYu7.f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\Giu:[emK3[/73,ZLY8aY^s$0YcY/&Z1YF% +Zhq-/[JmW6\,No:])K>@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAO +o)A:YpAXgcq>:$cr;6HirW)tOs8N#jrVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$ +df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\,j(J!4Vs9qmHF1qm61*o!*bMWN^rXQa$.fpTah*ZMq3- +[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnW +o_\@]p\t!cqYU3frVQS[s6fpdrq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VU4gA]b(f)F+s +d/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z+mMoY^s$0Yk>9oZMq3-[/RK4[f3c8 +\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Lmf;hUo)A:YpAXgc +q>:$cr;6HirilERs+13$s+13$s+13$s-iu_rqlZnr;6?kq>pHhrqQKerq??arq-3\rp]pTrpB^Mroj@E +roF(bF]_K)8\bio'[t1uk[XklU[dpp% +\,j+Lrjhg8rk/6DqnE'ErkSNNrl"fTrlG)\rlY5brm1SjrmUksrn%/&rnIG/rnm_7roF(ArosFIrpB^Q +rp]pXrq-3_rq??crqQBerqlTjrr)WkQN-CQq#:0hrquZjrqcWhrqHEcrq69_rpp'XrpKdQrp'LHroa:A +ro3q7rndY/rn7;&rmh"srm:YirltGbrlP/\rl+lTrkn`NrkJ?Erk8#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro="> +roX4Erp0ROrpTjUrpg![rq69arqHEerqZQirql]mq#1*hrVqHKrr;usq#13irql]krqZQgrqHEcrq69_ +qsj[SrpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`P!PuSP_>(hF^])%J +^](t3]n*i"]Rd_a]^3?1^&bs^rkSNJpqZmFrkeZPrl"fTrl>#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5 +ro=">roX4Erp0ROrpTjUrpg![rq69arqHEerqZQirql]mq#1*hPQ0kHrr2]krqucmrqcWirqQKerq??a +rq-*XrpTjSrp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrkeZNpqZmDrkSNJ +rk@X1`Opc7J\6ZKm(N;1rkSNJpqZmFrkeZPrl"fTrl>#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro="> +roX4Erp0ROrpTjUrp^$]oDnO_p&=[ap\sseq>U6iqu6NgrVQSrs+13$s+13$s+13$s+134s8N#jr;c`r +r;??drqQKerq??`rposUrpTjSrp0RKroj@Crokl0iGlhg,InG`%Yo`"R`p\ss_qYU3f +rVQSRs5j:[rq66hr:p-fq#:$epAX^`o)%qUn,DbSli-2Kkl0]Cj87d6hYu@1g]#q+f`'G#eGdnqd/2/g +cMl)fbl5fbb5TNXa8X*U`R2W[_h#^V_kP&o`;[aQ`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5#g&Bb* +h>Z:.i;Vd9jo4KCl2L#GmecMQoD\@_p@\L[rqHEeq"jmcqu-EkVuM>JJcC<$JcC<$JcC<$OoP4Uqu$Nm +!W;lmqu6Hkq>U0gp\sjbo`"I]nc&%Wn,D_Rm/H;Lkl0`Djo49=iVVO3h#?(-g&BY'fDa>"eGdqrdJhMi +ci25hc1oN[bO!C0agB-?aFVFUaQ(D,b5TTZbl5ldcMPred/MGle,Ikrec+2"f`'S'g]$%+hu;U6ir8'= +kPj]ElMg,KmJcSRnG_tWoD\C]p&=^bq#:*dqYpBhr;QZirqHGDs82ikrqlZnr;6BjqYps7lTjrVl`lqu6Hkq>U0gp\sjbo`"I]nc&%Wn,D_Rm/H;L +kl0`Djo49=iVVO3h#?(-g&BY'fDa>"eGdqrdJhMici25hc1oN[bO!C0al(6kaFVF)aQ(D,b5TTZbl5ld +cMPred/MGle,Ikrec+2"f`'S'g]$%+hu;U6ir8'=kPj]ElMg,KmJcSRnG_tWoD\C]o`=g]!;HKfrqZHf +rqlTjrr)WkVuM>JJcC<$JcC<$JcC<$MuWeUqY^HnrVl`lqu6Hkq>U0gp\smcp&=R^o)A1YnG_nUmf)MN +l2KoGjo4??j87g7hu;L3h#?(-g&BY'f)F5!eGI_odf.Yed-8l?c@O8lcE5CYcgoH^dJhSke,Ikrec+/! +fDaJ&g]$"-hYuF3i;V^7j8S-=jo4KCl2KuImf)\SnG_tWo)A7[p&=[ap\sseq>U6iqtpU0gp\smcp&=R^o)A1YnG_nUmf)MNl2KoGjo4??j87g7hu;L3h#?(-g&BY'f)F5! +eGI\qdaA-DrmCDcl-Fq+WQp(?Qd4sD!7:>armC_nqpYPormh#!rn%/&rnIG-rndY3ro!e7ro="=roO.C +rosFIrpKdSrp]pWrpp'[rq69arqHEerqZQirqlTjq#1*hMZ;T6rr2]krquZjrqcWirqQKerq??arq$-[ +rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$rmh"tqpYPmrmCDcl-I,iJ^/hlJ^3W.o$IB` +rmL\mrm^qtrmq)#rn7;*rnRM0rnm_5ro*k:roF(?roj@Grp'LNrpTjUrpg!Yrq$-^rq??c!VlEiq#:*g +qYpBhr:p6frhTRFs+13$s+13$s+13$s+p^Srr)fkrVl`lqu6Hkq>U0gp\smcp&=U\nb_eSmJcJOli-2K +kl0`Djo4?:$fqtpU0g +p\smcp&=U\nb_eSmJcJOli-2Kkl0`Djo4?:$fqtpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$ +g&BY$fC.8PeBu`rdt,u3e)o0Kec+1tf_F/!g\]e'hYuI4hu;R5iVqp;jo4EAkl0iGli-8MmJHAOnG_tW +o`"O_pAXgcq#:'iqYL0erqlTjqu-EkT)XBAJcC<$JcC<$JcC<$M#[>Nr;Q]oqu$?grqcNfrqHEcrq6'X +rp]pUrpKdQrp9XLpuqV:roF(uWV:^@OJ_7`ig=cAWptP]$rn[J/qr%A2qrIb< +puq_Brp0RNrpKdSrp]^Srq69arqHEfqtg-!8[Y0ptPf%f@b`-]@_\eWS#qX!8@A)ptP]$rn[J/qr%A2qrIb< +puq_Brp0RNrpKdSrp]^Srq69arqHEfqtgM +lMg#EkPOB?jS7a4i;2C)htu8]h4!/Nh2C+`h>uKiqqpu&pu;23roO.Bqrn%Erp0RMrpKdSrp]pWqssXV +rq69bqtTs_qu$?ip&9OBf)PXHp&4mfq"k!bqtL!\rq-3\qsj[TrpTjSrp9XMrp'LHqrdkl2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$fqtpU0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&Ckl0`Djn7^0j7VEB +iITs=iITteiUZ"'j7VL4jo4E;kl0iGlMKoHm/HDLmf)_Tn,DkVo)&(Yp&=^_q#:*dqYpBhquQcpqYg3g +Q2cF8JcC<$JcC<$JcC<$Jc>cNs6os^r;6BjqYU*fq#:$epA=O^o`"I]o)A1Yn,DhUn,DbPmJcJLli-2H +l1O9;kORbpjalNEjf7G/k5OQ7kl0iDlMg,Hm/HDLmf)_Tn,DkVo)A7[o_\=\pAXg`q#:*dqYpBer9sXH +s+147s6os^r;6BjqYU*fq#:$epA=O^o`"I]o)A1Yn,DhUn,DbPmJcJLli-2IklBu@kkjQ6k(2WhjalNX +jmM73k2u[+o'$);qs+1Hqs==LqsOIQrpTjVrpp'[rq-*\rq??cqtU0dqtgU0dp\smcp&"C\oD\=Unc&%Nn,DbPmJH8LlhfuKn,)VLnc&+YoDA1Zp&=[ap\Xabq>:$f +qtpU0dp\smcp&"C\oD\=Unc&%Nn,DbPmJH8LlhfuKn,)VLnc&+YoDA1Zp&=[ap\Xabq>:$fqtpjN6o)8Rcqtp0brqZQgq"Od]qt9s\ +qt'gXqsjRQm-gtBJaS*WJaVdjo'c8@rpfmVrq$$Zrq60^qtL*brqZ?crqlTjp&4de!WW1Rs+13$s+13$ +s+13$s+13$s6]jZrqlZhr;6BgqY9mcq"sgbp@\+Xo_%hKo)%s.nG_p.n:C(onG_tKo)&%Uo_%nVpA=U` +q"sm[qYpBer;QZcrmUmus4@;DrqlZhr;6BgqY9mcq"sgbp@\+Xo_.kVoC_\OnU^1on:C([n,`%JrpfRM +qt'^Wp%A=XqtL*bqt]p]rqlKgrr)EeJcG!7_>j3-qu-Np%A%Up\Xabq=XU]qtpU0^p\X[]p&+ISo^DC&nt>Q)nrE;5oDJ4Ko`"OVpA=U]q#:*^qYU0er:U$]rdk+3s1A=.rpp$er:Tsa +qYU*fq"=CYpA=OOo^DC[nq$@_nq$B,o'c2=o`"OVpA=U]q#:*^qYU0er:U$]rqueMs+13$s+13$s+13$ +s+13$s4dSKrpp$br;6B[qYU*cpt,8(p4;pgp9"&Bp\"=\q="1Zqt9m[rV6B.s+13hs7lTarVQNiqsXCY +q>9pfp\3A8JbH):JbGH(lhBoCp%\O^n,!%\p&+L]q#5jEfDi&Sq#9j_qu$?gn+uqWqtSe;^\36PJbFZg +g@t:8rqZ$ZrqlBdp&4[bmJhn?JcC<$JcC<$JcC<$JcC<$g]-X>rr)Nfn,*+\cM<\!JbXfkXn^<>qtfdY +p&+gfm/Fj$JcE^hm/I"_p&+:Urqc?ag%g3oWVD&>Qh]nBkP>#On,)eUrr)3_JcF@%YQ*tgrr)Nfn,*+\ +cM>6MJbXfkJb[XgqtfdYp&+gfm/HDPL&Z`(JcC<$JcC<$JcC<$JcEsoqu5jYq#'^[Jbna0JbjroKDP9< +q#'LWp&;B!JcE1Yqu5jYq#'a\!;h?DK)1&pJbnd1p&"O^m/?VVJcEpnT`=ogl2CDTo)"gNJbjroJbn!p +p&"O^m/?VViW"W3J, +~> %APLeod +EI +379 0 0 122 0 72 cm +BI +/Width 1137 +/Height 366 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(Q +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QWW1ZNJc:6"Jc;;@j8X]1JcGHD +Jc:W-Jc:6"m/DS9QN+l&Jc6>Jc:6"LAlc(r;Wr"JcEIam/G]:Jc1/uJc25> +l2LS[JcCZ.p\smcJc1Q+Jc1/um/?2JJcDnQf`1=;Jc3@^Jc1/u\c(dlJcF^/V>oo]Jc505a>M>Df"JbnO*p&"O^m/?VVJcF0ur;ZZnl2CDTo)""7]_[3UJbl_Lp&"O^ +m/?VVL&]9pqu5jYq#'^[Jbnj3JbjroJbfBCp&"O^m/?VV\Gr`3JcFs6rr29_p&+U^p%n[`f(agkJbXfk +SG<*Zp%nI\rquHeo)8IbJcF=$rr29_p&+U^qYL-drqV-?M>2YsJb\L)rqZ6`q"sX[o)8IbJcF=$!<*#u +rp9UVr:p0^qYp;Apq6BQpjr4Kq#:*^qY9sYr:9g`reUU#s8N#arUp*`qt9gbq18>0pjr3kpk/A@q=XUZ +qss[UrVQT+s/uBQs7--arpp$br;6B[qYU*cpt,9=p4;pgp4;qTp=f96q#:*^qYU-gqt9m[rV6ACs60LX +rpp$br;6B[qYU'gq#'p=pOW%Bp4;q!p@@tBp\"=\q="1Zqt9m[rV6ACs60LXrW)ogrVQNiqsXCYq>9s= +pOW%up4;pgp>,Grp\"=\q="1Zqt9m[rV6ASs4IAHrpp$br;6B[qYU*cpt,8+p4;pgp8[i?p\"=\q="1Z +qt9m[rV6B1s/uBQs8Duprpp$er:TsaqYU*fq"=CYpA=OOo^DDDnq$@_nq$ACo'c2=o`"OVpA=U]q#:*^ +qYU0er:U$]re(7Jrpp$er:TsaqYU*fq"=CYpAOXbp%@eGn+2,$Vt,E0L[t?6p%.YErq5sXqtL!_rqZ6` +qtp9gp&4R_KE(iJo)/Rd!W;lgqtp6eq>U0^p\X[]p$_PAo7?Jdnq$@_o$m7!oC)>Np%A%Up\Xabq=XU] +qtpNp%A%Up\Xabq=XU]qtpU6cqtp<^rVleNs8N#drVl`iqu6Hkq=XOUpAXa^o_n@^oCMYGl1'>oVso9,L[b32o'u;Arq#pWrq5sX +p%\O^rqcEequ$$`rr.ZPrr2Bbrqlcnq>:0frqZ6^p%JCXqt0dWp%%A;JahC_Jae6[eF;hpo()eOq"4RY +p%J(RrqZQiq"ssdo)8ReT`=3Trr2BbrquQgrqcWip%\4Rrq60\qt'LOl1'c&Jae6[U%%F=o()eOq"4RY +p%J(RrqZQiq"ssdo)8Ree,QTNKE(rMo)8Rcqtp0brqZQgq"Od]qt9s\qt'gXqsjRQm-j0+JaS*WJaTT, +o'c8@rpfmVrq$-]rq-3_qtBp]rqQKgq"k!equ$-cqu2QSrr2KerquZjq"k!crqQ9_rq?6^rq-*ZrposV +!:]pUm-fMnS*kjqJaW=$o'c8@rpfmVrq$$Zrq60^qtL*brqZ?crqlTjp&4deN;rnVo)8RcqtgBiq>1*d +rqQ9_rq?6^rq-*ZrposVqs`t@JaUhOJaS*W`U<Kn,)VL +nc&+YoDA1Zp&=[ap\Xabq>:$fqtpU0apAX^`oDA+Xnc&"VnG_nUmf)VQm.K]A +l20]8kP42!jalNEje:f2k4Rp1kl0i>li-8MmJH>NnG_nUnb_nVoD\CWpA=Xaq>:$fqtpl2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$fqtpU0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&EkQ0o2roX4Ap#Po.p#:P]Wo8NfNT'Qiro3_5p#Q,6 +roX">rosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqHAo&BH)p#Q,6roX">rosFI +qs47JrpBUNrp]pUrpg!Yqt0m\rqHt)ht#_#iqqg9jo4H?kl0lHli-8Mmf)\SnG_tTo)&(Yp&=^_q"X^_r;6Hcrji(+rq66h +r:p-fq"sg_p&=R`ncA=Pqsj[TrpTjSrp9XMrp'LHqrdkMlMg#EkPOB?jS7a-i:Z")hM9pU0dp\smco`"I]o)A.Un,D_Rm/H>Ml2KoG +kPOB?jSn0jo4HBkl0iGli-8M +mJcSOnG`"XoD\CZpAXg`q#:*gqtpuKip"]Q$o%NuoJ_6mQJ_5b1rn7;)o%O)tp"]H$qr%A2qrIbMl2KoGkPOB?jSn0U9gr:U$frk/72rW3#tp&4mfqtp9drqQBbrq??`rq$-[rp]gR +rpB^Orp0RJroj@EqrRh'rnI"tqq6t]J_5P+U"K@tn(Rcqp"]H$qr%A2qrIbZ!qq(;eo[NK^J^]\/J^`/uk1&kMrn%&"pt>Z$ +qqV)*ro!e5ro!e7roF(?roX4DrosFJrp9XOqsXORrpg![rq69arqHEerqZHfrqlTjqu-Ek_Z0W7p&4mf +qtpBhrqZQgrqHEcrq69_qsjRPrpB^Orp0RKroj@DroO.?qr.P3ro!e5rndY0rS%A-g\BJ$f_a:he`PA4 +e&'Rbe"Y=ReGIehec+1tf_F/!g\]e'hYuI4hu;R5iVqp;jo4EAkl0iGli-8MmJHAOnG_tWo`"O_pAXgc +q#:*dqYpBhr;6Hirke^7rq66hr;6BjqYp*qqh>1rnm_5ro*k;roO.Aroj@G +rp0RMrpBUOrp]pWrq-3_rq??crqQKgqtgZ$qqV)* +ro!e5ro!e7roF(?roX4DrosFJrp9XOqsXORrpg![rq69arqHEerqZHfrqlTjqu-Eknc,clU&Y,kq#13i +qtpBhrqZQgrqHEcrq69^rpp'Yrp]pUrpKdNrosFGroO.?roJ^/hl_p7Vpo$IB`rmL\mrm^qtrmq)#rn7;*rnRM0rnm_5ro*k:roF(?roj@Grp'LNrpTjU +rpg!Yrq$-^rq??crqQKgrqcWkqu$6fqu4e=rr2]krquZjrqcWirqQKerq??arq$-[rpg!WrpTjSrp'LI +roj@CroF(=qr.P3rndY0rnIG*rn.5$rmh"t!7UkprmLenp!DsLJ^1LFJ^0A&o$@3Zo$IB`rmL\mrm^qt +rmq)#rn7;*rnRM0rnm_5ro*k:roF(?roj@Grp'LNrpTjUrpg!Yrq$-^rq??crqQKgrqcWkqu$6fqu4e= +rr2]krquZjrqcWirqQKerq??arq$-[rpg!WrpTjS!9sUMlMg&Ikl0]CjSn3:iVqa6hYu=0g]#n*f`'J$ +ec+(qe,IepdIklNc[jC%c@O8lcJ?e4cgoH^dJhSke,Ikrec+/!fDaJ&g]$"-hYuF3i;V^7j8S-=jo4KC +l2KuImf)\SnG_tWo)A7[p&=[ap\sseq>U6iqtphdf._pec+/!fDaJ&h#?., +hu;U6j8S0>k5OQCli-8Mmf)\Snc&+Yo`"O_pAXgcq#:*aqt9perm(QCrq66bqu6Ejq#:$epAXaao`"F\ +nc&"Vmf)SPli-)Hk5OKAj8S'8hu;I2h#?"+f`'J$ec+(qdf.VocN2AiqqX4h>Z4/ +g&BY'f)F5!eGI\ndJhJkd/M>ic1oN[bPoY8ajJ4]aaqRWans6[bP9<\c2Q#fd/MAjdJMAke,Insf)F;# +g&Be+h>?+/iVqm:jo4EAkPjfHm/HGPn,DkVo)A:\p&=[ap\sseq=sj[rVlfAs8N#orVZWhqu6Ejq#:$e +pAXaao`"F\nc&"Vmf)SPli-)Hk5OKAj8S'8hu;I2h#?"+f`'J$ec+(qdf.Ynci2;jcMl)`bkoT_b(Rlf +aaqR$ans6[bP9<\c2Q#fd/MAjdJMAke,Insf)F;#g&Be+h>?+/iVqm:jo4EAkPjfHm/HGPn,DkVo)A:\ +p&=[ap\sseq=sj[rVlfjs/uC"s8N#jrVl`iqYp9hp\smco`"FYnG_nUmf)POlMg#Hjo4<;i;VU4h>Z1. +gA]b(ec+(tdf.Vjci25hc2PrdbPoZ`anWpU`r!a@`95'i_jePp_rS_\`;[aQ`q[URao9H^bPo`bc2Q#f +chl)gdf._pec+5#g&Bb*h>Z:.i;Vd9jo4KCl2L#GmecMQoD\C]pAXgcq"X^_r;6Hirm^uIrq66hr:p-f +q#:$epAX^`o)%qUn,DbSli-2Kkl0]Cj87d6hYu@1g]#q+f`'G#eGdnqd/2/gcMl&gbQ5r3rlb;`rlOrU +rl4iSdDUURcGP4NZ,=u-rl"fTqo8EOrlP/^rlb;brltGfrm1JgrmLeprmh##rn7;*rn[S1qr%J6roO.C +rosFJqsO@Nrq$-]rq??crqQ9bqu$?iqu5+Frr2ThrquQfrqQKerq??`rposUrpTjSrp0RKroa@D!TiGB +j87d6hYu@1g]#q+f`'G#eGdnqd/2/gcMl)fbl5fbb5TNXa8X*U`R2VT_h#^V_u@R!`;[aQ`q[URao9H^ +bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:.i;Vd9jo4KCl2L#GmecMQoD\C]pAXgcq"X^_r;6Hirm^uI +rqH?lrVc`nq"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"trmLemqp58erltGd +rlb;`rlOrUrl4iSdDWE0J]!&VbJVWDrl+cSprEBUrlY5`rlkAdrm(Mhqp>>jrmUksrn.5'rnIG.rndP1 +ro=">roj@Grp0ILqsaUVrq-3`rqHEeq"jmcqu-EkqZ!_uWrN(tq#13irql]krqZQgrqHEcrq69_qsj[S +rpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`Pqn`0FrkJHJrkJHHlb*>4 +]n*hK]Rd`8]^3?/^AbqI^\bhG_>D+K_u@UR`W!pWao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3i;Vd9jo4EA +l2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6frn[VRrqQHkr;QTmqYp#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro=">roX4E +rp0ROrpTjUrpg![rq69arqHEerqZQirql]mq#1*hh>dKRq#13irql]krqZQgrqHEcrq69_qsj[SrpKdO +rosFEroF(=!8mn9i;VX5hYu:/g&BS%e,Iemd/M>ic2PlbaSs6Z`W!gT_u@OM_>D%I^])%J^](t3]n*i\ +]Rd_H]\pHh^&,PC_#D+G_#D1I_Z%IP`;[aTa8X3[b5TZbcMPufdf._pf)F>$g]$(/hu;R5j8S0>k5OWE +li->On,DhUnc&1[p&=[ap\sseq>U6iqu6NgrVQTMs8N#mrVl]pqZ6TkrqcWirqQKerq??arq-*XrpTjS +rp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\jrm(MfrlY5]rl>#Wrl"fRrkeQKqnW3GrkSNJrk@X1S@jEc +J\8+tm(N;1rkSNJqnW3Iqni?Mrl"fTrl>#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro=">roX4Erp0RO +rpTjUrpg![rq69arqHEerqZQirql]mq#1*h!<95%XoJD"p&4merqcWirqQBbrq69_rpp'XrpKdQrp'LH +roa:Aro3q8rndY0rn@A&rm^qrrm:YirltGbrlG)Zrl+lTrkn`OrkSNJqnuKirnRM,rmq(urmUknrm(MfrlY5]rl>#Wrl"fRrk\TLrkJ?Drk/-?rjr!;rj_F+J[XUIJ[U-< +h6ud]qmcX9qmud=qn2pArkJHJrk\TOrl"fTrl>#[rlY5brm1SjrmUksrmq)&rnIG/ro!e9roF(ArosFI +rpB^Rrp]pXrq$-^rqHU0dp\sjbo`"F\nG_kTmJcDMkl0cE +jSn0_7L^\b_D]_f>?])0&;\F6nm[Xkl<[]6e) +\,3]7\biu;]DK8?^&GeG_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+hYuI4j8S-=kPj`FlMg2M +n,DhUo)A7[p&=^_q#:*gqYpBbrVlcrs/uC+s8N#jrVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7 +hYu7.f`'J$df.Vmci22gbPoW_`W!gT_Z%@J^](nF]DfD@\Giu:[emK3[/73,ZLY:!Y^s$0Y^s$rYk>9o +ZMq3-[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;K +n,DnWo_\@]p\t!cqYU3frVQTVs8N#jrVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$ +df.Vmci22gbPoW_`W!gT_Z%@J^](nF])]DC]"7mNrjVm8qmHF1qm61*o!*bMYcr\_OKeD_rj)=)rj2L/ +rjDa6rjVm:rjr*@rk/6FqnW3Jrkn`SrlP/_rltGgrmC_nrmq)$rn@A.rnm_6roF(@roj@IrpBUOrpp'\ +qtC$`rqZHfqu$?iqu5aXrr2Thrquclqt^-`rq??`rposTrp9XMroj@DroF(;ro!e4!87J-gA]b(f)F+s +d/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'!Z%9.>Y^s$0YhcPVZ1YF%Zhq-/[JmW6 +\,No:])K>@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAOo)A:YpAXgc +q>:$cr;6HiroX7[rq66hr;QNmq>C'cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$df.Vmci22g +bPoW_`W!gT_Z%@J^](nF]DfD@\Giu:[emK3[/73,ZLY8dY^s$0Yc=r#Z1YF%Zhq-/[JmW6\,No:])K>@ +]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6Hk +rW3#tYlCs-rr2fnrqucmrqcWirqQKerq69_rq$-Zrp]pUrp0RJroa:@ro3q7rndY/rn.5!rmLelrm(Md +rlP/Yrkn`NrkJHFrk&0>rjMg6rj2U0qlp('riZ7&riGmqri5amoVd>>JZ+-u\u>D'ql9OoriH+$riZ7( +qlp()rj2U3rjVm:rk&0CrkJHJrkn`SrlP/_rm(MhrmC_orn.5(rndY3ro*k:roa:Frp0RPrp]pWrq$-] +rq69brqQKgrqcWkrqucoqu5aXrr2fnrqucmrqcWirqQKerq69_rq$-Zrp]pUrp0RJroa:@ro3q7rndY/ +rn.5!rmLelrm(MdrlP/Yrkn`NrkJHFrk&0>rjMg6rj2U0!3lC*ric=(riQ1$poFCopo/hCVl50FLT(*L +ri,dpqlB^triQ1&ric4'riuI/rjDa7rj_s>rk8L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>k +e,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQTVs8N#prVl`oqu6Hkq#L0j +q"Xj_rq69_rq$-Zrp]pUrp0RJroa:@ro3q7rndY/rn.5!rmLelrm(MdrlP/Yrkn`NrkJHFrk&0>rjMg6 +rj2U0qlp('riZ7&riGmqri5amNMqE,JZ,9@po4.jqlB^triQ1&ric4'riuI/rjDa7rj_s>rk8I(cU[+ZPU4K"mTn/o]U#r*KU\LYaV>d@kVuE[mWrB'uY5YX( +Z2V'.[JmZ7\c0;A^])(K_u@[TaSsE_cMl2ieGe%ug&Bh,hu;U6jo4HBl2L&Kmf)_To)A7[o`"R`p\ssb +qYpBerT=.TrVQKkqYp9hp\smco`"I]o)A.Xmf)SPl2KlFjo46_@O`r='Ybl5oed/MPof)FA%h>Z=2iVqsZ+,fDa8"ciMM?rm(Me +rlG)Xrkn`OrkJHGrji$;rjDa2riuI+riZ7%ql9Xorhoamrh]LfqkN;JJYDG(JY@Xgk+Uq3rhK7arh]Uk +rhoapql9XrriZ7(riuI.rjDa7rji$ArkJHKrkn`TrlG)_rm(Mirm^qurn7;,rnm_6roO.BrosFKrpKdT +rpp'[rq-3`rqHEeqtgI(cUZS;CTn/ngTsLHTUAgq_ +V#I4iVZ*LmWV`^pX8]:$YPtg+ZMq92\,Nr;^&GeG_>_@O`r='Ybl5oed/MPof)FA%h>Z=2iVqsZ.-ec+%scN)5kcHcF4rlG)Vrk\TKrk/6@rjVm5riuI+riQ1$ri5sprh]UirhKIeqk3_V +rgrnUm$rWrm$iQqJXbekl(%XArgs"Zpn7V[rhKIgrh]Ukri5suriQ1'riuI/rjVm_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:i +U]."bT_P/YT(nlCS=c:%Rt7'8S*?I?Sc55XTD5)YU&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA^])(K +_u@aVb5T]cci2Alec+;%h#$%/jSn<@lMg/In,DkVoD\F^pAXg`qYpBhquHZrrVcWm[fU6iqu6NjrVQThs8N#mrVl`oqu6Hkq>U0gpAXaao`"C[nG_nUlMg#Hk5OB>i;VU4g&BV& +eGdhoc2Poc`W!dS^](tH])K2roj@HrpTjUrpg![rq69arqQKgrqcWkrquZlqu6Bjrr2]krqucmrqcWi +rqQKdrq69_rpg!WrpTjOroj@Dro3q8rndY-rn%/!rm:YhrlY;\!QE%W_u@FM^Ab_C\,N`5Z2Us+X8]-u +W;`RkUAgeaT`1P^SGnuVRJrTQQi<kl0lHn,DhUnc&1[ +p&=[aq#:*gqYpBkr;6HirqQNmrqQHkr;QTmqYpro!e4rn7;& +rm^qorltGcrl+lSrkJHHrjr*roj@HrpTjUrpg![rq69arqQKgrqcWkrqlcpr;HNl\c95?rr2]krqucmrqZQg +rqHEbrq-3\rp]pTrp9XJroX4?ro!e3rnIG'rmUknrltGarl4rRrkJHFrjVm7rj)O,ri?$trh]Uirh9=` +rg`tWrg<\Org*PJrfd>EqiUl=rfI,?rf6l8nr*R,JW#);JW%X.m#:q'qi:Z;rf@&?rfR2Crfd>Grg*PM +rg<\Srgj%\rh9=drh]UnriH+&rj)O2rjVm>rkABJrl4rZrltGhrm^qurnIG.ro!e9roX4Drp9XPrp]pX +rq$-^rqHEerqZQjrquZlqu6Bjrr2]krqucmrqZQgrqHEbrq-3\rp]pTrp9XJroX4?ro!e3rnIG'rmUkn +rltGarl4rRrkJHFrjVm7rj)O,ri?$trh]Uirh9=`rg`tWrg<\O!1!YOQN!-JPQ$aBOoCF@OT(=?Nr+h, +N.HnnMh-ePMsQE%NVeb8OT(=?OT(CAP5^[EPl@!JQi_IRao9Qad/MPof)FG'h>Z@3j8S3?kl0rJmf)_To)A7[p&=^bq#:*gqu6NjrVQThs8N#mrVl`oqu6Ej +q#:$ep&=U_o)A.Xmf)SPkl0`Dj8S!9h>Z1.f)F.td/M;hao99[_#_BgrkJHFrjVm7rj)O,ri?$trh]Ui +rh9=`rg`tWrg<\Org*PJrfd>EqiUl=rfI,?rf6l8nr/-Xk)4eKJW&QHm#:q'qi:Z;rf@&?rfR2Crfd>G +rg*PMrg<\Srgj%\rh9=drh]UnriH+&rj)O2rjVm>rkABJrl4rZrltGhrm^qurnIG.ro!e9roX4Drp9XP +rp]pXrq$-^rqHEerqZQjrquZlqu6Bjrr2]krqucmrqZQgrqHEb!;$d:iU&L\`SGo#WR/WHOQN!-JPQ$aBOoCF@OT(=? +Nr+h,N1#TTMh-ejMsQE%NVeb8OT(=?OT(CAP5^[EPl@!JQi_IRao9Qad/MPof)FG'h>Z@3j8S3?kl0rJmf)_To)A7[p&=^bq#:*gqu6KnrVZWkrji'>s8N#p +rVl`oqu6Hkq#:$epAX^`o)%nTm/H;Lk5OE?i;VU4g]#k)df.VmcMkoa`W!^Q^AbbD\Gif5Yl:g)WW&do +U]-qcT)P;[RJrQPQ2ZsGOoCF@OT(:>NW+n9Mu/D2M>i>.L[g+ML4P)1L9u^7L]3,/M>N20MuJ\7NW+t; +OT(=?OoCOCQ2[-LRJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nugA]t.i;Vg:k5OZF +m/-8No)A:\pAXgcq#:-hqu6NmrVQThs8N#prVl`oqu6Hkq#:$epAX^`o)%nTm/H;Lk5OE?i;VU4g]#k) +df.VmcMkoa`W!^Q^AbbD\Gif5Yl:g)WW&doU]-qcT)P;[RJrQPQ2ZsGOT:FCO,s:%rf6u;rf$i7qhkB0 +reUH,JVKtTJVJ`1reLK/re^N0repc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s= +rkABJrl+lXrm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\rq??crqQKhrql]mrr)`nq#C?mqu-Nlrql]k +rqQKerq??`rposTrp9XLroX4?ro!e4rnIG)rmLemrm(Marl+lQ!58KJ^AbbD\Gif5Yl:g)WW&doU]-qc +T)P;[RJrQPQ2ZsGOoCF@OT(:>NW+n9Mu/D2M>i>.LOk33L4P)1LN20MuJ\7NW+t;OT(=? +OoCOCQ2[-LRJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nugA]t.i;Vg:k5OZFm/-8N +o)A:\pAXgcq#:-hqu6NmrVQThs8N#prVl`oqu6Hkq#:$epAX[ancA=PqsXONrp'LFro="9rndY/rn.4u +rm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH, +MM?\:JVKYKreLK/re^N0repc7rf-o;rfI,?rfR2Crg!JLrgEbVrh'1_rhKIiri,n"rilC-rj_s=rkABJ +rl+lXrm(MirmLeurn@A.ro!e:roX4Frp9ONrpp'\rq??crqQKhrqc]n!W;lprVQT)s1JC2rqlZnr;QQi +q>U-fpAX^`nc&%Wn,DVOkl0`Dir7j7h>Z%*ec*tqci2)da8WpS^](nF[f3W4YPtX&W;`XmT`1P^Sc5#U +Q2[!HOT(=?NrFt9MZ/G/L&Qc)K):,lJF7oiG4NrG+=OT(ICQN!9N +Sc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^bq>:$c +r;QZirqlZnr;QQiq>U-fpAX^`nc&%Wn,DVOkl0`Dir7j7h>Z%*ec*tqci2)da8WpS^](nF[f3W4YPtX& +W;`XmT`1P^Sc5#UQ2[!HOT(=?NrFt9M?&G5Lktq^re19&qgnEjJUaACJU`?&rdaZlrdjruqh4s&reUQ1 +repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TSrlb;ermC_prn%/*ro!e8roX4Drp'LO +rp]pWrq-3_rqHEfqtg3frr)Wkqu-NlrqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2rn%/"rmC_krlY5\ +rk\TKrk&6>!OfH9Zi70-XT#0tV>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=PEJ(/t!It<*s +J+A-hJbt&rK`6])M#N81MuJb9O8b7?PQ$mIR/WZUTDkM_V>dFmXT#F&Zi7E4]`,YE_>_LSbPoiedJhYp +fDaV*i;Va8k5OTDlMg8OnG_tWo`"O_p\t!cqYU3irV6BhrVl`oqYU*fp\smco`"@\n,`%JrpTjOroj@D +ro3q7rn[S*rmh"qrm1Sdrl>#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9reg]2qh>$& +rdt#uomhgIJU`6#Sq$<]rdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6E +rk\TSrlb;ermC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_rqHEfrV?QkqYU3irVQT/s1eU5rqlZnr;QTm +qYpi5.K`6W'Jc:3!J,XooIK"WhHiA?]H%C6lH%C7MH2`-eHi&3iIJ\KmJ,XutJc:<$ +K`6])M>iD3MuJe:OoCRDQii5.KE-W*K7j/SrdautrdO`mrd=Kf +rd'-@Uj7N:KR*QCqg83frdFZmrdXotrdk'$re19)re^W3repc:rfR2Drg3VPrg`t\rhKIhri?%$riuI3 +rjr*Crkn`UrlY5drmLerrn@A,ro!e9roX4Drp9XPrp]pYrq69arqQKgrqcWkrqu?crqucmrqcWirqQKd +rq-3]rp]pTrp9XJroX4?ro!e3rn@A%rmLelrlY5\rkn`Lrjr*i5.K`6W'Jc:3!J,XooIK"WhHiA>BH.R=mH%C7gH2`-eHi&3iIJ\KmJ,XutJc:<$K`6]) +M>iD3MuJe:OoCRDQi#UrkABCrjVm3riZ7$rh]Uhrh07\rgEbPrfd>Drf@&:reg]3re:?)re(3$rdautrdO`mrd=Kfrd'HI +JU)flSpC<]qg83frdFZmrdXotrdk'$re19)re^W3repc:rfR2Drg3VPrg`t\rhKIhri?%$riuI3rjr*C +rkn`UrlY5drmLerrn@A,ro!e9roX4Drp9XPrp]pYrq69arqQKg!;Z`mqYpBkr;6HlrkJKMs8N#mrVl`o +qu6Hkq#:$eo`"F\nG_nUm/H>MkPjQAi;VU4g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniR +Pl?gEO8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpdG5HFPFFeObFFeP@FT-F^G5c^_GlE!fHN&9j +I/\QnIf=irJGt3#L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'("Z2V01\c0AC_Z%ORbl5oedJhetgA]t. +i;Vg:kPjfHmJcSRnG`%Yo`"Uaq>U6iqu6NmrV6MkPjQAi;VU4 +g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniRPl?gEO8b+;MZ/A0K`6W'JGt#uIK=nHrdFcn +rd4Wjrd"Bcrce?bqfRI3Ui_00JTUm6rc\9bqfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJ +rg`tZrh07fri,n"riuI1rji$CrkeZRrlkAermC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]m +rr)Wirr)iorql]krqQKerq-3\rp]pUrp9XMroa:Aro!e4rnIG)rmC_krlkA\rkeZLrji$:rilI+!NrU) +WrAmpT`1P^SGniRPl?gEO8b+;MZ/A0K`6W'JGt&tIf=cpI/\KlHN&3eGlDpdG5HE5FOtVcFFePZFT-F^ +G5c^_GlE!fHN&9jI/\QnIf=irJGt3#L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'("Z2V01\c0AC_Z%OR +bl5oedJhetgA]t.i;Vg:kPjfHmJcSRnG`%Yo`"Uaq>U6iqu6NmrV6rp0RHroF(:rndY/rn.4trm1Sfrl+lRrkJHCrjMg2riZ7#rhf[frgs+Zrg*PJrfR2@rf$i6reCE* +re(3#rdXorrdFcnrd4Wjrd"Bcrce?bqfRd0rU]-nbS,ScRPl?dDNW+k8L&Q`%JGt#sI/\EjGlDmcFT-@YErL(RE;jeT +E;OSGDLl\VDLl]:DYnAOE;jeNE;jkSErL.ZFT-I_GQ)meI/\QkJGt3#L&R#0NrG.>Pl@$KS,T&ZUAh"g +Xo>R(ZMqH7^&GhH`r=*ZcMl5jec+5#hu;U6j8S9Al2L&Kn,DkVoD\F^p\sseqYpB_r;QTmqYp9hpAXaa +oD\=[n,D\QlMg#Hj8S$:hu;:-ec*tqcMkuc`r0rU]-nbS,ScRPl?dDNW+k8L&Q`% +JGt#sI/\EjGQ;mfG'rfmDKrgWnZrhBCgriQ1(rj)O7rk8Pl@$KS,T&ZUAh"gXo>R(ZMqH7^&GhH +`r=*ZcMl5jec+5#hu;U6j8S9Al2L&Kn,DkVoD\F^p\sseqYpB_r;QTmqYp9hpAXaaoD\=[n,DYRl2g28 +roj@Aro*k6rn.5#rmC_jrlY5[rkSNHrjr*7ric='rh]Uhrh'1Zrg3VKrfI,=repc0re()urdOiord"Kf +rc\9_rc@sWrc.^PrbqdTqeqI3JSp$VTl0aGrc%jTpi-4Pqf;[WrcJ-_rce?erd=]nqgeZure:?0rf6u> +rfmDKrgWnZrhBCgriQ1(rj)O7rk8U-fpAXaao)A.Xmf)MNkl0`DiVq^5g]#b&df.Slao9_.I\c0#9 +YPtU%W;`OjT)P5YQ2[!HO8b+;M#N,-Jc:/uIK"QlGlDpdFT-@\ErL%WDu4GOD>S/HC[5_dC4U,NC9_OQ +C\V`FD>S5MDuO_TErL.ZFT-L`H2`-hIK"`qJc:B&M#NA4O8b=AQ2[9PTDkSaW;`jsYPts/\c0;A_>_FQ +ao9Wcdf.erg]$(/iVr!=kl0lHmf)_To)A=]pAXgcq>U6]qu6Hkq>U-fpAXaao)A.Xmf)MNkl0`DiVq^5 +g]#b&df.Slao9_.I\c0#9YPtU%W;`OjT)P5YQ2[!HO8b+;M#N,-Jc:/uIK"QlGlDpdFT-=]EWL3$ +rc%jTqelCMqeZ.FJSLckJSKaNrbDFJph]qHqelCOrc%jWrcA'\rce?erd+QlrdXoure:?-rf$i;rf[8G +rgWnZrhBCjri?%%rjDa9rk8&hYuL5k5OTD +lMg5NnG`"Xp&=[ap\t!fqXXO_qYpnANC]8)GC&Vf4BDuNAAV"EDAV"F1Ac$*1BDZBAC&;ZEC]8/LD>S5ME;jkV +F8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@&[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTD +mJcSRnG`(Zp&=^bq>U6iq=sgcq>U0gq>U-fpAX^`nG_kTmJc>Kk5OE?i;VO2g&BG!ci22g`rN;eS2KDpB"If=]nH2_scFT-:ZE;jbUD?4Wmrb_XNrbMLJqe?%Clt?<0 +JRu&sJRspSqe#V9qe,e>rb;7ErbMLLrb_OMrc%jVrcA']rd"KirdOirre(3)rf$i:rfI,GrgWnZrhBCi +ri?%&rjDa9rkJHMrl4r^rm:Ymrn7;+ro!e9roX4DrpB^Rrp]pZrq69brqZQirqZ?crqZQgrqZQfrq??` +rp]pTrpB^KroX4?ro!e2rn7;!rm1Sgrl4rSrkJHCrjDa0ri?$qrh9Cb!M?"`Rf8ZQOT(:>N;eS2KDpB" +If=]nH2_scFT-:ZE;jeTDZ4MPD#S5LCAV`EB^BC2Aq=ORAV"EDA_gqpB(BU3B`;`CCAr#JD#S;KDZ4VS +EW1%YFoH[cHiAKnJ,Y*"LAm/2NrG.>Qirf$i2re(3"rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2 +raqI-JRsCDWb)'>nn7i5rb;7ErbMLLrb_OMrc%jVrcA']rd"KirdOirre(3)rf$i:rfI,GrgWnZrhBCi +ri?%&rjDa9rkJHMrl4r^rm:Ymrn7;+ro!e9roX4DrpB^Rrp]pZrq-9c!Vc?fq>:$cr;QZlrlG,Ys8N#s +rVl`oqu6Hkq#:$eo`"FYnG_hSlMfoEj8Rs8g]#h(e,I_nbPoQ]_#D"G\c/o6Y5YL$U]-qcSc4rSPQ$XB +N;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*st@"D^:@"D^m@.dt*@fBm7AH$0>BDuWE +CAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$mISc5;]U].=nYPtj,\c0;A_#DCRbPolfe,Itug]$+0 +ir8'=lMg/InG`%Yo`"URq>9pco`"FYnG_hSlMfoEj8Rs8g]#h(e,I_nbPoQ]_#D"G\c/o6Y5YL$U]-qc +Sc4rSPQ$XBN;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqlHB)uXXqdob;qd]V7nmR)WUgSa]JRJ.ZqdTP7 +qdf\;rb)4ErbDFLrbqdTrc8!ZrcS3erdFcrre(3*rf$i;rfd>Irgj%]rhKInric=,rji$ArkSNRrlb;f +rmUkurnIG0ro3q=rp'LLqsaUVrq-3an+lkTrq-3\qsaUPrp'LEro="8rnIG(rmUknrlb;]rkSNGrji$6 +riZ7$rhKIcrga%T!LB&NPQ$XBN;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*rY@+Se; +@"D_2@.dt*@fBm7AH$0>BDuWECAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$mISc5;]U].=nYPtj, +\c0;A_#DCRbPolfe,Itug]$+0ir8'=lMg/InG`%Yo`"URq>9pco`"FYnG_hSlMflFirS3#rnm_0rn%.u +rm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[rc%jSrb_XLrb2:Dqdob; +qd]V7nmRD`JRF%:RpbntqdTP7qdf\;rb)4ErbDFLrbqdTrc8!ZrcS3erdFcrre(3*rf$i;rfd>Irgj%] +rhKInric=,rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUV!;$U6iqu6NmrVQT8s2b6> +rqlZnr;QTmq>U0gp\sd`o)A+WmJcDMkl0ZBiVq^5f`'G#dJhAhaSs-W^Ab_C[JmB/WrApqT`1J\R/W9J +O8b+;LAli)J,XfoGlDmcErL%WDZ4GNCAqoGB)ZB@AH$'8@K'[3?hIar?2\#Z>_-.2>f0h>?1M>$?i+71 +@JaO5AH$0>B)ZKCC&VoIDZ4VSErL7]GlE'hJ,Y*"LAm/2O8b=AR/WWTT`1kgX8]=%[Jm`9^Ac(MaSsE_ +dJh\qf`'b,iVqp;kl0lHmJcSRnc&.Tp\=RZp\sd`o)A+WmJcDMkl0ZBiVq^5f`'G#dJhAhaSs-W^Ab_C +[JmB/WrApqT`1J\R/W9JO8b+;LAli)J,XfoGlDmcErL%WDZ4GNCAqoGB)Z?AA-$4OraPb5ra>V1oj72p +JR#EaJR":Aoj.Q'oj7W)qdBD3qdTP8ral(@rb2:FrbMLNrc%jWrc\9crd4Wore(3)rf$i;rf[8Jrg`t\ +rhoarric=/rji$Brl"fWrlkAhrmh##rndY5roF(Brp'LMrpTjVrq#pZq"a^Zrq$-[rpTjRrp'LHroF(; +rndY,rmh"qrlkA_rl"fMrjr*:ric=$rhoagrg`tT!0RAGP5^OAN;eS2KDpB"HiA9hG5cO]E;jbSC]8)J +B`;WCAc?6>@f'U5@/F=(?LhBQ>iT(?>_-/9>kMCn?N+=/@/aU3@fBp;Ac?<@B`;`FC]85NE;jnWG5cac +HiANoKDpW)N;en;P5^jJSGo2\VuEarYPts/\c0>B`;[jWbl6#hec+5#hYuL5jSnBBlMg2Mn,DkVoD&(T +q=s^`oD\=[n,D_RlMg#Hj8e->iSjdmrn.5#rmC_hrlG)WrkABCrjDa/ri5sqrh07\rg<\Jrf@&;reCE) +rdXoorcnEcrc8!Wrbh^NrbDFGrau.@rac";qdKJ3qd9#&nm.PdJR!b2Wa,4&nm;<&qdBD3qdTP8ral(@ +rb2:FrbMLNrc%jWrc\9crd4Wore(3)rf$i;rf[8Jrg`t\rhoarric=/rji$Brl"fWrlkAhrmh##rndY5 +roF(Brp'LMrpTjV!:p6_oD\L`q#:*gqu6NjrVlf;s3(HArqlZnr;QTmqYp9hp\smcoD\:Zn,DYPl2KlF +iVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/WP21u=b0_,=b0_n=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtY +GQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L([f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#Jn,DkVoDA4[ +pA"CZpAXaaoD\:Zn,DYPl2KlFiVqa6h#>n(df.SlaSs-W_#CtF[f3Q2XT#-sUAg__R/W_4ra,J-r`o"uoicoLYZZN[OBM-Xoiq;ura#D-ra>_4 +ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMgrosFJrpTjVrq$$[rq?-]qtC$^rq$-ZrpTjProsFFro*k6rnRM(rmLelrlG)WrkSNFrjMg2 +riH*srhBC_rg<\K!07/AO8b(:M#Mu)J,XipGQ)^`E;jeTD#S2KBDuNBAG]g7?iFI4?iFC/?2e+">P20N +=lWY9=b0`3=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtYGQ*!hIf=otM#N>3O8b@BR/WZU +UAh(iXT#L([f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#Jn,DkVoDA4[pA"CZpAXaaoD\:Zn,DYPl2KlF +i;ha9hr"Fgrmq(srm1Sbrl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFF +rau.?qdKJ2ra>_4ra,J-r`o"uoidYaJQ[P,W`emroiq;ura#D-ra>_4ra>_6rac">rb)4FrbVRPrc%jY +rce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMgrosFJrpTjV!:p6_ +oD\I_p\sseqYpBkr;QZlrlb>bs8N#prVQKkqYp6gpAX^`nc&"VmJc>Kk5OE?i;VO2f`':tci2/f_u@IN +^&GDn2IB)Z??@K'[6?i+..>l.\'=Sl2!lJ%.?iFI4@K'g:Ac??AD>nJQE;k"ZH2`6kJGt6$L]3A6P5^aGSc5>^ +V#ILqZ2V-0^&GhH_u@mZcMl5jf`'Y)i;Vd9k5OTDmJcSRnb_qWp%\7Xp&=R^nc&"VmJc>Kk5OE?i;VO2 +f`':tci2/f_u@IN^&GDn2IB)Z??@K'[6?i++/ +>QJ)7qcWo#qcEbtk#Ht3YZ-0QOAtdNoi:lir`Au!r`T,'ra#M1ra>_6rac">rb)4IrbqdTrcS3crdFcr +re19+rf@&Arg!JRrh9=eriQ1)rj;[ +BDucIDuO_TFoH[cIK"crK`6c+O8b=AQ2[?RU&LkeXo>U)[/Rc<_#D7Nbl5oedJhetg]$.1j8S3?kl0uK +n,DkSoD\FXpA=O^oD\:Zn,D_Rkl0`Dj8Rs:g]?3crn.4trm1Sfrkn`Nrk8<'r`K&!r`8/]Q;iE7JQ/XKk#M:Zr`Au!r`T,' +ra#M1ra>_6rac">rb)4IrbqdTrcS3crdFcrre19+rf@&Arg!JRrh9=eriQ1)rj;[bs7lQlqu6Hkq>U-fp&=R^nG_kTm/H/HjSn-; +h>Z+,ec*qpbl5]__>_.I\c/i4XT#0tU&LV^RJrBKNrFq8K`6Q%If=TkFoHC[DZ4GNB`;QA@fBd7?iF=0 +>PhS&=T2D$Q.q-?iFI4A,^$_OTbPolfec+8$h>ZC4jSn<@m/HGPnG_tWoCDSR +oD\:ZnG_kTm/H/HjSn-;h>Z+,ec*qpbl5]__>_.I\c/i4XT#0tU&LV^RJrBKNrFq8K`6Q%If=TkFoHC[ +DZ4GNB`;QA@fBd7?iF=0>PhP'=92N+r`B)"pf7;mmo0!ZJPiXKJPhM+pepufoi(`eqc3Vrr`Au!r`T5) +ra#M1ra>_8rac"ArbDFMrc.p[rcnEkrdk'%reg]8rf[8Krgj%^ri#gtrilC4rk8lIt)=oMP&=8l7q=&X;u9Pk^W;`mt +Yl;34^&GkIaSsB^d/MSpg&Bh,iVqp;k5O`Hmf)_Tnc&.Np&=R^nc&%Wmf)SPk5OH@iVqX5f`BdZrmh"p +rlkA_rk\TIrji$4riH*trh9=^rgEbKrf6u8re19%rdOikrcS3[rbh^Nrb2:AraPk7ra5Y0r`f8&r`K/$ +r`8eor`&>bpemDTJPgtqW_rOhmo0*_qc3Vrr`Au!r`T5)ra#M1ra>_8rac"ArbDFMrc.p[rcnEkrdk'% +reg]8rf[8Krgj%^ri#gtrilC4rk8Q.h*=oMM%sDR:Ou;m:OuX8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&Ljo49=hu;@/fDa7ucMkrb`;[ON])K,: +Y5YF"U]-nbRf8TOO8b%9LAl`&IK"QlF8g1YDuOMNBDuKA@/aO4?N+1.>5h\(=8l5#<<6*"qc!Jlpeh#e +JPVY/JPUhmqbR)cpegodr_rerr`9#"r`T5(r`fA.ra5Y4ral(BrbDFNrc.pYrd+Qkrdb!&repc:rg!JO +rh'1bri#h!rjDa:rkJHNrlP/brmUkurn@A/ro3q=rp0RNrpKdSrpoXOrpg!VrpK[LroO.=rnm_/rn%.u +rm(Mbrl"fNrjr*:riZ7"rhKIbrgNhOrf@&9re:E'!J#_"IK"QlF8g1YDuOMNBDuKA@/aO4?N+1.>5h\( +=8l8"5hb*?N+=2@/aa:B`;cGDuObUF8gLb +I/\ZqLAm,1O8bFDRf8rYU].4kY5Yj.])KJD`;[mXcMl;lfDaM'hu;X7jo4TFmJcPQn,DnKoD\:Zn,DbP +li-#Fir7j7g&T_*f@U#Nrm(Mbrl"fNrjr*:riZ7"rhKIbrgNhOrf@&9reCE&rdFclrcA'YrbqdNrb)4A +ra>_4ra,S.r`];(r`B)"r`/hor_iMgr_S/Ar_J)@JPVP,qb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_: +rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.Frp9^S +!UoLVnc&1[pAXjdq>U6fr;QZlrmCbks8N#srVl`oqu6Hkq#:$eo`"F\nG_hSlMg#Hir7m8hYu+*e,I\m +ao96X^](eC[/R9.W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA@fBa6?N+1.=oMJ$g +;#X8i;#X8f:@_-O9S#lg9S#mK9_D-Q:B")h:]!uf;>X8j<;onsQ.t.?iFO6AH$9AC]8;PErL:^ +I/\ZqK`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lHm/HGMnG)SRnG_nUmf)SP +l2KoGir7m8hYu+*e,I\mao96X^](eC[/R9.W;`UlTDk5WPl?aCM#N),JGsrqGQ)X^E;j\QB`;QA@fBa6 +?N+1.=oMJ$qb?`Yr_WSiqb[8hqbmDmr`/qur`T5) +ra,S2raPk;rb2:Hrc%jWrce?hrdb!$reUQ7rfd>Krh'1bri#h"rj;[8rkJHNrlP/crmUktrndY4ro3q@ +rp'LLrpK[Qq""FRrpTjSrp9XKroj@@ro!e4rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7re19$ +!.4fpI/\?hErL%WD#S,IAH$';?iFC2>Q.e)X2h:]=2i:]!oX9n?!l9S#lg9[lc/:%_9\ +;#X8f;#X>h;Z9YpKrh'1bri#h"rj;[8rkJHNrlP/crmUktrndY4ro3q@rosLN!U]:RnG`%Yo`"Uaq>U6iqu6NmrVQTA +s3^lGrqlZnr;QTmq>U0gp\sd`o)A+Wm/H8Kk5O<Z1.eGdhoc2P]]_>_.I[JmH1Xo>-qT`1J\Pl?dD +N;eM0Jc:,tGQ)^`DuOSPB`;TB@K'X5?2e"+=T2D$<;oep;>sDh:]=,d:&[iZ9B]!!8qBTc8ukS]9D_E^ +:&@]b:]!uf;>sMn<;otu=T2J&?2e41@K'j;B`;iIDuOhWGQ*'jJc:?%N;eqU)[Jml= +_>_FQc2Q,ieGe5%hYuI4k5OQClMg2Mmf)\Mnb_eSmJcDMkl0`Di;VR3g]#_%d/M;h`W!^Q^&GG=Z2Um) +V#I%dSGncPOT(4k;uTbq=8l>$=oM_+?iFL5Ac?BBD#SAPF8gC_ +If=otK`6r0OT(LDSGo2\V#ILqZ2V01^&GkI`W"-]dJhYpg]$(/i;VmZ1.e,[hrd*Vd:rl+lQrk8<=riuI)rhTOdrg`tPrfI,br_2uXJP(JcJP)(tqb-f[r_<8br_NDfr_`Ynr`&kur`K/&ra#M1raGe; +rb2:IrbqdWrce?jrdk'%rf$iU9jr;6HlrmCbns8N#prVl`oqYp9hp\smco)A.Xmf)MNkPjQAi;VO2g&BG!cMl#d_Z%:K +]Df,8Y5YI#T`1J\RJrlIt,=8l8"<;obo;#X8i:B!ub9`%K^ +9&N;>8:a<_8:a=L8E3;=9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41@K'j;B`;lJE;jqXHiAKnJGtE) +NW,%=RJrcVT`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kPj]Em/-2Fn,D_Om/H5Jk5OH@i;VO2g&BG! +cMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt,=8l8"<;obo;#X8i +:B!rf9`.T]9E%QA8V'F:8:asPoQ.q-?iFL5Ac?BBD>nMR +F8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoiedf.r!h#?72jSn?Akl0rGmJ-/LmJH8Lkl0`D +jSn*:h#?"+df.PkbPoBX^AbbDZMq$+WrA[jSGnrUOT(4i&)IK"QnErg?'rc%jRrb2:BraGe5r`oG, +r`B)"r`&kor_WSir_EGeqb6l[r^u*?JOnflJOk>_h+6Qtqb$i\pe:Z]r_EGgr_WSkr`&ksr`B)'ra#M1 +raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbVrh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e:roa:Erp9OL +q!\4Lqs==GroX4@ro!e2rn7;!!6tVjcMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt,=8l8"<;obo;#X8i:B!ub9`%K^9&N:,8:a<_8?,5@8c)-Z9DD3[:&[oe:]=2i;>sPo +Q.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoiedf.r!h#?72 +jSn?Cl2g28rpKdTrpp'^rqHEerqcWkqu-NndJq_rrr2fnrqucmrqcWgrq??`rpg!Vrp9XJroO.#]rm:Yprn7;,ro!e9roX4Erp'(@rp0RJroX4@ro!e3 +rn7;$rm:Yfrl>#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEa!,qsXE;j\QB`;N@@K'X5>5hY'sAj;#X5h9`@ZW8cD9U7tF.N7Y+$[7`%Xi8,GjS8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fH +E;jtYH2`6kK)UT*NW,+?R/W]VU].7lYPts/]DfVFa8X9]d/MSpg&Bh,i;Vd9k5OWElLO<@li-/Jk5OH@ +i;VR3g&BP$ciD5ibKKn*rkSNFrjDa/ri,mlrgs+Vrf[8?reLK)rdFcjrcJ-YrbVRIraYq9ra5Y.r`K/# +r_i_mr_NMir_EGdr^uiTr^cfSJO]N+JOY2[O%/n7qagTUqb$i]r_/JGsloG5cO]D#S/JB)Z6/JGsloG5cO]D#S/JB)Z6/JGsloG5cL^C]S?grb;@DraGe4r`fA'r`9"tr_WSi +r_EGdr_*5_qapZUqa^ENnjS*tf0k0XJOIdOogSXFr^ZWPr^m)]r_*5ar_EGgr_WSnr`/r!r`fA.raGe< +rb2:Irc8!]rd+Qore:?/rfI,ErgNhZrhf[rrj)O5rkABMrlP/armUkurnIG/ro*k;roa:Frp':Erp'LH +roa:Aro3q6rnIG(rmUkk!6>2^aSs-W^AbYAZMps)VZ*7fRf8TOOT(.:L&QW%HN&*eErKnSC&V`D@K'U4 +>Q._'aKa7"Iaq7.j"D7fGpN8H)3[9)_K_9`@fd:]=2i<;ons +=8lG'?N+C4B)ZKCD#SJSG5cgeJGt9%MZ/_:Q2[6OT`1hfXT#O)\Gj5A`;[mXc2Q2kfDaP(hu;X9joOW, +rp0ROrp]pYrq69brqZQirql]nqu5+FeGoOIqu-NkrqcWirq??`rpp'Wrp9XLroO.=rnm_.rmh"prlkA] +rkSNFrjDa/ri,mlrh'1Urf[8@reCE(rdOiirc8!Vrb;@DraPk6r`fA)r`/qrqb[8er_3;ar_!/]r^d#Y +og\^FogJ48JO=uUJO?n6njN7Aog\pNr^d#[r_!/_r_3;cqb[8jr`/r#r`oG0raPk=rb;@MrcA'^rdOiu +reCE4rf[8Hrh'1cri,n#rjDa;rkSNQrlkAgrmh#$rndY4ro="?roa1Crp'CFroa:Cro=":rndY-rmh"p +rlkA]rkSNFrjDa/ri,mlrh'1Urf[8@reCE(rdOiirc8!Vrb;@DraPk6r`fA)r`/qrqb[8er_3;ar_!/] +r^d#Y!(QZOpdOjDJO?+uJO>)Xr^?EIpdOjFr^ZrYr^m)]r_*5ar_<8dr_rerr`T5*ra5Y6rau.DrbqdW +rc\9irdt-(rf6u@rg*PUrhTOmric=/rk&0Frl4r]rm:Yprn7;-ro!e9roX4Cqs"+Fqs"+CroX4?ro*k5 +rn7;$rm:Ygrl4rQrk&0;ric=#rhKIbrg*PHrf6u4rdt,urc\9]rbhdN!GQ9IB)Z9=?iF:/=oMG#;u9Dj +:B!rd9E%Q_8cD9[8+f@H7J0'"6e"JS6\.VP6h3Y?7J0.L8,c'Y8cD?]9E%Wa:&@cd;uTer=oM\*?iFO6 +B)ZNDDuOhWG5csiK)UN(NrG4@QN!NUV#I@mYPts/]DfVF`r=3]d/MSpg&Bk-i;Vd9k5OQ@l2KuFl2KlF +k5OE?iVq^5g&BP$d/M5h`W=*!rkSNFrjDa/ri,mlrh'1Urf[8@reCE(rdOiirc8!Vrb;@DraPk6r`fA) +r`/qrqb[8er_3;ar_!/]r^d#Yog\^FogFR&JO=uUSjW':pdOjFr^ZrYr^m)]r_*5ar_<8dr_rerr`T5* +ra5Y6rau.DrbqdWrc\9irdt-(rf6u@rg*PUrhTOmric=/rk&0Frl4r]rm:Yprn7;.ro*q>!TiGBlMg/L +n,DnWp&=[aq>U6iqu6Qkrm^tts82cor;QQlq#:$eo`"F\nG_kTli-,Iir7j7h#>n(df.Sla8X!U^](Y? +Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR7+t$) +6@hIS6@hJ:6Jt6.7/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N*NW,(> +Rf8oXU].CpZ2V01^]).Ma8XEae,IqtgA]q-htuI5k5OKAk5OKAk5OKAj8Rs8h#?%,f)F+sci1ua_u@FM +[JmH1Xo>*pTDk;YOoC@>M>i)*IK"KjEW0kTC]7lD@fBa6>Q._'sAj:&[ca8cD9[8,GdS70,hG +r^>I-JO6J*JO55\pd=:5qaCEPpdY6Qr^d#[r_*5br_NMjr_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'* +rf-o>rgNhXrhKIpriuI1rkJHMrl>#armUktrn@A-rnmV5roX4AroX4AroX4Aro="8rnRM,rmq(srm1Sa +rkn`MrjDa1riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbDLE!G#a?@fBa6>Q._'sAj:&[ca8cD9[ +8,GdQ7K,^/6\.S^6@hIS6J"Q^6i0:N7JK@O8,c'Y8cDB^:&[rf;>sJmQ/"/@fBp;C]85NEW14^ +I/\]rM>iM6OoCgKT)PMaXo>U)[Jmr?_u@^Uci2Dmf)FD&h>Z=/j8S3?jo4EAjo4EAjo4<>hu;F1gA]\& +df.Sl`rO!X_o)JgrjDa1riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLDraPk6r`fA'r`/qqr_`Yjr_rgNhXrhKIpriuI1rkJHMrl>#armUktrnRM1!9+%=ir80@lMg5NnG`%Yo`"Uaq>U6f +r;QZEs4%)GrVl`oqYp9hp\sgao)A+WmJcALkPjH>hYu7.eGdhobl5T\_>_+HZi7-,WW&UjSGniROT(1; +LAl]%HN&'dE;j\QB`;K??iF@1=T2A#<;o_n:]=,g9)_E]8H)-Y7efFO7+Xg&6K^[d6(:/k60(>c6J=g( +7/KFP7fGpW8H)3[9)_Tb:]=2i<;oqt=T2V*@/aX7B`;fHE;k"ZHN&EnLAm,1OT(RFSGo5]WW'("Zi7W: +_#D=Pbl5ugeGe,"g]$(/ir8!;jo4??jo4??jo4<>ir7g6g]#k)eGdhobl5T\_>_+HZi7-,WW&UjSGniR +OT(1;LAl]%HN&'dE;j\QB`;K??iF@1=T2A#<;o_n:]=,g9)_E]8H)-Y7efCP6if\Df0eI_JO.RIJO-P, +g-YR%j$W]3qaLKRr^ZrYr^m)]r_EGgr_WSnr`9##ra#M2raPk?rbMLPrcS3drdXp%repc;rg*PRrh9=j +riZ7,rk/6Grl+l\rm:Yorn.5)rndY6ro=">roF(?roF(?ro=";rndY/rn.5"rm:Ygrl+lQrk/6:riZ7" +rh9=]rg*PFrepc1rdXonrcS3ZrbVRI!+Gt<@fBa6?2dt*ir7g6g]#k)eGdhobl5Q]_#_Bg +rk/6:riZ7"rh9=]rg*PFrepc1rdXonrcS3ZrbVRIraPk6ra#M*r`9"tr_WSir_EGbr^m)[r^ZrWpdP0M +f0eI_ZpB7/JO.IFg-XL\qaC_7rb2:Hrc%jZrd+QnreCE1 +rfI,Frg`t]ri,n"rj2U:rkSNPrlkAgrm^r$rnRS5!TE#:kPjcGmJcSRo)A:\p\t!fqYU3irRCl!s8N#p +rVl`oqYp9hp\sganc&"Vli-/Jjo43;h#?"+e,I\mbPo?W^Ab\BYl:^&VZ*4eRJrHMNW+_4K)U/sGlDd` +DZ4DMBDu<&?N+@3BDuZFDZ4_VGQ*!hK)UT*NW,1ARf8rYVZ*XqYl;34^&GkIbPoiedf.kt +gA]q-i;V^7j7q^4j8S!9h>Z+,fDa4tcMl#d_>_1J\c/i4X8]!qTDk8XPl?[AL]2o)I/\BiF8g(VCAqlF +@/aI2>Q.\&;u9Dj:B!rd8cD9[8,c!T7K,^R6hWm^6N09%5g_iJ5d&?N+@3BDuZFDZ4_VGQ*!hK)UT*NW,1ARf8rYVZ*XqYl;34^&GkIbPoiedf.ktgA]q- +i;V^7j7q^4j8S!9h>Z+,fDa4tcMl#d_>_1J\c/i4X8]!qTDk8XPl?[AL]2o)I/\BiF8g(VCAqiG?iaYC +ra#M-r`9"sqb[8er_3;_r^d#Yr^QcRr^?_4ro!e3rn7;&rmLekrlb;W!58KJ^Ab\BYl:^&VZ*4eRJrHMNW+_4K)U/sGlDd`DZ4DMBDu<Q.t.@/ag_XWci2Dmg&Bb,huVcoroO.Crp0RP +rpp'\rqHEfrqcNirr)`ngAfe)rr2oqrqucmrqZQfrq69]rp]pTrosFFro="8rn@A&rm:YgrlG)Srk&0; +riZ7!rhBC\rg!JDreUQ,rdXolrcJ-XrbDFEraPk6r`fA(r_reor_NMfr_!/]qa^WTqaLKPnjCtpr'Gs" +L-U;TbWsH?ogAUEr^HfUr^QlWr^m)^r_Q.b(;uT\o:]=)f9)_EZ8,c!T7K,^G6d\5O5jUae5_22_5gD^h6i0:N7JfRR8,c*Z +9E%Zb:]=5j;uTnu>Q/"/@fC!=CAr/NF8gF`J,Y*"M#NJ7Pl@-NUAh+jY5Yj.]DfVFaSsE_ci2GnfDaP( +h>Z:1htZ1-hu;I2g]#h(eGdenbPoT^^]:tI]=\'MriZ7!rhBC\rg!JDreUQ,rdXolrcJ-XrbDFEraPk6 +r`fA(r_reor_NMfr_!/]qa^WTqaLKPnjCekT0RrmJO$P,c9h1kqaCEPqaUQTr^m)^r_XPQ$UAL&QZ&IK"BgErKtUBDuH@@/aI2=oMJ$;Z9Ml:B!oc9)_E]8,c!T7K,^D6e4U%6@hCV +5_22E5gD^e6iKLN7K,dU8,c*Z9)_K_:B")h;Z9_r=oM_+@/a^9BDufJEW1+[IK"fsL&R,3P5^jJT`1hf +X8]I)\Gj5A`W"$ZcMl8kf)FA%g]$%.hYuF3i;VX5hYu@1g]#n*ec+"rcMkrb`W!UN\c/r7X8\spT`1>X +PQ$UAL&QZ&IK"BgErKtUBDuH@@/aI2=oMJ$;Z9Ml:B!oc9)_E]8,c!T7K,^L6hs*s6@hD45_21g5j:Vt +6LmMC7/KFP7fGpW8cD?]9E%]c;#XAlZ:1hu;R5hu;L3h>Z1.g&BP$df.Pkao99Y^Ab\BZi7$)V>d.eR/Wle5:r`T5$r_i_lr_EGcr_!/]r^ZrWqaLKPmmGJhJO&QeJO"cOk!73YnjECE +qaLKRr^ZrZr_!/_r_EGhr_i_rr`T5+ra>_9rb)4Jrc.p[rdFcsre:?3rf[8Jrh07fri?%)rj_sArl+lZ +rm(Mkrmq)%rnIG.rndY3ro!e5rndY1rnIG*rmh"rrm(Mbrl+lN!4`-@\c/r7X8\spT`1>XPQ$UAL&QZ& +IK"BgErKtUBDuH@@/aI2=oMJ$;Z9Ml:B!oc9)_E]8,c!T7K,^D6d\5m5_21O5dN`$6LmMC7/KFP7fGpW +8cD?]9E%]c;#XAlroj@KrpTjVrq69brqQKirqucoqu5=LfDkjLrr)iorqcWgrq??`rp]pTrp9XIroF(:rnRM* +rmUkkrlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6r`];&r`/qor_EGer_!/]r^d#X +qaLKPog?tjr'Gs"L-U;TbWs-6qa:6Kr^H]Rr^d#[r_!/ar_NMir`/r"r`];.raPk#Urk/6=rilC$ +rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6r`];&r`/qor_EGer_!/]r^d#XqaLKPog8^Ga[1PD\Nk^2 +R6^"'h*V!+qaCEPqaUQUr^m)]r_N6Mj.I7/fXP +7fGsX8cD?]:&[rf;#XJo=T2M'?iFO6Ac?NFDuOhWHiANoK)U`.OT(OETDkYcWW'.$[f3r=_u@aVbl6#h +eGe)!f`'Y)h>#k+h>Z1.f`'M%eGdkpbl5Z^_u@:K[K3hFrilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRF +raPk6r`];&r`/qor_EGer_!/]r^d#XqaLKPog?eeT0RrmJO$P,`BsGhqaCEPqaUQUr^m)]r_hu;@/ec*qpb5TBZ_#CkC +Zi7-,V#I"cRf8HKNW+b5JGsopGQ)R\D#S,I@fBa6>lIh(>q*f`'G#dJhDiaSs-W_#CkCZi7-,V#I"cRf8HKNW+b5JGsop +GQ)R\D#S,I@fBa6>lIh(>q*f`'G#dJhDiaSs-W_#CkCZi7-,V#I"cRf8HKNW+b5JGsopGQ)R\D#S,I@fBa6>Q@h+=',B$ +r_i_lr_lIh(_;rbDFNrcJ-b +rdOj#reg]:rg3VTrhBCnrilC0rkJHMrl>#]rm1Slrn%&"rnRM-rnRD'rn%.trm1Serl>#TrkJH?riuI( +rhBC_rg3VGrepc0rdOilrcJ-XrbDFEra>_2r`T;&!EN8#;uTVm:]=&e9)_B\8,c!W7K,^J6e"GR5h\JS +5_22M5h&-n6iKLQ7K,dU8,c'Y9)_N`:]=2i<;oqt>5hh,@/ad;CAr/NFT-RbIf>'#MZ/_:Qi_;rbDFNrcJ-brdOj#reg]:rg3VTrhBCnrilC0rkJHNrlP/crmUr#!SH'( +hYuL5jSnHDm/HMRo)A=]p\t!fqYpBkrVlfMs5!_SrqlZnqu6Hkq>U*eo`"C[n,DYPkl0WAi;VR3f)F+s +cMki__>_.IZi70-WW&RiS,S]PNrFn7KDp8tGQ)X^D>n5JAH$!9>lIn*lJ.1AH$nSTGQ*!hKDp]+NrG=CRf8uZ +WW'("Zi7W:_#D:Ob5TZbd/MSmf)FA%f`'S$f)F5!d/M;hb5T?Y_#D"GZi70-WW&RiS,S]PNrFn7KDp8t +GQ)X^D>n5JAH$!9>lIn*i/,I/\?hErKqTB`;QA@/aF1=TDG&n5JAH$!9>lIn*dKRqu-NjrqZQgrq-3\rp]pSrosFFro*k5 +rnIG$rm:Ygrkn`Mrjr*5ri?$qrgs+Vrf[8=re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)Y +qaL'Ci'RE/kWj\aJO"cOY!DtPh*V!+qa:?OqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-brdb!& +repc=rg<\Vrhf[rrilC4rk/6HrlG)]rltGirmLeprmq)!rmptqrmC_irlb;^rk\TJrji$4ri?$qrgs+V +rf[8=re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'CpHn.3r]u*#Rm;NiJO')tr^#@, +ogA^IqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-brdb!&repc=rg<\Vrhf[rrilC4rk/6HrlG)] +rltGirmLeprmq)!rmptqrmC_irlb;^rk\TJrji$4ri?$qrgs+Vrf[8=re:?%rd"KbrbqdNrau.=ra#M+ +r`9(t!E)hp;>sAj9`@Z`8cD3V7Iih(6N09%5gDWG5_22A5lO(*6M3_F7JfRR8cD?]9`@ie;>sJm=8lD& +?2e=4B)ZQEDuOkXH2`?nLAm,1P5^jJT)PVdXT#I'\c08@_>_OTb5TZbdJhSne,Iqtec+.se,Iboc2Poc +aSs$T^Ab\BYQ1^)X/l5srgs+Vrf[8=re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;`r^m)YqaL'C +i'RE/JO"cOJO#Jcr^#@,ogA^IqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-brdb!&repc=rg<\V +rhf[rrilC5rkABLrlkAf!7Ltte,J,$hYuL5kPjcGmJcVSoD\C]q#:*gqYpHjrn[V1s8N#prVlZmq#:$e +o`"F\nG_eRl2KiEi;VR3gA]P"cMkuc_Z%7J\,NT1WW&^mS,S`QOoC4:K`6K#GQ)X^DZ4>KAc?-;>lIn* +sVq=T2S) +@K'j;B`;oKErL:^J,Y-#M>iY:QN!BQV#ICnYPu!0]DfVF`r='YbPolfdJhSneGdqreGI\nd/M5fao9KAc?-;>lIn*sVq=T2S)@K'j;B`;oKErL:^J,Y-#M>iY:QN!BQ +V#ICnYPu!0]DfVF`r='YbPolfdJhSneGdqreGI\nd/M5fao9KAc?-;>lIn*%r]u*#c9QqGJO%:Ar^#@,ogA^IqaUQU +r^m)]r_EGgr_`Yqr`K/)raGe;rb2:Krc8!^rdXp#re^W:rg*PQrhTOnric=0rk&0Frl4rYrlb;frmC_n +rm^qrrm^hnrm:YfrlP/ZrkSNGrjMg0!3$!uWW&^mS,S`QOoC4:K`6K#GQ)X^DZ4>KAc?-;>lIn*sVq=T2S)@K'j;B`;oK +ErL:^J,Y-#M>iY:QN!BQV#ICnYPu$1^&GnJb5TZddK.eErn@A-ro!ec=2rr2oqrquclrqQKerq-3[rpTjProj@Bro!e2rn7:trlkA`rkSNFrjMg/ri#gjrgNhNrf@&5rdt,u +rcS3[rb_XIraYq7r`];&r`/qor_EGer^m)[r^ZrWr^HfSpd#Wrk8#W +rk85hn.A,^-?D>nPSFoHjhK)UN( +O8bCCRf9&\W;`t![Jmc:^&H"Ma8X3Xci2>kdf._pdf.Ynd/MAjao9?[`W!RM\c0#9XoPC$W2T]irgNhN +rf@&5rdt,urcS3[rb_XIraYq7r`];&r`/qor_EGer^m)[r^ZrWr^HfSpddOpZ2V63^&GnJ`r=*ZbPoccd/MAjd/MAjd/M>ibPoW_`rd+dQi<0I +NrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm:B!rd8cD9[7fGjU7/0.;6L@*j5a=Tc5_22n5hA@"6iKLQ +7K,dU8,c*Z9`@fd;#XDmd+dQi<0INrF\1J,XfoErKtUC]7lD@K'X5=T2>";uTVm:B!rd8cD9[7fGjU7/0.'6@hE! +5_21O5`\1^6Mj.L7/fXS7fGpW8cDE_:B")h;uThs=T2\,@fBp;C]88OErLFbJ,Y*"NrG4@QidOp +Zi7N7_#D@QbQ,ujd*VdCrn7;-ro="?rosFNrpg!ZrqHEfrqcNirr([Qh>dKQrqucmrqZQgrqHE`rp]pS +rosFEro3q6rn7;#rm1Sdrl+lNrj_s4ri,mlrgs+RrfI,_8 +rbDFLrc.p`rdOiurf$i_2r`B)!r_i_lr_nPSHN&BmK)U`.OT(LDT)PMaWW'+#[/R]:_#D:OaSs?]bko]bchl#ebl5ca +aSs-W_#CtF[JmB/W;r[oUSIg[rfmDDrf$i.rdOimrc.pTrbDFBra>_2r`B)!r_i_lr__8rbDFLrc.p`rdOiu +rf$iU0gpAXX^n,D_Rkl0]CiVq[4f`'D"cMkrb`;[IL[f3K0W;`OjSc4iPO8b%9JGsrqGQ)R\D#S/J +@fBa6>lIe'<;obo:]=&e9)_B\8,c!W7.iq*6N0:.5_21O5_21s5lO(-6N0=K6i0:N7fGpW8H)6\9`@ie +;>sPo[+])KJD_u@[Tao9K_c2Prdc2Prdc2Poc +ao99uUAg__PQ$XBMZ//*I/\?hE;j\QC&VT@?iF=0sAj9`@Z`8H)-Y7fGgK +6gd;46N09%5a"B`5_22k5lO(*6Mj.I7/f[T8,c'Y9)_N`:]=5j<;oqt>lJ+0@fC*@D#SDQGQ*!hJGtH* +NrG7ASc5A_W;`puZi7Q8^]).M`r=*ZbPoccbl5ldbl5ldbPoW_`rlIe'<;o_p:B=6er_3;`r^d#Yr^QlTog@Y(r]u*#`B\u>JO$t8r^#@,qa:6K +r^QlWr^d#\r_3;er_`Yor`9#'ra5Y6rb;@Jrc%j\rd=]qreg]8rfd>PrhBCjriQ1+rjr*Drkn`TrlP/_ +rltGdrltGdrltGcrlP/ZrkeZLrjr*8riQ0u!29LgUAg__PQ$XBMZ//*I/\?hE;j\QC&VT@?iF=0sAj9`@Z`8H)-Y7fGgK6f:<16%M;r5_21O5`@u-6/=m)6i0:N7fGpW8H)6\9`@ie;>sPoc=2rr)iorql]irq??arpg!Vrp9XIroF(:rnIG'rmLeirl>#Srjr*:ric$Lr^QlWr^m)^ +r__#X +rl"fOrk&0=rj)O*rh]UdrgNhJrepc1rdauorcJ-YrbMLGra>_2r`];$r_relr_U)\,O#=^])1N`r=*Wb5TT]b5TH\`r-sT)kRVrgNhJrepc1rdauorcJ-YrbMLGra>_2r`];$r_relr_$Lr^QlWr^m)^r__g`W![P\c/r7Y5Y3qT)P,VOT(1;L&QN"GlDd`DZ4DMAc?*:>lIn*3k!Ji1r^HfU +r^ZrZr_*5ar_NMkr`/r#r`oG1ral(Crbh^VrcnEjre:?/rfI,Hrgs+ariH+'rjMg:rkJHMrl+lVrlG)\ +rlY5^rlG)Zrl+lSrkABBrjMg1riH*orgs+VrfI,;re:?"rcnE`rbh^Mral(:r`oG*r`/qqr_EMf!DH2d +9)_E]8,c!W7JK746MNit5efR85_2225kmY-6MNqI7K,dU8,c*Z9E%Wa:]=8klJ.1Ac?ECDZ4_V +GlE-jL&Qu/OT(XHT)PMaXT#I'[f3i:^]).M`W!mVaSs<\b5TN^aSs6Z`W!dS^Ab\B[f3N1XT"spScPFS +rg<\Hrepc0rdFcjrcA'VrbDFDra>_1r`T5#r_i_kr_3;`r^m)Zr^QlUpd=11pd'Hrnj%akJO"rTpd+%/ +pd>$Lr^QlWr^m)^r_3;er_i_qr`T5*ra>_:rb;@LrcA'`rdFd"reg]:rg<\VrhKIqrj2U7rkSNQ!6YDd +bPoogec+;%hu;[8k5O]Gmf)bUp&=[ap\t'hr;QZNs5i/,I/\?hErKqTB`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M +6fp_^5_21O5_21d5jUi76MNqI7/fXS7fH!Y9E%Wa:]=8k<;p#!>Q/"/AH$nSTGQ*!hKDp`,O8bLF +Sc5>^X8]=%Zi7N7^&GhH_u@XSa8!aTa8X'W_u@IN]`,J@Zi70-X8\glSGnlSO8b"8KDp8tGQ)X^D>n5J +AH#s8>Q.b(<;obo:]=&e9)_E]7fGjU7/0.5630D>JO"iQJO"cOj$;`npd>$Kr^HfUr^m)^r_3;er_i_p +r`K/(ra5Y8rb;@Krc8!^rd=]tre^W8rg3VTrh9=lric=-rji$ArkSNNrl+lWprNHTrl+lSrkSNGrji$7 +ric=%rh9=]rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yj!)*De9`@Z`8cD3Y7K,^M6fp^d5diq/ +5_22)5itE.6iKLQ7K,dU8cDB^9`@ie;Z9Yp=T2P(?iFU8C&VuKErL:^I/\ctM>iS8Qi$Kr^HfUr^m)^r_3;er_i_pr`K/(ra5Y8 +rb;@Krc8!^rd=]tre^W8rg3VTrhBCorj)O4rkJHN!6P>bb5Tceec+8$hu;X7jo4TFmJcVSoD\F^p\t$g +qu6Qkro=%:s8N#srVl`oqYp6gpAX^`nG_hSlMfoEir7j7fDa;!ci2&c`;[ON[f3N1WrA[jS,S]PNW+_4 +Jc:#qG5cL\C]7rF@fB^5>Q.b(;Z9Ml:]=#d9)_B\7fGjU7/K@36I7uK5_21O5aF\%6M3\E6iKLQ7K,dU +8H)3[9E%`d;>sJm=T2M'?N+F5BDu]GEW1.\HiATqL]3;4Q2[9PTDkegXT#O)\c0;A_#D4M`;[aNaSWsU +_Z%@M]`,J@ZMq!*W;`FgRf8TONW+_4Jc:#qG5cL\C]7rF@fB^5>Q.b(;Z9Ml:]=#d9)_B\7fGjU7/K@5 +630D>JO"iQJO"cOj$;Nhr^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JP +rh'1griH+)rji$ArkSNMrl"fTprN?OrkeZMrk/6@rj)O*ri#ggrgNhOrf-o4rdk&qrc\9\rbMLFraPk5 +r`fA(r_i_lr_EMe!D?)b9)_B\7fGjU7/K@36@hD15_21O5d3N36N0@O7/fXS7fGsX8cDB^:]=5j;Z9et +>5hk-@fC$>C]8>QG5cjfJc:H(NW,4BS,T&ZW;`mtZMqE6^&GhH_Z%LQ`V@OO`W!aR_#D"G\c/o6Xo>9u +T)b;\R[X5@rf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$J;^ks0ebJO"cO +rBT:-r^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHN +!6G8`ao9Wce,Ituhu;X7jo4QEmJcVSo`"O_p\t$gqu6Qkro=%:s8N#srVl`oqYp6gp&=O]nG_eRl2KcC +iVq^5fDa7uci1ua_u@CL[/R6-W;`IhRf8QNN;eS2JGsloFoH@ZCAqiE@fB[4=oMM%;Z9Ml:B!oc8cD6Z +7K,^M6fUM[5_21O5_21d5jUi16Mj.L7/fXS8,c*Z9E%]c;#XAl=8lD&?2e=4B)ZQEE;k"ZHN&HoLAm/2 +Pl@-NTDk_eXT#I'\Gj)=]`,eI_u@UL`rJO"iQJO"cOj$;Nhqa:?Nr^HfVr^m)^r_EGhr_i_s +r`];,raPk=rbDFOrcS3drdb!&rf$i@rgNhYrhf[rrilC3rjr*ArkeZPrl"TOrl"fRrkeZIrk&0>rilC& +rhf[ergEbMrf$i2rdauorcS3ZrbDFEraPk4r`T5%r_i_lr_!+6iKLQ7K,gV8cDB^:B")h;Z9bs>5hh,@fC!=CAr2OFoH^dJGt<&N;f(@Rf8rYVZ*[rYl;03])KAA +_Z%IP`;%@O`;[[R_Z%4I]Df>>Yl:^&VZ*1fR/r_DrfmD@reCE&rd+Qdrc%jOrau.=ra#M+r`B(sr_WSh +r_*5^r^ZrVr^?NKj$J;^ks0ebJO"cOrBT:-qa:?Nr^HfVr^m)^r_EGhr_i_sr`];,raPk=rbDFOrcS3d +rdb!&rf$i@rgNhZri#h"rj;[=rk\ZU!QW7[ci2DmfDaY+iVqp;l2L&KnG`"Xp&=^bqYpBkrVQTSs5Z")df.Pk`rL&QT$H2_maDuOJM +B)Z6<>lIn*RJrfWVZ*XqYPu$1])K>=_>_@I`;[[R_Z%CN]DfA?\,NT1X8]!q +T)P,VPQ$L>L&QT$H2_maDuOJMB)Z6<>lIn*JO"iQJO"cOj$;Nh +qa:?Nr^HfVr^m)]r_rgEbWrhf[qric=1rjr*@qn`9L +pr*0LrkeZNrk&0?rjVm1ri?$qrgs+Vrfd>>re:?$rd"KarbqdMrau.lJ12Ac?ECDuOkXH2`_(G\c0);YPtU%VZ*.eQiWSArfd>>re:?$rd"KarbqdM +rau.rgEbXri#h!rj2U;rk\ZT!QN.YcMl8kf)FM)i;Vd9l2L&Kn,DnW +p&=^bqYpBkr;6KRs5k'df.Pk`W!^Q]`,59XT#*rSc4uT +OoC4:K`6K#GQ)[_DuOGLAH$!9>lIk)sSp=T2S)@/a^9B`;rLF8gC_J,Y-#M>iY:Qi_7L_>_=N +_u@OJ_>_%F\Gio8Y5YF"V#Hn`QN!$GM>i2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M +6gR/95_21O5_21O5h\Kf6Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$9ADuOhWGQ**kK`6i-OoC^H +SGo>`WrB1#[JmZ7])KPF_#D1L_Z%IP_YCtH])K5=[Jm?.WW&^mSGniROoC4:K`6K#GQ)[_DuOGLAH$!9 +>lIk)&JO"cOVa0K5qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/) +ra>_9rb2:LrcA'_rdXp#re^W:rg3VSrhTOnriZ7.rjVmi2-J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6gR-j5i=nY5_21O5kI>+ +6Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$9ADuOhWGQ**kK`6i-OoC^HSc5McXo>X*]`,\H`a$>2@JO"cONBmJ/pd4X?qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb)4Jrc.p[rdXp"reUQ8 +rg*PQrhKIjriH++rjMg9rkJHJrk\BHrk\KHrj_s9rj;[+ri,mlrgWnPrfI,8re(3"rcS3\rbh^Jrac"9 +r`oG)r`/qpr_NMer^m)[r^QlUr^?NKnj<4>qETTsJO"cOJO%pSr^#m;qa:?Nr^HfUr^ZrZr_3;dr_`Yp +r`K/)ra>_9rb)4Jrc.p[rdXp"reUQ8rg*PQrhKIjriH++rjMg9rkJHJrk\BHrk\KHrj_s9rj;[+ri,ml +rgWnPrfI,8re(3"rcS3\rbh^Jrac"9r`oG)r`/qpr_NMe!(d2_8cD9[7fGjU7/0.?6Mj'"5cm;&5_21u +5lO(96Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$6@DZ4YTFoHmiKDp]+OT(RFS,T2^VuEds[/RN5 +\Gj8B_#D1F_Z%CK^](bB[f3Z5XT#3uU]-__Pl[/8rfI,8re(3"rcS3\rbh^Jrac"9r`oG)r`/qpr_NMe +r^m)[r^QlUr^?NKnj<4>JO&-YJO"cOJO&imr^#m;qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_9rb)4J +rc.p[rdXp"reUQ8rg*PRrh]UpriuI7rkJNP!Q;qUc2Q,iec+>&hu;X7kl0lHmf)_To`"R`q>U9jr;6KR +s5n/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6,Z$>5_21O5`.i+62O">6N0@L7/f[T8,c*Z9`@cc +;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6Q2[9PUAh%hX8]F([JmZ7^AbnH_"beG_#(kF\,Ni8ZMpp( +VuEFiS,SZOO8aq6KDp?!FoHC[D>n/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=62*Wq5_21O5_22P +5lO(96N0@L7/f[T8,c*Z9`@cc;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6Q2[9PUAh%hX8]F([JmZ7 +^AbnH_"beG_#(kF\,Ni8ZMpp(VuEFiS,SZOO8aq6KDp?!FoHC[D>n/H@fBa6>5hV&<;o_n:B!oe8HDCS +r^d#Xr^?WNlpC\;JO$5#JO"cOUd4oFlpC\=qaCEQr^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiu +reLK6rg!JPrhBChri?%(rjDa7rkABHrkSn/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6%M;W5_21O5_22j5lO(96N0@L7/f[T8,c*Z9`@cc +;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6Q2[Krh9=gri?%'rjDa6qn5hn. +@fBsnPSFT-[eJGt<&O8b@BR/WfYVZ*XqZ2V01[emc;^\GVD^\b_D[f3Z5Z2Ug'VuEChQiN?OPa)0. +reCE'rd=]erc%jRral(lMg5NnG`%Yp&=ddqu6NmrVlfVs5X.Yrr2lqqu6Hkq>U'doD\7Ymf)MNkPjH>hYu7.e,I\m +bPoBX^&GP@Yl:X$UAgV\Pl?aCL&QW%HiA*cE;j\QAc?0 +5_21O5`.i+62O">6MNqI7fGpW8cDB^:&[ug;Z9_r=oMe-@fBsdOp +Yl;'0[emc;^\GVD^\b_D[f3Z5Yl:^&V>d+dR/W[/Rrp'LNrp]pYrq69drqcWkrr)iqj8\0>rr2oqrql]krqZQdrq$-YrpB^Lroa:=rn[S-rmLekrlb;X +rk8$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wp +re192rf[8Jrh'1dri5t$rj;[5rk/6DrkA0BrkABFrk/6=rj;[.ri5snrh'1Wrfd>Are19#rd4WcrbqdO +rac":ra,S+r`/qqr_WSgr_!5^!D#c\8,c!Q6gR/=6%M;$5_21O5bp[E60pr56iKRS8,c'Y9E%Zb;#XAl +$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1rk/Z@3kPjcGmJcVSoD\F^q>U6iqu6Qnro=%=s8N#srVl]nqYp9hp&=R^nG_eRl2KiEi;VO2 +g&BG!cMkuc_>_+H[f3H/W;`LiR/W9JNW+V1J,XfoErKtUC]7lD@K'U4=T2>";>sDk:&[fb8H)*X7JK7: +6N09h5_21O5_21X5lO(H6LmJ<6iKOR8,c'Y9E%Zb;#X>k@^&GYC])K,:Zi7-,WW&^mT)P&TOoC@>K`6K#HiA'bDZ4GNAH$$:?N+(+ +sSp=T2Y+@K'g: +C]88OErLFbJGt6$NW,(>QN!KTU].7lY5Yd,[Jmc:]`,V>^AbhF]DfD@[JmN3Y5YF"V#HtbQN!$GNW+V1 +J,XfoErKtUC]7lD@K'U4=T2>";>sDk:&[cc8-)7Pr^QlUpd=C7r]u*#W^),#JO$"rr^#m;pd>$Lr^ZrY +r_*5br_WSkr`/r"ra,S4rac"DrbqdVrd4Wpre191rfR2Grgs+ari,n"rj2U3rjr*Ark8*@rk8K`6K#HiA'bDZ4GNAH$$:?N+(+sSp=T2Y+@K'g:C]88OErLFbJGt6$NW,+?R/WfYVuEju +[f3o>_#_BgrlY5crmLf!rn[S3roX4Drp9XRrq$-^rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq69^rp]pR +rosFDro!e2rn7:urltGark\THrjMg/rhoagrg<\Jrf-o0rdXoorc8!UrbMLDra>_2r`K/"r_`Ykr_$Lr^QlWr_*5br_WSkr`/r"ra#M3rac"DrbqdVrd4Wo +re(30rfR2Grgj%`ri,n"rj2U3rjr!=rkABFrkABDqmud7rj2U,ri,mlrgj%SrfR2>re(3"rd4Wbrbh^N +rac"9ra#M*r`/qpr_WSgr_*5\r^QlUpd=L:qa'sAJO"cOJO"cOe3O"!mm?e:r^HfUr^Zr\r_rg*PSrhKIlriZ7,rjDa:qn)jArk8_2r`K/"r_`Ykr_sSp=T2V*@K'g:C]88OErLFbJ,Y*"NW,(>QN!HSU].7lY5Yd,[Jmc7]DfPD +^&GbF]DK2=[JmN3Y5YF"U]-h`Q2m$JOcfX&re(3"rd4Wbrbh^Nrac"9ra#M*r`/qpr_WSgr_*5\r^QlU +pd=L:qa#cuh*?NVJO"cOmQgb;mm?e:r^HfUr^Zr\r__RUc2Q,ig&Be+i;Vj;kl0rJnG`%Yp&=acq>U9jrVlfVs5X.Yrr2lqqu6Hk +q#9pbo)A.Xm/H8Kjo43;h#?"+dJhDiao9*T]Df8KDpB"HN%saDZ4DMAH$!9?2dt* +sSp=T2V*@K'g:CAr,M +ErLCaIf>!!NW,(>Q2[?RU].7lY5Ya+[/RZ6]DfPD^&GbF]DK2=[/RB1Y5YF"U]-h`Q2ZmENW+S0J,Xcn +ErKtUCAqcC@/aI2=T2>";>sAj9`@Z`8,c!W7JK7=6Ldrg!JRrhKIlriZ7+rj;[9qn)jArk8";>sAj9`@Z`8,c!W7JK7= +6@hDR5_21O5_22d5jq&76iKOR7fGpW9)_N`:]=5jrr2oqrql]krqQKbrpp'W +rp9XJroF(:rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMe +r_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiu +rf$i_2 +r`B)!r_`Yjr_3;`r^ZrWr^HTLmm?P0JO"cOJO"cOd6R.epd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqB +rbh^Urd+Qmrdt-.rfI,Ergj%`ri,n!riuI/pq$I=rk8_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm;Rjf0FmPJO"cOlTjo*pd>$L +r^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2Hrh07griZ7.rjr0G!PlMMao9QadJhhu +h#?72jSnBBm/HJQo)A:\q#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&BCuc2Pia +_#CtF[Jm?.VuE@gQi<-HN;eG.IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6G>^95_21O +5_ME%6LmJ<6iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6BD>nPSH2`9lK)U`.OT(OESc5D`WW'%!Z2V*) +])KGC^&Gb@])K&8Z2Um)WW&[lSc4oROT(4sPo=8lM)@/a[8CAr)LEW17_If=ruN;eqU)ZhV-2^AbhF^A,;=Zi76/Xo>=!U]-h`Q2ZmEN;eG.IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj +9`@Wa7fc+Mr^QlUpd=L:JO$"rJO"cOSj;a2pd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrb_XSrd"Kl +rdt-.rfI,Ergj%`ri,n!riuI/pq$I=rk8sPo=8lM) +@/a[8CAr)LEW17_If=ruN;et=Qi_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/` +r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt-.rfI,Ergj%`ri#guriuI/qmud;rkABFrkA9?rjr*8riuI) +ri#gjrgj%RrfI,_8rbDFLrc.p_rdOiurf$i_2r`B)!r_`Yjr_3;`!(R&[8,c!W +7JK7=6@hCt5_21O5b:706MNqI7K,dU8,c-[9`@ie;>sPo=8lM)@/a[8CAr)LEW17_If=ruN;eqU)Zhq?5\c0>B^&GbC\c02>Zi76/Xo>9uUAg__PlQmHOHBI#rdt,trd"K_rbh^MraYq8ra#M) +r`/qpr_NMer_!/[r^QlUpd=L:JO%gPJO"cOJO&Ndmm?e:r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFL +rc.p_rdOiurf$i=rg3VWrhoatrjDa;!5JWN_#DITc2Q)hg&Be+i;Vg:kl0rJn,DnWo`"Xbq>U9jrVlfV +s5X.Yrr2lqqu6Hkq#9pbo)A+Wm/H5JjSn*:h#?"+d/M8gao9*T]Df5;Xo>3sT`1;WOoC==K)U2tH2_g_ +DZ4DMA,]m8?2dq)sPo +=8lM)@/a[8CAr)LEW17_If=ruN;eqU)Zhq?5\c0>B^&GbC\c02>Zi76/Xo>9uUAg__ +Q2ZmEN;eG.IK"NkEW0kTCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6LdnPSH2`9lK)U`.OT(OESc5D`W;`puZ2V*,])K8>^AbhF^AGJ? +])K&8Z2Um)W;`OjSc4oROT(4_8rbDFLrc.p_rdOiurf$isAj +9`@Z`8,c!W7JK7=6@hDR5_21O5_22d5jq&76iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6BD>nPSH2`9l +K)U`.OoC^HT`1kgXo>a-])]VI^qfrkrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oq +rql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,urd+Qarbh^MraYq8 +ra#M)r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8 +rbDFMrc8!ardOiurf$i_2r`B)!r_`Yjr_3;`r^ZrWr^HTLmm?P0JO"cOJO"cOd6R.epd>$Lr^QlWr_!/` +r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfI,Ergj%`ri#guriuI/qmud;rkABFrkA9?rjr*8riuI) +ri#gjrgj%RrfI, +^AbhF^AGJ?])K&8Z2Um)W;`OjSc4lSO9(H)rf$i.rdOimrc8!UrbDFBra>_2r`B)!r_`Yjr_3;`r^ZrW +r^HTLmm;Rjf0FmPJO"cOlTjo*pd>$Lr^QlWr_!/`r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfR2H +rh07griQ1-rjr0G!PlMMao9Qad/M_th#?72jSnBBm/HJQo)A:\q#:*gqu6Qnro=%=s8N#srVl]nqYp9h +o`"F\n,D\Qkl0ZBi;VO2g&BCuc2Pia_#CtF[Jm?.VuE@gQi<-HN;eG.If=ZmErKtUCAq`B@/aI2=8l5! +;>sAj9`@Z`8,c!W7JK7=6G>^95_21O5_ME%6LmJ<6iKOR7fGpW9)_N`:]=5j<;otu?2e72A,^6BDZ4\U +HN&BmK)U`.OT(OESc5D`WW'%!Z2V*)])KGC^&Gb@])K&8Z2Um)WW&[lSc4oROT(4sPo=8lM) +@/a[8CAr,MErLCaIf=ruN;eqU)ZhV-2^AbhF^A,;=Zi76/Xo>=!U]-h`Q2ZmEN;eG. +If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Wa7fc+Mr^QlUpd=L:JO$"rJO"cOSj;a2pd>$Lr^QlWr_!/` +r_NMjr`&kura#M2raYqBrbh^Urd+Qmrdt-.rfI,Ergj%`ri,n!riuI/pq$I=rk8sPo=8lM)@/a[8CAr,MErLCaIf=ruN;et=Qi_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmm=`R +JO"cOJO"lRr^-0Bpd>$Lr^QlWr_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rfR2Frgj%`ri,n" +rj)O1rjr!=rkABFrkABDqmud6rj)O+ri,mlrgj%RrfI,=re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMe +r_!/[r^QlUpd=L:nN_XjJO"cOJO%UJmm?e:r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj! +rf-o>rg!JRrhKIlriZ7+rj;[9qn)jArk8_2r`K/"r_`Yjr_3;`!(R&[8,c!W7JK7=6@hCt5_21O5b:706MNqI7K,dU8,c-[9`@ie;>sSp=T2V* +@K'g:CAr,MErLCaIf>!!NW,(>Q2[?RU].7lY5Ya+[/RZ6]DfPD^&GbF]DK2=[/RB1Y5YF"U]-h`PlQmH +OHBI$re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:JO%gPJO"cOJO&Ndmm?e:r^HfU +r^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=!5JWN_#DITc2Q,ig&Be+ +i;Vj;kl0rJnG`%Yo`"Xbq>U9jrVlfVs5X.Yrr2lqqu6Hkq#9pbo)A.Xm/H8Kk5O<K`6K#HN%saDZ4DMAH$$:?N+(+5_21O +5_hW(62j4A6MNqI7K,gV8H)6\9`@ie;>sSp=T2Y+@K'g:CAr,MErLCaJ,Y-#NW,(>Q2[BSU].7lY5Ya+ +[/RZ9]`,V>^AbhF]DfD@[/RB1Y5YF"V#HtbQ2ZmENW+V1J,XcnErKtUCAqcC@K'U4=T2>";>sAj9`@Z` +8H)*X7JK7=6Mj(C5_21O5_21O5h&'u617/86iKOR8,c'Y9)_N`:]=5j@^&GYC])K)9ZMq$+WW&^mT)P#SOT(7=K`6K#HN%saDZ4DM +AH$$:?N+(+rg!JSrhKIlriZ7+rj;[9rk/6DpqHa@rk&0@rj;[1riZ7"rhTOb +rfmJF!K`EBNW+V1J,XcnErKtUCAqcC@K'U4=T2>";>sAj9`@Z`8H)*X7JK7=6Mj'"5i"\V5_21O5jgo: +617/86iKOR8,c'Y9)_N`:]=5jrr2oqrql]krqQKcrq$-Yrp9XKroX4rg*PT +rhKIlriZ7,rjDa:rk/6DpqHa@rk&0@rjDa3riZ7"rhTObrg*PGrf-o1rdXoorc8!UrbMLDraGe4r`K/" +r_`Ykr_$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"D +rbqdVrd4Wpre191rfR2Grgs+ari,n"rj2U3rjr*Ark8*@rk8re19# +rd4Wbrbh^Nrac":ra,S+r`/qpr_WSgr_!5^!D#c\7fGjO6gR/=6%M;$5_21O5bp[E60pr56iKOR8,c'Y +9E%Zb;#X>k@^&GYC])K,: +Zi7-,WW&^mT)P#UOTCT,rf-o1rdXoorc8!UrbMLDraGe4r`K/"r_`Ykr_$Lr^ZrYr_*5br_WSkr`/r"ra,S4rac"DrbqdVrd4Wpre191rf[8Jrh9=hriZ7/ +rk&6I!PuVOb5T]cdf.r!h>Z@3k5OTDm/HMRoD\F^q#:*gqu6Qnro=%=s8N#srVl]nqYp";Z9Ml:&[fb +8H)-Y7ef@;6N09h5_21O5_21X5lO(H6LmJ<6iKRS8,c'Y9E%Zb;#XAldLoYPtp.[f3r=^&Gb@^](tH^&G\D[f3Z5YPtR$V#I"c +R/W";Z9Ml:&[cc8-)7Pr^ZrWpd=C7r]u*#W^),#JO$"rr^#m; +pd>$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rf[8Jrh'1dri5t$rj;[5rk/6DrkA0B +rkABFrk/6=rj;[.ri5snrh'1W!0[GIPQ$UAK`6K#HiA*cDuOPOAH$$:?N+(+A +re19$rd=]erc%jQrac":ra,S+r`9"sr_WShr_3;^r^ZrWr^?WNlpC\;pHX9pJO"cOJO%gPr^#m;r^6QN +r^QlWr^d#^r_dLoYPtp.[f3r=^&Gb@^](tH^&G\D[f3Z5YPtR$VZ*:gQiNU'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX^&GSAYl:[%U]-_] +Q2ZjDLAlc'I/\6eE;j_RAc?3=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@<6N09h5_21O5_21X5lO(H6LmJB +6i0:N7fGpW8cDE_:B")h<;oqt>5hn.@fBsnPSFT-[eJGt<&O8b@BR/WfYVZ*XqZ2V01[emc;^\GVD +^\b_D[f3Z5Z2Ug'VuEChR/W?LO8an5Jc:&rFT-7YD>n,GA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/= +62*Wq5_21O5_22P5lO(96N0@L7/f[T8,c*Z9`@fd;#XGn[/R?0X8]$rU&LGYPl?aCLAlc'I/\6eE;j_RAc?3=?iF7.=8l1u +;#X5h9E7Wb8P/nPr^QlTqa9^:r]u*#W^),#JO$"rr^#m;r^6QNr^QlWr^m)_r_EGhr`&ktr`];.raPk< +rb_XSrcJ-erdb!&rf@&Brg<\Yrhf[qriuI1rjM^;rkJ6DrkJ?DrjMg5riuI'rhoahrg3\M!L/iJO8an5 +Jc:&rFT-7YD>n,GA,]j7>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=6%M;W5_21O5_22j5lO(96N0@L7/f[T +8,c*Z9`@fd;#XGnrp'LNrp]pYrq69drql]mrr)iqj8\';rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`M +rji$4ri5snrg`tQrf@&6re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r^"IfJO"cO +JO#)Xr^$EJnj<=CqaCEQr^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureLK6rg!JPrhBChri?%( +rjDa7rkABHrkS5hn.A,^*>D>nPSFoHjhK)UQ)O8bFDS,T/]VZ*XqZMq92\,O,@^])%D_Z%@J^AbV@[f3T3 +X8]$rUAgV^PQ@#5rf@&6re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r]u*#h*?NV +JO"cOnNd(>lpC\=qaCEQr^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureLK6rg!JQrhTOnrilC4 +rk8BM!Q2hSbl5ugeGe5%hu;X7kl0lHmf)_To`"R`q>U9jr;6KRs5h&d/M;h`;[ON]Df)7XT#'qSc4rSOT(+9KDp?!G5cO]DZ48IA,]j7>Q._'!! +M>iV9Qi^,\,Nr5_#D4M_u@OP_#D+J_#CnD[f3Z5Xo>=!U]-e_Q2ZmEM>i/,If=NiErKtU +B)Z<>?iF:/=8l5!;#X5h9`@W_8H)*X7/K@<6Mj(F5_21O5_21O5h\L&60U`86i0:N7fGpW8cDE_:B")h +Q/"/A,^*>DZ4\UG5csiKDp`,OT(UGSGo;_W;`pu[/RQ6\bNu>_Z%IP_Z%@M^])%J\c0&:[/R3, +WW&[lSGnfQOT(+9KDp?!G5cO]DZ48IA,]j7>Q._'&JO"cO +Va15IksGA:qaCEQr^ZrZr_3;dr_WSor`K/(ra5Y7rau.Irc8!]rdOj!re^W9rg3VSrhKIkriQ1,rjVm; +pqZmGrkn`PrkSNJrkSNDrjMg5riQ1!rhKI_!0mSMQ2ZmEM>i/,If=NiErKtUB)Z<>?iF:/=8l5!;#X5h +9`@W_8H)*X7/K@<6Mj'"5i=nY5_21O5kI>@60U`86i0:N7fGpW8cDE_:B")hQ/"/A,^*>DZ4\U +G5csiKDp`,OT(UGSc5JbX8]C']DfSG_u[fprltGirm^r&rnm_7roj@IrpTjVrq-3`rqcWkrquZmj8\'; +rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM'rmLekrl+lQrk/69riH*rrgj%TrfR2:re19#rce?_rbqdL +rac"9r`oG)r`/qpr_NMer^m)[r^QlUr^?NKlpA`XJO"cOJO#2[og8=_9rb2:LrcA'_rdXp#re^W:rg3VSrhTOnriZ7.rjVm_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=C7qETTsJO"cOJO%pS +ksG87r^?`Sr^QlWr^m)_r_EGir`/r"r`oG1rac"ArbqdWrce?kre19-rfR2Hrg`t`ri5t#rjDa7rjr*F +rkSNLrkeZPrkeHHrjr*=rjDa.ri,mmrg`tRrfR2:re19#rce?_rbqdLrac"9r`oG)r`/qpr_NMe!(d2_ +8cD9[7fGjU7/0.96@hD(5_21O5c6m36Mj.L7/fXS7fGpW8cDE_:B",ilJ.1AH$9ADuOhWGQ**k +K`6i-OoC^HSGo>`WrB1#[JmZ7])KPF_#D1L_Z%IP_YCtH])K5=[Jm?.WW&^mS,eiUQBqN4re^W-rdXok +rcA'Wrb2:Ara>_1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=C7JO&-YJO"cOJO&imksG87r^?`Sr^QlWr^m)_ +r_EGir`/r"r`oG1rac"ArbqdWrce?kre19-rfR2Hrgj%criQ1*rk/6G!6"uX`W"0^dJh\qh#?41ir80@ +li-APnc&1[pAXpfqu6Njro=%:s8N#sr;QTmqYp6gp&=O]n,DYPl2K`Bi;VR3f)F+scMki__>_.IZi7-, +W;`FgRJrELMuJG0J,X`mF8g+WC&V`D@K'O2=oMJ$;Z9Jk:&[ca8H)-Y7K,^M6fUM[5_21O5_21d5jUi1 +6Mj.L7/fXS8,c*Z9)_Qa;#XAllJ12Ac?ECDuOkXH2`_(G\c0);YPtU%VZ*1dR/WLrgs+dri?%%rjVm!+6iKLQ7K,gV8cD?]:&[ug;Z9_r +=T2S)@K'j;C&W&MFT-RbJ,Y0$MuJq>RJrfWVZ*XqYPu$1])K>=_>_@I`;[[R_Z%CN]DfA?\,NT1X8]!q +ScG,YR$dl:repc0rdXomrcA'Wrb;@DraGe2r`T5$r_i_kr_Lrh'1griZ7,rk8Z@3j8S^&GnJ_u@UL`r>Yl:a'VuE=fRJrHMN;eV3Jc9upFoH@ZC]7rF +@K'R3=oMM%;Z9Ml:B!lb8cD9[7fGjU7/K@5630D>JO"iQJO"cOj$;Nhr^6ZQr^HfUr^d#[r_!/br_WSl +r`B)&ra#M3rau.Frc%jZrd+QpreCE2rfmDNrh'1friH+'rj_s>rk8rilC' +rhoafrgEbMrf$i3rdk&prcS3ZrbMLFraGe3r`T5%r_i_lr_5hh,@K'mQ.b(;Z9Ml:]=#d9)_B\7fGjU7/K@36I7uK5_21O5aF\%6M3\E6iKLQ7K,dU8H)3[ +9E%`d;>sJm=T2M'?N+F5BDu]GEW1.\HiATqL]3;4Q2[9PTDkegXT#O)\c0;A_#D4M`;[aNaSWsU_Z%@M +]`,J@ZMq!*W;`FgRf8TONW+_4Jc:#qG5cL\C]7rF@fB^5>Q.b(;Z9Ml:]=#d9)_B\7fGjU7/K@5630D> +JO"iQJO"cOj$;Nhr^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh'1g +riH+)rji$ArkSNMrl"fTprN?OrkeZMrk/6@rj)O*ri#ggrgNhOrf-o4rdk&qrc\9\rbMLFraPk5r`fA( +r_i_lr_EMe!D?)b9)_B\7fGjU7/K@36@hD15_21O5d3N36N0@O7/fXS7fGsX8cDB^:]=5j;Z9et>5hk- +@fC$>C]8>QG5cjfJc:H(NW,4BS,T&ZW;`mtZMqE6^&GhH_Z%LQ`V@OO`W!aR_#D"G\c/o6Xo>9uT)b;\ +R[X5@rf-o4rdk&qrc\9\rbMLFraPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj$J;^ks0ebJO"cOrBT:- +r^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4rg!JPrh07jric=0rkJHN!6G8` +ao9Wce,Ituhu;X7jo4QEmJcVSo`"O_p\t$gqu6Qkro=%:s8N#srVl`oqYp6gpAX[_nG_hSli-#Fir7j7 +g&BP$d/M2e`;[ON\,N]4Xo>'oSc4uTO8b"8KDp8tGQ)X^D>n5JAH#s8>Q.b(<;obo:]=&e9)_E]7fGjU +7/0.36I7uK5_21O5aF\%6Mj+E6iKLQ7K,dU8cDB^9`@ie;Z9Yp=T2P(?iFU8C&VuKErL:^I/\ctM>iS8 +Qii/,I/\?hErKqT +B`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6g-i;6:-5gK0XuQJO&6\k!Ji1r^?`Sr^QlYr_*5ar_NMk +r`&l!r`fA/rac"Brb_XTrce?hre(3,rf@&Frgj%^ri?%%rj2U7rk8#Wrkn`Nrk/6@ +rj2U-ri?$lrg`tSrf@&8re(2trce?^rb_XJrac"8r`fA(r`&kor_EMf!DH2d9)_E]7fGjU7/0.36@hD1 +5_21O5d3N96MNqI7/fXS7fH!Y9E%Wa:]=8k<;p#!>Q/"/AH$nSTGQ*!hKDp`,O8bLFSc5>^X8]=% +Zi7N7^&GhH_u@XSa8!aTa8X'W_u@IN]`,J@Zi70-X8\dmS,o.Mrg3VFre^W,rd=]hrc8!Trb2:Ara5Y/ +r`K/!r_`Yjr_3;`r^m)Yr^HfSpd=11JO&HbJO"cOJO'0!k!Ji1r^?`Sr^QlYr_*5ar_NMkr`&l!r`fA/ +rac"Brb_XTrce?hre(3,rf@&Frgj%_riQ1*rjVmArknfZ!QrRad/MSpg&Bn.ir8'=li-;NnG`%Yp&=^b +qYpBkrVQTSs5lJ.1Ac?ECDZ4_VGlE0kK`6l.OT(XHT)PJ`XT#I'[Jmc:^])+L`;[gV +b5TN^b5TN^b5TH\`;[XQ^Ab_C[JmE0XT"snSc5#UOT(.:K`6H"H2_maDZ4DMAc?*:>lIn*<;oep:]=)f +9)_E]7fGjU7/0.5630D>pd'HrN'MqZJO&Qepd+%/pd>$Kr^HfUr^m)^r__:rb;@L +rcA'`rdOj"reg]:rg<\VrhBCnrilC0rjr*DrkeZQrl>#\rlP/^rlP/^rl>#VrkeZKrjr*:rilC'rhBC_ +rg<\Hreg].rdOilrcA'VrbDFDra>_1r`T5"r_i_k!)3Jg:&[ca8cD3Y7K,^M6fp`16%M;95_21O5e0/T +60:N/6iKLQ7K,dU8cDB^:&[rf;Z9Yp=oM\*@/aa:C&W#LF8gF`If>$"MZ/_:R/W]VUAh7nYl;'0])KJD +_Z%LQa8X6\ao9H^ao9H^a8X$V_Z%:K])K,:Yl:a'U&^_bSXobIrfI,:re19"rd"Karbh^Mral(:r`oG* +r`&kpr_NMfr_!/]r^QlUr^?NKk!Ji/JO&ckJO"cOL-YN"k!Ji1r^?`Sr^QlYr_*5br_NMkr`&l"r`oG1 +ral(Crbh^VrcnEkre19.rfI,Hrgs+ariZ7,rji$Drl+r]!R&[cdJh_rg]$+0j8S3?m/HGPnG`(ZpAXjd +qYpBkrVQTSs5!_SrVl`oqu6BipAXaanc&"Vm/H2IjSn*:g]#e'df.Jia8WpS])K,:YPtBtTDk;YOT(1; +LAl`&HN&$cE;jYPBDu<5hh,@/agdUrZ2V63]DfSE`;[dUans6[bPTH] +a8X*X`;[RO]Df;=ZMq!*V>d+dRf8EJMuJJ1JGsloFT-7YC]7uG@/aI2>5hP$;uTSl:&[ca8cD6Z7fGjO +6g-l16@hC\5_21O5jUbl6MNqI7K,dU8,c*Z9E%Zb:]=8kU)\,O#=^])1N`r=*Wb5TT]b5TH\`r0rTDk;YOT(1;LAl`&HN&$cE;jYP +BDu<$Lr^QlWr^m)^r__#Xrl"fOrk&0= +rj)O*rhTUe!M?"`Rf8EJMuJJ1JGsloFT-7YC]7uG@/aI2>5hP$;uTSl:&[ca8cD6Z7fGjO6et([5k70k +5_21T5i"d%6iKOR7fGpW8cDB^:&[rf;Z9\q>5hh,@/agd[t[/RZ9 +_>_FSbQ5r3rmLetrnIG1roF(Arp9XPrpg!\rqHEerql]mrr([Qh>dKQrqucmrqZQgrq??^rpTjRroj@C +ro*k4rn.5"rm(Mbrl"fLrjMg0ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG'r`&kor_NMer_!/\ +r^ZrWr^?EHi'RE/h`u`XJO"cOV*P#Gi'RE0qa:6Kr^QlWr^d#\r_3;er_`Yor`9#'ra5Y6rb;@Jrc%j\ +rd=]qreg]8rfd>PrhBCjriQ1+rjr*Drkn`TrlP/_rltGdrltGdrltGcrlP/ZrkeZLrjr*8riQ0urhBC_ +rfd>Breg]*rd=]hrc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTogA.6o0WFBJO#A`JO"cOnj*1? +h*V!+qaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#gurj2U8rkJHM +rl4rZrlb;crlkAdrlkAdrlb;_rl4rSrkJHDrj2U+ri#gjrgj%Prf@&9rdauqrce?\rbVRJraPk6r`oG' +r`&ko!)EVk:]=&e9)_B\8,c!W7.iq*6N09%5fH!>5_2285lO(*6Mj.I7/f[T8,c'Y9)_N`:]=5j<;oqt +>lJ+0@fC*@D#SDQGQ*!hJGtH*NrG7ASc5A_W;`puZi7Q8^]).M`r=*ZbPoccbl5ldbl5ldbPoW_`rBreg]*rd=]hrc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTog@Y( +r]u*#pcsBqJO#/Zr^#@,qa:6Kr^QlWr^d#\r_3;er_`Yor`9#'ra5Y6rb;@Jrc%j\rd=]qreg]8rfd>P +rhBCjric=0rk8ZC4jo4KCmJcVSo)A@^p\t!fqu6NmrS@M0s82cor;QQlq#:!d +o)A.Xmf)GLjo49=h>Z+,ec*nob5TBZ^AbYAZMpm'V#I"cQ2ZmEMuJ>-IK"NkEW0kTCAq`B@/aI2=8l5! +;>sAj9`@]a8H)-Y7fGgK6f:<.6/k.\5_21O5c?sI6/=m,6Mj.I7/f[T8,c'Y9E%Zb:]=5j<;otu?2e72 +A,^6BD>nPSH2`9lK)U]-OT(OETDkYcWrB7%[f3o<_>_CPa8X6\bl5oec2Q#fc2Q#fbl5caa8X$V_>_(G +[JmE0WrAgnTDk,TOT(1;K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr)LEW17_If=ruMuJh;Q2[ETV#ICn +Yl;*1]DfYG`;[gVb5TWacMl)fcMl)fcMl&eb5TH\`;[UP]Df5;Yl:[%V#I"cQ2ZmEMuJ>-IK"NkEW0kT +CAq`B@/aI2=8l5!;#jAm:J^s`r_*5]r^ZrWr^?EHi'R<,JO%:AJO"cO_Ee)dg-Y[(qaCEQr^ZrYr_*5b +r_NMjr`&kura#M2raYqBrb_XSrd"Klrdt--rfI,Erh'1cri5t%rjMg#\rlkAerltGfrltGf +rlkAarl>#Vrk\TGrjDa0ri,so!MlOjTDk,TOT(1;K)U2tH2_g_DZ4DMA,]m8?2dq)nPSH2`9l +K)U]-OT(OETDkYcWrB='\Gj5A`W"![cN2Ac=2qu-Nl +rqcWhrqHE`rpg!VrosFFro="7rn@A&rm:Yfrl4rQrjr*8ri?$prh'1Vrf[8@re(3"rd4Wbrbh^Nrac": +ra5Y,r`/qrr_WShr_3;_r^d#Xr^HfSpdU6fr;QZN +s5!_Srr2lqr;QQlq#:$eo`"C[n,DYPkl0ZBi;VO2g&B@tbl5``_#CtF[f3H/W;`OjRf8QNO8an5K)U5u +FoHC[D>n2IA,]j7>5hV&n2IA,]j7>5hV&n2IA,]j7>5hV&<<,hr:f.-dr_#Wrk8n2IA,]j7>5hV&dKRrr)iorqcWirqQKbrpp'WrpB^LroX4< +rn[S-rmLekrlb;Xrk8<@rilC%rhTO`rg*PFre^W,rdXokrcA'Wrb2:Ara>_1r`T5$r_i_lr_EGbr^m)[ +r^QlUr^?NKg-Yd)kWj\aJO"cOY!DtPg-Yd+qa:?Nr^HfUr^d#[r_!/br_WSlr`9##r`oG1ral(BrbqdW +rce?kre19-rfI,Frg`t`ri5t%rjVm>rkJHQrlY5arm:Pirmh"trmgnnrm:YgrlP/[rkJHErjVm2ri5sn +rg`tRrfI,9re(3"rce?_rbqdLrac"9r`oG*r`9"rr_WShr_!/]r^d#Xr^HfSpd=R_:rb2:LrcA'_rdXp#re^W9rg*PRrhTOnrilC2 +rk/6Frl>#\rlkAgqpGDnrm^qtqpGDirlkA`rl>#Qrk&0=rilC%rhTO`rg*PFre^W,rdXokrcA'Wrb2:A +ra>_1r`T5$!)`hq;Z9Ml:B!lb8cD9[7fGjU7/0.'6N09%5gDWG5_22A5lO('6MNqI7/fXS7fGsX8cD?] +:B")h;Z9_r=T2S)@/aa:B`;rLF8gC_J,Y-#M>iV9QN!ERV#ICnYl;-2]`,\Fa8X6\bl5uddJh\qeGe"q +dJhMlbl5``a8WjQ]Df;=YQ1[(WiH&org`tRrfI,9re(3"rce?_rbqdLrac"9r`oG*r`9"rr_WShr_!/] +r^d#Xr^HfSpd_:rb2:LrcA'_ +rdXp#re^W9rg*PRrhTOnrilC3rkABKrlb;e!7Cnrdf.u"h>Z@3k5OWEmJcSRo)A:\q#:*gqYpElrVlfP +s5!_SrqlZnqYphYu:/e,I_nbl5NZ^](hDYl:^&VZ*1dR/W9JMuJG0JGsin +FT-4XCAqiE@fB[4=oMM%;Z9Pm:]=&e9)_E]7f,XF6f:<160LRb5_21O5d!BO6/=m)6i07M7JfRR8cD?] +9`@ie;>sJm=8lD&?2e=4B)ZQEDuOkXH2`?nLAm,1P5^jJT)PVdXT#I'\c08@_>_OTb5TZbdJhSne,Iqt +ec+.se,Iboc2PocaSs$T^Ab\BYl:^&VZ*1dR/W9JMuJG0JGsinFT-4XCAqiE@fB[4=oMM%;Z9Pm:]=&e +9)_E]7f,XF6h`q46N09%5at#i5_22t5lO(*6M3_F7JfRR8cD?]9`@ie;>sJm=8lD&?2e=4B)ZQEDuOkX +H2`?nLAm,1P5^jJT)PVdXT#I'\c08@_>_OTb5TZbdJhSne,Iqtec+.se,Iboc2PocaSs$T^Ab\BYl:^& +VZ*1dR/W9JMuJG0JGsinFT-4XCAqiE@fB[4=oMJ&;?9Znr_`Yjr_3;`r^m)YqaL'Ci'RE/JO%LGJO"cO +a?]_jh*Ud%r^H]Rr^m)]r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rji$@ +rk\TTrlY5brmC_nrmUktrmh#!qpYPlrltGcrlG)TrkABBricC'!NW:#VZ*1dR/W9JMuJG0JGsinFT-4X +CAqiE@fB[4=oMM%;Z9Pm:]=&e9)_E]7f,XF6f:<16%M:P5_21c5lO(*6M3_F7JfRR8cD?]9`@ie;>sJm +=8lD&?2e=4B)ZQEDuOkXH2`?nLAm,1P5^jJT)PVdXT#I'])KGC_u@mZcN)Dpe'ndKRqu-NkrqcWirq??`rpg!Vrp0RIro="9rn[S)rmLekrl4rRrk8<;ric=# +rh07[rg!JCre^W,rd=]hrc8!Trb2:Ara>_1r`T5#r_i_kr_3;`r^luWr^QlTnjCnnoK[smJO"cO\j4b3 +ogAUEqaUQTr^m)^r_3;er_i_qr`T5*ra>_9rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7,rk/6Grl"fY +rltGhrmgnsrn7;'rn72"rmh"prltGbrl"fOrk/6:ric=#rh07[rg!JCre^W,rd=]hrc8!Trb2:Ara>_1 +r`T5#r_i_kr_3;`r^luWr^QlTnjE7?gHpHVVa,euLHt`'g-YI"qaClJ.1AH$nSTGQ*!hKDp]+NrG=CRf8uZ +WW'("Zi7W:_#D:Ob5TZbd/MSmf)FA%f`'S$f)F5!d/M;hb5T?Y_#D"GZN.00YHRr)rh07[rg!JCre^W, +rd=]hrc8!Trb2:Ara>_1r`T5#r_i_kr_3;`r^luWr^QlTnjCnnNBi%[JO#noe3`gqqaCU6iqu6Qkrn[V1s8N#prVl`oqu6HkpAX^`nc&"Vli-/JjSn-;hYu.+e,I\ma8X!U +^](Y?Yl:^&UAg__Qi<*GMuJG0If=WlFT-4XCAqlF@K'U4>Q.\&;uTVm:B!rd9)_B\8,c!Q7/0.!6M*No +5_21O5e9516MNqI7/KCO7fGpW8H)6\9E%]c;#XGn&?N+C4BDu]GDuOkXH2`9lL&Qu/OT(UGSc5A_ +X8]@&[Jmo>_>_FQbl5rfdf.hpfDaM'g&B_&fDaA#df.Slbl5T\_Z%:K[JmE0X8\jmSc4uTOT(1;L&QQ# +H2_pbDuOMNBDu?=?N+1.Q.t.@K'p=C]88OFT-RbIf>'#MZ/_:QiYl:^&UAg__Qi<*GMuJG0If=WlFT-4XCAqlF@K'U4>6%\)<`]2u +r_WShr_3;`r^d#Yr^QZNpdrk\TQrlkAfrmLesqq(i$rn7;)qq(hurmLelrlkA\rkeZK +rj;a1!O/g-X8\jmSc4uTOT(1;L&QQ#H2_pbDuOMNBDu?=?N+1.Q.t.@K'p=C]88OFT-RbIf>'#MZ/_:Qirnm_/rmh"prlY5ZrkSNCrj2U,rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG( +r`/qqr_WSgr_*5^r^d#XqaLKPpd$Kr^?`Sr^QlWr^m)^r_EGhr_i_pr`B)( +ra5Y6rb2:Irc%j\rd=]qreUQ4rfR2Krh'1criZ7+rj_sCrl"fWrltGirmh##rn7;)ptbi$rn.5#rmC_i +rlG)WrkSNCrj2U,rhTOcrgNhKrf-o5rdauprce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKP +pd=mEgHpHVVa,euLHt`'g-YR%qaCEPr^QlWr^m)^r_EGhr_i_pr`B)(ra5Y6rb2:Irc%j\rd=]qreUQ4 +rfR2Krh'1criZ7+rj_sCrl"fWrltGirmh##rn7;)ptbi$rn.5#rmC_irlG)WrkSNCrj2U,rhTOcrgNhK +rf-o5rdauprce?\rbVRIraPk6r`fG)!EWA%lJ+0@fC'?D#SDQGQ*!hJGtB(N;et=Rf8rYV#IOrZMqB5_#D:O +aSsH`dJh\qf`'S'gA'M$gA]b(ec*tqc2Pf``;[RO\,`i9Za9Y6rhTOcrgNhKrf-o5rdauprce?\rbVRI +raPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKPpdO +nG`%Yp&=^bqYpBkr;QZorn@D(s8N#srVl`oqYp6gpAX^`nG_kTm/H2IjSn*:h#>t*e,IVkaSs*V]`,A= +Yl:X$U]-nbQ2ZpFN;eG.If=]nF8g.XD#S#F@fBa6>5hV&5hn.@fBs5hV&#k+h>Z1.f`'M%eGdkpbl5Z^_u@=J[f3N1WW&[lTDk,TOoC==K)U5uHiA*cE;j\QAc?0< +?N=71>$Co,r`/qor_EGer_!/]r^d#XqaLKPog?eeJO&QeJO"cOk!6mPqa:6Kr^H]Rr^d#[r_!/ar_NMi +r`/r"r`];.raPk#Urk&6>!OfH9Yl:X$U]-nbQ2ZpFN;eG.If=]nF8g.XD#S#F@fBa6>5hV&A +re:?&rdFcgrc8!Urb)4@ra>_1r`T5%r_i_lr_EGcr_!/\pdY$Hqa8Upr'Gs"L-U;TbWs-6r^6HKr^QcS +r^d#[r_*5cr_WSlr`B)%r`oG1rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5crmLes +rn.5)qq_&*rn[S/rnIG)rm^qqrm(Mbrl+lNrji$7ri?$prh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra>_1 +r`T5%r_i_lr_EGcr_!/\pdY$Hqa1?Ma[1PD\Nk^2R6^"'h*V*.pdFmHr^d#[r_*5cr_WSlr`B)%r`oG1 +rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5crmLesrn.5)qq_&*rn[S/rnIG)rm^qq +rm(Mbrl+lNrji$7ri?$prh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra5_2!F/n/=oMM%;Z9Ml:B!oc9)_BV +7efCK6c_TF5jUae5_22_5fH(h6hj(E7fGsX8cDB^:B")h;Z9bs=oM\*@/a^9BDufJEW1+[IK"fsL&R,3 +P5^jJT`1hfX8]I)\Gj5A`W"$ZcMl8kf)F>$g\]h%i;VR3h#?(-f`'D"df.Pkao99Y^&Y\E\[h^Gri?$p +rh07Xrfd>Are:?&rdFcgrc8!Urb)4@ra>_1r`T5%r_i_lr_EGcr_!/\pdY$Hqa8FkT0RrmJO$P,`BsPk +pdFmHr^d#[r_*5cr_WSlr`B)%r`oG1rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5d +rm^r#!8R\3h>ZF5k5OTDmJcVSo)A:\pAXjdqYpBkrVQTJs4@;Mrr2lqr;QTmq>U-fp&=O]nG_kTl2KlF +j8Rs8gA]\&d/M8gaSs!S]Df5;YPtL"UAgV\Q2ZjDM#N),J,X]lFT-4XCAqiE@fBa6>Q.b(;uT\o:]=)f +9)_EZ8,c!T7K,^G6e4U%6@hCV5_22E5gD^h6i0:N7K,dU7fGpW8cDB^:&[rf;>sMn=T2P(?iFO6B)ZQE +DuOhWGlE3lKDp]+O8bCCRf9&\WW'+#[Jmf;_#DFSbl5rfeGe)!g]$%.hYuF-iVVO3h>Z1.fDa;!ci2,e +aSs!S]Df5;YPtL"UAgV\Q2ZjDM#N),J,X]lFT-4XCAqiE@fBa6>Q.b(;uT\o:]=)f9)_EZ8,c!T7K,^O +6hs*s6@hD45_21g5j:Vt6M3_C7/fXP7fGpW8cDB^:&[rf;>sMn=T2P(?iFO6B)ZQEDuOhWGlE3lKDp]+ +O8bCCRf9&\WW'+#[Jmf;_#DFSbl5rfeGe)!g]$%.hYuF-iVVO3h>Z1.fDa;!ci2,eaSs!S]Df5;YPtL" +UAgV\Q2ZjDM#N),J,X]lFT-4XCAqiE@K9a9?XNe:r`K.ur_i_kr_Q.b(;uT\o:]=)f9)_EZ8,c!T7K,^G6d\5m5_21O5dN`$6M3_C7/fXP +7fGpW8cDB^:&[rf;>sMn=T2P(?iFO6B)ZQEDuOhWGlE3lKDp]+O8bCCRf9&\WW'+#[Jmf;_#DFSbl5ug +f)FA'hZ;Wlro="?rosFMrp]pXrq69brqZQjrqucoqu5=LfDkjLqu-NlrqcWhrqHEarpg!Vrp0RJroO.; +rnRM+rmUkmrlb;WrkABBrilC&rhf[ergEbMrf-o4rdt,srcnE`rbh^Mrb)4_2r`fA&r_r\jr_EGdr^m)[r^ZrW +qaLKPrBp9G^I%ocJO%UJJO$J*r^#%#lpCA4qaCEPqaUQTr^d#[r_3;cqb[8kr`9#&ra,S3rb)4Frbh^V +rce?hrdt-*rf-oArgNhYrhf[qrilC4rk8Q.\&;u9Dj:B!rd8cD9[8,c!T +7K,^G6bbte6%hLS5_23"5lO'a6M3_C7/fXP7fGpW8H)3[9`@c`;#XGn&?N+@3BDuZFDZ4_VGQ*!h +K)UT*NW,1ARf8rYVZ*XqYl;34^&GkIbPoiedf.ktgA]q-i;V^7j7q^4j8S!9h>Z+,fDa4tcMl#d_#V1M +^:sTWrilC&rhf[ergEbMrf-o4rdt,srcnE`rbh^Mrb)4_U6fr;QZlrn@D(s8N#p +rVl`oqYp9hp\sgao)A+WmJcALkPjH>hYu:/ec*tqc2PZ\_#D"GZi70-WrA[jSGnlSO8b%9L&QT$HN&'d +E;j\QC&VWA@/aI2=T2>";uTYn:]=)f9E%Q_8GbpV7f,XO7/K@)6K^[d6(:/k60(>E6N0@F7/fXP7fGpW +8H)3[9E%Zb:]=5j;uThs=T2V*@/a[8C&VrJE;k"ZHN&EnL&Qu/O8bLFSGo2\WrB1#Zi7W:_#D:Oc2Q,i +eGe/#h#?10ir8!;jo4??jo4??jo4<>ir7g6g]#n*eGdhoc2PZ\_#D"GZi70-WrA[jSGnlSO8b%9L&QT$ +HN&'dE;j\QC&VWA@/aI2=T2>";uTYn:]=)f9E%Q_8GbpV7f,US7/TIM6bbs=6-_cI6*W`'6L7&<6hNkH +7JfRR8,c'Y8cDB^:&[rf;>sMnjSn9?jSn9?j8S';hYu:/g&BM#d/M;h`;[RO]`,8:YPtR$T`1J\Qi<'F +MZ/>/J,XcnFoH@ZD#S,K@f^(Lra>_2r`K/"r_renr_NMfr_*5_r^coVr^QcRqaC/J,XcnFoH@ZD#S/JA,]m8?2dt*sAj:&[fb9)_BY8,c!T7JfLM6bbsp6%M=Q +6-DR,6N0@F7/fXP7fGpW8H)3[9E%Zb:]=5j;uThs=T2V*@/a[8C&VrJE;k"ZHN&EnL&Qu/O8bLFSGo2\ +WrB1#Zi7W:_#D:Oc2Q,iec+>&h>lL8iSje!rp'LMrpTjWrq-3arqZQiqu$Hlqu5=LeGoFErquclrqQKe +rq-3\rp]pTrp0RIro3q7rnRM(rmLelrl>#UrkJH@riuI)rhKIbrgNhKrf-o6rdk&srcnE^rbh^Nrac"; +ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-qEfa"JO4oS]gCXEqaCEPpdY6Qr^d#[r_*5br_NMj +r_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o>rgNhXrhKIprj)O3rkJHMrl>#armUktrn@A-rnmV5 +roX4AroX4AroX4Aro="8rnRM,rmq(srm1Sarkn`MrjMg2riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLD +raPk6r`fA'r`/qqr_`Yjr_sJmQ/"/@fBp;C]85NEW14^I/\]rM>iM6OoCgKT)PMaXo>X*[f4&@_u@^Uci2Dmf)FD& +h>Z=/j8S3?jo4EAjo4EAjo4<>hu;F1gA]\&df.Sla8X!U^](\@Z2Um)U]-nbRf8HKNW+e6Jc:)sGlD^^ +DZ4DOA-$4OraPk6r`fA'r`/qqr_`Yjr_rnm_1rn@A&rmLelrl5#V!Q2hS^](\@Z2Um)U]-nbRf8HKNW+e6 +Jc:)sGlD^^DZ4GNAH$';?iF:/=8l5!;Z9Pm:]=)f9)_E]8H)-V7f,XR7+t"l6@hIS6DQs+6i0:N7JK@O +8,c'Y8cDB^:&[rf;>sJmQ/"/@fBp;C]85NEW14^I/\]rM>iM6OoCgKT)PMaXo>X*[f4&@_u@^U +ci2Dmf)FJ(hZ2X:io9t$rp'LNrp]pYrq-3arqZQiqu$HleGn%urr2fnrql]krqZQerq-3\rpTjQrp'LE +ro3q7rn7;$rm:Ygrl4rQrk&0;ric=#rhKIbrg*PHrf6u4rdt,urc\9]rbqdMrau.=ra5Y/r`T5#r_r\j +r_EGdr_*5_r^m)[r^ZWNpdOjDmR)OmJO=uU[mT^SpdOjFr^ZrYr^m)]r_*5ar_<8dr_rerr`T5*ra5Y6 +rau.DrbqdWrc\9irdt-(rf6u@rg*PUrhTOmric=/rk&0Frl4r]rm:Yprn7;-ro!e9roX4Cqs"+Fqs"+C +roX4?ro*k5rn7;$rm:Ygrl4rQrk&0;ric=#rhKIbrg*PHrf6u4rdt,urc\9]rbqdMrau.=ra5Y/r`T5# +r_r\jr_EGdr_*5_r^m)[r^QrXp."gGogF?uTgOAuKL>`,ogJRDog\pNr^d#[r_!/_r_3;cqb[8jr`/r# +r`oG0raPk=rb;@MrcA'^rdOiureCE4rf[8Hrh'1cri,n#rjDa;rkSNQrlkAgrmh#$rndY4ro="?roa1C +rp'CFroa:Cro=":rndY-rmh"prlkA]rkSNFrjDa/ri,mlrh'1Urf[8@reCE(rdOiirc8!V!,2IJC&V`D +@fBa6>Q.e)lJ+0@fC!=C&W&MF8g@^If=ruLAm54P5^dHTDkYcWW'+#[Jmf;_#D@Qbl5ugec+8$hYuI4 +j8S3?kPONClMKiFkPjWCj8S$:hYu4-ec*qpbQ,W``lA"nrk&0;ric=#rhKIbrg*PHrf6u4rdt,urc\9] +rbqdMrau.=ra5Y/r`T5#r_r\jr_EGdr_*5_r^m)[r^ZWNpdOjDLI6V[JO?"rnjN7Aog\pNr^d#[r_!/_ +r_3;cqb[8jr`/r#r`oG0raPk=rb;@MrcA'^rdOiureCE4rf[8Hrh'1cri,n#rjDa;rkSNQrlkAgrmh#$ +rnm_7!9F7Cjo4QEm/HJQo)A=]pAXmeqYpBkrVQTDs4%)JrqlZnr;QTmqYp3fp&=R^nG_hSli-)HjSn*: +h#>t*e,IYlao93W^&GP@Zi7$)VZ*:gRf8TOO8b"8K`6K#H2_scEW0hSC&V`D@/aL3>lIk)sDk +:B!ue9`@]a8cD9R8,,R57=dmY7=dn+7JK@F8,c'Y8cDB^9`@cc:B"&g;>sPolJ(/@/ad;C&VuK +EW1+[H2`t*e,IYlao93W^&GP@Zi7$)VZ*:gRf8TOO8b"8K`6K#H2_scEW0hSC&V`D@/aL3>lIk) +sDk:B!ue9`@]a8cD6\8+oIJ7Y+!n7=dmY7J0+E7eK:N8H)3[9E%Wa:&[oe:]=5j<;oqt=T2S) +?N+@3B)ZNDD>nPSFoH[cJ,Y-#M>iS8Pl@-NU&LqgX8]I)\Gj2@_u@aVcMl;lfDaS)hu;X7jo4KCl2L#J +lMg,KlMg,Kl2KoGjo4<>hu;F1f`'A!cMkrb_u@@K\Gii6X8]!qU&LM[Q2ZjDM>i2-J,X`mFoH@\D#nKj +rb;@Dra>_3r`oG)r`9"tr_`Ykr_EGer_3;ar^m)[ogedHJORXKJOP,Y_F=5hogf!Pr^m)^r_3;cr_EGg +r_`Yor`9##r`oG/ra>_;rb;@Krc.p[rd"Kmre19-rf@&CrgNh[rhf[qrj2U6rk8lIk)sDk:B!ue9`@]a8cD9R8,,Q)7JfN)7=dmg7JK@F8,c'Y +8cDB^9`@cc:B"&g;>sPolJ(/@/ad;C&VuKEW1+[H2`#]rm:Yprn7;,ro!e9roX4Erp'(@ +rp0RJroX4@ro!e3rn7;$rm:Yfrl>#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEa!,qsXE;j\QB`;N@ +@K'X5>5hY'sAj;#X5h9`@ZW8cD9U7tF.N7Y+$[7`%Xi8,GjS8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fHE;jtYH2`6kK)UT*NW,+?R/W]VU].7lYPts/]DfVFa8X9]d/MSpg&Bh,i;Vd9k5OWE +lLO<@li-/Jk5OH@i;VR3g&BP$ciD5ibKKn*rkSNFrjDa/ri,mlrgs+Vrf[8?reLK)rdFcjrcJ-YrbVRI +raYq9ra5Y.r`K/#r_i_mr_NMir_EGdr^uiTr^cfSJO]N+JOY2[O%/n7qagTUqb$i]r_lIt,=8l8"<;obo;#X8i +:B!ub9`%K^9&N;>8:a<_8:a=L8E3;=9)_KY9`@cc:B"&g;#X>k<;ons=8lG'?2e41@K'j;B`;lJE;jqX +HiAKnJGtE)NW,%=RJrcVT`1tjY5Ya+]DfSE_Z%aXci2Alg&Be+i;Vg:kPj]Em/-2Fn,D_Om/H5Jk5OH@ +i;VO2g&BG!cMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt,=8l8" +<;obo;#X8i:B!rf9`.T]9E%QA8V'F:8:asPoQ.q-?iFL5 +Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoiedf.r!h#?72jSn?Akl0rGmJ-/L +mJH8Lkl0`DjSn*:h#?"+df.PkbPoBX^AbbDZMq$+WrA[jSGnrUOT(4i&)IK"QnErg?'rc%jRrb2:B +raGe5r`oG,r`B)"r`&kor_WSir_EGeqb6l[r^u*?JOnflJOk>_h+6Qtqb$i\pe:Z]r_EGgr_WSkr`&ks +r`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbVrh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e: +roa:Erp9OLq!\4Lqs==GroX4@ro!e2rn7;!!6tVjcMl#d_Z%:K]Df,8Y5YI#T`1J\RJrlIt,=8l8"<;obo;#X8i:B!ub9`%K^9&N:,8:a<_8?,5@8c)-Z9DD3[:&[oe +:]=2i;>sPoQ.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoie +df.r!h#?72jSn?Cl2g28rpKdTrpp'^rqHEerqcWkqu-NndJqMlrr2oqrquclrqZQgrq??_rpg!Vrp0RJ +roa:>rndY/rmh"rrm(M_rkeZKrjMg2riQ0qrh07\rfmDDrf-o1rdk&trce?`rbqdPrb;@DraGe6ra,S- +r`K/#r`&kqr_i_lr_NMgpeC`]i(O#@JP(JcJP*gPj%K8CpeC`_r_NMir_i_or`&ktr`K/'ra,S2raGe< +rb2:IrbqdWrce?jrdk'%rf-o>rfmDPrh07driQ1*rjMg?rkeZSrm(Mjrmh#&rndY5roa:Frp'LMqsO7K +rpK[Nrp'LHroa:>rndY/rmh"rrm(M_rkeZKrjMg2riQ0qrh07\rfmDDrf-o1rdk&trce?`rbqdPrb;@D +raGe6ra,S-r`K/#r`&kqr_i_lr_EMh!DZDb:&[iE97]^>8qBTr9(GXG9D_EX:&[oe:]=2i;Z9Vo<;oqt +=T2M'?N+=2@K'mPl@3PT`1bdXo>X*[f4#?_Z%RScMl5jec+>&hYuL5 +kPj`FlMg2JmeH;NmecDNlMg#HkPjH>hYu:/ec+"rcMki__Z%:K[f3Q2Xo>-qT`1J\Pl?dDNW+V1Jc:)u +G6)o3rcJ-XrbVRJrau._3r`];'r`9"tr_reor_WSir_E5_r_26CJP+rpJP(Jch+H^#qb6cZr_EGg +r_WSlr_reqr`9##r`];-ra5Y5rau.CrbVRPrcA'_rdOitre191rfR2Erg`t\rhTOqrj)O3rkABKrl4r_ +rmC_qrnIG/ro*k>rosFIrpBUNq!e:NqsFCJroj@Ero*k5rnIG&!7Cnrdf.Pk`r5hY'Pl@3PT`1bdXo>X* +[f4#?_Z%RScMl5jec+>&hYuL5kPj]GlN->;rpTjVrq$-_rqHEfrqcWkrr)`ndJqMlrr2oqrqucmrqcWh +rqHEarpp'XrpB^Mroj@@ro!e4rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7re19$rd=]hrc8!W +rbVRIrac";ra5Y2r`fA)r`9"ur`&kpqbd5er_NMir_NDdnkJaMJP:VgJPKrh'1bri#h"rj;[8rkJHNrlP/crmUkt +rndY4ro3q@rp'LLrpK[Qq""FRrpTjSrp9XKroj@@ro!e4rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\L +rf@&7re19$rd=]hrc8!WrbVRIrac";ra5Y2r`fA)r`9"ur`&kprDX2h:]=2i:]!oX9n?!99S#lm +9`%Q]:%_9\;#X8f;#X>h;Z9Ypg;#X8i;#X8f:@_,=9S#lg9VG/Q:%_9\;#X8f;#X>h;Z9Yp_4 +ra,S.r`];(r`B)"!*'&"5hb*?N+=2@/aa: +B`;cGDuObUF8gLbI/\ZqLAm,1O8bFDRf8rYU].4kY5Yj.])KJD`;[mXcMl;lfDaM'hu;X7jo4TFmJcPQ +n,DnKoD\:Zn,DbPli-#Fir7j7gA]_'e,IYlao96X^](hD[Jm?.WW&[lTDk;YQ2ZjDMZ/>1J,t1NrdFcl +rcA'YrbqdNrb)4Ara>_4ra,S.r`];(r`B)"r`/hor_iMgr_S/Ab>3[bJPX?_qb[&bqbmDlr`/qur`B)% +r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhYrhKIkriZ7.rjr*Drl"fXrm(Mlrn%/' +rnm_7roO.FrpB^QrpTjWo(2kNrpTjSqs47Cro3q7rn7A(!S>s&e,IYlao96X^](hD[Jm?.WW&[lTDk;Y +Q2ZjDMZ/A0JGsurHN&!bEW0nUCAqlFAc?*:?iFC2>Q.h*=oMM%sCC:]=.@:Ou<,:]!u` +;>X8j;uTerQ.t.?iFI4Ac?BBCAr/NEW1%YHN&_4ra#M.r`];(r`Jqrpf.,hkYct0JPq%sX&Apqpf.#hr`K/&r`];+ra#M1ra>_8rac"B +rbMLNrc.pZrce?irdb!#repc9rfR2Jrgj%^ri,n!riuI5rk8elJ%.?iFI4A,^$U)\c0;A_#DFSbPolfec+8$ +h>ZC4jSn?Am/HDOn,DkSoD%tWoD\=[nc&"VmJcJOkPjTBiVq[4g&BP$d/M8gaSs!S]`,J@Z2Um)WW&Uj +Sc5&VOoCC?MZAA1K7j/RrdFcircS3[rbh^Nrb;@BraPk7ra5Y1r`oG+r`T5&pf@/hqbr&Dc;K3kJPsHb +r_rSkpf@Arr`T5(r`oG.ra5Y4raYq5h\(=SPql +<;TUF;Lq_s;NarW;ts>elJ%.?iFI4A,^$U)\c0;A_#DFSbPolfec+8$h>ZC4jSn?Am/HAPn,`%Jrpp']rq??eqtg_4qd'2+qcWo#qcEbtk#M@ZJQ.2"JQ0Ndk#M:Zr`Au!r`T,'ra#M1 +ra>_6rac">rb)4IrbqdTrcS3crdFcrre19+rf@&Arg!JRrh9=eriQ1)rj;[_4qcs2,!F/n,=oMP#=8l7_BDucIDuO_TFoH[cIK"crK`6c+O8b=AQ2[?RU&LkeXo>U)[/Rc< +_#D7Nbl5oedJhetg]$.1j8S3?kl0uKn,DkSoD\FXpA=O^oD\:Zn,D_Rkl0`Dj8S!9h#>t*dJhJkbl5NZ +_#D%H[/R-qT`1M]Q2ZsGNrXq9LPPk^rdaurrcnEbrc%jSrb_XIrau.?raGe6ra5P.r`o>'r`K&! +r`8/]JQ1Z/JQ.2"h,NN:qc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8G +rgj%^rhTOqriuI0rk8n2IB)Z?? +@K'[6?i+..>l.\'=Sl2!BDucIDuO_TFoH[c +IK"crK`6c+O8b=AQ2[?RU&LkeXo>U)[/Rc<_#D7Nbl5oedJhetg]$.1j8S3?kl0uKmf;kYnaZVNrq69b +qtg_4ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCi +riH+(rjMgrosFJrpTjVrq$$[rq?-]qtC$^rq$-ZrpTjProsFFro*k6 +rnRM(rmLelrlG)WrkSNFrjMg2riH*srhBC_rg<\Krf@&:reUQ)rdXoprce?`rc%jTrbVRKrb)4Brabn7 +!+,b6?iFI4?iFC/?2e+">P20N=g2%[=cceW>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_TFT-L` +I/\ToJc:K)MuJe:PQ$sKSc5A_VuEdsZ2V32]DfVF`W!sXci2Dmf)FJ(hYuL5kPj`Fli-APnc&.Wp&=[[ +p\X[`p&=R^nc&"Vli-/JkPjH>hu;F1f)F+sci2#b`;[RO]Df8_4 +ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMgrosFJrpTjVrq$$[rq?-]qtC$^rq$-ZrpTjProsFFro!k7!T2f6h#>n(df.SlaSs-W_#CtF +[f3Q2XT#-sUAg__R/WP20c +=b0_,=fPWq>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K)MuJe:PQ$sKSc5A_ +VuEdsZ2V32]DfVF`W!sXci2Dmf)FJ(hYuL5kPj`Fli-APnGr.]oCMtTrqHEerqcWkrqucoqu4e=bQ%A: +rqucmrqcWirqQKdrq-3\rpTjSrp0RJro=":rndY,rmh"qrlkA_rkn`Lrjr*:rilC&rhf[frg`tUrf[8A +rf$i2re(3"rd=]jrc\9\rc%jSrbMLJrb;7@rac";qdKJ3qd9#&nm23!JR!b2JR$)toj.,pra5P1raG\5 +qdf\;rb;@HrbMLNrbqdUrc\9crd=]pre(3)rf$i;rf[8Krg`t\rhf[qrilC0rji$Brkn`UrlkAhrmh## +rndY4ro="Brp0ROrpTjWrq-3_rq??dq"Od_rqHEbrq-3\rpTjSrp0RJro=":rndY,rmh"qrlkA_rkn`L +rjr*:rilC&rhf[frg`tUrf[8Arf$i2re(3"rd=]jrc\9\rc%jSrbMLJrb;7@!+Z+@AH$'8@K'[3?hIar +?%H7b>_-.A>kMD%?M.Y(?i+71@JaO2AH$0>C&VlHC]85NDuObUG5cacI/\WpKDpW)N;en;P5^mKSGo2\ +VZ*XqYl;'0\c0>B_u@^Ubl6#hec+5#hYuI4j8SOn,DnWo`"O_pAXj^p\ssep\sjbo`"F\n,DbS +li-/Jj8S$:hYu1,ec*tqbl5]__u@CL])K,:Yl:^&VZ*7fSGnoVOo^`/rf@&;reCE)rdXoprd"Kdrc.pV +rbh^NrbDFHqdob;raPb5ra>V1oj72pJR%5?JR!b2h-BVYnm;<&qdBD3qdTG5ral(CrbDFJrbh^Rrc.p\ +rcnEirdXp"reCE2rf@&ArgEbUrh07fri?%&rjDa9rkABLrl>#^rmC_qrn.5,ro!e9rosFJrpKdSrpp'\ +rq69arqQ9_rqQKerq69_rpp'WrpKdOrosFB!9!t;iVq^5f`'G#dJhAhaSs*V^Ab_C[JmE0X8]!qT`1J\ +RJrBKO8b+;LAli)J,XipH2`!dEW0qVDZ4GNCAqrEAc?6>@f'U5@/F=(?LhBf>_-.2>cM'%?1M>$?i+71 +@JaO2AH$0>C&VlHC]85NDuObUG5cacI/\WpKDpW)N;en;P5^mKSGo2\VZ*XqYl;'0\c0>B_u@^Ubl6#h +ec+5#hYuI4j8SOn,DkXoE"UVrq??crqZQirql]mq#8J:`W,r:rr)iorql]krqQKerq-3\qsaUP +rp'LEro="8rnIG(rmUknrlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!W +rbh^PrbDFGrb)+>rabn9raPG,nR-oUJRF%:Zs`Q8qdTP7qdf\;rb)4ErbDFLrbqdTrc8!ZrcS3erdFcr +re(3*rf$i;rfd>Irgj%]rhKInric=,rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3an+lkT +rq-3\qsaUPrp'LEro="8rnIG(rmUknrlb;]rkSNGrji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcm +rcS3^rc8!Wrbh^PrbDFG!+u=FBDZ9>AG]m9@e*rY@&.1]@"D_Y@JaO5A,Bg9Ac??AC&VlHD>nJQE;jnW +F8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X9]d/MMnfDaP(hu;X7jo4QEm/-;O +oD\C]p[@qTp\sgao)%qUmJcDMjo4<>hu;C0fDa7ud/M5fa8WmR]`,J@ZMq$+X8\mnT`1J^Q3!;;rfd>B +rf$i4re(3#rdFcmrcS3^rc8!Wrbh^PrbDFGrb)+>rabn9raPG,JRI);JRF%:c=$Irgj%]rhKInric=,rji$ArkSNRrlb;frmUkurnIG0 +ro3q=rp'LLqsaUVrq-3an+lkTrq-3\qsaUPrp'LE!94+?j8Rs8g]#h(e,I_nbPoQ]_#D"G\c/o6Y5YL$ +U]-qcSc4rSPQ$XBN;eY4KDpE#IK"TmFoHL^ErL%WDZ4MPCAqoGBDZ9>AG]m9@e*rb@"D^:@%1Qs@JaO5 +A,Bg9Ac??AC&VlHD>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X9] +d/MMnfDaP(hu;X7jo4QEm/-;Oo)SC`o^r.WrqZQirql]mrr)`naT'6Zrr2fnrquclqt^6crq??`rp]pT +rpB^KroX4?ro!e2rn7;!rm1Sgrl4rSrkJHCrjDa0ri?$qrhBCargNhQrfI,>rf$i2re(3"rdOinrd"Kc +rcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2rau+?JRsCDJRu`1qe#D3qe5tCqeH+GrbVRNqelCPrc.pYrcS3c +rd4WnrdXp"reCE2rf6u>rg3VRrh'1arhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2ro="?roj@KrpTjU +rq-3_rqHEfrqcWiq"k!crqQKgrqHEcrq-3ZrpKdQroj@Dro="9rnRM+rmLelrltG^rkeZLrji$9rilC& +rhf[hrh'1Yrg3VGrf6u:reCE)rdXorrd4WircS3^rc.pVrbhdS!H)fSD>nANC]8)GC&Vf4BDuLoA[#`s +AWUL#B)$$9BDZBAC&;ZEC]8/LD>S5ME;jkVF8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@& +[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTDmJcSRnG`(Zp&=^bq>U6iq=sgcq>U0gq>U-fpAX^`nG_kT +mJc>Kk5OE?i;VO2g&BG!ci22g`rN;eS2KDpB"If=]nH2_scFT-:ZE;jeTDZ4MPD#S5LCAV`EB^BC2AsR"Z +AV"EmAc$*1BDZBAC&;ZEC]8/LD>S5ME;jkVF8g=]H2`0iIf=irKDpW)N;ek:OT(UGS,T&ZUAh(iX8]@& +[Jm`9^]).M`r=6^d/MJmg&Be+i;Vd9k5OTDmJcSRnG`(Zo`4^ep\4[_qtg3frr)`naT'6Zqu6TnrquZj +rqcWhrq??`rpp'XrpKdMroj@Dro*k6rnRM(rmUkmrlY5[rkeZJrj_s7ric=%ri#girgs+Yrg!JHrf@&; +re^W/rdk&urdFclrcnEdrcJ-\rc8!Xrc%jTrbhUMrbV.@rbD1AJSB[LJSDo6qeGe>qeZ7KqelCOrc%jV +rc8!ZrcJ-`rd"KhrdFcqrdk''reUQ4rf@&Arg!JPrgs+_ri#gsric=.rji$ArkeZSrlY5drmUktrnRM0 +ro*k=roa:FrpKdTrpp'\rq??dq"jd_q"k!brq??`rpp'XrpKdMroj@Dro*k6rnRM(rmUkmrlY5[rkeZJ +rj_s7ric=%ri#girgs+Yrg!JHrf@&;re^W/rdk&urdFclrcnEdrcJ-\!-/*\ErL(XE;jeTDYn;MD";B@ +C4U*!Bn9uXC&;ZBC\qoED#S;KDZ4SRE;jkVErL.ZFT-L`H2`-hIK"`qJc:E'M#NA4O8b=AQ2[9PT)PG_ +W;`jsYPtp.\c0;A_Z%RSb5T`de,Iqth#?10iVr!=kPj`Fmf)_To)A:\pAXj^qY9s_qYp9hpAX^`o)A.X +mf)JMkl0`DiVqa6h#>n(e,I\mb5TE[_Z%7J\Gil7YPtU%VuWLlTqVIWrgWnPrfd>Brf$i5reCE'rdXoq +rd+Qgrce?`rcA'Zrc.pVrbqdRqec=Knn\5>JSEqSJSB[Lg1gG!okXG@rb_OMrbqdTrc.pXrcA'\rce?e +rd+QlrdXoureCE.rf$i;rf[8GrgWnYrh9=iri?%%rj;[8rk8nABC]8(1Bn9uLBr>\B +C@uB>D#S;KDZ4SRE;jkVErL.ZFT-L`H2`-hIK"`qJc:E'M#NA4O8b=AQ2[9PT)PG_W;`jsYPtp.\c0;A +_Z%RSb5T`de,Iqth#?10iVr!=kPj`Fmf)_To)A:\p&Ojgq"Xa_rql]mrr)WkaT'-Wrr2fnrqucmrqcWh +rq??arq$-[rpTjQrp'LHro=":rnm_-rmh"qrm(Mcrl4rQrk8rfmDKrgWnZrhBCgriQ1(rj)O7rk8dUrYl:s-])KDB +_#D@Qao9TbdJh\qf`'e-iVqm:kl0iGm/HJQnc&.Zp&=^bq#:-hqss[aqu6Hkq#:!dp&=R^o)A+Wm/H;L +kl0WAiVqa6f`'G#dJhGjb5TE[_#D%H])K#7YPtX(V#dEhrhKIbrgWnRrfmDDrf-o8re:?(qgeZprd=]j +rcnEcrcJ-\qf;[Upi-4Nrc%aQJSs1ZJSp$Ve8G/%rc%jTpi-4Pqf;[WrcJ-_rce?erd=]nqgeZure:?0 +rf6u>rfmDKrgWnZrhBCgriQ1(rj)O7rk80r +U]-nbS,ScRPl?dDNW+k8L&Q`%JGt#sI/\EjGlDmcFT-@YErL(RE;jeTE;OR5DLl\VDP:tFDuO_TDtn;N +EVjeUF8g:\G5c^bH2`3jIJ\QoKDpT(MuJb9OT(LDQidUrYl:s-])KDB_#D@Qao9TbdJh\q +f`'e-iVqm:kl0iGm/HJQnc&.Zp&=[cp]:0brqcWkrqucoqu4J4_Z0W7q#13irql]krqQKerq-3\rp]pU +rp9XMroa:Aro!e4rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sprh07^rg`tRrfmDErf@&;reg]0re19' +rdautrdOiprd=]lrd+Qhqfr*arc\0]nT9>(JTQHbZul:irc\9bqfr*crd+Qjrd=]nrdOirrdb!#re:?+ +reg]6rf@&@rfmDJrg`tZrh07fri,n"riuI1rji$CrkeZRrlkAermC_trn@A.ro!e:roa:HrpB^Rrp]pY +rq-3arqZQirql]mrr)Wirr)iorql]krqQKerq-3\rp]pUrp9XMroa:Aro!e4rnIG)rmC_krlkA\rkeZL +rji$:riuI*ri5sprh07^rg`tRrfmDErf@&;reg]0re19'rdaut!.FrtIf=cpI/\KlHN&3eGlDpdG5HE5 +FJO#0FFeQ5FoHR`GPcXaH2`-hHiAElIK"]pJ,XutKDpT(LAm)0N;en;OoCUEQN!ERT)PD^VZ*RoY5Y^* +[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4jSn?Ali-;Nn,DhUoD\C]p\t!fqYpBkr;QZir;QZor;QTmqYp9h +p\sgao)A.Xn,D\Qli-)HjSn*:hYu:/f`':tci2/f`W!aR^](eC[f3N3XoY].ri5sprh07^rg`tRrfmDE +rf@&;reg]0re19'rdautrdOiprd=]lrd+Qhqfr*arc\0]JTTLcJTQHbc?0&.rc\9bqfr*crd+Qjrd=]n +rdOirrdb!#re:?+reg]6rf@&@rfmDJrg`tZrh07fri,n"riuI1rji$CrkeZRrlkAermC_trn@A.ro!e: +roa:HrpB^Rrp]pYrq-3arqZQirql]mrr)Wirr)iorql]krqQKerq-3\rp]pU!:0aQm/H>MkPjQAi;VU4 +g]#k)dJhJkbl5T\_Z%=L\c0&:Z2Up*WrAmpT`1P^SGniRPl?gEO8b+;MZ/A0K`6W'JGt&tIf=cpI/\Kl +HN&3eGlDpdG5HE>FFeObFIRCOFoHR`GPcXaH2`-hHiAElIK"]pJ,XutKDpT(LAm)0N;en;OoCUEQN!ER +T)PD^VZ*RoY5Y^*[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4jSn?Ali-;Nn,DhUoD\C]p\ssgq>pHhrql]m +qu-Ek_Z.LQq#:0hrquclrqZQgrq69_rpp'XrpKdQrosFFroF(:rn[S-rm^qprm1Scrl4rSrkABCrjVm4 +ric=&rhf[irh'1\rgNhRrf[8Brf6u:reg]2reCE*rdt#uqg\TnqgA9fl[",.JU2lnZ$QCrpjE'hqg\Tq +rdk'#re19*reUQ2rf$i:rfI,Brg<\Rrgj%\rhKIiriH+&rj)O4rjr*CrkeZSrlP/crmLeqrn@A-ro!e: +roX4ErpB^Qrp]pXrq-3_rqQKgrqcNin,<7`rqcWirqQKcrq-3\rp]pTrpB^Lroa:Aro!e3rn@A$rmC_k +rlP/ZrkeZKrjr*rf$i6reUQ.re(9'!J5q#JbsrrIJ\EhH\$L7 +H@^BnHN&6iHh`!fIJ\NnJGt-!K)UH&LAm#.MZ/S6NrG.>P5^jJRf8lWTDkVbVZ*[rYPtj,\,Nu<^Ac"K +`r=*Zci2AleGe2$h>Z@3jSn<@l2L)Lmf)_To)A:\p&=acq>U6fr9sU`r;QQlq>U0gp&=U_o)A.Xmf)VQ +l2KlFjSn*:h>Z.-eGdkpci2&c`rrf$i6reUQ. +re19&qgnWordFZkqg3m?d<^@iJU5Lcrd4EfrdFZnrdb!!rdt-&reCE.reg]6rf6u>rf[8JrgNhWrh'1b +rhf[rric=,rjVmZ.-eGdkpci2&c`rP5^jJRf8lWTDkVbVZ*[rYPtj,\,Nu<^Ac"K`r=*Zci2AleGe2$h>Z@3jSn<@l2L)Lmf)_To)A:\ +p&=acq#L6lqYL*err)Wk_Z.:Krr2fnrquclqt^6crq??`rpg!WrpTjOroj@Dro3q7rn[S*rmh"qrm1Sd +rl>#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9reg]2qh>$&rdt#uomlI[JU`6#JUb.Y +npp^jqh"]ure:?-re^W4rf6u=rfI,Crg*PNrgj%\rh07eri#gtric=-rjMg=rkABJrl>#]rm1Skrm^r! +rn[S3ro3q>roj@HrpTjUrpg![rq69brqZHfqu$Hlq#:0hrquclqt^6crq??`rpg!WrpTjOroj@Dro3q7 +rn[S*rmh"qrm1Sdrl>#SrkJHFrjMg4ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9re^]3!JlR/L&Qc) +K):,lJ:W3DIt<*&J,XukJGt,sK):6#L&Qo-M>iG4NrG+=OT(ICQN!9NSc58\T`1eeW;`mtYPtm-[f3r= +^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[p&=^bq>:$cr;QZirqlZnr;QQiq>U-fpAX^` +nc&%Wn,DVOkl0`Dir7j7h>Z%*ec*tqci2)da8WpS^](kG[K3hFrj2U-riH*trh]Uergs+[rg<\Mrfd>C +rf@&=repc5reUH*re19&qgnEjJUc1!JU`6#d=:_;rdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_ +rh]UmriH+&rj2U4rk/6Erk\TSrlb;ermC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)Wk +qu-NlrqcNfrqHEcrq-3[!:U$YnG_nUlMg#Hk5OB>hu;I2fDa>"dJhJkb5TH\_>_4K]`,A=Zi70-XT#0t +V>d.eT)P;[R/WBMPQ$[CO8b1=MuJV5M#2o*K`6T#Jb=PKIt<*#J"D/\JGt,sK):6#L&Qo-M>iG4NrG+= +OT(ICQN!9NSc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*>kl0lHn,DhUnc&1[ +p&=^bq>L-jqYL*err)`n^]1kErr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:Yi +rlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,nV2UL +JVJ`1["eR8reUQ1qhkB2rf$i9rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQ +rlG)arm:Ymrn.5(rndY4roF(@rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu6Bjrr2fnrqucmrqcWhrqHEc +rq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VL +rf[8C!07/AO8b7?NrG%;N;eb4MZ/J3M#2sYL89QTL4P*YL]3,/M>N20MuJ\7NW+t;OT(=?OoCOCQ2[-L +RJrcVTDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nugA]t.i;Vg:k5OZFm/-8No)A:\pAXgc +q#:-hqu6NmrVQThs8N#prVl`oqu6Hkq#:$epAX^`o)%nTm/H;Lk5OE?i;VU4g]#k)df.VmcMkoa`W![R +^&bs^rk&0>rj)O-riZ7"rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,JVMd2JVJ`1 +cA)=RreUQ1qhkB2rf$i9rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)a +rm:Ymrn.5(rndY4roF(@rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu6Bjrr2fnrqucmrqcWhrqHEcrq$3] +!V5gYn,D\QlMfrFj8S!9hYu:/f`'=ud/M>iaSs0X_>_1J]Df>>ZMq*-Y5YF"VZ*@iT`1P^Sc5&VQi<9L +P5^UCO8b7?NrG%;N;eb4MZ/J3M#2sbL4P)1L7N20MuJ\7NW+t;OT(=?OoCOCQ2[-LRJrcV +TDkM_U]..iWW'("Yl:s-\Gj)=^AbtJ`W!sXcMl2idf.nugA]t.i;Vg:k5OZFm/-8No)A:\pAXgcq#:-h +qZ-Npr;?Qmqu4/+\c;[.qu-Nlrql]krqZQgrqHEbrq-3\rp]pTrp9XJroX4@ro!e3rn@A&rmUknrlkA` +rl>#SrkJHFrj_s8riuI+ri?$trhf[jrh9=`rg`tWrgEbQrg*PJrfd>ErfR2Arf?i7pl4p)JW,/=JW.1! +pl5'/rf@&?rfR2Crfd>Grg*PMrgEbTrgj%\rh9=erhf[oriH+&riuI1rj_s?rkABJrl>#[rlkAgrm^qu +rn@A-ro!e:roX4Drp9XOrp]pXrq-3_rqHEerqZQirql]mrr)`nq#C?mqu-Nlrql]krqZQgrqHEbrq-3\ +rp]pTrp9XJroX4@ro!e3rn@A&rmUknrlkA`rl>#SrkJHFrj_s8riuI+ri?$trhf[jrh9=`rg`tWrgEbQ +!1!YOQN!-JPQ$aEOoCIAO8+b1NId%dN.HqCN;JV6NVJP5O8b7?OoCOCPQ$gGQN!6MRJr]TSc58\U&Lke +VZ*RoXT#F&Z2V01\Gj/?^AbtJa8X3[bl5ugeGe%ugA]q-i;Vg:k5OTDm/HDOnG`"Xo`"O_p\sseq>U6i +qu6NmrVQThs8N#prVl`oqu6Hkq>U0gp\sjbo`"F\nG_kTm/H5Jk5OH@i;VR3gA]\&e,I_nbl5```rNpV +_86,crk/6?rjDa1ric=%ri,morhTOerh'1[rgWnTrg<\NrfmDGrf[8CrfI,?pl>-/JW/?7rfI,Arf[8ErfmDJrg3VPrgWnXrh'1`rhTOjri,muric=+rjDa8rk/6Erk\TSrlP/`rm:Yormq)& +rn[S3roF(@roj@JrpB^Srpp'\rq69brqQKgrqcWkrqucoqu6Bjrr2fnrqucmrqcWirqQKerq-9`!VH$` +o)A.Xmf)SPkl0`DjSn*:h>Z.-f)F.td/M8gao9?[_>_4K]`,G?[JmH1YPtU%WW&doV#I(eTDkA[S,SiT +R/WENPl?mGP5^UCOT(=9NqeTnN.Hq=N1l4*NVJP5O8b7?OoCOCPQ$gGQN!6MRJr]TSc58\U&LkeVZ*Ro +XT#F&Z2V01\Gj/?^AbtJa8X3[bl5ugeGe%ugA]q-i;Vg:k5OTDm/HDOnG`"Xo`"O_p\sseq>U6iqZ-Np +r;?Qmqu4/+\c;[.q#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4rn7;&rm^qorltGcrl+lS +rkJHHrjr*kl0lHn,DhUnc&1[p&=[aq#:*gqYpBkr;6HirqQNmrqQHkr;QTmqYpI"qi^rAplk]Brg*PMrg<\QrgNhVrgj%]rh'1`rhKIkri,mt +ric=+rj2U5rjr*CrkJHLrl+l[rm(Mirm^qurn7;-ro!e8roX4Drp'LOrp]pWrq-3_rq??drqZQirql]m +qu-Ekq#C?mq#13irql]krqZQgrq??arq-3[rp]pUrp'LHroX4>ro!e4rn7;&rm^qorltGc!6"uX`W!dS +^](tH])K2U6iqu6NjrVQThs8N#mrVl`oqu6Hkq>U0gp&Oadp%A=Vrpg!W +rpTjOroj@Dro3q8rndY-rn%/!rm:Yhrlb;[rkn`MrkABCrjVm5riuI+ri?$uri#gkrhBCarh07^rg`tV +rgEbQrg3VMrg!8Bplb31SZ.-ec+%scN)5kcHcF4 +rlG)Vrk\TKrk/6@rjVm5riuI+riQ1$ri5sprh]UirhKIeqk3_VrgrnUm$rWrm$iQqJXbekl(%XArgs"Z +pn7V[rhKIgrh]Ukri5suriQ1'riuI/rjVm_4K]`,J@\,N`5Z2Us+Xo>F$WrAmpV>d:iU]."bT_P/YT(nlCS=c:%Rt7'8S*?I? +Sc55XTD5)YU&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA^])(K_u@aVb5T]cci2Alec+;%h#$%/jSn<@ +lMg/In,DkVoD\F^pAXg`qYpBhquHZrrVcWm[f<]6qu6Tnqu$HjrqcWhrqHEcrq-3]rpg!WrpKdProj@D +roF(;rnm_1rn7;&rmh"prm(MerlG)Yrl"fOrkABErj_s9rjDa2rilC*riQ1$ri?$tri#^lrhfRhrhT=a +rhB%YJY@XgJYBZKqkEt_rhTFfrhfRjri#gqri?%"riQ1'riuI.rjDa7rj_s?rkABIrl"fUrlG)_rm(Mi +rmh#"rn7;+rndY5roF(@roj@JrpB^Srpg!Zrq-3`rqHEerqcWkqu$Hlq#9a^qu6Tnqu$HjrqcWhrqHEc +rq-3]rpg!WrpKdProj@DroF(;rnm_1rn7;&rmh"prm(MerlG)Yrl"fOrkABErj_s9rjDa2rilC*riQ1$ +!36.$X8]*tW;ELlVYd4hV"g_aU4K#9Tn/nmU&1S]U].(dV>d@hVuEXoWW&stXT#@$YPtg+ZMq92\,No: +]`,YE_#D:O`r='Ybl5oed/MSpfDaJ&h#?10iVqp;k5OTDm/HDOnG_tWoD\C]pAXgcq#:-hqtpF$X8]*tW;ELlVYd4hV"g_aU5bjtTn/o2 +U&1S]U].(dV>d@hVuEXoWW&stXT#@$YPtg+ZMq92\,No:]`,YE_#D:O`r='Ybl5oed/MSpfDaJ&h#?10 +iVqp;k5OTDm/HDOnG_tWoD\C]pAXgcq#:-hqtpU0gp\sjbo`"I] +nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^( +Xo>EsX8]-oWV!-?W.CmuW4Jr&WV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofd +ci2>ke,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQTVs8N#prVl`oqu6Hk +q>U0gp\sjbo`"I]nc&%Wn,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9 +[JmN3Z2h-,Yl:j*Y5YR&XSAjqWq`QEW2HSFW/%>KWW&moWr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No:]DfMC +^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`Fli-APnG_tWoD\C]p&=^bq#:*gqYpBkr;QZl +roX7[rqlZnr;QTmqYprk8EsX8]-oWK!j-W.Cn@W;*@h +Wr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No:]DfMC^])%J_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`F +li-APnG_tWoD\C]p&=^bq#:*gqYpBkr;QZnrW3#tYlCs-rr2Thrquclqt^-`rq??`rposTrp9XMroj@D +roF(;ro!e4rn@A(rmq(srm:YjrltGcrlP/Yrl"fQrkSEGrk/6Brjr*=rjVm8qmHF1qm61*o!/.tJZs^0 +J[!%ros+1qrj2L/rjDa6rjVm:rjr*@rk/6FqnW3Jrkn`SrlP/_rltGgrmC_nrmq)$rn@A.rnm_6roF(@ +roj@IrpBUOrpp'\qtC$`rqZHfqu$?iqu5aXrr2Thrquclqt^-`rq??`rposTrp9XMroj@DroF(;ro!e4 +rn@A(rmq(srm:YjrltGcrlP/Yrl"fQrkSEGrk/6B!4i3B])K5=\,Ni5[JmQ1Zhq'!Z%9-`Y^s$?Yk>:# +ZM:a)Zhq-/[JmW6\,No:])K>@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t.hu;U6jSn<@kl0oI +mJHAOo)A:YpAXgcq>:$cr;6HiroX7[rq66hr;QQiq>9pcpAX^`o)%nTm/H>Mkl0`DjSn-;i;VR5g&]p] +rn.5$rmLemrm1Sgrlb;_rl+lTrkeZMqnN-Crk&0@rj_s:rjM^3rj;R/qm,dtJ["1=JZs^0h6?RWos4S' +qm?@1rjMg8rj_s=rk&0BrkJ?GrkeZPrl+lYrlb;crm1SkrmLesrn.5(rndY3ro*k;roX4Drp0RNqsXOT +rq-*]rqHEfqtg3fqu-Ekk5YG[p&4mfrqZWjr;$6arq??`rposTrp9XMroj@DroF(;ro!e4rn@A(rmq(s +rm:YjrltGcrlP/Yrl"fQrkSEGrk/6Brjr*=rjVm8qmHF1qm61*o!+LbJZs^0Wj)0$os4S'qm?@1rjMg8 +rj_s=rk&0BrkJ?GrkeZPrl+lYrlb;crm1SkrmLesrn.5(rndY3ro*k;roX4Drp0RNqsXOTrq-*]rqHEf +qtg3fqu-Km!WN)&s02OurqlZnr;6BjqYp9hp\smcp&=U_o)A.Xmf)VQlMg#HkPjQAir7j7hYu:/g&BV& +ec+%sd/M>ic2Plbao9B\`W!gT_u@IN^\bbE^&G\>])0&8\F-g,\$ppsK=6?>`jYHIosk"3pq$I;rk83C +rkJHJrkn`Rrl+lXrlP/^rltGgrm:Ynrmh#"rn7;*rndY3ro3q" +e,I_ncMl)fb5TN^aSs0X`;[[R_#D+G^AbhF]_K)8\bio'[t2!P[Xkl<[c"Ub\+R91\bNc8]`,VA^AbnH +_#D7N`;[aTaSs<\b5TZbci2;je,InsfDaJ&g]$(/hu;X7jSn?Al2KuImJcPQnG`"Xo`"O_pAXgcq"spe +qtp>jrmUktrn.5)rndY3ro!e9roO.ArosFJrpKdSrp]pWrq-3_rq??crqQKgrqcWk +rquQiqu5FOrr2]krqucmrqcWirqQKerq??arq-*XrpTjSrp0RJroX4@ro="9rnm_3rnIG*rmq(trmL\j +rm(MfrlY5]rl>#WrknfS!Q2hS_Z%CH_#D+J_#D+J^?N=^]XGJ(]T^"s^&G_B^AbqI^\GVD_>_=N_u@UR +`W!pWao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3i;Vd9jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBk +r:p6frn[VRrqQHkr;QTmqYp>frltGbrlG)Zrl+lTrkn`Prk\BFrkJHJrkJHHl+MY\l+DS[J\9pRm(N;1rkSNJpqZmFrkeZPrl"fT +rl>#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro=">roX4Erp0ROrpTjUrpg![rq69arqHEerqZQirql]m +q#1*hh>dKRq#13i!;cfoqu6Hkq>U0gp\smcp&=U\nc&"Vmf)POl2KiEjSn3=i;VX5hYu:/g&BS%e,Iem +d/M>ic2PlbaSs6Z`W!gT_u@OP_>(hF^])%J^](t3]pu`d]Rd_t]^3?/^AbqI^\GVD_>_=N_u@UR`W!pW +ao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3i;Vd9jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6f +rW)u$s/5nrrq66hr:p-fq#:$epAX^`o)%qUn,DbSli-2Kkl0]Cj87d6hYu@1g]#q+f`'G#eGdnqd/2/g +cMl)fbl5fbb5TNXa8X*U`TtJ*`.>gq_h#_d_p64"`V[[Ma8X3[b5TT`bl5ldcMl/ed/MJme,Insf`'S' +g]$%.hYZ71j8S0>kl0iGlhg,InG`%Yo`"R`p\ss_qYU3frVQTDs8N#jrVl`iqYp9hp\smco`"FYnG_nU +mf)POlMg#Hjo4<;i;VU4h>Z1.gA]b(ec+(tdf.Vjci25hblGrgbfp(0rlY5^prEBRqo-t$J]#dNJ]"b1 +dDZ%&rl+cSprEBUrlY5`rlkAdrm(Mhqp>>jrmUksrn.5'rnIG.rndP1ro=">roj@Grp0ILqsaUVrq-3` +rqHEeq"jmcqu-EkeGoOIp&4mfq"k!brqHEcrq-3\qsaURrpKdOrp'LH!9F7Cjo4<;i;VU4h>Z1.gA]b( +ec+(tdf.Vjci25hc2PrdbPoZ`anWpU`r!a&`.>gW_h#`)_p64"`V[[Ma8X3[b5TT`bl5ldcMl/ed/MJm +e,Insf`'S'g]$%.hYZ71j8S0>kl0iGlhg,InG`%Yo`"R`p\ss_qYU3frVQTDs8N#lr;llqrquQfrqQKe +rq??`rposUrpTjSrp0RKroj@Cro"eGdqrdJhMici25hc1oN[ +bO!C0ab7`daFVG0aQ(D,b5TTZbl5ldcMPred/MGle,Ikrec+2"f`'S'g]$%+hu;U6ir8'=kPj]ElMg,K +mJcSRnG_tWoD\C]p&=^bq#:*dqYpBhr;QZirm^uCrr)crrVc`nqtpBhrqZQgrqHEbrq-3]rpg!WrpTjR +rp9XLroj@DroO.=ro*b3rnRM-rn7;'rn%/"rm^qrrmC_lqp58erlt5^qoe?Ki5rILJ]ND`aN3D`l,s"K +prr`^rm(Derm:YlrmUkrrmh#"rn.5'rnIG.qqqD3ro3q=roa:Erp'LKrpB^Rrp]pWrq$-]rq69brqQKg +qtgU0gp\smcp&=R^o)A1YnG_nUmf)MNl2KoGjo4??j87g7hu;L3h#?(-g&BY'f)F5!eGI_o +df.Yed-8lBc@O8lcDo1VcgoH^dJhSke,Ikrec+/!fDaJ&g]$"-hYuF3i;V^7j8S-=jo4KCl2KuImf)\S +nG_tWo)A7[p&=[ap\sseq>U6iqtpU0gp\smcp&=U\nb_eSmJcJO +li-2Kkl0`Djo4?MlMg#Hk5OKAjSRp8hu;R5hu;L3h#5t.gY;MVrn.,"n($RMJ^_KbJ^^@B +k1':Yp!s&nqq1\srnI>*qqh>1rnm_5ro*k;roO.Aroj@Grp0RMrpBUOrp]pWrq-3_rq??crqQKgqtgMlMg#Hk5OKAjSRp8hu;R5hu;L3 +h##k$g&BY$fC.8Pe:H*Adt,u!e*kcJeF1refDF4qg&Bb'h##t-i;VX5i;V^7jSn9?k5OTDl2L#Jm/HDL +n,DhUnc&1[p&=[ap\sseq>:$fqtpM +lMg#Hk5OKAjSRp8hu;R5hu;L3h##k$g&BY$fC.8Pe>UiIdt,u\e)o0Kec+1tf_F/!g\]e'hYuI4hu;R5 +iVqp;jo4EAkl0iGli-8MmJHAOnG_tWo`"O_pAXgcq#:*dqYpBhr;6Hirpg#ks.98`rr2lnr;6BjqYU*f +p\smcp%\.XnG_nUmf)VQm/H;FkkjK@jSn0:$fqtU*grUp0,s8Drmrr2lnr;6BjqYU*fp\smcp%\.X +nG_nUmf)VQm/H;FkkjK@jSn0?+,i;;O2jSn99 +kl0lHli-;Nmf)\SnG)VSp&=[ap\t!cqYpBer;QZfrpg#ks-Wi`rq66hr:p-fq"sg_p&=U_o)%tVnG_nU +mf)SPli-2KkkjQ?jo4?9iq;7&htu9uh1=C5h1=Ckh=]Y%ht#_#iqqg9jo4H?kl0lHli-8Mmf)\SnG_tT +o)&(Yp&=^_q"X^_r;6Hcrji(+rq66hr:p-fq"sg_p&=U_o)%tVnG_nUmf)SPli-2KkkjQ?jo4?;iW8&u +p#,N#qqcn[U"t:UK\cXaptko*o&0<&qrIbMlMg#EkPOB?jS7a-i:Z")hLXM4h1=C5h9k'O +hYZ4$i:u=/jSn9?kPOKBlMg,Km/HGPn,DhUnb_nSo`"O_p\Xa\qYU3frUp0%rrN0"qu69erquQfrqQBb +qt9s\rposVrp]pUrpKdPrp0RKroj7BqrRhroNh6puD&,pYg\^J`21=^u=kDpuD&.roO.Apuq_Arp'CHrp9XOqsOIQrpTjV +rposYrq69bqtU0dqtgl2KuFli-8MmJH>NnG_nUnc&+Vo`"O_ +p\Xabq>:$fqtpU0dpAjmap&=U_o)A1Yn,DhUn,DbSmJcJLli-2Kl1jKA +k5OK8jS7d.idp(EiITs=iS*8]iqVR,jSn9?k4n0>l2KuFli-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$f +qtpU0gp\sm`p&=U_oD\=[nc&"VnG_nUmecDNm/-,JlMKi=kkjQ6k4dtgjalNEjhU!E +k5OQ7kl0iDlMg,Hm/HDOmf)YRnG_nUnc&+YoD\CZp&=[ap\Xabq>:$fqtU*XrilFkrqQEgqu6Hhq>U0g +p\sm`p&=U_oD\=[nc&"VnG_nUmecDNm/-)Kl2g28qs!e;qrdP4J`WonJ`VmQp#c&3ro`k9ros=Frp0IJ +rpBUNrp]pUrpg!Yrq$-]qt9s^rqHU0gp\sm`p&=U_oD\=[nc&"VnG_nUmecDNm/-,J +lMKi=kkjQ6k)e\UjalNkjm;./kORj9l20cFlhg&JmJH>NnG_nUnc&+YoD\CZp&=[ap\Xabq>:$fqtU*X +rojBbs,@!QrqQHkr;6BjqYU*fq"sgbpAXa^o`"I]o(_bSnFc8LmecDKm/H>JlLO33k^hrKk^hs/kk438 +lMg,Em/HDLmecJMnG_tTnc&+YoDA1Zp&=[ap\Xabq>:$fqtpU0dp\smc +p&"C\oD\=Unc&%Nmf;bVmdBu>qs==Jqs*b:J`s#qJ`qmQqs""Bq!.kEq!A"IqsO@MqsaCNrpp'[qt0m\ +rq??cqtU0dqtgJ +lLO1jkh>6Ok^hsIkk438lMg,Em/HDLmecJMnG)PQo)A7Xo`"O_pAXg`q#:*dqYpBhr:p6criH.ks7lTg +rVl`lqu6Hhq>U0dp\smcp&"C\oD\=Unc&%Nn,DbPmJH8LlhfunG_tTo)A7[o`"L^p&"I[p\sseq=sgcqtpU0a +p\sm`p&=U\oD\=XnGr(VnEfUpm[NWqmXag$mdfi>nG_tTo)A7Xo`"O\pA=U`q#:*aqYpBhr:U$crf$mV +rpp$er;6?kqYC!eq>U0ap\sm`p&=U\oD\=Xnb_hBmt'oPmXaeWm`"Vbn+H2Lnb_nVoDA1Zp&"I[p\sse +q=sgcqtpU0dp\smZp&=UVoC_\On`]Inn:C([ +n>l'Xnac8JoDA1Qp&=[^p\ssbq=XU`qtU*grUTrHs7QBgrV6U0dp\smZp&=U^oD/"No)%s. +n=/oun:C*(nG_tKo)&%Uo_%nVpA=U`q"sm[qYpBer;QZcrf$mMrqlZhquHWlqtp6bq>U0dp\smZp&=UV +oC_\OnU^2Tn:C([nAXnrnac8JoDA1Qp&=[^p\ssbq=XU`qtU*grUTr_s6BXWrqlZhr;6BgqY9mcq"sgb +p@\+Xo_%hKo)%s.n:C([n<3;?nac8JoDA1Qp&=[^p\ssbq=XU`qtU*grUTs=s/uBQs8Duprpp$er:Tsa +qYU*fq"=CYpA=OOo^DDDnq$@_nq$ACo'c2=o`"OVpA=U]q#:*^qYU0er:U$]re(7Jrpp$er:TsaqYU*f +q"=CYpAOXbp%@eGn+2,$Vt,E0L[t?6p%.YErq5sXqtL!_rqZ6`qtp9gp&4R_KE(iJo)/Rd!W;lgqtp6e +q>U0^p\X[]p$_PAo7?Jdnq$@_o$m7!oC)>Np%A%Up\Xabq=XU]qtpNp%A%Up\Xabq=XU]qtp9s=pOW%up4;pgp>,Grp\"=\q="1Zqt9m[rV6AS +s4IAHrpp$br;6B[qYU*cpt,8+p4;pgp8[i?p\"=\q="1Zqt9m[rV6B1s/uBQs7--Urr2lhr9sO^qTep8 +pjr3kpjr4XpsJp7qXsa_qt9mdrTsN7s60LLrr2lhr9sO^qYg6:$Wqt9mdrTsN7 +s60LWrq??jrUp*Wqu6H;q18>$pjr3kptb_mq>:$Wqt9mdrTsNGs4IA:$Wqt9mdrTsO%s/uBQs5O(UrosCVr:9a9qLSKoqLSL2qXsa\r;QZ`rUp/@s3:T@rosCVr;-gBbqtU*UrUp0"s/uBQs3Uf:rmC]7r.4csr.4dQr7CoBrq68As/H%hrq-0GrIOmBr.4csr7Co6 +rdk*bs6BXTrmC[qr7Cjtr.4dkr7Co6rdk+@s0r%!rmC\%r.4csr1!W9rTsN\s/uBQs3UebrpK`9rIOou +rO;aKrq68As/H%[ro*j-rLs1@rIk.KrkeYcs1n["s2FtgrRCdsrIOpprP/>_s7?9"s2FtmrIOourLWu& +rhf^us+13Os471#rdk'"rgEcMs+13$s7u\Gre^W*rdk(2rdk*>s2P(irk/5]rdk'Trdk*qs-*J6rpTi; +rdk'"rW)qLs/uBQs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13Q +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13Qs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13Qs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s/uBQ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13Qs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s/uBQs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s/uBQs+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13Qs+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s+14Ds+10.rdk'"rp9W8s-E\9 +s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13.s7cNdrdk$,rIOourTsLIrdk*Ps+13$ +s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s.02\rq-0GrIOmBr.4csr7Co6rdk*bs+13$ +s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s0)J"rosCVr;-U0^p\X[_o`=aYn+?)?Jb#`0Jb"Te +qt'LPn+?VPp%J:WqtU0dp%nR_qu$-cp&9OBmJhb;JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$ +JcC<$JcF!prr2BbrquQgrqcWip%\4Rrq60\rUU']oC_\=nU^2-n:C(anGDbHnac8MoD%tWp%A%Oq#:*g +qY9sbr:9gcrdk+:s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s3UfFrpp$er;6Bd +qYps+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+14's7lTgrVl`lqu6Hhq>U0d +p\smcp&"C\oD\=Unc&%Nmf;bVmdBu>qs==Jqs*b:J`s#qJ`qmQqs""Bq!.kEq!A"IqsO@MqsaCNrpp'[ +qt0m\rq??cqtU0dqtgZ$GJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$ +JcFF'o)8RcqtpBhqt^6dq"F^Zrq$$Xrpg!Vrp]pUrpKdQrp9CF!UK(Kl20]8kP41jjeq3kjbMspk5ON9 +kOn's7u\Gs+13$s+13$s+13$s+13$s+13$ +s+13Qs+13$s+13$s+13$s+140s7lTgrVl`lqu6Hhq>U0dp\XX_o`"F\nc&"VnG_nUmf)VQm/-,JlMg&E +kQ0o2roX4Ap#Po.p#:P]Wo8NfNT'Qiro3_5p#Q,6roX">rosFIqs47JrpBUNrp]pUrpg!Yqt0m\rqHt)ht#_#iqqg9 +jo4H?kl0lHli-8Mmf)\SnG_tTo)&(Yp&=^_q"X^_r;6HcreUT*s+13$s+13$s+13$s+13$s+13$s+13Q +s+13$s+13$s+13$s+146s8N#jrVl`lqtp3gq"sgbpAX^`oD\=[nGD\RmJcJOli-/Jkl0cBjo4??ir7p6 +i;VU6h>uKip"]Q$o%NuoJ_6mQJ_5b1rn7;)o%O)tp"]H$qr%A2qrIbU0gp\smcp&=R^o)A1YnG_nUmf)MNl2KoGjo4??j87g7hu;L3h#?(-g&BY'f)F5!e,[tq +e,IepdIklNc[jBGc@O9&cLTU6iqtpkl0iGlhg,InG`%Yo`"R`p\ss_qYU3frVQSYs+13$ +s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s7cQmrqQHkr;QTmqYp#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro="> +roX4Erp0ROrpTjUrpg![rq69arqHEerqZQirql]mq#1*hRf@s=JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQ +JcC<$JcC<$JcC<$JcGTHrr2Thrql]krqZQgqtL*_rq-3\rp]pTrpB^Mroj@EroF(#Wrl"fRrk\TL!5AQL^\b_D]_f>?])0&;\F6nX[]m2k[ZIrg\,Nl6\Gj&9])K>= +]`,VD^])%J_>_@O`;[aTa8X3[b5TZbci2;je,Insf)FD&g]$(/i;Vd9jSn?Al2KuImJcSRnG`"XoD\F^ +p\Xabq>U6iqt9pergNkI"qi^rAplk]Brg*PMrg<\QrgNhVrgj%] +rh'1`rhKIkri,mtric=+rj2U5rjr*CrkJHLrl+l[rm(Mirm^qurn7;-ro!e8roX4Drp'LOrp]pWrq-3_ +rq??drqZQirql]mqu-EkVZ25IJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$LB%8Pq#13i +rql]jrqQKerq69_rpp'XrpKdProj@Dro="9rn[S.rmq(trm:YhrlP/Zrk\TKrk/6>rjDa2ric=%ri,mn +rhTOerh'1[rgWnSrg*VN!LB&NPl?mGP5CC@O8b7?O8b1:NUi$ZMmJ=mMjB:fN;eh6NrG.>O8b7?OoCOC +PQ$gGQN!6MR/WTSSc58\U&LhdV>dInXT#F&ZMq92\,O&>^AbtJ`r=*Zc2Q)heGe%ug]$%.i;Vd9k5OTD +m/HGPnG`"XoD\F^p\sseq>U9jr;6Hirhf^Hs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$ +s+^RQrqlZnr;QTmqYp9hp\smco`"FYn,D\QlMfrFj8S!9hYu:/f`'=ud/M>iaSs0X_>_1J]Df>>ZMq*- +Y5YF"VZ*@iT`1P^Sc5&VQi<9LP5^RDNrb<&rfI,>rf-o9repZ2re^W1qhK`WUkXGTJVO/ZreUQ1qhkB2 +rf$i9rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rndY4 +roF(@rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu3JmJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$ +JcC<$JcCT,rr2fnrquclqt^6crq??`rpg!WrpTjOroj@Dro3q7rn[S*rmh"qrm1Sdrl>#SrkJHFrjMg4 +ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9re^]3!JlR/L&Qc)K):,lJ:W3DIt<*&J,XukJGt,sK):6# +L&Qo-M>iG4NrG+=OT(ICQN!9NSc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*> +kl0lHn,DhUnc&1[p&=^bq>:$cr;QZlriH-Ns+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$ +s,@!WrqlZnr;QTmqYpi5.KE-W*K7j/SrdautrdO`mrd=Kfrd'-@Uj7N:KR*QCqg83f +rdFZmrdXotrdk'$re19)re^W3repc:rfR2Drg3VPrg`t\rhKIhri?%$riuI3rjr*Crkn`UrlY5drmLer +rn@A,ro!e9roX4Drp9XPrp]pYrq69arqQKgrqcWkrquZlrr0#!JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +Y5a(QJcC<$JcC<$JcCf2rr2]krqucmrqcWhrqHEarpp'XrpTjQrp0RHroF(:rndY/rn.4trm1Sfrl+lR +rkJHCrjMg2riZ7#rhf[frgs+Zrg*PJrfR2@rf$i6reCE*re(3#rdOos!IfLsIK"WnHiA?jH2DjcGQ)d_ +Fb+Y1FFeObFT-F^G5c^_GlE!fHN&9jI/\QnIf=irJGt3#L&Qi+MZ/S6O8b:@Pl@!JSGo,ZT`1hfWW'(" +Z2V01\c0AC_Z%ORbl5oedJhetgA]t.i;Vg:kPjfHmJcSRnG`%Yo`"Uaq>U6iqu6NjrVQSts+13$s+13$ +s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+132s8N#prVl`oqu6Hkq#:!dp&=R^o)A+Wm/H;Lkl0WA +iVqa6f`'G#dJhGjb5TE[_#D%H])K#7YPt['V>d7hTDk>ZQi<6KOT(7=MuJG0KDU2uIf=`oH2`$gFocc0 +rcJ-\qf;[Upi-4Nrc%aQJSqB'JSp6\qeuIQrbqRNrc.gUrcA'\rc\9brd"KjrdFZore(3(repc9rfI,D +rg3VRrh'1arh]UrrilC-rjr*BrkSNQrlP/brmC_qrn.5-ro*k:roj@Grp9XQrpg!Zrq69brqQKhrql]m +rr)`nYQ'1RJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$O8o"Rrql]krqZQfrq??arpp'X +rpKdNroj@Dro*k5rnIG&rmLelrlP/Zrk\TIrji$9ric=%ri#gjrgs+Yrg!JHrf@&;reUQ-rdk&urdFcl +rcnEdrcJ-\!-/*\ErL%WDu4GOD>S/HCOp5lC4U,NCAquIC\V`FD>S5MDuO_TErL.ZFT-L`H2`-hIK"`q +Jc:B&M#NA4O8b=AQ2[9PTDkSaW;`jsYPts/\c0;A_>_FQao9Wcdf.erg]$(/iVr!=kl0lHmf)_To)A=] +pAXgcq>U6iqtU,ns+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+135s8N#prVl`oqYU*f +p\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=hTDk;YQi<*GNrG":LAli) +J,XorHiArg3VRrh'1arhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2 +ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`n[JtgXJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$ +JcC<$P5kO\rr)iorql]krqQKerq-3\qsaUPrp'LEro="8rnIG(rmUknrlb;]rkSNGrji$6riZ7$rhKIc +rgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^PrbDFG!+u=FBDZ9>AG]m9@e*rY@&.1]@"D_Y@JaO5 +A,Bg9Ac??AC&VlHD>nJQE;jnWF8g=]HiAHmJGt3#L]383O8b@BQN!HST`1_cX8]=%ZMqE6^&GhHa8X9] +d/MMnfDaP(hu;X7jo4QEm/-;OoD\C]p\t!fqYpBkr;QZlrjDcWs+13$s+13$s+13$s+13$s+13$s+13Q +s+13$s+13$s+13$s-U0gp\sd`o)A+WmJcDMkl0ZBiVq^5f`'G#dJhAhaSs-W^Ab_C +[JmB/WrApqT`1J\R/W9JO8b+;LAli)J,XfoGlDmcErL%WDZ4GNCAqoGB)Z?AA-$4OraPb5ra>V1oj72p +JR#EaJR":Aoj.Q'oj7W)qdBD3qdTP8ral(@rb2:FrbMLNrc%jWrc\9crd4Wore(3)rf$i;rf[8Jrg`t\ +rhoarric=/rji$Brl"fWrlkAhrmh##rndY5roF(Brp'LMrpTjVrq$-`rqQKgrql]mqu-Nn[JtgXJcC<$ +JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$R/d0bqu-Nlrql]krqQKerq??_rpg!Vrp0RJroa:> +rnm_1rmq(srm1Sbrl"fOrk&0Brepc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.? +qdBJ3!FK45@/aO4?Me%->k2+l>(Kh\=b0_;=n5bh>Ph\)?2It-@/aO4@/aU6AH$0>BDuZFD#SAPE;jtY +GQ*!hIf=otM#N>3O8b@BR/WZUUAh(iXT#L([f3o<_#D=PaSsNbe,Iqth#?10iVr$>l2L#Jn,DkVoD\I_ +p\sseqYpBkr;QZlrj_uZs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s-WicrqlZkqu6Hk +p\smco`"C[n,D_Rkl0`Dj8S!9h#>t*dJhJkbl5NZ_#D%H[/R-qT`1M]Q2ZsGO8aq6K`6N$IK"Kj +FoH@ZDZ4MPBDuNBAH$$:@/aO1>l\+1>[7//r`K&!r`8/]JQ/jQJQ._1nl>?_qc<\tqcNi#qcs,+ra5Y4 +raGe:ral(Arb_XQrc%jZrd"Kkrdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8=&d;tX)d +<;T\pQ.q-?iFI4A,^$_OTbPolfec+8$h>ZC4jSn<@m/HGPnG`%Yp&=^bq>U6iqtU-"s+13$s+13$s+13$s+13$s+13$s+13$ +s/uBQs+13$s+13$s+13>s8N#prVl`oqYpQ.h*=oMM%_:rb2:GrbqdUrcA'brd=]qreCE1rf@&D +rgNhYrhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hlqu4>0JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcD5>rr2oqrqucmrqcWhrqHEarpp'XrpB^Mroj@@ +ro!e4rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7re19$rd=]hrc8!WrbVRIrac";ra5Y2r`fA) +r`9"ur`&kprDX2h:]=2i:]!oX9n?!99S#lm9`%Q]:%_9\;#X8f;#X>h;Z9YpU6iqu6NmrVQT.s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13As8N#p +rVl`oqu6Ejq#:$eoD\=[n,D\Ql2KiEi;VR3g]#_%d/M;h`W!^Q^&GG=Z2Um)V#I%dSGncPOT(4Arr2fnrquclrqQKerq??^rp]pTrp'LGroF(:rnRM+rmLekrlb;XrkABDrj)O+ +ri5sjrg`tUrfI,#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"rr_`Yj +r_WShr_3;`rCQfVr^cfSJOYnoJOY2[og\^HqagTUqb$i]r_`,ogJRDog\pN +r^d#[r_!/_r_3;cqb[8jr`/r#r`oG0raPk=rb;@MrcA'^rdOiureCE4rf[8Hrh'1cri,n#rjDa;rkSNQ +rlkAgrmh#$rnm_7roO.Erp9XQrpp']rq??erqcWkrr)`n_>f)dJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQ +JcC<$JcC<$JcC<$U&Y#grquclrqQKerq-3\rp]pTrp0RIro3q7rnRM(rmLelrl>#UrkJH?riuI)rhKIb +rgNhKrf-o6rdk&srcnE^rbh^Nrac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUNQ!C]HV7+t"Z6ENS* +6Ae,)6g6u87/fXM7fGpW8H)3[9E%Zb:]=5j;Z9\q=T2P(?iFO6AH$BDDZ4YTGlE*iJc:N*NW,(>Rf8oX +U].CpZ2V01^]).Ma8XEae,Iqth#?41ir80@lMg5NnG`%Yo`"Uaq>U6fr;QZ2s+13$s+13$s+13$s+13$ +s+13$s+13$s/uBQs+13$s+13$s+13Ds82cor;QQlq#:$eo`"F\n,D_Rl2KlFiVq^5gA]V$d/M8g`W!^Q +]`,8:Y5YF"U&LS]QN!!FMuJJ1J,XcnFoH@ZD#S,I@fBa6?2dt*_7rb2:Hrc%jZrd+Qn +reCE1rfI,Frg`t]ri,n"rj2U:rkSNPrlkAgrm^r$rn[S4roa:GrpB^Rrpp'\rqHEfrqcNirr'\5JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcDPGrr2fnrquclrqQKerq-3[rpTjProsFDro!e2 +rn7;"rm1Serk\TJrji$4ri?$qrh'1XrfmDAreLK)rd=]ircA'VrbDFFra>_2r`fA&r_r\jr_EGdr^m)[ +r^ZrWqaLKPrBp9G^I%ocJO%UJJO$J*r^#%#lpCA4qaCEPqaUQTr^d#[r_3;cqb[8kr`9#&ra,S3rb)4F +rbh^Vrce?hrdt-*rf-oArgNhYrhf[qrilC4rk8Are:?&rdFcgrc8!Urb)4@ra>_2 +r`T5$r_i_lr_EGcr_!/]r^ZrWqaLKPpI"aDd6`CL\Nk^2R6^"'k!JW+r^?WPr^QlWr^m)]r_*5cr_WSl +r`9#$ra#M2rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^R +rpg!\rqHEerql]mrr)`na8^_jJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$V#UGnrr)io +rqcWgrq??`rp]pTrp9XIroF(:rnRM*rmUkkrlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRF +raPk6r`];&r`/qor_EGer_!/]r^d#XqaLKPog8^Ga[1PD\Nk^2R6^"'h*V!+qaCEPqaUQUr^m)]r__2r`];%r_remr_NMer_!/\r^ZrWr^HfSogARBgHpHVVa,euLHt`'g-YI"r^?`Sr^QlWr^d#\ +r_3;er_WSnr`9#%ra#M2rau.ErbqdXrd"Klre:?/rfI,Grgj%_riH+'rjDa?rl"fXrm1Snrn.5,ro*k; +rp'LLrp]pXrq69brqZQirql]nrr0t_9rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7,rk8$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];. +raYq?rb_XSrcS3hrdt-(rf@&CrgNh\ri#h!rjMg=rkSNTrltGhrn7;+ro!e:roj@IrpTjWrq-3arqZQi +rqucorr1(?JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcDbMqu-NlrqcWhrqHE`rpg!V +rosFFro="7rn@A&rm:Yfrl4rQrjr*8ri?$prh'1Vrf[8@re(3"rd4Wbrbh^Nrac":ra5Y,r`/qrr_WSh +r_3;_r^d#Xr^HfSpd=I9m6Z@hPsBmcJO&lnf0]@%r^?`Sr^QlWr^m)_r_EGhr_resr`K/,raPk;rbMLO +rc8!brdXp"rf6u@rg3VVrh]Uprj2U7rkSNQrlkAgrmq)%rndY7roX4ErpTjVrq$-`rqZQiqu$Hlb5[%m +JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$WrN(srqucmrqZQgrqHE`rp]pSrosFEro3q6 +rn7;#rm1Sdrl+lNrj_s4ri,mlrgs+RrfI,_8rbDFLrc.p` +rdOiurf$iJcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcDbMrr)iorql]jrqQKdrpp'WrpB^KroO.ric="rhBC_rfd>Breg]*rd=]hrc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlT +ogA.6o0WFBJO#A`JO"cOnj*1?h*V!+qaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!* +rf6uArgj%_ri#h"rjMg>rl"fXrm(Mmrn7;,ro*k_2r`];$r_relr_JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +Y5a(QJcC<$JcC<$JcDbMrr)iorql]hrq??arpg!Urp0RGro="8rn@A&rmC_grl+lPrji$7riZ6qrgs+V +rfI,;re:?"rcnE`rbh^Mral(:r`oG*r`/qqr_NMer_!/]r^ZrWr^HTLkX#;:6MNit5`@sZ5_22e5kmY- +6MNqI7K,dU8,c*Z9E%Wa:]=8klJ.1Ac?ECDZ4_VGlE-jL&Qu/OT(XHT)PMaY5Yd,\c0DD`r=0\ +dJh\qgA^"/j8S3?li->Onc&4\pAXgcqu6NmrQ>.ks+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$ +s+13$s/l>#rr2lqr;QQlp\smcoD\7YmJcGNjo49=hu;=.ec*qpb5T?Y^](_AZMq!*UAg__Qi<'FM>i/, +I/\?hErKqTB`;QA?iF:/=T2;!;>sAj9`@Z`8cD3Y7K,^M6g-i;6:-5gK0XuQJO&6\k!Ji1r^?`Sr^QlY +r_*5ar_NMkr`&l!r`fA/rac"Brb_XTrce?hre(3,rf@&Frgj%_riQ1*rjVmArl"fYrm:Yprn7;.ro3q= +rp0RNrp]pYrq69brqcWkrr)`nd/S[sJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$XoJD" +rr)iorqcWgrq??`rp]pSrp'LEro3q7rn%/!rm1Scrl"fNrjMg1ri5sjrgWnPrf-o4rdk&qrc\9\rbMLF +raPk5r`fA(r_i_lr_NMdr_!/\r^QlUr^?WNj[&u76@hCS5_21O5iY,f6N0@O7/fXS7fGsX8cDB^:]=5j +;Z9et>5hk-@fC$>C]8>QG5cjfJc:H(NW,4BS,T)[WrB4$[f4&@`;[mXci2DmfDa\,ir8'=lMg2MnG`(Z +p&=^bqYpBkrVQT@s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13Ps8N#srVl`oqYp6g +p&=O]nG_eRl2KcCiVq^5fDa7uci1ua_u@CL[/R6-W;`IhRf8QNN;eS2JGsloFoH@ZCAqiE@fB[4=oMM% +;Z9Ml:B!oc8cD6Z7K,^M6fgW86:-5gK0XuQJO&6\i'R<.r^?`Sr^ZrZr_*5cr_WSlr`B)&ra#M4rau.E +rc%jZrd+QoreCE2rfmDNrh07hric=.rkABKrl>#armUkurndY5roF(Crp9XRrpp']rqHEgrql]nqu4tB +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcDkPrr2oprql]krqHEbrpp'Wrp0RJro="9 +rn[S)rmLekrl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau.lJ12Ac?ECDuOkXH2`Z@3j8S#rr2ipqu6HkpAX^`nc&"Vli-,Iir7j7h#>k'df.Pk`W!^Q +]`,59XT#*rSc4uTOoC4:K`6K#GQ)[_DuOGLAH$!9>lIk)sSp=T2S)@/a^9B`;rLF8gC_J,Y-#M>iY:QiU*eoD\7Ymf)POkl0T@hYu:/ec*tqc2PZ\^](kEZ2Uj(V>d"aQN!!F +M#N&+J,XTiErKtUBDuH@@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6h3S@62Eit5_21O5_22S5lO(96Mj.L +7/fXS7fGpW8cDE_:B",ilJ.1AH$6@DZ4YTFoHmiKDp]+OT(RFSGoAaX8]C']DfVF`;\$\dJh\q +g]$+0ir80@lMg5NnG`(ZpAXmequ6Njrm:[rs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$ +s/l>#rr2ipqYpn/H@fBa6>5hV&<;o_n:B!rd8cD9[7fGgQ6gR/=62*Wq5_21O5_22P5lO(96N0@L7/f[T8,c*Z9`@cc +;#XGn=T2M'?iFR7B)ZZHEW1+[If=ruL]3A6Q2[U9jr;6K?s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13Ss8N#srVl`oqYpn,G@fBa6=oMM% +<;o_n:B!rd8cD9[7fGgQ6gR/=62*Wq5_21O5_22P5lO(96N0@L7/f[T8,c*Z9`@fd;#XGnZC4kPjcGmf)_ToD\F^q>U9jr;QZo +rm:[rs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s02P&rr2lqqu6Hkq>U'doD\7Ymf)MN +kPjH>hYu7.e,I\mbPoBX^&GP@Yl:X$UAgV\Pl?aCL&QW%HiA*cE;j\QAc?0lMg5NnG`%Yp&=ddqYpBkrVlfCs+13$s+13$s+13$ +s+13$s+13$s+13$s/uBQs+13$s+13$s+13Ss8N#srVl]nqYp";Z9Ml:&[fb8H)-Y7ef@;6N0:F5_21O +5_21O5hA:#60pr56iKRS8,c'Y9E%Zb;#XAlZ@3kPjcGmJcVSoD\F^q>U6iqu6Qnrm:[rs+13$s+13$s+13$s+13$s+13$s+13Q +s+13$s+13$s+13$s02P&rr2lqqu6Hkq#9scoD\7Ym/H8Kk5O<sSp=T2Y+@K'g:C]88OErLFbJGt6$NW,+?R/WfYVuEju[f3r=_>_UVcMl8kg&Bh, +i;VmU9jrVlfCs+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13S +s8N#srVl]nqYp9hp&=R^nG_eRl2KfDi;VO2g&BCuc2Pia_>_+H[f3H/VuE@gR/W9JNW+S0J,XfoErKtU +C]7lD@/aI2=T2>";>sDk:&[fb8,c!W7JK7=6Mj(C5_21O5_21O5h&'u617/86iKOR7fGpW9E%Zb;#X>k +KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'g:CAr,MErLCa +If>!!NW,+?QiU9jrVlfCs+13$s+13$ +s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13Ss8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&BCu +c2Pia_#CtF[Jm?.VuE@gQi<-HN;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6LdsPo=8lM)@/a[8CAr)LEW17_If=ruN;et=QiU9jrVlfCs+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13Ss8N#s +rVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF[Jm<-VZ*7fQi<-HN;eG.IK"NkEW0kTCAq`B +@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6LdnPSH2`9lK)U`.OoC^HT`1kgXo>a-]DfVFao9Qad/M_th#?72jSnBBm/HJQo)A:\q#:*gqu6Qn +rm:[rs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s02P&rr2lqqu6Hkq#9pbo)A+Wm/H5J +jSn*:h#?"+d/M8gao9*T]Df5;Xo>3sT`1;WOoC==K)U2tH2_g_DZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr)LEW17_If=ruN;et= +QiU9jrVlfCs+13$s+13$s+13$s+13$ +s+13$s+13$s/uBQs+13$s+13$s+13Ss8N#srVl]nqYp9ho`"F\n,D\Qkl0ZBi;VO2g&B@tbl5``_#CtF +[Jm<-VZ*7fQi<-HN;eG.If=ZmErKtUCAq`B@/aI2=8l5!;>sAj9`@Z`8,c!W7JK7=6Lda-]DfVFao9Qa +d/M_th#?72jSnBBm/HJQo)A:\q#:*gqu6Qnrm:[rs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$ +s+13$s02P&rr2lqqu6Hkq#9pbo)A+Wm/H5JjSn*:h#?"+dJhDiao9*T]Df5;Y5Y?uT`1;WOoC==K)U5u +HN%saDZ4DMA,]m8?2dq)sPo=8lM)@/a[8CAr,MErLCaIf=ruN;et=QiU9jrVlfCs+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13Ss8N#srVl]nqYp9h +o`"F\nG_eRl2KfDi;VO2g&BCuc2Pia_#CtF[f3H/VuE@gQi<-HNW+S0J,XcnErKtUCAqcC@/aI2=T2>" +;>sAj9`@Z`8,c!W7JK7=6LdK`6K#HN%saDZ4DMAH$$:?N+(+sSp=T2Y+@K'g:CAr,MErLCaJ,Y-#NW,+?Qi<]X +VuEju[f3r=_#DLUcMl8kg&Bh,i;VmU9jrVlfCs+13$s+13$s+13$s+13$s+13$ +s+13$s/uBQs+13$s+13$s+13Ss8N#srVl]nqYp9hp&=R^nG_eRl2KiEi;VO2g&BG!cMkuc_>_+H[f3H/ +W;`LiR/W9JNW+V1J,XfoErKtUC]7lD@K'U4=T2>";>sDk:&[fb8H)*X7JK7:6N0:F5_21O5_21O5hA:# +60pr56iKOR8,c'Y9E%Zb;#X>kZ@3k5OTDm/HMRoD\F^q#:*gqu6Qnrm:[rs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$ +s+13$s02P&rr2lqqu6Hkq>U'doD\7YmJcALkPjE=h>Z.-df.PkbPoBX^&GM?YPtL"UAgV\Pl?^BK`6K# +HiA*cDuOPOAH$$:?N+(+Z@3kPjcGmJcVSoD\F^q>U9j +r;QZorm:[rs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s02P&rr2lqr;QQlq>U'doD\7Y +mf)MNkPjH>hYu7.e,I\mbPoBX^&GSAYl:[%U]-_]Q2ZjDLAlc'I/\6eE;j_RAc?3=?iF7.=8l1u;#X5h +9`@W_8H)*X7/K@<6N0:F5_21O5_21O5hA:#60pr;6i0:N7fGpW8cDE_:B")h<;oqt>5hn.@fBsnPS +FT-[eJGt<&O8bCCRf9)]WrB7%\c0>B_Z%aXci2DmgA]q-iVr$>lMg5NnG`%Yp&=ddqu6NmrVlfCs+13$ +s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13Ps8N#sr;QQlq>U*eoD\7Ymf)POkl0T@hYu:/ +eGdhobl5NZ^](eCYl:[%V#Hn`Q2ZjDL]2r*If=KhEW0hSB)Z9=?iF7.=8l1u;#X5h9`@W_8H)*X7/K@< +6N0:F5_21O5_21O5hA:#60pr;6i0:N7fGpW8cDE_:&[ug<;p#!>5hn.A,^*>D>nPSFoHjhK)UQ)O8bFD +SGo>`WrB7%\c0>B_u@mZd/MPog]$+0ir80@lMg5NnG`(ZpAXmequ6Njrm:[rs+13$s+13$s+13$s+13$ +s+13$s+13Qs+13$s+13$s+13$s/l>#rr2ipqu6HkpAX^`nc&"Vli-,Iir7j7h#>h&d/M;h`;[ON]Df)7 +XT#'qSc4rSOT(+9KDp?!G5cO]DZ48IA,]j7>Q._'!!M>iV9QidOpZ2VB7_#D:O +c2Q,ieGe8&hu;X7kl0oIn,DkVo`"R`qYpBkr;6K?s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$ +s+13$s+13Ps8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1ec+"rcMkf^_>_+HZMps)VZ*.cQi<-HM>i2- +J,XZkF8g+WB`;QA@/aF1=T2>";>sAj9`@W_8H)*X7K,^M6gR/95_21O5_21O5h\Kf6Mj.L7/fXS7fGpW +8cDE_:B",ilJ.1AH$9ADuOhWGQ**kK`6i-OoC^HSc5McXo>X*]`,_G`W"0^dJh\qh#?41ir80@ +li-APnc&1[pAXpfqu6Njrm:[rs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s/l>#rr2ip +qu6Hkp\sjbo)A+Wli-/Jj8S!9h>Z")df.Pk`rL&QT$H2_maDuOJMB)Z6< +>lIn*JO"iQJO"cOj$;Nhqa:?Nr^HfVr^m)]r_rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWk +rquZmd/S[sJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$XoJD"rqucmrqcWgrq??_rpTjQ +rp'LDro*k5rmq(srm1Sarkn`Lrj;[.ri,mirgNhNrf$i3rdk&prcS3ZrbMLFraGe3r`T5%r_i_lr_EGb +r^m)[r^QlUr^?WNj[&u76@hCS5_21O5iY,f6N0@O7/fXS7fGsX8cD?]:B")h;Z9bs>5hh,@K'mQ.b(;Z9Ml:]=#d9)_B\7fGjU +7/K@5630D>JO"iQJO"cOj$;Nhr^6ZQr^HfUr^d#[r_*5dr_`Ymr`K/'ra,S5rb)4Grc.p\rd4WqreLK4 +rg!JPrh07jric=0rkJHNrlP/crmUkurnm_7roO.ErpB^Srq-3_rqHEgrql]nqu4tBJcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcDkPrr2oqrquclrqHEcrq$-YrpB^NroO.=rnm_.rmh"prlY5Y +rkJHArj)O*rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Yr^HfSpd=73!CB,( +5_D=Q5_22\5itE.6iKLQ7K,dU8cDB^9`@ie;Z9Yp=T2P(?iFU8C&VuKErL:^I/\ctM>iS8Qi#rr2lqr;QQlq#:!do`"@Zmf)SPk5OE?hu;C0f)F(rbPoK[_#CnDZi7-, +U]-kaR/W3HMZ/;.If=WlF8g(VCAqfD@/aF1=oMD";Z9Jk:&[ca8cD3Y7K,^M6g-i;6:1H5JO#/ZJO"cO +lp1>3k!Ji1r^?`Sr^QlYr_*5br_NMkr`&l"r`oG1ral(Crbh^VrcnEkre19.rfI,Hrgs+ariZ7,rji$D +rl4r\rmC_rrnIG0ro="?rp9XPrp]pZrq??drqcWkrr)`nd/S[sJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQ +JcC<$JcC<$JcC<$WrN(srqucmrqQKdrq69\rpTjQroa:Aro!e1rmq(srlkA^rk\TFrjDa/rh]UdrgNhJ +repc1rdauorcJ-YrbMLGra>_2r`];$r_relr_JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcDbM +rr)iorql]jrqQKdrpp'WrpB^KroO.ric="rhBC_rfd>Breg]*rd=]hrc%jQ +rb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTogA.6o0WFBJO#A`JO"cOnj*1?h*V!+qaCEQr^ZrYr_!/` +r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrm(Mmrn7;,ro*k_2 +r`B)!r_`Yjr_3;ar^d#Yr^QlTogA.6o0W=?JO#JcJO"cOog&LBg-Y[(qaCEQr^ZrYr_*5br_NMjr`&ku +ra#M2raYqBrb_XSrd"Klrdt--rfI,Erh'1cri5t'rj_sArl+lZrm1Sorn7;,ro3q>roj@Lrp]pXrq??d +rqcNirr(">JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcDbMqu-NlrqcWhrqHE`rpg!V +rosFFro="7rn@A&rm:Yfrl4rQrjr*8ri?$prh'1Vrf[8@re(3"rd4Wbrbh^Nrac":ra5Y,r`/qrr_WSh +r_3;_r^d#Xr^HfSpd=I9m6Z@hPsBmcJO&lnf0]@%r^?`Sr^QlWr^m)_r_EGhr_resr`K/,raPk;rbMLO +rc8!brdXp"rf6u@rg3VVrh]Uprj2U7rkSNQrlkAgrmq)%rndY7roX4ErpTjVrq$-`rqZQiqu$Hlb5[%m +JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$WrN(trr)iorqcWhrqHEarpg!Vrp0RIroF(: +rnRM+rm:YgrlP/Trk&0$Kr^HfUr^ZrYr^m)`r_NMir`/r"r`];.raYq?rb_XS +rcS3hrdt-(rf@&CrgNh\ri#h!rjMg=rkSNTrltGhrn7;+ro!e:roj@IrpTjWrq-3arqZQirqucorr1(? +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcDbMrr2oqrquclrqZQgrq-3\rpTjRrosFE +ro!e3rn@A"rm(MdrkeZJrj_s3ri5snrg`tRrfI,9re(3"rce?_rbqdLrac"9r`oG*r`9"rr_WShr_!/] +r^d#Xr^HfSpd=R_:rb2:L +rcA'_rdXp#re^W9rg*PRrhTOnrilC3rkABKrlb;ermLf"rn[S3roX4ErpB^Rrpp'\rqQKgrqcWlrr)iq +b5[%mJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$WrN(tqu-NjrqZQgrq-3\rp]pSrosFF +ro*k5rnIG$rm:Ygrkn`Mrjr*5ri?$qrgs+Vrf[8=re:?%rd"KbrbqdNrau.=ra#M+r`B(sr_`Yjr_3;` +r^m)YqaL'CpHn.3r]u*#Rm;NiJO')tr^#@,ogA^IqaUQVr_!/`r_NMjr_i_sr`];,raPk=rbDFNrcJ-b +rdb!&repc=rg<\Vrhf[rrilC5rkABLrlkAfrmUl$rndY5roa:GrpB^Srq$-]rqQKgrqcWmqu4b_9rb;@Krc8!^rd=]treUQ6 +rg!JOrh07iriZ7,rk8#UrkJH?rilC&rhBC_rg3VGrepc0rdOilrcJ-XrbDFFraGe4r`fA&r_remr_EGdr_!/\r^ZrWpdFmE +qEiq'JO$+uJO"uUqa0"'pd=gEr^QlWr^d#\r_*5cr_WSnr`9#&ra,S4rb)4GrbqdXrd"Klre:?/rfI,G +rgj%_ri?%&rjDa?rkn`Urm1Smrn%/+ro*k;rosFKrpTjVrq-3`rqcWkrqucoqu4bAre:?&rdFcgrc8!Urb)4@ra>_1r`T5%r_i_lr_EGcr_!/\pdY$H +qa1?Ma[1PD\Nk^2R6^"'h*V*.pdFmHr^d#[r_*5cr_WSlr`B)%r`oG1rac"@rbh^TrcS3grdk'&rf6u@ +rg<\Xrhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^Srpp'\rq??drqcWkrr)`na8^_jJcC<$JcC<$ +JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$V#UGnrr)iorql]jrqHEbrpp'XrpKdMroa:@rnm_/rmq(q +rlkA_rkSNFrjDa/ri#gjrgNhOrf@&7re19#rcnEarbqdNrau.=ra5Y/r`K.ur_i_kr__2r`fA&r_r\jr_EGdr^m)[ +r^ZrWqaLKPrBp9G^I%ocJO%UJJO$J*r^#%#lpCA4qaCEPqaUQTr^d#[r_3;cqb[8kr`9#&ra,S3rb)4F +rbh^Vrce?hrdt-*rf-oArgNhYrhf[qrilC4rk8rndY/rmh"qrltG\rkSNGrj2U-ri5sjrg`tSrf@&9re:?$rd+Qdrc%jQrb;@Ara>_2r`K/" +r_renr_NMfr_*5_r^coVr^QcR!(?`Qqa8+bJO.RIJO-P,d6d1dr^6?Hr^H]Rr^ZrYr^m)^r_rp'LM +rpTjWrq-3arqZQiqu$Hlqu4Y9JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcDGDqu-Nl +rqcWhrqHEarpp'XrpKdOroj@@rnm_1rmq(srm1Sarkn`MrjMg2riQ0prh'1YrfR2>re^W*rdFcjrc.pT +rbMLDraPk6r`fA'r`/qqr_`Yjr_sJmQ/"/@fBp;C]85NEW14^I/\]rM>iM6OoCgKT)PMaXo>X*[f4&@_u@^Uci2Dm +f)FJ(hu;X7kl0lHmf)_ToD\C]p\t!fqYU3irPAMbs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$ +s+13$s.TJlrqlZnqu6Hkq>U*eo`"F\n,D\QlMfoEir7j7g&BP$d/M8g`rlJ+0@fC!=C&W&MF8g@^If=ruLAm54P5^dHTDkYcWW'+# +[Jmf;_#D@Qbl5ugec+8$hu;X7jo4QEm/HJQo)A=]pAXmeqYpBkrVQT1s+13$s+13$s+13$s+13$s+13$ +s+13$s/uBQs+13$s+13$s+13Ds8N#prVl`oqu6HkpAXaaoD\7YmJcGNkPjQAi;VO2f`'A!cMkrb_u@@K +\Gii6X8]!qU&LM[Q2ZjDM>i2-J,X`mFoHC[D>n8KB)Z3;?N+4/=T2A#<;obo;#X5h:&[ic9E%N^8,u0R +8,,Q)7?p;m7=do#7JK@F8,c'Y8cDB^9`@cc:B"&g;>sPolJ(/@/ad;C&VuKEW1+[H2`Z+,ec*qpbPoQ]_#CtF[JmB/WW&[lT)P,VP5^I?L]2o)IK"KjFT-7YD#S,IA,]p9?iF7.=T2A#;Z9Pm +:]=2i:B!rd9)V?W8cD9U7tF-p7Y+$[7eK7G8,GjS8c)-Z9`@cc;#X8i;>sJm5hn.@K'd9B`;fH +E;jtYH2`6kK)UT*NW,+?R/W]VU].7lYPts/]DfVFa8X9]d/MSpg&Bh,iVqslIt,=8l8"<;obo;#X8i:B!rf9`.T]9E%QA8V'F:8:asPo +Q.q-?iFL5Ac?BBD>nMRF8gOcIf=lsM>iM6OT([ISc5;]WrB1#ZMqK8^])+LbPoiedf.r!h#?72 +jSnBBlMg5NnG`"XpAXgcq#:-hqtp?krkAD`s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$ +s-s&frr2lqr;QQlq>U0gpAX[_nc&"Vli-/JkPjH>hYu:/ec+"rcMki__Z%:K[f3Q2Xo>-qT`1J\Pl?dD +NW+V1Jc:,tGQ)^`DuOSPC&V`D@K'[6?N+.-=T2A#<;ohq;Z9Ml:B4,j:/:RYr_26CJP*.=JP)"rnk8OH +qb6cZr_EGgr_WSlr_reqr`9##r`];-ra5Y5rau.CrbVRPrcA'_rdOitre191rfR2Erg`t\rhTOqrj)O3 +rkABKrl4r_rmC_qrnIG/ro*k>rosFJrpTjVrq$-_rqHEfrqcWkrr)`n^AicaJcC<$JcC<$JcC<$JcC<$ +JcC<$JcDnQJcC<$JcC<$JcC<$S,`Kerr)iorql]krqQKerq-3\rp]pSrp'LHro3q8rndY*rmUkmrlP/X +rkJHCrj;[.ri#glrh'1WrfmDCreUQ,rdauqrce?^rc%jQrb2:AraPk6ra,S.r`T5$r`/qsr_i\l!Du_k +;#X8i;#X8f:@_,19W(R89SZ==:&@ZX:B")h:]!uf;>X8j<;onsQ.t.?iFO6AH$9AC]8;PErL:^ +I/\ZqK`6f,O8b@BR/W`WU].4kYPtp.\c0AC`;[mXci2Dmf)FP*i;Va8kl0lHmJcVSoD\C]p\t!fqYpBk +r;QZlrkAD`s+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s-s&frqlZnr;QQlq>U0gpAX^` +nc&"Vm/H>Mjo49=hu;@/fDa7ucMkrb`;[ON])K,:Y5YF"U]-nbRf8TOO8b%9LAl`&IK"QlF8g1YDuOMN +BDuKA@/aO4?N+1.>5h\(=8l5#<<6*"qc!Jlpeh#eJPVY/JPUhmqbR)cpegodr_rerr`9#"r`T5(r`fA. +ra5Y4ral(BrbDFNrc.pYrd+Qkrdb!&repc:rg!JOrh'1bri#h!rjDa:rkJHNrlP/brmUkurn@A/ro3q= +rp0RNrpTjVrq-3`rqQKgrqcNirr)`n^AicaJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$ +S,`Bbrr)iorqcNfrq??`rpp'XrpKdProa:Bro*k4rn7;$rm:YgrlG)Srk/6@riuI)ri,mjrgj%VrfR2? +repc.rdaurrce?arc.pTrbMLIrac";ra>_4ra#M.r`];(!*B8(=SPql<;TUF;O^R8;Lqa@;Z9Vi<;9Mn +=T2J&>5he+?2e41@/a[8AH$^WW'%!Z2V<5^&GhHaSsB^ +d/MSpg&Bh,iVqp;kPjiImJcVSo)A=]pAXmbqYpElrV6B+s+13$s+13$s+13$s+13$s+13$s+13$s/uBQ +s+13$s+13$s+13;s8N#prVQKkqYp6gpAX^`nc&"VmJc>Kk5OE?i;VO2f`':tci2/f_u@IN^&GDn2IB)Z??@K'[6?i++/>QJ)7qcWo#qcEbtk#Ht3YZ-0Q +OAtdNoi:lir`Au!r`T,'ra#M1ra>_6rac">rb)4IrbqdTrcS3crdFcrre19+rf@&Arg!JRrh9=eriQ1) +rj;[P20N=g2%[=cceW>4l+s>lJ%+?N+@3?iFI4@K'g:Ac??ACAr&KDuO_TFT-L`I/\ToJc:K) +MuJe:PQ$sKSc5A_VuEdsZ2V32]DfVF`W!sXci2Dmf)FJ(hYuL5kPj`Fli-APnc&.ZpAXgcq#:-hqu6Nm +rVQT(s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13;s7lTmr;QTmqYpV1oj72pJR#EaJR":Aoj.Q'oj7W)qdBD3qdTG5ral(CrbDFJrbh^R +rc.p\rcnEirdXp"reCE2rf@&ArgEbUrh07fri?%&rjDa9rkABLrl>#^rmC_qrn.5,ro!e9rosFJrpKdS +rpp'\rq??crqZQirql]mq#7f'JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcCo5rr2oq +rqucmrqcWhrqHEarposUrpB^MroO.>rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&; +reUQ+rdaurrd4WercJ-[rc%jSrb_XLrb):E!G?'BAc?6;A,]s.@=_g^@"D^:@.dt*@fBm7AH$0>BDuWE +CAr)LDuO_TErL.ZFoHaeIK"crKDpZ*N;en;PQ$mISc5;]U].=nYPtj,\c0;A_#DCRbPolfe,Itug]$+0 +ir8'=lMg/InG`%Yo`"Uaq>U6iqu6NmrVQT%s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$ +s+135s8N#prVl`oqYU*fp\smco`"@Zmf)VQkl0`Dj8S!9h#?"+df.Slc2P`^_Z%=L\c0#9Yl:^&VZ*=h +TDk;YQi<*GNrG":LAli)J,XorHiArg3VRrh'1arhoarrilC0rji$C +rkn`TrltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`n[JtgXJcC<$JcC<$JcC<$JcC<$ +JcC<$JcDnQJcC<$JcC<$JcC<$P5kFYrr)ioqtpBhrqQKdrq-3\rp]pTrosFGroX4=rnm_1rmq(trm1Sd +rl4rSrk8<@rj;[.ri?$srh9=_rgWnPrfd>Brf$i5reCE'rdXoqrd+Qgrce?`rc8'[!HN5[EW0qVDuOYO +D>nABC]8("BrYluBoQj(CAVfDC\qrID>S5MDuO_TEW1"XF8g:\GQ)meHN&?lJ,Y#uLAm#.N;en;P5^aG +S,T#YU&M"iX8]=%[/RW8^&GnJ`r=-[ci2Dmf)FJ(hYuL5k5OQCl2L,MnG`"Xo`"R`q"spequ6NmrV6B" +s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+132s8N#prVl`oqu6Hkq#:!dp&=R^o)A+W +m/H;Lkl0WAiVqa6f`'G#dJhGjb5TE[_#D%H])K#7YPt['V>d7hTDk>ZQi<6KOT(7=MuJG0KDU2uIf=`o +H2`$gFocc0rcJ-\qf;[Upi-4Nrc%aQJSqB'JSp6\qeuIQrbqRNrc.gUrcA'\rc\9brd"KjrdFZore(3( +repc9rfI,Drg3VRrh'1arh]UrrilC-rjr*BrkSNQrlP/brmC_qrn.5-ro*k:roj@Grp9XQrpg!Zrq69b +rqQKhrql]mrr)`nYQ'1RJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$O8o4Yq#13irql]k +rqQKerq-3\rp]pUrp9XMroa:Aro!e4rnIG)rmC_krlkA\rkeZLrji$:riuI*ri5sprh07^rg`tRrfmDE +rf@&;reg]0re19'rdaut!.FrtIf=cpI/\KlHN&3eGlDpdG5HE5FJO#0FFeQ5FoHR`GPcXaH2`-hHiAEl +IK"]pJ,XutKDpT(LAm)0N;en;OoCUEQN!ERT)PD^VZ*RoY5Y^*[Jm`9^])+L`W"*\cMl5jf`'V(hYuI4 +jSn?Ali-;Nn,DhUoD\C]p\t!fqYpBkr;6Hiric?Qs+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$ +s+13$s,[3TrqlZnr;QQlq>U0gp&=U_o)A.Xmf)VQl2KlFjSn*:h>Z.-eGdkpci2&c`rrf[8JrgNhWrh'1brhf[rric=,rjVm#SrkJHFrjMg4 +ric=&ri#gmrh07^rgj%Urg!JHrfI,?rf6u9re^]3!JlR/L&Qc)K):,lJ:W3DIt<*&J,XukJGt,sK):6# +L&Qo-M>iG4NrG+=OT(ICQN!9NSc58\T`1eeW;`mtYPtm-[f3r=^AbtJa8X9]ci2>keGe)!h>Z@3ir8*> +kl0lHn,DhUnc&1[p&=^bq>:$cr;QZlriH-Ns+13$s+13$s+13$s+13$s+13$s+13Qs+13$s+13$s+13$ +s+^RQrqlZnr;QTmqYp9hp\smco`"FYn,D\QlMfrFj8S!9hYu:/f`'=ud/M>iaSs0X_>_1J]Df>>ZMq*- +Y5YF"VZ*@iT`1P^Sc5&VQi<9LP5^RDNrb<&rfI,>rf-o9repZ2re^W1qhK`WUkXGTJVO/ZreUQ1qhkB2 +rf$i9rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rndY4 +roF(@rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu3JmJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$ +JcC<$JcCK)rr2fnrqucmrqcWirqQKerq69_rpp'XrpKdProj@DroF(:rn[S-rmq(trm:YgrlP/[rk\TK +rk/6?rjDa1ric=%ri,morhTOerh'1[rgWnTrg3\O!LB&NPl?mGP5^UCOT(=9NqeTbN2MVcN/*AhNW+q4 +NrG+=OT(CAP5^[EPl@!JQi_LSao9N`d/MPof)FD& +h>Z@3jSn<@kl0rJmJcVSo)A:\p&=^bq#:*gqYpBkr;QZlrhf^Hs+13$s+13$s+13$s+13$s+13$s+13Q +s+13$s+13$s+13$s+^RQrqQHkr;QTmqYpI"qi^rAplk]Brg*PMrg<\QrgNhVrgj%]rh'1`rhKIkri,mtric=+rj2U5rjr*CrkJHLrl+l[rm(Mi +rm^qurn7;-ro!e8roX4Drp'LOrp]pWrq-3_rq??drqZQirql]mqu-EkVZ25IJcC<$JcC<$JcC<$JcC<$ +JcC<$JcDnQJcC<$JcC<$JcC<$Jc>`Mrr2fnrquZjrqcWgrq??arq$-[qsXONrp'LFroO'Z2V*/\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg: +k5OZFm/-8Nnc&.Zp&=[ap\XgdqtpC%Wr]9%ri,mqqksFjqka:fpnRh_JYB!8JY@jmqkEt_rhTFfrhfRj +ri#gqri?%"riQ1'riuI.rjDa7rj_s?rkABIrl"fUrlG)_rm(Mirmh#"rn7;+rndY5roF(@roj@JrpB^S +rpg!Zrq-3`rqHEerqcWkqu$Hlq#7&gJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$ +rVulrqu-Nlrql]krqZQgrqHEbrq-3]rpg!WrpTjProsFFro=";rnm_3rnIG)rmUkprm1Shrlb;_rl+lS +rkSNJrk/6Brj_s9rjDa3riuO.r361(riZ7&riGmqri5amJZ,KFJZ+@&ql0Roql9OoriH+$riZ7(qlp() +rj2U3rjVm:rk&0CrkJHJrkn`SrlP/_rm(MhrmC_orn.5(rndY3ro*k:roa:Frp0RPrp]pWrq$-]rq69b +rqQKgrqcWkrqucoqu3/dJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$rVulrp&4mf +rqcNfqtL*`rq-3\qsXONrp0RIroX4@ro*k7rndY.rn.5$rmLemrm1Sgrlb;_rl+lTrkeZMqnN-Crjr0A +!P5lA\Giu:[emK3[/73,ZLY8OYct?_Y`Q*^Z2V'(ZMq3-[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP`W"!Y +bPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnWo_\@]p\t!cqYU3frVQSbs+13$s+13$s+13$ +s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s8DumrqlZnr;6BjqYp9hp\smcp&=U_o)A.Xmf)VQlMg#H +kPjQAir7j7hYu:/g&BV&ec+%sd/M>ic2Plbao9B\`W!gT_u@IN^Au"G^AbhF]_K)8\bio'[t1ur[XklN +[dpp,\G3T5\bNc8]`,VA^AbnH_#D7N`;[aTaSs<\b5TZbci2;je,InsfDaJ&g]$(/hu;X7jSn?Al2KuI +mJcPQnG`"Xo`"O_pAXgcq"speqtp#[rlY5brm(DfrmLeprmq)$rnIG/rnm_5ro=">roX4Erp0ROrpTjUrpg![rq69arqHEerqZQirql]m +q#1*hRf@s=JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcGBBrr2ThrquQfrqQKerq??` +rposUrpTjSrp0RKroj@Crokl0iGlhg,I +nG`%Yo`"R`p\ss_qYU3frVQSYs+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s7H?d +rqlZnr;6BjqYp?+/ +iVqj9jo4HBkl0lHli-;Nn,DhUnc&.Zo`"O_p\sseq>:$fqtpU0gp\smcp&=U\nb_eS +mJcJOli-2Kkl0`Djo4?Z!qq(;ek1"t2_UF(bU=88SqpkAirn%&"pt>Z$ +qqV)*ro!e5ro!e7roF(?roX4DrosFJrp9XOqsXORrpg![rq69arqHEerqZHfrqlTjqu-EkMuSA.JcC<$ +JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcG'9p&=shqu$?grqcNfrqHEcrq6'Xrp]pUrpKdQ +rp9XLpuqV:roF(:$fqtU*grUp/Js+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$ +s+13$s+13$s5j:Xrq66hr:p-fq"sg_p&=U_o)%tVnG_nUmf)SPli-2KkkjQ?jo4?;iW8&up#,N#qqcn[ +U"t:UK\cXaptko*o&0<&qrIbl2KuFli-8MmJH>N +nG_nUnc&+Vo`"O_p\Xabq>:$fqtpU0gp\sm`p&=U_oD\=[nc&"VnG_nUmecDNm/-)Kl2g28qs!e;qrdP4J`Won +J`VmQp#c&3ro`k9ros=Frp0IJrpBUNrp]pUrpg!Yrq$-]qt9s^rqHKn,)VLnc&+YoDA1Zp&=[ap\Xabq>:$f +qtpU0ap\sm`p&=U\oD\=XnGr(VnEfUpm[NWqmXag$mdfi>nG_tTo)A7Xo`"O\pA=U`q#:*aqYpBhr:U$c +rdk+=s+13$s+13$s+13$s+13$s+13$s+13$s/uBQs+13$s+13$s+13$s3Uf=rqlZhr;6BgqY9mcq"sgb +p@\+Xo_nCWoC_\OnU^2!n:C([nG)MPnac8JoDA1Qp&=[^p\ssbq=XU`qtU*grUTr=s7$&>s+13$s+13$ +s+13$s+13$s+13$s+13Qs+13$s+13$s+13$s+13ms82fdrVl`fqtp6eq>U0^p\X[_o`=aYn+?)?Jb#`0 +Jb"Teqt'LPn+?VPp%J:WqtU0dp%nR_qu$-cp&9OBmJhb;JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$ +JcC<$JcC<$JcEIaq#9j_qu$?gn+uqW!;QKefCsjiYkEYAOS88>l1alGrqZ$ZrqlBdp&4[bJcFU,JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$^AmR!rr)Nfn,*+\rV=n;JbZJEJbY?%o(h5> +qtfdYp&+gfm/DS9hZ&0,JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcDqRqu5jYq#(!c +q>5a>M>Df"JbnO*p&"O^m/?VVJcF0uJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$ +ScA9[o_mYFJc)>AJc()sfDY(8JcEOcJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$ +Sc@gNiVnE,U&BQ@K`1oL_Z#,d_#JucJcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$ +q>Z$FM>i)*Jc=g2JcD8?JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcDnQJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$Y5a(QJcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcDnQJ, +~> %APLeod +EI +326 0 0 4 906 68 cm +BI +/Width 978 +/Height 12 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$_#OE5p&4mfqtpBhrqZQgrqHEcrq69_qsjRPrpB^Orp0RKroj@DroO.?qr.P3 +ro!e5rndY0qqLo!rn.,"n($RMmF-X8J^]2!pXA9Sn(%Ehqq1\srnI>*qqh>1rnm_5ro*k;roO.Aroj@G +rp0RMrpB[Q!UoLVnG_tWo`"O_pAXgcq#:*dqYpBhr;6Hirdk*Xs5O(Xrq66hr;6BjqYpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$g&BY$fC.8PeB?pKj!;lZkqu-EkT)XBA +JcC<$JcC<$JcC<$JcEOcp&=shqu$?grqcNfrqHEcrq6'Xrp]pUrpKdQrp9XLpuqV:roF(uWmF[!BJ_5P+pXn3QqqCi"qqV2,qqq;/qr7M6roNq=rp'LKrpB^QrpTjU!;$$Xrq69arqHEf +qtg@ep&=shqu$?grqcNfrqHEcrq6'Xrp]pUrpKdQrp9XLpuqV:roF(uWbLhBuJ_6CCg=cAWptP]$rn[J/qr%A2qrIbXqqpu&pu;23roO.Bqrn%Erp0RMrpKdSrp]pWqsjaZr:L!]rqHl2KuFli-8MmJH>NnG_nUnc&+Vo`"L`pAt$_qtU0dqtgU-fQ2cF8JcC<$JcC<$ +JcC<$JcDnQq#:'erquZjrqcNfrqQBbrq??aqt0mZrpojSrp]ULrpK[Nqs==Jqs*b:dcc8GJ`q[Kh!"Fq +q!.kEq!A"IqsO@MqsaCNrpp'[qt0m\rq??cqtL0e!VuQgqYpBhr:p6crdk*Fs3Uf@rqQHkr;6BjqYU*f +q"sgbpAXa^o`"I]o(_bSnFc8LmecDKm/H>JlLO2Dk^hrKk^hsskk438lMg,Em/HDLmecJMnG)PQo)A7X +o`"O_pAXg`q#:*dqYpBhr:p6drW)qVs+13$s+13$s+13$s+13$s/#bprpp$er;6BdqYpnG_tTo)A7Xo`"O\pA=U`q#:*aq>gBnqtp9gp&4deJcD5>a8c/< +o)8Rcqtp0brqZQgq"Od]qt9s\qt'gXqsjRQm-gbZBQJcC<$JcC<$JcC<$JcC<$V>p5fqu-C6jo)=4?S,^P/p&=jeq#($dqtg*`rqQBbrq?$Xrq,mT +p%&"MV!rs)Jae6[n*p>Ho()\Lqt0RSrq?6`rqQBdp%n[bq#(-io)AIbMuSA.JcC<$JcC<$JcC<$JcDAB +qu60brquHdqtg3crqQ0\qtBp[n+?)?ddht[Jb"B_h"'q*n+?VPp%J:WqtU0dp%nR_qtpHmpAO[`JcD,; +_>jE3o)8Rcp&"X_qt^6dp%S@Wqt9FMn+3dSJb"B_Jb&g2n+6#?rq5sXqtL!_rqZ6`qtp9gp&4R_pA^'N +JcC<$JcC<$JcC<$JcC<$PQ1FWo)8I`qtojYqt^-afD"%nJbFZgJbJ4!g@t:8rqZ$ZrqlBdp&+miq>PsF +M>t!`q#9j_qu$?gn+uqWqtSe;\b:UJJbFlmg@t:8rqZ$ZrqlBdp&4[bkPpJ?JcC<$JcC<$JcC<$JcC<$ +PQ1"Krr)Nfn,*+\cM?5iJbXfkJb\@%dJ<\9n,)eUrr)Kgq>PsFM>t!`m/I"_p&+:Urqaq9\bLaNJbY#q +dJ<\9n,)eUrr)3_kPpJ?JcC<$JcC<$JcC<$JcC<$K`CrKl2CDTo)#fjJbjroJbm"Tp&"O^m/?VVrVqHK +JcDVIqu5jYq#'^[P59b+Jbjroh>6gAq#'LWp&<_GMuS; +~> %APLeod +EI +412 0 0 4 386 68 cm +BI +/Width 1236 +/Height 12 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$])V@#dJ\juJc()sT)@4=m/Ed[JcDPGo)A%Tjo'c.Sc"':M#@,JhYlg?JcE:\ +NrS\LdJ^ELJc()sJc,*:fDY(8ci8_!JcC<$JcC<$JcC<$JcC<$])TbKK`-K#Jc2;@^](#.JcDPGhYua< +Jc2&9Jc1N*p\r;6JcE:\NrR)tYl0.OJc1/up&2Z)ci8_!JcC<$JcC<$JcC<$JcC<$QN)O8m/DS8Jc:<$ +Jc>cNs+13$rrE(Mrdt-#rdk(9rdk*7s+148s-We:rdk'"rn%.Ms+UK(s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13$s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+13$s+13(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$ +s+13$s+UK(s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13( +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+UK(s+13$ +s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13$s+13(s*t +~> %APLeod +EI +326 0 0 4 906 64 cm +BI +/Width 978 +/Height 12 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$JcG<@o)@&8chr@lJc()sf)4.um/H>NJcC<$PlL=RdJ^3FJc()sJc,<@fDY(8 +ao@;!JcC<$JcC<$JcC<$JcC<$JcG<@`W"*[Jc1/uJc4:#^]*R!JcC<$PlJ`%Wr7MIJc1/uqu+;/ao@;! +JcC<$JcC<$JcC<$JcC<$JcF$q[/PXUJc:6"]DfkNJcC<$JcG6>P5^%3Jc:6"h>X8NMuSA.JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCZ.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$MuSA.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCZ. +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$MuSA.JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCZ.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$MuSA.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcCZ.JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$MuSA.JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$ +JcC<$JcC<$JcC<$JcC<$JcCZ.J, +~> %APLeod +EI +106 0 0 58 692 0 cm +BI +/Width 318 +/Height 174 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdj +JcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdjJcC<$JcC<$JcC<$JcEdj +JcC<$JcC<$JcC<$JcEdjJcD_Lg&?R%Jc:6"TDmmNJcEdjJcEIam/G]:Jc1/uJc25>l2LS[JcEdjJcF*s +o)@&8nbdt9Jc()s[/APSq#9scJcF4!JcFa0qu5jYq#'^[f(ssoJbjroRJQURq#(-in,;qYJcFj3JcFs6 +rr29_p&+U^p%n[`f(agkJbXfkSG<*Zp%nI\rquHeo)8IbJcFs6JcG9?q#9j_qu$?gn+uqWqtSe;rUtg9 +JbFZg_tMgYp%\O^p%nR^rqlBdp&4[bJcG9?JcG]Kqu60brquHdqtg3crqQ0\qtBp[n+?)?o^[S(Jb"B_ +](5=]n+?VPp%J:WqtU0dp%nR_qu$-cp&9OB!<7WM!<<&tn,<7`q"t'erqZ6^p%JCXqt0dWp%%A;o^IG$ +Jae6[](#(Vo()eOq"4RYqtBp\p%\O^rqcEequ$$`rr.KK!<7]Orr2KerquZjq"k!crqQ9_rq?6^rq-*Z +rposVqs`t@kjF#iJaS*WX7#QIp$htNqssaXrq-3^rq60^qtL*brqZ?crqlTjp&4deKE$o1q#:'erquZj +rqcNfrqQBbrq??aqt0mZrpojSrp]ULrpK[Nqs==Jqs*b:o]UkiJ`q[K]'/hOq!.kEq!A"IqsO@MqsaUT +qsj[Vrq$$Zrq69arqHroNh6puD&,pYg\^ +J`21=^u=kDpuD&.roO.Apuq_Arp'CHrp9XOqsOIQrpTjVrposYrq69bqtU0dqtgroO.Broj@Grp0RMrpB^RqsaUUrq$-]qtC$`qtU0drqlTjp&4mhS,])[rr2ThrquZjrqcWirqQKe +rq??arq-*XqsXOOrp9XMrp'LHroX4AroEt8rnm_5rnm_3rnRD*pt>Z!qq(;eo[NK^J^]\/J^`/uk1&kM +rn%&"pt>Z$qqV)*ro!e5ro!e7roF(?roX4DrosFJrp9XOqsXORrpg![rq69arqHEerqZHfrqlTjqu-Ek +T)YMarr2]krquZjrqcWirqQKerq??arq$-[rpg!WrpTjSrp'LIroj@CroF(=qr.P3rndY0rnIG*rn.5$ +rmh"tqpYPmrmCDcl-K=RJ^/hlJ^20Ym*G7LrmC_nqpYPormh#!rn%/&rnIG-rndY3ro!e7ro="=roO.C +rosFIrpKdSrp]pWrpp'[rq69arqHEerqZQirqlTjq#1*hV#R7jrr2Thq"t'drqQKerq??arq-3\rpg!V +rpKdPrp0RHroX4Aro=";qqqD/rnRM+rn.5$rmh"tqpPJkrm1Sjrm(MfprrWYrlXQKJ]WJbJ]Y1=qo\o] +prr`^rm(Mirm1SkqpPJmrmh#!rn%/&rnRM/qqqD3ro=">roX4Crp0RMrpKdSrpg!Yrq-3_rq??crqQKg +q"sa_rr/_nVuQbqp&4mfq"k!brqHEcrq-3\qsaURrpKdOrp'LHroO.>qr%J1rn[S.rn@A(rmh"trmLem +qp58erltGdrlb;`rlOrUrl4iSlbqu)J]!tpJ]$QdcG]_$qo8EOrlP/^rlb;brltGfrm1JgrmLeprmh## +rn7;*rn[S1qr%J6roO.CrosFJqsO@Nrq$-]rq??crqQ9bqu$?iqu3MnWrN(tq#13irql]krqZQgrqHEc +rq69_qsj[SrpKdOrosFEroF(=ro!e5rndY/rn7;%rmUkpqp>>frltGbrlG)Zrl+lTrkn`Pqn`0FrkJHJ +rkJHHlb*>4]n*hK]Rd`8]^3?/^AbqI^\bhG_>D+K_u@UR`W!pWao9H^c2Q#cd/MJme,Iqtf`'Y)hYuF3 +i;Vd9jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6friQ4&s8N#jrVl]nqYpic2PlbaSs6Z`W!gT_u@LO_#D+G^&G\A]DfD= +\c0,-\,Ead[Xkl<[_oQB\,3]7\biu;]DK8?^&GeG_#D1L_u@UR`W!pWao9H^c2Q&gd/MMnec+/!gA]k+ +hYuI4j8S-=kPj`FlMg2Mn,DhUo)A7[p&=^_q#:*gqYpBbrVleus02P&rq66hr;QQiq>9pcpAX^`o)%nT +m/H>Mkl0`DjSn-;i;VU4gA]b(f)F+sd/MAjc2Pocao99Y`;[XQ_#(nG]`,PB])K5=\,Ni5[JmQ1Zhq'! +Z2LnXY^s$0Yf!^@]`,\C_#D4M_u@XSao9K_c2Q&gdJhSnf)F>$gA]t. +hu;U6jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6HirilF,s8N#prVl`oqu6Hkq>U0gp\sjbo`"I]nc&%W +n,DYPl2KlFj8S';hu;L3g]#k)e,Iepci25hbPoW_`W!dS_#D+J]`,PB\Gir9[JmN3ZMUm*YPt^(Xo>Es +X8]-oWV!-?W.CmuW4Jr&WV`^mX8]4"Xo>L&YPYR'Z2V*/[JmZ7\Gj,>^&GeG_#D7N`W"!YbPofdci2>k +e,J#!gA]t.hu;U6j8S6@l2L#Jn,DhUnc&.Zo`"O_p\sseq>U6iqu6NmrVQSus02OurVQKkqYp9hp\smc +o`"I]o)A.Xmf)SPl2KlFjo46I(cU[+ZPU4K"mTn/o]U#r*KU\LYaV>d@kVuE[mWrB'uY5YX(Z2V'.[JmZ7\c0;A^])(K +_u@[TaSsE_cMl2ieGe%ug&Bh,hu;U6jo4HBl2L&Kmf)_To)A7[o`"R`p\ssbqYpBerNQ=.s8N#prVl`l +qu6Hkp\smcp&=R^o)%nTm/H;Lk5OE_4K]`,J@\,N`5Z2Us+Xo>F$ +WrAmpV>d:iU]."bT_P/YT(nlHSG\n.RtdD`S'7AdSGSlVT)5/TT`1YaU].(gV>d@kWrB'uXo>O'Z2V*/ +\,Nu<]`,\F_>_@OaSs?]cMl/hdf.ergA]n)i;Vg:k5OZFm/-8Nnc&.Zp&=[ap\Xgdqtproj@H +rpTjUrpg![rq69arqQKgrqcWkrquZlqu4/+\c;[.q#13irql]jrqQKerq69_rpp'XrpKdProj@Dro="9 +rn[S.rmq(trm:YhrlP/Zrk\TKrk/6>rjDa2ric=%ri,mnrhTOerh'1[rgWnSrg3VMrfmDGrf[/@rf@&? +rf@&=qi10*!/lDdJW#);ac#MErf-f8rfI,?rfI,Arf[8ErfmDJrg3VOrgWnXrh'1`rhKIhri,muric=, +rjDa7rk/6Erk\TRrlP/arm:Yormq)'rn[S3ro="?roj@JrpKdTrpp'[rq69brqQKgrql]mqu-Ek\c95? +rr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7" +rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,nV2ULJVJ`1["eR8reUQ1qhkB2rf$i9 +rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rndY4roF(@ +rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu4/+]`8!1qu-NlrqcNfrqHEcrq-3[rp]pUrp'LHroX4>rnm_2 +rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&=repc5reUH*re19&qgnEj +mXKe;JU`6#[t!t!rdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]UmriH+&rj2U4rk/6Erk\TS +rlb;ermC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)`n^]2(Krr2fnrqucmrqcWirqQKd +rq-3]rp]pTrp9XJroX4?ro!e3rn@A%rmLelrlY5\rkn`Lrjr*(JTQHbZul:irc\9bqfr*crd+Qjrd=]nrdOirrdb!#re:?+reg]6rf@&@rfmDJrg`tZrh07f +ri,n"riuI1rji$CrkeZRrlkAermC_trn@A.ro!e:roa:HrpB^Rrp]pYrq-3arqZQirql]mqu-Ek_Z.LQ +rr2fnrqucmrqcWhrq??arq$-[rpTjQrp'LHro=":rnm_-rmh"qrm(Mcrl4rQrk8rfmDKrgWnZrhBCgriQ1(rj)O7rk8rf$i2re(3"rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2rau+?JRsCDJRu`1qe#D3 +qe5tCqeH+GrbVRNqelCPrc.pYrcS3crd4WnrdXp"reCE2rf6u>rg3VRrh'1arhoarrilC0rji$Crkn`T +rltGhrmLf!rnRM2ro="?roj@KrpTjUrq-3_rqHEfqtg3frr)`naT'6Zrr2oqrqucmrqcWhrqHEarposU +rpB^MroO.>rnm_0rn%.urm:Yfrl>#Rrk/6@rj)O+ri?$nrh07]rg*PIrf@&;reUQ+rdaurrd4WercJ-[ +rc%jSrb_XLrb2:Dqdob;qd]V7nmV&rJRF%:JRGimojR`,raYh9ral(Arb;@Hrb_XQrc%jWrcA']rd4Wm +rdb!#reLK3rf@&Brg*PSrh07cri?%%rj)O6rk8#]rm:Ynrn%/(rnm_7roO.Erp9OOrq$-]rqHEf +rqcWkrqucoqu4\:aT)8=qu-Nlrql]jrqQKerq$-[rpTjRrp'LHroF(;rndY,rmh"qrlkA_rl"fMrjr*: +ric=$rhoagrg`tTrf[8Arf$i2re(3"rd4Whrc\9]rc%jSrbMLJrb2:Cral(>raPb5ra>V1oj72prEOnY +JR!b2_d)k?nm;<&qdBD3qdTP8ral(@rb2:FrbMLNrc%jWrc\9crd4Wore(3)rf$i;rf[8Jrg`t\rhoar +ric=/rji$Brl"fWrlkAhrmh##rndY5roF(Brp'LMrpTjVrq$-`rqQKgrql]mqu-NnaT'H`rr2fnrqucm +rqcWhrqHEcrq$-ZrpTjProsFFro*k6rnRM(rmLelrlG)WrkSNFrjMg2riH*srhBC_rg<\Krf@&:reUQ) +rdXoprce?`rc%jTrbVRKrb)4Brabn7ra5Y4ra5Y2qd'2+nltcjrE4\SJQ[P,_ccP6oiq;ura#D-ra>_4 +ra>_6rac">rb)4FrbVRPrc%jYrce?hrdOitreUQ3rf@&Brg<\UrhBCiriH+(rjMgrosFJrpTjVrq$-_rqHEerqcWkrqucoqu4e=bQ%S@qu-EhrqcWgrq??`rpg!VrpB^KroX4? +ro!e2rn.4trm1Sfrkn`Nrk8<'r`K&!r`8/]rD\>IJQ.2"_c5buqc<\tqcNi#qcs,+ra5Y4raGe:ral(Arb_XQrc%jZrd"Kk +rdb!$reLK6rf[8Grgj%^rhTOqriuI0rk8_4r`oG,qcWo#r`B)"pf7;mmo0!ZrDA,CJPgtq_bp2, +mo0*_qc3Vrr`Au!r`T5)ra#M1ra>_8rac"ArbDFMrc.p[rcnEkrdk'%reg]8rf[8Krgj%^ri#gtrilC4 +rk8Krh'1bri#h"rj;[8rkJHNrlP/crmUktrndY4ro3q@rp'LMrp]pYrq-3arqZQirql]m +rr)`ndJqVorr2fnrqucmrqZQgrqHE`rpp'Wrp9XKroX4__arfZqb$i\pe:Z]r_EGgr_WSkr`&ks +r`B)'ra#M1raGe;rb2:Jrc%jXrd4Wnrdb!)rf-o=rgEbVrh07jriZ7+rk&0ErkeZXrm1Slrn7;+ro!e: +roj@HrpKdTrpp'^rqHEerqcWkqu-NndJq_rrr2fnrqucmrqcWgrq??`rpg!Vrp9XJroO.#UrkJH?riuI) +rhKIbrgNhKrf-o6rdk&srcnE^rbh^Nrac";ra5Y/r`B)!r_i_mr_NMfr_!/]r^d#YqaUHOr^>I-qEfa" +JO4oS]gCXEqaCEPpdY6Qr^d#[r_*5br_NMjr_i_qr`K/(ra5Y6rac"Drbh^TrcnEirdk'*rf-o>rgNhX +rhKIpriuI1rkJHMrl>#armUktrnRM1ro3q@rp'LNrp]pYrq-3arqZQiqu$HleGn%uqu-NlrqcWhrqHEa +rpp'WrpB^Lroa:>rndY.rm^qorlkA\rk\THrj2U,ri,mjrg`tRrfI,;reCE%rd+Qdrc%jQrb2:?ra5Y1 +r`K/#r`&knr_NMgr_!/]r^d#Yr^QZOr^>@*qEj@3JO,bkJO/?_g-XL\qaC_7rb2:Hrc%jZrd+QnreCE1rfI,Frg`t]ri,n"rj2U:rkSNPrlkAgrm^r$rn[S4roa:G +rpB^Rrpp'\rqHEfrqcNirr(@HfDkjLqu-NlrqcWhrqHEarpg!Vrp0RJroO.;rnRM+rmUkmrlb;WrkABB +rilC&rhf[ergEbMrf-o4rdt,srcnE`rbh^Mrb)4Are:?&rdFcgrc8!Urb)4@ra>_2r`T5$r_i_lr_EGcr_!/]r^ZrWqaLKPmmGYm +r'Gs"L-U;TbWsH?njECEqaLKRr^ZrZr_!/_r_EGhr_i_rr`T5+ra>_9rb)4Jrc.p[rdFcsre:?3rf[8J +rh07fri?%)rj_sArl+lZrm1Snrn7;,ro3q>roj@KrpTjVrq69brqQKirqucoqu5=LfDkjLrr)iorqcWg +rq??`rp]pTrp9XIroF(:rnRM*rmUkkrlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6 +r`];&r`/qor_EGer_!/]r^d#XqaLKPog?tjr'Gs"L-U;TbWs-6qa:6Kr^H]Rr^d#[r_!/ar_NMir`/r" +r`];.raPkdKRqu-NkrqcWirq??`rpg!Vrp0RIro="9rn[S)rmLekrl4rRrk8<;ric=#rh07[rg!JCre^W, +rd=]hrc8!Trb2:Ara>_1r`T5#r_i_kr_3;`r^luWr^QlTnjCnnoK[smJO"cO\j4b3ogAUEqaUQTr^m)^ +r_3;er_i_qr`T5*ra>_9rb;@Krc8!^rd=]treUQ6rg!JOrh07iriZ7,rk8c=2rr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHD +rilC&rhf[drg<\Jrepc0rdaunrcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>%r^#a5JO"cO +JO$A'r^#@,qa:6Jr^H]Rr^m)]r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+' +rjr*Crkn`Zrm1SmrnIG/ro*k>rp'LMrp]pYrq-3brqZQirr)`nh>c=2rr2fnrqcWhrqHEarpp'Xrp9XK +roX4%r^#a5JO"cOJO$A'r^#@,qa:6Jr^H]Rr^d#[r_!/br_NMjr`9##r`oG2ral(Brbh^U +rce?kre19-rfR2GrgWn_ri5t$rjVm?rkeZWrm(Mkrn@A-ro!ec=2 +rr2oqrquclrqQKerq-3[rpTjProj@Bro!e2rn7:trlkA`rkSNFrjMg/ri#gjrgNhNrf@&5rdt,urcS3[ +rb_XIraYq7r`];&r`/qor_EGer^m)[r^ZrWr^HfSpdc=2qu-NlrqcWhrqHE`rpg!VrosFFro="7rn@A&rm:Yfrl4rQ +rjr*8ri?$prh'1Vrf[8@re(3"rd4Wbrbh^Nrac":ra5Y,r`/qrr_WShr_3;_r^d#Xr^HfSpdc=2rr)iorql]jrqQKerq$-YrpB^L +roX4>rndY-rm^qnrlY5ZrkABAriuI%rhKIarfmDDrf$i.rdOimrc.pTrbDFBra>_2r`B)!r_i_lr_Jh*V*-qa:?Nr^HfUr^ZrZr_*5br_WSlr`/r!ra#M2raYqB +rb_XSrd+Qmrdt-.rfI,Drgs+ari,n%rjVm@rl+lZrm1Snrn7;-ro3q>rosFLrp]pYrqHEerqZQjrquco +h>c=2rr)iorql]jrqQKdrpp'WrpB^KroO.ric="rhBC_rfd>Breg]*rd=]h +rc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTog@Y(r^#F,JO"cOJO$%sr^#I/r^-KLqaCEQr^ZrY +r_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#h"rjMg>rl"fXrm(Mmrn7;,ro*k< +roj@Krp]pXrq??crqZQjrqucoh>c=2rr)iorql]irq??arpg!Vrp9XIroF(:rnIG'rmLeirl>#Srjr*: +ric$Lr^QlWr^m)^r__c=2rr)iorql]hrq??arpg!Urp0RGro="8rn@A& +rmC_grl+lPrji$7riZ6qrgs+VrfI,;re:?"rcnE`rbh^Mral(:r`oG*r`/qqr_NMer_!/]r^ZrWr^HTL +k!Ji/fg(*RJO"cOT0W0;lpCS9pd>$Lr^QlWr^m)^r_3;er_i_qr`T5*ra>_:rb;@LrcA'`rdFd"reg]: +rg<\VrhKIqrj2U7rkSNQrlb;grmh#%rnm_8roX4GrpKdUrq69arqHEhrqucoh>cF5rr2oqrquclrqHEc +rq$-YrpB^NroO.=rnm_.rmh"prlY5YrkJHArj)O*rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/! +r_`Yjr_3;`r^m)Yr^HfSpd=11cp3.IJO"cOQ9ae'qa1'Fr^?`Sr^QlYr_*5ar_NMkr`&l!r`fA/rac"B +rb_XTrce?hre(3,rf@&Frgj%_riQ1*rjVmArl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`n +j8\';rr2oqrquclrqHEcrq-3ZrpB^MroO.=rnm_,rm^qnrlP/XrkJH@rilC%rh07[rg!JBreLK(rd4Wf +rc.pQrau.=ra,S.r`K.tr_WSir_*5_r^d#Xr^HfSqa9C1cp3.IJO"cOQ9ae'og8XFr^?`Sr^QlXr^m)^ +r_NMjr_i_tr`];-raPk>rbMLQrc\9frdk'(rf-oBrgWn[ri5t$rjMg@rl"fXrm1Smrn%/,ro3q=rp'LM +rp]pZrq69brqcWkrr)`nj8\';rr2oqrquclrqHEbrpp'Xrp9XKroF(;rndY+rmUkmrl>#UrkAB=riZ7! +rh07ZrfmD@reCE&rd+Qdrc%jOrau.=ra#M+r`B(sr_WShr_*5^r^ZrVr^?NKj$M*XJO"cOJO#MdlpCA3 +qa:?Nr^HfVr^m)^r_EGhr_i_sr`];,raPk=rbDFOrcS3drdb!&rf$i@rgNhZri#h"rj;[=rkeZTrm1Sm +rn%/+ro*k;rosFKrp]pXrq69brqcWkrr)`nj8\';rr2oprql]krqHEbrpp'Wrp0RJro="9rn[S)rmLek +rl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau.rgEbXri#h! +rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWkrquZmj8\';rr2oprql]krq??`rpg!Vrp0RI +ro3q7rnRM'rmLekrl+lQrk/69riH*rrgj%TrfR2:re19#rce?_rbqdLrac"9r`oG)r`/qpr_NMer^m)[ +r^QlUr^?NKlpA`XJO"cOJO#2[og8=_9rb2:LrcA'_rdXp# +re^W:rg3VTrhf[srj)O9rkSNPrm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmj8\';rr2oprqcWi +rq??_rp]pTrp0RIro3q6rnIG&rmC_irl"fNrk&07riH*qrg`tRrfI,8re(3"rcS3\rbh^Jrac"9r`oG) +r`/qpr_NMer^m)[r^QlUr^?NKnj<4>a$>2@JO"cONBmJ/pd4X?qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/) +ra>_9rb)4Jrc.p[rdXp"reUQ8rg*PRrh]UpriuI7rkSNOrltGirmh#&rnm_7roj@HrpKdTrq-3`rqZQj +rquZmj8\';rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrji$4ri5snrg`tQrf@&6re(3! +rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r^"IfJO"cOJO#)Xr^$EJnj<=CqaCEQr^ZrZ +r_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureLK6rg!JQrhTOnrilC4rkABLrlkAgrm^r%rnm_7roj@H +rpKdTrq-3`rqZQjrquZmj8\0>rr2oqrquclrqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8rp'LNrp]pYrq69drql]mrr)iqj8\0>rr2oqrql]krqZQdrq$-YrpKdNroa:>rndY. +rmUkmrlb;Xrk8<@rilC$rhBC\rfmDCre:?%rd4Wcrc%jQral(rp'LNrp]pYrq69drqcWkrr)iqj8\0>rr2oqrql]krqZQdrq$-Y +rpB^Lroa:=rn[S-rmLekrlb;Xrk8rr2oq +rql]krqQKcrq$-Yrp9XKroX4rr2oqrql]krqQKcrq$-Yrp9XKroO.;rnRM+rmC_irlP/Urk/6=riZ6urh07Xrf[8?re(3" +rd4Wbrbh^Nrac"9ra#M*r`/qpr_WSgr_*5\r^QlUpd=L:qa&.cJO"cOJO"uUr^$NMnj<+=r^HfUr^Zr\ +r_rr2oqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+= +r^HfUr^Zr[r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ +ro!e;roj@Jrp]pYrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rmC_irlP/T +rk&0;riZ6urh07WrfR2=rdt,urd+Qarbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cO +KL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNT +rltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+ +rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L: +^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_rdOiurf$i=rg3VWrhoau +rjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Wrp9XJ +roF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_!/[ +r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_rdOiurf$i= +rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKb +rpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,trd"K_rbh^MraYq8ra#M)r`/qp +r_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8rbDFLrc.p_ +rdOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iqj8\0>rr2oq +rql]krqQKbrpp'Wrp9XJroF(:rnRM+rm:YgrlP/Trk&0;riQ0srh07WrfR2=rdt,urd+Qarbh^MraYq8 +ra#M)r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yor`B))ra>_8 +rbDFMrc8!ardOiurf$i=rg3VWrhoatrjDa;rkSNTrltGhrn7;+ro!e:roj@JrpTjWrq-3brqZQjrr)iq +j8\0>rr2oqrql]krqQKbrpp'Wrp9XJroF(:rnRM+rmC_irlP/Trk&0;riZ6urh07WrfR2=rdt,urd+Qa +rbh^MraYq8ra#M)r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[r_3;er_`Yo +r`B))ra>_8rbDFMrc8!ardOiurf$i=rg3VWrhoaurjDa;rkSNTrltGirn7;+ro!e:roj@JrpTjWrq-3b +rqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0 +re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_!/[r^QlUpd=L:^-I67JO"cOKL#N'nj<+=r^HfUr^Zr[ +r_3;er_`Ypr`K/*raGe:rbDFMrc8!ardOj!rf-o?rg3VWrhoaurjMg=rkSNTrltGirn7;+ro!e;roj@J +rp]pYrq-3brqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Xrp9XKroX4re19#rd+Qarbh^Mrac":ra,S+r`/qpr_NMer_!/\r^QlUpd=L:qa&.cJO"cOJO"uUr^$NM +nj<+=r^HfVr^d#\r_3;er_`Ypr`K/+raGe:rbDFMrc8!ardXp#rf-o?rg3VXrhoaurjMg=rkSNUrm(Mk +rn7;,ro!err2oqrql]krqQKcrq$-Yrp9XKroX4rr2oqrql]krqZQdrq$-YrpB^L +roa:=rn[S-rmLekrlb;Xrk8rr2oqrqucl +rqZQdrq$-YrpB^Lroa:=rn[S-rmLekrlb;Xrk8rr2oqrquclrqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8 +rp'LNrp]pYrq69drql]mrr)iqj8\';rr2oprqcWirq??_rp]pTrp0RIro3q6rnIG%rm:Ygrkn`Mrji$4 +ri5snrg`tQrf@&6re(3!rcS3[rb_XHraPk6r`];&r`&knr_EGdr^m)[r^QlTqa9^:r^"IfJO"cOJO#)X +r^$EJnj<=CqaCEQr^ZrZr_3;cr_WSnr`K/'ra5Y7rau.Hrc.p[rdOiureLK6rg!JQrhTOnrilC4rkABL +rlkAgrm^r%rnm_7roj@HrpKdTrq-3`rqZQjrquZmj8\';rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM& +rm:Yhrl"fNrk&07riH*qrgj%SrfI,9re(3!rc\9]rbh^IraYq7r`fA'r`/qor_EGdr^m)[r^QlTqa9^: +qa&7fJO"cOJO#2[r^$_9rb2:LrcA'_ +rdXp#re^W:rg3VTrhf[srj)O9rkSNPrm(Mjrmh#'rnm_7roj@IrpTjVrq-3`rqcWkrquZmj8\';rr2op +rql]krqHEbrpp'Wrp0RJro="9rn[S)rmLekrl4rRrk8<;riZ7!rh'1Xrfd>>re:?$rd"KarbqdMrau.< +r`oG*r`9"rr_NMfr_!/\r^ZrVr^?NKj$M*XJO"cOJO#MdlpCA3qa:?Nr^HfVr^m)]r_rgEbXri#h!rj2U;rkeZSrm(Mkrmq))ro!e9rosFKrpTjWrq69brqcWk +rquZmj8\';rr2oprql]krqHEcrq$-Xrp9XLroF(;rndY*rmLelrl>#UrkAB=ric=#rh07ZrfmD@reLK( +rd+Qdrc%jPrau.rbMLQrc\9frdk'(rf-oBrgWn[ri5t$rjMg@ +rl"fXrm1Smrn%/,ro3q=rp'LMrp]pZrq69brqcWkrr)`nj8\';rr2oqrquclrqHEcrq$-YrpB^NroO.= +rnm_.rmh"prlY5YrkJHArj)O*rhBC_rg3VFre^W,rd=]hrc8!Trb2:Ara5Y/r`K/!r_`Yjr_3;`r^m)Y +r^HfSpd=11cp3.IJO"cOQ9ae'qa1'Fr^?`Sr^QlYr_*5ar_NMkr`&l!r`fA/rac"Brb_XTrce?hre(3, +rf@&Frgj%_riQ1*rjVmArl"fYrm:Yprn7;.ro3q=rp0RNrp]pYrq69brqcWkrr)`nj8\';rr2oqrqucl +rqQKdrq-3ZrpKdProX4?rnm_0rmq(rrlb;[rkSNDrj2U,rhKIarg<\Hreg].rdOilrcA'VrbDFDra>_1 +r`T5"r_i_kr_$Lr^QlW +r^m)^r__c=2rr)iorql]jrqQKdrpp'WrpB^KroO. +ric="rhBC_rfd>Breg]*rd=]hrc%jQrb;@@ra5Y0r`9"tr_`Yjr_3;`r^d#Yr^QlTog@Y(r^#F,JO"cO +JO$%sr^#I/r^-KLqaCEQr^ZrYr_!/`r_NMjr`&ktr`oG0raPk@rbVRQrce?hrdb!*rf6uArgj%_ri#h" +rjMg>rl"fXrm(Mmrn7;,ro*kc=2qu-NlrqcWhrq??^rp]pTroj@C +ro3q5rn7;$rm1Sdrl+lNrj_s5ri5snrh'1TrfI,;rdt,trd"K_rbh^MraYq8ra#M)r`/qpr_NMer_*5] +r^ZrWr^?EHi'R<,i]r&[JO"cOW'L>Jh*V*-qa:6Kr^QlWr^d#]r__8rbDFLrc.p_ +rdOiurepc;rg!JTrhTOnrj)O5rkABNrlY5drmh#$rn[S5roX4DrpKdTrpp'^rqQKhqu$Hlh>c=2qu-Nl +rqcWhrqHE`rpg!VrosFFro="7rn@A&rm:Yfrl4rQrjr*8ri?$prh'1Vrf[8@re(3"rd4Wbrbh^Nrac": +ra5Y,r`/qrr_WShr_3;_r^d#Xr^HfSpdc=2rr2oqrquclrqQKerq-3[rpTjProj@Bro!e2rn7:trlkA`rkSNFrjMg/ri#gjrgNhN +rf@&5rdt,urcS3[rb_XIraYq7r`];&r`/qor_EGer^m)[r^ZrWr^HfSpdc=2rr2oqrquclrqZQgrq-3\rpTjRrosFE +ro!e3rn@A"rm(MdrkeZJrj_s3ri5snrg`tRrfI,9re(3"rce?_rbqdLrac"9r`oG*r`9"rr_WShr_!/] +r^d#Xr^HfSpd_:rb2:L +rcA'_rdXp#re^W9rg*PRrhTOnrilC3rkABKrlb;ermLf"rn[S3roX4ErpB^Rrpp'\rqQKgrqcWlrr)iq +h>c=2rr2fnrqcWirqQKbrpp'XrpB^Lroa:>rndY/rmUknrlkAZrkJHDrilC&rhf[drg<\Jrepc0rdaun +rcJ-XrbDFEraPk4r`T5%r_i_mr_NMer_!/]r^QcRnjD>%r^#a5JO"cOJO$A'r^#@,qa:6Jr^H]Rr^m)] +r_3;er_`Ymr`B)&ra#M4rau.ErbqdXrd"KnreCE1rf[8Jrgs+driH+'rjr*Crkn`Zrm1SmrnIG/ro*k> +rp'LMrp]pYrq-3brqZQirr)`nh>c=2rr2fnrql]krqZQerq-3[rpTjProj@Aro!e3rmq(srm(M_rk\TI +rj2U-ri,mirgWnPrf6u7re(2trce?^rb_XJrac"9r`oG*r`/qqr_NMer_!/]qa^WTr^?dKRqu-Nlrql]krq??`rpg!Vrp0RJ +roF(;rndY+rmUkmrl>#UrkJH?rilC&rhBC_rg3VGrepc0rdOilrcJ-XrbDFFraGe4r`fA&r_remr_EGd +r_!/\r^ZrWpdFmEe3`dmJO"cOJO$e3e3`ptr^?WOr^QlWr^d#\r_*5cr_WSnr`9#&ra,S4rb)4GrbqdX +rd"Klre:?/rfI,Grgj%_ri?%&rjDa?rkn`Urm1Smrn%/+ro*k;rosFKrpTjVrq-3`rqcWkrqucoqu5FO +gAh0Orr)iorql]krqHEbrq$-YrpB^NroO.>rnm_/rmh"prlY5ZrkSNCrj2U,rhTOcrgNhKrf-o5rdaup +rce?\rbVRIraPk6r`oG(r`/qqr_WSgr_*5^r^d#XqaLKPpd$Kr^?`Sr^QlW +r^m)^r_EGhr_i_pr`B)(ra5Y6rb2:Irc%j\rd=]qreUQ4rfR2Krh'1criZ7+rj_sCrl+lZrm:Yprn@A/ +ro3q=rp0ROrp]pYrq69brqcWkrqucorr1XOfDkjLrr)iorqcWgrq??`rp]pTrp9XIroF(:rnRM*rmUkk +rlG)Vrk/6=rilC$rhKIbrg!JFrf$i.rdOinrcA'XrbVRFraPk6r`];&r`/qor_EGer_!/]r^d#XqaLKP +og?tjr'Gs"L-U;TbWs-6qa:6Kr^H]Rr^d#[r_!/ar_NMir`/r"r`];.raPkAre:?&rdFcgrc8!Urb)4@ +ra>_1r`T5%r_i_lr_EGcr_!/\pdY$Hqa8Upr'Gs"L-U;TbWs-6r^6HKr^QcSr^d#[r_*5cr_WSlr`B)% +r`oG1rac"@rbh^TrcS3grdk'&rf6u@rg<\Xrhf[qrj2U6rkABNrlY5drm^r#rn[S5roX4DrpB^Srpp'\ +rq??drqcWkrr)`ngAfe)rr2oqrqucmrqZQfrq69]rp]pTrosFFro="8rn@A&rm:YgrlG)Srk&0;ric=" +rhBC\rg!JDreUQ,rdXolrcJ-XrbDFEraPk6r`fA(r_reor_NMfr_!/]qa^WTqaLKPnjCtpr'Gs"L-U;T +bWsH?ogAUEr^HfUr^QlWr^m)^r__2r`fA& +r_r\jr_EGdr^m)[r^ZrWqaLKPnjD(sk_rndY/rmh"qrltG\rkSNGrj2U- +ri5sjrg`tSrf@&9re:?$rd+Qdrc%jQrb;@Ara>_2r`K/"r_renr_NMfr_*5_r^coVr^QcRqaC_8rb;@Jrc%jZrd+Qnre:?/rf@&F +rg`t\ri5t#rj2U:rkSNOrltGirmh#&rndY5roa:GrpB^Rrpp'\rqHEfrqcNirr)`ngAf\&qu-NlrqcWh +rqHEarpp'XrpKdOroj@@rnm_1rmq(srm1Sarkn`MrjMg2riQ0prh'1YrfR2>re^W*rdFcjrc.pTrbMLD +raPk6r`fA'r`/qqr_`Yjr__3r`oG)r`9"tr_`Ykr_EGer_3;ar^m)[ogedHi^JDeJOP,YW($JNogf!Pr^m)^ +r_3;cr_EGgr_`Yor`9##r`oG/ra>_;rb;@Krc.p[rd"Kmre19-rf@&CrgNh[rhf[qrj2U6rk8#Rrk&0;ric=#rhKIarg<\Jrf-o4rdt,trcnEarc%jQrb2:@raGe5r`];'r`9"r +r_`Yjr_WShr_3;`oh#-Rpda=5JOY2[JOZS-pdb3PqapZWr_3;cr_WSir_`Ymr`9##r`];.raGe9rb2:H +rc%jYrd"Kkrdt-*rf-o?rg<\VrhKIlric=/rk&0Frl>#]rm:Yprn7;,ro*k_ +JOm[Lj%9,?r_*#[r__3r`];'r`9"tr_reor_WSir_E5_r_26CrCVW5JP(Jc_b/r^qb6cZr_EGgr_WSlr_req +r`9##r`];-ra5Y5rau.CrbVRPrcA'_rdOitre191rfR2Erg`t\rhTOqrj)O3rkABKrl4r_rmC_qrnIG/ +ro*k>rosFJrpTjVrq$-_rqHEfrqcWkrr)`ndJqMlrr2oqrqucmrqcWhrqHEarpp'XrpB^Mroj@@ro!e4 +rmq(trm1Scrl"fNrji$8ric="rhTOcrg<\Lrf@&7re19$rd=]hrc8!WrbVRIrac";ra5Y2r`fA)r`9"u +r`&kpqbd5er_NMir_NDdnkJaMJP:VgJPKrh'1bri#h"rj;[8rkJHNrlP/crmUktrndY4ro3q@rp'LMrp]pYrq-3a +rqZQirql]mrr)`ndJqMlrr2fnrquclrqZQgrq??`rpg!Vrp9XMroO.=rnm_/rn%.urm(Mbrl"fNrjr*: +riZ7"rhKIbrgNhOrf@&9reCE&rdFclrcA'YrbqdNrb)4Ara>_4ra,S.r`];(r`B)"r`/hor_iMgr_V]P +JPUhmJPWFEqb[&bqbmDlr`/qur`B)%r`];*ra,S2ra>_:rb2:GrbqdUrcA'brd=]qreCE1rf@&DrgNhY +rhKIkriZ7.rjr*Drl"fXrm(Mlrn%/'rnm_7roO.FrpB^Rrpg![rq??drqZQiqu$Hlqu5"CcN!e@rr)io +rqcNfrq??`rpp'XrpKdProa:Bro*k4rn7;$rm:YgrlG)Srk/6@riuI)ri,mjrgj%VrfR2?repc.rdaur +rce?arc.pTrbMLIrac";ra>_4ra#M.r`];(r`Jqrpf.,hkYct0JPq%sX&Apqpf.#hr`K/&r`];+ra#M1 +ra>_8rac"BrbMLNrc.pZrce?irdb!#repc9rfR2Jrgj%^ri,n!riuI5rk8_4qd'2+qcWo# +qcEbtk#M@ZJQ.2"JQ0Ndk#M:Zr`Au!r`T,'ra#M1ra>_6rac">rb)4IrbqdTrcS3crdFcrre19+rf@&A +rg!JRrh9=eriQ1)rj;[rnm_1rmq(srm1Sbrl"fOrk&0B +repc3rdk&urd=]hrcJ-YrbqdPrbDFFrau.?qdKJ2ra>_4ra,J-r`o"uoih;sJQ[P,JQ]lnnlk]jqcs,+ +qd080ra5Y4raGe:ral(ArbDFKrbqdTrcJ-`rd=]ordk')repc:rfd>Krgj%_rhoasriuI2rk&0Frl+lX +rm1Smrmq)(rndY5roa:Frp0RPrpg!Zrq??crqQKhrql]mrr)`nbQ#ccq#:9jrql]krqZQgrq??`rpp'W +rpKdOrosFBro*k5rn.5#rmC_hrlG)VrkABCrjDa0ri?$qrh07\rgEbKrf@&;reCE)rdXoprd"Kdrc.pV +rbh^NrbDFHqdob;raPb5ra>V1oj72prEOnYJR!b2_d)k?nm;<&qdBD3qdTG5ral(CrbDFJrbh^Rrc.p\ +rcnEirdXp"reCE2rf@&ArgEbUrh07fri?%&rjDa9rkABLrl>#^rmC_qrn.5,ro!e9rosFJrpKdSrpp'\ +rq??crqZQirql]mq#8J:`W,r:rr)iorql]krqQKerq-3\qsaUPrp'LEro="8rnIG(rmUknrlb;]rkSNG +rji$6riZ7$rhKIcrgj%Srfd>Brf$i4re(3#rdFcmrcS3^rc8!Wrbh^PrbDFGrb)+>rabn9raPG,nR-oU +JRF%:Zs`Q8qdTP7qdf\;rb)4ErbDFLrbqdTrc8!ZrcS3erdFcrre(3*rf$i;rfd>Irgj%]rhKInric=, +rji$ArkSNRrlb;frmUkurnIG0ro3q=rp'LLqsaUVrq-3arqZQirql]mrr)`naT'6Zrr2fnrquclqt^6c +rq??`rp]pTrpB^KroX4?ro!e2rn7;!rm1Sgrl4rSrkJHCrjDa0ri?$qrhBCargNhQrfI,>rf$i2re(3" +rdOinrd"KcrcJ-Zrc%jTrbh^PrbVRLrbD=Erb1Y2rau+?JRsCDJRu`1qe#D3qe5tCqeH+GrbVRNqelCP +rc.pYrcS3crd4WnrdXp"reCE2rf6u>rg3VRrh'1arhoarrilC0rji$Crkn`TrltGhrmLf!rnRM2ro="? +roj@KrpTjUrq-3_rqHEfqtg3frr)`naT'6Zqu6TnrquZjrqcWhrq??`rpp'XrpKdMroj@Dro*k6rnRM( +rmUkmrlY5[rkeZJrj_s7ric=%ri#girgs+Yrg!JHrf@&;re^W/rdk&urdFclrcnEdrcJ-\rc8!Xrc%jT +rbhUMrbV.@rbD1AJSB[LJSDo6qeGe>qeZ7KqelCOrc%jVrc8!ZrcJ-`rd"KhrdFcqrdk''reUQ4rf@&A +rg!JPrgs+_ri#gsric=.rji$ArkeZSrlY5drmUktrnRM0ro*k=roa:FrpKdTrpp'\rq??dqtgrf$i6reUQ.re19&qgnWordFZkqg7XTJU2ln +JU4SIrd4EfrdFZnrdb!!rdt-&reCE.reg]6rf6u>rf[8JrgNhWrh'1brhf[rric=,rjVmrnm_2rn%/"rmC_krlY5\rk\TKrk/6=rj2U-riH*trh]Uergs+[rg<\Mrfd>Crf@&= +repc5reUH*re19&qgnEjmXKe;JU`6#[t!t!rdjruqh4s&reUQ1repc9rf@&?rfd>Irg<\Urh'1_rh]Um +riH+&rj2U4rk/6Erk\TSrlb;ermC_prn%/*ro!e8roX4Drp'LOrp]pWrq-3_rqHEfqtg3frr)`n^]1kE +rr2fnrqucmrqcWhrqHEcrq-3\qsXONrp'LFro="9rndY/rn.4urm:YirlG)Xrk\TJrk&0>rj)O-riZ7" +rhf[irh07^rgj%Vrg3VLrf[8Crf@&?rf6u;rf$i7qhkB0reUH,nV2ULJVJ`1["eR8reUQ1qhkB2rf$i9 +rf6u>rf@&@rf[8Grg3VPrgj%\rh07crhf[oriZ7)rj)O5rjr*Crk\TQrlG)arm:Ymrn.5(rndY4roF(@ +rp'LLqsXOTrq-3`rqHEerqcWkrqucoqu4/+\c;[.qu-Nlrql]krqZQgrqHEbrq-3\rp]pTrp9XJroX4@ +ro!e3rn@A&rmUknrlkA`rl>#SrkJHFrj_s8riuI+ri?$trhf[jrh9=`rg`tWrgEbQrg*PJrfd>ErfR2A +rf?i7pl4p)JW,/=JW.1!pl5'/rf@&?rfR2Crfd>Grg*PMrgEbTrgj%\rh9=erhf[oriH+&riuI1rj_s? +rkABJrl>#[rlkAgrm^qurn@A-ro!e:roX4Drp9XOrp]pXrq-3_rqHEerqZQirql]mrr)`n\c95?rr2]k +rqucmrqcWirqQKdrq69_rpg!WrpTjOroj@Dro3q8rndY-rn%/!rm:Yhrlb;[rkn`MrkABCrjVm5riuI+ +ri?$uri#gkrhBCarh07^rg`tVrgEbQrg3VMrg!8Bplb93!KiLqOFrXGON*CTOnb+7PQ$jHQN!6MR/WNQ +Rf8iVSc5;]TDkP`U].4kWW&stYPtg+Zi7H5])KGC^])+L`W"'[cMl2ieGe%ug&Bk-i;Va8k5OTDlMg8O +nG_tWo`"O_pAXjdq>U6iqu6NjrVQT)s0Mb)rqlZnr;6BjqYp6gpAXaaoD\=Xn,D\QlMfrFj87d6h>Z.- +ec+%sci25hbPoT^_u@LO^](nF\c0);Zi76/YPt['XT#7!VZ*FkV#I.gUALVYTDkGWSai6JS:R/aRt7'Q +S*?I?Sc55XTD5)YU&LhdV#I4iVZ*UpX8]7#YPtg+Zi7H5])KAA^])(K_u@aVb5T]cci2Alec+;%h#$%/ +jSn<@lMg/In,DkVoD\F^pAXg`qYpBhr;QZlrjMj5s82fprVQNlqu6Hkq#:$epAX^`oD\:ZnG_kTm/H5J +k5OH@iVqa6h#?"+fDa>"d/M>ibl5]_`rd:c +U]."[Tn/ngTn/oKU&1S]U].(dV>d@hVuEXoWW&stXT#@$YPtg+ZMq92\,No:]`,YE_#D:O`r='Ybl5oe +d/MSpfDaJ&h#?10iVqp;k5OTDm/HDOnG_tWoD\C]pAXgcq#:-hqtp>[f3]6 +Zi79-Yl:j*Y5YR&XSAjqWq`RcW.CmuW.CnYW;*@hWr&jrXT#@$Y5YX%Yl:p,Zi7B3\,No:]DfMC^])%J +_u@XSao9K_cMl/hdJhVof`'V(hYuF3iVqm:kPj`Fli-APnG_tWoD\C]p&=^bq#:*gqYpBkr;QZlrilF, +s8N#jrVl`oqYU*cp\smco`"FYn,D\Qli-,Ik5OH@iVqd7hYu7.f`'J$df.Vmci22gbPoW_`W!gT_Z%@J +^](nF]DfD@\Giu:[emK3[/73,ZLY:!Y^s$0Y^s$rYk>9oZMq3-[/RK4[f3c8\Gj)=]DfJB^\bhG_Z%IP +`W"!YbPoccci2>kdf.hsf`'V(hYuF3iVqp;k5OTDli-;Kn,DnWo_\@]p\t!cqYU3frVQSus02OurqlZn +r;6BjqYp9hp\smcp&=U_o)A.Xmf)VQlMg#HkPjQAir7j7hYu:/g&BV&ec+%sd/M>ic2Plbao9B\`W!gT +_u@IN^\bbE^&G\>])0&8\F-g,\$ppsK=6?>`jYHIosk"3pq$I;rk83CrkJHJrkn`Rrl+lXrlP/^rltGg +rm:Ynrmh#"rn7;*rndY3ro3q>frltGbrlG)Zrl+lT +rkn`Prk\BFrkJHJrkJHHlb*>4]n*hK]Rd`8]^3?/^AbqI^\GVD_>_=N_u@UR`W!pWao9H^c2Q#cd/MJm +e,Iqtf`'Y)hYuF3i;Vd9jo4EAl2L#Jmf)\SnG_tWo`"O_pAXgcq#:*gqYpBkr:p6friQ3us8N#jrVl`i +qYp9hp\smco`"FYnG_nUmf)POlMg#Hjo4<;i;VU4h>Z1.gA]b(ec+(tdf.Vjci25hc2PrdbPoZ`anWpU +`r!a@`95'i_jePp_rS_\`;[aQ`q[URao9H^bPo`bc2Q#fchl)gdf._pec+5#g&Bb*h>Z:.i;Vd9jo4KC +l2L#GmecMQoD\C]pAXgcq"X^_r;6Hirhodos7lTjrVl`lqu6Hkq>U0gp\sjbo`"I]nc&%Wn,D_Rm/H;L +kl0`Djo49=iVVO3h#?(-g&BY'fDa>"eGdqrdJhMici25hc1oN[bO!CMalLQpaI^J(aPk5#am$tIbP9<\ +c2Q#cci2;jdJhVoeGe"tfDaG%g&Bb*h>?+/iVqj9jo4HBkl0lHli-;Nn,DhUnc&.Zo`"O_p\sseq>:$f +qtpU6iqtpMlMg#Hk5OKAjSRp8hu;R5hu;L3h##k$g&BY$fC.8^eFV1@duVt/e()q0eF1re +fDF4qg&Bb'h##t-i;VX5i;V^7jSn9?k5OTDl2L#Jm/HDLn,DhUnc&1[p&=[ap\sseq>:$fqtpMlMg#EkPOB?jS7a-i:Z")hX93Nh1=C5h7)55hYZ4$ +i:u=/jSn9?kPOKBlMg,Km/HGPn,DhUnb_nSo`"O_p\Xa\qYU3frUp/Zs-l2KuF +li-8MmJH>NnG_nUnc&+Vo`"O_p\Xabq>:$fqtpU0gp\sm`p&=U_oD\=[ +nc&"VnG_nUmecDNm/-,JlMKi=kkjQ6k4dtgjalNEjhU!Ek5OQ7kl0iDlMg,Hm/HDOmf)YRnG_nUnc&+Y +oD\CZp&=[ap\Xabq>:$fqtU*Xrg!MBs7lTgrVl`lqu6Hhq>U0dp\smcp&"C\oD\=Unc&%Nn,DbPmJH8L +lhfuKn,)VRnb_kUo)A7Xo`"O_pAXg`q#:*dqYpBhr:p6crf$l0 +s8N#grVl`lqtU$eq>U0ap\sm`p&=U\oD\=Xnb_hBn*'1jmXaeWm]5dHn+H2Lnb_nVoD\C]o`"O\pA=U` +q#:*aqYpBhr:U$cre(6's7QBgrV6U0dp\smZp&=UVoC_\On`]Inn:C([n>l'Xnac8JoDA1Q +p&=[^p\ssbq=XU`qtU*grUTr?s+14Ks82fdrVl`fqtp6eq>U0^p\X[]p$_PAoCVU)nq$@_o"+D\oC)>N +p%A%Up\Xabq=XU]qtp %APLeod +EI +/Cs1 SC +0 sc +1 0 0 -1 299 488.5 cm +/F1.1[ 12 0 0 -12 0 0]sf +-24 4.5 m +(!"#$%&)[ 9.539062 7.587891 6.503906 6.462891 7.587891 0.000000 ] xS +1 J +1 j +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +279.97015 112 m +139.02606 187.34512 l +S +323 111.87646 m +597.69958 181.74915 l +S +1 1 1 sc +CM +81.599998 406 m +140.39999 406 l +147.35519 406 153 397.936 153 388 c +153 378.064 147.35519 370 140.39999 370 c +81.599998 370 l +74.644806 370 69 378.064 69 388 c +69 397.936 74.644806 406 81.599998 406 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +76.599998 187 m +135.39999 187 l +142.35519 187 148 195.064 148 205 c +148 214.936 142.35519 223 135.39999 223 c +76.599998 223 l +69.644806 223 64 214.936 64 205 c +64 195.064 69.644806 187 76.599998 187 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 111 388 cm +-19.962891 4.5 m +('\(\)*+)[ 8.279297 8.988281 10.335938 3.457031 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +613.59998 419 m +672.40002 419 l +679.35522 419 685 410.936 685 401 c +685 391.064 679.35522 383 672.40002 383 c +613.59998 383 l +606.64478 383 601 391.064 601 401 c +601 410.936 606.64478 419 613.59998 419 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +608.59998 174 m +667.40002 174 l +674.35522 174 680 182.064 680 192 c +680 201.936 674.35522 210 667.40002 210 c +608.59998 210 l +601.64478 210 596 201.936 596 192 c +596 182.064 601.64478 174 608.59998 174 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 643 401 cm +-23.469727 4.5 m +(,*"#+#%)[ 6.433594 3.457031 7.587891 6.503906 8.865234 6.503906 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +27.964201 317 m +86.764198 317 l +93.719398 317 99.364197 308.936 99.364197 299 c +99.364197 289.064 93.719398 281 86.764198 281 c +27.964201 281 l +21.009003 281 15.364201 289.064 15.364201 299 c +15.364201 308.936 21.009003 317 27.964201 317 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +22.964201 276 m +81.764198 276 l +88.719398 276 94.364197 284.064 94.364197 294 c +94.364197 303.936 88.719398 312 81.764198 312 c +22.964201 312 l +16.009003 312 10.364201 303.936 10.364201 294 c +10.364201 284.064 16.009003 276 22.964201 276 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 57.364201 299 cm +-13.942379 4.5 m +(%*\)#)[ 7.587891 3.457031 10.335938 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +94.894234 223.42822 m +63.469971 275.57175 l +S +1 1 1 sc +CM +409.60001 255 m +468.39999 255 l +475.35519 255 481 246.936 481 237 c +481 227.064 475.35519 219 468.39999 219 c +409.60001 219 l +402.64481 219 397 227.064 397 237 c +397 246.936 402.64481 255 409.60001 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +404.60001 338 m +463.39999 338 l +470.35519 338 476 346.064 476 356 c +476 365.936 470.35519 374 463.39999 374 c +404.60001 374 l +397.64481 374 392 365.936 392 356 c +392 346.064 397.64481 338 404.60001 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 439 237 cm +-22.347656 4.5 m +($%'%-$)[ 6.462891 7.587891 8.279297 7.587891 8.314453 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +615.22003 210.31329 m +456.77991 337.68671 l +S +1 1 1 sc +CM +511.60001 255 m +570.40002 255 l +577.35522 255 583 246.936 583 237 c +583 227.064 577.35522 219 570.40002 219 c +511.60001 219 l +504.64481 219 499 227.064 499 237 c +499 246.936 504.64481 255 511.60001 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +506.60001 338 m +565.40002 338 l +572.35522 338 578 346.064 578 356 c +578 365.936 572.35522 374 565.40002 374 c +506.60001 374 l +499.64481 374 494 365.936 494 356 c +494 346.064 499.64481 338 506.60001 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 541 237 cm +-13.101562 4.5 m +('"\))[ 8.279297 7.587891 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +626.54083 210.42459 m +547.45917 337.57541 l +S +1 1 1 sc +CM +613.59998 255 m +672.40002 255 l +679.35522 255 685 246.936 685 237 c +685 227.064 679.35522 219 672.40002 219 c +613.59998 219 l +606.64478 219 601 227.064 601 237 c +601 246.936 606.64478 255 613.59998 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +608.59998 338 m +667.40002 338 l +674.35522 338 680 346.064 680 356 c +680 365.936 674.35522 374 667.40002 374 c +608.59998 374 l +601.64478 374 596 365.936 596 356 c +596 346.064 601.64478 338 608.59998 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 643 237 cm +-11.991211 4.5 m +(,*"#)[ 6.433594 3.457031 7.587891 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +826.59998 255 m +885.40002 255 l +892.35522 255 898 246.936 898 237 c +898 227.064 892.35522 219 885.40002 219 c +826.59998 219 l +819.64478 219 814 227.064 814 237 c +814 246.936 819.64478 255 826.59998 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +821.59998 338 m +880.40002 338 l +887.35522 338 893 346.064 893 356 c +893 365.936 887.35522 374 880.40002 374 c +821.59998 374 l +814.64478 374 809 365.936 809 356 c +809 346.064 814.64478 338 821.59998 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 856 237 cm +-15.553711 4.5 m +($.+/)[ 6.462891 7.476562 8.865234 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +259.60001 317 m +318.39999 317 l +325.35519 317 331 308.936 331 299 c +331 289.064 325.35519 281 318.39999 281 c +259.60001 281 l +252.64481 281 247 289.064 247 299 c +247 308.936 252.64481 317 259.60001 317 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +254.60001 276 m +313.39999 276 l +320.35519 276 326 284.064 326 294 c +326 303.936 320.35519 312 313.39999 312 c +254.60001 312 l +247.64481 312 242 303.936 242 294 c +242 284.064 247.64481 276 254.60001 276 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 289 299 cm +-20.15625 4.5 m +(012#")[ 6.632812 9.322266 10.265625 6.503906 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +140.21878 222.10938 m +249.78123 276.89062 l +S +1 1 1 sc +CM +715.59998 255 m +774.40002 255 l +781.35522 255 787 246.936 787 237 c +787 227.064 781.35522 219 774.40002 219 c +715.59998 219 l +708.64478 219 703 227.064 703 237 c +703 246.936 708.64478 255 715.59998 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +710.59998 338 m +769.40002 338 l +776.35522 338 782 346.064 782 356 c +782 365.936 776.35522 374 769.40002 374 c +710.59998 374 l +703.64478 374 698 365.936 698 356 c +698 346.064 703.64478 338 710.59998 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 745 237 cm +-18.823242 4.5 m +(\(#3'.)[ 8.988281 6.503906 6.398438 8.279297 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +638 210.5 m +638 337.5 l +S +649.45917 210.42459 m +728.54083 337.57541 l +S +661.77423 210.30505 m +827.22577 337.69498 l +S +1 1 1 sc +CM +409.60001 187 m +468.39999 187 l +475.35519 187 481 178.936 481 169 c +481 159.064 475.35519 151 468.39999 151 c +409.60001 151 l +402.64481 151 397 159.064 397 169 c +397 178.936 402.64481 187 409.60001 187 c +f +[ +4 +4 +] 0 d +0 0 0 sc +1 0 0 -1 5 593 cm +404.60001 406 m +463.39999 406 l +470.35519 406 476 414.064 476 424 c +476 433.936 470.35519 442 463.39999 442 c +404.60001 442 l +397.64481 442 392 433.936 392 424 c +392 414.064 397.64481 406 404.60001 406 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 439 169 cm +-16.839844 4.5 m +(+1\(#)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +434 374.5 m +434 405.5 l +S +1 1 1 sc +CM +511.60001 187 m +570.40002 187 l +577.35522 187 583 178.936 583 169 c +583 159.064 577.35522 151 570.40002 151 c +511.60001 151 l +504.64481 151 499 159.064 499 169 c +499 178.936 504.64481 187 511.60001 187 c +f +[] 0 d +0 0 0 sc +1 0 0 -1 5 593 cm +506.60001 406 m +565.40002 406 l +572.35522 406 578 414.064 578 424 c +578 433.936 572.35522 442 565.40002 442 c +506.60001 442 l +499.64481 442 494 433.936 494 424 c +494 414.064 499.64481 406 506.60001 406 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 541 169 cm +-16.839844 4.5 m +(+1\(#)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +511.60001 119 m +570.40002 119 l +577.35522 119 583 110.936 583 101 c +583 91.063995 577.35522 83 570.40002 83 c +511.60001 83 l +504.64481 83 499 91.063995 499 101 c +499 110.936 504.64481 119 511.60001 119 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +506.60001 474 m +565.40002 474 l +572.35522 474 578 482.064 578 492 c +578 501.936 572.35522 510 565.40002 510 c +506.60001 510 l +499.64481 510 494 501.936 494 492 c +494 482.064 499.64481 474 506.60001 474 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 541 101 cm +-19.584961 4.5 m +(4'564\(5)[ 3.902344 8.279297 3.902344 6.292969 3.902344 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +613.59998 187 m +672.40002 187 l +679.35522 187 685 178.936 685 169 c +685 159.064 679.35522 151 672.40002 151 c +613.59998 151 l +606.64478 151 601 159.064 601 169 c +601 178.936 606.64478 187 613.59998 187 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +608.59998 406 m +667.40002 406 l +674.35522 406 680 414.064 680 424 c +680 433.936 674.35522 442 667.40002 442 c +608.59998 442 l +601.64478 442 596 433.936 596 424 c +596 414.064 601.64478 406 608.59998 406 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 643 169 cm +-16.839844 4.5 m +(+1\(#)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +715.59998 187 m +774.40002 187 l +781.35522 187 787 178.936 787 169 c +787 159.064 781.35522 151 774.40002 151 c +715.59998 151 l +708.64478 151 703 159.064 703 169 c +703 178.936 708.64478 187 715.59998 187 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +710.59998 406 m +769.40002 406 l +776.35522 406 782 414.064 782 424 c +782 433.936 776.35522 442 769.40002 442 c +710.59998 442 l +703.64478 442 698 433.936 698 424 c +698 414.064 703.64478 406 710.59998 406 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 745 169 cm +-16.839844 4.5 m +(+1\(#)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +715.59998 119 m +774.40002 119 l +781.35522 119 787 110.936 787 101 c +787 91.063995 781.35522 83 774.40002 83 c +715.59998 83 l +708.64478 83 703 91.063995 703 101 c +703 110.936 708.64478 119 715.59998 119 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +710.59998 474 m +769.40002 474 l +776.35522 474 782 482.064 782 492 c +782 501.936 776.35522 510 769.40002 510 c +710.59998 510 l +703.64478 510 698 501.936 698 492 c +698 482.064 703.64478 474 710.59998 474 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 745 101 cm +-23.712891 4.5 m +(/7899:;)[ 8.302734 7.447266 6.626953 7.447266 7.447266 6.685547 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +536 374.5 m +536 405.49997 l +S +536 442.5 m +536 473.5 l +S +638 374.5 m +638 405.5 l +S +740 374.5 m +740 405.5 l +S +740 442.49997 m +740 473.5 l +S +1 1 1 sc +CM +518.88037 321.9823 m +551.88037 321.9823 l +551.88037 306.9823 l +518.88037 306.9823 l +h +518.88037 321.9823 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 535.38037 314.4823 cm +-11.381836 4.5 m +(<#%)[ 8.671875 6.503906 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +569.58997 323.42896 m +610.58997 323.42896 l +610.58997 308.42896 l +569.58997 308.42896 l +h +569.58997 323.42896 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 590.08997 315.92896 cm +-15.00293 4.5 m +(01$%)[ 6.632812 9.322266 6.462891 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +622.5 323.52502 m +663.5 323.52502 l +663.5 308.52502 l +622.5 308.52502 l +h +622.5 323.52502 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 643 316.02502 cm +-15.00293 4.5 m +(01$%)[ 6.632812 9.322266 6.462891 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +675.3208 323.57242 m +716.3208 323.57242 l +716.3208 308.57242 l +675.3208 308.57242 l +h +675.3208 323.57242 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 695.8208 316.07242 cm +-15.00293 4.5 m +(01$%)[ 6.632812 9.322266 6.462891 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +732.78418 323.58633 m +773.78418 323.58633 l +773.78418 308.58633 l +732.78418 308.58633 l +h +732.78418 323.58633 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 753.28418 316.08633 cm +-15.00293 4.5 m +(01$%)[ 6.632812 9.322266 6.462891 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +66.290977 348.69165 m +99.290977 348.69165 l +99.290977 333.69165 l +66.290977 333.69165 l +h +66.290977 348.69165 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 82.790977 341.19165 cm +-11.381836 4.5 m +(<#%)[ 8.671875 6.503906 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +133.54401 351 m +203.54401 351 l +203.54401 336 l +133.54401 336 l +h +133.54401 351 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 168.54401 343.5 cm +-29.53125 4.5 m +(<#%601$%)[ 8.671875 6.503906 7.587891 6.292969 6.632812 9.322266 6.462891 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +259.60001 255 m +318.39999 255 l +325.35519 255 331 246.936 331 237 c +331 227.064 325.35519 219 318.39999 219 c +259.60001 219 l +252.64481 219 247 227.064 247 237 c +247 246.936 252.64481 255 259.60001 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +254.60001 338 m +313.39999 338 l +320.35519 338 326 346.064 326 356 c +326 365.936 320.35519 374 313.39999 374 c +254.60001 374 l +247.64481 374 242 365.936 242 356 c +242 346.064 247.64481 338 254.60001 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 289 237 cm +-23.334961 4.5 m +(1+61,,)[ 9.322266 8.865234 6.292969 9.322266 6.433594 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +284 312.5 m +284 337.5 l +S +1 1 1 sc +CM +613.59998 119 m +672.40002 119 l +679.35522 119 685 110.936 685 101 c +685 91.063995 679.35522 83 672.40002 83 c +613.59998 83 l +606.64478 83 601 91.063995 601 101 c +601 110.936 606.64478 119 613.59998 119 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +608.59998 474 m +667.40002 474 l +674.35522 474 680 482.064 680 492 c +680 501.936 674.35522 510 667.40002 510 c +608.59998 510 l +601.64478 510 596 501.936 596 492 c +596 482.064 601.64478 474 608.59998 474 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 643 101 cm +-23.712891 4.5 m +(/7899:;)[ 8.302734 7.447266 6.626953 7.447266 7.447266 6.685547 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +637.5 442 m +637.5 473 l +S +1 1 1 sc +CM +715.59998 51 m +774.40002 51 l +781.35522 51 787 42.935974 787 33 c +787 23.064026 781.35522 15 774.40002 15 c +715.59998 15 l +708.64478 15 703 23.064026 703 33 c +703 42.935974 708.64478 51 715.59998 51 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +710.59998 542 m +769.40002 542 l +776.35522 542 782 550.06403 782 560 c +782 569.93597 776.35522 578 769.40002 578 c +710.59998 578 l +703.64478 578 698 569.93597 698 560 c +698 550.06403 703.64478 542 710.59998 542 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 745 33 cm +-18.823242 4.5 m +(\(#3'.)[ 8.988281 6.503906 6.398438 8.279297 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +739.5 510 m +739.5 541 l +S +1 1 1 sc +CM +146.14401 255 m +204.944 255 l +211.8992 255 217.54401 246.936 217.54401 237 c +217.54401 227.064 211.8992 219 204.944 219 c +146.14401 219 l +139.18881 219 133.54401 227.064 133.54401 237 c +133.54401 246.936 139.18881 255 146.14401 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +141.14401 338 m +199.944 338 l +206.8992 338 212.54401 346.064 212.54401 356 c +212.54401 365.936 206.8992 374 199.944 374 c +141.14401 374 l +134.18881 374 128.54401 365.936 128.54401 356 c +128.54401 346.064 134.18881 338 141.14401 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 175.54401 237 cm +-18.357422 4.5 m +(31<*+)[ 6.398438 9.322266 8.671875 3.457031 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +23.6 185 m +82.400002 185 l +89.355194 185 95 176.936 95 167 c +95 157.064 89.355194 149 82.400002 149 c +23.6 149 l +16.644802 149 11 157.064 11 167 c +11 176.936 16.644802 185 23.6 185 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +18.6 408 m +77.400002 408 l +84.355194 408 90 416.064 90 426 c +90 435.936 84.355194 444 77.400002 444 c +18.6 444 l +11.644802 444 6 435.936 6 426 c +6 416.064 11.644802 408 18.6 408 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 53 167 cm +-26.141598 4.5 m +("#=-#$%)[ 7.587891 6.503906 9.322266 8.314453 6.503906 6.462891 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +114.6 185 m +173.39999 185 l +180.35519 185 186 176.936 186 167 c +186 157.064 180.35519 149 173.39999 149 c +114.6 149 l +107.64481 149 102 157.064 102 167 c +102 176.936 107.64481 185 114.6 185 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +109.6 408 m +168.39999 408 l +175.35519 408 181 416.064 181 426 c +181 435.936 175.35519 444 168.39999 444 c +109.6 444 l +102.64481 444 97 435.936 97 426 c +97 416.064 102.64481 408 109.6 408 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 144 167 cm +/F1.1[ 11 0 0 -11 0 0]sf +-26.73999 4.5 m +("#$01+$#)[ 6.955566 5.961914 5.924316 6.080078 8.545410 8.126465 5.924316 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +205.60001 185 m +264.39999 185 l +271.35519 185 277 176.936 277 167 c +277 157.064 271.35519 149 264.39999 149 c +205.60001 149 l +198.64481 149 193 157.064 193 167 c +193 176.936 198.64481 185 205.60001 185 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +200.60001 408 m +259.39999 408 l +266.35519 408 272 416.064 272 426 c +272 435.936 266.35519 444 259.39999 444 c +200.60001 444 l +193.64481 444 188 435.936 188 426 c +188 416.064 193.64481 408 200.60001 408 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 235 167 cm +/F1.1[ 12 0 0 -12 0 0]sf +-24.808594 4.5 m +(31<1-%)[ 6.398438 9.322266 8.671875 9.322266 8.314453 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +296.60001 185 m +355.39999 185 l +362.35519 185 368 176.936 368 167 c +368 157.064 362.35519 149 355.39999 149 c +296.60001 149 l +289.64481 149 284 157.064 284 167 c +284 176.936 289.64481 185 296.60001 185 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +291.60001 408 m +350.39999 408 l +357.35519 408 363 416.064 363 426 c +363 435.936 357.35519 444 350.39999 444 c +291.60001 444 l +284.64481 444 279 435.936 279 426 c +279 416.064 284.64481 408 291.60001 408 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 326 167 cm +-22.347656 4.5 m +($%'%-$)[ 6.462891 7.587891 8.279297 7.587891 8.314453 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +114.6 123 m +173.39999 123 l +180.35519 123 186 114.936 186 105 c +186 95.063995 180.35519 87 173.39999 87 c +114.6 87 l +107.64481 87 102 95.063995 102 105 c +102 114.936 107.64481 123 114.6 123 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +109.6 470 m +168.39999 470 l +175.35519 470 181 478.064 181 488 c +181 497.936 175.35519 506 168.39999 506 c +109.6 506 l +102.64481 506 97 497.936 97 488 c +97 478.064 102.64481 470 109.6 470 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 144 105 cm +-24.84082 4.5 m +(":>?@A8;)[ 7.587891 6.685547 6.117188 7.552734 3.796875 7.845703 6.626953 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +113.8905 223.45975 m +162.6535 337.54025 l +S +1 1 1 sc +CM +108.20374 320.15967 m +178.20374 320.15967 l +178.20374 305.15967 l +108.20374 305.15967 l +h +108.20374 320.15967 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 143.20374 312.65967 cm +-29.53125 4.5 m +(<#%601$%)[ 8.671875 6.503906 7.587891 6.292969 6.632812 9.322266 6.462891 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +138.91594 374.06671 m +79.628021 407.93332 l +S +162.22728 374.45584 m +147.31673 407.54416 l +S +186.15637 374.38107 m +214.38763 407.61893 l +S +205.86266 372.43207 m +285.6813 409.5679 l +S +139 444.49997 m +139 469.5 l +S +1 1 1 sc +CM +929.59998 255 m +988.40002 255 l +995.35522 255 1001 246.936 1001 237 c +1001 227.064 995.35522 219 988.40002 219 c +929.59998 219 l +922.64478 219 917 227.064 917 237 c +917 246.936 922.64478 255 929.59998 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +924.59998 338 m +983.40002 338 l +990.35522 338 996 346.064 996 356 c +996 365.936 990.35522 374 983.40002 374 c +924.59998 374 l +917.64478 374 912 365.936 912 356 c +912 346.064 917.64478 338 924.59998 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 959 237 cm +-25.022461 4.5 m +(A#"$*1+)[ 7.845703 6.503906 7.587891 6.462891 3.457031 9.322266 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +929.59998 187 m +988.40002 187 l +995.35522 187 1001 178.936 1001 169 c +1001 159.064 995.35522 151 988.40002 151 c +929.59998 151 l +922.64478 151 917 159.064 917 169 c +917 178.936 922.64478 187 929.59998 187 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +924.59998 406 m +983.40002 406 l +990.35522 406 996 414.064 996 424 c +996 433.936 990.35522 442 983.40002 442 c +924.59998 442 l +917.64478 442 912 433.936 912 424 c +912 414.064 917.64478 406 924.59998 406 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 959 169 cm +-16.839844 4.5 m +(+1\(#)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +1039.6 255 m +1098.4 255 l +1105.3552 255 1111 246.936 1111 237 c +1111 227.064 1105.3552 219 1098.4 219 c +1039.6 219 l +1032.6448 219 1027 227.064 1027 237 c +1027 246.936 1032.6448 255 1039.6 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +1034.6 338 m +1093.4 338 l +1100.3552 338 1106 346.064 1106 356 c +1106 365.936 1100.3552 374 1093.4 374 c +1034.6 374 l +1027.6448 374 1022 365.936 1022 356 c +1022 346.064 1027.6448 338 1034.6 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 1069 237 cm +-28.016602 4.5 m +(/B'++#3)[ 8.302734 8.818359 8.279297 8.865234 8.865234 6.503906 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +1039.6 185 m +1098.4 185 l +1105.3552 185 1111 176.936 1111 167 c +1111 157.064 1105.3552 149 1098.4 149 c +1039.6 149 l +1032.6448 149 1027 157.064 1027 167 c +1027 176.936 1032.6448 185 1039.6 185 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +1034.6 408 m +1093.4 408 l +1100.3552 408 1106 416.064 1106 426 c +1106 435.936 1100.3552 444 1093.4 444 c +1034.6 444 l +1027.6448 444 1022 435.936 1022 426 c +1022 416.064 1027.6448 408 1034.6 408 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 1069 167 cm +-16.839844 4.5 m +(+1\(#)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +1039.6 115 m +1098.4 115 l +1105.3552 115 1111 106.936 1111 97 c +1111 87.063995 1105.3552 79 1098.4 79 c +1039.6 79 l +1032.6448 79 1027 87.063995 1027 97 c +1027 106.936 1032.6448 115 1039.6 115 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +1034.6 478 m +1093.4 478 l +1100.3552 478 1106 486.064 1106 496 c +1106 505.936 1100.3552 514 1093.4 514 c +1034.6 514 l +1027.6448 514 1022 505.936 1022 496 c +1022 486.064 1027.6448 478 1034.6 478 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 1069 97 cm +-23.712891 4.5 m +(/7899:;)[ 8.302734 7.447266 6.626953 7.447266 7.447266 6.685547 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +1149.6 255 m +1208.4 255 l +1215.3552 255 1221 246.936 1221 237 c +1221 227.064 1215.3552 219 1208.4 219 c +1149.6 219 l +1142.6448 219 1137 227.064 1137 237 c +1137 246.936 1142.6448 255 1149.6 255 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +1144.6 338 m +1203.4 338 l +1210.3552 338 1216 346.064 1216 356 c +1216 365.936 1210.3552 374 1203.4 374 c +1144.6 374 l +1137.6448 374 1132 365.936 1132 356 c +1132 346.064 1137.6448 338 1144.6 338 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 1179 237 cm +-23.106445 4.5 m +(3*%#"'3)[ 6.398438 3.457031 7.587891 6.503906 7.587891 8.279297 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +1149.6 187 m +1208.4 187 l +1215.3552 187 1221 178.936 1221 169 c +1221 159.064 1215.3552 151 1208.4 151 c +1149.6 151 l +1142.6448 151 1137 159.064 1137 169 c +1137 178.936 1142.6448 187 1149.6 187 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +1144.6 406 m +1203.4 406 l +1210.3552 406 1216 414.064 1216 424 c +1216 433.936 1210.3552 442 1203.4 442 c +1144.6 442 l +1137.6448 442 1132 433.936 1132 424 c +1132 414.064 1137.6448 406 1144.6 406 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 1179 169 cm +-16.839844 4.5 m +(+1\(#)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +1149.6 115 m +1208.4 115 l +1215.3552 115 1221 106.936 1221 97 c +1221 87.063995 1215.3552 79 1208.4 79 c +1149.6 79 l +1142.6448 79 1137 87.063995 1137 97 c +1137 106.936 1142.6448 115 1149.6 115 c +f +0 0 0 sc +1 0 0 -1 5 593 cm +1144.6 478 m +1203.4 478 l +1210.3552 478 1216 486.064 1216 496 c +1216 505.936 1210.3552 514 1203.4 514 c +1144.6 514 l +1137.6448 514 1132 505.936 1132 496 c +1132 486.064 1137.6448 478 1144.6 478 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 1179 97 cm +-13.813477 4.5 m +(/\)\()[ 8.302734 10.335938 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 5 593 cm +1064 374.5 m +1064 407.5 l +S +1064 444.5 m +1064 477.5 l +S +954 374.5 m +954 405.5 l +S +1174 374.5 m +1174 405.5 l +S +1174 442.5 m +1174 477.5 l +S +671.57709 209.42609 m +920.42291 338.57391 l +S +675.54175 206.4527 m +1026.4581 341.5473 l +S +677.33606 204.03564 m +1134.6639 343.96436 l +S +1 1 1 sc +CM +903.9906 322.37225 m +944.9906 322.37225 l +944.9906 307.37225 l +903.9906 307.37225 l +h +903.9906 322.37225 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 924.4906 314.87225 cm +-15.00293 4.5 m +(01$%)[ 6.632812 9.322266 6.462891 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +848.41357 323.06845 m +881.41357 323.06845 l +881.41357 308.06845 l +848.41357 308.06845 l +h +848.41357 323.06845 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 864.91357 315.56845 cm +-11.381836 4.5 m +(<#%)[ 8.671875 6.503906 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +790.71265 323.27576 m +823.71265 323.27576 l +823.71265 308.27576 l +790.71265 308.27576 l +h +790.71265 323.27576 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 807.21265 315.77576 cm +-11.381836 4.5 m +(<#%)[ 8.671875 6.503906 0.000000 ] xS +ep +end +%%Trailer +%%EOF ADDED Docs/Images/rest_cmds.graffle Index: Docs/Images/rest_cmds.graffle ================================================================== --- Docs/Images/rest_cmds.graffle +++ Docs/Images/rest_cmds.graffle cannot compute difference between binary files ADDED Docs/Images/rest_cmds.png Index: Docs/Images/rest_cmds.png ================================================================== --- Docs/Images/rest_cmds.png +++ Docs/Images/rest_cmds.png cannot compute difference between binary files ADDED Docs/Images/rest_cmds_web.png Index: Docs/Images/rest_cmds_web.png ================================================================== --- Docs/Images/rest_cmds_web.png +++ Docs/Images/rest_cmds_web.png cannot compute difference between binary files ADDED Docs/Images/run.png Index: Docs/Images/run.png ================================================================== --- Docs/Images/run.png +++ Docs/Images/run.png cannot compute difference between binary files ADDED Docs/Images/system 2.png Index: Docs/Images/system 2.png ================================================================== --- Docs/Images/system 2.png +++ Docs/Images/system 2.png cannot compute difference between binary files ADDED Docs/Images/system.eps Index: Docs/Images/system.eps ================================================================== --- Docs/Images/system.eps +++ Docs/Images/system.eps @@ -0,0 +1,4526 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%HiResBoundingBox: 0.000000 0.000000 522.000000 342.000000 +%APL_DSC_Encoding: UTF8 +%APLProducer: (Version 10.6.5 (Build 10H574) Quartz PS Context) +%%Title: (Unknown) +%%Creator: (Unknown) +%%CreationDate: (Unknown) +%%For: (Unknown) +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 0 0 522 342 +%%EndComments +%%BeginProlog +%%BeginFile: cg-pdf.ps +%%Copyright: Copyright 2000-2004 Apple Computer Incorporated. +%%Copyright: All Rights Reserved. +currentpacking true setpacking +/cg_md 141 dict def +cg_md begin +/L3? languagelevel 3 ge def +/bd{bind def}bind def +/ld{load def}bd +/xs{exch store}bd +/xd{exch def}bd +/cmmtx matrix def +mark +/sc/setcolor +/scs/setcolorspace +/dr/defineresource +/fr/findresource +/T/true +/F/false +/d/setdash +/w/setlinewidth +/J/setlinecap +/j/setlinejoin +/M/setmiterlimit +/i/setflat +/rc/rectclip +/rf/rectfill +/rs/rectstroke +/f/fill +/f*/eofill +/sf/selectfont +/s/show +/xS/xshow +/yS/yshow +/xyS/xyshow +/S/stroke +/m/moveto +/l/lineto +/c/curveto +/h/closepath +/n/newpath +/q/gsave +/Q/grestore +counttomark 2 idiv +{ld}repeat pop +/SC{ + /ColorSpace fr scs +}bd +/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld +/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld +/cgmtx matrix def +/sdmtx{cgmtx currentmatrix pop}bd +/CM {cgmtx setmatrix}bd +/cm {cmmtx astore CM concat}bd +/W{clip newpath}bd +/W*{eoclip newpath}bd +statusdict begin product end dup (HP) anchorsearch{ + pop pop pop + true +}{ + pop + (hp) anchorsearch{ + pop pop true + }{ + pop false + }ifelse +}ifelse +{ + { + { + pop pop + (0)dup 0 4 -1 roll put + F charpath + }cshow + } +}{ + {F charpath} +}ifelse +/cply exch bd +/cps {cply stroke}bd +/pgsave 0 def +/bp{/pgsave save store}bd +/ep{pgsave restore showpage}def +/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd +/scrdict 10 dict def +/scrmtx matrix def +/patarray 0 def +/createpat{patarray 3 1 roll put}bd +/makepat{ +scrmtx astore pop +gsave +initgraphics +CM +patarray exch get +scrmtx +makepattern +grestore +setpattern +}bd +/cg_BeginEPSF{ + userdict save/cg_b4_Inc_state exch put + userdict/cg_endepsf/cg_EndEPSF load put + count userdict/cg_op_count 3 -1 roll put + countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put + 3 sub{end}repeat + /showpage {} def + 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + false setstrokeadjust false setoverprint +}bd +/cg_EndEPSF{ + countdictstack 3 sub { end } repeat + cg_dict_array 3 1 index length 3 sub getinterval + {begin}forall + count userdict/cg_op_count get sub{pop}repeat + userdict/cg_b4_Inc_state get restore + F setpacking +}bd +/cg_biproc{currentfile/RunLengthDecode filter}bd +/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd +/ImageDataSource 0 def +L3?{ + /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd + /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd +}{ + /ImageBandMask 0 def + /ImageBandData 0 def + /cg_mibiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd + /cg_miaiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter + dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd +}ifelse +/imsave 0 def +/BI{save/imsave xd mark}bd +/EI{imsave restore}bd +/ID{ +counttomark 2 idiv +dup 2 add +dict begin +{def} repeat +pop +/ImageType 1 def +/ImageMatrix[Width 0 0 Height neg 0 Height]def +currentdict dup/ImageMask known{ImageMask}{F}ifelse exch +L3?{ + dup/MaskedImage known + { + pop + << + /ImageType 3 + /InterleaveType 2 + /DataDict currentdict + /MaskDict + << /ImageType 1 + /Width Width + /Height Height + /ImageMatrix ImageMatrix + /BitsPerComponent 1 + /Decode [0 1] + currentdict/Interpolate known + {/Interpolate Interpolate}if + >> + >> + }if +}if +exch +{imagemask}{image}ifelse +end +}bd +/cguidfix{statusdict begin mark version end +{cvr}stopped{cleartomark 0}{exch pop}ifelse +2012 lt{dup findfont dup length dict begin +{1 index/FID ne 2 index/UniqueID ne and +{def} {pop pop} ifelse}forall +currentdict end definefont pop +}{pop}ifelse +}bd +/t_array 0 def +/t_i 0 def +/t_c 1 string def +/x_proc{ + exch t_array t_i get add exch moveto + /t_i t_i 1 add store +}bd +/y_proc{ + t_array t_i get add moveto + /t_i t_i 1 add store +}bd +/xy_proc{ + + t_array t_i 2 copy 1 add get 3 1 roll get + 4 -1 roll add 3 1 roll add moveto + /t_i t_i 2 add store +}bd +/sop 0 def +/cp_proc/x_proc ld +/base_charpath +{ + /t_array xs + /t_i 0 def + { + t_c 0 3 -1 roll put + currentpoint + t_c cply sop + cp_proc + }forall + /t_array 0 def +}bd +/sop/stroke ld +/nop{}def +/xsp/base_charpath ld +/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd +/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd +/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd +/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd +/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd +/refnt{ +findfont dup length dict copy dup +/Encoding 4 -1 roll put +definefont pop +}bd +/renmfont{ +findfont dup length dict copy definefont pop +}bd +L3? dup dup{save exch}if +/Range 0 def +/DataSource 0 def +/val 0 def +/nRange 0 def +/mulRange 0 def +/d0 0 def +/r0 0 def +/di 0 def +/ri 0 def +/a0 0 def +/a1 0 def +/r1 0 def +/r2 0 def +/dx 0 def +/Nsteps 0 def +/sh3tp 0 def +/ymax 0 def +/ymin 0 def +/xmax 0 def +/xmin 0 def +/setupFunEval +{ + begin + /nRange Range length 2 idiv store + /mulRange + + [ + 0 1 nRange 1 sub + { + 2 mul/nDim2 xd + Range nDim2 get + Range nDim2 1 add get + 1 index sub + + 255 div + exch + }for + ]store + end +}bd +/FunEval +{ + begin + + nRange mul /val xd + + 0 1 nRange 1 sub + { + dup 2 mul/nDim2 xd + val + add DataSource exch get + mulRange nDim2 get mul + mulRange nDim2 1 add get + add + }for + end +}bd +/max +{ + 2 copy lt + {exch pop}{pop}ifelse +}bd +/sh2 +{ + /Coords load aload pop + 3 index 3 index translate + + 3 -1 roll sub + 3 1 roll exch + sub + 2 copy + dup mul exch dup mul add sqrt + dup + scale + atan + + rotate + + /Function load setupFunEval + + + clippath {pathbbox}stopped {0 0 0 0}if newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + currentdict/Extend known + { + /Extend load 0 get + { + 0/Function load FunEval sc + xmin ymin xmin abs ymax ymin sub rectfill + }if + }if + + /Nsteps/Function load/Size get 0 get 1 sub store + /dx 1 Nsteps div store + gsave + /di ymax ymin sub store + /Function load + + 0 1 Nsteps + { + 1 index FunEval sc + 0 ymin dx di rectfill + dx 0 translate + }for + pop + grestore + currentdict/Extend known + { + /Extend load 1 get + { + Nsteps/Function load FunEval sc + 1 ymin xmax 1 sub abs ymax ymin sub rectfill + }if + }if +}bd +/shp +{ + 4 copy + + dup 0 gt{ + 0 exch a1 a0 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a0 a1 arcn + }{ + pop 0 lineto + }ifelse + + fill + + dup 0 gt{ + 0 exch a0 a1 arc + }{ + pop 0 moveto + }ifelse + dup 0 gt{ + 0 exch a1 a0 arcn + }{ + pop 0 lineto + }ifelse + + fill +}bd +/calcmaxs +{ + + xmin dup mul ymin dup mul add sqrt + xmax dup mul ymin dup mul add sqrt + xmin dup mul ymax dup mul add sqrt + xmax dup mul ymax dup mul add sqrt + max max max +}bd +/sh3 +{ + /Coords load aload pop + 5 index 5 index translate + 3 -1 roll 6 -1 roll sub + 3 -1 roll 5 -1 roll sub + 2 copy dup mul exch dup mul add sqrt + /dx xs + 2 copy 0 ne exch 0 ne or + { + + exch atan rotate + }{ + pop pop + }ifelse + + /r2 xs + /r1 xs + /Function load + dup/Size get 0 get 1 sub + /Nsteps xs + setupFunEval + + + + + + dx r2 add r1 lt{ + + 0 + }{ + dx r1 add r2 le + { + 1 + }{ + r1 r2 eq + { + 2 + }{ + 3 + }ifelse + }ifelse + }ifelse + /sh3tp xs + clippath {pathbbox}stopped {0 0 0 0}if + newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + + dx dup mul r2 r1 sub dup mul sub dup 0 gt + { + sqrt r2 r1 sub atan + /a0 exch 180 exch sub store + /a1 a0 neg store + }{ + pop + /a0 0 store + /a1 360 store + }ifelse + currentdict/Extend known + { + /Extend load 0 get r1 0 gt and + { + 0/Function load FunEval sc + + + + + { + { + dx 0 r1 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + r1 0 gt{0 0 r1 0 360 arc fill}if + } + { + + + + + 0 r1 xmin abs r1 add neg r1 shp + } + { + + + r2 r1 gt{ + + 0 r1 + r1 neg r2 r1 sub div dx mul + 0 + shp + }{ + + + + 0 r1 calcmaxs + dup + + r2 add dx mul dx r1 r2 sub sub div + neg + exch 1 index + abs exch sub + shp + }ifelse + } + }sh3tp get exec + }if + }if + + /d0 0 store + /r0 r1 store + /di dx Nsteps div store + /ri r2 r1 sub Nsteps div store + /Function load + 0 1 Nsteps + { + 1 index FunEval sc + d0 di add r0 ri add d0 r0 shp + { + + d0 0 r0 a1 a0 arc + d0 di add 0 r0 ri add a0 a1 arcn + fill + + + d0 0 r0 a0 a1 arc + d0 di add 0 r0 ri add a1 a0 arcn + fill + }pop + + + /d0 d0 di add store + /r0 r0 ri add store + }for + pop + + currentdict/Extend known + { + /Extend load 1 get r2 0 gt and + { + Nsteps/Function load FunEval sc + + + + + { + { + dx 0 r2 0 360 arc fill + } + { + dx 0 r2 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + + + xmax abs r1 add r1 dx r1 shp + } + { + + r2 r1 gt{ + + + + calcmaxs dup + + r1 add dx mul dx r2 r1 sub sub div + exch 1 index + exch sub + dx r2 + shp + }{ + + r1 neg r2 r1 sub div dx mul + 0 + dx + r2 + shp + }ifelse + } + } + sh3tp get exec + }if + }if +}bd +/sh +{ + begin + /ShadingType load dup dup 2 eq exch 3 eq or + { + gsave + newpath + /ColorSpace load scs + currentdict/BBox known + { + /BBox load aload pop + 2 index sub + 3 index + 3 -1 roll exch sub + exch rectclip + }if + 2 eq + {sh2}{sh3}ifelse + grestore + }{ + + pop + (DEBUG: shading type unimplemented\n)print flush + }ifelse + end +}bd +{restore}if not dup{save exch}if + L3?{ + /sh/shfill ld + /csq/clipsave ld + /csQ/cliprestore ld + }if +{restore}if +end +setpacking +%%EndFile +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%PageBoundingBox: 0 0 522 342 +%%BeginPageSetup +cg_md begin +bp +sdmtx +%RBIBeginFontSubset: LucidaGrande +%!FontType1-1.0: LucidaGrande 1.0000.6.0040 + /FontInfo 1 dict dup begin + /FSType 6 def + end readonly def + 14 dict begin/FontName /LucidaGrande def + /PaintType 0 def + /Encoding 256 array 0 1 255{1 index exch/.notdef put}for + dup 33 /I put + dup 34 /n put + dup 35 /t put + dup 36 /e put + dup 37 /r put + dup 38 /f put + dup 39 /a put + dup 40 /c put + dup 41 /C put + dup 42 /o put + dup 43 /m put + dup 44 /p put + dup 45 /u put + dup 46 /l put + dup 47 /F put + dup 48 /R put + dup 49 /E put + dup 50 /N put + dup 51 /T put + dup 52 /O put + dup 53 /D put + dup 54 /period put + dup 55 /H put + dup 56 /P put + dup 57 /slash put + dup 58 /S put + readonly def + 42/FontType resourcestatus{pop pop false}{true}ifelse + %APLsfntBegin + {currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if + /FontType 42 def + /FontMatrix matrix def + /FontBBox[2048 -2186 1 index div -1509 2 index div 3361 3 index div 2381 5 -1 roll div]cvx def + /sfnts [< + 74727565000900000000000063767420000000000000009C000006B66670676D000000000000075400000D33676C79660000000000001488000015646865616400000000000029EC00000036686865610000000000002A2400000024686D74780000000000002A480000006C6C6F63610000000000002AB4000000386D6178700000000000002AEC00000020707265700000000000002B0C00000CAF062B0019000005C80025000005C800250000000000000000000000000000043E001800000000FFDB00000000FFE800000000FFDB0000FE75FFE8000000000000FED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000080000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5006F000CFF3BFF91FFF400BF00680014FF41FF98FFEC00000000000000000000000000000000000000000082FF7E00DF00D200C900B400AD009B00DE00D200C500BE00B900AB00E300D200C600B900AD00950062000000A4009D0085000000AA00A10094007200AD00A100940085000000C5000000000000000000000000000000000000012800000000000000000000000000F700F700970141004A00F7000000000000000000000000000000000094009400940000000000000000000000000000000000000000000000000000000000000000000000000000000000E6FF1A00000000000000000000000000000000000000DEFF22007C007C027502E400750075009A009400AC00A0000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A0001900000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B00000000000000000000000000000096005800790064039CFFF1062B000F0750000F02AFFFF1007B0000006F0073000000000000000000B9008C010A007E00C50031004F009A004200000000000000000000000000000000000000000000012800F700A00063009400820082009700C600B300B3007C007B009100000000000000000000000006440000000004A00019000000000800043E0018000004000000000000000534000000000000FFE70000FF780000000000C500940000FED80000000000E100760063003C002D001E000FFF1FFF3BFF48FF65FF79FF9DFFBD00DE00B900AD00A600DE00D200C500BF00B900A900910197007C0062005C005602CC01ED0197007C006F00620056004A011D010D009E00940035000000000000000000000000000005C8002500000503 + 00000000000008000000000000000400000000000000047B000000000000FFDB00000000FFE70000000000000000FF3B00000000000000000192011700F700C800C300B800AD00A6009C0092008A0080007B00740068005A0050001E003A00000192011700F700E500D200C500B900AD008A0080007B00740068005E0054004A000000000141003E00DE00DE00000000000000000000000005D500190000056600000000000008000000000000000400000000000000043E001800C503C200DE00000000FFE70000000000000000FE00000000000000000000CD00C500AD00A100940088007C0075006F0063003100F700C600B900A0006300C500B300A10088007C0075006F00630056003100F700C600B900C600940082006F0063003E003200190000FF3AFF7EFF9DFFCE0057006F02B3012801830088008800000000000000000000000000000000000000AC008800C501ED006201BC001800DE013E000000000000000000000000000000000000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190000000000000000000000000000007C00AC00C500960000000000000000000000000085005D006500000000000000000000000000000000000000000000000000000000080000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000005ED01B0009400D200B600AC007B007B007C00000000000000000000000000000000000000B904A000C50063007A005100410087014100DE01280068009D0064007500D2012000DE00D100B40000000000000000000000000000000000000000006100AC00D0006F006F036603660000000000000000000000000000000000000000000000000000004A004A004A000000000000000000000000000000000000000005ED00000000000008000104005C000004000000000000000000000000000000FFDB000000000000000000000000000000000000000000000000003E050300D8011200AD009300D800F700AD00B700790067050300D800920000000000000069000000A50073007B00C501ED006201BC0066009D00880064008F0250FFEA05C9001603780016006F04A000190082006E002A002A002A002A000040405249483C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002C0118B0184358456AB0194360B00C2344231020B00C4EF04D2FB000121B21231120332F592D2C0118B0184358B0052BB000134BB0145058B100403859B0062B1B21231120332F592D2C0118B01843584EB0032510F221B000124D1B2045B00425B00425234A6164B028 + 5258212310D61BB0032510F221B0001259592D2CB01A435821211BB00225B0022549B00325B003254A612064B01050582121211BB00325B0032549B0005058B0005058B8FFE238211BB0003821591BB0005258B01E38211BB0003821595959592D2C0118B0184358B0052BB000134BB0145058B90000FFC03859B0062B1B21231120332F592D2C4E018A10B10C194344B00014B1000CE2B00015B90000FFF03800B0003CB0282BB0022510B0003C2D2C0118B0002FB00114F2B00113B001154DB000122D2C0118B0184358B0052BB00013B90000FFE038B0062B1B21231120332F592D2C0118B018435845646A23456469B01943646060B00C2344231020B00CF02FB000121B2121208A208A525811331B212159592D2C014BB0C85158B10B0A432343650A592D2C004BB0C8515800B10A0B4323430B592D2C00B00C2370B1010C3E01B00C2370B1020C453AB10200080D2D2CB0122BB0022545B00225456AB0408B60B0022523442121212D2CB0132BB0022545B00225456AB8FFC08C60B0022523442121212D2CB000B0122B2121212D2CB000B0132B2121212D2C014BB0C85158B00643B00743650A592D2C2069B04061B0008B20B12CC08A8CB8100062602B0C642364615C58B00361592D2CB1000325456854B01C4B505A58B0032545B0032545606820B004252344B0042523441BB00325204568208A2344B00325456860B003252344592D2CB00325204568208A2344B003254564686560B00425B0016023442D2CB00943588721C01BB01243588745B0112BB00D2344B00D7AE41B038A45186920B00D23448A8A8720B0A05158B0112BB00D2344B00D7AE41B21B00D7AE4595959182D2C208A4523456860442D2C456A422D2C01182F2D2C0118B0184358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB0194360B00C2344218A10B00CF6211B21212121592D2C01B0184358B0022545B002254564606AB00325456A6120B00425456A208A8B65B0042523448CB00325234421211B20456A4420456A44592D2C012045B00055B018435A584568234569B0408B6120B080626A208A236120B003258B65B0042523448CB00325234421211B2121B0192B592D2C018A8A45642345646164422D2CB00425B00425B0192BB0184358B00425B00425B00325B01B2B01B0022543B04054B0022543B000545A58B003252045B040614459B0022543B00054B0022543B040545A58B004252045B04060445959212121212D2CB0032520B0072587052E23208AB00425B00725B0142B1021C4212D2CC02D2C4B525845441B2121592D2CB00243583DED181BED592D2C4B505845441B2121592D2C01184B52588A2FED1B212121592D2C4B53234B515A58B003254568B003254568B003256054582121211BB00225456860B003252344 + 2121591B212121592D2CB00243583DCD181BCD592D2C462346608A8A462320468A608A61B8FF8062232010238AB10C0C8A70456020B0005058B00161B8FFBA8B1BB0468C59B0106068013A2D2C2045B0032546524BB013515B58B0022546206861B00325B003253F2321381B2111592D2C2045B00325465058B0022546206861B00325B003253F2321381B2111592D2C004BB0C8515800B00743B006430B592D2C8A10EC2D2CB00C4358211B2046B0005258B8FFF0381BB0103859592D2C20B0005558B8100063B003254564B00325456461B0005358B0021BB04061B00359254569535845441B2121591B21B0022545B00225456164B028515845441B212159592D2C21210C6423648BB84000622D2C21B08051580C6423648BB82000621BB200402F2B59B002602D2C21B0C051580C6423648BB81555621BB200802F2B59B002602D2C0C6423648BB84000626023212D2C184B5358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB00C2344218A10B00CF6211B218A11231220392F592D2CB00225B002254964B0C05458B8FFF838B008381B2121592D2CB0134358031B02592D2CB0134358021B03592D2CB00A2B2310203CB0172B2D2CB00225B8FFF038B0282B8A102320D023B0102BB0054358C01B3C59201011B00012012D2C4B53234B515A58381B2121592D2C01B0022510D023C901B00113B0001410B0013CB001162D2C01B00013B001B0032549B0031738B001132D2C4B53234B515A5820458A60441B2121592D2C184B5358B00425B004254964B00325B00325496468B0408B6120B080626AB00225B00225618CB00C234421B004251023B00CF61BB00425B0042511122320392F59CC21212D2C0118B0184358B0052546234564611B21B00425B004254A59B00E23442310B00EEC2310B00EEC2D2CB01B435820B0016045B000515820B0016020452068B0005558B0206044211B212121591B20B0016020452068B0005558B8FFE06044B01C4B50582045B02060441B21591B21212159591B21592D2C4B53234B515A58381B2121592D2C4B5458381B2121592D2C4B52587D1B7A592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B00326 + 5358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592DB8005D2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8005E2C2020456944B001602DB8005F2CB8005E2A212DB800602C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800612C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800622C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800632C2020456944B001602020457D691844B001602DB800642CB800632A2DB800652C4B20B003265358B0801BB040598A8A20B003265358B0022621B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B80003265358B0032545B8014050582321B8014023211BB003254523212321591B2159442DB800662C4B535845441B2121592DB800672C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800682C2020456944B001602DB800692CB800682A212DB8006A2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8006B2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8006C2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8006D2C2020456944B001602020457D691844B001602DB8006E2CB8006D2A2DB8006F2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800702C4B535845441B2121592DB800712C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800722C2020456944B001602DB800732CB800722A212DB800742C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800752C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800762C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800772C2020456944B001602020457D6918 + 44B001602DB800782CB800772A2DB800792C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8007A2C4B535845441B2121592D0000020100000005000500000300070014B706020400060204002FCDD4CD002FCDD4CD3130211121112521112101000400FC400380FC800500FB00400480000000000100C8000001BF00F70003001B400D01B00003AF0040040500AF30302B011A18104DED002FED313033353315C8F7F7F7000000000100C1FED8037105C800030055402B790301160226028602034603560302039F01010F001F00020C0601030203BF000114000100200103021000B8FFF0B705026802040065022B2B01383800183F3F313087054D2B877DC4015F5E5D5D5F5D5D005D13013301C102159BFDEBFED806F0F9100000010068FFDB051705ED001500DB4039E71001091501E91501050C01090C01E90C01D70701280A380A02780A880A02250F01050F450FA50FC50FE50F05390D01090D490DC90D030908B8FFF040450D11480605460556056605047804E804024604014A025A026A0203B7010109010109014901C90103270D01B80401B505E5050208920F091F092F09030A090B920604149113B8FFC0401B090C48131191001309130F13010F030E7D034017136F0216036C022B2B011A18104DED5F5E5D10C6003FFDD62BED3FFDD65E5DED3130015D5D71005D715D5D5D5D5D2B5E5D715D715D715D5D71715D715D052000111000213205152423220011100033323715060339FEA7FE88017F015CC7010BFED0A5F1FEF8011AF4D2F0DB25019501730172019841C569FEBAFED7FEE5FEB981B47100000200BF0000059605C8000A001600AF40523913018913E913023C12010C124C1202860E01020E420E0209070901E709F70902480958096809B809040B09014908B908F908032408013408014206520602250501050515054505C5050404041404020A04B8FFE040290E11480A0F4A0F6A0F030D030F116F11021106169201030B9200107D070B7E004018076F0217006B022B2B011A18104DED10ED002FED3FED3130015F5E5D5F5E5D002B5E5D5D715D5D715D5D5D5D715E5D5D5D715D71331121320417161110002125212037361110272E012B01BF01ECDC010F639DFE7AFE9EFEE3010D012078817F4DD6D7AD05C86275BAFED0FE8FFE6A9D9BA501160105955B43000100BF0000042505C8000B003D4021089205400100059230300492010309920007030B05097E00400D0B70020C006B022B2B011A18104DED3210C4C4002FED3FED2B001A18104DED3130331121152111211521112115BF033BFD97 + 0205FDFB029405C89DFE259BFDE89D00000100BF000003FA05C8000900424026089205050004920103000F062F06020F022F02020F0306060205097E00400B026F020A006B022B2B011A18104DED3211392F5F5E5D5D002F3FED12392FED313033112115211121152111BF033BFD970206FDFA05C89DFE109BFD6000000100BF0000052305C8000B003D40210A92034001000392303005030103080004087E07030B7E00400D076E020C006B022B2B011A18104DED3210ED32002F2F3F3F2B001A18104DED3130331133112111331123112111BFD202C0D2D2FD4005C8FD900270FA3802BBFD4500000100BE0000019005C80003001B400D010300037E00400405007E30302B011A18104DED002F3F313033113311BED205C8FA3800000100BF0000052A05C80009006E401E460301031F03010002300202102007010F070107080D1048000201120602B8FFF840240C0F480301520807087F0203140203020300070208038006088000400B066E020A006B022B2B011A18104DED10ED113939002F3F3130872B872BC4012B5F5E5D2B5D5D005E5D5D5F5D33113301113311230111BFCE02E9B4CDFD1605C8FB890477FA380477FB89000000020068FFDB05D005ED000B0017010840C6240C012B12018602F60202F60A01C90A01180401F80401270401C70401190801F90801260801C6080136160106164616E616033A14010A144A14EA14034910E91002460EE60E02170B470B02C70B01290B01190B590B690B790BD90B05480701C807011607011607560766077607D60705480501C805011605011605560566057605D605051701012901011901590169017901D901050C0D010317010313010C110109032F0F012015010008011A06129206040C9200130F7D09157D034019096F0218036C022B2B011A18104DED10ED003FED3FED3130015F5E5D5D5D5F5E5D5D5D5D005D71715D715D715D715D715D715D715D5D5D715D715D715D715D715D715D5D5D71710520001110002120001110002532121110022322021110120313FECCFE890179013B013A017AFE86FEC0E3F8F9DCDDF8F62501AB015F016101A7FE5AFEA0FE99FE5B9D0147012A01210146FEB9FEDDFEDEFEB400000200BF0000044805C8000A0013009F403035040195040108112811381103E81101750D850DB50DC50D04420652066206030906190629060310180C0F48D70E010EB8FFC0403F0A0F48150301050375038503F503040944045404020B923F09AF09CF09DF090409090013920103000F7D050B0A7E004000052005020C031505700214006B022B2B015F5E5D1A18104DED3210ED002F3FED11392F5DED3130015D005E5D712B5D2B715D5D5D715D713311212016151400212319013332363534262B01BF0193010CEAFEC0FEE45D55BBCCA0BB8105C8B5CFECFEF4FD + B402EBAC9D857200000200BF000004FA05C8000C001300AE40742707013906010606260602E606012E113E114E110311380D1148260F01260F360F020603F6030209450F01160401A707019A07015E126E127E12030918151948070A010A090152097E0807140808070D9207010B0B08001392010300107E050705080D0C7E00400F080112031508700214006B022B2B015F5E5D1A18104DED321139392FED002F3FED1139392F1239ED31308705102B2B10C4015D2B5D5D5D5D5D005E5D5D712B715D715D713311213216151005012101231901332011342123BF01C0D5E3FED501EEFEFEFE5BC444018CFEB48405C8BCB3FED87CFD4B0272FD8E030F0137E500010064FFDB03E905ED00230138B90013FFF840AF1B1E48F51B01180101F801010916191602D916E91602B604C604027A198A1902151D01851D01571E012A0C5A0C023A0C4A0C6A0C7A0C8A0C05991F01121F221F026B0D011B0D3B0D0228230108230107110109280601591001E81001562201472201D822E822024C0B018C0BEC0B020C0A1C0A4C0A032C0A6C0A7C0A03680E780EF80E03441C01341C441C841CA41CB41CF41C060920192002080F1A2104001214921F152F15021517921204029203B8FFC04033090C4803059200131A7F0F14400C0F4814140F035F087F08025F217F2102087E2140000320035003030A0325216F0224036C022B2B015F5E5D1A18104DED5D5D1239392F2B2FED003FFDD62BED3FFDD65DED11121739313001715D715D5D715D715D715D5D5D71005E5D5D715D715D5D5D715D5D715D5D5D715D715D2B05222735163332363534262F012E0135343633321715262322061514161F011E0115140401E195E8FAA17C97638566BD9BF8C0ABBEEA736D8E688A6AC098FEE32541D074826A577A4B3B6CBF7FABDD39C05C74584A724F3C6DC288C1EA0000010012000004FE05C80007004E40350602920303000005100540058005040005800590050305060F021F024F028F02040F028F029F02030A0302067E01400809017E30302B011A18104DEDCD5F5E5D7110CD5D71002F3FED3231302111213521152111021FFDF304ECFDF3052B9D9DFAD5000000020067FFE704390456001D002700FA4025290D390D490DE90D040906010A212A2102FA2101E80301E90B01D90BE90BF90B03D7070107B8FFF840292124487907890702EB22016B227B228B2203050601AA22017522852202E724011725E72502C4010101B8FFE040492023480C011C015C0103FC0101790301C903D90302190429040202131213221303091F98AF090109090002110F970F0E010B030E0C9711101917971C1626960216001A091E851A150EB8FFC040100B0F480E2385054029156802280566022B2B011A18104DEDC42B10C4ED321139003FED3FFDC63FFDD65F5E5DED111239 + 392F5DED3130015E5D5D5D715D712B7171715D005D5D5D715D2B715D715D5D7171712506232226353424213335342322073536333216151114333237170623220311272206151416333202F5B1A487B2012B01172FC29CB5C7AEB6AD680D190E43518A4342A2C864487B8AA3A981B2BF83BD60A351A4ADFE14A9046D20010E0119027B64476200000001006FFFE703B70456001500CD4069090C290C390C03C90C011C0D010C0D1C0D6C0D9C0DAC0DCC0D0675020185020117020177028702023C014C01022404013404D404E40403E905013405440502140F01040F140F640F940FA40FC40FF40F070BA8010185019501A501C501F50105061001861001089709B8FFC0402C0D1448090B97061014960F131F13020D131196001609130E8303400F132F134F13030E0317136902160366022B2B015F5E5D1A18104DED10C6003FFDD65E5DED3FFDD62BED3130015D715D5D005E5D715D5D5D715D5D715D5D5D715D7105220035100021321715262322061514163332371506026DDCFEDE011F01017F9DA76997B7BC98878FBF190146F80109012823A531E3BDB7E245AA3A000002006FFFE703E604570011001600EA405737100101101B1F482404340402C404E40402050335034503550304A503F5030259036903023A0601CA06EA06025506F50602450701450755076507031316231602D316F316023A1601120E220E320EB20EC20EE20E060EB8FFD0400A1A1E480509850902090DB8FFE040441A1F480C14012C145C14EC14FC140403740A012F0A01400450046004030F04010E0512970D0D02159708100097110F970216120D1385110B0D850540180B6902170566022B2B011A18104DED10C6ED1139003FFDD6ED3FED11392FED3130015F5E5D5D5D5D5F5D712B005E5D2B5D5D5D715D715D5D715D5D715D712B71250623220035340033321211072112213237012110232203E1C68DF0FED1010BD0C5D701FD532B01507BB3FD6001DFE2E3233C013FFEF7013CFEE8FEFE3DFE7D4201D5012F00000100500000032D064400140047402D300701140824083408030B970C0E97090112000397060F02A00CB00C020C3014011412060085045003D00302032F5DCDFD3939DD5DC65D002F3FED39393FFDD6ED31305D7101112311233533351021321715262322061D01211501B0C69A9A0162637E85506147010F03AAFC5603AA94820184219C295D7E97940000000100C50000018A062B0003001B400D010000038500400405008530302B011A18104DED002F3F313033113311C5C5062BF9D500000100C5000006BF0457001B00E940460404010408011A1001FA10011A1701FA17012A123A12022A193A1902391301A113B113C113E11304391A01A11AB11AC11AE11A0405070175079507A507C507E5070573030103B8FFD8405E1215480606 + 014606560602060A01360A460A0226087608021604260476049604B60405F70B01F70601119509101896180711131A05030510010F150E000E850D031B8500400F0D0100000109031500140D653B07148515401C1D15853C302B011A18104DED322B015F5E5D5D1A18104DED3210ED002F33333F3F111733ED3FED3130015D5D005D5D5D715D712B5D5D715D715D7171715D715D715D5D33113315363332173633321615112311342322071123113423220711C5C590E2DA4F8CE0909EC69399A8C69695AA043ECCE4E4E5A998FCEA02F7BAD9FD2802F7BBDAFD2800000100C50000043D0456001100784053B90F01A910012D0F3D0F4D0F7D0F8D0F9D0F06770701D707E70702DB0DEB0DFB0D030D201A1D48180E0104061406240603090003100302100310030E950510010F0A000A8509031185004013096802120065022B2B011A18104DED3210ED002F2F3F3FED32325F5E5D31305E5D712B5D5D717171015D331133153633321615112311342623220711C5C59CE28DA8C54752B5A0043ECCE4B397FCF402CC7967EDFD4100000002006FFFE7047B0456000B001300D040981A0E2A0E021813281302070C01270701170527050218012801021801280102280B880B0208109810020C0D0A1D0A020D0A1D0A2D0A03020812080202081208220803020412042204030D5502010D021D02020E0A0B010A07010505010501010C0D010313010311010C0F011603100A200A0210082008021F042F04020012011706109706100C9700160E84091284034015096902140366022B2B011A18104DED10ED003FED3FED3130015F5E5D5D5D5D5F5E5D5D5D5D5D5D5D5D005E5D5D5E5D5D715D715E5D5D5D715D5D5D71710522001110003332001110002720111021201110026EE9FEEA0117EFEF0117FEE8F20139FECBFECC190135010301060131FECFFEFCFEF6FED09401A601A1FE5DFE5C0000000200C5FE75049A0456000E001700D34098130901580D01240F01040F012810581002F71001B817C817028803011916016916E91602380C480C02B60A012A0A3A0A4A0A03250635064506031212B212022714011D1401270A01970AA70A02F90C01B911C911028A09BA09022509350902250735074507030D0F1D0F2D0F030B0C0D1C0D020C03010F1703159505100D0F11970B16001B1384080F030E850040190869021800650219853F2B2B011A18104DED323210ED003F3FED32323FED32323F5F5E5D5E5D3130015D5D5D5D5D5D71005D715D5D5D5D5D5D715D5D5D715D71715D131133153633321215100223222719011633201110232207C5C579F2C4E1FFD0C180988A011CFCA59DFE7505C9CCE4FEE2F8FEF2FEB594FDFA028E8801B1017EB3000100C50000031D0456000D005B401F470B01490C590C02A90CB90C02070401090C030A07950800 + 0A100A022F030AB8FFC040171F23480A950510010F00030D8500400F076A020E0065022B2B011A18104DED32002F3F3FFD2B5F5E5DD6ED11333331305E5D5D71713311331536333217152623220711C5C575DF1E213327BB7E043ECCE405B811DEFD340000010045FFE702AE05160014006C400C9802D80202070201F702010EB8FFD040371519481B012B013B015B01040D0A049709070F139712109700160F125F12020F0C5F0C0209030C120A070D8505044016126902150465022B2B011A1810CD4DED393910C65F5E5D5D003FFDD6ED3FCDED393931305D2B5D7171052226351123353335371521152111143332371506020B96A88888C5011CFEE4B827385B19AC99027E94C513D894FDA6D50D88190000000100B9FFE70431043E0011009C4010B50D017A058A059A0503E20AF20A020AB8FFD0405E1A1D487A0E8A0E02770287029702030A022A023A024A02AA02057A0201DB04EB04020420090D48350D750D850D950D04090D190D02A701010D011D017D018D010409030F070F0E010C950316000E010F85100885074013106802120765022B2B011A18104DED10ED3232002F3FED32323F3331305F5E5D715D712B5D5D71715D2B5D71015D213506232226351133111416333237113311036C9DE08EA8C54753B4A0C5CCE5B398030CFD347A67ED02C0FBC20000010000000601060F596BAF5F0F3CF5011B080000000000B47FC3BC00000000C005BDE3F776FA1B0D21094D0000000900010000000000000001000007BCFE5000000D1EF776F7430D2100010000000000000000000000000000001B06000100028800C8043200C10589006805FE00BF045600BF044A00BF05E100BF024E00BE05E900BF06370068046C00BF050F00BF044F0064050F0012046B00670419006F0475006F02F10050025000C5077800C504F700C504EA006F050900C5034600C502FE004504F700B900000020003A0074010C018E01C401FA0230024A0298034E03C0043C050E05480600068C072C0772078C082A0884091609A809EE0A460AB200010000001B0077000F004F0007000100100030007B000005E00D3300030001B800712BB800672BB8005D2BB800532B410E00000246001002460002007F02440001023F023C0001002B023E023CB2012BEFBB023D0001023D023CB2141F00BD023C0010023C000201870188B21A1F40B80189B310163900410E0188001001880002018301850002002B018401850002002B01860185B2022B80BB017F000100DF017C406601DFE016171CD4D516171C7B7C161B0F7B1F7B2F7B037B7C19D1D216171C767716171C6D7016171C6C6F16171C6B6E161B5F6E7F6B026B6E7F721A747514151C676A14151C666914151C6568141B8F65A065D06503656885711A1973167A4319217943192102B90352034AB2022B10 + BD034600500346000200400339B20B0E39B9FFC00338B20E0E39B9FFC00338B3090C3950410B032D0001033003310003002B02F402F30008002B02E3B2BE022BB802DCB3BE641F40B802DBB3313A3940B802DBB2232739B9FFC002DBB2141439B9FFC002D9B2333939B9FFC002D9B22A2E39B9FFC002D9B2212339B9FFC002D9B2171939B9FFC002D9B20E1139B9FFC002D0B2111139B902800278B2022B10412B02740050027400020010025D0050025D0002000B024C001B024C006B024C0003000B024B001B024B0002023A02040016001F023802040012001F023202310002002B023002310002002B022F0231001E001F022E0231B21E1F20B80231B2121639B901F701E3B2032B0A412001F4000101EF01EE0002002B01ED01EE0002002B01EC01EE0002002B01EB01EE0002002B01E801E70003002B01E601E70004002B01E501E70002002BFFCA01E3B30B1139B9411D01E70001007601E7008601E70002019401920002002B019301920002002B019201900006002B019101900007002B018F01900002002B018E0190B2022BBFBF01900001007001900080019000020157B292042BB80153B291042BB8014FB297042BB80136B37F032B40B80139B21218394109012401250003002B011001110003002B0104403BFC022B10F850F80240E61A1A399A9B032B9C9B042B9B970A2B9392042B9192062B9297042B9597042B9897022B9697032BA097019F97AF97BF9703BC034803490004002B0349B285022BB9FFC00343B31011391FBE0344000100E00344000103350334B2032B20411203330030033300400333005003330004033303140003002B033203140003002B032F0314B2032B2FBF03140001000002F3002002F3000202F0B2BD062BB802E2B2BF082BB9FFC002E1B2172839B9FFC002E1B20E1139B802E0B2870A2BB802DFB3BF042B40B802D7B323253940B802D7B2151639B9FFC002D2B2101139410D02C602C50006002B02C202C00006002B02C102C00006002B028CB285022BBC027602770004002B0277B285022BB9FFC00271B31011391FBE0272000100E00272000100400260B2151639B9FFC00260B20A0B39B9FFC0025FB2171839B9FFC0025EB2242939B9FFC0025AB31011391F4114025B000100E0025B0001000F024A0001001602490026024900020009022D0019022D0002FFC0022BB2111539B9FFC00229B30D113920B80223B2121639BD022202200002002B02210220B2042BC9411402200001021E02200003002B021F02200002002B01F601CF0003002B01E001B50020002101DF01B5B2262120B801DFB21E2139411A01DD01DC0002002B01DB01DC0002002B01DA01DC0002002B01D901DC0002002B01D801D70003002B01D701D60002002B01D601D4B2022BB0BF01D6000101D501D40002002B01D301 + D4B2022B69410B01D2000100B901D2000101D201D40002002B01D101D4B2022B20B801D0B2090C39B9FFCA01CFB30B11392BBF01A300A401A300B401A30003FFE001A6B2131539410D018D018C0003002B018B018C0003002B018A018C0002002B0156B286022BB80155B280032BB80154B286052BB80152B287052BB80151B288052BB80150B288032BB8014EB285032BB8014CB285022BB80138B287022BB80131B2BF032BB80122B285022BB8010E400B85022BFAFB042BFB85022BB8FFC0400AF51011391FF601E0F601B8FFC04009B1151C3940E51A1A39B8FFC0402EAF0D0F3900B40140B450B460B470B480B4C0B4D0B4E0B4F0B409B4AF641FE8E7042B898A072B8A8B062B8C8B062BB8FFC0B78E3032398E8D032BB8FFC040148D1E23398D8B022B8B85082B8281042B8180032BB8FFC0B3804A4D39B8FFC0B3803F4339B8FFC0B380343939B8FFC0B380282E39B8FFC0400C801D2339807E022B7F7E062BB8FFC0400C7D4549397D7E062B7E85082BB8FFC04020881E23398887022B8785082B8685062B83840A2B8485062B7085808502BF8501410A03530354000E03500351000E034E034F000E034EB203641F4155034C034D000F031B031C031D000C030F03100311000C030C030D030E000C0327030D0329000D0321031C0323000D031E03100320000D0327003C0321003C031E003C031B003C030F003C030C003C02AD02AE02AF000C02A102A202A3000C029E029F02A0000C02B9029F02BB000D02B302AE02B5000D02B002A202B2000D02B9003C02B3003C02B0003C02AD003C02A1003C029E003C02810282000E027E027F000E027C027D000E027CB203641F4175027A027B000F021002110212000C020D020E020F000C020102020203000C01FE01FF0200000C000B0211009B02110002000F021000500210009F021000BF021000DF02100005001F020D003F020D007F020D0003001F01FE0001021901FF021B000D0213020E0215000D0219003C0213003C0210003C020D003C0206003C0201003C01FE003C01BD01BE01BF000C01B101B201B3000C01AE01AF01B0000C01C901AF01CB000D01C301BE01C5000D01C001B201C2000D01C9003C01C3003C01C0003C01BD003C01B1003C01AE003C016D016E016F000C016101620163000C015E015F0160000C01610166B2171F1F41420166003F0166007F016600030179015F017B000D0173016E0175000D017001620172000D0179003C0173003C0170003C016D003C0166003C0161003C015E003C012C012D000F01260127000F01280129000E012A012B000E01180119000F01120113000F01140115000E01160117000E01050106000E01020103000E01000101000E010040A803641FFEFF0F1B37151836151535151234150F33150C3215093115063015032F15002E1526 + 270E28270F2A2B0E2C2B0F22230E24230F1E1F0E201F0F0F10110C090A0B0C0607080C0304050C0001020C000340131A230003131F06031C1F1F0F3F0F7F0F032003011F034F03BF03FF03041B011D0D18071A0D1510170D1204140D901B012C3C2A3C283C263C243C223C203C1E3C1B3C183C153C123C0F3C093C063C033C003C503301B0124B004B5442B013014B004B5342B0332B4BB8032052B0322B4BB009505B58B101018E59B0332BB00288B8010054B00488B8020054B012435A5B58B80119B101018E851BB900010100B04B60858D59B1020042B00188B0235358B00188B0405158B02088B810005458B1020142595959B0374B5058B1020042592B1DB0644B5358B0801D59B0324B5358B0901D59004BB03A51B01B23422B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B7374732B2B2B2B2B2B2B2B2B2B2B2B2B2BB1282645B02A4561B02C4560442B2B2B2B2B2B2B2B2B2B2B2B002B2B2BB8010045B0FE4561B8010223442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2BB8027C45B8027A4561B8027E23442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2BB8034E45B8034C4561B8035023442B2B7473012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73742B2B2B0173742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B2B74752B2B732B2B2B2B2B2B2B2B2B2B2B2B2B752B2B2B2B2B73737473742B2B2B2B2B73742B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73732B2B2B732B73742B2B2B0073742B2B2B2B2B2B2B2B2B2B00732B2B2B2B2B2B2B2B73742B2B2B2B2B2B73742B2B2B2B2B2B2B2B732B2B2B2B2B2B2B2B737373732B2B2B2B2B2B2B2B2B2B2B2B2B2B732B2B2B732B0143581B592B2BB018B0234B53422B2B732B2B2B2B2B732B2B2B2B2B2B732B2B2B01B8017C20456A44B8017D20456A44B8017E20456A44B8017F20456A44B8018020456A44B8018120456A44B8018220456A44B8018320456A44B8018420456A44B8018520456A44B8018620456A44B8018720456A44B8018820456A44B8018920456A4473732B2B2B732B2BB8023B20456A44B8023C20456A44B8023D20456A44B8023E20456A44B8023F20456A44B8024020456A44B8024120456A44B8024220456A44B8024320456A44B8024420456A44B8024520456A44B8024620456A44B8024720456A44732B732B2B7373B109322B4BB05052424BB008524BB008505BB01A23424BB0C8524BB036505BB00C234200 + 00>] def + /CharStrings 27 dict dup begin + /.notdef 0 def +/period 1 def +/slash 2 def +/C 3 def +/D 4 def +/E 5 def +/F 6 def +/H 7 def +/I 8 def +/N 9 def +/O 10 def +/P 11 def +/R 12 def +/S 13 def +/T 14 def +/a 15 def +/c 16 def +/e 17 def +/f 18 def +/l 19 def +/m 20 def +/n 21 def +/o 22 def +/p 23 def +/r 24 def +/t 25 def +/u 26 def + end readonly def + currentdict dup/FontName get exch definefont pop end + %APLsfntEnd + 42/FontType resourcestatus{pop pop true}{false}ifelse + {currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if + /FontInfo 1 dict dup begin + /FSType 6 def + end readonly def + /FontType 1 def + /FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def + /FontBBox{-2186 -1509 3361 2381}def + /UniqueID 4093103 def + currentdict currentfile eexec + 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C926597C1DAC1BA3798797E796C89ECAEC4435602C69EF8DE4A69515109638DF86B62BEC4457DE83568B76FE7007B6E4EE5AB24044DF701A0E80786FF5A0442608314C4D67449F1C71C7B26BF519E76991C89217E79051286067307808B177A4BAA62855564DA447AB7724154FF7FF8E4D1EE4183A709D09505AC11D22542E2BA5243D3D0A229D6DB5E58F7BD5FBC728EB20993E6D677244DD22B14ABAE8E34337E8CB159F1CEB69E09E91CB2B7B66E2ACF8672FE072C49A296182B3904DB2E9127FAE260C3A6895BE72C7B95E4040BCBD63C4579BD8AC0A2F2D0CC678823C022C926B46678F12AC11BB904FD370111889D82F19439482AD47A6CE8019E6C0FAC465D53FC8A8109BA89ED60AB54F09CBDCE7E5FF25C91E77BE99AD1BC50365CDAEF961AA69FA879705D189385AF3D2A2E15CFE6FEE452D55799B972E1BEDE33EB88A5523FEE5AE152017ED4F91BA8F95366304C4F7B0EEBD3CF44835C68B6A4A08C162BD9BB4E03C8DD674601DFEB4542C49C635E684C134E6635FE889C2F0D474278346D62237488451EFCB8521B342E233620D7939D0D63BFD3DAECFA595340D14A7E96140A9A5FF999B6E3A4657C26E6B1BFB1FB57A5FB6AFA86B83959194A7A784AE43D5C2BE1780A73FA0B1586A8AB8864CC071A8DADB8EAC7DE7F94456255A45CA4726C871CD78286F2DED37326549220B2350D5408AEAA4F798392AB73DB4C560D6C1FAF816186B8B255726F67D47A59CCB00BBE9C9C92F0D7BF03DFC727 + A777C08BEDE4EA39BE33E19B1D524A30A358E98BA5AE5072A4FABD993F0D68F1A65C23B0C92DCC0BD1229FB4E78A549ACEAC9A7B06504B2B1EDA15C80BEC120E44E62B3F4E99515A109FA3BB6A24A2CED9723E660709871209D9C05C26AC52B97FA040ACA3C094C885A9B0C1D3FE8E2249971FC61B9DFF68859C258FB44BC4042C3931DDFAE4E6CAA5081C25CB80199D71EB865BED21A84E7AF0C2A143065D37E325B85B299C05211A59ED7023D16D38CC00B651D316A19FAD21C327972D2D45F7EF03CB18B1CDE736518FEC59F630DC558FF85E2C8BC57A5FE32ACF5B7C2A10F76682C7DF2B1CDBBC71D3400830B826FB2BF647DCAD5C5828AED5CBF80EB2D0705111EF053F1BC7D6CEA9FCEBE66182DF89CFBE8A209E663DAA3E771EEF4970232AFDFB64F37D97F11BD17F7E2C0B72F36C59D346486EA1C37B3381854DCB3E2CA4BAFD69F6D86F59C21331864075E3AC26C9A462984BACBA91A6799E72AA904786585CDCC8089FF74F5532E3CCDB3A01A7276920E229DE53721A13A86E7C52F0CF09F052779F952605916BB82BA5CAE6844074A1834F01B361510184DBD25BD935CE7CD5537830CDCBDD363B47D13A2BBB6C38FDFF768638367DAA5EE0403285FD93D336D5ABD538E62835BF2873D5A73B83B836906687F7ACEE05742C7EBBA247BD14CD8184A8C5C17B8FDDA0FE0E0683185C221D4C8D4EDCE860187D9E87600038EB802C1F8164741D024D594FD74C3CDF0ED4D213ED0C7BBD511DF9A0EC2219F407CFB84F05846871F41A99F69E70BFDF37D1354A05F15CA99A8DA624C0CBC13D8AA9D19C106021F27E6E7AF3C5965ED96BFDF0D6F4E31FD1F8D69E9AB6D33F3E0B6CB6FF7AB9E955FF0B479D7074896BA3A7BC0B859DED2BE8EB7A2D65D8F6A1065173E97520C660F0C18533E34C9D7F314EB15B909C648A694ECCC12666B0AFCD13A42EB87D995C4BAA059668346D08286A1156170F7B5AF68C08ECA3C248B1749C971BB4EE5E38D6561EEF390743EAAAA3E7AFFD19CA946CEFCE32AD14A72E6F3591710881D3B2FFAEF4E455303E4D2AF5A7BF4993714A1CFE27EA9111C2A35B3B72B40B2B28D87E290E854D7AF9FAD4A5C4DFC361057DF489992848AD91D0FC7C4C385F3611F8FDB3E42FBB9E4C5B5F177309FD68903730B00D06FAF53952EC50EAA4986B79208AACC20682937D6ED8CED0796DD804D4E105752AF9F234FA4AE63292DDDEA3202D8AA0DA2DA73BE9E48DC0E622EBC7FBEC50224EF58480E2F6A219946EA812E739B4FDC43EECCEC9635C8338A4B62AD29FC2F5482BC4840DFB537664EDA6FCDC45CAD5E170E204F6A17AD04CA0D278C23F3CF20F309A11BC38E97D78A6551CA1EC6253A3293406965AC23D7D6BEAC9CFC7B51877497E77029A01B65B49520234489C2747C7630BA1E96E6ECD370B6EE38027395D35 + 4A927FC17F338E98F9221FF270ECF3BA67C21154AC30FAC9853AB610769BBA1F0864943E23F5CAA72CD289AF38AB03FBB2443F1E3F3851459CE8945CACE501E284003305C2793A7289C308289E06C8DB2F23DE5093D7C1C097A31A1CC8434A8704C335005B48D92CE42ACC379820957554AA0AE1716F8368031CE5FEA1F3B3846C964DDD1D38B7EEE3A6A38612BADACFD42A92C9E7FF9F37313034A81829198943016368B95F2457FF6FDB67315E9057D858F558FDDD2DE471F20EEE2E7C87F16FB4090338AB3BEE40DBFFF0C432BBE3D0C8FFAD8714F2FE13A3E94988C86E585CD9C2F5448FA1779593305FCFB2ABE5C50259E2CFF2C0FFCF99032B48604808BE395B8DE4992335C0DBC262680877DDF1DDEF8A113FAA6BD8F53E810BCA3212BD8FFEA574BD23206AC3E4A9E4EC5374E748354C276E461A824C5D79C556CDDB7DEBD79A8B541AEE9B64626254A8B8670F08B3C49653C519AC9C5724F7B5613C04B54F27EDADA8CFB922C9D576D97D13705CD9F9461154223216DEFC09C419874D11B25D52F5B8D73A0E4940E90ACB8BBB38ECC1982B43ECDD0D27146E6EC965B5F5EB0C0E2A66DAEE3546B6AF48AA8016F9EBE408F635D524A696BF52793F9C34D5666A3FA5AC9C6E4F3E344AB2B2045FB4FF4AC7D7225619B90AE32BC14306EB84AA83E2DA62F4AC3DF23E52AF623292229B171036B2CBF687C8A15BDEB92F8152533F64F67427565B8400C9D7DF4FC7DE4B808B4D215D066AF5E8C9D329BBE18430E9EF193749D782C62AAACDC363A90EFEA95525EB0E874EA02BF23D9D70BEB3655DCE90262F3DA4EE37AD893BA8DD59C9EFE36875EA25E427A22EF22160A7F36225DB949B4C07898A2AFD0314B36F5E96C591D898156EA721BA87D1A68656A8DC58F037789989B9DB996639DB4FCCB68E52F44D922D2E2E6E0DDB73E7CD3A97EEDA92FEC5BF1B6DB4C37AF91E6E1DD525EA1230E9FAFA0E59EADC88CDA5CA6391614E970610B59DE41CD5182EB7165110C5EF516884B5C1B9B81D267B531A515F2DB97309B6D4159749692468B160374F9D306511BB487D9C7B0FC8D3450EA68E26AC33DE50E2B9061621CCB443434CCDFE085FA89A1E2AB491452426DB0829429EF215ECA53E1B67AF0608F112E3E48C728C09AAD35355FCE0687959F180ECD202C83CE894FD49F243DE876731729793B00A8CF16F9C9CA5A72757BA5089052FE6BD7457FE1E6DF87F93E664894146E5B808E5629C11BDBDAC0ADF66B6490AAC8A57FF0930AF584EE2B0A011F223D2A538A7BEE8DB66A3624291D68E828D600FE9380CEE029D2006495F0B1CFE14B666F414E1CDD2C632530E9570DC6685F98695E1D1811153238A6D0D4634393F0858AE5DCC21792D63BAFE6E7937DF99112B01A6C76C463C66442157CCA61D47140EFC1885DA3783A2602156DD71B7 + 825718AD4C2450EF228C035220942B64AA8BA43CADAE7FA3CD1D278C045C89840009FE0D64EC4202CCDF66AB5D8E0FF031CC483497E571C37CD98AB2AEBB41B7A8B1D8DCB2DE1329B655B3F27C58BAB31582D3005B387D297949F55CBC0687C04D27F71A52DF7D1C3D4713AF1804420D841E5B087CEC169E4F7F146153CC8245A509444A74472C949F08E49D3C13A1479E93683DDAB0C6DDE4630D3FD8F360934316DD40D02909D61BC7AD3532F11E2AABD8E92334AE32B0F83F41F1AFDA59E0B167AA7991948DF638F9654484465218E5982A7DC3218E2FC274C612BEEBAD45DA0882436B5E7A807DC1B561718A78F05DF7C4127B890206E80ED6ED23069A16162C22C26577871B4DE0280495A064A3CC30AC6AD3447587BCB08AE1F2BD45333FF135F2A2E1DEE319C92B2542DF807A157C6B16F3FCEEA10DCACD1D8BF9CB995EDE6A7745207B740DC721843838F5EBE5D4FC7F20D9DCC82ECE9BB4E80FD5E56F58F0BCFD4FC66D8BC472AE203DB59D649F0F419B7019170726349E9C15E2998D0373A54100298657721BA920BBBE5295D0E4E2B6FF46C57BA1926B81FCBB3725080D5A85B59D9EB95E7B65D04A2A789CE666E7 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark end + %APLT1End + %RBIEndFontSubset +/LucidaGrande cguidfix +/F1.1/LucidaGrande renmfont +[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeA { { 1.8008 exp } bind exec} bind +def +/MatrixA [ 0.9642 1.0000 0.8249 ] def +/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def +/DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def +end ] /Cs1 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind +] def +/MatrixABC [ 0.4124 0.2126 0.0193 0.3576 0.7151 0.1192 0.1805 0.0722 0.9508 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs2 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4295 0.2318 0.0204 0.3278 0.6722 0.1111 0.1933 0.0960 0.9578 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs3 exch/ColorSpace dr pop +%%EndPageSetup +/Cs1 SC +1 sc +q +0 0 522 342 rc +0 342 m +522 342 l +522 0 l +0 0 l +h +f +/Cs2 SC +92 0 0 57 194 285 cm +BI +/Width 276 +/Height 171 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$ +JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(ns +Jc>BBJc:6"Jc<7[aT'6ZT)\9YJc5<@Jc1/uJc31Yn,D&@`W)tP`*p\=O_q==CWqtpU0^p\sm]p%@tJo:#6$nq$@_o%rs1oCDPKp&"I[p\Xabq=XU`qtpbs8N#grVl`i +qu6Hkq=saXpAXa^o_\7To'c+;n:C([n:C)cnF,oBo)A7Uo`"OVpA"F^q>U6fqtpU6iqu6NgrVQTJs4@;MrqQHhqu6Hkq>U0g +p\smco`"I]o)A1Vn,D\Qli-/Jkl0cEjo4??j87g7hu;R5hYu@+h"]V#fq?uKfR_\+f\tK^g%a:rh#?./ +hYuI4hu;R5iVqm:jSn9?kPj]El2L#JmJHAOnc&+YoD\F^pAXgcq#:*gqYp?jqtU-ern@D(s8N#prVl`l +qu6Hkq#:$epAX^`oD\=[nG_nUmf)SPlMg&IkPjWCjSn-;i;;F2hYu@1h#?(-gABS&f`'M%f(deme>C]G +dt,u!e*YWWeGIeqf)F:uf`'S'gA]k+h#?./hYZ40i;V^7jSn9?kPj`Fli-8Mmf)\SnG`"XoD\C]pAXgc +q#:-hqYpBhr;QZlrn@D.s8N#mrVl`oqu6Hkq>U0gp\smco`"F\nc&"VnG_hSli-,Ik5OKAir7p6hu;I2 +h#?"+f`'J$ec+(te,IepdJM;]c_Jd:c@O8lcKELGchPlddJhSne,Ikrec+/!fDaJ&h#?.,hu;U6ir8'= +kPj]Eli-;NnG_nUnc&+Yo`"O_p\sseq>U6iqu6NjrVQTMs5!_SrqQHkr;QTmq>U0gp\smco`"I]nc&%W +n,D\Qli-2Kk5OH@ir7m8hYu@1gA]e)f`'J$eGdqrdf.Ykci22dbl5fbb*pG'aaqQbakk/=b5TT]bl5la +ci2>kdf._pec+/!f`'S'gA]q-hYuI4ir8'=k5OZFli-8Mn,DhUnc&.Zp&=[ap\sseq>U9jr;6Hirn[V1 +s8N#prVl`oqu6Hkq>U0gp\sjbo`"C[nG_nUmf)POlMg#HjSn-;hu;I2h#?%,fDa>"e,Ibod/MAjcMl)f +bl5c^ao9?[`rZ(+f)F1udJhMlci2/fb5TN^`rD%F^[f(;]Rd_H]Rd`\]_/u;^\GVD_>_=N +`;[aT`r=*ZbPo`bci2;jdJhYpf)F>$h>Z=2i;Vg:jo4HBli-;KnG`"XoD\F^pAXg`qYpBkrVQTMs5!_M +rVl]nqYp?])K88\"gB_[Xkl<[cb*o\,Nr;])0,=]`,VD^])(K_Z%LQ`r='Yb5TWaci2;je,Insg&Bb*hYuI4 +jSn<@lMg,KmJcSRnc&+Yp&=[ap\t!fqYpBerS@M3s8N#prVl`oqYU*fp\smco`"@Zn,DbSli-2Kkl0ZB +iVqa6g]#n*f)F(rd/M>ibPoW_`r_4K^AbeE]DfA?\Gir9[JmQ4Zi79-Z(nOSY^s$0Yii7iZ2:j+ +Zi7?2[JmW6\,Nr;]DfMC^AbnH_>_@O`r='YbPofdci2>kf)F>$g]$+0ir8$On,DhUo`"O_ +p\t!cqYU3irVQTSs5Z1.f)F.tci25hbPoT^ +_u@OP^](tH]DfA?[JmQ4ZMq*-YPt^(Xo>F$X8]-uWM$2@W.CmuW8soVWW&psX8]4"Xo>L&YPtd*ZMq30 +[Jm`9]DfPD^])(K_u@aVb5T]cci2Dmf)FG'hYuI4jSn<@kl0oImf)_To)A7[p&=^bq>U6fr;QZlro=%: +s8N#srVl`oqu6Ejq#:$ep&=R^nG_nUm/H;Lk5OH@iVqa6g]#n*e,I_nc2Pf``rU9jr;QZlro=%:s8N#srVl`oqYp9hp\smco)A1Yn,D\Q +l2KlFir7m8hYu1,ec*tqcMkrb`W![P^&GVB[/RB1YPtX&WW&doUAgkcTDkG]SGnuVQi<P5^[EPl?sIQiC#VZ*CjU&L\`SGo#WQi<Z.- +eGdkpcMkoa_u@FM\c0&:Z2Up*WrApqUAghbT)P2XQi<9LP5^RBO8b.U-fp&=O]nG_hSli-)HjSn*:h>Z+,f)F%q +bl5``_>_.I\c/l5Y5YI#V#I(eT)P,VQ2ZsGO8b+;MZ/A0K`6W'JGt&tIf=cpI/\JfH%C6lH%C8(H2`0i +I/\QnIf=irJGt3#L&Qi+MZ/S6O8b=AQN!9NT)PG_V#ICnXo>U)\c0;A_>_RUc2Q)hf)FA%h>Z@3jSn?A +li-;NnG`"Xp&=^bq>U9jr;QZoro=%=s8N#srVl`oqYphu;C0f`'A!ci2)d +`rU*eo`"C[n,DYPl2KfDj8Rs8gA]\&dJhAhaSs*V +^&GM?Z2Ug'VZ*=hT)P/WQ2ZmENW+k8K`6T&J,XlqHN&0gFoHL^Er0hQDl.E'DLl\VDX)-:Du4MQErL.Z +FoHXbHN&?lJ,Y'!K`6o/NrG.>Q2[3NT)PJ`VuEarZ2V63^&GqKa8X<^dJh\qgA^"/ir8'=l2L&Kn,DkV +o`"R`q>U6iqu6Qnro=%=s8N#srVl]nqYp_(G[JmB/ +WW&^mT`1DZQN!'HNrFq8L]2l(J,XipGlDmcFT-=[E;jbSD>nANCSPWqC4U,NC?K@2C]8/LD>nGPE;jnW +FT-I_GlE*iIf=otL]321NrG4@QN!?PT`1eeWW'+#[Jmf;_>_IRbPolfec+5#hYuL5jSnECli->OnG`%Y +p&=ddqYpBkrVlfVs5X.Yrr2lqqu6Hkq#9scoD\7Ymf)POkl0WAi;VR3fDa7uci2#b`;[ON\c/r7Y5YS8N +ErL1[H2`3jJ,Y'!L]321O8b@BQik'df.Sl`rO +E;jqXG5cacJ,Y'!K`6o/O8b@BRf8oXUAh4mYl;'0^]).M`r=<`df.erh#?41ir80@lMg2MnG`%Yo`"Xb +q>U9jrVlfVs5X.Yrr2lqqu6Ejp\sgao)A.Xm/H8KkPjH>hYu:/eGdhoc2P]]_>_.I[/R6-WW&RiSGnoT +OoC@>M#N#*If=]nFoHI]E;jbSC]8&IAc?6>@fBd7?iFC/?)_([>_-.2>j>Sn?2e10?iFI4@fBm:Ac?EC +C]85NE;jqXFoHaeJ,Y'!M#NA4OoCaISGo2\WW'+#[/Rc<_>_FQc2Q,ieGe5%hYuL5kPj`Fm/HMRoD\C] +p\t!fqu6Qnro=%=s8N#srVl]nq>U-fo`"F\nG_eRl2KiEi;VR3gA]S#d/M8g`;[RO]`,59XT#*rT`1G[ +Q2ZjDMZ/A0JGsrqH2_j`E;jbSCAqoGB)Z6<@/aO4?2e+.>Q.g'=b0_,=b0`C=o2D%>Q.n,?2e41@/aU6 +B)ZKCCAr,ME;jnWH2`3jJGt<&MuJe:Q2[6OT`1hfXo>X*]`,_G`;\![ci2DmgA]q-i;VmU9jrVlfVs5X.Yrr2lqqYp9hp\sgao)A+Wm/H5Jjo43;h#?"+df.Pkb5T9W^&GSAYl:[%V#Hqa +Qi<0IMuJJ1K)U5uH2_scE;j_RCAqfDA,B[5?2e%,=T2D$l.q. +A,^'=CAr)LE;k"ZH2`9lK)UQ)MuJn=R/WZUV#IFoYl;34^Ac"Kb5T]cdf.r!h>Z@3jo4KCm/HJQo)A:\ +p\t!fqYpHmro=%=s8N#srVlZmq#:$eo`"C[n,DYPkl0ZBi;VO2g&BCuc2Pia_>_.I\,NT1WW&[lS,S`Q +OoC4:K`6N$HiA3fErKtUC]8#HA,]p9?iF:/=oMM%_>_RUc2Q,ig&Be+i;Vg:kl0oI +n,DnWo`"Uaq>U6irVlfVs5X.Yrr2lqqYp9hp\sganc&"Vli-,IjSn*:h#>t*d/M8ga8WmR]Df8U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc&"VlMfuGjSn$8gA]\&d/M5f`r?iF@1>5hY'<;oem:]=)f9VY428qBTc9'8hG9`@c`:]=8k<;p#!>5hh, +?iFR7B)ZZHEW1(ZHiAQpK`6r0OT(RFTDk\dXT#U+])KME`r=0\d/MVqgA]t.jSnBBlMg8Onc&.Zp\t!f +qYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)MNkPjN@hYu7.ec*qpbPoK[^](eCZi7$)V#I"cQ2ZmEMuJA. +J,XcnErL"VD#S#F@fBa6>5hY'sJm5hn.@fBs!!MuJh;Q2[ETV>dOpZi7N7^])4Ob5Tceec+8$hYuR7kPjcGmf)_ToD\L` +q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7g6gA]Y%ci2&c`;[IL\,N]4WrAdmSc4iPO8b%9 +Jc:)sGlD^^DZ4DMA,]m8?2dt*nPSGlE*iJc:Q+NrG7ASc5D`WrB='\Gj2@`;[pYci2Jog&Bk-ir8*>l2L,MnG`%Yp\t!f +qYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>hYu4-eGdenao96X^&GM?ZMpm'U]-h`PQ$UAM>i&) +HiA6gEW0hSC&VT@?iF=0=8l5!;Z9Ml:&[fb8cD9[8,G`S7"IaW7"Ibk7/fXS8,c'Y8cDB^:&[ug;Z9\q +=8lJ(?iFO6C&VuKEW11]I/\ZqM>iP7PQ%-PU].:mZMqB5^&GtLb5T`deGe/#hYuO6k5OWEmf)_ToD\L` +q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7d5f`'D"ci2&c`;[IL\,N]4WW&XkSGn]NNW+_4 +JGsopFoH@ZD#S,I@K'U4>Q.\&<;obo:]=&e9)_B\8,c!W7&E>&6\.UU6g[8<7/f[T8,c'Y9)_N`:]=5j +<;oqt>Q.t.@K's>C]8;PFoH^dJGt?'NW,+?SGo8^WW'4&\Gj2@`;[pYci2Gng&Bh,ir8*>l2L,MnG`%Y +p\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC== +LAl]%H2_pbE;jYPBDu<ZF5k5OWEmf)_T +oD\L`q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7d5f`'D"ci2&c`;[IL\,NZ3W;`OjSGnZM +N;eS2J,X`mFT-4XCAqlF@/aI2>5hP$;uTSl:&[ca8cD3Y7K,^P6iKER6%M=Q6%M>k62O"J6iKLQ7K,dU +8cDB^:&[rf;Z9\q>5hh,@/ag +l2L,MnG`%Yp\t!fqYpHmro=%@s8N#prVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$ +UAg\^OoC==LAl]%H2_pbDuOMNB)Z3;?2e%,lJ.1B)ZTFDuOkXHN&EnLAm/2OoCmMU&M"iZ2V63^&GtLb5T`deGe/# +h>ZF5k5OWEmf)_ToD\L`q>U6irVQTVs5s@\rr2lqr;QQlq#:!do)A.Xmf)GLjo46Z(+e,IYlao93W +]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMB)Z3;>lIn*<;oep:]=)f9)_B\7fGgT6iKFO6)d,#5_21O +5j^i962j4M6iKOR7fGsX9)_Qa:]=8k<;p&"?2e72B)ZNDDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJ +aSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4 +f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ +6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e +9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa: +C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pb +DZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k +<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^ +q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNK +MuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU +8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A= +Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i9 +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\ +7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2 +OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9h +pAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD" +;>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#L +FT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DM +Ac?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\ +9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U# +U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M +6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#! +h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb +_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O +5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT +6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-Uc +J,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*: +>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1 +Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZo +roX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`m +FT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie +;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\ +OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f +5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+ +e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO +6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"i +Yl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kT +kl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z` +8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3% +N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn* +<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp +=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1; +LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX +9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KC +mf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1 +W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K +6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYl +ao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,# +5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eq< +S,T,\W;a%#[f3r=_u@aVcMl;lf`'_+iVqsZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo +:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bW +HN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#s +rVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD +@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\* +@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]% +H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O +7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W +]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O +5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJ +aSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4 +f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ +6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e +9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa: +C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pb +DZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k +<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^ +q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNK +MuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU +8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A= +Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i9 +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\ +7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2 +OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9h +pAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD" +;>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#L +FT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DM +Ac?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\ +9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U# +U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M +6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#! +h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb +_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O +5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT +6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-Uc +J,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*: +>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1 +Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZo +roX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`m +FT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie +;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\ +OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f +5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+ +e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO +6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"i +Yl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kT +kl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z` +8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3% +N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn* +<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp +=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1; +LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX +9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KC +mf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1 +W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K +6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYl +ao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,# +5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eq< +S,T,\W;a%#[f3r=_u@aVcMl;lf`'_+iVqsZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo +:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bW +HN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#s +rVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD +@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\* +@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]% +H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O +7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W +]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O +5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJ +aSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4 +f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ +6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e +9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa: +C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pb +DZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k +<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^ +q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNK +MuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU +8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A= +Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i9 +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\ +7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2 +OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9h +pAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD" +;>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#L +FT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DM +Ac?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\ +9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U# +U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M +6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#! +h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb +_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O +5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT +6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-Uc +J,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*: +>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1 +Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZo +roX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`m +FT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie +;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\ +OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f +5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+ +e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO +6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"i +Yl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kT +kl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z` +8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3% +N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn* +<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp +=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1; +LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX +9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KC +mf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1 +W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K +6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYl +ao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,# +5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eq< +S,T,\W;a%#[f3r=_u@aVcMl;lf`'_+iVqsZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo +:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bW +HN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#s +rVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD +@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\* +@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]% +H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O +7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W +]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O +5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJ +aSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4 +f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ +6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e +9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa: +C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pb +DZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k +<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^ +q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNK +MuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU +8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A= +Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i9 +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\ +7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2 +OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9h +pAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD" +;>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#L +FT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DM +Ac?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\ +9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U# +U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M +6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#! +h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb +_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O +5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT +6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-Uc +J,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*: +>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1 +Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZo +roX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`m +FT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie +;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eq %APLeod +EI +92 0 0 57 0 285 cm +BI +/Width 276 +/Height 171 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$ +JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(ns +Jc>BBJc:6"Jc<7[aT'6ZT)\9YJc5<@Jc1/uJc31Yn,D&@`W)tP`*p\=O_q==CWqtpU0^p\sm]p%@tJo:#6$nq$@_o%rs1oCDPKp&"I[p\Xabq=XU`qtpbs8N#grVl`i +qu6Hkq=saXpAXa^o_\7To'c+;n:C([n:C)cnF,oBo)A7Uo`"OVpA"F^q>U6fqtpU6iqu6NgrVQTJs4@;MrqQHhqu6Hkq>U0g +p\smco`"I]o)A1Vn,D\Qli-/Jkl0cEjo4??j87g7hu;R5hYu@+h"]V#fq?uKfR_\+f\tK^g%a:rh#?./ +hYuI4hu;R5iVqm:jSn9?kPj]El2L#JmJHAOnc&+YoD\F^pAXgcq#:*gqYp?jqtU-ern@D(s8N#prVl`l +qu6Hkq#:$epAX^`oD\=[nG_nUmf)SPlMg&IkPjWCjSn-;i;;F2hYu@1h#?(-gABS&f`'M%f(deme>C]G +dt,u!e*YWWeGIeqf)F:uf`'S'gA]k+h#?./hYZ40i;V^7jSn9?kPj`Fli-8Mmf)\SnG`"XoD\C]pAXgc +q#:-hqYpBhr;QZlrn@D.s8N#mrVl`oqu6Hkq>U0gp\smco`"F\nc&"VnG_hSli-,Ik5OKAir7p6hu;I2 +h#?"+f`'J$ec+(te,IepdJM;]c_Jd:c@O8lcKELGchPlddJhSne,Ikrec+/!fDaJ&h#?.,hu;U6ir8'= +kPj]Eli-;NnG_nUnc&+Yo`"O_p\sseq>U6iqu6NjrVQTMs5!_SrqQHkr;QTmq>U0gp\smco`"I]nc&%W +n,D\Qli-2Kk5OH@ir7m8hYu@1gA]e)f`'J$eGdqrdf.Ykci22dbl5fbb*pG'aaqQbakk/=b5TT]bl5la +ci2>kdf._pec+/!f`'S'gA]q-hYuI4ir8'=k5OZFli-8Mn,DhUnc&.Zp&=[ap\sseq>U9jr;6Hirn[V1 +s8N#prVl`oqu6Hkq>U0gp\sjbo`"C[nG_nUmf)POlMg#HjSn-;hu;I2h#?%,fDa>"e,Ibod/MAjcMl)f +bl5c^ao9?[`rZ(+f)F1udJhMlci2/fb5TN^`rD%F^[f(;]Rd_H]Rd`\]_/u;^\GVD_>_=N +`;[aT`r=*ZbPo`bci2;jdJhYpf)F>$h>Z=2i;Vg:jo4HBli-;KnG`"XoD\F^pAXg`qYpBkrVQTMs5!_M +rVl]nqYp?])K88\"gB_[Xkl<[cb*o\,Nr;])0,=]`,VD^])(K_Z%LQ`r='Yb5TWaci2;je,Insg&Bb*hYuI4 +jSn<@lMg,KmJcSRnc&+Yp&=[ap\t!fqYpBerS@M3s8N#prVl`oqYU*fp\smco`"@Zn,DbSli-2Kkl0ZB +iVqa6g]#n*f)F(rd/M>ibPoW_`r_4K^AbeE]DfA?\Gir9[JmQ4Zi79-Z(nOSY^s$0Yii7iZ2:j+ +Zi7?2[JmW6\,Nr;]DfMC^AbnH_>_@O`r='YbPofdci2>kf)F>$g]$+0ir8$On,DhUo`"O_ +p\t!cqYU3irVQTSs5Z1.f)F.tci25hbPoT^ +_u@OP^](tH]DfA?[JmQ4ZMq*-YPt^(Xo>F$X8]-uWM$2@W.CmuW8soVWW&psX8]4"Xo>L&YPtd*ZMq30 +[Jm`9]DfPD^])(K_u@aVb5T]cci2Dmf)FG'hYuI4jSn<@kl0oImf)_To)A7[p&=^bq>U6fr;QZlro=%: +s8N#srVl`oqu6Ejq#:$ep&=R^nG_nUm/H;Lk5OH@iVqa6g]#n*e,I_nc2Pf``rU9jr;QZlro=%:s8N#srVl`oqYp9hp\smco)A1Yn,D\Q +l2KlFir7m8hYu1,ec*tqcMkrb`W![P^&GVB[/RB1YPtX&WW&doUAgkcTDkG]SGnuVQi<P5^[EPl?sIQiC#VZ*CjU&L\`SGo#WQi<Z.- +eGdkpcMkoa_u@FM\c0&:Z2Up*WrApqUAghbT)P2XQi<9LP5^RBO8b.U-fp&=O]nG_hSli-)HjSn*:h>Z+,f)F%q +bl5``_>_.I\c/l5Y5YI#V#I(eT)P,VQ2ZsGO8b+;MZ/A0K`6W'JGt&tIf=cpI/\JfH%C6lH%C8(H2`0i +I/\QnIf=irJGt3#L&Qi+MZ/S6O8b=AQN!9NT)PG_V#ICnXo>U)\c0;A_>_RUc2Q)hf)FA%h>Z@3jSn?A +li-;NnG`"Xp&=^bq>U9jr;QZoro=%=s8N#srVl`oqYphu;C0f`'A!ci2)d +`rU*eo`"C[n,DYPl2KfDj8Rs8gA]\&dJhAhaSs*V +^&GM?Z2Ug'VZ*=hT)P/WQ2ZmENW+k8K`6T&J,XlqHN&0gFoHL^Er0hQDl.E'DLl\VDX)-:Du4MQErL.Z +FoHXbHN&?lJ,Y'!K`6o/NrG.>Q2[3NT)PJ`VuEarZ2V63^&GqKa8X<^dJh\qgA^"/ir8'=l2L&Kn,DkV +o`"R`q>U6iqu6Qnro=%=s8N#srVl]nqYp_(G[JmB/ +WW&^mT`1DZQN!'HNrFq8L]2l(J,XipGlDmcFT-=[E;jbSD>nANCSPWqC4U,NC?K@2C]8/LD>nGPE;jnW +FT-I_GlE*iIf=otL]321NrG4@QN!?PT`1eeWW'+#[Jmf;_>_IRbPolfec+5#hYuL5jSnECli->OnG`%Y +p&=ddqYpBkrVlfVs5X.Yrr2lqqu6Hkq#9scoD\7Ymf)POkl0WAi;VR3fDa7uci2#b`;[ON\c/r7Y5YS8N +ErL1[H2`3jJ,Y'!L]321O8b@BQik'df.Sl`rO +E;jqXG5cacJ,Y'!K`6o/O8b@BRf8oXUAh4mYl;'0^]).M`r=<`df.erh#?41ir80@lMg2MnG`%Yo`"Xb +q>U9jrVlfVs5X.Yrr2lqqu6Ejp\sgao)A.Xm/H8KkPjH>hYu:/eGdhoc2P]]_>_.I[/R6-WW&RiSGnoT +OoC@>M#N#*If=]nFoHI]E;jbSC]8&IAc?6>@fBd7?iFC/?)_([>_-.2>j>Sn?2e10?iFI4@fBm:Ac?EC +C]85NE;jqXFoHaeJ,Y'!M#NA4OoCaISGo2\WW'+#[/Rc<_>_FQc2Q,ieGe5%hYuL5kPj`Fm/HMRoD\C] +p\t!fqu6Qnro=%=s8N#srVl]nq>U-fo`"F\nG_eRl2KiEi;VR3gA]S#d/M8g`;[RO]`,59XT#*rT`1G[ +Q2ZjDMZ/A0JGsrqH2_j`E;jbSCAqoGB)Z6<@/aO4?2e+.>Q.g'=b0_,=b0`C=o2D%>Q.n,?2e41@/aU6 +B)ZKCCAr,ME;jnWH2`3jJGt<&MuJe:Q2[6OT`1hfXo>X*]`,_G`;\![ci2DmgA]q-i;VmU9jrVlfVs5X.Yrr2lqqYp9hp\sgao)A+Wm/H5Jjo43;h#?"+df.Pkb5T9W^&GSAYl:[%V#Hqa +Qi<0IMuJJ1K)U5uH2_scE;j_RCAqfDA,B[5?2e%,=T2D$l.q. +A,^'=CAr)LE;k"ZH2`9lK)UQ)MuJn=R/WZUV#IFoYl;34^Ac"Kb5T]cdf.r!h>Z@3jo4KCm/HJQo)A:\ +p\t!fqYpHmro=%=s8N#srVlZmq#:$eo`"C[n,DYPkl0ZBi;VO2g&BCuc2Pia_>_.I\,NT1WW&[lS,S`Q +OoC4:K`6N$HiA3fErKtUC]8#HA,]p9?iF:/=oMM%_>_RUc2Q,ig&Be+i;Vg:kl0oI +n,DnWo`"Uaq>U6irVlfVs5X.Yrr2lqqYp9hp\sganc&"Vli-,IjSn*:h#>t*d/M8ga8WmR]Df8U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc&"VlMfuGjSn$8gA]\&d/M5f`r?iF@1>5hY'<;oem:]=)f9VY428qBTc9'8hG9`@c`:]=8k<;p#!>5hh, +?iFR7B)ZZHEW1(ZHiAQpK`6r0OT(RFTDk\dXT#U+])KME`r=0\d/MVqgA]t.jSnBBlMg8Onc&.Zp\t!f +qYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)MNkPjN@hYu7.ec*qpbPoK[^](eCZi7$)V#I"cQ2ZmEMuJA. +J,XcnErL"VD#S#F@fBa6>5hY'sJm5hn.@fBs!!MuJh;Q2[ETV>dOpZi7N7^])4Ob5Tceec+8$hYuR7kPjcGmf)_ToD\L` +q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7g6gA]Y%ci2&c`;[IL\,N]4WrAdmSc4iPO8b%9 +Jc:)sGlD^^DZ4DMA,]m8?2dt*nPSGlE*iJc:Q+NrG7ASc5D`WrB='\Gj2@`;[pYci2Jog&Bk-ir8*>l2L,MnG`%Yp\t!f +qYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>hYu4-eGdenao96X^&GM?ZMpm'U]-h`PQ$UAM>i&) +HiA6gEW0hSC&VT@?iF=0=8l5!;Z9Ml:&[fb8cD9[8,G`S7"IaW7"Ibk7/fXS8,c'Y8cDB^:&[ug;Z9\q +=8lJ(?iFO6C&VuKEW11]I/\ZqM>iP7PQ%-PU].:mZMqB5^&GtLb5T`deGe/#hYuO6k5OWEmf)_ToD\L` +q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7d5f`'D"ci2&c`;[IL\,N]4WW&XkSGn]NNW+_4 +JGsopFoH@ZD#S,I@K'U4>Q.\&<;obo:]=&e9)_B\8,c!W7&E>&6\.UU6g[8<7/f[T8,c'Y9)_N`:]=5j +<;oqt>Q.t.@K's>C]8;PFoH^dJGt?'NW,+?SGo8^WW'4&\Gj2@`;[pYci2Gng&Bh,ir8*>l2L,MnG`%Y +p\t!fqYpHmro=%=s8N#srVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$UAg\^OoC== +LAl]%H2_pbE;jYPBDu<ZF5k5OWEmf)_T +oD\L`q>U6irVlfVs5X.Yrr2lqqYp9hp\sd`nc%tUl2KiEir7d5f`'D"ci2&c`;[IL\,NZ3W;`OjSGnZM +N;eS2J,X`mFT-4XCAqlF@/aI2>5hP$;uTSl:&[ca8cD3Y7K,^P6iKER6%M=Q6%M>k62O"J6iKLQ7K,dU +8cDB^:&[rf;Z9\q>5hh,@/ag +l2L,MnG`%Yp\t!fqYpHmro=%@s8N#prVlZmq#:$eoD\:Zmf)JMk5OB>h>Z(+eGdenao96X^&GM?Z2U^$ +UAg\^OoC==LAl]%H2_pbDuOMNB)Z3;?2e%,lJ.1B)ZTFDuOkXHN&EnLAm/2OoCmMU&M"iZ2V63^&GtLb5T`deGe/# +h>ZF5k5OWEmf)_ToD\L`q>U6irVQTVs5s@\rr2lqr;QQlq#:!do)A.Xmf)GLjo46Z(+e,IYlao93W +]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMB)Z3;>lIn*<;oep:]=)f9)_B\7fGgT6iKFO6)d,#5_21O +5j^i962j4M6iKOR7fGsX9)_Qa:]=8k<;p&"?2e72B)ZNDDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJ +aSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4 +f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ +6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e +9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa: +C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pb +DZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k +<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^ +q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNK +MuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU +8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A= +Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i9 +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\ +7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2 +OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9h +pAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD" +;>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#L +FT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DM +Ac?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\ +9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U# +U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M +6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#! +h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb +_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O +5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT +6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-Uc +J,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*: +>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1 +Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZo +roX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`m +FT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie +;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\ +OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f +5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+ +e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO +6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"i +Yl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kT +kl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z` +8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3% +N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn* +<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp +=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1; +LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX +9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KC +mf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1 +W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K +6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYl +ao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,# +5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eq< +S,T,\W;a%#[f3r=_u@aVcMl;lf`'_+iVqsZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo +:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bW +HN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#s +rVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD +@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\* +@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]% +H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O +7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W +]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O +5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJ +aSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4 +f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ +6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e +9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa: +C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pb +DZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k +<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^ +q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNK +MuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU +8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A= +Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i9 +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\ +7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2 +OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9h +pAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD" +;>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#L +FT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DM +Ac?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\ +9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U# +U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M +6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#! +h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb +_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O +5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT +6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-Uc +J,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*: +>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1 +Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZo +roX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`m +FT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie +;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\ +OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f +5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+ +e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO +6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"i +Yl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kT +kl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z` +8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3% +N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn* +<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp +=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1; +LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX +9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KC +mf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1 +W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K +6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYl +ao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,# +5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eq< +S,T,\W;a%#[f3r=_u@aVcMl;lf`'_+iVqsZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo +:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bW +HN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#s +rVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD +@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\* +@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]% +H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O +7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W +]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O +5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJ +aSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4 +f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ +6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e +9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa: +C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pb +DZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k +<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^ +q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNK +MuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU +8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A= +Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i9 +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\ +7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2 +OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9h +pAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD" +;>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#L +FT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DM +Ac?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\ +9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U# +U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M +6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#! +h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb +_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O +5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT +6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-Uc +J,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*: +>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1 +Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZo +roX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`m +FT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie +;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\ +OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR +7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4 +jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J +[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f +5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+ +e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO +6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"i +Yl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kT +kl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z` +8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3% +N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn* +<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?EC +DZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7C +s8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1W +CAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp +=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1; +LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX +9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KC +mf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1 +W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K +6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYl +ao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,# +5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1 +]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]C +iVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X +7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eq< +S,T,\W;a%#[f3r=_u@aVcMl;lf`'_+iVqsZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo +:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bW +HN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#s +rVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD +@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\* +@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]% +H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N` +:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_T +o)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`Li +S,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O +7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W +]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O +5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJ +aSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4 +f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ +6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e +9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&En +LAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`o +qYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1 +=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa: +C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pb +DZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k +<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^ +q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNK +MuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU +8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A= +Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i9 +62j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKa +e,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A! +cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M +5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\ +7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2 +OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9h +pAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD" +;>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#L +FT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DM +Ac?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&" +>lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-h +r;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1 +J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\ +9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U# +U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M +6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#! +h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb +_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O +5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*:>lIn*<;obo:]=&e9)_B\7fGgT +6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1Ac?ECDZ4bWHN&EnLAm/2OT(aK +U&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZoroX7Cs8N#srVl`oqYp9hpAXX^ +nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`mFT-1WCAqfD@/aF1=oMD";>sAj +9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie;Z9Yp=oM\*@/aa:C&W#LFT-Uc +J,Y3%N;eqZ(+e,IYlao93W]`,A=Yl:U#U&LP\OT(1;LAl]%H2_pbDZ4DMAc?*: +>lIn*<;obo:]=&e9)_B\7fGgT6iKFO6)d,#5_21O5j^i962j4M6iKOR7fGsX9)_N`:]=8k<;p&">lJ.1 +Ac?ECDZ4bWHN&EnLAm/2OT(aKU&M"iYl;*1]`,hJaSsKae,J#!h>ZC4jo4KCmf)_To)A@^q#:-hr;QZo +roX7Cs8N#srVl`oqYp9hpAXX^nG_kTkl0]CiVq[4f`'A!cMkrb_u@=J[f3N1W;`LiS,SNKMuJJ1J,X`m +FT-1WCAqfD@/aF1=oMD";>sAj9`@Z`8H)*X7/fRQ6N09M5_21O5_22f5lO(K6N0@O7K,dU8H)6\9`@ie +;Z9Yp=oM\*@/aa:C&W#LFT-UcJ,Y3%N;eq %APLeod +EI +119 0 0 27 403 258 cm +BI +/Width 357 +/Height 81 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +JcC<$JcC<$JcC<$JcC<$df4muJcC<$JcC<$JcC<$JcF0uJcC<$JcC<$JcC<$JcC<$df4muJcC<$JcC<$ +JcC<$JcF0uJcC<$JcC<$JcC<$JcC<$df4muJcC<$JcC<$JcC<$JcF0uJcC<$JcC<$JcC<$JcC<$df4mu +JcC<$JcC<$JcC<$JcF0uJcC<$JcC<$JcC<$JcC<$df4muRfDUNJc:6"Jc:6"[f1jXbl?,kJcE%Um/H,F +Jc1/uJc1/u\c(dlJcF^/df4mu`;f<*d/="DrIOm!r.4csr6bGirU9`:s7?9=s+14's7QBUrVQN`qr7I' +qLSKoqLSLLqXsaYr9XCQrepg)s+14*s8N#arUp*cqsXC@pjr3kpjr3kpp9baqYpB_r9XC]repg)s+146 +s7QB^rV6U0ap\=IZp%%bCo)\ISJb"HaJb"B_dIQl"m.C;Mq"FLWqtU0do(r@_qu$-cq#6rddf4munc/1Yqu$?g +rqcNfp%\O\qtBp[rq,mTp%%G=!V,]2n:U4]n:C)VnEf]9o)&%Uo`"OYpAXgZq#:*dqYpBbr:U#]s3gpu +s8)cjrqQHkr;6BdqYU*fq"XU_pA=O^o`"I]o)%tPnG_nUnFH&?mXaeWmXaeWm`"Vbn,DhUn+H2Lnc&+Y +oD\C]p&"IXp\Xabq=sgcqtpqr@\8qr.>.rnm_5qqq2*rS<%\J_bn5J_eW-ptko*ro!e5p#,i.qr7V8roO%>qrn%Drp0RMrpB^R +qsaUTrpp'[rq-3_rq??cqtTs_qu$?ip&;f-df5L1rr2ThrquZjqt^6dqtL*`rq-3]rpp'Yrp]pUrpB^O +rp0IGroj@DqrR_8ro3q8qqqD0rn[8&n(R`n!SQ.WfRqh-fR_]&f`'Rmg@a8#h>Z:1htu@/ir8!;jnn3; +kl0iGli-8MmJcSRnG_tWo)A7[o_\@]p\Xabq>U9gr:U$frk\W_s-rkA-?mCe(`Q+V[\J\:$Ul+Qu.rkJ$> +qni?Mrl+cSrlP/_rlkAerm1SjrmLeprmh#"rn7;*rndY3ro!e9roO.ArosFJrpB^Rrp]pWrq$-]rq69b +rqQKgqtg#WrknWLrkSNJqn;d:rjr!;rj_^3o=':ZO1'VJJ[XLFm'll%rjhp; +pq-O=rkABHrkSEIrkn`Srl>#[rlY5`rm(MirmLeqrmh#!rn@A+rndY4ro3q;roa:Frp'LLrpKdTrpp'[ +rq-3`rqHEerqZQirqlTjqu-Nne,RkrVuQbqq#13irql]krqZQgrqHEcrq69]rp]pUrpKdPrp0RIroX4@ +ro!e5rndY.rn.5%rmLemrm1ShrlkAarl4rVrl"fPrkSNJqn +JZs^0i3;mZo!88$qm?@1qmQL5rj_sro*k6rndY/rn.5"rmLelrm(MerlY5Zrl"fQrkSNIrk8#rqQHkr;QTm +qYpt*f)F1ud/M>ibl5]_`r_4K^&GVB\Giu:[/RB1 +Yl:j*Xo>F$WrB!sW;ELlVYHtaU\^_SU4K#$Tn/ngU#r'2UAgq\V#.%gVuEXoWW&psXT#@$YPtd*Zi7?2 +\,Nr;])KDB^])(K`W!pWaSsE_cMl2ieGe%uf`'\*h>Z@3j8S0>kPjfHmJHAOnc&.WpAXgcq>U6iqtpU0gp\smco`"C[nG_nUm/H;Lkl0]Cj8S!9hYu:/g&BM#df.SlcMl#d +aSs-W_>_4K]`,MA\Gil7ZMUm*Y5YO%W;`^oVYd.fUAghVTD4uUSFE&"S!'7lRt7'kS*?IBSbo#OTDP;Y +UAgqeVZ*LmW;`mtXo#@%Zi7?2\Gj)=]`,\F_Z%LQaSs?]cMl/hdf.bqg&Bb*hYuI4j8S0>kl0lHm/HJQ +nG_tWo`"O_p\sseq>U6iqu6NjrVQTOs3gqRs8N#mrVQKkqYp9ep\sgao)A1YnG_hSli-,Ik5OKAi;VU4 +h>Z%*ec+"rd/M;hbPoK[_u@FM^AbbD\Gii6ZMq',Xo>@"W;`UlUAgkcT`1P^SbnoURf8]OQi<9LPkC7> +OoUX9Ob&UTOF`LEOPl5nOo(=7PQ$gGQ2[-IR/9pcpAX[_o)A+Wmf)SPlMfrFjSn-;hYu:/g&BM#df.SlbPoT^`r@" +VZ*CjUAghbT)P8ZRf8]RQi!'IPl?jCOoCI>O8+b6N:W!ZMiWdIMh-fEMslW"NrG+:OT(C>P5CLCQ2[-L +RJrZSSGo)YT`1\bV>d@kWrB+!Yl:s-[JmZ7]`,YE_>_IRaSsB^ci2AleGe/#g]$(/iVqp;k5OZFli->O +n,DkVoDA7\p\t!fqYpBerVQTUs3gqXs7lTjrVl`oqYU*fp\smco`"C[nG_nUli-2Kkl0WAiVqa6g]#n* +f)F%qcMl&e`rOoCRDPl@!JR/WTST)PA]T`1bdVuE^qY5Y[)ZMq?4])KGC +_#D:O`r=3]cMl2if)F>$g]$+0iVqm:kl0iGli-APnG_tWo`"O_p\t!cqYU3irV6BUs3gqXs8N#prVl`o +qu6Hkq>U0gp\sgaoD\=[nG_hSli-,Ik5OH@i;VR3gA]Y%e,I\mc2Pf``W![P^&GYC[/RB1YPtX&W;`Xm +U&L\`Sc5&VQi<6KOoCIANrG":MuJV5M#N/.L&Qc)KDpK"JbXcpJ,XruIt<*#It<*#J'icFJGt&kJGt-! +K)UE%K`6])L]3,/MZ/P5N;ek:O8b:@Pl@!JRJrcVTDkP`V>dFmXT#F&ZMq61]DfPD_#D=Pao9Qaci2Al +ec+;%h>Z@3jSn<@kl0oImf)_To)A7[o`"Uaq#:*gqYpBkr;QZlrojC1s1/1)rVQKkqYp9hp\smcoD\=X +n,D\QlMfrFj8S!9hYu7.fDa4tci2/faSs0X_>_.I\c0&:Yl:d(X8\spU]-qcSc5&VQi<3JOoCF@N;e_6 +M>i;0LAlo+KDpK"JGt#mIK"WhHiAdOpY5Y[)[f3i:^&GkI`W!sXbl5rfdf.ktgA]t.i;Vg:k5OZFm/-8Nnc&.Z +pAXgcq"speqtU-Rs3gq[s8N#mrVQKkqYp6gpAXaao)A.Xn,D\QlMg#Hj8S$:hu;@/f)F+sd/M8gao93W +_>_1J\Gil7Yl:d(WW&doT`1P^SGniRPl?gEOT(7=MuJJ1K`6W'Jc:3!J,XorIK"WnHiA?jH2)X`G5$+[ +F`i7WK62ZdJTT:]qfVdZpiud`rd+Qjrd=]nrdOirrdb!!re(3(reCE1rf-o=rfR2Erg*PRrgs+^rhf[o +riQ1(rjDa8rkABIrkn`WrlkAgrmLetrn@A/ro*k:roj@Hrp9XQrpg!Yrq69arqHDrf6u6re:?&rdaurrd+QdrcJ-[rc%jSrb_XMrbDFGrau%=rabn9raPG,rEt1a +JRF%:JRHc2ojR`,raYh9rakt=rb2:FrbMLMrbqdTrc8!ZrcS3drd=]qrdk'&reUQ6rfI,CrgNhWrh07g +ri?%%rj2U6rkABJrl+lZrm1Smrmq)'rndY5roO.Crp'LOrp]pWrq-3_rqHEfrqcWkq#1*hp]&\A`W,r: +q#13hrqcWirq??`rq$-YrpKdProj@Dro="9rnRM+rmUknrltG^rkeZLrj_s7ric=%rhf[hrgj%Vrg!JE +rf$i5re19%rdOimrcnEcrc8!Wrbh^OrbDFGrau.@rabn9raPb5qd8o#rE]##JR"7@JR!b2i*>_Vnm;3# +ra>_6qdTP7rac">rau.CrbDFKrbh^Src8!]rcnEgrdOitre19-rf$i_4qd08-r`nnrrEAerJQ\%:JQ[P,i*#MPmp#crra#;*ra>_4 +raGe8rac"?rb2:Hrb_XQrc%jXrcS3erdFcrre(3*rf$i.r`oG,r`]2$qcEbtmT&s\JQ.S-JQ.2"g/R<:qc<\tpfRMur`fA,ra#D.ra>_6rac"> +rb)4Hrbh^SrcA'^rd"Kmrdt-&repc9rfR2Irg`t\rhf[pric=.rji$Brkn`VrltGirmh##rnm_6ro="A +rp'LMrpTjWrq-3arqQKgrqcWkqu-EkqZ#"DbQ%S@q#13irqcWhrqHEcrpp'XrpTjProsFEro*k5rnIG& +rmLelrlG)WrkSNErjMg2ri?$qrh9=^rg<\Krf@&9reCE&rdFclrcS3]rbqdQrbDFGrac";ra>_4ra#M. +r`fA*r`T5%r`8\lr`&;ar)Krgj%^rhf[qriuI1rjr*Erl+lXrm1Slrmh#&rndY5roX4Drp0RP +rpg!Yrq??crqQKhrqlTkqu6Hldf7Mjrr2fnrqucmrqcWgrq??`rp]pUrpKdNroa:Aro!e2rn7;!rm1Sg +rl+lRrkAB?rj)O,rhoajrh'1Wrfd>Breg]0rdk&trd+Qfrc.pUrb_XJral(=ra>_4ra,S.r`];(r`K/$ +r`9"ur`&kpnkoB^r_W>bJPUhmJPUhmaA;e3r_NMiohk]dr_rerr`9#"r`K/&r`];*ra,S2ra>_8rau.C +rb_XQrc.p]rd+Qmrdk''reg]9rfmDLrh'1brhob!rj2U4rkABJrl+l]rm:Ymrn7;+ro!e:roj@HrpKdS +rp]pZrq69brqcWkrqucoqu6Hldf7Vmrr2]krqcNfrq??`rq$-YrpB^Nroa:Bro*k4rn7;%rm:YgrlG)S +rk/6?rilC'ri#ghrg`tUrfR2?repc.rdaurrcS3]rbqdQrb;@EraPk7ra5Y0r`];'r`9"ur`&kpqbd5e +r_NMiqbR2dmS3URJP:elJP:Vgf1bO*qbI#ar_WSiqb[8hqbmDmr`/qur`K/'r`oG0raGe8rb)4Frb_XQ +rc8!\rdFcrre(3.rf6u?rgEbVrh07hriH+'rj_s?rkSNSrlkAgrmq)%rn[S4roF(Arp0ROrp]pYrq69a +rqZHfq#1*h!<:LIcN!nCq#13grqZQgrq69_rpg!Vrp9XLroX4?rnm_0rmq(srm(Mbrl"fMrji$8riZ7" +rhTObrgNhOrf@&9reCE&rd=]ircA'Xrb_XJrau.>ra>_2r`fA)r`K/#r`&kpr_`YkqbR2dqb?iZqb-HO +JP(JcJP(Jc^InJupe:Z]qbI,dqb[8hr_reqr`9#"r`T5)ra#M2raYq>rb2:Jrc%jXrcnEirdb!®]9 +rg!JNrgs+bri,n"rj;[8rkABMrlP/brmLetrnIG0ro="?rp'LLrpTjVrq$-^rqQKgrqcEgqu-Tqdf7Vm +rr2fnrquclrqQKerq-3\rpTjSrp0RIroF(;rndY,rm^qnrlb;[rkSNFrjMg2ri?$prh07[rg!JErepc1 +rdk&srcnEarc%jRrbDFDraYq7ra,S.r`T5$r`&kqr_`YkqbR2dr__g.:6q +pe(NYqb6u`r_E>dr_WSkr_rerr`9#$r`fA.ra5Y6ral(DrbVRQrcJ-brdFcsreCE1rfI,FrgWn[rhf[q +riuI2rk&0Frl4r\rm1Snrn.5,ro*k;roj@HrpKdSrpp'\rqHEfrqcNirr)`n!<:LIdJs4Fqu-NlrqcWi +rqQKdrq$-[rpTjQrosFEro!e3rn@A$rmC_jrl+lRrkAB>rj)O+rhTOdrgj%PrfI,=re19%rdOiircA'W +rbVRIrac"9ra,S/r`K/#r`/qqr_`Yjr_WShr_3;ar^urWr^cfSlUHFpJOY2[JO[:Apdb3PqapcZr_*5a +r__9rb)4HrbqdWrc\9irdk'%rf-o=rfd>Prh9=eriZ7*rjDa>rk\TQ +rm(Mjrm^r$rn[S3roX4Drp9XQrpg!Zrq??crqZQirqlTkrr)otdf7_prr2fnrquclrqQKdrq69]rp]pT +rp'LGro="8rnIG)rmLekrlb;YrkJHErj2U-ri5skrgj%VrfI,_9rb)4Irc%jXrd+Qlrdk')rf$i#Rrk/6>rilC&rhf[ergNhOrf6u7re19#rd+Qerc%jRrbDFCraGe5r`fA)r`B(sr_WSi +r_EGer_3;`qapcXqa^ENpdOX>rBl-'JO=uUJO@^MmmQq>pdY6Qqag]Xqb$i]r_hu;C0f)F+scMkrb +_u@CL\Gif5XT#*rT`1DZQ2ZjDM#N),J,X`mFoHC[D>n5JAc?*:?2e(-Q.t.@/aa:C&VuK +EW1+[H2`OnG`%Yp&=[aq>U6i +qu6QmrW3#teGn%uq#13hrqcWirq69_rpg!Vrp9XLroF(;rndY,rmh"qrlb;[rkSNErjDa/ri#gkrh'1U +rfR2>re:?&rdFcgrc8!Vrb;@DraPk5r`fA)r`&kpr_WSir_F,r'T1)JO-D( +JO+iQf0[tSqaCU0gp&=R^nG_kTli-,Ij8S!9h>Z")df.SlaSs*V^](\@Z2Um)U]-qcSGn]NNrFq8Jc:,tHiA'bDuOVQ +B)Z<>?iF=0=oMM%;Z9Ml:]=&e9E%Q_8cD9[8,c!T7K,^A6g-ke6N09%5d3M)5_23"6+K>Q6i0:N7JfRR +8,c'Y8cD?]9E%Wa:]=5j;Z9bs=oM\*?iFR7B)ZZHE;jnWHiAKnJc:Q+NrG4@SGo/[U].CpZMq<3^])1N +aSsNbe,Iqth>Z@3j8S9AlMg5NnG`%Yp&=acq>U6fquHZrrVb7GfDkjLqu-NlrqcWhrqHEarpp'Wrp9XK +roX4_.I\Gi`3 +X8]!qT)P/WPQ$O?L]2o)I/\?hErKtUCAqiE@/aI2>5hS%<;obo:]=&e9E%N^8H)-Y7f,X=6f16"6N09% +5a=Tc5_22_5lO'm6L7)=7JfRR8,c'Y8cDB^:&[rf;>sPoU9jquHZrrVcWmgAfe)rr2oq +rqucmrqQKerq??^rp]pTrosFFro="8rn@A&rm:Ygrl>#Rrk&0;riZ7!rhBC^rg*PFreg]/rdXomrcJ-X +rbMLGraYq7r`fA)r`/qqr_NMfr_3;`r^m)[qaUQRr^?t*e,I\mao96X^&GM?ZMpm'V>d+dQi<0INrF_2JGsurFT-:ZDZ4;JAH#s8>lIn*m!L-U;TJO%gP +pd*CrmmI(Cr^QlWr^d#[r_!/ar_NMir`&kur`];-raGe;rbVRPrc8!ardOiurepc;rfmDQrhBCjrilC1 +rk&0HrlG)`rmC_rrnIG0ro="?rp0ROrp]pYrq69brqcWk!;llqr;QZorn@D+s8N#srVl`oqu6Hkp\sjb +o)A.XmJcGNjo49=hu;=.ec*nobPoK[^](eCZi7-,V#I"cS,SQLNW+b5JGsrqGQ)R\D>n;LA,]m8?2dt* +_;rbDFNrcA'`rdOj"reg]9rg*PR +rh9=kric=.rkABKrl>#armUktrn[S3ro="Arp0RPrpg![rq??erqZWl!W2cnrVQTMs5!_SrqlZnqu6Hk +q>U'doD\7Ymf)MNkPjK?hu;F1eGdhoc2P]]_>_+HZMq!*VuE@gRf8QNNW+_4Jc:#qG5cL\D>n5JA,]j7 +>Q.e)<;oep:]=,g9E%N^8,c!T7K,^J6eXm+61I3k5_21O5_22;5lO('6M3_F7/KFP7fGpW8cDB^:B"&g +;Z9Yp=oM\*?iFR7B`;lJEW1.\HiAWrM#ND5Pl@-NT`1kgXo>X*]`,_G`W"-]dJhYph#?41ir8-?lMg5N +nG`%Yp&=ddq>gBnqtpBkqu5FOh>dKRqu-NjrqZQgrq-3\rpTjRrosFFro!e3rnIG$rm:Ygrkn`Mrji$4 +ri?$qrgs+Vrf[8=re:?$rd"KbrbqdOrau.=ra,S.r`K.ur_`Yjr_3;`r^m)YqaLKPog@=tr^$'>JO"cO +JO"cO_Ee)de3a%"qaCEPqaUQVr_*5ar_NMjr_reur`];-raPk>rbMLOrcJ-brdXp$repc=rg<\Vrhf[q +rilC4rkABLrlkAfrmUl$rndY4roa:GrpB^Rrpp'\rqQKg!;Z`mqYpHjrn[V1s8N#srVl`oqYp9hp\sga +o)A+Wm/H5Jjo43;h#?"+dJhDiao9-U]`,A=YPtL"UAgV\Q2ZjDM#N&+J,XTiErL"VBDuH@@/aF1=T2>" +;>sAj:&[ca8H)-Y7fGjU7/0.*6K17]5_21O5_22,5i"d%6iKLQ7K,dU8,c*Z9)_Qa:]=5jlJ.1 +AH$6@DuOeVFoHmiKDp]+O8bCCRf9&\WW'+#[f3r=_>_RUc2Q,ig&Bh,i;Vj;kl0rJn,DnWo`"Uaq#L6l +qYL3hrr)iqh>c=2qu-NlrqcWhrqHE`rpg!Vrp'LGroF(9rnIG)rm:YgrlG)Srk&0;riQ0trh9=Zrfd>A +reCE'rd=]erc%jQrau.>ra5Y/r`B)!r_WShr_rbVRQrcJ-erdk''rf6uArgEbZrhoatrjDa;rkSNSrlkAg +rn.5)rnm_9roj@HrpTjVrq$-`rqQQj!W)Zir;QZNs5!_PrVl`oqYp9hp\sd`nc%tUl2KlFj8Rp7gA]Y% +d/M5f`rK`6K#HiA'bDZ4GNAH$$:?N+(+dOpZi7N7^])7PbPolfec+8$hYuR7k5OWEmf)_ToD\L`q#L6lqYL*err([Qh>dKQrqucm +rqZQgrq??]rpTjRroj@Cro*k4rn.5!rm(Mbrl"fLrjMg1ri#gkrgs+Qrf@&9rdk&srcnE]rbVRJraPk6 +r`oG(r`/qpr_NMer_*5]r^ZrWr^?EHj$MEaJO"cOJO"cOW^,K/qa:6Kr^QlWr^d#]r_QrhBCjrilC2rk8U-fp&=L\n,D_RkPjQAi;VO2fDa4tc2Pf`_u@:I[JmB/VuEChSGn]N +NW+b5JGsopFoH@ZD#S,I@K'U4>Q.\&;uTVm:B!rd9)_?[7fGjI6g6r76.nMS5_21O5_22#5lO(06M3_F +7K,dU8,c-[9E%]c;#XGn&?N+C4B`;fHE;k"ZHiAQpM#ND5P5_!NU&LthYPts/]Df_IaSsH`df.kt +h#?72jSn?AmJcSRnc&4\pAk!iq>($erqucoh>c=2rr)iorql]irq??arpg!Vrp9XIroF(9rnIG'rmLei +rl>#Srjr*9ric$Lr^QlWr^m)^r__;rbMLOrcJ-crdXp%repc;rgEbX +rhTOsrj;[9rk\TRrlkAirn%/(rnm_8roa:IrpKdUrq69b!;HTiq#:0ir;QZNs5hu;@/ec*qpb5TBZ^](bBZMq!*UAg__Qi<*GMZ/8-I/\?hErKqTB`;N@@/aF1=T2;! +;Z9Jk:&[ca8cD3Y7K,^M6fUN46.S;P5_21O5_21u5lO(06MNqI7/fXS7fH!Y9E%Zb:]=8k<;p#!>Q/%0 +A,^0@D>nSTGQ*!hKDp`,OT(UGSc5A_Xo>X*\Gj8B`;[pYd/MSpgA^"/ir8'=li->OnG`(Zo`4^ep\4[` +rql]nqu5XUi;`fUrr)iorqcWgrq??_rp]pSrp0RFro3q7rn.5"rm:Yerl"fNrjMg2riH*mrg`tRrf6u6 +rdt,rrc\9]rbVRHraPk5r`fA(r_renr_NMdr_!/]r^QlUr^?NKj$N`2ej+dOJO"cOJO$+ur^#R2pd>$K +r^HfUr^m)]r_*5dr_`Ynr`K/'ra,S5rb)4Hrc8!^rd4WrreUQ6rg*PRrh9=mriuI2rkJHNrlY5ermh## +rnm_7roO.FrpB^Srq$-^!;?Ngp\t$gqu6Qkro=%:s8N#srVl`oqYp6gpAX[_nG_hSlMfoEir7g6fDa7u +ci2#b_u@FM[JmE0WW&RiS,S]PNW+_4Jc9upG5cL\C]7rF@fB^5>Q.b(;Z9Ml:B!oc9)_B\7fGjU7/K@0 +6N0:%5_21O5_21O5c6mH6/=m,6iKLQ7K,dU8H)3[9E%]c;#XAl=T2M'?N+F5BDu]GEW1+[HN&KpL]3;4 +Q2[6OT`1qiYPts/^])1NaSsNbe,ItuhYuL5jo4QEm/HMRoD\C_pAt$_rqcWkrr)`nj8\';rr2oprql]k +rqHEbrpp'Wrp0RJro="9rn[S)rmLelrl4rRrk8<;riZ6urh07Yrf[8=re:?%rd"KbrbqdMrac"9r`oG* +r`9"rr_NMfr_!/\r^ZrVr^?NKksGA8bs6hFJO"cOJO#elr^#[5qa:?Nr^HfVr^m)]r__:rb;@MrcJ-brdb!&repc=rgEbYrhoatrj2U;rkeZSrm1Smrmq))ro!e9rosFKrpTjWrq-9c!Vc?f +qYpBkr;6KRs5Yt(dJhDi`W!^Q^&G>:XT#*rT)P,VP5^@< +L&QT$GlDd`DuODKAH$!9>lIk)sSp=T2S)@/a^9BDuiKF8gF`J,Y-#MZ/e_FQc2Q,iec+D( +i;Vd9l2L&Kn,DnWo`4^ep\4[`rql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjProj@@rnm_1rmh"qrltG] +rk\THriuI(rhf[crg3VHre^W,rdOiirc8!Urb)4@ra5Y0r`K/"r_`Yjr_3;_r^d#Xr^?EHksGA8bs6hF +JO"cOJO#elr^#[5qa:6Kr^QlWr^m)_r_EGir`/r"r`oG0raYq?rbh^Urc\9ire(3,rfR2Hrgj%criH+( +rk/6Grl+l]rmC_qrnRM1ro3q@rp0RPrpg![!;6HepAXpfqu6Njro=%=s8N#srVl`oqYpn/HA,]j7>Q._' +rr2oqrquclrqZQdrq$-YrpKdNroa:>rndY/rmUkmrlb;YrkABArilC%rhTO_rfmDCreCE'rdFcgrc.pS +ral(rp'LNrp]pY +!;-Bcp&=ddqu6NmrVlfVs5X.Yrr2lqr;QQlq>U'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX^&GP@Yl:[% +U]-_]Pl?aCL&QZ&I/\6eE;j\QAc?0lMg5NnG`"Zo`=aYrqZQjrqucorr1sXJ, +~> %APLeod +EI +92 0 0 27 194 258 cm +BI +/Width 276 +/Height 81 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_p +r`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY: +r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< +rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5* +ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TO +r^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Q +r^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_: +rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfU +r^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5" +r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@L +rcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\ +r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#" +JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$irn[S+rm^qnrlP/Xrk8_2r`];$ +r_relr__rosFMrp]pYrqHEfrqcWmqu5aXj8],X +rr)imrqQKerq$-ZrpKdMroX4>rn[S+rm^qnrlP/Xrk8 +rr2oqrqcWhrqHE`rpg!UrosFEro3q5rn.5"rm1Scrl"fLrjVm4ri,mkrg`tNrf-o4rdauprcS3ZrbVRI +raGe4r`fA&r`&kor_NMer_!/\r^ZrWr^ +rbMLPrcS3drdb!'rf-o?rg`t^ri,n&rj_s@rl"fYrm1Snrn7;,ro3q>rosFMrp]pYrqHEfrqcWmrr1sX +j8],Xrr)imrqQKerq$-ZrpKdMroX4>rn[S,rmh"orlP/Xrk8 +rr2oqrqcWhrqHE`rpg!UrosFEro3q6rn@A%rm1Scrl"fLrjVm4ri5smrgj%Prf@&9rdk&srcnE^rbh^M +raYq8ra#M*r`/qrr_WShr_3;`r^m)[UIKf(JOY2[k=5GAr^m)]r_3;dr_WSmr`9##ra#M2raYqBrb_XS +rcnEirdk'+rf6uArgj%`ri5t'rj_s@rl"fYrm1Sorn7;-ro3q>rosFMrp]pYrqHEfrqcWmrr1sXj8],X +rr)imrqQKerq$-ZrpKdNroa:@rndY.rmh"prlb;[rkJHCrj2U)rhTOcrg!JErepc.rdXonrc8!VrbVRF +raPk6r`];'r`9"rr_WSir_3;ar_!&ZWCVS2JOk>_l:CnGr_!/_r_3;er_`Ymr`9##r`];.raPk +rr2oqrqcWhrqHE`rpg!Urp'LGro="8rn@A&rm:Yfrl4rPrji$8riH*rrh'1VrfR2=re19#rd4Wcrc%jR +rb)4@ra>_1r`T5%r_reor_WShr_ +rr2oqrqcWhrqHE`rpg!Vrp'LGroF(9rn@A'rm:YgrlG)Srk&0;riQ0srh07Wrf[8@re:?&rd=]frc8!V +rb2:BraGe5r`fA)r`/qsr_i_lqbR)`WD%k:JP:Vgl:h1Or_NDfr_i_or`/r#r`oG0raGe;rb2:Lrc8!\ +rd=]qre:?3rf[8Irh07griQ1-rk&0FrlG)_rm:YrrnIG0roF(Brp'LOrpg!ZrqHEfrqcWmrr1sXj8],X +rr)imrqQKerq-3[rpTjProj@Bro!e2rn.4srlkA^rkSNFrjMg/ri#girgNhNrf@&6re(3"rcnEarbqdP +rb;@Dra>_3ra#M+r`B)!r_reoqbX.cJPUhmJPYQ,qb[8ir_rerr`B)%ra#M1ra>_;rb2:IrbqdXrcnEl +re(3*rf@&CrgNh[rhoaurjMgrr2oq +rqcWhrqHEarpp'Wrp9XJroF(:rnRM*rmC_irlP/Urk8M:Yr`/qur`K/'r`oG0raGe9rb2:Grbh^Urce?grdb!% +reg]:rg*PRrhBCkrilC2rk/6HrlP/armC_trnIG1roF(Brp9XQrpp'\rqHEfrqcWmrr1sXj8],Xrr)im +rqQKerq-3\rpTjQroj@Cro!e2rn7;!rm(McrkeZJrji$4ri5snrgj%Trf[8=reCE(rdOilrcS3Zrb_XL +ral(=qdBD/r`];'r`B)"qc0UpJQ.2"JQ1o6r`/qur`B)$r`];+qdBD5ral(Drb_XRrcS3crdOiureLK2 +rf[8Jrgj%ari?%&rji$BrkeZWrm(Mkrn7;,ro!e;roj@JrpTjWrq-3arqZQirr)iqj8\0>rr2oqrql]j +rqHEarpp'Xrp9XKroX4_4ra,J-WEb!ZJR!b2l_7raYq=rb2:Grb_XQrcA'^rd=]prdt-+ +rf-o=rg<\Trh9=jriZ7,rk8rr2oq +rql]krqQKbrpp'XrpB^Mroj@@rnm_1rmh"rrm1S`rkeZLrjDa0ri?$mrgs+Xrfd>Brepc/rdk&urcnEb +rcA'Xrbh^Orb2:Cral(=raPk8UL8X\JRF%:k@"9traPk:ral(Arb2:Irbh^SrcA'^rcnElrdt-&repc: +rfd>Mrgs+`ri?%&rjDa?rkn`Trm1Slrmh#'rnm_7roj@HrpB^Srq$-]rqQKgrql]nrr1sXj8],Xrr)in +rqcWhrq69^rp]pTrp0RIro="9rn[S*rmUkmrlG)WrkJHCrj2U,rhf[hrgs+Urfd>Breg]0rdt-!rd4Wi +rcJ-[qeuIMrbMLJrb21Arar-@JRsCDJS"4[rau%?rb;@HrbMLMqeuISrcJ-brd=]prdt-)reg]9rfd>J +rgs+`rhf[trj2U7rkJHNrlG)brmUkurn[S3ro="Arp'LNrp]pYrq69crqZQjrr)iqj8\0>rr2oqrql]k +rqQKdrq-3[rpTjProj@Bro*k5rn.5"rm:Yerl4rSrk&0;ric=#rhTOcrgWnQrfR2>re^W0rdk&urd=]i +rc\9`rc.pVrbqdQrbVRLrbArnm_/rmq(rrlkA_rkn`KrjVm3ri?$qrhBC`rgEbNrfI,=repc/rdt-! +rdFclrcnEbrcJ-[qf)FNVJ^s&JSp$Vl>HK;qf)OTrcA']rcnEgrdFcqrdt-&repc9rfI,ErgEbWrhBCi +ri?%'rjVm?rkn`UrlkAhrmh#%rnm_7roO.Drp9XQrpg![rq??erqcWkrr)iqj8\0>rr2oqrquclrqZQe +rq-3\rp]pSrp0RGro3q7rnIG)rmUkmrlY5[rkSNFrjDa0ri?$rrh07]rgWnOrfR2@reg]2reCE'rdaut +rd=]lrd+Qgrc\9`UND'/JTQHbkB-]Grce?drd+Qjrd=]prdb!!reCE.reg]9rf[8FrgWnYrh07gri?%& +rjDa:rkSNQrlb;ermUkurnIG0ro="?rp0RNrp]pXrq69arqZQjrqucorr1sXj8],Xrr)iorql]krq??a +rq-3ZrpKdProa:Aro!e3rn.5"rm:YgrlP/Urk8<@riuI*ri5snrh9=_rgEbOrf[8Arf$i7reCE*re(3# +rdXorrd=]lTR)08JU2lnjEgfPrd=]ordXotre(3(reCE1rf-orr2oqrqucmrqcWgrq??`rp]pT +rp9XJroO.rr2oqrqucmrqcWgrq??`rpg!W +rpKdMroa:Aro!e3rn@A$rmC_jrlG)VrkJHCrjMg2riZ7#rhoairh07^rgNhQrg!JGrfI,?rf-o9repc5 +reUQ/UP=>SJVJ`1kD&tkre^W3repc7rf-orkJHLrl"fZrm(Mirmq)%rnRM1ro3q=rosFJrpKdSrpp'\rqHEerqZQj +rqucoqu5XUi;`fUqu-NlrqcWhrqHEarq$-ZrpTjQrp'LGroO.c=2rr2fnrqucmrqcWirqQKerq69_rpg!WrpTjSrp0RKroj@Bro*k6rn[S/ +rn@A'rmh"srmC_lrm1ShrltGdrlY,[rl>#Xrl+?EXM]V,J]!&VnAF_5rl+lVrl>#[qo\o^rltGfrm1Sj +rmC_ormh#"rn@A+rn[S2ro3qc=2rr2fnrqucm +qtgcrm1SjrmC_orm^qtrn%/&rn@A,rndY4ro3qdKRq#13irql]krqZQgrqHEcrq-3\rpg!Vrp]pSrp0RIroX4A +ro3q9qqqD/rnRM+rn.5$rmh"trmUkprmCVio$=)VJ^/hlJ^3H(p!c+,rr2fnrquZjrqcWhrqHEc +rq-3]rpp'XrpTjSrp9XLrosFFroX4@ro*k7qqqD0rn[S/rnIG+qq:u$rn%/#pso8kVUL+FJ^]2!mF1aX +qpk\srn%&"rn7;)rnIG-rn[S1qqqD2ro*k;roO.BrosFJrp9XPrpTjUrpp'[rq-3`rqHEerqcWjrqlTj +rr)`ngAfe)rr2fnqu$HjrqcWhqtL*_rq-3]rpp'XrpTjRrp9XMrosFGroa:BroEt9ro*k6ro!e4rn[S/ +ptPf%n(F\mJ_5P+J_98?o%F#rqqM#'rn[S1ro!e5ro*b6ro=">roa:ErosFJrp9XOrpTjVrpp'[rq-3_ +rqH4qr41*J`21=J`5\Kp#>u2puM>7roa1BrosFJqs==LrpKdTrpTjUrpfmXrq69bqtTs_rqucnqu-Ek +eGn%uq#:0hrquZjrqcNfrqQKdqt9aUrpg!WrpTjSqsFCLrp0IHros+>qrdk=S`PFaJ`VIEjQ6'sro`t< +ros=Frp0RMrpBUNrpTjUrpfdTrq60^qtU0dqtgBB +Jc:6"Jc<7[aT'6ZJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$ +JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$ +JcC<$JcC<$`W(G +~> %APLeod +EI +92 0 0 27 0 258 cm +BI +/Width 276 +/Height 81 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +k5YG[rr)iorqcWhrq??^rp]pTroj@Cro*k4rn.5!rm(Mbrkn`JrjMg1ri#girgWnKrepc1rdXomrcJ-W +rbDFDra>_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_p +r`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY: +r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#X +r^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i< +rgWn\ri#h#rjMg=rkn`Vrm(Mlrn.5+ro*k_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5* +ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TO +r^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Q +r^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1 +r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_: +rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfU +r^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TM +WBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5" +r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@L +rcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#"JO"cOm6LY:r^-TOr^HfUr^d#\ +r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$i_1r`T5"r_`Yjr_3;`r^d#Xr^?`Qr^-TMWBc#" +JO"cOm6LY:r^-TOr^HfUr^d#\r_3;er_i_pr`T5*ra>_:rb;@LrcJ-crdXp%rf$irn[S+rm^qnrlP/Xrk8_2r`];$ +r_relr__rosFMrp]pYrqHEfrqcWmqu5aXj8],X +rr)imrqQKerq$-ZrpKdMroX4>rn[S+rm^qnrlP/Xrk8 +rr2oqrqcWhrqHE`rpg!UrosFEro3q5rn.5"rm1Scrl"fLrjVm4ri,mkrg`tNrf-o4rdauprcS3ZrbVRI +raGe4r`fA&r`&kor_NMer_!/\r^ZrWr^ +rbMLPrcS3drdb!'rf-o?rg`t^ri,n&rj_s@rl"fYrm1Snrn7;,ro3q>rosFMrp]pYrqHEfrqcWmrr1sX +j8],Xrr)imrqQKerq$-ZrpKdMroX4>rn[S,rmh"orlP/Xrk8 +rr2oqrqcWhrqHE`rpg!UrosFEro3q6rn@A%rm1Scrl"fLrjVm4ri5smrgj%Prf@&9rdk&srcnE^rbh^M +raYq8ra#M*r`/qrr_WShr_3;`r^m)[UIKf(JOY2[k=5GAr^m)]r_3;dr_WSmr`9##ra#M2raYqBrb_XS +rcnEirdk'+rf6uArgj%`ri5t'rj_s@rl"fYrm1Sorn7;-ro3q>rosFMrp]pYrqHEfrqcWmrr1sXj8],X +rr)imrqQKerq$-ZrpKdNroa:@rndY.rmh"prlb;[rkJHCrj2U)rhTOcrg!JErepc.rdXonrc8!VrbVRF +raPk6r`];'r`9"rr_WSir_3;ar_!&ZWCVS2JOk>_l:CnGr_!/_r_3;er_`Ymr`9##r`];.raPk +rr2oqrqcWhrqHE`rpg!Urp'LGro="8rn@A&rm:Yfrl4rPrji$8riH*rrh'1VrfR2=re19#rd4Wcrc%jR +rb)4@ra>_1r`T5%r_reor_WShr_ +rr2oqrqcWhrqHE`rpg!Vrp'LGroF(9rn@A'rm:YgrlG)Srk&0;riQ0srh07Wrf[8@re:?&rd=]frc8!V +rb2:BraGe5r`fA)r`/qsr_i_lqbR)`WD%k:JP:Vgl:h1Or_NDfr_i_or`/r#r`oG0raGe;rb2:Lrc8!\ +rd=]qre:?3rf[8Irh07griQ1-rk&0FrlG)_rm:YrrnIG0roF(Brp'LOrpg!ZrqHEfrqcWmrr1sXj8],X +rr)imrqQKerq-3[rpTjProj@Bro!e2rn.4srlkA^rkSNFrjMg/ri#girgNhNrf@&6re(3"rcnEarbqdP +rb;@Dra>_3ra#M+r`B)!r_reoqbX.cJPUhmJPYQ,qb[8ir_rerr`B)%ra#M1ra>_;rb2:IrbqdXrcnEl +re(3*rf@&CrgNh[rhoaurjMgrr2oq +rqcWhrqHEarpp'Wrp9XJroF(:rnRM*rmC_irlP/Urk8M:Yr`/qur`K/'r`oG0raGe9rb2:Grbh^Urce?grdb!% +reg]:rg*PRrhBCkrilC2rk/6HrlP/armC_trnIG1roF(Brp9XQrpp'\rqHEfrqcWmrr1sXj8],Xrr)im +rqQKerq-3\rpTjQroj@Cro!e2rn7;!rm(McrkeZJrji$4ri5snrgj%Trf[8=reCE(rdOilrcS3Zrb_XL +ral(=qdBD/r`];'r`B)"qc0UpJQ.2"JQ1o6r`/qur`B)$r`];+qdBD5ral(Drb_XRrcS3crdOiureLK2 +rf[8Jrgj%ari?%&rji$BrkeZWrm(Mkrn7;,ro!e;roj@JrpTjWrq-3arqZQirr)iqj8\0>rr2oqrql]j +rqHEarpp'Xrp9XKroX4_4ra,J-WEb!ZJR!b2l_7raYq=rb2:Grb_XQrcA'^rd=]prdt-+ +rf-o=rg<\Trh9=jriZ7,rk8rr2oq +rql]krqQKbrpp'XrpB^Mroj@@rnm_1rmh"rrm1S`rkeZLrjDa0ri?$mrgs+Xrfd>Brepc/rdk&urcnEb +rcA'Xrbh^Orb2:Cral(=raPk8UL8X\JRF%:k@"9traPk:ral(Arb2:Irbh^SrcA'^rcnElrdt-&repc: +rfd>Mrgs+`ri?%&rjDa?rkn`Trm1Slrmh#'rnm_7roj@HrpB^Srq$-]rqQKgrql]nrr1sXj8],Xrr)in +rqcWhrq69^rp]pTrp0RIro="9rn[S*rmUkmrlG)WrkJHCrj2U,rhf[hrgs+Urfd>Breg]0rdt-!rd4Wi +rcJ-[qeuIMrbMLJrb21Arar-@JRsCDJS"4[rau%?rb;@HrbMLMqeuISrcJ-brd=]prdt-)reg]9rfd>J +rgs+`rhf[trj2U7rkJHNrlG)brmUkurn[S3ro="Arp'LNrp]pYrq69crqZQjrr)iqj8\0>rr2oqrql]k +rqQKdrq-3[rpTjProj@Bro*k5rn.5"rm:Yerl4rSrk&0;ric=#rhTOcrgWnQrfR2>re^W0rdk&urd=]i +rc\9`rc.pVrbqdQrbVRLrbArnm_/rmq(rrlkA_rkn`KrjVm3ri?$qrhBC`rgEbNrfI,=repc/rdt-! +rdFclrcnEbrcJ-[qf)FNVJ^s&JSp$Vl>HK;qf)OTrcA']rcnEgrdFcqrdt-&repc9rfI,ErgEbWrhBCi +ri?%'rjVm?rkn`UrlkAhrmh#%rnm_7roO.Drp9XQrpg![rq??erqcWkrr)iqj8\0>rr2oqrquclrqZQe +rq-3\rp]pSrp0RGro3q7rnIG)rmUkmrlY5[rkSNFrjDa0ri?$rrh07]rgWnOrfR2@reg]2reCE'rdaut +rd=]lrd+Qgrc\9`UND'/JTQHbkB-]Grce?drd+Qjrd=]prdb!!reCE.reg]9rf[8FrgWnYrh07gri?%& +rjDa:rkSNQrlb;ermUkurnIG0ro="?rp0RNrp]pXrq69arqZQjrqucorr1sXj8],Xrr)iorql]krq??a +rq-3ZrpKdProa:Aro!e3rn.5"rm:YgrlP/Urk8<@riuI*ri5snrh9=_rgEbOrf[8Arf$i7reCE*re(3# +rdXorrd=]lTR)08JU2lnjEgfPrd=]ordXotre(3(reCE1rf-orr2oqrqucmrqcWgrq??`rp]pT +rp9XJroO.rr2oqrqucmrqcWgrq??`rpg!W +rpKdMroa:Aro!e3rn@A$rmC_jrlG)VrkJHCrjMg2riZ7#rhoairh07^rgNhQrg!JGrfI,?rf-o9repc5 +reUQ/UP=>SJVJ`1kD&tkre^W3repc7rf-orkJHLrl"fZrm(Mirmq)%rnRM1ro3q=rosFJrpKdSrpp'\rqHEerqZQj +rqucoqu5XUi;`fUqu-NlrqcWhrqHEarq$-ZrpTjQrp'LGroO.c=2rr2fnrqucmrqcWirqQKerq69_rpg!WrpTjSrp0RKroj@Bro*k6rn[S/ +rn@A'rmh"srmC_lrm1ShrltGdrlY,[rl>#Xrl+?EXM]V,J]!&VnAF_5rl+lVrl>#[qo\o^rltGfrm1Sj +rmC_ormh#"rn@A+rn[S2ro3qc=2rr2fnrqucm +qtgcrm1SjrmC_orm^qtrn%/&rn@A,rndY4ro3qdKRq#13irql]krqZQgrqHEcrq-3\rpg!Vrp]pSrp0RIroX4A +ro3q9qqqD/rnRM+rn.5$rmh"trmUkprmCVio$=)VJ^/hlJ^3H(p!c+,rr2fnrquZjrqcWhrqHEc +rq-3]rpp'XrpTjSrp9XLrosFFroX4@ro*k7qqqD0rn[S/rnIG+qq:u$rn%/#pso8kVUL+FJ^]2!mF1aX +qpk\srn%&"rn7;)rnIG-rn[S1qqqD2ro*k;roO.BrosFJrp9XPrpTjUrpp'[rq-3`rqHEerqcWjrqlTj +rr)`ngAfe)rr2fnqu$HjrqcWhqtL*_rq-3]rpp'XrpTjRrp9XMrosFGroa:BroEt9ro*k6ro!e4rn[S/ +ptPf%n(F\mJ_5P+J_98?o%F#rqqM#'rn[S1ro!e5ro*b6ro=">roa:ErosFJrp9XOrpTjVrpp'[rq-3_ +rqH4qr41*J`21=J`5\Kp#>u2puM>7roa1BrosFJqs==LrpKdTrpTjUrpfmXrq69bqtTs_rqucnqu-Ek +eGn%uq#:0hrquZjrqcNfrqQKdqt9aUrpg!WrpTjSqsFCLrp0IHros+>qrdk=S`PFaJ`VIEjQ6'sro`t< +ros=Frp0RMrpBUNrpTjUrpfdTrq60^qtU0dqtgBB +Jc:6"Jc<7[aT'6ZJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$ +JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$JcC<$JcC<$`W(MhJcC<$JcC<$JcE^hJcC<$ +JcC<$JcC<$`W(G +~> %APLeod +EI +119 0 0 202 403 56 cm +BI +/Width 357 +/Height 606 +/BitsPerComponent 8 +/Decode[ +0 1 +0 1 +0 1 +] +/DataSource cg_aiproc +ID +j8],Xrr)inrqcWirq69^rp]pSrosFFro!e2rn7;"rm1SerkeZJrjVm1ri#gjrgNhNrf6u2rdXoorcA'W +rbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9## +ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1rk8U6iqu6Qnro=%=s8N#srVl]nqYp_.I\,NQ0W;`OjRf8NM +NW+V1J,XfoF8g+WC]7lD@K'U4=T2>";Z9Ml:&[fb8H)-Y7ef@>6G>^95_21O5_21]5jq&76iKRS8,c'Y +9E%Zb;#XAlZ@3kPjcG +mJcVSo)SFap%A=[rqcWkrr)iqj8\0>rr2oqrql]krqQKcrq$-YrpB^LroO.;rnRM+rmLekrlY5Vrk8rk\TVrm(Mk +rn7;+ro!e;rosFLrp]pY!;-Bcp&=acq>U9jrVlfVs5X.Yrr2lqqu6Hkq#9pbo)A.Xm/H8Kk5O<XP5^I?KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'g:CAr,MErLCaIf>!!NW,+?R/WcXVuEju +[f3r=_>_UVc2Q,ig&Bh,i;Vm_2r`K/"r_`Yjr_3;a +r^ZrWr^HTLmm=`RJO"cOJO"cOO$N/#pd>$Lr^QlWr_*5br_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30 +rf[8Jrh07griZ7/rk/6HrlP/armC_urnRM2roO.Crp9XRrpp-^!VH$`q#:*gqu6Qnro=%=s8N#srVl]n +qYp9ho`"F\nG_eRl2KfDi;VO2g&BCuc2Pia_#CtF[f3H/VuE@gR/W9JNW+S0J,XcnErKtUCAqcC@/aI2 +=T2>";>sAj9`@Z`8,c!W7JK7=6G>^95_21O5_21]5jq&76iKOR7fGpW9)_N`:]=5jrr2oqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Trk&0U9jrVlfVs5X.Yrr2lqqu6Hkq#9pbo)A.Xm/H8Kjo43;h#?"+dJhGjb5T3U]Df8X +P5^I?KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'g:CAr,MErLCaIf>!!NW,+?R/WcXVuEju[f3r=_#DLUc2Q,ig&Be+i;Vj; +kl0rJnG`"ZoE"UVrqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rp]pRrosFEro!e2rn7:urm(Mcrk\TH +rjMg/rhoagrg<\Jrf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yjr_3;ar^d#Xr^HTLmm=`RJO"cOJO"cO +O$N/#pd>$Lr^ZrYr_*5br_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Jrh07griZ7/rk/6HrlY5b +rmC_urn[S3roX4Drp9XRrpp-^!VH$`q#:*gqu6Qnro=%=s8N#srVl]nqYp9hp&=R^nG_hSl2KfDi;VO2 +g&BG!cMkuc_>_.I\,NQ0W;`LiRJrBKNW+V1J,XfoErKtUC]7lD@K'U4=T2>";Z9Ml:&[fb8H)-Y7ef@> +6G>^95_21O5_21]5jq&76iKRS8,c'Y9E%Zb;#XAlrr2oqrql]krqQKcrq$-Y +rpB^LroX4Are19#rd4Wbrbh^Nrac":ra,S+r`/qqr_WSg +r_*5]r^ZrWpd=L:^-I67JO"cOJO#8]mm?e:r^QlWr^d#]r_U9jrVlfVs5X.Yrr2lq +qu6Hkq>U'doD\7YmJcALkPjE=h#?"+e,I\mbPoBX^&GM?YPtL"UAgV\Pl?^BK`6K#HiA*cDuOPOAH$$: +?N+(+U9jr;QZoro=%=s8N#srVl`oqYp5hV&<;o_n:B!rd8cD9[7fGgQ6gR/46-VZG5_21O +5_21i5l3k36N0@L7/f[T8,c*Z9`@fd;#XGn=8lD&?N+F5B)ZWGE;jtYIK"itL]3A6Q2[9PU].:mYl;65 +^Ac"Kbl5rfe,J)#hYuO6kl0lHmf)_ToDnRcp@eL]rql]mrr)iqj8\0>rr2oqrquclrqZQerq$-YrpKdO +roj@@rndY/rmUknrlkAZrkJHDrilC%rhTO`rg*PEreUQ+rdOihrc.pSrau.>ra5Y/r`B)!r_WShr_3;_ +r^d#Xr^?WNj$N`2bs6hFJO"cOJO#elr^#R2r^6QNr^QlWr^m)_r_EGhr`/r"r`fA/raYq>rb_XSrcS3h +rdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm1SmrnIG0ro3q@rp'LNrp]pZ!;6HepAXmequ6NmrVlfVs5k'dJhDi`W!^Q]`,28XT#*rSc4uTOoC4:KDp?!G5cO]DZ4;J +AH#s8>lIk)sSp +=T2S)?iFR7BDufJErL7]If>!!M>iY:Qi_1r`T5$r_i_kr_3;`r^d#Xr^?EHksGA8bs6hFJO"cOJO#elr^#[5qa:6K +r^QlXr_!/`r_NMkr`9##r`oG1ral(BrbqdWrce?kre19.rfR2Hrgs+eriQ1*rk/6Hrl4r_rmLesrnRM1 +ro3q@rp0RPrpg![!;6HepAXpfqu6Njro=%:s8N#sr;QTmqYp6gp&=O]n,DYPl2K`Bi;VR3f)F+sci1r` +_>_.IZi7-,VuE@gRJrBKMuJG0JGsinFT-4XC&VZB@/aF1=oMJ$;Z9Jk:&[ca8H)-Y7K,^M6g6r:6-VZG +5_21O5_21l5lO(36Mj.L7/fXS8,c*Z9)_Qa;#XAllJ.1Ac?ECDuOkXH2`?nLAm,1P5^mKT`1kg +Xo>[+^&GnJ`r=<`e,Iqth>Z@3j8S +rbMLQrcS3drdk'(rf-oBrgNhZri,n#rjDa?rl"fWrm1Smrn%/+ro*ks>i9`@Z`8H)*X7K,^P6f:<16.S;P5_21O5_21u5lO(*6N0@O7/fXS +7fGsX9)_N`:B")h;uTnu>Q/"/A,^-?D#SGRG5cjfK)UT*NrG@DSGo5]X8]C'\,O/A`;[mXci2Gnf`'b, +iVqs$Kr^HfUr^m)^r__8rb2:Jrc8!^rd=]tre^W9rg3VT +rhBCorj)O5rkJHNrlY5ermh#%rnm_7roO.FrpKdTrq-3_!;?Ngp\t$gqu6Qkro=%7s8Murr;QTmq#:!d +p&=L\n,D\QkPjQAhu;C0f)F+sbl5Z^_>_%F[/R9.V#I"cRJr5hP$ +;uTSl:&[ca8cD6Z7fGjO6fUN46.S;P5_21O5_21u5lO(06MNqI7K,dU8,c*Z9E%Zb:]=8klJ.1 +B)ZTFDuOkXHN&EnLAm,1OT([ITDkYcYPtp.])KPF`r=3]df.ktg]$+0j8S6@m/HGPnc&4\pAjshq"Xjc +rqucoh>c=2rr)iorql]irqHEcrpg!Vrp9XJroO.#Trk/6=ricreUQ( +rd4Wfrc%jQrb2:>ra,S.r`9"tr_`Yir_3;`r^d#Yr^QlTqa9C1qa&n#JO"cOJO"cOW^-PLi'RE1qaCEQ +r^ZrYr_!/_r_EGir`&ktr`fA.raGe>rbMLPrc\9frdb!(rf-o>rgWn[rhf[urjDaKjo46Z(+e,IYl +ao96X^&GJ>Yl:U#U]-kaPQ$XBMZ/2+IK"KjE;j\QC&VT@?iF=0=8l5!;>sAj9`@]a8H)-Y7fGgK6fUMd +5_21O5_21O5cR*-6Mj.I7/f[T8,c'Y9E%Zb:]=5j<;otu>lJ+0@fC*@D>nMRGlE*iJc:Q+NrG7AT)PJ` +W;a%#\,O)?`;[mXcMl;lf`'_+iVqsdBNrquclrqQKerq$-Z +rpKdMroa:@rndY.rmh"prlb;\rkJHCrj2U)rhTOcrg*PGrf-o1rdXoorc8!UrbMLDraGe4r`K/#r_rem +r_EGdr^m)[r^QlUr^?EHj$N`2h`u`XJO"cOJO$G)r^#R2ogA^Hr^HfUr^ZrZr_3;cr_WSmr`9##ra,S4 +rac"DrbqdVrd4Wpre191rf[8Hrh'1dri?%)rji$Crl4r\rm:Yprn7;-ro="?rosFMrp]pYrqHEf!;Z`m +qYU3irS@M0s8N#srVl`oqYp9hp\sganc%tUlMfuGj8Rs8gA]_'d/M8ga8WmR])K)9XT#*rT`1>XPQ$XB +L&QZ&IK"nMRF8gUeJc:B&O8b@BR/WcXVZ*[r[/RZ9_#DCRbl5ug +fDaP(hu;[8kPjcGmf)bUo`"Uaq#L6lqYL3hrr)iqh>c=2rr2oqrquclrqQKerq-3\rpTjQroj@Cro!e2 +rn7:urltGark\THrjMg0ri#gjrgNhOrf@&7re(3"rcS3\rbqdKrac"9r`oG)r`/qpr_NMfr_!/\r^ZrW +r^HfSpd_9rb)4Krc8!\rdXp" +reUQ7rfmDNrhBCkric=0rk/6HrlP/armC_urn[S3roO.Crp9XQrpp'\rqHEf!;Z`mqYpElrVlfPs5!_S +rqlZnqYpZ1.e,I_nbl5NZ^](eCYl:^&VZ*1dR/W9JMuJG0J,X`mFT-4X +C]7rF@fB^5>Q.b(;uTYn:]=&e9)_E]7f,XR7.iq!6N0:@5_21O5_21O5f,ec6.A6u6i0:N7JfRR8cDB^ +9`@ie;>sMn=T2M'?N+F5BDu]GDuOkXH2`B_u@mZci2Dmg]$(/i;Vp= +lMg2Mn,DnWo`"Xbq#L6lqYL3iqu5FOh>dKRqu-NjrqZQgrq69_rpg!Urp0RIro3q7rnRM'rmC_irl+lP +rk&08riQ0urh07ZrfmD@reLK)rd4Wfrc8!Srb2:Ara>_1r`T5"r_i_kr_ +JO"cOJO"cO_Ee)de3a%"qaCZ")df.Sla8X!U^AbM=YPtR$U&LS]QMusEM>i2-If=WlF8g+WCAqiE@/aI2 +>5hP$;uTVm:B!rd9)_B\8,c!W7K,^J6eXm+61I3k5_21O5_22;5lO('6M3_F7/fXS7fGpW8H)6\9E%]c +;#XDmU3jqZ6Tkrr)`nh>c4/rr2oqrqucmrqcWgrq69]rp]pSrp0RFro3q7rn7;$rm1Serl+lO +rji$7riZ6rrh'1ZrfR2>reUQ(rd=]hrc%jRrbDFBra>_2r`K/"r_i_lr_EGdr^m)[r^ZrWr^HfSnjCek +rBPp!JO"cOJO%LGc9h1kr^?`Sr^QlWr^d#[r_3;cr_WSlr`9##ra#M2raYqBrbVRQrce?grdb!(rf-o> +rgWn[rhTOrrj2U7rkJHOrlb;erm^r#rnm_7roO.FrpB^Srpp']rqHEgrqc]n!W;lprVlfMs4[MPrr2lq +r;QTmqYp6gpAX^`nG_kTm/H/Hj8S!9g]#e'df.Jia8WsT]Df5;YPtI!U&LV^Pl?aCMuJ>-If=ZmErKtU +C]7oE@fBa6=oMM%sSp=8lA%?iFO6Ac?KEDuOeVHN&BmK)U]-OT(LDSc5A_VuEn![Jmf;_Z%UTbl6&ifDaP( +i;Vg:k5O`Hmf)_To`"O_p\t$gqZ-Npr;?Qmrr1XOgAh0Orr)iorql]krqHEcrq-3[rpTjQroa:Bro*k3 +rn.5!rm1Scrl"fLrjVm4ri5sorh'1Vrf[8@re19$rdFcfrc.pTrb)4@ra5Y0r`T5$r_i_lr_NMdr_!/] +qa^WTr^?lJ+0A,^-?C]88OFT-RbJ,Y-#MZ/_:QN!ERUAh+jY5Yj. +])KMEa8X9]d/MVqg]$+0j8S3?l2L,MnG`"XpAXgcq#:0iquHZrrVcWmgAfe)rr2fnrquckrqQKdrq$-Z +rpTjOroa:Aro!e2rn7:urm(McrkeZJrj_s3ri?$prgs+Wrfd>?reLK)rd4Wfrc8!Trb;@Dra>_2r`fA' +r`&knr_NMer_*5_r^d#Yr^QcRr^?EHejAjmr]u*#PsBmcJO&?_r^"Cfqa:6Kr^H]Rr^ZrZr_!/_r_=!T`1G[Q2ZjDM>i2-J,X`mFoH@ZD#S,I@fBa6?2dt*Z@3k5OTDm/HJQo)A:\p\t!fqYU0jr;llqqu5=L +eGoFErquclrqZQgrq69^rp]pTrp0RIro="9rn[S)rmLelrlG)VrkJH@riuI)rhKIcrg`tNrf6u8rdk&t +rd4WbrbqdQrau.>ra5Y0r`T5%r_i_lr_NMer_*5_r^m)[r^ZrWqaLKPlpKu'eO'7$JO$G)JO"cOr^"(] +njE:Br^H]Rr^ZrYr^m)]r_*5ar_NMjr_i_sr`T5*ra5Y7rau.Hrc%jWrd4Wnrdk'+rf6u@rg`t[rhKIp +rj)O3rkJHNrlG)brmUktrn[S3ro="Arp'LNrp]pYrq69crqZQiqtpHm!WDuHs4%)Jrr2lqr;QQlq>U0g +pAX^`nc&"Vli-/JjSn-;hu;:-eGdhobPoN\_>_%F[JmB/W;`RkT)P&TOoC@>K`6Q%If=NiF8g+WC&V]C +@fBa6>Q.e)16Mj.C7/fXP7fGpW8H)3[ +9)_K_9`@fd;#XDmlJ+0@fC!=C&W&MF8g@^If=otK`6u1P5^dHT)PJ`W;a""[/RZ9_>_IRbPolf +ec+5#hu;X7jSnECm/HJQnc&1[pAXjdq>U6ir;QWprW3#teGn%urr2fnrql]krqZQerq-3]rp]pSrp0RF +ro="8rnIG'rmLekrlP/WrkABArj)O)rhf[frgNhOrf@&7re19#rd"Kcrc.pSrb2:Bra>_2r`fA&r`&kq +r_WSir_EGcr_!/]r^d#YqaUHOr^>O/r'Q$%L-gGXJO7sTg-ba*r^HTOr^ZrYr^m)]r_*5cr_NMir_rer +r`9#&ra,S3ral(Crb_XSrcS3crdXp"reUQ7rfmDNrh07friH+)rj_sArkn`Vrm(Mkrn%/(rnm_7roO.F +rpKdTrq$-^rq??erqcWkrr)fp!WN)Js4%)JrqlZnr;QTmqYp6gpAX^`nG_kTmJc>Kjo49=hYu7.ec*qp +bl5Z^_#D"G\,NW2X8]!qTDk;YQ2ZgCM>i2-J,XcnG5cI[D>n;LAH$$:?iF:/=oMM%;Z9Ml:]=,g:&[ic +9)D3Z8GbpP7efF@7/]K(6\.UU6\.VM6gmG<7JK@O8,GjV8c)-Z9`@cc:B"&g;>sJm=8lA%>Q/"/@fBp; +CAr&KE;k%[HiANoK`6i-NrG=CRf8rYVZ*XqYl;-2]DfVFa8X9]d/MSpg&Bk-ir8*>kl0uKn,DhUo`"O_ +p\t$gqu6NmrVc]rrr1FIeGoOIqu-Nlrql]krqQKdrq69]rp]pTrosFFroF(:rnRM*rmLekrlY5WrkABC +rj)O+ri5skrgj%VrfI,ZMq$+V#I%dSc4iP +OT(7=K`6Q%If=NiF8g+WD#S,IAH$!9?N+4/=T2A#sAj;#X5h9`@]a9))!W8GG^@7Y+$[7Y+$[ +7_D4c8,GjS8cD?]9E%Wa:&[ug:]=5j;Z9\q=8l>$>lJ(/@/a^9BDu`HDuOhWG5csiJc:?%NW,%=PQ%-P +U&LkeY5Y^*[Jmo>_>_FQcMl5jeGe2$h>Z@3k5OTDm/HJQnc&.ZpAXgcq>U6iqtp?krW)uHs3CZDrqlZn +r;QQlq#:$eo`"F\n,DbSli-,IjSn-;hYu1,eGdenbPoK[_#CtF[f3Q2X8\spT`1G[Q2ZmEMuJJ1Jc:)s +GlDgaE;j_RCAqfDA,]j7?N+1.=oMJ$<;ohq;>sDh:]=,g:&[i`9DD-F8bP`,8;p)j8:a=c8E3;:9)_K\ +9`@cc:A[id;#X>k;uTerQ.t.?iFO6Ac?HDD#SDQFT-RbIK"fsLAm,1OT(RFS,T)[VZ*XqZ2V32 +]DfVF`r=0\ci2Gnf`'b,iVqp;kl0lHmf)\So)A:\p\t!fqYU3irVQQos3gqms8N#prVl`oqYpsDk:]=,d:&%EJ9D2#08rQAn8qBUg9&iS>9`@c`:B"&g;#X>k +;Z9Vo<;oqt=8l>$>lJ(/@/a^9B)ZKCD>nMRErL@`I/\ZqLAm)0NrG:BRJrfWV#I@mY5Yj.\c0>B`;[mX +c2Q2kfDaP(hu;X7jo4NDm/HJQnc&.Zp&=acq>U6fr;QZlrW)uHs3CZDrqQHkqYU*fpAX^`oD\7YmJcGN +kPjTBiVq[4g&BS%d/M8gaSs!S]`,G?Yl:a'W;`IhSGnrUOoCC?MuJA.JGsurFoHI]DuOVQC&VcE@fBd7 +?iF=0>5hY'X2h:]=2f:]=,W:&I_:9SQ5l9S#mh9^GLN:A[id;#X8f;#X>h;Z9YplJ+0@K'a8BDuZFD>nJQErL4\IK"crKDpf.NrG1?RJrcVT`1nhXT#I'\Gj/?_#DFSbl5ugf)FA% +h>ZC4jSn?Ali->OnG`%Yp&=[aq>:$`rVQQos3gqjs8N#prVl`oqu6Hkp\smco`"@Zn,DbSlMfuGjSn*: +h#?"+df.Slc2P]]_Z%:K[f3T3YPtI!U]-nbR/WQ.h*=oMP&=8l8"$=oMV(>Q.t. +?iFI4A,^*>B`;lJDuObUGQ)pfIf=otLAm)0O8bCCR/W`WU].1jYPtm-[f4#?_>_FQc2Q)hdf.r!h#?72 +jSnBBlMg5Nn,DhUo`"O_p\t$gqu6NmrVQTjs3gqjs8N#prVl`oqu6Hkq#:!dp&=R^nc&"Vli-/JkPjH> +hu;F1f)F.tci2&c`;[RO])K/;Z2Ug'VZ*=hSGnoTPQ$UAMZ/D1Jc:,tHiA0eF8g+WD#S/JBDuH@@fBd7 +?iF@1>lIq+=o2>#=8l7t5he+?2e41@/a[8AH$6@ +C&VrJDuOeVFoHaeIf=otL]321NrG7AQil2L#J +n,DkVoD\F^p\sseqYpBkr;QZlrqcZCs3(HArqQHkr;QQlq>U0gp\sgao)A+WmJcDMkl0WAiVqa6f`'G# +dJhDiaSs*V^Ab\B[/R9.WrAmpT`1J\R/W6INrFt9K`6Q%J,X`mG5cR^E;jbSD#S)HB)Z?<@JaF2?2e+. +>Q.h'=Sl2!lJ%+?iFI4@K'g:Ac??AD#S>OE;jqXG5cdd +J,Y'!K`6o/NrG1?R/WWTT`1hfWrB4$[/RW8^Ac%LaSsH`dJh\qf`'e-iVqm:kl0lHmJcSRo)A:\p\sse +q>U6iqtp?hrqcZCs2G$;rqlZnr;QQlq>U0gp&=U_nc&%WmJcGNkPjQAi;VR3g&BP$d/M;hb5T9W^](nF +[/R0rUAgeaRJrKNOT(4Q%as>(Kh;=b0_,=l45\p>lJ%(?N+@3?iFL5@fBp;B)ZKCC]82MDuO_TF8g=]HiAHmJGt3#L]383 +OT(OERJriXUAh"gXo>U)[/R`;^])+Lb5TWad/MSpg&Bh,i;Vg:kPjfHmJcVSnc&.Zp&=acq>U6fr;QZl +rqHH@s2G$;rqlZnr;QQlq>U0gpAX^`oD\7Ymf)VQl2KiEir7j7g]#k)e,I_nc2P`^_Z%=L\c0#9Yl:[% +VZ*=hT)P/WPl?dDN;e\5KDpH$J,XcnGQ)aaEW0qVDuOPOCAqrHBDuNBAc?3=@f'U5@/++%?N"1'?%H7> +>_-.2>hWHU?1M>!?iFI1@K'a8A,^'=B)ZHBC&VlHC]88OE;jkVFoHXbHN&EnJc:<$M>iJ5OT(LDRJrfW +UAh%hWrB7%[Jm`9^]).M`r=6^d/MMnf`'Y)hu;X7k5OWEmJcSRnG`%Yp&=[aq#:*gqYU3irVQTgs3gqd +s8N#mrVl]nqYpnJQE;jnWF8g=]HN&PQ%$MSc5;]VuEarYPtm-\Gj5A +_>_FQb5T`de,Iqtg]$(/iVqsU6iqtU-erqHH@s2+g8rqlZnr;QTmqYpnAHCAV`EB_5s8BDuLoAVjuLAV"FKAc$*.BDZBAC%uH?D#S;NDu4MQ +F8g=]G5cgeI/AEmK)UK'MZ/S6OT(LDRJrcVTDkYcW;`t!Z2V-0]`,YE_>_OTbPolfeGe,"gA^"/ir8'= +l2L#Jmf)\So)A:\p\sseq>U6iqu6NmrVQTas3gqas7lTmr;QTjqYpZ.-f`'=ucMl#d`W!aR^](eC[f3Q2Xo>=!VZ*7fSc5)WPl?gENrFq8M#N/.K)U<"If=]nH2`$eFoHL^ +F8g1YE;jeTDY7lGD"MN@COp2SBn9uLC"I(fC\qrFD>S5MDuO_TEW1%YFT-F^GQ)meHiAKnJGt0"LAm#. +MZ/Y8OoCUERf8lWT`1hfWW'%!Z2V01\c0AC_Z%ORbPoiedf.nugA]q-iVqp;kPjfHmJcVSnc&.Zp&=ac +q>:$fqu6Ngrpg$:s1JC2rr2lqr;QTmqYp_1J])K/;Yl:d(X8\poU&L\`Rf8WPP5^RBNW+k8LAll*K)U<"If=`oHN&3hGlDjbFT-@\Er0kLE;+;K +Dh2e\DLl\VDV&e!Dt7lHEVjeUF8g:\FoHXbH2`-hI/\ToJGt0"K`6`*MuJ_8OT(FBQiZ@3jSn<@kl0rJmf)_ToD\F^pAXjdq>U6iqu6NmrVQT^s3gq[ +s8N#mrVQKkqYp6gpAXaao)A.Xn,D\QlMg#Hj8S$:hu;@/f)F+sd/M8gao93W_>_1J\Gil7Yl:d(WW&do +T`1P^SGniRPl?gEOT(7=MuJJ1K`6W'Jc:3!J,XorIK"WnHiA?jH2)X`G5$+[F`i7WK62ZdJTT:]qfVdZ +piud`rd+Qjrd=]nrdOirrdb!!re(3(reCE1rf-o=rfR2Erg*PRrgs+^rhf[oriQ1(rjDa8rkABIrkn`W +rlkAgrmLetrn@A/ro*k:roj@Hrp9XQrpg!Yrq69arqH#_rm:Ymrn%/'rn[S4roF(@rosFJrpKdT +rpp'[rq??crqQKhrql]mrr)Nhmf1`8\c;[.qu-Nlrql]krqZQgrqHEarq$-[rp]pSrp0RIroX4@ro!e3 +rn@A%rmUkmrltG`rl+lPrk8"df.Vmc2Poc +`W!dS^](tH]Df>>Zi790YPt['WrAsrV#I+fU&L_aT)P;XS,SlUR/<6LQ2[$@PQ$^FOn4]dOH5KSOF`MO +OS+b5P4b%O'Z2V*/\Gj)=^AbnH_Z%ORbPoccd/MJm +ec+2"h>Z=2i;Vj;kPj]Eli->OnG_tWoD\C]p\Xa_qYpBerVQTUs3gqOs8N#mrVl`oqu6Hkq>U0gp\smc +o`"C[nG_nUm/H;Lkl0]Cj8S!9hYu:/g&BM#df.SlcMl#daSs-W_>_4K]`,MA\Gil7ZMUm*Y5YO%W;`^o +VYd.fUAghVTD4uUSFE&"S!'7lRt7'kS*?IU0gpAXaaoD\=[nG_kTm/H;Lkl0`DjSn*:hYu=0g&BV&ec*tqci2/fao9?[`;[RO^](tH +])K5=\,Nc6ZMq*-YPYI$Wr&dpVuERdV>-hbU&^mL&YPtd* +Zi7?2\,Nr;])KGC^])%J`;[dUao9N`cMl5jec+2"g&Be+hYuI4jSn<@kl0lHli->OnG`"XoD\F^p\sse +q>:$cr;QZirnmb(s/Q+urqQHhqu6Hkq"sgbo`"I]o)A.Xn,DbSlMg#Hk5OB>iVqa6hYu:/f`'D"df.Sl +cMl&eb5TBZ`;[XQ_#D(I^&GVB\Gir6Zi790YktX'Y5YR&XSAjqWqWInWMtHIK;a@"JZ-tpql0ImpoFCq +riQ1&ric4'qm-4-rjMg9rjr*BrkJHJrkeZPrl+lZrlb;drm1Slrm^r"rn@A.rnm_6ro3q>roj@HrpKdS +rp]pXrq$-]rqH +JZs^0i3;mZo!88$qm?@1qmQL5rj_s +rkA-?mCe(`Q+V[\J\:$Ul+Qu.rkJ$>qni?Mrl+cSrlP/_rlkAerm1SjrmLeprmh#"rn7;*rndY3ro!e9 +roO.ArosFJrpB^Rrp]pWrq$-]rq69brqQKgqtgl,s"Kp!!E[ +qp,)cqpPAkrmgnurn7;+rn[J0ro="=roX4Croj@Hrp0RNrpTjUrpg!Zrq-3_rqHEerqZHfrqlTjrr)Wk +c2Z5lR/d0bq#13irqlThrqZQgrqHEcrq69^rpp'Yrp]pUrpKdOrp'LHroX4AroF(?+,i;;O5jSn9?kPj`FlMg,KmJcPQnG_nUnc&+Yo`"O_pAXgc +q#:*dqYpBhr;6Hirl"ibs-Z=/i;;O5j8S0;k5OTDl2KuFm/HDOn,DhU +nc&.Zo_\=\pAXgcq>:$fqtU*grUp0.s3gq.s82fgrVl`iqYp9ep\smcp&=U_oD\=[nc&%Tn,D_Rm/H>J +l2KoGk549;j8S'8iV;@1hu;R2htZ(,h1=C5h1=C5h9OjOhYZ40i;VX,i;V^4ir8!;jnn3;kl0iGli-8M +mJcSOnG_tWo)A7[o`"O_pAXg`q"X^_r;6Hcrk\W_s+^RQrqQHkr;6BdqYp9ep\smcp&=U_o)%tVnGD\R +mecDKli-2Hl2KoDkPjW:jRqR0ir%eeiJ-iUZ"*j7;:.k5OQ@kl0iDlMg,KmJH>Nn,)VRnb_nV +o`"O_pAXg`q"X^bqtp:$fqtU*[ +rj`!Vs+C@HrqQHkr;6BdqYp9bp\smcp&=U\oD\=Xnb_hTn,DhUn,DbPmIfi@lLa:$f +qt9m[rLj2=s+14Hs7lTgrVl`lqtU$bq>U0ap\sm`p&=U_oD\=XnbDVQn,DhIn+?%!mXaeWmXafFmdfiG +nG_nLnG_tWo)A7[o`"O\pA"CZq#:*aqYpBhr:p6cri,qGs+C@HrqQHkr;6BdqYp9bp\smcp&=U\oD\=X +nb_hTn,DhUn,DbPmIfi@lLapuq;3qrRn?J`VIEJ`VIE +eE-Acp#l,6q!%S>q!J(LqsaUTqssXVrq60^rqHd^BJ`55>o&BQ,o&T]1roa1Bros=Frp0RN +qsOIPqsaUTqssaYrq69arqHhs`P5kO\p&4mfqtp9drqQBbrq??`rq$-[ +rpg!WrpTjRrp9XMqs"+DroX+>qr@\8ro!\2rndY1p"]#irRh5)fn%e.fR_\+f[8@Ng$dYfh#?./hYuF0 +i;;O5j8S0;k54BAl2L#Jm/HDOn,DhUnc&+YoD\CZpAXg`q#:*gqtpU0gp\smcp&=U_o)A1Yn,DhUmf)VQli-2Kl2KlFk5OH@ir7p6i;;F/h>Z4/g@a.uf`'M%f(%8ke^`p6 +J^^+;J^]2!n'g=Ho%!`jrn%&"qq:l#qqV2,qqq;/qr7V9roO.BrosFIrp0RNrpKdTrpTjVrpp'\rq69a +rqHEerqZHfrqlTjqu-Ek`;e9cR/d0bq#13irqlThrqZQgrqHEcrq69^rpp'Yrp]pUrpKdOrp'LHroX4A +roF(ro3h5rndY0rn@A)rn.5$rmh"t +rmLenqp>>grm(Dcqonr\rlXuWJ]WJbJ]WJbbK9Y(rlauYrlt>cqp>5grm^qtrmq)$rn7;)rnRM/qr%J5 +ro=">roa:Frp0RMrpKdSrpg!Yrq-3_rq??cqtU0drqcWkqu$?irr1(?df5p=rr2]krqucmrqcNfqtL*` +rq-3\qsaURrpKdOrp'LHroX4@ro3q8rnm_3rnRM,rn7;$rm^qrrmC_lrm1Shqp##]rlY5^rlFlTrl4iS +qS^q&J]"V-J]!&VaMe(sqo8NRrlG)\qo\o]rlt>crm1SjrmC_orm^qtrn7;*rnRM0rnm_5ro3qrkn`Sqo8WWrlb;brm(Mhrm:YmrmUksrn%/&rnIG/rnm_5ro=">roX4Erp0RNrpTjU +rpg!Zrq-3_rqHEerqZHfrqlKhqu5(Edf6-Crr2]krqucmrqcWirqQKerq??`rq$-[rp]pTrp9XLroj@E +ro=";ro!e4rnRM,rmq)!rm^qqrm:Yirlb;`rlP/[rl+lSqn`9IrkJ?Dpq-O:qml^9pUBb'J[UWJJ[U-< +i3r!]qmcX9qmuR7rk8L&YPYR$ZMq30[f3f9])KDB^])%J +_Z%IP`W"$ZbPofdci2AleGe,"gA]t.hu;U6ir8*>kl0lHmf)\SnG`"XoD\C]p\Xa_qYpBerVQTLs3gqL +s8N#mrVl`oqu6Hkq>9pcpAX[_o)%nTm/H>MkPjWCj8S!9hYu=0f`'J$eGdhocMl&eaSs3Y`W!^Q^](qG +])K5=\,Nc6ZMq*-YPt['XT#7!WW&jnVuERgV#-q`U@=n.Tou+#Tn/p"U#r*KU\1G[VZ*LmW;`dqWrB+! +Xo>O'Yl;!.[/RQ6\c02>^&GeG_>_FQa8X0Zbl5oed/MPof)F>$h#?./i;Vd9jo4HBli-;Kn,DkVoDA7\ +p\t!fqYpBhr;6HlrnRP%s02P&rqQHkr;QTmqYpi;VU4g]#n* +eGdnqci25hbPoT^`;[UP^](nF])K5=[/RB.Yl:g)XT#0tVuERjU]."eT^n`MSc,)JS:R/mRt7&[S*$4) +SGo)VT(S`QT_kJ_U]..iVuEXoXT#@!Yl;!.[/RT7])KAA^])+L`;[jWb5T]cci2AleGe/#g]$(/i;Vd9 +jo4KClMg/Ln,DhUnc&1[p&=^bq#:*gqYpBkr;6Hirnmb(s0Mb)rqQHhqu6Hkq"sgbo`"F\nc&%WmJcGN +kl0`Djo43;hYu@1fDa>"df.Vmc2Poc`W!dS^](tH]Df>>Zi790YPt['WrAsrV#I+fU&L_aT)P;XS,SlU +R/<6LQ2[$@PQ$^FOn4]dOH5KSOF`MOOS+b5P4b%O' +Z2V*/\Gj)=^AbnH_Z%ORbPoccd/MJmec+2"h>Z=2i;Vj;kPj]Eli->OnG_tWoD\C]p\Xa_qYpBerVQTU +s3gqRs8N#mrVl]nqYp_4K]`,D> +[JmK2Yl:d(WrAmpV#I+fT`1P^SGnuVR/WHLQ2[$IP5CC@OSb+6Nr=q.N.HnJMh-e;Mr9N^N;/G4O8G%< +Oo(==Pl?sIQi^AbtJ`r='YbPoiedf.bqg&Bb*hYuL5 +jSn<@lMg,Kmf)\Snc&.WpAXgcq>U6iqtU-eroO1.s1/1)rqlZnr;QQiq>U-fpAX^`nc&%Wn,DYPlMg#H +j8S$:hu;C0g&BS%d/M>ibl5W]_u@IN^Ab_C\,N]4Yl:g)WrApqV#I%dTDkG]S,SiTQN!-JPQ$^DOT(=? +Nr+h8N;/;0M#2u+L4P)1L4P)1L:$cr;QZirojC1 +s1/1/rqlZnr;QTmqYpZ.-ec+%sci22gaSs0X_#D%H]Df2: +ZMq',XT#0tV>d1fTDkD\RJrQPPl?gEOT(:>N;eb7MZ/G2LAlo+K`6W'K):,oJGt&tJ,k(MIt<*#It<*s +J,XutJ+\?kJc:9#KDpQ'L&Ql,M#N;2MuJ\7NrG+=OoCUEQN!OnG`"XoD\C]p\sseq>U6iqu6NmrVQTXs3gqXs7lQiqu6Hk +q#:$epAX[_o)%nTm/H;Lk5OE?i;VU4gA]_'df.Slbl5]_`W!^Q^&GSA[f3N1Xo>C#V>d7hT`1M]RJrQP +PQ$^DO8b+;MZ/J3L]3&-L&Q`(K):)tIe\?jI/&'fH2r5AH%C6lH%C7jH2Dp_Hi&3fIK"]mJGt0"KDpT( +LAlu-M>iG4N;en;OoCRDQi_FQaSsE_ci2AlfDaM'hYuI4jSn<@ +lMg/In,DkVoD\I_p\ssbqYpBerTO:0s1JC2rqQHhqu6Hkp\smcp&=O]nG_nUm/H;Lkl0WAiVqa6gA]\& +df.Vmbl5``_u@LO^AbYA[/R=!VZ*7fT)P8ZQN!-JOoCIANW+k8LAll*KDpH$JGt&tIf=cpI/\Kl +HN&3bGlDm\FTHW-JTQNdJTQHbd<,8.qf_aZrd"Khrd4WlrdFcprdXotrdk'$re:?+repc8rfI,ArfmDJ +rg`tZrh07fri,n!rilC0rj_sArkSNNrlP/`rm:Ymrn%/'rnm_6ro="Arp'LLrpTjVrpp']rq??cqtg +rfd>Mrgj%]rhoarric=-rj_sArk\TQrlY5drmUktrnIG/ro*kqd]V7qdKA/nm;9#o3HoPO'I6@ +JR%,1raG\5raYq1raGe:ral(ArbVROrc%jXrc\9drdXp!re19/rf6u?rg<\Trh07fri5t$rj;[8rkABLrlG)`rmC_q +rn.5-ro*k:roj@HrpB^Rrpp'\rqHEerqZQirqlTkqu6Hldf7Mjrr2]krquclrqQKerq??^rp]pUrp0RJ +roX4=rndY/rmh"rrm1Sbrl"fOrjr*;riuI'rhf[grgj%Urfd>Breg]0rdaurrd+QdrcA'Wrb_XLrb2:A +raPk7ra5Y1r`oG,r`];(r`B)"oi:ujmSj$^r_e;EM,Ah$JPk6#qblcZqc*5gr`9#"r`T5(r`fA,ra#M1 +ra>_8rac"ArbDFLrbqdVrcS3drdFcrreCE0rf@&Brg<\Urh9=gri?%'rjDa:rkSNPrlG)brmLerrnIG/ +ro*k=roj@IrpTjVrpp'^rqHEerqcWkqu-EkqZ#"DbQ%S@qu-Nlrql]krqHEcrq-3ZrpTjSrp'LGroF(: +rnRM+rmLelrltG]rkeZKrjMg3ric=!rhKIbrg<\Krf@&9reCE'rdOimrce?]rbqdQrb2:BraYq8ra5Y2 +r`fA*r`T5&r`B)"r`/qsr_i;ar_NMipJ6?9JPUhmJPX?_r_WSir_W8br_i_or`/qur`B)$r`T5(r`fA. +ra5Y4raYq>rb2:JrbqdUrce?frdOitreCE0rf@&Crg<\WrhKIjric=-rjMg?rk\TQrltGhrmLf!rnRM2 +roF(Brp'LNrpTjUrq-3_rqHEgrql]mrr)`nqZ#"DcN!nCq#13gqt^6brq-3]rp]pSrp0RHroO.ra>_4r`oG+r`K/# +r`/qsr_iVjqb[8fr_WJfr_DlUr(V`9L.m.lJP=ZhlqR@PqbR2fr_NDfr_`Pjr`&ksr`9##r`];+ra5Y5 +raPk>rbDFLrbqdVrcS3grdb!#repc9rfR2Jrgj%]ri#gtrilC3rk/6GrlG)_rm:Yqrn7;,ro*k;roa:H +rpKdTrq$-^rq??eqtg*dqu-Tqdf7Vmrr2]krqcWirqQKcrq-3[rpTjQrp'LFro="8rnIG'rmLekrlP/X +rkABBrj;[-ri,mmrgs+Xrg!JDreg]0rdauqrcnE`rc%jRrb2:CraYq8ra#M-r`T5&r`9"tr_i_mr_WJf +r_E>bpe:QXnOe@)JP(JcJP*[Lr_*#[r_<8br_NDfr_`Ynr`&ktr`B)%r`fA-ra>_8rau.Crb_XRrcA'` +rd=]qreCE0rf@&DrgEbWrhTOmriZ7-rji$Brl"fXrm(Mkrn%/(rnm_8roX4Frp9XQrpg!Zrq69crqZQi +q#1*h!<:LIcN!nCqu-NlrqcWhrqHEarpp'WrpKdOroj@Bro*k5rn.5"rm1Serl+lPrk&0Crf-o1 +rdk&trc\9^rbqdPrb2:Ara>_3r`oG)r`9"ur_i_mr_NMir_EGdr_*5_pdtHUpdaX>JOY2[JOY2[]LMZd +qagTUr_!/_r_3;cr_WSir_`Ymr`/r!r`K/)ra,S3rac"@rbVRPrcA'^rdOitre191rfI,Crgj%^rhTOr +riuI1rkABJrl+l^rmC_prn@A-ro!e_3r`fA)r`/qsr_remr_NMgr_3;aqb$iZqagTSpdX^@rBu3)JOG&WJOIdOmm["@r^Z`Sr^luZ +r_*5ar_EGgr_WSmr`&ksr`T5)ra,S3rac"@rb_XRrcA'brdFcsreUQ4rfI,Irgj%^ri5t#rj2U9rkJHM +rlb;ermLeurnIG0ro="@rp'LNrp]pXrq69brqQKhrqlTkrr)otdf7hsrr2fnrqucmrqcWgrq??`rp]pT +rpB^KroO.=rndY.rmh"prlkA^rkSNGrjVm2ri?$qrh'1Yrg!JCre^W-rdXonrc\9[rb_XLrac":ra5Y/ +r`T5%r_i_lr_NMgr_#]rm:Yprn7;- +ro3q>roj@KrpTjUrq-3_rqHEgrql]mrr)fp!WN)Js4%)JrqlZnqu6Hkq>U*eo`"I]nG_hSli-#Fj8Rs8 +g]#e'df.Pkao93W^AbYAZMps)VZ*7fRf8TOO8at7K`6K#H2_scEW0hSB`;TB@/aI2>Q.\&<;ohq;#X8i +:B!oc9)_E]8H)-V7f,XR7,10-6\.RY6@hIS6J"QX6i0:N7JK@O8,c'Y8cD?]9E%]c:]=2i;uTer& +?N+@3Ac?ECD>nPSFoH[cJ,Y*"M#NJ7Pl@-NT`1hfXT#O)\Gj5A_u@aVcMl8kfDaP(hu;X7jo4TFmf)_T +oD\F^pAXmeqYpBkrVc]rrr1FIeGo=Brql]krqZQdrq-3[rpTjQrp'LDro*k5rn.5#rmC_grl+lPrjr*: +ric="rhKIbrg*PGrf-o2rdk&srcS3\rbqdMrau.=ra,S.r`T5"r_i_lr_NMfr_3;`r^m)[r^ZrWpdP0M +fgG[)g-U?VX[.M(JO.mSe3j+$qaLKRr^ZrYr^m)]r_3;cr_NMir_reqr`T5)ra,S5rau.DrbqdVrcS3g +rdk'&rf-o?rg*PUrhKIkric=.rjr*Erl4r\rmC_qrn.5,ro*k;rp'LLrpTjVrq$-^rqZQirqlQj!WDuH +s4%)GrVl`oqYp*pT`1J\P5^L@MZ/2+ +If=]nErL"VD>n/HA,]j7>lIn*=8l+s;#X8i9`@]a9)_E]8H)-Y7f,XR7-m;)6IeF%6%M;*5_21O5lO'[ +6LmM@7/fXP7fGpW8H)3[9)_K_9`@ie;>sJm=8lA%>lJ+0A,^*>D>nMRErLFbIf=otMZ/Y8P5_!NTDkVb +Xo>X*[f4&@`;[jWci2Dmf)FM)i;Vd9kl0lHmf)_ToD\F^q#:*gqYU0jr;llqeGn/#rr2fnrquclrqQKe +rq-3\rpTjQrosFEro!e3rn@A#rm:Yhrl"fNrk&08riQ1!rh07[rg!JDre^W-rdXomrcS3ZrbVRIraPk6 +ra#M*r`/qrr_WShr_3;`r^m)[pdY6NlpKYsn3[+?JO#JcJO"cOk!8o3b_7rb2:Irc%jZrd+Qnre19.rf@&DrgWn[ri,n"rj)O8rkSNOrltGhrmUl#rn[S3roX4D +rp9XQrpp'\rqHEfrqcNi!;ursrVQTJs4@;Mrr2lqr;QTmq>U0gp\sd`nc&"VlMfuGjSn*:h#>t*df.Pk +b5T6V^&GP@Yl:^&VZ*1dRJrELN;eV3K)U/sGQ)X^DZ4DMB)Z3;?2e%,sAj9`@]a8cD9[8,c!T +7Hm1s6L[>@6%M:d5_21O5it?26-DU]6iKOO7fGpW8H)3[9E%Zb:]=5j<;oqt>5hh,@/ad;C&W#LErL:^ +I/\`sL]383PQ$sKT)PVdX8]@&\Gj2@_>_UVcMl8kf`'Y)i;Vg:kl0lHn,DkVoD\L`q#:*gqu6Knr;llq +qu5=LfDkjLrr)iorql]irqHEcrpp'XrpKdMroa:@rnm_/rmq(qrlkA^rkSNFrjDa.ri#gjrg`tRrfI,: +re:?$rd"KbrbqdOrb)4?ra5Y/r`T5#r_i_kr_#]rm:YqrnIG0ro="?rosFMrp]pXrq??crqQKirqlcp!WDuorn@D+s8N#srVl`oqu6Hkp\smc +o`"C[n,D\QkPjTBiVqX3f`'A!ci2&c`;[IL\,N]4WrAjoTDk2VP5^L@K`6N$IK"?fEW0kTBDuH@?iF=0 +=oMJ$;Z9Ml:]=#d9)_EZ8,c!W7.N^l6Ms0$5__OT5_22P5g)Le6i0:K7fGpW8cD?]9E%`d;>sJmlJ+0A,^-?DZ4YTFT-^fJc:?%NrG4@Qi#Trk&0; +rilC#rhBC_rfmDCrepc-rdOimrc8!VrbVRFraPk5r`];&r`&knr_EGer_!/]r^d#Yr^QlUmmGSkrB^?I +JO"rTJO"cOf0K*se3`Ukr^HfUr^ZrYr^m)]r_ZOoC@>M#Mr(I/\?hE;j_R +CAq`B@/aI2=T2>";Z9Ml:B!rd8cD9[8,c!W7K,^G6d\7!5_21O5_21O5gDX?6M3_F7/fXS7fGpW8H)3[ +9`@cc;#XAlS,T)[V#IOrZi7N7^])4ObPoieeGe/#hu;X7 +jo4TFmJcVSo)A=]p\t$gqZ-Npr;?Qmrr1XOh>dKRqu-NkrqcWirq??`rpg!Vrp0RIro="9rn[S)rmLel +rl>#UrkAB=ric=$rh9=]rg*PEre^W,rdOilrcA'WrbDFEra>_2r`];$r_remr_EGdr_!/\r^ZrWr^HfS +og@G"r^$'>JO"cOJO"cO_Ee)dg-YI"r^?`Sr^QlWr^d#\r_*5cr_WSmr`/r$ra#M2rau.ErbqdWrcnEk +re19.rf@&Erg`t]ri5t$rj;[=rkeZTrm1Smrmq))ro!e9roj@IrpTjVrq-3`rqZQi!;cfoqu6Qkrn[V1 +s8N#prVl]nqYph&d/M;h`W!^Q]`,59Xo>6tT`1DZPl?[AL]2l(HiA3f +EW0hSB`;N@?iF:/=oMD";Z9Jk:B!oc8cD6Z7f,XR7.iq$6N0:@5_21O5_21O5f,ec6/"Zu6iKLN7K,dU +8,c*Z9E%]c:]=8k<;p&">lJ+0A,^0@D>nPSG5cjfK)UT*NW,1ARf8uZVuEgtZMqN9_#D=Pc2Q,ieGe8& +hu;X7kPjcGmf)_ToD\F^q>U3jqZ6Tkrr)`nh>c=2rr2fnrqcWirqQKbrpp'WrpB^Lroa:=rn[S.rmUkn +rlkAZrkJHCrilC&rhf[drg<\Jrepc0rdXomrcJ-XrbMLFraPk5r`fA(r_renr_NMer_!/]r^QcRr^?EH +f0]I&nN_XjJO"cOJO%(;r^#%#qa:6Kr^H]Rr^m)^r_3;er_`Ynr`K/'ra,S5rb)4GrbqdXrd"Kmre:?0 +rf[8Jrgs+dri?%&rji$Brkn`Zrm1SmrnIG/ro!e=rp'LMrpTjWrq-3brqQQj!W)ZlrVQTMs5!_Srr2lq +r;QQlq#:$eo`"F\n,D\Qkl0]Ci;VO2g&BCuc2Pia_>_+H[f3K0W;`OjRf8TOO8at7KDpB"FoHF\DuODK +AH$!9>lIk)sSp=T2S)@/a^9BDuiKErL4\J,Y*"M#NJ7Pl@-NUAh.kYPu!0]`,bHao9QadJhhuh>Z@3jo4KCm/HJQ +o)A:\p\ssgq>pHhrqucorr1aRh>dBNrquclrqQKerq$-ZrpTjOroa:Arnm_0rn.4srlkA_rkSNFrjDa- +rhoahrgEbLrf6u4rdk&rrcJ-YrbVRGraYq7r`fA'r`/qor_EGer^m)[r^ZrVr^?EHj$NW/i]r&[JO"cO +JO$P,r^#I/ogA^Hr^HfVr^d#[r_Lrh9=hriQ1- +rk&0FrlG)_rm:YsrnIG0roF(Brp'LOrpg!ZrqHEf!;Z`mqYU3irS@M0s82cor;QQlq#:$eoD\:Zmf)JM +kPjN@hYu7.ec*qpbPoN\^](eCZi7$)V#I"cQN!$GNW+V1J,XfoErKtUC]7lD@K'U4=T2A#;uTVm:B!rd +8cD9[7fGjU7.iq-6N0:.5_21O5_21O5d3NQ6/t<)6iKLQ7K,dU8,c*Z9`@cc;#XDmpHhqu$Hl +h>c=2rr)iorql]jrqQKdrpg!VrpB^KroO.rilC#rhKIarfd>Breg]+rdFcj +rc%jQrb;@@ra5Y0r`B)!r_`Yjr_3;ar^d#Yr^QlTog@b+fg(*RJO"cOJO$5#i'R<.qaCEQr^ZrYr_*5b +r_NMjr`&kur`oG0raPk@rb_XRrcnEirdk'+rf6uArgs+`ri#h#rjVm?rl"fXrm(Mlrn.5+ro*kU9jr;QZNs5!_SrVl`oqu6Ejp\sjbnc&"VmJc;JjSn*:h#>q)df.MjaSs*V]Df5; +YPtI!U&LS]P5^I?M#Mr(HiA0eE;j\QB`;H>?N+1.Q.t.@K's>C]8;PFoHaeJGtB(NW,+?SGo5]VuEn![Jmf; +_u@aVc2Q/jfDaS)i;Vg:kPjlJn,DkVp&=[cq#UdKQrqucmrqQKdrq69\rpTjQroa:A +rnm_0rmq(srlkA^rk\TFrj;[.rhTOcrgEbIrepc1rdXomrcJ-XrbDFEra>_2r`];$r_relr_'oSc4uTOT(.:KDp8tGQ)X^D>n5J +A,]m8>lIk)<;oep:]=)f9)_E]7fGjU7/0.06N0:%5_21O5_21O5c6mH6/t<,6iKLQ7K,dU8cDB^:&[rf +;Z9Yp=T2P(@/a[8B`;lJErL:^I/\ctM>iV9Qira,S.r`K.ur_`Yjr_*5_r^m)Yr^HfSpd=(.r^#+#JO"cOJO"cO +Va15Ij$NN.r^?`Sr^QlYr_!/_r_NMjr_reur`];-raPk>rbVRSrce?grdt-*rf6uDrg`t]riH+(rjMg@ +rl"fYrm:Yprn.5-ro3q=rp0RNrp]pYrq-9c!Vc?fqYpBkrVQTSs55hk-@fC$>C]8>Q +FoH^dJc:H(NW,4BRf8uZWW'+#[Jmr?`;[jWci2DmfDaY+iVqs_1r`T5$r_i_kr_sAj:&[``8H)-Y7K,^M6g6r:6-VZG5_21O5_21l +5lO(36Mj.L7/fXS8,c'Y8cDH`:]=5jlJ.1AH$6@DuOhWGlE3lK`6l.P5^jJT)PVdXo>X*^&GkI +`W"-]dJh\qh>Z@3j8SU*eoD\7Ymf)POkl0T@hYu:/e,I_nbl5NZ^](hDYl:[%V#Hn`QMusEM#N&+If=KhEW0hSB)Z<>?iF:/ +=8l5!;#X5h9`@W_8H)*X7/K@36N09q5_21O5_21O5b:7?6/t<26i0:N7fGpW8cDE_:B")hQ/"/ +A,^*>D>nPSFoHjhK)UT*O8bFDSGo>`X8]@&])KGC_u@mZci2Dmg]$+0ir80@lMg5NnG`%[p&Xm\rqZQj +rqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp'LGro*k5rnIG$rm1Serkn`Lrj_s3ri5snrgWnOrf@&5 +rdk&srcS3[rb_XGraPk6r`T5%r`&knr_EGdr^m)[r^QlTqa9^:og-hfJO"cOJO"cORm?j:ksGA:qaCEQ +r^ZrZr_3;cr_WSnr`B)%ra5Y6ral(Grc.p[rdFctreCE5rg!JPrhTOnrilC3rkABLrlb;ermUl$rndY5 +roa:GrpKdTrpp-_!VQ-bq>U9jr;QZoro=%=s8N#srVl`oqYp +5_21O5_21c5lO(96N0@L7/f[T8,c*Z9`@cc;#XDmZC4kPjcGmf)_To)SFap%A=[rql]mrr)iqj8\0>rr2oqrql]krqZQdrq$-Y +rpB^Lroa:=rnRM+rmUkmrlb;Xrk8U'doD\7YmJcALkPjE=h#?"+e,I\mbPo?W^&GM?Y5YC!UAgV\PQ$R@K`6K#HiA*cDuOPOAH$$: +?N+(+_>_XWci2Dmg&Bh,i;Vp=lMg2MnG`"Zo`=aYrqZQirql]n +rr1sXj8],Xrr)inrqcWhrq69^rp]pSrosFDro!e2rn7;!rm(Mcrk\TIrjVm0ri#girgEbKrf-o1rdXoo +rc8!UrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSl +r`9##ra,S4rac"DrbqdVrd4Wpre191rfd>Lrh9=hriZ70rk/6HrlY5crmLf!rnRM2roO.DrpB^Srpp-_ +!VQ-bq#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\nG_eRl2KiEi;VO2g&BCucMkuc_>_+H[f3H/VuE@g +R/W9JNW+S0J,XcnErKtUCAqcC@/aI2=T2>";>sAj9`@]a8H)*X7JK7=6G>^95_21O5_21]5jq&76iKOR +8,c'Y9E%Zb:]=5jZ@3 +k5OTDm/HMRo)SC`o^r.XrqZQjrr)iqj8\0>rr2oqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/U +rk/6=riZ6urh07Xrf[8?re(3"rd+Qarbh^Mrac"9ra#M*r`/qpr_NMer_*5\r^QlUpd=L:^-I67JO"cO +JO#8]mm?e:r^HfUr^Zr\r_U9jrVlfVs5X.Yrr2lqqu6Hkq#9pbo)A.Xm/H8Kjo43; +h#?"+dJhDiao9*T]Df8XP5^I?KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'g:CAr,MErLCaIf>!!NW,+?R/WcX +VuEju[f3r=_#DITc2Q,ig&Be+i;Vj;kl0rJnG`"ZoE"UVrqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\ +rp]pRrosFDro!e2rn7:urltGarkSNFrjMg/rhoagrg<\Jrf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yj +r_3;`r^ZrWr^HTLmm=`RJO"cOJO"cOO$N/#pd>$Lr^QlWr_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qm +re(30rf[8Jrh07griZ7/rk/6GrlP/armC_urnRM2roO.Crp9XRrpp-^!VH$`q#:*gqu6Qnro=%=s8N#s +rVl]nqYp9ho`"F\nG_eRl2KfDi;VO2g&BCucMkuc_#CtF[f3H/VuE@gR/W9JNW+S0J,XcnErKtUCAqcC +@/aI2=T2>";>sAj9`@Z`8H)*X7JK7=6G>^95_21O5_21]5jq&76iKOR8,c'Y9)_N`:]=5jrr2oqrql]krqQKbrpp'Xrp9XKroX4U9jrVlfVs5X.Yrr2lqqu6Hkq#9scoD\7YmJcALjo43;h#?"+df.Pkb5T6V^&GM?Y5YC! +U&LJZP5^I?K`6K#HiA'bDZ4GNAH$$:?N+(+_>_UVcMl8kg&Be+ +i;Vj;l2L)LnG`"Zo`=aYrqQKgrql]nrr1sXj8],Xrr)inrqcWhrq69^rp]pSrosFEro!e2rn7;!rm(Mc +rkeZJrjVm1ri#girgEbLrf6u2rdXoorc8!UrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdVrd4Wpre192rfd>Lrh9=iric=1rk8";Z9Ml:&[fb8H)-Y +7ef@>6G>^95_21O5_21]5jq&76iKRS8,c'Y9E%Zb;#XAlZ@3kPjcGmJcVSo)SFap%A=[rqcWkrr)iqj8\0>rr2oqrquclrqZQd +rq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8<@rilC%rhKI]rfmDCre:?&rd=]erc%jQral(rp'LNrp]pY!;-Bcp&=ddqu6Nm +rVlfVs5X.Yrr2lqr;QQlq>U*eoD\7Ymf)POkl0T@hYu7.e,I_nbl5KY^Ab_CYl:[%U]-b^Q2ZjDL]2l( +IK"?fE;j\QB)Z9=?N+.-=8l1u;#X5h9`@W_8H)*X7/K@<6M3Xh5_21O5_21O5at%960U`86i0:N7fGpW +8cDE_:B")h<;otu>5hk-@fC!=D#SDQFT-^fK)UQ)O8bFDS,T2^WrB7%])KGC_Z%dYci2DmgA]t.ir80@ +lMg5NnG`%[p&Xm\rqZQjrqucorr1sXj8],Xrr)iorqcWirq??_rp]pTrp0RIro3q6rnIG$rm:Ygrkn`M +rjr*5ri5snrg`tRrf@&7re(3!rcS3[rb_XHraYq7r`fA'r`/qor_EGdr^m)[r^QlTqa9C1r^"doJO"cO +JO"cOSj<9@j$N`4qaCEQr^ZrZr_3;dr_WSor`K/(ra5Y7rau.Hrc.p[rdOiureUQ7rg!JQrhTOorilC5 +rkABLrlkAfrmUl$rnm_7roj@HrpKdTrq$3a!VZ6dq>U9jr;QZoro=%:s8N#sr;QTmqYp3fo`"C[n,DYP +kl0T@hu;F1ec*tqc2P]]_>_+HZ2Uj(VZ*.cQi<-HM>i/,If=NiErKtUBDuH@?iF=0=T2>";>sAj9`@W_ +8H)*X7.iq36N09q5_21O5_21O5b:7?60:N26i0:N7fGpW8cDE_:B",ilJ+0A,^-?DZ4\UG5csi +KDp`,OoC^HSc5McXT#L(]`,_G`W"-]dJh\qh#?41ir80@li-APnc&.\p&Xm\rqcWkrquZmj8\';rr2op +rql]krq??`rpg!Vrp0RIro3q7rnRM(rmLekrl4rRrk/69riQ0trgs+VrfR2;re19#rce?_rbqdLrac"9 +r`oG*r`9"rr_NMer_!/\r^QlTog@t1r^"doJO"cOJO"cOSj<9@k!Jr4qaCEQr^d#\r_3;er_i_rr`K/) +ra>_:rb2:LrcA'_rdXp#reg];rg3VUrhoatrj)O9rk\TRrm(Mkrmq)(rnm_7roj@IrpTjVrq$3a!VZ6d +qYpBkr;6KRs5Z")df.Sl`rlIn*Q.b( +;uTYn:B!rd9)_B\7fGjU7/K@06N0:%5_21O5_21O5c6mH6/=m,6iKLQ7K,dU8H)6\9`@fd;#XDm=T2P( +?iFR7BDu`HEW1.\HiAWrM#NG6QN!ERU&M+lZ2V63^])1Nao9WceGe,"hYuL5jo4QEmJcVSo`"L`pAt$_ +rqcWkrr)`nj8\';rr2oqrquclrqHEcrq-3ZrpB^NroO.>rnm_/rmh"prlY5ZrkJHBrj)O*rhBC_rg3VG +reg]-rd=]hrc8!Trb2:@ra>_1r`K/!r_i_kr_5he+@/ad;C]88OFT-UcJ,Y3%MuJh; +RJriXV#IRs[/RZ9_>_IRbl6&ifDaP(hu;[8kPjiImf)bUp&=[cp]:0brql]mrr([Qh>dKQrqucmrqQKe +rq??]rpTjQroj@Cro*k3rn.5!rltG_rkeZIrjMg0rhf[frgWnLrf-o5rdauprc\9[rbVRIraGe4r`fA& +r`&kor_EGdr_!/\r^ZrWr^?WNj$NW/fg(*RJO"cOJO$5#r^#I/r^6QNr^QlWr^d#\r_*5cr_`Yor`9#& +ra,S4rb2:Hrc%j[rd4WpreUQ5rfR2Lrh07fric=/rk/6IrlG)`rmUkurnRM3roO.Crp9XPrpg!]rq?Ef +!VlHhqu6NmrS@M0s8Murr;QTmq>U0gpAXU]n,D_Rkl0]CiVq[4f`'A!cMkrb`;[IL[f3N1W;`RkT)OrQ +O8b%9Jc:)sGlD[]D#S/J@fBa6>lIh(!+6i0:N +7fGpW8H)9]:&[rf;>sPo=8lJ(?iFO6C&VuKE;k+]I/\]rMZ/Y8PQ%0QUAh+jYl;-2^&GtLao9Tbe,J#! +h>ZC4jo4KCmJcSRnc&7]pAk!iq>($erqucoh>c=2qu-NlrqcWhrqHE`rpg!UrosFFro="7rn@A%rm:Yf +rl4rPrji$7ri?$orh'1UrfR2>re19#rd4Wbrbh^Nrac":ra,S+r`9"sr_WShr_3;_r^d#Xr^HfSog@b+ +r^#F,JO"cOJO"cOYX&1Rj$NE+r^?`Sr^QlWr^m)_r_n,G@fBa6 +=oMM%<;o_n:B!rd9)_BY7fGjU7/0.06Mj(.5_21O5_21O5dN`T6/Y*)6iKLQ7JfRR8H)6\9`@fd;#XGn +pHhrqucorr1aRh>dKRrr)iorqcWhrqHEarpp'Wrp9XJroO.;rnRM+rmC_irlP/Urk/6=ric=" +rhBC\rg!JDreUQ+rdXoirc8!Vrb)4@ra>_1r`K/"r_`Yjr_5pd>$Kr^HfUr^ZrZr_!/ar_NMjr`/r"r`oG1rac"@rbqdVrcS3ire(3+rf@&CrgNh\ri,n#rjMg= +rk\TUrltGirn7;,ro!e;roj@JrpTjWrq-3arqQQj!W)Zlr;QZorn[V1s8N#prVlZmq>U0go`"F\n,D_R +l2KlFi;VR3g]#\$d/M8g_u@FM\c/i4X8]!qT)P,VP5^C=L&QT$H2_pbDuOPOB)Z9=?N+1.=T27u;>sAj +9`@Z`8cD3V7K,^J6e=[(61I3k5_21O5_22;5lO(!6Mj.I7/fXP7fH!Y9E%Wa:]=5j;uTnu>5hk-@fC$> +C]88OFT-RbJ,Y0$MuJn=R/W]VVZ*XqYl;34^Ac%Lbl5rfe,J,$hYuI4kPjcGmJcSRo)A:\q#:'hq>pHh +rr)`nh>c=2rr2fnrqcWirqQKcrq-3[rpKdOroj@@rnm_1rmh"qrltG]rkSNFrj)O*ri#ghrgNhNrf$i3 +rdt,rrc\9]rbVRIrac"9r`oG*r`&kpr_NMfr_*5_qa^WTr^?EHf0]I&nN_XjJO"cOJO%(;r^#%#qa:6K +qaUQTr_!/_r__9rb2:Irc8!^rd4WrreLK3rfmDNrh07hriZ7+rk&0Frl+l]rmC_q +rnRM1ro3q@rp'LNrpg!Zrq69crqQQj!W)ZlrVQTMs5!_SrqlZnqu6Hkq>U*eo`"C[n,DYPkl0WAi;VR3 +f)F+sci1ua_u@CL[/R9.WrA^kSGniRO8b"8K`6H"H2_maDuOMNB)Z3;?2e%,5hh,@/ad;CAr/N +F8gF`If>$"MZ/\9QN!ERU&M(kYPtp.^Ac"Ka8XEae,Iqth>Z@3j8S9Ali-APnc&1[pAXmeq>gBnqtpBk +qu5FOgAh0Orr)iorql]krqHEbrpp'XrpB^NroO.=rnm_.rmh"orlb;[rkJHCrj2U,rhTOcrgWnLrf-o5 +rdauqrce?\rb_XLraYq8ra#M*r`/qqr_WShr_3;_r^d#Yr^QlUr^?_8rbDFKrc%j\rd4WpreUQ5rfR2Lrh07driZ7,rji$Crl+l[ +rm1Snrn7;.ro3q=rp0RNrp]pXrq69brqcWk!;llqr;QZorn@D+s8N#srVl`oqu6Hkp\smco`"@Zmf)SP +k5OE?i;VL1f)F+sbl5Z^_Z%1H[JmB/VuEChSc4lQO8b(:K)U5uHN%saDZ4GNAc?0sAj +:&[ca8cD9[7f,XR7.ipp6N'4J6%M:U5_21O5hA9r6-_go6i0:N7JfRR8H)3[9)_Qa:]=5j/J,X`mFT-4XC]7uGA,]j7 +>Q.e)@6%M:d5_21O5it?26,Gt]6iKLQ7JfRR8,c*Z9)_K_ +:&[rf;Z9\q=oM\*?iFR7BDu]GDuOkXH2`_;rb;@K +rc8!^rd4WrreLK3rfd>Krgs+cri?%&rj_s@rkeZWrltGirn7;+ro!e:roj@HrpTjVrq$-_rqHEfqtpHm +!WDuorn@D(s8N#prVl`oqYp9hp\sgao)A+Wm/H8Kk5O<Z.-e,I_nc2PZ\^](kEZMq!*WW&RiS,S]P +O8b"8K`6K#H2_scE;j\QB`;K??iF@1=T2>";uTVm:B!rd9)_E]8GG[R7-m:u6L[>@6%M:d5_21O5it?2 +6-DUc6i0:H7fGsX8cD?]9`@fd;#XDmU6fquHZrrVcWmgAf\&qu-NlrqcWirqQKcrq$-Y +rpKdOroj@Aro!e3rmq(srm1Sbrkn`MrjMg2riQ0prh07\rf[8@reg]+rdOinrc8!Vrb_XHraYq7r`oG* +r`B(sr_WSir_3;ar_!/]r^d#Yr^QcRr^?*?kX*fdr]u*#YX!b)JO'3#\O,jSqaCEPqaUQTr^d#[r_!/_ +r_3;er_`Ymr`B)%r`oG0raYq>rb_XRrc8!brdOitreg]8rf[8Nrh'1briQ1*rjMg@rl"fWrm1Smrmq)) +ro!e9roj@HrpKdTrq$-^rqQKgrqcNi!;ursrRCkss8N#srVl`oqYprnm_0rmq(srm(Mbrkn`L +rj_s5riH*rrh07Zrg!JDreUQ,rdXomrcS3[rb_XJral(:ra#M-r`9"tr_remr_NMgr_*5_r^m)[r^ZiT +qaLKPgdD!,JO5)XJO4oSf0\1YqaCEPpdY6Qr^d#[r_!/_r_EGgr_WSmr`/qur`fA.ra>_:rb;@Krc.p[ +rd"Kmre(3+rf@&CrgNhZrhf[rrj)O5rkABLrlG)armLetrnIG0ro3q=rp0ROrp]pYrq69arqZQirql]n +rVcisrm^tts8N#prVl`oqu6Hkp\smco`"@Zmf)VQkl0]Cir7g6gA]Y%d/M8ga8WmR]`,D>Yl:^&VZ*4e +Rf8TONrFn7K`6K#HN&*eE;j_RCAqcC@K'X5>Q.e)=8l+s;#X8i:B!ue9`@Z]8cD9X8,,RK7INYC6\.UU +6\.UU6dA'f7/04G7fGpT8H)3X9)_N`:&[oe:]=5j;Z9bs=oMY)?iFO6AH$?CD#SDQG5cjfJ,Y-#M>iP7 +Q2[6OTDk_eX8]@&\,O#=_#DCRbPolfec+8$hYuO6k5OTDmJcSRnG`(Zp&=^bqYpBkr;QZnrW3#teGn%u +rr2fnrqucmrqcWhrq??arpp'XrpKdMroa:Aro!e2rn.4urm(McrkeZKrjr*7riZ7#rh9=^rgEbIrf$i5 +rdk&trd+Qbrc%jRrb)4AraGe5r`fA)r`9"tr_i_lr_EGer_32^qapcXpdb*KlU?@nJOP,YJOR4?pdY$K +qag]Xr_*,^r_U0g +pAX[_o)A+Wm/H8Kk5O<Z.-eGdkpcMkf^_Z%:K[JmK2Y5Y6rT`1M]PQ$[CNW+V1Jc:,tG5cR^DuOSP +B`;QA@/aL3>lIk)sJm^V#IOrZ2V01^AbtJ`W"0^ +dJhYpgA]q-i;Vmd.eS,S]POT(1;LAlc'IK"KjFT-7YD>n;LAc?3=?iFC2 +>Q.e)sMnU6fr;QZlrW)uHs3CZDrqlZnr;QQlq>U0gp&=U_nc&"Vli-/Jjo4<>hu;C0 +fDa7uc2Pf``;[LM])K,:Y5YF"V#HtbRJrHMNrFq8LAl`&I/\EjErL"VD>n5JB)Z??@/aL3>lIk)=8l8" +<;ohq;Z9Pm;#X8i:A[c\9^>@F97]]o8qBTc9%lnt9DD3[:&@]b:]=2i;>sJm;uTbqU*eo`"I]nG_hSli-)Hjo46Z+,f)F%qbl5]_ +_#D"G\Gi`3XT#0tT`1J\RJr?JNrFt9KDpE#IK"BgF8g+WD>n8KBDuB>@/aO4>lIq+=T2A#g +;#X8i;#=&f:@:jS9n>um9S#lg9\2u):&@]_:]=2i:]!uf;>X8j<;ons5he+?iFL5@fC$>CAr)L +DuOeVFoHggJGt3#MuJb9OoCdJSc5;]W;`mtYl;03]`,_GaSsE_d/MVqg&Bh,iVqp;kPjfHmf)_ToD\F^ +pAXmbqY:$drW)uHs3(HArqlZnr;QTmqYp6gpAX^`nG_nUmf)MNkPjQAi;VO2g&BG!ci22g`W!aR^AbS? +ZMq',VuEIjTDk5WPQ$XBMZ/A0Jc:,tHN&-fEW0nUD>n5JAc?3=@/aO4?N+1.>5h\(=T2D$sAj;"mb::Ou;m:Ou<_:]=2i:]=2`;>sJm;uTer5hb*?N+=2@/a[8B)ZKCD>nJQEW11] +HN&BmJc:E'MZ/\9Pl@'LTDkVbVuEn!Zi7E4^AbtJ`W"-]d/MJmg&Be+i;Vg:kl0lHmf)\SnG`(Zp&=^b +qYpBkr;QZlrqcZCs3(HArqlZnr;QTmqYp9hpAXaaoD\:Zn,DYPl2KlFiVqa6h#>n(e,I\mao96X_#CqE +[f3Q2X8]!qUAg\^R/W5h\%=T2D$lJ%.?iFI4A,^$lIt,>5MG!=8l7gQ.n,?2J".@/aU6AH$0>BDu`HDZ4VSF8g@^H2`B_u@aVc2Q,iec+5#hu;U6j8S9AlMg2Mn,DnWo`"Uaq#:*gqYpBhrVQTjs3gqds8N#p +rVl`oqYpZ+,ec*qpc2Plb_Z%=L]`,;;Yl:d(V>d4gTDk8XQ2ZmE +N;eY4KDpE#IK"TmFoHI]E;jeTD#S5LB`;WCAH$';@K'X5@/aO1?N+70>jknq>4YpK=cZ^:=b0`6=moP_ +>Q.n,?2.b*@/aO4@K'a8AH$3?B`;fHD>nJQE;jqXFoHaeIK"crKDpZ*N;eqdUrZ2V-0 +]`,\F_Z%^Wbl5ugec+8$h>Z@3jSn?Ali-;NnG_tWoD\F^q#:*gqYU3irVQTgs3gqds8N#prVl`oqYphu;C0f`'A!d/M;h`ri/, +Jc:/uHN&-fFoHC[E;jeTC]8)JC&VcEB)ZB@A,]s7@K'[0?hIb(?1qQT>`;p=>_-/6>kMCn?Me+/@/FC3 +@fBm:Ac?<@BDuWECAr#JDuO_TEW1+[GlE$gJ,Y#uKDp`,N;eql2L)Ln,DhUoD\F^pAXjdq>U6fr;QZlrqHH@s2G$;rqQHkqu6Hkq>U-fpAX^` +nc&%Wn,DVOkPjTBiVq^5g]#e'e,I\mb5TE[_>_1J\c/r7YPtR$VuE@gSc5)WPQ$^DNrFk6L&QZ&JGsur +HN&'dFT-=[E;jbSD>n>MCAqoGB)?0=AG]m9@e*t+@"D^:@"D^:@*W0Q@JaO5A,Bg9Ac$*=B`;`FC]82M +DuO_TErL.ZFoH^dI/\ZqJc:B&M#NG6OT(ICRf8lWT`1kgX8]=%Zi7K6^AbtJ`W"$Zci2Dmf)FG'hYuL5 +jo4KClMg8OnG_tWo`"O_p\t!fqYpBerVQTgs3gqas8N#prVl`oqu6Hkq>U0gp\sgao)A+Wmf)POl2KfD +ir7j7gA]_'eGdhobl5]__>_4K]`,;;Z2Up*W;`UlTDkD\R/W?LOT(7=MZ/>/KDU/tI/\HkG5cU_F8g.U +Du4DND"qcBC&VfnJNE;jqXFoHR`HN&On,DnWo`"Uaq#:*g +qYpBkr;QZlrpg$:s2+g2rr2ipqtp6hq>U0gp&=U_nc&%WmJcGNkPjTBiVq[4gA]b(df.PkbPoK[_Z%=L +\c0&:Z2Um)WW&doT`1M]Rf8QNOoCC?MZ/G2LAlf(JGt#sHiAnADC]%t! +Bng>QBn:!MC%#j7D#8)HDZ4SRE;jkVF8g:\FoHUaH2`0iIf=lsK)UN(M#N;2NrG1?Pl@-NSc5;]VZ*Ro +Xo>U)[Jm`9^])+L`W"'[ci2Alf`'V(h>ZC4jSn?Ali-;NnG_tWoD\F^q#:*dqYpBkr:p9]s3gq[s8N#s +rVl`oqu6Hkq>U0gpAX^`oD\7Ymf)SPkl0`DjSn*:h>Z.-eGdnqci2)d`rC#V#I(e +TDk;YQN!'HOT(7=MuJJ1K`6T&JGt#sI/\HkH2`'fFoHL^F8g4WEV4;FDu=O)DME%[DLl]WDY7r=E;jkS +ErL.ZFT-F^GlE!fHN&B_>_FQb5T`d +df.bqgA]q-i;Vg:k5OTDm/HGPnG`%Yp&=[aq#:*gqYpBkr;QZlrpKg7s1JC2rqQHhqu6Hkp\smcp&=O] +nG_nUm/H;Lkl0WAiVqa6gA]\&df.Vmbl5``_u@LO^AbYA[/R=!VZ*7fT)P8ZQN!-JOoCIANW+k8 +LAll*KDpH$JGt&tIf=cpI/\KlHN&3bGlDm\FTHW-JTQNdJTQHbd<,8.qf_aZrd"Khrd4WlrdFcprdXot +rdk'$re:?+repc8rfI,ArfmDJrg`tZrh07fri,n!rilC0rj_sArkSNNrlP/`rm:Ymrn%/'rnm_6ro="A +rp'LLrpTjVrpp']rq??cqtg#VrkSNGrji$:rilC(ri?$qrhKIbrgj%Wrg<\Lrf[8Arf-o7reUQ.re:?)rdt-# +qgeZqrdOWiqg80cJU2lnJU2lnaEmi4pjE'irdXfqrdk'#re19)reCE.reg]7rf@&ArfmDLrgNhWrh'1b +rhf[qriZ7)rjMg9rk/6Grl"fVrltGhrmLetrn@A-ro*k;roX4Erp0ROrp]pXrq$-_rqHEerqcWkrquco +p&=CZdf6lXrr2fnrqucmrqcWirqQKerq-3]rpp'XrpB^Nroj@DroF(:rn[S-rmh"srm1SgrlG)XrkSNH +rk&0:rj)O,riH*trh]Ufrh'1\rgEbPrfmDErfI,>rf$i7reg]2reCE+re19'rdt#upji?nrdXuuJU`6# +JU`6#d=;.GrdXTkrdk'#re(3're:?,reUQ2repc7rf6u=rfR2Erg*POrgj%\rh9=fri#gtric=,rj;[: +rkABIrl+lYrltGgrmLerrn@A-ro!e:roX4Drp0ROrp]pXrq$-]rqHEerqZQirql]mrr)`nkl9*2\c;I( +qu-NlrqcNfrqHEcrq-3[rp]pUrp0RKroj@Aro*k6rnIG*rmq(qrm(Merl4rTrkSNIrjr*ErfR)> +rf?r:pPf35NId%@N.Hq=N7!U]NV/>/OSb4?PQ$gGQ2[0MRJrZSSGo,ZT`1\bV#I7jWrB+!YPtg+[Jm]8 +]`,YE_>_IRaSsB^ci2AleGe/#h#?41iVqp;k5OWEli->On,DkVoD\F^p\ss_qYU3irV6BUs3gqRs8N#m +rVQKkqYp9ep\sgao)A1YnG_hSli-,Ik5OKAi;VU4h>Z%*ec+"rd/M;hbPoK[_u@FM^AbbD\Gii6ZMq', +Xo>@"W;`UlUAgkcT`1P^SbnoURf8]OQi<9LPkC7>OoUX9Ob&UTOF`LEOPl5nOo(=7PQ$gGQ2[-IR/ +i;VU4g]#n*eGdnqci25hbPoT^`;[UP^](nF])K5=[/RB.Yl:g)XT#0tVuERjU]."eT^n`MSc,)JS:R/m +Rt7&[S*$4)SG8ZJTDP;YUAgqeVZ*LmW;`mtXo#@%Zi7?2\Gj)=]`,\F_Z%LQaSs?]cMl/hdf.bqg&Bb* +hYuI4j8S0>kl0lHm/HJQnG_tWo`"O_p\sseq>U6iqu6NjrVQTOs3gqOs7lTjrVl`oqYU*fq#:!dp&=R^ +o)A.Xmf)SPlMg#Hk5OH@i;VU4h#?"+fDa>"dJhJkbl5``a8X$V_#D+J^Ab_C\Giu:[/RB1Yl:j'Xo>?t +WW&gpVY-e\U]-tfTn/ngTn/ngU"#e5UA1MVV>d@kVuE[mWrB."Y5YX(Yl;!.[/RQ6\c02>^AbnH_#D:O +`r=*Zbl5oedJh\qfDaJ&h#?10i;Vg:k5OTDlMg,Kmf)_To)A7[p&=^bq#:*dqYU3irV6BLs3gqIs8N#m +rVQKkqYp9ep\sgaoD\=[nG_nUmf)MNkl0`Dir7p9hu;L3g]#k)eGdnqci25hbl5ca`W!gT_Z%@M^AbhF +])K5=[emE1ZMq**YPt^(Xo>EsX8]-nW<&utJZ+4"JZ+-udAZrAql9FlriH+$riZ7(qlot'rj2U4rj_s= +rk8J["(:os+(nrj2L/rjDX3 +rjVm:rjhp=rk8rkn`Sqo8WWrlb;brm(Mhrm:YmrmUksrn%/&rnIG/rnm_5ro=">roX4Erp0RNrpTjUrpg!Z +rq-3_rqHEerqZHfrqlKhqu5(Edf5p=rr2]krqucmrqcNfqtL*`rq-3\qsaURrpKdOrp'LHroX4@ro3q8 +rnm_3rnRM,rn7;$rm^qrrmC_lrm1Shqp##]rlY5^rlFlTrl4iSqS^q&J]"V-J]!&VaMe(sqo8NRrlG)\ +qo\o]rlt>crm1SjrmC_orm^qtrn7;*rnRM0rnm_5ro3q>grm(Dcqonr\oZI!Pg<"oeYfMC:J]Ri3i5t6+rlauYrlt>cqp>5gqpbVqqq1o$rnRM/ +qr%J6roF(@roa:Erp'LKrpB^Rrp]pWrq$-]rq69brqQKgqtgsrn%/#n^RZje`kS7e!ng;dt-!:e)SsKec+/!fDF4t +g&'M#h#?.,htu@/ir8$:$fqtpU-fpA=O^o`"I]nc&%Wn,)MOm/H;Ll2KoGk549;j8S';i;;F,h>Z4&g]#q!g#Uh; +fUg`HfR_]Af\5$UgABY%h"]_)htu@/ir8!;jnn3>kl0iGlMKrImJcSRnG_tWoD\CZp&=[ap\t!cqYpBe +r;QZfrl"ibs,[3Wrq66hr:p-fq"sgbpAXaao`"I]o)A1YnGD\RmJcJOlhfrGkl0`Ajnn*;iqq^0i;VX5 +i;;F,hYl8]h1=C5h1=D-h>#k(hu;R5ht>q,iVVX6j8S0;k54BAl2L#Jm/HDOn,)VRnc&+YoD\C]p&=[a +p\Xa\qYU3frUp0+s3gq%s8N#mrVl`lqtU$eq"sgbpAXaao`"FYnc&%Tn,DbPmJH5KlMKiFkkjQBk4Rg. +j8.d5idp'CiITs=iRd&Ziqqd,jSS*=kPOKBl20cFli-;Kmf)\PnG_tTo)A:\p&=[ap\Xa\qYpBhr:p6f +rj`!Vs+^RHrqQEgqu6Heq>U-fpA=O^o_\7Zo)A1YnGD\Rmf)VNm/H>JlMg&=kkjQ8k5=@mjbDlJjalOF +jmV@2kO7X6l20cFlhg&JmJcPQn,)VRnc&+VoD\CZp&=[ap\=R]qYpBer:9iss3gq"s7lTgrVl`lqtU$e +q"XU_pAXaao_\7Zo)%tSnG_nUnG_nUmecDEm.flo6nq6Lanq$AZo()D=o`"OYpA"CZq#:*[qYpBhr:U$`rh0;>s+146 +s7QB^rV6U0ap\=IZ +p%%bCo)\ISJb"HaJb"B_dIQl"m.C;Mq"FLWqtU0do(r@_qu$-cq#6rddf4munc/1Yqu$?grqcNfp%\O\ +qtBp[rq,mTp%%G=!V,]2n:U4]n:C)VnEf]9o)&%Uo`"OYpAXgZq#:*dqYpBbr:U#]s3gpus8)cjrqQHk +r;6BdqYU*fq"XU_pA=O^o`"I]o)%tPnG_nUnFH&?mXaeWmXaeWm`"Vbn,DhUn+H2Lnc&+YoD\C]p&"IX +p\Xabq=sgcqtpqr@\8 +qr.>.rnm_5qqq2*rS<%\J_bn5J_eW-ptko*ro!e5p#,i.qr7V8roO%>qrn%Drp0RMrpB^RqsaUTrpp'[ +rq-3_rq??cqtTs_qu$?ip&;f-df5L1rr2ThrquZjqt^6dqtL*`rq-3]rpp'Yrp]pUrpB^Orp0IGroj@D +qrR_8ro3q8qqqD0rn[8&n(R`n!SQ.WfRqh-fR_]&f`'Rmg@a8#h>Z:1htu@/ir8!;jnn3;kl0iGli-8M +mJcSRnG_tWo)A7[o_\@]p\Xabq>U9gr:U$frk\W_s-rkA-?mCe(`Q+V[\J\:$Ul+Qu.rkJ$>qni?Mrl+cS +rlP/_rlkAerm1SjrmLeprmh#"rn7;*rndY3ro!e9roO.ArosFJrpB^Rrp]pWrq$-]rq69brqQKgqtg#WrknWLrkSNJqn;d:rjr!;rj_^3o=':ZO1'VJJ[XLFm'll%rjhp;pq-O=rkABH +rkSEIrkn`Srl>#[rlY5`rm(MirmLeqrmh#!rn@A+rndY4ro3q;roa:Frp'LLrpKdTrpp'[rq-3`rqHEe +rqZQirqlTjqu-Nne,RkrVuQbqq#13irql]krqZQgrqHEcrq69]rp]pUrpKdPrp0RIroX4@ro!e5rndY. +rn.5%rmLemrm1ShrlkAarl4rVrl"fPrkSNJqnJZs^0i3;mZ +o!88$qm?@1qmQL5rj_sro*k6rndY/rn.5"rmLelrm(MerlY5Zrl"fQrkSNIrk8#rqQHkr;QTmqYpt*f)F1ud/M>ibl5]_`r_4K^&GVB\Giu:[/RB1Yl:j*Xo>F$ +WrB!sW;ELlVYHtaU\^_SU4K#$Tn/ngU#r'2UAgq\V#.%gVuEXoWW&psXT#@$YPtd*Zi7?2\,Nr;])KDB +^])(K`W!pWaSsE_cMl2ieGe%uf`'\*h>Z@3j8S0>kPjfHmJHAOnc&.WpAXgcq>U6iqtpU0gp\smco`"C[nG_nUm/H;Lkl0]Cj8S!9hYu:/g&BM#df.SlcMl#daSs-W_>_4K +]`,MA\Gil7ZMUm*Y5YO%W;`^oVYd.fUAghVTD4uUSFE&"S!'7lRt7'kS*?IBSbo#OTDP;YUAgqeVZ*Lm +W;`mtXo#@%Zi7?2\Gj)=]`,\F_Z%LQaSs?]cMl/hdf.bqg&Bb*hYuI4j8S0>kl0lHm/HJQnG_tWo`"O_ +p\sseq>U6iqu6NjrVQTOs3gqRs8N#mrVQKkqYp9ep\sgao)A1YnG_hSli-,Ik5OKAi;VU4h>Z%*ec+"r +d/M;hbPoK[_u@FM^AbbD\Gii6ZMq',Xo>@"W;`UlUAgkcT`1P^SbnoURf8]OQi<9LPkC7>OoUX9Ob&UT +OF`LEOPl5nOo(=7PQ$gGQ2[-IR/9pc +pAX[_o)A+Wmf)SPlMfrFjSn-;hYu:/g&BM#df.SlbPoT^`r@"VZ*CjUAghb +T)P8ZRf8]RQi!'IPl?jCOoCI>O8+b6N:W!ZMiWdIMh-fEMslW"NrG+:OT(C>P5CLCQ2[-LRJrZSSGo)Y +T`1\bV>d@kWrB+!Yl:s-[JmZ7]`,YE_>_IRaSsB^ci2AleGe/#g]$(/iVqp;k5OZFli->On,DkVoDA7\ +p\t!fqYpBerVQTUs3gqXs7lTjrVl`oqYU*fp\smco`"C[nG_nUli-2Kkl0WAiVqa6g]#n*f)F%qcMl&e +`rOoCRDPl@!JR/WTST)PA]T`1bdVuE^qY5Y[)ZMq?4])KGC_#D:O`r=3] +cMl2if)F>$g]$+0iVqm:kl0iGli-APnG_tWo`"O_p\t!cqYU3irV6BUs3gqXs8N#prVl`oqu6Hkq>U0g +p\sgaoD\=[nG_hSli-,Ik5OH@i;VR3gA]Y%e,I\mc2Pf``W![P^&GYC[/RB1YPtX&W;`XmU&L\`Sc5&V +Qi<6KOoCIANrG":MuJV5M#N/.L&Qc)KDpK"JbXcpJ,XruIt<*#It<*#J'icFJGt&kJGt-!K)UE%K`6]) +L]3,/MZ/P5N;ek:O8b:@Pl@!JRJrcVTDkP`V>dFmXT#F&ZMq61]DfPD_#D=Pao9Qaci2Alec+;%h>Z@3 +jSn<@kl0oImf)_To)A7[o`"Uaq#:*gqYpBkr;QZlrojC1s1/1)rVQKkqYp9hp\smcoD\=Xn,D\QlMfrF +j8S!9hYu7.fDa4tci2/faSs0X_>_.I\c0&:Yl:d(X8\spU]-qcSc5&VQi<3JOoCF@N;e_6M>i;0LAlo+ +KDpK"JGt#mIK"WhHiAdOpY5Y[)[f3i:^&GkI`W!sXbl5rfdf.ktgA]t.i;Vg:k5OZFm/-8Nnc&.ZpAXgcq"spe +qtU-Rs3gq[s8N#mrVQKkqYp6gpAXaao)A.Xn,D\QlMg#Hj8S$:hu;@/f)F+sd/M8gao93W_>_1J\Gil7 +Yl:d(WW&doT`1P^SGniRPl?gEOT(7=MuJJ1K`6W'Jc:3!J,XorIK"WnHiA?jH2)X`G5$+[F`i7WK62Zd +JTT:]qfVdZpiud`rd+Qjrd=]nrdOirrdb!!re(3(reCE1rf-o=rfR2Erg*PRrgs+^rhf[oriQ1(rjDa8 +rkABIrkn`WrlkAgrmLetrn@A/ro*k:roj@Hrp9XQrpg!Yrq69arqHDrf6u6re:?&rdaurrd+QdrcJ-[rc%jSrb_XMrbDFGrau%=rabn9raPG,rEt1aJRF%:JRHc2 +ojR`,raYh9rakt=rb2:FrbMLMrbqdTrc8!ZrcS3drd=]qrdk'&reUQ6rfI,CrgNhWrh07gri?%%rj2U6 +rkABJrl+lZrm1Smrmq)'rndY5roO.Crp'LOrp]pWrq-3_rqHEfrqcWkq#1*hp]&\A`W,r:q#13hrqcWi +rq??`rq$-YrpKdProj@Dro="9rnRM+rmUknrltG^rkeZLrj_s7ric=%rhf[hrgj%Vrg!JErf$i5re19% +rdOimrcnEcrc8!Wrbh^OrbDFGrau.@rabn9raPb5qd8o#rE]##JR"7@JR!b2i*>_Vnm;3#ra>_6qdTP7 +rac">rau.CrbDFKrbh^Src8!]rcnEgrdOitre19-rf$i_4qd08-r`nnrrEAerJQ\%:JQ[P,i*#MPmp#crra#;*ra>_4raGe8rac"? +rb2:Hrb_XQrc%jXrcS3erdFcrre(3*rf$i.r`oG,r`]2$qcEbtmT&s\JQ.S-JQ.2"g/R<:qc<\tpfRMur`fA,ra#D.ra>_6rac">rb)4Hrbh^S +rcA'^rd"Kmrdt-&repc9rfR2Irg`t\rhf[pric=.rji$Brkn`VrltGirmh##rnm_6ro="Arp'LMrpTjW +rq-3arqQKgrqcWkqu-EkqZ#"DbQ%S@q#13irqcWhrqHEcrpp'XrpTjProsFEro*k5rnIG&rmLelrlG)W +rkSNErjMg2ri?$qrh9=^rg<\Krf@&9reCE&rdFclrcS3]rbqdQrbDFGrac";ra>_4ra#M.r`fA*r`T5% +r`8\lr`&;ar)Krgj%^rhf[qriuI1rjr*Erl+lXrm1Slrmh#&rndY5roX4Drp0RPrpg!Yrq??c +rqQKhrqlTkqu6Hldf7Mjrr2fnrqucmrqcWgrq??`rp]pUrpKdNroa:Aro!e2rn7;!rm1Sgrl+lRrkAB? +rj)O,rhoajrh'1Wrfd>Breg]0rdk&trd+Qfrc.pUrb_XJral(=ra>_4ra,S.r`];(r`K/$r`9"ur`&kp +nkoB^r_W>bJPUhmJPUhmaA;e3r_NMiohk]dr_rerr`9#"r`K/&r`];*ra,S2ra>_8rau.Crb_XQrc.p] +rd+Qmrdk''reg]9rfmDLrh'1brhob!rj2U4rkABJrl+l]rm:Ymrn7;+ro!e:roj@HrpKdSrp]pZrq69b +rqcWkrqucoqu6Hldf7Vmrr2]krqcNfrq??`rq$-YrpB^Nroa:Bro*k4rn7;%rm:YgrlG)Srk/6?rilC' +ri#ghrg`tUrfR2?repc.rdaurrcS3]rbqdQrb;@EraPk7ra5Y0r`];'r`9"ur`&kpqbd5er_NMiqbR2d +mS3URJP:elJP:Vgf1bO*qbI#ar_WSiqb[8hqbmDmr`/qur`K/'r`oG0raGe8rb)4Frb_XQrc8!\rdFcr +re(3.rf6u?rgEbVrh07hriH+'rj_s?rkSNSrlkAgrmq)%rn[S4roF(Arp0ROrp]pYrq69arqZHfq#1*h +!<:LIcN!nCq#13grqZQgrq69_rpg!Vrp9XLroX4?rnm_0rmq(srm(Mbrl"fMrji$8riZ7"rhTObrgNhO +rf@&9reCE&rd=]ircA'Xrb_XJrau.>ra>_2r`fA)r`K/#r`&kpr_`YkqbR2dqb?iZqb-HOJP(JcJP(Jc +^InJupe:Z]qbI,dqb[8hr_reqr`9#"r`T5)ra#M2raYq>rb2:Jrc%jXrcnEirdb!®]9rg!JNrgs+b +ri,n"rj;[8rkABMrlP/brmLetrnIG0ro="?rp'LLrpTjVrq$-^rqQKgrqcEgqu-Tqdf7Vmrr2fnrqucl +rqQKerq-3\rpTjSrp0RIroF(;rndY,rm^qnrlb;[rkSNFrjMg2ri?$prh07[rg!JErepc1rdk&srcnEa +rc%jRrbDFDraYq7ra,S.r`T5$r`&kqr_`YkqbR2dr__g.:6qpe(NYqb6u` +r_E>dr_WSkr_rerr`9#$r`fA.ra5Y6ral(DrbVRQrcJ-brdFcsreCE1rfI,FrgWn[rhf[qriuI2rk&0F +rl4r\rm1Snrn.5,ro*k;roj@HrpKdSrpp'\rqHEfrqcNirr)`n!<:LIdJs4Fqu-NlrqcWirqQKdrq$-[ +rpTjQrosFEro!e3rn@A$rmC_jrl+lRrkAB>rj)O+rhTOdrgj%PrfI,=re19%rdOiircA'WrbVRIrac"9 +ra,S/r`K/#r`/qqr_`Yjr_WShr_3;ar^urWr^cfSlUHFpJOY2[JO[:Apdb3PqapcZr_*5ar__9rb)4HrbqdWrc\9irdk'%rf-o=rfd>Prh9=eriZ7*rjDa>rk\TQrm(Mjrm^r$ +rn[S3roX4Drp9XQrpg!Zrq??crqZQirqlTkrr)otdf7_prr2fnrquclrqQKdrq69]rp]pTrp'LGro="8 +rnIG)rmLekrlb;YrkJHErj2U-ri5skrgj%VrfI,_9rb)4Irc%jXrd+Qlrdk')rf$i#Rrk/6>rilC&rhf[ergNhOrf6u7re19#rd+Qerc%jRrbDFCraGe5r`fA)r`B(sr_WSir_EGer_3;` +qapcXqa^ENpdOX>rBl-'JO=uUJO@^MmmQq>pdY6Qqag]Xqb$i]r_hu;C0f)F+scMkrb_u@CL\Gif5 +XT#*rT`1DZQ2ZjDM#N),J,X`mFoHC[D>n5JAc?*:?2e(-Q.t.@/aa:C&VuKEW1+[H2`OnG`%Yp&=[aq>U6iqu6QmrW3#t +eGn%uq#13hrqcWirq69_rpg!Vrp9XLroF(;rndY,rmh"qrlb;[rkSNErjDa/ri#gkrh'1UrfR2>re:?& +rdFcgrc8!Vrb;@DraPk5r`fA)r`&kpr_WSir_F,r'T1)JO-D(JO+iQf0[tS +qaCU0gp&=R^ +nG_kTli-,Ij8S!9h>Z")df.SlaSs*V^](\@Z2Um)U]-qcSGn]NNrFq8Jc:,tHiA'bDuOVQB)Z<>?iF=0 +=oMM%;Z9Ml:]=&e9E%Q_8cD9[8,c!T7K,^A6g-ke6N09%5d3M)5_23"6+K>Q6i0:N7JfRR8,c'Y8cD?] +9E%Wa:]=5j;Z9bs=oM\*?iFR7B)ZZHE;jnWHiAKnJc:Q+NrG4@SGo/[U].CpZMq<3^])1NaSsNbe,Iqt +h>Z@3j8S9AlMg5NnG`%Yp&=acq>U6fquHZrrVb7GfDkjLqu-NlrqcWhrqHEarpp'Wrp9XKroX4_.I\Gi`3X8]!qT)P/W +PQ$O?L]2o)I/\?hErKtUCAqiE@/aI2>5hS%<;obo:]=&e9E%N^8H)-Y7f,X=6f16"6N09%5a=Tc5_22_ +5lO'm6L7)=7JfRR8,c'Y8cDB^:&[rf;>sPoU9jquHZrrVcWmgAfe)rr2oqrqucmrqQKe +rq??^rp]pTrosFFro="8rn@A&rm:Ygrl>#Rrk&0;riZ7!rhBC^rg*PFreg]/rdXomrcJ-XrbMLGraYq7 +r`fA)r`/qqr_NMfr_3;`r^m)[qaUQRr^?t* +e,I\mao96X^&GM?ZMpm'V>d+dQi<0INrF_2JGsurFT-:ZDZ4;JAH#s8>lIn*m!L-U;TJO%gPpd*CrmmI(C +r^QlWr^d#[r_!/ar_NMir`&kur`];-raGe;rbVRPrc8!ardOiurepc;rfmDQrhBCjrilC1rk&0HrlG)` +rmC_rrnIG0ro="?rp0ROrp]pYrq69brqcWk!;llqr;QZorn@D+s8N#srVl`oqu6Hkp\sjbo)A.XmJcGN +jo49=hu;=.ec*nobPoK[^](eCZi7-,V#I"cS,SQLNW+b5JGsrqGQ)R\D>n;LA,]m8?2dt*_;rbDFNrcA'`rdOj"reg]9rg*PRrh9=kric=. +rkABKrl>#armUktrn[S3ro="Arp0RPrpg![rq??erqZWl!W2cnrVQTMs5!_SrqlZnqu6Hkq>U'doD\7Y +mf)MNkPjK?hu;F1eGdhoc2P]]_>_+HZMq!*VuE@gRf8QNNW+_4Jc:#qG5cL\D>n5JA,]j7>Q.e)<;oep +:]=,g9E%N^8,c!T7K,^J6eXm+61I3k5_21O5_22;5lO('6M3_F7/KFP7fGpW8cDB^:B"&g;Z9Yp=oM\* +?iFR7B`;lJEW1.\HiAWrM#ND5Pl@-NT`1kgXo>X*]`,_G`W"-]dJhYph#?41ir8-?lMg5NnG`%Yp&=dd +q>gBnqtpBkqu5FOh>dKRqu-NjrqZQgrq-3\rpTjRrosFFro!e3rnIG$rm:Ygrkn`Mrji$4ri?$qrgs+V +rf[8=re:?$rd"KbrbqdOrau.=ra,S.r`K.ur_`Yjr_3;`r^m)YqaLKPog@=tr^$'>JO"cOJO"cO_Ee)d +e3a%"qaCEPqaUQVr_*5ar_NMjr_reur`];-raPk>rbMLOrcJ-brdXp$repc=rg<\Vrhf[qrilC4rkABL +rlkAfrmUl$rndY4roa:GrpB^Rrpp'\rqQKg!;Z`mqYpHjrn[V1s8N#srVl`oqYp9hp\sgao)A+Wm/H5J +jo43;h#?"+dJhDiao9-U]`,A=YPtL"UAgV\Q2ZjDM#N&+J,XTiErL"VBDuH@@/aF1=T2>";>sAj:&[ca +8H)-Y7fGjU7/0.*6K17]5_21O5_22,5i"d%6iKLQ7K,dU8,c*Z9)_Qa:]=5jlJ.1AH$6@DuOeV +FoHmiKDp]+O8bCCRf9&\WW'+#[f3r=_>_RUc2Q,ig&Bh,i;Vj;kl0rJn,DnWo`"Uaq#L6lqYL3hrr)iq +h>c=2qu-NlrqcWhrqHE`rpg!Vrp'LGroF(9rnIG)rm:YgrlG)Srk&0;riQ0trh9=Zrfd>AreCE'rd=]e +rc%jQrau.>ra5Y/r`B)!r_WShr_rbVRQrcJ-erdk''rf6uArgEbZrhoatrjDa;rkSNSrlkAgrn.5)rnm_9 +roj@HrpTjVrq$-`rqQQj!W)Zir;QZNs5!_PrVl`oqYp9hp\sd`nc%tUl2KlFj8Rp7gA]Y%d/M5f`rK`6K#HiA'bDZ4GNAH$$:?N+(+dOpZi7N7^])7PbPolfec+8$hYuR7k5OWEmf)_ToD\L`q#L6lqYL*err([Qh>dKQrqucmrqZQgrq??] +rpTjRroj@Cro*k4rn.5!rm(Mbrl"fLrjMg1ri#gkrgs+Qrf@&9rdk&srcnE]rbVRJraPk6r`oG(r`/qp +r_NMer_*5]r^ZrWr^?EHj$MEaJO"cOJO"cOW^,K/qa:6Kr^QlWr^d#]r_QrhBCjrilC2rk8U-fp&=L\n,D_RkPjQAi;VO2fDa4tc2Pf`_u@:I[JmB/VuEChSGn]NNW+b5JGsop +FoH@ZD#S,I@K'U4>Q.\&;uTVm:B!rd9)_?[7fGjI6g6r76.nMS5_21O5_22#5lO(06M3_F7K,dU8,c-[ +9E%]c;#XGn&?N+C4B`;fHE;k"ZHiAQpM#ND5P5_!NU&LthYPts/]Df_IaSsH`df.kth#?72jSn?A +mJcSRnc&4\pAk!iq>($erqucoh>c=2rr)iorql]irq??arpg!Vrp9XIroF(9rnIG'rmLeirl>#Srjr*9 +ric$Lr^QlWr^m)^r__;rbMLOrcJ-crdXp%repc;rgEbXrhTOsrj;[9 +rk\TRrlkAirn%/(rnm_8roa:IrpKdUrq69b!;HTiq#:0ir;QZNs5hu;@/ec*qpb5TBZ^](bBZMq!*UAg__Qi<*GMZ/8-I/\?hErKqTB`;N@@/aF1=T2;!;Z9Jk:&[ca +8cD3Y7K,^M6fUN46.S;P5_21O5_21u5lO(06MNqI7/fXS7fH!Y9E%Zb:]=8k<;p#!>Q/%0A,^0@D>nST +GQ*!hKDp`,OT(UGSc5A_Xo>X*\Gj8B`;[pYd/MSpgA^"/ir8'=li->OnG`(Zo`4^ep\4[`rql]nqu5XU +i;`fUrr)iorqcWgrq??_rp]pSrp0RFro3q7rn.5"rm:Yerl"fNrjMg2riH*mrg`tRrf6u6rdt,rrc\9] +rbVRHraPk5r`fA(r_renr_NMdr_!/]r^QlUr^?NKj$N`2ej+dOJO"cOJO$+ur^#R2pd>$Kr^HfUr^m)] +r_*5dr_`Ynr`K/'ra,S5rb)4Hrc8!^rd4WrreUQ6rg*PRrh9=mriuI2rkJHNrlY5ermh##rnm_7roO.F +rpB^Srq$-^!;?Ngp\t$gqu6Qkro=%:s8N#srVl`oqYp6gpAX[_nG_hSlMfoEir7g6fDa7uci2#b_u@FM +[JmE0WW&RiS,S]PNW+_4Jc9upG5cL\C]7rF@fB^5>Q.b(;Z9Ml:B!oc9)_B\7fGjU7/K@06N0:%5_21O +5_21O5c6mH6/=m,6iKLQ7K,dU8H)3[9E%]c;#XAl=T2M'?N+F5BDu]GEW1+[HN&KpL]3;4Q2[6OT`1qi +YPts/^])1NaSsNbe,ItuhYuL5jo4QEm/HMRoD\C_pAt$_rqcWkrr)`nj8\';rr2oprql]krqHEbrpp'W +rp0RJro="9rn[S)rmLelrl4rRrk8<;riZ6urh07Yrf[8=re:?%rd"KbrbqdMrac"9r`oG*r`9"rr_NMf +r_!/\r^ZrVr^?NKksGA8bs6hFJO"cOJO#elr^#[5qa:?Nr^HfVr^m)]r__:rb;@M +rcJ-brdb!&repc=rgEbYrhoatrj2U;rkeZSrm1Smrmq))ro!e9rosFKrpTjWrq-9c!Vc?fqYpBkr;6KR +s5Yt(dJhDi`W!^Q^&G>:XT#*rT)P,VP5^@lIk)sSp=T2S)@/a^9BDuiKF8gF`J,Y-#MZ/e_FQc2Q,iec+D(i;Vd9l2L&K +n,DnWo`4^ep\4[`rql]mqu5XUi;`fUrqucmrqcWfrq-3[rpTjProj@@rnm_1rmh"qrltG]rk\THriuI( +rhf[crg3VHre^W,rdOiirc8!Urb)4@ra5Y0r`K/"r_`Yjr_3;_r^d#Xr^?EHksGA8bs6hFJO"cOJO#el +r^#[5qa:6Kr^QlWr^m)_r_EGir`/r"r`oG0raYq?rbh^Urc\9ire(3,rfR2Hrgj%criH+(rk/6Grl+l] +rmC_qrnRM1ro3q@rp0RPrpg![!;6HepAXpfqu6Njro=%=s8N#srVl`oqYpn/HA,]j7>Q._'rr2oqrqucl +rqZQdrq$-YrpKdNroa:>rndY/rmUkmrlb;YrkABArilC%rhTO_rfmDCreCE'rdFcgrc.pSral(rp'LNrp]pY!;-Bcp&=dd +qu6NmrVlfVs5X.Yrr2lqr;QQlq>U'doD\7Ymf)MNkPjH>hYu7.e,I\mbPoBX^&GP@Yl:[%U]-_]Pl?aC +L&QZ&I/\6eE;j\QAc?0lMg5NnG`"Zo`=aYrqZQjrqucorr1sXj8],Xrr)inrqcWirq69^rp]pSrosFFro!e2rn7;"rm1Se +rkeZJrjVm1ri#gjrgNhNrf6u2rdXoorcA'WrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdWrd4Wpre192rfd>MrhBCkric=1rk8U6iqu6Qnro=%=s8N#srVl]nqYp_.I\,NQ0W;`OjRf8NMNW+V1J,XfoF8g+WC]7lD@K'U4=T2>";Z9Ml:&[fb8H)-Y +7ef@>6G>^95_21O5_21]5jq&76iKRS8,c'Y9E%Zb;#XAlZ@3kPjcGmJcVSo)SFap%A=[rqcWkrr)iqj8\0>rr2oqrql]krqQKc +rq$-YrpB^LroO.;rnRM+rmLekrlY5Vrk8rk\TVrm(Mkrn7;+ro!e;rosFLrp]pY!;-Bcp&=acq>U9jrVlfVs5X.Y +rr2lqqu6Hkq#9pbo)A.Xm/H8Kk5O<XP5^I?KDpB"HN%saDZ4DM +AH$!9?2dt*sSp=T2V* +@K'g:CAr,MErLCaIf>!!NW,+?R/WcXVuEju[f3r=_>_UVc2Q,ig&Bh,i;Vm_2r`K/"r_`Yjr_3;ar^ZrWr^HTLmm=`RJO"cOJO"cOO$N/#pd>$Lr^QlWr_*5b +r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Jrh07griZ7/rk/6HrlP/armC_urnRM2roO.Crp9XR +rpp-^!VH$`q#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\nG_eRl2KfDi;VO2g&BCuc2Pia_#CtF[f3H/ +VuE@gR/W9JNW+S0J,XcnErKtUCAqcC@/aI2=T2>";>sAj9`@Z`8,c!W7JK7=6G>^95_21O5_21]5jq&7 +6iKOR7fGpW9)_N`:]=5jrr2oqrql]krqQKbrpp'Xrp9XKroO.;rnRM+rmC_i +rlP/Trk&0U9jrVlfVs5X.Yrr2lqqu6Hkq#9pbo)A.Xm/H8K +jo43;h#?"+dJhGjb5T3U]Df8XP5^I?KDpB"HN%saDZ4DMAH$!9?2dt*sSp=T2V*@K'g:CAr,MErLCaIf>!!NW,+? +R/WcXVuEju[f3r=_#DLUc2Q,ig&Be+i;Vj;kl0rJnG`"ZoE"UVrqQKgrql]nrr1sXj8],Xrr)inrqcWh +rq-3\rp]pRrosFEro!e2rn7:urm(Mcrk\THrjMg/rhoagrg<\Jrf-o0rdXonrc8!UrbDFCra>_2r`K/" +r_`Yjr_3;ar^d#Xr^HTLmm=`RJO"cOJO"cOO$N/#pd>$Lr^ZrYr_*5br_NMjr`/r"ra#M3rac"Crbh^U +rd+Qmre(30rf[8Jrh07griZ7/rk/6HrlY5brmC_urn[S3roX4Drp9XRrpp-^!VH$`q#:*gqu6Qnro=%= +s8N#srVl]nqYp9hp&=R^nG_hSl2KfDi;VO2g&BG!cMkuc_>_.I\,NQ0W;`LiRJrBKNW+V1J,XfoErKtU +C]7lD@K'U4=T2>";Z9Ml:&[fb8H)-Y7ef@>6G>^95_21O5_21]5jq&76iKRS8,c'Y9E%Zb;#XAlrr2oqrql]krqQKcrq$-YrpB^LroX4A +re19#rd4Wbrbh^Nrac":ra,S+r`/qqr_WSgr_*5]r^ZrWpd=L:^-I67JO"cOJO#8]mm?e:r^QlWr^d#] +r_U9jrVlfVs5X.Yrr2lqqu6Hkq>U'doD\7YmJcALkPjE=h#?"+e,I\mbPoBX^&GM? +YPtL"UAgV\Pl?^BK`6K#HiA*cDuOPOAH$$:?N+(+U9jr;QZoro=%=s8N#srVl`oqYp5hV& +<;o_n:B!rd8cD9[7fGgQ6gR/46-VZG5_21O5_21i5l3k36N0@L7/f[T8,c*Z9`@fd;#XGn=8lD&?N+F5 +B)ZWGE;jtYIK"itL]3A6Q2[9PU].:mYl;65^Ac"Kbl5rfe,J)#hYuO6kl0lHmf)_ToDnRcp@eL]rql]m +rr)iqj8\0>rr2oqrquclrqZQerq$-YrpKdOroj@@rndY/rmUknrlkAZrkJHDrilC%rhTO`rg*PEreUQ+ +rdOihrc.pSrau.>ra5Y/r`B)!r_WShr_3;_r^d#Xr^?WNj$N`2bs6hFJO"cOJO#elr^#R2r^6QNr^QlW +r^m)_r_EGhr`/r"r`fA/raYq>rb_XSrcS3hrdt-*rf@&Drg`t`ri?%&rjr*Crkn`Zrm1SmrnIG0ro3q@ +rp'LNrp]pZ!;6HepAXmequ6NmrVlfVs5k'dJhDi`W!^Q +]`,28XT#*rSc4uTOoC4:KDp?!G5cO]DZ4;JAH#s8>lIk)sSp=T2S)?iFR7BDufJErL7]If>!!M>iY:Qi_1r`T5$r_i_kr_3;`r^d#X +r^?EHksGA8bs6hFJO"cOJO#elr^#[5qa:6Kr^QlXr_!/`r_NMkr`9##r`oG1ral(BrbqdWrce?kre19. +rfR2Hrgs+eriQ1*rk/6Hrl4r_rmLesrnRM1ro3q@rp0RPrpg![!;6HepAXpfqu6Njro=%:s8N#sr;QTm +qYp6gp&=O]n,DYPl2K`Bi;VR3f)F+sci1r`_>_.IZi7-,VuE@gRJrBKMuJG0JGsinFT-4XC&VZB@/aF1 +=oMJ$;Z9Jk:&[ca8H)-Y7K,^M6g6r:6-VZG5_21O5_21l5lO(36Mj.L7/fXS8,c*Z9)_Qa;#XAllJ.1Ac?ECDuOkXH2`?nLAm,1P5^mKT`1kgXo>[+^&GnJ`r=<`e,Iqth>Z@3j8SrbMLQrcS3drdk'(rf-oBrgNhZri,n#rjDa?rl"fWrm1Sm +rn%/+ro*ks>i9`@Z`8H)*X7K,^P +6f:<16.S;P5_21O5_21u5lO(*6N0@O7/fXS7fGsX9)_N`:B")h;uTnu>Q/"/A,^-?D#SGRG5cjfK)UT* +NrG@DSGo5]X8]C'\,O/A`;[mXci2Gnf`'b,iVqs$Kr^HfUr^m)^r__8rb2:Jrc8!^rd=]tre^W9rg3VTrhBCorj)O5rkJHNrlY5ermh#%rnm_7roO.FrpKdTrq-3_ +!;?Ngp\t$gqu6Qkro=%7s8Murr;QTmq#:!dp&=L\n,D\QkPjQAhu;C0f)F+sbl5Z^_>_%F[/R9.V#I"c +RJr5hP$;uTSl:&[ca8cD6Z7fGjO6fUN46.S;P5_21O5_21u5lO(0 +6MNqI7K,dU8,c*Z9E%Zb:]=8klJ.1B)ZTFDuOkXHN&EnLAm,1OT([ITDkYcYPtp.])KPF`r=3] +df.ktg]$+0j8S6@m/HGPnc&4\pAjshq"Xjcrqucoh>c=2rr)iorql]irqHEcrpg!Vrp9XJroO.#Trk/6=ricreUQ(rd4Wfrc%jQrb2:>ra,S.r`9"tr_`Yir_3;`r^d#Yr^QlT +qa9C1qa&n#JO"cOJO"cOW^-PLi'RE1qaCEQr^ZrYr_!/_r_EGir`&ktr`fA.raGe>rbMLPrc\9frdb!( +rf-o>rgWn[rhf[urjDaKjo46Z(+e,IYlao96X^&GJ>Yl:U#U]-kaPQ$XBMZ/2+IK"KjE;j\QC&VT@ +?iF=0=8l5!;>sAj9`@]a8H)-Y7fGgK6fUMd5_21O5_21O5cR*-6Mj.I7/f[T8,c'Y9E%Zb:]=5j<;otu +>lJ+0@fC*@D>nMRGlE*iJc:Q+NrG7AT)PJ`W;a%#\,O)?`;[mXcMl;lf`'_+iVqsdBNrquclrqQKerq$-ZrpKdMroa:@rndY.rmh"prlb;\rkJHCrj2U)rhTOcrg*PG +rf-o1rdXoorc8!UrbMLDraGe4r`K/#r_remr_EGdr^m)[r^QlUr^?EHj$N`2h`u`XJO"cOJO$G)r^#R2 +ogA^Hr^HfUr^ZrZr_3;cr_WSmr`9##ra,S4rac"DrbqdVrd4Wpre191rf[8Hrh'1dri?%)rji$Crl4r\ +rm:Yprn7;-ro="?rosFMrp]pYrqHEf!;Z`mqYU3irS@M0s8N#srVl`oqYp9hp\sganc%tUlMfuGj8Rs8 +gA]_'d/M8ga8WmR])K)9XT#*rT`1>XPQ$XBL&QZ&IK"nMRF8gUe +Jc:B&O8b@BR/WcXVZ*[r[/RZ9_#DCRbl5ugfDaP(hu;[8kPjcGmf)bUo`"Uaq#L6lqYL3hrr)iqh>c=2 +rr2oqrquclrqQKerq-3\rpTjQroj@Cro!e2rn7:urltGark\THrjMg0ri#gjrgNhOrf@&7re(3"rcS3\ +rbqdKrac"9r`oG)r`/qpr_NMfr_!/\r^ZrWr^HfSpd_9rb)4Krc8!\rdXp"reUQ7rfmDNrhBCkric=0rk/6HrlP/armC_urn[S3roO.C +rp9XQrpp'\rqHEf!;Z`mqYpElrVlfPs5!_SrqlZnqYpZ1.e,I_nbl5NZ +^](eCYl:^&VZ*1dR/W9JMuJG0J,X`mFT-4XC]7rF@fB^5>Q.b(;uTYn:]=&e9)_E]7f,XR7.iq!6N0:@ +5_21O5_21O5f,ec6.A6u6i0:N7JfRR8cDB^9`@ie;>sMn=T2M'?N+F5BDu]GDuOkXH2`B_u@mZci2Dmg]$(/i;Vp=lMg2Mn,DnWo`"Xbq#L6lqYL3iqu5FOh>dKRqu-NjrqZQg +rq69_rpg!Urp0RIro3q7rnRM'rmC_irl+lPrk&08riQ0urh07ZrfmD@reLK)rd4Wfrc8!Srb2:Ara>_1 +r`T5"r_i_kr_JO"cOJO"cO_Ee)de3a%"qaCZ")df.Sla8X!U^AbM=YPtR$ +U&LS]QMusEM>i2-If=WlF8g+WCAqiE@/aI2>5hP$;uTVm:B!rd9)_B\8,c!W7K,^J6eXm+61I3k5_21O +5_22;5lO('6M3_F7/fXS7fGpW8H)6\9E%]c;#XDmU3jqZ6Tkrr)`nh>c4/rr2oqrqucmrqcWg +rq69]rp]pSrp0RFro3q7rn7;$rm1Serl+lOrji$7riZ6rrh'1ZrfR2>reUQ(rd=]hrc%jRrbDFBra>_2 +r`K/"r_i_lr_EGdr^m)[r^ZrWr^HfSnjCekrBPp!JO"cOJO%LGc9h1kr^?`Sr^QlWr^d#[r_3;cr_WSl +r`9##ra#M2raYqBrbVRQrce?grdb!(rf-o>rgWn[rhTOrrj2U7rkJHOrlb;erm^r#rnm_7roO.FrpB^S +rpp']rqHEgrqc]n!W;lprVlfMs4[MPrr2lqr;QTmqYp6gpAX^`nG_kTm/H/Hj8S!9g]#e'df.Jia8WsT +]Df5;YPtI!U&LV^Pl?aCMuJ>-If=ZmErKtUC]7oE@fBa6=oMM%sSp=8lA%?iFO6Ac?KEDuOeVHN&BmK)U]- +OT(LDSc5A_VuEn![Jmf;_Z%UTbl6&ifDaP(i;Vg:k5O`Hmf)_To`"O_p\t$gqZ-Npr;?Qmrr1XOgAh0O +rr)iorql]krqHEcrq-3[rpTjQroa:Bro*k3rn.5!rm1Scrl"fLrjVm4ri5sorh'1Vrf[8@re19$rdFcf +rc.pTrb)4@ra5Y0r`T5$r_i_lr_NMdr_!/]qa^WTr^?lJ+0A,^-? +C]88OFT-RbJ,Y-#MZ/_:QN!ERUAh+jY5Yj.])KMEa8X9]d/MVqg]$+0j8S3?l2L,MnG`"XpAXgcq#:0i +quHZrrVcWmgAfe)rr2fnrquckrqQKdrq$-ZrpTjOroa:Aro!e2rn7:urm(McrkeZJrj_s3ri?$prgs+W +rfd>?reLK)rd4Wfrc8!Trb;@Dra>_2r`fA'r`&knr_NMer_*5_r^d#Yr^QcRr^?EHejAjmr]u*#PsBmc +JO&?_r^"Cfqa:6Kr^H]Rr^ZrZr_!/_r_=!T`1G[Q2ZjDM>i2-J,X`mFoH@ZD#S,I +@fBa6?2dt*Z@3 +k5OTDm/HJQo)A:\p\t!fqYU0jr;llqqu5=LeGoFErquclrqZQgrq69^rp]pTrp0RIro="9rn[S)rmLel +rlG)VrkJH@riuI)rhKIcrg`tNrf6u8rdk&trd4WbrbqdQrau.>ra5Y0r`T5%r_i_lr_NMer_*5_r^m)[ +r^ZrWqaLKPlpKu'eO'7$JO$G)JO"cOr^"(]njE:Br^H]Rr^ZrYr^m)]r_*5ar_NMjr_i_sr`T5*ra5Y7 +rau.Hrc%jWrd4Wnrdk'+rf6u@rg`t[rhKIprj)O3rkJHNrlG)brmUktrn[S3ro="Arp'LNrp]pYrq69c +rqZQiqtpHm!WDuHs4%)Jrr2lqr;QQlq>U0gpAX^`nc&"Vli-/JjSn-;hu;:-eGdhobPoN\_>_%F[JmB/ +W;`RkT)P&TOoC@>K`6Q%If=NiF8g+WC&V]C@fBa6>Q.e)16Mj.C7/fXP7fGpW8H)3[9)_K_9`@fd;#XDmlJ+0@fC!=C&W&MF8g@^If=ot +K`6u1P5^dHT)PJ`W;a""[/RZ9_>_IRbPolfec+5#hu;X7jSnECm/HJQnc&1[pAXjdq>U6ir;QWprW3#t +eGn%urr2fnrql]krqZQerq-3]rp]pSrp0RFro="8rnIG'rmLekrlP/WrkABArj)O)rhf[frgNhOrf@&7 +re19#rd"Kcrc.pSrb2:Bra>_2r`fA&r`&kqr_WSir_EGcr_!/]r^d#YqaUHOr^>O/r'Q$%L-gGXJO7sT +g-ba*r^HTOr^ZrYr^m)]r_*5cr_NMir_rerr`9#&ra,S3ral(Crb_XSrcS3crdXp"reUQ7rfmDNrh07f +riH+)rj_sArkn`Vrm(Mkrn%/(rnm_7roO.FrpKdTrq$-^rq??erqcWkrr)fp!WN)Js4%)JrqlZnr;QTm +qYp6gpAX^`nG_kTmJc>Kjo49=hYu7.ec*qpbl5Z^_#D"G\,NW2X8]!qTDk;YQ2ZgCM>i2-J,XcnG5cI[ +D>n;LAH$$:?iF:/=oMM%;Z9Ml:]=,g:&[ic9)D3Z8GbpP7efF@7/]K(6\.UU6\.VM6gmG<7JK@O8,GjV +8c)-Z9`@cc:B"&g;>sJm=8lA%>Q/"/@fBp;CAr&KE;k%[HiANoK`6i-NrG=CRf8rYVZ*XqYl;-2]DfVF +a8X9]d/MSpg&Bk-ir8*>kl0uKn,DhUo`"O_p\t$gqu6NmrVc]rrr1FIeGoOIqu-Nlrql]krqQKdrq69] +rp]pTrosFFroF(:rnRM*rmLekrlY5WrkABCrj)O+ri5skrgj%VrfI,ZMq$+V#I%dSc4iPOT(7=K`6Q%If=NiF8g+WD#S,IAH$!9?N+4/=T2A#sAj;#X5h9`@]a9))!W8GG^@7Y+$[7Y+$[7_D4c8,GjS8cD?]9E%Wa:&[ug:]=5j;Z9\q=8l>$>lJ(/ +@/a^9BDu`HDuOhWG5csiJc:?%NW,%=PQ%-PU&LkeY5Y^*[Jmo>_>_FQcMl5jeGe2$h>Z@3k5OTDm/HJQ +nc&.ZpAXgcq>U6iqtp?krW)uHs3CZDrqlZnr;QQlq#:$eo`"F\n,DbSli-,IjSn-;hYu1,eGdenbPoK[ +_#CtF[f3Q2X8\spT`1G[Q2ZmEMuJJ1Jc:)sGlDgaE;j_RCAqfDA,]j7?N+1.=oMJ$<;ohq;>sDh:]=,g +:&[i`9DD-F8bP`,8;p)j8:a=c8E3;:9)_K\9`@cc:A[id;#X>k;uTerQ.t.?iFO6Ac?HDD#SDQ +FT-RbIK"fsLAm,1OT(RFS,T)[VZ*XqZ2V32]DfVF`r=0\ci2Gnf`'b,iVqp;kl0lHmf)\So)A:\p\t!f +qYU3irVQQos3gqms8N#prVl`oqYpsDk:]=,d:&%EJ +9D2#08rQAn8qBUg9&iS>9`@c`:B"&g;#X>k;Z9Vo<;oqt=8l>$>lJ(/@/a^9B)ZKCD>nMRErL@`I/\Zq +LAm)0NrG:BRJrfWV#I@mY5Yj.\c0>B`;[mXc2Q2kfDaP(hu;X7jo4NDm/HJQnc&.Zp&=acq>U6fr;QZl +rW)uHs3CZDrqQHkqYU*fpAX^`oD\7YmJcGNkPjTBiVq[4g&BS%d/M8gaSs!S]`,G?Yl:a'W;`IhSGnrU +OoCC?MuJA.JGsurFoHI]DuOVQC&VcE@fBd7?iF=0>5hY'X2h:]=2f:]=,W:&I_:9SQ5l +9S#mh9^GLN:A[id;#X8f;#X>h;Z9YplJ+0@K'a8BDuZFD>nJQErL4\IK"crKDpf.NrG1? +RJrcVT`1nhXT#I'\Gj/?_#DFSbl5ugf)FA%h>ZC4jSn?Ali->OnG`%Yp&=[aq>:$`rVQQos3gqjs8N#p +rVl`oqu6Hkp\smco`"@Zn,DbSlMfuGjSn*:h#?"+df.Slc2P]]_Z%:K[f3T3YPtI!U]-nbR/WQ.h*=oMP&=8l8"$=oMV(>Q.t.?iFI4A,^*>B`;lJDuObUGQ)pfIf=otLAm)0O8bCCR/W`W +U].1jYPtm-[f4#?_>_FQc2Q)hdf.r!h#?72jSnBBlMg5Nn,DhUo`"O_p\t$gqu6NmrVQTjs3gqjs8N#p +rVl`oqu6Hkq#:!dp&=R^nc&"Vli-/JkPjH>hu;F1f)F.tci2&c`;[RO])K/;Z2Ug'VZ*=hSGnoTPQ$UA +MZ/D1Jc:,tHiA0eF8g+WD#S/JBDuH@@fBd7?iF@1>lIq+=o2>#=8l7t5he+?2e41@/a[8AH$6@C&VrJDuOeVFoHaeIf=otL]321NrG7AQil2L#Jn,DkVoD\F^p\sseqYpBkr;QZlrqcZCs3(HArqQHkr;QQl +q>U0gp\sgao)A+WmJcDMkl0WAiVqa6f`'G#dJhDiaSs*V^Ab\B[/R9.WrAmpT`1J\R/W6INrFt9K`6Q% +J,X`mG5cR^E;jbSD#S)HB)Z?<@JaF2?2e+.>Q.h'=Sl2!lJ%+?iFI4@K'g:Ac??AD#S>OE;jqXG5cddJ,Y'!K`6o/NrG1?R/WWTT`1hfWrB4$[/RW8^Ac%LaSsH` +dJh\qf`'e-iVqm:kl0lHmJcSRo)A:\p\sseq>U6iqtp?hrqcZCs2G$;rqlZnr;QQlq>U0gp&=U_nc&%W +mJcGNkPjQAi;VR3g&BP$d/M;hb5T9W^](nF[/R0rUAgeaRJrKNOT(4Q%as>(Kh;=b0_,=l45\p>lJ%(?N+@3?iFL5@fBp; +B)ZKCC]82MDuO_TF8g=]HiAHmJGt3#L]383OT(OERJriXUAh"gXo>U)[/R`;^])+Lb5TWad/MSpg&Bh, +i;Vg:kPjfHmJcVSnc&.Zp&=acq>U6fr;QZlrqHH@s2G$;rqlZnr;QQlq>U0gpAX^`oD\7Ymf)VQl2KiE +ir7j7g]#k)e,I_nc2P`^_Z%=L\c0#9Yl:[%VZ*=hT)P/WPl?dDN;e\5KDpH$J,XcnGQ)aaEW0qVDuOPO +CAqrHBDuNBAc?3=@f'U5@/++%?N"1'?%H7>>_-.2>hWHU?1M>!?iFI1@K'a8A,^'=B)ZHBC&VlHC]88O +E;jkVFoHXbHN&EnJc:<$M>iJ5OT(LDRJrfWUAh%hWrB7%[Jm`9^]).M`r=6^d/MMnf`'Y)hu;X7k5OWE +mJcSRnG`%Yp&=[aq#:*gqYU3irVQTgs3gqds8N#mrVl]nqYpnJQE;jnWF8g=]HN&PQ%$MSc5;]VuEarYPtm-\Gj5A_>_FQb5T`de,Iqtg]$(/iVqsU6iqtU-erqHH@s2+g8rqlZnr;QTmqYpnAHCAV`EB_5s8BDuLo +AVjuLAV"FKAc$*.BDZBAC%uH?D#S;NDu4MQF8g=]G5cgeI/AEmK)UK'MZ/S6OT(LDRJrcVTDkYcW;`t! +Z2V-0]`,YE_>_OTbPolfeGe,"gA^"/ir8'=l2L#Jmf)\So)A:\p\sseq>U6iqu6NmrVQTas3gqas7lTm +r;QTjqYpZ.-f`'=ucMl#d`W!aR^](eC[f3Q2Xo>=!VZ*7fSc5)W +Pl?gENrFq8M#N/.K)U<"If=]nH2`$eFoHL^F8g1YE;jeTDY7lGD"MN@COp2SBn9uLC"I(fC\qrFD>S5M +DuO_TEW1%YFT-F^GQ)meHiAKnJGt0"LAm#.MZ/Y8OoCUERf8lWT`1hfWW'%!Z2V01\c0AC_Z%ORbPoie +df.nugA]q-iVqp;kPjfHmJcVSnc&.Zp&=acq>:$fqu6Ngrpg$:s1JC2rr2lqr;QTmqYp_1J])K/;Yl:d(X8\poU&L\`Rf8WPP5^RBNW+k8LAll* +K)U<"If=`oHN&3hGlDjbFT-@\Er0kLE;+;KDh2e\DLl\VDV&e!Dt7lHEVjeUF8g:\FoHXbH2`-hI/\To +JGt0"K`6`*MuJ_8OT(FBQiZ@3jSn<@kl0rJ +mf)_ToD\F^pAXjdq>U6iqu6NmrVQT^s3gq[s8N#mrVQKkqYp6gpAXaao)A.Xn,D\QlMg#Hj8S$:hu;@/ +f)F+sd/M8gao93W_>_1J\Gil7Yl:d(WW&doT`1P^SGniRPl?gEOT(7=MuJJ1K`6W'Jc:3!J,XorIK"Wn +HiA?jH2)X`G5$+[F`i7WK62ZdJTT:]qfVdZpiud`rd+Qjrd=]nrdOirrdb!!re(3(reCE1rf-o=rfR2E +rg*PRrgs+^rhf[oriQ1(rjDa8rkABIrkn`WrlkAgrmLetrn@A/ro*k:roj@Hrp9XQrpg!Yrq69arqH#_rm:Ymrn%/'rn[S4roF(@rosFJrpKdTrpp'[rq??crqQKhrql]mrr)Nhmf1`8\c;[.qu-Nlrql]k +rqZQgrqHEarq$-[rp]pSrp0RIroX4@ro!e3rn@A%rmUkmrltG`rl+lPrk8"df.Vmc2Poc`W!dS^](tH]Df>>Zi790YPt['WrAsrV#I+fU&L_aT)P;X +S,SlUR/<6LQ2[$@PQ$^FOn4]dOH5KSOF`MOOS+b5P4b%O'Z2V*/\Gj)=^AbnH_Z%ORbPoccd/MJmec+2"h>Z=2i;Vj;kPj]Eli->OnG_tWoD\C]p\Xa_qYpBe +rVQTUs3gqOs8N#mrVl`oqu6Hkq>U0gp\smco`"C[nG_nUm/H;Lkl0]Cj8S!9hYu:/g&BM#df.SlcMl#d +aSs-W_>_4K]`,MA\Gil7ZMUm*Y5YO%W;`^oVYd.fUAghVTD4uUSFE&"S!'7lRt7'kS*?IU0gpAXaaoD\=[nG_kTm/H;Lkl0`DjSn*: +hYu=0g&BV&ec*tqci2/fao9?[`;[RO^](tH])K5=\,Nc6ZMq*-YPYI$Wr&dpVuERdV>-hbU&^mL&YPtd*Zi7?2\,Nr;])KGC^])%J`;[dUao9N`cMl5jec+2"g&Be+ +hYuI4jSn<@kl0lHli->OnG`"XoD\F^p\sseq>:$cr;QZirnmb(s/Q+urqQHhqu6Hkq"sgbo`"I]o)A.X +n,DbSlMg#Hk5OB>iVqa6hYu:/f`'D"df.SlcMl&eb5TBZ`;[XQ_#D(I^&GVB\Gir6Zi790YktX'Y5YR& +XSAjqWqWInWMtHIK;a@"JZ-tpql0ImpoFCqriQ1&ric4'qm-4-rjMg9rjr*BrkJHJrkeZPrl+lZrlb;d +rm1Slrm^r"rn@A.rnm_6ro3q>roj@HrpKdSrp]pXrq$-]rqHJZs^0i3;mZo!88$qm?@1qmQL5rj_srkA-?mCe(`Q+V[\J\:$Ul+Qu.rkJ$>qni?Mrl+cSrlP/_ +rlkAerm1SjrmLeprmh#"rn7;*rndY3ro!e9roO.ArosFJrpB^Rrp]pWrq$-]rq69brqQKgqtgl,s"Kp!!E[qp,)cqpPAkrmgnurn7;+rn[J0ro="=roX4Croj@Hrp0RN +rpTjUrpg!Zrq-3_rqHEerqZHfrqlTjrr)Wkc2Z5lR/d0bq#13irqlThrqZQgrqHEcrq69^rpp'Yrp]pU +rpKdOrp'LHroX4AroF(?+,i;;O5jSn9? +kPj`FlMg,KmJcPQnG_nUnc&+Yo`"O_pAXgcq#:*dqYpBhr;6Hirl"ibs-Z=/i;;O5j8S0;k5OTDl2KuFm/HDOn,DhUnc&.Zo_\=\pAXgcq>:$fqtU*grUp0.s3gq.s82fgrVl`i +qYp9ep\smcp&=U_oD\=[nc&%Tn,D_Rm/H>Jl2KoGk549;j8S'8iV;@1hu;R2htZ(,h1=C5h1=C5h9OjO +hYZ40i;VX,i;V^4ir8!;jnn3;kl0iGli-8MmJcSOnG_tWo)A7[o`"O_pAXg`q"X^_r;6Hcrk\W_s+^RQ +rqQHkr;6BdqYp9ep\smcp&=U_o)%tVnGD\RmecDKli-2Hl2KoDkPjW:jRqR0ir%eeiJ-iUZ"* +j7;:.k5OQ@kl0iDlMg,KmJH>Nn,)VRnb_nVo`"O_pAXg`q"X^bqtp:$fqtU*[rj`!Vs+C@HrqQHkr;6BdqYp9bp\smcp&=U\oD\=Xnb_hT +n,DhUn,DbPmIfi@lLa:$fqt9m[rLj2=s+14Hs7lTgrVl`lqtU$bq>U0ap\sm`p&=U_ +oD\=XnbDVQn,DhIn+?%!mXaeWmXafFmdfiGnG_nLnG_tWo)A7[o`"O\pA"CZq#:*aqYpBhr:p6cri,qG +s+C@HrqQHkr;6BdqYp9bp\smcp&=U\oD\=Xnb_hTn,DhUn,DbPmIfi@lLapuq;3qrRn?J`VIEJ`VIEeE-Acp#l,6q!%S>q!J(LqsaUTqssXVrq60^rqHd^BJ`55>o&BQ,o&T]1roa1Bros=Frp0RNqsOIPqsaUTqssaYrq69arqHhs`P5kO\p&4mfqtp9drqQBbrq??`rq$-[rpg!WrpTjRrp9XMqs"+DroX+>qr@\8ro!\2rndY1p"]#i +rRh5)fn%e.fR_\+f[8@Ng$dYfh#?./hYuF0i;;O5j8S0;k54BAl2L#Jm/HDOn,DhUnc&+YoD\CZpAXg` +q#:*gqtpU0gp\smcp&=U_o)A1Yn,DhUmf)VQli-2Kl2KlFk5OH@ +ir7p6i;;F/h>Z4/g@a.uf`'M%f(%8ke^`p6J^^+;J^]2!n'g=Ho%!`jrn%&"qq:l#qqV2,qqq;/qr7V9 +roO.BrosFIrp0RNrpKdTrpTjVrpp'\rq69arqHEerqZHfrqlTjqu-Ek`;e9cR/d0bq#13irqlThrqZQg +rqHEcrq69^rpp'Yrp]pUrpKdOrp'LHroX4AroF(ro3h5rndY0rn@A)rn.5$rmh"trmLenqp>>grm(Dcqonr\rlXuWJ]WJbJ]WJbbK9Y(rlauY +rlt>cqp>5grm^qtrmq)$rn7;)rnRM/qr%J5ro=">roa:Frp0RMrpKdSrpg!Yrq-3_rq??cqtU0drqcWk +qu$?irr1(?df5p=rr2]krqucmrqcNfqtL*`rq-3\qsaURrpKdOrp'LHroX4@ro3q8rnm_3rnRM,rn7;$ +rm^qrrmC_lrm1Shqp##]rlY5^rlFlTrl4iSqS^q&J]"V-J]!&VaMe(sqo8NRrlG)\qo\o]rlt>crm1Sj +rmC_orm^qtrn7;*rnRM0rnm_5ro3qrkn`Sqo8WWrlb;brm(Mhrm:YmrmUks +rn%/&rnIG/rnm_5ro=">roX4Erp0RNrpTjUrpg!Zrq-3_rqHEerqZHfrqlKhqu5(Edf6-Crr2]krqucm +rqcWirqQKerq??`rq$-[rp]pTrp9XLroj@Ero=";ro!e4rnRM,rmq)!rm^qqrm:Yirlb;`rlP/[rl+lS +qn`9IrkJ?Dpq-O:qml^9pUBb'J[UWJJ[U-L&YPYR$ZMq30[f3f9])KDB^])%J_Z%IP`W"$ZbPofdci2AleGe,"gA]t.hu;U6ir8*>kl0lH +mf)\SnG`"XoD\C]p\Xa_qYpBerVQTLs3gqLs8N#mrVl`oqu6Hkq>9pcpAX[_o)%nTm/H>MkPjWCj8S!9 +hYu=0f`'J$eGdhocMl&eaSs3Y`W!^Q^](qG])K5=\,Nc6ZMq*-YPt['XT#7!WW&jnVuERgV#-q`U@=n. +Tou+#Tn/p"U#r*KU\1G[VZ*LmW;`dqWrB+!Xo>O'Yl;!.[/RQ6\c02>^&GeG_>_FQa8X0Zbl5oed/MPo +f)F>$h#?./i;Vd9jo4HBli-;Kn,DkVoDA7\p\t!fqYpBhr;6HlrnRP%s02P&rqQHkr;QTmqYpi;VU4g]#n*eGdnqci25hbPoT^`;[UP^](nF])K5=[/RB.Yl:g)XT#0t +VuERjU]."eT^n`MSc,)JS:R/mRt7&[S*$4)SGo)VT(S`QT_kJ_U]..iVuEXoXT#@!Yl;!.[/RT7])KAA +^])+L`;[jWb5T]cci2AleGe/#g]$(/i;Vd9jo4KClMg/Ln,DhUnc&1[p&=^bq#:*gqYpBkr;6Hirnmb( +s0Mb)rqQHhqu6Hkq"sgbo`"F\nc&%WmJcGNkl0`Djo43;hYu@1fDa>"df.Vmc2Poc`W!dS^](tH]Df>> +Zi790YPt['WrAsrV#I+fU&L_aT)P;XS,SlUR/<6LQ2[$@PQ$^FOn4]dOH5KSOF`MOOS+b5P4b%O'Z2V*/\Gj)=^AbnH_Z%ORbPoccd/MJmec+2"h>Z=2i;Vj; +kPj]Eli->OnG_tWoD\C]p\Xa_qYpBerVQTUs3gqRs8N#mrVl]nqYp_4K]`,D>[JmK2Yl:d(WrAmpV#I+fT`1P^SGnuVR/WHLQ2[$IP5CC@ +OSb+6Nr=q.N.HnJMh-e;Mr9N^N;/G4O8G%^AbtJ`r='YbPoiedf.bqg&Bb*hYuL5jSn<@lMg,Kmf)\Snc&.WpAXgcq>U6iqtU-eroO1.s1/1) +rqlZnr;QQiq>U-fpAX^`nc&%Wn,DYPlMg#Hj8S$:hu;C0g&BS%d/M>ibl5W]_u@IN^Ab_C\,N]4Yl:g) +WrApqV#I%dTDkG]S,SiTQN!-JPQ$^DOT(=?Nr+h8N;/;0M#2u+L4P)1L4P)1L:$cr;QZirojC1s1/1/rqlZnr;QTmqYpZ.-ec+%sci22gaSs0X_#D%H]Df2:ZMq',XT#0tV>d1fTDkD\RJrQPPl?gEOT(:>N;eb7MZ/G2 +LAlo+K`6W'K):,oJGt&tJ,k(MIt<*#It<*sJ,XutJ+\?kJc:9#KDpQ'L&Ql,M#N;2MuJ\7NrG+=OoCUE +QN!OnG`"XoD\C] +p\sseq>U6iqu6NmrVQTXs3gqXs7lQiqu6Hkq#:$epAX[_o)%nTm/H;Lk5OE?i;VU4gA]_'df.Slbl5]_ +`W!^Q^&GSA[f3N1Xo>C#V>d7hT`1M]RJrQPPQ$^DO8b+;MZ/J3L]3&-L&Q`(K):)tIe\?jI/&'fH2r5A +H%C6lH%C7jH2Dp_Hi&3fIK"]mJGt0"KDpT(LAlu-M>iG4N;en;OoCRDQi_FQaSsE_ci2AlfDaM'hYuI4jSn<@lMg/In,DkVoD\I_p\ssbqYpBerTO:0s1JC2rqQHhqu6Hk +p\smcp&=O]nG_nUm/H;Lkl0WAiVqa6gA]\&df.Vmbl5``_u@LO^AbYA[/R=!VZ*7fT)P8ZQN!-J +OoCIANW+k8LAll*KDpH$JGt&tIf=cpI/\KlHN&3bGlDm\FTHW-JTQNdJTQHbd<,8.qf_aZrd"Khrd4Wl +rdFcprdXotrdk'$re:?+repc8rfI,ArfmDJrg`tZrh07fri,n!rilC0rj_sArkSNNrlP/`rm:Ymrn%/' +rnm_6ro="Arp'LLrpTjVrpp']rq??cqtgrfd>Mrgj%]rhoarric=-rj_sArk\TQrlY5drmUktrnIG/ +ro*kqd]V7qdKA/nm;9#o3HoPO'I6@JR%,1raG\5raYq1raGe:ral(ArbVROrc%jXrc\9drdXp!re19/rf6u? +rg<\Trh07fri5t$rj;[8rkABLrlG)`rmC_qrn.5-ro*k:roj@HrpB^Rrpp'\rqHEerqZQirqlTkqu6Hl +df7Mjrr2]krquclrqQKerq??^rp]pUrp0RJroX4=rndY/rmh"rrm1Sbrl"fOrjr*;riuI'rhf[grgj%U +rfd>Breg]0rdaurrd+QdrcA'Wrb_XLrb2:AraPk7ra5Y1r`oG,r`];(r`B)"oi:ujmSj$^r_e;EM,Ah$ +JPk6#qblcZqc*5gr`9#"r`T5(r`fA,ra#M1ra>_8rac"ArbDFLrbqdVrcS3drdFcrreCE0rf@&Brg<\U +rh9=gri?%'rjDa:rkSNPrlG)brmLerrnIG/ro*k=roj@IrpTjVrpp'^rqHEerqcWkqu-EkqZ#"DbQ%S@ +qu-Nlrql]krqHEcrq-3ZrpTjSrp'LGroF(:rnRM+rmLelrltG]rkeZKrjMg3ric=!rhKIbrg<\Krf@&9 +reCE'rdOimrce?]rbqdQrb2:BraYq8ra5Y2r`fA*r`T5&r`B)"r`/qsr_i;ar_NMipJ6?9JPUhmJPX?_ +r_WSir_W8br_i_or`/qur`B)$r`T5(r`fA.ra5Y4raYq>rb2:JrbqdUrce?frdOitreCE0rf@&Crg<\W +rhKIjric=-rjMg?rk\TQrltGhrmLf!rnRM2roF(Brp'LNrpTjUrq-3_rqHEgrql]mrr)`nqZ#"DcN!nC +q#13gqt^6brq-3]rp]pSrp0RHroO.ra>_4r`oG+r`K/#r`/qsr_iVjqb[8fr_WJfr_DlUr(V`9L.m.lJP=ZhlqR@P +qbR2fr_NDfr_`Pjr`&ksr`9##r`];+ra5Y5raPk>rbDFLrbqdVrcS3grdb!#repc9rfR2Jrgj%]ri#gt +rilC3rk/6GrlG)_rm:Yqrn7;,ro*k;roa:HrpKdTrq$-^rq??eqtg*dqu-Tqdf7Vmrr2]krqcWirqQKc +rq-3[rpTjQrp'LFro="8rnIG'rmLekrlP/XrkABBrj;[-ri,mmrgs+Xrg!JDreg]0rdauqrcnE`rc%jR +rb2:CraYq8ra#M-r`T5&r`9"tr_i_mr_WJfr_E>bpe:QXnOe@)JP(JcJP*[Lr_*#[r_<8br_NDfr_`Yn +r`&ktr`B)%r`fA-ra>_8rau.Crb_XRrcA'`rd=]qreCE0rf@&DrgEbWrhTOmriZ7-rji$Brl"fXrm(Mk +rn%/(rnm_8roX4Frp9XQrpg!Zrq69crqZQiq#1*h!<:LIcN!nCqu-NlrqcWhrqHEarpp'WrpKdOroj@B +ro*k5rn.5"rm1Serl+lPrk&0Crf-o1rdk&trc\9^rbqdPrb2:Ara>_3r`oG)r`9"ur_i_mr_NMi +r_EGdr_*5_pdtHUpdaX>JOY2[JOY2[]LMZdqagTUr_!/_r_3;cr_WSir_`Ymr`/r!r`K/)ra,S3rac"@ +rbVRPrcA'^rdOitre191rfI,Crgj%^rhTOrriuI1rkABJrl+l^rmC_prn@A-ro!e_3r`fA)r`/qsr_remr_NMgr_3;aqb$iZqagTS +pdX^@rBu3)JOG&WJOIdOmm["@r^Z`Sr^luZr_*5ar_EGgr_WSmr`&ksr`T5)ra,S3rac"@rb_XRrcA'b +rdFcsreUQ4rfI,Irgj%^ri5t#rj2U9rkJHMrlb;ermLeurnIG0ro="@rp'LNrp]pXrq69brqQKhrqlTk +rr)otdf7hsrr2fnrqucmrqcWgrq??`rp]pTrpB^KroO.=rndY.rmh"prlkA^rkSNGrjVm2ri?$qrh'1Y +rg!JCre^W-rdXonrc\9[rb_XLrac":ra5Y/r`T5%r_i_lr_NMgr_#]rm:Yprn7;-ro3q>roj@KrpTjUrq-3_rqHEgrql]mrr)fp!WN)Js4%)J +rqlZnqu6Hkq>U*eo`"I]nG_hSli-#Fj8Rs8g]#e'df.Pkao93W^AbYAZMps)VZ*7fRf8TOO8at7K`6K# +H2_scEW0hSB`;TB@/aI2>Q.\&<;ohq;#X8i:B!oc9)_E]8H)-V7f,XR7,10-6\.RY6@hIS6J"QX6i0:N +7JK@O8,c'Y8cD?]9E%]c:]=2i;uTer&?N+@3Ac?ECD>nPSFoH[cJ,Y*"M#NJ7Pl@-NT`1hfXT#O) +\Gj5A_u@aVcMl8kfDaP(hu;X7jo4TFmf)_ToD\F^pAXmeqYpBkrVc]rrr1FIeGo=Brql]krqZQdrq-3[ +rpTjQrp'LDro*k5rn.5#rmC_grl+lPrjr*:ric="rhKIbrg*PGrf-o2rdk&srcS3\rbqdMrau.=ra,S. +r`T5"r_i_lr_NMfr_3;`r^m)[r^ZrWpdP0MfgG[)g-U?VX[.M(JO.mSe3j+$qaLKRr^ZrYr^m)]r_3;c +r_NMir_reqr`T5)ra,S5rau.DrbqdVrcS3grdk'&rf-o?rg*PUrhKIkric=.rjr*Erl4r\rmC_qrn.5, +ro*k;rp'LLrpTjVrq$-^rqZQirqlQj!WDuHs4%)GrVl`oqYp*pT`1J\P5^L@MZ/2+If=]nErL"VD>n/HA,]j7>lIn*=8l+s;#X8i9`@]a9)_E] +8H)-Y7f,XR7-m;)6IeF%6%M;*5_21O5lO'[6LmM@7/fXP7fGpW8H)3[9)_K_9`@ie;>sJm=8lA%>lJ+0 +A,^*>D>nMRErLFbIf=otMZ/Y8P5_!NTDkVbXo>X*[f4&@`;[jWci2Dmf)FM)i;Vd9kl0lHmf)_ToD\F^ +q#:*gqYU0jr;llqeGn/#rr2fnrquclrqQKerq-3\rpTjQrosFEro!e3rn@A#rm:Yhrl"fNrk&08riQ1! +rh07[rg!JDre^W-rdXomrcS3ZrbVRIraPk6ra#M*r`/qrr_WShr_3;`r^m)[pdY6NlpKYsn3[+?JO#Jc +JO"cOk!8o3b_7rb2:Irc%jZrd+Qnre19.rf@&DrgWn[ +ri,n"rj)O8rkSNOrltGhrmUl#rn[S3roX4Drp9XQrpp'\rqHEfrqcNi!;ursrVQTJs4@;Mrr2lqr;QTm +q>U0gp\sd`nc&"VlMfuGjSn*:h#>t*df.Pkb5T6V^&GP@Yl:^&VZ*1dRJrELN;eV3K)U/sGQ)X^DZ4DM +B)Z3;?2e%,sAj9`@]a8cD9[8,c!T7Hm1s6L[>@6%M:d5_21O5it?26-DU]6iKOO7fGpW8H)3[ +9E%Zb:]=5j<;oqt>5hh,@/ad;C&W#LErL:^I/\`sL]383PQ$sKT)PVdX8]@&\Gj2@_>_UVcMl8kf`'Y) +i;Vg:kl0lHn,DkVoD\L`q#:*gqu6Knr;llqqu5=LfDkjLrr)iorql]irqHEcrpp'XrpKdMroa:@rnm_/ +rmq(qrlkA^rkSNFrjDa.ri#gjrg`tRrfI,:re:?$rd"KbrbqdOrb)4?ra5Y/r`T5#r_i_kr_#]rm:YqrnIG0ro="?rosFMrp]pXrq??crqQKi +rqlcp!WDuorn@D+s8N#srVl`oqu6Hkp\smco`"C[n,D\QkPjTBiVqX3f`'A!ci2&c`;[IL\,N]4WrAjo +TDk2VP5^L@K`6N$IK"?fEW0kTBDuH@?iF=0=oMJ$;Z9Ml:]=#d9)_EZ8,c!W7.N^l6Ms0$5__OT5_22P +5g)Le6i0:K7fGpW8cD?]9E%`d;>sJmlJ+0A,^-?DZ4YTFT-^fJc:?%NrG4@QiZOoC@>M#Mr(I/\?hE;j_RCAq`B@/aI2=T2>";Z9Ml:B!rd8cD9[8,c!W7K,^G6d\7! +5_21O5_21O5gDX?6M3_F7/fXS7fGpW8H)3[9`@cc;#XAl +S,T)[V#IOrZi7N7^])4ObPoieeGe/#hu;X7jo4TFmJcVSo)A=]p\t$gqZ-Npr;?Qmrr1XOh>dKRqu-Nk +rqcWirq??`rpg!Vrp0RIro="9rn[S)rmLelrl>#UrkAB=ric=$rh9=]rg*PEre^W,rdOilrcA'WrbDFE +ra>_2r`];$r_remr_EGdr_!/\r^ZrWr^HfSog@G"r^$'>JO"cOJO"cO_Ee)dg-YI"r^?`Sr^QlWr^d#\ +r_*5cr_WSmr`/r$ra#M2rau.ErbqdWrcnEkre19.rf@&Erg`t]ri5t$rj;[=rkeZTrm1Smrmq))ro!e9 +roj@IrpTjVrq-3`rqZQi!;cfoqu6Qkrn[V1s8N#prVl]nqYph&d/M;h +`W!^Q]`,59Xo>6tT`1DZPl?[AL]2l(HiA3fEW0hSB`;N@?iF:/=oMD";Z9Jk:B!oc8cD6Z7f,XR7.iq$ +6N0:@5_21O5_21O5f,ec6/"Zu6iKLN7K,dU8,c*Z9E%]c:]=8k<;p&">lJ+0A,^0@D>nPSG5cjfK)UT* +NW,1ARf8uZVuEgtZMqN9_#D=Pc2Q,ieGe8&hu;X7kPjcGmf)_ToD\F^q>U3jqZ6Tkrr)`nh>c=2rr2fn +rqcWirqQKbrpp'WrpB^Lroa:=rn[S.rmUknrlkAZrkJHCrilC&rhf[drg<\Jrepc0rdXomrcJ-XrbMLF +raPk5r`fA(r_renr_NMer_!/]r^QcRr^?EHf0]I&nN_XjJO"cOJO%(;r^#%#qa:6Kr^H]Rr^m)^r_3;e +r_`Ynr`K/'ra,S5rb)4GrbqdXrd"Kmre:?0rf[8Jrgs+dri?%&rji$Brkn`Zrm1SmrnIG/ro!e=rp'LM +rpTjWrq-3brqQQj!W)ZlrVQTMs5!_Srr2lqr;QQlq#:$eo`"F\n,D\Qkl0]Ci;VO2g&BCuc2Pia_>_+H +[f3K0W;`OjRf8TOO8at7KDpB"FoHF\DuODKAH$!9>lIk)sSp=T2S)@/a^9BDuiKErL4\J,Y*"M#NJ7Pl@-NUAh.k +YPu!0]`,bHao9QadJhhuh>Z@3jo4KCm/HJQo)A:\p\ssgq>pHhrqucorr1aRh>dBNrquclrqQKerq$-Z +rpTjOroa:Arnm_0rn.4srlkA_rkSNFrjDa-rhoahrgEbLrf6u4rdk&rrcJ-YrbVRGraYq7r`fA'r`/qo +r_EGer^m)[r^ZrVr^?EHj$NW/i]r&[JO"cOJO$P,r^#I/ogA^Hr^HfVr^d#[r_Lrh9=hriQ1-rk&0FrlG)_rm:YsrnIG0roF(Brp'LOrpg!ZrqHEf!;Z`m +qYU3irS@M0s82cor;QQlq#:$eoD\:Zmf)JMkPjN@hYu7.ec*qpbPoN\^](eCZi7$)V#I"cQN!$GNW+V1 +J,XfoErKtUC]7lD@K'U4=T2A#;uTVm:B!rd8cD9[7fGjU7.iq-6N0:.5_21O5_21O5d3NQ6/t<)6iKLQ +7K,dU8,c*Z9`@cc;#XDmpHhqu$Hlh>c=2rr)iorql]jrqQKdrpg!VrpB^KroO.rilC#rhKIarfd>Breg]+rdFcjrc%jQrb;@@ra5Y0r`B)!r_`Yjr_3;ar^d#Yr^QlTog@b+ +fg(*RJO"cOJO$5#i'R<.qaCEQr^ZrYr_*5br_NMjr`&kur`oG0raPk@rb_XRrcnEirdk'+rf6uArgs+` +ri#h#rjVm?rl"fXrm(Mlrn.5+ro*kU9jr;QZNs5!_SrVl`oqu6Ejp\sjb +nc&"VmJc;JjSn*:h#>q)df.MjaSs*V]Df5;YPtI!U&LS]P5^I?M#Mr(HiA0eE;j\QB`;H>?N+1.Q.t.@K's> +C]8;PFoHaeJGtB(NW,+?SGo5]VuEn![Jmf;_u@aVc2Q/jfDaS)i;Vg:kPjlJn,DkVp&=[cq#UdKQrqucmrqQKdrq69\rpTjQroa:Arnm_0rmq(srlkA^rk\TFrj;[.rhTOcrgEbIrepc1rdXom +rcJ-XrbDFEra>_2r`];$r_relr_'oSc4uTOT(.:KDp8tGQ)X^D>n5JA,]m8>lIk)<;oep:]=)f9)_E]7fGjU7/0.06N0:%5_21O +5_21O5c6mH6/t<,6iKLQ7K,dU8cDB^:&[rf;Z9Yp=T2P(@/a[8B`;lJErL:^I/\ctM>iV9Qira,S.r`K.ur_`Yj +r_*5_r^m)Yr^HfSpd=(.r^#+#JO"cOJO"cOVa15Ij$NN.r^?`Sr^QlYr_!/_r_NMjr_reur`];-raPk> +rbVRSrce?grdt-*rf6uDrg`t]riH+(rjMg@rl"fYrm:Yprn.5-ro3q=rp0RNrp]pYrq-9c!Vc?fqYpBk +rVQTSs55hk-@fC$>C]8>QFoH^dJc:H(NW,4BRf8uZWW'+#[Jmr?`;[jWci2DmfDaY+ +iVqs_1r`T5$r_i_kr_sAj +:&[``8H)-Y7K,^M6g6r:6-VZG5_21O5_21l5lO(36Mj.L7/fXS8,c'Y8cDH`:]=5jlJ.1AH$6@ +DuOhWGlE3lK`6l.P5^jJT)PVdXo>X*^&GkI`W"-]dJh\qh>Z@3j8SU*eoD\7Ymf)POkl0T@hYu:/e,I_nbl5NZ^](hDYl:[% +V#Hn`QMusEM#N&+If=KhEW0hSB)Z<>?iF:/=8l5!;#X5h9`@W_8H)*X7/K@36N09q5_21O5_21O5b:7? +6/t<26i0:N7fGpW8cDE_:B")hQ/"/A,^*>D>nPSFoHjhK)UT*O8bFDSGo>`X8]@&])KGC_u@mZ +ci2Dmg]$+0ir80@lMg5NnG`%[p&Xm\rqZQjrqucorr1sXj8],Xrr)iorqcWirq69^rp]pTrp'LGro*k5 +rnIG$rm1Serkn`Lrj_s3ri5snrgWnOrf@&5rdk&srcS3[rb_XGraPk6r`T5%r`&knr_EGdr^m)[r^QlT +qa9^:og-hfJO"cOJO"cORm?j:ksGA:qaCEQr^ZrZr_3;cr_WSnr`B)%ra5Y6ral(Grc.p[rdFctreCE5 +rg!JPrhTOnrilC3rkABLrlb;ermUl$rndY5roa:GrpKdTrpp-_!VQ-bq>U9jr;QZoro=%=s8N#srVl`o +qYp5_21O5_21c5lO(96N0@L7/f[T8,c*Z9`@cc;#XDmZC4kPjcGmf)_To)SFap%A=[ +rql]mrr)iqj8\0>rr2oqrql]krqZQdrq$-YrpB^Lroa:=rnRM+rmUkmrlb;Xrk8U'doD\7YmJcALkPjE=h#?"+e,I\mbPo?W^&GM? +Y5YC!UAgV\PQ$R@K`6K#HiA*cDuOPOAH$$:?N+(+_>_XWci2Dm +g&Bh,i;Vp=lMg2MnG`"Zo`=aYrqZQirql]nrr1sXj8],Xrr)inrqcWhrq69^rp]pSrosFDro!e2rn7;! +rm(Mcrk\TIrjVm0ri#girgEbKrf-o1rdXoorc8!UrbMLDraGe4r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"DrbqdVrd4Wpre191rfd>Lrh9=hriZ70 +rk/6HrlY5crmLf!rnRM2roO.DrpB^Srpp-_!VQ-bq#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\nG_eR +l2KiEi;VO2g&BCucMkuc_>_+H[f3H/VuE@gR/W9JNW+S0J,XcnErKtUCAqcC@/aI2=T2>";>sAj9`@]a +8H)*X7JK7=6G>^95_21O5_21]5jq&76iKOR8,c'Y9E%Zb:]=5jZ@3k5OTDm/HMRo)SC`o^r.XrqZQjrr)iqj8\0>rr2oqrql]k +rqQKbrpp'Xrp9XKroO.;rnRM+rmC_irlP/Urk/6=riZ6urh07Xrf[8?re(3"rd+Qarbh^Mrac"9ra#M* +r`/qpr_NMer_*5\r^QlUpd=L:^-I67JO"cOJO#8]mm?e:r^HfUr^Zr\r_U9jrVlfV +s5X.Yrr2lqqu6Hkq#9pbo)A.Xm/H8Kjo43;h#?"+dJhDiao9*T]Df8XP5^I?KDpB"HN%sa +DZ4DMAH$!9?2dt*sSp +=T2V*@K'g:CAr,MErLCaIf>!!NW,+?R/WcXVuEju[f3r=_#DITc2Q,ig&Be+i;Vj;kl0rJnG`"ZoE"UV +rqQKgrql]nrr1sXj8],Xrr)inrqcWhrq-3\rp]pRrosFDro!e2rn7:urltGarkSNFrjMg/rhoagrg<\J +rf-o0rdXonrc8!UrbDFCra>_2r`K/"r_`Yjr_3;`r^ZrWr^HTLmm=`RJO"cOJO"cOO$N/#pd>$Lr^QlW +r_!/`r_NMjr`/r"ra#M3rac"Crbh^Urd+Qmre(30rf[8Jrh07griZ7/rk/6GrlP/armC_urnRM2roO.C +rp9XRrpp-^!VH$`q#:*gqu6Qnro=%=s8N#srVl]nqYp9ho`"F\nG_eRl2KfDi;VO2g&BCucMkuc_#CtF +[f3H/VuE@gR/W9JNW+S0J,XcnErKtUCAqcC@/aI2=T2>";>sAj9`@Z`8H)*X7JK7=6G>^95_21O5_21] +5jq&76iKOR8,c'Y9)_N`:]=5jrr2oqrql]krqQKbrpp'Xrp9XKroX4U9jrVlfVs5X.Yrr2lqqu6Hkq#9scoD\7Y +mJcALjo43;h#?"+df.Pkb5T6V^&GM?Y5YC!U&LJZP5^I?K`6K#HiA'bDZ4GNAH$$:?N+(+_>_UVcMl8kg&Be+i;Vj;l2L)LnG`"Zo`=aYrqQKgrql]nrr1sXj8],Xrr)in +rqcWhrq69^rp]pSrosFEro!e2rn7;!rm(McrkeZJrjVm1ri#girgEbLrf6u2rdXoorc8!UrbMLDraGe4 +r`K/"r_i_lr_$Mr^ZrYr_*5br_WSlr`9##ra,S4rac"D +rbqdVrd4Wpre192rfd>Lrh9=iric=1rk8";Z9Ml:&[fb8H)-Y7ef@>6G>^95_21O5_21]5jq&76iKRS8,c'Y9E%Zb;#XAl +Z@3kPjcGmJcVSo)SFa +p%A=[rqcWkrr)iqj8\0>rr2oqrquclrqZQdrq$-YrpKdNroa:>rndY.rmUkmrlb;Xrk8<@rilC%rhKI] +rfmDCre:?&rd=]erc%jQral(rp'LNrp]pY!;-Bcp&=ddqu6NmrVlfVs5X.Yrr2lqr;QQlq>U*eoD\7Ymf)POkl0T@hYu7. +e,I_nbl5KY^Ab_CYl:[%U]-b^Q2ZjDL]2l(IK"?fE;j\QB)Z9=?N+.-=8l1u;#X5h9`@W_8H)*X7/K@< +6M3Xh5_21O5_21O5at%960U`86i0:N7fGpW8cDE_:B")h<;otu>5hk-@fC!=D#SDQFT-^fK)UQ)O8bFD +S,T2^WrB7%])KGC_Z%dYci2DmgA]t.ir80@lMg5NnG`%[p&Xm\rqZQjrqucorr1sXj8],Xrr)iorqcWi +rq??_rp]pTrp0RIro3q6rnIG$rm:Ygrkn`Mrjr*5ri5snrg`tRrf@&7re(3!rcS3[rb_XHraYq7r`fA' +r`/qor_EGdr^m)[r^QlTqa9C1r^"doJO"cOJO"cOSj<9@j$N`4qaCEQr^ZrZr_3;dr_WSor`K/(ra5Y7 +rau.Hrc.p[rdOiureUQ7rg!JQrhTOorilC5rkABLrlkAfrmUl$rnm_7roj@HrpKdTrq$3a!VZ6dq>U9j +r;QZoro=%:s8N#sr;QTmqYp3fo`"C[n,DYPkl0T@hu;F1ec*tqc2P]]_>_+HZ2Uj(VZ*.cQi<-HM>i/, +If=NiErKtUBDuH@?iF=0=T2>";>sAj9`@W_8H)*X7.iq36N09q5_21O5_21O5b:7?60:N26i0:N7fGpW +8cDE_:B",ilJ+0A,^-?DZ4\UG5csiKDp`,OoC^HSc5McXT#L(]`,_G`W"-]dJh\qh#?41ir80@ +li-APnc&.\p&Xm\rqcWkrquZmj8\';rr2oprql]krq??`rpg!Vrp0RIro3q7rnRM(rmLekrl4rRrk/69 +riQ0trgs+VrfR2;re19#rce?_rbqdLrac"9r`oG*r`9"rr_NMer_!/\r^QlTog@t1r^"doJO"cOJO"cO +Sj<9@k!Jr4qaCEQr^d#\r_3;er_i_rr`K/)ra>_:rb2:LrcA'_rdXp#reg];rg3VUrhoatrj)O9rk\TR +rm(Mkrmq)(rnm_7roj@IrpTjVrq$3a!VZ6dqYpBkr;6KRs5Z")df.Sl`rlIn*Q.b(;uTYn:B!rd9)_B\7fGjU7/K@06N0:%5_21O5_21O5c6mH +6/=m,6iKLQ7K,dU8H)6\9`@fd;#XDm=T2P(?iFR7BDu`HEW1.\HiAWrM#NG6QN!ERU&M+lZ2V63^])1N +ao9WceGe,"hYuL5jo4QEmJcVSo`"L`pAt$_rqcWkrr)`nj8\';rr2oqrquclrqHEcrq-3ZrpB^NroO.> +rnm_/rmh"prlY5ZrkJHBrj)O*rhBC_rg3VGreg]-rd=]hrc8!Trb2:@ra>_1r`K/!r_i_kr_5he+@/ad;C]88OFT-UcJ,Y3%MuJh;RJriXV#IRs[/RZ9_>_IRbl6&ifDaP(hu;[8kPjiImf)bU +p&=[cp]:0brql]mrr([Qh>dKQrqucmrqQKerq??]rpTjQroj@Cro*k3rn.5!rltG_rkeZIrjMg0rhf[f +rgWnLrf-o5rdauprc\9[rbVRIraGe4r`fA&r`&kor_EGdr_!/\r^ZrWr^?WNj$NW/fg(*RJO"cOJO$5# +r^#I/r^6QNr^QlWr^d#\r_*5cr_`Yor`9#&ra,S4rb2:Hrc%j[rd4WpreUQ5rfR2Lrh07fric=/rk/6I +rlG)`rmUkurnRM3roO.Crp9XPrpg!]rq?Ef!VlHhqu6NmrS@M0s8Murr;QTmq>U0gpAXU]n,D_Rkl0]C +iVq[4f`'A!cMkrb`;[IL[f3N1W;`RkT)OrQO8b%9Jc:)sGlD[]D#S/J@fBa6>lIh(!+6i0:N7fGpW8H)9]:&[rf;>sPo=8lJ(?iFO6C&VuKE;k+]I/\]r +MZ/Y8PQ%0QUAh+jYl;-2^&GtLao9Tbe,J#!h>ZC4jo4KCmJcSRnc&7]pAk!iq>($erqucoh>c=2qu-Nl +rqcWhrqHE`rpg!UrosFFro="7rn@A%rm:Yfrl4rPrji$7ri?$orh'1UrfR2>re19#rd4Wbrbh^Nrac": +ra,S+r`9"sr_WShr_3;_r^d#Xr^HfSog@b+r^#F,JO"cOJO"cOYX&1Rj$NE+r^?`Sr^QlWr^m)_r_n,G@fBa6=oMM%<;o_n:B!rd9)_BY7fGjU7/0.06Mj(.5_21O5_21O +5dN`T6/Y*)6iKLQ7JfRR8H)6\9`@fd;#XGnpHhrqucorr1aRh>dKRrr)iorqcWhrqHEarpp'W +rp9XJroO.;rnRM+rmC_irlP/Urk/6=ric="rhBC\rg!JDreUQ+rdXoirc8!Vrb)4@ra>_1r`K/"r_`Yj +r_5pd>$Kr^HfUr^ZrZr_!/ar_NMjr`/r"r`oG1rac"@ +rbqdVrcS3ire(3+rf@&CrgNh\ri,n#rjMg=rk\TUrltGirn7;,ro!e;roj@JrpTjWrq-3arqQQj!W)Zl +r;QZorn[V1s8N#prVlZmq>U0go`"F\n,D_Rl2KlFi;VR3g]#\$d/M8g_u@FM\c/i4X8]!qT)P,VP5^C= +L&QT$H2_pbDuOPOB)Z9=?N+1.=T27u;>sAj9`@Z`8cD3V7K,^J6e=[(61I3k5_21O5_22;5lO(!6Mj.I +7/fXP7fH!Y9E%Wa:]=5j;uTnu>5hk-@fC$>C]88OFT-RbJ,Y0$MuJn=R/W]VVZ*XqYl;34^Ac%Lbl5rf +e,J,$hYuI4kPjcGmJcSRo)A:\q#:'hq>pHhrr)`nh>c=2rr2fnrqcWirqQKcrq-3[rpKdOroj@@rnm_1 +rmh"qrltG]rkSNFrj)O*ri#ghrgNhNrf$i3rdt,rrc\9]rbVRIrac"9r`oG*r`&kpr_NMfr_*5_qa^WT +r^?EHf0]I&nN_XjJO"cOJO%(;r^#%#qa:6KqaUQTr_!/_r__9rb2:Irc8!^rd4Wr +reLK3rfmDNrh07hriZ7+rk&0Frl+l]rmC_qrnRM1ro3q@rp'LNrpg!Zrq69crqQQj!W)ZlrVQTMs5!_S +rqlZnqu6Hkq>U*eo`"C[n,DYPkl0WAi;VR3f)F+sci1ua_u@CL[/R9.WrA^kSGniRO8b"8K`6H"H2_ma +DuOMNB)Z3;?2e%,5hh,@/ad;CAr/NF8gF`If>$"MZ/\9QN!ERU&M(kYPtp.^Ac"Ka8XEae,Iqt +h>Z@3j8S9Ali-APnc&1[pAXmeq>gBnqtpBkqu5FOgAh0Orr)iorql]krqHEbrpp'XrpB^NroO.=rnm_. +rmh"orlb;[rkJHCrj2U,rhTOcrgWnLrf-o5rdauqrce?\rb_XLraYq8ra#M*r`/qqr_WShr_3;_r^d#Y +r^QlUr^?_8rbDFKrc%j\ +rd4WpreUQ5rfR2Lrh07driZ7,rji$Crl+l[rm1Snrn7;.ro3q=rp0RNrp]pXrq69brqcWk!;llqr;QZo +rn@D+s8N#srVl`oqu6Hkp\smco`"@Zmf)SPk5OE?i;VL1f)F+sbl5Z^_Z%1H[JmB/VuEChSc4lQO8b(: +K)U5uHN%saDZ4GNAc?0sAj:&[ca8cD9[7f,XR7.ipp6N'4J6%M:U5_21O5hA9r6-_go +6i0:N7JfRR8H)3[9)_Qa:]=5j/J,X`mFT-4XC]7uGA,]j7>Q.e)@6%M:d +5_21O5it?26,Gt]6iKLQ7JfRR8,c*Z9)_K_:&[rf;Z9\q=oM\*?iFR7BDu]GDuOkXH2`_;rb;@Krc8!^rd4WrreLK3rfd>Krgs+cri?%&rj_s@rkeZWrltGi +rn7;+ro!e:roj@HrpTjVrq$-_rqHEfqtpHm!WDuorn@D(s8N#prVl`oqYp9hp\sgao)A+Wm/H8Kk5O<< +h>Z.-e,I_nc2PZ\^](kEZMq!*WW&RiS,S]PO8b"8K`6K#H2_scE;j\QB`;K??iF@1=T2>";uTVm:B!rd +9)_E]8GG[R7-m:u6L[>@6%M:d5_21O5it?26-DUc6i0:H7fGsX8cD?]9`@fd;#XDmU6f +quHZrrVcWmgAf\&qu-NlrqcWirqQKcrq$-YrpKdOroj@Aro!e3rmq(srm1Sbrkn`MrjMg2riQ0prh07\ +rf[8@reg]+rdOinrc8!Vrb_XHraYq7r`oG*r`B(sr_WSir_3;ar_!/]r^d#Yr^QcRr^?*?kX*fdr]u*# +YX!b)JO'3#\O,jSqaCEPqaUQTr^d#[r_!/_r_3;er_`Ymr`B)%r`oG0raYq>rb_XRrc8!brdOitreg]8 +rf[8Nrh'1briQ1*rjMg@rl"fWrm1Smrmq))ro!e9roj@HrpKdTrq$-^rqQKgrqcNi!;ursrRCkss8N#s +rVl`oqYprnm_0rmq(srm(Mbrkn`Lrj_s5riH*rrh07Zrg!JDreUQ,rdXomrcS3[rb_XJral(: +ra#M-r`9"tr_remr_NMgr_*5_r^m)[r^ZiTqaLKPgdD!,JO5)XJO4oSf0\1YqaCEPpdY6Qr^d#[r_!/_ +r_EGgr_WSmr`/qur`fA.ra>_:rb;@Krc.p[rd"Kmre(3+rf@&CrgNhZrhf[rrj)O5rkABLrlG)armLet +rnIG0ro3q=rp0ROrp]pYrq69arqZQirql]nrVcisrm^tts8N#prVl`oqu6Hkp\smco`"@Zmf)VQkl0]C +ir7g6gA]Y%d/M8ga8WmR]`,D>Yl:^&VZ*4eRf8TONrFn7K`6K#HN&*eE;j_RCAqcC@K'X5>Q.e)=8l+s +;#X8i:B!ue9`@Z]8cD9X8,,RK7INYC6\.UU6\.UU6dA'f7/04G7fGpT8H)3X9)_N`:&[oe:]=5j;Z9bs +=oMY)?iFO6AH$?CD#SDQG5cjfJ,Y-#M>iP7Q2[6OTDk_eX8]@&\,O#=_#DCRbPolfec+8$hYuO6k5OTD +mJcSRnG`(Zp&=^bqYpBkr;QZnrW3#teGn%urr2fnrqucmrqcWhrq??arpp'XrpKdMroa:Aro!e2rn.4u +rm(McrkeZKrjr*7riZ7#rh9=^rgEbIrf$i5rdk&trd+Qbrc%jRrb)4AraGe5r`fA)r`9"tr_i_lr_EGe +r_32^qapcXpdb*KlU?@nJOP,YJOR4?pdY$Kqag]Xr_*,^r_U0gpAX[_o)A+Wm/H8Kk5O<Z.-eGdkpcMkf^_Z%:K[JmK2 +Y5Y6rT`1M]PQ$[CNW+V1Jc:,tG5cR^DuOSPB`;QA@/aL3>lIk)sJm^V#IOrZ2V01^AbtJ`W"0^dJhYpgA]q-i;Vmd.eS,S]P +OT(1;LAlc'IK"KjFT-7YD>n;LAc?3=?iFC2>Q.e)sMnU6fr;QZlrW)uHs3CZDrqlZn +r;QQlq>U0gp&=U_nc&"Vli-/Jjo4<>hu;C0fDa7uc2Pf``;[LM])K,:Y5YF"V#HtbRJrHMNrFq8LAl`& +I/\EjErL"VD>n5JB)Z??@/aL3>lIk)=8l8"<;ohq;Z9Pm;#X8i:A[c\9^>@F97]]o8qBTc9%lnt9DD3[ +:&@]b:]=2i;>sJm;uTbqU*e +o`"I]nG_hSli-)Hjo46Z+,f)F%qbl5]__#D"G\Gi`3XT#0tT`1J\RJr?JNrFt9KDpE#IK"BgF8g+W +D>n8KBDuB>@/aO4>lIq+=T2A#g;#X8i;#=&f:@:jS9n>um9S#lg9\2u):&@]_:]=2i:]!uf +;>X8j<;ons5he+?iFL5@fC$>CAr)LDuOeVFoHggJGt3#MuJb9OoCdJSc5;]W;`mtYl;03]`,_G +aSsE_d/MVqg&Bh,iVqp;kPjfHmf)_ToD\F^pAXmbqY:$drW)uHs3(HArqlZnr;QTmqYp6gpAX^`nG_nU +mf)MNkPjQAi;VO2g&BG!ci22g`W!aR^AbS?ZMq',VuEIjTDk5WPQ$XBMZ/A0Jc:,tHN&-fEW0nUD>n5J +Ac?3=@/aO4?N+1.>5h\(=T2D$sAj;"mb::Ou;m:Ou<_:]=2i:]=2`;>sJm;uTer5hb*?N+=2@/a[8B)ZKCD>nJQEW11]HN&BmJc:E'MZ/\9Pl@'LTDkVbVuEn!Zi7E4^AbtJ`W"-] +d/MJmg&Be+i;Vg:kl0lHmf)\SnG`(Zp&=^bqYpBkr;QZlrqcZCs3(HArqlZnr;QTmqYp9hpAXaaoD\:Z +n,DYPl2KlFiVqa6h#>n(e,I\mao96X_#CqE[f3Q2X8]!qUAg\^R/W5h\%=T2D$lJ%. +?iFI4A,^$lIt,>5MG!=8l7gQ.n,?2J".@/aU6AH$0>BDu`H +DZ4VSF8g@^H2`B_u@aVc2Q,iec+5#hu;U6j8S9AlMg2M +n,DnWo`"Uaq#:*gqYpBhrVQTjs3gqds8N#prVl`oqYpZ+,ec*qp +c2Plb_Z%=L]`,;;Yl:d(V>d4gTDk8XQ2ZmEN;eY4KDpE#IK"TmFoHI]E;jeTD#S5LB`;WCAH$';@K'X5 +@/aO1?N+70>jknq>4YpK=cZ^:=b0`6=moP_>Q.n,?2.b*@/aO4@K'a8AH$3?B`;fHD>nJQE;jqXFoHae +IK"crKDpZ*N;eqdUrZ2V-0]`,\F_Z%^Wbl5ugec+8$h>Z@3jSn?Ali-;NnG_tWoD\F^ +q#:*gqYU3irVQTgs3gqds8N#prVl`oqYphu;C0f`'A!d/M;h`ri/,Jc:/uHN&-fFoHC[E;jeTC]8)JC&VcEB)ZB@A,]s7@K'[0 +?hIb(?1qQT>`;p=>_-/6>kMCn?Me+/@/FC3@fBm:Ac?<@BDuWECAr#JDuO_TEW1+[GlE$gJ,Y#uKDp`, +N;eql2L)Ln,DhUoD\F^pAXjdq>U6f +r;QZlrqHH@s2G$;rqQHkqu6Hkq>U-fpAX^`nc&%Wn,DVOkPjTBiVq^5g]#e'e,I\mb5TE[_>_1J\c/r7 +YPtR$VuE@gSc5)WPQ$^DNrFk6L&QZ&JGsurHN&'dFT-=[E;jbSD>n>MCAqoGB)?0=AG]m9@e*t+@"D^: +@"D^:@*W0Q@JaO5A,Bg9Ac$*=B`;`FC]82MDuO_TErL.ZFoH^dI/\ZqJc:B&M#NG6OT(ICRf8lWT`1kg +X8]=%Zi7K6^AbtJ`W"$Zci2Dmf)FG'hYuL5jo4KClMg8OnG_tWo`"O_p\t!fqYpBerVQTgs3gqas8N#p +rVl`oqu6Hkq>U0gp\sgao)A+Wmf)POl2KfDir7j7gA]_'eGdhobl5]__>_4K]`,;;Z2Up*W;`UlTDkD\ +R/W?LOT(7=MZ/>/KDU/tI/\HkG5cU_F8g.UDu4DND"qcBC&VfnJNE;jqXFoHR`HN&On,DnWo`"Uaq#:*gqYpBkr;QZlrpg$:s2+g2rr2ipqtp6hq>U0gp&=U_nc&%W +mJcGNkPjTBiVq[4gA]b(df.PkbPoK[_Z%=L\c0&:Z2Um)WW&doT`1M]Rf8QNOoCC?MZ/G2LAlf(JGt#s +HiAnADC]%t!Bng>QBn:!MC%#j7D#8)HDZ4SRE;jkVF8g:\FoHUaH2`0i +If=lsK)UN(M#N;2NrG1?Pl@-NSc5;]VZ*RoXo>U)[Jm`9^])+L`W"'[ci2Alf`'V(h>ZC4jSn?Ali-;N +nG_tWoD\F^q#:*dqYpBkr:p9]s3gq[s8N#srVl`oqu6Hkq>U0gpAX^`oD\7Ymf)SPkl0`DjSn*:h>Z.- +eGdnqci2)d`rC#V#I(eTDk;YQN!'HOT(7=MuJJ1K`6T&JGt#sI/\HkH2`'fFoHL^ +F8g4WEV4;FDu=O)DME%[DLl]WDY7r=E;jkSErL.ZFT-F^GlE!fHN&B_>_FQb5T`ddf.bqgA]q-i;Vg:k5OTDm/HGPnG`%Yp&=[aq#:*gqYpBk +r;QZlrpKg7s1JC2rqQHhqu6Hkp\smcp&=O]nG_nUm/H;Lkl0WAiVqa6gA]\&df.Vmbl5``_u@LO^AbYA +[/R=!VZ*7fT)P8ZQN!-JOoCIANW+k8LAll*KDpH$JGt&tIf=cpI/\KlHN&3bGlDm\FTHW-JTQNd +JTQHbd<,8.qf_aZrd"Khrd4WlrdFcprdXotrdk'$re:?+repc8rfI,ArfmDJrg`tZrh07fri,n!rilC0 +rj_sArkSNNrlP/`rm:Ymrn%/'rnm_6ro="Arp'LLrpTjVrpp']rq??cqtg#VrkSNGrji$:rilC(ri?$qrhKIb +rgj%Wrg<\Lrf[8Arf-o7reUQ.re:?)rdt-#qgeZqrdOWiqg80cJU2lnJU2lnaEmi4pjE'irdXfqrdk'# +re19)reCE.reg]7rf@&ArfmDLrgNhWrh'1brhf[qriZ7)rjMg9rk/6Grl"fVrltGhrmLetrn@A-ro*k; +roX4Erp0ROrp]pXrq$-_rqHEerqcWkrqucop&=CZdf6lXrr2fnrqucmrqcWirqQKerq-3]rpp'XrpB^N +roj@DroF(:rn[S-rmh"srm1SgrlG)XrkSNHrk&0:rj)O,riH*trh]Ufrh'1\rgEbPrfmDErfI,>rf$i7 +reg]2reCE+re19'rdt#upji?nrdXuuJU`6#JU`6#d=;.GrdXTkrdk'#re(3're:?,reUQ2repc7rf6u= +rfR2Erg*POrgj%\rh9=fri#gtric=,rj;[:rkABIrl+lYrltGgrmLerrn@A-ro!e:roX4Drp0ROrp]pX +rq$-]rqHEerqZQirql]mrr)`nkl9*2\c;I(qu-NlrqcNfrqHEcrq-3[rp]pUrp0RKroj@Aro*k6rnIG* +rmq(qrm(Merl4rTrkSNIrjr*ErfR)>rf?r:pPf35NId%@N.Hq=N7!U]NV/>/OSb4?PQ$gGQ2[0M +RJrZSSGo,ZT`1\bV#I7jWrB+!YPtg+[Jm]8]`,YE_>_IRaSsB^ci2AleGe/#h#?41iVqp;k5OWEli->O +n,DkVoD\F^p\ss_qYU3irV6BUs3gqRs8N#mrVQKkqYp9ep\sgao)A1YnG_hSli-,Ik5OKAi;VU4h>Z%* +ec+"rd/M;hbPoK[_u@FM^AbbD\Gii6ZMq',Xo>@"W;`UlUAgkcT`1P^SbnoURf8]OQi<9LPkC7>OoUX9 +Ob&UTOF`LEOPl5nOo(=7PQ$gGQ2[-IR/i;VU4g]#n*eGdnqci25hbPoT^`;[UP^](nF])K5=[/RB. +Yl:g)XT#0tVuERjU]."eT^n`MSc,)JS:R/mRt7&[S*$4)SG8ZJTDP;YUAgqeVZ*LmW;`mtXo#@%Zi7?2 +\Gj)=]`,\F_Z%LQaSs?]cMl/hdf.bqg&Bb*hYuI4j8S0>kl0lHm/HJQnG_tWo`"O_p\sseq>U6iqu6Nj +rVQTOs3gqOs7lTjrVl`oqYU*fq#:!dp&=R^o)A.Xmf)SPlMg#Hk5OH@i;VU4h#?"+fDa>"dJhJkbl5`` +a8X$V_#D+J^Ab_C\Giu:[/RB1Yl:j'Xo>?tWW&gpVY-e\U]-tfTn/ngTn/ngU"#e5UA1MVV>d@kVuE[m +WrB."Y5YX(Yl;!.[/RQ6\c02>^AbnH_#D:O`r=*Zbl5oedJh\qfDaJ&h#?10i;Vg:k5OTDlMg,Kmf)_T +o)A7[p&=^bq#:*dqYU3irV6BLs3gqIs8N#mrVQKkqYp9ep\sgaoD\=[nG_nUmf)MNkl0`Dir7p9hu;L3 +g]#k)eGdnqci25hbl5ca`W!gT_Z%@M^AbhF])K5=[emE1ZMq**YPt^(Xo>EsX8]-nW<&utJZ+4"JZ+-u +dAZrAql9FlriH+$riZ7(qlot'rj2U4rj_s=rk8J["(:os+(nrj2L/rjDX3rjVm:rjhp=rk8rkn`Sqo8WWrlb;brm(Mhrm:YmrmUksrn%/& +rnIG/rnm_5ro=">roX4Erp0RNrpTjUrpg!Zrq-3_rqHEerqZHfrqlKhqu5(Edf5p=rr2]krqucmrqcNf +qtL*`rq-3\qsaURrpKdOrp'LHroX4@ro3q8rnm_3rnRM,rn7;$rm^qrrmC_lrm1Shqp##]rlY5^rlFlT +rl4iSqS^q&J]"V-J]!&VaMe(sqo8NRrlG)\qo\o]rlt>crm1SjrmC_orm^qtrn7;*rnRM0rnm_5ro3q< +roX4DrosFJqsO@Nrq$-]qtC$`rqZHfrql]mqu-Ekc2Z5lT)\Tbqu-NlqtpBhrqZQgrqHEbrq-3]rpg!W +rpTjRrp9XLroj@EroX4@ro3h5rndY0qq:u$qpk\qrmLenqp>>grm(Dcqonr\oZI!Pg<"oeYfMC:J]Ri3 +i5t6+rlauYrlt>cqp>5gqpbVqqq1o$rnRM/qr%J6roF(@roa:Erp'LKrpB^Rrp]pWrq$-]rq69brqQKg +qtgsrn%/# +n^RZje`kS7e!ng;dt-!:e)SsKec+/!fDF4tg&'M#h#?.,htu@/ir8$:$fqtpU-fpA=O^o`"I]nc&%Wn,)MOm/H;L +l2KoGk549;j8S';i;;F,h>Z4&g]#q!g#Uh;fUg`HfR_]Af\5$UgABY%h"]_)htu@/ir8!;jnn3>kl0iG +lMKrImJcSRnG_tWoD\CZp&=[ap\t!cqYpBer;QZfrl"ibs,[3Wrq66hr:p-fq"sgbpAXaao`"I]o)A1Y +nGD\RmJcJOlhfrGkl0`Ajnn*;iqq^0i;VX5i;;F,hYl8]h1=C5h1=D-h>#k(hu;R5ht>q,iVVX6j8S0; +k54BAl2L#Jm/HDOn,)VRnc&+YoD\C]p&=[ap\Xa\qYU3frUp0+s3gq%s8N#mrVl`lqtU$eq"sgbpAXaa +o`"FYnc&%Tn,DbPmJH5KlMKiFkkjQBk4Rg.j8.d5idp'CiITs=iRd&Ziqqd,jSS*=kPOKBl20cFli-;K +mf)\PnG_tTo)A:\p&=[ap\Xa\qYpBhr:p6frj`!Vs+^RHrqQEgqu6Heq>U-fpA=O^o_\7Zo)A1YnGD\R +mf)VNm/H>JlMg&=kkjQ8k5=@mjbDlJjalOFjmV@2kO7X6l20cFlhg&JmJcPQn,)VRnc&+VoD\CZp&=[a +p\=R]qYpBer:9iss3gq"s7lTgrVl`lqtU$eq"XU_pAXaao_\7Zo)%tSnG_nUnG_nUmecDEm.flo6nq6Lanq$AZo()D= +o`"OYpA"CZq#:*[qYpBhr:U$`rh0;>s+146s7QB^rV6:$Zqss[Irg3Z5s+14's7QBUrVQN` +qr7I'qLSKoqLSLLqXsaYr9XCQrepg)s+13gs6os6r;llqJc(/uJc()sdJVDjn,@n %APLeod +EI +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +11 335 m +81 335 l +81 273 l +11 273 l +h +11 335 m +f +1 J +1 j +0 0 0 sc +1 0 0 -1 -40 417 cm +51 82 m +121 82 l +121 144 l +51 144 l +h +51 82 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 46 304 cm +/F1.1[ 12 0 0 -12 0 0]sf +-25.429688 -3 m +(!"#$%&'\($)[ 3.457031 7.447266 4.488281 6.685547 4.910156 4.412109 6.626953 6.146484 0.000000 ] xS +-28.980469 12 m +(\)*+,-#$%)[ 8.302734 7.371094 11.203125 7.552734 7.447266 4.488281 6.685547 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +205 335 m +275 335 l +275 273 l +205 273 l +h +205 335 m +f +0 0 0 sc +1 0 0 -1 -40 417 cm +245 82 m +315 82 l +315 144 l +245 144 l +h +245 82 m +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 240 304 cm +-21.679688 -3 m +(\)*"#%*.)[ 8.302734 7.371094 7.447266 4.488281 4.910156 7.371094 0.000000 ] xS +-28.980469 12 m +(\)*+,-#$%)[ 8.302734 7.371094 11.203125 7.552734 7.447266 4.488281 6.685547 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 -40 417 cm +315.5 113 m +408 113 l +408 348 l +S +1 1 1 sc +CM +428.54999 278 m +496.45001 278 l +504.48157 278 511 269.936 511 260 c +511 250.064 504.48157 242 496.45001 242 c +428.54999 242 l +420.5184 242 414 250.064 414 260 c +414 269.936 420.5184 278 428.54999 278 c +f +0 0 0 sc +1 0 0 -1 -40 417 cm +468.54999 139 m +536.45001 139 l +544.48157 139 551 147.064 551 157 c +551 166.936 544.48157 175 536.45001 175 c +468.54999 175 l +460.5184 175 454 166.936 454 157 c +454 147.064 460.5184 139 468.54999 139 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 462.5 260 cm +-23.469727 -3 m +(/!01213)[ 6.433594 3.457031 7.587891 6.503906 8.865234 6.503906 0.000000 ] xS +-16.839844 12 m +(2451)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +428.54999 221 m +496.45001 221 l +504.48157 221 511 212.936 511 203 c +511 193.064 504.48157 185 496.45001 185 c +428.54999 185 l +420.5184 185 414 193.064 414 203 c +414 212.936 420.5184 221 428.54999 221 c +f +0 0 0 sc +1 0 0 -1 -40 417 cm +468.54999 196 m +536.45001 196 l +544.48157 196 551 204.064 551 214 c +551 223.936 544.48157 232 536.45001 232 c +468.54999 232 l +460.5184 232 454 223.936 454 214 c +454 204.064 460.5184 196 468.54999 196 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 462.5 203 cm +-23.469727 -3 m +(/!01213)[ 6.433594 3.457031 7.587891 6.503906 8.865234 6.503906 0.000000 ] xS +-16.839844 12 m +(2451)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +428.54999 164 m +496.45001 164 l +504.48157 164 511 155.936 511 146 c +511 136.064 504.48157 128 496.45001 128 c +428.54999 128 l +420.5184 128 414 136.064 414 146 c +414 155.936 420.5184 164 428.54999 164 c +f +0 0 0 sc +1 0 0 -1 -40 417 cm +468.54999 253 m +536.45001 253 l +544.48157 253 551 261.064 551 271 c +551 280.936 544.48157 289 536.45001 289 c +468.54999 289 l +460.5184 289 454 280.936 454 271 c +454 261.064 460.5184 253 468.54999 253 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 462.5 146 cm +-23.469727 -3 m +(/!01213)[ 6.433594 3.457031 7.587891 6.503906 8.865234 6.503906 0.000000 ] xS +-16.839844 12 m +(2451)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +428.54999 107 m +496.45001 107 l +504.48157 107 511 98.936005 511 89 c +511 79.063995 504.48157 71 496.45001 71 c +428.54999 71 l +420.5184 71 414 79.063995 414 89 c +414 98.936005 420.5184 107 428.54999 107 c +f +0 0 0 sc +1 0 0 -1 -40 417 cm +468.54999 310 m +536.45001 310 l +544.48157 310 551 318.064 551 328 c +551 337.936 544.48157 346 536.45001 346 c +468.54999 346 l +460.5184 346 454 337.936 454 328 c +454 318.064 460.5184 310 468.54999 310 c +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 462.5 89 cm +-23.469727 -3 m +(/!01213)[ 6.433594 3.457031 7.587891 6.503906 8.865234 6.503906 0.000000 ] xS +-16.839844 12 m +(2451)[ 8.865234 9.322266 8.988281 0.000000 ] xS +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 -40 417 cm +453.52341 158.03653 m +408 159 l +S +453.50583 213.48154 m +408 212.99998 l +S +454 275.48199 m +408.49399 275 l +S +454 327.98199 m +408.49399 327.5 l +S +/Cs1 SC +0 sc +0 i +1 0 0 -1 457 24 cm +-2 -10.5 m +(6)s +-2 4.5 m +(6)s +-2 19.5 m +(6)s +3 w +0.60000002 i +/Cs3 SC +0 0 0 sc +1 0 0 -1 -40 417 cm +137.39999 113 m +228.60001 113 l +S +CM +199.8 304 m +188.60001 308.20001 l +188.60001 299.79999 l +h +199.8 304 m +f +0 J +0 j +1 0 0 -1 -40 417 cm +239.8 113 m +228.60001 108.79999 l +228.60001 117.20001 l +h +239.8 113 m +S +CM +86.199997 304 m +97.399994 299.79999 l +97.399994 308.20001 l +h +86.199997 304 m +f +1 0 0 -1 -40 417 cm +126.2 113 m +137.39999 117.20001 l +137.39999 108.79999 l +h +126.2 113 m +S +1 1 1 sc +CM +102 311.5 m +178 311.5 l +178 296.5 l +102 296.5 l +h +102 311.5 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 140 304 cm +-32.53125 4.5 m +(7338901:3)[ 8.818359 7.587891 7.587891 6.632812 6.292969 7.587891 6.503906 6.462891 0.000000 ] xS +0.60000002 i +/Cs3 SC +1 1 1 sc +CM +289.5 311.5 m +346.5 311.5 l +346.5 296.5 l +289.5 296.5 l +h +289.5 311.5 m +f +/Cs1 SC +0 sc +0 i +1 0 0 -1 318 304 cm +-23.469727 4.5 m +(/!01213)[ 6.433594 3.457031 7.587891 6.503906 8.865234 6.503906 0.000000 ] xS +ep +end +%%Trailer +%%EOF ADDED Docs/Images/system.graffle Index: Docs/Images/system.graffle ================================================================== --- Docs/Images/system.graffle +++ Docs/Images/system.graffle cannot compute difference between binary files ADDED Docs/Images/system.png Index: Docs/Images/system.png ================================================================== --- Docs/Images/system.png +++ Docs/Images/system.png cannot compute difference between binary files ADDED Docs/Video/P1040172.MP4 Index: Docs/Video/P1040172.MP4 ================================================================== --- Docs/Video/P1040172.MP4 +++ Docs/Video/P1040172.MP4 cannot compute difference between binary files ADDED Docs/firenet.bib Index: Docs/firenet.bib ================================================================== --- Docs/firenet.bib +++ Docs/firenet.bib @@ -0,0 +1,152 @@ +%% This BibTeX bibliography file was created using BibDesk. +%% http://bibdesk.sourceforge.net/ + + +%% Created for Jim at 2010-11-14 07:27:56 -0500 + + +%% Saved with string encoding Western (ASCII) + + + +@url{Cappuccino, + Author = {280 North}, + Date-Added = {2010-11-14 07:26:20 -0500}, + Date-Modified = {2010-11-14 07:27:55 -0500}, + Keywords = {Cappuccino,web framework, javascript}, + Lastchecked = {14-Nov-2010}, + Title = {Cappuccino Web Framework}, + Urldate = {http://cappuccino.org/}} + +@url{libmicrohttpd, + Author = {Christian Grothoff}, + Date-Added = {2010-11-14 07:23:19 -0500}, + Date-Modified = {2010-11-14 07:24:26 -0500}, + Keywords = {HTTP,web server,}, + Lastchecked = {14-Nov-2010}, + Title = {GNU libmicrohttpd}, + Urldate = {http://www.gnu.org/software/libmicrohttpd/}} + +@url{Lua, + Author = {Roberto Ierusalimschy,Departamento de Inform{\'a}tica, PUC-Rio}, + Date-Added = {2010-11-14 07:20:49 -0500}, + Date-Modified = {2010-11-14 07:22:21 -0500}, + Keywords = {Lua, scripting,language}, + Lastchecked = {14-Nov-2010}, + Title = {Lua Home page}, + Urldate = {http://www.lua.org}} + +@url{Arduino, + Author = {Arduino}, + Date-Added = {2010-11-14 07:17:39 -0500}, + Date-Modified = {2010-11-14 07:19:05 -0500}, + Keywords = {Arduino,microprocessor, IDE }, + Lastchecked = {14-Nov-2010}, + Title = {Arduino Home Page}, + Urldate = {http://www.arduino.cc/}} + +@url{REST, + Author = {Wikipedia}, + Date-Added = {2010-10-31 17:49:05 -0400}, + Date-Modified = {2010-10-31 17:50:13 -0400}, + Keywords = {REST WWW HTTP architecture}, + Lastchecked = {31-Oct-201}, + Title = {Representational State Transfer}, + Urldate = {http://en.wikipedia.org/wiki/Representational_State_Transfer}} + +@url{HTTP, + Author = {Christian Grothoff}, + Date-Added = {2010-10-31 17:36:10 -0400}, + Date-Modified = {2010-10-31 17:48:07 -0400}, + Keywords = {HTTP library}, + Lastchecked = {31-Oct-2010}, + Title = {GNU libmicrohttpd}, + Urldate = {http://www.gnu.org/software/libmicrohttpd/}} + +@techreport{JSON, + Author = {D. Crockford}, + Date-Added = {2010-06-08 07:10:35 -0400}, + Date-Modified = {2010-06-08 07:13:28 -0400}, + Institution = {Network Working Group}, + Keywords = {JSON JavaScript Objects}, + Month = {July}, + Number = {4627}, + Title = {The application/json Media Type for JavaScript Object Notation}, + Type = {Request for Comments}, + Urldate = {8-Jun-2010}, + Year = {2006}, + Bdsk-Url-1 = {http://www.ietf.org/rfc/rfc4627.txt?number=4627}} + +@url{subversion, + Author = {Subversion Software project}, + Date-Added = {2010-05-12 06:40:29 -0400}, + Date-Modified = {2010-05-12 06:43:02 -0400}, + Keywords = {subversion, version control systems}, + Lastchecked = {12-May-2010}, + Title = {Apache Subversion}, + Urldate = {12-May-2010}, + Bdsk-Url-1 = {http://subversion.apache.org/}} + +@url{FOSSIL-HOME, + Author = {D. Richard Hipp}, + Date-Added = {2010-04-30 06:36:02 -0400}, + Date-Modified = {2010-04-30 06:38:54 -0400}, + Keywords = {Fossil wiki}, + Lastchecked = {30-April-2010}, + Title = {Fossil Home Page}, + Urldate = {http://www.fossil-scm.org/index.html/doc/tip/www/index.wiki}, + Bdsk-Url-1 = {http://www.fossil-scm.org/index.html/doc/tip/www/index.wiki}} + +@url{USE-SCCS, + Author = {University of Texas}, + Date-Added = {2010-04-30 06:19:37 -0400}, + Date-Modified = {2010-04-30 06:20:45 -0400}, + Keywords = {SCCS use UTexas}, + Lastchecked = {30-April-2010}, + Title = {How we use SCCS}, + Urldate = {http://www.utexas.edu/cc/unix/OurSCCS.html}, + Bdsk-Url-1 = {http://www.utexas.edu/cc/unix/OurSCCS.html}} + +@url{LyX, + Author = {Mattias Ettrich}, + Date-Added = {2010-04-25 07:23:20 -0400}, + Date-Modified = {2010-04-25 07:25:52 -0400}, + Keywords = {Tex LaTex document processor}, + Lastchecked = {25-Apr-2010}, + Title = {LyX - The Document Processor}, + Urldate = {www.lyx.org}, + Bdsk-Url-1 = {http://www.lyx.org/}} + +@url{RCS, + Author = {Walter F. Tichy}, + Date-Added = {2010-04-25 06:56:56 -0400}, + Date-Modified = {2010-04-25 06:58:43 -0400}, + Keywords = {version control systems}, + Lastchecked = {25-Apr-2010}, + Title = {RCS - A System For Version Control}, + Urldate = {http://www.burlingtontelecom.net/~ashawley/rcs/tichy1985rcs/html/index.html#id2456539}, + Bdsk-Url-1 = {http://www.burlingtontelecom.net/~ashawley/rcs/tichy1985rcs/html/index.html#id2456539}} + +@article{CVS, + Author = {Dick Grune}, + Date-Added = {2010-04-25 06:52:55 -0400}, + Date-Modified = {2010-04-25 06:56:06 -0400}, + Journal = {unpublished}, + Keywords = {concurrency, version control systems, RCS, multiple file update, user interface}, + Title = {Concurrent Versions System, A Method for Independent Cooperation}, + Year = {1986}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUIJidUJHRvcFgkb2JqZWN0c1gkdmVyc2lvblkkYXJjaGl2ZXLRBgdUcm9vdIABqAkKFRYXGyIjVSRudWxs0wsMDQ4RFFpOUy5vYmplY3RzV05TLmtleXNWJGNsYXNzog8QgASABqISE4ACgAOAB1lhbGlhc0RhdGFccmVsYXRpdmVQYXRo0hgNGRpXTlMuZGF0YU8RAaoAAAAAAaoAAgAACVdoaXRlQm9vawAAAAAAAAAAAAAAAAAAAAAAAMbVOKpIKwAAADTAvA1DVlMtZ3J1bmUucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANMC9yEDTxAAAAAAAAAAAAAIABAAACSAAAAAAAAAAAAAAAAAAAAAHSGlzdG9yeQAAEAAIAADG1XDqAAAAEQAIAADIQQwEAAAAAQAYADTAvAA0wLsANMB0AAkFjAAJBGUABxlVAAIASVdoaXRlQm9vazpVc2Vyczpqc2NoaW1wZjpQdWJsaWM6Rm9zc2lsQm9vazpSZXNlYXJjaDpIaXN0b3J5OkNWUy1ncnVuZS5wZGYAAA4AHAANAEMAVgBTAC0AZwByAHUAbgBlAC4AcABkAGYADwAUAAkAVwBoAGkAdABlAEIAbwBvAGsAEgA/VXNlcnMvanNjaGltcGYvUHVibGljL0Zvc3NpbEJvb2svUmVzZWFyY2gvSGlzdG9yeS9DVlMtZ3J1bmUucGRmAAATAAEvAP//AACABdIcHR4fWCRjbGFzc2VzWiRjbGFzc25hbWWjHyAhXU5TTXV0YWJsZURhdGFWTlNEYXRhWE5TT2JqZWN0XxAvLi4vLi4vRm9zc2lsQm9vay9SZXNlYXJjaC9IaXN0b3J5L0NWUy1ncnVuZS5wZGbSHB0kJaIlIVxOU0RpY3Rpb25hcnkSAAGGoF8QD05TS2V5ZWRBcmNoaXZlcgAIABEAFgAfACgAMgA1ADoAPABFAEsAUgBdAGUAbABvAHEAcwB2AHgAegB8AIYAkwCYAKACTgJQAlUCXgJpAm0CewKCAosCvQLCAsUC0gLXAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAuk=}} + +@article{SCCS, + Author = {Marc J Rochkind}, + Date-Added = {2010-04-25 06:26:32 -0400}, + Date-Modified = {2010-04-25 06:29:15 -0400}, + Journal = {IEEE Transactions on Software Engineering}, + Keywords = {Source Control, change control}, + Month = {December}, + Number = {4}, + Pages = {364}, + Title = {The Source Control System}, + Volume = {SE-1}, + Year = {1975}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUIJidUJHRvcFgkb2JqZWN0c1gkdmVyc2lvblkkYXJjaGl2ZXLRBgdUcm9vdIABqAkKFRYXGyIjVSRudWxs0wsMDQ4RFFpOUy5vYmplY3RzV05TLmtleXNWJGNsYXNzog8QgASABqISE4ACgAOAB1lhbGlhc0RhdGFccmVsYXRpdmVQYXRo0hgNGRpXTlMuZGF0YU8RAbwAAAAAAbwAAgAACVdoaXRlQm9vawAAAAAAAAAAAAAAAAAAAAAAAMbVOKpIKwAAADTAvBJTQ0NTLVNsaWRlc2hvdy5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANMC/yEDTxAAAAAAAAAAAAAIABAAACSAAAAAAAAAAAAAAAAAAAAAHSGlzdG9yeQAAEAAIAADG1XDqAAAAEQAIAADIQQwEAAAAAQAYADTAvAA0wLsANMB0AAkFjAAJBGUABxlVAAIATldoaXRlQm9vazpVc2Vyczpqc2NoaW1wZjpQdWJsaWM6Rm9zc2lsQm9vazpSZXNlYXJjaDpIaXN0b3J5OlNDQ1MtU2xpZGVzaG93LnBkZgAOACYAEgBTAEMAQwBTAC0AUwBsAGkAZABlAHMAaABvAHcALgBwAGQAZgAPABQACQBXAGgAaQB0AGUAQgBvAG8AawASAERVc2Vycy9qc2NoaW1wZi9QdWJsaWMvRm9zc2lsQm9vay9SZXNlYXJjaC9IaXN0b3J5L1NDQ1MtU2xpZGVzaG93LnBkZgATAAEvAP//AACABdIcHR4fWCRjbGFzc2VzWiRjbGFzc25hbWWjHyAhXU5TTXV0YWJsZURhdGFWTlNEYXRhWE5TT2JqZWN0XxA0Li4vLi4vRm9zc2lsQm9vay9SZXNlYXJjaC9IaXN0b3J5L1NDQ1MtU2xpZGVzaG93LnBkZtIcHSQloiUhXE5TRGljdGlvbmFyeRIAAYagXxAPTlNLZXllZEFyY2hpdmVyAAgAEQAWAB8AKAAyADUAOgA8AEUASwBSAF0AZQBsAG8AcQBzAHYAeAB6AHwAhgCTAJgAoAJgAmICZwJwAnsCfwKNApQCnQLUAtkC3ALpAu4AAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADAA==}} Index: Docs/firenet.lyx ================================================================== --- Docs/firenet.lyx +++ Docs/firenet.lyx @@ -1,7 +1,7 @@ -#LyX 1.6.2 created this file. For more info see http://www.lyx.org/ -\lyxformat 345 +#LyX 2.0 created this file. For more info see http://www.lyx.org/ +\lyxformat 413 \begin_document \begin_header \textclass article \begin_preamble @@ -103,32 +103,49 @@ \fancyfoot[L]{\sffamily \bfseries \documentNumber \\ \mdseries Revision: \revisionNumber} \fancyfoot[C]{\sffamily \bfseries\thedate \\ \mdseries Firing Box Manual} \fancyfoot[R]{\ifthenelse{\boolean{romanpn}}{\sffamily \thepage}{\sffamily \bfseries Page \thepage\ of \pageref{LastPage}}} \end_preamble \use_default_options false +\maintain_unincluded_children false \language english +\language_package default \inputencoding auto +\fontencoding global \font_roman times \font_sans helvet \font_typewriter courier \font_default_family default +\use_non_tex_fonts false \font_sc false \font_osf false \font_sf_scale 100 \font_tt_scale 100 \graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default \paperfontsize 11 \spacing single \use_hyperref false \papersize letterpaper \use_geometry false \use_amsmath 1 \use_esint 0 +\use_mhchem 1 +\use_mathdots 1 \cite_engine basic \use_bibtopic false +\use_indices false \paperorientation portrait +\suppress_date false +\use_refstyle 0 +\index Index +\shortcut idx +\color #008000 +\end_index \secnumdepth 4 \tocdepth 4 \paragraph_separation skip \defskip medskip \quotes_language english @@ -135,12 +152,13 @@ \papercolumns 1 \papersides 1 \paperpagestyle fancy \tracking_changes false \output_changes false -\author "" -\author "" +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false \end_header \begin_body \begin_layout Standard @@ -187,11 +205,11 @@ \backslash renewcommand{ \backslash -revisionNumber}{0.6} +revisionNumber}{3.3} \end_layout \end_inset @@ -221,11 +239,11 @@ \begin_layout Author Jim Schimpf \end_layout \begin_layout Date -21 September 2009 +23 January 2014 \end_layout \begin_layout Standard \begin_inset ERT status open @@ -257,11 +275,11 @@ copyright \end_layout \end_inset -2009 Pandora Products. +2009-2014 Pandora Products. All rights reserved. Pandora product and company names, as well as their respective logos are trademarks or registered trademarks of Pandora Products. All other product names mentioned herein are trademarks or registered trademark s of their respective owners. @@ -286,23 +304,19 @@ \begin_layout Standard \begin_inset VSpace medskip \end_inset -Phone: 412.829.8145 +Phone: 724.539.1276 \end_layout \begin_layout Standard -Fax: 724.539.1276 +Web: http://chiselapp.com/user/jschimpf/repository/Firenet/index \end_layout \begin_layout Standard -Web: pandora.dyn-o-saur.com:8080/~jim/ -\end_layout - -\begin_layout Standard -Email: vze35xda@verizon.net +Email: jim.schimpf@gmail.com \end_layout \begin_layout Standard \begin_inset VSpace medskip \end_inset @@ -347,12 +361,12 @@ \end_layout \begin_layout Standard \align center \begin_inset Tabular - - + + @@ -582,42 +596,1106 @@ \end_inset - + \begin_inset Text \begin_layout Plain Layout 0.6 \end_layout \end_inset - + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Scripting operations and play_file_stop() routine0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +21-Sep-2009 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +0.7 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Rewrite packet protocol [d26a3ab0e9] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +11-May-2010 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +0.8 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Add set address command [4faba11f43] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +15-May-2010 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +0.9 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Update document for NEWNET [de1bb57002] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +19-May-2010 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Update document with RESTful interface in Lua +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +31-Oct-2010 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Show RESTful command structure +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +14-Nov-2010 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Add Login commands +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +18-Dec-2020 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Add set fire time command +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +9-Jan-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[e4208b8f56] Add ACK message +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +16-Jan-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.5 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[dcb5f4c816] Add VERSION message +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +20-Jan-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.5 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[4fd91ac4c2] Add Channel message +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +24-Jan-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.6 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Web interface +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +16-Apr-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.7 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Update REST interface information +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +22-Apr-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.8 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Add Backoff & Reset commands +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +1-May-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1.9 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Add docs on commands returning values +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +1-May-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Allow status command to clear map +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +8-May-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Apply Chip Maguire corrections +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +31-May-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Add Get Data command +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +16-Jul-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[9e81c1a523] Adaptive firing operation +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +16-Oct-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[156fc0f116d] Node design information +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6-Nov-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.5 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[fd8800dae4] Add firing queue mode +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +12-Nov-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.6 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[9eae8bcde5] Add PROGRAM to rest commands +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +20-Nov-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.7 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[349529d41d] Add AUTO run to web interface +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +10-Dec-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.8 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Updated information about SYNC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +26-Dec-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +2.9 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Add AUTO show images +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +26-Dec-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3.0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[7e720cf520] Fix head end of network +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +31-Dec-2011 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3.1 +\end_layout + +\end_inset + + \begin_inset Text \begin_layout Plain Layout js \end_layout \end_inset + +\begin_inset Text + +\begin_layout Plain Layout +Minor editing +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +6-Apr-2012 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +3.2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Text corrections +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +17-Feb-2013 +\end_layout + +\end_inset + + + \begin_inset Text \begin_layout Plain Layout -Scripting operations and play_file_stop() routine +3.3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +js +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Capacitor in firing ckt \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout -21-Sep-2009 +23-Jan-2014 \end_layout \end_inset @@ -654,569 +1732,5323 @@ \end_inset \end_layout -\begin_layout Part -Hardware -\end_layout - \begin_layout Section +System Design +\end_layout + +\begin_layout Subsection +Introduction +\end_layout + +\begin_layout Standard +FIRENET is a hardware/firmware/software system for firing fireworks pieces + under computer control. + It uses Arduino based hardware to fire the pieces and web based software + to control them. +\end_layout + +\begin_layout Standard +The FIRENET system is shown in Figure +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:FIRENET-System" + +\end_inset + +. + There are two computers in addition to the FIRENET firing boards. + The Control Computer is directly connected to the RS-485 FIRENET network + and interacts with the FIRENET boards. + The second computer is running a web browser where it has the FIRENET user + interface. + +\end_layout + +\begin_layout Standard +The control computer is running the FIRENET Web Server/REST software. + Representational State Transfer or REST is a simple protocol on top of + HTTP that uses GET/PUT/POST and DELETE HTTP messages to allow control of + a system. + +\begin_inset CommandInset citation +LatexCommand cite +key "REST" + +\end_inset + +. + For FIRENET a User Interface for the system is running in a browser on + the Interface computer. + It uses REST style interaction to send commands which the Control Computer + sends out on the FIRENET network to the nodes which then run the fireworks + show. + Each FIRENET node controls up to 6 pieces and can read out their status + and and fire these pieces on command. +\end_layout + +\begin_layout Standard +The connection between the two computers is over TCP/IP and in practice + would use a WPA encrypted WiFi connection allowing the Interface Computer + to be at a safe distance from the pieces and mortars firing the show. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename /Users/jschimpf/Public/Firenet/Docs/Images/system.eps + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +FIRENET System +\begin_inset CommandInset label +LatexCommand label +name "fig:FIRENET-System" + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +Software Design +\end_layout + +\begin_layout Standard +At the lowest level Arduino +\begin_inset CommandInset citation +LatexCommand cite +key "Arduino" + +\end_inset + + code is written for each FIRENET node. + This allows it to communicate over the FIRENET RS-485 network and has commands + to read status and fire pieces. + Above that we have the program running on the control computer which is + a modified Lua interpreter +\begin_inset CommandInset citation +LatexCommand cite +key "Lua" + +\end_inset + +with extensions to support FIRENET and HTTP web-serving +\begin_inset CommandInset citation +LatexCommand cite +key "libmicrohttpd" + +\end_inset + +. + This latter acts as a Web Server and transports the REST protocol commands. + Above that we have Lua scripts on the server that interpert the REST commands + and create messages to send on the RS-485 network. + Finally an HTML and Javascript application that runs on the browser in + the Interface Computer, this is used supply an OS agnostic user interface + to the system. +\end_layout + +\begin_layout Subsection +User Interface +\end_layout + +\begin_layout Standard +The user interface is an AJAX web application consisting of HTML pages and + Javascript application code. + In this case only a single HTML page is used and the Javascript is used + to replace parts of the page with different parts of the user interface. + In this case the HTML/Javascript combination is acting like an application + but is running in the browser. + the advantage of this method is that the interface is independent of the + operating system and to a large extent the browser used. + As long as the browser is current (i.e. + Firefox, Safari, Chrome or IE 7) then it will support this interface on + Windows, OS X or Linux. +\end_layout + +\begin_layout Subsubsection +Interface Operation +\end_layout + +\begin_layout Standard +When the user opens the index.html page on the server he gets: +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/index.png + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Index page +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This instructs the user to log into the system, picking the Login control + item you get: +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/login.png + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Login page +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The user then has to enter a response to the challenge value. + These challenge/response pairs are random 16 bit Hex values and the user + must have this list to log in. + The challenge value is found in the table and corresponding response 16 + bit value is typed into the response field. + If the choice is correct you then get: +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/main.png + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Main Screen +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +From here the user can pick any of the Control values on the left. + Picking Debug gets this: +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/debug.png + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Debug Screen +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The user can type any RESTful command (see +\begin_inset CommandInset ref +LatexCommand vref +reference "sub:RESTful-Interface" + +\end_inset + +), press Submit and the results are returned. + This is useful in debugging system problems. + Picking Show Manual allows manual operation of the firing boxes as: +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/man1.png + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Manual Screen +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Here the user is shown all the available firing nodes and their state. + In this case all are not ARMed so the status of the channels are unknown. + Picking the ARM button will turn all the boxes to ARMed and then show the + channel status (i.e. + is there firework pieces connected). +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/main_arm.png + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Arm Screen +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This now shows pieces connected on all channels and all are ready to fire. + You then can pick the pieces to fire (note only 1/node) and they then show + ready to fire. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/man_ready.png + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Ready Screen +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +If you press the FIRE button these pieces will be fired and their status + will change: +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/man_fire.png + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Fire Screen +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +An inventory screen is available to show the firing boxes in the network, + their software version and status of EEPROM values. + This is useful to see make sure all boxes have the same settings for a + show. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/inventory.png + scale 65 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Inventory display +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +When the Automated show choice is entered the user can pick from the store + show. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset Graphics + filename Images/Auto_Start.png + scale 35 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Automated Show +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Once the show is picked then the nodes are shown like the Manual show view. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset Graphics + filename Images/AutoUnArmed.png + scale 35 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Automated Show Node Unarmed +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +After arming the show is ready to start +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset Graphics + filename Images/Auto_Armed.png + scale 35 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Armed Show ready to run +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +once the show is running then an indicator shows how much has been run +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset Graphics + filename Images/Auto_Running.png + scale 35 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Running Show +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Note the large ABORT button that will stop the show instantly. +\end_layout + +\begin_layout Subsection +RESTful Interface +\begin_inset CommandInset label +LatexCommand label +name "sub:RESTful-Interface" + +\end_inset + + +\end_layout + +\begin_layout Standard +The web server running on the Control Computer actually has two functions, + it can just serve up web pages and second under control of Lua scripting + it can interact in a RESTful manner. + Serving up web pages allows the system when contacted by the interface + computer to serve up Login pages or the Javascript application. + Once the application is running in the interface computer browser it then + interacts with the Control Computer in a RESTful manner. +\end_layout + +\begin_layout Subsubsection +REST use +\end_layout + +\begin_layout Standard +In Firenet we restrict ourselves to just two commands GET and POST. + The HTTP GET command is used to query the system for information and the + POST command is used to cause the system to do some action. + There is a wide latitude in how RESTful commands are done, you can either + put command parameters (in a POST) in a JSON +\begin_inset CommandInset citation +LatexCommand cite +key "JSON" + +\end_inset + + encoded data block sent with the POST or encode it into the URL of the + command. + +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/rest_cmds.eps + scale 30 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Caption + +\begin_layout Plain Layout +REST command structure +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +In the FIRENET system we have encoded most of the command syntax into the + URI. + As you can see from the base node (which is programmable see: +\begin_inset CommandInset ref +LatexCommand vref +reference "par:http.start()" + +\end_inset + +) we then have commands to do the administrative or FIRENET functions. + Doing GETs will return data from a node and doing a POST will cause some + action. +\end_layout + +\begin_layout Standard +For the following examples we will assume the web server (Control Computer) + is at http://192.168.1.100:8080 and that the base of the RESTful tree is at + REST. +\end_layout + +\begin_layout Standard +So a full FIRENET system status is done with an HTTP GET to: +\end_layout + +\begin_layout LyX-Code +http://192.168.1.100:8080/rest/firenet/status +\end_layout + +\begin_layout Standard +The response from this query is a JSON data block. +\end_layout + +\begin_layout Standard +Status of a single node is found via +\end_layout + +\begin_layout LyX-Code +http://192.168.1.100:8080/rest/firenet/status/5 +\end_layout + +\begin_layout Standard +where 5 is the selected node number. +\end_layout + +\begin_layout Standard +Firing a node is done by a POST to: +\end_layout + +\begin_layout LyX-Code +http://192.168.1.100:8080/rest/firenet/fire/5/3 +\end_layout + +\begin_layout Standard +would fire channel 3 on node 5 +\end_layout + +\begin_layout Subsubsection +Startup +\end_layout + +\begin_layout Standard +The REST operation is controlled by both HTTP pages (html & javascript) + and a set of Lua scripts. + When started the Firenet Control Computer main program reads both of these + sets of files to produce the desired actions. + The command line options are: +\end_layout + +\begin_layout Description +Command Line Options +\end_layout + +\begin_layout Description +-p # Port # of serial port connected to Firenet +\end_layout + +\begin_layout Description +-c +\end_layout + +\begin_layout Description +-rest +\end_layout + +\begin_layout Description +-http +\end_layout + +\begin_layout Description +-show +\end_layout + +\begin_layout Description +-log [Optional] Log file of Firenet operations during the run +\end_layout + +\begin_layout Paragraph +Example +\end_layout + +\begin_layout LyX-Code + +\size footnotesize +./Firenet -p 1 -c Site/Rest/main.lua -http Site/Site_J -show Shows -log log.txt +\end_layout + +\begin_layout Standard +Here the Firenet is started using device 1 (a USB serial port) as the Firenet + network connection. + The Lua file +\series bold +main.lua +\series default + is run as the initial script, the HTML is stored in Site/Site_J and the + show files are stored in the directory Shows. + The initial connection to the server would be: +\end_layout + +\begin_layout LyX-Code +http://:8081/Site_J/index.html +\end_layout + +\begin_layout Subsubsection +REST API +\end_layout + +\begin_layout Standard +The REST API consists of a number of URI's and specifications for the data + sent or received with the requests. + We will specify the URI as http:////... + Where stands for the TCP/IP address and port of the server and + stands for the path link set up for REST interactions (see +\begin_inset CommandInset ref +LatexCommand vref +reference "par:http.start()" + +\end_inset + +). +\end_layout + +\begin_layout Subsubsection +ADMIN +\end_layout + +\begin_layout Standard +These are overall control functions for the server and are not concerned + with the FIRENET nodes or network. +\end_layout + +\begin_layout Paragraph +ADMIN/TIME +\begin_inset Index idx +status open + +\begin_layout Plain Layout +TIME +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This is used to read out the server system clock. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////admin/time +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +NONE +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The returned data is the current server system time. +\end_layout + +\begin_layout LyX-Code +{ "TIME" : "Sun Nov 14 16:46:21 2010" } +\end_layout + +\begin_layout Paragraph +ADMIN/POWER +\begin_inset Index idx +status open + +\begin_layout Plain Layout +POWER +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This URI is used to check for system running and to shutdown the system +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +ACTION +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////admin/power +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +NONE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Return status +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////admin/power/on +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +NONE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Return status +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////admin/power/off +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +NONE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Return status and shutdown +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The returns status for the GET and first POST is: +\end_layout + +\begin_layout LyX-Code +{ "SYSTEM" : "ON" } +\end_layout + +\begin_layout Standard +For the second POST shutdown the response is: +\end_layout + +\begin_layout LyX-Code +{ "SYSTEM" : "OFF" } +\end_layout + +\begin_layout Paragraph +ADMIN/LOGIN +\end_layout + +\begin_layout Standard +Multiple sub commands used for logging in. + A client is logged in no other IP address can access the web server (see + the http.lock() command +\begin_inset CommandInset ref +LatexCommand vref +reference "par:http.lock()" + +\end_inset + +). + It is a simple challenge/response system. + When a request is made to log in the system supplies a challenge value, + a 16 bit value. + The user responds with 16 bit (i.e. + 4 digit) value. + If this matches that client is logged in and no other IP address is allowed + by the server. +\end_layout + +\begin_layout Standard +The challenge is one of these 4 byte values: +\end_layout + +\begin_layout LyX-Code +"50A0","F748","95B1","8D8B","4F34","52C7","85B6","EA03", +\end_layout + +\begin_layout LyX-Code +"E6B8","D37F","4FE1","5215","A868","9336","2885","6F15" +\end_layout + +\begin_layout Standard +The correct response is the value following the challenge value (with the + last value 6F15, looping back to the first 50A0). +\end_layout + +\begin_layout Standard + +\series bold +ADMIN/LOGIN/REQUEST +\begin_inset Index idx +status open + +\begin_layout Plain Layout + +\series bold +REQUEST +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Used to request a challenge value. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////admin/login/request +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +{ +\begin_inset Quotes eld +\end_inset + +CHAL +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + + +\begin_inset Quotes erd +\end_inset + + } +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard + +\series bold +ADMIN/LOGIN/RESPONSE +\series default + +\begin_inset Index idx +status open + +\begin_layout Plain Layout +RESPONSE +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This is used to return the response to the challenge. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////admin/login/response/ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +{ +\begin_inset Quotes eld +\end_inset + +LOGIN +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + +OK +\begin_inset Quotes erd +\end_inset + + } +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard + +\series bold +ADMIN/LOGIN/STATUS +\begin_inset Index idx +status open + +\begin_layout Plain Layout + +\series bold +STATUS +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This is used to query the server on the login status +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////admin/login/status +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +{ +\begin_inset Quotes eld +\end_inset + +LOGIN +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + +OK +\begin_inset Quotes erd +\end_inset + + } or { +\begin_inset Quotes eld +\end_inset + +LOGIN +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + +NO +\begin_inset Quotes erd +\end_inset + + } +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard + +\series bold +ADMIN/LOGIN/LOGOUT +\begin_inset Index idx +status open + +\begin_layout Plain Layout + +\series bold +LOGOUT +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////admin/login/logout +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +{ +\begin_inset Quotes eld +\end_inset + +LOGOUT +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + +OK +\begin_inset Quotes erd +\end_inset + + } +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +FIRENET +\end_layout + +\begin_layout Standard +This URI us connected to the FIRENET network and will control and return + status of the operating FIRENET boards. + +\end_layout + +\begin_layout Paragraph +FIRENET/STATUS +\begin_inset Index idx +status open + +\begin_layout Plain Layout +STATUS +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This URI is used to read the status of the entire network or a single node + status. + The entire network status is useful when starting the system or to recover + from a restart. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/status +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Entire network status +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/status/C +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Entire network status & clear network map +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/status/ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Single node status +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The entire network status is: +\end_layout + +\begin_layout LyX-Code +{ "STATUS" : "SUCCESS" +\end_layout + +\begin_deeper +\begin_layout LyX-Code +{ +\end_layout + +\begin_deeper +\begin_layout LyX-Code +"1" : { +\end_layout + +\begin_deeper +\begin_layout LyX-Code +"ARMED" : "0" +\end_layout + +\begin_layout LyX-Code +"UNFIRED" : { +\end_layout + +\begin_deeper +\begin_layout LyX-Code +"1" : "1" +\end_layout + +\begin_layout LyX-Code +"2" : "1" +\end_layout + +\begin_layout LyX-Code +"3" : "1" +\end_layout + +\begin_layout LyX-Code +"4" : "1" +\end_layout + +\begin_layout LyX-Code +"5" : "1" +\end_layout + +\begin_layout LyX-Code +"6" : "1" +\end_layout + +\end_deeper +\begin_layout LyX-Code + } +\end_layout + +\begin_layout LyX-Code +"FIRED" : { +\end_layout + +\begin_deeper +\begin_layout LyX-Code +"1" : "0" +\end_layout + +\begin_layout LyX-Code +"2" : "0" +\end_layout + +\begin_layout LyX-Code +"3" : "0" +\end_layout + +\begin_layout LyX-Code +"4" : "0" +\end_layout + +\begin_layout LyX-Code +"5" : "0" +\end_layout + +\begin_layout LyX-Code +"6" : "0" +\end_layout + +\end_deeper +\begin_layout LyX-Code + } +\end_layout + +\end_deeper +\end_deeper +\begin_layout LyX-Code +} +\end_layout + +\begin_layout LyX-Code +{ +\end_layout + +\begin_deeper +\begin_layout LyX-Code +\begin_inset Quotes eld +\end_inset + +2 +\begin_inset Quotes erd +\end_inset + + : { +\end_layout + +\begin_layout LyX-Code +: +\end_layout + +\begin_layout LyX-Code +: +\end_layout + +\end_deeper +\end_deeper +\begin_layout LyX-Code +} +\end_layout + +\begin_layout Standard +Each node is grouped separately and +\begin_inset Quotes eld +\end_inset + +1 +\begin_inset Quotes erd +\end_inset + + node is shown fully here. + As you can see each node has its ARMED status (see below) and the status + of each firing channel listed. + The UNFIRED values with a 1 means there is ignitor connected to that channel + and it has not been fired. + A 0 means there is nothing connected to that channel. + The FIRED value, 0 means it has not been fired yet and 1 means it has. +\end_layout + +\begin_layout Standard +The +\begin_inset Quotes eld +\end_inset + +C +\begin_inset Quotes erd +\end_inset + + command will do the same network status for all the nodes but in addition + will clear the map of any previous entries and build a new map. + If a node had changed address it will still be in the old map. + This +\begin_inset Quotes eld +\end_inset + +C +\begin_inset Quotes erd +\end_inset + + will ensure that none of the phantom entries will be present. +\end_layout + +\begin_layout Standard +When a single node status is read you get the following JSON. + This is almost the same as the full status but the node number is not given + in this case since you requested a particular node in the URI that value + is not returned with the data. +\end_layout + +\begin_layout LyX-Code +{ "STATUS" : "SUCCESS" +\end_layout + +\begin_deeper +\begin_layout LyX-Code +{ +\end_layout + +\begin_deeper +\begin_layout LyX-Code +"ARMED" : "0" +\end_layout + +\begin_layout LyX-Code +"UNFIRED" : { +\end_layout + +\begin_deeper +\begin_layout LyX-Code +"1" : "1" +\end_layout + +\begin_layout LyX-Code +"2" : "1" +\end_layout + +\begin_layout LyX-Code +"3" : "1" +\end_layout + +\begin_layout LyX-Code +"4" : "1" +\end_layout + +\begin_layout LyX-Code +"5" : "1" +\end_layout + +\begin_layout LyX-Code +"6" : "1" +\end_layout + +\end_deeper +\begin_layout LyX-Code + } +\end_layout + +\begin_layout LyX-Code +"FIRED" : { +\end_layout + +\begin_deeper +\begin_layout LyX-Code +"1" : "0" +\end_layout + +\begin_layout LyX-Code +"2" : "0" +\end_layout + +\begin_layout LyX-Code +"3" : "0" +\end_layout + +\begin_layout LyX-Code +"4" : "0" +\end_layout + +\begin_layout LyX-Code +"5" : "0" +\end_layout + +\begin_layout LyX-Code +"6" : "0" +\end_layout + +\end_deeper +\begin_layout LyX-Code + } +\end_layout + +\end_deeper +\begin_layout LyX-Code + } +\end_layout + +\end_deeper +\begin_layout LyX-Code +} +\end_layout + +\begin_layout Paragraph +FIRENET/ARM +\begin_inset Index idx +status open + +\begin_layout Plain Layout +ARM +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This command is used to ARM, i.e. + turn on firing power in a FIRENET node. + The unit will not fire an ignitor unless it is armed. + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/arm//A +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Node # is the particular node to be armed +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/arm//D +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Node # is the particular node to be disarmed +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The ARMED or DISARMED state will be reflected in the node status. + NOTE: You can send an ARM command to address Node 0 which is the broadcast + address (see +\begin_inset CommandInset ref +LatexCommand vref +reference "par:ARM" + +\end_inset + +) and arm all the nodes simultaneously. +\end_layout + +\begin_layout Paragraph +FIRENET/FIRE +\begin_inset Index idx +status open + +\begin_layout Plain Layout +FIRE +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This command is used to fire a ignitor on a node. + The data includes the node # and channel (1-6) on the node. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/fire// +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Node # and Channel # must be supplied +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +After a ignitor is fired the status will be changed for that channel. + The FIRED value will go to 1 and the UNFIRED will go to 0 if the firing + was successful. + This command cannot be sent to the broadcast address, it must be to an + individual node. +\end_layout + +\begin_layout Paragraph +FIRENET/SYNC +\begin_inset Index idx +status open + +\begin_layout Plain Layout +SYNC +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This message is sent to all FIRENET nodes and synchronizes their millisecond + clocks. + This will be needed to support delayed firing commands. + The optional P node on the end will start the program the stored program + (see +\begin_inset CommandInset ref +LatexCommand vref +reference "par:PGM" + +\end_inset + +) +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/sync/[P] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +All node millisecond clocks are set to 0, iP added program is started +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +FIRENET/PGM +\begin_inset Index idx +status open + +\begin_layout Plain Layout +PGM +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This is similar to the DELAY command but in this case the delay command + will be stored. + All FIRENET nodes have a 32 bit millisecond timer. + The SYNC command zeros the timers on all nodes. + Sending a PROGRAM command will store a FIRE command to occur at a specific + 32 bit millisecond time. + Thus a number of nodes can fire pieces as precisely the same time. + When the Sync is set with a P node then the sequence of stored commands + will be started. + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/pgm/// +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Fire channel on specified node at 32 bit ms time +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +FIRENET/DELAY +\begin_inset Index idx +status open + +\begin_layout Plain Layout +DELAY +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This is similar to the FIRE command but in this case the firing command + will be executed at a set time. + All FIRENET nodes have a 32 bit millisecond timer. + The SYNC command zeros the timers on all nodes. + Sending a DELAY command will queue up a FIRE command to occur at a specific + 32 bit millisecond time. + Thus a number of nodes can fire pieces as precisely the same time. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/delay/// +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Fire channel on specified node at 32 bit ms time +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +FIRENET/VERSION +\end_layout + +\begin_layout Standard +This message is used to get the version information on a Firenet node. + When set to a specific node it returns the date time of the software version + in the node. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/version/ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Node # must be supplied +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +This then returns the JSON: +\end_layout + +\begin_layout LyX-Code +{ "STATUS" : "XMIT", "VERSION" : "RVMar 6 2011 16-23-19" } +\end_layout + +\begin_layout Standard +The software was loaded on the node 6 March 2011 at 16:23:19 local time. +\end_layout + +\begin_layout Paragraph +FIRENET/CHANNEL +\end_layout + +\begin_layout Standard +This command is used to read out the A/D value on a particular channel of + a node. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/channel// +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Node # and Channel # must be supplied +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +This returns the JSON: +\end_layout + +\begin_layout LyX-Code +{ "STATUS" : "XMIT", "AD" : "0039", "DATA" : "RC00039", "FIRED" : "0" } + +\end_layout + +\begin_layout Standard +This says the AD value is 0039 (with 1023 MAX) and the data shows the message + received back (see message section) and FIRED shows the status of the fired + bit (this channel is not fired). +\end_layout + +\begin_layout Paragraph +FIRENET/LITERAL +\end_layout + +\begin_layout Standard +This command allows any FIRENET network message to be sent and the response + received. + The message is sent only to the node (0 address not allowed). + The Firenet response is returned. + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/literal// +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Node # must be supplied +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +For example sending the command V (version) you send: +\end_layout + +\begin_layout Standard + +\series bold +...firenet/literal/1/v +\series default + Sends the command V to node 1 you get the JSON: +\end_layout + +\begin_layout LyX-Code +{ "STATUS" : "XMIT", "FROM" : "1", "DATA" : "RVMar 6 2011 16-23-19" } +\end_layout + +\begin_layout Subsubsection +PROGRAM Automated Show Commands +\end_layout + +\begin_layout Paragraph Introduction \end_layout \begin_layout Standard -This is a networked Fireworks controller system that uses a RS-485 Carrier - Sense Muliple Access two wire network. - Each firing box or node in the network has 6 firing circuits and up to - 30 of these boxes can be networked together. - Each box has a user assigned name and is automatically assigned a physical - address in the network. -\end_layout - -\begin_layout Standard -The nodes are controlled by a laptop also on the network running software - that allows either manual or scripting firing sequences. - The laptop through the controlling software can also monitor the health - and connectivity of the nodes and the network. -\end_layout - -\begin_layout Section -Firenet Network Design -\end_layout - -\begin_layout Subsection -Physical Layer -\end_layout - -\begin_layout Standard -The physical layer of the network uses the RS-485 standard interface with - a two wire circuit. - RS-485 uses a balanced circuit where the signal is one wire and the inverse - is on the other wire. - This gives greater noise immunity and a range of about 300 meters for the - wiring. - Since only two wires are used we both transmit and receive on the same - pair. - This means that a sender must enable the transmitter outputs then send - the data, and when done disable the transmitter outputs. - This is very similar (but much slower) that the original ethernet where - all the signals were on a single coaxial cable. - -\end_layout - -\begin_layout Standard -\begin_inset Float figure -placement H -wide false -sideways false -status open - -\begin_layout Plain Layout -\noindent -\align center -\begin_inset Graphics - filename Images/485network.eps - scale 80 - -\end_inset - - -\end_layout - -\begin_layout Plain Layout -\begin_inset Caption - -\begin_layout Plain Layout -RS-485 Network -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -In this design we will be using the Linear Technology chip LTC485 -\begin_inset CommandInset citation -LatexCommand cite -key "LTC485" - -\end_inset - - chip that is RS-485 compliant and is low power. -\end_layout - -\begin_layout Subsection -Data Link Layer -\end_layout - -\begin_layout Subsubsection -Packet Format -\end_layout - -\begin_layout Standard -This layer handles the carrier sense multiple access and addressing of the - data packets exchanged. - The data packet on the network looks like this: -\end_layout - -\begin_layout Standard -\begin_inset Float figure -placement H -wide false -sideways false -status open - -\begin_layout Plain Layout -\noindent -\align center -\begin_inset Graphics - filename Images/packet.eps - -\end_inset - - -\end_layout - -\begin_layout Plain Layout -\begin_inset Caption - -\begin_layout Plain Layout -Packet Format -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -The data in a packet is as follows: -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Name -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Data -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Example -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -HDR -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -: -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -The ':' character -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout +These are a set of commands used to start and run an automated show. + In this case the nodes are programmed with the firing sequences see ( +\begin_inset CommandInset ref +LatexCommand vref +reference "par:PGM" + +\end_inset + +) and then run. + These commands allow selection of a show (music and firing sequence files), + loading of the nodes and running the show. +\end_layout + +\begin_layout Description +ProgramCommands +\end_layout + +\begin_deeper +\begin_layout Description +list Return a list of available shows +\end_layout + +\begin_layout Description +set Select an available show +\end_layout + +\begin_layout Description +pgm Program nodes with selected show +\end_layout + +\begin_layout Description +start Start selected show with both firing actions and music +\end_layout + +\begin_layout Description +status Readout of fired pieces during show +\end_layout + +\begin_layout Description +abort Stop show as an emergency action +\end_layout + +\end_deeper +\begin_layout Paragraph +Show Directory +\end_layout + +\begin_layout Standard +The FIRENET program has been given the directory of the available shows + with the -shows command line flag. + In this directory are music files and corresponding firing sequence files. + Also there is a file called +\series bold +shows.json +\series default + which lists the available shows in the following form: +\end_layout + +\begin_layout LyX-Code +{ +\end_layout + +\begin_deeper +\begin_layout LyX-Code +"shows" : [ +\end_layout + +\end_deeper +\begin_layout LyX-Code + { "show" : "La Marseillaise", +\end_layout + +\begin_layout LyX-Code + "file" : "mariseillaise.json", +\end_layout + +\begin_layout LyX-Code + "nodes" : "6", +\end_layout + +\begin_layout LyX-Code + "time" : "1:26" +\end_layout + +\begin_layout LyX-Code + }, +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + { +\end_layout + +\begin_layout LyX-Code + "show" : "Stars & Stripes Forever", +\end_layout + +\begin_layout LyX-Code + "file" : "ss_forever.json", +\end_layout + +\begin_layout LyX-Code + "nodes" : "10", +\end_layout + +\begin_layout LyX-Code + "time" : "3:38" +\end_layout + +\begin_layout LyX-Code + } +\end_layout + +\begin_layout LyX-Code + ] +\end_layout + +\begin_layout LyX-Code +} +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout Standard +Where each set of KVP's corresponds to a particular show detailing the name, + show description file, # nodes required and the time of the show. +\end_layout + +\begin_layout Standard +The show (e.g ss_forever.json) file show looks as follows: +\end_layout + +\begin_layout LyX-Code +{ +\end_layout + +\begin_deeper +\begin_layout LyX-Code +"show" : "Stars & Stripes Forever", +\end_layout + +\begin_layout LyX-Code +"music" : "stars_stripes_forever.mp3", +\end_layout + +\begin_layout LyX-Code +"time" : "3:38", +\end_layout + +\begin_layout LyX-Code +"nodes" : "10", +\end_layout + +\begin_layout LyX-Code +\begin_inset Quotes eld +\end_inset + +program +\begin_inset Quotes erd +\end_inset + + : [ +\end_layout + +\end_deeper +\begin_layout LyX-Code + { "node" : " 1", "ch" : "1", "delay" : "1000"}, +\end_layout + +\begin_layout LyX-Code + { "node" : " 1", "ch" : "2", "delay" : "2000"}, +\end_layout + +\begin_layout LyX-Code + { "node" : " 1", "ch" : "3", "delay" : "3000"}, +\end_layout + +\begin_layout LyX-Code + : +\end_layout + +\begin_layout LyX-Code + : +\end_layout + +\begin_deeper +\begin_layout LyX-Code +] +\end_layout + +\end_deeper +\begin_layout LyX-Code +} +\end_layout + +\begin_layout Standard +It shows where the music file is found and lists the firing commands for + the nodes. + +\end_layout + +\begin_layout Paragraph +FIRENET/PROGRAM/LIST +\begin_inset Index idx +status open + +\begin_layout Plain Layout +LIST +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This command is used to return a list of available shows to the user. + The FIRENET program has been given the directory containing the show files + and it reads a file +\begin_inset Quotes eld +\end_inset + +shows.json +\begin_inset Quotes erd +\end_inset + + and returns that data to the requestor. + It returns the JSON from the shows.json file (see above) +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/program/list +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +No data, only one referent +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The returned JSON data will exactly match the +\series bold +shows.json +\series default + file from the designated shows directory. +\end_layout + +\begin_layout Paragraph +FIRENET/PROGRAM/SET +\begin_inset Index idx +status open + +\begin_layout Plain Layout +SET +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This command is used to select the show to be run. + After receiving the list the user sends back a name from the list of available + shows and that show's data is read. + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/program/set/# +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Show position in the list +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The response is a JSON status response: +\end_layout + +\begin_layout LyX-Code + +\size footnotesize +{ +\end_layout + +\begin_deeper +\begin_layout LyX-Code + +\size footnotesize +\begin_inset Quotes eld +\end_inset + +STATUS +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + +OK +\begin_inset Quotes erd +\end_inset + + <-- If successful, other responses if the number is not correct +\end_layout + +\end_deeper +\begin_layout LyX-Code + +\size footnotesize +} +\end_layout + +\begin_layout Paragraph +FIRENET/PROGRAM/PGM +\begin_inset Index idx +status open + +\begin_layout Plain Layout +PGM +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This command will program all the connected firenet nodes with the show + times as given in the particular show file. + This will also check that all nodes have been programmed correctly. + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/program/set/# +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Show position in the list +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The response is a JSON status response: +\end_layout + +\begin_layout LyX-Code + +\size footnotesize +{ +\end_layout + +\begin_deeper +\begin_layout LyX-Code + +\size footnotesize +\begin_inset Quotes eld +\end_inset + +STATUS +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + +OK +\begin_inset Quotes erd +\end_inset + + <-- If successful, other responses nodes were not programmed +\end_layout + +\end_deeper +\begin_layout LyX-Code + +\size footnotesize +} +\end_layout + +\begin_layout Paragraph +FIRENET/PROGRAM/START +\begin_inset Index idx +status open + +\begin_layout Plain Layout +START +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This is the command to start the show. + If the show has been SET then this will start by syncing the nodes, then + starting the music file and start the programmed firing sequence in the + nodes. + The user has to have armed the nodes before sending this command. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/program/PGM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Will return status message +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout LyX-Code + +\size footnotesize +{ +\end_layout + +\begin_deeper +\begin_layout LyX-Code + +\size footnotesize +\begin_inset Quotes eld +\end_inset + +STATUS +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + +OK +\begin_inset Quotes erd +\end_inset + + <-- If successful, other responses if the number is not correct +\end_layout + +\end_deeper +\begin_layout LyX-Code + +\size footnotesize +} +\end_layout + +\begin_layout Paragraph +FIRENET/PROGRAM/STATUS +\begin_inset Index idx +status open + +\begin_layout Plain Layout +STATUS +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This command is used to return status during the show. + It will tell if the show is still running and what nodes have fired since + the last status message. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +TYPE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +DATA +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/program/status +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Will return status message +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout LyX-Code + +\size footnotesize +{ +\end_layout + +\begin_layout LyX-Code + +\size footnotesize + +\begin_inset Quotes eld +\end_inset + +STATUS +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + +OK +\begin_inset Quotes erd +\end_inset + +, <-- Other values +\begin_inset Quotes eld +\end_inset + +eos +\begin_inset Quotes erd +\end_inset + + or +\begin_inset Quotes eld +\end_inset + +abort +\begin_inset Quotes erd +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout LyX-Code + +\size footnotesize + +\begin_inset Quotes eld +\end_inset + +FIRED +\begin_inset Quotes erd +\end_inset + + : [ +\end_layout + +\begin_deeper +\begin_layout LyX-Code + +\size footnotesize +{ +\begin_inset Quotes eld +\end_inset + +FROM +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + + +\begin_inset Quotes erd +\end_inset + +, +\begin_inset Quotes eld +\end_inset + +CH +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + + +\begin_inset Quotes erd +\end_inset + + },<-- There will be 1 or more +\end_layout + +\end_deeper +\begin_layout LyX-Code + +\size footnotesize + : +\end_layout + +\begin_layout LyX-Code + +\size footnotesize + : +\end_layout + +\begin_layout LyX-Code + +\size footnotesize +] +\end_layout + +\end_deeper +\begin_layout LyX-Code + +\size footnotesize +} +\end_layout + +\begin_layout Paragraph +FIRENET/PROGRAM/ABORT +\begin_inset Index idx +status open + +\begin_layout Plain Layout +ABORT +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This command is used to immediately stop a show. + All nodes are reset and the music stopped. + It returns a status message. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Request URI +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold TYPE \end_layout \end_inset - -\begin_inset Text - -\begin_layout Plain Layout -2 Nibble Hex -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -0x01 -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -TO -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -2 Nibble Hex -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -0x01-0xFE valid 0xFF -> Broadcast -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -FROM -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -2 Nibble Hex -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -0x01-0xFE valid -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold DATA \end_layout \end_inset - -\begin_inset Text - -\begin_layout Plain Layout -Up to 32 bytes of data represented as HEX -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -0x616263 -> Send 'ABC' -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -EOP -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -; -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -The ';' character -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -CKSUM -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -2 Nibble Hex -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Mod 0xFF sum of all fields except : and ; -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -All the data fields in the packet are sent as HEX strings. - Each byte of the data is turned into two ASCII characters 0-9, A-F. - Thus for example ASCII 'A' which is 0x61 in HEX would be sent as an ASCII - '6' and and ASCII '1'. - This conversion is done at the network interface so the user puts binary - values in the data to be sent but they are converted to HEX for the transmissio -n. - On reception the HEX data is converted back to binary so the receiver gets - what was sent not a HEX string. -\end_layout - -\begin_layout Standard -As you can see the header ':' and end of packet marker ';' are sent as themselve -s and thus can easily be distinguished from the ASCII HEX characters making - up the rest of the packet. - This makes it unecessary to put the packet length into the packet. - The receiver can easily find the delimiters and determine this information - for itself. -\end_layout - -\begin_layout Standard -All values in the data are in NETWORK byte order (MSB first). - -\end_layout - -\begin_layout Subsubsection -Transmission -\end_layout - -\begin_layout Standard -When sending the data the RS-485 network has the receiver and transmitter - on the same wire. - In this way the packet sender will receive the packet when sent. - If two units send packets simultaneously the data will be mixed in the - receivers and the checksums will be wrong. - If the transmission is wrong then both sender will stop, then wait a different - random amount of time and then try up to three more times before giving - up. - This is similar the Aloha network. -\begin_inset CommandInset citation -LatexCommand cite -key "Aloha" - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Addressing -\begin_inset CommandInset label -LatexCommand label -name "sub:Addressing" - -\end_inset - - -\end_layout - -\begin_layout Standard -The valid addresses of the nodes in the network range from 0x01 to 0xFE. - The address 0xFF is the Broadcast address and will be received by all nodes. - This limited range of addresses will not be a limit in practice since RS-485 - networks are limited to 32 nodes. -\end_layout - -\begin_layout Standard -The node addresses are self assigned. - Each node when it comes up will send out a broadcast message of type IAM - and with the FROM field set to its tentative address. - If it does not receive a NAK type packet on this message then it will use - that address. - If it does receive a NAK it will increment the address value and try again - till a address not in use is found. - The initial tentative address is picked randomly from the valid address - set. - This is done so the first guess for a address probably will not be in use. - This technique is used in Appletalk. - -\begin_inset CommandInset citation -LatexCommand cite -key "Appletalk" - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Packet Types -\end_layout - -\begin_layout Standard -The packet type field has the following values: -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Name -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Value -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Use -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -ACK -\end_layout - -\end_inset - + + + +\begin_inset Text + +\begin_layout Plain Layout +http:////firenet/program/status +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Will return status message +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout LyX-Code + +\size footnotesize +{ +\end_layout + +\begin_deeper +\begin_layout LyX-Code + +\size footnotesize +\begin_inset Quotes eld +\end_inset + +STATUS +\begin_inset Quotes erd +\end_inset + + : +\begin_inset Quotes eld +\end_inset + +OK +\begin_inset Quotes erd +\end_inset + + <-- If successful, other responses if problem +\end_layout + +\end_deeper +\begin_layout LyX-Code + +\size footnotesize +} +\end_layout + +\begin_layout Section +Lua Extension Classes +\end_layout + +\begin_layout Subsection +Introduction +\end_layout + +\begin_layout Standard +The Control Computer program is actually a modified Lua interperter. + Run without any parameters and it give a prompt and allows you to type + in Lua language commands. + The firing system starts the program with a Lua script written to use the + extensions added to this version of Lua. + There are extensions allowing FIRENET communication with the nodes. + There is a class layered over the libmicrohttpd Web server library to allow + Lua access to web data for the RESTful operation. + In addition there are support extension classes added for timers, JSON + parsing and keyboard control. + +\end_layout + +\begin_layout Standard +Following this will be a discussion of the scripts written with these extensions + to support both the RESTful interface and interfacing with the FIRENET + network. +\end_layout + +\begin_layout Subsection +RESTful Interface CLASS +\end_layout + +\begin_layout Subsubsection +Introduction +\end_layout + +\begin_layout Standard +The +\series bold +FIRENET +\series default + Lua system has a built in Web server so it can be used in conjunction with + a browser based client application. + This allows a rather full GUI application on any OS using the same JavaScript/B +rowser application. + In order for this to work an HTTP support library has been added. + The library GNU libmicrohttpd ( +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +http://www.gnu.org/software/libmicrohttpd/ +\end_layout + +\end_inset + +) +\begin_inset CommandInset citation +LatexCommand cite +key "HTTP" + +\end_inset + + is very well suited for this task. + It is small, self contained and is designed to be added into applications. + +\end_layout + +\begin_layout Standard +In addition a JSON parser has been added to support data sent in this form. + JSON messages out are easily generated using formatted write statements + in Lua. +\end_layout + +\begin_layout Subsubsection +Class Operation +\end_layout + +\begin_layout Standard +The Web server/RESTful class has three major parts. + The first is used to stop and start the server. + The start command requires parameters to tell it the TCP/IP port to use + for the HTTP transfer, data where standard web pages are located and a + location base for the RESTful request URIs. + This extension can be used as a normal web server serving up pages. +\end_layout + +\begin_layout Standard +The second part is a simple open/close set of calls to accept a request + and return a response. + Each request is an opaque Lua user object that is generated on receipt + of a request and is automatically destroyed when the response is returned. +\end_layout + +\begin_layout Standard +The third section of the class is used to extract information from the request, + this includes the request URL and any data included in the request. + +\end_layout + +\begin_layout Subsubsection +Class Methods - Server Control +\end_layout + +\begin_layout Paragraph +http.start() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +http.start() +\end_layout + +\end_inset + + +\begin_inset CommandInset label +LatexCommand label +name "par:http.start()" + +\end_inset + + +\end_layout + +\begin_layout Standard +This will start the HTTP server running. +\end_layout + +\begin_layout LyX-Code +status = http.start(port,http_base,rest_base) +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +INPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +NAME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +USE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +port +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TCP/IP port used for HTTP messages +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +http_base +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Path to standard html files served +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +rest_base +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Base path for RESTful actions of server +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +OUTPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +status +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +1 if server started OK, nil if failure +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +If the port was set to 8080 and the server's address was say 192.168.1.100 + then the following URI would access index.html stored at the http_base path. +\end_layout + +\begin_layout LyX-Code +http://192.168.1.100:8080/index.html +\end_layout + +\begin_layout Standard +If rest_base was set to REST then following URI would access some RESTful + action on the path action/node-1/fire/1 +\end_layout + +\begin_layout LyX-Code +http://192.168.1.100:8080/REST/action/node-1/fire/1 +\end_layout + +\begin_layout Standard +More details on the data and path information will be found in the http.url() + method. +\end_layout + +\begin_layout Paragraph +http.stop() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +http.stop() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This will stop the HTTP server. +\end_layout + +\begin_layout LyX-Code +http.stop() +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +INPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +NAME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +USE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +OUTPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +NONE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +This code can be used at any time after the http.start() command is given + and you can then restart the server (say with new parameters) without shutting + down the program. +\end_layout + +\begin_layout Paragraph +\begin_inset CommandInset label +LatexCommand label +name "par:http.lock()" + +\end_inset + +http.lock() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +http.lock() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This command is used to lock or unlock the server to only speak to one IP + address. + It is run in the context of handling a request and if locked, the request + client's IP address will be saved and only requests from that IP address + will be accepted till the server is unlocked. + All other requesters will get a 404. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +INPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +NAME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +USE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +h +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP RESTful request handle +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +flag +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +If <> nil then lock is done, if nil then unlock +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +OUTPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +NONE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +In the context of a request from IP=192.168.1.103 then: +\end_layout + +\begin_layout LyX-Code +h:lock(1) +\end_layout + +\begin_layout Standard +Would lock the server to 192.168.1.103 any other client would get a 404 on + any request. +\end_layout + +\begin_layout Paragraph +http.open() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +http.open() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This code is a +\series bold +non-blocking +\series default + call to receive a request. + If a request is present you will be returned a handle to the request, if + none you will get nil. +\end_layout + +\begin_layout LyX-Code +h = http.open() +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +INPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +NAME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +USE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +OUTPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +h +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP RESTful request handle. + nil if no request pending +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +You can use this call to poll for requests, note the requests are queued + so any pending requests are held till you retrieve them. + You can have multiple outstanding requests. +\end_layout + +\begin_layout Paragraph +http.close() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +http.close() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout LyX-Code +http.close(h,data) or h:close(data) +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +INPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +NAME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +USE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +h +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP RESTful request handle +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Data to be returned to client +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +OUTPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +NONE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +As you can see this is an instance class and you may use the request handle + as the selector to pick the method (close()). + Either form is acceptable. + This is used to return the result of a RESTful request to the client. + The data is usually encoded as JSON and will available to the client. + Also the request data (from http.open() is reclaimed. +\end_layout + +\begin_layout Paragraph +http.url(h) +\begin_inset Index idx +status open + +\begin_layout Plain Layout +http.url() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This method is used to get the URI of the request. +\end_layout + +\begin_layout LyX-Code +url,htty_type = http.url(h) or h:url() +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +INPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +NAME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +USE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +h +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP RESTful request handle +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +OUTPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +url +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +URL returned as a numeric index list of the path parts [1] = rest_base +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +OUTPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +htty_type +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Numeric value of HTTP request type, see below for list +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +This class like close may be used either as a class method or an instance + method. + In addition it returns two parameters the url of the request and the HTTP + request type. +\end_layout + +\begin_layout Standard +The List returned for the example REST request http://192.168.1.100:8080/REST/actio +n/node #/fire/1 would be: +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +INDEX +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +VALUE +\end_layout + +\end_inset + + + \begin_inset Text \begin_layout Plain Layout 1 @@ -1226,26 +7058,17 @@ \begin_inset Text \begin_layout Plain Layout -Ack Packet +REST \end_layout \end_inset - -\begin_inset Text - -\begin_layout Plain Layout -NAK -\end_layout - -\end_inset - \begin_inset Text \begin_layout Plain Layout 2 @@ -1255,26 +7078,17 @@ \begin_inset Text \begin_layout Plain Layout -Nak Packet +action \end_layout \end_inset - -\begin_inset Text - -\begin_layout Plain Layout -IAM -\end_layout - -\end_inset - \begin_inset Text \begin_layout Plain Layout 3 @@ -1284,33 +7098,17 @@ \begin_inset Text \begin_layout Plain Layout -IAM Packet (see -\begin_inset CommandInset ref -LatexCommand vref -reference "sub:Addressing" - -\end_inset - -) +node # \end_layout \end_inset - -\begin_inset Text - -\begin_layout Plain Layout -DATA -\end_layout - -\end_inset - \begin_inset Text \begin_layout Plain Layout 4 @@ -1320,33 +7118,17 @@ \begin_inset Text \begin_layout Plain Layout -Data transfer (see -\begin_inset CommandInset ref -LatexCommand vref -reference "sub:Application-Layer" - -\end_inset - -) +fire \end_layout \end_inset - -\begin_inset Text - -\begin_layout Plain Layout -PING -\end_layout - -\end_inset - \begin_inset Text \begin_layout Plain Layout 5 @@ -1356,12 +7138,11 @@ \begin_inset Text \begin_layout Plain Layout -Ping, i.e. - Echo packets return to sender +1 \end_layout \end_inset @@ -1370,481 +7151,30 @@ \end_inset \end_layout -\begin_layout Subsection -Application Layer -\begin_inset CommandInset label -LatexCommand label -name "sub:Application-Layer" - -\end_inset - - -\end_layout - -\begin_layout Standard -In this very simple network we will skip the Transport and Network layers - of the OSI model. - -\begin_inset CommandInset citation -LatexCommand cite -key "OSI" - -\end_inset - -The messages will be restricted to one packet and will be stand alone. - Also the model here is with a controller (i.e. - a laptop) controlling a number of firing boxes. - This simplifies things as the nodes will not be talking to each other and - will be driven by messages from the controller. -\end_layout - -\begin_layout Standard -The unit of data to/from the network is a packet of the form: -\end_layout - -\begin_layout LyX-Code -#define PHY_DATA_SIZE 32 -\end_layout - -\begin_layout LyX-Code -typedef struct { -\end_layout - -\begin_deeper -\begin_layout LyX-Code -unsigned char type; -\end_layout - -\begin_layout LyX-Code -unsigned char to; -\end_layout - -\begin_layout LyX-Code -unsigned char from; -\end_layout - -\begin_layout LyX-Code -int len; -\end_layout - -\begin_layout LyX-Code -unsigned char data[PHY_DATA_SIZE]; // Packet data -\end_layout - -\end_deeper -\begin_layout LyX-Code -} PACKET; -\end_layout - -\begin_layout Standard -The application layer code will only use DATA type packets. - This layer will only use structures embedded in the data. - It will be quite simple as the nodes will be running small microprocessors - with limited memory. -\end_layout - -\begin_layout Subsubsection -Commands +\begin_layout Standard +The http_type value returned is a number with the following meanings. \end_layout \begin_layout Standard \noindent \align center \begin_inset Tabular - - + + - \begin_inset Text \begin_layout Plain Layout \series bold -Command -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Data -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Information -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -A -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -[D/A] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Disarm (D), Arm (A) firing circuits -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -F -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Fire this circuit -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -D -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - - -\begin_inset Text - -\begin_layout Plain Layout -Delay fire, fire at or after Time ms -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -S -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -NONE -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Status (see below for resp msg) -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -R -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Rename this box -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -W -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -NONE -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Return node name -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -Z -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -NONE -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Sync all node clocks -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Paragraph -ARM Command -\end_layout - -\begin_layout Standard -This command is issued to enable/disable the firing circuits. - If node is not armed then all firing commands are ignored. - The node light will blink when box is armed. -\end_layout - -\begin_layout List -\labelwidthstring 00.00.0000 - -\series bold -AD -\series default - Disarm node -\end_layout - -\begin_layout List -\labelwidthstring 00.00.0000 - -\series bold -AA -\series default - Arm node -\end_layout - -\begin_layout Standard -This command is ignored if sent to the broadcast address. - There is no response. -\end_layout - -\begin_layout Paragraph -FIRE Command -\end_layout - -\begin_layout Standard -This command will fire a selected circuit in the node immediatly. - The node will be out of communication till the firing cycle is over. - The available firing channels are numbered from 0-5. -\end_layout - -\begin_layout List -\labelwidthstring 00.00.0000 - -\series bold -F3 -\series default - Fire circuit # 3 -\end_layout - -\begin_layout Standard -This command is ignored if sent to the broadcast address. - There is no response. -\end_layout - -\begin_layout Paragraph -DELAY FIRE Command -\begin_inset CommandInset label -LatexCommand label -name "par:DELAY" - -\end_inset - - -\end_layout - -\begin_layout Standard -This is similar to the firing command but will fire the selected ciruit - at the specified time. - All nodes keep a 32 bit millisecond counter. - The Z command (see -\begin_inset CommandInset ref -LatexCommand vref -reference "par:SYNC" - -\end_inset - -) will sync the time for all the nodes. - Thus you can send in a number of firing commands for different nodes and - they will all fire at the same time. - The available firing channels are numbered from 0-5. - The command takes a single byte firing circuit value and 32 bit time value. -\end_layout - -\begin_layout List -\labelwidthstring 00.00.0000 - -\series bold -D300001000 -\series default -Fire circuit 3 after at 16,384 ms into the run. -\end_layout - -\begin_layout Standard -This command is ignored if sent to the broadcast address. - There is no response. -\end_layout - -\begin_layout Paragraph -STATUS Command -\end_layout - -\begin_layout Standard -This command generates a response message showing the node status -\end_layout - -\begin_layout List -\labelwidthstring 00.00.0000 - -\series bold -S -\series default - Return status of node -\end_layout - -\begin_layout Standard -The return message looks like this (it is sent to the address of the unit - that sent the status command -\end_layout - -\begin_layout Standard -SR[A/D] -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Field +Value \end_layout \end_inset @@ -1862,295 +7192,587 @@ \begin_inset Text \begin_layout Plain Layout -SR -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Status response designator -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[A/D] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Armed (A) or Disarmed (D) status of node -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -Fired circuits -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -One bytes of binary data with a bit set for each fired circuit -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -Unfired circuits -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -One bytes of binary data with a bit set for each circuit that wired and - ready to fire -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -The status message can be sent as a broadcast. -\end_layout - -\begin_layout Paragraph -RENAME Command -\end_layout - -\begin_layout Standard -This command is used to rename the node addressed. - It is used to apply a new logical name to a physical node. - The name sent must be terminated with a NUL. -\end_layout - -\begin_layout Paragraph -WHO Command -\end_layout - -\begin_layout Standard -This command is used to return the node name. - It is used to generate a logical to physical address map for the network. - It can be sent as a broadcast. -\end_layout - -\begin_layout List -\labelwidthstring 00.00.0000 - -\series bold -W -\series default - Return node name -\end_layout - -\begin_layout Standard -The return message is just the current name of the addressed node followed - by a NUL. -\end_layout - -\begin_layout Standard -WR -\end_layout - -\begin_layout Paragraph -SYNCHRONIZE Node Clocks -\begin_inset CommandInset label -LatexCommand label -name "par:SYNC" - -\end_inset - - -\end_layout - -\begin_layout List -\labelwidthstring 00.00.0000 - -\series bold -Z -\series default - Synchronize node clocks. -\end_layout - -\begin_layout Standard -This command is used to set all node (and controller clocks to zero. - All nodes in the system have a 32 bit millisecond counter. - This command when received will set that counter to zero. - Then this counter can be used to schedule synchronized events in the various - firing boxes. - (See Delay fire command -\begin_inset CommandInset ref -LatexCommand vref -reference "par:DELAY" - -\end_inset - -). -\end_layout - -\begin_layout Part -Software -\end_layout - -\begin_layout Section -Software Installation/Operation -\end_layout - -\begin_layout Subsection -Introduction -\end_layout - -\begin_layout Standard -The software used to control Firenet runs on a laptop and will be connected - to the RS-485 network through an interface box. - It is designed to use the serial port on the laptop to manage the network - of firing boxes. - -\series bold -FIRENET -\series default - is a command line program that has the interfacing code (Firenet packet - handlers) and a Lua interperter -\begin_inset CommandInset citation -LatexCommand cite -key "Lua5" - -\end_inset - -. - The scripting language has been extended to support the network and enable - scripting of fireworks shows. - -\end_layout - -\begin_layout Standard - -\series bold -FIRENET -\series default - as a program does little except interface to the network and support scripting. - All the work for a user interface or system control must be written Lua - scripts. - The rest of this section will detail the extensions to Lua and example - scripts. -\end_layout - -\begin_layout Subsection -Installation -\end_layout - -\begin_layout Standard -The executable for -\series bold -FIRENET -\series default -will be supplied on a CD or USB key. - All you have to do is copy the supplied folder to your laptop in a convenient. - Inside the folder will be the executable and a number of example scripts. - -\end_layout - -\begin_layout Subsection -Initial Test -\end_layout - -\begin_layout Standard -For a quick test do the following: -\end_layout - -\begin_layout LyX-Code -> ./FIRENET -c itest.lua -p X -\end_layout - -\begin_deeper -\begin_layout LyX-Code -: -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\end_deeper -\begin_layout Standard -This will run FIRENET and do a sample show with the built in network simulator. - It should play +0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP_NONE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP_CONNECT +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +2 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +HTTP_DELETE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +3 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +HTTP_GET +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +4 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP_HEAD +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +5 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP_OPTIONS +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +6 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +HTTP_POST +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +7 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +HTTP_PUT +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +8 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP_TRACE +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The highlighted items are the only ones normally used in the RESTful protocol. +\end_layout + +\begin_layout Paragraph +http.data() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +http.data() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This is used to get the data on a POST request. +\end_layout + +\begin_layout LyX-Code +post_data = http.data(h) or h:data() +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +INPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +NAME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +USE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +h +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HTTP RESTful request handle +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +OUTPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +POST data from request, all other types return nil +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +This method is used to get the POST data on a request. + This is returned as a string. + In most cases in FIRENET it will be a JSON string which can be processed + using the JSON parser. +\end_layout + +\begin_layout Paragraph +parsers.json() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +parsers.json() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +This is used to turn a JSON string into a Lua list structure. +\end_layout + +\begin_layout LyX-Code +json_list = parsers.json(json_string) +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +INPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +NAME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +USE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +json_string +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Valid JSON string +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +OUTPUT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +json_list +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +List version of JSON structure or nil if invalid JSON +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +This will turn a JSON string structure for example: +\end_layout + +\begin_layout LyX-Code +json_string = +\begin_inset Quotes eld +\end_inset + +{ +\backslash + +\begin_inset Quotes eld +\end_inset + +key +\backslash + +\begin_inset Quotes erd +\end_inset + + : +\backslash + +\begin_inset Quotes eld +\end_inset + +value +\backslash + +\begin_inset Quotes erd +\end_inset + + +\backslash + +\begin_inset Quotes eld +\end_inset + +key1 +\backslash + +\begin_inset Quotes erd +\end_inset + + : +\backslash + \begin_inset Quotes eld \end_inset -Stars & Stripes Forever +value1 +\backslash + +\begin_inset Quotes erd +\end_inset + + } \begin_inset Quotes erd \end_inset - and show a number of pieces being fired. -\end_layout - -\begin_layout Part -Scripting -\end_layout - -\begin_layout Section -Extension Classes -\end_layout - -\begin_layout Standard -Firenet the firing system is controlled by Lua scripts run on the -\series bold -FIRENET -\series default - program. - A key file is generated to mark when in the muisc a picece is fired. - This information plus the node and channel to be fired then forms a queue - file. - This file and the music file are then played by a script. - The script would start the music playing and then read the queue file and - send the firing commands at the correct time. - In order to do these functions Lua must be extended to (a) send commands - on the network, (b) have an accurate timing system and (c) control the - music files. -\end_layout - -\begin_layout Standard -These are the extension classes that allow the control of the firing system + +\end_layout + +\begin_layout LyX-Code +list = parsers.json(json_string) +\end_layout + +\begin_layout LyX-Code +print(list) +\end_layout + +\begin_layout LyX-Code + +\series bold +table: 0x100108bd0 +\end_layout + +\begin_layout LyX-Code +table.foreach(list,print) +\end_layout + +\begin_layout LyX-Code + +\series bold +JOBJ table: 0x100108c10 +\end_layout + +\begin_layout LyX-Code +table.foreach(list.JOBJ,print) +\end_layout + +\begin_layout LyX-Code + +\series bold +key value +\end_layout + +\begin_layout LyX-Code + +\series bold +key1 value1 +\end_layout + +\begin_layout Standard +See the JSON references for an idea of what sort of structures you can expect. \end_layout \begin_layout Subsection Timer CLASS \end_layout @@ -2175,10 +7797,20 @@ Timer Class Methods \end_layout \begin_layout Paragraph timer.sleep() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +timer.sleep() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard Will cause Lua to idle for a set number of milliseconds. @@ -2189,11 +7821,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -2301,10 +7933,20 @@ Timer Constructors/Destructors \end_layout \begin_layout Paragraph timer.new() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +timer.new() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This creates a timer object that Lua can use for periodic operations and to check for elapsed time. @@ -2318,11 +7960,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -2431,10 +8073,20 @@ \end_layout \begin_layout Paragraph timer.delete() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +timer.delete() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This will dispose of a timer when it is no longer needed. \end_layout @@ -2444,11 +8096,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -2556,10 +8208,20 @@ Timer Methods \end_layout \begin_layout Paragraph timer.start() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +timer.start() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This is used to reset an active timer to 0. Useful to reset elapsed time to 0. @@ -2570,11 +8232,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -2678,10 +8340,20 @@ \end_layout \begin_layout Paragraph timer.done() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +timer.done() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This is used to check for timer done, returns true when interval passed or nil if not @@ -2692,11 +8364,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -2829,10 +8501,20 @@ \end_layout \begin_layout Paragraph timer.read() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +timer.read() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This is used to return the current elapsed time for a particular timer \end_layout @@ -2842,11 +8524,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -2956,285 +8638,44 @@ \begin_layout Standard This is the interface to the Firenet network. This class will be able to sent and receive messages with the firing boxes on the net. - + This will send raw packets and receive raw packets. \end_layout \begin_layout Subsubsection Data Format \end_layout \begin_layout Standard Packets transmitted or received on the Firenet interface are in the form of Lua lists. - The destination and command fields are the same in all the messages but - the subsequent fields are dependent on the message type. - The forms are: -\end_layout - -\begin_layout Standard -\noindent -\align center -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Command -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Header Fields -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -Information Fields -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -ARM -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -CMD=A TO= -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -DATA=[A/D] for Arm/Disarm -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -FIRE -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -CMD=F TO= -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -DATA= -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -DLY FIRE -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -CMD=D TO= -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -DATA= DELAY= -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -S -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -CMD=S TO= -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -DATA=[A/D] FIRED= UNFIRED= -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -R -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -CMD=R TO= -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -DATA= -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -W -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -CMD=W TO= -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -DATA= -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -Z -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -CMD=Z TO= -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -No Data -\end_layout - -\end_inset - - - - -\end_inset - - + There are three elements, the TO field where the destination address is + specified, the FROM field where the source is specified and the DATA field + for the packet data. + All of these fields are present for a received packet, while the transmit + packet does not need a FROM field, it automatically uses the master node + address. \end_layout \begin_layout Subsubsection Creators/Destructors \end_layout \begin_layout Paragraph firenet.new() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +firenet.new() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This creates a new network interface object. You must call this before starting a run. @@ -3245,11 +8686,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -3358,10 +8799,20 @@ time. \end_layout \begin_layout Paragraph firenet.delete() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +firenet.delete() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This will dispose of a network interface and map when no longer needed. \end_layout @@ -3371,11 +8822,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -3483,25 +8934,35 @@ Methods \end_layout \begin_layout Paragraph firenet.read() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +firenet.read() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This returns the next message from the network. - + It is a non-blocking call. \end_layout \begin_layout LyX-Code msg = handle:read() \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -3610,11 +9071,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -3654,37 +9115,29 @@ \begin_inset Text \begin_layout Plain Layout -cmd +TO \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout -Message command +Destination node \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout -msg.cmd = -\begin_inset Quotes eld -\end_inset - -W -\begin_inset Quotes erd -\end_inset - - WHOIS command +Usually your node but can be broadcast address \end_layout \end_inset @@ -3691,11 +9144,11 @@ \begin_inset Text \begin_layout Plain Layout -from +FROM \end_layout \end_inset @@ -3720,11 +9173,11 @@ \begin_inset Text \begin_layout Plain Layout -- +DATA \end_layout \end_inset @@ -3738,11 +9191,18 @@ \begin_inset Text \begin_layout Plain Layout -These fields vary depending on message type (see message table) +Message dependent data (see Section +\begin_inset CommandInset ref +LatexCommand vref +reference "sub:Commands" + +\end_inset + +) \end_layout \end_inset @@ -3753,5 +9213,10 @@ \end_layout \begin_layout Paragraph firenet.write() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +firenet.write() @@ -3758,5 +9223,10 @@ +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This writes a message to the network \end_layout @@ -3766,11 +9236,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -3878,12 +9348,12 @@ The send message is a Lua list with the following format \end_layout \begin_layout Standard \begin_inset Tabular - - + + @@ -3923,66 +9393,29 @@ \begin_inset Text \begin_layout Plain Layout -cmd +TO \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout -Message command +Message destination \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout -msg.cmd = -\begin_inset Quotes eld -\end_inset - -W -\begin_inset Quotes erd -\end_inset - - WHOIS command -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -to -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Destination Node -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Message destination as physical address +msg.TO = 2 Send to node 3 \end_layout \end_inset @@ -3989,11 +9422,11 @@ \begin_inset Text \begin_layout Plain Layout -- +DATA \end_layout \end_inset @@ -4007,11 +9440,18 @@ \begin_inset Text \begin_layout Plain Layout -These fields vary depending on message type (see message table) +Message dependent data (see Section +\begin_inset CommandInset ref +LatexCommand vref +reference "sub:Commands" + +\end_inset + +) \end_layout \end_inset @@ -4025,12 +9465,11 @@ \begin_layout Subsection Keyboard Class \end_layout \begin_layout Standard -This class which has no methods is used to query the keyboard while a script - is running. +This class is used to query the keyboard while a script is running. This can be used to allow the user to hit keys to modify the script actions without halting script loops. \end_layout \begin_layout Subsubsection @@ -4037,10 +9476,20 @@ Class Methods \end_layout \begin_layout Paragraph kbd.prep() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +kbd.prep() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard Prepares the keyboard for async input \end_layout @@ -4050,11 +9499,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -4158,10 +9607,20 @@ \end_layout \begin_layout Paragraph kbd.close() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +kbd.close() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard Called to shut down the async processing of input. (See @@ -4179,11 +9638,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -4287,10 +9746,20 @@ \end_layout \begin_layout Paragraph kbd.getc() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +kbd.getc() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard Reads the keyboard without stopping \end_layout @@ -4300,11 +9769,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -4541,10 +10010,19 @@ \begin_layout Subsection Lua Globals \end_layout \begin_layout Subsubsection +\begin_inset Index idx +status open + +\begin_layout Plain Layout +BCAST_ADDR +\end_layout + +\end_inset + BCAST_ADDR \end_layout \begin_layout Standard This variable contains the Firenet broadcast address. @@ -4554,19 +10032,19 @@ \begin_layout LyX-Code packet = {} \end_layout \begin_layout LyX-Code -packet.CMD = +packet.DATA = \begin_inset Quotes eld \end_inset S \begin_inset Quotes erd \end_inset - -- Send a STATUS command + -- Send a STATUS command \end_layout \begin_layout LyX-Code packet.TO = BCAST_ADDR -- Send to everyone \end_layout @@ -4574,24 +10052,26 @@ \begin_layout LyX-Code h:write(packet) -- Send to the network \end_layout \begin_layout Subsubsection +\begin_inset Index idx +status open + +\begin_layout Plain Layout +FNET_MAP +\end_layout + +\end_inset + FNET_MAP \end_layout \begin_layout Standard This variable holds the current table of nodes on the network and their status. - See ( -\begin_inset CommandInset ref -LatexCommand vref -reference "sub:build_fnet_map()" - -\end_inset - - and + See \begin_inset CommandInset ref LatexCommand vref reference "sub:build_fnet_status()" \end_inset @@ -4599,48 +10079,24 @@ ) on how these variables are filled but when they are set the have the following fields: \end_layout \begin_layout LyX-Code -FNET_MAP[] -- Information on -\end_layout - -\begin_deeper -\begin_layout LyX-Code -FNET_MAP[].NAME -- String node name -\end_layout - -\begin_layout LyX-Code -FNET_MAP[].PHY -- Network physical address (#) -\end_layout - -\begin_layout LyX-Code -FNET_MAP[].FIRED -- Bits showing fired channels -\end_layout - -\begin_layout LyX-Code -FIRE_MAP[].UNFIRED -- Bits showing unfired channels -\end_layout - -\end_deeper -\begin_layout Subsubsection -REV_FNET_MAP -\end_layout - -\begin_layout Standard -This variable is the mapping from the physical network address value to - the string node name. - This variable is filled at the same time as FNET_MAP. -\end_layout - -\begin_layout LyX-Code -REV_FNET_MAP[] -- Information on physical address # -\end_layout - -\begin_deeper -\begin_layout LyX-Code -FNET_MAP[].NAME -- String node name +FNET_MAP[] -- Information on +\end_layout + +\begin_deeper +\begin_layout LyX-Code +FNET_MAP[].ARMED -- 1 if armed 0 if not +\end_layout + +\begin_layout LyX-Code +FNET_MAP[].FIRED -- 1-6 Array with 1 == Fired channels +\end_layout + +\begin_layout LyX-Code +FIRE_MAP[].UNFIRED -- 1-6 Array with 1 == Unfired ch \end_layout \end_deeper \begin_layout Subsubsection OS_MUSIC_PLAYER @@ -4663,37 +10119,47 @@ \begin_layout Subsection Network Support Routines \end_layout \begin_layout Subsubsection -build_fnet_map() +build_fnet_status() \begin_inset CommandInset label LatexCommand label -name "sub:build_fnet_map()" +name "sub:build_fnet_status()" + +\end_inset + + +\begin_inset Index idx +status open + +\begin_layout Plain Layout +build_fnet_status() +\end_layout \end_inset \end_layout \begin_layout Standard -This will fill the FNET_MAP and REV_FNET_MAP variables with the current - network node names and physical address values. +This will fill the FNET_MAP variable with the current network node status. + This will update the Arm/Disarm values plus the fired and unfired channels. \end_layout \begin_layout LyX-Code h = firenet.new() \end_layout \begin_layout LyX-Code -build_fnet_map(h) +build_fnet_status(h) \end_layout \begin_layout Standard \begin_inset Tabular - - + + @@ -4742,125 +10208,20 @@ \begin_inset Text \begin_layout Plain Layout -h +addr \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout -Open firenet handle -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -OUTPUT -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -result -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -1 if map OK, nil if not -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -build_fnet_status() -\begin_inset CommandInset label -LatexCommand label -name "sub:build_fnet_status()" - -\end_inset - - -\end_layout - -\begin_layout Standard -This will fill the FNET_MAP and REV_FNET_MAP variables with the current - network node status. - This will update the Arm/Disarm values plus the fired and unfired channels. -\end_layout - -\begin_layout LyX-Code -h = firenet.new() -\end_layout - -\begin_layout LyX-Code -build_fnet_status(h) -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -INPUT -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -NAME -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -USE +If present query only one node, if nil do broadcast \end_layout \end_inset @@ -4929,268 +10290,26 @@ \end_inset \end_layout -\begin_layout Subsubsection -phy_address() -\end_layout - -\begin_layout Standard -This will use the FNET_MAP global to return the physical address given node - string name. -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -phy = phy_address(node) -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -INPUT -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -NAME -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -USE -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -node -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Node string name -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -OUTPUT -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -result -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Node physical address, nil if not found -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -node_address() -\end_layout - -\begin_layout Standard -This will use the REV_FNET_MAP global to return the string node name given - physical address. -\end_layout - -\begin_layout LyX-Code - -\end_layout - -\begin_layout LyX-Code -node = node_address(phy) -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -INPUT -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -NAME -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -USE -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -phy -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Node physical address -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\series bold -OUTPUT -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -result -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Node string address, nil if not found -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - \begin_layout Subsection Misc Support Routines \end_layout \begin_layout Subsubsection play_file() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +play_file() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This will use an operating system dependent program that can play a sound file. @@ -5202,11 +10321,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -5310,10 +10429,20 @@ \end_layout \begin_layout Subsubsection play_file_stop() +\begin_inset Index idx +status open + +\begin_layout Plain Layout +play_file_stop() +\end_layout + +\end_inset + + \end_layout \begin_layout Standard This will use an operating system dependent pid value from the play_file() routine to stop the music player. @@ -5324,11 +10453,11 @@ \end_layout \begin_layout Standard \begin_inset Tabular - + @@ -5429,19 +10558,3301 @@ \end_inset \end_layout + +\begin_layout Section +FIRENET Node Design +\end_layout + +\begin_layout Standard +The Firenet system uses a RS-485 two wire network to connect the control + computer to the nodes. + Each firing box or node in the network has 6 firing circuits and up to + 30 of these boxes can be networked together. + Each box has fixed network address. + The node address is programmed into the EEPROM of the processor and each + node box has the address marked on the outside in +\series bold +large +\series default + numbers. +\end_layout + +\begin_layout Standard +The nodes are controlled by a laptop on the network running software that + allows either manual or scripting firing sequences. + The controlling software can also monitor the health and connectivity of + the nodes and the network. +\end_layout + +\begin_layout Section +Firenet Network Design +\end_layout + +\begin_layout Subsection +Physical Layer +\begin_inset CommandInset label +LatexCommand label +name "sub:Physical-Layer" + +\end_inset + + +\end_layout + +\begin_layout Standard +The physical layer of the network uses the RS-485 standard interface with + a two wire circuit. + RS-485 uses a balanced circuit where the signal is one wire and the inverse + is on the other wire. + This gives greater noise immunity and a range of about 300 meters for the + wiring. + Since only two wires are used we both transmit and receive on the same + pair (i.e. + half-duplex) This means that a sender must enable the transmitter outputs, + send the data, and when done disable the transmitter outputs. + This is very similar (but much slower) that the original ethernet where + all the signals were on a single coaxial cable. + +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename /Users/jschimpf/Public/Firenet/Docs/Images/485network.eps + scale 80 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +RS-485 Network +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +In this design we will be using the Linear Technology chip LTC485 +\begin_inset CommandInset citation +LatexCommand cite +key "LTC485" + +\end_inset + + chip that is RS-485 compliant and is low power. +\end_layout + +\begin_layout Subsection +Data Link Layer +\end_layout + +\begin_layout Subsubsection +Packet Format +\end_layout + +\begin_layout Standard +This layer handles the transmit/receive switching and addressing of the + data packets exchanged. + The data packet on the network looks like this: +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename /Users/jschimpf/Public/Firenet/Docs/Images/packet.eps + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Packet Format +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The data in a packet is as follows: +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Name +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Example +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +HDR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +: +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +The ':' character +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +TO +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ASCII two digit number +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +01 - 32 with 00 -> Broadcast +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +FROM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ASCII two digit number +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +01 - 32 with 00 -> Broadcast +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +DATA +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Up to 32 bytes of command data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +F1 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +EOP +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +; +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +The ';' character +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +CKSUM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ASCII two digit number cksum +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Mod 100 sum of all fields except : and ; +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The data is sent as ASCII strings. +\end_layout + +\begin_layout Subsubsection +Addressing +\begin_inset CommandInset label +LatexCommand label +name "sub:Addressing" + +\end_inset + + +\end_layout + +\begin_layout Standard +There are up to 32 devices in the network which have addresses ranging from + 1 to 30. + The addresses are fixed in the devices and there should be no duplicate + addresses in the network. + The address 30 is the command node. + The address 0 is the broadcast address and all devices will receive messages + sent to this address. +\end_layout + +\begin_layout Subsection +Application Layer +\begin_inset CommandInset label +LatexCommand label +name "sub:Application-Layer" + +\end_inset + + +\end_layout + +\begin_layout Standard +In this very simple network we will skip the Transport and Network layers + of the OSI model. + +\begin_inset CommandInset citation +LatexCommand cite +key "OSI" + +\end_inset + +The messages will be restricted to one packet and will be stand alone. + Also the model here is with a controller (i.e. + a laptop) controlling a number of firing boxes. + This simplifies things as the nodes will not be talking to each other and + will be driven by messages from the controller. +\end_layout + +\begin_layout Standard +The unit of data to/from the network is a packet of the form: +\end_layout + +\begin_layout LyX-Code +#define PHY_DATA_SIZE 32 +\end_layout + +\begin_layout LyX-Code +typedef struct { +\end_layout + +\begin_deeper +\begin_layout LyX-Code +unsigned char type; +\end_layout + +\begin_layout LyX-Code +unsigned char from; +\end_layout + +\begin_layout LyX-Code +int len; +\end_layout + +\begin_layout LyX-Code +unsigned char data[PHY_DATA_SIZE]; // Packet data +\end_layout + +\end_deeper +\begin_layout LyX-Code +} PACKET; +\end_layout + +\begin_layout Subsubsection +Commands +\begin_inset CommandInset label +LatexCommand label +name "sub:Commands" + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Command +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +NAME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Information +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +A +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ARM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[D/A] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Disarm (D), Arm (A) firing circuits +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +F +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +FIRE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Fire this circuit +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +D +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DELAY_FIRE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delay fire, fire at or at Time ms +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +S +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +STATUS +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +NONE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Status (see below for resp msg) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +W +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +WHO +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +# new address +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Changes address of node +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +T +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TIME +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +# New firing time (ms) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Change the firing time +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Z +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +SYNC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[P] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Sync all node clocks, if P start firing queue +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +R +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +REPLY +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +R + Last cmd letter +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Used to ACK no-reply messages +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +V +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +VERSION +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RV__DATE__ __TIME__ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Creation time of Node code +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +C +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +CHANNEL +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Return firing status & A/D of channel +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +M +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +TEST +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +0/1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Turn test mode ON (1)/OFF (0) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +B +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +BACKOFF +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +# Backoff time (0-255) +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Modify backoff time +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +X +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RESTART +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +NONE +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Restart node software +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +R +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +GET_DATA +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +[] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Return requested data +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +P +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +PGM +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Put event into firing queue +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Node Command Table +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Paragraph +ARM +\begin_inset Index idx +status open + +\begin_layout Plain Layout +ARM +\end_layout + +\end_inset + + Command +\begin_inset CommandInset label +LatexCommand label +name "par:ARM" + +\end_inset + + +\end_layout + +\begin_layout Standard +This command is issued to enable/disable the firing circuits. + If node is not armed then all firing commands are ignored. + The node light will blink when box is armed. + It can be sent to the broadcast address to arm all nodes at once. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +AD +\series default + Disarm node +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +AA +\series default + Arm node +\end_layout + +\begin_layout Paragraph +FIRE +\begin_inset Index idx +status open + +\begin_layout Plain Layout +FIRE +\end_layout + +\end_inset + + Command +\begin_inset CommandInset label +LatexCommand label +name "par:FIRE" + +\end_inset + + +\end_layout + +\begin_layout Standard +This command will fire a selected circuit in the node immediately. + The node will be out of communication till the firing cycle is over. + The available firing channels are numbered from 0-5. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +F3 +\series default + Fire circuit # 3 +\end_layout + +\begin_layout Standard +This command is ignored if sent to the broadcast address. + There is no response. +\end_layout + +\begin_layout Paragraph +DELAY FIRE +\begin_inset Index idx +status open + +\begin_layout Plain Layout +DELAY FIRE +\end_layout + +\end_inset + + Command +\begin_inset CommandInset label +LatexCommand label +name "par:DELAY" + +\end_inset + + +\end_layout + +\begin_layout Standard +This is similar to the firing command but will fire the selected circuit + at the specified time. + All nodes keep a 32 bit millisecond counter. + The Z command (see +\begin_inset CommandInset ref +LatexCommand vref +reference "par:SYNC" + +\end_inset + +) will sync the time for all the nodes. + Thus you can send in a number of firing commands for different nodes and + they will all fire at the same time. + The available firing channels are numbered from 0-5. + The command takes a single byte firing circuit value and 32 bit time value. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +D316384 +\series default +Fire circuit 3 after at 16,384 ms into the run. +\end_layout + +\begin_layout Standard +This command is ignored if sent to the broadcast address. + There is no response. +\end_layout + +\begin_layout Paragraph +PGM EVENT +\begin_inset Index idx +status open + +\begin_layout Plain Layout +EVENTCommand +\end_layout + +\end_inset + + Command +\begin_inset CommandInset label +LatexCommand label +name "par:PGM" + +\end_inset + + +\end_layout + +\begin_layout Standard +This is similar to the DELAY FIRE but stores the command into a 6 element + memory. + All nodes keep a 32 bit millisecond counter. + The ZP command (see +\begin_inset CommandInset ref +LatexCommand vref +reference "par:SYNC" + +\end_inset + +) will sync the time for all the nodes, also it will start the node cycling + through the memory firing the events in time order. + The available firing channels are numbered from 0-5. + The command takes a single byte firing circuit value and 32 bit time value. +\end_layout + +\begin_layout Description +P316543 Store firing command for circuit 3 at 16,543 milliseconds. +\end_layout + +\begin_layout Standard +This command is ignored if sent to the broadcast address. + There is no response immediately +\end_layout + +\begin_layout Standard +When the node fires a memory location it returns RP allowing tracking + of the auto firing. + +\end_layout + +\begin_layout Paragraph +STATUS +\begin_inset Index idx +status open + +\begin_layout Plain Layout +STATUS +\end_layout + +\end_inset + + Command +\begin_inset CommandInset label +LatexCommand label +name "par:STATUS" + +\end_inset + + +\end_layout + +\begin_layout Standard +This command generates a response message showing the node status +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +S +\series default + Return status of node +\end_layout + +\begin_layout Standard +The return message looks like this (it is sent to the address of the unit + that sent the status command +\end_layout + +\begin_layout Standard +RS[A/D] +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Field +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Meaning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +RS +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Status response designator +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +[A/D] +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Armed (A) or Disarmed (D) status of node +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Fired circuits +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Number 0-31 with it being the binary representation of fired ckts 03 - ckt, + 0& 1 +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Unfired circuits +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Number 0-32 with it being the binary representation of unfired ckts 03 -ckt + 0 & 1 +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The status message can be sent as a broadcast. +\end_layout + +\begin_layout Paragraph +WHO +\begin_inset Index idx +status open + +\begin_layout Plain Layout +WHO +\end_layout + +\end_inset + + (are you) Command +\begin_inset CommandInset label +LatexCommand label +name "par:WHO" + +\end_inset + + +\end_layout + +\begin_layout Standard +Is used to set or read the address of a node. + If the command is sent with a parameter the node's address will be changed. + If no value is sent, the node's address is not changed. + In either case the response will contain the current node address. + A new address will not be accepted if sent to the broadcast address. + It will also not be accepted is sent to the control node address. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +W04 +\series default + Set address of node to 4 +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +W +\series default +No address change +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Message +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Response Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Meaning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Change node address +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +W04 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RW01 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Returns current node address +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Get node address +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +W +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RW01 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Returns current node address +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +The address value must be in the range 1-31 to be accepted. + NOTE: That after the command is sent the node's address will NOT change + till it has been restarted. + (See +\begin_inset CommandInset ref +LatexCommand vref +reference "par:RESTART-Command" + +\end_inset + +) +\end_layout + +\begin_layout Paragraph +TIME +\begin_inset Index idx +status open + +\begin_layout Plain Layout +TIME +\end_layout + +\end_inset + + Command +\begin_inset CommandInset label +LatexCommand label +name "par:TIME" + +\end_inset + + +\begin_inset CommandInset label +LatexCommand label +name "par:TIME-Command" + +\end_inset + + +\end_layout + +\begin_layout Standard +This command is used to set the firing time, by default it is 100 ms. + This is the firing pulse time for all channels. + This can be changed with this command and will be set in the device till + changed again. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +T1000 +\series default +Set firing time to 1000 ms (1 second) +\end_layout + +\begin_layout Standard +Any value can be used and will depend on the device being fired. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Message +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Response Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Meaning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Set firing time to 1000 ms +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +T1000 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RT100 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Returns current firing time +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Get firing time +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +T +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RT100 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Returns current firing time +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +NOTE: That after the command is sent the node's firing time will NOT change + till it has been restarted. + (See +\begin_inset CommandInset ref +LatexCommand vref +reference "par:RESTART-Command" + +\end_inset + +) +\end_layout + +\begin_layout Paragraph +SYNCHRONIZE +\begin_inset Index idx +status open + +\begin_layout Plain Layout +SYNCHRONIZE +\end_layout + +\end_inset + + Node Clocks +\begin_inset CommandInset label +LatexCommand label +name "par:SYNC" + +\end_inset + + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 + +\series bold +Z[P] +\series default + Synchronize node clocks +\end_layout + +\begin_layout Standard +This command is used to set all node (and controller clocks to zero. + All nodes in the system have a 32 bit millisecond counter. + This command when received will set that counter to zero. + Then this counter can be used to schedule synchronized events in the various + firing boxes. + (See Delay fire command +\begin_inset CommandInset ref +LatexCommand vref +reference "par:DELAY" + +\end_inset + +). + If P is present then the node goes into auto mode and beings firing the + queue +\end_layout + +\begin_layout Standard +Testing of the sync command with a script that syncs the nodes then has + them fire at the same time shows the following spread in 10 runs with 3 + nodes, (4,5 and 6). + Then monitoring the firing time of channel 0 and using that to trigger + a scope, it captured each of the nodes firing. + Measuring between the first firing node and the last we get the following + spreads in 10 trials. +\end_layout + +\begin_layout LyX-Code + +\series bold +Spread (ms) +\end_layout + +\begin_deeper +\begin_layout LyX-Code +0.4 +\end_layout + +\begin_layout LyX-Code +1.384 +\end_layout + +\begin_layout LyX-Code +1.542 +\end_layout + +\begin_layout LyX-Code +1.742 +\end_layout + +\begin_layout LyX-Code +0.7336 +\end_layout + +\begin_layout LyX-Code +0.6536 +\end_layout + +\begin_layout LyX-Code +1.038 +\end_layout + +\begin_layout LyX-Code +1.334 +\end_layout + +\begin_layout LyX-Code +1.798 +\end_layout + +\begin_layout LyX-Code +------- +\end_layout + +\end_deeper +\begin_layout LyX-Code + +\series bold +Mean 1.181 ms +\end_layout + +\begin_layout LyX-Code + +\series bold +SD 0.5000 +\end_layout + +\begin_layout Standard +This means that node synchronization should allow firing times of simultaneous + nodes to be within a few milliseconds of each other and this is well beyond + anything people can notice. +\end_layout + +\begin_layout Standard +A capture of the 10th firing run is shown In Figure +\begin_inset CommandInset ref +LatexCommand vref +reference "fig:Synchronized-Firing" + +\end_inset + + Trace 1 = Node 4 channel 0 firing, Trace 2 Node 5 and Trace 3 Node 6 +\end_layout + +\begin_layout LyX-Code +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/TEK00003.PNG + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "fig:Synchronized-Firing" + +\end_inset + +Synchronized Firing +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Paragraph +VERSION +\begin_inset Index idx +status open + +\begin_layout Plain Layout +VERSION +\end_layout + +\end_inset + + of Node code +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +V Query node code creation date +\end_layout + +\begin_layout Standard +This message is used to get the creation date of the code running in a node. + The message returned is a string of the compiler constants __DATE__ and + __TIME__ which shows the creation date of the code. + This is meant to be human interpreted and not machine used. +\end_layout + +\begin_layout Paragraph +CHANNEL +\begin_inset Index idx +status open + +\begin_layout Plain Layout +CHANNEL +\end_layout + +\end_inset + + information +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +C Query for channel information +\end_layout + +\begin_layout Standard +This message is used to inquire about a particular firing channel. + The return message contains the fired status (0/1) and the A/D reading + of that channel. +\end_layout + +\begin_layout Standard +RC +\end_layout + +\begin_layout Paragraph +TEST MODE +\begin_inset Index idx +status open + +\begin_layout Plain Layout +TEST MODE +\end_layout + +\end_inset + + Command +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +M Turn test mode ON (1) OFF (0) +\end_layout + +\begin_layout Standard +This message is designed to enable and disable test mode. + When the Node is placed in test mode can be used to simulate firing a show + without having any ignitors attached to the firing channels and will return + status to the command node as if all channels had ignitors connected. + It will also show the ignitor going open on a Fire command. + This allows a system test without using any of the one time use ignitors. +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Message +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Response Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Meaning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Enable Test mode +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +M1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RM0 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Returns current test mode status +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Get Test mode status +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +M +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RM1 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Returns current test mode status +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +NOTE: That after the command is sent the node's test mode will NOT change + till it has been restarted. + (See +\begin_inset CommandInset ref +LatexCommand vref +reference "par:RESTART-Command" + +\end_inset + +) +\end_layout + +\begin_layout Standard +In addition in this mode the Version message will be returned with an X + in the data. +\end_layout + +\begin_layout Standard +Instead of: +\end_layout + +\begin_layout LyX-Code +RVMar 6 2011 16-23-19 +\end_layout + +\begin_layout Standard +you get +\end_layout + +\begin_layout LyX-Code +RVXMar 6 2011 16-23-19 +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout Paragraph +BACKOFF +\begin_inset Index idx +status open + +\begin_layout Plain Layout +BACKOFF +\end_layout + +\end_inset + + Command +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +B Modify backoff time +\end_layout + +\begin_layout Standard +This message is used to change the timing of response messages to a broadcast + message. + Each node calculates when it will send its response with the formula: +\end_layout + +\begin_layout LyX-Code +wait = (node addr - 1) * backoff time +\end_layout + +\begin_layout Standard +Thus node 1 would wait 0 ms, node 2 would wait one backoff time and so on. + This command is used to set the backoff time in ms. + The number following the command (0-255) is stored and used as the new + back off time. + This allows tuning for differing networks. +\end_layout + +\begin_layout LyX-Code +B50 Set backoff time to 50 ms +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Message +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Response Data +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Meaning +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Set backoff to 50 ms +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +B50 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RB30 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Returns current backoff time +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Get backoff time +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +B +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +RB30 +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Returns current backoff time +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +NOTE: That after the command is sent the node's backoff time will NOT change + till it has been restarted. + (See +\begin_inset CommandInset ref +LatexCommand vref +reference "par:RESTART-Command" + +\end_inset + +) +\end_layout + +\begin_layout Paragraph +RESTART +\begin_inset Index idx +status open + +\begin_layout Plain Layout +RESTART +\end_layout + +\end_inset + + Command +\begin_inset CommandInset label +LatexCommand label +name "par:RESTART-Command" + +\end_inset + + +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +X Restart node software +\end_layout + +\begin_layout Standard +A number of commands like BACKOFF, TEST and TIME reset parameters in EEPROM + but those don't immediately take effect. + They only work after the node has been restarted. + This command is used to do that without cycling power. +\end_layout + +\begin_layout Paragraph +REQUEST +\begin_inset Index idx +status open + +\begin_layout Plain Layout +REQUEST +\end_layout + +\end_inset + + Data Command +\end_layout + +\begin_layout Labeling +\labelwidthstring 00.00.0000 +RF Request firing data +\end_layout + +\begin_layout Standard +This command is used to extract data from a node. + At present there is only one request, return the firing times after a run + but further commands will be added. +\end_layout + +\begin_layout Standard + +\series bold +RF +\series default + The response will be the firing times of all 6 channels as decimal numbers + separated by a space. + This is the time it actually took to fire a particular ignitor on a channel. +\end_layout + +\begin_layout Section +Firenet Hardware +\end_layout + +\begin_layout Subsection +Introduction +\end_layout + +\begin_layout Standard +The Firenet system has two main parts, the controller, a standard computer + running the Firenet program and a number of Firenet nodes which actually + fire the pieces. + The Firenet node is a small computer system with 6 firing circuits and + a network connection. + The system will look like this. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/nodes.eps + scale 60 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Firenet System +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The Firenet Interface is a USB <-> RS485 interface that allows the Control + Computer onto the Firenet network. + +\end_layout + +\begin_layout Standard +This shows the nodes connected in a daisy-chained network with the laptop. + Each node is connected to up to 6 firework pieces and can fire them. + They are also connected to a large 12V battery that supplies the firing + current and power for the nodes. +\end_layout + +\begin_layout Subsection +Node Electronics +\end_layout + +\begin_layout Standard +Each node will have a processor running the Arduino kernel and then running + a custom program that will execute the Firenet commands. + The network as shown in Section +\begin_inset CommandInset ref +LatexCommand vref +reference "sub:Physical-Layer" + +\end_inset + + is an RS-485 two wire system. + The interconnect between each node is a stereo audio cable. + The in and out connections on each node are a standard audio jack. + The schematic for the node is: +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/firenet.png + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Node Schematic +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Power Supply +\end_layout + +\begin_layout Standard +The power supply uses two regulators. + One supplies 5V for the logic and processor circuits and the second is + a 1 Amp constant current supply (IC5) to supply the firing current. + In front of the regulators is a full wave bridge, a fuse and a 15 V Zener + diode. + These are a protection circuit/ To make the wiring of the system simple + and inexpensive we are using standard 120 outlet strips and 120 V plugs + to distribute the 12 V battery power. + These connectors are very inexpensive and readily available. + Also we can use standard 16 Gauge lamp cord for the power leads to the + nodes. + But with standard plugs on the ends of these wires there are two problems: +\end_layout + +\begin_layout Enumerate +The plugs are not polarized. +\end_layout + +\begin_layout Enumerate +They could be plugged into a 120 V circuit. +\end_layout + +\begin_layout Standard +The full wave bridge on the front end solves problem (1) since it will always + supply the correct polarity no matter which way the plug is inserted. + The second problem is handled by the Zener diode and fuse. + The full wave bridge is rated for 120 V so it could handle the high voltage. + But the Zener conducts at 15 Volts and would short the high voltage to + ground which would blow the fuse and protect the rest of the circuit. +\end_layout + +\begin_layout Subsubsection +Network +\end_layout + +\begin_layout Standard +The network hardware is ISL8483 RS-485 chip. + The transmit and receive lines are brought out to pads where they will + be connected to two stereo phone jacks (one in and the other out). + The network will be like that shown in Section +\begin_inset CommandInset ref +LatexCommand vref +reference "sub:Physical-Layer" + +\end_inset + + . + RS-485 networks require 120 ohm termination resistors at each end of the + network. + The control computer interface has one built in and the user will be responsibl +e for putting a 120 ohm resistor plug in the last box on the daisy chain. +\end_layout + +\begin_layout Subsubsection +Network Interface +\end_layout + +\begin_layout Standard +The control computer is attached to the Firenet network by a USB serial + interface. + This uses an interface chip to convert the serial data from the USB chip + to RS-485 balanced output. + One problem that arose is this is a half-duplex system where one node transmits + at a time. + The interface chip must be switched to TRANSMIT mode while the message + is being sent. + On the control computer (UNIX/LINUX) the serial output data is handled + via a system driver. + The TRANSMIT control line was the DTR line in the serial interface. + It was found that the DTR ON/OFF signal was very deterministic and would + occur at the exact line of code where it was called. + Unfortunately this was NOT the case with the serial data. + It went into the driver and when exactly it came out the serial port was + highly dependent on the OS system loading and other factors. + To make the XMIT control ON/OFF properly overlap the actual data the code + had to: +\end_layout + +\begin_layout Itemize +Turn on DTR +\end_layout + +\begin_layout Itemize +Delay a bit (5 ms) +\end_layout + +\begin_layout Itemize +Send the data +\end_layout + +\begin_layout Itemize +Delay a bit more (and make the delay longer on longer messages) +\end_layout + +\begin_layout Itemize +Turn off DTR to close the transmit. +\end_layout + +\begin_layout Standard +This would work about 90% of the time but occasionally the control program + would be swapped out and the disable of the XMIT would be very very late. + Then the control computer's transmit would still be enabled while a node + was trying to reply. + This greatly affected actions where there was a lot of message traffic + between the control computer and nodes (like programming a show). + +\end_layout + +\begin_layout Standard +The solution was to put control of the TRANSMIT ON/OFF in the network interface. + The board used in the interface is a modified node board so instead of + just the interface chip the Atmel/Arduino processor was added also. + It is loaded with special HeadEnd software that detects the start and end + of transmitted packets it can exactly control the TRANSMIT line like this: +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/TEK00011.PNG + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Control computer transmission +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The blue line at the top is the transmitter control signal, the the two + waveforms are the RS485 signal and compliment signals. +\end_layout + +\begin_layout Standard +The board is programmed as an Arduino with the main serial interface attached + to the control computer (see the program HeadEnd in the Arduino code section). + The Arduino project has a library that adds a second serial port on any + I/O pins. + That software serial port is used to connect to the FIRENET network as + shown above. +\end_layout + +\begin_layout Standard +The only change in the FIRENET control program is that it no longer switches + DTR when it transmits a packet, all that is handled in the network interface + board. +\end_layout + +\begin_layout Subsubsection +Firing Circuit +\end_layout + +\begin_layout Standard +The firing circuit includes the 1 Amp constant current regulator, a relay + and 6 FET drivers. + IC5 (7812) is wired to produce 1 Amp output for loads down to 0 ohms. + This current is switched by a relay (RLY1) so the firing circuits are completel +y OFF except when needed. + There is a 1,000 uF capacitor added following the relay. + This was added for a little more punch when the FET fires. + It was found that pieces weren't firing at low temperatures (> 50 F). + The resistor across the capacitor was added to ensure it drains quickly + when the relay is turned off. + +\end_layout + +\begin_layout Standard +The 6 FETs (QF0-QF5) are wired as simple switches so when the processor + makes the gate high the FET goes to low resistance. + The Fireworks ignitor is wired between the CC supply and the FET drain + so up to 1 A flows firing the piece, plus an additional amount from the + 1,000 uf capacitor. + The resistor divider off the drain is used to feed the voltage value present + on the drain to the processor A/D. + If the transistor is OFF this will be the full voltage of the battery. + The approximately 3:1 divider will give about 4 volts out which the A/D + can handle. + This will show which circuits have unfired ignitors and can be used to + control firing time when the circuit fires an ignitor. +\end_layout + +\begin_layout Paragraph +Adaptive firing +\end_layout + +\begin_layout Standard +Since the circuit can both fire the ignitor and check it's continuity we + can set up the software to do adaptive firing. + Ignitors can vary from lot to lot and from different manufacturers. + It's simpler to have the software adapt than have the user have to change + firing times. + (See +\begin_inset CommandInset ref +LatexCommand vref +reference "par:TIME-Command" + +\end_inset + +). + The firing time can now be set to a maximum that will guarantee that ANYTHING + will be fired. + We then monitor the continuity during the firing and turn off the firing + channel when the ignitor blows. + +\end_layout + +\begin_layout Standard +We cannot measure the continuity while the FET firing transistor is ON so + while the ignitor is being fired the transistor is switched off for a milliseco +nd. + The software reads the A/D for that channel and if the ignitor is blown + it will show a low voltage since the ignitor binding post is no longer + connected to the firing voltage (HOT1/HOT2). + If the ignitor is not blown there will be a connection and the A/D will + read a high voltage. + Thus as soon as the ignitor is blown we can cut off the FET firing transistor + and stand down from the firing state. +\end_layout + +\begin_layout Standard +There are some considerations for this testing, it should be often enough + to stop the firing reasonably early. + That is if the max firing time is 3000 ms testing at 2000 ms intervals + wouldn't be too useful in ending early. + On the other hand testing too often at say 10 ms intervals would not let + the ignitor heat up as we would be turning off the firing FET at very frequent + intervals. + So testing was done to try to determine some reasonable values, testing + at 100 ms intervals seems to be a good balance between ending early and + not heating the ignitor enough. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement h +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/TEK00010.PNG + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Firing Action +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The above figure shows the firing action on a test resistor (that never + opens) and shows the firing pulse (purple) and the resulting current in + the ignitor circuit. + You can also see the tests where the current is switched off and a continuity + check is made. + The checks are made at 100 ms intervals during the 3,000 ms firing time. +\end_layout + +\begin_layout Subsubsection +Processor +\end_layout + +\begin_layout Standard +The processor circuit is largely copied from the Arduino board. + The serial, reset and power leads are brought to a header which fits the + SparcFun Serial <-> USB board. + This can be used to talk to the board for testing and programming using + the standard Arduino IDE. + Also two jumpers are added to allow the USB board to power the board and + control the network chip JP2,JP3). + This modified board is used as the control computer interface to the network. + +\end_layout + +\begin_layout Subsection +Node Hardware +\end_layout + +\begin_layout Subsubsection +Enclosure +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/node.eps + scale 40 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Node Layout +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The node hardware was built into a 4.6 +\begin_inset Quotes erd +\end_inset + + square box 2.65 +\begin_inset Quotes erd +\end_inset + + high (Polycase DC44C). + The circuit board was designed so the binding posts used for the ignitor + connections also bolt the board to the top of the box. + +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/node_outside.png + display false + scale 15 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Caption + +\begin_layout Plain Layout +Node Exterior +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The network connections are stereo phone jacks, one in and one out. + The are electrically identical so either can be used as in or out. + The Power/Status LED is a single color RED led that comes on when the processor + is ready and will blink when the node is armed and ready to fire. + The 6 black binding posts are the 6 firing channels, you would connect + an ignitor to one of these and the other end to the RED V (or power post). + Finally the power lead is a standard 16 gauge 2 wire lamp cord leading + to a regular 120V two wire plug. + As explained above this is a cost saving measure to allow the use of regular + 120 power cords and extension strips to distribute the 12 battery power. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/node_inside.png + display false + scale 15 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Node Interior +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +When placed in the box the back of the board is next to the lid of the box + (see above) and thus all the parts are facing down into the box. + This is handy taking the lid off the box exposes all the circuit and parts + for easy debugging. + As shown a SparcFun 5V FTDI BASIC USB <-> Serial is connected to the board + and this allows it to be programmed via the Arduino IDE. + +\end_layout + +\begin_layout Subsubsection +Printed Circuit board +\end_layout + +\begin_layout Standard +The printed circuit board was designed using Eagle CAD from the schematic + shown above. + Large pads were used as the bolting points for the binding posts used as + the ignitor connectors. + +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\noindent +\align center +\begin_inset Graphics + filename Images/Firenet_board.png + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Firenet PC board +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset index_print +LatexCommand printindex +type "idx" + +\end_inset + + +\end_layout \begin_layout Standard \begin_inset CommandInset bibtex LatexCommand bibtex -bibfiles "/Users/jschimpf/Public/DOCS/tg" +bibfiles "firenet" options "plain" \end_inset \end_layout \end_body \end_document ADDED Docs/firenet.pdf Index: Docs/firenet.pdf ================================================================== --- Docs/firenet.pdf +++ Docs/firenet.pdf cannot compute difference between binary files ADDED Docs/parts/atmelavr_hardware.pdf Index: Docs/parts/atmelavr_hardware.pdf ================================================================== --- Docs/parts/atmelavr_hardware.pdf +++ Docs/parts/atmelavr_hardware.pdf cannot compute difference between binary files ADDED Docs/parts/atmelavr_instructions.pdf Index: Docs/parts/atmelavr_instructions.pdf ================================================================== --- Docs/parts/atmelavr_instructions.pdf +++ Docs/parts/atmelavr_instructions.pdf cannot compute difference between binary files DELETED Firenet.xcodeproj/jim.mode1v3 Index: Firenet.xcodeproj/jim.mode1v3 ================================================================== --- Firenet.xcodeproj/jim.mode1v3 +++ Firenet.xcodeproj/jim.mode1v3 @@ -1,1414 +0,0 @@ - - - - - ActivePerspectiveName - Project - AllowedModules - - - BundleLoadPath - - MaxInstances - n - Module - PBXSmartGroupTreeModule - Name - Groups and Files Outline View - - - BundleLoadPath - - MaxInstances - n - Module - PBXNavigatorGroup - Name - Editor - - - BundleLoadPath - - MaxInstances - n - Module - XCTaskListModule - Name - Task List - - - BundleLoadPath - - MaxInstances - n - Module - XCDetailModule - Name - File and Smart Group Detail Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXBuildResultsModule - Name - Detailed Build Results Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXProjectFindModule - Name - Project Batch Find Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCProjectFormatConflictsModule - Name - Project Format Conflicts List - - - BundleLoadPath - - MaxInstances - n - Module - PBXBookmarksModule - Name - Bookmarks Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXClassBrowserModule - Name - Class Browser - - - BundleLoadPath - - MaxInstances - n - Module - PBXCVSModule - Name - Source Code Control Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXDebugBreakpointsModule - Name - Debug Breakpoints Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCDockableInspector - Name - Inspector - - - BundleLoadPath - - MaxInstances - n - Module - PBXOpenQuicklyModule - Name - Open Quickly Tool - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugSessionModule - Name - Debugger - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugCLIModule - Name - Debug Console - - - BundleLoadPath - - MaxInstances - n - Module - XCSnapshotModule - Name - Snapshots Tool - - - BundlePath - /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources - Description - DefaultDescriptionKey - DockingSystemVisible - - Extension - mode1v3 - FavBarConfig - - PBXProjectModuleGUID - 38007462101F628B007957AC - XCBarModuleItemNames - - XCBarModuleItems - - - FirstTimeWindowDisplayed - - Identifier - com.apple.perspectives.project.mode1v3 - MajorVersion - 33 - MinorVersion - 0 - Name - Default - Notifications - - - XCObserverAutoDisconnectKey - - XCObserverDefintionKey - - XCObserverFactoryKey - XCPerspectivesSpecificationIdentifier - XCObserverGUIDKey - XCObserverProjectIdentifier - XCObserverNotificationKey - PBXStatusBuildStateMessageNotification - XCObserverTargetKey - XCMainBuildResultsModuleGUID - XCObserverTriggerKey - awakenModuleWithObserver: - XCObserverValidationKey - - - - OpenEditors - - PerspectiveWidths - - -1 - -1 - - Perspectives - - - ChosenToolbarItems - - active-combo-popup - action - NSToolbarFlexibleSpaceItem - buildOrClean - build-and-go - go - debugger-enable-breakpoints - servicesModulebreakpoints - com.apple.ide.PBXToolbarStopButton - servicesModulefind - NSToolbarFlexibleSpaceItem - com.apple.pbx.toolbar.searchfield - - ControllerClassBaseName - - IconName - WindowOfProjectWithEditor - Identifier - perspective.project - IsVertical - - Layout - - - BecomeActive - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 217 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 08FB7794FE84155DC02AAC07 - 08FB7795FE84155DC02AAC07 - 3877B3EE10459B370033A57B - 3877B3F410459B370033A57B - 3877B3EF10459B370033A57B - 380074AD10209122007957AC - 38E018D2106CE8C000711E4D - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 27 - 26 - 18 - 1 - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 56}, {217, 595}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {234, 613}} - GroupTreeTableConfiguration - - MainColumn - 217 - - RubberWindowFrame - 54 124 857 654 0 0 1280 778 - - Module - PBXSmartGroupTreeModule - Proportion - 234pt - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20306471E060097A5F4 - PBXProjectModuleLabel - - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CE0B20406471E060097A5F4 - PBXProjectModuleLabel - - - SplitCount - 1 - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {618, 0}} - RubberWindowFrame - 54 124 857 654 0 0 1280 778 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20506471E060097A5F4 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{0, 5}, {618, 608}} - RubberWindowFrame - 54 124 857 654 0 0 1280 778 - - Module - XCDetailModule - Proportion - 608pt - - - Proportion - 618pt - - - Name - Project - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDetailModule - - TableOfContents - - 38AFF63F107E22860025F301 - 1CE0B1FE06471DED0097A5F4 - 38AFF640107E22860025F301 - 1CE0B20306471E060097A5F4 - 1CE0B20506471E060097A5F4 - - ToolbarConfigUserDefaultsMinorVersion - 2 - ToolbarConfiguration - xcode.toolbar.config.defaultV3 - - - ControllerClassBaseName - - IconName - WindowOfProject - Identifier - perspective.morph - IsVertical - 0 - Layout - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 11E0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 186 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 29B97314FDCFA39411CA2CEA - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 337}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 1 - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {203, 355}} - GroupTreeTableConfiguration - - MainColumn - 186 - - RubberWindowFrame - 373 269 690 397 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 100% - - - Name - Morph - PreferredWidth - 300 - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - - TableOfContents - - 11E0B1FE06471DED0097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.default.shortV3 - - - PerspectivesBarVisible - - ShelfIsVisible - - SourceDescription - file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' - StatusbarIsVisible - - TimeStamp - 276780758.51794398 - ToolbarDisplayMode - 1 - ToolbarIsVisible - - ToolbarSizeMode - 1 - Type - Perspectives - UpdateMessage - The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? - WindowJustification - 5 - WindowOrderList - - 1C530D57069F1CE1000CFCEE - 38AFF642107E22860025F301 - 38AFF643107E22860025F301 - 1C78EAAD065D492600B07095 - 3800743A101F6082007957AC - 38AFF6BF107E342F0025F301 - 1CD10A99069EF8BA00B06720 - /Users/jschimpf/Public/Firenet/Firenet.xcodeproj - - WindowString - 54 124 857 654 0 0 1280 778 - WindowToolsV3 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.build - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528F0623707200166675 - PBXProjectModuleLabel - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {616, 294}} - RubberWindowFrame - 83 163 616 595 0 0 1280 778 - - Module - PBXNavigatorGroup - Proportion - 294pt - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build Results - XCBuildResultsTrigger_Collapse - 1024 - XCBuildResultsTrigger_Open - 1010 - - GeometryConfiguration - - Frame - {{0, 299}, {616, 255}} - RubberWindowFrame - 83 163 616 595 0 0 1280 778 - - Module - PBXBuildResultsModule - Proportion - 255pt - - - Proportion - 554pt - - - Name - Build Results - ServiceClasses - - PBXBuildResultsModule - - StatusbarIsVisible - - TableOfContents - - 3800743A101F6082007957AC - 38AFF5FF107E1BB50025F301 - 1CD0528F0623707200166675 - XCMainBuildResultsModuleGUID - - ToolbarConfiguration - xcode.toolbar.config.buildV3 - WindowString - 83 163 616 595 0 0 1280 778 - WindowToolGUID - 3800743A101F6082007957AC - WindowToolIsVisible - - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debugger - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {437, 330}} - {{437, 0}, {522, 330}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {959, 330}} - {{0, 330}, {959, 288}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1C162984064C10D400B95A72 - PBXProjectModuleLabel - Debug - GLUTExamples (Underwater) - - GeometryConfiguration - - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 0}, {959, 618}} - PBXDebugSessionStackFrameViewKey - - DebugVariablesTableConfiguration - - Name - 149 - Value - 114 - Summary - 234 - - Frame - {{437, 0}, {522, 330}} - RubberWindowFrame - 337 -307 959 659 0 0 1280 778 - - RubberWindowFrame - 337 -307 959 659 0 0 1280 778 - - Module - PBXDebugSessionModule - Proportion - 618pt - - - Proportion - 618pt - - - Name - Debugger - ServiceClasses - - PBXDebugSessionModule - - StatusbarIsVisible - - TableOfContents - - 1CD10A99069EF8BA00B06720 - 38AFF600107E1BB50025F301 - 1C162984064C10D400B95A72 - 38AFF601107E1BB50025F301 - 38AFF602107E1BB50025F301 - 38AFF603107E1BB50025F301 - 38AFF604107E1BB50025F301 - 38AFF605107E1BB50025F301 - - ToolbarConfiguration - xcode.toolbar.config.debugV3 - WindowString - 337 -307 959 659 0 0 1280 778 - WindowToolGUID - 1CD10A99069EF8BA00B06720 - WindowToolIsVisible - - - - FirstTimeWindowDisplayed - - Identifier - windowTool.find - IsVertical - - Layout - - - Dock - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CDD528C0622207200134675 - PBXProjectModuleLabel - network.c - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {781, 212}} - RubberWindowFrame - 154 285 781 470 0 0 1280 778 - - Module - PBXNavigatorGroup - Proportion - 781pt - - - Proportion - 212pt - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528E0623707200166675 - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{0, 217}, {781, 212}} - RubberWindowFrame - 154 285 781 470 0 0 1280 778 - - Module - PBXProjectFindModule - Proportion - 212pt - - - Proportion - 429pt - - - Name - Project Find - ServiceClasses - - PBXProjectFindModule - - StatusbarIsVisible - - TableOfContents - - 1C530D57069F1CE1000CFCEE - 38AFF63D107E22800025F301 - 38AFF63E107E22800025F301 - 1CDD528C0622207200134675 - 1CD0528E0623707200166675 - - WindowString - 154 285 781 470 0 0 1280 778 - WindowToolGUID - 1C530D57069F1CE1000CFCEE - WindowToolIsVisible - - - - Identifier - MENUSEPARATOR - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debuggerConsole - IsVertical - - Layout - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAAC065D492600B07095 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {788, 385}} - RubberWindowFrame - 277 228 788 426 0 0 1280 778 - - Module - PBXDebugCLIModule - Proportion - 385pt - - - Proportion - 385pt - - - Name - Debugger Console - ServiceClasses - - PBXDebugCLIModule - - StatusbarIsVisible - - TableOfContents - - 1C78EAAD065D492600B07095 - 38AFF608107E1BE60025F301 - 1C78EAAC065D492600B07095 - - ToolbarConfiguration - xcode.toolbar.config.consoleV3 - WindowString - 277 228 788 426 0 0 1280 778 - WindowToolGUID - 1C78EAAD065D492600B07095 - WindowToolIsVisible - - - - Identifier - windowTool.snapshots - Layout - - - Dock - - - Module - XCSnapshotModule - Proportion - 100% - - - Proportion - 100% - - - Name - Snapshots - ServiceClasses - - XCSnapshotModule - - StatusbarIsVisible - Yes - ToolbarConfiguration - xcode.toolbar.config.snapshots - WindowString - 315 824 300 550 0 0 1440 878 - WindowToolIsVisible - Yes - - - Identifier - windowTool.scm - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAB2065D492600B07095 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1C78EAB3065D492600B07095 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {452, 0}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD052920623707200166675 - PBXProjectModuleLabel - SCM - - GeometryConfiguration - - ConsoleFrame - {{0, 259}, {452, 0}} - Frame - {{0, 7}, {452, 259}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - TableConfiguration - - Status - 30 - FileName - 199 - Path - 197.0950012207031 - - TableFrame - {{0, 0}, {452, 250}} - - Module - PBXCVSModule - Proportion - 262pt - - - Proportion - 266pt - - - Name - SCM - ServiceClasses - - PBXCVSModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAB4065D492600B07095 - 1C78EAB5065D492600B07095 - 1C78EAB2065D492600B07095 - 1CD052920623707200166675 - - ToolbarConfiguration - xcode.toolbar.config.scm - WindowString - 743 379 452 308 0 0 1280 1002 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.breakpoints - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - no - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 168 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 1C77FABC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - - GeometryConfiguration - - Frame - {{0, 0}, {185, 368}} - GroupTreeTableConfiguration - - MainColumn - 168 - - RubberWindowFrame - 329 337 744 409 0 0 1280 778 - - Module - PBXSmartGroupTreeModule - Proportion - 185pt - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1CA1AED706398EBD00589147 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{190, 0}, {554, 368}} - RubberWindowFrame - 329 337 744 409 0 0 1280 778 - - Module - XCDetailModule - Proportion - 554pt - - - Proportion - 368pt - - - MajorVersion - 3 - MinorVersion - 0 - Name - Breakpoints - ServiceClasses - - PBXSmartGroupTreeModule - XCDetailModule - - StatusbarIsVisible - - TableOfContents - - 38AFF6BF107E342F0025F301 - 38AFF6C0107E342F0025F301 - 1CE0B1FE06471DED0097A5F4 - 1CA1AED706398EBD00589147 - - ToolbarConfiguration - xcode.toolbar.config.breakpointsV3 - WindowString - 329 337 744 409 0 0 1280 778 - WindowToolGUID - 38AFF6BF107E342F0025F301 - WindowToolIsVisible - - - - Identifier - windowTool.debugAnimator - Layout - - - Dock - - - Module - PBXNavigatorGroup - Proportion - 100% - - - Proportion - 100% - - - Name - Debug Visualizer - ServiceClasses - - PBXNavigatorGroup - - StatusbarIsVisible - 1 - ToolbarConfiguration - xcode.toolbar.config.debugAnimatorV3 - WindowString - 100 100 700 500 0 0 1280 1002 - - - Identifier - windowTool.bookmarks - Layout - - - Dock - - - Module - PBXBookmarksModule - Proportion - 100% - - - Proportion - 100% - - - Name - Bookmarks - ServiceClasses - - PBXBookmarksModule - - StatusbarIsVisible - 0 - WindowString - 538 42 401 187 0 0 1280 1002 - - - Identifier - windowTool.projectFormatConflicts - Layout - - - Dock - - - Module - XCProjectFormatConflictsModule - Proportion - 100% - - - Proportion - 100% - - - Name - Project Format Conflicts - ServiceClasses - - XCProjectFormatConflictsModule - - StatusbarIsVisible - 0 - WindowContentMinSize - 450 300 - WindowString - 50 850 472 307 0 0 1440 877 - - - Identifier - windowTool.classBrowser - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - OptionsSetName - Hierarchy, all classes - PBXProjectModuleGUID - 1CA6456E063B45B4001379D8 - PBXProjectModuleLabel - Class Browser - NSObject - - GeometryConfiguration - - ClassesFrame - {{0, 0}, {374, 96}} - ClassesTreeTableConfiguration - - PBXClassNameColumnIdentifier - 208 - PBXClassBookColumnIdentifier - 22 - - Frame - {{0, 0}, {630, 331}} - MembersFrame - {{0, 105}, {374, 395}} - MembersTreeTableConfiguration - - PBXMemberTypeIconColumnIdentifier - 22 - PBXMemberNameColumnIdentifier - 216 - PBXMemberTypeColumnIdentifier - 97 - PBXMemberBookColumnIdentifier - 22 - - PBXModuleWindowStatusBarHidden2 - 1 - RubberWindowFrame - 385 179 630 352 0 0 1440 878 - - Module - PBXClassBrowserModule - Proportion - 332pt - - - Proportion - 332pt - - - Name - Class Browser - ServiceClasses - - PBXClassBrowserModule - - StatusbarIsVisible - 0 - TableOfContents - - 1C0AD2AF069F1E9B00FABCE6 - 1C0AD2B0069F1E9B00FABCE6 - 1CA6456E063B45B4001379D8 - - ToolbarConfiguration - xcode.toolbar.config.classbrowser - WindowString - 385 179 630 352 0 0 1440 878 - WindowToolGUID - 1C0AD2AF069F1E9B00FABCE6 - WindowToolIsVisible - 0 - - - Identifier - windowTool.refactoring - IncludeInToolsMenu - 0 - Layout - - - Dock - - - BecomeActive - 1 - GeometryConfiguration - - Frame - {0, 0}, {500, 335} - RubberWindowFrame - {0, 0}, {500, 335} - - Module - XCRefactoringModule - Proportion - 100% - - - Proportion - 100% - - - Name - Refactoring - ServiceClasses - - XCRefactoringModule - - WindowString - 200 200 500 356 0 0 1920 1200 - - - - DELETED Firenet.xcodeproj/jim.pbxuser Index: Firenet.xcodeproj/jim.pbxuser ================================================================== --- Firenet.xcodeproj/jim.pbxuser +++ Firenet.xcodeproj/jim.pbxuser @@ -1,667 +0,0 @@ -// !$*UTF8*$! -{ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - activeBuildConfigurationName = Debug; - activeExecutable = 3800741B101F5FD4007957AC /* Firenet */; - activeTarget = 8DD76FA90486AB0100D96B5E /* Firenet */; - addToTargets = ( - 8DD76FA90486AB0100D96B5E /* Firenet */, - ); - breakpoints = ( - 384B556A102DC8BF00AEC1B9 /* malloc_error_break */, - ); - codeSenseManager = 38007424101F5FF8007957AC /* Code sense */; - executables = ( - 3800741B101F5FD4007957AC /* Firenet */, - ); - perUserDictionary = { - "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 20, - 198, - 20, - 99, - 99, - 29, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXBreakpointsDataSource_ActionID, - PBXBreakpointsDataSource_TypeID, - PBXBreakpointsDataSource_BreakpointID, - PBXBreakpointsDataSource_UseID, - PBXBreakpointsDataSource_LocationID, - PBXBreakpointsDataSource_ConditionID, - PBXBreakpointsDataSource_IgnoreCountID, - PBXBreakpointsDataSource_ContinueID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 200, - 200, - 57.58349609375, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXBookmarksDataSource_LocationID, - PBXBookmarksDataSource_NameID, - PBXBookmarksDataSource_CommentsID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 300, - 195, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXErrorsWarningsDataSource_TypeID, - PBXErrorsWarningsDataSource_MessageID, - PBXErrorsWarningsDataSource_LocationID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 22, - 300, - 267, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXExecutablesDataSource_ActiveFlagID, - PBXExecutablesDataSource_NameID, - PBXExecutablesDataSource_CommentsID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 379, - 20, - 48, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID; - PBXFileTableDataSourceColumnWidthsKey = ( - 200, - 68, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFindDataSource_MessageID, - PBXFindDataSource_LocationID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 16, - 200, - 50, - 45.20849609375, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXSymbolsDataSource_SymbolTypeIconID, - PBXSymbolsDataSource_SymbolNameID, - PBXSymbolsDataSource_SymbolTypeID, - PBXSymbolsDataSource_ReferenceNameID, - ); - }; - PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 14, - 60, - 20, - 48.16259765625, - 43, - 43, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXTargetDataSource_PrimaryAttribute, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 276700070; - PBXWorkspaceStateSaveDate = 276700070; - }; - sourceControlManager = 38007423101F5FF8007957AC /* Source Control */; - userBuildSettings = { - }; - }; - 08FB7796FE84155DC02AAC07 /* main.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {701, 3066}}"; - sepNavSelRange = "{2205, 12}"; - sepNavVisRange = "{2162, 765}"; - sepNavWindowFrame = "{{493, 63}, {748, 715}}"; - }; - }; - 3800741B101F5FD4007957AC /* Firenet */ = { - isa = PBXExecutable; - activeArgIndices = ( - NO, - NO, - NO, - NO, - NO, - NO, - NO, - YES, - ); - argumentStrings = ( - "-p X -n 10", - "-p 1", - "-p 1 -n 10", - "-p X -c test.lua", - "-p X -n 1", - "-p X -n 10 -c queuefile.lua", - "-p X -n 5 -c playshow.lua -Q queue.out -M stars_stripes_forever.mp3", - "-p X -n 10 -c test.lua", - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 1; - configStateDict = { - }; - customDataFormattersEnabled = 1; - dataTipCustomDataFormattersEnabled = 1; - dataTipShowTypeColumn = 1; - dataTipSortType = 0; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = Firenet; - savedGlobals = { - }; - showTypeColumn = 0; - sourceDirectories = ( - ); - variableFormatDictionary = { - "0-unsigned char-main" = 1; - "0-unsigned char-packet_gen_type" = 1; - "0-unsigned char-pump_packet" = 1; - "1-unsigned char-packet_gen_type" = 1; - "2-unsigned char-packet_gen_type" = 1; - "3-unsigned char-packet_gen_type" = 1; - "4-unsigned char-packet_gen_type" = 1; - "5-unsigned char-packet_gen_type" = 1; - "cksum-unsigned char-put_packet" = 1; - "data-unsigned char [32]-packet_gen_type" = 1; - "delay-int-delay_fire" = 1; - "from-unsigned char-main" = 1; - "lval-long unsigned int-packet_gen_type" = 1; - "shft-int-delay_handler" = 1; - "to-unsigned char-main" = 1; - "type-unsigned char-main" = 1; - "val-int-setup_address" = 1; - "val-short unsigned int-delay_fire" = 1; - }; - }; - 38007423101F5FF8007957AC /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - repositoryNamesForRoots = { - "" = ""; - }; - }; - }; - 38007424101F5FF8007957AC /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - 380074B0102091B1007957AC /* mac.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {726, 1610}}"; - sepNavSelRange = "{3104, 0}"; - sepNavVisRange = "{2018, 1088}"; - sepNavWindowFrame = "{{51, 63}, {773, 715}}"; - }; - }; - 380074B1102091B1007957AC /* mac.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {910, 10010}}"; - sepNavSelRange = "{7205, 0}"; - sepNavVisRange = "{7007, 393}"; - sepNavWindowFrame = "{{223, 59}, {778, 715}}"; - }; - }; - 380076181021E188007957AC /* network.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {617, 532}}"; - sepNavSelRange = "{670, 0}"; - sepNavVisRange = "{0, 1084}"; - sepNavWindowFrame = "{{347, 99}, {664, 654}}"; - }; - }; - 380076191021E188007957AC /* network.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {732, 6244}}"; - sepNavSelRange = "{4393, 7}"; - sepNavVisRange = "{4249, 245}"; - sepNavWindowFrame = "{{463, 88}, {664, 654}}"; - }; - }; - 384B556A102DC8BF00AEC1B9 /* malloc_error_break */ = { - isa = PBXSymbolicBreakpoint; - actions = ( - ); - breakpointStyle = 1; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - hitCount = 0; - ignoreCount = 0; - location = libSystem.B.dylib; - modificationTime = 276708737.534003; - originalNumberOfMultipleMatches = 0; - state = 2; - symbolName = malloc_error_break; - }; - 3877B3FC10459B370033A57B /* comqueue.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {732, 5936}}"; - sepNavSelRange = "{6996, 19}"; - sepNavVisRange = "{6911, 305}"; - sepNavWindowFrame = "{{507, 63}, {773, 715}}"; - }; - }; - 3877B3FD10459B370033A57B /* comqueue.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {726, 640}}"; - sepNavSelRange = "{644, 14}"; - sepNavVisRange = "{0, 895}"; - sepNavWindowFrame = "{{-845, -63}, {773, 768}}"; - }; - }; - 3877B40710459BDB0033A57B /* clock.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {723, 2044}}"; - sepNavSelRange = "{1467, 53}"; - sepNavVisRange = "{0, 1183}"; - sepNavWindowFrame = "{{-1024, 32}, {770, 768}}"; - }; - }; - 3877B40810459BDB0033A57B /* clock.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {493, 466}}"; - sepNavSelRange = "{803, 13}"; - sepNavVisRange = "{0, 844}"; - sepNavWindowFrame = "{{-1103, -148}, {540, 594}}"; - }; - }; - 3877B40910459BDB0033A57B /* stackcom_inc.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {521, 503}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 414}"; - sepNavWindowFrame = "{{15, 142}, {568, 631}}"; - }; - }; - 3877B41B10459E390033A57B /* parent.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {582, 2534}}"; - sepNavSelRange = "{1037, 0}"; - sepNavVisRange = "{247, 1122}"; - sepNavWindowFrame = "{{562, -43}, {629, 695}}"; - }; - }; - 3877B41C10459E390033A57B /* parent.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {726, 630}}"; - sepNavSelRange = "{1163, 19}"; - sepNavVisRange = "{79, 1317}"; - sepNavWindowFrame = "{{242, 63}, {773, 715}}"; - }; - }; - 38851C79104C46AC00A3B757 /* lapi.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {910, 15274}}"; - sepNavSelRange = "{9725, 0}"; - sepNavVisRange = "{9548, 384}"; - sepNavWindowFrame = "{{-1024, 32}, {770, 768}}"; - }; - }; - 38851C7B104C46AC00A3B757 /* lauxlib.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {723, 9254}}"; - sepNavSelRange = "{16483, 77}"; - sepNavVisRange = "{15835, 1130}"; - sepNavWindowFrame = "{{-982, -141}, {770, 838}}"; - }; - }; - 38851C83104C46AC00A3B757 /* ldo.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {910, 7308}}"; - sepNavSelRange = "{8883, 0}"; - sepNavVisRange = "{8715, 518}"; - }; - }; - 38851C8A104C46AC00A3B757 /* linit.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {723, 728}}"; - sepNavSelRange = "{796, 0}"; - sepNavVisRange = "{142, 927}"; - sepNavWindowFrame = "{{404, -36}, {770, 715}}"; - }; - }; - 38851C8B104C46AC00A3B757 /* liolib.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1048, 7728}}"; - sepNavSelRange = "{8179, 0}"; - sepNavVisRange = "{7918, 700}"; - }; - }; - 38851C92104C46AC00A3B757 /* loadlib.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {732, 9254}}"; - sepNavSelRange = "{12136, 24}"; - sepNavVisRange = "{11945, 319}"; - sepNavWindowFrame = "{{84, 79}, {568, 631}}"; - }; - }; - 38851C98104C46AC00A3B757 /* lparser.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1048, 19264}}"; - sepNavSelRange = "{26497, 0}"; - sepNavVisRange = "{26242, 466}"; - }; - }; - 38851C9E104C46AC00A3B757 /* lstrlib.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {567, 12404}}"; - sepNavSelRange = "{3007, 0}"; - sepNavVisRange = "{2749, 484}"; - sepNavWindowFrame = "{{38, 72}, {655, 680}}"; - }; - }; - 38851C9F104C46AC00A3B757 /* ltable.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {910, 8078}}"; - sepNavSelRange = "{12851, 0}"; - sepNavVisRange = "{12726, 379}"; - }; - }; - 38851CA5104C46AC00A3B757 /* lua.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1077, 5698}}"; - sepNavSelRange = "{8122, 54}"; - sepNavVisRange = "{7613, 1002}"; - sepNavWindowFrame = "{{61, 86}, {1124, 645}}"; - }; - }; - 38851CA7104C46AC00A3B757 /* luaconf.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1077, 10724}}"; - sepNavSelRange = "{7705, 0}"; - sepNavVisRange = "{7245, 1251}"; - sepNavWindowFrame = "{{15, 128}, {1124, 645}}"; - }; - }; - 38851CA8104C46AC00A3B757 /* lualib.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {493, 756}}"; - sepNavSelRange = "{787, 0}"; - sepNavVisRange = "{328, 698}"; - sepNavWindowFrame = "{{-989, -51}, {540, 594}}"; - }; - }; - 38851CAB104C46AC00A3B757 /* lvm.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1048, 10696}}"; - sepNavSelRange = "{20440, 0}"; - sepNavVisRange = "{16876, 647}"; - }; - }; - 38B352B6105D0CCA00A36F46 /* debug.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {725, 486}}"; - sepNavSelRange = "{406, 0}"; - sepNavVisRange = "{0, 563}"; - sepNavWindowFrame = "{{442, 63}, {772, 614}}"; - }; - }; - 38B354EE105EA9BB00A36F46 /* lua_kbd.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {521, 2324}}"; - sepNavSelRange = "{2224, 0}"; - sepNavVisRange = "{1731, 809}"; - sepNavWindowFrame = "{{-691, 40}, {568, 631}}"; - }; - }; - 38B354F1105EA9BB00A36F46 /* tgkbhit.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1048, 3122}}"; - sepNavSelRange = "{5807, 0}"; - sepNavVisRange = "{5644, 280}"; - sepNavWindowFrame = "{{605, 54}, {568, 631}}"; - }; - }; - 38B354F2105EA9BB00A36F46 /* tgkbhit.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {521, 503}}"; - sepNavSelRange = "{861, 7}"; - sepNavVisRange = "{0, 921}"; - sepNavWindowFrame = "{{61, 100}, {568, 631}}"; - }; - }; - 38B4A3841051562000B79D3C /* sysop.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {723, 6888}}"; - sepNavSelRange = "{2820, 89}"; - sepNavVisRange = "{2681, 950}"; - sepNavWindowFrame = "{{241, 63}, {770, 715}}"; - }; - }; - 38B4A38E105159E900B79D3C /* sysop.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {723, 710}}"; - sepNavSelRange = "{792, 0}"; - sepNavVisRange = "{0, 809}"; - sepNavWindowFrame = "{{-770, -224}, {770, 838}}"; - }; - }; - 38B4A41A1051906900B79D3C /* lua_timer.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {910, 4676}}"; - sepNavSelRange = "{5031, 0}"; - sepNavVisRange = "{4811, 331}"; - sepNavWindowFrame = "{{412, 121}, {540, 594}}"; - }; - }; - 38B4A41B1051906900B79D3C /* lua_timer.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {493, 466}}"; - sepNavSelRange = "{544, 30}"; - sepNavVisRange = "{0, 630}"; - sepNavWindowFrame = "{{593, 158}, {540, 594}}"; - }; - }; - 38BCE291105559220001F1EC /* lua_firenet.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {910, 4102}}"; - sepNavSelRange = "{4263, 0}"; - sepNavVisRange = "{4112, 389}"; - sepNavWindowFrame = "{{50, 104}, {630, 649}}"; - }; - }; - 38BCE292105559220001F1EC /* lua_firenet.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1048, 420}}"; - sepNavSelRange = "{625, 0}"; - sepNavVisRange = "{323, 302}"; - sepNavWindowFrame = "{{378, 22}, {1124, 645}}"; - }; - }; - 38BCE293105559220001F1EC /* packet_lua.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {910, 5866}}"; - sepNavSelRange = "{932, 0}"; - sepNavVisRange = "{584, 433}"; - sepNavWindowFrame = "{{445, 130}, {540, 594}}"; - }; - }; - 38BCE294105559220001F1EC /* packet_lua.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1077, 517}}"; - sepNavSelRange = "{531, 0}"; - sepNavVisRange = "{0, 660}"; - sepNavWindowFrame = "{{67, 95}, {1124, 645}}"; - }; - }; - 38CEECC810495B0100F62890 /* logmap.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {726, 5726}}"; - sepNavSelRange = "{1257, 23}"; - sepNavVisRange = "{0, 1047}"; - sepNavWindowFrame = "{{215, 63}, {773, 715}}"; - }; - }; - 38CEECC910495B0100F62890 /* logmap.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {583, 658}}"; - sepNavSelRange = "{1008, 13}"; - sepNavVisRange = "{347, 1012}"; - sepNavWindowFrame = "{{15, 69}, {630, 649}}"; - }; - }; - 38E018E1106CE91C00711E4D /* phy.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {608, 552}}"; - sepNavSelRange = "{854, 0}"; - sepNavVisRange = "{0, 984}"; - sepNavWindowFrame = "{{-783, -29}, {655, 680}}"; - }; - }; - 38E018E2106CE91C00711E4D /* phy.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {608, 3220}}"; - sepNavSelRange = "{2962, 37}"; - sepNavVisRange = "{0, 935}"; - sepNavWindowFrame = "{{241, 98}, {655, 680}}"; - }; - }; - 38E018F0106CEA0F00711E4D /* sim_phy.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {608, 3766}}"; - sepNavSelRange = "{852, 0}"; - sepNavVisRange = "{398, 725}"; - sepNavWindowFrame = "{{388, 72}, {655, 680}}"; - }; - }; - 38E018F1106CEA0F00711E4D /* sim_phy.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {608, 552}}"; - sepNavSelRange = "{1022, 35}"; - sepNavVisRange = "{0, 1089}"; - sepNavWindowFrame = "{{38, 72}, {655, 680}}"; - }; - }; - 38E01925106D09B600711E4D /* real_phy.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {608, 552}}"; - sepNavSelRange = "{934, 36}"; - sepNavVisRange = "{0, 1002}"; - sepNavWindowFrame = "{{444, 98}, {655, 680}}"; - }; - }; - 38E0192C106D0ACD00711E4D /* real_phy.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {910, 2828}}"; - sepNavSelRange = "{3598, 0}"; - sepNavVisRange = "{3416, 399}"; - sepNavWindowFrame = "{{15, 93}, {655, 680}}"; - }; - }; - 38E01933106D0AD200711E4D /* bsdserial.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {910, 11284}}"; - sepNavSelRange = "{8966, 0}"; - sepNavVisRange = "{8689, 506}"; - sepNavWindowFrame = "{{15, 93}, {655, 680}}"; - }; - }; - 38E01934106D0AD200711E4D /* bsdserial.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {608, 1750}}"; - sepNavSelRange = "{3027, 7}"; - sepNavVisRange = "{2192, 890}"; - sepNavWindowFrame = "{{409, 63}, {655, 680}}"; - }; - }; - 38FFC85D104A8D35000206C4 /* child.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {726, 798}}"; - sepNavSelRange = "{1380, 18}"; - sepNavVisRange = "{455, 1227}"; - sepNavWindowFrame = "{{0, 63}, {773, 715}}"; - }; - }; - 38FFC85E104A8D35000206C4 /* child_cmd.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {726, 6370}}"; - sepNavSelRange = "{6480, 0}"; - sepNavVisRange = "{10391, 806}"; - sepNavWindowFrame = "{{380, 63}, {773, 715}}"; - }; - }; - 38FFC85F104A8D35000206C4 /* child_cmd.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {726, 656}}"; - sepNavSelRange = "{572, 0}"; - sepNavVisRange = "{0, 664}"; - }; - }; - 38FFC860104A8D35000206C4 /* child.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {701, 2562}}"; - sepNavSelRange = "{985, 0}"; - sepNavVisRange = "{585, 879}"; - sepNavWindowFrame = "{{297, 63}, {748, 715}}"; - }; - }; - 8DD76FA90486AB0100D96B5E /* Firenet */ = { - activeExec = 0; - executables = ( - 3800741B101F5FD4007957AC /* Firenet */, - ); - }; -} Index: Firenet.xcodeproj/project.pbxproj ================================================================== --- Firenet.xcodeproj/project.pbxproj +++ Firenet.xcodeproj/project.pbxproj @@ -47,10 +47,28 @@ 38B4A3851051562000B79D3C /* sysop.c in Sources */ = {isa = PBXBuildFile; fileRef = 38B4A3841051562000B79D3C /* sysop.c */; }; 38B4A4221051906900B79D3C /* lua_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 38B4A41A1051906900B79D3C /* lua_timer.c */; }; 38BCE295105559220001F1EC /* lua_firenet.c in Sources */ = {isa = PBXBuildFile; fileRef = 38BCE291105559220001F1EC /* lua_firenet.c */; }; 38BCE296105559220001F1EC /* packet_lua.c in Sources */ = {isa = PBXBuildFile; fileRef = 38BCE293105559220001F1EC /* packet_lua.c */; }; 38CEECCA10495B0100F62890 /* logmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CEECC810495B0100F62890 /* logmap.c */; }; + 38CF343D146D35850015A33B /* firenetlog.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF343B146D35850015A33B /* firenetlog.c */; }; + 38CF3531146D35C20015A33B /* restcom.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF3441146D35C00015A33B /* restcom.c */; }; + 38CF3532146D35C20015A33B /* restcomQ.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF3443146D35C00015A33B /* restcomQ.c */; }; + 38CF359C146D35C20015A33B /* rest.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF352D146D35C10015A33B /* rest.c */; }; + 38CF359D146D35C20015A33B /* restclient.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF352F146D35C10015A33B /* restclient.c */; }; + 38CF35A9146D35CA0015A33B /* jescape.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A0146D35CA0015A33B /* jescape.c */; }; + 38CF35AA146D35CA0015A33B /* qdj.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A2146D35CA0015A33B /* qdj.c */; }; + 38CF35AB146D35CA0015A33B /* qdj_token.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A4146D35CA0015A33B /* qdj_token.c */; }; + 38CF35AC146D35CA0015A33B /* qdj_util.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A6146D35CA0015A33B /* qdj_util.c */; }; + 38CF35AD146D35CA0015A33B /* jsonlua.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A7146D35CA0015A33B /* jsonlua.c */; }; + 38CF35B2146D367B0015A33B /* httplib.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35B0146D367B0015A33B /* httplib.c */; }; + 38CF35B6146D36BE0015A33B /* postprocessor.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35B5146D36BE0015A33B /* postprocessor.c */; }; + 38CF35BB146D36D70015A33B /* reason_phrase.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35B7146D36D70015A33B /* reason_phrase.c */; }; + 38CF35BC146D36D70015A33B /* response.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35B9146D36D70015A33B /* response.c */; }; + 38CF35BF146D36F00015A33B /* memorypool.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35BD146D36F00015A33B /* memorypool.c */; }; + 38CF35C2146D37070015A33B /* connection.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35C0146D37070015A33B /* connection.c */; }; + 38CF35C4146D37180015A33B /* daemon.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35C3146D37180015A33B /* daemon.c */; }; + 38CF35C6146D372E0015A33B /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35C5146D372E0015A33B /* internal.c */; }; 38E018E3106CE91C00711E4D /* phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E018E2106CE91C00711E4D /* phy.c */; }; 38E018F2106CEA0F00711E4D /* sim_phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E018F0106CEA0F00711E4D /* sim_phy.c */; }; 38E0192D106D0ACD00711E4D /* real_phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E0192C106D0ACD00711E4D /* real_phy.c */; }; 38E01939106D0AD200711E4D /* bsdserial.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E01933106D0AD200711E4D /* bsdserial.c */; }; 38E01954106D10F200711E4D /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38E01953106D10F200711E4D /* IOKit.framework */; }; @@ -153,10 +171,47 @@ 38BCE292105559220001F1EC /* lua_firenet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lua_firenet.h; path = luasupport/firenet/lua_firenet.h; sourceTree = SOURCE_ROOT; }; 38BCE293105559220001F1EC /* packet_lua.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = packet_lua.c; path = luasupport/firenet/packet_lua.c; sourceTree = SOURCE_ROOT; }; 38BCE294105559220001F1EC /* packet_lua.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = packet_lua.h; path = luasupport/firenet/packet_lua.h; sourceTree = SOURCE_ROOT; }; 38CEECC810495B0100F62890 /* logmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = logmap.c; path = Node/parent/logmap.c; sourceTree = SOURCE_ROOT; }; 38CEECC910495B0100F62890 /* logmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logmap.h; path = Node/parent/logmap.h; sourceTree = SOURCE_ROOT; }; + 38CF343B146D35850015A33B /* firenetlog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = firenetlog.c; path = Logging/firenetlog.c; sourceTree = SOURCE_ROOT; }; + 38CF343C146D35850015A33B /* firenetlog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = firenetlog.h; path = Logging/firenetlog.h; sourceTree = SOURCE_ROOT; }; + 38CF3441146D35C00015A33B /* restcom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = restcom.c; path = luasupport/HTTP/COMS/restcom.c; sourceTree = SOURCE_ROOT; }; + 38CF3442146D35C00015A33B /* restcom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = restcom.h; path = luasupport/HTTP/COMS/restcom.h; sourceTree = SOURCE_ROOT; }; + 38CF3443146D35C00015A33B /* restcomQ.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = restcomQ.c; path = luasupport/HTTP/COMS/restcomQ.c; sourceTree = SOURCE_ROOT; }; + 38CF3444146D35C00015A33B /* restcomQ.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = restcomQ.h; path = luasupport/HTTP/COMS/restcomQ.h; sourceTree = SOURCE_ROOT; }; + 38CF352D146D35C10015A33B /* rest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rest.c; path = luasupport/HTTP/rest/rest.c; sourceTree = SOURCE_ROOT; }; + 38CF352E146D35C10015A33B /* rest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rest.h; path = luasupport/HTTP/rest/rest.h; sourceTree = SOURCE_ROOT; }; + 38CF352F146D35C10015A33B /* restclient.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = restclient.c; path = luasupport/HTTP/rest/restclient.c; sourceTree = SOURCE_ROOT; }; + 38CF3530146D35C10015A33B /* restclient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = restclient.h; path = luasupport/HTTP/rest/restclient.h; sourceTree = SOURCE_ROOT; }; + 38CF35A0146D35CA0015A33B /* jescape.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jescape.c; path = luasupport/JSON/JSON/jescape.c; sourceTree = SOURCE_ROOT; }; + 38CF35A1146D35CA0015A33B /* jescape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jescape.h; path = luasupport/JSON/JSON/jescape.h; sourceTree = SOURCE_ROOT; }; + 38CF35A2146D35CA0015A33B /* qdj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = qdj.c; path = luasupport/JSON/JSON/qdj.c; sourceTree = SOURCE_ROOT; }; + 38CF35A3146D35CA0015A33B /* qdj.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qdj.h; path = luasupport/JSON/JSON/qdj.h; sourceTree = SOURCE_ROOT; }; + 38CF35A4146D35CA0015A33B /* qdj_token.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = qdj_token.c; path = luasupport/JSON/JSON/qdj_token.c; sourceTree = SOURCE_ROOT; }; + 38CF35A5146D35CA0015A33B /* qdj_token.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qdj_token.h; path = luasupport/JSON/JSON/qdj_token.h; sourceTree = SOURCE_ROOT; }; + 38CF35A6146D35CA0015A33B /* qdj_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = qdj_util.c; path = luasupport/JSON/JSON/qdj_util.c; sourceTree = SOURCE_ROOT; }; + 38CF35A7146D35CA0015A33B /* jsonlua.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jsonlua.c; path = luasupport/JSON/jsonlua.c; sourceTree = SOURCE_ROOT; }; + 38CF35A8146D35CA0015A33B /* jsonlua.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jsonlua.h; path = luasupport/JSON/jsonlua.h; sourceTree = SOURCE_ROOT; }; + 38CF35B0146D367B0015A33B /* httplib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = httplib.c; path = luasupport/HTTP/httplib.c; sourceTree = SOURCE_ROOT; }; + 38CF35B1146D367B0015A33B /* httplib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = httplib.h; path = luasupport/HTTP/httplib.h; sourceTree = SOURCE_ROOT; }; + 38CF35B5146D36BE0015A33B /* postprocessor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = postprocessor.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/postprocessor.c"; sourceTree = SOURCE_ROOT; }; + 38CF35B7146D36D70015A33B /* reason_phrase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = reason_phrase.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/reason_phrase.c"; sourceTree = SOURCE_ROOT; }; + 38CF35B8146D36D70015A33B /* reason_phrase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = reason_phrase.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/reason_phrase.h"; sourceTree = SOURCE_ROOT; }; + 38CF35B9146D36D70015A33B /* response.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = response.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/response.c"; sourceTree = SOURCE_ROOT; }; + 38CF35BA146D36D70015A33B /* response.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = response.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/response.h"; sourceTree = SOURCE_ROOT; }; + 38CF35BD146D36F00015A33B /* memorypool.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = memorypool.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/memorypool.c"; sourceTree = SOURCE_ROOT; }; + 38CF35BE146D36F00015A33B /* memorypool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memorypool.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/memorypool.h"; sourceTree = SOURCE_ROOT; }; + 38CF35C0146D37070015A33B /* connection.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = connection.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/connection.c"; sourceTree = SOURCE_ROOT; }; + 38CF35C1146D37070015A33B /* connection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = connection.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/connection.h"; sourceTree = SOURCE_ROOT; }; + 38CF35C3146D37180015A33B /* daemon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = daemon.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/daemon.c"; sourceTree = SOURCE_ROOT; }; + 38CF35C5146D372E0015A33B /* internal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = internal.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/internal.c"; sourceTree = SOURCE_ROOT; }; + 38CF35C8146D37610015A33B /* microhttpd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = microhttpd.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/include/microhttpd.h"; sourceTree = SOURCE_ROOT; }; + 38CF35C9146D37620015A33B /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/include/platform.h"; sourceTree = SOURCE_ROOT; }; + 38CF35CA146D37620015A33B /* plibc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = plibc.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/include/plibc.h"; sourceTree = SOURCE_ROOT; }; + 38CF35CB146D377C0015A33B /* MHD_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MHD_config.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/MHD_config.h"; sourceTree = SOURCE_ROOT; }; + 38CF35CD146D37920015A33B /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = internal.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/internal.h"; sourceTree = SOURCE_ROOT; }; 38E018E1106CE91C00711E4D /* phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = phy.h; sourceTree = ""; }; 38E018E2106CE91C00711E4D /* phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = phy.c; sourceTree = ""; }; 38E018F0106CEA0F00711E4D /* sim_phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sim_phy.c; path = Network/Simulation/sim_phy.c; sourceTree = SOURCE_ROOT; }; 38E018F1106CEA0F00711E4D /* sim_phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sim_phy.h; path = Network/Simulation/sim_phy.h; sourceTree = SOURCE_ROOT; }; 38E01925106D09B600711E4D /* real_phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = real_phy.h; path = Network/Real/real_phy.h; sourceTree = SOURCE_ROOT; }; @@ -199,10 +254,11 @@ }; 08FB7795FE84155DC02AAC07 /* Source */ = { isa = PBXGroup; children = ( 08FB7796FE84155DC02AAC07 /* main.c */, + 38CF343A146D35850015A33B /* Logging */, 3877B3EE10459B370033A57B /* Node */, 38851C77104C469000A3B757 /* Lua */, 380074AD10209122007957AC /* Network */, ); name = Source; @@ -382,10 +438,12 @@ isa = PBXGroup; children = ( 38B4A38E105159E900B79D3C /* sysop.h */, 38B4A3841051562000B79D3C /* sysop.c */, 38851C8A104C46AC00A3B757 /* linit.c */, + 38CF343F146D35C00015A33B /* HTTP */, + 38CF359E146D35CA0015A33B /* JSON */, 38B4A4191051906900B79D3C /* timer */, 38BCE290105559220001F1EC /* firenet */, 38B354ED105EA9BB00A36F46 /* kdb */, ); path = luasupport; @@ -410,10 +468,121 @@ 38BCE294105559220001F1EC /* packet_lua.h */, ); name = firenet; path = luasupport/firenet; sourceTree = SOURCE_ROOT; + }; + 38CF343A146D35850015A33B /* Logging */ = { + isa = PBXGroup; + children = ( + 38CF343B146D35850015A33B /* firenetlog.c */, + 38CF343C146D35850015A33B /* firenetlog.h */, + ); + path = Logging; + sourceTree = SOURCE_ROOT; + }; + 38CF343F146D35C00015A33B /* HTTP */ = { + isa = PBXGroup; + children = ( + 38CF35B0146D367B0015A33B /* httplib.c */, + 38CF35B1146D367B0015A33B /* httplib.h */, + 38CF35B3146D367F0015A33B /* libmicrohttp */, + 38CF3440146D35C00015A33B /* COMS */, + 38CF352C146D35C10015A33B /* rest */, + ); + name = HTTP; + path = luasupport/HTTP; + sourceTree = SOURCE_ROOT; + }; + 38CF3440146D35C00015A33B /* COMS */ = { + isa = PBXGroup; + children = ( + 38CF3441146D35C00015A33B /* restcom.c */, + 38CF3442146D35C00015A33B /* restcom.h */, + 38CF3443146D35C00015A33B /* restcomQ.c */, + 38CF3444146D35C00015A33B /* restcomQ.h */, + ); + name = COMS; + path = luasupport/HTTP/COMS; + sourceTree = SOURCE_ROOT; + }; + 38CF352C146D35C10015A33B /* rest */ = { + isa = PBXGroup; + children = ( + 38CF352D146D35C10015A33B /* rest.c */, + 38CF352E146D35C10015A33B /* rest.h */, + 38CF352F146D35C10015A33B /* restclient.c */, + 38CF3530146D35C10015A33B /* restclient.h */, + ); + name = rest; + path = luasupport/HTTP/rest; + sourceTree = SOURCE_ROOT; + }; + 38CF359E146D35CA0015A33B /* JSON */ = { + isa = PBXGroup; + children = ( + 38CF359F146D35CA0015A33B /* JSON */, + 38CF35A7146D35CA0015A33B /* jsonlua.c */, + 38CF35A8146D35CA0015A33B /* jsonlua.h */, + ); + name = JSON; + path = luasupport/JSON; + sourceTree = SOURCE_ROOT; + }; + 38CF359F146D35CA0015A33B /* JSON */ = { + isa = PBXGroup; + children = ( + 38CF35A0146D35CA0015A33B /* jescape.c */, + 38CF35A1146D35CA0015A33B /* jescape.h */, + 38CF35A2146D35CA0015A33B /* qdj.c */, + 38CF35A3146D35CA0015A33B /* qdj.h */, + 38CF35A4146D35CA0015A33B /* qdj_token.c */, + 38CF35A5146D35CA0015A33B /* qdj_token.h */, + 38CF35A6146D35CA0015A33B /* qdj_util.c */, + ); + name = JSON; + path = luasupport/JSON/JSON; + sourceTree = SOURCE_ROOT; + }; + 38CF35B3146D367F0015A33B /* libmicrohttp */ = { + isa = PBXGroup; + children = ( + 38CF35C7146D37340015A33B /* Include */, + 38CF35B4146D36930015A33B /* SRC */, + ); + name = libmicrohttp; + sourceTree = ""; + }; + 38CF35B4146D36930015A33B /* SRC */ = { + isa = PBXGroup; + children = ( + 38CF35CD146D37920015A33B /* internal.h */, + 38CF35C5146D372E0015A33B /* internal.c */, + 38CF35C3146D37180015A33B /* daemon.c */, + 38CF35C0146D37070015A33B /* connection.c */, + 38CF35C1146D37070015A33B /* connection.h */, + 38CF35BD146D36F00015A33B /* memorypool.c */, + 38CF35BE146D36F00015A33B /* memorypool.h */, + 38CF35B7146D36D70015A33B /* reason_phrase.c */, + 38CF35B8146D36D70015A33B /* reason_phrase.h */, + 38CF35B9146D36D70015A33B /* response.c */, + 38CF35BA146D36D70015A33B /* response.h */, + 38CF35B5146D36BE0015A33B /* postprocessor.c */, + ); + name = SRC; + sourceTree = ""; + }; + 38CF35C7146D37340015A33B /* Include */ = { + isa = PBXGroup; + children = ( + 38CF35CB146D377C0015A33B /* MHD_config.h */, + 38CF35C8146D37610015A33B /* microhttpd.h */, + 38CF35C9146D37620015A33B /* platform.h */, + 38CF35CA146D37620015A33B /* plibc.h */, + ); + name = Include; + sourceTree = ""; }; 38E018D2106CE8C000711E4D /* Simulation */ = { isa = PBXGroup; children = ( 38E018F0106CEA0F00711E4D /* sim_phy.c */, @@ -493,13 +662,20 @@ /* End PBXNativeTarget section */ /* Begin PBXProject section */ 08FB7793FE84155DC02AAC07 /* Project object */ = { isa = PBXProject; + attributes = { + LastUpgradeCheck = 0720; + }; buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "Firenet" */; compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; hasScannedForEncodings = 1; + knownRegions = ( + en, + ); mainGroup = 08FB7794FE84155DC02AAC07 /* Firenet */; projectDirPath = ""; projectRoot = ""; targets = ( 8DD76FA90486AB0100D96B5E /* Firenet */, @@ -559,10 +735,28 @@ 38B354F4105EA9BB00A36F46 /* tgkbhit.c in Sources */, 38E018E3106CE91C00711E4D /* phy.c in Sources */, 38E018F2106CEA0F00711E4D /* sim_phy.c in Sources */, 38E0192D106D0ACD00711E4D /* real_phy.c in Sources */, 38E01939106D0AD200711E4D /* bsdserial.c in Sources */, + 38CF343D146D35850015A33B /* firenetlog.c in Sources */, + 38CF3531146D35C20015A33B /* restcom.c in Sources */, + 38CF3532146D35C20015A33B /* restcomQ.c in Sources */, + 38CF359C146D35C20015A33B /* rest.c in Sources */, + 38CF359D146D35C20015A33B /* restclient.c in Sources */, + 38CF35A9146D35CA0015A33B /* jescape.c in Sources */, + 38CF35AA146D35CA0015A33B /* qdj.c in Sources */, + 38CF35AB146D35CA0015A33B /* qdj_token.c in Sources */, + 38CF35AC146D35CA0015A33B /* qdj_util.c in Sources */, + 38CF35AD146D35CA0015A33B /* jsonlua.c in Sources */, + 38CF35B2146D367B0015A33B /* httplib.c in Sources */, + 38CF35B6146D36BE0015A33B /* postprocessor.c in Sources */, + 38CF35BB146D36D70015A33B /* reason_phrase.c in Sources */, + 38CF35BC146D36D70015A33B /* response.c in Sources */, + 38CF35BF146D36F00015A33B /* memorypool.c in Sources */, + 38CF35C2146D37070015A33B /* connection.c in Sources */, + 38CF35C4146D37180015A33B /* daemon.c in Sources */, + 38CF35C6146D372E0015A33B /* internal.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ @@ -571,15 +765,16 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = ""; INSTALL_PATH = /usr/local/bin; PRODUCT_NAME = Firenet; + SDKROOT = macosx; }; name = Debug; }; 1DEB928708733DD80010E9CD /* Release */ = { isa = XCBuildConfiguration; @@ -587,37 +782,41 @@ ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; INSTALL_PATH = /usr/local/bin; PRODUCT_NAME = Firenet; + SDKROOT = macosx; }; name = Release; }; 1DEB928A08733DD80010E9CD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - SDKROOT = macosx10.6; + OTHER_CFLAGS = "-DBSD_VERSION"; + "OTHER_CPLUSPLUSFLAGS[sdk=macosx10.7][arch=*]" = "$(OTHER_CFLAGS)"; + SDKROOT = macosx; }; name = Debug; }; 1DEB928B08733DD80010E9CD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = macosx10.6; + MACOSX_DEPLOYMENT_TARGET = 10.10; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-DBSD_VERSION"; + SDKROOT = macosx; }; name = Release; }; /* End XCBuildConfiguration section */ Index: Firenet_old.xcodeproj/jim.mode1v3 ================================================================== --- Firenet_old.xcodeproj/jim.mode1v3 +++ Firenet_old.xcodeproj/jim.mode1v3 @@ -225,18 +225,21 @@ Perspectives ChosenToolbarItems - active-combo-popup - buildOrClean - build-and-go - go + active-target-popup + active-buildstyle-popup + action debugger-enable-breakpoints - servicesModulebreakpoints + buildOrClean + go-debug com.apple.ide.PBXToolbarStopButton + servicesModulebreakpoints servicesModulefind + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield ControllerClassBaseName IconName WindowOfProjectWithEditor @@ -283,26 +286,25 @@ PBXSmartGroupTreeModuleOutlineStateExpansionKey 08FB7794FE84155DC02AAC07 08FB7795FE84155DC02AAC07 + 38CF343A146D35850015A33B 3877B3EE10459B370033A57B - 3877B3F410459B370033A57B - 3877B3EF10459B370033A57B - 380074AD10209122007957AC - 38E018D2106CE8C000711E4D + 38851C77104C469000A3B757 1C37FAAC04509CD000000102 1C37FABC05509CD000000102 PBXSmartGroupTreeModuleOutlineStateSelectionKey - 0 + 20 + 19 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {217, 595}} + {{0, 0}, {217, 569}} PBXTopSmartGroupGIDs XCIncludePerspectivesSwitch @@ -310,18 +312,18 @@ com.apple.Xcode.GFSharingToken GeometryConfiguration Frame - {{0, 0}, {234, 613}} + {{0, 0}, {234, 587}} GroupTreeTableConfiguration MainColumn 217 RubberWindowFrame - 54 124 857 654 0 0 1280 778 + 217 119 857 628 0 0 1280 1002 Module PBXSmartGroupTreeModule Proportion 234pt @@ -354,11 +356,11 @@ GeometryConfiguration Frame {{0, 0}, {618, 0}} RubberWindowFrame - 54 124 857 654 0 0 1280 778 + 217 119 857 628 0 0 1280 1002 Module PBXNavigatorGroup Proportion 0pt @@ -372,18 +374,18 @@ Detail GeometryConfiguration Frame - {{0, 5}, {618, 608}} + {{0, 5}, {618, 582}} RubberWindowFrame - 54 124 857 654 0 0 1280 778 + 217 119 857 628 0 0 1280 1002 Module XCDetailModule Proportion - 608pt + 582pt Proportion 618pt @@ -398,13 +400,13 @@ PBXNavigatorGroup XCDetailModule TableOfContents - 3847C09A108F2CF4008484F8 + 38B8C8F114E666E800656598 1CE0B1FE06471DED0097A5F4 - 3847C09B108F2CF4008484F8 + 38B8C8F214E666E800656598 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 ToolbarConfigUserDefaultsMinorVersion 2 @@ -521,17 +523,17 @@ SourceDescription file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' StatusbarIsVisible TimeStamp - 277818612.32285899 + 350657621.99337798 ToolbarDisplayMode 1 ToolbarIsVisible ToolbarSizeMode - 1 + 2 Type Perspectives UpdateMessage The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? WindowJustification @@ -541,11 +543,11 @@ 3800743A101F6082007957AC 1CD10A99069EF8BA00B06720 /Users/jschimpf/Public/Firenet/Firenet_old.xcodeproj WindowString - 54 124 857 654 0 0 1280 778 + 217 119 857 628 0 0 1280 1002 WindowToolsV3 FirstTimeWindowDisplayed @@ -571,11 +573,11 @@ GeometryConfiguration Frame {{0, 0}, {616, 294}} RubberWindowFrame - 83 163 616 595 0 0 1280 778 + -668 234 616 595 -1024 123 1024 768 Module PBXNavigatorGroup Proportion 294pt @@ -586,22 +588,22 @@ ContentConfiguration PBXProjectModuleGUID XCMainBuildResultsModuleGUID PBXProjectModuleLabel - Build Results + Build XCBuildResultsTrigger_Collapse - 1024 + 1022 XCBuildResultsTrigger_Open 1010 GeometryConfiguration Frame {{0, 299}, {616, 255}} RubberWindowFrame - 83 163 616 595 0 0 1280 778 + -668 234 616 595 -1024 123 1024 768 Module PBXBuildResultsModule Proportion 255pt @@ -620,18 +622,18 @@ StatusbarIsVisible TableOfContents 3800743A101F6082007957AC - 3847C091108F2CEE008484F8 + 38B8C8E914E6669500656598 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID ToolbarConfiguration xcode.toolbar.config.buildV3 WindowString - 83 163 616 595 0 0 1280 778 + -668 234 616 595 -1024 123 1024 768 WindowToolGUID 3800743A101F6082007957AC WindowToolIsVisible @@ -662,12 +664,12 @@ 0.0 isCollapsed yes sizes - {{0, 0}, {437, 330}} - {{437, 0}, {522, 330}} + {{0, 0}, {480, 310}} + {{480, 0}, {479, 310}} VerticalSplitView _collapsingFrameDimension @@ -678,12 +680,12 @@ 0.0 isCollapsed yes sizes - {{0, 0}, {959, 330}} - {{0, 330}, {959, 288}} + {{0, 0}, {959, 310}} + {{0, 310}, {959, 276}} LauncherConfigVersion 8 @@ -699,38 +701,38 @@ DebugConsoleWindowFrame {{200, 200}, {500, 300}} DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame - {{0, 0}, {959, 618}} + {{0, 0}, {959, 586}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration Name 149 Value 114 Summary - 234 + 191 Frame - {{437, 0}, {522, 330}} + {{480, 0}, {479, 310}} RubberWindowFrame - 321 119 959 659 0 0 1280 778 + -845 203 959 627 -1024 123 1024 768 RubberWindowFrame - 321 119 959 659 0 0 1280 778 + -845 203 959 627 -1024 123 1024 768 Module PBXDebugSessionModule Proportion - 618pt + 586pt Proportion - 618pt + 586pt Name Debugger ServiceClasses @@ -740,26 +742,26 @@ StatusbarIsVisible TableOfContents 1CD10A99069EF8BA00B06720 - 3847C092108F2CEE008484F8 + 38B8C8DF14E6668A00656598 1C162984064C10D400B95A72 - 3847C093108F2CEE008484F8 - 3847C094108F2CEE008484F8 - 3847C095108F2CEE008484F8 - 3847C096108F2CEE008484F8 - 3847C097108F2CEE008484F8 + 38B8C8E014E6668A00656598 + 38B8C8E114E6668A00656598 + 38B8C8E214E6668A00656598 + 38B8C8E314E6668A00656598 + 38B8C8E414E6668A00656598 ToolbarConfiguration xcode.toolbar.config.debugV3 WindowString - 321 119 959 659 0 0 1280 778 + -845 203 959 627 -1024 123 1024 768 WindowToolGUID 1CD10A99069EF8BA00B06720 WindowToolIsVisible - + FirstTimeWindowDisplayed Identifier @@ -879,11 +881,11 @@ GeometryConfiguration Frame {{0, 0}, {788, 385}} RubberWindowFrame - 277 228 788 426 0 0 1280 778 + 201 425 788 426 0 0 1280 1002 Module PBXDebugCLIModule Proportion 385pt @@ -902,21 +904,21 @@ StatusbarIsVisible TableOfContents 1C78EAAD065D492600B07095 - 38AFF608107E1BE60025F301 + 383BD5B714B1F0260028C672 1C78EAAC065D492600B07095 ToolbarConfiguration xcode.toolbar.config.consoleV3 WindowString - 277 228 788 426 0 0 1280 778 + 201 425 788 426 0 0 1280 1002 WindowToolGUID 1C78EAAD065D492600B07095 WindowToolIsVisible - + Identifier windowTool.snapshots Layout Index: Firenet_old.xcodeproj/jim.pbxuser ================================================================== --- Firenet_old.xcodeproj/jim.pbxuser +++ Firenet_old.xcodeproj/jim.pbxuser @@ -151,23 +151,23 @@ PBXFileDataSource_ObjectSize_ColumnID, PBXFileDataSource_Errors_ColumnID, PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 277818580; - PBXWorkspaceStateSaveDate = 277818580; + PBXPerProjectTemplateStateSaveDate = 350643842; + PBXWorkspaceStateSaveDate = 350643842; }; sourceControlManager = 38007423101F5FF8007957AC /* Source Control */; userBuildSettings = { }; }; 08FB7796FE84155DC02AAC07 /* main.c */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {701, 3066}}"; - sepNavSelRange = "{2205, 12}"; - sepNavVisRange = "{2162, 765}"; - sepNavWindowFrame = "{{493, 63}, {748, 715}}"; + sepNavIntBoundsRect = "{{0, 0}, {570, 3360}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 788}"; + sepNavWindowFrame = "{{347, 130}, {748, 715}}"; }; }; 3800741B101F5FD4007957AC /* Firenet */ = { isa = PBXExecutable; activeArgIndices = ( @@ -175,12 +175,15 @@ NO, NO, NO, NO, NO, + NO, NO, YES, + NO, + NO, ); argumentStrings = ( "-p X -n 10", "-p 1", "-p 1 -n 10", @@ -187,19 +190,19 @@ "-p X -c test.lua", "-p X -n 1", "-p X -n 10 -c queuefile.lua", "-p X -n 5 -c playshow.lua -Q queue.out -M stars_stripes_forever.mp3", "-p X -n 10 -c test.lua", + "-p 1 -c ../../Scripts/MultFire.lua -log log.txt", + "-p X -n 10 -c ../../Scripts/PgmFire.lua -log log.txt", + "-p X -n 10 -c ../../Site/rest/main.lua -http ../../Site/Site_J -rest ../../Site/rest -show ../../Shows -log log.txt", ); autoAttachOnCrash = 1; - breakpointsEnabled = 1; + breakpointsEnabled = 0; configStateDict = { }; customDataFormattersEnabled = 1; - dataTipCustomDataFormattersEnabled = 1; - dataTipShowTypeColumn = 1; - dataTipSortType = 0; debuggerPlugin = GDBDebugging; disassemblyDisplayState = 0; dylibVariantSuffix = ""; enableDebugStr = 1; environmentEntries = ( @@ -208,11 +211,10 @@ executableUserSymbolLevel = 0; libgmallocEnabled = 0; name = Firenet; savedGlobals = { }; - showTypeColumn = 0; sourceDirectories = ( ); variableFormatDictionary = { "0-unsigned char-main" = 1; "0-unsigned char-packet_gen_type" = 1; @@ -289,12 +291,11 @@ countType = 0; delayBeforeContinue = 0; hitCount = 0; ignoreCount = 0; location = libSystem.B.dylib; - modificationTime = 276708737.5340031; - originalNumberOfMultipleMatches = 0; + modificationTime = 347205646.948454; state = 2; symbolName = malloc_error_break; }; 3877B3FC10459B370033A57B /* comqueue.c */ = { uiCtxt = { @@ -560,10 +561,18 @@ sepNavIntBoundsRect = "{{0, 0}, {583, 658}}"; sepNavSelRange = "{1008, 13}"; sepNavVisRange = "{347, 1012}"; sepNavWindowFrame = "{{15, 69}, {630, 649}}"; }; + }; + 38CF35B0146D367B0015A33B /* httplib.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {796, 9086}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{13743, 802}"; + sepNavWindowFrame = "{{15, 309}, {843, 688}}"; + }; }; 38E018E1106CE91C00711E4D /* phy.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {608, 552}}"; sepNavSelRange = "{854, 0}"; Index: Firenet_old.xcodeproj/project.pbxproj ================================================================== --- Firenet_old.xcodeproj/project.pbxproj +++ Firenet_old.xcodeproj/project.pbxproj @@ -47,10 +47,28 @@ 38B4A3851051562000B79D3C /* sysop.c in Sources */ = {isa = PBXBuildFile; fileRef = 38B4A3841051562000B79D3C /* sysop.c */; }; 38B4A4221051906900B79D3C /* lua_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 38B4A41A1051906900B79D3C /* lua_timer.c */; }; 38BCE295105559220001F1EC /* lua_firenet.c in Sources */ = {isa = PBXBuildFile; fileRef = 38BCE291105559220001F1EC /* lua_firenet.c */; }; 38BCE296105559220001F1EC /* packet_lua.c in Sources */ = {isa = PBXBuildFile; fileRef = 38BCE293105559220001F1EC /* packet_lua.c */; }; 38CEECCA10495B0100F62890 /* logmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CEECC810495B0100F62890 /* logmap.c */; }; + 38CF343D146D35850015A33B /* firenetlog.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF343B146D35850015A33B /* firenetlog.c */; }; + 38CF3531146D35C20015A33B /* restcom.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF3441146D35C00015A33B /* restcom.c */; }; + 38CF3532146D35C20015A33B /* restcomQ.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF3443146D35C00015A33B /* restcomQ.c */; }; + 38CF359C146D35C20015A33B /* rest.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF352D146D35C10015A33B /* rest.c */; }; + 38CF359D146D35C20015A33B /* restclient.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF352F146D35C10015A33B /* restclient.c */; }; + 38CF35A9146D35CA0015A33B /* jescape.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A0146D35CA0015A33B /* jescape.c */; }; + 38CF35AA146D35CA0015A33B /* qdj.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A2146D35CA0015A33B /* qdj.c */; }; + 38CF35AB146D35CA0015A33B /* qdj_token.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A4146D35CA0015A33B /* qdj_token.c */; }; + 38CF35AC146D35CA0015A33B /* qdj_util.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A6146D35CA0015A33B /* qdj_util.c */; }; + 38CF35AD146D35CA0015A33B /* jsonlua.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35A7146D35CA0015A33B /* jsonlua.c */; }; + 38CF35B2146D367B0015A33B /* httplib.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35B0146D367B0015A33B /* httplib.c */; }; + 38CF35B6146D36BE0015A33B /* postprocessor.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35B5146D36BE0015A33B /* postprocessor.c */; }; + 38CF35BB146D36D70015A33B /* reason_phrase.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35B7146D36D70015A33B /* reason_phrase.c */; }; + 38CF35BC146D36D70015A33B /* response.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35B9146D36D70015A33B /* response.c */; }; + 38CF35BF146D36F00015A33B /* memorypool.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35BD146D36F00015A33B /* memorypool.c */; }; + 38CF35C2146D37070015A33B /* connection.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35C0146D37070015A33B /* connection.c */; }; + 38CF35C4146D37180015A33B /* daemon.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35C3146D37180015A33B /* daemon.c */; }; + 38CF35C6146D372E0015A33B /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = 38CF35C5146D372E0015A33B /* internal.c */; }; 38E018E3106CE91C00711E4D /* phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E018E2106CE91C00711E4D /* phy.c */; }; 38E018F2106CEA0F00711E4D /* sim_phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E018F0106CEA0F00711E4D /* sim_phy.c */; }; 38E0192D106D0ACD00711E4D /* real_phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E0192C106D0ACD00711E4D /* real_phy.c */; }; 38E01939106D0AD200711E4D /* bsdserial.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E01933106D0AD200711E4D /* bsdserial.c */; }; 38E01954106D10F200711E4D /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38E01953106D10F200711E4D /* IOKit.framework */; }; @@ -153,10 +171,47 @@ 38BCE292105559220001F1EC /* lua_firenet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lua_firenet.h; path = luasupport/firenet/lua_firenet.h; sourceTree = SOURCE_ROOT; }; 38BCE293105559220001F1EC /* packet_lua.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = packet_lua.c; path = luasupport/firenet/packet_lua.c; sourceTree = SOURCE_ROOT; }; 38BCE294105559220001F1EC /* packet_lua.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = packet_lua.h; path = luasupport/firenet/packet_lua.h; sourceTree = SOURCE_ROOT; }; 38CEECC810495B0100F62890 /* logmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = logmap.c; path = Node/parent/logmap.c; sourceTree = SOURCE_ROOT; }; 38CEECC910495B0100F62890 /* logmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = logmap.h; path = Node/parent/logmap.h; sourceTree = SOURCE_ROOT; }; + 38CF343B146D35850015A33B /* firenetlog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = firenetlog.c; path = Logging/firenetlog.c; sourceTree = SOURCE_ROOT; }; + 38CF343C146D35850015A33B /* firenetlog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = firenetlog.h; path = Logging/firenetlog.h; sourceTree = SOURCE_ROOT; }; + 38CF3441146D35C00015A33B /* restcom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = restcom.c; path = luasupport/HTTP/COMS/restcom.c; sourceTree = SOURCE_ROOT; }; + 38CF3442146D35C00015A33B /* restcom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = restcom.h; path = luasupport/HTTP/COMS/restcom.h; sourceTree = SOURCE_ROOT; }; + 38CF3443146D35C00015A33B /* restcomQ.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = restcomQ.c; path = luasupport/HTTP/COMS/restcomQ.c; sourceTree = SOURCE_ROOT; }; + 38CF3444146D35C00015A33B /* restcomQ.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = restcomQ.h; path = luasupport/HTTP/COMS/restcomQ.h; sourceTree = SOURCE_ROOT; }; + 38CF352D146D35C10015A33B /* rest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rest.c; path = luasupport/HTTP/rest/rest.c; sourceTree = SOURCE_ROOT; }; + 38CF352E146D35C10015A33B /* rest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rest.h; path = luasupport/HTTP/rest/rest.h; sourceTree = SOURCE_ROOT; }; + 38CF352F146D35C10015A33B /* restclient.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = restclient.c; path = luasupport/HTTP/rest/restclient.c; sourceTree = SOURCE_ROOT; }; + 38CF3530146D35C10015A33B /* restclient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = restclient.h; path = luasupport/HTTP/rest/restclient.h; sourceTree = SOURCE_ROOT; }; + 38CF35A0146D35CA0015A33B /* jescape.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jescape.c; path = luasupport/JSON/JSON/jescape.c; sourceTree = SOURCE_ROOT; }; + 38CF35A1146D35CA0015A33B /* jescape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jescape.h; path = luasupport/JSON/JSON/jescape.h; sourceTree = SOURCE_ROOT; }; + 38CF35A2146D35CA0015A33B /* qdj.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = qdj.c; path = luasupport/JSON/JSON/qdj.c; sourceTree = SOURCE_ROOT; }; + 38CF35A3146D35CA0015A33B /* qdj.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qdj.h; path = luasupport/JSON/JSON/qdj.h; sourceTree = SOURCE_ROOT; }; + 38CF35A4146D35CA0015A33B /* qdj_token.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = qdj_token.c; path = luasupport/JSON/JSON/qdj_token.c; sourceTree = SOURCE_ROOT; }; + 38CF35A5146D35CA0015A33B /* qdj_token.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qdj_token.h; path = luasupport/JSON/JSON/qdj_token.h; sourceTree = SOURCE_ROOT; }; + 38CF35A6146D35CA0015A33B /* qdj_util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = qdj_util.c; path = luasupport/JSON/JSON/qdj_util.c; sourceTree = SOURCE_ROOT; }; + 38CF35A7146D35CA0015A33B /* jsonlua.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jsonlua.c; path = luasupport/JSON/jsonlua.c; sourceTree = SOURCE_ROOT; }; + 38CF35A8146D35CA0015A33B /* jsonlua.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jsonlua.h; path = luasupport/JSON/jsonlua.h; sourceTree = SOURCE_ROOT; }; + 38CF35B0146D367B0015A33B /* httplib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = httplib.c; path = luasupport/HTTP/httplib.c; sourceTree = SOURCE_ROOT; }; + 38CF35B1146D367B0015A33B /* httplib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = httplib.h; path = luasupport/HTTP/httplib.h; sourceTree = SOURCE_ROOT; }; + 38CF35B5146D36BE0015A33B /* postprocessor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = postprocessor.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/postprocessor.c"; sourceTree = SOURCE_ROOT; }; + 38CF35B7146D36D70015A33B /* reason_phrase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = reason_phrase.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/reason_phrase.c"; sourceTree = SOURCE_ROOT; }; + 38CF35B8146D36D70015A33B /* reason_phrase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = reason_phrase.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/reason_phrase.h"; sourceTree = SOURCE_ROOT; }; + 38CF35B9146D36D70015A33B /* response.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = response.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/response.c"; sourceTree = SOURCE_ROOT; }; + 38CF35BA146D36D70015A33B /* response.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = response.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/response.h"; sourceTree = SOURCE_ROOT; }; + 38CF35BD146D36F00015A33B /* memorypool.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = memorypool.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/memorypool.c"; sourceTree = SOURCE_ROOT; }; + 38CF35BE146D36F00015A33B /* memorypool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memorypool.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/memorypool.h"; sourceTree = SOURCE_ROOT; }; + 38CF35C0146D37070015A33B /* connection.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = connection.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/connection.c"; sourceTree = SOURCE_ROOT; }; + 38CF35C1146D37070015A33B /* connection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = connection.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/connection.h"; sourceTree = SOURCE_ROOT; }; + 38CF35C3146D37180015A33B /* daemon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = daemon.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/daemon.c"; sourceTree = SOURCE_ROOT; }; + 38CF35C5146D372E0015A33B /* internal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = internal.c; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/internal.c"; sourceTree = SOURCE_ROOT; }; + 38CF35C8146D37610015A33B /* microhttpd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = microhttpd.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/include/microhttpd.h"; sourceTree = SOURCE_ROOT; }; + 38CF35C9146D37620015A33B /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = platform.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/include/platform.h"; sourceTree = SOURCE_ROOT; }; + 38CF35CA146D37620015A33B /* plibc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = plibc.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/include/plibc.h"; sourceTree = SOURCE_ROOT; }; + 38CF35CB146D377C0015A33B /* MHD_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MHD_config.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/MHD_config.h"; sourceTree = SOURCE_ROOT; }; + 38CF35CD146D37920015A33B /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = internal.h; path = "luasupport/HTTP/libmicrohttpd-0.9.0/src/daemon/internal.h"; sourceTree = SOURCE_ROOT; }; 38E018E1106CE91C00711E4D /* phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = phy.h; sourceTree = ""; }; 38E018E2106CE91C00711E4D /* phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = phy.c; sourceTree = ""; }; 38E018F0106CEA0F00711E4D /* sim_phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sim_phy.c; path = Network/Simulation/sim_phy.c; sourceTree = SOURCE_ROOT; }; 38E018F1106CEA0F00711E4D /* sim_phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sim_phy.h; path = Network/Simulation/sim_phy.h; sourceTree = SOURCE_ROOT; }; 38E01925106D09B600711E4D /* real_phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = real_phy.h; path = Network/Real/real_phy.h; sourceTree = SOURCE_ROOT; }; @@ -199,10 +254,11 @@ }; 08FB7795FE84155DC02AAC07 /* Source */ = { isa = PBXGroup; children = ( 08FB7796FE84155DC02AAC07 /* main.c */, + 38CF343A146D35850015A33B /* Logging */, 3877B3EE10459B370033A57B /* Node */, 38851C77104C469000A3B757 /* Lua */, 380074AD10209122007957AC /* Network */, ); name = Source; @@ -382,10 +438,12 @@ isa = PBXGroup; children = ( 38B4A38E105159E900B79D3C /* sysop.h */, 38B4A3841051562000B79D3C /* sysop.c */, 38851C8A104C46AC00A3B757 /* linit.c */, + 38CF343F146D35C00015A33B /* HTTP */, + 38CF359E146D35CA0015A33B /* JSON */, 38B4A4191051906900B79D3C /* timer */, 38BCE290105559220001F1EC /* firenet */, 38B354ED105EA9BB00A36F46 /* kdb */, ); path = luasupport; @@ -410,10 +468,121 @@ 38BCE294105559220001F1EC /* packet_lua.h */, ); name = firenet; path = luasupport/firenet; sourceTree = SOURCE_ROOT; + }; + 38CF343A146D35850015A33B /* Logging */ = { + isa = PBXGroup; + children = ( + 38CF343B146D35850015A33B /* firenetlog.c */, + 38CF343C146D35850015A33B /* firenetlog.h */, + ); + path = Logging; + sourceTree = SOURCE_ROOT; + }; + 38CF343F146D35C00015A33B /* HTTP */ = { + isa = PBXGroup; + children = ( + 38CF35B0146D367B0015A33B /* httplib.c */, + 38CF35B1146D367B0015A33B /* httplib.h */, + 38CF35B3146D367F0015A33B /* libmicrohttp */, + 38CF3440146D35C00015A33B /* COMS */, + 38CF352C146D35C10015A33B /* rest */, + ); + name = HTTP; + path = luasupport/HTTP; + sourceTree = SOURCE_ROOT; + }; + 38CF3440146D35C00015A33B /* COMS */ = { + isa = PBXGroup; + children = ( + 38CF3441146D35C00015A33B /* restcom.c */, + 38CF3442146D35C00015A33B /* restcom.h */, + 38CF3443146D35C00015A33B /* restcomQ.c */, + 38CF3444146D35C00015A33B /* restcomQ.h */, + ); + name = COMS; + path = luasupport/HTTP/COMS; + sourceTree = SOURCE_ROOT; + }; + 38CF352C146D35C10015A33B /* rest */ = { + isa = PBXGroup; + children = ( + 38CF352D146D35C10015A33B /* rest.c */, + 38CF352E146D35C10015A33B /* rest.h */, + 38CF352F146D35C10015A33B /* restclient.c */, + 38CF3530146D35C10015A33B /* restclient.h */, + ); + name = rest; + path = luasupport/HTTP/rest; + sourceTree = SOURCE_ROOT; + }; + 38CF359E146D35CA0015A33B /* JSON */ = { + isa = PBXGroup; + children = ( + 38CF359F146D35CA0015A33B /* JSON */, + 38CF35A7146D35CA0015A33B /* jsonlua.c */, + 38CF35A8146D35CA0015A33B /* jsonlua.h */, + ); + name = JSON; + path = luasupport/JSON; + sourceTree = SOURCE_ROOT; + }; + 38CF359F146D35CA0015A33B /* JSON */ = { + isa = PBXGroup; + children = ( + 38CF35A0146D35CA0015A33B /* jescape.c */, + 38CF35A1146D35CA0015A33B /* jescape.h */, + 38CF35A2146D35CA0015A33B /* qdj.c */, + 38CF35A3146D35CA0015A33B /* qdj.h */, + 38CF35A4146D35CA0015A33B /* qdj_token.c */, + 38CF35A5146D35CA0015A33B /* qdj_token.h */, + 38CF35A6146D35CA0015A33B /* qdj_util.c */, + ); + name = JSON; + path = luasupport/JSON/JSON; + sourceTree = SOURCE_ROOT; + }; + 38CF35B3146D367F0015A33B /* libmicrohttp */ = { + isa = PBXGroup; + children = ( + 38CF35C7146D37340015A33B /* Include */, + 38CF35B4146D36930015A33B /* SRC */, + ); + name = libmicrohttp; + sourceTree = ""; + }; + 38CF35B4146D36930015A33B /* SRC */ = { + isa = PBXGroup; + children = ( + 38CF35CD146D37920015A33B /* internal.h */, + 38CF35C5146D372E0015A33B /* internal.c */, + 38CF35C3146D37180015A33B /* daemon.c */, + 38CF35C0146D37070015A33B /* connection.c */, + 38CF35C1146D37070015A33B /* connection.h */, + 38CF35BD146D36F00015A33B /* memorypool.c */, + 38CF35BE146D36F00015A33B /* memorypool.h */, + 38CF35B7146D36D70015A33B /* reason_phrase.c */, + 38CF35B8146D36D70015A33B /* reason_phrase.h */, + 38CF35B9146D36D70015A33B /* response.c */, + 38CF35BA146D36D70015A33B /* response.h */, + 38CF35B5146D36BE0015A33B /* postprocessor.c */, + ); + name = SRC; + sourceTree = ""; + }; + 38CF35C7146D37340015A33B /* Include */ = { + isa = PBXGroup; + children = ( + 38CF35CB146D377C0015A33B /* MHD_config.h */, + 38CF35C8146D37610015A33B /* microhttpd.h */, + 38CF35C9146D37620015A33B /* platform.h */, + 38CF35CA146D37620015A33B /* plibc.h */, + ); + name = Include; + sourceTree = ""; }; 38E018D2106CE8C000711E4D /* Simulation */ = { isa = PBXGroup; children = ( 38E018F0106CEA0F00711E4D /* sim_phy.c */, @@ -559,10 +728,28 @@ 38B354F4105EA9BB00A36F46 /* tgkbhit.c in Sources */, 38E018E3106CE91C00711E4D /* phy.c in Sources */, 38E018F2106CEA0F00711E4D /* sim_phy.c in Sources */, 38E0192D106D0ACD00711E4D /* real_phy.c in Sources */, 38E01939106D0AD200711E4D /* bsdserial.c in Sources */, + 38CF343D146D35850015A33B /* firenetlog.c in Sources */, + 38CF3531146D35C20015A33B /* restcom.c in Sources */, + 38CF3532146D35C20015A33B /* restcomQ.c in Sources */, + 38CF359C146D35C20015A33B /* rest.c in Sources */, + 38CF359D146D35C20015A33B /* restclient.c in Sources */, + 38CF35A9146D35CA0015A33B /* jescape.c in Sources */, + 38CF35AA146D35CA0015A33B /* qdj.c in Sources */, + 38CF35AB146D35CA0015A33B /* qdj_token.c in Sources */, + 38CF35AC146D35CA0015A33B /* qdj_util.c in Sources */, + 38CF35AD146D35CA0015A33B /* jsonlua.c in Sources */, + 38CF35B2146D367B0015A33B /* httplib.c in Sources */, + 38CF35B6146D36BE0015A33B /* postprocessor.c in Sources */, + 38CF35BB146D36D70015A33B /* reason_phrase.c in Sources */, + 38CF35BC146D36D70015A33B /* response.c in Sources */, + 38CF35BF146D36F00015A33B /* memorypool.c in Sources */, + 38CF35C2146D37070015A33B /* connection.c in Sources */, + 38CF35C4146D37180015A33B /* daemon.c in Sources */, + 38CF35C6146D372E0015A33B /* internal.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ @@ -596,14 +783,15 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; - GCC_VERSION = 4.2; + GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-DBSD_VERSION"; PREBINDING = NO; SDKROOT = macosx10.5; }; name = Debug; }; Index: Hardware/.DS_Store ================================================================== --- Hardware/.DS_Store +++ Hardware/.DS_Store cannot compute difference between binary files Index: Hardware/Board/Firenet/.DS_Store ================================================================== --- Hardware/Board/Firenet/.DS_Store +++ Hardware/Board/Firenet/.DS_Store cannot compute difference between binary files Index: Hardware/Board/Firenet/Firenet.brd ================================================================== --- Hardware/Board/Firenet/Firenet.brd +++ Hardware/Board/Firenet/Firenet.brd cannot compute difference between binary files Index: Hardware/Board/Firenet/Firenet.pro ================================================================== --- Hardware/Board/Firenet/Firenet.pro +++ Hardware/Board/Firenet/Firenet.pro @@ -1,25 +1,25 @@ EAGLE AutoRouter Statistics: Job : /Users/jschimpf/Public/Firenet/Hardware/Board/Firenet/Firenet.brd -Start at : 12:18:46 (09/03/2010) -End at : 12:18:47 (09/03/2010) -Elapsed time : 00:00:00 - -Signals : 41 RoutingGrid: 50 mil Layers: 2 -Connections : 118 predefined: 116 ( 22 Vias ) - -Router memory : 27360 +Start at : 14:05:33 (26/06/2014) +End at : 14:05:34 (26/06/2014) +Elapsed time : 00:00:01 + +Signals : 45 RoutingGrid: 50 mil Layers: 2 +Connections : 126 predefined: 34 ( 0 Vias ) + +Router memory : 49536 Passname : Busses Route Optimize1 Optimize2 Optimize3 Optimize4 -Time per pass : 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 -Number of Ripups : 0 0 0 0 0 0 -max. Level : 0 0 0 0 0 0 -max. Total : 0 0 0 0 0 0 - -Routed : 0 2 2 2 2 2 -Vias : 0 1 0 0 0 0 -Resolution : 98.3 % 100.0 % 100.0 % 100.0 % 100.0 % 100.0 % - -Final : 99.2% finished +Time per pass : 00:00:00 00:00:00 00:00:00 00:00:01 00:00:00 00:00:00 +Number of Ripups : 0 5 0 0 0 0 +max. Level : 0 1 0 0 0 0 +max. Total : 0 2 0 0 0 0 + +Routed : 10 92 92 92 92 92 +Vias : 0 99 54 50 43 38 +Resolution : 34.9 % 100.0 % 100.0 % 100.0 % 100.0 % 100.0 % + +Final : 96.0% finished. Polygons may have fallen apart. Index: Hardware/Board/Firenet/Firenet.sch ================================================================== --- Hardware/Board/Firenet/Firenet.sch +++ Hardware/Board/Firenet/Firenet.sch cannot compute difference between binary files ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/LilyPad-Wearables.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/LilyPad-Wearables.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/LilyPad-Wearables.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/LilyPad-Wearables.lbr @@ -0,0 +1,1902 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Date: +>LAST_DATE_TIME +Sheet: +>SHEET +REV: +TITLE: +Document Number: + + + + + + + + + + + + + + +LilyPad + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>LEDs</b> +Standard schematic elements and footprints for 5mm, 3mm, 1206, and 0603 sized LEDs. 5mm - Spark Fun Electronics SKU : Comp-SBL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Simple sew-hole<br> +.1" diameter hole with 20mil annular ring + + + + + + + + + + + + + + + +.070" hole with 20mil annular ring + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/README Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/README ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/README +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/README @@ -0,0 +1,8 @@ +SparkFun Electronics' preferred foot prints using Eagle v6.0 or greater. We've spent an enormous amount of time creating and checking these footprints and parts. If you enjoy using this library, please buy one of our products at http://www.sparkfun.com. Please also note that we guarantee that there are some messed up footprints in this library. We've tried to note which are proven and tested, but by downloading these files, you acknowledge that you are using the files at your own risk. We cannot be held responsible for faulty PCBs. Always check your parts against a 1:1 printout. + +Licensing CC v3.0 Share-Alike (http://creativecommons.org/licenses/by-sa/3.0/) You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + +This is the complete SparkFun Electronics default foot prints for Eagle 6.0+. We switched to Eagle back in 2006 and have been extremely impressed with its ease of use and flexibility. As with any new software, it's like learning a new language and takes time. Do it. Eagle is great. If you need more information about how to use Eagle, checkout our Eagle Tutorials http://www.sparkfun.com/tutorials/108 + +The library associated with Eagle v5.11 and earlier is found here: +https://github.com/sparkfun/Old-SparkFun-Eagle-Library ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Aesthetics.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Aesthetics.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Aesthetics.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Aesthetics.lbr @@ -0,0 +1,64849 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find non-functional items- supply symbols, logos, notations, frame blocks, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Released under the Creative Commons Attribution Share-Alike 3.0 License +http://creativecommons.org/licenses/by-sa/3.0 +Designed by: + + + + + + + + + + + + + + + + +This is half of a tab, with fiducial reference mark, used to connect individual boards in a panel of PCBs. +Two of these half tabs, rotated in opposite directions, can be connected together to form a full tab, with two fiducial markings. Place along the edge of a panel of PCBs, this will allow for panels with boards not connected by v-scores, which allows for easier depanelization where there are overhanging components. It can also be used for designs too small to accomodate fiducial marks on individual boards. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +parkfun.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +IOIO-OTG label with exposed copper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +THIS IS A FOUR-LAYER BOARD! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Revision By: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ES + + +Released under the Creative Commons Attribution Share-Alike 3.0 License +http://creativecommons.org/licenses/by-sa/3.0 +Design by: + + + +>VALUE + + + + + + + + + + + +FIO_LOGO + + +Fabrickit logo + + +Fabrickit logotype + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +B +C +D +E +F +G +H +1 +2 +3 +4 +5 +H +G +F +E +D +C +B +A +5 +4 +3 +2 +1 +>DRAWING_NAME +>LAST_DATE_TIME +>SHEET +Drawn By: +Title: +Version: + + + + + + + + + + + + + + + + + + + + + + + + + + + +Date: +>LAST_DATE_TIME +Sheet: +>SHEET +REV: +TITLE: +>DRAWING_NAME +Released under the Creative Commons +Attribution Share-Alike 3.0 License +http://creativecommons.org/licenses/by-sa/3.0 +Design by: + + + + + + + + + + + + + + + +FIRST + + + + + + +OTL + + + + + + +SFE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +File Names +1. Directory names will be: "Thingy" + 1. No version number or production variation like 'Thingy with Chip Antenna' +2. File names are +1. Thingy-v10.sch +2. Thingy-v10.brd +3. Panel names are: Thingy-Panel-v10.brd +4. Minor versions are: Thingy-v11, v12, v13 +5. Major versions are v10, v20, v30. +6. Prototypes/New Products start in the sandbox then migrate to the store front specific category once listed in the storefront. +Schematic Layout +1. All parts stay on a 0.1" grid. Do not violate this rule. +2. All GND connections use the GND symbol. +3. All VCC, 5V, 3.3V etc. will use the appropriate power symbol. +4. Name all components with standard names (No dollars signs allowed!): +1. U# - ICs +2. Q# - Transistors +3. R#/C#/L# - Resistors/Capacitors/Inductors +4. Y# - Antennas and Crystals/Resonators +5. D# - LEDs and Diodes +6. S# - Switches +7. JP# - Connectors and Headers +8. 'U$3' is bad. If a part automatically puts a "$" in the name, it needs to be fixed. +5. Every schematic will have the part FRAME-LETTER added to it. +6. Use two fiducials on each board where applicable. Use your judgement. Small boards (less than 1x1") can skip this rule. +1. Add the part FIDUCIAL to the schematic. It's OK to use the smallest 1x2mm footprint. +7. If board is larger than 1", then seriously consider standoffs. Use your judgement. +1. Add part STANDOFF to the schematic. This part has a keepout layer to show you where the head of the standoff screw will be. +8. Add fiducials, standoff components and logo box to the lower right area of the schematic sheet. +9. Use dashed gray lines to separate a complex design into various smaller bits. +1. For example: charge circuit, accelerometer, microcontroller, etc. +PCB Layout +1. Create the board frame on a 0.1" grid. +1. Make the lower left corner start at 0,0. +2. Change the line width of the board frame to .008" +3. Board frame will be square unless called for by special requirements of the design. +5. All parts are place on a 0.05" grid. You may not break this rule unless you have a very good reason. +6. Use 10 mil (0.010") traces. +1. 8 mil traces can be used when necessary, 7 mil is absolute minimum. +2. Use thicker traces (as thick as possible) on power and charging traces. +1. 10 mil = 100mA +2. 12 mil = 500mA +7. Keep at least 8 mil of space between traces. +8. Route with straight lines and 45 degree corners. +1. Avoid 90 degree corners. +9. Route from the center of pads. Avoid routing into the pads - this causes traces to be not centered on a pad. +10. If something is soldered into a hole (header, connector, prototype vias, etc), use a via with a larger annular ring so that it is easier to solder. +11. Use ground pours on the top and bottom layers. +1. Change the Isolate setting on ground pours to 12 mil (0.012"). +12. Set the default via size to 0.020." +1. 0.015 is the smallest allowed via size. Only change from the default if absolutely necessary. +2. Tip: Via size is defined by the Drill parameter. +13. Add a Date Code on the bottom layer of the board +1. Revise the Date code on every minor and major revision! +14. In the PCB Layout Editor use the following colors: +1. White for top silkscreen (tPlace) +2. Yellow for bottom silkscreen (bPlace) +3. Mellow Yellow for tDocu +15. Every board should have the full SparkFun logo or at least the smaller SFE Flame +1. To do this, add the LOGO-SFE part to the schematic. Make sure to put this part in the lower right hand corner of the schematic. +16. Components that are grouped together in the schematic will be grouped together in the PCB layout. +17. The autorouter can only be used on prototypes. +1. Hand routing and touch-up of the autorouter is expected for production boards. +18. Make sure to load the SparkFun.dru for the DRC check. Don't use the default settings! +PCB Aesthetics (Labeling) +2. Label any LED with its purpose (power, status, D4, Lock, etc). +3. Label all connectors (VIN, Port1, Batt, 5-9V, etc). +4. Label pins where applicable (Tx, Rx, Power, +, Charger, etc). +5. Label switches and switch states (On/Off, USB, etc). +6. Makes sure labels are on a straight line +1. Add a line in the tDocu layer to make sure the labels line up. +New Footprints +1. All footprints need >Name (on the tNames layer). +1. Size should be 0.016" +2. All footprints need >Value (on the tValues layer). +1. Size should be 0.016" +3. All footprints need silkscreen or tDocu indicators showing mechanical sizes, dimensions or anything weird about the part. +5. Silkscreen within a footprint or board should NOT go over pads or metal that will be exposed. +6. Every new footprint and part will have a description containing part information (SparkFun SKU) and whether the footprint has been proven. +1. Open the library, click on the "device." Select the problem device. Click on "Prefix" button. Type the correct prefix letter. Save and update the library. +1. For normal prototyping vias, use 0.04" hole with a 0.074" diameter (not auto). +New Schematic Components +1. All schematic components need >Name and >Value (on the tNames/tValues layer). +1. Size should be 0.07" +2. Pin length on a component should be 'short' unless otherwise needed. +4. If it's a 2-layer board (it should be) then remove all internal layers. +1. See SparkFun tutorial: "Removing Layers in Eagle" +2. Give some space between the >Name and >Value identifier and the component frame. +Printing Schematics +2. Select 'Print to file (PDF)' as the printer +3. Make sure 'Rotate' is NOT checked +4. Make sure 'Caption' is NOT checked +5. Select Sheets : 'All' to print all sheets +6. Make sure scale factor is '1' +1. If you see any 'U$2' part indentifiers, do not print. See Schematic Layout rule #4-8. +SparkFun Eagle Rules +These are the rules that all engineers must follow at SparkFun when designing a PCB. +Last updated 4-26-2010 +1. All label text sizes will not be smaller than 0.04" for readability. 0.032" is the hard minimum. 0.05" is good and large. +3. Group power pins together on left side of component. Group I/O pins to right side. +4. Group banks of functionally similar pins together (all VCC, all GND, all NCs, I2C, analog, PORTC, etc). +10. Components must have correct values assigned to each part. For example a capacitor value would be: 0.1uF/25V +4. Origin of the footprint must be located in the center of the footprint. Where possible, the footprint should be symmetric on both axises. + + + + + + +StarBoard + + + + +>VALUE + + + + + +>VALUE + + + + + +>VALUE + + + + + +>VALUE + + + + + +>VALUE + + + + + +>VALUE + + + + + +>VALUE + + + + + +>VALUE + + + + + +>VALUE + + + + + + + +IOIO label + + +THIS IS A FOUR-LAYER BOARD! + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Revision By: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Isolated power supply + + +>VALUE + + + + +Isolated ground + + + + +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Creative Commons License summary + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + +<b>Fiducial Alignment Points</b> +Various fiducial points for machine vision alignment. + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fiducial/tab for panelizing boards. + + + + + + + + + + + + +Logo for the FIO products + + + + + + + + + + + + +<h3>Fabrick.it Logos</h3> + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>Fabrick.it Logotype</h3> + + + + + + + + + + + + + + + + + + + + + + +<b>Schematic Frame</b><p> +A3 Larger Frame + + + + + + + + + + + + +<b>Schematic Frame</b><p> +Standard 8.5x11 US Letter frame + + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Spark Fun Electronics PCB Logo</b> +This is the standard Spark Fun Electronics PCB logo. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Open Source Hardware Logo</b> This logo indicates the piece of hardware it is found on incorporates a OSHW license and/or adheres to the definition of open source hardware found here: http://freedomdefined.org/OSHW + + + + + + + + + + + + + + + + + + + + + + +<b>Description:</b> These are the default rules that SparkFun engineers must follow. We highly recommend following these rules as well. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + +<b>VNEG</b><br> +Generic negative voltage terminal. + + + + + + + + + + + + +<b>V_BATT</b><br> +Generic symbol for the battery input to a system. + + + + + + + + + + + + +1.0V supply symbol + + + + + + + + + + + + +1.8V supply symbol + + + + + + + + + + + + +2.8V supply symbol + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + + + + + + + + + + + + + +Vin supply symbol + + + + + + + + + + + + +Labels for the IOIO-OTG + + + + + + + + + + + + +Warning text which will appear on both the schematic<BR> +and the board file, notifying viewers that the design is a<br> +four-layer PCB. + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SFE Logo, flame only</h3><p> +This is the SparkFun flame logo. The logo on the schematic will always be<br> +the same size; the package variant is the height of the flame. Default layer<br> +for the logo on the board is tSilk. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SFE Logo, name and flame</h3><p> +This is the SparkFun full logo. The logo on the schematic will always be<br> +the same size; the package variant is the height of the flame part of the<br> +logo. Default layer for the logo on the board is tSilk. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SFE Logo, name only</h3><p> +This is the SparkFun name logo. The logo on the schematic will always be<br> +the same size; the package variant is the height of the flame part of the<br> +logo (or the height the flame <b>would</b> be, if it were drawn). Default +layer for the logo on the board is tSilk. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Schematic Frame</b><p> +Standard 11x14 US Ledger frame + + + + + + + + + + + + + + + + + + + + + + + + + +Logo for the RedBot board. Approx. .5" high, 1.4" wide + + + + + + + + + + + + +Isolated power supply + + + + + + + + + + + + +Isolated ground + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-AnalogIC.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-AnalogIC.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-AnalogIC.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-AnalogIC.lbr @@ -0,0 +1,3630 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find all manner of analog ICs- DACs, ADCs, video chips, op-amps, and others.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + +<b>Small Outline Package</b> Fits JEDEC packages (narrow SOIC-8) + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + +<b>Small Outline Package</b> .300 SIOC<p> +Source: http://www.maxim-ic.com/cgi-bin/packages?pkg=16%2FSOIC%2E300&Type=Max + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + +<b>TSOP16</b><p> +thin small outline package + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>24-pin QFN with Exposed Thermal pad</h3> +Parts that use this package: +<ul> +<li>A6282</li> +</ul> +Last modified: 8/20/10<br> +<br> +<b>***UNPROVEN***</b><BR> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Dual In Line Package</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Dual In Line</b> + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>8M, 8-Lead, 0.118" Wide, Miniature Small Outline Package</b><p> +MSOP<br> +8M-Package doc1097.pdf + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +<b>SMALL OUTLINE INTEGRATED CIRCUIT</b><p> +body 3.9 mm/JEDEC MS-012AA + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Small Outline package</b> 150 mil + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + +<b>Dual In Line Package</b> + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Small Outline Transistor</b> + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +<b>Shrink Small Outline Package</b><p> +package type SS + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + +<b>Dual In Line Package</b> + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>8M, 8-Lead, 0.118" Wide, Miniature Small Outline Package</b><p> +MSOP<br> +8M-Package doc1097.pdf + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +V+ +V- +EPAD + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +V+ +V- + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +- ++ + + + +>NAME +>VALUE + + + + + + + + +- ++ +>VALUE +>NAME + + + + + +- ++ ++V +GND + + + + + +>Name +>Value + + + + + +- ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +MSGEQ7 + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TS3A5017 + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +SN74LV4052APWR + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1k +1k + + + + +V+ +GND +OUT +>VALUE +>NAME + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE +GND PAD + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1k +1k + + + + + + +GND +OUT +>VALUE +>NAME +V+ + + +Vin+ +Vin- + + + + +Hall-effect-based isolated linear current sensor + + + + + + + + + + + + + + + + + + + + + + +RGB component to NTSC/PAL Encoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +8-bit parallel input DAC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +8-bit parallel input 2-output DAC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +24-bit capacitance to digital converter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +20-Bit, Pin-Programmable, Ultralow Power Sigma-Delta ADC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Rail-to-rail high current output op-amp + + + + + + + + + + + + + + + + + + + + + + + + +50MHz DDS waveform generator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Active noise cancellation chip.<br> +Stereo in, stereo out, two microphones.<br> +Single alkaline cell power.<br> +QFN-24 w/exposed pad. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Microchip 12-bit I2C DAC, SOT23-6 + + + + + + + + + + + + + + + + + + + + +Holtek voice modulator IC, COM-10574 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Jellybean op-amp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Low-voltage comparator + + + + + + + + + + + + + + + + + + + + + + + +Jellybean quad op-amp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Jellybean rail-to-rail output op-amp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Precision quad op-amp. I/O range includes negative rail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Dual low-voltage SPST analog switch + + + + + + + + + + + + + + + + + + + + + + +K-type thermocouple ADC, SPI output + + + + + + + + + + + + + + + + + + + + + +SPI controlled single digital potentiometer by Microchip<br /> +<br /> +PID: COM-10613 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SPI controlled dual digital potentiometer by Microchip + + + + + + + + + + + + + + + + + + + + + + + + + + + + +7-band graphic equalizer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +16-channel analog MUX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Dual-channel 4:1 analog mux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>General purpose bipolar Timer</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Single gate rail-to-rail output op-amp. Inputs extend 300mV past rails. + + + + + + + + + + + + + + + + + + + +Generic op-amp footprint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +24-bit ADC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Dual 4:1 analog mux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Texas Instrument NTSC/PAL Decoder +TI Part #TVP5150AM1 +*** UNPROVEN FOOTPRINT *** + +Decodes NTSC video signal to YCbCr 4:2:2 signal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Digital pot- up/down/increment control only + + + + + + + + + + + + + + + + + + + + + + +8:1 analog mux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Dual 4:1 analog mux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Dual 4:1 analog mux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Dual timer circuit (2 555 timers in one package) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +low voltage audio power amplifier + + + + + + + + + + + + + + + + + + + + + + +Low-noise, high-speed rail-to-rail CMOS op-amp + + + + + + + + + + + + + + + + + + + + + + + +High-side shunt current sense<BR> +2.7V-40V, 1% + + + + + + + + + + + + + + + + + + + +<H3>Headphone driver amp</h3><p> +Differential to single-ended audio amplifier. + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>1.4W MONO CLASS-D AUDIO POWER AMPLIFIER</b><p> + +The TPA2005D1 is a 1.4-W high efficiency filter-free class-D audio power amplifier in a BGA, QFN, or MSOP package that requires only three external components.<p> +Datasheet: <href="http://focus.ti.com/lit/ds/symlink/tpa2005d1.pdf">http://focus.ti.com/lit/ds/symlink/tpa2005d1.pdf</a> +<ul> +<li>1.4 W Into 8 ? From a 5V Supply at THD = 10% (Typ)</li> +<li>Maximum Battery Life and Minimum Heat</li> +<li>Efficiency With an 8-? Speaker: 84% at 400 mW, 79% at 100 mW</li> +<li>2.8-mA Quiescent Current</li> +<li>0.5-mA Shutdown Current</li> +<li>Ideal for Wireless or Cellular Handsets and PDAs</li> +<li>Capable of Driving an 8-? Speaker (2.5 V ? VDD ? 5.5 V) and a 4-? Speaker (2.5 V ? VDD ? 4.2 V)</li> +<li>Only Three External Components</li> +<li>Optimized PWM Output Stage Eliminates LC Output Filter</li> +<li>Internally Generated 250-kHz Switching Frequency Eliminates Capacitor and Resistor</li> +<li>Improved PSRR (-71 dB at 217 Hz) and Wide Supply Voltage (2.5 V to 5.5 V) Eliminates Need for a Voltage Regulator</li> +<li>Fully Differential Design Reduces RF Rectification and Eliminates Bypass Capacitor</li> +<li>Improved CMRR Eliminates Two Input Coupling Capacitors</li> +</ul> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Boards.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Boards.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Boards.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Boards.lbr @@ -0,0 +1,4455 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find boards and modules: Arduino footprints, breadboards, non-RF modules, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + +Full Arduino MEGA footprint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +24 +26 +28 +30 +32 +34 +36 +38 +40 +42 +44 +46 +50 +48 +52 +31 +33 +35 +37 +39 +41 +43 +45 +47 +49 +51 +53 +A0 +A1 +A2 +A3 +A4 +A5 +6 +A7 +A8 +A9 +A10 +A11 +A12 +A13 +A14 +A15 +ANALOG IN +COMMUNICATION +DIGITAL +GND +TX0 +RX0 +PWM +TX3 +RX3 +TX2 +RX2 +TX1 +RX1 +SDA +SCL +POWER +RESET +3.3V +5V +GND +GND +Vin +GND +AREF +5V + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Arduino Mega Pro footprint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +24 +26 +28 +30 +32 +34 +36 +38 +40 +42 +44 +46 +50 +48 +52 +31 +33 +35 +37 +39 +41 +43 +45 +47 +49 +51 +53 +A0 +A1 +A2 +A3 +A4 +A5 +6 +A7 +A8 +A9 +A10 +A11 +A12 +A13 +A14 +A15 +ANALOG IN +COMMUNICATION +DIGITAL +GND +TX0 +RX0 +PWM +TX3 +RX3 +TX2 +RX2 +TX1 +RX1 +SDA +SCL +POWER +RESET +3.3V +3.3V +GND +GND +Vin +GND +AREF +3.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GND +GND ++5V +RST +VIN ++3.3V +0 +1 +2 +3 +4 +5 +Analog In +GND +13 +12 +11 +AREF +10 +9 +8 +7 +6 +5 +4 +3 +2 +TX +RX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GND +GND ++5V +Reset +Vin ++3.3V +0 +1 +2 +3 +4 +5 +Analog In +GND +13 +12 +11 +Aref +10 +9 +8 +7 +6 +5 +4 +3 +2 +TX +RX +PWM +PWM +PWM +PWM +PWM +PWM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GND +5V +RST +VIN +3V3 +0 +1 +2 +3 +4 +5 +Analog In +GND +13 +12 +11 +AREF +10 +9 +8 +7 +6 +5 +4 +3 +2 +TX +RX +GND + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GND +GND ++5V +Reset +Vin ++3.3V +0 +1 +2 +3 +4 +5 +Analog In +GND +13 +12 +11 +Aref +10 +9 +8 +7 +6 +5 +4 +3 +2 +TX +RX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GND +GND +5V +RST +VIN +3.3V +0 +1 +2 +3 +4 +5 +Analog In +GND +13 +12 +11 +AREF +10 +9 +8 +7 +6 +5 +4 +3 +2 +TX +RX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GND +5V +RST +VIN +3V3 +0 +1 +2 +3 +4 +5 +Analog In +GND +13 +12 +11 +AREF +10 +9 +8 +7 +6 +5 +4 +3 +2 +TX +RX +GND + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. +You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). +This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" +to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. +Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, +if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +<h3>1X06-KIT</h3> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<h3>WIZnet W5100 Network Module with MagJack - WIZ811MJ</h3> +WIZnet's WIZ811MJ is a breakout board for the W5100 embedded TCP/IP chip. Also included on the board is a RJ-45 MagJack Connector (RJ45 with X'FMR).<br><br> + +See http://www.sparkfun.com/commerce/product_info.php?products_id=9473 for more documentation and info.<br> +<B>**UNPROVEN</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +J1 +J2 +WIZnet +WIZ811MJ REV1.0 +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SparkFun +AudioAmp +TPA2005D1 +OUT +IN ++ +- +- ++ +PWR +VOL ++ +- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Chan1 +Chan2 + + +LV +LV +HV +HV + + +Uno R3 Compatible Board Layout + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GND +GND ++5V +RST +VIN ++3.3V +0 +1 +2 +3 +4 +5 +Analog In +GND +13 +12 +11 +AREF +10 +9 +8 +7 +6 +5 +4 +3 +2 +TX +RX + + +SDA +SCL + + +IOREF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Logic Level Converter (3.3v - 5v) + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + +Arduino Mega board footprint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Arduino Pro Mini footprint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Arduino shield footprint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Breadboard Mini Self Adhesive</b><p> +This is the mechnical outline for the very small self adhesive breadboard from SparkFun Electronics. Good for very small proto areas. SKU : PRT-07916 + + + + + + + + + + + + +MicroSD footprint- NOT a socket for a MicroSD card! + + + + + + + + + + + + + + + + + + + + + + +Mechanical size of an SD/MMC card- NOT a socket! + + + + + + + + + + + + + + + + + + + + + + + +<h3>WIZnet W5100 Network Module with MagJack - WIZ811MJ</h3> +WIZnet's WIZ811MJ is a breakout board for the W5100 embedded TCP/IP chip. Also included on the board is a RJ-45 MagJack Connector (RJ45 with X'FMR).<br><br> + +See http://www.sparkfun.com/commerce/product_info.php?products_id=9473 for more documentation and info.<br> +<B>**UNPROVEN</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TCP/IP stack and phy in RJ-45 jack footprint + + + + + + + + + + + + + + + + + + + + + + +TCP/IP phy and stack module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Logic Level Converter (3.3v - 5v) + + +https://www.sparkfun.com/products/8745 + + + + + + + + + + + + + + + + + + + + + + + + + + +Shield form compatible with the Arduino Uno R3. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RASPBERRY PI I/O HEADER + +As defined for the Revistion 2 Pi. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Capacitors.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Capacitors.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Capacitors.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Capacitors.lbr @@ -0,0 +1,3338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + +>Name +>Value + + + + + + + + + +>Name +>Value + + +This is the "EZ" version of the .1" spaced ceramic thru-hole cap.<br> +It has reduced top mask to make it harder to put the component on the wrong side of the board. + + + + + + + +>Name +>Value + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>Name +>Value + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + +CTZ3 Series land pattern for variable capacitor - CTZ3E-50C-W1-PF + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<h3>CAP-PTH-SMALL-KIT</h3> +Commonly used for small ceramic capacitors. Like our 0.1uF (http://www.sparkfun.com/products/8375) or 22pF caps (http://www.sparkfun.com/products/8571).<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>Value +>Name + + + + + + +>Name +>Value + + + + + + + + + + + + +>Name +>Value + + +<b>Panasonic Aluminium Electrolytic Capacitor VS-Serie Package G</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +<b>Panasonic Aluminium Electrolytic Capacitor VS-Serie Package E</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +<b>Panasonic Aluminium Electrolytic Capacitor VS-Serie Package E</b> + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + +>Value +>Name + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +Type J2 package for SMD supercap PRT-10317 (p# EEC-EN0F204J2) + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<h3>EIA3528-KIT</h3> +<b>Warning:</b> This is the KIT version of this package. This package has longer pads to make hand soldering easier.<br> + + + + + + + + + + + +>NAME +>VALUE + + +<h3>EIA3216-KIT</h3> +<b>Warning:</b> This is the KIT version of this package. This package has longer pads to make hand soldering easier.<br> + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +>Name +>Value + + +<b>CAPACITOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1007 (2518 metric) package + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +1.3x1.3mm 1.7mm between. Fits Sumida CDRH2D09, CDRH2D18 inductor + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +Small solder jumper with big paste layer so it will short during reflow. + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +Small solder jumper with no paste layer so it will open after reflow. + + + + + + + + +>NAME +>VALUE + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>VALUE +PASTE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>VALUE +PASTE + + + + + + + + + + + + + +>Name +>Value + + +This is the "EZ" version of the standard .3" spaced resistor package.<br> +It has a reduced top mask to make it harder to install upside-down. + + + + + + + + + + +>Name +>Value + + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>CAPACITOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + + + + +1/6W Thru-hole Resistor - *UNPROVEN* + + + + + + +>NAME +>VALUE + + + + + + +>NAME +>VALUE + + + + +1/4W Resistor, 0.4" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +1/2W Resistor, 0.5" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +1W Resistor, 0.6" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +2W Resistor, 0.8" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +<h3>AXIAL-0.3-KIT</h3> + +Commonly used for 1/4W through-hole resistors. 0.3" pitch between holes.<br> +<br> + +<b>Warning:</b> This is the KIT version of the AXIAL-0.3 package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Chip Resistor Array</b> size 4 × 0603<p> +convex termination - Phycomp Components<br> +Source: RS Components + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Solder jumper, small, shorted with trace. No paste layer. Trace is cuttable. + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + +<b>Solder jumper</b> + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +<b>Solder jumper</b> + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + +For Coiltronics/Cooper DR1030 series inductors + + + + + + + + +>NAME +>VALUE + + + + + + +>Name +>Value + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +<b>Capacitor</b> +Standard 0603 ceramic capacitor, and 0.1" leaded capacitor. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Variable, non-polarized capacitor + + + + + + + + + + + + + + + + +<b>Capacitor Polarized</b> +These are standard SMD and PTH capacitors. Normally 10uF, 47uF, and 100uF in electrolytic and tantalum varieties. Always verify the external diameter of the through hole cap, it varies with capacity, voltage, and manufacturer. The EIA devices should be standard. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.1uF ceramic SMT<br> +CAP-00810- 25V +80%/-20% (0603)<br> +CAP-08390- 100V 10% (0603)<br> +CAP-08604- 25V 5% (0603)<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2.2uF Ceramic SMT<BR> +CAP-07888- 10V, 20% (0603)<br> +CAP-10009- 50V, 10% (1206) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.22uF ceramic SMT<br> +CAP-09885- 50V +80%/-20% (0603) + + + + + + + + + + + + + + + + + + + +100uF electrolytic SMT<br> +CAP-08362- 63V 20% + + + + + + + + + + + + + + + + + + + +10nF/.01uF/10000pF ceramic SMT<br> +CAP-00867- 50V 10% (0603) + + + + + + + + + + + + + + + + + + + +10uF Tantalum SMT<br> +CAP-00811- 16V 10% (EIA-3216) + + + + + + + + + + + + + + + + + + + +47uF Tantalum SMT<br> +CAP-08310- 10V 10% (EIA-3528) + + + + + + + + + + + + + + + + + + + +CAP-08139 - Retired + + + + + + +CAP-08708 - Retired + + + + + + +CAP-08494 - Retired + + + + + + +CAP-09114 + + + + + + +CAP-08390 + + + + + + + + + + + + + + + + + + + +CAP-08604 + + + + + + + + + + + + + + + + + + + +Ceramic<br> +Standard decoupling cap <br> +CAP-00810 + + + + + + + + + + + + + + + + + + + +CAP-08370 + + + + + + + + + + + + + + + + + + +CAP-07822 + + + + + + + + + + + + + + + + + + + +CAP-09998 - Retired + + + + + + +CAP-09885 + + + + + + + + + + + + + + + + + + + +CAP-10408 - Retired + + + + + + +CAP-08469 + + + + + + +CAP-08617 + + + + + + +CAP-09152 + + + + + + +CAP-08723 - Retired + + + + + + +CAP-07878 + + + + + + + + + + + + + + + + + + + +CAP-07879 + + + + + + + + + + + + + + + + + + + +CAP-09822 + + + + + + +CAP-10742 + + + + + + +CAP-00868 + + + + + + + + + + + + + + + + + + + +CAP-10222 + + + + + + +CAP-09201 + + + + + + + + + + + + + + + + + + + +CAP-08763 + + + + + + + + + + + + + + + + + + + +CAP-08514 + + + + + + +CAP-09538 + + + + + + +CAP-08070 + + + + + + +CAP-09181 + + + + + + +CAP-07883 + + + + + + +CAP-07890 + + + + + + +CAP-08702 + + + + + + +CAP-08498 + + + + + + +CAP-08439 + + + + + + +CAP-09297 + + + + + + +CAP-08362 + + + + + + +CAP-09827 + + + + + + +CAP-09183 + + + + + + +CAP-09321 + + + + + + +CAP-00867 + + + + + + + + + + + + + + + + + + + +CAP-09180 + + + + + + +CAP-00811<BR> +1206/EIA-3216 Tantalum capacitor + + + + + + + + + + + + + + + + + + + +CAP-09575 - Retired + + + + + + +CAP-08063 + + + + + + +CAP-08440 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ceramic<br> +CAP-10057 + + + + + + + + + + + + + + + + + + + +CAP-11015 + + + + + + + + + + + + + + + + + + + +CAP-11330 + + + + + + +CAP-09824 + + + + + + + + + + + + + + + + + + + +CAP-11056 - Retired + + + + + + +CAP-09137 + + + + + + + + + + + + + + + + + + + +CAP-08710 + + + + + + +CAP-11077 + + + + + + +CAP-07881 + + + + + + + + + + + + + + + + + + + +CAP-08267 + + + + + + + + + + + + + + + + + + + +CAP-09182 + + + + + + +CAP-07886 + + + + + + + + + + + + + + + + + + + +CAP-08064 + + + + + + + + + + + + + + + + + + + +CAP-09577 + + + + + + +CAP-09184 + + + + + + +CAP-07877 + + + + + + + + + + + + + + + + + + + +CAP-07888 + + + + + + + + + + + + + + + + + + + +CAP-08706 - Retired + + + + + + +CAP-10009 + + + + + + +CAP-08722 + + + + + + +CAP-10898 + + + + + + +CAP-09578 + + + + + + +CAP-07885 + + + + + + + + + + + + + + + + + + + +CAP-09128 + + + + + + +CAP-07876 + + + + + + + + + + + + + + + + + + + +CAP-10381 + + + + + + + + + + + + + + + + + + + +CAP-09576 + + + + + + +CAP-08618 + + + + + + +Ceramic<BR> +CAP-08402 + + + + + + + + + + + + + + + + + + + +CAP-09989 + + + + + + +CAP-09633 + + + + + + + + + + + + + + + + + + + +CAP-08365 - Retired + + + + + + +CAP-10108 + + + + + + +CAP-07887 + + + + + + +CAP-10142 + + + + + + +CAP-09017 + + + + + + +CAP-08826 + + + + + + +CAP-10986 + + + + + + +CAP-11378 + + + + + + + + + + + + + + + + + + + +CAP-07880 + + + + + + + + + + + + + + + + + + + +CAP-10300 + + + + + + +CAP-08313 + + + + + + +CAP-08280 + + + + + + + + + + + + + + + + + + + +CAP-08709 + + + + + + +CAP-09041 + + + + + + +CAP-07884 + + + + + + +CAP-08700 + + + + + + +CAP-08408 + + + + + + +CAP-10043 + + + + + + +CAP-08088 + + + + + + +CAP-08605 + + + + + + +CAP-09202 + + + + + + +CAP-09326 + + + + + + +CAP-08913 + + + + + + + + + + + + + + + + + + + +CAP-08310 + + + + + + +CAP-08699 + + + + + + +CAP-08478 + + + + + + +CAP-10547 + + + + + + +CAP-08749 + + + + + + + + + + + + + + + + + + + +CAP-09983 + + + + + + +CAP-08429 - Retired + + + + + + +CAP-08620 - Retired + + + + + + +CAP-09232 + + + + + + +CAP-08472 + + + + + + +CAP-08804 + + + + + + +CAP-08312 + + + + + + +CAP-10790 + + + + + + +CAP-08081 + + + + + + +CAP-08309 + + + + + + +CAP-09341 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Connectors.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Connectors.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Connectors.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Connectors.lbr @@ -0,0 +1,27049 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. +You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). +This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" +to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. +Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, +if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +<h3>1X06-KIT</h3> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + +V+ +V- + + + + + +Fits Mouser Part#5227161 + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +Board +25 +13 +14 +M25D +Board + + + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +13 +14 +25 +2,54 +M25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +13 +14 +25 +2,54 +M25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 + + + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 + + + + + + + + + + + + + + + + + + + + +4-pin DS touch screen connector + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>Name +>VALUE + + + + + + + + + + + + + + + + +>Name +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +Board +F25D +13 +25 +14 +Board + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +13 +14 +25 +2,54 +F25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +13 +14 +25 +2,54 +F25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +3 +4 +5 +6 +7 +8 +9 +>NAME +>VALUE +10 +11 +12 +13 +25 +24 +23 +22 +21 +20 +19 +18 +17 +16 +15 +14 + + + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +3 +4 +5 +6 +7 +8 +9 +>NAME +>VALUE +10 +11 +12 +13 +25 +24 +23 +22 +21 +20 +19 +18 +17 +16 +15 +14 + + +<b>SUB-D</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +3 +4 +5 +6 +7 +8 +9 +>NAME +>VALUE +10 +11 +12 +13 +25 +24 +23 +22 +21 +20 +19 +18 +17 +16 +15 +14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +GRN +BLK + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +F + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +M + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +2mm SMD side-entry connector. tDocu layer indicates the actual physical plastic housing. +/- indicate SparkFun standard batteries and wiring. + + + + + + + + + + + + + +>Name +>Value ++ +- + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. +You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). +This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" +to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. +Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, +if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>Name +>Value ++ +- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>Name +>Value ++ +- + + +<H3>JST-2-PTH-KIT</h3> +2-Pin JST, through-hole connector<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + +>Name +>Value ++ +- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. +You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). +This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" +to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. +Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, +if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>Name +>Value ++ +- +S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. +You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). +This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" +to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. +Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, +if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>Name +>Value ++ +- +S +S + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +No outline in silkscreen + + + + + +>NAME +>VALUE + + + + + + + +Header for OS4000-T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. +You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). +This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" +to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. +Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, +if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. +You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). +This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" +to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. +Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, +if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. +You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). +This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" +to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. +Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, +if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. +You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). +This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" +to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. +Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, +if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +thru-hole vertical Female Header +used as an SMD part +(placed horizontally, at board's edge) + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Package for 4UCONN part #19686 *UNPROVEN* + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +JST crimp connector: 1mm pitch, top entry + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +Header for the OS4000-T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + +<h3>PoE Compatible MagJack</h3> +This RJ-45 jack with magnetics has 10 pins, gives you access to the unused twisted pair (10BASE-T, and 100BASE-T) which usually carries power in a power-over-ethernet system. +<br> +<br> +<b>Footprint is Proven</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +DIN-5 + + + + + + + + + + + + +DIN-5 + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +3.3V +CE +CS +DR1 +CLK1 +DATA +GND + + + + + + + + + +OBDII Connector footprint, for your late model automotive needs + + + + + + + + + + + + + + + + +1 +16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4-Pin connector for PSP touch screen + + + + + + + + + + + + +>NAME +>VALUE + + +Footprint for RJ9 simple connector. Common with telephone handsets. SparkFun SKU: PRT-08694 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Description:</b> S..m..r..t. I am so smrt! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +Card inserts this direction, up side down +Card Mag Stripe + + + + +<b>SMA Antenna Connector</b><p> +This is a footprint for an edge mount RF antenna. Works pretty well with SMA type connectors but may also work with other edge mount RF connectors. Keep in mind, these edge mount connectors assume you are using a 0.062" PCB thickness. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>USB Series A Hole Mounted</b> + + + + + + + + + + + + + + + + + + + + + +>NAME +PCB Edge + + + + +<b>USB Series A Surface Mounted</b> + + + + + + + + + + + + + + + + +>NAME + + +<b>USB Series Mini-B Hole Mounted</b> + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + +USB Series B Surface Mounted + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + +<b>USB Series Mini-B Surface Mounted</b> + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + +<b>USB Series B Hole Mounted</b> + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +<b>USB Series Mini-B Surface Mounted</b> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>Name +>Value + + +<b>USB Series B Hole Mounted</b> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Micro USB Package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +Package for an SMT Micro-B connector. Digikey part #H11613-ND +*** Unproven*** + + + + + + + + + +>NAME +>VALUE + + +<h3>Micro B Right Angle through-hole PCB plug connector</h3> +<b>**Unproven**</b><br> +See digikey part #H11673TR-ND + + + + + + + + + + + + + + + +>Name +>Value + + +<h3>Micro B USB Plug Assembly - Straight Through-hole</h3> +<b>**UNPROVEN**</b><Br> +See Digikey part #H11497-ND + + + + + + + + + + + +>Name +>Value + + +<h3>USB Micro-B Plug Connector</h3> +Manufacturer part #: ZX80-B-5SA<br> +Manufacturer: Hirose<br><br> +<b>***Unproven***</b> (Passed 1:1 printout test though!) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + +OLD Production Socket. DO NOT USE for production boards. + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + +<b>26-pin FFC connector</b> +<br>See 4UCONN part #08630 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Connector should be used only with 1.2mm PCB thickness. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +25 +26 +50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +25 +26 +50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +micro USB AB connector for OTG support. 5-pins: USBVCC, GND, D+, D-, USBID. Can act as host or device + + + + + + + + + +PCB Front + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +4UConn part#19646 + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +card lock position + + + + + + + + + + + + + + + + + + + + + + + + + + +INSERT + + + + + + + + + + + + + + + + + + +Package for devices meant to mate to an FTDI connector. + + + + + + + + + + +GRN +BLK +TXO +RXI +VCC +DTR +GND +CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + +4UCON 15881<br> +Male .1" spaced SMT<br> +Keying posts into board + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +PCB Edge + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +British Telecom connector, used for Vernier sensors (analog) + + + + + + + + + + + + + + + + + + + + + +>NAME + + + +British Telecom connector, used for Vernier sensors (digital) + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +PCB Front + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<h3>SMD 3-Pin Male Right-Angle Header w/ Alignment posts</h3> + +Matches 4UCONN part # 11026<br> +<a href="http://www.4uconnector.com/online/object/4udrawing/11026.pdf">http://www.4uconnector.com/online/object/4udrawing/11026.pdf</a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +PCB Front + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Works with part #579 (https://www.sparkfun.com/products/579). Commonly used on GPS modules EM408, EM406 and GP-635T. Also compatible with cable 9123 (https://www.sparkfun.com/products/9123) and cable 574 (https://www.sparkfun.com/products/574). + + + + + + + + + + + + + + +>Name +>VALUE + + +PCB Front + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//kentro/work/Production/AOI Parts/Tyler/Breadboard power 5v/barreljack.bmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//kentro/work/Production/AOI Parts/Tyler/Breadboard power 5v/barreljack.bmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +L +R + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + +>NAME +>VALUE +MOSI +RESET +SCK +MISO ++5 +GND + + + + + + + + + + + + +>NAME +>VALUE +MOSI +RESET +SCK +MISO ++5 +GND +GND +GND +GND + + + + + + + + + + + + + + + + +>NAME +>VALUE +MOSI +RESET +SCK +MISO ++5 +GND +GND +GND +GND + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>VALUE +>NAME + + + + + + +>NAME +>VALUE +GND +OUT + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + +littleBits +Female + + + + + + + + + +littleBits +Male + + + + + + + + + +>NAME +LB MALE + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE +3.3V +CE +CS +DR1 +CLK1 +DATA +GND + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +>Name +>Value + + + + + + + + + + + + +>NAME + + + + + +USB + + + + + + + + + +USB + + + + + + + + + + + +USB + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + +OPEN WHEN +CONNECTED + + +USB AB, 5-pins: USBVCC, GND, D+, D-, USBID. + + + +USBAB + + + + + + + + + + + + + + + + + + + + +>Name + + +>Value + + + + + + + + + + + + +>VALUE +>NAME + + + + +4-Pin + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +1 +2 +3 +4 +5 +6 + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1/4" TRS Jack - with normals on each conductor.. + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +FTDI connector footprints + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +DB9 labeled for Atari joystick + + + + + + + + + + + + + + + + + + + + + + + +<b>ATX24 Pin Power Supply Connector</b> This is a good connector for connecting a computer power supply to a PCB. It's massive, but provides many amps of power at 5V and 12V. SKU: PRT-09498 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>3.5mm Audio Jack</b> +Simple 3.5mm common PCB mount audio jack. SKU: PRT-08032 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Stereo audio jack with bypass switches.<br> +SMT version used on LilyPad MP3 board.<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +AVR ISP 6-pin inline header + + + + + + + + + + + + + + + + + + + + +<b>AVR ISP 6 Pin</b> +This is the reduced ISP connector for AVR programming. Common on Arduino. This footprint will take up less PCB space and can be used with a 10-pin to 6-pin adapter such as SKU: BOB-08508 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>AVR 10-pin ICSP Header</b> +This is the standard AVR In Circuit Serial Programming header. Minimal, but includes pin one indicator. Works with standard Olimex programmers. Also look for the 6-pin reduced version. Spark Fun Electronics SKU: PRT-00778 + + + + + + + + + + + + + + + + + + + + + + + + +<b>AVR 10-pin ICSP Header</b> +This is the standard AVR In Circuit Serial Programming header. Minimal, but includes pin one indicator. Works with standard Olimex programmers. Also look for the 6-pin reduced version. Spark Fun Electronics SKU: PRT-00778 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Through-hole banana jack + + + + + + + + + + + + + + + +9V board-mount battery cradle + + + + + + + + + + + + + + + + + + +BNC Connector, Mouser Part# 5227161 + + + + + + + + + + + + + + + + +<b>DB9 Connector</b> +Standard DB9 (D-Sub 9) serial connector. Can be used for CAN bus as well as RS485 and RS232. Footprint production proven. Spark Fun Electronics SKU : PRT-00429 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Various DB25 connectors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Mini-DIN7 connector + + + + + + + + + + + + + + + + + + + + + +4-pin DS touch screen connector (LCD-09105) + + + + + + + + + + + + + + + + + + +<b>EB-85A Connector</b> +Proven layout and schematic for ETek 5Hz GPS receiver connector. Spark Fun Electronics SKU : GPS-08297 + + + + + + + + + + + + + + + + + + + + + + +<b>EM406 GPS Connector</b> +Proven layout and schematic for EM406 connector. Spark Fun Electronics SKU : GPS-00579 + + + + + + + + + + + + + + + + + + + + +This is the mating connector for the EM408 GPS receiver. The EM408 connects to the board via a cable, +this connector footprint does not include the outline of the receiver. + +You should include the "EM408_Outline" device in your schematic if you are to use the EM408 in your design. + + + + + + + + + + + + + + + + + + + +25 Pin male connector. PCB edge mount for regular PCB thicknesses. This connector will connect directly to the back of a PC parallel port or through a normal DB25 extension cable (M/F). SKU: PRT-08287 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FTDI Basic header with labels + + + + + + + + + + + + + + + + + + + + +<b>iPod Female Connector</b> +This is the connector found inside current iPods. Use this connector to attach to iPod accessories like Nike+iPods, etc. Schematic and footprint are not yet production proven. Spark Fun Electronics SKU : DEV-08035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>iPod Male Connector</b> +This is the connector that will insert into an iPods. Use this connector to gain access to the various iPod pins. Schematic and footprint are not yet production proven. The PCB thickness must be more thin than the standard 0.062" FR4. Spark Fun Electronics SKU : DEV-00633 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Connector for Kent display (LCD-09560) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Female end for LittleBits boards + + + + + + + + + + + + + + + + + +Male end for LittleBits boards + + + + + + + + + + + + + + + + + +Connector used in LittleBits + + + + + + + + + + + + + + + + + +<b>Header 1</b> +Standard 1-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Standard 2-pin 0.1" header. Use with <br> +- straight break away headers ( PRT-00116)<br> +- right angle break away headers (PRT-00553)<br> +- swiss pins (PRT-00743)<br> +- machine pins (PRT-00117)<br> +- female headers (PRT-00115)<br><br> + + Molex polarized connector foot print use with: PRT-08233 with associated crimp pins and housings.<br><br> + +2.54_SCREWTERM for use with PRT-10571.<br><br> + +3.5mm Screw Terminal footprints for PRT-08084<br><br> + +5mm Screw Terminal footprints for use with PRT-08433 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 3</b> +Standard 3-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). Molex polarized connector foot print use with SKU : PRT-08232 with associated crimp pins and housings. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 4</b> +Standard 4-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). Molex polarized connector foot print use with SKU : PRT-08231 with associated crimp pins and housings. 1MM SMD Version SKU: PRT-10208 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.1" header, two rows of four. + + + + + + + + + + + + + + + + + + + + + + +<b>Header 5</b> +Standard 5-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). Molex polarized connector foot print use with SKU : PRT-08230 with associated crimp pins and housings. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 5x2</b> +Standard 10-pin dual row 0.1" header. Commonly used with AVR-ISP. Use with Spark Fun Electronics SKU: PRT-00778 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 6</b><br> +Standard 6-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). Molex polarized connector foot print use with SKU : PRT-08094 with associated crimp pins and housings.<p> + + + +NOTES ON THE VARIANTS LOCK and LOCK_LONGPADS... +This footprint was designed to help hold the alignment of a through-hole component (i.e. 6-pin header) while soldering it into place. You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is a perfectly straight line). This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" to hold the component in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also,if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment +will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 7</b> +Standard 7-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). NOTES ON THE VARIANTS LOCK and LOCK_LONGPADS... This footprint was designed to help hold the alignment of a through-hole component (i.e. 7-pin header) while soldering it into place. You may notice that each hole has been shifted either up or down by 0.005 of an inch from it's more standard position (which is usually a perfectly straight line). This slight alteration caused the pins (the squares in the middle) to touch the edges of the holes. Because they are alternating, it causes a "brace" to hold the header in place. 0.005 has proven to be the perfect amount of "off-center" position when using our standard breakaway headers. Although looks a little odd when you look at the bare footprint, once you have a header in there, the alteration is very hard to notice. Also, if you push a header all the way into place, it is covered up entirely on the bottom side. This idea of altering the position of holes to aid alignment will be further integrated into the Sparkfun Library for other footprints. It can help hold any component with 3 or more connection pins. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 8</b> +Standard 8-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.1" headers, two rows of 8 each + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 9</b> +Standard 9-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 10</b> +Standard 10-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +This was SPECIALLY designed to be used with our Graphic LCD Backpack. Be sure you want to use this! It is not only staggered on each line of header holes, but IT IS ALSO offset of the center point of the top and bottom lines by 5 mil. This causes the headers to lock into place on the "standard" footprint on the LCD screen. The extra squares on the tdocu layer are there simply to reference other pins (if you were to actually populate a longer header than ten long - this is what we do with the backpacks). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 12</b> +Standard 12-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +13-pin single row .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 14</b> +Standard 14-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 15</b> +Standard 15-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x17 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x18 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x20 .1" header<br> +This is just like the LOCK variant in that the holes are staggared by 5 mil, but except for the last two holes. They are not altered from the "standard" footprint layout. This is used for a special purpose on the layout of our Graphic LCD Backpack. Make sure you want to use this device before selecting it for you project! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x24 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x25 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x27 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x29 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x30 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x40 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RJ-45 with LEDs + + + + + + + + + + + + + + + + + + + + + + + + + + +RJ-45 with LEDs + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>PoE compatible MagJack</h3> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MIDI connector with strain relief (DIN-5 female) + + + + + + + + + + + + + + + + + + + +MIDI connector, no strain relieve (DIN-5 female) + + + + + + + + + + + + + + + + + + + +<b>mini DIN 6 Connector</b> +Commonly found on the back of a computer for PS2 keyboard and mice. Schematic and footprint are proven. Spark Fun Electronics SKU : PRT-08509 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +OBDII connector footprint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ISCP Programming connector for UAV, UBW Kit, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PIC-ICSP-Mini</b> +Miniature 5-pin connection for temporary programming of PICs. Use this device in your design to save space. Program the PIC with this adapter Spark Fun Electronics SKU : BOB-00194 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Power Jack</b> +This is the standard 5.5mm barrel jack for power.<br> +The PTH is the most common, proven, reliable, footprint.<br> +The Slot footprint only works if the mill layer is transmitted to the PCB fab house so be warned.<br> +Spark Fun Electronics SKU : PRT-00119<br> +SMT: CONN-08106<br> + +Mating wall wart : TOL-00298 (and others) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Connector for LCD-08335 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4-Pin Connector for PSP Touch Screen (LCD-08448) + + + + + + + + + + + + + + + + + + +RJ9 connector (e.g., phone handsets) + + + + + + + + + + + + + + + + + + +<b>RJ11 Jack</b> +Simple 6 pin RJ11 jack. Commonly found on CAT3 devices and Microchip programmers. SKU: PRT-00132 + + + + + + + + + + + + + + + + + + + + +<b>RJ45 Jack</b> +Simple RJ45, 8-pin connection - connector for common Cat5, Cat5e, and Cat6 Ethernet cables. Footprint not yet proven in production. Connector sku is PRT-00643; Breakout PCB sku is BOB-00716. + + + + + + + + + + + + + + + + + + + + + + +ScreenKey mating connector- PRT-09586 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SIM Socket</b> +Socket for SIM cellular cards. Schematic element and footprint production proven. Spark Fun Electronics SKU : PRT-00548 + + + + + + + + + + + + + + + + + + + + + + +Alternate SIM card socket. + + + + + + + + + + + + + + + + + + + + + + +Alternate SIM card socket + + + + + + + + + + + + + + + + + + + + +Smart card socket- PRT-09368 + + + + + + + + + + + + + + + + + + + + + + + + +<b>SMA Antenna Connector</b> +End launch SMA connector. The paste layer has been removed so that the connector can be hand soldered onto the board after reflow. + + + + + + + + + + + + + + + + + + + +<h3>StarBoard ground Pad</h3> +Starboard pads sans the star cutout in top layer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>StarbBoard Power pad</h3> +Power pads are designated by the star cutout in the top layer. + + + + + + + + + + + + + + + + + + + + + + + +Nintendo DS touch screen connector LCD-09105 + + + + + + + + + + + + + + + + + + +SMD antenna connector- WRL-09144 + + + + + + + + + + + + + + + + + +<b>USB Connectors</b> +<p>USB-B-PTH is fully proven SKU : PRT-00139/CONN-08278 +<p>USB-miniB is fully proven SKU : PRT-00587 +<p>USB-A-PCB is untested. +<p>USB-A-H is throughly reviewed, but untested. Spark Fun Electronics SKU : PRT-00437 +<p>USB-B-SMT is throughly reviewed, but untested. Needs silkscreen touching up. +<p>USB-A-S has not been used/tested +<p>USB-MB-H has not been used/tested +<P>USB-MICROB has been used. CONN-09505 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>USB+Shield</h3> +USB connector with shield pins connectable + + + + + + + + + + + + + + + + + + + + +<b>Mini-USB "B" connector with 5th pin broken out.</b><p> +Created new symbol breaking out 5th "ID" pin in mini/micro USB connector spec. See: http://en.wikipedia.org/wiki/Mini_usb#Cables. Uses same footprint as 4-pin symbol.<p> + + +Also added pins to connect to mounting / shield pads if required (probably not generally needed as signals aren't shielded once they leave the connector). + + + + + + + + + + + + + + + + + + + + + + + +<h3>USB Micro-B Plug</h3> +Comes in a variety of packages. Check out Hirose's ZX-x0 line: http://www.hirose.co.jp/cataloge_hp/e24200011.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>microSD Socket</b> +Push-push type uSD socket. Schematic element and footprint production proven. Spark Fun Electronics SKU : PRT-00127. tDoc lines correctly indicate media card edge positions when inserting (unlocked, locked, depressed). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +connector for 10x2 16-segment E-paper Display (LCD-10150)<br> +<b>***Unproven!!!***</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +XLR connector + + + + + + + + + + + + + + + + + + +Lever-action ZIF socket for 28-pin ICs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Lever-action ZIF socket for 40-pin ICs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Male connector for the Zune media player. UNPROVEN FOOTPRINT! This connector must be used only with a 1.2mm PCB thickness. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x16 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1x19 .1" header + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Header 11</b> +Standard 11-pin 0.1" header. Use with straight break away headers (SKU : PRT-00116), right angle break away headers (PRT-00553), swiss pins (PRT-00743), machine pins (PRT-00117), and female headers (PRT-00115). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SD Memory Card Connector, push-push normal type, CD enable, WP enable + + + + + + + + + + + + + + + + + + + + + + + + + + + +Connector which mates to FTDI basic or FTDI cable. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +This is a USB AB connector that is compatible with USB OTG. i.e. this connector can serve as a host or device + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +DB15 / VGA right angle through-hole female connector. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2x3 .1" header.<br> +Shrouded, with keying- CONN-10681<br> +SMT- CONN-11415<br> +Pogo pins- HW-11044 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Audio jack - 3.5mm TRRS variety - two rings. + + + + + + + + + + + + + + + + + + +Mates to single-cell LiPo batteries.<br> +CONN-08352 + + + + + + + + + + + + + + + + + + + + +0.1" spaced headers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1/4" TRS jack, horizontal +Production SKU: COM-11144 + +Footprint unproven - datasheet and part seem to be slightly different + + + + + + + + + + + + + + + + + + + + + + +1/4" TRS jack, vertical +Production SKU: COM-11152 + +Footprint unproven - datasheet and part seem to be slightly different + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-DigitalIC.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-DigitalIC.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-DigitalIC.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-DigitalIC.lbr @@ -0,0 +1,23125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find all manner of digital ICs- microcontrollers, memory chips, logic chips, FPGAs, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + +<b>Small Outline Package</b> Fits JEDEC packages (narrow SOIC-8) + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + +Fits EIAJ packages (wide version of the SOIC-8). + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + +<B>Thin Plasic Quad Flat Package</B> Grid 0.8 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +64-Lead TQFP Plastic Thin Quad Flatpack - 10x10x1mm Body, 2mmFP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +64-Lead TQFP Plastic Thin Quad Flatpack - 14x14x1mm Body + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>32M1-A</b> Micro Lead Frame package (MLF) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>100-lead Thin Quad Flat Pack Package Outline</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Dual In Line</b> + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +28-pin "EZ" package.<br> +Pin 28 is clipped during kitting to key the chip.<br> +Pins are spaced a little wider than normal to ease insertion.<br> +Top mask deleted so solder can ONLY be applied on bottom. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Standard 28-pin DIP package.<br> +IC needs to have legs bent before insertion. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<h3>DIL-28-3-SIMON-KIT</h3> +28-pin DIL package<br> +Used for the ATmega328 on our Simon Kit<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>MLP 28</b><p> +Source: www.silabs.com .. CP2101.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Small Shrink Outline Package</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Quad Flat Package</b> 32 LD LQFP<p> +Source: ds232b12.pdf<br> +http://www.ftdichip.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +X +Y +Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Dual In Line Package: 40-pin PDIP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +PQFP208 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>QFN 32-Pin package w/ Thermal Pad</h3> +<b>***Unproven***</b> +<br><br> +<B>Applicable Parts:</b> +<ul><li>TLC5940</ul> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Dual In Line Package</b> + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +<b>Small Outline Transistor</b> + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + +<B>Small Outline Wide Plastic Gull Wing</B><p> +300-mil body, package type SO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>QFP64</b><p> +shrink quad flat pack, square + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Dual In Line</b> + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +300-mil body, package type SO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Dual In Line Package</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Shrink Small Outline Package</b><p> +package type SS + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + +64-Lead TQFP Plastic Thin Quad Flatpack - 10x10x1mm Body, 2mmFP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<H1>Quad Flat No Leads package, 28 pin</H1> + <tr +<table align=left> + <tr><td><h2>Change Log</h2></td></tr> + <tr> + <th>Date</th><th>Author</th><th>Change</th> + </tr> + <tr> + <td>March 23, 2010</td><td>joe@scantool.net</td><td>Added t-keepout layer.</td> + </tr> + <tr> + <td>March 22, 2010</td><td>engineering@scantool.net</td><td>Resized per PIC24HJ64GPx02 (QFN-S) datasheet. Fixed tStop and tCream layers. Redesigned silkscreen.</td> + </tr> + <tr> + <td>March 17, 2010</td><td>vitaliy@scantool.net</td><td>Verified package.</td> + </tr> + <tr> + <td>March 17, 2010</td><td>jason@scantool.net</td><td>Increased silkscreen ratio.</td> + </tr> + <tr> + <td>March 02, 2010</td><td>jason@scantool.net</td><td>Copied from Microchip Library.</td> + </tr> +</table> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + +<h3>SOT143</h3> +Package is used for the STM811 (also APX811)<br> +<br> +<b>Proven</b> + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + +<b>Thin Quad Flat Pack</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<h3>LQFP-80</h3> +80-pin, 10x10mm, 0.4mm pitch, SMD package<br> +Used for WIZnet W5100 (COM-09471)<br> +http://www.sparkfun.com/products/9471 +<br><br> +<b>***UNPROVEN***</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>14-pin SOP-14 package</h3> +Used on WS2801 RGB controller + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SOT353 aka SC70-5</h3> +Used on single circuit logic gates + + + + + + + + + + + + +>Value +>Name + + + + + + + +<b>Leadless Chip Carrier</b><p> Ceramic Package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Small Outline package</b> 150 mil + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + +<b>TSOP16</b><p> +thin small outline package + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<h3>24-pin TSSOP with Exposed Thermal Pad</h3> +Used on: <ul> +<li>Allegro A6282 16-bit LED driver</li> +</ul> +Last modified: 8/21/10<br> +<b>***Unproven***</b><br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>24-pin QFN with Exposed Thermal pad</h3> +Parts that use this package: +<ul> +<li>A6282</li> +</ul> +Last modified: 8/20/10<br> +<br> +<b>***UNPROVEN***</b><BR> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Small Outline Package</b> .300 SIOC<p> +Source: http://www.maxim-ic.com/cgi-bin/packages?pkg=16%2FSOIC%2E300&Type=Max + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SMALL OUTLINE PACKAGE</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 + + + + + + + + + + + + + + + + + + + + + + +<b>SMALL OUTLINE PACKAGE</b> + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +<b>Dual In Line Package</b> 0.3 inch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Dual In Line Package</b> 0.4 inch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Dual In Line Package</b> 0.6 inch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Dual In Line Package</b> 0.9 inch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +20-pin .65mm pitch/5.2mm body SMT + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +Dual inline 40 pin package for mbed microcontroller development platform. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +<b>Thin Shrink Small Outline Plastic 14</b><p> + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Longer version of SSOP-20 Package + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>VALUE + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +D14/RX LED +D15 +D16 +D17 +D8 +D9#/A8 +D10# +D11# +D5# +D13# +D3# +D2 +D0 +D1 +D4/A6 +TX LED +D12/A10 +D6#/A7 +D7 +A0 +A1 +A2 +A3 +A4 +A5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbol for Atmega328/168/88/48 chips, 28-pin versions + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbol for Atmega328/168/88/48 chips, 28-pin versions + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbol for Atmega328/168/88/48 chips, 32-pin version + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME +GND +GND +GND +VCC +VCC +VCC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Power +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + +Control +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +External +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +EXTRA + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +ENC28J60 +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +NAND256 +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +>name +VDD +VSS + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +PL-2303XA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +SN74LVC1G08 + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TC7SU04F + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +JTAG/CONROL +POWER +BANK0 +BANK1 +BANK2 +BANK3 +XC3S250/500E PQ208 +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +GND +GND +GND +GND +GND +VCC +VCC +VCC +VCC +VCC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +GND +VCC + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +3 +4 +5 +6 +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>mbed NXP LPC1768</h3> +<p>Microcontroller development board featuring an ARM cortex M3 and an online IDE with driverless USB programming.</p> + + + + + + + +>NAME +nR +IF- +IF+ +Ethernet RD- +Ethernet RD+ +Ethernet TD- +Ethernet TD+ +USB D- +USB D+ +Vout +Vu +p21 / PwmOut +p22 / PwmOut +p23 / PwmOut +p24 / PwmOut +p25 / PwmOut +p26 / PwmOut +p27 / I2C scl / Serial rx +p28 / I2C sda / Serial tx +p29 / CAN td +p30 / CAN rd +p5 / SPI mosi +p6 / SPI miso +p7 / SPI sck +p8 +p9 / Serial tx / I2C sda +p10 / Serial rx / I2C scl +p11 / SPI mosi +p12 / SPI miso +p13 / SPI SCK / Serial tx +14 +p14 / Serial rx +p15 / AnalogIn +p16 / AnalogIn +p17 / AnalogIn +p18 / AnalogIn / AnalogOut +p19 / AnalogIn +p20 / AnalogIn +mbed NXP LPC1768 Microcontroller +Vin +Vb +Gnd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1.2-3.6V +1.65-5.5V + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +D17/RX LED +D15 +D16 +D14 +D8 +D9#/A8 +D10# +D11# +D5# +D13# +D3# +D2 +D0 +D1 +D4/A6 +TX LED +D12/A10 +D6#/A7 +D7 +A0 +A1 +A2 +A3 +A4 +A5 + + + + + + + + + +>Name +>Value + + +<h3>Semtech SX1509</h3> +Level Shifting GPIO Expander w/ LED Driver and Keypad Engine + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + +OSC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +1-Mbit SPI flash memory + + + + + + + + + + + + + + + + + + + + + + +4-Mbit SPI flash memory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +16-Mbit SPI flash memory + + + + + + + + + + + + + + + + + + + + + + +Atmel 32-pin 8-bit Microcontroller with 8/16/32K Bystes of ISP Flash and USB Controller. ATmega8U2, ATmega16U2, and ATmega32U2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ATmega128/128L/1281/2561. Note: The ATmega128 pin 1 is PEN and the ATmega256/1281 pin 1 is PG5. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel 32-pin 8-bit micro, 16k flash. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel 100-pin 8-bit uC<BR> +64/128/256 Kbytes FLASH<BR> +4 Kbytes EEPROM<BR> +8 Kbytes SRAM<BR> +86 General Purpose I/O pins<BR> +12-channels16-bit PWM<BR> +4 x Serial USARTs<BR> +16-channels 10-bit A/D<BR> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel 8-pin 1kB flash uC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel 20-pin 2kB flash uC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel 8-pin 2/4/8kB flash uC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>MICROCONTROLLER</b><p> +8 Kbytes FLASH<p> +1 kbytes SRAM<p> +512 bytes EEPROM<p> +USART<p> +6-channel 10 bit ADC<p> +2-channel 8 bit ADC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>MICROCONTROLLER</b><p> +8 Kbytes FLASH<p> +1 kbytes SRAM<p> +512 bytes EEPROM<p> +USART<p> +4-channel 10 bit ADC<p> +2-channel 8 bit ADC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Single-Chip USB to UART Bridge</b><p> +Source: www.silabs.com .. CP2101.pdf / cp2102.pdf. Spark Fun Electronics SKU : COM-00310 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Single-Chip USB to UART Bridge</b> +Source: www.silabs.com .. CP2103.pdf. Spark Fun Electronics SKU : COM-00309 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Cypress PSOC uC with USB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>DOSonCHIP IC</b> +This is the tested schematic and footprint for the DOSonCHIP FAT16 FAT32 IC. Spark Fun Electronics SKU : COM-07956. QFN package also tested/proven. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Microchip 16-bit DSP for UAVv2x, not tested + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Microchip 16-bit DSP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Microchip 16-bit DSP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +I2C EEPROM chips, 24LC256 (and others) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Microchip SPI 10Base ethernet IC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Altera Cyclone2 FPGA, PQFP-208 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>USB UART</b> +FT232RL 4<sup>th</sup> Generation USB UART (USB &lt;-&gt; Serial) Controller. <br> +Spark Fun Electronics SKU : COM-00650<br> +Production SKU IC-00870 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>USB UART</b> +This is the simplified version of the FT232RL unit. Only what you need, nothing you don't. Spark Fun Electronics SKU : COM-00650 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +USB to USART. Non-stock item, unproven FP for this part. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>USB FIFO Controller</b> +4<sup>th</sup> Generation USB Controller (USB &lt;-&gt; Parallel) - FIFO. Spark Fun Electronics SKU : COM-00787 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +USB to USART/FIFO/JTAG/SPI/I2C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +BCD to 7-seg decoder/driver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Just what it says. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3V to RS-232 transceiver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Single inverter, SOT23-5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FAIRCHILD Inverting Schmitt Trigger + +UNTESTED FOOTPRINT!! +Used in External Clock Sources. +Digikey P/N NC7SZ14M5XCT-ND + + + + + + + + + + + + + + + + + + + +Voice recorder IC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schematic element and footprint for NXP LPC213x uC. Spark Fun Electronics SKU : COM-00520 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +NXP LPC2103 ARM7 based MCU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +M74HC238 - CMOS 3 TO 8 LINE DECODER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1kbit SPI EEPROM + + + + + + + + + + + + + + + + + + + + +<b>RS232 Transceiver</b> +Very common IC. This is generically called 'MAX232', but works with the 3V equivalent MAX3232 generic ICs. Field tested and mother approved. Spark Fun Electronics SKU : COM-00316 (DIP) and COM-00589 (SMD) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RS-485 transceiver + + + + + + + + + + + + + + + + + + + + + + +USB Peripheral/Host Controller w/ SPI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +8-digit, 8-segment LED display driver, serial input + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Monochrome NTSC/PAL on-screen display generator (SPI) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Freescale 16-bit uC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Open-drain microcontroller supervisor chip + + + + + + + + + + + + + + + + + +CAN transceiver + + + + + + + + + + + + + + + + + + + + + + +NAND flash + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ultra-high speed dual open-drain output buffer (non-inverting) + + + + + + + + + + + + + + + + + + + + +Power-on uC reset controller + + + + + + + + + + + + + + + + + + + +Bidirectional I2C level shifter.<br> +NOT compatible with all available part number pinout schemes- DOUBLE CHECK!!! + + + + + + + + + + + + + + + + + + + + + + + + +PCF8575C I/O Expander. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +8-bit PIC uC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PIC 16F8x</b> +8-Bit PIC16F8X Family + +<p>Pin Compatible : PIC16F83, PIC16CR83, PIC16F84A, PIC16CR84 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PIC 16F688</b> +8-Bit PIC16F88 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PIC24FXXXDAX06</b><br> +PIC24FXXXDA106 / PIC24FXXXDA206<br> +PIC24FJ256DA206-I/PT for IOIO<br> +IC-10386 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Prolific USB chip, requires 12MHz xtal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RS485 transceiver + + + + + + + + + + + + + + + + + + + + + + +RS485 transceiver + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SPI/I2C/IrDA to UART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h1>STN1110 - Multiprotocol OBD II to UART Interpreter, QFN Package</h1> + +<p> +<table> + <tr><td><h2>Change Log</h2></td></tr> + <tr> + <th>Date</th><th>Author</th><th>Change</th> + <tr> + <td>Aug 23, 2010</td><td>vit@scantool.net</td><td>Created device</td> + </tr> + </tr> +</table> +</p> + +<br /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SN54HC251 Data Selector/Multiplexer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Single-gate AND logic + + + + + + + + + + + + + + + + + + + +Speech synthesis chip- COM-09578 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +8pin SPI Flash series x25xx. Works with devices like W25X32 and BR25L32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>STM811 Reset Circuit</h3> +Used in the Ethernet Shield + + + + + + + + + + + + + + + + + + +16-pin constant current sink shift register LED driver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +STW5093 - PCM Audio Codec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Single gate inverter + + + + + + + + + + + + + + + + + + + +CAN Tranceiver + + + + + + + + + + + + + + + + + + + + + + +16-channel LED Driver with Dot Correction and Grayscale PWM Control +<hr> +<p>The TLC5940 is a 16-channel, constant-current sink LED driver. Each channel has an individually adjustable 4096-step grayscale PWM brightness control and a 64-step, constant-current sink (dot correction). The dot correction adjusts the brightness variations between LED channels and other LED drivers. The dot correction data is stored in an integrated EEPROM. Both grayscale control and dot correction are accessible via a serial interface. A single external resistor sets the maximum current value of all 16 channels.</p> +<p><b>Packages:</b> +<ul><li>28-pin HTSSOP +<li>32-pin 5x5mm QFN +<li>28-pin DIP</ul></p> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FAIRCHILD Unbuffered Inverter. +Used for external clock sources +Digikey P/N NC7SPU04P5XCT-ND + + + + + + + + + + + + + + + + + + + +Micromega floating point coprocessor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Hi-speed USB transceiver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +OGG Vorbis codec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MP3 deecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MP3 codec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MIDI/ADPCM/WAV codec, MIDI synth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>WIZnet W5100</h3> +TCP/IP PHY Embedded Chip<br> +See SparkFun catalog # COM-09471<br> +<br> +Package: <b>LQFP-80</b>,10x10mm, 0.4mm pitch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>WS2801</h3> +3 Channel Constant Current LED Driver with programmable PWM outputs. +<br> +<br> +Datasheet: http://www.sparkfun.com/datasheets/Components/LED/WS2801.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + +Xilinx Spartan3E FPGA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel XMega uC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel's 8/16-bit AVR XMEGA A3 Microcontroller - ATxmega256A3, etc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +XR2206 Monolithic Function Generator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +XMos processor (multicore) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Single 2-input AND gate<br> +74LVC1G08SE-7<br> +IC-10841 + + + + + + + + + + + + + + + + + + + + + + +Single 2-input OR gate + + + + + + + + + + + + + + + + + + + +Quadruple 2-line to 1-line data <b>SELECTOR/MULTIPLEXER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +8-bit <b>SHIFT REGISTER</b>, output latch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Quad Buffer with 3-State Outputs- +ON Semi Conductor: + +Digikey P/N MC74ACT125DR2GOSTR-ND + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Single 2-input AND gate + + + + + + + + + + + + + + + + + + + +74HC04 Hex Inverter + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-to-8 decoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +16-Channel Constant-Current LED Driver<br> +Packages: TSSOP-24, 24-pin QFN<br> +<br> +Last modified: 8/20/10<br> +<B>Unproven!</b><br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SD audio playback IC<br> +Can play back .wav or .ad4 files from an SD card<br> +SPI control or digital input trigger control<br> +available in SSOP-20 or DIP-20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +uC used in the Arduino<br> +32kb flash, 1k EEPROM, 2k SRAM<br> +This is the through-hole version of this chip. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +uC used in the Arduino<br> +32kb flash, 1k EEPROM, 2k SRAM<br> +This is the through-hole version of this chip. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ATTINY2313A<br> +2kB 20MHz I2C/SPI/UART + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel 14-pin 2/4/8kB flash uC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>4-Bit Bi-Directional Level Shifter</b> +<ul> + <li>1.2V-3.6V (VCCA) to 1.65V-5.5V (VCCB) bi-directional level shifter with auto direction sensing.</li> + <li>Max data rate - VCCA 1.8V: 20Mbps (50ns), VCCA 3.3V: 100Mbps (10ns)</li> +</ul> +<p>Digikey: 296-21929-1-ND (TSSOP)</p> +<p>IC-11329</p> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Propellor uC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +32-Pin Atmega328 part<BR> +Commonly used on Arduino compatible boards<br> +Available in QFP and QFN packages<br> +TQFP is IC-09069 +QFN is non-stock + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel 44-pin 8-bit Microcontroller with 32KBytes of ISP Flash and USB Controller ----- + +Please use the QFN-44-NOPAD_1:1 package for the footprint of all boards using a 32U4. Route traces directly away from the pads as much as possible. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>Atmel ATSHA204</h3> + +The Atmel ATSHA204 is an optimized authentication chip that includes a 4.5Kb EEPROM. This array can be used for storage of keys, miscellaneous read/write, read-only, password or secret data, and consumption tracking. Access to the various sections of memory can be restricted in a variety of ways and then the configuration locked to prevent changes. + + + + + + + + + + + + + + + + + +<h3>Semtech SX1509</h3> + +The SX1509 is a complete ultra low voltage 1.2V to 3.6V General Purpose parallel Input/Output (GPIO) expanders ideal for low power handheld battery powered equipment. This version comes in a 16-channel configuration and allows easy serial expansion of I/O through a standard 400kHz I2C interface. GPIO devices can provide additional control and monitoring when the microcontroller or chipset has insufficient I/O ports, or in systems where serial communication and control from a remote location is advantageous. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>FTDI FT231X Full Speed USB to Full-handshake UART</h3> +This USB2.0 Full Speed IC offers a compact bridge to full handshake UART interfaces. The device is a UART, capable of operating up to 3MBaud, with low power consumption (8mA). The FT231X includes the complete FT-X series feature set and enables USB to be added into a system design quickly and easily over a UART interface.<br><br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ITG-3200 3-axis gyro, digital output, qfn24 package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ARM DSP Chip used on the WAV Trigger board. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Isolated RS485 Transceiver. + +With transformer driver for isloated supply. + +Fits TI parts such as ISO53T (3.3V only, iMbps), ISO3086T (3.3V or 5V, 20 Mbps). + +Footprint unproven. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Dual D-type Flip-Flop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-DiscreteSemi.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-DiscreteSemi.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-DiscreteSemi.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-DiscreteSemi.lbr @@ -0,0 +1,3070 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find discrete semiconductors- transistors, diodes, TRIACs, optoisolators, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + +<b>SOT-23</b> + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<B>Diode</B><p> +Basic SMA packaged diode. Good for reverse polarization protection. Common part #: MBRA140 + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>Name +>Value + + +<b>Diode</b><p> +Basic small signal diode good up to 200mA. SMB footprint. Common part #: BAS16 + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +<b>Small Outline Package</b> Fits JEDEC packages (narrow SOIC-8) + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + +<b>8M, 8-Lead, 0.118" Wide, Miniature Small Outline Package</b><p> +MSOP<br> +8M-Package doc1097.pdf + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + +<b>TO 92</b> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +<b>TO 220 Vertical</b> Package works with various parts including N-Channel MOSFET SparkFun SKU: COM-10213 + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TCMT1103 + + +<b>SOT-223</b> + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>DIODE</b> + + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Vishay PowerPAK 1212-8 single device package<br> +High-power, low thermal resistance package. + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>1206-8 ChipFET</b><p> +Source: http://www.vishay.com/docs/72593/72593.pdf<br> +http://www.vishay.com/docs/71151/71151.pdf + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +15K + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MOC3031-M +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +D +S +G + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +D +S +G + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME +ZC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +OPTO DARL +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +D +S +G + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + +Two small signal silicon diodes connected anode to cathode.<br> +Connections to all three nodes available.<br> +DIO-10647 + + + + + + + + + + + + + + + + + + + +NPN/PNP transistor pair in SOT-363 package + + + + + + + + + + + + + + + + + + + + + +LED-to-NPN optoisolator + + + + + + + + + + + + + + + + + + +Commonly MBRA140. + + + + + + + + + + + + + + + + + + + + + + + + + +Zener Diode +Production Part - 8199 +3.4V Zener Voltage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Optoisolator with 15k built-in bias resistor. + + + + + + + + + + + + + + + + + + + +Dual optoisolator. + + + + + + + + + + + + + + + + + + + + + + +<b>Optotriac in DIP and SMD</b> +<p> +LED:<br> +Vf: 1.2V<br> +If: 5 mA<br> +<p> +TRIAC<br> +Vdrm: 600V<br> +Itsm: 1A<br> +Viso: 5000V<br> +DV/dt: 1500V/us<br> +<p> +DIP: MOC3063<br> +SMD: MOC3063S + + + + + + + + + + + + + + + + + + +40W Zener-diode transient voltage suppressor (ESD protection) + + + + + + + + + + + + + + + + + +Dual NPN transistor + + + + + + + + + + + + + + + + + + + + + +Opto-isolated TRIAC + + + + + + + + + + + + + + + + + + +Generic PMOSFET + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Generic 8-pin PMOSFET + + + + + + + + + + + + + + + + + + + + + + +8-SOIC NMOSFET + + + + + + + + + + + + + + + + + + + + + + +Optoisolator, darlington pair output + + + + + + + + + + + + + + + + + + + +Optoisolator- NPN output + + + + + + + + + + + + + + + + + + +<b>Generic NPN BJT</b> <P> +MMBT2222A - TRANS-08049 (SOT-23, 1A 40V)<br> +MPSA42 - TRANS-09116 (SOT-23, 500mA 300V)<br> +MMBT5088LT1G - TRANS-11160 (SOT-23, 50 mA 30V)<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Alternate TO-92 NPN BJT + + + + + + + + + + + + + + + + + +<h3>Generic PNP BJT</h3> <P> + Double check pinouts against datasheets- not all devices are the same!<br> +MMBT3906 - 40V 200mA SOT-23 (TRANS-08052)<br> +MMBT4403 - 40V 600mA SOT-23 (TRANS-09245) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Low-power generic TRIAC packages + + + + + + + + + + + + + + + + + + + + + + + + + + + +Transient voltage suppressor- prevents ESD on inputs.<br> +Ignore package description- MBRA140 is NOT this type of part!!! + + + + + + + + + + + + + + + + +Zener diode + + + + + + + + + + + + + + + + +Varistor + + + + + + + + + + + + + + + + +<h3>Varistor</h3> +Varistor (Variable resistor) is a nonlinear resistive element of the +voltage dependence that resistance changes with applied voltage. +Varistor is equivalent with Zener diode of two series connection. + + + + + + + + + + + + + + + + + + + + + + + + + +<b>NPN/PNP Transistor Array</b> +Handy dandy transistor array for level shifting and inverting signals. Spark Fun Electronics SKU : COM-00588 + + + + + + + + + + + + + + + + + + + + +<b>Diode</b> +These are standard reverse protection diodes and small signal diodes. SMA package can handle up to about 1A. SOD-323 can handle about 200mA. What the SOD-323 package when ordering, there are some mfgs out there that are 5-pin packages. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<B>Common NMOSFET Parts</b><p> +<table border = "1"> +<tr><th>MFG P/N</th><th>Store ID</th><th>Prod ID</th></tr> +<tr><td>FDD8780</td><td></td><td>TRANS-09984</td></tr> +<tr><td>SI7820DN</td><td></td><td>TRANS-11055</td></tr> +<tr><td>FDS6630A</td><td></td><td>IC-08089</td></tr> +<tr><td>2N7002PW</td><td></td><td>TRANS-11151</td></tr> +<tr><td>FQP30N06L</td> <td>COM-10213</td><td>TRANS-10060</td></tr> +<tr><td>BSS123LT1G</td><td></td><td>TRANS-08345</td></tr> +<tr><td>BSS138</td><td></td><td>TRANS-00830</td></tr> +<tr><td>BS170</td><td></td><td></td></tr> +<tr><td>2N7000</td><td></td><td></td></tr> +</table> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +30V Dual PMOS/NMOS MSOP-8<BR> +NMOS RDS .11-ohm<BR> +PMOS RDS .20-ohm<BR> +TRANS-07913 + + + + + + + + + + + + + + + + + + + + + + + +40V, 1A Schottky rectifier<br> +SMA/DO-214AC package<br> +DIO-08053 + + + + + + + + + + + + + + + + + + +Schottky Diode<br> +3A-40V + + + + + + + + + + + + + + + + + + + +40V 120mA SOD-523 Schottky<br> +DIO-11018 + + + + + + + + + + + + + + + + + + + +<b>Dual N-Channel 30-V (D-S) MOSFET</b><BR> +FDMA1024NZ<br> +TRANS-09516<br> +http://www.vishay.com/docs/71053/71053.pdf + + + + + + + + + + + + + + + + + + + + + + + + + +<H3>2-up package of NPN transistors</h3><P> +MMDT3904- TRANS-09373 (SOT-363, 200mA 40V)<br> + + + + + + + + + + + + + + + + + + + + + + + + +23V, 1A Schottky diode, SOD-323 package + + + + + + + + + + + + + + + + + + + +700mA 40V SOT-23 Schottky + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Displays.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Displays.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Displays.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Displays.lbr @@ -0,0 +1,3528 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find all manner of display devices- LED displays, LCD displays, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 + + +<h3>8x2 Character LCD w/ Backlight</h3> +Outer Dimensions: 40.0 x 35.4mm<br> +Viewing Area: 26.4 x 13.9mm<br> +Character Size: 2.95 x 4.75mm<br> +<br> +For Reference, see Amotec Display part ADM0802A (http://amotec-display.com/pdf/ADM0802A.pdf). +<br> +<br> +<B>***Footprint Unproven***</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + +<h3>LCD-8X2-KIT</h3> +8x2 LCD<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +This is a package for the 4-digit 7-segment RED LED from Young Sun. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +160-1576-5-ND + + +7 Segment display Storefront SKU#: COM-08546 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +K +B +C +L +M +N +E +D1 +D2 +DP1 +DP2 +A1 +A2 +F +H +J +G2 +>Name +>Value +G1 + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +16x2 LCD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + +Nokia6100_LCD +>Name +>Value + + + + + + + + + + + + + + + + + + + +SCREENKEY- TFT128 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +B +C +D +E +F +G +DP +A +B +C +D +E +F +G +DP +A +B +C +D +E +F +G +DP +A +B +C +D +E +F +G +DP +L2 +L1 +L3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +B +C +D +E +F +G +DP +A +B +C +D +E +F +G +DP +A +B +C +D +E +F +G +DP +A +B +C +D +E +F +G +DP +COL +APOS +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +B +C +D +E +F +G +DP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +B +C +D +E +F +G +DP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +B +C +D +E +F +G +DP + + + + + + + + + + + + + + + + +<b>Alphanumeric LED Display</b> Common anode. Multiple LEDs on some segments. Multiple LED colors available. Works great with A6282 driver IC. Decimal points are unfornately not connected. SKU: COM-09933. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Standard text-only 16x2 parallel input LCD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Graphical LCD 128x64</b> +Footprint is not yet proven. Double check it. Spark Fun Electronics SKU : LCD-00710 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graphic LCD module (LCD-00463) DISCONTINUED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Nokia 6100 Color LCD</b> +Schematic element and footprint production proven but could use some touching up. Spark Fun Electronics SKU : LCD-00569. Mating SMD connector : LCD-00570 + + + + + + + + + + + + + + + + + + + + + + + +Mechanical footprint of the ScreenKey (COM-09366)<br> +NO ELECTRICAL CONNECTIONS. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +This is a part for the 4-Digit 7-segment LEDs from Young Sun. Different from the Digikey LEDs, all 16 pins are used. +The LONGPADS Variant is used for a test jig, but you may like it because there is more pad to solder to. If you are concerned about routing space, the standard works just fine though. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +7-Segment Display 1" Red (COM-08546) + +EZ is for kits. Pads are only exposed on the bottom side to help prevent soldering in upside down. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Electromechanical.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Electromechanical.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Electromechanical.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Electromechanical.lbr @@ -0,0 +1,12142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find anything that moves- switches, relays, buttons, potentiometers. Also, anything that goes on a board but isn't electrical in nature- screws, standoffs, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + +<b>DPDT Slide Switch SMD</b> +www.SparkFun.com SKU : Comp-SMDS + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + ++ +- + + +<B>BATTERY</B><p> +22 mm + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ +- + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE ++ +- + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +(layout parts on top layer) + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +<h3>BATTERY-AA-KIT</h3> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +C3 +C4 +C1 +C2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +C3 +C4 +C1 +C2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D3 +D4 +D1 +D2 + + + + + + + + + + +<h3>BUTTONPAD-2X2SINGLE-KIT</h3> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D3 +D4 +D1 +D2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +B8 +B9 +B12 +B13 +B10 +B11 +B14 +B15 +B0 +B1 +B4 +B5 +B2 +B3 +B6 +B7 +Col0 +Col1 +Col2 +Col3 +Row0 +Row1 +Row2 +Row3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +B8 +B9 +B12 +B13 +B10 +B11 +B14 +B15 +B0 +B1 +B4 +B5 +B2 +B3 +B6 +B7 +Col0 +Col1 +Col2 +Col3 +Row0 +Row1 +Row2 +Row3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>BUZZER</b> + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE ++ + + +<h3>BUZZER-12MM-NS-KIT</h3> +Through-hole buzzer<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + +>NAME +>VALUE ++ + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>BUZZER-CCV-KIT</h3> +SMD Buzzer<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has longer pads to aid in hand soldering. + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>2-color Illuminated Rotary Encoder</h3> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME ++ +- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + +UP + + + + + + + + + + + + + + + + + + + + + + + + +UP + + + + + + + +LiPo 1100mAh + + + + + + + + + + + + + + + + +LiPo 2000mAh + + + + + + + + + +>Name +>Value + + + + + + + + +- ++ + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Package for Alpha RV16AF-20 potentiometer + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +G5Q SPDT Relay (SparkFun SKU: COM-00100). Footprint should also work with SPST-NO relay. + + + + + + + + + + +>Name +>Value + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + +Big relay. 220V/30A. SparkFun SKU: COM-00101 + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Stand Off</b><p> +This is the mechanical footprint for a #4 phillips button head screw. Use the keepout ring to avoid running the screw head into surrounding components. SKU : PRT-00447 + + + + + + + + +<b>Stand Off</b><p> +This is the mechanical footprint for a #4 phillips button head screw. Use the keepout ring to avoid running the screw head into surrounding components. SKU : PRT-00447 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MSS22 DPDT Switch + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Series S Slide Switch + + + + + + + + + + + + + + + + +Right Angle Slide Switch. Works with part#ES21MABE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Switch with part number: GPI-152-3013 + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>OMRON SWITCH</b> + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Sparkfun SKU# COM-08229 + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + +>NAME +>VALUE + + + + + +<h3>SWITCH-SPDT_KIT</h3> +Through-hole SPDT Switch<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +EG2578 +- +O + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>DIP SWITCH</b> + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +ON +2 +>VALUE +>NAME + + + + + + + + +<b>DIP SWITCH</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +ON +2 +3 +4 +5 +6 +7 +8 +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + +<h3>TSR-3386U Trimpot</h3> +Trimpot with a knob<br> +For COM-09806 in the SparkFun catalog<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + +>NAME +>VALUE + + +0.08" Drill, 0.13" tDoc + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + +Simple rotary encoder, no LED, push center<br> +COM-09117 + + + + + + + +>VALUE +>NAME + + + + + + + + + + +16mm top width + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +Mounting Surface + + + + + + + + + + +*3mm diameter x 2mm tab at 6 o'clock (from front) + + +topup part# 16M1SHB-B3-20KM-A2K-16Y + + + + + + +mounting surface + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +*2.8mm diameter x 2mm tab at 9 o'clock (from front) + + + + + + + + + +3mm x 3mm QFN 16 pin + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +micro USB AB connector for OTG support. 5-pins: USBVCC, GND, D+, D-, USBID. Can act as host or device + + + + + + + + + +PCB Front + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +3 +4 ++ +- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Stomp switch + +COM-11151 + +Footprint unproven + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +3 +4 ++ +- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Panasonic Dual PCB mount pot. + +Fits EVJY-00, EVJY-80, EVJY-81, EVJY-10, etc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>VALUE +>Name + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +R +G +B + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +JOYSTICK + + + + + + + + + + + + + + +Joystick-PSP + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + +Lipo + + + +MAGNET + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +ON + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +ON +1 +2 +3 +4 +5 +6 +7 +8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +TRACKBALL + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +6400BG +HEAT +SINK + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +Simple rotary encode<br> +Center push button<br> +Gray code output<br> +No illumination + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +USB AB, 5-pins: USBVCC, GND, D+, D-, USBID. + + + +USBAB + + + + + + + + + +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +W +R +B + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME + + + + +<b>SPDT Slide Switch</b> +Simple SMD single-pull double-throw slide switch. Good for less than 350mA power switch, switching UARTs between devices, etc. Spark Fun Electronics SKU : COM-00597 + + + + + + + + + + + + + + + + + + + + +<b>Battery Holders</b><br> +Various common sizes : AA, AAA, 20mm coin cell and 12mm coin cell.<br> +20MM_4LEGS, BATT-10373 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +AA and AAA battery holders + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Used with rubber key pads. This one was designed and proven to work with the PolyCase Key FOB enclosures. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Magnetic metal snaps. 18mm is DEV-08682. + + + + + + + + + + + + + + + + + + + + + + + +Proven layout and schematic for 2x2 button pad. Panelize this device/fp to a 4x4 pad if needed. Spark Fun Electronics SKU : COM-07835. Compatible common cathode tri-color LED SKU : COM-00105 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Proto layout and schematic for 2x2 button pad with single color LEDs (used on Simon board). Panelize this device/fp to a 4x4 pad if needed. Any single-color 5mm LED should be compatible. Spark Fun Electronics SKU : COM-07835. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Proto layout and schematic for 4x4 button pad. Spark Fun Electronics SKU : COM-07835. Compatible common cathode tri-color LED SKU : COM-00105 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Buzzer 12mm</b> +Spark Fun Electronics SKU : Comp-Buzzer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Generic copper pad for a capacitive touch sensor. + + + + + + + + + + + + + + + + +<h3>Fabrick.it Coin Cell Holder</h3> +Coin cell holder for 24.5mm rechargable coin cell + + + + + + + + + + + + + + + + +<h3>fabrick.it Conductive Ribbon Connector</h3> + + + + + + + + + + + + + + + + + + + + + + + + + + + +Snap connector for Fabrick.it products + + + + + + + + + + + + + + + + + + + + + + + + + + + +Omron NO solid state relay + + + + + + + + + + + + + + + + + + + + +<b>Thumb Joystick</b> +Joystick commonly found in PS2 controllers. Two pots and a select switch. Footprint proven. Spark Fun Electronics SKU : COM-09032 + + + + + + + + + + + + + + + + + + + + + + +This is a footprint for the PSP-1000 Joystick. 4-pins: X, Y, Vcc and GND + + + + + + + + + + + + + + + + + + +Small 5-way tactile joystick, COM-10063<p> +4UCON SF303GJ26 + + + + + + + + + + + + + + + + + + + + +Outlines for common LiPo batteries sold by SparkFun.<br> +For fit only- no pads or connectors! + + + + + + + + + + + + + + + + + + + + + + +Ceramic disc magnet, COM-08890 + + + + + + + + + + + + +<b>Vibration Motor- ROB-08449</b> +Physical dimension and wire connections for this powerful vibration motor. Motor has a self adhesive backing. + + + + + + + + + + + + + + + + +Hall-effect based I2C analog mini-joystick with button + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Navigation Switch</b> +Three way navigation switch. Commonly used as up/down/select on MP3 players. Schematic element and footprint production proven. Spark Fun Electronics SKU : COM-08184 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SPDT relay (COM-00100) + + + + + + + + + + + + + + + + + + + + +SPDT relay (COM-00101) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SPST SS relay + + + + + + + + + + + + + + + + + + +Slide-type potentiometer- COM-9119 + + + + + + + + + + + + + + + + + +<b>#4 Stand Off</b><p> +This is the mechanical footprint for a #4 phillips button head screw. Use the keepout ring to avoid running the screw head into surrounding components. SKU : PRT-00447 + + + + + + + + + + + + + + + + + +For use with a push-button switch made by CnK components. + + + + + + + + + + + + + + + + + + + + + + + + + + +DPDT Version of the COM-00597 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Various NO switches- pushbuttons, reed, etc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SPDT Switch</b><br> +Simple slide switch, Spark Fun Electronics SKU : COM-00102<br> +DPDT SMT slide switch, AYZ0202, SWCH-08179 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Side-actuated SPDT slide switch, as used on the Arduino Pro + + + + + + + + + + + + + + + + + +<b>DIP SWITCH</b> + + + + + + + + + + + + + + + + + + +<b>DIP Switch 8 Position</b> +Spark Fun Electronics SKU : COM-08034 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Momentary Switch</b><br> +Button commonly used for reset or general input.<br> +Spark Fun Electronics SKU : COM-00097<br> +SMT- SWCH-08247 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Mechanical footprint for trackball + + + + + + + + + + + + +Turret FP for Keystone Electronics Part#1520 + + + + + + + + + + + + + + + +Multiwatt heatsink, PRT-09576 + + + + + + + + + + + + +General speakers. + + + + + + + + + + + + + + + + + + + + + +quadrature encoder from Top-Up, part#EC16PHBF-B-20F-24-24C-16Y + + + + + + + + + + + + + + + + + +Potentiometer w/ switch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Various small potentiometers for "set-and-forget" applications + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Simple no LED rotary encoder<br> +Example: COM-09117 + + + + + + + + + + + + + + + + + + + +<H3>Illuminated Rotary Encoder w/ 2 LEDs</h3> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>Illuminated Rotary Encoder w/ RGB LED and select switch</h3> + +EC12PLRGBSDVBF-D: http://top-up.so-buy.com/front/bin/ptdetail.phtml?Part=EC12PLRGBSDVBF-D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Small servo motor</b><br> +This is the small servo used in the SIK.<br> +SKU: ROB-09065 + + + + + + + + + + + + + + + + + +EZ is for Kits. There is no tStop (covering up the top side of the pads with mask). This helps the beginner see which side they should be soldering too. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A standoff intended to be an electrically connected point.<br> +Pad size and stop size allow for a #4 Phillips pan screw head to make a solid connection to the board. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-FreqCtrl.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-FreqCtrl.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-FreqCtrl.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-FreqCtrl.lbr @@ -0,0 +1,1071 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find crystals and oscillators and other things that go "tick".<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + +<b>CRYSTAL</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +<b>CRYSTAL</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +<b>CRYSTAL</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +<b>CRYSTAL</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +<b>CRYSTAL</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +<B>CRYSTAL</B> + + + + + + +>VALUE +>NAME + + + + + +>Name +>Value + + + + + + + + + + +>NAME +>VALUE + + +32kHz crystal package<br> +This is the "EZ" version, which has limited top masking for improved ease of assembly. + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Small Outline Package</b> Fits JEDEC packages (narrow SOIC-8) + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + +>Name +>Value + + +FXO-HC73 Series Oscillator. 7.5x5.2mm 6-pin package + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE +1 +2 + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + +>VALUE +>NAME + + + + + + + + +Various standard crystals. Proven footprints. Spark Fun Electronics SKU : COM-00534 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +I2C non-volatile programmable oscillator, 16kHz to 133MHz + + + + + + + + + + + + + + + + + + + + + + +I2C real-time clock with battery backup. + + + + + + + + + + + + + + + + + + + + + + +SPI RTC module with battery backup and internal clock. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Generic 5x3 and 7x5 oscillators + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Resonator</b><br> +Small SMD resonator.<br> +Used, eg, on the Arduino Pro/ Pro Mini boards.<br> +8MHz- XTAL-08895<br> +16MHz- XTAL-08900 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Silicon Oscillator- not field programmable + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-LED.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-LED.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-LED.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-LED.lbr @@ -0,0 +1,1668 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find discrete LEDs for illumination or indication, but no displays.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + + + + + + +<B>LED</B><p> +5 mm, round + + + + + + + + + + + +>NAME +>VALUE + + +<B>LED</B><p> +3 mm, round + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + +L +S + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +<h3>LED 3MM - No Silk</h3> +3 mm, round + + + + + + + + + + + +>NAME +>VALUE + + +<h3>LED5MM-KIT</h3> +5MM Through-hole LED<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Dual In Line Package</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +B +G +R +- +PIRANHA 5MM +>VALUE + + +<h3>LED Ring</h3> +http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Components/LED/Top-Up%20LED%20Ring%20LED-CCL-A.pdf<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ +- + + + + + +>NAME +>VALUE + + + + + + + + + + +<H3>5050 SMD RGB LED</h3> +5.0mm x 5.0mm, 2.6mm thickness + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + +7511Lightpipe + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RED +GREEN +BLUE +>NAME + + + + + + + + + + + + + + + + + + + + + + +RED +GREEN +BLUE + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +RGB +WS28x1 + + + + + +Right-angle 880nm SMT infrared LED + + + + + + + + + + + + + + + + +<b>LEDs</b> +Standard schematic elements and footprints for 5mm, 3mm, 1206, and 0603 sized LEDs. 5mm - Spark Fun Electronics SKU : COM-00529 (and others) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Tri-Color LED SMD</b> +Proven layout and schematic for triple color LED in SMD package - common anode. Spark Fun Electronics SKU : COM-07844 + + + + + + + + + + + + + + + + + + +10-Segment LED Bar Graph<p> +<p> +SFE part numbers:<p> +COM-09935 (red, Vf = 2.1V, Ifmax = 20mA)<br> +COM-09936 (yellow, Vf = 2.1V, Ifmax = 20mA)<br> +COM-09937 (blue, Vf = 3.4V, Ifmax = 20mA)<br> +COM-09938 (green, Vf = 3.4V, Ifmax = 20mA)<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +High-brightness RGB through-hole LED, similar to that used in the Shiftbrite + + + + + + + + + + + + + + + + + + +<h3>16 LED Ring</h3> +COM-10595<br> +http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Components/LED/Top-Up%20LED%20Ring%20LED-CCL-A.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Through-hole side-firing 940nm IR LED + + + + + + + + + + + + + + + + +<b>Luxeon LED</b> +This footprint works with the current 1 Watt, 3 Watt, and 5 Watt LEDs. These blindingly bright LEDs generate a lot of heat so the footprint has a large pad under the LED for thermal transfer. Schematic and footprint are proven. Spark Fun Electronics SKU : COM-00603 + + + + + + + + + + + + + + + + + +Luxeon Rebel single-color high output LED + + + + + + + + + + + + + + + + + +Various green LEDs<br> +0603- DIO-00821<br> +LARGE- DIO-00862<br> +LILYPAD- DIO-09910<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Assorted Red LEDs<br> +LilyPad 1206- DIO-09912<br> +1206- DIO-00809<br> +0603- DIO-00819 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +White SMD LEDs<br> +LilyPad 1206- DIO-09955 + + + + + + + + + + + + + + + + + + + +Yellow SMD LEDs<br> +LilyPad 1206- DIO-09909<br> +0603- DIO-09003 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RGB Through-hole common anode<br> +SparkFun store front<br> +COM-10821 (diffuse)<br> +COM-10820 (clear)<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RGB Through-hole common cathode LED<br> +SparkFun Storefront:<br> +COM-00105 (Clear)<br> +COM-09264 (Diffuse) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3> WS2811 RGB LED w/driver</h3><p> +5x5mm SMD LED with built-in controller IC.<br> +DIO-11598 + + + + + + + + + + + + + + + + + + + + + +<H3>Blue LEDs for production use</H3><p> +Various blue LEDs stocked by SparkFun production<br> +0603 - DIO-08575<br> +Rebel - DIO-09553<br> +1206 - DIO-09911 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Avago HSMC-C265 reverse-mounted red LED + +This is a SMD LED that is mounted to one side of a PCB and shines through a hole to the other side of the PCB. Useful for making boards with no components on one side for mounting and having LED indicator lights shine through the board, panel, etc. + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Passives.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Passives.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Passives.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Passives.lbr @@ -0,0 +1,3118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + +>Name +>Value + + + + + + + + + +>Name +>Value + + +This is the "EZ" version of the .1" spaced ceramic thru-hole cap.<br> +It has reduced top mask to make it harder to put the component on the wrong side of the board. + + + + + + + +>Name +>Value + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>Name +>Value + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + +CTZ3 Series land pattern for variable capacitor - CTZ3E-50C-W1-PF + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<h3>CAP-PTH-SMALL-KIT</h3> +Commonly used for small ceramic capacitors. Like our 0.1uF (http://www.sparkfun.com/products/8375) or 22pF caps (http://www.sparkfun.com/products/8571).<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>Value +>Name + + + + + + +>Name +>Value + + + + + + + + + + + + +>Name +>Value + + +<b>Panasonic Aluminium Electrolytic Capacitor VS-Serie Package G</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +<b>Panasonic Aluminium Electrolytic Capacitor VS-Serie Package E</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +<b>Panasonic Aluminium Electrolytic Capacitor VS-Serie Package E</b> + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + +>Value +>Name + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +Type J2 package for SMD supercap PRT-10317 (p# EEC-EN0F204J2) + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<h3>EIA3528-KIT</h3> +<b>Warning:</b> This is the KIT version of this package. This package has longer pads to make hand soldering easier.<br> + + + + + + + + + + + +>NAME +>VALUE + + +<h3>EIA3216-KIT</h3> +<b>Warning:</b> This is the KIT version of this package. This package has longer pads to make hand soldering easier.<br> + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +>Name +>Value + + +<b>CAPACITOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1007 (2518 metric) package + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +1.3x1.3mm 1.7mm between. Fits Sumida CDRH2D09, CDRH2D18 inductor + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +Small solder jumper with big paste layer so it will short during reflow. + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +Small solder jumper with no paste layer so it will open after reflow. + + + + + + + + +>NAME +>VALUE + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>VALUE +PASTE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>VALUE +PASTE + + + + + + + + + + + + + +>Name +>Value + + +This is the "EZ" version of the standard .3" spaced resistor package.<br> +It has a reduced top mask to make it harder to install upside-down. + + + + + + + + + + +>Name +>Value + + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>CAPACITOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + + + + +1/6W Thru-hole Resistor - *UNPROVEN* + + + + + + +>NAME +>VALUE + + + + + + +>NAME +>VALUE + + + + +1/4W Resistor, 0.4" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +1/2W Resistor, 0.5" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +1W Resistor, 0.6" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +2W Resistor, 0.8" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +<h3>AXIAL-0.3-KIT</h3> + +Commonly used for 1/4W through-hole resistors. 0.3" pitch between holes.<br> +<br> + +<b>Warning:</b> This is the KIT version of the AXIAL-0.3 package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Chip Resistor Array</b> size 4 × 0603<p> +convex termination - Phycomp Components<br> +Source: RS Components + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Solder jumper, small, shorted with trace. No paste layer. Trace is cuttable. + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + +<b>Solder jumper</b> + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +<b>Solder jumper</b> + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + +For Coiltronics/Cooper DR1030 series inductors + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +Footprint for Bourns SDR0403 family inductors + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + +>NAME +>VALUE +PASTE + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>Name +>Value + + + + + + +>Name +>Value + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Capacitor</b> +Standard 0603 ceramic capacitor, and 0.1" leaded capacitor. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Variable, non-polarized capacitor + + + + + + + + + + + + + + + + +<b>Capacitor Polarized</b> +These are standard SMD and PTH capacitors. Normally 10uF, 47uF, and 100uF in electrolytic and tantalum varieties. Always verify the external diameter of the through hole cap, it varies with capacity, voltage, and manufacturer. The EIA devices should be standard. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Inductors</b><p> +Basic Inductor/Choke - 0603 and 1206. Footprints are not proven and vary greatly between part numbers.<br> +SRN6045- 33uH, 20% 1.4A<BR> +SDR0403-560KL - 56uH, 10%, 500mA RMS/740mA peak + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Jumper</b> +Basic 0.1" spaced jumper. Use with breakaway headers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Jumper</b> +Basic 0.1" spaced jumper. Use with breakaway headers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Resistor</b> +Basic schematic elements and footprints for 0603, 1206, and PTH resistors. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Array Chip Resistor</b><p> +Source: RS Component / Phycomp + + + + + + + + + + + + + + + + + + + + + + + + + +BOURNS 4600X series thick-film SIP resistor packs<br> +<br> +Five resistors bussed to a single pin (denoted by dot).<br> +0.2W / resistor<br> +<a href="http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Components/General/4600x.pdf">datasheet</a><br> +<br> +SFE parts COM-10855 (330), COM-10856 (10K)<br> + + + + + + + + + + + + + + + + + + + + +<b>Solder Jumper</b> +Standard SMD solder jumper. Used to automate production. Two varients : Normally Open and Normally Closed are the same, but have different paste layers. NC will have a large amount of paste and should jumper during reflow. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Solder Jumper</b> +Standard SMD solder jumper. Used to automate production. Two varients : Normally Open and Normally Closed are the same, but have different paste layers. NC will have a large amount of paste and should jumper during reflow. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Solder Jumper</b> +2 way solder jumper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Bare copper test points for troubleshooting or ICT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Use to make a connection of multiple grounds in only one place. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Package for connecting two ground nets in one place. + + + + + + + + + + + + + + + + +<b>Solder Jumper</b> +2 way solder jumper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-PowerIC.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-PowerIC.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-PowerIC.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-PowerIC.lbr @@ -0,0 +1,9011 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find drivers, regulators, and amplifiers.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + +<h3>10-pin QFN/SON package</h3> +Package Type: SON<br> +Package Drawing: DRC<Br> +Pitch: 0.5mm<br> +Overall Dimensions: 3.15x3.15mm<br> +Pins: 10 (+1 exposed heatsink pin)<br> +<br>Related ICs:<ul><li> TI's BQ2402x - http://focus.ti.com/lit/ds/symlink/bq24023.pdf<br> +</ul> + +Last modified: 8/16/10<br> +<B>Unproven!!!</B><br> + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>8M, 8-Lead, 0.118" Wide, Miniature Small Outline Package</b><p> +MSOP<br> +8M-Package doc1097.pdf + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +Multiwatt15V package for the L298 dual full bridge driver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>VALUE +>NAME + + +<b>Small Outline Package</b> Fits JEDEC packages (narrow SOIC-8) + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Small Outline Transistor</b> + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TO-220 11 Pin Package + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +7-Lead package for National voltage switchers (LMZ14203) + + + + + + + + + + + + +>VALUE +>NAME + + +<b>Q5-DD</b> + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +10-lead MSOP w/ center GND pad + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +TDFN - 8pin, 2mmx3mm + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +TDFN - 8pin, 2mmx3mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>16-Lead Plastic Quad Flat, No Lead Package (ML) - 4x4x0.9mm Body [QFN]</b><p> +Source: http://ww1.microchip.com/downloads/en/DeviceDoc/41203E.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +TTC-5023 + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Dual In Line Package</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>VOLTAGE REGULATOR</b> + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A15,2mm +- +I +O + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>TO 92</b> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +- +I +O + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SOT-223</b> + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +<b>DPAK</b><p> +PLASTIC PACKAGE CASE 369C-01<br> +Source: http://www.onsemi.co.jp .. LM317M-D.PDF + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +<h3>D<sup>2</sup>PAK/A V-reg Package</h3> +3-pins w/ tab<br><br> +<b>***Unproven***</b><br><br> +<b>Used on:</b> +<ul><li>LD1085xx Adjustable 3A Regulator +</ul> + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +DPAK 5, center lead crop, case 175AA + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +3mm x 3mm QFN 16 pin + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + +Created for TI DRV8830 + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Coilcraft DA2303, DA2304 + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +ADM1087 + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>Name +>Value + + + + + + + + + + +>NAME + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +THERMAL PAD + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +THERMAL PAD + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>Name +>Value + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + +>NAME +>VALUE +GND +IN +OUT + + + + + + + + + +>NAME +>VALUE +ADJ +IN +OUT + + + + + + + + + +>NAME +>VALUE +ADJ +IN +OUT + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE +ADJ +IN +OUT +GND +EN + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + +>Name +>Value + + + + + + + + + + +<h3>TPS62172</h3> + +3-17V 0.5A Step-Down Converter w/ DCS-Control + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Power supply sequencer + + + + + + + + + + + + + + + + + + + + +500mA LDO, 1.0V SO-8 (COM-10827) + + + + + + + + + + + + + + + + + + + +Single-chip, Li-ion and Li-pol charger IC with autonomous USB-port and AC-adapter supply management.<br> +Datasheet: http://focus.ti.com/lit/ds/symlink/bq24022.pdf<br> +<br> +<b>Unproven</b><br> +Last modified: 8/16/10<br> + + + + + + + + + + + + + + + + + + + + + + + + + +APTS006A0X-SRZ Step-down 6A variable voltage switching module (TOL-09275) + + + + + + + + + + + + + + + + + + + + + + + +Small EL backlight driver for the CFAX 128x64 graphical display. + + + + + + + + + + + + + + + + + + + + + + +L298 Dual Full Bridge Driver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Full-bridge power driver IC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3A RMS/7A peak bipolar stepper motor driver with SPI control<br> +and step input in HTSSOP-28 package.<br> +IC-10648 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Step-up switching regulator IC + + + + + + + + + + + + + + + + + + + + + + +LDO regulator with reverse battery protection- very durable! + + + + + + + + + + + + + + + + + + + + + + +LDO regulator with reverse battery protection- very durable! + + + + + + + + + + + + + + + + + +Small package linear regulator + + + + + + + + + + + + + + + + + +.1% accurate low-current voltage reference + + + + + + + + + + + + + + + + + + +3W audio amplifier + + + + + + + + + + + + + + + + + + + + + + +High Voltage (80V) Step-down switching regulator<br> + +http://www.national.com/ds/LM/LM5007.pdf<br> + + + + + + + + + + + + + + + + + + + + + + + +Simple Switcher 75V, 0.5A Step-down switching regulator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +LMD1820X H-Bridge - BOB-00747 + + + + + + + + + + + + + + + + + + + + + + + + + +3A, Simple Switcher Power Module with 42V Maximum Input + + + + + + + + + + + + + + + + + + + + + + +High current voltage regulator commonly used with GM862 cellular module. Spark Fun Electronics SKU : COM-00311. Footprint may need to have the large paste aperature reduced. + + + + + + + + + + + + + + + + + + + +Energy Harvesting Power Supply + + + + + + + + + + + + + + + + + + + + + + + + + +<b>MAX1555 Lithium Charger IC</b> +SOT-23 Lithium Polymer charging IC. Schematic element and footprint proven. Spark Fun Electronics SKU : COM-00674 + + + + + + + + + + + + + + + + + + + +MAX17043/MAX17044: Battery Fuel Guage (43 is 1cell, 44 is 2cell) + + + + + + + + + + + + + + + + + + + + + + + +<b>Mono 2.6W Class D Amplifier</b><p> + +Datasheet: <a href="http://datasheets.maxim-ic.com/en/ds/MAX98300.pdf">http://datasheets.maxim-ic.com/en/ds/MAX98300.pdf</a><p> + +The MAX98300 mono 2.6W Class D amplifier provides +Class AB audio performance with Class D efficiency. +This device offers five selectable gain settings (0dB, +3dB, 6dB, 9dB, and 12dB) set by a single gain-select +input (GAIN). +Active emissions-limiting edge-rate and overshoot control +circuitry greatly reduces EMI. A patented filterless +spread-spectrum modulation scheme eliminates the need +for output filtering found in traditional Class D devices. +These features reduce application component count. +The MAX98300 industry-leading 0.78mA at 3.7V (1.1mA +at 5V) quiescent current extends battery life in portable +applications. +The MAX98300 is available in an 8-pin TDFN-EP (2mm +x 2mm x 0.8mm) and a 9-bump (1.2mm x 1.2mm) WLP. +Both packages are specified over the extended -40NC to ++85NC temperature range. + + + + + + + + + + + + + + + + + + + + + + + +<b>Stereo 3.7W Class D Amplifier</b><p> + +Datasheet: <a href="http://datasheets.maxim-ic.com/en/ds/MAX98306.pdf">http://datasheets.maxim-ic.com/en/ds/MAX98306.pdf</a><p> + +The MAX98306 stereo 3.7W Class D amplifier provides +Class AB audio performance with Class D efficiency. +This device offers five selectable gain settings (6dB, +9dB, 12dB, 15dB, and 18dB) set by a single gain-select +input (GAIN). +Active emissions limiting, edge-rate, and overshoot control +circuitry combined with a filterless spread-spectrum +modulation scheme (SSM) provide excellent EMI performance +while eliminating the need for output filtering found +in traditional Class D devices. These features reduce +application component count. +The IC's 2.0mA quiescent current with a 3.7V supply +extends battery life in portable applications. +The IC is available in a 14-pin TDFN (3mm x 3mm x +0.75mm) package specified over the extended -40NC to ++85NC temperature range. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Jellybean switching supply controller + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Li-Ion charge controller family from Microchip + + + + + + + + + + + + + + + + + + + + + + +Miniature single cell, fully integrated Li-Ion, Li-polymer charge management controller<br> +http://ww1.microchip.com/downloads/en/DeviceDoc/21984a.pdf<br> +IC-09995 + + + + + + + + + + + + + + + + + + + + + +Stand-alone Linear Li-ion/Li-polymer Charge Management Controller<br> +Packages: DFN-10, MSOP-10<br> +<br> +Last modified: 8/17/10<br> +<b>Unproven!</b> + + + + + + + + + + + + + + + + + + + + + + + + +Single Cell Switching Regulator - MIC2571 + + + + + + + + + + + + + + + + + + + + + +Dual H-bridge driver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3.5A Switching Regulator + + + + + + + + + + + + + + + + + + + +<b>Resettable Fuse PTC</b> +Resettable Fuse. Spark Fun Electronics SKU : COM-08357 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3A LDO regulator + + + + + + + + + + + + + + + + + + + + +Multiwatt package for L298 bridge driver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Toshiba 1A dual motor driver<br> +IC-09363 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TPS62112: 1.5A Step-Down Converter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +DC to DC Booster<br> +IC-10035 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Small transformers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Darlington Driver</b> +ULN2803 Darlington array. 500mA max per channel, 8-channel package. Spark Fun Electronics SKU : COM-00312 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +30A motor driver IC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Voltage Regulator</b> +Standard 7805 5V regulator. IGO (Input Ground Output). Spark Fun Electronics SKU : COM-00107 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Voltage Regulator</b> +Standard LM317 adjustable voltage regulator. AOI (Adjust Output Input). Google 'LM317 Calculator' for easy to use app to get the two resistor values needed. 240/720 for 5V output. 240/390 for 3.3V output. Spark Fun Electronics SKU : COM-00527 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>LD1085 3A low-drop positive voltage regulator, adjustable</h3> + +The LD1085xx is a low drop voltage regulator able to provide up to 3 A of output current. Dropout is guaranteed at a maximum of 1.2 V at the maximum output current, decreasing at lower loads. The LD1085xx is pin to pin compatible with the older 3-terminal adjustable regulators, but has better performances in term of drop and output tolerance.<br> +<br> +<B>Available Packages</b> +<ul><li>D<sup>2</sup>PAK/A - 3-pin w/ tabs, SMD + + + + + + + + + + + + + + + + + + +LD1117VXX voltage regulator. We carry the 3.3V version (COM-00526) in TO-220 package. + + + + + + + + + + + + + + + + + +<b>Voltage Regulator LDO</b> +Standard 150mA LDO voltage regulator in SOT-23 layout. Micrel part MIC5205. BP (by-pass) pin is used to lower output noise with 470pF cap. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Voltage Regulator LM1117</b> +Standard adjustable voltage regulator but in SMD form. Spark Fun Electronics SKU : COM-00595 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MIC2920A (http://www.micrel.com/_PDF/mic2920.pdf) - 400mA output LDO Regulator + + + + + + + + + + + + + + + + + +<b>V_REG MIC5219</b> +Standard 500mA LDO voltage regulator in SOT-23 layout. Micrel part MIC5219. BP (by-pass) pin is used to lower output noise with 470pF cap, +may be left open. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +NCP550x 500mA LDO Voltage Regulator + + + + + + + + + + + + + + + + + + + +<b>Switching step-up voltage regulator</b> +NCP1400 switiching regulator takes single cell AA and outputs 100mA at 3.3V or 5V with minimal number of external components. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Voltage Regulator</b> +Older TI part. LDO 150mA regulator. No output by-pass cap option. See V_REG_LDO for a better part. + + + + + + + + + + + + + + + + + + + +Adjustable constant current switching driver for high-power LEDs + + + + + + + + + + + + + + + + + + + +DMOS Microstepping Driver with Translator ---------------- + +2/4/2013 - 1:1 variant has an imported .bmp image of the chip. The pads have been rounded and shifted so as to better fit this particular QFN package of this chip. The stencil layer has also been altered so that there is less paste under the IC. This is the package to use on all boards! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +500mA LDO, MSOP8 for better dissipation + + + + + + + + + + + + + + + + + + + + + + +High-drive dimmable EL inverter<br> +Supertex, available in SOW16 and QFN16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Nanopower LDO<br> +Iq less than 1uA for low Iload + + + + + + + + + + + + + + + + + + + + + +3-17V, 2A Step Down Converter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>Texas Instruments TPS62172</h3> +3-17V 0.5A Step-Down Converter with DCS control. Available in adjustable and fixed output voltage versions.<br><br> + +Is packaged in an 8-pin WSON package measuring 2 × 2 mm (DSG).<br> <br> + +See a 3.3V fixed output version of this chip in action on the <a href="https://www.sparkfun.com/products/11400">Electric Imp Breakout Board</a>.<br><br> +<a href="http://www.ti.com/lit/gpn/tps62172">Datasheet</a> + + + + + + + + + + + + + + + + + + + + + + + +MIC5205 150mA vreg<br> +3.3V - VREG-00822<br> +5V - VREG-00823 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h2>DRV8830 I<sup>2</sup>C DC Motor Driver</h2> +TSSOP-10 with exposed power pad<br> +1A current limit, 2.75V to 6.8V + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>Constant current LED driver</h3><p> +PWM-able 1MHz switch freq 6V-36V<br> +Up to 1A LED current + + + + + + + + + + + + + + + + + + + + + + +<H3>LT3652 MPPT Solar Charge Controller</h3><p> + +5V-32V smart charger for batteries up to 14.4V + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Transformer with 4 independent windings + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-RF.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-RF.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-RF.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-RF.lbr @@ -0,0 +1,11381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find things that send or receive RF- GPS, cellular modules, Bluetooth, WiFi, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +152111 +>VALUE +>NAME + + + + + + + + + +AF +>Name +>Value + + +Footprint for Part#1575AT43A40 + + + + + + + + + + + + +>NAME +>VALUE + + +QFN package with a 6x8 pin configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +BTM-182 Class2 Bluetooth Module from Rayson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +NO COPPER +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +>Name +GSM +GPS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +flap clearance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +50 Channel GS406 Helical GPS Receiver - SMD Connector + +sku: GPS-09079 + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + +SMD GS1011Mxx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +ID12 Footprint (works with ID2, ID12, and ID20) + + + + + + + + + + + + + + + +>NAME +>VALUE + + +ID12 Footprint (works with ID2, ID12, and ID20) + + + + + + + + + + + + + + + + +>NAME +>VALUE +NC + + + + + + + + + + + + + +ID12 Footprint (works with ID2, ID12, and ID20) + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + +<h3>LS20126 GPS Receiver</h3> +Package for LOCOSYS LS20126 GPS smart antenna module.<br> +SparkFun Sku# GPS-09838<br><br> +Note: PCB cannot extend past top tPlace border @ 25mm<br> +<b>Unproven!</b><br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +3.3V +CE +CS +DR1 +CLK1 +DATA +GND + + + + + + + + + +<b>Shrink Small Outline Package</b><p> +package type SS + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +MN5010HS GPS Module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +<h3>QFN 32-Pin package w/ Thermal Pad</h3> +<b>***Unproven***</b> +<br><br> +<B>Applicable Parts:</b> +<ul><li>TLC5940</ul> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RF-LINK receivers WRL-8947, 8948, 8949, 8950 + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +RF-LINK transmitters WRL-8945, 8946 + + + + + + + + +>NAME +>VALUE + + + + + + +test + + + + + + + + + + + + + + + + +Package for Hope RF s RFM22-xxx-S2 SMD wireless transciever, xxx is module s frequency band. +*Unproven*'' + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Crystal +IC +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +RN-171, FP pad size: 40mil x 90mil + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Redpine WiFi module: short FP (doesn't include the NC pads around the antenna) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +no copper +GND plane + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +30-pin DIL with 100mil spacing between headers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +LGA44 - Used for Venus GPS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +WiFly GSX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +35 +36 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +Package for the Xtend Digi Modem 40 mile range + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Keep Out + + + +BLE112-A<BR> +Bluetooth 4.0 module with built-in chip antenna. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SD/Multi-Media Card Socket</h3> +4UCONN part # 19646 + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +EBM001 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +EM406 + + + + + + +EM408 GPS + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +GE-863 GPS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE +3.3V +CE +CS +DR1 +CLK1 +DATA +GND + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +SM5100B +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +BlueGiga BLE112-A module<BR> +Bluetooth 4.0 module with chip antenna. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE + + +<h3>Electric Imp</h3> + +A wi-fi enabled microcontroller, in an SD card package. + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>GPS Antenna Amp</b> +Filter and Amp built into one. Very small package. + + + + + + + + + + + + + + + + + + + + + + + +<b>Chip antenna</b><p> +Chip antenna with ground or secondary connection. Common with larger metal RF connectors. + + + + + + + + + + + + + + + + +<b>Chip antenna</b><p> +Single endded antenna. Common with smaller chip antennas. CHIP4 package is the GPS Chip Antenna <b>SKU:</b> GPS-08418. CHIP5 package is 2.4GHz chip antenna <b>SKU:</b> WRL-00144. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Atmel 8-bit micro with 802.15.4 wireless support and 128k flash + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0805 footprint balun- Ember 351/357 + + + + + + + + + + + + + + + + + + + +Bluetooth SMD IC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Bluetooth SMD Module</b> +Footprint fully proven. Spark Fun Electronics SKU : WRL-00149 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Bluetooth SMD Module</b> +BR-C40A with antenna cut off. 50 Ohm antenna trace and connector required. Footprint fully proven. Spark Fun Electronics SKU : WRL-00149 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Bluetooth SMD module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +BTM-182 Bluetooth Module from Rayson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Copernicus II GPS- Trimble recommended layout and paste layer. Footprint production proven. Spark Fun Electronics SKU : GPS-07951 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Copernicus II dip module, SKU GPS-10923 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D2523T GPS Module + + + + + + + + + + + + + + + + + + + + +Bluetooth module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Package outline for EM406 GPS module + + + + + + + + + + + + +This device is only the outline of the EM408 GPS receiver. The device is intended to give the +designer an idea of what how the receiver will fit on the board. THIS DEVICE DOES NOT PROVIDE ANY ELECTRICAL CONNECTION TO THE BOARD! Include the "EM408_CON" device in order to connect the EM408 to your design. + + + + + + + + + + + + +<b>ET312 GPS Receiver</b> +Proven layout and schematic for SiRF III ET312 GPS receiver. This footprint has been tweaked significantly to work with the ET312. This footprint has been fully qualified. Spark Fun Electronics SKU : GPS-08268. + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>GE863 Cellular Module with GPS</b> +Proto layout and schematic for GE863 cellular module with SiRF III GPS. Spark Fun Electronics SKU : CEL-08246 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Telit quad cell module (see CEL-09296) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Telit quad cell module (CEL-09720) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Telit quad cell module (CEL-09720) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>GM862 Cellular Module with GPS</b> +Proven layout and schematic for GM862 cellular module with SiRF III GPS. Spark Fun Electronics SKU : CEL-07917 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GP-2106 GPS SiRF IV + + + + + + + + + + + + + + + + + + + + +<b>GR-10 GPS Receiver Module</b> +Proto layout and schematic for GR-10 GPS receiver. Spark Fun Electronics SKU : GPS-08291 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +50 Channel GS406 Helical GPS Receiver - SMD Connector. The Mating SMD SPECIAL is called SPECIAL for a reason. This package was only made in order to make a dummy gs407 PCB with mating connector (used for testing). + +sku: GPS-09079 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GainSpan GS1011M Low-Power Wireless SOC Wi-Fi Module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RFID reader for ID2, ID12, and ID20 Package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Lassen iq +12-Channel GPS receiver. Schematic and footprint production proven. Spark Fun Electronics SKU : GPS-00163. Surface mount mating connector : GPS-00170 + + + + + + + + + + + + + + + + + + + + + + +<h3> LS20126 20-Channel GPS Module</h3><br> +SparkFun SKU# <b>GPS-09838</b><br> +The LOCOSYS LS20126 GPS smart antenna module is a high sensitivity, low power, SMD type, 20 channels with built-in magnetic sensor, 3-axial acceleration sensor L1 GPS receiver and 10mm patch antenna designed for portable applications. + + + + + + + + + + + + + + + + + + + + + + + + +nRF2401A 2.4GHz transceiver module, WRL-00153 + + + + + + + + + + + + + + + + + + + + + +MLX90121 13.56MHz RFID Transceiver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MN5010HS GPS Receiver Module. Packagse GR-10 and MN5010HS are NOT tested with this device. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>2.4GHz ANT IC</b> +Nordic Semiconductor 2.4GHz transceiver that implements the ANT protocol. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>2.4GHz Low Power Transceiver</b> +This is the very popular, low cost, very low power RF transceiver from Nordic Semiconductor. Simple SPI interface. SKU: COM-00690 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2.4GHz transceiver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2.4GHz transceiver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2.4GHz transceiver + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>2.4GHz Transceiver</b> +This is the very popular, low power RF transceiver from Nordic Semiconductor. Used in the Nike+iPod product. SKU: COM-00300 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>FM Transmitter</b> +2mW transmitter NS73M. Easy SPI interface. Digital tuning. SKU: WRL-08452 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RF Link receivers- WRL-8947, 8948, 8949, 8950 + + + + + + + + + + + + + + + + + + +RF Link transmitters WRL-8945, 8946 + + + + + + + + + + + + + + + + + + +<b>RF24G Header</b> This is the header for connections to the RF24G Transceiver (SparkFun Electronics SKU: WRL-00151), used in the Breakout Board for RF24G Transceiver (SparkFun Electronics SKU: BOB-00196). This footprint has not yet been proven in production. + + + + + + + + + + + + + + + + + + + + + + + + +The RFM22 is a low-power, low cost radio that is capable of operating in the 434MHz and 900MHz open bands. It's frequency is software defined and there are some very good libraries written for it. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Polar Heart Rate Monitor module + + + + + + + + + + + + + + + + + + + + + + + + + +Roving Netowrks WiFLy GSX Module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +WiFi Module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Redpine WiFi module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FM receiver IC. Tested with Si4703. You really only need SEN, RST, SCLK, and SDIO to get a full FM radio working. Antenna comes from headphone jack. See BOB-10344. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Silicon Labs FM Receiver</b><p> +76-108 MHz FM band support with integrated VCO, automatic gain control, automatic frequency control and seek tuning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +13.56MHz RFID Mifare Read/Write Module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Quad-band GSM modem + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPS low noise amplifier, 18dB gain, low external parts count + + + + + + + + + + + + + + + + + + + + +SUP500F Venus GPS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2.4GHz wireless module + + + + + + + + + + + + + + + + + + + + + + + + +Venus634 from SkyTraq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Venus638FLPX-L GPS Receiver</b><p> + +Venus638FLPx is a high performance, low cost, single +chip GPS receiver targeting mobile consumer and cellular +handset applications. It offers very low power +consumption, high sensitivity, and best in class signal +acquisition and time-to-first-fix performance.<p> +Venus638FLPx contains all the necessary components of +a complete GPS receiver, includes 1.2dB cascaded +system NF RF front-end, GPS baseband signal processor, +0.5ppm TCXO, 32.768kHz RTC crystal, RTC LDO +regulator, and passive components. It requires very low +external component count and takes up only 100mm2 +PCB footprint.<p> +Dedicated massive-correlator signal parameter search +engine within the baseband enables rapid search of all the +available satellites and acquisition of very weak signal. An +advanced track engine allows weak signal tracking and +positioning in harsh environments such as urban canyons +and under deep foliage. The self-contained architecture keeps GPS processing off +the host and allows integration into applications with very +little resource.<p> +FEATURES<p> +<ul> +<li>20Hz update rate</li> +<li>-148dBm cold start sensitivity</li> +<li>-165dBm tracking sensitivity</li> +<li>29 second cold start TTFF</li> +<li>3.5 second TTFF with AGPS</li> +<li>1 second hot start</li> +<li>2.5m accuracy</li> +<li>Multipath detection and suppression</li> +<li>Jamming detection and mitigation</li> +<li>SBAS (WAAS / EGNOS) support</li> +<li>7-day extended ephemeris AGPS</li> +<li>67mW full power navigation</li> +<li>Works directly with active or passive antenna</li> +<li>Internal flash for optional 75K point data logging</li> +<li>Supports external SPI flash memory data logging</li> +<li>Complete receiver in 10mm x 10mm x 1.3mm size</li> +<li>Contains LNA, SAW Filter, TCXO, RTC Xtal, LDO</li> +<li>Pb-free RoHS compliant</li> +</ul> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +WiFi module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>DPAC WiFi Module</b> +Footprint for DPAC wireless module. Not fully tested so double check it. Spark Fun Electronics SKU : (Module) WRL-00665, (Connector) WRL-00673 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Blue Giga Audio Bluetooth Module + +Footprint is not confirmed yet. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Xbee module footprints<br> +SMT header is CONN-09042. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Xtend Digi Modem WRL-09411 + + + + + + + + + + + + + + + + + + + + + + + + + +WiFi transceiver module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +BlueGiga Bluetooth 4.0 module<br> +with integrated chip antenna and onboard<br> +8051 processor and peripherals + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +BlueRadios BlueTooth 4.0 Module<br> +BR-LE4.0-S2A<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>Electric Imp SD Socket</h3> +This symbol matches the <a href="https://www.sparkfun.com/products/11395">Electric Imp</a> pinout to a 4UCONN SD MMC connector.<br> +<br> +The 4UCONN part number is <a href="http://www.4uconnector.com/online/Itemadrawing.asp?fldseries=19646&seriesno_a=12">19646</a>.<br> +<br> +See this part in action on the <a href="https://www.sparkfun.com/products/11400">Electric Imp Breakout</a>. + + + + + + + + + + + + + + + + + + + + + + + + + + + +<H3>Blue Creations BC127 BLE module</H3><p> +Hyper-competent Bluetooth 4.0 module, with:<br> +- Pre-4.0 support<br> +- 4 Cap sense inputs<br> +- 1 Analog input<br> +- 8 GPIO<br> +- 3 Open-drain LED drivers<br> +- Onboard battery charge circuitry<br> +- SPP/UART support<br> +- PCM Audio support<br> +- SPI port<br> +- Built-in USB<br> +- All kinds of other crazy crap<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TI CC3000 WiFi Module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Resistors.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Resistors.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Resistors.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Resistors.lbr @@ -0,0 +1,2724 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>Name +>Value + + +This is the "EZ" version of the standard .3" spaced resistor package.<br> +It has a reduced top mask to make it harder to install upside-down. + + + + + + + + + + +>Name +>Value + + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>CAPACITOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + + + + +1/6W Thru-hole Resistor - *UNPROVEN* + + + + + + +>NAME +>VALUE + + + + + + +>NAME +>VALUE + + + + +1/4W Resistor, 0.4" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +1/2W Resistor, 0.5" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +1W Resistor, 0.6" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +2W Resistor, 0.8" wide<p> + +Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a> + + + + + + +>Name +>Value + + +<h3>AXIAL-0.3-KIT</h3> + +Commonly used for 1/4W through-hole resistors. 0.3" pitch between holes.<br> +<br> + +<b>Warning:</b> This is the KIT version of the AXIAL-0.3 package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Chip Resistor Array</b> size 4 × 0603<p> +convex termination - Phycomp Components<br> +Source: RS Components + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>Name +>Value + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +<b>Resistor</b> +Basic schematic elements and footprints for 0603, 1206, and PTH resistors. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Array Chip Resistor</b><p> +Source: RS Component / Phycomp + + + + + + + + + + + + + + + + + + + + + + + + + +BOURNS 4600X series thick-film SIP resistor packs<br> +<br> +Five resistors bussed to a single pin (denoted by dot).<br> +0.2W / resistor<br> +<a href="http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Components/General/4600x.pdf">datasheet</a><br> +<br> +SFE parts COM-10855 (330), COM-10856 (10K)<br> + + + + + + + + + + + + + + + + + + + + +787-ohm SMT<BR> +1/10W - 1% (0603)<BR> +RES-11228 + + + + + + + + + + + + + + + + + + + +220-ohm SMT<br> +1/8W - 5% (0805)<br> +RES-07866 + + + + + + + + + + + + + + + + + + + +22M-ohm SMT<BR> +1/10W - 10% (0603)<BR> +RES-11132 + + + + + + + + + + + + + + + + + + + +1k-ohm SMT<BR> +1/10W - 1% (0603)<BR> +RES-07856 + + + + + + + + + + + + + + + + + + + +10k-ohm SMT<br> +1/10W - 1% (0603)<br> +RES-00824 + + + + + + + + + + + + + + + + + + + +8.2k-ohm SMT<BR> +1/10W - 5% (0603)<BR> +RES-10646 + + + + + + + + + + + + + + + + + + + +33k-ohm SMT<BR> +1/10W - 1% (0603)<BR> +RES-08416 + + + + + + + + + + + + + + + + + + + +100-ohm SMT<BR> +1/10W - 1% (0603)<BR> +RES-07863 + + + + + + + + + + + + + + + + + + + +1M-ohm SMT<br> +1/10W - 1% (0603)<br> +RES-07868 + + + + + + + + + + + + + + + + + + + +RES-08609 + + + + + + +RES-10701 + + + + + + +RES-08140 + + + + + + +RES-09018 + + + + + + +RES-08354 + + + + + + +RES-09738 + + + + + + +RES-10727 + + + + + + +RES-09883 + + + + + + + + + + + + + + + + + + + +RES-08366 + + + + + + +RES-08787 + + + + + + +RES-08412 + + + + + + +RES-08474 + + + + + + + + + + + + + + + + + + + +RES-08078 + + + + + + +RES-08269 + + + + + + +RES-09453 + + + + + + +RES-09821 + + + + + + +RES-10447 + + + + + + +RES-08413 + + + + + + +RES-09452 + + + + + + +RES-10055 + + + + + + + + + + + + + + + + + + + +RES-11019 + + + + + + +RES-09567 + + + + + + +RES-11114 + + + + + + +RES-10700 + + + + + + +RES-08505 + + + + + + +RES-08306 + + + + + + +RES-08361 + + + + + + +RES-09119 + + + + + + +RES-09332 + + + + + + +RES-10896 + + + + + + +RES-10698 + + + + + + +RES-09834 + + + + + + +RES-08705 + + + + + + +RES-09570 + + + + + + +RES-10136 + + + + + + +RES-07863 + + + + + + + + + + + + + + + + + + + +RES-09565 + + + + + + +RES-08059 + + + + + + +RES-10686 + + + + + + +RES-07828 + + + + + + + + + + + + + + + + + + + +RES-09331 + + + + + + +RES-09498 + + + + + + +RES-09573 + + + + + + +RES-10751 + + + + + + +RES-10636 + + + + + + +RES-09435 + + + + + + +RES-00824 + + + + + + + + + + + + + + + + + + + +RES-08375 + + + + + + + + + + + + + + + + + + +RES-08283 + + + + + + +RES-09327 + + + + + + +RES-09825 + + + + + + +RES-10696 + + + + + + +RES-09378 + + + + + + +RES-10010 + + + + + + +RES-10327 + + + + + + +RES-08603 + + + + + + +RES-09571 + + + + + + +RES-08601 + + + + + + +RES-11028 + + + + + + +RES-10479 + + + + + + +RES-09117 + + + + + + +RES-09330 + + + + + + +RES-11360 + + + + + + +RES-07854 + + + + + + + + + + + + + + + + + + + +RES-10808 + + + + + + +RES-08788 + + + + + + +RES-08364 + + + + + + +RES-10066 + + + + + + +RES-07856 + + + + + + + + + + + + + + + + + + + +RES-08380 + + + + + + +RES-09769 + + + + + + +RES-07868 + + + + + + +RES-09329 + + + + + + +RES-09559 + + + + + + +RES-08296 + + + + + + + + + + + + + + + + + + + +RES-07823 + + + + + + +RES-10691 + + + + + + +RES-08148 + + + + + + +RES-08272 + + + + + + + + + + + + + + + + + + + +RES-09288 + + + + + + +RES-09568 + + + + + + +RES-11227 + + + + + + +RES-08476 + + + + + + +RES-09300 + + + + + + +RES-09382 + + + + + + +RES-07862 + + + + + + +RES-09937 + + + + + + +RES-08220 + + + + + + +RES-10221 + + + + + + +RES-09385 + + + + + + + + + + + + + + + + + + + +RES-10220 + + + + + + +RES-09383 + + + + + + + + + + + + + + + + + + + +RES-09231 + + + + + + +RES-08471 + + + + + + +RES-09884 + + + + + + +RES-08698 + + + + + + +RES-08703 + + + + + + +RES-09384 + + + + + + +RES-10695 + + + + + + +RES-07861 + + + + + + +RES-08376 + + + + + + +RES-07866 + + + + + + +RES-08969 + + + + + + + + + + + + + + + + + + + +RES-10688 + + + + + + +RES-07853 + + + + + + + + + + + + + + + + + + + +RES-11132 + + + + + + +RES-07849 + + + + + + + + + + + + + + + + + + + +RES-08379 + + + + + + +RES-08598 + + + + + + +RES-09334 + + + + + + +RES-11382 + + + + + + +RES-11364 + + + + + + +RES-10752 + + + + + + +RES-09343 + + + + + + +RES-08600 + + + + + + +RES-07867 + + + + + + +RES-10054 + + + + + + + + + + + + + + + + + + + +RES-10937 + + + + + + +RES-10690 + + + + + + +RES-07851 + + + + + + + + + + + + + + + + + + +RES-11057 + + + + + + + + + + + + + + + + + + +RES-08417 + + + + + + +RES-08701 + + + + + + +RES-08595 + + + + + + + + + + + + + + + + + + + +RES-10328 + + + + + + +RES-10219 + + + + + + +RES-10809 + + + + + + + + + + + + + + + + + + + +RES-08270 + + + + + + +RES-10694 + + + + + + +RES-00818 + + + + + + + + + + + + + + + + + + + +RES-08371 + + + + + + +RES-10685 + + + + + + +RES-08968 + + + + + + +RES-08416 + + + + + + +RES-08602 + + + + + + +RES-09992 + + + + + + +RES-07864 + + + + + + + + + + + + + + + + + + + +RES-08377 + + + + + + +RES-11226 + + + + + + +RES-09381 + + + + + + +RES-09569 + + + + + + +RES-10699 + + + + + + +RES-08102 + + + + + + +RES-08295 + + + + + + +RES-10689 + + + + + + +RES-07857 + + + + + + +RES-07855 + + + + + + +RES-07858 + + + + + + + + + + + + + + + + + + + +RES-10697 + + + + + + +RES-10693 + + + + + + +RES-07869 + + + + + + + + + + + + + + + + + + + +RES-08079 + + + + + + +RES-08806 + + + + + + +RES-10687 + + + + + + +RES-07871 + + + + + + + + + + + + + + + + + + + +RES-09497 + + + + + + +RES-09542 + + + + + + +RES-09572 + + + + + + +RES-07872 + + + + + + +RES-08805 + + + + + + +RES-09823 + + + + + + +RES-09451 + + + + + + +RES-11075 + + + + + + +RES-08717 + + + + + + +RES-08495 + + + + + + +RES-10544 + + + + + + +RES-10301 + + + + + + +RES-10897 + + + + + + +RES-09938 + + + + + + +RES-08597 + + + + + + +RES-09826 + + + + + + +RES-09377 + + + + + + +RES-09993 + + + + + + +RES-08401 + + + + + + +RES-10276 + + + + + + +RES-07860 + + + + + + +RES-09380 + + + + + + +RES-10692 + + + + + + +RES-09333 + + + + + + + + + + + + + + + + + + + +RES-09301 + + + + + + +RES-09939 + + + + + + +RES-10463 + + + + + + +RES-07850 + + + + + + +RES-07824 + + + + + + +RES-07852 + + + + + + +RES-09737 + + + + + + +RES-11228 + + + + + + +RES-09547 + + + + + + +RES-10646 + + + + + + +RES-11381 + + + + + + +RES-09991 + + + + + + +RES-10744 + + + + + + +RES-09379 + + + + + + +RES-10268 + + + + + + +RES-10267 + + + + + + +RES-08599 + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Sensors.lbr Index: Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Sensors.lbr ================================================================== --- Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Sensors.lbr +++ Hardware/Board/Firenet/SparkFun-Eagle-Libraries-master/SparkFun-Sensors.lbr @@ -0,0 +1,12906 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>SparkFun Electronics' preferred foot prints</h3> +In this library you'll find sensors- accelerometers, gyros, compasses, magnetometers, light sensors, imagers, temp sensors, etc.<br><br> +We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com. +<br><br> +<b>Licensing:</b> CC v3.0 Share-Alike You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage. + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name +LED Placement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +X +Z +Y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +X +Y +Z + + +ADXRS6xx and ADXRS150, 300, and 401 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Small Outline Package</b> Fits JEDEC packages (narrow SOIC-8) + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +MQ-3 in Configuration B + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +//Kentro/work/Production/QC/Footprint Improvements/HDJD-S822-QR999/DSCF5424-cropped-contrast-bit.bmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +HIH-4030 Humidity Sensor + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +Y +X +Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Y +X + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Z +X +Y +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +N + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X +Y +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X +Y +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X +Y +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +X +Y +Z + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + +QFN package with a 6x8 pin configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X +Y +>NAME +>VALUE +Z + + +<h3>16-pin LGA Package</h3> +4x4x1.1mm<br> +0.65mm pitch<br> +4pins-by-4pins<br> +<br> +Package used by L3G4200D 3-axis gyro<br> +<br> +<B>***UNPROVEN***</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +Z +Y +X + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +LGA16 (3x3x1mm) + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Untested fp for LGA28 package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Y +X +Z + + + + + + + + + + + + + + + + +LGA16 for LY530AL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Z+ +X+ +Y+ + + +10-pin DFN, 2mm x 2mm x 0.85mm + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Small Outline Transistor</b> + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +X +Y +Z +Untested revision + + + +<h3>QFN-16 0.5mm Pitch</h3> +3 x 3mm Outline<br> +16-pin<br> +Used on the MMA8452Q accelerometer<br> +<br> +<b>Unproven</b><br> +<br> +Layout in accordance with App note AN4077<br> +http://cache.freescale.com/files/sensors/doc/app_note/AN4077.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +X +Y +Z + + + + + + + + + + + + + + + + + + +<h4>LGA8 Package</h4> +<ul><li> 5.0x3.0x1.2mm</li> +<li>8-pad</li><br></ul> +Used in MPL115A1 - + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + +** 20-pin QFN ** +initially designed for MPR121 | +0.4mm pitch | +3x3x0.65mm | +** VERY UNPROVEN ** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +Footprint for the OS4000-T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>Name +>Value + + +<h3>PHOTOCELL-KIT</h3> +Through-hole photocell (http://www.sparkfun.com/products/9088)<br> +<br> +<b>Warning:</b> This is the KIT version of this package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side. + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +K +E +C +S +E +>NAME +>VALUE +0.125" DRILL + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X +Y +Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + +<b>SHT1x</b> +Sensirion Humdity Sensor + + + + + + + + + + + + + + + + + + + +>Value +>Name + + +ODFN: 1.5mm x 1.5mm. Used on the Si1120 + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + +<b>TO 92</b> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>Name +>Value + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>VCNL4000 Footprint</h3> +For Vishay VNCL4000 proximity and ambient light sensor.<br> +<br> +<b>Unproven</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +X +Y +Z + + +This is the testing package I pulled from the MPU-6050 breakout board. This package is tested and works. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Y +X +Z +C:/Documents and Settings/jbartlett/Desktop/mpu-6050.bmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +C:/Users/kade.jensen/Desktop/IC-09303.bmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Description:</b> HTU21D is a very small, low cost, I2C digital humidity and temperature sensor. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value +X +Y +Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>Name +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +IR +VIS +SENSOR + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +GND +>Name +>Value + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Value +>Name +A +K +C +E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + + + + + + + + + + + +>NAME +>Value + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + +>Name +>Value + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>Name +>Value + + + + + + + + +Transchip TC5747 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME +>VALUE + + + + + + + + +MQ-4 Methane gas sensor + + + + + + + + + +MPU-9150: 9DOF (3mag, 3accel, 3rotat) + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +MPU-6000 - 6DOF w/ I2C and SPI interface. + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +<b>Description:</b> The HTU21D is a very small, low cost, I2D digitally controlled humidity and temperature sensor. + + + + +>Name +>Value + + + + + + + + + + + + + + + + + +>Name +>Value + + +BOSCH BMP180 DIGITAL BAROMETRIC PRESSURE SENSOR<p> + +Web page: <a href="http://www.bosch-sensortec.com/en/homepage/products_3/environmental_sensors_1/bmp180_1/bmp180">http://www.bosch-sensortec.com/en/homepage/products_3/environmental_sensors_1/bmp180_1/bmp180</a><br> +Datasheet: <a href="http://ae-bst.resource.bosch.com/media/products/dokumente/bmp180/BST-BMP180-DS000-09.pdf"> http://ae-bst.resource.bosch.com/media/products/dokumente/bmp180/BST-BMP180-DS000-09.pdf</a><p> + +The BMP180 is the function compatible successor of the BMP085, a new generation of high +precision digital pressure sensors for consumer applications.<p> +The ultra-low power, low voltage electronics of the BMP180 is optimized for use in mobile phones, +PDAs, GPS navigation devices and outdoor equipment. With a low altitude noise of merely 0.25m at +fast conversion time, the BMP180 offers superior performance. The I2C interface allows for easy +system integration with a microcontroller.<p> +The BMP180 is based on piezo-resistive technology for EMC robustness, high accuracy and linearity as +well as long term stability.<p> + +Key features:<p> + +- Temperature measurement included<br> +- I2C interface<br> +- Fully calibrated<br> +- Pb-free, halogen-free and RoHS compliant,<br> +- MSL 1<p> + +Basic specs:<p> + +Pressure range: 300 to 1100hPa (+9000m to -500m relating to sea level)<br> +Supply voltage: 1.8 to 3.6V (VDD), 1.62V to 3.6V (VDDIO)<br> +Package: LGA package with metal lid<br> +Small footprint: 3.6mm x 3.8mm<br> +Super-flat: 0.93mm height<br> +Low power: 5μA at 1 sample / sec. in standard mode<br> +Low noise: 0.06hPa (0.5m) in ultra low power mode, 0.02hPa (0.17m) advanced resolution mode<p> + +Typical applications:<p> + +- Enhancement of GPS navigation (dead-reckoning, slope detection, etc.)<br> +- In- and out-door navigation<br> +- Leisure and sports<br> +- Weather forecast<br> +- Vertical velocity indication (rise/sink speed) + + + + + + + + + +>NAME +>VALUE + + + + +Omnidirection bottom-port MEMS microphone + + + + + + + + + + + + + + + + + + + +Omnidirectional bottom-port MEMS microphone (digital output) + + + + + + + + + + + + + + + + + + + + + +Optical mouse sensor (SPI) + + + + + + + + + + + + + + + + + + + + + + +Configurable 50-500g 1-axis MEMS accelerometer, digital output + + + + + + + + + + + + + + + + + + + + + + +250g accelerometer analog out + + + + + + + + + + + + + + + + + + + +<b>Triple Axis Accelerometer</b> +Analog Devices ADXL330 +/-3g 2.4V-5.25V Analog output. Spark Fun Electronics SKU : COM-00730. Center pad paste layer has been reduced to avoid shorting. + + + + + + + + + + + + + + + + + + + + + + + + +3-axis, 3g accelerometer, analog out + + + + + + + + + + + + + + + + + + + + + + + + +3-axis SPI/I2C 2/4/8/16g accelerometer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Various MEMS gyros- ADXRS6xx, 150, 300, 401 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +One channel capacitive touch sense + + + + + + + + + + + + + + + + + + + + +3-axis, 14-bit SPI/I2C accelerometer.<br> +Range 1/1.5/2/3/4/8/16g. + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>BMP085 Pressure Sensor</b> Great little MEMS pressure sensor. SKU: COM-09603 + + + + + + + + + + + + + + + + + + + + + + +<b>640x480 CMOS Color Camera</b> +Footprint proven. Spark Fun Electronics Camera SKU : SEN-00637, Mating Connector SKU : SEN-00638 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-axis 2/8g analog output accelerometer + + + + + + + + + + + + + + + + + + + + + + +3-axis 2/8g I2c/SPI accelerometer + + + + + + + + + + + + + + + + + + + + + + +<b>DCM01 Reflective Blood Sensor</b><br> +UNPROVEN<br> +Sensor head for Pulse Oximeter. Contains IR and visible red LEDs, and PIN photodiode.<br> +<href="http://www.apmkr.com/bio-device/DCM01_datasheet.pdf">http://www.apmkr.com/bio-device/DCM01_datasheet.pdf</a> + + + + + + + + + + + + + + + + + + +STMicro 3-axis accelerometer with tap detection- orientation output only. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MQ-3 alcohol gas sensor . FP not tested. SEN-08880. + + + + + + + + + + + + + + + + + + +Hall effect sensor in SC70 package + + + + + + + + + + + + + + + + + +Avago RGB color sensor, analog out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Humidity Sensor + + + + + + + + + + + + + + + + + +Honeywell 1-axis magnetometer + + + + + + + + + + + + + + + + + + + + + + +Honeywell 1-axis magnetometer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>HMC1052L</b> +Dual axis magnetic sensor. Used for compass and magnetometer applications. Schematic and footprint are not tested and probably need fixing. Spark Fun Electronics SKU : COM-00708 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Honeywell 3-axis digital compass IC, SEN-09371 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3 Axis Digital Compass IC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Honeywell 2-axis magnetic sensor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Honeywell compass IC with tilt compensation, SEN-08656 + + + + + + + + + + + + + + + + + + + + + + + +Compass module from Honeywell. Works very well. Schematic and footprint are production proven. Spark Fun Electronics SKU : COM-07892 + + + + + + + + + + + + + + + + + + + + + + +Invensense 300deg/s dual axis gyro. Works very well. Schematic and footprint are not yet production proven. Spark Fun Electronics SKU : COM-00700 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Invensense 500 deg/s MEMS Gyro, COM-09070 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Invensense dual-axis 67 deg/s gyro, COM-09071 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-axis I2C programmable gyro.<BR> +Can interface with an I2C accelerometer to provide 6-axis motion information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TSOP85238 38kHz IR receiver with built in demodulation and filtering- SEN-08545 + + + + + + + + + + + + + + + + + + + +Light-to-voltage converter. + + + + + + + + + + + + + + + + + + + + +ISZ500 Single axis gyro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ITG-3200 3-axis gyro, digital output, qfn24 package + + + + + + + + + + + + + + + + + + + + + + + + + +IXZ-500 Dual Axis (X/Z) Gyro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>L3G4200D Three-axis, digital output gyroscope</h3> +The L3G4200D is a low-power three-axis angular rate sensor, has a full scale of ±250/±500/±2000 dps and is capable of measuring rates with a user-selectable bandwidth.<br><br> +It includes a sensing element and an IC interface capable of providing the measured angular rate to the external world through a digital interface (I2C/SPI). +<hr> +<b>Package:</b> 4x4x1.1 LGA-16 (LGA16-4x4.PAC)<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-axis 2/6g I2C/SPI accelerometer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-axis I2C/SPI 2/8g accelerometer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-axis 6/12/24g SPI/I2C accelerometer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Single-axis 300 deg/s analog gyroscope.<br> +Untested part. + + + + + + + + + + + + + + + + + + + + + + + + + +10mV/degF, 1 degF accurate analog temp sensor + + + + + + + + + + + + + + + + + +<h3>Half-wheatstone bridge Load Cell</h3> + + + + + + + + + + + + + + + + + +I2C accelerometer/magnetometer/tilt compensated compass + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Through-hole side-receiving IR phototransistor + + + + + + + + + + + + + + + + +Single-axis 300deg/s gyro w/available 4x amplified output + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-axis 400/1600 deg/s analog output gyroscope + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-axis digital (I2C) magnetometer + + + + + + + + + + + + + + + + + + + + + + + +Analog-output temperature sensor + + + + + + + + + + + + + + + + + +Omni-directional electret microphone. 9.7mm standard diameter. + + + + + + + + + + + + + + + + + + + + + + + + + + + +Single axis 150 deg/s analog and SPI MEMs gyroscope. Spark Fun Electronics SKU: COM-08336 and others + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Non-contact PIR I2C interface temperature sensor + + + + + + + + + + + + + + + + + + +Freescale 3-axis 1.5/2/4/6g analog output accelerometer.<BR> +Schematic element and footprint production proven. Center pad has reduced paste layer for solder short reduction. Spark Fun Electronics SKU : COM-00308 + + + + + + + + + + + + + + + + + + + + + + + +3-axis 1.5/6g analog output accelerometer<br> +IC-09489 + + + + + + + + + + + + + + + + + + + + + + + + + + +<h3>MMA8452Q 3-Axis, 12/8-bit Digital Accelerometer</h3> +<ul> +<li><B>Supply Voltage:</b> 1.6-3.6V</li> +<li><B>Range:</b> +/- 2g, 4g, 8g</li> +<li><B>Interface:</b> I<sup>2</sup>C, 12-bit and 8-bit</li> +<li><b>ODR:</b> 1.56 Hz - 800 Hz</li> +<li><B>Package:</b> QFN-16</li> +</ul> +<br> +<br> +http://cache.freescale.com/files/sensors/doc/data_sheet/MMA8452Q.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b><h3>MPL115A1 (SPI) and MPL115A2 (I2C) Miniature Digital Barometer</h3></b> +<br> +5.0x3.0x1.2mm LGA Package + + + + + + + + + + + + + + + + + + + + + + +Altimeter/Pressure Sensor, I2C, 1.95V-3.6V supply, 50 to 110kPa + + + + + + + + + + + + + + + + + + + + + + +OS4000-T tilt-compensated compass module + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CdS photoresistor. This is a low cost way to detect light levels. Resistance decreases with more incoming light. SparkFun SKU: SEN-09088 + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PHOTOTRANSISTOR REFLECTIVE OBJECT SENSOR</b> +<p> +The QRB1113/1114 consists of an infrared emitting diode and an NPN silicon phototransistor mounted side by side on a converging +optical axis in a black plastic housing. The phototransistor responds to radiation from the emitting diode only when a reflective +object passes within its field of view. The area of the optimum response approximates a circle .200" in diameter. +<p>Datasheet: http://www.sparkfun.com/datasheets/Sensors/QRB1114.pdf +<p>MAX RATINGS: +<p>EMITTER +<br>Continuous Forward Current (IF) 50 mA +<br>Reverse Voltage (VR) 5 V +<br>Power Dissipation (PD) 100 mW +<p>SENSOR +<br>Collector-Emitter Voltage (VCEO) 30 V +<br>Emitter-Collector Voltage (VECO) 4.5 V +<br>Collector Current 20 mA +<br>Power Dissipation (PD) 100 mW + + + + + + + + + + + + + + + + + + +Reflective object sensor + + + + + + + + + + + + + + + + + + +Reflective object sensor + + + + + + + + + + + + + + + + + + + + +Dual 4g accelerometer, SPI and analog out + + + + + + + + + + + + + + + + + + + + + + + + + + +2g SPI accelerometer with interrrupt + + + + + + + + + + + + + + + + + + + + + + + + + + + +Barometric pressure sensor. Schematic elements and footprint production proven. Spark Fun Electronics SKU : COM-08128 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SHT1x Humdity Sensor</b> +Sensirion humdity sensor. Schematic element and footprint proven. Spark Fun Electronics SKU : COM-08227 + + + + + + + + + + + + + + + + + + +Si1120: Proximity/Ambient Light Sensor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ultrasonic range sensor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1.3MP color image sensor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TO-92 temp sensor + + + + + + + + + + + + + + + + + +<b>Ambient Light Sensor</b> +Simple light detection sensor. Output varies with light intensity input. Spark Fun Electronics SKU : COM-08348 + + + + + + + + + + + + + + + + + + + + + + + + + +Precision degC temp sensor, analog out + + + + + + + + + + + + + + + + + + + + + + + + + + + +I2C degC temp sensor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Electrode for resistive touch detection + + + + + + + + + + + + + + + + + + + + + + + + + +CMOS image sensor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fully integrated proximity and ambient light sensor with infrared emitter and I2C interface<br> +<br> + + + + + + + + + + + + + + + + + + + + + + +LND712 Geiger Tube (COM-08875) + + + + + + + + + + + + + + + + +Micropower 3-axis accelerometer<BR> +2/4/8g digital output (SPI)<br> +IC-11297 + + + + + + + + + + + + + + + + + + + + + + + + + + +MQ-4 Methane Gas Sensor<br> +SEN-09404 + + + + + + + + + + + + + + + + + + + + +9DOF (3mag, 3accel, 3rotat). I2C interface. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MPU-6000 - I2C address is 0x68 with AD0 low and 0x69 with AD0 high. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MPR121 Capacitive Touch Sensor Controller. Variant "V2" was created using an image import of the bottom of the IC. It matches metal to metal. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Description:</b> Footprint and symbol for the GP-635T GPS module. This is a very small, very accurate, low-cost GPS receiver. Footprint works with SKU GPS-00579. Use cable GPS-00574 or GPS-09123 to connect the receiver to this footprint+connector. + + + + + + + + + + + + + + + + + + + + +BOSCH BMP180 DIGITAL BAROMETRIC PRESSURE SENSOR<p> + +Web page: <a href="http://www.bosch-sensortec.com/en/homepage/products_3/environmental_sensors_1/bmp180_1/bmp180">http://www.bosch-sensortec.com/en/homepage/products_3/environmental_sensors_1/bmp180_1/bmp180</a><br> +Datasheet: <a href="http://ae-bst.resource.bosch.com/media/products/dokumente/bmp180/BST-BMP180-DS000-09.pdf"> http://ae-bst.resource.bosch.com/media/products/dokumente/bmp180/BST-BMP180-DS000-09.pdf</a><p> + +The BMP180 is the function compatible successor of the BMP085, a new generation of high +precision digital pressure sensors for consumer applications.<p> +The ultra-low power, low voltage electronics of the BMP180 is optimized for use in mobile phones, +PDAs, GPS navigation devices and outdoor equipment. With a low altitude noise of merely 0.25m at +fast conversion time, the BMP180 offers superior performance. The I2C interface allows for easy +system integration with a microcontroller.<p> +The BMP180 is based on piezo-resistive technology for EMC robustness, high accuracy and linearity as +well as long term stability.<p> + +Key features:<p> + +- Temperature measurement included<br> +- I2C interface<br> +- Fully calibrated<br> +- Pb-free, halogen-free and RoHS compliant,<br> +- MSL 1<p> + +Basic specs:<p> + +Pressure range: 300 to 1100hPa (+9000m to -500m relating to sea level)<br> +Supply voltage: 1.8 to 3.6V (VDD), 1.62V to 3.6V (VDDIO)<br> +Package: LGA package with metal lid<br> +Small footprint: 3.6mm x 3.8mm<br> +Super-flat: 0.93mm height<br> +Low power: 5μA at 1 sample / sec. in standard mode<br> +Low noise: 0.06hPa (0.5m) in ultra low power mode, 0.02hPa (0.17m) advanced resolution mode<p> + +Typical applications:<p> + +- Enhancement of GPS navigation (dead-reckoning, slope detection, etc.)<br> +- In- and out-door navigation<br> +- Leisure and sports<br> +- Weather forecast<br> +- Vertical velocity indication (rise/sink speed) + + + + + + + + + + + + + + + + + + + + + + ADDED Hardware/Board/Firenet/channels.numbers/Contents/PkgInfo Index: Hardware/Board/Firenet/channels.numbers/Contents/PkgInfo ================================================================== --- Hardware/Board/Firenet/channels.numbers/Contents/PkgInfo +++ Hardware/Board/Firenet/channels.numbers/Contents/PkgInfo @@ -0,0 +1,1 @@ +???????? ADDED Hardware/Board/Firenet/channels.numbers/QuickLook/Thumbnail.jpg Index: Hardware/Board/Firenet/channels.numbers/QuickLook/Thumbnail.jpg ================================================================== --- Hardware/Board/Firenet/channels.numbers/QuickLook/Thumbnail.jpg +++ Hardware/Board/Firenet/channels.numbers/QuickLook/Thumbnail.jpg cannot compute difference between binary files ADDED Hardware/Board/Firenet/channels.numbers/document-thumbnail.tiff Index: Hardware/Board/Firenet/channels.numbers/document-thumbnail.tiff ================================================================== --- Hardware/Board/Firenet/channels.numbers/document-thumbnail.tiff +++ Hardware/Board/Firenet/channels.numbers/document-thumbnail.tiff cannot compute difference between binary files ADDED Hardware/Board/Firenet/channels.numbers/index.xml.gz Index: Hardware/Board/Firenet/channels.numbers/index.xml.gz ================================================================== --- Hardware/Board/Firenet/channels.numbers/index.xml.gz +++ Hardware/Board/Firenet/channels.numbers/index.xml.gz cannot compute difference between binary files Index: Hardware/Board/Firenet/eagle.epf ================================================================== --- Hardware/Board/Firenet/eagle.epf +++ Hardware/Board/Firenet/eagle.epf @@ -1,34 +1,21 @@ [Eagle] -Version="05 07 00" +Version="06 06 00" Platform="Mac OS X" Serial="62191E841E-LSR-WLM-1EL" Globals="Globals" Desktop="Desktop" [Globals] AutoSaveProject=1 -UsedLibrary="/LApps/Eagle/lbr/atmel.lbr" -UsedLibrary="/LApps/Eagle/lbr/battery.lbr" -UsedLibrary="/LApps/Eagle/lbr/capacitor-wima.lbr" -UsedLibrary="/LApps/Eagle/lbr/crystal.lbr" -UsedLibrary="/LApps/Eagle/lbr/diode.lbr" -UsedLibrary="/LApps/Eagle/lbr/frames.lbr" -UsedLibrary="/LApps/Eagle/lbr/fuse.lbr" -UsedLibrary="/LApps/Eagle/lbr/holes.lbr" -UsedLibrary="/LApps/Eagle/lbr/ir.lbr" -UsedLibrary="/LApps/Eagle/lbr/rectifier.lbr" -UsedLibrary="/LApps/Eagle/lbr/ref-packages.lbr" -UsedLibrary="/LApps/Eagle/lbr/relay.lbr" -UsedLibrary="/LApps/Eagle/lbr/resistor-power.lbr" -UsedLibrary="/LApps/Eagle/lbr/supply1.lbr" -UsedLibrary="/LApps/Eagle/lbr/v-reg.lbr" +UsedLibrary="/LApps/lbr/con-subd.lbr" +UsedLibrary="/Users/jschimpf/Public/USBSW/Hardware/firenet.lbr" [Win_1] Type="Control Panel" -Loc="340 168 939 567" +Loc="400 338 999 737" State=2 Number=0 [Desktop] -Screen="1280 1024" +Screen="1600 1200" Window="Win_1" Index: Hardware/Board/Firenet/firenet.lbr ================================================================== --- Hardware/Board/Firenet/firenet.lbr +++ Hardware/Board/Firenet/firenet.lbr cannot compute difference between binary files ADDED Hardware/Board/pcbnotes.txt Index: Hardware/Board/pcbnotes.txt ================================================================== --- Hardware/Board/pcbnotes.txt +++ Hardware/Board/pcbnotes.txt @@ -0,0 +1,58 @@ +PCB Notes: + + Bring up board + Pick CAM JOB - Button on board window + then + Once Up pick File->Open Job Use sfe-gerb274X.cam in L-Apps/Eagle/cam + + Note specify file destination for each layer + Then run process. (i.e. another directory... + as it picks / and you cannot write there) + + Also open the execllon job file L-Apps/Eagle/cam and + process again to make the drill files + + OLD ---Builds the following files: + + xxxx.GTL Top copper + xxxx.GTS Top Solder mask + xxxx.GTO Top Silkscreen + xxxx.GBL Bottom copper + xxxx.GBS Bottom Solder mask + xxxx.GBO Bottom Silkscreen + xxxx.TXT Drill file + + Pitch GTP + + ------------- Eagle 6.60 + Now builds + FlowI2C.cmp + FlowI2C.drd + FlowI2C.plc - Silk screen + FlowI2C.sol + FlowI2C.stc - Mask top + FlowI2C.sts - Mask bottom + +Discard: + FlowI2C.dri - Drill info + FlowI2C.gpi - Gerber plot info + + Archive all to a zip and send for design rule check + + Have size of board for input on form Go to Advanced Circuits + then to PCB link on page. + + + Viewer found on VM: Fedora 11 Use Gerbv + Problem with GBO + + +Solder stop Component side (.STC) = 20 Dimension layer + 29 tStop layer + Silkscreen Component side (.PLC) = 20 Dimension layer + 21 tPlace layer + 25 tNames layer + Componentside (.CMP) = 1 Top layer + 17 Pads layer + 18 Vias layer + 20 Dimension layer + + Solderside (.SOL) = 16 Bot layer + 17 Pads layer + 18 Vias layer + 20 Dimension layer + Solder stop Solder side (.STS) = 30 bStop layer + 20 Dimension layer + Silkscreen Solder side (.PLS) = 22 bPlace layer + 26 bNames layer + 20 Dimension layer + + Excellon drill (.DRD) = 44 Drills layer + 45 Holes laye ADDED Hardware/Boxes/Box_Holes.txt Index: Hardware/Boxes/Box_Holes.txt ================================================================== --- Hardware/Boxes/Box_Holes.txt +++ Hardware/Boxes/Box_Holes.txt @@ -0,0 +1,22 @@ +Box Drill Holes + + Binding Posts 21/64 + LED 7/64 + Phone Jack 15/64 + Lamp Cord 1/4 + + Lamp cord hole In 3cm X Up 1 cm + Jack holes In 3cm X Up 1 cm + + Phone Plug + + --------- + | | + Tip --> 0 * 0 <-- Ring + | |--0 Shield + -------- + + + Tip = + NET RED + Ring = - NET BLACK + Shield = GND WHITE ADDED Hardware/Boxes/HeavyDutyElectronicsEnclosures.webloc Index: Hardware/Boxes/HeavyDutyElectronicsEnclosures.webloc ================================================================== --- Hardware/Boxes/HeavyDutyElectronicsEnclosures.webloc +++ Hardware/Boxes/HeavyDutyElectronicsEnclosures.webloc cannot compute difference between binary files ADDED Hardware/Boxes/sqbox.pdf Index: Hardware/Boxes/sqbox.pdf ================================================================== --- Hardware/Boxes/sqbox.pdf +++ Hardware/Boxes/sqbox.pdf cannot compute difference between binary files ADDED Hardware/Notes/LM317CCS.pdf Index: Hardware/Notes/LM317CCS.pdf ================================================================== --- Hardware/Notes/LM317CCS.pdf +++ Hardware/Notes/LM317CCS.pdf cannot compute difference between binary files ADDED Hardware/Notes/partsused.txt Index: Hardware/Notes/partsused.txt ================================================================== --- Hardware/Notes/partsused.txt +++ Hardware/Notes/partsused.txt @@ -0,0 +1,4 @@ +Needed parts as used... + + 1 HEXFET + 1 LM317 ADDED Hardware/Parts/FTDI_Basic-v13-5V.sch.pdf Index: Hardware/Parts/FTDI_Basic-v13-5V.sch.pdf ================================================================== --- Hardware/Parts/FTDI_Basic-v13-5V.sch.pdf +++ Hardware/Parts/FTDI_Basic-v13-5V.sch.pdf cannot compute difference between binary files ADDED Hardware/Parts/atmelavr_hardware.pdf Index: Hardware/Parts/atmelavr_hardware.pdf ================================================================== --- Hardware/Parts/atmelavr_hardware.pdf +++ Hardware/Parts/atmelavr_hardware.pdf cannot compute difference between binary files ADDED Hardware/Parts/atmelavr_instructions.pdf Index: Hardware/Parts/atmelavr_instructions.pdf ================================================================== --- Hardware/Parts/atmelavr_instructions.pdf +++ Hardware/Parts/atmelavr_instructions.pdf cannot compute difference between binary files ADDED Hardware/Parts/sp481-485_100_072804.pdf Index: Hardware/Parts/sp481-485_100_072804.pdf ================================================================== --- Hardware/Parts/sp481-485_100_072804.pdf +++ Hardware/Parts/sp481-485_100_072804.pdf cannot compute difference between binary files ADDED JavaPlanner/Planning/CGen/Quote.java Index: JavaPlanner/Planning/CGen/Quote.java ================================================================== --- JavaPlanner/Planning/CGen/Quote.java +++ JavaPlanner/Planning/CGen/Quote.java @@ -0,0 +1,1 @@ +/* Quote GENERATION MODULE 14 Feb 1998 Initial creation of Quote generator */ import java.io.*; import java.awt.*; import java.applet.*; class Quote { public static FileOutputStream out_stream; // Output file public long in_length; public String out_name; /***************************************************** * * GENERATE ZIP source from site description * * INPUT: base - site base node * * OUTPUT: TRUE if OK, FALSE if not * *****************************************************/ public Quote(AppletFrame win,node base) { FileDialog fd; FileOutputStream out_stream; // Output Stream PrintStream data_out; // output data /* (1) If Base == NULL quit now */ if( base == null ) return; /* (2) Open output file */ fd = new FileDialog(win,"Quote File",FileDialog.SAVE); fd.setFile("Quote.txt"); fd.show(); if( fd.getFile() == null ) return; win.applet.show(); // (3) Now Create the output print stream try{ out_stream = new FileOutputStream( fd.getDirectory() + fd.getFile() ); } catch( IOException io ) { return; } data_out = new PrintStream(out_stream); // (4) Now go through the nodes and generate the output data for each Qgen( base,1,data_out ); // (5) Close the files and exit try{ out_stream.close(); } catch( IOException i4 ) { return; } } /**************************************************************** * * node_generate( node n ) - Recursively generate code for LBU's and RELAY's * * INPUT: n - Current node (generate children) * * OUTPUT: NONE * Generate relay or siteXXX file * *****************************************************************/ int Qgen( node n,int item,PrintStream out ) { int i; // (1) Generate the quote for this one n.select(); item = n.Qgen( item,out ); n.show(); // (2) Now generate children for(i=0; i.zh" * out_name - SITEXXX * * OUTPUT: Output file to SITEXXX.ZIP * with new include line * ****************************************************************/ void lbu_gen_zip(String in_name,String out_name) { DataInputStream data_in; // input data PrintStream data_out; // output data String fname,fline; // (1) Build the file line and the include line to be move to the output file fname = out_name + ".zip"; fline = "#include\t\"" + out_name + ".zh\""; // (2) Open the input and output channels data_in = this.open_in(in_name); // Prototype file data_out = this.create_out(fname); // Output zip file if( data_in == null || data_out == null ) return; // (3) Copy the data this.file_copy(data_in,fline,data_out); } /*************************************************************** * * LBU_GEN_ZH(lbu l,boolean g2,int n,int[] units,int relay,String out_name) - Generate the ZH file for the LBU * * INPUT: l - LBU node * g2 - TRUE if g2 type * n - # G1/G2 supported * units - List of G1/G2 unit numbers * relay - Relay unit # (-1 if no unit) * period - LBU period in minutes * out_name - SITEXXX * * OUTPUT: Output file to SITEXXX.ZH * Pirnt this file to the output * ****************************************************************/ void lbu_gen_zh(lbu l,boolean g2, int n,int[] units, int relay,int period, String out_name) { Integerf oi = new Integerf(); PrintStream data_out; int i; Progress prog; // (1) Create output file data_out = this.create_out(out_name+".zh"); prog = new Progress(out_name+".zh",16,win); // (2) Now print the data to the output file this.print("* Defines for Site Station",data_out); // Generate ADDRESS data this.addr_print( (node) l,data_out ); // Generate the rest this.print("#define\tPERIOD_CNT\t"+period,data_out); this.print("#define\tMASTER_UNIT\t"+oi.toString16fle( base_unit ),data_out); this.print("#define\tMASTER_SYSTEM\t"+oi.toString16fle( base_system ),data_out); if( relay > 0 ) { this.print("#define\tRELAY_TYPE\t1",data_out); this.print("#define\tRELAY_UNIT\t"+oi.toString16fle( relay ),data_out); } else { this.print(" ",data_out); // On NO RELAY print nothing here if( g2 == true ) // If G2 type then print RELAY_UNIT but with base addr this.print("#define\tRELAY_UNIT\t"+oi.toString16fle( base_unit ),data_out); } // (3) Print the unit list this.print("* SUPPORTED GHOG UNITS",data_out); this.print("#define\tDATA_MAX_UNITS\t"+n,data_out); for( i=0; i * #UNIT_SYSTEM * *****************************************************************/ void addr_print( node n,PrintStream out ) { this.print("#UNIT_ADDRESS\t"+n.unit,out); this.print("#UNIT_SYSTEM\t"+n.system,out); } /**************************************************************** * * open_in(String name) - Get an open stream on this file in the input directory * * INPUT: name - Name of file to open * * OUTPUT: FileInputStream if OK or NULL if not * ****************************************************************/ DataInputStream open_in( String name ) { String nm; DataInputStream is; File f; // (1) Build the full file name nm = prototypes + name; /* (0) Get the length of the file */ try{ f = new File( nm ); } catch( NullPointerException np) { return( null ); } in_length = f.length(); // (2) Built the input stream if possible try{ in_stream = new FileInputStream( nm); } catch( FileNotFoundException i1 ) { return( null ); } //catch( IOException io ) { return( null ); } // (3) Build the input stream is = new DataInputStream(in_stream); return( is ); } /**************************************************************** * * create_out(String name) - Create an output file * * INPUT: name - Name of file to create * * OUTPUT: PrintStream if OK, NULL if not * ****************************************************************/ PrintStream create_out( String name ) { String nm; PrintStream os; // (1) Build the full file name nm = out_location + name; out_name = name; // (2) Built the outputstream if possible try{ out_stream = new FileOutputStream( nm ); } catch( IOException io ) { return( null ); } // (3) Build the print stream os = new PrintStream(out_stream); return( os ); } /**************************************************************** * * boolean file_copy(FileInputStream in,String fline,PrintStream out) - Copy the file from in to out * * INPUT: in - Input file * fline - Modified file line * out - Output file * * OUTPUT: TRUE if OK, FALSE if not * both files closed on return * Put fline in output file in place of line containing 10 #'s * ****************************************************************/ boolean file_copy( DataInputStream ins,String fline,PrintStream outs ) { String line = null; Progress prog; int amt = 0; // First build a progress bar and prog = new Progress(out_name,(int)in_length,(Frame)win); // Copy data from input to output till NULL returned while( true ) { try{ line = ins.readLine(); } catch( IOException io ) { // Problem close both files and return try{ in_stream.close(); } catch( IOException i1 ) { prog.dispose(); return( false ); } try{ out_stream.close(); } catch( IOException i2 ) { prog.dispose(); return( false ); } } if( line == null ) // EOF break; // Is this a modified line ? if( fline.length() > 0 && line.indexOf( "##########" ) > 0 ) line = fline; // YES - Modify this.print(line,outs); // Dos termination amt += line.length() + 2; prog.update( amt ); } // Done OK, close the files for return try{ in_stream.close(); } catch( IOException i3 ) { prog.dispose(); return( false ); } try{ out_stream.close(); } catch( IOException i4 ) { prog.dispose(); return( false ); } prog.dispose(); return( true ); // Done OK } void print(String line,PrintStream out) { out.print( line ); out.print( "\r\n"); // Dos termination } } ADDED JavaPlanner/Planning/DrawSupport/Alert.java Index: JavaPlanner/Planning/DrawSupport/Alert.java ================================================================== --- JavaPlanner/Planning/DrawSupport/Alert.java +++ JavaPlanner/Planning/DrawSupport/Alert.java @@ -0,0 +1,24 @@ +import java.applet.Applet; +import java.awt.*; +//import InfoDialog.*; + +public class Alert +{ + public InfoDialog err; + public static int init_psn = 50; + + public Alert( String name,String message) + { + Frame f = new Frame(""); + f.reshape(init_psn,init_psn,100, 100); + init_psn += 10; + err = new InfoDialog( f,name,message,true); + if( err != null ) + { + err.move(init_psn,init_psn); + err.show(); + } + f.dispose(); + } +} + ADDED JavaPlanner/Planning/DrawSupport/InfoDialog.java Index: JavaPlanner/Planning/DrawSupport/InfoDialog.java ================================================================== --- JavaPlanner/Planning/DrawSupport/InfoDialog.java +++ JavaPlanner/Planning/DrawSupport/InfoDialog.java @@ -0,0 +1,1 @@ +// This example is from the book _Java in a Nutshell_ by David Flanagan. // Written by David Flanagan. Copyright (c) 1996 O'Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or implied. import java.awt.*; public class InfoDialog extends Dialog { protected Button button; protected MultiLineLabel label; boolean dismissed = false; // Add MODAL flag !!! public InfoDialog( Frame parent,String title, String message,boolean modal) { // Create a dialog with the specified title super(parent, title, modal); // Create and use a BorderLayout manager with specified margins this.setLayout(new BorderLayout(15, 15)); // Create the message component and add it to the window label = new MultiLineLabel(message, 20, 20); this.add("Center", label); // Create an Okay button in a Panel; add the Panel to the window // Use a FlowLayout to center the button and give it margins. button = new Button("OK"); Panel p = new Panel(); p.setLayout(new FlowLayout(FlowLayout.CENTER, 15, 15)); p.add(button); this.add("South", p); // Resize the window to the preferred size of its components this.pack(); } // Pop down the window when the button is clicked. public boolean action(Event e, Object arg) { if (e.target == button) { this.hide(); this.dispose(); dismissed = true; return true; } else return false; } // When the window gets the keyboard focus, give it to the button. // This allows keyboard shortcuts to pop down the dialog. public boolean gotFocus(Event e, Object arg) { button.requestFocus(); return true; } public boolean done() { return( dismissed ); } } ADDED JavaPlanner/Planning/DrawSupport/metric.java Index: JavaPlanner/Planning/DrawSupport/metric.java ================================================================== --- JavaPlanner/Planning/DrawSupport/metric.java +++ JavaPlanner/Planning/DrawSupport/metric.java @@ -0,0 +1,1 @@ +import java.applet.Applet; import java.awt.*; /************************************************************ * * METRIC - Helper object used to find minimum distance to connections between * nodes * ************************************************************/ public class metric { public int x1,x2,y1,y2; // Here find the shortest of 16 possible connections between // the node n1 and node n2 // Each has a box of size with the upper left corner = draw_x,draw_y // Make a connection point at the center of each side of the box public metric( node n1,node n2) { int i,j; double d,min_d; double dx1,dx2,dy1,dy2; double dsize1,dsize2; // Double loop to try all distances dx1 = 0.0; dy1 = 0.0; dx2 = 0.0; dy2 = 0.0; dsize1 = n1.size; dsize2 = n2.size; min_d = -1; for( i=0; i<4; i++ ) { switch( i ) { case 0: dx1 = (n1.draw_x + dsize1/2); dy1 = n1.draw_y; break; case 1: dx1 = n1.draw_x; dy1 = (n1.draw_y + dsize1/2); break; case 2: dx1 = (n1.draw_x + dsize1/2); dy1 = (n1.draw_y + dsize1); break; case 3: dx1 = (n1.draw_x + dsize1); dy1 = (n1.draw_y + dsize1/2); break; } for( j=0; j<4; j++) { switch( j ) { case 0: dx2 = (double) n2.draw_x + (double) dsize2/2; dy2 = (double) n2.draw_y; break; case 1: dx2 = (double) n2.draw_x; dy2 = (double) n2.draw_y + (double) dsize2/2; break; case 2: dx2 = (double) n2.draw_x + (double) dsize2/2; dy2 = (double) n2.draw_y + (double) dsize2; break; case 3: dx2 = (double) n2.draw_x + (double) dsize2; dy2 = (double) n2.draw_y + (double) dsize2/2; break; } // Now compute distance ** 2 (no need to take sqrt) d = ((dx1 - dx2)*(dx1 - dx2)) + ((dy1 - dy2)*(dy1 - dy2)); // Find the minimum if( min_d < 0 || min_d > d ) { min_d = d; x1 = (int)(dx1 + 0.5); x2 = (int)(dx2 + 0.5); y1 = (int)(dy1 + 0.5); y2 = (int)(dy2 + 0.5); } } } } } ADDED JavaPlanner/Planning/File/kvpToken.java Index: JavaPlanner/Planning/File/kvpToken.java ================================================================== --- JavaPlanner/Planning/File/kvpToken.java +++ JavaPlanner/Planning/File/kvpToken.java @@ -0,0 +1,207 @@ +/* + + Key value pair file tokenizer + This extends the stream tokenizer + + 9 Oct 97 Added UNGET KVP +*/ + +import java.io.*; +import java.util.Hashtable; + +class kvpToken extends StreamTokenizer +{ + public Hashtable keys; + + public int key; // Returned key number + public String value; // Returned value + + public boolean ungotten = false; + + public static final int KVP_BAD_KEY = -100; + public static final int KVP_BAD_VALUE = -101; + + public static final int KVP_QUOTE = 0x22; // " character + + /******************************************************* + * + * CONSTRUCTOR - Pass in INPUT Stream & key list + * + * Set up for QUOTE = " + * WS = 0x00 through 0x20 + * Word chrs 0x21 through 0x7F + * Parse numbers + * Comment = * + * + *******************************************************/ + + public kvpToken( InputStream i,String key_list[] ) + { + super( i ); // Normal setup + + // Now set quote and stuff + + this.quoteChar(KVP_QUOTE); + this.whitespaceChars(0x00,0x20); + this.wordChars(0x30,0x7f); + this.parseNumbers(); + + // Build the hashtable for the keys + + int j; + Integer ky; + keys = new Hashtable(key_list.length); + for( j=0; j level ) { fp.ungetNode(); return( n ); } } } } ADDED JavaPlanner/Planning/File/psaver.java Index: JavaPlanner/Planning/File/psaver.java ================================================================== --- JavaPlanner/Planning/File/psaver.java +++ JavaPlanner/Planning/File/psaver.java @@ -0,0 +1,1 @@ +/* * PSAVER - Save site plan to a text file 26 Aug 97 - Store period 3 Nov 97 - Store LBU type 4 Nov 98 - Store RELAY type * 16-Feb-98 Add G2 type */ import java.io.*; import java.awt.*; import java.util.Date; public class psaver { public String name; // Very simple constructor get file for save public psaver(Frame f) { FileDialog fd; String dir; // Get a file dialog fd = new FileDialog(f,"Save Plan",FileDialog.SAVE); fd.setFile("site_plan.txt"); fd.show(); name = fd.getFile(); dir = fd.getDirectory(); name = dir + "/"+name; // NOTE: NON-MAC type separators } public boolean save( node base ) { FileOutputStream os; PrintStream fp; // (1) If no file name just return false if( name == null ) return( false ); // (2) Ok, try to create the output stream for the file try{ os = new FileOutputStream( name ); } catch( IOException io ) { return( false ); } // (3) Build the print stream for the file fp = new PrintStream(os); // (4) Now print something this.print_plan(base,fp); //(x) Close the file and quit try{ os.close(); } catch( IOException io ) { return( false ); } return( true ); } /********************************************************* * * MAIN PLAN PRINTING SECTION * * INPUT: base - Base node for system * fp - PrintStream object on open file * * OUTPUT: Print plan to output * *********************************************************/ public void print_plan(node base,PrintStream fp) { Date d; String indent; // (1) Put out the header information for the site this.print_indent(0,"TYPE: SITE LEVEL: 0 PSNX: 0 PSNY: 0",fp); d = new Date(); this.print_indent(0, "CREATED: "+"\""+d.toLocaleString()+"\"",fp ); this.print_indent(0, "NAME:" +"\""+base.site_name+"\"",fp ); this.print_indent(0, "ADDRESS: "+"\""+base.site_address+"\"",fp); this.print_indent(0, "PHONE: "+ "\""+base.phone+"\"",fp ); this.print_indent(0, "FAX: " + "\""+base.fax+"\"",fp ); // (2) Base station information this.print_one_node(1,base,fp); // (3) Recursively print out the rest of the site print_node( 1,base,fp ); } /*********************************************************** * * Print_node( int indent,node n,PrintStream fp ) * * INPUT: indent - Present level of indent * n - Current parent node * fp - Current print stream * * OUTPUT: Print depth first node listing * ************************************************************/ public void print_node( int indent, node n,PrintStream fp ) { int i; node child; // (1) Move in an indent level indent++; // (2) Find any child nodes and print them for( i=0; i= 60 ) + n = n - 60; + + while( n != t.getSeconds() ) + { + this.word_build( c ); + t = new Date(); + } + + this.dispose(); + } + + // Support functions for splash + + /******************************************************** + * + * SSITE_BUILD - Build a site on the screen + * + * NOTE: Site built then data from dump used for this file + * Return top of site + * + ********************************************************/ + + public node ssite_build(Canvas s) + { + node cnode; + node pnode; + node l1,l2,r; + + // (1) Build LBU 101 and all the G1's around it + + pnode = (node)new lbu(); + pnode.create( 521,93,1,s); + + cnode = (node)new G1(); // G1-1 + cnode.create(486,54,1,s); + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + cnode = (node)new G1(); // G1-2 + cnode.create(537,49,1,s); + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + cnode = (node)new G1(); // G1-3 + cnode.create(570,69,1,s); + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + l1 = pnode; // Save LBU 101 + + // (2) Build LBU 102 and all the G1's around it + + pnode = (node)new lbu(); + pnode.create( 534,290,1,s); + + cnode = (node)new G1(); // G1-1 + cnode.create(507,347,1,s); + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + cnode = (node)new G1(); // G1-2 + cnode.create(547,355,1,s); + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + l2 = pnode; // Save LBU 102 + + // (3) Create relay station 50 + + pnode = (node)new relay(); + pnode.create(433,217,1,s); + + // (4) Create relay station 51 + + cnode = (node)new relay(); + cnode.create( 520,174,1,s); + + // (5) Attach LBU 101 & 102 to relay 51 + + l1.add_parent( cnode ); + cnode.add_child( l1 ); + l2.add_parent( cnode ); + cnode.add_child( l2 ); + + // (6) Attach 51 to relay 50 + + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + // (7) Save relay 50 and build LBU 103 and G1's + + r = pnode; + + // (8) Build LBU 101 and all the G1's around it + + pnode = (node)new lbu(); + pnode.create( 390,295,1,s); + + cnode = (node)new G1(); // G1-1 + cnode.create(352,346,1,s); + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + cnode = (node)new G1(); // G1-2 + cnode.create(388,353,1,s); + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + cnode = (node)new G1(); // G1-3 + cnode.create(429,348,1,s); + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + // (9) Attach to relay node + + r.add_child( pnode ); + pnode.add_parent( r ); + + cnode = r; + + // (10) Build base station and attach relay + + pnode = (node)new base(); + pnode.create( 359,157,1,s); + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + return( pnode ); + } + + + static final int MAIN_TITLEY = 90; + static final int VER_TITLEY = 220; + static final int SEC_TITLEY = 280; + static final int CPY_TITLEY = 360; + + /************************************************* + * + * WORD_BUILD(Applet s) - Build the words on the screen + * + * INPUT: s - Applet screen + * + * OUTPUT: Put the words on the screen + * + *************************************************/ + + public void word_build(myCanvas s) + { + Graphics g = s.getGraphics(); + FontMetrics metric; + Font f; + + // Put out the GPS words + + f = new Font("Helvetica",Font.PLAIN,36); + metric = g.getFontMetrics( f ); + g.setColor(Color.red); + g.setFont( f ); + g.drawString("G",50,MAIN_TITLEY); + g.drawString("P",50,MAIN_TITLEY + metric.getHeight()); + g.drawString("S",50,MAIN_TITLEY + 2*metric.getHeight()); + + g.setColor(Color.blue); + g.drawString("roundhog", + 50 + metric.charWidth('G'), + MAIN_TITLEY); + g.drawString("lanning", + 50 + metric.charWidth('P'), + MAIN_TITLEY + metric.getHeight()); + g.drawString("ystem", + 50 + metric.charWidth('S'), + MAIN_TITLEY + 2*metric.getHeight()); + + // Put out the Version information + + f = new Font("Helvetica",Font.PLAIN,24); + g.setColor(Color.black); + g.setFont(f ); + g.drawString(ap.getAppletInfo(),50,VER_TITLEY); + + // Put out other stuff + + f = new Font("Helvetica",Font.PLAIN,12); + metric = g.getFontMetrics( f ); + g.setColor(Color.black); + g.setFont(f ); + g.drawString("For design and code",50,SEC_TITLEY); + g.drawString("generation of Nu-Metrics", + 50,SEC_TITLEY + metric.getHeight()); + g.drawString("RF Traffic Monitoring", + 50,SEC_TITLEY + 2*metric.getHeight()); + g.drawString("Systems", + 50,SEC_TITLEY + 3*metric.getHeight()); + + // Put out copyright + + f = new Font("Helvetica",Font.PLAIN,12); + metric = g.getFontMetrics( f ); + g.setColor(Color.black); + g.drawString("Copyright 1997,98 Nu-Metrics",150,CPY_TITLEY); + + + } + + +} + ADDED JavaPlanner/Planning/Main/myCanvas.java Index: JavaPlanner/Planning/Main/myCanvas.java ================================================================== --- JavaPlanner/Planning/Main/myCanvas.java +++ JavaPlanner/Planning/Main/myCanvas.java @@ -0,0 +1,1 @@ +// Plan.java // 5 January 1998 myCanvas version import java.applet.Applet; import java.awt.*; /** Applet Plan. * * * @author JHS * @version 1.0 11 Nov 97 J.Schimpf Fix system code creation on nodes */ public class myCanvas extends Canvas { private base b; /** Performs applet initialization. */ public myCanvas() { super(); } public void lock_base( base bb ) { b = bb; } /************************************************** * * PAINT ROUTINE * **************************************************/ public void paint( Graphics g ) { Rectangle r = this.bounds(); g.setColor(this.getBackground()); g.fillRect(r.x,r.y,r.width,r.height); this.show(); // Show what we have done // This must be done or the menu items disappear if( b != null ) b.show(); } } ADDED JavaPlanner/Planning/Main/plan.java Index: JavaPlanner/Planning/Main/plan.java ================================================================== --- JavaPlanner/Planning/Main/plan.java +++ JavaPlanner/Planning/Main/plan.java @@ -0,0 +1,790 @@ +// Plan.java + +import java.applet.Applet; +import java.awt.*; + +/** Applet Plan. + * + * + * @author JHS + * @version 1.0 + + 11 Nov 97 J.Schimpf Fix system code creation on nodes + 31 Jan 98 J.Schimpf Conversion to version 3.0 + */ + +public class plan extends java.applet.Applet +{ + ///XXX + public static final String NAME = "FPlan"; + public static final String VERSION = "1.0"; + + // Actions during run + public static final int INFO = 0; + public static final int MOVE = 1; + public static final int ADD = 2; + public static final int DELETE = 3; + public static final int CONNECT = 4; + public static final int DISCONNECT = 5; + public static final int SELECT = 6; + + // Unit types + public static final int BASE = 0; + public static final int RELAY = 1; + public static final int LBU = 2; + public static final int G1 = 3; + public static final int G2 = 4; + public static final int FBASE = 5; + + // Last selected item + + public node selected_node; // Last selected node + + // Unit connection array + // This shows the allowable connections + // First index is the parent i.e. Base,Relay,LBU + // Second index is the connected to index + // If TRUE connection is allowed, if FALSE NOT + + public boolean connection[][] = new boolean[6][6]; + public myCanvas canvas; + private int canvas_width,canvas_height; + + private int last_x=0; + private int last_y=0; + private Scrollbar hbar,vbar; // For scrolling + private Panel barea; + private Color current_color=Color.black; + private Button clear_button; + private Choice type_choices; + private Choice action_choices; + private node last_node,moved_node; + private node pnode,cnode; // For connections + +// private Button save_button; +// private Button load_button; + public base site_base = null; + public fbase site_fbase = null; + + /** Performs applet initialization. + */ + public void init() + { + + // Set up connection table of allowable connections + + connection[BASE][BASE] = false; // BASE as parent + connection[BASE][RELAY] = true; + connection[BASE][LBU] = true; + connection[BASE][G1] = false; + connection[BASE][G2] = false; + connection[BASE][FBASE] = false; + + connection[RELAY][BASE] = false; // RELAY as parent + connection[RELAY][RELAY] = true; + connection[RELAY][LBU] = true; + connection[RELAY][G1] = false; + connection[RELAY][G2] = true; // Allow G2 -> RELAY connection + connection[RELAY][FBASE] = false; + + connection[LBU][BASE] = false; // LBU as parent + connection[LBU][RELAY] = true; // RELAY -> LBU connection + connection[LBU][LBU] = false; + connection[LBU][G1] = true; + connection[LBU][G2] = true; + connection[LBU][FBASE] = false; + + connection[G1][BASE] = false; // G1 as parent + connection[G1][RELAY] = false; + connection[G1][LBU] = false; + connection[G1][G1] = false; + connection[G1][G2] = false; + connection[G1][FBASE] = false; + + connection[G2][BASE] = false; // G2 as parent + connection[G2][RELAY] = false; + connection[G2][LBU] = false; + connection[G2][G1] = false; + connection[G2][G2] = false; + connection[G2][FBASE] = false; + + connection[FBASE][BASE] = false; // FBASE as parent + connection[FBASE][RELAY] = false; + connection[FBASE][LBU] = false; + connection[FBASE][G1] = false; + connection[FBASE][G2] = false; + connection[FBASE][FBASE] = false; + + // Set the color background + + this.setBackground(Color.white); + + // Put on the scroll bars + + canvas = new myCanvas(); + hbar = new Scrollbar( Scrollbar.HORIZONTAL ); + vbar = new Scrollbar( Scrollbar.VERTICAL ); + this.setLayout( new BorderLayout(0,0)); + this.add("South",hbar); + this.add("East",vbar); + this.add("Center",canvas); + + // Create the buttons and add to the applet + // Put them in a panel at the top of the screen + + barea = new Panel(); + this.add("North",barea); + + clear_button = new Button( "*REFRESH*"); + clear_button.setForeground(Color.black); + clear_button.setBackground(Color.lightGray); + barea.add(clear_button); + + // Create an action choice list + + action_choices = new Choice(); + action_choices.addItem( "INFO" ); + action_choices.addItem( "MOVE" ); + action_choices.addItem("ADD"); + action_choices.addItem( "DELETE" ); + action_choices.addItem( "CONNECT" ); + action_choices.addItem( "DISCONNECT" ); + action_choices.addItem( "SELECT" ); + action_choices.setForeground(Color.black); + action_choices.setBackground(Color.lightGray); + barea.add(action_choices); + + // Create a type choice list + + type_choices = new Choice(); + type_choices.addItem("BASE"); + type_choices.addItem( "RELAY" ); + type_choices.addItem( "LBU" ); + type_choices.addItem( "G1" ); + type_choices.addItem( "G2" ); + type_choices.addItem("FBASE"); + type_choices.setForeground(Color.black); + type_choices.setBackground(Color.lightGray); + barea.add(type_choices); + + last_node = null; + } + + /************************************************** + * + * RESHAPE ROUTINE - refits the scroll bars + * + **************************************************/ + + public synchronized void reshape( int x,int y, + int width,int height) + { + Canvas c; + super.reshape( x,y,width,height ); + if( hbar == null || vbar == null ) + return; + + // Fix the scroll bars up + + Dimension hbar_size = hbar.size(); + Dimension vbar_size = vbar.size(); + canvas_width = width - vbar_size.width; + canvas_height = height - hbar_size.height; + + hbar.setValues(node.org_x,canvas_width,0,1000-canvas_width); + vbar.setValues(node.org_y,canvas_height,0,1000-canvas_height); + + hbar.setPageIncrement( canvas_width/2 ); + vbar.setPageIncrement( canvas_height/2 ); + + c = (Canvas)canvas; + this.update( c.getGraphics() ); + } + + /************************************************** + * + * ACTION ROUTINE + * + **************************************************/ + + // Called when user clicks a button or chooses a menu + public boolean action( Event event,Object arg) + { + int scroll; + + if( event.target == clear_button ) // BUTTON + { + this.show(); + if( site_base != null ) + site_base.show(); + return true; + } + + if( event.target == type_choices ) // CHOICE + { + return true; + } + + if( event.target == action_choices ) // CHOICE + { + return true; + } + + + return super.action(event,arg); // NEITHER + } + + /************************************************** + * + * Event Handler ROUTINE + * + **************************************************/ + + public boolean handleEvent( Event event) + { + int scroll; + + if( event.target == hbar ) // Horizontal scroll bar + { + switch( event.id ) { + + case Event.SCROLL_LINE_UP: + case Event.SCROLL_PAGE_UP: + case Event.SCROLL_LINE_DOWN: + case Event.SCROLL_PAGE_DOWN: + case Event.SCROLL_ABSOLUTE: + scroll = ((Integer)event.arg).intValue(); + if( site_base != null ) + { + site_base.clear(); + site_base.scroll_x( -1 * scroll ); + site_base.show(); + } + return( true ); + } + } + + if( event.target == vbar ) // Verticle scroll bar + { + switch( event.id ) { + + case Event.SCROLL_LINE_UP: + case Event.SCROLL_PAGE_UP: + case Event.SCROLL_LINE_DOWN: + case Event.SCROLL_PAGE_DOWN: + case Event.SCROLL_ABSOLUTE: + scroll = ((Integer)event.arg).intValue(); + if( site_base != null ) + { + site_base.clear(); + site_base.scroll_y( -1 * scroll ); + site_base.show(); + } + return( true ); + } + } + + return( super.handleEvent(event) ); + } + + /************************************************* + * + * mouseDown() - Handle action based on mode of display + * + **************************************************/ + + public boolean mouseDown( Event e, int x,int y) + { + int type; + boolean result; + boolean no_base; + Dimension sz = barea.size(); + + y = y - sz.height; + + // Set NO BASE true if we don't have a base station yet + + if( site_base == null ) + no_base = true; + else + no_base = false; + if( selected_node != null ) + selected_node.show(); + + type = action_choices.getSelectedIndex(); + + // Note put little things in here to run in macro loops for easier + // user interface + + switch( type ) { + + case ADD: result = add_node(e,x,y); + if( result == true ) + { + // This little thing keeps from jumping to CONNECT + // if we have only just created the base station + // We only switch to CONNECt if there is a base station + // and it wasn't just created + if( site_base != null && no_base == false ) + action_choices.select("CONNECT"); + } + return( result ); + + case MOVE: result = move_node(e,x,y); + return( result ); + + case DELETE: result = delete_node( e,x,y ); + if( result = true ) + action_choices.select("INFO"); + return( result ); + + case CONNECT: result = connect_node( e,x,y ); + if( result == true ) + action_choices.select("ADD"); + return( result ); + + case DISCONNECT: result = disconnect_node(e,x,y ); + if( result = true ) + action_choices.select("CONNECT"); + return( result ); + + case INFO: result = info_node(e,x,y); + return( result ); + + case SELECT: selected_node = site_base.locate_node(x,y); + if( selected_node != null ) + selected_node.select(); + return( true ); + + default: result = false; + } + return( false ); + } + + /************************************************* + * + * add_node() - Add a new node to list attach to last_node + * + **************************************************/ + + public boolean add_node( Event e,int x,int y) + { + Alert err; + relay r_node; + lbu lbu_node; + G2 g2_node; + G1 g1_node; + int type; + + // If LAST NODE exists then delete it + + if( last_node != null ) + last_node.delete_node(); + + // Ok make the new one + + type = type_choices.getSelectedIndex(); + + switch( type ) { + + case BASE: if( site_base == null ) + { + site_base = new base(); + site_base.create( x,y, // Position + site_base.system, // Sys/unit code + (Canvas)canvas); // Window + last_node = (node) site_base; + last_node = null; + + } + else + { + err = new Alert("ERROR", + "BASE Station Already Created"); + last_node = null; + } + break; + + case RELAY: if( site_base == null ) + { + new Alert("ERROR","Create Base First"); + break; + } + r_node = new relay(); + r_node.create( x,y, // Position + site_base.system, // Sys/unit code + (Canvas)canvas); // Window + last_node = (node)r_node; + break; + + case LBU: if( site_base == null ) + { + new Alert("ERROR","Create Base First"); + break; + } + lbu_node = new lbu(); + lbu_node.create( x,y, // Position + site_base.system, // Sys/unit code + (Canvas)canvas); // Window + last_node = (node)lbu_node; + break; + + case G2: if( site_base == null ) + { + new Alert("ERROR","Create Base First"); + break; + } + g2_node = new G2(); + g2_node.create( x,y, // Position + site_base.system, // Sys/unit code + (Canvas)canvas); // Window + last_node = (node)g2_node; + break; + + case G1: if( site_base == null ) + { + new Alert("ERROR","Create Base First"); + break; + } + g1_node = new G1(); + g1_node.create( x,y, // Position + site_base.system, // Sys/unit code + (Canvas)canvas); // Window + last_node = (node)g1_node; + break; + case FBASE: if( site_fbase == null ) + { + site_fbase = new fbase(); + site_fbase.create( x,y, // Position + site_fbase.system, // Sys/unit code + (Canvas)canvas); // Window + + } + else + { + err = new Alert("ERROR", + "FBASE Station Already Created"); + + } + break; + + + default: last_node = null; + break; + } + + if( last_node != null ) + return( true ); + else + return( false ); + + } + + /************************************************* + * + * move_node() - See if a node is under the cursor and move it + * + **************************************************/ + + public boolean move_node( Event e,int x,int y) + { + node n = null; + + if( site_base != null ) + { + n = site_base.locate_node(x,y); + if( n == null ) + { + if( last_node != null ) + n = last_node.locate_node(x,y); + } + } + + if( n != null ) + { + moved_node = n; + return( true ); + } + + moved_node = null; + return( false ); + } + + /************************************************* + * + * delete_node() - Delete this node and all it's children + * + **************************************************/ + + public boolean delete_node( Event e,int x,int y) + { + node n = null; + + if( site_base != null ) + { + n = site_base.locate_node(x,y); + if( n == null ) + { + if( last_node != null ) + n = last_node.locate_node(x,y); + } + } + + if( n == null ) + return( false ); // Nothing to do + + // Ok we have something to do make this node and all it's children + // disappear + + n.delete_node(); + if( n == site_base ) + site_base = null; + if( n == last_node ) + last_node = null; + if( n == moved_node ) + moved_node = null; + + n = null; + return( true ); + } + + /************************************************* + * + * CONNECT NODE - Determine if this is the first or second pass + * + * First pass just mark node selected (p,c node == NULL) + * Second pass determine if allowed and do connection + * NOTE:Return FALSE on first pass + * + **************************************************/ + + public boolean connect_node( Event e,int x,int y) + { + // (1) First or second pass ? + + if( pnode == null && cnode == null ) + { + if( site_base != null ) + pnode = site_base.locate_node(x,y); + + if( pnode == null ) + return( false ); // Nothing to do + else + { + pnode.select(); + return( false ); + } + } + + // (2) Second pass - get child node and determine if this is allowed + // NOTE CHID node must belong to last_node + + if( last_node != null ) + cnode = last_node.locate_node(x,y); + + if( cnode != null ) + { + cnode.select(); + + // Is this allowed ? + if( !connection[pnode.node_type()][cnode.node_type()] ) + { + Alert err; + err = new Alert("WARNING","Connection not allowed"); + pnode.show(); + cnode.show(); + pnode = null; + cnode = null; + return( false ); + } + + if( cnode.parent != null ) + { + Alert err; + err = new Alert("WARNING","Already connected"); + pnode.show(); + cnode.show(); + pnode = null; + cnode = null; + return( false ); + } + + pnode.add_child( cnode ); + cnode.add_parent( pnode ); + + pnode.show(); + cnode.show(); + cnode = null; + pnode = null; + last_node = null; // Disconnect it + return( true ); + } + + return( false ); + } + + /************************************************* + * + * DISCONNECT NODE - Disconnect this node from present location + * + * If we are on a node disconnect it from parent and + * attach it to last_node + * + **************************************************/ + + public boolean disconnect_node( Event e,int x,int y) + { + // (1) Are we on a connected node ? + + if( site_base != null ) + { + last_node = site_base.locate_node( x,y ); + + if( last_node != null ) + { + pnode = last_node.parent; + last_node.clear(); + pnode.delete_child( last_node ); + last_node.delete_parent(); + pnode = null; + last_node.show(); + return( true ); + } + } + + return( false ); + } + + /************************************************* + * + * info_node() - Get information on node & set it + * + **************************************************/ + + public boolean info_node( Event e,int x,int y) + { + node n = null; + + if( site_base != null ) + { + n = site_base.locate_node(x,y); + if( n == null ) + { + if( last_node != null ) + n = last_node.locate_node(x,y); + } + } + + if( n != null ) // We have a node get info + { + n.select(); // Show we have it + n.info(); + n.show(); // Restore node + return( true ); + } + + return( false ); + } + + + /************************************************* + * + * mouseDrag - If we have a moved_node then drag it + * + **************************************************/ + + public boolean mouseDrag(Event e,int x, int y) + { + boolean result; + node n; + int type; + + // If not in MOVE then quit + + type = action_choices.getSelectedIndex(); + + if( type != MOVE ) + return( false ); + + // If we have a node nove it + + if( moved_node != null ) + moved_node.move_node(x,y); + + return( true ); + } + + /************************************************* + * + * mouseUp - If we have a moved_node then restore it + * + **************************************************/ + + public boolean mouseUp(Event e,int x, int y) + { + boolean result; + node n; + int type; + + // If not in MOVE then quit + + type = action_choices.getSelectedIndex(); + + if( type != MOVE ) + return( false ); + + // If we have a node restore it + + if( moved_node != null ) + { + moved_node.show(); + moved_node = null; + } + + return( true ); + } + + /************************************************** + * + * PAINT ROUTINE + * + **************************************************/ + + public void paint( Graphics g ) + { + + Rectangle r = this.bounds(); + + g.setColor(this.getBackground()); + g.fillRect(r.x,r.y,r.width,r.height); + + // This must be done or the menu items disappear + + if( clear_button != null ) + clear_button.show(); + if( type_choices != null ) + type_choices.show(); + if( action_choices != null ) + action_choices.show(); + + if( site_base != null ) + site_base.show(); + if( last_node != null ) + last_node.show(); + + this.show(); // Show what we have done + } + + + /** Returns a text description of the applet. + */ + public String getAppletInfo() + { + // Return a String containing author, version, copyright, + // and other information. + + return NAME + " Version " + VERSION; + } +} + + ADDED JavaPlanner/Planning/Nodes/Dialog/node_dialog.java Index: JavaPlanner/Planning/Nodes/Dialog/node_dialog.java ================================================================== --- JavaPlanner/Planning/Nodes/Dialog/node_dialog.java +++ JavaPlanner/Planning/Nodes/Dialog/node_dialog.java @@ -0,0 +1,1 @@ +import java.applet.Applet; import java.awt.*; /*********************************************************** * * This is the node information dialog * Remove LBU period (we have a special one for that) * ************************************************************/ public class node_dialog extends Frame { // Window components TextField name; TextField address; TextField sys; TextField unit_num; TextField unit_location; TextField local_phone; TextField local_fax; Button ok; Button cancel; node n; // Node we are working on public node_dialog(String title) { // (1) Set title & layout super( title ); setLayout(new GridLayout(8,2)); } public boolean show( node me ) { n = me; /* 1) With the node information build the textfields in the window */ add(new Label("Site Name: ")); name = new TextField(""+node.site_name); // Row 1 add( name ); add( new Label("Site Address: ")); // Row 2 address = new TextField(""+node.site_address); add( address ); add(new Label("System: ")); // ROW 3 sys = new TextField(""+node.system,5); add( sys ); add(new Label("Unit: ")); // ROW 4 unit_num = new TextField(""+n.unit,5); add( unit_num ); add(new Label("Location: ")); // ROW 5 unit_location = new TextField(n.location,30); add(unit_location); add( new Label("Phone: ")); // ROW 6 local_phone = new TextField(node.phone,16); add( local_phone ); add( new Label("FAX: ")); // ROW 7 local_fax = new TextField(node.fax,16); add(local_fax); ok = new Button( "OK" ); // ROW 8 cancel = new Button("CANCEL"); add(ok); add( cancel ); /* Display the thing at the normal position */ this.reshape(50,50,400,220); this.show(); return( true ); } // Called when user clicks a button or chooses a menu public boolean action( Event event,Object arg) { int unit = 0; int save_unit; if( event.target == cancel ) // CANCEL BUTTON { this.dispose(); return(false); } if( event.target == ok ) { // Ok, pull the fields and change them // Note first do the local fields // Check for duplicate unit # try{ unit = Integer.parseInt( unit_num.getText()); } catch( NumberFormatException x){ n.unit = 0; } save_unit = n.unit; if( unit != n.unit && n.setUnit( unit ) == false ) { Alert a = new Alert("ERROR","Duplicate Unit #"); this.dispose(); return( false ); } n.location = unit_location.getText(); try{ n.unit = Integer.parseInt( unit_num.getText()); } catch( NumberFormatException x){ n.unit = 0; } //n.period = 1; // DEFAULT value // Now do the node class fields node.site_name = name.getText(); node.site_address = address.getText(); try { node.system = Integer.parseInt( sys.getText() ); } catch( NumberFormatException x) { n.system = 0; } node.phone = local_phone.getText(); node.fax = local_fax.getText(); // Pitch the dialog and return with node re-written this.dispose(); n.show(); return( true ); } return( false ); } // Close window on click of GO-AWAY box public boolean handleEvent( Event e) { if( e.id == Event.WINDOW_DESTROY ) { this.dispose(); return( true ); } else return( super.handleEvent(e) ); // Let big brother do it } } ADDED JavaPlanner/Planning/Nodes/Dialog/node_dialog_g2.java Index: JavaPlanner/Planning/Nodes/Dialog/node_dialog_g2.java ================================================================== --- JavaPlanner/Planning/Nodes/Dialog/node_dialog_g2.java +++ JavaPlanner/Planning/Nodes/Dialog/node_dialog_g2.java @@ -0,0 +1,1 @@ +import java.applet.Applet; import java.awt.*; /*********************************************************** * * This is the node information dialog for the G2 * Add LBU period * 20 Jan 98 Add WX LBU types * ************************************************************/ public class node_dialog_g2 extends Frame { // Window components TextField name; TextField address; TextField sys; TextField unit_num; TextField unit_location; TextField local_phone; TextField local_fax; TextField G2_period; Button ok; Button cancel; Choice type; G2 n; // Node we are working on public node_dialog_g2(String title) { // (1) Set title & layout super( title ); setLayout(new GridLayout(9,2)); } public boolean show( node me ) { n = (G2) me; /* 1) With the node information build the textfields in the window */ add(new Label("Site Name: ")); name = new TextField(""+node.site_name); // Row 1 add( name ); add( new Label("Site Address: ")); // Row 2 address = new TextField(""+node.site_address); add( address ); add(new Label("System: ")); // ROW 3 sys = new TextField(""+node.system,5); add( sys ); add(new Label("Unit: ")); // ROW 4 unit_num = new TextField(""+n.unit,5); add( unit_num ); add(new Label("Location: ")); // ROW 5 unit_location = new TextField(n.location,30); add(unit_location); type = new Choice(); // ROW 6 type.addItem("Standard"); type.addItem("Standard+WX"); add( new Label("G2 Type - Select")); type.select( n.g2_type); add( type ); add( new Label("Phone: ")); // ROW 7 local_phone = new TextField(node.phone,16); add( local_phone ); add( new Label("FAX: ")); // ROW 8 local_fax = new TextField(node.fax,16); add(local_fax); ok = new Button( "OK" ); // ROW 9 cancel = new Button("CANCEL"); add(ok); add( cancel ); /* Display the thing at the normal position */ this.reshape(50,50,400,220); this.show(); return( true ); } // Called when user clicks a button or chooses a menu public boolean action( Event event,Object arg) { int unit = 0; int save_unit; if( event.target == cancel ) // CANCEL BUTTON { this.dispose(); return(false); } if( event.target == ok ) { n.clear(); // Remove the old one // Ok, pull the fields and change them // Note first do the local fields // Check for duplicate unit # try{ unit = Integer.parseInt( unit_num.getText()); } catch( NumberFormatException x){ n.unit = 0; } save_unit = n.unit; if( unit != n.unit && n.setUnit( unit ) == false ) { Alert a = new Alert("ERROR","Duplicate Unit #"); this.dispose(); return( false ); } n.location = unit_location.getText(); try{ n.unit = Integer.parseInt( unit_num.getText()); } catch( NumberFormatException x){ n.unit = 0; } // Now do the node class fields node.site_name = name.getText(); node.site_address = address.getText(); try { node.system = Integer.parseInt( sys.getText() ); } catch( NumberFormatException x) { n.system = 0; } node.phone = local_phone.getText(); node.fax = local_fax.getText(); n.g2_type = type.getSelectedIndex(); // Pitch the dialog and return with node re-written this.dispose(); n.show(); return( true ); } return( false ); } // Close window on click of GO-AWAY box public boolean handleEvent( Event e) { if( e.id == Event.WINDOW_DESTROY ) { this.dispose(); return( true ); } else return( super.handleEvent(e) ); // Let big brother do it } } ADDED JavaPlanner/Planning/Nodes/Dialog/node_dialog_lbu.java Index: JavaPlanner/Planning/Nodes/Dialog/node_dialog_lbu.java ================================================================== --- JavaPlanner/Planning/Nodes/Dialog/node_dialog_lbu.java +++ JavaPlanner/Planning/Nodes/Dialog/node_dialog_lbu.java @@ -0,0 +1,1 @@ +import java.applet.Applet; import java.awt.*; /*********************************************************** * * This is the node information dialog * Add LBU period * 20 Jan 98 Add WX LBU types * ************************************************************/ public class node_dialog_lbu extends Frame { // Window components TextField name; TextField address; TextField sys; TextField unit_num; TextField unit_location; TextField local_phone; TextField local_fax; TextField lbu_period; Button ok; Button cancel; Choice type; lbu n; // Node we are working on public node_dialog_lbu(String title) { // (1) Set title & layout super( title ); setLayout(new GridLayout(10,2)); } public boolean show( node me ) { n = (lbu) me; /* 1) With the node information build the textfields in the window */ add(new Label("Site Name: ")); name = new TextField(""+node.site_name); // Row 1 add( name ); add( new Label("Site Address: ")); // Row 2 address = new TextField(""+node.site_address); add( address ); add(new Label("System: ")); // ROW 3 sys = new TextField(""+node.system,5); add( sys ); add(new Label("Unit: ")); // ROW 4 unit_num = new TextField(""+n.unit,5); add( unit_num ); add(new Label("Location: ")); // ROW 5 unit_location = new TextField(n.location,30); add(unit_location); add(new Label("LBU Period: (Minutes) ")); // ROW 6 lbu_period = new TextField(""+lbu.period,5); add( lbu_period ); type = new Choice(); // ROW 7 type.addItem("Standard"); type.addItem( "Site+Base"); type.addItem( "Site+Base+Modem"); type.addItem("Standard+WX"); type.addItem( "Site+Base+WX"); type.addItem( "Site+Base+Modem+WX"); add( new Label("LBU Type - Select")); type.select( n.lbu_type); add( type ); add( new Label("Phone: ")); // ROW 8 local_phone = new TextField(node.phone,16); add( local_phone ); add( new Label("FAX: ")); // ROW 9 local_fax = new TextField(node.fax,16); add(local_fax); ok = new Button( "OK" ); // ROW 10 cancel = new Button("CANCEL"); add(ok); add( cancel ); /* Display the thing at the normal position */ this.reshape(50,50,400,220); this.show(); return( true ); } // Called when user clicks a button or chooses a menu public boolean action( Event event,Object arg) { int unit = 0; int save_unit; if( event.target == cancel ) // CANCEL BUTTON { this.dispose(); return(false); } if( event.target == ok ) { n.clear(); // Remove the old one // Ok, pull the fields and change them // Note first do the local fields // Check for duplicate unit # try{ unit = Integer.parseInt( unit_num.getText()); } catch( NumberFormatException x){ n.unit = 0; } save_unit = n.unit; if( unit != n.unit && n.setUnit( unit ) == false ) { Alert a = new Alert("ERROR","Duplicate Unit #"); this.dispose(); return( false ); } n.location = unit_location.getText(); try{ n.unit = Integer.parseInt( unit_num.getText()); } catch( NumberFormatException x){ n.unit = 0; } try{ lbu.period = Integer.parseInt( lbu_period.getText()); } catch( NumberFormatException x){ lbu.period = 1; } // Now do the node class fields node.site_name = name.getText(); node.site_address = address.getText(); try { node.system = Integer.parseInt( sys.getText() ); } catch( NumberFormatException x) { n.system = 0; } node.phone = local_phone.getText(); node.fax = local_fax.getText(); n.lbu_type = type.getSelectedIndex(); // Pitch the dialog and return with node re-written this.dispose(); n.show(); return( true ); } return( false ); } // Close window on click of GO-AWAY box public boolean handleEvent( Event e) { if( e.id == Event.WINDOW_DESTROY ) { this.dispose(); return( true ); } else return( super.handleEvent(e) ); // Let big brother do it } } ADDED JavaPlanner/Planning/Nodes/Dialog/node_dialog_relay.java Index: JavaPlanner/Planning/Nodes/Dialog/node_dialog_relay.java ================================================================== --- JavaPlanner/Planning/Nodes/Dialog/node_dialog_relay.java +++ JavaPlanner/Planning/Nodes/Dialog/node_dialog_relay.java @@ -0,0 +1,1 @@ +import java.applet.Applet; import java.awt.*; /*********************************************************** * * This is the node information dialog * Add RELAY period * ************************************************************/ public class node_dialog_relay extends Frame { // Window components TextField name; TextField address; TextField sys; TextField unit_num; TextField unit_location; TextField local_phone; TextField local_fax; Button ok; Button cancel; Choice type; relay n; // Node we are working on public node_dialog_relay(String title) { // (1) Set title & layout super( title ); setLayout(new GridLayout(9,2)); } public boolean show( node me ) { n = (relay) me; /* 1) With the node information build the textfields in the window */ add(new Label("Site Name: ")); name = new TextField(""+node.site_name); // Row 1 add( name ); add( new Label("Site Address: ")); // Row 2 address = new TextField(""+node.site_address); add( address ); add(new Label("System: ")); // ROW 3 sys = new TextField(""+node.system,5); add( sys ); add(new Label("Unit: ")); // ROW 4 unit_num = new TextField(""+n.unit,5); add( unit_num ); add(new Label("Location: ")); // ROW 5 unit_location = new TextField(n.location,30); add(unit_location); type = new Choice(); // ROW 6 type.addItem("Standard"); type.addItem( "Relay+Modem"); type.addItem( "Base" ); add( new Label("RELAY Type - Select")); type.select( n.relay_type); add( type ); add( new Label("Phone: ")); // ROW 7 local_phone = new TextField(node.phone,16); add( local_phone ); add( new Label("FAX: ")); // ROW 8 local_fax = new TextField(node.fax,16); add(local_fax); ok = new Button( "OK" ); // ROW 9 cancel = new Button("CANCEL"); add(ok); add( cancel ); /* Display the thing at the normal position */ this.reshape(50,50,400,220); this.show(); return( true ); } // Called when user clicks a button or chooses a menu public boolean action( Event event,Object arg) { int unit = 0; int save_unit; if( event.target == cancel ) // CANCEL BUTTON { this.dispose(); n.show(); return(false); } if( event.target == ok ) { // Ok, pull the fields and change them // Note first do the local fields // Check for duplicate unit # try{ unit = Integer.parseInt( unit_num.getText()); } catch( NumberFormatException x){ n.unit = 0; } save_unit = n.unit; if( unit != n.unit && n.setUnit( unit ) == false ) { Alert a = new Alert("ERROR","Duplicate Unit #"); this.dispose(); return( false ); } n.location = unit_location.getText(); try{ n.unit = Integer.parseInt( unit_num.getText()); } catch( NumberFormatException x){ n.unit = 0; } // Now do the node class fields node.site_name = name.getText(); node.site_address = address.getText(); try { node.system = Integer.parseInt( sys.getText() ); } catch( NumberFormatException x) { n.system = 0; } node.phone = local_phone.getText(); node.fax = local_fax.getText(); n.relay_type = type.getSelectedIndex(); // Pitch the dialog and return with node re-written this.dispose(); n.clear(); n.show(); return( true ); } return( false ); } // Close window on click of GO-AWAY box public boolean handleEvent( Event e) { if( e.id == Event.WINDOW_DESTROY ) { this.dispose(); return( true ); } else return( super.handleEvent(e) ); // Let big brother do it } } ADDED JavaPlanner/Planning/Nodes/G1.java Index: JavaPlanner/Planning/Nodes/G1.java ================================================================== --- JavaPlanner/Planning/Nodes/G1.java +++ JavaPlanner/Planning/Nodes/G1.java @@ -0,0 +1,1 @@ +// G1.java import java.applet.Applet; import java.awt.*; import java.io.*; /************************************************************ * * G1 Object * 29 Sept 1997 Add translate for scroll * ************************************************************/ public class G1 extends node { public void create(int x,int y,int sys,Canvas win) { this.create_full(x,y,sys,this.getUnit(),win); } public void create_full( int x,int y,int sys,int u,Canvas win) { cur_x = x - org_x; cur_y = y - org_y; draw_x = x; draw_y = y; node.system = sys; unit = u; this.markUnit(); dw = win; size = 10; this.show(); } public void draw_node( int type ) { Graphics g = dw.getGraphics(); String u_string; metric m; // (1) Set the color switch( type ) { case NORMAL: g.setColor( Color.black ); break; case CLEAR: g.setColor( dw.getBackground() ); break; case SELECTED: g.setColor( Color.gray ); break; } // (1a) Draw the connection to parent if any if( parent != null ) { m = new metric( this,parent); g.drawLine( m.x1,m.y1,m.x2,m.y2); } // (2) Draw it g.drawOval(draw_x,draw_y,size,size); g.fillOval(draw_x,draw_y,size,size); g.drawString("G1",draw_x,draw_y-5); // (3) Do the unit # u_string = "" + unit; g.drawString( u_string,draw_x+size+2,draw_y+size/2); } /************************************************************ * * DELETE_NDOE - This deletes this node and all it's children * *************************************************************/ public void delete_node( ) { // Remove unit number from list this.removeUnit( ); // Remove the data super.delete_node(); } /*********************************************************** * * NODE_TYPE() - Return type of node (BASE,LBU....) - override this one * ***********************************************************/ public int node_type() { return( node.G1 ); // 3 = G1 } public String node_name() { return( "G1" ); } /********************************************************************* * * UNIT_NUM_ASSIGNMENTS - These are a called by specific subclasses to remove/or add units * **********************************************************************/ public int getUnit( ) { int i; i = this.low_getUnit(node.g_nums,1); return( i ); } public void markUnit( ) { this.low_markUnit(this.unit,node.g_nums,1); } public void removeUnit( ) { this.low_removeUnit(this.unit,node.g_nums,1); } public boolean setUnit( int num ) { boolean result; result = low_setUnit( num,node.g_nums,1); return( result ); } /********************************************************************* * * QUOTE GENERATOR - Generate the stuff for this G1 * * INPUT: item - Item count for this thing * out - Output file stream * * OUTPUT: Item number advanced * **********************************************************************/ int Qgen( int item,PrintStream out ) { // Write the stuff in the file //this.Qprint(item+ " "," "," ","G1 UNIT - "+unit+" "+parent.location," ",out); this.Qprint(" ","1","G-1 UNIT "+unit,"Groundhog Wireless Volume Counter","1075",out); return( item+1); } } ADDED JavaPlanner/Planning/Nodes/G2.java Index: JavaPlanner/Planning/Nodes/G2.java ================================================================== --- JavaPlanner/Planning/Nodes/G2.java +++ JavaPlanner/Planning/Nodes/G2.java @@ -0,0 +1,1 @@ +//G2.java import java.applet.Applet; import java.awt.*; import java.io.*; /************************************************************ * * G2 Object * 29 Sept 1997 Add translate for scroll * 14-Feb-98 Add Quote generator * 16-Feb-98 Add G2 types * ************************************************************/ public class G2 extends node { static public final int STANDARD = 0; static public final int WX = 1; public int g2_type = STANDARD; // Type of G2 public void create( int x,int y,int sys,Canvas win) { this.create_full(x,y,sys,this.getUnit(),win); } public void create_full( int x,int y,int sys,int u,Canvas win) { cur_x = x - org_x; cur_y = y - org_y; draw_x = x; draw_y = y; node.system = sys; unit = u; this.markUnit(); dw = win; size = 15; // New size of G2 this.show(); } public void draw_node( int type ) { Graphics g = dw.getGraphics(); String u_string; metric m; // (1) Set the color switch( type ) { case NORMAL: g.setColor( Color.black ); break; case CLEAR: g.setColor( dw.getBackground() ); break; case SELECTED: g.setColor( Color.gray ); break; } // (1a) Draw the connection to parent if any if( parent != null ) { m = new metric( this,parent); g.drawLine( m.x1,m.y1,m.x2,m.y2); } // (2) Draw it g.drawOval(draw_x,draw_y,size,size); g.fillOval(draw_x,draw_y,size,size); switch( g2_type ) { case STANDARD: g.drawString("G2",draw_x,draw_y-5); break; case WX: g.drawString("G2-WX",draw_x,draw_y-5); break; } // (3) Do the unit # u_string = "" + unit; g.drawString( u_string,draw_x+size+2,draw_y+size/2); } /******************************************************************** * * INFO - Show dialog with node information to user * * ALLOW IT TO BE CHANGED * *********************************************************************/ public void info() { node_dialog_g2 n; String title; // (1) Build the title title = this.node_name(); title = title + unit; n = new node_dialog_g2(title); n.show(this); } /************************************************************ * * DELETE_NDOE - This deletes this node and all it's children * *************************************************************/ public void delete_node( ) { // Remove unit number from list this.removeUnit( ); // Remove the data super.delete_node(); } /*********************************************************** * * NODE_TYPE() - Return type of node (BASE,LBU....) - override this one * ***********************************************************/ public int node_type() { return( node.G2 ); // 4= G2 } public String node_name() { return( "G2" ); } public int get_g2_type( ) { return( g2_type ); } /********************************************************************* * * UNIT_NUM_ASSIGNMENTS - These are a called by specific subclasses to remove/or add units * **********************************************************************/ public int getUnit( ) { int i; i = this.low_getUnit(node.g_nums,1); return( i ); } public void markUnit( ) { this.low_markUnit(this.unit,node.g_nums,1); } public void removeUnit( ) { this.low_removeUnit(this.unit,node.g_nums,1); } public boolean setUnit( int num ) { boolean result; result = low_setUnit( num,node.g_nums,1); return( result ); } /********************************************************************* * * QUOTE GENERATOR - Generate the stuff for this G2 * * INPUT: item - Item count for this thing * out - Output file stream * * OUTPUT: Item number advanced * **********************************************************************/ int Qgen( int item,PrintStream out ) { // Write the stuff in the file //this.Qprint(item+ " "," "," ","G2 UNIT - "+unit+" "+parent.location," ",out); switch( g2_type ) { case STANDARD: this.Qprint(item+" ","1","G-2 UNIT "+unit, "Groundhog Wireless Volume Counter/Classifier","1895",out); break; case WX: this.Qprint(item+" ","1","G-2 UNIT "+unit, "Groundhog Counter/Classifier with Weather","1995",out); break; } return( item+1); } } ADDED JavaPlanner/Planning/Nodes/base.java Index: JavaPlanner/Planning/Nodes/base.java ================================================================== --- JavaPlanner/Planning/Nodes/base.java +++ JavaPlanner/Planning/Nodes/base.java @@ -0,0 +1,1 @@ +// Base.java import java.applet.Applet; import java.awt.*; import java.io.*; /************************************************************ * * BASE - This is the base station object * 19 Sep 1997 Add translate to draw * ************************************************************/ public class base extends node { public void create( int x,int y,int sys,Canvas win) { this.create_full(x,y,sys,200,win); } public void create_full( int x,int y,int sys,int u,Canvas win) { int i; cur_x = x - org_x; cur_y = y - org_y; draw_x = x; draw_y = y; node.system = sys; unit = u; dw = win; size = 30; // Reset all the numbers for( i=0; i= STANDARD_WX ) { i = i - STANDARD_WX; } switch( i ) { case SITE_BASE: g.drawRoundRect(draw_x,draw_y-2, size,size,20,20); break; case SITE_BASE_MODEM:g.drawRoundRect(draw_x,draw_y-2, size,size,20,20); g.drawRoundRect(draw_x,draw_y-4, size,size,20,20); break; } g.drawRoundRect(draw_x,draw_y,size,size,20,20); if( location.length() == 0 ) g.drawString("LBU",draw_x,draw_y-5); else { g.setColor( dw.getBackground() ); g.drawString("LBU",draw_x,draw_y-5); g.setColor( draw_color ); try{ s = location.substring(0,8); } catch( StringIndexOutOfBoundsException ob) { s = location; } g.drawString(s,draw_x,draw_y - 5); } // Show a weather unit if( lbu_type >= STANDARD_WX ) g.drawString("WX",draw_x+5,draw_y+40); // (3) Do the unit # fm = g.getFontMetrics(); u_string = "" + unit; x = draw_x + (size - (fm.charWidth('0') * u_string.length()))/2; y = draw_y + fm.getHeight() - 4; g.drawString( u_string,x,y); u_string = "" + system; x = draw_x + (size - (fm.charWidth('0') * u_string.length()))/2; y = y + fm.getHeight(); g.drawString( u_string,x,y); lbu_type = stored_type; } /******************************************************************** * * INFO - Show dialog with node information to user * * ALLOW IT TO BE CHANGED * *********************************************************************/ public void info() { node_dialog_lbu n; String title; // (1) Build the title title = this.node_name(); title = title + unit; n = new node_dialog_lbu(title); n.show(this); } /*********************************************************** * * NODE_TYPE() - Return type of node (BASE,LBU....) - override this one * ***********************************************************/ public int node_type() { return( node.LBU ); // 2 = LBU } public String node_name() { return( "LBU" ); } public int get_lbu_type( ) { return( lbu_type ); } /************************************************************ * * DELETE_NDOE - This deletes this node and all it's children * *************************************************************/ public void delete_node( ) { // Remove unit number from list this.removeUnit(); // Remove the data super.delete_node(); } /********************************************************************* * * UNIT_NUM_ASSIGNMENTS - These are a called by specific subclasses to remove/or add units * **********************************************************************/ public int getUnit( ) { int i; i = this.low_getUnit(node.l_nums,101); return( i ); } public void markUnit( ) { this.low_markUnit(this.unit,node.l_nums,101); } public void removeUnit( ) { this.low_removeUnit(this.unit,node.l_nums,101); } public boolean setUnit( int num ) { boolean result; result = low_setUnit( num,node.l_nums,101); return( result ); } /********************************************************************* * * QUOTE GENERATOR - Generate the stuff for this G2 * * INPUT: item - Item count for this thing * out - Output file stream * * OUTPUT: Item number advanced * **********************************************************************/ int Qgen( int item,PrintStream out ) { // Write the stuff in the file this.Qprint(item+ " "," "," ","LBU "+location," ",out); this.Qprint(" ","1","BSR-2","Base Station Repeater Cabinet","2100",out); this.Qprint(" ","50","AC-41N","Antenna Feed Line Cable","1.55",out); this.Qprint(" ","1","SG-30","Solar Generator Panel 30W","690",out); this.Qprint(" ","1","BA-03","Base Station Antenna 3dB","195",out); this.Qprint(" ","1","AT-20","Self Supporting Tower 20ft","390",out); switch( lbu_type ) { case STANDARD: case SITE_BASE: break; // Nothing extra case SITE_BASE_MODEM: this.Qprint(" ","1","RPM28.8","Remote Polling Modem","395",out); break; case STANDARD_WX: case SITE_BASE_WX: this.Qprint(" ","1","WX-1","Weather Station w/Precip","7200",out); break; case SITE_BASE_MODEM_WX: this.Qprint(" ","1","RPM28.8","Remote Polling Modem","395",out); this.Qprint(" ","1","WX-1","Weather Station w/Precip","7200",out); break; } return( item+1 ); } } ADDED JavaPlanner/Planning/Nodes/node.java Index: JavaPlanner/Planning/Nodes/node.java ================================================================== --- JavaPlanner/Planning/Nodes/node.java +++ JavaPlanner/Planning/Nodes/node.java @@ -0,0 +1,1 @@ +/* node.java * * Node base class - * * 6-Jan-2016 Started firenet work */ import java.applet.Applet; import java.awt.*; import java.io.*; /************************************************************ * * NODE - This is the base class for system objects * * 24 Sept 1997 Change size allow up to 60 Ghogs & start relays @60 * 29 Sept 1997 Add origin values to structure & method to change them * 16 Feb 1998 Add stuff for quote prints * 6 Jan 2016 Add Firenet stuff * ************************************************************/ public class node { static public int system; // Make CLASS VAR's so we have only 1 static public String site_name; // Where it is static public String site_address; static public String phone; static public String fax; // Available numbers - note all start as FALSE when TRUE used static public boolean[] node_nums = new boolean[6]; // Available Firenet nodes static public boolean[] g_nums = new boolean[60]; // Available Ghog numbers static public boolean[] r_nums = new boolean[25]; // Available relay numbers static public boolean[] l_nums = new boolean[25]; // Available lbu numbers static public int org_x = 0; // Originial origin static public int org_y = 0; // Original origin public int unit; // Object vars 1/node public String location = ""; public int cur_x,cur_y; // Current position public int draw_x,draw_y; // Draw node here (cur_x+org_x),(cur_y+org_y); public node parent = null; // Pointer to parent public static final int NODE_MAX = 16; public node[] children = new node[NODE_MAX]; public Canvas dw; public boolean selected = false; public int size; //public int period; // Node period in minutes // Drawing actions public static final int NORMAL = 0; // Normal drawing public static final int CLEAR = 1; // Clear the drawing public static final int SELECTED = 2; // Show selected // Unit types public static final int BASE = 0; public static final int RELAY = 1; public static final int LBU = 2; public static final int G1 = 3; public static final int G2 = 4; public static final int FBASE = 5; // Class methods /********************************************************** * * NODE INITER * **********************************************************/ public void create( int x,int y,int sys,Canvas win) { // NOTE: X,Y here are DISPLAY values // Cur_X,Cur_Y are absolute values this.create_full(x,y,sys,1,win); } public void create_full( int x,int y,int sys,int u,Canvas win) { cur_x = x - org_x; cur_y = y - org_y; draw_x = x; draw_y = y; node.system = sys; unit = u; dw = win; //period = 0; this.show(); } /*********************************************************** * * NODE_TYPE() - Return type of node (BASE,LBU....) - override this one * ***********************************************************/ public int node_type() { return( -1 ); } /*********************************************************** * * NODE_NAME() - Return name of node (BASE,LBU....) - override this one * ***********************************************************/ public String node_name() { return( "NODE" ); } /*********************************************************** * * NEW_ORIGIN(int x,int y) - Set ORIGIN to this value for translate * * INPUT: x,y - NEW origin values * * OUTPUT: These values saved as new origin * Change DRAW X,DRAW Y in all children * ************************************************************/ public void new_origin( int x,int y ) { int i; node.org_x = x; node.org_y = y; this.draw_x = this.cur_x + node.org_x; this.draw_y = this.cur_y + node.org_y; for( i=0; i< children.length; i++ ) { if( children[i] != null ) children[i].new_origin(x,y); } } public void scroll_x( int x ) { this.new_origin( x,node.org_y ); } public void scroll_y( int y ) { this.new_origin( node.org_x,y ); } /*********************************************************** * * SHOW() - This paints the node & children * ************************************************************/ public void show( ) { int i; // Draw node this.draw_node(NORMAL); // Draw children for( i=0; i< children.length; i++ ) { if( children[i] != null ) children[i].show(); } } /*********************************************************** * * CLEAR() - This unpaints the node & children * ************************************************************/ public void clear( ) { int i; // Clear this node this.draw_node(CLEAR); // Clear children for( i=0; i< children.length; i++ ) { if( children[i] != null ) children[i].clear(); } } /*********************************************************** * * SELECT() - This shows selected/unselected * ************************************************************/ public void select( ) { this.draw_node(SELECTED); } // This is the actual drawing routine - overide this in subclass public void draw_node(int type) { } /*********************************************************** * * ADD_CHILD - This adds a child node to an existing node * ************************************************************/ public void add_child( node n ) { int i; Alert err; /* (1) First see if this node is already part of the children */ for( i=0;i draw_y + 30 ) return( null ); if( x < draw_x ) return( null ); if( x > draw_x + 30 ) return( null ); return( this ); } /*********************************************************** * * MOVE_NODE - This moves a node to a new position * ************************************************************/ public void move_node( int x,int y) { this.clear(); // Clear it cur_x = x - org_x; // Move it //cur_y = y + org_y; cur_y = y; draw_x = x - org_x; //draw_y = y + org_y; // Correction for panel at top draw_y = y; this.select(); // Show it } /************************************************************ * * DELETE_NDOE - This deletes this node and all it's children * *************************************************************/ public void delete_node( ) { node n; int i; /* (1) Delete all the children */ if( children != null ) { for( i=0;i + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ADDED JavaPlanner/Planning/Support/GifImage.java Index: JavaPlanner/Planning/Support/GifImage.java ================================================================== --- JavaPlanner/Planning/Support/GifImage.java +++ JavaPlanner/Planning/Support/GifImage.java @@ -0,0 +1,1 @@ +/* * @(#)GifImage.java 1.1 96/03/16 * * Copyright (c) 1996 Tadashi Hamano All Rights Reserved. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL purposes and without * fee is hereby granted provided that this copyright notice * appears in all copies. * * I SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS * A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE * OR ITS DRIVATIVES. * * History : * 1.0 96/03/14 initial version * 1.1 96/03/16 fix a bug (transparent) */ // This is based on "GifImage" code on alpha3 API. // Listed below is the original Copyright notice. /* * @(#)GifImage.java 1.24 95/05/11 Patrick Naughton, Arthur van Hoff * * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL purposes and without * fee is hereby granted provided that this copyright notice * appears in all copies. Please refer to the file "copyright.html" * for further important copyright and licensing information. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. */ // End of the original Copyright notice. /*- * Reads GIF image from memory, construct * a MemoryImageSource object. * * The algorithm is copyright of CompuServe. */ import java.awt.image.*; /** * Gif Image converter * * @version 1.1 16 Mar 1996 * @author Tadashi Hamano */ public class GifImage { private static final int IMAGESEP = 0x2c; private static final int EXBLOCK = 0x21; private static final int EX_GRAPHICS_CONTROL = 0xf9; private static final int EX_COMMENT = 0xfe; private static final int EX_APPLICATION = 0xff; private static final int TERMINATOR = 0x3b; private static final int INTERLACEMASK = 0x40; private static final int COLORMAPMASK = 0x80; private int width; private int height; private byte raster[]; private IndexColorModel icm; private MemoryImageSource mis; private int bPtr; private int num_colors; private int trans_index = -1; private byte red[]; private byte green[]; private byte blue[]; private byte buff[]; /** * Constructor, read image from memory. */ public GifImage( byte src[]) throws GifImageException { buff = src; bPtr = 0; readHeader(); while (true) { int code; switch (code = readBuff()) { case EXBLOCK: switch (code = readBuff()) { case EX_GRAPHICS_CONTROL: { byte buf[] = new byte[6]; if (readBuff( buf, 6) == -1) { throw new GifImageException( "corrupt GIF file"); } if ((buf[0] != 4) || (buf[5] != 0)) { throw new GifImageException( "corrupt GIF file (GCE size)"); } // Get the index of the transparent color trans_index = buf[4] & 0xFF; break; } case EX_COMMENT: case EX_APPLICATION: default: while (true) { int n = readBuff(); if (n == 0) { break; } byte buf[] = new byte[n]; if ( readBuff( buf, n) == -1) { throw new GifImageException( "corrupt GIF file"); } } break; } break; case IMAGESEP: try { readImage(); icm = new IndexColorModel( 8, num_colors, red, green, blue, trans_index); mis = new MemoryImageSource( width, height, icm, raster, 0, width); } catch (ArrayIndexOutOfBoundsException e) { e.printStackTrace(); throw new GifImageException( "corrupt gif file"); } break; case TERMINATOR: return; case -1: return; default: throw new GifImageException( "corrupt GIF file (parse) [" + code + "]."); } } } /** * Returns MemoryImageSource to createImage();. */ public MemoryImageSource get() { return( mis); } /** * Read Image header */ private void readHeader() throws GifImageException { byte buf[] = new byte[256*3]; if ( readBuff( buf, 13) == -1) { throw new GifImageException( "corrupt GIF file (header)"); } if (( buf[0] != 'G') || ( buf[1] != 'I') || ( buf[2] != 'F')) { throw new GifImageException( "not a GIF file."); } // colormap info int ch = buf[10] & 0xFF; if (( ch & COLORMAPMASK) == 0) { throw new GifImageException( "no global colormap."); } num_colors = 1 << ((ch & 0x7) + 1); // supposed to be NULL if ( buf[12] != 0) { throw new GifImageException( "corrupt GIF file (nonull)."); } // Read colors if ( readBuff( buf, num_colors * 3) == -1) { throw new GifImageException( "corrupt Gif file (no color)"); } red = new byte[num_colors]; green = new byte[num_colors]; blue = new byte[num_colors]; // Copy colors for ( int i = 0; i < num_colors; i++) { red[i] = buf[i*3 + 0]; green[i] = buf[i*3 + 1]; blue[i] = buf[i*3 + 2]; } } private void readImage() throws GifImageException { byte block[] = new byte[256 + 3]; // Read the image descriptor if ( readBuff( block, 10) == -1) { throw new GifImageException( "corrupt GIF image.(no image descriptor)"); } width = ( block[4] & 0xFF) | ( block[5] << 8); height = ( block[6] & 0xFF) | ( block[7] << 8); boolean interlace = ( block[8] & INTERLACEMASK) != 0; int initCodeSize = block[9] & 0xFF; byte ras[] = raster = new byte[ width * height]; // Patrick Naughton: // Note that I ignore the possible existence of a local color map. // I'm told there aren't many files around that use them, and the // spec says it's defined for future use. This could lead to an // error reading some files. // // Start reading the image data. First we get the intial code size // and compute decompressor constant values, based on this code // size. // // The GIF spec has it that the code size is the code size used to // compute the above values is the code size given in the file, // but the code size used in compression/decompression is the code // size given in the file plus one. (thus the ++). // Arthur van Hoff: // The following narly code reads LZW compressed data blocks and // dumps it into the image data. The input stream is broken up into // blocks of 1-255 characters, each preceded by a length byte. // 3-12 bit codes are read from these blocks. The codes correspond to // entry is the hashtable (the prefix, suffix stuff), and // the appropriate pixels are written to the image. int clearCode = (1 << initCodeSize); int eofCode = clearCode + 1; int bitMask = num_colors - 1; // Variables used to form reading data boolean blockEnd = false; int remain = 0; int byteoff = 0; int accumbits = 0; int accumdata = 0; // Variables used to decompress the data int codeSize = initCodeSize + 1; int maxCode = 1 << codeSize; int codeMask = maxCode - 1; int freeCode = clearCode + 2; int code = 0; int oldCode = 0;; byte prevChar = 0; // Temproray storage for decompression short prefix[] = new short[ 4096]; byte suffix[] = new byte[ 4096]; byte outCode[] = new byte[ 1025]; // Variables used for writing pixels int x = width; int y = 0; int off = 0; int pass = 0; // Read codes until the eofCode is encountered while (true) { if (accumbits < codeSize) { // fill the buffer if needed remain -= 2; while ( remain < 0 && !blockEnd) { block[0] = block[byteoff]; byteoff = 0; // read the next block length int blockLength = readBuff(); if (blockLength < 0) { return; } if (blockLength == 0) { blockEnd = true; } if ( readBuff( block, remain + 2, blockLength) == -1) { return; } remain += blockLength; } // 2 bytes at a time saves checking for // accumbits < codeSize. // We know we'll get enough and also that we can't // overflow since codeSize <= 12. accumdata += (block[ byteoff++] & 0xFF) << accumbits; accumbits += 8; accumdata += (block[ byteoff++] & 0xFF) << accumbits; accumbits += 8; } // Compute the code code = accumdata & codeMask; accumdata >>= codeSize; accumbits -= codeSize; // // Interpret the code // if (code == clearCode) { // Clear code sets everything back to its initial value, // then reads the immediately subsequent code as // uncompressed data. // Note that freeCode is one less than it is supposed // to be, this is because it will be incremented next // time round the loop freeCode = clearCode + 1; codeSize = initCodeSize + 1; maxCode = 1 << codeSize; codeMask = maxCode - 1; // Continue if we've NOT reached the end, some Gif // images contain bogus codes after the last clear code. if (off < raster.length) { continue; } // pretend we've reached the end of the data code = eofCode; } if (code == eofCode) { // make sure we read the whole block of pixels. if ( !blockEnd) { readBuff(); } return; } // It must be data: save code in CurCode int curCode = code; int outCount = outCode.length; // If greater or equal to freeCode, not in the hash table // yet; repeat the last character decoded if (curCode >= freeCode) { curCode = oldCode; outCode[ --outCount] = prevChar; } // Unless this code is raw data, pursue the chain pointed // to by curCode through the hash table to its end; each // code in the chain puts its associated output code on // the output queue. while (curCode > bitMask) { outCode[ --outCount] = suffix[ curCode]; curCode = prefix[ curCode]; } // The last code in the chain is treated as raw data. prevChar = (byte)curCode; outCode[ --outCount] = prevChar; // Now we put the data out to the Output routine. It's // been stacked LIFO, so deal with it that way... int len = outCode.length - outCount; if ( len > 2 && len < x) { x -= len; System.arraycopy(outCode, outCount, ras, off, len); off += len; } else while (--len >= 0) { ras[ off++] = outCode[outCount++]; // Update the X-coordinate, and if it overflows, // update the Y-coordinate if ( --x == 0) { // If a non-interlaced picture, just increment y // to the next scan line. If it's interlaced, // deal with the interlace as described in the // GIF spec. Put the decoded scan line out // to the screen if we haven't gone past the bottom // of it x = width; if ( interlace) { switch ( pass) { case 0: y += 8; if ( y >= height) { pass++; y = 4; } break; case 1: y += 8; if (y >= height) { pass++; y = 2; } break; case 2: y += 4; if (y >= height) { pass++; y = 1; } break; case 3: y += 2; break; } off = y * width; } // Some files overrun the end if ( off >= ras.length) { break; } } } // Build the hash table on-the-fly. No table is stored in // the file. prefix[freeCode] = (short)oldCode; suffix[freeCode] = prevChar; oldCode = code; // Point to the next slot in the table. If we exceed the // maxCode, increment the code size unless // it's already 12. If it is, do nothing: the next code // decompressed better be CLEAR if (++freeCode >= maxCode) { if (codeSize < 12) { codeSize++; maxCode <<= 1; codeMask = maxCode - 1; } } } } /** * Read a byte from memory, return it. */ private int readBuff() { if ( buff.length < 1 + bPtr) { return( -1); } else { return( ( buff[ bPtr++] & 0xFF)); } } /** * Read bytes from memory, copy it. * Returns number of bytes copied. */ private int readBuff( byte dst[], int off, int len) { bPtr += off; return( readBuff( dst, len)); } /** * Read bytes from memory, copy it. * Returns number of bytes copied. */ private int readBuff( byte dst[], int len) { if ( buff.length < len + bPtr) { return( -1); } else { System.arraycopy( buff, bPtr, dst, 0, len); bPtr += len; return( len); } } } ADDED JavaPlanner/Planning/Support/GifImageException.java Index: JavaPlanner/Planning/Support/GifImageException.java ================================================================== --- JavaPlanner/Planning/Support/GifImageException.java +++ JavaPlanner/Planning/Support/GifImageException.java @@ -0,0 +1,1 @@ +/* * @(#)GifImageException.java 1.00 96/03/13 * * Copyright (c) 1996 Tadashi Hamano All Rights Reserved. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL purposes and without * fee is hereby granted provided that this copyright notice * appears in all copies. * * I SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS * A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE * OR ITS DRIVATIVES. */ // This is based on "IOException" code. // Listed below is the original Copyright notice. /* * @(#)IOException.java 1.10 95/08/09 * * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL purposes and without * fee is hereby granted provided that this copyright notice * appears in all copies. Please refer to the file "copyright.html" * for further important copyright and licensing information. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. */ // End of the original Copyright notice. /** * Signals that a GifImage exception has occurred. * @see GifImage * @version 1.00, 13 Mar 1996 */ public class GifImageException extends Exception { /** * Constructs a GifImageException with no detail message. * A detail message is a String that describes this particular exception. */ public GifImageException() { super(); } /** * Constructs a GifImageException with the specified detail message. * A detail message is a String that describes this particular exception. * @param s the detail message */ public GifImageException(String s) { super(s); } } ADDED JavaPlanner/Planning/Support/MultiLineLabel.java Index: JavaPlanner/Planning/Support/MultiLineLabel.java ================================================================== --- JavaPlanner/Planning/Support/MultiLineLabel.java +++ JavaPlanner/Planning/Support/MultiLineLabel.java @@ -0,0 +1,1 @@ +// This example is from the book _Java in a Nutshell_ by David Flanagan. // Written by David Flanagan. Copyright (c) 1996 O'Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or implied. import java.awt.*; import java.util.*; public class MultiLineLabel extends Canvas { public static final int LEFT = 0; // Alignment constants public static final int CENTER = 1; public static final int RIGHT = 2; protected String[] lines; // The lines of text to display protected int num_lines; // The number of lines protected int margin_width; // Left and right margins protected int margin_height; // Top and bottom margins protected int line_height; // Total height of the font protected int line_ascent; // Font height above baseline protected int[] line_widths; // How wide each line is protected int max_width; // The width of the widest line protected int alignment = LEFT; // The alignment of the text. // This method breaks a specified label up into an array of lines. // It uses the StringTokenizer utility class. protected void newLabel(String label) { StringTokenizer t = new StringTokenizer(label, "\n"); num_lines = t.countTokens(); lines = new String[num_lines]; line_widths = new int[num_lines]; for(int i = 0; i < num_lines; i++) lines[i] = t.nextToken(); } // This method figures out how the font is, and how wide each // line of the label is, and how wide the widest line is. protected void measure() { FontMetrics fm = this.getFontMetrics(this.getFont()); // If we don't have font metrics yet, just return. if (fm == null) return; line_height = fm.getHeight(); line_ascent = fm.getAscent(); max_width = 0; for(int i = 0; i < num_lines; i++) { line_widths[i] = fm.stringWidth(lines[i]); if (line_widths[i] > max_width) max_width = line_widths[i]; } } // Here are four versions of the cosntrutor. // Break the label up into separate lines, and save the other info. public MultiLineLabel(String label, int margin_width, int margin_height, int alignment) { newLabel(label); this.margin_width = margin_width; this.margin_height = margin_height; this.alignment = alignment; } public MultiLineLabel(String label, int margin_width, int margin_height) { this(label, margin_width, margin_height, LEFT); } public MultiLineLabel(String label, int alignment) { this(label, 10, 10, alignment); } public MultiLineLabel(String label) { this(label, 10, 10, LEFT); } // Methods to set the various attributes of the component public void setLabel(String label) { newLabel(label); measure(); repaint(); } public void setFont(Font f) { super.setFont(f); measure(); repaint(); } public void setForeground(Color c) { super.setForeground(c); repaint(); } public void setAlignment(int a) { alignment = a; repaint(); } public void setMarginWidth(int mw) { margin_width = mw; repaint(); } public void setMarginHeight(int mh) { margin_height = mh; repaint(); } public int getAlignment() { return alignment; } public int getMarginWidth() { return margin_width; } public int getMarginHeight() { return margin_height; } // This method is invoked after our Canvas is first created // but before it can actually be displayed. After we've // invoked our superclass's addNotify() method, we have font // metrics and can successfully call measure() to figure out // how big the label is. public void addNotify() { super.addNotify(); measure(); } // This method is called by a layout manager when it wants to // know how big we'd like to be. public Dimension preferredSize() { return new Dimension(max_width + 2*margin_width, num_lines * line_height + 2*margin_height); } // This method is called when the layout manager wants to know // the bare minimum amount of space we need to get by. public Dimension minimumSize() { return new Dimension(max_width, num_lines * line_height); } // This method draws the label (applets use the same method). // Note that it handles the margins and the alignment, but that // it doesn't have to worry about the color or font--the superclass // takes care of setting those in the Graphics object we're passed. public void paint(Graphics g) { int x, y; Dimension d = this.size(); y = line_ascent + (d.height - num_lines * line_height)/2; for(int i = 0; i < num_lines; i++, y += line_height) { switch(alignment) { case LEFT: x = margin_width; break; case CENTER: default: x = (d.width - line_widths[i])/2; break; case RIGHT: x = d.width - margin_width - line_widths[i]; break; } g.drawString(lines[i], x, y); } } } ADDED JavaPlanner/Planning/Support/Progress.java Index: JavaPlanner/Planning/Support/Progress.java ================================================================== --- JavaPlanner/Planning/Support/Progress.java +++ JavaPlanner/Planning/Support/Progress.java @@ -0,0 +1,1 @@ +import java.applet.Applet; import java.awt.*; //import mlsoft.mct.*; public class Progress extends Dialog { Frame f; double max_value; double fraction; public Progress( String name,int max,Frame w) { // Connect it to the world super(w,name,false); max_value = max; fraction = 0.0; // Now add the components this.reshape(50,50,200,75); this.show(); this.update(0); } public void update( int val ) { if( val > (int)max_value ) max_value = (double)val; fraction = (double)val/max_value; if( fraction >= 1.0 ) fraction = 1.0; this.draw(); } void draw() { Rectangle r; Graphics g; double val; // Get the area covered by this thing & the graphics r = new Rectangle(5,25,190,15); g = this.getGraphics(); g.drawString("File Store Progress",10,60); // Now draw a black box around the edges & fill with white g.setColor( Color.white ); g.fillRect( r.x,r.y,r.width,r.height); g.setColor( Color.black ); g.drawRect( r.x,r.y,r.width,r.height); // Now draw a sized filled box as the bar val = (double)r.width * fraction; r.width = (int)(val + 0.5); g.setColor( Color.blue ); g.fillRect( r.x,r.y,r.width,r.height); this.show(); } } ADDED JavaPlanner/Planning/Support/intergerf.java Index: JavaPlanner/Planning/Support/intergerf.java ================================================================== --- JavaPlanner/Planning/Support/intergerf.java +++ JavaPlanner/Planning/Support/intergerf.java @@ -0,0 +1,1 @@ +/* * This is a formatted version of the integer output * Simple for now later we can do C stuff * */ class Integerf { // This converts the string to a little endian version public String toString16fle( int i ) { int msb,lsb; int val; String out; // Get the msb and lsb msb = 0xff & (i >> 8 ); lsb = 0xff & i; // Form a little endian version val = msb | (lsb << 8); out = this.toString16f(val); return( out ); } //* Just add a formatted output class for HEX // format is $XXXX public String toString16f( int i ) { Integer val; String out,part; // (1) Generate the HEX value note will be 4 or less digits i = 0xffff & i; val = new Integer( i ); part = val.toString(i,16); // (2) Now add the required number of 0's and put a $ on the front switch( part.length() ) { case 0: out = "$0000"; break; case 1: out = "$000" + part; break; case 2: out = "$00" + part; break; case 3: out = "$0" + part; break; case 4: out = "$" + part; break; default: out = "$####"; break; } out.toUpperCase(); return( out ); } } ADDED JavaPlanner/Planning/Support/prog_bar.java Index: JavaPlanner/Planning/Support/prog_bar.java ================================================================== --- JavaPlanner/Planning/Support/prog_bar.java +++ JavaPlanner/Planning/Support/prog_bar.java @@ -0,0 +1,1 @@ +/* Progress bar class */ import java.awt.*; class prog_bar extends Panel { double max; double current; double fraction; void prog_bar() { Graphics g; // Set background white and set current and MAX g = this.getGraphics(); this.setBackground( Color.white ); max = 100.0; current = 0.0; fraction = 0.0; // Now draw the box and stuff this.draw(); } void setMax( int val ) { max = (double) val; } void setValue( int val ) { Graphics g; // Calculate the fraction part we have now (note: if > 1.0 make 1.0) current = (double) val; fraction = current/max; if( fraction >= 1.0 ) fraction = 1.0; // Now draw the thing this.draw(); } void draw() { Rectangle r; Graphics g; double val; // Get the area covered by this thing & the graphics r = this.bounds(); g = this.getGraphics(); // Now draw a black box around the edges & fill with white g.setColor( Color.white ); g.fillRect( r.x,r.y,r.width,r.height); g.setColor( Color.black ); g.drawRect( r.x,r.y,r.width,r.height); // Now draw a sized filled box as the bar val = (double)r.width * fraction; r.width = (int)(val + 0.5); g.setColor( Color.blue ); g.fillRect( r.x,r.y,r.width,r.height); this.show(); } } ADDED JavaPlanner/build.xml Index: JavaPlanner/build.xml ================================================================== --- JavaPlanner/build.xml +++ JavaPlanner/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project JavaPlanner. + + + ADDED Logging/firenetlog.c Index: Logging/firenetlog.c ================================================================== --- Logging/firenetlog.c +++ Logging/firenetlog.c @@ -0,0 +1,139 @@ +//************************************************************************* +/* +Copyright (c) 2010. Pandora Products +*/ +//************************************************************************* +/* +* Module Name: firenetlog +* +* Description: This code will run a logging system for the app +* +* Revision History: 22-May-2010 Initial version [d98ef0303d] +*/ +//************************************************************************ + +#include "firenetlog.h" +#include "time.h" + +#if 0 + #pragma mark - + #pragma mark -- DATA -- +#endif + +static int log_on = 0; // Logging control, default = OFF +static FILE *log_file = NULL; // Log file + +#if 0 + #pragma mark - + #pragma mark -- External API -- +#endif + +//*********************************************************************** +/* +* void log_control(int flag, char *where ) - Enable/disable logging +* +* INPUT: flag - 1 => Logging ON/0 => OFF +* where - File location for logging, if previously specified +* then can just pass NULL here +* +* OUTPUT: Logging enabled/disabled and output file created +*/ +//***********************************************************************/ + +void log_control( int flag, const char *where ) +{ + // (1) Is logging turn ON or OFF + + log_on = flag; + time_t now; + + // (2) If OFF we can skip the rest of this + + if( log_on ) + { + // (3) Is there a new logging file ? + + if( where != NULL ) + { + // (3a) Close the old one if necessary + + if( log_file != NULL ) + fclose( log_file ); + + // (3b) Open a new one + + log_file = fopen( where,"w"); + if( log_file != NULL ) + { + now = time(NULL); + fprintf(log_file,"# --- START %s",ctime(&now)); + } + + } + } +} + +//*********************************************************************** +/* +* void log_data( const char *format, va_list data ) +* +* INPUT: format - Output format for log data +* data - Logged parameters +* +* OUTPUT: Write data to log file if logging ON +*/ +//***********************************************************************/ + +void log_data(const char *format, ... ) +{ + va_list args; + + // (1) Is this trip necessary + + if( log_on ) + { + // (2) Is the log file open ? + + if( log_file != NULL ) + { + // (3) Build the arg list + + va_start( args, format ); + + // (3a) Write and flush it out + + (void)vfprintf(log_file,format,args); + fflush( log_file ); + + // (3b) Tidy up arg list + + va_end( args ); + } + } +} + +//*********************************************************************** +/* +* void log_done(void) +* +* INPUT: NONE +* +* OUTPUT: Shutdown logging +*/ +//***********************************************************************/ + +void log_done( void ) +{ + // (1) Turn off logging + + log_on = 0; + + // (2) Close log file if open + + if( log_file != NULL ) + { + fflush(log_file); + fclose( log_file ); + } +} + ADDED Logging/firenetlog.h Index: Logging/firenetlog.h ================================================================== --- Logging/firenetlog.h +++ Logging/firenetlog.h @@ -0,0 +1,27 @@ +//************************************************************************* +/* +Copyright (c) 2010. Pandora Products +*/ +//************************************************************************* +/* +* Module Name: firenetlog +* +* Description: This code will run a logging system for the app +* +* Revision History: 22-May-2010 Initial version +*/ +//************************************************************************ + +#ifndef FIRENETLOG_H +#define FIRENETLOG_H 1 + +#include +#include + +void log_control( int flag, const char *where ); // Start logging and log file +void log_data(const char *format, ... ); // Send to log +void log_done(void); // Shutdown log + +#endif + + Index: Network/Real/SERIAL/Linux/linserial.c ================================================================== --- Network/Real/SERIAL/Linux/linserial.c +++ Network/Real/SERIAL/Linux/linserial.c @@ -36,20 +36,20 @@ #pragma mark -- PORT MGMT API -- /**************************************************************** * -* PORT_LIST *ListPorts() - Get a list of SERIAL RS-232 ports +* PORT_LIST *ListPorts(int modems) - Get a list of SERIAL RS-232 ports * -* INPUT:NONE +* INPUT:modems - (IGNORE) * * OUTPUT: NULL * This is not supported in Linux now so just return NULL * *****************************************************************/ -PORT_LIST *ListPorts(void) +PORT_LIST *ListPorts(int modems) { PORT_LIST *base = NULL; return( base ); } @@ -279,10 +279,43 @@ MEMFREE( h ); } } #pragma mark -- PORT I/O API -- + +/*********************************************************************** +* +* int StatPort( PORT_HANDLE *h ) - Data present on port ? +* +* INPUT: dwelltime - # MS to scan for data 0 => no wait +* h - To this port +* +* OUTPUT: 1 - Data present for read, 0 no data +* +************************************************************************/ + +int StatPort( int dwelltime,PORT_HANDLE *h ) +{ + int rtnval = 0; + fd_set scan; + struct timeval seltime; // Select timeout time + + // (1) Build scan array and set up time + + FD_ZERO( &scan ); + FD_SET( h->fd,&scan ); + seltime.tv_sec = dwelltime / 1000; + seltime.tv_usec = (dwelltime - (1000 * seltime.tv_sec)) * 1000; + + // (2) Do a select on the socket + + rtnval = select(h->fd+1,&scan,NULL,NULL,&seltime); + if( rtnval < 0 ) + rtnval = 0; // If failure return 0 + + return( rtnval ); +} /*********************************************************************** * * int WritePort( char *buffer,int size,PORT_HANDLE *h) - Write to a port * Index: Network/Real/SERIAL/Linux/linserial.h ================================================================== --- Network/Real/SERIAL/Linux/linserial.h +++ Network/Real/SERIAL/Linux/linserial.h @@ -39,14 +39,18 @@ #include #include #include #include #include -#include "tgtypes.h" #ifndef LINSERIAL_H #define LINSERIAL_H 1 + +#ifndef MEMALLOC + #define MEMALLOC(x) calloc(1,x) + #define MEMFREE(x) free(x) +#endif #pragma mark -- Structures -- typedef struct sdummy { struct sdummy *next; @@ -83,11 +87,11 @@ #define NEW_PORT_HANDLE ((PORT_HANDLE *)MEMALLOC(sizeof(PORT_HANDLE))) #pragma mark -- API -- // **** PORT DETERMINATION **** -PORT_LIST *ListPorts(void); +PORT_LIST *ListPorts(int modems); void FreePorts(PORT_LIST *base ); // **** PORT OPEN/CLOSE PORT_HANDLE *OpenPort( int psn, @@ -97,15 +101,15 @@ SER_PORT_PARITY parity); void ClosePort( PORT_HANDLE *h ); // **** PORT I/O -int StatPort( PORT_HANDLE *h ); +int StatPort( int dwelltime,PORT_HANDLE *h ); int WritePort( char *buffer,int size,PORT_HANDLE *h); int ReadPort( char *buffer, int size,PORT_HANDLE *h ); // *** PORT MISC int CTSPort( PORT_HANDLE *h ); // Read CTS void DTRPort( int flag,PORT_HANDLE *h); // Set DTR #endif Index: Network/Real/SERIAL/OSX/bsdserial.c ================================================================== --- Network/Real/SERIAL/OSX/bsdserial.c +++ Network/Real/SERIAL/OSX/bsdserial.c @@ -288,11 +288,21 @@ // (4) Set the baud rates, if you try this in reverse order // then the c_flag -> 0 and will wipe out the baud rates // (i.e. baudrate = 0) error = cfsetospeed( &(h->run),baud ); + if( error != 0 ) + { + MEMFREE(h); + return NULL; + } error = cfsetispeed( &(h->run),baud ); + if( error != 0 ) + { + MEMFREE(h); + return NULL; + } // (5) Cause the new options to take effect immediately. if (tcsetattr(h->fd, TCSANOW, &(h->run)) == -1) { ClosePort( h ); // FAILURE Index: Network/Real/real_phy.c ================================================================== --- Network/Real/real_phy.c +++ Network/Real/real_phy.c @@ -9,27 +9,42 @@ * Description: This code will be used to connect to the * firing box CSMA RS-485 network used between * firing boxes * * Revision History: 25-Sep-2009 [fa981152d5] Real network support +* 11-Jan-2011 DTR is inverted wrt TX use +* 22-Jan-2011 [f2fa5910e4] Add delay for XMIT Enable/Disable +* 23-Aug-2011 [0020ac449a] Add RS-232 debug flag +* 31-Dec-2011 The head end controller will do the tx/RX +* control [55fd308482] */ //************************************************************************ #include #include #include #include #include "real_phy.h" -#include "bsdserial.h" + +#ifdef BSD_VERSION + #include "bsdserial.h" +#else + #include "linserial.h" +#endif + +#include "debug.h" #if 0 #pragma mark - #pragma mark -- Data -- #endif #define FIRENET_BAUD 38400 #define FIRENET_DWELL 100 +#define NET_TX_ON_DLY 10 // usec Found by experiment +#define NET_TX_OFF_DLY 5000 // usec Found by experiment + #if 0 #pragma mark - #pragma mark -- External SIMULATION API -- #endif @@ -88,10 +103,13 @@ FIRENET_BAUD, SER_STOP_ONE, SER_PARITY_NONE); if( ph != NULL ) { +#ifdef RS232_COM + printf("\n** FIRENET RS-232 DEBUG MODE **\n"); +#endif // (3) Turn off DTR and start runnning real_phy_tx(0,ph); rtnval = (void *)ph; } @@ -137,13 +155,16 @@ PORT_HANDLE *ph = (PORT_HANDLE *)h; char buffer[4]; buffer[0] = (char)data; rtnval = WritePort(buffer,1,ph); - if( rtnval == 1 ) - rtnval = 0; // SUCCESS + + // Did we get something ? + if( rtnval == 1 ) + rtnval = 0; + return( rtnval ); } //************************************************************************* /* @@ -158,11 +179,10 @@ int real_stat_phy( void *h ) { int rtnval = -1; PORT_HANDLE *ph = (PORT_HANDLE *)h; - char buffer[4]; rtnval = StatPort( FIRENET_DWELL, ph ); return( rtnval ); } @@ -184,29 +204,32 @@ char buffer[4]; int val; val = ReadPort( buffer,1,ph ); if( val >= 1 ) + { rtnval = (int)(0xff & buffer[0]); + } return( rtnval ); } //************************************************************************* /* * void real_phy_tx( int flag,void *h ) - Enable/Disable xmit * * INPUT: flag - 1 Enable transmit,0 disable transmit -* h - Port handle +* h - Port handle * * OUTPUT: Returned data, EOF if no data +* +* 11-Jan-2011 Invert meaning of flag since DTR from USB board is +* inverted. +* 22-Jan-2011 Add delays on TX on and TX off. Delay after on and before OFF +* 31-Dec-2011 Delete this as hardware in the head end controller will do the +* tx/RX control [55fd308482] */ //************************************************************************ void real_phy_tx( int flag,void *h ) { - PORT_HANDLE *ph = (PORT_HANDLE *)h; - - // Turn DTR on or OFF - - DTRPort(flag,ph); } Index: Network/Simulation/sim_phy.c ================================================================== --- Network/Simulation/sim_phy.c +++ Network/Simulation/sim_phy.c @@ -11,18 +11,24 @@ * firing boxes * * Revision History: 28-Jul-2009 Initial version * 25-Sep-2009 [fa981152d5] Change to support * both real and simulated phy +* 12-Jan-2011 Change to ignore characters WE put into +* buffer (like real hdw) [e4208b8f56] +* 23-Jan-2011 [f2fa5910e4] Add TX on/off delay */ //************************************************************************ #include #include #include #include +#include #include "sim_phy.h" + +#define NET_TX_ON_DLY 5000 // usec Found by experiment #if 0 #pragma mark - #pragma mark -- Data -- #endif @@ -161,10 +167,17 @@ buffer[buf_psn] = data; buf_psn += 1; if( buf_psn >= BUF_SIZE ) buf_psn = 0; // Circular buffer + + // Eat character in buffer so we cannot see our own + // xmitted characters (like hdw) + + ph->psn += 1; + if( ph->psn >= BUF_SIZE ) + ph->psn = 0; // Unlock before we leave rtnval = pthread_mutex_unlock( &buf_lock ); } @@ -221,11 +234,10 @@ // (1) Is this valid before going on if( ph != NULL && ph->valid ==SIM_PHY_VALID ) { - // (1) Are we at buf_psn ? if( ph->psn != buf_psn ) { // (2) No so return data and update @@ -260,9 +272,9 @@ */ //************************************************************************ void sim_phy_tx( int flag,void *h ) { - // Do nothing + usleep(NET_TX_ON_DLY); // Just delay like the real one } Index: Network/mac.c ================================================================== --- Network/mac.c +++ Network/mac.c @@ -9,54 +9,46 @@ * Description: This layer will set up addressing and * send receive packets * * Revision History: 28-Jul-2009 Initial version * 28-Jul-2009 Change to support both -* real and sim phy [fa981152d5] +* real and sim phy [fa981152d5] +* 11-May-2010 Convert to new network [d26a3ab0e9] * * This layer has two functions: * (a) Send and receive packets (see below) * (b) Get a node address * * PACKET FORMAT: -* :; +* :TO>; * : - Packet start marker -* 2 Nibble field as HEX (1 bytes 0-FF value) -* 1 - ACK -* 2 - NAK -* 3 - IAM (see below) -* 4 - DATA -* 2 Nibble field as HEX 1-FF 0xFF -> Broadcast, 0 -> INVALID -* 2 Nibble field as HEX 1-FE -* Up to PHY_DATA_SIZE as 2 nibbles/byte +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Up to PHY_DATA_SIZE ASCII text with , separators * ; Packet End of Data marker -* Single byte sum of TYPE,TO,FROM and DATA fields modulo 0xFF -* and output as 2 nibbles +* Two byte ASCII number sum of TYPE,TO,FROM and DATA fields modulo 100 */ //************************************************************************ #include #include +#include +#include #include "phy.h" #include "mac.h" +#include "clock.h" #if 0 #pragma mark - #pragma mark -- Data -- #endif -typedef struct { - CHAR_TYPE type; - unsigned char value; - } DATA_TOKEN; - -static int mac_proc_char(unsigned char byte,MAC_HANDLE *mh ); -static int packet_engine( MAC_HANDLE *mh ); - -static int send_packet_data( unsigned char ch,MAC_HANDLE *mh ); -static int send_packet_byte( unsigned char byte,MAC_HANDLE *mh ); +static int packet_engine( int byte,MAC_HANDLE *mh ); + +static int send_packet_number( int addr,MAC_HANDLE *mh,int *cksum ); +//static int send_packet_byte( char byte,MAC_HANDLE *mh ); #if 0 #pragma mark - #pragma mark -- Create/Delete API -- #endif @@ -67,10 +59,11 @@ * * INPUT: port - Phy port name * * OUTPUT: NULL, failure <> NULL -> Mac layer open * NOTE: on return we have an assigned NODE address +* */ //************************************************************************ void *init_mac(char *port) { @@ -164,16 +157,11 @@ stat_phy( mh->h ) ) { // (3) Get the character and if read run through packet // engine byte = (unsigned char)get_phy( mh->h ); - if( mac_proc_char( byte,mh ) ) - { - // (4) Run through packet engine - - rtnval = packet_engine( mh ); - } + rtnval = packet_engine( byte,mh ); } } return( rtnval ); } @@ -188,21 +176,21 @@ */ //************************************************************************ void flush_mac( void *h) { - unsigned char byte; + MAC_HANDLE *mh = (MAC_HANDLE *)h; // (1) Is this trip necessary if( mh != NULL && mh->valid == MAC_HANDLE_VALID ) { // Read out all the characters in the input buffer while( stat_phy( mh->h ) ) - byte = (unsigned char)get_phy( mh->h ); + get_phy( mh->h ); // Flush packet mh->state = NO_PACKET; } @@ -215,89 +203,84 @@ * h - Valid MAC handle * * OUTPUT: 0 - Packet sent * <> 0 Transmission failure * 25-Sep-2009 Change to enable TX +* 29-Dec-2011 Change to make enable/disable RT dependent */ //************************************************************************ int put_mac( PACKET *pkt,void *h ) { MAC_HANDLE *mh = (MAC_HANDLE *)h; int rtnval = -1; int i; - unsigned char cksum; + int cksum =0; unsigned char from; + CLOCK_STRUCT c; // (1) Is this trip necessary if( mh != NULL && mh->valid == MAC_HANDLE_VALID ) { // (1a) Enable XMIT phy_tx(1,mh->h); + CLOCK_Start( &c ); // (2) Send out each byte of the packet and verify that it's OK - if( send_packet_data( MSG_HDR,mh ) == 0) - { - if( send_packet_byte( pkt->type,mh ) == 0 ) // Send TYPE - { - cksum = pkt->type; - if( send_packet_byte( pkt->to,mh ) == 0 ) // Send TO - { - cksum += pkt->to; - - // If from address == 0 then use my current address - - if( pkt->from == 0 ) - from = mh->my_address; - else - from = pkt->from; - if( send_packet_byte( from,mh ) == 0) // Send FROM - { - - cksum += from; - for( i=0; ilen; i++ ) - { - if( send_packet_byte( pkt->data[i],mh ) != 0) - break; - else - cksum += pkt->data[i]; - } - - if( i >= pkt->len ) - { - if( send_packet_data( MSG_TRLR,mh) == 0 ) - { - if( send_packet_byte( cksum,mh ) == 0 ) - { - rtnval = 0; // SUCCESS - } - else - rtnval = -7; - } - else - rtnval = -6; - } - else - rtnval = -5; - } - else - rtnval = -4; - } - else - rtnval = -3; - } - else - rtnval = -2; + if( send_packet_byte( MSG_HDR,mh ) == 0) + { + if( send_packet_number( pkt->to,mh,&cksum ) == 0 ) // Send TO + { + // If from address == 0 then use my current address + + if( pkt->from == 0 ) + from = mh->my_address; + else + from = pkt->from; + if( send_packet_number( from,mh,&cksum ) == 0) // Send FROM + { + + for( i=0; ilen; i++ ) + { + if( send_packet_byte( pkt->data[i],mh ) != 0) + break; + else + cksum += pkt->data[i]; + } + + if( i >= pkt->len ) + { + if( send_packet_byte( MSG_TRLR,mh) == 0 ) + { + cksum = cksum % CKSUM_MODULO; // Modulo checksum + if( send_packet_number( cksum,mh,&cksum ) == 0 ) + { + rtnval = 0; // SUCCESS + } + else + rtnval = -7; + } + else + rtnval = -6; + } + else + rtnval = -5; + } + else + rtnval = -4; + } } else rtnval = 1; - // Disable TX + // Disable TX after specified time + while( CLOCK_Done(&c, 3) == 0 ) + ; phy_tx(0,mh->h); } return( rtnval ); } @@ -328,11 +311,10 @@ if( mh->state == RCVED_PACKET ) { // (3) Yes, copy the data into the packet structure - pkt->type = mh->ptype; pkt->to = mh->to; pkt->from = mh->from; pkt->len = mh->len; for( i=0; ilen; i++ ) pkt->data[i] = mh->data[i]; @@ -368,21 +350,49 @@ rtnval = mh->my_address; } return( rtnval ); } + +//************************************************************************* +/* +* int send_packet_byte( unsigned char ch,MAC_HANDLE *mh ) - Send char out PHY and check +* +* INPUT: ch - Character to be sent +* +* OUTPUT: 0 - Character sent and received OK to PHY +* <> 0 Problem +* +* EXTERNALLY ACCESSABLE FOR TESTING PURPOSES +*/ +//************************************************************************ + +int send_packet_byte( char ch,MAC_HANDLE *mh ) +{ + int rtnval = -1; // Set for failure + + // (1) Send it out via PHY + + if( put_phy( ch,mh->h ) == 0 ) + { + rtnval = 0; + } + + return( rtnval ); +} #if 0 #pragma mark - #pragma mark -- Support API -- #endif //************************************************************************* /* -* int packet_engine( MAC_HANDLE *mh ) - Process a character into a packet +* int packet_engine( int byte,MAC_HANDLE *mh ) - Process a character into a packet * -* INPUT: mh - Valid MAC handle +* INPUT: byte - Incomming character +* mh - Valid MAC handle * * OUTPUT: 0 - Packet not ready * 1 - Packet ready, (internal buffer of mh) * * Action: Using the value in mh->value and type from there @@ -390,315 +400,227 @@ * 8-Oct-2009 Reset packet engine when HDR received. This will allow restart * partial packet received */ //************************************************************************ -static int packet_engine( MAC_HANDLE *mh ) -{ - int rtnval = 0; // No packet - int fail = 0; // No fail - - // (0) If we have a header then start up a character - - if( mh->type == HDR_CHAR ) - { - // We have winner go to type action - - mh->state = TYPE_PACKET; - mh->len = 0; // Init for packet run - mh->cksum = 0; - } - else - { - - // (1) Check incomming value, if wrong type then bail on packet - - switch( mh->state ) - { - case TYPE_PACKET: - case TO_PACKET: - case FROM_PACKET: - case CKSUM_PACKET: // If we don't get a BIN type value - // in these states then BAIL on the packet - if( mh->type != BIN_CHAR ) - fail = 1; // BAD INPUT - break; - - case DATA_PACKET: // If we get something other than a BIN or CKSUM character - // here then bail also - if( mh->type != BIN_CHAR && - mh->type != CKSUM_CHAR ) - fail = 1; // Bad input - break; - - default: // Accept anything here - break; - } - - // (2) If we have good data then switch and do packet actions - - if( fail == 0 ) - { - switch( mh->state ) - { - case NO_PACKET: // Do we have a startup for the packet ? - if( mh->type == HDR_CHAR ) - { - // We have winner go to type action - - mh->state = TYPE_PACKET; - mh->len = 0; // Init for packet run - mh->cksum = 0; - } - break; - - case TYPE_PACKET: // Get the type value and accum cksum - mh->ptype = mh->value; - mh->cksum += mh->value; - mh->state = TO_PACKET; // Get address... - break; - - case TO_PACKET: // Get to address and accum cksum - mh->to = mh->value; - mh->cksum += mh->value; - mh->state = FROM_PACKET; // Get address... - break; - - case FROM_PACKET: // Get from address and accum cksum - mh->from = mh->value; - mh->cksum += mh->value; - mh->state = DATA_PACKET; // Get data... - break; - - case DATA_PACKET: // Accumulate data values until CKSUM character - if( mh->type == BIN_CHAR ) - { - mh->data[mh->len++] = mh->value; - mh->cksum += mh->value; - - // Also fail if we got too much data - - if( mh->len >= PHY_DATA_SIZE ) - { - mh->state = NO_PACKET; - } - } - else - { - // With the initial checking this has to be the CKSUM - - mh->state = CKSUM_PACKET; - rtnval = 1; // Packet is ready .... - } - break; - - case CKSUM_PACKET: // Do the checksums match, if so go to packet ready - // if not just fail - - if( mh->cksum == mh->value ) - { - mh->state = RCVED_PACKET; // Success - rtnval = 1; - } - else - mh->state = NO_PACKET; // Failure - break; - - case RCVED_PACKET: // We have a packet so just ignore all input - // packet is read - break; - } - } - else - { - // We have a bad input character so just ignore what we have - // and go back to no packet - - mh->state = NO_PACKET; - } - } +static int packet_engine( int byte,MAC_HANDLE *mh ) +{ + int rtnval = 0; // No packet + //int fail = 0; // No fail + + // (0) If we have a header then start up a packet + + if( byte == MSG_HDR ) + { + // We have winner go to to action + + mh->state = TO_PACKET_A; + mh->len = 0; // Init for packet run + mh->cksum = 0; + } + else + { + // (1) Use current state and incomming packet to determine if we + // continue building packet + + switch( mh->state ) + { + case TO_PACKET_A: // Must be a digit + if( isdigit( byte ) ) + { + // Accumulate it into the to address + + mh->to = 10 *(0xf & byte ); + mh->state = TO_PACKET_B; // Move to next + mh->cksum += 0xff & byte; + } + else + { + // Failure, go back to NO packet + + mh->state = NO_PACKET; + } + break; + + case TO_PACKET_B: // Second digit of to address + if( isdigit( byte ) ) + { + mh->to += (0xf & byte); // Full address + + // Is this packet to us, either address = US + // or ADDRESS == broadcast + + if( mh->to == mh->my_address || + mh->to == BCAST_ADDRESS ) + { + // Accumulate cksum & move to FROM address + + mh->cksum += 0xff & byte; + mh->state = FROM_PACKET_A; + } + else + { + // FAIL go back to no packet + + mh->state = NO_PACKET; + } + } + else + { + // FAIL, go back to NO packet + + mh->state = NO_PACKET; + } + break; + + case FROM_PACKET_A: // First part of FROM value, must be a digit + + if( isdigit( byte ) ) + { + mh->from = 10 * (0xf & byte); // Get first part of address + mh->state = FROM_PACKET_B; // Move on + mh->cksum += 0xff & byte; + } + else + { + // Failure, bail + + mh->state = NO_PACKET; + } + break; + + case FROM_PACKET_B: // Second part of from, check for valid address + + if( isdigit(byte) ) + { + mh->from += (0xf & byte); + if( mh->from >= MIN_ADDRESS && + mh->from <= MAX_ADDRESS ) + { + // OK, accumulate in cksum & move to data + + mh->cksum += 0xff & byte; + mh->state = DATA_PACKET; + } + else + { + mh->state = NO_PACKET; // Failure + } + } + else + { + mh->state = NO_PACKET; // FAILURE + } + break; + + case DATA_PACKET: // Accumulate data here till ';' or MAX data, if MAX then failure + if( byte == MSG_TRLR ) + { + // End of data move to cksum state, get checksum + + mh->state = CKSUM_PACKET_A; + mh->cksum = mh->cksum % CKSUM_MODULO; + if( mh->len < PHY_DATA_SIZE ) + mh->data[mh->len] = '\0'; // Put in a NULL + } + else + { + // Keep accumulating data + mh->data[mh->len++] = 0xff & byte; + mh->cksum += byte; + if( mh->len > PHY_DATA_SIZE ) + { + // Problem too much data, bail + + mh->state = NO_PACKET; + } + } + break; + + case CKSUM_PACKET_A: // First byte of cksum + + if( isdigit( byte ) ) + { + mh->pcksum = 10 * (0xf & byte); + mh->state = CKSUM_PACKET_B; + } + else + { + mh->state = NO_PACKET; // Failure + } + break; + + case CKSUM_PACKET_B: // Second and last byte of checksum + + if( isdigit( byte ) ) + { + mh->pcksum += (0xf & byte ); + + // Is checksum right ? + + if( mh->pcksum == mh->cksum ) + { + // Success + + mh->state = RCVED_PACKET; + rtnval = 1; + } + else + { + mh->state = NO_PACKET; // Failure + } + } + else + { + mh->state = NO_PACKET; // Failure + } + break; + + default: break; + } + } return( rtnval ); } //************************************************************************* /* -* int mac_proc_char(unsigned char byte,MAC_HANDLE *mh ) - Process a character -* -* INPUT: byte -* mh - Valid MAC handle -* byte - Input character -* -* OUTPUT: 0 - Character not ready -* 1 - Character ready, value in value of handle struct -* -* Action: : or ; seen return value = ; or : and type marked -* 0-9/A-F accumulate as nibbles till byte gotten (store in last_byte) -* On second nibble return result -*/ -//************************************************************************ - -static int mac_proc_char(unsigned char byte,MAC_HANDLE *mh ) -{ - int rtnval = 0; // No character ready - - // (1) Initialize return value - - mh->type = NO_CHAR; - mh->value = byte; - - // (2) Process the byte value - - switch( byte ) - { - case MSG_HDR: // Packet header - mh->type = HDR_CHAR; - mh->nib_counter = 0; - mh->last_byte = 0; - rtnval = 1; // We have output - break; - - case MSG_TRLR: // Packet cksum marker - mh->type = CKSUM_CHAR; - mh->nib_counter = 0; - mh->last_byte = 0; - rtnval = 1; // We have output - break; - - // Do a trick, handle all A-F hex characters here - // Just form the value in the bottom nibble of byte - // Pull off the bottom nibble then add 9 to convert to A-F - // then let it fall through and be handled by the 0-9 code - - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - // NOTE: A -> 0x01 bottom nibble we want 0x0A so just add 9 - // B -> 0x02 bottom nibble we want 0x0B so just add 9 - // : - // : - byte = 9 + (0x0f & byte); - - // Now just fall through and handle the nibble just like we do 0-9 - - case '0': // 0-9 ASCII -> 0x30 - 0x39 so just get bottom nibble - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': byte = 0xf & byte; // Extract the value - byte = byte << ((1 - mh->nib_counter++)*4); // Shift to psn - mh->last_byte |= byte; - if( mh->nib_counter == 2 ) - { - // We have an output - mh->type = BIN_CHAR; - mh->value = mh->last_byte; - - // Reset for next - mh->nib_counter = 0; - mh->last_byte = 0; - - rtnval = 1; // We have output - } - break; - - default: // On anything else just reset nibble work - mh->nib_counter = 0; - mh->last_byte = 0; - break; - } - - // (3) Return the token pointer - - return( rtnval ); -} - -//************************************************************************* -/* -* int send_packet_byte( unsigned char byte,,MAC_HANDLE *mh ) - Send out two nibbles -* -* INPUT: byte - Byte to be sent (as two ASCII hex characters) -* -* OUTPUT: 0 - Character sent OK -* <> 0 Problem -* -*/ -//************************************************************************ - -static int send_packet_byte( unsigned char byte,MAC_HANDLE *mh ) -{ - int rtnval = -1; // Set for failure - unsigned char ch; - - // (1) Form the HIGH nibble - - ch = (byte>>4) & 0x0f; - ch = 0x30 | ch; // Convert to character - if( ch > 0x39 ) // A -> F - ch += 7; // Converted - if( send_packet_data( ch, mh ) == 0 ) - { - // (2) Form low nibble - - ch = byte & 0xf; - ch = ch | 0x30; - if( ch > 0x39 ) - ch += 7; // Convert A-F - if( send_packet_data(ch,mh) == 0 ) - rtnval = 0; // SUCCESS - } - - return( rtnval ); -} - -//************************************************************************* -/* -* int send_packet_data( unsigned char ch,MAC_HANDLE *mh ) - Send char out PHY and check -* -* INPUT: ch - Character to be sent -* -* OUTPUT: 0 - Character sent and received OK to PHY -* <> 0 Problem -* -*/ -//************************************************************************ - -static int send_packet_data( unsigned char ch,MAC_HANDLE *mh ) -{ - int rtnval = -1; // Set for failure - unsigned char byte; - int i; - - // (1) Send it out via PHY - - if( put_phy( ch,mh->h ) == 0 ) - { - // (2) Now was it received ? - // Give it three cycles - - for( i=0; i<3; i++ ) - { - if( stat_phy(mh->h) == 1 ) - { - // (3) Yes, does it match what we sent.... - byte = (unsigned char)get_phy( mh->h ); - if( byte == ch ) - { - rtnval = 0; - break; // SUCCESS we got what we sent - } - } - } - } - - return( rtnval ); -} - - +* int send_packet_addr( int addr,,MAC_HANDLE *mh,int *cksum ) - Send out packet address +* +* INPUT: addr - Address (two digit number to send) +* mh - MAC_HANDLE +* cksum - Accumulated checksum +* +* OUTPUT: = 0 Address sent OK +* <> 0 Problem +* +*/ +//************************************************************************ + +static int send_packet_number( int addr,MAC_HANDLE *mh,int *cksum ) +{ + int rtnval = 0; // Set for success + char out[4]; + int i; + + // (1) form the address output string + + sprintf(out,"%02d",addr); + + // (2) Send out the two bytes of address + + for( i=0; i<2; i++) + { + if( send_packet_byte( out[i],mh ) != 0 ) + { + rtnval = -1; + break; + } + + // Accumulate cksum + + *cksum = out[i] + *cksum; + } + + return( rtnval ); +} + Index: Network/mac.h ================================================================== --- Network/mac.h +++ Network/mac.h @@ -8,56 +8,53 @@ * * Description: This layer will set up addressing and * send receive packets * * Revision History: 28-Jul-2009 Initial version +* 11-May-2010 Convert to new network [d26a3ab0e9] * * This layer has two functions: * (a) Send and receive packets (see below) * (b) Get a node address * * PACKET FORMAT: -* :; +* :TO>; * : - Packet start marker -* 2 Nibble field as HEX (1 bytes 0-FF value) -* 1 - ACK -* 2 - NAK -* 3 - IAM (see below) -* 4 - DATA -* 2 Nibble field as HEX 1-FF 0xFF -> Broadcast, 0 -> INVALID -* 2 Nibble field as HEX 1-FE -* Up to PHY_DATA_SIZE as 2 nibbles/byte +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Up to PHY_DATA_SIZE ASCII text with , separators * ; Packet End of Data marker -* Single byte sum of TYPE,TO,FROM and DATA fields modulo 0xFF -* and output as 2 nibbles +* Two byte ASCII number sum of TYPE,TO,FROM and DATA fields modulo 100 */ //************************************************************************ #ifndef MAC_H #define MAC_H 1 #define MSG_HDR ':' #define MSG_TRLR ';' +#define DATA_SEP ',' #define PHY_DATA_SIZE 32 // Max size of data xfered -#define NODE_NAME_SZ 16 // Max size of node names +#define CKSUM_MODULO 100 // For address calc +#define BCAST_ADDRESS 0 // Broadcast address +#define MIN_ADDRESS 1 +#define MAX_ADDRESS 32 +#define ACK_WAIT 5000 // Wait 5 ms * addr before sending ACK + +#define PARENT_ADDRESS MAX_ADDRESS typedef enum { NO_PACKET, - TYPE_PACKET, // Getting TYPE of packet - TO_PACKET, // Getting TO address - FROM_PACKET, // Getting FROM address + TO_PACKET_A, // Getting TO address (first byte) + TO_PACKET_B, // Getting TO address (second byte) + FROM_PACKET_A, // Getting FROM address (first byte) + FROM_PACKET_B, // Getting FROM address (second byte) DATA_PACKET, // Getting packet data - CKSUM_PACKET, // Getting packet cksum + CKSUM_PACKET_A, // Getting packet cksum (first byte) + CKSUM_PACKET_B, // Getting packet cksum (second byte) RCVED_PACKET, // Packet ready to use } PACKET_STATE; - -typedef enum { - NO_CHAR, // Not ready yet (first nibble of HEX value) - BIN_CHAR, // Binary value - HDR_CHAR, // ':' head of packet - CKSUM_CHAR, // ';' end of packet - } CHAR_TYPE; #define PACKET_TYPE_ACK 1 #define PACKET_TYPE_NAK 2 #define PACKET_TYPE_IAM 3 #define PACKET_TYPE_DATA 4 @@ -71,35 +68,34 @@ // Pump processing void *h; // Serial handle int phy_psn; // Current psn in phy buffer - - CHAR_TYPE type; // Input processing - unsigned char value; - unsigned char last_byte; // Last byte received - int nib_counter; // Nibble counter (high/low nibble) - - + // Received packet PACKET_STATE state; // State of current received packet - int ptype; int to; int from; int len; - unsigned char data[PHY_DATA_SIZE]; // Packet data - unsigned char cksum; // Accmulated cksum + char data[PHY_DATA_SIZE]; // Packet data + int cksum; // Accmulated cksum + int pcksum; // Packet checksum } MAC_HANDLE; typedef struct { - unsigned char type; - unsigned char to; - unsigned char from; + int to; + int from; int len; - unsigned char data[PHY_DATA_SIZE]; // Packet data + char data[PHY_DATA_SIZE]; // Packet data + + // Chunk handler + + int chunk_len; // Length of current chunk + int chunk_end; // End of current chunk + int chunk_ptr; // Psn in current chunk } PACKET; void *init_mac(char *port); // Open and close of MAC layer void close_mac( void *h ); @@ -109,6 +105,7 @@ int put_mac( PACKET *pkt,void *h ); int get_mac( PACKET *pkt,void *h ); int my_addr_mac( void *h ); // Return PHY address for debugging +int send_packet_byte( char ch,MAC_HANDLE *mh ); #endif Index: Network/network.c ================================================================== --- Network/network.c +++ Network/network.c @@ -8,44 +8,51 @@ * * Description: This layer will set up addressing and * send receive packets * * Revision History: 28-Jul-2009 Initial version +* 12-May-2010 [d26a3ab0e9] Convert to new network style +* This will have fixed numeric addressed for each +* node +* 22-May-2010 Add logging to system [d98ef0303d] +* 22-May-2010 Change get network to clear packet on rec */ //************************************************************************ #include #include #include #include #include "network.h" +#include "firenetlog.h" #if 0 #pragma mark - #pragma mark -- Data -- #endif -static int setup_address( void *h ); +static void net_backoff( int backoff, void *h ); int send_network_nakack( int type,int to,void *h); #if 0 #pragma mark - #pragma mark -- Create/Delete API -- #endif //************************************************************************* /* -* void *init_network(char *port) - Initialize NETWORK layer +* void *init_network(int address,char *port) - Initialize NETWORK layer * -* INPUT: port - Phy port name +* INPUT: address - Assigned address of node +* port - Phy port name * * OUTPUT: NULL, failure <> NULL -> Network layer open * NOTE: on return we have an assigned NODE address */ //************************************************************************ -void *init_network(char *port) +void *init_network(int address,char *port) { void *h; // (1) Open the MAC layer, quit if failure @@ -52,11 +59,11 @@ h = init_mac( port ); if( h != NULL ) { // (2) Set up our network address - if( setup_address( h ) != 1 ) + if( setup_address( address,h ) != 1 ) { // Bad network, failure close_mac( h ); h = NULL; @@ -99,85 +106,50 @@ //************************************************************************ int pump_network( void *h ) { int rtnval; - MAC_HANDLE *mh = (MAC_HANDLE *)h; + //MAC_HANDLE *mh = (MAC_HANDLE *)h; // (1) Pump it.... rtnval = pump_mac(h); - - // (2) If we got something (rtnval = 1) then check if it's a message - // that should be handled here, done by peaking at the type in the - // mac handle. NOTE: The mac handle is valid since the pump_mac() wouldn't - // return 1 unless it had a good handle (and there was data) - // Also handle pings here and ack if received and match our address - if( rtnval ) - { - switch( mh->ptype ) - { - case PACKET_TYPE_IAM: // Handle IAM packets in here, just return a Broadcast NAK - // if we have the same address - if( mh->from == mh->my_address ) - { - send_network_nak( BCAST_ADDRESS, h ); - } - - mh->state = NO_PACKET; // Discard input - rtnval = 0; // There was no packet (wave hands) - break; - - case PACKET_TYPE_PING: // If we match to to address, then return an ACK - if( mh->to == mh->my_address ) - { - send_network_ack( mh->from, h ); - } - - mh->state = NO_PACKET; // Discard input - rtnval = 0; // There was no packet (wave hands) - break; - - default: // On all others discard if they are not our address and - // BCAST address - - if( mh->to != mh->my_address && - mh->to != BCAST_ADDRESS ) - { - mh->state = NO_PACKET; // Discard input - rtnval = 0; - } - break; - } - } - + return( rtnval ); } //************************************************************************* /* * int put_network( PACKET *pkt,void *h ) - Send a packet * -* INPUT: pkt - Packet information +* INPUT: bcast - From address of originating packet (0 = BCAST) +* pkt - Packet information * h - Valid MAC handle * * OUTPUT: 0 - Send OK * <> 0 problem */ //************************************************************************ -int put_network( PACKET *pkt,void *h ) +int put_network( int bcast, PACKET *pkt,void *h ) { int rtnval = -1; int count = MAX_TX_TRY; - int backoff,i; + int backoff; int from; // (1) Try to send and backoff if failure while( count > 0 ) { + // If broadcast source then backoff time = to current node # + + if( bcast == 0) + { + backoff = my_addr_mac(h); + net_backoff( backoff,h ); + } rtnval = put_mac( pkt,h ); if( rtnval == 0 ) break; // Success else { @@ -186,11 +158,11 @@ from = my_addr_mac( h ); } else from = pkt->from; - printf("Network XMIT Fail: [%02X] [%02X] count %d Reason [%d]\n", + log_data("Network XMIT Fail: [%02X] [%02X] count %d Reason [%d]\n", from, pkt->to, count, rtnval); } @@ -201,24 +173,43 @@ flush_network(h); // Clear the network before // retry backoff = rand() & 0x3f; if( backoff == 0 ) backoff = 10; - printf("BACKOFF [%02X] [%d]\n",from,backoff); + log_data("BACKOFF [%02X] [%d]\n",from,backoff); // Sleep then pump the network // till backoff done - for( i=0; ichunk_end != 0 && pkt->chunk_end < pkt->len ) + { + pkt->chunk_end += 1; + } + + // (2) Scan forward and look for chunk marker or EOP + + for( i = pkt->chunk_end; i<= pkt->len; i++ ) + { + switch( pkt->data[i] ) + { + case DATA_SEP: // We have a chunk + case '\0': // Treat NULL same way + + pkt->chunk_ptr = pkt->chunk_end; // Start at last psn + pkt->chunk_len = i - pkt->chunk_end; // Calc chunk length + pkt->chunk_end = i; // Save last end + + // Mark end of data + pkt->data[i] = '\0'; + + if( pkt->chunk_len > 0 ) + return( 1 ); // Exit loop with a chunk + else + return( 0 ); // Exit loop with no chunk left + + default: break; // Ignore everything else + } + } + + return( 0 ); // Falling out here means we found nothing +} //************************************************************************* /* * void flush_network( void *) - Remove all incomming data from network * @@ -251,190 +306,31 @@ void flush_network( void *h) { flush_mac( h ); } -//************************************************************************* -/* -* int send_network_nak( int to,void *h) - Send an NAK packet -* -* INPUT: to - Destination address -* h - Valid MAC handle -* -* OUTPUT: 0 - Send OK -*/ -//************************************************************************ - -int send_network_nak( int to,void *h) -{ - int rtnval; - - rtnval = send_network_nakack( PACKET_TYPE_NAK,to,h ); - - return( rtnval ); -} - -//************************************************************************* -/* -* int send_network_ack( int to,void *h) - Send an AAK packet -* -* INPUT: to - Destination address -* h - Valid MAC handle -* -* OUTPUT: 0 - Send OK -*/ -//************************************************************************ - -int send_network_ack( int to,void *h) -{ - int rtnval; - - rtnval = send_network_nakack( PACKET_TYPE_ACK,to,h ); - - return( rtnval ); + +//************************************************************************* +/* +* int setup_address( int address,void *h ) +* +* INPUT: address - Input address value +* h - Valid MAC handle +* +* OUTPUT: 1 New address setup and running +* +*/ +//************************************************************************ + +int setup_address( int address,void *h ) +{ + MAC_HANDLE *mh = (MAC_HANDLE *)h; + + mh->my_address = address; + return( 1 ); } #if 0 #pragma mark - #pragma mark -- Support API -- #endif -//************************************************************************* -/* -* int send_network_nakack( int to,void *h) - Send an NAK or ACK packet -* -* INPUT: type NAK or ACK type -* to - Destination address -* h - Valid MAC handle -* -* OUTPUT: 0 - Send OK -*/ -//************************************************************************ - -int send_network_nakack( int type,int to,void *h) -{ - PACKET pkt; - MAC_HANDLE *mh = (MAC_HANDLE *)h; - int rtnval = -1; - - // (1) Is this trip necessary - - if( mh != NULL && mh->valid == MAC_HANDLE_VALID ) - { - - // (2) Fill out the packet - - pkt.type = type; - pkt.to = to; - pkt.from = mh->my_address; - pkt.len = 0; - - rtnval = put_mac( &pkt, h ); - } - - return( rtnval ); -} - - -//************************************************************************* -/* -* int setup_address( void *h ) -* -* INPUT: h - Valid MAC handle -* -* OUTPUT: 1 New address setup and running -* 0 If no address can be found (1-0xFE) -* -* 25-Sep-2009 Change here to time out after 30 seconds and return OK -* this implies we are on an MT network -*/ -//************************************************************************ - -static int setup_address( void *h ) -{ - int rtnval; - PACKET pkt; - MAC_HANDLE *mh = (MAC_HANDLE *)h; - int i; - int val; - int retry_cntr = 10; - - // (1) Loop here trying addresss till we find one that isn't used - - mh->my_address = 0; - while( mh->my_address == 0 ) - { - mh->my_address = 0xf & rand(); - if( mh->my_address != 0 ) - break; - } - - // (1a) Loop setting address, - // NOTE: This code will not be stuck here - // Either XMIT will fail or we won't get any - // responses on an MT network - - while( 1) - { - val = rand(); - mh->my_address = mh->my_address + (0x0f & val); - - // (2) Build and send an IAM packet - - pkt.type = PACKET_TYPE_IAM; - pkt.to = BCAST_ADDRESS; - pkt.from = mh->my_address; // Where this is used ensures that - // mh is valid - pkt.len = 0; - - flush_network( h ); // Flush out all packets before we do this - rtnval = put_mac(&pkt, h); // Send out an IAM - if( rtnval == 0 ) - { - // (2) Now wait 10 backoff unit intervals for a NAK - // message, if any then return fail - - //val = 1000 * mh->my_address; - val = BACKOFF_UNIT; - for( i=0; i<10; i++ ) - { - usleep( val ); - val = BACKOFF_UNIT; - if( pump_network( h ) == 1 ) - break; - } - - // (3) Did we get something ? - - rtnval = 1; // Set for success (i.e. no message means OK) - while( get_network( &pkt, h ) ) - { - if( pkt.type == PACKET_TYPE_NAK ) - { - rtnval = 0; // FAILURE - break; - } - else - rtnval = 1; // Address accepted - pump_network( h ); - } - } - else - { - // We have an XMIT failure so count up - // and when we hit 10 mark as failure - - retry_cntr -= 1; - if( retry_cntr <= 0 ) - break; - } - - // (4) If we are OK here then exit out of loop with - // our address setup - - if( rtnval == 1 ) - break; - } - - return( rtnval ); -} - Index: Network/network.h ================================================================== --- Network/network.h +++ Network/network.h @@ -8,30 +8,64 @@ * * Description: This layer will set up addressing and * send receive packets * * Revision History: 28-Jul-2009 Initial version +* 12-May-2010 [d26a3ab0e9] Convert to new network style +* 20-Jan-2011 Add version command +* 10-May-2011 [241aaaeb3d ] Update simulator +* to match hardware +* 14-Nov-2011 [683a021143] Add pgm event queue */ //************************************************************************ #ifndef NETWORK_H #define NETWORK_H 1 #include "mac.h" -#define BCAST_ADDRESS 0xff // Broadcast address, all will receive #define MAX_TX_TRY 3 // Try three times #define BACKOFF_UNIT 15000 // ~ usec backoff time unit -void *init_network(char *port); // Open and close of MAC layer +// Packet commands + +// Operational commands +#define ARM_CMD 'A' +#define FIRE_CMD 'F' +#define DLY_CMD 'D' +#define PGM_CMD 'P' +#define STATUS_CMD 'S' +#define SYNC_CMD 'Z' + +// Information commands +#define VER_CMD 'V' +#define CHI_CMD 'C' +#define SET_AD_CMD 'W' +#define SET_FT_CMD 'T' +#define SET_TM_CMD 'M' +#define SET_BKOFF_CMD 'B' +#define RESET_CMD 'X' + +// Readout commands + +#define GET_DATA 'R' + +// Response command +#define RESP_CMD 'R' + +#define RESP_WAIT 5 // Wait 5 ms/address to receive/send resp cmd + +void *init_network(int address,char *port); // Open and close of MAC layer void close_network( void *h ); +int setup_address( int address,void *h ); void flush_network( void *); // Remove all data from network int pump_network( void *h ); // Call to update state -int put_network( PACKET *pkt,void *h ); +int put_network( int bcast,PACKET *pkt,void *h ); int get_network( PACKET *pkt,void *h ); +int get_chunk( PACKET *pkt ); -int send_network_nak( int to,void *h); -int send_network_ack( int to,void *h); +//int send_network_nak( int to,void *h); +//int send_network_ack( int to,void *h); #endif Index: Network/phy.c ================================================================== --- Network/phy.c +++ Network/phy.c @@ -10,19 +10,24 @@ * firing box CSMA RS-485 network used between * firing boxes * * Revision History: 28-Jul-2009 Initial version supporting both * real and sim phy [fa981152d5] +* 23-Jan-2011 [c6b3a88a66] Add PHY logging +* 9-Feb-2013 Add control for PHY logging */ //************************************************************************ #include #include #include #include +#include #include "sim_phy.h" #include "real_phy.h" +#include "firenetlog.h" +#include "debug.h" #if 0 #pragma mark - #pragma mark -- Data -- #endif @@ -90,10 +95,12 @@ void *init_phy( char *port ) { void *h = NULL; + log_data("PHY OPEN [%s]\n",port); + switch( phy_flag ) { case REAL_PHY: h = real_init_phy( port ); break; @@ -115,10 +122,12 @@ void close_phy( void *h ) { if( h != NULL ) { + log_data("PHY CLOSE\n"); + switch( phy_flag ) { case REAL_PHY: real_close_phy( h ); break; @@ -141,10 +150,17 @@ //************************************************************************ int put_phy( unsigned char data,void *h ) { int rtnval = 0; + +#ifdef MON_PHY + if( isprint(data) ) + log_data("PHY OUT [%c]\n",data); + else + log_data("PHY OUT [0x%02X]\n",0xff & data); +#endif switch( phy_flag ) { case REAL_PHY: rtnval = real_put_phy( data,h ); break; @@ -203,10 +219,20 @@ break; case SIM_PHY: rtnval = sim_get_phy( h ); break; } + + if( rtnval != EOF ) + { +#ifdef MON_PHY + if( isprint(rtnval) ) + log_data("PHY IN [%c]\n",rtnval); + else + log_data("PHY IN [0x%02X]\n",rtnval); +#endif + } return( rtnval ); } //************************************************************************* @@ -218,12 +244,14 @@ * * OUTPUT: NONE */ //************************************************************************ -int phy_tx( int flag,void *h ) -{ +void phy_tx( int flag,void *h ) +{ + log_data("--TX FLG [%d]\n",flag); + switch( phy_flag ) { case REAL_PHY: real_phy_tx( flag,h ); break; Index: Node/debug.h ================================================================== --- Node/debug.h +++ Node/debug.h @@ -3,16 +3,22 @@ * DEBUG - DEBUG FLAGS for system * * This file holds debug flags for the system * * Revision History: 13-Sep-2009 Initial version +* 23-Aug-2011 [0020ac449a] Add RS-232 debug flag */ //***************************************************************************** #ifndef DEBUG_H #define DEBUG_H 1 #define MON_PARENT_DATA 1 // Uncomment to display Parent network data #define MON_CHILD_DATA 1 // Uncomment to display Child network data +// #define MON_PHP 1 //#define CMD_LINE_OPERATION 1 // Uncomment to run CMD Line version of system + //#define DEBUG_RESPONSE_TIME 30000 // Wait 30 seconds for response + //#define RS232_COM 1 // If present RS-232 connection to single node + // used instead of FIRENET RS-485 + // DTR set OFF for all com #endif Index: Node/node/child.c ================================================================== --- Node/node/child.c +++ Node/node/child.c @@ -10,10 +10,15 @@ * of the network. It is the thread code with network * startup and thread loop * * Revision History: 30-Jul-2009 Initial version * 30-Aug-2009 Convert to child only code +* 15-May-2010 [d26a3ab0e9] Added fix to clear packet before receive +* 22-May-2010 Add logging to system [d98ef0303d] +* 22-May-2010 Fix output of logged packet to display correctly in node_th +* 9-Jan-2011 Add default firing time to node data +* 14-May-2011 Add test mode & def backoff to node data */ //************************************************************************ #include #include @@ -23,10 +28,11 @@ #include #include "network.h" #include "child.h" #include "child_cmd.h" #include "debug.h" +#include "firenetlog.h" #if 0 #pragma mark - #pragma mark -- Data -- #endif @@ -36,11 +42,13 @@ #if 0 #pragma mark - #pragma mark -- External API -- #endif -#define THREAD_PAUSE 1000000 // SWAG 1 S +//#define THREAD_PAUSE 1000000 // SWAG 1 S +#define THREAD_PAUSE 10000 // SWAG 10 mS + //************************************************************************* /* * NODE_DATA *child_start( char *port,int node_count ) - Start running nodes * @@ -72,12 +80,25 @@ for( i=0; idata[i].port = port; node->data[i].ckts_connected = 0x3f; // Have all 6 working - sprintf(node->data[i].name,"NODE%02d",i+1); + node->data[i].number = i+1; + + // Node setup + node->data[i].firing_time = DEF_FIRING_TIME; + node->data[i].test_mode = 1; + node->data[i].backoff = DEF_BACKOFF; + + // Start the node val = pthread_create(&(node->data[i].th),NULL,&node_th,&(node->data[i])); + if( val != 0 ) + { + free( node ); + return NULL; + } + } } else { // FAILURE, free struct and return @@ -124,31 +145,28 @@ * * INPUT: ptr - Node environment * * OUTPUT: NULL Return NULL always * stay in this loop till stop != 0 +* 15-May-2010 [d26a3ab0e9] Added fix to clear packet before receive +* changed code in network.c to clear packet +* 22-May-2010 Fix output of logged packet to display correctly */ //************************************************************************ static void *node_th( void *ptr ) { void *h; PACKET packet; int val; CHILD_DATA *data = (CHILD_DATA *)ptr; - MAC_HANDLE *mh; // (1) Open the a handle to the network - h = init_network( data->port ); + h = init_network( data->number,data->port ); if( h != NULL ) { - mh = (MAC_HANDLE *)h; - //pthread_mutex_lock( &ptrmtx ); - //printf("\nAddress Assigned[%s]: %0X\n",data->name, - // mh->my_address); - //pthread_mutex_unlock( &ptrmtx ); // (2) Loop to handle child node actions while( data->stop == 0 ) { @@ -155,36 +173,33 @@ // (2a) Manage internal operations child_manage_node( data, h ); // (2b) Handle network traffic + // Clear packet before receive pump_network( h ); val = get_network( &packet,h ); if( val > 0 ) { #ifdef MON_CHILD_DATA //pthread_mutex_lock( &ptrmtx ); - printf("\nREC [%s] TYPE: %d FROM: %02X TO: %02X LEN: %d Data:", - data->name, - packet.type, + log_data("\nREC [%d] FROM: %02d TO: %02d LEN: %d Data: [%s]\n", + data->number, packet.from, packet.to, - packet.len); - int i; - for( i=0; iname); } } - printf("\n[%s] Shutdown",data->name); + printf("\n[%d] Shutdown",data->number); return( NULL ); } Index: Node/node/child.h ================================================================== --- Node/node/child.h +++ Node/node/child.h @@ -11,10 +11,13 @@ * * Revision History: 30-Jul-2009 Initial version * 8-Aug-2009 Add parent/node specific data [48a9689588] * 12-Aug-2009 Add a timer to parent and all nodes [0654091ae5] * 30-Aug-2009 Convert to child node code +* 24-May-2010 Add delay_rec to see when delay received +* 9-Jan-2011 Add firing time value +* 14-Nov-2011 [683a021143] Add pgm event queue */ //************************************************************************ #include #include @@ -25,13 +28,22 @@ #include "mac.h" #ifndef CHILD_H #define CHILD_H 1 +#define DEF_FIRING_TIME 1000 // 1000ms +#define DEF_BACKOFF 30 // 30 ms +#define MAX_FIRE_CHANNELS 6 + +typedef struct { + int ch; + long ft; + } EVENT_LIST; + typedef struct { char *port; // Port used - char name[NODE_NAME_SZ]; // Node name + int number; // Node # (address) int stop; // TRUE to stop thread pthread_t th; // Thread handle int armed; int ckts_connected; // Circuits connected with devices int ckts_fired; // Circuits that have been fired @@ -38,11 +50,23 @@ // Delayed firing support CLOCK_STRUCT c; // Timer struct [0654091ae5] int delay_running; // TRUE when delay running unsigned long delay_time; // Current delay time + unsigned long delay_rec; // When delay received (debug data) int fire_channel; // Channel to fire on delay + int firing_time; // MS firing time + int actual_time; // Actual firing time + int test_mode; // 1 => In test mode + int backoff; // Backoff value + + // Event programming + int in_event; // TRUE when events running + int event_count; // # Events + int event_next; // Next event to fire + int control; // Source of event data + EVENT_LIST events[MAX_FIRE_CHANNELS]; } CHILD_DATA; typedef struct { int node_count; // # Nodes CHILD_DATA *data; // Array of child data nodes Index: Node/node/child_cmd.c ================================================================== --- Node/node/child_cmd.c +++ Node/node/child_cmd.c @@ -10,35 +10,69 @@ * the network & outputs stuff * * Revision History: 6-Apr-2009 Initial version * 15-Aug-2009 Add clock handling * 14-Sep-2009 Convert to 32 bit delays +* 12-May-2010 [d26a3ab0e9] Change to new network style +* 15-May-2010 [4faba11f43] Change W command to set address +* 22-May-2010 Add logging to system [d98ef0303d] +* 22-May-2010 Correct typo in Delay command +* 24-May-2010 Change arm_handler() to allow BCAST address +* 16-Jan-2011 [e4208b8f56] Add ACK to all commands but STATUS +* 16-Jan-2011 Reformat STATUS response to match others +* 24-Jan-2011 [4fd91ac4c2] Add Channel information command [4fd91ac4c2] +* 28-Feb-2011 Add code in fire_circuit() to simulate firing delay +* 10-May-2011 [241aaaeb3d ] Update simulator to match hardware +* 16-Jul-2011 [9e81c1a523] Add adaptive firing action & read out of +* adaptive results +* 14-Nov-2011 [683a021143] Add pgm event queue +* 9-Feb-2013 Fix commands that return packets to NOT +* use send ACK */ //************************************************************************ #include #include #include "network.h" #include "child.h" #include "child_cmd.h" #include "debug.h" +#include "firenetlog.h" #if 0 #pragma mark - #pragma mark -- Data -- #endif +// Firing commands static int arm_handler( CHILD_DATA *data,PACKET *packet,void *h ); -static int who_handler( CHILD_DATA *data,PACKET *packet,void *h ); -static int status_handler( CHILD_DATA *data,PACKET *packet,void *h ); static int fire_handler( CHILD_DATA *data,PACKET *packet,void *h ); static int sync_handler( CHILD_DATA *data,PACKET *packet,void *h ); static int delay_handler( CHILD_DATA *data,PACKET *packet,void *h ); +static int pgm_handler( CHILD_DATA *data,PACKET *packet,void *h ); -static void fire_circuit( int channel, CHILD_DATA *data ); +// Information commands +static int status_handler( CHILD_DATA *data,PACKET *packet,void *h ); +static int version_handler( CHILD_DATA *data,PACKET *packet,void *h ); +static int channel_handler( CHILD_DATA *data,PACKET *packet,void *h ); -static int put_network_child( PACKET *pkt,void *h ); +// Setup commands +static int who_handler( CHILD_DATA *data,PACKET *packet,void *h ); +static int time_handler( CHILD_DATA *data,PACKET *packet,void *h ); +static int test_mode_handler( CHILD_DATA *data,PACKET *packet,void *h ); +static int backoff_handler( CHILD_DATA *data,PACKET *packet,void *h ); +static int reset_handler( CHILD_DATA *data,PACKET *packet,void *h ); + +// Readout commands +static int getdata_handler( CHILD_DATA *data,PACKET *packet,void *h ); + +// Support routines +static void send_ack( CHILD_DATA *data,PACKET *rpkt,void *h); +static void fire_circuit( int channel, CHILD_DATA *data,int df ); +static int put_network_child( int bcast,PACKET *pkt,void *h ); +static int store_in_queue( int ch, long ft,CHILD_DATA *data ); +static void next_event(CHILD_DATA *data); #if 0 #pragma mark - #pragma mark -- External API -- #endif @@ -55,21 +89,57 @@ //************************************************************************ int child_manage_node( CHILD_DATA *data,void *h ) { int rtnval = 0; + PACKET pk; + int ch,i; // (1) Is there a delay runnig, if so see if it's time yet if( data->delay_running ) { if( CLOCK_Done( &(data->c),data->delay_time) ) { // (2) We have a firing time, so do it.... - fire_circuit( data->fire_channel,data ); + fire_circuit( data->fire_channel,data,1 ); data->delay_running = 0; + + // (3) If we are running a PGM start the next delay action + + if( data->in_event ) + { + // Send response message with this firing data + // then advance to next event + + pk.to = data->control; + pk.from = 0; + + pk.len = 3; + pk.data[0] = RESP_CMD; + pk.data[1] = PGM_CMD; + ch = data->fire_channel; + + // Convert from channel bit psn to # + for( i=0; i<6; i++ ) + { + if( ch & 0x1 ) + break; + ch = ch >> 1; + } + //--------------------------------- + + pk.data[2] = i + 0x30; + pk.data[3] = '\0'; + rtnval = put_network_child(0, &pk,h ); // BCAST SEND + + // Move to next event + + next_event( data ); + } + } } return( rtnval ); } @@ -87,43 +157,93 @@ //************************************************************************ int child_packet_handler( CHILD_DATA *data,PACKET *packet,void *h ) { int rtnval = 0; + int chunk_loop = 1; // (1) All packets at this point are data packets (type DATA) // If we have any switch on the first character in the data //printf("\nCHILD [%s] Packet [%c]\n",data->name,packet->data[0]); if( packet->len > 0 ) { - switch( packet->data[0] ) - { - case 'A': // Handle ARMED command - rtnval = arm_handler( data,packet,h ); - break; - - case 'W': // Handle WHO packet - rtnval = who_handler( data,packet,h ); - break; - - case 'S': // Handle STATUS packet - rtnval = status_handler(data,packet,h); - break; - - case 'F': rtnval = fire_handler( data,packet,h ); - break; - - case 'D': rtnval = delay_handler(data,packet,h ); - break; - - case 'Z': rtnval = sync_handler(data,packet,h ); - break; - - default: // Ignore and drop packet - break; + while( chunk_loop ) + { + switch( packet->data[packet->chunk_ptr] ) + { + // Firing commands + case ARM_CMD: // Handle ARMED command + rtnval = arm_handler( data,packet,h ); + send_ack(data,packet,h); + break; + + case FIRE_CMD: // Fire command + rtnval = fire_handler( data,packet,h ); + send_ack(data,packet,h); + break; + + case DLY_CMD: // Delay command + rtnval = delay_handler(data,packet,h ); + send_ack(data,packet,h); + break; + + case PGM_CMD: rtnval = pgm_handler(data, packet, h); + break; + + case SYNC_CMD: // Sync command + rtnval = sync_handler(data,packet,h ); + break; + + // Information commands + case STATUS_CMD: // Handle STATUS packet + rtnval = status_handler(data,packet,h); + break; + + + case VER_CMD: // Version command + rtnval = version_handler(data,packet,h); + break; + + case CHI_CMD: // Channel information command + rtnval = channel_handler(data,packet,h); + break; + + // Setup commands + case SET_AD_CMD: // Handle WHO packet + rtnval = who_handler( data,packet,h ); + break; + + case SET_FT_CMD: // Handle Firing TIME packet + rtnval = time_handler(data,packet,h); + break; + + case SET_TM_CMD: // Handle Test Mode command + rtnval = test_mode_handler(data,packet,h); + break; + + case SET_BKOFF_CMD: // Set backoff value + rtnval = backoff_handler(data,packet,h); + break; + + case RESET_CMD: // Handle RESET cmd + rtnval = reset_handler(data,packet,h); + // No response.... + break; + + case GET_DATA: // Heandle read out command + rtnval = getdata_handler(data,packet,h); + break; + + default: // Ignore and drop packet + break; + } + + // Get next chunk, and handle + + chunk_loop = get_chunk( packet ); } } return( rtnval ); } @@ -131,129 +251,44 @@ #if 0 #pragma mark - #pragma mark -- Command Handler API -- #endif +#if 0 + #pragma mark - + #pragma mark -- OPERATION COMMANDS -- +#endif + //************************************************************************* /* * int arm_handler( CHILD_DATA *data,PACKET *packet,void *h ) * * INPUT: data - Current node information * packet - Current packet * h - Network handle * * OUTPUT: 0 Unless error and then <> 0 returned -* Handle arm packet, but only if to this address, ignore if -* broadcase */ //************************************************************************ static int arm_handler( CHILD_DATA *data,PACKET *packet,void *h ) { int rtnval = 0; - - // (1) Check to make sure we are not a broadcast packet - - if( packet->to != BCAST_ADDRESS ) - { - // Now look at second byte to see if it's arm or disarm - - switch( packet->data[1] ) - { - case 'A': data->armed = 1; - break; - - case 'D': data->armed = 0; - break; - - default: break; - } - } - - return( rtnval ); -} - -//************************************************************************* -/* -* int who_handler( CHILD_DATA *data,PACKET *packet,void *h ) -* -* INPUT: data - Current node information -* packet - Current packet -* h - Network handle -* -* OUTPUT: 0 Unless error and then <> 0 returned -* Return WHO packet to FROM field -* WHO data is -*/ -//************************************************************************ - -static int who_handler( CHILD_DATA *data,PACKET *packet,void *h ) -{ - int rtnval; - - // (1) Build our return packet using the input one - // TO - Previous from field - // FROM - Out PORT - // DATA = NODE NAME - - packet->to = packet->from; - packet->from = 0; // My address - sprintf((char *)packet->data,"WR%s",data->name); - packet->len = strlen( (char *)packet->data ) + 1; - - // (2) Send this packet out - - rtnval = put_network_child( packet,h ); - return( rtnval ); -} - -//************************************************************************* -/* -* int status_handler( CHILD_DATA *data,PACKET *packet,void *h ) -* -* INPUT: data - Current node information -* packet - Current packet -* h - Network handle -* -* OUTPUT: 0 Unless error and then <> 0 returned -* Return WTATUS packet to FROM field -* WHO data is ARMED/DISARMED and connected & fired values -* AR[D/A][Connected][Fired] -*/ -//************************************************************************ - -static int status_handler( CHILD_DATA *data,PACKET *packet,void *h ) -{ - int rtnval; - - // (1) Build our return packet using the input one - // TO - Previous from field - // FROM - Out PORT - // DATA = NODE NAME - - packet->to = packet->from; - packet->from = 0; // My address - - // Build packet data, 5 bytes - // SR - Status return - // Disarmed/armed (D/A) - // Connected ckts byte - // Fired ckts byte - - packet->len = 5; - packet->data[0] = 'S'; - packet->data[1] = 'R'; - if( data->armed ) - packet->data[2] = 'A'; - else - packet->data[2] = 'D'; - packet->data[3] = (unsigned char) (0xff & data->ckts_connected); - packet->data[4] = (unsigned char) (0xff & data->ckts_fired); - - // (2) Send this packet out - - rtnval = put_network_child( packet,h ); + + // Look at second byte to see if it's arm or disarm + + switch( packet->data[packet->chunk_ptr+1] ) + { + case 'A': data->armed = 1; + break; + + case 'D': data->armed = 0; + break; + + default: break; + } + return( rtnval ); } //************************************************************************* /* @@ -275,17 +310,323 @@ int channel = 1; int shft; // (1) Pull byte[1] of data to get he bit # - shft = packet->data[1]; + shft = 0xf & packet->data[packet->chunk_ptr+1]; // Get bottom nibble = channel # channel = channel << shft; // (2) Fire the channel - fire_circuit( channel, data ); + fire_circuit( channel, data,0 ); + + return( rtnval ); +} + +//************************************************************************* +/* +* void fire_circuit( int channel, CHILD_DATA *data ) +* +* INPUT: channel - Channel bit to be fired +* data - Current node information +* df - Delay flag 1 if fired by delay 0 if not +* +* OUTPUT: NONE +* Fire selected ckt if possible +* +* 28-Feb-2011 Add code to simulate firing delay +*/ +//************************************************************************ + +static void fire_circuit( int channel, CHILD_DATA *data,int df ) +{ + // (1) Are we armed ? + + if( data->armed ) + { + if( data->ckts_connected & channel ) + { + // (2) Has this one be fired + + if( (data->ckts_fired & channel) == 0 ) + { + // (3) Ok we are going to fire it + + if( df ) + { + log_data("\n--Node [%d] Channel [0x%01X] DELAY REC @ [%ld] FIRING @ [%ld]\n", + data->number, + channel, + data->delay_rec, + CLOCK_Elapsed( &(data->c)) ); + } + else + { + log_data("\n--Node [%d] Channel [0x%01X] FIRING\n",data->number,channel); + usleep( 100000 ); // Sleep for a firing time + } + + data->ckts_connected &= ~channel; + data->ckts_fired |= channel; + data->actual_time = data->c.tv_usec % 1000; // Fake a time + } + else + { + // This channel already fired + log_data("\n** Node [%d] Channel [0x%01X] FIRED\n",data->number,channel); + } + } + else + { + // Nothing connected + log_data("\n**Node [%d] Channel [0x%01X] NO CIRCUIT\n",data->number,channel); + } + } + else + { + // Not armed + log_data("\n**Node [%d] Channel [0x%01X] NOT ARMED\n",data->number,channel); + } +} + +//************************************************************************* +/* +* int delay_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* +* INPUT: data - Current node information +* packet - Current packet +* h - Network handle +* +* OUTPUT: 0 Unless error and then <> 0 returned +* Data[0] = D +* Data[1] = Channel +* Data[2] -> end of packet = delay value as a number +* Just sync the internal clock +* +* 14-Sep-2009 Convert to 32 bit delays +* 22-May-2010 Correct typo in getting Fire channel +*/ +//************************************************************************ + +static int delay_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval = 0; + short shft; + //unsigned long *val; + + // (1) If already in delay then exit from here + + if( data->delay_running == 0 ) + { + // (2) Not running so pull out the values and + // start a new delay + + shft = 0xf & packet->data[packet->chunk_ptr + 1]; // Channel # bottom nibble of first byte + // Make sure it's the FIRST byte + data->fire_channel = 1; + data->fire_channel = data->fire_channel << shft; + + // (3) Convert the delay value to a number + + data->delay_time = strtoul((const char *)&(packet->data[packet->chunk_ptr+2]),NULL,10); + data->delay_rec = CLOCK_Elapsed( &(data->c) ); + data->delay_running = 1; + } + + return( rtnval ); +} + +//************************************************************************* +/* +* int pgm_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* +* INPUT: data - Current node information +* packet - Current packet +* h - Network handle +* +* OUTPUT: 0 Unless error and then <> 0 returned +* Data[0] = P +* Data[1] = Channel +* Data[2] -> end of packet = delay value as a number +* Just sync the internal clock +*/ +//************************************************************************ + +static int pgm_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval = -1; + int ch; + long ft; + PACKET pk; + int bcast; + + // (1) Get channel values + + bcast = packet->to; + ch = 0xf & packet->data[packet->chunk_ptr + 1]; // Channel # bottom nibble of first byte + // Make sure it's the + // FIRST byte + ch = 1 << ch; + + // (2) Convert the delay value to a number + + ft = strtoul((const char *)&(packet->data[packet->chunk_ptr+2]),NULL,10); + + // (3) Store in queue and return result + + if( store_in_queue( ch,ft,data ) == 0 ) + { + rtnval = 0; + data->control = packet->from; // Save controller address + pk.to = packet->from; + pk.from = 0; + + pk.len = 2; + pk.data[0] = RESP_CMD; + pk.data[1] = PGM_CMD; + pk.data[2] = '\0'; + rtnval = put_network_child( bcast,&pk,h ); + } + + return( rtnval ); +} + +/*********************************************************************** +* +* int store_in_queue( int ch, long ft,CHILD_DATA *data ) - Store data in firing queue +* +* INPUT: ch - Firing channel +* long - Firing time (ms) +* data - Child data structure +* +* OUTPUT: 0 If inserted, <> 0 if not +* +**********************************************************************/ + +static int store_in_queue( int ch, long ft,CHILD_DATA *data ) +{ + int rtnval = -1; // Set for failure + int i; + int qpsn; + + // (1) Is there room ? + + if( data->event_count < MAX_FIRE_CHANNELS ) + { + // (2) Event count 0 special case just inserted it + + if( data->event_count == 0 ) + { + data->events[data->event_count].ch = ch; + data->events[data->event_count].ft = ft; + data->event_count++; + rtnval = 0; // SUCCESS + } + else + { + // (3) Determine where it fits in queue + + for( i=0; ievent_count; i++ ) + { + if( ft <= data->events[i].ft ) + break; + } + + qpsn = i; + + // (4) Two cases + // (a) Beyond end of queue, just stick it in + // (b) Inside queue, move up queue and stick it in + + if( qpsn >= data->event_count ) + { + // Case (a) stick in new MT slot at end + + data->events[data->event_count].ch = ch; + data->events[data->event_count].ft = ft; + data->event_count++; + rtnval = 0; // SUCCESS + } + else + { + // Case (b) Move all the items above qpsn up one into MT slot + // and insert new at qpsn + + for( i=data->event_count-1; i>=qpsn; i--) + { + data->events[i+1].ch = data->events[i].ch; + data->events[i+1].ft = data->events[i].ft; + } + data->events[qpsn].ch = ch; + data->events[qpsn].ft = ft; + + data->event_count++; + rtnval = 0; + + } + } + } + + return rtnval; + +} + + +//************************************************************************* +/* +* int status_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* +* INPUT: data - Current node information +* packet - Current packet +* h - Network handle +* +* OUTPUT: 0 Unless error and then <> 0 returned +* Return STATUS packet to FROM field +* WHO data is ARMED/DISARMED and connected & fired values +* AR[D/A][Connected][Fired] +* 12-May-2011 Fix output status value (or with 0x40) +*/ +//************************************************************************ + +static int status_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval; + PACKET pk; + int bcast; + + // (1) Build our return packet using the input one + // TO - Previous from field + // FROM - Out PORT + // DATA = NODE NAME + + bcast = packet->to; + pk.to = packet->from; + pk.from = 0; // My address + + // Build packet data, 5 bytes + // RS - Status return + // Disarmed/armed (D/A) + // Connected ckts byte + // Fired ckts byte + + pk.len = 5; + pk.data[0] = RESP_CMD; + pk.data[1] = STATUS_CMD; + if( data->armed ) + pk.data[2] = 'A'; + else + pk.data[2] = 'D'; + + // Convert last two values to ASCII characters + // 0x40 -> converts 0-3F -> 0x40 - 0x7F + pk.data[3] = 0X40 | (unsigned char) (0x3f & data->ckts_fired); + pk.data[4] = 0x40 | (unsigned char) (0x3f & data->ckts_connected); + pk.data[5] = '\0'; + + // (2) Send this packet out + rtnval = put_network_child(bcast, &pk,h ); return( rtnval ); } //************************************************************************* /* @@ -301,121 +642,555 @@ */ //************************************************************************ static int sync_handler( CHILD_DATA *data,PACKET *packet,void *h ) { + int rtnval = 0; + PACKET pk; + int bcast; + + // (1) Just sync the internal clock to system & set up return packet + + CLOCK_Start( &(data->c) ); + bcast = packet->to; + pk.to = packet->from; + pk.from = 0; + + // (2) Check if there is a P in the data + + if( packet->len > 1 && packet->data[1] == PGM_CMD ) + { + // Start the event system running & set up different return + + data->in_event = 1; + next_event(data); // Start next event + sprintf(pk.data,"RZP"); + } + else + { + // STD run + + sprintf(pk.data,"RZ"); + } + pk.len = strlen(pk.data); + rtnval = put_network_child(bcast, &pk,h ); + + return( rtnval ); +} + +/*********************************************************************** +* +* void next_event(CHILD_DATA *data) - Set up for next event +* +* INPUT: NONE - Use state +* +* OUTPUT: Delay firing started and set for next event or terminate +* event handling +* +**********************************************************************/ + +static void next_event(CHILD_DATA *data) +{ + // Set up for next event + if( data->event_next < data->event_count ) + { + data->delay_running = 1; + data->delay_time = data->events[data->event_next].ft; + data->fire_channel = data->events[data->event_next].ch; + data->event_next++; + } + else + { + data->in_event = 0; + } +} + + +#if 0 + #pragma mark - + #pragma mark -- DISPLAY COMMANDS -- +#endif + +//************************************************************************* +/* +* int version_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* +* INPUT: data - Current node information +* packet - Current packet +* h - Network handle +* +* OUTPUT: 0 Unless error and then <> 0 returned +* Return VERSION packet RV of build +*/ +//************************************************************************ + +static int version_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval; + PACKET pk; + int i; + int bcast; + + // (1) Build our return packet using the input one + // TO - Previous from field + // FROM - Out PORT + // DATA = NODE NAME + + bcast = packet->to; + pk.to = packet->from; + pk.from = 0; // My address + + // Build packet data, 5 bytes + // RV - Version return (RVX in test mode) + // __DATE__ __TIME__ string + // Connected ckts byte + // Fired ckts byte + + pk.data[0] = '\0'; + sprintf(pk.data,"%c%c",RESP_CMD,VER_CMD); + if( data->test_mode == 1 ) + strcat(pk.data,"X"); // Indicate test mode + + strcat(pk.data,__DATE__); + strcat(pk.data," "); + strcat(pk.data,__TIME__); + pk.len = strlen(pk.data); + + // NOTE: Remove ':' in TIME and put in - as ; marks + // END of DATA + + for( i=0; i 0 returned +* Return RC +*/ +//************************************************************************ + +static int channel_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval = 0; + PACKET pk; + int channel; + int ad; + int val; + char *ptr; + int bcast; + + // (1) Get the channel # from the input message + // & build mask + + bcast = packet->to; + channel = packet->data[1] - '0'; + if( channel >= 0 && channel < MAX_FIRE_CHANNELS ) + { + channel = 1 << channel; + + // (2) Build our return packet using the input one + // TO - Previous from field + // FROM - Out PORT + // DATA = NODE NAME + + pk.to = packet->from; + pk.from = 0; // My address + + // (3) Build packet data, RC up to 7 Bytes + + pk.data[0] = 'R'; + pk.data[1] = 'C'; + + // Is this fired ? + + if( channel & data->ckts_fired ) + pk.data[2] = '1'; + else + pk.data[2] = '0'; + + // (3) Fake an A/D reading + + val = rand(); + if( channel & data->ckts_fired ) + ad = (0x3FF & val); + else + ad = (0x7F & val); + + + + ptr = (char *)&(pk.data[3]); + sprintf(ptr,"%04d",ad); + } + else + { + // BAD channel + pk.data[0] = 'R'; + pk.data[1] = 'C'; + pk.data[2] = '0'; + pk.data[3] = '0'; + pk.data[4] = '\0'; // Send back a failure packet + } + + // (4) Get length and send it out + pk.len = strlen(pk.data); + rtnval = put_network_child(bcast, &pk,h ); + return( rtnval ); +} + +//************************************************************************* +/* +* int who_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* +* INPUT: data - Current node information +* packet - Current packet +* h - Network handle +* +* OUTPUT: 0 Unless error and then <> 0 returned +* +* 15-May-2010 [4faba11f43] Change to set node address +*/ +//************************************************************************ + +static int who_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval = -1; // Set for failure + char *ptr; + int addr; + PACKET pk; + + // (1) Only do this command if it is addressed to US + + if( packet->to == my_addr_mac(h) ) + { + // (2) Extract address value from chunk + + ptr = &packet->data[packet->chunk_ptr+1]; + addr = strtol(ptr,NULL,10); // Interpert as BASE 10 + if( addr >= MIN_ADDRESS && + addr < MAX_ADDRESS ) + { + // Ok, set the address + + log_data("NODE [%d] Address changed to [%d]\n",data->number,addr ); + setup_address( addr,h ); + } + + // Return current address + + pk.to = packet->from; + pk.from = 0; + sprintf(pk.data,"RW%02d",packet->from); + pk.len = strlen(pk.data); + rtnval = put_network_child(1, &pk,h ); + } + + return( rtnval ); +} + +//************************************************************************* +/* +* int time_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* +* INPUT: data - Current node information +* packet - Current packet +* h - Network handle +* +* OUTPUT: 0 Unless error and then <> 0 returned +* +* 9-Jan-11 Add command to set firing time +*/ +//************************************************************************ + +static int time_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval = -1; // Set for failure + char *ptr; + int ft; + PACKET pk; + int bcast; + + // (1) Extract firing time value from chunk + + bcast = packet->to; + ptr = &packet->data[packet->chunk_ptr+1]; + if( strlen(ptr) > 0 ) + { + // Set the firing time + + ft = strtol(ptr,NULL,10); // Interpert as BASE 10 + + log_data("NODE [%d] Firing time changed to [%d]\n",data->number,ft ); + data->firing_time = ft; + } + + // Return current value + + pk.to = packet->from; + pk.from = 0; + sprintf(pk.data,"RT%04d",data->firing_time); + pk.len = strlen(pk.data); + rtnval = put_network_child(bcast, &pk,h ); + + return( rtnval ); +} + +//************************************************************************* +/* +* int backoff_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* +* INPUT: data - Current node information +* packet - Current packet +* h - Network handle +* +* OUTPUT: 0 Unless error and then <> 0 returned +*/ +//************************************************************************ + +static int backoff_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval = -1; // Set for failure + char *ptr; + int ft; + PACKET pk; + int bcast; + + // (2) Extract backoff time value from chunk + + bcast = packet->to; + ptr = &packet->data[packet->chunk_ptr+1]; + + if( strlen(ptr) > 0 ) + { + // Set the value + + data->backoff = strtol(ptr,NULL,10); // Interpert as BASE 10 + + log_data("NODE [%d] Backoff time changed to [%d]\n",data->number,data->backoff ); + data->firing_time = ft; + } + + // Return current value + + pk.to = packet->from; + pk.from = 0; + sprintf(pk.data,"RB%04d",data->backoff); + pk.len = strlen(pk.data); + rtnval = put_network_child(bcast, &pk,h ); + + return( rtnval ); +} + +//************************************************************************* +/* +* int test_mode_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* +* INPUT: data - Current node information +* packet - Current packet +* h - Network handle +* +* OUTPUT: 0 Unless error and then <> 0 returned +*/ +//************************************************************************ + +static int test_mode_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval = -1; // Set for failure + char *ptr; + int ft; + PACKET pk; + int bcast; + + // (2) Extract Mode value from chunk + + bcast = packet->to; + ptr = &packet->data[packet->chunk_ptr+1]; + + if( strlen(ptr) > 0 ) + { + // Set the value + + data->test_mode = strtol(ptr,NULL,10); // Interpert as BASE 10 + data->test_mode &= 0x1; // Convert to 0,1 + + log_data("NODE [%d] Test mode time changed to [%d]\n",data->number,data->test_mode ); + data->firing_time = ft; + } + + // Return current value + + pk.to = packet->from; + pk.from = 0; + sprintf(pk.data,"RM%01d",data->test_mode); + pk.len = strlen(pk.data); + rtnval = put_network_child(bcast, &pk,h ); + + return( rtnval ); +} + + +//************************************************************************* +/* +* int reset_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* +* INPUT: data - Current node information +* packet - Current packet +* h - Network handle +* +* OUTPUT: NONE - this just resets node +*/ +//************************************************************************ + +static int reset_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ int rtnval = 0; - // (1) Just sync the internal clock to system + log_data("NODE [%d] RESET\n",data->number); + + // INIT all the data in the node - CLOCK_Start( &(data->c) ); + data->armed = 0; + data->ckts_connected = 0x3F; + data->ckts_fired = 0; + data->delay_running = 0; + data->firing_time = DEF_FIRING_TIME; + data->test_mode = 1; + data->backoff = DEF_BACKOFF; + data->in_event = 0; + data->event_count = 0; + data->event_next = 0; + return( rtnval ); } +#if 0 + #pragma mark - + #pragma mark -- READOUT COMMANDS -- +#endif + //************************************************************************* /* -* int delay_handler( CHILD_DATA *data,PACKET *packet,void *h ) +* int getdata_handler( CHILD_DATA *data,PACKET *packet,void *h ) * * INPUT: data - Current node information * packet - Current packet * h - Network handle * * OUTPUT: 0 Unless error and then <> 0 returned -* Data[0] = D -* Data[1] = Channel -* Data[2] = MSB Delay -* Data[3] = MSB - 1 Delay -* Data[4] = MSB - 2 Delay -* Data[5] = LSB Delay -* Just sync the internal clock -* -* 14-Sep-2009 Convert to 32 bit delays -*/ -//************************************************************************ - -static int delay_handler( CHILD_DATA *data,PACKET *packet,void *h ) -{ - int rtnval = 0; - short shft; - unsigned long *val; - - // (1) If already in delay then exit from here - - if( data->delay_running == 0 ) - { - // (2) Not running so pull out the values and - // start a new delay - - shft = packet->data[1]; - data->fire_channel = 1; - data->fire_channel = data->fire_channel << shft; - - val = (unsigned long *)&(packet->data[2]); - data->delay_time = (unsigned long)ntohl(*val); - data->delay_running = 1; - } - - return( rtnval ); -} - -//************************************************************************* -/* -* void fire_circuit( int channel, CHILD_DATA *data ) -* -* INPUT: channel - Channel bit to be fired -* data - Current node information -* -* OUTPUT: NONE -* Fire selected ckt if possible -*/ -//************************************************************************ - -static void fire_circuit( int channel, CHILD_DATA *data ) -{ - // (1) Are we armed ? - - if( data->armed ) - { - if( data->ckts_connected & channel ) - { - // (2) Has this one be fired - - if( (data->ckts_fired & channel) == 0 ) - { - // (3) Ok we are going tio fire it - - //pthread_mutex_lock( data->prt ); - printf("\n--Node [%s] Channel [0x%01X] FIRING\n",data->name,channel); - //pthread_mutex_unlock( data->prt ); - - data->ckts_connected &= ~channel; - data->ckts_fired |= channel; - } - else - { - // This channel already fired - //pthread_mutex_lock( data->prt ); - printf("\n** Node [%s] Channel [0x%01X] FIRED\n",data->name,channel); - //pthread_mutex_unlock( data->prt ); - } - } - else - { - // Nothing connected - //pthread_mutex_lock( data->prt ); - printf("\n**Node [%s] Channel [0x%01X] NO CIRCUIT\n",data->name,channel); - //pthread_mutex_unlock( data->prt ); - } - } - else - { - // Not armed - //pthread_mutex_lock( data->prt ); - printf("\n**Node [%s] Channel [0x%01X] NOT ARMED\n",data->name,channel); - //pthread_mutex_unlock( data->prt ); - } +*/ +//************************************************************************ + +static int getdata_handler( CHILD_DATA *data,PACKET *packet,void *h ) +{ + int rtnval = -1; // Set for failure + char *ptr; + int psn; + PACKET pk; + int i; + int bcast; + + // Ignore input data (for now) + // ... + + // Set to return firing data from this run + + bcast = packet->to; + pk.to = packet->from; + pk.from = 0; + pk.data[0] = 'R'; + pk.data[1] = 'R'; + + // Fill in with the firing data + + psn = 2; + for( i=0; iactual_time); + } + pk.len = strlen(pk.data); + rtnval = put_network_child(bcast, &pk,h ); + + return rtnval; +} + + +#if 0 + #pragma mark - + #pragma mark -- Child Ack -- +#endif + +//************************************************************************* +/* +* void send_ack( CHILD_DATA *data, char cmd, void *h) - Send ACK +* +* INPUT: data - Child information +* rpkt - Received packet +* h - Valid MAC handle +* +* OUTPUT: NONE +* Send off ACK packet +*/ +//************************************************************************ + +static void send_ack( CHILD_DATA *data,PACKET *rpkt,void *h) +{ + PACKET pk; + int timewait; + + // (1) Build our return packet using the input one + // TO - Previous from field + // FROM - Out PORT + // DATA = NODE NAME + + if( rpkt->to == BCAST_ADDRESS) + pk.to = PARENT_ADDRESS; // Return to Parent + else + pk.to = rpkt->from; // Return to sender + pk.from = 0; // My address + + // Build packet data, two bytes + // A for ACK then CMD byte + + pk.len = 2; + pk.data[0] = RESP_CMD; + pk.data[1] = rpkt->data[0]; + + // If sent to BCAST then delay before sending + // to account for other traffic + + if( rpkt->to == BCAST_ADDRESS ) + { + timewait = 1000 * data->backoff * my_addr_mac(h); + usleep( timewait ); + } + + // Send it + + put_network_child(1, &pk,h ); } #if 0 #pragma mark - #pragma mark -- Child Debug -- @@ -431,26 +1206,25 @@ * OUTPUT: 0 - Send OK * <> 0 problem */ //************************************************************************ -static int put_network_child( PACKET *pkt,void *h ) +static int put_network_child( int bcast,PACKET *pkt,void *h ) { int rtnval; + char out[PHY_DATA_SIZE]; #ifdef MON_CHILD_DATA - printf("\nChild Send TYPE: %d FROM: %02X TO: %02X LEN: %d Data:", - pkt->type, + memset(out,'\0',PHY_DATA_SIZE); + strncpy(out,pkt->data,pkt->len); + log_data("\nChild Send FROM: %02d TO: %02d LEN: %d Data: [%s]\n", my_addr_mac(h), pkt->to, - pkt->len); - int i; - for( i=0; ilen; i++ ) - printf("%02X ",0xff & pkt->data[i]); - printf("\n"); + pkt->len, + out); #endif - rtnval = put_network( pkt,h ); + rtnval = put_network( bcast,pkt,h ); return(rtnval); } Index: Node/parent/logmap.c ================================================================== --- Node/parent/logmap.c +++ Node/parent/logmap.c @@ -7,11 +7,12 @@ * Module Name: logmap.h - Logical (name) -> physical mapping * * Description: This code is used to manage the logical to physical * mapping of the network * -* Revision History: 8-Aug-2009 Initial version +* Revision History: 8-Aug-2009 Initial version +* 22-Mar-2011 Update with Analyze fixes */ //************************************************************************ #include #include @@ -243,13 +244,20 @@ // Now remove it, either we have a previous one or we don't // If we do then link around removed node, if not just replace first if( prev != NULL ) - prev->next = e1->next; + { + if( e1 != NULL ) + prev->next = e1->next; + } else - map->base = e1->next; + { + if( e1 != NULL ) + map->base = e1->next; + } + // (5) Delete the element and we are done free( e ); rtnval = 0; Index: Node/parent/parent.c ================================================================== --- Node/parent/parent.c +++ Node/parent/parent.c @@ -11,10 +11,11 @@ * * Revision History: 30-Jul-2009 Initial version * 8-Aug-2009 Add parent/node specific data [48a9689588] * 12-Aug-2009 Add a timer to parent and all nodes [0654091ae5] * 26-Aug-2009 Change to LUA version [a9d657d7f5] +* 22-May-2010 Add logging to system [d98ef0303d] */ //************************************************************************ #include #include @@ -25,19 +26,21 @@ #include "network.h" #include "parent.h" #include "comqueue.h" #include "logmap.h" #include "parent_cmd.h" +#include "firenetlog.h" //#define DUMP_NETWORK 1 // Uncomment to show network packets #if 0 #pragma mark - #pragma mark -- Data -- #endif #define THREAD_PAUSE 10000 // SWAG 10 ms + #define COM_QUEELS 10 // Estimated com queue elements/node static void *parent_th( void *ptr ); #if 0 #pragma mark - @@ -67,11 +70,10 @@ if( pd != NULL ) { pd->port = port; pd->node_count = nodes; CLOCK_Start( &(pd->c)); - strncpy(pd->name,"PARENT",NODE_NAME_SZ); // (2) Init the com Queue stuct val = comqueueInit( nodes * COM_QUEELS); if( val == 0 ) @@ -139,11 +141,11 @@ PACKET packet; int val; // (1) Open the a handle to the network - data->net = init_network( data->port ); + data->net = init_network( PARENT_ADDRESS,data->port ); if( data->net != NULL ) { // (1a) Open the logical network map code data->map = create_map(); @@ -168,25 +170,25 @@ // (3) Look for FG packet and send that out if( comqueueNetworkReceive(&packet) ) { - val = put_network(&packet,data->net); + val = put_network(1,&packet,data->net); if( val != 0 ) - printf("\n*** PARENT FAIL [%d]\n",val); + log_data("\n*** PARENT FAIL [%d]\n",val); } usleep( THREAD_PAUSE ); // Pause that refreshes } } else { - printf("\n** PARENT: NETWORK FAILURE **\n"); + log_data("\n** PARENT: NETWORK FAILURE **\n"); } close_map( data->map ); // Close network map close_network( data->net ); // Close network mac/phy sleep(2); return( NULL ); } Index: Node/parent/parent.h ================================================================== --- Node/parent/parent.h +++ Node/parent/parent.h @@ -26,11 +26,10 @@ #ifndef PARENT_H #define PARENT_H 1 typedef struct { char *port; // Port used - char name[NODE_NAME_SZ]; // Node name int node_count; // # Nodes in system void *map; // Address map CLOCK_STRUCT c; // Timer struct [0654091ae5] void *net; // Network handle int stop; // TRUE on shutdown Index: Node/parent/support/comqueue.c ================================================================== --- Node/parent/support/comqueue.c +++ Node/parent/support/comqueue.c @@ -10,10 +10,12 @@ * network ---> fg * with mutexes * * * Revision History: 23-Aug-2009 Initial version [a9d657d7f5] +* 22-May-2010 Add logging to system [d98ef0303d] +* 22-May-2010 Fix output of logged packets to display correctly */ //***************************************************************************** #include #include @@ -20,10 +22,11 @@ #include #include #include #include "comqueue.h" #include "debug.h" +#include "firenetlog.h" // *** // Internal Structure // *** #if 0 @@ -90,11 +93,15 @@ if( st != NULL ) { // (3) Add in the locks val = pthread_mutex_init(&(st->flock),NULL); + if( val != 0 ) + return( -1); val = pthread_mutex_init(&(st->nlock),NULL); + if( val != 0 ) + return( -1); // (4) Now build the buffers st->fqsize = qels; st->nqsize = qels; @@ -110,20 +117,28 @@ } else { // FAILURE, mark as such val = pthread_mutex_destroy(&(st->flock)); + if( val != 0 ) + return( rtnval); val = pthread_mutex_destroy(&(st->nlock)); + if( val != 0 ) + return( rtnval); MEMFREE( st->fbuffers ); MEMFREE( st ); } } else { // FAILURE, mark as such val = pthread_mutex_destroy(&(st->flock)); + if( val != 0 ) + return( -1); val = pthread_mutex_destroy(&(st->nlock)); + if( val != 0 ) + return( -1); MEMFREE( st ); } } return( rtnval ); @@ -157,10 +172,12 @@ if( st != NULL && st->valid == COMQUEUE_VALID ) { // (2) Lock the queue before going on val = pthread_mutex_lock( &(st->nlock) ); + if( val != 0 ) + return( -1); // (3) If head <> tail then we have room for data, if not bail if( st->ncount < st->nqsize ) { @@ -177,10 +194,12 @@ } // (4) Unlock queue and move on val = pthread_mutex_unlock( &(st->nlock) ); + if( val != 0 ) + return( -1 ); } return( rtnval ); } @@ -235,10 +254,13 @@ if( st != NULL && st->valid == COMQUEUE_VALID ) { // (2) Lock the stack --> mgetty queue val = pthread_mutex_lock( &(st->flock) ); + if( val != 0 ) + return( -1 ); + // (3) Is there a buffer ? if( st->fcount > 0 ) { @@ -256,10 +278,13 @@ } // (5) Unlock the queue and return val = pthread_mutex_unlock( &(st->flock) ); + if( val != 0 ) + return( -1 ); + } return( rtnval ); } @@ -276,10 +301,11 @@ Output Parameters : NONE Function Returns : 0 If success, <> 0 if failure Notes : Date Created : 23-Aug-2008 + 22-May-2010 Change logging of packet to display data correctly */ //************************************************************************ int comqueueNetworkSend( PACKET *pk ) { @@ -291,10 +317,13 @@ if( st != NULL && st->valid == COMQUEUE_VALID ) { // (2) Lock the queue before going on val = pthread_mutex_lock( &(st->flock) ); + if( val != 0 ) + return( -1 ); + // (3) If count less than max we can send data if( st->fcount < st->fqsize ) { @@ -309,20 +338,23 @@ st->fhead = 0; // Circular queue action rtnval = 0; // SUCCESS } #ifdef MON_PARENT_DATA - printf("--PARENT RECV TYPE: [%02X] FROM: [%02X] TO: [%02X] Size: [%d]\n", - pk->type, + log_data("--PARENT RECV TYPE: FROM: [%02d] TO: [%02d] Size: [%d] Data: [%s]\n", pk->from, pk->to, - pk->len); + pk->len, + pk->data); #endif // (4) Unlock queue and move on val = pthread_mutex_unlock( &(st->flock) ); + if( val != 0 ) + return( -1 ); + } return( rtnval ); } @@ -369,18 +401,24 @@ int comqueueNetworkReceive(PACKET *pk ) { int rtnval = 0; int val; +#ifdef MON_PARENT_DATA + char out[PHY_DATA_SIZE]; +#endif // (1) Is the static structure valid ? if( st != NULL && st->valid == COMQUEUE_VALID ) { // (2) Lock the FG --> network queue val = pthread_mutex_unlock( &(st->nlock) ); + if( val != 0 ) + return( -1 ); + // (3) Is there a buffer ? if( st->ncount > 0 ) { @@ -395,21 +433,26 @@ st->ntail += 1; if( st->ntail >= st->nqsize ) st->ntail = 0; #ifdef MON_PARENT_DATA - printf("--PARENT SEND TYPE: [%02X] FROM: [%02X] TO: [%02X] Size: [%d]\n", - pk->type, + memset(out,'\0',PHY_DATA_SIZE); + strncpy(out,pk->data,pk->len); + log_data("--PARENT SEND FROM: [%02d] TO: [%02d] Size: [%d] Data: [%s]\n", pk->from, pk->to, - pk->len); + pk->len, + out); #endif } // (5) Unlock the queue and return val = pthread_mutex_unlock( &(st->nlock) ); + if( val != 0 ) + return( -1 ); + } return( rtnval ); } ADDED Scripts/ChannelTest.lua Index: Scripts/ChannelTest.lua ================================================================== --- Scripts/ChannelTest.lua +++ Scripts/ChannelTest.lua @@ -0,0 +1,355 @@ +-------------------------------------------------------------- +-- +-- Channel Tester +-- This file is used to test the A/D values on a board +-- +-- 26-Jun-2011 Initial version +-- +---------------------------------------------------------------- + +-------------------------------------------------------------- +-- +-- firenet_swr(outpkt,net,wait) +-- +-- INPUT: outpkt - Output packet +-- net - Firenet network +-- delay - Wait # ms for reply +-- +-- OUTPUT: Response packet or nil if none before timeout +-- +---------------------------------------------------------------- + +function firenet_swr(outpkt,net,wait) + local inpkt = nil + local wtimer + + -- Send the packet then wait for response + + net:write(outpkt) + wtimer = timer.new() + timer.sleep(100) + + -- Wait for response + + while( wtimer:done(wait) == nil ) + do + inpkt = net:read() + if( inpkt ~= nil ) + then + break + end + timer.sleep(50) + end + + wtimer:delete() + + return inpkt +end + +-------------------------------------------------------------- +-- +-- show_version(address,net ) - Show node version +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: 1 If successful nil if not +-- +---------------------------------------------------------------- + +function show_version(address,net) + local out + local outpkt = {} + local inpkt + local rtnval = nil + + -- (1) Get version of software + + outpkt.TO = address + outpkt.DATA = "V" + + -- Send data and receive input + + inpkt = firenet_swr(outpkt,net,2000) + + -- Check result + + if( inpkt ~= nil ) + then + out = string.format("Version Data: [%s]",inpkt.DATA) + print(out) + if( string.sub(inpkt.DATA,1,1) == "R" and + string.sub(inpkt.DATA,2,2) == "V" ) + then + rtnval = 1 + end + end + + return rtnval +end + +-------------------------------------------------------------- +-- +-- check_arm(address,net ) - Check for ARM +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: 1 If successful nil if not +-- +---------------------------------------------------------------- + +function do_arm(address,net) + local out + local outpkt = {} + local inpkt1 + local rtnval = nil + + -- (1) ARM the node + + outpkt.TO = address + outpkt.DATA = "AA" + inpkt = firenet_swr(outpkt,net,2000) + + return rtnval +end + +-------------------------------------------------------------- +-- +-- disarm_node(address,net ) - Turn off ARM +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: NONE +-- +---------------------------------------------------------------- + +function disarm_node(address,net) + local out + local outpkt = {} + local inpkt + + -- (1) ARM the node + + outpkt.TO = address + outpkt.DATA = "AD" + inpkt = firenet_swr(outpkt,net,2000) + +end + +-------------------------------------------------------------- +-- +-- check_channels(address,net ) - Show node version +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: 1 If successful nil if not +-- +---------------------------------------------------------------- + +function check_channels(address,net) + local out + local outpkt = {} + local inpkt + local rtnval = 1 + local channel,status,ad + + -- (1) Loop and read each channel + + for channel=0,5 + do + outpkt.TO = address + outpkt.DATA = string.format("C%d",channel) + + inpkt = firenet_swr(outpkt,net,2000) + if( inpkt ~= nil ) + then + status = string.sub(inpkt.DATA,3,3) + if( status == "1" ) + then + status = "F" + else + status = "U" + end + ad = string.sub(inpkt.DATA,4) + out = string.format("Channel[%d] Status[%s] A/D=[%s]", + channel+1, + status, + ad) + print(out) + else + rtnval = nil + break + end + end + + return rtnval +end + +---------------------------------------------------------------- +-- check_status( address,net ) +-- +-- INPUT: address - Node to read +-- net - Firenet network +-- +-- OUTPUT: Return list of the form +-- list.ARMED = 1 if armed nil if not +-- list.W[1-6] - 1 if item wired, nil if not +-- list.F[1-6] - 1 if fired, nil if not fired +-- +-- A/D - Armed/Disarmed +-- F - 0x40 | 0x3F wired bits +-- W - 0x40 | 0x3F fired bits +-- +---------------------------------------------------------------- + +function update_status( address,net ) + + local list = {} + local part + local output + local outpkt + local inpkt + local sd + local rtnval = nil -- Set for failure + + -- (0) Read status + + outpkt = {} + outpkt.TO = address + outpkt.DATA = "S" + inpkt = firenet_swr(outpkt,net,2000) + + if( inpkt ~= nil ) + then + sd = inpkt.DATA + + -- (1) Get the armed,disarmed bit + + part = string.sub(sd,3,3) + if( part == "A" ) + then + list.ARMED = 1 + else + list.ARMED = 0 + end + + table.foreach(list,print) + + -- (2) Get the Fired bits + + --print("SD = ",sd) + part = string.sub(sd,4,4) + part = string.byte(part) -- Get the numerical value + part = part - 64 -- Remove 0x40 + + print("FIRED: ",part) + + list.FIRED = bin_con( part ) -- Convert to a binary array + + -- (3) Get the Wired bits + + part = string.sub(sd,5,5) + part = string.byte(part) -- Get the numerical value + part = part - 64 -- Remove 0x40 + + print("WIRED: ",part) + + list.UNFIRED = bin_con( part ) -- Convert to a binary array + + print("------------") + + if( list.ARMED ~= nil and list.ARMED == 1 ) + then + print("ARMED") + else + print("DISARMED") + end + + if( list.UNFIRED ~= nil and type(list.UNFIRED) == "table" ) + then + table.foreach( list.UNFIRED,print) + end + + print("------------") + + rtnval = 1 + end + + return rtnval +end + +---------------------------------------------------------------- +-- bin_con( val ) - Convert value to binary array +-- +-- INPUT: val - 0 - 0x3f (0-63) +-- +-- OUTPUT: Binary array 1-6 of bits from the value +-- bit 6 == MSB +-- +---------------------------------------------------------------- + +function bin_con( val ) + local temp + local subval = 32 + local list = {} + + -- (1) Loop through values + + for i=6,1,-1 + do + temp = val - subval + if( temp >= 0 ) + then + list[i] = 1 -- We have the bit + val = temp + else + list[i] = 0 -- We don't have the bit + end + + subval = subval/2 -- Next lower bit + end + + return list +end + + + +-------------------- MAIN SCRIPT --------------------- + +local run = 1 + +-- (1) First open FIRENET + +net = firenet.new() +if( net ~= nil ) +then + while( run ) + do + print("") + print("Node Test") + io.write("Node For Test: ") + node = io.read("*l") + + node = tonumber(node) + if( node > 0 and node < 30 ) + then + + do_arm( node,net ) -- Arm then dump A/D + + check_channels( node, net ) + + update_status( node,net ) + + disarm_node( net,net ) + else + break + end + end + net:delete() +end + +print("-- End Run --") + ADDED Scripts/ChannelTest.sh Index: Scripts/ChannelTest.sh ================================================================== --- Scripts/ChannelTest.sh +++ Scripts/ChannelTest.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Startup for Channel Test +# Simulated network with 1 nodes + +echo "Starting Node TEST" +echo "------------------" + +../build/Debug\ INTEL/firenet -c ChannelTest.lua -p 1 -log net.data + + ADDED Scripts/MultFire.lua Index: Scripts/MultFire.lua ================================================================== --- Scripts/MultFire.lua +++ Scripts/MultFire.lua @@ -0,0 +1,142 @@ +-------------------------------------------------------------- +-- +-- FIRENET Multiple Fire test script +-- Tests multiple nodes to check on simultaneous fires +-- +-- 11-Nov-2011 Initial version +-- +---------------------------------------------------------------- + +path = "../../Scripts" + +-- Set that into the package search path +_G.package.path = path .. "/?.lua;" .. _G.package.path + +require "firenet_sup" -- FIRENET support functions + +-------------------------------------------------------------- +-- +-- firenet_swr(outpkt,net,wait) +-- +-- INPUT: outpkt - Output packet +-- net - Firenet network +-- delay - Wait # ms for reply +-- +-- OUTPUT: Response packet or nil if none before timeout +-- +---------------------------------------------------------------- + +function firenet_swr(outpkt,net,wait) + local inpkt = nil + local wtimer + + print("----------") + print("Sending to: ",outpkt.TO) + print("DATA: ",outpkt.DATA) + + -- Send the packet then wait for response + + net:write(outpkt) + wtimer = timer.new() + timer.sleep(100) + + -- Wait for response + + while( wtimer:done(wait) == nil ) + do + inpkt = net:read() + if( inpkt ~= nil ) + then + break + end + timer.sleep(50) + end + + wtimer:delete() + + if( inpkt ~= nil ) + then + print("Rec from: ",inpkt.FROM) + print("DATA: ",inpkt.DATA) + end + + return inpkt +end + +-------------------- MAIN SCRIPT --------------------- + +-- (1) First open FIRENET + +local net +local outpkt +local dlytimer +local data; + +net = firenet.new() +if( net ~= nil ) +then + -- Check What we have out there + + if( build_fnet_status(nil,net) ) + then + print("") + print("----------------------------------------") + out = string.format("There are %d nodes on the net",FNET_MAP.n) + print(out) + + -- Sync the nodes + + outpkt = {} + outpkt.TO = BCAST_ADDR + outpkt.DATA = "Z" + dlytimer = timer.new() + firenet_swr(outpkt,net,1000) + + -- ARM the nodes + outpkt = {} + outpkt.TO = BCAST_ADDR + outpkt.DATA = "AA" + firenet_swr(outpkt,net,1000) + + -- Nodes ARMED + + io.write("Ready for Fire: ") + data = io.read("*l") + + -- Now fire each of the nodes + -- First get current "node time" + -- then calculate firing time as 5 seconds + -- from now + + data = dlytimer:read() + 5000 + for key,value in next,FNET_MAP + do + if( type(value) == "table" ) + then + outpkt = {} + outpkt.TO = key + outpkt.DATA = string.format("D0%d",data) + + firenet_swr(outpkt,net,1000) + end + end + print("*********") + print("Now : ",dlytimer:read()) + + timer.sleep(10000) -- Wait for fire + print("Current Time: ",dlytimer:read()) + + -- Disarm nodes + + -- ARM the nodes + outpkt = {} + outpkt.TO = BCAST_ADDR + outpkt.DATA = "AD" + firenet_swr(outpkt,net,1000) + end + + net:delete() +end + +print("-- End Run --") + ADDED Scripts/PgmFire.lua Index: Scripts/PgmFire.lua ================================================================== --- Scripts/PgmFire.lua +++ Scripts/PgmFire.lua @@ -0,0 +1,161 @@ +-------------------------------------------------------------- +-- +-- FIRENET Program and fire multiple +-- Tests multiple nodes to check on simultaneous fires +-- +-- 17-Nov-2011 Initial version +-- +---------------------------------------------------------------- + +path = "../../Scripts" + +-- Set that into the package search path +_G.package.path = path .. "/?.lua;" .. _G.package.path + +require "firenet_sup" -- FIRENET support functions + +-------------------------------------------------------------- +-- +-- firenet_swr(outpkt,net,wait) +-- +-- INPUT: outpkt - Output packet +-- net - Firenet network +-- delay - Wait # ms for reply +-- +-- OUTPUT: Response packet or nil if none before timeout +-- +---------------------------------------------------------------- + +function firenet_swr(outpkt,net,wait) + local inpkt = nil + local wtimer + + print("----------") + print("Sending to: ",outpkt.TO) + print("DATA: ",outpkt.DATA) + + -- Send the packet then wait for response + + net:write(outpkt) + wtimer = timer.new() + timer.sleep(100) + + -- Wait for response + + while( wtimer:done(wait) == nil ) + do + inpkt = net:read() + if( inpkt ~= nil ) + then + break + end + timer.sleep(50) + end + + wtimer:delete() + + if( inpkt ~= nil ) + then + print("Rec from: ",inpkt.FROM) + print("DATA: ",inpkt.DATA) + end + + return inpkt +end + +-------------------- MAIN SCRIPT --------------------- + +-- (1) First open FIRENET + +local net +local outpkt +local dlytimer +local data; + +net = firenet.new() +if( net ~= nil ) +then + -- Check What we have out there + + if( build_fnet_status(nil,net) ) + then + print("") + print("----------------------------------------") + out = string.format("There are %d nodes on the net",FNET_MAP.n) + print(out) + + for j=1,FNET_MAP.n + do + for i=0,5 + do + outpkt = {} + outpkt.TO = j + outpkt.DATA = string.format("P%d%05d",i,(i+1)*1000); + firenet_swr(outpkt,net,1000); + end + end + + -- Sync & fire the nodes + + -- Nodes ARMED + + io.write("Ready for Fire: ") + data = io.read("*l") + + -- ARM the nodes + outpkt = {} + outpkt.TO = BCAST_ADDR + outpkt.DATA = "AA" + firenet_swr(outpkt,net,1000) + + outpkt = {} + outpkt.TO = BCAST_ADDR + outpkt.DATA = "ZP" + dlytimer = timer.new() + firenet_swr(outpkt,net,500) + + print("****************") + + -- Now loop waiting for node fire data + + count = 0; + while( 1 ) + do + timer.sleep( 100 ) + + outpkt = 1 + while (outpkt ~= nil ) + do + outpkt = net:read() + if( outpkt ~= nil ) + then + count = count + 1 + out = string.format("-- REC [%d] Packet --",count) + print(out) + table.foreach(outpkt,print) + print("-----------"); + end + end + + if( count >= 6*FNET_MAP.n ) + then + break; + end + end + + print("--NODE DONE--"); + + -- Disarm nodes + + -- ARM the nodes + outpkt = {} + outpkt.TO = BCAST_ADDR + outpkt.DATA = "AD" + firenet_swr(outpkt,net,1000) + end + + net:delete() +end + +print("-- End Run --") + ADDED Scripts/ProdTest.lua Index: Scripts/ProdTest.lua ================================================================== --- Scripts/ProdTest.lua +++ Scripts/ProdTest.lua @@ -0,0 +1,412 @@ +-------------------------------------------------------------- +-- +-- FIRENET Production Test Script +-- This file is used to test and setup a new board +-- +-- 27-Feb-2011 Initial version +-- +---------------------------------------------------------------- + +path = "../../Scripts" + +-- Set that into the package search path +_G.package.path = path .. "/?.lua;" .. _G.package.path + +require "firenet_sup" -- FIRENET support functions + +-------------------------------------------------------------- +-- +-- firenet_swr(outpkt,net,wait) +-- +-- INPUT: outpkt - Output packet +-- net - Firenet network +-- delay - Wait # ms for reply +-- +-- OUTPUT: Response packet or nil if none before timeout +-- +---------------------------------------------------------------- + +function firenet_swr(outpkt,net,wait) + local inpkt = nil + local wtimer + + -- Send the packet then wait for response + + net:write(outpkt) + wtimer = timer.new() + timer.sleep(100) + + -- Wait for response + + while( wtimer:done(wait) == nil ) + do + inpkt = net:read() + if( inpkt ~= nil ) + then + break + end + timer.sleep(50) + end + + wtimer:delete() + + return inpkt +end + +-------------------------------------------------------------- +-- +-- show_version(address,net ) - Show node version +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: 1 If successful nil if not +-- +---------------------------------------------------------------- + +function show_version(address,net) + local out + local outpkt = {} + local inpkt + local rtnval = nil + + -- (1) Get version of software + + outpkt.TO = address + outpkt.DATA = "V" + + -- Send data and receive input + + inpkt = firenet_swr(outpkt,net,2000) + + -- Check result + + if( inpkt ~= nil ) + then + out = string.format("Version Data: [%s]",inpkt.DATA) + print(out) + if( string.sub(inpkt.DATA,1,1) == "R" and + string.sub(inpkt.DATA,2,2) == "V" ) + then + rtnval = 1 + end + end + + return rtnval +end + +-------------------------------------------------------------- +-- +-- check_arm(address,net ) - Check for ARM +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: 1 If successful nil if not +-- +---------------------------------------------------------------- + +function check_arm(address,net) + local out + local outpkt = {} + local inpkt + local rtnval = nil + + -- (1) ARM the node + + outpkt.TO = address + outpkt.DATA = "AA" + net:write(outpkt) + + timer.sleep(1000) + + -- Check result + + print("ARM SENT - Is the NODE LED BLINKING ?") + io.write("Y/N : ") + out = io.read("*l") + if( out == "Y" or out == "y" ) + then + rtnval = 1 + end + + return rtnval +end + +-------------------------------------------------------------- +-- +-- disarm_unit(address,net ) - Turn off ARM +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: NONE +-- +---------------------------------------------------------------- + +function disarm_unit(address,net) + local out + local outpkt = {} + local inpkt + + -- (1) ARM the node + + outpkt.TO = address + outpkt.DATA = "AD" + net:write(outpkt) + +end + +-------------------------------------------------------------- +-- +-- check_channels(address,net ) - Show node version +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: 1 If successful nil if not +-- +---------------------------------------------------------------- + +function check_channels(address,net) + local out + local outpkt = {} + local inpkt + local rtnval = 1 + local channel,status,ad + + -- (1) Loop and read each channel + + for channel=0,5 + do + outpkt.TO = address + outpkt.DATA = string.format("C%d",channel) + + inpkt = firenet_swr(outpkt,net,2000) + if( inpkt ~= nil ) + then + status = string.sub(inpkt.DATA,3,3) + if( status == "1" ) + then + status = "F" + else + status = "U" + end + ad = string.sub(inpkt.DATA,4) + out = string.format("Channel[%d] Status[%s] A/D=[%s]", + channel+1, + status, + ad) + print(out) + else + rtnval = nil + break + end + end + + return rtnval +end + +-------------------------------------------------------------- +-- +-- fire_channels(address,net ) - Fire channels +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: 1 If successful nil if not +-- +---------------------------------------------------------------- + +function fire_channels(address,net) + local out + local outpkt = {} + local inpkt + local channel,status,ad + local i + + -- (1) Loop and read each channel + + print("Firing channels") + for channel=0,5 + do + outpkt.TO = address + outpkt.DATA = string.format("F%d",channel) + + out = string.format("Firing [%d] ",channel+1) + print(out) + net:write(outpkt) + + io.write("Did It pull current [y/n]:") + out = io.read("*l") + if( out == "Y" or out == "y" ) + then + rtnval = 1 + else + rtnval = nil + break + end + end + + return rtnval +end + +-------------------------------------------------------------- +-- +-- address_change(address,net ) - Change address +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: 1 If successful nil if address NOT changed +-- +---------------------------------------------------------------- + +function address_change(address,net) + local out + local outpkt = {} + local inpkt + local rtnval + local addr + + -- Show current address and ask for change + out = string.format("Current Unit address is [%d] ",address) + print(out) + io.write("Do you want to change it [y/n]: ") + out = io.read("*l") + if( out == "Y" or out == "y") + then + + -- Get new address + + io.write("New address (1-30): " ) + out = io.read("*l") + addr = tonumber(out) + if( addr > 0 and addr <= 30 ) + then + + -- Try to change it + + outpkt.TO = address + outpkt.DATA = string.format("W%d",addr) + inpkt = firenet_swr(outpkt,net,4000) + if( inpkt ~= nil ) + then + out = string.format("RESPONSE [%s] ",inpkt.DATA) + print(out) + out = string.format("Unit Address changed from [%d] to [%d]", + address, + addr) + rtnval = 1 + else + print("** No response on address change packet **") + end + end + end + + return rtnval +end + +-------------------------------------------------------------- +-- +-- run_Tests(address,net ) - Run tests on node +-- +-- INPUT: address - Address of node under test +-- net - Firenet network +-- +-- OUTPUT: 1 If successful nil if not +-- +---------------------------------------------------------------- + +function run_Tests(address,net) + local out + + -- (1) Get and show version + + if( show_version(address,net) == nil ) + then + print("** VERSION TEST FAILED **") + return nil + end + + if( check_arm(address,net) == nil ) + then + print("** ARM TEST FAILED **") + return nil + end + + if( check_channels(address,net) == nil ) + then + print("** CHANNEL TEST FAILED **") + return nil + end + + if( fire_channels(address,net) == nil ) + then + print("** FIRE CHANNELS TEST FAILED **") + return nil + end + + disarm_unit( address,net ) + + if( address_change(address,net) ) + then + print("-- UNIT OK & ADDRESS CHANGED --") + else + print("-- UNIT OK --") + end + + return 1 +end + +-------------------- MAIN SCRIPT --------------------- + +-- (1) First open FIRENET + +net = firenet.new() +if( net ~= nil ) +then + -- Check What we have out there + + if( build_fnet_status(nil,net) ) + then + print("") + print("----------------------------------------") + out = string.format("There are %d nodes on the net",FNET_MAP.n) + print(out) + + if( FNET_MAP.n == 1 ) + then + for key,value in next,FNET_MAP + do + if( type(value) == "table" ) + then + address = tonumber(key) + break + end + end + + out = string.format("NODE [%d] Under Test",address) + print(out) + + if( run_Tests( address,net ) ) + then + print("-- Test Successful --") + end + + else + print("*** ONLY ONE NODE IN NET FOR THIS TEST **") + print("*** REMOVE EXTRA NODES ***") + net:delete() + return + end + else + print("** NO UNITS IN NETWORK **") + print("** TEST FAILED **") + end + + net:delete() +end + +print("-- End Run --") + Index: Scripts/firenet_sup.lua ================================================================== --- Scripts/firenet_sup.lua +++ Scripts/firenet_sup.lua @@ -15,189 +15,256 @@ -- .NAME - Node name (see FNET_MAP) -- -- 13-Sep-2009 Initial version -- 20-Sep-2009 Add cmd line handler -- 21-Sep-2009 Add music shutdown +-- 17-May-2010 [ba31d5cae3] Convert to NEWNET version +-- 16-Jan-2011 [e4208b8f56] Change status response msg header +-- 23-Jan-2011 Correct update_status() code for new response hdr +-- 23-Jan-2011 [e63a96467f] Fix status return parsing -- ---------------------------------------------------------------- ---------------------------------------------------------------- -- GLOBAL DATA STRUCTURES ---------------------------------------------------------------- FNET_MAP = {} -- Network MAP -REV_FNET_MAP = {} -- Reverse MAP -BCAST_ADDR = "0xFF" -- Broadcast address for FIRENET -OS_MUSIC_PLAYER = "afplay" -- Cmd line Music player program (OS dependent) - ----------------------------------------------------------------- --- build_fnet_map(h) - Build Lua map of firenet network --- --- INPUT: h - FIRENET handle --- --- OUTPUT: 1 - Success, FNET_MAP and REV_FNET_MAP rebuilt --- nil - FAILURE --- ----------------------------------------------------------------- - -function build_fnet_map(h) - local outpk - local inpk - local rtnval = nil - - -- (1) Build a WHO IS message - - outpk = {} - outpk.CMD = "W" - outpk.TO = BCAST_ADDR - - -- (2) Send it then wait for an answer - - --print("-- Sending Packet --") - h:write(outpk) - timer.sleep( 1000 ); - - -- (3) Now read packets till we get a nil and store the data - - inpk = h:read() - FNET_MAP = {} - REV_FNET_MAP = {} - while( inpk ~= nil ) - do - --print("-- Rec Packet --") - --table.foreach(inpk,print) - - if( inpk.CMD == "W" ) - then - -- Build forward map - FNET_MAP[inpk.DATA] = {} - FNET_MAP[inpk.DATA].NAME = inpk.DATA - FNET_MAP[inpk.DATA].PHY = inpk.FROM - - -- Build Reverse MAP - REV_FNET_MAP[inpk.FROM] = {} - REV_FNET_MAP[inpk.FROM].NAME = inpk.DATA - end - timer.sleep( 100 ); - rtnval = 1 - inpk = h:read() - end - return rtnval -end - ----------------------------------------------------------------- --- build_fnet_status(h) - Get status of network --- --- INPUT: h - FIRENET handle --- --- OUTPUT: 1 - Success, FNET_MAP and REV_FNET_MAP updated with status --- nil - FAILURE --- ----------------------------------------------------------------- - -function build_fnet_status( h ) - local outpk - local inpk - local rtnval = nil - local node - local out - - -- (1) Build a STATUS message - - outpk = {} - outpk.CMD = "S" - outpk.TO = BCAST_ADDR - - -- (2) Send it then wait for an answer - - --print("-- Sending Packet --") - h:write(outpk) - timer.sleep( 1000 ); - - -- (3) Now read packets till we get a nil and store the data - - inpk = h:read() - while( inpk ~= nil ) - do - print("-- Rec Packet --") - table.foreach(inpk,print) - - if( inpk.CMD == "S" ) - then - node = node_address(inpk.FROM) - if( node ~= nil ) - then - -- Update forward map - if( FNET_MAP[node] ~= nil ) - then - FNET_MAP[node].FIRED = inpk.FIRED - FNET_MAP[node].UNFIRED = inpk.UNFIRED - else - out = string.format("*** ERROR Unknown NODE [%s]",inpk.FROM) - if( inpk.DATA ~= nil ) - then - out = out..string.format("NAME: [%s]",node) - end - print(out) - end - else - out = string.format("*** ERROR Node [%s] NOT FOUND",inpk.FROM) - print(out) - end - end - timer.sleep( 100 ); - rtnval = 1 - inpk = h:read() - end - return rtnval -end - ----------------------------------------------------------------- --- phy_address(node) - Return physical address for a node --- --- INPUT: node - Node name --- --- OUTPUT: Physical address or BCAST_ADDRESS if none --- ----------------------------------------------------------------- - -function phy_address(node) - local phy - - if( FNET_MAP[node] ~= nil ) - then - phy = FNET_MAP[node].PHY - else - phy = BCAST_ADDR - end - - return phy -end - ----------------------------------------------------------------- --- node_address(phy) - Return node name from physical address --- --- INPUT: phy - physical address --- --- OUTPUT: Node name or nil if not found --- ----------------------------------------------------------------- - -function node_address(phy) - local node = nil - local val - - val = tonumber(phy) - if( REV_FNET_MAP[val] ~= nil ) - then - node = REV_FNET_MAP[val].NAME - else - node = phy - end - - return node -end - +BCAST_ADDR = "0" -- Broadcast address for FIRENET [ba31d5cae3] +FNET_MAX_ADDR = 32 -- Max address for FIRENET +OS_MUSIC_PLAYER = "afplay" -- Cmd line Music player program (OS dependent) +print("--FIRENET_SUP LOADED--") + +---------------------------------------------------------------- +-- build_fnet_status(addr,h) - Get status of network +-- +-- INPUT: addr - If present just query 1 node +-- h - FIRENET handle +-- +-- OUTPUT: 1 - Success, FNET_MAP updated with status +-- nil - FAILURE +-- +---------------------------------------------------------------- + +function build_fnet_status(addr, h ) + local outpk + local inpkt + local rtnval = nil + local node + local out + local wtimer + local i + + -- (1) Build a STATUS message + -- If addr input then use just one address + + outpk = {} + outpk.DATA = "S" + if( addr == nil ) + then + outpk.TO = BCAST_ADDR + else + outpk.TO = addr + end + + -- (2) Send it then wait for an answer + + print("-- Sending Packet --") + h:write(outpk) + + -- (3) Now read packets till we get a nil and store the data + + wtimer = timer.new() + + while( wtimer:done(2000) == nil ) + do + inpkt = h:read() + if( inpkt ~= nil ) + then + print("-- Rec Packet --") + table.foreach(inpkt,print) + + -- Handle Status return message + + print("------------") + + if( string.sub(inpkt.DATA,1,1) == "R" and + string.sub(inpkt.DATA,2,2) == "S" ) + then + print("-- Doing packet") + rtnval = 1 + node = inpkt.FROM + + -- Now fill in message with Status DATA + + FNET_MAP[node] = update_status( inpkt.DATA ) + end + + -- If only one then don't try another read + + if( addr == nil ) + then + -- Restart time to look for next + wtimer:start(); + else + -- Done + break + end + end + end + + -- Set the count in the structure + + FNET_MAP.n = 0 + for key,value in next, FNET_MAP + do + print( key,value ) + if( type(value) == "table" ) + then + FNET_MAP.n = FNET_MAP.n + 1 + end + end + + wtimer:delete() + + return rtnval +end + +---------------------------------------------------------------- +-- +-- swr_firenet( pkt ,delay) - Send request & wait reply +-- +-- INPUT: pkt - Packet to send +-- delay - Wait # ms +-- h - Network object +-- +-- OUTPUT: Returned packet +-- nil - FAILURE +-- +---------------------------------------------------------------- + +function swr_firenet(pkt,delay,h) + local rtnval = nil + local wtimer + + -- (2) Send it then wait for an answer + + print("-- Sending Packet --") + h:write(pkt) + + -- (3) Wait for packet + + wtimer = timer.new() + + while( wtimer:done(delay) == nil ) + do + rtnval = h:read() + if( rtnval ~= nil ) + then + print("-- Rec Packet --") + table.foreach(rtnval,print) + break + end + end + + -- Remove timer and return result + wtimer:delete() + return rtnval +end + +---------------------------------------------------------------- +-- update_status( sd ) +-- +-- INPUT: sd - Status data (SR[A/D][F][W]) +-- +-- OUTPUT: Return list of the form +-- list.ARMED = 1 if armed nil if not +-- list.W[1-6] - 1 if item wired, nil if not +-- list.F[1-6] - 1 if fired, nil if not fired +-- +-- A/D - Armed/Disarmed +-- F - 0x30 | 0x3F wired bits +-- W - 0x30 | 0x3F fired bits +-- +---------------------------------------------------------------- + +function update_status( sd ) + + local list = {} + local part + + -- (1) Get the armed,disarmed bit + + part = string.sub(sd,3,3) + if( part == "A" ) + then + list.ARMED = 1 + else + list.ARMED = 0 + end + + table.foreach(list,print) + + -- (2) Get the Fired bits + + --print("SD = ",sd) + part = string.sub(sd,4,4) + part = string.byte(part) -- Get the numerical value + part = part - 48 -- Remove 0x30 + + print("FIRED: ",part) + + list.FIRED = bin_con( part ) -- Convert to a binary array + + -- (3) Get the Wired bits + + part = string.sub(sd,5,5) + part = string.byte(part) -- Get the numerical value + part = part - 48 -- Remove 0x30 + + print("WIRED: ",part) + + list.UNFIRED = bin_con( part ) -- Convert to a binary array + + --table.foreach(list,print) + + return list +end + +---------------------------------------------------------------- +-- bin_con( val ) - Convert value to binary array +-- +-- INPUT: val - 0 - 0x3f (0-63) +-- +-- OUTPUT: Binary array 1-6 of bits from the value +-- bit 6 == MSB +-- +---------------------------------------------------------------- + +function bin_con( val ) + local temp + local subval = 32 + local list = {} + + -- (1) Loop through values + + for i=6,1,-1 + do + temp = val - subval + if( temp >= 0 ) + then + list[i] = 1 -- We have the bit + val = temp + else + list[i] = 0 -- We don't have the bit + end + + subval = subval/2 -- Next lower bit + end + + return list +end + ---------------------------------------------------------------- -- play_file(file) -- -- INPUT: file - Music file -- ADDED Scripts/labelmarkup.lua Index: Scripts/labelmarkup.lua ================================================================== --- Scripts/labelmarkup.lua +++ Scripts/labelmarkup.lua @@ -0,0 +1,725 @@ +------------------------------------------------------------------------------- +-- Copyright (C) 2009, Pandora Products +-- +-- Module Name: queuemarkup.lua +-- +-- Description: Markup a queue file from queuefile.lua +-- +-- Suntax: firenet -p X [-n #boxes] -c labelmarkup.lua -L

-o + +*/ +//------------------------------------------------------------------------------ + +#include +#include +#include +#include "waverdr.h" +#include "Hdr.h" +#include "Nodes.h" +#include "PeakFinder.h" +#include "Plot.h" + + +static int flag_srch(int argc,const char *argv[], + char *flag,int get_value, + char **rtn ); +static void print_help(void); + + +int main(int argc, const char * argv[]) +{ + char *ptr; + WAVE_HDL *ifile; + SHOW_HDR *hdr; + NODES *nlist; + float *buffer; + int frames; + PEAK *base; + int count = 0; + char inbuf[25]; + float threshold = 0.8; + float width = 100.0; + int n; + int nodes; + char *outfile; + char plot = 0; + + //------------------------------------------------------------------------------ + // (1) Handle input options + + if( flag_srch( argc,argv,"-v",0,&ptr) ) // Handle -v + { + print_help(); + return( 0 ); + } + + if( flag_srch( argc,argv,"-i",1,&ptr) ) // Input sound file + { + ifile = wave_open(ptr,"r",NULL); + + if( ifile == NULL ) + { + printf("*** ERROR Could not read [%s] Input sound file\n",ptr); + print_help(); + return(-1); + } + } + else + { + printf("*** ERROR NO Input Sound File\n"); + print_help(); + return( - 1 ); + } + + if( flag_srch( argc,argv,"-hdr",1,&ptr) ) // Input header file + { + hdr = GetHeader(ptr); + + if( hdr == NULL ) + { + printf("*** ERROR Could not read [%s] Input header file\n",ptr); + print_help(); + return(-1); + } + } + else + { + printf("*** ERROR NO Input Header File\n"); + print_help(); + return( - 1 ); + } + + if( flag_srch( argc,argv,"-nodes",1,&ptr) ) // Input # nodes + { + nodes = (int)strtol(ptr,NULL,0); + + if( nodes < 0 || nodes > 10 ) + { + printf("*** Bad node count [%d]\n",nodes); + print_help(); + return(-1); + } + else + { + nlist = BuildNodes(nodes); + if( nlist == NULL ) + { + printf("*** ERROR Bad node list\n"); + print_help(); + return( - 1 ); + } + } + } + else + { + printf("*** ERROR NO nodes value\n"); + print_help(); + return( - 1 ); + } + + if( flag_srch( argc,argv,"-o",1,&ptr) ) // Out pgm file + { + outfile = ptr; + } + else + { + printf("*** ERROR NO Output Program File\n"); + print_help(); + return( - 1 ); + } + + if( flag_srch( argc,argv,"-plt",0,&ptr) ) // Plot data generation + { + plot = 1; + } + + //------------------------------------------------------------------------------ + // Process file + // Read the data file + + buffer = (float *)calloc(2,sizeof(float) * ifile->frames); + if( buffer != NULL ) + { + frames = wave_frame_fread(ifile, (int)ifile->frames, buffer); + printf("Frames Read %d\n",frames); + + // Get an acceptable # of peaks + + while( 1 ) + { + printf("Input threshold (0-1.0): "); + fgets(inbuf,25,stdin); + n = sscanf(inbuf,"%f",&threshold); + + printf("Input Width (ms): "); + fgets(inbuf,25,stdin); + n = sscanf(inbuf,"%f",&width); + + base = ScanData(ifile,buffer,NULL,threshold,width); + count = ScanDataSize(base); + ScanDataFree(base); // Free up trial + + printf("Found %d peaks\n",count); + printf("OK (Y/n):"); + fgets(inbuf,25,stdin); + if( inbuf[0] == 'Y') + break; + + } + + // Run with current parameters + base = ScanData(ifile,buffer,nlist,threshold,width); + ScanDataOutput(base,nlist,hdr,outfile); + + if( plot) + { + plotData( 40*ifile->rate,1.0 * ifile->rate,buffer,base); + } + + ScanDataFree(base); + FreeHeader(hdr); + wave_close(ifile); + } + + + return 0; +} + +/*********************************************************************** +* +* print_help(void) +* +* INPUT: NONE +* +* OUTPUT: NONE +* Print program help +* +**********************************************************************/ + +static void print_help(void) +{ + printf("QueFinder - Find Que's in WAV File %s %s\n",__DATE__,__TIME__); + printf("SYNTAX: firewalker -i -o \n"); + printf("\n"); + printf(" -i
File with show data\n"); + printf(" -o Show output file\n"); + printf(" -plt Generate Plot files\n"); + printf(" [-v] Show this message and return\n"); + printf("\n"); +} + +/*********************************************************************** +* +* FLAG_SRCH(argc,argv,flag,get_value,&rtn ) +* +* INPUT: argc,argv - Command line parameters +* flag - String (flag) to be found +* get_value - TRUE return pointer to next item +* FALSE no pointer returned +* rtn - Return pointer (NULL if not used or +* * found) +* +* OUTPUT: TRUE if flag found +* FALSE if not +* Scan argument list for flag +* If found then TRUE is returned and if get_value TRUE +* return rtn pointing to string in argv[] following +* the flag +* NOTE only exact matches will be found +* +**********************************************************************/ + +static int flag_srch(int argc,const char *argv[],char *flag,int get_value,char **rtn ) +{ + int i; + const char *ptr; + + /* Scan through the argv's and look for a matching flag */ + + for( i=0; i +#include +#include "waverdr.h" + +// Internal routines + +static WAVE_HDL *wave_open_read( FILE *h ); +static WAVE_HDL *wave_open_write( FILE *h, WAVE_HDL *proto ); +static int wave_find_data(int start,int size,char *buffer); + + +#pragma mark -- EXTERNAL API -- + +/***************************************************************************** +* +* WAVE_HDL *wave_open( char *name,char *mode,WAVE_HDL *proto) - Open wave file +* +* INPUT: name - Name of file to open +* mode - "r" or "w" +* proto - Prototype for "w" open will create header info using +* this information +* IGNORED on read +* +* OUTPUT: Pointer to handle for read or write of file +* +******************************************************************************/ + +WAVE_HDL *wave_open( char *name,char *mode,WAVE_HDL *proto) +{ + WAVE_HDL *fp = NULL; + FILE *h; + char internal_mode[10]; + + // (1) Open the file and fail if not + // Make the open "rb" or "wb" + + strncpy(internal_mode,mode,10); + strncat(internal_mode,"b",10); + h = fopen(name,internal_mode); + if( h != NULL ) + { + // (2) Open OK so handle READ or WRITE + + switch( mode[0] ) + { + case 'r': fp = wave_open_read( h ); + break; + + case 'w': fp = wave_open_write(h,proto ); + break; + + default: fp = NULL; + break; + } + } + + return( fp ); +} + +/***************************************************************************** +* +* void wave_close( WAVE_HDL *h ) +* +* INPUT: h - Open wave handle +* +* OUTPUT: Close file and wipe structure +* +******************************************************************************/ + +void wave_close( WAVE_HDL *h ) +{ + if( h != NULL ) + { + fclose( h->fp ); + free( h ); + } +} + +/***************************************************************************** +* +* int wave_frame_fread( WAVE_HDL *h,int frames,float *frame_buf) +* +* INPUT: h Handle structure +* frames Read this many frames +* frame_buf Put output float here (must be large enought to hold data) +* +* OUTPUT: Read input, little endian -32768 to 32767 -> -1.0 to 1.0 float +* return # frames read +* +******************************************************************************/ + +int wave_frame_fread( WAVE_HDL *hdl,int frames,float *frame_buf) +{ + char *buffer; + int i,j,size; + int psn = 0; + int outpsn = 0; + short val; + + // (1) Calculate # bytes to read & build a buffer to hold it + + size = hdl->frame_size * frames; + buffer = (char *)calloc(1,size); + if( buffer != NULL ) + { + // (2) Read in buffer + + size = (int)fread(buffer,1,size,hdl->fp); + if( size > 0 ) + { + // (3) Now convert the input value into a float + // Calculate how many frames we have + + frames = size / hdl->frame_size; + + // (3a) Move FWD to 'data' + 3 bytes to start of data + + psn = wave_find_data(0,size,buffer); + + // (4) Now read frames + + for( i=0; ichannels; j++ ) + { + val = 0xff & (0xff & buffer[psn++]); // Low order first + val = val + ((0xff & buffer[psn++])<<8); // High order + + // Convert to float + + frame_buf[outpsn++] = (float)val/32768.0; + } + } + } + else + frames = 0; + + // Free the read buffer + + free( buffer ); + } + else + frames = 0; + + return( frames ); +} + +/***************************************************************************** +* +* int wave_frame_fwrite( WAVE_HDL *h,int frames,float *frame_buf) +* +* INPUT: h Handle structure +* frames Write this many frames +* frame_buf From here +* +* OUTPUT: Write data as frames, little endian -32768 to 32767 -> -1.0 to 1.0 float +* Return # Frames written +* +******************************************************************************/ + +int wave_frame_fwrite( WAVE_HDL *hdl,int frames,float *frame_buf) +{ + char *buffer; + int i,j,size; + int psn = 0; + int outpsn = 0; + short val; + + // (1) Calculate # bytes to write & build a buffer to hold it + + size = hdl->frame_size * frames; + buffer = (char *)calloc(1,size); + if( buffer != NULL ) + { + // (2) Write the input floats to this buffer + // After conversion to +/- 32768 + + for( i=0; ichannels; j++ ) + { + val = (short)(32768.0 * frame_buf[psn++]); + + buffer[outpsn++] = (char)(val & 0xff); + buffer[outpsn++] = (char)((val>>8) & 0xff); + } + } + + // (3) Now write this output to the buffer + // Calculate # frames written + + size = (int)fwrite(buffer,1,size,hdl->fp); + frames = size / hdl->frame_size; + + // Free the read buffer + + free( buffer ); + } + else + frames = 0; + + return( frames ); +} + + +#pragma mark -- Internal API -- + +/***************************************************************************** +* +* WAVE_HDL *wave_open_read( char *name) - Open wave file +* +* INPUT: h - Open wave file +* +* OUTPUT: Handle to wave file filled out with internal data +* +******************************************************************************/ + +static WAVE_HDL *wave_open_read( FILE *h ) +{ + int size; + WAVE_HDL *hdl; + + // (1) Create wave file handle + + hdl = (WAVE_HDL *)calloc(1,sizeof(WAVE_HDL)); + if( hdl != NULL ) + { + // (2) Read in the file chunks + + size = (int)fread(hdl->hdr.buffer,1,WAVE_FILE_HDR_DATA,h); // Header data + if( size == WAVE_FILE_HDR_DATA ) + { + // Get size of file, if start == RIFF then next is little + // endian data size + if( hdl->hdr.buffer[0] == 'R' && + hdl->hdr.buffer[1] == 'I' && + hdl->hdr.buffer[2] == 'F' && + hdl->hdr.buffer[3] == 'F' ) + { + // Get the size as little endian + hdl->frames = 0; + hdl->frames += (0xff & hdl->hdr.buffer[7])<<24; + hdl->frames += (0xff & hdl->hdr.buffer[6])<<16; + hdl->frames += (0xff & hdl->hdr.buffer[5])<<8; + hdl->frames += (0xff & hdl->hdr.buffer[4]); + } + + size = (int)fread(hdl->fmt.buffer,1,WAVE_FMT_DATA,h); // Format header chunk + if( size == WAVE_FMT_DATA ) + { + size = (int)fread(hdl->data.buffer,1,WAVE_DATA_DATA,h ); // Data header + if( size == WAVE_DATA_DATA ) + { + // At this point the header points to the data area + // So fill in the handle with the needed data + + hdl->fp = h; // File handle + + // # Channels = Byte 10 of format data buffer + + hdl->channels = 0xff & hdl->fmt.buffer[10]; + + // Rate = bytes 12 & 13 of fmt block in little endian format + + hdl->rate = 0xff & hdl->fmt.buffer[13]; + hdl->rate = hdl->rate<<8; // Move to top byte + hdl->rate += 0xff & hdl->fmt.buffer[12]; // Bottom byte + + // Bits/sample = byte 22 of fmt data buffer + // then divide this by 8 to and mul by channels = bytes/frame + + hdl->frame_size = 0xff & hdl->fmt.buffer[22]; + hdl->frame_size = (hdl->frame_size * hdl->channels)/8; + + // # Frames First get data size (long value 4-7 in data hdr) + // In little endian order + // Then divide this by frame size + + hdl->frames /= hdl->frame_size; + } + } + } + } + + return( hdl ); +} + +/***************************************************************************** +* +* WAVE_HDL *wave_open_write( char *name) +* +* INPUT: h Open wave file +* proto Prototype file (copy this file) +* +* OUTPUT: Handle to wave file handle filled out with internal data +* And header data written to output file +* +******************************************************************************/ + +static WAVE_HDL *wave_open_write( FILE *fp, WAVE_HDL *proto ) +{ + int size; + WAVE_HDL *hdl; + + // (1) Create wave file handle + + hdl = (WAVE_HDL *)calloc(1,sizeof(WAVE_HDL)); + if( hdl != NULL ) + { + // (2) Copy the prototype data into this handle + + hdl->channels = proto->channels; + hdl->rate = proto->rate; + hdl->frames = proto->frames; + hdl->frame_size = proto->frame_size; + hdl->fp = fp; + hdl->write_access = 1; + + // (3) Copy the header blocks + + memcpy(hdl->hdr.buffer,proto->hdr.buffer,WAVE_FILE_HDR_DATA); + memcpy(hdl->fmt.buffer,proto->fmt.buffer,WAVE_FMT_DATA); + memcpy(hdl->data.buffer,proto->data.buffer,WAVE_DATA_DATA); + + // (4) Write the header data to the output file + + size = (int)fwrite(hdl->hdr.buffer,1,WAVE_FILE_HDR_DATA,fp); + size = (int)fwrite(hdl->fmt.buffer,1,WAVE_FMT_DATA,fp); + size = (int)fwrite(hdl->data.buffer,1,WAVE_DATA_DATA,fp); + } + + return( hdl ); +} + +/***************************************************************************** +* +* int wave_find_data(int start,char *buffer) - Find start of data +* +* INPUT: start - Psn to start search +* size - # bytes in buffer +* buffer - Data buffer +* +* OUTPUT: Find 'data' marker and move to start of data +* - 1 if not found +* +* DATA Chunk +* data - 4 Bytes char +* size - 4 bytes +* +******************************************************************************/ + +static int wave_find_data(int start,int size,char *buffer) +{ + int rtnval = -1; + int i; + int step = 0; + + // Search for data + + for( i=start;i + +#ifndef WAVERDR_H +#define WAVERDR_H + +#define WAVE_FILE_HDR_DATA 12 // Length in bytes +typedef struct { + int length; + unsigned char buffer[WAVE_FILE_HDR_DATA]; // Raw data + } WAVE_FILE_HDR; + +#define WAVE_FMT_DATA 24 // Length in bytes +typedef struct { + int channels; // # Channels/frame + int rate; // Frames/sec + int channel_bits; // Bits/channel + + unsigned char buffer[WAVE_FMT_DATA]; + } WAVE_FMT; + +#define WAVE_DATA_DATA 8 // Length in bytes +typedef struct { + long datasize; // # Bytes in data + unsigned char buffer[WAVE_DATA_DATA]; + } WAVE_DATA; + +typedef struct { + // Wave handle used for file access to WAVE data file + + WAVE_FILE_HDR hdr; // Header data from file + WAVE_FMT fmt; // Format data from file + WAVE_DATA data; // Data header from file + + int channels; // # Channels/frame + int rate; // Rate in frames/sec + unsigned long frames;// # Frames of data following + int frame_size; // # bytes/frame + + int write_access;// TRUE on write + FILE *fp; // File handle + } WAVE_HDL; + +// **** +// API +// **** + +WAVE_HDL *wave_open( char *name,char *mode,WAVE_HDL *proto); +void wave_close( WAVE_HDL *h ); +int wave_frame_fread( WAVE_HDL *h,int frames,float *frame_buf); +int wave_frame_fwrite( WAVE_HDL *h,int frames,float *frame_buf); + +#endif ADDED Shows/mariseillaise.json Index: Shows/mariseillaise.json ================================================================== --- Shows/mariseillaise.json +++ Shows/mariseillaise.json @@ -0,0 +1,55 @@ +{ + "show" : "La Mariseillaise", + "music" : "marseillaise.mp3", + "time" : "1:03", + "nodes" : "8", + "program" : [ + { "node" : "1", "ch" : "1" , "delay" : "1631" }, + { "node" : "2", "ch" : "1" , "delay" : "2149" }, + { "node" : "3", "ch" : "1" , "delay" : "2718" }, + { "node" : "4", "ch" : "1" , "delay" : "3685" }, + { "node" : "5", "ch" : "1" , "delay" : "4159" }, + { "node" : "6", "ch" : "1" , "delay" : "5220" }, + { "node" : "7", "ch" : "1" , "delay" : "5853" }, + { "node" : "8", "ch" : "1" , "delay" : "6637" }, + { "node" : "1", "ch" : "2" , "delay" : "6835" }, + { "node" : "2", "ch" : "2" , "delay" : "7052" }, + { "node" : "3", "ch" : "2" , "delay" : "7875" }, + { "node" : "4", "ch" : "2" , "delay" : "8131" }, + { "node" : "5", "ch" : "2" , "delay" : "8922" }, + { "node" : "6", "ch" : "2" , "delay" : "11301" }, + { "node" : "7", "ch" : "2" , "delay" : "11685" }, + { "node" : "8", "ch" : "2" , "delay" : "12218" }, + { "node" : "1", "ch" : "3" , "delay" : "13253" }, + { "node" : "2", "ch" : "3" , "delay" : "15458" }, + { "node" : "3", "ch" : "3" , "delay" : "15825" }, + { "node" : "4", "ch" : "3" , "delay" : "16337" }, + { "node" : "5", "ch" : "3" , "delay" : "17243" }, + { "node" : "6", "ch" : "3" , "delay" : "19848" }, + { "node" : "7", "ch" : "3" , "delay" : "24543" }, + { "node" : "8", "ch" : "3" , "delay" : "27134" }, + { "node" : "1", "ch" : "4" , "delay" : "27928" }, + { "node" : "2", "ch" : "4" , "delay" : "30049" }, + { "node" : "3", "ch" : "4" , "delay" : "33568" }, + { "node" : "4", "ch" : "4" , "delay" : "35894" }, + { "node" : "5", "ch" : "4" , "delay" : "41001" }, + { "node" : "6", "ch" : "4" , "delay" : "42049" }, + { "node" : "7", "ch" : "4" , "delay" : "43071" }, + { "node" : "8", "ch" : "4" , "delay" : "43921" }, + { "node" : "1", "ch" : "5" , "delay" : "45614" }, + { "node" : "2", "ch" : "5" , "delay" : "46101" }, + { "node" : "3", "ch" : "5" , "delay" : "47088" }, + { "node" : "4", "ch" : "5" , "delay" : "47796" }, + { "node" : "5", "ch" : "5" , "delay" : "49622" }, + { "node" : "6", "ch" : "5" , "delay" : "51017" }, + { "node" : "7", "ch" : "5" , "delay" : "52756" }, + { "node" : "8", "ch" : "5" , "delay" : "53613" }, + { "node" : "2", "ch" : "6" , "delay" : "54267" }, + { "node" : "4", "ch" : "6" , "delay" : "54989" }, + { "node" : "6", "ch" : "6" , "delay" : "56118" }, + { "node" : "8", "ch" : "6" , "delay" : "57603" }, + { "node" : "3", "ch" : "6" , "delay" : "59056" }, + { "node" : "5", "ch" : "6" , "delay" : "60643" }, + { "node" : "7", "ch" : "6" , "delay" : "61562" } + ] +} ADDED Shows/mariseillaise4.json Index: Shows/mariseillaise4.json ================================================================== --- Shows/mariseillaise4.json +++ Shows/mariseillaise4.json @@ -0,0 +1,29 @@ +{ + "show" : "La Mariseillaise4", + "music" : "marseillaise.mp3", + "time" : "1:03", + "nodes" : "4", + "program" : [ + { "node" : "1", "ch" : "1" , "delay" : "2480" }, + { "node" : "1", "ch" : "2" , "delay" : "3563" }, + { "node" : "1", "ch" : "3" , "delay" : "6242" }, + { "node" : "1", "ch" : "4" , "delay" : "13315" }, + { "node" : "1", "ch" : "5" , "delay" : "17122" }, + { "node" : "1", "ch" : "6" , "delay" : "33305" }, + { "node" : "2", "ch" : "1" , "delay" : "33391" }, + { "node" : "2", "ch" : "2" , "delay" : "35509" }, + { "node" : "2", "ch" : "3" , "delay" : "42111" }, + { "node" : "2", "ch" : "4" , "delay" : "42660" }, + { "node" : "2", "ch" : "5" , "delay" : "43116" }, + { "node" : "2", "ch" : "6" , "delay" : "45770" }, + { "node" : "3", "ch" : "1" , "delay" : "47410" }, + { "node" : "3", "ch" : "2" , "delay" : "51580" }, + { "node" : "3", "ch" : "3" , "delay" : "53654" }, + { "node" : "3", "ch" : "4" , "delay" : "53758" }, + { "node" : "3", "ch" : "5" , "delay" : "57373" }, + { "node" : "3", "ch" : "6" , "delay" : "57889" }, + { "node" : "4", "ch" : "1" , "delay" : "57936" }, + { "node" : "4", "ch" : "2" , "delay" : "60703" }, + { "node" : "4", "ch" : "3" , "delay" : "61247" } + ] +} ADDED Shows/mariseillaise6.json Index: Shows/mariseillaise6.json ================================================================== --- Shows/mariseillaise6.json +++ Shows/mariseillaise6.json @@ -0,0 +1,39 @@ +{ + "show" : "La Mariseillaise", + "music" : "marseillaise.mp3", + "time" : "1:03", + "nodes" : "6", + "program" : [ + { "node" : "1", "ch" : "1" , "delay" : "2480" }, + { "node" : "2", "ch" : "1" , "delay" : "3563" }, + { "node" : "3", "ch" : "1" , "delay" : "6242" }, + { "node" : "4", "ch" : "1" , "delay" : "13315" }, + { "node" : "5", "ch" : "1" , "delay" : "16053" }, + { "node" : "6", "ch" : "1" , "delay" : "16578" }, + { "node" : "1", "ch" : "2" , "delay" : "17122" }, + { "node" : "2", "ch" : "2" , "delay" : "33305" }, + { "node" : "3", "ch" : "2" , "delay" : "33391" }, + { "node" : "4", "ch" : "2" , "delay" : "35509" }, + { "node" : "5", "ch" : "2" , "delay" : "37697" }, + { "node" : "6", "ch" : "2" , "delay" : "42094" }, + { "node" : "1", "ch" : "3" , "delay" : "42111" }, + { "node" : "2", "ch" : "3" , "delay" : "42660" }, + { "node" : "3", "ch" : "3" , "delay" : "43116" }, + { "node" : "4", "ch" : "3" , "delay" : "45770" }, + { "node" : "5", "ch" : "3" , "delay" : "46843" }, + { "node" : "6", "ch" : "3" , "delay" : "47335" }, + { "node" : "1", "ch" : "4" , "delay" : "47410" }, + { "node" : "2", "ch" : "4" , "delay" : "51580" }, + { "node" : "3", "ch" : "4" , "delay" : "53654" }, + { "node" : "4", "ch" : "4" , "delay" : "53758" }, + { "node" : "5", "ch" : "4" , "delay" : "54743" }, + { "node" : "6", "ch" : "4" , "delay" : "55267" }, + { "node" : "1", "ch" : "5" , "delay" : "57373" }, + { "node" : "2", "ch" : "5" , "delay" : "57889" }, + { "node" : "3", "ch" : "5" , "delay" : "57936" }, + { "node" : "4", "ch" : "5" , "delay" : "57955" }, + { "node" : "5", "ch" : "5" , "delay" : "60148" }, + { "node" : "6", "ch" : "5" , "delay" : "60703" }, + { "node" : "2", "ch" : "6" , "delay" : "61247" } + ] +} ADDED Shows/mariseillaise8.json Index: Shows/mariseillaise8.json ================================================================== --- Shows/mariseillaise8.json +++ Shows/mariseillaise8.json @@ -0,0 +1,55 @@ +{ + "show" : "La Mariseillaise", + "music" : "marseillaise.mp3", + "time" : "1:03", + "nodes" : "8", + "program" : [ + { "node" : "1", "ch" : "1" , "delay" : "1631" }, + { "node" : "2", "ch" : "1" , "delay" : "2149" }, + { "node" : "3", "ch" : "1" , "delay" : "2718" }, + { "node" : "4", "ch" : "1" , "delay" : "3685" }, + { "node" : "5", "ch" : "1" , "delay" : "4159" }, + { "node" : "6", "ch" : "1" , "delay" : "5220" }, + { "node" : "7", "ch" : "1" , "delay" : "5853" }, + { "node" : "8", "ch" : "1" , "delay" : "6637" }, + { "node" : "1", "ch" : "2" , "delay" : "6835" }, + { "node" : "2", "ch" : "2" , "delay" : "7052" }, + { "node" : "3", "ch" : "2" , "delay" : "7875" }, + { "node" : "4", "ch" : "2" , "delay" : "8131" }, + { "node" : "5", "ch" : "2" , "delay" : "8922" }, + { "node" : "6", "ch" : "2" , "delay" : "11301" }, + { "node" : "7", "ch" : "2" , "delay" : "11685" }, + { "node" : "8", "ch" : "2" , "delay" : "12218" }, + { "node" : "1", "ch" : "3" , "delay" : "13253" }, + { "node" : "2", "ch" : "3" , "delay" : "15458" }, + { "node" : "3", "ch" : "3" , "delay" : "15825" }, + { "node" : "4", "ch" : "3" , "delay" : "16337" }, + { "node" : "5", "ch" : "3" , "delay" : "17243" }, + { "node" : "6", "ch" : "3" , "delay" : "19848" }, + { "node" : "7", "ch" : "3" , "delay" : "24543" }, + { "node" : "8", "ch" : "3" , "delay" : "27134" }, + { "node" : "1", "ch" : "4" , "delay" : "27928" }, + { "node" : "2", "ch" : "4" , "delay" : "30049" }, + { "node" : "3", "ch" : "4" , "delay" : "33568" }, + { "node" : "4", "ch" : "4" , "delay" : "35894" }, + { "node" : "5", "ch" : "4" , "delay" : "41001" }, + { "node" : "6", "ch" : "4" , "delay" : "42049" }, + { "node" : "7", "ch" : "4" , "delay" : "43071" }, + { "node" : "8", "ch" : "4" , "delay" : "43921" }, + { "node" : "1", "ch" : "5" , "delay" : "45614" }, + { "node" : "2", "ch" : "5" , "delay" : "46101" }, + { "node" : "3", "ch" : "5" , "delay" : "47088" }, + { "node" : "4", "ch" : "5" , "delay" : "47796" }, + { "node" : "5", "ch" : "5" , "delay" : "49622" }, + { "node" : "6", "ch" : "5" , "delay" : "51017" }, + { "node" : "7", "ch" : "5" , "delay" : "52756" }, + { "node" : "8", "ch" : "5" , "delay" : "53613" }, + { "node" : "2", "ch" : "6" , "delay" : "54267" }, + { "node" : "4", "ch" : "6" , "delay" : "54989" }, + { "node" : "6", "ch" : "6" , "delay" : "56118" }, + { "node" : "8", "ch" : "6" , "delay" : "57603" }, + { "node" : "3", "ch" : "6" , "delay" : "59056" }, + { "node" : "5", "ch" : "6" , "delay" : "60643" }, + { "node" : "7", "ch" : "6" , "delay" : "61562" } + ] +} ADDED Shows/marseillaise.mp3 Index: Shows/marseillaise.mp3 ================================================================== --- Shows/marseillaise.mp3 +++ Shows/marseillaise.mp3 cannot compute difference between binary files ADDED Shows/ode.json Index: Shows/ode.json ================================================================== --- Shows/ode.json +++ Shows/ode.json @@ -0,0 +1,52 @@ +{ + "show" : "Ode to Joy", + "music" : "odeToJoy.mp3", + "time" : "2:05", + "nodes" : "8", + "program" : [ + {"node" : "1" , "ch" : "1" , "delay" : "15601" }, + {"node" : "1" , "ch" : "2" , "delay" : "21242" }, + {"node" : "1" , "ch" : "3" , "delay" : "32817" }, + {"node" : "1" , "ch" : "4" , "delay" : "37265" }, + {"node" : "1" , "ch" : "5" , "delay" : "41681" }, + {"node" : "1" , "ch" : "6" , "delay" : "43487" }, + {"node" : "2" , "ch" : "1" , "delay" : "45324" }, + {"node" : "2" , "ch" : "2" , "delay" : "46577" }, + {"node" : "2" , "ch" : "3" , "delay" : "68111" }, + {"node" : "2" , "ch" : "4" , "delay" : "69472" }, + {"node" : "2" , "ch" : "5" , "delay" : "69795" }, + {"node" : "2" , "ch" : "6" , "delay" : "73039" }, + {"node" : "3" , "ch" : "1" , "delay" : "73144" }, + {"node" : "3" , "ch" : "2" , "delay" : "73244" }, + {"node" : "3" , "ch" : "3" , "delay" : "73397" }, + {"node" : "3" , "ch" : "4" , "delay" : "73505" }, + {"node" : "3" , "ch" : "5" , "delay" : "76256" }, + {"node" : "3" , "ch" : "6" , "delay" : "77167" }, + {"node" : "4" , "ch" : "1" , "delay" : "77703" }, + {"node" : "4" , "ch" : "2" , "delay" : "78028" }, + {"node" : "4" , "ch" : "3" , "delay" : "78919" }, + {"node" : "4" , "ch" : "4" , "delay" : "80824" }, + {"node" : "4" , "ch" : "5" , "delay" : "82145" }, + {"node" : "4" , "ch" : "6" , "delay" : "83365" }, + {"node" : "5" , "ch" : "1" , "delay" : "83513" }, + {"node" : "5" , "ch" : "2" , "delay" : "83642" }, + {"node" : "5" , "ch" : "3" , "delay" : "84379" }, + {"node" : "5" , "ch" : "4" , "delay" : "87552" }, + {"node" : "5" , "ch" : "5" , "delay" : "87874" }, + {"node" : "5" , "ch" : "6" , "delay" : "87984" }, + {"node" : "6" , "ch" : "1" , "delay" : "92100" }, + {"node" : "6" , "ch" : "2" , "delay" : "94440" }, + {"node" : "6" , "ch" : "3" , "delay" : "94649" }, + {"node" : "6" , "ch" : "4" , "delay" : "95228" }, + {"node" : "6" , "ch" : "5" , "delay" : "97954" }, + {"node" : "6" , "ch" : "6" , "delay" : "98414" }, + {"node" : "7" , "ch" : "1" , "delay" : "102450" }, + {"node" : "7" , "ch" : "2" , "delay" : "106127" }, + {"node" : "7" , "ch" : "3" , "delay" : "108798" }, + {"node" : "7" , "ch" : "4" , "delay" : "114409" }, + {"node" : "7" , "ch" : "5" , "delay" : "114589" }, + {"node" : "7" , "ch" : "6" , "delay" : "123734" }, + {"node" : "8" , "ch" : "1" , "delay" : "123847" }, + {"node" : "8" , "ch" : "2" , "delay" : "124217" } + ] +} ADDED Shows/odeToJoy.mp3 Index: Shows/odeToJoy.mp3 ================================================================== --- Shows/odeToJoy.mp3 +++ Shows/odeToJoy.mp3 cannot compute difference between binary files ADDED Shows/shows.json Index: Shows/shows.json ================================================================== --- Shows/shows.json +++ Shows/shows.json @@ -0,0 +1,36 @@ +{ + "shows" : [ + { "show" : "La Mariseillaise 4", + "file" : "mariseillaise4.json", + "nodes" : "4", + "time" : "1:02" + }, + + { "show" : "La Mariseillaise 6", + "file" : "mariseillaise6.json", + "nodes" : "6", + "time" : "1:02" + }, + + { "show" : "La Mariseillaise 8", + "file" : "mariseillaise8.json", + "nodes" : "8", + "time" : "1:02" + }, + + { + "show" : "Stars & Stripes Forever", + "file" : "ss_forever.json", + "nodes" : "10", + "time" : "3:38" + }, + + { + "show" : "Ode to Joy", + "file" : "ode.json", + "nodes" : "8", + "time" : "2:05" + } + + ] +} ADDED Shows/ss_forever.json Index: Shows/ss_forever.json ================================================================== --- Shows/ss_forever.json +++ Shows/ss_forever.json @@ -0,0 +1,68 @@ +{ + "show" : "Stars & Stripes Forever", + "music" : "stars_stripes_forever.mp3", + "time" : "3:38", + "nodes" : "10", + "program" : [ + { "node" : "1", "ch" : "1" , "delay" : "320" }, + { "node" : "2", "ch" : "1" , "delay" : "3960" }, + { "node" : "3", "ch" : "1" , "delay" : "6540" }, + { "node" : "4", "ch" : "1" , "delay" : "7480" }, + { "node" : "5", "ch" : "1" , "delay" : "8590" }, + { "node" : "6", "ch" : "1" , "delay" : "10020" }, + { "node" : "7", "ch" : "1" , "delay" : "11460" }, + { "node" : "8", "ch" : "1" , "delay" : "13240" }, + { "node" : "9", "ch" : "1" , "delay" : "14150" }, + { "node" : "10", "ch" : "1" , "delay" : "17890" }, + { "node" : "1", "ch" : "2" , "delay" : "18360" }, + { "node" : "2", "ch" : "2" , "delay" : "20510" }, + { "node" : "3", "ch" : "2" , "delay" : "22350" }, + { "node" : "4", "ch" : "2" , "delay" : "24250" }, + { "node" : "5", "ch" : "2" , "delay" : "28190" }, + { "node" : "6", "ch" : "2" , "delay" : "28940" }, + { "node" : "7", "ch" : "2" , "delay" : "39720" }, + { "node" : "8", "ch" : "2" , "delay" : "41170" }, + { "node" : "9", "ch" : "2" , "delay" : "42170" }, + { "node" : "10", "ch" : "2" , "delay" : "49420" }, + { "node" : "1", "ch" : "3" , "delay" : "51630" }, + { "node" : "2", "ch" : "3" , "delay" : "52380" }, + { "node" : "3", "ch" : "3" , "delay" : "52790" }, + { "node" : "4", "ch" : "3" , "delay" : "58140" }, + { "node" : "5", "ch" : "3" , "delay" : "59530" }, + { "node" : "6", "ch" : "3" , "delay" : "60300" }, + { "node" : "7", "ch" : "3" , "delay" : "63410" }, + { "node" : "8", "ch" : "3" , "delay" : "99450" }, + { "node" : "9", "ch" : "3" , "delay" : "100500" }, + { "node" : "10", "ch" : "3" , "delay" : "100850" }, + { "node" : "1", "ch" : "4" , "delay" : "103460" }, + { "node" : "2", "ch" : "4" , "delay" : "104980" }, + { "node" : "3", "ch" : "4" , "delay" : "105470" }, + { "node" : "4", "ch" : "4" , "delay" : "105950" }, + { "node" : "5", "ch" : "4" , "delay" : "113320" }, + { "node" : "6", "ch" : "4" , "delay" : "113790" }, + { "node" : "7", "ch" : "4" , "delay" : "114790" }, + { "node" : "8", "ch" : "4" , "delay" : "115760" }, + { "node" : "9", "ch" : "4" , "delay" : "116710" }, + { "node" : "10", "ch" : "4" , "delay" : "148900" }, + { "node" : "1", "ch" : "5" , "delay" : "149930" }, + { "node" : "2", "ch" : "5" , "delay" : "154160" }, + { "node" : "3", "ch" : "5" , "delay" : "154960" }, + { "node" : "4", "ch" : "5" , "delay" : "155400" }, + { "node" : "5", "ch" : "5" , "delay" : "159230" }, + { "node" : "6", "ch" : "5" , "delay" : "160990" }, + { "node" : "7", "ch" : "5" , "delay" : "161500" }, + { "node" : "8", "ch" : "5" , "delay" : "165420" }, + { "node" : "9", "ch" : "5" , "delay" : "169320" }, + { "node" : "10", "ch" : "5" , "delay" : "170790" }, + { "node" : "2", "ch" : "6" , "delay" : "171720" }, + { "node" : "4", "ch" : "6" , "delay" : "172660" }, + { "node" : "6", "ch" : "6" , "delay" : "174760" }, + { "node" : "8", "ch" : "6" , "delay" : "175230" }, + { "node" : "10", "ch" : "6" , "delay" : "175770" }, + { "node" : "3", "ch" : "6" , "delay" : "198830" }, + { "node" : "5", "ch" : "6" , "delay" : "199420" }, + { "node" : "7", "ch" : "6" , "delay" : "205310" }, + { "node" : "9", "ch" : "6" , "delay" : "214110" } + + ] +} ADDED Shows/stars_stripes_forever.mp3 Index: Shows/stars_stripes_forever.mp3 ================================================================== --- Shows/stars_stripes_forever.mp3 +++ Shows/stars_stripes_forever.mp3 cannot compute difference between binary files ADDED Site/Site/AppController.j Index: Site/Site/AppController.j ================================================================== --- Site/Site/AppController.j +++ Site/Site/AppController.j @@ -0,0 +1,390 @@ +/* + * AppController.j + * Site + * + * Created by Jim on 17/11/2010. + * Copyright Pandora Products 2010. All rights reserved. + * + * 21-Nov-2010 Got working with server (REST interaction) + * 1-Dec-2010 Use Cappuccino JSON parsing + * 12-Dec-2010 Moved AJAX into util object + * 14-Dec-2010 Get URI back to host automatically + * data input is just the query. + * 21-Dec-2020 Set up windows with a background +*/ + +@import +@import "myAppUtils.j" + +@implementation AppController : CPObject +{ + // Login operations & window + CPWindow loginWindow; // Used for login + @outlet loginChal; // Login challenge value + @outlet loginResp; // Login response window + + // Main window buttons + CPWindow theWindow; //this "outlet" is connected automatically by the Cib + @outlet mainbDebug; // Main window debug button + @outlet mainbConsole; // Main window console button + @outlet mainbRun; // Main window show button + @outlet mainbLogout; // Logout button + @outlet loginReady; // Ready status marker + CPString lcnURI; // Our location (get when loading) + + myAppUtils Utils; // Utility function object + + CPWindow debugWindow; // Debug operation window + @outlet debugCmd; // Debug Commad input slot + @outlet debugckPost; // Post Checkbox + @outlet debugOutput; // Debug Output slot + + // Console Window operations and controls + CPWindow consoleWindow; // Console operation window + + // Run Window operations and controls + CPWindow runWindow; // Run operation window + +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. + + // var cib = [[CPCib alloc] initWithContentsOfURL:[[CPBundle mainBundle] pathForResource:@"MainMenu.cib"]]; + // [cib instantiateCibWithExternalNameTable:[CPDictionary dictionaryWithObject:self forKey:CPCibOwner]]; +} + +- (void)awakeFromCib +{ + var msg; + var path; + var content; + + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullBridge:YES]; + + [CPMenu setMenuBarVisible:NO]; + + // Create our utility object + + Utils = [[myAppUtils alloc] init]; + + // Create the location for further queries. Host + /rest/ + + lcnURI = window.location.protocol + "//" + window.location.hostname + ":" + + window.location.port + "/rest/"; + + // Halt before run. + + debugger; + + // Disable buttons before run + + [mainbDebug setEnabled:false]; + [mainbConsole setEnabled:false]; + [mainbRun setEnabled:false]; + [mainbLogout setEnabled:false]; + + // Issue a challenge/get response and then show login window + // Note: Logout first... + + path = lcnURI + "admin/login/logout"; + [Utils getData:path PostState:true DataString:"" ]; + + path = lcnURI + "admin/login/request"; + if( [Utils getData:path PostState:false DataString:"" ] ) + { + msg = [Utils getParse ] + [loginChal setStringValue:msg.CHAL ]; + } + + // Set up the windows with a background + + content = [theWindow contentView ]; + [content setBackgroundColor:[CPColor blueColor]]; + + content = [loginWindow contentView ]; + [content setBackgroundColor:[CPColor yellowColor]]; + + content = [debugWindow contentView ]; + [content setBackgroundColor:[CPColor orangeColor]]; + + content = [consoleWindow contentView ]; + [content setBackgroundColor:[CPColor greenColor]]; + + content = [runWindow contentView ]; + [content setBackgroundColor:[CPColor redColor]]; + +} + +//------------------------------------------------------------------- +/* + Login window support +*/ +//------------------------------------------------------------------- + +//----------------------------------------------------------------------- +// +// Login send button - Press to send off response +// +//----------------------------------------------------------------------- + +- (@action)loginSend:(id)sender +{ + var path; + var msg; + + // Handle SEND button get string from login regponse + + path = lcnURI + "admin/login/response/" + [loginResp stringValue]; + if( [Utils getData:path PostState:true DataString:""] ) + { + msg = [Utils getParse]; + if( msg.LOGIN == "OK" ) + { + // Make Login window disappear + + [loginWindow orderOut:sender]; + + // Show ready + + [loginReady setStringValue:@"-READY-"]; + + // We are logged in + // Enable buttons + + [mainbDebug setEnabled:true]; + [mainbConsole setEnabled:true]; + [mainbRun setEnabled:true]; + [mainbLogout setEnabled:true]; + + } + else + { + [loginResp setStringValue:"*FAIL*"]; + } + } +} + +//----------------------------------------------------------------------- +// +// Logout send button - Press to send logout command +// +//----------------------------------------------------------------------- + +- (@action)logoutButton:(id)sender +{ + var path; + var msg; + + // Hide all the other windows + + [debugWindow orderOut:sender]; + [consoleWindow orderOut:sender]; + + // Handle SEND button get string from login regponse + + path = lcnURI + "admin/login/logout"; + if( [Utils getData:path PostState:true DataString:""] ) + { + msg = [Utils getResponse ]; + msg = [Utils getParse]; + if( msg.LOGOUT == "OK" ) + { + // Disable all buttons + + [mainbDebug setEnabled:false]; + [mainbConsole setEnabled:false]; + [mainbRun setEnabled:false]; + [mainbLogout setEnabled:false]; + + // & Show not ready + [loginReady setStringValue:@""]; + + // Make login window appear + + [loginWindow orderFront:sender]; + + // & Update login criteria + + path = lcnURI + "admin/login/request" + if( [Utils getData:path PostState:false DataString:"" ] ) + { + msg = [Utils getParse ] + [loginChal setStringValue:msg.CHAL ]; + [loginResp setStringValue:""]; + } + + } + } +} + +//------------------------------------------------------------------- +/* + Debug window support +*/ +//------------------------------------------------------------------- + +//------------------------------------------------------------------- +/* + Hitting Debug button +*/ +//------------------------------------------------------------------- + +- (@action)debugShow:(id)sender +{ + // Disable the buttons and enable the debug window + + [mainbDebug setEnabled:false]; + [mainbConsole setEnabled:false]; + [mainbRun setEnabled:false]; + + [debugWindow orderFront:sender]; +} + +//------------------------------------------------------------------- +/* + Hitting Debug close window +*/ +//------------------------------------------------------------------- + +- (@action)debugDone:(id)sender +{ + // Clear debug window + + [debugCmd setStringValue:@""]; + [debugOutput setStringValue:@""]; + + // Remove the debug window + + [debugWindow orderOut:sender]; + + // reenable buttons + [mainbDebug setEnabled:true]; + [mainbConsole setEnabled:true]; + [mainbRun setEnabled:true]; +} + +//------------------------------------------------------------------- +/* + Hitting Debug send command +*/ +//------------------------------------------------------------------- + +- (@action)debugSend:(id)sender +{ + var path; + var post_state; + var data; + + // (1) Build a path with the base path and the command + + path = lcnURI + [debugCmd stringValue]; + + // (2) Get or POST + + if( [debugckPost state] == CPOffState ) + post_state = false; + else + post_state = true; + + // (3) Send and get data + + if( [Utils getData:path PostState:post_state DataString:@""] ) + { + data = [Utils getResponse]; + + [debugOutput setStringValue:data]; + } +} + +//------------------------------------------------------------------- +/* + Console window support +*/ +//------------------------------------------------------------------- + +//------------------------------------------------------------------- +/* + Hitting Console button +*/ +//------------------------------------------------------------------- + +- (@action)consoleShow:(id)sender +{ + // Disable the buttons and enable the debug window + + [mainbDebug setEnabled:false]; + [mainbConsole setEnabled:false]; + [mainbRun setEnabled:false]; + + [consoleWindow orderFront:sender]; +} + +//------------------------------------------------------------------- +/* + Hitting Console close window +*/ +//------------------------------------------------------------------- + +- (@action)consoleDone:(id)sender +{ + // Remove the Console window + + [consoleWindow orderOut:sender]; + + // reenable buttons + [mainbDebug setEnabled:true]; + [mainbConsole setEnabled:true]; + [mainbRun setEnabled:true]; +} + +//------------------------------------------------------------------- +/* + Run window support +*/ +//------------------------------------------------------------------- + +//------------------------------------------------------------------- +/* + Hitting Run button +*/ +//------------------------------------------------------------------- + +- (@action)runShow:(id)sender +{ + // Disable the buttons and enable the Run window + + [mainbDebug setEnabled:false]; + [mainbConsole setEnabled:false]; + [mainbRun setEnabled:false]; + + [runWindow orderFront:sender]; +} + +//------------------------------------------------------------------- +/* + Hitting Run close window +*/ +//------------------------------------------------------------------- + +- (@action)runDone:(id)sender +{ + // Remove the Run window + + [runWindow orderOut:sender]; + + // reenable buttons + [mainbDebug setEnabled:true]; + [mainbConsole setEnabled:true]; + [mainbRun setEnabled:true]; + +} + + +@end ADDED Site/Site/Frameworks/AppKit/Browser.environment/AppKit.sj Index: Site/Site/Frameworks/AppKit/Browser.environment/AppKit.sj ================================================================== --- Site/Site/Frameworks/AppKit/Browser.environment/AppKit.sj +++ Site/Site/Frameworks/AppKit/Browser.environment/AppKit.sj @@ -0,0 +1,34692 @@ +@STATIC;1.0;p;15;_CPCornerView.jt;1340;@STATIC;1.0;i;8;CPView.jt;1309; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPCornerView"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("layoutSubviews"),function(_3,_4){ +with(_3){ +objj_msgSend(_3,"setBackgroundColor:",objj_msgSend(_3,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("_init"),function(_5,_6){ +with(_5){ +objj_msgSend(_5,"setBackgroundColor:",objj_msgSend(_5,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPCornerView").super_class},"initWithFrame:",_9); +if(_7){ +objj_msgSend(_7,"_init"); +} +return _7; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("_CPCornerView").super_class},"initWithCoder:",_c); +if(_a){ +objj_msgSend(_a,"_init"); +} +return _a; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_d,_e){ +with(_d){ +return "cornerview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_f,_10){ +with(_f){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null")],["background-color"]); +} +})]); +p;18;_CPDisplayServer.jt;1144;@STATIC;1.0;t;1125; +var _1=[],_2={},_3=[],_4={},_5=objj_msgSend(CPRunLoop,"mainRunLoop"); +_CPDisplayServerAddDisplayObject=function(_6){ +var _7=objj_msgSend(_6,"UID"); +if(typeof _2[_7]!=="undefined"){ +return; +} +var _8=_1.length; +_2[_7]=_8; +_1[_8]=_6; +}; +_CPDisplayServerAddLayoutObject=function(_9){ +var _a=objj_msgSend(_9,"UID"); +if(typeof _4[_a]!=="undefined"){ +return; +} +var _b=_3.length; +_4[_a]=_b; +_3[_b]=_9; +}; +var _c=objj_allocateClassPair(CPObject,"_CPDisplayServer"),_d=_c.isa; +objj_registerClassPair(_c); +class_addMethods(_d,[new objj_method(sel_getUid("run"),function(_e,_f){ +with(_e){ +while(_3.length||_1.length){ +var _10=0; +for(;_10<_3.length;++_10){ +var _11=_3[_10]; +delete _4[objj_msgSend(_11,"UID")]; +objj_msgSend(_11,"layoutIfNeeded"); +} +_3=[]; +_4={}; +_10=0; +for(;_10<_1.length;++_10){ +if(_3.length){ +break; +} +var _11=_1[_10]; +delete _2[objj_msgSend(_11,"UID")]; +objj_msgSend(_11,"displayIfNeeded"); +} +if(_10===_1.length){ +_1=[]; +_2={}; +}else{ +_1.splice(0,_10); +} +} +objj_msgSend(_5,"performSelector:target:argument:order:modes:",sel_getUid("run"),_e,nil,0,[CPDefaultRunLoopMode]); +} +})]); +objj_msgSend(_CPDisplayServer,"run"); +p;21;_CPImageAndTextView.jt;13539;@STATIC;1.0;I;21;Foundation/CPString.ji;9;CPColor.ji;8;CPFont.ji;9;CPImage.ji;8;CPView.ji;11;CPControl.jt;13427; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPControl.j",YES); +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5,_7=1<<6,_8=1<<7,_9=1<<8,_a=1<<9,_b=1<<10; +var _c=objj_allocateClassPair(CPView,"_CPImageAndTextView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_alignment"),new objj_ivar("_verticalAlignment"),new objj_ivar("_lineBreakMode"),new objj_ivar("_textColor"),new objj_ivar("_font"),new objj_ivar("_textShadowColor"),new objj_ivar("_textShadowOffset"),new objj_ivar("_imagePosition"),new objj_ivar("_imageScaling"),new objj_ivar("_imageOffset"),new objj_ivar("_shouldDimImage"),new objj_ivar("_image"),new objj_ivar("_text"),new objj_ivar("_textSize"),new objj_ivar("_flags"),new objj_ivar("_DOMImageElement"),new objj_ivar("_DOMTextElement"),new objj_ivar("_DOMTextShadowElement")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:control:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPImageAndTextView").super_class},"initWithFrame:",_10); +if(_e){ +_textShadowOffset={width:0,height:0}; +objj_msgSend(_e,"setVerticalAlignment:",CPTopVerticalTextAlignment); +if(_11){ +objj_msgSend(_e,"setLineBreakMode:",objj_msgSend(_11,"lineBreakMode")); +objj_msgSend(_e,"setTextColor:",objj_msgSend(_11,"textColor")); +objj_msgSend(_e,"setAlignment:",objj_msgSend(_11,"alignment")); +objj_msgSend(_e,"setVerticalAlignment:",objj_msgSend(_11,"verticalAlignment")); +objj_msgSend(_e,"setFont:",objj_msgSend(_11,"font")); +objj_msgSend(_e,"setImagePosition:",objj_msgSend(_11,"imagePosition")); +objj_msgSend(_e,"setImageScaling:",objj_msgSend(_11,"imageScaling")); +objj_msgSend(_e,"setImageOffset:",objj_msgSend(_11,"imageOffset")); +}else{ +objj_msgSend(_e,"setLineBreakMode:",CPLineBreakByClipping); +objj_msgSend(_e,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_e,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",12)); +objj_msgSend(_e,"setImagePosition:",CPNoImage); +objj_msgSend(_e,"setImageScaling:",CPScaleNone); +} +_textSize=NULL; +} +return _e; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_12,_13,_14){ +with(_12){ +return objj_msgSend(_12,"initWithFrame:control:",_14,nil); +} +}),new objj_method(sel_getUid("setAlignment:"),function(_15,_16,_17){ +with(_15){ +if(_alignment===_17){ +return; +} +_alignment=_17; +switch(_alignment){ +case CPLeftTextAlignment: +_DOMElement.style.textAlign="left"; +break; +case CPRightTextAlignment: +_DOMElement.style.textAlign="right"; +break; +case CPCenterTextAlignment: +_DOMElement.style.textAlign="center"; +break; +case CPJustifiedTextAlignment: +_DOMElement.style.textAlign="justify"; +break; +case CPNaturalTextAlignment: +_DOMElement.style.textAlign=""; +break; +} +} +}),new objj_method(sel_getUid("alignment"),function(_18,_19){ +with(_18){ +return _alignment; +} +}),new objj_method(sel_getUid("setVerticalAlignment:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_verticalAlignment===_1c){ +return; +} +_verticalAlignment=_1c; +_flags|=_5; +objj_msgSend(_1a,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("verticalAlignment"),function(_1d,_1e){ +with(_1d){ +return _verticalAlignment; +} +}),new objj_method(sel_getUid("setLineBreakMode:"),function(_1f,_20,_21){ +with(_1f){ +if(_lineBreakMode===_21){ +return; +} +_lineBreakMode=_21; +_flags|=_6; +objj_msgSend(_1f,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("lineBreakMode"),function(_22,_23){ +with(_22){ +return _lineBreakMode; +} +}),new objj_method(sel_getUid("setImagePosition:"),function(_24,_25,_26){ +with(_24){ +if(_imagePosition==_26){ +return; +} +if(_imagePosition==CPNoImage){ +_flags|=_2; +} +_imagePosition=_26; +_flags|=_a; +objj_msgSend(_24,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imagePosition"),function(_27,_28){ +with(_27){ +return _imagePosition; +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_29,_2a,_2b){ +with(_29){ +if(_imageScaling==_2b){ +return; +} +_imageScaling=_2b; +_flags|=_b; +objj_msgSend(_29,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imageScaling"),function(_2c,_2d){ +with(_2c){ +return _imageScaling; +} +}),new objj_method(sel_getUid("setDimsImage:"),function(_2e,_2f,_30){ +with(_2e){ +_30=!!_30; +if(_shouldDimImage!==_30){ +_shouldDimImage=_30; +objj_msgSend(_2e,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("setTextColor:"),function(_31,_32,_33){ +with(_31){ +if(_textColor===_33){ +return; +} +_textColor=_33; +_DOMElement.style.color=objj_msgSend(_textColor,"cssString"); +} +}),new objj_method(sel_getUid("textColor"),function(_34,_35){ +with(_34){ +return _textColor; +} +}),new objj_method(sel_getUid("setFont:"),function(_36,_37,_38){ +with(_36){ +if(_font===_38){ +return; +} +_font=_38; +_flags|=_8; +_textSize=NULL; +objj_msgSend(_36,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("font"),function(_39,_3a){ +with(_39){ +return _font; +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_textShadowColor===_3d){ +return; +} +_textShadowColor=_3d; +_flags|=_9; +objj_msgSend(_3b,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_3e,_3f){ +with(_3e){ +return _textShadowColor; +} +}),new objj_method(sel_getUid("setTextShadowOffset:"),function(_40,_41,_42){ +with(_40){ +if((_textShadowOffset.width==_42.width&&_textShadowOffset.height==_42.height)){ +return; +} +_textShadowOffset={width:_42.width,height:_42.height}; +objj_msgSend(_40,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("textShadowOffset"),function(_43,_44){ +with(_43){ +return _textShadowOffset; +} +}),new objj_method(sel_getUid("setImage:"),function(_45,_46,_47){ +with(_45){ +if(_image==_47){ +return; +} +if(objj_msgSend(_image,"delegate")===_45){ +objj_msgSend(_image,"setDelegate:",nil); +} +_image=_47; +_flags|=_2; +if(objj_msgSend(_image,"loadStatus")!==CPImageLoadStatusCompleted){ +objj_msgSend(_image,"setDelegate:",_45); +} +objj_msgSend(_45,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setImageOffset:"),function(_48,_49,_4a){ +with(_48){ +if(_imageOffset===_4a){ +return; +} +_imageOffset=_4a; +objj_msgSend(_48,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imageOffset"),function(_4b,_4c){ +with(_4b){ +return _imageOffset; +} +}),new objj_method(sel_getUid("imageDidLoad:"),function(_4d,_4e,_4f){ +with(_4d){ +if(_4f===_image){ +_flags|=_2; +objj_msgSend(_4d,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("image"),function(_50,_51){ +with(_50){ +return _image; +} +}),new objj_method(sel_getUid("setText:"),function(_52,_53,_54){ +with(_52){ +if(_text===_54){ +return; +} +_text=_54; +_flags|=_3; +_textSize=NULL; +objj_msgSend(_52,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("text"),function(_55,_56){ +with(_55){ +return _text; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_57,_58){ +with(_57){ +var _59=_imagePosition!==CPImageOnly&&(objj_msgSend(_text,"length")>0),_5a=!!_DOMTextElement; +if(_59!==_5a){ +if(_5a){ +_DOMElement.removeChild(_DOMTextElement); +_DOMTextElement=NULL; +_5a=NO; +}else{ +_DOMTextElement=document.createElement("div"); +var _5b=_DOMTextElement.style; +_5b.position="absolute"; +_5b.whiteSpace="pre"; +_5b.zIndex=200; +_5b.overflow="hidden"; +_DOMElement.appendChild(_DOMTextElement); +_5a=YES; +_flags|=_3|_8|_6; +} +} +var _5b=_5a?_DOMTextElement.style:nil; +var _5c=_5a&&!!_textShadowColor,_5d=!!_DOMTextShadowElement; +if(_5c!==_5d){ +if(_5d){ +_DOMElement.removeChild(_DOMTextShadowElement); +_DOMTextShadowElement=NULL; +_5d=NO; +}else{ +_DOMTextShadowElement=document.createElement("div"); +var _5e=_DOMTextShadowElement.style; +_5e.font=objj_msgSend(_font?_font:objj_msgSend(CPFont,"systemFontOfSize:",12),"cssString"); +_5e.position="absolute"; +_5e.whiteSpace=_5b.whiteSpace; +_5e.wordWrap=_5b.wordWrap; +_5e.color=objj_msgSend(_textShadowColor,"cssString"); +_5e.zIndex=150; +_5e.textOverflow=_5b.textOverflow; +if(document.attachEvent){ +_5e.overflow=_5b.overflow; +}else{ +_5e.overflowX=_5b.overflowX; +_5e.overflowY=_5b.overflowY; +} +_DOMElement.appendChild(_DOMTextShadowElement); +_5d=YES; +_flags|=_3; +} +} +var _5e=_5d?_DOMTextShadowElement.style:nil; +if(_5a){ +if(_flags&_3){ +if(CPFeatureIsCompatible(CPJavascriptInnerTextFeature)){ +_DOMTextElement.innerText=_text; +if(_DOMTextShadowElement){ +_DOMTextShadowElement.innerText=_text; +} +}else{ +if(CPFeatureIsCompatible(CPJavascriptTextContentFeature)){ +_DOMTextElement.textContent=_text; +if(_DOMTextShadowElement){ +_DOMTextShadowElement.textContent=_text; +} +} +} +} +if(_flags&_8){ +var _5f=objj_msgSend(_font?_font:objj_msgSend(CPFont,"systemFontOfSize:",12),"cssString"); +_5b.font=_5f; +if(_5e){ +_5e.font=_5f; +} +} +if(_flags&_6){ +switch(_lineBreakMode){ +case CPLineBreakByClipping: +_5b.overflow="hidden"; +_5b.textOverflow="clip"; +_5b.whiteSpace="pre"; +_5b.wordWrap="normal"; +break; +case CPLineBreakByTruncatingHead: +case CPLineBreakByTruncatingMiddle: +case CPLineBreakByTruncatingTail: +_5b.textOverflow="ellipsis"; +_5b.whiteSpace="nowrap"; +_5b.overflow="hidden"; +_5b.wordWrap="normal"; +break; +case CPLineBreakByCharWrapping: +case CPLineBreakByWordWrapping: +_5b.wordWrap="break-word"; +try{ +_5b.whiteSpace="pre"; +_5b.whiteSpace="-o-pre-wrap"; +_5b.whiteSpace="-pre-wrap"; +_5b.whiteSpace="-moz-pre-wrap"; +_5b.whiteSpace="pre-wrap"; +} +catch(e){ +_5b.whiteSpace="pre"; +} +_5b.overflow="hidden"; +_5b.textOverflow="clip"; +break; +} +if(_5e){ +if(document.attachEvent){ +_5e.overflow=_5b.overflow; +}else{ +_5e.overflowX=_5b.overflowX; +_5e.overflowY=_5b.overflowY; +} +_5e.wordWrap=_5b.wordWrap; +_5e.whiteSpace=_5b.whiteSpace; +_5e.textOverflow=_5b.textOverflow; +} +} +} +var _60=_image!==nil&&_imagePosition!==CPNoImage,_61=!!_DOMImageElement; +if(_60!==_61){ +if(_61){ +_DOMElement.removeChild(_DOMImageElement); +_DOMImageElement=NULL; +_61=NO; +}else{ +_DOMImageElement=document.createElement("img"); +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMImageElement.setAttribute("draggable","true"); +_DOMImageElement.style["-khtml-user-drag"]="element"; +} +var _62=_DOMImageElement.style; +_62.top="0px"; +_62.left="0px"; +_62.position="absolute"; +_62.zIndex=100; +_DOMElement.appendChild(_DOMImageElement); +_61=YES; +} +} +var _63=objj_msgSend(_57,"bounds").size,_64={origin:{x:0,y:0},size:{width:_63.width,height:_63.height}}; +if(_61){ +if(!_62){ +var _62=_DOMImageElement.style; +} +if(_flags&_2){ +_DOMImageElement.src=objj_msgSend(_image,"filename"); +} +var _65=_63.width/2,_66=_63.height/2,_67=objj_msgSend(_image,"size"),_68=_67.width,_69=_67.height; +if(_imageScaling===CPScaleToFit){ +_68=_63.width; +_69=_63.height; +}else{ +if(_imageScaling===CPScaleProportionally){ +var _6a=MIN(MIN(_63.width,_68)/_68,MIN(_63.height,_69)/_69); +_68*=_6a; +_69*=_6a; +} +} +if(CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)){ +_62.filter="alpha(opacity="+_shouldDimImage?35:100+")"; +}else{ +_62.opacity=_shouldDimImage?0.35:1; +} +_DOMImageElement.width=_68; +_DOMImageElement.height=_69; +_62.width=MAX(_68,0)+"px"; +_62.height=MAX(_69,0)+"px"; +if(_imagePosition===CPImageBelow){ +_62.left=FLOOR(_65-_68/2)+"px"; +_62.top=FLOOR(_63.height-_69)+"px"; +_64.size.height=_63.height-_69-_imageOffset; +}else{ +if(_imagePosition===CPImageAbove){ +_62.left=FLOOR(_65-_68/2)+"px"; +_62.top=0+"px"; +_64.origin.y+=_69+_imageOffset; +_64.size.height=_63.height-_69-_imageOffset; +}else{ +if(_imagePosition===CPImageLeft){ +_62.top=FLOOR(_66-_69/2)+"px"; +_62.left="0px"; +_64.origin.x=_68+_imageOffset; +_64.size.width-=_68+_imageOffset; +}else{ +if(_imagePosition===CPImageRight){ +_62.top=FLOOR(_66-_69/2)+"px"; +_62.left=FLOOR(_63.width-_68)+"px"; +_64.size.width-=_68+_imageOffset; +}else{ +if(_imagePosition===CPImageOnly||_imagePosition==CPImageOverlaps){ +_62.top=FLOOR(_66-_69/2)+"px"; +_62.left=FLOOR(_65-_68/2)+"px"; +} +} +} +} +} +} +if(_5a){ +var _6b=(_64.origin.x),_6c=(_64.origin.y),_6d=(_64.size.width),_6e=(_64.size.height); +if(_verticalAlignment!==CPTopVerticalTextAlignment){ +if(!_textSize){ +if(_lineBreakMode===CPLineBreakByCharWrapping||_lineBreakMode===CPLineBreakByWordWrapping){ +_textSize=objj_msgSend(_text,"sizeWithFont:inWidth:",_font,_6d); +}else{ +_textSize=objj_msgSend(_text,"sizeWithFont:",_font); +} +} +if(_verticalAlignment===CPCenterVerticalTextAlignment){ +_6c=_6c+(_6e-_textSize.height)/2; +_6e=_textSize.height; +}else{ +_6c=_6c+_6e-_textSize.height; +_6e=_textSize.height; +} +} +_5b.top=ROUND(_6c)+"px"; +_5b.left=ROUND(_6b)+"px"; +_5b.width=MAX(ROUND(_6d),0)+"px"; +_5b.height=MAX(ROUND(_6e),0)+"px"; +if(_5e){ +if(_flags&_9){ +_5e.color=objj_msgSend(_textShadowColor,"cssString"); +} +_5e.top=ROUND(_6c+_textShadowOffset.height)+"px"; +_5e.left=ROUND(_6b+_textShadowOffset.width)+"px"; +_5e.width=MAX(ROUND(_6d),0)+"px"; +_5e.height=MAX(ROUND(_6e),0)+"px"; +} +} +_flags=0; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_6f,_70){ +with(_6f){ +var _71=CGSizeMakeZero(); +if((_imagePosition!==CPNoImage)&&_image){ +var _72=objj_msgSend(_image,"size"); +_71.width+=_72.width; +_71.height+=_72.height; +} +if((_imagePosition!==CPImageOnly)&&objj_msgSend(_text,"length")>0){ +if(!_textSize){ +_textSize=objj_msgSend(_text,"sizeWithFont:",_font?_font:objj_msgSend(CPFont,"systemFontOfSize:",12)); +} +if(_imagePosition===CPImageLeft||_imagePosition===CPImageRight){ +_71.width+=_textSize.width+_imageOffset; +_71.height=MAX(_71.height,_textSize.height); +}else{ +if(_imagePosition===CPImageAbove||_imagePosition===CPImageBelow){ +_71.width=MAX(_71.width,_textSize.width); +_71.height+=_textSize.height+_imageOffset; +}else{ +_71.width=MAX(_71.width,_textSize.width); +_71.height=MAX(_71.height,_textSize.height); +} +} +} +objj_msgSend(_6f,"setFrameSize:",_71); +} +})]); +p;29;_CPToolbarFlexibleSpaceItem.jt;794;@STATIC;1.0;i;15;CPToolbarItem.jt;756; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarFlexibleSpaceItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarFlexibleSpaceItem").super_class},"initWithItemIdentifier:",CPToolbarFlexibleSpaceItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(10000,32)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;25;_CPToolbarSeparatorItem.jt;780;@STATIC;1.0;i;15;CPToolbarItem.jt;742; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarSeparatorItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarSeparatorItem").super_class},"initWithItemIdentifier:",CPToolbarSeparatorItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(2,0)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(2,100000)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;26;_CPToolbarShowColorsItem.jt;1230;@STATIC;1.0;i;15;CPToolbarItem.jt;1191; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarShowColorsItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarShowColorsItem").super_class},"initWithItemIdentifier:",CPToolbarShowColorsItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setLabel:","Colors"); +objj_msgSend(_3,"setPaletteLabel:","Show Colors"); +objj_msgSend(_3,"setTarget:",CPApp); +objj_msgSend(_3,"setAction:",sel_getUid("orderFrontColorPanel:")); +objj_msgSend(_3,"setImage:",objj_msgSend(CPImage,"imageNamed:",CPImageNameColorPanel)); +objj_msgSend(_3,"setAlternateImage:",objj_msgSend(CPImage,"imageNamed:",CPImageNameColorPanelHighlighted)); +objj_msgSend(_3,"setToolTip:","Show the Colors panel."); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;21;_CPToolbarSpaceItem.jt;767;@STATIC;1.0;i;15;CPToolbarItem.jt;729; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarSpaceItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarSpaceItem").super_class},"initWithItemIdentifier:",CPToolbarSpaceItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(32,32)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;8;AppKit.jt;4031;@STATIC;1.0;i;9;CALayer.ji;9;CPAlert.ji;13;CPAnimation.ji;15;CPApplication.ji;14;CPBezierPath.ji;7;CPBox.ji;11;CPBrowser.ji;10;CPButton.ji;13;CPButtonBar.ji;12;CPCheckBox.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;14;CPCibLoading.ji;22;CPCibOutletConnector.ji;12;CPClipView.ji;18;CPCollectionView.ji;22;CPCollectionViewItem.ji;9;CPColor.ji;14;CPColorPanel.ji;13;CPColorWell.ji;17;CPCompatibility.ji;11;CPControl.ji;10;CPCookie.ji;10;CPCursor.ji;12;CPDocument.ji;22;CPDocumentController.ji;9;CPEvent.ji;14;CPFlashMovie.ji;13;CPFlashView.ji;8;CPFont.ji;15;CPFontManager.ji;12;CPGeometry.ji;12;CPGraphics.ji;9;CPImage.ji;13;CPImageView.ji;14;CPKeyBinding.ji;8;CPMenu.ji;12;CPMenuItem.ji;13;CPOpenPanel.ji;15;CPOutlineView.ji;9;CPPanel.ji;14;CPPasteboard.ji;15;CPPopUpButton.ji;21;CPProgressIndicator.ji;9;CPRadio.ji;13;CPResponder.ji;12;CPScroller.ji;14;CPScrollView.ji;15;CPSearchField.ji;19;CPSecureTextField.ji;20;CPSegmentedControl.ji;10;CPShadow.ji;10;CPSlider.ji;13;CPSplitView.ji;15;CPTableColumn.ji;13;CPTableView.ji;11;CPTabView.ji;8;CPText.ji;13;CPTextField.ji;11;CPToolbar.ji;15;CPToolbarItem.ji;12;CPTreeNode.ji;8;CPView.ji;17;CPViewAnimation.ji;18;CPViewController.ji;11;CPWebView.ji;10;CPWindow.ji;20;CPWindowController.ji;19;CPArrayController.jt;2748; +objj_executeFile("CALayer.j",YES); +objj_executeFile("CPAlert.j",YES); +objj_executeFile("CPAnimation.j",YES); +objj_executeFile("CPApplication.j",YES); +objj_executeFile("CPBezierPath.j",YES); +objj_executeFile("CPBox.j",YES); +objj_executeFile("CPBrowser.j",YES); +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPButtonBar.j",YES); +objj_executeFile("CPCheckBox.j",YES); +objj_executeFile("CPCib.j",YES); +objj_executeFile("CPCibConnector.j",YES); +objj_executeFile("CPCibControlConnector.j",YES); +objj_executeFile("CPCibLoading.j",YES); +objj_executeFile("CPCibOutletConnector.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPCollectionView.j",YES); +objj_executeFile("CPCollectionViewItem.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPColorPanel.j",YES); +objj_executeFile("CPColorWell.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPCookie.j",YES); +objj_executeFile("CPCursor.j",YES); +objj_executeFile("CPDocument.j",YES); +objj_executeFile("CPDocumentController.j",YES); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPFlashMovie.j",YES); +objj_executeFile("CPFlashView.j",YES); +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPFontManager.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPGraphics.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPKeyBinding.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPMenuItem.j",YES); +objj_executeFile("CPOpenPanel.j",YES); +objj_executeFile("CPOutlineView.j",YES); +objj_executeFile("CPPanel.j",YES); +objj_executeFile("CPPasteboard.j",YES); +objj_executeFile("CPPopUpButton.j",YES); +objj_executeFile("CPProgressIndicator.j",YES); +objj_executeFile("CPRadio.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPScroller.j",YES); +objj_executeFile("CPScrollView.j",YES); +objj_executeFile("CPSearchField.j",YES); +objj_executeFile("CPSecureTextField.j",YES); +objj_executeFile("CPSegmentedControl.j",YES); +objj_executeFile("CPShadow.j",YES); +objj_executeFile("CPSlider.j",YES); +objj_executeFile("CPSplitView.j",YES); +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPTabView.j",YES); +objj_executeFile("CPText.j",YES); +objj_executeFile("CPTextField.j",YES); +objj_executeFile("CPToolbar.j",YES); +objj_executeFile("CPToolbarItem.j",YES); +objj_executeFile("CPTreeNode.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPViewAnimation.j",YES); +objj_executeFile("CPViewController.j",YES); +objj_executeFile("CPWebView.j",YES); +objj_executeFile("CPWindow.j",YES); +objj_executeFile("CPWindowController.j",YES); +objj_executeFile("CPArrayController.j",YES); +p;17;CPAccordionView.jt;10946;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;32;Foundation/CPKeyValueObserving.jI;23;Foundation/CPIndexSet.jI;21;Foundation/CPString.jI;15;AppKit/CPView.jt;10764; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPKeyValueObserving.j",NO); +objj_executeFile("Foundation/CPIndexSet.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPAccordionViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier"),new objj_ivar("_view"),new objj_ivar("_label")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("identifier"),function(_3,_4){ +with(_3){ +return _identifier; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_5,_6,_7){ +with(_5){ +_identifier=_7; +} +}),new objj_method(sel_getUid("view"),function(_8,_9){ +with(_8){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_a,_b,_c){ +with(_a){ +_view=_c; +} +}),new objj_method(sel_getUid("label"),function(_d,_e){ +with(_d){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_f,_10,_11){ +with(_f){ +_label=_11; +} +}),new objj_method(sel_getUid("init"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_14,_15,_16){ +with(_14){ +_14=objj_msgSendSuper({receiver:_14,super_class:objj_getClass("CPAccordionViewItem").super_class},"init"); +if(_14){ +objj_msgSend(_14,"setIdentifier:",_16); +} +return _14; +} +})]); +var _1=objj_allocateClassPair(CPView,"CPAccordionView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_dirtyItemIndex"),new objj_ivar("_itemHeaderPrototype"),new objj_ivar("_items"),new objj_ivar("_itemViews"),new objj_ivar("_expandedItemIndexes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_17,_18,_19){ +with(_17){ +_17=objj_msgSendSuper({receiver:_17,super_class:objj_getClass("CPAccordionView").super_class},"initWithFrame:",_19); +if(_17){ +_items=[]; +_itemViews=[]; +_expandedItemIndexes=objj_msgSend(CPIndexSet,"indexSet"); +objj_msgSend(_17,"setItemHeaderPrototype:",objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:100,height:24}})); +} +return _17; +} +}),new objj_method(sel_getUid("setItemHeaderPrototype:"),function(_1a,_1b,_1c){ +with(_1a){ +_itemHeaderPrototype=_1c; +} +}),new objj_method(sel_getUid("itemHeaderPrototype"),function(_1d,_1e){ +with(_1d){ +return _itemHeaderPrototype; +} +}),new objj_method(sel_getUid("items"),function(_1f,_20){ +with(_1f){ +return _items; +} +}),new objj_method(sel_getUid("addItem:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(_21,"insertItem:atIndex:",_23,_items.length); +} +}),new objj_method(sel_getUid("insertItem:atIndex:"),function(_24,_25,_26,_27){ +with(_24){ +objj_msgSend(_expandedItemIndexes,"addIndex:",_27); +var _28=objj_msgSend(objj_msgSend(_CPAccordionItemView,"alloc"),"initWithAccordionView:",_24); +objj_msgSend(_28,"setIndex:",_27); +objj_msgSend(_28,"setLabel:",objj_msgSend(_26,"label")); +objj_msgSend(_28,"setContentView:",objj_msgSend(_26,"view")); +objj_msgSend(_24,"addSubview:",_28); +objj_msgSend(_items,"insertObject:atIndex:",_26,_27); +objj_msgSend(_itemViews,"insertObject:atIndex:",_28,_27); +objj_msgSend(_24,"_invalidateItemsStartingAtIndex:",_27); +objj_msgSend(_24,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeItem:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_29,"removeItemAtIndex:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_2b)); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_expandedItemIndexes,"removeIndex:",_2e); +objj_msgSend(_itemViews[_2e],"removeFromSuperview"); +objj_msgSend(_items,"removeObjectAtIndex:",_2e); +objj_msgSend(_itemViews,"removeObjectAtIndex:",_2e); +objj_msgSend(_2c,"_invalidateItemsStartingAtIndex:",_2e); +objj_msgSend(_2c,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeAllItems"),function(_2f,_30){ +with(_2f){ +var _31=_items.length; +while(_31--){ +objj_msgSend(_2f,"removeItemAtIndex:",_31); +} +} +}),new objj_method(sel_getUid("expandItemAtIndex:"),function(_32,_33,_34){ +with(_32){ +if(!objj_msgSend(_itemViews[_34],"isCollapsed")){ +return; +} +objj_msgSend(_expandedItemIndexes,"addIndex:",_34); +objj_msgSend(_itemViews[_34],"setCollapsed:",NO); +objj_msgSend(_32,"_invalidateItemsStartingAtIndex:",_34); +} +}),new objj_method(sel_getUid("collapseItemAtIndex:"),function(_35,_36,_37){ +with(_35){ +if(objj_msgSend(_itemViews[_37],"isCollapsed")){ +return; +} +objj_msgSend(_expandedItemIndexes,"removeIndex:",_37); +objj_msgSend(_itemViews[_37],"setCollapsed:",YES); +objj_msgSend(_35,"_invalidateItemsStartingAtIndex:",_37); +} +}),new objj_method(sel_getUid("toggleItemAtIndex:"),function(_38,_39,_3a){ +with(_38){ +var _3b=_itemViews[_3a]; +if(objj_msgSend(_3b,"isCollapsed")){ +objj_msgSend(_38,"expandItemAtIndex:",_3a); +}else{ +objj_msgSend(_38,"collapseItemAtIndex:",_3a); +} +} +}),new objj_method(sel_getUid("expandedItemIndexes"),function(_3c,_3d){ +with(_3c){ +return _expandedItemIndexes; +} +}),new objj_method(sel_getUid("collapsedItemIndexes"),function(_3e,_3f){ +with(_3e){ +var _40=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,_items.length)); +objj_msgSend(_40,"removeIndexes:",_expandedIndexes); +return _40; +} +}),new objj_method(sel_getUid("setEnabled:forItemAtIndex:"),function(_41,_42,_43,_44){ +with(_41){ +var _45=_itemViews[_44]; +if(!_45){ +return; +} +if(!_43){ +objj_msgSend(_41,"collapseItemAtIndex:",_44); +}else{ +objj_msgSend(_41,"expandItemAtIndex:",_44); +} +objj_msgSend(_45,"setEnabled:",_43); +} +}),new objj_method(sel_getUid("_invalidateItemsStartingAtIndex:"),function(_46,_47,_48){ +with(_46){ +if(_dirtyItemIndex===CPNotFound){ +_dirtyItemIndex=_48; +} +_dirtyItemIndex=MIN(_dirtyItemIndex,_48); +objj_msgSend(_46,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_49,_4a,_4b){ +with(_49){ +var _4c=(objj_msgSend(_49,"frame").size.width); +objj_msgSendSuper({receiver:_49,super_class:objj_getClass("CPAccordionView").super_class},"setFrameSize:",_4b); +if(_4c!==(objj_msgSend(_49,"frame").size.width)){ +objj_msgSend(_49,"_invalidateItemsStartingAtIndex:",0); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_4d,_4e){ +with(_4d){ +if(_items.length<=0){ +return objj_msgSend(_4d,"setFrameSize:",{width:(objj_msgSend(_4d,"frame").size.width),height:0}); +} +if(_dirtyItemIndex===CPNotFound){ +return; +} +_dirtyItemIndex=MIN(_dirtyItemIndex,_items.length-1); +var _4f=_dirtyItemIndex,_50=_itemViews.length,_51=(objj_msgSend(_4d,"bounds").size.width),y=_4f>0?CGRectGetMaxY(objj_msgSend(_itemViews[_4f-1],"frame")):0; +_dirtyItemIndex=CPNotFound; +for(;_4f<_50;++_4f){ +var _52=_itemViews[_4f]; +objj_msgSend(_52,"setFrameY:width:",y,_51); +y=CGRectGetMaxY(objj_msgSend(_52,"frame")); +} +objj_msgSend(_4d,"setFrameSize:",{width:(objj_msgSend(_4d,"frame").size.width),height:y}); +} +})]); +var _1=objj_allocateClassPair(CPView,"_CPAccordionItemView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_accordionView"),new objj_ivar("_isCollapsed"),new objj_ivar("_index"),new objj_ivar("_headerView"),new objj_ivar("_contentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isCollapsed"),function(_53,_54){ +with(_53){ +return _isCollapsed; +} +}),new objj_method(sel_getUid("setCollapsed:"),function(_55,_56,_57){ +with(_55){ +_isCollapsed=_57; +} +}),new objj_method(sel_getUid("index"),function(_58,_59){ +with(_58){ +return _index; +} +}),new objj_method(sel_getUid("setIndex:"),function(_5a,_5b,_5c){ +with(_5a){ +_index=_5c; +} +}),new objj_method(sel_getUid("initWithAccordionView:"),function(_5d,_5e,_5f){ +with(_5d){ +_5d=objj_msgSendSuper({receiver:_5d,super_class:objj_getClass("_CPAccordionItemView").super_class},"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +if(_5d){ +_accordionView=_5f; +_isCollapsed=NO; +var _60=objj_msgSend(_5d,"bounds"); +_headerView=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",objj_msgSend(_accordionView,"itemHeaderPrototype"))); +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setTarget:"))&&objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_headerView,"setTarget:",_5d); +objj_msgSend(_headerView,"setAction:",sel_getUid("toggle:")); +} +objj_msgSend(_5d,"addSubview:",_headerView); +} +return _5d; +} +}),new objj_method(sel_getUid("toggle:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_accordionView,"toggleItemAtIndex:",objj_msgSend(_61,"index")); +} +}),new objj_method(sel_getUid("setLabel:"),function(_64,_65,_66){ +with(_64){ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setTitle:"))){ +objj_msgSend(_headerView,"setTitle:",_66); +}else{ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setLabel:"))){ +objj_msgSend(_headerView,"setLabel:",_66); +}else{ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setStringValue:"))){ +objj_msgSend(_headerView,"setStringValue:",_66); +} +} +} +} +}),new objj_method(sel_getUid("setEnabled:"),function(_67,_68,_69){ +with(_67){ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_headerView,"setEnabled:",_69); +} +} +}),new objj_method(sel_getUid("setContentView:"),function(_6a,_6b,_6c){ +with(_6a){ +if(_contentView===_6c){ +return; +} +objj_msgSend(_contentView,"removeObserver:forKeyPath:",_6a,"frame"); +objj_msgSend(_contentView,"removeFromSuperview"); +_contentView=_6c; +objj_msgSend(_contentView,"addObserver:forKeyPath:options:context:",_6a,"frame",CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew,NULL); +objj_msgSend(_6a,"addSubview:",_contentView); +objj_msgSend(_accordionView,"_invalidateItemsStartingAtIndex:",objj_msgSend(_6a,"index")); +} +}),new objj_method(sel_getUid("setFrameY:width:"),function(_6d,_6e,aY,_6f){ +with(_6d){ +var _70=(objj_msgSend(_headerView,"frame").size.height); +objj_msgSend(_headerView,"setFrameSize:",{width:_6f,height:_70}); +objj_msgSend(_contentView,"setFrameOrigin:",{x:0,y:_70}); +if(objj_msgSend(_6d,"isCollapsed")){ +objj_msgSend(_6d,"setFrame:",{origin:{x:0,y:aY},size:{width:_6f,height:_70}}); +}else{ +var _71=(objj_msgSend(_contentView,"frame").size.height); +objj_msgSend(_contentView,"setFrameSize:",{width:_6f,height:_71}); +objj_msgSend(_6d,"setFrame:",{origin:{x:0,y:aY},size:{width:_6f,height:_71+_70}}); +} +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_72,_73,_74){ +with(_72){ +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_75,_76,_77,_78,_79,_7a){ +with(_75){ +if(_77==="frame"&&!CGRectEqualToRect(objj_msgSend(_79,"objectForKey:",CPKeyValueChangeOldKey),objj_msgSend(_79,"objectForKey:",CPKeyValueChangeNewKey))){ +objj_msgSend(_accordionView,"_invalidateItemsStartingAtIndex:",objj_msgSend(_75,"index")); +} +} +})]); +p;9;CPAlert.jt;11741;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;22;AppKit/CPApplication.jI;17;AppKit/CPButton.jI;16;AppKit/CPColor.jI;15;AppKit/CPFont.jI;16;AppKit/CPImage.jI;20;AppKit/CPImageView.jI;16;AppKit/CPPanel.jI;20;AppKit/CPTextField.jt;11487; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPApplication.j",NO); +objj_executeFile("AppKit/CPButton.j",NO); +objj_executeFile("AppKit/CPColor.j",NO); +objj_executeFile("AppKit/CPFont.j",NO); +objj_executeFile("AppKit/CPImage.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +objj_executeFile("AppKit/CPPanel.j",NO); +objj_executeFile("AppKit/CPTextField.j",NO); +CPWarningAlertStyle=0; +CPInformationalAlertStyle=1; +CPCriticalAlertStyle=2; +var _1=objj_allocateClassPair(CPView,"CPAlert"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_alertPanel"),new objj_ivar("_messageLabel"),new objj_ivar("_informativeLabel"),new objj_ivar("_alertImageView"),new objj_ivar("_alertStyle"),new objj_ivar("_windowTitle"),new objj_ivar("_windowStyle"),new objj_ivar("_buttons"),new objj_ivar("_delegate"),new objj_ivar("_didEndSelector"),new objj_ivar("_modalDelegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPAlert").super_class},"init")){ +_buttons=objj_msgSend(CPArray,"array"); +_alertStyle=CPWarningAlertStyle; +_alertPanel=nil; +_windowStyle=nil; +_didEndSelector=nil; +_messageLabel=objj_msgSend(CPTextField,"labelWithTitle:","Alert"); +_alertImageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +_informativeLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return _3; +} +}),new objj_method(sel_getUid("setWindowStyle:"),function(_5,_6,_7){ +with(_5){ +_windowStyle=_7; +objj_msgSend(_5,"setTheme:",(_windowStyle&CPHUDBackgroundWindowMask)?objj_msgSend(CPTheme,"defaultHudTheme"):objj_msgSend(CPTheme,"defaultTheme")); +_alertPanel=nil; +} +}),new objj_method(sel_getUid("_createPanel"),function(_8,_9){ +with(_8){ +var _a=CGRectMakeZero(); +_a.size=objj_msgSend(_8,"currentValueForThemeAttribute:","size"); +_alertPanel=objj_msgSend(objj_msgSend(CPPanel,"alloc"),"initWithContentRect:styleMask:",_a,_windowStyle?_windowStyle|CPTitledWindowMask:CPTitledWindowMask); +var _b=objj_msgSend(_alertPanel,"contentView"),_c=objj_msgSend(_buttons,"count"); +if(_c){ +while(_c--){ +objj_msgSend(_b,"addSubview:",_buttons[_c]); +} +}else{ +objj_msgSend(_8,"addButtonWithTitle:","OK"); +} +objj_msgSend(_b,"addSubview:",_messageLabel); +objj_msgSend(_b,"addSubview:",_alertImageView); +objj_msgSend(_b,"addSubview:",_informativeLabel); +} +}),new objj_method(sel_getUid("setTitle:"),function(_d,_e,_f){ +with(_d){ +_windowTitle=_f; +} +}),new objj_method(sel_getUid("title"),function(_10,_11){ +with(_10){ +return _windowTitle; +} +}),new objj_method(sel_getUid("windowStyle"),function(_12,_13){ +with(_12){ +return _windowStyle; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_14,_15,_16){ +with(_14){ +_delegate=_16; +} +}),new objj_method(sel_getUid("delegate"),function(_17,_18){ +with(_17){ +return _delegate; +} +}),new objj_method(sel_getUid("setAlertStyle:"),function(_19,_1a,_1b){ +with(_19){ +_alertStyle=_1b; +} +}),new objj_method(sel_getUid("alertStyle"),function(_1c,_1d){ +with(_1c){ +return _alertStyle; +} +}),new objj_method(sel_getUid("setMessageText:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_messageLabel,"setStringValue:",_20); +} +}),new objj_method(sel_getUid("messageText"),function(_21,_22){ +with(_21){ +return objj_msgSend(_messageLabel,"stringValue"); +} +}),new objj_method(sel_getUid("setInformativeText:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(_informativeLabel,"setStringValue:",_25); +} +}),new objj_method(sel_getUid("informativeText"),function(_26,_27){ +with(_26){ +return objj_msgSend(_informativeLabel,"stringValue"); +} +}),new objj_method(sel_getUid("addButtonWithTitle:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"bounds"),_2c=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMakeZero()),_2d=objj_msgSend(_buttons,"count"); +objj_msgSend(_2c,"setTitle:",_2a); +objj_msgSend(_2c,"setTarget:",_28); +objj_msgSend(_2c,"setTag:",_2d); +objj_msgSend(_2c,"setAction:",sel_getUid("_dismissAlert:")); +objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"addSubview:",_2c); +if(_2d==0){ +objj_msgSend(_2c,"setKeyEquivalent:",CPCarriageReturnCharacter); +}else{ +if(objj_msgSend(_2a,"lowercaseString")==="cancel"){ +objj_msgSend(_2c,"setKeyEquivalent:",CPEscapeFunctionKey); +}else{ +objj_msgSend(_2c,"setKeyEquivalent:",nil); +} +} +objj_msgSend(_buttons,"insertObject:atIndex:",_2c,0); +} +}),new objj_method(sel_getUid("layoutPanel"),function(_2e,_2f){ +with(_2e){ +if(!_alertPanel){ +objj_msgSend(_2e,"_createPanel"); +} +var _30=objj_msgSend(_2e,"currentValueForThemeAttribute:","content-inset"),_31=objj_msgSend(_2e,"currentValueForThemeAttribute:","image-offset"),_32,_33; +switch(_alertStyle){ +case CPWarningAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","warning-image"); +_32="Warning"; +break; +case CPInformationalAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","information-image"); +_32="Information"; +break; +case CPCriticalAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","error-image"); +_32="Error"; +break; +} +objj_msgSend(_alertImageView,"setImage:",_33); +var _34=_33?objj_msgSend(_33,"size"):CGSizeMakeZero(); +objj_msgSend(_alertImageView,"setFrame:",CGRectMake(_31.x,_31.y,_34.width,_34.height)); +objj_msgSend(_alertPanel,"setTitle:",_windowTitle?_windowTitle:_32); +objj_msgSend(_alertPanel,"setFloatingPanel:",YES); +objj_msgSend(_alertPanel,"center"); +objj_msgSend(_messageLabel,"setTextColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-color")); +objj_msgSend(_messageLabel,"setFont:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-font")); +objj_msgSend(_messageLabel,"setTextShadowColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-shadow-color")); +objj_msgSend(_messageLabel,"setTextShadowOffset:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-shadow-offset")); +objj_msgSend(_messageLabel,"setAlignment:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-alignment")); +objj_msgSend(_messageLabel,"setLineBreakMode:",CPLineBreakByWordWrapping); +objj_msgSend(_informativeLabel,"setTextColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-color")); +objj_msgSend(_informativeLabel,"setFont:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-font")); +objj_msgSend(_informativeLabel,"setTextShadowColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-shadow-color")); +objj_msgSend(_informativeLabel,"setTextShadowOffset:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-shadow-offset")); +objj_msgSend(_informativeLabel,"setLineBreakMode:",CPLineBreakByWordWrapping); +var _35=objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"bounds"),_36=CGRectGetWidth(_35)-_30.right,_37=objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-offset"),_38=objj_msgSend(_2e,"currentValueForThemeAttribute:","button-offset"),_39=_36-_30.left,_3a=objj_msgSend((objj_msgSend(_messageLabel,"stringValue")||" "),"sizeWithFont:inWidth:",objj_msgSend(_messageLabel,"font"),_39),_3b=objj_msgSend(_informativeLabel,"stringValue"),_3c=objj_msgSend((_3b||" "),"sizeWithFont:inWidth:",objj_msgSend(_informativeLabel,"font"),_39),_3d=6; +objj_msgSend(_messageLabel,"setFrame:",CGRectMake(_30.left,_30.top,_39,_3a.height+_3d)); +objj_msgSend(_informativeLabel,"setFrame:",CGRectMake(_30.left,CGRectGetMaxY(objj_msgSend(_messageLabel,"frame"))+_37,_39,_3c.height+_3d)); +objj_msgSend(_informativeLabel,"setHidden:",!_3b); +var _3e=_buttons[0],_3f=MAX(CGRectGetMaxY(objj_msgSend(_alertImageView,"frame")),CGRectGetMaxY(_3b?objj_msgSend(_informativeLabel,"frame"):objj_msgSend(_messageLabel,"frame")))+_38; +objj_msgSend(_3e,"setTheme:",objj_msgSend(_2e,"theme")); +objj_msgSend(_3e,"sizeToFit"); +var _40=objj_msgSend(_2e,"currentValueForThemeAttribute:","size"),_41=MAX(_40.height,_3f+CGRectGetHeight(objj_msgSend(_3e,"bounds"))+_30.bottom),_42=_41-CGRectGetHeight(_35),_43=CGSizeMakeCopy(objj_msgSend(_alertPanel,"frame").size); +_43.height+=_42; +objj_msgSend(_alertPanel,"setFrameSize:",_43); +var _44=objj_msgSend(_buttons,"count"); +while(_44--){ +var _45=_buttons[_44]; +objj_msgSend(_45,"setTheme:",objj_msgSend(_2e,"theme")); +objj_msgSend(_45,"sizeToFit"); +var _46=objj_msgSend(_45,"bounds"),_47=MAX(80,CGRectGetWidth(_46)),_48=CGRectGetHeight(_46); +_36-=_47; +objj_msgSend(_45,"setFrame:",CGRectMake(_36,_3f,_47,_48)); +_36-=10; +} +} +}),new objj_method(sel_getUid("runModal"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"layoutPanel"); +objj_msgSend(CPApp,"runModalForWindow:",_alertPanel); +} +}),new objj_method(sel_getUid("beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:"),function(_4b,_4c,_4d,_4e,_4f,_50){ +with(_4b){ +if(!(_windowStyle&CPDocModalWindowMask)){ +objj_msgSend(_4b,"setWindowStyle:",CPDocModalWindowMask); +} +objj_msgSend(_4b,"layoutPanel"); +_didEndSelector=_4f; +_modalDelegate=_4e; +objj_msgSend(CPApp,"beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",_alertPanel,_4d,_4b,sel_getUid("_alertDidEnd:returnCode:contextInfo:"),_50); +} +}),new objj_method(sel_getUid("beginSheetModalForWindow:"),function(_51,_52,_53){ +with(_51){ +if(!(_windowStyle&CPDocModalWindowMask)){ +objj_msgSend(_51,"setWindowStyle:",CPDocModalWindowMask); +} +objj_msgSend(_51,"layoutPanel"); +objj_msgSend(CPApp,"beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",_alertPanel,_53,_51,sel_getUid("_alertDidEnd:returnCode:contextInfo:"),nil); +} +}),new objj_method(sel_getUid("_alertDidEnd:returnCode:contextInfo:"),function(_54,_55,_56,_57,_58){ +with(_54){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("alertDidEnd:returnCode:"))){ +objj_msgSend(_delegate,"alertDidEnd:returnCode:",_54,_57); +} +if(_didEndSelector){ +objj_msgSend(_modalDelegate,_didEndSelector,_54,_57,_58); +} +_didEndSelector=nil; +_modalDelegate=nil; +} +}),new objj_method(sel_getUid("_dismissAlert:"),function(_59,_5a,_5b){ +with(_59){ +if(objj_msgSend(_alertPanel,"isSheet")){ +objj_msgSend(CPApp,"endSheet:returnCode:",_alertPanel,objj_msgSend(_5b,"tag")); +}else{ +objj_msgSend(CPApp,"abortModal"); +objj_msgSend(_alertPanel,"close"); +objj_msgSend(_59,"_alertDidEnd:returnCode:contextInfo:",nil,objj_msgSend(_5b,"tag"),nil); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_5c,_5d){ +with(_5c){ +return "alert"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_5e,_5f){ +with(_5e){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CGSizeMake(400,110),CGInsetMake(15,15,15,50),6,10,CPJustifiedTextAlignment,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"boldSystemFontOfSize:",13),objj_msgSend(CPNull,"null"),CGSizeMakeZero(),CPJustifiedTextAlignment,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"systemFontOfSize:",12),objj_msgSend(CPNull,"null"),CGSizeMakeZero(),CGPointMake(15,12),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["size","content-inset","informative-offset","button-offset","message-text-alignment","message-text-color","message-text-font","message-text-shadow-color","message-text-shadow-offset","informative-text-alignment","informative-text-color","informative-text-font","informative-text-shadow-color","informative-text-shadow-offset","image-offset","information-image","warning-image","error-image"]); +} +})]); +p;13;CPAnimation.jt;5490;@STATIC;1.0;I;21;Foundation/CPObject.ji;23;CAMediaTimingFunction.jt;5417; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CAMediaTimingFunction.j",YES); +CPAnimationEaseInOut=0; +CPAnimationEaseIn=1; +CPAnimationEaseOut=2; +CPAnimationLinear=3; +ACTUAL_FRAME_RATE=0; +var _1=objj_allocateClassPair(CPObject,"CPAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_lastTime"),new objj_ivar("_duration"),new objj_ivar("_animationCurve"),new objj_ivar("_timingFunction"),new objj_ivar("_frameRate"),new objj_ivar("_progress"),new objj_ivar("_delegate"),new objj_ivar("_timer")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithDuration:animationCurve:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPAnimation").super_class},"init"); +if(_3){ +_progress=0; +_duration=MAX(0,_5); +_frameRate=60; +objj_msgSend(_3,"setAnimationCurve:",_6); +} +return _3; +} +}),new objj_method(sel_getUid("setAnimationCurve:"),function(_7,_8,_9){ +with(_7){ +switch(_9){ +case CPAnimationEaseInOut: +timingFunctionName=kCAMediaTimingFunctionEaseInEaseOut; +break; +case CPAnimationEaseIn: +timingFunctionName=kCAMediaTimingFunctionEaseIn; +break; +case CPAnimationEaseOut: +timingFunctionName=kCAMediaTimingFunctionEaseOut; +break; +case CPAnimationLinear: +timingFunctionName=kCAMediaTimingFunctionLinear; +break; +default: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid value provided for animation curve"); +break; +} +_animationCurve=_9; +_timingFunction=objj_msgSend(CAMediaTimingFunction,"functionWithName:",timingFunctionName); +} +}),new objj_method(sel_getUid("animationCurve"),function(_a,_b){ +with(_a){ +return _animationCurve; +} +}),new objj_method(sel_getUid("setDuration:"),function(_c,_d,_e){ +with(_c){ +if(_e<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"aDuration can't be negative"); +} +_duration=_e; +} +}),new objj_method(sel_getUid("duration"),function(_f,_10){ +with(_f){ +return _duration; +} +}),new objj_method(sel_getUid("setFrameRate:"),function(_11,_12,_13){ +with(_11){ +if(_13<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"frameRate can't be negative"); +} +_frameRate=_13; +} +}),new objj_method(sel_getUid("frameRate"),function(_14,_15){ +with(_14){ +return _frameRate; +} +}),new objj_method(sel_getUid("delegate"),function(_16,_17){ +with(_16){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_18,_19,_1a){ +with(_18){ +_delegate=_1a; +} +}),new objj_method(sel_getUid("startAnimation"),function(_1b,_1c){ +with(_1b){ +if(_timer||_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationShouldStart:"))&&!objj_msgSend(_delegate,"animationShouldStart:",_1b)){ +return; +} +if(_progress===1){ +_progress=0; +} +ACTUAL_FRAME_RATE=0; +_lastTime=new Date(); +_timer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0,_1b,sel_getUid("animationTimerDidFire:"),nil,YES); +} +}),new objj_method(sel_getUid("animationTimerDidFire:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=new Date(),_21=MIN(1,objj_msgSend(_1d,"currentProgress")+(_20-_lastTime)/(_duration*1000)); +_lastTime=_20; +++ACTUAL_FRAME_RATE; +objj_msgSend(_1d,"setCurrentProgress:",_21); +if(_21===1){ +objj_msgSend(_timer,"invalidate"); +_timer=nil; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationDidEnd:"))){ +objj_msgSend(_delegate,"animationDidEnd:",_1d); +} +} +} +}),new objj_method(sel_getUid("stopAnimation"),function(_22,_23){ +with(_22){ +if(!_timer){ +return; +} +objj_msgSend(_timer,"invalidate"); +_timer=nil; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationDidStop:"))){ +objj_msgSend(_delegate,"animationDidStop:",_22); +} +} +}),new objj_method(sel_getUid("isAnimating"),function(_24,_25){ +with(_24){ +return _timer; +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(_26,_27,_28){ +with(_26){ +_progress=_28; +} +}),new objj_method(sel_getUid("currentProgress"),function(_29,_2a){ +with(_29){ +return _progress; +} +}),new objj_method(sel_getUid("currentValue"),function(_2b,_2c){ +with(_2b){ +var t=objj_msgSend(_2b,"currentProgress"); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animation:valueForProgress:"))){ +return objj_msgSend(_delegate,"animation:valueForProgress:",_2b,t); +} +var c1=[],c2=[]; +objj_msgSend(_timingFunction,"getControlPointAtIndex:values:",1,c1); +objj_msgSend(_timingFunction,"getControlPointAtIndex:values:",2,c2); +return _2d(t,c1[0],c1[1],c2[0],c2[1],_duration); +} +})]); +var _2d=_2d=function(t,p1x,p1y,p2x,p2y,_2e){ +var ax=0,bx=0,cx=0,ay=0,by=0,cy=0; +sampleCurveX=function(t){ +return ((ax*t+bx)*t+cx)*t; +}; +sampleCurveY=function(t){ +return ((ay*t+by)*t+cy)*t; +}; +sampleCurveDerivativeX=function(t){ +return (3*ax*t+2*bx)*t+cx; +}; +solveEpsilon=function(_2f){ +return 1/(200*_2f); +}; +solve=function(x,_30){ +return sampleCurveY(solveCurveX(x,_30)); +}; +solveCurveX=function(x,_31){ +var t0,t1,t2,x2,d2,i; +fabs=function(n){ +if(n>=0){ +return n; +}else{ +return 0-n; +} +}; +for(t2=x,i=0;i<8;i++){ +x2=sampleCurveX(t2)-x; +if(fabs(x2)<_31){ +return t2; +} +d2=sampleCurveDerivativeX(t2); +if(fabs(d2)<0.000001){ +break; +} +t2=t2-x2/d2; +} +t0=0; +t1=1; +t2=x; +if(t2t1){ +return t1; +} +while(t0x2){ +t0=t2; +}else{ +t1=t2; +} +t2=(t1-t0)*0.5+t0; +} +return t2; +}; +cx=3*p1x; +bx=3*(p2x-p1x)-cx; +ax=1-cx-bx; +cy=3*p1y; +by=3*(p2y-p1y)-cy; +ay=1-cy-by; +return solve(t,solveEpsilon(_2e)); +}; +p;15;CPApplication.jt;29757;@STATIC;1.0;I;21;Foundation/CPBundle.ji;17;CPCompatibility.ji;9;CPEvent.ji;8;CPMenu.ji;13;CPResponder.ji;22;CPDocumentController.ji;14;CPThemeBlend.ji;14;CPCibLoading.ji;12;CPPlatform.jt;29564; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPDocumentController.j",YES); +objj_executeFile("CPThemeBlend.j",YES); +objj_executeFile("CPCibLoading.j",YES); +objj_executeFile("CPPlatform.j",YES); +var _1="CPMainCibFile",_2="Main cib file base name"; +CPApp=nil; +CPApplicationWillFinishLaunchingNotification="CPApplicationWillFinishLaunchingNotification"; +CPApplicationDidFinishLaunchingNotification="CPApplicationDidFinishLaunchingNotification"; +CPApplicationWillTerminateNotification="CPApplicationWillTerminateNotification"; +CPApplicationWillBecomeActiveNotification="CPApplicationWillBecomeActiveNotification"; +CPApplicationDidBecomeActiveNotification="CPApplicationDidBecomeActiveNotification"; +CPApplicationWillResignActiveNotification="CPApplicationWillResignActiveNotification"; +CPApplicationDidResignActiveNotification="CPApplicationDidResignActiveNotification"; +CPTerminateNow=YES; +CPTerminateCancel=NO; +CPTerminateLater=-1; +CPRunStoppedResponse=-1000; +CPRunAbortedResponse=-1001; +CPRunContinuesResponse=-1002; +var _3=objj_allocateClassPair(CPResponder,"CPApplication"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_eventListeners"),new objj_ivar("_currentEvent"),new objj_ivar("_windows"),new objj_ivar("_keyWindow"),new objj_ivar("_mainWindow"),new objj_ivar("_previousKeyWindow"),new objj_ivar("_previousMainWindow"),new objj_ivar("_mainMenu"),new objj_ivar("_documentController"),new objj_ivar("_currentSession"),new objj_ivar("_delegate"),new objj_ivar("_finishedLaunching"),new objj_ivar("_isActive"),new objj_ivar("_namedArgs"),new objj_ivar("_args"),new objj_ivar("_fullArgsString"),new objj_ivar("_applicationIconImage"),new objj_ivar("_aboutPanel"),new objj_ivar("_themeBlend")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("themeBlend"),function(_5,_6){ +with(_5){ +return _themeBlend; +} +}),new objj_method(sel_getUid("setThemeBlend:"),function(_7,_8,_9){ +with(_7){ +_themeBlend=_9; +} +}),new objj_method(sel_getUid("init"),function(_a,_b){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPApplication").super_class},"init"); +CPApp=_a; +if(_a){ +_eventListeners=[]; +_windows=[]; +objj_msgSend(_windows,"addObject:",nil); +} +return _a; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_c,_d,_e){ +with(_c){ +if(_delegate==_e){ +return; +} +var _f=objj_msgSend(CPNotificationCenter,"defaultCenter"),_10=[CPApplicationWillFinishLaunchingNotification,sel_getUid("applicationWillFinishLaunching:"),CPApplicationDidFinishLaunchingNotification,sel_getUid("applicationDidFinishLaunching:"),CPApplicationWillBecomeActiveNotification,sel_getUid("applicationWillBecomeActive:"),CPApplicationDidBecomeActiveNotification,sel_getUid("applicationDidBecomeActive:"),CPApplicationWillResignActiveNotification,sel_getUid("applicationWillResignActive:"),CPApplicationDidResignActiveNotification,sel_getUid("applicationDidResignActive:"),CPApplicationWillTerminateNotification,sel_getUid("applicationWillTerminate:")],_11=objj_msgSend(_10,"count"); +if(_delegate){ +var _12=0; +for(;_12<_11;_12+=2){ +var _13=_10[_12],_14=_10[_12+1]; +if(objj_msgSend(_delegate,"respondsToSelector:",_14)){ +objj_msgSend(_f,"removeObserver:name:object:",_delegate,_13,_c); +} +} +} +_delegate=_e; +var _12=0; +for(;_12<_11;_12+=2){ +var _13=_10[_12],_14=_10[_12+1]; +if(objj_msgSend(_delegate,"respondsToSelector:",_14)){ +objj_msgSend(_f,"addObserver:selector:name:object:",_delegate,_14,_13,_c); +} +} +} +}),new objj_method(sel_getUid("delegate"),function(_15,_16){ +with(_15){ +return _delegate; +} +}),new objj_method(sel_getUid("finishLaunching"),function(_17,_18){ +with(_17){ +window.status=" "; +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +var _19=objj_msgSend(CPBundle,"mainBundle"),_1a=objj_msgSend(_19,"objectForInfoDictionaryKey:","CPBundleDocumentTypes"); +if(objj_msgSend(_1a,"count")>0){ +_documentController=objj_msgSend(CPDocumentController,"sharedDocumentController"); +} +var _1b=objj_msgSend(_19,"objectForInfoDictionaryKey:","CPApplicationDelegateClass"); +if(_1b){ +var _1c=objj_getClass(_1b); +if(_1c){ +if(objj_msgSend(_documentController,"class")==_1c){ +objj_msgSend(_17,"setDelegate:",_documentController); +}else{ +objj_msgSend(_17,"setDelegate:",objj_msgSend(objj_msgSend(_1c,"alloc"),"init")); +} +} +} +var _1d=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_1d,"postNotificationName:object:",CPApplicationWillFinishLaunchingNotification,_17); +var _1e=!!_documentController,_1f=window.cpOpeningURLStrings&&window.cpOpeningURLStrings(),_20=0,_21=objj_msgSend(_1f,"count"); +for(;_20<_21;++_20){ +_1e=!objj_msgSend(_17,"_openURL:",objj_msgSend(CPURL,"URLWithString:",_1f[_20]))||_1e; +} +if(_1e&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("applicationShouldOpenUntitledFile:"))){ +_1e=objj_msgSend(_delegate,"applicationShouldOpenUntitledFile:",_17); +} +if(_1e){ +objj_msgSend(_documentController,"newDocument:",_17); +} +objj_msgSend(_documentController,"_updateRecentDocumentsMenu"); +objj_msgSend(_1d,"postNotificationName:object:",CPApplicationDidFinishLaunchingNotification,_17); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +_finishedLaunching=YES; +} +}),new objj_method(sel_getUid("terminate:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPApplicationWillTerminateNotification,_22); +if(!objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(objj_msgSend(CPDocumentController,"sharedDocumentController"),"closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:",_22,sel_getUid("_documentController:didCloseAll:context:"),nil); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_22,"keyWindow"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +}),new objj_method(sel_getUid("setApplicationIconImage:"),function(_25,_26,_27){ +with(_25){ +_applicationIconImage=_27; +} +}),new objj_method(sel_getUid("applicationIconImage"),function(_28,_29){ +with(_28){ +if(_applicationIconImage){ +return _applicationIconImage; +} +var _2a=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPApplicationIcon"); +if(_2a){ +_applicationIconImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",_2a); +} +return _applicationIconImage; +} +}),new objj_method(sel_getUid("orderFrontStandardAboutPanel:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"orderFrontStandardAboutPanelWithOptions:",nil); +} +}),new objj_method(sel_getUid("orderFrontStandardAboutPanelWithOptions:"),function(_2e,_2f,_30){ +with(_2e){ +if(!_aboutPanel){ +var _31=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),_32=objj_msgSend(_30,"objectForKey:","ApplicationName")||objj_msgSend(_31,"objectForKey:","CPBundleName"),_33=objj_msgSend(_30,"objectForKey:","ApplicationIcon")||objj_msgSend(_2e,"applicationIconImage"),_34=objj_msgSend(_30,"objectForKey:","Version")||objj_msgSend(_31,"objectForKey:","CPBundleVersion"),_35=objj_msgSend(_30,"objectForKey:","ApplicationVersion")||objj_msgSend(_31,"objectForKey:","CPBundleShortVersionString"),_36=objj_msgSend(_30,"objectForKey:","Copyright")||objj_msgSend(_31,"objectForKey:","CPHumanReadableCopyright"); +var _37=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindowController,"class")),"pathForResource:","AboutPanel.cib"),_38=objj_msgSend(CPWindowController,"alloc"),_38=objj_msgSend(_38,"initWithWindowCibPath:owner:",_37,_38),_39=objj_msgSend(_38,"window"),_3a=objj_msgSend(_39,"contentView"),_3b=objj_msgSend(_3a,"viewWithTag:",1),_3c=objj_msgSend(_3a,"viewWithTag:",2),_3d=objj_msgSend(_3a,"viewWithTag:",3),_3e=objj_msgSend(_3a,"viewWithTag:",4),_3f=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_2e,"class")),"pathForResource:","standardApplicationIcon.png"); +objj_msgSend(_3c,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",14)); +objj_msgSend(_3c,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3d,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3e,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3b,"setImage:",_33||objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",_3f,CGSizeMake(256,256))); +objj_msgSend(_3c,"setStringValue:",_32||""); +if(_35&&_34){ +objj_msgSend(_3d,"setStringValue:","Version "+_35+" ("+_34+")"); +}else{ +if(_35||_34){ +objj_msgSend(_3d,"setStringValue:","Version "+(_35||_34)); +}else{ +objj_msgSend(_3d,"setStringValue:",""); +} +} +objj_msgSend(_3e,"setStringValue:",_36||""); +objj_msgSend(_39,"center"); +_aboutPanel=_39; +} +objj_msgSend(_aboutPanel,"orderFront:",_2e); +} +}),new objj_method(sel_getUid("_documentController:didCloseAll:context:"),function(_40,_41,_42,_43,_44){ +with(_40){ +if(_43){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("applicationShouldTerminate:"))){ +objj_msgSend(_40,"replyToApplicationShouldTerminate:",objj_msgSend(_delegate,"applicationShouldTerminate:",_40)); +}else{ +objj_msgSend(_40,"replyToApplicationShouldTerminate:",YES); +} +} +} +}),new objj_method(sel_getUid("replyToApplicationShouldTerminate:"),function(_45,_46,_47){ +with(_45){ +if(_47==CPTerminateNow){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPApplicationWillTerminateNotification,_45); +objj_msgSend(CPPlatform,"terminateApplication"); +} +} +}),new objj_method(sel_getUid("activateIgnoringOtherApps:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(_48,"_willBecomeActive"); +objj_msgSend(CPPlatform,"activateIgnoringOtherApps:",_4a); +_isActive=YES; +objj_msgSend(_48,"_willResignActive"); +} +}),new objj_method(sel_getUid("deactivate"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_4b,"_willResignActive"); +objj_msgSend(CPPlatform,"deactivate"); +_isActive=NO; +objj_msgSend(_4b,"_didResignActive"); +} +}),new objj_method(sel_getUid("isActive"),function(_4d,_4e){ +with(_4d){ +return _isActive; +} +}),new objj_method(sel_getUid("hideOtherApplications:"),function(_4f,_50,_51){ +with(_4f){ +objj_msgSend(CPPlatform,"hideOtherApplications:",_4f); +} +}),new objj_method(sel_getUid("run"),function(_52,_53){ +with(_52){ +objj_msgSend(_52,"finishLaunching"); +} +}),new objj_method(sel_getUid("runModalForWindow:"),function(_54,_55,_56){ +with(_54){ +objj_msgSend(_54,"runModalSession:",objj_msgSend(_54,"beginModalSessionForWindow:",_56)); +} +}),new objj_method(sel_getUid("stopModalWithCode:"),function(_57,_58,_59){ +with(_57){ +if(!_currentSession){ +return; +} +_currentSession._state=_59; +_currentSession=_currentSession._previous; +objj_msgSend(_57,"_removeRunModalLoop"); +} +}),new objj_method(sel_getUid("_removeRunModalLoop"),function(_5a,_5b){ +with(_5a){ +var _5c=_eventListeners.length; +while(_5c--){ +if(_eventListeners[_5c]._callback===_CPRunModalLoop){ +_eventListeners.splice(_5c,1); +return; +} +} +} +}),new objj_method(sel_getUid("stopModal"),function(_5d,_5e){ +with(_5d){ +objj_msgSend(_5d,"stopModalWithCode:",CPRunStoppedResponse); +} +}),new objj_method(sel_getUid("abortModal"),function(_5f,_60){ +with(_5f){ +objj_msgSend(_5f,"stopModalWithCode:",CPRunAbortedResponse); +} +}),new objj_method(sel_getUid("beginModalSessionForWindow:"),function(_61,_62,_63){ +with(_61){ +return _64(_63,0); +} +}),new objj_method(sel_getUid("runModalSession:"),function(_65,_66,_67){ +with(_65){ +_67._previous=_currentSession; +_currentSession=_67; +var _68=_67._window; +objj_msgSend(_68,"center"); +objj_msgSend(_68,"makeKeyAndOrderFront:",_65); +objj_msgSend(CPApp,"setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:",_CPRunModalLoop,CPAnyEventMask,nil,0,NO); +} +}),new objj_method(sel_getUid("modalWindow"),function(_69,_6a){ +with(_69){ +if(!_currentSession){ +return nil; +} +return _currentSession._window; +} +}),new objj_method(sel_getUid("_handleKeyEquivalent:"),function(_6b,_6c,_6d){ +with(_6b){ +return objj_msgSend(objj_msgSend(_6b,"keyWindow"),"performKeyEquivalent:",_6d)||objj_msgSend(_mainMenu,"performKeyEquivalent:",_6d); +} +}),new objj_method(sel_getUid("sendEvent:"),function(_6e,_6f,_70){ +with(_6e){ +_currentEvent=_70; +var _71=objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_willPropagateCurrentDOMEvent"); +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +if(objj_msgSend(_70,"_couldBeKeyEquivalent")&&objj_msgSend(_6e,"_handleKeyEquivalent:",_70)){ +var _72=objj_msgSend(_70,"characters"),_73=objj_msgSend(_70,"modifierFlags"); +if((_72=="c"||_72=="x"||_72=="v")&&(_73&CPPlatformActionKeyMask)){ +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +return; +} +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",_71); +if(_eventListeners.length){ +if(_eventListeners[_eventListeners.length-1]._mask&(1<=0){ +var _c9=objj_msgSend(_windows,"objectAtIndex:",_c8); +var _ca=_c9._sheetContext; +if(_ca!=nil&&_ca["sheet"]===_c6){ +_ca["returnCode"]=_c7; +objj_msgSend(_c9,"_detachSheetWindow"); +return; +} +} +} +}),new objj_method(sel_getUid("endSheet:"),function(_cb,_cc,_cd){ +with(_cb){ +objj_msgSend(_cb,"endSheet:returnCode:",_cd,0); +} +}),new objj_method(sel_getUid("arguments"),function(_ce,_cf){ +with(_ce){ +if(_fullArgsString!==window.location.hash){ +objj_msgSend(_ce,"_reloadArguments"); +} +return _args; +} +}),new objj_method(sel_getUid("setArguments:"),function(_d0,_d1,_d2){ +with(_d0){ +if(!_d2||_d2.length==0){ +_args=[]; +window.location.hash="#"; +return; +} +if(objj_msgSend(_d2,"class")!=CPArray){ +_d2=objj_msgSend(CPArray,"arrayWithObject:",_d2); +} +_args=_d2; +var _d3=objj_msgSend(_args,"copy"); +for(var i=0,_d4=_d3.length;i<_d4;i++){ +_d3[i]=encodeURIComponent(_d3[i]); +} +var _d5=objj_msgSend(_d3,"componentsJoinedByString:","/"); +window.location.hash="#"+_d5; +} +}),new objj_method(sel_getUid("_reloadArguments"),function(_d6,_d7){ +with(_d6){ +_fullArgsString=window.location.hash; +if(_fullArgsString.length){ +var _d8=_fullArgsString.substring(1).split("/"); +for(var i=0,_d9=_d8.length;i<_d9;i++){ +_d8[i]=decodeURIComponent(_d8[i]); +} +_args=_d8; +}else{ +_args=[]; +} +} +}),new objj_method(sel_getUid("namedArguments"),function(_da,_db){ +with(_da){ +return _namedArgs; +} +}),new objj_method(sel_getUid("_openURL:"),function(_dc,_dd,_de){ +with(_dc){ +if(_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("application:openFile:"))){ +CPLog.warn("application:openFile: is deprecated, use application:openURL: instead."); +return objj_msgSend(_delegate,"application:openFile:",_dc,objj_msgSend(_de,"absoluteString")); +} +if(_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("application:openURL:"))){ +return objj_msgSend(_delegate,"application:openURL:",_dc,_de); +} +return !!objj_msgSend(_documentController,"openDocumentWithContentsOfURL:display:error:",_de,YES,NULL); +} +}),new objj_method(sel_getUid("_willBecomeActive"),function(_df,_e0){ +with(_df){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationWillBecomeActiveNotification,_df,nil); +} +}),new objj_method(sel_getUid("_didBecomeActive"),function(_e1,_e2){ +with(_e1){ +if(!objj_msgSend(_e1,"keyWindow")&&_previousKeyWindow&&objj_msgSend(objj_msgSend(_e1,"windows"),"indexOfObjectIdenticalTo:",_previousKeyWindow)!==CPNotFound){ +objj_msgSend(_previousKeyWindow,"makeKeyWindow"); +} +if(!objj_msgSend(_e1,"mainWindow")&&_previousMainWindow&&objj_msgSend(objj_msgSend(_e1,"windows"),"indexOfObjectIdenticalTo:",_previousMainWindow)!==CPNotFound){ +objj_msgSend(_previousMainWindow,"makeMainWindow"); +} +if(objj_msgSend(_e1,"keyWindow")){ +objj_msgSend(objj_msgSend(_e1,"keyWindow"),"orderFront:",_e1); +}else{ +if(objj_msgSend(_e1,"mainWindow")){ +objj_msgSend(objj_msgSend(_e1,"mainWindow"),"makeKeyAndOrderFront:",_e1); +}else{ +objj_msgSend(objj_msgSend(_e1,"mainMenu")._menuWindow,"makeKeyWindow"); +} +} +_previousKeyWindow=nil; +_previousMainWindow=nil; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationDidBecomeActiveNotification,_e1,nil); +} +}),new objj_method(sel_getUid("_willResignActive"),function(_e3,_e4){ +with(_e3){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationWillResignActiveNotification,_e3,nil); +} +}),new objj_method(sel_getUid("_didResignActive"),function(_e5,_e6){ +with(_e5){ +if(_e5._activeMenu){ +objj_msgSend(_e5._activeMenu,"cancelTracking"); +} +if(objj_msgSend(_e5,"keyWindow")){ +_previousKeyWindow=objj_msgSend(_e5,"keyWindow"); +objj_msgSend(_previousKeyWindow,"resignKeyWindow"); +} +if(objj_msgSend(_e5,"mainWindow")){ +_previousMainWindow=objj_msgSend(_e5,"mainWindow"); +objj_msgSend(_previousMainWindow,"resignMainWindow"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationDidResignActiveNotification,_e5,nil); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedApplication"),function(_e7,_e8){ +with(_e7){ +if(!CPApp){ +CPApp=objj_msgSend(objj_msgSend(CPApplication,"alloc"),"init"); +} +return CPApp; +} +}),new objj_method(sel_getUid("defaultThemeName"),function(_e9,_ea){ +with(_e9){ +return (objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPDefaultTheme")||"Aristo"); +} +})]); +var _64=function(_eb,_ec){ +return {_window:_eb,_state:CPRunContinuesResponse,_previous:nil}; +}; +var _b0=function(_ed,_ee){ +return {_mask:_ed,_callback:_ee}; +}; +_CPRunModalLoop=function(_ef){ +objj_msgSend(CPApp,"setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:",_CPRunModalLoop,CPAnyEventMask,nil,0,NO); +var _f0=objj_msgSend(_ef,"window"),_f1=CPApp._currentSession; +if(_f0==_f1._window||objj_msgSend(_f0,"worksWhenModal")){ +objj_msgSend(_f0,"sendEvent:",_ef); +} +}; +CPApplicationMain=function(_f2,_f3){ +if(window.parent!==window&&typeof window.parent._childAppIsStarting==="function"){ +window.parent._childAppIsStarting(window); +} +var _f4=objj_msgSend(CPBundle,"mainBundle"),_f5=objj_msgSend(_f4,"principalClass"); +if(!_f5){ +_f5=objj_msgSend(CPApplication,"class"); +} +objj_msgSend(_f5,"sharedApplication"); +if(objj_msgSend(_f2,"containsObject:","debug")){ +CPLogRegister(CPLogPopup); +} +CPApp._args=_f2; +CPApp._namedArgs=_f3; +objj_msgSend(_CPAppBootstrapper,"performActions"); +}; +var _f6=nil; +var _3=objj_allocateClassPair(CPObject,"_CPAppBootstrapper"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_4,[new objj_method(sel_getUid("actions"),function(_f7,_f8){ +with(_f7){ +return [sel_getUid("bootstrapPlatform"),sel_getUid("loadDefaultTheme"),sel_getUid("loadMainCibFile")]; +} +}),new objj_method(sel_getUid("performActions"),function(_f9,_fa){ +with(_f9){ +if(!_f6){ +_f6=objj_msgSend(_f9,"actions"); +} +while(_f6.length){ +var _fb=_f6.shift(); +if(objj_msgSend(_f9,_fb)){ +return; +} +} +objj_msgSend(CPApp,"run"); +} +}),new objj_method(sel_getUid("bootstrapPlatform"),function(_fc,_fd){ +with(_fc){ +return objj_msgSend(CPPlatform,"bootstrap"); +} +}),new objj_method(sel_getUid("loadDefaultTheme"),function(_fe,_ff){ +with(_fe){ +var _100=objj_msgSend(CPApplication,"defaultThemeName"),_101=nil; +if(_100==="Aristo"){ +_101=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPApplication,"class")),"pathForResource:",_100+".blend"); +}else{ +_101=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_100+".blend"); +} +var _102=objj_msgSend(objj_msgSend(CPThemeBlend,"alloc"),"initWithContentsOfURL:",_101); +objj_msgSend(_102,"loadWithDelegate:",_fe); +return YES; +} +}),new objj_method(sel_getUid("blendDidFinishLoading:"),function(self,_103,_104){ +with(self){ +objj_msgSend(objj_msgSend(CPApplication,"sharedApplication"),"setThemeBlend:",_104); +objj_msgSend(CPTheme,"setDefaultTheme:",objj_msgSend(CPTheme,"themeNamed:",objj_msgSend(CPApplication,"defaultThemeName"))); +objj_msgSend(self,"performActions"); +} +}),new objj_method(sel_getUid("loadMainCibFile"),function(self,_105){ +with(self){ +var _106=objj_msgSend(CPBundle,"mainBundle"),_107=objj_msgSend(_106,"objectForInfoDictionaryKey:",_1)||objj_msgSend(_106,"objectForInfoDictionaryKey:",_2); +if(_107){ +objj_msgSend(_106,"loadCibFile:externalNameTable:loadDelegate:",_107,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",CPApp,CPCibOwner),self); +return YES; +}else{ +objj_msgSend(self,"loadCiblessBrowserMainMenu"); +} +return NO; +} +}),new objj_method(sel_getUid("loadCiblessBrowserMainMenu"),function(self,_108){ +with(self){ +var _109=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","MainMenu"); +objj_msgSend(_109,"setAutoenablesItems:",NO); +var _10a=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPApplication,"class")),_10b=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","New",sel_getUid("newDocument:"),"n"); +objj_msgSend(_10b,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/New.png"),CGSizeMake(16,16))); +objj_msgSend(_10b,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/NewHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_109,"addItem:",_10b); +var _10c=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Open",sel_getUid("openDocument:"),"o"); +objj_msgSend(_10c,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/Open.png"),CGSizeMake(16,16))); +objj_msgSend(_10c,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/OpenHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_109,"addItem:",_10c); +var _10d=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","Save"),_10e=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save",sel_getUid("saveDocument:"),nil); +objj_msgSend(_10e,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/Save.png"),CGSizeMake(16,16))); +objj_msgSend(_10e,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/SaveHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_10d,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save",sel_getUid("saveDocument:"),"s")); +objj_msgSend(_10d,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save As",sel_getUid("saveDocumentAs:"),nil)); +objj_msgSend(_10e,"setSubmenu:",_10d); +objj_msgSend(_109,"addItem:",_10e); +var _10f=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Edit",nil,nil),_110=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","Edit"),_111=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Undo",sel_getUid("undo:"),CPUndoKeyEquivalent),_112=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Redo",sel_getUid("redo:"),CPRedoKeyEquivalent); +objj_msgSend(_111,"setKeyEquivalentModifierMask:",CPUndoKeyEquivalentModifierMask); +objj_msgSend(_112,"setKeyEquivalentModifierMask:",CPRedoKeyEquivalentModifierMask); +objj_msgSend(_110,"addItem:",_111); +objj_msgSend(_110,"addItem:",_112); +objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Cut",sel_getUid("cut:"),"x")),objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Copy",sel_getUid("copy:"),"c")),objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Paste",sel_getUid("paste:"),"v")); +objj_msgSend(_10f,"setSubmenu:",_110); +objj_msgSend(_10f,"setHidden:",YES); +objj_msgSend(_109,"addItem:",_10f); +objj_msgSend(_109,"addItem:",objj_msgSend(CPMenuItem,"separatorItem")); +objj_msgSend(CPApp,"setMainMenu:",_109); +} +}),new objj_method(sel_getUid("cibDidFinishLoading:"),function(self,_113,aCib){ +with(self){ +objj_msgSend(self,"performActions"); +} +}),new objj_method(sel_getUid("cibDidFailToLoad:"),function(self,_114,aCib){ +with(self){ +throw new Error("Could not load main cib file (Did you forget to nib2cib it?)."); +} +}),new objj_method(sel_getUid("reset"),function(self,_115){ +with(self){ +_f6=nil; +} +})]); +p;19;CPArrayController.jt;17322;@STATIC;1.0;I;27;AppKit/CPObjectController.jI;26;AppKit/CPKeyValueBinding.jt;17239; +objj_executeFile("AppKit/CPObjectController.j",NO); +objj_executeFile("AppKit/CPKeyValueBinding.j",NO); +var _1=objj_allocateClassPair(CPObjectController,"CPArrayController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_avoidsEmptySelection"),new objj_ivar("_clearsFilterPredicateOnInsertion"),new objj_ivar("_filterRestrictsInsertion"),new objj_ivar("_preservesSelection"),new objj_ivar("_selectsInsertedObjects"),new objj_ivar("_alwaysUsesMultipleValuesMarker"),new objj_ivar("_selectionIndexes"),new objj_ivar("_sortDescriptors"),new objj_ivar("_filterPredicate"),new objj_ivar("_arrangedObjects")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPArrayController").super_class},"init"); +if(_3){ +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +} +return _3; +} +}),new objj_method(sel_getUid("prepareContent"),function(_5,_6){ +with(_5){ +objj_msgSend(_5,"_setContentArray:",[objj_msgSend(_5,"newObject")]); +} +}),new objj_method(sel_getUid("preservesSelection"),function(_7,_8){ +with(_7){ +return _preservesSelection; +} +}),new objj_method(sel_getUid("setPreservesSelection:"),function(_9,_a,_b){ +with(_9){ +_preservesSelection=_b; +} +}),new objj_method(sel_getUid("selectsInsertedObjects"),function(_c,_d){ +with(_c){ +return _selectsInsertedObjects; +} +}),new objj_method(sel_getUid("setSelectsInsertedObjects:"),function(_e,_f,_10){ +with(_e){ +_selectsInsertedObjects=_10; +} +}),new objj_method(sel_getUid("avoidsEmptySelection"),function(_11,_12){ +with(_11){ +return _avoidsEmptySelection; +} +}),new objj_method(sel_getUid("setAvoidsEmptySelection:"),function(_13,_14,_15){ +with(_13){ +_avoidsEmptySelection=_15; +} +}),new objj_method(sel_getUid("setContent:"),function(_16,_17,_18){ +with(_16){ +if(!objj_msgSend(_18,"isKindOfClass:",objj_msgSend(CPArray,"class"))){ +_18=[_18]; +} +var _19=nil,_1a=nil; +if(objj_msgSend(_16,"preservesSelection")){ +_19=objj_msgSend(_16,"selectedObjects"); +}else{ +_1a=objj_msgSend(_16,"selectionIndexes"); +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"willChangeValueForKey:","filterPredicate"); +} +_contentObject=_18; +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"__setFilterPredicate:",nil); +}else{ +objj_msgSend(_16,"_rearrangeObjects"); +} +if(objj_msgSend(_16,"preservesSelection")){ +objj_msgSend(_16,"__setSelectedObjects:",_19); +}else{ +objj_msgSend(_16,"__setSelectionIndexes:",_1a); +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("_setContentArray:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"setContent:",_1d); +} +}),new objj_method(sel_getUid("_setContentSet:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_1e,"setContent:",_20); +} +}),new objj_method(sel_getUid("contentArray"),function(_21,_22){ +with(_21){ +return objj_msgSend(_21,"content"); +} +}),new objj_method(sel_getUid("contentSet"),function(_23,_24){ +with(_23){ +return objj_msgSend(_23,"content"); +} +}),new objj_method(sel_getUid("arrangeObjects:"),function(_25,_26,_27){ +with(_25){ +var _28=objj_msgSend(_25,"filterPredicate"),_29=objj_msgSend(_25,"sortDescriptors"); +if(_28&&_29){ +var _2a=objj_msgSend(_27,"filteredArrayUsingPredicate:",_28); +objj_msgSend(_2a,"sortUsingDescriptors:",_29); +return _2a; +}else{ +if(_28){ +return objj_msgSend(_27,"filteredArrayUsingPredicate:",_28); +}else{ +if(_29){ +return objj_msgSend(_27,"sortedArrayUsingDescriptors:",_29); +} +} +} +return objj_msgSend(_27,"copy"); +} +}),new objj_method(sel_getUid("rearrangeObjects"),function(_2b,_2c){ +with(_2b){ +objj_msgSend(_2b,"willChangeValueForKey:","arrangedObjects"); +objj_msgSend(_2b,"_rearrangeObjects"); +objj_msgSend(_2b,"didChangeValueForKey:","arrangedObjects"); +} +}),new objj_method(sel_getUid("_rearrangeObjects"),function(_2d,_2e){ +with(_2d){ +var _2f=nil,_30=nil; +if(objj_msgSend(_2d,"preservesSelection")){ +_2f=objj_msgSend(_2d,"selectedObjects"); +}else{ +_30=objj_msgSend(_2d,"selectionIndexes"); +} +objj_msgSend(_2d,"__setArrangedObjects:",objj_msgSend(_2d,"arrangeObjects:",objj_msgSend(_2d,"contentArray"))); +if(objj_msgSend(_2d,"preservesSelection")){ +objj_msgSend(_2d,"__setSelectedObjects:",_2f); +}else{ +objj_msgSend(_2d,"__setSelectionIndexes:",_30); +} +} +}),new objj_method(sel_getUid("__setArrangedObjects:"),function(_31,_32,_33){ +with(_31){ +if(_arrangedObjects===_33){ +return; +} +_arrangedObjects=objj_msgSend(objj_msgSend(_CPObservableArray,"alloc"),"initWithArray:",_33); +} +}),new objj_method(sel_getUid("arrangedObjects"),function(_34,_35){ +with(_34){ +return _arrangedObjects; +} +}),new objj_method(sel_getUid("sortDescriptors"),function(_36,_37){ +with(_36){ +return _sortDescriptors; +} +}),new objj_method(sel_getUid("setSortDescriptors:"),function(_38,_39,_3a){ +with(_38){ +if(_sortDescriptors===_3a){ +return; +} +_sortDescriptors=objj_msgSend(_3a,"copy"); +objj_msgSend(_38,"_rearrangeObjects"); +} +}),new objj_method(sel_getUid("filterPredicate"),function(_3b,_3c){ +with(_3b){ +return _filterPredicate; +} +}),new objj_method(sel_getUid("setFilterPredicate:"),function(_3d,_3e,_3f){ +with(_3d){ +objj_msgSend(_3d,"__setFilterPredicate:",_3f); +} +}),new objj_method(sel_getUid("__setFilterPredicate:"),function(_40,_41,_42){ +with(_40){ +if(_filterPredicate===_42){ +return; +} +_filterPredicate=_42; +objj_msgSend(_40,"_rearrangeObjects"); +} +}),new objj_method(sel_getUid("alwaysUsesMultipleValuesMarker"),function(_43,_44){ +with(_43){ +return _alwaysUsesMultipleValuesMarker; +} +}),new objj_method(sel_getUid("selectionIndex"),function(_45,_46){ +with(_45){ +return objj_msgSend(_selectionIndexes,"firstIndex"); +} +}),new objj_method(sel_getUid("setSelectionIndex:"),function(_47,_48,_49){ +with(_47){ +return objj_msgSend(_47,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_49)); +} +}),new objj_method(sel_getUid("selectionIndexes"),function(_4a,_4b){ +with(_4a){ +return _selectionIndexes; +} +}),new objj_method(sel_getUid("setSelectionIndexes:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"__setSelectionIndexes:",_4e); +} +}),new objj_method(sel_getUid("__setSelectionIndex:"),function(_4f,_50,_51){ +with(_4f){ +objj_msgSend(_4f,"__setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_51)); +} +}),new objj_method(sel_getUid("__setSelectionIndexes:"),function(_52,_53,_54){ +with(_52){ +if(!_54){ +_54=objj_msgSend(CPIndexSet,"indexSet"); +} +if(!objj_msgSend(_54,"count")){ +if(_avoidsEmptySelection&&objj_msgSend(objj_msgSend(_52,"arrangedObjects"),"count")){ +_54=objj_msgSend(CPIndexSet,"indexSetWithIndex:",0); +} +}else{ +var _55=objj_msgSend(objj_msgSend(_52,"arrangedObjects"),"count"); +objj_msgSend(_54,"removeIndexesInRange:",CPMakeRange(_55,objj_msgSend(_54,"lastIndex")+1)); +if(!objj_msgSend(_54,"count")&&_avoidsEmptySelection&&_55){ +_54=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_55-1); +} +} +if(objj_msgSend(_selectionIndexes,"isEqualToIndexSet:",_54)){ +return NO; +} +_selectionIndexes=objj_msgSend(_54,"copy"); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_52),"reverseSetValueFor:","selectionIndexes"); +return YES; +} +}),new objj_method(sel_getUid("selectedObjects"),function(_56,_57){ +with(_56){ +var _58=objj_msgSend(objj_msgSend(_56,"arrangedObjects"),"objectsAtIndexes:",objj_msgSend(_56,"selectionIndexes")); +return objj_msgSend(_CPObservableArray,"arrayWithArray:",(_58||[])); +} +}),new objj_method(sel_getUid("setSelectedObjects:"),function(_59,_5a,_5b){ +with(_59){ +objj_msgSend(_59,"willChangeValueForKey:","selectionIndexes"); +objj_msgSend(_59,"_selectionWillChange"); +objj_msgSend(_59,"__setSelectedObjects:",_5b); +objj_msgSend(_59,"didChangeValueForKey:","selectionIndexes"); +objj_msgSend(_59,"_selectionDidChange"); +} +}),new objj_method(sel_getUid("__setSelectedObjects:"),function(_5c,_5d,_5e){ +with(_5c){ +var set=objj_msgSend(CPIndexSet,"indexSet"),_5f=objj_msgSend(_5e,"count"),_60=objj_msgSend(_5c,"arrangedObjects"); +for(var i=0;i<_5f;i++){ +var _61=objj_msgSend(_60,"indexOfObject:",objj_msgSend(_5e,"objectAtIndex:",i)); +if(_61!==CPNotFound){ +objj_msgSend(set,"addIndex:",_61); +} +} +objj_msgSend(_5c,"__setSelectionIndexes:",set); +return YES; +} +}),new objj_method(sel_getUid("canSelectPrevious"),function(_62,_63){ +with(_62){ +return objj_msgSend(objj_msgSend(_62,"selectionIndexes"),"firstIndex")>0; +} +}),new objj_method(sel_getUid("selectPrevious:"),function(_64,_65,_66){ +with(_64){ +var _67=objj_msgSend(objj_msgSend(_64,"selectionIndexes"),"firstIndex")-1; +if(_67>=0){ +objj_msgSend(_64,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_67)); +} +} +}),new objj_method(sel_getUid("canSelectNext"),function(_68,_69){ +with(_68){ +return objj_msgSend(objj_msgSend(_68,"selectionIndexes"),"firstIndex")0){ +objj_msgSend(_71,"__setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",0)); +} +objj_msgSend(_71,"didChangeValueForKey:","content"); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_71,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("removeObject:"),function(_75,_76,_77){ +with(_75){ +if(!objj_msgSend(_75,"canRemove")){ +return; +} +objj_msgSend(_75,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"removeObject:",_77); +if(_filterPredicate===nil||objj_msgSend(_filterPredicate,"evaluateWithObject:",_77)){ +var pos=objj_msgSend(_arrangedObjects,"indexOfObject:",_77); +objj_msgSend(_arrangedObjects,"removeObjectAtIndex:",pos); +objj_msgSend(_selectionIndexes,"shiftIndexesStartingAtIndex:by:",pos,-1); +} +objj_msgSend(_75,"didChangeValueForKey:","content"); +} +}),new objj_method(sel_getUid("add:"),function(_78,_79,_7a){ +with(_78){ +if(!objj_msgSend(_78,"canAdd")){ +return; +} +objj_msgSend(_78,"insert:",_7a); +} +}),new objj_method(sel_getUid("insert:"),function(_7b,_7c,_7d){ +with(_7b){ +if(!objj_msgSend(_7b,"canInsert")){ +return; +} +var _7e=objj_msgSend(_7b,"automaticallyPreparesContent")?objj_msgSend(_7b,"newObject"):objj_msgSend(_7b,"_defaultNewObject"); +objj_msgSend(_7b,"addObject:",_7e); +} +}),new objj_method(sel_getUid("remove:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSend(_7f,"removeObjects:",objj_msgSend(objj_msgSend(_7f,"arrangedObjects"),"objectsAtIndexes:",objj_msgSend(_7f,"selectionIndexes"))); +} +}),new objj_method(sel_getUid("removeObjectsAtArrangedObjectIndexes:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(_82,"_removeObjects:",objj_msgSend(objj_msgSend(_82,"arrangedObjects"),"objectsAtIndexes:",_84)); +} +}),new objj_method(sel_getUid("addObjects:"),function(_85,_86,_87){ +with(_85){ +if(!objj_msgSend(_85,"canAdd")){ +return; +} +var _88=objj_msgSend(_85,"contentArray"),_89=objj_msgSend(_87,"count"); +for(var i=0;i<_89;i++){ +objj_msgSend(_88,"addObject:",objj_msgSend(_87,"objectAtIndex:",i)); +} +objj_msgSend(_85,"setContent:",_88); +} +}),new objj_method(sel_getUid("removeObjects:"),function(_8a,_8b,_8c){ +with(_8a){ +if(!objj_msgSend(_8a,"canRemove")){ +return; +} +objj_msgSend(_8a,"_removeObjects:",_8c); +} +}),new objj_method(sel_getUid("_removeObjects:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8d,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"removeObjectsInArray:",_8f); +var _90=objj_msgSend(_8d,"arrangedObjects"),_91=objj_msgSend(_90,"indexOfObject:",objj_msgSend(_8f,"objectAtIndex:",0)); +objj_msgSend(_90,"removeObjectsInArray:",_8f); +var _92=objj_msgSend(_90,"count"),_93=objj_msgSend(CPIndexSet,"indexSet"); +if(objj_msgSend(_8d,"preservesSelection")||objj_msgSend(_8d,"avoidsEmptySelection")){ +_93=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_91); +if(_92<=0){ +_93=objj_msgSend(CPIndexSet,"indexSet"); +}else{ +if(_91>=_92){ +_93=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_92-1); +} +} +} +_selectionIndexes=_93; +objj_msgSend(_8d,"didChangeValueForKey:","content"); +} +}),new objj_method(sel_getUid("canInsert"),function(_94,_95){ +with(_94){ +return objj_msgSend(_94,"isEditable"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("initialize"),function(_96,_97){ +with(_96){ +if(_96!==objj_msgSend(CPArrayController,"class")){ +return; +} +objj_msgSend(_96,"exposeBinding:","contentArray"); +objj_msgSend(_96,"exposeBinding:","contentSet"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingContentArray"),function(_98,_99){ +with(_98){ +return objj_msgSend(CPSet,"setWithObjects:","content"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingArrangedObjects"),function(_9a,_9b){ +with(_9a){ +return objj_msgSend(CPSet,"setWithObjects:","content","filterPredicate","sortDescriptors"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelection"),function(_9c,_9d){ +with(_9c){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndex"),function(_9e,_9f){ +with(_9e){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndexes"),function(_a0,_a1){ +with(_a0){ +return objj_msgSend(CPSet,"setWithObjects:","arrangedObjects"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedObjects"),function(_a2,_a3){ +with(_a2){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"),function(_a4,_a5){ +with(_a4){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectNext"),function(_a6,_a7){ +with(_a6){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectPrevious"),function(_a8,_a9){ +with(_a8){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +})]); +var _1=objj_getClass("CPArrayController"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArrayController\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_aa,_ab,_ac){ +with(_aa){ +_aa=objj_msgSendSuper({receiver:_aa,super_class:objj_getClass("CPArrayController").super_class},"initWithCoder:",coder); +if(_aa){ +_avoidsEmptySelection=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerAvoidsEmptySelection"); +_clearsFilterPredicateOnInsertion=objj_msgSend(coder,"decodeBoolForKey:","CPClearsFilterPredicateOnInsertion"); +_filterRestrictsInsertion=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerFilterRestrictsInsertion"); +_preservesSelection=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerPreservesSelection"); +_selectsInsertedObjects=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerSelectsInsertedObjects"); +_alwaysUsesMultipleValuesMarker=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerAlwaysUsesMultipleValuesMarker"); +if(objj_msgSend(_aa,"automaticallyPreparesContent")){ +objj_msgSend(_aa,"prepareContent"); +}else{ +objj_msgSend(_aa,"_setContentArray:",[]); +} +} +return _aa; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(_ad,"_selectionWillChange"); +objj_msgSend(_ad,"_selectionDidChange"); +} +})]); +p;14;CPBezierPath.jt;4477;@STATIC;1.0;I;26;AppKit/CPGraphicsContext.jI;21;Foundation/CPObject.jt;4401; +objj_executeFile("AppKit/CPGraphicsContext.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +var _1=1; +var _2=objj_allocateClassPair(CPObject,"CPBezierPath"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_path"),new objj_ivar("_lineWidth")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +if(_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPBezierPath").super_class},"init")){ +_path=CGPathCreateMutable(); +_lineWidth=objj_msgSend(objj_msgSend(_4,"class"),"defaultLineWidth"); +} +return _4; +} +}),new objj_method(sel_getUid("moveToPoint:"),function(_6,_7,_8){ +with(_6){ +CGPathMoveToPoint(_path,nil,_8.x,_8.y); +} +}),new objj_method(sel_getUid("lineToPoint:"),function(_9,_a,_b){ +with(_9){ +CGPathAddLineToPoint(_path,nil,_b.x,_b.y); +} +}),new objj_method(sel_getUid("curveToPoint:controlPoint1:controlPoint2:"),function(_c,_d,_e,_f,_10){ +with(_c){ +CGPathAddCurveToPoint(_path,nil,_f.x,_f.y,_10.x,_10.y,_e.x,_e.y); +} +}),new objj_method(sel_getUid("closePath"),function(_11,_12){ +with(_11){ +CGPathCloseSubpath(_path); +} +}),new objj_method(sel_getUid("stroke"),function(_13,_14){ +with(_13){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(ctx); +CGContextAddPath(ctx,_path); +CGContextSetLineWidth(ctx,objj_msgSend(_13,"lineWidth")); +CGContextClosePath(ctx); +CGContextStrokePath(ctx); +} +}),new objj_method(sel_getUid("fill"),function(_15,_16){ +with(_15){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(ctx); +CGContextAddPath(ctx,_path); +CGContextSetLineWidth(ctx,objj_msgSend(_15,"lineWidth")); +CGContextClosePath(ctx); +CGContextFillPath(ctx); +} +}),new objj_method(sel_getUid("lineWidth"),function(_17,_18){ +with(_17){ +return _lineWidth; +} +}),new objj_method(sel_getUid("setLineWidth:"),function(_19,_1a,_1b){ +with(_19){ +_lineWidth=_1b; +} +}),new objj_method(sel_getUid("elementCount"),function(_1c,_1d){ +with(_1c){ +return _path.count; +} +}),new objj_method(sel_getUid("isEmpty"),function(_1e,_1f){ +with(_1e){ +return CGPathIsEmpty(_path); +} +}),new objj_method(sel_getUid("currentPoint"),function(_20,_21){ +with(_20){ +return CGPathGetCurrentPoint(_path); +} +}),new objj_method(sel_getUid("appendBezierPathWithPoints:count:"),function(_22,_23,_24,_25){ +with(_22){ +CGPathAddLines(_path,nil,_24,_25); +} +}),new objj_method(sel_getUid("appendBezierPathWithRect:"),function(_26,_27,_28){ +with(_26){ +CGPathAddRect(_path,nil,_28); +} +}),new objj_method(sel_getUid("appendBezierPathWithOvalInRect:"),function(_29,_2a,_2b){ +with(_29){ +CGPathAddPath(_path,nil,CGPathWithEllipseInRect(_2b)); +} +}),new objj_method(sel_getUid("appendBezierPathWithRoundedRect:xRadius:yRadius:"),function(_2c,_2d,_2e,_2f,_30){ +with(_2c){ +CGPathAddPath(_path,nil,CGPathWithRoundedRectangleInRect(_2e,_2f,_30,YES,YES,YES,YES)); +} +}),new objj_method(sel_getUid("appendBezierPath:"),function(_31,_32,_33){ +with(_31){ +CGPathAddPath(_path,nil,_33._path); +} +}),new objj_method(sel_getUid("removeAllPoints"),function(_34,_35){ +with(_34){ +_path=CGPathCreateMutable(); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("bezierPath"),function(_36,_37){ +with(_36){ +return objj_msgSend(objj_msgSend(_36,"alloc"),"init"); +} +}),new objj_method(sel_getUid("bezierPathWithOvalInRect:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(_38,"bezierPath"); +objj_msgSend(_3b,"appendBezierPathWithOvalInRect:",_3a); +return _3b; +} +}),new objj_method(sel_getUid("bezierPathWithRect:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=objj_msgSend(_3c,"bezierPath"); +objj_msgSend(_3f,"appendBezierPathWithRect:",_3e); +return _3f; +} +}),new objj_method(sel_getUid("defaultLineWidth"),function(_40,_41){ +with(_40){ +return _1; +} +}),new objj_method(sel_getUid("setDefaultLineWidth:"),function(_42,_43,_44){ +with(_42){ +_1=_44; +} +}),new objj_method(sel_getUid("fillRect:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(objj_msgSend(_45,"bezierPathWithRect:",_47),"fill"); +} +}),new objj_method(sel_getUid("strokeRect:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(objj_msgSend(_48,"bezierPathWithRect:",_4a),"stroke"); +} +}),new objj_method(sel_getUid("strokeLineFromPoint:toPoint:"),function(_4b,_4c,_4d,_4e){ +with(_4b){ +var _4f=objj_msgSend(_4b,"bezierPath"); +objj_msgSend(_4f,"moveToPoint:",_4d); +objj_msgSend(_4f,"lineToPoint:",_4e); +objj_msgSend(_4f,"stroke"); +} +})]); +p;7;CPBox.jt;6994;@STATIC;1.0;i;8;CPView.jt;6963; +objj_executeFile("CPView.j",YES); +CPNoBorder=0; +CPLineBorder=1; +CPBezelBorder=2; +CPGrooveBorder=3; +var _1=objj_allocateClassPair(CPView,"CPBox"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_borderType"),new objj_ivar("_borderColor"),new objj_ivar("_fillColor"),new objj_ivar("_cornerRadius"),new objj_ivar("_borderWidth"),new objj_ivar("_contentMargin"),new objj_ivar("_contentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPBox").super_class},"initWithFrame:",_5); +if(_3){ +_borderType=CPBezelBorder; +_fillColor=objj_msgSend(CPColor,"clearColor"); +_borderColor=objj_msgSend(CPColor,"blackColor"); +_borderWidth=1; +_contentMargin=CGSizeMake(0,0); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",objj_msgSend(_3,"bounds")); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_3,"setAutoresizesSubviews:",YES); +objj_msgSend(_3,"addSubview:",_contentView); +} +return _3; +} +}),new objj_method(sel_getUid("borderRect"),function(_6,_7){ +with(_6){ +return objj_msgSend(_6,"bounds"); +} +}),new objj_method(sel_getUid("borderType"),function(_8,_9){ +with(_8){ +return _borderType; +} +}),new objj_method(sel_getUid("setBorderType:"),function(_a,_b,_c){ +with(_a){ +_borderType=_c; +objj_msgSend(_a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderColor"),function(_d,_e){ +with(_d){ +return _borderColor; +} +}),new objj_method(sel_getUid("setBorderColor:"),function(_f,_10,_11){ +with(_f){ +if(objj_msgSend(_11,"isEqual:",_borderColor)){ +return; +} +_borderColor=_11; +objj_msgSend(_f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderWidth"),function(_12,_13){ +with(_12){ +return _borderWidth; +} +}),new objj_method(sel_getUid("setBorderWidth:"),function(_14,_15,_16){ +with(_14){ +if(_16===_borderWidth){ +return; +} +_borderWidth=_16; +objj_msgSend(_14,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("cornerRadius"),function(_17,_18){ +with(_17){ +return _cornerRadius; +} +}),new objj_method(sel_getUid("setCornerRadius:"),function(_19,_1a,_1b){ +with(_19){ +if(_1b===_cornerRadius){ +return; +} +_cornerRadius=_1b; +objj_msgSend(_19,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("fillColor"),function(_1c,_1d){ +with(_1c){ +return _fillColor; +} +}),new objj_method(sel_getUid("setFillColor:"),function(_1e,_1f,_20){ +with(_1e){ +if(objj_msgSend(_20,"isEqual:",_fillColor)){ +return; +} +_fillColor=_20; +objj_msgSend(_1e,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("contentView"),function(_21,_22){ +with(_21){ +return _contentView; +} +}),new objj_method(sel_getUid("setContentView:"),function(_23,_24,_25){ +with(_23){ +if(_25===_contentView){ +return; +} +objj_msgSend(_25,"setFrame:",CGRectInset(objj_msgSend(_23,"bounds"),_contentMargin.width+_borderWidth,_contentMargin.height+_borderWidth)); +objj_msgSend(_25,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_23,"replaceSubview:with:",_contentView,_25); +_contentView=_25; +} +}),new objj_method(sel_getUid("contentViewMargins"),function(_26,_27){ +with(_26){ +return _contentMargin; +} +}),new objj_method(sel_getUid("setContentViewMargins:"),function(_28,_29,_2a){ +with(_28){ +if(_2a.width<0||_2a.height<0){ +objj_msgSend(CPException,"raise:reason:",CPGenericException,"Margins must be positive"); +} +_contentMargin=CGSizeMakeCopy(_2a); +objj_msgSend(_28,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setFrameFromContentFrame:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"setFrame:",CGRectInset(_2d,-(_contentMargin.width+_borderWidth),-(_contentMargin.height+_borderWidth))); +objj_msgSend(_2b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("sizeToFit"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_contentView,"frame"); +objj_msgSend(_2e,"setFrameSize:",CGSizeMake(_30.size.width+_contentMargin.width*2,_30.size.height+_contentMargin.height*2)); +objj_msgSend(_contentView,"setFrameOrigin:",CGPointMake(_contentMargin.width,_contentMargin.height)); +} +}),new objj_method(sel_getUid("drawRect:"),function(_31,_32,_33){ +with(_31){ +if(_borderType===CPNoBorder){ +return; +} +var _34=objj_msgSend(_31,"bounds"),_35=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetFillColor(_35,objj_msgSend(_31,"fillColor")); +switch(_borderType){ +case CPBezelBorder: +var _36=[CPMinYEdge,CPMaxXEdge,CPMaxYEdge,CPMinXEdge],_37=190/255,_38=[142/255,_37,_37,_37],_39=_borderWidth; +while(_39--){ +_34=CPDrawTiledRects(_34,_34,_36,_38); +} +CGContextFillRect(_35,_34); +break; +default: +_34=CGRectInset(_34,_borderWidth/2,_borderWidth/2); +CGContextSetStrokeColor(_35,objj_msgSend(_31,"borderColor")); +CGContextSetLineWidth(_35,_borderWidth); +CGContextFillRoundedRectangleInRect(_35,_34,_cornerRadius,YES,YES,YES,YES); +CGContextStrokeRoundedRectangleInRect(_35,_34,_cornerRadius,YES,YES,YES,YES); +break; +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("boxEnclosingView:"),function(_3a,_3b,_3c){ +with(_3a){ +var box=objj_msgSend(objj_msgSend(_3a,"alloc"),"initWithFrame:",CGRectMakeZero()),_3d=objj_msgSend(_3c,"superview"); +objj_msgSend(box,"setFrameFromContentFrame:",objj_msgSend(_3c,"frame")); +objj_msgSend(_3d,"replaceSubview:with:",_3c,box); +objj_msgSend(box,"setContentView:",_3c); +return box; +} +})]); +var _3e="CPBoxBorderTypeKey",_3f="CPBoxBorderColorKey",_40="CPBoxFillColorKey",_41="CPBoxCornerRadiusKey",_42="CPBoxBorderWidthKey",_43="CPBoxContentMarginKey"; +var _1=objj_getClass("CPBox"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPBox\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_44,_45,_46){ +with(_44){ +_44=objj_msgSendSuper({receiver:_44,super_class:objj_getClass("CPBox").super_class},"initWithCoder:",_46); +if(_44){ +_borderType=objj_msgSend(_46,"decodeIntForKey:",_3e); +_borderColor=objj_msgSend(_46,"decodeObjectForKey:",_3f); +_fillColor=objj_msgSend(_46,"decodeObjectForKey:",_40); +_cornerRadius=objj_msgSend(_46,"decodeFloatForKey:",_41); +_borderWidth=objj_msgSend(_46,"decodeFloatForKey:",_42); +_contentMargin=objj_msgSend(_46,"decodeSizeForKey:",_43); +_contentView=objj_msgSend(_44,"subviews")[0]; +objj_msgSend(_44,"setAutoresizesSubviews:",YES); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +} +return _44; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_47,_48,_49){ +with(_47){ +objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPBox").super_class},"encodeWithCoder:",_49); +objj_msgSend(_49,"encodeInt:forKey:",_borderType,_3e); +objj_msgSend(_49,"encodeObject:forKey:",_borderColor,_3f); +objj_msgSend(_49,"encodeObject:forKey:",_fillColor,_40); +objj_msgSend(_49,"encodeFloat:forKey:",_cornerRadius,_41); +objj_msgSend(_49,"encodeFloat:forKey:",_borderWidth,_42); +objj_msgSend(_49,"encodeSize:forKey:",_contentMargin,_43); +} +})]); +p;11;CPBrowser.jt;33588;@STATIC;1.0;i;11;CPControl.ji;9;CPImage.ji;13;CPTableView.ji;14;CPScrollView.jt;33502; +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPScrollView.j",YES); +var _1=objj_allocateClassPair(CPControl,"CPBrowser"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_delegate"),new objj_ivar("_pathSeparator"),new objj_ivar("_contentView"),new objj_ivar("_horizontalScrollView"),new objj_ivar("_prototypeView"),new objj_ivar("_tableViews"),new objj_ivar("_tableDelegates"),new objj_ivar("_rootItem"),new objj_ivar("_delegateSupportsImages"),new objj_ivar("_doubleAction"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_tableViewClass"),new objj_ivar("_rowHeight"),new objj_ivar("_imageWidth"),new objj_ivar("_leafWidth"),new objj_ivar("_minColumnWidth"),new objj_ivar("_defaultColumnWidth"),new objj_ivar("_columnWidths")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("doubleAction"),function(_3,_4){ +with(_3){ +return _doubleAction; +} +}),new objj_method(sel_getUid("setDoubleAction:"),function(_5,_6,_7){ +with(_5){ +_doubleAction=_7; +} +}),new objj_method(sel_getUid("tableViewClass"),function(_8,_9){ +with(_8){ +return _tableViewClass; +} +}),new objj_method(sel_getUid("setTableViewClass:"),function(_a,_b,_c){ +with(_a){ +_tableViewClass=_c; +} +}),new objj_method(sel_getUid("defaultColumnWidth"),function(_d,_e){ +with(_d){ +return _defaultColumnWidth; +} +}),new objj_method(sel_getUid("setDefaultColumnWidth:"),function(_f,_10,_11){ +with(_f){ +_defaultColumnWidth=_11; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_12,_13,_14){ +with(_12){ +if(_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPBrowser").super_class},"initWithFrame:",_14)){ +_rowHeight=23; +_defaultColumnWidth=140; +_minColumnWidth=80; +_imageWidth=23; +_leafWidth=13; +_columnWidths=[]; +_pathSeparator="/"; +_tableViews=[]; +_tableDelegates=[]; +_allowsMultipleSelection=YES; +_allowsEmptySelection=YES; +_tableViewClass=objj_msgSend(_CPBrowserTableView,"class"); +_prototypeView=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_prototypeView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_prototypeView,"setValue:forThemeAttribute:inState:",objj_msgSend(CPColor,"whiteColor"),"text-color",CPThemeStateSelectedDataView); +objj_msgSend(_prototypeView,"setLineBreakMode:",CPLineBreakByTruncatingTail); +_horizontalScrollView=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",objj_msgSend(_12,"bounds")); +objj_msgSend(_horizontalScrollView,"setHasVerticalScroller:",NO); +objj_msgSend(_horizontalScrollView,"setAutohidesScrollers:",YES); +objj_msgSend(_horizontalScrollView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,CGRectGetHeight(objj_msgSend(_12,"bounds")))); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewHeightSizable); +objj_msgSend(_horizontalScrollView,"setDocumentView:",_contentView); +objj_msgSend(_12,"addSubview:",_horizontalScrollView); +} +return _12; +} +}),new objj_method(sel_getUid("setPrototypeView:"),function(_15,_16,_17){ +with(_15){ +_prototypeView=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_17)); +} +}),new objj_method(sel_getUid("prototypeView"),function(_18,_19){ +with(_18){ +return objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_prototypeView)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_1a,_1b,_1c){ +with(_1a){ +_delegate=_1c; +_delegateSupportsImages=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:imageValueForItem:")); +objj_msgSend(_1a,"loadColumnZero"); +} +}),new objj_method(sel_getUid("delegate"),function(_1d,_1e){ +with(_1d){ +return _delegate; +} +}),new objj_method(sel_getUid("tableViewInColumn:"),function(_1f,_20,_21){ +with(_1f){ +return _tableViews[_21]; +} +}),new objj_method(sel_getUid("columnOfTableView:"),function(_22,_23,_24){ +with(_22){ +return objj_msgSend(_tableViews,"indexOfObject:",_24); +} +}),new objj_method(sel_getUid("loadColumnZero"),function(_25,_26){ +with(_25){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("rootItemForBrowser:"))){ +_rootItem=objj_msgSend(_delegate,"rootItemForBrowser:",_25); +}else{ +_rootItem=nil; +} +objj_msgSend(_25,"setLastColumn:",-1); +objj_msgSend(_25,"addColumn"); +} +}),new objj_method(sel_getUid("setLastColumn:"),function(_27,_28,_29){ +with(_27){ +if(_29>=_tableViews.length){ +return; +} +var _2a=_tableViews.length-1; +var _2b=_29+1; +objj_msgSend(objj_msgSend(_tableViews.slice(_2b),"valueForKey:","enclosingScrollView"),"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +_tableViews=_tableViews.slice(0,_2b); +_tableDelegates=_tableDelegates.slice(0,_2b); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:didChangeLastColumn:toColumn:"))){ +objj_msgSend(_delegate,"browser:didChangeLastColumn:toColumn:",_27,_2a,_29); +} +objj_msgSend(_27,"tile"); +} +}),new objj_method(sel_getUid("lastColumn"),function(_2c,_2d){ +with(_2c){ +return _tableViews.length-1; +} +}),new objj_method(sel_getUid("addColumn"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_2e,"lastColumn"),_31=_tableViews[_30],_32=objj_msgSend(_31,"selectedRowIndexes"); +if(_30>=0&&objj_msgSend(_32,"count")>1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Can't add column, column "+_30+" has invalid selection."); +} +var _33=_30+1,_34=_33===0?_rootItem:objj_msgSend(_tableDelegates[_30],"childAtIndex:",objj_msgSend(_32,"firstIndex")); +if(_33>0&&_34&&objj_msgSend(_2e,"isLeafItem:",_34)){ +return; +} +var _35=objj_msgSend(objj_msgSend(_tableViewClass,"alloc"),"initWithFrame:browser:",CGRectMakeZero(),_2e); +objj_msgSend(_35,"setHeaderView:",nil); +objj_msgSend(_35,"setCornerView:",nil); +objj_msgSend(_35,"setAllowsMultipleSelection:",_allowsMultipleSelection); +objj_msgSend(_35,"setAllowsEmptySelection:",_allowsEmptySelection); +objj_msgSend(_35,"registerForDraggedTypes:",objj_msgSend(_2e,"registeredDraggedTypes")); +objj_msgSend(_2e,"_addTableColumnsToTableView:forColumnIndex:",_35,_33); +var _36=objj_msgSend(objj_msgSend(_CPBrowserTableDelegate,"alloc"),"init"); +objj_msgSend(_36,"_setDelegate:",_delegate); +objj_msgSend(_36,"_setBrowser:",_2e); +objj_msgSend(_36,"_setIndex:",_33); +objj_msgSend(_36,"_setItem:",_34); +_tableViews[_33]=_35; +_tableDelegates[_33]=_36; +objj_msgSend(_35,"setDelegate:",_36); +objj_msgSend(_35,"setDataSource:",_36); +objj_msgSend(_35,"setTarget:",_36); +objj_msgSend(_35,"setAction:",sel_getUid("_tableViewClicked:")); +objj_msgSend(_35,"setDoubleAction:",sel_getUid("_tableViewDoubleClicked:")); +objj_msgSend(_35,"setDraggingDestinationFeedbackStyle:",CPTableViewDraggingDestinationFeedbackStyleRegular); +var _37=objj_msgSend(objj_msgSend(_CPBrowserScrollView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_37,"_setBrowser:",_2e); +objj_msgSend(_37,"setDocumentView:",_35); +objj_msgSend(_37,"setHasHorizontalScroller:",NO); +objj_msgSend(_37,"setAutoresizingMask:",CPViewHeightSizable); +objj_msgSend(_contentView,"addSubview:",_37); +objj_msgSend(_2e,"tile"); +objj_msgSend(_2e,"scrollColumnToVisible:",_33); +} +}),new objj_method(sel_getUid("_addTableColumnsToTableView:forColumnIndex:"),function(_38,_39,_3a,_3b){ +with(_38){ +if(_delegateSupportsImages){ +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Image"),_3d=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_3d,"setImageScaling:",CPScaleProportionally); +objj_msgSend(_3c,"setDataView:",_3d); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +} +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Content"); +objj_msgSend(_3c,"setDataView:",_prototypeView); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Leaf"),_3d=objj_msgSend(objj_msgSend(_CPBrowserLeafView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_3d,"setBranchImage:",objj_msgSend(objj_msgSend(_38,"class"),"branchImage")); +objj_msgSend(_3d,"setHighlightedBranchImage:",objj_msgSend(objj_msgSend(_38,"class"),"highlightedBranchImage")); +objj_msgSend(_3c,"setDataView:",_3d); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +} +}),new objj_method(sel_getUid("reloadColumn:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(objj_msgSend(_3e,"tableViewInColumn:",_40),"reloadData"); +} +}),new objj_method(sel_getUid("tile"),function(_41,_42){ +with(_41){ +var _43=0,_44=objj_msgSend(CPScroller,"scrollerWidth"),_45=CGRectGetHeight(objj_msgSend(_contentView,"bounds")); +for(var i=0,_46=_tableViews.length;i<_46;i++){ +var _47=_tableViews[i],_48=objj_msgSend(_47,"enclosingScrollView"),_49=objj_msgSend(_41,"widthOfColumn:",i),_4a=CGRectGetHeight(objj_msgSend(_47,"bounds")); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Image"),"setWidth:",_imageWidth); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Content"),"setWidth:",_49-(_leafWidth+_delegateSupportsImages?_imageWidth:0)-_44-_44); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Leaf"),"setWidth:",_leafWidth); +objj_msgSend(_47,"setRowHeight:",_rowHeight); +objj_msgSend(_47,"setFrameSize:",CGSizeMake(_49-_44,_4a)); +objj_msgSend(_48,"setFrameOrigin:",CGPointMake(_43,0)); +objj_msgSend(_48,"setFrameSize:",CGSizeMake(_49,_45)); +_43+=_49; +} +objj_msgSend(_contentView,"setFrameSize:",CGSizeMake(_43,_45)); +} +}),new objj_method(sel_getUid("rowAtPoint:"),function(_4b,_4c,_4d){ +with(_4b){ +var _4e=objj_msgSend(_4b,"columnAtPoint:",_4d); +if(_4e===-1){ +return -1; +} +var _4f=_tableViews[_4e]; +return objj_msgSend(_4f,"rowAtPoint:",objj_msgSend(_4f,"convertPoint:fromView:",_4d,_4b)); +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(_50,_51,_52){ +with(_50){ +var _53=objj_msgSend(_contentView,"convertPoint:fromView:",_52,_50); +for(var i=0,_54=_tableViews.length;i<_54;i++){ +var _55=objj_msgSend(objj_msgSend(_tableViews[i],"enclosingScrollView"),"frame"); +if(CGRectContainsPoint(_55,_53)){ +return i; +} +} +return -1; +} +}),new objj_method(sel_getUid("rectOfRow:inColumn:"),function(_56,_57,_58,_59){ +with(_56){ +var _5a=_tableViews[_59],_5b=objj_msgSend(_5a,"rectOfRow:",_58); +_5b.origin=objj_msgSend(_56,"convertPoint:fromView:",_5b.origin,_5a); +return _5b; +} +}),new objj_method(sel_getUid("itemAtRow:inColumn:"),function(_5c,_5d,row,_5e){ +with(_5c){ +return objj_msgSend(_tableDelegates[_5e],"childAtIndex:",row); +} +}),new objj_method(sel_getUid("isLeafItem:"),function(_5f,_60,_61){ +with(_5f){ +return objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:isLeafItem:"))&&objj_msgSend(_delegate,"browser:isLeafItem:",_5f,_61); +} +}),new objj_method(sel_getUid("parentForItemsInColumn:"),function(_62,_63,_64){ +with(_62){ +return objj_msgSend(_tableDelegates[_64],"_item"); +} +}),new objj_method(sel_getUid("selectedItems"),function(_65,_66){ +with(_65){ +var _67=objj_msgSend(_65,"selectedColumn"),_68=objj_msgSend(_65,"selectedRowIndexesInColumn:",_67),set=objj_msgSend(CPSet,"set"),_69=objj_msgSend(_68,"firstIndex"); +while(_69!==CPNotFound){ +objj_msgSend(set,"addObject:",objj_msgSend(_65,"itemAtRow:inColumn:",_69,_67)); +_69=objj_msgSend(_68,"indexGreaterThanIndex:",_69); +} +return set; +} +}),new objj_method(sel_getUid("selectedItem"),function(_6a,_6b){ +with(_6a){ +var _6c=objj_msgSend(_6a,"selectedColumn"),_6d=objj_msgSend(_6a,"selectedRowInColumn:",_6c); +return objj_msgSend(_6a,"itemAtRow:inColumn:",_6d,_6c); +} +}),new objj_method(sel_getUid("trackMouse:"),function(_6e,_6f,_70){ +with(_6e){ +} +}),new objj_method(sel_getUid("_column:clickedRow:"),function(_71,_72,_73,_74){ +with(_71){ +objj_msgSend(_71,"setLastColumn:",_73); +if(_74>=0){ +objj_msgSend(_71,"addColumn"); +} +objj_msgSend(_71,"doClick:",_71); +} +}),new objj_method(sel_getUid("sendAction"),function(_75,_76){ +with(_75){ +objj_msgSend(_75,"sendAction:to:",_action,_target); +} +}),new objj_method(sel_getUid("doClick:"),function(_77,_78,_79){ +with(_77){ +objj_msgSend(_77,"sendAction:to:",_action,_target); +} +}),new objj_method(sel_getUid("doDoubleClick:"),function(_7a,_7b,_7c){ +with(_7a){ +objj_msgSend(_7a,"sendAction:to:",_doubleAction,_target); +} +}),new objj_method(sel_getUid("keyDown:"),function(_7d,_7e,_7f){ +with(_7d){ +var _80=objj_msgSend(_7d,"selectedColumn"); +if(_80===-1){ +return; +} +objj_msgSend(_tableViews[_80],"keyDown:",_7f); +} +}),new objj_method(sel_getUid("columnContentWidthForColumnWidth:"),function(_81,_82,_83){ +with(_81){ +return _83-(_leafWidth+_delegateSupportsImages?_imageWidth:0)-objj_msgSend(CPScroller,"scrollerWidth"); +} +}),new objj_method(sel_getUid("columnWidthForColumnContentWidth:"),function(_84,_85,_86){ +with(_84){ +return _86+(_leafWidth+_delegateSupportsImages?_imageWidth:0)+objj_msgSend(CPScroller,"scrollerWidth"); +} +}),new objj_method(sel_getUid("setImageWidth:"),function(_87,_88,_89){ +with(_87){ +_imageWidth=_89; +objj_msgSend(_87,"tile"); +} +}),new objj_method(sel_getUid("imageWidth"),function(_8a,_8b){ +with(_8a){ +return _imageWidth; +} +}),new objj_method(sel_getUid("setMinColumnWidth:"),function(_8c,_8d,_8e){ +with(_8c){ +_minColumnWidth=_8e; +objj_msgSend(_8c,"tile"); +} +}),new objj_method(sel_getUid("minColumnWidth"),function(_8f,_90){ +with(_8f){ +return _minColumnWidth; +} +}),new objj_method(sel_getUid("setWidth:ofColumn:"),function(_91,_92,_93,_94){ +with(_91){ +_columnWidths[_94]=_93; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:didResizeColumn:"))){ +objj_msgSend(_delegate,"browser:didResizeColumn:",_91,_94); +} +objj_msgSend(_91,"tile"); +} +}),new objj_method(sel_getUid("widthOfColumn:"),function(_95,_96,_97){ +with(_95){ +var _98=_columnWidths[_97]; +if(_98==null){ +_98=_defaultColumnWidth; +} +return MAX(objj_msgSend(CPScroller,"scrollerWidth"),MAX(_minColumnWidth,_98)); +} +}),new objj_method(sel_getUid("setRowHeight:"),function(_99,_9a,_9b){ +with(_99){ +_rowHeight=_9b; +} +}),new objj_method(sel_getUid("rowHeight"),function(_9c,_9d){ +with(_9c){ +return _rowHeight; +} +}),new objj_method(sel_getUid("scrollColumnToVisible:"),function(_9e,_9f,_a0){ +with(_9e){ +objj_msgSend(_contentView,"scrollRectToVisible:",objj_msgSend(objj_msgSend(objj_msgSend(_9e,"tableViewInColumn:",_a0),"enclosingScrollView"),"frame")); +} +}),new objj_method(sel_getUid("autohidesScroller"),function(_a1,_a2){ +with(_a1){ +return objj_msgSend(_horizontalScrollView,"autohidesScrollers"); +} +}),new objj_method(sel_getUid("setAutohidesScroller:"),function(_a3,_a4,_a5){ +with(_a3){ +objj_msgSend(_horizontalScrollView,"setAutohidesScrollers:",_a5); +} +}),new objj_method(sel_getUid("selectedRowInColumn:"),function(_a6,_a7,_a8){ +with(_a6){ +if(_a8>objj_msgSend(_a6,"lastColumn")||_a8<0){ +return -1; +} +return objj_msgSend(_tableViews[_a8],"selectedRow"); +} +}),new objj_method(sel_getUid("selectedColumn"),function(_a9,_aa){ +with(_a9){ +var _ab=objj_msgSend(_a9,"lastColumn"),row=objj_msgSend(_a9,"selectedRowInColumn:",_ab); +if(row>=0){ +return _ab; +}else{ +return _ab-1; +} +} +}),new objj_method(sel_getUid("selectRow:inColumn:"),function(_ac,_ad,row,_ae){ +with(_ac){ +var _af=row===-1?objj_msgSend(CPIndexSet,"indexSet"):objj_msgSend(CPIndexSet,"indexSetWithIndex:",row); +objj_msgSend(_ac,"selectRowIndexes:inColumn:",_af,_ae); +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_b0,_b1){ +with(_b0){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_b2,_b3,_b4){ +with(_b2){ +if(_allowsMultipleSelection===_b4){ +return; +} +_allowsMultipleSelection=_b4; +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setAllowsMultipleSelection:"),_b4); +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_b5,_b6){ +with(_b5){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_b7,_b8,_b9){ +with(_b7){ +if(_allowsEmptySelection===_b9){ +return; +} +_allowsEmptySelection=_b9; +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setAllowsEmptySelection:"),_b9); +} +}),new objj_method(sel_getUid("selectedRowIndexesInColumn:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_bc<0||_bc>objj_msgSend(_ba,"lastColumn")+1){ +return objj_msgSend(CPIndexSet,"indexSet"); +} +return objj_msgSend(objj_msgSend(_ba,"tableViewInColumn:",_bc),"selectedRowIndexes"); +} +}),new objj_method(sel_getUid("selectRowIndexes:inColumn:"),function(_bd,_be,_bf,_c0){ +with(_bd){ +if(_c0<0||_c0>objj_msgSend(_bd,"lastColumn")+1){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:selectionIndexesForProposedSelection:inColumn:"))){ +_bf=objj_msgSend(_delegate,"browser:selectionIndexesForProposedSelection:inColumn:",_bd,_bf,_c0); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:shouldSelectRowIndexes:inColumn:"))&&!objj_msgSend(_delegate,"browser:shouldSelectRowIndexes:inColumn:",_bd,_bf,_c0)){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browserSelectionIsChanging:"))){ +objj_msgSend(_delegate,"browserSelectionIsChanging:",_bd); +} +if(_c0>objj_msgSend(_bd,"lastColumn")){ +objj_msgSend(_bd,"addColumn"); +} +objj_msgSend(_bd,"setLastColumn:",_c0); +objj_msgSend(objj_msgSend(_bd,"tableViewInColumn:",_c0),"selectRowIndexes:byExtendingSelection:",_bf,NO); +objj_msgSend(_bd,"scrollColumnToVisible:",_c0); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browserSelectionDidChange:"))){ +objj_msgSend(_delegate,"browserSelectionDidChange:",_bd); +} +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSendSuper({receiver:_c1,super_class:objj_getClass("CPBrowser").super_class},"setBackgroundColor:",_c3); +objj_msgSend(_contentView,"setBackgroundColor:",_c3); +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_c4,_c5){ +with(_c4){ +return YES; +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(_c6,_c7,_c8){ +with(_c6){ +objj_msgSendSuper({receiver:_c6,super_class:objj_getClass("CPBrowser").super_class},"registerForDraggedTypes:",_c8); +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("registerForDraggedTypes:"),_c8); +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:inColumn:withEvent:"),function(_c9,_ca,_cb,_cc,_cd){ +with(_c9){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:canDragRowsWithIndexes:inColumn:withEvent:"))){ +return objj_msgSend(_delegate,"browser:canDragRowsWithIndexes:inColumn:withEvent:",_c9,_cb,_cc,_cd); +} +return YES; +} +}),new objj_method(sel_getUid("draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"),function(_ce,_cf,_d0,_d1,_d2,_d3){ +with(_ce){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"))){ +return objj_msgSend(_delegate,"browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",_ce,_d0,_d1,_d2,_d3); +} +return nil; +} +}),new objj_method(sel_getUid("draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"),function(_d4,_d5,_d6,_d7,_d8,_d9){ +with(_d4){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"))){ +return objj_msgSend(_delegate,"browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:",_d4,_d6,_d7,_d8,_d9); +} +return nil; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("branchImage"),function(_da,_db){ +with(_da){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPBrowser,"class")),"pathForResource:","browser-leaf.png"),CGSizeMake(9,9)); +} +}),new objj_method(sel_getUid("highlightedBranchImage"),function(_dc,_dd){ +with(_dc){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPBrowser,"class")),"pathForResource:","browser-leaf-highlighted.png"),CGSizeMake(9,9)); +} +})]); +var _de=nil; +var _1=objj_allocateClassPair(CPView,"_CPBrowserResizeControl"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_mouseDownX"),new objj_ivar("_browser"),new objj_ivar("_index"),new objj_ivar("_width")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_df,_e0,_e1){ +with(_df){ +if(_df=objj_msgSendSuper({receiver:_df,super_class:objj_getClass("_CPBrowserResizeControl").super_class},"initWithFrame:",_e1)){ +objj_msgSend(_df,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(_df,"class"),"backgroundImage"))); +} +return _df; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_e2,_e3,_e4){ +with(_e2){ +_mouseDownX=objj_msgSend(_e4,"locationInWindow").x; +_browser=objj_msgSend(objj_msgSend(_e2,"superview"),"_browser"); +_index=objj_msgSend(_browser,"columnOfTableView:",objj_msgSend(objj_msgSend(_e2,"superview"),"documentView")); +_width=objj_msgSend(_browser,"widthOfColumn:",_index); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_e5,_e6,_e7){ +with(_e5){ +var _e8=objj_msgSend(_e7,"locationInWindow").x-_mouseDownX; +objj_msgSend(_browser,"setWidth:ofColumn:",_width+_e8,_index); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_e9,_ea,_eb){ +with(_e9){ +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("backgroundImage"),function(_ec,_ed){ +with(_ec){ +if(!_de){ +var _ee=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_ec,"class")),"pathForResource:","browser-resize-control.png"); +_de=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",_ee,CGSizeMake(15,14)); +} +return _de; +} +})]); +var _1=objj_allocateClassPair(CPScrollView,"_CPBrowserScrollView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_resizeControl"),new objj_ivar("_browser")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_browser"),function(_ef,_f0){ +with(_ef){ +return _browser; +} +}),new objj_method(sel_getUid("_setBrowser:"),function(_f1,_f2,_f3){ +with(_f1){ +_browser=_f3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f4,_f5,_f6){ +with(_f4){ +if(_f4=objj_msgSendSuper({receiver:_f4,super_class:objj_getClass("_CPBrowserScrollView").super_class},"initWithFrame:",_f6)){ +_resizeControl=objj_msgSend(objj_msgSend(_CPBrowserResizeControl,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_f4,"addSubview:",_resizeControl); +} +return _f4; +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(_f7,_f8,_f9){ +with(_f7){ +objj_msgSendSuper({receiver:_f7,super_class:objj_getClass("_CPBrowserScrollView").super_class},"reflectScrolledClipView:",_f9); +var _fa=objj_msgSend(_verticalScroller,"frame"); +_fa.size.height=CGRectGetHeight(objj_msgSend(_f7,"bounds"))-14-_fa.origin.y; +objj_msgSend(_verticalScroller,"setFrameSize:",_fa.size); +var _fb=CGRectMake(CGRectGetMinX(_fa),CGRectGetMaxY(_fa),objj_msgSend(CPScroller,"scrollerWidth"),14); +objj_msgSend(_resizeControl,"setFrame:",_fb); +} +})]); +var _1=objj_allocateClassPair(CPTableView,"_CPBrowserTableView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_browser")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:browser:"),function(_fc,_fd,_fe,_ff){ +with(_fc){ +if(_fc=objj_msgSendSuper({receiver:_fc,super_class:objj_getClass("_CPBrowserTableView").super_class},"initWithFrame:",_fe)){ +_browser=_ff; +} +return _fc; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(self,_100){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("mouseDown:"),function(self,_101,_102){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"mouseDown:",_102); +objj_msgSend(objj_msgSend(self,"window"),"makeFirstResponder:",_browser); +} +}),new objj_method(sel_getUid("browserView"),function(self,_103){ +with(self){ +return _browser; +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"),function(self,_104,_105,_106){ +with(self){ +return objj_msgSend(_browser,"canDragRowsWithIndexes:inColumn:withEvent:",_105,objj_msgSend(_browser,"columnOfTableView:",self),objj_msgSend(CPApp,"currentEvent")); +} +}),new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"),function(self,_107,_108,_109,_10a,_10b){ +with(self){ +return objj_msgSend(_browser,"draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",_108,objj_msgSend(_browser,"columnOfTableView:",self),_10a,_10b)||objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"dragImageForRowsWithIndexes:tableColumns:event:offset:",_108,_109,_10a,_10b); +} +}),new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"),function(self,_10c,_10d,_10e,_10f,_110){ +with(self){ +var _111=_10e.length; +while(_111--){ +if(objj_msgSend(_10e[_111],"identifier")==="Leaf"){ +objj_msgSend(_10e,"removeObject:",_10e[_111]); +} +} +return objj_msgSend(_browser,"draggingViewForRowsWithIndexes:inColumn:withEvent:offset:",_10d,objj_msgSend(_browser,"columnOfTableView:",self),_10f,_110)||objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"dragViewForRowsWithIndexes:tableColumns:event:offset:",_10d,_10e,_10f,_110); +} +}),new objj_method(sel_getUid("moveUp:"),function(self,_112,_113){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"moveUp:",_113); +objj_msgSend(_browser,"selectRow:inColumn:",objj_msgSend(self,"selectedRow"),objj_msgSend(_browser,"selectedColumn")); +} +}),new objj_method(sel_getUid("moveDown:"),function(self,_114,_115){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"moveDown:",_115); +objj_msgSend(_browser,"selectRow:inColumn:",objj_msgSend(self,"selectedRow"),objj_msgSend(_browser,"selectedColumn")); +} +}),new objj_method(sel_getUid("moveLeft:"),function(self,_116,_117){ +with(self){ +var _118=objj_msgSend(_browser,"selectedColumn")-1,_119=objj_msgSend(_browser,"selectedRowInColumn:",_118); +objj_msgSend(_browser,"selectRow:inColumn:",_119,_118); +} +}),new objj_method(sel_getUid("moveRight:"),function(self,_11a,_11b){ +with(self){ +objj_msgSend(_browser,"selectRow:inColumn:",0,objj_msgSend(_browser,"selectedColumn")+1); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPBrowserTableDelegate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_browser"),new objj_ivar("_index"),new objj_ivar("_delegate"),new objj_ivar("_item")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_browser"),function(self,_11c){ +with(self){ +return _browser; +} +}),new objj_method(sel_getUid("_setBrowser:"),function(self,_11d,_11e){ +with(self){ +_browser=_11e; +} +}),new objj_method(sel_getUid("_index"),function(self,_11f){ +with(self){ +return _index; +} +}),new objj_method(sel_getUid("_setIndex:"),function(self,_120,_121){ +with(self){ +_index=_121; +} +}),new objj_method(sel_getUid("_delegate"),function(self,_122){ +with(self){ +return _delegate; +} +}),new objj_method(sel_getUid("_setDelegate:"),function(self,_123,_124){ +with(self){ +_delegate=_124; +} +}),new objj_method(sel_getUid("_item"),function(self,_125){ +with(self){ +return _item; +} +}),new objj_method(sel_getUid("_setItem:"),function(self,_126,_127){ +with(self){ +_item=_127; +} +}),new objj_method(sel_getUid("numberOfRowsInTableView:"),function(self,_128,_129){ +with(self){ +return objj_msgSend(_delegate,"browser:numberOfChildrenOfItem:",_browser,_item); +} +}),new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"),function(self,_12a,_12b,_12c,row){ +with(self){ +if(objj_msgSend(_12c,"identifier")==="Image"){ +return objj_msgSend(_delegate,"browser:imageValueForItem:",_browser,objj_msgSend(self,"childAtIndex:",row)); +}else{ +if(objj_msgSend(_12c,"identifier")==="Leaf"){ +return !objj_msgSend(_browser,"isLeafItem:",objj_msgSend(self,"childAtIndex:",row)); +}else{ +return objj_msgSend(_delegate,"browser:objectValueForItem:",_browser,objj_msgSend(self,"childAtIndex:",row)); +} +} +} +}),new objj_method(sel_getUid("_tableViewDoubleClicked:"),function(self,_12d,_12e){ +with(self){ +objj_msgSend(_browser,"doDoubleClick:",self); +} +}),new objj_method(sel_getUid("_tableViewClicked:"),function(self,_12f,_130){ +with(self){ +var _131=objj_msgSend(_130,"selectedRowIndexes"); +objj_msgSend(_browser,"_column:clickedRow:",_index,objj_msgSend(_131,"count")===1?objj_msgSend(_131,"firstIndex"):-1); +} +}),new objj_method(sel_getUid("childAtIndex:"),function(self,_132,_133){ +with(self){ +return objj_msgSend(_delegate,"browser:child:ofItem:",_browser,_133,_item); +} +}),new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"),function(self,_134,_135,info,row,_136){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:acceptDrop:atRow:column:dropOperation:"))){ +return objj_msgSend(_delegate,"browser:acceptDrop:atRow:column:dropOperation:",_browser,info,row,_index,_136); +}else{ +return NO; +} +} +}),new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"),function(self,_137,_138,info,row,_139){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:validateDrop:proposedRow:column:dropOperation:"))){ +return objj_msgSend(_delegate,"browser:validateDrop:proposedRow:column:dropOperation:",_browser,info,row,_index,_139); +}else{ +return CPDragOperationNone; +} +} +}),new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"),function(self,_13a,_13b,_13c,_13d){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:"))){ +return objj_msgSend(_delegate,"browser:writeRowsWithIndexes:inColumn:toPasteboard:",_browser,_13c,_index,_13d); +}else{ +return NO; +} +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(self,_13e,_13f){ +with(self){ +if(_13f===sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")){ +return objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")); +}else{ +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableDelegate").super_class},"respondsToSelector:",_13f); +} +} +})]); +var _1=objj_allocateClassPair(CPView,"_CPBrowserLeafView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isLeaf"),new objj_ivar("_branchImage"),new objj_ivar("_highlightedBranchImage")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isLeaf"),function(self,_140){ +with(self){ +return _isLeaf; +} +}),new objj_method(sel_getUid("branchImage"),function(self,_141){ +with(self){ +return _branchImage; +} +}),new objj_method(sel_getUid("setBranchImage:"),function(self,_142,_143){ +with(self){ +_branchImage=_143; +} +}),new objj_method(sel_getUid("highlightedBranchImage"),function(self,_144){ +with(self){ +return _highlightedBranchImage; +} +}),new objj_method(sel_getUid("setHighlightedBranchImage:"),function(self,_145,_146){ +with(self){ +_highlightedBranchImage=_146; +} +}),new objj_method(sel_getUid("objectValue"),function(self,_147){ +with(self){ +return _isLeaf; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(self,_148,_149){ +with(self){ +_isLeaf=!!_149; +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(self,_14a,_14b){ +with(self){ +if(_14b==="image-view"){ +return CGRectInset(objj_msgSend(self,"bounds"),1,1); +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"rectForEphemeralSubviewNamed:",_14b); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(self,_14c,_14d){ +with(self){ +if(_14d==="image-view"){ +return objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"createEphemeralSubviewNamed:",_14d); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_14e){ +with(self){ +var _14f=objj_msgSend(self,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","image-view",CPWindowAbove,nil); +var _150=objj_msgSend(self,"themeState")&CPThemeStateSelectedDataView; +objj_msgSend(_14f,"setImage:",_isLeaf?(_150?_highlightedBranchImage:_branchImage):nil); +objj_msgSend(_14f,"setImageScaling:",CPScaleNone); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_151,_152){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"encodeWithCoder:",_152); +objj_msgSend(_152,"encodeBool:forKey:",_isLeaf,"_CPBrowserLeafViewIsLeafKey"); +objj_msgSend(_152,"encodeObject:forKey:",_branchImage,"_CPBrowserLeafViewBranchImageKey"); +objj_msgSend(_152,"encodeObject:forKey:",_highlightedBranchImage,"_CPBrowserLeafViewHighlightedBranchImageKey"); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(self,_153,_154){ +with(self){ +if(self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"initWithCoder:",_154)){ +_isLeaf=objj_msgSend(_154,"decodeBoolForKey:","_CPBrowserLeafViewIsLeafKey"); +_branchImage=objj_msgSend(_154,"decodeObjectForKey:","_CPBrowserLeafViewBranchImageKey"); +_highlightedBranchImage=objj_msgSend(_154,"decodeObjectForKey:","_CPBrowserLeafViewHighlightedBranchImageKey"); +} +return self; +} +})]); +p;10;CPButton.jt;18863;@STATIC;1.0;i;21;_CPImageAndTextView.ji;12;CGGeometry.ji;11;CPControl.ji;17;CPStringDrawing.ji;12;CPCheckBox.ji;9;CPRadio.jt;18732; +objj_executeFile("_CPImageAndTextView.j",YES); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPStringDrawing.j",YES); +CPRoundedBezelStyle=1; +CPRegularSquareBezelStyle=2; +CPThickSquareBezelStyle=3; +CPThickerSquareBezelStyle=4; +CPDisclosureBezelStyle=5; +CPShadowlessSquareBezelStyle=6; +CPCircularBezelStyle=7; +CPTexturedSquareBezelStyle=8; +CPHelpButtonBezelStyle=9; +CPSmallSquareBezelStyle=10; +CPTexturedRoundedBezelStyle=11; +CPRoundRectBezelStyle=12; +CPRecessedBezelStyle=13; +CPRoundedDisclosureBezelStyle=14; +CPHUDBezelStyle=-1; +CPMomentaryLightButton=0; +CPPushOnPushOffButton=1; +CPToggleButton=2; +CPSwitchButton=3; +CPRadioButton=4; +CPMomentaryChangeButton=5; +CPOnOffButton=6; +CPMomentaryPushInButton=7; +CPMomentaryPushButton=0; +CPMomentaryLight=7; +CPNoButtonMask=0; +CPContentsButtonMask=1; +CPPushInButtonMask=2; +CPGrayButtonMask=4; +CPBackgroundButtonMask=8; +CPNoCellMask=CPNoButtonMask; +CPContentsCellMask=CPContentsButtonMask; +CPPushInCellMask=CPPushInButtonMask; +CPChangeGrayCellMask=CPGrayButtonMask; +CPChangeBackgroundCellMask=CPBackgroundButtonMask; +CPButtonStateMixed=CPThemeState("mixed"); +CPButtonDefaultHeight=24; +CPButtonImageOffset=3; +var _1=objj_allocateClassPair(CPControl,"CPButton"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_allowsMixedState"),new objj_ivar("_title"),new objj_ivar("_alternateTitle"),new objj_ivar("_showsStateBy"),new objj_ivar("_highlightsBy"),new objj_ivar("_imageDimsWhenDisabled"),new objj_ivar("_bezelStyle"),new objj_ivar("_controlSize"),new objj_ivar("_keyEquivalent"),new objj_ivar("_keyEquivalentModifierMask")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPButton").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setValue:forThemeAttribute:",CPCenterTextAlignment,"alignment"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPCenterVerticalTextAlignment,"vertical-alignment"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPImageLeft,"image-position"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPScaleNone,"image-scaling"); +_controlSize=CPRegularControlSize; +_keyEquivalent=""; +_keyEquivalentModifierMask=0; +objj_msgSend(_3,"setBordered:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("allowsMixedState"),function(_6,_7){ +with(_6){ +return _allowsMixedState; +} +}),new objj_method(sel_getUid("setAllowsMixedState:"),function(_8,_9,_a){ +with(_8){ +_a=!!_a; +if(_allowsMixedState===_a){ +return; +} +_allowsMixedState=_a; +if(!_allowsMixedState&&objj_msgSend(_8,"state")===CPMixedState){ +objj_msgSend(_8,"setState:",CPOnState); +} +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_b,_c,_d){ +with(_b){ +if(!_d||_d===""||(objj_msgSend(_d,"intValue")===0)){ +_d=CPOffState; +}else{ +if(!objj_msgSend(_d,"isKindOfClass:",objj_msgSend(CPNumber,"class"))){ +_d=CPOnState; +}else{ +if(_d>CPOnState){ +_d=CPOnState; +}else{ +if(_d=0){ +_53.width=MIN(_53.width,_57.width); +} +if(_57.height>=0){ +_53.height=MIN(_53.height,_57.height); +} +objj_msgSend(_51,"setFrameSize:",_53); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_58,_59,_5a){ +with(_58){ +if(_5a==="bezel-view"){ +return objj_msgSend(_58,"bezelRectForBounds:",objj_msgSend(_58,"bounds")); +}else{ +if(_5a==="content-view"){ +return objj_msgSend(_58,"contentRectForBounds:",objj_msgSend(_58,"bounds")); +} +} +return objj_msgSendSuper({receiver:_58,super_class:objj_getClass("CPButton").super_class},"rectForEphemeralSubviewNamed:",_5a); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d==="bezel-view"){ +var _5e=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_5e,"setHitTests:",NO); +return _5e; +}else{ +return objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_5f,_60){ +with(_5f){ +var _61=objj_msgSend(_5f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","bezel-view",CPWindowBelow,"content-view"); +objj_msgSend(_61,"setBackgroundColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","bezel-color")); +var _62=objj_msgSend(_5f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","content-view",CPWindowAbove,"bezel-view"); +if(_62){ +objj_msgSend(_62,"setText:",(objj_msgSend(_5f,"hasThemeState:",CPThemeStateHighlighted)&&_alternateTitle)?_alternateTitle:_title); +objj_msgSend(_62,"setImage:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image")); +objj_msgSend(_62,"setImageOffset:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-offset")); +objj_msgSend(_62,"setFont:",objj_msgSend(_5f,"currentValueForThemeAttribute:","font")); +objj_msgSend(_62,"setTextColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_62,"setAlignment:",objj_msgSend(_5f,"currentValueForThemeAttribute:","alignment")); +objj_msgSend(_62,"setVerticalAlignment:",objj_msgSend(_5f,"currentValueForThemeAttribute:","vertical-alignment")); +objj_msgSend(_62,"setLineBreakMode:",objj_msgSend(_5f,"currentValueForThemeAttribute:","line-break-mode")); +objj_msgSend(_62,"setTextShadowColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_62,"setTextShadowOffset:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-shadow-offset")); +objj_msgSend(_62,"setImagePosition:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-position")); +objj_msgSend(_62,"setImageScaling:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-scaling")); +objj_msgSend(_62,"setDimsImage:",objj_msgSend(_5f,"hasThemeState:",CPThemeStateDisabled)&&_imageDimsWhenDisabled); +} +} +}),new objj_method(sel_getUid("setBordered:"),function(_63,_64,_65){ +with(_63){ +if(_65){ +objj_msgSend(_63,"setThemeState:",CPThemeStateBordered); +}else{ +objj_msgSend(_63,"unsetThemeState:",CPThemeStateBordered); +} +} +}),new objj_method(sel_getUid("isBordered"),function(_66,_67){ +with(_66){ +return objj_msgSend(_66,"hasThemeState:",CPThemeStateBordered); +} +}),new objj_method(sel_getUid("setKeyEquivalent:"),function(_68,_69,_6a){ +with(_68){ +_keyEquivalent=_6a||""; +if(_6a===CPNewlineCharacter||_6a===CPCarriageReturnCharacter){ +objj_msgSend(_68,"setThemeState:",CPThemeStateDefault); +}else{ +objj_msgSend(_68,"unsetThemeState:",CPThemeStateDefault); +} +} +}),new objj_method(sel_getUid("viewWillMoveToWindow:"),function(_6b,_6c,_6d){ +with(_6b){ +var _6e=objj_msgSend(_6b,"window"); +if(_6e===_6d||_6d===nil){ +return; +} +if(objj_msgSend(_6e,"defaultButton")===_6b){ +objj_msgSend(_6e,"setDefaultButton:",nil); +} +if(objj_msgSend(_6b,"keyEquivalent")===CPNewlineCharacter||objj_msgSend(_6b,"keyEquivalent")===CPCarriageReturnCharacter){ +objj_msgSend(_6d,"setDefaultButton:",_6b); +} +} +}),new objj_method(sel_getUid("keyEquivalent"),function(_6f,_70){ +with(_6f){ +return _keyEquivalent; +} +}),new objj_method(sel_getUid("setKeyEquivalentModifierMask:"),function(_71,_72,_73){ +with(_71){ +_keyEquivalentModifierMask=_73; +} +}),new objj_method(sel_getUid("keyEquivalentModifierMask"),function(_74,_75){ +with(_74){ +return _keyEquivalentModifierMask; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_76,_77,_78){ +with(_76){ +if(objj_msgSend(objj_msgSend(_76,"window"),"defaultButton")===_76){ +return NO; +} +if(!objj_msgSend(_78,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(_76,"keyEquivalent"),objj_msgSend(_76,"keyEquivalentModifierMask"))){ +return NO; +} +objj_msgSend(_76,"performClick:",nil); +return YES; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("buttonWithTitle:"),function(_79,_7a,_7b){ +with(_79){ +return objj_msgSend(_79,"buttonWithTitle:theme:",_7b,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("buttonWithTitle:theme:"),function(_7c,_7d,_7e,_7f){ +with(_7c){ +var _80=objj_msgSend(objj_msgSend(_7c,"alloc"),"init"); +objj_msgSend(_80,"setTheme:",_7f); +objj_msgSend(_80,"setTitle:",_7e); +objj_msgSend(_80,"sizeToFit"); +return _80; +} +}),new objj_method(sel_getUid("themeClass"),function(_81,_82){ +with(_81){ +return "button"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_83,_84){ +with(_83){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),0,{top:(0),right:(0),bottom:(0),left:(0)},{top:(0),right:(0),bottom:(0),left:(0)},objj_msgSend(CPNull,"null")],["image","image-offset","bezel-inset","content-inset","bezel-color"]); +} +})]); +var _1=objj_getClass("CPButton"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setBezelStyle:"),function(_85,_86,_87){ +with(_85){ +} +}),new objj_method(sel_getUid("bezelStyle"),function(_88,_89){ +with(_88){ +} +})]); +var _8a="CPButtonImageKey",_8b="CPButtonAlternateImageKey",_8c="CPButtonTitleKey",_8d="CPButtonAlternateTitleKey",_8e="CPButtonIsBorderedKey",_8f="CPButtonAllowsMixedStateKey",_90="CPButtonImageDimsWhenDisabledKey",_91="CPButtonImagePositionKey",_92="CPButtonKeyEquivalentKey",_93="CPButtonKeyEquivalentMaskKey"; +var _1=objj_getClass("CPButton"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_94,_95,_96){ +with(_94){ +_94=objj_msgSendSuper({receiver:_94,super_class:objj_getClass("CPButton").super_class},"initWithCoder:",_96); +if(_94){ +_controlSize=CPRegularControlSize; +_title=objj_msgSend(_96,"decodeObjectForKey:",_8c); +_alternateTitle=objj_msgSend(_96,"decodeObjectForKey:",_8d); +if(objj_msgSend(_96,"containsValueForKey:",_8f)){ +_allowsMixedState=objj_msgSend(_96,"decodeBoolForKey:",_8f); +} +objj_msgSend(_94,"setImageDimsWhenDisabled:",objj_msgSend(_96,"decodeObjectForKey:",_90)); +if(objj_msgSend(_96,"containsValueForKey:",_91)){ +objj_msgSend(_94,"setImagePosition:",objj_msgSend(_96,"decodeIntForKey:",_91)); +} +if(objj_msgSend(_96,"containsValueForKey:",_92)){ +objj_msgSend(_94,"setKeyEquivalent:",CFData.decodeBase64ToUtf16String(objj_msgSend(_96,"decodeObjectForKey:",_92))); +} +_keyEquivalentModifierMask=objj_msgSend(_96,"decodeIntForKey:",_93); +objj_msgSend(_94,"setNeedsLayout"); +objj_msgSend(_94,"setNeedsDisplay:",YES); +} +return _94; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_97,_98,_99){ +with(_97){ +objj_msgSendSuper({receiver:_97,super_class:objj_getClass("CPButton").super_class},"encodeWithCoder:",_99); +objj_msgSend(_99,"encodeObject:forKey:",_title,_8c); +objj_msgSend(_99,"encodeObject:forKey:",_alternateTitle,_8d); +objj_msgSend(_99,"encodeBool:forKey:",_allowsMixedState,_8f); +objj_msgSend(_99,"encodeBool:forKey:",objj_msgSend(_97,"imageDimsWhenDisabled"),_90); +objj_msgSend(_99,"encodeInt:forKey:",objj_msgSend(_97,"imagePosition"),_91); +if(_keyEquivalent){ +objj_msgSend(_99,"encodeObject:forKey:",CFData.encodeBase64Utf16String(_keyEquivalent),_92); +} +objj_msgSend(_99,"encodeInt:forKey:",_keyEquivalentModifierMask,_93); +} +})]); +objj_executeFile("CPCheckBox.j",YES); +objj_executeFile("CPRadio.j",YES); +p;13;CPButtonBar.jt;9767;@STATIC;1.0;I;15;AppKit/CPView.jt;9728; +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPView,"CPButtonBar"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_hasResizeControl"),new objj_ivar("_resizeControlIsLeftAligned"),new objj_ivar("_buttons")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPButtonBar").super_class},"initWithFrame:",_5); +if(_3){ +_buttons=[]; +objj_msgSend(_3,"setNeedsLayout"); +} +return _3; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_6,"superview"),_9=_6; +while(_8){ +if(objj_msgSend(_8,"isKindOfClass:",objj_msgSend(CPSplitView,"class"))){ +var _a=objj_msgSend(objj_msgSend(_8,"subviews"),"indexOfObject:",_9); +objj_msgSend(_8,"setButtonBar:forDividerAtIndex:",_6,_a); +break; +} +_9=_8; +_8=objj_msgSend(_8,"superview"); +} +} +}),new objj_method(sel_getUid("setButtons:"),function(_b,_c,_d){ +with(_b){ +_buttons=objj_msgSend(CPArray,"arrayWithArray:",_d); +for(var i=0,_e=objj_msgSend(_buttons,"count");i<_e;i++){ +objj_msgSend(_buttons[i],"setBordered:",YES); +} +objj_msgSend(_b,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("buttons"),function(_f,_10){ +with(_f){ +return objj_msgSend(CPArray,"arrayWithArray:",_buttons); +} +}),new objj_method(sel_getUid("setHasResizeControl:"),function(_11,_12,_13){ +with(_11){ +if(_hasResizeControl===_13){ +return; +} +_hasResizeControl=!!_13; +objj_msgSend(_11,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("hasResizeControl"),function(_14,_15){ +with(_14){ +return _hasResizeControl; +} +}),new objj_method(sel_getUid("setResizeControlIsLeftAligned:"),function(_16,_17,_18){ +with(_16){ +if(_resizeControlIsLeftAligned===_18){ +return; +} +_resizeControlIsLeftAligned=!!_18; +objj_msgSend(_16,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("resizeControlIsLeftAligned"),function(_19,_1a){ +with(_19){ +return _resizeControlIsLeftAligned; +} +}),new objj_method(sel_getUid("resizeControlFrame"),function(_1b,_1c){ +with(_1b){ +var _1d=objj_msgSend(_1b,"currentValueForThemeAttribute:","resize-control-inset"),_1e=objj_msgSend(_1b,"currentValueForThemeAttribute:","resize-control-size"),_1f=objj_msgSend(_1b,"bounds"),_20=_resizeControlIsLeftAligned?0:_1f.size.width-_1e.width-_1d.right-_1d.left; +return CGRectMake(_20,0,_1e.width+_1d.left+_1d.right,_1e.height+_1d.top+_1d.bottom); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_21,_22,_23){ +with(_21){ +if(_23==="resize-control-view"){ +var _24=objj_msgSend(_21,"currentValueForThemeAttribute:","resize-control-inset"),_25=objj_msgSend(_21,"currentValueForThemeAttribute:","resize-control-size"),_26=objj_msgSend(_21,"bounds"); +if(_resizeControlIsLeftAligned){ +return CGRectMake(_24.left,_24.top,_25.width,_25.height); +}else{ +return CGRectMake(_26.size.width-_25.width-_24.right,_24.top,_25.width,_25.height); +} +} +return objj_msgSendSuper({receiver:_21,super_class:objj_getClass("CPButtonBar").super_class},"rectForEphemeralSubviewNamed:",_23); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_27,_28,_29){ +with(_27){ +if(_29==="resize-control-view"){ +return objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPButtonBar").super_class},"createEphemeralSubviewNamed:",_29); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_2a,_2b){ +with(_2a){ +objj_msgSend(_2a,"setBackgroundColor:",objj_msgSend(_2a,"currentValueForThemeAttribute:","bezel-color")); +var _2c=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateNormal),_2d=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateHighlighted),_2e=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateDisabled),_2f=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-text-color",CPThemeStateNormal); +var _30=objj_msgSend(CPArray,"arrayWithArray:",_buttons),_31=objj_msgSend(_30,"count"); +while(_31--){ +if(objj_msgSend(_30[_31],"isHidden")){ +objj_msgSend(_30,"removeObject:",_30[_31]); +} +} +var _32=_resizeControlIsLeftAligned?CGRectGetMaxX(objj_msgSend(_2a,"bounds"))+1:-1,_33=objj_msgSend(_2a,"bounds"),_34=CGRectGetHeight(_33)-1,_35=CGRectGetWidth(_33),_36=_hasResizeControl?objj_msgSend(_2a,"rectForEphemeralSubviewNamed:","resize-control-view"):CGRectMakeZero(),_37=CGRectGetWidth(_36),_38=_35-_37-1; +for(var i=0,_31=objj_msgSend(_30,"count");i<_31;i++){ +var _39=_30[i],_3a=CGRectGetWidth(objj_msgSend(_39,"frame")); +if(_38>_3a){ +_38-=_3a; +}else{ +break; +} +if(_resizeControlIsLeftAligned){ +objj_msgSend(_39,"setFrame:",CGRectMake(_32-_3a,1,_3a,_34)); +_32-=_3a-1; +}else{ +objj_msgSend(_39,"setFrame:",CGRectMake(_32,1,_3a,_34)); +_32+=_3a-1; +} +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2c,"bezel-color",CPThemeStateNormal|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2d,"bezel-color",CPThemeStateHighlighted|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2e,"bezel-color",CPThemeStateDisabled|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2f,"text-color",CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2c,"bezel-color",CPThemeStateNormal|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2d,"bezel-color",CPThemeStateHighlighted|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2e,"bezel-color",CPThemeStateDisabled|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_2a,"addSubview:",_39); +} +if(_hasResizeControl){ +var _3b=objj_msgSend(_2a,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","resize-control-view",CPWindowAbove,nil); +objj_msgSend(_3b,"setAutoresizingMask:",_resizeControlIsLeftAligned?CPViewMaxXMargin:CPViewMinXMargin); +objj_msgSend(_3b,"setBackgroundColor:",objj_msgSend(_2a,"currentValueForThemeAttribute:","resize-control-color")); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_3c,_3d,_3e){ +with(_3c){ +objj_msgSendSuper({receiver:_3c,super_class:objj_getClass("CPButtonBar").super_class},"setFrameSize:",_3e); +objj_msgSend(_3c,"setNeedsLayout"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("plusButton"),function(_3f,_40){ +with(_3f){ +var _41=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_42=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","plus_button.png"),CGSizeMake(11,12)); +objj_msgSend(_41,"setBordered:",NO); +objj_msgSend(_41,"setImage:",_42); +objj_msgSend(_41,"setImagePosition:",CPImageOnly); +return _41; +} +}),new objj_method(sel_getUid("minusButton"),function(_43,_44){ +with(_43){ +var _45=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_46=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","minus_button.png"),CGSizeMake(11,4)); +objj_msgSend(_45,"setBordered:",NO); +objj_msgSend(_45,"setImage:",_46); +objj_msgSend(_45,"setImagePosition:",CPImageOnly); +return _45; +} +}),new objj_method(sel_getUid("actionPopupButton"),function(_47,_48){ +with(_47){ +var _49=objj_msgSend(objj_msgSend(CPPopUpButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_4a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","action_button.png"),CGSizeMake(22,14)); +objj_msgSend(_49,"addItemWithTitle:",nil); +objj_msgSend(objj_msgSend(_49,"lastItem"),"setImage:",_4a); +objj_msgSend(_49,"setImagePosition:",CPImageOnly); +objj_msgSend(_49,"setValue:forThemeAttribute:",CGInsetMake(0,0,0,0),"content-inset"); +objj_msgSend(_49,"setPullsDown:",YES); +return _49; +} +}),new objj_method(sel_getUid("themeClass"),function(_4b,_4c){ +with(_4b){ +return "button-bar"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_4d,_4e){ +with(_4d){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CGInsetMake(0,0,0,0),CGSizeMakeZero(),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["resize-control-inset","resize-control-size","resize-control-color","bezel-color","button-bezel-color","button-text-color"]); +} +})]); +var _4f="CPButtonBarHasResizeControlKey",_50="CPButtonBarResizeControlIsLeftAlignedKey",_51="CPButtonBarButtonsKey"; +var _1=objj_getClass("CPButtonBar"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButtonBar\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("encodeWithCoder:"),function(_52,_53,_54){ +with(_52){ +objj_msgSendSuper({receiver:_52,super_class:objj_getClass("CPButtonBar").super_class},"encodeWithCoder:",_54); +objj_msgSend(_54,"encodeBool:forKey:",_hasResizeControl,_4f); +objj_msgSend(_54,"encodeBool:forKey:",_resizeControlIsLeftAligned,_50); +objj_msgSend(_54,"encodeObject:forKey:",_buttons,_51); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_55,_56,_57){ +with(_55){ +if(_55=objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPButtonBar").super_class},"initWithCoder:",_57)){ +_buttons=objj_msgSend(_57,"decodeObjectForKey:",_51)||[]; +_hasResizeControl=objj_msgSend(_57,"decodeBoolForKey:",_4f); +_resizeControlIsLeftAligned=objj_msgSend(_57,"decodeBoolForKey:",_50); +} +return _55; +} +})]); +p;12;CPCheckBox.jt;1690;@STATIC;1.0;i;10;CPButton.jt;1656; +objj_executeFile("CPButton.j",YES); +CPCheckBoxImageOffset=4; +var _1=objj_allocateClassPair(CPButton,"CPCheckBox"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCheckBox").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_3,"setShowsStateBy:",CPContentsCellMask); +objj_msgSend(_3,"setImagePosition:",CPImageLeft); +objj_msgSend(_3,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_3,"setBordered:",NO); +} +return _3; +} +}),new objj_method(sel_getUid("takeStateFromKeyPath:ofObjects:"),function(_6,_7,_8,_9){ +with(_6){ +var _a=_9.length,_b=objj_msgSend(_9[0],"valueForKeyPath:",_8)?CPOnState:CPOffState; +objj_msgSend(_6,"setAllowsMixedState:",NO); +objj_msgSend(_6,"setState:",_b); +while(_a-->1){ +if(_b!==(objj_msgSend(_9[_a],"valueForKeyPath:",_8)?CPOnState:CPOffState)){ +objj_msgSend(_6,"setAllowsMixedState:",YES); +objj_msgSend(_6,"setState:",CPMixedState); +} +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_c,_d,_e,_f){ +with(_c){ +objj_msgSend(_c,"takeStateFromKeyPath:ofObjects:",_e,_f); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("checkBoxWithTitle:theme:"),function(_10,_11,_12,_13){ +with(_10){ +return objj_msgSend(_10,"buttonWithTitle:theme:",_12,_13); +} +}),new objj_method(sel_getUid("checkBoxWithTitle:"),function(_14,_15,_16){ +with(_14){ +return objj_msgSend(_14,"buttonWithTitle:",_16); +} +}),new objj_method(sel_getUid("themeClass"),function(_17,_18){ +with(_17){ +return "check-box"; +} +})]); +p;12;CPClipView.jt;4951;@STATIC;1.0;i;8;CPView.jt;4920; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"CPClipView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_documentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setDocumentView:"),function(_3,_4,_5){ +with(_3){ +if(_documentView==_5){ +return; +} +var _6=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_documentView){ +objj_msgSend(_6,"removeObserver:name:object:",_3,CPViewFrameDidChangeNotification,_documentView); +objj_msgSend(_6,"removeObserver:name:object:",_3,CPViewBoundsDidChangeNotification,_documentView); +objj_msgSend(_documentView,"removeFromSuperview"); +} +_documentView=_5; +if(_documentView){ +objj_msgSend(_3,"addSubview:",_documentView); +objj_msgSend(_documentView,"setPostsFrameChangedNotifications:",YES); +objj_msgSend(_documentView,"setPostsBoundsChangedNotifications:",YES); +objj_msgSend(_6,"addObserver:selector:name:object:",_3,sel_getUid("viewFrameChanged:"),CPViewFrameDidChangeNotification,_documentView); +objj_msgSend(_6,"addObserver:selector:name:object:",_3,sel_getUid("viewBoundsChanged:"),CPViewBoundsDidChangeNotification,_documentView); +} +} +}),new objj_method(sel_getUid("documentView"),function(_7,_8){ +with(_7){ +return _documentView; +} +}),new objj_method(sel_getUid("constrainScrollPoint:"),function(_9,_a,_b){ +with(_9){ +if(!_documentView){ +return {x:0,y:0}; +} +var _c=objj_msgSend(_documentView,"frame"); +_b.x=MAX(0,MIN(_b.x,MAX((_c.size.width)-(_bounds.size.width),0))); +_b.y=MAX(0,MIN(_b.y,MAX((_c.size.height)-(_bounds.size.height),0))); +return _b; +} +}),new objj_method(sel_getUid("setBoundsOrigin:"),function(_d,_e,_f){ +with(_d){ +if((_bounds.origin.x==_f.x&&_bounds.origin.y==_f.y)){ +return; +} +objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPClipView").super_class},"setBoundsOrigin:",_f); +var _10=objj_msgSend(_d,"superview"),_11=objj_getClass("CPScrollView"); +if(objj_msgSend(_10,"isKindOfClass:",_11)){ +objj_msgSend(_10,"reflectScrolledClipView:",_d); +} +} +}),new objj_method(sel_getUid("scrollToPoint:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_12,"setBoundsOrigin:",objj_msgSend(_12,"constrainScrollPoint:",_14)); +} +}),new objj_method(sel_getUid("viewBoundsChanged:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("viewFrameChanged:"),function(_18,_19,_1a){ +with(_18){ +objj_msgSend(_18,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSendSuper({receiver:_1b,super_class:objj_getClass("CPClipView").super_class},"resizeSubviewsWithOldSize:",_1d); +objj_msgSend(_1b,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("_constrainScrollPoint"),function(_1e,_1f){ +with(_1e){ +var _20=objj_msgSend(_1e,"bounds").origin; +objj_msgSend(_1e,"scrollToPoint:",_20); +if(!CGPointEqualToPoint(_20,objj_msgSend(_1e,"bounds").origin)){ +return; +} +var _21=objj_msgSend(_1e,"superview"),_22=objj_getClass("CPScrollView"); +if(objj_msgSend(_21,"isKindOfClass:",_22)){ +objj_msgSend(_21,"reflectScrolledClipView:",_1e); +} +} +}),new objj_method(sel_getUid("autoscroll:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_23,"bounds"),_27=objj_msgSend(_23,"convertPoint:fromView:",objj_msgSend(_25,"locationInWindow"),nil),_28=objj_msgSend(_23,"superview"),_29=0,_2a=0; +if(CGRectContainsPoint(_26,_27)){ +return NO; +} +if(!objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))||objj_msgSend(_28,"hasVerticalScroller")){ +if(_27.yCGRectGetMaxY(_26)){ +_2a=CGRectGetMaxY(_26)-_27.y; +} +} +if(_2a<-_26.size.height){ +_2a=-_26.size.height; +} +if(_2a>_26.size.height){ +_2a=_26.size.height; +} +} +if(!objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))||objj_msgSend(_28,"hasHorizontalScroller")){ +if(_27.xCGRectGetMaxX(_26)){ +_29=CGRectGetMaxX(_26)-_27.x; +} +} +if(_29<-_26.size.width){ +_29=-_26.size.width; +} +if(_29>_26.size.width){ +_29=_26.size.width; +} +} +return objj_msgSend(_23,"scrollToPoint:",CGPointMake(_26.origin.x-_29,_26.origin.y-_2a)); +} +})]); +var _2b="CPScrollViewDocumentView"; +var _1=objj_getClass("CPClipView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPClipView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_2c,_2d,_2e){ +with(_2c){ +if(_2c=objj_msgSendSuper({receiver:_2c,super_class:objj_getClass("CPClipView").super_class},"initWithCoder:",_2e)){ +objj_msgSend(_2c,"setDocumentView:",objj_msgSend(_2e,"decodeObjectForKey:",_2b)); +} +return _2c; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2f,_30,_31){ +with(_2f){ +objj_msgSendSuper({receiver:_2f,super_class:objj_getClass("CPClipView").super_class},"encodeWithCoder:",_31); +objj_msgSend(_31,"encodeObject:forKey:",_documentView,_2b); +} +})]); +p;18;CPCollectionView.jt;20492;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;Foundation/CPData.jI;23;Foundation/CPIndexSet.jI;28;Foundation/CPKeyedArchiver.jI;30;Foundation/CPKeyedUnarchiver.ji;8;CPView.ji;22;CPCollectionViewItem.jt;20288; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPData.j",NO); +objj_executeFile("Foundation/CPIndexSet.j",NO); +objj_executeFile("Foundation/CPKeyedArchiver.j",NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPCollectionViewItem.j",YES); +var _1=objj_allocateClassPair(CPView,"CPCollectionView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_content"),new objj_ivar("_items"),new objj_ivar("_itemData"),new objj_ivar("_itemPrototype"),new objj_ivar("_itemForDragging"),new objj_ivar("_cachedItems"),new objj_ivar("_maxNumberOfRows"),new objj_ivar("_maxNumberOfColumns"),new objj_ivar("_minItemSize"),new objj_ivar("_maxItemSize"),new objj_ivar("_backgroundColors"),new objj_ivar("_tileWidth"),new objj_ivar("_isSelectable"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_selectionIndexes"),new objj_ivar("_itemSize"),new objj_ivar("_horizontalMargin"),new objj_ivar("_verticalMargin"),new objj_ivar("_numberOfRows"),new objj_ivar("_numberOfColumns"),new objj_ivar("_delegate"),new objj_ivar("_mouseDownEvent")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCollectionView").super_class},"initWithFrame:",_5); +if(_3){ +_items=[]; +_content=[]; +_cachedItems=[]; +_itemSize=CGSizeMakeZero(); +_minItemSize=CGSizeMakeZero(); +_maxItemSize=CGSizeMakeZero(); +objj_msgSend(_3,"setBackgroundColors:",nil); +_verticalMargin=5; +_tileWidth=-1; +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_allowsEmptySelection=YES; +_isSelectable=YES; +} +return _3; +} +}),new objj_method(sel_getUid("setItemPrototype:"),function(_6,_7,_8){ +with(_6){ +_cachedItems=[]; +_itemData=nil; +_itemForDragging=nil; +_itemPrototype=_8; +objj_msgSend(_6,"reloadContent"); +} +}),new objj_method(sel_getUid("itemPrototype"),function(_9,_a){ +with(_9){ +return _itemPrototype; +} +}),new objj_method(sel_getUid("newItemForRepresentedObject:"),function(_b,_c,_d){ +with(_b){ +var _e=nil; +if(_cachedItems.length){ +_e=_cachedItems.pop(); +}else{ +if(!_itemData){ +if(_itemPrototype){ +_itemData=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_itemPrototype); +} +} +_e=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_itemData); +} +objj_msgSend(_e,"setRepresentedObject:",_d); +objj_msgSend(objj_msgSend(_e,"view"),"setFrameSize:",_itemSize); +return _e; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_f,_10){ +with(_f){ +return YES; +} +}),new objj_method(sel_getUid("isFirstResponder"),function(_11,_12){ +with(_11){ +return objj_msgSend(objj_msgSend(_11,"window"),"firstResponder")===_11; +} +}),new objj_method(sel_getUid("setContent:"),function(_13,_14,_15){ +with(_13){ +if(_content==_15){ +return; +} +_content=_15; +objj_msgSend(_13,"reloadContent"); +} +}),new objj_method(sel_getUid("content"),function(_16,_17){ +with(_16){ +return _content; +} +}),new objj_method(sel_getUid("items"),function(_18,_19){ +with(_18){ +return _items; +} +}),new objj_method(sel_getUid("setSelectable:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_isSelectable==_1c){ +return; +} +_isSelectable=_1c; +if(!_isSelectable){ +var _1d=CPNotFound; +while((_1d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_1d))!=CPNotFound){ +objj_msgSend(_items[_1d],"setSelected:",NO); +} +} +} +}),new objj_method(sel_getUid("isSelectable"),function(_1e,_1f){ +with(_1e){ +return _isSelectable; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_20,_21,_22){ +with(_20){ +_allowsEmptySelection=_22; +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_23,_24){ +with(_23){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_25,_26,_27){ +with(_25){ +_allowsMultipleSelection=_27; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_28,_29){ +with(_28){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setSelectionIndexes:"),function(_2a,_2b,_2c){ +with(_2a){ +if(objj_msgSend(_selectionIndexes,"isEqual:",_2c)||!_isSelectable){ +return; +} +var _2d=CPNotFound; +while((_2d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_2d))!=CPNotFound){ +objj_msgSend(_items[_2d],"setSelected:",NO); +} +_selectionIndexes=_2c; +var _2d=CPNotFound; +while((_2d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_2d))!=CPNotFound){ +objj_msgSend(_items[_2d],"setSelected:",YES); +} +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_2a),"reverseSetValueFor:","selectionIndexes"); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionViewDidChangeSelection:"))){ +objj_msgSend(_delegate,"collectionViewDidChangeSelection:",_2a); +} +} +}),new objj_method(sel_getUid("selectionIndexes"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_selectionIndexes,"copy"); +} +}),new objj_method(sel_getUid("reloadContent"),function(_30,_31){ +with(_30){ +var _32=_items.length; +while(_32--){ +objj_msgSend(objj_msgSend(_items[_32],"view"),"removeFromSuperview"); +objj_msgSend(_items[_32],"setSelected:",NO); +_cachedItems.push(_items[_32]); +} +_items=[]; +if(!_itemPrototype||!_content){ +return; +} +var _33=0; +_32=_content.length; +for(;_33<_32;++_33){ +_items.push(objj_msgSend(_30,"newItemForRepresentedObject:",_content[_33])); +objj_msgSend(_30,"addSubview:",objj_msgSend(_items[_33],"view")); +} +_33=CPNotFound; +while((_33=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_33))!=CPNotFound){ +objj_msgSend(_items[_33],"setSelected:",YES); +} +objj_msgSend(_30,"tile"); +} +}),new objj_method(sel_getUid("tile"),function(_34,_35){ +with(_34){ +var _36=CGRectGetWidth(objj_msgSend(_34,"bounds")); +if(!objj_msgSend(_content,"count")||_36==_tileWidth){ +return; +} +var _37=CGSizeMakeCopy(_minItemSize); +_numberOfColumns=MAX(1,FLOOR(_36/_37.width)); +if(_maxNumberOfColumns>0){ +_numberOfColumns=MIN(_maxNumberOfColumns,_numberOfColumns); +} +var _38=_36-_numberOfColumns*_37.width,_39=NO; +if(_38>0&&_37.width<_maxItemSize.width){ +_37.width=MIN(_maxItemSize.width,_37.width+FLOOR(_38/_numberOfColumns)); +} +if(_maxNumberOfColumns==1&&_37.width<_maxItemSize.width&&_37.width<_36){ +_37.width=MIN(_maxItemSize.width,_36); +} +if(!CGSizeEqualToSize(_itemSize,_37)){ +_itemSize=_37; +_39=YES; +} +var _3a=0,_3b=_items.length; +if(_maxNumberOfColumns>0&&_maxNumberOfRows>0){ +_3b=MIN(_3b,_maxNumberOfColumns*_maxNumberOfRows); +} +_numberOfRows=CEIL(_3b/_numberOfColumns); +_horizontalMargin=FLOOR((_36-_numberOfColumns*_37.width)/(_numberOfColumns+1)); +var x=_horizontalMargin,y=-_37.height; +for(;_3a<_3b;++_3a){ +if(_3a%_numberOfColumns==0){ +x=_horizontalMargin; +y+=_verticalMargin+_37.height; +} +var _3c=objj_msgSend(_items[_3a],"view"); +objj_msgSend(_3c,"setFrameOrigin:",CGPointMake(x,y)); +if(_39){ +objj_msgSend(_3c,"setFrameSize:",_itemSize); +} +x+=_37.width+_horizontalMargin; +} +var _3d=objj_msgSend(_34,"superview"),_3e=y+_37.height+_verticalMargin; +if(objj_msgSend(_3d,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _3f=objj_msgSend(_3d,"bounds").size; +_3e=MAX(_3f.height,_3e); +} +_tileWidth=_36; +objj_msgSend(_34,"setFrameSize:",CGSizeMake(_36,_3e)); +_tileWidth=-1; +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"tile"); +} +}),new objj_method(sel_getUid("setMaxNumberOfRows:"),function(_43,_44,_45){ +with(_43){ +if(_maxNumberOfRows==_45){ +return; +} +_maxNumberOfRows=_45; +objj_msgSend(_43,"tile"); +} +}),new objj_method(sel_getUid("maxNumberOfRows"),function(_46,_47){ +with(_46){ +return _maxNumberOfRows; +} +}),new objj_method(sel_getUid("setMaxNumberOfColumns:"),function(_48,_49,_4a){ +with(_48){ +if(_maxNumberOfColumns==_4a){ +return; +} +_maxNumberOfColumns=_4a; +objj_msgSend(_48,"tile"); +} +}),new objj_method(sel_getUid("maxNumberOfColumns"),function(_4b,_4c){ +with(_4b){ +return _maxNumberOfColumns; +} +}),new objj_method(sel_getUid("numberOfRows"),function(_4d,_4e){ +with(_4d){ +return _numberOfRows; +} +}),new objj_method(sel_getUid("numberOfColumns"),function(_4f,_50){ +with(_4f){ +return _numberOfColumns; +} +}),new objj_method(sel_getUid("setMinItemSize:"),function(_51,_52,_53){ +with(_51){ +if(CGSizeEqualToSize(_minItemSize,_53)){ +return; +} +_minItemSize=CGSizeMakeCopy(_53); +objj_msgSend(_51,"tile"); +} +}),new objj_method(sel_getUid("minItemSize"),function(_54,_55){ +with(_54){ +return _minItemSize; +} +}),new objj_method(sel_getUid("setMaxItemSize:"),function(_56,_57,_58){ +with(_56){ +if(CGSizeEqualToSize(_maxItemSize,_58)){ +return; +} +_maxItemSize=CGSizeMakeCopy(_58); +objj_msgSend(_56,"tile"); +} +}),new objj_method(sel_getUid("maxItemSize"),function(_59,_5a){ +with(_59){ +return _maxItemSize; +} +}),new objj_method(sel_getUid("setBackgroundColors:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_backgroundColors===_5d){ +return; +} +_backgroundColors=_5d; +if(!_backgroundColors){ +_backgroundColors=objj_msgSend(CPColor,"whiteColor"); +} +if(objj_msgSend(_backgroundColors,"count")===1){ +objj_msgSend(_5b,"setBackgroundColor:",_backgroundColors[0]); +}else{ +objj_msgSend(_5b,"setBackgroundColor:",nil); +} +objj_msgSend(_5b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("backgroundColors"),function(_5e,_5f){ +with(_5e){ +return _backgroundColors; +} +}),new objj_method(sel_getUid("mouseUp:"),function(_60,_61,_62){ +with(_60){ +if(objj_msgSend(_selectionIndexes,"count")&&objj_msgSend(_62,"clickCount")==2&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:didDoubleClickOnItemAtIndex:"))){ +objj_msgSend(_delegate,"collectionView:didDoubleClickOnItemAtIndex:",_60,objj_msgSend(_selectionIndexes,"firstIndex")); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_63,_64,_65){ +with(_63){ +_mouseDownEvent=_65; +var _66=objj_msgSend(_63,"convertPoint:fromView:",objj_msgSend(_65,"locationInWindow"),nil),row=FLOOR(_66.y/(_itemSize.height+_verticalMargin)),_67=FLOOR(_66.x/(_itemSize.width+_horizontalMargin)),_68=row*_numberOfColumns+_67; +if(_68>=0&&_68<_items.length){ +if(_allowsMultipleSelection&&(objj_msgSend(_65,"modifierFlags")&CPCommandKeyMask||objj_msgSend(_65,"modifierFlags")&CPShiftKeyMask)){ +var _69=objj_msgSend(_selectionIndexes,"copy"); +if(objj_msgSend(_69,"containsIndex:",_68)){ +objj_msgSend(_69,"removeIndex:",_68); +}else{ +objj_msgSend(_69,"addIndex:",_68); +} +}else{ +_69=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_68); +} +objj_msgSend(_63,"setSelectionIndexes:",_69); +}else{ +if(_allowsEmptySelection){ +objj_msgSend(_63,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSet")); +} +} +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_6a,_6b,_6c){ +with(_6a){ +var _6d=objj_msgSend(_6c,"locationInWindow"),_6e=objj_msgSend(_mouseDownEvent,"locationInWindow"); +if((ABS(_6d.x-_6e.x)<3)&&(ABS(_6d.y-_6e.y)<3)){ +return; +} +if(!objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:dragTypesForItemsAtIndexes:"))){ +return; +} +if(!objj_msgSend(_selectionIndexes,"count")){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:canDragItemsAtIndexes:withEvent:"))&&!objj_msgSend(_delegate,"collectionView:canDragItemsAtIndexes:withEvent:",_6a,_selectionIndexes,_mouseDownEvent)){ +return; +} +var _6f=objj_msgSend(_delegate,"collectionView:dragTypesForItemsAtIndexes:",_6a,_selectionIndexes); +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",_6f,_6a); +if(!_itemForDragging){ +_itemForDragging=objj_msgSend(_6a,"newItemForRepresentedObject:",_content[objj_msgSend(_selectionIndexes,"firstIndex")]); +}else{ +objj_msgSend(_itemForDragging,"setRepresentedObject:",_content[objj_msgSend(_selectionIndexes,"firstIndex")]); +} +var _70=objj_msgSend(_itemForDragging,"view"); +objj_msgSend(_70,"setFrameSize:",_itemSize); +objj_msgSend(_70,"setAlphaValue:",0.7); +objj_msgSend(_6a,"dragView:at:offset:event:pasteboard:source:slideBack:",_70,objj_msgSend(objj_msgSend(_items[objj_msgSend(_selectionIndexes,"firstIndex")],"view"),"frame").origin,CGSizeMakeZero(),_mouseDownEvent,nil,_6a,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_71,_72,_73,_74){ +with(_71){ +objj_msgSend(_73,"setData:forType:",objj_msgSend(_delegate,"collectionView:dataForItemsAtIndexes:forType:",_71,_selectionIndexes,_74),_74); +} +}),new objj_method(sel_getUid("setVerticalMargin:"),function(_75,_76,_77){ +with(_75){ +if(_verticalMargin==_77){ +return; +} +_verticalMargin=_77; +objj_msgSend(_75,"tile"); +} +}),new objj_method(sel_getUid("verticalMargin"),function(_78,_79){ +with(_78){ +return _verticalMargin; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_7a,_7b,_7c){ +with(_7a){ +_delegate=_7c; +} +}),new objj_method(sel_getUid("delegate"),function(_7d,_7e){ +with(_7d){ +return _delegate; +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_7f,_80,_81){ +with(_7f){ +return objj_msgSend(_items,"objectAtIndex:",_81); +} +}),new objj_method(sel_getUid("frameForItemAtIndex:"),function(_82,_83,_84){ +with(_82){ +return objj_msgSend(objj_msgSend(objj_msgSend(_82,"itemAtIndex:",_84),"view"),"frame"); +} +}),new objj_method(sel_getUid("frameForItemsAtIndexes:"),function(_85,_86,_87){ +with(_85){ +var _88=[],_89=CGRectNull; +objj_msgSend(_87,"getIndexes:maxCount:inIndexRange:",_88,-1,nil); +var _8a=0,_8b=objj_msgSend(_88,"count"); +for(;_8a<_8b;++_8a){ +_89=CGRectUnion(_89,objj_msgSend(_85,"frameForItemAtIndex:",_88[_8a])); +} +return _89; +} +})]); +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("_modifySelectionWithNewIndex:direction:expand:"),function(_8c,_8d,_8e,_8f,_90){ +with(_8c){ +_8e=MIN(MAX(_8e,0),objj_msgSend(objj_msgSend(_8c,"items"),"count")-1); +if(_allowsMultipleSelection&&_90){ +var _91=objj_msgSend(_selectionIndexes,"copy"),_92=objj_msgSend(_91,"firstIndex"),_93=objj_msgSend(_91,"lastIndex"); +if(_8f===-1){ +objj_msgSend(_91,"addIndexesInRange:",CPMakeRange(_8e,_92-_8e+1)); +}else{ +objj_msgSend(_91,"addIndexesInRange:",CPMakeRange(_93,_8e-_93+1)); +} +}else{ +_91=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_8e); +} +objj_msgSend(_8c,"setSelectionIndexes:",_91); +objj_msgSend(_8c,"_scrollToSelection"); +} +}),new objj_method(sel_getUid("_scrollToSelection"),function(_94,_95){ +with(_94){ +var _96=objj_msgSend(_94,"frameForItemsAtIndexes:",objj_msgSend(_94,"selectionIndexes")); +if(!CGRectIsNull(_96)){ +objj_msgSend(_94,"scrollRectToVisible:",_96); +} +} +}),new objj_method(sel_getUid("moveLeft:"),function(_97,_98,_99){ +with(_97){ +var _9a=objj_msgSend(objj_msgSend(_97,"selectionIndexes"),"firstIndex"); +if(_9a===CPNotFound){ +_9a=objj_msgSend(objj_msgSend(_97,"items"),"count"); +} +objj_msgSend(_97,"_modifySelectionWithNewIndex:direction:expand:",_9a-1,-1,NO); +} +}),new objj_method(sel_getUid("moveLeftAndModifySelection:"),function(_9b,_9c,_9d){ +with(_9b){ +var _9e=objj_msgSend(objj_msgSend(_9b,"selectionIndexes"),"firstIndex"); +if(_9e===CPNotFound){ +_9e=objj_msgSend(objj_msgSend(_9b,"items"),"count"); +} +objj_msgSend(_9b,"_modifySelectionWithNewIndex:direction:expand:",_9e-1,-1,YES); +} +}),new objj_method(sel_getUid("moveRight:"),function(_9f,_a0,_a1){ +with(_9f){ +objj_msgSend(_9f,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_9f,"selectionIndexes"),"lastIndex")+1,1,NO); +} +}),new objj_method(sel_getUid("moveRightAndModifySelection:"),function(_a2,_a3,_a4){ +with(_a2){ +objj_msgSend(_a2,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a2,"selectionIndexes"),"lastIndex")+1,1,YES); +} +}),new objj_method(sel_getUid("moveDown:"),function(_a5,_a6,_a7){ +with(_a5){ +objj_msgSend(_a5,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a5,"selectionIndexes"),"lastIndex")+objj_msgSend(_a5,"numberOfColumns"),1,NO); +} +}),new objj_method(sel_getUid("moveDownAndModifySelection:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a8,"selectionIndexes"),"lastIndex")+objj_msgSend(_a8,"numberOfColumns"),1,YES); +} +}),new objj_method(sel_getUid("moveUp:"),function(_ab,_ac,_ad){ +with(_ab){ +var _ae=objj_msgSend(objj_msgSend(_ab,"selectionIndexes"),"firstIndex"); +if(_ae==CPNotFound){ +_ae=objj_msgSend(objj_msgSend(_ab,"items"),"count"); +} +objj_msgSend(_ab,"_modifySelectionWithNewIndex:direction:expand:",_ae-objj_msgSend(_ab,"numberOfColumns"),-1,NO); +} +}),new objj_method(sel_getUid("moveUpAndModifySelection:"),function(_af,_b0,_b1){ +with(_af){ +var _b2=objj_msgSend(objj_msgSend(_af,"selectionIndexes"),"firstIndex"); +if(_b2==CPNotFound){ +_b2=objj_msgSend(objj_msgSend(_af,"items"),"count"); +} +objj_msgSend(_af,"_modifySelectionWithNewIndex:direction:expand:",_b2-objj_msgSend(_af,"numberOfColumns"),-1,YES); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(_b3,_b4,_b5){ +with(_b3){ +if(objj_msgSend(objj_msgSend(_b3,"delegate"),"respondsToSelector:",sel_getUid("collectionView:shouldDeleteItemsAtIndexes:"))){ +objj_msgSend(objj_msgSend(_b3,"delegate"),"collectionView:shouldDeleteItemsAtIndexes:",_b3,objj_msgSend(_b3,"selectionIndexes")); +var _b6=objj_msgSend(objj_msgSend(_b3,"selectionIndexes"),"firstIndex"); +if(_b6>objj_msgSend(objj_msgSend(_b3,"content"),"count")-1){ +objj_msgSend(_b3,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",objj_msgSend(objj_msgSend(_b3,"content"),"count")-1)); +} +objj_msgSend(_b3,"_scrollToSelection"); +objj_msgSend(_b3,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("keyDown:"),function(_b7,_b8,_b9){ +with(_b7){ +objj_msgSend(_b7,"interpretKeyEvents:",[_b9]); +} +})]); +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("rectForItemAtIndex:"),function(_ba,_bb,_bc){ +with(_ba){ +_CPReportLenientDeprecation(objj_msgSend(_ba,"class"),_bb,sel_getUid("frameForItemAtIndex:")); +return objj_msgSend(_ba,"frameForItemAtIndex:",_bc); +} +}),new objj_method(sel_getUid("rectForItemsAtIndexes:"),function(_bd,_be,_bf){ +with(_bd){ +_CPReportLenientDeprecation(objj_msgSend(_bd,"class"),_be,sel_getUid("frameForItemsAtIndexes:")); +return objj_msgSend(_bd,"frameForItemsAtIndexes:",_bf); +} +})]); +var _c0="CPCollectionViewMinItemSizeKey",_c1="CPCollectionViewMaxItemSizeKey",_c2="CPCollectionViewVerticalMarginKey",_c3="CPCollectionViewMaxNumberOfRowsKey",_c4="CPCollectionViewMaxNumberOfColumnsKey",_c5="CPCollectionViewSelectableKey",_c6="CPCollectionViewBackgroundColorsKey"; +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_c7,_c8,_c9){ +with(_c7){ +_c7=objj_msgSendSuper({receiver:_c7,super_class:objj_getClass("CPCollectionView").super_class},"initWithCoder:",_c9); +if(_c7){ +_items=[]; +_content=[]; +_cachedItems=[]; +_itemSize=CGSizeMakeZero(); +_minItemSize=objj_msgSend(_c9,"decodeSizeForKey:",_c0)||CGSizeMakeZero(); +_maxItemSize=objj_msgSend(_c9,"decodeSizeForKey:",_c1)||CGSizeMakeZero(); +_maxNumberOfRows=objj_msgSend(_c9,"decodeIntForKey:",_c3)||0; +_maxNumberOfColumns=objj_msgSend(_c9,"decodeIntForKey:",_c4)||0; +_verticalMargin=objj_msgSend(_c9,"decodeFloatForKey:",_c2); +_isSelectable=objj_msgSend(_c9,"decodeBoolForKey:",_c5); +objj_msgSend(_c7,"setBackgroundColors:",objj_msgSend(_c9,"decodeObjectForKey:",_c6)); +_tileWidth=-1; +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_allowsEmptySelection=YES; +} +return _c7; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_ca,_cb,_cc){ +with(_ca){ +objj_msgSendSuper({receiver:_ca,super_class:objj_getClass("CPCollectionView").super_class},"encodeWithCoder:",_cc); +if(!CGSizeEqualToSize(_minItemSize,CGSizeMakeZero())){ +objj_msgSend(_cc,"encodeSize:forKey:",_minItemSize,_c0); +} +if(!CGSizeEqualToSize(_maxItemSize,CGSizeMakeZero())){ +objj_msgSend(_cc,"encodeSize:forKey:",_maxItemSize,_c1); +} +objj_msgSend(_cc,"encodeInt:forKey:",_maxNumberOfRows,_c3); +objj_msgSend(_cc,"encodeInt:forKey:",_maxNumberOfColumns,_c4); +objj_msgSend(_cc,"encodeBool:forKey:",_isSelectable,_c5); +objj_msgSend(_cc,"encodeFloat:forKey:",_verticalMargin,_c2); +objj_msgSend(_cc,"encodeObject:forKey:",_backgroundColors,_c6); +} +})]); +p;22;CPCollectionViewItem.jt;1188;@STATIC;1.0;i;18;CPViewController.jt;1146; +objj_executeFile("CPViewController.j",YES); +var _1=objj_allocateClassPair(CPViewController,"CPCollectionViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isSelected")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setRepresentedObject:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCollectionViewItem").super_class},"setRepresentedObject:",_5); +var _6=objj_msgSend(_3,"view"); +if(objj_msgSend(_6,"respondsToSelector:",sel_getUid("setRepresentedObject:"))){ +objj_msgSend(_6,"setRepresentedObject:",objj_msgSend(_3,"representedObject")); +} +} +}),new objj_method(sel_getUid("setSelected:"),function(_7,_8,_9){ +with(_7){ +_9=!!_9; +if(_isSelected===_9){ +return; +} +_isSelected=_9; +var _a=objj_msgSend(_7,"view"); +if(objj_msgSend(_a,"respondsToSelector:",sel_getUid("setSelected:"))){ +objj_msgSend(_a,"setSelected:",objj_msgSend(_7,"isSelected")); +} +} +}),new objj_method(sel_getUid("isSelected"),function(_b,_c){ +with(_b){ +return _isSelected; +} +}),new objj_method(sel_getUid("collectionView"),function(_d,_e){ +with(_d){ +return objj_msgSend(_view,"superview"); +} +})]); +p;9;CPColor.jt;11992;@STATIC;1.0;I;21;Foundation/CPObject.ji;9;CGColor.ji;17;CPCompatibility.ji;9;CPImage.jt;11898; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CGColor.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPImage.j",YES); +var _1=0,_2=1,_3=2,_4=3; +var _5=0,_6=1,_7=2; +var _8,_9,_a,_b,_c,_d,_e,_f,_10,_11,_12,_13,_14,_15,_16,_17; +var _18=objj_allocateClassPair(CPObject,"CPColor"),_19=_18.isa; +class_addIvars(_18,[new objj_ivar("_components"),new objj_ivar("_patternImage"),new objj_ivar("_cssString")]); +objj_registerClassPair(_18); +class_addMethods(_18,[new objj_method(sel_getUid("_initWithCSSString:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_1c.indexOf("rgb")==CPNotFound){ +return nil; +} +_1a=objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("CPColor").super_class},"init"); +var _1d=_1c.indexOf("("); +var _1e=_1c.substring(_1d+1).split(","); +_components=[parseInt(_1e[0],10)/255,parseInt(_1e[1],10)/255,parseInt(_1e[2],10)/255,_1e[3]?parseInt(_1e[3],10)/255:1]; +_cssString=_1c; +return _1a; +} +}),new objj_method(sel_getUid("_initWithRGBA:"),function(_1f,_20,_21){ +with(_1f){ +_1f=objj_msgSendSuper({receiver:_1f,super_class:objj_getClass("CPColor").super_class},"init"); +if(_1f){ +_components=_21; +var _22=CPFeatureIsCompatible(CPCSSRGBAFeature)&&_components[3]!=1; +_cssString=(_22?"rgba(":"rgb(")+parseInt(_components[0]*255)+", "+parseInt(_components[1]*255)+", "+parseInt(_components[2]*255)+(_22?(", "+_components[3]):"")+")"; +} +return _1f; +} +}),new objj_method(sel_getUid("_initWithPatternImage:"),function(_23,_24,_25){ +with(_23){ +_23=objj_msgSendSuper({receiver:_23,super_class:objj_getClass("CPColor").super_class},"init"); +if(_23){ +_patternImage=_25; +_cssString="url(\""+objj_msgSend(_patternImage,"filename")+"\")"; +_components=[0,0,0,1]; +} +return _23; +} +}),new objj_method(sel_getUid("patternImage"),function(_26,_27){ +with(_26){ +return _patternImage; +} +}),new objj_method(sel_getUid("alphaComponent"),function(_28,_29){ +with(_28){ +return _components[3]; +} +}),new objj_method(sel_getUid("blueComponent"),function(_2a,_2b){ +with(_2a){ +return _components[2]; +} +}),new objj_method(sel_getUid("greenComponent"),function(_2c,_2d){ +with(_2c){ +return _components[1]; +} +}),new objj_method(sel_getUid("redComponent"),function(_2e,_2f){ +with(_2e){ +return _components[0]; +} +}),new objj_method(sel_getUid("components"),function(_30,_31){ +with(_30){ +return _components; +} +}),new objj_method(sel_getUid("colorWithAlphaComponent:"),function(_32,_33,_34){ +with(_32){ +var _35=_components.slice(); +_35[_35.length-1]=_34; +return objj_msgSend(objj_msgSend(objj_msgSend(_32,"class"),"alloc"),"_initWithRGBA:",_35); +} +}),new objj_method(sel_getUid("hsbComponents"),function(_36,_37){ +with(_36){ +var red=ROUND(_components[_1]*255),_38=ROUND(_components[_2]*255),_39=ROUND(_components[_3]*255); +var max=MAX(red,_38,_39),min=MIN(red,_38,_39),_3a=max-min; +var _3b=max/255,_3c=(max!=0)?_3a/max:0; +var hue; +if(_3c==0){ +hue=0; +}else{ +var rr=(max-red)/_3a; +var gr=(max-_38)/_3a; +var br=(max-_39)/_3a; +if(red==max){ +hue=br-gr; +}else{ +if(_38==max){ +hue=2+rr-br; +}else{ +hue=4+gr-rr; +} +} +hue/=6; +if(hue<0){ +hue++; +} +} +return [ROUND(hue*360),ROUND(_3c*100),ROUND(_3b*100)]; +} +}),new objj_method(sel_getUid("cssString"),function(_3d,_3e){ +with(_3d){ +return _cssString; +} +}),new objj_method(sel_getUid("hexString"),function(_3f,_40){ +with(_3f){ +return _41(objj_msgSend(_3f,"redComponent"),objj_msgSend(_3f,"greenComponent"),objj_msgSend(_3f,"blueComponent")); +} +}),new objj_method(sel_getUid("isEqual:"),function(_42,_43,_44){ +with(_42){ +if(!_44){ +return NO; +} +if(_44===_42){ +return YES; +} +return objj_msgSend(_44,"isKindOfClass:",CPColor)&&objj_msgSend(_44,"cssString")===objj_msgSend(_42,"cssString"); +} +}),new objj_method(sel_getUid("description"),function(_45,_46){ +with(_45){ +return objj_msgSendSuper({receiver:_45,super_class:objj_getClass("CPColor").super_class},"description")+" "+objj_msgSend(_45,"cssString"); +} +})]); +class_addMethods(_19,[new objj_method(sel_getUid("colorWithRed:green:blue:alpha:"),function(_47,_48,red,_49,_4a,_4b){ +with(_47){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[red,_49,_4a,_4b]); +} +}),new objj_method(sel_getUid("colorWithCalibratedRed:green:blue:alpha:"),function(_4c,_4d,red,_4e,_4f,_50){ +with(_4c){ +return objj_msgSend(_4c,"colorWithRed:green:blue:alpha:",red,_4e,_4f,_50); +} +}),new objj_method(sel_getUid("colorWithWhite:alpha:"),function(_51,_52,_53,_54){ +with(_51){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[_53,_53,_53,_54]); +} +}),new objj_method(sel_getUid("colorWithCalibratedWhite:alpha:"),function(_55,_56,_57,_58){ +with(_55){ +return objj_msgSend(_55,"colorWithWhite:alpha:",_57,_58); +} +}),new objj_method(sel_getUid("colorWithHue:saturation:brightness:"),function(_59,_5a,hue,_5b,_5c){ +with(_59){ +return objj_msgSend(_59,"colorWithHue:saturation:brightness:alpha:",hue,_5b,_5c,1); +} +}),new objj_method(sel_getUid("colorWithHue:saturation:brightness:alpha:"),function(_5d,_5e,hue,_5f,_60,_61){ +with(_5d){ +if(_5f===0){ +return objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",_60/100,_61); +} +var f=hue%60,p=(_60*(100-_5f))/10000,q=(_60*(6000-_5f*f))/600000,t=(_60*(6000-_5f*(60-f)))/600000,b=_60/100; +switch(FLOOR(hue/60)){ +case 0: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",b,t,p,_61); +case 1: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",q,b,p,_61); +case 2: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",p,b,t,_61); +case 3: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",p,q,b,_61); +case 4: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",t,p,b,_61); +case 5: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",b,p,q,_61); +} +} +}),new objj_method(sel_getUid("colorWithHexString:"),function(_62,_63,hex){ +with(_62){ +var _64=_65(hex); +return _64?objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",_64):null; +} +}),new objj_method(sel_getUid("blackColor"),function(_66,_67){ +with(_66){ +if(!_8){ +_8=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,0,1]); +} +return _8; +} +}),new objj_method(sel_getUid("blueColor"),function(_68,_69){ +with(_68){ +if(!_b){ +_b=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,1,1]); +} +return _b; +} +}),new objj_method(sel_getUid("darkGrayColor"),function(_6a,_6b){ +with(_6a){ +if(!_f){ +_f=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1/3,1); +} +return _f; +} +}),new objj_method(sel_getUid("grayColor"),function(_6c,_6d){ +with(_6c){ +if(!_d){ +_d=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.5,1); +} +return _d; +} +}),new objj_method(sel_getUid("greenColor"),function(_6e,_6f){ +with(_6e){ +if(!_a){ +_a=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,1,0,1]); +} +return _a; +} +}),new objj_method(sel_getUid("lightGrayColor"),function(_70,_71){ +with(_70){ +if(!_e){ +_e=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",2/3,1); +} +return _e; +} +}),new objj_method(sel_getUid("redColor"),function(_72,_73){ +with(_72){ +if(!_9){ +_9=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0,0,1]); +} +return _9; +} +}),new objj_method(sel_getUid("whiteColor"),function(_74,_75){ +with(_74){ +if(!_10){ +_10=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,1,1,1]); +} +return _10; +} +}),new objj_method(sel_getUid("yellowColor"),function(_76,_77){ +with(_76){ +if(!_c){ +_c=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,1,0,1]); +} +return _c; +} +}),new objj_method(sel_getUid("brownColor"),function(_78,_79){ +with(_78){ +if(!_11){ +_11=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.6,0.4,0.2,1]); +} +return _11; +} +}),new objj_method(sel_getUid("cyanColor"),function(_7a,_7b){ +with(_7a){ +if(!_12){ +_12=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,1,1,1]); +} +return _12; +} +}),new objj_method(sel_getUid("magentaColor"),function(_7c,_7d){ +with(_7c){ +if(!_13){ +_13=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0,1,1]); +} +return _13; +} +}),new objj_method(sel_getUid("orangeColor"),function(_7e,_7f){ +with(_7e){ +if(!_14){ +_14=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0.5,0,1]); +} +return _14; +} +}),new objj_method(sel_getUid("purpleColor"),function(_80,_81){ +with(_80){ +if(!_15){ +_15=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.5,0,0.5,1]); +} +return _15; +} +}),new objj_method(sel_getUid("shadowColor"),function(_82,_83){ +with(_82){ +if(!_16){ +_16=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,0,1/3]); +} +return _16; +} +}),new objj_method(sel_getUid("clearColor"),function(_84,_85){ +with(_84){ +if(!_17){ +_17=objj_msgSend(_84,"colorWithCalibratedWhite:alpha:",0,0); +} +return _17; +} +}),new objj_method(sel_getUid("alternateSelectedControlColor"),function(_86,_87){ +with(_86){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.22,0.46,0.84,1]); +} +}),new objj_method(sel_getUid("secondarySelectedControlColor"),function(_88,_89){ +with(_88){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.83,0.83,0.83,1]); +} +}),new objj_method(sel_getUid("colorWithPatternImage:"),function(_8a,_8b,_8c){ +with(_8a){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithPatternImage:",_8c); +} +}),new objj_method(sel_getUid("colorWithCSSString:"),function(_8d,_8e,_8f){ +with(_8d){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithCSSString:",_8f); +} +})]); +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_18,[new objj_method(sel_getUid("set"),function(_90,_91){ +with(_90){ +objj_msgSend(_90,"setFill"); +objj_msgSend(_90,"setStroke"); +} +}),new objj_method(sel_getUid("setFill"),function(_92,_93){ +with(_92){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetFillColor(ctx,_92); +} +}),new objj_method(sel_getUid("setStroke"),function(_94,_95){ +with(_94){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(ctx,_94); +} +})]); +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_19,[new objj_method(sel_getUid("randomColor"),function(_96,_97){ +with(_96){ +return objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",RAND(),RAND(),RAND(),1); +} +})]); +var _98="CPColorComponentsKey",_99="CPColorPatternImageKey"; +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_18,[new objj_method(sel_getUid("initWithCoder:"),function(_9a,_9b,_9c){ +with(_9a){ +if(objj_msgSend(_9c,"containsValueForKey:",_99)){ +return objj_msgSend(_9a,"_initWithPatternImage:",objj_msgSend(_9c,"decodeObjectForKey:",_99)); +} +return objj_msgSend(_9a,"_initWithRGBA:",objj_msgSend(_9c,"decodeObjectForKey:",_98)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9d,_9e,_9f){ +with(_9d){ +if(_patternImage){ +objj_msgSend(_9f,"encodeObject:forKey:",_patternImage,_99); +}else{ +objj_msgSend(_9f,"encodeObject:forKey:",_components,_98); +} +} +})]); +var _a0="0123456789ABCDEF"; +var _65=function(hex){ +if(hex.length==3){ +hex=hex.charAt(0)+hex.charAt(0)+hex.charAt(1)+hex.charAt(1)+hex.charAt(2)+hex.charAt(2); +} +if(hex.length!=6){ +return null; +} +hex=hex.toUpperCase(); +for(var i=0;iobjj_msgSend(_6e,"bounds").size.width-1||_71.x<1){ +return NO; +} +objj_msgSend(_colorPanel,"setColor:updatePicker:",objj_msgSend(_6e,"colorAtIndex:",FLOOR(_71.x/13)),YES); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_73,_74,_75){ +with(_73){ +var _76=objj_msgSend(_73,"convertPoint:fromView:",objj_msgSend(_75,"locationInWindow"),nil); +if(_76.x>objj_msgSend(_73,"bounds").size.width-1||_76.x<1){ +return NO; +} +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",objj_msgSend(CPArray,"arrayWithObject:",CPColorDragType),_73); +var _77=_swatches[FLOOR(_76.x/13)]; +_dragColor=objj_msgSend(objj_msgSend(_77,"subviews")[0],"backgroundColor"); +var _78=CPRectCreateCopy(objj_msgSend(_77,"bounds")); +var _79=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_78),_7a=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(_78,1,1)); +objj_msgSend(_79,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_7a,"setBackgroundColor:",_dragColor); +objj_msgSend(_79,"addSubview:",_7a); +objj_msgSend(_73,"dragView:at:offset:event:pasteboard:source:slideBack:",_79,CPPointMake(_76.x-_78.size.width/2,_76.y-_78.size.height/2),CPPointMake(0,0),_75,nil,_73,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +if(_7e==CPColorDragType){ +objj_msgSend(_7d,"setData:forType:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_dragColor),_7e); +} +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(_7f,"convertPoint:fromView:",objj_msgSend(_81,"draggingLocation"),nil),_83=objj_msgSend(_81,"draggingPasteboard"),_84=nil; +if(!objj_msgSend(_83,"availableTypeFromArray:",[CPColorDragType])||_82.x>objj_msgSend(_7f,"bounds").size.width-1||_82.x<1){ +return NO; +} +objj_msgSend(_7f,"setColor:atIndex:",objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(_83,"dataForType:",CPColorDragType)),FLOOR(_82.x/13)); +} +})]); +var _8=objj_allocateClassPair(CPView,"_CPColorPanelPreview"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_colorPanel")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithFrame:"),function(_85,_86,_87){ +with(_85){ +_85=objj_msgSendSuper({receiver:_85,super_class:objj_getClass("_CPColorPanelPreview").super_class},"initWithFrame:",_87); +objj_msgSend(_85,"registerForDraggedTypes:",objj_msgSend(CPArray,"arrayWithObjects:",CPColorDragType)); +return _85; +} +}),new objj_method(sel_getUid("setColorPanel:"),function(_88,_89,_8a){ +with(_88){ +_colorPanel=_8a; +} +}),new objj_method(sel_getUid("colorPanel"),function(_8b,_8c){ +with(_8b){ +return _colorPanel; +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_8d,_8e,_8f){ +with(_8d){ +var _90=objj_msgSend(_8f,"draggingPasteboard"); +if(!objj_msgSend(_90,"availableTypeFromArray:",[CPColorDragType])){ +return NO; +} +var _91=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(_90,"dataForType:",CPColorDragType)); +objj_msgSend(_colorPanel,"setColor:updatePicker:",_91,YES); +} +}),new objj_method(sel_getUid("isOpaque"),function(_92,_93){ +with(_92){ +return YES; +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_94,_95,_96){ +with(_94){ +var _97=objj_msgSend(_94,"convertPoint:fromView:",objj_msgSend(_96,"locationInWindow"),nil); +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",[CPColorDragType],_94); +var _98=CPRectMake(0,0,15,15); +var _99=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_98),_9a=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(_98,1,1)); +objj_msgSend(_99,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_9a,"setBackgroundColor:",objj_msgSend(_94,"backgroundColor")); +objj_msgSend(_99,"addSubview:",_9a); +objj_msgSend(_94,"dragView:at:offset:event:pasteboard:source:slideBack:",_99,CPPointMake(_97.x-_98.size.width/2,_97.y-_98.size.height/2),CPPointMake(0,0),_96,nil,_94,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_9b,_9c,_9d,_9e){ +with(_9b){ +if(_9e==CPColorDragType){ +objj_msgSend(_9d,"setData:forType:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",objj_msgSend(_9b,"backgroundColor")),_9e); +} +} +})]); +objj_executeFile("CPColorPicker.j",YES); +objj_executeFile("CPSliderColorPicker.j",YES); +objj_msgSend(CPColorPanel,"provideColorPickerClass:",CPColorWheelColorPicker); +objj_msgSend(CPColorPanel,"provideColorPickerClass:",CPSliderColorPicker); +p;15;CPColorPicker.jt;10195;@STATIC;1.0;I;21;Foundation/CPObject.ji;14;CPColorPanel.jt;10130; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPColorPanel.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_panel"),new objj_ivar("_mask")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPColorPicker").super_class},"init"); +_panel=_6; +_mask=_5; +return _3; +} +}),new objj_method(sel_getUid("colorPanel"),function(_7,_8){ +with(_7){ +return _panel; +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_9,_a){ +with(_9){ +return nil; +} +}),new objj_method(sel_getUid("setMode:"),function(_b,_c,_d){ +with(_b){ +return; +} +}),new objj_method(sel_getUid("setColor:"),function(_e,_f,_10){ +with(_e){ +return; +} +})]); +var _1=objj_allocateClassPair(CPColorPicker,"CPColorWheelColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_pickerView"),new objj_ivar("_brightnessSlider"),new objj_ivar("_hueSaturationView"),new objj_ivar("_cachedColor")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_11,_12,_13,_14){ +with(_11){ +return objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPColorWheelColorPicker").super_class},"initWithPickerMask:colorPanel:",_13,_14); +} +}),new objj_method(sel_getUid("initView"),function(_15,_16){ +with(_15){ +aFrame=CPRectMake(0,0,CPColorPickerViewWidth,CPColorPickerViewHeight); +_pickerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",aFrame); +objj_msgSend(_pickerView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_brightnessSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CGRectMake(0,(aFrame.size.height-34),aFrame.size.width,15)); +objj_msgSend(_brightnessSlider,"setValue:forThemeAttribute:",15,"track-width"); +objj_msgSend(_brightnessSlider,"setValue:forThemeAttribute:",objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPColorPicker,"class")),"pathForResource:","brightness_bar.png"))),"track-color"); +objj_msgSend(_brightnessSlider,"setMinValue:",0); +objj_msgSend(_brightnessSlider,"setMaxValue:",100); +objj_msgSend(_brightnessSlider,"setFloatValue:",100); +objj_msgSend(_brightnessSlider,"setTarget:",_15); +objj_msgSend(_brightnessSlider,"setAction:",sel_getUid("brightnessSliderDidChange:")); +objj_msgSend(_brightnessSlider,"setAutoresizingMask:",CPViewWidthSizable|CPViewMinYMargin); +_hueSaturationView=objj_msgSend(objj_msgSend(__CPColorWheel,"alloc"),"initWithFrame:",CPRectMake(0,0,aFrame.size.width,aFrame.size.height-38)); +objj_msgSend(_hueSaturationView,"setDelegate:",_15); +objj_msgSend(_hueSaturationView,"setAutoresizingMask:",(CPViewWidthSizable|CPViewHeightSizable)); +objj_msgSend(_pickerView,"addSubview:",_hueSaturationView); +objj_msgSend(_pickerView,"addSubview:",_brightnessSlider); +} +}),new objj_method(sel_getUid("brightnessSliderDidChange:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"updateColor"); +} +}),new objj_method(sel_getUid("colorWheelDidChange:"),function(_1a,_1b,_1c){ +with(_1a){ +objj_msgSend(_1a,"updateColor"); +} +}),new objj_method(sel_getUid("updateColor"),function(_1d,_1e){ +with(_1d){ +var hue=objj_msgSend(_hueSaturationView,"angle"),_1f=objj_msgSend(_hueSaturationView,"distance"),_20=objj_msgSend(_brightnessSlider,"floatValue"); +objj_msgSend(_hueSaturationView,"setWheelBrightness:",_20/100); +objj_msgSend(_brightnessSlider,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithHue:saturation:brightness:",hue,_1f,100)); +var _21=objj_msgSend(_1d,"colorPanel"),_22=objj_msgSend(_21,"opacity"); +_cachedColor=objj_msgSend(CPColor,"colorWithHue:saturation:brightness:alpha:",hue,_1f,_20,_22); +objj_msgSend(objj_msgSend(_1d,"colorPanel"),"setColor:",_cachedColor); +} +}),new objj_method(sel_getUid("supportsMode:"),function(_23,_24,_25){ +with(_23){ +return (_25==CPWheelColorPickerMode)?YES:NO; +} +}),new objj_method(sel_getUid("currentMode"),function(_26,_27){ +with(_26){ +return CPWheelColorPickerMode; +} +}),new objj_method(sel_getUid("provideNewView:"),function(_28,_29,_2a){ +with(_28){ +if(_2a){ +objj_msgSend(_28,"initView"); +} +return _pickerView; +} +}),new objj_method(sel_getUid("setColor:"),function(_2b,_2c,_2d){ +with(_2b){ +if(objj_msgSend(_2d,"isEqual:",_cachedColor)){ +return; +} +var hsb=objj_msgSend(_2d,"hsbComponents"); +objj_msgSend(_hueSaturationView,"setPositionToColor:",_2d); +objj_msgSend(_brightnessSlider,"setFloatValue:",hsb[2]); +objj_msgSend(_hueSaturationView,"setWheelBrightness:",hsb[2]/100); +objj_msgSend(_brightnessSlider,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithHue:saturation:brightness:",hsb[0],hsb[1],100)); +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_button.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("provideNewAlternateButtonImage"),function(_30,_31){ +with(_30){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_button_h.png"),CGSizeMake(32,32)); +} +})]); +var _1=objj_allocateClassPair(CPView,"__CPColorWheel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_wheelImage"),new objj_ivar("_blackWheelImage"),new objj_ivar("_crosshair"),new objj_ivar("_delegate"),new objj_ivar("_angle"),new objj_ivar("_distance"),new objj_ivar("_radius")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_32,_33,_34){ +with(_32){ +_32=objj_msgSendSuper({receiver:_32,super_class:objj_getClass("__CPColorWheel").super_class},"initWithFrame:",_34); +var _35=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel.png"); +_wheelImage=new Image(); +_wheelImage.src=_35; +_wheelImage.style.position="absolute"; +_35=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_black.png"); +_blackWheelImage=new Image(); +_blackWheelImage.src=_35; +_blackWheelImage.style.opacity="0"; +_blackWheelImage.style.filter="alpha(opacity=0)"; +_blackWheelImage.style.position="absolute"; +_DOMElement.appendChild(_wheelImage); +_DOMElement.appendChild(_blackWheelImage); +objj_msgSend(_32,"setWheelSize:",_34.size); +_crosshair=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CPRectMake(_radius-2,_radius-2,4,4)); +objj_msgSend(_crosshair,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +var _36=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_crosshair,"bounds"),1,1)); +objj_msgSend(_36,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_crosshair,"addSubview:",_36); +objj_msgSend(_32,"addSubview:",_crosshair); +return _32; +} +}),new objj_method(sel_getUid("setWheelBrightness:"),function(_37,_38,_39){ +with(_37){ +_blackWheelImage.style.opacity=1-_39; +_blackWheelImage.style.filter="alpha(opacity="+(1-_39)*100+")"; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSendSuper({receiver:_3a,super_class:objj_getClass("__CPColorWheel").super_class},"setFrameSize:",_3c); +objj_msgSend(_3a,"setWheelSize:",_3c); +} +}),new objj_method(sel_getUid("setWheelSize:"),function(_3d,_3e,_3f){ +with(_3d){ +var min=MIN(_3f.width,_3f.height); +_blackWheelImage.style.width=min; +_blackWheelImage.style.height=min; +_blackWheelImage.width=min; +_blackWheelImage.height=min; +_blackWheelImage.style.top=(_3f.height-min)/2+"px"; +_blackWheelImage.style.left=(_3f.width-min)/2+"px"; +_wheelImage.style.width=min; +_wheelImage.style.height=min; +_wheelImage.width=min; +_wheelImage.height=min; +_wheelImage.style.top=(_3f.height-min)/2+"px"; +_wheelImage.style.left=(_3f.width-min)/2+"px"; +_radius=min/2; +objj_msgSend(_3d,"setAngle:distance:",objj_msgSend(_3d,"degreesToRadians:",_angle),(_distance/100)*_radius); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_40,_41,_42){ +with(_40){ +_delegate=_42; +} +}),new objj_method(sel_getUid("delegate"),function(_43,_44){ +with(_43){ +return _delegate; +} +}),new objj_method(sel_getUid("angle"),function(_45,_46){ +with(_45){ +return _angle; +} +}),new objj_method(sel_getUid("distance"),function(_47,_48){ +with(_47){ +return _distance; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_49,_4a,_4b){ +with(_49){ +objj_msgSend(_49,"reposition:",_4b); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"reposition:",_4e); +} +}),new objj_method(sel_getUid("reposition:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSend(_4f,"bounds"),_53=objj_msgSend(_4f,"convertPoint:fromView:",objj_msgSend(_51,"locationInWindow"),nil); +var _54=CGRectGetMidX(_52); +var _55=CGRectGetMidY(_52); +var _56=MIN(SQRT((_53.x-_54)*(_53.x-_54)+(_53.y-_55)*(_53.y-_55)),_radius); +var _57=ATAN2(_53.y-_55,_53.x-_54); +objj_msgSend(_4f,"setAngle:distance:",_57,_56); +objj_msgSend(_delegate,"colorWheelDidChange:",_4f); +} +}),new objj_method(sel_getUid("setAngle:distance:"),function(_58,_59,_5a,_5b){ +with(_58){ +var _5c=objj_msgSend(_58,"bounds"); +var _5d=CGRectGetMidX(_5c); +var _5e=CGRectGetMidY(_5c); +_angle=objj_msgSend(_58,"radiansToDegrees:",_5a); +_distance=(_5b/_radius)*100; +objj_msgSend(_crosshair,"setFrameOrigin:",CPPointMake(COS(_5a)*_5b+_5d-2,SIN(_5a)*_5b+_5e-2)); +} +}),new objj_method(sel_getUid("setPositionToColor:"),function(_5f,_60,_61){ +with(_5f){ +var hsb=objj_msgSend(_61,"hsbComponents"),_62=objj_msgSend(_5f,"bounds"); +var _63=objj_msgSend(_5f,"degreesToRadians:",hsb[0]),_64=(hsb[1]/100)*_radius; +objj_msgSend(_5f,"setAngle:distance:",_63,_64); +} +}),new objj_method(sel_getUid("radiansToDegrees:"),function(_65,_66,_67){ +with(_65){ +return ((-_67/PI)*180+360)%360; +} +}),new objj_method(sel_getUid("degreesToRadians:"),function(_68,_69,_6a){ +with(_68){ +return -(((_6a-360)/180)*PI); +} +})]); +p;13;CPColorWell.jt;6201;@STATIC;1.0;I;21;Foundation/CPString.ji;8;CPView.ji;9;CPColor.ji;14;CPColorPanel.jt;6112; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPColorPanel.j",YES); +var _1="_CPColorWellDidBecomeExclusiveNotification"; +var _2=objj_allocateClassPair(CPControl,"CPColorWell"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_active"),new objj_ivar("_bordered"),new objj_ivar("_color"),new objj_ivar("_wellView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPColorWell").super_class},"initWithFrame:",_6); +if(_4){ +_active=NO; +_bordered=YES; +_color=objj_msgSend(CPColor,"whiteColor"); +objj_msgSend(_4,"drawBezelWithHighlight:",NO); +objj_msgSend(_4,"drawWellInside:",CGRectInset(objj_msgSend(_4,"bounds"),3,3)); +objj_msgSend(_4,"_registerForNotifications"); +} +return _4; +} +}),new objj_method(sel_getUid("_registerForNotifications"),function(_7,_8){ +with(_7){ +var _9=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_9,"addObserver:selector:name:object:",_7,sel_getUid("colorWellDidBecomeExclusive:"),_1,nil); +objj_msgSend(_9,"addObserver:selector:name:object:",_7,sel_getUid("colorPanelWillClose:"),CPWindowWillCloseNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("isBordered"),function(_a,_b){ +with(_a){ +return _bordered; +} +}),new objj_method(sel_getUid("setBordered:"),function(_c,_d,_e){ +with(_c){ +if(_bordered==_e){ +return; +} +_bordered=_e; +objj_msgSend(_c,"drawWellInside:",CGRectInset(objj_msgSend(_c,"bounds"),3,3)); +} +}),new objj_method(sel_getUid("color"),function(_f,_10){ +with(_f){ +return _color; +} +}),new objj_method(sel_getUid("setColor:"),function(_11,_12,_13){ +with(_11){ +if(_color==_13){ +return; +} +_color=_13; +objj_msgSend(_11,"drawWellInside:",CGRectInset(objj_msgSend(_11,"bounds"),3,3)); +} +}),new objj_method(sel_getUid("takeColorFrom:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_14,"setColor:",objj_msgSend(_16,"color")); +} +}),new objj_method(sel_getUid("activate:"),function(_17,_18,_19){ +with(_17){ +if(_19){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",_1,_17); +} +if(objj_msgSend(_17,"isActive")){ +return; +} +_active=YES; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_17,sel_getUid("colorPanelDidChangeColor:"),CPColorPanelColorDidChangeNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("deactivate"),function(_1a,_1b){ +with(_1a){ +if(!objj_msgSend(_1a,"isActive")){ +return; +} +_active=NO; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_1a,CPColorPanelColorDidChangeNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("isActive"),function(_1c,_1d){ +with(_1c){ +return _active; +} +}),new objj_method(sel_getUid("drawBezelWithHighlight:"),function(_1e,_1f,_20){ +with(_1e){ +} +}),new objj_method(sel_getUid("drawWellInside:"),function(_21,_22,_23){ +with(_21){ +if(!_wellView){ +_wellView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_23); +objj_msgSend(_wellView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_21,"addSubview:",_wellView); +}else{ +objj_msgSend(_wellView,"setFrame:",_23); +} +objj_msgSend(_wellView,"setBackgroundColor:",_color); +} +}),new objj_method(sel_getUid("colorPanelDidChangeColor:"),function(_24,_25,_26){ +with(_24){ +objj_msgSend(_24,"takeColorFrom:",objj_msgSend(_26,"object")); +objj_msgSend(_24,"sendAction:to:",objj_msgSend(_24,"action"),objj_msgSend(_24,"target")); +} +}),new objj_method(sel_getUid("colorWellDidBecomeExclusive:"),function(_27,_28,_29){ +with(_27){ +if(_27!=objj_msgSend(_29,"object")){ +objj_msgSend(_27,"deactivate"); +} +} +}),new objj_method(sel_getUid("colorPanelWillClose:"),function(_2a,_2b,_2c){ +with(_2a){ +objj_msgSend(_2a,"deactivate"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_2d,_2e,_2f){ +with(_2d){ +if(!objj_msgSend(_2d,"isEnabled")){ +return; +} +objj_msgSend(_2d,"drawBezelWithHighlight:",YES); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_30,_31,_32){ +with(_30){ +if(!objj_msgSend(_30,"isEnabled")){ +return; +} +objj_msgSend(_30,"drawBezelWithHighlight:",CGRectContainsPoint(objj_msgSend(_30,"bounds"),objj_msgSend(_30,"convertPoint:fromView:",objj_msgSend(_32,"locationInWindow"),nil))); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_33,_34,_35){ +with(_33){ +objj_msgSend(_33,"drawBezelWithHighlight:",NO); +if(!CGRectContainsPoint(objj_msgSend(_33,"bounds"),objj_msgSend(_33,"convertPoint:fromView:",objj_msgSend(_35,"locationInWindow"),nil))||!objj_msgSend(_33,"isEnabled")){ +return; +} +objj_msgSend(_33,"activate:",YES); +var _36=objj_msgSend(CPColorPanel,"sharedColorPanel"); +objj_msgSend(_36,"setColor:",_color); +objj_msgSend(_36,"orderFront:",_33); +} +})]); +var _37="CPColorWellColorKey",_38="CPColorWellBorderedKey"; +var _2=objj_getClass("CPColorWell"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPColorWell\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_39,_3a,_3b){ +with(_39){ +_39=objj_msgSendSuper({receiver:_39,super_class:objj_getClass("CPColorWell").super_class},"initWithCoder:",_3b); +if(_39){ +_active=NO; +_bordered=objj_msgSend(_3b,"decodeBoolForKey:",_38); +_color=objj_msgSend(_3b,"decodeObjectForKey:",_37); +objj_msgSend(_39,"drawBezelWithHighlight:",NO); +objj_msgSend(_39,"drawWellInside:",CGRectInset(objj_msgSend(_39,"bounds"),3,3)); +objj_msgSend(_39,"_registerForNotifications"); +} +return _39; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=_subviews; +_subviews=objj_msgSend(_subviews,"copy"); +objj_msgSend(_subviews,"removeObjectIdenticalTo:",_wellView); +objj_msgSendSuper({receiver:_3c,super_class:objj_getClass("CPColorWell").super_class},"encodeWithCoder:",_3e); +_subviews=_3f; +objj_msgSend(_3e,"encodeObject:forKey:",_color,_37); +objj_msgSend(_3e,"encodeObject:forKey:",_bordered,_38); +} +})]); +p;17;CPCompatibility.jt;3813;@STATIC;1.0;i;9;CPEvent.ji;12;CPPlatform.jt;3764; +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPPlatform.j",YES); +CPUnknownBrowserEngine=0; +CPGeckoBrowserEngine=1; +CPInternetExplorerBrowserEngine=2; +CPKHTMLBrowserEngine=3; +CPOperaBrowserEngine=4; +CPWebKitBrowserEngine=5; +CPMacOperatingSystem=0; +CPWindowsOperatingSystem=1; +CPOtherOperatingSystem=2; +CPCSSRGBAFeature=1<<5; +CPHTMLCanvasFeature=1<<6; +CPHTMLContentEditableFeature=1<<7; +CPHTMLDragAndDropFeature=1<<8; +CPJavascriptInnerTextFeature=1<<9; +CPJavascriptTextContentFeature=1<<10; +CPJavascriptClipboardEventsFeature=1<<11; +CPJavascriptClipboardAccessFeature=1<<12; +CPJavaScriptCanvasDrawFeature=1<<13; +CPJavaScriptCanvasTransformFeature=1<<14; +CPVMLFeature=1<<15; +CPJavascriptRemedialKeySupport=1<<16; +CPJavaScriptShadowFeature=1<<20; +CPJavaScriptNegativeMouseWheelValues=1<<22; +CPJavaScriptMouseWheelValues_8_15=1<<23; +CPOpacityRequiresFilterFeature=1<<24; +CPInputTypeCanBeChangedFeature=1<<25; +CPHTML5DragAndDropSourceYOffBy1=1<<26; +var _1="",_2=CPUnknownBrowserEngine,_3=0; +_3|=CPInputTypeCanBeChangedFeature; +if(typeof window!=="undefined"&&typeof window.navigator!=="undefined"){ +_1=window.navigator.userAgent; +} +if(window.opera){ +_2=CPOperaBrowserEngine; +_3|=CPJavaScriptCanvasDrawFeature; +}else{ +if(window.attachEvent){ +_2=CPInternetExplorerBrowserEngine; +_3|=CPVMLFeature; +_3|=CPJavascriptRemedialKeySupport; +_3|=CPJavaScriptShadowFeature; +_3|=CPOpacityRequiresFilterFeature; +_3&=~CPInputTypeCanBeChangedFeature; +}else{ +if(_1.indexOf("AppleWebKit/")!=-1){ +_2=CPWebKitBrowserEngine; +_3|=CPCSSRGBAFeature; +_3|=CPHTMLContentEditableFeature; +if(_1.indexOf("Chrome")===-1){ +_3|=CPHTMLDragAndDropFeature; +} +_3|=CPJavascriptClipboardEventsFeature; +_3|=CPJavascriptClipboardAccessFeature; +_3|=CPJavaScriptShadowFeature; +var _4=_1.indexOf("AppleWebKit/")+"AppleWebKit/".length,_5=_1.indexOf(" ",_4),_6=_1.substring(_4,_5),_7=_6.indexOf("."),_8=parseInt(_6.substring(0,_7)),_9=parseInt(_6.substr(_7+1)); +if((_1.indexOf("Safari")!==CPNotFound&&(_8>525||(_8===525&&_9>14)))||_1.indexOf("Chrome")!==CPNotFound){ +_3|=CPJavascriptRemedialKeySupport; +} +if(!objj_msgSend(CPPlatform,"isBrowser")){ +_3|=CPJavascriptRemedialKeySupport; +} +if(_8<532||(_8===532&&_9<6)){ +_3|=CPHTML5DragAndDropSourceYOffBy1; +} +}else{ +if(_1.indexOf("KHTML")!=-1){ +_2=CPKHTMLBrowserEngine; +}else{ +if(_1.indexOf("Gecko")!==-1){ +_2=CPGeckoBrowserEngine; +_3|=CPJavaScriptCanvasDrawFeature; +var _a=_1.indexOf("Firefox"),_b=(_a===-1)?2:parseFloat(_1.substring(_a+"Firefox".length+1)); +if(_b>=3){ +_3|=CPCSSRGBAFeature; +} +if(_b<3){ +_3|=CPJavaScriptMouseWheelValues_8_15; +} +} +} +} +} +} +if(typeof document!="undefined"){ +var _c=document.createElement("canvas"); +if(_c&&_c.getContext){ +_3|=CPHTMLCanvasFeature; +var _d=document.createElement("canvas").getContext("2d"); +if(_d&&_d.setTransform&&_d.transform){ +_3|=CPJavaScriptCanvasTransformFeature; +} +} +var _e=document.createElement("div"); +if(_e.innerText!=undefined){ +_3|=CPJavascriptInnerTextFeature; +}else{ +if(_e.textContent!=undefined){ +_3|=CPJavascriptTextContentFeature; +} +} +} +CPFeatureIsCompatible=function(_f){ +return _3&_f; +}; +CPBrowserIsEngine=function(_10){ +return _2===_10; +}; +CPBrowserIsOperatingSystem=function(_11){ +return OPERATING_SYSTEM===_11; +}; +OPERATING_SYSTEM=CPOtherOperatingSystem; +if(_1.indexOf("Mac")!==-1){ +OPERATING_SYSTEM=CPMacOperatingSystem; +CPPlatformActionKeyMask=CPCommandKeyMask; +CPUndoKeyEquivalent="z"; +CPRedoKeyEquivalent="Z"; +CPUndoKeyEquivalentModifierMask=CPCommandKeyMask; +CPRedoKeyEquivalentModifierMask=CPCommandKeyMask; +}else{ +if(_1.indexOf("Windows")!==-1){ +OPERATING_SYSTEM=CPWindowsOperatingSystem; +} +CPPlatformActionKeyMask=CPControlKeyMask; +CPUndoKeyEquivalent="z"; +CPRedoKeyEquivalent="y"; +CPUndoKeyEquivalentModifierMask=CPControlKeyMask; +CPRedoKeyEquivalentModifierMask=CPControlKeyMask; +} +p;11;CPControl.jt;18804;@STATIC;1.0;i;8;CPFont.ji;10;CPShadow.ji;8;CPView.ji;19;CPKeyValueBinding.jt;18721; +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPShadow.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPKeyValueBinding.j",YES); +CPLeftTextAlignment=0; +CPRightTextAlignment=1; +CPCenterTextAlignment=2; +CPJustifiedTextAlignment=3; +CPNaturalTextAlignment=4; +CPRegularControlSize=0; +CPSmallControlSize=1; +CPMiniControlSize=2; +CPLineBreakByWordWrapping=0; +CPLineBreakByCharWrapping=1; +CPLineBreakByClipping=2; +CPLineBreakByTruncatingHead=3; +CPLineBreakByTruncatingTail=4; +CPLineBreakByTruncatingMiddle=5; +CPTopVerticalTextAlignment=1,CPCenterVerticalTextAlignment=2,CPBottomVerticalTextAlignment=3; +CPScaleProportionally=0; +CPScaleToFit=1; +CPScaleNone=2; +CPNoImage=0; +CPImageOnly=1; +CPImageLeft=2; +CPImageRight=3; +CPImageBelow=4; +CPImageAbove=5; +CPImageOverlaps=6; +CPOnState=1; +CPOffState=0; +CPMixedState=-1; +CPControlNormalBackgroundColor="CPControlNormalBackgroundColor"; +CPControlSelectedBackgroundColor="CPControlSelectedBackgroundColor"; +CPControlHighlightedBackgroundColor="CPControlHighlightedBackgroundColor"; +CPControlDisabledBackgroundColor="CPControlDisabledBackgroundColor"; +CPControlTextDidBeginEditingNotification="CPControlTextDidBeginEditingNotification"; +CPControlTextDidChangeNotification="CPControlTextDidChangeNotification"; +CPControlTextDidEndEditingNotification="CPControlTextDidEndEditingNotification"; +var _1=objj_msgSend(CPColor,"blackColor"); +var _2=objj_allocateClassPair(CPView,"CPControl"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_value"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_sendActionOn"),new objj_ivar("_sendsActionOnEndEditing"),new objj_ivar("_continuousTracking"),new objj_ivar("_trackingWasWithinFrame"),new objj_ivar("_trackingMouseDownFlags"),new objj_ivar("_previousTrackingLocation"),new objj_ivar("_toolTip")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("sendsActionOnEndEditing"),function(_4,_5){ +with(_4){ +return _sendsActionOnEndEditing; +} +}),new objj_method(sel_getUid("setSendsActionOnEndEditing:"),function(_6,_7,_8){ +with(_6){ +_sendsActionOnEndEditing=_8; +} +}),new objj_method(sel_getUid("_reverseSetBinding"),function(_9,_a){ +with(_9){ +var _b=objj_msgSend(CPKeyValueBinding,"getBinding:forObject:",CPValueBinding,_9); +objj_msgSend(_b,"reverseSetValueFor:","objectValue"); +} +}),new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(_c,_d,_e){ +with(_c){ +if(_e==="value"){ +return "objectValue"; +} +return objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPControl").super_class},"_replacementKeyPathForBinding:",_e); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f,_10,_11){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPControl").super_class},"initWithFrame:",_11); +if(_f){ +_sendActionOn=CPLeftMouseUpMask; +_trackingMouseDownFlags=0; +} +return _f; +} +}),new objj_method(sel_getUid("setAction:"),function(_12,_13,_14){ +with(_12){ +_action=_14; +} +}),new objj_method(sel_getUid("action"),function(_15,_16){ +with(_15){ +return _action; +} +}),new objj_method(sel_getUid("setTarget:"),function(_17,_18,_19){ +with(_17){ +_target=_19; +} +}),new objj_method(sel_getUid("target"),function(_1a,_1b){ +with(_1a){ +return _target; +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_1c,_1d,_1e,_1f){ +with(_1c){ +objj_msgSend(_1c,"_reverseSetBinding"); +objj_msgSend(CPApp,"sendAction:to:from:",_1e,_1f,_1c); +} +}),new objj_method(sel_getUid("sendActionOn:"),function(_20,_21,_22){ +with(_20){ +var _23=_sendActionOn; +_sendActionOn=_22; +return _23; +} +}),new objj_method(sel_getUid("isContinuous"),function(_24,_25){ +with(_24){ +return (_sendActionOn&CPPeriodicMask)!==0; +} +}),new objj_method(sel_getUid("setContinuous:"),function(_26,_27,_28){ +with(_26){ +if(_28){ +_sendActionOn|=CPPeriodicMask; +}else{ +_sendActionOn&=~CPPeriodicMask; +} +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(_29,_2a){ +with(_29){ +return NO; +} +}),new objj_method(sel_getUid("trackMouse:"),function(_2b,_2c,_2d){ +with(_2b){ +var _2e=objj_msgSend(_2d,"type"),_2f=objj_msgSend(_2b,"convertPoint:fromView:",objj_msgSend(_2d,"locationInWindow"),nil),_30=objj_msgSend(_2b,"tracksMouseOutsideOfFrame")||CGRectContainsPoint(objj_msgSend(_2b,"bounds"),_2f); +if(_2e===CPLeftMouseUp){ +objj_msgSend(_2b,"stopTracking:at:mouseIsUp:",_previousTrackingLocation,_2f,YES); +_trackingMouseDownFlags=0; +}else{ +if(_2e===CPLeftMouseDown){ +_trackingMouseDownFlags=objj_msgSend(_2d,"modifierFlags"); +_continuousTracking=objj_msgSend(_2b,"startTrackingAt:",_2f); +}else{ +if(_2e===CPLeftMouseDragged){ +if(_30){ +if(!_trackingWasWithinFrame){ +_continuousTracking=objj_msgSend(_2b,"startTrackingAt:",_2f); +}else{ +if(_continuousTracking){ +_continuousTracking=objj_msgSend(_2b,"continueTracking:at:",_previousTrackingLocation,_2f); +} +} +}else{ +objj_msgSend(_2b,"stopTracking:at:mouseIsUp:",_previousTrackingLocation,_2f,NO); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_2b,sel_getUid("trackMouse:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +if((_sendActionOn&(1<<_2e))&&_30){ +objj_msgSend(_2b,"sendAction:to:",_action,_target); +} +_trackingWasWithinFrame=_30; +_previousTrackingLocation=_2f; +} +}),new objj_method(sel_getUid("setState:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("nextState"),function(_34,_35){ +with(_34){ +return 0; +} +}),new objj_method(sel_getUid("performClick:"),function(_36,_37,_38){ +with(_36){ +if(!objj_msgSend(_36,"isEnabled")){ +return; +} +objj_msgSend(_36,"highlight:",YES); +objj_msgSend(_36,"setState:",objj_msgSend(_36,"nextState")); +try{ +objj_msgSend(_36,"sendAction:to:",objj_msgSend(_36,"action"),objj_msgSend(_36,"target")); +} +catch(e){ +throw e; +} +finally{ +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0.1,_36,sel_getUid("unhighlightButtonTimerDidFinish:"),nil,NO); +} +} +}),new objj_method(sel_getUid("unhighlightButtonTimerDidFinish:"),function(_39,_3a,_3b){ +with(_39){ +objj_msgSend(_39,"highlight:",NO); +} +}),new objj_method(sel_getUid("mouseDownFlags"),function(_3c,_3d){ +with(_3c){ +return _trackingMouseDownFlags; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(_3e,"highlight:",YES); +return (_sendActionOn&CPPeriodicMask)||(_sendActionOn&CPLeftMouseDraggedMask); +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(_41,_42,_43,_44){ +with(_41){ +return (_sendActionOn&CPPeriodicMask)||(_sendActionOn&CPLeftMouseDraggedMask); +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_45,_46,_47,_48,_49){ +with(_45){ +objj_msgSend(_45,"highlight:",NO); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_4a,_4b,_4c){ +with(_4a){ +if(!objj_msgSend(_4a,"isEnabled")){ +return; +} +objj_msgSend(_4a,"trackMouse:",_4c); +} +}),new objj_method(sel_getUid("objectValue"),function(_4d,_4e){ +with(_4d){ +return _value; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_4f,_50,_51){ +with(_4f){ +_value=_51; +objj_msgSend(_4f,"setNeedsLayout"); +objj_msgSend(_4f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("floatValue"),function(_52,_53){ +with(_52){ +var _54=parseFloat(_value,10); +return isNaN(_54)?0:_54; +} +}),new objj_method(sel_getUid("setFloatValue:"),function(_55,_56,_57){ +with(_55){ +objj_msgSend(_55,"setObjectValue:",_57); +} +}),new objj_method(sel_getUid("doubleValue"),function(_58,_59){ +with(_58){ +var _5a=parseFloat(_value,10); +return isNaN(_5a)?0:_5a; +} +}),new objj_method(sel_getUid("setDoubleValue:"),function(_5b,_5c,_5d){ +with(_5b){ +objj_msgSend(_5b,"setObjectValue:",_5d); +} +}),new objj_method(sel_getUid("intValue"),function(_5e,_5f){ +with(_5e){ +var _60=parseInt(_value,10); +return isNaN(_60)?0:_60; +} +}),new objj_method(sel_getUid("setIntValue:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_61,"setObjectValue:",_63); +} +}),new objj_method(sel_getUid("integerValue"),function(_64,_65){ +with(_64){ +var _66=parseInt(_value,10); +return isNaN(_66)?0:_66; +} +}),new objj_method(sel_getUid("setIntegerValue:"),function(_67,_68,_69){ +with(_67){ +objj_msgSend(_67,"setObjectValue:",_69); +} +}),new objj_method(sel_getUid("stringValue"),function(_6a,_6b){ +with(_6a){ +return (_value===undefined||_value===nil)?"":String(_value); +} +}),new objj_method(sel_getUid("setStringValue:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(_6c,"setObjectValue:",_6e); +} +}),new objj_method(sel_getUid("takeDoubleValueFrom:"),function(_6f,_70,_71){ +with(_6f){ +if(objj_msgSend(_71,"respondsToSelector:",sel_getUid("doubleValue"))){ +objj_msgSend(_6f,"setDoubleValue:",objj_msgSend(_71,"doubleValue")); +} +} +}),new objj_method(sel_getUid("takeFloatValueFrom:"),function(_72,_73,_74){ +with(_72){ +if(objj_msgSend(_74,"respondsToSelector:",sel_getUid("floatValue"))){ +objj_msgSend(_72,"setFloatValue:",objj_msgSend(_74,"floatValue")); +} +} +}),new objj_method(sel_getUid("takeIntegerValueFrom:"),function(_75,_76,_77){ +with(_75){ +if(objj_msgSend(_77,"respondsToSelector:",sel_getUid("integerValue"))){ +objj_msgSend(_75,"setIntegerValue:",objj_msgSend(_77,"integerValue")); +} +} +}),new objj_method(sel_getUid("takeIntValueFrom:"),function(_78,_79,_7a){ +with(_78){ +if(objj_msgSend(_7a,"respondsToSelector:",sel_getUid("intValue"))){ +objj_msgSend(_78,"setIntValue:",objj_msgSend(_7a,"intValue")); +} +} +}),new objj_method(sel_getUid("takeObjectValueFrom:"),function(_7b,_7c,_7d){ +with(_7b){ +if(objj_msgSend(_7d,"respondsToSelector:",sel_getUid("objectValue"))){ +objj_msgSend(_7b,"setObjectValue:",objj_msgSend(_7d,"objectValue")); +} +} +}),new objj_method(sel_getUid("takeStringValueFrom:"),function(_7e,_7f,_80){ +with(_7e){ +if(objj_msgSend(_80,"respondsToSelector:",sel_getUid("stringValue"))){ +objj_msgSend(_7e,"setStringValue:",objj_msgSend(_80,"stringValue")); +} +} +}),new objj_method(sel_getUid("textDidBeginEditing:"),function(_81,_82,_83){ +with(_81){ +if(objj_msgSend(_83,"object")!=_81){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidBeginEditingNotification,_81,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_83,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("textDidChange:"),function(_84,_85,_86){ +with(_84){ +if(objj_msgSend(_86,"object")!=_84){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidChangeNotification,_84,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_86,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("textDidEndEditing:"),function(_87,_88,_89){ +with(_87){ +if(objj_msgSend(_89,"object")!=_87){ +return; +} +objj_msgSend(_87,"_reverseSetBinding"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidEndEditingNotification,_87,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_89,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("setAlignment:"),function(_8a,_8b,_8c){ +with(_8a){ +objj_msgSend(_8a,"setValue:forThemeAttribute:",_8c,"alignment"); +} +}),new objj_method(sel_getUid("alignment"),function(_8d,_8e){ +with(_8d){ +return objj_msgSend(_8d,"valueForThemeAttribute:","alignment"); +} +}),new objj_method(sel_getUid("setVerticalAlignment:"),function(_8f,_90,_91){ +with(_8f){ +objj_msgSend(_8f,"setValue:forThemeAttribute:",_91,"vertical-alignment"); +} +}),new objj_method(sel_getUid("verticalAlignment"),function(_92,_93){ +with(_92){ +return objj_msgSend(_92,"valueForThemeAttribute:","vertical-alignment"); +} +}),new objj_method(sel_getUid("setLineBreakMode:"),function(_94,_95,_96){ +with(_94){ +objj_msgSend(_94,"setValue:forThemeAttribute:",_96,"line-break-mode"); +} +}),new objj_method(sel_getUid("lineBreakMode"),function(_97,_98){ +with(_97){ +return objj_msgSend(_97,"valueForThemeAttribute:","line-break-mode"); +} +}),new objj_method(sel_getUid("setTextColor:"),function(_99,_9a,_9b){ +with(_99){ +objj_msgSend(_99,"setValue:forThemeAttribute:",_9b,"text-color"); +} +}),new objj_method(sel_getUid("textColor"),function(_9c,_9d){ +with(_9c){ +return objj_msgSend(_9c,"valueForThemeAttribute:","text-color"); +} +}),new objj_method(sel_getUid("setFont:"),function(_9e,_9f,_a0){ +with(_9e){ +objj_msgSend(_9e,"setValue:forThemeAttribute:",_a0,"font"); +} +}),new objj_method(sel_getUid("font"),function(_a1,_a2){ +with(_a1){ +return objj_msgSend(_a1,"valueForThemeAttribute:","font"); +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_a3,_a4,_a5){ +with(_a3){ +objj_msgSend(_a3,"setValue:forThemeAttribute:",_a5,"text-shadow-color"); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_a6,_a7){ +with(_a6){ +return objj_msgSend(_a6,"valueForThemeAttribute:","text-shadow-color"); +} +}),new objj_method(sel_getUid("setTextShadowOffset:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"setValue:forThemeAttribute:",_aa,"text-shadow-offset"); +} +}),new objj_method(sel_getUid("textShadowOffset"),function(_ab,_ac){ +with(_ab){ +return objj_msgSend(_ab,"valueForThemeAttribute:","text-shadow-offset"); +} +}),new objj_method(sel_getUid("setImagePosition:"),function(_ad,_ae,_af){ +with(_ad){ +objj_msgSend(_ad,"setValue:forThemeAttribute:",_af,"image-position"); +} +}),new objj_method(sel_getUid("imagePosition"),function(_b0,_b1){ +with(_b0){ +return objj_msgSend(_b0,"valueForThemeAttribute:","image-position"); +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_b2,_b3,_b4){ +with(_b2){ +objj_msgSend(_b2,"setValue:forThemeAttribute:",_b4,"image-scaling"); +} +}),new objj_method(sel_getUid("imageScaling"),function(_b5,_b6){ +with(_b5){ +return objj_msgSend(_b5,"valueForThemeAttribute:","image-scaling"); +} +}),new objj_method(sel_getUid("setEnabled:"),function(_b7,_b8,_b9){ +with(_b7){ +if(_b9){ +objj_msgSend(_b7,"unsetThemeState:",CPThemeStateDisabled); +}else{ +objj_msgSend(_b7,"setThemeState:",CPThemeStateDisabled); +} +} +}),new objj_method(sel_getUid("isEnabled"),function(_ba,_bb){ +with(_ba){ +return !objj_msgSend(_ba,"hasThemeState:",CPThemeStateDisabled); +} +}),new objj_method(sel_getUid("highlight:"),function(_bc,_bd,_be){ +with(_bc){ +objj_msgSend(_bc,"setHighlighted:",_be); +} +}),new objj_method(sel_getUid("setHighlighted:"),function(_bf,_c0,_c1){ +with(_bf){ +if(_c1){ +objj_msgSend(_bf,"setThemeState:",CPThemeStateHighlighted); +}else{ +objj_msgSend(_bf,"unsetThemeState:",CPThemeStateHighlighted); +} +} +}),new objj_method(sel_getUid("isHighlighted"),function(_c2,_c3){ +with(_c2){ +return objj_msgSend(_c2,"hasThemeState:",CPThemeStateHighlighted); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("themeAttributes"),function(_c4,_c5){ +with(_c4){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CPLeftTextAlignment,CPTopVerticalTextAlignment,CPLineBreakByClipping,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"systemFontOfSize:",12),objj_msgSend(CPNull,"null"),{width:0,height:0},CPImageLeft,CPScaleToFit,{width:0,height:0},{width:-1,height:-1}],["alignment","vertical-alignment","line-break-mode","text-color","font","text-shadow-color","text-shadow-offset","image-position","image-scaling","min-size","max-size"]); +} +}),new objj_method(sel_getUid("initialize"),function(_c6,_c7){ +with(_c6){ +if(_c6===objj_msgSend(CPControl,"class")){ +objj_msgSend(_c6,"exposeBinding:","value"); +objj_msgSend(_c6,"exposeBinding:","objectValue"); +objj_msgSend(_c6,"exposeBinding:","stringValue"); +objj_msgSend(_c6,"exposeBinding:","integerValue"); +objj_msgSend(_c6,"exposeBinding:","intValue"); +objj_msgSend(_c6,"exposeBinding:","doubleValue"); +objj_msgSend(_c6,"exposeBinding:","floatValue"); +objj_msgSend(_c6,"exposeBinding:","enabled"); +} +} +})]); +var _c8="CPControlValueKey",_c9="CPControlControlStateKey",_ca="CPControlIsEnabledKey",_cb="CPControlTargetKey",_cc="CPControlActionKey",_cd="CPControlSendActionOnKey",_ce="CPControlSendsActionOnEndEditingKey"; +var _cf="CPImageViewImageKey"; +var _2=objj_getClass("CPControl"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPControl\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_d0,_d1,_d2){ +with(_d0){ +_d0=objj_msgSendSuper({receiver:_d0,super_class:objj_getClass("CPControl").super_class},"initWithCoder:",_d2); +if(_d0){ +objj_msgSend(_d0,"setObjectValue:",objj_msgSend(_d2,"decodeObjectForKey:",_c8)); +objj_msgSend(_d0,"setTarget:",objj_msgSend(_d2,"decodeObjectForKey:",_cb)); +objj_msgSend(_d0,"setAction:",objj_msgSend(_d2,"decodeObjectForKey:",_cc)); +objj_msgSend(_d0,"sendActionOn:",objj_msgSend(_d2,"decodeIntForKey:",_cd)); +objj_msgSend(_d0,"setSendsActionOnEndEditing:",objj_msgSend(_d2,"decodeBoolForKey:",_ce)); +} +return _d0; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_d3,_d4,_d5){ +with(_d3){ +objj_msgSendSuper({receiver:_d3,super_class:objj_getClass("CPControl").super_class},"encodeWithCoder:",_d5); +if(_sendsActionOnEndEditing){ +objj_msgSend(_d5,"encodeBool:forKey:",_sendsActionOnEndEditing,_ce); +} +if(_value!==nil){ +objj_msgSend(_d5,"encodeObject:forKey:",_value,_c8); +} +if(_target!==nil){ +objj_msgSend(_d5,"encodeConditionalObject:forKey:",_target,_cb); +} +if(_action!==NULL){ +objj_msgSend(_d5,"encodeObject:forKey:",_action,_cc); +} +objj_msgSend(_d5,"encodeInt:forKey:",_sendActionOn,_cd); +} +})]); +var _d6=[],_d7={},_d8={}; +_d6[CPRegularControlSize]="Regular"; +_d6[CPSmallControlSize]="Small"; +_d6[CPMiniControlSize]="Mini"; +_CPControlIdentifierForControlSize=function(_d9){ +return _d6[_d9]; +}; +_CPControlColorWithPatternImage=function(_da,_db){ +var _dc=1,_dd=arguments.length,_de=""; +for(;_dc<_dd;++_dc){ +_de+=arguments[_dc]; +} +var _df=_d7[_de]; +if(!_df){ +var _e0=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPControl,"class")); +_df=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e0,"pathForResource:",_db+"/"+_de+".png"),_da[_de])); +_d7[_de]=_df; +} +return _df; +}; +_CPControlThreePartImagePattern=function(_e1,_e2,_e3){ +var _e4=2,_e5=arguments.length,_e6=""; +for(;_e4<_e5;++_e4){ +_e6+=arguments[_e4]; +} +var _e7=_d8[_e6]; +if(!_e7){ +var _e8=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPControl,"class")),_e9=_e3+"/"+_e6; +_e2=_e2[_e6]; +_e7=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"0.png"),_e2[0]),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"1.png"),_e2[1]),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"2.png"),_e2[2])],_e1)); +_d8[_e6]=_e7; +} +return _e7; +}; +p;14;CPController.jt;1707;@STATIC;1.0;t;1688; +var _1="CPControllerDeclaredKeysKey"; +var _2=objj_allocateClassPair(CPObject,"CPController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_editors"),new objj_ivar("_declaredKeys")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPController").super_class},"init"); +if(_4){ +_editors=[]; +_declaredKeys=[]; +} +return _4; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6,_7,_8){ +with(_6){ +if(objj_msgSend(_declaredKeys,"count")>0){ +objj_msgSend(_8,"encodeObject:forKey:",_declaredKeys,_1); +} +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_9,_a,_b){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("CPController").super_class},"init"); +if(_9){ +_editors=[]; +_declaredKeys=objj_msgSend(_b,"decodeObjectForKey:",_1)||[]; +} +return nil; +} +}),new objj_method(sel_getUid("isEditing"),function(_c,_d){ +with(_c){ +return objj_msgSend(_editors,"count")>0; +} +}),new objj_method(sel_getUid("commitEditing"),function(_e,_f){ +with(_e){ +var _10=0,_11=_editors.length; +for(;_10<_11;++_10){ +if(!objj_msgSend(objj_msgSend(_editors,"objectAtIndex:",i),"commitEditing")){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("discardEditing"),function(_12,_13){ +with(_12){ +objj_msgSend(_editors,"makeObjectsPerformSelector:",sel_getUid("discardEditing")); +} +}),new objj_method(sel_getUid("objectDidBeginEditing:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_editors,"addObject:",_16); +} +}),new objj_method(sel_getUid("objectDidEndEditing:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_editors,"removeObject:",_19); +} +})]); +p;10;CPCookie.jt;1234;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1163; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPCookie"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_cookieName"),new objj_ivar("_cookieValue"),new objj_ivar("_expires")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithName:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCookie").super_class},"init"); +_cookieName=_5; +_cookieValue=objj_msgSend(_3,"_readCookieValue"); +return _3; +} +}),new objj_method(sel_getUid("value"),function(_6,_7){ +with(_6){ +return _cookieValue; +} +}),new objj_method(sel_getUid("name"),function(_8,_9){ +with(_8){ +return _cookieName; +} +}),new objj_method(sel_getUid("expires"),function(_a,_b){ +with(_a){ +return _expires; +} +}),new objj_method(sel_getUid("setValue:expires:domain:"),function(_c,_d,_e,_f,_10){ +with(_c){ +if(_f){ +var _11="; expires="+_f.toGMTString(); +}else{ +var _11=""; +} +if(_10){ +_10="; domain="+_10; +}else{ +_10=""; +} +_cookieValue=_e; +_expires=_11; +} +}),new objj_method(sel_getUid("_readCookieValue"),function(_12,_13){ +with(_12){ +return ""; +} +})]); +p;10;CPCursor.jt;7851;@STATIC;1.0;t;7832; +var _1=nil,_2=[],_3={},_4=nil; +var _5=objj_allocateClassPair(CPObject,"CPCursor"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_cssString"),new objj_ivar("_isSetOnMouseEntered"),new objj_ivar("_isSetOnMouseExited")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("isSetOnMouseEntered"),function(_7,_8){ +with(_7){ +return _isSetOnMouseEntered; +} +}),new objj_method(sel_getUid("setOnMouseEntered:"),function(_9,_a,_b){ +with(_9){ +_isSetOnMouseEntered=_b; +} +}),new objj_method(sel_getUid("isSetOnMouseExited"),function(_c,_d){ +with(_c){ +return _isSetOnMouseExited; +} +}),new objj_method(sel_getUid("setOnMouseExited:"),function(_e,_f,_10){ +with(_e){ +_isSetOnMouseExited=_10; +} +}),new objj_method(sel_getUid("initWithCSSString:"),function(_11,_12,_13){ +with(_11){ +if(_11=objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPCursor").super_class},"init")){ +_cssString=_13; +} +return _11; +} +}),new objj_method(sel_getUid("_cssString"),function(_14,_15){ +with(_14){ +return _cssString; +} +}),new objj_method(sel_getUid("initWithImage:hotSpot:"),function(_16,_17,_18,_19){ +with(_16){ +return objj_msgSend(_16,"initWithCSSString:","url("+objj_msgSend(_18,"filename")+")"); +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_1a,_1b,_1c){ +with(_1a){ +} +}),new objj_method(sel_getUid("mouseExited:"),function(_1d,_1e,_1f){ +with(_1d){ +} +}),new objj_method(sel_getUid("set"),function(_20,_21){ +with(_20){ +_1=_20; +objj_msgSend(objj_msgSend(_20,"class"),"_setCursorCSS:",_cssString); +} +}),new objj_method(sel_getUid("push"),function(_22,_23){ +with(_22){ +_1=_2.push(_22); +} +}),new objj_method(sel_getUid("pop"),function(_24,_25){ +with(_24){ +objj_msgSend(CPCursor,"pop"); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_26,_27,_28){ +with(_26){ +if(_26=objj_msgSendSuper({receiver:_26,super_class:objj_getClass("CPCursor").super_class},"init")){ +_cssString=objj_msgSend(_28,"decodeObjectForKey:","CPCursorNameKey"); +} +return _26; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"encodeObject:forKey:",_cssString,"CPCursorNameKey"); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("currentCursor"),function(_2c,_2d){ +with(_2c){ +return _1; +} +}),new objj_method(sel_getUid("cursorWithCSSString:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=_3[_30]; +if(typeof _31=="undefined"){ +_31=objj_msgSend(objj_msgSend(CPCursor,"alloc"),"initWithCSSString:",_30); +_3[_30]=_31; +} +return _31; +} +}),new objj_method(sel_getUid("cursorWithImageNamed:"),function(_32,_33,_34){ +with(_32){ +if(!_4){ +_4="url("+objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",_32),"resourcePath")+"/CPCursor/%@.cur)"; +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +_4+=", default"; +} +} +var url=objj_msgSend(CPString,"stringWithFormat:",_4,_34); +return objj_msgSend(objj_msgSend(CPCursor,"alloc"),"initWithCSSString:",url); +} +}),new objj_method(sel_getUid("arrowCursor"),function(_35,_36){ +with(_35){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","default"); +} +}),new objj_method(sel_getUid("crosshairCursor"),function(_37,_38){ +with(_37){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","crosshair"); +} +}),new objj_method(sel_getUid("IBeamCursor"),function(_39,_3a){ +with(_39){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","text"); +} +}),new objj_method(sel_getUid("pointingHandCursor"),function(_3b,_3c){ +with(_3b){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","pointer"); +} +}),new objj_method(sel_getUid("resizeDownCursor"),function(_3d,_3e){ +with(_3d){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_3e)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","s-resize"); +} +}),new objj_method(sel_getUid("resizeUpCursor"),function(_3f,_40){ +with(_3f){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_40)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","n-resize"); +} +}),new objj_method(sel_getUid("resizeLeftCursor"),function(_41,_42){ +with(_41){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_42)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","w-resize"); +} +}),new objj_method(sel_getUid("resizeRightCursor"),function(_43,_44){ +with(_43){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_44)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","e-resize"); +} +}),new objj_method(sel_getUid("resizeLeftRightCursor"),function(_45,_46){ +with(_45){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","col-resize"); +} +}),new objj_method(sel_getUid("resizeUpDownCursor"),function(_47,_48){ +with(_47){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","row-resize"); +} +}),new objj_method(sel_getUid("operationNotAllowedCursor"),function(_49,_4a){ +with(_49){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","not-allowed"); +} +}),new objj_method(sel_getUid("dragCopyCursor"),function(_4b,_4c){ +with(_4b){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_4c)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","copy"); +} +}),new objj_method(sel_getUid("dragLinkCursor"),function(_4d,_4e){ +with(_4d){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_4e)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","alias"); +} +}),new objj_method(sel_getUid("contextualMenuCursor"),function(_4f,_50){ +with(_4f){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_50)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","context-menu"); +} +}),new objj_method(sel_getUid("openHandCursor"),function(_51,_52){ +with(_51){ +if(CPBrowserIsEngine(CPWebKitBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-webkit-grab"); +}else{ +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-moz-grab"); +}else{ +if(CPBrowserIsEngine(CPOperaBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","move"); +} +} +} +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_52)); +} +}),new objj_method(sel_getUid("closedHandCursor"),function(_53,_54){ +with(_53){ +if(CPBrowserIsEngine(CPWebKitBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-webkit-grabbing"); +}else{ +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-moz-grabbing"); +} +} +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_54)); +} +}),new objj_method(sel_getUid("disappearingItemCursor"),function(_55,_56){ +with(_55){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_56)); +} +}),new objj_method(sel_getUid("hide"),function(_57,_58){ +with(_57){ +objj_msgSend(_57,"_setCursorCSS:","none"); +} +}),new objj_method(sel_getUid("unhide"),function(_59,_5a){ +with(_59){ +objj_msgSend(_59,"_setCursorCSS:",objj_msgSend(_1,"_cssString")); +} +}),new objj_method(sel_getUid("setHiddenUntilMouseMoves:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d){ +objj_msgSend(CPCursor,"hide"); +}else{ +objj_msgSend(CPCursor,"unhide"); +} +} +}),new objj_method(sel_getUid("_setCursorCSS:"),function(_5e,_5f,_60){ +with(_5e){ +var _61=objj_msgSend(objj_msgSend(CPPlatformWindow,"visiblePlatformWindows"),"allObjects"); +for(var i=0,_62=objj_msgSend(_61,"count");i<_62;i++){ +_61[i]._DOMBodyElement.style.cursor=_60; +} +} +}),new objj_method(sel_getUid("pop"),function(_63,_64){ +with(_63){ +if(_2.length>1){ +_2.pop(); +_1=_2[_2.length-1]; +} +} +})]); +p;12;CPDocument.jt;18918;@STATIC;1.0;I;21;Foundation/CPString.jI;20;Foundation/CPArray.ji;13;CPResponder.ji;13;CPSavePanel.ji;18;CPViewController.ji;20;CPWindowController.jt;18763; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPSavePanel.j",YES); +objj_executeFile("CPViewController.j",YES); +objj_executeFile("CPWindowController.j",YES); +CPSaveOperation=0; +CPSaveAsOperation=1; +CPSaveToOperation=2; +CPAutosaveOperation=3; +CPChangeDone=0; +CPChangeUndone=1; +CPChangeCleared=2; +CPChangeReadOtherContents=3; +CPChangeAutosaved=4; +CPDocumentWillSaveNotification="CPDocumentWillSaveNotification"; +CPDocumentDidSaveNotification="CPDocumentDidSaveNotification"; +CPDocumentDidFailToSaveNotification="CPDocumentDidFailToSaveNotification"; +var _1=0; +var _2=objj_allocateClassPair(CPResponder,"CPDocument"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_window"),new objj_ivar("_view"),new objj_ivar("_viewControllersForWindowControllers"),new objj_ivar("_fileURL"),new objj_ivar("_fileType"),new objj_ivar("_windowControllers"),new objj_ivar("_untitledDocumentIndex"),new objj_ivar("_hasUndoManager"),new objj_ivar("_undoManager"),new objj_ivar("_changeCount"),new objj_ivar("_readConnection"),new objj_ivar("_writeRequest"),new objj_ivar("_canCloseAlert")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPDocument").super_class},"init"); +if(_4){ +_windowControllers=[]; +_viewControllersForWindowControllers=objj_msgSend(CPDictionary,"dictionary"); +_hasUndoManager=YES; +_changeCount=0; +objj_msgSend(_4,"setNextResponder:",CPApp); +} +return _4; +} +}),new objj_method(sel_getUid("initWithType:error:"),function(_6,_7,_8,_9){ +with(_6){ +_6=objj_msgSend(_6,"init"); +if(_6){ +objj_msgSend(_6,"setFileType:",_8); +} +return _6; +} +}),new objj_method(sel_getUid("initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_a,_b,_c,_d,_e,_f,_10){ +with(_a){ +_a=objj_msgSend(_a,"init"); +if(_a){ +objj_msgSend(_a,"setFileURL:",_c); +objj_msgSend(_a,"setFileType:",_d); +objj_msgSend(_a,"readFromURL:ofType:delegate:didReadSelector:contextInfo:",_c,_d,_e,_f,_10); +} +return _a; +} +}),new objj_method(sel_getUid("initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_11,_12,_13,_14,_15,_16,_17,_18){ +with(_11){ +_11=objj_msgSend(_11,"init"); +if(_11){ +objj_msgSend(_11,"setFileURL:",_13); +objj_msgSend(_11,"setFileType:",_15); +objj_msgSend(_11,"readFromURL:ofType:delegate:didReadSelector:contextInfo:",_14,_15,_16,_17,_18); +} +return _11; +} +}),new objj_method(sel_getUid("dataOfType:error:"),function(_19,_1a,_1b,_1c){ +with(_19){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataOfType:error: must be overridden by the document subclass."); +} +}),new objj_method(sel_getUid("readFromData:ofType:error:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"readFromData:ofType: must be overridden by the document subclass."); +} +}),new objj_method(sel_getUid("viewControllerWillLoadCib:"),function(_22,_23,_24){ +with(_22){ +} +}),new objj_method(sel_getUid("viewControllerDidLoadCib:"),function(_25,_26,_27){ +with(_25){ +} +}),new objj_method(sel_getUid("firstEligibleExistingWindowController"),function(_28,_29){ +with(_28){ +return nil; +} +}),new objj_method(sel_getUid("makeWindowControllers"),function(_2a,_2b){ +with(_2a){ +objj_msgSend(_2a,"makeViewAndWindowControllers"); +} +}),new objj_method(sel_getUid("makeViewAndWindowControllers"),function(_2c,_2d){ +with(_2c){ +var _2e=objj_msgSend(_2c,"viewCibName"),_2f=nil,_30=nil; +if(objj_msgSend(_2e,"length")){ +_2f=objj_msgSend(objj_msgSend(CPViewController,"alloc"),"initWithCibName:bundle:owner:",_2e,nil,_2c); +} +if(_2f){ +_30=objj_msgSend(_2c,"firstEligibleExistingWindowController"); +} +if(!_30){ +var _31=objj_msgSend(_2c,"windowCibName"); +if(objj_msgSend(_31,"length")){ +_30=objj_msgSend(objj_msgSend(CPWindowController,"alloc"),"initWithWindowCibName:owner:",_31,_2c); +}else{ +if(_2f){ +var _32=objj_msgSend(_2f,"view"),_33=objj_msgSend(_32,"frame"); +_33.origin=CGPointMake(50,50); +var _34=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",_33,CPTitledWindowMask|CPClosableWindowMask|CPMiniaturizableWindowMask|CPResizableWindowMask); +_30=objj_msgSend(objj_msgSend(CPWindowController,"alloc"),"initWithWindow:",_34); +} +} +} +if(_30&&_2f){ +objj_msgSend(_30,"setSupportsMultipleDocuments:",YES); +} +if(_30){ +objj_msgSend(_2c,"addWindowController:",_30); +} +if(_2f){ +objj_msgSend(_2c,"addViewController:forWindowController:",_2f,_30); +} +} +}),new objj_method(sel_getUid("windowControllers"),function(_35,_36){ +with(_35){ +return _windowControllers; +} +}),new objj_method(sel_getUid("addWindowController:"),function(_37,_38,_39){ +with(_37){ +objj_msgSend(_windowControllers,"addObject:",_39); +if(objj_msgSend(_39,"document")!==_37){ +objj_msgSend(_39,"setDocument:",_37); +} +} +}),new objj_method(sel_getUid("removeWindowController:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_3c){ +objj_msgSend(_windowControllers,"removeObject:",_3c); +} +if(objj_msgSend(_3c,"document")===_3a){ +objj_msgSend(_3c,"setDocument:",nil); +} +} +}),new objj_method(sel_getUid("view"),function(_3d,_3e){ +with(_3d){ +return _view; +} +}),new objj_method(sel_getUid("viewControllers"),function(_3f,_40){ +with(_3f){ +return objj_msgSend(_viewControllersForWindowControllers,"allValues"); +} +}),new objj_method(sel_getUid("addViewController:forWindowController:"),function(_41,_42,_43,_44){ +with(_41){ +objj_msgSend(_viewControllersForWindowControllers,"setObject:forKey:",_43,objj_msgSend(_44,"UID")); +if(objj_msgSend(_44,"document")===_41){ +objj_msgSend(_44,"setViewController:",_43); +} +} +}),new objj_method(sel_getUid("removeViewController:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_viewControllersForWindowControllers,"removeObject:",_47); +} +}),new objj_method(sel_getUid("viewControllerForWindowController:"),function(_48,_49,_4a){ +with(_48){ +return objj_msgSend(_viewControllersForWindowControllers,"objectForKey:",objj_msgSend(_4a,"UID")); +} +}),new objj_method(sel_getUid("showWindows"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocument:"),_4b); +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("showWindow:"),_4b); +} +}),new objj_method(sel_getUid("displayName"),function(_4d,_4e){ +with(_4d){ +if(_fileURL){ +return objj_msgSend(_fileURL,"lastPathComponent"); +} +if(!_untitledDocumentIndex){ +_untitledDocumentIndex=++_1; +} +if(_untitledDocumentIndex==1){ +return "Untitled"; +} +return "Untitled "+_untitledDocumentIndex; +} +}),new objj_method(sel_getUid("viewCibName"),function(_4f,_50){ +with(_4f){ +return nil; +} +}),new objj_method(sel_getUid("windowCibName"),function(_51,_52){ +with(_51){ +return nil; +} +}),new objj_method(sel_getUid("windowControllerDidLoadCib:"),function(_53,_54,_55){ +with(_53){ +} +}),new objj_method(sel_getUid("windowControllerWillLoadCib:"),function(_56,_57,_58){ +with(_56){ +} +}),new objj_method(sel_getUid("readFromURL:ofType:delegate:didReadSelector:contextInfo:"),function(_59,_5a,_5b,_5c,_5d,_5e,_5f){ +with(_59){ +objj_msgSend(_readConnection,"cancel"); +_readConnection=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",objj_msgSend(CPURLRequest,"requestWithURL:",_5b),_59); +_readConnection.session=_60(_5c,_5d,_5e,_5f); +} +}),new objj_method(sel_getUid("fileURL"),function(_61,_62){ +with(_61){ +return _fileURL; +} +}),new objj_method(sel_getUid("setFileURL:"),function(_63,_64,_65){ +with(_63){ +if(_fileURL===_65){ +return; +} +_fileURL=_65; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:",sel_getUid("synchronizeWindowTitleWithDocumentName")); +} +}),new objj_method(sel_getUid("saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:"),function(_66,_67,_68,_69,_6a,_6b,_6c,_6d){ +with(_66){ +var _6e=objj_msgSend(_66,"dataOfType:error:",objj_msgSend(_66,"fileType"),nil),_6f=_changeCount; +_writeRequest=objj_msgSend(CPURLRequest,"requestWithURL:",_68); +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_writeRequest,"setHTTPMethod:","POST"); +}else{ +objj_msgSend(_writeRequest,"setHTTPMethod:","PUT"); +} +objj_msgSend(_writeRequest,"setHTTPBody:",objj_msgSend(_6e,"rawString")); +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","close","Connection"); +if(_6a===CPSaveOperation){ +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","true","x-cappuccino-overwrite"); +} +if(_6a!==CPSaveToOperation){ +objj_msgSend(_66,"updateChangeCount:",CPChangeCleared); +} +var _70=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",_writeRequest,_66); +_70.session=_71(_68,_6a,_6f,_6b,_6c,_6d,_70); +} +}),new objj_method(sel_getUid("connection:didReceiveResponse:"),function(_72,_73,_74,_75){ +with(_72){ +if(!objj_msgSend(_75,"isKindOfClass:",objj_msgSend(CPHTTPURLResponse,"class"))){ +return; +} +var _76=objj_msgSend(_75,"statusCode"); +if(_76===200){ +return; +} +var _77=_74.session; +if(_74==_readConnection){ +objj_msgSend(_74,"cancel"); +alert("There was an error retrieving the document."); +objj_msgSend(_77.delegate,_77.didReadSelector,_72,NO,_77.contextInfo); +}else{ +if(_76==409){ +objj_msgSend(_74,"cancel"); +if(confirm("There already exists a file with that name, would you like to overwrite it?")){ +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","true","x-cappuccino-overwrite"); +objj_msgSend(_74,"start"); +}else{ +if(_77.saveOperation!=CPSaveToOperation){ +_changeCount+=_77.changeCount; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_72,"isDocumentEdited")); +} +_writeRequest=nil; +objj_msgSend(_77.delegate,_77.didSaveSelector,_72,NO,_77.contextInfo); +objj_msgSend(_72,"_sendDocumentSavedNotification:",NO); +} +} +} +} +}),new objj_method(sel_getUid("connection:didReceiveData:"),function(_78,_79,_7a,_7b){ +with(_78){ +var _7c=_7a.session; +if(_7a==_readConnection){ +objj_msgSend(_78,"readFromData:ofType:error:",objj_msgSend(CPData,"dataWithRawString:",_7b),_7c.fileType,nil); +objj_msgSend(_7c.delegate,_7c.didReadSelector,_78,YES,_7c.contextInfo); +}else{ +if(_7c.saveOperation!=CPSaveToOperation){ +objj_msgSend(_78,"setFileURL:",_7c.absoluteURL); +} +_writeRequest=nil; +objj_msgSend(_7c.delegate,_7c.didSaveSelector,_78,YES,_7c.contextInfo); +objj_msgSend(_78,"_sendDocumentSavedNotification:",YES); +} +} +}),new objj_method(sel_getUid("connection:didFailWithError:"),function(_7d,_7e,_7f,_80){ +with(_7d){ +var _81=_7f.session; +if(_readConnection==_7f){ +objj_msgSend(_81.delegate,_81.didReadSelector,_7d,NO,_81.contextInfo); +}else{ +if(_81.saveOperation!=CPSaveToOperation){ +_changeCount+=_81.changeCount; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_7d,"isDocumentEdited")); +} +_writeRequest=nil; +alert("There was an error saving the document."); +objj_msgSend(_81.delegate,_81.didSaveSelector,_7d,NO,_81.contextInfo); +objj_msgSend(_7d,"_sendDocumentSavedNotification:",NO); +} +} +}),new objj_method(sel_getUid("connectionDidFinishLoading:"),function(_82,_83,_84){ +with(_82){ +if(_readConnection==_84){ +_readConnection=nil; +} +} +}),new objj_method(sel_getUid("isDocumentEdited"),function(_85,_86){ +with(_85){ +return _changeCount!=0; +} +}),new objj_method(sel_getUid("updateChangeCount:"),function(_87,_88,_89){ +with(_87){ +if(_89==CPChangeDone){ +++_changeCount; +}else{ +if(_89==CPChangeUndone){ +--_changeCount; +}else{ +if(_89==CPChangeCleared){ +_changeCount=0; +} +} +} +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_87,"isDocumentEdited")); +} +}),new objj_method(sel_getUid("setFileType:"),function(_8a,_8b,_8c){ +with(_8a){ +_fileType=_8c; +} +}),new objj_method(sel_getUid("fileType"),function(_8d,_8e){ +with(_8d){ +return _fileType; +} +}),new objj_method(sel_getUid("hasUndoManager"),function(_8f,_90){ +with(_8f){ +return _hasUndoManager; +} +}),new objj_method(sel_getUid("setHasUndoManager:"),function(_91,_92,_93){ +with(_91){ +if(_hasUndoManager==_93){ +return; +} +_hasUndoManager=_93; +if(!_hasUndoManager){ +objj_msgSend(_91,"setUndoManager:",nil); +} +} +}),new objj_method(sel_getUid("_undoManagerWillCloseGroup:"),function(_94,_95,_96){ +with(_94){ +var _97=objj_msgSend(_96,"object"); +if(objj_msgSend(_97,"isUndoing")||objj_msgSend(_97,"isRedoing")){ +return; +} +objj_msgSend(_94,"updateChangeCount:",CPChangeDone); +} +}),new objj_method(sel_getUid("_undoManagerDidUndoChange:"),function(_98,_99,_9a){ +with(_98){ +objj_msgSend(_98,"updateChangeCount:",CPChangeUndone); +} +}),new objj_method(sel_getUid("_undoManagerDidRedoChange:"),function(_9b,_9c,_9d){ +with(_9b){ +objj_msgSend(_9b,"updateChangeCount:",CPChangeDone); +} +}),new objj_method(sel_getUid("setUndoManager:"),function(_9e,_9f,_a0){ +with(_9e){ +var _a1=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_undoManager){ +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerDidUndoChangeNotification,_undoManager); +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerDidRedoChangeNotification,_undoManager); +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerWillCloseUndoGroupNotification,_undoManager); +} +_undoManager=_a0; +if(_undoManager){ +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerDidUndoChange:"),CPUndoManagerDidUndoChangeNotification,_undoManager); +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerDidRedoChange:"),CPUndoManagerDidRedoChangeNotification,_undoManager); +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerWillCloseGroup:"),CPUndoManagerWillCloseUndoGroupNotification,_undoManager); +} +} +}),new objj_method(sel_getUid("undoManager"),function(_a2,_a3){ +with(_a2){ +if(_hasUndoManager&&!_undoManager){ +objj_msgSend(_a2,"setUndoManager:",objj_msgSend(objj_msgSend(CPUndoManager,"alloc"),"init")); +} +return _undoManager; +} +}),new objj_method(sel_getUid("windowWillReturnUndoManager:"),function(_a4,_a5,_a6){ +with(_a4){ +return objj_msgSend(_a4,"undoManager"); +} +}),new objj_method(sel_getUid("saveDocument:"),function(_a7,_a8,_a9){ +with(_a7){ +objj_msgSend(_a7,"saveDocumentWithDelegate:didSaveSelector:contextInfo:",nil,nil,nil); +} +}),new objj_method(sel_getUid("saveDocumentWithDelegate:didSaveSelector:contextInfo:"),function(_aa,_ab,_ac,_ad,_ae){ +with(_aa){ +if(_fileURL){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentWillSaveNotification,_aa); +objj_msgSend(_aa,"saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",_fileURL,objj_msgSend(_aa,"fileType"),CPSaveOperation,_ac,_ad,_ae); +}else{ +objj_msgSend(_aa,"_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:",_ac,_ad,_ae); +} +} +}),new objj_method(sel_getUid("saveDocumentAs:"),function(_af,_b0,_b1){ +with(_af){ +objj_msgSend(_af,"_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:",nil,nil,nil); +} +}),new objj_method(sel_getUid("_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:"),function(_b2,_b3,_b4,_b5,_b6){ +with(_b2){ +var _b7=objj_msgSend(CPSavePanel,"savePanel"),_b8=objj_msgSend(_b7,"runModal"); +if(!_b8){ +return; +} +var _b9=objj_msgSend(_b7,"URL"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentWillSaveNotification,_b2); +objj_msgSend(_b2,"saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",_b9,objj_msgSend(_b2,"fileType"),CPSaveAsOperation,_b4,_b5,_b6); +} +}),new objj_method(sel_getUid("_sendDocumentSavedNotification:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_bc){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentDidSaveNotification,_ba); +}else{ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentDidFailToSaveNotification,_ba); +} +} +})]); +var _2=objj_getClass("CPDocument"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocument\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("close"),function(_bd,_be){ +with(_bd){ +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("removeDocumentAndCloseIfNecessary:"),_bd); +objj_msgSend(objj_msgSend(CPDocumentController,"sharedDocumentController"),"removeDocument:",_bd); +} +}),new objj_method(sel_getUid("shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:"),function(_bf,_c0,_c1,_c2,_c3,_c4){ +with(_bf){ +if(objj_msgSend(_c1,"shouldCloseDocument")||(objj_msgSend(_windowControllers,"count")<2&&objj_msgSend(_windowControllers,"indexOfObject:",_c1)!==CPNotFound)){ +objj_msgSend(_bf,"canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",_bf,sel_getUid("_document:shouldClose:context:"),{delegate:_c2,selector:_c3,context:_c4}); +}else{ +if(objj_msgSend(_c2,"respondsToSelector:",_c3)){ +objj_msgSend(_c2,_c3,_bf,YES,_c4); +} +} +} +}),new objj_method(sel_getUid("_document:shouldClose:context:"),function(_c5,_c6,_c7,_c8,_c9){ +with(_c5){ +if(_c7===_c5&&_c8){ +objj_msgSend(_c5,"close"); +} +objj_msgSend(_c9.delegate,_c9.selector,_c7,_c8,_c9.context); +} +}),new objj_method(sel_getUid("canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:"),function(_ca,_cb,_cc,_cd,_ce){ +with(_ca){ +if(!objj_msgSend(_ca,"isDocumentEdited")){ +return objj_msgSend(_cc,"respondsToSelector:",_cd)&&objj_msgSend(_cc,_cd,_ca,YES,_ce); +} +_canCloseAlert=objj_msgSend(objj_msgSend(CPAlert,"alloc"),"init"); +objj_msgSend(_canCloseAlert,"setDelegate:",_ca); +objj_msgSend(_canCloseAlert,"setAlertStyle:",CPWarningAlertStyle); +objj_msgSend(_canCloseAlert,"setTitle:","Unsaved Document"); +objj_msgSend(_canCloseAlert,"setMessageText:","Do you want to save the changes you've made to the document \""+(objj_msgSend(_ca,"displayName")||objj_msgSend(_ca,"fileName"))+"\"?"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Save"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Cancel"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Don't Save"); +_canCloseAlert._context={delegate:_cc,selector:_cd,context:_ce}; +objj_msgSend(_canCloseAlert,"runModal"); +} +}),new objj_method(sel_getUid("alertDidEnd:returnCode:"),function(_cf,_d0,_d1,_d2){ +with(_cf){ +if(_d1!==_canCloseAlert){ +return; +} +var _d3=_d1._context.delegate,_d4=_d1._context.selector,_d5=_d1._context.context; +if(_d2===0){ +objj_msgSend(_cf,"saveDocumentWithDelegate:didSaveSelector:contextInfo:",_d3,_d4,_d5); +}else{ +objj_msgSend(_d3,_d4,_cf,_d2===2,_d5); +} +_canCloseAlert=nil; +} +})]); +var _60=function(_d6,_d7,_d8,_d9){ +return {fileType:_d6,delegate:_d7,didReadSelector:_d8,contextInfo:_d9}; +}; +var _71=function(_da,_db,_dc,_dd,_de,_df,_e0){ +return {absoluteURL:_da,saveOperation:_db,changeCount:_dc,delegate:_dd,didSaveSelector:_de,contextInfo:_df,connection:_e0}; +}; +p;22;CPDocumentController.jt;9691;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPBundle.ji;12;CPDocument.ji;13;CPOpenPanel.jt;9585; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CPDocument.j",YES); +objj_executeFile("CPOpenPanel.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPDocumentController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_documents"),new objj_ivar("_documentTypes")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPDocumentController").super_class},"init"); +if(_4){ +_documents=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"); +if(!_1){ +_1=_4; +} +_documentTypes=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleDocumentTypes"); +} +return _4; +} +}),new objj_method(sel_getUid("documentForURL:"),function(_6,_7,_8){ +with(_6){ +var _9=0,_a=objj_msgSend(_documents,"count"); +for(;_9<_a;++_9){ +var _b=_documents[_9]; +if(objj_msgSend(objj_msgSend(_b,"fileURL"),"isEqual:",_8)){ +return _b; +} +} +return nil; +} +}),new objj_method(sel_getUid("openUntitledDocumentOfType:display:"),function(_c,_d,_e,_f){ +with(_c){ +var _10=objj_msgSend(_c,"makeUntitledDocumentOfType:error:",_e,nil); +if(_10){ +objj_msgSend(_c,"addDocument:",_10); +} +if(_f){ +objj_msgSend(_10,"makeWindowControllers"); +objj_msgSend(_10,"showWindows"); +} +return _10; +} +}),new objj_method(sel_getUid("makeUntitledDocumentOfType:error:"),function(_11,_12,_13,_14){ +with(_11){ +return objj_msgSend(objj_msgSend(objj_msgSend(_11,"documentClassForType:",_13),"alloc"),"initWithType:error:",_13,_14); +} +}),new objj_method(sel_getUid("openDocumentWithContentsOfURL:display:error:"),function(_15,_16,_17,_18,_19){ +with(_15){ +var _1a=objj_msgSend(_15,"documentForURL:",_17); +if(!_1a){ +var _1b=objj_msgSend(_15,"typeForContentsOfURL:error:",_17,_19); +_1a=objj_msgSend(_15,"makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_17,_1b,_15,sel_getUid("document:didRead:contextInfo:"),objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_18,"shouldDisplay")); +objj_msgSend(_15,"addDocument:",_1a); +if(_1a){ +objj_msgSend(_15,"noteNewRecentDocument:",_1a); +} +}else{ +if(_18){ +objj_msgSend(_1a,"showWindows"); +} +} +return _1a; +} +}),new objj_method(sel_getUid("reopenDocumentForURL:withContentsOfURL:error:"),function(_1c,_1d,_1e,_1f,_20){ +with(_1c){ +return objj_msgSend(_1c,"makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_1e,_1f,objj_msgSend(objj_msgSend(_documentTypes,"objectAtIndex:",0),"objectForKey:","CPBundleTypeName"),_1c,sel_getUid("document:didRead:contextInfo:"),nil); +} +}),new objj_method(sel_getUid("makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_21,_22,_23,_24,_25,_26,_27){ +with(_21){ +return objj_msgSend(objj_msgSend(objj_msgSend(_21,"documentClassForType:",_24),"alloc"),"initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_23,_24,_25,_26,_27); +} +}),new objj_method(sel_getUid("makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_28,_29,_2a,_2b,_2c,_2d,_2e,_2f){ +with(_28){ +return objj_msgSend(objj_msgSend(objj_msgSend(_28,"documentClassForType:",_2c),"alloc"),"initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_2a,_2b,_2c,_2d,_2e,_2f); +} +}),new objj_method(sel_getUid("document:didRead:contextInfo:"),function(_30,_31,_32,_33,_34){ +with(_30){ +if(!_33){ +return; +} +objj_msgSend(_32,"makeWindowControllers"); +if(objj_msgSend(_34,"objectForKey:","shouldDisplay")){ +objj_msgSend(_32,"showWindows"); +} +} +}),new objj_method(sel_getUid("newDocument:"),function(_35,_36,_37){ +with(_35){ +objj_msgSend(_35,"openUntitledDocumentOfType:display:",objj_msgSend(objj_msgSend(_documentTypes,"objectAtIndex:",0),"objectForKey:","CPBundleTypeName"),YES); +} +}),new objj_method(sel_getUid("openDocument:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(CPOpenPanel,"openPanel"); +objj_msgSend(_3b,"runModal"); +var _3c=objj_msgSend(_3b,"URLs"),_3d=0,_3e=objj_msgSend(_3c,"count"); +for(;_3d<_3e;++_3d){ +objj_msgSend(_38,"openDocumentWithContentsOfURL:display:error:",objj_msgSend(CPURL,"URLWithString:",_3c[_3d]),YES,nil); +} +} +}),new objj_method(sel_getUid("documents"),function(_3f,_40){ +with(_3f){ +return _documents; +} +}),new objj_method(sel_getUid("addDocument:"),function(_41,_42,_43){ +with(_41){ +objj_msgSend(_documents,"addObject:",_43); +} +}),new objj_method(sel_getUid("removeDocument:"),function(_44,_45,_46){ +with(_44){ +objj_msgSend(_documents,"removeObjectIdenticalTo:",_46); +} +}),new objj_method(sel_getUid("defaultType"),function(_47,_48){ +with(_47){ +return objj_msgSend(_documentTypes[0],"objectForKey:","CPBundleTypeName"); +} +}),new objj_method(sel_getUid("typeForContentsOfURL:error:"),function(_49,_4a,_4b,_4c){ +with(_49){ +var _4d=0,_4e=_documentTypes.length,_4f=objj_msgSend(objj_msgSend(_4b,"pathExtension"),"lowercaseString"),_50=nil; +for(;_4d<_4e;++_4d){ +var _51=_documentTypes[_4d],_52=objj_msgSend(_51,"objectForKey:","CFBundleTypeExtensions"),_53=0,_54=_52.length; +for(;_53<_54;++_53){ +var _55=objj_msgSend(_52[_53],"lowercaseString"); +if(_55===_4f){ +return objj_msgSend(_51,"objectForKey:","CPBundleTypeName"); +} +if(_55==="****"){ +_50=objj_msgSend(_51,"objectForKey:","CPBundleTypeName"); +} +} +} +return _50||objj_msgSend(_49,"defaultType"); +} +}),new objj_method(sel_getUid("_infoForType:"),function(_56,_57,_58){ +with(_56){ +var i=0,_59=objj_msgSend(_documentTypes,"count"); +for(;i<_59;++i){ +var _5a=_documentTypes[i]; +if(objj_msgSend(_5a,"objectForKey:","CPBundleTypeName")==_58){ +return _5a; +} +} +return nil; +} +}),new objj_method(sel_getUid("documentClassForType:"),function(_5b,_5c,_5d){ +with(_5b){ +var _5e=objj_msgSend(objj_msgSend(_5b,"_infoForType:",_5d),"objectForKey:","CPDocumentClass"); +return _5e?CPClassFromString(_5e):nil; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("sharedDocumentController"),function(_5f,_60){ +with(_5f){ +if(!_1){ +objj_msgSend(objj_msgSend(_5f,"alloc"),"init"); +} +return _1; +} +})]); +var _2=objj_getClass("CPDocumentController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:"),function(_61,_62,_63,_64,_65){ +with(_61){ +var _66={delegate:_63,selector:_64,context:_65}; +objj_msgSend(_61,"_closeDocumentsStartingWith:shouldClose:context:",nil,YES,_66); +} +}),new objj_method(sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"),function(_67,_68,_69,_6a,_6b){ +with(_67){ +if(_6a){ +objj_msgSend(_69,"close"); +if(objj_msgSend(objj_msgSend(_67,"documents"),"count")>0){ +objj_msgSend(objj_msgSend(objj_msgSend(_67,"documents"),"lastObject"),"canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",_67,sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"),_6b); +return; +} +} +if(objj_msgSend(_6b.delegate,"respondsToSelector:",_6b.selector)){ +objj_msgSend(_6b.delegate,_6b.selector,_67,objj_msgSend(objj_msgSend(_67,"documents"),"count")===0,_6b.context); +} +} +})]); +var _2=objj_getClass("CPDocumentController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("recentDocumentURLs"),function(_6c,_6d){ +with(_6c){ +if(typeof window["cpRecentDocumentURLs"]==="function"){ +return window.cpRecentDocumentURLs(); +} +return []; +} +}),new objj_method(sel_getUid("clearRecentDocuments:"),function(_6e,_6f,_70){ +with(_6e){ +if(typeof window["cpClearRecentDocuments"]==="function"){ +window.cpClearRecentDocuments(); +} +objj_msgSend(_6e,"_updateRecentDocumentsMenu"); +} +}),new objj_method(sel_getUid("noteNewRecentDocument:"),function(_71,_72,_73){ +with(_71){ +objj_msgSend(_71,"noteNewRecentDocumentURL:",objj_msgSend(objj_msgSend(_73,"fileURL"),"absoluteString")); +} +}),new objj_method(sel_getUid("noteNewRecentDocumentURL:"),function(_74,_75,_76){ +with(_74){ +if(typeof window["cpNoteNewRecentDocumentPath"]==="function"){ +window.cpNoteNewRecentDocumentPath(_76); +} +objj_msgSend(_74,"_updateRecentDocumentsMenu"); +} +}),new objj_method(sel_getUid("_removeAllRecentDocumentsFromMenu:"),function(_77,_78,_79){ +with(_77){ +var _7a=objj_msgSend(_79,"itemArray"),_7b=objj_msgSend(_7a,"count"); +while(_7b--){ +var _7c=_7a[_7b]; +if(objj_msgSend(_7c,"action")===sel_getUid("_openRecentDocument:")){ +objj_msgSend(_79,"removeItemAtIndex:",_7b); +} +} +} +}),new objj_method(sel_getUid("_updateRecentDocumentsMenu"),function(_7d,_7e){ +with(_7d){ +var _7f=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"_menuWithName:","_CPRecentDocumentsMenu"),_80=objj_msgSend(_7d,"recentDocumentURLs"),_81=objj_msgSend(_7f,"itemArray"),_82=objj_msgSend(_80,"count"),_83=objj_msgSend(_81,"count"); +objj_msgSend(_7d,"_removeAllRecentDocumentsFromMenu:",_7f); +if(_83){ +if(!_82){ +if(objj_msgSend(_81[0],"isSeparatorItem")){ +objj_msgSend(_7f,"removeItemAtIndex:",0); +} +}else{ +if(!objj_msgSend(_81[0],"isSeparatorItem")){ +objj_msgSend(_7f,"insertItem:atIndex:",objj_msgSend(CPMenuItem,"separatorItem"),0); +} +} +} +while(_82--){ +var _84=_80[_82],_85=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",objj_msgSend(_84,"lastPathComponent"),sel_getUid("_openRecentDocument:"),nil); +objj_msgSend(_85,"setTag:",_84); +objj_msgSend(_7f,"insertItem:atIndex:",_85,0); +} +} +}),new objj_method(sel_getUid("_openRecentDocument:"),function(_86,_87,_88){ +with(_86){ +objj_msgSend(_86,"openDocumentWithContentsOfURL:display:error:",objj_msgSend(_88,"tag"),YES,nil); +} +})]); +p;14;CPDragServer.jt;14787;@STATIC;1.0;I;15;AppKit/CPView.jI;16;AppKit/CPEvent.jI;21;AppKit/CPPasteboard.jI;20;AppKit/CPImageView.jt;14675; +objj_executeFile("AppKit/CPView.j",NO); +objj_executeFile("AppKit/CPEvent.j",NO); +objj_executeFile("AppKit/CPPasteboard.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +CPDragOperationNone=0,CPDragOperationCopy=1<<1,CPDragOperationLink=1<<1,CPDragOperationGeneric=1<<2,CPDragOperationPrivate=1<<3,CPDragOperationMove=1<<4,CPDragOperationDelete=1<<5,CPDragOperationEvery=-1; +var _1=nil,_2=0.05; +var _3=nil; +var _4=nil; +var _5=nil; +var _6=objj_allocateClassPair(CPObject,"CPDraggingInfo"),_7=_6.isa; +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("draggingPasteboard"),function(_8,_9){ +with(_8){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +return objj_msgSend(_CPDOMDataTransferPasteboard,"DOMDataTransferPasteboard"); +} +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingPasteboard"); +} +}),new objj_method(sel_getUid("draggingSource"),function(_a,_b){ +with(_a){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingSource"); +} +}),new objj_method(sel_getUid("draggingLocation"),function(_c,_d){ +with(_c){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingLocation"); +} +}),new objj_method(sel_getUid("draggingDestinationWindow"),function(_e,_f){ +with(_e){ +return (objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"),"isKindOfClass:",objj_msgSend(CPWindow,"class"))?objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"):objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"),"window")); +} +}),new objj_method(sel_getUid("draggedImage"),function(_10,_11){ +with(_10){ +return objj_msgSend(objj_msgSend(_10,"draggedView"),"image"); +} +}),new objj_method(sel_getUid("draggedImageLocation"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"draggedViewLocation"); +} +}),new objj_method(sel_getUid("draggedView"),function(_14,_15){ +with(_14){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggedView"); +} +}),new objj_method(sel_getUid("draggedViewLocation"),function(_16,_17){ +with(_16){ +var _18=objj_msgSend(CPDragServer,"sharedDragServer"); +return objj_msgSend((objj_msgSend(objj_msgSend(_18,"draggingDestination"),"isKindOfClass:",objj_msgSend(CPWindow,"class"))?objj_msgSend(_18,"draggingDestination"):objj_msgSend(objj_msgSend(_18,"draggingDestination"),"window")),"convertPlatformWindowToBase:",objj_msgSend(objj_msgSend(_18,"draggedView"),"frame").origin); +} +})]); +var _19=1<<0,_1a=1<<1,_1b=1<<2,_1c=1<<3; +var _6=objj_allocateClassPair(CPObject,"CPDragServer"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_isDragging"),new objj_ivar("_draggedWindow"),new objj_ivar("_draggedView"),new objj_ivar("_imageView"),new objj_ivar("_isDraggingImage"),new objj_ivar("_draggingOffset"),new objj_ivar("_draggingPasteboard"),new objj_ivar("_draggingSource"),new objj_ivar("_implementedDraggingSourceMethods"),new objj_ivar("_draggingLocation"),new objj_ivar("_draggingDestination"),new objj_ivar("_draggingDestinationWantsPeriodicUpdates"),new objj_ivar("_startDragLocation"),new objj_ivar("_shouldSlideBack"),new objj_ivar("_dragOperation"),new objj_ivar("_draggingUpdateTimer")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("isDragging"),function(_1d,_1e){ +with(_1d){ +return _isDragging; +} +}),new objj_method(sel_getUid("draggedWindow"),function(_1f,_20){ +with(_1f){ +return _draggedWindow; +} +}),new objj_method(sel_getUid("draggedView"),function(_21,_22){ +with(_21){ +return _draggedView; +} +}),new objj_method(sel_getUid("draggingOffset"),function(_23,_24){ +with(_23){ +return _draggingOffset; +} +}),new objj_method(sel_getUid("draggingPasteboard"),function(_25,_26){ +with(_25){ +return _draggingPasteboard; +} +}),new objj_method(sel_getUid("draggingSource"),function(_27,_28){ +with(_27){ +return _draggingSource; +} +}),new objj_method(sel_getUid("init"),function(_29,_2a){ +with(_29){ +_29=objj_msgSendSuper({receiver:_29,super_class:objj_getClass("CPDragServer").super_class},"init"); +if(_29){ +_draggedWindow=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",{origin:{x:0,y:0},size:{width:0,height:0}},CPBorderlessWindowMask); +objj_msgSend(_draggedWindow,"setLevel:",CPDraggingWindowLevel); +} +return _29; +} +}),new objj_method(sel_getUid("draggingDestination"),function(_2b,_2c){ +with(_2b){ +return _draggingDestination; +} +}),new objj_method(sel_getUid("draggingLocation"),function(_2d,_2e){ +with(_2d){ +return _draggingLocation; +} +}),new objj_method(sel_getUid("draggingStartedInPlatformWindow:globalLocation:"),function(_2f,_30,_31,_32){ +with(_2f){ +if(_isDraggingImage){ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:beganAt:"))){ +objj_msgSend(_draggingSource,"draggedImage:beganAt:",objj_msgSend(_draggedView,"image"),_32); +} +}else{ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:beganAt:"))){ +objj_msgSend(_draggingSource,"draggedView:beganAt:",_draggedView,_32); +} +} +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"orderFront:",_2f); +} +} +}),new objj_method(sel_getUid("draggingSourceUpdatedWithGlobalLocation:"),function(_33,_34,_35){ +with(_33){ +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"setFrameOrigin:",{x:_35.x-_draggingOffset.width,y:_35.y-_draggingOffset.height}); +} +if(_implementedDraggingSourceMethods&_19){ +objj_msgSend(_draggingSource,"draggedImage:movedTo:",objj_msgSend(_draggedView,"image"),_35); +}else{ +if(_implementedDraggingSourceMethods&_1b){ +objj_msgSend(_draggingSource,"draggedView:movedTo:",_draggedView,_35); +} +} +} +}),new objj_method(sel_getUid("draggingUpdatedInPlatformWindow:location:"),function(_36,_37,_38,_39){ +with(_36){ +objj_msgSend(_draggingUpdateTimer,"invalidate"); +_draggingUpdateTimer=nil; +var _3a=CPDragOperationCopy; +var _3b=objj_msgSend(_38,"_dragHitTest:pasteboard:",_39,objj_msgSend(_5,"draggingPasteboard")); +if(_3b){ +_draggingLocation=objj_msgSend((objj_msgSend(_3b,"isKindOfClass:",objj_msgSend(CPWindow,"class"))?_3b:objj_msgSend(_3b,"window")),"convertPlatformWindowToBase:",_39); +} +if(_3b!==_draggingDestination){ +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingExited:"))){ +objj_msgSend(_draggingDestination,"draggingExited:",_5); +} +_draggingDestination=_3b; +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("wantsPeriodicDraggingUpdates"))){ +_draggingDestinationWantsPeriodicUpdates=objj_msgSend(_draggingDestination,"wantsPeriodicDraggingUpdates"); +}else{ +_draggingDestinationWantsPeriodicUpdates=YES; +} +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingEntered:"))){ +_3a=objj_msgSend(_draggingDestination,"draggingEntered:",_5); +} +}else{ +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingUpdated:"))){ +_3a=objj_msgSend(_draggingDestination,"draggingUpdated:",_5); +} +} +if(!_draggingDestination){ +_3a=CPDragOperationNone; +}else{ +if(_draggingDestinationWantsPeriodicUpdates){ +_draggingUpdateTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",_2,_36,sel_getUid("_sendPeriodicDraggingUpdate:"),objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{platformWindow:_38,location:_39}),NO); +} +var _3c=objj_msgSend(_draggingDestination,"isKindOfClass:",objj_msgSend(CPView,"class"))?objj_msgSend(_draggingDestination,"enclosingScrollView"):nil; +if(_3c){ +var _3d=objj_msgSend(_3c,"contentView"),_3e=objj_msgSend(_3d,"bounds"),_3f=CGRectInset(_3e,10,10),_40=objj_msgSend(_3d,"convertPoint:fromView:",_draggingLocation,nil),_41=0,_42=0; +if(!CGRectContainsPoint(_3f,_40)){ +if(objj_msgSend(_3c,"hasVerticalScroller")){ +if(_40.yCGRectGetMaxY(_3f)){ +_42=CGRectGetMaxY(_3f)-_40.y; +} +} +if(_42<-_3f.size.height){ +_42=-_3f.size.height; +} +if(_42>_3f.size.height){ +_42=_3f.size.height; +} +} +if(objj_msgSend(_3c,"hasHorizontalScroller")){ +if(_40.xCGRectGetMaxX(_3f)){ +_41=CGRectGetMaxX(_3f)-_40.x; +} +} +if(_41<-_3f.size.width){ +_41=-_3f.size.width; +} +if(_41>_3f.size.width){ +_41=_3f.size.width; +} +} +objj_msgSend(_3d,"scrollToPoint:",CGPointMake(_3e.origin.x-_41,_3e.origin.y-_42)); +} +} +} +return _3a; +} +}),new objj_method(sel_getUid("_sendPeriodicDraggingUpdate:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_45,"userInfo"); +_dragOperation=objj_msgSend(_43,"draggingUpdatedInPlatformWindow:location:",objj_msgSend(_46,"objectForKey:","platformWindow"),objj_msgSend(_46,"objectForKey:","location")); +} +}),new objj_method(sel_getUid("draggingEndedInPlatformWindow:globalLocation:operation:"),function(_47,_48,_49,_4a,_4b){ +with(_47){ +objj_msgSend(_draggingUpdateTimer,"invalidate"); +_draggingUpdateTimer=nil; +objj_msgSend(_draggedView,"removeFromSuperview"); +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"orderOut:",_47); +} +if(_implementedDraggingSourceMethods&_1a){ +objj_msgSend(_draggingSource,"draggedImage:endedAt:operation:",objj_msgSend(_draggedView,"image"),_4a,_4b); +}else{ +if(_implementedDraggingSourceMethods&_1c){ +objj_msgSend(_draggingSource,"draggedView:endedAt:operation:",_draggedView,_4a,_4b); +} +} +_isDragging=NO; +} +}),new objj_method(sel_getUid("performDragOperationInPlatformWindow:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_draggingDestination&&(!objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("prepareForDragOperation:"))||objj_msgSend(_draggingDestination,"prepareForDragOperation:",_5))&&(!objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("performDragOperation:"))||objj_msgSend(_draggingDestination,"performDragOperation:",_5))&&objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("concludeDragOperation:"))){ +objj_msgSend(_draggingDestination,"concludeDragOperation:",_5); +} +} +}),new objj_method(sel_getUid("dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:"),function(_4f,_50,_51,_52,_53,_54,_55,_56,_57,_58){ +with(_4f){ +_isDragging=YES; +_draggedView=_51; +_draggingPasteboard=_56||objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard); +_draggingSource=_57; +_draggingDestination=nil; +_shouldSlideBack=_58; +var _59=objj_msgSend(_55,"window"),_5a=objj_msgSend(_55,"locationInWindow"); +if(_5a){ +if(_59){ +_5a=objj_msgSend(_59,"convertBaseToGlobal:",_5a); +} +_draggingOffset={width:_5a.x-_53.x,height:_5a.y-_53.y}; +}else{ +_draggingOffset={width:0,height:0}; +} +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_draggedWindow,"setPlatformWindow:",objj_msgSend(_52,"platformWindow")); +} +objj_msgSend(_51,"setFrameOrigin:",{x:0,y:0}); +var _5b=objj_msgSend(CPEvent,"mouseLocation"); +_startDragLocation={x:_5b.x-_draggingOffset.width,y:_5b.y-_draggingOffset.height}; +objj_msgSend(_draggedWindow,"setFrameOrigin:",_startDragLocation); +objj_msgSend(_draggedWindow,"setFrameSize:",objj_msgSend(_51,"frame").size); +objj_msgSend(objj_msgSend(_draggedWindow,"contentView"),"addSubview:",_51); +_implementedDraggingSourceMethods=0; +if(_draggedView===_imageView){ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:movedTo:"))){ +_implementedDraggingSourceMethods|=_19; +} +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:endedAt:operation:"))){ +_implementedDraggingSourceMethods|=_1a; +} +}else{ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:movedTo:"))){ +_implementedDraggingSourceMethods|=_1b; +} +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:endedAt:operation:"))){ +_implementedDraggingSourceMethods|=_1c; +} +} +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_4f,"draggingStartedInPlatformWindow:globalLocation:",objj_msgSend(_52,"platformWindow"),_5b); +objj_msgSend(_4f,"trackDragging:",_55); +} +} +}),new objj_method(sel_getUid("dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:"),function(_5c,_5d,_5e,_5f,_60,_61,_62,_63,_64,_65){ +with(_5c){ +_isDraggingImage=YES; +var _66=objj_msgSend(_5e,"size"); +if(!_imageView){ +_imageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:_66.width,height:_66.height}}); +} +objj_msgSend(_imageView,"setImage:",_5e); +objj_msgSend(_5c,"dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:",_imageView,_5f,_60,_61,_62,_63,_64,_65); +} +}),new objj_method(sel_getUid("trackDragging:"),function(_67,_68,_69){ +with(_67){ +var _6a=objj_msgSend(_69,"type"),_6b=objj_msgSend(_draggedWindow,"platformWindow"),_6c=objj_msgSend(objj_msgSend(_69,"window"),"convertBaseToPlatformWindow:",objj_msgSend(_69,"locationInWindow")); +if(_6a===CPLeftMouseUp){ +if(_dragOperation!==CPDragOperationNone){ +objj_msgSend(_67,"performDragOperationInPlatformWindow:",_6b); +} +objj_msgSend(_67,"draggingEndedInPlatformWindow:globalLocation:operation:",_6b,_6c,_dragOperation); +return; +}else{ +if(_6a===CPKeyDown){ +var _6d=objj_msgSend(_69,"keyCode"); +if(_6d===CPEscapeKeyCode){ +_dragOperation=CPDragOperationNone; +objj_msgSend(_67,"draggingEndedInPlatformWindow:globalLocation:operation:",_6b,CGPointMakeZero(),_dragOperation); +return; +} +}else{ +objj_msgSend(_67,"draggingSourceUpdatedWithGlobalLocation:",_6c); +_dragOperation=objj_msgSend(_67,"draggingUpdatedInPlatformWindow:location:",_6b,_6c); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_67,sel_getUid("trackDragging:"),CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPKeyDownMask,nil,0,NO); +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("initialize"),function(_6e,_6f){ +with(_6e){ +if(_6e!==objj_msgSend(CPDragServer,"class")){ +return; +} +_5=objj_msgSend(objj_msgSend(CPDraggingInfo,"alloc"),"init"); +} +}),new objj_method(sel_getUid("sharedDragServer"),function(_70,_71){ +with(_70){ +if(!_3){ +_3=objj_msgSend(objj_msgSend(CPDragServer,"alloc"),"init"); +} +return _3; +} +})]); +var _6=objj_getClass("CPWindow"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("_dragHitTest:pasteboard:"),function(_72,_73,_74,_75){ +with(_72){ +if(!_inclusiveRegisteredDraggedTypes){ +return nil; +} +var _76=objj_msgSend(_72,"convertPlatformWindowToBase:",_74),_77=objj_msgSend(_windowView,"hitTest:",_76); +while(_77&&!objj_msgSend(_75,"availableTypeFromArray:",objj_msgSend(_77,"registeredDraggedTypes"))){ +_77=objj_msgSend(_77,"superview"); +} +if(_77){ +return _77; +} +if(objj_msgSend(_75,"availableTypeFromArray:",objj_msgSend(_72,"registeredDraggedTypes"))){ +return _72; +} +return nil; +} +})]); +p;9;CPEvent.jt;11899;@STATIC;1.0;I;21;Foundation/CPObject.ji;8;CPText.jt;11841; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPText.j",YES); +CPLeftMouseDown=1; +CPLeftMouseUp=2; +CPRightMouseDown=3; +CPRightMouseUp=4; +CPMouseMoved=5; +CPLeftMouseDragged=6; +CPRightMouseDragged=7; +CPMouseEntered=8; +CPMouseExited=9; +CPKeyDown=10; +CPKeyUp=11; +CPFlagsChanged=12; +CPAppKitDefined=13; +CPSystemDefined=14; +CPApplicationDefined=15; +CPPeriodic=16; +CPCursorUpdate=17; +CPScrollWheel=22; +CPOtherMouseDown=25; +CPOtherMouseUp=26; +CPOtherMouseDragged=27; +CPTouchStart=28; +CPTouchMove=29; +CPTouchEnd=30; +CPTouchCancel=31; +CPAlphaShiftKeyMask=1<<16; +CPShiftKeyMask=1<<17; +CPControlKeyMask=1<<18; +CPAlternateKeyMask=1<<19; +CPCommandKeyMask=1<<20; +CPNumericPadKeyMask=1<<21; +CPHelpKeyMask=1<<22; +CPFunctionKeyMask=1<<23; +CPDeviceIndependentModifierFlagsMask=4294901760; +CPLeftMouseDownMask=1<",objj_msgSend(_flashMovie,"filename")),_1f=objj_msgSend(_params,"keyEnumerator"),key; +while(key=objj_msgSend(_1f,"nextObject")){ +_1e=objj_msgSend(_1e,"stringByAppendingFormat:","",key,objj_msgSend(_params,"objectForKey:",key)); +} +_DOMObjectElement=document.createElement("object"); +_DOMElement.appendChild(_DOMObjectElement); +_DOMObjectElement.outerHTML=objj_msgSend(CPString,"stringWithFormat:","%@",_1,CGRectGetWidth(objj_msgSend(_1c,"bounds")),CGRectGetHeight(objj_msgSend(_1c,"bounds")),_1e); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(objj_msgSend(objj_msgSend(_20,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(objj_msgSend(objj_msgSend(_23,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(objj_msgSend(objj_msgSend(_26,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +})]); +p;8;CPFont.jt;4442;@STATIC;1.0;t;4423; +var _1={},_2="Arial, sans-serif",_3=new RegExp("\\s*,\\s*","g"); +var _4=objj_allocateClassPair(CPObject,"CPFont"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_size"),new objj_ivar("_ascender"),new objj_ivar("_descender"),new objj_ivar("_lineHeight"),new objj_ivar("_isBold"),new objj_ivar("_cssString")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("_initWithName:size:bold:"),function(_6,_7,_8,_9,_a){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPFont").super_class},"init"); +if(_6){ +_name=_8; +_size=_9; +_ascender=0; +_descender=0; +_lineHeight=0; +_isBold=_a; +_cssString=(_isBold?"bold ":"")+ROUND(_size)+"px "+((_name===_2)?_name:("\""+_name.replace(_3,"\", \"")+"\", "+_2)); +_1[_cssString]=_6; +} +return _6; +} +}),new objj_method(sel_getUid("ascender"),function(_b,_c){ +with(_b){ +if(!_ascender){ +objj_msgSend(_b,"_getMetrics"); +} +return _ascender; +} +}),new objj_method(sel_getUid("descender"),function(_d,_e){ +with(_d){ +if(!_descender){ +objj_msgSend(_d,"_getMetrics"); +} +return _descender; +} +}),new objj_method(sel_getUid("defaultLineHeightForFont"),function(_f,_10){ +with(_f){ +if(!_lineHeight){ +objj_msgSend(_f,"_getMetrics"); +} +return _lineHeight; +} +}),new objj_method(sel_getUid("size"),function(_11,_12){ +with(_11){ +return _size; +} +}),new objj_method(sel_getUid("cssString"),function(_13,_14){ +with(_13){ +return _cssString; +} +}),new objj_method(sel_getUid("familyName"),function(_15,_16){ +with(_15){ +return _name; +} +}),new objj_method(sel_getUid("isEqual:"),function(_17,_18,_19){ +with(_17){ +return objj_msgSend(_19,"isKindOfClass:",objj_msgSend(CPFont,"class"))&&objj_msgSend(_19,"cssString")===objj_msgSend(_17,"cssString"); +} +}),new objj_method(sel_getUid("description"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(CPString,"stringWithFormat:","%@ %@ %f pt.",objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("CPFont").super_class},"description"),objj_msgSend(_1a,"familyName"),objj_msgSend(_1a,"size")); +} +}),new objj_method(sel_getUid("_getMetrics"),function(_1c,_1d){ +with(_1c){ +var _1e=objj_msgSend(CPString,"metricsOfFont:",_1c); +_ascender=objj_msgSend(_1e,"objectForKey:","ascender"); +_descender=objj_msgSend(_1e,"objectForKey:","descender"); +_lineHeight=objj_msgSend(_1e,"objectForKey:","lineHeight"); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("initialize"),function(_1f,_20){ +with(_1f){ +var _21=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class")),"objectForInfoDictionaryKey:","CPSystemFontFace"); +if(_21){ +_2=_21; +} +} +}),new objj_method(sel_getUid("fontWithName:size:"),function(_22,_23,_24,_25){ +with(_22){ +return _1[(NO?"bold ":"")+ROUND(_25)+"px "+((_24===_2)?_24:("\""+_24.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_24,_25,NO); +} +}),new objj_method(sel_getUid("boldFontWithName:size:"),function(_26,_27,_28,_29){ +with(_26){ +return _1[(YES?"bold ":"")+ROUND(_29)+"px "+((_28===_2)?_28:("\""+_28.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_28,_29,YES); +} +}),new objj_method(sel_getUid("systemFontOfSize:"),function(_2a,_2b,_2c){ +with(_2a){ +return _1[(NO?"bold ":"")+ROUND(_2c)+"px "+((_2===_2)?_2:("\""+_2.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_2,_2c,NO); +} +}),new objj_method(sel_getUid("boldSystemFontOfSize:"),function(_2d,_2e,_2f){ +with(_2d){ +return _1[(YES?"bold ":"")+ROUND(_2f)+"px "+((_2===_2)?_2:("\""+_2.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_2,_2f,YES); +} +})]); +var _30="CPFontNameKey",_31="CPFontSizeKey",_32="CPFontIsBoldKey"; +var _4=objj_getClass("CPFont"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPFont\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_33,_34,_35){ +with(_33){ +return objj_msgSend(_33,"_initWithName:size:bold:",objj_msgSend(_35,"decodeObjectForKey:",_30),objj_msgSend(_35,"decodeFloatForKey:",_31),objj_msgSend(_35,"decodeBoolForKey:",_32)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_36,_37,_38){ +with(_36){ +objj_msgSend(_38,"encodeObject:forKey:",_name,_30); +objj_msgSend(_38,"encodeFloat:forKey:",_size,_31); +objj_msgSend(_38,"encodeBool:forKey:",_isBold,_32); +} +})]); +p;15;CPFontManager.jt;3322;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPFont.jt;3257; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPFont.j",NO); +var _1=nil,_2=Nil; +var _3=objj_allocateClassPair(CPObject,"CPFontManager"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_availableFonts")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("availableFonts"),function(_5,_6){ +with(_5){ +if(!_availableFonts){ +_7=document.createElement("span"); +_7.fontSize="24px"; +_7.appendChild(document.createTextNode("mmmmmmmmmml")); +var _8=document.createElement("div"); +_8.style.position="absolute"; +_8.style.top="-1000px"; +_8.appendChild(_7); +document.getElementsByTagName("body")[0].appendChild(_8); +_9=_a(["monospace","serif","sans-serif","cursive"]); +_availableFonts=[]; +for(var i=0;i<_b.length;i++){ +var _c=_d(_b[i]); +if(_c){ +_availableFonts.push(_b[i]); +} +} +} +return _availableFonts; +} +}),new objj_method(sel_getUid("fontWithNameIsAvailable:"),function(_e,_f,_10){ +with(_e){ +return _d(_10); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedFontManager"),function(_11,_12){ +with(_11){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(_2,"alloc"),"init"); +} +return _1; +} +}),new objj_method(sel_getUid("setFontManagerFactory:"),function(_13,_14,_15){ +with(_13){ +_2=_15; +} +})]); +var _7,_9,_b=["American Typewriter","Apple Chancery","Arial","Arial Black","Arial Narrow","Arial Rounded MT Bold","Arial Unicode MS","Big Caslon","Bitstream Vera Sans","Bitstream Vera Sans Mono","Bitstream Vera Serif","Brush Script MT","Cambria","Caslon","Castellar","Cataneo BT","Centaur","Century Gothic","Century Schoolbook","Century Schoolbook L","Comic Sans","Comic Sans MS","Consolas","Constantia","Cooper Black","Copperplate","Copperplate Gothic Bold","Copperplate Gothic Light","Corbel","Courier","Courier New","Futura","Geneva","Georgia","Georgia Ref","Geeza Pro","Gigi","Gill Sans","Gill Sans MT","Gill Sans MT Condensed","Gill Sans MT Ext Condensed Bold","Gill Sans Ultra Bold","Gill Sans Ultra Bold Condensed","Helvetica","Helvetica Narrow","Helvetica Neue","Herculanum","High Tower Text","Highlight LET","Hoefler Text","Impact","Imprint MT Shadow","Lucida","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","Lucida Grande","Lucida Handwriting","Lucida Sans","Lucida Sans Typewriter","Lucida Sans Unicode","Marker Felt","Microsoft Sans Serif","Milano LET","Minion Web","MisterEarl BT","Mistral","Monaco","Monotype Corsiva","Monotype.com","New Century Schoolbook","New York","News Gothic MT","Papyrus","Tahoma","Techno","Tempus Sans ITC","Terminal","Textile","Times","Times New Roman","Tiranti Solid LET","Trebuchet MS","Verdana","Verdana Ref","Zapfino"]; +var _d=function(_16){ +for(var i=0;i<_9.length;i++){ +if(_17(_9[i],_16)){ +return true; +} +} +return false; +}; +var _18={}; +var _17=function(_19,_1a){ +var a; +if(_18[_19]){ +a=_18[_19]; +}else{ +_7.style.fontFamily="\""+_19+"\""; +_18[_19]=a={w:_7.offsetWidth,h:_7.offsetHeight}; +} +_7.style.fontFamily="\""+_1a+"\", \""+_19+"\""; +var _1b=_7.offsetWidth; +var _1c=_7.offsetHeight; +return (a.w!=_1b||a.h!=_1c); +}; +var _a=function(_1d){ +for(var i=0;i<_1d.length;i++){ +for(var j=0;j=CPRectGetMinX(_18)&&_19.y>=CPRectGetMinY(_18)&&_19.x=_3c.width&&_3b>=_3c.height){ +_3a=_3c.width; +_3b=_3c.height; +}else{ +var _3d=_3c.width/_3c.height,_3e=_3a/_3b; +if(_3e>_3d){ +_3a=_3b*_3d; +}else{ +_3b=_3a/_3d; +} +} +_DOMImageElement.width=ROUND(_3a); +_DOMImageElement.height=ROUND(_3b); +}else{ +_3a=_3c.width; +_3b=_3c.height; +} +if(_35==CPScaleNone){ +_DOMImageElement.width=ROUND(_3c.width); +_DOMImageElement.height=ROUND(_3c.height); +} +var x,y; +switch(_imageAlignment){ +case CPImageAlignLeft: +case CPImageAlignTopLeft: +case CPImageAlignBottomLeft: +x=0; +break; +case CPImageAlignRight: +case CPImageAlignTopRight: +case CPImageAlignBottomRight: +x=_38-_3a; +break; +default: +x=(_38-_3a)/2; +break; +} +switch(_imageAlignment){ +case CPImageAlignTop: +case CPImageAlignTopLeft: +case CPImageAlignTopRight: +y=0; +break; +case CPImageAlignBottom: +case CPImageAlignBottomLeft: +case CPImageAlignBottomRight: +y=_39-_3b; +break; +default: +y=(_39-_3b)/2; +break; +} +if(NULL){ +var _3f=_CGPointApplyAffineTransform(CGPointMake(x,y),NULL); +}else{ +var _3f={x:x,y:y}; +} +_DOMImageElement.style.left=ROUND(_3f.x)+"px"; +_DOMImageElement.style.top=ROUND(_3f.y)+"px"; +} +_imageRect={origin:{x:x,y:y},size:{width:_3a,height:_3b}}; +if(_hasShadow){ +objj_msgSend(_shadowView,"setFrame:",{origin:{x:x-_3,y:y-_5},size:{width:_3a+_36,height:_3b+_37}}); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(objj_msgSend(_40,"nextResponder"),"mouseDown:",_42); +} +}),new objj_method(sel_getUid("setEditable:"),function(_43,_44,_45){ +with(_43){ +if(_isEditable===_45){ +return; +} +_isEditable=_45; +if(_isEditable){ +objj_msgSend(_43,"registerForDraggedTypes:",[CPImagesPboardType]); +}else{ +var _46=objj_msgSend(_43,"registeredDraggedTypes"); +objj_msgSend(_43,"unregisterDraggedTypes"); +objj_msgSend(_46,"removeObjectIdenticalTo:",CPImagesPboardType); +objj_msgSend(_43,"registerForDraggedTypes:",_46); +} +} +}),new objj_method(sel_getUid("isEditable"),function(_47,_48){ +with(_47){ +return _isEditable; +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_49,_4a,_4b){ +with(_49){ +var _4c=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(objj_msgSend(_4b,"draggingPasteboard"),"dataForType:",CPImagesPboardType)); +if(objj_msgSend(_4c,"count")){ +objj_msgSend(_49,"setImage:",_4c[0]); +objj_msgSend(_49,"sendAction:to:",objj_msgSend(_49,"action"),objj_msgSend(_49,"target")); +} +return YES; +} +})]); +class_addMethods(_a,[new objj_method(sel_getUid("initialize"),function(_4d,_4e){ +with(_4d){ +var _4f=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class")); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(_4f,"pathForResource:","empty.png")); +} +})]); +var _50="CPImageViewImageKey",_51="CPImageViewImageScalingKey",_52="CPImageViewImageAlignmentKey",_53="CPImageViewHasShadowKey",_54="CPImageViewIsEditableKey"; +var _9=objj_getClass("CPImageView"); +if(!_9){ +throw new SyntaxError("*** Could not find definition for class \"CPImageView\""); +} +var _a=_9.isa; +class_addMethods(_9,[new objj_method(sel_getUid("initWithCoder:"),function(_55,_56,_57){ +with(_55){ +_DOMImageElement=document.createElement("img"); +_DOMImageElement.style.position="absolute"; +_DOMImageElement.style.left="0px"; +_DOMImageElement.style.top="0px"; +_DOMImageElement.style.visibility="hidden"; +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMImageElement.setAttribute("draggable","true"); +_DOMImageElement.style["-khtml-user-drag"]="element"; +} +_55=objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPImageView").super_class},"initWithCoder:",_57); +if(_55){ +_DOMElement.appendChild(_DOMImageElement); +objj_msgSend(_55,"setHasShadow:",objj_msgSend(_57,"decodeBoolForKey:",_53)); +objj_msgSend(_55,"setImageAlignment:",objj_msgSend(_57,"decodeIntForKey:",_52)); +if(objj_msgSend(_57,"decodeBoolForKey:",_54)||NO){ +objj_msgSend(_55,"setEditable:",YES); +} +objj_msgSend(_55,"setNeedsLayout"); +objj_msgSend(_55,"setNeedsDisplay:",YES); +} +return _55; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_58,_59,_5a){ +with(_58){ +if(_shadowView){ +var _5b=_subviews; +_subviews=objj_msgSend(_subviews,"copy"); +objj_msgSend(_subviews,"removeObjectIdenticalTo:",_shadowView); +} +objj_msgSendSuper({receiver:_58,super_class:objj_getClass("CPImageView").super_class},"encodeWithCoder:",_5a); +if(_shadowView){ +_subviews=_5b; +} +objj_msgSend(_5a,"encodeBool:forKey:",_hasShadow,_53); +objj_msgSend(_5a,"encodeInt:forKey:",_imageAlignment,_52); +if(_isEditable){ +objj_msgSend(_5a,"encodeBool:forKey:",_isEditable,_54); +} +} +})]); +p;14;CPKeyBinding.jt;9144;@STATIC;1.0;I;21;Foundation/CPObject.jt;9099; +objj_executeFile("Foundation/CPObject.j",NO); +CPStandardKeyBindings={"@.":"cancelOperation:","^a":"moveToBeginningOfParagraph:","^$a":"moveToBeginningOfParagraphAndModifySelection:","^b":"moveBackward:","^$b":"moveBackwardAndModifySelection:","^~b":"moveWordBackward:","^~$b":"moveWordBackwardAndModifySelection:","^d":"deleteForward:","^e":"moveToEndOfParagraph:","^$e":"moveToEndOfParagraphAndModifySelection:","^f":"moveForward:","^$f":"moveForwardAndModifySelection:","^~f":"moveWordForward:","^~$f":"moveWordForwardAndModifySelection:","^h":"deleteBackward:","^k":"deleteToEndOfParagraph:","^l":"centerSelectionInVisibleArea:","^n":"moveDown:","^$n":"moveDownAndModifySelection:","^o":["insertNewlineIgnoringFieldEditor:","moveBackward:"],"^p":"moveUp:","^$p":"moveUpAndModifySelection:","^t":"transpose:","^v":"pageDown:","^$v":"pageDownAndModifySelection:","^y":"yank:"}; +CPStandardKeyBindings[CPNewlineCharacter]="insertNewline:"; +CPStandardKeyBindings[CPCarriageReturnCharacter]="insertNewline:"; +CPStandardKeyBindings[CPEnterCharacter]="insertNewline:"; +CPStandardKeyBindings["~"+CPNewlineCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~"+CPCarriageReturnCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~"+CPEnterCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["^"+CPNewlineCharacter]="insertLineBreak:"; +CPStandardKeyBindings["^"+CPCarriageReturnCharacter]="insertLineBreak:"; +CPStandardKeyBindings["^"+CPEnterCharacter]="insertLineBreak:"; +CPStandardKeyBindings[CPBackspaceCharacter]="deleteBackward:"; +CPStandardKeyBindings["~"+CPBackspaceCharacter]="deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteCharacter]="deleteBackward:"; +CPStandardKeyBindings["@"+CPDeleteCharacter]="deleteToBeginningOfLine:"; +CPStandardKeyBindings["~"+CPDeleteCharacter]="deleteWordBackward:"; +CPStandardKeyBindings["^"+CPDeleteCharacter]="deleteBackwardByDecomposingPreviousCharacter:"; +CPStandardKeyBindings["^~"+CPDeleteCharacter]="deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteFunctionKey]="deleteForward:"; +CPStandardKeyBindings["~"+CPDeleteFunctionKey]="deleteWordForward:"; +CPStandardKeyBindings[CPTabCharacter]="insertTab:"; +CPStandardKeyBindings["~"+CPTabCharacter]="insertTabIgnoringFieldEditor:"; +CPStandardKeyBindings["^"+CPTabCharacter]="selectNextKeyView:"; +CPStandardKeyBindings[CPBackTabCharacter]="insertBacktab:"; +CPStandardKeyBindings["^"+CPBackTabCharacter]="selectPreviousKeyView:"; +CPStandardKeyBindings[CPEscapeFunctionKey]="cancelOperation:"; +CPStandardKeyBindings["~"+CPEscapeFunctionKey]="complete:"; +CPStandardKeyBindings[CPF5FunctionKey]="complete:"; +CPStandardKeyBindings[CPLeftArrowFunctionKey]="moveLeft:"; +CPStandardKeyBindings["~"+CPLeftArrowFunctionKey]="moveWordLeft:"; +CPStandardKeyBindings["^"+CPLeftArrowFunctionKey]="moveToLeftEndOfLine:"; +CPStandardKeyBindings["@"+CPLeftArrowFunctionKey]="moveToLeftEndOfLine:"; +CPStandardKeyBindings["$"+CPLeftArrowFunctionKey]="moveLeftAndModifySelection:"; +CPStandardKeyBindings["$~"+CPLeftArrowFunctionKey]="moveWordLeftAndModifySelection:"; +CPStandardKeyBindings["$^"+CPLeftArrowFunctionKey]="moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@"+CPLeftArrowFunctionKey]="moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^"+CPLeftArrowFunctionKey]="makeBaseWritingDirectionRightToLeft:"; +CPStandardKeyBindings["@^~"+CPLeftArrowFunctionKey]="makeTextWritingDirectionRightToLeft:"; +CPStandardKeyBindings[CPRightArrowFunctionKey]="moveRight:"; +CPStandardKeyBindings["~"+CPRightArrowFunctionKey]="moveWordRight:"; +CPStandardKeyBindings["^"+CPRightArrowFunctionKey]="moveToRightEndOfLine:"; +CPStandardKeyBindings["@"+CPRightArrowFunctionKey]="moveToRightEndOfLine:"; +CPStandardKeyBindings["$"+CPRightArrowFunctionKey]="moveRightAndModifySelection:"; +CPStandardKeyBindings["$~"+CPRightArrowFunctionKey]="moveWordRightAndModifySelection:"; +CPStandardKeyBindings["$^"+CPRightArrowFunctionKey]="moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@"+CPRightArrowFunctionKey]="moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^"+CPRightArrowFunctionKey]="makeBaseWritingDirectionLeftToRight:"; +CPStandardKeyBindings["@^~"+CPRightArrowFunctionKey]="makeTextWritingDirectionLeftToRight:"; +CPStandardKeyBindings[CPUpArrowFunctionKey]="moveUp:"; +CPStandardKeyBindings["~"+CPUpArrowFunctionKey]=["moveBackward:","moveToBeginningOfParagraph:"]; +CPStandardKeyBindings["^"+CPUpArrowFunctionKey]="scrollPageUp:"; +CPStandardKeyBindings["@"+CPUpArrowFunctionKey]="moveToBeginningOfDocument:"; +CPStandardKeyBindings["$"+CPUpArrowFunctionKey]="moveUpAndModifySelection:"; +CPStandardKeyBindings["$~"+CPUpArrowFunctionKey]="moveParagraphBackwardAndModifySelection:"; +CPStandardKeyBindings["$@"+CPUpArrowFunctionKey]="moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPDownArrowFunctionKey]="moveDown:"; +CPStandardKeyBindings["~"+CPDownArrowFunctionKey]=["moveForward:","moveToEndOfParagraph:"]; +CPStandardKeyBindings["^"+CPDownArrowFunctionKey]="scrollPageDown:"; +CPStandardKeyBindings["@"+CPDownArrowFunctionKey]="moveToEndOfDocument:"; +CPStandardKeyBindings["$"+CPDownArrowFunctionKey]="moveDownAndModifySelection:"; +CPStandardKeyBindings["$~"+CPDownArrowFunctionKey]="moveParagraphForwardAndModifySelection:"; +CPStandardKeyBindings["$@"+CPDownArrowFunctionKey]="moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings["@^"+CPDownArrowFunctionKey]="makeBaseWritingDirectionNatural:"; +CPStandardKeyBindings["@^~"+CPDownArrowFunctionKey]="makeTextWritingDirectionNatural:"; +CPStandardKeyBindings[CPHomeFunctionKey]="scrollToBeginningOfDocument:"; +CPStandardKeyBindings["$"+CPHomeFunctionKey]="moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPEndFunctionKey]="scrollToEndOfDocument:"; +CPStandardKeyBindings["$"+CPEndFunctionKey]="moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPPageUpFunctionKey]="scrollPageUp:"; +CPStandardKeyBindings["~"+CPPageUpFunctionKey]="pageUp:"; +CPStandardKeyBindings["$"+CPPageUpFunctionKey]="pageUpAndModifySelection:"; +CPStandardKeyBindings[CPPageDownFunctionKey]="scrollPageDown:"; +CPStandardKeyBindings["~"+CPPageDownFunctionKey]="pageDown:"; +CPStandardKeyBindings["$"+CPPageDownFunctionKey]="pageDownAndModifySelection:"; +var _1={}; +var _2=objj_allocateClassPair(CPObject,"CPKeyBinding"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_key"),new objj_ivar("_modifierFlags"),new objj_ivar("_selectors"),new objj_ivar("_cacheName")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithKey:modifierFlags:selectors:"),function(_4,_5,_6,_7,_8){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPKeyBinding").super_class},"init"); +if(_4){ +_key=_6; +_modifierFlags=_7; +_selectors=_8; +var _9=[]; +if(_modifierFlags&CPCommandKeyMask){ +_9.push("@"); +} +if(_modifierFlags&CPControlKeyMask){ +_9.push("^"); +} +if(_modifierFlags&CPAlternateKeyMask){ +_9.push("~"); +} +if(_modifierFlags&CPShiftKeyMask){ +_9.push("$"); +} +_9.push(_key); +_cacheName=_9.join(""); +} +return _4; +} +}),new objj_method(sel_getUid("key"),function(_a,_b){ +with(_a){ +return _key; +} +}),new objj_method(sel_getUid("modifierFlags"),function(_c,_d){ +with(_c){ +return _modifierFlags; +} +}),new objj_method(sel_getUid("selectors"),function(_e,_f){ +with(_e){ +return _selectors; +} +}),new objj_method(sel_getUid("_cacheName"),function(_10,_11){ +with(_10){ +return _cacheName; +} +}),new objj_method(sel_getUid("isEqual:"),function(_12,_13,rhs){ +with(_12){ +return _key===objj_msgSend(rhs,"key")&&_modifierFlags===objj_msgSend(rhs,"modifierFlags"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_14,_15){ +with(_14){ +if(objj_msgSend(_14,"class")!==CPKeyBinding){ +return; +} +objj_msgSend(_14,"createKeyBindingsFromJSObject:",CPStandardKeyBindings); +} +}),new objj_method(sel_getUid("createKeyBindingsFromJSObject:"),function(_16,_17,_18){ +with(_16){ +var _19; +for(_19 in _18){ +var _1a=_19.split(""),_1b=(objj_msgSend(_1a,"containsObject:","$")?CPShiftKeyMask:0)|(objj_msgSend(_1a,"containsObject:","^")?CPControlKeyMask:0)|(objj_msgSend(_1a,"containsObject:","~")?CPAlternateKeyMask:0)|(objj_msgSend(_1a,"containsObject:","@")?CPCommandKeyMask:0); +var _1c=_18[_19]; +if(!objj_msgSend(_1c,"isKindOfClass:",CPArray)){ +_1c=[_1c]; +} +var _1d=objj_msgSend(objj_msgSend(_16,"alloc"),"initWithKey:modifierFlags:selectors:",objj_msgSend(_1a,"lastObject"),_1b,_1c); +objj_msgSend(_16,"cacheKeyBinding:",_1d); +} +} +}),new objj_method(sel_getUid("cacheKeyBinding:"),function(_1e,_1f,_20){ +with(_1e){ +if(!_20){ +return; +} +_1[objj_msgSend(_20,"_cacheName")]=_20; +} +}),new objj_method(sel_getUid("keyBindingForKey:modifierFlags:"),function(_21,_22,_23,_24){ +with(_21){ +var _25=objj_msgSend(objj_msgSend(_21,"alloc"),"initWithKey:modifierFlags:selectors:",_23,_24,nil); +return _1[objj_msgSend(_25,"_cacheName")]; +} +}),new objj_method(sel_getUid("selectorsForKey:modifierFlags:"),function(_26,_27,_28,_29){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"keyBindingForKey:modifierFlags:",_28,_29),"selectors"); +} +})]); +p;19;CPKeyValueBinding.jt;12807;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;31;Foundation/CPValueTransformer.jt;12670; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPValueTransformer.j",NO); +var _1=objj_msgSend(CPDictionary,"new"),_2=objj_msgSend(CPDictionary,"new"); +var _3=0,_4=1; +var _5=objj_allocateClassPair(CPObject,"CPKeyValueBinding"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_info"),new objj_ivar("_source")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithBinding:name:to:keyPath:options:from:"),function(_7,_8,_9,_a,_b,_c,_d,_e){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPKeyValueBinding").super_class},"init"); +if(_7){ +_source=_e; +_info=objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_b,_c],[CPObservedObjectKey,CPObservedKeyPathKey]); +if(_d){ +objj_msgSend(_info,"setObject:forKey:",_d,CPOptionsKey); +} +objj_msgSend(_b,"addObserver:forKeyPath:options:context:",_7,_c,CPKeyValueObservingOptionNew,_9); +var _f=objj_msgSend(_2,"objectForKey:",objj_msgSend(_source,"hash")); +if(!_f){ +_f=objj_msgSend(CPDictionary,"new"); +objj_msgSend(_2,"setObject:forKey:",_f,objj_msgSend(_source,"hash")); +} +objj_msgSend(_f,"setObject:forKey:",_7,_a); +objj_msgSend(_7,"setValueFor:",_9); +} +return _7; +} +}),new objj_method(sel_getUid("setValueFor:"),function(_10,_11,_12){ +with(_10){ +var _13=objj_msgSend(_info,"objectForKey:",CPObservedObjectKey),_14=objj_msgSend(_info,"objectForKey:",CPObservedKeyPathKey),_15=objj_msgSend(_info,"objectForKey:",CPOptionsKey),_16=objj_msgSend(_13,"valueForKeyPath:",_14); +_16=objj_msgSend(_10,"transformValue:withOptions:",_16,_15); +objj_msgSend(_source,"setValue:forKey:",_16,_12); +} +}),new objj_method(sel_getUid("reverseSetValueFor:"),function(_17,_18,_19){ +with(_17){ +var _1a=objj_msgSend(_info,"objectForKey:",CPObservedObjectKey),_1b=objj_msgSend(_info,"objectForKey:",CPObservedKeyPathKey),_1c=objj_msgSend(_info,"objectForKey:",CPOptionsKey),_1d=objj_msgSend(_source,"valueForKeyPath:",_19); +_1d=objj_msgSend(_17,"reverseTransformValue:withOptions:",_1d,_1c); +objj_msgSend(_1a,"setValue:forKeyPath:",_1d,_1b); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_1e,_1f,_20,_21,_22,_23){ +with(_1e){ +if(!_22){ +return; +} +objj_msgSend(_1e,"setValueFor:",_23); +} +}),new objj_method(sel_getUid("transformValue:withOptions:"),function(_24,_25,_26,_27){ +with(_24){ +var _28,_29,_2a; +var _28=objj_msgSend(_27,"objectForKey:",CPValueTransformerNameBindingOption),_29; +if(_28){ +_29=objj_msgSend(CPValueTransformer,"valueTransformerForName:",_28); +if(!_29){ +var _2b=CPClassFromString(_28); +if(_2b){ +_29=objj_msgSend(objj_msgSend(_2b,"alloc"),"init"); +objj_msgSend(_2b,"setValueTransformer:forName:",_29,_28); +} +} +}else{ +_29=objj_msgSend(_27,"objectForKey:",CPValueTransformerBindingOption); +} +if(_29){ +_26=objj_msgSend(_29,"transformedValue:",_26); +} +switch(_26){ +case CPMultipleValuesMarker: +return objj_msgSend(_27,"objectForKey:",CPMultipleValuesPlaceholderBindingOption)||"Multiple Values"; +case CPNoSelectionMarker: +return objj_msgSend(_27,"objectForKey:",CPNoSelectionPlaceholderBindingOption)||"No Selection"; +case CPNotApplicableMarker: +if(objj_msgSend(_27,"objectForKey:",CPRaisesForNotApplicableKeysBindingOption)){ +objj_msgSend(CPException,"raise:reason:",CPGenericException,"can't transform non applicable key on: "+_source+" value: "+_26); +} +return objj_msgSend(_27,"objectForKey:",CPNotApplicablePlaceholderBindingOption)||"Not Applicable"; +case nil: +case undefined: +return objj_msgSend(_27,"objectForKey:",CPNullPlaceholderBindingOption)||nil; +} +return _26; +} +}),new objj_method(sel_getUid("reverseTransformValue:withOptions:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +var _30=objj_msgSend(_2f,"objectForKey:",CPValueTransformerNameBindingOption),_31; +if(_30){ +_31=objj_msgSend(CPValueTransformer,"valueTransformerForName:",_30); +}else{ +_31=objj_msgSend(_2f,"objectForKey:",CPValueTransformerBindingOption); +} +if(_31&&objj_msgSend(objj_msgSend(_31,"class"),"allowsReverseTransformation")){ +_2e=objj_msgSend(_31,"transformedValue:",_2e); +} +return _2e; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("exposeBinding:forClass:"),function(_32,_33,_34,_35){ +with(_32){ +var _36=objj_msgSend(_1,"objectForKey:",objj_msgSend(_35,"hash")); +if(!_36){ +_36=[]; +objj_msgSend(_1,"setObject:forKey:",_36,objj_msgSend(_35,"hash")); +} +_36.push(_34); +} +}),new objj_method(sel_getUid("exposedBindingsForClass:"),function(_37,_38,_39){ +with(_37){ +return objj_msgSend(objj_msgSend(_1,"objectForKey:",objj_msgSend(_39,"hash")),"copy"); +} +}),new objj_method(sel_getUid("getBinding:forObject:"),function(_3a,_3b,_3c,_3d){ +with(_3a){ +return objj_msgSend(objj_msgSend(_2,"objectForKey:",objj_msgSend(_3d,"hash")),"objectForKey:",_3c); +} +}),new objj_method(sel_getUid("infoForBinding:forObject:"),function(_3e,_3f,_40,_41){ +with(_3e){ +var _42=objj_msgSend(_3e,"getBinding:forObject:",_40,_41); +if(_42){ +return _42._info; +} +return nil; +} +}),new objj_method(sel_getUid("allBindingsForObject:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_2,"objectForKey:",objj_msgSend(_45,"hash")); +} +}),new objj_method(sel_getUid("unbind:forObject:"),function(_46,_47,_48,_49){ +with(_46){ +var _4a=objj_msgSend(_2,"objectForKey:",objj_msgSend(_49,"hash")); +if(!_4a){ +return; +} +var _4b=objj_msgSend(_4a,"objectForKey:",_48); +if(!_4b){ +return; +} +var _4c=_4b._info,_4d=objj_msgSend(_4c,"objectForKey:",CPObservedObjectKey),_4e=objj_msgSend(_4c,"objectForKey:",CPObservedKeyPathKey); +objj_msgSend(_4d,"removeObserver:forKeyPath:",_4b,_4e); +objj_msgSend(_4a,"removeObjectForKey:",_48); +} +}),new objj_method(sel_getUid("unbindAllForObject:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSend(_2,"objectForKey:",objj_msgSend(_51,"hash")); +if(!_52){ +return; +} +var _53=objj_msgSend(_52,"allKeys"),_54=_53.length; +while(_54--){ +objj_msgSend(_51,"unbind:",objj_msgSend(_52,"objectForKey:",_53[_54])); +} +objj_msgSend(_2,"removeObjectForKey:",objj_msgSend(_51,"hash")); +} +})]); +var _5=objj_getClass("CPObject"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("exposedBindings"),function(_55,_56){ +with(_55){ +var _57=[],_58=objj_msgSend(_55,"class"); +while(_58){ +var _59=objj_msgSend(CPKeyValueBinding,"exposedBindingsForClass:",_58); +if(_59){ +objj_msgSend(_57,"addObjectsFromArray:",_59); +} +_58=objj_msgSend(_58,"superclass"); +} +return _57; +} +}),new objj_method(sel_getUid("valueClassForBinding:"),function(_5a,_5b,_5c){ +with(_5a){ +return objj_msgSend(CPString,"class"); +} +}),new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"),function(_5d,_5e,_5f,_60,_61,_62){ +with(_5d){ +if(!_60||!_61){ +return CPLog.error("Invalid object or path on "+_5d+" for "+_5f); +} +objj_msgSend(_5d,"unbind:",_5f); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"alloc"),"initWithBinding:name:to:keyPath:options:from:",objj_msgSend(_5d,"_replacementKeyPathForBinding:",_5f),_5f,_60,_61,_62,_5d); +} +}),new objj_method(sel_getUid("infoForBinding:"),function(_63,_64,_65){ +with(_63){ +return objj_msgSend(CPKeyValueBinding,"infoForBinding:forObject:",_65,_63); +} +}),new objj_method(sel_getUid("unbind:"),function(_66,_67,_68){ +with(_66){ +objj_msgSend(CPKeyValueBinding,"unbind:forObject:",_68,_66); +} +}),new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(_69,_6a,_6b){ +with(_69){ +return _6b; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("exposeBinding:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(CPKeyValueBinding,"exposeBinding:forClass:",_6e,objj_msgSend(_6c,"class")); +} +})]); +var _5=objj_allocateClassPair(CPKeyValueBinding,"_CPKeyValueOrBinding"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setValueFor:"),function(_6f,_70,_71){ +with(_6f){ +var _72=objj_msgSend(_2,"valueForKey:",objj_msgSend(_source,"hash")); +if(!_72){ +return; +} +objj_msgSend(_source,"setValue:forKey:",_73(_71,_72,_4),_71); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_74,_75,_76,_77,_78,_79){ +with(_74){ +objj_msgSend(_74,"setValueFor:",_79); +} +})]); +var _5=objj_allocateClassPair(CPKeyValueBinding,"_CPKeyValueAndBinding"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setValueFor:"),function(_7a,_7b,_7c){ +with(_7a){ +var _7d=objj_msgSend(_2,"objectForKey:",objj_msgSend(_source,"hash")); +if(!_7d){ +return; +} +objj_msgSend(_source,"setValue:forKey:",_73(_7c,_7d,_3),_7c); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_7e,_7f,_80,_81,_82,_83){ +with(_7e){ +objj_msgSend(_7e,"setValueFor:",_83); +} +})]); +var _73=_73=function(key,_84,_85){ +var _86=key,_87,_88=1; +while(_87=objj_msgSend(_84,"objectForKey:",_86)){ +var _89=_87._info,_8a=objj_msgSend(_89,"objectForKey:",CPObservedObjectKey),_8b=objj_msgSend(_89,"objectForKey:",CPObservedKeyPathKey),_8c=objj_msgSend(_89,"objectForKey:",CPOptionsKey); +var _8d=objj_msgSend(_87,"transformValue:withOptions:",objj_msgSend(_8a,"valueForKeyPath:",_8b),_8c); +if(_8d==_85){ +return _85; +} +_86=objj_msgSend(CPString,"stringWithFormat:","%@%i",key,++_88); +} +return !_85; +}; +var _8e=_8e=function(_8f,_90,_91){ +var _92=objj_msgSend(_91,"objectForKey:",_8f),_93=_92._info,_94=objj_msgSend(_93,"objectForKey:",CPObservedObjectKey),_95=objj_msgSend(_93,"objectForKey:",CPObservedKeyPathKey),_96=objj_msgSend(_93,"objectForKey:",CPOptionsKey),_97=objj_msgSend(_94,"valueForKeyPath:",_95),_98=objj_msgSend(_96,"objectForKey:",CPSelectorNameBindingOption); +if(!_97||!_98){ +return; +} +var _99=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",objj_msgSend(_97,"methodSignatureForSelector:",_98)); +objj_msgSend(_99,"setSelector:",_98); +var _9a=_90; +count=1; +while(_92=objj_msgSend(_91,"objectForKey:",_9a)){ +_93=_92._info; +_95=objj_msgSend(_93,"objectForKey:",CPObserverKeyPathKey); +_94=objj_msgSend(objj_msgSend(_93,"objectForKey:",CPObservedObjectKey),"valueForKeyPath:",_95); +if(_94){ +objj_msgSend(_99,"setArgument:atIndex:",_94,++count); +} +_9a=objj_msgSend(CPString,"stringWithFormat:","%@%i",_90,count); +} +objj_msgSend(_99,"invoke"); +}; +CPObservedObjectKey="CPObservedObjectKey"; +CPObservedKeyPathKey="CPObservedKeyPathKey"; +CPOptionsKey="CPOptionsKey"; +CPMultipleValuesMarker="CPMultipleValuesMarker"; +CPNoSelectionMarker="CPNoSelectionMarker"; +CPNotApplicableMarker="CPNotApplicableMarker"; +CPAlignmentBinding="CPAlignmentBinding"; +CPEditableBinding="CPEditableBinding"; +CPEnabledBinding="CPEnabledBinding"; +CPFontBinding="CPFontBinding"; +CPHiddenBinding="CPHiddenBinding"; +CPSelectedIndexBinding="CPSelectedIndexBinding"; +CPTextColorBinding="CPTextColorBinding"; +CPToolTipBinding="CPToolTipBinding"; +CPValueBinding="value"; +CPAllowsEditingMultipleValuesSelectionBindingOption="CPAllowsEditingMultipleValuesSelectionBindingOption"; +CPAllowsNullArgumentBindingOption="CPAllowsNullArgumentBindingOption"; +CPConditionallySetsEditableBindingOption="CPConditionallySetsEditableBindingOption"; +CPConditionallySetsEnabledBindingOption="CPConditionallySetsEnabledBindingOption"; +CPConditionallySetsHiddenBindingOption="CPConditionallySetsHiddenBindingOption"; +CPContinuouslyUpdatesValueBindingOption="CPContinuouslyUpdatesValueBindingOption"; +CPCreatesSortDescriptorBindingOption="CPCreatesSortDescriptorBindingOption"; +CPDeletesObjectsOnRemoveBindingsOption="CPDeletesObjectsOnRemoveBindingsOption"; +CPDisplayNameBindingOption="CPDisplayNameBindingOption"; +CPDisplayPatternBindingOption="CPDisplayPatternBindingOption"; +CPHandlesContentAsCompoundValueBindingOption="CPHandlesContentAsCompoundValueBindingOption"; +CPInsertsNullPlaceholderBindingOption="CPInsertsNullPlaceholderBindingOption"; +CPInvokesSeparatelyWithArrayObjectsBindingOption="CPInvokesSeparatelyWithArrayObjectsBindingOption"; +CPMultipleValuesPlaceholderBindingOption="CPMultipleValuesPlaceholderBindingOption"; +CPNoSelectionPlaceholderBindingOption="CPNoSelectionPlaceholderBindingOption"; +CPNotApplicablePlaceholderBindingOption="CPNotApplicablePlaceholderBindingOption"; +CPNullPlaceholderBindingOption="CPNullPlaceholderBindingOption"; +CPPredicateFormatBindingOption="CPPredicateFormatBindingOption"; +CPRaisesForNotApplicableKeysBindingOption="CPRaisesForNotApplicableKeysBindingOption"; +CPSelectorNameBindingOption="CPSelectorNameBindingOption"; +CPSelectsAllWhenSettingContentBindingOption="CPSelectsAllWhenSettingContentBindingOption"; +CPValidatesImmediatelyBindingOption="CPValidatesImmediatelyBindingOption"; +CPValueTransformerNameBindingOption="CPValueTransformerNameBindingOption"; +CPValueTransformerBindingOption="CPValueTransformerBindingOption"; +p;20;CPObjectController.jt;18248;@STATIC;1.0;I;25;Foundation/CPDictionary.ji;14;CPController.jt;18179; +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("CPController.j",YES); +var _1=objj_allocateClassPair(CPController,"CPObjectController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentObject"),new objj_ivar("_selection"),new objj_ivar("_objectClass"),new objj_ivar("_isEditable"),new objj_ivar("_automaticallyPreparesContent"),new objj_ivar("_observedKeys")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithContent:",nil); +} +}),new objj_method(sel_getUid("initWithContent:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPObjectController").super_class},"init")){ +objj_msgSend(_5,"setContent:",_7); +objj_msgSend(_5,"setEditable:",YES); +objj_msgSend(_5,"setObjectClass:",objj_msgSend(CPMutableDictionary,"class")); +_observedKeys=objj_msgSend(objj_msgSend(CPCountedSet,"alloc"),"init"); +} +return _5; +} +}),new objj_method(sel_getUid("content"),function(_8,_9){ +with(_8){ +return _contentObject; +} +}),new objj_method(sel_getUid("setContent:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_a,"willChangeValueForKey:","contentObject"); +objj_msgSend(_a,"_selectionWillChange"); +_contentObject=_c; +objj_msgSend(_a,"didChangeValueForKey:","contentObject"); +objj_msgSend(_a,"_selectionDidChange"); +} +}),new objj_method(sel_getUid("_setContentObject:"),function(_d,_e,_f){ +with(_d){ +objj_msgSend(_d,"setContent:",_f); +} +}),new objj_method(sel_getUid("_contentObject"),function(_10,_11){ +with(_10){ +return objj_msgSend(_10,"content"); +} +}),new objj_method(sel_getUid("setAutomaticallyPreparesContent:"),function(_12,_13,_14){ +with(_12){ +_automaticallyPreparesContent=_14; +} +}),new objj_method(sel_getUid("automaticallyPreparesContent"),function(_15,_16){ +with(_15){ +return _automaticallyPreparesContent; +} +}),new objj_method(sel_getUid("prepareContent"),function(_17,_18){ +with(_17){ +objj_msgSend(_17,"setContent:",objj_msgSend(_17,"newObject")); +} +}),new objj_method(sel_getUid("setObjectClass:"),function(_19,_1a,_1b){ +with(_19){ +_objectClass=_1b; +} +}),new objj_method(sel_getUid("objectClass"),function(_1c,_1d){ +with(_1c){ +return _objectClass; +} +}),new objj_method(sel_getUid("newObject"),function(_1e,_1f){ +with(_1e){ +return objj_msgSend(objj_msgSend(objj_msgSend(_1e,"objectClass"),"alloc"),"init"); +} +}),new objj_method(sel_getUid("addObject:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(_20,"setContent:",_22); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","contentObject",_20),"reverseSetValueFor:","contentObject"); +} +}),new objj_method(sel_getUid("removeObject:"),function(_23,_24,_25){ +with(_23){ +if(objj_msgSend(_23,"content")===_25){ +objj_msgSend(_23,"setContent:",nil); +} +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","contentObject",_23),"reverseSetValueFor:","contentObject"); +} +}),new objj_method(sel_getUid("add:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(_26,"addObject:",objj_msgSend(_26,"newObject")); +} +}),new objj_method(sel_getUid("canAdd"),function(_29,_2a){ +with(_29){ +return objj_msgSend(_29,"isEditable"); +} +}),new objj_method(sel_getUid("remove:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"removeObject:",objj_msgSend(_2b,"content")); +} +}),new objj_method(sel_getUid("canRemove"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_2e,"isEditable")&&objj_msgSend(objj_msgSend(_2e,"selectedObjects"),"count"); +} +}),new objj_method(sel_getUid("setEditable:"),function(_30,_31,_32){ +with(_30){ +_isEditable=_32; +} +}),new objj_method(sel_getUid("isEditable"),function(_33,_34){ +with(_33){ +return _isEditable; +} +}),new objj_method(sel_getUid("selectedObjects"),function(_35,_36){ +with(_35){ +return objj_msgSend(objj_msgSend(_CPObservableArray,"alloc"),"initWithObjects:count:",[_contentObject],1); +} +}),new objj_method(sel_getUid("selection"),function(_37,_38){ +with(_37){ +return _selection; +} +}),new objj_method(sel_getUid("_selectionWillChange"),function(_39,_3a){ +with(_39){ +objj_msgSend(_selection,"controllerWillChange"); +objj_msgSend(_39,"willChangeValueForKey:","selection"); +} +}),new objj_method(sel_getUid("_selectionDidChange"),function(_3b,_3c){ +with(_3b){ +if(_selection===undefined||_selection===nil){ +_selection=objj_msgSend(objj_msgSend(CPControllerSelectionProxy,"alloc"),"initWithController:",_3b); +} +objj_msgSend(_selection,"controllerDidChange"); +objj_msgSend(_3b,"didChangeValueForKey:","selection"); +} +}),new objj_method(sel_getUid("observedKeys"),function(_3d,_3e){ +with(_3d){ +return _observedKeys; +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_3f,_40,_41,_42,_43,_44){ +with(_3f){ +objj_msgSend(_observedKeys,"addObject:",_42); +objj_msgSendSuper({receiver:_3f,super_class:objj_getClass("CPObjectController").super_class},"addObserver:forKeyPath:options:context:",_41,_42,_43,_44); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_45,_46,_47,_48){ +with(_45){ +objj_msgSend(_observedKeys,"removeObject:",_48); +objj_msgSendSuper({receiver:_45,super_class:objj_getClass("CPObjectController").super_class},"removeObserver:forKeyPath:",_47,_48); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("initialize"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"exposeBinding:","editable"); +objj_msgSend(_49,"exposeBinding:","contentObject"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingContentObject"),function(_4b,_4c){ +with(_4b){ +return objj_msgSend(CPSet,"setWithObjects:","content"); +} +}),new objj_method(sel_getUid("automaticallyNotifiesObserversForKey:"),function(_4d,_4e,_4f){ +with(_4d){ +if(_4f==="contentObject"){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanAdd"),function(_50,_51){ +with(_50){ +return objj_msgSend(CPSet,"setWithObject:","editable"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsert"),function(_52,_53){ +with(_52){ +return objj_msgSend(CPSet,"setWithObject:","editable"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"),function(_54,_55){ +with(_54){ +return objj_msgSend(CPSet,"setWithObjects:","editable","selection"); +} +})]); +var _56="CPObjectControllerObjectClassNameKey",_57="CPObjectControllerIsEditableKey",_58="CPObjectControllerAutomaticallyPreparesContentKey"; +var _1=objj_getClass("CPObjectController"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObjectController\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_59,_5a,_5b){ +with(_59){ +_59=objj_msgSendSuper({receiver:_59,super_class:objj_getClass("CPObjectController").super_class},"init"); +if(_59){ +var _5c=objj_msgSend(_5b,"decodeObjectForKey:",_56),_5d=CPClassFromString(_5c); +objj_msgSend(_59,"setObjectClass:",_5d); +objj_msgSend(_59,"setEditable:",objj_msgSend(_5b,"decodeBoolForKey:",_57)); +objj_msgSend(_59,"setAutomaticallyPreparesContent:",objj_msgSend(_5b,"decodeBoolForKey:",_58)||NO); +_observedKeys=objj_msgSend(objj_msgSend(CPCountedSet,"alloc"),"init"); +} +return _59; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_5e,_5f,_60){ +with(_5e){ +objj_msgSend(_60,"encodeObject:forKey:",CPStringFromClass(objectClass),_56); +objj_msgSend(_60,"encodeObject:forKey:",objj_msgSend(_5e,"isEditable"),_57); +if(!objj_msgSend(_5e,"automaticallyPreparesContent")){ +objj_msgSend(_60,"encodeBOOL:forKey:",YES,_58); +} +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPObservationProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath"),new objj_ivar("_observer"),new objj_ivar("_object"),new objj_ivar("_notifyObject"),new objj_ivar("_context"),new objj_ivar("_options")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKeyPath:observer:object:"),function(_61,_62,_63,_64,_65){ +with(_61){ +if(_61=objj_msgSendSuper({receiver:_61,super_class:objj_getClass("_CPObservationProxy").super_class},"init")){ +_keyPath=_63; +_observer=_64; +_object=_65; +} +return _61; +} +}),new objj_method(sel_getUid("observer"),function(_66,_67){ +with(_66){ +return _observer; +} +}),new objj_method(sel_getUid("keyPath"),function(_68,_69){ +with(_68){ +return _keyPath; +} +}),new objj_method(sel_getUid("context"),function(_6a,_6b){ +with(_6a){ +return _context; +} +}),new objj_method(sel_getUid("options"),function(_6c,_6d){ +with(_6c){ +return _options; +} +}),new objj_method(sel_getUid("setNotifyObject:"),function(_6e,_6f,_70){ +with(_6e){ +_notifyObject=_70; +} +}),new objj_method(sel_getUid("isEqual:"),function(_71,_72,_73){ +with(_71){ +if(objj_msgSend(_73,"class")===objj_msgSend(_71,"class")){ +if(_73._observer===_observer&&objj_msgSend(_73._keyPath,"isEqual:",_keyPath)&&objj_msgSend(_73._object,"isEqual:",_object)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_74,_75,_76,_77,_78,_79){ +with(_74){ +if(_notifyObject){ +objj_msgSend(_object,"observeValueForKeyPath:ofObject:change:context:",_keyPath,_object,_78,_79); +} +objj_msgSend(_observer,"observeValueForKeyPath:ofObject:change:context:",_keyPath,_object,_78,_79); +} +}),new objj_method(sel_getUid("description"),function(_7a,_7b){ +with(_7a){ +return objj_msgSendSuper({receiver:_7a,super_class:objj_getClass("_CPObservationProxy").super_class},"description")+objj_msgSend(CPString,"stringWithFormat:","observation proxy for %@ on key path %@",_observer,_keyPath); +} +})]); +var _1=objj_allocateClassPair(CPMutableArray,"_CPObservableArray"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_observationProxies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("description"),function(_7c,_7d){ +with(_7c){ +return "<_CPObservableArray: "+objj_msgSendSuper({receiver:_7c,super_class:objj_getClass("_CPObservableArray").super_class},"description")+" >"; +} +}),new objj_method(sel_getUid("initWithArray:"),function(_7e,_7f,_80){ +with(_7e){ +if(_7e=objj_msgSendSuper({receiver:_7e,super_class:objj_getClass("_CPObservableArray").super_class},"initWithArray:",_80)){ +_observationProxies=[]; +} +return _7e; +} +}),new objj_method(sel_getUid("initWithObjects:count:"),function(_81,_82,_83,_84){ +with(_81){ +if(_81=objj_msgSendSuper({receiver:_81,super_class:objj_getClass("_CPObservableArray").super_class},"initWithObjects:count:",_83,_84)){ +_observationProxies=[]; +} +return _81; +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_85,_86,_87,_88,_89,_8a){ +with(_85){ +if(_88.indexOf("@")===0){ +var _8b=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_88,_87,_85); +_8b._options=_89; +_8b._context=_8a; +objj_msgSend(_observationProxies,"addObject:",_8b); +var _8c=_88.indexOf("."),_8d=_88.substring(_8c+1),_8e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_85,"count"))); +objj_msgSend(_85,"addObserver:toObjectsAtIndexes:forKeyPath:options:context:",_8b,_8e,_8d,_89,_8a); +}else{ +var _8e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_85,"count"))); +objj_msgSend(_85,"addObserver:toObjectsAtIndexes:forKeyPath:options:context:",_87,_8e,_88,_89,_8a); +} +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_92.indexOf("@")===0){ +var _93=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_92,_91,_8f),_94=objj_msgSend(_observationProxies,"indexOfObject:",_93); +_93=objj_msgSend(_observationProxies,"objectAtIndex:",_94); +var _95=_92.indexOf("."),_96=_92.substring(_95+1),_97=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_8f,"count"))); +objj_msgSend(_8f,"removeObserver:fromObjectsAtIndexes:forKeyPath:",_93,_97,_96); +}else{ +var _97=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_8f,"count"))); +objj_msgSend(_8f,"removeObserver:fromObjectsAtIndexes:forKeyPath:",_91,_97,_92); +} +} +}),new objj_method(sel_getUid("insertObject:atIndex:"),function(_98,_99,_9a,_9b){ +with(_98){ +for(var i=0,_9c=objj_msgSend(_observationProxies,"count");i<_9c;i++){ +var _9d=objj_msgSend(_observationProxies,"objectAtIndex:",i),_9e=objj_msgSend(_9d,"keyPath"),_9f=_9e.indexOf(".")===0; +if(_9f){ +objj_msgSend(_98,"willChangeValueForKey:",_9e); +} +objj_msgSend(_9a,"addObserver:forKeyPath:options:context:",_9d,_9e,objj_msgSend(_9d,"options"),objj_msgSend(_9d,"context")); +if(_9f){ +objj_msgSend(_98,"didChangeValueForKey:",_9e); +} +} +objj_msgSendSuper({receiver:_98,super_class:objj_getClass("_CPObservableArray").super_class},"insertObject:atIndex:",_9a,_9b); +} +}),new objj_method(sel_getUid("removeObjectAtIndex:"),function(_a0,_a1,_a2){ +with(_a0){ +for(var i=0,_a3=objj_msgSend(_observationProxies,"count");i<_a3;i++){ +var _a4=objj_msgSend(_observationProxies,"objectAtIndex:",i),_a5=objj_msgSend(_a4,"keyPath"),_a6=_a5.indexOf(".")===0; +if(_a6){ +objj_msgSend(_a0,"willChangeValueForKey:",_a5); +} +objj_msgSend(anObject,"removeObserver:forKeyPath:",_a4,_a5); +if(_a6){ +objj_msgSend(_a0,"didChangeValueForKey:",_a5); +} +} +objj_msgSendSuper({receiver:_a0,super_class:objj_getClass("_CPObservableArray").super_class},"removeObjectAtIndex:",_a2); +} +}),new objj_method(sel_getUid("objectsAtIndexes:"),function(_a7,_a8,_a9){ +with(_a7){ +return objj_msgSend(_CPObservableArray,"arrayWithArray:",objj_msgSendSuper({receiver:_a7,super_class:objj_getClass("_CPObservableArray").super_class},"objectsAtIndexes:",_a9)); +} +}),new objj_method(sel_getUid("addObject:"),function(_aa,_ab,_ac){ +with(_aa){ +objj_msgSend(_aa,"insertObject:atIndex:",_ac,objj_msgSend(_aa,"count")); +} +}),new objj_method(sel_getUid("removeLastObject"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(_ad,"removeObjectAtIndex:",objj_msgSend(_ad,"count")); +} +}),new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"),function(_af,_b0,_b1,_b2){ +with(_af){ +var _b3=objj_msgSend(_af,"objectAtIndex:",_b1); +for(var i=0,_b4=objj_msgSend(_observationProxies,"count");i<_b4;i++){ +var _b5=objj_msgSend(_observationProxies,"objectAtIndex:",i),_b6=objj_msgSend(_b5,"keyPath"),_b7=_b6.indexOf(".")===0; +if(_b7){ +objj_msgSend(_af,"willChangeValueForKey:",_b6); +} +objj_msgSend(_b3,"removeObserver:forKeyPath:",_b5,_b6); +objj_msgSend(_b2,"addObserver:forKeyPath:options:context:",_b5,_b6,objj_msgSend(_b5,"options"),objj_msgSend(_b5,"context")); +if(_b7){ +objj_msgSend(_af,"didChangeValueForKey:",_b6); +} +} +objj_msgSend(_af,"replaceObjectAtIndex:withObject:",_b1,_b2); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_b8,_b9){ +with(_b8){ +var a=[]; +a.isa=_b8; +var _ba=class_copyIvarList(_b8),_bb=_ba.length; +while(_bb--){ +a[ivar_getName(_ba[_bb])]=nil; +} +return a; +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPControllerSelectionProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_controller"),new objj_ivar("_keys"),new objj_ivar("_cachedValues"),new objj_ivar("_observationProxies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithController:"),function(_bc,_bd,_be){ +with(_bc){ +if(_bc=objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPControllerSelectionProxy").super_class},"init")){ +_cachedValues=objj_msgSend(CPDictionary,"dictionary"); +_observationProxies=objj_msgSend(CPArray,"array"); +_controller=_be; +} +return _bc; +} +}),new objj_method(sel_getUid("valueForKey:"),function(_bf,_c0,_c1){ +with(_bf){ +var _c2=objj_msgSend(_cachedValues,"objectForKey:",_c1); +if(_c2!==undefined&&_c2!==nil){ +return _c2; +} +var _c3=objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"valueForKeyPath:",_c1),_c4=objj_msgSend(_c3,"count"); +if(!_c4){ +_c2=CPNoSelectionMarker; +}else{ +if(_c4===1){ +_c2=objj_msgSend(_c3,"objectAtIndex:",0); +}else{ +if(objj_msgSend(_controller,"alwaysUsesMultipleValuesMarker")){ +_c2=CPMultipleValuesMarker; +}else{ +_c2=objj_msgSend(_c3,"objectAtIndex:",0); +for(var i=0,_c4=objj_msgSend(_c3,"count");i<_c4&&_c2!=CPMultipleValuesMarker;i++){ +if(!objj_msgSend(_c2,"isEqual:",objj_msgSend(_c3,"objectAtIndex:",i))){ +_c2=CPMultipleValuesMarker; +} +} +} +} +} +objj_msgSend(_cachedValues,"setValue:forKey:",_c2,_c1); +return _c2; +} +}),new objj_method(sel_getUid("count"),function(_c5,_c6){ +with(_c5){ +return objj_msgSend(_cachedValues,"count"); +} +}),new objj_method(sel_getUid("keyEnumerator"),function(_c7,_c8){ +with(_c7){ +return objj_msgSend(_cachedValues,"keyEnumerator"); +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_c9,_ca,_cb,_cc){ +with(_c9){ +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"setValue:forKey:",_cb,_cc); +} +}),new objj_method(sel_getUid("controllerWillChange"),function(_cd,_ce){ +with(_cd){ +_keys=objj_msgSend(_cachedValues,"allKeys"); +if(!_keys){ +return; +} +for(var i=0,_cf=_keys.length;i<_cf;i++){ +objj_msgSend(_cd,"willChangeValueForKey:",_keys[i]); +} +objj_msgSend(_cachedValues,"removeAllObjects"); +} +}),new objj_method(sel_getUid("controllerDidChange"),function(_d0,_d1){ +with(_d0){ +objj_msgSend(_cachedValues,"removeAllObjects"); +if(!_keys){ +return; +} +for(var i=0,_d2=_keys.length;i<_d2;i++){ +objj_msgSend(_d0,"didChangeValueForKey:",_keys[i]); +} +_keys=nil; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_d3,_d4,_d5,_d6,_d7,_d8){ +with(_d3){ +objj_msgSend(_cachedValues,"removeObjectForKey:",_d5); +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_d9,_da,_db,_dc,_dd,_de){ +with(_d9){ +var _df=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_dc,_db,_d9); +objj_msgSend(_df,"setNotifyObject:",YES); +objj_msgSend(_observationProxies,"addObject:",_df); +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"addObserver:forKeyPath:options:context:",_df,_dc,_dd,_de); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_e0,_e1,_e2,_e3){ +with(_e0){ +var _e4=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_e3,_e2,_e0),_e5=objj_msgSend(_observationProxies,"indexOfObject:",_e4); +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"removeObserver:forKeyPath:",objj_msgSend(_observationProxies,"objectAtIndex:",_e5),_e3); +objj_msgSend(_observationProxies,"removeObjectAtIndex:",_e5); +} +})]); +p;13;CPOpenPanel.jt;2079;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2039; +objj_executeFile("AppKit/CPPanel.j",NO); +var _1=objj_allocateClassPair(CPPanel,"CPOpenPanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_canChooseFiles"),new objj_ivar("_canChooseDirectories"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_directoryURL"),new objj_ivar("_URLs")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("canChooseFiles"),function(_3,_4){ +with(_3){ +return _canChooseFiles; +} +}),new objj_method(sel_getUid("setCanChooseFiles:"),function(_5,_6,_7){ +with(_5){ +_canChooseFiles=_7; +} +}),new objj_method(sel_getUid("canChooseDirectories"),function(_8,_9){ +with(_8){ +return _canChooseDirectories; +} +}),new objj_method(sel_getUid("setCanChooseDirectories:"),function(_a,_b,_c){ +with(_a){ +_canChooseDirectories=_c; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_d,_e){ +with(_d){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_f,_10,_11){ +with(_f){ +_allowsMultipleSelection=_11; +} +}),new objj_method(sel_getUid("directoryURL"),function(_12,_13){ +with(_12){ +return _directoryURL; +} +}),new objj_method(sel_getUid("setDirectoryURL:"),function(_14,_15,_16){ +with(_14){ +_directoryURL=_16; +} +}),new objj_method(sel_getUid("runModal"),function(_17,_18){ +with(_17){ +if(typeof window["cpOpenPanel"]==="function"){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +var _19={directoryURL:objj_msgSend(_17,"directoryURL"),canChooseFiles:objj_msgSend(_17,"canChooseFiles"),canChooseDirectories:objj_msgSend(_17,"canChooseDirectories"),allowsMultipleSelection:objj_msgSend(_17,"allowsMultipleSelection")}; +var _1a=window.cpOpenPanel(_19); +_URLs=_1a.URLs; +return _1a.button; +} +throw "-runModal is unimplemented."; +} +}),new objj_method(sel_getUid("URLs"),function(_1b,_1c){ +with(_1b){ +return _URLs; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("openPanel"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(objj_msgSend(CPOpenPanel,"alloc"),"init"); +} +})]); +p;15;CPOutlineView.jt;38503;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.jt;38445; +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +CPOutlineViewColumnDidMoveNotification="CPOutlineViewColumnDidMoveNotification"; +CPOutlineViewColumnDidResizeNotification="CPOutlineViewColumnDidResizeNotification"; +CPOutlineViewItemDidCollapseNotification="CPOutlineViewItemDidCollapseNotification"; +CPOutlineViewItemDidExpandNotification="CPOutlineViewItemDidExpandNotification"; +CPOutlineViewItemWillCollapseNotification="CPOutlineViewItemWillCollapseNotification"; +CPOutlineViewItemWillExpandNotification="CPOutlineViewItemWillExpandNotification"; +CPOutlineViewSelectionDidChangeNotification="CPOutlineViewSelectionDidChangeNotification"; +CPOutlineViewSelectionIsChangingNotification="CPOutlineViewSelectionIsChangingNotification"; +var _1=1<<1,_2=1<<2,_3=1<<3,_4=1<<4,_5=1<<5,_6=1<<6,_7=1<<7,_8=1<<8,_9=1<<9,_a=1<<10; +var _b=1<<1,_c=1<<2,_d=1<<3,_e=1<<4,_f=1<<5,_10=1<<6,_11=1<<7,_12=1<<8,_13=1<<9,_14=1<<10,_15=1<<11,_16=1<<12,_17=1<<13,_18=1<<14,_19=1<<15,_1a=1<<16,_1b=1<<17,_1c=1<<18,_1d=1<<19,_1e=1<<20,_1f=1<<21,_20=1<<22,_21=1<<23,_22=1<<24; +CPOutlineViewDropOnItemIndex=-1; +var _23=objj_allocateClassPair(CPTableView,"CPOutlineView"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineViewDataSource"),new objj_ivar("_outlineViewDelegate"),new objj_ivar("_outlineTableColumn"),new objj_ivar("_indentationPerLevel"),new objj_ivar("_indentationMarkerFollowsDataView"),new objj_ivar("_implementedOutlineViewDataSourceMethods"),new objj_ivar("_implementedOutlineViewDelegateMethods"),new objj_ivar("_rootItemInfo"),new objj_ivar("_itemsForRows"),new objj_ivar("_itemInfosForItems"),new objj_ivar("_disclosureControlPrototype"),new objj_ivar("_disclosureControlsForRows"),new objj_ivar("_disclosureControlData"),new objj_ivar("_disclosureControlQueue"),new objj_ivar("_shouldRetargetItem"),new objj_ivar("_retargetedItem"),new objj_ivar("_shouldRetargetChildIndex"),new objj_ivar("_retargedChildIndex"),new objj_ivar("_dragHoverTimer"),new objj_ivar("_dropItem")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithFrame:"),function(_25,_26,_27){ +with(_25){ +_25=objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"initWithFrame:",_27); +if(_25){ +_selectionHighlightStyle=CPTableViewSelectionHighlightStyleSourceList; +_rootItemInfo={isExpanded:YES,isExpandable:NO,level:-1,row:-1,children:[],weight:0}; +_itemsForRows=[]; +_itemInfosForItems={}; +_disclosureControlsForRows=[]; +_retargetedItem=nil; +_shouldRetargetItem=NO; +_retargedChildIndex=nil; +_shouldRetargetChildIndex=NO; +_startHoverTime=nil; +objj_msgSend(_25,"setIndentationPerLevel:",16); +objj_msgSend(_25,"setIndentationMarkerFollowsDataView:",YES); +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"setDataSource:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource,"alloc"),"initWithOutlineView:",_25)); +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"setDelegate:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDelegate,"alloc"),"initWithOutlineView:",_25)); +objj_msgSend(_25,"setDisclosureControlPrototype:",objj_msgSend(objj_msgSend(CPDisclosureButton,"alloc"),"initWithFrame:",CGRectMake(0,0,10,10))); +} +return _25; +} +}),new objj_method(sel_getUid("setDataSource:"),function(_28,_29,_2a){ +with(_28){ +if(_outlineViewDataSource===_2a){ +return; +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:child:ofItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:child:ofItem:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:isItemExpandable:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:isItemExpandable:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:numberOfChildrenOfItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:numberOfChildrenOfItem:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:objectValueForTableColumn:byItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:objectValueForTableColumn:byItem:'"); +} +_outlineViewDataSource=_2a; +_implementedOutlineViewDataSourceMethods=0; +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:setObjectValue:forTableColumn:byItem:"))){ +_implementedOutlineViewDataSourceMethods|=_1; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:shouldDeferDisplayingChildrenOfItem:"))){ +_implementedOutlineViewDataSourceMethods|=_2; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:acceptDrop:item:childIndex:"))){ +_implementedOutlineViewDataSourceMethods|=_3; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:validateDrop:proposedItem:proposedChildIndex:"))){ +_implementedOutlineViewDataSourceMethods|=_4; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:validateDrop:proposedRow:proposedDropOperation:"))){ +_implementedOutlineViewDataSourceMethods|=_5; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:"))){ +_implementedOutlineViewDataSourceMethods|=_6; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:itemForPersistentObject:"))){ +_implementedOutlineViewDataSourceMethods|=_7; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:persistentObjectForItem:"))){ +_implementedOutlineViewDataSourceMethods|=_8; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:writeItems:toPasteboard:"))){ +_implementedOutlineViewDataSourceMethods|=_9; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:sortDescriptorsDidChange:"))){ +_implementedOutlineViewDataSourceMethods|=_a; +} +objj_msgSend(_28,"reloadData"); +} +}),new objj_method(sel_getUid("dataSource"),function(_2b,_2c){ +with(_2b){ +return _outlineViewDataSource; +} +}),new objj_method(sel_getUid("isExpandable:"),function(_2d,_2e,_2f){ +with(_2d){ +if(!_2f){ +return YES; +} +var _30=_itemInfosForItems[objj_msgSend(_2f,"UID")]; +if(!_30){ +return NO; +} +return _30.isExpandable; +} +}),new objj_method(sel_getUid("isItemExpanded:"),function(_31,_32,_33){ +with(_31){ +if(!_33){ +return YES; +} +var _34=_itemInfosForItems[objj_msgSend(_33,"UID")]; +if(!_34){ +return NO; +} +return _34.isExpanded; +} +}),new objj_method(sel_getUid("expandItem:"),function(_35,_36,_37){ +with(_35){ +objj_msgSend(_35,"expandItem:expandChildren:",_37,NO); +} +}),new objj_method(sel_getUid("expandItem:expandChildren:"),function(_38,_39,_3a,_3b){ +with(_38){ +var _3c=null; +if(!_3a){ +_3c=_rootItemInfo; +}else{ +_3c=_itemInfosForItems[objj_msgSend(_3a,"UID")]; +} +if(!_3c){ +return; +} +if(!_3c.isExpanded){ +objj_msgSend(_38,"_noteItemWillExpand:",_3a); +_3c.isExpanded=YES; +objj_msgSend(_38,"_noteItemDidExpand:",_3a); +objj_msgSend(_38,"reloadItem:reloadChildren:",_3a,YES); +} +if(_3b){ +var _3d=_3c.children,_3e=_3d.length; +while(_3e--){ +objj_msgSend(_38,"expandItem:expandChildren:",_3d[_3e],YES); +} +} +} +}),new objj_method(sel_getUid("collapseItem:"),function(_3f,_40,_41){ +with(_3f){ +if(!_41){ +return; +} +var _42=_itemInfosForItems[objj_msgSend(_41,"UID")]; +if(!_42){ +return; +} +if(!_42.isExpanded){ +return; +} +objj_msgSend(_3f,"_noteItemWillCollapse:",_41); +_42.isExpanded=NO; +objj_msgSend(_3f,"_noteItemDidCollapse:",_41); +objj_msgSend(_3f,"reloadItem:reloadChildren:",_41,YES); +} +}),new objj_method(sel_getUid("reloadItem:"),function(_43,_44,_45){ +with(_43){ +objj_msgSend(_43,"reloadItem:reloadChildren:",_45,NO); +} +}),new objj_method(sel_getUid("reloadItem:reloadChildren:"),function(_46,_47,_48,_49){ +with(_46){ +if(!!_49||!_48){ +_4a(_46,_48); +}else{ +_4b(_46,_48); +} +objj_msgSendSuper({receiver:_46,super_class:objj_getClass("CPOutlineView").super_class},"reloadData"); +} +}),new objj_method(sel_getUid("itemAtRow:"),function(_4c,_4d,_4e){ +with(_4c){ +return _itemsForRows[_4e]||nil; +} +}),new objj_method(sel_getUid("rowForItem:"),function(_4f,_50,_51){ +with(_4f){ +if(!_51){ +return _rootItemInfo.row; +} +var _52=_itemInfosForItems[objj_msgSend(_51,"UID")]; +if(!_52){ +return CPNotFound; +} +return _52.row; +} +}),new objj_method(sel_getUid("setOutlineTableColumn:"),function(_53,_54,_55){ +with(_53){ +if(_outlineTableColumn===_55){ +return; +} +_outlineTableColumn=_55; +objj_msgSend(_53,"reloadData"); +} +}),new objj_method(sel_getUid("outlineTableColumn"),function(_56,_57){ +with(_56){ +return _outlineTableColumn; +} +}),new objj_method(sel_getUid("levelForItem:"),function(_58,_59,_5a){ +with(_58){ +if(!_5a){ +return _rootItemInfo.level; +} +var _5b=_itemInfosForItems[objj_msgSend(_5a,"UID")]; +if(!_5b){ +return CPNotFound; +} +return _5b.level; +} +}),new objj_method(sel_getUid("levelForRow:"),function(_5c,_5d,_5e){ +with(_5c){ +return objj_msgSend(_5c,"levelForItem:",objj_msgSend(_5c,"itemAtRow:",_5e)); +} +}),new objj_method(sel_getUid("setIndentationPerLevel:"),function(_5f,_60,_61){ +with(_5f){ +if(_indentationPerLevel===_61){ +return; +} +_indentationPerLevel=_61; +objj_msgSend(_5f,"reloadData"); +} +}),new objj_method(sel_getUid("indentationPerLevel"),function(_62,_63){ +with(_62){ +return _indentationPerLevel; +} +}),new objj_method(sel_getUid("setIndentationMarkerFollowsDataView:"),function(_64,_65,_66){ +with(_64){ +if(_indentationMarkerFollowsDataView===_66){ +return; +} +_indentationMarkerFollowsDataView=_66; +objj_msgSend(_64,"reloadData"); +} +}),new objj_method(sel_getUid("indentationMarkerFollowsDataView"),function(_67,_68){ +with(_67){ +return _indentationMarkerFollowsDataView; +} +}),new objj_method(sel_getUid("parentForItem:"),function(_69,_6a,_6b){ +with(_69){ +if(!_6b){ +return nil; +} +var _6c=_itemInfosForItems[objj_msgSend(_6b,"UID")]; +if(!_6c){ +return nil; +} +var _6d=_6c.parent; +if(_6c[objj_msgSend(_6d,"UID")]===_rootItemInfo){ +_6d=nil; +} +return _6d; +} +}),new objj_method(sel_getUid("frameOfOutlineDataViewAtColumn:row:"),function(_6e,_6f,_70,_71){ +with(_6e){ +var _72=objj_msgSendSuper({receiver:_6e,super_class:objj_getClass("CPOutlineView").super_class},"frameOfDataViewAtColumn:row:",_70,_71),_73=(objj_msgSend(_6e,"levelForRow:",_71)+1)*objj_msgSend(_6e,"indentationPerLevel"); +_72.origin.x+=_73; +_72.size.width-=_73; +return _72; +} +}),new objj_method(sel_getUid("_performSelection:forRow:context:"),function(_74,_75,_76,_77,_78){ +with(_74){ +objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPOutlineView").super_class},"_performSelection:forRow:context:",_76,_77,_78); +var _79=_disclosureControlsForRows[_77],_7a=_76?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_79,"performSelector:withObject:",CPSelectorFromString(_7a),CPThemeStateSelected); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_outlineViewDelegate===_7d){ +return; +} +var _7e=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_outlineViewDelegate){ +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidMove:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewColumnDidMoveNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidResize:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewColumnDidResizeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionDidChange:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewSelectionDidChangeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionIsChanging:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewSelectionIsChangingNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillExpand:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemWillExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidExpand:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemDidExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillCollapse:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemWillCollapseNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidCollapse:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemDidCollapseNotification,_7b); +} +} +_outlineViewDelegate=_7d; +_implementedOutlineViewDelegateMethods=0; +var _7f=[_b,sel_getUid("outlineView:dataViewForTableColumn:item:"),_c,sel_getUid("outlineView:didClickTableColumn:"),_d,sel_getUid("outlineView:didDragTableColumn:"),_e,sel_getUid("outlineView:heightOfRowByItem:"),_f,sel_getUid("outlineView:isGroupItem:"),_10,sel_getUid("outlineView:mouseDownInHeaderOfTableColumn:"),_11,sel_getUid("outlineView:nextTypeSelectMatchFromItem:toItem:forString:"),_12,sel_getUid("outlineView:selectionIndexesForProposedSelection:"),_13,sel_getUid("outlineView:shouldCollapseItem:"),_14,sel_getUid("outlineView:shouldEditTableColumn:item:"),_15,sel_getUid("outlineView:shouldExpandItem:"),_16,sel_getUid("outlineView:shouldReorderColumn:toColumn:"),_17,sel_getUid("outlineView:shouldSelectItem:"),_18,sel_getUid("outlineView:shouldSelectTableColumn:"),_19,sel_getUid("outlineView:shouldShowOutlineViewForItem:"),_1a,sel_getUid("outlineView:shouldShowViewExpansionForTableColumn:item:"),_1b,sel_getUid("outlineView:shouldTrackView:forTableColumn:item:"),_1c,sel_getUid("outlineView:shouldTypeSelectForEvent:withCurrentSearchString:"),_1d,sel_getUid("outlineView:sizeToFitWidthOfColumn:"),_1e,sel_getUid("outlineView:toolTipForView:rect:tableColumn:item:mouseLocation:"),_1f,sel_getUid("outlineView:typeSelectStringForTableColumn:item:"),_20,sel_getUid("outlineView:willDisplayOutlineView:forTableColumn:item:"),_21,sel_getUid("outlineView:willDisplayView:forTableColumn:item:"),_22,sel_getUid("selectionShouldChangeInOutlineView:")],_80=objj_msgSend(_7f,"count"); +for(var i=0;i<_80;i+=2){ +var _81=_7f[i],_82=_7f[i+1]; +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",_82)){ +_implementedOutlineViewDelegateMethods|=_81; +} +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidMove:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewColumnDidMove:"),CPOutlineViewColumnDidMoveNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidResize:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewColumnDidMove:"),CPOutlineViewColumnDidResizeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionDidChange:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewSelectionDidChange:"),CPOutlineViewSelectionDidChangeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionIsChanging:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewSelectionIsChanging:"),CPOutlineViewSelectionIsChangingNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillExpand:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemWillExpand:"),CPOutlineViewItemWillExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidExpand:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemDidExpand:"),CPOutlineViewItemDidExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillCollapse:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemWillCollapse:"),CPOutlineViewItemWillCollapseNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidCollapse:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemDidCollapse:"),CPOutlineViewItemDidCollapseNotification,_7b); +} +} +}),new objj_method(sel_getUid("delegate"),function(_83,_84){ +with(_83){ +return _outlineViewDelegate; +} +}),new objj_method(sel_getUid("setDisclosureControlPrototype:"),function(_85,_86,_87){ +with(_85){ +_disclosureControlPrototype=_87; +_disclosureControlData=nil; +_disclosureControlQueue=[]; +objj_msgSend(_85,"reloadData"); +} +}),new objj_method(sel_getUid("reloadData"),function(_88,_89){ +with(_88){ +objj_msgSend(_88,"reloadItem:reloadChildren:",nil,YES); +} +}),new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"),function(_8a,_8b,_8c,_8d){ +with(_8a){ +var _8e=objj_msgSend(_8a,"tableColumns")[_8c]; +if(_8e===_outlineTableColumn){ +return objj_msgSend(_8a,"frameOfOutlineDataViewAtColumn:row:",_8c,_8d); +} +return objj_msgSendSuper({receiver:_8a,super_class:objj_getClass("CPOutlineView").super_class},"frameOfDataViewAtColumn:row:",_8c,_8d); +} +}),new objj_method(sel_getUid("setDropItem:dropChildIndex:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_dropItem!==_91&&_92<0&&objj_msgSend(_8f,"isExpandable:",_91)&&!objj_msgSend(_8f,"isItemExpanded:",_91)){ +if(_dragHoverTimer){ +objj_msgSend(_dragHoverTimer,"invalidate"); +} +var _93=function(){ +if(_dropItem){ +objj_msgSend(_dropOperationFeedbackView,"blink"); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.3,objj_msgSend(_8f,"expandItem:",_dropItem),NO); +} +}; +_dragHoverTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.8,_93,NO); +} +if(_92>=0){ +objj_msgSend(_dragHoverTimer,"invalidate"); +_dragHoverTimer=nil; +} +_dropItem=_91; +_retargetedItem=_91; +_shouldRetargetItem=YES; +_retargedChildIndex=_92; +_shouldRetargetChildIndex=YES; +var _94=(_retargetedItem!==nil)?_itemInfosForItems[objj_msgSend(_retargetedItem,"UID")]:_rootItemInfo; +if(_retargedChildIndex===objj_msgSend(_94.children,"count")){ +var _95=objj_msgSend(_94.children,"lastObject"); +_retargetedDropRow=objj_msgSend(_8f,"rowForItem:",_95)+1; +}else{ +var _95=(_retargedChildIndex!==CPOutlineViewDropOnItemIndex)?_94.children[_retargedChildIndex]:_retargetedItem; +_retargetedDropRow=objj_msgSend(_8f,"rowForItem:",_95); +} +} +}),new objj_method(sel_getUid("_draggingEnded"),function(_96,_97){ +with(_96){ +objj_msgSendSuper({receiver:_96,super_class:objj_getClass("CPOutlineView").super_class},"_draggingEnded"); +_dropItem=nil; +objj_msgSend(_dragHoverTimer,"invalidate"); +_dragHoverTimer=nil; +} +}),new objj_method(sel_getUid("_parentItemForUpperRow:andLowerRow:atMouseOffset:"),function(_98,_99,_9a,_9b,_9c){ +with(_98){ +if(_shouldRetargetItem){ +return _retargetedItem; +} +var _9d=objj_msgSend(_98,"levelForRow:",_9b); +upperItem=objj_msgSend(_98,"itemAtRow:",_9a); +upperLevel=objj_msgSend(_98,"levelForItem:",upperItem); +while(upperLevel>_9d){ +upperLevel=objj_msgSend(_98,"levelForItem:",upperItem); +if(_9c.x>(upperLevel+1)*objj_msgSend(_98,"indentationPerLevel")){ +return objj_msgSend(_98,"parentForItem:",upperItem); +} +upperItem=objj_msgSend(_98,"parentForItem:",upperItem); +} +return objj_msgSend(_98,"parentForItem:",objj_msgSend(_98,"itemAtRow:",_9b)); +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"),function(_9e,_9f,_a0,_a1,_a2){ +with(_9e){ +var _a3=objj_msgSendSuper({receiver:_9e,super_class:objj_getClass("CPOutlineView").super_class},"_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:",_a0,_a1,_a2),_a4=objj_msgSend(_9e,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_a0,_a1,_a2),_a5=objj_msgSend(_9e,"levelForItem:",_a4); +_a3.origin.x=(_a5+1)*objj_msgSend(_9e,"indentationPerLevel"); +_a3.size.width-=_a3.origin.x; +return _a3; +} +}),new objj_method(sel_getUid("_loadDataViewsInRows:columns:"),function(_a6,_a7,_a8,_a9){ +with(_a6){ +objj_msgSendSuper({receiver:_a6,super_class:objj_getClass("CPOutlineView").super_class},"_loadDataViewsInRows:columns:",_a8,_a9); +var _aa=objj_msgSend(objj_msgSend(_a6,"tableColumns"),"indexOfObjectIdenticalTo:",objj_msgSend(_a6,"outlineTableColumn")); +if(!objj_msgSend(_a9,"containsIndex:",_aa)){ +return; +} +var _ab=[]; +objj_msgSend(_a8,"getIndexes:maxCount:inIndexRange:",_ab,-1,nil); +var _ac=0,_ad=_ab.length; +for(;_ac<_ad;++_ac){ +var row=_ab[_ac],_ae=_itemsForRows[row],_af=objj_msgSend(_a6,"isExpandable:",_ae); +if(!_af){ +continue; +} +var _b0=objj_msgSend(_a6,"_dequeueDisclosureControl"),_b1=objj_msgSend(_b0,"frame"),_b2=objj_msgSend(_a6,"frameOfDataViewAtColumn:row:",_aa,row); +_b1.origin.x=_indentationMarkerFollowsDataView?(_b2.origin.x)-(_b1.size.width):0; +_b1.origin.y=(_b2.origin.y); +_b1.size.height=(_b2.size.height); +_disclosureControlsForRows[row]=_b0; +objj_msgSend(_b0,"setState:",objj_msgSend(_a6,"isItemExpanded:",_ae)?CPOnState:CPOffState); +var _b3=objj_msgSend(_a6,"isRowSelected:",row)?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_b0,"performSelector:withObject:",CPSelectorFromString(_b3),CPThemeStateSelected); +objj_msgSend(_b0,"setFrame:",_b1); +objj_msgSend(_a6,"addSubview:",_b0); +} +} +}),new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"),function(_b4,_b5,_b6,_b7){ +with(_b4){ +objj_msgSendSuper({receiver:_b4,super_class:objj_getClass("CPOutlineView").super_class},"_unloadDataViewsInRows:columns:",_b6,_b7); +var _b8=objj_msgSend(objj_msgSend(_b4,"tableColumns"),"indexOfObjectIdenticalTo:",objj_msgSend(_b4,"outlineTableColumn")); +if(!objj_msgSend(_b7,"containsIndex:",_b8)){ +return; +} +var _b9=[]; +objj_msgSend(_b6,"getIndexes:maxCount:inIndexRange:",_b9,-1,nil); +var _ba=0,_bb=_b9.length; +for(;_ba<_bb;++_ba){ +var row=_b9[_ba],_bc=_disclosureControlsForRows[row]; +if(!_bc){ +continue; +} +objj_msgSend(_bc,"removeFromSuperview"); +objj_msgSend(_b4,"_enqueueDisclosureControl:",_bc); +_disclosureControlsForRows[row]=nil; +} +} +}),new objj_method(sel_getUid("_toggleFromDisclosureControl:"),function(_bd,_be,_bf){ +with(_bd){ +var _c0=objj_msgSend(_bf,"frame"),_c1=objj_msgSend(_bd,"itemAtRow:",objj_msgSend(_bd,"rowAtPoint:",{x:(_c0.origin.x),y:(_c0.origin.y+(_c0.size.height)/2)})); +if(objj_msgSend(_bd,"isItemExpanded:",_c1)){ +objj_msgSend(_bd,"collapseItem:",_c1); +}else{ +objj_msgSend(_bd,"expandItem:",_c1); +} +} +}),new objj_method(sel_getUid("_enqueueDisclosureControl:"),function(_c2,_c3,_c4){ +with(_c2){ +_disclosureControlQueue.push(_c4); +} +}),new objj_method(sel_getUid("_dequeueDisclosureControl"),function(_c5,_c6){ +with(_c5){ +if(_disclosureControlQueue.length){ +return _disclosureControlQueue.pop(); +} +if(!_disclosureControlData){ +if(!_disclosureControlPrototype){ +return nil; +}else{ +_disclosureControlData=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_disclosureControlPrototype); +} +} +var _c7=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_disclosureControlData); +objj_msgSend(_c7,"setTarget:",_c5); +objj_msgSend(_c7,"setAction:",sel_getUid("_toggleFromDisclosureControl:")); +return _c7; +} +}),new objj_method(sel_getUid("_noteSelectionIsChanging"),function(_c8,_c9){ +with(_c8){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewSelectionIsChangingNotification,_c8,nil); +} +}),new objj_method(sel_getUid("_noteSelectionDidChange"),function(_ca,_cb){ +with(_ca){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewSelectionDidChangeNotification,_ca,nil); +} +}),new objj_method(sel_getUid("_noteItemWillExpand:"),function(_cc,_cd,_ce){ +with(_cc){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemWillExpandNotification,_cc,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_ce,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemDidExpand:"),function(_cf,_d0,_d1){ +with(_cf){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemDidExpandNotification,_cf,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d1,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemWillCollapse:"),function(_d2,_d3,_d4){ +with(_d2){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemWillCollapseNotification,_d2,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d4,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemDidCollapse:"),function(_d5,_d6,_d7){ +with(_d5){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemDidCollapseNotification,_d5,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d7,"CPObject")); +} +})]); +var _4b=function(_d8,_d9){ +if(!_d9){ +return; +} +with(_d8){ +var _da=_itemInfosForItems,_db=_outlineViewDataSource,_dc=objj_msgSend(_d9,"UID"),_dd=_da[_dc]; +if(!_dd){ +return []; +} +var _de=_dd.parent,_df=_de?_da[objj_msgSend(_de,"UID")]:_rootItemInfo,_e0=_df.children,_e1=objj_msgSend(_e0,"indexOfObjectIdenticalTo:",_d9),_e2=objj_msgSend(_db,"outlineView:child:ofItem:",_d8,_e1,_de); +if(_d9!==_e2){ +_da[objj_msgSend(_d9,"UID")]=nil; +_da[objj_msgSend(_e2,"UID")]=_dd; +_e0[_e1]=_e2; +_itemsForRows[_dd.row]=_e2; +} +_dd.isExpandable=objj_msgSend(_db,"outlineView:isItemExpandable:",_d8,_e2); +_dd.isExpanded=_dd.isExpandable&&_dd.isExpanded; +} +}; +var _4a=function(_e3,_e4,_e5){ +with(_e3){ +var _e6=_itemInfosForItems,_e7=_outlineViewDataSource; +if(!_e4){ +var _e8=_rootItemInfo; +}else{ +var _e9=objj_msgSend(_e4,"UID"),_e8=_e6[_e9]; +if(!_e8){ +return []; +} +_e8.isExpandable=objj_msgSend(_e7,"outlineView:isItemExpandable:",_e3,_e4); +if(!_e8.isExpandable&&_e8.isExpanded){ +_e8.isExpanded=NO; +_e8.children=[]; +} +} +var _ea=_e8.weight,_eb=_e4?[_e4]:[]; +if(_e8.isExpanded&&(!(_implementedOutlineViewDataSourceMethods&_2)||!objj_msgSend(_e7,"outlineView:shouldDeferDisplayingChildrenOfItem:",_e3,_e4))){ +var _ec=0,_ed=objj_msgSend(_e7,"outlineView:numberOfChildrenOfItem:",_e3,_e4),_ee=_e8.level+1; +_e8.children=[]; +for(;_ec<_ed;++_ec){ +var _ef=objj_msgSend(_e7,"outlineView:child:ofItem:",_e3,_ec,_e4),_f0=_e6[objj_msgSend(_ef,"UID")]; +if(!_f0){ +_f0={isExpanded:NO,isExpandable:NO,children:[],weight:1}; +_e6[objj_msgSend(_ef,"UID")]=_f0; +} +_e8.children[_ec]=_ef; +var _f1=_4a(_e3,_ef,YES); +_f0.parent=_e4; +_f0.level=_ee; +_eb=_eb.concat(_f1); +} +} +_e8.weight=_eb.length; +if(!_e5){ +var _ec=MAX(_e8.row,0),_f2=_itemsForRows; +_eb.unshift(_ec,_ea); +_f2.splice.apply(_f2,_eb); +var _ed=_f2.length; +for(;_ec<_ed;++_ec){ +_e6[objj_msgSend(_f2[_ec],"UID")].row=_ec; +} +var _f3=_e8.weight-_ea; +if(_f3!==0){ +var _f4=_e8.parent; +while(_f4){ +var _f5=_e6[objj_msgSend(_f4,"UID")]; +_f5.weight+=_f3; +_f4=_f5.parent; +} +if(_e4){ +_rootItemInfo.weight+=_f3; +} +} +} +} +return _eb; +}; +var _23=objj_allocateClassPair(CPObject,"_CPOutlineViewTableViewDataSource"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineView")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithOutlineView:"),function(_f6,_f7,_f8){ +with(_f6){ +_f6=objj_msgSendSuper({receiver:_f6,super_class:objj_getClass("_CPOutlineViewTableViewDataSource").super_class},"init"); +if(_f6){ +_outlineView=_f8; +} +return _f6; +} +}),new objj_method(sel_getUid("numberOfRowsInTableView:"),function(_f9,_fa,_fb){ +with(_f9){ +return _outlineView._itemsForRows.length; +} +}),new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"),function(_fc,_fd,_fe,_ff,aRow){ +with(_fc){ +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:objectValueForTableColumn:byItem:",_outlineView,_ff,_outlineView._itemsForRows[aRow]); +} +}),new objj_method(sel_getUid("tableView:setObjectValue:forTableColumn:row:"),function(self,_100,_101,_102,_103,aRow){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_1)){ +return; +} +objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:setObjectValue:forTableColumn:byItem:",_outlineView,_102,_103,_outlineView._itemsForRows[aRow]); +} +}),new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"),function(self,_104,_105,_106,_107){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_9)){ +return NO; +} +var _108=[]; +objj_msgSend(_106,"getIndexes:maxCount:inIndexRange:",_108,objj_msgSend(_106,"count"),nil); +var _109=objj_msgSend(_108,"count"),_10a=[]; +while(_109--){ +objj_msgSend(_10a,"addObject:",objj_msgSend(_outlineView,"itemAtRow:",objj_msgSend(_108,"objectAtIndex:",_109))); +} +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:writeItems:toPasteboard:",_outlineView,_10a,_107); +} +}),new objj_method(sel_getUid("_childIndexForDropOperation:row:offset:"),function(self,_10b,_10c,_10d,_10e){ +with(self){ +if(_outlineView._shouldRetargetChildIndex){ +return _outlineView._retargedChildIndex; +} +var _10f=CPNotFound; +if(_10c===CPTableViewDropAbove){ +var _110=objj_msgSend(_outlineView,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_10d-1,_10d,_10e),_111=(_110!==nil)?_outlineView._itemInfosForItems[objj_msgSend(_110,"UID")]:_outlineView._rootItemInfo,_112=_111.children; +_10f=objj_msgSend(_112,"indexOfObject:",objj_msgSend(_outlineView,"itemAtRow:",_10d)); +if(_10f===CPNotFound){ +_10f=_112.length; +} +}else{ +if(_10c===CPTableViewDropOn){ +_10f=-1; +} +} +return _10f; +} +}),new objj_method(sel_getUid("_parentItemForDropOperation:row:offset:"),function(self,_113,_114,_115,_116){ +with(self){ +if(_114===CPTableViewDropAbove){ +return objj_msgSend(_outlineView,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_115-1,_115,_116); +} +return objj_msgSend(_outlineView,"itemAtRow:",_115); +} +}),new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"),function(self,_117,_118,_119,_11a,_11b){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_4)){ +return CPDragOperationNone; +} +_outlineView._retargetedItem=nil; +_outlineView._shouldRetargetItem=NO; +_outlineView._retargedChildIndex=nil; +_outlineView._shouldRetargetChildIndex=NO; +var _11c=objj_msgSend(_outlineView,"convertPoint:fromView:",objj_msgSend(_119,"draggingLocation"),nil),_11d=objj_msgSend(self,"_parentItemForDropOperation:row:offset:",_11b,_11a,_11c),_11e=objj_msgSend(self,"_childIndexForDropOperation:row:offset:",_11b,_11a,_11c); +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:validateDrop:proposedItem:proposedChildIndex:",_outlineView,_119,_11d,_11e); +} +}),new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"),function(self,_11f,_120,_121,_122,_123){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_3)){ +return NO; +} +var _124=objj_msgSend(_outlineView,"convertPoint:fromView:",objj_msgSend(_121,"draggingLocation"),nil),_125=objj_msgSend(self,"_parentItemForDropOperation:row:offset:",_123,_122,_124); +childIndex=objj_msgSend(self,"_childIndexForDropOperation:row:offset:",_123,_122,_124); +_outlineView._retargetedItem=nil; +_outlineView._shouldRetargetItem=NO; +_outlineView._retargedChildIndex=nil; +_outlineView._shouldRetargetChildIndex=NO; +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:acceptDrop:item:childIndex:",_outlineView,_121,_125,childIndex); +} +})]); +var _23=objj_allocateClassPair(CPObject,"_CPOutlineViewTableViewDelegate"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineView")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithOutlineView:"),function(self,_126,_127){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPOutlineViewTableViewDelegate").super_class},"init"); +if(self){ +_outlineView=_127; +} +return self; +} +}),new objj_method(sel_getUid("tableView:dataViewForTableColumn:row:"),function(self,_128,_129,_12a,_12b){ +with(self){ +var _12c=nil; +if((_outlineView._implementedOutlineViewDelegateMethods&_b)){ +_12c=objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:dataViewForTableColumn:item:",_outlineView,_12a,objj_msgSend(_outlineView,"itemAtRow:",_12b)); +} +if(!_12c){ +_12c=objj_msgSend(_12a,"dataViewForRow:",_12b); +} +return _12c; +} +}),new objj_method(sel_getUid("tableView:shouldSelectRow:"),function(self,_12d,_12e,_12f){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_17)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:shouldSelectItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",_12f)); +} +return YES; +} +}),new objj_method(sel_getUid("tableView:shouldEditTableColumn:row:"),function(self,_130,_131,_132,aRow){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_14)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:shouldEditTableColumn:item:",_outlineView,_132,objj_msgSend(_outlineView,"itemAtRow:",aRow)); +} +return NO; +} +}),new objj_method(sel_getUid("tableView:heightOfRow:"),function(self,_133,_134,_135){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_e)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:heightOfRowByItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",_135)); +} +return objj_msgSend(_134,"rowHeight"); +} +}),new objj_method(sel_getUid("tableView:willDisplayView:forTableColumn:row:"),function(self,_136,_137,_138,_139,_13a){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_21)){ +var item=objj_msgSend(_outlineView,"itemAtRow:",_13a); +objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:willDisplayView:forTableColumn:item:",_outlineView,_138,_139,item); +} +} +}),new objj_method(sel_getUid("tableView:isGroupRow:"),function(self,_13b,_13c,row){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_f)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:isGroupItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",theRow)); +} +return NO; +} +})]); +var _23=objj_allocateClassPair(CPButton,"CPDisclosureButton"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_angle")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithFrame:"),function(self,_13d,_13e){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPDisclosureButton").super_class},"initWithFrame:",_13e); +if(self){ +objj_msgSend(self,"setBordered:",NO); +} +return self; +} +}),new objj_method(sel_getUid("setState:"),function(self,_13f,_140){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPDisclosureButton").super_class},"setState:",_140); +if(objj_msgSend(self,"state")===CPOnState){ +_angle=0; +}else{ +_angle=-PI_2; +} +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_141,_142){ +with(self){ +var _143=objj_msgSend(self,"bounds"),_144=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(_144); +CGContextTranslateCTM(_144,(_143.size.width)/2,(_143.size.height)/2); +CGContextRotateCTM(_144,_angle); +CGContextTranslateCTM(_144,-(_143.size.width)/2,-(_143.size.height)/2); +CGContextTranslateCTM(_144,FLOOR(((_143.size.width)-9)/2),FLOOR(((_143.size.height)-8)/2)); +CGContextMoveToPoint(_144,0,0); +CGContextAddLineToPoint(_144,9,0); +CGContextAddLineToPoint(_144,4.5,8); +CGContextAddLineToPoint(_144,0,0); +CGContextClosePath(_144); +CGContextSetFillColor(_144,_145(objj_msgSend(self,"hasThemeState:",CPThemeStateSelected),objj_msgSend(self,"hasThemeState:",CPThemeStateHighlighted))); +CGContextFillPath(_144); +CGContextBeginPath(_144); +CGContextMoveToPoint(_144,0,0); +if(_angle===0){ +CGContextAddLineToPoint(_144,4.5,8); +CGContextAddLineToPoint(_144,9,0); +}else{ +CGContextAddLineToPoint(_144,4.5,8); +} +CGContextSetStrokeColor(_144,objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1,0.8)); +CGContextStrokePath(_144); +} +})]); +var _146="CPOutlineViewIndentationPerLevelKey",_147="CPOutlineViewOutlineTableColumnKey",_148="CPOutlineViewDataSourceKey",_149="CPOutlineViewDelegateKey"; +var _23=objj_getClass("CPOutlineView"); +if(!_23){ +throw new SyntaxError("*** Could not find definition for class \"CPOutlineView\""); +} +var _24=_23.isa; +class_addMethods(_23,[new objj_method(sel_getUid("initWithCoder:"),function(self,_14a,_14b){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"initWithCoder:",_14b); +if(self){ +_rootItemInfo={isExpanded:YES,isExpandable:NO,level:-1,row:-1,children:[],weight:0}; +_itemsForRows=[]; +_itemInfosForItems={}; +_disclosureControlsForRows=[]; +objj_msgSend(self,"setIndentationMarkerFollowsDataView:",YES); +objj_msgSend(self,"setDisclosureControlPrototype:",objj_msgSend(objj_msgSend(CPDisclosureButton,"alloc"),"initWithFrame:",CGRectMake(0,0,10,10))); +_outlineTableColumn=objj_msgSend(_14b,"decodeObjectForKey:",_147); +_indentationPerLevel=objj_msgSend(_14b,"decodeFloatForKey:",_146); +_outlineViewDataSource=objj_msgSend(_14b,"decodeObjectForKey:",_148); +_outlineViewDelegate=objj_msgSend(_14b,"decodeObjectForKey:",_149); +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"setDataSource:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource,"alloc"),"initWithOutlineView:",self)); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_14c,_14d){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"encodeWithCoder:",_14d); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineTableColumn,_147); +objj_msgSend(_14d,"encodeFloat:forKey:",_indentationPerLevel,_146); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineViewDataSource,_148); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineViewDelegate,_149); +} +})]); +var _145=function(_14e,_14f){ +return _14e?(_14f?objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.9,1):objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1,1)):(_14f?objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.4,1):objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.5,1)); +}; +p;9;CPPanel.jt;1172;@STATIC;1.0;i;10;CPWindow.jt;1138; +objj_executeFile("CPWindow.j",YES); +CPOKButton=1; +CPCancelButton=0; +CPDocModalWindowMask=1<<6; +var _1=objj_allocateClassPair(CPWindow,"CPPanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_becomesKeyOnlyIfNeeded"),new objj_ivar("_worksWhenModal")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isFloatingPanel"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"level")==CPFloatingWindowLevel; +} +}),new objj_method(sel_getUid("setFloatingPanel:"),function(_5,_6,_7){ +with(_5){ +objj_msgSend(_5,"setLevel:",_7?CPFloatingWindowLevel:CPNormalWindowLevel); +} +}),new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"),function(_8,_9){ +with(_8){ +return _becomesKeyOnlyIfNeeded; +} +}),new objj_method(sel_getUid("setBecomesKeyOnlyIfNeeded:"),function(_a,_b,_c){ +with(_a){ +_becomesKeyOnlyIfNeeded=_c; +} +}),new objj_method(sel_getUid("worksWhenModal"),function(_d,_e){ +with(_d){ +return _worksWhenModal; +} +}),new objj_method(sel_getUid("setWorksWhenModal:"),function(_f,_10,_11){ +with(_f){ +_worksWhenModal=_11; +} +}),new objj_method(sel_getUid("canBecomeMainWindow"),function(_12,_13){ +with(_12){ +return NO; +} +})]); +p;14;CPPasteboard.jt;8393;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;40;Foundation/CPPropertyListSerialization.jt;8248; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPPropertyListSerialization.j",NO); +CPGeneralPboard="CPGeneralPboard"; +CPFontPboard="CPFontPboard"; +CPRulerPboard="CPRulerPboard"; +CPFindPboard="CPFindPboard"; +CPDragPboard="CPDragPboard"; +CPColorPboardType="CPColorPboardType"; +CPFilenamesPboardType="CPFilenamesPboardType"; +CPFontPboardType="CPFontPboardType"; +CPHTMLPboardType="CPHTMLPboardType"; +CPStringPboardType="CPStringPboardType"; +CPURLPboardType="CPURLPboardType"; +CPImagesPboardType="CPImagesPboardType"; +CPVideosPboardType="CPVideosPboardType"; +UTF8PboardType="public.utf8-plain-text"; +CPImagePboardType="CPImagePboardType"; +var _1=nil,_2=NO; +var _3=objj_allocateClassPair(CPObject,"CPPasteboard"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_types"),new objj_ivar("_owners"),new objj_ivar("_provided"),new objj_ivar("_changeCount"),new objj_ivar("_stateUID"),new objj_ivar("_nativePasteboard")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("_initWithName:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPPasteboard").super_class},"init"); +if(_5){ +_name=_7; +_types=[]; +_owners=objj_msgSend(CPDictionary,"dictionary"); +_provided=objj_msgSend(CPDictionary,"dictionary"); +_changeCount=0; +if(_2){ +_nativePasteboard=window.cpPasteboardWithName(_7); +objj_msgSend(_5,"_synchronizePasteboard"); +} +} +return _5; +} +}),new objj_method(sel_getUid("addTypes:owner:"),function(_8,_9,_a,_b){ +with(_8){ +var i=0,_c=_a.length; +for(;i<_c;++i){ +var _d=_a[i]; +if(!objj_msgSend(_owners,"objectForKey:",_d)){ +objj_msgSend(_types,"addObject:",_d); +objj_msgSend(_provided,"removeObjectForKey:",_d); +} +objj_msgSend(_owners,"setObject:forKey:",_b,_d); +} +if(_nativePasteboard){ +var _e=objj_msgSend(_a,"copy"); +if(objj_msgSend(_a,"containsObject:",CPStringPboardType)){ +_e.push(UTF8PboardType); +} +_nativePasteboard.addTypes_(_e); +} +return ++_changeCount; +} +}),new objj_method(sel_getUid("declareTypes:owner:"),function(_f,_10,_11,_12){ +with(_f){ +objj_msgSend(_f,"_declareTypes:owner:updateNativePasteboard:",_11,_12,YES); +} +}),new objj_method(sel_getUid("_declareTypes:owner:updateNativePasteboard:"),function(_13,_14,_15,_16,_17){ +with(_13){ +objj_msgSend(_types,"setArray:",_15); +_owners=objj_msgSend(CPDictionary,"dictionary"); +_provided=objj_msgSend(CPDictionary,"dictionary"); +var _18=_types.length; +while(_18--){ +objj_msgSend(_owners,"setObject:forKey:",_16,_types[_18]); +} +if(_nativePasteboard&&_17){ +var _19=objj_msgSend(_15,"copy"); +if(objj_msgSend(_15,"containsObject:",CPStringPboardType)){ +_19.push(UTF8PboardType); +} +_nativePasteboard.declareTypes_(_19); +_changeCount=_nativePasteboard.changeCount(); +} +return ++_changeCount; +} +}),new objj_method(sel_getUid("setData:forType:"),function(_1a,_1b,_1c,_1d){ +with(_1a){ +objj_msgSend(_provided,"setObject:forKey:",_1c,_1d); +if(_1d===CPStringPboardType){ +objj_msgSend(_1a,"setData:forType:",_1c,UTF8PboardType); +} +return YES; +} +}),new objj_method(sel_getUid("setPropertyList:forType:"),function(_1e,_1f,_20,_21){ +with(_1e){ +return objj_msgSend(_1e,"setData:forType:",objj_msgSend(CPPropertyListSerialization,"dataFromPropertyList:format:",_20,CPPropertyList280NorthFormat_v1_0),_21); +} +}),new objj_method(sel_getUid("setString:forType:"),function(_22,_23,_24,_25){ +with(_22){ +objj_msgSend(_22,"setPropertyList:forType:",_24,_25); +} +}),new objj_method(sel_getUid("availableTypeFromArray:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"types"),"firstObjectCommonWithArray:",_28); +} +}),new objj_method(sel_getUid("types"),function(_29,_2a){ +with(_29){ +objj_msgSend(_29,"_synchronizePasteboard"); +return _types; +} +}),new objj_method(sel_getUid("changeCount"),function(_2b,_2c){ +with(_2b){ +return _changeCount; +} +}),new objj_method(sel_getUid("dataForType:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_provided,"objectForKey:",_2f); +if(_30){ +return _30; +} +var _31=objj_msgSend(_owners,"objectForKey:",_2f); +if(_31){ +objj_msgSend(_31,"pasteboard:provideDataForType:",_2d,_2f); +return objj_msgSend(_provided,"objectForKey:",_2f); +} +if(_2f===CPStringPboardType){ +return objj_msgSend(_2d,"dataForType:",UTF8PboardType); +} +return nil; +} +}),new objj_method(sel_getUid("_synchronizePasteboard"),function(_32,_33){ +with(_32){ +if(_nativePasteboard&&_nativePasteboard.changeCount()>_changeCount){ +var _34=objj_msgSend(_nativePasteboard.types(),"copy"); +if(objj_msgSend(_34,"containsObject:",UTF8PboardType)){ +_34.push(CPStringPboardType); +} +objj_msgSend(_32,"_declareTypes:owner:updateNativePasteboard:",_34,_32,NO); +_changeCount=_nativePasteboard.changeCount(); +} +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_35,_36,_37,_38){ +with(_35){ +if(_38===CPStringPboardType){ +var _39=_nativePasteboard.stringForType_(UTF8PboardType); +objj_msgSend(_35,"setString:forType:",_39,CPStringPboardType); +objj_msgSend(_35,"setString:forType:",_39,UTF8PboardType); +}else{ +objj_msgSend(_35,"setString:forType:",_nativePasteboard.stringForType_(_38),_38); +} +} +}),new objj_method(sel_getUid("propertyListForType:"),function(_3a,_3b,_3c){ +with(_3a){ +var _3d=objj_msgSend(_3a,"dataForType:",_3c); +if(_3d){ +return objj_msgSend(CPPropertyListSerialization,"propertyListFromData:format:",_3d,CPPropertyList280NorthFormat_v1_0); +} +return nil; +} +}),new objj_method(sel_getUid("stringForType:"),function(_3e,_3f,_40){ +with(_3e){ +return objj_msgSend(_3e,"propertyListForType:",_40); +} +}),new objj_method(sel_getUid("_generateStateUID"),function(_41,_42){ +with(_41){ +var _43=32; +_stateUID=""; +while(_43--){ +_stateUID+=FLOOR(RAND()*16).toString(16).toUpperCase(); +} +return _stateUID; +} +}),new objj_method(sel_getUid("_stateUID"),function(_44,_45){ +with(_44){ +return _stateUID; +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_46,_47){ +with(_46){ +if(_46!=objj_msgSend(CPPasteboard,"class")){ +return; +} +objj_msgSend(_46,"setVersion:",1); +_1=objj_msgSend(CPDictionary,"dictionary"); +if(typeof window.cpPasteboardWithName!=="undefined"){ +_2=YES; +} +} +}),new objj_method(sel_getUid("generalPasteboard"),function(_48,_49){ +with(_48){ +return objj_msgSend(CPPasteboard,"pasteboardWithName:",CPGeneralPboard); +} +}),new objj_method(sel_getUid("pasteboardWithName:"),function(_4a,_4b,_4c){ +with(_4a){ +var _4d=objj_msgSend(_1,"objectForKey:",_4c); +if(_4d){ +return _4d; +} +_4d=objj_msgSend(objj_msgSend(CPPasteboard,"alloc"),"_initWithName:",_4c); +objj_msgSend(_1,"setObject:forKey:",_4d,_4c); +return _4d; +} +})]); +var _4e=nil; +var _3=objj_allocateClassPair(CPPasteboard,"_CPDOMDataTransferPasteboard"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_dataTransfer")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("_setDataTransfer:"),function(_4f,_50,_51){ +with(_4f){ +_dataTransfer=_51; +} +}),new objj_method(sel_getUid("_setPasteboard:"),function(_52,_53,_54){ +with(_52){ +_dataTransfer.clearData(); +var _55=objj_msgSend(_54,"types"),_56=_55.length; +while(_56--){ +var _57=_55[_56]; +if(_57===CPStringPboardType){ +_dataTransfer.setData(_57,objj_msgSend(_54,"stringForType:",_57)); +}else{ +_dataTransfer.setData(_57,objj_msgSend(objj_msgSend(_54,"dataForType:",_57),"rawString")); +} +} +} +}),new objj_method(sel_getUid("types"),function(_58,_59){ +with(_58){ +return Array.prototype.slice.apply(_dataTransfer.types); +} +}),new objj_method(sel_getUid("dataForType:"),function(_5a,_5b,_5c){ +with(_5a){ +var _5d=_dataTransfer.getData(_5c); +if(_5c===CPStringPboardType){ +return objj_msgSend(CPData,"dataFromPropertyList:format:",_5d,kCFPropertyList280NorthFormat_v1_0); +} +return objj_msgSend(CPData,"dataWithRawString:",_5d); +} +}),new objj_method(sel_getUid("propertyListForType:"),function(_5e,_5f,_60){ +with(_5e){ +if(_60===CPStringPboardType){ +return _dataTransfer.getData(_60); +} +return objj_msgSend(CPPropertyListSerialization,"propertyListFromData:format:",objj_msgSend(_5e,"dataForType:",_60),CPPropertyListUnknownFormat); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("DOMDataTransferPasteboard"),function(_61,_62){ +with(_61){ +if(!_4e){ +_4e=objj_msgSend(objj_msgSend(_CPDOMDataTransferPasteboard,"alloc"),"init"); +} +return _4e; +} +})]); +p;15;CPPopUpButton.jt;13484;@STATIC;1.0;i;10;CPButton.ji;12;CPGeometry.ji;8;CPMenu.ji;12;CPMenuItem.jt;13403; +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPMenuItem.j",YES); +var _1=7; +CPPopUpButtonStatePullsDown=CPThemeState("pulls-down"); +var _2=objj_allocateClassPair(CPButton,"CPPopUpButton"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_selectedIndex"),new objj_ivar("_preferredEdge"),new objj_ivar("_menu")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:pullsDown:"),function(_4,_5,_6,_7){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPPopUpButton").super_class},"initWithFrame:",_6); +if(_4){ +_selectedIndex=CPNotFound; +_preferredEdge=CPMaxYEdge; +objj_msgSend(_4,"setValue:forThemeAttribute:",CPImageLeft,"image-position"); +objj_msgSend(_4,"setValue:forThemeAttribute:",CPLeftTextAlignment,"alignment"); +objj_msgSend(_4,"setValue:forThemeAttribute:",CPLineBreakByTruncatingTail,"line-break-mode"); +objj_msgSend(_4,"setMenu:",objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","")); +objj_msgSend(_4,"setPullsDown:",_7); +} +return _4; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(_8,"initWithFrame:pullsDown:",_a,NO); +} +}),new objj_method(sel_getUid("setPullsDown:"),function(_b,_c,_d){ +with(_b){ +if(_d){ +var _e=objj_msgSend(_b,"setThemeState:",CPPopUpButtonStatePullsDown); +}else{ +var _e=objj_msgSend(_b,"unsetThemeState:",CPPopUpButtonStatePullsDown); +} +if(!_e){ +return; +} +var _f=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_f,"count")<=0){ +return; +} +objj_msgSend(_f[0],"setHidden:",objj_msgSend(_b,"pullsDown")); +objj_msgSend(_b,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("pullsDown"),function(_10,_11){ +with(_10){ +return objj_msgSend(_10,"hasThemeState:",CPPopUpButtonStatePullsDown); +} +}),new objj_method(sel_getUid("addItem:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_menu,"addItem:",_14); +} +}),new objj_method(sel_getUid("addItemWithTitle:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_menu,"addItemWithTitle:action:keyEquivalent:",_17,NULL,nil); +} +}),new objj_method(sel_getUid("addItemsWithTitles:"),function(_18,_19,_1a){ +with(_18){ +var _1b=0,_1c=objj_msgSend(_1a,"count"); +for(;_1b<_1c;++_1b){ +objj_msgSend(_18,"addItemWithTitle:",_1a[_1b]); +} +} +}),new objj_method(sel_getUid("insertItemWithTitle:atIndex:"),function(_1d,_1e,_1f,_20){ +with(_1d){ +var _21=objj_msgSend(_1d,"itemArray"),_22=objj_msgSend(_21,"count"); +while(_22--){ +if(objj_msgSend(_21[_22],"title")==_1f){ +objj_msgSend(_1d,"removeItemAtIndex:",_22); +} +} +objj_msgSend(_menu,"insertItemWithTitle:action:keyEquivalent:atIndex:",_1f,NULL,nil,_20); +} +}),new objj_method(sel_getUid("removeAllItems"),function(_23,_24){ +with(_23){ +var _25=objj_msgSend(_menu,"numberOfItems"); +while(_25--){ +objj_msgSend(_menu,"removeItemAtIndex:",0); +} +} +}),new objj_method(sel_getUid("removeItemWithTitle:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(_26,"removeItemAtIndex:",objj_msgSend(_26,"indexOfItemWithTitle:",_28)); +objj_msgSend(_26,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_menu,"removeItemAtIndex:",_2b); +objj_msgSend(_29,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("selectedItem"),function(_2c,_2d){ +with(_2c){ +if(_selectedIndex<0||_selectedIndex>objj_msgSend(_2c,"numberOfItems")-1){ +return nil; +} +return objj_msgSend(_menu,"itemAtIndex:",_selectedIndex); +} +}),new objj_method(sel_getUid("titleOfSelectedItem"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(objj_msgSend(_2e,"selectedItem"),"title"); +} +}),new objj_method(sel_getUid("indexOfSelectedItem"),function(_30,_31){ +with(_30){ +return _selectedIndex; +} +}),new objj_method(sel_getUid("objectValue"),function(_32,_33){ +with(_32){ +return _selectedIndex; +} +}),new objj_method(sel_getUid("selectItem:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_34,"selectItemAtIndex:",objj_msgSend(_34,"indexOfItem:",_36)); +} +}),new objj_method(sel_getUid("selectItemAtIndex:"),function(_37,_38,_39){ +with(_37){ +if(_selectedIndex==_39){ +return; +} +if(_selectedIndex>=0&&!objj_msgSend(_37,"pullsDown")){ +objj_msgSend(objj_msgSend(_37,"selectedItem"),"setState:",CPOffState); +} +_selectedIndex=_39; +if(_selectedIndex>=0&&!objj_msgSend(_37,"pullsDown")){ +objj_msgSend(objj_msgSend(_37,"selectedItem"),"setState:",CPOnState); +} +objj_msgSend(_37,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("selectItemWithTag:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSend(_3a,"selectItemAtIndex:",objj_msgSend(_3a,"indexOfItemWithTag:",_3c)); +} +}),new objj_method(sel_getUid("selectItemWithTitle:"),function(_3d,_3e,_3f){ +with(_3d){ +objj_msgSend(_3d,"selectItemAtIndex:",objj_msgSend(_3d,"indexOfItemWithTitle:",_3f)); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"selectItemAtIndex:",objj_msgSend(_42,"intValue")); +} +}),new objj_method(sel_getUid("menu"),function(_43,_44){ +with(_43){ +return _menu; +} +}),new objj_method(sel_getUid("setMenu:"),function(_45,_46,_47){ +with(_45){ +if(_menu===_47){ +return; +} +var _48=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_menu){ +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidAddItemNotification,_menu); +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidRemoveItemNotification,_menu); +} +_menu=_47; +if(_menu){ +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidAddItem:"),CPMenuDidAddItemNotification,_menu); +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidChangeItem:"),CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidRemoveItem:"),CPMenuDidRemoveItemNotification,_menu); +} +objj_msgSend(_45,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("numberOfItems"),function(_49,_4a){ +with(_49){ +return objj_msgSend(_menu,"numberOfItems"); +} +}),new objj_method(sel_getUid("itemArray"),function(_4b,_4c){ +with(_4b){ +return objj_msgSend(_menu,"itemArray"); +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_4d,_4e,_4f){ +with(_4d){ +return objj_msgSend(_menu,"itemAtIndex:",_4f); +} +}),new objj_method(sel_getUid("itemTitleAtIndex:"),function(_50,_51,_52){ +with(_50){ +return objj_msgSend(objj_msgSend(_menu,"itemAtIndex:",_52),"title"); +} +}),new objj_method(sel_getUid("itemTitles"),function(_53,_54){ +with(_53){ +var _55=[],_56=objj_msgSend(_53,"itemArray"),_57=0,_58=objj_msgSend(_56,"count"); +for(;_57<_58;++_57){ +_55.push(objj_msgSend(_56[_57],"title")); +} +return _55; +} +}),new objj_method(sel_getUid("itemWithTitle:"),function(_59,_5a,_5b){ +with(_59){ +return objj_msgSend(_menu,"itemAtIndex:",objj_msgSend(_menu,"indexOfItemWithTitle:",_5b)); +} +}),new objj_method(sel_getUid("lastItem"),function(_5c,_5d){ +with(_5c){ +return objj_msgSend(objj_msgSend(_menu,"itemArray"),"lastObject"); +} +}),new objj_method(sel_getUid("indexOfItem:"),function(_5e,_5f,_60){ +with(_5e){ +return objj_msgSend(_menu,"indexOfItem:",_60); +} +}),new objj_method(sel_getUid("indexOfItemWithTag:"),function(_61,_62,_63){ +with(_61){ +return objj_msgSend(_menu,"indexOfItemWithTag:",_63); +} +}),new objj_method(sel_getUid("indexOfItemWithTitle:"),function(_64,_65,_66){ +with(_64){ +return objj_msgSend(_menu,"indexOfItemWithTitle:",_66); +} +}),new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"),function(_67,_68,_69){ +with(_67){ +return objj_msgSend(_menu,"indexOfItemWithRepresentedObject:",_69); +} +}),new objj_method(sel_getUid("indexOfItemWithTarget:action:"),function(_6a,_6b,_6c,_6d){ +with(_6a){ +return objj_msgSend(_menu,"indexOfItemWithTarget:action:",_6c,_6d); +} +}),new objj_method(sel_getUid("preferredEdge"),function(_6e,_6f){ +with(_6e){ +return _preferredEdge; +} +}),new objj_method(sel_getUid("setPreferredEdge:"),function(_70,_71,_72){ +with(_70){ +_preferredEdge=_72; +} +}),new objj_method(sel_getUid("setTitle:"),function(_73,_74,_75){ +with(_73){ +if(objj_msgSend(_73,"title")===_75){ +return; +} +if(objj_msgSend(_73,"pullsDown")){ +var _76=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_76,"count")<=0){ +objj_msgSend(_73,"addItemWithTitle:",_75); +}else{ +objj_msgSend(_76[0],"setTitle:",_75); +objj_msgSend(_73,"synchronizeTitleAndSelectedItem"); +} +}else{ +var _77=objj_msgSend(_73,"indexOfItemWithTitle:",_75); +if(_77<0){ +objj_msgSend(_73,"addItemWithTitle:",_75); +_77=objj_msgSend(_73,"numberOfItems")-1; +} +objj_msgSend(_73,"selectItemAtIndex:",_77); +} +} +}),new objj_method(sel_getUid("setImage:"),function(_78,_79,_7a){ +with(_78){ +} +}),new objj_method(sel_getUid("synchronizeTitleAndSelectedItem"),function(_7b,_7c){ +with(_7b){ +var _7d=nil; +if(objj_msgSend(_7b,"pullsDown")){ +var _7e=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_7e,"count")>0){ +_7d=_7e[0]; +} +}else{ +_7d=objj_msgSend(_7b,"selectedItem"); +} +objj_msgSendSuper({receiver:_7b,super_class:objj_getClass("CPPopUpButton").super_class},"setImage:",objj_msgSend(_7d,"image")); +objj_msgSendSuper({receiver:_7b,super_class:objj_getClass("CPPopUpButton").super_class},"setTitle:",objj_msgSend(_7d,"title")); +} +}),new objj_method(sel_getUid("menuDidAddItem:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(objj_msgSend(_81,"userInfo"),"objectForKey:","CPMenuItemIndex"); +if(_selectedIndex<0){ +objj_msgSend(_7f,"selectItemAtIndex:",0); +}else{ +if(_82==_selectedIndex){ +objj_msgSend(_7f,"synchronizeTitleAndSelectedItem"); +}else{ +if(_82<_selectedIndex){ +++_selectedIndex; +} +} +} +if(_82==0&&objj_msgSend(_7f,"pullsDown")){ +var _83=objj_msgSend(_menu,"itemArray"); +objj_msgSend(_83[0],"setHidden:",YES); +if(_83.length>0){ +objj_msgSend(_83[1],"setHidden:",NO); +} +} +var _84=objj_msgSend(_menu,"itemArray")[_82],_85=objj_msgSend(_84,"action"); +if(!_85||(_85===sel_getUid("_popUpItemAction:"))){ +objj_msgSend(_84,"setTarget:",_7f); +objj_msgSend(_84,"setAction:",sel_getUid("_popUpItemAction:")); +} +} +}),new objj_method(sel_getUid("menuDidChangeItem:"),function(_86,_87,_88){ +with(_86){ +var _89=objj_msgSend(objj_msgSend(_88,"userInfo"),"objectForKey:","CPMenuItemIndex"); +if(objj_msgSend(_86,"pullsDown")&&_89!=0){ +return; +} +if(!objj_msgSend(_86,"pullsDown")&&_89!=_selectedIndex){ +return; +} +objj_msgSend(_86,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("menuDidRemoveItem:"),function(_8a,_8b,_8c){ +with(_8a){ +var _8d=objj_msgSend(_8a,"numberOfItems"); +if(_8d<=_selectedIndex&&_8d>0){ +objj_msgSend(_8a,"selectItemAtIndex:",_8d-1); +}else{ +objj_msgSend(_8a,"synchronizeTitleAndSelectedItem"); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_8e,_8f,_90){ +with(_8e){ +if(!objj_msgSend(_8e,"isEnabled")||!objj_msgSend(_8e,"numberOfItems")){ +return; +} +objj_msgSend(_8e,"highlight:",YES); +var _91=objj_msgSend(_8e,"menu"),_92=objj_msgSend(_8e,"bounds"),_93=CGRectGetWidth(_92); +objj_msgSend(_91,"setFont:",objj_msgSend(_8e,"font")); +if(objj_msgSend(_8e,"pullsDown")){ +var _94=nil,_95=CGPointMake(0,CGRectGetMaxY(_92)); +}else{ +var _96=objj_msgSend(_8e,"contentRectForBounds:",_92),_94=objj_msgSend(_8e,"selectedItem"),_97=objj_msgSend(_CPMenuWindow,"_standardLeftMargin")+objj_msgSend(_CPMenuItemStandardView,"_standardLeftMargin"),_95=CGPointMake(CGRectGetMinX(_96)-_97,0); +_93+=_97; +objj_msgSend(_91,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(_91,"setMinimumWidth:",_93); +objj_msgSend(_91,"_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:",_94,_95,CGRectGetMinY(_92),CGRectGetMaxY(_92),_8e,function(_98){ +objj_msgSend(_8e,"highlight:",NO); +var _99=objj_msgSend(_98,"highlightedItem"); +if(objj_msgSend(_99,"_isSelectable")){ +objj_msgSend(_8e,"selectItem:",_99); +} +}); +} +}),new objj_method(sel_getUid("_popUpItemAction:"),function(_9a,_9b,_9c){ +with(_9a){ +objj_msgSend(_9a,"sendAction:to:",objj_msgSend(_9a,"action"),objj_msgSend(_9a,"target")); +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_9d,_9e,_9f,_a0){ +with(_9d){ +var _a1=_a0.length,_a2=objj_msgSend(_a0[0],"valueForKeyPath:",_9f); +objj_msgSend(_9d,"selectItemWithTag:",_a2); +objj_msgSend(_9d,"setEnabled:",YES); +while(_a1-->1){ +if(_a2!==objj_msgSend(_a0[_a1],"valueForKeyPath:",_9f)){ +objj_msgSend(objj_msgSend(_9d,"selectedItem"),"setState:",CPOffState); +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("themeClass"),function(_a3,_a4){ +with(_a3){ +return "popup-button"; +} +})]); +var _a5="CPPopUpButtonMenuKey",_a6="CPPopUpButtonSelectedIndexKey",_a7="CPPopUpButtonPullsDownKey"; +var _2=objj_getClass("CPPopUpButton"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPPopUpButton\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_a8,_a9,_aa){ +with(_a8){ +_a8=objj_msgSendSuper({receiver:_a8,super_class:objj_getClass("CPPopUpButton").super_class},"initWithCoder:",_aa); +if(_a8){ +_selectedIndex=-1; +objj_msgSend(_a8,"setMenu:",objj_msgSend(_aa,"decodeObjectForKey:",_a5)); +objj_msgSend(_a8,"selectItemAtIndex:",objj_msgSend(_aa,"decodeObjectForKey:",_a6)); +} +return _a8; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_ab,_ac,_ad){ +with(_ab){ +objj_msgSendSuper({receiver:_ab,super_class:objj_getClass("CPPopUpButton").super_class},"encodeWithCoder:",_ad); +objj_msgSend(_ad,"encodeObject:forKey:",_menu,_a5); +objj_msgSend(_ad,"encodeInt:forKey:",_selectedIndex,_a6); +} +})]); +p;21;CPProgressIndicator.jt;8302;@STATIC;1.0;I;19;AppKit/CGGeometry.jI;20;AppKit/CPImageView.jI;15;AppKit/CPView.jt;8214; +objj_executeFile("AppKit/CGGeometry.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPProgressIndicatorBarStyle=0; +CPProgressIndicatorSpinningStyle=1; +CPProgressIndicatorHUDBarStyle=2; +var _1=nil,_2=nil,_3=nil,_4=nil; +var _5=objj_allocateClassPair(CPView,"CPProgressIndicator"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_minValue"),new objj_ivar("_maxValue"),new objj_ivar("_doubleValue"),new objj_ivar("_controlSize"),new objj_ivar("_isIndeterminate"),new objj_ivar("_style"),new objj_ivar("_isAnimating"),new objj_ivar("_isDisplayedWhenStoppedSet"),new objj_ivar("_isDisplayedWhenStopped"),new objj_ivar("_barView")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPProgressIndicator").super_class},"initWithFrame:",_9); +if(_7){ +_minValue=0; +_maxValue=100; +_doubleValue=0; +_style=CPProgressIndicatorBarStyle; +_isDisplayedWhenStoppedSet=NO; +_controlSize=CPRegularControlSize; +objj_msgSend(_7,"updateBackgroundColor"); +objj_msgSend(_7,"drawBar"); +} +return _7; +} +}),new objj_method(sel_getUid("setUsesThreadedAnimation:"),function(_a,_b,_c){ +with(_a){ +} +}),new objj_method(sel_getUid("startAnimation:"),function(_d,_e,_f){ +with(_d){ +_isAnimating=YES; +objj_msgSend(_d,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("stopAnimation:"),function(_10,_11,_12){ +with(_10){ +_isAnimating=NO; +objj_msgSend(_10,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("usesThreadedAnimation"),function(_13,_14){ +with(_13){ +return NO; +} +}),new objj_method(sel_getUid("incrementBy:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"setDoubleValue:",_doubleValue+_17); +} +}),new objj_method(sel_getUid("setDoubleValue:"),function(_18,_19,_1a){ +with(_18){ +_doubleValue=MIN(MAX(_1a,_minValue),_maxValue); +objj_msgSend(_18,"drawBar"); +} +}),new objj_method(sel_getUid("doubleValue"),function(_1b,_1c){ +with(_1b){ +return _doubleValue; +} +}),new objj_method(sel_getUid("setMinValue:"),function(_1d,_1e,_1f){ +with(_1d){ +_minValue=_1f; +} +}),new objj_method(sel_getUid("minValue"),function(_20,_21){ +with(_20){ +return _minValue; +} +}),new objj_method(sel_getUid("setMaxValue:"),function(_22,_23,_24){ +with(_22){ +_maxValue=_24; +} +}),new objj_method(sel_getUid("maxValue"),function(_25,_26){ +with(_25){ +return _maxValue; +} +}),new objj_method(sel_getUid("setControlSize:"),function(_27,_28,_29){ +with(_27){ +if(_controlSize==_29){ +return; +} +_controlSize=_29; +objj_msgSend(_27,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("controlSize"),function(_2a,_2b){ +with(_2a){ +return _controlSize; +} +}),new objj_method(sel_getUid("setControlTint:"),function(_2c,_2d,_2e){ +with(_2c){ +} +}),new objj_method(sel_getUid("controlTint"),function(_2f,_30){ +with(_2f){ +return 0; +} +}),new objj_method(sel_getUid("setBezeled:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("isBezeled"),function(_34,_35){ +with(_34){ +return YES; +} +}),new objj_method(sel_getUid("setIndeterminate:"),function(_36,_37,_38){ +with(_36){ +if(_isIndeterminate==_38){ +return; +} +_isIndeterminate=_38; +objj_msgSend(_36,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("isIndeterminate"),function(_39,_3a){ +with(_39){ +return _isIndeterminate; +} +}),new objj_method(sel_getUid("setStyle:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_style==_3d){ +return; +} +_style=_3d; +objj_msgSend(_3b,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("sizeToFit"),function(_3e,_3f){ +with(_3e){ +if(_style==CPProgressIndicatorSpinningStyle){ +objj_msgSend(_3e,"setFrameSize:",objj_msgSend(objj_msgSend(_1[_controlSize],"patternImage"),"size")); +}else{ +objj_msgSend(_3e,"setFrameSize:",CGSizeMake(CGRectGetWidth(objj_msgSend(_3e,"frame")),_4[_2+"BezelBorder"+_3[CPProgressIndicatorBarStyle]+_CPControlIdentifierForControlSize(_controlSize)][0].height)); +} +} +}),new objj_method(sel_getUid("setDisplayedWhenStopped:"),function(_40,_41,_42){ +with(_40){ +if(_isDisplayedWhenStoppedSet&&_isDisplayedWhenStopped==_42){ +return; +} +_isDisplayedWhenStoppedSet=YES; +_isDisplayedWhenStopped=_42; +objj_msgSend(_40,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("isDisplayedWhenStopped"),function(_43,_44){ +with(_43){ +if(_isDisplayedWhenStoppedSet){ +return _isDisplayedWhenStopped; +} +if(_style==CPProgressIndicatorBarStyle||_style==CPProgressIndicatorHUDBarStyle){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("_hideOrDisplay"),function(_45,_46){ +with(_45){ +objj_msgSend(_45,"setHidden:",!_isAnimating&&!objj_msgSend(_45,"isDisplayedWhenStopped")); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_47,_48,_49){ +with(_47){ +objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPProgressIndicator").super_class},"setFrameSize:",_49); +objj_msgSend(_47,"drawBar"); +} +}),new objj_method(sel_getUid("drawBar"),function(_4a,_4b){ +with(_4a){ +if(_style==CPProgressIndicatorSpinningStyle){ +return; +} +if(!_barView){ +_barView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,16)); +objj_msgSend(_4a,"addSubview:",_barView); +} +objj_msgSend(_barView,"setBackgroundColor:",_CPControlThreePartImagePattern(NO,_4,_2,"Bar",_3[_style],_CPControlIdentifierForControlSize(_controlSize))); +var _4c=CGRectGetWidth(objj_msgSend(_4a,"bounds")),_4d=_4c*((_doubleValue-_minValue)/(_maxValue-_minValue)); +if(_4d>0&&_4d<4){ +_4d=4; +} +objj_msgSend(_barView,"setFrameSize:",CGSizeMake(_4d,16)); +} +}),new objj_method(sel_getUid("updateBackgroundColor"),function(_4e,_4f){ +with(_4e){ +if(YES){ +if(_style==CPProgressIndicatorSpinningStyle){ +objj_msgSend(_barView,"removeFromSuperview"); +_barView=nil; +objj_msgSend(_4e,"setBackgroundColor:",_1[_controlSize]); +}else{ +objj_msgSend(_4e,"setBackgroundColor:",_CPControlThreePartImagePattern(NO,_4,_2,"BezelBorder",_3[_style],_CPControlIdentifierForControlSize(_controlSize))); +objj_msgSend(_4e,"drawBar"); +} +}else{ +objj_msgSend(_4e,"setBackgroundColor:",nil); +} +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("initialize"),function(_50,_51){ +with(_50){ +if(_50!=objj_msgSend(CPProgressIndicator,"class")){ +return; +} +var _52=objj_msgSend(CPBundle,"bundleForClass:",_50); +_1=[]; +_1[CPMiniControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +_1[CPSmallControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +_1[CPRegularControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +CPProgressIndicatorBezelBorderViewPool=[]; +var _53=CPProgressIndicatorBarStyle,end=CPProgressIndicatorHUDBarStyle; +for(;_53<=end;++_53){ +CPProgressIndicatorBezelBorderViewPool[_53]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPMiniControlSize]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPSmallControlSize]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPRegularControlSize]=[]; +} +_2=objj_msgSend(_50,"className"); +_3=[]; +_3[CPProgressIndicatorBarStyle]="Bar"; +_3[CPProgressIndicatorSpinningStyle]="Spinny"; +_3[CPProgressIndicatorHUDBarStyle]="HUDBar"; +var _54=_CPControlIdentifierForControlSize(CPRegularControlSize),_55=_CPControlIdentifierForControlSize(CPSmallControlSize),_56=_CPControlIdentifierForControlSize(CPMiniControlSize); +_4=[]; +var _57=[_2+"BezelBorder"+_3[CPProgressIndicatorBarStyle],_2+"Bar"+_3[CPProgressIndicatorBarStyle],_2+"BezelBorder"+_3[CPProgressIndicatorHUDBarStyle],_2+"Bar"+_3[CPProgressIndicatorHUDBarStyle]]; +for(var i=0,_58=_57.length;i<_58;i++){ +var _59=_57[i]; +_4[_59+_54]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +_4[_59+_55]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +_4[_59+_56]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +} +} +})]); +p;9;CPRadio.jt;5564;@STATIC;1.0;I;21;Foundation/CPObject.jI;18;Foundation/CPSet.ji;10;CPButton.jt;5481; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPSet.j",NO); +objj_executeFile("CPButton.j",YES); +CPRadioImageOffset=4; +var _1=objj_allocateClassPair(CPButton,"CPRadio"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_radioGroup")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:radioGroup:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPRadio").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setRadioGroup:",_6); +objj_msgSend(_3,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_3,"setShowsStateBy:",CPContentsCellMask); +objj_msgSend(_3,"setImagePosition:",CPImageLeft); +objj_msgSend(_3,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_3,"setBordered:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(_7,"initWithFrame:radioGroup:",_9,objj_msgSend(CPRadioGroup,"new")); +} +}),new objj_method(sel_getUid("nextState"),function(_a,_b){ +with(_a){ +return CPOnState; +} +}),new objj_method(sel_getUid("setRadioGroup:"),function(_c,_d,_e){ +with(_c){ +if(_radioGroup===_e){ +return; +} +objj_msgSend(_radioGroup,"_removeRadio:",_c); +_radioGroup=_e; +objj_msgSend(_radioGroup,"_addRadio:",_c); +} +}),new objj_method(sel_getUid("radioGroup"),function(_f,_10){ +with(_f){ +return _radioGroup; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_11,_12,_13){ +with(_11){ +objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPRadio").super_class},"setObjectValue:",_13); +if(objj_msgSend(_11,"state")===CPOnState){ +objj_msgSend(_radioGroup,"_setSelectedRadio:",_11); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("radioWithTitle:theme:"),function(_14,_15,_16,_17){ +with(_14){ +return objj_msgSend(_14,"buttonWithTitle:theme:",_16,_17); +} +}),new objj_method(sel_getUid("radioWithTitle:"),function(_18,_19,_1a){ +with(_18){ +return objj_msgSend(_18,"buttonWithTitle:",_1a); +} +}),new objj_method(sel_getUid("standardButtonWithTitle:"),function(_1b,_1c,_1d){ +with(_1b){ +var _1e=objj_msgSend(objj_msgSend(CPRadio,"alloc"),"init"); +objj_msgSend(_1e,"setTitle:",_1d); +return _1e; +} +}),new objj_method(sel_getUid("themeClass"),function(_1f,_20){ +with(_1f){ +return "radio"; +} +})]); +var _21="CPRadioRadioGroupKey"; +var _1=objj_getClass("CPRadio"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPRadio\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("CPRadio").super_class},"initWithCoder:",_24); +if(_22){ +_radioGroup=objj_msgSend(_24,"decodeObjectForKey:",_21); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPRadio").super_class},"encodeWithCoder:",_27); +objj_msgSend(_27,"encodeObject:forKey:",_radioGroup,_21); +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPRadioGroup"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_radios"),new objj_ivar("_selectedRadio"),new objj_ivar("_target"),new objj_ivar("_action")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("target"),function(_28,_29){ +with(_28){ +return _target; +} +}),new objj_method(sel_getUid("setTarget:"),function(_2a,_2b,_2c){ +with(_2a){ +_target=_2c; +} +}),new objj_method(sel_getUid("action"),function(_2d,_2e){ +with(_2d){ +return _action; +} +}),new objj_method(sel_getUid("setAction:"),function(_2f,_30,_31){ +with(_2f){ +_action=_31; +} +}),new objj_method(sel_getUid("init"),function(_32,_33){ +with(_32){ +_32=objj_msgSendSuper({receiver:_32,super_class:objj_getClass("CPRadioGroup").super_class},"init"); +if(_32){ +_radios=objj_msgSend(CPSet,"set"); +_selectedRadio=nil; +} +return _32; +} +}),new objj_method(sel_getUid("_addRadio:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_radios,"addObject:",_36); +if(objj_msgSend(_36,"state")===CPOnState){ +objj_msgSend(_34,"_setSelectedRadio:",_36); +} +} +}),new objj_method(sel_getUid("_removeRadio:"),function(_37,_38,_39){ +with(_37){ +if(_selectedRadio===_39){ +_selectedRadio=nil; +} +objj_msgSend(_radios,"removeObject:",_39); +} +}),new objj_method(sel_getUid("_setSelectedRadio:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_selectedRadio===_3c){ +return; +} +objj_msgSend(_selectedRadio,"setState:",CPOffState); +_selectedRadio=_3c; +objj_msgSend(CPApp,"sendAction:to:from:",_action,_target,_3a); +} +}),new objj_method(sel_getUid("selectedRadio"),function(_3d,_3e){ +with(_3d){ +return _selectedRadio; +} +}),new objj_method(sel_getUid("radios"),function(_3f,_40){ +with(_3f){ +return objj_msgSend(_radios,"allObjects"); +} +})]); +var _41="CPRadioGroupRadiosKey",_42="CPRadioGroupSelectedRadioKey"; +var _1=objj_getClass("CPRadioGroup"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPRadioGroup\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_43,_44,_45){ +with(_43){ +_43=objj_msgSendSuper({receiver:_43,super_class:objj_getClass("CPRadioGroup").super_class},"init"); +if(_43){ +_radios=objj_msgSend(_45,"decodeObjectForKey:",_41); +_selectedRadio=objj_msgSend(_45,"decodeObjectForKey:",_42); +} +return _43; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_46,_47,_48){ +with(_46){ +objj_msgSend(_48,"encodeObject:forKey:",_radios,_41); +objj_msgSend(_48,"encodeObject:forKey:",_selectedRadio,_42); +} +})]); +p;13;CPResponder.jt;5773;@STATIC;1.0;I;21;Foundation/CPObject.jt;5728; +objj_executeFile("Foundation/CPObject.j",NO); +CPDeleteKeyCode=8; +CPTabKeyCode=9; +CPReturnKeyCode=13; +CPEscapeKeyCode=27; +CPSpaceKeyCode=32; +CPPageUpKeyCode=33; +CPPageDownKeyCode=34; +CPLeftArrowKeyCode=37; +CPUpArrowKeyCode=38; +CPRightArrowKeyCode=39; +CPDownArrowKeyCode=40; +CPDeleteForwardKeyCode=46; +var _1=objj_allocateClassPair(CPObject,"CPResponder"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_menu"),new objj_ivar("_nextResponder")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("acceptsFirstResponder"),function(_3,_4){ +with(_3){ +return NO; +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(_5,_6){ +with(_5){ +return YES; +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_7,_8){ +with(_7){ +return YES; +} +}),new objj_method(sel_getUid("setNextResponder:"),function(_9,_a,_b){ +with(_9){ +_nextResponder=_b; +} +}),new objj_method(sel_getUid("nextResponder"),function(_c,_d){ +with(_c){ +return _nextResponder; +} +}),new objj_method(sel_getUid("interpretKeyEvents:"),function(_e,_f,_10){ +with(_e){ +var _11=0,_12=objj_msgSend(_10,"count"); +for(;_11<_12;++_11){ +var _13=_10[_11],_14=objj_msgSend(_13,"modifierFlags"),_15=objj_msgSend(_13,"charactersIgnoringModifiers"),_16=objj_msgSend(CPKeyBinding,"selectorsForKey:modifierFlags:",_15,_14); +if(_16){ +for(var s=0,_17=_16.length;s<_17;s++){ +var _18=_16[s]; +if(!_18){ +continue; +} +objj_msgSend(_e,"doCommandBySelector:",CPSelectorFromString(_18)); +} +}else{ +if(!(_14&(CPCommandKeyMask|CPControlKeyMask))&&objj_msgSend(_e,"respondsToSelector:",sel_getUid("insertText:"))){ +objj_msgSend(_e,"insertText:",objj_msgSend(_13,"characters")); +} +} +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_19,_1a,_1b){ +with(_19){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_1a,_1b); +} +}),new objj_method(sel_getUid("rightMouseDown:"),function(_1c,_1d,_1e){ +with(_1c){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_1d,_1e); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_1f,_20,_21){ +with(_1f){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_20,_21); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_23,_24); +} +}),new objj_method(sel_getUid("rightMouseUp:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_26,_27); +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_28,_29,_2a){ +with(_28){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_29,_2a); +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_2c,_2d); +} +}),new objj_method(sel_getUid("mouseExited:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_2f,_30); +} +}),new objj_method(sel_getUid("scrollWheel:"),function(_31,_32,_33){ +with(_31){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_32,_33); +} +}),new objj_method(sel_getUid("keyDown:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_35,_36); +} +}),new objj_method(sel_getUid("keyUp:"),function(_37,_38,_39){ +with(_37){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_38,_39); +} +}),new objj_method(sel_getUid("flagsChanged:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_3b,_3c); +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_3d,_3e,_3f){ +with(_3d){ +return NO; +} +}),new objj_method(sel_getUid("insertLineBreak:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"insertNewline:",_42); +} +}),new objj_method(sel_getUid("insertNewline:"),function(_43,_44,_45){ +with(_43){ +objj_msgSend(objj_msgSend(_43,"nextResponder"),"insertNewline:",_45); +} +}),new objj_method(sel_getUid("cancel:"),function(_46,_47,_48){ +with(_46){ +} +}),new objj_method(sel_getUid("insertTab:"),function(_49,_4a,_4b){ +with(_49){ +} +}),new objj_method(sel_getUid("insertBackTab:"),function(_4c,_4d,_4e){ +with(_4c){ +} +}),new objj_method(sel_getUid("insertText:"),function(_4f,_50,_51){ +with(_4f){ +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_52,_53,_54){ +with(_52){ +if(objj_msgSend(_52,"respondsToSelector:",_54)){ +objj_msgSend(_52,"performSelector:",_54); +}else{ +objj_msgSend(_nextResponder,"doCommandBySelector:",_54); +} +} +}),new objj_method(sel_getUid("tryToPerform:with:"),function(_55,_56,_57,_58){ +with(_55){ +if(objj_msgSend(_55,"respondsToSelector:",_57)){ +objj_msgSend(_55,"performSelector:withObject:",_57,_58); +return YES; +} +return objj_msgSend(_nextResponder,"tryToPerform:with:",_57,_58); +} +}),new objj_method(sel_getUid("setMenu:"),function(_59,_5a,_5b){ +with(_59){ +_menu=_5b; +} +}),new objj_method(sel_getUid("menu"),function(_5c,_5d){ +with(_5c){ +return _menu; +} +}),new objj_method(sel_getUid("undoManager"),function(_5e,_5f){ +with(_5e){ +return objj_msgSend(_nextResponder,"performSelector:",_5f); +} +}),new objj_method(sel_getUid("noResponderFor:"),function(_60,_61,_62){ +with(_60){ +} +})]); +var _63="CPResponderNextResponderKey"; +var _1=objj_getClass("CPResponder"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPResponder\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_64,_65,_66){ +with(_64){ +_64=objj_msgSendSuper({receiver:_64,super_class:objj_getClass("CPResponder").super_class},"init"); +if(_64){ +_nextResponder=objj_msgSend(_66,"decodeObjectForKey:",_63); +} +return _64; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_67,_68,_69){ +with(_67){ +if(_nextResponder!==nil){ +objj_msgSend(_69,"encodeConditionalObject:forKey:",_nextResponder,_63); +} +} +})]); +p;13;CPSavePanel.jt;2744;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2704; +objj_executeFile("AppKit/CPPanel.j",NO); +var _1=objj_allocateClassPair(CPPanel,"CPSavePanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_URL"),new objj_ivar("_isExtensionHidden"),new objj_ivar("_canSelectHiddenExtension"),new objj_ivar("_allowsOtherFileTypes"),new objj_ivar("_canCreateDirectories"),new objj_ivar("_allowedFileTypes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isExtensionHidden"),function(_3,_4){ +with(_3){ +return _isExtensionHidden; +} +}),new objj_method(sel_getUid("setExtensionHidden:"),function(_5,_6,_7){ +with(_5){ +_isExtensionHidden=_7; +} +}),new objj_method(sel_getUid("canSelectHiddenExtension"),function(_8,_9){ +with(_8){ +return _canSelectHiddenExtension; +} +}),new objj_method(sel_getUid("setCanSelectHiddenExtension:"),function(_a,_b,_c){ +with(_a){ +_canSelectHiddenExtension=_c; +} +}),new objj_method(sel_getUid("allowsOtherFileTypes"),function(_d,_e){ +with(_d){ +return _allowsOtherFileTypes; +} +}),new objj_method(sel_getUid("setAllowsOtherFileTypes:"),function(_f,_10,_11){ +with(_f){ +_allowsOtherFileTypes=_11; +} +}),new objj_method(sel_getUid("canCreateDirectories"),function(_12,_13){ +with(_12){ +return _canCreateDirectories; +} +}),new objj_method(sel_getUid("setCanCreateDirectories:"),function(_14,_15,_16){ +with(_14){ +_canCreateDirectories=_16; +} +}),new objj_method(sel_getUid("allowedFileTypes"),function(_17,_18){ +with(_17){ +return _allowedFileTypes; +} +}),new objj_method(sel_getUid("setAllowedFileTypes:"),function(_19,_1a,_1b){ +with(_19){ +_allowedFileTypes=_1b; +} +}),new objj_method(sel_getUid("init"),function(_1c,_1d){ +with(_1c){ +if(_1c=objj_msgSendSuper({receiver:_1c,super_class:objj_getClass("CPSavePanel").super_class},"init")){ +_canCreateDirectories=YES; +} +return _1c; +} +}),new objj_method(sel_getUid("runModal"),function(_1e,_1f){ +with(_1e){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +if(typeof window["cpSavePanel"]==="function"){ +var _20=window.cpSavePanel({isExtensionHidden:_isExtensionHidden,canSelectHiddenExtension:_canSelectHiddenExtension,allowsOtherFileTypes:_allowsOtherFileTypes,canCreateDirectories:_canCreateDirectories,allowedFileTypes:_allowedFileTypes}),_21=_20.button; +_URL=_21?objj_msgSend(CPURL,"URLWithString:",_20.URL):nil; +}else{ +var _22=window.prompt("Document Name:"),_21=_22!==null; +_URL=_21?objj_msgSend(objj_msgSend(_1e,"class"),"proposedFileURLWithDocumentName:",_22):nil; +} +return _21; +} +}),new objj_method(sel_getUid("URL"),function(_23,_24){ +with(_23){ +return _URL; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("savePanel"),function(_25,_26){ +with(_25){ +return objj_msgSend(objj_msgSend(CPSavePanel,"alloc"),"init"); +} +})]); +p;10;CPScreen.jt;421;@STATIC;1.0;I;21;Foundation/CPObject.jt;377; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPScreen"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("visibleFrame"),function(_3,_4){ +with(_3){ +return {origin:{x:window.screen.availLeft,y:window.screen.availTop},size:{width:window.screen.availWidth,height:window.screen.availHeight}}; +} +})]); +p;12;CPScroller.jt;16772;@STATIC;1.0;i;11;CPControl.jt;16736; +objj_executeFile("CPControl.j",YES); +CPScrollerNoPart=0; +CPScrollerDecrementPage=1; +CPScrollerKnob=2; +CPScrollerIncrementPage=3; +CPScrollerDecrementLine=4; +CPScrollerIncrementLine=5; +CPScrollerKnobSlot=6; +CPScrollerIncrementArrow=0; +CPScrollerDecrementArrow=1; +CPNoScrollerParts=0; +CPOnlyScrollerArrows=1; +CPAllScrollerParts=2; +var _1=[CPScrollerKnobSlot,CPScrollerDecrementLine,CPScrollerIncrementLine,CPScrollerKnob],_2={},_3={}; +_2[CPScrollerDecrementLine]="decrement-line"; +_2[CPScrollerIncrementLine]="increment-line"; +_2[CPScrollerKnobSlot]="knob-slot"; +_2[CPScrollerKnob]="knob"; +var _4=objj_allocateClassPair(CPControl,"CPScroller"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_controlSize"),new objj_ivar("_usableParts"),new objj_ivar("_partRects"),new objj_ivar("_isVertical"),new objj_ivar("_knobProportion"),new objj_ivar("_hitPart"),new objj_ivar("_trackingPart"),new objj_ivar("_trackingFloatValue"),new objj_ivar("_trackingStartPoint")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("isVertical"),function(_6,_7){ +with(_6){ +return _isVertical; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPScroller").super_class},"initWithFrame:",_a); +if(_8){ +_controlSize=CPRegularControlSize; +_partRects=[]; +objj_msgSend(_8,"setFloatValue:",0); +objj_msgSend(_8,"setKnobProportion:",1); +_hitPart=CPScrollerNoPart; +objj_msgSend(_8,"_calculateIsVertical"); +} +return _8; +} +}),new objj_method(sel_getUid("setControlSize:"),function(_b,_c,_d){ +with(_b){ +if(_controlSize==_d){ +return; +} +_controlSize=_d; +objj_msgSend(_b,"setNeedsLayout"); +objj_msgSend(_b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("controlSize"),function(_e,_f){ +with(_e){ +return _controlSize; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_10,_11,_12){ +with(_10){ +objj_msgSendSuper({receiver:_10,super_class:objj_getClass("CPScroller").super_class},"setObjectValue:",MIN(1,MAX(0,+_12))); +} +}),new objj_method(sel_getUid("setKnobProportion:"),function(_13,_14,_15){ +with(_13){ +_knobProportion=MIN(1,MAX(0.0001,_15)); +objj_msgSend(_13,"setNeedsDisplay:",YES); +objj_msgSend(_13,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("knobProportion"),function(_16,_17){ +with(_16){ +return _knobProportion; +} +}),new objj_method(sel_getUid("currentValueForThemeAttribute:"),function(_18,_19,_1a){ +with(_18){ +var _1b=_themeState; +if(_2[_hitPart]+"-color"!==_1a){ +_1b&=~CPThemeStateHighlighted; +} +return objj_msgSend(_18,"valueForThemeAttribute:inState:",_1a,_1b); +} +}),new objj_method(sel_getUid("rectForPart:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_1e==CPScrollerNoPart){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +return _partRects[_1e]; +} +}),new objj_method(sel_getUid("testPart:"),function(_1f,_20,_21){ +with(_1f){ +_21=objj_msgSend(_1f,"convertPoint:fromView:",_21,nil); +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerKnob),_21)){ +return CPScrollerKnob; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerDecrementPage),_21)){ +return CPScrollerDecrementPage; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerIncrementPage),_21)){ +return CPScrollerIncrementPage; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerDecrementLine),_21)){ +return CPScrollerDecrementLine; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerIncrementLine),_21)){ +return CPScrollerIncrementLine; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerKnobSlot),_21)){ +return CPScrollerKnobSlot; +} +return CPScrollerNoPart; +} +}),new objj_method(sel_getUid("checkSpaceForParts"),function(_22,_23){ +with(_22){ +var _24=objj_msgSend(_22,"bounds"); +if(_knobProportion===1){ +_usableParts=CPNoScrollerParts; +_partRects[CPScrollerDecrementPage]=CGRectMakeZero(); +_partRects[CPScrollerKnob]=CGRectMakeZero(); +_partRects[CPScrollerIncrementPage]=CGRectMakeZero(); +_partRects[CPScrollerDecrementLine]=CGRectMakeZero(); +_partRects[CPScrollerIncrementLine]=CGRectMakeZero(); +_partRects[CPScrollerKnobSlot]=CGRectMakeCopy(_24); +return; +} +_usableParts=CPAllScrollerParts; +var _25=objj_msgSend(_22,"currentValueForThemeAttribute:","knob-inset"),_26=objj_msgSend(_22,"currentValueForThemeAttribute:","track-inset"),_27=(_24.size.width),_28=(_24.size.height); +if(objj_msgSend(_22,"isVertical")){ +var _29=objj_msgSend(_22,"currentValueForThemeAttribute:","decrement-line-size"),_2a=objj_msgSend(_22,"currentValueForThemeAttribute:","increment-line-size"),_2b=_29.height+_26.top,_2c=_2a.height+_26.bottom,_2d=_28-_2b-_2c,_2e=objj_msgSend(_22,"currentValueForThemeAttribute:","minimum-knob-length"),_2f=_27-_25.left-_25.right,_30=MAX(_2e,(_2d*_knobProportion)),_31=_2b+(_2d-_30)*objj_msgSend(_22,"floatValue"); +_partRects[CPScrollerDecrementPage]={origin:{x:0,y:_2b},size:{width:_27,height:_31-_2b}}; +_partRects[CPScrollerKnob]={origin:{x:_25.left,y:_31},size:{width:_2f,height:_30}}; +_partRects[CPScrollerIncrementPage]={origin:{x:0,y:_31+_30},size:{width:_27,height:_28-(_31+_30)-_2c}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_26.left,y:_2b},size:{width:_27-_26.left-_26.right,height:_2d}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:_29.width,height:_29.height}}; +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:_28-_2a.height},size:{width:_2a.width,height:_2a.height}}; +if(_28<_30+_29.height+_2a.height+_26.top+_26.bottom){ +_partRects[CPScrollerKnob]={origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_28<_29.height+_2a.height-2){ +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_26.left,y:0},size:{width:_27-_26.left-_26.right,height:_28}}; +} +}else{ +var _29=objj_msgSend(_22,"currentValueForThemeAttribute:","decrement-line-size"),_2a=objj_msgSend(_22,"currentValueForThemeAttribute:","increment-line-size"),_32=_29.width+_26.left,_33=_2a.width+_26.right; +slotWidth=_27-_32-_33,_2e=objj_msgSend(_22,"currentValueForThemeAttribute:","minimum-knob-length"),_2f=MAX(_2e,(slotWidth*_knobProportion)),_30=_28-_25.top-_25.bottom,_31=_32+(slotWidth-_2f)*objj_msgSend(_22,"floatValue"); +_partRects[CPScrollerDecrementPage]={origin:{x:_32,y:0},size:{width:_31-_32,height:_28}}; +_partRects[CPScrollerKnob]={origin:{x:_31,y:_25.top},size:{width:_2f,height:_30}}; +_partRects[CPScrollerIncrementPage]={origin:{x:_31+_2f,y:0},size:{width:_27-(_31+_2f)-_33,height:_28}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_32,y:_26.top},size:{width:slotWidth,height:_28-_26.top-_26.bottom}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:_29.width,height:_29.height}}; +_partRects[CPScrollerIncrementLine]={origin:{x:_27-_2a.width,y:0},size:{width:_2a.width,height:_2a.height}}; +if(_27<_2f+_29.width+_2a.width+_26.left+_26.right){ +_partRects[CPScrollerKnob]={origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_27<_29.width+_2a.width-2){ +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerKnobSlot]={origin:{x:0,y:0},size:{width:_27,height:_2d}}; +} +} +} +}),new objj_method(sel_getUid("usableParts"),function(_34,_35){ +with(_34){ +return _usableParts; +} +}),new objj_method(sel_getUid("drawArrow:highlight:"),function(_36,_37,_38,_39){ +with(_36){ +} +}),new objj_method(sel_getUid("drawKnob"),function(_3a,_3b){ +with(_3a){ +} +}),new objj_method(sel_getUid("drawKnobSlot"),function(_3c,_3d){ +with(_3c){ +} +}),new objj_method(sel_getUid("createViewForPart:"),function(_3e,_3f,_40){ +with(_3e){ +var _41=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_41,"setHitTests:",NO); +return _41; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_42,_43,_44){ +with(_42){ +return _partRects[_44]; +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_45,_46,_47){ +with(_45){ +var _48=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_48,"setHitTests:",NO); +return _48; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"checkSpaceForParts"); +var _4b=0,_4c=_1.length; +for(;_4b<_4c;++_4b){ +var _4d=_1[_4b]; +if(_4b===0){ +view=objj_msgSend(_49,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:",_4d,CPWindowBelow,_1[_4b+1]); +}else{ +view=objj_msgSend(_49,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:",_4d,CPWindowAbove,_1[_4b-1]); +} +if(view){ +objj_msgSend(view,"setBackgroundColor:",objj_msgSend(_49,"currentValueForThemeAttribute:",_2[_4d]+"-color")); +} +} +} +}),new objj_method(sel_getUid("drawParts"),function(_4e,_4f){ +with(_4e){ +objj_msgSend(_4e,"drawKnobSlot"); +objj_msgSend(_4e,"drawKnob"); +objj_msgSend(_4e,"drawArrow:highlight:",CPScrollerDecrementArrow,NO); +objj_msgSend(_4e,"drawArrow:highlight:",CPScrollerIncrementArrow,NO); +} +}),new objj_method(sel_getUid("hitPart"),function(_50,_51){ +with(_50){ +return _hitPart; +} +}),new objj_method(sel_getUid("trackKnob:"),function(_52,_53,_54){ +with(_52){ +var _55=objj_msgSend(_54,"type"); +if(_55===CPLeftMouseUp){ +_hitPart=CPScrollerNoPart; +return; +} +if(_55===CPLeftMouseDown){ +_trackingFloatValue=objj_msgSend(_52,"floatValue"); +_trackingStartPoint=objj_msgSend(_52,"convertPoint:fromView:",objj_msgSend(_54,"locationInWindow"),nil); +}else{ +if(_55===CPLeftMouseDragged){ +var _56=objj_msgSend(_52,"rectForPart:",CPScrollerKnob),_57=objj_msgSend(_52,"rectForPart:",CPScrollerKnobSlot),_58=!objj_msgSend(_52,"isVertical")?((_57.size.width)-(_56.size.width)):((_57.size.height)-(_56.size.height)); +if(_58<=0){ +objj_msgSend(_52,"setFloatValue:",0); +}else{ +var _59=objj_msgSend(_52,"convertPoint:fromView:",objj_msgSend(_54,"locationInWindow"),nil),_5a=!objj_msgSend(_52,"isVertical")?_59.x-_trackingStartPoint.x:_59.y-_trackingStartPoint.y; +objj_msgSend(_52,"setFloatValue:",_trackingFloatValue+_5a/_58); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_52,sel_getUid("trackKnob:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +objj_msgSend(_52,"sendAction:to:",objj_msgSend(_52,"action"),objj_msgSend(_52,"target")); +} +}),new objj_method(sel_getUid("trackScrollButtons:"),function(_5b,_5c,_5d){ +with(_5b){ +var _5e=objj_msgSend(_5d,"type"); +if(_5e===CPLeftMouseUp){ +objj_msgSend(_5b,"highlight:",NO); +objj_msgSend(CPEvent,"stopPeriodicEvents"); +_hitPart=CPScrollerNoPart; +return; +} +if(_5e===CPLeftMouseDown){ +_trackingPart=objj_msgSend(_5b,"hitPart"); +_trackingStartPoint=objj_msgSend(_5b,"convertPoint:fromView:",objj_msgSend(_5d,"locationInWindow"),nil); +if(objj_msgSend(_5d,"modifierFlags")&CPAlternateKeyMask){ +if(_trackingPart==CPScrollerDecrementLine){ +_hitPart=CPScrollerDecrementPage; +}else{ +if(_trackingPart==CPScrollerIncrementLine){ +_hitPart=CPScrollerIncrementPage; +}else{ +if(_trackingPart==CPScrollerDecrementPage||_trackingPart==CPScrollerIncrementPage){ +var _5f=objj_msgSend(_5b,"rectForPart:",CPScrollerKnob),_60=!objj_msgSend(_5b,"isVertical")?(_5f.size.width):(_5f.size.height),_61=objj_msgSend(_5b,"rectForPart:",CPScrollerKnobSlot),_62=(!objj_msgSend(_5b,"isVertical")?(_61.size.width):(_61.size.height))-_60; +objj_msgSend(_5b,"setFloatValue:",((!objj_msgSend(_5b,"isVertical")?_trackingStartPoint.x-(_61.origin.x):_trackingStartPoint.y-(_61.origin.y))-_60/2)/_62); +_hitPart=CPScrollerKnob; +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +return objj_msgSend(_5b,"trackKnob:",_5d); +} +} +} +} +objj_msgSend(_5b,"highlight:",YES); +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +objj_msgSend(CPEvent,"startPeriodicEventsAfterDelay:withPeriod:",0.5,0.04); +}else{ +if(_5e===CPLeftMouseDragged){ +_trackingStartPoint=objj_msgSend(_5b,"convertPoint:fromView:",objj_msgSend(_5d,"locationInWindow"),nil); +if(_trackingPart==CPScrollerDecrementPage||_trackingPart==CPScrollerIncrementPage){ +var _63=objj_msgSend(_5b,"testPart:",objj_msgSend(_5d,"locationInWindow")); +if(_63==CPScrollerDecrementPage||_63==CPScrollerIncrementPage){ +_trackingPart=_63; +_hitPart=_63; +} +} +objj_msgSend(_5b,"highlight:",CGRectContainsPoint(objj_msgSend(_5b,"rectForPart:",_trackingPart),_trackingStartPoint)); +}else{ +if(_5e==CPPeriodic&&CGRectContainsPoint(objj_msgSend(_5b,"rectForPart:",_trackingPart),_trackingStartPoint)){ +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_5b,sel_getUid("trackScrollButtons:"),CPPeriodicMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("_calculateIsVertical"),function(_64,_65){ +with(_64){ +var _66=objj_msgSend(_64,"bounds"),_67=(_66.size.width),_68=(_66.size.height); +_isVertical=_67<_68?1:(_67>_68?0:-1); +if(_isVertical===1){ +objj_msgSend(_64,"setThemeState:",CPThemeStateVertical); +}else{ +if(_isVertical===0){ +objj_msgSend(_64,"unsetThemeState:",CPThemeStateVertical); +} +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_69,_6a,_6b){ +with(_69){ +objj_msgSendSuper({receiver:_69,super_class:objj_getClass("CPScroller").super_class},"setFrameSize:",_6b); +objj_msgSend(_69,"checkSpaceForParts"); +objj_msgSend(_69,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_6c,_6d,_6e){ +with(_6c){ +if(!objj_msgSend(_6c,"isEnabled")){ +return; +} +_hitPart=objj_msgSend(_6c,"testPart:",objj_msgSend(_6e,"locationInWindow")); +switch(_hitPart){ +case CPScrollerKnob: +return objj_msgSend(_6c,"trackKnob:",_6e); +case CPScrollerDecrementLine: +case CPScrollerIncrementLine: +case CPScrollerDecrementPage: +case CPScrollerIncrementPage: +return objj_msgSend(_6c,"trackScrollButtons:",_6e); +} +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("themeClass"),function(_6f,_70){ +with(_6f){ +return "scroller"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_71,_72){ +with(_71){ +return objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{"scroller-width":15,"knob-slot-color":objj_msgSend(CPColor,"lightGrayColor"),"decrement-line-color":objj_msgSend(CPNull,"null"),"increment-line-color":objj_msgSend(CPNull,"null"),"knob-color":objj_msgSend(CPColor,"grayColor"),"decrement-line-size":{width:0,height:0},"increment-line-size":{width:0,height:0},"track-inset":{top:(0),right:(0),bottom:(0),left:(0)},"knob-inset":{top:(0),right:(0),bottom:(0),left:(0)},"minimum-knob-length":21}); +} +}),new objj_method(sel_getUid("scrollerWidth"),function(_73,_74){ +with(_73){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPScroller,"alloc"),"init"),"currentValueForThemeAttribute:","scroller-width"); +} +}),new objj_method(sel_getUid("scrollerWidthForControlSize:"),function(_75,_76,_77){ +with(_75){ +return objj_msgSend(_75,"scrollerWidth"); +} +})]); +var _78="CPScrollerControlSize",_79="CPScrollerKnobProportion"; +var _4=objj_getClass("CPScroller"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_7a,_7b,_7c){ +with(_7a){ +if(_7a=objj_msgSendSuper({receiver:_7a,super_class:objj_getClass("CPScroller").super_class},"initWithCoder:",_7c)){ +_controlSize=CPRegularControlSize; +if(objj_msgSend(_7c,"containsValueForKey:",_78)){ +_controlSize=objj_msgSend(_7c,"decodeIntForKey:",_78); +} +_knobProportion=1; +if(objj_msgSend(_7c,"containsValueForKey:",_79)){ +_knobProportion=objj_msgSend(_7c,"decodeFloatForKey:",_79); +} +_partRects=[]; +_hitPart=CPScrollerNoPart; +objj_msgSend(_7a,"_calculateIsVertical"); +var _7d=objj_msgSend(_7a,"frame"),_7e=objj_msgSend(CPScroller,"scrollerWidth"); +if(objj_msgSend(_7a,"isVertical")&&CGRectGetWidth(_7d)!==_7e){ +_7d.size.width=_7e; +} +if(!objj_msgSend(_7a,"isVertical")&&CGRectGetHeight(_7d)!==_7e){ +_7d.size.height=_7e; +} +objj_msgSend(_7a,"setFrame:",_7d); +} +return _7a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSendSuper({receiver:_7f,super_class:objj_getClass("CPScroller").super_class},"encodeWithCoder:",_81); +objj_msgSend(_81,"encodeInt:forKey:",_controlSize,_78); +objj_msgSend(_81,"encodeFloat:forKey:",_knobProportion,_79); +} +})]); +var _4=objj_getClass("CPScroller"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("setFloatValue:knobProportion:"),function(_82,_83,_84,_85){ +with(_82){ +objj_msgSend(_82,"setFloatValue:",_84); +objj_msgSend(_82,"setKnobProportion:",_85); +} +})]); +p;14;CPScrollView.jt;26736;@STATIC;1.0;i;8;CPView.ji;12;CPClipView.ji;12;CPScroller.jt;26670; +objj_executeFile("CPView.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPScroller.j",YES); +var _1=objj_allocateClassPair(CPView,"CPScrollView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentView"),new objj_ivar("_headerClipView"),new objj_ivar("_cornerView"),new objj_ivar("_bottomCornerView"),new objj_ivar("_hasVerticalScroller"),new objj_ivar("_hasHorizontalScroller"),new objj_ivar("_autohidesScrollers"),new objj_ivar("_verticalScroller"),new objj_ivar("_horizontalScroller"),new objj_ivar("_recursionCount"),new objj_ivar("_verticalLineScroll"),new objj_ivar("_verticalPageScroll"),new objj_ivar("_horizontalLineScroll"),new objj_ivar("_horizontalPageScroll"),new objj_ivar("_borderType")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPScrollView").super_class},"initWithFrame:",_5); +if(_3){ +_verticalLineScroll=10; +_verticalPageScroll=10; +_horizontalLineScroll=10; +_horizontalPageScroll=10; +_borderType=CPNoBorder; +_contentView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"initWithFrame:",objj_msgSend(_3,"_insetBounds")); +objj_msgSend(_3,"addSubview:",_contentView); +_headerClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"init"); +objj_msgSend(_3,"addSubview:",_headerClipView); +_bottomCornerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_3,"addSubview:",_bottomCornerView); +objj_msgSend(_3,"setHasVerticalScroller:",YES); +objj_msgSend(_3,"setHasHorizontalScroller:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("_insetBounds"),function(_6,_7){ +with(_6){ +return objj_msgSend(objj_msgSend(_6,"class"),"_insetBounds:borderType:",objj_msgSend(_6,"bounds"),_borderType); +} +}),new objj_method(sel_getUid("contentSize"),function(_8,_9){ +with(_8){ +return objj_msgSend(_contentView,"frame").size; +} +}),new objj_method(sel_getUid("documentView"),function(_a,_b){ +with(_a){ +return objj_msgSend(_contentView,"documentView"); +} +}),new objj_method(sel_getUid("setContentView:"),function(_c,_d,_e){ +with(_c){ +if(_contentView!==_e||!_e){ +return; +} +var _f=objj_msgSend(_e,"documentView"); +if(_f){ +objj_msgSend(_f,"removeFromSuperview"); +} +objj_msgSend(_contentView,"removeFromSuperview"); +_contentView=_e; +objj_msgSend(_contentView,"setDocumentView:",_f); +objj_msgSend(_c,"addSubview:",_contentView); +objj_msgSend(_c,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("contentView"),function(_10,_11){ +with(_10){ +return _contentView; +} +}),new objj_method(sel_getUid("setDocumentView:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_contentView,"setDocumentView:",_14); +objj_msgSend(_12,"_updateCornerAndHeaderView"); +objj_msgSend(_12,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(_15,_16,_17){ +with(_15){ +if(_contentView!==_17){ +return; +} +if(_recursionCount>5){ +return; +} +++_recursionCount; +var _18=objj_msgSend(_15,"documentView"); +if(!_18){ +if(_autohidesScrollers){ +objj_msgSend(_verticalScroller,"setHidden:",YES); +objj_msgSend(_horizontalScroller,"setHidden:",YES); +}else{ +} +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_15,"_insetBounds")); +objj_msgSend(_headerClipView,"setFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +--_recursionCount; +return; +} +var _19=objj_msgSend(_18,"frame"),_1a=objj_msgSend(_15,"_insetBounds"),_1b=objj_msgSend(_15,"_headerClipViewFrame"),_1c=(_1b.size.height); +_1a.origin.y+=_1c; +_1a.size.height-=_1c; +var _1d={width:(_19.size.width)-(_1a.size.width),height:(_19.size.height)-(_1a.size.height)},_1e=(objj_msgSend(_verticalScroller,"frame").size.width),_1f=(objj_msgSend(_horizontalScroller,"frame").size.height),_20=_1d.height>0,_21=_1d.width>0,_22=_hasVerticalScroller&&(!_autohidesScrollers||_20),_23=_hasHorizontalScroller&&(!_autohidesScrollers||_21); +if(_22){ +_1d.width+=_1e; +_21=_1d.width>0; +_23=_hasHorizontalScroller&&(!_autohidesScrollers||_21); +} +if(_23){ +_1d.height+=_1f; +_20=_1d.height>0; +_22=_hasVerticalScroller&&(!_autohidesScrollers||_20); +} +objj_msgSend(_verticalScroller,"setHidden:",!_22); +objj_msgSend(_verticalScroller,"setEnabled:",_20); +objj_msgSend(_horizontalScroller,"setHidden:",!_23); +objj_msgSend(_horizontalScroller,"setEnabled:",_21); +if(_22){ +_1a.size.width-=_1e; +} +if(_23){ +_1a.size.height-=_1f; +} +var _24=objj_msgSend(_contentView,"bounds").origin,_25=!objj_msgSend(_verticalScroller,"isHidden"),_26=!objj_msgSend(_horizontalScroller,"isHidden"); +if(_22){ +var _27=MAX((_1a.origin.y),MAX((objj_msgSend(_15,"_cornerViewFrame").origin.y+objj_msgSend(_15,"_cornerViewFrame").size.height),(_1b.origin.y+_1b.size.height))); +var _28=(_1a.origin.y+_1a.size.height)-_27; +objj_msgSend(_verticalScroller,"setFloatValue:",(_1d.height<=0)?0:_24.y/_1d.height); +objj_msgSend(_verticalScroller,"setKnobProportion:",(_1a.size.height)/(_19.size.height)); +objj_msgSend(_verticalScroller,"setFrame:",{origin:{x:(_1a.origin.x+_1a.size.width),y:_27},size:{width:_1e,height:_28}}); +}else{ +if(_25){ +objj_msgSend(_verticalScroller,"setFloatValue:",0); +objj_msgSend(_verticalScroller,"setKnobProportion:",1); +} +} +if(_23){ +objj_msgSend(_horizontalScroller,"setFloatValue:",(_1d.width<=0)?0:_24.x/_1d.width); +objj_msgSend(_horizontalScroller,"setKnobProportion:",(_1a.size.width)/(_19.size.width)); +objj_msgSend(_horizontalScroller,"setFrame:",{origin:{x:(_1a.origin.x),y:(_1a.origin.y+_1a.size.height)},size:{width:(_1a.size.width),height:_1f}}); +}else{ +if(_26){ +objj_msgSend(_horizontalScroller,"setFloatValue:",0); +objj_msgSend(_horizontalScroller,"setKnobProportion:",1); +} +} +objj_msgSend(_contentView,"setFrame:",_1a); +objj_msgSend(_headerClipView,"setFrame:",_1b); +objj_msgSend(_cornerView,"setFrame:",objj_msgSend(_15,"_cornerViewFrame")); +objj_msgSend(objj_msgSend(_15,"bottomCornerView"),"setFrame:",objj_msgSend(_15,"_bottomCornerViewFrame")); +objj_msgSend(objj_msgSend(_15,"bottomCornerView"),"setBackgroundColor:",objj_msgSend(_15,"currentValueForThemeAttribute:","bottom-corner-color")); +--_recursionCount; +} +}),new objj_method(sel_getUid("setBorderType:"),function(_29,_2a,_2b){ +with(_29){ +if(_borderType==_2b){ +return; +} +_borderType=_2b; +objj_msgSend(_29,"reflectScrolledClipView:",_contentView); +objj_msgSend(_29,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderType"),function(_2c,_2d){ +with(_2c){ +return _borderType; +} +}),new objj_method(sel_getUid("setHorizontalScroller:"),function(_2e,_2f,_30){ +with(_2e){ +if(_horizontalScroller===_30){ +return; +} +objj_msgSend(_horizontalScroller,"removeFromSuperview"); +objj_msgSend(_horizontalScroller,"setTarget:",nil); +objj_msgSend(_horizontalScroller,"setAction:",nil); +_horizontalScroller=_30; +objj_msgSend(_horizontalScroller,"setTarget:",_2e); +objj_msgSend(_horizontalScroller,"setAction:",sel_getUid("_horizontalScrollerDidScroll:")); +objj_msgSend(_2e,"addSubview:",_horizontalScroller); +objj_msgSend(_2e,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("horizontalScroller"),function(_31,_32){ +with(_31){ +return _horizontalScroller; +} +}),new objj_method(sel_getUid("setHasHorizontalScroller:"),function(_33,_34,_35){ +with(_33){ +if(_hasHorizontalScroller===_35){ +return; +} +_hasHorizontalScroller=_35; +if(_hasHorizontalScroller&&!_horizontalScroller){ +var _36=objj_msgSend(_33,"_insetBounds"); +objj_msgSend(_33,"setHorizontalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",CGRectMake(0,0,MAX((_36.size.width),objj_msgSend(CPScroller,"scrollerWidth")+1),objj_msgSend(CPScroller,"scrollerWidth")))); +objj_msgSend(objj_msgSend(_33,"horizontalScroller"),"setFrameSize:",CGSizeMake((_36.size.width),objj_msgSend(CPScroller,"scrollerWidth"))); +} +objj_msgSend(_33,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("hasHorizontalScroller"),function(_37,_38){ +with(_37){ +return _hasHorizontalScroller; +} +}),new objj_method(sel_getUid("setVerticalScroller:"),function(_39,_3a,_3b){ +with(_39){ +if(_verticalScroller===_3b){ +return; +} +objj_msgSend(_verticalScroller,"removeFromSuperview"); +objj_msgSend(_verticalScroller,"setTarget:",nil); +objj_msgSend(_verticalScroller,"setAction:",nil); +_verticalScroller=_3b; +objj_msgSend(_verticalScroller,"setTarget:",_39); +objj_msgSend(_verticalScroller,"setAction:",sel_getUid("_verticalScrollerDidScroll:")); +objj_msgSend(_39,"addSubview:",_verticalScroller); +objj_msgSend(_39,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("verticalScroller"),function(_3c,_3d){ +with(_3c){ +return _verticalScroller; +} +}),new objj_method(sel_getUid("setHasVerticalScroller:"),function(_3e,_3f,_40){ +with(_3e){ +if(_hasVerticalScroller===_40){ +return; +} +_hasVerticalScroller=_40; +if(_hasVerticalScroller&&!_verticalScroller){ +var _41=objj_msgSend(_3e,"_insetBounds"); +objj_msgSend(_3e,"setVerticalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:objj_msgSend(CPScroller,"scrollerWidth"),height:MAX((_41.size.height),objj_msgSend(CPScroller,"scrollerWidth")+1)}})); +objj_msgSend(objj_msgSend(_3e,"verticalScroller"),"setFrameSize:",CGSizeMake(objj_msgSend(CPScroller,"scrollerWidth"),(_41.size.height))); +} +objj_msgSend(_3e,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("hasVerticalScroller"),function(_42,_43){ +with(_42){ +return _hasVerticalScroller; +} +}),new objj_method(sel_getUid("setAutohidesScrollers:"),function(_44,_45,_46){ +with(_44){ +if(_autohidesScrollers==_46){ +return; +} +_autohidesScrollers=_46; +objj_msgSend(_44,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("autohidesScrollers"),function(_47,_48){ +with(_47){ +return _autohidesScrollers; +} +}),new objj_method(sel_getUid("_updateCornerAndHeaderView"),function(_49,_4a){ +with(_49){ +var _4b=objj_msgSend(_49,"documentView"),_4c=objj_msgSend(_49,"_headerView"),_4d=objj_msgSend(_4b,"respondsToSelector:",sel_getUid("headerView"))?objj_msgSend(_4b,"headerView"):nil; +if(_4c!==_4d){ +objj_msgSend(_4c,"removeFromSuperview"); +objj_msgSend(_headerClipView,"setDocumentView:",_4d); +} +var _4e=objj_msgSend(_4b,"respondsToSelector:",sel_getUid("cornerView"))?objj_msgSend(_4b,"cornerView"):nil; +if(_cornerView!==_4e){ +objj_msgSend(_cornerView,"removeFromSuperview"); +_cornerView=_4e; +if(_cornerView){ +objj_msgSend(_49,"addSubview:",_cornerView); +} +} +objj_msgSend(_49,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("_headerView"),function(_4f,_50){ +with(_4f){ +return objj_msgSend(_headerClipView,"documentView"); +} +}),new objj_method(sel_getUid("_cornerViewFrame"),function(_51,_52){ +with(_51){ +if(!_cornerView){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _53=objj_msgSend(_51,"_insetBounds"),_54=objj_msgSend(_cornerView,"frame"); +_54.origin.x=(_53.origin.x+_53.size.width)-(_54.size.width); +_54.origin.y=(_53.origin.y); +return _54; +} +}),new objj_method(sel_getUid("_headerClipViewFrame"),function(_55,_56){ +with(_55){ +var _57=objj_msgSend(_55,"_headerView"); +if(!_57){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _58=objj_msgSend(_55,"_insetBounds"); +_58.size.height=(objj_msgSend(_57,"frame").size.height); +_58.size.width-=(objj_msgSend(_55,"_cornerViewFrame").size.width); +return _58; +} +}),new objj_method(sel_getUid("_bottomCornerViewFrame"),function(_59,_5a){ +with(_59){ +if(objj_msgSend(objj_msgSend(_59,"horizontalScroller"),"isHidden")||objj_msgSend(objj_msgSend(_59,"verticalScroller"),"isHidden")){ +return CGRectMakeZero(); +} +var _5b=objj_msgSend(objj_msgSend(_59,"verticalScroller"),"frame"),_5c=CGRectMakeZero(); +_5c.origin.x=CGRectGetMinX(_5b); +_5c.origin.y=CGRectGetMaxY(_5b); +_5c.size.width=objj_msgSend(CPScroller,"scrollerWidth"); +_5c.size.height=objj_msgSend(CPScroller,"scrollerWidth"); +return _5c; +} +}),new objj_method(sel_getUid("setBottomCornerView:"),function(_5d,_5e,_5f){ +with(_5d){ +if(_bottomCornerView===_5f){ +return; +} +objj_msgSend(_bottomCornerView,"removeFromSuperview"); +objj_msgSend(_5f,"setFrame:",objj_msgSend(_5d,"_bottomCornerViewFrame")); +objj_msgSend(_5d,"addSubview:",_5f); +_bottomCornerView=_5f; +objj_msgSend(_5d,"_updateCornerAndHeaderView"); +} +}),new objj_method(sel_getUid("bottomCornerView"),function(_60,_61){ +with(_60){ +return _bottomCornerView; +} +}),new objj_method(sel_getUid("_verticalScrollerDidScroll:"),function(_62,_63,_64){ +with(_62){ +var _65=objj_msgSend(_64,"floatValue"),_66=objj_msgSend(objj_msgSend(_contentView,"documentView"),"frame"),_67=objj_msgSend(_contentView,"bounds"); +switch(objj_msgSend(_verticalScroller,"hitPart")){ +case CPScrollerDecrementLine: +_67.origin.y-=_verticalLineScroll; +break; +case CPScrollerIncrementLine: +_67.origin.y+=_verticalLineScroll; +break; +case CPScrollerDecrementPage: +_67.origin.y-=(_67.size.height)-_verticalPageScroll; +break; +case CPScrollerIncrementPage: +_67.origin.y+=(_67.size.height)-_verticalPageScroll; +break; +case CPScrollerKnobSlot: +case CPScrollerKnob: +default: +_67.origin.y=ROUND(_65*((_66.size.height)-(_67.size.height))); +} +objj_msgSend(_contentView,"scrollToPoint:",_67.origin); +} +}),new objj_method(sel_getUid("_horizontalScrollerDidScroll:"),function(_68,_69,_6a){ +with(_68){ +var _6b=objj_msgSend(_6a,"floatValue"),_6c=objj_msgSend(objj_msgSend(_68,"documentView"),"frame"),_6d=objj_msgSend(_contentView,"bounds"); +switch(objj_msgSend(_horizontalScroller,"hitPart")){ +case CPScrollerDecrementLine: +_6d.origin.x-=_horizontalLineScroll; +break; +case CPScrollerIncrementLine: +_6d.origin.x+=_horizontalLineScroll; +break; +case CPScrollerDecrementPage: +_6d.origin.x-=(_6d.size.width)-_horizontalPageScroll; +break; +case CPScrollerIncrementPage: +_6d.origin.x+=(_6d.size.width)-_horizontalPageScroll; +break; +case CPScrollerKnobSlot: +case CPScrollerKnob: +default: +_6d.origin.x=ROUND(_6b*((_6c.size.width)-(_6d.size.width))); +} +objj_msgSend(_contentView,"scrollToPoint:",_6d.origin); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_6d.origin.x,0)); +} +}),new objj_method(sel_getUid("tile"),function(_6e,_6f){ +with(_6e){ +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_70,_71,_72){ +with(_70){ +objj_msgSend(_70,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("setLineScroll:"),function(_73,_74,_75){ +with(_73){ +objj_msgSend(_73,"setHorizonalLineScroll:",_75); +objj_msgSend(_73,"setVerticalLineScroll:",_75); +} +}),new objj_method(sel_getUid("lineScroll"),function(_76,_77){ +with(_76){ +return objj_msgSend(_76,"horizontalLineScroll"); +} +}),new objj_method(sel_getUid("setHorizontalLineScroll:"),function(_78,_79,_7a){ +with(_78){ +_horizontalLineScroll=_7a; +} +}),new objj_method(sel_getUid("horizontalLineScroll"),function(_7b,_7c){ +with(_7b){ +return _horizontalLineScroll; +} +}),new objj_method(sel_getUid("setVerticalLineScroll:"),function(_7d,_7e,_7f){ +with(_7d){ +_verticalLineScroll=_7f; +} +}),new objj_method(sel_getUid("verticalLineScroll"),function(_80,_81){ +with(_80){ +return _verticalLineScroll; +} +}),new objj_method(sel_getUid("setPageScroll:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(_82,"setHorizontalPageScroll:",_84); +objj_msgSend(_82,"setVerticalPageScroll:",_84); +} +}),new objj_method(sel_getUid("pageScroll"),function(_85,_86){ +with(_85){ +return objj_msgSend(_85,"horizontalPageScroll"); +} +}),new objj_method(sel_getUid("setHorizontalPageScroll:"),function(_87,_88,_89){ +with(_87){ +_horizontalPageScroll=_89; +} +}),new objj_method(sel_getUid("horizontalPageScroll"),function(_8a,_8b){ +with(_8a){ +return _horizontalPageScroll; +} +}),new objj_method(sel_getUid("setVerticalPageScroll:"),function(_8c,_8d,_8e){ +with(_8c){ +_verticalPageScroll=_8e; +} +}),new objj_method(sel_getUid("verticalPageScroll"),function(_8f,_90){ +with(_8f){ +return _verticalPageScroll; +} +}),new objj_method(sel_getUid("drawRect:"),function(_91,_92,_93){ +with(_91){ +objj_msgSendSuper({receiver:_91,super_class:objj_getClass("CPScrollView").super_class},"drawRect:",_93); +if(_borderType==CPNoBorder){ +return; +} +var _94=objj_msgSend(_91,"bounds"),_95=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetLineWidth(_95,1); +switch(_borderType){ +case CPLineBorder: +CGContextSetStrokeColor(_95,objj_msgSend(_91,"currentValueForThemeAttribute:","border-color")); +CGContextStrokeRect(_95,{origin:{x:_94.origin.x+0.5,y:_94.origin.y+0.5},size:{width:_94.size.width-2*0.5,height:_94.size.height-2*0.5}}); +break; +case CPBezelBorder: +objj_msgSend(_91,"_drawGrayBezelInContext:bounds:",_95,_94); +break; +case CPGrooveBorder: +objj_msgSend(_91,"_drawGrooveInContext:bounds:",_95,_94); +break; +default: +break; +} +} +}),new objj_method(sel_getUid("_drawGrayBezelInContext:bounds:"),function(_96,_97,_98,_99){ +with(_96){ +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",142/255,1)); +var y=(_99.origin.y)+0.5; +CGContextMoveToPoint(_98,(_99.origin.x),y); +CGContextAddLineToPoint(_98,(_99.origin.x)+1,y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",192/255,1)); +CGContextMoveToPoint(_98,(_99.origin.x)+1,y); +CGContextAddLineToPoint(_98,(_99.origin.x+_99.size.width)-1,y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",142/255,1)); +CGContextMoveToPoint(_98,(_99.origin.x+_99.size.width)-1,y); +CGContextAddLineToPoint(_98,(_99.origin.x+_99.size.width),y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",190/255,1)); +var x=(_99.origin.x+_99.size.width)-0.5; +CGContextMoveToPoint(_98,x,(_99.origin.y)+1); +CGContextAddLineToPoint(_98,x,(_99.origin.y+_99.size.height)); +CGContextMoveToPoint(_98,x-0.5,(_99.origin.y+_99.size.height)-0.5); +CGContextAddLineToPoint(_98,(_99.origin.x),(_99.origin.y+_99.size.height)-0.5); +x=(_99.origin.x)+0.5; +CGContextMoveToPoint(_98,x,(_99.origin.y+_99.size.height)); +CGContextAddLineToPoint(_98,x,(_99.origin.y)+1); +CGContextStrokePath(_98); +} +}),new objj_method(sel_getUid("_drawGrooveInContext:bounds:"),function(_9a,_9b,_9c,_9d){ +with(_9a){ +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"colorWithWhite:alpha:",159/255,1)); +var y=(_9d.origin.y)+0.5; +CGContextMoveToPoint(_9c,(_9d.origin.x),y); +CGContextAddLineToPoint(_9c,(_9d.origin.x+_9d.size.width),y); +var x=(_9d.origin.x+_9d.size.width)-1.5; +CGContextMoveToPoint(_9c,x,(_9d.origin.y)+2); +CGContextAddLineToPoint(_9c,x,(_9d.origin.y+_9d.size.height)-1); +y=(_9d.origin.y+_9d.size.height)-1.5; +CGContextMoveToPoint(_9c,(_9d.origin.x+_9d.size.width)-1,y); +CGContextAddLineToPoint(_9c,(_9d.origin.x)+2,y); +x=(_9d.origin.x)+0.5; +CGContextMoveToPoint(_9c,x,(_9d.origin.y+_9d.size.height)); +CGContextAddLineToPoint(_9c,x,(_9d.origin.y)); +CGContextStrokePath(_9c); +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"whiteColor")); +var _9e={origin:{x:_9d.origin.x+1,y:_9d.origin.y+1},size:{width:_9d.size.width,height:_9d.size.height}}; +_9e.size.width-=1; +_9e.size.height-=1; +CGContextStrokeRect(_9c,{origin:{x:_9e.origin.x+0.5,y:_9e.origin.y+0.5},size:{width:_9e.size.width-2*0.5,height:_9e.size.height-2*0.5}}); +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"colorWithWhite:alpha:",192/255,1)); +y=(_9d.origin.y)+2.5; +CGContextMoveToPoint(_9c,(_9d.origin.x)+2,y); +CGContextAddLineToPoint(_9c,(_9d.origin.x+_9d.size.width)-2,y); +CGContextStrokePath(_9c); +} +}),new objj_method(sel_getUid("scrollWheel:"),function(_9f,_a0,_a1){ +with(_9f){ +objj_msgSend(_9f,"_respondToScrollWheelEventWithDeltaX:deltaY:",objj_msgSend(_a1,"deltaX"),objj_msgSend(_a1,"deltaY")); +} +}),new objj_method(sel_getUid("_respondToScrollWheelEventWithDeltaX:deltaY:"),function(_a2,_a3,_a4,_a5){ +with(_a2){ +var _a6=objj_msgSend(objj_msgSend(_a2,"documentView"),"frame"),_a7=objj_msgSend(_contentView,"bounds"),_a8=objj_msgSend(_contentView,"frame"),_a9=objj_msgSend(_a2,"enclosingScrollView"); +_a7.origin.x=ROUND(_a7.origin.x+_a4); +_a7.origin.y=ROUND(_a7.origin.y+_a5); +var _aa=objj_msgSend(_contentView,"constrainScrollPoint:",CGPointCreateCopy(_a7.origin)),_ab=_a7.origin.x-_aa.x,_ac=_a7.origin.y-_aa.y; +objj_msgSend(_contentView,"scrollToPoint:",_aa); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_aa.x,0)); +if(_ab||_ac){ +objj_msgSend(_a9,"_respondToScrollWheelEventWithDeltaX:deltaY:",_ab,_ac); +} +} +}),new objj_method(sel_getUid("keyDown:"),function(_ad,_ae,_af){ +with(_ad){ +objj_msgSend(_ad,"interpretKeyEvents:",[_af]); +} +}),new objj_method(sel_getUid("pageUp:"),function(_b0,_b1,_b2){ +with(_b0){ +var _b3=objj_msgSend(_contentView,"bounds"); +objj_msgSend(_b0,"moveByOffset:",CGSizeMake(0,-((_b3.size.height)-_verticalPageScroll))); +} +}),new objj_method(sel_getUid("pageDown:"),function(_b4,_b5,_b6){ +with(_b4){ +var _b7=objj_msgSend(_contentView,"bounds"); +objj_msgSend(_b4,"moveByOffset:",CGSizeMake(0,(_b7.size.height)-_verticalPageScroll)); +} +}),new objj_method(sel_getUid("moveLeft:"),function(_b8,_b9,_ba){ +with(_b8){ +objj_msgSend(_b8,"moveByOffset:",CGSizeMake(-_horizontalLineScroll,0)); +} +}),new objj_method(sel_getUid("moveRight:"),function(_bb,_bc,_bd){ +with(_bb){ +objj_msgSend(_bb,"moveByOffset:",CGSizeMake(_horizontalLineScroll,0)); +} +}),new objj_method(sel_getUid("moveUp:"),function(_be,_bf,_c0){ +with(_be){ +objj_msgSend(_be,"moveByOffset:",CGSizeMake(0,-_verticalLineScroll)); +} +}),new objj_method(sel_getUid("moveDown:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSend(_c1,"moveByOffset:",CGSizeMake(0,_verticalLineScroll)); +} +}),new objj_method(sel_getUid("moveByOffset:"),function(_c4,_c5,_c6){ +with(_c4){ +var _c7=objj_msgSend(objj_msgSend(_c4,"documentView"),"frame"),_c8=objj_msgSend(_contentView,"bounds"); +_c8.origin.x+=_c6.width; +_c8.origin.y+=_c6.height; +objj_msgSend(_contentView,"scrollToPoint:",_c8.origin); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_c8.origin,0)); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_c9,_ca){ +with(_c9){ +return "scrollview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_cb,_cc){ +with(_cb){ +return objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{"bottom-corner-color":objj_msgSend(CPColor,"whiteColor"),"border-color":objj_msgSend(CPColor,"blackColor")}); +} +}),new objj_method(sel_getUid("contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:"),function(_cd,_ce,_cf,_d0,_d1,_d2){ +with(_cd){ +var _d3=objj_msgSend(_cd,"_insetBounds:borderType:",{origin:{x:0,y:0},size:{width:_cf.width,height:_cf.height}},_d2),_d4=objj_msgSend(CPScroller,"scrollerWidth"); +if(_d0){ +_d3.size.height-=_d4; +} +if(_d1){ +_d3.size.width-=_d4; +} +return _d3.size; +} +}),new objj_method(sel_getUid("frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:"),function(_d5,_d6,_d7,_d8,_d9,_da){ +with(_d5){ +var _db=objj_msgSend(_d5,"_insetBounds:borderType:",{origin:{x:0,y:0},size:{width:_d7.width,height:_d7.height}},_da),_dc=_d7.width-_db.size.width,_dd=_d7.height-_db.size.height,_de={width:_d7.width+_dc,height:_d7.height+_dd},_df=objj_msgSend(CPScroller,"scrollerWidth"); +if(_d8){ +_de.height-=_df; +} +if(_d9){ +_de.width-=_df; +} +return _de; +} +}),new objj_method(sel_getUid("_insetBounds:borderType:"),function(_e0,_e1,_e2,_e3){ +with(_e0){ +switch(_e3){ +case CPLineBorder: +case CPBezelBorder: +return {origin:{x:_e2.origin.x+1,y:_e2.origin.y+1},size:{width:_e2.size.width-2*1,height:_e2.size.height-2*1}}; +case CPGrooveBorder: +_e2={origin:{x:_e2.origin.x+2,y:_e2.origin.y+2},size:{width:_e2.size.width-2*2,height:_e2.size.height-2*2}}; +++_e2.origin.y; +--_e2.size.height; +return _e2; +case CPNoBorder: +default: +return _e2; +} +} +})]); +var _e4="CPScrollViewContentView",_e5="CPScrollViewHeaderClipViewKey",_e6="CPScrollViewVLineScroll",_e7="CPScrollViewHLineScroll",_e8="CPScrollViewVPageScroll",_e9="CPScrollViewHPageScroll",_ea="CPScrollViewHasVScroller",_eb="CPScrollViewHasHScroller",_ec="CPScrollViewVScroller",_ed="CPScrollViewHScroller",_ee="CPScrollViewAutohidesScroller",_ef="CPScrollViewCornerViewKey",_f0="CPScrollViewBorderTypeKey"; +var _1=objj_getClass("CPScrollView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPScrollView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_f1,_f2,_f3){ +with(_f1){ +if(_f1=objj_msgSendSuper({receiver:_f1,super_class:objj_getClass("CPScrollView").super_class},"initWithCoder:",_f3)){ +_verticalLineScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e6); +_verticalPageScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e8); +_horizontalLineScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e7); +_horizontalPageScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e9); +_contentView=objj_msgSend(_f3,"decodeObjectForKey:",_e4); +_headerClipView=objj_msgSend(_f3,"decodeObjectForKey:",_e5); +if(!_headerClipView){ +_headerClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"init"); +objj_msgSend(_f1,"addSubview:",_headerClipView); +} +_bottomCornerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_f1,"addSubview:",_bottomCornerView); +_verticalScroller=objj_msgSend(_f3,"decodeObjectForKey:",_ec); +_horizontalScroller=objj_msgSend(_f3,"decodeObjectForKey:",_ed); +_hasVerticalScroller=objj_msgSend(_f3,"decodeBoolForKey:",_ea); +_hasHorizontalScroller=objj_msgSend(_f3,"decodeBoolForKey:",_eb); +_autohidesScrollers=objj_msgSend(_f3,"decodeBoolForKey:",_ee); +_borderType=objj_msgSend(_f3,"decodeIntForKey:",_f0); +_cornerView=objj_msgSend(_f3,"decodeObjectForKey:",_ef); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("reflectScrolledClipView:"),_f1,_contentView,0,[CPDefaultRunLoopMode]); +} +return _f1; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_f4,_f5,_f6){ +with(_f4){ +objj_msgSendSuper({receiver:_f4,super_class:objj_getClass("CPScrollView").super_class},"encodeWithCoder:",_f6); +objj_msgSend(_f6,"encodeObject:forKey:",_contentView,_e4); +objj_msgSend(_f6,"encodeObject:forKey:",_headerClipView,_e5); +objj_msgSend(_f6,"encodeObject:forKey:",_verticalScroller,_ec); +objj_msgSend(_f6,"encodeObject:forKey:",_horizontalScroller,_ed); +objj_msgSend(_f6,"encodeFloat:forKey:",_verticalLineScroll,_e6); +objj_msgSend(_f6,"encodeFloat:forKey:",_verticalPageScroll,_e8); +objj_msgSend(_f6,"encodeFloat:forKey:",_horizontalLineScroll,_e7); +objj_msgSend(_f6,"encodeFloat:forKey:",_horizontalPageScroll,_e9); +objj_msgSend(_f6,"encodeBool:forKey:",_hasVerticalScroller,_ea); +objj_msgSend(_f6,"encodeBool:forKey:",_hasHorizontalScroller,_eb); +objj_msgSend(_f6,"encodeBool:forKey:",_autohidesScrollers,_ee); +objj_msgSend(_f6,"encodeObject:forKey:",_cornerView,_ef); +objj_msgSend(_f6,"encodeInt:forKey:",_borderType,_f0); +} +})]); +p;15;CPSearchField.jt;21870;@STATIC;1.0;i;13;CPTextField.jt;21832; +objj_executeFile("CPTextField.j",YES); +CPSearchFieldRecentsTitleMenuItemTag=1000; +CPSearchFieldRecentsMenuItemTag=1001; +CPSearchFieldClearRecentsMenuItemTag=1002; +CPSearchFieldNoRecentsMenuItemTag=1003; +CPSearchFieldSeparatorMenuItemTag=1004; +var _1=nil,_2=nil,_3=nil,_4=nil; +var _5=25,_6=22,_7=22; +var _8=" "; +var _9=objj_allocateClassPair(CPTextField,"CPSearchField"),_a=_9.isa; +class_addIvars(_9,[new objj_ivar("_searchButton"),new objj_ivar("_cancelButton"),new objj_ivar("_searchMenuTemplate"),new objj_ivar("_searchMenu"),new objj_ivar("_recentsAutosaveName"),new objj_ivar("_recentSearches"),new objj_ivar("_maximumRecents"),new objj_ivar("_sendsWholeSearchString"),new objj_ivar("_sendsSearchStringImmediately"),new objj_ivar("_canResignFirstResponder"),new objj_ivar("_partialStringTimer")]); +objj_registerClassPair(_9); +class_addMethods(_9,[new objj_method(sel_getUid("initWithFrame:"),function(_b,_c,_d){ +with(_b){ +if(_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPSearchField").super_class},"initWithFrame:",_d)){ +_maximumRecents=10; +_sendsWholeSearchString=NO; +_sendsSearchStringImmediately=NO; +_recentsAutosaveName=nil; +objj_msgSend(_b,"_init"); +_cancelButton._DOMElement.style.cursor="default"; +_searchButton._DOMElement.style.cursor="default"; +} +return _b; +} +}),new objj_method(sel_getUid("_init"),function(_e,_f){ +with(_e){ +_recentSearches=objj_msgSend(CPArray,"array"); +objj_msgSend(_e,"setBezeled:",YES); +objj_msgSend(_e,"setBezelStyle:",CPTextFieldRoundedBezel); +objj_msgSend(_e,"setBordered:",YES); +objj_msgSend(_e,"setEditable:",YES); +objj_msgSend(_e,"setDelegate:",_e); +objj_msgSend(_e,"setContinuous:",YES); +var _10=objj_msgSend(_e,"bounds"),_11=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",objj_msgSend(_e,"cancelButtonRectForBounds:",_10)),_12=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",objj_msgSend(_e,"searchButtonRectForBounds:",_10)); +objj_msgSend(_e,"setCancelButton:",_11); +objj_msgSend(_e,"resetCancelButton"); +objj_msgSend(_e,"setSearchButton:",_12); +objj_msgSend(_e,"resetSearchButton"); +_canResignFirstResponder=YES; +} +}),new objj_method(sel_getUid("setSearchButton:"),function(_13,_14,_15){ +with(_13){ +if(_15!=_searchButton){ +objj_msgSend(_searchButton,"removeFromSuperview"); +_searchButton=_15; +objj_msgSend(_searchButton,"setFrame:",objj_msgSend(_13,"searchButtonRectForBounds:",objj_msgSend(_13,"bounds"))); +objj_msgSend(_searchButton,"setAutoresizingMask:",CPViewMaxXMargin); +objj_msgSend(_13,"addSubview:",_searchButton); +} +} +}),new objj_method(sel_getUid("searchButton"),function(_16,_17){ +with(_16){ +return _searchButton; +} +}),new objj_method(sel_getUid("resetSearchButton"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_18,"searchButton"),_1b=(_searchMenuTemplate===nil)?_1:_2; +objj_msgSend(_1a,"setBordered:",NO); +objj_msgSend(_1a,"setImageScaling:",CPScaleToFit); +objj_msgSend(_1a,"setImage:",_1b); +objj_msgSend(_1a,"setAutoresizingMask:",CPViewMaxXMargin); +} +}),new objj_method(sel_getUid("setCancelButton:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_1e!=_cancelButton){ +objj_msgSend(_cancelButton,"removeFromSuperview"); +_cancelButton=_1e; +objj_msgSend(_cancelButton,"setFrame:",objj_msgSend(_1c,"cancelButtonRectForBounds:",objj_msgSend(_1c,"bounds"))); +objj_msgSend(_cancelButton,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_cancelButton,"setTarget:",_1c); +objj_msgSend(_cancelButton,"setAction:",sel_getUid("_searchFieldCancel:")); +objj_msgSend(_1c,"_updateCancelButtonVisibility"); +objj_msgSend(_1c,"addSubview:",_cancelButton); +} +} +}),new objj_method(sel_getUid("cancelButton"),function(_1f,_20){ +with(_1f){ +return _cancelButton; +} +}),new objj_method(sel_getUid("resetCancelButton"),function(_21,_22){ +with(_21){ +var _23=objj_msgSend(_21,"cancelButton"); +objj_msgSend(_23,"setBordered:",NO); +objj_msgSend(_23,"setImageScaling:",CPScaleToFit); +objj_msgSend(_23,"setImage:",_3); +objj_msgSend(_23,"setAlternateImage:",_4); +objj_msgSend(_23,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_23,"setTarget:",_21); +objj_msgSend(_23,"setAction:",sel_getUid("_searchFieldCancel:")); +} +}),new objj_method(sel_getUid("searchTextRectForBounds:"),function(_24,_25,_26){ +with(_24){ +var _27=0,_28=(_26.size.width),_29=objj_msgSend(_24,"bounds"); +if(_searchButton){ +var _2a=objj_msgSend(_24,"searchButtonRectForBounds:",_29); +_27=(_2a.origin.x+_2a.size.width)+2; +} +if(_cancelButton){ +var _2b=objj_msgSend(_24,"cancelButtonRectForBounds:",_29); +_28=(_2b.origin.x)-_27; +} +return {origin:{x:_27,y:(_26.origin.y)},size:{width:_28,height:(_26.size.height)}}; +} +}),new objj_method(sel_getUid("searchButtonRectForBounds:"),function(_2c,_2d,_2e){ +with(_2c){ +return {origin:{x:5,y:((_2e.size.height)-_7)/2},size:{width:_5,height:_7}}; +} +}),new objj_method(sel_getUid("cancelButtonRectForBounds:"),function(_2f,_30,_31){ +with(_2f){ +return {origin:{x:(_31.size.width)-_6-5,y:((_31.size.height)-_6)/2},size:{width:_7,height:_7}}; +} +}),new objj_method(sel_getUid("searchMenuTemplate"),function(_32,_33){ +with(_32){ +return _searchMenuTemplate; +} +}),new objj_method(sel_getUid("setSearchMenuTemplate:"),function(_34,_35,_36){ +with(_34){ +_searchMenuTemplate=_36; +objj_msgSend(_34,"resetSearchButton"); +objj_msgSend(_34,"_loadRecentSearchList"); +objj_msgSend(_34,"_updateSearchMenu"); +} +}),new objj_method(sel_getUid("sendsWholeSearchString"),function(_37,_38){ +with(_37){ +return _sendsWholeSearchString; +} +}),new objj_method(sel_getUid("setSendsWholeSearchString:"),function(_39,_3a,_3b){ +with(_39){ +_sendsWholeSearchString=_3b; +} +}),new objj_method(sel_getUid("sendsSearchStringImmediately"),function(_3c,_3d){ +with(_3c){ +return _sendsSearchStringImmediately; +} +}),new objj_method(sel_getUid("setSendsSearchStringImmediately:"),function(_3e,_3f,_40){ +with(_3e){ +_sendsSearchStringImmediately=_40; +} +}),new objj_method(sel_getUid("maximumRecents"),function(_41,_42){ +with(_41){ +return _maximumRecents; +} +}),new objj_method(sel_getUid("setMaximumRecents:"),function(_43,_44,max){ +with(_43){ +if(max>254){ +max=254; +}else{ +if(max<0){ +max=10; +} +} +_maximumRecents=max; +} +}),new objj_method(sel_getUid("recentSearches"),function(_45,_46){ +with(_45){ +return _recentSearches; +} +}),new objj_method(sel_getUid("setRecentSearches:"),function(_47,_48,_49){ +with(_47){ +var max=MIN(objj_msgSend(_47,"maximumRecents"),objj_msgSend(_49,"count")),_49=objj_msgSend(_49,"subarrayWithRange:",CPMakeRange(0,max)); +_recentSearches=_49; +objj_msgSend(_47,"_autosaveRecentSearchList"); +} +}),new objj_method(sel_getUid("recentsAutosaveName"),function(_4a,_4b){ +with(_4a){ +return _recentsAutosaveName; +} +}),new objj_method(sel_getUid("setRecentsAutosaveName:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_recentsAutosaveName!=nil){ +objj_msgSend(_4c,"_deregisterForAutosaveNotification"); +} +_recentsAutosaveName=_4e; +if(_recentsAutosaveName!=nil){ +objj_msgSend(_4c,"_registerForAutosaveNotification"); +} +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSendSuper({receiver:_4f,super_class:objj_getClass("CPSearchField").super_class},"contentRectForBounds:",_51); +return objj_msgSend(_4f,"searchTextRectForBounds:",_52); +} +}),new objj_method(sel_getUid("menu"),function(_53,_54){ +with(_53){ +return _searchMenu; +} +}),new objj_method(sel_getUid("isOpaque"),function(_55,_56){ +with(_55){ +return objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPSearchField").super_class},"isOpaque")&&objj_msgSend(_cancelButton,"isOpaque")&&objj_msgSend(_searchButton,"isOpaque"); +} +}),new objj_method(sel_getUid("_updateCancelButtonVisibility"),function(_57,_58){ +with(_57){ +objj_msgSend(_cancelButton,"setHidden:",(objj_msgSend(objj_msgSend(_57,"stringValue"),"length")===0)); +} +}),new objj_method(sel_getUid("controlTextDidChange:"),function(_59,_5a,_5b){ +with(_59){ +if(!objj_msgSend(_59,"sendsWholeSearchString")){ +if(objj_msgSend(_59,"sendsSearchStringImmediately")){ +objj_msgSend(_59,"_sendPartialString"); +}else{ +objj_msgSend(_partialStringTimer,"invalidate"); +var _5c=objj_msgSend(CPSearchField,"_keyboardDelayForPartialSearchString:",objj_msgSend(_59,"stringValue")); +_partialStringTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",_5c,_59,sel_getUid("_sendPartialString"),nil,NO); +} +} +objj_msgSend(_59,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_sendAction:"),function(_5d,_5e,_5f){ +with(_5d){ +objj_msgSend(_5d,"sendAction:to:",objj_msgSend(_5d,"action"),objj_msgSend(_5d,"target")); +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_60,_61,_62,_63){ +with(_60){ +objj_msgSendSuper({receiver:_60,super_class:objj_getClass("CPSearchField").super_class},"sendAction:to:",_62,_63); +objj_msgSend(_partialStringTimer,"invalidate"); +objj_msgSend(_60,"_addStringToRecentSearches:",objj_msgSend(_60,"stringValue")); +objj_msgSend(_60,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_addStringToRecentSearches:"),function(_64,_65,_66){ +with(_64){ +if(_66===nil||_66===""||objj_msgSend(_recentSearches,"containsObject:",_66)){ +return; +} +var _67=objj_msgSend(CPMutableArray,"arrayWithArray:",_recentSearches); +objj_msgSend(_67,"addObject:",_66); +objj_msgSend(_64,"setRecentSearches:",_67); +objj_msgSend(_64,"_updateSearchMenu"); +} +}),new objj_method(sel_getUid("hitTest:"),function(_68,_69,_6a){ +with(_68){ +if((_6a.x>=(objj_msgSend(_68,"frame").origin.x)&&_6a.y>=(objj_msgSend(_68,"frame").origin.y)&&_6a.x<(objj_msgSend(_68,"frame").origin.x+objj_msgSend(_68,"frame").size.width)&&_6a.y<(objj_msgSend(_68,"frame").origin.y+objj_msgSend(_68,"frame").size.height))){ +return _68; +}else{ +return nil; +} +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_6b,_6c){ +with(_6b){ +return _canResignFirstResponder&&objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPSearchField").super_class},"resignFirstResponder"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_6d,_6e,_6f){ +with(_6d){ +var _70=objj_msgSend(_6f,"locationInWindow"),_71=objj_msgSend(_6d,"convertPoint:fromView:",_70,nil); +if((_71.x>=(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x)&&_71.y>=(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y)&&_71.x<(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x+objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.width)&&_71.y<(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y+objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.height))){ +if(_searchMenuTemplate==nil){ +objj_msgSend(_6d,"_sendAction:",_6d); +}else{ +objj_msgSend(_6d,"_showMenu"); +} +}else{ +if((_71.x>=(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x)&&_71.y>=(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y)&&_71.x<(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x+objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.width)&&_71.y<(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y+objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.height))){ +objj_msgSend(_cancelButton,"mouseDown:",_6f); +}else{ +objj_msgSendSuper({receiver:_6d,super_class:objj_getClass("CPSearchField").super_class},"mouseDown:",_6f); +} +} +} +}),new objj_method(sel_getUid("defaultSearchMenuTemplate"),function(_72,_73){ +with(_72){ +var _74=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"init"),_75; +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Recent Searches",nil,""); +objj_msgSend(_75,"setTag:",CPSearchFieldRecentsTitleMenuItemTag); +objj_msgSend(_75,"setEnabled:",NO); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Recent search item",sel_getUid("_searchFieldSearch:"),""); +objj_msgSend(_75,"setTag:",CPSearchFieldRecentsMenuItemTag); +objj_msgSend(_75,"setTarget:",_72); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Clear Recent Searches",sel_getUid("_searchFieldClearRecents:"),""); +objj_msgSend(_75,"setTag:",CPSearchFieldClearRecentsMenuItemTag); +objj_msgSend(_75,"setTarget:",_72); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","No Recent Searches",nil,""); +objj_msgSend(_75,"setTag:",CPSearchFieldNoRecentsMenuItemTag); +objj_msgSend(_75,"setEnabled:",NO); +objj_msgSend(_74,"addItem:",_75); +return _74; +} +}),new objj_method(sel_getUid("_updateSearchMenu"),function(_76,_77){ +with(_76){ +if(_searchMenuTemplate===nil){ +return; +} +var _78=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"init"),_79=objj_msgSend(_recentSearches,"count"),_7a=objj_msgSend(_searchMenuTemplate,"numberOfItems"); +for(var i=0;i<_7a;i++){ +var _7b=objj_msgSend(objj_msgSend(_searchMenuTemplate,"itemAtIndex:",i),"copy"); +switch(objj_msgSend(_7b,"tag")){ +case CPSearchFieldRecentsTitleMenuItemTag: +if(_79===0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +break; +case CPSearchFieldRecentsMenuItemTag: +var _7c=sel_getUid("_searchFieldSearch:"); +for(var _7d=0;_7d<_79;++_7d){ +var _7e=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",_8+objj_msgSend(_recentSearches,"objectAtIndex:",_7d),_7c,objj_msgSend(_7b,"keyEquivalent")); +objj_msgSend(_7b,"setTarget:",_76); +objj_msgSend(_78,"addItem:",_7e); +} +continue; +case CPSearchFieldClearRecentsMenuItemTag: +if(_79===0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +objj_msgSend(_7b,"setAction:",sel_getUid("_searchFieldClearRecents:")); +objj_msgSend(_7b,"setTarget:",_76); +break; +case CPSearchFieldNoRecentsMenuItemTag: +if(_79!==0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +break; +case CPSearchFieldSeparatorMenuItemTag: +_7b=objj_msgSend(CPMenuItem,"separatorItem"); +objj_msgSend(_7b,"setEnabled:",NO); +objj_msgSend(_78,"addItem:",_7b); +continue; +} +objj_msgSend(_7b,"setEnabled:",(objj_msgSend(_7b,"isEnabled")&&objj_msgSend(_7b,"action")!=nil&&objj_msgSend(_7b,"target")!=nil)); +objj_msgSend(_78,"addItem:",_7b); +} +objj_msgSend(_78,"setDelegate:",_76); +_searchMenu=_78; +} +}),new objj_method(sel_getUid("_addSeparatorToMenu:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(CPMenuItem,"separatorItem"); +objj_msgSend(_82,"setEnabled:",NO); +objj_msgSend(_81,"addItem:",_82); +} +}),new objj_method(sel_getUid("menuWillOpen:"),function(_83,_84,_85){ +with(_83){ +_canResignFirstResponder=NO; +} +}),new objj_method(sel_getUid("menuDidClose:"),function(_86,_87,_88){ +with(_86){ +_canResignFirstResponder=YES; +objj_msgSend(_86,"becomeFirstResponder"); +} +}),new objj_method(sel_getUid("_showMenu"),function(_89,_8a){ +with(_89){ +if(_searchMenu===nil||objj_msgSend(_searchMenu,"numberOfItems")===0||!objj_msgSend(_89,"isEnabled")){ +return; +} +var _8b=objj_msgSend(objj_msgSend(_89,"superview"),"convertRect:toView:",objj_msgSend(_89,"frame"),nil),_8c=CPMakePoint(_8b.origin.x+10,_8b.origin.y+_8b.size.height-4); +var _8d=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPRightMouseDown,_8c,0,objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"timestamp"),objj_msgSend(objj_msgSend(_89,"window"),"windowNumber"),nil,1,1,0); +objj_msgSend(_89,"selectAll:",nil); +objj_msgSend(CPMenu,"popUpContextMenu:withEvent:forView:",_searchMenu,_8d,_89); +} +}),new objj_method(sel_getUid("_sendPartialString"),function(_8e,_8f){ +with(_8e){ +objj_msgSendSuper({receiver:_8e,super_class:objj_getClass("CPSearchField").super_class},"sendAction:to:",objj_msgSend(_8e,"action"),objj_msgSend(_8e,"target")); +objj_msgSend(_partialStringTimer,"invalidate"); +} +}),new objj_method(sel_getUid("_searchFieldCancel:"),function(_90,_91,_92){ +with(_90){ +objj_msgSend(_90,"setObjectValue:",""); +objj_msgSend(_90,"_sendPartialString"); +objj_msgSend(_90,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_searchFieldSearch:"),function(_93,_94,_95){ +with(_93){ +var _96=objj_msgSend(objj_msgSend(_95,"title"),"substringFromIndex:",objj_msgSend(_8,"length")); +if(objj_msgSend(_95,"tag")!=CPSearchFieldRecentsMenuItemTag){ +objj_msgSend(_93,"_addStringToRecentSearches:",_96); +} +objj_msgSend(_93,"setObjectValue:",_96); +objj_msgSend(_93,"_sendPartialString"); +objj_msgSend(_93,"selectAll:",nil); +objj_msgSend(_93,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_searchFieldClearRecents:"),function(_97,_98,_99){ +with(_97){ +objj_msgSend(_97,"setRecentSearches:",objj_msgSend(CPArray,"array")); +objj_msgSend(_97,"_updateSearchMenu"); +objj_msgSend(_97,"setStringValue:",""); +objj_msgSend(_97,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_registerForAutosaveNotification"),function(_9a,_9b){ +with(_9a){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_9a,sel_getUid("_updateAutosavedRecents:"),"CPAutosavedRecentsChangedNotification",nil); +} +}),new objj_method(sel_getUid("_deregisterForAutosaveNotification"),function(_9c,_9d){ +with(_9c){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_9c,"CPAutosavedRecentsChangedNotification",nil); +} +}),new objj_method(sel_getUid("_autosaveRecentSearchList"),function(_9e,_9f){ +with(_9e){ +if(_recentsAutosaveName!=nil){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:","CPAutosavedRecentsChangedNotification",_recentsAutosaveName); +} +} +}),new objj_method(sel_getUid("_updateAutosavedRecents:"),function(_a0,_a1,_a2){ +with(_a0){ +var _a3=objj_msgSend(_a0,"recentSearches"),_a4=objj_msgSend(_a2,"object"),_a5=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleName"),_a6=objj_msgSend(_a5,"lowercaseString")+"."+objj_msgSend(_a2,"object"),_a7=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_a6),_a8=objj_msgSend(_a3,"componentsJoinedByString:",","); +objj_msgSend(_a7,"setValue:expires:domain:",_a8,objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSinceNow:",3600*24*365),(window.location.href.hostname)); +} +}),new objj_method(sel_getUid("_loadRecentSearchList"),function(_a9,_aa){ +with(_a9){ +var _ab,_ac=objj_msgSend(_a9,"recentsAutosaveName"); +if(_ac===nil){ +return; +} +var _ad=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleName"),_ae=objj_msgSend(_ad,"lowercaseString")+"."+_ac,_af=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_ae); +if(_af!=nil){ +var _b0=objj_msgSend(_af,"value"); +_ab=(_b0!="")?objj_msgSend(_b0,"componentsSeparatedByString:",","):objj_msgSend(CPArray,"array"); +_recentSearches=_ab; +} +} +})]); +class_addMethods(_a,[new objj_method(sel_getUid("initialize"),function(_b1,_b2){ +with(_b1){ +if(_b1!=objj_msgSend(CPSearchField,"class")){ +return; +} +var _b3=objj_msgSend(CPBundle,"bundleForClass:",_b1); +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldSearch.png"),{width:_5,height:_7}); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldFind.png"),{width:_5,height:_7}); +_3=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldCancel.png"),{width:_6,height:_7}); +_4=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldCancelPressed.png"),{width:_6,height:_7}); +} +}),new objj_method(sel_getUid("_keyboardDelayForPartialSearchString:"),function(_b4,_b5,_b6){ +with(_b4){ +return (6-MIN(objj_msgSend(_b6,"length"),4))/10; +} +})]); +var _b7="CPRecentsAutosaveNameKey",_b8="CPSendsWholeSearchStringKey",_b9="CPSendsSearchStringImmediatelyKey",_ba="CPMaximumRecentsKey",_bb="CPSearchMenuTemplateKey"; +var _9=objj_getClass("CPSearchField"); +if(!_9){ +throw new SyntaxError("*** Could not find definition for class \"CPSearchField\""); +} +var _a=_9.isa; +class_addMethods(_9,[new objj_method(sel_getUid("encodeWithCoder:"),function(_bc,_bd,_be){ +with(_bc){ +objj_msgSend(_searchButton,"removeFromSuperview"); +objj_msgSend(_cancelButton,"removeFromSuperview"); +objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPSearchField").super_class},"encodeWithCoder:",_be); +if(_searchButton){ +objj_msgSend(_bc,"addSubview:",_searchButton); +} +if(_cancelButton){ +objj_msgSend(_bc,"addSubview:",_cancelButton); +} +objj_msgSend(_be,"encodeBool:forKey:",_sendsWholeSearchString,_b8); +objj_msgSend(_be,"encodeBool:forKey:",_sendsSearchStringImmediately,_b9); +objj_msgSend(_be,"encodeInt:forKey:",_maximumRecents,_ba); +if(_recentsAutosaveName){ +objj_msgSend(_be,"encodeObject:forKey:",_recentsAutosaveName,_b7); +} +if(_searchMenuTemplate){ +objj_msgSend(_be,"encodeObject:forKey:",_searchMenuTemplate,_bb); +} +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_bf,_c0,_c1){ +with(_bf){ +if(_bf=objj_msgSendSuper({receiver:_bf,super_class:objj_getClass("CPSearchField").super_class},"initWithCoder:",_c1)){ +_recentsAutosaveName=objj_msgSend(_c1,"decodeObjectForKey:",_b7); +_sendsWholeSearchString=objj_msgSend(_c1,"decodeBoolForKey:",_b8); +_sendsSearchStringImmediately=objj_msgSend(_c1,"decodeBoolForKey:",_b9); +_maximumRecents=objj_msgSend(_c1,"decodeIntForKey:",_ba); +var _c2=objj_msgSend(_c1,"decodeObjectForKey:",_bb); +if(_c2){ +objj_msgSend(_bf,"setSearchMenuTemplate:",_c2); +} +objj_msgSend(_bf,"_init"); +} +return _bf; +} +})]); +p;19;CPSecureTextField.jt;285;@STATIC;1.0;i;13;CPTextField.jt;249; +objj_executeFile("CPTextField.j",YES); +var _1=objj_allocateClassPair(CPTextField,"CPSecureTextField"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isSecure"),function(_3,_4){ +with(_3){ +return YES; +} +})]); +p;20;CPSegmentedControl.jt;23162;@STATIC;1.0;I;20;Foundation/CPArray.ji;11;CPControl.jt;23101; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("CPControl.j",YES); +CPSegmentSwitchTrackingSelectOne=0; +CPSegmentSwitchTrackingSelectAny=1; +CPSegmentSwitchTrackingMomentary=2; +var _1=objj_allocateClassPair(CPControl,"CPSegmentedControl"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_segments"),new objj_ivar("_themeStates"),new objj_ivar("_selectedSegment"),new objj_ivar("_segmentStyle"),new objj_ivar("_trackingMode"),new objj_ivar("_trackingSegment"),new objj_ivar("_trackingHighlighted")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_segments=[]; +_themeStates=[]; +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSegmentedControl").super_class},"initWithFrame:",_5); +if(_3){ +_selectedSegment=-1; +_trackingMode=CPSegmentSwitchTrackingSelectOne; +} +return _3; +} +}),new objj_method(sel_getUid("selectedTag"),function(_6,_7){ +with(_6){ +return objj_msgSend(_segments[_selectedSegment],"tag"); +} +}),new objj_method(sel_getUid("setSegmentCount:"),function(_8,_9,_a){ +with(_8){ +if(_segments.length==_a){ +return; +} +var _b=CGRectGetHeight(objj_msgSend(_8,"bounds")); +if(_segments.length<_a){ +for(var _c=_segments.length;_c<_a;++_c){ +_segments[_c]=objj_msgSend(objj_msgSend(_CPSegmentItem,"alloc"),"init"); +_themeStates[_c]=CPThemeStateNormal; +} +}else{ +if(_a<_segments.length){ +_segments.length=_a; +_themeStates.length=_a; +} +} +if(_selectedSegment>=_segments.length){ +_selectedSegment=-1; +} +objj_msgSend(_8,"tileWithChangedSegment:",0); +} +}),new objj_method(sel_getUid("segmentCount"),function(_d,_e){ +with(_d){ +return _segments.length; +} +}),new objj_method(sel_getUid("setSelectedSegment:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_f,"setSelected:forSegment:",YES,_11); +} +}),new objj_method(sel_getUid("selectedSegment"),function(_12,_13){ +with(_12){ +return _selectedSegment; +} +}),new objj_method(sel_getUid("selectSegmentWithTag:"),function(_14,_15,_16){ +with(_14){ +var _17=0; +for(;_17<_segments.length;++_17){ +if(_segments[_17].tag==_16){ +objj_msgSend(_14,"setSelectedSegment:",_17); +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("isTracking"),function(_18,_19){ +with(_18){ +} +}),new objj_method(sel_getUid("setTrackingMode:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_trackingMode==_1c){ +return; +} +_trackingMode=_1c; +if(_trackingMode==CPSegmentSwitchTrackingSelectOne){ +var _1d=0,_1e=NO; +for(;_1d<_segments.length;++_1d){ +if(objj_msgSend(_segments[_1d],"selected")){ +if(_1e){ +objj_msgSend(_1a,"setSelected:forSegment:",NO,_1d); +}else{ +_1e=YES; +} +} +} +}else{ +if(_trackingMode==CPSegmentSwitchTrackingMomentary){ +var _1d=0; +for(;_1d<_segments.length;++_1d){ +if(objj_msgSend(_segments[_1d],"selected")){ +objj_msgSend(_1a,"setSelected:forSegment:",NO,_1d); +} +} +} +} +} +}),new objj_method(sel_getUid("trackingMode"),function(_1f,_20){ +with(_1f){ +return _trackingMode; +} +}),new objj_method(sel_getUid("setWidth:forSegment:"),function(_21,_22,_23,_24){ +with(_21){ +objj_msgSend(_segments[_24],"setWidth:",_23); +objj_msgSend(_21,"tileWithChangedSegment:",_24); +} +}),new objj_method(sel_getUid("widthForSegment:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_segments[_27],"width"); +} +}),new objj_method(sel_getUid("setImage:forSegment:"),function(_28,_29,_2a,_2b){ +with(_28){ +objj_msgSend(_segments[_2b],"setImage:",_2a); +objj_msgSend(_28,"tileWithChangedSegment:",_2b); +} +}),new objj_method(sel_getUid("imageForSegment:"),function(_2c,_2d,_2e){ +with(_2c){ +return objj_msgSend(_segments[_2e],"image"); +} +}),new objj_method(sel_getUid("setLabel:forSegment:"),function(_2f,_30,_31,_32){ +with(_2f){ +objj_msgSend(_segments[_32],"setLabel:",_31); +objj_msgSend(_2f,"tileWithChangedSegment:",_32); +} +}),new objj_method(sel_getUid("labelForSegment:"),function(_33,_34,_35){ +with(_33){ +return objj_msgSend(_segments[_35],"label"); +} +}),new objj_method(sel_getUid("setMenu:forSegment:"),function(_36,_37,_38,_39){ +with(_36){ +objj_msgSend(_segments[_39],"setMenu:",_38); +} +}),new objj_method(sel_getUid("menuForSegment:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(_segments[_3c],"menu"); +} +}),new objj_method(sel_getUid("setSelected:forSegment:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +var _41=_segments[_40]; +if(objj_msgSend(_41,"selected")==_3f){ +return; +} +objj_msgSend(_41,"setSelected:",_3f); +_themeStates[_40]=_3f?CPThemeStateSelected:CPThemeStateNormal; +if(_3f){ +var _42=_selectedSegment; +_selectedSegment=_40; +if(_trackingMode==CPSegmentSwitchTrackingSelectOne&&_42!=_40&&_42!=-1){ +objj_msgSend(_segments[_42],"setSelected:",NO); +_themeStates[_42]=CPThemeStateNormal; +objj_msgSend(_3d,"drawSegmentBezel:highlight:",_42,NO); +} +} +if(_trackingMode!=CPSegmentSwitchTrackingMomentary){ +objj_msgSend(_3d,"drawSegmentBezel:highlight:",_40,NO); +} +objj_msgSend(_3d,"setNeedsLayout"); +objj_msgSend(_3d,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("isSelectedForSegment:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_segments[_45],"selected"); +} +}),new objj_method(sel_getUid("setEnabled:forSegment:"),function(_46,_47,_48,_49){ +with(_46){ +objj_msgSend(_segments[_49],"setEnabled:",_48); +if(_48){ +_themeStates[_49]&=~CPThemeStateDisabled; +}else{ +_themeStates[_49]|=CPThemeStateDisabled; +} +objj_msgSend(_46,"setNeedsLayout"); +objj_msgSend(_46,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("isEnabledForSegment:"),function(_4a,_4b,_4c){ +with(_4a){ +return objj_msgSend(_segments[_4c],"enabled"); +} +}),new objj_method(sel_getUid("setTag:forSegment:"),function(_4d,_4e,_4f,_50){ +with(_4d){ +objj_msgSend(_segments[_50],"setTag:",_4f); +} +}),new objj_method(sel_getUid("tagForSegment:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_segments[_53],"tag"); +} +}),new objj_method(sel_getUid("drawSegmentBezel:highlight:"),function(_54,_55,_56,_57){ +with(_54){ +if(_57){ +_themeStates[_56]|=CPThemeStateHighlighted; +}else{ +_themeStates[_56]&=~CPThemeStateHighlighted; +} +objj_msgSend(_54,"setNeedsLayout"); +objj_msgSend(_54,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("_leftOffsetForSegment:"),function(_58,_59,_5a){ +with(_58){ +var _5b=objj_msgSend(_58,"currentValueForThemeAttribute:","bezel-inset"); +if(_5a==0){ +return _5b.left; +} +var _5c=objj_msgSend(_58,"currentValueForThemeAttribute:","divider-thickness"); +return objj_msgSend(_58,"_leftOffsetForSegment:",_5a-1)+objj_msgSend(_58,"widthForSegment:",_5a-1)+_5c; +} +}),new objj_method(sel_getUid("_indexOfLastSegment"),function(_5d,_5e){ +with(_5d){ +var _5f=objj_msgSend(_segments,"count")-1; +if(_5f<0){ +_5f=0; +} +return _5f; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_60,_61,_62){ +with(_60){ +var _63=objj_msgSend(_60,"currentValueForThemeAttribute:","default-height"),_64=objj_msgSend(_60,"currentValueForThemeAttribute:","content-inset"),_65=objj_msgSend(_60,"currentValueForThemeAttribute:","bezel-inset"),_66=objj_msgSend(_60,"bounds"); +if(_62==="left-segment-bezel"){ +return CGRectMake(_65.left,_65.top,_64.left,_63); +}else{ +if(_62==="right-segment-bezel"){ +return CPRectMake(CGRectGetWidth(objj_msgSend(_60,"bounds"))-_64.right,_65.top,_64.right,_63); +}else{ +if(_62.indexOf("segment-bezel")===0){ +var _67=parseInt(_62.substring("segment-bezel-".length),10),_68=CGRectCreateCopy(objj_msgSend(_segments[_67],"frame")); +if(_67===0){ +_68.origin.x+=_64.left; +_68.size.width-=_64.left; +} +if(_67===_segments.length-1){ +_68.size.width=CGRectGetWidth(objj_msgSend(_60,"bounds"))-_64.right-_68.origin.x; +} +return _68; +}else{ +if(_62.indexOf("divider-bezel")===0){ +var _67=parseInt(_62.substring("divider-bezel-".length),10),_69=objj_msgSend(_60,"widthForSegment:",_67),_6a=objj_msgSend(_60,"_leftOffsetForSegment:",_67),_6b=objj_msgSend(_60,"currentValueForThemeAttribute:","divider-thickness"); +return CGRectMake(_6a+_69,_65.top,_6b,_63); +}else{ +if(_62.indexOf("segment-content")===0){ +var _67=parseInt(_62.substring("segment-content-".length),10); +return objj_msgSend(_60,"contentFrameForSegment:",_67); +} +} +} +} +} +return objj_msgSendSuper({receiver:_60,super_class:objj_getClass("CPSegmentedControl").super_class},"rectForEphemeralSubviewNamed:",_62); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_6e.substring(0,"segment-content".length)=="segment-content"){ +return objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +return objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_6f,_70){ +with(_6f){ +if(_segments.length<=0){ +return; +} +var _71=_themeStates[0]; +_71|=_themeState&CPThemeStateDisabled; +var _72=objj_msgSend(_6f,"valueForThemeAttribute:inState:","left-segment-bezel-color",_71); +var _73=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","left-segment-bezel",CPWindowBelow,nil); +objj_msgSend(_73,"setBackgroundColor:",_72); +var _71=_themeStates[_themeStates.length-1]; +_71|=_themeState&CPThemeStateDisabled; +var _74=objj_msgSend(_6f,"valueForThemeAttribute:inState:","right-segment-bezel-color",_71); +var _75=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","right-segment-bezel",CPWindowBelow,nil); +objj_msgSend(_75,"setBackgroundColor:",_74); +for(var i=0,_76=_themeStates.length;i<_76;i++){ +var _71=_themeStates[i]; +_71|=_themeState&CPThemeStateDisabled; +var _77=objj_msgSend(_6f,"valueForThemeAttribute:inState:","center-segment-bezel-color",_71); +var _78=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","segment-bezel-"+i,CPWindowBelow,nil); +objj_msgSend(_78,"setBackgroundColor:",_77); +var _79=_segments[i]; +var _7a=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","segment-content-"+i,CPWindowAbove,"segment-bezel-"+i); +objj_msgSend(_7a,"setText:",objj_msgSend(_79,"label")); +objj_msgSend(_7a,"setImage:",objj_msgSend(_79,"image")); +objj_msgSend(_7a,"setFont:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","font",_71)); +objj_msgSend(_7a,"setTextColor:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-color",_71)); +objj_msgSend(_7a,"setAlignment:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","alignment",_71)); +objj_msgSend(_7a,"setVerticalAlignment:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","vertical-alignment",_71)); +objj_msgSend(_7a,"setLineBreakMode:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","line-break-mode",_71)); +objj_msgSend(_7a,"setTextShadowColor:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-shadow-color",_71)); +objj_msgSend(_7a,"setTextShadowOffset:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-shadow-offset",_71)); +objj_msgSend(_7a,"setImageScaling:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","image-scaling",_71)); +if(objj_msgSend(_79,"image")&&objj_msgSend(_79,"label")){ +objj_msgSend(_7a,"setImagePosition:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","image-position",_71)); +}else{ +if(objj_msgSend(_79,"image")){ +objj_msgSend(_7a,"setImagePosition:",CPImageOnly); +} +} +if(i==_76-1){ +continue; +} +var _7b=_themeStates[i]|_themeStates[i+1]; +_7b=(_7b&CPThemeStateSelected&~CPThemeStateHighlighted)?CPThemeStateSelected:CPThemeStateNormal; +_7b|=_themeState&CPThemeStateDisabled; +var _7c=objj_msgSend(_6f,"valueForThemeAttribute:inState:","divider-bezel-color",_7b); +var _7d=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","divider-bezel-"+i,CPWindowBelow,nil); +objj_msgSend(_7d,"setBackgroundColor:",_7c); +} +} +}),new objj_method(sel_getUid("drawSegment:highlight:"),function(_7e,_7f,_80,_81){ +with(_7e){ +} +}),new objj_method(sel_getUid("tileWithChangedSegment:"),function(_82,_83,_84){ +with(_82){ +if(_84>=_segments.length){ +return; +} +var _85=_segments[_84],_86=objj_msgSend(_85,"width"),_87=_themeStates[_84]|(_themeState&CPThemeStateDisabled),_88=objj_msgSend(_82,"valueForThemeAttribute:inState:","content-inset",_87),_89=objj_msgSend(_82,"valueForThemeAttribute:inState:","font",_87); +if(!_86){ +if(objj_msgSend(_85,"image")&&objj_msgSend(_85,"label")){ +_86=objj_msgSend(objj_msgSend(_85,"label"),"sizeWithFont:",_89).width+objj_msgSend(objj_msgSend(_85,"image"),"size").width+_88.left+_88.right; +}else{ +if(_85.image){ +_86=objj_msgSend(objj_msgSend(_85,"image"),"size").width+_88.left+_88.right; +}else{ +if(_85.label){ +_86=objj_msgSend(objj_msgSend(_85,"label"),"sizeWithFont:",_89).width+_88.left+_88.right; +}else{ +_86=0; +} +} +} +} +var _8a=_86-CGRectGetWidth(objj_msgSend(_85,"frame")); +if(!_8a){ +objj_msgSend(_82,"setNeedsLayout"); +objj_msgSend(_82,"setNeedsDisplay:",YES); +return; +} +var _8b=objj_msgSend(_82,"frame"); +objj_msgSend(_82,"setFrameSize:",CGSizeMake(CGRectGetWidth(_8b)+_8a,CGRectGetHeight(_8b))); +objj_msgSend(_85,"setWidth:",_86); +objj_msgSend(_85,"setFrame:",objj_msgSend(_82,"frameForSegment:",_84)); +var _8c=_84+1; +for(;_8c<_segments.length;++_8c){ +objj_msgSend(_segments[_8c],"frame").origin.x+=_8a; +objj_msgSend(_82,"drawSegmentBezel:highlight:",_8c,NO); +objj_msgSend(_82,"drawSegment:highlight:",_8c,NO); +} +objj_msgSend(_82,"drawSegmentBezel:highlight:",_84,NO); +objj_msgSend(_82,"drawSegment:highlight:",_84,NO); +objj_msgSend(_82,"setNeedsLayout"); +objj_msgSend(_82,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("frameForSegment:"),function(_8d,_8e,_8f){ +with(_8d){ +return objj_msgSend(_8d,"bezelFrameForSegment:",_8f); +} +}),new objj_method(sel_getUid("bezelFrameForSegment:"),function(_90,_91,_92){ +with(_90){ +var _93=objj_msgSend(_90,"currentValueForThemeAttribute:","default-height"),_94=objj_msgSend(_90,"currentValueForThemeAttribute:","bezel-inset"),_95=objj_msgSend(_90,"widthForSegment:",_92),_96=objj_msgSend(_90,"_leftOffsetForSegment:",_92); +return CGRectMake(_96,_94.top,_95,_93); +} +}),new objj_method(sel_getUid("contentFrameForSegment:"),function(_97,_98,_99){ +with(_97){ +var _9a=objj_msgSend(_97,"currentValueForThemeAttribute:","default-height"),_9b=objj_msgSend(_97,"currentValueForThemeAttribute:","content-inset"),_9c=objj_msgSend(_97,"widthForSegment:",_99),_9d=objj_msgSend(_97,"_leftOffsetForSegment:",_99); +return CGRectMake(_9d+_9b.left,_9b.top,_9c-_9b.left-_9b.right,_9a-_9b.top-_9b.bottom); +} +}),new objj_method(sel_getUid("testSegment:"),function(_9e,_9f,_a0){ +with(_9e){ +var _a1=objj_msgSend(_9e,"convertPoint:fromView:",_a0,nil),_a2=_segments.length; +while(_a2--){ +if(CGRectContainsPoint(objj_msgSend(_segments[_a2],"frame"),_a0)){ +return _a2; +} +} +if(_segments.length){ +var _a3=CGRectCreateCopy(objj_msgSend(_segments[_segments.length-1],"frame")); +_a3.size.width=CGRectGetWidth(objj_msgSend(_9e,"bounds"))-_a3.origin.x; +if(CGRectContainsPoint(_a3,_a0)){ +return _segments.length-1; +} +} +return -1; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_a4,_a5,_a6){ +with(_a4){ +if(!objj_msgSend(_a4,"isEnabled")){ +return; +} +objj_msgSend(_a4,"trackSegment:",_a6); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_a7,_a8,_a9){ +with(_a7){ +} +}),new objj_method(sel_getUid("trackSegment:"),function(_aa,_ab,_ac){ +with(_aa){ +var _ad=objj_msgSend(_ac,"type"),_ae=objj_msgSend(_aa,"convertPoint:fromView:",objj_msgSend(_ac,"locationInWindow"),nil); +if(_ad==CPLeftMouseUp){ +if(_trackingSegment==-1){ +return; +} +if(_trackingSegment===objj_msgSend(_aa,"testSegment:",_ae)){ +if(_trackingMode==CPSegmentSwitchTrackingSelectAny){ +objj_msgSend(_aa,"setSelected:forSegment:",!objj_msgSend(_aa,"isSelectedForSegment:",_trackingSegment),_trackingSegment); +_selectedSegment=_trackingSegment; +}else{ +objj_msgSend(_aa,"setSelected:forSegment:",YES,_trackingSegment); +} +objj_msgSend(_aa,"sendAction:to:",objj_msgSend(_aa,"action"),objj_msgSend(_aa,"target")); +if(_trackingMode==CPSegmentSwitchTrackingMomentary){ +objj_msgSend(_aa,"setSelected:forSegment:",NO,_trackingSegment); +_selectedSegment=-1; +} +} +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,NO); +_trackingSegment=-1; +return; +} +if(_ad==CPLeftMouseDown){ +var _af=objj_msgSend(_aa,"testSegment:",_ae); +if(_af>-1&&objj_msgSend(_aa,"isEnabledForSegment:",_af)){ +_trackingHighlighted=YES; +_trackingSegment=_af; +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,YES); +} +}else{ +if(_ad==CPLeftMouseDragged){ +if(_trackingSegment==-1){ +return; +} +var _b0=objj_msgSend(_aa,"testSegment:",_ae)===_trackingSegment; +if(_b0!=_trackingHighlighted){ +_trackingHighlighted=_b0; +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,_trackingHighlighted); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_aa,sel_getUid("trackSegment:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("setFont:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSendSuper({receiver:_b1,super_class:objj_getClass("CPSegmentedControl").super_class},"setFont:",_b3); +objj_msgSend(_b1,"tileWithChangedSegment:",0); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_b4,_b5){ +with(_b4){ +return "segmented-control"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_b6,_b7){ +with(_b6){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CPCenterTextAlignment,CPCenterVerticalTextAlignment,CPImageLeft,CPScaleNone,{top:(0),right:(0),bottom:(0),left:(0)},{top:(0),right:(0),bottom:(0),left:(0)},objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),1,24],["alignment","vertical-alignment","image-position","image-scaling","bezel-inset","content-inset","left-segment-bezel-color","right-segment-bezel-color","center-segment-bezel-color","divider-bezel-color","divider-thickness","default-height"]); +} +})]); +var _b8="CPSegmentedControlSegmentsKey",_b9="CPSegmentedControlSelectedKey",_ba="CPSegmentedControlSegmentStyleKey",_bb="CPSegmentedControlTrackingModeKey"; +var _1=objj_getClass("CPSegmentedControl"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSegmentedControl\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_bc,_bd,_be){ +with(_bc){ +_bc=objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPSegmentedControl").super_class},"initWithCoder:",_be); +if(_bc){ +var _bf=objj_msgSend(_bc,"frame"),_c0=_bf.size.width; +_bf.size.width=0; +objj_msgSend(_bc,"setFrame:",_bf); +_segments=objj_msgSend(_be,"decodeObjectForKey:",_b8); +_segmentStyle=objj_msgSend(_be,"decodeIntForKey:",_ba); +_themeStates=[]; +if(objj_msgSend(_be,"containsValueForKey:",_b9)){ +_selectedSegment=objj_msgSend(_be,"decodeIntForKey:",_b9); +}else{ +_selectedSegment=-1; +} +if(objj_msgSend(_be,"containsValueForKey:",_bb)){ +_trackingMode=objj_msgSend(_be,"decodeIntForKey:",_bb); +}else{ +_trackingMode=CPSegmentSwitchTrackingSelectOne; +} +for(var i=0;i<_segments.length;i++){ +_themeStates[i]=objj_msgSend(_segments[i],"selected")?CPThemeStateSelected:CPThemeStateNormal; +objj_msgSend(_bc,"tileWithChangedSegment:",i); +} +var _c1=MAX(_c0-objj_msgSend(_bc,"frame").size.width,0),_c2=FLOOR(_c1/_segments.length); +for(var i=0;i<_segments.length;i++){ +objj_msgSend(_bc,"setWidth:forSegment:",objj_msgSend(_segments[i],"width")+_c2,i); +} +objj_msgSend(_bc,"tileWithChangedSegment:",0); +} +return _bc; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c3,_c4,_c5){ +with(_c3){ +objj_msgSendSuper({receiver:_c3,super_class:objj_getClass("CPSegmentedControl").super_class},"encodeWithCoder:",_c5); +objj_msgSend(_c5,"encodeObject:forKey:",_segments,_b8); +objj_msgSend(_c5,"encodeInt:forKey:",_selectedSegment,_b9); +objj_msgSend(_c5,"encodeInt:forKey:",_segmentStyle,_ba); +objj_msgSend(_c5,"encodeInt:forKey:",_trackingMode,_bb); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPSegmentItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("image"),new objj_ivar("label"),new objj_ivar("menu"),new objj_ivar("selected"),new objj_ivar("enabled"),new objj_ivar("tag"),new objj_ivar("width"),new objj_ivar("frame")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("image"),function(_c6,_c7){ +with(_c6){ +return image; +} +}),new objj_method(sel_getUid("setImage:"),function(_c8,_c9,_ca){ +with(_c8){ +image=_ca; +} +}),new objj_method(sel_getUid("label"),function(_cb,_cc){ +with(_cb){ +return label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_cd,_ce,_cf){ +with(_cd){ +label=_cf; +} +}),new objj_method(sel_getUid("menu"),function(_d0,_d1){ +with(_d0){ +return menu; +} +}),new objj_method(sel_getUid("setMenu:"),function(_d2,_d3,_d4){ +with(_d2){ +menu=_d4; +} +}),new objj_method(sel_getUid("selected"),function(_d5,_d6){ +with(_d5){ +return selected; +} +}),new objj_method(sel_getUid("setSelected:"),function(_d7,_d8,_d9){ +with(_d7){ +selected=_d9; +} +}),new objj_method(sel_getUid("enabled"),function(_da,_db){ +with(_da){ +return enabled; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_dc,_dd,_de){ +with(_dc){ +enabled=_de; +} +}),new objj_method(sel_getUid("tag"),function(_df,_e0){ +with(_df){ +return tag; +} +}),new objj_method(sel_getUid("setTag:"),function(_e1,_e2,_e3){ +with(_e1){ +tag=_e3; +} +}),new objj_method(sel_getUid("width"),function(_e4,_e5){ +with(_e4){ +return width; +} +}),new objj_method(sel_getUid("setWidth:"),function(_e6,_e7,_e8){ +with(_e6){ +width=_e8; +} +}),new objj_method(sel_getUid("frame"),function(_e9,_ea){ +with(_e9){ +return frame; +} +}),new objj_method(sel_getUid("setFrame:"),function(_eb,_ec,_ed){ +with(_eb){ +frame=_ed; +} +}),new objj_method(sel_getUid("init"),function(_ee,_ef){ +with(_ee){ +if(_ee=objj_msgSendSuper({receiver:_ee,super_class:objj_getClass("_CPSegmentItem").super_class},"init")){ +image=nil; +label=""; +menu=nil; +selected=NO; +enabled=YES; +tag=-1; +width=0; +frame=CGRectMakeZero(); +} +return _ee; +} +})]); +var _f0="CPSegmentItemImageKey",_f1="CPSegmentItemLabelKey",_f2="CPSegmentItemMenuKey",_f3="CPSegmentItemSelectedKey",_f4="CPSegmentItemEnabledKey",_f5="CPSegmentItemTagKey",_f6="CPSegmentItemWidthKey"; +var _1=objj_getClass("_CPSegmentItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPSegmentItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_f7,_f8,_f9){ +with(_f7){ +_f7=objj_msgSendSuper({receiver:_f7,super_class:objj_getClass("_CPSegmentItem").super_class},"init"); +if(_f7){ +image=objj_msgSend(_f9,"decodeObjectForKey:",_f0); +label=objj_msgSend(_f9,"decodeObjectForKey:",_f1); +menu=objj_msgSend(_f9,"decodeObjectForKey:",_f2); +selected=objj_msgSend(_f9,"decodeBoolForKey:",_f3); +enabled=objj_msgSend(_f9,"decodeBoolForKey:",_f4); +tag=objj_msgSend(_f9,"decodeIntForKey:",_f5); +width=objj_msgSend(_f9,"decodeFloatForKey:",_f6); +frame=CGRectMakeZero(); +} +return _f7; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_fa,_fb,_fc){ +with(_fa){ +objj_msgSend(_fc,"encodeObject:forKey:",image,_f0); +objj_msgSend(_fc,"encodeObject:forKey:",label,_f1); +objj_msgSend(_fc,"encodeObject:forKey:",menu,_f2); +objj_msgSend(_fc,"encodeBool:forKey:",selected,_f3); +objj_msgSend(_fc,"encodeBool:forKey:",enabled,_f4); +objj_msgSend(_fc,"encodeInt:forKey:",tag,_f5); +objj_msgSend(_fc,"encodeFloat:forKey:",width,_f6); +} +})]); +p;10;CPShadow.jt;1333;@STATIC;1.0;I;21;Foundation/CPObject.jt;1288; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPShadow"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_offset"),new objj_ivar("_blurRadius"),new objj_ivar("_color"),new objj_ivar("_cssString")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_initWithOffset:blurRadius:color:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPShadow").super_class},"init"); +if(_3){ +_offset=_5; +_blurRadius=_6; +_color=_7; +_cssString=objj_msgSend(_color,"cssString")+" "+Math.round(_5.width)+"px "+Math.round(_5.height)+"px "+Math.round(_blurRadius)+"px"; +} +return _3; +} +}),new objj_method(sel_getUid("shadowOffset"),function(_8,_9){ +with(_8){ +return _offset; +} +}),new objj_method(sel_getUid("shadowBlurRadius"),function(_a,_b){ +with(_a){ +return _blurRadius; +} +}),new objj_method(sel_getUid("shadowColor"),function(_c,_d){ +with(_c){ +return _color; +} +}),new objj_method(sel_getUid("cssString"),function(_e,_f){ +with(_e){ +return _cssString; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("shadowWithOffset:blurRadius:color:"),function(_10,_11,_12,_13,_14){ +with(_10){ +return objj_msgSend(objj_msgSend(CPShadow,"alloc"),"_initWithOffset:blurRadius:color:",_12,_13,_14); +} +})]); +p;14;CPShadowView.jt;6828;@STATIC;1.0;I;21;Foundation/CPBundle.ji;12;CGGeometry.ji;9;CPImage.ji;13;CPImageView.ji;8;CPView.jt;6723; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPView.j",YES); +CPLightShadow=0; +CPHeavyShadow=1; +var _1=nil,_2=nil; +var _3=3,_4=3,_5=3,_6=5,_7=7,_8=7,_9=5,_a=5; +var _b=objj_allocateClassPair(CPView,"CPShadowView"),_c=_b.isa; +class_addIvars(_b,[new objj_ivar("_weight")]); +objj_registerClassPair(_b); +class_addMethods(_b,[new objj_method(sel_getUid("initWithFrame:"),function(_d,_e,_f){ +with(_d){ +_d=objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPShadowView").super_class},"initWithFrame:",_f); +if(_d){ +_weight=CPLightShadow; +objj_msgSend(_d,"setBackgroundColor:",_1); +objj_msgSend(_d,"setHitTests:",NO); +} +return _d; +} +}),new objj_method(sel_getUid("setWeight:"),function(_10,_11,_12){ +with(_10){ +if(_weight==_12){ +return; +} +_weight=_12; +if(_weight==CPLightShadow){ +objj_msgSend(_10,"setBackgroundColor:",_1); +}else{ +objj_msgSend(_10,"setBackgroundColor:",_2); +} +} +}),new objj_method(sel_getUid("leftInset"),function(_13,_14){ +with(_13){ +return _weight==CPLightShadow?_3:_7; +} +}),new objj_method(sel_getUid("rightInset"),function(_15,_16){ +with(_15){ +return _weight==CPLightShadow?_4:_8; +} +}),new objj_method(sel_getUid("topInset"),function(_17,_18){ +with(_17){ +return _weight==CPLightShadow?_5:_9; +} +}),new objj_method(sel_getUid("bottomInset"),function(_19,_1a){ +with(_19){ +return _weight==CPLightShadow?_6:_a; +} +}),new objj_method(sel_getUid("horizontalInset"),function(_1b,_1c){ +with(_1b){ +if(_weight==CPLightShadow){ +return _3+_4; +} +return _7+_8; +} +}),new objj_method(sel_getUid("verticalInset"),function(_1d,_1e){ +with(_1d){ +if(_weight==CPLightShadow){ +return _5+_6; +} +return _9+_a; +} +}),new objj_method(sel_getUid("frameForContentFrame:"),function(_1f,_20,_21){ +with(_1f){ +return objj_msgSend(objj_msgSend(_1f,"class"),"frameForContentFrame:withWeight:",_21,_weight); +} +}),new objj_method(sel_getUid("setFrameForContentFrame:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_22,"setFrame:",objj_msgSend(_22,"frameForContentFrame:",_24)); +} +})]); +class_addMethods(_c,[new objj_method(sel_getUid("initialize"),function(_25,_26){ +with(_25){ +if(_25!=objj_msgSend(CPShadowView,"class")){ +return; +} +var _27=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_25,"class")); +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTopLeft.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTop.png"),CGSizeMake(1,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTopRight.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightLeft.png"),CGSizeMake(9,1)),nil,objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightRight.png"),CGSizeMake(9,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottomLeft.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottom.png"),CGSizeMake(1,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottomRight.png"),CGSizeMake(9,9))])); +_2=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTopLeft.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTop.png"),CGSizeMake(1,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTopRight.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyLeft.png"),CGSizeMake(17,1)),nil,objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyRight.png"),CGSizeMake(17,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottomLeft.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottom.png"),CGSizeMake(1,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottomRight.png"),CGSizeMake(17,17))])); +} +}),new objj_method(sel_getUid("shadowViewEnclosingView:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(_28,"shadowViewEnclosingView:withWeight:",_2a,CPLightShadow); +} +}),new objj_method(sel_getUid("shadowViewEnclosingView:withWeight:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +var _2f=objj_msgSend(objj_msgSend(CPShadowView,"alloc"),"initWithFrame:",objj_msgSend(_2d,"frame")); +objj_msgSend(_2f,"setWeight:",_2e); +var _30=objj_msgSend(_2f,"frame").size,_31=_30.width-objj_msgSend(_2f,"leftInset")-objj_msgSend(_2f,"rightInset"),_32=_30.height-objj_msgSend(_2f,"topInset")-objj_msgSend(_2f,"bottomInset"),_33=objj_msgSend(_2d,"superview"); +objj_msgSend(_2f,"setHitTests:",objj_msgSend(_2d,"hitTests")); +objj_msgSend(_2f,"setAutoresizingMask:",objj_msgSend(_2d,"autoresizingMask")); +objj_msgSend(_2d,"removeFromSuperview"); +objj_msgSend(_2f,"addSubview:",_2d); +objj_msgSend(_2d,"setFrame:",CGRectMake(objj_msgSend(_2f,"leftInset"),objj_msgSend(_2f,"topInset"),_31,_32)); +objj_msgSend(_33,"addSubview:",_2f); +return _2f; +} +}),new objj_method(sel_getUid("frameForContentFrame:withWeight:"),function(_34,_35,_36,_37){ +with(_34){ +if(_37==CPLightShadow){ +return CGRectMake((_36.origin.x)-_3,(_36.origin.y)-_5,(_36.size.width)+_3+_4,(_36.size.height)+_5+_6); +}else{ +return CGRectMake((_36.origin.x)-_7,(_36.origin.y)-_9,(_36.size.width)+_7+_8,(_36.size.height)+_9+_a); +} +} +})]); +p;10;CPSlider.jt;11751;@STATIC;1.0;i;11;CPControl.jt;11715; +objj_executeFile("CPControl.j",YES); +CPLinearSlider=0; +CPCircularSlider=1; +var _1=objj_allocateClassPair(CPControl,"CPSlider"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_minValue"),new objj_ivar("_maxValue"),new objj_ivar("_altIncrementValue"),new objj_ivar("_isVertical")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSlider").super_class},"initWithFrame:",_5); +if(_3){ +_minValue=0; +_maxValue=100; +objj_msgSend(_3,"setObjectValue:",50); +objj_msgSend(_3,"setContinuous:",YES); +objj_msgSend(_3,"_recalculateIsVertical"); +} +return _3; +} +}),new objj_method(sel_getUid("setMinValue:"),function(_6,_7,_8){ +with(_6){ +if(_minValue===_8){ +return; +} +_minValue=_8; +var _9=objj_msgSend(_6,"doubleValue"); +if(_9<_minValue){ +objj_msgSend(_6,"setDoubleValue:",_minValue); +} +objj_msgSend(_6,"setNeedsLayout"); +objj_msgSend(_6,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("minValue"),function(_a,_b){ +with(_a){ +return _minValue; +} +}),new objj_method(sel_getUid("setMaxValue:"),function(_c,_d,_e){ +with(_c){ +if(_maxValue===_e){ +return; +} +_maxValue=_e; +var _f=objj_msgSend(_c,"doubleValue"); +if(_f>_maxValue){ +objj_msgSend(_c,"setDoubleValue:",_maxValue); +} +objj_msgSend(_c,"setNeedsLayout"); +objj_msgSend(_c,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("maxValue"),function(_10,_11){ +with(_10){ +return _maxValue; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_12,_13,_14){ +with(_12){ +objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPSlider").super_class},"setObjectValue:",MIN(MAX(_14,_minValue),_maxValue)); +objj_msgSend(_12,"setNeedsLayout"); +objj_msgSend(_12,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setSliderType:"),function(_15,_16,_17){ +with(_15){ +if(_17===CPCircularSlider){ +objj_msgSend(_15,"setThemeState:",CPThemeStateCircular); +}else{ +objj_msgSend(_15,"unsetThemeState:",CPThemeStateCircular); +} +} +}),new objj_method(sel_getUid("sliderType"),function(_18,_19){ +with(_18){ +return objj_msgSend(_18,"hasThemeState:",CPThemeStateCircular)?CPCircularSlider:CPLinearSlider; +} +}),new objj_method(sel_getUid("trackRectForBounds:"),function(_1a,_1b,_1c){ +with(_1a){ +if(objj_msgSend(_1a,"hasThemeState:",CPThemeStateCircular)){ +var _1d=CGRectCreateCopy(_1c); +_1c.size.width=MIN(_1c.size.width,_1c.size.height); +_1c.size.height=_1c.size.width; +if(_1c.size.width<_1d.size.width){ +_1c.origin.x+=(_1d.size.width-_1c.size.width)/2; +}else{ +_1c.origin.y+=(_1d.size.height-_1c.size.height)/2; +} +}else{ +var _1e=objj_msgSend(_1a,"currentValueForThemeAttribute:","track-width"); +if(_1e<=0){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(objj_msgSend(_1a,"isVertical")){ +_1c.origin.x=((_1c.size.width)-_1e)/2; +_1c.size.width=_1e; +}else{ +_1c.origin.y=((_1c.size.height)-_1e)/2; +_1c.size.height=_1e; +} +} +return _1c; +} +}),new objj_method(sel_getUid("knobRectForBounds:"),function(_1f,_20,_21){ +with(_1f){ +var _22=objj_msgSend(_1f,"currentValueForThemeAttribute:","knob-size"); +if(_22.width<=0||_22.height<=0){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _23={origin:{x:0,y:0},size:{width:_22.width,height:_22.height}},_24=objj_msgSend(_1f,"trackRectForBounds:",_21); +if(!_24||(_24.size.width<=0||_24.size.height<=0)){ +_24=_21; +} +if(objj_msgSend(_1f,"hasThemeState:",CPThemeStateCircular)){ +var _25=3*PI_2-(1-objj_msgSend(_1f,"doubleValue")-_minValue)/(_maxValue-_minValue)*PI2,_26=CGRectGetWidth(_24)/2-8; +_23.origin.x=_26*COS(_25)+CGRectGetMidX(_24)-3; +_23.origin.y=_26*SIN(_25)+CGRectGetMidY(_24)-2; +}else{ +if(objj_msgSend(_1f,"isVertical")){ +_23.origin.x=(_24.origin.x+(_24.size.width)/2)-_22.width/2; +_23.origin.y=((_maxValue-objj_msgSend(_1f,"doubleValue"))/(_maxValue-_minValue))*((_24.size.height)-_22.height); +}else{ +_23.origin.x=((objj_msgSend(_1f,"doubleValue")-_minValue)/(_maxValue-_minValue))*((_24.size.width)-_22.width); +_23.origin.y=(_24.origin.y+(_24.size.height)/2)-_22.height/2; +} +} +return _23; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_27,_28,_29){ +with(_27){ +if(_29==="track-view"){ +return objj_msgSend(_27,"trackRectForBounds:",objj_msgSend(_27,"bounds")); +}else{ +if(_29==="knob-view"){ +return objj_msgSend(_27,"knobRectForBounds:",objj_msgSend(_27,"bounds")); +} +} +return objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPSlider").super_class},"rectForEphemeralSubviewNamed:",_29); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_2c==="track-view"||_2c==="knob-view"){ +var _2d=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_2d,"setHitTests:",NO); +return _2d; +} +return objj_msgSendSuper({receiver:_2a,super_class:objj_getClass("CPSlider").super_class},"createEphemeralSubviewNamed:",_2c); +} +}),new objj_method(sel_getUid("setAltIncrementValue:"),function(_2e,_2f,_30){ +with(_2e){ +_altIncrementValue=_30; +} +}),new objj_method(sel_getUid("altIncrementValue"),function(_31,_32){ +with(_31){ +return _altIncrementValue; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_33,_34,_35){ +with(_33){ +objj_msgSendSuper({receiver:_33,super_class:objj_getClass("CPSlider").super_class},"setFrameSize:",_35); +objj_msgSend(_33,"_recalculateIsVertical"); +} +}),new objj_method(sel_getUid("_recalculateIsVertical"),function(_36,_37){ +with(_36){ +var _38=objj_msgSend(_36,"bounds"),_39=(_38.size.width),_3a=(_38.size.height); +_isVertical=_39<_3a?1:(_39>_3a?0:-1); +if(_isVertical===1){ +objj_msgSend(_36,"setThemeState:",CPThemeStateVertical); +}else{ +if(_isVertical===0){ +objj_msgSend(_36,"unsetThemeState:",CPThemeStateVertical); +} +} +} +}),new objj_method(sel_getUid("isVertical"),function(_3b,_3c){ +with(_3b){ +return _isVertical; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_3d,_3e){ +with(_3d){ +var _3f=objj_msgSend(_3d,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","track-view",CPWindowBelow,"knob-view"); +if(_3f){ +objj_msgSend(_3f,"setBackgroundColor:",objj_msgSend(_3d,"currentValueForThemeAttribute:","track-color")); +} +var _40=objj_msgSend(_3d,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","knob-view",CPWindowAbove,"track-view"); +if(_40){ +objj_msgSend(_40,"setBackgroundColor:",objj_msgSend(_3d,"currentValueForThemeAttribute:","knob-color")); +} +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(_41,_42){ +with(_41){ +return YES; +} +}),new objj_method(sel_getUid("_valueAtPoint:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_43,"bounds"),_47=objj_msgSend(_43,"knobRectForBounds:",_46),_48=objj_msgSend(_43,"trackRectForBounds:",_46); +if(objj_msgSend(_43,"hasThemeState:",CPThemeStateCircular)){ +var _49=(_47.size.width); +_48.origin.x+=_49/2; +_48.size.width-=_49; +var _4a=objj_msgSend(_43,"minValue"),dx=_45.x-(_48.origin.x+(_48.size.width)/2),dy=_45.y-(_48.origin.y+(_48.size.height)/2); +return MAX(0,MIN(1,1-(3*PI_2-ATAN2(dy,dx))%PI2/PI2))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +}else{ +if(objj_msgSend(_43,"isVertical")){ +var _4b=(_47.size.height); +_48.origin.y+=_4b/2; +_48.size.height-=_4b; +var _4a=objj_msgSend(_43,"minValue"); +return MAX(0,MIN(1,((_48.origin.y+_48.size.height)-_45.y)/(_48.size.height)))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +}else{ +var _49=(_47.size.width); +_48.origin.x+=_49/2; +_48.size.width-=_49; +var _4a=objj_msgSend(_43,"minValue"); +return MAX(0,MIN(1,(_45.x-(_48.origin.x))/(_48.size.width)))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +} +} +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_4c,_4d,_4e){ +with(_4c){ +var _4f=objj_msgSend(_4c,"bounds"),_50=objj_msgSend(_4c,"knobRectForBounds:",{origin:{x:_4f.origin.x,y:_4f.origin.y},size:{width:_4f.size.width,height:_4f.size.height}}); +if((_4e.x>=(_50.origin.x)&&_4e.y>=(_50.origin.y)&&_4e.x<(_50.origin.x+_50.size.width)&&_4e.y<(_50.origin.y+_50.size.height))){ +_dragOffset={width:(_50.origin.x+(_50.size.width)/2)-_4e.x,height:(_50.origin.y+(_50.size.height)/2)-_4e.y}; +}else{ +var _51=objj_msgSend(_4c,"trackRectForBounds:",_4f); +if(_51&&(_4e.x>=(_51.origin.x)&&_4e.y>=(_51.origin.y)&&_4e.x<(_51.origin.x+_51.size.width)&&_4e.y<(_51.origin.y+_51.size.height))){ +_dragOffset={width:0,height:0}; +objj_msgSend(_4c,"setObjectValue:",objj_msgSend(_4c,"_valueAtPoint:",_4e)); +}else{ +return NO; +} +} +objj_msgSend(_4c,"setHighlighted:",YES); +objj_msgSend(_4c,"setNeedsLayout"); +objj_msgSend(_4c,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(_52,_53,_54,_55){ +with(_52){ +objj_msgSend(_52,"setObjectValue:",objj_msgSend(_52,"_valueAtPoint:",{x:_55.x+_dragOffset.width,y:_55.y+_dragOffset.height})); +return YES; +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_56,_57,_58,_59,_5a){ +with(_56){ +objj_msgSend(_56,"setHighlighted:",NO); +if(objj_msgSend(_target,"respondsToSelector:",sel_getUid("sliderDidFinish:"))){ +objj_msgSend(_target,"sliderDidFinish:",_56); +} +objj_msgSend(_56,"setNeedsLayout"); +objj_msgSend(_56,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setContinuous:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d){ +_sendActionOn|=CPLeftMouseDraggedMask; +}else{ +_sendActionOn&=~CPLeftMouseDraggedMask; +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_5e,_5f,_60,_61){ +with(_5e){ +var _62=_61.length,_63=objj_msgSend(_61[0],"valueForKeyPath:",_60); +objj_msgSend(_5e,"setObjectValue:",_63); +while(_62-->1){ +if(_63!==(objj_msgSend(_61[_62],"valueForKeyPath:",_60))){ +return objj_msgSend(_5e,"setFloatValue:",1); +} +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_64,_65){ +with(_64){ +return "slider"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_66,_67){ +with(_66){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),{width:0,height:0},0,objj_msgSend(CPNull,"null")],["knob-color","knob-size","track-width","track-color"]); +} +})]); +var _68="CPSliderMinValueKey",_69="CPSliderMaxValueKey",_6a="CPSliderAltIncrValueKey"; +var _1=objj_getClass("CPSlider"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_6b,_6c,_6d){ +with(_6b){ +_minValue=objj_msgSend(_6d,"decodeDoubleForKey:",_68); +_maxValue=objj_msgSend(_6d,"decodeDoubleForKey:",_69); +_6b=objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPSlider").super_class},"initWithCoder:",_6d); +if(_6b){ +_altIncrementValue=objj_msgSend(_6d,"decodeDoubleForKey:",_6a); +objj_msgSend(_6b,"setContinuous:",YES); +objj_msgSend(_6b,"_recalculateIsVertical"); +objj_msgSend(_6b,"setNeedsLayout"); +objj_msgSend(_6b,"setNeedsDisplay:",YES); +} +return _6b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6e,_6f,_70){ +with(_6e){ +objj_msgSendSuper({receiver:_6e,super_class:objj_getClass("CPSlider").super_class},"encodeWithCoder:",_70); +objj_msgSend(_70,"encodeDouble:forKey:",_minValue,_68); +objj_msgSend(_70,"encodeDouble:forKey:",_maxValue,_69); +objj_msgSend(_70,"encodeDouble:forKey:",_altIncrementValue,_6a); +} +})]); +var _1=objj_getClass("CPSlider"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("value"),function(_71,_72){ +with(_71){ +CPLog.warn("[CPSlider value] is deprecated, use doubleValue or objectValue instead."); +return objj_msgSend(_71,"doubleValue"); +} +}),new objj_method(sel_getUid("setValue:"),function(_73,_74,_75){ +with(_73){ +CPLog.warn("[CPSlider setValue:] is deprecated, use setDoubleValue: or setObjectValue: instead."); +objj_msgSend(_73,"setObjectValue:",_75); +} +})]); +p;21;CPSliderColorPicker.jt;14189;@STATIC;1.0;i;15;CPColorPicker.jt;14149; +objj_executeFile("CPColorPicker.j",YES); +var _1=objj_allocateClassPair(CPColorPicker,"CPSliderColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentView"),new objj_ivar("_redSlider"),new objj_ivar("_greenSlider"),new objj_ivar("_blueSlider"),new objj_ivar("_hueSlider"),new objj_ivar("_saturationSlider"),new objj_ivar("_brightnessSlider"),new objj_ivar("_rgbLabel"),new objj_ivar("_hsbLabel"),new objj_ivar("_redLabel"),new objj_ivar("_greenLabel"),new objj_ivar("_blueLabel"),new objj_ivar("_hueLabel"),new objj_ivar("_saturationLabel"),new objj_ivar("_brightnessLabel"),new objj_ivar("_hexLabel"),new objj_ivar("_hexValue"),new objj_ivar("_hexValue"),new objj_ivar("_redValue"),new objj_ivar("_greenValue"),new objj_ivar("_blueValue"),new objj_ivar("_hueValue"),new objj_ivar("_saturationValue"),new objj_ivar("_brightnessValue")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_3,_4,_5,_6){ +with(_3){ +return objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSliderColorPicker").super_class},"initWithPickerMask:colorPanel:",_5,_6); +} +}),new objj_method(sel_getUid("initView"),function(_7,_8){ +with(_7){ +aFrame=CPRectMake(0,0,CPColorPickerViewWidth,CPColorPickerViewHeight); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",aFrame); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_rgbLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,10,100,20)); +objj_msgSend(_rgbLabel,"setStringValue:","Red, Green, Blue"); +objj_msgSend(_rgbLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_redLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,35,15,20)); +objj_msgSend(_redLabel,"setStringValue:","R"); +objj_msgSend(_redLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_redSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,35,aFrame.size.width-70,20)); +objj_msgSend(_redSlider,"setMaxValue:",1); +objj_msgSend(_redSlider,"setMinValue:",0); +objj_msgSend(_redSlider,"setTarget:",_7); +objj_msgSend(_redSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_redSlider,"setAutoresizingMask:",CPViewWidthSizable); +_redValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,30,45,29)); +objj_msgSend(_redValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_redValue,"setEditable:",YES); +objj_msgSend(_redValue,"setBezeled:",YES); +objj_msgSend(_redValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_redValue); +_greenLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,58,15,20)); +objj_msgSend(_greenLabel,"setStringValue:","G"); +objj_msgSend(_greenLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_greenSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,58,aFrame.size.width-70,20)); +objj_msgSend(_greenSlider,"setMaxValue:",1); +objj_msgSend(_greenSlider,"setMinValue:",0); +objj_msgSend(_greenSlider,"setTarget:",_7); +objj_msgSend(_greenSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_greenSlider,"setAutoresizingMask:",CPViewWidthSizable); +_greenValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,53,45,29)); +objj_msgSend(_greenValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_greenValue,"setEditable:",YES); +objj_msgSend(_greenValue,"setBezeled:",YES); +objj_msgSend(_greenValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_greenValue); +_blueLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,81,15,20)); +objj_msgSend(_blueLabel,"setStringValue:","B"); +objj_msgSend(_blueLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_blueSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,81,aFrame.size.width-70,20)); +objj_msgSend(_blueSlider,"setMaxValue:",1); +objj_msgSend(_blueSlider,"setMinValue:",0); +objj_msgSend(_blueSlider,"setTarget:",_7); +objj_msgSend(_blueSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_blueSlider,"setAutoresizingMask:",CPViewWidthSizable); +_blueValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,76,45,29)); +objj_msgSend(_blueValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_blueValue,"setEditable:",YES); +objj_msgSend(_blueValue,"setBezeled:",YES); +objj_msgSend(_blueValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_blueValue); +_hsbLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,120,190,20)); +objj_msgSend(_hsbLabel,"setStringValue:","Hue, Saturation, Brightness"); +objj_msgSend(_hsbLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hueLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,145,15,20)); +objj_msgSend(_hueLabel,"setStringValue:","H"); +objj_msgSend(_hueLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hueSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,145,aFrame.size.width-70,20)); +objj_msgSend(_hueSlider,"setMaxValue:",359); +objj_msgSend(_hueSlider,"setMinValue:",0); +objj_msgSend(_hueSlider,"setTarget:",_7); +objj_msgSend(_hueSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_hueSlider,"setAutoresizingMask:",CPViewWidthSizable); +_hueValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,140,45,29)); +objj_msgSend(_hueValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_hueValue,"setEditable:",YES); +objj_msgSend(_hueValue,"setBezeled:",YES); +objj_msgSend(_hueValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_hueValue); +_saturationLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,168,15,20)); +objj_msgSend(_saturationLabel,"setStringValue:","S"); +objj_msgSend(_saturationLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_saturationSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,168,aFrame.size.width-70,20)); +objj_msgSend(_saturationSlider,"setMaxValue:",100); +objj_msgSend(_saturationSlider,"setMinValue:",0); +objj_msgSend(_saturationSlider,"setTarget:",_7); +objj_msgSend(_saturationSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_saturationSlider,"setAutoresizingMask:",CPViewWidthSizable); +_saturationValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,163,45,29)); +objj_msgSend(_saturationValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_saturationValue,"setEditable:",YES); +objj_msgSend(_saturationValue,"setBezeled:",YES); +objj_msgSend(_saturationValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_saturationValue); +_brightnessLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,191,15,20)); +objj_msgSend(_brightnessLabel,"setStringValue:","B"); +objj_msgSend(_brightnessLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_brightnessSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,191,aFrame.size.width-70,20)); +objj_msgSend(_brightnessSlider,"setMaxValue:",100); +objj_msgSend(_brightnessSlider,"setMinValue:",0); +objj_msgSend(_brightnessSlider,"setTarget:",_7); +objj_msgSend(_brightnessSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_brightnessSlider,"setAutoresizingMask:",CPViewWidthSizable); +_brightnessValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,186,45,29)); +objj_msgSend(_brightnessValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_brightnessValue,"setEditable:",YES); +objj_msgSend(_brightnessValue,"setBezeled:",YES); +objj_msgSend(_brightnessValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_brightnessValue); +_hexLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,230,30,20)); +objj_msgSend(_hexLabel,"setStringValue:","Hex"); +objj_msgSend(_hexLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hexValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(32,225,80,29)); +objj_msgSend(_hexValue,"setEditable:",YES); +objj_msgSend(_hexValue,"setBezeled:",YES); +objj_msgSend(_hexValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_hexValue); +objj_msgSend(_contentView,"addSubview:",_rgbLabel); +objj_msgSend(_contentView,"addSubview:",_redLabel); +objj_msgSend(_contentView,"addSubview:",_greenLabel); +objj_msgSend(_contentView,"addSubview:",_blueLabel); +objj_msgSend(_contentView,"addSubview:",_redSlider); +objj_msgSend(_contentView,"addSubview:",_greenSlider); +objj_msgSend(_contentView,"addSubview:",_blueSlider); +objj_msgSend(_contentView,"addSubview:",_hsbLabel); +objj_msgSend(_contentView,"addSubview:",_hueLabel); +objj_msgSend(_contentView,"addSubview:",_saturationLabel); +objj_msgSend(_contentView,"addSubview:",_brightnessLabel); +objj_msgSend(_contentView,"addSubview:",_hueSlider); +objj_msgSend(_contentView,"addSubview:",_saturationSlider); +objj_msgSend(_contentView,"addSubview:",_brightnessSlider); +objj_msgSend(_contentView,"addSubview:",_hexLabel); +} +}),new objj_method(sel_getUid("provideNewView:"),function(_9,_a,_b){ +with(_9){ +if(_b){ +objj_msgSend(_9,"initView"); +} +return _contentView; +} +}),new objj_method(sel_getUid("currentMode"),function(_c,_d){ +with(_c){ +return CPSliderColorPickerMode; +} +}),new objj_method(sel_getUid("supportsMode:"),function(_e,_f,_10){ +with(_e){ +return (_10==CPSliderColorPickerMode)?YES:NO; +} +}),new objj_method(sel_getUid("sliderChanged:"),function(_11,_12,_13){ +with(_11){ +var _14,_15=objj_msgSend(_11,"colorPanel"),_16=objj_msgSend(_15,"opacity"); +switch(_13){ +case _hueSlider: +case _saturationSlider: +case _brightnessSlider: +_14=objj_msgSend(CPColor,"colorWithHue:saturation:brightness:alpha:",objj_msgSend(_hueSlider,"floatValue"),objj_msgSend(_saturationSlider,"floatValue"),objj_msgSend(_brightnessSlider,"floatValue"),_16); +objj_msgSend(_11,"updateRGBSliders:",_14); +break; +case _redSlider: +case _greenSlider: +case _blueSlider: +_14=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",objj_msgSend(_redSlider,"floatValue"),objj_msgSend(_greenSlider,"floatValue"),objj_msgSend(_blueSlider,"floatValue"),_16); +objj_msgSend(_11,"updateHSBSliders:",_14); +break; +} +objj_msgSend(_11,"updateLabels"); +objj_msgSend(_11,"updateHex:",_14); +objj_msgSend(_15,"setColor:",_14); +} +}),new objj_method(sel_getUid("setColor:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"updateRGBSliders:",_19); +objj_msgSend(_17,"updateHSBSliders:",_19); +objj_msgSend(_17,"updateHex:",_19); +objj_msgSend(_17,"updateLabels"); +} +}),new objj_method(sel_getUid("updateHSBSliders:"),function(_1a,_1b,_1c){ +with(_1a){ +var hsb=objj_msgSend(_1c,"hsbComponents"); +objj_msgSend(_hueSlider,"setFloatValue:",hsb[0]); +objj_msgSend(_saturationSlider,"setFloatValue:",hsb[1]); +objj_msgSend(_brightnessSlider,"setFloatValue:",hsb[2]); +} +}),new objj_method(sel_getUid("updateHex:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_hexValue,"setStringValue:",objj_msgSend(_1f,"hexString")); +} +}),new objj_method(sel_getUid("updateRGBSliders:"),function(_20,_21,_22){ +with(_20){ +var rgb=objj_msgSend(_22,"components"); +objj_msgSend(_redSlider,"setFloatValue:",rgb[0]); +objj_msgSend(_greenSlider,"setFloatValue:",rgb[1]); +objj_msgSend(_blueSlider,"setFloatValue:",rgb[2]); +} +}),new objj_method(sel_getUid("updateLabels"),function(_23,_24){ +with(_23){ +objj_msgSend(_hueValue,"setStringValue:",ROUND(objj_msgSend(_hueSlider,"floatValue"))); +objj_msgSend(_saturationValue,"setStringValue:",ROUND(objj_msgSend(_saturationSlider,"floatValue"))); +objj_msgSend(_brightnessValue,"setStringValue:",ROUND(objj_msgSend(_brightnessSlider,"floatValue"))); +objj_msgSend(_redValue,"setStringValue:",ROUND(objj_msgSend(_redSlider,"floatValue")*255)); +objj_msgSend(_greenValue,"setStringValue:",ROUND(objj_msgSend(_greenSlider,"floatValue")*255)); +objj_msgSend(_blueValue,"setStringValue:",ROUND(objj_msgSend(_blueSlider,"floatValue")*255)); +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_25,_26){ +with(_25){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","slider_button.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("provideNewAlternateButtonImage"),function(_27,_28){ +with(_27){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","slider_button_h.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("controlTextDidEndEditing:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=objj_msgSend(_2b,"object"),_2d=objj_msgSend(objj_msgSend(_2c,"stringValue"),"stringByTrimmingWhitespace"); +if(_2c===_hexValue){ +var _2e=objj_msgSend(CPColor,"colorWithHexString:",_2d); +if(_2e){ +objj_msgSend(_29,"setColor:",_2e); +objj_msgSend(objj_msgSend(_29,"colorPanel"),"setColor:",_2e); +} +}else{ +switch(_2c){ +case _redValue: +objj_msgSend(_redSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_redSlider); +break; +case _greenValue: +objj_msgSend(_greenSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_greenSlider); +break; +case _blueValue: +objj_msgSend(_blueSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_blueSlider); +break; +case _hueValue: +objj_msgSend(_hueSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),360),0)); +objj_msgSend(_29,"sliderChanged:",_hueSlider); +break; +case _saturationValue: +objj_msgSend(_saturationSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),100),0)); +objj_msgSend(_29,"sliderChanged:",_saturationSlider); +break; +case _brightnessValue: +objj_msgSend(_brightnessSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),100),0)); +objj_msgSend(_29,"sliderChanged:",_brightnessSlider); +break; +} +} +} +})]); +p;13;CPSplitView.jt;21905;@STATIC;1.0;i;13;CPButtonBar.ji;9;CPImage.ji;8;CPView.jt;21842; +objj_executeFile("CPButtonBar.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPView.j",YES); +CPSplitViewDidResizeSubviewsNotification="CPSplitViewDidResizeSubviewsNotification"; +CPSplitViewWillResizeSubviewsNotification="CPSplitViewWillResizeSubviewsNotification"; +var _1=nil,_2=nil; +var _3=objj_allocateClassPair(CPView,"CPSplitView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_delegate"),new objj_ivar("_isVertical"),new objj_ivar("_isPaneSplitter"),new objj_ivar("_currentDivider"),new objj_ivar("_initialOffset"),new objj_ivar("_preCollapsePosition"),new objj_ivar("_originComponent"),new objj_ivar("_sizeComponent"),new objj_ivar("_DOMDividerElements"),new objj_ivar("_dividerImagePath"),new objj_ivar("_drawingDivider"),new objj_ivar("_needsResizeSubviews"),new objj_ivar("_buttonBars")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("initWithFrame:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPSplitView").super_class},"initWithFrame:",_7)){ +_currentDivider=CPNotFound; +_DOMDividerElements=[]; +_buttonBars=[]; +objj_msgSend(_5,"_setVertical:",YES); +} +return _5; +} +}),new objj_method(sel_getUid("dividerThickness"),function(_8,_9){ +with(_8){ +return objj_msgSend(_8,"currentValueForThemeAttribute:",objj_msgSend(_8,"isPaneSplitter")?"pane-divider-thickness":"divider-thickness"); +} +}),new objj_method(sel_getUid("isVertical"),function(_a,_b){ +with(_a){ +return _isVertical; +} +}),new objj_method(sel_getUid("setVertical:"),function(_c,_d,_e){ +with(_c){ +if(!objj_msgSend(_c,"_setVertical:",_e)){ +return; +} +var _f=objj_msgSend(_c,"frame"),_10=objj_msgSend(_c,"dividerThickness"); +objj_msgSend(_c,"_postNotificationWillResize"); +var _11=ROUND((_f.size[_sizeComponent]-_10*(_subviews.length-1))/_subviews.length),_12=0,_13=_subviews.length; +if(objj_msgSend(_c,"isVertical")){ +for(;_12<_13;++_12){ +objj_msgSend(_subviews[_12],"setFrame:",CGRectMake(ROUND((_11+_10)*_12),0,_11,_f.size.height)); +} +}else{ +for(;_12<_13;++_12){ +objj_msgSend(_subviews[_12],"setFrame:",CGRectMake(0,ROUND((_11+_10)*_12),_f.size.width,_11)); +} +} +objj_msgSend(_c,"setNeedsDisplay:",YES); +objj_msgSend(_c,"_postNotificationDidResize"); +} +}),new objj_method(sel_getUid("_setVertical:"),function(_14,_15,_16){ +with(_14){ +var _17=(_isVertical!=_16); +_isVertical=_16; +_originComponent=objj_msgSend(_14,"isVertical")?"x":"y"; +_sizeComponent=objj_msgSend(_14,"isVertical")?"width":"height"; +_dividerImagePath=objj_msgSend(_14,"isVertical")?objj_msgSend(_2,"filename"):objj_msgSend(_1,"filename"); +return _17; +} +}),new objj_method(sel_getUid("isPaneSplitter"),function(_18,_19){ +with(_18){ +return _isPaneSplitter; +} +}),new objj_method(sel_getUid("setIsPaneSplitter:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_isPaneSplitter==_1c){ +return; +} +_isPaneSplitter=_1c; +if(_DOMDividerElements[_drawingDivider]){ +objj_msgSend(_1a,"_setupDOMDivider"); +} +_needsResizeSubviews=YES; +objj_msgSend(_1a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_1d,_1e,_1f){ +with(_1d){ +_needsResizeSubviews=YES; +} +}),new objj_method(sel_getUid("isSubviewCollapsed:"),function(_20,_21,_22){ +with(_20){ +return objj_msgSend(_22,"frame").size[_sizeComponent]<1?YES:NO; +} +}),new objj_method(sel_getUid("rectOfDividerAtIndex:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_subviews[_25],"frame"),_27=CGRectMakeZero(); +_27.size=objj_msgSend(_23,"frame").size; +_27.size[_sizeComponent]=objj_msgSend(_23,"dividerThickness"); +_27.origin[_originComponent]=_26.origin[_originComponent]+_26.size[_sizeComponent]; +return _27; +} +}),new objj_method(sel_getUid("effectiveRectOfDividerAtIndex:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(_28,"rectOfDividerAtIndex:",_2a); +var _2c=2; +_2b.size[_sizeComponent]+=_2c*2; +_2b.origin[_originComponent]-=_2c; +return _2b; +} +}),new objj_method(sel_getUid("drawRect:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_subviews,"count")-1; +while((_30--)>0){ +_drawingDivider=_30; +objj_msgSend(_2d,"drawDividerInRect:",objj_msgSend(_2d,"rectOfDividerAtIndex:",_30)); +} +} +}),new objj_method(sel_getUid("drawDividerInRect:"),function(_31,_32,_33){ +with(_31){ +if(!_DOMDividerElements[_drawingDivider]){ +_DOMDividerElements[_drawingDivider]=document.createElement("div"); +_DOMDividerElements[_drawingDivider].style.position="absolute"; +_DOMDividerElements[_drawingDivider].style.backgroundRepeat="repeat"; +_DOMElement.appendChild(_DOMDividerElements[_drawingDivider]); +} +objj_msgSend(_31,"_setupDOMDivider"); +if(NULL){ +var _34=_CGPointApplyAffineTransform(CGPointMake((_33.origin.x),(_33.origin.y)),NULL); +}else{ +var _34={x:(_33.origin.x),y:(_33.origin.y)}; +} +_DOMDividerElements[_drawingDivider].style.left=ROUND(_34.x)+"px"; +_DOMDividerElements[_drawingDivider].style.top=ROUND(_34.y)+"px"; +_DOMDividerElements[_drawingDivider].style.width=MAX(0,ROUND((_33.size.width)))+"px"; +_DOMDividerElements[_drawingDivider].style.height=MAX(0,ROUND((_33.size.height)))+"px"; +} +}),new objj_method(sel_getUid("_setupDOMDivider"),function(_35,_36){ +with(_35){ +if(_isPaneSplitter){ +_DOMDividerElements[_drawingDivider].style.backgroundColor="#A5A5A5"; +_DOMDividerElements[_drawingDivider].style.backgroundImage=""; +}else{ +_DOMDividerElements[_drawingDivider].style.backgroundColor=""; +_DOMDividerElements[_drawingDivider].style.backgroundImage="url('"+_dividerImagePath+"')"; +} +} +}),new objj_method(sel_getUid("viewWillDraw"),function(_37,_38){ +with(_37){ +objj_msgSend(_37,"_adjustSubviewsWithCalculatedSize"); +} +}),new objj_method(sel_getUid("_adjustSubviewsWithCalculatedSize"),function(_39,_3a){ +with(_39){ +if(!_needsResizeSubviews){ +return; +} +_needsResizeSubviews=NO; +var _3b=objj_msgSend(_39,"subviews"),_3c=_3b.length,_3d=CGSizeMakeZero(); +if(objj_msgSend(_39,"isVertical")){ +_3d.width+=objj_msgSend(_39,"dividerThickness")*(_3c-1); +_3d.height=CGRectGetHeight(objj_msgSend(_39,"frame")); +}else{ +_3d.width=CGRectGetWidth(objj_msgSend(_39,"frame")); +_3d.height+=objj_msgSend(_39,"dividerThickness")*(_3c-1); +} +while(_3c--){ +_3d[_sizeComponent]+=objj_msgSend(_3b[_3c],"frame").size[_sizeComponent]; +} +objj_msgSend(_39,"resizeSubviewsWithOldSize:",_3d); +} +}),new objj_method(sel_getUid("cursorAtPoint:hitDividerAtIndex:"),function(_3e,_3f,_40,_41){ +with(_3e){ +var _42=objj_msgSend(_subviews[_41],"frame"),_43=_42.origin[_originComponent]+_42.size[_sizeComponent],_44=objj_msgSend(_3e,"effectiveRectOfDividerAtIndex:",_41),_45=_buttonBars[_41],_46=null,_47=null; +if(_45!=null){ +_46=objj_msgSend(_45,"resizeControlFrame"); +_46.origin=objj_msgSend(_3e,"convertPoint:fromView:",_46.origin,_45); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:"))){ +_44=objj_msgSend(_delegate,"splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:",_3e,_44,_44,_41); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:additionalEffectiveRectOfDividerAtIndex:"))){ +_47=objj_msgSend(_delegate,"splitView:additionalEffectiveRectOfDividerAtIndex:",_3e,_41); +} +return CGRectContainsPoint(_44,_40)||(_47&&CGRectContainsPoint(_47,_40))||(_46&&CGRectContainsPoint(_46,_40)); +} +}),new objj_method(sel_getUid("hitTest:"),function(_48,_49,_4a){ +with(_48){ +if(objj_msgSend(_48,"isHidden")||!objj_msgSend(_48,"hitTests")||!CGRectContainsPoint(objj_msgSend(_48,"frame"),_4a)){ +return nil; +} +var _4b=objj_msgSend(_48,"convertPoint:fromView:",_4a,objj_msgSend(_48,"superview")); +var _4c=objj_msgSend(_subviews,"count")-1; +for(var i=0;i<_4c;i++){ +if(objj_msgSend(_48,"cursorAtPoint:hitDividerAtIndex:",_4b,i)){ +return _48; +} +} +return objj_msgSendSuper({receiver:_48,super_class:objj_getClass("CPSplitView").super_class},"hitTest:",_4a); +} +}),new objj_method(sel_getUid("trackDivider:"),function(_4d,_4e,_4f){ +with(_4d){ +var _50=objj_msgSend(_4f,"type"); +if(_50==CPLeftMouseUp){ +if(_currentDivider!=CPNotFound){ +_currentDivider=CPNotFound; +objj_msgSend(_4d,"_updateResizeCursor:",_4f); +objj_msgSend(_4d,"_postNotificationDidResize"); +} +return; +} +if(_50==CPLeftMouseDown){ +var _51=objj_msgSend(_4d,"convertPoint:fromView:",objj_msgSend(_4f,"locationInWindow"),nil); +_currentDivider=CPNotFound; +var _52=objj_msgSend(_subviews,"count")-1; +for(var i=0;i<_52;i++){ +var _53=objj_msgSend(_subviews[i],"frame"),_54=_53.origin[_originComponent]+_53.size[_sizeComponent]; +if(objj_msgSend(_4d,"cursorAtPoint:hitDividerAtIndex:",_51,i)){ +if(objj_msgSend(_4f,"clickCount")==2&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:"))){ +var _55=objj_msgSend(_4d,"minPossiblePositionOfDividerAtIndex:",i),_56=objj_msgSend(_4d,"maxPossiblePositionOfDividerAtIndex:",i); +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_4d,_subviews[i])&&objj_msgSend(_delegate,"splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:",_4d,_subviews[i],i)){ +if(objj_msgSend(_4d,"isSubviewCollapsed:",_subviews[i])){ +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",_preCollapsePosition?_preCollapsePosition:(_55+(_56-_55)/2),i); +}else{ +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",_55,i); +} +}else{ +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_4d,_subviews[i+1])&&objj_msgSend(_delegate,"splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:",_4d,_subviews[i+1],i)){ +if(objj_msgSend(_4d,"isSubviewCollapsed:",_subviews[i+1])){ +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",_preCollapsePosition?_preCollapsePosition:(_55+(_56-_55)/2),i); +}else{ +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",_56,i); +} +} +} +}else{ +_currentDivider=i; +_initialOffset=_54-_51[_originComponent]; +objj_msgSend(_4d,"_postNotificationWillResize"); +} +} +} +if(_currentDivider===CPNotFound){ +return; +} +}else{ +if(_50==CPLeftMouseDragged&&_currentDivider!=CPNotFound){ +var _51=objj_msgSend(_4d,"convertPoint:fromView:",objj_msgSend(_4f,"locationInWindow"),nil); +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",(_51[_originComponent]+_initialOffset),_currentDivider); +objj_msgSend(_4d,"_updateResizeCursor:",_4f); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_4d,sel_getUid("trackDivider:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_57,_58,_59){ +with(_57){ +objj_msgSend(_57,"trackDivider:",_59); +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_5a,_5b){ +with(_5a){ +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_5c,_5d,_5e){ +with(_5c){ +if(_currentDivider==CPNotFound){ +objj_msgSend(_5c,"_updateResizeCursor:",_5e); +} +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_5f,_60,_61){ +with(_5f){ +if(_currentDivider==CPNotFound){ +objj_msgSend(_5f,"_updateResizeCursor:",_61); +} +} +}),new objj_method(sel_getUid("mouseExited:"),function(_62,_63,_64){ +with(_62){ +if(_currentDivider==CPNotFound){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +} +}),new objj_method(sel_getUid("_updateResizeCursor:"),function(_65,_66,_67){ +with(_65){ +var _68=objj_msgSend(_65,"convertPoint:fromView:",objj_msgSend(_67,"locationInWindow"),nil); +if(objj_msgSend(_67,"type")===CPLeftMouseUp&&!objj_msgSend(objj_msgSend(_65,"window"),"acceptsMouseMovedEvents")){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +return; +} +for(var i=0,_69=objj_msgSend(_subviews,"count")-1;i<_69;i++){ +if(_currentDivider===i||(_currentDivider==CPNotFound&&objj_msgSend(_65,"cursorAtPoint:hitDividerAtIndex:",_68,i))){ +var _6a=objj_msgSend(_subviews[i],"frame"),_6b=_6a.size[_sizeComponent],_6c=_6a.origin[_originComponent]+_6b,_6d=objj_msgSend(_65,"_realPositionForPosition:ofDividerAtIndex:",_6c-1,i)<_6c,_6e=objj_msgSend(_65,"_realPositionForPosition:ofDividerAtIndex:",_6c+1,i)>_6c,_6f=objj_msgSend(CPCursor,"arrowCursor"); +if(_6b===0){ +_6e=YES; +}else{ +if(!_6d&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))&&objj_msgSend(_delegate,"splitView:canCollapseSubview:",_65,_subviews[i])){ +_6d=YES; +} +} +if(_isVertical&&_6d&&_6e){ +_6f=objj_msgSend(CPCursor,"resizeLeftRightCursor"); +}else{ +if(_isVertical&&_6d){ +_6f=objj_msgSend(CPCursor,"resizeLeftCursor"); +}else{ +if(_isVertical&&_6e){ +_6f=objj_msgSend(CPCursor,"resizeRightCursor"); +}else{ +if(_6d&&_6e){ +_6f=objj_msgSend(CPCursor,"resizeUpDownCursor"); +}else{ +if(_6d){ +_6f=objj_msgSend(CPCursor,"resizeUpCursor"); +}else{ +if(_6e){ +_6f=objj_msgSend(CPCursor,"resizeDownCursor"); +} +} +} +} +} +} +objj_msgSend(_6f,"set"); +return; +} +} +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +}),new objj_method(sel_getUid("maxPossiblePositionOfDividerAtIndex:"),function(_70,_71,_72){ +with(_70){ +var _73=objj_msgSend(_subviews[_72+1],"frame"); +if(_72+10){ +var _77=objj_msgSend(_subviews[_76-1],"frame"); +return _77.origin[_originComponent]+_77.size[_sizeComponent]+objj_msgSend(_74,"dividerThickness"); +}else{ +return 0; +} +} +}),new objj_method(sel_getUid("_realPositionForPosition:ofDividerAtIndex:"),function(_78,_79,_7a,_7b){ +with(_78){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainSplitPosition:ofSubviewAt:"))){ +_7a=objj_msgSend(_delegate,"splitView:constrainSplitPosition:ofSubviewAt:",_78,_7a,_7b); +} +var _7c=objj_msgSend(_78,"maxPossiblePositionOfDividerAtIndex:",_7b),_7d=objj_msgSend(_78,"minPossiblePositionOfDividerAtIndex:",_7b),_7e=_7c,_7f=_7d; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainMinCoordinate:ofSubviewAt:"))){ +_7f=objj_msgSend(_delegate,"splitView:constrainMinCoordinate:ofSubviewAt:",_78,_7d,_7b); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainMaxCoordinate:ofSubviewAt:"))){ +_7e=objj_msgSend(_delegate,"splitView:constrainMaxCoordinate:ofSubviewAt:",_78,_7c,_7b); +} +var _80=_subviews[_7b],_81=MAX(MIN(_7a,_7e),_7f); +if(_7a<_7d+(_7f-_7d)/2){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))){ +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_78,_80)){ +_81=_7d; +} +} +} +return _81; +} +}),new objj_method(sel_getUid("setPosition:ofDividerAtIndex:"),function(_82,_83,_84,_85){ +with(_82){ +objj_msgSend(_82,"_adjustSubviewsWithCalculatedSize"); +var _86=objj_msgSend(_82,"_realPositionForPosition:ofDividerAtIndex:",_84,_85); +var _87=_subviews[_85],_88=objj_msgSend(_87,"frame"),_89=_subviews[_85+1],_8a=objj_msgSend(_89,"frame"); +_preCollapsePosition=0; +var _8b=_88.size[_sizeComponent]; +_88.size[_sizeComponent]=_86-_88.origin[_originComponent]; +if(_8b!==0&&_88.size[_sizeComponent]===0){ +_preCollapsePosition=_8b; +} +objj_msgSend(_subviews[_85],"setFrame:",_88); +_8b=_8a.size[_sizeComponent]; +_8a.size[_sizeComponent]=_8a.origin[_originComponent]+_8a.size[_sizeComponent]-_86-objj_msgSend(_82,"dividerThickness"); +if(_8b!==0&&_8a.size[_sizeComponent]===0){ +_preCollapsePosition=_8b; +} +_8a.origin[_originComponent]=_86+objj_msgSend(_82,"dividerThickness"); +objj_msgSend(_subviews[_85+1],"setFrame:",_8a); +objj_msgSend(_82,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_8c,_8d,_8e){ +with(_8c){ +objj_msgSend(_8c,"_adjustSubviewsWithCalculatedSize"); +objj_msgSendSuper({receiver:_8c,super_class:objj_getClass("CPSplitView").super_class},"setFrameSize:",_8e); +objj_msgSend(_8c,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_8f,_90,_91){ +with(_8f){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:resizeSubviewsWithOldSize:"))){ +objj_msgSend(_delegate,"splitView:resizeSubviewsWithOldSize:",_8f,_91); +return; +} +objj_msgSend(_8f,"_postNotificationWillResize"); +var _92=0,_93=objj_msgSend(_subviews,"count"),_94=objj_msgSend(_8f,"bounds"),_95=objj_msgSend(_8f,"dividerThickness"),_96=_93-1,_97=0,_98=0,_99=-1,_9a=0,_9b=objj_msgSend(_8f,"isVertical"); +for(_92=0;_92<_93;++_92){ +var _9c=_subviews[_92],_9d=_9b?objj_msgSend(_9c,"autoresizingMask")&CPViewWidthSizable:objj_msgSend(_9c,"autoresizingMask")&CPViewHeightSizable; +if(_9d){ +_97+=objj_msgSend(_9c,"frame").size[_sizeComponent]; +_99=_92; +_9a++; +} +} +if(_9a===_93){ +_97=0; +} +var _98=_97?_94.size[_sizeComponent]-_97:0,_9e=_94.size[_sizeComponent]-_91[_sizeComponent],_9f=(_91[_sizeComponent]-_96*_95-_98),_a0=_9f<=0?0:(_94.size[_sizeComponent]-_96*_95-_98)/_9f; +for(_92=0;_92<_93;++_92){ +var _9c=_subviews[_92],_a1=CGRectMakeCopy(_94),_9d=_9b?objj_msgSend(_9c,"autoresizingMask")&CPViewWidthSizable:objj_msgSend(_9c,"autoresizingMask")&CPViewHeightSizable; +if(_92+1==_93){ +_a1.size[_sizeComponent]=_94.size[_sizeComponent]-_a1.origin[_originComponent]; +}else{ +if(_97&&_9d&&_99===_92){ +_a1.size[_sizeComponent]=MAX(0,ROUND(objj_msgSend(_9c,"frame").size[_sizeComponent]+_9e)); +}else{ +if(_9d||!_97){ +_a1.size[_sizeComponent]=MAX(0,ROUND(_a0*objj_msgSend(_9c,"frame").size[_sizeComponent])); +_9e-=(_a1.size[_sizeComponent]-objj_msgSend(_9c,"frame").size[_sizeComponent]); +}else{ +if(_97&&!_9d){ +_a1.size[_sizeComponent]=objj_msgSend(_9c,"frame").size[_sizeComponent]; +} +} +} +} +_94.origin[_originComponent]+=_a1.size[_sizeComponent]+_95; +objj_msgSend(_9c,"setFrame:",_a1); +} +objj_msgSend(_8f,"_postNotificationDidResize"); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_a2,_a3,_a4){ +with(_a2){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewDidResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_delegate,CPSplitViewDidResizeSubviewsNotification,_a2); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewWillResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_delegate,CPSplitViewWillResizeSubviewsNotification,_a2); +} +_delegate=_a4; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewDidResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_delegate,sel_getUid("splitViewDidResizeSubviews:"),CPSplitViewDidResizeSubviewsNotification,_a2); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewWillResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_delegate,sel_getUid("splitViewWillResizeSubviews:"),CPSplitViewWillResizeSubviewsNotification,_a2); +} +} +}),new objj_method(sel_getUid("setButtonBar:forDividerAtIndex:"),function(_a5,_a6,_a7,_a8){ +with(_a5){ +if(!_a7){ +_buttonBars[_a8]=nil; +return; +} +var _a9=objj_msgSend(_a7,"superview"),_aa=_a7; +while(_a9&&_a9!==_a5){ +_aa=_a9; +_a9=objj_msgSend(_a9,"superview"); +} +if(_a9!==_a5){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"CPSplitView button bar must be a subview of the split view."); +} +var _ab=objj_msgSend(objj_msgSend(_a5,"subviews"),"indexOfObject:",_aa); +objj_msgSend(_a7,"setHasResizeControl:",YES); +objj_msgSend(_a7,"setResizeControlIsLeftAligned:",_a8<_ab); +_buttonBars[_a8]=_a7; +} +}),new objj_method(sel_getUid("_postNotificationWillResize"),function(_ac,_ad){ +with(_ac){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPSplitViewWillResizeSubviewsNotification,_ac); +} +}),new objj_method(sel_getUid("_postNotificationDidResize"),function(_ae,_af){ +with(_ae){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPSplitViewDidResizeSubviewsNotification,_ae); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("themeClass"),function(_b0,_b1){ +with(_b0){ +return "splitview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_b2,_b3){ +with(_b2){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[10,1],["divider-thickness","pane-divider-thickness"]); +} +}),new objj_method(sel_getUid("initialize"),function(_b4,_b5){ +with(_b4){ +if(_b4!=objj_msgSend(CPSplitView,"class")){ +return; +} +var _b6=objj_msgSend(CPBundle,"bundleForClass:",_b4); +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b6,"pathForResource:","CPSplitView/CPSplitViewHorizontal.png"),CPSizeMake(5,10)); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b6,"pathForResource:","CPSplitView/CPSplitViewVertical.png"),CPSizeMake(10,5)); +} +})]); +var _b7="CPSplitViewDelegateKey",_b8="CPSplitViewIsVerticalKey",_b9="CPSplitViewIsPaneSplitterKey",_ba="CPSplitViewButtonBarsKey"; +var _3=objj_getClass("CPSplitView"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPSplitView\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_bb,_bc,_bd){ +with(_bb){ +_bb=objj_msgSendSuper({receiver:_bb,super_class:objj_getClass("CPSplitView").super_class},"initWithCoder:",_bd); +if(_bb){ +_currentDivider=CPNotFound; +_DOMDividerElements=[]; +_buttonBars=objj_msgSend(_bd,"decodeObjectForKey:",_ba)||[]; +_delegate=objj_msgSend(_bd,"decodeObjectForKey:",_b7); +_isPaneSplitter=objj_msgSend(_bd,"decodeBoolForKey:",_b9); +objj_msgSend(_bb,"_setVertical:",objj_msgSend(_bd,"decodeBoolForKey:",_b8)); +} +return _bb; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_be,_bf,_c0){ +with(_be){ +objj_msgSendSuper({receiver:_be,super_class:objj_getClass("CPSplitView").super_class},"encodeWithCoder:",_c0); +objj_msgSend(_c0,"encodeConditionalObject:forKey:",_delegate,_b7); +objj_msgSend(_c0,"encodeBool:forKey:",_isVertical,_b8); +objj_msgSend(_c0,"encodeBool:forKey:",_isPaneSplitter,_b9); +} +})]); +p;17;CPStringDrawing.jt;875;@STATIC;1.0;I;21;Foundation/CPString.ji;18;CPPlatformString.jt;808; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPPlatformString.j",YES); +var _1=objj_getClass("CPString"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPString\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("cssString"),function(_3,_4){ +with(_3){ +return _3; +} +}),new objj_method(sel_getUid("sizeWithFont:"),function(_5,_6,_7){ +with(_5){ +return objj_msgSend(_5,"sizeWithFont:inWidth:",_7,NULL); +} +}),new objj_method(sel_getUid("sizeWithFont:inWidth:"),function(_8,_9,_a,_b){ +with(_8){ +return objj_msgSend(CPPlatformString,"sizeOfString:withFont:forWidth:",_8,_a,_b); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("metricsOfFont:"),function(_c,_d,_e){ +with(_c){ +return objj_msgSend(CPPlatformString,"metricsOfFont:",_e); +} +})]); +p;15;CPTableColumn.jt;12873;@STATIC;1.0;I;25;Foundation/CPDictionary.jI;21;Foundation/CPObject.jI;29;Foundation/CPSortDescriptor.jI;21;Foundation/CPString.ji;19;CPTableHeaderView.jt;12713; +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPSortDescriptor.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPTableHeaderView.j",YES); +CPTableColumnNoResizing=0; +CPTableColumnAutoresizingMask=1<<0; +CPTableColumnUserResizingMask=1<<1; +var _1=objj_allocateClassPair(CPObject,"CPTableColumn"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_tableView"),new objj_ivar("_headerView"),new objj_ivar("_dataView"),new objj_ivar("_dataViewData"),new objj_ivar("_width"),new objj_ivar("_minWidth"),new objj_ivar("_maxWidth"),new objj_ivar("_resizingMask"),new objj_ivar("_identifier"),new objj_ivar("_isEditable"),new objj_ivar("_sortDescriptorPrototype"),new objj_ivar("_isHidden"),new objj_ivar("_headerToolTip"),new objj_ivar("_disableResizingPosting")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("disableResizingPosting"),function(_3,_4){ +with(_3){ +return _disableResizingPosting; +} +}),new objj_method(sel_getUid("setDisableResizingPosting:"),function(_5,_6,_7){ +with(_5){ +_disableResizingPosting=_7; +} +}),new objj_method(sel_getUid("init"),function(_8,_9){ +with(_8){ +return objj_msgSend(_8,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPTableColumn").super_class},"init"); +if(_a){ +_dataViewData={}; +_width=100; +_minWidth=10; +_maxWidth=1000000; +_resizingMask=CPTableColumnAutoresizingMask|CPTableColumnUserResizingMask; +_disableResizingPosting=NO; +objj_msgSend(_a,"setIdentifier:",_c); +var _d=objj_msgSend(objj_msgSend(_CPTableColumnHeaderView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_a,"setHeaderView:",_d); +objj_msgSend(_a,"setDataView:",objj_msgSend(CPTextField,"new")); +} +return _a; +} +}),new objj_method(sel_getUid("setTableView:"),function(_e,_f,_10){ +with(_e){ +_tableView=_10; +} +}),new objj_method(sel_getUid("tableView"),function(_11,_12){ +with(_11){ +return _tableView; +} +}),new objj_method(sel_getUid("setWidth:"),function(_13,_14,_15){ +with(_13){ +_15=+_15; +if(_width===_15){ +return; +} +var _16=MIN(MAX(_15,objj_msgSend(_13,"minWidth")),objj_msgSend(_13,"maxWidth")); +if(_width===_16){ +return; +} +var _17=_width; +_width=_16; +var _18=objj_msgSend(_13,"tableView"); +if(_18){ +var _19=objj_msgSend(objj_msgSend(_18,"tableColumns"),"indexOfObjectIdenticalTo:",_13),_1a=_18._dirtyTableColumnRangeIndex; +if(_1a<0){ +_18._dirtyTableColumnRangeIndex=_19; +}else{ +_18._dirtyTableColumnRangeIndex=MIN(_19,_18._dirtyTableColumnRangeIndex); +} +var _1b=_18._exposedRows,_1c=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_19,objj_msgSend(_18._exposedColumns,"lastIndex")-_19+1)); +objj_msgSend(_18,"_layoutDataViewsInRows:columns:",_1b,_1c); +objj_msgSend(_18,"tile"); +if(!_disableResizingPosting){ +objj_msgSend(_13,"_postDidResizeNotificationWithOldWidth:",_17); +} +} +} +}),new objj_method(sel_getUid("width"),function(_1d,_1e){ +with(_1d){ +return _width; +} +}),new objj_method(sel_getUid("setMinWidth:"),function(_1f,_20,_21){ +with(_1f){ +_21=+_21; +if(_minWidth===_21){ +return; +} +_minWidth=_21; +var _22=objj_msgSend(_1f,"width"),_23=MAX(_22,objj_msgSend(_1f,"minWidth")); +if(_22!==_23){ +objj_msgSend(_1f,"setWidth:",_23); +} +} +}),new objj_method(sel_getUid("minWidth"),function(_24,_25){ +with(_24){ +return _minWidth; +} +}),new objj_method(sel_getUid("setMaxWidth:"),function(_26,_27,_28){ +with(_26){ +_28=+_28; +if(_maxWidth===_28){ +return; +} +_maxWidth=_28; +var _29=objj_msgSend(_26,"width"),_2a=MIN(_29,objj_msgSend(_26,"maxWidth")); +if(_29!==_2a){ +objj_msgSend(_26,"setWidth:",_2a); +} +} +}),new objj_method(sel_getUid("maxWidth"),function(_2b,_2c){ +with(_2b){ +return _maxWidth; +} +}),new objj_method(sel_getUid("setResizingMask:"),function(_2d,_2e,_2f){ +with(_2d){ +_resizingMask=_2f; +} +}),new objj_method(sel_getUid("resizingMask"),function(_30,_31){ +with(_30){ +return _resizingMask; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_32,_33){ +with(_32){ +var _34=(objj_msgSend(_headerView,"frame").size.width); +if(_34objj_msgSend(_32,"maxWidth")){ +objj_msgSend(_32,"setMaxWidth:",_34); +} +} +if(_width!==_34){ +objj_msgSend(_32,"setWidth:",_34); +} +} +}),new objj_method(sel_getUid("setHeaderView:"),function(_35,_36,_37){ +with(_35){ +if(!_37){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Attempt to set nil header view on "+objj_msgSend(_35,"description")); +} +_headerView=_37; +var _38=objj_msgSend(_tableView,"headerView"); +objj_msgSend(_38,"setNeedsLayout"); +objj_msgSend(_38,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("headerView"),function(_39,_3a){ +with(_39){ +return _headerView; +} +}),new objj_method(sel_getUid("setDataView:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_dataView===_3d){ +return; +} +if(_dataView){ +_dataViewData[objj_msgSend(_dataView,"UID")]=nil; +} +objj_msgSend(_3d,"setThemeState:",CPThemeStateTableDataView); +_dataView=_3d; +_dataViewData[objj_msgSend(_3d,"UID")]=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_3d); +} +}),new objj_method(sel_getUid("dataView"),function(_3e,_3f){ +with(_3e){ +return _dataView; +} +}),new objj_method(sel_getUid("dataViewForRow:"),function(_40,_41,_42){ +with(_40){ +return objj_msgSend(_40,"dataView"); +} +}),new objj_method(sel_getUid("_newDataViewForRow:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_43,"dataViewForRow:",_45),_47=objj_msgSend(_46,"UID"); +var x=objj_msgSend(_43,"tableView")._cachedDataViews[_47]; +if(x&&x.length){ +return x.pop(); +} +if(!_dataViewData[_47]){ +_dataViewData[_47]=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_46); +} +var _48=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_dataViewData[_47]); +_48.identifier=_47; +objj_msgSend(_48,"setAutoresizingMask:",CPViewNotSizable); +return _48; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_49,_4a,_4b){ +with(_49){ +_identifier=_4b; +} +}),new objj_method(sel_getUid("identifier"),function(_4c,_4d){ +with(_4c){ +return _identifier; +} +}),new objj_method(sel_getUid("setEditable:"),function(_4e,_4f,_50){ +with(_4e){ +_isEditable=_50; +} +}),new objj_method(sel_getUid("isEditable"),function(_51,_52){ +with(_51){ +return _isEditable; +} +}),new objj_method(sel_getUid("setSortDescriptorPrototype:"),function(_53,_54,_55){ +with(_53){ +_sortDescriptorPrototype=_55; +} +}),new objj_method(sel_getUid("sortDescriptorPrototype"),function(_56,_57){ +with(_56){ +return _sortDescriptorPrototype; +} +}),new objj_method(sel_getUid("setHidden:"),function(_58,_59,_5a){ +with(_58){ +_5a=!!_5a; +if(_isHidden===_5a){ +return; +} +_isHidden=_5a; +objj_msgSend(objj_msgSend(_58,"headerView"),"setHidden:",_5a); +objj_msgSend(objj_msgSend(_58,"tableView"),"_tableColumnVisibilityDidChange:",_58); +} +}),new objj_method(sel_getUid("isHidden"),function(_5b,_5c){ +with(_5b){ +return _isHidden; +} +}),new objj_method(sel_getUid("setHeaderToolTip:"),function(_5d,_5e,_5f){ +with(_5d){ +_headerToolTip=_5f; +} +}),new objj_method(sel_getUid("headerToolTip"),function(_60,_61){ +with(_60){ +return _headerToolTip; +} +}),new objj_method(sel_getUid("_postDidResizeNotificationWithOldWidth:"),function(_62,_63,_64){ +with(_62){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewColumnDidResizeNotification,objj_msgSend(_62,"tableView"),objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_62,_64],["CPTableColumn","CPOldWidth"])); +} +})]); +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"),function(_65,_66,_67,_68,_69,_6a){ +with(_65){ +objj_msgSendSuper({receiver:_65,super_class:objj_getClass("CPTableColumn").super_class},"bind:toObject:withKeyPath:options:",_67,_68,_69,_6a); +if(!objj_msgSend(_67,"isEqual:","someListOfExceptedBindings(notAcceptedBindings)")){ +objj_msgSend(objj_msgSend(_65,"tableView"),"_establishBindingsIfUnbound:",_68); +} +} +}),new objj_method(sel_getUid("prepareDataView:forRow:"),function(_6b,_6c,_6d,_6e){ +with(_6b){ +var _6f=objj_msgSend(CPKeyValueBinding,"allBindingsForObject:",_6b),_70=objj_msgSend(_6f,"allKeys"); +for(var i=0,_71=objj_msgSend(_70,"count");i<_71;i++){ +var _72=_70[i],_73=objj_msgSend(_6d,"_replacementKeyPathForBinding:",_72),_74=objj_msgSend(_6f,"objectForKey:",_72),_75=_74._info,_76=objj_msgSend(_75,"objectForKey:",CPObservedObjectKey),_77=objj_msgSend(_75,"objectForKey:",CPObservedKeyPathKey),_78=_77.lastIndexOf("."),_79; +if(_78===CPNotFound){ +_79=objj_msgSend(objj_msgSend(_76,"valueForKeyPath:",_77),"objectAtIndex:",_6e); +}else{ +var _7a=_77.substring(0,_78),_7b=_77.substring(_78+1),_7c=objj_msgSend(_76,"valueForKeyPath:",_7a); +if(objj_msgSend(_7c,"isKindOfClass:",CPArray)){ +_79=objj_msgSend(objj_msgSend(_7c,"objectAtIndex:",_6e),"valueForKeyPath:",_7b); +}else{ +_79=objj_msgSend(objj_msgSend(_7c,"valueForKeyPath:",_7b),"objectAtIndex:",_6e); +} +} +_79=objj_msgSend(_74,"transformValue:withOptions:",_79,objj_msgSend(_75,"objectForKey:",CPOptionsKey)); +objj_msgSend(_6d,"setValue:forKey:",_79,_73); +} +} +}),new objj_method(sel_getUid("setValue:"),function(_7d,_7e,_7f){ +with(_7d){ +objj_msgSend(objj_msgSend(_7d,"tableView"),"reloadData"); +} +})]); +var _80="CPTableColumnIdentifierKey",_81="CPTableColumnHeaderViewKey",_82="CPTableColumnDataViewKey",_83="CPTableColumnWidthKey",_84="CPTableColumnMinWidthKey",_85="CPTableColumnMaxWidthKey",_86="CPTableColumnResizingMaskKey",_87="CPTableColumnIsHiddenKey",_88="CPSortDescriptorPrototypeKey",_89="CPTableColumnIsEditableKey"; +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_8a,_8b,_8c){ +with(_8a){ +_8a=objj_msgSendSuper({receiver:_8a,super_class:objj_getClass("CPTableColumn").super_class},"init"); +if(_8a){ +_dataViewData={}; +_width=objj_msgSend(_8c,"decodeFloatForKey:",_83); +_minWidth=objj_msgSend(_8c,"decodeFloatForKey:",_84); +_maxWidth=objj_msgSend(_8c,"decodeFloatForKey:",_85); +objj_msgSend(_8a,"setIdentifier:",objj_msgSend(_8c,"decodeObjectForKey:",_80)); +objj_msgSend(_8a,"setHeaderView:",objj_msgSend(_8c,"decodeObjectForKey:",_81)); +objj_msgSend(_8a,"setDataView:",objj_msgSend(_8c,"decodeObjectForKey:",_82)); +objj_msgSend(_8a,"setHeaderView:",objj_msgSend(_8c,"decodeObjectForKey:",_81)); +_resizingMask=objj_msgSend(_8c,"decodeIntForKey:",_86); +_isHidden=objj_msgSend(_8c,"decodeBoolForKey:",_87); +_isEditable=objj_msgSend(_8c,"decodeBoolForKey:",_89); +_sortDescriptorPrototype=objj_msgSend(_8c,"decodeObjectForKey:",_88); +} +return _8a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8f,"encodeObject:forKey:",_identifier,_80); +objj_msgSend(_8f,"encodeObject:forKey:",_width,_83); +objj_msgSend(_8f,"encodeObject:forKey:",_minWidth,_84); +objj_msgSend(_8f,"encodeObject:forKey:",_maxWidth,_85); +objj_msgSend(_8f,"encodeObject:forKey:",_headerView,_81); +objj_msgSend(_8f,"encodeObject:forKey:",_dataView,_82); +objj_msgSend(_8f,"encodeObject:forKey:",_resizingMask,_86); +objj_msgSend(_8f,"encodeBool:forKey:",_isHidden,_87); +objj_msgSend(_8f,"encodeBool:forKey:",_isEditable,_89); +objj_msgSend(_8f,"encodeObject:forKey:",_sortDescriptorPrototype,_88); +} +})]); +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setHeaderCell:"),function(_90,_91,_92){ +with(_90){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"setHeaderCell: is not supported. -setHeaderCell:aView instead."); +} +}),new objj_method(sel_getUid("headerCell"),function(_93,_94){ +with(_93){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"headCell is not supported. -headerView instead."); +} +}),new objj_method(sel_getUid("setDataCell:"),function(_95,_96,_97){ +with(_95){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"setDataCell: is not supported. Use -setHeaderCell:aView instead."); +} +}),new objj_method(sel_getUid("dataCell"),function(_98,_99){ +with(_98){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataCell is not supported. Use -dataCell instead."); +} +}),new objj_method(sel_getUid("dataCellForRow:"),function(_9a,_9b,row){ +with(_9a){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataCellForRow: is not supported. Use -dataViewForRow:row instead."); +} +})]); +p;19;CPTableHeaderView.jt;21454;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.ji;8;CPView.jt;21384; +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPTableColumnHeaderView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_textField")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"_init"); +} +return _3; +} +}),new objj_method(sel_getUid("_init"),function(_6,_7){ +with(_6){ +_textField=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_textField,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_textField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_textField,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_textField,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_6,"addSubview:",_textField); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_8,_9){ +with(_8){ +objj_msgSend(_8,"setBackgroundColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","background-color")); +var _a=objj_msgSend(_8,"currentValueForThemeAttribute:","text-inset"),_b=objj_msgSend(_8,"bounds"); +objj_msgSend(_textField,"setFrame:",{origin:{x:_a.right,y:_a.top},size:{width:_b.size.width-_a.right-_a.left,height:_b.size.height-_a.top-_a.bottom}}); +objj_msgSend(_textField,"setTextColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_textField,"setFont:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-font")); +objj_msgSend(_textField,"setTextShadowColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_textField,"setTextShadowOffset:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-shadow-offset")); +objj_msgSend(_textField,"setAlignment:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-alignment")); +} +}),new objj_method(sel_getUid("setStringValue:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_textField,"setText:",_e); +} +}),new objj_method(sel_getUid("stringValue"),function(_f,_10){ +with(_f){ +return objj_msgSend(_textField,"text"); +} +}),new objj_method(sel_getUid("textField"),function(_11,_12){ +with(_11){ +return _textField; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_13,_14){ +with(_13){ +objj_msgSend(_textField,"sizeToFit"); +} +}),new objj_method(sel_getUid("setFont:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_textField,"setFont:",_17); +} +}),new objj_method(sel_getUid("_setIndicatorImage:"),function(_18,_19,_1a){ +with(_18){ +if(_1a){ +objj_msgSend(_textField,"setImage:",_1a); +objj_msgSend(_textField,"setImagePosition:",CPImageRight); +}else{ +objj_msgSend(_textField,"setImagePosition:",CPNoImage); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_1b,_1c){ +with(_1b){ +return "columnHeader"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),CGInsetMakeZero(),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),CGSizeMakeZero()],["background-color","text-alignment","text-inset","text-color","text-font","text-shadow-color","text-shadow-offset"]); +} +})]); +var _1f="_CPTableColumnHeaderViewStringValueKey",_20="_CPTableColumnHeaderViewFontKey",_21="_CPTableColumnHeaderViewImageKey"; +var _1=objj_getClass("_CPTableColumnHeaderView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPTableColumnHeaderView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +if(_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"initWithCoder:",_24)){ +objj_msgSend(_22,"_init"); +objj_msgSend(_22,"_setIndicatorImage:",objj_msgSend(_24,"decodeObjectForKey:",_21)); +objj_msgSend(_22,"setStringValue:",objj_msgSend(_24,"decodeObjectForKey:",_1f)); +objj_msgSend(_22,"setFont:",objj_msgSend(_24,"decodeObjectForKey:",_20)); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"encodeWithCoder:",_27); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"text"),_1f); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"image"),_21); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"font"),_20); +} +})]); +var _1=objj_allocateClassPair(CPView,"CPTableHeaderView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_mouseDownLocation"),new objj_ivar("_previousTrackingLocation"),new objj_ivar("_activeColumn"),new objj_ivar("_pressedColumn"),new objj_ivar("_isResizing"),new objj_ivar("_isDragging"),new objj_ivar("_isTrackingColumn"),new objj_ivar("_drawsColumnLines"),new objj_ivar("_columnOldWidth"),new objj_ivar("_tableView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("tableView"),function(_28,_29){ +with(_28){ +return _tableView; +} +}),new objj_method(sel_getUid("setTableView:"),function(_2a,_2b,_2c){ +with(_2a){ +_tableView=_2c; +} +}),new objj_method(sel_getUid("_init"),function(_2d,_2e){ +with(_2d){ +_mouseDownLocation={x:0,y:0}; +_previousTrackingLocation={x:0,y:0}; +_activeColumn=-1; +_pressedColumn=-1; +_isResizing=NO; +_isDragging=NO; +_isTrackingColumn=NO; +_drawsColumnLines=YES; +_columnOldWidth=0; +objj_msgSend(_2d,"setBackgroundColor:",objj_msgSend(_2d,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_2f,_30,_31){ +with(_2f){ +_2f=objj_msgSendSuper({receiver:_2f,super_class:objj_getClass("CPTableHeaderView").super_class},"initWithFrame:",_31); +if(_2f){ +objj_msgSend(_2f,"_init"); +} +return _2f; +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(_32,_33,_34){ +with(_32){ +return objj_msgSend(_tableView,"columnAtPoint:",CGPointMake(_34.x,_34.y)); +} +}),new objj_method(sel_getUid("headerRectOfColumn:"),function(_35,_36,_37){ +with(_35){ +var _38=objj_msgSend(_35,"bounds"),_39=objj_msgSend(_tableView,"rectOfColumn:",_37); +_38.origin.x=(_39.origin.x); +_38.size.width=(_39.size.width); +return _38; +} +}),new objj_method(sel_getUid("setDrawsColumnLines:"),function(_3a,_3b,_3c){ +with(_3a){ +_drawsColumnLines=_3c; +} +}),new objj_method(sel_getUid("drawsColumnLines"),function(_3d,_3e){ +with(_3d){ +return _drawsColumnLines; +} +}),new objj_method(sel_getUid("_cursorRectForColumn:"),function(_3f,_40,_41){ +with(_3f){ +if(_41==-1||!(objj_msgSend(_tableView._tableColumns[_41],"resizingMask")&CPTableColumnUserResizingMask)){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _42=objj_msgSend(_3f,"headerRectOfColumn:",_41); +_42.origin.x=(_42.origin.x+_42.size.width)-5; +_42.size.width=20; +return _42; +} +}),new objj_method(sel_getUid("_setPressedColumn:"),function(_43,_44,_45){ +with(_43){ +if(_pressedColumn!=-1){ +var _46=objj_msgSend(_tableView._tableColumns[_pressedColumn],"headerView"); +objj_msgSend(_46,"unsetThemeState:",CPThemeStateHighlighted); +} +if(_45!=-1){ +var _46=objj_msgSend(_tableView._tableColumns[_45],"headerView"); +objj_msgSend(_46,"setThemeState:",CPThemeStateHighlighted); +} +_pressedColumn=_45; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_47,_48,_49){ +with(_47){ +objj_msgSend(_47,"trackMouse:",_49); +} +}),new objj_method(sel_getUid("trackMouse:"),function(_4a,_4b,_4c){ +with(_4a){ +var _4d=objj_msgSend(_4c,"type"),_4e=objj_msgSend(_4a,"convertPoint:fromView:",objj_msgSend(_4c,"locationInWindow"),nil); +_4e.x-=5; +var _4f=objj_msgSend(_4a,"columnAtPoint:",_4e),_50=objj_msgSend(_4a,"shouldResizeTableColumn:at:",_4f,{x:_4e.x+5,y:_4e.y}); +if(_4d===CPLeftMouseUp){ +if(_50){ +objj_msgSend(_4a,"stopResizingTableColumn:at:",_activeColumn,_4e); +}else{ +if(objj_msgSend(_4a,"_shouldStopTrackingTableColumn:at:",_4f,_4e)){ +objj_msgSend(_tableView,"_didClickTableColumn:modifierFlags:",_4f,objj_msgSend(_4c,"modifierFlags")); +objj_msgSend(_4a,"stopTrackingTableColumn:at:",_4f,_4e); +_isTrackingColumn=NO; +} +} +objj_msgSend(_4a,"_updateResizeCursor:",objj_msgSend(CPApp,"currentEvent")); +_activeColumn=CPNotFound; +return; +} +if(_4d===CPLeftMouseDown){ +if(_4f===-1){ +return; +} +_mouseDownLocation=_4e; +_activeColumn=_4f; +objj_msgSend(_tableView,"_sendDelegateDidMouseDownInHeader:",_4f); +if(_50){ +objj_msgSend(_4a,"startResizingTableColumn:at:",_4f,_4e); +}else{ +objj_msgSend(_4a,"startTrackingTableColumn:at:",_4f,_4e); +_isTrackingColumn=YES; +} +}else{ +if(_4d===CPLeftMouseDragged){ +if(_50){ +objj_msgSend(_4a,"continueResizingTableColumn:at:",_activeColumn,_4e); +}else{ +if(_activeColumn===_4f&&(_4e.x>=(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.x)&&_4e.y>=(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.y)&&_4e.x<(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.x+objj_msgSend(_4a,"headerRectOfColumn:",_4f).size.width)&&_4e.y<(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.y+objj_msgSend(_4a,"headerRectOfColumn:",_4f).size.height))){ +if(_isTrackingColumn&&_pressedColumn!==-1){ +if(!objj_msgSend(_4a,"continueTrackingTableColumn:at:",_4f,_4e)){ +return; +} +}else{ +objj_msgSend(_4a,"startTrackingTableColumn:at:",_4f,_4e); +} +}else{ +if(_isTrackingColumn&&_pressedColumn!==-1){ +objj_msgSend(_4a,"stopTrackingTableColumn:at:",_activeColumn,_4e); +} +} +} +} +} +_previousTrackingLocation=_4e; +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_4a,sel_getUid("trackMouse:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("startTrackingTableColumn:at:"),function(_51,_52,_53,_54){ +with(_51){ +objj_msgSend(_51,"_setPressedColumn:",_53); +} +}),new objj_method(sel_getUid("continueTrackingTableColumn:at:"),function(_55,_56,_57,_58){ +with(_55){ +if(objj_msgSend(_55,"_shouldDragTableColumn:at:",_57,_58)){ +var _59=objj_msgSend(_55,"headerRectOfColumn:",_57),_5a={x:0,y:0},_5b=objj_msgSend(_tableView,"_dragViewForColumn:event:offset:",_57,objj_msgSend(CPApp,"currentEvent"),_5a),_5c={x:0,y:0}; +_5c.x=((_59.origin.x)+_5a.x)+(_58.x-_mouseDownLocation.x); +_5c.y=(_59.origin.y)+_5a.y; +objj_msgSend(_55,"dragView:at:offset:event:pasteboard:source:slideBack:",_5b,_5c,{width:0,height:0},objj_msgSend(CPApp,"currentEvent"),objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),_55,YES); +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("_shouldStopTrackingTableColumn:at:"),function(_5d,_5e,_5f,_60){ +with(_5d){ +return _isTrackingColumn&&_activeColumn===_5f&&(_60.x>=(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.x)&&_60.y>=(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.y)&&_60.x<(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.x+objj_msgSend(_5d,"headerRectOfColumn:",_5f).size.width)&&_60.y<(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.y+objj_msgSend(_5d,"headerRectOfColumn:",_5f).size.height)); +} +}),new objj_method(sel_getUid("stopTrackingTableColumn:at:"),function(_61,_62,_63,_64){ +with(_61){ +objj_msgSend(_61,"_setPressedColumn:",CPNotFound); +objj_msgSend(_61,"_updateResizeCursor:",objj_msgSend(CPApp,"currentEvent")); +} +}),new objj_method(sel_getUid("_shouldDragTableColumn:at:"),function(_65,_66,_67,_68){ +with(_65){ +return objj_msgSend(_tableView,"allowsColumnReordering")&&ABS(_68.x-_mouseDownLocation.x)>=10; +} +}),new objj_method(sel_getUid("_headerRectOfLastVisibleColumn"),function(_69,_6a){ +with(_69){ +var _6b=objj_msgSend(_tableView,"tableColumns"),_6c=objj_msgSend(_6b,"count"); +while(_6c--){ +var _6d=objj_msgSend(_6b,"objectAtIndex:",_6c); +if(!objj_msgSend(_6d,"isHidden")){ +return objj_msgSend(_69,"headerRectOfColumn:",_6c); +} +} +return nil; +} +}),new objj_method(sel_getUid("_constrainDragView:at:"),function(_6e,_6f,_70,_71){ +with(_6e){ +var _72=objj_msgSend(_tableView,"tableColumns"),_73=objj_msgSend(_6e,"_headerRectOfLastVisibleColumn"),_74=objj_msgSend(_6e,"headerRectOfColumn:",_activeColumn),_75=objj_msgSend(_70,"window"),_76=objj_msgSend(_75,"frame"); +_76.origin=objj_msgSend(objj_msgSend(_6e,"window"),"convertGlobalToBase:",_76.origin); +_76.origin=objj_msgSend(_6e,"convertPoint:fromView:",_76.origin,nil); +_76.origin.x=MAX(0,MIN((_76.origin.x),(_73.origin.x+_73.size.width)-(_74.size.width))); +_76.origin.y=(_73.origin.y); +_76.origin=objj_msgSend(_6e,"convertPoint:toView:",_76.origin,nil); +_76.origin=objj_msgSend(objj_msgSend(_6e,"window"),"convertBaseToGlobal:",_76.origin); +objj_msgSend(_75,"setFrame:",_76); +} +}),new objj_method(sel_getUid("_moveColumn:toColumn:"),function(_77,_78,_79,_7a){ +with(_77){ +objj_msgSend(_tableView,"moveColumn:toColumn:",_79,_7a); +_activeColumn=_7a; +_pressedColumn=_activeColumn; +} +}),new objj_method(sel_getUid("draggedView:beganAt:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +_isDragging=YES; +var _7f=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_activeColumn); +objj_msgSend(objj_msgSend(_7f,"headerView"),"setHidden:",YES); +objj_msgSend(_tableView,"_setDraggedColumn:",_7f); +objj_msgSend(_7b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("draggedView:movedTo:"),function(_80,_81,_82,_83){ +with(_80){ +objj_msgSend(_80,"_constrainDragView:at:",_82,_83); +var _84=objj_msgSend(_82,"window"),_85=objj_msgSend(_84,"frame"); +var _86=CGPointCreateCopy(_83); +if(_83.x<_previousTrackingLocation.x){ +_86={x:(_85.origin.x),y:(_85.origin.y)}; +}else{ +if(_83.x>_previousTrackingLocation.x){ +_86={x:(_85.origin.x+_85.size.width),y:(_85.origin.y)}; +} +} +_86=objj_msgSend(objj_msgSend(_80,"window"),"convertGlobalToBase:",_86); +_86=objj_msgSend(_80,"convertPoint:fromView:",_86,nil); +var _87=objj_msgSend(_80,"columnAtPoint:",_86); +if(_87!==-1){ +var _88=objj_msgSend(_80,"headerRectOfColumn:",_87),_89=objj_msgSend(_80,"convertPoint:fromView:",CGPointMake((_88.origin.x+(_88.size.width)/2),(_88.origin.y+(_88.size.height)/2)),_80); +if(_87<_activeColumn&&_86.x<_89.x){ +objj_msgSend(_80,"_moveColumn:toColumn:",_activeColumn,_87); +}else{ +if(_87>_activeColumn&&_86.x>_89.x){ +objj_msgSend(_80,"_moveColumn:toColumn:",_activeColumn,_87); +} +} +} +_previousTrackingLocation=_83; +} +}),new objj_method(sel_getUid("draggedView:endedAt:operation:"),function(_8a,_8b,_8c,_8d,_8e){ +with(_8a){ +_isDragging=NO; +_isTrackingColumn=NO; +objj_msgSend(_tableView,"_setDraggedColumn:",nil); +objj_msgSend(objj_msgSend(objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_activeColumn),"headerView"),"setHidden:",NO); +objj_msgSend(_8a,"stopTrackingTableColumn:at:",_activeColumn,_8d); +objj_msgSend(_8a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("shouldResizeTableColumn:at:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_isResizing){ +return YES; +} +if(_isTrackingColumn){ +return NO; +} +return objj_msgSend(_tableView,"allowsColumnResizing")&&(_92.x>=(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.x)&&_92.y>=(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.y)&&_92.x<(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.x+objj_msgSend(_8f,"_cursorRectForColumn:",_91).size.width)&&_92.y<(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.y+objj_msgSend(_8f,"_cursorRectForColumn:",_91).size.height)); +} +}),new objj_method(sel_getUid("startResizingTableColumn:at:"),function(_93,_94,_95,_96){ +with(_93){ +_isResizing=YES; +var _97=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_95); +objj_msgSend(_97,"setDisableResizingPosting:",YES); +objj_msgSend(_tableView,"setDisableAutomaticResizing:",YES); +} +}),new objj_method(sel_getUid("continueResizingTableColumn:at:"),function(_98,_99,_9a,_9b){ +with(_98){ +var _9c=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_9a),_9d=objj_msgSend(_9c,"width")+_9b.x-_previousTrackingLocation.x; +if(_9dobjj_msgSend(_9c,"maxWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftCursor"),"set"); +}else{ +_tableView._lastColumnShouldSnap=NO; +objj_msgSend(_9c,"setWidth:",_9d); +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftRightCursor"),"set"); +objj_msgSend(_98,"setNeedsLayout"); +objj_msgSend(_98,"setNeedsDisplay:",YES); +} +} +} +}),new objj_method(sel_getUid("stopResizingTableColumn:at:"),function(_9e,_9f,_a0,_a1){ +with(_9e){ +var _a2=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_a0); +objj_msgSend(_a2,"_postDidResizeNotificationWithOldWidth:",_columnOldWidth); +objj_msgSend(_a2,"setDisableResizingPosting:",NO); +objj_msgSend(_tableView,"setDisableAutomaticResizing:",NO); +_isResizing=NO; +} +}),new objj_method(sel_getUid("_updateResizeCursor:"),function(_a3,_a4,_a5){ +with(_a3){ +if(!objj_msgSend(_tableView,"allowsColumnResizing")||(objj_msgSend(_a5,"type")===CPLeftMouseUp&&!objj_msgSend(objj_msgSend(_a3,"window"),"acceptsMouseMovedEvents"))){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +return; +} +var _a6=objj_msgSend(_a3,"convertPoint:fromView:",objj_msgSend(_a5,"locationInWindow"),nil),_a7=CGPointMake(_a6.x-5,_a6.y),_a8=objj_msgSend(_a3,"columnAtPoint:",_a7); +if(_a8>=0&&(_a6.x>=(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.x)&&_a6.y>=(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.y)&&_a6.x<(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.x+objj_msgSend(_a3,"_cursorRectForColumn:",_a8).size.width)&&_a6.y<(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.y+objj_msgSend(_a3,"_cursorRectForColumn:",_a8).size.height))){ +var _a9=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_a8),_aa=objj_msgSend(_a9,"width"); +if(_aa==objj_msgSend(_a9,"minWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeRightCursor"),"set"); +}else{ +if(_aa==objj_msgSend(_a9,"maxWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftCursor"),"set"); +}else{ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftRightCursor"),"set"); +} +} +}else{ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_ab,_ac,_ad){ +with(_ab){ +objj_msgSend(_ab,"_updateResizeCursor:",_ad); +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_ae,_af,_b0){ +with(_ae){ +objj_msgSend(_ae,"_updateResizeCursor:",_b0); +} +}),new objj_method(sel_getUid("mouseExited:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_b4,_b5){ +with(_b4){ +var _b6=objj_msgSend(_tableView,"tableColumns"),_b7=objj_msgSend(_b6,"count"); +for(var i=0;i<_b7;i++){ +var _b8=objj_msgSend(_b6,"objectAtIndex:",i),_b9=objj_msgSend(_b8,"headerView"); +var _ba=objj_msgSend(_b4,"headerRectOfColumn:",i); +_ba.size.height-=0.5; +if(i>0){ +_ba.origin.x+=0.5; +_ba.size.width-=1; +} +objj_msgSend(_b9,"setFrame:",_ba); +if(objj_msgSend(_b9,"superview")!=_b4){ +objj_msgSend(_b4,"addSubview:",_b9); +} +} +objj_msgSend(_b4,"setBackgroundColor:",objj_msgSend(_b4,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("drawRect:"),function(_bb,_bc,_bd){ +with(_bb){ +if(!_tableView||!objj_msgSend(_bb,"drawsColumnLines")){ +return; +} +var _be=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_bf=objj_msgSend(_tableView,"columnIndexesInRect:",_bd),_c0=[],_c1=objj_msgSend(_tableView,"tableColumns"),_c2=_tableView._exposedColumns,_c3=objj_msgSend(_c2,"firstIndex"),_c4=CPMakeRange(_c3,objj_msgSend(_c2,"lastIndex")-_c3+1); +CGContextSetLineWidth(_be,1); +CGContextSetStrokeColor(_be,objj_msgSend(_bb,"currentValueForThemeAttribute:","divider-color")); +objj_msgSend(_bf,"getIndexes:maxCount:inIndexRange:",_c0,-1,_c4); +var _c5=0,_c6=_c0.length,_c7; +CGContextBeginPath(_be); +for(;_c5<_c6;_c5++){ +var _c8=_c0[_c5],_c9=objj_msgSend(_bb,"headerRectOfColumn:",_c8); +_c7=(_c9.origin.x+_c9.size.width); +CGContextMoveToPoint(_be,ROUND(_c7)+0.5,ROUND((_c9.origin.y))); +CGContextAddLineToPoint(_be,ROUND(_c7)+0.5,ROUND((_c9.origin.y+_c9.size.height))); +} +CGContextClosePath(_be); +CGContextStrokePath(_be); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_ca,_cb){ +with(_ca){ +return "tableHeaderRow"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_cc,_cd){ +with(_cc){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPColor,"grayColor")],["background-color","divider-color"]); +} +})]); +var _ce="CPTableHeaderViewTableViewKey",_cf="CPTableHeaderViewDrawsColumnLines"; +var _1=objj_getClass("CPTableHeaderView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableHeaderView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_d0,_d1,_d2){ +with(_d0){ +if(_d0=objj_msgSendSuper({receiver:_d0,super_class:objj_getClass("CPTableHeaderView").super_class},"initWithCoder:",_d2)){ +objj_msgSend(_d0,"_init"); +_tableView=objj_msgSend(_d2,"decodeObjectForKey:",_ce); +_drawsColumnLines=objj_msgSend(_d2,"decodeBoolForKey:",_cf); +} +return _d0; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_d3,_d4,_d5){ +with(_d3){ +objj_msgSendSuper({receiver:_d3,super_class:objj_getClass("CPTableHeaderView").super_class},"encodeWithCoder:",_d5); +objj_msgSend(_d5,"encodeObject:forKey:",_tableView,_ce); +objj_msgSend(_d5,"encodeBool:forKey:",_drawsColumnLines,_cf); +} +})]); +p;13;CPTableView.jt;95837;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;AppKit/CGGradient.ji;11;CPControl.ji;15;CPTableColumn.ji;15;_CPCornerView.ji;12;CPScroller.jt;95695; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("AppKit/CGGradient.j",NO); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("_CPCornerView.j",YES); +objj_executeFile("CPScroller.j",YES); +CPTableViewColumnDidMoveNotification="CPTableViewColumnDidMoveNotification"; +CPTableViewColumnDidResizeNotification="CPTableViewColumnDidResizeNotification"; +CPTableViewSelectionDidChangeNotification="CPTableViewSelectionDidChangeNotification"; +CPTableViewSelectionIsChangingNotification="CPTableViewSelectionIsChangingNotification"; +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5,_7=1<<6,_8=1<<7; +var _9=1<<0,_a=1<<1,_b=1<<2,_c=1<<3,_d=1<<4,_e=1<<5,_f=1<<6,_10=1<<7,_11=1<<8,_12=1<<9,_13=1<<10,_14=1<<11,_15=1<<12,_16=1<<13,_17=1<<14,_18=1<<15,_19=1<<16,_1a=1<<17,_1b=1<<18,_1c=1<<19; +CPTableViewDraggingDestinationFeedbackStyleNone=-1; +CPTableViewDraggingDestinationFeedbackStyleRegular=0; +CPTableViewDraggingDestinationFeedbackStyleSourceList=1; +CPTableViewDropOn=0; +CPTableViewDropAbove=1; +CPSourceListGradient="CPSourceListGradient"; +CPSourceListTopLineColor="CPSourceListTopLineColor"; +CPSourceListBottomLineColor="CPSourceListBottomLineColor"; +CPTableViewSelectionHighlightStyleNone=-1; +CPTableViewSelectionHighlightStyleRegular=0; +CPTableViewSelectionHighlightStyleSourceList=1; +CPTableViewGridNone=0; +CPTableViewSolidVerticalGridLineMask=1<<0; +CPTableViewSolidHorizontalGridLineMask=1<<1; +CPTableViewNoColumnAutoresizing=0; +CPTableViewUniformColumnAutoresizingStyle=1; +CPTableViewSequentialColumnAutoresizingStyle=2; +CPTableViewReverseSequentialColumnAutoresizingStyle=3; +CPTableViewLastColumnOnlyAutoresizingStyle=4; +CPTableViewFirstColumnOnlyAutoresizingStyle=5; +var _1d=objj_allocateClassPair(CPView,"_CPTableDrawView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_tableView")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("initWithTableView:"),function(_1f,_20,_21){ +with(_1f){ +_1f=objj_msgSendSuper({receiver:_1f,super_class:objj_getClass("_CPTableDrawView").super_class},"init"); +if(_1f){ +_tableView=_21; +} +return _1f; +} +}),new objj_method(sel_getUid("drawRect:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_22,"frame"),_26=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextTranslateCTM(_26,-(_25.origin.x),-(_25.origin.y)); +objj_msgSend(_tableView,"_drawRect:",_24); +} +})]); +var _1d=objj_allocateClassPair(CPControl,"CPTableView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_dataSource"),new objj_ivar("_implementedDataSourceMethods"),new objj_ivar("_delegate"),new objj_ivar("_implementedDelegateMethods"),new objj_ivar("_tableColumns"),new objj_ivar("_tableColumnRanges"),new objj_ivar("_dirtyTableColumnRangeIndex"),new objj_ivar("_numberOfHiddenColumns"),new objj_ivar("_reloadAllRows"),new objj_ivar("_objectValues"),new objj_ivar("_exposedRows"),new objj_ivar("_exposedColumns"),new objj_ivar("_dataViewsForTableColumns"),new objj_ivar("_cachedDataViews"),new objj_ivar("_allowsColumnReordering"),new objj_ivar("_allowsColumnResizing"),new objj_ivar("_allowsColumnSelection"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_sortDescriptors"),new objj_ivar("_intercellSpacing"),new objj_ivar("_rowHeight"),new objj_ivar("_usesAlternatingRowBackgroundColors"),new objj_ivar("_alternatingRowBackgroundColors"),new objj_ivar("_selectionHighlightStyle"),new objj_ivar("_currentHighlightedTableColumn"),new objj_ivar("_gridStyleMask"),new objj_ivar("_numberOfRows"),new objj_ivar("_headerView"),new objj_ivar("_cornerView"),new objj_ivar("_selectedColumnIndexes"),new objj_ivar("_selectedRowIndexes"),new objj_ivar("_selectionAnchorRow"),new objj_ivar("_lastSelectedRow"),new objj_ivar("_previouslySelectedRowIndexes"),new objj_ivar("_startTrackingPoint"),new objj_ivar("_startTrackingTimestamp"),new objj_ivar("_trackingPointMovedOutOfClickSlop"),new objj_ivar("_editingCellIndex"),new objj_ivar("_tableDrawView"),new objj_ivar("_doubleAction"),new objj_ivar("_clickedRow"),new objj_ivar("_columnAutoResizingStyle"),new objj_ivar("_lastTrackedRowIndex"),new objj_ivar("_originalMouseDownPoint"),new objj_ivar("_verticalMotionCanDrag"),new objj_ivar("_destinationDragStyle"),new objj_ivar("_isSelectingSession"),new objj_ivar("_draggedRowIndexes"),new objj_ivar("_dropOperationFeedbackView"),new objj_ivar("_dragOperationDefaultMask"),new objj_ivar("_retargetedDropRow"),new objj_ivar("_retargetedDropOperation"),new objj_ivar("_disableAutomaticResizing"),new objj_ivar("_lastColumnShouldSnap"),new objj_ivar("_implementsCustomDrawRow"),new objj_ivar("_draggedColumn"),new objj_ivar("_differedColumnDataToRemove")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("disableAutomaticResizing"),function(_27,_28){ +with(_27){ +return _disableAutomaticResizing; +} +}),new objj_method(sel_getUid("setDisableAutomaticResizing:"),function(_29,_2a,_2b){ +with(_29){ +_disableAutomaticResizing=_2b; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_2c,_2d,_2e){ +with(_2c){ +_2c=objj_msgSendSuper({receiver:_2c,super_class:objj_getClass("CPTableView").super_class},"initWithFrame:",_2e); +if(_2c){ +_allowsColumnReordering=YES; +_allowsColumnResizing=YES; +_allowsMultipleSelection=NO; +_allowsEmptySelection=YES; +_allowsColumnSelection=NO; +_disableAutomaticResizing=NO; +_selectionHighlightStyle=CPTableViewSelectionHighlightStyleRegular; +objj_msgSend(_2c,"setUsesAlternatingRowBackgroundColors:",NO); +objj_msgSend(_2c,"setAlternatingRowBackgroundColors:",[objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",245/255,249/255,252/255,1)]); +_tableColumns=[]; +_tableColumnRanges=[]; +_dirtyTableColumnRangeIndex=CPNotFound; +_numberOfHiddenColumns=0; +_intercellSpacing={width:3,height:2}; +_rowHeight=23; +objj_msgSend(_2c,"setGridColor:",objj_msgSend(CPColor,"colorWithHexString:","dce0e2")); +objj_msgSend(_2c,"setGridStyleMask:",CPTableViewGridNone); +_headerView=objj_msgSend(objj_msgSend(CPTableHeaderView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(_2c,"bounds").size.width,_rowHeight)); +objj_msgSend(_headerView,"setTableView:",_2c); +_cornerView=nil; +_lastSelectedRow=-1; +_currentHighlightedTableColumn=nil; +_sortDescriptors=objj_msgSend(CPArray,"array"); +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_verticalMotionCanDrag=YES; +_isSelectingSession=NO; +_retargetedDropRow=nil; +_retargetedDropOperation=nil; +_dragOperationDefaultMask=nil; +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleRegular; +objj_msgSend(_2c,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_2c,"_init"); +} +return _2c; +} +}),new objj_method(sel_getUid("_init"),function(_2f,_30){ +with(_2f){ +_tableViewFlags=0; +_selectedColumnIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_selectedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_dropOperationFeedbackView=objj_msgSend(objj_msgSend(_CPDropOperationDrawingView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_dropOperationFeedbackView,"setTableView:",_2f); +_lastColumnShouldSnap=NO; +if(!_alternatingRowBackgroundColors){ +_alternatingRowBackgroundColors=[objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"colorWithHexString:","e4e7ff")]; +} +_selectionHighlightColor=objj_msgSend(CPColor,"colorWithHexString:","5f83b9"); +_tableColumnRanges=[]; +_dirtyTableColumnRangeIndex=0; +_numberOfHiddenColumns=0; +_objectValues={}; +_dataViewsForTableColumns={}; +_dataViews=[]; +_numberOfRows=0; +_exposedRows=objj_msgSend(CPIndexSet,"indexSet"); +_exposedColumns=objj_msgSend(CPIndexSet,"indexSet"); +_cachedDataViews={}; +_tableDrawView=objj_msgSend(objj_msgSend(_CPTableDrawView,"alloc"),"initWithTableView:",_2f); +objj_msgSend(_tableDrawView,"setBackgroundColor:",objj_msgSend(CPColor,"clearColor")); +objj_msgSend(_2f,"addSubview:",_tableDrawView); +if(!_headerView){ +_headerView=objj_msgSend(objj_msgSend(CPTableHeaderView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(_2f,"bounds").size.width,_rowHeight)); +} +objj_msgSend(_headerView,"setTableView:",_2f); +if(!_cornerView){ +_cornerView=objj_msgSend(objj_msgSend(_CPCornerView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(CPScroller,"scrollerWidth"),CGRectGetHeight(objj_msgSend(_headerView,"frame")))); +} +_draggedColumn=nil; +_differedColumnDataToRemove=[]; +_implementsCustomDrawRow=objj_msgSend(_2f,"implementsSelector:",sel_getUid("drawRow:clipRect:")); +} +}),new objj_method(sel_getUid("setDataSource:"),function(_31,_32,_33){ +with(_31){ +if(_dataSource===_33){ +return; +} +_dataSource=_33; +_implementedDataSourceMethods=0; +if(!_dataSource){ +return; +} +var _34=!!objj_msgSend(_31,"infoForBinding:","content"); +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("numberOfRowsInTableView:"))){ +_implementedDataSourceMethods|=_1; +}else{ +if(!_34){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(_33,"description")+" does not implement numberOfRowsInTableView:."); +} +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:objectValueForTableColumn:row:"))){ +_implementedDataSourceMethods|=_2; +}else{ +if(!_34){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(_33,"description")+" does not implement tableView:objectValueForTableColumn:row:"); +} +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:setObjectValue:forTableColumn:row:"))){ +_implementedDataSourceMethods|=_3; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:acceptDrop:row:dropOperation:"))){ +_implementedDataSourceMethods|=_4; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:"))){ +_implementedDataSourceMethods|=_5; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"))){ +_implementedDataSourceMethods|=_6; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"))){ +_implementedDataSourceMethods|=_7; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:sortDescriptorsDidChange:"))){ +_implementedDataSourceMethods|=_8; +} +objj_msgSend(_31,"reloadData"); +} +}),new objj_method(sel_getUid("dataSource"),function(_35,_36){ +with(_35){ +return _dataSource; +} +}),new objj_method(sel_getUid("reloadDataForRowIndexes:columnIndexes:"),function(_37,_38,_39,_3a){ +with(_37){ +objj_msgSend(_37,"reloadData"); +} +}),new objj_method(sel_getUid("reloadData"),function(_3b,_3c){ +with(_3b){ +_reloadAllRows=YES; +_objectValues={}; +objj_msgSend(_3b,"noteNumberOfRowsChanged"); +objj_msgSend(_3b,"setNeedsLayout"); +objj_msgSend(_3b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setDoubleAction:"),function(_3d,_3e,_3f){ +with(_3d){ +_doubleAction=_3f; +} +}),new objj_method(sel_getUid("doubleAction"),function(_40,_41){ +with(_40){ +return _doubleAction; +} +}),new objj_method(sel_getUid("clickedRow"),function(_42,_43){ +with(_42){ +return _clickedRow; +} +}),new objj_method(sel_getUid("setAllowsColumnReordering:"),function(_44,_45,_46){ +with(_44){ +_allowsColumnReordering=!!_46; +} +}),new objj_method(sel_getUid("allowsColumnReordering"),function(_47,_48){ +with(_47){ +return _allowsColumnReordering; +} +}),new objj_method(sel_getUid("setAllowsColumnResizing:"),function(_49,_4a,_4b){ +with(_49){ +_allowsColumnResizing=!!_4b; +} +}),new objj_method(sel_getUid("allowsColumnResizing"),function(_4c,_4d){ +with(_4c){ +return _allowsColumnResizing; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_4e,_4f,_50){ +with(_4e){ +_allowsMultipleSelection=!!_50; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_51,_52){ +with(_51){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_53,_54,_55){ +with(_53){ +_allowsEmptySelection=!!_55; +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_56,_57){ +with(_56){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsColumnSelection:"),function(_58,_59,_5a){ +with(_58){ +_allowsColumnSelection=!!_5a; +} +}),new objj_method(sel_getUid("allowsColumnSelection"),function(_5b,_5c){ +with(_5b){ +return _allowsColumnSelection; +} +}),new objj_method(sel_getUid("setIntercellSpacing:"),function(_5d,_5e,_5f){ +with(_5d){ +if((_intercellSpacing.width==_5f.width&&_intercellSpacing.height==_5f.height)){ +return; +} +_intercellSpacing={width:_5f.width,height:_5f.height}; +_dirtyTableColumnRangeIndex=0; +objj_msgSend(_5d,"_recalculateTableColumnRanges"); +objj_msgSend(_5d,"setNeedsLayout"); +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +objj_msgSend(_headerView,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setThemeState:"),function(_60,_61,_62){ +with(_60){ +} +}),new objj_method(sel_getUid("intercellSpacing"),function(_63,_64){ +with(_63){ +return {width:_intercellSpacing.width,height:_intercellSpacing.height}; +} +}),new objj_method(sel_getUid("setRowHeight:"),function(_65,_66,_67){ +with(_65){ +_67=+_67; +if(_rowHeight===_67){ +return; +} +_rowHeight=MAX(0,_67); +objj_msgSend(_65,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("rowHeight"),function(_68,_69){ +with(_68){ +return _rowHeight; +} +}),new objj_method(sel_getUid("setUsesAlternatingRowBackgroundColors:"),function(_6a,_6b,_6c){ +with(_6a){ +_usesAlternatingRowBackgroundColors=_6c; +} +}),new objj_method(sel_getUid("usesAlternatingRowBackgroundColors"),function(_6d,_6e){ +with(_6d){ +return _usesAlternatingRowBackgroundColors; +} +}),new objj_method(sel_getUid("setAlternatingRowBackgroundColors:"),function(_6f,_70,_71){ +with(_6f){ +objj_msgSend(_6f,"setValue:forThemeAttribute:",_71,"alternating-row-colors"); +objj_msgSend(_6f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("alternatingRowBackgroundColors"),function(_72,_73){ +with(_72){ +return objj_msgSend(_72,"currentValueForThemeAttribute:","alternating-row-colors"); +} +}),new objj_method(sel_getUid("selectionHighlightStyle"),function(_74,_75){ +with(_74){ +return _selectionHighlightStyle; +} +}),new objj_method(sel_getUid("setSelectionHighlightStyle:"),function(_76,_77,_78){ +with(_76){ +if(_78==CPTableViewSelectionHighlightStyleSourceList&&!CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +return; +} +_selectionHighlightStyle=_78; +objj_msgSend(_76,"setNeedsDisplay:",YES); +if(_78===CPTableViewSelectionHighlightStyleSourceList){ +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleSourceList; +}else{ +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleRegular; +} +} +}),new objj_method(sel_getUid("setSelectionHighlightColor:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"setValue:forThemeAttribute:",_7b,"selection-color"); +objj_msgSend(_79,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("selectionHighlightColor"),function(_7c,_7d){ +with(_7c){ +return objj_msgSend(_7c,"currentValueForThemeAttribute:","selection-color"); +} +}),new objj_method(sel_getUid("setSelectionGradientColors:"),function(_7e,_7f,_80){ +with(_7e){ +objj_msgSend(_7e,"setValue:forThemeAttribute:",_80,"sourcelist-selection-color"); +objj_msgSend(_7e,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("selectionGradientColors"),function(_81,_82){ +with(_81){ +return objj_msgSend(_81,"currentValueForThemeAttribute:","sourcelist-selection-color"); +} +}),new objj_method(sel_getUid("setGridColor:"),function(_83,_84,_85){ +with(_83){ +objj_msgSend(_83,"setValue:forThemeAttribute:",_85,"grid-color"); +objj_msgSend(_83,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("gridColor"),function(_86,_87){ +with(_86){ +return objj_msgSend(_86,"currentValueForThemeAttribute:","grid-color"); +} +}),new objj_method(sel_getUid("setGridStyleMask:"),function(_88,_89,_8a){ +with(_88){ +if(_gridStyleMask===_8a){ +return; +} +_gridStyleMask=_8a; +objj_msgSend(_88,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("gridStyleMask"),function(_8b,_8c){ +with(_8b){ +return _gridStyleMask; +} +}),new objj_method(sel_getUid("addTableColumn:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_tableColumns,"addObject:",_8f); +objj_msgSend(_8f,"setTableView:",_8d); +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=(_tableColumns.length)-1; +}else{ +_dirtyTableColumnRangeIndex=MIN((_tableColumns.length)-1,_dirtyTableColumnRangeIndex); +} +objj_msgSend(_8d,"tile"); +objj_msgSend(_8d,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeTableColumn:"),function(_90,_91,_92){ +with(_90){ +if(objj_msgSend(_92,"tableView")!==_90){ +return; +} +var _93=objj_msgSend(_tableColumns,"indexOfObjectIdenticalTo:",_92); +if(_93===CPNotFound){ +return; +} +objj_msgSend(_differedColumnDataToRemove,"addObject:",{"column":_92,"shouldBeHidden":objj_msgSend(_92,"isHidden")}); +objj_msgSend(_92,"setHidden:",YES); +objj_msgSend(_92,"setTableView:",nil); +var _94=objj_msgSend(_92,"UID"); +if(_objectValues[_94]){ +_objectValues[_94]=nil; +} +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=_93; +}else{ +_dirtyTableColumnRangeIndex=MIN(_93,_dirtyTableColumnRangeIndex); +} +objj_msgSend(_90,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("_setDraggedColumn:"),function(_95,_96,_97){ +with(_95){ +if(_draggedColumn===_97){ +return; +} +_draggedColumn=_97; +objj_msgSend(_95,"reloadDataForRowIndexes:columnIndexes:",_exposedRows,objj_msgSend(CPIndexSet,"indexSetWithIndex:",objj_msgSend(_tableColumns,"indexOfObject:",_97))); +} +}),new objj_method(sel_getUid("moveColumn:toColumn:"),function(_98,_99,_9a,_9b){ +with(_98){ +_9a=+_9a; +_9b=+_9b; +if(_9a===_9b){ +return; +} +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=MIN(_9a,_9b); +}else{ +_dirtyTableColumnRangeIndex=MIN(_9a,_9b,_dirtyTableColumnRangeIndex); +} +var _9c=_tableColumns[_9a]; +objj_msgSend(_tableColumns,"removeObjectAtIndex:",_9a); +objj_msgSend(_tableColumns,"insertObject:atIndex:",_9c,_9b); +objj_msgSend(objj_msgSend(_98,"headerView"),"setNeedsLayout"); +objj_msgSend(objj_msgSend(_98,"headerView"),"setNeedsDisplay:",YES); +var _9d=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_98,"numberOfRows"))),_9e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_9a,_9b)); +objj_msgSend(_98,"reloadDataForRowIndexes:columnIndexes:",_9d,_9e); +} +}),new objj_method(sel_getUid("_tableColumnVisibilityDidChange:"),function(_9f,_a0,_a1){ +with(_9f){ +var _a2=objj_msgSend(objj_msgSend(_9f,"tableColumns"),"indexOfObjectIdenticalTo:",_a1); +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=_a2; +}else{ +_dirtyTableColumnRangeIndex=MIN(_a2,_dirtyTableColumnRangeIndex); +} +objj_msgSend(objj_msgSend(_9f,"headerView"),"setNeedsLayout"); +objj_msgSend(objj_msgSend(_9f,"headerView"),"setNeedsDisplay:",YES); +var _a3=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_9f,"numberOfRows"))); +objj_msgSend(_9f,"reloadDataForRowIndexes:columnIndexes:",_a3,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_a2)); +} +}),new objj_method(sel_getUid("tableColumns"),function(_a4,_a5){ +with(_a4){ +return _tableColumns; +} +}),new objj_method(sel_getUid("columnWithIdentifier:"),function(_a6,_a7,_a8){ +with(_a6){ +var _a9=0,_aa=(_tableColumns.length); +for(;_a9<_aa;++_a9){ +if(objj_msgSend(_tableColumns[_a9],"identifier")===_a8){ +return _a9; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tableColumnWithIdentifier:"),function(_ab,_ac,_ad){ +with(_ab){ +var _ae=objj_msgSend(_ab,"columnWithIdentifier:",_ad); +if(_ae===CPNotFound){ +return nil; +} +return _tableColumns[_ae]; +} +}),new objj_method(sel_getUid("selectColumnIndexes:byExtendingSelection:"),function(_af,_b0,_b1,_b2){ +with(_af){ +if((objj_msgSend(_b1,"firstIndex")!=CPNotFound&&objj_msgSend(_b1,"firstIndex")<0)||objj_msgSend(_b1,"lastIndex")>=objj_msgSend(_af,"numberOfColumns")){ +return; +} +if(objj_msgSend(_selectedRowIndexes,"count")>0){ +objj_msgSend(_af,"_updateHighlightWithOldRows:newRows:",_selectedRowIndexes,objj_msgSend(CPIndexSet,"indexSet")); +_selectedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +} +var _b3=objj_msgSend(_selectedColumnIndexes,"copy"); +if(_b2){ +objj_msgSend(_selectedColumnIndexes,"addIndexes:",_b1); +}else{ +_selectedColumnIndexes=objj_msgSend(_b1,"copy"); +} +objj_msgSend(_af,"_updateHighlightWithOldColumns:newColumns:",_b3,_selectedColumnIndexes); +objj_msgSend(_af,"setNeedsDisplay:",YES); +if(_headerView){ +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +} +objj_msgSend(_af,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("_setSelectedRowIndexes:"),function(_b4,_b5,_b6){ +with(_b4){ +if(objj_msgSend(_selectedRowIndexes,"isEqualToIndexSet:",_b6)){ +return; +} +var _b7=_selectedRowIndexes; +_lastSelectedRow=(objj_msgSend(_b6,"count")>0)?objj_msgSend(_b6,"lastIndex"):-1; +_selectedRowIndexes=objj_msgSend(_b6,"copy"); +objj_msgSend(_b4,"_updateHighlightWithOldRows:newRows:",_b7,_selectedRowIndexes); +objj_msgSend(_b4,"setNeedsDisplay:",YES); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_b4),"reverseSetValueFor:","selectedRowIndexes"); +objj_msgSend(_b4,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("selectRowIndexes:byExtendingSelection:"),function(_b8,_b9,_ba,_bb){ +with(_b8){ +if(objj_msgSend(_ba,"isEqualToIndexSet:",_selectedRowIndexes)||((objj_msgSend(_ba,"firstIndex")!=CPNotFound&&objj_msgSend(_ba,"firstIndex")<0)||objj_msgSend(_ba,"lastIndex")>=objj_msgSend(_b8,"numberOfRows"))){ +return; +} +if(objj_msgSend(_selectedColumnIndexes,"count")>0){ +objj_msgSend(_b8,"_updateHighlightWithOldColumns:newColumns:",_selectedColumnIndexes,objj_msgSend(CPIndexSet,"indexSet")); +_selectedColumnIndexes=objj_msgSend(CPIndexSet,"indexSet"); +if(_headerView){ +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +} +} +var _bc; +if(_bb){ +_bc=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_bc,"addIndexes:",_ba); +}else{ +_bc=objj_msgSend(_ba,"copy"); +} +objj_msgSend(_b8,"_setSelectedRowIndexes:",_bc); +} +}),new objj_method(sel_getUid("_updateHighlightWithOldRows:newRows:"),function(_bd,_be,_bf,_c0){ +with(_bd){ +var _c1=objj_msgSend(_exposedRows,"firstIndex"),_c2=objj_msgSend(_exposedRows,"lastIndex")-_c1+1,_c3=[],_c4=[],_c5=objj_msgSend(_bf,"copy"),_c6=objj_msgSend(_c0,"copy"); +objj_msgSend(_c5,"removeMatches:",_c6); +objj_msgSend(_c5,"getIndexes:maxCount:inIndexRange:",_c3,-1,CPMakeRange(_c1,_c2)); +objj_msgSend(_c6,"getIndexes:maxCount:inIndexRange:",_c4,-1,CPMakeRange(_c1,_c2)); +for(var _c7 in _dataViewsForTableColumns){ +var _c8=_dataViewsForTableColumns[_c7],_c9=_c3.length; +while(_c9--){ +objj_msgSend(_bd,"_performSelection:forRow:context:",NO,_c3[_c9],_c8); +} +_c9=_c4.length; +while(_c9--){ +objj_msgSend(_bd,"_performSelection:forRow:context:",YES,_c4[_c9],_c8); +} +} +} +}),new objj_method(sel_getUid("_performSelection:forRow:context:"),function(_ca,_cb,_cc,_cd,_ce){ +with(_ca){ +var _cf=_ce[_cd],_d0=_cc?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_cf,"performSelector:withObject:",CPSelectorFromString(_d0),CPThemeStateSelectedDataView); +} +}),new objj_method(sel_getUid("_updateHighlightWithOldColumns:newColumns:"),function(_d1,_d2,_d3,_d4){ +with(_d1){ +var _d5=objj_msgSend(_exposedColumns,"firstIndex"),_d6=objj_msgSend(_exposedColumns,"lastIndex")-_d5+1,_d7=[],_d8=[],_d9=objj_msgSend(_d3,"copy"),_da=objj_msgSend(_d4,"copy"),_db=[]; +objj_msgSend(_d9,"removeMatches:",_da); +objj_msgSend(_d9,"getIndexes:maxCount:inIndexRange:",_d7,-1,CPMakeRange(_d5,_d6)); +objj_msgSend(_da,"getIndexes:maxCount:inIndexRange:",_d8,-1,CPMakeRange(_d5,_d6)); +objj_msgSend(_exposedRows,"getIndexes:maxCount:inIndexRange:",_db,-1,nil); +var _dc=_db.length,_dd=_d7.length; +while(_dd--){ +var _de=_d7[_dd],_df=objj_msgSend(_tableColumns[_de],"UID"),_e0=_dataViewsForTableColumns[_df]; +for(var i=0;i<_dc;i++){ +var _e1=_db[i],_e2=_e0[_e1]; +objj_msgSend(_e2,"unsetThemeState:",CPThemeStateSelectedDataView); +} +if(_headerView){ +var _e3=objj_msgSend(_tableColumns[_de],"headerView"); +objj_msgSend(_e3,"unsetThemeState:",CPThemeStateSelected); +} +} +_dd=_d8.length; +while(_dd--){ +var _de=_d8[_dd],_df=objj_msgSend(_tableColumns[_de],"UID"),_e0=_dataViewsForTableColumns[_df]; +for(var i=0;i<_dc;i++){ +var _e1=_db[i],_e2=_e0[_e1]; +objj_msgSend(_e2,"setThemeState:",CPThemeStateSelectedDataView); +} +if(_headerView){ +var _e3=objj_msgSend(_tableColumns[_de],"headerView"); +objj_msgSend(_e3,"setThemeState:",CPThemeStateSelected); +} +} +} +}),new objj_method(sel_getUid("selectedColumn"),function(_e4,_e5){ +with(_e4){ +objj_msgSend(_selectedColumnIndexes,"lastIndex"); +} +}),new objj_method(sel_getUid("selectedColumnIndexes"),function(_e6,_e7){ +with(_e6){ +return _selectedColumnIndexes; +} +}),new objj_method(sel_getUid("selectedRow"),function(_e8,_e9){ +with(_e8){ +return _lastSelectedRow; +} +}),new objj_method(sel_getUid("selectedRowIndexes"),function(_ea,_eb){ +with(_ea){ +return objj_msgSend(_selectedRowIndexes,"copy"); +} +}),new objj_method(sel_getUid("deselectColumn:"),function(_ec,_ed,_ee){ +with(_ec){ +var _ef=objj_msgSend(_selectedColumnIndexes,"copy"); +objj_msgSend(_ef,"removeIndex:",_ee); +objj_msgSend(_ec,"selectColumnIndexes:byExtendingSelection:",_ef,NO); +objj_msgSend(_ec,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("deselectRow:"),function(_f0,_f1,_f2){ +with(_f0){ +var _f3=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_f3,"removeIndex:",_f2); +objj_msgSend(_f0,"selectRowIndexes:byExtendingSelection:",_f3,NO); +objj_msgSend(_f0,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("numberOfSelectedColumns"),function(_f4,_f5){ +with(_f4){ +return objj_msgSend(_selectedColumnIndexes,"count"); +} +}),new objj_method(sel_getUid("numberOfSelectedRows"),function(_f6,_f7){ +with(_f6){ +return objj_msgSend(_selectedRowIndexes,"count"); +} +}),new objj_method(sel_getUid("isColumnSelected:"),function(_f8,_f9,_fa){ +with(_f8){ +return objj_msgSend(_selectedColumnIndexes,"containsIndex:",_fa); +} +}),new objj_method(sel_getUid("isRowSelected:"),function(_fb,_fc,_fd){ +with(_fb){ +return objj_msgSend(_selectedRowIndexes,"containsIndex:",_fd); +} +}),new objj_method(sel_getUid("deselectAll"),function(_fe,_ff){ +with(_fe){ +objj_msgSend(_fe,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +objj_msgSend(_fe,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +} +}),new objj_method(sel_getUid("numberOfColumns"),function(self,_100){ +with(self){ +return (_tableColumns.length); +} +}),new objj_method(sel_getUid("numberOfRows"),function(self,_101){ +with(self){ +if(_numberOfRows){ +return _numberOfRows; +} +var _102=objj_msgSend(self,"infoForBinding:","content"); +if(_102){ +var _103=objj_msgSend(_102,"objectForKey:",CPObservedObjectKey),_104=objj_msgSend(_102,"objectForKey:",CPObservedKeyPathKey); +return objj_msgSend(objj_msgSend(_103,"valueForKeyPath:",_104),"count"); +}else{ +if(_dataSource){ +return objj_msgSend(_dataSource,"numberOfRowsInTableView:",self); +} +} +return 0; +} +}),new objj_method(sel_getUid("editColumn:row:withEvent:select:"),function(self,_105,_106,_107,_108,flag){ +with(self){ +if(!objj_msgSend(self,"isRowSelected:",_107)){ +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:","Error","Attempt to edit row="+_107+" when not selected.",nil),"raise"); +} +_editingCellIndex=CGPointMake(_106,_107); +objj_msgSend(self,"reloadDataForRowIndexes:columnIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_107),objj_msgSend(CPIndexSet,"indexSetWithIndex:",_106)); +} +}),new objj_method(sel_getUid("editedColumn"),function(self,_109){ +with(self){ +if(!_editingCellIndex){ +return CPNotFound; +} +return _editingCellIndex.x; +} +}),new objj_method(sel_getUid("editedRow"),function(self,_10a){ +with(self){ +if(!_editingCellIndex){ +return CPNotFound; +} +return _editingCellIndex.y; +} +}),new objj_method(sel_getUid("cornerView"),function(self,_10b){ +with(self){ +return _cornerView; +} +}),new objj_method(sel_getUid("setCornerView:"),function(self,_10c,_10d){ +with(self){ +if(_cornerView===_10d){ +return; +} +_cornerView=_10d; +var _10e=objj_msgSend(objj_msgSend(self,"superview"),"superview"); +if(objj_msgSend(_10e,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))&&objj_msgSend(_10e,"documentView")===self){ +objj_msgSend(_10e,"_updateCornerAndHeaderView"); +} +} +}),new objj_method(sel_getUid("headerView"),function(self,_10f){ +with(self){ +return _headerView; +} +}),new objj_method(sel_getUid("setHeaderView:"),function(self,_110,_111){ +with(self){ +if(_headerView===_111){ +return; +} +objj_msgSend(_headerView,"setTableView:",nil); +_headerView=_111; +if(_headerView){ +objj_msgSend(_headerView,"setTableView:",self); +objj_msgSend(_headerView,"setFrameSize:",{width:(objj_msgSend(self,"frame").size.width),height:(objj_msgSend(_headerView,"frame").size.height)}); +} +var _112=objj_msgSend(objj_msgSend(self,"superview"),"superview"); +if(objj_msgSend(_112,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))&&objj_msgSend(_112,"documentView")===self){ +objj_msgSend(_112,"_updateCornerAndHeaderView"); +} +} +}),new objj_method(sel_getUid("_recalculateTableColumnRanges"),function(self,_113){ +with(self){ +if(_dirtyTableColumnRangeIndex<0){ +return; +} +_numberOfHiddenColumns=0; +var _114=_dirtyTableColumnRangeIndex,_115=(_tableColumns.length),x=_114===0?0:CPMaxRange(_tableColumnRanges[_114-1]); +for(;_114<_115;++_114){ +var _116=_tableColumns[_114]; +if(objj_msgSend(_116,"isHidden")){ +_numberOfHiddenColumns+=1; +_tableColumnRanges[_114]=CPMakeRange(x,0); +}else{ +var _117=objj_msgSend(_tableColumns[_114],"width")+_intercellSpacing.width; +_tableColumnRanges[_114]=CPMakeRange(x,_117); +x+=_117; +} +} +_tableColumnRanges.length=_115; +_dirtyTableColumnRangeIndex=CPNotFound; +} +}),new objj_method(sel_getUid("rectOfColumn:"),function(self,_118,_119){ +with(self){ +_119=+_119; +var _11a=objj_msgSend(objj_msgSend(self,"tableColumns"),"objectAtIndex:",_119); +if(objj_msgSend(_11a,"isHidden")||_119<0||_119>=(_tableColumns.length)){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _11b=_tableColumnRanges[_119]; +return {origin:{x:_11b.location,y:0},size:{width:_11b.length,height:CGRectGetHeight(objj_msgSend(self,"bounds"))}}; +} +}),new objj_method(sel_getUid("rectOfRow:"),function(self,_11c,_11d){ +with(self){ +var _11e=_rowHeight+_intercellSpacing.height; +return {origin:{x:0,y:_11d*_11e},size:{width:(objj_msgSend(self,"bounds").size.width),height:_11e}}; +} +}),new objj_method(sel_getUid("rowsInRect:"),function(self,_11f,_120){ +with(self){ +if(_numberOfRows<=0){ +return CPMakeRange(0,0); +} +var _121=objj_msgSend(self,"bounds"); +if(!CGRectIntersectsRect(_120,_121)){ +return CPMakeRange(0,0); +} +var _122=objj_msgSend(self,"rowAtPoint:",_120.origin); +if(_122<0){ +_122=0; +} +var _123=objj_msgSend(self,"rowAtPoint:",{x:0,y:(_120.origin.y+_120.size.height)}); +if(_123<0){ +_123=_numberOfRows-1; +} +return CPMakeRange(_122,_123-_122+1); +} +}),new objj_method(sel_getUid("columnIndexesInRect:"),function(self,_124,_125){ +with(self){ +var _126=MAX(0,objj_msgSend(self,"columnAtPoint:",{x:_125.origin.x,y:0})),_127=objj_msgSend(self,"columnAtPoint:",{x:(_125.origin.x+_125.size.width),y:0}); +if(_127===CPNotFound){ +_127=(_tableColumns.length)-1; +} +if(_numberOfHiddenColumns<=0){ +return objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_126,_127-_126+1)); +} +var _128=objj_msgSend(CPIndexSet,"indexSet"); +for(;_126<=_127;++_126){ +var _129=_tableColumns[_126]; +if(!objj_msgSend(_129,"isHidden")){ +objj_msgSend(_128,"addIndex:",_126); +} +} +return _128; +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(self,_12a,_12b){ +with(self){ +var _12c=objj_msgSend(self,"bounds"); +if(!(_12b.x>=(_12c.origin.x)&&_12b.y>=(_12c.origin.y)&&_12b.x<(_12c.origin.x+_12c.size.width)&&_12b.y<(_12c.origin.y+_12c.size.height))){ +return CPNotFound; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var x=_12b.x,low=0,high=_tableColumnRanges.length-1; +while(low<=high){ +var _12d=FLOOR(low+(high-low)/2),_12e=_tableColumnRanges[_12d]; +if(x<_12e.location){ +high=_12d-1; +}else{ +if(x>=CPMaxRange(_12e)){ +low=_12d+1; +}else{ +var _12f=_tableColumnRanges.length; +while(_12d<_12f&&objj_msgSend(_tableColumns[_12d],"isHidden")){ +++_12d; +} +if(_12d<_12f){ +return _12d; +} +return CPNotFound; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("rowAtPoint:"),function(self,_130,_131){ +with(self){ +var y=_131.y,row=FLOOR(y/(_rowHeight+_intercellSpacing.height)); +if(row>=_numberOfRows){ +return -1; +} +return row; +} +}),new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"),function(self,_132,_133,aRow){ +with(self){ +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _134=_tableColumnRanges[_133],_135=objj_msgSend(self,"rectOfRow:",aRow),_136=FLOOR(_intercellSpacing.width/2),_137=FLOOR(_intercellSpacing.height/2); +return {origin:{x:_134.location+_136,y:(_135.origin.y)+_137},size:{width:_134.length-_intercellSpacing.width,height:(_135.size.height)-_intercellSpacing.height}}; +} +}),new objj_method(sel_getUid("resizeWithOldSuperviewSize:"),function(self,_138,_139){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"resizeWithOldSuperviewSize:",_139); +if(_disableAutomaticResizing){ +return; +} +var mask=_columnAutoResizingStyle; +if(mask===CPTableViewUniformColumnAutoresizingStyle){ +objj_msgSend(self,"_resizeAllColumnUniformlyWithOldSize:",_139); +}else{ +if(mask===CPTableViewLastColumnOnlyAutoresizingStyle){ +objj_msgSend(self,"sizeLastColumnToFit"); +}else{ +if(mask===CPTableViewFirstColumnOnlyAutoresizingStyle){ +objj_msgSend(self,"_autoResizeFirstColumn"); +} +} +} +} +}),new objj_method(sel_getUid("_autoResizeFirstColumn"),function(self,_13a){ +with(self){ +var _13b=objj_msgSend(self,"superview"); +if(!_13b){ +return; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _13c=(_tableColumns.length),_13d=nil,_13e=0,i=0; +for(;i<_13c;i++){ +var _13f=_tableColumns[i]; +if(!objj_msgSend(_13f,"isHidden")){ +if(!_13d){ +_13d=_13f; +} +_13e+=objj_msgSend(_13f,"width")+_intercellSpacing.width; +} +} +if(_13d){ +var _140=objj_msgSend(_13b,"bounds").size,_141=_140.width-_13e; +_141+=objj_msgSend(_13d,"width"); +_141=MAX(objj_msgSend(_13d,"minWidth"),_141); +_141=MIN(objj_msgSend(_13d,"maxWidth"),_141); +objj_msgSend(_13d,"setWidth:",FLOOR(_141)); +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("_resizeAllColumnUniformlyWithOldSize:"),function(self,_142,_143){ +with(self){ +var _144=objj_msgSend(self,"superview"); +if(!_144){ +return; +} +var _145=objj_msgSend(_144,"bounds").size; +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _146=(_tableColumns.length),_147=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"),_148=0; +for(var i=0;i<_146;i++){ +var _149=_tableColumns[i]; +if(!objj_msgSend(_149,"isHidden")&&(objj_msgSend(_149,"resizingMask")&CPTableColumnAutoresizingMask)){ +objj_msgSend(_147,"addObject:",i); +} +} +_146=objj_msgSend(_147,"count"); +if(_146>0){ +var _14a=CGRectGetMaxX(objj_msgSend(self,"rectOfColumn:",_147[_146-1])); +if(!_lastColumnShouldSnap&&(_14a>=_145.width&&_14a<=_143.width||_14a<=_145.width&&_14a>=_143.width)){ +_lastColumnShouldSnap=YES; +objj_msgSend(self,"_resizeAllColumnUniformlyWithOldSize:",CGSizeMake(_14a,0)); +} +if(!_lastColumnShouldSnap){ +return; +} +for(var i=0;i<_146;i++){ +var _14b=_147[i],_14c=_tableColumns[_14b],_14d=_148/(_146-i),_14e=(objj_msgSend(_14c,"width")/_143.width*objj_msgSend(_144,"bounds").size.width)+_14d,_14f=_14e; +_14f=MAX(objj_msgSend(_14c,"minWidth"),_14f); +_14f=MIN(objj_msgSend(_14c,"maxWidth"),_14f); +_148-=_14d; +_148+=_14e-_14f; +objj_msgSend(_14c,"setWidth:",_14f); +} +if(_148!==0){ +_lastColumnShouldSnap=NO; +} +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setColumnAutoresizingStyle:"),function(self,_150,_151){ +with(self){ +_columnAutoResizingStyle=_151; +} +}),new objj_method(sel_getUid("columnAutoresizingStyle"),function(self,_152){ +with(self){ +return _columnAutoResizingStyle; +} +}),new objj_method(sel_getUid("sizeLastColumnToFit"),function(self,_153){ +with(self){ +var _154=objj_msgSend(self,"superview"); +if(!_154){ +return; +} +var _155=objj_msgSend(_154,"bounds").size; +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _156=(_tableColumns.length); +while(_156--&&objj_msgSend(_tableColumns[_156],"isHidden")){ +} +if(_156>=0){ +var _157=_tableColumns[_156],_158=MAX(0,_155.width-CGRectGetMinX(objj_msgSend(self,"rectOfColumn:",_156))-_intercellSpacing.width); +if(_158>0){ +_158=MAX(objj_msgSend(_157,"minWidth"),_158); +_158=MIN(objj_msgSend(_157,"maxWidth"),_158); +objj_msgSend(_157,"setWidth:",_158); +} +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("noteNumberOfRowsChanged"),function(self,_159){ +with(self){ +var _15a=_numberOfRows; +_numberOfRows=nil; +_numberOfRows=objj_msgSend(self,"numberOfRows"); +var _15b=_15a-_numberOfRows; +if(_15b>0){ +objj_msgSend(_selectedRowIndexes,"removeIndexesInRange:",CPMakeRange(_numberOfRows,_15b)); +objj_msgSend(self,"_noteSelectionDidChange"); +} +objj_msgSend(self,"tile"); +} +}),new objj_method(sel_getUid("tile"),function(self,_15c){ +with(self){ +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _15d=_tableColumnRanges.length>0?CPMaxRange(objj_msgSend(_tableColumnRanges,"lastObject")):0,_15e=(_rowHeight+_intercellSpacing.height)*_numberOfRows,_15f=objj_msgSend(self,"superview"); +if(objj_msgSend(_15f,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _160=objj_msgSend(_15f,"bounds").size; +_15d=MAX(_160.width,_15d); +_15e=MAX(_160.height,_15e); +} +objj_msgSend(self,"setFrameSize:",{width:_15d,height:_15e}); +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("scrollRowToVisible:"),function(self,_161,_162){ +with(self){ +objj_msgSend(self,"scrollRectToVisible:",objj_msgSend(self,"rectOfRow:",_162)); +} +}),new objj_method(sel_getUid("scrollColumnToVisible:"),function(self,_163,_164){ +with(self){ +objj_msgSend(self,"scrollRectToVisible:",objj_msgSend(self,"rectOfColumn:",_164)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(self,_165,_166){ +with(self){ +if(_delegate===_166){ +return; +} +var _167=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_delegate){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidMove:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewColumnDidMoveNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidResize:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewColumnDidResizeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionDidChange:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewSelectionDidChangeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionIsChanging:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewSelectionIsChangingNotification,self); +} +} +_delegate=_166; +_implementedDelegateMethods=0; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("selectionShouldChangeInTableView:"))){ +_implementedDelegateMethods|=_9; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:dataViewForTableColumn:row:"))){ +_implementedDelegateMethods|=_a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:didClickTableColumn:"))){ +_implementedDelegateMethods|=_b; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:didDragTableColumn:"))){ +_implementedDelegateMethods|=_c; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:heightOfRow:"))){ +_implementedDelegateMethods|=_d; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:isGroupRow:"))){ +_implementedDelegateMethods|=_e; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:mouseDownInHeaderOfTableColumn:"))){ +_implementedDelegateMethods|=_f; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:nextTypeSelectMatchFromRow:toRow:forString:"))){ +_implementedDelegateMethods|=_10; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:selectionIndexesForProposedSelection:"))){ +_implementedDelegateMethods|=_11; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldEditTableColumn:row:"))){ +_implementedDelegateMethods|=_12; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldSelectRow:"))){ +_implementedDelegateMethods|=_13; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldSelectTableColumn:"))){ +_implementedDelegateMethods|=_14; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldShowViewExpansionForTableColumn:row:"))){ +_implementedDelegateMethods|=_15; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldTrackView:forTableColumn:row:"))){ +_implementedDelegateMethods|=_16; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldTypeSelectForEvent:withCurrentSearchString:"))){ +_implementedDelegateMethods|=_17; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:toolTipForView:rect:tableColumn:row:mouseLocation:"))){ +_implementedDelegateMethods|=_18; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:typeSelectStringForTableColumn:row:"))){ +_implementedDelegateMethods|=_19; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:willDisplayView:forTableColumn:row:"))){ +_implementedDelegateMethods|=_1a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidMove:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewColumnDidMove:"),CPTableViewColumnDidMoveNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidResize:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewColumnDidResize:"),CPTableViewColumnDidResizeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionDidChange:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewSelectionDidChange:"),CPTableViewSelectionDidChangeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionIsChanging:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewSelectionIsChanging:"),CPTableViewSelectionIsChangingNotification,self); +} +} +}),new objj_method(sel_getUid("delegate"),function(self,_168){ +with(self){ +return _delegate; +} +}),new objj_method(sel_getUid("_sendDelegateDidClickColumn:"),function(self,_169,_16a){ +with(self){ +if(_implementedDelegateMethods&_b){ +objj_msgSend(_delegate,"tableView:didClickTableColumn:",self,_tableColumns[_16a]); +} +} +}),new objj_method(sel_getUid("_sendDelegateDidDragColumn:"),function(self,_16b,_16c){ +with(self){ +if(_implementedDelegateMethods&_c){ +objj_msgSend(_delegate,"tableView:didDragTableColumn:",self,_tableColumns[_16c]); +} +} +}),new objj_method(sel_getUid("_sendDelegateDidMouseDownInHeader:"),function(self,_16d,_16e){ +with(self){ +if(_implementedDelegateMethods&_f){ +objj_msgSend(_delegate,"tableView:mouseDownInHeaderOfTableColumn:",self,_tableColumns[_16e]); +} +} +}),new objj_method(sel_getUid("_sendDataSourceSortDescriptorsDidChange:"),function(self,_16f,_170){ +with(self){ +if(_implementedDataSourceMethods&_8){ +objj_msgSend(_dataSource,"tableView:sortDescriptorsDidChange:",self,_170); +} +} +}),new objj_method(sel_getUid("_didClickTableColumn:modifierFlags:"),function(self,_171,_172,_173){ +with(self){ +objj_msgSend(self,"_sendDelegateDidClickColumn:",_172); +if(_allowsColumnSelection){ +objj_msgSend(self,"_noteSelectionIsChanging"); +if(_173&CPCommandKeyMask){ +if(objj_msgSend(self,"isColumnSelected:",_172)){ +objj_msgSend(self,"deselectColumn:",_172); +}else{ +if(objj_msgSend(self,"allowsMultipleSelection")==YES){ +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_172),YES); +} +} +return; +}else{ +if(_173&CPShiftKeyMask){ +var _174=MIN(_172,objj_msgSend(_selectedColumnIndexes,"lastIndex")),_175=MAX(_172,objj_msgSend(_selectedColumnIndexes,"firstIndex")); +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_174,_175-_174+1)),YES); +return; +}else{ +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_172),NO); +} +} +} +objj_msgSend(self,"_changeSortDescriptorsForClickOnColumn:",_172); +} +}),new objj_method(sel_getUid("_changeSortDescriptorsForClickOnColumn:"),function(self,_176,_177){ +with(self){ +var _178=objj_msgSend(_tableColumns,"objectAtIndex:",_177),_179=objj_msgSend(_178,"sortDescriptorPrototype"); +if(!_179){ +return; +} +var _17a=nil,_17b=objj_msgSend(self,"sortDescriptors"),_17c=objj_msgSend(CPArray,"arrayWithArray:",_17b),e=objj_msgSend(_17c,"objectEnumerator"),_17d=nil,_17e=objj_msgSend(CPArray,"array"); +if(objj_msgSend(_sortDescriptors,"count")>0){ +_17a=objj_msgSend(objj_msgSend(self,"sortDescriptors"),"objectAtIndex:",0); +} +while((_17d=objj_msgSend(e,"nextObject"))!=nil){ +if(objj_msgSend(objj_msgSend(_17d,"key"),"isEqual:",objj_msgSend(_179,"key"))){ +objj_msgSend(_17e,"addObject:",_17d); +} +} +if(objj_msgSend(objj_msgSend(_179,"key"),"isEqual:",objj_msgSend(_17a,"key"))){ +_179=objj_msgSend(_17a,"reversedSortDescriptor"); +} +objj_msgSend(_17c,"removeObjectsInArray:",_17e); +objj_msgSend(_17c,"insertObject:atIndex:",_179,0); +var _17f=objj_msgSend(_179,"ascending")?objj_msgSend(self,"_tableHeaderSortImage"):objj_msgSend(self,"_tableHeaderReverseSortImage"); +objj_msgSend(self,"setIndicatorImage:inTableColumn:",nil,_currentHighlightedTableColumn); +objj_msgSend(self,"setIndicatorImage:inTableColumn:",_17f,_178); +objj_msgSend(self,"setHighlightedTableColumn:",_178); +objj_msgSend(self,"setSortDescriptors:",_17c); +} +}),new objj_method(sel_getUid("setIndicatorImage:inTableColumn:"),function(self,_180,_181,_182){ +with(self){ +if(_182){ +var _183=objj_msgSend(_182,"headerView"); +if(objj_msgSend(_183,"respondsToSelector:",sel_getUid("_setIndicatorImage:"))){ +objj_msgSend(_183,"_setIndicatorImage:",_181); +} +} +} +}),new objj_method(sel_getUid("_tableHeaderSortImage"),function(self,_184){ +with(self){ +return objj_msgSend(self,"currentValueForThemeAttribute:","sort-image"); +} +}),new objj_method(sel_getUid("_tableHeaderReverseSortImage"),function(self,_185){ +with(self){ +return objj_msgSend(self,"currentValueForThemeAttribute:","sort-image-reversed"); +} +}),new objj_method(sel_getUid("highlightedTableColumn"),function(self,_186){ +with(self){ +return _currentHighlightedTableColumn; +} +}),new objj_method(sel_getUid("setHighlightedTableColumn:"),function(self,_187,_188){ +with(self){ +if(_currentHighlightedTableColumn==_188){ +return; +} +if(_headerView){ +if(_currentHighlightedTableColumn!=nil){ +objj_msgSend(objj_msgSend(_currentHighlightedTableColumn,"headerView"),"unsetThemeState:",CPThemeStateSelected); +} +if(_188!=nil){ +objj_msgSend(objj_msgSend(_188,"headerView"),"setThemeState:",CPThemeStateSelected); +} +} +_currentHighlightedTableColumn=_188; +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"),function(self,_189,_18a,_18b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"),function(self,_18c,_18d,_18e,_18f,_190){ +with(self){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:","Frameworks/AppKit/Resources/GenericFile.png",CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"),function(self,_191,_192,_193,_194,_195){ +with(self){ +var _196=objj_msgSend(self,"bounds"),view=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_196); +objj_msgSend(view,"setAlphaValue:",0.7); +var _197=objj_msgSend(_193,"count"); +while(_197--){ +var _198=objj_msgSend(_193,"objectAtIndex:",_197),row=objj_msgSend(_192,"firstIndex"); +while(row!==CPNotFound){ +var _199=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_198); +objj_msgSend(_199,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_197,row)); +objj_msgSend(_199,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_198,row)); +objj_msgSend(_198,"prepareDataView:forRow:",_199,row); +objj_msgSend(view,"addSubview:",_199); +row=objj_msgSend(_192,"indexGreaterThanIndex:",row); +} +} +var _19a=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_194,"locationInWindow"),nil); +_195.x=CGRectGetWidth(_196)/2-_19a.x; +_195.y=CGRectGetHeight(_196)/2-_19a.y; +return view; +} +}),new objj_method(sel_getUid("_dragViewForColumn:event:offset:"),function(self,_19b,_19c,_19d,_19e){ +with(self){ +var _19f=objj_msgSend(objj_msgSend(_CPColumnDragView,"alloc"),"initWithLineColor:",objj_msgSend(self,"gridColor")),_1a0=objj_msgSend(objj_msgSend(self,"tableColumns"),"objectAtIndex:",_19c),_1a1=CPRectMake(0,0,objj_msgSend(_1a0,"width"),(objj_msgSend(self,"visibleRect").size.height)+23),_1a2=objj_msgSend(self,"rectOfColumn:",_19c),_1a3=objj_msgSend(_1a0,"headerView"),row=objj_msgSend(_exposedRows,"firstIndex"); +while(row!==CPNotFound){ +var _1a4=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_1a0),_1a5=objj_msgSend(self,"frameOfDataViewAtColumn:row:",_19c,row); +_1a5.origin.x=0; +_1a5.origin.y=((_1a5.origin.y)-(objj_msgSend(self,"visibleRect").origin.y))+23; +objj_msgSend(_1a4,"setFrame:",_1a5); +objj_msgSend(_1a4,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_1a0,row)); +objj_msgSend(_19f,"addSubview:",_1a4); +row=objj_msgSend(_exposedRows,"indexGreaterThanIndex:",row); +} +var _1a6=objj_msgSend(_1a3,"frame"); +_1a6.origin={x:0,y:0}; +var _1a7=objj_msgSend(objj_msgSend(_CPTableColumnHeaderView,"alloc"),"initWithFrame:",_1a6); +objj_msgSend(_1a7,"setStringValue:",objj_msgSend(_1a3,"stringValue")); +objj_msgSend(_1a7,"setThemeState:",objj_msgSend(_1a3,"themeState")); +objj_msgSend(_19f,"addSubview:",_1a7); +objj_msgSend(_19f,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_19f,"setAlphaValue:",0.7); +objj_msgSend(_19f,"setFrame:",_1a1); +return _19f; +} +}),new objj_method(sel_getUid("setDraggingSourceOperationMask:forLocal:"),function(self,_1a8,mask,_1a9){ +with(self){ +_dragOperationDefaultMask=mask; +} +}),new objj_method(sel_getUid("setDropRow:dropOperation:"),function(self,_1aa,row,_1ab){ +with(self){ +if(row>objj_msgSend(self,"numberOfRows")&&_1ab===CPTableViewDropOn){ +var _1ac=objj_msgSend(self,"numberOfRows")+1,_1ad="Attempt to set dropRow="+row+" dropOperation=CPTableViewDropOn when [0 - "+_1ac+"] is valid range of rows."; +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:","Error",_1ad,nil),"raise"); +} +_retargetedDropRow=row; +_retargetedDropOperation=_1ab; +} +}),new objj_method(sel_getUid("setDraggingDestinationFeedbackStyle:"),function(self,_1ae,_1af){ +with(self){ +_destinationDragStyle=_1af; +} +}),new objj_method(sel_getUid("draggingDestinationFeedbackStyle"),function(self,_1b0){ +with(self){ +return _destinationDragStyle; +} +}),new objj_method(sel_getUid("setVerticalMotionCanBeginDrag:"),function(self,_1b1,_1b2){ +with(self){ +_verticalMotionCanDrag=_1b2; +} +}),new objj_method(sel_getUid("verticalMotionCanBeginDrag"),function(self,_1b3){ +with(self){ +return _verticalMotionCanDrag; +} +}),new objj_method(sel_getUid("setSortDescriptors:"),function(self,_1b4,_1b5){ +with(self){ +var _1b6=objj_msgSend(self,"sortDescriptors"),_1b7=nil; +if(_1b5==nil){ +_1b7=objj_msgSend(CPArray,"array"); +}else{ +_1b7=objj_msgSend(CPArray,"arrayWithArray:",_1b5); +} +if(objj_msgSend(_1b7,"isEqual:",_1b6)){ +return; +} +_sortDescriptors=_1b7; +objj_msgSend(self,"_sendDataSourceSortDescriptorsDidChange:",_1b6); +} +}),new objj_method(sel_getUid("sortDescriptors"),function(self,_1b8){ +with(self){ +return _sortDescriptors; +} +}),new objj_method(sel_getUid("_objectValueForTableColumn:row:"),function(self,_1b9,_1ba,_1bb){ +with(self){ +var _1bc=objj_msgSend(_1ba,"UID"),_1bd=_objectValues[_1bc]; +if(!_1bd){ +_1bd=[]; +_objectValues[_1bc]=_1bd; +} +var _1be=_1bd[_1bb]; +if(_1be===undefined&&(_implementedDataSourceMethods&_2)){ +_1be=objj_msgSend(_dataSource,"tableView:objectValueForTableColumn:row:",self,_1ba,_1bb); +_1bd[_1bb]=_1be; +} +return _1be; +} +}),new objj_method(sel_getUid("load"),function(self,_1bf){ +with(self){ +if(_reloadAllRows){ +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_exposedRows,_exposedColumns); +_exposedRows=objj_msgSend(CPIndexSet,"indexSet"); +_exposedColumns=objj_msgSend(CPIndexSet,"indexSet"); +_reloadAllRows=NO; +} +var _1c0=objj_msgSend(self,"visibleRect"),_1c1=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",objj_msgSend(self,"rowsInRect:",_1c0)),_1c2=objj_msgSend(self,"columnIndexesInRect:",_1c0),_1c3=objj_msgSend(_exposedRows,"copy"),_1c4=objj_msgSend(_exposedColumns,"copy"); +objj_msgSend(_1c3,"removeIndexes:",_1c1); +objj_msgSend(_1c4,"removeIndexes:",_1c2); +var _1c5=objj_msgSend(_1c1,"copy"),_1c6=objj_msgSend(_1c2,"copy"); +objj_msgSend(_1c5,"removeIndexes:",_exposedRows); +objj_msgSend(_1c6,"removeIndexes:",_exposedColumns); +var _1c7=objj_msgSend(_1c1,"copy"),_1c8=objj_msgSend(_1c2,"copy"); +objj_msgSend(_1c7,"removeIndexes:",_1c5); +objj_msgSend(_1c8,"removeIndexes:",_1c6); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c7,_1c4); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c3,_1c8); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c3,_1c4); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c5,_1c6); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c7,_1c6); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c5,_1c8); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c5,_1c6); +_exposedRows=_1c1; +_exposedColumns=_1c2; +objj_msgSend(_tableDrawView,"setFrame:",_1c0); +objj_msgSend(self,"setNeedsDisplay:",YES); +for(var _1c9 in _cachedDataViews){ +var _1ca=_cachedDataViews[_1c9],_1cb=_1ca.length; +while(_1cb--){ +objj_msgSend(_1ca[_1cb],"removeFromSuperview"); +} +} +if(objj_msgSend(_differedColumnDataToRemove,"count")){ +for(var i=0;i<_differedColumnDataToRemove.length;i++){ +var data=_differedColumnDataToRemove[i],_1cc=data.column; +objj_msgSend(_1cc,"setHidden:",data.shouldBeHidden); +objj_msgSend(_tableColumns,"removeObject:",_1cc); +} +objj_msgSend(_differedColumnDataToRemove,"removeAllObjects"); +} +} +}),new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"),function(self,_1cd,rows,_1ce){ +with(self){ +if(!objj_msgSend(rows,"count")||!objj_msgSend(_1ce,"count")){ +return; +} +var _1cf=[],_1d0=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1cf,-1,nil); +objj_msgSend(_1ce,"getIndexes:maxCount:inIndexRange:",_1d0,-1,nil); +var _1d1=0,_1d2=_1d0.length; +for(;_1d1<_1d2;++_1d1){ +var _1d3=_1d0[_1d1],_1d4=_tableColumns[_1d3],_1d5=objj_msgSend(_1d4,"UID"),_1d6=0,_1d7=_1cf.length; +for(;_1d6<_1d7;++_1d6){ +var row=_1cf[_1d6],_1d8=_dataViewsForTableColumns[_1d5]; +if(!_1d8||row>=_1d8.length){ +continue; +} +var _1d9=objj_msgSend(_1d8,"objectAtIndex:",row); +objj_msgSend(_1d8,"replaceObjectAtIndex:withObject:",row,nil); +objj_msgSend(self,"_enqueueReusableDataView:",_1d9); +} +} +} +}),new objj_method(sel_getUid("_loadDataViewsInRows:columns:"),function(self,_1da,rows,_1db){ +with(self){ +if(!objj_msgSend(rows,"count")||!objj_msgSend(_1db,"count")){ +return; +} +var _1dc=[],_1dd=[],_1de=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1dc,-1,nil); +objj_msgSend(_1db,"getIndexes:maxCount:inIndexRange:",_1de,-1,nil); +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _1df=0,_1e0=_1de.length; +for(;_1df<_1e0;++_1df){ +var _1e1=_1de[_1df],_1e2=_tableColumns[_1e1]; +if(objj_msgSend(_1e2,"isHidden")||_1e2===_draggedColumn){ +continue; +} +var _1e3=objj_msgSend(_1e2,"UID"); +if(!_dataViewsForTableColumns[_1e3]){ +_dataViewsForTableColumns[_1e3]=[]; +} +var _1e4=0,_1e5=_1dc.length,_1e6=objj_msgSend(_selectedColumnIndexes,"containsIndex:",_1e1); +for(;_1e4<_1e5;++_1e4){ +var row=_1dc[_1e4],_1e7=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_1e2),_1e8=objj_msgSend(_1e7,"isKindOfClass:",objj_msgSend(CPButton,"class")),_1e9=objj_msgSend(_1e7,"isKindOfClass:",objj_msgSend(CPTextField,"class")); +objj_msgSend(_1e7,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_1e1,row)); +objj_msgSend(_1e7,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_1e2,row)); +objj_msgSend(_1e2,"prepareDataView:forRow:",_1e7,row); +if(_1e6||objj_msgSend(self,"isRowSelected:",row)){ +objj_msgSend(_1e7,"setThemeState:",CPThemeStateSelectedDataView); +}else{ +objj_msgSend(_1e7,"unsetThemeState:",CPThemeStateSelectedDataView); +} +if(_implementedDelegateMethods&_1a){ +objj_msgSend(_delegate,"tableView:willDisplayView:forTableColumn:row:",self,_1e7,_1e2,row); +} +if(objj_msgSend(_1e7,"superview")!==self){ +objj_msgSend(self,"addSubview:",_1e7); +} +_dataViewsForTableColumns[_1e3][row]=_1e7; +if(_1e8||(_editingCellIndex&&_editingCellIndex.x===_1e1&&_editingCellIndex.y===row)){ +if(!_1e8){ +_editingCellIndex=undefined; +} +if(_1e9){ +objj_msgSend(_1e7,"setEditable:",YES); +objj_msgSend(_1e7,"setSendsActionOnEndEditing:",YES); +objj_msgSend(_1e7,"setSelectable:",YES); +objj_msgSend(_1e7,"selectText:",nil); +} +objj_msgSend(_1e7,"setTarget:",self); +objj_msgSend(_1e7,"setAction:",sel_getUid("_commitDataViewObjectValue:")); +_1e7.tableViewEditedColumnObj=_1e2; +_1e7.tableViewEditedRowIndex=row; +}else{ +if(_1e9){ +objj_msgSend(_1e7,"setEditable:",NO); +objj_msgSend(_1e7,"setSelectable:",NO); +} +} +} +} +} +}),new objj_method(sel_getUid("_layoutDataViewsInRows:columns:"),function(self,_1ea,rows,_1eb){ +with(self){ +var _1ec=[],_1ed=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1ec,-1,nil); +objj_msgSend(_1eb,"getIndexes:maxCount:inIndexRange:",_1ed,-1,nil); +var _1ee=0,_1ef=_1ed.length; +for(;_1ee<_1ef;++_1ee){ +var _1f0=_1ed[_1ee],_1f1=_tableColumns[_1f0],_1f2=objj_msgSend(_1f1,"UID"),_1f3=_dataViewsForTableColumns[_1f2],_1f4=_tableColumnRanges[_1f0],_1f5=0,_1f6=_1ec.length; +for(;_1f5<_1f6;++_1f5){ +var row=_1ec[_1f5],_1f7=_1f3[row]; +objj_msgSend(_1f7,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_1f0,row)); +} +} +} +}),new objj_method(sel_getUid("_commitDataViewObjectValue:"),function(self,_1f8,_1f9){ +with(self){ +objj_msgSend(_dataSource,"tableView:setObjectValue:forTableColumn:row:",self,objj_msgSend(_1f9,"objectValue"),_1f9.tableViewEditedColumnObj,_1f9.tableViewEditedRowIndex); +if(objj_msgSend(_1f9,"respondsToSelector:",sel_getUid("setEditable:"))){ +objj_msgSend(_1f9,"setEditable:",NO); +} +} +}),new objj_method(sel_getUid("_newDataViewForRow:tableColumn:"),function(self,_1fa,aRow,_1fb){ +with(self){ +if((_implementedDelegateMethods&_a)){ +var _1fc=objj_msgSend(_delegate,"tableView:dataViewForTableColumn:row:",self,_1fb,aRow); +objj_msgSend(_1fb,"setDataView:",_1fc); +} +return objj_msgSend(_1fb,"_newDataViewForRow:",aRow); +} +}),new objj_method(sel_getUid("_enqueueReusableDataView:"),function(self,_1fd,_1fe){ +with(self){ +if(!_1fe){ +return; +} +var _1ff=_1fe.identifier; +if(!_cachedDataViews[_1ff]){ +_cachedDataViews[_1ff]=[_1fe]; +}else{ +_cachedDataViews[_1ff].push(_1fe); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(self,_200,_201){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"setFrameSize:",_201); +if(_headerView){ +objj_msgSend(_headerView,"setFrameSize:",{width:(objj_msgSend(self,"frame").size.width),height:(objj_msgSend(_headerView,"frame").size.height)}); +} +} +}),new objj_method(sel_getUid("setNeedsDisplay:"),function(self,_202,_203){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"setNeedsDisplay:",_203); +objj_msgSend(_tableDrawView,"setNeedsDisplay:",_203); +} +}),new objj_method(sel_getUid("_drawRect:"),function(self,_204,_205){ +with(self){ +var _206=objj_msgSend(self,"visibleRect"); +objj_msgSend(self,"drawBackgroundInClipRect:",_206); +objj_msgSend(self,"drawGridInClipRect:",_206); +objj_msgSend(self,"highlightSelectionInClipRect:",_206); +if(_implementsCustomDrawRow){ +objj_msgSend(self,"_drawRows:clipRect:",_exposedRows,_206); +} +} +}),new objj_method(sel_getUid("drawBackgroundInClipRect:"),function(self,_207,_208){ +with(self){ +if(!_usesAlternatingRowBackgroundColors){ +return; +} +var _209=objj_msgSend(self,"alternatingRowBackgroundColors"),_20a=objj_msgSend(_209,"count"); +if(_20a===0){ +return; +} +var _20b=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +if(_20a===1){ +CGContextSetFillColor(_20b,_209[0]); +CGContextFillRect(_20b,_208); +return; +} +var _20c=objj_msgSend(self,"rowsInRect:",_208),_20d=_20c.location,_20e=CPMaxRange(_20c)-1,_20f=MIN(_20c.length,_20a),_210=0; +while(_20f--){ +var row=_20d-_20d%_20a+_20f,_211=nil; +CGContextBeginPath(_20b); +for(;row<=_20e;row+=_20a){ +if(row>=_20d){ +CGContextAddRect(_20b,CGRectIntersection(_208,_211=objj_msgSend(self,"rectOfRow:",row))); +} +} +if(row-_20a===_20e){ +_210=(_211.origin.y+_211.size.height); +} +CGContextClosePath(_20b); +CGContextSetFillColor(_20b,_209[_20f]); +CGContextFillPath(_20b); +} +var _212=(_208.origin.y+_208.size.height); +if(_210>=_212||_rowHeight<=0){ +return; +} +var _213=_rowHeight+_intercellSpacing.height,_211={origin:{x:(_208.origin.x),y:(_208.origin.y)+_210},size:{width:(_208.size.width),height:_213}}; +for(row=_20e+1;_210<_212;++row){ +CGContextSetFillColor(_20b,_209[row%_20a]); +CGContextFillRect(_20b,_211); +_210+=_213; +_211.origin.y+=_213; +} +} +}),new objj_method(sel_getUid("drawGridInClipRect:"),function(self,_214,_215){ +with(self){ +var _216=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_217=objj_msgSend(self,"gridStyleMask"); +if(!(_217&(CPTableViewSolidHorizontalGridLineMask|CPTableViewSolidVerticalGridLineMask))){ +return; +} +CGContextBeginPath(_216); +if(_217&CPTableViewSolidHorizontalGridLineMask){ +var _218=objj_msgSend(self,"rowsInRect:",_215),row=_218.location,_219=CPMaxRange(_218)-1,rowY=-0.5,minX=(_215.origin.x),maxX=(_215.origin.x+_215.size.width); +for(;row<=_219;++row){ +var _21a=objj_msgSend(self,"rectOfRow:",row),rowY=(_21a.origin.y+_21a.size.height)-0.5; +CGContextMoveToPoint(_216,minX,rowY); +CGContextAddLineToPoint(_216,maxX,rowY); +} +if(_rowHeight>0){ +var _21b=_rowHeight+_intercellSpacing.height,_21c=(_215.origin.y+_215.size.height); +while(rowY<_21c){ +rowY+=_21b; +CGContextMoveToPoint(_216,minX,rowY); +CGContextAddLineToPoint(_216,maxX,rowY); +} +} +} +if(_217&CPTableViewSolidVerticalGridLineMask){ +var _21d=objj_msgSend(self,"columnIndexesInRect:",_215),_21e=[]; +objj_msgSend(_21d,"getIndexes:maxCount:inIndexRange:",_21e,-1,nil); +var _21f=0,_220=_21e.length,minY=(_215.origin.y),maxY=(_215.origin.y+_215.size.height); +for(;_21f<_220;++_21f){ +var _221=objj_msgSend(self,"rectOfColumn:",_21e[_21f]),_222=(_221.origin.x+_221.size.width)+0.5; +CGContextMoveToPoint(_216,_222,minY); +CGContextAddLineToPoint(_216,_222,maxY); +} +} +CGContextClosePath(_216); +CGContextSetStrokeColor(_216,objj_msgSend(self,"gridColor")); +CGContextStrokePath(_216); +} +}),new objj_method(sel_getUid("highlightSelectionInClipRect:"),function(self,_223,_224){ +with(self){ +if(_selectionHighlightStyle===CPTableViewSelectionHighlightStyleNone){ +return; +} +var _225=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_226=[],_227=sel_getUid("rectOfRow:"); +if(objj_msgSend(_selectedRowIndexes,"count")>=1){ +var _228=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",objj_msgSend(self,"rowsInRect:",_224)),_229=objj_msgSend(_228,"firstIndex"),_22a=CPMakeRange(_229,objj_msgSend(_228,"lastIndex")-_229+1); +objj_msgSend(_selectedRowIndexes,"getIndexes:maxCount:inIndexRange:",_226,-1,_22a); +}else{ +if(objj_msgSend(_selectedColumnIndexes,"count")>=1){ +_227=sel_getUid("rectOfColumn:"); +var _22b=objj_msgSend(self,"columnIndexesInRect:",_224),_22c=objj_msgSend(_22b,"firstIndex"),_22a=CPMakeRange(_22c,objj_msgSend(_22b,"lastIndex")-_22c+1); +objj_msgSend(_selectedColumnIndexes,"getIndexes:maxCount:inIndexRange:",_226,-1,_22a); +} +} +var _22d=count2=objj_msgSend(_226,"count"); +if(!_22d){ +return; +} +var _22e=(_selectionHighlightStyle===CPTableViewSelectionHighlightStyleSourceList&&objj_msgSend(_selectedRowIndexes,"count")>=1),_22f=0.5*(_gridStyleMask&CPTableViewSolidHorizontalGridLineMask); +CGContextBeginPath(_225); +var _230=objj_msgSend(self,"selectionGradientColors"),_231=objj_msgSend(_230,"objectForKey:",CPSourceListTopLineColor),_232=objj_msgSend(_230,"objectForKey:",CPSourceListBottomLineColor),_233=objj_msgSend(_230,"objectForKey:",CPSourceListGradient); +while(_22d--){ +var _234=CGRectIntersection(objj_msgSend(self,_227,_226[_22d]),_224); +CGContextAddRect(_225,_234); +if(_22e){ +var minX=(_234.origin.x),minY=(_234.origin.y),maxX=(_234.origin.x+_234.size.width),maxY=(_234.origin.y+_234.size.height)-_22f; +CGContextDrawLinearGradient(_225,_233,_234.origin,CGPointMake(minX,maxY),0); +CGContextClosePath(_225); +CGContextBeginPath(_225); +CGContextMoveToPoint(_225,minX,minY); +CGContextAddLineToPoint(_225,maxX,minY); +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,_231); +CGContextStrokePath(_225); +CGContextBeginPath(_225); +CGContextMoveToPoint(_225,minX,maxY); +CGContextAddLineToPoint(_225,maxX,maxY-1); +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,_232); +CGContextStrokePath(_225); +} +} +CGContextClosePath(_225); +if(!_22e){ +objj_msgSend(objj_msgSend(self,"selectionHighlightColor"),"setFill"); +CGContextFillPath(_225); +} +CGContextBeginPath(_225); +var _235=objj_msgSend(self,"gridStyleMask"); +for(var i=0;i=1&&_235&CPTableViewSolidVerticalGridLineMask){ +var _22b=objj_msgSend(self,"columnIndexesInRect:",_224),_236=[],_237=objj_msgSend(_22b,"firstIndex"),_22a=CPMakeRange(_237,objj_msgSend(_22b,"lastIndex")-_237+1); +objj_msgSend(_22b,"getIndexes:maxCount:inIndexRange:",_236,-1,_22a); +var _238=objj_msgSend(_236,"count"); +for(var c=_237;c<_238;c++){ +var _239=objj_msgSend(self,"rectOfColumn:",_236[c]),colX=CGRectGetMaxX(_239)+0.5; +CGContextMoveToPoint(_225,colX,minY); +CGContextAddLineToPoint(_225,colX,maxY); +} +} +if(objj_msgSend(_226,"containsObject:",_226[i]+1)){ +CGContextMoveToPoint(_225,minX,maxY); +CGContextAddLineToPoint(_225,maxX,maxY); +} +} +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,objj_msgSend(self,"currentValueForThemeAttribute:","highlighted-grid-color")); +CGContextStrokePath(_225); +} +}),new objj_method(sel_getUid("_drawRows:clipRect:"),function(self,_23a,_23b,_23c){ +with(self){ +var row=objj_msgSend(_23b,"firstIndex"); +while(row!==CPNotFound){ +objj_msgSend(self,"drawRow:clipRect:",row,CGRectIntersection(_23c,objj_msgSend(self,"rectOfRow:",row))); +row=objj_msgSend(_23b,"indexGreaterThanIndex:",row); +} +} +}),new objj_method(sel_getUid("drawRow:clipRect:"),function(self,_23d,row,rect){ +with(self){ +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_23e){ +with(self){ +objj_msgSend(self,"load"); +} +}),new objj_method(sel_getUid("viewWillMoveToSuperview:"),function(self,_23f,_240){ +with(self){ +var _241=objj_msgSend(self,"superview"),_242=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_241){ +objj_msgSend(_242,"removeObserver:name:object:",self,CPViewFrameDidChangeNotification,_241); +objj_msgSend(_242,"removeObserver:name:object:",self,CPViewBoundsDidChangeNotification,_241); +} +if(_240){ +objj_msgSend(_240,"setPostsFrameChangedNotifications:",YES); +objj_msgSend(_240,"setPostsBoundsChangedNotifications:",YES); +objj_msgSend(_242,"addObserver:selector:name:object:",self,sel_getUid("superviewFrameChanged:"),CPViewFrameDidChangeNotification,_240); +objj_msgSend(_242,"addObserver:selector:name:object:",self,sel_getUid("superviewBoundsChanged:"),CPViewBoundsDidChangeNotification,_240); +} +} +}),new objj_method(sel_getUid("superviewBoundsChanged:"),function(self,_243,_244){ +with(self){ +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("superviewFrameChanged:"),function(self,_245,_246){ +with(self){ +objj_msgSend(self,"tile"); +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(self,_247){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(self,_248,_249){ +with(self){ +var row=objj_msgSend(self,"rowAtPoint:",_249); +if(row<0&&_allowsEmptySelection){ +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +} +objj_msgSend(self,"_noteSelectionIsChanging"); +if(objj_msgSend(self,"mouseDownFlags")&CPShiftKeyMask){ +_selectionAnchorRow=(ABS(objj_msgSend(_selectedRowIndexes,"firstIndex")-row)=0&&!(_implementedDataSourceMethods&_7)){ +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",row); +} +objj_msgSend(objj_msgSend(self,"window"),"makeFirstResponder:",self); +return YES; +} +}),new objj_method(sel_getUid("trackMouse:"),function(self,_24a,_24b){ +with(self){ +if(!objj_msgSend(_draggedRowIndexes,"count")){ +objj_msgSend(self,"autoscroll:",_24b); +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"trackMouse:",_24b); +}else{ +objj_msgSend(CPApp,"sendEvent:",_24b); +} +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(self,_24c,_24d,_24e){ +with(self){ +var row=objj_msgSend(self,"rowAtPoint:",_24e); +if(!_isSelectingSession&&_implementedDataSourceMethods&_7){ +if(row>=0&&(ABS(_startTrackingPoint.x-_24e.x)>3||(_verticalMotionCanDrag&&ABS(_startTrackingPoint.y-_24e.y)>3))||(objj_msgSend(_selectedRowIndexes,"containsIndex:",row))){ +if(objj_msgSend(_selectedRowIndexes,"containsIndex:",row)){ +_draggedRowIndexes=objj_msgSend(objj_msgSend(CPIndexSet,"alloc"),"initWithIndexSet:",_selectedRowIndexes); +}else{ +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSetWithIndex:",row); +} +var _24f=objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard); +if(objj_msgSend(self,"canDragRowsWithIndexes:atPoint:",_draggedRowIndexes,_24e)&&objj_msgSend(_dataSource,"tableView:writeRowsWithIndexes:toPasteboard:",self,_draggedRowIndexes,_24f)){ +var _250=objj_msgSend(CPApp,"currentEvent"),_251=CPPointMakeZero(),_252=objj_msgSend(_tableColumns,"objectsAtIndexes:",_exposedColumns); +var view=objj_msgSend(self,"dragViewForRowsWithIndexes:tableColumns:event:offset:",_draggedRowIndexes,_252,_250,_251); +if(!view){ +var _253=objj_msgSend(self,"dragImageForRowsWithIndexes:tableColumns:event:offset:",_draggedRowIndexes,_252,_250,_251); +view=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CPMakeRect(0,0,objj_msgSend(_253,"size").width,objj_msgSend(_253,"size").height)); +objj_msgSend(view,"setImage:",_253); +} +var _254=objj_msgSend(view,"bounds"),_255=CPPointMake(_24e.x-CGRectGetWidth(_254)/2+_251.x,_24e.y-CGRectGetHeight(_254)/2+_251.y); +objj_msgSend(self,"dragView:at:offset:event:pasteboard:source:slideBack:",view,_255,CPPointMakeZero(),objj_msgSend(CPApp,"currentEvent"),_24f,self,YES); +_startTrackingPoint=nil; +return NO; +} +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +}else{ +if(ABS(_startTrackingPoint.x-_24e.x)<5&&ABS(_startTrackingPoint.y-_24e.y)<5){ +return YES; +} +} +} +_isSelectingSession=YES; +if(row>=0&&row!==_lastTrackedRowIndex){ +_lastTrackedRowIndex=row; +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",row); +} +if((_implementedDataSourceMethods&_3)&&!_trackingPointMovedOutOfClickSlop){ +var _256=5; +if(ABS(_24e.x-_startTrackingPoint.x)>_256||ABS(_24e.y-_startTrackingPoint.y)>_256){ +_trackingPointMovedOutOfClickSlop=YES; +} +} +return YES; +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(self,_257,_258,_259,_25a){ +with(self){ +_isSelectingSession=NO; +var _25b=1000,_25c,_25d,_25e,_25f=YES; +if(_implementedDataSourceMethods&_7){ +_25e=objj_msgSend(self,"rowAtPoint:",_259); +if(_25e!==-1){ +if(objj_msgSend(_draggedRowIndexes,"count")>0){ +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +return; +} +_previouslySelectedRowIndexes=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",_25e); +} +} +if(_25a&&(_implementedDataSourceMethods&_3)&&!_trackingPointMovedOutOfClickSlop&&(objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"clickCount")>1)){ +_25c=objj_msgSend(self,"columnAtPoint:",_258); +if(_25c!==-1){ +_25d=_tableColumns[_25c]; +if(objj_msgSend(_25d,"isEditable")){ +_25e=objj_msgSend(self,"rowAtPoint:",_259); +if(_25e!==-1){ +if(_implementedDelegateMethods&_12){ +_25f=objj_msgSend(_delegate,"tableView:shouldEditTableColumn:row:",self,_25d,_25e); +} +if(_25f){ +objj_msgSend(self,"editColumn:row:withEvent:select:",_25c,_25e,nil,YES); +return; +} +} +} +} +} +if(objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"clickCount")===2&&_doubleAction){ +_clickedRow=objj_msgSend(self,"rowAtPoint:",_259); +objj_msgSend(self,"sendAction:to:",_doubleAction,_target); +} +} +}),new objj_method(sel_getUid("draggingEntered:"),function(self,_260,_261){ +with(self){ +var _262=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_261,"draggingLocation"),nil),_263=objj_msgSend(self,"_proposedDropOperationAtPoint:",_262),row=objj_msgSend(self,"_proposedRowAtPoint:",_262); +if(_retargetedDropRow!==nil){ +row=_retargetedDropRow; +} +var _264=objj_msgSend(self,"registeredDraggedTypes"),_265=objj_msgSend(_264,"count"),i=0; +for(;i<_265;i++){ +if(objj_msgSend(objj_msgSend(objj_msgSend(_261,"draggingPasteboard"),"types"),"containsObject:",objj_msgSend(_264,"objectAtIndex:",i))){ +return objj_msgSend(self,"_validateDrop:proposedRow:proposedDropOperation:",_261,row,_263); +} +} +return CPDragOperationNone; +} +}),new objj_method(sel_getUid("draggingExited:"),function(self,_266,_267){ +with(self){ +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +} +}),new objj_method(sel_getUid("draggingEnded:"),function(self,_268,_269){ +with(self){ +objj_msgSend(self,"_draggingEnded"); +} +}),new objj_method(sel_getUid("_draggingEnded"),function(self,_26a){ +with(self){ +_retargetedDropOperation=nil; +_retargetedDropRow=nil; +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +} +}),new objj_method(sel_getUid("wantsPeriodicDraggingUpdates"),function(self,_26b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("_proposedDropOperationAtPoint:"),function(self,_26c,_26d){ +with(self){ +if(_retargetedDropOperation!==nil){ +return _retargetedDropOperation; +} +var row=objj_msgSend(self,"_proposedRowAtPoint:",_26d),_26e=objj_msgSend(self,"rectOfRow:",row); +if(objj_msgSend(self,"intercellSpacing").height<5){ +_26e=CPRectInset(_26e,0,5-objj_msgSend(self,"intercellSpacing").height); +} +if(CGRectContainsPoint(_26e,_26d)&&row<_numberOfRows){ +return CPTableViewDropOn; +} +return CPTableViewDropAbove; +} +}),new objj_method(sel_getUid("_proposedRowAtPoint:"),function(self,_26f,_270){ +with(self){ +var row=FLOOR(_270.y/(_rowHeight+_intercellSpacing.height)),_271=row+1,rect=objj_msgSend(self,"rectOfRow:",row),_272=CGRectGetMaxY(rect),_273=_272-((_272-CGRectGetMinY(rect))*0.3); +if(_270.y>MAX(_273,_272-6)){ +row=_271; +} +if(row>=objj_msgSend(self,"numberOfRows")){ +row=objj_msgSend(self,"numberOfRows"); +} +return row; +} +}),new objj_method(sel_getUid("_validateDrop:proposedRow:proposedDropOperation:"),function(self,_274,info,row,_275){ +with(self){ +if(_implementedDataSourceMethods&_6){ +return objj_msgSend(_dataSource,"tableView:validateDrop:proposedRow:proposedDropOperation:",self,info,row,_275); +} +return CPDragOperationNone; +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewOnRow:"),function(self,_276,_277){ +with(self){ +if(_277>=objj_msgSend(self,"numberOfRows")){ +_277=objj_msgSend(self,"numberOfRows")-1; +} +return objj_msgSend(self,"rectOfRow:",_277); +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"),function(self,_278,_279,_27a,_27b){ +with(self){ +if(_27a>objj_msgSend(self,"numberOfRows")){ +_27a=objj_msgSend(self,"numberOfRows"); +} +return objj_msgSend(self,"rectOfRow:",_27a); +} +}),new objj_method(sel_getUid("draggingUpdated:"),function(self,_27c,_27d){ +with(self){ +var _27e=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_27d,"draggingLocation"),nil),_27f=objj_msgSend(self,"_proposedDropOperationAtPoint:",_27e),_280=objj_msgSend(self,"numberOfRows"),row=objj_msgSend(self,"_proposedRowAtPoint:",_27e),_281=objj_msgSend(self,"_validateDrop:proposedRow:proposedDropOperation:",_27d,row,_27f),_282=objj_msgSend(self,"visibleRect"); +if(_retargetedDropRow!==nil){ +row=_retargetedDropRow; +} +if(_27f===CPTableViewDropOn&&row>=objj_msgSend(self,"numberOfRows")){ +row=objj_msgSend(self,"numberOfRows")-1; +} +var rect={origin:{x:0,y:0},size:{width:0,height:0}}; +if(row===-1){ +rect=_282; +}else{ +if(_27f===CPTableViewDropAbove){ +rect=objj_msgSend(self,"_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:",row-1,row,_27e); +}else{ +rect=objj_msgSend(self,"_rectForDropHighlightViewOnRow:",row); +} +} +objj_msgSend(_dropOperationFeedbackView,"setDropOperation:",row!==-1?_27f:CPDragOperationNone); +objj_msgSend(_dropOperationFeedbackView,"setHidden:",(_281==CPDragOperationNone)); +objj_msgSend(_dropOperationFeedbackView,"setFrame:",rect); +objj_msgSend(_dropOperationFeedbackView,"setCurrentRow:",row); +objj_msgSend(self,"addSubview:",_dropOperationFeedbackView); +return _281; +} +}),new objj_method(sel_getUid("prepareForDragOperation:"),function(self,_283,_284){ +with(self){ +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +return (_implementedDataSourceMethods&_6); +} +}),new objj_method(sel_getUid("performDragOperation:"),function(self,_285,_286){ +with(self){ +var _287=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_286,"draggingLocation"),nil),_288=objj_msgSend(self,"_proposedDropOperationAtPoint:",_287),row=_retargetedDropRow; +if(row===nil){ +var row=objj_msgSend(self,"_proposedRowAtPoint:",_287); +} +return objj_msgSend(_dataSource,"tableView:acceptDrop:row:dropOperation:",self,_286,row,_288); +} +}),new objj_method(sel_getUid("concludeDragOperation:"),function(self,_289,_28a){ +with(self){ +objj_msgSend(self,"reloadData"); +} +}),new objj_method(sel_getUid("draggedImage:endedAt:operation:"),function(self,_28b,_28c,_28d,_28e){ +with(self){ +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:didEndDraggedImage:atPosition:operation:"))){ +objj_msgSend(_dataSource,"tableView:didEndDraggedImage:atPosition:operation:",self,_28c,_28d,_28e); +} +} +}),new objj_method(sel_getUid("draggedView:endedAt:operation:"),function(self,_28f,_290,_291,_292){ +with(self){ +objj_msgSend(self,"_draggingEnded"); +objj_msgSend(self,"draggedImage:endedAt:operation:",_290,_291,_292); +} +}),new objj_method(sel_getUid("_updateSelectionWithMouseAtRow:"),function(self,_293,aRow){ +with(self){ +if(aRow<0){ +return; +} +var _294,_295=NO; +if(objj_msgSend(self,"mouseDownFlags")&(CPCommandKeyMask|CPControlKeyMask|CPAlternateKeyMask)){ +if(objj_msgSend(_selectedRowIndexes,"containsIndex:",aRow)){ +_294=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_294,"removeIndex:",aRow); +}else{ +if(_allowsMultipleSelection){ +_294=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_294,"addIndex:",aRow); +}else{ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndex:",aRow); +} +} +}else{ +if(_allowsMultipleSelection){ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(MIN(aRow,_selectionAnchorRow),ABS(aRow-_selectionAnchorRow)+1)); +_295=objj_msgSend(self,"mouseDownFlags")&CPShiftKeyMask&&((_lastSelectedRow==objj_msgSend(_selectedRowIndexes,"lastIndex")&&aRow>_lastSelectedRow)||(_lastSelectedRow==objj_msgSend(_selectedRowIndexes,"firstIndex")&&aRow<_lastSelectedRow)); +}else{ +if(aRow>=0&&aRow<_numberOfRows){ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndex:",aRow); +}else{ +_294=objj_msgSend(CPIndexSet,"indexSet"); +} +} +} +if(objj_msgSend(_294,"isEqualToIndexSet:",_selectedRowIndexes)){ +return; +} +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +if(_implementedDelegateMethods&_11){ +_294=objj_msgSend(_delegate,"tableView:selectionIndexesForProposedSelection:",self,_294); +} +if(_implementedDelegateMethods&_13){ +var _296=[]; +objj_msgSend(_294,"getIndexes:maxCount:inIndexRange:",_296,-1,nil); +var _297=_296.length; +while(_297--){ +var _298=_296[_297]; +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,_298)){ +objj_msgSend(_294,"removeIndex:",_298); +} +} +if(objj_msgSend(_294,"count")===0){ +return; +} +} +if(!_allowsEmptySelection&&objj_msgSend(_294,"count")===0){ +return; +} +if(objj_msgSend(_294,"isEqualToIndexSet:",_selectedRowIndexes)){ +return; +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",_294,_295); +} +}),new objj_method(sel_getUid("_noteSelectionIsChanging"),function(self,_299){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewSelectionIsChangingNotification,self,nil); +} +}),new objj_method(sel_getUid("_noteSelectionDidChange"),function(self,_29a){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewSelectionDidChangeNotification,self,nil); +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(self,_29b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(self,_29c){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("keyDown:"),function(self,_29d,_29e){ +with(self){ +objj_msgSend(self,"interpretKeyEvents:",[_29e]); +} +}),new objj_method(sel_getUid("moveDown:"),function(self,_29f,_2a0){ +with(self){ +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +var _2a1=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"count")>0){ +var _2a2=NO; +if((objj_msgSend(_2a1,"modifierFlags")&CPShiftKeyMask)&&_allowsMultipleSelection){ +_2a2=YES; +} +var i=objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"lastIndex"); +if(i0){ +var i=0; +} +} +if(_implementedDelegateMethods&_13){ +while((!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i))&&i=0){ +objj_msgSend(self,"scrollRowToVisible:",i); +} +} +}),new objj_method(sel_getUid("moveDownAndModifySelection:"),function(self,_2a3,_2a4){ +with(self){ +objj_msgSend(self,"moveDown:",_2a4); +} +}),new objj_method(sel_getUid("moveUp:"),function(self,_2a5,_2a6){ +with(self){ +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +var _2a7=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"count")>0){ +var _2a8=NO; +if((objj_msgSend(_2a7,"modifierFlags")&CPShiftKeyMask)&&_allowsMultipleSelection){ +_2a8=YES; +} +var i=objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"firstIndex"); +if(i>0){ +i--; +} +}else{ +var _2a8=NO; +if(objj_msgSend(self,"numberOfRows")>0){ +var i=objj_msgSend(self,"numberOfRows")-1; +} +} +if(_implementedDelegateMethods&_13){ +while((!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i))&&i>0){ +i--; +} +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i)){ +return; +} +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",i),_2a8); +if(i>=0){ +objj_msgSend(self,"scrollRowToVisible:",i); +} +} +}),new objj_method(sel_getUid("moveUpAndModifySelection:"),function(self,_2a9,_2aa){ +with(self){ +objj_msgSend(self,"moveUp:",_2aa); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(self,_2ab,_2ac){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewDeleteKeyPressed:"))){ +objj_msgSend(_delegate,"tableViewDeleteKeyPressed:",self); +} +} +})]); +class_addMethods(_1e,[new objj_method(sel_getUid("themeClass"),function(self,_2ad){ +with(self){ +return "tableview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(self,_2ae){ +with(self){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["alternating-row-colors","grid-color","highlighted-grid-color","selection-color","sourcelist-selection-color","sort-image","sort-image-reversed"]); +} +})]); +var _1d=objj_getClass("CPTableView"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(self,_2af,_2b0){ +with(self){ +if(_2b0==="selectionIndexes"){ +return "selectedRowIndexes"; +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"_replacementKeyPathForBinding:",_2b0); +} +}),new objj_method(sel_getUid("_establishBindingsIfUnbound:"),function(self,_2b1,_2b2){ +with(self){ +if(objj_msgSend(objj_msgSend(self,"infoForBinding:","content"),"objectForKey:",CPObservedObjectKey)!==_2b2){ +objj_msgSend(self,"bind:toObject:withKeyPath:options:","content",_2b2,"arrangedObjects",nil); +} +if(objj_msgSend(objj_msgSend(self,"infoForBinding:","selectionIndexes"),"objectForKey:",CPObservedObjectKey)!==_2b2){ +objj_msgSend(self,"bind:toObject:withKeyPath:options:","selectionIndexes",_2b2,"selectionIndexes",nil); +} +} +}),new objj_method(sel_getUid("setContent:"),function(self,_2b3,_2b4){ +with(self){ +objj_msgSend(self,"reloadData"); +} +})]); +var _2b5="CPTableViewDataSourceKey",_2b6="CPTableViewDelegateKey",_2b7="CPTableViewHeaderViewKey",_2b8="CPTableViewTableColumnsKey",_2b9="CPTableViewRowHeightKey",_2ba="CPTableViewIntercellSpacingKey",_2bb="CPTableViewSelectionHighlightStyleKey",_2bc="CPTableViewMultipleSelectionKey",_2bd="CPTableViewEmptySelectionKey",_2be="CPTableViewColumnReorderingKey",_2bf="CPTableViewColumnResizingKey",_2c0="CPTableViewColumnSelectionKey",_2c1="CPTableViewColumnAutoresizingStyleKey",_2c2="CPTableViewGridColorKey",_2c3="CPTableViewGridStyleMaskKey",_2c4="CPTableViewUsesAlternatingBackgroundKey",_2c5="CPTableViewAlternatingRowColorsKey",_2b7="CPTableViewHeaderViewKey",_2c6="CPTableViewCornerViewKey"; +var _1d=objj_getClass("CPTableView"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("initWithCoder:"),function(self,_2c7,_2c8){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"initWithCoder:",_2c8); +if(self){ +_allowsColumnReordering=objj_msgSend(_2c8,"decodeBoolForKey:",_2be); +_allowsColumnResizing=objj_msgSend(_2c8,"decodeBoolForKey:",_2bf); +_allowsMultipleSelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2bc); +_allowsEmptySelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2bd); +_allowsColumnSelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2c0); +_selectionHighlightStyle=objj_msgSend(_2c8,"decodeIntForKey:",_2bb); +_columnAutoResizingStyle=objj_msgSend(_2c8,"decodeIntForKey:",_2c1); +_tableColumns=objj_msgSend(_2c8,"decodeObjectForKey:",_2b8)||[]; +objj_msgSend(_tableColumns,"makeObjectsPerformSelector:withObject:",sel_getUid("setTableView:"),self); +if(objj_msgSend(_2c8,"containsValueForKey:",_2b9)){ +_rowHeight=objj_msgSend(_2c8,"decodeFloatForKey:",_2b9); +}else{ +_rowHeight=23; +} +_intercellSpacing=objj_msgSend(_2c8,"decodeSizeForKey:",_2ba)||{width:3,height:2}; +objj_msgSend(self,"setGridColor:",objj_msgSend(_2c8,"decodeObjectForKey:",_2c2)); +_gridStyleMask=objj_msgSend(_2c8,"decodeIntForKey:",_2c3)||CPTableViewGridNone; +_usesAlternatingRowBackgroundColors=objj_msgSend(_2c8,"decodeObjectForKey:",_2c4); +objj_msgSend(self,"setAlternatingRowBackgroundColors:",objj_msgSend(_2c8,"decodeObjectForKey:",_2c5)); +_headerView=objj_msgSend(_2c8,"decodeObjectForKey:",_2b7); +_cornerView=objj_msgSend(_2c8,"decodeObjectForKey:",_2c6); +if(_cornerView){ +objj_msgSend(_cornerView,"setHidden:",NO); +} +_dataSource=objj_msgSend(_2c8,"decodeObjectForKey:",_2b5); +_delegate=objj_msgSend(_2c8,"decodeObjectForKey:",_2b6); +objj_msgSend(self,"_init"); +objj_msgSend(self,"viewWillMoveToSuperview:",objj_msgSend(self,"superview")); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_2c9,_2ca){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"encodeWithCoder:",_2ca); +objj_msgSend(_2ca,"encodeObject:forKey:",_dataSource,_2b5); +objj_msgSend(_2ca,"encodeObject:forKey:",_delegate,_2b6); +objj_msgSend(_2ca,"encodeFloat:forKey:",_rowHeight,_2b9); +objj_msgSend(_2ca,"encodeSize:forKey:",_intercellSpacing,_2ba); +objj_msgSend(_2ca,"encodeInt:forKey:",_selectionHighlightStyle,_2bb); +objj_msgSend(_2ca,"encodeInt:forKey:",_columnAutoResizingStyle,_2c1); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsMultipleSelection,_2bc); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsEmptySelection,_2bd); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnReordering,_2be); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnResizing,_2bf); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnSelection,_2c0); +objj_msgSend(_2ca,"encodeObject:forKey:",_tableColumns,_2b8); +objj_msgSend(_2ca,"encodeObject:forKey:",objj_msgSend(self,"gridColor"),_2c2); +objj_msgSend(_2ca,"encodeInt:forKey:",_gridStyleMask,_2c3); +objj_msgSend(_2ca,"encodeBool:forKey:",_usesAlternatingRowBackgroundColors,_2c4); +objj_msgSend(_2ca,"encodeObject:forKey:",objj_msgSend(self,"alternatingRowBackgroundColors"),_2c5); +objj_msgSend(_2ca,"encodeObject:forKey:",_cornerView,_2c6); +objj_msgSend(_2ca,"encodeObject:forKey:",_headerView,_2b7); +} +})]); +var _1d=objj_getClass("CPIndexSet"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("removeMatches:"),function(self,_2cb,_2cc){ +with(self){ +var _2cd=objj_msgSend(self,"firstIndex"); +var _2ce=MIN(_2cd,objj_msgSend(_2cc,"firstIndex")); +var _2cf=(_2ce==_2cd); +while(_2ce!=CPNotFound){ +var _2d0=(_2cf)?_2cc:self; +otherIndex=objj_msgSend(_2d0,"indexGreaterThanOrEqualToIndex:",_2ce); +if(otherIndex==_2ce){ +objj_msgSend(self,"removeIndex:",_2ce); +objj_msgSend(_2cc,"removeIndex:",_2ce); +} +_2ce=otherIndex; +_2cf=!_2cf; +} +} +})]); +var _1d=objj_allocateClassPair(CPView,"_CPDropOperationDrawingView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("dropOperation"),new objj_ivar("tableView"),new objj_ivar("currentRow"),new objj_ivar("isBlinking")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("dropOperation"),function(self,_2d1){ +with(self){ +return dropOperation; +} +}),new objj_method(sel_getUid("setDropOperation:"),function(self,_2d2,_2d3){ +with(self){ +dropOperation=_2d3; +} +}),new objj_method(sel_getUid("tableView"),function(self,_2d4){ +with(self){ +return tableView; +} +}),new objj_method(sel_getUid("setTableView:"),function(self,_2d5,_2d6){ +with(self){ +tableView=_2d6; +} +}),new objj_method(sel_getUid("currentRow"),function(self,_2d7){ +with(self){ +return currentRow; +} +}),new objj_method(sel_getUid("setCurrentRow:"),function(self,_2d8,_2d9){ +with(self){ +currentRow=_2d9; +} +}),new objj_method(sel_getUid("isBlinking"),function(self,_2da){ +with(self){ +return isBlinking; +} +}),new objj_method(sel_getUid("setIsBlinking:"),function(self,_2db,_2dc){ +with(self){ +isBlinking=_2dc; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_2dd,_2de){ +with(self){ +if(tableView._destinationDragStyle===CPTableViewDraggingDestinationFeedbackStyleNone||isBlinking){ +return; +} +var _2df=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"colorWithHexString:","4886ca")); +CGContextSetLineWidth(_2df,3); +if(currentRow===-1){ +CGContextStrokeRect(_2df,objj_msgSend(self,"bounds")); +}else{ +if(dropOperation===CPTableViewDropOn){ +var _2e0=objj_msgSend(tableView,"selectedRowIndexes"),_2e1={origin:{x:_2de.origin.x+2,y:_2de.origin.y+2},size:{width:_2de.size.width-4,height:_2de.size.height-5}}; +if(objj_msgSend(_2e0,"containsIndex:",currentRow)){ +CGContextSetLineWidth(_2df,2); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"whiteColor")); +}else{ +CGContextSetFillColor(_2df,objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",72/255,134/255,202/255,0.25)); +CGContextFillRoundedRectangleInRect(_2df,_2e1,8,YES,YES,YES,YES); +} +CGContextStrokeRoundedRectangleInRect(_2df,_2e1,8,YES,YES,YES,YES); +}else{ +if(dropOperation===CPTableViewDropAbove){ +objj_msgSend(self,"setFrameOrigin:",CGPointMake(_frame.origin.x,_frame.origin.y-8)); +var _2e0=objj_msgSend(tableView,"selectedRowIndexes"); +if(objj_msgSend(_2e0,"containsIndex:",currentRow-1)||objj_msgSend(_2e0,"containsIndex:",currentRow)){ +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"whiteColor")); +CGContextSetLineWidth(_2df,4); +CGContextStrokeEllipseInRect(_2df,{origin:{x:_2de.origin.x+4,y:_2de.origin.y+4},size:{width:8,height:8}}); +CGContextBeginPath(_2df); +CGContextMoveToPoint(_2df,10,_2de.origin.y+8); +CGContextAddLineToPoint(_2df,_2de.size.width-_2de.origin.y-8,_2de.origin.y+8); +CGContextClosePath(_2df); +CGContextStrokePath(_2df); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"colorWithHexString:","4886ca")); +CGContextSetLineWidth(_2df,3); +} +CGContextStrokeEllipseInRect(_2df,{origin:{x:_2de.origin.x+4,y:_2de.origin.y+4},size:{width:8,height:8}}); +CGContextBeginPath(_2df); +CGContextMoveToPoint(_2df,10,_2de.origin.y+8); +CGContextAddLineToPoint(_2df,_2de.size.width-_2de.origin.y-8,_2de.origin.y+8); +CGContextClosePath(_2df); +CGContextStrokePath(_2df); +} +} +} +} +}),new objj_method(sel_getUid("blink"),function(self,_2e2){ +with(self){ +if(dropOperation!==CPTableViewDropOn){ +return; +} +isBlinking=YES; +var _2e3=function(){ +objj_msgSend(self,"setHidden:",NO); +isBlinking=NO; +}; +var _2e4=function(){ +objj_msgSend(self,"setHidden:",YES); +isBlinking=YES; +}; +objj_msgSend(self,"setHidden:",YES); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.1,_2e3,NO); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.19,_2e4,NO); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.27,_2e3,NO); +} +})]); +var _1d=objj_allocateClassPair(CPView,"_CPColumnDragView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_lineColor")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("initWithLineColor:"),function(self,_2e5,_2e6){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPColumnDragView").super_class},"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +if(self){ +_lineColor=_2e6; +} +return self; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_2e7,_2e8){ +with(self){ +var _2e9=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(_2e9,_lineColor); +var _2ea=[{x:0.5,y:0},{x:0.5,y:_2e8.size.height}]; +CGContextStrokeLineSegments(_2e9,_2ea,2); +_2ea=[{x:_2e8.size.width-0.5,y:0},{x:_2e8.size.width-0.5,y:_2e8.size.height}]; +CGContextStrokeLineSegments(_2e9,_2ea,2); +} +})]); +p;11;CPTabView.jt;18841;@STATIC;1.0;i;13;CPImageView.ji;15;CPTabViewItem.ji;8;CPView.jt;18771; +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPTabViewItem.j",YES); +objj_executeFile("CPView.j",YES); +CPTopTabsBezelBorder=0; +CPNoTabsBezelBorder=4; +CPNoTabsLineBorder=5; +CPNoTabsNoBorder=6; +var _1=nil,_2=nil,_3=nil,_4=nil,_5=nil; +var _6=7,_7=7; +var _8=1,_9=2,_a=4,_b=8; +var _c=objj_allocateClassPair(CPView,"CPTabView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_labelsView"),new objj_ivar("_backgroundView"),new objj_ivar("_separatorView"),new objj_ivar("_auxiliaryView"),new objj_ivar("_contentView"),new objj_ivar("_tabViewItems"),new objj_ivar("_selectedTabViewItem"),new objj_ivar("_tabViewType"),new objj_ivar("_delegate"),new objj_ivar("_delegateSelectors")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_e,_f,_10){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPTabView").super_class},"initWithFrame:",_10); +if(_e){ +_tabViewType=CPTopTabsBezelBorder; +_tabViewItems=[]; +} +return _e; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_11,_12){ +with(_11){ +if(_tabViewType!=CPTopTabsBezelBorder||_labelsView){ +return; +} +objj_msgSend(_11,"_createBezelBorder"); +objj_msgSend(_11,"layoutSubviews"); +} +}),new objj_method(sel_getUid("_createBezelBorder"),function(_13,_14){ +with(_13){ +var _15=objj_msgSend(_13,"bounds"); +_labelsView=objj_msgSend(objj_msgSend(_CPTabLabelsView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_15),0)); +objj_msgSend(_labelsView,"setTabView:",_13); +objj_msgSend(_labelsView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_13,"addSubview:",_labelsView); +_backgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_backgroundView,"setBackgroundColor:",_5); +objj_msgSend(_backgroundView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_13,"addSubview:",_backgroundView); +_separatorView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_separatorView,"setBackgroundColor:",objj_msgSend(objj_msgSend(_13,"class"),"bezelBorderColor")); +objj_msgSend(_separatorView,"setAutoresizingMask:",CPViewWidthSizable|CPViewMaxYMargin); +objj_msgSend(_13,"addSubview:",_separatorView); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_16,_17){ +with(_16){ +if(_tabViewType==CPTopTabsBezelBorder){ +var _18=objj_msgSend(_16,"bounds"),_19=objj_msgSend(_CPTabLabelsView,"height"); +_18.origin.y+=_19; +_18.size.height-=_19; +objj_msgSend(_backgroundView,"setFrame:",_18); +var _1a=5; +if(_auxiliaryView){ +_1a=CGRectGetHeight(objj_msgSend(_auxiliaryView,"frame")); +objj_msgSend(_auxiliaryView,"setFrame:",CGRectMake(_6,_19,CGRectGetWidth(_18)-_6-_7,_1a)); +} +objj_msgSend(_separatorView,"setFrame:",CGRectMake(_6,_19+_1a,CGRectGetWidth(_18)-_6-_7,1)); +} +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_16,"contentRect")); +} +}),new objj_method(sel_getUid("addTabViewItem:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"insertTabViewItem:atIndex:",_1d,objj_msgSend(_tabViewItems,"count")); +} +}),new objj_method(sel_getUid("insertTabViewItem:atIndex:"),function(_1e,_1f,_20,_21){ +with(_1e){ +if(!_labelsView){ +objj_msgSend(_1e,"_createBezelBorder"); +} +objj_msgSend(_tabViewItems,"insertObject:atIndex:",_20,_21); +objj_msgSend(_labelsView,"tabView:didAddTabViewItem:",_1e,_20); +objj_msgSend(_20,"_setTabView:",_1e); +if(objj_msgSend(_tabViewItems,"count")==1){ +objj_msgSend(_1e,"selectFirstTabViewItem:",_1e); +} +if(_delegateSelectors&_b){ +objj_msgSend(_delegate,"tabViewDidChangeNumberOfTabViewItems:",_1e); +} +} +}),new objj_method(sel_getUid("removeTabViewItem:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_22,"indexOfTabViewItem:",_24); +objj_msgSend(_tabViewItems,"removeObjectIdenticalTo:",_24); +objj_msgSend(_labelsView,"tabView:didRemoveTabViewItemAtIndex:",_22,_25); +objj_msgSend(_24,"_setTabView:",nil); +if(_delegateSelectors&_b){ +objj_msgSend(_delegate,"tabViewDidChangeNumberOfTabViewItems:",_22); +} +} +}),new objj_method(sel_getUid("indexOfTabViewItem:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(_tabViewItems,"indexOfObjectIdenticalTo:",_28); +} +}),new objj_method(sel_getUid("indexOfTabViewItemWithIdentifier:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=0,_2d=objj_msgSend(_tabViewItems,"count"); +for(;_2c<_2d;++_2c){ +if(objj_msgSend(objj_msgSend(_tabViewItems[_2c],"identifier"),"isEqual:",_2b)){ +return _2c; +} +} +return _2c; +} +}),new objj_method(sel_getUid("numberOfTabViewItems"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_tabViewItems,"count"); +} +}),new objj_method(sel_getUid("tabViewItemAtIndex:"),function(_30,_31,_32){ +with(_30){ +return _tabViewItems[_32]; +} +}),new objj_method(sel_getUid("tabViewItems"),function(_33,_34){ +with(_33){ +return _tabViewItems; +} +}),new objj_method(sel_getUid("selectFirstTabViewItem:"),function(_35,_36,_37){ +with(_35){ +var _38=objj_msgSend(_tabViewItems,"count"); +if(_38){ +objj_msgSend(_35,"selectTabViewItemAtIndex:",0); +} +} +}),new objj_method(sel_getUid("selectLastTabViewItem:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=objj_msgSend(_tabViewItems,"count"); +if(_3c){ +objj_msgSend(_39,"selectTabViewItemAtIndex:",_3c-1); +} +} +}),new objj_method(sel_getUid("selectNextTabViewItem:"),function(_3d,_3e,_3f){ +with(_3d){ +if(!_selectedTabViewItem){ +return; +} +var _40=objj_msgSend(_3d,"indexOfTabViewItem:",_selectedTabViewItem),_41=objj_msgSend(_tabViewItems,"count"); +objj_msgSend(_3d,"selectTabViewItemAtIndex:",_40+1%_41); +} +}),new objj_method(sel_getUid("selectPreviousTabViewItem:"),function(_42,_43,_44){ +with(_42){ +if(!_selectedTabViewItem){ +return; +} +var _45=objj_msgSend(_42,"indexOfTabViewItem:",_selectedTabViewItem),_46=objj_msgSend(_tabViewItems,"count"); +objj_msgSend(_42,"selectTabViewItemAtIndex:",_45==0?_46:_45-1); +} +}),new objj_method(sel_getUid("selectTabViewItem:"),function(_47,_48,_49){ +with(_47){ +if((_delegateSelectors&_9)&&!objj_msgSend(_delegate,"tabView:shouldSelectTabViewItem:",_47,_49)){ +return; +} +if(_delegateSelectors&_a){ +objj_msgSend(_delegate,"tabView:willSelectTabViewItem:",_47,_49); +} +if(_selectedTabViewItem){ +_selectedTabViewItem._tabState=CPBackgroundTab; +objj_msgSend(_labelsView,"tabView:didChangeStateOfTabViewItem:",_47,_selectedTabViewItem); +} +_selectedTabViewItem=_49; +_selectedTabViewItem._tabState=CPSelectedTab; +var _4a=_contentView; +_contentView=objj_msgSend(_selectedTabViewItem,"view"); +if(_4a!==_contentView){ +objj_msgSend(_4a,"removeFromSuperview"); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_47,"addSubview:",_contentView); +} +var _4b=_auxiliaryView; +_auxiliaryView=objj_msgSend(_selectedTabViewItem,"auxiliaryView"); +if(_4b!==_auxiliaryView){ +objj_msgSend(_4b,"removeFromSuperview"); +objj_msgSend(_auxiliaryView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_47,"addSubview:",_auxiliaryView); +} +objj_msgSend(_labelsView,"tabView:didChangeStateOfTabViewItem:",_47,_selectedTabViewItem); +objj_msgSend(_47,"layoutSubviews"); +if(_delegateSelectors&_8){ +objj_msgSend(_delegate,"tabView:didSelectTabViewItem:",_47,_49); +} +} +}),new objj_method(sel_getUid("selectTabViewItemAtIndex:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"selectTabViewItem:",_tabViewItems[_4e]); +} +}),new objj_method(sel_getUid("selectedTabViewItem"),function(_4f,_50){ +with(_4f){ +return _selectedTabViewItem; +} +}),new objj_method(sel_getUid("setTabViewType:"),function(_51,_52,_53){ +with(_51){ +if(_tabViewType==_53){ +return; +} +_tabViewType=_53; +if(_tabViewType==CPNoTabsBezelBorder||_tabViewType==CPNoTabsLineBorder||_tabViewType==CPNoTabsNoBorder){ +objj_msgSend(_labelsView,"removeFromSuperview"); +}else{ +if(_labelsView&&!objj_msgSend(_labelsView,"superview")){ +objj_msgSend(_51,"addSubview:",_labelsView); +} +} +if(_tabViewType==CPNoTabsLineBorder||_tabViewType==CPNoTabsNoBorder){ +objj_msgSend(_backgroundView,"removeFromSuperview"); +}else{ +if(_backgroundView&&!objj_msgSend(_backgroundView,"superview")){ +objj_msgSend(_51,"addSubview:",_backgroundView); +} +} +objj_msgSend(_51,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabViewType"),function(_54,_55){ +with(_54){ +return _tabViewType; +} +}),new objj_method(sel_getUid("contentRect"),function(_56,_57){ +with(_56){ +var _58=CGRectMakeCopy(objj_msgSend(_56,"bounds")); +if(_tabViewType==CPTopTabsBezelBorder){ +var _59=objj_msgSend(_CPTabLabelsView,"height"),_5a=_auxiliaryView?CGRectGetHeight(objj_msgSend(_auxiliaryView,"frame")):5,_5b=1; +_58.origin.y+=_59+_5a+_5b; +_58.size.height-=_59+_5a+_5b*2; +_58.origin.x+=_6; +_58.size.width-=_6+_7; +} +return _58; +} +}),new objj_method(sel_getUid("delegate"),function(_5c,_5d){ +with(_5c){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_5e,_5f,_60){ +with(_5e){ +if(_delegate==_60){ +return; +} +_delegate=_60; +_delegateSelectors=0; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:shouldSelectTabViewItem:"))){ +_delegateSelectors|=_9; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:willSelectTabViewItem:"))){ +_delegateSelectors|=_a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:didSelectTabViewItem:"))){ +_delegateSelectors|=_8; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabViewDidChangeNumberOfTabViewItems:"))){ +_delegateSelectors|=_b; +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_61,_62,_63){ +with(_61){ +var _64=objj_msgSend(_labelsView,"convertPoint:fromView:",objj_msgSend(_63,"locationInWindow"),nil),_65=objj_msgSend(_labelsView,"representedTabViewItemAtPoint:",_64); +if(_65){ +objj_msgSend(_61,"selectTabViewItem:",_65); +} +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_66,_67){ +with(_66){ +if(_66!=CPTabView){ +return; +} +var _68=objj_msgSend(CPBundle,"bundleForClass:",_66),_69=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initByReferencingFile:size:","",CGSizeMake(7,0)),_6a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBackgroundCenter.png"),CGSizeMake(1,1)),_6b=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorderLeft.png"),CGSizeMake(7,1)),_6c=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorder.png"),CGSizeMake(1,1)),_6d=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorderRight.png"),CGSizeMake(7,1)); +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[_69,_69,_69,_6b,_6a,_6d,_6b,_6c,_6d])); +_4=objj_msgSend(CPColor,"colorWithPatternImage:",_6c); +} +}),new objj_method(sel_getUid("bezelBorderColor"),function(_6e,_6f){ +with(_6e){ +return _4; +} +})]); +var _70="CPTabViewItemsKey",_71="CPTabViewSelectedItemKey",_72="CPTabViewTypeKey",_73="CPTabViewDelegateKey"; +var _c=objj_getClass("CPTabView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPTabView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("initWithCoder:"),function(_74,_75,_76){ +with(_74){ +if(_74=objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPTabView").super_class},"initWithCoder:",_76)){ +_tabViewType=objj_msgSend(_76,"decodeIntForKey:",_72); +_tabViewItems=[]; +objj_msgSend(_74,"_createBezelBorder"); +var _77=objj_msgSend(_76,"decodeObjectForKey:",_70); +for(var i=0;_77&&i<_77.length;i++){ +objj_msgSend(_74,"insertTabViewItem:atIndex:",_77[i],i); +} +var _78=objj_msgSend(_76,"decodeObjectForKey:",_71); +if(_78){ +objj_msgSend(_74,"selectTabViewItem:",_78); +} +objj_msgSend(_74,"setDelegate:",objj_msgSend(_76,"decodeObjectForKey:",_73)); +} +return _74; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_79,_7a,_7b){ +with(_79){ +var _7c=_subviews; +_subviews=[]; +objj_msgSendSuper({receiver:_79,super_class:objj_getClass("CPTabView").super_class},"encodeWithCoder:",_7b); +_subviews=_7c; +objj_msgSend(_7b,"encodeObject:forKey:",_tabViewItems,_70); +objj_msgSend(_7b,"encodeObject:forKey:",_selectedTabViewItem,_71); +objj_msgSend(_7b,"encodeInt:forKey:",_tabViewType,_72); +objj_msgSend(_7b,"encodeConditionalObject:forKey:",_delegate,_73); +} +})]); +var _7d=nil,_7e=10,_7f=15; +var _c=objj_allocateClassPair(CPView,"_CPTabLabelsView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_tabView"),new objj_ivar("_tabLabels")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_80,_81,_82){ +with(_80){ +_80=objj_msgSendSuper({receiver:_80,super_class:objj_getClass("_CPTabLabelsView").super_class},"initWithFrame:",_82); +if(_80){ +_tabLabels=[]; +objj_msgSend(_80,"setBackgroundColor:",_7d); +objj_msgSend(_80,"setFrameSize:",CGSizeMake(CGRectGetWidth(_82),26)); +} +return _80; +} +}),new objj_method(sel_getUid("setTabView:"),function(_83,_84,_85){ +with(_83){ +_tabView=_85; +} +}),new objj_method(sel_getUid("tabView"),function(_86,_87){ +with(_86){ +return _tabView; +} +}),new objj_method(sel_getUid("tabView:didAddTabViewItem:"),function(_88,_89,_8a,_8b){ +with(_88){ +var _8c=objj_msgSend(objj_msgSend(_CPTabLabel,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_8c,"setTabViewItem:",_8b); +_tabLabels.push(_8c); +objj_msgSend(_88,"addSubview:",_8c); +objj_msgSend(_88,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabView:didRemoveTabViewItemAtIndex:"),function(_8d,_8e,_8f,_90){ +with(_8d){ +var _91=_tabLabels[_90]; +objj_msgSend(_tabLabels,"removeObjectAtIndex:",_90); +objj_msgSend(_91,"removeFromSuperview"); +objj_msgSend(_8d,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabView:didChangeStateOfTabViewItem:"),function(_92,_93,_94,_95){ +with(_92){ +objj_msgSend(_tabLabels[objj_msgSend(_94,"indexOfTabViewItem:",_95)],"setTabState:",objj_msgSend(_95,"tabState")); +} +}),new objj_method(sel_getUid("representedTabViewItemAtPoint:"),function(_96,_97,_98){ +with(_96){ +var _99=0,_9a=_tabLabels.length; +for(;_99<_9a;++_99){ +var _9b=_tabLabels[_99]; +if(CGRectContainsPoint(objj_msgSend(_9b,"frame"),_98)){ +return objj_msgSend(_9b,"tabViewItem"); +} +} +return nil; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_9c,_9d){ +with(_9c){ +var _9e=0,_9f=_tabLabels.length,_a0=((objj_msgSend(_9c,"bounds").size.width)-(_9f-1)*_7e-2*_7f)/_9f,x=_7f; +for(;_9e<_9f;++_9e){ +var _a1=_tabLabels[_9e],_a2={origin:{x:x,y:8},size:{width:_a0,height:18}}; +objj_msgSend(_a1,"setFrame:",_a2); +x=(_a2.origin.x+_a2.size.width)+_7e; +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_a3,_a4,_a5){ +with(_a3){ +if(CGSizeEqualToSize(objj_msgSend(_a3,"frame").size,_a5)){ +return; +} +objj_msgSendSuper({receiver:_a3,super_class:objj_getClass("_CPTabLabelsView").super_class},"setFrameSize:",_a5); +objj_msgSend(_a3,"layoutSubviews"); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_a6,_a7){ +with(_a6){ +if(_a6!=objj_msgSend(_CPTabLabelsView,"class")){ +return; +} +var _a8=objj_msgSend(CPBundle,"bundleForClass:",_a6); +_7d=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewLeft.png"),CGSizeMake(12,26)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewCenter.png"),CGSizeMake(1,26)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewRight.png"),CGSizeMake(12,26))],NO)); +} +}),new objj_method(sel_getUid("height"),function(_a9,_aa){ +with(_a9){ +return 26; +} +})]); +var _ab=nil,_ac=nil; +var _c=objj_allocateClassPair(CPView,"_CPTabLabel"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_tabViewItem"),new objj_ivar("_labelField")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_ad,_ae,_af){ +with(_ad){ +_ad=objj_msgSendSuper({receiver:_ad,super_class:objj_getClass("_CPTabLabel").super_class},"initWithFrame:",_af); +if(_ad){ +_labelField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_labelField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_labelField,"setFrame:",CGRectMake(5,0,CGRectGetWidth(_af)-10,20)); +objj_msgSend(_labelField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_labelField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",11)); +objj_msgSend(_ad,"addSubview:",_labelField); +objj_msgSend(_ad,"setTabState:",CPBackgroundTab); +} +return _ad; +} +}),new objj_method(sel_getUid("setTabState:"),function(_b0,_b1,_b2){ +with(_b0){ +objj_msgSend(_b0,"setBackgroundColor:",_b2==CPSelectedTab?_ac:_ab); +} +}),new objj_method(sel_getUid("setTabViewItem:"),function(_b3,_b4,_b5){ +with(_b3){ +_tabViewItem=_b5; +objj_msgSend(_b3,"update"); +} +}),new objj_method(sel_getUid("tabViewItem"),function(_b6,_b7){ +with(_b6){ +return _tabViewItem; +} +}),new objj_method(sel_getUid("update"),function(_b8,_b9){ +with(_b8){ +objj_msgSend(_labelField,"setStringValue:",objj_msgSend(_tabViewItem,"label")); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_ba,_bb){ +with(_ba){ +if(_ba!=objj_msgSend(_CPTabLabel,"class")){ +return; +} +var _bc=objj_msgSend(CPBundle,"bundleForClass:",_ba); +_ab=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundLeft.png"),CGSizeMake(6,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundCenter.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundRight.png"),CGSizeMake(6,18))],NO)); +_ac=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedLeft.png"),CGSizeMake(3,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedCenter.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedRight.png"),CGSizeMake(3,18))],NO)); +} +})]); +p;15;CPTabViewItem.jt;2872;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPView.jt;2807; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPSelectedTab=0; +CPBackgroundTab=1; +CPPressedTab=2; +var _1=objj_allocateClassPair(CPObject,"CPTabViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier"),new objj_ivar("_label"),new objj_ivar("_view"),new objj_ivar("_auxiliaryView"),new objj_ivar("_tabView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPTabViewItem").super_class},"init"); +if(_5){ +_identifier=_7; +} +return _5; +} +}),new objj_method(sel_getUid("setLabel:"),function(_8,_9,_a){ +with(_8){ +_label=_a; +} +}),new objj_method(sel_getUid("label"),function(_b,_c){ +with(_b){ +return _label; +} +}),new objj_method(sel_getUid("tabState"),function(_d,_e){ +with(_d){ +return _tabState; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_f,_10,_11){ +with(_f){ +_identifier=_11; +} +}),new objj_method(sel_getUid("identifier"),function(_12,_13){ +with(_12){ +return _identifier; +} +}),new objj_method(sel_getUid("setView:"),function(_14,_15,_16){ +with(_14){ +_view=_16; +} +}),new objj_method(sel_getUid("view"),function(_17,_18){ +with(_17){ +return _view; +} +}),new objj_method(sel_getUid("setAuxiliaryView:"),function(_19,_1a,_1b){ +with(_19){ +_auxiliaryView=_1b; +} +}),new objj_method(sel_getUid("auxiliaryView"),function(_1c,_1d){ +with(_1c){ +return _auxiliaryView; +} +}),new objj_method(sel_getUid("tabView"),function(_1e,_1f){ +with(_1e){ +return _tabView; +} +}),new objj_method(sel_getUid("_setTabView:"),function(_20,_21,_22){ +with(_20){ +_tabView=_22; +} +})]); +var _23="CPTabViewItemIdentifierKey",_24="CPTabViewItemLabelKey",_25="CPTabViewItemViewKey",_26="CPTabViewItemAuxViewKey"; +var _1=objj_getClass("CPTabViewItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTabViewItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_27,_28,_29){ +with(_27){ +_27=objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPTabViewItem").super_class},"init"); +if(_27){ +_identifier=objj_msgSend(_29,"decodeObjectForKey:",_23); +_label=objj_msgSend(_29,"decodeObjectForKey:",_24); +_view=objj_msgSend(_29,"decodeObjectForKey:",_25); +_auxiliaryView=objj_msgSend(_29,"decodeObjectForKey:",_26); +} +return _27; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2a,_2b,_2c){ +with(_2a){ +objj_msgSend(_2c,"encodeObject:forKey:",_identifier,_23); +objj_msgSend(_2c,"encodeObject:forKey:",_label,_24); +objj_msgSend(_2c,"encodeObject:forKey:",_view,_25); +objj_msgSend(_2c,"encodeObject:forKey:",_auxiliaryView,_26); +} +})]); +p;8;CPText.jt;265;@STATIC;1.0;i;8;CPView.jt;235; +objj_executeFile("CPView.j",YES); +CPEnterCharacter=""; +CPBackspaceCharacter="\b"; +CPTabCharacter="\t"; +CPNewlineCharacter="\n"; +CPFormFeedCharacter="\f"; +CPCarriageReturnCharacter="\r"; +CPBackTabCharacter=""; +CPDeleteCharacter=""; +p;13;CPTextField.jt;29823;@STATIC;1.0;i;11;CPControl.ji;17;CPStringDrawing.ji;17;CPCompatibility.ji;21;_CPImageAndTextView.jt;29717; +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPStringDrawing.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("_CPImageAndTextView.j",YES); +CPTextFieldSquareBezel=0; +CPTextFieldRoundedBezel=1; +CPTextFieldDidFocusNotification="CPTextFieldDidFocusNotification"; +CPTextFieldDidBlurNotification="CPTextFieldDidBlurNotification"; +var _1=nil,_2=nil,_3=nil,_4=nil,_5=nil,_6=NO,_7=NO,_8=NO,_9=nil,_a=nil,_b=nil; +var _c="•"; +var _d=objj_getClass("CPString"); +if(!_d){ +throw new SyntaxError("*** Could not find definition for class \"CPString\""); +} +var _e=_d.isa; +class_addMethods(_d,[new objj_method(sel_getUid("string"),function(_f,_10){ +with(_f){ +return _f; +} +})]); +CPTextFieldStateRounded=CPThemeState("rounded"); +CPTextFieldStatePlaceholder=CPThemeState("placeholder"); +var _d=objj_allocateClassPair(CPControl,"CPTextField"),_e=_d.isa; +class_addIvars(_d,[new objj_ivar("_isEditing"),new objj_ivar("_isEditable"),new objj_ivar("_isSelectable"),new objj_ivar("_isSecure"),new objj_ivar("_drawsBackground"),new objj_ivar("_textFieldBackgroundColor"),new objj_ivar("_placeholderString"),new objj_ivar("_delegate"),new objj_ivar("_textDidChangeValue"),new objj_ivar("_bezelStyle"),new objj_ivar("_isBordered"),new objj_ivar("_controlSize")]); +objj_registerClassPair(_d); +class_addMethods(_d,[new objj_method(sel_getUid("_inputElement"),function(_11,_12){ +with(_11){ +if(!_1){ +_1=document.createElement("input"); +_1.style.position="absolute"; +_1.style.border="0px"; +_1.style.padding="0px"; +_1.style.margin="0px"; +_1.style.whiteSpace="pre"; +_1.style.background="transparent"; +_1.style.outline="none"; +_b=function(_13){ +if(_4&&_4._DOMElement!=_1.parentNode){ +return; +} +if(!_6){ +objj_msgSend(objj_msgSend(_4,"window"),"makeFirstResponder:",nil); +return; +} +CPTextFieldHandleBlur(_13,_1); +_7=YES; +return true; +}; +CPTextFieldHandleBlur=function(_14){ +_4=nil; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +}; +_1.onblur=_b; +_3=_1; +} +if(CPFeatureIsCompatible(CPInputTypeCanBeChangedFeature)){ +if(objj_msgSend(_11,"isSecure")){ +_1.type="password"; +}else{ +_1.type="text"; +} +return _1; +} +if(objj_msgSend(_11,"isSecure")){ +if(!_2){ +_2=document.createElement("input"); +_2.style.position="absolute"; +_2.style.border="0px"; +_2.style.padding="0px"; +_2.style.margin="0px"; +_2.style.whiteSpace="pre"; +_2.style.background="transparent"; +_2.style.outline="none"; +_2.type="password"; +_2.onblur=_b; +} +_1=_2; +}else{ +_1=_3; +} +return _1; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_15,_16,_17){ +with(_15){ +_15=objj_msgSendSuper({receiver:_15,super_class:objj_getClass("CPTextField").super_class},"initWithFrame:",_17); +if(_15){ +objj_msgSend(_15,"setStringValue:",""); +objj_msgSend(_15,"setPlaceholderString:",""); +_sendActionOn=CPKeyUpMask|CPKeyDownMask; +objj_msgSend(_15,"setValue:forThemeAttribute:",CPLeftTextAlignment,"alignment"); +} +return _15; +} +}),new objj_method(sel_getUid("setEditable:"),function(_18,_19,_1a){ +with(_18){ +if(_isEditable===_1a){ +return; +} +_isEditable=_1a; +if(_1a){ +_isSelectable=YES; +} +if(!_1a&&objj_msgSend(objj_msgSend(_18,"window"),"firstResponder")===_18){ +objj_msgSend(objj_msgSend(_18,"window"),"makeFirstResponder:",nil); +} +} +}),new objj_method(sel_getUid("isEditable"),function(_1b,_1c){ +with(_1b){ +return _isEditable; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSendSuper({receiver:_1d,super_class:objj_getClass("CPTextField").super_class},"setEnabled:",_1f); +if(!_1f&&objj_msgSend(objj_msgSend(_1d,"window"),"firstResponder")===_1d){ +objj_msgSend(objj_msgSend(_1d,"window"),"makeFirstResponder:",nil); +} +} +}),new objj_method(sel_getUid("setSelectable:"),function(_20,_21,_22){ +with(_20){ +_isSelectable=_22; +} +}),new objj_method(sel_getUid("isSelectable"),function(_23,_24){ +with(_23){ +return _isSelectable; +} +}),new objj_method(sel_getUid("setSecure:"),function(_25,_26,_27){ +with(_25){ +_isSecure=_27; +} +}),new objj_method(sel_getUid("isSecure"),function(_28,_29){ +with(_28){ +return _isSecure; +} +}),new objj_method(sel_getUid("setBezeled:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_2c){ +objj_msgSend(_2a,"setThemeState:",CPThemeStateBezeled); +}else{ +objj_msgSend(_2a,"unsetThemeState:",CPThemeStateBezeled); +} +} +}),new objj_method(sel_getUid("isBezeled"),function(_2d,_2e){ +with(_2d){ +return objj_msgSend(_2d,"hasThemeState:",CPThemeStateBezeled); +} +}),new objj_method(sel_getUid("setBezelStyle:"),function(_2f,_30,_31){ +with(_2f){ +var _32=_31===CPTextFieldRoundedBezel; +if(_32){ +objj_msgSend(_2f,"setThemeState:",CPTextFieldStateRounded); +}else{ +objj_msgSend(_2f,"unsetThemeState:",CPTextFieldStateRounded); +} +} +}),new objj_method(sel_getUid("bezelStyle"),function(_33,_34){ +with(_33){ +if(objj_msgSend(_33,"hasThemeState:",CPTextFieldStateRounded)){ +return CPTextFieldRoundedBezel; +} +return CPTextFieldSquareBezel; +} +}),new objj_method(sel_getUid("setBordered:"),function(_35,_36,_37){ +with(_35){ +if(_37){ +objj_msgSend(_35,"setThemeState:",CPThemeStateBordered); +}else{ +objj_msgSend(_35,"unsetThemeState:",CPThemeStateBordered); +} +} +}),new objj_method(sel_getUid("isBordered"),function(_38,_39){ +with(_38){ +return objj_msgSend(_38,"hasThemeState:",CPThemeStateBordered); +} +}),new objj_method(sel_getUid("setDrawsBackground:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_drawsBackground==_3c){ +return; +} +_drawsBackground=_3c; +objj_msgSend(_3a,"setNeedsLayout"); +objj_msgSend(_3a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawsBackground"),function(_3d,_3e){ +with(_3d){ +return _drawsBackground; +} +}),new objj_method(sel_getUid("setTextFieldBackgroundColor:"),function(_3f,_40,_41){ +with(_3f){ +if(_textFieldBackgroundColor==_41){ +return; +} +_textFieldBackgroundColor=_41; +objj_msgSend(_3f,"setNeedsLayout"); +objj_msgSend(_3f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("textFieldBackgroundColor"),function(_42,_43){ +with(_42){ +return _textFieldBackgroundColor; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_44,_45){ +with(_44){ +return objj_msgSend(_44,"isEditable")&&objj_msgSend(_44,"isEnabled"); +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(_46,_47){ +with(_46){ +if(_4&&objj_msgSend(_4,"window")!==objj_msgSend(_46,"window")){ +objj_msgSend(objj_msgSend(_4,"window"),"makeFirstResponder:",nil); +} +objj_msgSend(_46,"setThemeState:",CPThemeStateEditing); +objj_msgSend(_46,"_updatePlaceholderState"); +objj_msgSend(_46,"setNeedsLayout"); +_isEditing=NO; +var _48=objj_msgSend(_46,"stringValue"),_49=objj_msgSend(_46,"_inputElement"); +_49.value=_48; +_49.style.color=objj_msgSend(objj_msgSend(_46,"currentValueForThemeAttribute:","text-color"),"cssString"); +_49.style.font=objj_msgSend(objj_msgSend(_46,"currentValueForThemeAttribute:","font"),"cssString"); +_49.style.zIndex=1000; +switch(objj_msgSend(_46,"alignment")){ +case CPCenterTextAlignment: +_49.style.textAlign="center"; +break; +case CPRightTextAlignment: +_49.style.textAlign="right"; +break; +default: +_49.style.textAlign="left"; +} +var _4a=objj_msgSend(_46,"contentRectForBounds:",objj_msgSend(_46,"bounds")); +_49.style.top=(_4a.origin.y)+"px"; +_49.style.left=((_4a.origin.x)-1)+"px"; +_49.style.width=(_4a.size.width)+"px"; +_49.style.height=(_4a.size.height)+"px"; +_DOMElement.appendChild(_49); +window.setTimeout(function(){ +_49.focus(); +objj_msgSend(_46,"textDidFocus:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPTextFieldDidFocusNotification,_46,nil)); +_4=_46; +},0); +_49.value=objj_msgSend(_46,"stringValue"); +objj_msgSend(objj_msgSend(objj_msgSend(_46,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +_8=YES; +if(document.attachEvent){ +_9=objj_msgSend(objj_msgSend(_46,"window"),"platformWindow")._DOMBodyElement.onselectstart; +_a=objj_msgSend(objj_msgSend(_46,"window"),"platformWindow")._DOMBodyElement.ondrag; +objj_msgSend(objj_msgSend(_46,"window"),"platformWindow")._DOMBodyElement.ondrag=function(){ +}; +objj_msgSend(objj_msgSend(_46,"window"),"platformWindow")._DOMBodyElement.onselectstart=function(){ +}; +} +return YES; +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_4b,"unsetThemeState:",CPThemeStateEditing); +objj_msgSend(_4b,"_updatePlaceholderState"); +objj_msgSend(_4b,"setNeedsLayout"); +var _4d=objj_msgSend(_4b,"_inputElement"); +objj_msgSend(_4b,"setObjectValue:",_4d.value); +_6=YES; +_4d.blur(); +if(!_7){ +_b(); +} +_7=NO; +_6=NO; +if(_4d.parentNode==_DOMElement){ +_4d.parentNode.removeChild(_4d); +} +_8=NO; +if(document.attachEvent){ +objj_msgSend(objj_msgSend(_4b,"window"),"platformWindow")._DOMBodyElement.ondrag=_a; +objj_msgSend(objj_msgSend(_4b,"window"),"platformWindow")._DOMBodyElement.onselectstart=_9; +_9=nil; +_a=nil; +} +if(_isEditing){ +_isEditing=NO; +objj_msgSend(_4b,"textDidEndEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidEndEditingNotification,_4b,nil)); +if(objj_msgSend(_4b,"sendsActionOnEndEditing")){ +objj_msgSend(_4b,"sendAction:to:",objj_msgSend(_4b,"action"),objj_msgSend(_4b,"target")); +} +} +objj_msgSend(_4b,"textDidBlur:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPTextFieldDidBlurNotification,_4b,nil)); +return YES; +} +}),new objj_method(sel_getUid("needsPanelToBecomeKey"),function(_4e,_4f){ +with(_4e){ +return YES; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_50,_51,_52){ +with(_50){ +if(objj_msgSend(_50,"isEditable")&&objj_msgSend(_50,"isEnabled")){ +return objj_msgSend(objj_msgSend(_50,"window"),"makeFirstResponder:",_50); +}else{ +if(objj_msgSend(_50,"isSelectable")){ +if(document.attachEvent){ +_9=objj_msgSend(objj_msgSend(_50,"window"),"platformWindow")._DOMBodyElement.onselectstart; +_a=objj_msgSend(objj_msgSend(_50,"window"),"platformWindow")._DOMBodyElement.ondrag; +objj_msgSend(objj_msgSend(_50,"window"),"platformWindow")._DOMBodyElement.ondrag=function(){ +}; +objj_msgSend(objj_msgSend(_50,"window"),"platformWindow")._DOMBodyElement.onselectstart=function(){ +}; +} +return objj_msgSend(objj_msgSend(objj_msgSend(_52,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +}else{ +return objj_msgSend(objj_msgSend(_50,"nextResponder"),"mouseDown:",_52); +} +} +} +}),new objj_method(sel_getUid("mouseUp:"),function(_53,_54,_55){ +with(_53){ +if(!objj_msgSend(_53,"isSelectable")&&(!objj_msgSend(_53,"isEditable")||!objj_msgSend(_53,"isEnabled"))){ +objj_msgSend(objj_msgSend(_53,"nextResponder"),"mouseUp:",_55); +}else{ +if(objj_msgSend(_53,"isSelectable")){ +if(document.attachEvent){ +objj_msgSend(objj_msgSend(_53,"window"),"platformWindow")._DOMBodyElement.ondrag=_a; +objj_msgSend(objj_msgSend(_53,"window"),"platformWindow")._DOMBodyElement.onselectstart=_9; +_9=nil; +_a=nil; +} +return objj_msgSend(objj_msgSend(objj_msgSend(_55,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_56,_57,_58){ +with(_56){ +if(!objj_msgSend(_56,"isSelectable")&&(!objj_msgSend(_56,"isEditable")||!objj_msgSend(_56,"isEnabled"))){ +objj_msgSend(objj_msgSend(_56,"nextResponder"),"mouseDragged:",_58); +}else{ +if(objj_msgSend(_56,"isSelectable")){ +return objj_msgSend(objj_msgSend(objj_msgSend(_58,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("keyUp:"),function(_59,_5a,_5b){ +with(_59){ +var _5c=objj_msgSend(_59,"stringValue"); +objj_msgSend(_59,"_setStringValue:",objj_msgSend(_59,"_inputElement").value); +if(_5c!==objj_msgSend(_59,"stringValue")){ +if(!_isEditing){ +_isEditing=YES; +objj_msgSend(_59,"textDidBeginEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidBeginEditingNotification,_59,nil)); +} +objj_msgSend(_59,"textDidChange:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidChangeNotification,_59,nil)); +} +objj_msgSend(objj_msgSend(objj_msgSend(_59,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("keyDown:"),function(_5d,_5e,_5f){ +with(_5d){ +if(objj_msgSend(_5f,"keyCode")===CPReturnKeyCode){ +if(_isEditing){ +_isEditing=NO; +objj_msgSend(_5d,"textDidEndEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidEndEditingNotification,_5d,nil)); +} +objj_msgSend(_5d,"sendAction:to:",objj_msgSend(_5d,"action"),objj_msgSend(_5d,"target")); +objj_msgSend(_5d,"selectText:",nil); +objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +}else{ +if(objj_msgSend(_5f,"keyCode")===CPTabKeyCode){ +if(objj_msgSend(_5f,"modifierFlags")&CPShiftKeyMask){ +objj_msgSend(objj_msgSend(_5d,"window"),"selectPreviousKeyView:",_5d); +}else{ +objj_msgSend(objj_msgSend(_5d,"window"),"selectNextKeyView:",_5d); +} +if(objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"firstResponder"),"respondsToSelector:",sel_getUid("selectText:"))){ +objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"firstResponder"),"selectText:",_5d); +} +objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("textDidBlur:"),function(_60,_61,_62){ +with(_60){ +if(objj_msgSend(_62,"object")!=_60){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotification:",_62); +} +}),new objj_method(sel_getUid("textDidFocus:"),function(_63,_64,_65){ +with(_63){ +if(objj_msgSend(_65,"object")!=_63){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotification:",_65); +} +}),new objj_method(sel_getUid("objectValue"),function(_66,_67){ +with(_66){ +return objj_msgSendSuper({receiver:_66,super_class:objj_getClass("CPTextField").super_class},"objectValue"); +} +}),new objj_method(sel_getUid("_setStringValue:"),function(_68,_69,_6a){ +with(_68){ +objj_msgSend(_68,"willChangeValueForKey:","objectValue"); +objj_msgSendSuper({receiver:_68,super_class:objj_getClass("CPTextField").super_class},"setObjectValue:",String(_6a)); +objj_msgSend(_68,"_updatePlaceholderState"); +objj_msgSend(_68,"didChangeValueForKey:","objectValue"); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_6b,_6c,_6d){ +with(_6b){ +objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPTextField").super_class},"setObjectValue:",_6d); +if(_4===_6b||objj_msgSend(objj_msgSend(_6b,"window"),"firstResponder")===_6b){ +objj_msgSend(_6b,"_inputElement").value=_6d; +} +objj_msgSend(_6b,"_updatePlaceholderState"); +} +}),new objj_method(sel_getUid("_updatePlaceholderState"),function(_6e,_6f){ +with(_6e){ +var _70=objj_msgSend(_6e,"stringValue"); +if((!_70||_70.length===0)&&!objj_msgSend(_6e,"hasThemeState:",CPThemeStateEditing)){ +objj_msgSend(_6e,"setThemeState:",CPTextFieldStatePlaceholder); +}else{ +objj_msgSend(_6e,"unsetThemeState:",CPTextFieldStatePlaceholder); +} +} +}),new objj_method(sel_getUid("setPlaceholderString:"),function(_71,_72,_73){ +with(_71){ +if(_placeholderString===_73){ +return; +} +_placeholderString=_73; +if(objj_msgSend(_71,"hasThemeState:",CPTextFieldStatePlaceholder)){ +objj_msgSend(_71,"setNeedsLayout"); +objj_msgSend(_71,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("placeholderString"),function(_74,_75){ +with(_74){ +return _placeholderString; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_76,_77){ +with(_76){ +var _78=objj_msgSend((objj_msgSend(_76,"stringValue")||" "),"sizeWithFont:",objj_msgSend(_76,"currentValueForThemeAttribute:","font")),_79=objj_msgSend(_76,"currentValueForThemeAttribute:","content-inset"),_7a=objj_msgSend(_76,"currentValueForThemeAttribute:","min-size"),_7b=objj_msgSend(_76,"currentValueForThemeAttribute:","max-size"); +_78.width=MAX(_78.width+_79.left+_79.right,_7a.width); +_78.height=MAX(_78.height+_79.top+_79.bottom,_7a.height); +if(_7b.width>=0){ +_78.width=MIN(_78.width,_7b.width); +} +if(_7b.height>=0){ +_78.height=MIN(_78.height,_7b.height); +} +if(objj_msgSend(_76,"isEditable")){ +_78.width=CGRectGetWidth(objj_msgSend(_76,"frame")); +} +objj_msgSend(_76,"setFrameSize:",_78); +} +}),new objj_method(sel_getUid("selectText:"),function(_7c,_7d,_7e){ +with(_7c){ +var _7f=objj_msgSend(_7c,"_inputElement"); +if((objj_msgSend(_7c,"isEditable")||objj_msgSend(_7c,"isSelectable"))){ +if(objj_msgSend(objj_msgSend(_7c,"window"),"firstResponder")===_7c){ +window.setTimeout(function(){ +_7f.select(); +},0); +}else{ +if(objj_msgSend(_7c,"window")!==nil&&objj_msgSend(objj_msgSend(_7c,"window"),"makeFirstResponder:",_7c)){ +window.setTimeout(function(){ +objj_msgSend(_7c,"selectText:",_7e); +},0); +} +} +} +} +}),new objj_method(sel_getUid("copy:"),function(_80,_81,_82){ +with(_80){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +var _83=objj_msgSend(_80,"selectedRange"); +if(_83.length<1){ +return; +} +var _84=objj_msgSend(CPPasteboard,"generalPasteboard"),_85=objj_msgSend(_80,"stringValue"),_86=objj_msgSend(_85,"substringWithRange:",_83); +objj_msgSend(_84,"declareTypes:owner:",[CPStringPboardType],nil); +objj_msgSend(_84,"setString:forType:",_86,CPStringPboardType); +} +} +}),new objj_method(sel_getUid("cut:"),function(_87,_88,_89){ +with(_87){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_87,"copy:",_89); +objj_msgSend(_87,"deleteBackward:",_89); +} +} +}),new objj_method(sel_getUid("paste:"),function(_8a,_8b,_8c){ +with(_8a){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +var _8d=objj_msgSend(CPPasteboard,"generalPasteboard"); +if(!objj_msgSend(objj_msgSend(_8d,"types"),"containsObject:",CPStringPboardType)){ +return; +} +objj_msgSend(_8a,"deleteBackward:",_8c); +var _8e=objj_msgSend(_8a,"selectedRange"),_8f=objj_msgSend(_8a,"stringValue"),_90=objj_msgSend(_8d,"stringForType:",CPStringPboardType),_91=objj_msgSend(_8f,"stringByReplacingCharactersInRange:withString:",_8e,_90); +objj_msgSend(_8a,"setStringValue:",_91); +objj_msgSend(_8a,"setSelectedRange:",CPMakeRange(_8e.location+_90.length,0)); +} +} +}),new objj_method(sel_getUid("selectedRange"),function(_92,_93){ +with(_92){ +if(objj_msgSend(objj_msgSend(_92,"window"),"firstResponder")!==_92){ +return CPMakeRange(0,0); +} +try{ +var _94=objj_msgSend(_92,"_inputElement"),_95=_94.selectionStart,_96=_94.selectionEnd; +if(objj_msgSend(_95,"isKindOfClass:",CPNumber)){ +return CPMakeRange(_95,_96-_95); +} +var _97=_94.ownerDocument||_94.document,_98=_97.selection.createRange(),_99=_94.createTextRange(); +if(_99.inRange(_98)){ +_99.setEndPoint("EndToStart",_98); +return CPMakeRange(_99.text.length,_98.text.length); +} +} +catch(e){ +} +return CGMakeRange(0,0); +} +}),new objj_method(sel_getUid("setSelectedRange:"),function(_9a,_9b,_9c){ +with(_9a){ +if(!objj_msgSend(objj_msgSend(_9a,"window"),"firstResponder")===_9a){ +return; +} +var _9d=objj_msgSend(_9a,"_inputElement"); +try{ +if(objj_msgSend(_9d.selectionStart,"isKindOfClass:",CPNumber)){ +_9d.selectionStart=_9c.location; +_9d.selectionEnd=CPMaxRange(_9c); +}else{ +var _9e=_9d.ownerDocument||_9d.document,_9f=_9e.selection.createRange(),_a0=_9d.createTextRange(); +if(_a0.inRange(_9f)){ +_a0.collapse(true); +_a0.move("character",_9c.location); +_a0.moveEnd("character",_9c.length); +_a0.select(); +} +} +} +catch(e){ +} +} +}),new objj_method(sel_getUid("selectAll:"),function(_a1,_a2,_a3){ +with(_a1){ +objj_msgSend(_a1,"selectText:",_a3); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(_a4,_a5,_a6){ +with(_a4){ +var _a7=objj_msgSend(_a4,"selectedRange"),_a8=objj_msgSend(_a4,"stringValue"),_a9=objj_msgSend(_a8,"stringByReplacingCharactersInRange:withString:",_a7,""); +objj_msgSend(_a4,"setStringValue:",_a9); +objj_msgSend(_a4,"setSelectedRange:",CPMakeRange(_a7.location,0)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_aa,_ab,_ac){ +with(_aa){ +var _ad=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_delegate){ +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPControlTextDidBeginEditingNotification,_aa); +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPControlTextDidChangeNotification,_aa); +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPControlTextDidEndEditingNotification,_aa); +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPTextFieldDidFocusNotification,_aa); +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPTextFieldDidBlurNotification,_aa); +} +_delegate=_ac; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidBeginEditing:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidBeginEditing:"),CPControlTextDidBeginEditingNotification,_aa); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidChange:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidChange:"),CPControlTextDidChangeNotification,_aa); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidEndEditing:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidEndEditing:"),CPControlTextDidEndEditingNotification,_aa); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidFocus:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidFocus:"),CPTextFieldDidFocusNotification,_aa); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidBlur:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidBlur:"),CPTextFieldDidBlurNotification,_aa); +} +} +}),new objj_method(sel_getUid("delegate"),function(_ae,_af){ +with(_ae){ +return _delegate; +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_b0,_b1,_b2){ +with(_b0){ +var _b3=objj_msgSend(_b0,"currentValueForThemeAttribute:","content-inset"); +if(!_b3){ +return _b2; +} +_b2.origin.x+=_b3.left; +_b2.origin.y+=_b3.top; +_b2.size.width-=_b3.left+_b3.right; +_b2.size.height-=_b3.top+_b3.bottom; +return _b2; +} +}),new objj_method(sel_getUid("bezelRectForBounds:"),function(_b4,_b5,_b6){ +with(_b4){ +var _b7=objj_msgSend(_b4,"currentValueForThemeAttribute:","bezel-inset"); +if(((_b7).top===0&&(_b7).right===0&&(_b7).bottom===0&&(_b7).left===0)){ +return _b6; +} +_b6.origin.x+=_b7.left; +_b6.origin.y+=_b7.top; +_b6.size.width-=_b7.left+_b7.right; +_b6.size.height-=_b7.top+_b7.bottom; +return _b6; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_b8,_b9,_ba){ +with(_b8){ +if(_ba==="bezel-view"){ +return objj_msgSend(_b8,"bezelRectForBounds:",objj_msgSend(_b8,"bounds")); +}else{ +if(_ba==="content-view"){ +return objj_msgSend(_b8,"contentRectForBounds:",objj_msgSend(_b8,"bounds")); +} +} +return objj_msgSendSuper({receiver:_b8,super_class:objj_getClass("CPTextField").super_class},"rectForEphemeralSubviewNamed:",_ba); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_bb,_bc,_bd){ +with(_bb){ +if(_bd==="bezel-view"){ +var _be=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_be,"setHitTests:",NO); +return _be; +}else{ +var _be=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_be,"setHitTests:",NO); +return _be; +} +return objj_msgSendSuper({receiver:_bb,super_class:objj_getClass("CPTextField").super_class},"createEphemeralSubviewNamed:",_bd); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_bf,_c0){ +with(_bf){ +var _c1=objj_msgSend(_bf,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","bezel-view",CPWindowBelow,"content-view"); +if(_c1){ +objj_msgSend(_c1,"setBackgroundColor:",objj_msgSend(_bf,"currentValueForThemeAttribute:","bezel-color")); +} +var _c2=objj_msgSend(_bf,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","content-view",CPWindowAbove,"bezel-view"); +if(_c2){ +objj_msgSend(_c2,"setHidden:",objj_msgSend(_bf,"hasThemeState:",CPThemeStateEditing)); +var _c3=""; +if(objj_msgSend(_bf,"hasThemeState:",CPTextFieldStatePlaceholder)){ +_c3=objj_msgSend(_bf,"placeholderString"); +}else{ +_c3=objj_msgSend(_bf,"stringValue"); +if(objj_msgSend(_bf,"isSecure")){ +_c3=_c4(_c3); +} +} +objj_msgSend(_c2,"setText:",_c3); +objj_msgSend(_c2,"setTextColor:",objj_msgSend(_bf,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_c2,"setFont:",objj_msgSend(_bf,"currentValueForThemeAttribute:","font")); +objj_msgSend(_c2,"setAlignment:",objj_msgSend(_bf,"currentValueForThemeAttribute:","alignment")); +objj_msgSend(_c2,"setVerticalAlignment:",objj_msgSend(_bf,"currentValueForThemeAttribute:","vertical-alignment")); +objj_msgSend(_c2,"setLineBreakMode:",objj_msgSend(_bf,"currentValueForThemeAttribute:","line-break-mode")); +objj_msgSend(_c2,"setTextShadowColor:",objj_msgSend(_bf,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_c2,"setTextShadowOffset:",objj_msgSend(_bf,"currentValueForThemeAttribute:","text-shadow-offset")); +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_c5,_c6,_c7,_c8){ +with(_c5){ +var _c9=_c8.length,_ca=objj_msgSend(_c8[0],"valueForKeyPath:",_c7); +objj_msgSend(_c5,"setStringValue:",_ca); +objj_msgSend(_c5,"setPlaceholderString:",""); +while(_c9-->1){ +if(_ca!==objj_msgSend(_c8[_c9],"valueForKeyPath:",_c7)){ +objj_msgSend(_c5,"setPlaceholderString:","Multiple Values"); +objj_msgSend(_c5,"setStringValue:",""); +} +} +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:"),function(_cb,_cc,_cd,_ce,_cf){ +with(_cb){ +return objj_msgSend(_cb,"textFieldWithStringValue:placeholder:width:theme:",_cd,_ce,_cf,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:theme:"),function(_d0,_d1,_d2,_d3,_d4,_d5){ +with(_d0){ +var _d6=objj_msgSend(objj_msgSend(_d0,"alloc"),"initWithFrame:",CGRectMake(0,0,_d4,29)); +objj_msgSend(_d6,"setTheme:",_d5); +objj_msgSend(_d6,"setStringValue:",_d2); +objj_msgSend(_d6,"setPlaceholderString:",_d3); +objj_msgSend(_d6,"setBordered:",YES); +objj_msgSend(_d6,"setBezeled:",YES); +objj_msgSend(_d6,"setEditable:",YES); +objj_msgSend(_d6,"sizeToFit"); +return _d6; +} +}),new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:"),function(_d7,_d8,_d9,_da,_db){ +with(_d7){ +return objj_msgSend(_d7,"roundedTextFieldWithStringValue:placeholder:width:theme:",_d9,_da,_db,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:theme:"),function(_dc,_dd,_de,_df,_e0,_e1){ +with(_dc){ +var _e2=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(0,0,_e0,29)); +objj_msgSend(_e2,"setTheme:",_e1); +objj_msgSend(_e2,"setStringValue:",_de); +objj_msgSend(_e2,"setPlaceholderString:",_df); +objj_msgSend(_e2,"setBezelStyle:",CPTextFieldRoundedBezel); +objj_msgSend(_e2,"setBordered:",YES); +objj_msgSend(_e2,"setBezeled:",YES); +objj_msgSend(_e2,"setEditable:",YES); +objj_msgSend(_e2,"sizeToFit"); +return _e2; +} +}),new objj_method(sel_getUid("labelWithTitle:"),function(_e3,_e4,_e5){ +with(_e3){ +return objj_msgSend(_e3,"labelWithTitle:theme:",_e5,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("labelWithTitle:theme:"),function(_e6,_e7,_e8,_e9){ +with(_e6){ +var _ea=objj_msgSend(objj_msgSend(_e6,"alloc"),"init"); +objj_msgSend(_ea,"setStringValue:",_e8); +objj_msgSend(_ea,"sizeToFit"); +return _ea; +} +}),new objj_method(sel_getUid("themeClass"),function(_eb,_ec){ +with(_eb){ +return "textfield"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_ed,_ee){ +with(_ed){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[{top:(0),right:(0),bottom:(0),left:(0)},{top:(2),right:(2),bottom:(2),left:(2)},objj_msgSend(CPNull,"null")],["bezel-inset","content-inset","bezel-color"]); +} +})]); +var _c4=function(_ef){ +if(!_ef){ +return ""; +} +return Array(_ef.length+1).join(_c); +}; +var _f0="CPTextFieldIsEditableKey",_f1="CPTextFieldIsSelectableKey",_f2="CPTextFieldIsBorderedKey",_f3="CPTextFieldIsBezeledKey",_f4="CPTextFieldBezelStyleKey",_f5="CPTextFieldDrawsBackgroundKey",_f6="CPTextFieldLineBreakModeKey",_f7="CPTextFieldAlignmentKey",_f8="CPTextFieldBackgroundColorKey",_f9="CPTextFieldPlaceholderStringKey"; +var _d=objj_getClass("CPTextField"); +if(!_d){ +throw new SyntaxError("*** Could not find definition for class \"CPTextField\""); +} +var _e=_d.isa; +class_addMethods(_d,[new objj_method(sel_getUid("initWithCoder:"),function(_fa,_fb,_fc){ +with(_fa){ +_fa=objj_msgSendSuper({receiver:_fa,super_class:objj_getClass("CPTextField").super_class},"initWithCoder:",_fc); +if(_fa){ +objj_msgSend(_fa,"setEditable:",objj_msgSend(_fc,"decodeBoolForKey:",_f0)); +objj_msgSend(_fa,"setSelectable:",objj_msgSend(_fc,"decodeBoolForKey:",_f1)); +objj_msgSend(_fa,"setDrawsBackground:",objj_msgSend(_fc,"decodeBoolForKey:",_f5)); +objj_msgSend(_fa,"setTextFieldBackgroundColor:",objj_msgSend(_fc,"decodeObjectForKey:",_f8)); +objj_msgSend(_fa,"setLineBreakMode:",objj_msgSend(_fc,"decodeIntForKey:",_f6)); +objj_msgSend(_fa,"setAlignment:",objj_msgSend(_fc,"decodeIntForKey:",_f7)); +objj_msgSend(_fa,"setPlaceholderString:",objj_msgSend(_fc,"decodeObjectForKey:",_f9)); +} +return _fa; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_fd,_fe,_ff){ +with(_fd){ +objj_msgSendSuper({receiver:_fd,super_class:objj_getClass("CPTextField").super_class},"encodeWithCoder:",_ff); +objj_msgSend(_ff,"encodeBool:forKey:",_isEditable,_f0); +objj_msgSend(_ff,"encodeBool:forKey:",_isSelectable,_f1); +objj_msgSend(_ff,"encodeBool:forKey:",_drawsBackground,_f5); +objj_msgSend(_ff,"encodeObject:forKey:",_textFieldBackgroundColor,_f8); +objj_msgSend(_ff,"encodeInt:forKey:",objj_msgSend(_fd,"lineBreakMode"),_f6); +objj_msgSend(_ff,"encodeInt:forKey:",objj_msgSend(_fd,"alignment"),_f7); +objj_msgSend(_ff,"encodeObject:forKey:",_placeholderString,_f9); +} +})]); +p;9;CPTheme.jt;12925;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;30;Foundation/CPKeyedUnarchiver.jt;12818; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +var _1={},_2=nil,_3=nil; +var _4=objj_allocateClassPair(CPObject,"CPTheme"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_attributes")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithName:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPTheme").super_class},"init"); +if(_6){ +_name=_8; +_attributes=objj_msgSend(CPDictionary,"dictionary"); +_1[_name]=_6; +} +return _6; +} +}),new objj_method(sel_getUid("name"),function(_9,_a){ +with(_9){ +return _name; +} +}),new objj_method(sel_getUid("classNames"),function(_b,_c){ +with(_b){ +return objj_msgSend(_attributes,"allKeys"); +} +}),new objj_method(sel_getUid("attributesForClass:"),function(_d,_e,_f){ +with(_d){ +if(!_f){ +return nil; +} +var _10=nil; +if(objj_msgSend(_f,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +var _11=CPClassFromString(_f); +if(_11){ +_f=_11; +}else{ +_10=_f; +} +} +if(!_10){ +if(objj_msgSend(_f,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +if(objj_msgSend(_f,"respondsToSelector:",sel_getUid("themeClass"))){ +_10=objj_msgSend(_f,"themeClass"); +}else{ +return nil; +} +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"aClass must be a class object or a string."); +} +} +return objj_msgSend(_attributes,"objectForKey:",_10); +} +}),new objj_method(sel_getUid("attributeNamesForClass:"),function(_12,_13,_14){ +with(_12){ +var _15=objj_msgSend(_12,"attributesForClass:",_14); +if(_15){ +return objj_msgSend(_15,"allKeys"); +}else{ +return objj_msgSend(CPArray,"array"); +} +} +}),new objj_method(sel_getUid("attributeWithName:forClass:"),function(_16,_17,_18,_19){ +with(_16){ +var _1a=objj_msgSend(_16,"attributesForClass:",_19); +if(!_1a){ +return nil; +} +return objj_msgSend(_1a,"objectForKey:",_18); +} +}),new objj_method(sel_getUid("valueForAttributeWithName:forClass:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +return objj_msgSend(_1b,"valueForAttributeWithName:inState:forClass:",_1d,CPThemeStateNormal,_1e); +} +}),new objj_method(sel_getUid("valueForAttributeWithName:inState:forClass:"),function(_1f,_20,_21,_22,_23){ +with(_1f){ +var _24=objj_msgSend(_1f,"attributeWithName:forClass:",_21,_23); +if(!_24){ +return nil; +} +return objj_msgSend(_24,"valueForState:",_22); +} +}),new objj_method(sel_getUid("takeThemeFromObject:"),function(_25,_26,_27){ +with(_25){ +var _28=objj_msgSend(_27,"_themeAttributeDictionary"),_29=nil,_2a=objj_msgSend(_28,"keyEnumerator"),_2b=objj_msgSend(objj_msgSend(_27,"class"),"themeClass"); +while(_29=objj_msgSend(_2a,"nextObject")){ +objj_msgSend(_25,"_recordAttribute:forClass:",objj_msgSend(_28,"objectForKey:",_29),_2b); +} +} +}),new objj_method(sel_getUid("_recordAttribute:forClass:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +if(!objj_msgSend(_2e,"hasValues")){ +return; +} +var _30=objj_msgSend(_attributes,"objectForKey:",_2f); +if(!_30){ +_30=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_attributes,"setObject:forKey:",_30,_2f); +} +var _31=objj_msgSend(_2e,"name"),_32=objj_msgSend(_30,"objectForKey:",_31); +if(_32){ +objj_msgSend(_30,"setObject:forKey:",objj_msgSend(_32,"attributeMergedWithAttribute:",_2e),_31); +}else{ +objj_msgSend(_30,"setObject:forKey:",_2e,_31); +} +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("setDefaultTheme:"),function(_33,_34,_35){ +with(_33){ +_2=_35; +} +}),new objj_method(sel_getUid("defaultTheme"),function(_36,_37){ +with(_36){ +return _2; +} +}),new objj_method(sel_getUid("setDefaultHudTheme:"),function(_38,_39,_3a){ +with(_38){ +_3=_3a; +} +}),new objj_method(sel_getUid("defaultHudTheme"),function(_3b,_3c){ +with(_3b){ +if(!_3){ +_3=objj_msgSend(CPTheme,"themeNamed:",objj_msgSend(objj_msgSend(_3b,"defaultTheme"),"name")+"-HUD"); +} +return _3; +} +}),new objj_method(sel_getUid("themeNamed:"),function(_3d,_3e,_3f){ +with(_3d){ +return _1[_3f]; +} +})]); +var _40="CPThemeNameKey",_41="CPThemeAttributesKey"; +var _4=objj_getClass("CPTheme"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPTheme\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_42,_43,_44){ +with(_42){ +_42=objj_msgSendSuper({receiver:_42,super_class:objj_getClass("CPTheme").super_class},"init"); +if(_42){ +_name=objj_msgSend(_44,"decodeObjectForKey:",_40); +_attributes=objj_msgSend(_44,"decodeObjectForKey:",_41); +_1[_name]=_42; +} +return _42; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_47,"encodeObject:forKey:",_name,_40); +objj_msgSend(_47,"encodeObject:forKey:",_attributes,_41); +} +})]); +var _4=objj_allocateClassPair(CPKeyedUnarchiver,"_CPThemeKeyedUnarchiver"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_bundle")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initForReadingWithData:bundle:"),function(_48,_49,_4a,_4b){ +with(_48){ +_48=objj_msgSendSuper({receiver:_48,super_class:objj_getClass("_CPThemeKeyedUnarchiver").super_class},"initForReadingWithData:",_4a); +if(_48){ +_bundle=_4b; +} +return _48; +} +}),new objj_method(sel_getUid("bundle"),function(_4c,_4d){ +with(_4c){ +return _bundle; +} +}),new objj_method(sel_getUid("awakenCustomResources"),function(_4e,_4f){ +with(_4e){ +return YES; +} +})]); +var _50={},_51={},_52=0; +CPThemeState=function(_53){ +var _54=_50[_53]; +if(_54===undefined){ +if(_53.indexOf("+")===-1){ +_54=1<<_52++; +}else{ +var _54=0,_55=_53.split("+"),_56=_55.length; +while(_56--){ +var _57=_55[_56],_58=_50[_57]; +if(_58===undefined){ +_58=1<<_52++; +_50[_57]=_58; +_51[_58]=_57; +} +_54|=_58; +} +} +_50[_53]=_54; +_51[_54]=_53; +} +return _54; +}; +CPThemeStateName=function(_59){ +var _5a=_51[_59]; +if(_5a!==undefined){ +return _5a; +} +if(!(_59&(_59-1))){ +return ""; +} +var _5b=1,_5a=""; +for(;_5b<_59;_5b<<=1){ +if(_59&_5b){ +_5a+=(_5a.length===0?"":"+")+_51[_5b]; +} +} +_51[_59]=_5a; +return _5a; +}; +_51[0]="normal"; +CPThemeStateNormal=_50["normal"]=0; +CPThemeStateDisabled=CPThemeState("disabled"); +CPThemeStateHighlighted=CPThemeState("highlighted"); +CPThemeStateSelected=CPThemeState("selected"); +CPThemeStateTableDataView=CPThemeState("tableDataView"); +CPThemeStateSelectedDataView=CPThemeStateSelectedTableDataView=CPThemeState("selectedTableDataView"); +CPThemeStateBezeled=CPThemeState("bezeled"); +CPThemeStateBordered=CPThemeState("bordered"); +CPThemeStateEditable=CPThemeState("editable"); +CPThemeStateEditing=CPThemeState("editing"); +CPThemeStateVertical=CPThemeState("vertical"); +CPThemeStateDefault=CPThemeState("default"); +CPThemeStateCircular=CPThemeState("circular"); +var _4=objj_allocateClassPair(CPObject,"_CPThemeAttribute"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_defaultValue"),new objj_ivar("_values"),new objj_ivar("_cache"),new objj_ivar("_parentAttribute")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("values"),function(_5c,_5d){ +with(_5c){ +return _values; +} +}),new objj_method(sel_getUid("initWithName:defaultValue:"),function(_5e,_5f,_60,_61){ +with(_5e){ +_5e=objj_msgSendSuper({receiver:_5e,super_class:objj_getClass("_CPThemeAttribute").super_class},"init"); +if(_5e){ +_cache={}; +_name=_60; +_defaultValue=_61; +_values=objj_msgSend(CPDictionary,"dictionary"); +} +return _5e; +} +}),new objj_method(sel_getUid("name"),function(_62,_63){ +with(_62){ +return _name; +} +}),new objj_method(sel_getUid("defaultValue"),function(_64,_65){ +with(_64){ +return _defaultValue; +} +}),new objj_method(sel_getUid("hasValues"),function(_66,_67){ +with(_66){ +return objj_msgSend(_values,"count")>0; +} +}),new objj_method(sel_getUid("isTrivial"),function(_68,_69){ +with(_68){ +return (objj_msgSend(_values,"count")===1)&&(Number(objj_msgSend(_values,"allKeys")[0])===CPThemeStateNormal); +} +}),new objj_method(sel_getUid("setValue:"),function(_6a,_6b,_6c){ +with(_6a){ +_cache={}; +if(_6c===undefined||_6c===nil){ +_values=objj_msgSend(CPDictionary,"dictionary"); +}else{ +_values=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_6c,String(CPThemeStateNormal)); +} +} +}),new objj_method(sel_getUid("setValue:forState:"),function(_6d,_6e,_6f,_70){ +with(_6d){ +_cache={}; +if((_6f===undefined)||(_6f===nil)){ +objj_msgSend(_values,"removeObjectForKey:",String(_70)); +}else{ +objj_msgSend(_values,"setObject:forKey:",_6f,String(_70)); +} +} +}),new objj_method(sel_getUid("value"),function(_71,_72){ +with(_71){ +return objj_msgSend(_71,"valueForState:",CPThemeStateNormal); +} +}),new objj_method(sel_getUid("valueForState:"),function(_73,_74,_75){ +with(_73){ +var _76=_cache[_75]; +if(_76!==undefined){ +return _76; +} +_76=objj_msgSend(_values,"objectForKey:",String(_75)); +if((_76===undefined||_76===nil)&&_75!==CPThemeStateNormal){ +if(_75&(_75-1)){ +var _77=0,_78=objj_msgSend(_values,"allKeys"),_79=_78.length; +while(_79--){ +var _7a=Number(_78[_79]); +if((_7a&_75)===_7a){ +var _7b=_7c[_7a]; +if(_7b===undefined){ +_7b=_7d(_7a); +} +if(_7b>_77){ +_77=_7b; +_76=objj_msgSend(_values,"objectForKey:",String(_7a)); +} +} +} +} +if(_76===undefined||_76===nil){ +_76=objj_msgSend(_values,"objectForKey:",String(CPThemeStateNormal)); +} +} +if(_76===undefined||_76===nil){ +_76=objj_msgSend(_parentAttribute,"valueForState:",_75); +} +if(_76===undefined||_76===nil){ +_76=_defaultValue; +} +_cache[_75]=_76; +return _76; +} +}),new objj_method(sel_getUid("setParentAttribute:"),function(_7e,_7f,_80){ +with(_7e){ +if(_parentAttribute===_80){ +return; +} +_cache={}; +_parentAttribute=_80; +} +}),new objj_method(sel_getUid("attributeMergedWithAttribute:"),function(_81,_82,_83){ +with(_81){ +var _84=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_name,_defaultValue); +_84._values=objj_msgSend(_values,"copy"); +objj_msgSend(_84._values,"addEntriesFromDictionary:",_83._values); +return _84; +} +})]); +var _4=objj_getClass("_CPThemeAttribute"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"_CPThemeAttribute\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_85,_86,_87){ +with(_85){ +_85=objj_msgSendSuper({receiver:_85,super_class:objj_getClass("_CPThemeAttribute").super_class},"init"); +if(_85){ +_cache={}; +_name=objj_msgSend(_87,"decodeObjectForKey:","name"); +_values=objj_msgSend(CPDictionary,"dictionary"); +if(objj_msgSend(_87,"containsValueForKey:","value")){ +var _88=CPThemeStateNormal; +if(objj_msgSend(_87,"containsValueForKey:","state")){ +_88=CPThemeState(objj_msgSend(_87,"decodeObjectForKey:","state")); +} +objj_msgSend(_values,"setObject:forKey:",objj_msgSend(_87,"decodeObjectForKey:","value"),_88); +}else{ +var _89=objj_msgSend(_87,"decodeObjectForKey:","values"),_8a=objj_msgSend(_89,"allKeys"),_8b=_8a.length; +while(_8b--){ +var key=_8a[_8b]; +objj_msgSend(_values,"setObject:forKey:",objj_msgSend(_89,"objectForKey:",key),CPThemeState(key)); +} +} +} +return _85; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8c,_8d,_8e){ +with(_8c){ +objj_msgSend(_8e,"encodeObject:forKey:",_name,"name"); +var _8f=objj_msgSend(_values,"allKeys"),_90=_8f.length; +if(_90===1){ +var _91=_8f[0]; +if(Number(_91)!==CPThemeStateNormal){ +objj_msgSend(_8e,"encodeObject:forKey:",CPThemeStateName(Number(_91)),"state"); +} +objj_msgSend(_8e,"encodeObject:forKey:",objj_msgSend(_values,"objectForKey:",_91),"value"); +}else{ +var _92=objj_msgSend(CPDictionary,"dictionary"); +while(_90--){ +var key=_8f[_90]; +objj_msgSend(_92,"setObject:forKey:",objj_msgSend(_values,"objectForKey:",key),CPThemeStateName(Number(key))); +} +objj_msgSend(_8e,"encodeObject:forKey:",_92,"values"); +} +} +})]); +var _7c=[0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6]; +var _7d=function(_93){ +var _94=0,_95=_93; +while(_93){ +++_94; +_93&=(_93-1); +} +_7c[_95]=_94; +return _94; +}; +_7d.displayName="numberOfOnes"; +CPThemeAttributeEncode=function(_96,_97){ +var _98=_97._values,_99=objj_msgSend(_98,"count"),key="$a"+objj_msgSend(_97,"name"); +if(_99===1){ +var _9a=objj_msgSend(_98,"allKeys")[0]; +if(Number(_9a)===0){ +objj_msgSend(_96,"encodeObject:forKey:",objj_msgSend(_98,"objectForKey:",_9a),key); +return YES; +} +} +if(_99>=1){ +objj_msgSend(_96,"encodeObject:forKey:",_97,key); +return YES; +} +return NO; +}; +CPThemeAttributeDecode=function(_9b,_9c,_9d,_9e,_9f){ +var key="$a"+_9c; +if(!objj_msgSend(_9b,"containsValueForKey:",key)){ +var _a0=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_9c,_9d); +}else{ +var _a0=objj_msgSend(_9b,"decodeObjectForKey:",key); +if(!_a0.isa||!objj_msgSend(_a0,"isKindOfClass:",objj_msgSend(_CPThemeAttribute,"class"))){ +var _a1=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_9c,_9d); +objj_msgSend(_a1,"setValue:",_a0); +_a0=_a1; +} +} +if(_9e&&_9f){ +objj_msgSend(_a0,"setParentAttribute:",objj_msgSend(_9e,"attributeWithName:forClass:",_9c,_9f)); +} +return _a0; +}; +p;14;CPThemeBlend.jt;1853;@STATIC;1.0;I;21;Foundation/CPObject.jI;16;AppKit/CPTheme.jI;29;AppKit/_CPCibCustomResource.jI;30;AppKit/_CPCibKeyedUnarchiver.jt;1718; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPTheme.j",NO); +objj_executeFile("AppKit/_CPCibCustomResource.j",NO); +objj_executeFile("AppKit/_CPCibKeyedUnarchiver.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPThemeBlend"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_bundle"),new objj_ivar("_themes"),new objj_ivar("_loadDelegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithContentsOfURL:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPThemeBlend").super_class},"init"); +if(_3){ +_bundle=objj_msgSend(objj_msgSend(CPBundle,"alloc"),"initWithPath:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("themes"),function(_6,_7){ +with(_6){ +return _themes; +} +}),new objj_method(sel_getUid("themeNames"),function(_8,_9){ +with(_8){ +var _a=[]; +for(var i=0;i<_themes.length;++i){ +_a.push(_themes[i].substring(0,_themes[i].indexOf(".keyedtheme"))); +} +return _a; +} +}),new objj_method(sel_getUid("loadWithDelegate:"),function(_b,_c,_d){ +with(_b){ +_loadDelegate=_d; +objj_msgSend(_bundle,"loadWithDelegate:",_b); +} +}),new objj_method(sel_getUid("bundleDidFinishLoading:"),function(_e,_f,_10){ +with(_e){ +_themes=objj_msgSend(_bundle,"objectForInfoDictionaryKey:","CPKeyedThemes"); +var _11=_themes.length; +while(_11--){ +var _12=objj_msgSend(_10,"pathForResource:",_themes[_11]),_13=objj_msgSend(objj_msgSend(_CPThemeKeyedUnarchiver,"alloc"),"initForReadingWithData:bundle:",objj_msgSend(objj_msgSend(CPURL,"URLWithString:",_12),"staticResourceData"),_bundle); +objj_msgSend(_13,"decodeObjectForKey:","root"); +objj_msgSend(_13,"finishDecoding"); +} +objj_msgSend(_loadDelegate,"blendDidFinishLoading:",_e); +} +})]); +p;11;CPToolbar.jt;24452;@STATIC;1.0;I;21;Foundation/CPObject.ji;15;CPPopUpButton.ji;15;CPToolbarItem.jt;24366; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPPopUpButton.j",YES); +objj_executeFile("CPToolbarItem.j",YES); +CPToolbarDisplayModeDefault=0; +CPToolbarDisplayModeIconAndLabel=1; +CPToolbarDisplayModeIconOnly=2; +CPToolbarDisplayModeLabelOnly=3; +var _1=nil; +var _2=nil; +var _3=objj_allocateClassPair(CPObject,"CPToolbar"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_identifier"),new objj_ivar("_displayMode"),new objj_ivar("_showsBaselineSeparator"),new objj_ivar("_allowsUserCustomization"),new objj_ivar("_isVisible"),new objj_ivar("_delegate"),new objj_ivar("_itemIdentifiers"),new objj_ivar("_identifiedItems"),new objj_ivar("_defaultItems"),new objj_ivar("_allowedItems"),new objj_ivar("_selectableItems"),new objj_ivar("_items"),new objj_ivar("_itemsSortedByVisibilityPriority"),new objj_ivar("_toolbarView"),new objj_ivar("_window")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +return objj_msgSend(_5,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPToolbar").super_class},"init"); +if(_7){ +_items=[]; +_identifier=_9; +_isVisible=YES; +objj_msgSend(CPToolbar,"_addToolbar:forIdentifier:",_7,_identifier); +} +return _7; +} +}),new objj_method(sel_getUid("setDisplayMode:"),function(_a,_b,_c){ +with(_a){ +} +}),new objj_method(sel_getUid("identifier"),function(_d,_e){ +with(_d){ +return _identifier; +} +}),new objj_method(sel_getUid("delegate"),function(_f,_10){ +with(_f){ +return _delegate; +} +}),new objj_method(sel_getUid("isVisible"),function(_11,_12){ +with(_11){ +return _isVisible; +} +}),new objj_method(sel_getUid("setVisible:"),function(_13,_14,_15){ +with(_13){ +if(_isVisible===_15){ +return; +} +_isVisible=_15; +objj_msgSend(_window,"_noteToolbarChanged"); +} +}),new objj_method(sel_getUid("_window"),function(_16,_17){ +with(_16){ +return _window; +} +}),new objj_method(sel_getUid("_setWindow:"),function(_18,_19,_1a){ +with(_18){ +_window=_1a; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_1b,_1c,_1d){ +with(_1b){ +if(_delegate===_1d){ +return; +} +_delegate=_1d; +objj_msgSend(_1b,"_reloadToolbarItems"); +} +}),new objj_method(sel_getUid("_loadConfiguration"),function(_1e,_1f){ +with(_1e){ +} +}),new objj_method(sel_getUid("_toolbarView"),function(_20,_21){ +with(_20){ +if(!_toolbarView){ +_toolbarView=objj_msgSend(objj_msgSend(_CPToolbarView,"alloc"),"initWithFrame:",CPRectMake(0,0,1200,59)); +objj_msgSend(_toolbarView,"setToolbar:",_20); +objj_msgSend(_toolbarView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +return _toolbarView; +} +}),new objj_method(sel_getUid("_reloadToolbarItems"),function(_22,_23){ +with(_22){ +_itemIdentifiers=objj_msgSend(_defaultItems,"valueForKey:","itemIdentifier")||[]; +if(_delegate){ +var _24=objj_msgSend(objj_msgSend(_delegate,"toolbarDefaultItemIdentifiers:",_22),"mutableCopy"); +if(_24){ +_itemIdentifiers=objj_msgSend(_itemIdentifiers,"arrayByAddingObjectsFromArray:",_24); +} +} +var _25=0,_26=objj_msgSend(_itemIdentifiers,"count"); +_items=[]; +for(;_25<_26;++_25){ +var _27=_itemIdentifiers[_25],_28=objj_msgSend(CPToolbarItem,"_standardItemWithItemIdentifier:",_27); +if(!_28){ +_28=objj_msgSend(_identifiedItems,"objectForKey:",_27); +} +if(!_28&&_delegate){ +_28=objj_msgSend(_delegate,"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",_22,_27,YES); +} +_28=objj_msgSend(_28,"copy"); +if(_28===nil){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Toolbar delegate "+_delegate+" returned nil toolbar item for identifier \""+_27+"\""); +} +_28._toolbar=_22; +objj_msgSend(_items,"addObject:",_28); +} +_itemsSortedByVisibilityPriority=objj_msgSend(_items,"sortedArrayUsingFunction:context:",_29,NULL); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +}),new objj_method(sel_getUid("items"),function(_2a,_2b){ +with(_2a){ +return _items; +} +}),new objj_method(sel_getUid("visibleItems"),function(_2c,_2d){ +with(_2c){ +return objj_msgSend(_toolbarView,"visibleItems"); +} +}),new objj_method(sel_getUid("itemsSortedByVisibilityPriority"),function(_2e,_2f){ +with(_2e){ +return _itemsSortedByVisibilityPriority; +} +}),new objj_method(sel_getUid("validateVisibleItems"),function(_30,_31){ +with(_30){ +var _32=objj_msgSend(_30,"visibleItems"),_33=objj_msgSend(_32,"count"); +while(_33--){ +objj_msgSend(_32[_33],"validate"); +} +} +}),new objj_method(sel_getUid("_itemForItemIdentifier:willBeInsertedIntoToolbar:"),function(_34,_35,_36,_37){ +with(_34){ +var _38=objj_msgSend(_identifiedItems,"objectForKey:",_36); +if(!_38){ +_38=objj_msgSend(CPToolbarItem,"_standardItemWithItemIdentifier:",_36); +if(_delegate&&!_38){ +_38=objj_msgSend(objj_msgSend(_delegate,"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",_34,_36,_37),"copy"); +if(!_38){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Toolbar delegate "+_delegate+" returned nil toolbar item for identifier "+_36); +} +} +objj_msgSend(_identifiedItems,"setObject:forKey:",_38,_36); +} +return _38; +} +}),new objj_method(sel_getUid("_itemsWithIdentifiers:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=[]; +for(var i=0;i<_3b.length;i++){ +objj_msgSend(_3c,"addObject:",objj_msgSend(_39,"_itemForItemIdentifier:willBeInsertedIntoToolbar:",_3b[i],NO)); +} +return _3c; +} +}),new objj_method(sel_getUid("_defaultToolbarItems"),function(_3d,_3e){ +with(_3d){ +if(!_defaultItems&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("toolbarDefaultItemIdentifiers:"))){ +_defaultItems=[]; +var _3f=objj_msgSend(_delegate,"toolbarDefaultItemIdentifiers:",_3d),_40=0,_41=objj_msgSend(_3f,"count"); +for(;_40<_41;++_40){ +objj_msgSend(_defaultItems,"addObject:",objj_msgSend(_3d,"_itemForItemIdentifier:willBeInsertedIntoToolbar:",_3f[_40],NO)); +} +} +return _defaultItems; +} +}),new objj_method(sel_getUid("toolbarItemDidChange:"),function(_42,_43,_44){ +with(_42){ +if(objj_msgSend(_identifiedItems,"objectForKey:",objj_msgSend(_44,"itemIdentifier"))){ +objj_msgSend(_identifiedItems,"setObject:forKey:",_44,objj_msgSend(_44,"itemIdentifier")); +} +var _45=0,_46=objj_msgSend(_items,"count"); +for(;_45<=_46;++_45){ +var _47=_items[_45]; +if(objj_msgSend(_47,"itemIdentifier")===objj_msgSend(_44,"itemIdentifier")){ +_items[_45]=_44; +_itemsSortedByVisibilityPriority=objj_msgSend(_items,"sortedArrayUsingFunction:context:",_29,NULL); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +} +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_48,_49){ +with(_48){ +if(_48!=objj_msgSend(CPToolbar,"class")){ +return; +} +_1=objj_msgSend(CPDictionary,"dictionary"); +_2=objj_msgSend(CPDictionary,"dictionary"); +} +}),new objj_method(sel_getUid("_addToolbar:forIdentifier:"),function(_4a,_4b,_4c,_4d){ +with(_4a){ +var _4e=objj_msgSend(_1,"objectForKey:",_4d); +if(!_4e){ +_4e=[]; +objj_msgSend(_1,"setObject:forKey:",_4e,_4d); +} +objj_msgSend(_4e,"addObject:",_4c); +} +})]); +var _4f="CPToolbarIdentifierKey",_50="CPToolbarDisplayModeKey",_51="CPToolbarShowsBaselineSeparatorKey",_52="CPToolbarAllowsUserCustomizationKey",_53="CPToolbarIsVisibleKey",_54="CPToolbarDelegateKey",_55="CPToolbarIdentifiedItemsKey",_56="CPToolbarDefaultItemsKey",_57="CPToolbarAllowedItemsKey",_58="CPToolbarSelectableItemsKey"; +var _3=objj_getClass("CPToolbar"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbar\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_59,_5a,_5b){ +with(_59){ +_59=objj_msgSendSuper({receiver:_59,super_class:objj_getClass("CPToolbar").super_class},"init"); +if(_59){ +_identifier=objj_msgSend(_5b,"decodeObjectForKey:",_4f); +_displayMode=objj_msgSend(_5b,"decodeIntForKey:",_50); +_showsBaselineSeparator=objj_msgSend(_5b,"decodeBoolForKey:",_51); +_allowsUserCustomization=objj_msgSend(_5b,"decodeBoolForKey:",_52); +_isVisible=objj_msgSend(_5b,"decodeBoolForKey:",_53); +_identifiedItems=objj_msgSend(_5b,"decodeObjectForKey:",_55); +_defaultItems=objj_msgSend(_5b,"decodeObjectForKey:",_56); +_allowedItems=objj_msgSend(_5b,"decodeObjectForKey:",_57); +_selectableItems=objj_msgSend(_5b,"decodeObjectForKey:",_58); +objj_msgSend(objj_msgSend(_identifiedItems,"allValues"),"makeObjectsPerformSelector:withObject:",sel_getUid("_setToolbar:"),_59); +_items=[]; +objj_msgSend(CPToolbar,"_addToolbar:forIdentifier:",_59,_identifier); +objj_msgSend(_59,"setDelegate:",objj_msgSend(_5b,"decodeObjectForKey:",_54)); +objj_msgSend(_59,"_reloadToolbarItems"); +} +return _59; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_5c,_5d,_5e){ +with(_5c){ +objj_msgSend(_5e,"encodeObject:forKey:",_identifier,_4f); +objj_msgSend(_5e,"encodeInt:forKey:",_displayMode,_50); +objj_msgSend(_5e,"encodeBool:forKey:",_showsBaselineSeparator,_51); +objj_msgSend(_5e,"encodeBool:forKey:",_allowsUserCustomization,_52); +objj_msgSend(_5e,"encodeBool:forKey:",_isVisible,_53); +objj_msgSend(_5e,"encodeObject:forKey:",_identifiedItems,_55); +objj_msgSend(_5e,"encodeObject:forKey:",_defaultItems,_56); +objj_msgSend(_5e,"encodeObject:forKey:",_allowedItems,_57); +objj_msgSend(_5e,"encodeObject:forKey:",_selectableItems,_58); +objj_msgSend(_5e,"encodeConditionalObject:forKey:",_delegate,_54); +} +})]); +var _5f=nil,_60=nil,_61=nil; +var _62=5,_63=10,_64=20; +var _65=function(_66,_67,_68,_69){ +return {index:_66,view:_67,label:_68,minWidth:_69}; +}; +var _3=objj_allocateClassPair(CPView,"_CPToolbarView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_toolbar"),new objj_ivar("_flexibleWidthIndexes"),new objj_ivar("_visibleFlexibleWidthIndexes"),new objj_ivar("_itemInfos"),new objj_ivar("_viewsForToolbarItems"),new objj_ivar("_visibleItems"),new objj_ivar("_invisibleItems"),new objj_ivar("_additionalItemsButton"),new objj_ivar("_labelColor"),new objj_ivar("_labelShadowColor"),new objj_ivar("_minWidth"),new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("visibleItems"),function(_6a,_6b){ +with(_6a){ +return _visibleItems; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_6c,_6d,_6e){ +with(_6c){ +_6c=objj_msgSendSuper({receiver:_6c,super_class:objj_getClass("_CPToolbarView").super_class},"initWithFrame:",_6e); +if(_6c){ +_minWidth=0; +_labelColor=objj_msgSend(CPColor,"blackColor"); +_labelShadowColor=objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.75); +_additionalItemsButton=objj_msgSend(objj_msgSend(CPPopUpButton,"alloc"),"initWithFrame:pullsDown:",CGRectMake(0,0,10,15),YES); +objj_msgSend(_additionalItemsButton,"setBordered:",NO); +objj_msgSend(_additionalItemsButton,"setImagePosition:",CPImageOnly); +objj_msgSend(objj_msgSend(_additionalItemsButton,"menu"),"setShowsStateColumn:",NO); +objj_msgSend(objj_msgSend(_additionalItemsButton,"menu"),"setAutoenablesItems:",NO); +objj_msgSend(_additionalItemsButton,"setAlternateImage:",_61); +} +return _6c; +} +}),new objj_method(sel_getUid("setToolbar:"),function(_6f,_70,_71){ +with(_6f){ +_toolbar=_71; +} +}),new objj_method(sel_getUid("toolbar"),function(_72,_73){ +with(_72){ +return _toolbar; +} +}),new objj_method(sel_getUid("FIXME_setIsHUD:"),function(_74,_75,_76){ +with(_74){ +if(_FIXME_isHUD===_76){ +return; +} +_FIXME_isHUD=_76; +var _77=objj_msgSend(_toolbar,"items"),_78=objj_msgSend(_77,"count"); +while(_78--){ +objj_msgSend(objj_msgSend(_74,"viewForItem:",_77[_78]),"FIXME_setIsHUD:",_76); +} +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"tile"); +} +}),new objj_method(sel_getUid("viewForItem:"),function(_7c,_7d,_7e){ +with(_7c){ +return _viewsForToolbarItems[objj_msgSend(_7e,"UID")]||nil; +} +}),new objj_method(sel_getUid("tile"),function(_7f,_80){ +with(_7f){ +var _81=objj_msgSend(_toolbar,"items"),_82=CGRectGetWidth(objj_msgSend(_7f,"bounds")),_83=_minWidth,_84=[]; +_visibleItems=_81; +if(_82<_83){ +_82-=_64; +_visibleItems=objj_msgSend(_visibleItems,"copy"); +var _85=objj_msgSend(_toolbar,"itemsSortedByVisibilityPriority"),_86=_85.length; +while(_83>_82&&_86){ +var _87=_85[--_86],_88=objj_msgSend(_7f,"viewForItem:",_87); +_83-=objj_msgSend(_88,"minSize").width+_63; +objj_msgSend(_visibleItems,"removeObjectIdenticalTo:",_87); +objj_msgSend(_84,"addObject:",_87); +objj_msgSend(_88,"setHidden:",YES); +objj_msgSend(_88,"FIXME_setIsHUD:",_FIXME_isHUD); +} +} +var _86=objj_msgSend(_81,"count"),_89=0; +while(_86--){ +var _88=objj_msgSend(_7f,"viewForItem:",_81[_86]),_8a=objj_msgSend(_88,"minSize"); +if(_89<_8a.height){ +_89=_8a.height; +} +} +var _86=_visibleItems.length; +flexibleItemIndexes=objj_msgSend(CPIndexSet,"indexSet"); +while(_86--){ +var _87=_visibleItems[_86],_88=objj_msgSend(_7f,"viewForItem:",_87),_8a=objj_msgSend(_88,"minSize"); +if(_8a.width!==objj_msgSend(_88,"maxSize").width){ +objj_msgSend(flexibleItemIndexes,"addIndex:",_86); +}else{ +objj_msgSend(_88,"setFrameSize:",CGSizeMake(_8a.width,_89)); +} +objj_msgSend(_88,"setHidden:",NO); +} +var _8b=_82-_83,_8c=0; +while(_8b&&objj_msgSend(flexibleItemIndexes,"count")){ +_8c+=_8b/objj_msgSend(flexibleItemIndexes,"count"); +_8b=0; +var _8d=CPNotFound; +while((_8d=objj_msgSend(flexibleItemIndexes,"indexGreaterThanIndex:",_8d))!==CPNotFound){ +var _87=_visibleItems[_8d],_88=objj_msgSend(_7f,"viewForItem:",_87),_8e=objj_msgSend(_88,"minSize").width+_8c,_8f=MIN(_8e,objj_msgSend(_88,"maxSize").width); +if(_8f<_8e){ +objj_msgSend(flexibleItemIndexes,"removeIndex:",_8d); +_8b+=_8e-_8f; +} +objj_msgSend(_88,"setFrameSize:",CGSizeMake(_8f,_89)); +} +} +var _8d=0,_86=_visibleItems.length,x=_63; +for(;_8d<_86;++_8d){ +var _88=objj_msgSend(_7f,"viewForItem:",_visibleItems[_8d]),_90=CGRectGetWidth(objj_msgSend(_88,"frame")); +objj_msgSend(_88,"setFrame:",CGRectMake(x,0,_90,_89)); +x+=_90+_63; +} +var _91=NO; +if(objj_msgSend(_84,"count")){ +var _8d=0,_86=objj_msgSend(_81,"count"); +_invisibleItems=[]; +for(;_8d<_86;++_8d){ +var _87=_81[_8d]; +if(objj_msgSend(_84,"indexOfObjectIdenticalTo:",_87)!==CPNotFound){ +objj_msgSend(_invisibleItems,"addObject:",_87); +var _92=objj_msgSend(_87,"itemIdentifier"); +if(_92!==CPToolbarSpaceItemIdentifier&&_92!==CPToolbarFlexibleSpaceItemIdentifier&&_92!==CPToolbarSeparatorItemIdentifier){ +_91=YES; +} +} +} +} +if(_91){ +objj_msgSend(_additionalItemsButton,"setFrameOrigin:",CGPointMake(_82+5,(CGRectGetHeight(objj_msgSend(_7f,"bounds"))-CGRectGetHeight(objj_msgSend(_additionalItemsButton,"frame")))/2)); +objj_msgSend(_7f,"addSubview:",_additionalItemsButton); +objj_msgSend(_additionalItemsButton,"removeAllItems"); +objj_msgSend(_additionalItemsButton,"addItemWithTitle:","Additional Items"); +objj_msgSend(objj_msgSend(_additionalItemsButton,"itemArray")[0],"setImage:",_60); +var _8d=0,_86=objj_msgSend(_invisibleItems,"count"),_93=NO; +for(;_8d<_86;++_8d){ +var _87=_invisibleItems[_8d],_92=objj_msgSend(_87,"itemIdentifier"); +if(_92===CPToolbarSpaceItemIdentifier||_92===CPToolbarFlexibleSpaceItemIdentifier){ +continue; +} +if(_92===CPToolbarSeparatorItemIdentifier){ +if(_93){ +objj_msgSend(_additionalItemsButton,"addItem:",objj_msgSend(CPMenuItem,"separatorItem")); +} +continue; +} +_93=YES; +var _94=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",objj_msgSend(_87,"label"),objj_msgSend(_87,"action"),nil); +objj_msgSend(_94,"setImage:",objj_msgSend(_87,"image")); +objj_msgSend(_94,"setTarget:",objj_msgSend(_87,"target")); +objj_msgSend(_94,"setEnabled:",objj_msgSend(_87,"isEnabled")); +objj_msgSend(_additionalItemsButton,"addItem:",_94); +} +}else{ +objj_msgSend(_additionalItemsButton,"removeFromSuperview"); +} +} +}),new objj_method(sel_getUid("reloadToolbarItems"),function(_95,_96){ +with(_95){ +var _97=objj_msgSend(_95,"subviews"),_98=_97.length; +while(_98--){ +objj_msgSend(_97[_98],"removeFromSuperview"); +} +var _99=objj_msgSend(_toolbar,"items"),_9a=0; +_98=_99.length; +_minWidth=_63; +_viewsForToolbarItems={}; +for(;_9a<_98;++_9a){ +var _9b=_99[_9a],_9c=objj_msgSend(objj_msgSend(_CPToolbarItemView,"alloc"),"initWithToolbarItem:toolbar:",_9b,_95); +_viewsForToolbarItems[objj_msgSend(_9b,"UID")]=_9c; +objj_msgSend(_95,"addSubview:",_9c); +_minWidth+=objj_msgSend(_9c,"minSize").width+_63; +} +objj_msgSend(_95,"tile"); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_9d,_9e){ +with(_9d){ +if(_9d!==objj_msgSend(_CPToolbarView,"class")){ +return; +} +var _9f=objj_msgSend(CPBundle,"bundleForClass:",_9d); +_60=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_9f,"pathForResource:","_CPToolbarView/_CPToolbarViewExtraItemsImage.png"),CPSizeMake(10,15)); +_61=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_9f,"pathForResource:","_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png"),CGSizeMake(10,15)); +} +})]); +var _29=function(lhs,rhs){ +var _a0=objj_msgSend(lhs,"visibilityPriority"),_a1=objj_msgSend(rhs,"visibilityPriority"); +if(_a0==_a1){ +return CPOrderedSame; +} +if(_a0>_a1){ +return CPOrderedAscending; +} +return CPOrderedDescending; +}; +var _a2=5,_a3=2; +var _3=objj_allocateClassPair(CPControl,"_CPToolbarItemView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_labelSize"),new objj_ivar("_toolbarItem"),new objj_ivar("_toolbar"),new objj_ivar("_imageView"),new objj_ivar("_view"),new objj_ivar("_labelField"),new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("minSize"),function(_a4,_a5){ +with(_a4){ +return _minSize; +} +}),new objj_method(sel_getUid("maxSize"),function(_a6,_a7){ +with(_a6){ +return _maxSize; +} +}),new objj_method(sel_getUid("initWithToolbarItem:toolbar:"),function(_a8,_a9,_aa,_ab){ +with(_a8){ +_a8=objj_msgSendSuper({receiver:_a8,super_class:objj_getClass("_CPToolbarItemView").super_class},"init"); +if(_a8){ +_toolbarItem=_aa; +_labelField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_labelField,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_labelField,"setTextColor:",objj_msgSend(_a8,"FIXME_labelColor")); +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_a8,"FIXME_labelShadowColor")); +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_labelField,"setAutoresizingMask:",CPViewWidthSizable|CPViewMinXMargin); +objj_msgSend(_a8,"addSubview:",_labelField); +objj_msgSend(_a8,"updateFromItem"); +_toolbar=_ab; +var _ac=["label","image","alternateImage","minSize","maxSize","target","action","enabled"],_ad=0,_ae=objj_msgSend(_ac,"count"); +for(;_ad<_ae;++_ad){ +objj_msgSend(_toolbarItem,"addObserver:forKeyPath:options:context:",_a8,_ac[_ad],0,NULL); +} +} +return _a8; +} +}),new objj_method(sel_getUid("FIXME_setIsHUD:"),function(_af,_b0,_b1){ +with(_af){ +_FIXME_isHUD=_b1; +objj_msgSend(_labelField,"setTextColor:",objj_msgSend(_af,"FIXME_labelColor")); +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_af,"FIXME_labelShadowColor")); +} +}),new objj_method(sel_getUid("updateFromItem"),function(_b2,_b3){ +with(_b2){ +var _b4=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_b4===CPToolbarSpaceItemIdentifier||_b4===CPToolbarFlexibleSpaceItemIdentifier||_b4===CPToolbarSeparatorItemIdentifier){ +objj_msgSend(_view,"removeFromSuperview"); +objj_msgSend(_imageView,"removeFromSuperview"); +_minSize=objj_msgSend(_toolbarItem,"minSize"); +_maxSize=objj_msgSend(_toolbarItem,"maxSize"); +if(_b4===CPToolbarSeparatorItemIdentifier){ +_view=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,2,32)); +sizes={}; +sizes["CPToolbarItemSeparator"]=[CGSizeMake(2,26),CGSizeMake(2,1),CGSizeMake(2,26)]; +objj_msgSend(_view,"setBackgroundColor:",_CPControlThreePartImagePattern(YES,sizes,"CPToolbarItem","Separator")); +objj_msgSend(_b2,"addSubview:",_view); +} +return; +} +objj_msgSend(_b2,"setTarget:",objj_msgSend(_toolbarItem,"target")); +objj_msgSend(_b2,"setAction:",objj_msgSend(_toolbarItem,"action")); +var _b5=objj_msgSend(_toolbarItem,"view")||nil; +if(_b5!==_view){ +if(!_b5){ +objj_msgSend(_view,"removeFromSuperview"); +}else{ +objj_msgSend(_b2,"addSubview:",_b5); +objj_msgSend(_imageView,"removeFromSuperview"); +} +_view=_b5; +} +if(!_view){ +if(!_imageView){ +_imageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",objj_msgSend(_b2,"bounds")); +objj_msgSend(_imageView,"setImageScaling:",CPScaleNone); +objj_msgSend(_b2,"addSubview:",_imageView); +} +objj_msgSend(_imageView,"setImage:",objj_msgSend(_toolbarItem,"image")); +} +var _b6=objj_msgSend(_toolbarItem,"minSize"),_b7=objj_msgSend(_toolbarItem,"maxSize"); +objj_msgSend(_labelField,"setStringValue:",objj_msgSend(_toolbarItem,"label")); +objj_msgSend(_labelField,"sizeToFit"); +objj_msgSend(_b2,"setEnabled:",objj_msgSend(_toolbarItem,"isEnabled")); +_labelSize=objj_msgSend(_labelField,"frame").size; +_minSize=CGSizeMake(MAX(_labelSize.width,_b6.width),_labelSize.height+_b6.height+_a3+_a2); +_maxSize=CGSizeMake(MAX(_labelSize.width,_b6.width),100000000); +objj_msgSend(_toolbar,"tile"); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_b8,_b9){ +with(_b8){ +var _ba=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_ba===CPToolbarSpaceItemIdentifier||_ba===CPToolbarFlexibleSpaceItemIdentifier){ +return; +} +var _bb=objj_msgSend(_b8,"bounds"),_bc=(_bb.size.width); +if(_ba===CPToolbarSeparatorItemIdentifier){ +return objj_msgSend(_view,"setFrame:",CGRectMake(ROUND((_bc-2)/2),0,2,(_bb.size.height))); +} +var _bd=_view||_imageView,_be=objj_msgSend(_toolbarItem,"maxSize"),_bf=(_bb.size.height)-_labelSize.height-_a3-_a2,_c0=MIN(_be.width,_bc),_c1=MIN(_be.height,_bf); +objj_msgSend(_bd,"setFrame:",CGRectMake(ROUND((_bc-_c0)/2),_a2+ROUND((_bf-_c1)/2),_c0,_c1)); +objj_msgSend(_labelField,"setFrameOrigin:",CGPointMake(ROUND((_bc-_labelSize.width)/2),_a2+_bf+_a3)); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_c2,_c3,_c4){ +with(_c2){ +if(objj_msgSend(_toolbarItem,"view")){ +return objj_msgSend(objj_msgSend(_c2,"nextResponder"),"mouseDown:",_c4); +} +var _c5=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_c5===CPToolbarSpaceItemIdentifier||_c5===CPToolbarFlexibleSpaceItemIdentifier||_c5===CPToolbarSeparatorItemIdentifier){ +return objj_msgSend(objj_msgSend(_c2,"nextResponder"),"mouseDown:",_c4); +} +objj_msgSendSuper({receiver:_c2,super_class:objj_getClass("_CPToolbarItemView").super_class},"mouseDown:",_c4); +} +}),new objj_method(sel_getUid("setEnabled:"),function(_c6,_c7,_c8){ +with(_c6){ +objj_msgSendSuper({receiver:_c6,super_class:objj_getClass("_CPToolbarItemView").super_class},"setEnabled:",_c8); +if(_c8){ +objj_msgSend(_imageView,"setAlphaValue:",1); +objj_msgSend(_labelField,"setAlphaValue:",1); +}else{ +objj_msgSend(_imageView,"setAlphaValue:",0.5); +objj_msgSend(_labelField,"setAlphaValue:",0.5); +} +objj_msgSend(_toolbar,"tile"); +} +}),new objj_method(sel_getUid("FIXME_labelColor"),function(_c9,_ca){ +with(_c9){ +if(_FIXME_isHUD){ +return objj_msgSend(CPColor,"whiteColor"); +} +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("FIXME_labelShadowColor"),function(_cb,_cc){ +with(_cb){ +if(_FIXME_isHUD){ +return objj_msgSend(_cb,"isHighlighted")?objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.5):objj_msgSend(CPColor,"clearColor"); +} +return objj_msgSend(_cb,"isHighlighted")?objj_msgSend(CPColor,"colorWithWhite:alpha:",0,0.3):objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.75); +} +}),new objj_method(sel_getUid("setHighlighted:"),function(_cd,_ce,_cf){ +with(_cd){ +objj_msgSendSuper({receiver:_cd,super_class:objj_getClass("_CPToolbarItemView").super_class},"setHighlighted:",_cf); +if(_cf){ +var _d0=objj_msgSend(_toolbarItem,"alternateImage"); +if(_d0){ +objj_msgSend(_imageView,"setImage:",_d0); +} +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMakeZero()); +}else{ +var _d1=objj_msgSend(_toolbarItem,"image"); +if(_d1){ +objj_msgSend(_imageView,"setImage:",_d1); +} +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMake(0,1)); +} +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_cd,"FIXME_labelShadowColor")); +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +objj_msgSend(CPApp,"sendAction:to:from:",_d4,_d5,_toolbarItem); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_d6,_d7,_d8,_d9,_da,_db){ +with(_d6){ +if(_d8==="enabled"){ +objj_msgSend(_d6,"setEnabled:",objj_msgSend(_d9,"isEnabled")); +}else{ +if(_d8==="target"){ +objj_msgSend(_d6,"setTarget:",objj_msgSend(_d9,"target")); +}else{ +if(_d8==="action"){ +objj_msgSend(_d6,"setAction:",objj_msgSend(_d9,"action")); +}else{ +objj_msgSend(_d6,"updateFromItem"); +} +} +} +} +})]); +p;15;CPToolbarItem.jt;13726;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;16;AppKit/CPImage.jI;15;AppKit/CPView.ji;29;_CPToolbarFlexibleSpaceItem.ji;26;_CPToolbarShowColorsItem.ji;25;_CPToolbarSeparatorItem.ji;21;_CPToolbarSpaceItem.jt;13492; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPImage.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPToolbarItemVisibilityPriorityStandard=0; +CPToolbarItemVisibilityPriorityLow=-1000; +CPToolbarItemVisibilityPriorityHigh=1000; +CPToolbarItemVisibilityPriorityUser=2000; +CPToolbarSeparatorItemIdentifier="CPToolbarSeparatorItem"; +CPToolbarSpaceItemIdentifier="CPToolbarSpaceItem"; +CPToolbarFlexibleSpaceItemIdentifier="CPToolbarFlexibleSpaceItem"; +CPToolbarShowColorsItemIdentifier="CPToolbarShowColorsItem"; +CPToolbarShowFontsItemIdentifier="CPToolbarShowFontsItem"; +CPToolbarCustomizeToolbarItemIdentifier="CPToolbarCustomizeToolbarItem"; +CPToolbarPrintItemIdentifier="CPToolbarPrintItem"; +var _1=objj_allocateClassPair(CPObject,"CPToolbarItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_itemIdentifier"),new objj_ivar("_toolbar"),new objj_ivar("_label"),new objj_ivar("_paletteLabel"),new objj_ivar("_toolTip"),new objj_ivar("_tag"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_isEnabled"),new objj_ivar("_image"),new objj_ivar("_alternateImage"),new objj_ivar("_view"),new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_visibilityPriority"),new objj_ivar("_autovalidates")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithItemIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithItemIdentifier:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPToolbarItem").super_class},"init"); +if(_5){ +_itemIdentifier=_7; +_tag=0; +_isEnabled=YES; +_minSize=CGSizeMakeZero(); +_maxSize=CGSizeMakeZero(); +_visibilityPriority=CPToolbarItemVisibilityPriorityStandard; +_autovalidates=YES; +} +return _5; +} +}),new objj_method(sel_getUid("itemIdentifier"),function(_8,_9){ +with(_8){ +return _itemIdentifier; +} +}),new objj_method(sel_getUid("toolbar"),function(_a,_b){ +with(_a){ +return _toolbar; +} +}),new objj_method(sel_getUid("_setToolbar:"),function(_c,_d,_e){ +with(_c){ +_toolbar=_e; +} +}),new objj_method(sel_getUid("label"),function(_f,_10){ +with(_f){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_11,_12,_13){ +with(_11){ +_label=_13; +} +}),new objj_method(sel_getUid("paletteLabel"),function(_14,_15){ +with(_14){ +return _paletteLabel; +} +}),new objj_method(sel_getUid("setPaletteLabel:"),function(_16,_17,_18){ +with(_16){ +_paletteLabel=_18; +} +}),new objj_method(sel_getUid("toolTip"),function(_19,_1a){ +with(_19){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("toolTip"))){ +return objj_msgSend(_view,"toolTip"); +} +return _toolTip; +} +}),new objj_method(sel_getUid("setToolTip:"),function(_1b,_1c,_1d){ +with(_1b){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setToolTip:"))){ +objj_msgSend(_view,"setToolTip:",_1d); +} +_toolTip=_1d; +} +}),new objj_method(sel_getUid("tag"),function(_1e,_1f){ +with(_1e){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("tag"))){ +return objj_msgSend(_view,"tag"); +} +return _tag; +} +}),new objj_method(sel_getUid("setTag:"),function(_20,_21,_22){ +with(_20){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTag:"))){ +objj_msgSend(_view,"setTag:",_22); +} +_tag=_22; +} +}),new objj_method(sel_getUid("target"),function(_23,_24){ +with(_23){ +if(_view){ +return objj_msgSend(_view,"respondsToSelector:",sel_getUid("target"))?objj_msgSend(_view,"target"):nil; +} +return _target; +} +}),new objj_method(sel_getUid("setTarget:"),function(_25,_26,_27){ +with(_25){ +if(!_view){ +_target=_27; +}else{ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTarget:"))){ +objj_msgSend(_view,"setTarget:",_27); +} +} +} +}),new objj_method(sel_getUid("action"),function(_28,_29){ +with(_28){ +if(_view){ +return objj_msgSend(_view,"respondsToSelector:",sel_getUid("action"))?objj_msgSend(_view,"action"):nil; +} +return _action; +} +}),new objj_method(sel_getUid("setAction:"),function(_2a,_2b,_2c){ +with(_2a){ +if(!_view){ +_action=_2c; +}else{ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_view,"setAction:",_2c); +} +} +} +}),new objj_method(sel_getUid("isEnabled"),function(_2d,_2e){ +with(_2d){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("isEnabled"))){ +return objj_msgSend(_view,"isEnabled"); +} +return _isEnabled; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_2f,_30,_31){ +with(_2f){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_view,"setEnabled:",_31); +} +_isEnabled=_31; +} +}),new objj_method(sel_getUid("image"),function(_32,_33){ +with(_32){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("image"))){ +return objj_msgSend(_view,"image"); +} +return _image; +} +}),new objj_method(sel_getUid("setImage:"),function(_34,_35,_36){ +with(_34){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setImage:"))){ +objj_msgSend(_view,"setImage:",_36); +} +_image=_36; +if(!_image){ +return; +} +if(_minSize.width===0&&_minSize.height===0&&_maxSize.width===0&&_maxSize.height===0){ +var _37=objj_msgSend(_image,"size"); +if(_37.width>0||_37.height>0){ +objj_msgSend(_34,"setMinSize:",_37); +objj_msgSend(_34,"setMaxSize:",_37); +} +} +} +}),new objj_method(sel_getUid("setAlternateImage:"),function(_38,_39,_3a){ +with(_38){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setAlternateImage:"))){ +objj_msgSend(_view,"setAlternateImage:",_3a); +} +_alternateImage=_3a; +} +}),new objj_method(sel_getUid("alternateImage"),function(_3b,_3c){ +with(_3b){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("alternateIamge"))){ +return objj_msgSend(_view,"alternateImage"); +} +return _alternateImage; +} +}),new objj_method(sel_getUid("view"),function(_3d,_3e){ +with(_3d){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_3f,_40,_41){ +with(_3f){ +if(_view==_41){ +return; +} +_view=_41; +if(_view){ +if(_tag!==0&&objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTag:"))){ +objj_msgSend(_view,"setTag:",_tag); +} +_target=nil; +_action=nil; +} +} +}),new objj_method(sel_getUid("minSize"),function(_42,_43){ +with(_42){ +return _minSize; +} +}),new objj_method(sel_getUid("setMinSize:"),function(_44,_45,_46){ +with(_44){ +if(!_46.height||!_46.width){ +return; +} +_minSize=CGSizeMakeCopy(_46); +_maxSize=CGSizeMake(MAX(_minSize.width,_maxSize.width),MAX(_minSize.height,_maxSize.height)); +} +}),new objj_method(sel_getUid("maxSize"),function(_47,_48){ +with(_47){ +return _maxSize; +} +}),new objj_method(sel_getUid("setMaxSize:"),function(_49,_4a,_4b){ +with(_49){ +if(!_4b.height||!_4b.width){ +return; +} +_maxSize=CGSizeMakeCopy(_4b); +_minSize=CGSizeMake(MIN(_minSize.width,_maxSize.width),MIN(_minSize.height,_maxSize.height)); +} +}),new objj_method(sel_getUid("visibilityPriority"),function(_4c,_4d){ +with(_4c){ +return _visibilityPriority; +} +}),new objj_method(sel_getUid("setVisibilityPriority:"),function(_4e,_4f,_50){ +with(_4e){ +_visibilityPriority=_50; +} +}),new objj_method(sel_getUid("validate"),function(_51,_52){ +with(_51){ +var _53=objj_msgSend(_51,"action"),_54=objj_msgSend(_51,"target"); +if(_view){ +if(objj_msgSend(_54,"respondsToSelector:",sel_getUid("validateToolbarItem:"))){ +objj_msgSend(_51,"setEnabled:",objj_msgSend(_54,"validateToolbarItem:",_51)); +} +return; +} +if(!_53){ +return objj_msgSend(_51,"setEnabled:",NO); +} +if(_54&&!objj_msgSend(_54,"respondsToSelector:",_53)){ +return objj_msgSend(_51,"setEnabled:",NO); +} +_54=objj_msgSend(CPApp,"targetForAction:to:from:",_53,_54,_51); +if(!_54){ +return objj_msgSend(_51,"setEnabled:",NO); +} +if(objj_msgSend(_54,"respondsToSelector:",sel_getUid("validateToolbarItem:"))){ +objj_msgSend(_51,"setEnabled:",objj_msgSend(_54,"validateToolbarItem:",_51)); +}else{ +objj_msgSend(_51,"setEnabled:",YES); +} +} +}),new objj_method(sel_getUid("autovalidates"),function(_55,_56){ +with(_55){ +return _autovalidates; +} +}),new objj_method(sel_getUid("setAutovalidates:"),function(_57,_58,_59){ +with(_57){ +_autovalidates=!!_59; +} +})]); +var _5a="CPToolbarItemItemIdentifierKey",_5b="CPToolbarItemLabelKey",_5c="CPToolbarItemPaletteLabelKey",_5d="CPToolbarItemToolTipKey",_5e="CPToolbarItemTagKey",_5f="CPToolbarItemTargetKey",_60="CPToolbarItemActionKey",_61="CPToolbarItemEnabledKey",_62="CPToolbarItemImageKey",_63="CPToolbarItemAlternateImageKey",_64="CPToolbarItemViewKey",_65="CPToolbarItemMinSizeKey",_66="CPToolbarItemMaxSizeKey",_67="CPToolbarItemVisibilityPriorityKey",_68="CPToolbarItemAutovalidatesKey"; +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_69,_6a,_6b){ +with(_69){ +_69=objj_msgSendSuper({receiver:_69,super_class:objj_getClass("CPToolbarItem").super_class},"init"); +if(_69){ +_itemIdentifier=objj_msgSend(_6b,"decodeObjectForKey:",_5a); +_minSize=objj_msgSend(_6b,"decodeSizeForKey:",_65); +_maxSize=objj_msgSend(_6b,"decodeSizeForKey:",_66); +objj_msgSend(_69,"setLabel:",objj_msgSend(_6b,"decodeObjectForKey:",_5b)); +objj_msgSend(_69,"setPaletteLabel:",objj_msgSend(_6b,"decodeObjectForKey:",_5c)); +objj_msgSend(_69,"setToolTip:",objj_msgSend(_6b,"decodeObjectForKey:",_5d)); +objj_msgSend(_69,"setTag:",objj_msgSend(_6b,"decodeObjectForKey:",_5e)); +objj_msgSend(_69,"setTarget:",objj_msgSend(_6b,"decodeObjectForKey:",_5f)); +objj_msgSend(_69,"setAction:",CPSelectorFromString(objj_msgSend(_6b,"decodeObjectForKey:",_60))); +objj_msgSend(_69,"setEnabled:",objj_msgSend(_6b,"decodeBoolForKey:",_61)); +objj_msgSend(_69,"setImage:",objj_msgSend(_6b,"decodeObjectForKey:",_62)); +objj_msgSend(_69,"setAlternateImage:",objj_msgSend(_6b,"decodeObjectForKey:",_63)); +objj_msgSend(_69,"setView:",objj_msgSend(_6b,"decodeObjectForKey:",_64)); +objj_msgSend(_69,"setVisibilityPriority:",objj_msgSend(_6b,"decodeIntForKey:",_67)); +objj_msgSend(_69,"setAutovalidates:",objj_msgSend(_6b,"decodeBoolForKey:",_68)); +} +return _69; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(_6e,"encodeObject:forKey:",_itemIdentifier,_5a); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"label"),_5b); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"paletteLabel"),_5c); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"toolTip"),_5d); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"tag"),_5e); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"target"),_5f); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"action"),_60); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"isEnabled"),_61); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"image"),_62); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"alternateImage"),_63); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"view"),_64); +objj_msgSend(_6e,"encodeSize:forKey:",objj_msgSend(_6c,"minSize"),_65); +objj_msgSend(_6e,"encodeSize:forKey:",objj_msgSend(_6c,"maxSize"),_66); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"visibilityPriority"),_67); +objj_msgSend(_6e,"encodeBool:forKey:",objj_msgSend(_6c,"autovalidates"),_68); +} +})]); +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_6f,_70){ +with(_6f){ +var _71=objj_msgSend(objj_msgSend(objj_msgSend(_6f,"class"),"alloc"),"initWithItemIdentifier:",_itemIdentifier); +if(_view){ +objj_msgSend(_71,"setView:",objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_view))); +} +objj_msgSend(_71,"_setToolbar:",_toolbar); +objj_msgSend(_71,"setLabel:",_label); +objj_msgSend(_71,"setPaletteLabel:",_paletteLabel); +objj_msgSend(_71,"setToolTip:",objj_msgSend(_6f,"toolTip")); +objj_msgSend(_71,"setTag:",objj_msgSend(_6f,"tag")); +objj_msgSend(_71,"setTarget:",objj_msgSend(_6f,"target")); +objj_msgSend(_71,"setAction:",objj_msgSend(_6f,"action")); +objj_msgSend(_71,"setEnabled:",objj_msgSend(_6f,"isEnabled")); +objj_msgSend(_71,"setImage:",objj_msgSend(_6f,"image")); +objj_msgSend(_71,"setAlternateImage:",objj_msgSend(_6f,"alternateImage")); +objj_msgSend(_71,"setMinSize:",_minSize); +objj_msgSend(_71,"setMaxSize:",_maxSize); +objj_msgSend(_71,"setVisibilityPriority:",objj_msgSend(_6f,"visibilityPriority")); +objj_msgSend(_71,"setAutovalidates:",objj_msgSend(_6f,"autovalidates")); +return _71; +} +})]); +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_2,[new objj_method(sel_getUid("_standardItemWithItemIdentifier:"),function(_72,_73,_74){ +with(_72){ +switch(_74){ +case CPToolbarSeparatorItemIdentifier: +return objj_msgSend(_CPToolbarSeparatorItem,"new"); +case CPToolbarSpaceItemIdentifier: +return objj_msgSend(_CPToolbarSpaceItem,"new"); +case CPToolbarFlexibleSpaceItemIdentifier: +return objj_msgSend(_CPToolbarFlexibleSpaceItem,"new"); +case CPToolbarShowColorsItemIdentifier: +return objj_msgSend(_CPToolbarShowColorsItem,"new"); +case CPToolbarShowFontsItemIdentifier: +return nil; +case CPToolbarCustomizeToolbarItemIdentifier: +return nil; +case CPToolbarPrintItemIdentifier: +return nil; +} +return nil; +} +})]); +objj_executeFile("_CPToolbarFlexibleSpaceItem.j",YES); +objj_executeFile("_CPToolbarShowColorsItem.j",YES); +objj_executeFile("_CPToolbarSeparatorItem.j",YES); +objj_executeFile("_CPToolbarSpaceItem.j",YES); +p;12;CPTreeNode.jt;3517;@STATIC;1.0;I;21;Foundation/CPObject.jt;3472; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPTreeNode"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_representedObject"),new objj_ivar("_parentNode"),new objj_ivar("_childNodes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("representedObject"),function(_3,_4){ +with(_3){ +return _representedObject; +} +}),new objj_method(sel_getUid("parentNode"),function(_5,_6){ +with(_5){ +return _parentNode; +} +}),new objj_method(sel_getUid("initWithRepresentedObject:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPTreeNode").super_class},"init"); +if(_7){ +_representedObject=_9; +_childNodes=[]; +} +return _7; +} +}),new objj_method(sel_getUid("isLeaf"),function(_a,_b){ +with(_a){ +return objj_msgSend(_childNodes,"count")<=0; +} +}),new objj_method(sel_getUid("childNodes"),function(_c,_d){ +with(_c){ +return objj_msgSend(_childNodes,"copy"); +} +}),new objj_method(sel_getUid("mutableChildNodes"),function(_e,_f){ +with(_e){ +return objj_msgSend(_e,"mutableArrayValueForKey:","childNodes"); +} +}),new objj_method(sel_getUid("insertObject:inChildNodesAtIndex:"),function(_10,_11,_12,_13){ +with(_10){ +objj_msgSend(objj_msgSend(_12._parentNode,"mutableChildNodes"),"removeObjectIdenticalTo:",_12); +_12._parentNode=_10; +objj_msgSend(_childNodes,"insertObject:atIndex:",_12,_13); +} +}),new objj_method(sel_getUid("removeObjectFromChildNodesAtIndex:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_childNodes,"objectAtIndex:",_16)._parentNode=nil; +objj_msgSend(_childNodes,"removeObjectAtIndex:",_16); +} +}),new objj_method(sel_getUid("replaceObjectFromChildNodesAtIndex:withObject:"),function(_17,_18,_19,_1a){ +with(_17){ +var _1b=objj_msgSend(_childNodes,"objectAtIndex:",_19); +_1b._parentNode=nil; +_1a._parentNode=_17; +objj_msgSend(_childNodes,"replaceObjectAtIndex:withObject:",_19,_1a); +} +}),new objj_method(sel_getUid("objectInChildNodesAtIndex:"),function(_1c,_1d,_1e){ +with(_1c){ +return _childNodes[_1e]; +} +}),new objj_method(sel_getUid("sortWithSortDescriptors:recursively:"),function(_1f,_20,_21,_22){ +with(_1f){ +objj_msgSend(_childNodes,"sortUsingDescriptors:",_21); +if(!_22){ +return; +} +var _23=objj_msgSend(_childNodes,"count"); +while(_23--){ +objj_msgSend(_childNodes[_23],"sortWithSortDescriptors:recursively:",_21,YES); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("treeNodeWithRepresentedObject:"),function(_24,_25,_26){ +with(_24){ +return objj_msgSend(objj_msgSend(_24,"alloc"),"initWithRepresentedObject:",_26); +} +})]); +var _27="CPTreeNodeRepresentedObjectKey",_28="CPTreeNodeParentNodeKey",_29="CPTreeNodeChildNodesKey"; +var _1=objj_getClass("CPTreeNode"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTreeNode\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_2a,_2b,_2c){ +with(_2a){ +_2a=objj_msgSendSuper({receiver:_2a,super_class:objj_getClass("CPTreeNode").super_class},"init"); +if(_2a){ +_representedObject=objj_msgSend(_2c,"decodeObjectForKey:",_27); +_parentNode=objj_msgSend(_2c,"decodeObjectForKey:",_28); +_childNodes=objj_msgSend(_2c,"decodeObjectForKey:",_29); +} +return _2a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2d,_2e,_2f){ +with(_2d){ +objj_msgSend(_2f,"encodeObject:forKey:",_representedObject,_27); +objj_msgSend(_2f,"encodeConditionalObject:forKey:",_parentNode,_28); +objj_msgSend(_2f,"encodeObject:forKey:",_childNodes,_29); +} +})]); +p;8;CPView.jt;61550;@STATIC;1.0;I;20;Foundation/CPArray.jI;26;Foundation/CPObjJRuntime.ji;19;CGAffineTransform.ji;12;CGGeometry.ji;9;CPColor.ji;12;CPGeometry.ji;19;CPGraphicsContext.ji;13;CPResponder.ji;9;CPTheme.ji;18;_CPDisplayServer.jt;61325; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObjJRuntime.j",NO); +objj_executeFile("CGAffineTransform.j",YES); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPGraphicsContext.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPTheme.j",YES); +objj_executeFile("_CPDisplayServer.j",YES); +CPViewNotSizable=0; +CPViewMinXMargin=1; +CPViewWidthSizable=2; +CPViewMaxXMargin=4; +CPViewMinYMargin=8; +CPViewHeightSizable=16; +CPViewMaxYMargin=32; +CPViewBoundsDidChangeNotification="CPViewBoundsDidChangeNotification"; +CPViewFrameDidChangeNotification="CPViewFrameDidChangeNotification"; +var _1=nil,_2=nil; +var _3=nil,_4=0,_5=1,_6=2,_7=3,_8=4; +var _9={},_a=1<<0,_b=1<<1; +var _c=objj_allocateClassPair(CPResponder,"CPView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_window"),new objj_ivar("_superview"),new objj_ivar("_subviews"),new objj_ivar("_graphicsContext"),new objj_ivar("_tag"),new objj_ivar("_frame"),new objj_ivar("_bounds"),new objj_ivar("_boundsTransform"),new objj_ivar("_inverseBoundsTransform"),new objj_ivar("_registeredDraggedTypes"),new objj_ivar("_registeredDraggedTypesArray"),new objj_ivar("_isHidden"),new objj_ivar("_hitTests"),new objj_ivar("_clipsToBounds"),new objj_ivar("_postsFrameChangedNotifications"),new objj_ivar("_postsBoundsChangedNotifications"),new objj_ivar("_inhibitFrameAndBoundsChangedNotifications"),new objj_ivar("_DOMElement"),new objj_ivar("_DOMContentsElement"),new objj_ivar("_DOMImageParts"),new objj_ivar("_DOMImageSizes"),new objj_ivar("_backgroundType"),new objj_ivar("_dirtyRect"),new objj_ivar("_opacity"),new objj_ivar("_backgroundColor"),new objj_ivar("_autoresizesSubviews"),new objj_ivar("_autoresizingMask"),new objj_ivar("_layer"),new objj_ivar("_wantsLayer"),new objj_ivar("_isInFullScreenMode"),new objj_ivar("_fullScreenModeState"),new objj_ivar("_needsLayout"),new objj_ivar("_ephemeralSubviews"),new objj_ivar("_theme"),new objj_ivar("_themeAttributes"),new objj_ivar("_themeState"),new objj_ivar("_ephemeralSubviewsForNames"),new objj_ivar("_ephereralSubviews"),new objj_ivar("_nextKeyView"),new objj_ivar("_previousKeyView"),new objj_ivar("_viewClassFlags")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("setupViewFlags"),function(_e,_f){ +with(_e){ +var _10=objj_msgSend(_e,"class"),_11=objj_msgSend(_10,"UID"); +if(_9[_11]===undefined){ +var _12=0; +if(objj_msgSend(_10,"instanceMethodForSelector:",sel_getUid("drawRect:"))!==objj_msgSend(CPView,"instanceMethodForSelector:",sel_getUid("drawRect:"))){ +_12|=_a; +} +if(objj_msgSend(_10,"instanceMethodForSelector:",sel_getUid("layoutSubviews"))!==objj_msgSend(CPView,"instanceMethodForSelector:",sel_getUid("layoutSubviews"))){ +_12|=_b; +} +_9[_11]=_12; +} +_viewClassFlags=_9[_11]; +} +}),new objj_method(sel_getUid("init"),function(_13,_14){ +with(_13){ +return objj_msgSend(_13,"initWithFrame:",CGRectMakeZero()); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_15,_16,_17){ +with(_15){ +_15=objj_msgSendSuper({receiver:_15,super_class:objj_getClass("CPView").super_class},"init"); +if(_15){ +var _18=(_17.size.width),_19=(_17.size.height); +_subviews=[]; +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_tag=-1; +_frame={origin:{x:_17.origin.x,y:_17.origin.y},size:{width:_17.size.width,height:_17.size.height}}; +_bounds={origin:{x:0,y:0},size:{width:_18,height:_19}}; +_autoresizingMask=CPViewNotSizable; +_autoresizesSubviews=YES; +_clipsToBounds=YES; +_opacity=1; +_isHidden=NO; +_hitTests=YES; +_DOMElement=_3.cloneNode(false); +if(NULL){ +var _1a={x:CGPointMake((_17.origin.x),(_17.origin.y)).x*NULL.a+CGPointMake((_17.origin.x),(_17.origin.y)).y*NULL.c+NULL.tx,y:CGPointMake((_17.origin.x),(_17.origin.y)).x*NULL.b+CGPointMake((_17.origin.x),(_17.origin.y)).y*NULL.d+NULL.ty}; +}else{ +var _1a={x:(_17.origin.x),y:(_17.origin.y)}; +} +_DOMElement.style.left=ROUND(_1a.x)+"px"; +_DOMElement.style.top=ROUND(_1a.y)+"px"; +_DOMElement.style.width=MAX(0,ROUND(_18))+"px"; +_DOMElement.style.height=MAX(0,ROUND(_19))+"px"; +_DOMImageParts=[]; +_DOMImageSizes=[]; +_theme=objj_msgSend(CPTheme,"defaultTheme"); +_themeState=CPThemeStateNormal; +objj_msgSend(_15,"setupViewFlags"); +objj_msgSend(_15,"_loadThemeAttributes"); +} +return _15; +} +}),new objj_method(sel_getUid("superview"),function(_1b,_1c){ +with(_1b){ +return _superview; +} +}),new objj_method(sel_getUid("subviews"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(_subviews,"copy"); +} +}),new objj_method(sel_getUid("window"),function(_1f,_20){ +with(_1f){ +return _window; +} +}),new objj_method(sel_getUid("addSubview:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(_21,"_insertSubview:atIndex:",_23,CPNotFound); +} +}),new objj_method(sel_getUid("addSubview:positioned:relativeTo:"),function(_24,_25,_26,_27,_28){ +with(_24){ +var _29=_28?objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_28):CPNotFound; +if(_29===CPNotFound){ +_29=(_27===CPWindowAbove)?objj_msgSend(_subviews,"count"):0; +}else{ +if(_27===CPWindowAbove){ +++_29; +} +} +objj_msgSend(_24,"_insertSubview:atIndex:",_26,_29); +} +}),new objj_method(sel_getUid("_insertSubview:atIndex:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +var _2e=_subviews.length; +objj_msgSend(objj_msgSend(_2a,"window"),"_dirtyKeyViewLoop"); +if(_2c._superview==_2a){ +var _2f=objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_2c); +if(_2f===_2d||_2f===_2e-1&&_2d===_2e){ +return; +} +objj_msgSend(_subviews,"removeObjectAtIndex:",_2f); +_DOMElement.removeChild(_2c._DOMElement); +if(_2d>_2f){ +--_2d; +} +--_2e; +}else{ +objj_msgSend(_2c,"removeFromSuperview"); +objj_msgSend(_2c,"_setWindow:",_window); +objj_msgSend(_2c,"viewWillMoveToSuperview:",_2a); +_2c._superview=_2a; +} +if(_2d===CPNotFound||_2d>=_2e){ +_subviews.push(_2c); +_DOMElement.appendChild(_2c._DOMElement); +}else{ +_subviews.splice(_2d,0,_2c); +_DOMElement.insertBefore(_2c._DOMElement,_subviews[_2d+1]._DOMElement); +} +objj_msgSend(_2c,"setNextResponder:",_2a); +objj_msgSend(_2c,"viewDidMoveToSuperview"); +objj_msgSend(_2a,"didAddSubview:",_2c); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_30,_31,_32){ +with(_30){ +} +}),new objj_method(sel_getUid("removeFromSuperview"),function(_33,_34){ +with(_33){ +if(!_superview){ +return; +} +objj_msgSend(objj_msgSend(_33,"window"),"_dirtyKeyViewLoop"); +objj_msgSend(_superview,"willRemoveSubview:",_33); +objj_msgSend(_superview._subviews,"removeObject:",_33); +_superview._DOMElement.removeChild(_DOMElement); +_superview=nil; +objj_msgSend(_33,"_setWindow:",nil); +} +}),new objj_method(sel_getUid("replaceSubview:with:"),function(_35,_36,_37,_38){ +with(_35){ +if(_37._superview!=_35){ +return; +} +var _39=objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_37); +objj_msgSend(_37,"removeFromSuperview"); +objj_msgSend(_35,"_insertSubview:atIndex:",_38,_39); +} +}),new objj_method(sel_getUid("setSubviews:"),function(_3a,_3b,_3c){ +with(_3a){ +if(!_3c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"newSubviews cannot be nil in -[CPView setSubviews:]"); +} +if(objj_msgSend(_subviews,"isEqual:",_3c)){ +return; +} +if(objj_msgSend(_subviews,"count")===0){ +var _3d=0,_3e=objj_msgSend(_3c,"count"); +for(;_3d<_3e;++_3d){ +objj_msgSend(_3a,"addSubview:",_3c[_3d]); +} +return; +} +if(objj_msgSend(_3c,"count")===0){ +var _3e=objj_msgSend(_subviews,"count"); +while(_3e--){ +objj_msgSend(_subviews[_3e],"removeFromSuperview"); +} +return; +} +var _3f=objj_msgSend(CPMutableSet,"setWithArray:",_subviews); +objj_msgSend(_3f,"removeObjectsInArray:",_3c); +objj_msgSend(_3f,"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +var _40=objj_msgSend(CPMutableSet,"setWithArray:",_3c); +objj_msgSend(_40,"removeObjectsInArray:",_subviews); +var _41=nil,_42=objj_msgSend(_40,"objectEnumerator"); +while(_41=objj_msgSend(_42,"nextObject")){ +objj_msgSend(_3a,"addSubview:",_41); +} +if(objj_msgSend(_subviews,"isEqual:",_3c)){ +return; +} +_subviews=objj_msgSend(_3c,"copy"); +var _3d=0,_3e=objj_msgSend(_subviews,"count"); +for(;_3d<_3e;++_3d){ +var _43=_subviews[_3d]; +_DOMElement.removeChild(_43._DOMElement); +_DOMElement.appendChild(_43._DOMElement); +} +} +}),new objj_method(sel_getUid("_setWindow:"),function(_44,_45,_46){ +with(_44){ +if(_window===_46){ +return; +} +objj_msgSend(objj_msgSend(_44,"window"),"_dirtyKeyViewLoop"); +if(objj_msgSend(_window,"firstResponder")===_44){ +objj_msgSend(_window,"makeFirstResponder:",nil); +} +objj_msgSend(_44,"viewWillMoveToWindow:",_46); +if(_registeredDraggedTypes){ +objj_msgSend(_window,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_46,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +} +_window=_46; +var _47=objj_msgSend(_subviews,"count"); +while(_47--){ +objj_msgSend(_subviews[_47],"_setWindow:",_46); +} +objj_msgSend(_44,"viewDidMoveToWindow"); +objj_msgSend(objj_msgSend(_44,"window"),"_dirtyKeyViewLoop"); +} +}),new objj_method(sel_getUid("isDescendantOf:"),function(_48,_49,_4a){ +with(_48){ +var _4b=_48; +do{ +if(_4b==_4a){ +return YES; +} +}while(_4b=objj_msgSend(_4b,"superview")); +return NO; +} +}),new objj_method(sel_getUid("viewDidMoveToSuperview"),function(_4c,_4d){ +with(_4c){ +objj_msgSend(_4c,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_4e,_4f){ +with(_4e){ +} +}),new objj_method(sel_getUid("viewWillMoveToSuperview:"),function(_50,_51,_52){ +with(_50){ +} +}),new objj_method(sel_getUid("viewWillMoveToWindow:"),function(_53,_54,_55){ +with(_53){ +} +}),new objj_method(sel_getUid("willRemoveSubview:"),function(_56,_57,_58){ +with(_56){ +} +}),new objj_method(sel_getUid("enclosingMenuItem"),function(_59,_5a){ +with(_59){ +var _5b=_59; +while(_5b&&!objj_msgSend(_5b,"isKindOfClass:",objj_msgSend(_CPMenuItemView,"class"))){ +_5b=objj_msgSend(_5b,"superview"); +} +if(_5b){ +return _5b._menuItem; +} +return nil; +} +}),new objj_method(sel_getUid("setTag:"),function(_5c,_5d,_5e){ +with(_5c){ +_tag=_5e; +} +}),new objj_method(sel_getUid("tag"),function(_5f,_60){ +with(_5f){ +return _tag; +} +}),new objj_method(sel_getUid("viewWithTag:"),function(_61,_62,_63){ +with(_61){ +if(objj_msgSend(_61,"tag")==_63){ +return _61; +} +var _64=0,_65=_subviews.length; +for(;_64<_65;++_64){ +var _66=objj_msgSend(_subviews[_64],"viewWithTag:",_63); +if(_66){ +return _66; +} +} +return nil; +} +}),new objj_method(sel_getUid("isFlipped"),function(_67,_68){ +with(_67){ +return YES; +} +}),new objj_method(sel_getUid("setFrame:"),function(_69,_6a,_6b){ +with(_69){ +if(((_frame.origin.x==_6b.origin.x&&_frame.origin.y==_6b.origin.y)&&(_frame.size.width==_6b.size.width&&_frame.size.height==_6b.size.height))){ +return; +} +_inhibitFrameAndBoundsChangedNotifications=YES; +objj_msgSend(_69,"setFrameOrigin:",_6b.origin); +objj_msgSend(_69,"setFrameSize:",_6b.size); +_inhibitFrameAndBoundsChangedNotifications=NO; +if(_postsFrameChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_69); +} +} +}),new objj_method(sel_getUid("frame"),function(_6c,_6d){ +with(_6c){ +return {origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}}; +} +}),new objj_method(sel_getUid("frameOrigin"),function(_6e,_6f){ +with(_6e){ +return {x:_frame.origin.x,y:_frame.origin.y}; +} +}),new objj_method(sel_getUid("frameSize"),function(_70,_71){ +with(_70){ +return {width:_frame.size.width,height:_frame.size.height}; +} +}),new objj_method(sel_getUid("setCenter:"),function(_72,_73,_74){ +with(_72){ +objj_msgSend(_72,"setFrameOrigin:",CGPointMake(_74.x-_frame.size.width/2,_74.y-_frame.size.height/2)); +} +}),new objj_method(sel_getUid("center"),function(_75,_76){ +with(_75){ +return CGPointMake(_frame.size.width/2+_frame.origin.x,_frame.size.height/2+_frame.origin.y); +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_77,_78,_79){ +with(_77){ +var _7a=_frame.origin; +if(!_79||(_7a.x==_79.x&&_7a.y==_79.y)){ +return; +} +_7a.x=_79.x; +_7a.y=_79.y; +if(_postsFrameChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_77); +} +var _7b=_superview?_superview._boundsTransform:NULL; +if(_7b){ +var _7c={x:CGPointMake(_7a.x,_7a.y).x*_7b.a+CGPointMake(_7a.x,_7a.y).y*_7b.c+_7b.tx,y:CGPointMake(_7a.x,_7a.y).x*_7b.b+CGPointMake(_7a.x,_7a.y).y*_7b.d+_7b.ty}; +}else{ +var _7c={x:_7a.x,y:_7a.y}; +} +_DOMElement.style.left=ROUND(_7c.x)+"px"; +_DOMElement.style.top=ROUND(_7c.y)+"px"; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_7d,_7e,_7f){ +with(_7d){ +var _80=_frame.size; +if(!_7f||(_80.width==_7f.width&&_80.height==_7f.height)){ +return; +} +var _81={width:_80.width,height:_80.height}; +_80.width=_7f.width; +_80.height=_7f.height; +if(YES){ +_bounds.size.width=_7f.width; +_bounds.size.height=_7f.height; +} +if(_layer){ +objj_msgSend(_layer,"_owningViewBoundsChanged"); +} +if(_autoresizesSubviews){ +objj_msgSend(_7d,"resizeSubviewsWithOldSize:",_81); +} +objj_msgSend(_7d,"setNeedsLayout"); +objj_msgSend(_7d,"setNeedsDisplay:",YES); +_DOMElement.style.width=MAX(0,ROUND(_80.width))+"px"; +_DOMElement.style.height=MAX(0,ROUND(_80.height))+"px"; +if(_DOMContentsElement){ +_DOMContentsElement.width=MAX(0,ROUND(_80.width)); +_DOMContentsElement.height=MAX(0,ROUND(_80.height)); +_DOMContentsElement.style.width=MAX(0,ROUND(_80.width))+"px"; +_DOMContentsElement.style.height=MAX(0,ROUND(_80.height))+"px"; +} +if(_backgroundType!==_4){ +if(_backgroundType===_8){ +_DOMImageParts[0].style.width=MAX(0,ROUND(_80.width))+"px"; +_DOMImageParts[0].style.height=MAX(0,ROUND(_80.height))+"px"; +}else{ +var _82=objj_msgSend(objj_msgSend(_backgroundColor,"patternImage"),"imageSlices"); +if(_backgroundType===_5){ +_DOMImageParts[1].style.width=MAX(0,ROUND(_80.width))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_80.height-_DOMImageSizes[0].height-_DOMImageSizes[2].height))+"px"; +}else{ +if(_backgroundType===_6){ +_DOMImageParts[1].style.width=MAX(0,ROUND(_80.width-_DOMImageSizes[0].width-_DOMImageSizes[2].width))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_80.height))+"px"; +}else{ +if(_backgroundType===_7){ +var _83=_80.width-_DOMImageSizes[0].width-_DOMImageSizes[2].width,_84=_80.height-_DOMImageSizes[0].height-_DOMImageSizes[6].height; +_DOMImageParts[1].style.width=MAX(0,ROUND(_83))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_DOMImageSizes[0].height))+"px"; +_DOMImageParts[3].style.width=MAX(0,ROUND(_DOMImageSizes[3].width))+"px"; +_DOMImageParts[3].style.height=MAX(0,ROUND(_84))+"px"; +_DOMImageParts[4].style.width=MAX(0,ROUND(_83))+"px"; +_DOMImageParts[4].style.height=MAX(0,ROUND(_84))+"px"; +_DOMImageParts[5].style.width=MAX(0,ROUND(_DOMImageSizes[5].width))+"px"; +_DOMImageParts[5].style.height=MAX(0,ROUND(_84))+"px"; +_DOMImageParts[7].style.width=MAX(0,ROUND(_83))+"px"; +_DOMImageParts[7].style.height=MAX(0,ROUND(_DOMImageSizes[7].height))+"px"; +} +} +} +} +} +if(_postsFrameChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_7d); +} +} +}),new objj_method(sel_getUid("setBounds:"),function(_85,_86,_87){ +with(_85){ +if(((_bounds.origin.x==_87.origin.x&&_bounds.origin.y==_87.origin.y)&&(_bounds.size.width==_87.size.width&&_bounds.size.height==_87.size.height))){ +return; +} +_inhibitFrameAndBoundsChangedNotifications=YES; +objj_msgSend(_85,"setBoundsOrigin:",_87.origin); +objj_msgSend(_85,"setBoundsSize:",_87.size); +_inhibitFrameAndBoundsChangedNotifications=NO; +if(_postsBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_85); +} +} +}),new objj_method(sel_getUid("bounds"),function(_88,_89){ +with(_88){ +return {origin:{x:_bounds.origin.x,y:_bounds.origin.y},size:{width:_bounds.size.width,height:_bounds.size.height}}; +} +}),new objj_method(sel_getUid("boundsOrigin"),function(_8a,_8b){ +with(_8a){ +return {x:_bounds.origin.x,y:_bounds.origin.y}; +} +}),new objj_method(sel_getUid("boundsSize"),function(_8c,_8d){ +with(_8c){ +return {width:_bounds.size.width,height:_bounds.size.height}; +} +}),new objj_method(sel_getUid("setBoundsOrigin:"),function(_8e,_8f,_90){ +with(_8e){ +var _91=_bounds.origin; +if((_91.x==_90.x&&_91.y==_90.y)){ +return; +} +_91.x=_90.x; +_91.y=_90.y; +if(_91.x!=0||_91.y!=0){ +_boundsTransform={a:1,b:0,c:0,d:1,tx:-_91.x,ty:-_91.y}; +_inverseBoundsTransform=CGAffineTransformInvert(_boundsTransform); +}else{ +_boundsTransform=nil; +_inverseBoundsTransform=nil; +} +var _92=_subviews.length; +while(_92--){ +var _93=_subviews[_92],_91=_93._frame.origin; +if(_boundsTransform){ +var _94={x:CGPointMake(_91.x,_91.y).x*_boundsTransform.a+CGPointMake(_91.x,_91.y).y*_boundsTransform.c+_boundsTransform.tx,y:CGPointMake(_91.x,_91.y).x*_boundsTransform.b+CGPointMake(_91.x,_91.y).y*_boundsTransform.d+_boundsTransform.ty}; +}else{ +var _94={x:_91.x,y:_91.y}; +} +_93._DOMElement.style.left=ROUND(_94.x)+"px"; +_93._DOMElement.style.top=ROUND(_94.y)+"px"; +} +if(_postsBoundsChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_8e); +} +} +}),new objj_method(sel_getUid("setBoundsSize:"),function(_95,_96,_97){ +with(_95){ +var _98=_bounds.size; +if((_98.width==_97.width&&_98.height==_97.height)){ +return; +} +var _99=_frame.size; +if(!(_98.width==_99.width&&_98.height==_99.height)){ +var _9a=_bounds.origin; +_9a.x/=_98.width/_99.width; +_9a.y/=_98.height/_99.height; +} +_98.width=_97.width; +_98.height=_97.height; +if(!(_98.width==_99.width&&_98.height==_99.height)){ +var _9a=_bounds.origin; +_9a.x*=_98.width/_99.width; +_9a.y*=_98.height/_99.height; +} +if(_postsBoundsChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_95); +} +} +}),new objj_method(sel_getUid("resizeWithOldSuperviewSize:"),function(_9b,_9c,_9d){ +with(_9b){ +var _9e=objj_msgSend(_9b,"autoresizingMask"); +if(_9e==CPViewNotSizable){ +return; +} +var _9f=_superview._frame,_a0={origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}},dX=((_9f.size.width)-_9d.width)/(((_9e&CPViewMinXMargin)?1:0)+(_9e&CPViewWidthSizable?1:0)+(_9e&CPViewMaxXMargin?1:0)),dY=((_9f.size.height)-_9d.height)/((_9e&CPViewMinYMargin?1:0)+(_9e&CPViewHeightSizable?1:0)+(_9e&CPViewMaxYMargin?1:0)); +if(_9e&CPViewMinXMargin){ +_a0.origin.x+=dX; +} +if(_9e&CPViewWidthSizable){ +_a0.size.width+=dX; +} +if(_9e&CPViewMinYMargin){ +_a0.origin.y+=dY; +} +if(_9e&CPViewHeightSizable){ +_a0.size.height+=dY; +} +objj_msgSend(_9b,"setFrame:",_a0); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_a1,_a2,_a3){ +with(_a1){ +var _a4=_subviews.length; +while(_a4--){ +objj_msgSend(_subviews[_a4],"resizeWithOldSuperviewSize:",_a3); +} +} +}),new objj_method(sel_getUid("setAutoresizesSubviews:"),function(_a5,_a6,_a7){ +with(_a5){ +_autoresizesSubviews=!!_a7; +} +}),new objj_method(sel_getUid("autoresizesSubviews"),function(_a8,_a9){ +with(_a8){ +return _autoresizesSubviews; +} +}),new objj_method(sel_getUid("setAutoresizingMask:"),function(_aa,_ab,_ac){ +with(_aa){ +_autoresizingMask=_ac; +} +}),new objj_method(sel_getUid("autoresizingMask"),function(_ad,_ae){ +with(_ad){ +return _autoresizingMask; +} +}),new objj_method(sel_getUid("enterFullScreenMode"),function(_af,_b0){ +with(_af){ +return objj_msgSend(_af,"enterFullScreenMode:withOptions:",nil,nil); +} +}),new objj_method(sel_getUid("enterFullScreenMode:withOptions:"),function(_b1,_b2,_b3,_b4){ +with(_b1){ +_fullScreenModeState=_b5(_b1); +var _b6=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"contentBounds"),CPBorderlessWindowMask); +objj_msgSend(_b6,"setLevel:",CPScreenSaverWindowLevel); +objj_msgSend(_b6,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +var _b7=objj_msgSend(_b6,"contentView"); +objj_msgSend(_b7,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_b7,"addSubview:",_b1); +objj_msgSend(_b1,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_b1,"setFrame:",CGRectMakeCopy(objj_msgSend(_b7,"bounds"))); +objj_msgSend(_b6,"makeKeyAndOrderFront:",_b1); +objj_msgSend(_b6,"makeFirstResponder:",_b1); +_isInFullScreenMode=YES; +return YES; +} +}),new objj_method(sel_getUid("exitFullScreenMode"),function(_b8,_b9){ +with(_b8){ +objj_msgSend(_b8,"exitFullScreenModeWithOptions:",nil); +} +}),new objj_method(sel_getUid("exitFullScreenModeWithOptions:"),function(_ba,_bb,_bc){ +with(_ba){ +if(!_isInFullScreenMode){ +return; +} +_isInFullScreenMode=NO; +objj_msgSend(_ba,"setFrame:",_fullScreenModeState.frame); +objj_msgSend(_ba,"setAutoresizingMask:",_fullScreenModeState.autoresizingMask); +objj_msgSend(_fullScreenModeState.superview,"_insertSubview:atIndex:",_ba,_fullScreenModeState.index); +objj_msgSend(objj_msgSend(_ba,"window"),"orderOut:",_ba); +} +}),new objj_method(sel_getUid("isInFullScreenMode"),function(_bd,_be){ +with(_bd){ +return _isInFullScreenMode; +} +}),new objj_method(sel_getUid("setHidden:"),function(_bf,_c0,_c1){ +with(_bf){ +_c1=!!_c1; +if(_isHidden===_c1){ +return; +} +_isHidden=_c1; +_DOMElement.style.display=_isHidden?"none":"block"; +if(_c1){ +var _c2=objj_msgSend(_window,"firstResponder"); +if(objj_msgSend(_c2,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +do{ +if(_bf==_c2){ +objj_msgSend(_window,"makeFirstResponder:",objj_msgSend(_bf,"nextValidKeyView")); +break; +} +}while(_c2=objj_msgSend(_c2,"superview")); +} +objj_msgSend(_bf,"_notifyViewDidHide"); +}else{ +objj_msgSend(_bf,"_notifyViewDidUnhide"); +} +} +}),new objj_method(sel_getUid("_notifyViewDidHide"),function(_c3,_c4){ +with(_c3){ +objj_msgSend(_c3,"viewDidHide"); +var _c5=objj_msgSend(_subviews,"count"); +while(_c5--){ +objj_msgSend(_subviews[_c5],"_notifyViewDidHide"); +} +} +}),new objj_method(sel_getUid("_notifyViewDidUnhide"),function(_c6,_c7){ +with(_c6){ +objj_msgSend(_c6,"viewDidUnhide"); +var _c8=objj_msgSend(_subviews,"count"); +while(_c8--){ +objj_msgSend(_subviews[_c8],"_notifyViewDidUnhide"); +} +} +}),new objj_method(sel_getUid("isHidden"),function(_c9,_ca){ +with(_c9){ +return _isHidden; +} +}),new objj_method(sel_getUid("setClipsToBounds:"),function(_cb,_cc,_cd){ +with(_cb){ +if(_clipsToBounds===_cd){ +return; +} +_clipsToBounds=_cd; +_DOMElement.style.overflow=_clipsToBounds?"hidden":"visible"; +} +}),new objj_method(sel_getUid("clipsToBounds"),function(_ce,_cf){ +with(_ce){ +return _clipsToBounds; +} +}),new objj_method(sel_getUid("setAlphaValue:"),function(_d0,_d1,_d2){ +with(_d0){ +if(_opacity==_d2){ +return; +} +_opacity=_d2; +if(CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)){ +if(_d2===1){ +try{ +_DOMElement.style.removeAttribute("filter"); +} +catch(anException){ +} +}else{ +_DOMElement.style.filter="alpha(opacity="+_d2*100+")"; +} +}else{ +_DOMElement.style.opacity=_d2; +} +} +}),new objj_method(sel_getUid("alphaValue"),function(_d3,_d4){ +with(_d3){ +return _opacity; +} +}),new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"),function(_d5,_d6){ +with(_d5){ +var _d7=_d5; +while(_d7&&!objj_msgSend(_d7,"isHidden")){ +_d7=objj_msgSend(_d7,"superview"); +} +return _d7!==nil; +} +}),new objj_method(sel_getUid("viewDidHide"),function(_d8,_d9){ +with(_d8){ +} +}),new objj_method(sel_getUid("viewDidUnhide"),function(_da,_db){ +with(_da){ +} +}),new objj_method(sel_getUid("acceptsFirstMouse:"),function(_dc,_dd,_de){ +with(_dc){ +return YES; +} +}),new objj_method(sel_getUid("hitTests"),function(_df,_e0){ +with(_df){ +return _hitTests; +} +}),new objj_method(sel_getUid("setHitTests:"),function(_e1,_e2,_e3){ +with(_e1){ +_hitTests=!!_e3; +} +}),new objj_method(sel_getUid("hitTest:"),function(_e4,_e5,_e6){ +with(_e4){ +if(_isHidden||!_hitTests||!CPRectContainsPoint(_frame,_e6)){ +return nil; +} +var _e7=nil,i=_subviews.length,_e8={x:_e6.x-(_frame.origin.x),y:_e6.y-(_frame.origin.y)}; +if(_inverseBoundsTransform){ +_e8={x:_e8.x*_inverseBoundsTransform.a+_e8.y*_inverseBoundsTransform.c+_inverseBoundsTransform.tx,y:_e8.x*_inverseBoundsTransform.b+_e8.y*_inverseBoundsTransform.d+_inverseBoundsTransform.ty}; +} +while(i--){ +if(_e7=objj_msgSend(_subviews[i],"hitTest:",_e8)){ +return _e7; +} +} +return _e4; +} +}),new objj_method(sel_getUid("needsPanelToBecomeKey"),function(_e9,_ea){ +with(_e9){ +return NO; +} +}),new objj_method(sel_getUid("mouseDownCanMoveWindow"),function(_eb,_ec){ +with(_eb){ +return !objj_msgSend(_eb,"isOpaque"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_ed,_ee,_ef){ +with(_ed){ +if(objj_msgSend(_ed,"mouseDownCanMoveWindow")){ +objj_msgSendSuper({receiver:_ed,super_class:objj_getClass("CPView").super_class},"mouseDown:",_ef); +} +} +}),new objj_method(sel_getUid("rightMouseDown:"),function(_f0,_f1,_f2){ +with(_f0){ +var _f3=objj_msgSend(_f0,"menuForEvent:",_f2); +if(_f3){ +objj_msgSend(CPMenu,"popUpContextMenu:withEvent:forView:",_f3,_f2,_f0); +}else{ +if(objj_msgSend(objj_msgSend(_f0,"nextResponder"),"isKindOfClass:",CPView)){ +objj_msgSendSuper({receiver:_f0,super_class:objj_getClass("CPView").super_class},"rightMouseDown:",_f2); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_f2,"window"),"platformWindow"),"_propagateContextMenuDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("menuForEvent:"),function(_f4,_f5,_f6){ +with(_f4){ +return objj_msgSend(_f4,"menu")||objj_msgSend(objj_msgSend(_f4,"class"),"defaultMenu"); +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_f7,_f8,_f9){ +with(_f7){ +if(_backgroundColor==_f9){ +return; +} +if(_f9==objj_msgSend(CPNull,"null")){ +_f9=nil; +} +_backgroundColor=_f9; +var _fa=objj_msgSend(_backgroundColor,"patternImage"),_fb=_backgroundColor&&(objj_msgSend(_backgroundColor,"patternImage")||objj_msgSend(_backgroundColor,"alphaComponent")>0),_fc=_fb&&objj_msgSend(_backgroundColor,"alphaComponent")<1,_fd=CPFeatureIsCompatible(CPCSSRGBAFeature),_fe=_fc&&!_fd,_ff=0; +if(objj_msgSend(_fa,"isThreePartImage")){ +_backgroundType=objj_msgSend(_fa,"isVertical")?_5:_6; +_ff=3-_DOMImageParts.length; +}else{ +if(objj_msgSend(_fa,"isNinePartImage")){ +_backgroundType=_7; +_ff=9-_DOMImageParts.length; +}else{ +_backgroundType=_fe?_8:_4; +_ff=(_fe?1:0)-_DOMImageParts.length; +} +} +if(_ff>0){ +while(_ff--){ +var _100=_3.cloneNode(false); +_100.style.zIndex=-1000; +_DOMImageParts.push(_100); +_DOMElement.appendChild(_100); +} +}else{ +_ff=-_ff; +while(_ff--){ +_DOMElement.removeChild(_DOMImageParts.pop()); +} +} +if(_backgroundType===_4||_backgroundType===_8){ +var _101=_fb?objj_msgSend(_backgroundColor,"cssString"):""; +if(_fe){ +_DOMElement.style.background=""; +_DOMImageParts[0].style.background=objj_msgSend(_backgroundColor,"cssString"); +if(CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)){ +_DOMImageParts[0].style.filter="alpha(opacity="+objj_msgSend(_backgroundColor,"alphaComponent")*100+")"; +}else{ +_DOMImageParts[0].style.opacity=objj_msgSend(_backgroundColor,"alphaComponent"); +} +var size=objj_msgSend(_f7,"bounds").size; +_DOMImageParts[0].style.width=MAX(0,ROUND(size.width))+"px"; +_DOMImageParts[0].style.height=MAX(0,ROUND(size.height))+"px"; +}else{ +_DOMElement.style.background=_101; +} +}else{ +var _102=objj_msgSend(_fa,"imageSlices"),_103=MIN(_DOMImageParts.length,_102.length),_104=_frame.size; +while(_103--){ +var _105=_102[_103],size=_DOMImageSizes[_103]=_105?objj_msgSend(_105,"size"):{width:0,height:0}; +_DOMImageParts[_103].style.width=MAX(0,ROUND(size.width))+"px"; +_DOMImageParts[_103].style.height=MAX(0,ROUND(size.height))+"px"; +_DOMImageParts[_103].style.background=_105?"url(\""+objj_msgSend(_105,"filename")+"\")":""; +if(!_fd){ +if(CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)){ +try{ +_DOMImageParts[_103].style.removeAttribute("filter"); +} +catch(anException){ +} +}else{ +_DOMImageParts[_103].style.opacity=1; +} +} +} +if(_backgroundType==_7){ +var _106=_104.width-_DOMImageSizes[0].width-_DOMImageSizes[2].width,_107=_104.height-_DOMImageSizes[0].height-_DOMImageSizes[6].height; +_DOMImageParts[1].style.width=MAX(0,ROUND(_106))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_DOMImageSizes[0].height))+"px"; +_DOMImageParts[3].style.width=MAX(0,ROUND(_DOMImageSizes[3].width))+"px"; +_DOMImageParts[3].style.height=MAX(0,ROUND(_107))+"px"; +_DOMImageParts[4].style.width=MAX(0,ROUND(_106))+"px"; +_DOMImageParts[4].style.height=MAX(0,ROUND(_107))+"px"; +_DOMImageParts[5].style.width=MAX(0,ROUND(_DOMImageSizes[5].width))+"px"; +_DOMImageParts[5].style.height=MAX(0,ROUND(_107))+"px"; +_DOMImageParts[7].style.width=MAX(0,ROUND(_106))+"px"; +_DOMImageParts[7].style.height=MAX(0,ROUND(_DOMImageSizes[7].height))+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[0].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[0].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(_DOMImageSizes[0].width,0).x*NULL.a+CGPointMake(_DOMImageSizes[0].width,0).y*NULL.c+NULL.tx,y:CGPointMake(_DOMImageSizes[0].width,0).x*NULL.b+CGPointMake(_DOMImageSizes[0].width,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:_DOMImageSizes[0].width,y:0}; +} +_DOMImageParts[1].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[1].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[2].style.right=ROUND(_108.x)+"px"; +_DOMImageParts[2].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,_DOMImageSizes[1].height).x*NULL.a+CGPointMake(0,_DOMImageSizes[1].height).y*NULL.c+NULL.tx,y:CGPointMake(0,_DOMImageSizes[1].height).x*NULL.b+CGPointMake(0,_DOMImageSizes[1].height).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:_DOMImageSizes[1].height}; +} +_DOMImageParts[3].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[3].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(_DOMImageSizes[0].width,_DOMImageSizes[0].height).x*NULL.a+CGPointMake(_DOMImageSizes[0].width,_DOMImageSizes[0].height).y*NULL.c+NULL.tx,y:CGPointMake(_DOMImageSizes[0].width,_DOMImageSizes[0].height).x*NULL.b+CGPointMake(_DOMImageSizes[0].width,_DOMImageSizes[0].height).y*NULL.d+NULL.ty}; +}else{ +var _108={x:_DOMImageSizes[0].width,y:_DOMImageSizes[0].height}; +} +_DOMImageParts[4].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[4].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,_DOMImageSizes[1].height).x*NULL.a+CGPointMake(0,_DOMImageSizes[1].height).y*NULL.c+NULL.tx,y:CGPointMake(0,_DOMImageSizes[1].height).x*NULL.b+CGPointMake(0,_DOMImageSizes[1].height).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:_DOMImageSizes[1].height}; +} +_DOMImageParts[5].style.right=ROUND(_108.x)+"px"; +_DOMImageParts[5].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[6].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[6].style.bottom=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(_DOMImageSizes[6].width,0).x*NULL.a+CGPointMake(_DOMImageSizes[6].width,0).y*NULL.c+NULL.tx,y:CGPointMake(_DOMImageSizes[6].width,0).x*NULL.b+CGPointMake(_DOMImageSizes[6].width,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:_DOMImageSizes[6].width,y:0}; +} +_DOMImageParts[7].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[7].style.bottom=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[8].style.right=ROUND(_108.x)+"px"; +_DOMImageParts[8].style.bottom=ROUND(_108.y)+"px"; +}else{ +if(_backgroundType==_5){ +_DOMImageParts[1].style.width=MAX(0,ROUND(_104.width))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_104.height-_DOMImageSizes[0].height-_DOMImageSizes[2].height))+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[0].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[0].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,_DOMImageSizes[0].height).x*NULL.a+CGPointMake(0,_DOMImageSizes[0].height).y*NULL.c+NULL.tx,y:CGPointMake(0,_DOMImageSizes[0].height).x*NULL.b+CGPointMake(0,_DOMImageSizes[0].height).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:_DOMImageSizes[0].height}; +} +_DOMImageParts[1].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[1].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[2].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[2].style.bottom=ROUND(_108.y)+"px"; +}else{ +if(_backgroundType==_6){ +_DOMImageParts[1].style.width=MAX(0,ROUND(_104.width-_DOMImageSizes[0].width-_DOMImageSizes[2].width))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_104.height))+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[0].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[0].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(_DOMImageSizes[0].width,0).x*NULL.a+CGPointMake(_DOMImageSizes[0].width,0).y*NULL.c+NULL.tx,y:CGPointMake(_DOMImageSizes[0].width,0).x*NULL.b+CGPointMake(_DOMImageSizes[0].width,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:_DOMImageSizes[0].width,y:0}; +} +_DOMImageParts[1].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[1].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[2].style.right=ROUND(_108.x)+"px"; +_DOMImageParts[2].style.top=ROUND(_108.y)+"px"; +} +} +} +} +} +}),new objj_method(sel_getUid("backgroundColor"),function(self,_109){ +with(self){ +return _backgroundColor; +} +}),new objj_method(sel_getUid("convertPoint:fromView:"),function(self,_10a,_10b,_10c){ +with(self){ +return CGPointApplyAffineTransform(_10b,_10d(_10c,self)); +} +}),new objj_method(sel_getUid("convertPoint:toView:"),function(self,_10e,_10f,_110){ +with(self){ +return CGPointApplyAffineTransform(_10f,_10d(self,_110)); +} +}),new objj_method(sel_getUid("convertSize:fromView:"),function(self,_111,_112,_113){ +with(self){ +return CGSizeApplyAffineTransform(_112,_10d(_113,self)); +} +}),new objj_method(sel_getUid("convertSize:toView:"),function(self,_114,_115,_116){ +with(self){ +return CGSizeApplyAffineTransform(_115,_10d(self,_116)); +} +}),new objj_method(sel_getUid("convertRect:fromView:"),function(self,_117,_118,_119){ +with(self){ +return CGRectApplyAffineTransform(_118,_10d(_119,self)); +} +}),new objj_method(sel_getUid("convertRect:toView:"),function(self,_11a,_11b,_11c){ +with(self){ +return CGRectApplyAffineTransform(_11b,_10d(self,_11c)); +} +}),new objj_method(sel_getUid("setPostsFrameChangedNotifications:"),function(self,_11d,_11e){ +with(self){ +_11e=!!_11e; +if(_postsFrameChangedNotifications===_11e){ +return; +} +_postsFrameChangedNotifications=_11e; +if(_postsFrameChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,self); +} +} +}),new objj_method(sel_getUid("postsFrameChangedNotifications"),function(self,_11f){ +with(self){ +return _postsFrameChangedNotifications; +} +}),new objj_method(sel_getUid("setPostsBoundsChangedNotifications:"),function(self,_120,_121){ +with(self){ +_121=!!_121; +if(_postsBoundsChangedNotifications===_121){ +return; +} +_postsBoundsChangedNotifications=_121; +if(_postsBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,self); +} +} +}),new objj_method(sel_getUid("postsBoundsChangedNotifications"),function(self,_122){ +with(self){ +return _postsBoundsChangedNotifications; +} +}),new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"),function(self,_123,_124,_125,_126,_127,_128,_129,_12a){ +with(self){ +objj_msgSend(_window,"dragImage:at:offset:event:pasteboard:source:slideBack:",_124,objj_msgSend(self,"convertPoint:toView:",_125,nil),_126,_127,_128,_129,_12a); +} +}),new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"),function(self,_12b,_12c,_12d,_12e,_12f,_130,_131,_132){ +with(self){ +objj_msgSend(_window,"dragView:at:offset:event:pasteboard:source:slideBack:",_12c,objj_msgSend(self,"convertPoint:toView:",_12d,nil),_12e,_12f,_130,_131,_132); +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(self,_133,_134){ +with(self){ +if(!_134||!objj_msgSend(_134,"count")){ +return; +} +var _135=objj_msgSend(self,"window"); +objj_msgSend(_135,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_registeredDraggedTypes,"addObjectsFromArray:",_134); +objj_msgSend(_135,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypesArray=nil; +} +}),new objj_method(sel_getUid("registeredDraggedTypes"),function(self,_136){ +with(self){ +if(!_registeredDraggedTypesArray){ +_registeredDraggedTypesArray=objj_msgSend(_registeredDraggedTypes,"allObjects"); +} +return _registeredDraggedTypesArray; +} +}),new objj_method(sel_getUid("unregisterDraggedTypes"),function(self,_137){ +with(self){ +objj_msgSend(objj_msgSend(self,"window"),"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_138,_139){ +with(self){ +} +}),new objj_method(sel_getUid("setNeedsDisplay:"),function(self,_13a,_13b){ +with(self){ +if(_13b){ +objj_msgSend(self,"setNeedsDisplayInRect:",objj_msgSend(self,"bounds")); +} +} +}),new objj_method(sel_getUid("setNeedsDisplayInRect:"),function(self,_13c,_13d){ +with(self){ +if(!(_viewClassFlags&_a)){ +return; +} +if((_13d.size.width<=0||_13d.size.height<=0)){ +return; +} +if(_dirtyRect&&!(_dirtyRect.size.width<=0||_dirtyRect.size.height<=0)){ +_dirtyRect=CGRectUnion(_13d,_dirtyRect); +}else{ +_dirtyRect={origin:{x:_13d.origin.x,y:_13d.origin.y},size:{width:_13d.size.width,height:_13d.size.height}}; +} +_CPDisplayServerAddDisplayObject(self); +} +}),new objj_method(sel_getUid("needsDisplay"),function(self,_13e){ +with(self){ +return _dirtyRect&&!(_dirtyRect.size.width<=0||_dirtyRect.size.height<=0); +} +}),new objj_method(sel_getUid("displayIfNeeded"),function(self,_13f){ +with(self){ +if(objj_msgSend(self,"needsDisplay")){ +objj_msgSend(self,"displayRect:",_dirtyRect); +} +} +}),new objj_method(sel_getUid("display"),function(self,_140){ +with(self){ +objj_msgSend(self,"displayRect:",objj_msgSend(self,"visibleRect")); +} +}),new objj_method(sel_getUid("displayIfNeededInRect:"),function(self,_141,_142){ +with(self){ +if(objj_msgSend(self,"needsDisplay")){ +objj_msgSend(self,"displayRect:",_142); +} +} +}),new objj_method(sel_getUid("displayRect:"),function(self,_143,_144){ +with(self){ +objj_msgSend(self,"viewWillDraw"); +objj_msgSend(self,"displayRectIgnoringOpacity:inContext:",_144,nil); +_dirtyRect=NULL; +} +}),new objj_method(sel_getUid("displayRectIgnoringOpacity:inContext:"),function(self,_145,_146,_147){ +with(self){ +if(objj_msgSend(self,"isHidden")){ +return; +} +objj_msgSend(self,"lockFocus"); +CGContextClearRect(objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_146); +objj_msgSend(self,"drawRect:",_146); +objj_msgSend(self,"unlockFocus"); +} +}),new objj_method(sel_getUid("viewWillDraw"),function(self,_148){ +with(self){ +} +}),new objj_method(sel_getUid("lockFocus"),function(self,_149){ +with(self){ +if(!_graphicsContext){ +var _14a=CGBitmapGraphicsContextCreate(); +_DOMContentsElement=_14a.DOMElement; +_DOMContentsElement.style.zIndex=-100; +_DOMContentsElement.style.overflow="hidden"; +_DOMContentsElement.style.position="absolute"; +_DOMContentsElement.style.visibility="visible"; +_DOMContentsElement.width=ROUND((_frame.size.width)); +_DOMContentsElement.height=ROUND((_frame.size.height)); +_DOMContentsElement.style.top="0px"; +_DOMContentsElement.style.left="0px"; +_DOMContentsElement.style.width=ROUND((_frame.size.width))+"px"; +_DOMContentsElement.style.height=ROUND((_frame.size.height))+"px"; +_DOMElement.appendChild(_DOMContentsElement); +_graphicsContext=objj_msgSend(CPGraphicsContext,"graphicsContextWithGraphicsPort:flipped:",_14a,YES); +} +objj_msgSend(CPGraphicsContext,"setCurrentContext:",_graphicsContext); +CGContextSaveGState(objj_msgSend(_graphicsContext,"graphicsPort")); +} +}),new objj_method(sel_getUid("unlockFocus"),function(self,_14b){ +with(self){ +CGContextRestoreGState(objj_msgSend(_graphicsContext,"graphicsPort")); +objj_msgSend(CPGraphicsContext,"setCurrentContext:",nil); +} +}),new objj_method(sel_getUid("setNeedsLayout"),function(self,_14c){ +with(self){ +if(!(_viewClassFlags&_b)){ +return; +} +_needsLayout=YES; +_CPDisplayServerAddLayoutObject(self); +} +}),new objj_method(sel_getUid("layoutIfNeeded"),function(self,_14d){ +with(self){ +if(_needsLayout){ +_needsLayout=NO; +objj_msgSend(self,"layoutSubviews"); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_14e){ +with(self){ +} +}),new objj_method(sel_getUid("isOpaque"),function(self,_14f){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("visibleRect"),function(self,_150){ +with(self){ +if(!_superview){ +return _bounds; +} +return CGRectIntersection(objj_msgSend(self,"convertRect:fromView:",objj_msgSend(_superview,"visibleRect"),_superview),_bounds); +} +}),new objj_method(sel_getUid("_enclosingClipView"),function(self,_151){ +with(self){ +var _152=_superview,_153=objj_msgSend(CPClipView,"class"); +while(_152&&!objj_msgSend(_152,"isKindOfClass:",_153)){ +_152=_152._superview; +} +return _152; +} +}),new objj_method(sel_getUid("scrollPoint:"),function(self,_154,_155){ +with(self){ +var _156=objj_msgSend(self,"_enclosingClipView"); +if(!_156){ +return; +} +objj_msgSend(_156,"scrollToPoint:",objj_msgSend(self,"convertPoint:toView:",_155,_156)); +} +}),new objj_method(sel_getUid("scrollRectToVisible:"),function(self,_157,_158){ +with(self){ +var _159=objj_msgSend(self,"visibleRect"); +_158=CGRectIntersection(_158,_bounds); +if((_158.size.width<=0||_158.size.height<=0)||CGRectContainsRect(_159,_158)){ +return NO; +} +var _15a=objj_msgSend(self,"_enclosingClipView"); +if(!_15a){ +return NO; +} +var _15b={x:_159.origin.x,y:_159.origin.y}; +if((_158.origin.x)<=(_159.origin.x)){ +_15b.x=(_158.origin.x); +}else{ +if((_158.origin.x+_158.size.width)>(_159.origin.x+_159.size.width)){ +_15b.x+=(_158.origin.x+_158.size.width)-(_159.origin.x+_159.size.width); +} +} +if((_158.origin.y)<=(_159.origin.y)){ +_15b.y=CGRectGetMinY(_158); +}else{ +if((_158.origin.y+_158.size.height)>(_159.origin.y+_159.size.height)){ +_15b.y+=(_158.origin.y+_158.size.height)-(_159.origin.y+_159.size.height); +} +} +objj_msgSend(_15a,"scrollToPoint:",CGPointMake(_15b.x,_15b.y)); +return YES; +} +}),new objj_method(sel_getUid("autoscroll:"),function(self,_15c,_15d){ +with(self){ +return objj_msgSend(objj_msgSend(self,"superview"),"autoscroll:",_15d); +} +}),new objj_method(sel_getUid("adjustScroll:"),function(self,_15e,_15f){ +with(self){ +return _15f; +} +}),new objj_method(sel_getUid("scrollRect:by:"),function(self,_160,_161,_162){ +with(self){ +} +}),new objj_method(sel_getUid("enclosingScrollView"),function(self,_163){ +with(self){ +var _164=_superview,_165=objj_msgSend(CPScrollView,"class"); +while(_164&&!objj_msgSend(_164,"isKindOfClass:",_165)){ +_164=_164._superview; +} +return _164; +} +}),new objj_method(sel_getUid("scrollClipView:toPoint:"),function(self,_166,_167,_168){ +with(self){ +objj_msgSend(_167,"scrollToPoint:",_168); +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(self,_169,_16a){ +with(self){ +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(self,_16b){ +with(self){ +if(self!==objj_msgSend(CPView,"class")){ +return; +} +_3=document.createElement("div"); +var _16c=_3.style; +_16c.overflow="hidden"; +_16c.position="absolute"; +_16c.visibility="visible"; +_16c.zIndex=0; +_1=objj_msgSend(CPNotificationCenter,"defaultCenter"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingFrame"),function(self,_16d){ +with(self){ +return objj_msgSend(CPSet,"setWithObjects:","frameOrigin","frameSize"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingBounds"),function(self,_16e){ +with(self){ +return objj_msgSend(CPSet,"setWithObjects:","boundsOrigin","boundsSize"); +} +}),new objj_method(sel_getUid("defaultMenu"),function(self,_16f){ +with(self){ +return nil; +} +})]); +var _c=objj_getClass("CPView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("performKeyEquivalent:"),function(self,_170,_171){ +with(self){ +var _172=objj_msgSend(_subviews,"count"); +while(_172--){ +if(objj_msgSend(_subviews[_172],"performKeyEquivalent:",_171)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("canBecomeKeyView"),function(self,_173){ +with(self){ +return objj_msgSend(self,"acceptsFirstResponder")&&!objj_msgSend(self,"isHiddenOrHasHiddenAncestor"); +} +}),new objj_method(sel_getUid("nextKeyView"),function(self,_174){ +with(self){ +return _nextKeyView; +} +}),new objj_method(sel_getUid("nextValidKeyView"),function(self,_175){ +with(self){ +var _176=objj_msgSend(self,"nextKeyView"); +while(_176&&!objj_msgSend(_176,"canBecomeKeyView")){ +_176=objj_msgSend(_176,"nextKeyView"); +} +return _176; +} +}),new objj_method(sel_getUid("previousKeyView"),function(self,_177){ +with(self){ +return _previousKeyView; +} +}),new objj_method(sel_getUid("previousValidKeyView"),function(self,_178){ +with(self){ +var _179=objj_msgSend(self,"previousKeyView"); +while(_179&&!objj_msgSend(_179,"canBecomeKeyView")){ +_179=objj_msgSend(_179,"previousKeyView"); +} +return _179; +} +}),new objj_method(sel_getUid("_setPreviousKeyView:"),function(self,_17a,_17b){ +with(self){ +_previousKeyView=_17b; +} +}),new objj_method(sel_getUid("setNextKeyView:"),function(self,_17c,next){ +with(self){ +_nextKeyView=next; +objj_msgSend(_nextKeyView,"_setPreviousKeyView:",self); +} +})]); +var _c=objj_getClass("CPView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("setLayer:"),function(self,_17d,_17e){ +with(self){ +if(_layer==_17e){ +return; +} +if(_layer){ +_layer._owningView=nil; +_DOMElement.removeChild(_layer._DOMElement); +} +_layer=_17e; +if(_layer){ +var _17f=CGRectMakeCopy(objj_msgSend(self,"bounds")); +objj_msgSend(_layer,"_setOwningView:",self); +_layer._DOMElement.style.zIndex=100; +_DOMElement.appendChild(_layer._DOMElement); +} +} +}),new objj_method(sel_getUid("layer"),function(self,_180){ +with(self){ +return _layer; +} +}),new objj_method(sel_getUid("setWantsLayer:"),function(self,_181,_182){ +with(self){ +_wantsLayer=!!_182; +} +}),new objj_method(sel_getUid("wantsLayer"),function(self,_183){ +with(self){ +return _wantsLayer; +} +})]); +var _c=objj_getClass("CPView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("themeState"),function(self,_184){ +with(self){ +return _themeState; +} +}),new objj_method(sel_getUid("hasThemeState:"),function(self,_185,_186){ +with(self){ +return !!(_themeState&((typeof _186==="string")?CPThemeState(_186):_186)); +} +}),new objj_method(sel_getUid("setThemeState:"),function(self,_187,_188){ +with(self){ +var _189=(typeof _188==="string")?CPThemeState(_188):_188; +if(_themeState&_189){ +return NO; +} +_themeState|=_189; +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("unsetThemeState:"),function(self,_18a,_18b){ +with(self){ +var _18c=((typeof _18b==="string")?CPThemeState(_18b):_18b); +if(!(_themeState&_18c)){ +return NO; +} +_themeState&=~_18c; +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("_loadThemeAttributes"),function(self,_18d){ +with(self){ +var _18e=objj_msgSend(self,"class"),_18f=objj_msgSend(_18e,"_themeAttributes"),_190=_18f.length; +if(!_190){ +return; +} +var _191=objj_msgSend(self,"theme"),_192=objj_msgSend(_18e,"themeClass"); +_themeAttributes={}; +while(_190--){ +var _193=_18f[_190--],_194=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_193,_18f[_190]); +objj_msgSend(_194,"setParentAttribute:",objj_msgSend(_191,"attributeWithName:forClass:",_193,_192)); +_themeAttributes[_193]=_194; +} +} +}),new objj_method(sel_getUid("setTheme:"),function(self,_195,_196){ +with(self){ +if(_theme===_196){ +return; +} +_theme=_196; +objj_msgSend(self,"viewDidChangeTheme"); +} +}),new objj_method(sel_getUid("theme"),function(self,_197){ +with(self){ +return _theme; +} +}),new objj_method(sel_getUid("viewDidChangeTheme"),function(self,_198){ +with(self){ +if(!_themeAttributes){ +return; +} +var _199=objj_msgSend(self,"theme"),_19a=objj_msgSend(objj_msgSend(self,"class"),"themeClass"); +for(var _19b in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_19b)){ +objj_msgSend(_themeAttributes[_19b],"setParentAttribute:",objj_msgSend(_199,"attributeWithName:forClass:",_19b,_19a)); +} +} +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("_themeAttributeDictionary"),function(self,_19c){ +with(self){ +var _19d=objj_msgSend(CPDictionary,"dictionary"); +if(_themeAttributes){ +var _19e=objj_msgSend(self,"theme"); +for(var _19f in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_19f)){ +objj_msgSend(_19d,"setObject:forKey:",_themeAttributes[_19f],_19f); +} +} +} +return _19d; +} +}),new objj_method(sel_getUid("setValue:forThemeAttribute:inState:"),function(self,_1a0,_1a1,_1a2,_1a3){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1a2]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1a2+"'"); +} +var _1a4=objj_msgSend(self,"currentValueForThemeAttribute:",_1a2); +objj_msgSend(_themeAttributes[_1a2],"setValue:forState:",_1a1,_1a3); +if(objj_msgSend(self,"currentValueForThemeAttribute:",_1a2)===_1a4){ +return; +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setValue:forThemeAttribute:"),function(self,_1a5,_1a6,_1a7){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1a7]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1a7+"'"); +} +var _1a8=objj_msgSend(self,"currentValueForThemeAttribute:",_1a7); +objj_msgSend(_themeAttributes[_1a7],"setValue:",_1a6); +if(objj_msgSend(self,"currentValueForThemeAttribute:",_1a7)===_1a8){ +return; +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("valueForThemeAttribute:inState:"),function(self,_1a9,_1aa,_1ab){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1aa]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1aa+"'"); +} +return objj_msgSend(_themeAttributes[_1aa],"valueForState:",_1ab); +} +}),new objj_method(sel_getUid("valueForThemeAttribute:"),function(self,_1ac,_1ad){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1ad]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1ad+"'"); +} +return objj_msgSend(_themeAttributes[_1ad],"value"); +} +}),new objj_method(sel_getUid("currentValueForThemeAttribute:"),function(self,_1ae,_1af){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1af]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1af+"'"); +} +return objj_msgSend(_themeAttributes[_1af],"valueForState:",_themeState); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(self,_1b0,_1b1){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(self,_1b2,_1b3){ +with(self){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +}),new objj_method(sel_getUid("layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:"),function(self,_1b4,_1b5,_1b6,_1b7){ +with(self){ +if(!_ephemeralSubviewsForNames){ +_ephemeralSubviewsForNames={}; +_ephemeralSubviews=objj_msgSend(CPSet,"set"); +} +var _1b8=objj_msgSend(self,"rectForEphemeralSubviewNamed:",_1b5); +if(_1b8&&!(_1b8.size.width<=0||_1b8.size.height<=0)){ +if(!_ephemeralSubviewsForNames[_1b5]){ +_ephemeralSubviewsForNames[_1b5]=objj_msgSend(self,"createEphemeralSubviewNamed:",_1b5); +objj_msgSend(_ephemeralSubviews,"addObject:",_ephemeralSubviewsForNames[_1b5]); +if(_ephemeralSubviewsForNames[_1b5]){ +objj_msgSend(self,"addSubview:positioned:relativeTo:",_ephemeralSubviewsForNames[_1b5],_1b6,_ephemeralSubviewsForNames[_1b7]); +} +} +if(_ephemeralSubviewsForNames[_1b5]){ +objj_msgSend(_ephemeralSubviewsForNames[_1b5],"setFrame:",_1b8); +} +}else{ +if(_ephemeralSubviewsForNames[_1b5]){ +objj_msgSend(_ephemeralSubviewsForNames[_1b5],"removeFromSuperview"); +objj_msgSend(_ephemeralSubviews,"removeObject:",_ephemeralSubviewsForNames[_1b5]); +delete _ephemeralSubviewsForNames[_1b5]; +} +} +return _ephemeralSubviewsForNames[_1b5]; +} +}),new objj_method(sel_getUid("ephemeralSubviewNamed:"),function(self,_1b9,_1ba){ +with(self){ +if(!_ephemeralSubviewsForNames){ +return nil; +} +return (_ephemeralSubviewsForNames[_1ba]||nil); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("themeClass"),function(self,_1bb){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("themeAttributes"),function(self,_1bc){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("_themeAttributes"),function(self,_1bd){ +with(self){ +if(!_2){ +_2={}; +} +var _1be=objj_msgSend(self,"class"),_1bf=objj_msgSend(CPView,"class"),_1c0=[],_1c1=objj_msgSend(CPNull,"null"); +for(;_1be&&_1be!==_1bf;_1be=objj_msgSend(_1be,"superclass")){ +var _1c2=_2[class_getName(_1be)]; +if(_1c2){ +_1c0=_1c0.length?_1c0.concat(_1c2):_1c0; +_2[objj_msgSend(self,"className")]=_1c0; +break; +} +var _1c3=objj_msgSend(_1be,"themeAttributes"); +if(!_1c3){ +continue; +} +var _1c4=objj_msgSend(_1c3,"allKeys"),_1c5=_1c4.length; +while(_1c5--){ +var _1c6=_1c4[_1c5],_1c7=objj_msgSend(_1c3,"objectForKey:",_1c6); +_1c0.push(_1c7===_1c1?nil:_1c7); +_1c0.push(_1c6); +} +} +return _1c0; +} +})]); +var _1c8="CPViewAutoresizingMask",_1c9="CPViewAutoresizesSubviews",_1ca="CPViewBackgroundColor",_1cb="CPViewBoundsKey",_1cc="CPViewFrameKey",_1cd="CPViewHitTestsKey",_1ce="CPViewIsHiddenKey",_1cf="CPViewOpacityKey",_1d0="CPViewSubviewsKey",_1d1="CPViewSuperviewKey",_1d2="CPViewTagKey",_1d3="CPViewThemeStateKey",_1d4="CPViewWindowKey",_1d5="CPViewNextKeyViewKey",_1d6="CPViewPreviousKeyViewKey"; +var _c=objj_getClass("CPView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("initWithCoder:"),function(self,_1d7,_1d8){ +with(self){ +_DOMElement=_3.cloneNode(false); +_frame=objj_msgSend(_1d8,"decodeRectForKey:",_1cc); +_bounds=objj_msgSend(_1d8,"decodeRectForKey:",_1cb); +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPView").super_class},"initWithCoder:",_1d8); +if(self){ +_tag=objj_msgSend(_1d8,"containsValueForKey:",_1d2)?objj_msgSend(_1d8,"decodeIntForKey:",_1d2):-1; +_window=objj_msgSend(_1d8,"decodeObjectForKey:",_1d4); +_subviews=objj_msgSend(_1d8,"decodeObjectForKey:",_1d0)||[]; +_superview=objj_msgSend(_1d8,"decodeObjectForKey:",_1d1); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_autoresizingMask=objj_msgSend(_1d8,"decodeIntForKey:",_1c8)||CPViewNotSizable; +_autoresizesSubviews=!objj_msgSend(_1d8,"containsValueForKey:",_1c9)||objj_msgSend(_1d8,"decodeBoolForKey:",_1c9); +_hitTests=!objj_msgSend(_1d8,"containsValueForKey:",_1cd)||objj_msgSend(_1d8,"decodeObjectForKey:",_1cd); +_DOMImageParts=[]; +_DOMImageSizes=[]; +if(NULL){ +var _1d9={x:CGPointMake((_frame.origin.x),(_frame.origin.y)).x*NULL.a+CGPointMake((_frame.origin.x),(_frame.origin.y)).y*NULL.c+NULL.tx,y:CGPointMake((_frame.origin.x),(_frame.origin.y)).x*NULL.b+CGPointMake((_frame.origin.x),(_frame.origin.y)).y*NULL.d+NULL.ty}; +}else{ +var _1d9={x:(_frame.origin.x),y:(_frame.origin.y)}; +} +_DOMElement.style.left=ROUND(_1d9.x)+"px"; +_DOMElement.style.top=ROUND(_1d9.y)+"px"; +_DOMElement.style.width=MAX(0,ROUND((_frame.size.width)))+"px"; +_DOMElement.style.height=MAX(0,ROUND((_frame.size.height)))+"px"; +var _1da=0,_1db=_subviews.length; +for(;_1da<_1db;++_1da){ +_DOMElement.appendChild(_subviews[_1da]._DOMElement); +} +if(objj_msgSend(_1d8,"containsValueForKey:",_1ce)){ +objj_msgSend(self,"setHidden:",objj_msgSend(_1d8,"decodeBoolForKey:",_1ce)); +}else{ +_isHidden=NO; +} +if(objj_msgSend(_1d8,"containsValueForKey:",_1cf)){ +objj_msgSend(self,"setAlphaValue:",objj_msgSend(_1d8,"decodeIntForKey:",_1cf)); +}else{ +_opacity=1; +} +objj_msgSend(self,"setBackgroundColor:",objj_msgSend(_1d8,"decodeObjectForKey:",_1ca)); +objj_msgSend(self,"setupViewFlags"); +_theme=objj_msgSend(CPTheme,"defaultTheme"); +_themeState=CPThemeState(objj_msgSend(_1d8,"decodeIntForKey:",_1d3)); +_themeAttributes={}; +var _1dc=objj_msgSend(self,"class"),_1dd=objj_msgSend(_1dc,"themeClass"),_1de=objj_msgSend(_1dc,"_themeAttributes"),_1db=_1de.length; +while(_1db--){ +var _1df=_1de[_1db--]; +_themeAttributes[_1df]=CPThemeAttributeDecode(_1d8,_1df,_1de[_1db],_theme,_1dd); +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_1e0,_1e1){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPView").super_class},"encodeWithCoder:",_1e1); +if(_tag!==-1){ +objj_msgSend(_1e1,"encodeInt:forKey:",_tag,_1d2); +} +objj_msgSend(_1e1,"encodeRect:forKey:",_frame,_1cc); +objj_msgSend(_1e1,"encodeRect:forKey:",_bounds,_1cb); +if(_window!==nil){ +objj_msgSend(_1e1,"encodeConditionalObject:forKey:",_window,_1d4); +} +var _1e2=objj_msgSend(_subviews,"count"),_1e3=_subviews; +if(_1e2>0&&objj_msgSend(_ephemeralSubviews,"count")>0){ +_1e3=objj_msgSend(_1e3,"copy"); +while(_1e2--){ +if(objj_msgSend(_ephemeralSubviews,"containsObject:",_1e3[_1e2])){ +_1e3.splice(_1e2,1); +} +} +} +if(_1e3.length>0){ +objj_msgSend(_1e1,"encodeObject:forKey:",_1e3,_1d0); +} +if(_superview!==nil){ +objj_msgSend(_1e1,"encodeConditionalObject:forKey:",_superview,_1d1); +} +if(_autoresizingMask!==CPViewNotSizable){ +objj_msgSend(_1e1,"encodeInt:forKey:",_autoresizingMask,_1c8); +} +if(!_autoresizesSubviews){ +objj_msgSend(_1e1,"encodeBool:forKey:",_autoresizesSubviews,_1c9); +} +if(_backgroundColor!==nil){ +objj_msgSend(_1e1,"encodeObject:forKey:",_backgroundColor,_1ca); +} +if(_hitTests!==YES){ +objj_msgSend(_1e1,"encodeBool:forKey:",_hitTests,_1cd); +} +if(_opacity!==1){ +objj_msgSend(_1e1,"encodeFloat:forKey:",_opacity,_1cf); +} +if(_isHidden){ +objj_msgSend(_1e1,"encodeBool:forKey:",_isHidden,_1ce); +} +var _1e4=objj_msgSend(self,"nextKeyView"); +if(_1e4!==nil){ +objj_msgSend(_1e1,"encodeConditionalObject:forKey:",_1e4,_1d5); +} +var _1e5=objj_msgSend(self,"previousKeyView"); +if(_1e5!==nil){ +objj_msgSend(_1e1,"encodeConditionalObject:forKey:",_1e5,_1d6); +} +objj_msgSend(_1e1,"encodeInt:forKey:",CPThemeStateName(_themeState),_1d3); +for(var _1e6 in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_1e6)){ +CPThemeAttributeEncode(_1e1,_themeAttributes[_1e6]); +} +} +} +})]); +var _b5=function(_1e7){ +var _1e8=_1e7._superview; +return {autoresizingMask:_1e7._autoresizingMask,frame:CGRectMakeCopy(_1e7._frame),index:(_1e8?objj_msgSend(_1e8._subviews,"indexOfObjectIdenticalTo:",_1e7):0),superview:_1e8}; +}; +var _10d=function(_1e9,_1ea){ +var _1eb=CGAffineTransformMakeIdentity(),_1ec=YES,_1ed=nil,_1ee=nil; +if(_1e9){ +var view=_1e9; +while(view&&view!=_1ea){ +var _1ef=view._frame; +_1eb.tx+=(_1ef.origin.x); +_1eb.ty+=(_1ef.origin.y); +if(view._boundsTransform){ +var tx=_1eb.tx*view._boundsTransform.a+_1eb.ty*view._boundsTransform.c+view._boundsTransform.tx; +_1eb.ty=_1eb.tx*view._boundsTransform.b+_1eb.ty*view._boundsTransform.d+view._boundsTransform.ty; +_1eb.tx=tx; +var a=_1eb.a*view._boundsTransform.a+_1eb.b*view._boundsTransform.c,b=_1eb.a*view._boundsTransform.b+_1eb.b*view._boundsTransform.d,c=_1eb.c*view._boundsTransform.a+_1eb.d*view._boundsTransform.c; +_1eb.d=_1eb.c*view._boundsTransform.b+_1eb.d*view._boundsTransform.d; +_1eb.a=a; +_1eb.b=b; +_1eb.c=c; +} +view=view._superview; +} +if(view===_1ea){ +return _1eb; +}else{ +if(_1e9&&_1ea){ +_1ed=objj_msgSend(_1e9,"window"); +_1ee=objj_msgSend(_1ea,"window"); +if(_1ed&&_1ee&&_1ed!==_1ee){ +_1ec=NO; +var _1ef=objj_msgSend(_1ed,"frame"); +_1eb.tx+=(_1ef.origin.x); +_1eb.ty+=(_1ef.origin.y); +} +} +} +} +var view=_1ea; +while(view){ +var _1ef=view._frame; +_1eb.tx-=(_1ef.origin.x); +_1eb.ty-=(_1ef.origin.y); +if(view._boundsTransform){ +var tx=_1eb.tx*view._inverseBoundsTransform.a+_1eb.ty*view._inverseBoundsTransform.c+view._inverseBoundsTransform.tx; +_1eb.ty=_1eb.tx*view._inverseBoundsTransform.b+_1eb.ty*view._inverseBoundsTransform.d+view._inverseBoundsTransform.ty; +_1eb.tx=tx; +var a=_1eb.a*view._inverseBoundsTransform.a+_1eb.b*view._inverseBoundsTransform.c,b=_1eb.a*view._inverseBoundsTransform.b+_1eb.b*view._inverseBoundsTransform.d,c=_1eb.c*view._inverseBoundsTransform.a+_1eb.d*view._inverseBoundsTransform.c; +_1eb.d=_1eb.c*view._inverseBoundsTransform.b+_1eb.d*view._inverseBoundsTransform.d; +_1eb.a=a; +_1eb.b=b; +_1eb.c=c; +} +view=view._superview; +} +if(!_1ec){ +var _1ef=objj_msgSend(_1ee,"frame"); +_1eb.tx-=(_1ef.origin.x); +_1eb.ty-=(_1ef.origin.y); +} +return _1eb; +}; +p;17;CPViewAnimation.jt;4854;@STATIC;1.0;I;20;AppKit/CPAnimation.jt;4810; +objj_executeFile("AppKit/CPAnimation.j",NO); +CPViewAnimationTargetKey="CPViewAnimationTarget"; +CPViewAnimationStartFrameKey="CPViewAnimationStartFrame"; +CPViewAnimationEndFrameKey="CPViewAnimationEndFrame"; +CPViewAnimationEffectKey="CPViewAnimationEffect"; +CPViewAnimationFadeInEffect="CPViewAnimationFadeIn"; +CPViewAnimationFadeOutEffect="CPViewAnimationFadeOut"; +var _1=objj_allocateClassPair(CPAnimation,"CPViewAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_viewAnimations")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithViewAnimations:"),function(_3,_4,_5){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPViewAnimation").super_class},"initWithDuration:animationCurve:",0.5,CPAnimationLinear)){ +objj_msgSend(_3,"setViewAnimations:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("startAnimation"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_viewAnimations,"count"); +while(_8--){ +var _9=objj_msgSend(_viewAnimations,"objectAtIndex:",_8),_a=objj_msgSend(_6,"_targetView:",_9),_b=objj_msgSend(_6,"_startFrame:",_9); +objj_msgSend(_a,"setFrame:",_b); +var _c=objj_msgSend(_6,"_effect:",_9); +if(_c===CPViewAnimationFadeInEffect){ +objj_msgSend(_a,"setAlphaValue:",0); +objj_msgSend(_a,"setHidden:",NO); +}else{ +if(_c===CPViewAnimationFadeOutEffect){ +objj_msgSend(_a,"setAlphaValue:",1); +} +} +} +objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPViewAnimation").super_class},"startAnimation"); +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(_d,_e,_f){ +with(_d){ +objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPViewAnimation").super_class},"setCurrentProgress:",_f); +var _10=objj_msgSend(_viewAnimations,"count"); +while(_10--){ +var _11=objj_msgSend(_viewAnimations,"objectAtIndex:",_10),_12=objj_msgSend(_d,"_targetView:",_11),_13=objj_msgSend(_d,"_startFrame:",_11),_14=objj_msgSend(_d,"_endFrame:",_11),_15={origin:{x:0,y:0},size:{width:0,height:0}}; +_15.origin.x=_14.origin.x-_13.origin.x; +_15.origin.y=_14.origin.y-_13.origin.y; +_15.size.width=_14.size.width-_13.size.width; +_15.size.height=_14.size.height-_13.size.height; +var _16={origin:{x:0,y:0},size:{width:0,height:0}}; +_16.origin.x=_13.origin.x+_15.origin.x*_f; +_16.origin.y=_13.origin.y+_15.origin.y*_f; +_16.size.width=_13.size.width+_15.size.width*_f; +_16.size.height=_13.size.height+_15.size.height*_f; +objj_msgSend(_12,"setFrame:",_16); +var _17=objj_msgSend(_d,"_effect:",_11); +if(_17===CPViewAnimationFadeInEffect){ +objj_msgSend(_12,"setAlphaValue:",1*_f); +}else{ +if(_17===CPViewAnimationFadeOutEffect){ +objj_msgSend(_12,"setAlphaValue:",1+(0-1)*_f); +} +} +if(_f===1){ +objj_msgSend(_12,"setHidden:",(_14.size.width<=0||_14.size.height<=0)||objj_msgSend(_12,"alphaValue")===0); +} +} +} +}),new objj_method(sel_getUid("stopAnimation"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_viewAnimations,"count"); +while(_1a--){ +var _1b=objj_msgSend(_viewAnimations,"objectAtIndex:",_1a),_1c=objj_msgSend(_18,"_targetView:",_1b),_1d=objj_msgSend(_18,"_endFrame:",_1b); +objj_msgSend(_1c,"setFrame:",_1d); +var _1e=objj_msgSend(_18,"_effect:",_1b); +if(_1e===CPViewAnimationFadeInEffect){ +objj_msgSend(_1c,"setAlphaValue:",1); +}else{ +if(_1e===CPViewAnimationFadeOutEffect){ +objj_msgSend(_1c,"setAlphaValue:",0); +} +} +objj_msgSend(_1c,"setHidden:",(_1d.size.width<=0||_1d.size.height<=0)||objj_msgSend(_1c,"alphaValue")===0); +} +objj_msgSendSuper({receiver:_18,super_class:objj_getClass("CPViewAnimation").super_class},"stopAnimation"); +} +}),new objj_method(sel_getUid("_targetView:"),function(_1f,_20,_21){ +with(_1f){ +var _22=objj_msgSend(_21,"valueForKey:",CPViewAnimationTargetKey); +if(!_22){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(CPString,"stringWithFormat:","view animation: %@ does not have a target view",objj_msgSend(_21,"description"))); +} +return _22; +} +}),new objj_method(sel_getUid("_startFrame:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_25,"valueForKey:",CPViewAnimationStartFrameKey); +if(!_26){ +return objj_msgSend(objj_msgSend(_23,"_targetView:",_25),"frame"); +} +return _26; +} +}),new objj_method(sel_getUid("_endFrame:"),function(_27,_28,_29){ +with(_27){ +var _2a=objj_msgSend(_29,"valueForKey:",CPViewAnimationEndFrameKey); +if(!_2a){ +return objj_msgSend(objj_msgSend(_27,"_targetView:",_29),"frame"); +} +return _2a; +} +}),new objj_method(sel_getUid("_effect:"),function(_2b,_2c,_2d){ +with(_2b){ +return objj_msgSend(_2d,"valueForKey:",CPViewAnimationEffectKey); +} +}),new objj_method(sel_getUid("viewAnimations"),function(_2e,_2f){ +with(_2e){ +return _viewAnimations; +} +}),new objj_method(sel_getUid("setViewAnimations:"),function(_30,_31,_32){ +with(_30){ +if(_32!=_viewAnimations){ +objj_msgSend(_30,"stopAnimation"); +_viewAnimations=objj_msgSend(_32,"copy"); +} +} +})]); +p;18;CPViewController.jt;5479;@STATIC;1.0;I;20;AppKit/CPResponder.jt;5435; +objj_executeFile("AppKit/CPResponder.j",NO); +var _1; +var _2=objj_allocateClassPair(CPResponder,"CPViewController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_view"),new objj_ivar("_isLoading"),new objj_ivar("_representedObject"),new objj_ivar("_title"),new objj_ivar("_cibName"),new objj_ivar("_cibBundle"),new objj_ivar("_cibExternalNameTable")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("view"),function(_4,_5){ +with(_4){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_6,_7,_8){ +with(_6){ +_view=_8; +} +}),new objj_method(sel_getUid("representedObject"),function(_9,_a){ +with(_9){ +return _representedObject; +} +}),new objj_method(sel_getUid("setRepresentedObject:"),function(_b,_c,_d){ +with(_b){ +_representedObject=_d; +} +}),new objj_method(sel_getUid("title"),function(_e,_f){ +with(_e){ +return _title; +} +}),new objj_method(sel_getUid("setTitle:"),function(_10,_11,_12){ +with(_10){ +_title=_12; +} +}),new objj_method(sel_getUid("cibName"),function(_13,_14){ +with(_13){ +return _cibName; +} +}),new objj_method(sel_getUid("cibBundle"),function(_15,_16){ +with(_15){ +return _cibBundle; +} +}),new objj_method(sel_getUid("cibExternalNameTable"),function(_17,_18){ +with(_17){ +return _cibExternalNameTable; +} +}),new objj_method(sel_getUid("init"),function(_19,_1a){ +with(_19){ +return objj_msgSend(_19,"initWithCibName:bundle:",nil,nil); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +return objj_msgSend(_1b,"initWithCibName:bundle:externalNameTable:",_1d,_1e,nil); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:owner:"),function(_1f,_20,_21,_22,_23){ +with(_1f){ +return objj_msgSend(_1f,"initWithCibName:bundle:externalNameTable:",_21,_22,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_23,CPCibOwner)); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:externalNameTable:"),function(_24,_25,_26,_27,_28){ +with(_24){ +_24=objj_msgSendSuper({receiver:_24,super_class:objj_getClass("CPViewController").super_class},"init"); +if(_24){ +_cibName=_26; +_cibBundle=_27||objj_msgSend(CPBundle,"mainBundle"); +_cibExternalNameTable=_28||objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_24,CPCibOwner); +_isLoading=NO; +} +return _24; +} +}),new objj_method(sel_getUid("loadView"),function(_29,_2a){ +with(_29){ +if(_view){ +return; +} +var cib=objj_msgSend(_1,"objectForKey:",_cibName); +if(!cib){ +cib=objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",objj_msgSend(_cibBundle,"pathForResource:",_cibName+".cib")); +objj_msgSend(_1,"setObject:forKey:",cib,_cibName); +} +objj_msgSend(cib,"instantiateCibWithExternalNameTable:",_cibExternalNameTable); +} +}),new objj_method(sel_getUid("view"),function(_2b,_2c){ +with(_2b){ +if(!_view){ +_isLoading=YES; +var _2d=objj_msgSend(_cibExternalNameTable,"objectForKey:",CPCibOwner); +if(objj_msgSend(_2d,"respondsToSelector:",sel_getUid("viewControllerWillLoadCib:"))){ +objj_msgSend(_2d,"viewControllerWillLoadCib:",_2b); +} +objj_msgSend(_2b,"loadView"); +if(_view===nil&&objj_msgSend(_2d,"isKindOfClass:",objj_msgSend(CPDocument,"class"))){ +objj_msgSend(_2b,"setView:",objj_msgSend(_2d,"valueForKey:","view")); +} +if(!_view){ +var _2e=objj_msgSend(CPString,"stringWithFormat:","View for %@ could not be loaded from Cib or no view specified. Override loadView to load the view manually.",_2b); +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,_2e); +} +if(objj_msgSend(_2d,"respondsToSelector:",sel_getUid("viewControllerDidLoadCib:"))){ +objj_msgSend(_2d,"viewControllerDidLoadCib:",_2b); +} +_isLoading=NO; +objj_msgSend(_2b,"viewDidLoad"); +} +return _view; +} +}),new objj_method(sel_getUid("viewDidLoad"),function(_2f,_30){ +with(_2f){ +} +}),new objj_method(sel_getUid("setView:"),function(_31,_32,_33){ +with(_31){ +var _34=!_view; +_view=_33; +if(!_isLoading&&_34){ +objj_msgSend(_31,"viewDidLoad"); +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_35,_36){ +with(_35){ +if(_35===CPViewController){ +_1=objj_msgSend(CPDictionary,"dictionary"); +} +} +})]); +var _37="CPViewControllerViewKey",_38="CPViewControllerTitleKey",_39="CPViewControllerCibNameKey",_3a="CPViewControllerBundleKey"; +var _2=objj_getClass("CPViewController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPViewController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_3b,_3c,_3d){ +with(_3b){ +_3b=objj_msgSendSuper({receiver:_3b,super_class:objj_getClass("CPViewController").super_class},"initWithCoder:",_3d); +if(_3b){ +_view=objj_msgSend(_3d,"decodeObjectForKey:",_37); +_title=objj_msgSend(_3d,"decodeObjectForKey:",_38); +_cibName=objj_msgSend(_3d,"decodeObjectForKey:",_39); +var _3e=objj_msgSend(_3d,"decodeObjectForKey:",_3a); +_cibBundle=_3e?objj_msgSend(CPBundle,"bundleWithPath:",_3e):objj_msgSend(CPBundle,"mainBundle"); +_cibExternalNameTable=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_3b,CPCibOwner); +} +return _3b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_3f,_40,_41){ +with(_3f){ +objj_msgSendSuper({receiver:_3f,super_class:objj_getClass("CPViewController").super_class},"encodeWithCoder:",_41); +objj_msgSend(_41,"encodeObject:forKey:",_view,_37); +objj_msgSend(_41,"encodeObject:forKey:",_title,_38); +objj_msgSend(_41,"encodeObject:forKey:",_cibName,_39); +objj_msgSend(_41,"encodeObject:forKey:",objj_msgSend(_cibBundle,"bundlePath"),_3a); +} +})]); +p;11;CPWebView.jt;14450;@STATIC;1.0;I;15;AppKit/CPView.jt;14410; +objj_executeFile("AppKit/CPView.j",NO); +CPWebViewProgressStartedNotification="CPWebViewProgressStartedNotification"; +CPWebViewProgressFinishedNotification="CPWebViewProgressFinishedNotification"; +CPWebViewScrollAppKit=1; +CPWebViewScrollNative=2; +var _1=objj_allocateClassPair(CPView,"CPWebView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_scrollView"),new objj_ivar("_frameView"),new objj_ivar("_iframe"),new objj_ivar("_mainFrameURL"),new objj_ivar("_backwardStack"),new objj_ivar("_forwardStack"),new objj_ivar("_ignoreLoadStart"),new objj_ivar("_ignoreLoadEnd"),new objj_ivar("_downloadDelegate"),new objj_ivar("_frameLoadDelegate"),new objj_ivar("_policyDelegate"),new objj_ivar("_resourceLoadDelegate"),new objj_ivar("_UIDelegate"),new objj_ivar("_wso"),new objj_ivar("_url"),new objj_ivar("_html"),new objj_ivar("_loadCallback"),new objj_ivar("_scrollMode"),new objj_ivar("_scrollSize"),new objj_ivar("_loadHTMLStringTimer")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:frameName:groupName:"),function(_3,_4,_5,_6,_7){ +with(_3){ +if(_3=objj_msgSend(_3,"initWithFrame:",_5)){ +_iframe.name=_6; +} +return _3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +if(_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPWebView").super_class},"initWithFrame:",_a)){ +_mainFrameURL=nil; +_backwardStack=[]; +_forwardStack=[]; +_scrollMode=CPWebViewScrollNative; +objj_msgSend(_8,"_initDOMWithFrame:",_a); +} +return _8; +} +}),new objj_method(sel_getUid("_initDOMWithFrame:"),function(_b,_c,_d){ +with(_b){ +_ignoreLoadStart=YES; +_ignoreLoadEnd=YES; +_iframe=document.createElement("iframe"); +_iframe.name="iframe_"+Math.floor(Math.random()*10000); +_iframe.style.width="100%"; +_iframe.style.height="100%"; +_iframe.style.borderWidth="0px"; +_iframe.frameBorder="0"; +objj_msgSend(_b,"setDrawsBackground:",YES); +_loadCallback=function(){ +if(!_ignoreLoadStart){ +objj_msgSend(_b,"_startedLoading"); +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=_iframe.src; +_mainFrameURL=_iframe.src; +objj_msgSend(_forwardStack,"removeAllObjects"); +}else{ +_ignoreLoadStart=NO; +} +if(!_ignoreLoadEnd){ +objj_msgSend(_b,"_finishedLoading"); +}else{ +_ignoreLoadEnd=NO; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +}; +if(_iframe.addEventListener){ +_iframe.addEventListener("load",_loadCallback,false); +}else{ +if(_iframe.attachEvent){ +_iframe.attachEvent("onload",_loadCallback); +} +} +_frameView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",objj_msgSend(_b,"bounds")); +objj_msgSend(_frameView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_scrollView=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",objj_msgSend(_b,"bounds")); +objj_msgSend(_scrollView,"setAutohidesScrollers:",YES); +objj_msgSend(_scrollView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_scrollView,"setDocumentView:",_frameView); +_frameView._DOMElement.appendChild(_iframe); +objj_msgSend(_b,"_setScrollMode:",_scrollMode); +objj_msgSend(_b,"addSubview:",_scrollView); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_e,_f,_10){ +with(_e){ +objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPWebView").super_class},"setFrameSize:",_10); +objj_msgSend(_e,"_resizeWebFrame"); +} +}),new objj_method(sel_getUid("_attachScrollEventIfNecessary"),function(_11,_12){ +with(_11){ +if(_scrollMode!==CPWebViewScrollAppKit){ +return; +} +var win=null; +try{ +win=objj_msgSend(_11,"DOMWindow"); +} +catch(e){ +} +if(win&&win.addEventListener){ +var _13=function(_14){ +var _15=objj_msgSend(_11,"bounds"),_16=CGPointMake(CGRectGetMidX(_15),CGRectGetMidY(_15)),_17=objj_msgSend(_11,"convertPoint:toView:",_16,nil),_18=objj_msgSend(objj_msgSend(_11,"window"),"convertBaseToBridge:",_17); +_14._overrideLocation=_18; +objj_msgSend(objj_msgSend(objj_msgSend(_11,"window"),"platformWindow"),"scrollEvent:",_14); +}; +win.addEventListener("DOMMouseScroll",_13,false); +} +} +}),new objj_method(sel_getUid("_resizeWebFrame"),function(_19,_1a){ +with(_19){ +if(_scrollMode===CPWebViewScrollAppKit){ +if(_scrollSize){ +objj_msgSend(_frameView,"setFrameSize:",_scrollSize); +}else{ +var _1b=objj_msgSend(_frameView,"visibleRect"); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(CGRectGetMaxX(_1b),CGRectGetMaxY(_1b))); +var win=null; +try{ +win=objj_msgSend(_19,"DOMWindow"); +} +catch(e){ +} +if(win&&win.document&&win.document.body){ +var _1c=win.document.body.scrollWidth,_1d=win.document.body.scrollHeight; +_iframe.setAttribute("width",_1c); +_iframe.setAttribute("height",_1d); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(_1c,_1d)); +}else{ +CPLog.warn("using default size 800*1600"); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(800,1600)); +} +objj_msgSend(_frameView,"scrollRectToVisible:",_1b); +} +} +} +}),new objj_method(sel_getUid("setScrollMode:"),function(_1e,_1f,_20){ +with(_1e){ +if(_scrollMode==_20){ +return; +} +objj_msgSend(_1e,"_setScrollMode:",_20); +} +}),new objj_method(sel_getUid("_setScrollMode:"),function(_21,_22,_23){ +with(_21){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +_scrollMode=CPWebViewScrollNative; +}else{ +_scrollMode=_23; +} +_ignoreLoadStart=YES; +_ignoreLoadEnd=YES; +var _24=_iframe.parentNode; +_24.removeChild(_iframe); +if(_scrollMode===CPWebViewScrollAppKit){ +objj_msgSend(_scrollView,"setHasHorizontalScroller:",YES); +objj_msgSend(_scrollView,"setHasVerticalScroller:",YES); +_iframe.setAttribute("scrolling","no"); +}else{ +objj_msgSend(_scrollView,"setHasHorizontalScroller:",NO); +objj_msgSend(_scrollView,"setHasVerticalScroller:",NO); +_iframe.setAttribute("scrolling","auto"); +objj_msgSend(_frameView,"setFrameSize:",objj_msgSend(_scrollView,"bounds").size); +} +_24.appendChild(_iframe); +} +}),new objj_method(sel_getUid("loadHTMLString:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_25,"loadHTMLString:baseURL:",_27,nil); +} +}),new objj_method(sel_getUid("loadHTMLString:baseURL:"),function(_28,_29,_2a,URL){ +with(_28){ +objj_msgSend(_28,"_setScrollMode:",CPWebViewScrollAppKit); +objj_msgSend(_frameView,"setFrameSize:",objj_msgSend(_scrollView,"contentSize")); +objj_msgSend(_28,"_startedLoading"); +_ignoreLoadStart=YES; +_ignoreLoadEnd=NO; +_url=null; +_html=_2a; +objj_msgSend(_28,"_load"); +} +}),new objj_method(sel_getUid("_loadMainFrameURL"),function(_2b,_2c){ +with(_2b){ +objj_msgSend(_2b,"_setScrollMode:",CPWebViewScrollNative); +objj_msgSend(_2b,"_startedLoading"); +_ignoreLoadStart=YES; +_ignoreLoadEnd=NO; +_url=_mainFrameURL; +_html=null; +objj_msgSend(_2b,"_load"); +} +}),new objj_method(sel_getUid("_load"),function(_2d,_2e){ +with(_2d){ +if(_url){ +_iframe.src=_url; +}else{ +if(_html){ +_iframe.src=""; +if(_loadHTMLStringTimer!==nil){ +window.clearTimeout(_loadHTMLStringTimer); +_loadHTMLStringTimer=nil; +} +_loadHTMLStringTimer=window.setTimeout(function(){ +var win=objj_msgSend(_2d,"DOMWindow"); +if(win){ +win.document.write(_html); +} +window.setTimeout(_loadCallback,1); +},0); +} +} +} +}),new objj_method(sel_getUid("_startedLoading"),function(_2f,_30){ +with(_2f){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWebViewProgressStartedNotification,_2f); +if(objj_msgSend(_frameLoadDelegate,"respondsToSelector:",sel_getUid("webView:didStartProvisionalLoadForFrame:"))){ +objj_msgSend(_frameLoadDelegate,"webView:didStartProvisionalLoadForFrame:",_2f,nil); +} +} +}),new objj_method(sel_getUid("_finishedLoading"),function(_31,_32){ +with(_31){ +objj_msgSend(_31,"_resizeWebFrame"); +objj_msgSend(_31,"_attachScrollEventIfNecessary"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWebViewProgressFinishedNotification,_31); +if(objj_msgSend(_frameLoadDelegate,"respondsToSelector:",sel_getUid("webView:didFinishLoadForFrame:"))){ +objj_msgSend(_frameLoadDelegate,"webView:didFinishLoadForFrame:",_31,nil); +} +} +}),new objj_method(sel_getUid("mainFrameURL"),function(_33,_34){ +with(_33){ +return _mainFrameURL; +} +}),new objj_method(sel_getUid("setMainFrameURL:"),function(_35,_36,_37){ +with(_35){ +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=_37; +objj_msgSend(_forwardStack,"removeAllObjects"); +objj_msgSend(_35,"_loadMainFrameURL"); +} +}),new objj_method(sel_getUid("goBack"),function(_38,_39){ +with(_38){ +if(_backwardStack.length>0){ +if(_mainFrameURL){ +objj_msgSend(_forwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=objj_msgSend(_backwardStack,"lastObject"); +objj_msgSend(_backwardStack,"removeLastObject"); +objj_msgSend(_38,"_loadMainFrameURL"); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("goForward"),function(_3a,_3b){ +with(_3a){ +if(_forwardStack.length>0){ +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=objj_msgSend(_forwardStack,"lastObject"); +objj_msgSend(_forwardStack,"removeLastObject"); +objj_msgSend(_3a,"_loadMainFrameURL"); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("canGoBack"),function(_3c,_3d){ +with(_3c){ +return (_backwardStack.length>0); +} +}),new objj_method(sel_getUid("canGoForward"),function(_3e,_3f){ +with(_3e){ +return (_forwardStack.length>0); +} +}),new objj_method(sel_getUid("backForwardList"),function(_40,_41){ +with(_40){ +return {back:_backwardStack,forward:_forwardStack}; +} +}),new objj_method(sel_getUid("close"),function(_42,_43){ +with(_42){ +_iframe.parentNode.removeChild(_iframe); +} +}),new objj_method(sel_getUid("DOMWindow"),function(_44,_45){ +with(_44){ +return (_iframe.contentDocument&&_iframe.contentDocument.defaultView)||_iframe.contentWindow; +} +}),new objj_method(sel_getUid("windowScriptObject"),function(_46,_47){ +with(_46){ +var win=objj_msgSend(_46,"DOMWindow"); +if(!_wso||win!=objj_msgSend(_wso,"window")){ +if(win){ +_wso=objj_msgSend(objj_msgSend(CPWebScriptObject,"alloc"),"initWithWindow:",win); +}else{ +_wso=nil; +} +} +return _wso; +} +}),new objj_method(sel_getUid("stringByEvaluatingJavaScriptFromString:"),function(_48,_49,_4a){ +with(_48){ +var _4b=objj_msgSend(_48,"objectByEvaluatingJavaScriptFromString:",_4a); +return _4b?String(_4b):nil; +} +}),new objj_method(sel_getUid("objectByEvaluatingJavaScriptFromString:"),function(_4c,_4d,_4e){ +with(_4c){ +return objj_msgSend(objj_msgSend(_4c,"windowScriptObject"),"evaluateWebScript:",_4e); +} +}),new objj_method(sel_getUid("computedStyleForElement:pseudoElement:"),function(_4f,_50,_51,_52){ +with(_4f){ +var win=objj_msgSend(objj_msgSend(_4f,"windowScriptObject"),"window"); +if(win){ +return win.document.defaultView.getComputedStyle(_51,_52); +} +return nil; +} +}),new objj_method(sel_getUid("drawsBackground"),function(_53,_54){ +with(_53){ +return _iframe.style.backgroundColor!=""; +} +}),new objj_method(sel_getUid("setDrawsBackground:"),function(_55,_56,_57){ +with(_55){ +_iframe.style.backgroundColor=_57?"white":""; +} +}),new objj_method(sel_getUid("takeStringURLFrom:"),function(_58,_59,_5a){ +with(_58){ +objj_msgSend(_58,"setMainFrameURL:",objj_msgSend(_5a,"stringValue")); +} +}),new objj_method(sel_getUid("goBack:"),function(_5b,_5c,_5d){ +with(_5b){ +objj_msgSend(_5b,"goBack"); +} +}),new objj_method(sel_getUid("goForward:"),function(_5e,_5f,_60){ +with(_5e){ +objj_msgSend(_5e,"goForward"); +} +}),new objj_method(sel_getUid("stopLoading:"),function(_61,_62,_63){ +with(_61){ +} +}),new objj_method(sel_getUid("reload:"),function(_64,_65,_66){ +with(_64){ +objj_msgSend(_64,"_loadMainFrameURL"); +} +}),new objj_method(sel_getUid("print:"),function(_67,_68,_69){ +with(_67){ +try{ +objj_msgSend(_67,"DOMWindow").print(); +} +catch(e){ +alert("Please click the webpage and select \"Print\" from the \"File\" menu"); +} +} +}),new objj_method(sel_getUid("downloadDelegate"),function(_6a,_6b){ +with(_6a){ +return _downloadDelegate; +} +}),new objj_method(sel_getUid("setDownloadDelegate:"),function(_6c,_6d,_6e){ +with(_6c){ +_downloadDelegate=_6e; +} +}),new objj_method(sel_getUid("frameLoadDelegate"),function(_6f,_70){ +with(_6f){ +return _frameLoadDelegate; +} +}),new objj_method(sel_getUid("setFrameLoadDelegate:"),function(_71,_72,_73){ +with(_71){ +_frameLoadDelegate=_73; +} +}),new objj_method(sel_getUid("policyDelegate"),function(_74,_75){ +with(_74){ +return _policyDelegate; +} +}),new objj_method(sel_getUid("setPolicyDelegate:"),function(_76,_77,_78){ +with(_76){ +_policyDelegate=_78; +} +}),new objj_method(sel_getUid("resourceLoadDelegate"),function(_79,_7a){ +with(_79){ +return _resourceLoadDelegate; +} +}),new objj_method(sel_getUid("setResourceLoadDelegate:"),function(_7b,_7c,_7d){ +with(_7b){ +_resourceLoadDelegate=_7d; +} +}),new objj_method(sel_getUid("UIDelegate"),function(_7e,_7f){ +with(_7e){ +return _UIDelegate; +} +}),new objj_method(sel_getUid("setUIDelegate:"),function(_80,_81,_82){ +with(_80){ +_UIDelegate=_82; +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPWebScriptObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_window")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithWindow:"),function(_83,_84,_85){ +with(_83){ +if(_83=objj_msgSendSuper({receiver:_83,super_class:objj_getClass("CPWebScriptObject").super_class},"init")){ +_window=_85; +} +return _83; +} +}),new objj_method(sel_getUid("callWebScriptMethod:withArguments:"),function(_86,_87,_88,_89){ +with(_86){ +if(typeof _window[_88]=="function"){ +try{ +return _window[_88].apply(_89); +} +catch(e){ +} +} +return undefined; +} +}),new objj_method(sel_getUid("evaluateWebScript:"),function(_8a,_8b,_8c){ +with(_8a){ +try{ +return _window.eval(_8c); +} +catch(e){ +} +return undefined; +} +}),new objj_method(sel_getUid("window"),function(_8d,_8e){ +with(_8d){ +return _window; +} +})]); +var _1=objj_getClass("CPWebView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPWebView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_8f,_90,_91){ +with(_8f){ +_8f=objj_msgSendSuper({receiver:_8f,super_class:objj_getClass("CPWebView").super_class},"initWithCoder:",_91); +if(_8f){ +_mainFrameURL=nil; +_backwardStack=[]; +_forwardStack=[]; +_scrollMode=CPWebViewScrollNative; +objj_msgSend(_8f,"_initDOMWithFrame:",objj_msgSend(_8f,"frame")); +objj_msgSend(_8f,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +} +return _8f; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_92,_93,_94){ +with(_92){ +var _95=_subviews; +_subviews=[]; +objj_msgSendSuper({receiver:_92,super_class:objj_getClass("CPWebView").super_class},"encodeWithCoder:",_94); +_subviews=_95; +} +})]); +p;20;CPWindowController.jt;9176;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;13;CPResponder.ji;10;CPWindow.ji;12;CPDocument.jt;9055; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPWindow.j",YES); +objj_executeFile("CPDocument.j",YES); +var _1=objj_allocateClassPair(CPResponder,"CPWindowController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_window"),new objj_ivar("_documents"),new objj_ivar("_document"),new objj_ivar("_shouldCloseDocument"),new objj_ivar("_supportsMultipleDocuments"),new objj_ivar("_cibOwner"),new objj_ivar("_windowCibName"),new objj_ivar("_windowCibPath"),new objj_ivar("_viewController"),new objj_ivar("_viewControllerContainerView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithWindow:",nil); +} +}),new objj_method(sel_getUid("initWithWindow:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPWindowController").super_class},"init"); +if(_5){ +objj_msgSend(_5,"setWindow:",_7); +objj_msgSend(_5,"setShouldCloseDocument:",NO); +objj_msgSend(_5,"setNextResponder:",CPApp); +_documents=[]; +} +return _5; +} +}),new objj_method(sel_getUid("initWithWindowCibName:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(_8,"initWithWindowCibName:owner:",_a,_8); +} +}),new objj_method(sel_getUid("initWithWindowCibName:owner:"),function(_b,_c,_d,_e){ +with(_b){ +_b=objj_msgSend(_b,"initWithWindow:",nil); +if(_b){ +_cibOwner=_e; +_windowCibName=_d; +} +return _b; +} +}),new objj_method(sel_getUid("initWithWindowCibPath:owner:"),function(_f,_10,_11,_12){ +with(_f){ +_f=objj_msgSend(_f,"initWithWindow:",nil); +if(_f){ +_cibOwner=_12; +_windowCibPath=_11; +} +return _f; +} +}),new objj_method(sel_getUid("loadWindow"),function(_13,_14){ +with(_13){ +if(_window){ +return; +} +objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"loadCibFile:externalNameTable:",objj_msgSend(_13,"windowCibPath"),objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_cibOwner,CPCibOwner)); +} +}),new objj_method(sel_getUid("showWindow:"),function(_15,_16,_17){ +with(_15){ +var _18=objj_msgSend(_15,"window"); +if(objj_msgSend(_18,"respondsToSelector:",sel_getUid("becomesKeyOnlyIfNeeded"))&&objj_msgSend(_18,"becomesKeyOnlyIfNeeded")){ +objj_msgSend(_18,"orderFront:",_17); +}else{ +objj_msgSend(_18,"makeKeyAndOrderFront:",_17); +} +} +}),new objj_method(sel_getUid("isWindowLoaded"),function(_19,_1a){ +with(_19){ +return _window!==nil; +} +}),new objj_method(sel_getUid("window"),function(_1b,_1c){ +with(_1b){ +if(!_window){ +objj_msgSend(_1b,"windowWillLoad"); +objj_msgSend(_document,"windowControllerWillLoadCib:",_1b); +objj_msgSend(_1b,"loadWindow"); +if(_window===nil&&objj_msgSend(_cibOwner,"isKindOfClass:",objj_msgSend(CPDocument,"class"))){ +objj_msgSend(_1b,"setWindow:",objj_msgSend(_cibOwner,"valueForKey:","window")); +} +if(!_window){ +var _1d=objj_msgSend(CPString,"stringWithFormat:","Window for %@ could not be loaded from Cib or no window specified. Override loadWindow to load the window manually.",_1b); +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,_1d); +} +objj_msgSend(_1b,"windowDidLoad"); +objj_msgSend(_document,"windowControllerDidLoadCib:",_1b); +objj_msgSend(_1b,"synchronizeWindowTitleWithDocumentName"); +} +return _window; +} +}),new objj_method(sel_getUid("setWindow:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_window,"setWindowController:",nil); +_window=_20; +objj_msgSend(_window,"setWindowController:",_1e); +objj_msgSend(_window,"setNextResponder:",_1e); +} +}),new objj_method(sel_getUid("windowDidLoad"),function(_21,_22){ +with(_21){ +} +}),new objj_method(sel_getUid("windowWillLoad"),function(_23,_24){ +with(_23){ +} +}),new objj_method(sel_getUid("setDocument:"),function(_25,_26,_27){ +with(_25){ +if(_document===_27){ +return; +} +var _28=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_document){ +if(!objj_msgSend(_25,"supportsMultipleDocuments")){ +objj_msgSend(_25,"removeDocument:",_document); +} +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentWillSaveNotification,_document); +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentDidSaveNotification,_document); +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentDidFailToSaveNotification,_document); +} +_document=_27; +if(_document){ +objj_msgSend(_25,"addDocument:",_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentWillSave:"),CPDocumentWillSaveNotification,_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentDidSave:"),CPDocumentDidSaveNotification,_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentDidFailToSave:"),CPDocumentDidFailToSaveNotification,_document); +objj_msgSend(_25,"setDocumentEdited:",objj_msgSend(_document,"isDocumentEdited")); +} +var _29=objj_msgSend(_document,"viewControllerForWindowController:",_25); +if(_29){ +objj_msgSend(_25,"setViewController:",_29); +} +objj_msgSend(_25,"synchronizeWindowTitleWithDocumentName"); +} +}),new objj_method(sel_getUid("setSupportsMultipleDocuments:"),function(_2a,_2b,_2c){ +with(_2a){ +_supportsMultipleDocuments=_2c; +} +}),new objj_method(sel_getUid("supportsMultipleDocuments"),function(_2d,_2e){ +with(_2d){ +return _supportsMultipleDocuments; +} +}),new objj_method(sel_getUid("addDocument:"),function(_2f,_30,_31){ +with(_2f){ +if(_31&&!objj_msgSend(_documents,"containsObject:",_31)){ +objj_msgSend(_documents,"addObject:",_31); +} +} +}),new objj_method(sel_getUid("removeDocument:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_documents,"indexOfObjectIdenticalTo:",_34); +if(_35===CPNotFound){ +return; +} +objj_msgSend(_documents,"removeObjectAtIndex:",_35); +if(_document===_34&&objj_msgSend(_documents,"count")){ +objj_msgSend(_32,"setDocument:",objj_msgSend(_documents,"objectAtIndex:",MIN(_35,objj_msgSend(_documents,"count")-1))); +} +} +}),new objj_method(sel_getUid("removeDocumentAndCloseIfNecessary:"),function(_36,_37,_38){ +with(_36){ +objj_msgSend(_36,"removeDocument:",_38); +if(!objj_msgSend(_documents,"count")){ +objj_msgSend(_36,"close"); +} +} +}),new objj_method(sel_getUid("documents"),function(_39,_3a){ +with(_39){ +return _documents; +} +}),new objj_method(sel_getUid("setViewControllerContainerView:"),function(_3b,_3c,_3d){ +with(_3b){ +_viewControllerContainerView=_3d; +} +}),new objj_method(sel_getUid("viewControllerContainerView"),function(_3e,_3f){ +with(_3e){ +return _viewControllerContainerView; +} +}),new objj_method(sel_getUid("setViewController:"),function(_40,_41,_42){ +with(_40){ +var _43=objj_msgSend(_40,"viewControllerContainerView")||objj_msgSend(objj_msgSend(_40,"window"),"contentView"),_44=objj_msgSend(_viewController,"view"),_45=_44?objj_msgSend(_44,"frame"):objj_msgSend(_43,"bounds"); +objj_msgSend(_44,"removeFromSuperview"); +_viewController=_42; +_44=objj_msgSend(_viewController,"view"); +if(_44){ +objj_msgSend(_44,"setFrame:",_45); +objj_msgSend(_43,"addSubview:",_44); +} +} +}),new objj_method(sel_getUid("viewController"),function(_46,_47){ +with(_46){ +return _viewController; +} +}),new objj_method(sel_getUid("_documentWillSave:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(objj_msgSend(_48,"window"),"setDocumentSaving:",YES); +} +}),new objj_method(sel_getUid("_documentDidSave:"),function(_4b,_4c,_4d){ +with(_4b){ +objj_msgSend(objj_msgSend(_4b,"window"),"setDocumentSaving:",NO); +} +}),new objj_method(sel_getUid("_documentDidFailToSave:"),function(_4e,_4f,_50){ +with(_4e){ +objj_msgSend(objj_msgSend(_4e,"window"),"setDocumentSaving:",NO); +} +}),new objj_method(sel_getUid("document"),function(_51,_52){ +with(_51){ +return _document; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_53,_54,_55){ +with(_53){ +objj_msgSend(objj_msgSend(_53,"window"),"setDocumentEdited:",_55); +} +}),new objj_method(sel_getUid("close"),function(_56,_57){ +with(_56){ +objj_msgSend(objj_msgSend(_56,"window"),"close"); +} +}),new objj_method(sel_getUid("setShouldCloseDocument:"),function(_58,_59,_5a){ +with(_58){ +_shouldCloseDocument=_5a; +} +}),new objj_method(sel_getUid("shouldCloseDocument"),function(_5b,_5c){ +with(_5b){ +return _shouldCloseDocument; +} +}),new objj_method(sel_getUid("owner"),function(_5d,_5e){ +with(_5d){ +return _cibOwner; +} +}),new objj_method(sel_getUid("windowCibName"),function(_5f,_60){ +with(_5f){ +if(_windowCibName){ +return _windowCibName; +} +return objj_msgSend(objj_msgSend(_windowCibPath,"lastPathComponent"),"stringByDeletingPathExtension"); +} +}),new objj_method(sel_getUid("windowCibPath"),function(_61,_62){ +with(_61){ +if(_windowCibPath){ +return _windowCibPath; +} +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_windowCibName+".cib"); +} +}),new objj_method(sel_getUid("synchronizeWindowTitleWithDocumentName"),function(_63,_64){ +with(_63){ +if(!_document||!_window){ +return; +} +objj_msgSend(_window,"setTitle:",objj_msgSend(_63,"windowTitleForDocumentDisplayName:",objj_msgSend(_document,"displayName"))); +} +}),new objj_method(sel_getUid("windowTitleForDocumentDisplayName:"),function(_65,_66,_67){ +with(_65){ +return _67; +} +})]); +p;20;_CPCibClassSwapper.jt;1345;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1274; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="_CPCibClassSwapperClassNameKey",_2="_CPCibClassSwapperOriginalClassNameKey"; +var _3=objj_allocateClassPair(CPObject,"_CPCibClassSwapper"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_4,[new objj_method(sel_getUid("allocObjectWithCoder:className:"),function(_5,_6,_7,_8){ +with(_5){ +var _9=objj_msgSend(_7,"classForClassName:",_8); +if(!_9){ +_9=objj_lookUpClass(_8); +if(!_9){ +return nil; +} +} +return objj_msgSend(_9,"alloc"); +} +}),new objj_method(sel_getUid("allocWithCoder:"),function(_a,_b,_c){ +with(_a){ +if(objj_msgSend(_c,"respondsToSelector:",sel_getUid("usesOriginalClasses"))&&objj_msgSend(_c,"usesOriginalClasses")){ +var _d=objj_msgSend(_c,"decodeObjectForKey:",_2),_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,_d); +}else{ +var _d=objj_msgSend(_c,"decodeObjectForKey:",_1),_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,_d); +if(!_e){ +CPLog.error("Unable to find class "+_d+" in cib file."); +_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,objj_msgSend(_c,"decodeObjectForKey:",_2)); +} +} +if(!_e){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unable to find class "+_d+" in cib file."); +} +return _e; +} +})]); +p;20;_CPCibCustomObject.jt;1717;@STATIC;1.0;I;21;Foundation/CPObject.jt;1672; +objj_executeFile("Foundation/CPObject.j",NO); +var _1="_CPCibCustomObjectClassName"; +var _2=objj_allocateClassPair(CPObject,"_CPCibCustomObject"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_className")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("customClassName"),function(_4,_5){ +with(_4){ +return _className; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_6,_7,_8){ +with(_6){ +_className=_8; +} +}),new objj_method(sel_getUid("description"),function(_9,_a){ +with(_9){ +return objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPCibCustomObject").super_class},"description")+" ("+objj_msgSend(_9,"customClassName")+")"; +} +})]); +var _2=objj_getClass("_CPCibCustomObject"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomObject\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("_CPCibCustomObject").super_class},"init"); +if(_b){ +_className=objj_msgSend(_d,"decodeObjectForKey:",_1); +} +return _b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e,_f,_10){ +with(_e){ +objj_msgSend(_10,"encodeObject:forKey:",_className,_1); +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_11,_12){ +with(_11){ +var _13=CPClassFromString(_className); +if(_13===objj_msgSend(_11,"class")){ +_className="CPObject"; +return _11; +} +if(!_13){ +_13=objj_msgSend(CPObject,"class"); +} +if(_13===objj_msgSend(CPApplication,"class")){ +return objj_msgSend(CPApplication,"sharedApplication"); +} +return objj_msgSend(objj_msgSend(_13,"alloc"),"init"); +} +})]); +p;22;_CPCibCustomResource.jt;3116;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;3045; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="_CPCibCustomResourceClassNameKey",_2="_CPCibCustomResourceResourceNameKey",_3="_CPCibCustomResourcePropertiesKey"; +var _4=objj_allocateClassPair(CPObject,"_CPCibCustomResource"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_className"),new objj_ivar("_resourceName"),new objj_ivar("_properties")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithClassName:resourceName:properties:"),function(_6,_7,_8,_9,_a){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("_CPCibCustomResource").super_class},"init"); +if(_6){ +_className=_8; +_resourceName=_9; +_properties=_a; +} +return _6; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("_CPCibCustomResource").super_class},"init"); +if(_b){ +_className=objj_msgSend(_d,"decodeObjectForKey:",_1); +_resourceName=objj_msgSend(_d,"decodeObjectForKey:",_2); +_properties=objj_msgSend(_d,"decodeObjectForKey:",_3); +} +return _b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e,_f,_10){ +with(_e){ +objj_msgSend(_10,"encodeObject:forKey:",_className,_1); +objj_msgSend(_10,"encodeObject:forKey:",_resourceName,_2); +objj_msgSend(_10,"encodeObject:forKey:",_properties,_3); +} +}),new objj_method(sel_getUid("awakeAfterUsingCoder:"),function(_11,_12,_13){ +with(_11){ +if(objj_msgSend(_13,"respondsToSelector:",sel_getUid("bundle"))&&(!objj_msgSend(_13,"respondsToSelector:",sel_getUid("awakenCustomResources"))||objj_msgSend(_13,"awakenCustomResources"))){ +if(_className==="CPImage"){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(_13,"bundle"),"pathForResource:",_resourceName),_properties.valueForKey("size")); +} +} +return _11; +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("imageResourceWithName:size:"),function(_14,_15,_16,_17){ +with(_14){ +return objj_msgSend(objj_msgSend(_14,"alloc"),"initWithClassName:resourceName:properties:","CPImage",_16,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_17,"size")); +} +})]); +var _4=objj_getClass("_CPCibCustomResource"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomResource\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("filename"),function(_18,_19){ +with(_18){ +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_resourceName); +} +}),new objj_method(sel_getUid("size"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_properties,"objectForKey:","size"); +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_1c,_1d){ +with(_1c){ +return NO; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_1e,_1f){ +with(_1e){ +return NO; +} +}),new objj_method(sel_getUid("loadStatus"),function(_20,_21){ +with(_20){ +return CPImageLoadStatusCompleted; +} +}),new objj_method(sel_getUid("delegate"),function(_22,_23){ +with(_22){ +return nil; +} +})]); +p;18;_CPCibCustomView.jt;2402;@STATIC;1.0;i;8;CPView.jt;2371; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPCibCustomView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_className")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("customClassName"),function(_3,_4){ +with(_3){ +return _className; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_5,_6,_7){ +with(_5){ +if(_className===_7){ +return; +} +_className=_7; +objj_msgSend(_5,"setNeedsDisplay:",YES); +objj_msgSend(_5,"setNeedsLayout"); +} +})]); +var _8="_CPCibCustomViewClassNameKey"; +var _1=objj_getClass("_CPCibCustomView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_9,_a,_b){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPCibCustomView").super_class},"initWithCoder:",_b); +if(_9){ +_className=objj_msgSend(_b,"decodeObjectForKey:",_8); +} +return _9; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPCibCustomView").super_class},"encodeWithCoder:",_e); +objj_msgSend(_e,"encodeObject:forKey:",_className,_8); +} +}),new objj_method(sel_getUid("customClassName"),function(_f,_10){ +with(_f){ +return _className; +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_11,_12){ +with(_11){ +var _13=CPClassFromString(_className); +if(!_13){ +_13=objj_msgSend(CPView,"class"); +} +if(_13===objj_msgSend(_11,"class")){ +_className="CPView"; +return _11; +} +var _14=objj_msgSend(objj_msgSend(_13,"alloc"),"initWithFrame:",objj_msgSend(_11,"frame")); +if(_14){ +objj_msgSend(_14,"setBounds:",objj_msgSend(_11,"bounds")); +var _15=objj_msgSend(_11,"subviews"),_16=0,_17=_15.length; +for(;_16<_17;++_16){ +objj_msgSend(_14,"addSubview:",_15[_16]); +} +objj_msgSend(_14,"setAutoresizingMask:",objj_msgSend(_11,"autoresizingMask")); +objj_msgSend(_14,"setAutoresizesSubviews:",objj_msgSend(_11,"autoresizesSubviews")); +objj_msgSend(_14,"setHitTests:",objj_msgSend(_11,"hitTests")); +objj_msgSend(_14,"setHidden:",objj_msgSend(_11,"isHidden")); +objj_msgSend(_14,"setAlphaValue:",objj_msgSend(_11,"alphaValue")); +objj_msgSend(_superview,"replaceSubview:with:",_11,_14); +objj_msgSend(_14,"setBackgroundColor:",objj_msgSend(_11,"backgroundColor")); +} +return _14; +} +})]); +p;23;_CPCibKeyedUnarchiver.jt;1485;@STATIC;1.0;I;30;Foundation/CPKeyedUnarchiver.jt;1431; +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +var _1=objj_allocateClassPair(CPKeyedUnarchiver,"_CPCibKeyedUnarchiver"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_bundle"),new objj_ivar("_awakenCustomResources"),new objj_ivar("_externalObjectsForProxyIdentifiers")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initForReadingWithData:bundle:awakenCustomResources:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPCibKeyedUnarchiver").super_class},"initForReadingWithData:",_5); +if(_3){ +_bundle=_6; +_awakenCustomResources=_7; +objj_msgSend(_3,"setDelegate:",_3); +} +return _3; +} +}),new objj_method(sel_getUid("bundle"),function(_8,_9){ +with(_8){ +return _bundle; +} +}),new objj_method(sel_getUid("awakenCustomResources"),function(_a,_b){ +with(_a){ +return _awakenCustomResources; +} +}),new objj_method(sel_getUid("setExternalObjectsForProxyIdentifiers:"),function(_c,_d,_e){ +with(_c){ +_externalObjectsForProxyIdentifiers=_e; +} +}),new objj_method(sel_getUid("externalObjectForProxyIdentifier:"),function(_f,_10,_11){ +with(_f){ +return objj_msgSend(_externalObjectsForProxyIdentifiers,"objectForKey:",_11); +} +}),new objj_method(sel_getUid("replaceObjectAtUID:withObject:"),function(_12,_13,_14,_15){ +with(_12){ +_objects[_14]=_15; +} +}),new objj_method(sel_getUid("objectAtUID:"),function(_16,_17,_18){ +with(_16){ +return _objects[_18]; +} +})]); +p;18;_CPCibObjectData.jt;6216;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;22;CPCibOutletConnector.jt;6033; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPCib.j",YES); +objj_executeFile("CPCibConnector.j",YES); +objj_executeFile("CPCibControlConnector.j",YES); +objj_executeFile("CPCibOutletConnector.j",YES); +var _1=objj_allocateClassPair(CPObject,"_CPCibObjectData"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_namesKeys"),new objj_ivar("_namesValues"),new objj_ivar("_accessibilityConnectors"),new objj_ivar("_accessibilityOidsKeys"),new objj_ivar("_accessibilityOidsValues"),new objj_ivar("_classesKeys"),new objj_ivar("_classesValues"),new objj_ivar("_connections"),new objj_ivar("_fontManager"),new objj_ivar("_framework"),new objj_ivar("_nextOid"),new objj_ivar("_objectsKeys"),new objj_ivar("_objectsValues"),new objj_ivar("_oidKeys"),new objj_ivar("_oidValues"),new objj_ivar("_fileOwner"),new objj_ivar("_visibleWindows"),new objj_ivar("_replacementObjects")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPCibObjectData").super_class},"init"); +if(_3){ +_namesKeys=[]; +_namesValues=[]; +_classesKeys=[]; +_classesValues=[]; +_connections=[]; +_framework=""; +_nextOid=[]; +_objectsKeys=[]; +_objectsValues=[]; +_oidKeys=[]; +_oidValues=[]; +_fileOwner=nil; +_visibleWindows=objj_msgSend(CPSet,"set"); +} +return _3; +} +}),new objj_method(sel_getUid("displayVisibleWindows"),function(_5,_6){ +with(_5){ +var _7=nil,_8=objj_msgSend(_visibleWindows,"objectEnumerator"); +while(_7=objj_msgSend(_8,"nextObject")){ +objj_msgSend(_replacementObjects[objj_msgSend(_7,"UID")],"makeKeyAndOrderFront:",_5); +} +} +})]); +var _9="_CPCibObjectDataNamesKeysKey",_a="_CPCibObjectDataNamesValuesKey",_b="_CPCibObjectDataAccessibilityConnectors",_c="_CPCibObjectDataAccessibilityOidsKeys",_d="_CPCibObjectDataAccessibilityOidsValues",_e="_CPCibObjectDataClassesKeysKey",_f="_CPCibObjectDataClassesValuesKey",_10="_CPCibObjectDataConnectionsKey",_11="_CPCibObjectDataFontManagerKey",_12="_CPCibObjectDataFrameworkKey",_13="_CPCibObjectDataNextOidKey",_14="_CPCibObjectDataObjectsKeysKey",_15="_CPCibObjectDataObjectsValuesKey",_16="_CPCibObjectDataOidKeysKey",_17="_CPCibObjectDataOidValuesKey",_18="_CPCibObjectDataFileOwnerKey",_19="_CPCibObjectDataVisibleWindowsKey"; +var _1=objj_getClass("_CPCibObjectData"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibObjectData\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_1a,_1b,_1c){ +with(_1a){ +_1a=objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("_CPCibObjectData").super_class},"init"); +if(_1a){ +_replacementObjects={}; +_namesKeys=objj_msgSend(_1c,"decodeObjectForKey:",_9); +_namesValues=objj_msgSend(_1c,"decodeObjectForKey:",_a); +_classesKeys=objj_msgSend(_1c,"decodeObjectForKey:",_e); +_classesValues=objj_msgSend(_1c,"decodeObjectForKey:",_f); +_connections=objj_msgSend(_1c,"decodeObjectForKey:",_10); +_framework=objj_msgSend(_1c,"decodeObjectForKey:",_12); +_nextOid=objj_msgSend(_1c,"decodeIntForKey:",_13); +_objectsKeys=objj_msgSend(_1c,"decodeObjectForKey:",_14); +_objectsValues=objj_msgSend(_1c,"decodeObjectForKey:",_15); +_oidKeys=objj_msgSend(_1c,"decodeObjectForKey:",_16); +_oidValues=objj_msgSend(_1c,"decodeObjectForKey:",_17); +_fileOwner=objj_msgSend(_1c,"decodeObjectForKey:",_18); +_visibleWindows=objj_msgSend(_1c,"decodeObjectForKey:",_19); +} +return _1a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_1f,"encodeObject:forKey:",_namesKeys,_9); +objj_msgSend(_1f,"encodeObject:forKey:",_namesValues,_a); +objj_msgSend(_1f,"encodeObject:forKey:",_classesKeys,_e); +objj_msgSend(_1f,"encodeObject:forKey:",_classesValues,_f); +objj_msgSend(_1f,"encodeObject:forKey:",_connections,_10); +objj_msgSend(_1f,"encodeObject:forKey:",_framework,_12); +objj_msgSend(_1f,"encodeInt:forKey:",_nextOid,_13); +objj_msgSend(_1f,"encodeObject:forKey:",_objectsKeys,_14); +objj_msgSend(_1f,"encodeObject:forKey:",_objectsValues,_15); +objj_msgSend(_1f,"encodeObject:forKey:",_oidKeys,_16); +objj_msgSend(_1f,"encodeObject:forKey:",_oidValues,_17); +objj_msgSend(_1f,"encodeObject:forKey:",_fileOwner,_18); +objj_msgSend(_1f,"encodeObject:forKey:",_visibleWindows,_19); +} +}),new objj_method(sel_getUid("instantiateWithOwner:topLevelObjects:"),function(_20,_21,_22,_23){ +with(_20){ +var _24=objj_msgSend(_objectsKeys,"count"); +while(_24--){ +var _25=_objectsKeys[_24],_26=_objectsValues[_24],_27=_25; +if(objj_msgSend(_25,"respondsToSelector:",sel_getUid("_cibInstantiate"))){ +var _27=objj_msgSend(_25,"_cibInstantiate"); +if(_27!==_25){ +_replacementObjects[objj_msgSend(_25,"UID")]=_27; +if(objj_msgSend(_27,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +var _28=objj_msgSend(_27,"superview"); +if(objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _29=objj_msgSend(_28,"superview"); +if(objj_msgSend(_29,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))){ +objj_msgSend(_29,"setDocumentView:",_27); +} +} +} +} +} +if(_23&&_26===_fileOwner&&_25!==_fileOwner){ +_23.push(_27); +} +} +} +}),new objj_method(sel_getUid("establishConnectionsWithOwner:topLevelObjects:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +_replacementObjects[objj_msgSend(_fileOwner,"UID")]=_2c; +var _2e=0,_2f=_connections.length; +for(;_2e<_2f;++_2e){ +var _30=_connections[_2e]; +objj_msgSend(_30,"replaceObjects:",_replacementObjects); +objj_msgSend(_30,"establishConnection"); +} +} +}),new objj_method(sel_getUid("awakeWithOwner:topLevelObjects:"),function(_31,_32,_33,_34){ +with(_31){ +var _35=objj_msgSend(_objectsKeys,"count"); +while(_35--){ +var _36=_objectsKeys[_35],_37=_replacementObjects[objj_msgSend(_36,"UID")]; +if(_37){ +_36=_37; +} +if(_36!==_33&&objj_msgSend(_36,"respondsToSelector:",sel_getUid("awakeFromCib"))){ +objj_msgSend(_36,"awakeFromCib"); +} +} +if(objj_msgSend(_33,"respondsToSelector:",sel_getUid("awakeFromCib"))){ +objj_msgSend(_33,"awakeFromCib"); +} +} +})]); +p;19;_CPCibProxyObject.jt;1009;@STATIC;1.0;I;21;Foundation/CPObject.jt;965; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"_CPCibProxyObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier")]); +objj_registerClassPair(_1); +var _3="CPIdentifier"; +var _1=objj_getClass("_CPCibProxyObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibProxyObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("_CPCibProxyObject").super_class},"init"); +if(_4){ +_identifier=objj_msgSend(_6,"decodeObjectForKey:",_3); +} +if(objj_msgSend(_6,"respondsToSelector:",sel_getUid("externalObjectForProxyIdentifier:"))){ +return objj_msgSend(_6,"externalObjectForProxyIdentifier:",_identifier); +} +return _4; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7,_8,_9){ +with(_7){ +objj_msgSend(_9,"encodeObject:forKey:",_identifier,_3); +} +})]); +p;22;_CPCibWindowTemplate.jt;4518;@STATIC;1.0;I;21;Foundation/CPObject.jt;4473; +objj_executeFile("Foundation/CPObject.j",NO); +var _1="_CPCibWindowTemplateMinSizeKey",_2="_CPCibWindowTemplateMaxSizeKey",_3="_CPCibWindowTemplateViewClassKey",_4="_CPCibWindowTemplateWindowClassKey",_5="_CPCibWindowTemplateWindowRectKey",_6="_CPCibWindowTempatStyleMaskKey",_7="_CPCibWindowTemplateWindowTitleKey",_8="_CPCibWindowTemplateWindowViewKey",_9="_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop"; +_CPCibWindowTemplateWindowIsFullPlatformWindowKey="_CPCibWindowTemplateWindowIsFullPlatformWindowKey"; +var _a=objj_allocateClassPair(CPObject,"_CPCibWindowTemplate"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_viewClass"),new objj_ivar("_windowClass"),new objj_ivar("_windowRect"),new objj_ivar("_windowStyleMask"),new objj_ivar("_windowTitle"),new objj_ivar("_windowView"),new objj_ivar("_windowAutorecalculatesKeyViewLoop"),new objj_ivar("_windowIsFullPlatformWindow")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("init"),function(_c,_d){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPCibWindowTemplate").super_class},"init"); +if(_c){ +_windowClass="CPWindow"; +_windowRect=CGRectMake(0,0,400,200); +_windowStyleMask=CPTitledWindowMask|CPClosableWindowMask|CPMiniaturizableWindowMask|CPResizableWindowMask; +_windowTitle="Window"; +_windowView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,400,200)); +_windowIsFullPlatformWindow=NO; +} +return _c; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_e,_f,_10){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPCibWindowTemplate").super_class},"init"); +if(_e){ +if(objj_msgSend(_10,"containsValueForKey:",_1)){ +_minSize=objj_msgSend(_10,"decodeSizeForKey:",_1); +} +if(objj_msgSend(_10,"containsValueForKey:",_2)){ +_maxSize=objj_msgSend(_10,"decodeSizeForKey:",_2); +} +_viewClass=objj_msgSend(_10,"decodeObjectForKey:",_3); +_windowClass=objj_msgSend(_10,"decodeObjectForKey:",_4); +_windowRect=objj_msgSend(_10,"decodeRectForKey:",_5); +_windowStyleMask=objj_msgSend(_10,"decodeIntForKey:",_6); +_windowTitle=objj_msgSend(_10,"decodeObjectForKey:",_7); +_windowView=objj_msgSend(_10,"decodeObjectForKey:",_8); +_windowAutorecalculatesKeyViewLoop=!!objj_msgSend(_10,"decodeObjectForKey:",_9); +_windowIsFullPlatformWindow=!!objj_msgSend(_10,"decodeObjectForKey:",_CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +return _e; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_11,_12,_13){ +with(_11){ +if(_minSize){ +objj_msgSend(_13,"encodeSize:forKey:",_minSize,_1); +} +if(_maxSize){ +objj_msgSend(_13,"encodeSize:forKey:",_maxSize,_2); +} +objj_msgSend(_13,"encodeObject:forKey:",_viewClass,_3); +objj_msgSend(_13,"encodeObject:forKey:",_windowClass,_4); +objj_msgSend(_13,"encodeRect:forKey:",_windowRect,_5); +objj_msgSend(_13,"encodeInt:forKey:",_windowStyleMask,_6); +objj_msgSend(_13,"encodeObject:forKey:",_windowTitle,_7); +objj_msgSend(_13,"encodeObject:forKey:",_windowView,_8); +if(_windowAutorecalculatesKeyViewLoop){ +objj_msgSend(_13,"encodeObject:forKey:",_windowAutorecalculatesKeyViewLoop,_9); +} +if(_windowIsFullPlatformWindow){ +objj_msgSend(_13,"encodeObject:forKey:",_windowIsFullPlatformWindow,_CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +} +}),new objj_method(sel_getUid("customClassName"),function(_14,_15){ +with(_14){ +return _windowClass; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_16,_17,_18){ +with(_16){ +_windowClass=_18; +} +}),new objj_method(sel_getUid("windowClass"),function(_19,_1a){ +with(_19){ +return _windowClass; +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_1b,_1c){ +with(_1b){ +var _1d=CPClassFromString(objj_msgSend(_1b,"windowClass")); +var _1e=objj_msgSend(objj_msgSend(_1d,"alloc"),"initWithContentRect:styleMask:",_windowRect,_windowStyleMask); +if(_minSize){ +objj_msgSend(_1e,"setMinSize:",_minSize); +} +if(_maxSize){ +objj_msgSend(_1e,"setMaxSize:",_maxSize); +} +objj_msgSend(_1e,"setTitle:",_windowTitle); +objj_msgSend(_windowView,"setAutoresizesSubviews:",NO); +objj_msgSend(_1e,"setContentView:",_windowView); +objj_msgSend(_windowView,"setAutoresizesSubviews:",YES); +if(objj_msgSend(_viewClass,"isKindOfClass:",objj_msgSend(CPToolbar,"class"))){ +objj_msgSend(_1e,"setToolbar:",_viewClass); +} +objj_msgSend(_1e,"setAutorecalculatesKeyViewLoop:",_windowAutorecalculatesKeyViewLoop); +objj_msgSend(_1e,"setFullBridge:",_windowIsFullPlatformWindow); +return _1e; +} +})]); +p;7;CPCib.jt;5447;@STATIC;1.0;I;21;Foundation/CPObject.jI;28;Foundation/CPURLConnection.jI;25;Foundation/CPURLRequest.ji;20;_CPCibClassSwapper.ji;20;_CPCibCustomObject.ji;22;_CPCibCustomResource.ji;18;_CPCibCustomView.ji;23;_CPCibKeyedUnarchiver.ji;18;_CPCibObjectData.ji;19;_CPCibProxyObject.ji;22;_CPCibWindowTemplate.jt;5137; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPURLConnection.j",NO); +objj_executeFile("Foundation/CPURLRequest.j",NO); +objj_executeFile("_CPCibClassSwapper.j",YES); +objj_executeFile("_CPCibCustomObject.j",YES); +objj_executeFile("_CPCibCustomResource.j",YES); +objj_executeFile("_CPCibCustomView.j",YES); +objj_executeFile("_CPCibKeyedUnarchiver.j",YES); +objj_executeFile("_CPCibObjectData.j",YES); +objj_executeFile("_CPCibProxyObject.j",YES); +objj_executeFile("_CPCibWindowTemplate.j",YES); +CPCibOwner="CPCibOwner",CPCibTopLevelObjects="CPCibTopLevelObjects",CPCibReplacementClasses="CPCibReplacementClasses",CPCibExternalObjects="CPCibExternalObjects"; +var _1="CPCibObjectDataKey"; +var _2=objj_allocateClassPair(CPObject,"CPCib"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_data"),new objj_ivar("_bundle"),new objj_ivar("_awakenCustomResources"),new objj_ivar("_loadDelegate")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithContentsOfURL:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPCib").super_class},"init"); +if(_4){ +_data=objj_msgSend(CPURLConnection,"sendSynchronousRequest:returningResponse:",objj_msgSend(CPURLRequest,"requestWithURL:",_6),nil); +_awakenCustomResources=YES; +} +return _4; +} +}),new objj_method(sel_getUid("initWithContentsOfURL:loadDelegate:"),function(_7,_8,_9,_a){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPCib").super_class},"init"); +if(_7){ +objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",objj_msgSend(CPURLRequest,"requestWithURL:",_9),_7); +_awakenCustomResources=YES; +_loadDelegate=_a; +} +return _7; +} +}),new objj_method(sel_getUid("initWithCibNamed:bundle:"),function(_b,_c,_d,_e){ +with(_b){ +if(!objj_msgSend(_d,"hasSuffix:",".cib")){ +_d=objj_msgSend(_d,"stringByAppendingString:",".cib"); +} +_b=objj_msgSend(_b,"initWithContentsOfURL:",objj_msgSend(_e||objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_d)); +if(_b){ +_bundle=_e; +} +return _b; +} +}),new objj_method(sel_getUid("initWithCibNamed:bundle:loadDelegate:"),function(_f,_10,_11,_12,_13){ +with(_f){ +if(!objj_msgSend(_11,"hasSuffix:",".cib")){ +_11=objj_msgSend(_11,"stringByAppendingString:",".cib"); +} +_f=objj_msgSend(_f,"initWithContentsOfURL:loadDelegate:",objj_msgSend(_12||objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_11),_13); +if(_f){ +_bundle=_12; +} +return _f; +} +}),new objj_method(sel_getUid("_setAwakenCustomResources:"),function(_14,_15,_16){ +with(_14){ +_awakenCustomResources=_16; +} +}),new objj_method(sel_getUid("_awakenCustomResources"),function(_17,_18){ +with(_17){ +return _awakenCustomResources; +} +}),new objj_method(sel_getUid("instantiateCibWithExternalNameTable:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=_bundle,_1d=objj_msgSend(_1b,"objectForKey:",CPCibOwner); +if(!_1c&&_1d){ +_1c=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_1d,"class")); +} +var _1e=objj_msgSend(objj_msgSend(_CPCibKeyedUnarchiver,"alloc"),"initForReadingWithData:bundle:awakenCustomResources:",_data,_1c,_awakenCustomResources),_1f=objj_msgSend(_1b,"objectForKey:",CPCibReplacementClasses); +if(_1f){ +var key=nil,_20=objj_msgSend(_1f,"keyEnumerator"); +while(key=objj_msgSend(_20,"nextObject")){ +objj_msgSend(_1e,"setClass:forClassName:",objj_msgSend(_1f,"objectForKey:",key),key); +} +} +objj_msgSend(_1e,"setExternalObjectsForProxyIdentifiers:",objj_msgSend(_1b,"objectForKey:",CPCibExternalObjects)); +var _21=objj_msgSend(_1e,"decodeObjectForKey:",_1); +if(!_21||!objj_msgSend(_21,"isKindOfClass:",objj_msgSend(_CPCibObjectData,"class"))){ +return NO; +} +var _22=objj_msgSend(_1b,"objectForKey:",CPCibTopLevelObjects); +objj_msgSend(_21,"instantiateWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"establishConnectionsWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"awakeWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"displayVisibleWindows"); +return YES; +} +}),new objj_method(sel_getUid("instantiateCibWithOwner:topLevelObjects:"),function(_23,_24,_25,_26){ +with(_23){ +return objj_msgSend(_23,"instantiateCibWithExternalNameTable:",objj_msgSend(CPDictionary,"dictionaryWithObjectsAndKeys:",_25,CPCibOwner,_26,CPCibTopLevelObjects)); +} +})]); +var _2=objj_getClass("CPCib"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPCib\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("connection:didReceiveData:"),function(_27,_28,_29,_2a){ +with(_27){ +if(!_2a){ +return objj_msgSend(_27,"connection:didFailWithError:",_29,nil); +} +_data=objj_msgSend(CPData,"dataWithRawString:",_2a); +} +}),new objj_method(sel_getUid("connection:didFailWithError:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +if(objj_msgSend(_loadDelegate,"respondsToSelector:",sel_getUid("cibDidFailToLoad:"))){ +objj_msgSend(_loadDelegate,"cibDidFailToLoad:",_2b); +} +_loadDelegate=nil; +} +}),new objj_method(sel_getUid("connectionDidFinishLoading:"),function(_2f,_30,_31){ +with(_2f){ +if(objj_msgSend(_loadDelegate,"respondsToSelector:",sel_getUid("cibDidFinishLoading:"))){ +objj_msgSend(_loadDelegate,"cibDidFinishLoading:",_2f); +} +_loadDelegate=nil; +} +})]); +p;16;CPCibConnector.jt;2363;@STATIC;1.0;I;21;Foundation/CPObject.jI;29;Foundation/CPKeyValueCoding.jt;2284; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPKeyValueCoding.j",NO); +var _1="_CPCibConnectorSourceKey",_2="_CPCibConnectorDestinationKey",_3="_CPCibConnectorLabelKey"; +var _4=objj_allocateClassPair(CPObject,"CPCibConnector"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_source"),new objj_ivar("_destination"),new objj_ivar("_label")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("source"),function(_6,_7){ +with(_6){ +return _source; +} +}),new objj_method(sel_getUid("setSource:"),function(_8,_9,_a){ +with(_8){ +_source=_a; +} +}),new objj_method(sel_getUid("destination"),function(_b,_c){ +with(_b){ +return _destination; +} +}),new objj_method(sel_getUid("setDestination:"),function(_d,_e,_f){ +with(_d){ +_destination=_f; +} +}),new objj_method(sel_getUid("label"),function(_10,_11){ +with(_10){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_12,_13,_14){ +with(_12){ +_label=_14; +} +}),new objj_method(sel_getUid("replaceObject:withObject:"),function(_15,_16,_17,_18){ +with(_15){ +if(_source===_17){ +_source=_18; +} +if(_destination===_17){ +_destination=_18; +} +} +}),new objj_method(sel_getUid("replaceObjects:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=_1b[objj_msgSend(_source,"UID")]; +if(_1c!==undefined){ +_source=_1c; +} +_1c=_1b[objj_msgSend(_destination,"UID")]; +if(_1c!==undefined){ +_destination=_1c; +} +} +})]); +var _4=objj_getClass("CPCibConnector"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPCibConnector\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +_1d=objj_msgSendSuper({receiver:_1d,super_class:objj_getClass("CPCibConnector").super_class},"init"); +if(_1d){ +_source=objj_msgSend(_1f,"decodeObjectForKey:",_1); +_destination=objj_msgSend(_1f,"decodeObjectForKey:",_2); +_label=objj_msgSend(_1f,"decodeObjectForKey:",_3); +} +return _1d; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(_22,"encodeObject:forKey:",_source,_1); +objj_msgSend(_22,"encodeObject:forKey:",_destination,_2); +objj_msgSend(_22,"encodeObject:forKey:",_label,_3); +} +})]); +var _4=objj_allocateClassPair(CPCibConnector,"_CPCibConnector"),_5=_4.isa; +objj_registerClassPair(_4); +p;23;CPCibControlConnector.jt;1534;@STATIC;1.0;i;16;CPCibConnector.jt;1494; +objj_executeFile("CPCibConnector.j",YES); +var _1=objj_allocateClassPair(CPCibConnector,"CPCibControlConnector"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("establishConnection"),function(_3,_4){ +with(_3){ +var _5=_label,_6=objj_msgSend(_5,"length"); +if(_6&&_5.charAt(_6-1)!==":"){ +_5+=":"; +} +var _7=CPSelectorFromString(_5); +if(!_7){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] selector "+_5+" does not exist."); +} +if(_destination&&!objj_msgSend(_destination,"respondsToSelector:",_7)){ +CPLog.warn("Could not connect the action "+_7+" to target of class "+objj_msgSend(_destination,"className")); +return; +} +if(objj_msgSend(_source,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_source,sel_getUid("setAction:"),_7); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] "+objj_msgSend(_source,"description")+" does not respond to setAction:"); +} +if(objj_msgSend(_source,"respondsToSelector:",sel_getUid("setTarget:"))){ +objj_msgSend(_source,sel_getUid("setTarget:"),_destination); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] "+objj_msgSend(_source,"description")+" does not respond to setTarget:"); +} +} +})]); +var _1=objj_allocateClassPair(CPCibControlConnector,"_CPCibControlConnector"),_2=_1.isa; +objj_registerClassPair(_1); +p;14;CPCibLoading.jt;3586;@STATIC;1.0;I;21;Foundation/CPBundle.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;3485; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="CPCibOwner"; +var _2=objj_getClass("CPObject"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("awakeFromCib"),function(_4,_5){ +with(_4){ +} +})]); +var _2=objj_getClass("CPBundle"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPBundle\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("loadCibFile:externalNameTable:"),function(_6,_7,_8,_9){ +with(_6){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",_8),"instantiateCibWithExternalNameTable:",_9); +} +}),new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"),function(_a,_b,_c,_d,_e){ +with(_a){ +return (objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithCibNamed:bundle:loadDelegate:",_c,_a,objj_msgSend(objj_msgSend(_CPCibLoadDelegate,"alloc"),"initWithLoadDelegate:externalNameTable:",_e,_d))); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("loadCibFile:externalNameTable:"),function(_f,_10,_11,_12){ +with(_f){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",_11),"instantiateCibWithExternalNameTable:",_12); +} +}),new objj_method(sel_getUid("loadCibNamed:owner:"),function(_13,_14,_15,_16){ +with(_13){ +if(!objj_msgSend(_15,"hasSuffix:",".cib")){ +_15=objj_msgSend(_15,"stringByAppendingString:",".cib"); +} +var _17=_16?objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_16,"class")):objj_msgSend(CPBundle,"mainBundle"),_18=objj_msgSend(_17,"pathForResource:",_15); +return objj_msgSend(_13,"loadCibFile:externalNameTable:",_18,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_16,_1)); +} +}),new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"),function(_19,_1a,_1b,_1c,_1d){ +with(_19){ +return (objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:loadDelegate:",_1b,objj_msgSend(objj_msgSend(_CPCibLoadDelegate,"alloc"),"initWithLoadDelegate:externalNameTable:",_1d,_1c))); +} +}),new objj_method(sel_getUid("loadCibNamed:owner:loadDelegate:"),function(_1e,_1f,_20,_21,_22){ +with(_1e){ +if(!objj_msgSend(_20,"hasSuffix:",".cib")){ +_20=objj_msgSend(_20,"stringByAppendingString:",".cib"); +} +var _23=_21?objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_21,"class")):objj_msgSend(CPBundle,"mainBundle"),_24=objj_msgSend(_23,"pathForResource:",_20); +return objj_msgSend(_1e,"loadCibFile:externalNameTable:loadDelegate:",_24,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_21,_1),_22); +} +})]); +var _2=objj_allocateClassPair(CPObject,"_CPCibLoadDelegate"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_loadDelegate"),new objj_ivar("_externalNameTable")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithLoadDelegate:externalNameTable:"),function(_25,_26,_27,_28){ +with(_25){ +_25=objj_msgSend(_25,"init"); +if(_25){ +_loadDelegate=_27; +_externalNameTable=_28; +} +return _25; +} +}),new objj_method(sel_getUid("cibDidFinishLoading:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"instantiateCibWithExternalNameTable:",_externalNameTable); +objj_msgSend(_loadDelegate,"cibDidFinishLoading:",_2b); +} +}),new objj_method(sel_getUid("cibDidFailToLoad:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_loadDelegate,"cibDidFailToLoad:",_2e); +} +})]); +p;22;CPCibOutletConnector.jt;703;@STATIC;1.0;i;16;CPCibConnector.jt;664; +objj_executeFile("CPCibConnector.j",YES); +var _1=objj_allocateClassPair(CPCibConnector,"CPCibOutletConnector"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("establishConnection"),function(_3,_4){ +with(_3){ +try{ +objj_msgSend(_source,"setValue:forKey:",_destination,_label); +} +catch(anException){ +if(objj_msgSend(anException,"name")===CPUndefinedKeyException){ +CPLog.warn("Could not connect the outlet "+_label+" of target of class "+objj_msgSend(_source,"className")); +}else{ +throw anException; +} +} +} +})]); +var _1=objj_allocateClassPair(CPCibOutletConnector,"_CPCibOutletConnector"),_2=_1.isa; +objj_registerClassPair(_1); +p;13;CAAnimation.jt;3814;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;23;CAMediaTimingFunction.jt;3715; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CAMediaTimingFunction.j",YES); +var _1=objj_allocateClassPair(CPObject,"CAAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isRemovedOnCompletion"),new objj_ivar("_delegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CAAnimation").super_class},"init"); +if(_3){ +_isRemovedOnCompletion=YES; +} +return _3; +} +}),new objj_method(sel_getUid("shouldArchiveValueForKey:"),function(_5,_6,_7){ +with(_5){ +return YES; +} +}),new objj_method(sel_getUid("setRemovedOnCompletion:"),function(_8,_9,_a){ +with(_8){ +_isRemovedOnCompletion=_a; +} +}),new objj_method(sel_getUid("removedOnCompletion"),function(_b,_c){ +with(_b){ +return _isRemovedOnCompletion; +} +}),new objj_method(sel_getUid("isRemovedOnCompletion"),function(_d,_e){ +with(_d){ +return _isRemovedOnCompletion; +} +}),new objj_method(sel_getUid("timingFunction"),function(_f,_10){ +with(_f){ +return nil; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_11,_12,_13){ +with(_11){ +_delegate=_13; +} +}),new objj_method(sel_getUid("delegate"),function(_14,_15){ +with(_14){ +return _delegate; +} +}),new objj_method(sel_getUid("runActionForKey:object:arguments:"),function(_16,_17,_18,_19,_1a){ +with(_16){ +objj_msgSend(_19,"addAnimation:forKey:",_16,_18); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("animation"),function(_1b,_1c){ +with(_1b){ +return objj_msgSend(objj_msgSend(_1b,"alloc"),"init"); +} +}),new objj_method(sel_getUid("defaultValueForKey:"),function(_1d,_1e,_1f){ +with(_1d){ +return nil; +} +})]); +var _1=objj_allocateClassPair(CAAnimation,"CAPropertyAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath"),new objj_ivar("_isCumulative"),new objj_ivar("_isAdditive")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setKeyPath:"),function(_20,_21,_22){ +with(_20){ +_keyPath=_22; +} +}),new objj_method(sel_getUid("keyPath"),function(_23,_24){ +with(_23){ +return _keyPath; +} +}),new objj_method(sel_getUid("setCumulative:"),function(_25,_26,_27){ +with(_25){ +_isCumulative=_27; +} +}),new objj_method(sel_getUid("cumulative"),function(_28,_29){ +with(_28){ +return _isCumulative; +} +}),new objj_method(sel_getUid("isCumulative"),function(_2a,_2b){ +with(_2a){ +return _isCumulative; +} +}),new objj_method(sel_getUid("setAdditive:"),function(_2c,_2d,_2e){ +with(_2c){ +_isAdditive=_2e; +} +}),new objj_method(sel_getUid("additive"),function(_2f,_30){ +with(_2f){ +return _isAdditive; +} +}),new objj_method(sel_getUid("isAdditive"),function(_31,_32){ +with(_31){ +return _isAdditive; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("animationWithKeyPath:"),function(_33,_34,_35){ +with(_33){ +var _36=objj_msgSend(_33,"animation"); +objj_msgSend(_36,"setKeyPath:",_35); +return _36; +} +})]); +var _1=objj_allocateClassPair(CAPropertyAnimation,"CABasicAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_fromValue"),new objj_ivar("_toValue"),new objj_ivar("_byValue")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setFromValue:"),function(_37,_38,_39){ +with(_37){ +_fromValue=_39; +} +}),new objj_method(sel_getUid("fromValue"),function(_3a,_3b){ +with(_3a){ +return _fromValue; +} +}),new objj_method(sel_getUid("setToValue:"),function(_3c,_3d,_3e){ +with(_3c){ +_toValue=_3e; +} +}),new objj_method(sel_getUid("toValue"),function(_3f,_40){ +with(_3f){ +return _toValue; +} +}),new objj_method(sel_getUid("setByValue:"),function(_41,_42,_43){ +with(_41){ +_byValue=_43; +} +}),new objj_method(sel_getUid("byValue"),function(_44,_45){ +with(_44){ +return _byValue; +} +})]); +p;16;CABackingStore.jt;737;@STATIC;1.0;i;12;CGGeometry.ji;17;CPCompatibility.jt;680; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPCompatibility.j",YES); +CABackingStoreGetContext=function(_1){ +return _1.context; +}; +if(CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +CABackingStoreCreate=function(){ +var _2=document.createElement("canvas"); +_2.style.position="absolute"; +return {context:_2.getContext("2d"),buffer:_2,_image:_2}; +}; +CABackingStoreSetSize=function(_3,_4){ +var _5=_3.buffer; +_5.width=_4.width; +_5.height=_4.height; +_5.style.width=_4.width+"px"; +_5.style.height=_4.height+"px"; +}; +}else{ +CABackingStoreCreate=function(){ +var _6=CGBitmapGraphicsContextCreate(); +_6.buffer=""; +return {context:_6}; +}; +CABackingStoreSetSize=function(_7,_8){ +}; +} +p;14;CAFlashLayer.jt;851;@STATIC;1.0;i;9;CALayer.ji;14;CPFlashMovie.jt;801; +objj_executeFile("CALayer.j",YES); +objj_executeFile("CPFlashMovie.j",YES); +var _1=objj_allocateClassPair(CALayer,"CAFlashLayer"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_flashMovie")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setFlashMovie:"),function(_3,_4,_5){ +with(_3){ +if(_flashMovie==_5){ +return; +} +_flashMovie=_5; +_DOMElement.innerHTML=""; +} +}),new objj_method(sel_getUid("flashMovie"),function(_6,_7){ +with(_6){ +return _flashMovie; +} +})]); +p;9;CALayer.jt;24760;@STATIC;1.0;I;21;Foundation/CPObject.jI;23;AppKit/CABackingStore.jI;18;AppKit/CGContext.jI;19;AppKit/CGGeometry.ji;12;CGGeometry.jt;24622; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CABackingStore.j",NO); +objj_executeFile("AppKit/CGContext.j",NO); +objj_executeFile("AppKit/CGGeometry.j",NO); +objj_executeFile("CGGeometry.j",YES); +CGAffineTransformMake=function(a,b,c,d,tx,ty){ +return {a:a,b:b,c:c,d:d,tx:tx,ty:ty}; +}; +CGAffineTransformMakeIdentity=function(){ +return {a:1,b:0,c:0,d:1,tx:0,ty:0}; +}; +CGAffineTransformMakeCopy=function(_1){ +return {a:_1.a,b:_1.b,c:_1.c,d:_1.d,tx:_1.tx,ty:_1.ty}; +}; +CGAffineTransformMakeScale=function(sx,sy){ +return {a:sx,b:0,c:0,d:sy,tx:0,ty:0}; +}; +CGAffineTransformMakeTranslation=function(tx,ty){ +return {a:1,b:0,c:0,d:1,tx:tx,ty:ty}; +}; +CGAffineTransformTranslate=function(_2,tx,ty){ +return {a:_2.a,b:_2.b,c:_2.c,d:_2.d,tx:_2.tx+_2.a*tx+_2.c*ty,ty:_2.ty+_2.b*tx+_2.d*ty}; +}; +CGAffineTransformScale=function(_3,sx,sy){ +return {a:_3.a*sx,b:_3.b*sx,c:_3.c*sy,d:_3.d*sy,tx:_3.tx,ty:_3.ty}; +}; +CGAffineTransformConcat=function(_4,_5){ +return {a:_4.a*_5.a+_4.b*_5.c,b:_4.a*_5.b+_4.b*_5.d,c:_4.c*_5.a+_4.d*_5.c,d:_4.c*_5.b+_4.d*_5.d,tx:_4.tx*_5.a+_4.ty*_5.c+_5.tx,ty:_4.tx*_5.b+_4.ty*_5.d+_5.ty}; +}; +CGPointApplyAffineTransform=function(_6,_7){ +return {x:_6.x*_7.a+_6.y*_7.c+_7.tx,y:_6.x*_7.b+_6.y*_7.d+_7.ty}; +}; +CGSizeApplyAffineTransform=function(_8,_9){ +return {width:_8.width*_9.a+_8.height*_9.c,height:_8.width*_9.b+_8.height*_9.d}; +}; +CGAffineTransformIsIdentity=function(_a){ +return (_a.a==1&&_a.b==0&&_a.c==0&&_a.d==1&&_a.tx==0&&_a.ty==0); +}; +CGAffineTransformEqualToTransform=function(_b,_c){ +return (_b.a==_c.a&&_b.b==_c.b&&_b.c==_c.c&&_b.d==_c.d&&_b.tx==_c.tx&&_b.ty==_c.ty); +}; +CGStringCreateWithCGAffineTransform=function(_d){ +return (" [[ "+_d.a+", "+_d.b+", 0 ], [ "+_d.c+", "+_d.d+", 0 ], [ "+_d.tx+", "+_d.ty+", 1]]"); +}; +CGAffineTransformCreateCopy=function(_e){ +return {a:_e.a,b:_e.b,c:_e.c,d:_e.d,tx:_e.tx,ty:_e.ty}; +}; +CGAffineTransformMakeRotation=function(_f){ +var sin=SIN(_f),cos=COS(_f); +return {a:cos,b:sin,c:-sin,d:cos,tx:0,ty:0}; +}; +CGAffineTransformRotate=function(_10,_11){ +var sin=SIN(_11),cos=COS(_11); +return {a:_10.a*cos+_10.c*sin,b:_10.b*cos+_10.d*sin,c:_10.c*cos-_10.a*sin,d:_10.d*cos-_10.b*sin,tx:_10.tx,ty:_10.ty}; +}; +CGAffineTransformInvert=function(_12){ +var _13=1/(_12.a*_12.d-_12.b*_12.c); +return {a:_13*_12.d,b:-_13*_12.b,c:-_13*_12.c,d:_13*_12.a,tx:_13*(_12.c*_12.ty-_12.d*_12.tx),ty:_13*(_12.b*_12.tx-_12.a*_12.ty)}; +}; +CGRectApplyAffineTransform=function(_14,_15){ +var top=(_14.origin.y),_16=(_14.origin.x),_17=(_14.origin.x+_14.size.width),_18=(_14.origin.y+_14.size.height),_19=CGPointApplyAffineTransform({x:_16,y:top},_15),_1a=CGPointApplyAffineTransform({x:_17,y:top},_15),_1b=CGPointApplyAffineTransform({x:_16,y:_18},_15),_1c=CGPointApplyAffineTransform({x:_17,y:_18},_15),_1d=MIN(_19.x,_1a.x,_1b.x,_1c.x),_1e=MAX(_19.x,_1a.x,_1b.x,_1c.x),_1f=MIN(_19.y,_1a.y,_1b.y,_1c.y),_20=MAX(_19.y,_1a.y,_1b.y,_1c.y); +return {origin:{x:_1d,y:_1f},size:{width:(_1e-_1d),height:(_20-_1f)}}; +}; +CPStringFromCGAffineTransform=function(_21){ +return "{"+_21.a+", "+_21.b+", "+_21.c+", "+_21.d+", "+_21.tx+", "+_21.ty+"}"; +}; +var _22=1,_23=2,_24=4,_25=8,_26=16; +var _27=NO; +var _28=1,_29=2,_2a=4,_2b=8,_2c=16,_2d=_2a|_28|_29; +var _2e=nil; +var _2f=objj_allocateClassPair(CPObject,"CALayer"),_30=_2f.isa; +class_addIvars(_2f,[new objj_ivar("_frame"),new objj_ivar("_bounds"),new objj_ivar("_position"),new objj_ivar("_zPosition"),new objj_ivar("_anchorPoint"),new objj_ivar("_affineTransform"),new objj_ivar("_sublayerTransform"),new objj_ivar("_sublayerTransformForSublayers"),new objj_ivar("_backingStoreFrame"),new objj_ivar("_standardBackingStoreFrame"),new objj_ivar("_hasSublayerTransform"),new objj_ivar("_hasCustomBackingStoreFrame"),new objj_ivar("_opacity"),new objj_ivar("_isHidden"),new objj_ivar("_backgroundColor"),new objj_ivar("_superlayer"),new objj_ivar("_sublayers"),new objj_ivar("_runLoopUpdateMask"),new objj_ivar("_needsDisplayOnBoundsChange"),new objj_ivar("_delegate"),new objj_ivar("_delegateRespondsToDisplayLayerSelector"),new objj_ivar("_delegateRespondsToDrawLayerInContextSelector"),new objj_ivar("_DOMElement"),new objj_ivar("_DOMContentsElement"),new objj_ivar("_contents"),new objj_ivar("_context"),new objj_ivar("_owningView"),new objj_ivar("_transformToLayer"),new objj_ivar("_transformFromLayer")]); +objj_registerClassPair(_2f); +class_addMethods(_2f,[new objj_method(sel_getUid("init"),function(_31,_32){ +with(_31){ +_31=objj_msgSendSuper({receiver:_31,super_class:objj_getClass("CALayer").super_class},"init"); +if(_31){ +_frame=CGRectMakeZero(); +_backingStoreFrame=CGRectMakeZero(); +_standardBackingStoreFrame=CGRectMakeZero(); +_bounds=CGRectMakeZero(); +_position=CGPointMakeZero(); +_zPosition=0; +_anchorPoint=CGPointMake(0.5,0.5); +_affineTransform=CGAffineTransformMakeIdentity(); +_sublayerTransform=CGAffineTransformMakeIdentity(); +_transformToLayer=CGAffineTransformMakeIdentity(); +_transformFromLayer=CGAffineTransformMakeIdentity(); +_opacity=1; +_isHidden=NO; +_masksToBounds=NO; +_sublayers=[]; +_DOMElement=document.createElement("div"); +_DOMElement.style.overflow="visible"; +_DOMElement.style.position="absolute"; +_DOMElement.style.visibility="visible"; +_DOMElement.style.top="0px"; +_DOMElement.style.left="0px"; +_DOMElement.style.zIndex=0; +_DOMElement.style.width="0px"; +_DOMElement.style.height="0px"; +} +return _31; +} +}),new objj_method(sel_getUid("setBounds:"),function(_33,_34,_35){ +with(_33){ +if(CGRectEqualToRect(_bounds,_35)){ +return; +} +var _36=_bounds.origin; +_bounds={origin:{x:_35.origin.x,y:_35.origin.y},size:{width:_35.size.width,height:_35.size.height}}; +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_33); +} +_CALayerRecalculateGeometry(_33,_22); +} +}),new objj_method(sel_getUid("bounds"),function(_37,_38){ +with(_37){ +return _bounds; +} +}),new objj_method(sel_getUid("setPosition:"),function(_39,_3a,_3b){ +with(_39){ +if(CGPointEqualToPoint(_position,_3b)){ +return; +} +_position={x:_3b.x,y:_3b.y}; +_CALayerRecalculateGeometry(_39,_23); +} +}),new objj_method(sel_getUid("position"),function(_3c,_3d){ +with(_3c){ +return _position; +} +}),new objj_method(sel_getUid("setZPosition:"),function(_3e,_3f,_40){ +with(_3e){ +if(_zPosition==_40){ +return; +} +_zPosition=_40; +objj_msgSend(_3e,"registerRunLoopUpdateWithMask:",_2a); +} +}),new objj_method(sel_getUid("setAnchorPoint:"),function(_41,_42,_43){ +with(_41){ +_43={x:_43.x,y:_43.y}; +_43.x=MIN(1,MAX(0,_43.x)); +_43.y=MIN(1,MAX(0,_43.y)); +if(CGPointEqualToPoint(_anchorPoint,_43)){ +return; +} +_anchorPoint=_43; +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_41); +} +if(_owningView){ +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +} +_CALayerRecalculateGeometry(_41,_24); +} +}),new objj_method(sel_getUid("anchorPoint"),function(_44,_45){ +with(_44){ +return _anchorPoint; +} +}),new objj_method(sel_getUid("setAffineTransform:"),function(_46,_47,_48){ +with(_46){ +if(CGAffineTransformEqualToTransform(_affineTransform,_48)){ +return; +} +_affineTransform={a:_48.a,b:_48.b,c:_48.c,d:_48.d,tx:_48.tx,ty:_48.ty}; +_CALayerRecalculateGeometry(_46,_25); +} +}),new objj_method(sel_getUid("affineTransform"),function(_49,_4a){ +with(_49){ +return _affineTransform; +} +}),new objj_method(sel_getUid("setSublayerTransform:"),function(_4b,_4c,_4d){ +with(_4b){ +if(CGAffineTransformEqualToTransform(_sublayerTransform,_4d)){ +return; +} +var _4e=_hasSublayerTransform; +_sublayerTransform={a:_4d.a,b:_4d.b,c:_4d.c,d:_4d.d,tx:_4d.tx,ty:_4d.ty}; +_hasSublayerTransform=!(_sublayerTransform.a==1&&_sublayerTransform.b==0&&_sublayerTransform.c==0&&_sublayerTransform.d==1&&_sublayerTransform.tx==0&&_sublayerTransform.ty==0); +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_4b); +var _4f=_sublayers.length; +while(_4f--){ +_CALayerRecalculateGeometry(_sublayers[_4f],_26); +} +} +} +}),new objj_method(sel_getUid("sublayerTransform"),function(_50,_51){ +with(_50){ +return _sublayerTransform; +} +}),new objj_method(sel_getUid("transformToLayer"),function(_52,_53){ +with(_52){ +return _transformToLayer; +} +}),new objj_method(sel_getUid("setFrame:"),function(_54,_55,_56){ +with(_54){ +alert("FIXME IMPLEMENT"); +} +}),new objj_method(sel_getUid("frame"),function(_57,_58){ +with(_57){ +if(!_frame){ +_frame=objj_msgSend(_57,"convertRect:toLayer:",_bounds,_superlayer); +} +return _frame; +} +}),new objj_method(sel_getUid("backingStoreFrame"),function(_59,_5a){ +with(_59){ +return _backingStoreFrame; +} +}),new objj_method(sel_getUid("setBackingStoreFrame:"),function(_5b,_5c,_5d){ +with(_5b){ +_hasCustomBackingStoreFrame=(_5d!=nil); +if(_5d==nil){ +_5d=CGRectMakeCopy(_standardBackingStoreFrame); +}else{ +if(_superlayer){ +_5d=objj_msgSend(_superlayer,"convertRect:toLayer:",_5d,nil); +var _5e=objj_msgSend(_superlayer,"bounds"),_5f=objj_msgSend(_superlayer,"convertRect:toLayer:",_5e,nil); +_5d.origin.x-=(_5f.origin.x); +_5d.origin.y-=(_5f.origin.y); +}else{ +_5d=CGRectMakeCopy(_5d); +} +} +if(!CGPointEqualToPoint(_backingStoreFrame.origin,_5d.origin)){ +objj_msgSend(_5b,"registerRunLoopUpdateWithMask:",_28); +} +if(!CGSizeEqualToSize(_backingStoreFrame.size,_5d.size)){ +objj_msgSend(_5b,"registerRunLoopUpdateWithMask:",_29); +} +_backingStoreFrame=_5d; +} +}),new objj_method(sel_getUid("contents"),function(_60,_61){ +with(_60){ +return _contents; +} +}),new objj_method(sel_getUid("setContents:"),function(_62,_63,_64){ +with(_62){ +if(_contents==_64){ +return; +} +_contents=_64; +objj_msgSend(_62,"composite"); +} +}),new objj_method(sel_getUid("composite"),function(_65,_66){ +with(_65){ +if(_27&&!_contents||!_context){ +return; +} +CGContextClearRect(_context,{origin:{x:0,y:0},size:{width:(_backingStoreFrame.size.width),height:(_backingStoreFrame.size.height)}}); +var _67=_transformFromLayer; +if(_superlayer){ +var _68=_CALayerGetTransform(_superlayer,nil),_69=CGPointApplyAffineTransform(_superlayer._bounds.origin,_68); +_67=CGAffineTransformConcat(_67,_68); +_67.tx-=_69.x; +_67.ty-=_69.y; +} +_67.tx-=(_backingStoreFrame.origin.x); +_67.ty-=(_backingStoreFrame.origin.y); +CGContextSaveGState(_context); +CGContextConcatCTM(_context,_67); +if(_27){ +_context.drawImage(_contents.buffer,(_bounds.origin.x),(_bounds.origin.y)); +}else{ +objj_msgSend(_65,"drawInContext:",_context); +} +CGContextRestoreGState(_context); +} +}),new objj_method(sel_getUid("display"),function(_6a,_6b){ +with(_6a){ +if(!_context){ +_context=CGBitmapGraphicsContextCreate(); +_DOMContentsElement=_context.DOMElement; +_DOMContentsElement.style.zIndex=-100; +_DOMContentsElement.style.overflow="hidden"; +_DOMContentsElement.style.position="absolute"; +_DOMContentsElement.style.visibility="visible"; +_DOMContentsElement.width=ROUND((_backingStoreFrame.size.width)); +_DOMContentsElement.height=ROUND((_backingStoreFrame.size.height)); +_DOMContentsElement.style.top="0px"; +_DOMContentsElement.style.left="0px"; +_DOMContentsElement.style.width=ROUND((_backingStoreFrame.size.width))+"px"; +_DOMContentsElement.style.height=ROUND((_backingStoreFrame.size.height))+"px"; +_DOMElement.appendChild(_DOMContentsElement); +} +if(_27){ +if(_delegateRespondsToDisplayLayerSelector){ +return objj_msgSend(_delegate,"displayInLayer:",_6a); +} +if((_backingStoreFrame.size.width)==0||(_backingStoreFrame.size.height)==0){ +return; +} +if(!_contents){ +_contents=CABackingStoreCreate(); +} +CABackingStoreSetSize(_contents,_bounds.size); +objj_msgSend(_6a,"drawInContext:",CABackingStoreGetContext(_contents)); +} +objj_msgSend(_6a,"composite"); +} +}),new objj_method(sel_getUid("drawInContext:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_backgroundColor){ +CGContextSetFillColor(_6e,_backgroundColor); +CGContextFillRect(_6e,_bounds); +} +if(_delegateRespondsToDrawLayerInContextSelector){ +objj_msgSend(_delegate,"drawLayer:inContext:",_6c,_6e); +} +} +}),new objj_method(sel_getUid("opacity"),function(_6f,_70){ +with(_6f){ +return _opacity; +} +}),new objj_method(sel_getUid("setOpacity:"),function(_71,_72,_73){ +with(_71){ +if(_opacity==_73){ +return; +} +_opacity=_73; +_DOMElement.style.opacity=_73; +_DOMElement.style.filter="alpha(opacity="+_73*100+")"; +} +}),new objj_method(sel_getUid("setHidden:"),function(_74,_75,_76){ +with(_74){ +_isHidden=_76; +_DOMElement.style.display=_76?"none":"block"; +} +}),new objj_method(sel_getUid("hidden"),function(_77,_78){ +with(_77){ +return _isHidden; +} +}),new objj_method(sel_getUid("isHidden"),function(_79,_7a){ +with(_79){ +return _isHidden; +} +}),new objj_method(sel_getUid("setMasksToBounds:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_masksToBounds==_7d){ +return; +} +_masksToBounds=_7d; +_DOMElement.style.overflow=_masksToBounds?"hidden":"visible"; +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_7e,_7f,_80){ +with(_7e){ +_backgroundColor=_80; +objj_msgSend(_7e,"setNeedsDisplay"); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_81,_82){ +with(_81){ +return _backgroundColor; +} +}),new objj_method(sel_getUid("sublayers"),function(_83,_84){ +with(_83){ +return _sublayers; +} +}),new objj_method(sel_getUid("superlayer"),function(_85,_86){ +with(_85){ +return _superlayer; +} +}),new objj_method(sel_getUid("addSublayer:"),function(_87,_88,_89){ +with(_87){ +objj_msgSend(_87,"insertSublayer:atIndex:",_89,_sublayers.length); +return; +if(_DOMContentsElement&&_89._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"addObject:",_89); +_DOMElement.appendChild(_89._DOMElement); +} +}),new objj_method(sel_getUid("removeFromSuperlayer"),function(_8a,_8b){ +with(_8a){ +if(_owningView){ +objj_msgSend(_owningView,"setLayer:",nil); +} +if(!_superlayer){ +return; +} +_superlayer._DOMElement.removeChild(_DOMElement); +objj_msgSend(_superlayer._sublayers,"removeObject:",_8a); +_superlayer=nil; +} +}),new objj_method(sel_getUid("insertSublayer:atIndex:"),function(_8c,_8d,_8e,_8f){ +with(_8c){ +if(!_8e){ +return; +} +var _90=objj_msgSend(_8e,"superlayer"); +if(_90==_8c){ +var _91=objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_8e); +if(_91==_8f){ +return; +} +objj_msgSend(_sublayers,"removeObjectAtIndex:",_91); +if(_91<_8f){ +--_8f; +} +}else{ +if(_90!=nil){ +objj_msgSend(_8e,"removeFromSuperlayer"); +} +} +if(_DOMContentsElement&&_8e._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"insertObject:atIndex:",_8e,_8f); +if(_8f>=_sublayers.length-1){ +_DOMElement.appendChild(_8e._DOMElement); +}else{ +_DOMElement.insertBefore(_8e._DOMElement,_sublayers[_8f+1]._DOMElement); +} +_8e._superlayer=_8c; +if(_8c!=_90){ +_CALayerRecalculateGeometry(_8e,268435455); +} +} +}),new objj_method(sel_getUid("insertSublayer:below:"),function(_92,_93,_94,_95){ +with(_92){ +var _96=_95?objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_95):0; +objj_msgSend(_92,"insertSublayer:atIndex:",_94,_96==CPNotFound?_sublayers.length:_96); +} +}),new objj_method(sel_getUid("insertSublayer:above:"),function(_97,_98,_99,_9a){ +with(_97){ +var _9b=_9a?objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_9a):_sublayers.length; +if(_9b==CPNotFound){ +objj_msgSend(CPException,"raise:reason:","CALayerNotFoundException","aSublayer is not a sublayer of this layer"); +} +objj_msgSend(_sublayers,"insertObject:atIndex:",_99,_9b==CPNotFound?_sublayers.length:_9b+1); +} +}),new objj_method(sel_getUid("replaceSublayer:with:"),function(_9c,_9d,_9e,_9f){ +with(_9c){ +if(_9e==_9f){ +return; +} +if(_9e._superlayer!=_9c){ +alert("EXCEPTION"); +return; +} +if(_DOMContentsElement&&_9f._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"replaceObjectAtIndex:withObject:",objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_9e),_9f); +_DOMElement.replaceChild(_9e._DOMElement,_9f._DOMElement); +} +}),new objj_method(sel_getUid("registerRunLoopUpdateWithMask:"),function(_a0,_a1,_a2){ +with(_a0){ +if(_2e==nil){ +_2e={}; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("runLoopUpdateLayers"),CALayer,nil,0,[CPDefaultRunLoopMode]); +} +_runLoopUpdateMask|=_a2; +_2e[objj_msgSend(_a0,"UID")]=_a0; +} +}),new objj_method(sel_getUid("setNeedsComposite"),function(_a3,_a4){ +with(_a3){ +objj_msgSend(_a3,"registerRunLoopUpdateWithMask:",_2c); +} +}),new objj_method(sel_getUid("setNeedsDisplay"),function(_a5,_a6){ +with(_a5){ +objj_msgSend(_a5,"registerRunLoopUpdateWithMask:",_2b); +} +}),new objj_method(sel_getUid("setNeedsDisplayOnBoundsChange:"),function(_a7,_a8,_a9){ +with(_a7){ +_needsDisplayOnBoundsChange=_a9; +} +}),new objj_method(sel_getUid("needsDisplayOnBoundsChange"),function(_aa,_ab){ +with(_aa){ +return _needsDisplayOnBoundsChange; +} +}),new objj_method(sel_getUid("setNeedsDisplayInRect:"),function(_ac,_ad,_ae){ +with(_ac){ +_dirtyRect=_ae; +objj_msgSend(_ac,"display"); +} +}),new objj_method(sel_getUid("convertPoint:fromLayer:"),function(_af,_b0,_b1,_b2){ +with(_af){ +return CGPointApplyAffineTransform(_b1,_CALayerGetTransform(_b2,_af)); +} +}),new objj_method(sel_getUid("convertPoint:toLayer:"),function(_b3,_b4,_b5,_b6){ +with(_b3){ +return CGPointApplyAffineTransform(_b5,_CALayerGetTransform(_b3,_b6)); +} +}),new objj_method(sel_getUid("convertRect:fromLayer:"),function(_b7,_b8,_b9,_ba){ +with(_b7){ +return CGRectApplyAffineTransform(_b9,_CALayerGetTransform(_ba,_b7)); +} +}),new objj_method(sel_getUid("convertRect:toLayer:"),function(_bb,_bc,_bd,_be){ +with(_bb){ +return CGRectApplyAffineTransform(_bd,_CALayerGetTransform(_bb,_be)); +} +}),new objj_method(sel_getUid("containsPoint:"),function(_bf,_c0,_c1){ +with(_bf){ +return (_c1.x>=(_bounds.origin.x)&&_c1.y>=(_bounds.origin.y)&&_c1.x<(_bounds.origin.x+_bounds.size.width)&&_c1.y<(_bounds.origin.y+_bounds.size.height)); +} +}),new objj_method(sel_getUid("hitTest:"),function(_c2,_c3,_c4){ +with(_c2){ +if(_isHidden){ +return nil; +} +var _c5=CGPointApplyAffineTransform(_c4,_transformToLayer); +if(!(_c5.x>=(_bounds.origin.x)&&_c5.y>=(_bounds.origin.y)&&_c5.x<(_bounds.origin.x+_bounds.size.width)&&_c5.y<(_bounds.origin.y+_bounds.size.height))){ +return nil; +} +var _c6=nil,_c7=_sublayers.length; +while(_c7--){ +if(_c6=objj_msgSend(_sublayers[_c7],"hitTest:",_c5)){ +return _c6; +} +} +return _c2; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_c8,_c9,_ca){ +with(_c8){ +if(_delegate==_ca){ +return; +} +_delegate=_ca; +_delegateRespondsToDisplayLayerSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("displayLayer:")); +_delegateRespondsToDrawLayerInContextSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("drawLayer:inContext:")); +if(_delegateRespondsToDisplayLayerSelector||_delegateRespondsToDrawLayerInContextSelector){ +objj_msgSend(_c8,"setNeedsDisplay"); +} +} +}),new objj_method(sel_getUid("delegate"),function(_cb,_cc){ +with(_cb){ +return _delegate; +} +}),new objj_method(sel_getUid("_setOwningView:"),function(_cd,_ce,_cf){ +with(_cd){ +_owningView=_cf; +if(_owningView){ +_owningView=_cf; +_bounds.size=CGSizeMakeCopy(objj_msgSend(_owningView,"bounds").size); +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +} +_CALayerRecalculateGeometry(_cd,_23|_22); +} +}),new objj_method(sel_getUid("_owningViewBoundsChanged"),function(_d0,_d1){ +with(_d0){ +_bounds.size=CGSizeMakeCopy(objj_msgSend(_owningView,"bounds").size); +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +_CALayerRecalculateGeometry(_d0,_23|_22); +} +}),new objj_method(sel_getUid("_update"),function(_d2,_d3){ +with(_d2){ +window.loop=true; +var _d4=_runLoopUpdateMask; +if(_d4&_2d){ +_CALayerUpdateDOM(_d2,_d4); +} +if(_d4&_2b){ +objj_msgSend(_d2,"display"); +}else{ +if(_d4&_29||_d4&_2c){ +objj_msgSend(_d2,"composite"); +} +} +_runLoopUpdateMask=0; +window.loop=false; +} +})]); +class_addMethods(_30,[new objj_method(sel_getUid("layer"),function(_d5,_d6){ +with(_d5){ +return objj_msgSend(objj_msgSend(objj_msgSend(_d5,"class"),"alloc"),"init"); +} +}),new objj_method(sel_getUid("runLoopUpdateLayers"),function(_d7,_d8){ +with(_d7){ +for(UID in _2e){ +var _d9=_2e[UID],_da=_d9._runLoopUpdateMask; +if(_da&_2d){ +_CALayerUpdateDOM(_d9,_da); +} +if(_da&_2b){ +objj_msgSend(_d9,"display"); +}else{ +if(_da&_29||_da&_2c){ +objj_msgSend(_d9,"composite"); +} +} +_d9._runLoopUpdateMask=0; +} +window.loop=false; +_2e=nil; +} +})]); +_CALayerUpdateSublayerTransformForSublayers=function(_db){ +var _dc=_db._bounds,_dd=_db._anchorPoint,_de=(_dc.size.width)*_dd.x,_df=(_dc.size.height)*_dd.y; +_db._sublayerTransformForSublayers=CGAffineTransformConcat(CGAffineTransformMakeTranslation(-_de,-_df),CGAffineTransformConcat(_db._sublayerTransform,CGAffineTransformMakeTranslation(_de,_df))); +}; +_CALayerUpdateDOM=function(_e0,_e1){ +var _e2=_e0._DOMElement.style; +if(_e1&_2a){ +_e2.zIndex=_e0._zPosition; +} +var _e3=_e0._backingStoreFrame; +if(_e1&_28){ +_e2.top=ROUND((_e3.origin.y))+"px"; +_e2.left=ROUND((_e3.origin.x))+"px"; +} +if(_e1&_29){ +var _e4=MAX(0,ROUND((_e3.size.width))),_e5=MAX(0,ROUND((_e3.size.height))),_e6=_e0._DOMContentsElement; +_e2.width=_e4+"px"; +_e2.height=_e5+"px"; +if(_e6){ +_e6.width=_e4; +_e6.height=_e5; +_e6.style.width=_e4+"px"; +_e6.style.height=_e5+"px"; +} +} +}; +_CALayerRecalculateGeometry=function(_e7,_e8){ +var _e9=_e7._bounds,_ea=_e7._superlayer,_eb=(_e9.size.width),_ec=(_e9.size.height),_ed=_e7._position,_ee=_e7._anchorPoint,_ef=_e7._affineTransform,_f0={width:_e7._backingStoreFrame.width,height:_e7._backingStoreFrame.height},_f1=_e7._hasCustomBackingStoreFrame; +_e7._transformFromLayer=CGAffineTransformConcat(CGAffineTransformMakeTranslation(-_eb*_ee.x-(_e7._bounds.origin.x),-_ec*_ee.y-(_e7._bounds.origin.y)),CGAffineTransformConcat(_ef,CGAffineTransformMakeTranslation(_ed.x,_ed.y))); +if(_ea&&_ea._hasSublayerTransform){ +var tx=_e7._transformFromLayer.tx*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.ty*_ea._sublayerTransformForSublayers.c+_ea._sublayerTransformForSublayers.tx; +_e7._transformFromLayer.ty=_e7._transformFromLayer.tx*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.ty*_ea._sublayerTransformForSublayers.d+_ea._sublayerTransformForSublayers.ty; +_e7._transformFromLayer.tx=tx; +var a=_e7._transformFromLayer.a*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.b*_ea._sublayerTransformForSublayers.c,b=_e7._transformFromLayer.a*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.b*_ea._sublayerTransformForSublayers.d,c=_e7._transformFromLayer.c*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.d*_ea._sublayerTransformForSublayers.c; +_e7._transformFromLayer.d=_e7._transformFromLayer.c*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.d*_ea._sublayerTransformForSublayers.d; +_e7._transformFromLayer.a=a; +_e7._transformFromLayer.b=b; +_e7._transformFromLayer.c=c; +} +_e7._transformToLayer=CGAffineTransformInvert(_e7._transformFromLayer); +_e7._frame=nil; +_e7._standardBackingStoreFrame=objj_msgSend(_e7,"convertRect:toLayer:",_e9,nil); +if(_ea){ +var _e9=objj_msgSend(_ea,"bounds"),_f2=objj_msgSend(_ea,"convertRect:toLayer:",_e9,nil); +_e7._standardBackingStoreFrame.origin.x-=(_f2.origin.x); +_e7._standardBackingStoreFrame.origin.y-=(_f2.origin.y); +} +var _f3=_e7._standardBackingStoreFrame.origin,_f4=_e7._standardBackingStoreFrame.size; +_f3.x=FLOOR(_f3.x); +_f3.y=FLOOR(_f3.y); +_f4.width=CEIL(_f4.width)+1; +_f4.height=CEIL(_f4.height)+1; +if(!_f1){ +var _f5=CGRectMakeCopy(_e7._standardBackingStoreFrame); +if(ROUND((_f5.origin.x))!=ROUND((_e7._backingStoreFrame.origin.x))||ROUND((_f5.origin.y))!=ROUND((_e7._backingStoreFrame.origin.y))){ +objj_msgSend(_e7,"registerRunLoopUpdateWithMask:",_28); +} +if(((_f5.size.width)!=ROUND((_e7._backingStoreFrame.size.width))||(_f5.size.height)!=ROUND((_e7._backingStoreFrame.size.height)))){ +objj_msgSend(_e7,"registerRunLoopUpdateWithMask:",_29); +} +_e7._backingStoreFrame=_f5; +} +if(_e8&_22&&_e7._needsDisplayOnBoundsChange){ +objj_msgSend(_e7,"setNeedsDisplay"); +}else{ +if(_f1||(_e8&~(_23|_24))){ +objj_msgSend(_e7,"setNeedsComposite"); +} +} +var _f6=_e7._sublayers,_f7=0,_f8=_f6.length; +for(;_f7<_f8;++_f7){ +_CALayerRecalculateGeometry(_f6[_f7],_e8); +} +}; +_CALayerGetTransform=function(_f9,_fa){ +var _fb=CGAffineTransformMakeIdentity(); +if(_f9){ +var _fc=_f9; +while(_fc&&_fc!=_fa){ +var _fd=_fc._transformFromLayer; +var tx=_fb.tx*_fd.a+_fb.ty*_fd.c+_fd.tx; +_fb.ty=_fb.tx*_fd.b+_fb.ty*_fd.d+_fd.ty; +_fb.tx=tx; +var a=_fb.a*_fd.a+_fb.b*_fd.c,b=_fb.a*_fd.b+_fb.b*_fd.d,c=_fb.c*_fd.a+_fb.d*_fd.c; +_fb.d=_fb.c*_fd.b+_fb.d*_fd.d; +_fb.a=a; +_fb.b=b; +_fb.c=c; +_fc=_fc._superlayer; +} +if(_fc==_fa){ +return _fb; +} +} +var _fe=[],_fc=_fa; +while(_fc){ +_fe.push(_fc); +_fc=_fc._superlayer; +} +var _ff=_fe.length; +while(_ff--){ +var _100=_fe[_ff]._transformToLayer; +var tx=_fb.tx*_100.a+_fb.ty*_100.c+_100.tx; +_fb.ty=_fb.tx*_100.b+_fb.ty*_100.d+_100.ty; +_fb.tx=tx; +var a=_fb.a*_100.a+_fb.b*_100.c,b=_fb.a*_100.b+_fb.b*_100.d,c=_fb.c*_100.a+_fb.d*_100.c; +_fb.d=_fb.c*_100.b+_fb.d*_100.d; +_fb.a=a; +_fb.b=b; +_fb.c=c; +} +return _fb; +}; +p;23;CAMediaTimingFunction.jt;2263;@STATIC;1.0;I;21;Foundation/CPObject.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;2162; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +kCAMediaTimingFunctionLinear="kCAMediaTimingFunctionLinear"; +kCAMediaTimingFunctionEaseIn="kCAMediaTimingFunctionEaseIn"; +kCAMediaTimingFunctionEaseOut="kCAMediaTimingFunctionEaseOut"; +kCAMediaTimingFunctionEaseInEaseOut="kCAMediaTimingFunctionEaseInEaseOut"; +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CAMediaTimingFunction"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_c1x"),new objj_ivar("_c1y"),new objj_ivar("_c2x"),new objj_ivar("_c2y")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithControlPoints::::"),function(_4,_5,_6,_7,_8,_9){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CAMediaTimingFunction").super_class},"init"); +if(_4){ +_c1x=_6; +_c1y=_7; +_c2x=_8; +_c2y=_9; +} +return _4; +} +}),new objj_method(sel_getUid("getControlPointAtIndex:values:"),function(_a,_b,_c,_d){ +with(_a){ +if(_c==0){ +_d[0]=0; +_d[1]=0; +}else{ +if(_c==1){ +_d[0]=_c1x; +_d[1]=_c1y; +}else{ +if(_c==2){ +_d[0]=_c2x; +_d[1]=_c2y; +}else{ +_d[0]=1; +_d[1]=1; +} +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("functionWithName:"),function(_e,_f,_10){ +with(_e){ +if(!_1){ +_1=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0,0,1,1),kCAMediaTimingFunctionLinear); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0.42,0,1,1),kCAMediaTimingFunctionEaseIn); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0,0,0.58,1),kCAMediaTimingFunctionEaseOut); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0.42,0,0.58,1),kCAMediaTimingFunctionEaseInEaseOut); +} +return objj_msgSend(_1,"objectForKey:",_10); +} +}),new objj_method(sel_getUid("functionWithControlPoints::::"),function(_11,_12,c1x,c1y,c2x,c2y){ +with(_11){ +return objj_msgSend(objj_msgSend(_11,"alloc"),"initWithControlPoints::::",c1x,c1y,c2x,c2y); +} +})]); +p;19;CGAffineTransform.jt;2936;@STATIC;1.0;i;12;CGGeometry.jt;2900; +objj_executeFile("CGGeometry.j",YES); +CGAffineTransformMake=function(a,b,c,d,tx,ty){ +return {a:a,b:b,c:c,d:d,tx:tx,ty:ty}; +}; +CGAffineTransformMakeIdentity=function(){ +return {a:1,b:0,c:0,d:1,tx:0,ty:0}; +}; +CGAffineTransformMakeCopy=function(_1){ +return {a:_1.a,b:_1.b,c:_1.c,d:_1.d,tx:_1.tx,ty:_1.ty}; +}; +CGAffineTransformMakeScale=function(sx,sy){ +return {a:sx,b:0,c:0,d:sy,tx:0,ty:0}; +}; +CGAffineTransformMakeTranslation=function(tx,ty){ +return {a:1,b:0,c:0,d:1,tx:tx,ty:ty}; +}; +CGAffineTransformTranslate=function(_2,tx,ty){ +return {a:_2.a,b:_2.b,c:_2.c,d:_2.d,tx:_2.tx+_2.a*tx+_2.c*ty,ty:_2.ty+_2.b*tx+_2.d*ty}; +}; +CGAffineTransformScale=function(_3,sx,sy){ +return {a:_3.a*sx,b:_3.b*sx,c:_3.c*sy,d:_3.d*sy,tx:_3.tx,ty:_3.ty}; +}; +CGAffineTransformConcat=function(_4,_5){ +return {a:_4.a*_5.a+_4.b*_5.c,b:_4.a*_5.b+_4.b*_5.d,c:_4.c*_5.a+_4.d*_5.c,d:_4.c*_5.b+_4.d*_5.d,tx:_4.tx*_5.a+_4.ty*_5.c+_5.tx,ty:_4.tx*_5.b+_4.ty*_5.d+_5.ty}; +}; +CGPointApplyAffineTransform=function(_6,_7){ +return {x:_6.x*_7.a+_6.y*_7.c+_7.tx,y:_6.x*_7.b+_6.y*_7.d+_7.ty}; +}; +CGSizeApplyAffineTransform=function(_8,_9){ +return {width:_8.width*_9.a+_8.height*_9.c,height:_8.width*_9.b+_8.height*_9.d}; +}; +CGAffineTransformIsIdentity=function(_a){ +return (_a.a==1&&_a.b==0&&_a.c==0&&_a.d==1&&_a.tx==0&&_a.ty==0); +}; +CGAffineTransformEqualToTransform=function(_b,_c){ +return (_b.a==_c.a&&_b.b==_c.b&&_b.c==_c.c&&_b.d==_c.d&&_b.tx==_c.tx&&_b.ty==_c.ty); +}; +CGStringCreateWithCGAffineTransform=function(_d){ +return (" [[ "+_d.a+", "+_d.b+", 0 ], [ "+_d.c+", "+_d.d+", 0 ], [ "+_d.tx+", "+_d.ty+", 1]]"); +}; +CGAffineTransformCreateCopy=function(_e){ +return {a:_e.a,b:_e.b,c:_e.c,d:_e.d,tx:_e.tx,ty:_e.ty}; +}; +CGAffineTransformMakeRotation=function(_f){ +var sin=SIN(_f),cos=COS(_f); +return {a:cos,b:sin,c:-sin,d:cos,tx:0,ty:0}; +}; +CGAffineTransformRotate=function(_10,_11){ +var sin=SIN(_11),cos=COS(_11); +return {a:_10.a*cos+_10.c*sin,b:_10.b*cos+_10.d*sin,c:_10.c*cos-_10.a*sin,d:_10.d*cos-_10.b*sin,tx:_10.tx,ty:_10.ty}; +}; +CGAffineTransformInvert=function(_12){ +var _13=1/(_12.a*_12.d-_12.b*_12.c); +return {a:_13*_12.d,b:-_13*_12.b,c:-_13*_12.c,d:_13*_12.a,tx:_13*(_12.c*_12.ty-_12.d*_12.tx),ty:_13*(_12.b*_12.tx-_12.a*_12.ty)}; +}; +CGRectApplyAffineTransform=function(_14,_15){ +var top=(_14.origin.y),_16=(_14.origin.x),_17=(_14.origin.x+_14.size.width),_18=(_14.origin.y+_14.size.height),_19=CGPointApplyAffineTransform({x:_16,y:top},_15),_1a=CGPointApplyAffineTransform({x:_17,y:top},_15),_1b=CGPointApplyAffineTransform({x:_16,y:_18},_15),_1c=CGPointApplyAffineTransform({x:_17,y:_18},_15),_1d=MIN(_19.x,_1a.x,_1b.x,_1c.x),_1e=MAX(_19.x,_1a.x,_1b.x,_1c.x),_1f=MIN(_19.y,_1a.y,_1b.y,_1c.y),_20=MAX(_19.y,_1a.y,_1b.y,_1c.y); +return {origin:{x:_1d,y:_1f},size:{width:(_1e-_1d),height:(_20-_1f)}}; +}; +CPStringFromCGAffineTransform=function(_21){ +return "{"+_21.a+", "+_21.b+", "+_21.c+", "+_21.d+", "+_21.tx+", "+_21.ty+"}"; +}; +p;9;CGColor.jt;2143;@STATIC;1.0;i;14;CGColorSpace.jt;2105; +objj_executeFile("CGColorSpace.j",YES); +var _1=0; +CFHashCode=function(_2){ +if(!_2.hash){ +_2.hash=++_1; +} +return _2; +}; +kCGColorWhite="kCGColorWhite"; +kCGColorBlack="kCGColorBlack"; +kCGColorClear="kCGColorClear"; +var _3={}; +CGColorGetConstantColor=function(_4){ +alert("FIX ME"); +}; +CGColorRetain=function(_5){ +return _5; +}; +CGColorRelease=function(){ +}; +CGColorCreate=function(_6,_7){ +if(!_6||!_7){ +return NULL; +} +var _7=_7.slice(); +CGColorSpaceStandardizeComponents(_6,_7); +var _8=CFHashCode(_6)+_7.join(""); +if(_3[_8]){ +return _3[_8]; +} +return _3[_8]={colorspace:_6,pattern:NULL,components:_7}; +}; +CGColorCreateCopy=function(_9){ +return _9; +}; +CGColorCreateGenericGray=function(_a,_b){ +return CGColorCreate(0,[_a,_b]); +}; +CGColorCreateGenericRGB=function(_c,_d,_e,_f){ +return CGColorCreate(0,[_c,_d,_e,_f]); +}; +CGColorCreateGenericCMYK=function(_10,_11,_12,_13,_14){ +return CGColorCreate(0,[_10,_11,_12,_13,_14]); +}; +CGColorCreateCopyWithAlpha=function(_15,_16){ +var _17=_15.components; +if(!_15||_16==_17[_17.length-1]){ +return _15; +} +if(_15.pattern){ +var _18=CGColorCreateWithPattern(_15.colorspace,_15.pattern,_17); +}else{ +var _18=CGColorCreate(_15.colorspace,_17); +} +_18.components[_17.length-1]=_16; +return _18; +}; +CGColorCreateWithPattern=function(_19,_1a,_1b){ +if(!_19||!_1a||!_1b){ +return NULL; +} +return {colorspace:_19,pattern:_1a,components:_1b.slice()}; +}; +CGColorEqualToColor=function(lhs,rhs){ +if(lhs==rhs){ +return true; +} +if(!lhs||!rhs){ +return false; +} +var _1c=lhs.components,_1d=rhs.components,_1e=_1c.length; +if(_1e!=_1d.length){ +return false; +} +while(_1e--){ +if(_1c[_1e]!=_1d[_1e]){ +return false; +} +} +if(lhs.pattern!=rhs.pattern){ +return false; +} +if(CGColorSpaceEqualToColorSpace(lhs.colorspace,rhs.colorspace)){ +return false; +} +return true; +}; +CGColorGetAlpha=function(_1f){ +var _20=_1f.components; +return _20[_20.length-1]; +}; +CGColorGetColorSpace=function(_21){ +return _21.colorspace; +}; +CGColorGetComponents=function(_22){ +return _22.components; +}; +CGColorGetNumberOfComponents=function(_23){ +return _23.components.length; +}; +CGColorGetPattern=function(_24){ +return _24.pattern; +}; +p;14;CGColorSpace.jt;3521;@STATIC;1.0;t;3502; +kCGColorSpaceModelUnknown=-1; +kCGColorSpaceModelMonochrome=0; +kCGColorSpaceModelRGB=1; +kCGColorSpaceModelCMYK=2; +kCGColorSpaceModelLab=3; +kCGColorSpaceModelDeviceN=4; +kCGColorSpaceModelIndexed=5; +kCGColorSpaceModelPattern=6; +kCGColorSpaceGenericGray="CGColorSpaceGenericGray"; +kCGColorSpaceGenericRGB="CGColorSpaceGenericRGB"; +kCGColorSpaceGenericCMYK="CGColorSpaceGenericCMYK"; +kCGColorSpaceGenericRGBLinear="CGColorSpaceGenericRGBLinear"; +kCGColorSpaceGenericRGBHDR="CGColorSpaceGenericRGBHDR"; +kCGColorSpaceAdobeRGB1998="CGColorSpaceAdobeRGB1998"; +kCGColorSpaceSRGB="CGColorSpaceSRGB"; +var _1={}; +CGColorSpaceCreateCalibratedGray=function(_2,_3,_4){ +return {model:kCGColorSpaceModelMonochrome,count:1,base:NULL}; +}; +CGColorSpaceCreateCalibratedRGB=function(_5,_6,_7){ +return {model:kCGColorSpaceModelRGB,count:1,base:NULL}; +}; +CGColorSpaceCreateICCBased=function(_8,_9,_a,_b){ +return NULL; +}; +CGColorSpaceCreateLab=function(_c,_d,_e){ +return NULL; +}; +CGColorSpaceCreateDeviceCMYK=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericCMYK); +}; +CGColorSpaceCreateDeviceGray=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericGray); +}; +CGColorSpaceCreateDeviceRGB=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); +}; +CGColorSpaceCreateWithPlatformColorSpace=function(){ +return NULL; +}; +CGColorSpaceCreateIndexed=function(_f,_10,_11){ +return NULL; +}; +CGColorSpaceCreatePattern=function(_12){ +if(_12){ +return {model:kCGColorSpaceModelPattern,count:_12.count,base:_12}; +} +return {model:kCGColorSpaceModelPattern,count:0,base:NULL}; +}; +CGColorSpaceCreateWithName=function(_13){ +var _14=_1[_13]; +if(_14){ +return _14; +} +switch(_13){ +case kCGColorSpaceGenericGray: +return _1[_13]={model:kCGColorSpaceModelMonochrome,count:1,base:NULL}; +case kCGColorSpaceGenericRGB: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceGenericCMYK: +return _1[_13]={model:kCGColorSpaceModelCMYK,count:4,base:NULL}; +case kCGColorSpaceGenericRGBLinear: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceGenericRGBHDR: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceAdobeRGB1998: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceSRGB: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +} +return NULL; +}; +CGColorSpaceCopyICCProfile=function(_15){ +return NULL; +}; +CGColorSpaceGetNumberOfComponents=function(_16){ +return _16.count; +}; +CGColorSpaceGetTypeID=function(_17){ +}; +CGColorSpaceGetModel=function(_18){ +return _18.model; +}; +CGColorSpaceGetBaseColorSpace=function(_19){ +}; +CGColorSpaceGetColorTableCount=function(_1a){ +}; +CGColorSpaceGetColorTable=function(_1b){ +}; +CGColorSpaceRelease=function(_1c){ +}; +CGColorSpaceRetain=function(_1d){ +return _1d; +}; +CGColorSpaceStandardizeComponents=function(_1e,_1f){ +var _20=_1e.count; +if(_20>_1f.length){ +_1f[_20]=1; +return; +} +var _21=_1f[_20]; +if(_21<0){ +_1f[_20]=0; +}else{ +if(_21>1){ +_1f[_20]=1; +}else{ +_1f[_20]=ROUND(_21*1000)/1000; +} +} +if(_1e.base){ +_1e=_1e.base; +} +switch(_1e.model){ +case kCGColorSpaceModelMonochrome: +case kCGColorSpaceModelRGB: +case kCGColorSpaceModelCMYK: +case kCGColorSpaceModelDeviceN: +while(_20--){ +if(_20>_1f.length){ +_1f[_20]=1; +return; +} +var _21=_1f[_20]; +if(_21<0){ +_1f[_20]=0; +}else{ +if(_21>1){ +_1f[_20]=1; +}else{ +_1f[_20]=ROUND(_21*255)/255; +} +} +} +break; +case kCGColorSpaceModelIndexed: +case kCGColorSpaceModelLab: +case kCGColorSpaceModelPattern: +break; +} +}; +p;11;CGContext.jt;20418;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.ji;8;CGPath.jt;20345; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CGAffineTransform.j",YES); +objj_executeFile("CGPath.j",YES); +kCGLineCapButt=0; +kCGLineCapRound=1; +kCGLineCapSquare=2; +kCGLineJoinMiter=0; +kCGLineJoinRound=1; +kCGLineJoinBevel=2; +kCGPathFill=0; +kCGPathEOFill=1; +kCGPathStroke=2; +kCGPathFillStroke=3; +kCGPathEOFillStroke=4; +kCGBlendModeNormal=0; +kCGBlendModeMultiply=1; +kCGBlendModeScreen=2; +kCGBlendModeOverlay=3; +kCGBlendModeDarken=4; +kCGBlendModeLighten=5; +kCGBlendModeColorDodge=6; +kCGBlendModeColorBurn=7; +kCGBlendModeSoftLight=8; +kCGBlendModeHardLight=9; +kCGBlendModeDifference=10; +kCGBlendModeExclusion=11; +kCGBlendModeHue=12; +kCGBlendModeSaturation=13; +kCGBlendModeColor=14; +kCGBlendModeLuminosity=15; +kCGBlendModeClear=16; +kCGBlendModeCopy=17; +kCGBlendModeSourceIn=18; +kCGBlendModeSourceOut=19; +kCGBlendModeSourceAtop=20; +kCGBlendModeDestinationOver=21; +kCGBlendModeDestinationIn=22; +kCGBlendModeDestinationOut=23; +kCGBlendModeDestinationAtop=24; +kCGBlendModeXOR=25; +kCGBlendModePlusDarker=26; +kCGBlendModePlusLighter=27; +CGContextRelease=function(){ +}; +CGContextRetain=function(_1){ +return _1; +}; +if(!CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +CGGStateCreate=function(){ +return {alpha:1,strokeStyle:"#000",fillStyle:"#ccc",lineWidth:1,lineJoin:kCGLineJoinMiter,lineCap:kCGLineCapButt,miterLimit:10,globalAlpha:1,blendMode:kCGBlendModeNormal,shadowOffset:{width:0,height:0},shadowBlur:0,shadowColor:NULL,CTM:{a:1,b:0,c:0,d:1,tx:0,ty:0}}; +}; +CGGStateCreateCopy=function(_2){ +return {alpha:_2.alpha,strokeStyle:_2.strokeStyle,fillStyle:_2.fillStyle,lineWidth:_2.lineWidth,lineJoin:_2.lineJoin,lineCap:_2.lineCap,miterLimit:_2.miterLimit,globalAlpha:_2.globalAlpha,blendMode:_2.blendMode,shadowOffset:_2.shadowOffset,shadowBlur:_2.shadowBlur,shadowColor:_2.shadowColor,CTM:{a:_2.CTM.a,b:_2.CTM.b,c:_2.CTM.c,d:_2.CTM.d,tx:_2.CTM.tx,ty:_2.CTM.ty}}; +}; +CGBitmapGraphicsContextCreate=function(){ +return {DOMElement:document.createElement("div"),path:NULL,gState:CGGStateCreate(),gStateStack:[]}; +}; +CGContextSaveGState=function(_3){ +_3.gStateStack.push(CGGStateCreateCopy(_3.gState)); +}; +CGContextRestoreGState=function(_4){ +_4.gState=_4.gStateStack.pop(); +}; +CGContextSetLineCap=function(_5,_6){ +_5.gState.lineCap=_6; +}; +CGContextSetLineJoin=function(_7,_8){ +_7.gState.lineJoin=_8; +}; +CGContextSetLineWidth=function(_9,_a){ +_9.gState.lineWidth=_a; +}; +CGContextSetMiterLimit=function(_b,_c){ +_b.gState.miterLimit=_c; +}; +CGContextSetBlendMode=function(_d,_e){ +_d.gState.blendMode=_e; +}; +CGContextAddArc=function(_f,x,y,_10,_11,_12,_13){ +CGPathAddArc(_f.path,_f.gState.CTM,x,y,_10,_11,_12,_13); +}; +CGContextAddArcToPoint=function(_14,x1,y1,x2,y2,_15){ +CGPathAddArcToPoint(_14.path,_14.gState.CTM,x1,y1,x2,y2,_15); +}; +CGContextAddCurveToPoint=function(_16,_17,_18,_19,_1a,x,y){ +CGPathAddCurveToPoint(_16.path,_16.gState.CTM,_17,_18,_19,_1a,x,y); +}; +CGContextAddLines=function(_1b,_1c,_1d){ +CGPathAddLines(_1b.path,_1b.gState.CTM,_1c,_1d); +}; +CGContextAddLineToPoint=function(_1e,x,y){ +CGPathAddLineToPoint(_1e.path,_1e.gState.CTM,x,y); +}; +CGContextAddPath=function(_1f,_20){ +if(!_1f||CGPathIsEmpty(_20)){ +return; +} +if(!_1f.path){ +_1f.path=CGPathCreateMutable(); +} +CGPathAddPath(_1f.path,_1f.gState.CTM,_20); +}; +CGContextAddQuadCurveToPoint=function(_21,cpx,cpy,x,y){ +CGPathAddQuadCurveToPoint(_21.path,_21.gState.CTM,cpx,cpy,x,y); +}; +CGContextAddRect=function(_22,_23){ +CGPathAddRect(_22.path,_22.gState.CTM,_23); +}; +CGContextAddRects=function(_24,_25,_26){ +CGPathAddRects(_24.path,_24.gState.CTM,_25,_26); +}; +CGContextBeginPath=function(_27){ +_27.path=CGPathCreateMutable(); +}; +CGContextClosePath=function(_28){ +CGPathCloseSubpath(_28.path); +}; +CGContextMoveToPoint=function(_29,x,y){ +if(!_29.path){ +_29.path=CGPathCreateMutable(); +} +CGPathMoveToPoint(_29.path,_29.gState.CTM,x,y); +}; +CGContextFillRect=function(_2a,_2b){ +CGContextFillRects(_2a,[_2b],1); +}; +CGContextFillRects=function(_2c,_2d,_2e){ +if(arguments[2]===undefined){ +var _2e=_2d.length; +} +CGContextBeginPath(_2c); +CGContextAddRects(_2c,_2d,_2e); +CGContextClosePath(_2c); +CGContextDrawPath(_2c,kCGPathFill); +}; +CGContextStrokeRect=function(_2f,_30){ +CGContextBeginPath(_2f); +CGContextAddRect(_2f,_30); +CGContextClosePath(_2f); +CGContextDrawPath(_2f,kCGPathStroke); +}; +CGContextStrokeRectWithWidth=function(_31,_32,_33){ +CGContextSaveGState(_31); +CGContextSetLineWidth(_31,_33); +CGContextStrokeRect(_31,_32); +CGContextRestoreGState(_31); +}; +CGContextConcatCTM=function(_34,_35){ +var CTM=_34.gState.CTM; +var tx=CTM.tx*_35.a+CTM.ty*_35.c+_35.tx; +CTM.ty=CTM.tx*_35.b+CTM.ty*_35.d+_35.ty; +CTM.tx=tx; +var a=CTM.a*_35.a+CTM.b*_35.c,b=CTM.a*_35.b+CTM.b*_35.d,c=CTM.c*_35.a+CTM.d*_35.c; +CTM.d=CTM.c*_35.b+CTM.d*_35.d; +CTM.a=a; +CTM.b=b; +CTM.c=c; +}; +CGContextGetCTM=function(_36){ +return _36.gState.CTM; +}; +CGContextRotateCTM=function(_37,_38){ +var _39=_37.gState; +_39.CTM=CGAffineTransformRotate(_39.CTM,_38); +}; +CGContextScaleCTM=function(_3a,sx,sy){ +var _3b=_3a.gState; +_3b.CTM={a:_3b.CTM.a*sx,b:_3b.CTM.b*sx,c:_3b.CTM.c*sy,d:_3b.CTM.d*sy,tx:_3b.CTM.tx,ty:_3b.CTM.ty}; +}; +CGContextTranslateCTM=function(_3c,tx,ty){ +var _3d=_3c.gState; +_3d.CTM={a:_3d.CTM.a,b:_3d.CTM.b,c:_3d.CTM.c,d:_3d.CTM.d,tx:_3d.CTM.tx+_3d.CTM.a*tx+_3d.CTM.c*ty,ty:_3d.CTM.ty+_3d.CTM.b*tx+_3d.CTM.d*ty}; +}; +CGContextSetShadow=function(_3e,_3f,_40){ +var _41=_3e.gState; +_41.shadowOffset={width:_3f.width,height:_3f.height}; +_41.shadowBlur=_40; +_41.shadowColor=objj_msgSend(CPColor,"shadowColor"); +}; +CGContextSetShadowWithColor=function(_42,_43,_44,_45){ +var _46=_42.gState; +_46.shadowOffset={width:_43.width,height:_43.height}; +_46.shadowBlur=_44; +_46.shadowColor=_45; +}; +CGContextSetAlpha=function(_47,_48){ +_47.gState.alpha=MAX(MIN(_48,1),0); +}; +} +CGContextEOFillPath=function(_49){ +CGContextDrawPath(_49,kCGPathEOFill); +}; +CGContextFillPath=function(_4a){ +CGContextDrawPath(_4a,kCGPathFill); +}; +var _4b=4*((SQRT2-1)/3); +CGContextAddEllipseInRect=function(_4c,_4d){ +CGContextBeginPath(_4c); +CGContextAddPath(_4c,CGPathWithEllipseInRect(_4d)); +CGContextClosePath(_4c); +}; +CGContextFillEllipseInRect=function(_4e,_4f){ +CGContextBeginPath(_4e); +CGContextAddEllipseInRect(_4e,_4f); +CGContextClosePath(_4e); +CGContextFillPath(_4e); +}; +CGContextStrokeEllipseInRect=function(_50,_51){ +CGContextBeginPath(_50); +CGContextAddEllipseInRect(_50,_51); +CGContextClosePath(_50); +CGContextStrokePath(_50); +}; +CGContextStrokePath=function(_52){ +CGContextDrawPath(_52,kCGPathStroke); +}; +CGContextStrokeLineSegments=function(_53,_54,_55){ +var i=0; +if(arguments["count"]==NULL){ +var _55=_54.length; +} +CGContextBeginPath(_53); +for(;i<_55;i+=2){ +CGContextMoveToPoint(_53,_54[i].x,_54[i].y); +CGContextAddLineToPoint(_53,_54[i+1].x,_54[i+1].y); +} +CGContextStrokePath(_53); +}; +CGContextSetFillColor=function(_56,_57){ +if(_57){ +_56.gState.fillStyle=objj_msgSend(_57,"cssString"); +} +}; +CGContextSetStrokeColor=function(_58,_59){ +if(_59){ +_58.gState.strokeStyle=objj_msgSend(_59,"cssString"); +} +}; +CGContextFillRoundedRectangleInRect=function(_5a,_5b,_5c,ne,se,sw,nw){ +CGContextBeginPath(_5a); +CGContextAddPath(_5a,CGPathWithRoundedRectangleInRect(_5b,_5c,_5c,ne,se,sw,nw)); +CGContextClosePath(_5a); +CGContextFillPath(_5a); +}; +CGContextStrokeRoundedRectangleInRect=function(_5d,_5e,_5f,ne,se,sw,nw){ +CGContextBeginPath(_5d); +CGContextAddPath(_5d,CGPathWithRoundedRectangleInRect(_5e,_5f,_5f,ne,se,sw,nw)); +CGContextClosePath(_5d); +CGContextStrokePath(_5d); +}; +if(CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +var _60=["butt","round","square"],_61=["miter","round","bevel"],_62=["source-over","source-over","source-over","source-over","darker","lighter","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","copy","source-in","source-out","source-atop","destination-over","destination-in","destination-out","destination-atop","xor","source-over","source-over"]; +CGContextSaveGState=function(_63){ +_63.save(); +}; +CGContextRestoreGState=function(_64){ +_64.restore(); +}; +CGContextSetLineCap=function(_65,_66){ +_65.lineCap=_60[_66]; +}; +CGContextSetLineJoin=function(_67,_68){ +_67.lineJoin=_61[_68]; +}; +CGContextSetLineWidth=function(_69,_6a){ +_69.lineWidth=_6a; +}; +CGContextSetMiterLimit=function(_6b,_6c){ +_6b.miterLimit=_6c; +}; +CGContextSetBlendMode=function(_6d,_6e){ +_6d.globalCompositeOperation=_62[_6e]; +}; +CGContextAddArc=function(_6f,x,y,_70,_71,_72,_73){ +_6f.arc(x,y,_70,_71,_72,!_73); +}; +CGContextAddArcToPoint=function(_74,x1,y1,x2,y2,_75){ +_74.arcTo(x1,y1,x2,y2,_75); +}; +CGContextAddCurveToPoint=function(_76,_77,_78,_79,_7a,x,y){ +_76.bezierCurveTo(_77,_78,_79,_7a,x,y); +}; +CGContextAddLineToPoint=function(_7b,x,y){ +_7b.lineTo(x,y); +}; +CGContextAddPath=function(_7c,_7d){ +if(!_7c||CGPathIsEmpty(_7d)){ +return; +} +var _7e=_7d.elements,i=0,_7f=_7d.count; +for(;i<_7f;++i){ +var _80=_7e[i],_81=_80.type; +switch(_81){ +case kCGPathElementMoveToPoint: +_7c.moveTo(_80.x,_80.y); +break; +case kCGPathElementAddLineToPoint: +_7c.lineTo(_80.x,_80.y); +break; +case kCGPathElementAddQuadCurveToPoint: +_7c.quadraticCurveTo(_80.cpx,_80.cpy,_80.x,_80.y); +break; +case kCGPathElementAddCurveToPoint: +_7c.bezierCurveTo(_80.cp1x,_80.cp1y,_80.cp2x,_80.cp2y,_80.x,_80.y); +break; +case kCGPathElementCloseSubpath: +_7c.closePath(); +break; +case kCGPathElementAddArc: +_7c.arc(_80.x,_80.y,_80.radius,_80.startAngle,_80.endAngle,_80.clockwise); +break; +case kCGPathElementAddArcTo: +break; +} +} +}; +CGContextAddRect=function(_82,_83){ +_82.rect((_83.origin.x),(_83.origin.y),(_83.size.width),(_83.size.height)); +}; +CGContextAddRects=function(_84,_85,_86){ +var i=0; +if(arguments["count"]==NULL){ +var _86=_85.length; +} +for(;i<_86;++i){ +var _87=_85[i]; +_84.rect((_87.origin.x),(_87.origin.y),(_87.size.width),(_87.size.height)); +} +}; +CGContextBeginPath=function(_88){ +_88.beginPath(); +}; +CGContextClosePath=function(_89){ +_89.closePath(); +}; +CGContextMoveToPoint=function(_8a,x,y){ +_8a.moveTo(x,y); +}; +CGContextClearRect=function(_8b,_8c){ +_8b.clearRect((_8c.origin.x),(_8c.origin.y),(_8c.size.width),(_8c.size.height)); +}; +CGContextDrawPath=function(_8d,_8e){ +if(_8e==kCGPathFill||_8e==kCGPathFillStroke){ +_8d.fill(); +}else{ +if(_8e==kCGPathEOFill||_8e==kCGPathEOFillStroke){ +alert("not implemented!!!"); +} +} +if(_8e==kCGPathStroke||_8e==kCGPathFillStroke||_8e==kCGPathEOFillStroke){ +_8d.stroke(); +} +}; +CGContextFillRect=function(_8f,_90){ +_8f.fillRect((_90.origin.x),(_90.origin.y),(_90.size.width),(_90.size.height)); +}; +CGContextFillRects=function(_91,_92,_93){ +var i=0; +if(arguments["count"]==NULL){ +var _93=_92.length; +} +for(;i<_93;++i){ +var _94=_92[i]; +_91.fillRect((_94.origin.x),(_94.origin.y),(_94.size.width),(_94.size.height)); +} +}; +CGContextStrokeRect=function(_95,_96){ +_95.strokeRect((_96.origin.x),(_96.origin.y),(_96.size.width),(_96.size.height)); +}; +CGContextClip=function(_97){ +_97.clip(); +}; +CGContextClipToRect=function(_98,_99){ +_98.beginPath(); +_98.rect((_99.origin.x),(_99.origin.y),(_99.size.width),(_99.size.height)); +_98.closePath(); +_98.clip(); +}; +CGContextClipToRects=function(_9a,_9b,_9c){ +if(arguments["count"]==NULL){ +var _9c=_9b.length; +} +_9a.beginPath(); +CGContextAddRects(_9a,_9b,_9c); +_9a.clip(); +}; +CGContextSetAlpha=function(_9d,_9e){ +_9d.globalAlpha=_9e; +}; +CGContextSetFillColor=function(_9f,_a0){ +_9f.fillStyle=objj_msgSend(_a0,"cssString"); +}; +CGContextSetStrokeColor=function(_a1,_a2){ +_a1.strokeStyle=objj_msgSend(_a2,"cssString"); +}; +CGContextSetShadow=function(_a3,_a4,_a5){ +_a3.shadowOffsetX=_a4.width; +_a3.shadowOffsetY=_a4.height; +_a3.shadowBlur=_a5; +}; +CGContextSetShadowWithColor=function(_a6,_a7,_a8,_a9){ +_a6.shadowOffsetX=_a7.width; +_a6.shadowOffsetY=_a7.height; +_a6.shadowBlur=_a8; +_a6.shadowColor=objj_msgSend(_a9,"cssString"); +}; +CGContextRotateCTM=function(_aa,_ab){ +_aa.rotate(_ab); +}; +CGContextScaleCTM=function(_ac,sx,sy){ +_ac.scale(sx,sy); +}; +CGContextTranslateCTM=function(_ad,tx,ty){ +_ad.translate(tx,ty); +}; +eigen=function(_ae){ +alert("IMPLEMENT ME!"); +}; +if(CPFeatureIsCompatible(CPJavaScriptCanvasTransformFeature)){ +CGContextConcatCTM=function(_af,_b0){ +_af.transform(_b0.a,_b0.b,_b0.c,_b0.d,_b0.tx,_b0.ty); +}; +}else{ +CGContextConcatCTM=function(_b1,_b2){ +var a=_b2.a,b=_b2.b,c=_b2.c,d=_b2.d,tx=_b2.tx,ty=_b2.ty,sx=1,sy=1,a1=0,a2=0; +if(b==0&&c==0){ +sx=a; +sy=d; +}else{ +if(a*b==-c*d){ +var _b3=(a*d<0||b*c>0)?-1:1,a2=(ATAN2(b,d)+ATAN2(-_b3*c,_b3*a))/2,cos=COS(a2),sin=SIN(a2); +if(cos==0){ +sx=-c/sin; +sy=b/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +} +} +}else{ +if(a*c==-b*d){ +var _b3=(a*d<0||b*c>0)?-1:1; +a1=(Math.atan2(_b3*b,_b3*a)+Math.atan2(-c,d))/2,cos=COS(a1),sin=SIN(a1); +if(cos==0){ +sx=b/sin; +sy=-c/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +} +} +}else{ +var _b4=CGAffineTransformMake(a,c,b,d,0,0),u=eigen(CGAffineTransformConcat(_b2,_b4)),v=eigen(CGAffineTransformConcat(_b4,_b2)),U=CGAffineTransformMake(u.vector_1.x,u.vector_2.x,u.vector_1.y,u.vector_2.y,0,0),VT=CGAffineTransformMake(v.vector_1.x,v.vector_1.y,v.vector_2.x,v.vector_2.y,0,0),S=CGAffineTransformConcat(CGAffineTransformConcat(CGAffineTransformInvert(U),_b2),CGAffineTransformInvert(VT)); +a=VT.a; +b=VT.b; +c=VT.c; +d=VT.d; +var _b3=(a*d<0||b*c>0)?-1:1,a2=(ATAN2(b,d)+ATAN2(-_b3*c,_b3*a))/2,cos=COS(a2),sin=SIN(a2); +if(cos==0){ +sx=-c/sin; +sy=b/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +} +} +S.a*=sx; +S.d*=sy; +a=U.a; +b=U.b; +c=U.c; +d=U.d; +var _b3=(a*d<0||b*c>0)?-1:1; +a1=(Math.atan2(_b3*b,_b3*a)+Math.atan2(-c,d))/2,cos=COS(a1),sin=SIN(a1); +if(cos==0){ +sx=b/sin; +sy=-c/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +} +} +sx=S.a*sx; +sy=S.d*sy; +} +} +} +if(tx!=0||ty!=0){ +CGContextTranslateCTM(_b1,tx,ty); +} +if(a1!=0){ +CGContextRotateCTM(_b1,a1); +} +if(sx!=1||sy!=1){ +CGContextScaleCTM(_b1,sx,sy); +} +if(a2!=0){ +CGContextRotateCTM(_b1,a2); +} +}; +} +CGContextDrawImage=function(_b5,_b6,_b7){ +_b5.drawImage(_b7._image,(_b6.origin.x),(_b6.origin.y),(_b6.size.width),(_b6.size.height)); +}; +to_string=function(_b8){ +return "rgba("+ROUND(_b8.components[0]*255)+", "+ROUND(_b8.components[1]*255)+", "+ROUND(255*_b8.components[2])+", "+_b8.components[3]+")"; +}; +CGContextDrawLinearGradient=function(_b9,_ba,_bb,_bc,_bd){ +var _be=_ba.colors,_bf=_be.length,_c0=_b9.createLinearGradient(_bb.x,_bb.y,_bc.x,_bc.y); +while(_bf--){ +_c0.addColorStop(_ba.locations[_bf],to_string(_be[_bf])); +} +_b9.fillStyle=_c0; +_b9.fill(); +}; +CGBitmapGraphicsContextCreate=function(){ +var _c1=document.createElement("canvas"),_c2=_c1.getContext("2d"); +_c2.DOMElement=_c1; +return _c2; +}; +}else{ +if(CPFeatureIsCompatible(CPVMLFeature)){ +var _c3=["f","t"],_c4=["flat","round","square"],_c5=["miter","round","bevel"],_c6=[" m "," l ","qb"," c "," x ",[" at "," wa "]]; +var _c7=CGBitmapGraphicsContextCreate; +CGBitmapGraphicsContextCreate=function(){ +document.namespaces.add("cg_vml_","urn:schemas-microsoft-com:vml"); +document.createStyleSheet().cssText="cg_vml_\\:*{behavior:url(#default#VML)}"; +CGBitmapGraphicsContextCreate=_c7; +return _c7(); +}; +CGContextClearRect=function(_c8,_c9){ +if(_c8.buffer!=nil){ +_c8.buffer=""; +}else{ +_c8.DOMElement.innerHTML=""; +} +_c8.path=NULL; +}; +var W=10,H=10,Z=10,Z_2=Z/2; +CGContextDrawImage=function(_ca,_cb,_cc){ +var _cd=""; +if(_cc.buffer!=nil){ +_cd=_cc.buffer; +}else{ +var ctm=_ca.gState.CTM,_ce=CGPointApplyAffineTransform(_cb.origin,ctm),_cf=ctm.a==ctm.d&&ctm.b==-ctm.c,vml=[""); +_cd=vml.join(""); +} +if(_ca.buffer!=nil){ +_ca.buffer+=_cd; +}else{ +_ca.DOMElement.insertAdjacentHTML("BeforeEnd",_cd); +} +}; +CGContextDrawPath=function(_d1,_d2){ +if(!_d1||CGPathIsEmpty(_d1.path)){ +return; +} +var _d3=_d1.path.elements,i=0,_d4=_d1.path.count,_d5=_d1.gState,_d6=(_d2==kCGPathFill||_d2==kCGPathFillStroke)?1:0,_d7=(_d2==kCGPathStroke||_d2==kCGPathFillStroke)?1:0,_d8=_d5.alpha,vml=["=x){ +if(_df.y"); +if(_d5.gradient){ +vml.push(_d5.gradient); +}else{ +if(_d6){ +vml.push(""); +} +} +if(_d7){ +vml.push(""); +} +var _e0=_d5.shadowColor; +if(_e0){ +var _e1=_d5.shadowOffset; +vml.push(""); +} +vml.push(""); +_d1.path=NULL; +if(_d1.buffer!=nil){ +_d1.buffer+=vml.join(""); +}else{ +_d1.DOMElement.insertAdjacentHTML("BeforeEnd",vml.join("")); +} +}; +to_string=function(_e2){ +return "rgb("+ROUND(_e2.components[0]*255)+", "+ROUND(_e2.components[1]*255)+", "+ROUND(255*_e2.components[2])+")"; +}; +CGContextDrawLinearGradient=function(_e3,_e4,_e5,_e6,_e7){ +if(!_e3||!_e4){ +return; +} +var vml=nil; +if(_e4.vml_gradient){ +var _e8=objj_msgSend(objj_msgSend(_e4.vml_gradient,"stops"),"sortedArrayUsingSelector:",sel_getUid("comparePosition:")),_e9=objj_msgSend(_e8,"count"); +vml=[""); +}else{ +var _ea=_e4.colors,_e9=_ea.length; +vml=[""); +} +_e3.gState.gradient=vml.join(""); +}; +} +} +p;12;CGGeometry.jt;6756;@STATIC;1.0;t;6737; +CGPointMake=function(x,y){ +return {x:x,y:y}; +}; +CGPointMakeZero=function(){ +return {x:0,y:0}; +}; +CGPointMakeCopy=function(_1){ +return {x:_1.x,y:_1.y}; +}; +CGPointCreateCopy=function(_2){ +return {x:_2.x,y:_2.y}; +}; +CGPointEqualToPoint=function(_3,_4){ +return (_3.x==_4.x&&_3.y==_4.y); +}; +CGStringFromPoint=function(_5){ +return ("{"+_5.x+", "+_5.y+"}"); +}; +CGSizeMake=function(_6,_7){ +return {width:_6,height:_7}; +}; +CGSizeMakeZero=function(){ +return {width:0,height:0}; +}; +CGSizeMakeCopy=function(_8){ +return {width:_8.width,height:_8.height}; +}; +CGSizeCreateCopy=function(_9){ +return {width:_9.width,height:_9.height}; +}; +CGSizeEqualToSize=function(_a,_b){ +return (_a.width==_b.width&&_a.height==_b.height); +}; +CGStringFromSize=function(_c){ +return ("{"+_c.width+", "+_c.height+"}"); +}; +CGRectMake=function(x,y,_d,_e){ +return {origin:{x:x,y:y},size:{width:_d,height:_e}}; +}; +CGRectMakeZero=function(){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +}; +CGRectMakeCopy=function(_f){ +return {origin:{x:_f.origin.x,y:_f.origin.y},size:{width:_f.size.width,height:_f.size.height}}; +}; +CGRectCreateCopy=function(_10){ +return {origin:{x:_10.origin.x,y:_10.origin.y},size:{width:_10.size.width,height:_10.size.height}}; +}; +CGRectEqualToRect=function(_11,_12){ +return ((_11.origin.x==_12.origin.x&&_11.origin.y==_12.origin.y)&&(_11.size.width==_12.size.width&&_11.size.height==_12.size.height)); +}; +CGStringFromRect=function(_13){ +return ("{"+("{"+_13.origin.x+", "+_13.origin.y+"}")+", "+("{"+_13.size.width+", "+_13.size.height+"}")+"}"); +}; +CGRectOffset=function(_14,dX,dY){ +return {origin:{x:_14.origin.x+dX,y:_14.origin.y+dY},size:{width:_14.size.width,height:_14.size.height}}; +}; +CGRectInset=function(_15,dX,dY){ +return {origin:{x:_15.origin.x+dX,y:_15.origin.y+dY},size:{width:_15.size.width-2*dX,height:_15.size.height-2*dY}}; +}; +CGRectGetHeight=function(_16){ +return (_16.size.height); +}; +CGRectGetMaxX=function(_17){ +return (_17.origin.x+_17.size.width); +}; +CGRectGetMaxY=function(_18){ +return (_18.origin.y+_18.size.height); +}; +CGRectGetMidX=function(_19){ +return (_19.origin.x+(_19.size.width)/2); +}; +CGRectGetMidY=function(_1a){ +return (_1a.origin.y+(_1a.size.height)/2); +}; +CGRectGetMinX=function(_1b){ +return (_1b.origin.x); +}; +CGRectGetMinY=function(_1c){ +return (_1c.origin.y); +}; +CGRectGetWidth=function(_1d){ +return (_1d.size.width); +}; +CGRectIsEmpty=function(_1e){ +return (_1e.size.width<=0||_1e.size.height<=0); +}; +CGRectIsNull=function(_1f){ +return (_1f.size.width<=0||_1f.size.height<=0); +}; +CGRectContainsPoint=function(_20,_21){ +return (_21.x>=(_20.origin.x)&&_21.y>=(_20.origin.y)&&_21.x<(_20.origin.x+_20.size.width)&&_21.y<(_20.origin.y+_20.size.height)); +}; +CGInsetMake=function(top,_22,_23,_24){ +return {top:(top),right:(_22),bottom:(_23),left:(_24)}; +}; +CGInsetMakeZero=function(){ +return {top:(0),right:(0),bottom:(0),left:(0)}; +}; +CGInsetMakeCopy=function(_25){ +return {top:(_25.top),right:(_25.right),bottom:(_25.bottom),left:(_25.left)}; +}; +CGInsetIsEmpty=function(_26){ +return ((_26).top===0&&(_26).right===0&&(_26).bottom===0&&(_26).left===0); +}; +CGInsetEqualToInset=function(_27,_28){ +return ((_27).top===(_28).top&&(_27).right===(_28).right&&(_27).bottom===(_28).bottom&&(_27).left===(_28).left); +}; +CGMinXEdge=0; +CGMinYEdge=1; +CGMaxXEdge=2; +CGMaxYEdge=3; +CGRectNull={origin:{x:Infinity,y:Infinity},size:{width:0,height:0}}; +CGRectDivide=function(_29,_2a,rem,_2b,_2c){ +_2a.origin={x:_29.origin.x,y:_29.origin.y}; +_2a.size={width:_29.size.width,height:_29.size.height}; +rem.origin={x:_29.origin.x,y:_29.origin.y}; +rem.size={width:_29.size.width,height:_29.size.height}; +switch(_2c){ +case CGMinXEdge: +_2a.size.width=_2b; +rem.origin.x+=_2b; +rem.size.width-=_2b; +break; +case CGMaxXEdge: +_2a.origin.x=(_2a.origin.x+_2a.size.width)-_2b; +_2a.size.width=_2b; +rem.size.width-=_2b; +break; +case CGMinYEdge: +_2a.size.height=_2b; +rem.origin.y+=_2b; +rem.size.height-=_2b; +break; +case CGMaxYEdge: +_2a.origin.y=(_2a.origin.y+_2a.size.height)-_2b; +_2a.size.height=_2b; +rem.size.height-=_2b; +} +}; +CGRectContainsRect=function(_2d,_2e){ +var _2f=CGRectUnion(_2d,_2e); +return ((_2f.origin.x==_2d.origin.x&&_2f.origin.y==_2d.origin.y)&&(_2f.size.width==_2d.size.width&&_2f.size.height==_2d.size.height)); +}; +CGRectIntersectsRect=function(_30,_31){ +var _32=CGRectIntersection(_30,_31); +return !(_32.size.width<=0||_32.size.height<=0); +}; +CGRectIntegral=function(_33){ +_33=CGRectStandardize(_33); +var x=FLOOR((_33.origin.x)),y=FLOOR((_33.origin.y)); +_33.size.width=CEIL((_33.origin.x+_33.size.width))-x; +_33.size.height=CEIL((_33.origin.y+_33.size.height))-y; +_33.origin.x=x; +_33.origin.y=y; +return _33; +}; +CGRectIntersection=function(_34,_35){ +var _36={origin:{x:MAX((_34.origin.x),(_35.origin.x)),y:MAX((_34.origin.y),(_35.origin.y))},size:{width:0,height:0}}; +_36.size.width=MIN((_34.origin.x+_34.size.width),(_35.origin.x+_35.size.width))-(_36.origin.x); +_36.size.height=MIN((_34.origin.y+_34.size.height),(_35.origin.y+_35.size.height))-(_36.origin.y); +return (_36.size.width<=0||_36.size.height<=0)?{origin:{x:0,y:0},size:{width:0,height:0}}:_36; +}; +CGRectStandardize=function(_37){ +var _38=(_37.size.width),_39=(_37.size.height),_3a={origin:{x:_37.origin.x,y:_37.origin.y},size:{width:_37.size.width,height:_37.size.height}}; +if(_38<0){ +_3a.origin.x+=_38; +_3a.size.width=-_38; +} +if(_39<0){ +_3a.origin.y+=_39; +_3a.size.height=-_39; +} +return _3a; +}; +CGRectUnion=function(_3b,_3c){ +var _3d=!_3b||_3b===CGRectNull,_3e=!_3c||_3c===CGRectNull; +if(_3d){ +return _3e?CGRectNull:_3c; +} +if(_3e){ +return _3d?CGRectNull:_3b; +} +var _3f=MIN((_3b.origin.x),(_3c.origin.x)),_40=MIN((_3b.origin.y),(_3c.origin.y)),_41=MAX((_3b.origin.x+_3b.size.width),(_3c.origin.x+_3c.size.width)),_42=MAX((_3b.origin.y+_3b.size.height),(_3c.origin.y+_3c.size.height)); +return {origin:{x:_3f,y:_40},size:{width:_41-_3f,height:_42-_40}}; +}; +CGPointFromString=function(_43){ +var _44=_43.indexOf(","); +return {x:parseInt(_43.substr(1,_44-1)),y:parseInt(_43.substring(_44+1,_43.length))}; +}; +CGSizeFromString=function(_45){ +var _46=_45.indexOf(","); +return {width:parseInt(_45.substr(1,_46-1)),height:parseInt(_45.substring(_46+1,_45.length))}; +}; +CGRectFromString=function(_47){ +var _48=_47.indexOf(",",_47.indexOf(",")+1); +return {origin:CGPointFromString(_47.substr(1,_48-1)),size:CGSizeFromString(_47.substring(_48+2,_47.length))}; +}; +CGPointFromEvent=function(_49){ +return {x:_49.clientX,y:_49.clientY}; +}; +CGInsetFromString=function(_4a){ +var _4b=_4a.substr(1,_4a.length-2).split(","); +return {top:(parseFloat(_4b[0])),right:(parseFloat(_4b[1])),bottom:(parseFloat(_4b[2])),left:(parseFloat(_4b[3]))}; +}; +CGInsetFromCPString=CGInsetFromString; +CPStringFromCGInset=function(_4c){ +return "{"+_4c.top+", "+_4c.left+", "+_4c.bottom+", "+_4c.right+"}"; +}; +p;12;CGGradient.jt;622;@STATIC;1.0;i;9;CGColor.ji;14;CGColorSpace.jt;572; +objj_executeFile("CGColor.j",YES); +objj_executeFile("CGColorSpace.j",YES); +kCGGradientDrawsBeforeStartLocation=1<<0; +kCGGradientDrawsAfterEndLocation=1<<1; +CGGradientCreateWithColorComponents=function(_1,_2,_3,_4){ +if(arguments["count"]==NULL){ +var _4=_3.length; +} +var _5=[]; +while(_4--){ +var _6=_4*4; +_5[_4]=CGColorCreate(_1,_2.slice(_6,_6+4)); +} +return CGGradientCreateWithColors(_1,_5,_3); +}; +CGGradientCreateWithColors=function(_7,_8,_9){ +return {colorspace:_7,colors:_8,locations:_9}; +}; +CGGradientRelease=function(){ +}; +CGGradientRetain=function(_a){ +return _a; +}; +p;8;CGPath.jt;7466;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.jt;7406; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CGAffineTransform.j",YES); +kCGPathElementMoveToPoint=0; +kCGPathElementAddLineToPoint=1; +kCGPathElementAddQuadCurveToPoint=2; +kCGPathElementAddCurveToPoint=3; +kCGPathElementCloseSubpath=4; +kCGPathElementAddArc=5; +kCGPathElementAddArcToPoint=6; +CGPathCreateMutable=function(){ +return {count:0,start:NULL,current:NULL,elements:[]}; +}; +CGPathCreateMutableCopy=function(_1){ +var _2=CGPathCreateMutable(); +CGPathAddPath(_2,_1); +return _2; +}; +CGPathCreateCopy=function(_3){ +return CGPathCreateMutableCopy(_3); +}; +CGPathRelease=function(_4){ +}; +CGPathRetain=function(_5){ +return _5; +}; +CGPathAddArc=function(_6,_7,x,y,_8,_9,_a,_b){ +if(_7&&!(_7.a==1&&_7.b==0&&_7.c==0&&_7.d==1&&_7.tx==0&&_7.ty==0)){ +var _c={x:x,y:y},_d={x:COS(_a),y:SIN(_a)},_e={x:COS(_9),y:SIN(_9)}; +_d={x:_d.x*_7.a+_d.y*_7.c+_7.tx,y:_d.x*_7.b+_d.y*_7.d+_7.ty}; +_e={x:_e.x*_7.a+_e.y*_7.c+_7.tx,y:_e.x*_7.b+_e.y*_7.d+_7.ty}; +_c={x:_c.x*_7.a+_c.y*_7.c+_7.tx,y:_c.x*_7.b+_c.y*_7.d+_7.ty}; +x=_c.x; +y=_c.y; +var _f=_a,_10=_9; +_a=ATAN2(_d.y-_7.ty,_d.x-_7.tx); +_9=ATAN2(_e.y-_7.ty,_e.x-_7.tx); +if(_a==_9&&_f!=_10){ +if(_10>_f){ +_a=_a-PI2; +}else{ +_9=_9-PI2; +} +} +_8={width:_8,height:0}; +_8={width:_8.width*_7.a+_8.height*_7.c,height:_8.width*_7.b+_8.height*_7.d}; +_8=SQRT(_8.width*_8.width+_8.height*_8.height); +} +_6.current={x:x+_8*COS(_a),y:y+_8*SIN(_a)}; +_6.elements[_6.count++]={type:kCGPathElementAddArc,x:x,y:y,radius:_8,startAngle:_9,endAngle:_a}; +}; +CGPathAddArcToPoint=function(_11,_12,x1,y1,x2,y2,_13){ +}; +CGPathAddCurveToPoint=function(_14,_15,_16,_17,_18,_19,x,y){ +var cp1={x:_16,y:_17},cp2={x:_18,y:_19},end={x:x,y:y}; +if(_15){ +cp1={x:cp1.x*_15.a+cp1.y*_15.c+_15.tx,y:cp1.x*_15.b+cp1.y*_15.d+_15.ty}; +cp2={x:cp2.x*_15.a+cp2.y*_15.c+_15.tx,y:cp2.x*_15.b+cp2.y*_15.d+_15.ty}; +end={x:end.x*_15.a+end.y*_15.c+_15.tx,y:end.x*_15.b+end.y*_15.d+_15.ty}; +} +_14.current=end; +_14.elements[_14.count++]={type:kCGPathElementAddCurveToPoint,cp1x:cp1.x,cp1y:cp1.y,cp2x:cp2.x,cp2y:cp2.y,x:end.x,y:end.y}; +}; +CGPathAddLines=function(_1a,_1b,_1c,_1d){ +var i=1; +if(arguments["count"]==NULL){ +var _1d=_1c.length; +} +if(!_1a||_1d<2){ +return; +} +CGPathMoveToPoint(_1a,_1b,_1c[0].x,_1c[0].y); +for(;i<_1d;++i){ +CGPathAddLineToPoint(_1a,_1b,_1c[i].x,_1c[i].y); +} +}; +CGPathAddLineToPoint=function(_1e,_1f,x,y){ +var _20={x:x,y:y}; +if(_1f!=NULL){ +_20={x:_20.x*_1f.a+_20.y*_1f.c+_1f.tx,y:_20.x*_1f.b+_20.y*_1f.d+_1f.ty}; +} +_1e.elements[_1e.count++]={type:kCGPathElementAddLineToPoint,x:_20.x,y:_20.y}; +_1e.current=_20; +}; +CGPathAddPath=function(_21,_22,_23){ +for(var i=0,_24=_23.count;i<_24;++i){ +var _25=_23.elements[i]; +switch(_25.type){ +case kCGPathElementAddLineToPoint: +CGPathAddLineToPoint(_21,_22,_25.x,_25.y); +break; +case kCGPathElementAddCurveToPoint: +CGPathAddCurveToPoint(_21,_22,_25.cp1x,_25.cp1y,_25.cp2x,_25.cp2y,_25.x,_25.y); +break; +case kCGPathElementAddArc: +CGPathAddArc(_21,_22,_25.x,_25.y,_25.radius,_25.startAngle,_25.endAngle,_25.isClockwise); +break; +case kCGPathElementAddQuadCurveToPoint: +CGPathAddQuadCurveToPoint(_21,_22,_25.cpx,_25.cpy,_25.x,_25.y); +break; +case kCGPathElementMoveToPoint: +CGPathMoveToPoint(_21,_22,_25.x,_25.y); +break; +case kCGPathElementCloseSubpath: +CGPathCloseSubpath(_21); +break; +} +} +}; +CGPathAddQuadCurveToPoint=function(_26,_27,cpx,cpy,x,y){ +var cp={x:cpx,y:cpy},end={x:x,y:y}; +if(_27){ +cp={x:cp.x*_27.a+cp.y*_27.c+_27.tx,y:cp.x*_27.b+cp.y*_27.d+_27.ty}; +end={x:end.x*_27.a+end.y*_27.c+_27.tx,y:end.x*_27.b+end.y*_27.d+_27.ty}; +} +_26.elements[_26.count++]={type:kCGPathElementAddQuadCurveToPoint,cpx:cp.x,cpy:cp.y,x:end.x,y:end.y}; +_26.current=end; +}; +CGPathAddRect=function(_28,_29,_2a){ +CGPathAddRects(_28,_29,[_2a],1); +}; +CGPathAddRects=function(_2b,_2c,_2d,_2e){ +var i=0; +if(arguments["count"]==NULL){ +var _2e=_2d.length; +} +for(;i<_2e;++i){ +var _2f=_2d[i]; +CGPathMoveToPoint(_2b,_2c,(_2f.origin.x),(_2f.origin.y)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x+_2f.size.width),(_2f.origin.y)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x+_2f.size.width),(_2f.origin.y+_2f.size.height)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x),(_2f.origin.y+_2f.size.height)); +CGPathCloseSubpath(_2b); +} +}; +CGPathMoveToPoint=function(_30,_31,x,y){ +var _32={x:x,y:y},_33=_30.count; +if(_31!=NULL){ +_32={x:_32.x*_31.a+_32.y*_31.c+_31.tx,y:_32.x*_31.b+_32.y*_31.d+_31.ty}; +} +_30.start=_32; +_30.current=_32; +var _34=_30.elements[_33-1]; +if(_33!=0&&_34.type==kCGPathElementMoveToPoint){ +_34.x=_32.x; +_34.y=_32.y; +}else{ +_30.elements[_30.count++]={type:kCGPathElementMoveToPoint,x:_32.x,y:_32.y}; +} +}; +var _35=4*((SQRT2-1)/3); +CGPathWithEllipseInRect=function(_36){ +var _37=CGPathCreateMutable(); +if((_36.size.width)==(_36.size.height)){ +CGPathAddArc(_37,nil,(_36.origin.x+(_36.size.width)/2),(_36.origin.y+(_36.size.height)/2),(_36.size.width)/2,0,2*PI,YES); +}else{ +var _38={width:(_36.size.width)/2,height:(_36.size.height)/2},_39={x:(_36.origin.x)+_38.width,y:(_36.origin.y)+_38.height}; +CGPathMoveToPoint(_37,nil,_39.x,_39.y-_38.height); +CGPathAddCurveToPoint(_37,nil,_39.x+(_35*_38.width),_39.y-_38.height,_39.x+_38.width,_39.y-(_35*_38.height),_39.x+_38.width,_39.y); +CGPathAddCurveToPoint(_37,nil,_39.x+_38.width,_39.y+(_35*_38.height),_39.x+(_35*_38.width),_39.y+_38.height,_39.x,_39.y+_38.height); +CGPathAddCurveToPoint(_37,nil,_39.x-(_35*_38.width),_39.y+_38.height,_39.x-_38.width,_39.y+(_35*_38.height),_39.x-_38.width,_39.y); +CGPathAddCurveToPoint(_37,nil,_39.x-_38.width,_39.y-(_35*_38.height),_39.x-(_35*_38.width),_39.y-_38.height,_39.x,_39.y-_38.height); +} +CGPathCloseSubpath(_37); +return _37; +}; +CGPathWithRoundedRectangleInRect=function(_3a,_3b,_3c,ne,se,sw,nw){ +var _3d=CGPathCreateMutable(),_3e=(_3a.origin.x),_3f=(_3a.origin.x+_3a.size.width),_40=(_3a.origin.y),_41=(_3a.origin.y+_3a.size.height); +CGPathMoveToPoint(_3d,nil,_3e+_3b,_40); +if(ne){ +CGPathAddLineToPoint(_3d,nil,_3f-_3b,_40); +CGPathAddCurveToPoint(_3d,nil,_3f-_3b,_40,_3f,_40,_3f,_40+_3b); +}else{ +CGPathAddLineToPoint(_3d,nil,_3f,_40); +} +if(se){ +CGPathAddLineToPoint(_3d,nil,_3f,_41-_3b); +CGPathAddCurveToPoint(_3d,nil,_3f,_41-_3b,_3f,_41,_3f-_3b,_41); +}else{ +CGPathAddLineToPoint(_3d,nil,_3f,_41); +} +if(sw){ +CGPathAddLineToPoint(_3d,nil,_3e+_3b,_41); +CGPathAddCurveToPoint(_3d,nil,_3e+_3b,_41,_3e,_41,_3e,_41-_3b); +}else{ +CGPathAddLineToPoint(_3d,nil,_3e,_41); +} +if(nw){ +CGPathAddLineToPoint(_3d,nil,_3e,_40+_3b); +CGPathAddCurveToPoint(_3d,nil,_3e,_40+_3b,_3e,_40,_3e+_3b,_40); +}else{ +CGPathAddLineToPoint(_3d,nil,_3e,_40); +} +CGPathCloseSubpath(_3d); +return _3d; +}; +CGPathCloseSubpath=function(_42){ +var _43=_42.count; +if(_43==0||_42.elements[_43-1].type==kCGPathElementCloseSubpath){ +return; +} +_42.elements[_42.count++]={type:kCGPathElementCloseSubpath,points:[_42.start]}; +}; +CGPathEqualToPath=function(_44,_45){ +if(_44==_45){ +return YES; +} +if(_44.count!=_45.count||!(_44.start.x==_45.start.x&&_44.start.y==_45.start.y)||!(_44.current.x==_45.current.x&&_44.current.y==_45.current.y)){ +return NO; +} +var i=0,_46=_44.count; +for(;i<_46;++i){ +var _47=_44[i],_48=_45[i]; +if(_47.type!=_48.type){ +return NO; +} +if((_47.type==kCGPathElementAddArc||_47.type==kCGPathElementAddArcToPoint)&&_47.radius!=_48.radius){ +return NO; +} +var j=_47.points.length; +while(j--){ +if(!(_47.points[j].x==_48.points[j].x&&_47.points[j].y==_48.points[j].y)){ +return NO; +} +} +} +return YES; +}; +CGPathGetCurrentPoint=function(_49){ +return {x:_49.current.x,y:_49.current.y}; +}; +CGPathIsEmpty=function(_4a){ +return !_4a||_4a.count==0; +}; +p;18;_CPMenuBarWindow.jt;13231;@STATIC;1.0;i;15;_CPMenuWindow.jt;13191; +objj_executeFile("_CPMenuWindow.j",YES); +var _1=28,_2=10,_3=10,_4=10; +var _5=nil,_6=nil; +var _7=objj_allocateClassPair(CPPanel,"_CPMenuBarWindow"),_8=_7.isa; +class_addIvars(_7,[new objj_ivar("_menu"),new objj_ivar("_highlightView"),new objj_ivar("_menuItemViews"),new objj_ivar("_trackingMenuItem"),new objj_ivar("_iconImageView"),new objj_ivar("_titleField"),new objj_ivar("_textColor"),new objj_ivar("_titleColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_titleShadowColor"),new objj_ivar("_highlightColor"),new objj_ivar("_highlightTextColor"),new objj_ivar("_highlightTextShadowColor")]); +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("init"),function(_9,_a){ +with(_9){ +var _b=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"contentBounds"); +_b.size.height=_1; +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPMenuBarWindow").super_class},"initWithContentRect:styleMask:",_b,CPBorderlessWindowMask); +if(_9){ +objj_msgSend(_9,"setLevel:",CPMainMenuWindowLevel); +objj_msgSend(_9,"setAutoresizingMask:",CPWindowWidthSizable); +var _c=objj_msgSend(_9,"contentView"); +objj_msgSend(_c,"setAutoresizesSubviews:",NO); +objj_msgSend(_9,"setBecomesKeyOnlyIfNeeded:",YES); +_iconImageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(0,0,16,16)); +objj_msgSend(_c,"addSubview:",_iconImageView); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",13)); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_c,"addSubview:",_titleField); +} +return _9; +} +}),new objj_method(sel_getUid("setTitle:"),function(_d,_e,_f){ +with(_d){ +var _10=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPBundleName"); +if(!objj_msgSend(_10,"length")){ +document.title=_f; +}else{ +if(objj_msgSend(_f,"length")){ +document.title=_f+" - "+_10; +}else{ +document.title=_10; +} +} +objj_msgSend(_titleField,"setStringValue:",_f); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_d,"tile"); +} +}),new objj_method(sel_getUid("setIconImage:"),function(_11,_12,_13){ +with(_11){ +objj_msgSend(_iconImageView,"setImage:",_13); +objj_msgSend(_iconImageView,"setHidden:",_13==nil); +objj_msgSend(_11,"tile"); +} +}),new objj_method(sel_getUid("setIconImageAlphaValue:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_iconImageView,"setAlphaValue:",_16); +} +}),new objj_method(sel_getUid("setColor:"),function(_17,_18,_19){ +with(_17){ +if(!_19){ +if(!_5){ +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPMenuBarWindow,"class")),"pathForResource:","_CPMenuBarWindow/_CPMenuBarWindowBackground.png"),CGSizeMake(1,28))); +} +objj_msgSend(objj_msgSend(_17,"contentView"),"setBackgroundColor:",_5); +}else{ +objj_msgSend(objj_msgSend(_17,"contentView"),"setBackgroundColor:",_19); +} +} +}),new objj_method(sel_getUid("setTextColor:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_textColor==_1c){ +return; +} +_textColor=_1c; +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setTextColor:"),_textColor); +} +}),new objj_method(sel_getUid("setTitleColor:"),function(_1d,_1e,_1f){ +with(_1d){ +if(_titleColor==_1f){ +return; +} +_titleColor=_1f; +objj_msgSend(_titleField,"setTextColor:",_1f?_1f:objj_msgSend(CPColor,"blackColor")); +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_20,_21,_22){ +with(_20){ +if(_textShadowColor==_22){ +return; +} +_textShadowColor=_22; +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setTextShadowColor:"),_textShadowColor); +} +}),new objj_method(sel_getUid("setTitleShadowColor:"),function(_23,_24,_25){ +with(_23){ +if(_titleShadowColor==_25){ +return; +} +_titleShadowColor=_25; +objj_msgSend(_titleField,"setTextShadowColor:",_25?_25:objj_msgSend(CPColor,"whiteColor")); +} +}),new objj_method(sel_getUid("setHighlightColor:"),function(_26,_27,_28){ +with(_26){ +if(_highlightColor==_28){ +return; +} +_highlightColor=_28; +} +}),new objj_method(sel_getUid("setHighlightTextColor:"),function(_29,_2a,_2b){ +with(_29){ +if(_highlightTextColor==_2b){ +return; +} +_highlightTextColor=_2b; +} +}),new objj_method(sel_getUid("setHighlightTextShadowColor:"),function(_2c,_2d,_2e){ +with(_2c){ +if(_highlightTextShadowColor==_2e){ +return; +} +_highlightTextShadowColor=_2e; +} +}),new objj_method(sel_getUid("setMenu:"),function(_2f,_30,_31){ +with(_2f){ +if(_menu==_31){ +return; +} +var _32=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_menu){ +objj_msgSend(_32,"removeObserver:name:object:",_2f,CPMenuDidAddItemNotification,_menu); +objj_msgSend(_32,"removeObserver:name:object:",_2f,CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_32,"removeObserver:name:object:",_2f,CPMenuDidRemoveItemNotification,_menu); +var _33=objj_msgSend(_menu,"itemArray"),_34=_33.length; +while(_34--){ +objj_msgSend(objj_msgSend(_33[_34],"_menuItemView"),"removeFromSuperview"); +} +} +_menu=_31; +if(_menu){ +objj_msgSend(_32,"addObserver:selector:name:object:",_2f,sel_getUid("menuDidAddItem:"),CPMenuDidAddItemNotification,_menu); +objj_msgSend(_32,"addObserver:selector:name:object:",_2f,sel_getUid("menuDidChangeItem:"),CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_32,"addObserver:selector:name:object:",_2f,sel_getUid("menuDidRemoveItem:"),CPMenuDidRemoveItemNotification,_menu); +} +_menuItemViews=[]; +var _35=objj_msgSend(_2f,"contentView"),_33=objj_msgSend(_menu,"itemArray"),_34=_33.length; +for(index=0;index<_34;++index){ +var _36=_33[index],_37=objj_msgSend(_36,"_menuItemView"); +_menuItemViews.push(_37); +objj_msgSend(_37,"setTextColor:",_textColor); +objj_msgSend(_37,"setHidden:",objj_msgSend(_36,"isHidden")); +objj_msgSend(_37,"synchronizeWithMenuItem"); +objj_msgSend(_35,"addSubview:",_37); +} +objj_msgSend(_2f,"tile"); +} +}),new objj_method(sel_getUid("menuDidChangeItem:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(_menu,"itemAtIndex:",objj_msgSend(objj_msgSend(_3a,"userInfo"),"objectForKey:","CPMenuItemIndex")),_3c=objj_msgSend(_3b,"_menuItemView"); +objj_msgSend(_3c,"setHidden:",objj_msgSend(_3b,"isHidden")); +objj_msgSend(_3c,"synchronizeWithMenuItem"); +objj_msgSend(_38,"tile"); +} +}),new objj_method(sel_getUid("menuDidAddItem:"),function(_3d,_3e,_3f){ +with(_3d){ +var _40=objj_msgSend(objj_msgSend(_3f,"userInfo"),"objectForKey:","CPMenuItemIndex"),_41=objj_msgSend(_menu,"itemAtIndex:",_40),_42=objj_msgSend(_41,"_menuItemView"); +objj_msgSend(_menuItemViews,"insertObject:atIndex:",_42,_40); +objj_msgSend(_42,"setTextColor:",_textColor); +objj_msgSend(_42,"setHidden:",objj_msgSend(_41,"isHidden")); +objj_msgSend(_42,"synchronizeWithMenuItem"); +objj_msgSend(objj_msgSend(_3d,"contentView"),"addSubview:",_42); +objj_msgSend(_3d,"tile"); +} +}),new objj_method(sel_getUid("menuDidRemoveItem:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(objj_msgSend(_45,"userInfo"),"objectForKey:","CPMenuItemIndex"),_47=objj_msgSend(_menuItemViews,"objectAtIndex:",_46); +objj_msgSend(_menuItemViews,"removeObjectAtIndex:",_46); +objj_msgSend(_47,"removeFromSuperview"); +objj_msgSend(_43,"tile"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_48,_49,_4a){ +with(_48){ +var _4b=CGRectInset(objj_msgSend(objj_msgSend(_48,"platformWindow"),"visibleFrame"),5,0); +_4b.size.height-=5; +objj_msgSend(objj_msgSend(_CPMenuManager,"sharedMenuManager"),"beginTracking:menuContainer:constraintRect:callback:",_4a,_48,_4b,function(_4c,_4d){ +objj_msgSend(_4d,"_performActionOfHighlightedItemChain"); +objj_msgSend(_4d,"_highlightItemAtIndex:",CPNotFound); +}); +} +}),new objj_method(sel_getUid("font"),function(_4e,_4f){ +with(_4e){ +objj_msgSend(CPFont,"systemFontOfSize:",12); +} +}),new objj_method(sel_getUid("tile"),function(_50,_51){ +with(_50){ +var _52=objj_msgSend(_menu,"itemArray"),_53=0,_54=_52.length,x=_3,y=0,_55=YES; +for(;_53<_54;++_53){ +var _56=_52[_53]; +if(objj_msgSend(_56,"isSeparatorItem")){ +x=CGRectGetWidth(objj_msgSend(_50,"frame"))-_4; +_55=NO; +continue; +} +if(objj_msgSend(_56,"isHidden")){ +continue; +} +var _57=objj_msgSend(_56,"_menuItemView"),_58=objj_msgSend(_57,"frame"); +if(_55){ +objj_msgSend(_57,"setFrame:",CGRectMake(x,0,CGRectGetWidth(_58),_1)); +x+=CGRectGetWidth(objj_msgSend(_57,"frame")); +}else{ +objj_msgSend(_57,"setFrame:",CGRectMake(x-CGRectGetWidth(_58),0,CGRectGetWidth(_58),_1)); +x=CGRectGetMinX(objj_msgSend(_57,"frame")); +} +} +var _59=objj_msgSend(objj_msgSend(_50,"contentView"),"bounds"),_5a=objj_msgSend(_titleField,"frame"); +if(objj_msgSend(_iconImageView,"isHidden")){ +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_59)-CGRectGetWidth(_5a))/2,(CGRectGetHeight(_59)-CGRectGetHeight(_5a))/2)); +}else{ +var _5b=objj_msgSend(_iconImageView,"frame"),_5c=CGRectGetWidth(_5b),_5d=_5c+CGRectGetWidth(_5a); +objj_msgSend(_iconImageView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_59)-_5d)/2,(CGRectGetHeight(_59)-CGRectGetHeight(_5b))/2)); +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_59)-_5d)/2+_5c,(CGRectGetHeight(_59)-CGRectGetHeight(_5a))/2)); +} +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_5e,_5f,_60,_61,_62){ +with(_5e){ +var _63=objj_msgSend(_5e,"frame").size; +objj_msgSendSuper({receiver:_5e,super_class:objj_getClass("_CPMenuBarWindow").super_class},"setFrame:display:animate:",_60,_61,_62); +if(!(_63.width==_60.size.width&&_63.height==_60.size.height)){ +objj_msgSend(_5e,"tile"); +} +} +})]); +class_addMethods(_8,[new objj_method(sel_getUid("initialize"),function(_64,_65){ +with(_64){ +if(_64!=objj_msgSend(_CPMenuBarWindow,"class")){ +return; +} +var _66=objj_msgSend(CPBundle,"bundleForClass:",_64); +_6=objj_msgSend(CPFont,"boldSystemFontOfSize:",12); +} +}),new objj_method(sel_getUid("font"),function(_67,_68){ +with(_67){ +return _6; +} +})]); +var _7=objj_getClass("_CPMenuBarWindow"); +if(!_7){ +throw new SyntaxError("*** Could not find definition for class \"_CPMenuBarWindow\""); +} +var _8=_7.isa; +class_addMethods(_7,[new objj_method(sel_getUid("isMenuBar"),function(_69,_6a){ +with(_69){ +return YES; +} +}),new objj_method(sel_getUid("globalFrame"),function(_6b,_6c){ +with(_6b){ +return objj_msgSend(_6b,"frame"); +} +}),new objj_method(sel_getUid("scrollingStateForPoint:"),function(_6d,_6e,_6f){ +with(_6d){ +return _CPMenuManagerScrollingStateNone; +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_70,_71,_72){ +with(_70){ +var _73=objj_msgSend(_menu,"itemArray"),_74=_73.length; +while(_74--){ +var _75=_73[_74]; +if(objj_msgSend(_75,"isHidden")||objj_msgSend(_75,"isSeparatorItem")){ +continue; +} +if(CGRectContainsPoint(objj_msgSend(_70,"rectForItemAtIndex:",_74),_72)){ +return _74; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_76,_77,_78){ +with(_76){ +var _79=objj_msgSend(_menu,"itemAtIndex:",_78===CPNotFound?0:_78); +return objj_msgSend(objj_msgSend(_79,"_menuItemView"),"frame"); +} +})]); +var _7=objj_allocateClassPair(_CPMenuView,"_CPMenuBarView"),_8=_7.isa; +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("rectForItemAtIndex:"),function(_7a,_7b,_7c){ +with(_7a){ +return objj_msgSend(_menuItemViews[_7c===CPNotFound?0:_7c],"frame"); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_7d,_7e,_7f){ +with(_7d){ +var _80=objj_msgSend(_7d,"bounds"); +if(!CGRectContainsPoint(_80,_7f)){ +return CPNotFound; +} +var x=_7f.x,low=0,_81=_visibleMenuItemInfos.length-1; +while(low<=_81){ +var _82=FLOOR(low+(_81-low)/2),_83=_visibleMenuItemInfos[_82],_84=objj_msgSend(_83.view,"frame"); +if(xCGRectGetMaxX(_84)){ +low=_82+1; +}else{ +return _83.index; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tile"),function(_85,_86){ +with(_85){ +var _87=objj_msgSend(_menu,"itemArray"),_88=0,_89=_87.length,x=_3,y=0,_8a=YES; +for(;_88<_89;++_88){ +var _8b=_87[_88]; +if(objj_msgSend(_8b,"isSeparatorItem")){ +x=CGRectGetWidth(objj_msgSend(_85,"frame"))-_4; +_8a=NO; +continue; +} +if(objj_msgSend(_8b,"isHidden")){ +continue; +} +var _8c=objj_msgSend(_8b,"_menuItemView"),_8d=objj_msgSend(_8c,"frame"); +if(_8a){ +objj_msgSend(_8c,"setFrameOrigin:",CGPointMake(x,(_1-1-CGRectGetHeight(_8d))/2)); +x+=CGRectGetWidth(objj_msgSend(_8c,"frame"))+_2; +}else{ +objj_msgSend(_8c,"setFrameOrigin:",CGPointMake(x-CGRectGetWidth(_8d),(_1-1-CGRectGetHeight(_8d))/2)); +x=CGRectGetMinX(objj_msgSend(_8c,"frame"))-_2; +} +} +var _8e=objj_msgSend(objj_msgSend(_85,"contentView"),"bounds"),_8f=objj_msgSend(_titleField,"frame"); +if(objj_msgSend(_iconImageView,"isHidden")){ +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8e)-CGRectGetWidth(_8f))/2,(CGRectGetHeight(_8e)-CGRectGetHeight(_8f))/2)); +}else{ +var _90=objj_msgSend(_iconImageView,"frame"),_91=CGRectGetWidth(_90),_92=_91+CGRectGetWidth(_8f); +objj_msgSend(_iconImageView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8e)-_92)/2,(CGRectGetHeight(_8e)-CGRectGetHeight(_90))/2)); +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8e)-_92)/2+_91,(CGRectGetHeight(_8e)-CGRectGetHeight(_8f))/2)); +} +} +})]); +p;16;_CPMenuManager.jt;8469;@STATIC;1.0;I;21;Foundation/CPObject.jt;8424; +objj_executeFile("Foundation/CPObject.j",NO); +_CPMenuManagerScrollingStateUp=-1,_CPMenuManagerScrollingStateDown=1,_CPMenuManagerScrollingStateNone=0; +var _1=500; +var _2=nil; +var _3=objj_allocateClassPair(CPObject,"_CPMenuManager"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_startTime"),new objj_ivar("_scrollingState"),new objj_ivar("_lastGlobalLocation"),new objj_ivar("_lastMouseOverMenuView"),new objj_ivar("_constraintRect"),new objj_ivar("_menuContainerStack"),new objj_ivar("_trackingCallback")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +if(_2){ +return _2; +} +return objj_msgSendSuper({receiver:_5,super_class:objj_getClass("_CPMenuManager").super_class},"init"); +} +}),new objj_method(sel_getUid("trackingMenuContainer"),function(_7,_8){ +with(_7){ +return _menuContainerStack[0]; +} +}),new objj_method(sel_getUid("trackingMenu"),function(_9,_a){ +with(_9){ +return objj_msgSend(objj_msgSend(_9,"trackingMenuContainer"),"menu"); +} +}),new objj_method(sel_getUid("beginTracking:menuContainer:constraintRect:callback:"),function(_b,_c,_d,_e,_f,_10){ +with(_b){ +var _11=objj_msgSend(_e,"menu"); +CPApp._activeMenu=_11; +_startTime=objj_msgSend(_d,"timestamp"); +_scrollingState=_CPMenuManagerScrollingStateNone; +_constraintRect=_f; +_menuContainerStack=[_e]; +_trackingCallback=_10; +if(_11===objj_msgSend(CPApp,"mainMenu")){ +var _12=objj_msgSend(_d,"globalLocation"); +var _13=objj_msgSend(_e,"convertGlobalToBase:",_12); +var _14=objj_msgSend(_e,"itemIndexAtPoint:",_13),_15=_14!==CPNotFound?objj_msgSend(_11,"itemAtIndex:",_14):nil; +_menuBarButtonItemIndex=_14; +_menuBarButtonMenuContainer=_e; +if(objj_msgSend(_15,"_isMenuBarButton")){ +return objj_msgSend(_b,"trackMenuBarButtonEvent:",_d); +} +} +objj_msgSend(_b,"trackEvent:",_d); +} +}),new objj_method(sel_getUid("trackEvent:"),function(_16,_17,_18){ +with(_16){ +var _19=objj_msgSend(_18,"type"),_1a=objj_msgSend(_16,"trackingMenu"); +if(_19===CPAppKitDefined){ +return objj_msgSend(_16,"completeTracking"); +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_16,sel_getUid("trackEvent:"),CPPeriodicMask|CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPAppKitDefinedMask,nil,nil,YES); +var _1b=_19===CPPeriodic?_lastGlobalLocation:objj_msgSend(_18,"globalLocation"); +_lastGlobalLocation=_1b; +var _1c=objj_msgSend(_16,"menuContainerForPoint:",_1b),_1d=objj_msgSend(_1c,"menu"),_1e=objj_msgSend(_1c,"convertGlobalToBase:",_1b); +var _1f=_1c?objj_msgSend(_1c,"itemIndexAtPoint:",_1e):CPNotFound,_20=_1f!==CPNotFound?objj_msgSend(_1d,"itemAtIndex:",_1f):nil; +if(!objj_msgSend(_20,"isEnabled")||objj_msgSend(_20,"_isMenuBarButton")){ +_1f=CPNotFound; +_20=nil; +} +var _21=objj_msgSend(_20,"view"); +if(_19===CPPeriodic){ +if(_scrollingState===_CPMenuManagerScrollingStateUp){ +objj_msgSend(_1c,"scrollUp"); +}else{ +if(_scrollingState===_CPMenuManagerScrollingStateDown){ +objj_msgSend(_1c,"scrollDown"); +} +} +} +if(_21){ +if(!_lastMouseOverMenuView){ +objj_msgSend(_1d,"_highlightItemAtIndex:",CPNotFound); +} +if(_lastMouseOverMenuView!=_21){ +objj_msgSend(_21,"mouseExited:",_18); +objj_msgSend(_lastMouseOverMenuView,"mouseEntered:",_18); +_lastMouseOverMenuView=_21; +} +var _22=_1c; +if(!objj_msgSend(_22,"isKindOfClass:",objj_msgSend(CPWindow,"class"))){ +_22=objj_msgSend(_22,"window"); +} +objj_msgSend(_22,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_19,_1e,objj_msgSend(_18,"modifierFlags"),objj_msgSend(_18,"timestamp"),_22,nil,0,objj_msgSend(_18,"clickCount"),objj_msgSend(_18,"pressure"))); +}else{ +if(_lastMouseOverMenuView){ +objj_msgSend(_lastMouseOverMenuView,"mouseExited:",_18); +_lastMouseOverMenuView=nil; +} +objj_msgSend(_1d,"_highlightItemAtIndex:",_1f); +if(_19===CPMouseMoved||_19===CPLeftMouseDragged||_19===CPLeftMouseDown){ +var _23=_scrollingState; +_scrollingState=objj_msgSend(_1c,"scrollingStateForPoint:",_1b); +if(_scrollingState!==_23){ +if(_scrollingState===_CPMenuManagerScrollingStateNone){ +objj_msgSend(CPEvent,"stopPeriodicEvents"); +}else{ +if(_23===_CPMenuManagerScrollingStateNone){ +objj_msgSend(CPEvent,"startPeriodicEventsAfterDelay:withPeriod:",0,0.04); +} +} +} +}else{ +if(_19===CPLeftMouseUp&&(objj_msgSend(_18,"timestamp")-_startTime>_1)){ +objj_msgSend(_1a,"cancelTracking"); +} +} +} +if(objj_msgSend(_20,"hasSubmenu")){ +var _24=objj_msgSend(_1c,"rectForItemAtIndex:",_1f); +if(objj_msgSend(_1c,"isMenuBar")){ +var _25=CGPointMake(CGRectGetMinX(_24),CGRectGetMaxY(_24)); +}else{ +var _25=CGPointMake(CGRectGetMaxX(_24),CGRectGetMinY(_24)); +} +_25=objj_msgSend(_1c,"convertBaseToGlobal:",_25); +objj_msgSend(_16,"showMenu:fromMenu:atPoint:",objj_msgSend(_20,"submenu"),objj_msgSend(_20,"menu"),_25); +}else{ +objj_msgSend(_16,"showMenu:fromMenu:atPoint:",nil,_1d,CGPointMakeZero()); +} +} +}),new objj_method(sel_getUid("trackMenuBarButtonEvent:"),function(_26,_27,_28){ +with(_26){ +var _29=objj_msgSend(_28,"type"); +if(_29===CPAppKitDefined){ +return objj_msgSend(_26,"completeTracking"); +} +var _2a=objj_msgSend(_28,"globalLocation"); +var _2b=objj_msgSend(_26,"trackingMenu"),_2c=objj_msgSend(_26,"trackingMenuContainer"),_2d=objj_msgSend(_2c,"convertGlobalToBase:",_2a); +if(objj_msgSend(_2c,"itemIndexAtPoint:",_2d)===_menuBarButtonItemIndex){ +objj_msgSend(_2b,"_highlightItemAtIndex:",_menuBarButtonItemIndex); +}else{ +objj_msgSend(_2b,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_26,sel_getUid("trackMenuBarButtonEvent:"),CPPeriodicMask|CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPAppKitDefinedMask,nil,nil,YES); +if(_29===CPLeftMouseUp){ +objj_msgSend(_2b,"cancelTracking"); +} +} +}),new objj_method(sel_getUid("completeTracking"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_2e,"trackingMenu"); +objj_msgSend(CPEvent,"stopPeriodicEvents"); +var _31=objj_msgSend(_30,"highlightedItem"); +objj_msgSend(_2e,"showMenu:fromMenu:atPoint:",nil,_30,nil); +var _32=objj_msgSend(_30,"delegate"); +if(objj_msgSend(_32,"respondsToSelector:",sel_getUid("menuDidClose:"))){ +objj_msgSend(_32,"menuDidClose:",_30); +} +if(_trackingCallback){ +_trackingCallback(objj_msgSend(_2e,"trackingMenuContainer"),_30); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPMenuDidEndTrackingNotification,_30); +CPApp._activeMenu=nil; +} +}),new objj_method(sel_getUid("menuContainerForPoint:"),function(_33,_34,_35){ +with(_33){ +var _36=objj_msgSend(_menuContainerStack,"count"),_37=_menuContainerStack[0]; +if(_36===1){ +return _37; +} +var _38=0,_39=_36-1; +if(objj_msgSend(_37,"isMenuBar")){ +if(CGRectContainsPoint(objj_msgSend(_37,"globalFrame"),_35)){ +return _37; +} +_38=1; +} +var _3a=_36,x=_35.x,_3b=Infinity,_3c=nil; +while(_3a-->_38){ +var _3d=_menuContainerStack[_3a],_3e=objj_msgSend(_3d,"globalFrame"),_3f=(_3e.origin.x),_40=(_3e.origin.x+_3e.size.width); +if(x<_40&&x>=_3f){ +return _3d; +} +if(_3a===_38||_3a===_39){ +var _41=ABS(x<_3f?_3f-x:_40-x); +if(_41<_3b){ +_3c=_3d; +_3b=_41; +} +} +} +return _3c; +} +}),new objj_method(sel_getUid("showMenu:fromMenu:atPoint:"),function(_42,_43,_44,_45,_46){ +with(_42){ +var _47=_menuContainerStack.length,_48=_47; +while(_48--){ +var _49=_menuContainerStack[_48],_4a=objj_msgSend(_49,"menu"); +if(_4a===_45){ +break; +} +if(_4a===_44){ +return objj_msgSend(_44,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(_49,"orderOut:",_42); +objj_msgSend(_49,"setMenu:",nil); +objj_msgSend(_CPMenuWindow,"poolMenuWindow:",_49); +objj_msgSend(_menuContainerStack,"removeObjectAtIndex:",_48); +} +if(!_44){ +return; +} +objj_msgSend(_44,"_highlightItemAtIndex:",CPNotFound); +var _4b=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_44,objj_msgSend(_menuContainerStack[0],"font")); +objj_msgSend(_menuContainerStack,"addObject:",_4b); +objj_msgSend(_4b,"setConstraintRect:",_constraintRect); +if(_45===objj_msgSend(_42,"trackingMenu")&&objj_msgSend(objj_msgSend(_42,"trackingMenuContainer"),"isMenuBar")){ +objj_msgSend(_4b,"setBackgroundStyle:",_CPMenuWindowMenuBarBackgroundStyle); +}else{ +objj_msgSend(_4b,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +} +objj_msgSend(_4b,"setFrameOrigin:",_46); +objj_msgSend(_4b,"orderFront:",_42); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedMenuManager"),function(_4c,_4d){ +with(_4c){ +if(!_2){ +_2=objj_msgSend(objj_msgSend(_CPMenuManager,"alloc"),"init"); +} +return _2; +} +})]); +p;15;_CPMenuWindow.jt;17126;@STATIC;1.0;t;17106; +var _1=[],_2=5,_3=[]; +_CPMenuWindowMenuBarBackgroundStyle=0; +_CPMenuWindowPopUpBackgroundStyle=1; +_CPMenuWindowAttachedMenuBackgroundStyle=2; +var _4=500,_5=5,_6=1,_7=1,_8=5,_9=16; +var _a=objj_allocateClassPair(CPWindow,"_CPMenuWindow"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuView"),new objj_ivar("_menuClipView"),new objj_ivar("_moreAboveView"),new objj_ivar("_moreBelowView"),new objj_ivar("_unconstrainedFrame"),new objj_ivar("_constraintRect")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("initWithContentRect:styleMask:"),function(_c,_d,_e,_f){ +with(_c){ +_constraintRect={origin:{x:0,y:0},size:{width:0,height:0}}; +_unconstrainedFrame={origin:{x:0,y:0},size:{width:0,height:0}}; +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPMenuWindow").super_class},"initWithContentRect:styleMask:",_e,CPBorderlessWindowMask); +if(_c){ +objj_msgSend(_c,"setLevel:",CPPopUpMenuWindowLevel); +objj_msgSend(_c,"setHasShadow:",YES); +objj_msgSend(_c,"setShadowStyle:",CPMenuWindowShadowStyle); +objj_msgSend(_c,"setAcceptsMouseMovedEvents:",YES); +var _10=objj_msgSend(_c,"contentView"); +_menuView=objj_msgSend(objj_msgSend(_CPMenuView,"alloc"),"initWithFrame:",CGRectMakeZero()); +_menuClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"initWithFrame:",CGRectMake(_6,_5,0,0)); +objj_msgSend(_menuClipView,"setDocumentView:",_menuView); +objj_msgSend(_10,"addSubview:",_menuClipView); +_moreAboveView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_moreAboveView,"setImage:",_CPMenuWindowMoreAboveImage); +objj_msgSend(_moreAboveView,"setFrameSize:",objj_msgSend(_CPMenuWindowMoreAboveImage,"size")); +objj_msgSend(_10,"addSubview:",_moreAboveView); +_moreBelowView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_moreBelowView,"setImage:",_CPMenuWindowMoreBelowImage); +objj_msgSend(_moreBelowView,"setFrameSize:",objj_msgSend(_CPMenuWindowMoreBelowImage,"size")); +objj_msgSend(_10,"addSubview:",_moreBelowView); +objj_msgSend(_c,"setShadowStyle:",CPWindowShadowStyleMenu); +} +return _c; +} +}),new objj_method(sel_getUid("setFont:"),function(_11,_12,_13){ +with(_11){ +objj_msgSend(_menuView,"setFont:",_13); +} +}),new objj_method(sel_getUid("font"),function(_14,_15){ +with(_14){ +return objj_msgSend(_menuView,"font"); +} +}),new objj_method(sel_getUid("setBackgroundStyle:"),function(_16,_17,_18){ +with(_16){ +objj_msgSend(_16,"setBackgroundColor:",objj_msgSend(objj_msgSend(_16,"class"),"backgroundColorForBackgroundStyle:",_18)); +} +}),new objj_method(sel_getUid("setMenu:"),function(_19,_1a,_1b){ +with(_19){ +objj_msgSend(_1b,"_setMenuWindow:",_19); +objj_msgSend(_menuView,"setMenu:",_1b); +var _1c=objj_msgSend(_menuView,"frame").size; +objj_msgSend(_19,"setFrameSize:",CGSizeMake(_6+_1c.width+_7,_5+_1c.height+_8)); +objj_msgSend(_menuView,"scrollPoint:",CGPointMake(0,0)); +objj_msgSend(_menuClipView,"setFrame:",CGRectMake(_6,_5,_1c.width,_1c.height)); +} +}),new objj_method(sel_getUid("setMinWidth:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=objj_msgSend(_1d,"unconstrainedFrame").size; +objj_msgSend(_1d,"setFrameSize:",CGSizeMake(MAX(_20.width,_1f),_20.height)); +} +}),new objj_method(sel_getUid("menu"),function(_21,_22){ +with(_21){ +return objj_msgSend(_menuView,"menu"); +} +}),new objj_method(sel_getUid("orderFront:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(_23,"setFrame:",_unconstrainedFrame); +objj_msgSendSuper({receiver:_23,super_class:objj_getClass("_CPMenuWindow").super_class},"orderFront:",_25); +} +}),new objj_method(sel_getUid("setConstraintRect:"),function(_26,_27,_28){ +with(_26){ +_constraintRect=_28; +objj_msgSend(_26,"setFrame:",_unconstrainedFrame); +} +}),new objj_method(sel_getUid("unconstrainedFrame"),function(_29,_2a){ +with(_29){ +return {origin:{x:_unconstrainedFrame.origin.x,y:_unconstrainedFrame.origin.y},size:{width:_unconstrainedFrame.size.width,height:_unconstrainedFrame.size.height}}; +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:",{origin:{x:_2d.x,y:_2d.y},size:{width:(_unconstrainedFrame.size.width),height:(_unconstrainedFrame.size.height)}}); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSendSuper({receiver:_2e,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:",{origin:{x:(_unconstrainedFrame.origin.x),y:(_unconstrainedFrame.origin.y)},size:{width:_30.width,height:_30.height}}); +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_31,_32,_33,_34,_35){ +with(_31){ +_unconstrainedFrame={origin:{x:_33.origin.x,y:_33.origin.y},size:{width:_33.size.width,height:_33.size.height}}; +var _36=CGRectIntersection(_unconstrainedFrame,_constraintRect); +_36.origin.x=CGRectGetMinX(_unconstrainedFrame); +_36.size.width=CGRectGetWidth(_unconstrainedFrame); +if(CGRectGetWidth(_36)>CGRectGetWidth(_constraintRect)){ +_36.size.width=CGRectGetWidth(_constraintRect); +} +if(CGRectGetMaxX(_36)>CGRectGetMaxX(_constraintRect)){ +_36.origin.x-=CGRectGetMaxX(_36)-CGRectGetMaxX(_constraintRect); +} +if(CGRectGetMinX(_36)CGRectGetMaxY(_36)-_8,_3a=_5,_3b=_8,_3c=objj_msgSend(_31,"contentView"),_3d=objj_msgSend(_3c,"bounds"); +if(_38){ +_3a+=_9; +var _3e=objj_msgSend(_moreAboveView,"frame"); +objj_msgSend(_moreAboveView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_3d)-CGRectGetWidth(_3e))/2,(_5+_9-CGRectGetHeight(_3e))/2)); +} +objj_msgSend(_moreAboveView,"setHidden:",!_38); +if(_39){ +_3b+=_9; +objj_msgSend(_moreBelowView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_3d)-CGRectGetWidth(objj_msgSend(_moreBelowView,"frame")))/2,CGRectGetHeight(_3d)-_9-_8)); +} +objj_msgSend(_moreBelowView,"setHidden:",!_39); +var _3f=CGRectMake(_6,_3a,CGRectGetWidth(_36)-_6-_7,CGRectGetHeight(_36)-_3a-_3b); +objj_msgSend(_menuClipView,"setFrame:",_3f); +objj_msgSend(_menuView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_3f),CGRectGetHeight(objj_msgSend(_menuView,"frame")))); +objj_msgSend(_menuView,"scrollPoint:",CGPointMake(0,objj_msgSend(_31,"convertBaseToGlobal:",_3f.origin).y-_37.y)); +} +}),new objj_method(sel_getUid("hasMinimumNumberOfVisibleItems"),function(_40,_41){ +with(_40){ +var _42=objj_msgSend(_menuView,"visibleRect"); +if(CGRectIsEmpty(_42)){ +return NO; +} +var _43=objj_msgSend(_menuView,"numberOfUnhiddenItems"),_44=MIN(_43,3),_45=0,_46=objj_msgSend(_menuView,"itemIndexAtPoint:",objj_msgSend(_menuView,"convertPoint:fromView:",objj_msgSend(_menuClipView,"frame").origin,nil)); +for(;_46<_43&&_45<_44;++_46){ +var _47=objj_msgSend(_menuView,"rectForUnhiddenItemAtIndex:",_46),_48=CGRectIntersection(_42,_47); +if(CGRectIsEmpty(_48)){ +break; +} +if(CGRectEqualToRect(_48,_47)){ +++_45; +} +} +return _45>=_44; +} +}),new objj_method(sel_getUid("canScrollUp"),function(_49,_4a){ +with(_49){ +return !objj_msgSend(_moreAboveView,"isHidden"); +} +}),new objj_method(sel_getUid("canScrollDown"),function(_4b,_4c){ +with(_4b){ +return !objj_msgSend(_moreBelowView,"isHidden"); +} +}),new objj_method(sel_getUid("canScroll"),function(_4d,_4e){ +with(_4d){ +return objj_msgSend(_4d,"canScrollUp")||objj_msgSend(_4d,"canScrollDown"); +} +}),new objj_method(sel_getUid("scrollUp"),function(_4f,_50){ +with(_4f){ +if(CGRectGetMinY(_unconstrainedFrame)>=CGRectGetMinY(_constraintRect)){ +return; +} +_unconstrainedFrame.origin.y+=10; +objj_msgSend(_4f,"setFrame:",_unconstrainedFrame); +} +}),new objj_method(sel_getUid("scrollDown"),function(_51,_52){ +with(_51){ +if(CGRectGetMaxY(_unconstrainedFrame)<=CGRectGetHeight(_constraintRect)){ +return; +} +_unconstrainedFrame.origin.y-=10; +objj_msgSend(_51,"setFrame:",_unconstrainedFrame); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("menuWindowWithMenu:font:"),function(_53,_54,_55,_56){ +with(_53){ +var _57=nil; +if(_1.length){ +_57=_1.pop(); +objj_msgSend(_57,"setFrameOrigin:",CGPointMakeZero()); +}else{ +_57=objj_msgSend(objj_msgSend(_CPMenuWindow,"alloc"),"init"); +} +objj_msgSend(_57,"setFont:",_56); +objj_msgSend(_57,"setMenu:",_55); +objj_msgSend(_57,"setMinWidth:",objj_msgSend(_55,"minimumWidth")); +return _57; +} +}),new objj_method(sel_getUid("poolMenuWindow:"),function(_58,_59,_5a){ +with(_58){ +if(!_5a||_1.length>=_2){ +return; +} +_1.push(_5a); +} +}),new objj_method(sel_getUid("initialize"),function(_5b,_5c){ +with(_5b){ +if(_5b!=objj_msgSend(_CPMenuWindow,"class")){ +return; +} +var _5d=objj_msgSend(CPBundle,"bundleForClass:",_5b); +_CPMenuWindowMoreAboveImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5d,"pathForResource:","_CPMenuWindow/_CPMenuWindowMoreAbove.png"),CGSizeMake(38,18)); +_CPMenuWindowMoreBelowImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5d,"pathForResource:","_CPMenuWindow/_CPMenuWindowMoreBelow.png"),CGSizeMake(38,18)); +} +}),new objj_method(sel_getUid("_standardLeftMargin"),function(_5e,_5f){ +with(_5e){ +return _6; +} +}),new objj_method(sel_getUid("backgroundColorForBackgroundStyle:"),function(_60,_61,_62){ +with(_60){ +var _63=_3[_62]; +if(!_63){ +var _64=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_60,"class")); +if(_62==_CPMenuWindowPopUpBackgroundStyle){ +_63=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded0.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow1.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded2.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded6.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow7.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded8.png"),CGSizeMake(4,4))])); +}else{ +if(_62==_CPMenuWindowMenuBarBackgroundStyle){ +_63=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded6.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow7.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded8.png"),CGSizeMake(4,4))])); +} +} +_3[_62]=_63; +} +return _63; +} +})]); +var _a=objj_getClass("_CPMenuWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"_CPMenuWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("globalFrame"),function(_65,_66){ +with(_65){ +return objj_msgSend(_65,"frame"); +} +}),new objj_method(sel_getUid("isMenuBar"),function(_67,_68){ +with(_67){ +return NO; +} +}),new objj_method(sel_getUid("scrollingStateForPoint:"),function(_69,_6a,_6b){ +with(_69){ +var _6c=objj_msgSend(_69,"frame"); +if(!objj_msgSend(_69,"canScroll")){ +return _CPMenuManagerScrollingStateNone; +} +if(_6b.yCGRectGetMaxY(_6c)-_8-_9){ +return _CPMenuManagerScrollingStateDown; +} +return _CPMenuManagerScrollingStateNone; +} +}),new objj_method(sel_getUid("deltaYForItemAtIndex:"),function(_6d,_6e,_6f){ +with(_6d){ +return _5+CGRectGetMinY(objj_msgSend(_menuView,"rectForItemAtIndex:",_6f)); +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_70,_71,_72){ +with(_70){ +return objj_msgSend(_menuView,"convertRect:toView:",objj_msgSend(_menuView,"rectForItemAtIndex:",_72),nil); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_73,_74,_75){ +with(_73){ +if(!CGRectContainsPoint(objj_msgSend(_menuClipView,"bounds"),objj_msgSend(_menuClipView,"convertPoint:fromView:",_75,nil))){ +return NO; +} +return objj_msgSend(_menuView,"itemIndexAtPoint:",objj_msgSend(_menuView,"convertPoint:fromView:",_75,nil)); +} +})]); +var _a=objj_allocateClassPair(CPView,"_CPMenuView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuItemViews"),new objj_ivar("_visibleMenuItemInfos"),new objj_ivar("_font")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("font"),function(_76,_77){ +with(_76){ +return _font; +} +}),new objj_method(sel_getUid("setFont:"),function(_78,_79,_7a){ +with(_78){ +_font=_7a; +} +}),new objj_method(sel_getUid("numberOfUnhiddenItems"),function(_7b,_7c){ +with(_7b){ +return _visibleMenuItemInfos.length; +} +}),new objj_method(sel_getUid("rectForUnhiddenItemAtIndex:"),function(_7d,_7e,_7f){ +with(_7d){ +return objj_msgSend(_7d,"rectForItemAtIndex:",_visibleMenuItemInfos[_7f].index); +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_80,_81,_82){ +with(_80){ +return objj_msgSend(_menuItemViews[_82===CPNotFound?0:_82],"frame"); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_83,_84,_85){ +with(_83){ +var x=_85.x,_86=objj_msgSend(_83,"bounds"); +if(xCGRectGetMaxX(_86)){ +return CPNotFound; +} +var y=_85.y,low=0,_87=_visibleMenuItemInfos.length-1; +while(low<=_87){ +var _88=FLOOR(low+(_87-low)/2),_89=_visibleMenuItemInfos[_88]; +frame=objj_msgSend(_89.view,"frame"); +if(yCGRectGetMaxY(frame)){ +low=_88+1; +}else{ +return _89.index; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tile"),function(_8a,_8b){ +with(_8a){ +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +_menuItemViews=[]; +_visibleMenuItemInfos=[]; +var _8c=objj_msgSend(_8a,"menu"); +if(!_8c){ +return; +} +var _8d=objj_msgSend(_8c,"itemArray"),_8e=0,_8f=objj_msgSend(_8d,"count"),_90=0,y=0,_91=objj_msgSend(_8c,"showsStateColumn"); +for(;_8e<_8f;++_8e){ +var _92=_8d[_8e],_93=objj_msgSend(_92,"_menuItemView"); +_menuItemViews.push(_93); +if(objj_msgSend(_92,"isHidden")){ +continue; +} +_visibleMenuItemInfos.push({view:_93,index:_8e}); +objj_msgSend(_93,"setFont:",_font); +objj_msgSend(_93,"setShowsStateColumn:",_91); +objj_msgSend(_93,"synchronizeWithMenuItem"); +objj_msgSend(_93,"setFrameOrigin:",CGPointMake(0,y)); +objj_msgSend(_8a,"addSubview:",_93); +var _94=objj_msgSend(_93,"minSize"),_95=_94.width; +if(_90<_95){ +_90=_95; +} +y+=_94.height; +} +for(_8e=0;_8e<_8f;++_8e){ +var _93=_menuItemViews[_8e]; +objj_msgSend(_93,"setFrameSize:",CGSizeMake(_90,CGRectGetHeight(objj_msgSend(_93,"frame")))); +} +objj_msgSend(_8a,"setAutoresizesSubviews:",NO); +objj_msgSend(_8a,"setFrameSize:",CGSizeMake(_90,y)); +objj_msgSend(_8a,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("setMenu:"),function(_96,_97,_98){ +with(_96){ +objj_msgSendSuper({receiver:_96,super_class:objj_getClass("_CPMenuView").super_class},"setMenu:",_98); +objj_msgSend(_96,"tile"); +} +})]); +p;8;CPMenu.jt;23316;@STATIC;1.0;I;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPString.ji;16;_CPMenuManager.ji;15;CPApplication.ji;12;CPClipView.ji;12;CPMenuItem.ji;9;CPPanel.ji;18;_CPMenuBarWindow.ji;15;_CPMenuWindow.jt;23046; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("_CPMenuManager.j",YES); +objj_executeFile("CPApplication.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPMenuItem.j",YES); +objj_executeFile("CPPanel.j",YES); +CPMenuDidAddItemNotification="CPMenuDidAddItemNotification"; +CPMenuDidChangeItemNotification="CPMenuDidChangeItemNotification"; +CPMenuDidRemoveItemNotification="CPMenuDidRemoveItemNotification"; +CPMenuDidEndTrackingNotification="CPMenuDidEndTrackingNotification"; +var _1=28; +var _2=NO,_3="",_4=nil,_5=1,_6=nil,_7=nil; +var _8=objj_allocateClassPair(CPObject,"CPMenu"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_supermenu"),new objj_ivar("_title"),new objj_ivar("_name"),new objj_ivar("_font"),new objj_ivar("_minimumWidth"),new objj_ivar("_items"),new objj_ivar("_autoenablesItems"),new objj_ivar("_showsStateColumn"),new objj_ivar("_delegate"),new objj_ivar("_highlightedIndex"),new objj_ivar("_menuWindow")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("menuBarHeight"),function(_a,_b){ +with(_a){ +if(_a===objj_msgSend(CPApp,"mainMenu")){ +return _1; +} +return 0; +} +}),new objj_method(sel_getUid("initWithTitle:"),function(_c,_d,_e){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPMenu").super_class},"init"); +if(_c){ +_title=_e; +_items=[]; +_autoenablesItems=YES; +_showsStateColumn=YES; +objj_msgSend(_c,"setMinimumWidth:",0); +} +return _c; +} +}),new objj_method(sel_getUid("init"),function(_f,_10){ +with(_f){ +return objj_msgSend(_f,"initWithTitle:",""); +} +}),new objj_method(sel_getUid("insertItem:atIndex:"),function(_11,_12,_13,_14){ +with(_11){ +var _15=objj_msgSend(_13,"menu"); +if(_15){ +if(_15!==_11){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Attempted to insert item into menu that was already in another menu."); +}else{ +return; +} +} +objj_msgSend(_13,"setMenu:",_11); +objj_msgSend(_items,"insertObject:atIndex:",_13,_14); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidAddItemNotification,_11,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_14,"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("insertItemWithTitle:action:keyEquivalent:atIndex:"),function(_16,_17,_18,_19,_1a,_1b){ +with(_16){ +var _1c=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",_18,_19,_1a); +objj_msgSend(_16,"insertItem:atIndex:",_1c,_1b); +return _1c; +} +}),new objj_method(sel_getUid("addItem:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_1d,"insertItem:atIndex:",_1f,objj_msgSend(_items,"count")); +} +}),new objj_method(sel_getUid("addItemWithTitle:action:keyEquivalent:"),function(_20,_21,_22,_23,_24){ +with(_20){ +return objj_msgSend(_20,"insertItemWithTitle:action:keyEquivalent:atIndex:",_22,_23,_24,objj_msgSend(_items,"count")); +} +}),new objj_method(sel_getUid("removeItem:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_25,"removeItemAtIndex:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_27)); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_28,_29,_2a){ +with(_28){ +if(_2a<0||_2a>=_items.length){ +return; +} +objj_msgSend(_items[_2a],"setMenu:",nil); +objj_msgSend(_items,"removeObjectAtIndex:",_2a); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidRemoveItemNotification,_28,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_2a,"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("itemChanged:"),function(_2b,_2c,_2d){ +with(_2b){ +if(objj_msgSend(_2d,"menu")!=_2b){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidChangeItemNotification,_2b,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_2d),"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("itemWithTag:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=objj_msgSend(_2e,"indexOfItemWithTag:",_30); +if(_31==CPNotFound){ +return nil; +} +return _items[_31]; +} +}),new objj_method(sel_getUid("itemWithTitle:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"indexOfItemWithTitle:",_34); +if(_35==CPNotFound){ +return nil; +} +return _items[_35]; +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_36,_37,_38){ +with(_36){ +return objj_msgSend(_items,"objectAtIndex:",_38); +} +}),new objj_method(sel_getUid("numberOfItems"),function(_39,_3a){ +with(_39){ +return objj_msgSend(_items,"count"); +} +}),new objj_method(sel_getUid("itemArray"),function(_3b,_3c){ +with(_3b){ +return _items; +} +}),new objj_method(sel_getUid("indexOfItem:"),function(_3d,_3e,_3f){ +with(_3d){ +if(objj_msgSend(_3f,"menu")!==_3d){ +return CPNotFound; +} +return objj_msgSend(_items,"indexOfObjectIdenticalTo:",_3f); +} +}),new objj_method(sel_getUid("indexOfItemWithTitle:"),function(_40,_41,_42){ +with(_40){ +var _43=0,_44=_items.length; +for(;_43<_44;++_43){ +if(objj_msgSend(_items[_43],"title")===_42){ +return _43; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithTag:"),function(_45,_46,_47){ +with(_45){ +var _48=0,_49=_items.length; +for(;_48<_49;++_48){ +if(objj_msgSend(_items[_48],"tag")==_47){ +return _48; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithTarget:andAction:"),function(_4a,_4b,_4c,_4d){ +with(_4a){ +var _4e=0,_4f=_items.length; +for(;_4e<_4f;++_4e){ +var _50=_items[_4e]; +if(objj_msgSend(_50,"target")==_4c&&(!_4d||objj_msgSend(_50,"action")==_4d)){ +return _4e; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"),function(_51,_52,_53){ +with(_51){ +var _54=0,_55=_items.length; +for(;_54<_55;++_54){ +if(objj_msgSend(objj_msgSend(_items[_54],"representedObject"),"isEqual:",_53)){ +return _54; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithSubmenu:"),function(_56,_57,_58){ +with(_56){ +var _59=0,_5a=_items.length; +for(;_59<_5a;++_59){ +if(objj_msgSend(_items[_59],"submenu")==_58){ +return _59; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("setSubmenu:forItem:"),function(_5b,_5c,_5d,_5e){ +with(_5b){ +objj_msgSend(_5e,"setTarget:",_5e); +objj_msgSend(_5e,"setAction:",sel_getUid("submenuAction:")); +objj_msgSend(_5e,"setSubmenu:",_5d); +} +}),new objj_method(sel_getUid("submenuAction:"),function(_5f,_60,_61){ +with(_5f){ +} +}),new objj_method(sel_getUid("supermenu"),function(_62,_63){ +with(_62){ +return _supermenu; +} +}),new objj_method(sel_getUid("setSupermenu:"),function(_64,_65,_66){ +with(_64){ +_supermenu=_66; +} +}),new objj_method(sel_getUid("isTornOff"),function(_67,_68){ +with(_67){ +return !_supermenu||_67==objj_msgSend(CPApp,"mainMenu"); +} +}),new objj_method(sel_getUid("setAutoenablesItems:"),function(_69,_6a,_6b){ +with(_69){ +_autoenablesItems=_6b; +} +}),new objj_method(sel_getUid("autoenablesItems"),function(_6c,_6d){ +with(_6c){ +return _autoenablesItems; +} +}),new objj_method(sel_getUid("update"),function(_6e,_6f){ +with(_6e){ +} +}),new objj_method(sel_getUid("setTitle:"),function(_70,_71,_72){ +with(_70){ +_title=_72; +} +}),new objj_method(sel_getUid("title"),function(_73,_74){ +with(_73){ +return _title; +} +}),new objj_method(sel_getUid("setMinimumWidth:"),function(_75,_76,_77){ +with(_75){ +_minimumWidth=_77; +} +}),new objj_method(sel_getUid("minimumWidth"),function(_78,_79){ +with(_78){ +return _minimumWidth; +} +}),new objj_method(sel_getUid("_performActionOfHighlightedItemChain"),function(_7a,_7b){ +with(_7a){ +var _7c=objj_msgSend(_7a,"highlightedItem"); +while(objj_msgSend(_7c,"submenu")&&objj_msgSend(_7c,"action")===sel_getUid("submenuAction:")){ +_7c=objj_msgSend(objj_msgSend(_7c,"submenu"),"highlightedItem"); +} +if(_7c&&objj_msgSend(_7c,"isEnabled")){ +objj_msgSend(CPApp,"sendAction:to:from:",objj_msgSend(_7c,"action"),objj_msgSend(_7c,"target"),_7c); +} +} +}),new objj_method(sel_getUid("popUpMenuPositioningItem:atLocation:inView:callback:"),function(_7d,_7e,_7f,_80,_81,_82){ +with(_7d){ +objj_msgSend(_7d,"_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:",_7f,_80,_80.y,_80.y,_81,_82); +} +}),new objj_method(sel_getUid("_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:"),function(_83,_84,_85,_86,_87,_88,_89,_8a){ +with(_83){ +var _8b=0; +if(_85){ +_8b=objj_msgSend(_83,"indexOfItem:",_85); +if(_8b===CPNotFound){ +throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, menu item "+_85+" is not present in menu "+_83; +} +} +var _8c=objj_msgSend(_89,"window"); +if(_89&&!_8c){ +throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, view is not in any window."; +} +var _8d=objj_msgSend(_83,"delegate"); +if(objj_msgSend(_8d,"respondsToSelector:",sel_getUid("menuWillOpen:"))){ +objj_msgSend(_8d,"menuWillOpen:",aMenu); +} +if(_89){ +_86=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",_86,nil)); +} +var _8e=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_83,objj_msgSend(_83,"font")); +objj_msgSend(_8e,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +if(_85){ +_86.y-=objj_msgSend(_8e,"deltaYForItemAtIndex:",_8b); +} +var _8f=objj_msgSend(CPMenu,"_constraintRectForView:",_89); +objj_msgSend(_8e,"setFrameOrigin:",_86); +objj_msgSend(_8e,"setConstraintRect:",_8f); +if(!objj_msgSend(_8e,"hasMinimumNumberOfVisibleItems")){ +var _90=objj_msgSend(_8e,"unconstrainedFrame"),_91=CGRectGetMinY(_90); +if(_91>=CGRectGetMaxY(_8f)||objj_msgSend(_8e,"canScrollDown")){ +if(_89){ +_87=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",CGPointMake(0,_87),nil)).y; +} +_90.origin.y=MIN(CGRectGetMaxY(_8f),_87)-CGRectGetHeight(_90); +}else{ +if(_91=0?_items[_highlightedIndex]:nil; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_99,_9a,_9b){ +with(_99){ +_delegate=_9b; +} +}),new objj_method(sel_getUid("delegate"),function(_9c,_9d){ +with(_9c){ +return _delegate; +} +}),new objj_method(sel_getUid("cancelTracking"),function(_9e,_9f){ +with(_9e){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("_fireCancelTrackingEvent"),_9e,nil,0,[CPDefaultRunLoopMode]); +} +}),new objj_method(sel_getUid("_fireCancelTrackingEvent"),function(_a0,_a1){ +with(_a0){ +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",CPAppKitDefined,{x:0,y:0},0,0,0,0,0,0,0)); +objj_msgSend(_CPDisplayServer,"run"); +} +}),new objj_method(sel_getUid("_setMenuWindow:"),function(_a2,_a3,_a4){ +with(_a2){ +_menuWindow=_a4; +} +}),new objj_method(sel_getUid("setFont:"),function(_a5,_a6,_a7){ +with(_a5){ +_font=_a7; +} +}),new objj_method(sel_getUid("font"),function(_a8,_a9){ +with(_a8){ +return _font; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_aa,_ab,_ac){ +with(_aa){ +if(_autoenablesItems){ +objj_msgSend(_aa,"update"); +} +var _ad=0,_ae=_items.length,_af=objj_msgSend(_ac,"charactersIgnoringModifiers"),_b0=objj_msgSend(_ac,"modifierFlags"); +for(;_ad<_ae;++_ad){ +var _b1=_items[_ad],_b2=objj_msgSend(_b1,"keyEquivalentModifierMask"); +if(objj_msgSend(_ac,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(_b1,"keyEquivalent"),objj_msgSend(_b1,"keyEquivalentModifierMask"))){ +if(objj_msgSend(_b1,"isEnabled")){ +objj_msgSend(_aa,"performActionForItemAtIndex:",_ad); +}else{ +} +return YES; +} +if(objj_msgSend(objj_msgSend(_b1,"submenu"),"performKeyEquivalent:",_ac)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("performActionForItemAtIndex:"),function(_b3,_b4,_b5){ +with(_b3){ +var _b6=_items[_b5]; +objj_msgSend(CPApp,"sendAction:to:from:",objj_msgSend(_b6,"action"),objj_msgSend(_b6,"target"),_b6); +} +}),new objj_method(sel_getUid("_itemIsHighlighted:"),function(_b7,_b8,_b9){ +with(_b7){ +return _items[_highlightedIndex]==_b9; +} +}),new objj_method(sel_getUid("_highlightItemAtIndex:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_highlightedIndex===_bc){ +return; +} +if(_highlightedIndex!==CPNotFound){ +objj_msgSend(objj_msgSend(_items[_highlightedIndex],"_menuItemView"),"highlight:",NO); +} +_highlightedIndex=_bc; +if(_highlightedIndex!==CPNotFound){ +objj_msgSend(objj_msgSend(_items[_highlightedIndex],"_menuItemView"),"highlight:",YES); +} +} +}),new objj_method(sel_getUid("_setMenuName:"),function(_bd,_be,_bf){ +with(_bd){ +if(_name===_bf){ +return; +} +_name=_bf; +if(_name==="CPMainMenu"){ +objj_msgSend(CPApp,"setMainMenu:",_bd); +} +} +}),new objj_method(sel_getUid("_menuName"),function(_c0,_c1){ +with(_c0){ +return _name; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_c2,_c3){ +with(_c2){ +if(_name==="_CPMainMenu"){ +objj_msgSend(_c2,"_setMenuName:","CPMainMenu"); +objj_msgSend(CPMenu,"setMenuBarVisible:",YES); +} +} +}),new objj_method(sel_getUid("_menuWithName:"),function(_c4,_c5,_c6){ +with(_c4){ +if(_c6===_name){ +return _c4; +} +for(var i=0,_c7=objj_msgSend(_items,"count");i<_c7;i++){ +var _c8=objj_msgSend(objj_msgSend(_items[i],"submenu"),"_menuWithName:",_c6); +if(_c8){ +return _c8; +} +} +return nil; +} +})]); +class_addMethods(_9,[new objj_method(sel_getUid("initialize"),function(_c9,_ca){ +with(_c9){ +objj_msgSend(objj_msgSend(_c9,"class"),"setMenuBarAttributes:",objj_msgSend(CPDictionary,"dictionary")); +} +}),new objj_method(sel_getUid("menuBarVisible"),function(_cb,_cc){ +with(_cb){ +return _2; +} +}),new objj_method(sel_getUid("setMenuBarVisible:"),function(_cd,_ce,_cf){ +with(_cd){ +if(_2===_cf){ +return; +} +_2=_cf; +if(objj_msgSend(CPPlatform,"supportsNativeMainMenu")){ +return; +} +if(_cf){ +if(!_7){ +_7=objj_msgSend(objj_msgSend(_CPMenuBarWindow,"alloc"),"init"); +} +objj_msgSend(_7,"setMenu:",objj_msgSend(CPApp,"mainMenu")); +objj_msgSend(_7,"setTitle:",_3); +objj_msgSend(_7,"setIconImage:",_4); +objj_msgSend(_7,"setIconImageAlphaValue:",_5); +objj_msgSend(_7,"setColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarBackgroundColor")); +objj_msgSend(_7,"setTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextColor")); +objj_msgSend(_7,"setTitleColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleColor")); +objj_msgSend(_7,"setTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextShadowColor")); +objj_msgSend(_7,"setTitleShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleShadowColor")); +objj_msgSend(_7,"setHighlightColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightColor")); +objj_msgSend(_7,"setHighlightTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextColor")); +objj_msgSend(_7,"setHighlightTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextShadowColor")); +objj_msgSend(_7,"orderFront:",_cd); +}else{ +objj_msgSend(_7,"orderOut:",_cd); +} +objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"resizeEvent:",nil); +} +}),new objj_method(sel_getUid("setMenuBarTitle:"),function(_d0,_d1,_d2){ +with(_d0){ +_3=_d2; +objj_msgSend(_7,"setTitle:",_3); +} +}),new objj_method(sel_getUid("menuBarTitle"),function(_d3,_d4){ +with(_d3){ +return _3; +} +}),new objj_method(sel_getUid("setMenuBarIconImage:"),function(_d5,_d6,_d7){ +with(_d5){ +_CPMenuBarImage=_d7; +objj_msgSend(_7,"setIconImage:",_d7); +} +}),new objj_method(sel_getUid("menuBarIconImage"),function(_d8,_d9){ +with(_d8){ +return _CPMenuBarImage; +} +}),new objj_method(sel_getUid("setMenuBarAttributes:"),function(_da,_db,_dc){ +with(_da){ +if(_6==_dc){ +return; +} +_6=objj_msgSend(_dc,"copy"); +var _dd=objj_msgSend(_dc,"objectForKey:","CPMenuBarTextColor"),_de=objj_msgSend(_dc,"objectForKey:","CPMenuBarTitleColor"),_df=objj_msgSend(_dc,"objectForKey:","CPMenuBarTextShadowColor"),_e0=objj_msgSend(_dc,"objectForKey:","CPMenuBarTitleShadowColor"),_e1=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightColor"),_e2=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightTextColor"),_e3=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightTextShadowColor"); +if(!_dd&&_de){ +objj_msgSend(_6,"setObject:forKey:",_de,"CPMenuBarTextColor"); +}else{ +if(_dd&&!_de){ +objj_msgSend(_6,"setObject:forKey:",_dd,"CPMenuBarTitleColor"); +}else{ +if(!_dd&&!_de){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",0.051,0.2,0.275,1),"CPMenuBarTextColor"); +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",0.051,0.2,0.275,1),"CPMenuBarTitleColor"); +} +} +} +if(!_df&&_e0){ +objj_msgSend(_6,"setObject:forKey:",_e0,"CPMenuBarTextShadowColor"); +}else{ +if(_df&&!_e0){ +objj_msgSend(_6,"setObject:forKey:",_df,"CPMenuBarTitleShadowColor"); +}else{ +if(!_df&&!_e0){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarTextShadowColor"); +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarTitleShadowColor"); +} +} +} +if(!_e1){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",94/255,130/255,186/255,1),"CPMenuBarHighlightColor"); +} +if(!_e2){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarHighlightTextColor"); +} +if(!_e3){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"blackColor"),"CPMenuBarHighlightTextShadowColor"); +} +if(_7){ +objj_msgSend(_7,"setColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarBackgroundColor")); +objj_msgSend(_7,"setTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextColor")); +objj_msgSend(_7,"setTitleColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleColor")); +objj_msgSend(_7,"setTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextShadowColor")); +objj_msgSend(_7,"setTitleShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleShadowColor")); +objj_msgSend(_7,"setHighlightColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightColor")); +objj_msgSend(_7,"setHighlightTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextColor")); +objj_msgSend(_7,"setHighlightTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextShadowColor")); +} +} +}),new objj_method(sel_getUid("menuBarAttributes"),function(_e4,_e5){ +with(_e4){ +return _6; +} +}),new objj_method(sel_getUid("_setMenuBarIconImageAlphaValue:"),function(_e6,_e7,_e8){ +with(_e6){ +_5=_e8; +objj_msgSend(_7,"setIconImageAlphaValue:",_e8); +} +}),new objj_method(sel_getUid("menuBarHeight"),function(_e9,_ea){ +with(_e9){ +return _1; +} +}),new objj_method(sel_getUid("_constraintRectForView:"),function(_eb,_ec,_ed){ +with(_eb){ +if(objj_msgSend(CPPlatform,"isBrowser")){ +return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(_ed,"window"),"platformWindow"),"contentBounds"),5,5); +} +return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(_ed,"window"),"screen"),"visibleFrame"),5,5); +} +}),new objj_method(sel_getUid("trackingCallbackWithCallback:"),function(_ee,_ef,_f0){ +with(_ee){ +return function(_f1,_f2){ +objj_msgSend(_f1,"setMenu:",nil); +objj_msgSend(_f1,"orderOut:",_ee); +objj_msgSend(_CPMenuWindow,"poolMenuWindow:",_f1); +if(_f0){ +_f0(_f2); +} +objj_msgSend(_f2,"_performActionOfHighlightedItemChain"); +}; +} +}),new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:"),function(_f3,_f4,_f5,_f6,_f7){ +with(_f3){ +objj_msgSend(_f3,"popUpContextMenu:withEvent:forView:withFont:",_f5,_f6,_f7,nil); +} +}),new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:withFont:"),function(_f8,_f9,_fa,_fb,_fc,_fd){ +with(_f8){ +var _fe=objj_msgSend(_fa,"delegate"); +if(objj_msgSend(_fe,"respondsToSelector:",sel_getUid("menuWillOpen:"))){ +objj_msgSend(_fe,"menuWillOpen:",_fa); +} +if(!_fd){ +_fd=objj_msgSend(CPFont,"systemFontOfSize:",12); +} +var _ff=objj_msgSend(_fc,"window"),_100=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_fa,_fd); +objj_msgSend(_100,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +var _101=objj_msgSend(CPMenu,"_constraintRectForView:",_fc),_102=objj_msgSend(objj_msgSend(_fb,"window"),"convertBaseToGlobal:",objj_msgSend(_fb,"locationInWindow")); +objj_msgSend(_100,"setConstraintRect:",_101); +objj_msgSend(_100,"setFrameOrigin:",_102); +if(!objj_msgSend(_100,"hasMinimumNumberOfVisibleItems")){ +var _103=objj_msgSend(_100,"unconstrainedFrame"),_104=CGRectGetMinY(_103); +if(_104>=CGRectGetMaxY(_101)||objj_msgSend(_100,"canScrollDown")){ +_103.origin.y=MIN(CGRectGetMaxY(_101),_102.y)-CGRectGetHeight(_103); +}else{ +if(_1040){ +objj_msgSend(_b8,"encodeInt:forKey:",_indentationLevel,_b0); +} +if((_representedObject)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_representedObject),(_b1)); +} +if((_view)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_view),(_b2)); +} +} +})]); +p;31;_CPBorderlessBridgeWindowView.jt;2040;@STATIC;1.0;i;15;_CPWindowView.jt;2001; +objj_executeFile("_CPWindowView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(_CPWindowView,"_CPBorderlessBridgeWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_toolbarBackgroundView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_4,_5,_6){ +with(_4){ +} +}),new objj_method(sel_getUid("tile"),function(_7,_8){ +with(_7){ +objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPBorderlessBridgeWindowView").super_class},"tile"); +var _9=objj_msgSend(_7,"window"),_a=objj_msgSend(_7,"bounds"); +objj_msgSend(objj_msgSend(_9,"contentView"),"setFrame:",CGRectMake(0,objj_msgSend(_7,"toolbarMaxY"),CGRectGetWidth(_a),CGRectGetHeight(_a)-objj_msgSend(_7,"toolbarMaxY"))); +if(!objj_msgSend(objj_msgSend(_9,"toolbar"),"isVisible")){ +objj_msgSend(_toolbarBackgroundView,"removeFromSuperview"); +_toolbarBackgroundView=nil; +return; +} +if(!_toolbarBackgroundView){ +_toolbarBackgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_toolbarBackgroundView,"setBackgroundColor:",objj_msgSend(objj_msgSend(_7,"class"),"toolbarBackgroundColor")); +objj_msgSend(_toolbarBackgroundView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_7,"addSubview:positioned:relativeTo:",_toolbarBackgroundView,CPWindowBelow,nil); +} +var _b=CGRectMakeZero(),_c=objj_msgSend(_7,"toolbarOffset"); +_b.origin=CGPointMake(_c.width,_c.height); +_b.size=objj_msgSend(_toolbarView,"frame").size; +objj_msgSend(_toolbarBackgroundView,"setFrame:",_b); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("toolbarBackgroundColor"),function(_d,_e){ +with(_d){ +if(!_1){ +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPBorderlessBridgeWindowView,"class")),"pathForResource:","_CPToolbarView/_CPToolbarViewBackground.png"),CGSizeMake(1,59))); +} +return _1; +} +})]); +p;25;_CPBorderlessWindowView.jt;190;@STATIC;1.0;i;15;_CPWindowView.jt;152; +objj_executeFile("_CPWindowView.j",YES); +var _1=objj_allocateClassPair(_CPWindowView,"_CPBorderlessWindowView"),_2=_1.isa; +objj_registerClassPair(_1); +p;23;_CPDocModalWindowView.jt;1359;@STATIC;1.0;i;15;_CPWindowView.jt;1320; +objj_executeFile("_CPWindowView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(_CPWindowView,"_CPDocModalWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_bodyView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_4,_5,_6,_7){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("_CPDocModalWindowView").super_class},"initWithFrame:styleMask:",_6,_7); +if(_4){ +var _8=objj_msgSend(_4,"class"),_9=objj_msgSend(_4,"bounds"); +_bodyView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_9),CGRectGetHeight(_9))); +objj_msgSend(_bodyView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_bodyView,"setBackgroundColor:",objj_msgSend(_8,"bodyBackgroundColor")); +objj_msgSend(_bodyView,"setHitTests:",NO); +objj_msgSend(_4,"addSubview:",_bodyView); +} +return _4; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_a,_b,_c){ +with(_a){ +return _c; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_d,_e,_f){ +with(_d){ +return _f; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("bodyBackgroundColor"),function(_10,_11){ +with(_10){ +if(!_1){ +_1=objj_msgSend(CPColor,"colorWithWhite:alpha:",0.96,0.9); +} +return _1; +} +})]); +p;18;_CPHUDWindowView.jt;6961;@STATIC;1.0;t;6942; +var _1=nil,_2=nil; +var _3=26; +var _4=objj_allocateClassPair(_CPWindowView,"_CPHUDWindowView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_toolbarView"),new objj_ivar("_titleField"),new objj_ivar("_closeButton")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(objj_msgSend(_6,"class"),"contentRectForFrameRect:",_8); +if(objj_msgSend(objj_msgSend(objj_msgSend(_6,"window"),"toolbar"),"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_6,"toolbarView"),"frame")); +_9.origin.y+=toolbarHeight; +_9.size.height-=toolbarHeight; +} +return _9; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_a,_b,_c){ +with(_a){ +var _d=objj_msgSend(objj_msgSend(_a,"class"),"frameRectForContentRect:",_c); +if(objj_msgSend(objj_msgSend(objj_msgSend(_a,"window"),"toolbar"),"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_a,"toolbarView"),"frame")); +_d.origin.y-=toolbarHeight; +_d.size.height+=toolbarHeight; +} +return _d; +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPHUDWindowView").super_class},"initWithFrame:styleMask:",_10,_11); +if(_e){ +var _12=objj_msgSend(_e,"bounds"); +objj_msgSend(_e,"setBackgroundColor:",_1); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setHitTests:",NO); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_titleField,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_titleField,"setTextShadowColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setStringValue:","Untitled"); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setStringValue:",""); +objj_msgSend(_titleField,"setFrame:",CGRectMake(20,3,CGRectGetWidth(objj_msgSend(_e,"bounds"))-40,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +objj_msgSend(_e,"addSubview:",_titleField); +if(_styleMask&CPClosableWindowMask){ +var _13=objj_msgSend(_CPHUDWindowViewCloseImage,"size"); +_closeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(8,5,_13.width,_13.height)); +objj_msgSend(_closeButton,"setBordered:",NO); +objj_msgSend(_closeButton,"setImage:",_CPHUDWindowViewCloseImage); +objj_msgSend(_closeButton,"setAlternateImage:",_CPHUDWindowViewCloseActiveImage); +objj_msgSend(_e,"addSubview:",_closeButton); +} +objj_msgSend(_e,"setResizeIndicatorOffset:",CGSizeMake(5,5)); +} +return _e; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_14,_15){ +with(_14){ +objj_msgSend(_closeButton,"setTarget:",objj_msgSend(_14,"window")); +objj_msgSend(_closeButton,"setAction:",sel_getUid("performClose:")); +} +}),new objj_method(sel_getUid("setTitle:"),function(_16,_17,_18){ +with(_16){ +objj_msgSend(_titleField,"setStringValue:",_18); +} +}),new objj_method(sel_getUid("toolbarView"),function(_19,_1a){ +with(_19){ +return _toolbarView; +} +}),new objj_method(sel_getUid("toolbarLabelColor"),function(_1b,_1c){ +with(_1b){ +return objj_msgSend(CPColor,"whiteColor"); +} +}),new objj_method(sel_getUid("toolbarLabelShadowColor"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_1f,_20){ +with(_1f){ +return CGSizeMake(0,_3); +} +}),new objj_method(sel_getUid("tile"),function(_21,_22){ +with(_21){ +objj_msgSendSuper({receiver:_21,super_class:objj_getClass("_CPHUDWindowView").super_class},"tile"); +var _23=objj_msgSend(_21,"window"),_24=objj_msgSend(_21,"bounds"),_25=CGRectGetWidth(_24); +objj_msgSend(_titleField,"setFrame:",CGRectMake(20,3,_25-40,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +var _26=objj_msgSend(_21,"toolbarMaxY"); +objj_msgSend(objj_msgSend(_23,"contentView"),"setFrameOrigin:",CGPointMake(0,_26,_25,CGRectGetHeight(_24)-_26)); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("initialize"),function(_27,_28){ +with(_27){ +if(_27!=objj_msgSend(_CPHUDWindowView,"class")){ +return; +} +var _29=objj_msgSend(CPBundle,"bundleForClass:",_27); +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground0.png"),CPSizeMake(7,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground1.png"),CPSizeMake(1,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground2.png"),CPSizeMake(7,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground3.png"),CPSizeMake(7,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground4.png"),CPSizeMake(2,2)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground5.png"),CPSizeMake(7,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground6.png"),CPSizeMake(7,3)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground7.png"),CPSizeMake(1,3)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground8.png"),CPSizeMake(7,3))])); +_CPHUDWindowViewCloseImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","HUDTheme/WindowClose.png"),CPSizeMake(18,18)); +_CPHUDWindowViewCloseActiveImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","HUDTheme/WindowCloseActive.png"),CPSizeMake(18,18)); +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_2a,_2b,_2c){ +with(_2a){ +var _2d=CGRectMakeCopy(_2c),_2e=_3; +_2d.origin.y+=_2e; +_2d.size.height-=_2e; +return _2d; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_2f,_30,_31){ +with(_2f){ +var _32=CGRectMakeCopy(_31),_33=_3; +_32.origin.y-=_33; +_32.size.height+=_33; +return _32; +} +})]); +p;23;_CPStandardWindowView.jt;11862;@STATIC;1.0;i;15;_CPWindowView.jt;11822; +objj_executeFile("_CPWindowView.j",YES); +var _1=41; +var _2=nil,_3=nil; +var _4=objj_allocateClassPair(CPView,"_CPTexturedWindowHeadView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_gradientView"),new objj_ivar("_solidView"),new objj_ivar("_dividerView")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithFrame:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("_CPTexturedWindowHeadView").super_class},"initWithFrame:",_8); +if(_6){ +var _9=objj_msgSend(_6,"class"),_a=objj_msgSend(_6,"bounds"); +_gradientView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_a),_1)); +objj_msgSend(_gradientView,"setBackgroundColor:",objj_msgSend(_9,"gradientColor")); +objj_msgSend(_6,"addSubview:",_gradientView); +_solidView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,_1,CGRectGetWidth(_a),CGRectGetHeight(_a)-_1)); +objj_msgSend(_solidView,"setBackgroundColor:",objj_msgSend(_9,"solidColor")); +objj_msgSend(_6,"addSubview:",_solidView); +} +return _6; +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_b,_c,_d){ +with(_b){ +var _e=objj_msgSend(_b,"bounds"); +objj_msgSend(_gradientView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_e),_1)); +objj_msgSend(_solidView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_e),CGRectGetHeight(_e)-_1)); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("gradientColor"),function(_f,_10){ +with(_f){ +if(!_2){ +var _11=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPWindowView,"class")); +_2=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop0.png"),CGSizeMake(6,41)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop1.png"),CGSizeMake(1,41)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop2.png"),CGSizeMake(6,41))],NO)); +} +return _2; +} +}),new objj_method(sel_getUid("solidColor"),function(_12,_13){ +with(_12){ +if(!_3){ +_3=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",195/255,195/255,195/255,1); +} +return _3; +} +})]); +var _14=nil,_15=nil,_16=nil,_17=nil,_18=nil,_19=nil,_1a=nil,_1b=nil,_1c=nil; +var _1d=41; +STANDARD_TITLEBAR_HEIGHT=25; +var _4=objj_allocateClassPair(_CPWindowView,"_CPStandardWindowView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_headView"),new objj_ivar("_dividerView"),new objj_ivar("_bodyView"),new objj_ivar("_toolbarView"),new objj_ivar("_titleField"),new objj_ivar("_closeButton"),new objj_ivar("_minimizeButton"),new objj_ivar("_isDocumentEdited")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_1e,_1f,_20){ +with(_1e){ +var _21=objj_msgSend(objj_msgSend(_1e,"class"),"contentRectForFrameRect:",_20),_22=objj_msgSend(objj_msgSend(_1e,"window"),"toolbar"); +if(objj_msgSend(_22,"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_22,"_toolbarView"),"frame")); +_21.origin.y+=toolbarHeight; +_21.size.height-=toolbarHeight; +} +return _21; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(objj_msgSend(_23,"class"),"frameRectForContentRect:",_25),_27=objj_msgSend(objj_msgSend(_23,"window"),"toolbar"); +if(objj_msgSend(_27,"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_27,"_toolbarView"),"frame")); +_26.origin.y-=toolbarHeight; +_26.size.height+=toolbarHeight; +} +return _26; +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_28,_29,_2a,_2b){ +with(_28){ +_28=objj_msgSendSuper({receiver:_28,super_class:objj_getClass("_CPStandardWindowView").super_class},"initWithFrame:styleMask:",_2a,_2b); +if(_28){ +var _2c=objj_msgSend(_28,"class"),_2d=objj_msgSend(_28,"bounds"); +_headView=objj_msgSend(objj_msgSend(_CPTexturedWindowHeadView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_2d),objj_msgSend(objj_msgSend(_28,"class"),"titleBarHeight"))); +objj_msgSend(_headView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_headView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_headView); +_dividerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,CGRectGetMaxY(objj_msgSend(_headView,"frame")),CGRectGetWidth(_2d),1)); +objj_msgSend(_dividerView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_dividerView,"setBackgroundColor:",objj_msgSend(_2c,"dividerBackgroundColor")); +objj_msgSend(_dividerView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_dividerView); +var y=CGRectGetMaxY(objj_msgSend(_dividerView,"frame")); +_bodyView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,y,CGRectGetWidth(_2d),CGRectGetHeight(_2d)-y)); +objj_msgSend(_bodyView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_bodyView,"setBackgroundColor:",objj_msgSend(_2c,"bodyBackgroundColor")); +objj_msgSend(_bodyView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_bodyView); +objj_msgSend(_28,"setResizeIndicatorOffset:",CGSizeMake(2,2)); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",12)); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setTextShadowColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_titleField,"setStringValue:","Untitled"); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setStringValue:",""); +objj_msgSend(_28,"addSubview:",_titleField); +if(_styleMask&CPClosableWindowMask){ +if(!_17){ +var _2e=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_17=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButton.png"),CGSizeMake(16,16)); +_18=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png"),CGSizeMake(16,16)); +_19=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png"),CGSizeMake(16,16)); +_1a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png"),CGSizeMake(16,16)); +} +_closeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(8,7,16,16)); +objj_msgSend(_closeButton,"setBordered:",NO); +objj_msgSend(_28,"_updateCloseButton"); +objj_msgSend(_28,"addSubview:",_closeButton); +} +if(_styleMask&CPMiniaturizableWindowMask&&!objj_msgSend(CPPlatform,"isBrowser")){ +if(!_1b){ +var _2e=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_1b=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardMinimizeButton.png"),CGSizeMake(16,16)); +_1c=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png"),CGSizeMake(16,16)); +} +_minimizeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(27,7,16,16)); +objj_msgSend(_minimizeButton,"setBordered:",NO); +objj_msgSend(_minimizeButton,"setImage:",_1b); +objj_msgSend(_minimizeButton,"setAlternateImage:",_1c); +objj_msgSend(_28,"addSubview:",_minimizeButton); +} +objj_msgSend(_28,"tile"); +} +return _28; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_2f,_30){ +with(_2f){ +objj_msgSend(_closeButton,"setTarget:",objj_msgSend(_2f,"window")); +objj_msgSend(_closeButton,"setAction:",sel_getUid("performClose:")); +objj_msgSend(_minimizeButton,"setTarget:",objj_msgSend(_2f,"window")); +objj_msgSend(_minimizeButton,"setAction:",sel_getUid("performMiniaturize:")); +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_31,_32){ +with(_31){ +return CGSizeMake(0,objj_msgSend(objj_msgSend(_31,"class"),"titleBarHeight")); +} +}),new objj_method(sel_getUid("tile"),function(_33,_34){ +with(_33){ +objj_msgSendSuper({receiver:_33,super_class:objj_getClass("_CPStandardWindowView").super_class},"tile"); +var _35=objj_msgSend(_33,"window"),_36=objj_msgSend(_33,"bounds"),_37=CGRectGetWidth(_36); +objj_msgSend(_headView,"setFrameSize:",CGSizeMake(_37,objj_msgSend(_33,"toolbarMaxY"))); +objj_msgSend(_dividerView,"setFrame:",CGRectMake(0,CGRectGetMaxY(objj_msgSend(_headView,"frame")),_37,1)); +var _38=CGRectGetMaxY(objj_msgSend(_dividerView,"frame")); +objj_msgSend(_bodyView,"setFrame:",CGRectMake(0,_38,_37,CGRectGetHeight(_36)-_38)); +var _39=8; +if(_closeButton){ +_39+=19; +} +if(_minimizeButton){ +_39+=19; +} +objj_msgSend(_titleField,"setFrame:",CGRectMake(_39,5,_37-_39*2,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +objj_msgSend(objj_msgSend(_35,"contentView"),"setFrameOrigin:",CGPointMake(0,CGRectGetMaxY(objj_msgSend(_dividerView,"frame")))); +} +}),new objj_method(sel_getUid("_updateCloseButton"),function(_3a,_3b){ +with(_3a){ +if(_isDocumentEdited){ +objj_msgSend(_closeButton,"setImage:",_19); +objj_msgSend(_closeButton,"setAlternateImage:",_1a); +}else{ +objj_msgSend(_closeButton,"setImage:",_17); +objj_msgSend(_closeButton,"setAlternateImage:",_18); +} +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_3c,_3d,_3e){ +with(_3c){ +_isDocumentEdited=_3e; +objj_msgSend(_3c,"_updateCloseButton"); +} +}),new objj_method(sel_getUid("setTitle:"),function(_3f,_40,_41){ +with(_3f){ +objj_msgSend(_titleField,"setStringValue:",_41); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_42,_43,_44){ +with(_42){ +if(CGRectContainsPoint(objj_msgSend(_headView,"frame"),objj_msgSend(_42,"convertPoint:fromView:",objj_msgSend(_44,"locationInWindow"),nil))){ +return objj_msgSend(_42,"trackMoveWithEvent:",_44); +} +objj_msgSendSuper({receiver:_42,super_class:objj_getClass("_CPStandardWindowView").super_class},"mouseDown:",_44); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("bodyBackgroundColor"),function(_45,_46){ +with(_45){ +if(!_14){ +_14=objj_msgSend(CPColor,"colorWithWhite:alpha:",0.96,1); +} +return _14; +} +}),new objj_method(sel_getUid("dividerBackgroundColor"),function(_47,_48){ +with(_47){ +if(!_15){ +_15=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",125/255,125/255,125/255,1); +} +return _15; +} +}),new objj_method(sel_getUid("titleColor"),function(_49,_4a){ +with(_49){ +if(!_16){ +_16=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",44/255,44/255,44/255,1); +} +return _16; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_4b,_4c,_4d){ +with(_4b){ +var _4e=CGRectMakeCopy(_4d),_4f=objj_msgSend(_4b,"titleBarHeight")+1; +_4e.origin.y+=_4f; +_4e.size.height-=_4f; +return _4e; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_50,_51,_52){ +with(_50){ +var _53=CGRectMakeCopy(_52),_54=objj_msgSend(_50,"titleBarHeight")+1; +_53.origin.y-=_54; +_53.size.height+=_54; +return _53; +} +}),new objj_method(sel_getUid("titleBarHeight"),function(_55,_56){ +with(_55){ +return STANDARD_TITLEBAR_HEIGHT; +} +})]); +p;15;_CPWindowView.jt;9275;@STATIC;1.0;i;8;CPView.ji;13;CPImageView.jt;9226; +objj_executeFile("CPView.j",YES); +objj_executeFile("CPImageView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPView,"_CPWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_styleMask"),new objj_ivar("_resizeIndicator"),new objj_ivar("_resizeIndicatorOffset"),new objj_ivar("_toolbarView"),new objj_ivar("_toolbarOffset"),new objj_ivar("_resizeFrame"),new objj_ivar("_mouseDraggedPoint"),new objj_ivar("_cachedScreenFrame")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_4,_5,_6){ +with(_4){ +return objj_msgSend(objj_msgSend(_4,"class"),"contentRectForFrameRect:",_6); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(objj_msgSend(_7,"class"),"frameRectForContentRect:",_9); +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_a,_b,_c,_d){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("_CPWindowView").super_class},"initWithFrame:",_c); +if(_a){ +_styleMask=_d; +_resizeIndicatorOffset=CGSizeMakeZero(); +_toolbarOffset=CGSizeMakeZero(); +} +return _a; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_e,_f,_10){ +with(_e){ +} +}),new objj_method(sel_getUid("setTitle:"),function(_11,_12,_13){ +with(_11){ +} +}),new objj_method(sel_getUid("acceptsFirstMouse:"),function(_14,_15,_16){ +with(_14){ +return YES; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_17,_18,_19){ +with(_17){ +var _1a=objj_msgSend(_17,"window"); +if((_styleMask&CPResizableWindowMask)&&_resizeIndicator){ +var _1b=objj_msgSend(_resizeIndicator,"frame"); +if(CGRectContainsPoint(_1b,objj_msgSend(_17,"convertPoint:fromView:",objj_msgSend(_19,"locationInWindow"),nil))){ +return objj_msgSend(_17,"trackResizeWithEvent:",_19); +} +} +if(objj_msgSend(_1a,"isMovableByWindowBackground")){ +objj_msgSend(_17,"trackMoveWithEvent:",_19); +}else{ +objj_msgSendSuper({receiver:_17,super_class:objj_getClass("_CPWindowView").super_class},"mouseDown:",_19); +} +} +}),new objj_method(sel_getUid("trackResizeWithEvent:"),function(_1c,_1d,_1e){ +with(_1c){ +var _1f=objj_msgSend(_1e,"locationInWindow"),_20=objj_msgSend(_1e,"type"); +if(_20===CPLeftMouseUp){ +return; +} +var _21=objj_msgSend(_1c,"window"); +if(_20===CPLeftMouseDown){ +var _22=objj_msgSend(_21,"frame"); +_resizeFrame=CGRectMake(_1f.x,_1f.y,CGRectGetWidth(_22),CGRectGetHeight(_22)); +}else{ +if(_20===CPLeftMouseDragged){ +var _23=CGSizeMake(CGRectGetWidth(_resizeFrame)+_1f.x-CGRectGetMinX(_resizeFrame),CGRectGetHeight(_resizeFrame)+_1f.y-CGRectGetMinY(_resizeFrame)); +if(_21._isSheet&&_21._parentView&&(_21._frame.size.width!==_23.width)){ +objj_msgSend(_21._parentView,"_setAttachedSheetFrameOrigin"); +} +objj_msgSend(_21,"setFrameSize:",_23); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_1c,sel_getUid("trackResizeWithEvent:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("_pointWithinScreenFrame:"),function(_24,_25,_26){ +with(_24){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +return _26; +} +var _27=_cachedScreenFrame; +if(!_27){ +_27=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"visibleFrame"); +} +var _28=0; +if(objj_msgSend(CPMenu,"menuBarVisible")){ +_28=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"menuBarHeight"); +} +var _29=CGPointMake(0,0); +_29.x=MIN(MAX(_26.x,-_frame.size.width+4),CGRectGetMaxX(_27)-4); +_29.y=MIN(MAX(_26.y,_28),CGRectGetMaxY(_27)-8); +return _29; +} +}),new objj_method(sel_getUid("trackMoveWithEvent:"),function(_2a,_2b,_2c){ +with(_2a){ +var _2d=objj_msgSend(_2c,"type"); +if(_2d===CPLeftMouseUp){ +_cachedScreenFrame=nil; +return; +}else{ +if(_2d===CPLeftMouseDown){ +_mouseDraggedPoint=objj_msgSend(objj_msgSend(_2a,"window"),"convertBaseToGlobal:",objj_msgSend(_2c,"locationInWindow")); +_cachedScreenFrame=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"visibleFrame"); +}else{ +if(_2d===CPLeftMouseDragged){ +var _2e=objj_msgSend(_2a,"window"),_2f=objj_msgSend(_2e,"frame"),_30=objj_msgSend(_2e,"convertBaseToGlobal:",objj_msgSend(_2c,"locationInWindow")),_31=objj_msgSend(_2a,"_pointWithinScreenFrame:",CGPointMake((_2f.origin.x)+(_30.x-_mouseDraggedPoint.x),(_2f.origin.y)+(_30.y-_mouseDraggedPoint.y))); +objj_msgSend(_2e,"setFrameOrigin:",_31); +_mouseDraggedPoint=objj_msgSend(_2a,"_pointWithinScreenFrame:",_30); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_2a,sel_getUid("trackMoveWithEvent:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_32,_33,_34){ +with(_32){ +if(_34){ +var _35=objj_msgSend(_1,"size"),_36=objj_msgSend(_32,"frame").size; +_resizeIndicator=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(_36.width-_35.width-_resizeIndicatorOffset.width,_36.height-_35.height-_resizeIndicatorOffset.height,_35.width,_35.height)); +objj_msgSend(_resizeIndicator,"setImage:",_1); +objj_msgSend(_resizeIndicator,"setAutoresizingMask:",CPViewMinXMargin|CPViewMinYMargin); +objj_msgSend(_32,"addSubview:",_resizeIndicator); +}else{ +objj_msgSend(_resizeIndicator,"removeFromSuperview"); +_resizeIndicator=nil; +} +} +}),new objj_method(sel_getUid("showsResizeIndicator"),function(_37,_38){ +with(_37){ +return _resizeIndicator!==nil; +} +}),new objj_method(sel_getUid("setResizeIndicatorOffset:"),function(_39,_3a,_3b){ +with(_39){ +if(CGSizeEqualToSize(_resizeIndicatorOffset,_3b)){ +return; +} +_resizeIndicatorOffset=_3b; +if(!_resizeIndicator){ +return; +} +var _3c=objj_msgSend(_resizeIndicator,"frame").size,_3d=objj_msgSend(_39,"frame").size; +objj_msgSend(_resizeIndicator,"setFrameOrigin:",CGPointMake(_3d.width-_3c.width-_3b.width,_3d.height-_3c.height-_3b.height)); +} +}),new objj_method(sel_getUid("resizeIndicatorOffset"),function(_3e,_3f){ +with(_3e){ +return _resizeIndicatorOffset; +} +}),new objj_method(sel_getUid("windowDidChangeDocumentEdited"),function(_40,_41){ +with(_40){ +} +}),new objj_method(sel_getUid("windowDidChangeDocumentSaving"),function(_42,_43){ +with(_42){ +} +}),new objj_method(sel_getUid("showsToolbar"),function(_44,_45){ +with(_44){ +return YES; +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_46,_47){ +with(_46){ +return _toolbarOffset; +} +}),new objj_method(sel_getUid("toolbarLabelColor"),function(_48,_49){ +with(_48){ +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("toolbarMaxY"),function(_4a,_4b){ +with(_4a){ +if(!_toolbarView||objj_msgSend(_toolbarView,"isHidden")){ +return objj_msgSend(_4a,"toolbarOffset").height; +} +return CGRectGetMaxY(objj_msgSend(_toolbarView,"frame")); +} +}),new objj_method(sel_getUid("toolbarView"),function(_4c,_4d){ +with(_4c){ +return _toolbarView; +} +}),new objj_method(sel_getUid("tile"),function(_4e,_4f){ +with(_4e){ +var _50=objj_msgSend(_4e,"window"),_51=objj_msgSend(_4e,"bounds"),_52=CGRectGetWidth(_51); +if(objj_msgSend(objj_msgSend(_50,"toolbar"),"isVisible")){ +var _53=objj_msgSend(_4e,"toolbarView"),_54=objj_msgSend(_4e,"toolbarOffset"); +objj_msgSend(_53,"setFrame:",CGRectMake(_54.width,_54.height,_52,CGRectGetHeight(objj_msgSend(_53,"frame")))); +} +if(objj_msgSend(_4e,"showsResizeIndicator")){ +var _55=objj_msgSend(_resizeIndicator,"frame").size,_56=objj_msgSend(_4e,"bounds").size; +objj_msgSend(_resizeIndicator,"setFrameOrigin:",CGPointMake(_56.width-_55.width-_resizeIndicatorOffset.width,_56.height-_55.height-_resizeIndicatorOffset.height)); +} +} +}),new objj_method(sel_getUid("noteToolbarChanged"),function(_57,_58){ +with(_57){ +var _59=objj_msgSend(_57,"window"),_5a=objj_msgSend(_59,"toolbar"),_5b=objj_msgSend(_5a,"_toolbarView"); +if(_toolbarView!==_5b){ +objj_msgSend(_toolbarView,"removeFromSuperview"); +if(_5b){ +objj_msgSend(_5b,"removeFromSuperview"); +objj_msgSend(_5b,"FIXME_setIsHUD:",_styleMask&CPHUDBackgroundWindowMask); +objj_msgSend(_57,"addSubview:",_5b); +} +_toolbarView=_5b; +} +objj_msgSend(_5b,"setHidden:",!objj_msgSend(_57,"showsToolbar")||!objj_msgSend(_5a,"isVisible")); +if(_59){ +var _5c=objj_msgSend(_57,"convertRect:toView:",objj_msgSend(objj_msgSend(_59,"contentView"),"frame"),nil); +_5c.origin=objj_msgSend(_59,"convertBaseToGlobal:",_5c.origin); +objj_msgSend(_57,"setAutoresizesSubviews:",NO); +objj_msgSend(_59,"setFrame:",objj_msgSend(_59,"frameRectForContentRect:",_5c)); +objj_msgSend(_57,"setAutoresizesSubviews:",YES); +} +objj_msgSend(_57,"tile"); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_5d,_5e,_5f){ +with(_5d){ +if(!_resizeIndicator||_5f===_resizeIndicator){ +return; +} +objj_msgSend(_5d,"addSubview:",_resizeIndicator); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_60,_61){ +with(_60){ +if(_60!=objj_msgSend(_CPWindowView,"class")){ +return; +} +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")),"pathForResource:","_CPWindowView/_CPWindowViewResizeIndicator.png"),CGSizeMake(12,12)); +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_62,_63,_64){ +with(_62){ +return CGRectMakeCopy(_64); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_65,_66,_67){ +with(_65){ +return CGRectMakeCopy(_67); +} +})]); +p;10;CPWindow.jt;61693;@STATIC;1.0;I;25;Foundation/CPCountedSet.jI;33;Foundation/CPNotificationCenter.jI;26;Foundation/CPUndoManager.ji;12;CGGeometry.ji;13;CPAnimation.ji;13;CPResponder.ji;10;CPScreen.ji;18;CPPlatformWindow.ji;15;_CPWindowView.ji;23;_CPStandardWindowView.ji;23;_CPDocModalWindowView.ji;18;_CPHUDWindowView.ji;25;_CPBorderlessWindowView.ji;31;_CPBorderlessBridgeWindowView.ji;14;CPDragServer.ji;8;CPView.jt;61287; +objj_executeFile("Foundation/CPCountedSet.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPUndoManager.j",NO); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPAnimation.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPScreen.j",YES); +objj_executeFile("CPPlatformWindow.j",YES); +CPBorderlessWindowMask=0; +CPTitledWindowMask=1<<0; +CPClosableWindowMask=1<<1; +CPMiniaturizableWindowMask=1<<2; +CPResizableWindowMask=1<<3; +CPTexturedBackgroundWindowMask=1<<8; +CPBorderlessBridgeWindowMask=1<<20; +CPHUDBackgroundWindowMask=1<<21; +CPWindowNotSizable=0; +CPWindowMinXMargin=1; +CPWindowWidthSizable=2; +CPWindowMaxXMargin=4; +CPWindowMinYMargin=8; +CPWindowHeightSizable=16; +CPWindowMaxYMargin=32; +CPBackgroundWindowLevel=-1; +CPNormalWindowLevel=0; +CPFloatingWindowLevel=3; +CPSubmenuWindowLevel=3; +CPTornOffMenuWindowLevel=3; +CPMainMenuWindowLevel=24; +CPStatusWindowLevel=25; +CPModalPanelWindowLevel=8; +CPPopUpMenuWindowLevel=101; +CPDraggingWindowLevel=500; +CPScreenSaverWindowLevel=1000; +CPWindowOut=0; +CPWindowAbove=1; +CPWindowBelow=2; +CPWindowWillCloseNotification="CPWindowWillCloseNotification"; +CPWindowDidBecomeMainNotification="CPWindowDidBecomeMainNotification"; +CPWindowDidResignMainNotification="CPWindowDidResignMainNotification"; +CPWindowDidBecomeKeyNotification="CPWindowDidBecomeKeyNotification"; +CPWindowDidResignKeyNotification="CPWindowDidResignKeyNotification"; +CPWindowDidResizeNotification="CPWindowDidResizeNotification"; +CPWindowDidMoveNotification="CPWindowDidMoveNotification"; +CPWindowWillBeginSheetNotification="CPWindowWillBeginSheetNotification"; +CPWindowDidEndSheetNotification="CPWindowDidEndSheetNotification"; +CPWindowDidMiniaturizeNotification="CPWindowDidMiniaturizeNotification"; +CPWindowWillMiniaturizeNotification="CPWindowWillMiniaturizeNotification"; +CPWindowDidDeminiaturizeNotification="CPWindowDidDeminiaturizeNotification"; +CPWindowShadowStyleStandard=0; +CPWindowShadowStyleMenu=1; +CPWindowShadowStylePanel=2; +var _1=20,_2=19,_3=10,_4=10,_5=5,_6=nil; +var _7=nil,_8=nil; +var _9=0.2; +var _a=objj_allocateClassPair(CPResponder,"CPWindow"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_platformWindow"),new objj_ivar("_windowNumber"),new objj_ivar("_styleMask"),new objj_ivar("_frame"),new objj_ivar("_level"),new objj_ivar("_isVisible"),new objj_ivar("_isMiniaturized"),new objj_ivar("_isAnimating"),new objj_ivar("_hasShadow"),new objj_ivar("_isMovableByWindowBackground"),new objj_ivar("_shadowStyle"),new objj_ivar("_showsResizeIndicator"),new objj_ivar("_isDocumentEdited"),new objj_ivar("_isDocumentSaving"),new objj_ivar("_shadowView"),new objj_ivar("_windowView"),new objj_ivar("_contentView"),new objj_ivar("_toolbarView"),new objj_ivar("_mouseEnteredStack"),new objj_ivar("_leftMouseDownView"),new objj_ivar("_rightMouseDownView"),new objj_ivar("_toolbar"),new objj_ivar("_firstResponder"),new objj_ivar("_initialFirstResponder"),new objj_ivar("_delegate"),new objj_ivar("_title"),new objj_ivar("_acceptsMouseMovedEvents"),new objj_ivar("_ignoresMouseEvents"),new objj_ivar("_windowController"),new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_undoManager"),new objj_ivar("_representedURL"),new objj_ivar("_registeredDraggedTypes"),new objj_ivar("_registeredDraggedTypesArray"),new objj_ivar("_inclusiveRegisteredDraggedTypes"),new objj_ivar("_defaultButton"),new objj_ivar("_defaultButtonEnabled"),new objj_ivar("_autorecalculatesKeyViewLoop"),new objj_ivar("_keyViewLoopIsDirty"),new objj_ivar("_sharesChromeWithPlatformWindow"),new objj_ivar("_DOMElement"),new objj_ivar("_autoresizingMask"),new objj_ivar("_delegateRespondsToWindowWillReturnUndoManagerSelector"),new objj_ivar("_isFullPlatformWindow"),new objj_ivar("_fullPlatformWindowSession"),new objj_ivar("_sheetContext"),new objj_ivar("_parentView"),new objj_ivar("_isSheet"),new objj_ivar("_frameAnimation")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("init"),function(_c,_d){ +with(_c){ +return objj_msgSend(_c,"initWithContentRect:styleMask:",{origin:{x:0,y:0},size:{width:0,height:0}},CPTitledWindowMask); +} +}),new objj_method(sel_getUid("initWithContentRect:styleMask:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPWindow").super_class},"init"); +if(_e){ +var _12=objj_msgSend(objj_msgSend(_e,"class"),"_windowViewClassForStyleMask:",_11); +_frame=objj_msgSend(_12,"frameRectForContentRect:",_10); +objj_msgSend(_e,"_setSharesChromeWithPlatformWindow:",!objj_msgSend(CPPlatform,"isBrowser")); +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_e,"setPlatformWindow:",objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")); +}else{ +if((_11&CPBorderlessBridgeWindowMask)&&_10.size.width===0&&_10.size.height===0){ +var _13=objj_msgSend(objj_msgSend(objj_msgSend(CPScreen,"alloc"),"init"),"visibleFrame"); +_frame.size.height=MIN(768,_13.size.height); +_frame.size.width=MIN(1024,_13.size.width); +_frame.origin.x=(_13.size.width-_frame.size.width)/2; +_frame.origin.y=(_13.size.height-_frame.size.height)/2; +} +objj_msgSend(_e,"setPlatformWindow:",objj_msgSend(objj_msgSend(CPPlatformWindow,"alloc"),"initWithContentRect:",_frame)); +objj_msgSend(_e,"platformWindow")._only=_e; +} +_isFullPlatformWindow=NO; +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_isSheet=NO; +_windowNumber=objj_msgSend(CPApp._windows,"count"); +CPApp._windows[_windowNumber]=_e; +_styleMask=_11; +objj_msgSend(_e,"setLevel:",CPNormalWindowLevel); +_minSize=CGSizeMake(0,0); +_maxSize=CGSizeMake(1000000,1000000); +_windowView=objj_msgSend(objj_msgSend(_12,"alloc"),"initWithFrame:styleMask:",CGRectMake(0,0,CGRectGetWidth(_frame),CGRectGetHeight(_frame)),_11); +objj_msgSend(_windowView,"_setWindow:",_e); +objj_msgSend(_windowView,"setNextResponder:",_e); +objj_msgSend(_e,"setMovableByWindowBackground:",_11&CPHUDBackgroundWindowMask); +objj_msgSend(_e,"setContentView:",objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero())); +_firstResponder=_e; +_DOMElement=document.createElement("div"); +_DOMElement.style.position="absolute"; +_DOMElement.style.visibility="visible"; +_DOMElement.style.zIndex=0; +if(!objj_msgSend(_e,"_sharesChromeWithPlatformWindow")){ +if(NULL){ +var _14=_CGPointApplyAffineTransform(CGPointMake((_frame.origin.x),(_frame.origin.y)),NULL); +}else{ +var _14={x:(_frame.origin.x),y:(_frame.origin.y)}; +} +_DOMElement.style.left=ROUND(_14.x)+"px"; +_DOMElement.style.top=ROUND(_14.y)+"px"; +} +_DOMElement.style.width=MAX(0,ROUND(1))+"px"; +_DOMElement.style.height=MAX(0,ROUND(1))+"px"; +_DOMElement.appendChild(_windowView._DOMElement); +objj_msgSend(_e,"setNextResponder:",CPApp); +objj_msgSend(_e,"setHasShadow:",_11!==CPBorderlessWindowMask); +if(_11&CPBorderlessBridgeWindowMask){ +objj_msgSend(_e,"setFullPlatformWindow:",YES); +} +_defaultButtonEnabled=YES; +_keyViewLoopIsDirty=YES; +objj_msgSend(_e,"setShowsResizeIndicator:",_styleMask&CPResizableWindowMask); +} +return _e; +} +}),new objj_method(sel_getUid("platformWindow"),function(_15,_16){ +with(_15){ +return _platformWindow; +} +}),new objj_method(sel_getUid("setPlatformWindow:"),function(_17,_18,_19){ +with(_17){ +_platformWindow=_19; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_1a,_1b){ +with(_1a){ +_keyViewLoopIsDirty=!objj_msgSend(_1a,"_hasKeyViewLoop"); +} +}),new objj_method(sel_getUid("_setWindowView:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_windowView===_1e){ +return; +} +var _1f=_windowView; +_windowView=_1e; +if(_1f){ +objj_msgSend(_1f,"_setWindow:",nil); +objj_msgSend(_1f,"noteToolbarChanged"); +_DOMElement.removeChild(_1f._DOMElement); +} +if(_windowView){ +_DOMElement.appendChild(_windowView._DOMElement); +var _20=objj_msgSend(_contentView,"convertRect:toView:",objj_msgSend(_contentView,"bounds"),nil); +_20.origin=objj_msgSend(_1c,"convertBaseToGlobal:",_20.origin); +objj_msgSend(_windowView,"_setWindow:",_1c); +objj_msgSend(_windowView,"setNextResponder:",_1c); +objj_msgSend(_windowView,"addSubview:",_contentView); +objj_msgSend(_windowView,"setTitle:",_title); +objj_msgSend(_windowView,"noteToolbarChanged"); +objj_msgSend(_windowView,"setShowsResizeIndicator:",objj_msgSend(_1c,"showsResizeIndicator")); +objj_msgSend(_1c,"setFrame:",objj_msgSend(_1c,"frameRectForContentRect:",_20)); +} +} +}),new objj_method(sel_getUid("setFullPlatformWindow:"),function(_21,_22,_23){ +with(_21){ +if(!objj_msgSend(_platformWindow,"supportsFullPlatformWindows")){ +return; +} +_23=!!_23; +if(_isFullPlatformWindow===_23){ +return; +} +_isFullPlatformWindow=_23; +if(_isFullPlatformWindow){ +_fullPlatformWindowSession=_CPWindowFullPlatformWindowSessionMake(_windowView,objj_msgSend(_21,"contentRectForFrameRect:",objj_msgSend(_21,"frame")),objj_msgSend(_21,"hasShadow"),objj_msgSend(_21,"level")); +var _24=objj_msgSend(objj_msgSend(_21,"class"),"_windowViewClassForFullPlatformWindowStyleMask:",_styleMask),_25=objj_msgSend(objj_msgSend(_24,"alloc"),"initWithFrame:styleMask:",CGRectMakeZero(),_styleMask); +objj_msgSend(_21,"_setWindowView:",_25); +objj_msgSend(_21,"setLevel:",CPBackgroundWindowLevel); +objj_msgSend(_21,"setHasShadow:",NO); +objj_msgSend(_21,"setAutoresizingMask:",CPWindowWidthSizable|CPWindowHeightSizable); +objj_msgSend(_21,"setFrame:",objj_msgSend(_platformWindow,"visibleFrame")); +}else{ +var _25=_fullPlatformWindowSession.windowView; +objj_msgSend(_21,"_setWindowView:",_25); +objj_msgSend(_21,"setLevel:",_fullPlatformWindowSession.level); +objj_msgSend(_21,"setHasShadow:",_fullPlatformWindowSession.hasShadow); +objj_msgSend(_21,"setAutoresizingMask:",CPWindowNotSizable); +objj_msgSend(_21,"setFrame:",objj_msgSend(_25,"frameRectForContentRect:",_fullPlatformWindowSession.contentRect)); +} +} +}),new objj_method(sel_getUid("isFullPlatformWindow"),function(_26,_27){ +with(_26){ +return _isFullPlatformWindow; +} +}),new objj_method(sel_getUid("styleMask"),function(_28,_29){ +with(_28){ +return _styleMask; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_2a,_2b,_2c){ +with(_2a){ +return objj_msgSend(_windowView,"contentRectForFrameRect:",_2c); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_2d,_2e,_2f){ +with(_2d){ +return objj_msgSend(_windowView,"frameRectForContentRect:",_2f); +} +}),new objj_method(sel_getUid("frame"),function(_30,_31){ +with(_30){ +return {origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}}; +} +}),new objj_method(sel_getUid("_setClippedFrame:display:animate:"),function(_32,_33,_34,_35,_36){ +with(_32){ +_34.size.width=MIN(MAX(_34.size.width,_minSize.width),_maxSize.width); +_34.size.height=MIN(MAX(_34.size.height,_minSize.height),_maxSize.height); +objj_msgSend(_32,"setFrame:display:animate:",_34,_35,_36); +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_37,_38,_39,_3a,_3b){ +with(_37){ +_39={origin:{x:_39.origin.x,y:_39.origin.y},size:{width:_39.size.width,height:_39.size.height}}; +var _3c=_39.origin.x,_3d=_3c-FLOOR(_3c); +if(_3d){ +_39.origin.x=_3c>0.879?CEIL(_3c):FLOOR(_3c); +} +_3c=_39.origin.y; +_3d=_3c-FLOOR(_3c); +if(_3d){ +_39.origin.y=_3c>0.879?CEIL(_3c):FLOOR(_3c); +} +_3c=_39.size.width; +_3d=_3c-FLOOR(_3c); +if(_3d){ +_39.size.width=_3c>0.15?CEIL(_3c):FLOOR(_3c); +} +_3c=_39.size.height; +_3d=_3c-FLOOR(_3c); +if(_3d){ +_39.size.height=_3c>0.15?CEIL(_3c):FLOOR(_3c); +} +if(_3b){ +objj_msgSend(_frameAnimation,"stopAnimation"); +_frameAnimation=objj_msgSend(objj_msgSend(_CPWindowFrameAnimation,"alloc"),"initWithWindow:targetFrame:",_37,_39); +objj_msgSend(_frameAnimation,"startAnimation"); +}else{ +var _3e=_frame.origin,_3f=_39.origin; +if(!(_3e.x==_3f.x&&_3e.y==_3f.y)){ +_3e.x=_3f.x; +_3e.y=_3f.y; +if(!objj_msgSend(_37,"_sharesChromeWithPlatformWindow")){ +if(NULL){ +var _40=_CGPointApplyAffineTransform(CGPointMake(_3e.x,_3e.y),NULL); +}else{ +var _40={x:_3e.x,y:_3e.y}; +} +_DOMElement.style.left=ROUND(_40.x)+"px"; +_DOMElement.style.top=ROUND(_40.y)+"px"; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidMoveNotification,_37); +} +var _41=_frame.size,_42=_39.size; +if(!(_41.width==_42.width&&_41.height==_42.height)){ +_41.width=_42.width; +_41.height=_42.height; +objj_msgSend(_windowView,"setFrameSize:",_41); +if(_hasShadow){ +objj_msgSend(_shadowView,"setFrameSize:",{width:_1+_41.width+_2,height:_4+_41.height+_3+_5}); +} +if(!_isAnimating){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResizeNotification,_37); +} +} +if(objj_msgSend(_37,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"setContentRect:",_frame); +} +} +} +}),new objj_method(sel_getUid("setFrame:display:"),function(_43,_44,_45,_46){ +with(_43){ +objj_msgSend(_43,"_setClippedFrame:display:animate:",_45,_46,NO); +} +}),new objj_method(sel_getUid("setFrame:"),function(_47,_48,_49){ +with(_47){ +objj_msgSend(_47,"_setClippedFrame:display:animate:",_49,YES,NO); +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_4a,_4b,_4c){ +with(_4a){ +objj_msgSend(_4a,"_setClippedFrame:display:animate:",{origin:{x:_4c.x,y:_4c.y},size:{width:(_frame.size.width),height:(_frame.size.height)}},YES,NO); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_4d,_4e,_4f){ +with(_4d){ +objj_msgSend(_4d,"_setClippedFrame:display:animate:",{origin:{x:(_frame.origin.x),y:(_frame.origin.y)},size:{width:_4f.width,height:_4f.height}},YES,NO); +} +}),new objj_method(sel_getUid("orderFront:"),function(_50,_51,_52){ +with(_50){ +objj_msgSend(_platformWindow,"orderFront:",_50); +objj_msgSend(_platformWindow,"order:window:relativeTo:",CPWindowAbove,_50,nil); +if(_firstResponder===_50||!_firstResponder){ +objj_msgSend(_50,"makeFirstResponder:",objj_msgSend(_50,"initialFirstResponder")); +} +if(!CPApp._keyWindow){ +objj_msgSend(_50,"makeKeyWindow"); +} +if(!CPApp._mainWindow){ +objj_msgSend(_50,"makeMainWindow"); +} +} +}),new objj_method(sel_getUid("orderBack:"),function(_53,_54,_55){ +with(_53){ +} +}),new objj_method(sel_getUid("orderOut:"),function(_56,_57,_58){ +with(_56){ +if(objj_msgSend(_56,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"orderOut:",_56); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowWillClose:"))){ +objj_msgSend(_delegate,"windowWillClose:",_56); +} +objj_msgSend(_platformWindow,"order:window:relativeTo:",CPWindowOut,_56,nil); +objj_msgSend(_56,"_updateMainAndKeyWindows"); +} +}),new objj_method(sel_getUid("orderWindow:relativeTo:"),function(_59,_5a,_5b,_5c){ +with(_59){ +objj_msgSend(_platformWindow,"order:window:relativeTo:",_5b,_59,CPApp._windows[_5c]); +} +}),new objj_method(sel_getUid("setLevel:"),function(_5d,_5e,_5f){ +with(_5d){ +if(_5f===_level){ +return; +} +objj_msgSend(_platformWindow,"moveWindow:fromLevel:toLevel:",_5d,_level,_5f); +_level=_5f; +if(objj_msgSend(_5d,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"setLevel:",_5f); +} +} +}),new objj_method(sel_getUid("level"),function(_60,_61){ +with(_60){ +return _level; +} +}),new objj_method(sel_getUid("isVisible"),function(_62,_63){ +with(_62){ +return _isVisible; +} +}),new objj_method(sel_getUid("showsResizeIndicator"),function(_64,_65){ +with(_64){ +return _showsResizeIndicator; +} +}),new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_66,_67,_68){ +with(_66){ +_68=!!_68; +if(_showsResizeIndicator===_68){ +return; +} +_showsResizeIndicator=_68; +objj_msgSend(_windowView,"setShowsResizeIndicator:",objj_msgSend(_66,"showsResizeIndicator")); +} +}),new objj_method(sel_getUid("resizeIndicatorOffset"),function(_69,_6a){ +with(_69){ +return objj_msgSend(_windowView,"resizeIndicatorOffset"); +} +}),new objj_method(sel_getUid("setResizeIndicatorOffset:"),function(_6b,_6c,_6d){ +with(_6b){ +objj_msgSend(_windowView,"setResizeIndicatorOffset:",_6d); +} +}),new objj_method(sel_getUid("setContentView:"),function(_6e,_6f,_70){ +with(_6e){ +if(_contentView){ +objj_msgSend(_contentView,"removeFromSuperview"); +} +var _71=CGRectMake(0,0,CGRectGetWidth(_frame),CGRectGetHeight(_frame)); +_contentView=_70; +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_6e,"contentRectForFrameRect:",_71)); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_windowView,"addSubview:",_contentView); +} +}),new objj_method(sel_getUid("contentView"),function(_72,_73){ +with(_72){ +return _contentView; +} +}),new objj_method(sel_getUid("setAlphaValue:"),function(_74,_75,_76){ +with(_74){ +objj_msgSend(_windowView,"setAlphaValue:",_76); +} +}),new objj_method(sel_getUid("alphaValue"),function(_77,_78){ +with(_77){ +return objj_msgSend(_windowView,"alphaValue"); +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_windowView,"setBackgroundColor:",_7b); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_7c,_7d){ +with(_7c){ +return objj_msgSend(_windowView,"backgroundColor"); +} +}),new objj_method(sel_getUid("setMinSize:"),function(_7e,_7f,_80){ +with(_7e){ +if(CGSizeEqualToSize(_minSize,_80)){ +return; +} +_minSize=CGSizeCreateCopy(_80); +var _81=CGSizeMakeCopy(objj_msgSend(_7e,"frame").size),_82=NO; +if(_81.width<_minSize.width){ +_81.width=_minSize.width; +_82=YES; +} +if(_81.height<_minSize.height){ +_81.height=_minSize.height; +_82=YES; +} +if(_82){ +objj_msgSend(_7e,"setFrameSize:",_81); +} +} +}),new objj_method(sel_getUid("minSize"),function(_83,_84){ +with(_83){ +return _minSize; +} +}),new objj_method(sel_getUid("setMaxSize:"),function(_85,_86,_87){ +with(_85){ +if(CGSizeEqualToSize(_maxSize,_87)){ +return; +} +_maxSize=CGSizeCreateCopy(_87); +var _88=CGSizeMakeCopy(objj_msgSend(_85,"frame").size),_89=NO; +if(_88.width>_maxSize.width){ +_88.width=_maxSize.width; +_89=YES; +} +if(_88.height>_maxSize.height){ +_88.height=_maxSize.height; +_89=YES; +} +if(_89){ +objj_msgSend(_85,"setFrameSize:",_88); +} +} +}),new objj_method(sel_getUid("maxSize"),function(_8a,_8b){ +with(_8a){ +return _maxSize; +} +}),new objj_method(sel_getUid("hasShadow"),function(_8c,_8d){ +with(_8c){ +return _hasShadow; +} +}),new objj_method(sel_getUid("_updateShadow"),function(_8e,_8f){ +with(_8e){ +if(objj_msgSend(_8e,"_sharesChromeWithPlatformWindow")){ +if(_shadowView){ +_DOMElement.removeChild(_shadowView._DOMElement); +_shadowView=nil; +} +objj_msgSend(_platformWindow,"setHasShadow:",_hasShadow); +return; +} +if(_hasShadow&&!_shadowView){ +var _90=objj_msgSend(_windowView,"bounds"); +_shadowView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(-_1,-_3+_5,_1+CGRectGetWidth(_90)+_2,_3+CGRectGetHeight(_90)+_4)); +if(!_6){ +var _91=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_6=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow0.png"),CGSizeMake(20,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow1.png"),CGSizeMake(1,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow2.png"),CGSizeMake(19,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow3.png"),CGSizeMake(20,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow5.png"),CGSizeMake(19,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow6.png"),CGSizeMake(20,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow7.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow8.png"),CGSizeMake(19,18))])); +} +objj_msgSend(_shadowView,"setBackgroundColor:",_6); +objj_msgSend(_shadowView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_DOMElement.insertBefore(_shadowView._DOMElement,_windowView._DOMElement); +}else{ +if(!_hasShadow&&_shadowView){ +_DOMElement.removeChild(_shadowView._DOMElement); +_shadowView=nil; +} +} +} +}),new objj_method(sel_getUid("setHasShadow:"),function(_92,_93,_94){ +with(_92){ +if(_hasShadow===_94){ +return; +} +_hasShadow=_94; +objj_msgSend(_92,"_updateShadow"); +} +}),new objj_method(sel_getUid("setShadowStyle:"),function(_95,_96,_97){ +with(_95){ +_shadowStyle=_97; +objj_msgSend(objj_msgSend(_95,"platformWindow"),"setShadowStyle:",_shadowStyle); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_98,_99,_9a){ +with(_98){ +var _9b=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidResignKeyNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidBecomeKeyNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidBecomeMainNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidResignMainNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidMoveNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidResizeNotification,_98); +_delegate=_9a; +_delegateRespondsToWindowWillReturnUndoManagerSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowWillReturnUndoManager:")); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResignKey:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResignKey:"),CPWindowDidResignKeyNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidBecomeKey:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidBecomeKey:"),CPWindowDidBecomeKeyNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidBecomeMain:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidBecomeMain:"),CPWindowDidBecomeMainNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResignMain:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResignMain:"),CPWindowDidResignMainNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidMove:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidMove:"),CPWindowDidMoveNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResize:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResize:"),CPWindowDidResizeNotification,_98); +} +} +}),new objj_method(sel_getUid("delegate"),function(_9c,_9d){ +with(_9c){ +return _delegate; +} +}),new objj_method(sel_getUid("setWindowController:"),function(_9e,_9f,_a0){ +with(_9e){ +_windowController=_a0; +} +}),new objj_method(sel_getUid("windowController"),function(_a1,_a2){ +with(_a1){ +return _windowController; +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_a3,_a4,_a5){ +with(_a3){ +if(objj_msgSend(_delegate,"respondsToSelector:",_a5)){ +objj_msgSend(_delegate,"performSelector:",_a5); +}else{ +objj_msgSendSuper({receiver:_a3,super_class:objj_getClass("CPWindow").super_class},"doCommandBySelector:",_a5); +} +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_a6,_a7){ +with(_a6){ +return YES; +} +}),new objj_method(sel_getUid("initialFirstResponder"),function(_a8,_a9){ +with(_a8){ +return _initialFirstResponder; +} +}),new objj_method(sel_getUid("setInitialFirstResponder:"),function(_aa,_ab,_ac){ +with(_aa){ +_initialFirstResponder=_ac; +} +}),new objj_method(sel_getUid("makeFirstResponder:"),function(_ad,_ae,_af){ +with(_ad){ +if(_firstResponder===_af){ +return YES; +} +if(!objj_msgSend(_firstResponder,"resignFirstResponder")){ +return NO; +} +if(!_af||!objj_msgSend(_af,"acceptsFirstResponder")||!objj_msgSend(_af,"becomeFirstResponder")){ +_firstResponder=_ad; +return NO; +} +_firstResponder=_af; +return YES; +} +}),new objj_method(sel_getUid("firstResponder"),function(_b0,_b1){ +with(_b0){ +return _firstResponder; +} +}),new objj_method(sel_getUid("acceptsMouseMovedEvents"),function(_b2,_b3){ +with(_b2){ +return _acceptsMouseMovedEvents; +} +}),new objj_method(sel_getUid("setAcceptsMouseMovedEvents:"),function(_b4,_b5,_b6){ +with(_b4){ +_acceptsMouseMovedEvents=_b6; +} +}),new objj_method(sel_getUid("ignoresMouseEvents"),function(_b7,_b8){ +with(_b7){ +return _ignoresMouseEvents; +} +}),new objj_method(sel_getUid("setIgnoresMouseEvents:"),function(_b9,_ba,_bb){ +with(_b9){ +_ignoresMouseEvents=_bb; +} +}),new objj_method(sel_getUid("title"),function(_bc,_bd){ +with(_bc){ +return _title; +} +}),new objj_method(sel_getUid("setTitle:"),function(_be,_bf,_c0){ +with(_be){ +_title=_c0; +objj_msgSend(_windowView,"setTitle:",_c0); +objj_msgSend(_be,"_synchronizeMenuBarTitleWithWindowTitle"); +} +}),new objj_method(sel_getUid("setTitleWithRepresentedFilename:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSend(_c1,"setRepresentedFilename:",_c3); +objj_msgSend(_c1,"setTitle:",objj_msgSend(_c3,"lastPathComponent")); +} +}),new objj_method(sel_getUid("setRepresentedFilename:"),function(_c4,_c5,_c6){ +with(_c4){ +objj_msgSend(_c4,"setRepresentedURL:",_c6); +} +}),new objj_method(sel_getUid("representedFilename"),function(_c7,_c8){ +with(_c7){ +return _representedURL; +} +}),new objj_method(sel_getUid("setRepresentedURL:"),function(_c9,_ca,_cb){ +with(_c9){ +_representedURL=_cb; +} +}),new objj_method(sel_getUid("representedURL"),function(_cc,_cd){ +with(_cc){ +return _representedURL; +} +}),new objj_method(sel_getUid("screen"),function(_ce,_cf){ +with(_ce){ +return objj_msgSend(objj_msgSend(CPScreen,"alloc"),"init"); +} +}),new objj_method(sel_getUid("setMovableByWindowBackground:"),function(_d0,_d1,_d2){ +with(_d0){ +_isMovableByWindowBackground=_d2; +} +}),new objj_method(sel_getUid("isMovableByWindowBackground"),function(_d3,_d4){ +with(_d3){ +return _isMovableByWindowBackground; +} +}),new objj_method(sel_getUid("center"),function(_d5,_d6){ +with(_d5){ +if(_isFullPlatformWindow){ +return; +} +var _d7=objj_msgSend(_d5,"frame").size,_d8=objj_msgSend(CPPlatform,"isBrowser")?objj_msgSend(_platformWindow,"contentBounds").size:objj_msgSend(objj_msgSend(_d5,"screen"),"visibleFrame").size; +var _d9=CGPointMake((_d8.width-_d7.width)/2,(_d8.height-_d7.height)/2); +if(_d9.x<0){ +_d9.x=0; +} +if(_d9.y<0){ +_d9.y=0; +} +objj_msgSend(_d5,"setFrameOrigin:",_d9); +} +}),new objj_method(sel_getUid("sendEvent:"),function(_da,_db,_dc){ +with(_da){ +var _dd=objj_msgSend(_dc,"type"),_de=objj_msgSend(_dc,"locationInWindow"); +switch(_dd){ +case CPFlagsChanged: +return objj_msgSend(objj_msgSend(_da,"firstResponder"),"flagsChanged:",_dc); +case CPKeyUp: +return objj_msgSend(objj_msgSend(_da,"firstResponder"),"keyUp:",_dc); +case CPKeyDown: +objj_msgSend(objj_msgSend(_da,"firstResponder"),"keyDown:",_dc); +if(!objj_msgSend(_da,"disableKeyEquivalentForDefaultButton")){ +if(objj_msgSend(_dc,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(objj_msgSend(_da,"defaultButton"),"keyEquivalent"),objj_msgSend(objj_msgSend(_da,"defaultButton"),"keyEquivalentModifierMask"))){ +objj_msgSend(objj_msgSend(_da,"defaultButton"),"performClick:",_da); +} +} +return; +case CPScrollWheel: +return objj_msgSend(objj_msgSend(_windowView,"hitTest:",_de),"scrollWheel:",_dc); +case CPLeftMouseUp: +case CPRightMouseUp: +var _df=_leftMouseDownView,_e0=_dd==CPRightMouseUp?sel_getUid("rightMouseUp:"):sel_getUid("mouseUp:"); +if(!_df){ +_df=objj_msgSend(_windowView,"hitTest:",_de); +} +objj_msgSend(_df,"performSelector:withObject:",_e0,_dc); +_leftMouseDownView=nil; +return; +case CPLeftMouseDown: +case CPRightMouseDown: +_leftMouseDownView=objj_msgSend(_windowView,"hitTest:",_de); +if(_leftMouseDownView!=_firstResponder&&objj_msgSend(_leftMouseDownView,"acceptsFirstResponder")){ +objj_msgSend(_da,"makeFirstResponder:",_leftMouseDownView); +} +objj_msgSend(CPApp,"activateIgnoringOtherApps:",YES); +var _e1=objj_msgSend(_dc,"window"),_e0=_dd==CPRightMouseDown?sel_getUid("rightMouseDown:"):sel_getUid("mouseDown:"); +if(objj_msgSend(_e1,"isKeyWindow")||objj_msgSend(_e1,"becomesKeyOnlyIfNeeded")&&!objj_msgSend(_leftMouseDownView,"needsPanelToBecomeKey")){ +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_e0,_dc); +}else{ +objj_msgSend(_da,"makeKeyAndOrderFront:",_da); +if(objj_msgSend(_leftMouseDownView,"acceptsFirstMouse:",_dc)){ +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_e0,_dc); +} +} +break; +case CPLeftMouseDragged: +case CPRightMouseDragged: +if(!_leftMouseDownView){ +return objj_msgSend(objj_msgSend(_windowView,"hitTest:",_de),"mouseDragged:",_dc); +} +var _e0; +if(_dd==CPRightMouseDragged){ +_e0=sel_getUid("rightMouseDragged:"); +if(!objj_msgSend(_leftMouseDownView,"respondsToSelector:",_e0)){ +_e0=nil; +} +} +if(!_e0){ +_e0=sel_getUid("mouseDragged:"); +} +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_e0,_dc); +case CPMouseMoved: +if(!_acceptsMouseMovedEvents){ +return; +} +if(!_mouseEnteredStack){ +_mouseEnteredStack=[]; +} +var _e2=objj_msgSend(_windowView,"hitTest:",_de); +if(objj_msgSend(_mouseEnteredStack,"count")&&objj_msgSend(_mouseEnteredStack,"lastObject")===_e2){ +return objj_msgSend(_e2,"mouseMoved:",_dc); +} +var _e3=_e2,_e4=[]; +while(_e3){ +_e4.unshift(_e3); +_e3=objj_msgSend(_e3,"superview"); +} +var _e5=MIN(_mouseEnteredStack.length,_e4.length); +while(_e5--){ +if(_mouseEnteredStack[_e5]===_e4[_e5]){ +break; +} +} +var _e6=_e5+1,_e7=_mouseEnteredStack.length; +if(_e6<_e7){ +var _e8=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPMouseExited,_de,objj_msgSend(_dc,"modifierFlags"),objj_msgSend(_dc,"timestamp"),_windowNumber,nil,-1,1,0); +for(;_e6<_e7;++_e6){ +objj_msgSend(_mouseEnteredStack[_e6],"mouseExited:",_e8); +} +} +_e6=_e5+1; +_e7=_e4.length; +if(_e6<_e7){ +var _e8=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPMouseEntered,_de,objj_msgSend(_dc,"modifierFlags"),objj_msgSend(_dc,"timestamp"),_windowNumber,nil,-1,1,0); +for(;_e6<_e7;++_e6){ +objj_msgSend(_e4[_e6],"mouseEntered:",_e8); +} +} +_mouseEnteredStack=_e4; +objj_msgSend(_e2,"mouseMoved:",_dc); +} +} +}),new objj_method(sel_getUid("windowNumber"),function(_e9,_ea){ +with(_e9){ +return _windowNumber; +} +}),new objj_method(sel_getUid("becomeKeyWindow"),function(_eb,_ec){ +with(_eb){ +CPApp._keyWindow=_eb; +if(_firstResponder!==_eb&&objj_msgSend(_firstResponder,"respondsToSelector:",sel_getUid("becomeKeyWindow"))){ +objj_msgSend(_firstResponder,"becomeKeyWindow"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidBecomeKeyNotification,_eb); +} +}),new objj_method(sel_getUid("canBecomeKeyWindow"),function(_ed,_ee){ +with(_ed){ +return YES; +} +}),new objj_method(sel_getUid("isKeyWindow"),function(_ef,_f0){ +with(_ef){ +return objj_msgSend(CPApp,"keyWindow")==_ef; +} +}),new objj_method(sel_getUid("makeKeyAndOrderFront:"),function(_f1,_f2,_f3){ +with(_f1){ +objj_msgSend(_f1,"orderFront:",_f1); +objj_msgSend(_f1,"makeKeyWindow"); +objj_msgSend(_f1,"makeMainWindow"); +} +}),new objj_method(sel_getUid("makeKeyWindow"),function(_f4,_f5){ +with(_f4){ +if(objj_msgSend(CPApp,"keyWindow")===_f4||!objj_msgSend(_f4,"canBecomeKeyWindow")){ +return; +} +objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"resignKeyWindow"); +objj_msgSend(_f4,"becomeKeyWindow"); +} +}),new objj_method(sel_getUid("resignKeyWindow"),function(_f6,_f7){ +with(_f6){ +if(_firstResponder!==_f6&&objj_msgSend(_firstResponder,"respondsToSelector:",sel_getUid("resignKeyWindow"))){ +objj_msgSend(_firstResponder,"resignKeyWindow"); +} +if(CPApp._keyWindow===_f6){ +CPApp._keyWindow=nil; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResignKeyNotification,_f6); +} +}),new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"),function(_f8,_f9,_fa,_fb,_fc,_fd,_fe,_ff,_100){ +with(_f8){ +objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:",_fa,_f8,objj_msgSend(_f8,"convertBaseToGlobal:",_fb),_fc,_fd,_fe,_ff,_100); +} +}),new objj_method(sel_getUid("_noteRegisteredDraggedTypes:"),function(self,_101,_102){ +with(self){ +if(!_102){ +return; +} +if(!_inclusiveRegisteredDraggedTypes){ +_inclusiveRegisteredDraggedTypes=objj_msgSend(CPCountedSet,"set"); +} +objj_msgSend(_inclusiveRegisteredDraggedTypes,"unionSet:",_102); +} +}),new objj_method(sel_getUid("_noteUnregisteredDraggedTypes:"),function(self,_103,_104){ +with(self){ +if(!_104){ +return; +} +objj_msgSend(_inclusiveRegisteredDraggedTypes,"minusSet:",_104); +if(objj_msgSend(_inclusiveRegisteredDraggedTypes,"count")===0){ +_inclusiveRegisteredDraggedTypes=nil; +} +} +}),new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"),function(self,_105,_106,_107,_108,_109,_10a,_10b,_10c){ +with(self){ +objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:",_106,self,objj_msgSend(self,"convertBaseToGlobal:",_107),_108,_109,_10a,_10b,_10c); +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(self,_10d,_10e){ +with(self){ +if(!_10e){ +return; +} +objj_msgSend(self,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_registeredDraggedTypes,"addObjectsFromArray:",_10e); +objj_msgSend(self,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypesArray=nil; +} +}),new objj_method(sel_getUid("registeredDraggedTypes"),function(self,_10f){ +with(self){ +if(!_registeredDraggedTypesArray){ +_registeredDraggedTypesArray=objj_msgSend(_registeredDraggedTypes,"allObjects"); +} +return _registeredDraggedTypesArray; +} +}),new objj_method(sel_getUid("unregisterDraggedTypes"),function(self,_110){ +with(self){ +objj_msgSend(self,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(self,_111,_112){ +with(self){ +if(_isDocumentEdited==_112){ +return; +} +_isDocumentEdited=_112; +objj_msgSend(CPMenu,"_setMenuBarIconImageAlphaValue:",_isDocumentEdited?0.5:1); +objj_msgSend(_windowView,"setDocumentEdited:",_112); +} +}),new objj_method(sel_getUid("isDocumentEdited"),function(self,_113){ +with(self){ +return _isDocumentEdited; +} +}),new objj_method(sel_getUid("setDocumentSaving:"),function(self,_114,_115){ +with(self){ +if(_isDocumentSaving==_115){ +return; +} +_isDocumentSaving=_115; +objj_msgSend(self,"_synchronizeSaveMenuWithDocumentSaving"); +objj_msgSend(_windowView,"windowDidChangeDocumentSaving"); +} +}),new objj_method(sel_getUid("isDocumentSaving"),function(self,_116){ +with(self){ +return _isDocumentSaving; +} +}),new objj_method(sel_getUid("_synchronizeSaveMenuWithDocumentSaving"),function(self,_117){ +with(self){ +if(!objj_msgSend(self,"isMainWindow")){ +return; +} +var _118=objj_msgSend(CPApp,"mainMenu"),_119=objj_msgSend(_118,"indexOfItemWithTitle:",_isDocumentSaving?"Save":"Saving..."); +if(_119==CPNotFound){ +return; +} +var item=objj_msgSend(_118,"itemAtIndex:",_119); +if(_isDocumentSaving){ +_7=objj_msgSend(item,"image"); +objj_msgSend(item,"setTitle:","Saving..."); +objj_msgSend(item,"setImage:",_8); +objj_msgSend(item,"setEnabled:",NO); +}else{ +objj_msgSend(item,"setTitle:","Save"); +objj_msgSend(item,"setImage:",_7); +objj_msgSend(item,"setEnabled:",YES); +} +} +}),new objj_method(sel_getUid("performMiniaturize:"),function(self,_11a,_11b){ +with(self){ +objj_msgSend(self,"miniaturize:",_11b); +} +}),new objj_method(sel_getUid("miniaturize:"),function(self,_11c,_11d){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillMiniaturizeNotification,self); +objj_msgSend(objj_msgSend(self,"platformWindow"),"miniaturize:",_11d); +objj_msgSend(self,"_updateMainAndKeyWindows"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidMiniaturizeNotification,self); +_isMiniaturized=YES; +} +}),new objj_method(sel_getUid("deminiaturize:"),function(self,_11e,_11f){ +with(self){ +objj_msgSend(objj_msgSend(self,"platformWindow"),"deminiaturize:",_11f); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidDeminiaturizeNotification,self); +_isMiniaturized=NO; +} +}),new objj_method(sel_getUid("isMiniaturized"),function(self,_120){ +with(self){ +return _isMiniaturized; +} +}),new objj_method(sel_getUid("performClose:"),function(self,_121,_122){ +with(self){ +if(!(_styleMask&CPClosableWindowMask)){ +return; +} +if(objj_msgSend(self,"isFullBridge")){ +var _123=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(_123,"type")===CPKeyDown&&objj_msgSend(_123,"characters")==="w"&&(objj_msgSend(_123,"modifierFlags")&CPPlatformActionKeyMask)){ +objj_msgSend(objj_msgSend(self,"platformWindow"),"_propagateCurrentDOMEvent:",YES); +return; +} +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowShouldClose:"))){ +if(!objj_msgSend(_delegate,"windowShouldClose:",self)){ +return; +} +}else{ +if(objj_msgSend(self,"respondsToSelector:",sel_getUid("windowShouldClose:"))&&!objj_msgSend(self,"windowShouldClose:",self)){ +return; +} +} +var _124=objj_msgSend(_windowController,"documents"); +if(objj_msgSend(_124,"count")){ +var _125=objj_msgSend(_124,"indexOfObject:",objj_msgSend(_windowController,"document")); +objj_msgSend(_124[_125],"shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",_windowController,self,sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),{documents:objj_msgSend(_124,"copy"),visited:0,index:_125}); +}else{ +objj_msgSend(self,"close"); +} +} +}),new objj_method(sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),function(self,_126,_127,_128,_129){ +with(self){ +if(_128){ +var _12a=objj_msgSend(self,"windowController"),_12b=_129.documents,_12c=objj_msgSend(_12b,"count"),_12d=++_129.visited,_12e=++_129.index%_12c; +objj_msgSend(_127,"removeWindowController:",_12a); +if(_12d<_12c){ +objj_msgSend(_12a,"setDocument:",_12b[_12e]); +objj_msgSend(_12b[_12e],"shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",_windowController,self,sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),_129); +}else{ +objj_msgSend(self,"close"); +} +} +} +}),new objj_method(sel_getUid("close"),function(self,_12f){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillCloseNotification,self); +objj_msgSend(self,"orderOut:",nil); +} +}),new objj_method(sel_getUid("isMainWindow"),function(self,_130){ +with(self){ +return objj_msgSend(CPApp,"mainWindow")==self; +} +}),new objj_method(sel_getUid("canBecomeMainWindow"),function(self,_131){ +with(self){ +if(objj_msgSend(self,"isVisible")){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("makeMainWindow"),function(self,_132){ +with(self){ +if(objj_msgSend(CPApp,"mainWindow")===self||!objj_msgSend(self,"canBecomeMainWindow")){ +return; +} +objj_msgSend(objj_msgSend(CPApp,"mainWindow"),"resignMainWindow"); +objj_msgSend(self,"becomeMainWindow"); +} +}),new objj_method(sel_getUid("becomeMainWindow"),function(self,_133){ +with(self){ +CPApp._mainWindow=self; +objj_msgSend(self,"_synchronizeMenuBarTitleWithWindowTitle"); +objj_msgSend(self,"_synchronizeSaveMenuWithDocumentSaving"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidBecomeMainNotification,self); +} +}),new objj_method(sel_getUid("resignMainWindow"),function(self,_134){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResignMainNotification,self); +if(CPApp._mainWindow===self){ +CPApp._mainWindow=nil; +} +} +}),new objj_method(sel_getUid("_updateMainAndKeyWindows"),function(self,_135){ +with(self){ +var _136=objj_msgSend(CPApp,"orderedWindows"),_137=objj_msgSend(_136,"count"); +if(objj_msgSend(self,"isKeyWindow")){ +var _138=objj_msgSend(CPApp,"keyWindow"); +objj_msgSend(self,"resignKeyWindow"); +if(_138&&_138!==self&&objj_msgSend(_138,"canBecomeKeyWindow")){ +objj_msgSend(_138,"makeKeyWindow"); +}else{ +var _139=objj_msgSend(CPApp,"mainMenu"),_13a=objj_getClass("_CPMenuBarWindow"),_13b; +for(var i=0;i<_137;i++){ +var _13c=_136[i]; +if(objj_msgSend(_13c,"isKindOfClass:",_13a)){ +_13b=_13c; +} +if(_13c===self||_13c===_13b){ +continue; +} +if(objj_msgSend(_13c,"isVisible")&&objj_msgSend(_13c,"canBecomeKeyWindow")){ +objj_msgSend(_13c,"makeKeyWindow"); +break; +} +} +if(!objj_msgSend(CPApp,"keyWindow")){ +objj_msgSend(_13b,"makeKeyWindow"); +} +} +} +if(objj_msgSend(self,"isMainWindow")){ +var _13d=objj_msgSend(CPApp,"mainWindow"); +objj_msgSend(self,"resignMainWindow"); +if(_13d&&_13d!==self&&objj_msgSend(_13d,"canBecomeMainWindow")){ +objj_msgSend(_13d,"makeMainWindow"); +}else{ +var _139=objj_msgSend(CPApp,"mainMenu"),_13a=objj_getClass("_CPMenuBarWindow"),_13b; +for(var i=0;i<_137;i++){ +var _13c=_136[i]; +if(objj_msgSend(_13c,"isKindOfClass:",_13a)){ +_13b=_13c; +} +if(_13c===self||_13c===_13b){ +continue; +} +if(objj_msgSend(_13c,"isVisible")&&objj_msgSend(_13c,"canBecomeMainWindow")){ +objj_msgSend(_13c,"makeMainWindow"); +break; +} +} +} +} +} +}),new objj_method(sel_getUid("toolbar"),function(self,_13e){ +with(self){ +return _toolbar; +} +}),new objj_method(sel_getUid("setToolbar:"),function(self,_13f,_140){ +with(self){ +if(_toolbar===_140){ +return; +} +objj_msgSend(objj_msgSend(_140,"_window"),"setToolbar:",nil); +objj_msgSend(_toolbar,"_setWindow:",nil); +_toolbar=_140; +objj_msgSend(_toolbar,"_setWindow:",self); +objj_msgSend(self,"_noteToolbarChanged"); +} +}),new objj_method(sel_getUid("toggleToolbarShown:"),function(self,_141,_142){ +with(self){ +var _143=objj_msgSend(self,"toolbar"); +objj_msgSend(_143,"setVisible:",!objj_msgSend(_143,"isVisible")); +} +}),new objj_method(sel_getUid("_noteToolbarChanged"),function(self,_144){ +with(self){ +var _145=CGRectMakeCopy(objj_msgSend(self,"frame")),_146; +objj_msgSend(_windowView,"noteToolbarChanged"); +if(_isFullPlatformWindow){ +_146=objj_msgSend(_platformWindow,"visibleFrame"); +}else{ +_146=CGRectMakeCopy(objj_msgSend(self,"frame")); +_146.origin=_145.origin; +} +objj_msgSend(self,"setFrame:",_146); +} +}),new objj_method(sel_getUid("_setFrame:delegate:duration:curve:"),function(self,_147,_148,_149,_14a,_14b){ +with(self){ +objj_msgSend(_frameAnimation,"stopAnimation"); +_frameAnimation=objj_msgSend(objj_msgSend(_CPWindowFrameAnimation,"alloc"),"initWithWindow:targetFrame:",self,_148); +objj_msgSend(_frameAnimation,"setDelegate:",_149); +objj_msgSend(_frameAnimation,"setAnimationCurve:",_14b); +objj_msgSend(_frameAnimation,"setDuration:",_14a); +objj_msgSend(_frameAnimation,"startAnimation"); +} +}),new objj_method(sel_getUid("animationResizeTime:"),function(self,_14c,_14d){ +with(self){ +return _9; +} +}),new objj_method(sel_getUid("_setAttachedSheetFrameOrigin"),function(self,_14e){ +with(self){ +var _14f=objj_msgSend(self,"attachedSheet"); +var _150=objj_msgSend(objj_msgSend(self,"contentView"),"frame"),_151=CGRectMakeCopy(objj_msgSend(_14f,"frame")); +_151.origin.y=CGRectGetMinY(_frame)+CGRectGetMinY(_150); +_151.origin.x=CGRectGetMinX(_frame)+FLOOR((CGRectGetWidth(_frame)-CGRectGetWidth(_151))/2); +objj_msgSend(_14f,"setFrame:display:animate:",_151,YES,NO); +} +}),new objj_method(sel_getUid("_attachSheet:modalDelegate:didEndSelector:contextInfo:"),function(self,_152,_153,_154,_155,_156){ +with(self){ +var _157=objj_msgSend(_153,"frame"); +_sheetContext={"sheet":_153,"modalDelegate":_154,"endSelector":_155,"contextInfo":_156,"frame":CGRectMakeCopy(_157),"returnCode":-1,"opened":NO}; +objj_msgSend(self,"_attachSheetWindow:",_153); +} +}),new objj_method(sel_getUid("_attachSheetWindow:"),function(self,_158,_159){ +with(self){ +var _15a=objj_msgSend(_159,"frame"),_15b=objj_msgSend(self,"frame"),_15c=objj_msgSend(_159,"contentView"); +objj_msgSend(self,"_setUpMasksForView:",_15c); +_159._isSheet=YES; +_159._parentView=self; +var _15d=_15b.origin.x+FLOOR((_15b.size.width-_15a.size.width)/2),_15e=_15b.origin.y+objj_msgSend(objj_msgSend(self,"contentView"),"frame").origin.y,_15f=CGRectMake(_15d,_15e,_15a.size.width,0),_160=CGRectMake(_15d,_15e,_15a.size.width,_15a.size.height); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillBeginSheetNotification,self); +objj_msgSend(CPApp,"runModalForWindow:",_159); +objj_msgSend(_159,"orderFront:",self); +objj_msgSend(_159,"setFrame:display:animate:",_15f,YES,NO); +_sheetContext["opened"]=YES; +objj_msgSend(_159,"_setFrame:delegate:duration:curve:",_160,self,objj_msgSend(self,"animationResizeTime:",_160),CPAnimationEaseOut); +objj_msgSend(_159,"becomeKeyWindow"); +} +}),new objj_method(sel_getUid("_detachSheetWindow"),function(self,_161){ +with(self){ +var _162=objj_msgSend(self,"attachedSheet"),_163=objj_msgSend(_162,"frame"),_164=CGRectMakeCopy(_163); +_164.size.height=0; +_sheetContext["frame"]=_163; +var _165=objj_msgSend(_162,"contentView"); +objj_msgSend(self,"_setUpMasksForView:",_165); +_sheetContext["opened"]=NO; +objj_msgSend(_162,"_setFrame:delegate:duration:curve:",_164,self,objj_msgSend(self,"animationResizeTime:",_164),CPAnimationEaseIn); +} +}),new objj_method(sel_getUid("animationDidEnd:"),function(self,_166,anim){ +with(self){ +var _167=_sheetContext["sheet"]; +if(anim._window!=_167){ +return; +} +var _168=objj_msgSend(_167,"contentView"); +if(_sheetContext["opened"]===YES){ +objj_msgSend(self,"_restoreMasksForView:",_168); +return; +} +objj_msgSend(CPApp,"stopModal"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidEndSheetNotification,self); +objj_msgSend(_167,"orderOut:",self); +var _169=_sheetContext["frame"]; +objj_msgSend(_167,"setFrame:",_169); +objj_msgSend(self,"_restoreMasksForView:",_168); +var _16a=_sheetContext["modalDelegate"],_16b=_sheetContext["endSelector"],_16c=_sheetContext["returnCode"],_16d=_sheetContext["contextInfo"]; +_sheetContext=nil; +_167._parentView=nil; +if(_16a!=nil&&_16b!=nil){ +objj_msgSend(_16a,_16b,_167,_16c,_16d); +} +} +}),new objj_method(sel_getUid("_setUpMasksForView:"),function(self,_16e,_16f){ +with(self){ +var _170=objj_msgSend(_16f,"subviews"); +objj_msgSend(_170,"addObject:",_16f); +for(var i=0,_171=objj_msgSend(_170,"count");i<_171;i++){ +var view=objj_msgSend(_170,"objectAtIndex:",i),mask=objj_msgSend(view,"autoresizingMask"),_172=(mask&CPViewMinYMargin)?128:CPViewMinYMargin; +objj_msgSend(view,"setAutoresizingMask:",(mask|_172)); +} +} +}),new objj_method(sel_getUid("_restoreMasksForView:"),function(self,_173,_174){ +with(self){ +var _175=objj_msgSend(_174,"subviews"); +objj_msgSend(_175,"addObject:",_174); +for(var i=0,_176=objj_msgSend(_175,"count");i<_176;i++){ +var view=objj_msgSend(_175,"objectAtIndex:",i),mask=objj_msgSend(view,"autoresizingMask"),_177=(mask&128)?128:CPViewMinYMargin; +objj_msgSend(view,"setAutoresizingMask:",(mask&(~_177))); +} +} +}),new objj_method(sel_getUid("attachedSheet"),function(self,_178){ +with(self){ +if(_sheetContext===nil){ +return nil; +} +return _sheetContext["sheet"]; +} +}),new objj_method(sel_getUid("isSheet"),function(self,_179){ +with(self){ +return _isSheet; +} +}),new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"),function(self,_17a){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("worksWhenModal"),function(self,_17b){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(self,_17c,_17d){ +with(self){ +return objj_msgSend(objj_msgSend(self,"contentView"),"performKeyEquivalent:",_17d); +} +}),new objj_method(sel_getUid("keyDown:"),function(self,_17e,_17f){ +with(self){ +if(objj_msgSend(_17f,"_couldBeKeyEquivalent")&&objj_msgSend(self,"performKeyEquivalent:",_17f)){ +return; +} +objj_msgSend(self,"interpretKeyEvents:",[_17f]); +} +}),new objj_method(sel_getUid("insertTab:"),function(self,_180,_181){ +with(self){ +objj_msgSend(self,"selectNextKeyView:",nil); +} +}),new objj_method(sel_getUid("_dirtyKeyViewLoop"),function(self,_182){ +with(self){ +if(_autorecalculatesKeyViewLoop){ +_keyViewLoopIsDirty=YES; +} +} +}),new objj_method(sel_getUid("_hasKeyViewLoop"),function(self,_183){ +with(self){ +var _184=[]; +objj_msgSend(self,"_appendSubviewsOf:toArray:",_contentView,_184); +for(var i=0,_185=objj_msgSend(_184,"count");i<_185;i++){ +if(_184[i]._nextKeyView){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("recalculateKeyViewLoop"),function(self,_186){ +with(self){ +var _187=[]; +objj_msgSend(self,"_appendSubviewsOf:toArray:",_contentView,_187); +var _188=objj_msgSend(_187,"sortedArrayUsingFunction:context:",_189,_contentView),_18a=objj_msgSend(_188,"count"); +for(var i=0;i<_18a;i++){ +objj_msgSend(_188[i],"setNextKeyView:",_188[(i+1)%_18a]); +} +_keyViewLoopIsDirty=NO; +} +}),new objj_method(sel_getUid("_appendSubviewsOf:toArray:"),function(self,_18b,_18c,_18d){ +with(self){ +var _18e=objj_msgSend(_18c,"subviews"),_18f=objj_msgSend(_18e,"count"); +while(_18f--){ +objj_msgSend(self,"_appendSubviewsOf:toArray:",_18e[_18f],_18d); +} +objj_msgSend(_18d,"addObject:",_18c); +} +}),new objj_method(sel_getUid("setAutorecalculatesKeyViewLoop:"),function(self,_190,_191){ +with(self){ +if(_autorecalculatesKeyViewLoop===_191){ +return; +} +_autorecalculatesKeyViewLoop=_191; +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +}else{ +if(_autorecalculatesKeyViewLoop){ +objj_msgSend(self,"_dirtyKeyViewLoop"); +} +} +} +}),new objj_method(sel_getUid("autorecalculatesKeyViewLoop"),function(self,_192){ +with(self){ +return _autorecalculatesKeyViewLoop; +} +}),new objj_method(sel_getUid("selectNextKeyView:"),function(self,_193,_194){ +with(self){ +if(objj_msgSend(_firstResponder,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +objj_msgSend(self,"selectKeyViewFollowingView:",_firstResponder); +} +} +}),new objj_method(sel_getUid("selectPreviousKeyView:"),function(self,_195,_196){ +with(self){ +if(objj_msgSend(_firstResponder,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +objj_msgSend(self,"selectKeyViewPrecedingView:",_firstResponder); +} +} +}),new objj_method(sel_getUid("selectKeyViewFollowingView:"),function(self,_197,_198){ +with(self){ +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +} +objj_msgSend(self,"makeFirstResponder:",objj_msgSend(_198,"nextValidKeyView")); +} +}),new objj_method(sel_getUid("selectKeyViewPrecedingView:"),function(self,_199,_19a){ +with(self){ +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +} +objj_msgSend(self,"makeFirstResponder:",objj_msgSend(_19a,"previousValidKeyView")); +} +}),new objj_method(sel_getUid("setDefaultButtonCell:"),function(self,_19b,_19c){ +with(self){ +objj_msgSend(self,"setDefaultButton:",_19c); +} +}),new objj_method(sel_getUid("defaultButtonCell"),function(self,_19d){ +with(self){ +return objj_msgSend(self,"defaultButton"); +} +}),new objj_method(sel_getUid("setDefaultButton:"),function(self,_19e,_19f){ +with(self){ +if(_defaultButton===_19f){ +return; +} +if(objj_msgSend(_defaultButton,"keyEquivalent")===CPCarriageReturnCharacter){ +objj_msgSend(_defaultButton,"setKeyEquivalent:",nil); +} +_defaultButton=_19f; +if(objj_msgSend(_defaultButton,"keyEquivalent")!==CPCarriageReturnCharacter){ +objj_msgSend(_defaultButton,"setKeyEquivalent:",CPCarriageReturnCharacter); +} +} +}),new objj_method(sel_getUid("defaultButton"),function(self,_1a0){ +with(self){ +return _defaultButton; +} +}),new objj_method(sel_getUid("enableKeyEquivalentForDefaultButton"),function(self,_1a1){ +with(self){ +_defaultButtonEnabled=YES; +} +}),new objj_method(sel_getUid("enableKeyEquivalentForDefaultButtonCell"),function(self,_1a2){ +with(self){ +objj_msgSend(self,"enableKeyEquivalentForDefaultButton"); +} +}),new objj_method(sel_getUid("disableKeyEquivalentForDefaultButton"),function(self,_1a3){ +with(self){ +_defaultButtonEnabled=NO; +} +}),new objj_method(sel_getUid("disableKeyEquivalentForDefaultButtonCell"),function(self,_1a4){ +with(self){ +objj_msgSend(self,"disableKeyEquivalentForDefaultButton"); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("initialize"),function(self,_1a5){ +with(self){ +if(self!=objj_msgSend(CPWindow,"class")){ +return; +} +var _1a6=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_8=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_1a6,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(16,16)); +} +}),new objj_method(sel_getUid("_windowViewClassForStyleMask:"),function(self,_1a7,_1a8){ +with(self){ +if(_1a8&CPHUDBackgroundWindowMask){ +return _CPHUDWindowView; +}else{ +if(_1a8===CPBorderlessWindowMask){ +return _CPBorderlessWindowView; +}else{ +if(_1a8&CPDocModalWindowMask){ +return _CPDocModalWindowView; +} +} +} +return _CPStandardWindowView; +} +}),new objj_method(sel_getUid("_windowViewClassForFullPlatformWindowStyleMask:"),function(self,_1a9,_1aa){ +with(self){ +return _CPBorderlessBridgeWindowView; +} +}),new objj_method(sel_getUid("frameRectForContentRect:styleMask:"),function(self,_1ab,_1ac,_1ad){ +with(self){ +return objj_msgSend(objj_msgSend(objj_msgSend(self,"class"),"_windowViewClassForStyleMask:",_1ad),"frameRectForContentRect:",_1ac); +} +})]); +var _189=function(a,b,_1ae){ +var _1af=objj_msgSend(a,"convertRect:toView:",objj_msgSend(a,"bounds"),nil),_1b0=objj_msgSend(b,"convertRect:toView:",objj_msgSend(b,"bounds"),nil); +if(CGRectGetMinY(_1af)"+""); +_10.close(); +var _18=_10.createElement("div"); +_18.style.position="absolute"; +_18.style.width="100000px"; +_10.body.appendChild(_18); +_b=_10.createElement("span"); +_16=_b.style; +_16.position="absolute"; +_16.visibility="visible"; +_16.padding="0px"; +_16.margin="0px"; +_16.whiteSpace="pre"; +_a=_10.createElement("span"); +_16=_a.style; +_16.display="block"; +_16.position="absolute"; +_16.visibility="visible"; +_16.padding="0px"; +_16.margin="0px"; +_16.width="1px"; +_16.wordWrap="break-word"; +try{ +_16.whiteSpace="pre"; +_16.whiteSpace="-o-pre-wrap"; +_16.whiteSpace="-pre-wrap"; +_16.whiteSpace="-moz-pre-wrap"; +_16.whiteSpace="pre-wrap"; +} +catch(e){ +_16.whiteSpace="pre"; +} +_18.appendChild(_b); +_18.appendChild(_a); +} +}),new objj_method(sel_getUid("createDOMMetricsElements"),function(_19,_1a){ +with(_19){ +if(!_f){ +objj_msgSend(_19,"createDOMElements"); +} +var _1b; +_c=_10.createElement("div"); +_c.style.position="absolute"; +_c.style.width="100000px"; +_10.body.appendChild(_c); +_d=_10.createElement("span"); +_d.innerHTML="x"; +_1b=_d.style; +_1b.position="absolute"; +_1b.visibility="visible"; +_1b.padding="0px"; +_1b.margin="0px"; +_1b.whiteSpace="pre"; +var _1c=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class")),"pathForResource:","empty.png"); +_e=_10.createElement("img"); +_e.setAttribute("src",_1c); +_e.setAttribute("width","1"); +_e.setAttribute("height","1"); +_e.setAttribute("alt",""); +_1b=_e.style; +_1b.visibility="visible"; +_1b.padding="0px"; +_1b.margin="0px"; +_1b.border="none"; +_1b.verticalAlign="baseline"; +_c.appendChild(_d); +_c.appendChild(_e); +} +}),new objj_method(sel_getUid("sizeOfString:withFont:forWidth:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +if(!_20){ +if(!_11){ +_11=objj_msgSend(CPFont,"systemFontOfSize:",12); +} +_20=_11; +} +if(!_f){ +objj_msgSend(_1d,"createDOMElements"); +} +var _22; +if(!_21){ +_22=_b; +}else{ +_22=_a; +_22.style.width=ROUND(_21)+"px"; +} +_22.style.font=objj_msgSend(_20,"cssString"); +if(CPFeatureIsCompatible(CPJavascriptInnerTextFeature)){ +_22.innerText=_1f; +}else{ +if(CPFeatureIsCompatible(CPJavascriptTextContentFeature)){ +_22.textContent=_1f; +} +} +return {width:_22.clientWidth,height:_22.clientHeight}; +} +}),new objj_method(sel_getUid("metricsOfFont:"),function(_23,_24,_25){ +with(_23){ +if(!_25){ +if(!_11){ +_11=objj_msgSend(CPFont,"systemFontOfSize:",12); +} +_25=_11; +} +if(!_c){ +objj_msgSend(_23,"createDOMMetricsElements"); +} +_c.style.font=objj_msgSend(_25,"cssString"); +var _26=_e.offsetTop-_d.offsetTop+_e.offsetHeight,_27=_26-_d.offsetHeight,_28=_d.offsetHeight; +return objj_msgSend(CPDictionary,"dictionaryWithObjectsAndKeys:",_26,"ascender",_27,"descender",_28,"lineHeight"); +} +})]); +p;18;CPPlatformWindow.jt;5577;@STATIC;1.0;I;21;Foundation/CPObject.ji;22;CPPlatformWindow+DOM.jt;5505; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=NULL; +var _2=objj_allocateClassPair(CPObject,"CPPlatformWindow"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_contentRect"),new objj_ivar("_level"),new objj_ivar("_hasShadow"),new objj_ivar("_shadowStyle"),new objj_ivar("_DOMWindow"),new objj_ivar("_DOMBodyElement"),new objj_ivar("_DOMFocusElement"),new objj_ivar("_DOMEventGuard"),new objj_ivar("_DOMScrollingElement"),new objj_ivar("_hideDOMScrollingElementTimeout"),new objj_ivar("_windowLevels"),new objj_ivar("_windowLayers"),new objj_ivar("_mouseIsDown"),new objj_ivar("_mouseDownIsRightClick"),new objj_ivar("_mouseDownWindow"),new objj_ivar("_lastMouseUp"),new objj_ivar("_lastMouseDown"),new objj_ivar("_charCodes"),new objj_ivar("_keyCode"),new objj_ivar("_lastKey"),new objj_ivar("_capsLockActive"),new objj_ivar("_ignoreNativeCopyOrCutEvent"),new objj_ivar("_ignoreNativePastePreparation"),new objj_ivar("_DOMEventMode"),new objj_ivar("_DOMPasteboardElement"),new objj_ivar("_pasteboardKeyDownEvent"),new objj_ivar("_overriddenEventType")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithContentRect:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPPlatformWindow").super_class},"init"); +if(_4){ +_contentRect={origin:{x:_6.origin.x,y:_6.origin.y},size:{width:_6.size.width,height:_6.size.height}}; +_windowLevels=[]; +_windowLayers=objj_msgSend(CPDictionary,"dictionary"); +_charCodes={}; +} +return _4; +} +}),new objj_method(sel_getUid("init"),function(_7,_8){ +with(_7){ +return objj_msgSend(_7,"initWithContentRect:",{origin:{x:0,y:0},size:{width:400,height:500}}); +} +}),new objj_method(sel_getUid("contentRect"),function(_9,_a){ +with(_9){ +return {origin:{x:_contentRect.origin.x,y:_contentRect.origin.y},size:{width:_contentRect.size.width,height:_contentRect.size.height}}; +} +}),new objj_method(sel_getUid("contentBounds"),function(_b,_c){ +with(_b){ +var _d=objj_msgSend(_b,"contentRect"); +_d.origin={x:0,y:0}; +return _d; +} +}),new objj_method(sel_getUid("visibleFrame"),function(_e,_f){ +with(_e){ +var _10=objj_msgSend(_e,"contentBounds"); +_10.origin=CGPointMakeZero(); +if(objj_msgSend(CPMenu,"menuBarVisible")&&objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")===_e){ +var _11=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"menuBarHeight"); +_10.origin.y+=_11; +_10.size.height-=_11; +} +return _10; +} +}),new objj_method(sel_getUid("usableContentFrame"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"visibleFrame"); +} +}),new objj_method(sel_getUid("setContentRect:"),function(_14,_15,_16){ +with(_14){ +if(!_16||((_contentRect.origin.x==_16.origin.x&&_contentRect.origin.y==_16.origin.y)&&(_contentRect.size.width==_16.size.width&&_contentRect.size.height==_16.size.height))){ +return; +} +_contentRect={origin:{x:_16.origin.x,y:_16.origin.y},size:{width:_16.size.width,height:_16.size.height}}; +objj_msgSend(_14,"updateNativeContentRect"); +} +}),new objj_method(sel_getUid("updateFromNativeContentRect"),function(_17,_18){ +with(_17){ +objj_msgSend(_17,"setContentRect:",objj_msgSend(_17,"nativeContentRect")); +} +}),new objj_method(sel_getUid("convertBaseToScreen:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=objj_msgSend(_19,"contentRect"); +return {x:_1b.x+(_1c.origin.x),y:_1b.y+(_1c.origin.y)}; +} +}),new objj_method(sel_getUid("convertScreenToBase:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=objj_msgSend(_1d,"contentRect"); +return {x:_1f.x-(_20.origin.x),y:_1f.y-(_20.origin.y)}; +} +}),new objj_method(sel_getUid("isVisible"),function(_21,_22){ +with(_21){ +return _DOMWindow!==NULL; +} +}),new objj_method(sel_getUid("deminiaturize:"),function(_23,_24,_25){ +with(_23){ +if(_DOMWindow&&typeof _DOMWindow["cpDeminiaturize"]==="function"){ +_DOMWindow.cpDeminiaturize(); +} +} +}),new objj_method(sel_getUid("miniaturize:"),function(_26,_27,_28){ +with(_26){ +if(_DOMWindow&&typeof _DOMWindow["cpMiniaturize"]==="function"){ +_DOMWindow.cpMiniaturize(); +} +} +}),new objj_method(sel_getUid("moveWindow:fromLevel:toLevel:"),function(_29,_2a,_2b,_2c,_2d){ +with(_29){ +if(!_2b._isVisible){ +return; +} +var _2e=objj_msgSend(_29,"layerAtLevel:create:",_2c,NO),_2f=objj_msgSend(_29,"layerAtLevel:create:",_2d,YES); +objj_msgSend(_2e,"removeWindow:",_2b); +objj_msgSend(_2f,"insertWindow:atIndex:",_2b,CPNotFound); +} +}),new objj_method(sel_getUid("setLevel:"),function(_30,_31,_32){ +with(_30){ +_level=_32; +if(_DOMWindow&&_DOMWindow.cpSetLevel){ +_DOMWindow.cpSetLevel(_32); +} +} +}),new objj_method(sel_getUid("setHasShadow:"),function(_33,_34,_35){ +with(_33){ +_hasShadow=_35; +if(_DOMWindow&&_DOMWindow.cpSetHasShadow){ +_DOMWindow.cpSetHasShadow(_35); +} +} +}),new objj_method(sel_getUid("setShadowStyle:"),function(_36,_37,_38){ +with(_36){ +_shadowStyle=_38; +if(_DOMWindow&&_DOMWindow.cpSetShadowStyle){ +_shadowStyle.cpSetShadowStyle(_38); +} +} +}),new objj_method(sel_getUid("supportsFullPlatformWindows"),function(_39,_3a){ +with(_39){ +return objj_msgSend(CPPlatform,"isBrowser"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("visiblePlatformWindows"),function(_3b,_3c){ +with(_3b){ +return objj_msgSend(CPSet,"set"); +} +}),new objj_method(sel_getUid("supportsMultipleInstances"),function(_3d,_3e){ +with(_3d){ +return !CPBrowserIsEngine(CPInternetExplorerBrowserEngine); +} +}),new objj_method(sel_getUid("primaryPlatformWindow"),function(_3f,_40){ +with(_3f){ +return _1; +} +}),new objj_method(sel_getUid("setPrimaryPlatformWindow:"),function(_41,_42,_43){ +with(_41){ +_1=_43; +} +})]); +objj_executeFile("CPPlatformWindow+DOM.j",YES); +p;18;CPDOMWindowLayer.jt;2089;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jt;2019; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPDOMWindowLayer"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_level"),new objj_ivar("_windows"),new objj_ivar("_DOMElement")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithLevel:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPDOMWindowLayer").super_class},"init"); +if(_3){ +_level=_5; +_windows=[]; +_DOMElement=document.createElement("div"); +_DOMElement.style.position="absolute"; +_DOMElement.style.top="0px"; +_DOMElement.style.left="0px"; +_DOMElement.style.width="1px"; +_DOMElement.style.height="1px"; +} +return _3; +} +}),new objj_method(sel_getUid("level"),function(_6,_7){ +with(_6){ +return _level; +} +}),new objj_method(sel_getUid("removeWindow:"),function(_8,_9,_a){ +with(_8){ +if(!_a._isVisible){ +return; +} +var _b=_a._index,_c=_windows.length-1; +_DOMElement.removeChild(_a._DOMElement); +objj_msgSend(_windows,"removeObjectAtIndex:",_a._index); +for(;_b<_c;++_b){ +_windows[_b]._index=_b; +_windows[_b]._DOMElement.style.zIndex=_b; +} +_a._isVisible=NO; +} +}),new objj_method(sel_getUid("insertWindow:atIndex:"),function(_d,_e,_f,_10){ +with(_d){ +var _11=objj_msgSend(_windows,"count"),_12=(_10==CPNotFound?_11:_10),_13=_f._isVisible; +if(_13){ +_12=MIN(_12,_f._index); +objj_msgSend(_windows,"removeObjectAtIndex:",_f._index); +}else{ +++_11; +} +if(_10==CPNotFound||_10>=_11){ +objj_msgSend(_windows,"addObject:",_f); +}else{ +objj_msgSend(_windows,"insertObject:atIndex:",_f,_10); +} +for(;_12<_11;++_12){ +_windows[_12]._index=_12; +_windows[_12]._DOMElement.style.zIndex=_12; +} +if(_f._DOMElement.parentNode!==_DOMElement){ +_DOMElement.appendChild(_f._DOMElement); +_f._isVisible=YES; +if(objj_msgSend(_f,"isFullBridge")){ +objj_msgSend(_f,"setFrame:",objj_msgSend(_f._platformWindow,"usableContentFrame")); +} +} +} +}),new objj_method(sel_getUid("orderedWindows"),function(_14,_15){ +with(_14){ +return _windows; +} +})]); +p;22;CPPlatformWindow+DOM.jt;32978;@STATIC;1.0;I;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.ji;9;CPEvent.ji;8;CPText.ji;17;CPCompatibility.ji;18;CPDOMWindowLayer.ji;12;CPPlatform.ji;18;CPPlatformWindow.ji;26;CPPlatformWindow+DOMKeys.jt;32764; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPRunLoop.j",NO); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPText.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPDOMWindowLayer.j",YES); +objj_executeFile("CPPlatform.j",YES); +objj_executeFile("CPPlatformWindow.j",YES); +objj_executeFile("CPPlatformWindow+DOMKeys.j",YES); +var _1=objj_msgSend(CPSet,"set"); +var _2,_3,_4,_5; +var _6={},_7={},_8={},_9={61:187,59:186},_a={}; +_6[CPKeyCodes.A]=YES; +_8[CPKeyCodes.F1]=YES; +_8[CPKeyCodes.F2]=YES; +_8[CPKeyCodes.F3]=YES; +_8[CPKeyCodes.F4]=YES; +_8[CPKeyCodes.F5]=YES; +_8[CPKeyCodes.F6]=YES; +_8[CPKeyCodes.F7]=YES; +_8[CPKeyCodes.F8]=YES; +_8[CPKeyCodes.F9]=YES; +_8[CPKeyCodes.F10]=YES; +_8[CPKeyCodes.F11]=YES; +_8[CPKeyCodes.F12]=YES; +_a[CPKeyCodes.BACKSPACE]=CPDeleteCharacter; +_a[CPKeyCodes.DELETE]=CPDeleteFunctionKey; +_a[CPKeyCodes.TAB]=CPTabCharacter; +_a[CPKeyCodes.ENTER]=CPCarriageReturnCharacter; +_a[CPKeyCodes.ESC]=CPEscapeFunctionKey; +_a[CPKeyCodes.PAGE_UP]=CPPageUpFunctionKey; +_a[CPKeyCodes.PAGE_DOWN]=CPPageDownFunctionKey; +_a[CPKeyCodes.LEFT]=CPLeftArrowFunctionKey; +_a[CPKeyCodes.UP]=CPUpArrowFunctionKey; +_a[CPKeyCodes.RIGHT]=CPRightArrowFunctionKey; +_a[CPKeyCodes.DOWN]=CPDownArrowFunctionKey; +_a[CPKeyCodes.SEMICOLON]=";"; +_a[CPKeyCodes.DASH]="-"; +_a[CPKeyCodes.EQUALS]="="; +_a[CPKeyCodes.COMMA]=","; +_a[CPKeyCodes.PERIOD]="."; +_a[CPKeyCodes.SLASH]="/"; +_a[CPKeyCodes.APOSTROPHE]="`"; +_a[CPKeyCodes.SINGLE_QUOTE]="'"; +_a[CPKeyCodes.OPEN_SQUARE_BRACKET]="["; +_a[CPKeyCodes.BACKSLASH]="\\"; +_a[CPKeyCodes.CLOSE_SQUARE_BRACKET]="]"; +var _b=[CPKeyCodes.META,CPKeyCodes.MAC_FF_META,CPKeyCodes.CTRL,CPKeyCodes.ALT,CPKeyCodes.SHIFT]; +var _c=objj_msgSend(CPPlatform,"supportsDragAndDrop"); +var _d=objj_getClass("CPPlatformWindow"); +if(!_d){ +throw new SyntaxError("*** Could not find definition for class \"CPPlatformWindow\""); +} +var _e=_d.isa; +class_addMethods(_d,[new objj_method(sel_getUid("_init"),function(_f,_10){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPPlatformWindow").super_class},"init"); +if(_f){ +_DOMWindow=window; +_contentRect={origin:{x:0,y:0},size:{width:0,height:0}}; +_windowLevels=[]; +_windowLayers=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_f,"registerDOMWindow"); +objj_msgSend(_f,"updateFromNativeContentRect"); +_charCodes={}; +} +return _f; +} +}),new objj_method(sel_getUid("nativeContentRect"),function(_11,_12){ +with(_11){ +if(!_DOMWindow){ +return objj_msgSend(_11,"contentRect"); +} +if(_DOMWindow.cpFrame){ +return _DOMWindow.cpFrame(); +} +var _13={origin:{x:0,y:0},size:{width:0,height:0}}; +if(window.screenTop){ +_13.origin={x:_DOMWindow.screenLeft,y:_DOMWindow.screenTop}; +}else{ +if(window.screenX){ +_13.origin={x:_DOMWindow.screenX,y:_DOMWindow.screenY}; +} +} +if(_DOMWindow.innerWidth){ +_13.size={width:_DOMWindow.innerWidth,height:_DOMWindow.innerHeight}; +}else{ +if(document.documentElement&&document.documentElement.clientWidth){ +_13.size={width:_DOMWindow.document.documentElement.clientWidth,height:_DOMWindow.document.documentElement.clientHeight}; +}else{ +_13.size={width:_DOMWindow.document.body.clientWidth,height:_DOMWindow.document.body.clientHeight}; +} +} +return _13; +} +}),new objj_method(sel_getUid("updateNativeContentRect"),function(_14,_15){ +with(_14){ +if(!_DOMWindow){ +return; +} +if(typeof _DOMWindow["cpSetFrame"]==="function"){ +return _DOMWindow.cpSetFrame(objj_msgSend(_14,"contentRect")); +} +var _16=objj_msgSend(_14,"contentRect").origin,_17=objj_msgSend(_14,"nativeContentRect").origin; +if(_16.x!==_17.x||_16.y!==_17.y){ +_DOMWindow.moveBy(_16.x-_17.x,_16.y-_17.y); +} +var _18=objj_msgSend(_14,"contentRect").size,_19=objj_msgSend(_14,"nativeContentRect").size; +if(_18.width!==_19.width||_18.height!==_19.height){ +_DOMWindow.resizeBy(_18.width-_19.width,_18.height-_19.height); +} +} +}),new objj_method(sel_getUid("orderBack:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_DOMWindow){ +_DOMWindow.blur(); +} +} +}),new objj_method(sel_getUid("createDOMElements"),function(_1d,_1e){ +with(_1d){ +var _1f=_DOMWindow.document; +_DOMFocusElement=_1f.createElement("input"); +_DOMFocusElement.style.position="absolute"; +_DOMFocusElement.style.zIndex="-1000"; +_DOMFocusElement.style.opacity="0"; +_DOMFocusElement.style.filter="alpha(opacity=0)"; +_DOMFocusElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMFocusElement); +_DOMPasteboardElement=_1f.createElement("textarea"); +_DOMPasteboardElement.style.position="absolute"; +_DOMPasteboardElement.style.top="-10000px"; +_DOMPasteboardElement.style.zIndex="999"; +_DOMPasteboardElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMPasteboardElement); +_DOMPasteboardElement.blur(); +_DOMEventGuard=_1f.createElement("div"); +_DOMEventGuard.style.position="absolute"; +_DOMEventGuard.style.top="0px"; +_DOMEventGuard.style.left="0px"; +_DOMEventGuard.style.width="100%"; +_DOMEventGuard.style.height="100%"; +_DOMEventGuard.style.zIndex="999"; +_DOMEventGuard.style.display="none"; +_DOMEventGuard.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMEventGuard); +_DOMScrollingElement=_1f.createElement("div"); +_DOMScrollingElement.style.position="absolute"; +_DOMScrollingElement.style.visibility="hidden"; +_DOMScrollingElement.style.zIndex="998"; +_DOMScrollingElement.style.height="60px"; +_DOMScrollingElement.style.width="60px"; +_DOMScrollingElement.style.overflow="scroll"; +_DOMScrollingElement.style.opacity="0"; +_DOMScrollingElement.style.filter="alpha(opacity=0)"; +_DOMScrollingElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMScrollingElement); +var _20=_1f.createElement("div"); +_20.style.width="400px"; +_20.style.height="400px"; +_DOMScrollingElement.appendChild(_20); +_DOMScrollingElement.scrollTop=150; +_DOMScrollingElement.scrollLeft=150; +} +}),new objj_method(sel_getUid("registerDOMWindow"),function(_21,_22){ +with(_21){ +var _23=_DOMWindow.document; +_DOMBodyElement=_23.getElementById("cappuccino-body")||_23.body; +if(_c){ +_DOMBodyElement.style["-khtml-user-select"]="none"; +} +_DOMBodyElement.webkitTouchCallout="none"; +objj_msgSend(_21,"createDOMElements"); +objj_msgSend(_21,"_addLayers"); +var _24=objj_msgSend(_21,"class"),_25=class_getMethodImplementation(_24,sel_getUid("dragEvent:")),_26=function(_27){ +_25(_21,nil,_27); +},_28=sel_getUid("resizeEvent:"),_29=class_getMethodImplementation(_24,_28),_2a=function(_2b){ +_29(_21,nil,_2b); +},_2c=sel_getUid("copyEvent:"),_2d=class_getMethodImplementation(_24,_2c),_2e=function(_2f){ +_2d(_21,nil,_2f); +},_30=sel_getUid("pasteEvent:"),_31=class_getMethodImplementation(_24,_30),_32=function(_33){ +_31(_21,nil,_33); +},_34=sel_getUid("keyEvent:"),_35=class_getMethodImplementation(_24,_34),_36=function(_37){ +_35(_21,nil,_37); +},_38=sel_getUid("mouseEvent:"),_39=class_getMethodImplementation(_24,_38),_3a=function(_3b){ +_39(_21,nil,_3b); +},_3c=sel_getUid("contextMenuEvent:"),_3d=class_getMethodImplementation(_24,_3c),_3e=function(_3f){ +return _3d(_21,nil,_3f); +},_40=sel_getUid("scrollEvent:"),_41=class_getMethodImplementation(_24,_40),_42=function(_43){ +_41(_21,nil,_43); +},_44=sel_getUid("touchEvent:"),_45=class_getMethodImplementation(_24,_44),_46=function(_47){ +_45(_21,nil,_47); +}; +if(_23.addEventListener){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_23.addEventListener("dragstart",_26,NO); +_23.addEventListener("drag",_26,NO); +_23.addEventListener("dragend",_26,NO); +_23.addEventListener("dragover",_26,NO); +_23.addEventListener("dragleave",_26,NO); +_23.addEventListener("drop",_26,NO); +} +_23.addEventListener("mouseup",_3a,NO); +_23.addEventListener("mousedown",_3a,NO); +_23.addEventListener("mousemove",_3a,NO); +_23.addEventListener("contextmenu",_3e,NO); +_23.addEventListener("beforecopy",_2e,NO); +_23.addEventListener("beforecut",_2e,NO); +_23.addEventListener("beforepaste",_32,NO); +_23.addEventListener("keyup",_36,NO); +_23.addEventListener("keydown",_36,NO); +_23.addEventListener("keypress",_36,NO); +_23.addEventListener("touchstart",_46,NO); +_23.addEventListener("touchend",_46,NO); +_23.addEventListener("touchmove",_46,NO); +_23.addEventListener("touchcancel",_46,NO); +_DOMWindow.addEventListener("DOMMouseScroll",_42,NO); +_DOMWindow.addEventListener("mousewheel",_42,NO); +_DOMWindow.addEventListener("resize",_2a,NO); +_DOMWindow.addEventListener("unload",function(){ +objj_msgSend(_21,"updateFromNativeContentRect"); +objj_msgSend(_21,"_removeLayers"); +_23.removeEventListener("mouseup",_3a,NO); +_23.removeEventListener("mousedown",_3a,NO); +_23.removeEventListener("mousemove",_3a,NO); +_23.removeEventListener("contextmenu",_3e,NO); +_23.removeEventListener("keyup",_36,NO); +_23.removeEventListener("keydown",_36,NO); +_23.removeEventListener("keypress",_36,NO); +_23.removeEventListener("beforecopy",_2e,NO); +_23.removeEventListener("beforecut",_2e,NO); +_23.removeEventListener("beforepaste",_32,NO); +_23.removeEventListener("touchstart",_46,NO); +_23.removeEventListener("touchend",_46,NO); +_23.removeEventListener("touchmove",_46,NO); +_DOMWindow.removeEventListener("resize",_2a,NO); +_DOMWindow.removeEventListener("DOMMouseScroll",_42,NO); +_DOMWindow.removeEventListener("mousewheel",_42,NO); +objj_msgSend(_1,"removeObject:",_21); +_21._DOMWindow=nil; +},NO); +}else{ +_23.attachEvent("onmouseup",_3a); +_23.attachEvent("onmousedown",_3a); +_23.attachEvent("onmousemove",_3a); +_23.attachEvent("ondblclick",_3a); +_23.attachEvent("oncontextmenu",_3e); +_23.attachEvent("onkeyup",_36); +_23.attachEvent("onkeydown",_36); +_23.attachEvent("onkeypress",_36); +_DOMWindow.attachEvent("onresize",_2a); +_DOMWindow.onmousewheel=_42; +_23.onmousewheel=_42; +_DOMBodyElement.ondrag=function(){ +return NO; +}; +_DOMBodyElement.onselectstart=function(){ +return _DOMWindow.event.srcElement===_DOMPasteboardElement; +}; +_DOMWindow.attachEvent("onbeforeunload",function(){ +objj_msgSend(_21,"updateFromNativeContentRect"); +objj_msgSend(_21,"_removeLayers"); +_23.detachEvent("onmouseup",_3a); +_23.detachEvent("onmousedown",_3a); +_23.detachEvent("onmousemove",_3a); +_23.detachEvent("ondblclick",_3a); +_23.detachEvent("oncontextmenu",_3e); +_23.detachEvent("onkeyup",_36); +_23.detachEvent("onkeydown",_36); +_23.detachEvent("onkeypress",_36); +_DOMWindow.detachEvent("onresize",_2a); +_DOMWindow.onmousewheel=NULL; +_23.onmousewheel=NULL; +_DOMBodyElement.ondrag=NULL; +_DOMBodyElement.onselectstart=NULL; +objj_msgSend(_1,"removeObject:",_21); +_21._DOMWindow=nil; +},NO); +} +} +}),new objj_method(sel_getUid("orderFront:"),function(_48,_49,_4a){ +with(_48){ +if(_DOMWindow){ +return _DOMWindow.focus(); +} +_DOMWindow=window.open("","_blank","menubar=no,location=no,resizable=yes,scrollbars=no,status=no,left="+(_contentRect.origin.x)+",top="+(_contentRect.origin.y)+",width="+(_contentRect.size.width)+",height="+(_contentRect.size.height)); +objj_msgSend(_1,"addObject:",_48); +_DOMWindow.document.write(""); +_DOMWindow.document.close(); +if(!objj_msgSend(CPPlatform,"isBrowser")){ +_DOMWindow.cpWindowNumber=objj_msgSend(_48._only,"windowNumber"); +_DOMWindow.cpSetFrame(_contentRect); +_DOMWindow.cpSetLevel(_level); +_DOMWindow.cpSetHasShadow(_hasShadow); +_DOMWindow.cpSetShadowStyle(_shadowStyle); +} +objj_msgSend(_48,"registerDOMWindow"); +_DOMBodyElement.style.cursor=objj_msgSend(objj_msgSend(CPCursor,"currentCursor"),"_cssString"); +} +}),new objj_method(sel_getUid("orderOut:"),function(_4b,_4c,_4d){ +with(_4b){ +if(!_DOMWindow){ +return; +} +_DOMWindow.close(); +} +}),new objj_method(sel_getUid("dragEvent:"),function(_4e,_4f,_50){ +with(_4e){ +var _51=_50.type,_52=objj_msgSend(CPDragServer,"sharedDragServer"),_53={x:_50.clientX,y:_50.clientY},_54=objj_msgSend(_CPDOMDataTransferPasteboard,"DOMDataTransferPasteboard"); +objj_msgSend(_54,"_setDataTransfer:",_50.dataTransfer); +if(_50.type==="dragstart"){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +objj_msgSend(_54,"_setPasteboard:",objj_msgSend(_52,"draggingPasteboard")); +var _55=objj_msgSend(_52,"draggedWindow"),_56=objj_msgSend(_55,"frame"),_57=_55._DOMElement; +_57.style.left=-(_56.size.width)+"px"; +_57.style.top=-(_56.size.height)+"px"; +var _58=_57.parentNode; +if(_58){ +_58.removeChild(_57); +} +_DOMBodyElement.appendChild(_57); +var _59=objj_msgSend(_52,"draggingOffset"); +_50.dataTransfer.setDragImage(_57,_59.width,_59.height); +_50.dataTransfer.effectAllowed="all"; +objj_msgSend(_52,"draggingStartedInPlatformWindow:globalLocation:",_4e,objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:_50.screenY}); +}else{ +if(_51==="drag"){ +var y=_50.screenY; +if(CPFeatureIsCompatible(CPHTML5DragAndDropSourceYOffBy1)){ +y-=1; +} +objj_msgSend(_52,"draggingSourceUpdatedWithGlobalLocation:",objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:y}); +}else{ +if(_51==="dragover"||_51==="dragleave"){ +if(_50.preventDefault){ +_50.preventDefault(); +} +var _5a="none",_5b=objj_msgSend(_52,"draggingUpdatedInPlatformWindow:location:",_4e,_53); +if(_5b===CPDragOperationMove||_5b===CPDragOperationGeneric||_5b===CPDragOperationPrivate){ +_5a="move"; +}else{ +if(_5b===CPDragOperationCopy){ +_5a="copy"; +}else{ +if(_5b===CPDragOperationLink){ +_5a="link"; +} +} +} +_50.dataTransfer.dropEffect=_5a; +}else{ +if(_51==="dragend"){ +var _5a=_50.dataTransfer.dropEffect; +if(_5a==="move"){ +_5b=CPDragOperationMove; +}else{ +if(_5a==="copy"){ +_5b=CPDragOperationCopy; +}else{ +if(_5a==="link"){ +_5b=CPDragOperationLink; +}else{ +_5b=CPDragOperationNone; +} +} +} +objj_msgSend(_52,"draggingEndedInPlatformWindow:globalLocation:operation:",_4e,objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:_50.screenY},_5b); +}else{ +objj_msgSend(_52,"performDragOperationInPlatformWindow:",_4e); +if(_50.preventDefault){ +_50.preventDefault(); +} +if(_50.stopPropagation){ +_50.stopPropagation(); +} +} +} +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("keyEvent:"),function(_5c,_5d,_5e){ +with(_5c){ +var _5f,_60=_5e.timeStamp||new Date(),_61=_5e.target||_5e.srcElement,_62=objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"windowNumber"),_63=(_5e.shiftKey?CPShiftKeyMask:0)|(_5e.ctrlKey?CPControlKeyMask:0)|(_5e.altKey?CPAlternateKeyMask:0)|(_5e.metaKey?CPCommandKeyMask:0); +_4=YES; +if(!(_7[String.fromCharCode(_5e.keyCode||_5e.charCode).toLowerCase()]||_6[_5e.keyCode])){ +if((_63&(CPControlKeyMask|CPCommandKeyMask))||_8[_5e.keyCode]){ +_4=NO; +} +} +var _64=NO,_65=NO,_66=nil; +switch(_5e.type){ +case "keydown": +if(_5e.keyCode in _9){ +_keyCode=_9[_5e.keyCode]; +}else{ +_keyCode=_5e.keyCode; +} +var _67; +if(_5e.which===0||_5e.charCode===0){ +_67=_a[_keyCode]; +} +if(!_67){ +_67=String.fromCharCode(_keyCode).toLowerCase(); +} +_66=(_63&CPShiftKeyMask||_capsLockActive)?_67.toUpperCase():_67; +if(_keyCode===CPKeyCodes.CAPS_LOCK){ +_capsLockActive=YES; +} +if(objj_msgSend(_b,"containsObject:",_keyCode)){ +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPFlagsChanged,location,_63,_60,_62,nil,nil,nil,NO,_keyCode); +break; +}else{ +if(_63&(CPControlKeyMask|CPCommandKeyMask)){ +var _68=objj_msgSend(_5c,"_validateCopyCutOrPasteEvent:flags:",_5e,_63); +if(_67==="v"&&_68){ +if(!_ignoreNativePastePreparation){ +_DOMPasteboardElement.select(); +_DOMPasteboardElement.value=""; +} +_64=YES; +}else{ +if((_67=="c"||_67=="x")&&_68){ +_65=YES; +if(_ignoreNativeCopyOrCutEvent){ +break; +} +} +} +}else{ +if(CPKeyCodes.firesKeyPressEvent(_keyCode,_lastKey,_5e.shiftKey,_5e.ctrlKey,_5e.altKey)){ +_4=NO; +break; +}else{ +} +} +} +case "keypress": +if(_5e.type==="keypress"&&(_63&(CPControlKeyMask|CPCommandKeyMask))){ +break; +} +var _69=_keyCode,_6a=_5e.keyCode||_5e.charCode,_6b=(_charCodes[_69]!=nil); +_lastKey=_69; +_charCodes[_69]=_6a; +var _67=_66; +if(!_67&&(_5e.which===0||_5e.charCode===0)){ +_67=_a[_6a]; +} +if(!_67){ +_67=String.fromCharCode(_6a); +} +_6c=_67.toLowerCase(); +if(!_66&&(_63&CPCommandKeyMask)&&((_63&CPShiftKeyMask)||_capsLockActive)){ +_67=_67.toUpperCase(); +} +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyDown,location,_63,_60,_62,nil,_67,_6c,_6b,_6a); +if(_64){ +_pasteboardKeyDownEvent=_5f; +window.setNativeTimeout(function(){ +objj_msgSend(_5c,"_checkPasteboardElement"); +},0); +} +break; +case "keyup": +var _69=_5e.keyCode,_6a=_charCodes[_69]; +_keyCode=-1; +_lastKey=-1; +_charCodes[_69]=nil; +_ignoreNativeCopyOrCutEvent=NO; +_ignoreNativePastePreparation=NO; +if(_69===CPKeyCodes.CAPS_LOCK){ +_capsLockActive=NO; +} +if(objj_msgSend(_b,"containsObject:",_69)){ +break; +} +var _67=_a[_6a]||String.fromCharCode(_6a),_6c=_67.toLowerCase(); +if(!(_63&CPShiftKeyMask)&&(_63&CPCommandKeyMask)&&!_capsLockActive){ +_67=_6c; +} +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyUp,location,_63,_60,_62,nil,_67,_6c,NO,_69); +break; +} +if(_5f&&!_64){ +_5f._DOMEvent=_5e; +objj_msgSend(CPApp,"sendEvent:",_5f); +if(_65){ +objj_msgSend(_5c,"_primePasteboardElement"); +} +} +if(_4){ +_3(_5e,_5c); +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("copyEvent:"),function(_6d,_6e,_6f){ +with(_6d){ +if(objj_msgSend(_6d,"_validateCopyCutOrPasteEvent:flags:",_6f,CPPlatformActionKeyMask)&&!_ignoreNativeCopyOrCutEvent){ +var cut=_6f.type==="beforecut",_70=cut?CPKeyCodes.X:CPKeyCodes.C,_71=cut?"x":"c",_72=_6f.timeStamp?_6f.timeStamp:new Date(),_73=objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"windowNumber"),_74=CPPlatformActionKeyMask; +event=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyDown,location,_74,_72,_73,nil,_71,_71,NO,_70); +event._DOMEvent=_6f; +objj_msgSend(CPApp,"sendEvent:",event); +objj_msgSend(_6d,"_primePasteboardElement"); +_ignoreNativeCopyOrCutEvent=YES; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("pasteEvent:"),function(_75,_76,_77){ +with(_75){ +if(objj_msgSend(_75,"_validateCopyCutOrPasteEvent:flags:",_77,CPPlatformActionKeyMask)){ +_DOMPasteboardElement.focus(); +_DOMPasteboardElement.select(); +_DOMPasteboardElement.value=""; +_ignoreNativePastePreparation=YES; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_validateCopyCutOrPasteEvent:flags:"),function(_78,_79,_7a,_7b){ +with(_78){ +return (((_7a.target||_7a.srcElement).nodeName.toUpperCase()!=="INPUT"&&(_7a.target||_7a.srcElement).nodeName.toUpperCase()!=="TEXTAREA")||_7a.target===_DOMPasteboardElement)&&(_7b&CPPlatformActionKeyMask); +} +}),new objj_method(sel_getUid("_primePasteboardElement"),function(_7c,_7d){ +with(_7c){ +var _7e=objj_msgSend(CPPasteboard,"generalPasteboard"),_7f=objj_msgSend(_7e,"types"); +if(_7f.length){ +if(objj_msgSend(_7f,"indexOfObjectIdenticalTo:",CPStringPboardType)!=CPNotFound){ +_DOMPasteboardElement.value=objj_msgSend(_7e,"stringForType:",CPStringPboardType); +}else{ +_DOMPasteboardElement.value=objj_msgSend(_7e,"_generateStateUID"); +} +_DOMPasteboardElement.focus(); +_DOMPasteboardElement.select(); +window.setNativeTimeout(function(){ +objj_msgSend(_7c,"_clearPasteboardElement"); +},0); +} +} +}),new objj_method(sel_getUid("_checkPasteboardElement"),function(_80,_81){ +with(_80){ +var _82=_DOMPasteboardElement.value; +if(objj_msgSend(_82,"length")){ +var _83=objj_msgSend(CPPasteboard,"generalPasteboard"); +if(objj_msgSend(_83,"_stateUID")!=_82){ +objj_msgSend(_83,"declareTypes:owner:",[CPStringPboardType],_80); +objj_msgSend(_83,"setString:forType:",_82,CPStringPboardType); +} +} +objj_msgSend(_80,"_clearPasteboardElement"); +objj_msgSend(CPApp,"sendEvent:",_pasteboardKeyDownEvent); +_pasteboardKeyDownEvent=nil; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_clearPasteboardElement"),function(_84,_85){ +with(_84){ +_DOMPasteboardElement.value=""; +_DOMPasteboardElement.blur(); +} +}),new objj_method(sel_getUid("scrollEvent:"),function(_86,_87,_88){ +with(_86){ +if(_hideDOMScrollingElementTimeout){ +clearTimeout(_hideDOMScrollingElementTimeout); +_hideDOMScrollingElementTimeout=nil; +} +if(!_88){ +_88=window.event; +} +var _89=nil; +if(CPFeatureIsCompatible(CPJavaScriptMouseWheelValues_8_15)){ +var x=_88._offsetX||0,y=_88._offsetY||0,_8a=_88.target; +while(_8a.nodeType!==1){ +_8a=_8a.parentNode; +} +if(_8a.offsetParent){ +do{ +x+=_8a.offsetLeft; +y+=_8a.offsetTop; +}while(_8a=_8a.offsetParent); +} +_89={x:(x+((_88.clientX-8)/15)),y:(y+((_88.clientY-8)/15))}; +}else{ +if(_88._overrideLocation){ +_89=_88._overrideLocation; +}else{ +_89={x:_88.clientX,y:_88.clientY}; +} +} +var _8b=0,_8c=0,_8d=0,_8e=_88.timeStamp?_88.timeStamp:new Date(),_8f=(_88.shiftKey?CPShiftKeyMask:0)|(_88.ctrlKey?CPControlKeyMask:0)|(_88.altKey?CPAlternateKeyMask:0)|(_88.metaKey?CPCommandKeyMask:0); +_DOMScrollingElement.style.visibility="visible"; +_DOMScrollingElement.style.top=(_89.y-15)+"px"; +_DOMScrollingElement.style.left=(_89.x-15)+"px"; +_4=NO; +var _90=objj_msgSend(_86,"hitTest:",_89); +if(!_90){ +return; +} +var _8d=objj_msgSend(_90,"windowNumber"); +_89=objj_msgSend(_90,"convertBridgeToBase:",_89); +var _91=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPScrollWheel,_89,_8f,_8e,_8d,nil,-1,1,0); +_91._DOMEvent=_88; +setTimeout(function(){ +var _92=_DOMScrollingElement.scrollLeft-150,_8c=_DOMScrollingElement.scrollTop-150; +if(_92||_8c){ +_91._deltaX=_92; +_91._deltaY=_8c; +objj_msgSend(CPApp,"sendEvent:",_91); +} +_DOMScrollingElement.scrollLeft=150; +_DOMScrollingElement.scrollTop=150; +},0); +_hideDOMScrollingElementTimeout=setTimeout(function(){ +_DOMScrollingElement.style.visibility="hidden"; +},300); +} +}),new objj_method(sel_getUid("resizeEvent:"),function(_93,_94,_95){ +with(_93){ +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(CPApp._activeMenu,"cancelTracking"); +} +var _96=objj_msgSend(_93,"contentRect").size; +objj_msgSend(_93,"updateFromNativeContentRect"); +var _97=_windowLevels,_98=_windowLayers,_99=_97.length; +while(_99--){ +var _9a=objj_msgSend(_98,"objectForKey:",_97[_99])._windows,_9b=_9a.length; +while(_9b--){ +objj_msgSend(_9a[_9b],"resizeWithOldPlatformWindowSize:",_96); +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("touchEvent:"),function(_9c,_9d,_9e){ +with(_9c){ +if(_9e.touches&&(_9e.touches.length==1||(_9e.touches.length==0&&_9e.changedTouches.length==1))){ +var _9f={}; +switch(_9e.type){ +case CPDOMEventTouchStart: +_9f.type=CPDOMEventMouseDown; +break; +case CPDOMEventTouchEnd: +_9f.type=CPDOMEventMouseUp; +break; +case CPDOMEventTouchMove: +_9f.type=CPDOMEventMouseMoved; +break; +case CPDOMEventTouchCancel: +_9f.type=CPDOMEventMouseUp; +break; +} +var _a0=_9e.touches.length?_9e.touches[0]:_9e.changedTouches[0]; +_9f.clientX=_a0.clientX; +_9f.clientY=_a0.clientY; +_9f.timestamp=_9e.timestamp; +_9f.target=_9e.target; +_9f.shiftKey=_9f.ctrlKey=_9f.altKey=_9f.metaKey=false; +_9f.preventDefault=function(){ +if(_9e.preventDefault){ +_9e.preventDefault(); +} +}; +_9f.stopPropagation=function(){ +if(_9e.stopPropagation){ +_9e.stopPropagation(); +} +}; +objj_msgSend(_9c,"mouseEvent:",_9f); +return; +}else{ +if(_9e.preventDefault){ +_9e.preventDefault(); +} +if(_9e.stopPropagation){ +_9e.stopPropagation(); +} +} +} +}),new objj_method(sel_getUid("mouseEvent:"),function(_a1,_a2,_a3){ +with(_a1){ +var _a4=_overriddenEventType||_a3.type; +if(_a4==="dblclick"){ +_overriddenEventType=CPDOMEventMouseDown; +objj_msgSend(_a1,"mouseEvent:",_a3); +_overriddenEventType=CPDOMEventMouseUp; +objj_msgSend(_a1,"mouseEvent:",_a3); +_overriddenEventType=nil; +return; +} +var _a5,_a6={x:_a3.clientX,y:_a3.clientY},_a7=_a3.timeStamp?_a3.timeStamp:new Date(),_a8=(_a3.target||_a3.srcElement),_a9=0,_aa=(_a3.shiftKey?CPShiftKeyMask:0)|(_a3.ctrlKey?CPControlKeyMask:0)|(_a3.altKey?CPAlternateKeyMask:0)|(_a3.metaKey?CPCommandKeyMask:0); +_4=YES; +if(_mouseDownWindow){ +_a9=objj_msgSend(_mouseDownWindow,"windowNumber"); +}else{ +var _ab=objj_msgSend(_a1,"hitTest:",_a6); +if((_a3.type===CPDOMEventMouseDown)&&_ab){ +_mouseDownWindow=_ab; +} +_a9=objj_msgSend(_ab,"windowNumber"); +} +if(_a9){ +_a6=objj_msgSend(CPApp._windows[_a9],"convertPlatformWindowToBase:",_a6); +} +if(_a4==="mouseup"){ +if(_mouseIsDown){ +_a5=_ac(_a3,_mouseDownIsRightClick?CPRightMouseUp:CPLeftMouseUp,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseUp,_a7,_a6),0); +_mouseIsDown=NO; +_lastMouseUp=_a5; +_mouseDownWindow=nil; +_mouseDownIsRightClick=NO; +} +if(_DOMEventMode){ +_DOMEventMode=NO; +return; +} +}else{ +if(_a4==="mousedown"){ +var _ad=_a3.button; +_mouseDownIsRightClick=_ad==2||(CPBrowserIsOperatingSystem(CPMacOperatingSystem)&&_ad==0&&_aa&CPControlKeyMask); +if(_a8.tagName==="INPUT"&&_a8!=_DOMFocusElement){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMBodyElement.setAttribute("draggable","false"); +_DOMBodyElement.style["-khtml-user-drag"]="none"; +} +_DOMEventMode=YES; +_mouseIsDown=YES; +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_mouseDownIsRightClick?CPRightMouseDown:CPLeftMouseDown,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0)); +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_mouseDownIsRightClick?CPRightMouseUp:CPLeftMouseUp,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0)); +return; +}else{ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMBodyElement.setAttribute("draggable","true"); +_DOMBodyElement.style["-khtml-user-drag"]="element"; +} +} +_5=YES; +_a5=_ac(_a3,_mouseDownIsRightClick?CPRightMouseDown:CPLeftMouseDown,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0); +_mouseIsDown=YES; +_lastMouseDown=_a5; +}else{ +if(_DOMEventMode){ +return; +} +_a5=_ac(_a3,_mouseIsDown?(_mouseDownIsRightClick?CPRightMouseDragged:CPLeftMouseDragged):CPMouseMoved,_a6,_aa,_a7,_a9,nil,-1,1,0); +} +} +var _ae=objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"isDragging"); +if(_a5&&(!_ae||!_c)){ +_a5._DOMEvent=_a3; +objj_msgSend(CPApp,"sendEvent:",_a5); +} +if(_4&&(!_c||_a4!=="mousedown"&&!_ae)){ +_3(_a3,_a1); +} +var _af=NO; +for(var i=0;i_b9){ +_bc=_bd-1; +}else{ +low=_bd+1; +} +} +var _be=0; +if(_bd!==undefined){ +_be=_windowLevels[_bd]>_b9?_bd:_bd+1; +} +objj_msgSend(_windowLevels,"insertObject:atIndex:",_b9,_be); +_bb._DOMElement.style.zIndex=_b9; +_DOMBodyElement.appendChild(_bb._DOMElement); +} +return _bb; +} +}),new objj_method(sel_getUid("order:window:relativeTo:"),function(_bf,_c0,_c1,_c2,_c3){ +with(_bf){ +objj_msgSend(CPPlatform,"initializeScreenIfNecessary"); +var _c4=objj_msgSend(_bf,"layerAtLevel:create:",objj_msgSend(_c2,"level"),_c1!==CPWindowOut); +if(_c1===CPWindowOut){ +return objj_msgSend(_c4,"removeWindow:",_c2); +} +var _c5=CPNotFound; +if(_c3){ +_c5=_c1===CPWindowAbove?_c3._index+1:_c3._index; +} +objj_msgSend(_c4,"insertWindow:atIndex:",_c2,_c5); +} +}),new objj_method(sel_getUid("_removeLayers"),function(_c6,_c7){ +with(_c6){ +var _c8=_windowLevels,_c9=_windowLayers,_ca=_c8.length; +while(_ca--){ +var _cb=objj_msgSend(_c9,"objectForKey:",_c8[_ca]); +_DOMBodyElement.removeChild(_cb._DOMElement); +} +} +}),new objj_method(sel_getUid("_addLayers"),function(_cc,_cd){ +with(_cc){ +var _ce=_windowLevels,_cf=_windowLayers,_d0=_ce.length; +while(_d0--){ +var _d1=objj_msgSend(_cf,"objectForKey:",_ce[_d0]); +_DOMBodyElement.appendChild(_d1._DOMElement); +} +} +}),new objj_method(sel_getUid("_dragHitTest:pasteboard:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +var _d6=_windowLevels,_d7=_windowLayers,_d8=_d6.length; +while(_d8--){ +if(_d6[_d8]>=CPDraggingWindowLevel){ +continue; +} +var _d9=objj_msgSend(_d7,"objectForKey:",_d6[_d8])._windows,_da=_d9.length; +while(_da--){ +var _db=_d9[_da]; +if(objj_msgSend(_db,"_sharesChromeWithPlatformWindow")){ +return objj_msgSend(_db,"_dragHitTest:pasteboard:",_d4,_d5); +} +if(objj_msgSend(_db,"containsPoint:",_d4)){ +return objj_msgSend(_db,"_dragHitTest:pasteboard:",_d4,_d5); +} +} +} +return nil; +} +}),new objj_method(sel_getUid("_propagateCurrentDOMEvent:"),function(_dc,_dd,_de){ +with(_dc){ +_4=!_de; +} +}),new objj_method(sel_getUid("_willPropagateCurrentDOMEvent"),function(_df,_e0){ +with(_df){ +return !_4; +} +}),new objj_method(sel_getUid("_propagateContextMenuDOMEvent:"),function(_e1,_e2,_e3){ +with(_e1){ +if(_e3&&CPBrowserIsEngine(CPGeckoBrowserEngine)){ +_4=!_e3; +} +_5=!_e3; +} +}),new objj_method(sel_getUid("_willPropagateContextMenuDOMEvent"),function(_e4,_e5){ +with(_e4){ +return _5; +} +}),new objj_method(sel_getUid("hitTest:"),function(_e6,_e7,_e8){ +with(_e6){ +if(_e6._only){ +return _e6._only; +} +var _e9=_windowLevels,_ea=_windowLayers,_eb=_e9.length,_ec=nil; +while(_eb--&&!_ec){ +var _ed=objj_msgSend(_ea,"objectForKey:",_e9[_eb])._windows,_ee=_ed.length; +while(_ee--&&!_ec){ +var _ef=_ed[_ee]; +if(!_ef._ignoresMouseEvents&&objj_msgSend(_ef,"containsPoint:",_e8)){ +_ec=_ef; +} +} +} +return _ec; +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("visiblePlatformWindows"),function(_f0,_f1){ +with(_f0){ +if(objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"isVisible")){ +var set=objj_msgSend(CPSet,"setWithSet:",_1); +objj_msgSend(set,"addObject:",objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")); +return set; +}else{ +return _1; +} +} +}),new objj_method(sel_getUid("preventCharacterKeysFromPropagating:"),function(_f2,_f3,_f4){ +with(_f2){ +for(var i=_f4.length;i>0;i--){ +_7[""+_f4[i-1].toLowerCase()]=YES; +} +} +}),new objj_method(sel_getUid("preventCharacterKeyFromPropagating:"),function(_f5,_f6,_f7){ +with(_f5){ +_7[_f7.toLowerCase()]=YES; +} +}),new objj_method(sel_getUid("clearCharacterKeysToPreventFromPropagating"),function(_f8,_f9){ +with(_f8){ +_7={}; +} +}),new objj_method(sel_getUid("preventKeyCodesFromPropagating:"),function(_fa,_fb,_fc){ +with(_fa){ +for(var i=_fc.length;i>0;i--){ +_6[_fc[i-1]]=YES; +} +} +}),new objj_method(sel_getUid("preventKeyCodeFromPropagating:"),function(_fd,_fe,_ff){ +with(_fd){ +_6[_ff]=YES; +} +}),new objj_method(sel_getUid("clearKeyCodesToPreventFromPropagating"),function(self,_100){ +with(self){ +_6={}; +} +})]); +var _101=objj_msgSend(CPEvent,"class"); +var _ac=function(_102,_103,_104,_105,_106,_107,_108,_109,_10a,_10b){ +_102.isa=_101; +_102._type=_103; +_102._location=_104; +_102._modifierFlags=_105; +_102._timestamp=_106; +_102._windowNumber=_107; +_102._window=nil; +_102._context=_108; +_102._eventNumber=_109; +_102._clickCount=_10a; +_102._pressure=_10b; +return _102; +}; +var _10c=5,_10d=(typeof document!="undefined"&&document.addEventListener)?350:1000; +var _2=function(_10e,_10f,_110){ +if(!_10e){ +return 1; +} +var _111=objj_msgSend(_10e,"locationInWindow"); +return (_10f-objj_msgSend(_10e,"timestamp")<_10d&&ABS(_111.x-_110.x)<_10c&&ABS(_111.y-_110.y)<_10c)?objj_msgSend(_10e,"clickCount")+1:1; +}; +var _3=function(_112,_113){ +_112.cancelBubble=true; +_112.returnValue=false; +if(_112.preventDefault){ +_112.preventDefault(); +} +if(_112.stopPropagation){ +_112.stopPropagation(); +} +if(_112.type===CPDOMEventMouseDown){ +_113._DOMFocusElement.focus(); +_113._DOMFocusElement.blur(); +} +}; +CPWindowObjectList=function(){ +var _114=objj_msgSend(CPPlatformWindow,"visiblePlatformWindows"),_115=objj_msgSend(_114,"objectEnumerator"),_116=nil,_117=[]; +while(_116=objj_msgSend(_115,"nextObject")){ +var _118=_116._windowLevels,_119=_116._windowLayers,_11a=_118.length; +while(_11a--){ +var _11b=objj_msgSend(_119,"objectForKey:",_118[_11a])._windows,_11c=_11b.length; +while(_11c--){ +_117.push(_11b[_11c]); +} +} +} +return _117; +}; +CPWindowList=function(){ +var _11d=CPWindowObjectList(),_11e=[]; +for(var i=0,_11f=objj_msgSend(_11d,"count");i<_11f;i++){ +_11e.push(objj_msgSend(_11d[i],"windowNumber")); +} +return _11e; +}; +p;26;CPPlatformWindow+DOMKeys.jt;2336;@STATIC;1.0;t;2317; +CPKeyCodes={BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229}; +CPKeyCodes.firesKeyPressEvent=function(_1,_2,_3,_4,_5){ +if(!CPFeatureIsCompatible(CPJavascriptRemedialKeySupport)){ +return true; +} +if(CPBrowserIsOperatingSystem(CPMacOperatingSystem)&&_5){ +return CPKeyCodes.isCharacterKey(_1); +} +if(_5&&!_4){ +return false; +} +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)&&!_3&&(_4||_5)){ +return false; +} +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)&&_4&&_2==_1){ +return false; +} +switch(_1){ +case CPKeyCodes.ENTER: +return true; +case CPKeyCodes.ESC: +return !CPBrowserIsEngine(CPWebKitBrowserEngine); +} +return CPKeyCodes.isCharacterKey(_1); +}; +CPKeyCodes.isCharacterKey=function(_6){ +if(_6>=CPKeyCodes.ZERO&&_6<=CPKeyCodes.NINE){ +return true; +} +if(_6>=CPKeyCodes.NUM_ZERO&&_6<=CPKeyCodes.NUM_MULTIPLY){ +return true; +} +if(_6>=CPKeyCodes.A&&_6<=CPKeyCodes.Z){ +return true; +} +switch(_6){ +case CPKeyCodes.SPACE: +case CPKeyCodes.QUESTION_MARK: +case CPKeyCodes.NUM_PLUS: +case CPKeyCodes.NUM_MINUS: +case CPKeyCodes.NUM_PERIOD: +case CPKeyCodes.NUM_DIVISION: +case CPKeyCodes.SEMICOLON: +case CPKeyCodes.DASH: +case CPKeyCodes.EQUALS: +case CPKeyCodes.COMMA: +case CPKeyCodes.PERIOD: +case CPKeyCodes.SLASH: +case CPKeyCodes.APOSTROPHE: +case CPKeyCodes.SINGLE_QUOTE: +case CPKeyCodes.OPEN_SQUARE_BRACKET: +case CPKeyCodes.BACKSLASH: +case CPKeyCodes.CLOSE_SQUARE_BRACKET: +return true; +default: +return false; +} +}; +e; ADDED Site/Site/Frameworks/AppKit/Browser.environment/MHTMLData.txt Index: Site/Site/Frameworks/AppKit/Browser.environment/MHTMLData.txt ================================================================== --- Site/Site/Frameworks/AppKit/Browser.environment/MHTMLData.txt +++ Site/Site/Frameworks/AppKit/Browser.environment/MHTMLData.txt @@ -0,0 +1,679 @@ +/* +Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR" + +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAIAAAAvP0KbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUeNpiunnvEdO7j5+Z/v//j4H/IbP/geh/EDEY+x+Sun//UNSj62f4z8B099YNgAADAA9PUNwzG//eAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAIAAAAvP0KbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADlJREFUeNpimL9qE9Pdh0+Y/v//D8T/mP79Q6chbBD9/x+MjwX/R7D/g9T/h9BgM/5D9BtqqgIEGAC2zE/UgDMaqgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAIAAADAusJtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCB1j2LNnD8P///8Zvnz5AsIAU6oK6qmqG6cAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAIAAAB2XpiaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1j2LNnzxcYAABDLQrJ2KbR7QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1j+PLlCwAFvALdifOWJQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAIAAAB2XpiaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1j+AIDe/bsAQBJFQrJwsQiEQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAIAAADAusJtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUCB1j+PLlCwMM79mzBwBaQArJvXzTegAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACYAAAASCAYAAAA31qwVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHpJREFUSMdj+P//P8NgxIPSUaMOG9kOi4+Px4WFoRhDbqAdtgSKB5XD8oH4PxTnDRaHOQDxHySH/YaKDajD5IH4KZKjYPgpVG5AHMYOxMexOAqGj0PV0N1hM/A4Coan0tthBUQ4CoYL6OUwJjxFBsOAFRejVdKow0jEAMbSS1vJwWj5AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACYAAAASCAYAAAA31qwVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH9JREFUSMdj+P//P8NgxAyjDht12KjDaIjj4+OZ6OIwoEUFQPyfSAxSy0Avh4HwVCIcNQOqlq4OYwfi43gcdRyqhu4OA2F5IH6KxVFPoXIMA+UwEHYA4t9IjvoDFWMYaIeBcB6Sw/KxyA+Yw0B4CRQzDDaHCUPxwDlstEoajBgAIvph233GDmUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUCB0FwbENgDAQwMCvmByJpbxIeipqR0pn7ga4gBt4gQZ41lqdc6oa4FPbe6c2QGpqaj/TuDbcxUWSYgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUCB0FwbENgDAQwMCvmByJpbxIeipqR0pn7gYIeIEbuKbqnNNaK+AZtb13asA3ampqQD8COzbceGNz5AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUCFtj2LNnz/8vX77AMQNQ4NX79+9RBNqvXLnyHyYIUsEGxL1A/BykHQCHWDaL8tTDxAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUCFtj+PLly38Y3rNnz38GGOf9+/cggVcMMM6VK1dAAl0MIGVA/ByIe4GYDQC0XjaO10uChwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPToolbarView/_CPToolbarViewBackground.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAA7CAIAAAA1lncVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUCB0FwQEBwEAMhDAO/1Je1YSUJX7fJyHDSkDKQMArBwZyJ5uVkWN254EDIQvvkiVhJWFDyuscs7KSsJJlYSXDLgErIwkJj6QErISEeZcOKwMBASMJ33s/zDJY0JkKjKMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAoAAAAPCAYAAADd/14OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUVJREFUKJFj0NDQWKGmpib1//9/BnyYwczM7L+RkdEuoAYdvApdXFz+u7q6/jc1NT2vqanphlOht7f3/+Dg4P8eHh7/LSwsnmhrayeoqqqyYCj08vI6FhER8T8kJOQ/kP3f2tr6k66ubhPQ3XwoCp2cnLiAJoIVh4WF/ff19f1vZ2f3V19ff7a6uroSXCGIALqTE6j4MEhxeHj4/4CAgP9AA/4bGxvvBrrbEegUQbjRQA/xABU/j4yM/A/SEBQUBPYkMFS2amlp2cAVWllZ9fr7+4MVwRQD+Wft7e1DgM6QASvS09PrdXR0BJsCUwQ0fZu7u7se3I0gRQ4ODmB3gRQA8a/AwMDpQHdLovja1tYWrAjkCSD+BLSuAmg6J0Y4enp6ghUBg+YeMGiigBqZccYMMLDPAQPbBm9cu7m57QE6Gm+CAGEA/dNCZSU2Z+AAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAoAAAAPCAYAAADd/14OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU1JREFUKM9jsLS0XGFmZib1//9/BnyYwdfX97+7u/suCwsLHbwKExMT/4Owt7f3eSsrKzecCrOysv6XlZX9T01N/e/v7//E1tY2wcTEhAVDYWZm5rGampr/FRUV/4Hs/yEhIZ8cHByaTE1N+VAUxsbGcpWWlh6rra39X1VV9T83N/d/RETEX2dn59nm5uZKcIUgAuhGTqDiwyDF1dXV/wsLC/8DDfjv4eGxG+huR6BTBOFGAxXzAN36vK6u7j/IKSUlJf+TkpL++/j4bLUBArjCoKCg3oKCgv8gU2GKgfyzkZGRIU5OTjJgRUBGb0xMzH+g9WBFIMVA07cBQ0IP7kaQoqioKLC7QKYA8a/i4uLpQKdIovg6PDwcrgjokU9A6yqApnNihGN6ejpYUWVl5T1g0EQBNTLjjBlgYJ/LyMiwwRvXycnJe4CO1iGUegAs+F709mxc3QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPWindowView/_CPWindowViewResizeIndicator.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF9JREFUKJFj+P//PwOx2NjYOJIkxUDalSTFQMxPkmIQnyTF0tLSASQpBtLOJCkGYlmSFGP4gZBiBQWFIJIUw+OBWMVALMkABHZAhg1MMQcHhxeQtoMp5uLi8obyJUF8ACitf5AUaj8yAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/action_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABYAAAAOCAYAAAArMezNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZxJREFUeNpi+P//PwMyBgJmKN0PxCBGP5TPja4WH0Y2UBKIGxgZGQ8AaVaooTDMx87O3guk15FsMAcHxy6YQVDD4QazsLBsRuLvIcng0tLSrWiuxMBAy/8YGRndJclgIPasra29DTJAR0fnY19f3/W3b98enjhx4jUQH2RoUVHRTaC6VqINRoooMK6rqwN51x2IuYDYFcRHc30/UtxMQ5OrQDYYxcu3b9/2R7b92rVrAehqYHI3b96s4uXl/QUSk5GR+fb+/fs4uMFxcXGPkTUBFaYgG8zPz5+KLA9SjyTPW19ffwkkPnv27P1APgtyGGcD8f6UlJSHwBTwV1hY+DpQYTQo7QJxPJT/39jY+P2PHz8OQNXDLf727VtgQkLCIyDbAls6PgZMZn+hye0frpQBlLuJJbKYgDgLa6owMTG5B9McHBz8DNkwWGrh5OT8Y2ho+IzU5Nbq7+//vLy8/A7Qa2VoERUCMtzFxeXZp0+f+kg1GITL3717FwOkmWERihRRIcuXL58FpFnJMZgBFquwCEWLKA1iywqAAAMA5oG1QG1/ejsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/brightness_bar.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAXUAAAAUCAYAAAByIq2DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrt1DEKgDAMQNEMvf+VdRC3QhNpUOS9pW0CDg5/RMQRl/uMxWy2z+w6zupuNeu6V3Yd747Zm/Onu93f+9q/2TnrfGd3u+/VWWbXcWZ30/0IAH5D1AFEHQBRB0DUARB1AFEHQNQBEHUARB0AUQcQdQBEHQBRB0DUARB1AFEHQNQBEHUA8k4Pbf5S2jTRYAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/browser-leaf-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANJJREFUeNp0kMEKgkAQhmd1PYh5C3wNfZkeomNPEQQdu3bo1i06duzURW8d8hJkUQgFYqLp7vYbJRU48DMw880/s0tBEAx83+8opahNLAxDZHUrimJSluXY87wr/QWL41gZhkFZltEdkef5tKqqoeu6xwZKkkRZlkVwIbh9YAF4htoI8PYF2bb9mpBSElwaOE3TNdTj37s1TaN6NfLFNM3IcZwNyo8GwvEwkmfGWMQ5X6I0h3Z1j6MpsOKE6b2u64t38/DzPCHECmAf6rb901OAAQCWtKL7r7moLgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/browser-leaf.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAONJREFUeNpiUFZWLlJSUuL5//8/Ay7MqKen95+BgeH9jx8/pv3586fv7t277xjQAKOtre1/VlZWhm/fvjF8//79K1DxfKDijjt37jyFK3JxcfnPxcXFAJRg+PnzJ1gxEP8Fshf//v27G6j4GgtIJRMTEwMbGxsDCwsLAwcHBwM3NzczUGECUKOyqqpqGAuy3SDFjIyMDCYmJi8DAgKeGBgYnAQK/2JBUvDP1NT0RUhIyBMVFZXNQKFVQHwLJMcCtOavnZ3ds/Dw8AdSUlIboZKPUbz3+vXr3cCwyAJiEVzhBBBgAKZHhoa/n4e4AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/browser-resize-control.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAOCAIAAAB/6NG4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeNpifP36NRMTEzMYMCEBRjBgAIP/YPDv3z8mBlIABaonTZr07ds3IKOvrw/C6O3thTAoNntUNRgwDpqYBwgwAFUPJZ6DFNTXAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/color_well.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACMAAAAPCAIAAADh1eFDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH1JREFUOI3t07EJgyEUBODHVbqAhXvY22cGXSAbpRFLC8loCiIkIfoyRHhW/7fAcXCHGONNXggBvfdSylNSrbW1hrUWgK+kvbfWGkT0kUdEIKK3PGY+lHS800veuU7XIv7BzFBKjTFEbzvnZGZYa3POD0kpJWMMnHN3ed77HwxWA6QUi5PsAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/New.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZNJREFUOI19kz9IAmEUwI8aaoqo1BaxWhoampMWazQS++PWEtTk1tIUOHbQkHZBTjY4eGpLKEE3JaLiDVficBwcSJSLTi4Owuu9jw8x79MHP+7ge+/3vXfffRIASBgzyByygCwjLsSLbCLbyAayhMxK48EFVOyCkeh0OmAYBnvHtTNkRyjhAtp5i5JrtRqjUChAIpEYCnH9WijhAmrbT4m6rjOKxSLIsjzalFjCBTRzgJKobULTNIjH4zAemHfOv828UNBsNhnlchnS6bRDwCW7yKJQYFkWo9FoQKlUAlVVIZlMgqIokEqlWHeYu4esCAWtVoth2zaYpskK6vU6VKtV9qTTwdx9xC0UtNvtqfARArzGKeh2uxM5ygQh8hIC3637a6Kg1+tN5Dh7AG+/lemCfr/v4CR3yLh4j8Kz/QpBNfyzdu+prD+sfjgEg8HAwWk+BE9WbohiZhijguGfKAqam7jUonDz+QjBbPh7vAN2F5AIcoXERHhjLpsEvjuPzmv+30Yu8fNjcuCT3QYV0+68RvoD0y0J9R+ff5MAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/NewHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYhJREFUOI19k71Lw0AUwIMOOrViGzcXFwcHwY+WfizVwcG9iFIpDmkkSyDQ1MFWyVJqKdRSQggdMnQJFEr/FgdBEEdB/Bue7x3P0jbXHvzIwb33u3fvcgoAKDjWkA0khiQQFdlF9pFDZA/ZRtaVxcECSlYnkwn8MxwOodvtijmulZCMVMIC2vmAgtvttqBer0OlUpkKcb0mlbCAys5SYKfTETQaDSiXyzBblVTCAjpzgYKobMJxHNA0bU7AkjvuzaZU0O/3Ba1WCyzLighYkke2pALP8wS9Xg+azSbYtg2GYYCu62CapqgOY8+QpFQwGAwEvu+D67oigXpCjaUv3Q7GniM7UkEQBCvhIxQ4JyqgHZaRqZ5A/iENyevY11JBGIZLydqn8BS8rBaMRqMIuVpKcOFcguk/wrGV/lVL8Xf1Nv4WEYzH4wg5LNvwalN0tyqYFUz/RBl0boIquHq9hyMr9bNYgXgLSBGxkGcZiWLsmwTJm/gH58y/RpZk+ZoiYPM+KZl25xzlDyJip/qGO0OBAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/Open.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgtJREFUOMulkz1rlFEQhZ+Ze3dDkGhcSZa4UYOFhU1iYaUWfiP+Bit/gVhYm970oj/DPyDEFBpEEPFziYKKySa7yO67eb/uHYvs5g22meZyYeacM2dmxMw4TCiHDAGOzDabd0+fWVgMIRQAu8Nh5/vGxnqa7nb+I1FgF/gJmJnhgeNXb9y+/+Dho1v9pB8xGCaD5O2b1+12++uOc17GVCqqIYZkbXX1xUb72zMgeEBbzZn62VNNer26AqjOTC2eP7eE7Ek8KHh6+hjLj5cbKytPngJ4IIpYabHEQglACBCKHGRcXhk9OVHHLCY2ct8D0u325M9mh16vV3EJmI0xKqA0KxgkwxowAWT+ZGv+2tzCuaX1D22KPENGrOPxighmRjRwqqhucfHKzUsfv7SfA/f87Nx86/L1Oyemjk4TQokA0cCrIk7I84IQDRGh7h1mMN1o+FerLxsAPsvScrOzbUlhkucFMmLda8GIZoQQERFq3mFm9LOS/iDJAXxRlrbzt08W65Sh3PfNzDAzVHX/P26vNCVNM6sAuj0bpiahLKu1GRkoIlis/IjRSIYpg2QYAbyKOkXUuQM3YYY6HamIiI5bijgnqIJzrgbgu9tb2+/X137PzrVqoSgjIghg2Gh8e281VkFU6z/an38BiHN+YWJy8gKIB4tV8qhwH6JaJxFqeZZ9yrP0nRz2nP8BeYUUSYTtIaYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/OpenHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeRJREFUOBGlwV1qE1EAhuH3O3MM1CiN/RFEBBFFULDWG92BV6IgrsD96CoEvVMXIS5AW1FBqJQmFWnaJs4kc+Z8Thtt9brPI9ucROCEBPTme70ny8vnb+Wca1qTqvo5GPTfp5QGQOCYgBL4BtS2icDyrZXVpw8ePb5bVSXYVGU5/frl88ZgsLUbQiH+kBSy8/jT2trb7X7/GZAioIXefHFhqcdoHAERQq9z5fKlq2COCQGnu6d59fLl/JvXb57TikCWnOyMc+ZAk6FJCQkw/+mcitgeGSdaEQj7o7F2hruMxyNmxIyZEX9NU0M1mUSgC4ziwuLS/YXzF2983ejTpBokBNi0DAIMBiQRNOTazdur3zf7L4CHsbewePHGyp2zc3Ndcs4gsE2hgIKoUyJnI4lYBDB0z54p1tc+nqMV67pOw909qgRNShySCIAxtmmykaAIBcaUqaEsqwmtmFLj/V8ltSM5Z2aMaRkkccAYcUBki2ldm1ZscuP9vRGTqck5c0QcEmBzSIJsmEynVNUk04oiFJIIgSO2CQoYY5sQBAKyKYIQEEI4RSvu7w1/fPuyvtM7t1jk3GRaAmyOiZYAIwQhdLa3NrdoKYRwPXY694QKcAYxY0DMGBD/6KSUPqR6+k62OYnfXED9QFof0dQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/Save.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVhJREFUeNqsUz1rwlAUvS8JAemUPZNZAiLonqGTPyV/oWPt2H+T2aUK/oAQyKDSzUFCSBarolF7z22faKWmYC8c7st995z78Yg6Ho90j1lhGMpBKXVS8n1f8NOiKIJ72e/3/cPh8CXwfdfvdru02+0gRM1mUwDLsoziOKZOp0PtdptWq9XzdDod8hVABqsRsNlsaLlcijdNkxzHETBB4vC4Q67neW/MfZQOqqqSSqgO2LYtVSeTicTX67XE4dEdzo1GA0IQGF4JYLbFYiHQBsJsNjvlWZZFmnchsN1uKc/z+s2fC4AIA7ksSwqC4CZ5PB6LgOZddIAF9Xq9mwKj0Uhyr0ZABxCoM+Qg92oE3cFfBPTC/6UDoygK+dBPWGfI0TsA10qShFqtFhmGIdsdDAa1T4hcvFiapqQ45jI813Wf2DuMB4b52wSMD0Y5n89f2b+re3/nTwEGACUKCdgz2++nAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/SaveHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXBJREFUOE+lk09qwlAQxscXCC7cBUGwJCErt0IJOYLF0Bt0I8FVD+Eduuo2i+57hB6gBLLLUhoiLlQUxP/G9w08iYjJogM/Xpz5vnkzkog8z+k/iOFwSLVajXq9Xq4IgiAfjUZ3oOb7/gf0YDAYkCAZrut+OY5DlmWRbdvUbrep1Wox9XqdJpMJn6g1m833fr//Ch9CnE4nHuVwONB2u6X9fk9CCGo0Gsxut+M8TtTO5zMZhvHted4bNzgej5zECTDacrmkNE0ZmJDHiRqecYG88AWXcwM8KNBssVhQkiRMlmWk6zqfqBW13Kw4AdZYrValQFP0CCTUj/V6TaZplgKNagDv3QrdbreUhyuoSaqiqL1ZQf2BVVHU3qygJqkKdfN1hfl8fk3ihaoKaNRl8Io4jmmz2fDLoWkaRVFUCjTQwgMvvoWn6XT6+StDJpIwDMeSvweMoYEWHniFHCmV/MhxnmezWUdiS8wHoNaBFh54L4mHAQ/Vw7dXAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImage/CPImageNameColorPanel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABoAAAAdCAYAAAC0T3x2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABxBJREFUeNqMlmtsHNUVx8+dufPetddrO07sRG1ik0SEQIwDJRSaAEn4QEQiA4oQoEgoUj+0qpDCN0BVVdQPqA++tFU/VVCpISIK0MhWFYQICBEeBVyqxjHgBIOx49jrXdv7mNfO7f/eGQcTXrV19s7dO3N+5/zPuXeWCSHou/72/P759bGRHIyN5p6mkbQ2ebIt0QTpWjTC9WDB0P2XYcdODT524bv8sG8D7f/VS7fA+ZPFNt6/6/qrqv2bf9iad7mx1jBMuT4ZheFSXI9GJkYXT4+/5ZWblz7kmv/4C/v+8Nr/BTr46JDZNMTv2gpi8P79t5jbe9s6Io2ohtsCjD5TT5FDgixKyCNGBq7/Vfmo9NybRxtlMfMio+jIsbv+Gn4r6MGfDxcTLk5s71/d89A9A70+1mfx4XOiGJYYRELmwxLSKILFxDE6IqEOZpGN5Wff+9v4Oxff+IKJaPDovmPzXwMdOjzsCE6n9+7Z2LP79r6eyQWihSYAcI7QSbMzk3MtwUeEfELkgkgoIBPQFmDXUJ5e/mRoamj0+CSJaNfRu082pH/tMjEST9+wdU3bj7b3dY+irNOzkKsKUIDFZupbR0w6rbQEwiVYjqhGDZqhEo3RZ3Rz30/W3NR9U5GJ8Oll/wr08H0nB9pz7MAdt/Vv+GQccgHSAKQptYvgUBpAXBpgUBEmlEmYDpRAdg2qU4Xm6TxNsDsH7l5f1IoHHnjh1oHLIBYmT+28fTubmCC9BIi/iHogYS1KTUdGPCYyADIBMpGHLJWhYClI1osB5lNVwb6gKX3vjYOMJdFTksEP7z2xrbCab3VbV3VMfCoobqKLUAsTYTPIpqM+HDAzg0jJZOMJpahQ0glcxRkoQb0C5BbQIq3tWtvRzju3Hnq+f5umReLeqwf6/KkLUKnKSMA5i1PJZDYqE2RkwizAbBBka9uqRwQyS5BZE5ktZxXjKgCySlP0Odvad2ugi+a9mhYmOxyn261MovCLqUxSIkOk12oOmAWzce0oEINRBpOgJKtVouSU4AT1WqJpyvcULUOIHVyPxCbuuzZH8Q0PD8epA2WooMVI1UNKZ2XyyWaI4VCDSeHSPKSI2ootGqMXG2S7rR52xCZuxKJzYZRrMfZNrofIA8xB5K6KHCNADp639RTiKJB0TKpSQlVNwz9TGE19AwcQL6CL1OC+aZPeyaX+NiC1CXTbEqJeA+c9adFNhOJIsMxGQnTZaanpcMwUIG1xPA33VWQxh9kUrqfx/TzllMw6cdBmvdj3uO4WZMQeTqgcZPSQjgvNbDPNxjFSsC43VOITt3AE6T5cNGCIEFuWYdRQGx042SgBZoYf1BwyqtwlfSz0y71dhltgyM6DJi7MQ8e5MAdgC2bKzSu7Ao6IY5NFMWlOgywDMBYiS2kSIC1GjWPVFtNlv+KSMc6R1plq/eOu61Ggei1zHmQG5xZ8cnl08zCFRLhJkzcisxg3OFXiZo10LjPz4TpQJoEe/kdHF+vI6Az3iB8XCwuH24qU8IrQ3ICRnQEs+NUs2eOBkoZiaGrKPYBFH98HgIcSukTMrpJl1omzBprFVxm2UiEJZoJ2hxvH1en93HXDp9f1/KDrx86WzUvwZbWh4DDWBkcFUFvgLIc6OEspiNXStsxhPQ+oh4dcfG9X8HCZhFFGvXL0/r+DsfFz8xfvOzi0S24JcomOzM5+fJKu3tLIL6JJlFRBGjnJ0xWAAK1pw5mBUaun0vnQOUAgAeYh7vGwHiO7vFTB8S+MlFoNS3/gK++jV7YN/4W38xt2du3tpzk/jT4PSB5jDs4dmIWIjSwjT6Qd04KAWhBQi2xV3FvAvLudTv298kEU1d+969A/fqoO1eV9jC5+RC/Fp99jr/53oPu2LXTpItq4jAgBCCqZLDAOZ6yavtvz6MIQjkMEFiErgUw6O+n1Zy6djar1iEztkW98lb993XCRRHyiWQwKN/fu2Ei1kiPKY8ScRaU9QfvLIDcDtUYk8gGxjUWiDs8f+uf5sWZSr2iOMbjvyKkvX+VX/lj50/pfWtc66/9YMyu7N3Tna30d7ZsoKWlU+wyr8zjdZzDWiRWxo1vxeE+OqI0n/5ma+Whketq1nOSVdz+v/uy3J87JVhUiy2QlaPkNLU8Y/ud1v9i1Tnee8PXFXrPYmNu82nAKTmh2dnid8uaZ8lypFDaCkdq0v9AsF3VbnJ8Mkt/8+tSnr6uDjtRxGMnXFljNlSB5SDtpE6I3IQysZafbe82NdsfuTiO5NqElz9P9VU0cO2UWzyUW1adEPPrBUvjq+3ONs7h/IW1TdSZV0x1ODYDC7wXBID6tykY597K3iJ85RIfQJdh8dv29oK9Il4FNWvF6yuacll9JqTRSpkZm4YrvLksn7WvN8A22/CNm5Xz5ZwNlY3LF/Eqj/wkwAC2fO4nxam4uAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImage/CPImageNameColorPanelHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABoAAAAdCAYAAAC0T3x2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABqhJREFUeNqMVkuMHEcZ/quqq7vntbO743jXm8WLs/YaOQ8nUswzQitMImJ8AokcLBHhK7cIWUHmAsGKZHzkgpAiBckckDghJQcc4TwIIg4iRBBZMrZje22v19nHPHr6VV3FV109m12CSWb0TVV3Vf3f/65h9Cmfx3/40wM5y48rli9qoZsF5fs0IxLSXBI8H0hfn5e+eunCyV9/8P/ksHstfO0Hp45kJv55s0b7H957f/zA7M5GzedeRwjPrq8WhYp1qq7eXRq+f+tiOGS9f8vQ/OTN53/3h89EtPi9F8OCq5fqYf7U1790wJufrrcL7EoMUc6B8pQhH4MkTQFEeGTo8vB2/42LbyRDr3eOC338T8+/mtyT6MnvnJ7OdfzK3gfGdy5+ec9MhvUufnJBVAAaIM8RMVJAQQLwjaYxJkHOzPmrr9+6tPHBihfSkXMnXlv+BNHTR880Uj288Niju+575KGpHatDokg7AqhOHCYwO1ZEBCINEEET2OnhqUacJqlO/7jzt9V3l/68Iuvs0B9PvBVZ+XxEpNLk5YXPT7T2zU91lu4QrXWJ0hhWWF+BkAHcuAMfwxIa2FRQQiltUJ9u0l36wtSByf2T+8eKJHl5JL8kenrxxcWmrw4//ODczO3bcBdIMni4sCQFMkw5EjECWZgSvBw1fhVsSykC2TKtsEf3HNrVKBqHnzx1cHGTCMxnHnpkL62sEO9bElhiUiyqCrBGgNAzFWgER8JLFGXcMtg2ANkqrfHHFr5KOknPWA7v24+/8ISsZ/N+fay9cgduQJF4vlOBwSJu47KFRGxJnqJynanILJFBvHJYtk5D2jG2o92k9vy3frbvCW5ydWz33pl8dZmYShiZyl0WrKgsgUUeRmnKvEBKu1GWVukSoiRyB22SKFi2Rh+xuZkHUe/FMU55fsj3J8JoFTEfOjeVgo2bj9wmMfoYfby3Bo8gt7nPVO60tqYUg6reaUlWmEMeU3pOZIEUCL4InLCRtj6SX7LqWTuLRu4rygQ3lePYJrY6tkDEpF/UhDZznlB6PLrBWYFsDztACALt3GM1DpiD5I7EL4mck1x8eFmO7jtKe12qESFSKc89afi4J6ymIElWUHbINjkJwZPugAfVg9AJLy3kLttEJZDhl23WUwbxCRTo4WkV83W871OIHT5mXkBio6ZVTQjZsBqHSIYQbgxBGkC69Jw1gXDE3BaSydC9C+I8g4gUWYbNZFtbDLFpmeqyzD8Q5CoNmDf0QuZdU9lgdlxMNGz1BxbwS4j6CQAfkIAHBVhmHYYCE2g7BerGRwwExDEFKxWsVSCwKMqGa9NiI8r6Ne4teTUmLyTZ7c6ecILS1AkPINSvICFT2NZtK9eSKGjO7ahd6/BjEl4CS611OUTbvpeXhCG+t5bipCbkBa/JgrNJNHim1WRGRJoFOdskkJDHbK7z3LlGA56tASxmeJ8r5+cALpMx3JySYFlJZi1ssKbJ1nvtelOeFW+vn7v+jfY3n9F+kc+hO1ilfRsP2xmYctobCDPIGJuaCkSZnaeOuFzDO2PjFOEMLOQxsrZB167nS2mU3Tr1wjsny9tyjAfPbXRv/p59bjarDY1f3nIid5qXlkCIgnA5dBYx62PsyaBIjn156hQo4hKsZr3gZ8uXB436mPw+VZlKr62f+/Do+FNfvFvcCe9rT3Uozp1wm01WWz1wRApjDqSVRVaw3WcqlK0FZ+stev+t6IrkxV9Pnnr79Lb7qMnDZ72+Vld7//qQJnx7QcETEDroE/V7RL2uQ9fOAXuX9Kp5z+7BXqugGKOL5/vXisFQBZw/+z+v8l/Nn56Oi+iVopW1FqYXdpuk55vBTaQxNJUQ5AHwP7HEuc66qIFGVMuJzbQQgyD7+3sr17VJ+/VWcOTEL99ZvtefE/6jXcdr9/udswPR/cquTj2eajV2G91HHd7Fch/dfaOMEWvB6jqOd1D7Tc/cWN+4cXltLQxr9Jera+mx375+LS6blDH6v4lG95ltc95zO797tM34jxMezfqtbGN23AvqQe61WsG43dyN+v2BSrMryXoa6UFb+OZmt6Bf/Obd5VerNlEVHimQqa1E6GrISYQLsMLawMTBcObgghw73BJ6QdMwDHg2rtHXIlZ0jaR0jfSVK7F681I3/Sf2rwE9qwcA03HZItIgSj6VCNgBTAOTthKqPUGlrRW0DuDvDH30WYm2ua4itvP6FvibFytt/teyhMNKaFq92+Y6i08kw5aRbYmh2FoK1Vxvu+U+fjYVRs/l+B8BBgCMykDM1OUJfQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewBottomLeftShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wUEOwUAUANA37S8JG7Fj5Qhu4KrOJyxEpJTpWHSW+l5ggwOOpZSzP8KkYDQjUJAxmBHIeOORUtphiQ6NKpDR44YT9thipQpkPHExuWONhSqQ0ZsMuKJDqwqM+CDjhRYNkipQkJHx9ccPCKMfJ5j/ZGcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewBottomRightShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wTsKAjEUAMAJvLt4LTsvayEeQAQbbRTEZd1PEgWLCLozUWv1T0ppjR2OYVlB9RaWDciokVJaaQomjHhgQA5sfFT0uOKMA3rkwFYzosMNF3SYA3tNxoQeHZ4ogZOmoiBjRkEJ3P2qvrwAKV0tKePvXOUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewBottomShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAJCAYAAADzRkbkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUCFtj+P//PwMDggACdRDRByKiQIQOiOAHEYwAbGEKQz1zHVUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewLeftShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAABCAYAAAAb4BS0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUCB1jYGBgEABiAyBOAAAB7QChuhy7UQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewRightShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCFtj+P//PwM2DAQJQGwAxAIAxNISj3z8C1sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewTopLeftShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUGBl1wbENwjAQAMD7f8sYlCoN+w9GyRxOgRuk+C78CzcCgUShoZAIS0OiY+CFgY6yNBQGTnyRSISloeHAe875cSNReOK0kUh0HDYSgcLDRvoJhI0L53oFmk+kBA4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewTopRightShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBJREFUGBl1wbEKwjAUAMB7aVAExUFw0f//vC6i1GASHYQuzV0gbOv+Ms5WHQ0VH1S0jLtVRcGCFxaUwMmqo6HhhhnP3Ht/2BARVxS8k7ELDpiSsSN2SMnYHhMiGQuEny/9fRhMYHBh/AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewTopShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAYAAABP2FU6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUCB1jYGBgYARiBgEQoQMieAEB6QBLHwsEZwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPMenuItem/CPMenuItemOnState.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAbElEQVQoFc2QQQ7AIAgESw98nW/4O55BdxNNkB6aEA8lGSXKiqxExNWJuyOi5idCEVFgwCfMdRuL5lRQYICuZSzXvUTTZS8iPuBZeNycgQ41xnaQ268cBTSCc/LLhLmue+7CpRPHZ/z8RLvjA8MnX72R/hSoAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZ0lEQVQoFc2QUQrAIAxDdR9e3Wvsdh6j6wOtWxkIxQ8DgRgNps0ikiK4IiEy5wSLtqnK1onGm2A5P6zqeeDZWxNvU3Xzqe7Z++3Luecwpr6eqziqFPWZicoQjTfuU+YQwfYZlyXCPz68ppV1+vunagAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpiZAiuZ2ZgYLAGYh0GhsA6h44tpzdfeP7lIxML038TCx11x1c/GflY/vz+w/35139uBoY/DCwM//4y//n7hwEEWBj+/2X+/QfG+fuX5ffvv1DOPyAHLvPvD1DZbySZ338QnD9/EHrgpjGxMzP++vr92w+QXUy6StLXjp+5cPnL12/fGe8+fSkXVjMh5Oq9JxqM////ZwQqlwZiIYAAAwAMX1XNMAlUgQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYAiuL2e48+H3f6Zb734yMP3985eB6c/fPwxMv/+AiN9/Yaw/v0FcIOvPH5gYWB2Iy7zvwWdVhv///xsDBBgAJJsuTOBf54IAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ5JREFUeNpiZAiuz2JgYLgCxEeZL+zbukdBXEhmz7mbT5le/WTks9BRd2Rh+m/C8vPXH4afDAzcf37/4Wb58/cPAxj8+8vM8vsPlPMfxPn9F8L5+5cFIfMPzPkN5fwBKUOS+fPnL7IyJKNB9vz89esHOzPjL5YvX799P3PxyhVdJelrzKde/ZbnZvl/YFVz/gaG////6wGxDBAzAgQYAO59XJBTIVY/AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJhJREFUeNpi1LewZWZgYLAGYh0GfXMbh5XrN21++fbDRxYmZiYTGxtbx39MLNwsf/784f7LwMj9988fBhaG//+Z//75ywACLP+BnN9//8A5IKUIzu/fCA4zqgyMw4Cmh/k31GgmVlbWX1+/fPkBspRJVUX52qED+y9//vz5O+Ojx4/l8ovKQm7fvavBCNTDCFQuDcRCAAEGADqxWcjpDiMNAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFRJREFUeNpi0LewLWf88uPXf8Zn7z7/Z3z0+sN/xvvP3/5nvPXk5X/Gaw+e/me8ePvhf6Y/f/4wMP0GEVDWXwamv2Du378MDKra+ksY////bwwQYAAEtTEizRGTJgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJZJREFUeNpi1LewzWJgYLgCxEeZL128tEdWVkbm8JGjT5n+MbHw2djYOjIxM5mw/P7zB6iCkfvPnz/cLH///GUAg///mVl+//0DZQM5f/7AOSwsv38jcZBkmKGmockwgPVAjQYr+wuU+QEErKysv5g+f/78/dCB/ZdVVZSvMegYmc0KDI0sevT4sRxIrR4QywAxI0CAAQBTdF49cw4ogQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIBJREFUeNpiZIAAISBWATGE9+7dO/Xr16+vGTg4OGyAjA+/f//+z/Tjxw8uFhYW/n///jGwAJUxgRggAOIw/v37F85BkWFClkFVhlMPXBkTDw/Pf6DFn0CyzN7e3mKsrKwcUlJSCgxv374VCA4Odufn5w9h/P//P0g5PxBLAwQYADkXPiP8F5MNAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNocxFEKgCAQRdF59dO+WkT7B0EEQRBhGERv1Pk4Zma31lpozokiArk7GmOg3jtqraFaKyqloJwzSilx7L3t7/OcwPUKMABbNDOyQBe/kwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpiYGBgMANiIQYQ+Pr16+u9e/dOBTKFGX7//v0fKPCBg4PDhunfv38MLCws/D9+/OBiAXGggInl79+/MA4jThk0ZSgy+E379evXJx4env9M3759+7B///71rq6ubxn4+flDgoOD3d++fSvA8P//fy0g5gdiBoAAAwDmKUtB/aWHewAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpiZIAAISBWYQQSwp6enk1iYmJhLBwcHJpARjQTExM/048fP7iAsvz//v1jYAEymEAMEABxGP/+/QvnoMjgUYZTDyOMw8TDw/P/z58/n0ACTK6urm9fvXq1/vfv3x8Y3r59KxAcHOzOz88fwvj//3+Qcn4glgYIMADyGjn6SjxcsAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC9JREFUeNpiYGBgcGZMSkr6z/T//38Gpn///kGJv3//YnDRxOAECIQzAw3gAAgwAGRwKZNd4WBbAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIBJREFUeNpiYGBgMANiISBmYI6Pj78gJSUlfufOnZNMQCAiJiYWzcHBocn0798/kAr+Hz9+cLFAOSDAxPL3718YhxFVBrcyJA4TTj2MYEv//PnziYeH5z/T79+/P7x69Wq9q6vrWwZ+fv6Q4OBg97dv3wow/P//XwuI+YGYASDAADufQ795H/vjAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif +Content-Transfer-Encoding:base64 + +R0lGODlhQABAAPcAAP///8zMzJmZmWZmZjMzM7u7u6qqqoiIiHd3d1VVVURERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBgAAACwAAAAAQABAAEAI/wABCBxIsKDBgwgTKlzIsKHDhxAbGphooCDFigQvRtwo8CJFgQUmFjAY0sBIAB4nckyYgIDLlzAVQEzp8eTKjAoUJMipAIFAAQkGBAVQAAGCkQIOKD1ZQIDTpzcfHkiQQEBBo0YtKsUYtavXr2DDih0YcuxXjR0/plVp9qFJhyFttkU4lafVhU2fyp1rEEHQAQMGYvX5U+mBu3wTK17MuLHjx5AZo42McDJKtWu5Jr4ol/NllSXZgrRsNqVD06UVuOSZk4ACxKdpiqZMe6CBATmp5hyQF2GBkQaePtUs1u8A2FMBBwYwWKDhA8SD721rPAFhgc0HJlUKu7Zzowe8i7cfT768+fPo06tfz34jae8lDb4XGdmzbcxE3zMOzXWyfcXxEcRfZpntRd9YKdmEFluT8TebWA6+1VCE082l30EXttdWSzB1KJNbsh0YlQGqucaaa90xFCJxZvl1HV4CsJgYULntlOJBwjmV2AE15maVXwmEp9VhP+UoQIUjssbbQMoFyRxWKD2XkXD7NXlXdgZISZkBfyXAVXZEPYdkYsotKRiUBGkJ2W99oamhUhrGKeecdNbpXUAAIfkEBQYAAAAsDAAVACUAHwBACP8AAQgcoECBAIEIEypcyLChw4cQGxoYkGCAxQQRBRrYyDFjAQQgERRAeKDkgYQCUh58aCABgZcwMWZ8WCCBzZs4Dcz0iBNBwpAIDpo8WUDlSoEFOOrcKXAoUwAGYMIc8LQqAqknqyYkWLCrV5laZx4YkDWjgZEOBVC0uLapxaMIiwpYqrQjRKBLnQKQm/IpUIV6ERoNq7DvUwFSEywl3PCqVAIKyjJeKEDBY8mTFxKkOrkmzs+LGXP1+jWzacJqK4KFqJQmgopsE/jcCDFpXbRIYa/NOjFk07IqE9ZdPBZBaLW+Aeg1ihthaIYH/v4uiTLlc4jRQUoODFXl9bQDfAIMNqlQbvOwAkrChRgQACH5BAUGAAAALAwADgAfACYAQAj/AAEIHEhQgAGCCBMmNKCgoYIBBQYqIEBxgMKLAzJq3BjxoseEBxCIFDngAIACHT+qBCDggEsBBQXIJFjAgM2PAihShLnyY4KGCX7y7Em0qEIBCA6kBGDApUuBMmcytXnQKEEDMqsa1UlAq1WFBrgi+HoA6E8FCWAmqPg1IYIEY62+3bgxgcW2YEcO8Gp0wEiRPAs45SmVKl+PLV8OjDrU8NKFLvkyXniY4ACKcfEinEgxgeaEaykqaDsX4WXRj1cCdRj3gM7RXweYbbj36ecDZxUM/cx7Lt2MdvH+3sj7KILdeAv8RbBX83K/BxNXtpkawF+TA50eiB5VoGGi2hd3F/dOdWV48VLJ3/R4Hj3y71YnFx+4/mJAACH5BAUGAAAALAwADAAWACgAQAj/AAEIHEiw4EADCRIYMEiwgAIFCRQcEKiAAAEFDAceGDAxo8cDIA8U8OjRgICTBA2oXJgx4sORAyteHChgQIIBOG8uHPAQQcEDCIIKHeqTpMCQIVkCOCngoFKGBU7CdKqS5NOBFi2SfPiQoEyMAAokTFhUYMSIPr8aNGATp82rBIESFWq0rl2BApCCbGrUwAG+A6MyFbgS7kGmTwvfLVh1cUyLYBkieNjx8cyMPCMO8AqZZGaIliNvRPB08lmBWQkIFOv2ZkcBXBMsfQg4LIKbrREIvlvzpmzHd+XOpUtS+NypwE0a/qgXOUO/ekUCMCnAucaQtZlWn77SqHaYij1qDU/ZPeN48o0dhwcOMyAAIfkEBQYAAAAsDAAMAB8AJQBACP8AAQgcSLDgwAIDBhQwyJBhwgEJBAhMoEBBAoEICGgkYKDhQAEIJHocabCAgJMiSao8aKBlx5UkHw4oSNEiQQMbCRBEwJPnAAQYEyQ4YHCAxosfDyhdypQoTIYoUS4U6PLlU4Ytr64sMJVgTaQ3U2JNkDCB1a8fc6bsicCpwIdDAaA1qlGBxwJsEczUCkBA06Vi+Qp+aiDqSat8TSKm6nJwQZddHZNEq/WA0MCUB2YksJchArIJgA7MLHejXY+fH46uCFbBRrB920a2rFoua4GuNXZ+mzcl6JkGhHbMTcBtwQN5BxhnqHSlgZ4DFkt27Pcv08HVrU9nuDAydcOOTRoTFlkgq9aoiKtuZ2x+u/r1768GBAAh+QQFBgAAACwMAAwAJgAfAEAI/wABCBxIsCBBBAgMKlyoECFCAwIHSBwg8ICCBAoUFGDI0IAAiBwHDlAwYGNIggZSgjzJsqHDghMpDiyQ8SJHAwdy6jyw8YBEAQYRZKRokYDRowk9CljKtGnLpypVPp06NabClS0LOERgEoDVgTUVhNwJdOBWoAMSJKAoFGOCgQYSHCVQtuDOnF0ZHphLQEFdgUqbLqVKuDDVAlFT5jVcECvjxwTTroUsUMCAhDAn2s2IueUBhwciaxZ5kSTVzy8jjgbg1vTNA38BWE79tXVn2UMJ3j0A0sBlhKo3YsxYdgBfAo4F7AaacuHSuMcTODa4c7HCvUgpGw4smKl2wN29fw8POX184vKPz6NPr9I65YAAIfkEBQYAAAAsDwAMACUAFgBACOgAAQgcSLAggAMHDCpcaBAhwoEIIiIQKCDBgIsMMwIooBFigokdBzpMSFAiyIEXMS4sIKClSwEUERpomOAjgIoKFNTMSTJkSAUEggodmsAnAJMGC3A0etBhSYkDDVgckGDmwpdWBY6cifTA1AEDCwzImTPrwJctQwrQmSBnUaZG1xIgmzOoArMaD0TsCZegAZkFkRKsmICvRgEOYUKE6pHqSbWJF0dEedEmQ5Z4/zo9yjhl4YKOz6JdWiBygckAqFKFSLatgoIG0AqYqTSjWLeuwV5+qba14b7Agy8EOrT4W+EUgdIlfjcgACH5BAUGAAAALAwADAAoACgAQAj/AAEIHEiwIEEBAgwqXMgQIcICAg9IPCDQAIKLCBhqFFjAwEaCBwZQ/EhS4wECKAlkLMmy5UaHCUFOLIhx5UYDOHN6BGDgoUEBA0QKHJAgKNEBMQF01Ml0Z8kECqJKnTrAJckBKVM6tcq168SRXX86lClxYIGaEG/mTCsQJsSvAATUJIgggd0EbA02fWq06FaCTXO6NHC38N28YRN3TZAVZYK/ihtGrRq5suXKAiQmjVzAJ1mwAxEgtdoT4Va4Aw9gBM2y9GbUAGqyZgi581gAqDGOHmhRaMG9A2/jHql7Z8iiQfEqXKoTsV6PdY0SReBcoU6+RTdfdsk8MGSNUKeKK6fs/btGwoYLV+86QAHl7QZPZlWgHf4BBY1Vwv/NOGX9/QAGKOCAra23UUAAIfkEBQYAAAAsFQAMAB8AJgBACP8AAQgcSNCAAYIIEyY0aHCggIcCBh6YeEChxYsIBSCIiLFjRgUgE1T02FEBgZMJMDI8SBAiR4kUSRZouHBiRAMIBiDYuZMkxgEJBggdKjQBAp8mT45EAFJBApA+FSI4OSCqQ4hWB65siRXmRJJbAbgEYIDiSIEHeB7NKtCATrUF2FokSreq3LsKJ7oN+VSB3awFkhL4KxDoWrYJThJQwNbAQ5ZZaXJ9iLDsAcgKGca9StkhxZcKZzLk/FLAZ7CjxXY1i7lAWtBaU3c2PXGzRrWEfRaIe+Atz7Ny3fLEjLd4R6B1ix62WiD5ULkIjBpv6bRvyrsDUIq13hc4yewnGQsYbN5UAXGPUxWfvytAMQHYeA24n14QPsGAACH5BAUGAAAALB4ADwAWACUAQAjzAAEIHDiwgAABBQgqXHhQwEADByJKXEgRgcWLGBEcUIhAgYIBAgckGEBypEOBCggQUECwgEcFCSjKFNjQwMyZBSRuvEnxwICdMlOuFHgApseEMw0kSGCTp1OBBmo+pdkQ6UABB5rexKrzwMmpYCtmvAiU4siSA7QOFMqyYwKYBBEsFYmULUGjCtQqVKmSot6pDb8CbhjWIGGwhg8S5BpRpmGbObtm5RlZomCnEP9OLTCWLM/OGMuG5bnUJGAAnM+WRGAVgACPDt/CJiqSJF2BfAkIfPsWAUEDCH6uVclyt1GQM+0OHGA0ZlDiCosq8P186OiAACH5BAUGAAAALBUADAAfACgAQAj/AAEIHEgQQIGCCBMqFGigoYGBDh8unLiwgICDFDNCHICgo8SECQiIVDAwgQIFCQYOWJkAgUaEEQvGfLmwIUYBOHNepJnwgM+fQA8IGHhAJAGSBhIkeDggQVOJAjpKdSlwgEiqJU+mJChA6QGeDB2CnTgzbMOxAGaWTasTrUCdQ932DPozrtyXPhcOPcBx6leECIwSEGgSZVWWfwUWOIDArgKjWwlrJYjAacuxhSPfhfhxs9nOYdGuLSB2bNmIGMGqLU3QwM6MZ9OytghXrmu4oMfqTO25N0K6Qe2CBe5TOM2oxu8a6IuAI2+EIQkM+K3UpYGpUhM+Fjk9M4ADTlcSKmTccTpBwVS9A+i60rxewXbVpw2vGeF2Ap3lHxavN7d+xc+9VMBKAWYUEAAh+QQFBgAAACwOABUAJgAfAEAI/wABCBxIsKDBgwUNIFzIsCFCAQoISJR4wGGBAxgzOhyooKMCggNCDhhYAIFJBAU2qjxYwIDLlylXyhRAs2ZNhQImEkigUGACBT8RABiQIMFIASeFDhSQsSLDngVFjpRJdePLl1WfYs260qZXmlAJFhigYKpDAwLCHkSgU6KCimQVKCUoIGTFi00xqj3Y8adTqQINJK36s2NMgYAJDuZa0CTjxwZbboWc8KpLypWvYka4d7PBrzc9g7bZ2TNDthOdMsSLsaGBBG13ohXAGWfeA7QJGog9FWJfAGOnnjRr4DbIjrk5/kyAWKTA4ckFMi09kOzy6s6fn1St0npZkNkFHhPYLhNBR+5Dww9EMCA6Y6JGqwYEADs= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldCancel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAB3WlDQ1BJQ0MgUHJvZmlsZQAAeAGtksFLG0EUxr9NEBWLlaKe9yBiIbZr1oBeJEZtkeYQYopVeomzaxJw12V3jQoe/Bs8CIVSKBXppfRo6SnQS3vwIGJr2/9CwYvI9psd0vTQ4MUHb/c3337zZubNAsl82fPWEgAcN/SLT3P6i6VlvfMnNPThPgbwuCwCb7pQyNPSJq6+0804HZW12pjayb0+FwS0FA39FcVZySuKS5I3Qy+kpypZVMsWeYec8kvFGfJ7cm9F8SfJK4q/Sq6Lipx7TjZcq+YCiS7yhGUHgpwlCysQDvmA/NJx1lk/ScSI8HzOTY6Qh2RfpAjUL4CpN/TvtbSlj8CHHDBw3dKGx7ndDPD5VUu7PI97pQ12BatmOi6n9RwBHftRdLkIdD4Ebn5E0fVRFN0ccu1fQONKbPj12MuDaMfc8C1jdWZVHTjhGRjxHf2fVV9ilwG8awDcCp7tAq+zwDAHD34DBXIpi4RpNlP1kFagOzdmpA0zIyfeaThrG7ynODr4vGe7zxf47mPmV/0nxSZb9uxck+1g7q+nFs6XmjpyGIOBNNNEBovqrvkV4xPs/RnhW+NL/a1U/o3Q3op7OLPubfu1SjXUp/mn2yl93hWPUnraMCbxB2AbgwprTB4MAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhUlEQVQ4Ee1US0rEQBCNHwYFUfzs/IGKXsAD6GJMwIuYla6SO2Sjh8gVIskBongEEUWEWQkKOpKIaHwvSfd00hnjZnbz4KUq1a+rO9VdMYwxRl2BiZYFFjC+DC6Bc6W2D/sKPoNvZUwzfyVehXoTZMIMpFa1XOAJ7IEaprRIEViD2QNnQDVZMVo8OzCL4Bf4XoQGz8mBK715eOsgF81c192hBSXKGN+nwQ2Qc1qxBUUXPHIc5yQDwjA8L2Nd+oxxTMRgt8FW7EPBxDlFIlrVF+Ol5ZxWHEAhE9MXCeu7V3SH8CtoqnFF8M+XyhlwDotfB68RTztHEATHpmmeRlF0wQD8M3yBYVnWZaHIn9qtUMaky4PIS4HTt+ufL8rCMaGD1Q6PV6qOHwTYcZ04jl/SNL22bftGiHzfv0uS5MrzvHvE2DQf4CP4CUoM6zx23S7YVCo5Gc43eAv21CD9ph0zzpqxo2ZBdlgdYqcPGNCSUjxsxyIRO2oFFD8h6rlo608ImjFGXIFfJ96OUFGBfFoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldCancelPressed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAABz2lDQ1BJQ0MgUHJvZmlsZQAAeAGtks9LG0EUx7+btBixSI2t5z2IpBDLmjUQLyU/oEXsIcQUa29x8hPcddlsogUP/g0eBEEKpUW8iEeLp4CX9uChiK2t/hUKXkTW7+wQ0kNDL30wzGfefOfNe28GCMdKjrMcAmDZnlt4ldXfLr7TB34hjBGMIoqZkmg6mXz+NSV97OYHNLl1Oilj9RH1cw+7vBDQ4hQ8qSlOS15SXJS86jkeNXXJol4qk9fJcbdYyJH3yMM1xV8kLyn+KrktavLsOdmwyw0bCEXIqXKlKchpsig3hUX+TE5Z1grjhy7JMeG4PBt+QB6XfeFMa18BLz5Qs9nzLR4A+1ng6W3PNzHNdJPA0XbPd30e9EobizSrZiIIpw0dAg+3fP96ARh4Btz99P3bQ9+/2+Xdv4HOjWi57UDLQrQTJvyPtapZRQe+swZa8EZ/Z9WXQGUAnzoAU8HcBrCTBia4iF4AeXIxjZBpdofqIaXAYHbKSBhmUh78r2Ytt/hOgclv+qhiv5nn/JgjVnVfFrqMLKZgIMFhIokF9Y7cxXSKfT0jfOsctz9Kz5/mVdaC/uRWnPduo1b39Ax/cSWuz9rieVxPGMYM7gG5lX3sSVNlhQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAadJREFUOBHtk7tKxFAQhrOKilvExgtoENRGUijEwsVKYSEPsG/gC8RXyVOk0idIYSexEFQWbUyhEfHWZBEvTfz/JCceyexupdUOfHvOzsyZTP7JMYyR/bUCjSEPWEB8FSyDOcD8J3ALYvAIRBtUeBMnHDArnjSMF/jPwLkUH5ec8G2AXWCCftZEwALvoNb5mHCKr78Fphhrt9uLXHXTfMxhLs/8MqljSrDOLBZwXffAtu00iqJ7+jzP23YcZz/Lsm4cxz242DnXBFQmFd5BdIYZPMiilmV1uLZaLWytTpIkh0EQXFdVik1X/y8V3kPCRJmUsVNV3DRNG0WPfN+PEM+AGv4k9qflmXyRNNbj6qDuY0GaFCsi+JU6XoGfUuQdUVP1+mmaXpWy9PAmSlPmPYChUrAoL0SDw+OgqClfX5dFGx47vwTqQdjKHX/BvwSaHB4L6INicfrCMMy/EuS9Aur7Birrp5O6IPm3XGUXG31on3Adg4si9PMracwob9IHoCzTgMYm9KK80iegVhS+wZNFnDdqDfDqzgPaM7gDN6B2leEb2T8p8A3yHYy8BAVcaAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldFind.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAABz2lDQ1BJQ0MgUHJvZmlsZQAAeAGtks9LG0EUx7+btBixSI2t5z2IpBDLmjUQLyU/oEXsIcQUa29x8hPcddlsogUP/g0eBEEKpUW8iEeLp4CX9uChiK2t/hUKXkTW7+wQ0kNDL30wzGfefOfNe28GCMdKjrMcAmDZnlt4ldXfLr7TB34hjBGMIoqZkmg6mXz+NSV97OYHNLl1Oilj9RH1cw+7vBDQ4hQ8qSlOS15SXJS86jkeNXXJol4qk9fJcbdYyJH3yMM1xV8kLyn+KrktavLsOdmwyw0bCEXIqXKlKchpsig3hUX+TE5Z1grjhy7JMeG4PBt+QB6XfeFMa18BLz5Qs9nzLR4A+1ng6W3PNzHNdJPA0XbPd30e9EobizSrZiIIpw0dAg+3fP96ARh4Btz99P3bQ9+/2+Xdv4HOjWi57UDLQrQTJvyPtapZRQe+swZa8EZ/Z9WXQGUAnzoAU8HcBrCTBia4iF4AeXIxjZBpdofqIaXAYHbKSBhmUh78r2Ytt/hOgclv+qhiv5nn/JgjVnVfFrqMLKZgIMFhIokF9Y7cxXSKfT0jfOsctz9Kz5/mVdaC/uRWnPduo1b39Ax/cSWuz9rieVxPGMYM7gG5lX3sSVNlhQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAZVJREFUSA3tk0srRVEUx69XRAxEMpYo8krKkAEjg/sFTEx9DwOfga8g+QZSHqXEQHkr8hh55f36/dxzdOice3WjFP/63b332uuutdfa+6RS//qTHSjIUrV7PdABjYHfJuMKLAbrLw1JSbQPQRqKoBDUMzzBFMzAC+SUAeLUi3EYrmEOpmEhWNcxtsMxHEBOFcd4WEU3uGdgT3wHnnoHrGYQ9LFtrrMqbEPUySRN4LgEl3ADt8FcW+jDNLeSKgmTW8FjJIz3YTKlj7TACHzWBIY1jWGwzw62RXWCp45Km9rODG+BDBj1m2T9lkCfuIs3cQX4dGuhBM6hEvqgH9yfhQ3wrk7hELrABKvwrmj20KjNgGkYANtlm5SHssX67MMYXECoNiYfErgRV4l2A+/BGRiwCkzkxzgP1VAPzbAM96BOMsPHXwMkyROXQymEp39g7gFMMgo1sAvj4CuMVVIlOvv+PaHPV66C0dfleh1awYq24Ai+VXagDBrAe7PibF1hOz8Z1FaaIOlTyC9yzL9+pIKYPL/A9AoeHk3/hvvtQQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldSearch.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAB3WlDQ1BJQ0MgUHJvZmlsZQAAeAGtksFLG0EUxr9NEBWLlaKe9yBiIbZr1oBeJEZtkeYQYopVeomzaxJw12V3jQoe/Bs8CIVSKBXppfRo6SnQS3vwIGJr2/9CwYvI9psd0vTQ4MUHb/c3337zZubNAsl82fPWEgAcN/SLT3P6i6VlvfMnNPThPgbwuCwCb7pQyNPSJq6+0804HZW12pjayb0+FwS0FA39FcVZySuKS5I3Qy+kpypZVMsWeYec8kvFGfJ7cm9F8SfJK4q/Sq6Lipx7TjZcq+YCiS7yhGUHgpwlCysQDvmA/NJx1lk/ScSI8HzOTY6Qh2RfpAjUL4CpN/TvtbSlj8CHHDBw3dKGx7ndDPD5VUu7PI97pQ12BatmOi6n9RwBHftRdLkIdD4Ebn5E0fVRFN0ccu1fQONKbPj12MuDaMfc8C1jdWZVHTjhGRjxHf2fVV9ilwG8awDcCp7tAq+zwDAHD34DBXIpi4RpNlP1kFagOzdmpA0zIyfeaThrG7ynODr4vGe7zxf47mPmV/0nxSZb9uxck+1g7q+nFs6XmjpyGIOBNNNEBovqrvkV4xPs/RnhW+NL/a1U/o3Q3op7OLPubfu1SjXUp/mn2yl93hWPUnraMCbxB2AbgwprTB4MAAAACXBIWXMAAAsTAAALEwEAmpwYAAABc0lEQVRIDe2TSytFURiGj0tyLxIxlaIUA8WUwkz5A36BPyI/RvgDBsqlTEwU4gzUGcstd8+Tteqotfc+nciAt57zrb3Wt7613m/vUyr96092oCHHtWvTMAEjIe+UeAwH8B7mCkPeIUvsXoYmaAyV3oivsAHbUNNBFkhphskVuIdd2IT98DxA1F0FrqBQzYkMbz0Frll4C55AXYBuFsGcw/BMyFZsQ3WGLRwFo72/hYeAY+diDsNipZxYIB6uA99B7P0L4+jKHHMLFYtVJ1rQtqjJz/DlN86ZU9MhqRfvxg6wWD/o9ga6YBbmwPUdOIPokmFaqZvorhP8fBfAFtky5aU81H1lWINryFXKiTezaBksYMFucM6b70EvDMEYHMEjZCrlJCZ7AdvSCo7NfQYP64FV6INLWAdbmlTKSUzUkUX9fP1T3oVx/JxPeB6HQTiHCnyrdKXDYZiHdsjrCsv1yaIt0Aapv0J9VTN2/YiDjLN+efoDgZRGxg70NQUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyBottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAARCAYAAAAcw8YSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCFtj+P//PwMDmQQQ2IAIDRAhASJ4QAQLAM+wJGk6yEDYAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKtJREFUOMu10r0OwjAMRtFrCIiBgYGBgYkn5mERtOmPWWwpShNEI7BkdfLR59QBCMABOAIn4AxcgKuq3vmiAj+ovyBqPVuvQrQAjC1JHJgMGNYgpQQD0Lesk6bogVcrMgIR6IBnyzqTrREtxWNtkjlBOmALbFof1teRlmNLEQdURG7A3jpYe0qpIenN+J/aZcMOSL4OH5CYDC+A2sX6VwySrKkhmmFkCKVhrzeOxUzF8ZZO7wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyBottomRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALFJREFUOMu9k8sOhCAMRSHhs/yo+ehZuHBhDKP4wE4nKZlaMFoWkpxgeJzcgjgAMHeatfaF3RtpkQ7pEY8Ed8tw0R6X7AQQVZKtIAKtZCVRZCJ1kpmJDok0kolEWRqNZEQCsrA0aomnNAuVFWvKGViaJNlrkoyFcsDhm2jYQqDJSAs32vTjw76zM+mEJIm4bDX/6y3eTi9iS1GSRTF2+E98QcJlXCrHTEoSTg4STsTZ/BcCN3bqE4blmQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAABCAYAAAA4u0VhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCB1jYGBgYAFiHiCWAGINILYB4hAgLvj//z8DMRgAsZ0fM9irjXgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAABCAYAAAA4u0VhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUCFtj+P//PwMxGAgKgDgEiG2AWAOIJYCYB4hZANHCHzOD2AJlAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyTop.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAARCAYAAAAcw8YSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUCB1jYGBgYAFiBh4QIQEiNECEDcP///8ZyCQAal8kaTS8tF4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyTopLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJVJREFUOMutkgEKgDAIRbdmbY3o/nfrMGuBhjODlIQPw/D1rEEYKyrn+PL8LlAGeCal94CBeMskkjC8FzVIFICE/SszBgRsAIGwSDi0YAo7g4C9QgAHck9trR3hQ8l1CFJ7ti8AbsJXKQjZLRAy4d9j9ZjIdcjGBaHfm9HGvA7dAbof2Wqi2cyedTQjs0lQQC6Iq36BnNGBBaWEiui/AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyTopRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALBJREFUOMulkWEOgjAMRjscgoYYf3gF738Jr2SCiqsbaUlTC7GzyQuD0MfXEgEggl1onK1ns6BfaUZFUvfL+0UyGBJuYt5EUiAnOW8ISuOUeRETwZVYclES2Vx4EiNdg/5oRMQb/FAhhKsQyMSrf8aqQQh4R0UaPJKTMeos8yZ5EK3YjyvJMXPP7GkNDe/IIzlkOurZ1Uo6GoNTNDXjtFYKb5KvBDXjaAHUJNmM+Hd9AEI6RFQh0+dCAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightBottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAJCAYAAADzRkbkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUCFtj+P//PwMDggACdRDRByKiQIQOiOAHEYwAbGEKQz1zHVUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightBottomLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wUEOwUAUANA37S8JG7Fj5Qhu4KrOJyxEpJTpWHSW+l5ggwOOpZSzP8KkYDQjUJAxmBHIeOORUtphiQ6NKpDR44YT9thipQpkPHExuWONhSqQ0ZsMuKJDqwqM+CDjhRYNkipQkJHx9ccPCKMfJ5j/ZGcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightBottomRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wTsKAjEUAMAJvLt4LTsvayEeQAQbbRTEZd1PEgWLCLozUWv1T0ppjR2OYVlB9RaWDciokVJaaQomjHhgQA5sfFT0uOKMA3rkwFYzosMNF3SYA3tNxoQeHZ4ogZOmoiBjRkEJ3P2qvrwAKV0tKePvXOUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCB1jYGBgEABiAyBO+P//PwM2DAD6GxKPgLbV2gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCFtj+P//PwM2DAQJQGwAxAIAxNISj3z8C1sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightTop.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAJCAYAAADzRkbkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1jYGBgYARiBgEQoQMieBn+///PgI0AAMt5Dzxv9Xo9AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightTopLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUGBl1wbENwjAQAMD7f8sYlCoN+w9GyRxOgRuk+C78CzcCgUShoZAIS0OiY+CFgY6yNBQGTnyRSISloeHAe875cSNReOK0kUh0HDYSgcLDRvoJhI0L53oFmk+kBA4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightTopRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBJREFUGBl1wbEKwjAUAMB7aVAExUFw0f//vC6i1GASHYQuzV0gbOv+Ms5WHQ0VH1S0jLtVRcGCFxaUwMmqo6HhhhnP3Ht/2BARVxS8k7ELDpiSsSN2SMnYHhMiGQuEny/9fRhMYHBh/AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSplitView/CPSplitViewHorizontal.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAKCAIAAAD+RXMgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCFtjWgoDTKEwwPQPBpj+wgDTHxhAYmGTRYgdggEAPLVN4i1E+ZUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSplitView/CPSplitViewVertical.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAoAAAADCAIAAAAlXwkiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCB1jXLp0qY2NDRMTEzMzMwsLC4SEMNauXctIkTQAwg4O0avWgU8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelBackgroundCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAYAAACaV7S8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUCB1jWr169X8mZ2dnBqZ///5Bif///zMw/f37F1kMLIsQA7MQXDQdRkZGjADPODEixZK7iAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelBackgroundLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAASCAYAAAB4i6/FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUGFdtUEsKQyEMTCBuBXe9gDvXPU+37xKFXkev6Oc5QoJtHYjiTDJJ5DEGlVJeRHTNeDIzgZOc8zuE8IkxkveeTGitXSklcs4tovdOgMzHQ0QWiQBQJchQArdZ4Zh2S9ghtdblq9kmgDwKsEGARIKKS9ARd5gV8DUumh+n2psDtgfIYwXI/TtM0Iq/PU5TAfxrobgByk2US+DqkeEAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelBackgroundRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAASCAYAAAB4i6/FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJNJREFUGFd9j8ENwyAMRe0qHLl3CNZhiEzRMXrtnU26AjOAxADg5KMa0QjlScGCh38MhxCEfojI9yxv7/2HU0rCzF2UUijGSDnn16O1RvhqrWStJecc9vt2tiNCo8gYg/ocQuM0YUMEDrFRupgPFFxeihEF9B+gd8xT/QksOpXWIa4MMd8Gy3FH1EosO8Ct4OsblAPXUJQLU51iKwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelSelectedCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAIAAAAVNSPrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUCFtjys/PZwoKCmJiZGRkAgFmZmY4jQ0jyyEBAK7qAuAYeB3qAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelSelectedLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAASCAYAAACeomSBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUCFuljbENwCAQAy27ov49aJnvB6FkrWcPmk9FFKQoTcrzST5mJsYY6e7J3nvOOVFrBSMCrTWYGbjWQikFJEGSkARJoKS9vpjfcF8f5ug86h9wATADFmAXDSbCAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelSelectedRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAASCAYAAACeomSBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFdJREFUCFuVjbENwCAQA637ipo9aJmPQShZC/ag+RSIAhFFSnk+y6aU4q01d3eRUtIYQ7VWJ8aonLN67wJQCEFzTmFmMjMBywArOMyGw/yB1+n7Z9e+4QHvjBZgBg89KgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelsViewCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAaCAIAAAD5ZqGGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUCFtjvnDhAnNmZiZzRkYGHOPio9MwNoyfnp7OnJaWxpyUlATGcXFxzLGxscxWVlYA/CwgVtHWuDgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelsViewLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAaCAYAAACD+r1hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAORJREFUOMuNUcENwzAItNv8K+WbAbJEv92s367Vf7JCvhkhdgpVziKY2EZCNvYdcNDt++60zfPs+N17P1D4ofuTzoFi1znDjiQjnV8C9QzkN3aTcNibvEfAJDaTcHy+UA0Vai09kFXqLFXI7pcaZBuadCkaJF25NKWsUpMGTSpN6UQG6bIluV3EVQ3NY5Wb1dMqarBI1ZZ0xaaWqlOyFpb2oNcPm6apSYO3hMO1Bi9PScAZY0wECf47fyIr7hCdgfEG4Em0Ab6xb9uWsjIRCbSGRAAwhJBIcg8nMPl9WRa3rmu20B+QCNBalqdZ1QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelsViewRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAaCAYAAACD+r1hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPVJREFUOMuVUrERgzAMtI3KVKHMELBAShZIk0FYIaNlAZowQbYAJzJn+WRjKeHvfBLwr5dkYJqmD8Ig3tbaJ8Yx5PGd6brOcAB9QFwwv2McUHjF8zIVAH9AUghnPA88t6ogkjKg02AEQCRQdcpPlIstcZEGqFRXxccdeMXS7a+1EvFQS9ocwNspXdS1Sq2JgpIkibIt8Q2JM2jbUWeotVSdQRpObYkTqEDf978dijl4+USCdV2zG2YulpEtiTaBcy4bNEbHKicReO93/1HTNGVLSQTLsmQOlCOCyseTRFtLwYXfdIRjlVOEeZ53q2vblhyI6GmGL+DHprPdSa8DAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBackgroundCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1jeP36NQAFhgLCPZRjjwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBorder.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1jmD59OgADjgHGSFRdpwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBorderLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCFtjZGBgYIZiVihmB+Hp06c/BAAH7ALGIwf97gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBorderRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUCFtjnD59+v/MzEx5BgaGn1D8G4r/AgCTpQkFeqUzkQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPToolbarItem/CPToolbarItemSeparator0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAaCAYAAACdM43SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEBJREFUCJl1j4EKADAEBRmb//9im9VTmim6TsIgInZ3GQEnL0QqYP5hRRFAMdabvpXj9pi6qxjFzXlq/SKCYXgDF+AD5ACr1RsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPToolbarItem/CPToolbarItemSeparator1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAYAAAD0In+KAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABFJREFUCB1jZGBgMP7//78vAApVA38fKzIUAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPToolbarItem/CPToolbarItemSeparator2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAaCAYAAACdM43SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUCFtjYmBgMP7//38DEwME/Acx/iMz/mJn/APi3wQYf4H4F0zkJ4rIX5gISVL/kNWgiqDY/gfm1D9wEQDwSTQ2I/IFQAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUOMut0ksOgCAMBFAHem1WHBwTVrXpDJ9o0gBKn4MRY4znzwunDb33ObbWcAvij4S47cFmA8QauxtZIxv1mxZANp9rHKRh9dmHBZaBReEMjFBJ5imMzSN6xFeEt74VwyJME0bMg9XdqxkKklKlqq6WYJaOYRGWYHZMDxhJKsFCQHOguWezT/1zKp0lKSWYJbQFOIO8L0oHneBhzz8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAATCAYAAABRC2cZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACVJREFUCJlj+P//PwMIMDKBSBDBxATjglnMqAQLnEDjsmBRzAgAI2YDUG/9aHsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUOMutklEOgCAMQ0fh2vxxb4yJmrG0QNQl/ZNnuw69d/tLSGRaa/ZGMDK11qRkk8GlJCR/pGDJQbfBDAoCggBJqIdlAlVgCfXOshOLrKCDu/OjEmBZuKSg6CwvgLMyBnfMGWweWTZ8w0qArmIacxeXvxuTwkFcqVPBxN0A+1KCbLMsIHRXamewdUR2b8/R7jyWbmKbO21JN34Oq/BktCvK5iYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUCFtjZGBgYGSAAEYoZkLDzGiYBQ0zI6llBAAGtQAx0/UgogAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA1JREFUCB1jYGBgMAAAADUAMcUHJsAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABMAAAABCAYAAAA8TpVcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUCFtjZGBg0Afif1D8F4r/oOG/SPgfGv4PwwB88RIDhNxONQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKRJREFUOMulklEOwyAMQ+O21+aLi0/t6JQZJ6QbUgRK8esDATODvQdGbVT7mI+xPlztrs49QAAEwXzwMRCBIQPv9f3tymXAlSXbpYbqLhk6HVcBTRhmUN//AK1gycfffgWubL9gEdAeQEHACeRh6m0iAIWGyjJ6UqokqHIFED80b8jACGoZLINUracMA6q98GQqnPWXmSxYgf+3+Ry992turcnsC77uBJ8gKQLbAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAYAAACaV7S8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCFtjYmBgMGACEv9BxF9U4g8qgSaGpvgf3BQwiwEAxvcQJujA9GgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABMAAAASCAYAAAC5DOVpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUOMuVk0kOxCAMBPvg98wn+XaMc4mRx/EWpBaLoFTEhAD8AAiADYCfXC5sovv0jGjITpIgGNv+NDL07eKBIcCukVOukhmfXmG6mQeA1JKeD+zN2IGlAb9gX66KDMYNbFLt0My+na6yYTUvs+gNBbVdek3gbddBznitJRls+he0ZhhC/qwsDAEMHSQy21l1JhC1Ulj1EFMLC6nMyhZBLOzTgardIdHIhbP7OXcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindowResizeIndicator.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF9JREFUKJFj+P//PwOx2NjYOJIkxUDalSTFQMxPkmIQnyTF0tLSASQpBtLOJCkGYlmSFGP4gZBiBQWFIJIUw+OBWMVALMkABHZAhg1MMQcHhxeQtoMp5uLi8obyJUF8ACitf5AUaj8yAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/empty.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABBJREFUeNpi+P//PwNAgAEACPwC/tuiTRYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/FIXME_ImageShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdNJREFUeNrt3EFPwkAQhuHdpYB403jx//89Y9SIiNAus8msTGtbjCFe5p3kS1tSDn0y3Wwv0+ScA/X3aiC4EmCMsZxvJGtJ0kQTr5VNOkkr+ZLs5O092g4seA+Se0VcShYa74CtgdtLniVPkncLuJLcSR4lt5Ibg5icItquO5Suk2z1t7fhGpj0eq14GwVsHL/G9dU9aiPV82rSA4x609Jkpfckc48nvKDdVp+/4i3GAGsX1nWvMfHcgRWvNTZpqgNr0sTR6xqYBjuTyX1gHNm6eN/KxJFj/O1GOl649rAGzj4/XyJ8ygEIIIAUgAACCCAFIIAAAkgBCCCAAFIAAggggBSAAAIIIAUggAACSAEIIIAAUgACCCCAFIAAAgggBSCAAAIIIAUggAACSAEIIIAAUgACCCCA1PUA84Vrb5UvAeZBwuDcI1ge4PU8mgm8LvRHv5Wj5wmWnUme68A6L7TkGM7DB5Pj17ZTi9bkG3LYgXXYaslCf28DAxjrBN+DwfwB2OkNewWzw1e9z1CtjfWpOYwBVuUP07Z24KrnNbAuaQVvp07tELCovugfVgbPY/fNdWHBe9XzHuBeAbeBMfBhZnvXmqXuDFjmwmubUnzK/V+dAO2XkLvQMyBAAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/GenericFile.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFW0lEQVR4Ae2bPUhsRxTHZ11X12/UKCpEiDba+dWksbFPLeneexYpgggvXUACNkEwsX+VH4UQsBBSCmktg00I8gKKnU8xUfzY1c353ezxLebtvWfXe90vB45z986ZmXP+5z9n5q53Yy64xEQlLtKQrYN7PE3jTrrfiFBHXuoNM2S2t7e/mpyc/P7i4qLOoG9WyWQyLp1Ou1QqlSvp09PT3/f29n5ZWVn5TQYDjMhKEABEP3F9fT3c29s70draGroh9/f3D87f3t66m5sb19XVNdXT0/P1yMjIu6WlpR8ODw/PQp84O2AQAKglz8/PkxiGRFHu7u4cQMAIZUV9fX3T8PDw/OLiYvPc3Nx3Mu95FHNbKB0XilqAKtq+eDzuEHHaJRIJTxgMRgwODs6tra39JB87ip7Ap6MFAJ/u4TWp89QIgMCGy8tLNzo6+np9fT0SEMwAxGIxF7XgtDIAEOrq6pzkHy9RTk1NRQKCGYDwYu0/Uu5SAADyw9XVlWtra3Pj4+Ohg2AGIOro6/g4rcuAmvsKQEdHhweC5ISfBcZQcoIJAIlKRg2MuoYfgKBMoAaA5uZmBwDIxMTEq7BAMAHgT9pwWxVgZQIAcFCi5hzS3t7uCSBsbGw8mQllBQDOa1EgWAZ6RgAUQIAFADE2NvZkEMwAqEFR1jjP+DiqovPBAAo1AHR3d7vOzk5ywqvNzc2it8hIDziexQX8wVktuY7DgP39fe9cwDZJaWho8EBqaWkhJ7ze2trKzM7OvpWmgk6MZgDUIG/2CP9w+NG5iDYO88C0s7Pj5EjuXaOTTCYdzsOG/v5+19fX90Zygpufn397dnZmBsG0BISOz7YLqPMsAQAg0k1NTTwgOXlA8mgP9dkV0OWgdHx87A4ODjgrvFleXv5R4tMi8pFOPgEzM8BnjFCbFACNPpHmEETUGxsbPQaoDjVAkSjRhykDAwPfrK6uvl9YWFgVw9IiGT8Dyw4AjMUxjT40JwfABB6OcpcIevpZ+7FkhoaGvp2Zmfl1d3f3D7n/dADEmIclwERRFpyiAAARpxBhgOBYjMO6Q9CmW2TuI7X0G5yenv5SAPgTFfTyFTMDMEyNyzdYWPdxUOfjmuhDby3aRg0gOE87wnXWzs9EHwQ/dtQBcuqyBEDtgwUAQJSVDdqWddL7CAicFgGAOssQ/Q4TSuVdBmYAdOLnqNU5jTAOPS7apvcBCwAUNMkFOP7/jtohW5sAwAAmVMMejRHJx9y5iPCnSq4O7WojOQPhFn/8igkABlAQ/AaLqu2xo/nmyVLfcz7LgHyqD/cDKYKmGPDpEDwMUz4XgMBWmGVAoGFmBii9AkcsAwWcFyAC6Y+pJgaUgU8FmUCwBAQTa00M0PVvXYsFWRuBctZOEwNMAGBjJS2BQgJlBkBBiCBgJR2yKnNAIYhWLQCSt8JNgqBKMqyUYrW1cjyKCPmXJBgRsCUfVrbC8HNAIftrqRF4yQHGCNR8DjABoHtqJS0BIwGq82nQ6jx6NX8OqHkArDnAY1Ul5YCa3wZDPQhpUqkkBqjNQXXN54CaB8CUBJVGL0tAkaiiuuaXwAsAVcTmolyxMIDXY0zfrhRlQYk7WQAosYnRTl+1AOh3GEHwmc4B+mBRSecAtTkIgKplQJDj2m4CQCJv0tNBy6G22mxZApkPUo6Ojv6SV9AS8sKS6f/upQKBHUtekUmdnJx8EBt8X5LExiBnaOfnop+LfCHCy4f/vbgvF2Va+M0xzr8XORK5EMm7jQcBIH0dL+i3ibSL8OZluS8Hos5PXP8W+UckJZK3WABAB6eJvEU/72TP2EDEYQJg5I3+M9pTvlP9C04LfFSu/LkzAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUDTheme/WindowClose.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzZENjA2MTc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzZENjA2MDc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0eKROgAAAlxJREFUeNq0lM2LUmEUxr3qpDg2w5hfGTONobaoUYkICZnBFiGtyiaImZ1/gZtcuInoD3Dvol07Wyu6ioRahUJtLJJyIePXojTN1NvzyLkiFcymLvy4556P5z3ve+69iqqqun9xKf9VKBQKrdfr9fvT6fQq2KHPaDR+Ae8CgcCLWq02PE1IcTqd4X6/n5zNZnz+Cn5IzAQ2DAaDzmazPWu321U8q38TUlwu100kHMM+AV3wDfyU+Bo4C+zgvMPheI7ciiam11Ti8fhWt9u9C/MT+Ag+g5aInohN3wfGe73evUQiYVvuhR0BPbZEkUfgAbhdrVbVYrH40mKx7JNSqfSKPsbAIXPtdvtD1lLDKHrG4XB4UVblllR0997tdu/n8/nHTMBCUfrkzJhjGo1GbtaCibY1A6Yzx70vBzw6Ojp60mw233o8nluENn2IjeXs+pPJZCpCy470iqJwpGS0GJHJ1MWEZtoR0KZPRHh9F/SrU1tH63c6nU4TdoeOSqWSt1qt4Uaj8YbPXq83MhgMqtFo9FCEMDjHNiZXgD3QtqYGg0GupgC2q1Ck1Wq9TiaTTwlt+iRn8Ur4/f4ebvPVqZ0pl8s7SDyA6xIbADdABASEiPh2GTebzQeFQmGXtYtdaeMHG5lM5hqS9sAFwQW2BNeKfy+dTl9HzaY2fk2IrAF7LpcL+3y+K1K4yfMTaLsYy2azYeQ6tG5+F+LBm8A5jNqXSqXCsVjsMoq3CW36GOOCkqto9X98tPJKmKULs3xjOjngsbwiYxmKetr/SC+CxpXvcS7F0+WkVq5fAgwAsK9LC3k6I+YAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUDTheme/WindowCloseActive.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzZENjA2OTc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzZENjA2ODc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ehr59QAAAxVJREFUeNqsVEtLG2EUnVdeJiYmJDG2kgS0TUkUobiToghCXdUSspAqdutj51ZXunUndluQ0oV2U7rISukPsCA2GGktMaYk1DTvSTLJzKTnykzQrh345pu5r7n3nPMN2+l0mIe4OOaBLoFup6en+jtLa2try3Z0dBRttVqRdrvtJ4fBYEgbjcbE9PT0p83NzRpMHW0xY2NjDEujaYVYi8UixGKx5+l0+i3P8xwSaxzHtcipqqoRhW2Koqh+v//9wcHBt0ajIVOxe4X6+vr42dnZF7lc7o3NZiu4XK4KbBI6UagQOuNLpZKpUCjYa7Wau7+//0M8Hv8Km0KFBH2mjY0NF4rM9fb2Xg8ODpYDgYDqdrt5s9lM4zLNZlPO5/PS1dVVNZPJiNlsdm57e/v72tran9txNNa4YDD4GsHhoaGhGyxmfX39XaVSSZ6fn3+mgHA4/AofCe3s7CxfXl52sLwY/Rdg+EiT6x0JoigGnE7njc/nq3k8Hifa/22325+NjIyYKcBqtQbJ5vV6KbaI7hiM6dMIa+n087IsqyaTqYhkEUs5OTn5gsQsFdCK5MiGrlT46xi5BPBlnXm9I5DDiWi1jiQFYNeRUGVZtqtWPKtkA+gUIwmCIMNW17XYFSQFwSmhWBN7IxKJxJDwCDhlaNEz2cinxUhgtXpPkKQFYJFPpVKMJEn1YrEoYsxAuVz+cXZ2FqeA0dHRlw6H4wn5AEMdOFmHh4f/EtB3WTMeHx8/Xl1dfQrnDajvgT2ALq0DAwMNCgDdlmq1KgKCFOhvJBIJz+7u7s+ZmZlrAlvvSJ6YmCguLi6WDw8PjShQAnsSdk4XJJ55gKtCaw1oybawsFCdnJwsUG63I1J2KBQy4t0F6fv39/cVJJahrTYUflsIVPMY3YCuHNFolF9aWroG2IVkMindUzbobOOLpfn5eWVqasq1t7fnuLi4aKIwMcOMj4/34GPmlZWVGsYt4uxVAHqry+qdQ0unmNUIIBFatd2gxbbppGCJ2i4jr3v6hbv/FM3RhoPGkbSiukRUDQ8qoP7/P/onwAD1HZ96Rg2qRQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/minus_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAECAIAAADXmFKkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUeNpiYKAHYPz//z9+FQABBgBgSgL/1o3U+QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/plus_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAMCAYAAAC0qUeeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpi/P//PwMyYGRkhAsA5RiR5ZgYSAC0Uwxy0/+BdwYLlqBjQAo6VMVQdyOD/2h+ooeb0QXQ3YkMAAIMAKADEhQiIamgAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUWMPtl1EKwCAMQ3OeHc+7+539TNC6QZWWfMxBYCjSh6YRQRJK4QDYgVIKe6UD2IJPUZLk21y00BdsRd/+M74BoAKswATQxqN1ACYAqQekXSDPgdUF0YDY2bbII8Kq0SJNOgBchEsWwLvO6gB8BpHEA9IukOdAVsJ5QZGZ856jQtaN5zHrAADEygLY+QOwHUQpHpB2gTwHfv84vQHcG1BmjzmkMgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider_button_h.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ5JREFUWMPtl1EKgCAQROci3cl79rcXtAwE3YysdpmPVngQSvjAcSLknMEEIaBHSim3wHvoDQsicjBaswbthnXT0bMHncC6x6GgBeq8NSFwEqBmgHoL6D3wtTdciugOyyPC06BZhrQTWARTaIHZ9zQhcFlElAxQbwG9B+iF5dnzM0cFry/eTFg7AcAWLaDXQ+B1EblkgHoL6D3w+5/TDQIL6kKVaIANAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/standardApplicationIcon.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAM31JREFUeNrsXQd4VFXaPpmZJNPLnTs1jRIUERtiaCoEWKQoJaEJJIqhBsVC1RWxrO6669pd3fq77q6666pr76hIh5BAQgglkAbpCSQZAqTMf8+dc29uJpGamTPle/N8j5MhJmfOPefrJcLtdiMAABCeiAAGAAAAAwAAAMAAAAAAMAAAAAAMAAAAAAMAAADAAAAAADAAAAAADOCC/0BEBOwyAOAD9MTdpc4AfvfRVniSgYVeHBXBNvgHq6YMo8oAZPAIABIYOcoh/wWEARSwBWEvgSIk2tgD/eIchkOl5Q9w7z8heR8cRSEK0AAAwjmQcyrl/GgDg79/4P7n/88M5wMYgB/gBqJERPrjM6B46p2v73FY2XhFZBSyW8wG1hGTQjREmefnYL98Q2FuAkAUkjrkHEVFKdWPmsxm/g0DY0ZRlVWPci/fIT9zFp4TaACAEMLqqcMjyOWPXPWHd6fZWCYuWqXmpZJKrUb4+5WvviNoAXLy8wBgAIBQk/5GszXTaGY7/QP+3mSxLeVeRpOfAwADAISQ9Ocdf8t+88fRNqtliEaj62Sa4u/x+9y/Jwu+ANACgAEAQkz6O3v3W8WybLc/wDAMssTEz8FmAmgBwAAAoSX9FamZa/vpDYYhar2xW/+01sggs8Wagn9O0AJgB4EB9DAgFEQh7ISfe9Q1w0eusbLmcz4du5VFVyeNwL6AqA4zAPYRwoA9df0hvORvYA1AMXP5o33NZkuqyWI75w9rjWak0hlnjJg049ebP3vvDPdWG/fM4KmBBgAINqyZNkJQ/6OuumnEwzYre14JJZfLUK84p3bktLmZxBcgI78HAAwAEIzSn5PmVqVae5vOZL6g/wknBmkNxpnIExJUkN8DAAYACELpH4mleUKsUyuXyS/ITFUoolCsw+5c+erbaaAFAAMABLH0Hzl1jlXPmDNMrOWiXFV8YpDVsRB5nIEQEgQG0FMAT7CvSSr9h02YlhbvtOtk8ovz/+I0YSvL9F/y9GtCYpDc83thfyEKcDnXH/zJ/gKf+KMzsQs5uqRfwJgtyJ7QdzH38juOWpAnIgAADQAQqFibcrNY9LPy1XfS45wOZ1R09CX9Lq3BiEyMeey0xSshMQgYACDIpH80Y3OuMPIlv5eusuLQ4TXDk9cQX4CMMBgAMABAgEp/Pu33/uffnGK3mmOilGre7LpUMpqtyGBiUoZNSLEiCAkCAwAEh+1vtscuNjJsj/xCu9WCklPTcHpwJGgBwY0AcAKCF8kXeDj1FlH6L3nm9dF2K5uk1up65HcbzBZcKJTBvXyGo7MctbvhQYIGAAhM6W+L673EbLH0nNRQKJDTZtU9+NI/0gUtgDAcADAAQAA9W0XKktX9GIYZq9H3bKt/nB5stsc8hCAxCBgAIGDV/6irh41cY7WwvKnVk6RUqZHDZnHe99zfphItQA5aADAAQGCAT/udcd8jfVnWkmpkrT75I9ipyDrjFoEWAAzgMgDpoD1JEukfeeWgoZmekl/fADsVWcaUdNcjzw4iDID4AuA5QCrwhV5/8B37RPoPnzjdptLqZ+CGHr4Ep2GguH5X45DgLo5aER8RgIcAGgDA73hk+q2i9L916p2ZCbExOplc7lP5pWPMiLVYUqYtWSWkB4MfABgAgKL0l98y5U6rzmTOMJotftFibVYLumrwzUJikJwwIgAwAAAF6R81ePSkKThOj6W/PzgA7h6s1htmcGYHpAcDA7hoLwBQzzmT+MQfxmZfoTcxfnuCco7RxMfYtcMnpc4jWoDMw5DguYAT8HzXHxxGl41fzhgplvw++PI/+ZJflVrj1zXoTSzSM5YF3MtXkJgeDN2DQQMA+E0Q89Lf6lxhYFi/y7HI6GgUF+NwcgxI7BtIGBMAGADAx9KfT/td/KvXklnGxJf80tBm9QYGawGzESQGAQMA+F/623slrjZdZsOPyyGlRoNLhZMWPvmKOFAUtIDABpQDBzEenTlKlP6Lnnp1NL58OoOR6prMLIts8X2kfQPb4RmDBgDwsfS34pJflqXu08aDRnH14eSFD0HfQGAAAD88P8XUxSv5kl+13hgQi7JaLWjg0FFi30CiqQCAAQB8oP5HXj3k1jX40gVKaFtnNCOlRjtuyG3TIDEIGMB5vQBAl5ZAwhf9pC5bm8ip/ql82m+ArA0PFE3gB4rOEfsGehgWPDdIBPK+/uAfumism5UsSv8+A2+cxxLbP5Bg5PsGmr36BkJiEGgAgJ6Ap+R30gy+6OdCp/z69WDJcd9Ai275838XE4MI4wIAAwD0hPQfcfvMZb3jYnQKPOcvALVbPceY8DASBIlBwADAB9Cjtj8/6UdnYjL0DBuwhwvXI1jMJmfG+hdGEy1A7mFg8BzBBwA+gIvGY7NHiyW/97/wVprDatFF8A0/AncTcd9AR58rVyIYKAoaAKBHwCf+GC32lXrGHPCL1RmNiDWbk+ateUbsG0gYGQAYAOAipT9f8stJ//T4GP+X/F4qLBYWxSYOWAq+AGAA4APogYYfBtayyIA9/0GydJwYxFrYlCkd6cHgBwgQHwB1BnA5k2rDhR6bPUYs+lnwxMvJFpbtH6lS8bZ/sHxxa0aJ1yfNFZyB+DPBswUNAHCRtr8toe9qhmWDbvFaTmPBiUFDx8NYcTABABeM9Xd2kv6jHTZrkjZAin4uBnigaKzDqh085vbJhAHIyGcD0HwugeEDAFyI9Dc7Y+eYGCZoQ6c6I4sYuxMPFP078qQHt8HzBx8A0LltRD7td8qilYlmsyVFY2CC9rAp1WqEG5be9/s3cXowHxFYf+fYCPABgAkA6AaPzxkrhv76Dx6x1m4LnIq/SyWd0YR0DAt9A0EDAFwAeOk/dclqvuRXb7YG/QdSarTIbrMmZTz+0ijBF0AYHQB8AIAO6f8LScnvDfMsFnPIpE0zDIOwP4N7uQGRvoFwDsAHANSN7T90QqoVh8+0RjZkDh32Y2B/xqR77hf7BoIPAEwAAMETczuk//BJ0z0lvwr/zPnzF2F/Bm5lRnwBMvKZAcAAAEhS8qvWGWfiJJpQS4BV476Bar5voAVBYlA4MwDIB5eSRPpH3fvc39JinXanXBEZch9VLpOj+LgY7Yg7ZmQi0jHI89mhFiCsnIBQG94tSNGPfaXRzIbshzSYWKTSGmci6BsIJgAAoSfnjRNUf8Wy5/6WHh/rcEYpVSEr/eSRCn6gaOZv/yr2DSR7AAAGENbSP1pvYmdrjaaQV4ANZjMyWR3QNxB8AOFNRPLh5yGfv/6FZJvNkqRUaUP+o0dFq5GFNTnvXvf7ZKIFyD17AT4A8AGEqe1vi+uz2swP+ggP4L6B9oTEVciTGMQXCcG5ABMgbPBU2m1iye/sFU8Nxj30VHpDUDX8uJwvrcGIDAZD0sT5yxOJUJKRPQGACRA2aiAf+otNvHIpnvIbbltgsVjQgKSbxcSg8DkboAEAPEkwkXcseDDRzFpSAnHSj8/NANaK9EYmZfDYO6zEFwAaQDgwgHDP+X8qbbxY8nvFjcPX2qw2arKota2NJ1p/326zouG3zxITg/DeQC0AaADhIP0VN42bYtUbTKk6PvHH/9evtbUFZe/Y1ooJv6bSK4Bhkc7IZOC9QJAeDD6AUKdfpY+XFP3MyHTghh+UllNdWYlyNn5Vhqm2uprKGvCMwxiHVXtj8sTJghbg2SPwAfgKEAYMAOk/5LZpVo2BydAxdEJ/bZzaX1Zc1PrT/94uVev0iuETp/ey2R1U1oL7BhqtnfsGQkgQTICQw9N3TRCl/9CJ0zN7x8fq5AoFFRlUU1ONjubnVJ9qPNlcc7y0MW/7xvKamhoqa4lWq5HTbnVmPPnqFKIFyMleAYABhBz4tF+VVj9La2SoqaFY5f/hvTcLuG/OYNr+5QeFtdVV1NZjYMzIbI9ZhCA9GHwAoUhEovGe/6XP/jktLoZeyW9tdQ3K37mptPpYcQ33ThOmkoLciqIDeTVNjY1U1qTS6Pi+gXc9yqcH84lBnj0DHwD4AEJM+uvNtpV6hqV2FGo46b/9yw/3cS8bODpN3lbm7/ipsP/1N7EarY7KuoycFsDYY3DfQGGseDv4AsAECHo8c/dEseR3yW/+nJ4Q63RGKdVU1nKivh4VH8qvKsrPKea+reWoGvMEjuq3fPLvPWVFR1xnzpymsjaNwYRwUtTE+cvFvoFwesAECBWVj5f+OhMzW2MwUstCwXb+1k//k4V5gYQBVBEm0JC3ZcM+3hdAaX04MajfDUOEseIyD/MEEyCkGEA4Xf1n7p4klvymPfpcss1mS4pWa6msxXXKhSrLy1z7tv1wiDAA4fILDKB+2xfv7z1WVtpCKztQZWCQSqufMfgXk8W+gXD9Q00DCL/2b56S39jeqzkVl9q2Y89/1ref7OZeNuLLTi69QFgbONF0oq627MC+ktqaajpOErkc9YqL0w6dMF1MD/41ZqLAAcAHEGz49XxR+ivGpy+7wmAwJql0BiprOXv2LML2/aaP3tlDnH8nCNURZoDpJP63H/775lY+M5AScGGUWmfAfQOjEaQHgw8gFEp++9908xqLleXMXDcVwnb94T07DhHpf5Jc/pOEGQiEv2+sKC6sOHb0YGV9XR2VtcoUuG+g3bnomTfEvoEeZgoqQGj4AMJs0s/E+ffzJb8GSnP+WltbUVlJccuP77+1S8IA8H9xDoCLUJOUCWz99L2dtMwADANjQXqzdSGSJAZBNSCYAEGD39xzu9jr/4pBQ9fabPSGfGJ1fv/2jfmcfV8nkfqYAZxCnjyA0+S1wAQasKOw6niZ65TLRWXNkUoVslks/eeufVZIDJKTPQVcJmA4qH/AS3/c7CJapb5NpWeocf+62hq0e8OneRLp30CkPr74Z8laT5P3BHOgift/smIS+twap9ZQWbeJxX0D++C+gUJiUBsMFA0FEyDE6Tf33CEW/SRNSM2Mj4/TyuUyKqupqixHBdnbjnB2fTm5/IL630wufxu2EsjrU+TfeA1hz8av91dWHGuh1StArTMgvcGYNC49U0wMwnsLHoBgNwFC3/fnKfkdn2LVGpgMo5lu6O/H997c7mX744t+hlx8zADaiYQ9I9UCGutr6wq2/7SPZkQA9w3sf6NX30DgABAFCFR6NqND+t+QPDEtIdahQzI5ldXU19ehY0cOVlWWHKmQOvgkDKBd8kBayXunpMwia8OnudiEoDZEhO8baEwZNHqSpG8gcABwAgY2+MQfrZFZqDWaqbmb6zjJve2L93dILn8DcfSdFqT/mr9+7MYk0QI6+QIqOdPhQPa2wnqOCdD6HA67DQ2dmComBj2bMRmcgUHtAwjRsB85mHzJ74KnX0+Pi3E6FVHRVPYYe+/Ljh4+kb/th8Ju1H/B9peGpgQtQGAA4v+zb8v3+XW1tdTOi9bEIo3BfA+SJAZBGBA0gECW/tFGi32FUPJLq+NP7ubvciUX+aRE+vNTeVf/5WPv49hGtIBm8rONPAPY9sOhY0cL610cU6HxWXDXpBi7TZfx5GtiYtBvF4AWAD6AACJyIPm037vXvzjFabXEREarqCwHS/9jRYWuLZ+8myNR/5sktn+b5yc7/qfVf/lIMAMEX0CTxGxozNvybS6txqGYcHqw0Wp/CHXqGAQ+ADABAkut421/o8Wx2DPog1a7ryq0e8Nn2ZKQnlT68402Vv35I/fPfIY2oiE0S5hA4+aP380p45jK2bNnqHymaJUKOe02513rXphKtAD5bxdMiQATAEwA6vjdwimi9J+z9tnRDrstSanVUbn+La2tqLL8eMven74p8LL9XZLQX7fHEDMFCQOQ+gJ452Hh3l0HcXowLbmp55iqyeaEvoFgAgRsw48oa1yvVQye80cJNVWVqGAHn/Zb6yX9mzuk///c5/ksAhOQJgY1bPrfP7M8jUPpADNVlmWSUu97dBDZb5mH+YIJABoANek/VZT+t6Vn9jMYDEOUWiO1s4Uv6KaP3s5CXdN+zxAGcM4T6GEOYkhQMAN4PwBmKoV7swqrKyqofT6WtSJHnyuXghYAPoBAsuf4op9+Nwxfgw8orZHbOO33MHdBifTvLu23/UL2XxISFLQAMYlo4wf/2FbDMRlan1FtZPi+gePSxPTgCPABgAlAU53j034nzF/e18yaUw2UO/5s/OCt7V6hP6HiD1/o9pV/+tB9vs/k+RmeWXg7AxsqSwrLjx89VNnY0EDtc+LKysTrbloqOAOfWzQ1AkwAMAH8jucWTRNLfnsPvDHTZrNRO1O40reoYG9ZVUfab4Mk9Ccm/lwEpCFBqS+gae9PX+/1NA6l81lxZSXuG0jSg6FjEJgAdBt+4IOoVGtnKvUmaqox9s5nf/+5NO4vOP8Ez3/7ij9+6L5INdVbC+AZy+4Nn+2rKC1xuVxNVD6rTC5DcbEx2kFj7phHtAAZZsZgAoAG4Df8frEo/SNvum1aZu8EXPJLxyeF1fGigryq/ds3HvYK/TWjjsSfiwJmFqhzZmCnXgHZP3y2m2bHIJxnoTWaFxBnIGgB4AOgYvvLbxo31aoxmDJ0Znqhv9qaKoTV8m48/0Lor23FHz9wX6Kt2l1IsDF307f7q8qPteApwzSAayziY53Oe558VUwP9jBl8AGABuBz6Z8i2v4DR4yZgvPUIyIU1NJ+Kzl1nFP/81HXkt9Lsf0lWsAHP1cleBJHGorydh+uo5gerDexSMdYIDEIfAD00n71ZtsKLaeO0rL9cUhu9/efZ0ttdOSV+PPQGx+4L+OzCqaA0CxE1AK2ffH+LpohQYVSiawWtv+slb8SB4pi5gw+ADABfEbPL0kRS37nP/FKeq84pzNaRWfOH+72W82p4ds++88e1Lnm3yvt99I/70NvvC/1BZyWMhoccSg+kFt6or6O2kkycaYXG5OwGAVVkRCYAMEOXvobLJz0N7LUzlFNZSUq2LU5H3Ut+ZVI//fdPcSxW1HXxqGNOT98kUPTDFDrjMjEMGPHzlkEA0XBBPAtPb8kVUz7nbXqmWSWYWIUShWVs49n9x0rKWrZ8tE7u7qR/mcF6d+DKqt3rwCeAeDIw7Eier0CMFktNtRv0HCxbyB+TmACgAngK9WNl/6WmITVBoaltpa6mip0rHB/SdNJsehHavvzab8Pvv5fd0/8Lc/v6ZQY5JI6HPdt/T4XRyJo7YXaaEKcGTbuupHjJYlBYAKACdCDeGHpdIn0f3q002FL0uppFv1Uo03/+9c21H2v/1bU0fCzJyHtFdDhDPzsPznYF9Ha0kplL+QyOUqIj9cmjU8R0oNl5HkBwAToec8/Y49bglt905IfOAHnYM6OI1Xdd/vt0u+vJ+iBP/zX2xnYKTGoYNeWfdVVlfR6BZhZpNabMlAQ9A0EDSA41X9e+o+du7ifiTGNVWr11NbCd/z57pMc1H3DD77P/wN/eM/tI9W1u/qAxi0fv72rtrqS2p5EcFpAjMOmS3/sRTEx6MXM6RFgAoAJcNl4MXOGmPabeP3QNXzRDyXgkFtpYUFVcX5OsZfzTzrpxyfwMJUuiUH833edrK89kre7sI5yerCBta1AkBgEDKCHwRf9jEtflmhm2VStyUJNfcS2/66vPtyFOjft7JT2Sy6qL9U3qTNQ0EKasr/7NLuGWx+tvYlSqnFikHP6g0+MJlqAnDBvAPgALo2k0r/X1YMyrRSlP077rS4/5irYuekw6tzww2e2vzfd/9p73fUK4H0BRZxWUna4oNLV1Ehtj3Ardmt835UogMeKgwYQhA0/rh81wabUaGeo9CZ6tn9NFdrz4xe7vTz/nbr93v/af9x+2JP2brQA3hdwOGdbAR4lRmuPtHoDspiZpMlL14p9A19aNiMCfABgAlw0Xlo2U5T+N/5iSmbv+DidDM/5oyA1zp45i44XH3Ft//y/3mm/0kGf/jxd7d2HBN/Lxus8ffo0NQnLWKzI0bsf9A0EE6BHGn7wk35wiEnL0Cz5rUZHcrMOdSP9xbTf5a/+x+2PfcF/p5uQoLimgh0/5dGcKKwxMIgxW1JG37k4IPsGggYQBKr/y/eK0j8Kh5ZiHTZdhExBZbdaW1vQ8ZKjLVs/eXcXOmevf7+rsUKVYKchIlnffry3oqyYWq8ADKvVgnpdfd1cwRnoeZ5gAoAJcHHgE390ZstKDcWSXxz3P5i1Jd91ki+7E8d1SWz/tuWv/tuvJ4v8PcEXIJ0lyIcEjxceKME+C1p7puS0AA2ntV03agL0DQQT4OLo5XtniSW/aeteTE+IjXVGK9XUBEZdTS3as/GrPPTzab9uSqpsd+3Deea0+eO3t9ZW0asSVMgVKCE+TnvdyAnzCAOQ4ecKJgCYABeqonmkv8m8SGtiqO1UNd/rf8eR6tKj5aj7Xv9ttPb0vlfelYYEpb0CGrn1VpQcpNsrAPsCuGeH+wZGo4DqFQAmQMDilftmi0U/0x96MpmzJfsrolUU1f9qtOWjt7d72f5Sz387uYi0IJgBp5HXEJG9P361h6YZII+KQgmxMc60dS+kCREB8nzBBACc3/ZnYxJW444ztATFybo6VF50qKq6rKi7op8zyDcVf5eC7iYKNxzYtelQTfkxF05gotYwBPsCjMxsBCFB8AGcj6TSP/XBJ0c7bLYklc5IbZ9w6C/rm493oM5x/yaJ7d9278vvumnuGf77XlpAp4nCezd+nUUzJBit0iC71ZbEPc9Rgi8AP2fwAYAP4Jy2v8nqmGNgzNRWgjvsHC86fIKTooXdqP9Ubf+LmSi844v/5lSXl7W0tLZQW53RbEb4eaKA6RsIJkCggk/7HT1ncSLDsim89KckJuqqq9D+7RtzUdd+f6fJRWu/9+V33IGwaWQd3bUP57WAQ7u37qvjR4nR2Uv8HPHzHDUzA/oGggnQPb26/E4x9Nf7msFr7TY7tf3BNvOx4iOunV++Lx311SSx/dsQpdDfBYQEu50liEOZNIGfZ9/rh4p9A/HzBhMATADkXfQzZu4SvuRXbWIpdvypQrk/fZUtuURS6c+n/S576W13IO2fZz1dEoN4zQWHBAv37ijERUK0Vhitx30DVeOuHTnegqj3DQQTIKDw2v1zxKKfuCsHzrNY6I34xmm/uL9e/tbvC9A5034DEm7CoIQqQTEv4MDOTfvq62rohXXkcpSQEK8dNOb2TEQ6BpHnDiYAwCP9rxs10YqLfvD4aVq6NO71z9nMOO231kv6N3eW/oEHiRbQpUrwwK5Nh0sO5Fe5Ghuo7a3WaEZKrX4mkvQNBAZAxQfgDhiSSv/rkycu65MQp5MrFPTU/+pKtP3z97JQ17TfM4QBuANp/7yJMADpKDExPbhwz479NM0AmSISxTmdzjsf/l2aVAugsEegAQSY9Cclv8YMbPvTAk77LdqXU0ikf3dpv+1BsqfdJQY1Yqcm7hXQcvYstYXh7sEG1hrWfQOBARD84YG5YsnvnF8+lxbrsFOb8ssX/VRXo62fvitN+z1JPOpir//MF//lDuQ9JevrbpYgb8oU78s+WMuHBOnssSJKjaws65y2/LFkogXIyTkIGyhoL8AdWEeYFP1YVqqNnpJfGsCVviUH8spqOtJ+hay/Lv3+glALEH0B2Lzpe/2wgazNHokdczSgY1hkjum1inu5QdjbINrXUNAA6IetXn9wrhj3v/OR59IT4mKoTfnF4EN/m76Rxv0F559Y9LP0hX+6A7+S0o086xQTg5qlvgBs3pQfLSip40eJ0YFGb0RGgz7p1hnzE4lAlHnOA4QBww289NcYTLPVBhO1RTQ1nEQlB/OrDmVtPow6h/6aUUfiT7DBu1dAhxbw6b+31VGsD8BgrTbU97ohYmIQ+ADCSP6//uA8sehn6vL1yXabLSlSqaHmOa/hbOL8rd/vRV09/2Kv/yWcVA2mXspLOrSALlWC1WVF5eXFhZWNHOOjtec6xoLMFkvKqNkLE4kvICI85H8gcLvAaMnCq/+sM241w9JL/MFpv5VlJa68n77OR+eY8xekAxW9ewWIQ0T2b92wl3cGUoSFZVHcFQPnEQYgewMLhjDIBQ5rE+CNh9JE6T9hwYrBLMsmRWsN1NaDbeG8Td9kS7zlXbr9Lnn+H8HsohIiAp2qBHN/+joPMz6+VwAl4L6BOPR7zS3jwqpvIPgASOjPlpC4lGGt1ARka2sbqi4/3pL19Yfevf6DIe33vCCMS1ol2KlIiGN8u3GVIK39l8sjUazTqR0wfPRkUQvwCIiQRgCEAameafyAI0fOWsCX/Hqcf3TW42pqQDXHiyv6DxlpilKpz6q1BrfWZFbrWZtdozc2K7W6szKZ3O0O4hjVwt/9X0R7a6vsVOPJ6Kb6Wm1DXTXjOlFrb25qtLacbm5obaPL49RGBunN1oe4l39HYkgwtGOCEb7+gBER52aii3//FpUP/scV6RGEAarvfur1vw64emAqzcw/jMYT9ehMYx0KS0TIkVJv4sd50URNWRHKzd614P3n1/2baCpt3Bl1+/AcUhWeChS+4BnAQM7m0xkMqSpS8ksTcU4bsut7heXDaG13o0NVDdSfgZY7B0aLfRH38n/EXGkL5X2nbwJQ+Jt/8kh/vujnuuRJmXa7IyCs63rXWZ4A9BCt1iK73Z405b51oz565akvMW/ipHT7Ih9qAWHNACiFQnjpf82tt1nVOkMGtv2C2L8G6GEYTQwyWOy4b+AGogW0oxD1BYRdFOBPK+/qkP6jJmb27ZWgkysig2pIOZDvOwaZzZYUaXpwqN6HcA0D8iW/So12VjTFtF9A4IIzA1DCgBuEseIyIjiAAfS8BeC/lE/yEPmsv5mrf5MWGxPjlMujQOQBdaEonQn7A2YMvPkXYt9AaAgSQtJfx7ArcSmoG77gq5svmVyGevdK0F7LmYmIJAb9edXdEaABBCnIw8OXX8FJ//Re8XFOPOcPAPg5qIwMUml1Id03MNw0AF7645JfJafigaoLdC7C5mFcbKxzxqpfp4WqFhAWqcB/WT1f8PzL71j2y2SbzZYUpdKAiAOcFzoTi7Qm80IUounB4aQB8A0/zA5PyS9YufB1QWPFo5XIZrX2v33pw8lEYMqJQAEGEAyQSH/FiJT0KwwGY1KU1oAAgAuF0WxBbEwC7hsYch2DQn42oORzRvW+5qY1rNUK9i3QRZGSExh6TnCMmJYuDhTFggVmA/YMC/AxedJ+b5k+H8/5S9EyVjjTQBdNWHD0vnawV99AaAoa0PjrmnvEXv8JVw9aa7Pb4SgDXRLhvoE6gyllwLDRVhIRCAk/QKj7AHjpf/WIsdYopeo2nN0FAFwqHA47ujZ5kpgYRARMUCNkw4B/W5shFv1cM3J8Jp4GK5PJkRuK/gCXCKXBjFQ6wz0DRox9LX/zt6XcW+3uII8JhrIGQEp+x1tVOmMGVuEAgMuSlgrcN9Ch6z9kpNg3kAga0AACCVLpf9Ww5LTe8XE6JJMjqPkHXC40RnOXvoGgAQQm+MQftd64UKVnwI8F1DNVgko1inE4nFOWr59CtAB5MGsBIecD+L+HF4glv6krnk6Pj411yqKiQfYDeloLwH0DP0Skb2CwugJCVQPgi360jGWFhnKnX0DoIVqjQ3iIzJj0e28kQlRGBA9oADRBHgKf9otVtBiHLUYRrQTbH9DjMFusyJaQuIR7uRMJfQNBAwgc259T0RZrDGxQjtEDCnxS6hnEsJaUESlienAEMIBL9AH0BEml/8Qla0fj1s7RGi2IKoDPYLPZUWz/63DfQN4ZiM8gtAQLAOnPOOJWmVgrnFCAT4EzS5Vq7Yyrho8J2oGiIcEA3nxkoSj9h09L72cwGIZEaXQI4lZAviS5XIZwhumA4WPEseLkLIITkBIzi0oYOGgNa7FByi/AL1DrGaQxmBZwL19BnsSgdhREXudQyQPg035vTp3fl2HMqVrKab/HS4sQHnUN8D0YixU5YhPOO4TWZzZnVDTCuSbTHnwq7cMX1v2Fe6uV0wLcdz39JzcwAD/g779cJJb8xl517cM2POePIpoaTqJDe3ad+PS1X+XA9fQ9bp5+T+KI22fEsjZ6zx3nmmiMDE4MegsFWXpwKPgAeOl/1bDR1qho1W2ROhNVy7C2pgod2PZ9MfLEhvFhOAPkE8J725K38YviWk7bovnM5dEqvm/g+IWrhL6BMiKYQAPwk/SPHHjr+MxevRK0cpmMWq+l5lMuVFVW3Hwoa3MZVgUJtaNAaf8SGoggxHd5PlFVfqbsYF6VzRlrNZgYaovCfQNN9tjF3MvvUBAlBgW7D8DT8OOWcValVp+hNdG1/euqK1H+5m8KsCXA0WlBShGVEBhAzzEAGTm7uD2Xcv+W7w72HjiIKgOI1hqQ0WQaO3Ty3H7bPv5XHvLUB7QBA/AR3np0sSj9EweNmBIb4yQlv3TQcvYMKi85eipv41f53LcNHDVydIqoq63AAHr83OLLr+ZIV7xvd2ttxbFBdmecWqWhN+/BarOjhIE3ruEYQAY+EtwZbU//1R/dwAB8Bz7xR8ewK9QGM9UbVltTjUr37ynkXtZzVIPf4ugkYQJBmyseoBoAjrnjuW56jrDYby3YumGPPb73sBhNH2oLU5tw30BjypVDRj18YPsPpcGg+QUlAyDSny/5nfrAk+m94uOdUSoVtb1ua2tDFaVFLXu++ySLMIAKjqrIaxcxBUAD6DlEEQZgIsxVfjhry/6BIycMtsXERuLOPbSA+wZeM3LCUo4BrCdagDuQtYBg9gHw0l9rYleoDAzV61VfXYXKDuQWnmo8gSV/HUfVHFWS1y5ySIEB9Bwiifp/VjDBub1XH927M98R1+s6qyOG2sJw30Dsj+JePkPWF9B9A4NOA/jHuiWiEwiHXSysOYb2lF+c9JO38cssovLXEaolGsAp8AH0uAmAmf9psqeYGeCqLz0ndfcOGJpMlQFg7SMuxqmbfN/69I9feeJP+NlzZ9ad9tQbbmAAPWz7m+yxq3GzT5o7W1NZjorys4/UHS8pJwwAX/oTyOMIxNEA7ARsD9QDEIzgLpSMXH58DpRkv434GXDPotDiiOlrNNNrBKPitACd2YL7Br6JAjwxSBZkD14q/Uc7nY4ktd5IXfpnf/3hdnLZT5KL7yIXvw0uv28sR2JWnSF73Uj2vfFozvb8E3U1dB0UKjWyWizOcRkPjSYaipycXWAAXZ/khX9Jpb/B6lhixDn/FLtCnKyrRVWlhVV15aUV5PKfRB3hP5Hzw4zdnv2a99Tr+DC0EyZwmjBfngEc2bP9UEXpkfpmVxPVs6FjWMQ441cSh6X8584BaAAXN0aNl/5Dp8ztZzQxYyM1errSv6YK7dv49U5y6U9K1P7T5HC2zXvydTdUzvqAPAyglWgBAgPwMIHdW3NxUhZNqHVGZGEtScnzlg0iDED2z3VLIwJsNGDwmAD/fGypmPgTP+CGNTjpgub5O+VyocqSIyeO7t1xmBy8bqU/wKdoI3vdLDHBGvd+/1lOdcXxlpbWFqpnhGGtiI3tvVSqBYAJcHneX8XwlLsSGbMlVU077bemEhVmb8v9GenPh3946Q/wCcjeCgzgtJcvoKk4L2tfPeWSbKWBQXgiNdZYUYB2DAqK8eBS6e/sd3WmzW6jumJsX1aUHHXl/vBZjoQBSFN/SQYY6Oq+tgMkTOCUhAE04JBgfW019dNtsVoRd2bnCs5Az1mG8eAd1/8CfCqC9L9yaLItSqWZEak1UXXwYPuSO2DZkst/0sv2b5/7xB/c0D3Xt4T3+OecgTgkWJyfU8j7Aiguku8bqNFncGdX7BvodbbBBDgX/rU+U5T+A0b8IrNP7146mVxOTeZguxLbl4ezNhd4SX8h9AdJP/5XIQVn4CnJM2kq2PJddh3tXgGKSNS7V4K2/9DkeYQByMiZBhPgImx/OXf5rSqdIUNtpDvpp7aqEhXn7spvbjxZK3H+NRFHlCj94V76BxItQOoM5M2A44fziyuKD1e6mhrp+gL0ZqTWG3HfwOhAcwYGNAOQSP+ovoOGUS/5FYt+NvBFP1LnnyD9IeefDtqJL8A7MaipND+74ARlX4A8KgolxMc771j+eBoiEYFA0QIC3Ano2T/EF/2Y+ZJfmqivqULVJYdLiPSXJv40o46OsOCco+sMlGoBfEiwsuSoC/droAmV3oTUOsNs1CkkCE7An/Wf/Gv9MrHk94771qdjDhqpVPXYJKFLIaz+Z3/z0XYv598p4oDi23/Nefw1cP75mfCeEwbg7QzkzbOyA7kH+b6BFM+OQqlGNrs9aVzGilEdvoBlEaABnEd7whxTbTAtoi39T9TWoJL9OUfqy0vLvWx/SPwJHAhmQLPEDGjgTLZd9ZQzAzFwC3ODxbEEBVBiUEAygLcfXyYW/XAcM9lms/WXUy75xQUmR/dsz0fdJ/6I0h/uIB2QvRfSgzuZAZzJVld2MK8Qm3A0EanWIyPDjL3p9tlCYpAMGMB5pL/RFrsad1yliZP1dejY4YKqor07D6HOab/NIP0DCkJI8KyXFtBYsHVDdiAMa8Ep7PEDBq0hWgC+fxFhzgA6O3Q6S/+HRjud9iTccZWu868S5W/6ahfqWvIrhP7a5jz+KmT+USbPM+gSEuSfV/nh/KKK4kOVrqYGqmcpWs+gKKVy3BVJtwbEQNGAcwJKpb/WbJujM7FUHUynmppQbcVxV1HuLmnRj8AAOkp+wRkXECQxA06jzunBTaX5OQX1NTVU1yeTyVFCr97aATePE8aKU9UCAtEE4NN+h0yem8iY2RSP9KcnVXDRz8EdP+5GP1/y237n+lfB9g88Z2CLty8g94fPsytLj7rOnmmmeqbUBgZFq3UzkScxSAEMgOCdJ+4VQ3+x/a9ba3fQnfOHY8eVpUWuvB+/2OMl/aHff4CCMON2CQNwoY5eAU1Fe3fm0fYFyBSRKD4u1jlp2bo02lpAoGkAvPQfOjUtkWHZVKWBbtpvXU01OnYg9zDqWvTTDNI/KLQAoUpQ7BWwf8u3e6uOlbTgrE6a0HKmLe5ojSiHBAPGCUikP1/0Y+9zxTxcRkkTra0tnPQ/2rL3+093oe5Lfon0B+dboNGd619xe/kCmgRfAM7irC4pLKEdEvQMFGWdY+c/kEy0ADkNLSAA5gJ0lv64bDJaY8jAJb80yyXrqqpQUd7ufEnab4OX9G+b/dgrAdzxPewhDQmekpgBjTnffbyVMzH7mq10TUytkUVGe9wq7uUGRCmcHBAmwLtP3idK//7DRi9L7NNbR3O6CwZuJnFo58Y89POJP3D1AxiYOaOOkGCnXgH15aUVNWVFlU0NJ6muEdcHGAyGpMGTZiWijsSgiLBjAKhj2EO0UmvIUPJpv/RUyJrK43jOn5D2213RDyT+BAe8Q4JiElfh7s17cISHtrlisdpR3IAbpIlB4aUBSKR/FPaKxsXEUC355dX/6iq057tORT/etn87kTCA4HEGduoVcHDHj/tqjpe6zp45TXVxGsaCzKwlJWny3ETiCwhLDYBP/NEYzSv5OX8UgdN+q8uOVtVXlFWgrt1+zyCY8huMZoCgBQi9AjA1FeXSDwliYIe3vU//eYhCSJA2AxDj/pOWPZreKyHOGalSU1XKcNrv/s3f7ECd4/5S279t9mMvg/c/+BuHNhZs+W5P1bFiPiRIc4WROhNS6XQZVySN9Ht6cCBoALz0V+lNi1R6M9Wz4mps4It+inN3FXaj/kPabxDSrHUvSxODhI5BPGPHEZ7jh/IP81oAxXOnkEeiWGestu+gEZP9rQXIKEt/vuhnzPwHk+2BUPJbW4NK9+ccQN13++U7/pADBQgueDcOFSMC+Zu/yaoLgF4BKqMZaRl+oKhf+wbS1gBIyW/MaoOZbuIP7vWP88T3bfwy+2ds/zYEob+ghJcW0Kk+AEd6Ko4eKD1ZX0t1jVFKNeqdEO+cmPmokB7sl8QgWgxAlP63zF58o4Vlk6K1ekS76OfQzo3ZqHM7KReSFP2A9A8ZLaBTfQD33Pd4MgPp+iuidUak0htn+1MLoKkB8KE/NrbXUsZio7r1uNd/bcXxFk7670HQ6z+U0d0swYbi3F2H6iqPu/C8R5rnUKHSIIfdnsSZxKOQnxKDaGoAkUl33Okp+dWbqJ6KuqoKVLIvK19yKLp0+5217iXw/AcxeZ5fp4nCLgmzx1pAVn0NfV+AwcwivdkyB/mpSEhG6fLzoT/nldeutVEu+RV6/ef+8HkWOkfJL1yhEAkIdtYCxMahR7K37q+pOEa9SjBKa0RGsyXlxokz/dI3kBYDUPS7aaRVqzOkRutZqqcCT5CtLjly/l7/cIOCnmY++pL3LEFxiAh+/uWH9x+qpxwSxOSwO1DMFdcIY8V9agbIKFx+T9HP8DGZTqeTusqFQ0C5Gz7Zhrq2+2om0r+dHBxAaDoDxZZh+zd/sysQQoIKrQlFa7TTOSFpQT5ODKLBABRXDBllVWr1GdEBMOmntGDPEUnar5D1d4pICSj6CTFItABprwD+2eMqQe48FOJ8EJqQy+Wob+8+WiwkkY8Tg2R+vvyk5HdMZj++5FdBVdfC3P7g9u9zUNeS3zMg/UNeCxAyAzs1Di3O3Zl/oq6aur0SbeC0ALXW530D/a0B8CW/USrNLIXeRHWLcdFPZfHhqorCgmIv9R9KfsNHC+iSGIRDglWlRfW0Q4IRctw3MM45YekjPu0b6C8GIHr+J2T+Mg03RJTJKTf8wEU/W749Z6//mY++CKG/0I0JeIcExXFvRXu35wZCSFBjYpHaYFqIfBgS9GdLMF76awzMyrLjxxHCRBFnTjW5SvKyDqPOnn+Y8xde6K5KsGHfxi9z+g8bPexEbXUk7QXKFZH9k9OXJ3//1stfkPX2aEp6hK+b2kVwEC4/R0aOcNJ/PEe9OYrjyMYRbv6vRL7PfxY8wJjj13GEO/4UcYTNgDKOashBkIz6BoQwIsi51HGEW1DHctSLEE5QwRlqGuSfEl03OXdYI8Uh6WOSs3mcnE0X0U75S9sTd1fhx42OJKqMipDUuSEMcvC15G2TbDLm9vUIev2HO6RVgvgcnCCkIec1AvmnXZdbIt1lkruiJK+FAqEePZ/+YgAyQgryIeSowxMrjGnxx1qwVD9NpHwt0QLqUEfiTwv5GWAA4YHunIEnyJlQkcvfQoSVzE/n8yzqqD5FkvsiRz5wBPrTBxDhpeo0E47bjjq8nP6w+aQMoBp11PyD9A9fJtAq0QwxA1CTuyGMGvfn8A7peHMpI4iQUFAyAEHin5bYOWfJhvurDZLAAFxE/a8hf1/q/AMGEJ5agOAMPEEEkptcRA3yb5OONq+1dHc2I3rqnPrLCRhJNhFzVj1xumiImuXzggcvFUvKhBpQt9N+AGGGCHIOleSM6sg5pXFGvf0SQpi6U4ia51w9cHf9GQVQECag7MaxEeFHBtCKOrLAmsl/W1CHdxUYQHgyAMFHFUXOqeCojpTY3/5Cm0QTkJ5TQRNoDzYGIN3gSC/HBvIjAxDUvTbCCARqR+D8AybgOaOCsFJIJL+/J/a4JWdSek7bpOc0WBiA9ILLJBsdQfFhuyUb2S55DwBMINDOqdvrvKJgZAAAAKCnuUMwMAAAABDAKg8wAAAAGAAAAAAGAAAAgAEAAABgAAAAABgAAAAABgAAAIABAAAAYAAAAAAYAAAACGL8vwADAE4ag0JarbF5AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/wheel_black.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAXUAAAF1CAYAAAAX/XrIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAIGNJREFUeNrt3XtclGXe+PF7mAMDDA46tiioJCQeUhfBA6kRmbaap/KQUiyiBSGiZpkaPY/bQVS0pBQF8/HcKoouJBhqHjZSyfVFaq2k9fx+2dbP51E8my/EcuZ3De2arScOc7jvez5/vLfcNcLvfc3nde0199xINptNApTo75WlPuVntrT67Fxex73nV/b45EJu7K6LWYO2X8wYVXLxzWdKLs1M/OjSa899dPnVFzb974sTS8Rft4lf7xD//a5Lb8bvFr/v0wtZT5SJf+6g+OcPia/z5dmiVsfF12W+UCqGAFn59MSHlhX7MmLeKByXMvbdR5f0m9xuZ5cRzb4K6el3NqC1rtrgr7FqDZKty0SvnyOFqElam11kmpetq/hrt3+SxNKuL/vX/xej+Pc1vV93Lfwhv7O9Rjb7apj4fqaI7+s98f1tEt/n5+L75bqBqMOjFXzxX2GzilPjn1vaN7vfa+Gl7YY3OuXf2uu63iTZ7BoSZFfTGX7h11hjDe1ivPh4QsvyKQseWfq++PPtEX9OrjeIOlTjE7GLnb1tYtzo93qt7p4WfPR33fVVOhFtncLC3dDg39dK+1P0E02+S3mj24ZVYh5fsLsHUYfclZ/+q98bWyfED8nsujl8dMBJg0Vj9ZR415VRzMVfzKePmNOLYl4rxdz+r5gf6whEHW6zrjwn/IU1Q2dFTWrxhX9br58IeMP4iPm1EHMcNbHFF/PFXPeULwlnnYGow2nyDy8PHbdq8JxOKc2OG4PELtwsWYmx8/iJ+f6upeb6CDHv+WLue8X8WYcg6miQGVuSx0bPCCvzDfP6WctO3O07+WBxHZ4X12PllqQk1ieIOu5pc8WakGeX989qNdx8yh5xduPyZBLXxR75viPMp+b91x+yDorrxvoFUUeNVeXZHQdmRa8zd9NXsRtX7i7+QXH9ZmY9tK5UXE/WNVGHh1ldnhPeN7PrZlOErpqQq4uvuJ5txXV9bX63/L3iOrPeiTpUaseJLZZhSx/LDuhpuOJFyD0m8F3E9Z4nrvtxcf15HRB1qMDEwsTUFqMDThJyAj9YrIMPChJTeV0QdSjMsvLsjl1ntt+lD9JYtbzZiZv422+VFOvipZnt9uzn/J2oQ96e2xA31TLQ7zy7ctR2995HrJeVYt3w+iHqkImyylKfmHldN+tbaq4Tc9SHn1g3zcX6eV2so//hscNEHe6x/HBu+wdnhB7QEHI4OPCTxLo6eCinPa8zog4XeH1P+oDm8U2+J+ZwdtxHinW2Xaw3XndEHc44L98UP8UUa7zsxRufcKFGYr31FutunVh/vA6JOhwgYUPcVO8IXTU7c7h7595JrMMPeFOVqKN+kgrHphqjDVUaduaQ2c69u1iXm8T65HVK1FELqUXJY316Gq6wM4fcd+7RYp0WivXK65ao4zYmb5sY5xtrvEzMoSQmsV5jxLrdKtYvr2OiDiH70KLO5mGNThNzKD3uT4p1/LlYz7yuibpH2l+53ztsRugBiZhDZXGfNj30QKVY37zOibrH6JPTJ1cTpOENUKhWkFjfOWKd83on6qr2wpaUsfpI/VV25/AERqNkixTrvUise17/RF1V1lb8OcQ8POCUZOSFDs+M+/Bh5lMVR9eG0AOirni9Fz6yWjJz1AKYzZL1vXd7r6YLRF2R5u6f38P7YZ8fJZOGFzRw0xupD/c2/li2N7MHnSDqitHxrYjtxBy4S9z9JNtbf+q4nV4QdVl7acf0kdoOhmsEHahd2Du0017b8dFLI+kHUZedkCkPfE7MgfrFfUpayOd0hKjLQsa+eTG6CGM1QQcaFvaIjrrqfZ9kxNAVou42PebH5BNzwLFxnz+rRz59IeoulX+sINA0qMlZgg44J+yDHjedPfb3/EB6Q9SdblRe4jSNxYv7zgEnszTWWPNWjZpGd4i60wSnhn3F7hxw7a49dVzwV/SHqDvU2oqNIYZoU5Vk8uKFBrgh7NGRhqqKQzxmgKg7QHLRi0kai5bjFkAGxzFFeclJdImo11vE7F7FkpHjFkAujN6SbXZ6RDF9Iup11viZFj9w3ALI8DjGV7I982TjH+gUUa+Vdz5bEqXt4HONoAPyDnuHB7TXDuxZEEW3iPodJRZMSiXmgLLiXrAmMZV+EfVbxCwavJygA8o8Z1+UEbOcjhH1Gx6YEVVG0AFl79jTU9vspWdEXbIkhH5H0AF1hD3hyabfEXUP/YOXVv7NzxhruUzQAXWFPba78XLl96V+RN2DLD28tr22re9PvAgAdWp7v/anw/uWtifqHmBu2eJemiADnxAFVC7oPo21bPvcXkRdxV7dNWeAZNYRdMBDmE2SdXdB+gCirkKTtv0pjqADHnjO7iPZtq2fFEfUVWRswcupkknLAgc8OOwFy8d6xIeUVP8HfHr9+HSCDsAe9nWLnk4n6gr2xIqEtwk6gJvDviLzibeJulKDbuQedAC/ZTSoO+zqPHJZl8qRC4C77tjXL1TnUYwK3xSdxpuiAGoV9oL31ffmqbpuWyx5M46gA6hL2Ld9oK7bHVXzB0nf/Q4fLAJQZ2Y/ybo7Xz0fUFLFH2LO/qW9JLOeoAOod9jLitXxSAHF/wGWHt7YXhNkJOgAGiTIorEe3qP8h4Ap+psvrTzkp23biKctAnCIti20P1V+q+zH9io66sbYoMssRACOFPt742Wi7gZNEx78TjLpWIQAHMpklGwJj1sU+xOUFPlNt0mP3UvQATgz7DP++EAZUXeBmEXPLifoAFwR9kUzYpYTdSdKLHgtlaADcGXY/5KdqKhPnSrmG13w2Zoogg7AHWH/rHhBFFF3MG2HxtdYYADcoUML7TWi7kCNn3nwB3bpANy5W38mtvEPRN0BImYPLSboAOQQ9tnJEcVEvQGSi95Mkow8dRGAPBj1kq1oSXISUa+HtRUfhWgsPNMFgLxYTBprxadrQ4h6HRmim1exgADIUXQbQxVRr4Pg1J5fcewCQM7HMKkDg78i6rUwKm/6NMmkZ+EAkDWTt2TLmztqGlG/i41f7QrkHB2AUtjP14/tzw8k6ndgGhR+loUCQEkGRZrOEvXb6D7/mXyOXQAo8Rhmfkr3fKJ+k4x9q2MIOgAlh33fxowYov5PuojAahYGACWLaKmrJupCyJQ+n7NLB6CG3fqUISGfe3TUX9qxcCRBB6CmsO9Y9tJIj426tkNTHqcLQFU6NHfvY3rd9i/u+NaI7ZLJwCIAoLrd+qz4TiUeFfXMsj/3IOgA1Bz2svzMHh4Tde+H7/+RCw9AzR5+wPijR0S998LnV7NLB+AJu/WFqb1Xqzrqayt2hkhmb57tAsAjmI2StWK3a5+97tKom4dHnOJCA/Ako7sHnFRl1FOK3h7LsQsAjzuGMUi2ogUpY1UXdX1k8FUuMABPFBmsv6qqqMcuTl3GLh2AJ+/Wc9L65Koi6vsrj3trghrx5igAjxbkr7FWHtvvrfioh04fcoALCgCSbfrA0AOKjvqCA5ujJKOOiwkAglEn2Q5sXBCl2Kj7D404w4UEgF8N6eR/RpFRn1iSHcebowDwW/Y3TUvemxinuKgbY8MvcwEB4FaxYcbLiop68pZ3x3KWDgB33q1vmZucpJioG3qGXeHCAcCd9WxluKKIqCdsypwsmby5aABwt926XrIVzhqbKvuo67vfX8UFA4B76xasr5J11EflZUxjlw4Atd+t56WPmibbqGs7NOcHSQNAHXRo6tgfVO2wLxS/ad4UyajnIgFAHdg/ZbppZvwU2UXdGNue+9IBoB5i73fcfesO+SLTd64axFk6ANSP/Wx9V/aMQbKJepP4mO+5MABQf/Fdmnwvi6jnHNrenl06ADR8t364ILe926PeetqIg1wQAGi4aY+1PujWqJdWfuPHLh0AHLdbr/yi1M9tUY+a+0IBFwIAHGfuiKgCt0VdE9SYnz0KAA4U5KexuiXqcRvmT5VMRi4CADiQ/Qhmw/S4qS6Pum//Lhe4AADgeP1b+15wadQXH9rRmV06ADhvt35o4+LOLot6u5lj9jB4AHCemX9ot8dlUddYTLxBCgBOFORbvzdM6/GTjd6bzNELADiXyf70xlcTJjs96gGjY08ycABwvtHtAk46Nepbvj1s4ZnpAOAaRq1kO1G6xeK0qPfJeS2XQQOA6+Qk9Ml1WtQN0e34odIA4EI9Aw1XnBL13MN72vMGKQC4lv0N08Mba/9I3lpHvWvmpM0MGABcL3NI180Oj7ouIrSa4QKA60U00VU7NOrZ5bs6SkYDwwUAN7DfBVO+Prujw6IenfXKOgYLAO6TNeKhdQ6Lur5bW+56AQA36tJEf9UhUV9x5NNQjl4AwL2MXpLtyF9WhjY46v2XZ2QxUABwv+WJ/bMaHHXziEdPMUwAcL/hrc2nGhx1yeTDMAFABkxae5YbEPWkLSuTiDoAyCfqW9KTkuod9bAZ48oYJADIx4yeYWX1jrpX6+bXGSIAyEdrX6/r9Yr6ii/2h3ErIwDIS82tjfkrQusc9cGr3p7DAAFAflYmDppT56g3e2HE1wwPAOTnhQ7Nvq5z1DVBTa0MDwDkJ8hbY61T1HPLPwnnVkYAkCf7rY3lH+SG1zrqQ1dnzWJwACBfa8YNnVXrqAenPXuUoQGAfKV1Cj5a66h7hbX4maEBgHyF+Xj9XKuoF33zpVky+TI0AJAx+7n6NzuLzPeM+oSt6+IZGADIX3H6hPh7Rj1q7owChgUA8pfZr+vme0Y9YPQTJxkWAMjf6FYBJ+8ZdY3FzIeOAEABLLpbP4T0m1/kHzsUKBm9GRYAKID94V7HivID7xj1CcXreZMUABSkeMZv3yz9TdR7vffmBwwJAJRjdr/u6+8Y9eC0MXySFAAUZHjIfd/eMer6yA5XGRIAKEcrb+1Pd4w6nyQFAGXRaez5vk3Ul5bvDyfqAKAsBhH18lVLw2+JekpR3lgGBADKs3Vq6phbov5Y7jvZDAcAlGfR4Edzbol6ePrkvQwHAJTnuXatPr8l6o2eGnCa4QCA8nQ3+1y8JeqalkHXGQ4AKI9Z++szYH69DYZnvgCAIt18W2PNf2w89iUP8gIApUZdOFb4y4O9aqKesW93DIMBAOXaNz8j5kbUxxXmpTAUAFCugvHjUm5EvW9O1iKGAgDK9e6AR5fciHqHl9N2MhQAUK5JndvtvhH1ZqOGHWMoAKBcI1oEHr8RddPDD51lKACgXL0C/M7eiLouNKSaoQCAct1v0F27EXXJ14ehAICC+Wt++VTpL1E3GBgKACiYQfrlU6VEHQDUFPXSylN+RB0AlB/1yr2lftKWM6daMRAAUL6zW4taSXnnKjsyDABQvnOb8jpKq86f6cEwAED5zq9d1UPKOX82lmEAgPJdeD/nMSnr4rlBDAMAlO/iwqxBUsbFc6MYBgCoIOpzM0ZJb1w6n8AwAED5Lr31RoI089LFRIYBACqI+uszE6XJXx+fwDAAQPm+mTJ5gvT8gQMvMwwAUL4vx49/UYrbvv0/GQYAKN8nf/xjOjt1AFDTTn3y19+MZxgAoHwnX5meLM34fyefYxgAoHyXZr6eKL1x7mI8wwAAFUT9zVnxUsa5i3yiFABU4GLG3FFS1tkLTzAMAFC2RC+97WLWwkFSztkLsQwEAJQedYPtQu6yWGnVmfPdGAgAKD/q51et7SblVZ7jJx8BgAqifi5vU0ep6PRZfkYpACg+6t62s8UlLaTSU5U+ksHAUABA0VE3/lxZutdHstnEr4k6ACg+6jU9J+oAoHwGSWO7EXWNyd/KUABAufw1GuuNqGtbtb7GUABAuUJ1huobUTdF9z7DUABAuR4xNa68EfXmw+MqGAoAKNezzUP+fiPq7VJf/JihAIByTe0Qsf1G1B/NfHcJQwEA5crpO2jRjaiPyytMYSgAoFyF41JTbkQ9Y/e+GIYCAMq1L2N+zI2of/jNCYuk5wNIAKBEJsnLduLDEsuNqNf8DVEHAMVG/UbL//U3GnNjPlUKAArU2stw/Zao+3TpcYHhAIDyDG8UeOqWqIc8+/xBhgMAyvNaeJfSW6L+6NyFuQwHAJRnad8ns2+JeurGrWMYDgAoz9bUqWNuifqyvx0J4w4YAFAW+50vR5atDbsl6tzWCADKjPpvOn7zL7QteK46AChJd71/1R2jHjwm7ShDAgDlSAtuf/SOUe/91sLVDAkAlGNh74Gr7xj1ifnb4hgSAChHycT0uDtG/cOKby2Sr4lBAYAC/PIgrx2WO0b9l2fAWHgGDAAogEWjs/57w2+JesATo08yLACQv9EBrU7eM+pdX83czLAAQP4yu/bdfM+oT1i3NZ5hAYD8bZ2QHn/PqP/1H5V+vFkKAPJmkrS2yr8e8Ltn1O28Qtr+xNAAQL7aevn+dLt+3zbqLeInfsHQAEC+Jrbo/EWtoz703TWzGBoAyNeaoeNm1TrquZ+Uh0smM/erA4AMmSWdtTzng/BaR73mQ0hNg4g6AMhQS43x+p3afceoN3s65TjDAwD5SWn24PE6R33w26vmMDwAkJ9Vg8fOqXPUV+w7Eir5cL86AMiJ/f70IyvyQ+sc9Zr71Zu3vs4QAUA+wrx8f75bt+8a9bBxM8oYIgDIx4ywnmX1jnryyqIkyY9bGwFADuy3MhYlpyfVO+o1v4FzdQCQBft5+j2bfa/fYH50+CmGCQDuN9zc+lSDo94/Y3kWwwQA91vePzGrwVFfU1YRwhEMALiXSdLZKtZsCWlw1O30bbtVMVQAcJ9uektVbXpdq6hHv5K1jqECgPtkPTRincOinr2rvKNk5AgGANzBfvRSnr2+o8OibqcLjahmuADgehG6JtW1bXWto97txfn5DBcAXG9+tyfzHR71nJ3l4RzBAIBr1Ry95GwId3jU7Qzte15hyADgOj0NgVfq0uk6Rf2x/1yazZABwHWWPjYm22lR//Dz/9OYIxgAcA370cuJLaUWp0XdLiB29EmGDQDONzqg3cm6NrrOUU/MLkiVfHkcLwA4k1nSWwsT/yPV6VG30zQOIuoA4ERBGl9rffpcr6i3GzNzD0MHAOeZ2e4Pe1wW9eztPDYAAJzFJOlt5dl5HV0WdTu/qIHnGT4AON5Av9Dz9W1zvaMeN3/DVMmHN0wBwJHMksG6IW76VJdHveYN0yYtr3MRAMBxWmpM1xvS5QZFvev4eZu5CADgOPO6jtzstqiXfn3aR/LmDVMAcAT7G6SnS4/4uC3qdqFPzzjAxQCAhpse2vdAQ5vc4Kjnbj/cnt06ADR8l344t6C926Nu1yQm/nsuCgDUX3yTLt87oscOiXr6mj0DuL0RAOrHfhvjnvQlA2QTdTtj+9jLXBwAqLtY4/2XHdVih0U9ft6mKZytA0Dd2M/SN8XPnCK7qNvpWkZUc5EAoPYidIHVjuywQ6MeN5tHBwBAbZklb2te3GtTZRv1mh9OHRpdxcUCgHuLNrSocnSDHR71se8UpnK2DgB3Z5IMtsJxs1JkH/Wa3XpYzytcNAC4s56GVlec0V+nRD353aKx7NYB4M679KLkzLGKiXrNfevh3LcOALfTz6fNRWe112lRn5hdEicZ2K0DwL/v0ksmvhenuKjbNeoy7DQXEQB+NaxR59PO7K5To75oy6HO7NYB4Ndd+qFFhZ0VG/Wa560P4XnrAGA3PXTgAWc31+lR33/stF7TKIhPmQLwaEEaf2vl/mN6xUfdrk9aTi7HMAA8+dglp09arit665Ko2+mDI69ycQF4okh98FVXtdZlUR+/YOsYdusAPHGXvnV81hjVRd0uIHL0SS4yAE8yOqD7SVd21qVRX7uzIkTy5tG8ADyDWTJaK9buDlFt1O0eTlq0nGMYAOo/dvG2LeydutrVjXV51GueCxPKc2EAqFusMfyyO/rqlqhn/rmsB7t1AGrepZdl5vfwmKjbdRqZUULYAagx6Bmd/ljirra6Leo1P6g6kB9UDUBdInQtqt3ZVbdG/eVFHw/jbhgAamGWfKwfv7xsmMdG3a51v2kHCTsANQR9WuunDrq7qW6Pes0xTDMeIQBA2SJ1ra7KoaeyiPqcNWW9JAO7dQDK3aWXzcnvRdRvEh2ftU7SczcMAGWx3+2SFZ22Ti4tlU3U7Uxth5xhkQBQkqH+Xc/IqaOyivqHe09YNEYLxzAAFMGiMVlPfPi5hajfxajpedM4hgGghGOXvNGZU+XWUNlF3S64V9pRwg5AzkFPCx58VI79lGXU7QzNo6tYPADkKNrQpkqu7ZRt1Nd+VBGi8eZ8HYC8BGkaW4+uKQ0h6vWQ/GZREscwAORz7GK0FSUvSZJzN2UddbuIobOLJR1hB+D+oM+OSC6WezNlH3W7Jh3jvyfsANwZ9Pgmfb5XQi8VEfWa58NYeEwvAPeI0LWuVkorFRP1BWsOREl6ng8DwLXMkq/1wILiKKLuBImvFaRyDAPAlccuBWOXpCipk4qKut0j8YuXEXYArgj64kdeXaa0Riou6nZtYtP3chQDwJlHLultxuxVYh8VGXW7pg8mfMeOHYAzdugJTR//TqltVGzU7Xxa9LvIIgTgSP18oi4quYuKjnrpodM+WnOHayxEAI7QQdvqWmXptz5E3Y1y1peHa3xaXmdBAmiIlpr7rpfn7ApXehMVH3W7ue+X9dIYePgXgPqxaBpZy+YWy+JnjBL1f0p/Z/cASccdMQDqxiz5WXen5w9QSwtVE3W7F2ftGEnYAdQl6NsmfRCnpg6qKup246YXpkhabnUEcHcmycdWOG6Zoj4t6pFRt3s6bf00duwA7rZDX//0wmlq7J8qo243IGHF2+zYAdxuh75q4LxMtbZPtVG3e8IednbsAG7aoa94IvNtNXdP1VGvOYoZv34aO3YA9h36+qcXq/LIxaOiXvPm6dTCFHbsgCfv0E3WwnErVPemqMdG3W7Sn7bFEXbAM4O+bdJ6Vd22SNT/6dU5uwZodHzyFPAUFo3Zuju9QDUfLCLqtzF3cVkvjTfPigHUrqUm8HrZ3O2q+Og/Ub+HnNXl4Vo/nu4IqFUHbei18pxSxT+ci6jXQenfKn187ut3UfLizhhALUySr62fT8+Lp0v/oejH5xL1BmgamvCdpOUNVEANQU9o+qRif2IRUXegNl3T97JjB5Qd9PQ2ExT5M0WJupM8MmTxMsIOKDPoix+Zs4yOEfVbJE4qSOUoBlAOs+RvLRi7xiM+VETU6+mdJZ9F6fwiqiUv4g7IOeYRuvbVBxbsiaJbRL1WGgc/8wPHMYA8j1ueaTz0BzpF1OssotfsYsIOyCvosyPSi+kTUa+35BeLkjS6II5iADcL0gRai5LzkugSUW+wtRsrQgym6Cp27YA7dud+tmhDZFXF2kMh9IioO1Rwm7SjkoawA64Melrw80fpD1F3mlGJedM0Wo5jAFcct+SNWqX6H2pB1GXgw4++tfhbhp5h1w44Z3c+1L//mRMf/reF3hB1l4qOzVrH/eyA45ilRtas6Lnr6AtRd5s5b5f10hkjr0oa4g40JOaRus5Xy+Z86nHPPyfqMtU6/JWDhB2oX9Bfaf3iQTpC1GXn5ekfD9MZIqo5awdqd3YeoetU/fHLJcPoB1GXtU5dMkoIO3D3oM/q9HoJvSDqipH5dlkPb5+HfyTuwM0xN9ke9u71Y1nm3h50gqgrUu9HFq7mrB2wn52brQt7v7uaLhB1xVvzQUVIQOPRJyWJXTs8c3c+OmDUyYq1R0PoAVFXlZTxxWP0+sirxB2eEvNIsd63inXP65+oq1ps7OJlGg2PGoB6BYn1vVisc17vRN1j7N9f6R0WOv2AJBmJAFTDKNbzNLGuK8X65nVO1D1S1oIDUWb/oWc0HMlA4Uctg/2HnPlMrGde10QdwsQJxfF+xtjLxB1Ki3mMWLdbxPrldUzUcRupyUVJRkN0FXGHnPmJ9Rlt6HmlUKxXXrdEHbXwfGJBqlHfjbhDdjGPEusyL2HTZF6nRB318MdRedMM2g7XiDvcHfO2Yh2uFeuR1yVRhwM8F79pisn48I/EHa6OeW9j7OV1Yv3xOiTqcIKZM3YNat4k/nviDmfHfKRYZyVivfG6I+pwgeW5h9t3aP3KQS/iDgfHPE2sq4NiffE6I+pwg7LSSr+Ho+YW6DRBVgKP+oY8UKyfP4l19D9iPfG6IuqQiXFxeVMtvv0vaPiUKmrBW6yTWLFeVsZtmMrrh6hDzkcziw917tZu5h49u3f8G1+xHgI0FutLYn2UiXXC64WoQ2FSEzZNbhEw+iS7d3blg8U6WMX95UQd6rBjywnLU31ycgMMPa+we/ecXfnvDdFVc8V1Py6uP68Dog6VWpt7uH3frpmbTbqIai928KpiENezrbiur4rrW8YdLEQdnmdVdnnHgQ9lrTPru1UReOWG/EFx/WaK61gqrifrmqgDNTasPBL6bP/lWa3Mw09pxf9113JMI0s+4rrY9RXXaZ64XvtXHA5l/YKo455eea4wJTpsRpmvV+vr7OLdvxtvLq7D8+J6rBDXhfUJoo4GyV9+JGzc4FVzOjZ74WujJsjKLt75u3GLmPMwMe/5Yu57xfxZhyDqcN5RzdLD7V8YumZWZHDaUZNX2M86It/giDcXcxwp5jl/6OpZnyzlTU4QdbjRnqJvzG9M2Bo/pGvm5vCA0ScNGovYzXNkczt6MRd/MZ8+Yk6To+YUrBRzOyzmxzoCUYesbc8/FvjWhOL4gZH/semBJv3/4acN/slLMtjsPCHeRrH7tgvVR159Mjj1q1d6vffBcjGPv238KpD1AaIO1di0tDx8VmrxmGdj3nk/qsWzhwONv79k0JitXpLOZqe0XbedRdPyenSjp04/G56+N73v0uz3xZ/vY/Hn5HqDqMOj7dx4LHBFxr6YN8YVpiQ++m5Ov3aTdnb+3ZNft/KLPmfW3X/NoPG3asVO/1+cEeqbv75R/Pss2vuvtRH//ujfPfX10LZpe159fNnC98T3t0l8n59tPN6c6waiDjjAl6WnfcqLzrb6LO9cx70rzvX4a86Fx3ZlXRy0LePCqJI3LiWUzLyU+NFrl5I2v/y/qcuSjrzyF/HXbeLXO8R/v1P877vF7/tU/P4y8c8dFP/8IfF1vhRf75j4uswXSvX/AXO4pNyLosLqAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/wheel_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB39JREFUWMPFl12MXVUVx39773P2Oefembnz0XamrW21DQIWBOHFoEEMDz4SYyQYSI2JD0WCiSSSqIkPhleNKIaYGOFBY/yIPvlAVEB40ED9ACJNLRTascyUTuncmbnna3/5cPbcmQFU8IWbrOyTe5P7/+21/nutfUQIgffyk2w+PLL6NEMx4rxaYkme5XV1jlkvWFSneJ+fEl4MDywweUMjl27RcuOaXJQHpwgzAxADWJ0LvcWB77844/c+2ZfrJ6b84Nwkb7iwcRCxehm/Pomv5nHhEEFOA47BR+/dAni7jw4pAq5akSufLdXS515Tq1dPA7vRZGgkCgUo/Fxg7UhQK7c4znxJ+Okzgr0/x6ufBdIXxDvJwFvESZKzyflji2rpvlItH52nYB+7mEYzQUIfRQ9BD+gR6OHoYSkw5HL9cC5Pfi0xc7c70u95MfkjoHxHAAHIg55eVK8/8HJy6rjGqFnmmSKnICMjpSAhJ6WAGIECR46JUZCFGmVWj6j2uQetPXhjK6+9H8KF/woQgImQTf8pO//Q6WTlzgHzDAjkGDQCTUGOJieJEIIcyAnk2BgtBQ2JyaDMoBqSlK8eC20+aNTNx7Fh+T8C9INOH9NnvvWXdPnOXSwwQNDHUWAocGRoMjJyUnIUBZJiB4ChoEWHGuoM6gRqCbUkXX3xNq/6w3rq0/cQ2HgLgA6KE/rcsT9mr909YA8DFBM4+ttqmyHIySNAQo6MGfBjgJwG2WioNsUF1EBtyS4/c5dbOPJcO3fTd4SzOwFOpGtXPZYvfSVhJpkhpY+nj2cyrgWWHhZNQha9kCHJdgC0pK6GWkOTQK2iONB4qGqZvfSHL4e19MmgJv8KkHxz/SlkkOqMLj+zqOTR/cyTE8bu3gTpYymwZECGpkBvK4Hv3E+DaDU0atvOPVQOKgNmDnVh8VAiz97V7rnuOcAlE2GQj4Td/bx2ny/YRYGiIESILibwTODHRy1Hjc2YAz1ct3vbQJVCuSkeoHRQ2Q6gbKGeJD39wh2mf/0PgVPJ/VPX1V8sn71hWRZXzNNDI6KpOnMV40wEJscAnhxNEY9ijiULLTRlTLuAalM8Cpc1lBrMFHLp/F617/xNwKkE4HSS3Aoz5EhSQEOsbQdSxEz0YzZ6uGjINIIalG2g2ky9f6vwSMNGCqMMNhLUP0/fCjySAFxUvaM5GQpBEp2ZAikh1pwxSB+YwMfGk1Ag0KGFuux6Xelg1MIoh1ENG50g6ymsa9hQUBaof618aHwKhmJwMCOg4hcJ7HjeBNIxKxNjCEGGQLZVrLuFsom7TbZiLYF11YkPFYwyxOWN+TGAF1MzCoGAcchtod4EoYFebMPa2m7no7oTWVPdui67WBOwJmEoYJVuXROI2ve3+kBdgBD/1zwXJjq8zqHJocm6LljlUGVd1G+OHJptnVCshaELYg7RzYNxBPCAi2GBFmhDZ/IUyESCrnvQGjAWrAPnwbsugt8WIf6pIZCXYhNgMPSLF5w8bMWWoN0eAVrRCTcBSg/CgU67454YjSwLqFto2whjOhi7DcpZ8B7aijA5d3GcgV0j9+LZKvmEE90OLWBEJ9bSrQ1QBlAeggEpYjYDaCvJ67xzf9lCY7pobQdkXQQyYD2UPfz795/c9BZXWvfEicvc3cidaW5jM9MB0iiOg+Ag192xzwDtIG1TVJnDqIkdr4XaQNNCYzsAYzsoO4H94JVPpJsAB5U9sbv0Z4e1PNRXnWgWhTWdsPBdaqwDJaPX4qzRDnQr6DUZlAWMYhOqzBZIbbpsrI/w0/suugMLT49L0G6Ic9eq9ie/W8m/UaVROEASIIniwoG34AP0dDfwdgAY0E1KslmKUbMFUhuoYlaGOebje39Fm700Bnjg5kl3z29Hv9jv3B0rb6gjWQqJA7WZdt+JWwNJ0p22KoFCQgVoD9pC1kK/zhBVvhNg1ELdg0sVfvfCBXdg7lFhaXfcB26YMs83e8SDP32l993LIKUEGWvuojhAP4Om7sZ9JTsPZB4y221QNwq92QdGbdeKywLWaijz0Hzq4EPmxtlnROV2XkiME3x4wfz45d3NR/78QvaFJP4SLDgDzoHWsfZpvG3FqZuFDkCbLgtJnSHrYmv3awYuZbTX7/+1uWbiYWH8uPHtuBOWRoxuPGS+vvaanD15Mr3Ni64ntC0IGRud7sSrBPLtAJs+MJDWkrzKug670cIbLfbI7O/tNeGrorKXQiHe/lIqgLIVy1fsNcer82L93OnkrrqF2RR6GbR13H26bewTTes6H2gDuoW01qjVAqoWt8/9xn5A3CeqjVcRb3Mt/8HjQ5TcgmiMWN6/xx6f9v7v504m964uyUNFHyb7XQaqBAoFlYgeCFs+0C2kI9AjQT6pl93h7OHQq78vGn85iHfxZmSsGB3cb7/dXBSP92fcsWpZ3T68IPclKaQpZBq07PpEGiA1kDZxnQgr2WH3yzSER90BnpHLcXC8m1czAGMEwN/mZv0/vAoP77uajzVL8pPZSB71tVhw0LcBbKD0vXCBGX9SLPinwlA+5af9K1yiEuZ/TNP3+vX830UX5/xBVNUfAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/wheel_button_h.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABu9JREFUWMPFV2lsFVUUvrO+ve+9lkJLAwVEKgo/TA1qNEBYGtqCQpBFNBiCaFAD/sHoDyRRYkgkRDAQNUgiNhgEI1tZ2hSrREiEgIpBoYCUrbSF9m0z783uPXPvLEWg4B9f8vXcuTO533e+c+7tDGtZFvo/wTIMg/rDvEIdM7FpTNWsQ+MW1e4b0TBjb/mJWXuKry7YlUy/uiuZWb47eX3VvrKTaxuHb9988InXt/8w5tHdzeP4/taFH4v6+Y1pGlN97vCFT27kO5v+Uk9vuWl1vCQjqRoxqILl2CKeY2Mcy5Sblvy4ZnbOlbQ/PrvZfb1FVVObmptHP93f+ncV8OzRWcLYA0+t6JRv7rxotC/Ls8rQICpCEVSCQiiBAnjcFzBXbMdYyChD5uUluWz3d/t3PvbB4W+fjD2QgPqmJaXXem983aZeXpNn9WFhvChARFEk4JGIZcA4YEcyJjGM70cw4kiwkogzlHJdurBSznR8c2jLpCH3JWDRwfdL/1Y6tl4zUvNCTIKNo1KccRzx+C9ZPOoSCragf48BnBFGSElghJGZ66wvpNsb9m2cXXlPAauOfSn+rl5a32bdmhZDSbxcEpHs43jRmJ29X0SAQvSJssVYmFyNYAQR0qIYMcSkr4w3U2c37tv0RuKuAk7dOv/2aat7LiFN4pyLENQdHAhhAbxrvyPEgzMHkdHClDxEokoFdZ6ts3rPv3NHAbMb11T/ot9YyjJRLooFBO3sYjZx2BaQsLP1l8Kz3bOfMzGZRqFiAVqQAjuhiox+6eTi/SvrJ/QR8ErjBv66Kb98k2WGxWmzOd0ddF0gAHLebT5qOc1cxE8wepgQqkEvKiKOAkJGDHG9qYFGz43Fjavm87aAZT9uCyM2OPy8lJ0rYgKoNYFTYxBAXAjbzsQoWditfcBtPGyzEiLQApgUQ6FRFYkQXJbCpYvTOYUZawvYMGGB3GXpz6TD0cFRO0PH0pgrhrgRpy7Efdn7doQVITW36x7qmzlEBSJOGjsU6M0mzZ6uyW4JrhhmDaJ15Ow6OzX1i4i6DQli/FsOSsCaYY8YslfEvsQFHPM8uS5wyGi/6glIW3wVLMiCjRQ8jd62I0KCPhcE6oKdPZArNOsCTyMlxYQoz5FxnrXvGd3pka4AyQqVEQHEAdY39oOnvRGiQgLUKbvxFKfOAiXGhAWWkMssIYZrGMP9W/mkK8AygzHInsFANPrB+lzhaYkCtGF5I+RlnWd9YEiUGUIq4SghEvGclbOC3jmgiUT9fwCj0kaDNXTocoFA9cE/p/ngCsgzORPUyQSWA4nApDAwdAo1R6CDxbDNYM/r2A34H2DiaPmi5cQInQ+D04orIFJgOnW8mIFh+kFJYd4mxlHDUDJYcxrzUiFWXqCOYCG6IyZIBBiOKECQiMD32FBxyhUQ15g2WAxIdUoOhBq91uhYwShgcjlNHaDzml1XZ9v5RNhCAlRE0Iv4Gaao9IIrYCjDtSBKBBlD1LOEHIi0LMnazhyjgK81XCI1S0TB86a9zejWs088kZwHtgiROAIC7BhE3JDKVldAeYA9EssVuuQMzThLM8wSACFknsemySkqSvJAnICuhy0IIuhBpIrekeyUBwtVI4k0Wzag2RWgSua5h6Kh7yE7p7mc7JzMbethnPVI+0AG96gLICTvFxLwekQSkTisssnShNOugIbl9frgsPBViWF0ZFK03tR2J3vZ13ha3ifUgUzKYsmOC/RAUqgIcCLLIyMeTwllxZ/X7fiw0Od9YNe7045VDxS+wLW3cikiAMjztOnAfnBEl53G87J3mlS1ewgOH8Hrhzw9lmU7WtzYyq21hz5queMb0eiK4LpHkmiv1EtIIfNCmmQOQjSapVd3j1ijZQB3LEdAnu4M2CFZAVkjSluFkSVr7vpKtm75lEzVYHbZkLj1U6YHoVwvsf72xrvd/j4iJLotJSpCIuSoPH4iNHLAW7Wb3+y451vxjo+ntw8pFRYOijAHZCwg3Y3XodvOOQFdyykUvyDaIyZYn8bkORGxxZHWUEViYU3j0jP39V3Q+nVde9nA+PwRFcIaEZldUBIog0aPYeW2HeDaL9M5eLaXQSbH93KVkU+jgxLzph5d/OcDfRkdbxyfOXO89r2SRPSFoRVcA88oPVKKlKWQIv1h7xQH0KS4bCqUzdIyVjm7I5yMzqk/O2fZxFNzuh7408z5nTs35UiiSFgyaGBi8qjRgRXJEma/KKI20zBvGaoh6QQ9lmCd54qZQ8EqYWW8NDFlUEnZopqLNS39fhvezyf0kZNTCz+fnfLrnlM1a5suT6/f3z1j1O7U8wO2pWdGN2Osz8wsWd393MMrrkyf9tpv01a/2Dbp+Pjj1VJ/68LvH9f5eR16/VvHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAAlCAYAAACONvPuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjA1QjI4QTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MkE1MjFGODc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2k7HQAAAAKVJREFUeNpiZEAAIyCOAWINIBYDCTBCJRLExcXrFBQUBAUEBNjY2dmZGRkZGVigOrK0tLTEQaq+f//+/9u3b39AbJBklr6+vuqvX78YgKr/I1kDllRhY2NjB9L//v9HkQNL8jAxMTGiS4AAE5TGlIHqhMhi0ckCk6CR5L9///7jlMTpWrySBL1CnrGUSdIg+AYwynBKgsFg8CcTAx5AIwfhtRMgwABg9KLwDJeKlwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAlCAYAAACDKIOpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjA1QjI4RTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjA1QjI4RDc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lugQ8wAAADlJREFUeNpiYGBgOMPg7+//nendu3d/mf7//8+ARABlGdDFwMS/f//+Y5XAVEesEuzmYXMBSAwgwAAGDGVWQ3ijRgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAAlCAYAAACONvPuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjA1QjI5Mjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjA1QjI5MTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yLs/YAAAAL5JREFUeNq8UTsOwjAMdawqQhE7F0AMXXKU3qPH4CQMHAchRsauZQgdSVpq7KIuVRQJQXiSFfk9f2I9BQAneOPGceU4EtFZCFVV1YMT8N4/u64LTdPc27bdM3conHPDVKUUGGN0WZYbFmvOLyhdEuM4Qt/3FEIAa+2W6+tChAVIa73idxcTAREVP2uEOKaOaOeMqDhzX4h8H2UY+/EpuUXxcQkxPsPO5NjfWJbcGfOT/u3nzCEkkOlDyZ0vAQYApzrDr3PIkEgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjEwNDgxMzc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjEwNDgxMjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0BG1dwAAABpJREFUeNpiZGBgOCMvL6/5+/fvvwxoACDAAGiOBUKTvH+gAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjEwNDgxNzc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjEwNDgxNjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aFUCMAAAABVJREFUeNpilJKS+sQABEwMUAAQYAASUgFE0B817AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjEwNDgxQjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjEwNDgxQTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vZzRAQAAABpJREFUeNpilJKS+sSABlhZWZkfPnx4HSDAAClOBM5s/AWUAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAADCAYAAABfwxXFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMTY1NDg1Mjc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMTY1NDg1MTc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Sc/CAgAAAClJREFUeNpiZGBgOCMvL6/5+/fvvwxogAVMsLAwMWABjCCdDDgAQIABALFWBiGZGU1kAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjE4MTIzMjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjE4MTIzMTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+paGDHwAAABhJREFUeNpikJKS+sTEysrKzAAEZwACDAAP1QIhnbQ19QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAADCAYAAABfwxXFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMTY1NDg1Njc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMTY1NDg1NTc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8Yt1RQAAACtJREFUeNpilJKS+sSABlhZWZkfPnx4nQXEQJdkYWFhAtGMQHyGAQcACDAAWtgFv4rp/QcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButton.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgJJREFUOE9dkzmPUlEYhmcSbbQ2sdBY2NpgqXZWdv4HLZyfYE/ClgkEQtjXAsMmS1gbKkJjKMYCGpZAQAts6AZH8vk9J/dOmDnJm3x5t3vOveeeicjZCc673e6TQCBw6fF4rpxO5xEww6HhOc2chh+kUqmPXq/3t8vlEg2JzgbMcGh48N4veJjNZr+43W7x+Xzi9/slGAxKKBQyYIZDw4OXjF1wPh6PX6l4jSkcDksikZB0Oo3RgBkOzSq6JkOWgsf5fP6bnlGi0ajoFoW1Wq2kXC4brNdrw6HhwUuGLAUv4vH4LwQlJZfLyXa7NYHlcmnAgkPDg5cMWQpeRyKRI1stlUpSLBYlmUzKfD43QRYzHBoevLFY7K9KDgreZjKZm0KhIPV6XZrNpjEtFovbAmY4NDx49b3cqPTGFFSr1b1taLfbstvtTHAymRiw4NDsB5CxCxzD4fBnpVKRVqsltVrNBGazmejRDJhZaHjwkiFrXuJ+v3ereLQLeNucmScBZji7AC8ZsuYzKj7oU36wPQycs9FoSKfTMWCGQ8ODlwxZc5EUzxQX+qmuBoPBsdfrSb/fvwM4tM1mw9YvrIy5SOYqK14qPh0Oh+p0Ov0zGo3+EQLMcKp9V89ny3t7lW3wgzxVvFd8VeQVfQvMcGh4TPh+gX2cR4rnCofinQVmOLQ7v/N/0NkPdZCIgQoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAe9JREFUOE9dk7vL0mEUx98Xaqk5aCgaWltsrLamtv4HRft5Q8Ur4v0+NLpLCIFQe4M4a4u/FBcXpwJpaZHoTU7nc/AJfR/4wuF7Ob9zHh+vROTqDNfj8fhBJpN573meHwwGj4AaDg3PeeY8fKfZbL5V849QKCThcPgCcGh48N5ucLfdbr/DFIlEJBqNSjwel0QiYaCGQ8ODl4xrcD2bzZ5p99+Yksmk6LiSy+WkUCgYqOHQ8OAlQ5YG97vd7sdYLCbpdFqy2axwVquV1Ot1w3q9Ng4ND14yZGnwpFQqfUcoFouG7XZrgeVyaeDAOR0vGbI0eJ5KpY6MWq1WpVKp2Mi+71uQQw2HhgevTvNHpQANXmrXm3K5LHrDXJA0Gg1bwR1qODQ8ePP5/I1KL6zBYDD4RWcMupvsdjsLLhYLAwcODQ9eMq5BYDKZfKvVatLpdOwLHHZnV+DuAQ0PXjJk7RL3+31fOx8RGZV9uXG+BKjh0PDgJUPWfkbFm/l8/pXx3BStVkt6vZ6B2n0dD14yZO0hKR4pvM1m4w+Hw2O/32fHC8Ch6ZtgdO+UsYdkT1nxVBE8HA6fptPpz9Fo9JcQoIZT7bN6Qifv/6fswB/koeK1oqT4oPhyAjUcGh4L327g1rmneKwIKF6dQA2HdvF3/gckQc2QEBVViQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApdJREFUeNp0Ul1LVFEU3efeuV/jOMM4Ew5qJgzlRAmOIxKTEP6A/oDRa0+B8ywiKCI++KD0C3zxByT0ZA+BYYw2DmKkWUaWY4JFaOrMvd572uvgiBQdWNxz91lr73X2PmJsbIzqa3R0VJSHh9s3pBz2qtUHvufdRFw3jG3Dtl/dFWKye3Jyd3x8XNY12hVxaGFk5HG5Wl09//37iR4EnaauawD2iOEMHHAvEwghIDaeT0wUDo+P55icNE2TLMsi27YVsEcMZ+CACw20QkopNufnc29KpdemlKZhGARomqaAFQSBgud5Cq4Q7r2envuZwcG3sBLeqlRGLCLT4mqqEn9v5HLU2tVFJCXtrq/T11KJQrUa6bpOolYzockQPUKCpHd6mq9bRvXrfX2UGRi4bG5XKkWCv/ucpO4KGmjxl5Cum0BlAISObJb+Xu3d3eqszhOeF+dwExw4lmlKIxRS1XFH2PzfAsf3ffJJmXKUHyceP1N3466iyuby8j/Cjysr6hwAN9zUdIY4HJzGW1q+He3sZCAOsZPPxSJ5rkvp3l7uoaRt/v++sUGxcPhyOlHWsPYMCX525nIvipXKLZ6VhgSN3My91VX6tLSkqjuOQ42RiEqOcUrbDqCBFlc4bOzoWORq6wH/wCImEovFKJlMKkSjURXDGTjgQgOteki8aWU8PCiXn35ZW8v4JyfqhV5duIre0BDwNLZS2ewzDi0w9vQIW8vn82jIYSSV2r/W1kbnmtbMVi23WhWSEzmJRBBPp3919vcvxtLpOea+ZFSmp6d9MTU1pewVCgX1qBh3GH2M24zmCwMHjPeMIuMd48fMzIxX45cZwkxd7vjs7Oz50NAQiEeMDxfJGi4SnMAhhOg8cyU00P4RYAAZ2RK8jm+p0AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApNJREFUeNpkUt9LU2EY/s7ZOcfNjUltYBmlGPkrNSOL0mCbE+xiXepNBBM0hY3RdXTdH2Db1aDhH9BVGPljwsQIyqWE1cy70FKsyGE7bDs7p/f53CeWBx7OOe95nud9v+e8UjgcZuJKpVLScix24U0+/6ik6z6jXL6EuqKqm5rDkbnldj+5PTX1dXR01BIa+ZhYeTYxcT+zu7tS3N9/IBlGqypJMoBn1PANHHD/MaCCmozFHm7t7U0T2auqKlMUheF+/BnfwAEXGmgly7KklWTy2qt0+rVqmprNZmMCkiTxLsRhlUrlCGVZLt0JBvt7x8ezGKU2u7HxWLMsTal2s9ntrCsQYO19fcw0Tba+vMw+ZTLMVioxwzAwiQZNL2P3YODV8/k+CDVN4wZdg4Osf3j4KNz6piZ+3yQTWT6MDRpo8eYxCgWPOC/G7hkYYP9fPX4/FwueVSyeovJpGDiosyXOzX+bopwwEHkIHpmh4ODz1Ho8erXIie9mZ08YvF9cPPxtxAHX6fXqvBmhcLa5eWt7ba1NdMiSQalcZld8Ph7iKolzFKSTMhLTQIMoYPDrZjD48nku10IRy+hQS2dcn5tjqzMzXIBwHfRnYA5DZreb0ECLI/zwtLQsXB8a+mCSswjK5XIxt9vN4XQ6uQk6gwMuNNDyRaKHc4S7m0tL0ez8fButrSxCExeWqaauzrwaDG60+v1PqfSCsG3b2dlhoVBI55M0Nn6/2NHBiqZZb1QqNfrBgWSRUV1Dg3m+u/t3YGRk4Uxn5zRx04Rvk5OTFWlsbIyPl0gk+FIRLhNuENqxQ9UBdgmfCW8JHwk/I5FIuUSbqSAUrGc0GjXi8TiIecKXqpmzavAHE0KI5IlrQQPtXwEGAI4lFJG9vogeAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmtJREFUeNp0UzuLmkEUne/zrati4ou1V4JrBAkpbARJsRYhvY1FmqSTsEUgKGhlYb9VBGH/QSBKMGLaECxiJJjOIuLqJoFofD9yzsRPtsnAYYY795y5586MUigUhDby+bxSr9fdvV7v5XK5fLRer88YNxgMX0wmUyMUCpXOz89visXiXuOot8j6SqXypNPpfJ7P5y8Qum80GlWCa8a4xxzmajwFaiKXyxmq1erT4XB4qdPphF6vF5wVRZFJ+/1ebLdbsdls5Oz3+59nMpnX2F8r2FTa7Xa42Wx+AtGEEwVBciqVkgK1Wk2KrFYrCQgtk8nkg1gs1mV51m63+wo+TRaLRdhsNgmKnJ6eSnCtxZnDXHLIpRf3YrFImM1mYbVaBWckiNlsdmwu7ZBIa6r6r23kkEuBu/DlOyiLRCIhvF6vuD3S6bScR6ORgFV5CG7JjdAdClgQ2LHb9E2P/xvcYw4t7XY7dtgir8PhcMxQhYPrRqMhJpMJTxAXFxeSWC6XBd6BsNvtsg+04XQ6pUcKzHw+Xx9XGKEybTBxOp0eT/Z4POLk5ET2gmAl5GBrToGfkUjk7Xg8DkNZ1a6Qo9/vy5lkivIq+RYgsiOHXLb0BhY+INCGr+Op7Hir1ZLgWhvMYS455MqHhEUAeDwYDJ7hH5yhRJWn4S+Iw1/QmrcLBoPdQCBwifAb4LuO5cXj8TnVUOY1NrcgewETylXpGQ3b4vn+ikaj71wu1xVy3wMDiG6VUqkkO5zNZuWjAsLAQ+Ae4DtUfg18BT4CXeAH/4G0ys9xuN8NTmXib+DbQcx2EPjDCklk55F7/M5/BRgAk6YORNXAcuoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnRJREFUeNpcU79rWlEYvc/fGiJaTVPTJYqLPKcQHGuGZtPVxcFIHcx/UJB0qAr9B0SX6tIsri0daouhS0BCpqrgEOzQxkDaQsUnjT7tORefpL1wvNf7fed83z33PuXo6EgYo9FoKKenp/7Ly8vn0+n06d3dXZT7Npvti9Pp/Li3t/cqnU7fZrPZpcFRDAGQLcViMXF9fV2dzWaPTCaTuD8Wi4WwWq2jQCBwfHJy8g4i87UAyNZyufxsOBxWzWazICigKIokL5dLKaDrusTu7u5xoVB4jfhMQVA5OztTm83mBTbsFotFECTn83kpUKvVpMh8PpfA+k8qldo/ODjosk/X+fl5ARXtGMLhcAicl+2KcDgswTX3GGMOc8kh14If/3g8jsMoGeTMI8DA9fn539g3vCGHXAr44Pg2yWw9k8mIUCj0j4GlUknOV1dX9EseB0b7sfWAAk60toC6lL5f+f9hxFiI3pFLAeH1erXJZOLmul6vC3TECtI8Dppp+EBwuN1ujTOrasFg8CtdZ9Lm5qbw+XzC4/GsK3PNPcaYw1xyEJqyg5+4jveDwUBFwESjjPvv9Xpypvsul0uene8AIgtyyOU72MDiSafTedlqtfaNN8DzwmkpwMq8BeMtHB4eXsRisRcIfVZWZjwGkv1+P99ut6MgmoxqxjVSFEKLeDzeVVW1iu23wDfzaDQSiURiij+3W1tbN9FoVMezfQjYNU0z8d7x/vVIJPIrmUx+2NnZeYPcT8B3iOpKLpeT7VUqFfmoABWIARFge+XjDdAHOkAX+MHvQF4pPxKeCxtztM3E38BgJbaxEpiwQxLpPHLXn/NfAQYAVxYSIuMwPrYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjdJREFUeNqEUzuLGlEYvTM+xvcj0ShYWkhYjSAhhRYBSWGXP5FeSRUICFpZWOgfGBDSpwuyGCFgFRaLNUMwXZrg4iYBIb5nzDk3juwuC7lwQL/vnPM97h2l0WgI+9TrdaXf78em0+mbzWbzYrfbZRl3uVxfNE0bZDKZVqVSuW42mwdbo94QO3VdfzmZTC5Xq9VrhJ643W6V4G/GmCOH3JOBoigUu3q93qv5fP4e/5Mej0d4vd5bYIw5csilhlrlcDgo4/H4bDgcXjidTg0VBeFwOISq/mvQsixhmqbYbrcS+/1+Uy6XnxYKBYMMn2EYbzGnxkp+v18iEAjcgh0nh1xqqOUssfV6/Zwt+nw+2SoI93aADk8xaqilwUMkE/acJJVKJRGPx8XNg9nFaDSSHBrilmIIP6CBF0HruPHTrHcPY9iX3A92QBOFWnkdoVBoCWHIbm8wGIjFYiHNeDgOOCISicgR2GU4HF4yR4NlIpH4PpvNcnaSRC6OFXl4XYyzOtsnjxqkVjT4lcvlPmDGM74LJrmP+w4NaYCOLGqoZc/XaO8TAmMm/3fIIZcaauUIwCSdTuuo7MZ3kMXC5Au9Wx0jWNls1kilUjo11Do4a7FYXNEtGAxeIWmC/AiVNFyVelyymUwmf+fz+fNoNPoOoY/Aj3a7bSqtVkvgSxO1Wk0+KoC7eAY8BhLHBq6Ar8BnwAB+djqdHQoIp33v3W53X61WSVwA345m/qPBH3ZIITcP7oEaav8KMADyzRBm/XofAgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAk1JREFUeNqEUj2LGlEUfTOOjhoVTDQrdpai2UKCrRax09YiIihYGPQHBFKKkB+gpNPCbGOzTUgREjSFCCHYJEMghRKL6MImAT9Gos6Yex4+GLbJg4POfefce+69TyqVSkycbrcrXV1dBSaTyfPdbvdkv9/HEXc4HF9dLtf7RCLxslAo3JbL5ZPQKBax0mg0sovF4tXhcAjJssxsNhu/MwzjcrVaXY5Go6fT6fQZcd9QkiPu5LPY3mw2K/P5/No0zRBVRFWmqiqH+MYdOOBCA610Op2k4XAY6/f7nyVJUhVFYQCqwwUOCeGCHY9HDtL8zefzj9PptAaGezwevyCyimpOp5NRvxz4f/cbHHChgRYzCKzX65SwjF9UB8gRd0AVuQOrK2igRYIHNPELq7hYLLJIJMKsZzabsV6vxzlISIMOUPg+ErjImklCGb2jX1ofu3sQgxAcuMHsoOVr9Pv9+na79Ql7nU6H6brOk/FVUdztdjOPx8PEen0+ny7egU52f2ia9gg9o4LX6+VDsx6xGbgADxoK71DyN63jrd1uN0U19ImKViAmHIILDbSI3AaDwY+ZTGaC7P874IALDbS8BcKXZDLZIeuOwWAQpxXJYoVWId2bqVRKi8ViHWigtS2XS5bNZndnJzfxeNyg4T2kSaubzYZ7DoVCRjQa/ZPL5d6Fw+HXFPpA+FmtVg2pUqnw/trtNn9UhBghSYgSLs4GbgjfCJ8IGuFXrVY7YLUKVoX3Xa/Xj61WC8QV4fs52b1zgi0cQojJE/cEDbT/BBgAoZsTVzzPeQgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardTop0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAApCAYAAAAWNlirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF1JREFUOI1jqa2tZQCB3NxceyBVBMTGQCzNAhLMycmp+P//fzsDEmABCoJUtjKgAZbv379P5uDgYMKQYGZm1kQXBEuAANB8TAlsgiND4t+/f6OW09/yISaBVZQsHQCsMHUPEsgdpgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardTop1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAApCAIAAAB7iNSFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCFtjevXqFdP///+ZGBgYUGhi8b9//8gWw4eR3AMAjT9unIbIdHUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardTop2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAApCAYAAAAWNlirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF5JREFUOI1jefXq1X8GBoanQHwWiPuA+CAQM7D8/w8SZ5CGYj8grgTiDhYGTNAKxEdgOpAB048fPyZj08HAzMysg00HAwsIYJNAdtXwlfj379+o5fS3fIhJYBUlSwcAax55fnDttN0AAAAASUVORK5CYII= +*/ ADDED Site/Site/Frameworks/AppKit/Browser.environment/MHTMLPaths.txt Index: Site/Site/Frameworks/AppKit/Browser.environment/MHTMLPaths.txt ================================================================== --- Site/Site/Frameworks/AppKit/Browser.environment/MHTMLPaths.txt +++ Site/Site/Frameworks/AppKit/Browser.environment/MHTMLPaths.txt @@ -0,0 +1,1 @@ +@STATIC;1.0;u;57;Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.pngu;65;Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png105;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow1.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow1.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow3.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow3.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow4.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow4.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow5.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow5.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow7.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow7.pngu;50;Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.pngu;50;Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded0.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded0.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded2.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded2.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded6.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded6.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded8.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded8.pngu;53;Resources/_CPToolbarView/_CPToolbarViewBackground.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPToolbarView/_CPToolbarViewBackground.pngu;67;Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.pngu;58;Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png98;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.pngu;56;Resources/_CPWindowView/_CPWindowViewResizeIndicator.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPWindowView/_CPWindowViewResizeIndicator.pngu;27;Resources/action_button.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/action_button.pngu;28;Resources/brightness_bar.png68;mhtml:Browser.environment/MHTMLData.txt!Resources/brightness_bar.pngu;38;Resources/browser-leaf-highlighted.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/browser-leaf-highlighted.pngu;26;Resources/browser-leaf.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/browser-leaf.pngu;36;Resources/browser-resize-control.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/browser-resize-control.pngu;24;Resources/color_well.png64;mhtml:Browser.environment/MHTMLData.txt!Resources/color_well.pngu;31;Resources/CPApplication/New.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/New.pngu;42;Resources/CPApplication/NewHighlighted.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/NewHighlighted.pngu;32;Resources/CPApplication/Open.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/Open.pngu;43;Resources/CPApplication/OpenHighlighted.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/OpenHighlighted.pngu;32;Resources/CPApplication/Save.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/Save.pngu;43;Resources/CPApplication/SaveHighlighted.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/SaveHighlighted.pngu;43;Resources/CPImage/CPImageNameColorPanel.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImage/CPImageNameColorPanel.pngu;54;Resources/CPImage/CPImageNameColorPanelHighlighted.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImage/CPImageNameColorPanelHighlighted.pngu;53;Resources/CPImageView/CPImageViewBottomLeftShadow.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewBottomLeftShadow.pngu;54;Resources/CPImageView/CPImageViewBottomRightShadow.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewBottomRightShadow.pngu;49;Resources/CPImageView/CPImageViewBottomShadow.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewBottomShadow.pngu;47;Resources/CPImageView/CPImageViewLeftShadow.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewLeftShadow.pngu;48;Resources/CPImageView/CPImageViewRightShadow.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewRightShadow.pngu;50;Resources/CPImageView/CPImageViewTopLeftShadow.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewTopLeftShadow.pngu;51;Resources/CPImageView/CPImageViewTopRightShadow.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewTopRightShadow.pngu;46;Resources/CPImageView/CPImageViewTopShadow.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewTopShadow.pngu;42;Resources/CPMenuItem/CPMenuItemOnState.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/CPMenuItem/CPMenuItemOnState.pngu;53;Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/CPMenuItem/CPMenuItemOnStateHighlighted.pngu;67;Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.pngu;67;Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.pngu;67;Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.pngu;70;Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.pngu;70;Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.pngu;70;Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.pngu;75;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png115;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.pngu;75;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png115;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.pngu;75;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png115;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.pngu;78;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png118;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.pngu;78;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png118;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.pngu;78;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png118;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.pngu;73;Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif113;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gifu;47;Resources/CPSearchField/CPSearchFieldCancel.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldCancel.pngu;54;Resources/CPSearchField/CPSearchFieldCancelPressed.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldCancelPressed.pngu;45;Resources/CPSearchField/CPSearchFieldFind.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldFind.pngu;47;Resources/CPSearchField/CPSearchFieldSearch.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldSearch.pngu;50;Resources/CPShadowView/CPShadowViewHeavyBottom.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyBottom.pngu;54;Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyBottomLeft.pngu;55;Resources/CPShadowView/CPShadowViewHeavyBottomRight.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyBottomRight.pngu;48;Resources/CPShadowView/CPShadowViewHeavyLeft.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyLeft.pngu;49;Resources/CPShadowView/CPShadowViewHeavyRight.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyRight.pngu;47;Resources/CPShadowView/CPShadowViewHeavyTop.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyTop.pngu;51;Resources/CPShadowView/CPShadowViewHeavyTopLeft.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyTopLeft.pngu;52;Resources/CPShadowView/CPShadowViewHeavyTopRight.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyTopRight.pngu;50;Resources/CPShadowView/CPShadowViewLightBottom.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightBottom.pngu;54;Resources/CPShadowView/CPShadowViewLightBottomLeft.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightBottomLeft.pngu;55;Resources/CPShadowView/CPShadowViewLightBottomRight.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightBottomRight.pngu;48;Resources/CPShadowView/CPShadowViewLightLeft.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightLeft.pngu;49;Resources/CPShadowView/CPShadowViewLightRight.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightRight.pngu;47;Resources/CPShadowView/CPShadowViewLightTop.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightTop.pngu;51;Resources/CPShadowView/CPShadowViewLightTopLeft.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightTopLeft.pngu;52;Resources/CPShadowView/CPShadowViewLightTopRight.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightTopRight.pngu;47;Resources/CPSplitView/CPSplitViewHorizontal.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSplitView/CPSplitViewHorizontal.pngu;45;Resources/CPSplitView/CPSplitViewVertical.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSplitView/CPSplitViewVertical.pngu;51;Resources/CPTabView/_CPTabLabelBackgroundCenter.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelBackgroundCenter.pngu;49;Resources/CPTabView/_CPTabLabelBackgroundLeft.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelBackgroundLeft.pngu;50;Resources/CPTabView/_CPTabLabelBackgroundRight.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelBackgroundRight.pngu;49;Resources/CPTabView/_CPTabLabelSelectedCenter.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelSelectedCenter.pngu;47;Resources/CPTabView/_CPTabLabelSelectedLeft.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelSelectedLeft.pngu;48;Resources/CPTabView/_CPTabLabelSelectedRight.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelSelectedRight.pngu;46;Resources/CPTabView/_CPTabLabelsViewCenter.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelsViewCenter.pngu;44;Resources/CPTabView/_CPTabLabelsViewLeft.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelsViewLeft.pngu;45;Resources/CPTabView/_CPTabLabelsViewRight.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelsViewRight.pngu;54;Resources/CPTabView/CPTabViewBezelBackgroundCenter.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBackgroundCenter.pngu;44;Resources/CPTabView/CPTabViewBezelBorder.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBorder.pngu;48;Resources/CPTabView/CPTabViewBezelBorderLeft.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBorderLeft.pngu;49;Resources/CPTabView/CPTabViewBezelBorderRight.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBorderRight.pngu;51;Resources/CPToolbarItem/CPToolbarItemSeparator0.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPToolbarItem/CPToolbarItemSeparator0.pngu;51;Resources/CPToolbarItem/CPToolbarItemSeparator1.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPToolbarItem/CPToolbarItemSeparator1.pngu;51;Resources/CPToolbarItem/CPToolbarItemSeparator2.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPToolbarItem/CPToolbarItemSeparator2.pngu;38;Resources/CPWindow/CPWindowShadow0.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow0.pngu;38;Resources/CPWindow/CPWindowShadow1.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow1.pngu;38;Resources/CPWindow/CPWindowShadow2.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow2.pngu;38;Resources/CPWindow/CPWindowShadow3.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow3.pngu;38;Resources/CPWindow/CPWindowShadow4.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow4.pngu;38;Resources/CPWindow/CPWindowShadow5.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow5.pngu;38;Resources/CPWindow/CPWindowShadow6.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow6.pngu;38;Resources/CPWindow/CPWindowShadow7.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow7.pngu;38;Resources/CPWindow/CPWindowShadow8.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow8.pngu;37;Resources/CPWindowResizeIndicator.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindowResizeIndicator.pngu;19;Resources/empty.png59;mhtml:Browser.environment/MHTMLData.txt!Resources/empty.pngu;31;Resources/FIXME_ImageShadow.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/FIXME_ImageShadow.pngu;25;Resources/GenericFile.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/GenericFile.pngu;34;Resources/HUDTheme/WindowClose.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/HUDTheme/WindowClose.pngu;40;Resources/HUDTheme/WindowCloseActive.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/HUDTheme/WindowCloseActive.pngu;26;Resources/minus_button.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/minus_button.pngu;25;Resources/plus_button.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/plus_button.pngu;27;Resources/slider_button.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/slider_button.pngu;29;Resources/slider_button_h.png69;mhtml:Browser.environment/MHTMLData.txt!Resources/slider_button_h.pngu;37;Resources/standardApplicationIcon.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/standardApplicationIcon.pngu;25;Resources/wheel_black.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/wheel_black.pngu;26;Resources/wheel_button.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/wheel_button.pngu;28;Resources/wheel_button_h.png68;mhtml:Browser.environment/MHTMLData.txt!Resources/wheel_button_h.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground0.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground0.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground1.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground1.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground2.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground2.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground3.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground3.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground4.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground4.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground5.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground5.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground6.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground6.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground7.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground7.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground8.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground8.pngu;59;Resources/CPWindow/Standard/CPWindowStandardCloseButton.png99;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButton.pngu;70;Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.pngu;66;Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png106;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.pngu;77;Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png117;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.pngu;62;Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png102;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.pngu;73;Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png113;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.pngu;62;Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png102;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.pngu;73;Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png113;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.pngu;52;Resources/CPWindow/Standard/CPWindowStandardTop0.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardTop0.pngu;52;Resources/CPWindow/Standard/CPWindowStandardTop1.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardTop1.pngu;52;Resources/CPWindow/Standard/CPWindowStandardTop2.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardTop2.png ADDED Site/Site/Frameworks/AppKit/Browser.environment/MHTMLTest.txt Index: Site/Site/Frameworks/AppKit/Browser.environment/MHTMLTest.txt ================================================================== --- Site/Site/Frameworks/AppKit/Browser.environment/MHTMLTest.txt +++ Site/Site/Frameworks/AppKit/Browser.environment/MHTMLTest.txt @@ -0,0 +1,9 @@ +/* +Content-Type: multipart/related; boundary="_SEPARATOR_" + +--_SEPARATOR_ +Content-Location:test +Content-Transfer-Encoding:base64 + +R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== +*/ ADDED Site/Site/Frameworks/AppKit/Browser.environment/dataURLs.txt Index: Site/Site/Frameworks/AppKit/Browser.environment/dataURLs.txt ================================================================== --- Site/Site/Frameworks/AppKit/Browser.environment/dataURLs.txt +++ Site/Site/Frameworks/AppKit/Browser.environment/dataURLs.txt cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/CommonJS.environment/AppKit.sj Index: Site/Site/Frameworks/AppKit/CommonJS.environment/AppKit.sj ================================================================== --- Site/Site/Frameworks/AppKit/CommonJS.environment/AppKit.sj +++ Site/Site/Frameworks/AppKit/CommonJS.environment/AppKit.sj @@ -0,0 +1,33476 @@ +@STATIC;1.0;p;15;_CPCornerView.jt;1340;@STATIC;1.0;i;8;CPView.jt;1309; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPCornerView"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("layoutSubviews"),function(_3,_4){ +with(_3){ +objj_msgSend(_3,"setBackgroundColor:",objj_msgSend(_3,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("_init"),function(_5,_6){ +with(_5){ +objj_msgSend(_5,"setBackgroundColor:",objj_msgSend(_5,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPCornerView").super_class},"initWithFrame:",_9); +if(_7){ +objj_msgSend(_7,"_init"); +} +return _7; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("_CPCornerView").super_class},"initWithCoder:",_c); +if(_a){ +objj_msgSend(_a,"_init"); +} +return _a; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_d,_e){ +with(_d){ +return "cornerview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_f,_10){ +with(_f){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null")],["background-color"]); +} +})]); +p;18;_CPDisplayServer.jt;1144;@STATIC;1.0;t;1125; +var _1=[],_2={},_3=[],_4={},_5=objj_msgSend(CPRunLoop,"mainRunLoop"); +_CPDisplayServerAddDisplayObject=function(_6){ +var _7=objj_msgSend(_6,"UID"); +if(typeof _2[_7]!=="undefined"){ +return; +} +var _8=_1.length; +_2[_7]=_8; +_1[_8]=_6; +}; +_CPDisplayServerAddLayoutObject=function(_9){ +var _a=objj_msgSend(_9,"UID"); +if(typeof _4[_a]!=="undefined"){ +return; +} +var _b=_3.length; +_4[_a]=_b; +_3[_b]=_9; +}; +var _c=objj_allocateClassPair(CPObject,"_CPDisplayServer"),_d=_c.isa; +objj_registerClassPair(_c); +class_addMethods(_d,[new objj_method(sel_getUid("run"),function(_e,_f){ +with(_e){ +while(_3.length||_1.length){ +var _10=0; +for(;_10<_3.length;++_10){ +var _11=_3[_10]; +delete _4[objj_msgSend(_11,"UID")]; +objj_msgSend(_11,"layoutIfNeeded"); +} +_3=[]; +_4={}; +_10=0; +for(;_10<_1.length;++_10){ +if(_3.length){ +break; +} +var _11=_1[_10]; +delete _2[objj_msgSend(_11,"UID")]; +objj_msgSend(_11,"displayIfNeeded"); +} +if(_10===_1.length){ +_1=[]; +_2={}; +}else{ +_1.splice(0,_10); +} +} +objj_msgSend(_5,"performSelector:target:argument:order:modes:",sel_getUid("run"),_e,nil,0,[CPDefaultRunLoopMode]); +} +})]); +objj_msgSend(_CPDisplayServer,"run"); +p;21;_CPImageAndTextView.jt;7255;@STATIC;1.0;I;21;Foundation/CPString.ji;9;CPColor.ji;8;CPFont.ji;9;CPImage.ji;8;CPView.ji;11;CPControl.jt;7144; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPControl.j",YES); +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5,_7=1<<6,_8=1<<7,_9=1<<8,_a=1<<9,_b=1<<10; +var _c=objj_allocateClassPair(CPView,"_CPImageAndTextView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_alignment"),new objj_ivar("_verticalAlignment"),new objj_ivar("_lineBreakMode"),new objj_ivar("_textColor"),new objj_ivar("_font"),new objj_ivar("_textShadowColor"),new objj_ivar("_textShadowOffset"),new objj_ivar("_imagePosition"),new objj_ivar("_imageScaling"),new objj_ivar("_imageOffset"),new objj_ivar("_shouldDimImage"),new objj_ivar("_image"),new objj_ivar("_text"),new objj_ivar("_textSize"),new objj_ivar("_flags")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:control:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPImageAndTextView").super_class},"initWithFrame:",_10); +if(_e){ +_textShadowOffset={width:0,height:0}; +objj_msgSend(_e,"setVerticalAlignment:",CPTopVerticalTextAlignment); +if(_11){ +objj_msgSend(_e,"setLineBreakMode:",objj_msgSend(_11,"lineBreakMode")); +objj_msgSend(_e,"setTextColor:",objj_msgSend(_11,"textColor")); +objj_msgSend(_e,"setAlignment:",objj_msgSend(_11,"alignment")); +objj_msgSend(_e,"setVerticalAlignment:",objj_msgSend(_11,"verticalAlignment")); +objj_msgSend(_e,"setFont:",objj_msgSend(_11,"font")); +objj_msgSend(_e,"setImagePosition:",objj_msgSend(_11,"imagePosition")); +objj_msgSend(_e,"setImageScaling:",objj_msgSend(_11,"imageScaling")); +objj_msgSend(_e,"setImageOffset:",objj_msgSend(_11,"imageOffset")); +}else{ +objj_msgSend(_e,"setLineBreakMode:",CPLineBreakByClipping); +objj_msgSend(_e,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_e,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",12)); +objj_msgSend(_e,"setImagePosition:",CPNoImage); +objj_msgSend(_e,"setImageScaling:",CPScaleNone); +} +_textSize=NULL; +} +return _e; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_12,_13,_14){ +with(_12){ +return objj_msgSend(_12,"initWithFrame:control:",_14,nil); +} +}),new objj_method(sel_getUid("setAlignment:"),function(_15,_16,_17){ +with(_15){ +if(_alignment===_17){ +return; +} +_alignment=_17; +} +}),new objj_method(sel_getUid("alignment"),function(_18,_19){ +with(_18){ +return _alignment; +} +}),new objj_method(sel_getUid("setVerticalAlignment:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_verticalAlignment===_1c){ +return; +} +_verticalAlignment=_1c; +_flags|=_5; +objj_msgSend(_1a,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("verticalAlignment"),function(_1d,_1e){ +with(_1d){ +return _verticalAlignment; +} +}),new objj_method(sel_getUid("setLineBreakMode:"),function(_1f,_20,_21){ +with(_1f){ +if(_lineBreakMode===_21){ +return; +} +_lineBreakMode=_21; +_flags|=_6; +objj_msgSend(_1f,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("lineBreakMode"),function(_22,_23){ +with(_22){ +return _lineBreakMode; +} +}),new objj_method(sel_getUid("setImagePosition:"),function(_24,_25,_26){ +with(_24){ +if(_imagePosition==_26){ +return; +} +if(_imagePosition==CPNoImage){ +_flags|=_2; +} +_imagePosition=_26; +_flags|=_a; +objj_msgSend(_24,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imagePosition"),function(_27,_28){ +with(_27){ +return _imagePosition; +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_29,_2a,_2b){ +with(_29){ +if(_imageScaling==_2b){ +return; +} +_imageScaling=_2b; +_flags|=_b; +objj_msgSend(_29,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imageScaling"),function(_2c,_2d){ +with(_2c){ +return _imageScaling; +} +}),new objj_method(sel_getUid("setDimsImage:"),function(_2e,_2f,_30){ +with(_2e){ +_30=!!_30; +if(_shouldDimImage!==_30){ +_shouldDimImage=_30; +objj_msgSend(_2e,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("setTextColor:"),function(_31,_32,_33){ +with(_31){ +if(_textColor===_33){ +return; +} +_textColor=_33; +} +}),new objj_method(sel_getUid("textColor"),function(_34,_35){ +with(_34){ +return _textColor; +} +}),new objj_method(sel_getUid("setFont:"),function(_36,_37,_38){ +with(_36){ +if(_font===_38){ +return; +} +_font=_38; +_flags|=_8; +_textSize=NULL; +objj_msgSend(_36,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("font"),function(_39,_3a){ +with(_39){ +return _font; +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_textShadowColor===_3d){ +return; +} +_textShadowColor=_3d; +_flags|=_9; +objj_msgSend(_3b,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_3e,_3f){ +with(_3e){ +return _textShadowColor; +} +}),new objj_method(sel_getUid("setTextShadowOffset:"),function(_40,_41,_42){ +with(_40){ +if((_textShadowOffset.width==_42.width&&_textShadowOffset.height==_42.height)){ +return; +} +_textShadowOffset={width:_42.width,height:_42.height}; +objj_msgSend(_40,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("textShadowOffset"),function(_43,_44){ +with(_43){ +return _textShadowOffset; +} +}),new objj_method(sel_getUid("setImage:"),function(_45,_46,_47){ +with(_45){ +if(_image==_47){ +return; +} +if(objj_msgSend(_image,"delegate")===_45){ +objj_msgSend(_image,"setDelegate:",nil); +} +_image=_47; +_flags|=_2; +if(objj_msgSend(_image,"loadStatus")!==CPImageLoadStatusCompleted){ +objj_msgSend(_image,"setDelegate:",_45); +} +objj_msgSend(_45,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setImageOffset:"),function(_48,_49,_4a){ +with(_48){ +if(_imageOffset===_4a){ +return; +} +_imageOffset=_4a; +objj_msgSend(_48,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imageOffset"),function(_4b,_4c){ +with(_4b){ +return _imageOffset; +} +}),new objj_method(sel_getUid("imageDidLoad:"),function(_4d,_4e,_4f){ +with(_4d){ +if(_4f===_image){ +_flags|=_2; +objj_msgSend(_4d,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("image"),function(_50,_51){ +with(_50){ +return _image; +} +}),new objj_method(sel_getUid("setText:"),function(_52,_53,_54){ +with(_52){ +if(_text===_54){ +return; +} +_text=_54; +_flags|=_3; +_textSize=NULL; +objj_msgSend(_52,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("text"),function(_55,_56){ +with(_55){ +return _text; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_57,_58){ +with(_57){ +_flags=0; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_59,_5a){ +with(_59){ +var _5b=CGSizeMakeZero(); +if((_imagePosition!==CPNoImage)&&_image){ +var _5c=objj_msgSend(_image,"size"); +_5b.width+=_5c.width; +_5b.height+=_5c.height; +} +if((_imagePosition!==CPImageOnly)&&objj_msgSend(_text,"length")>0){ +if(!_textSize){ +_textSize=objj_msgSend(_text,"sizeWithFont:",_font?_font:objj_msgSend(CPFont,"systemFontOfSize:",12)); +} +if(_imagePosition===CPImageLeft||_imagePosition===CPImageRight){ +_5b.width+=_textSize.width+_imageOffset; +_5b.height=MAX(_5b.height,_textSize.height); +}else{ +if(_imagePosition===CPImageAbove||_imagePosition===CPImageBelow){ +_5b.width=MAX(_5b.width,_textSize.width); +_5b.height+=_textSize.height+_imageOffset; +}else{ +_5b.width=MAX(_5b.width,_textSize.width); +_5b.height=MAX(_5b.height,_textSize.height); +} +} +} +objj_msgSend(_59,"setFrameSize:",_5b); +} +})]); +p;29;_CPToolbarFlexibleSpaceItem.jt;794;@STATIC;1.0;i;15;CPToolbarItem.jt;756; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarFlexibleSpaceItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarFlexibleSpaceItem").super_class},"initWithItemIdentifier:",CPToolbarFlexibleSpaceItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(10000,32)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;25;_CPToolbarSeparatorItem.jt;780;@STATIC;1.0;i;15;CPToolbarItem.jt;742; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarSeparatorItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarSeparatorItem").super_class},"initWithItemIdentifier:",CPToolbarSeparatorItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(2,0)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(2,100000)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;26;_CPToolbarShowColorsItem.jt;1230;@STATIC;1.0;i;15;CPToolbarItem.jt;1191; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarShowColorsItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarShowColorsItem").super_class},"initWithItemIdentifier:",CPToolbarShowColorsItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setLabel:","Colors"); +objj_msgSend(_3,"setPaletteLabel:","Show Colors"); +objj_msgSend(_3,"setTarget:",CPApp); +objj_msgSend(_3,"setAction:",sel_getUid("orderFrontColorPanel:")); +objj_msgSend(_3,"setImage:",objj_msgSend(CPImage,"imageNamed:",CPImageNameColorPanel)); +objj_msgSend(_3,"setAlternateImage:",objj_msgSend(CPImage,"imageNamed:",CPImageNameColorPanelHighlighted)); +objj_msgSend(_3,"setToolTip:","Show the Colors panel."); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;21;_CPToolbarSpaceItem.jt;767;@STATIC;1.0;i;15;CPToolbarItem.jt;729; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarSpaceItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarSpaceItem").super_class},"initWithItemIdentifier:",CPToolbarSpaceItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(32,32)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;8;AppKit.jt;4031;@STATIC;1.0;i;9;CALayer.ji;9;CPAlert.ji;13;CPAnimation.ji;15;CPApplication.ji;14;CPBezierPath.ji;7;CPBox.ji;11;CPBrowser.ji;10;CPButton.ji;13;CPButtonBar.ji;12;CPCheckBox.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;14;CPCibLoading.ji;22;CPCibOutletConnector.ji;12;CPClipView.ji;18;CPCollectionView.ji;22;CPCollectionViewItem.ji;9;CPColor.ji;14;CPColorPanel.ji;13;CPColorWell.ji;17;CPCompatibility.ji;11;CPControl.ji;10;CPCookie.ji;10;CPCursor.ji;12;CPDocument.ji;22;CPDocumentController.ji;9;CPEvent.ji;14;CPFlashMovie.ji;13;CPFlashView.ji;8;CPFont.ji;15;CPFontManager.ji;12;CPGeometry.ji;12;CPGraphics.ji;9;CPImage.ji;13;CPImageView.ji;14;CPKeyBinding.ji;8;CPMenu.ji;12;CPMenuItem.ji;13;CPOpenPanel.ji;15;CPOutlineView.ji;9;CPPanel.ji;14;CPPasteboard.ji;15;CPPopUpButton.ji;21;CPProgressIndicator.ji;9;CPRadio.ji;13;CPResponder.ji;12;CPScroller.ji;14;CPScrollView.ji;15;CPSearchField.ji;19;CPSecureTextField.ji;20;CPSegmentedControl.ji;10;CPShadow.ji;10;CPSlider.ji;13;CPSplitView.ji;15;CPTableColumn.ji;13;CPTableView.ji;11;CPTabView.ji;8;CPText.ji;13;CPTextField.ji;11;CPToolbar.ji;15;CPToolbarItem.ji;12;CPTreeNode.ji;8;CPView.ji;17;CPViewAnimation.ji;18;CPViewController.ji;11;CPWebView.ji;10;CPWindow.ji;20;CPWindowController.ji;19;CPArrayController.jt;2748; +objj_executeFile("CALayer.j",YES); +objj_executeFile("CPAlert.j",YES); +objj_executeFile("CPAnimation.j",YES); +objj_executeFile("CPApplication.j",YES); +objj_executeFile("CPBezierPath.j",YES); +objj_executeFile("CPBox.j",YES); +objj_executeFile("CPBrowser.j",YES); +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPButtonBar.j",YES); +objj_executeFile("CPCheckBox.j",YES); +objj_executeFile("CPCib.j",YES); +objj_executeFile("CPCibConnector.j",YES); +objj_executeFile("CPCibControlConnector.j",YES); +objj_executeFile("CPCibLoading.j",YES); +objj_executeFile("CPCibOutletConnector.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPCollectionView.j",YES); +objj_executeFile("CPCollectionViewItem.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPColorPanel.j",YES); +objj_executeFile("CPColorWell.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPCookie.j",YES); +objj_executeFile("CPCursor.j",YES); +objj_executeFile("CPDocument.j",YES); +objj_executeFile("CPDocumentController.j",YES); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPFlashMovie.j",YES); +objj_executeFile("CPFlashView.j",YES); +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPFontManager.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPGraphics.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPKeyBinding.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPMenuItem.j",YES); +objj_executeFile("CPOpenPanel.j",YES); +objj_executeFile("CPOutlineView.j",YES); +objj_executeFile("CPPanel.j",YES); +objj_executeFile("CPPasteboard.j",YES); +objj_executeFile("CPPopUpButton.j",YES); +objj_executeFile("CPProgressIndicator.j",YES); +objj_executeFile("CPRadio.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPScroller.j",YES); +objj_executeFile("CPScrollView.j",YES); +objj_executeFile("CPSearchField.j",YES); +objj_executeFile("CPSecureTextField.j",YES); +objj_executeFile("CPSegmentedControl.j",YES); +objj_executeFile("CPShadow.j",YES); +objj_executeFile("CPSlider.j",YES); +objj_executeFile("CPSplitView.j",YES); +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPTabView.j",YES); +objj_executeFile("CPText.j",YES); +objj_executeFile("CPTextField.j",YES); +objj_executeFile("CPToolbar.j",YES); +objj_executeFile("CPToolbarItem.j",YES); +objj_executeFile("CPTreeNode.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPViewAnimation.j",YES); +objj_executeFile("CPViewController.j",YES); +objj_executeFile("CPWebView.j",YES); +objj_executeFile("CPWindow.j",YES); +objj_executeFile("CPWindowController.j",YES); +objj_executeFile("CPArrayController.j",YES); +p;17;CPAccordionView.jt;10946;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;32;Foundation/CPKeyValueObserving.jI;23;Foundation/CPIndexSet.jI;21;Foundation/CPString.jI;15;AppKit/CPView.jt;10764; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPKeyValueObserving.j",NO); +objj_executeFile("Foundation/CPIndexSet.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPAccordionViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier"),new objj_ivar("_view"),new objj_ivar("_label")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("identifier"),function(_3,_4){ +with(_3){ +return _identifier; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_5,_6,_7){ +with(_5){ +_identifier=_7; +} +}),new objj_method(sel_getUid("view"),function(_8,_9){ +with(_8){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_a,_b,_c){ +with(_a){ +_view=_c; +} +}),new objj_method(sel_getUid("label"),function(_d,_e){ +with(_d){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_f,_10,_11){ +with(_f){ +_label=_11; +} +}),new objj_method(sel_getUid("init"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_14,_15,_16){ +with(_14){ +_14=objj_msgSendSuper({receiver:_14,super_class:objj_getClass("CPAccordionViewItem").super_class},"init"); +if(_14){ +objj_msgSend(_14,"setIdentifier:",_16); +} +return _14; +} +})]); +var _1=objj_allocateClassPair(CPView,"CPAccordionView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_dirtyItemIndex"),new objj_ivar("_itemHeaderPrototype"),new objj_ivar("_items"),new objj_ivar("_itemViews"),new objj_ivar("_expandedItemIndexes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_17,_18,_19){ +with(_17){ +_17=objj_msgSendSuper({receiver:_17,super_class:objj_getClass("CPAccordionView").super_class},"initWithFrame:",_19); +if(_17){ +_items=[]; +_itemViews=[]; +_expandedItemIndexes=objj_msgSend(CPIndexSet,"indexSet"); +objj_msgSend(_17,"setItemHeaderPrototype:",objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:100,height:24}})); +} +return _17; +} +}),new objj_method(sel_getUid("setItemHeaderPrototype:"),function(_1a,_1b,_1c){ +with(_1a){ +_itemHeaderPrototype=_1c; +} +}),new objj_method(sel_getUid("itemHeaderPrototype"),function(_1d,_1e){ +with(_1d){ +return _itemHeaderPrototype; +} +}),new objj_method(sel_getUid("items"),function(_1f,_20){ +with(_1f){ +return _items; +} +}),new objj_method(sel_getUid("addItem:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(_21,"insertItem:atIndex:",_23,_items.length); +} +}),new objj_method(sel_getUid("insertItem:atIndex:"),function(_24,_25,_26,_27){ +with(_24){ +objj_msgSend(_expandedItemIndexes,"addIndex:",_27); +var _28=objj_msgSend(objj_msgSend(_CPAccordionItemView,"alloc"),"initWithAccordionView:",_24); +objj_msgSend(_28,"setIndex:",_27); +objj_msgSend(_28,"setLabel:",objj_msgSend(_26,"label")); +objj_msgSend(_28,"setContentView:",objj_msgSend(_26,"view")); +objj_msgSend(_24,"addSubview:",_28); +objj_msgSend(_items,"insertObject:atIndex:",_26,_27); +objj_msgSend(_itemViews,"insertObject:atIndex:",_28,_27); +objj_msgSend(_24,"_invalidateItemsStartingAtIndex:",_27); +objj_msgSend(_24,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeItem:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_29,"removeItemAtIndex:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_2b)); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_expandedItemIndexes,"removeIndex:",_2e); +objj_msgSend(_itemViews[_2e],"removeFromSuperview"); +objj_msgSend(_items,"removeObjectAtIndex:",_2e); +objj_msgSend(_itemViews,"removeObjectAtIndex:",_2e); +objj_msgSend(_2c,"_invalidateItemsStartingAtIndex:",_2e); +objj_msgSend(_2c,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeAllItems"),function(_2f,_30){ +with(_2f){ +var _31=_items.length; +while(_31--){ +objj_msgSend(_2f,"removeItemAtIndex:",_31); +} +} +}),new objj_method(sel_getUid("expandItemAtIndex:"),function(_32,_33,_34){ +with(_32){ +if(!objj_msgSend(_itemViews[_34],"isCollapsed")){ +return; +} +objj_msgSend(_expandedItemIndexes,"addIndex:",_34); +objj_msgSend(_itemViews[_34],"setCollapsed:",NO); +objj_msgSend(_32,"_invalidateItemsStartingAtIndex:",_34); +} +}),new objj_method(sel_getUid("collapseItemAtIndex:"),function(_35,_36,_37){ +with(_35){ +if(objj_msgSend(_itemViews[_37],"isCollapsed")){ +return; +} +objj_msgSend(_expandedItemIndexes,"removeIndex:",_37); +objj_msgSend(_itemViews[_37],"setCollapsed:",YES); +objj_msgSend(_35,"_invalidateItemsStartingAtIndex:",_37); +} +}),new objj_method(sel_getUid("toggleItemAtIndex:"),function(_38,_39,_3a){ +with(_38){ +var _3b=_itemViews[_3a]; +if(objj_msgSend(_3b,"isCollapsed")){ +objj_msgSend(_38,"expandItemAtIndex:",_3a); +}else{ +objj_msgSend(_38,"collapseItemAtIndex:",_3a); +} +} +}),new objj_method(sel_getUid("expandedItemIndexes"),function(_3c,_3d){ +with(_3c){ +return _expandedItemIndexes; +} +}),new objj_method(sel_getUid("collapsedItemIndexes"),function(_3e,_3f){ +with(_3e){ +var _40=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,_items.length)); +objj_msgSend(_40,"removeIndexes:",_expandedIndexes); +return _40; +} +}),new objj_method(sel_getUid("setEnabled:forItemAtIndex:"),function(_41,_42,_43,_44){ +with(_41){ +var _45=_itemViews[_44]; +if(!_45){ +return; +} +if(!_43){ +objj_msgSend(_41,"collapseItemAtIndex:",_44); +}else{ +objj_msgSend(_41,"expandItemAtIndex:",_44); +} +objj_msgSend(_45,"setEnabled:",_43); +} +}),new objj_method(sel_getUid("_invalidateItemsStartingAtIndex:"),function(_46,_47,_48){ +with(_46){ +if(_dirtyItemIndex===CPNotFound){ +_dirtyItemIndex=_48; +} +_dirtyItemIndex=MIN(_dirtyItemIndex,_48); +objj_msgSend(_46,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_49,_4a,_4b){ +with(_49){ +var _4c=(objj_msgSend(_49,"frame").size.width); +objj_msgSendSuper({receiver:_49,super_class:objj_getClass("CPAccordionView").super_class},"setFrameSize:",_4b); +if(_4c!==(objj_msgSend(_49,"frame").size.width)){ +objj_msgSend(_49,"_invalidateItemsStartingAtIndex:",0); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_4d,_4e){ +with(_4d){ +if(_items.length<=0){ +return objj_msgSend(_4d,"setFrameSize:",{width:(objj_msgSend(_4d,"frame").size.width),height:0}); +} +if(_dirtyItemIndex===CPNotFound){ +return; +} +_dirtyItemIndex=MIN(_dirtyItemIndex,_items.length-1); +var _4f=_dirtyItemIndex,_50=_itemViews.length,_51=(objj_msgSend(_4d,"bounds").size.width),y=_4f>0?CGRectGetMaxY(objj_msgSend(_itemViews[_4f-1],"frame")):0; +_dirtyItemIndex=CPNotFound; +for(;_4f<_50;++_4f){ +var _52=_itemViews[_4f]; +objj_msgSend(_52,"setFrameY:width:",y,_51); +y=CGRectGetMaxY(objj_msgSend(_52,"frame")); +} +objj_msgSend(_4d,"setFrameSize:",{width:(objj_msgSend(_4d,"frame").size.width),height:y}); +} +})]); +var _1=objj_allocateClassPair(CPView,"_CPAccordionItemView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_accordionView"),new objj_ivar("_isCollapsed"),new objj_ivar("_index"),new objj_ivar("_headerView"),new objj_ivar("_contentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isCollapsed"),function(_53,_54){ +with(_53){ +return _isCollapsed; +} +}),new objj_method(sel_getUid("setCollapsed:"),function(_55,_56,_57){ +with(_55){ +_isCollapsed=_57; +} +}),new objj_method(sel_getUid("index"),function(_58,_59){ +with(_58){ +return _index; +} +}),new objj_method(sel_getUid("setIndex:"),function(_5a,_5b,_5c){ +with(_5a){ +_index=_5c; +} +}),new objj_method(sel_getUid("initWithAccordionView:"),function(_5d,_5e,_5f){ +with(_5d){ +_5d=objj_msgSendSuper({receiver:_5d,super_class:objj_getClass("_CPAccordionItemView").super_class},"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +if(_5d){ +_accordionView=_5f; +_isCollapsed=NO; +var _60=objj_msgSend(_5d,"bounds"); +_headerView=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",objj_msgSend(_accordionView,"itemHeaderPrototype"))); +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setTarget:"))&&objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_headerView,"setTarget:",_5d); +objj_msgSend(_headerView,"setAction:",sel_getUid("toggle:")); +} +objj_msgSend(_5d,"addSubview:",_headerView); +} +return _5d; +} +}),new objj_method(sel_getUid("toggle:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_accordionView,"toggleItemAtIndex:",objj_msgSend(_61,"index")); +} +}),new objj_method(sel_getUid("setLabel:"),function(_64,_65,_66){ +with(_64){ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setTitle:"))){ +objj_msgSend(_headerView,"setTitle:",_66); +}else{ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setLabel:"))){ +objj_msgSend(_headerView,"setLabel:",_66); +}else{ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setStringValue:"))){ +objj_msgSend(_headerView,"setStringValue:",_66); +} +} +} +} +}),new objj_method(sel_getUid("setEnabled:"),function(_67,_68,_69){ +with(_67){ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_headerView,"setEnabled:",_69); +} +} +}),new objj_method(sel_getUid("setContentView:"),function(_6a,_6b,_6c){ +with(_6a){ +if(_contentView===_6c){ +return; +} +objj_msgSend(_contentView,"removeObserver:forKeyPath:",_6a,"frame"); +objj_msgSend(_contentView,"removeFromSuperview"); +_contentView=_6c; +objj_msgSend(_contentView,"addObserver:forKeyPath:options:context:",_6a,"frame",CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew,NULL); +objj_msgSend(_6a,"addSubview:",_contentView); +objj_msgSend(_accordionView,"_invalidateItemsStartingAtIndex:",objj_msgSend(_6a,"index")); +} +}),new objj_method(sel_getUid("setFrameY:width:"),function(_6d,_6e,aY,_6f){ +with(_6d){ +var _70=(objj_msgSend(_headerView,"frame").size.height); +objj_msgSend(_headerView,"setFrameSize:",{width:_6f,height:_70}); +objj_msgSend(_contentView,"setFrameOrigin:",{x:0,y:_70}); +if(objj_msgSend(_6d,"isCollapsed")){ +objj_msgSend(_6d,"setFrame:",{origin:{x:0,y:aY},size:{width:_6f,height:_70}}); +}else{ +var _71=(objj_msgSend(_contentView,"frame").size.height); +objj_msgSend(_contentView,"setFrameSize:",{width:_6f,height:_71}); +objj_msgSend(_6d,"setFrame:",{origin:{x:0,y:aY},size:{width:_6f,height:_71+_70}}); +} +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_72,_73,_74){ +with(_72){ +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_75,_76,_77,_78,_79,_7a){ +with(_75){ +if(_77==="frame"&&!CGRectEqualToRect(objj_msgSend(_79,"objectForKey:",CPKeyValueChangeOldKey),objj_msgSend(_79,"objectForKey:",CPKeyValueChangeNewKey))){ +objj_msgSend(_accordionView,"_invalidateItemsStartingAtIndex:",objj_msgSend(_75,"index")); +} +} +})]); +p;9;CPAlert.jt;11741;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;22;AppKit/CPApplication.jI;17;AppKit/CPButton.jI;16;AppKit/CPColor.jI;15;AppKit/CPFont.jI;16;AppKit/CPImage.jI;20;AppKit/CPImageView.jI;16;AppKit/CPPanel.jI;20;AppKit/CPTextField.jt;11487; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPApplication.j",NO); +objj_executeFile("AppKit/CPButton.j",NO); +objj_executeFile("AppKit/CPColor.j",NO); +objj_executeFile("AppKit/CPFont.j",NO); +objj_executeFile("AppKit/CPImage.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +objj_executeFile("AppKit/CPPanel.j",NO); +objj_executeFile("AppKit/CPTextField.j",NO); +CPWarningAlertStyle=0; +CPInformationalAlertStyle=1; +CPCriticalAlertStyle=2; +var _1=objj_allocateClassPair(CPView,"CPAlert"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_alertPanel"),new objj_ivar("_messageLabel"),new objj_ivar("_informativeLabel"),new objj_ivar("_alertImageView"),new objj_ivar("_alertStyle"),new objj_ivar("_windowTitle"),new objj_ivar("_windowStyle"),new objj_ivar("_buttons"),new objj_ivar("_delegate"),new objj_ivar("_didEndSelector"),new objj_ivar("_modalDelegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPAlert").super_class},"init")){ +_buttons=objj_msgSend(CPArray,"array"); +_alertStyle=CPWarningAlertStyle; +_alertPanel=nil; +_windowStyle=nil; +_didEndSelector=nil; +_messageLabel=objj_msgSend(CPTextField,"labelWithTitle:","Alert"); +_alertImageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +_informativeLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return _3; +} +}),new objj_method(sel_getUid("setWindowStyle:"),function(_5,_6,_7){ +with(_5){ +_windowStyle=_7; +objj_msgSend(_5,"setTheme:",(_windowStyle&CPHUDBackgroundWindowMask)?objj_msgSend(CPTheme,"defaultHudTheme"):objj_msgSend(CPTheme,"defaultTheme")); +_alertPanel=nil; +} +}),new objj_method(sel_getUid("_createPanel"),function(_8,_9){ +with(_8){ +var _a=CGRectMakeZero(); +_a.size=objj_msgSend(_8,"currentValueForThemeAttribute:","size"); +_alertPanel=objj_msgSend(objj_msgSend(CPPanel,"alloc"),"initWithContentRect:styleMask:",_a,_windowStyle?_windowStyle|CPTitledWindowMask:CPTitledWindowMask); +var _b=objj_msgSend(_alertPanel,"contentView"),_c=objj_msgSend(_buttons,"count"); +if(_c){ +while(_c--){ +objj_msgSend(_b,"addSubview:",_buttons[_c]); +} +}else{ +objj_msgSend(_8,"addButtonWithTitle:","OK"); +} +objj_msgSend(_b,"addSubview:",_messageLabel); +objj_msgSend(_b,"addSubview:",_alertImageView); +objj_msgSend(_b,"addSubview:",_informativeLabel); +} +}),new objj_method(sel_getUid("setTitle:"),function(_d,_e,_f){ +with(_d){ +_windowTitle=_f; +} +}),new objj_method(sel_getUid("title"),function(_10,_11){ +with(_10){ +return _windowTitle; +} +}),new objj_method(sel_getUid("windowStyle"),function(_12,_13){ +with(_12){ +return _windowStyle; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_14,_15,_16){ +with(_14){ +_delegate=_16; +} +}),new objj_method(sel_getUid("delegate"),function(_17,_18){ +with(_17){ +return _delegate; +} +}),new objj_method(sel_getUid("setAlertStyle:"),function(_19,_1a,_1b){ +with(_19){ +_alertStyle=_1b; +} +}),new objj_method(sel_getUid("alertStyle"),function(_1c,_1d){ +with(_1c){ +return _alertStyle; +} +}),new objj_method(sel_getUid("setMessageText:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_messageLabel,"setStringValue:",_20); +} +}),new objj_method(sel_getUid("messageText"),function(_21,_22){ +with(_21){ +return objj_msgSend(_messageLabel,"stringValue"); +} +}),new objj_method(sel_getUid("setInformativeText:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(_informativeLabel,"setStringValue:",_25); +} +}),new objj_method(sel_getUid("informativeText"),function(_26,_27){ +with(_26){ +return objj_msgSend(_informativeLabel,"stringValue"); +} +}),new objj_method(sel_getUid("addButtonWithTitle:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"bounds"),_2c=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMakeZero()),_2d=objj_msgSend(_buttons,"count"); +objj_msgSend(_2c,"setTitle:",_2a); +objj_msgSend(_2c,"setTarget:",_28); +objj_msgSend(_2c,"setTag:",_2d); +objj_msgSend(_2c,"setAction:",sel_getUid("_dismissAlert:")); +objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"addSubview:",_2c); +if(_2d==0){ +objj_msgSend(_2c,"setKeyEquivalent:",CPCarriageReturnCharacter); +}else{ +if(objj_msgSend(_2a,"lowercaseString")==="cancel"){ +objj_msgSend(_2c,"setKeyEquivalent:",CPEscapeFunctionKey); +}else{ +objj_msgSend(_2c,"setKeyEquivalent:",nil); +} +} +objj_msgSend(_buttons,"insertObject:atIndex:",_2c,0); +} +}),new objj_method(sel_getUid("layoutPanel"),function(_2e,_2f){ +with(_2e){ +if(!_alertPanel){ +objj_msgSend(_2e,"_createPanel"); +} +var _30=objj_msgSend(_2e,"currentValueForThemeAttribute:","content-inset"),_31=objj_msgSend(_2e,"currentValueForThemeAttribute:","image-offset"),_32,_33; +switch(_alertStyle){ +case CPWarningAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","warning-image"); +_32="Warning"; +break; +case CPInformationalAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","information-image"); +_32="Information"; +break; +case CPCriticalAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","error-image"); +_32="Error"; +break; +} +objj_msgSend(_alertImageView,"setImage:",_33); +var _34=_33?objj_msgSend(_33,"size"):CGSizeMakeZero(); +objj_msgSend(_alertImageView,"setFrame:",CGRectMake(_31.x,_31.y,_34.width,_34.height)); +objj_msgSend(_alertPanel,"setTitle:",_windowTitle?_windowTitle:_32); +objj_msgSend(_alertPanel,"setFloatingPanel:",YES); +objj_msgSend(_alertPanel,"center"); +objj_msgSend(_messageLabel,"setTextColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-color")); +objj_msgSend(_messageLabel,"setFont:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-font")); +objj_msgSend(_messageLabel,"setTextShadowColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-shadow-color")); +objj_msgSend(_messageLabel,"setTextShadowOffset:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-shadow-offset")); +objj_msgSend(_messageLabel,"setAlignment:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-alignment")); +objj_msgSend(_messageLabel,"setLineBreakMode:",CPLineBreakByWordWrapping); +objj_msgSend(_informativeLabel,"setTextColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-color")); +objj_msgSend(_informativeLabel,"setFont:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-font")); +objj_msgSend(_informativeLabel,"setTextShadowColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-shadow-color")); +objj_msgSend(_informativeLabel,"setTextShadowOffset:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-shadow-offset")); +objj_msgSend(_informativeLabel,"setLineBreakMode:",CPLineBreakByWordWrapping); +var _35=objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"bounds"),_36=CGRectGetWidth(_35)-_30.right,_37=objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-offset"),_38=objj_msgSend(_2e,"currentValueForThemeAttribute:","button-offset"),_39=_36-_30.left,_3a=objj_msgSend((objj_msgSend(_messageLabel,"stringValue")||" "),"sizeWithFont:inWidth:",objj_msgSend(_messageLabel,"font"),_39),_3b=objj_msgSend(_informativeLabel,"stringValue"),_3c=objj_msgSend((_3b||" "),"sizeWithFont:inWidth:",objj_msgSend(_informativeLabel,"font"),_39),_3d=6; +objj_msgSend(_messageLabel,"setFrame:",CGRectMake(_30.left,_30.top,_39,_3a.height+_3d)); +objj_msgSend(_informativeLabel,"setFrame:",CGRectMake(_30.left,CGRectGetMaxY(objj_msgSend(_messageLabel,"frame"))+_37,_39,_3c.height+_3d)); +objj_msgSend(_informativeLabel,"setHidden:",!_3b); +var _3e=_buttons[0],_3f=MAX(CGRectGetMaxY(objj_msgSend(_alertImageView,"frame")),CGRectGetMaxY(_3b?objj_msgSend(_informativeLabel,"frame"):objj_msgSend(_messageLabel,"frame")))+_38; +objj_msgSend(_3e,"setTheme:",objj_msgSend(_2e,"theme")); +objj_msgSend(_3e,"sizeToFit"); +var _40=objj_msgSend(_2e,"currentValueForThemeAttribute:","size"),_41=MAX(_40.height,_3f+CGRectGetHeight(objj_msgSend(_3e,"bounds"))+_30.bottom),_42=_41-CGRectGetHeight(_35),_43=CGSizeMakeCopy(objj_msgSend(_alertPanel,"frame").size); +_43.height+=_42; +objj_msgSend(_alertPanel,"setFrameSize:",_43); +var _44=objj_msgSend(_buttons,"count"); +while(_44--){ +var _45=_buttons[_44]; +objj_msgSend(_45,"setTheme:",objj_msgSend(_2e,"theme")); +objj_msgSend(_45,"sizeToFit"); +var _46=objj_msgSend(_45,"bounds"),_47=MAX(80,CGRectGetWidth(_46)),_48=CGRectGetHeight(_46); +_36-=_47; +objj_msgSend(_45,"setFrame:",CGRectMake(_36,_3f,_47,_48)); +_36-=10; +} +} +}),new objj_method(sel_getUid("runModal"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"layoutPanel"); +objj_msgSend(CPApp,"runModalForWindow:",_alertPanel); +} +}),new objj_method(sel_getUid("beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:"),function(_4b,_4c,_4d,_4e,_4f,_50){ +with(_4b){ +if(!(_windowStyle&CPDocModalWindowMask)){ +objj_msgSend(_4b,"setWindowStyle:",CPDocModalWindowMask); +} +objj_msgSend(_4b,"layoutPanel"); +_didEndSelector=_4f; +_modalDelegate=_4e; +objj_msgSend(CPApp,"beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",_alertPanel,_4d,_4b,sel_getUid("_alertDidEnd:returnCode:contextInfo:"),_50); +} +}),new objj_method(sel_getUid("beginSheetModalForWindow:"),function(_51,_52,_53){ +with(_51){ +if(!(_windowStyle&CPDocModalWindowMask)){ +objj_msgSend(_51,"setWindowStyle:",CPDocModalWindowMask); +} +objj_msgSend(_51,"layoutPanel"); +objj_msgSend(CPApp,"beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",_alertPanel,_53,_51,sel_getUid("_alertDidEnd:returnCode:contextInfo:"),nil); +} +}),new objj_method(sel_getUid("_alertDidEnd:returnCode:contextInfo:"),function(_54,_55,_56,_57,_58){ +with(_54){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("alertDidEnd:returnCode:"))){ +objj_msgSend(_delegate,"alertDidEnd:returnCode:",_54,_57); +} +if(_didEndSelector){ +objj_msgSend(_modalDelegate,_didEndSelector,_54,_57,_58); +} +_didEndSelector=nil; +_modalDelegate=nil; +} +}),new objj_method(sel_getUid("_dismissAlert:"),function(_59,_5a,_5b){ +with(_59){ +if(objj_msgSend(_alertPanel,"isSheet")){ +objj_msgSend(CPApp,"endSheet:returnCode:",_alertPanel,objj_msgSend(_5b,"tag")); +}else{ +objj_msgSend(CPApp,"abortModal"); +objj_msgSend(_alertPanel,"close"); +objj_msgSend(_59,"_alertDidEnd:returnCode:contextInfo:",nil,objj_msgSend(_5b,"tag"),nil); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_5c,_5d){ +with(_5c){ +return "alert"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_5e,_5f){ +with(_5e){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CGSizeMake(400,110),CGInsetMake(15,15,15,50),6,10,CPJustifiedTextAlignment,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"boldSystemFontOfSize:",13),objj_msgSend(CPNull,"null"),CGSizeMakeZero(),CPJustifiedTextAlignment,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"systemFontOfSize:",12),objj_msgSend(CPNull,"null"),CGSizeMakeZero(),CGPointMake(15,12),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["size","content-inset","informative-offset","button-offset","message-text-alignment","message-text-color","message-text-font","message-text-shadow-color","message-text-shadow-offset","informative-text-alignment","informative-text-color","informative-text-font","informative-text-shadow-color","informative-text-shadow-offset","image-offset","information-image","warning-image","error-image"]); +} +})]); +p;13;CPAnimation.jt;5490;@STATIC;1.0;I;21;Foundation/CPObject.ji;23;CAMediaTimingFunction.jt;5417; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CAMediaTimingFunction.j",YES); +CPAnimationEaseInOut=0; +CPAnimationEaseIn=1; +CPAnimationEaseOut=2; +CPAnimationLinear=3; +ACTUAL_FRAME_RATE=0; +var _1=objj_allocateClassPair(CPObject,"CPAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_lastTime"),new objj_ivar("_duration"),new objj_ivar("_animationCurve"),new objj_ivar("_timingFunction"),new objj_ivar("_frameRate"),new objj_ivar("_progress"),new objj_ivar("_delegate"),new objj_ivar("_timer")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithDuration:animationCurve:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPAnimation").super_class},"init"); +if(_3){ +_progress=0; +_duration=MAX(0,_5); +_frameRate=60; +objj_msgSend(_3,"setAnimationCurve:",_6); +} +return _3; +} +}),new objj_method(sel_getUid("setAnimationCurve:"),function(_7,_8,_9){ +with(_7){ +switch(_9){ +case CPAnimationEaseInOut: +timingFunctionName=kCAMediaTimingFunctionEaseInEaseOut; +break; +case CPAnimationEaseIn: +timingFunctionName=kCAMediaTimingFunctionEaseIn; +break; +case CPAnimationEaseOut: +timingFunctionName=kCAMediaTimingFunctionEaseOut; +break; +case CPAnimationLinear: +timingFunctionName=kCAMediaTimingFunctionLinear; +break; +default: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid value provided for animation curve"); +break; +} +_animationCurve=_9; +_timingFunction=objj_msgSend(CAMediaTimingFunction,"functionWithName:",timingFunctionName); +} +}),new objj_method(sel_getUid("animationCurve"),function(_a,_b){ +with(_a){ +return _animationCurve; +} +}),new objj_method(sel_getUid("setDuration:"),function(_c,_d,_e){ +with(_c){ +if(_e<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"aDuration can't be negative"); +} +_duration=_e; +} +}),new objj_method(sel_getUid("duration"),function(_f,_10){ +with(_f){ +return _duration; +} +}),new objj_method(sel_getUid("setFrameRate:"),function(_11,_12,_13){ +with(_11){ +if(_13<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"frameRate can't be negative"); +} +_frameRate=_13; +} +}),new objj_method(sel_getUid("frameRate"),function(_14,_15){ +with(_14){ +return _frameRate; +} +}),new objj_method(sel_getUid("delegate"),function(_16,_17){ +with(_16){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_18,_19,_1a){ +with(_18){ +_delegate=_1a; +} +}),new objj_method(sel_getUid("startAnimation"),function(_1b,_1c){ +with(_1b){ +if(_timer||_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationShouldStart:"))&&!objj_msgSend(_delegate,"animationShouldStart:",_1b)){ +return; +} +if(_progress===1){ +_progress=0; +} +ACTUAL_FRAME_RATE=0; +_lastTime=new Date(); +_timer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0,_1b,sel_getUid("animationTimerDidFire:"),nil,YES); +} +}),new objj_method(sel_getUid("animationTimerDidFire:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=new Date(),_21=MIN(1,objj_msgSend(_1d,"currentProgress")+(_20-_lastTime)/(_duration*1000)); +_lastTime=_20; +++ACTUAL_FRAME_RATE; +objj_msgSend(_1d,"setCurrentProgress:",_21); +if(_21===1){ +objj_msgSend(_timer,"invalidate"); +_timer=nil; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationDidEnd:"))){ +objj_msgSend(_delegate,"animationDidEnd:",_1d); +} +} +} +}),new objj_method(sel_getUid("stopAnimation"),function(_22,_23){ +with(_22){ +if(!_timer){ +return; +} +objj_msgSend(_timer,"invalidate"); +_timer=nil; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationDidStop:"))){ +objj_msgSend(_delegate,"animationDidStop:",_22); +} +} +}),new objj_method(sel_getUid("isAnimating"),function(_24,_25){ +with(_24){ +return _timer; +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(_26,_27,_28){ +with(_26){ +_progress=_28; +} +}),new objj_method(sel_getUid("currentProgress"),function(_29,_2a){ +with(_29){ +return _progress; +} +}),new objj_method(sel_getUid("currentValue"),function(_2b,_2c){ +with(_2b){ +var t=objj_msgSend(_2b,"currentProgress"); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animation:valueForProgress:"))){ +return objj_msgSend(_delegate,"animation:valueForProgress:",_2b,t); +} +var c1=[],c2=[]; +objj_msgSend(_timingFunction,"getControlPointAtIndex:values:",1,c1); +objj_msgSend(_timingFunction,"getControlPointAtIndex:values:",2,c2); +return _2d(t,c1[0],c1[1],c2[0],c2[1],_duration); +} +})]); +var _2d=_2d=function(t,p1x,p1y,p2x,p2y,_2e){ +var ax=0,bx=0,cx=0,ay=0,by=0,cy=0; +sampleCurveX=function(t){ +return ((ax*t+bx)*t+cx)*t; +}; +sampleCurveY=function(t){ +return ((ay*t+by)*t+cy)*t; +}; +sampleCurveDerivativeX=function(t){ +return (3*ax*t+2*bx)*t+cx; +}; +solveEpsilon=function(_2f){ +return 1/(200*_2f); +}; +solve=function(x,_30){ +return sampleCurveY(solveCurveX(x,_30)); +}; +solveCurveX=function(x,_31){ +var t0,t1,t2,x2,d2,i; +fabs=function(n){ +if(n>=0){ +return n; +}else{ +return 0-n; +} +}; +for(t2=x,i=0;i<8;i++){ +x2=sampleCurveX(t2)-x; +if(fabs(x2)<_31){ +return t2; +} +d2=sampleCurveDerivativeX(t2); +if(fabs(d2)<0.000001){ +break; +} +t2=t2-x2/d2; +} +t0=0; +t1=1; +t2=x; +if(t2t1){ +return t1; +} +while(t0x2){ +t0=t2; +}else{ +t1=t2; +} +t2=(t1-t0)*0.5+t0; +} +return t2; +}; +cx=3*p1x; +bx=3*(p2x-p1x)-cx; +ax=1-cx-bx; +cy=3*p1y; +by=3*(p2y-p1y)-cy; +ay=1-cy-by; +return solve(t,solveEpsilon(_2e)); +}; +p;15;CPApplication.jt;29611;@STATIC;1.0;I;21;Foundation/CPBundle.ji;17;CPCompatibility.ji;9;CPEvent.ji;8;CPMenu.ji;13;CPResponder.ji;22;CPDocumentController.ji;14;CPThemeBlend.ji;14;CPCibLoading.ji;12;CPPlatform.jt;29418; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPDocumentController.j",YES); +objj_executeFile("CPThemeBlend.j",YES); +objj_executeFile("CPCibLoading.j",YES); +objj_executeFile("CPPlatform.j",YES); +var _1="CPMainCibFile",_2="Main cib file base name"; +CPApp=nil; +CPApplicationWillFinishLaunchingNotification="CPApplicationWillFinishLaunchingNotification"; +CPApplicationDidFinishLaunchingNotification="CPApplicationDidFinishLaunchingNotification"; +CPApplicationWillTerminateNotification="CPApplicationWillTerminateNotification"; +CPApplicationWillBecomeActiveNotification="CPApplicationWillBecomeActiveNotification"; +CPApplicationDidBecomeActiveNotification="CPApplicationDidBecomeActiveNotification"; +CPApplicationWillResignActiveNotification="CPApplicationWillResignActiveNotification"; +CPApplicationDidResignActiveNotification="CPApplicationDidResignActiveNotification"; +CPTerminateNow=YES; +CPTerminateCancel=NO; +CPTerminateLater=-1; +CPRunStoppedResponse=-1000; +CPRunAbortedResponse=-1001; +CPRunContinuesResponse=-1002; +var _3=objj_allocateClassPair(CPResponder,"CPApplication"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_eventListeners"),new objj_ivar("_currentEvent"),new objj_ivar("_windows"),new objj_ivar("_keyWindow"),new objj_ivar("_mainWindow"),new objj_ivar("_previousKeyWindow"),new objj_ivar("_previousMainWindow"),new objj_ivar("_mainMenu"),new objj_ivar("_documentController"),new objj_ivar("_currentSession"),new objj_ivar("_delegate"),new objj_ivar("_finishedLaunching"),new objj_ivar("_isActive"),new objj_ivar("_namedArgs"),new objj_ivar("_args"),new objj_ivar("_fullArgsString"),new objj_ivar("_applicationIconImage"),new objj_ivar("_aboutPanel"),new objj_ivar("_themeBlend")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("themeBlend"),function(_5,_6){ +with(_5){ +return _themeBlend; +} +}),new objj_method(sel_getUid("setThemeBlend:"),function(_7,_8,_9){ +with(_7){ +_themeBlend=_9; +} +}),new objj_method(sel_getUid("init"),function(_a,_b){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPApplication").super_class},"init"); +CPApp=_a; +if(_a){ +_eventListeners=[]; +_windows=[]; +objj_msgSend(_windows,"addObject:",nil); +} +return _a; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_c,_d,_e){ +with(_c){ +if(_delegate==_e){ +return; +} +var _f=objj_msgSend(CPNotificationCenter,"defaultCenter"),_10=[CPApplicationWillFinishLaunchingNotification,sel_getUid("applicationWillFinishLaunching:"),CPApplicationDidFinishLaunchingNotification,sel_getUid("applicationDidFinishLaunching:"),CPApplicationWillBecomeActiveNotification,sel_getUid("applicationWillBecomeActive:"),CPApplicationDidBecomeActiveNotification,sel_getUid("applicationDidBecomeActive:"),CPApplicationWillResignActiveNotification,sel_getUid("applicationWillResignActive:"),CPApplicationDidResignActiveNotification,sel_getUid("applicationDidResignActive:"),CPApplicationWillTerminateNotification,sel_getUid("applicationWillTerminate:")],_11=objj_msgSend(_10,"count"); +if(_delegate){ +var _12=0; +for(;_12<_11;_12+=2){ +var _13=_10[_12],_14=_10[_12+1]; +if(objj_msgSend(_delegate,"respondsToSelector:",_14)){ +objj_msgSend(_f,"removeObserver:name:object:",_delegate,_13,_c); +} +} +} +_delegate=_e; +var _12=0; +for(;_12<_11;_12+=2){ +var _13=_10[_12],_14=_10[_12+1]; +if(objj_msgSend(_delegate,"respondsToSelector:",_14)){ +objj_msgSend(_f,"addObserver:selector:name:object:",_delegate,_14,_13,_c); +} +} +} +}),new objj_method(sel_getUid("delegate"),function(_15,_16){ +with(_15){ +return _delegate; +} +}),new objj_method(sel_getUid("finishLaunching"),function(_17,_18){ +with(_17){ +window.status=" "; +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +var _19=objj_msgSend(CPBundle,"mainBundle"),_1a=objj_msgSend(_19,"objectForInfoDictionaryKey:","CPBundleDocumentTypes"); +if(objj_msgSend(_1a,"count")>0){ +_documentController=objj_msgSend(CPDocumentController,"sharedDocumentController"); +} +var _1b=objj_msgSend(_19,"objectForInfoDictionaryKey:","CPApplicationDelegateClass"); +if(_1b){ +var _1c=objj_getClass(_1b); +if(_1c){ +if(objj_msgSend(_documentController,"class")==_1c){ +objj_msgSend(_17,"setDelegate:",_documentController); +}else{ +objj_msgSend(_17,"setDelegate:",objj_msgSend(objj_msgSend(_1c,"alloc"),"init")); +} +} +} +var _1d=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_1d,"postNotificationName:object:",CPApplicationWillFinishLaunchingNotification,_17); +var _1e=!!_documentController,_1f=window.cpOpeningURLStrings&&window.cpOpeningURLStrings(),_20=0,_21=objj_msgSend(_1f,"count"); +for(;_20<_21;++_20){ +_1e=!objj_msgSend(_17,"_openURL:",objj_msgSend(CPURL,"URLWithString:",_1f[_20]))||_1e; +} +if(_1e&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("applicationShouldOpenUntitledFile:"))){ +_1e=objj_msgSend(_delegate,"applicationShouldOpenUntitledFile:",_17); +} +if(_1e){ +objj_msgSend(_documentController,"newDocument:",_17); +} +objj_msgSend(_documentController,"_updateRecentDocumentsMenu"); +objj_msgSend(_1d,"postNotificationName:object:",CPApplicationDidFinishLaunchingNotification,_17); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +_finishedLaunching=YES; +} +}),new objj_method(sel_getUid("terminate:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPApplicationWillTerminateNotification,_22); +if(!objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(objj_msgSend(CPDocumentController,"sharedDocumentController"),"closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:",_22,sel_getUid("_documentController:didCloseAll:context:"),nil); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_22,"keyWindow"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +}),new objj_method(sel_getUid("setApplicationIconImage:"),function(_25,_26,_27){ +with(_25){ +_applicationIconImage=_27; +} +}),new objj_method(sel_getUid("applicationIconImage"),function(_28,_29){ +with(_28){ +if(_applicationIconImage){ +return _applicationIconImage; +} +var _2a=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPApplicationIcon"); +if(_2a){ +_applicationIconImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",_2a); +} +return _applicationIconImage; +} +}),new objj_method(sel_getUid("orderFrontStandardAboutPanel:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"orderFrontStandardAboutPanelWithOptions:",nil); +} +}),new objj_method(sel_getUid("orderFrontStandardAboutPanelWithOptions:"),function(_2e,_2f,_30){ +with(_2e){ +if(!_aboutPanel){ +var _31=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),_32=objj_msgSend(_30,"objectForKey:","ApplicationName")||objj_msgSend(_31,"objectForKey:","CPBundleName"),_33=objj_msgSend(_30,"objectForKey:","ApplicationIcon")||objj_msgSend(_2e,"applicationIconImage"),_34=objj_msgSend(_30,"objectForKey:","Version")||objj_msgSend(_31,"objectForKey:","CPBundleVersion"),_35=objj_msgSend(_30,"objectForKey:","ApplicationVersion")||objj_msgSend(_31,"objectForKey:","CPBundleShortVersionString"),_36=objj_msgSend(_30,"objectForKey:","Copyright")||objj_msgSend(_31,"objectForKey:","CPHumanReadableCopyright"); +var _37=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindowController,"class")),"pathForResource:","AboutPanel.cib"),_38=objj_msgSend(CPWindowController,"alloc"),_38=objj_msgSend(_38,"initWithWindowCibPath:owner:",_37,_38),_39=objj_msgSend(_38,"window"),_3a=objj_msgSend(_39,"contentView"),_3b=objj_msgSend(_3a,"viewWithTag:",1),_3c=objj_msgSend(_3a,"viewWithTag:",2),_3d=objj_msgSend(_3a,"viewWithTag:",3),_3e=objj_msgSend(_3a,"viewWithTag:",4),_3f=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_2e,"class")),"pathForResource:","standardApplicationIcon.png"); +objj_msgSend(_3c,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",14)); +objj_msgSend(_3c,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3d,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3e,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3b,"setImage:",_33||objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",_3f,CGSizeMake(256,256))); +objj_msgSend(_3c,"setStringValue:",_32||""); +if(_35&&_34){ +objj_msgSend(_3d,"setStringValue:","Version "+_35+" ("+_34+")"); +}else{ +if(_35||_34){ +objj_msgSend(_3d,"setStringValue:","Version "+(_35||_34)); +}else{ +objj_msgSend(_3d,"setStringValue:",""); +} +} +objj_msgSend(_3e,"setStringValue:",_36||""); +objj_msgSend(_39,"center"); +_aboutPanel=_39; +} +objj_msgSend(_aboutPanel,"orderFront:",_2e); +} +}),new objj_method(sel_getUid("_documentController:didCloseAll:context:"),function(_40,_41,_42,_43,_44){ +with(_40){ +if(_43){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("applicationShouldTerminate:"))){ +objj_msgSend(_40,"replyToApplicationShouldTerminate:",objj_msgSend(_delegate,"applicationShouldTerminate:",_40)); +}else{ +objj_msgSend(_40,"replyToApplicationShouldTerminate:",YES); +} +} +} +}),new objj_method(sel_getUid("replyToApplicationShouldTerminate:"),function(_45,_46,_47){ +with(_45){ +if(_47==CPTerminateNow){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPApplicationWillTerminateNotification,_45); +objj_msgSend(CPPlatform,"terminateApplication"); +} +} +}),new objj_method(sel_getUid("activateIgnoringOtherApps:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(_48,"_willBecomeActive"); +objj_msgSend(CPPlatform,"activateIgnoringOtherApps:",_4a); +_isActive=YES; +objj_msgSend(_48,"_willResignActive"); +} +}),new objj_method(sel_getUid("deactivate"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_4b,"_willResignActive"); +objj_msgSend(CPPlatform,"deactivate"); +_isActive=NO; +objj_msgSend(_4b,"_didResignActive"); +} +}),new objj_method(sel_getUid("isActive"),function(_4d,_4e){ +with(_4d){ +return _isActive; +} +}),new objj_method(sel_getUid("hideOtherApplications:"),function(_4f,_50,_51){ +with(_4f){ +objj_msgSend(CPPlatform,"hideOtherApplications:",_4f); +} +}),new objj_method(sel_getUid("run"),function(_52,_53){ +with(_52){ +objj_msgSend(_52,"finishLaunching"); +} +}),new objj_method(sel_getUid("runModalForWindow:"),function(_54,_55,_56){ +with(_54){ +objj_msgSend(_54,"runModalSession:",objj_msgSend(_54,"beginModalSessionForWindow:",_56)); +} +}),new objj_method(sel_getUid("stopModalWithCode:"),function(_57,_58,_59){ +with(_57){ +if(!_currentSession){ +return; +} +_currentSession._state=_59; +_currentSession=_currentSession._previous; +objj_msgSend(_57,"_removeRunModalLoop"); +} +}),new objj_method(sel_getUid("_removeRunModalLoop"),function(_5a,_5b){ +with(_5a){ +var _5c=_eventListeners.length; +while(_5c--){ +if(_eventListeners[_5c]._callback===_CPRunModalLoop){ +_eventListeners.splice(_5c,1); +return; +} +} +} +}),new objj_method(sel_getUid("stopModal"),function(_5d,_5e){ +with(_5d){ +objj_msgSend(_5d,"stopModalWithCode:",CPRunStoppedResponse); +} +}),new objj_method(sel_getUid("abortModal"),function(_5f,_60){ +with(_5f){ +objj_msgSend(_5f,"stopModalWithCode:",CPRunAbortedResponse); +} +}),new objj_method(sel_getUid("beginModalSessionForWindow:"),function(_61,_62,_63){ +with(_61){ +return _64(_63,0); +} +}),new objj_method(sel_getUid("runModalSession:"),function(_65,_66,_67){ +with(_65){ +_67._previous=_currentSession; +_currentSession=_67; +var _68=_67._window; +objj_msgSend(_68,"center"); +objj_msgSend(_68,"makeKeyAndOrderFront:",_65); +objj_msgSend(CPApp,"setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:",_CPRunModalLoop,CPAnyEventMask,nil,0,NO); +} +}),new objj_method(sel_getUid("modalWindow"),function(_69,_6a){ +with(_69){ +if(!_currentSession){ +return nil; +} +return _currentSession._window; +} +}),new objj_method(sel_getUid("_handleKeyEquivalent:"),function(_6b,_6c,_6d){ +with(_6b){ +return objj_msgSend(objj_msgSend(_6b,"keyWindow"),"performKeyEquivalent:",_6d)||objj_msgSend(_mainMenu,"performKeyEquivalent:",_6d); +} +}),new objj_method(sel_getUid("sendEvent:"),function(_6e,_6f,_70){ +with(_6e){ +_currentEvent=_70; +var _71=objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_willPropagateCurrentDOMEvent"); +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +if(objj_msgSend(_70,"_couldBeKeyEquivalent")&&objj_msgSend(_6e,"_handleKeyEquivalent:",_70)){ +var _72=objj_msgSend(_70,"characters"),_73=objj_msgSend(_70,"modifierFlags"); +if((_72=="c"||_72=="x"||_72=="v")&&(_73&CPPlatformActionKeyMask)){ +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +return; +} +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",_71); +if(_eventListeners.length){ +if(_eventListeners[_eventListeners.length-1]._mask&(1<=0){ +var _c9=objj_msgSend(_windows,"objectAtIndex:",_c8); +var _ca=_c9._sheetContext; +if(_ca!=nil&&_ca["sheet"]===_c6){ +_ca["returnCode"]=_c7; +objj_msgSend(_c9,"_detachSheetWindow"); +return; +} +} +} +}),new objj_method(sel_getUid("endSheet:"),function(_cb,_cc,_cd){ +with(_cb){ +objj_msgSend(_cb,"endSheet:returnCode:",_cd,0); +} +}),new objj_method(sel_getUid("arguments"),function(_ce,_cf){ +with(_ce){ +if(_fullArgsString!==window.location.hash){ +objj_msgSend(_ce,"_reloadArguments"); +} +return _args; +} +}),new objj_method(sel_getUid("setArguments:"),function(_d0,_d1,_d2){ +with(_d0){ +if(!_d2||_d2.length==0){ +_args=[]; +window.location.hash="#"; +return; +} +if(objj_msgSend(_d2,"class")!=CPArray){ +_d2=objj_msgSend(CPArray,"arrayWithObject:",_d2); +} +_args=_d2; +var _d3=objj_msgSend(_args,"copy"); +for(var i=0,_d4=_d3.length;i<_d4;i++){ +_d3[i]=encodeURIComponent(_d3[i]); +} +var _d5=objj_msgSend(_d3,"componentsJoinedByString:","/"); +window.location.hash="#"+_d5; +} +}),new objj_method(sel_getUid("_reloadArguments"),function(_d6,_d7){ +with(_d6){ +_fullArgsString=window.location.hash; +if(_fullArgsString.length){ +var _d8=_fullArgsString.substring(1).split("/"); +for(var i=0,_d9=_d8.length;i<_d9;i++){ +_d8[i]=decodeURIComponent(_d8[i]); +} +_args=_d8; +}else{ +_args=[]; +} +} +}),new objj_method(sel_getUid("namedArguments"),function(_da,_db){ +with(_da){ +return _namedArgs; +} +}),new objj_method(sel_getUid("_openURL:"),function(_dc,_dd,_de){ +with(_dc){ +if(_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("application:openFile:"))){ +CPLog.warn("application:openFile: is deprecated, use application:openURL: instead."); +return objj_msgSend(_delegate,"application:openFile:",_dc,objj_msgSend(_de,"absoluteString")); +} +if(_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("application:openURL:"))){ +return objj_msgSend(_delegate,"application:openURL:",_dc,_de); +} +return !!objj_msgSend(_documentController,"openDocumentWithContentsOfURL:display:error:",_de,YES,NULL); +} +}),new objj_method(sel_getUid("_willBecomeActive"),function(_df,_e0){ +with(_df){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationWillBecomeActiveNotification,_df,nil); +} +}),new objj_method(sel_getUid("_didBecomeActive"),function(_e1,_e2){ +with(_e1){ +if(!objj_msgSend(_e1,"keyWindow")&&_previousKeyWindow&&objj_msgSend(objj_msgSend(_e1,"windows"),"indexOfObjectIdenticalTo:",_previousKeyWindow)!==CPNotFound){ +objj_msgSend(_previousKeyWindow,"makeKeyWindow"); +} +if(!objj_msgSend(_e1,"mainWindow")&&_previousMainWindow&&objj_msgSend(objj_msgSend(_e1,"windows"),"indexOfObjectIdenticalTo:",_previousMainWindow)!==CPNotFound){ +objj_msgSend(_previousMainWindow,"makeMainWindow"); +} +if(objj_msgSend(_e1,"keyWindow")){ +objj_msgSend(objj_msgSend(_e1,"keyWindow"),"orderFront:",_e1); +}else{ +if(objj_msgSend(_e1,"mainWindow")){ +objj_msgSend(objj_msgSend(_e1,"mainWindow"),"makeKeyAndOrderFront:",_e1); +}else{ +objj_msgSend(objj_msgSend(_e1,"mainMenu")._menuWindow,"makeKeyWindow"); +} +} +_previousKeyWindow=nil; +_previousMainWindow=nil; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationDidBecomeActiveNotification,_e1,nil); +} +}),new objj_method(sel_getUid("_willResignActive"),function(_e3,_e4){ +with(_e3){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationWillResignActiveNotification,_e3,nil); +} +}),new objj_method(sel_getUid("_didResignActive"),function(_e5,_e6){ +with(_e5){ +if(_e5._activeMenu){ +objj_msgSend(_e5._activeMenu,"cancelTracking"); +} +if(objj_msgSend(_e5,"keyWindow")){ +_previousKeyWindow=objj_msgSend(_e5,"keyWindow"); +objj_msgSend(_previousKeyWindow,"resignKeyWindow"); +} +if(objj_msgSend(_e5,"mainWindow")){ +_previousMainWindow=objj_msgSend(_e5,"mainWindow"); +objj_msgSend(_previousMainWindow,"resignMainWindow"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationDidResignActiveNotification,_e5,nil); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedApplication"),function(_e7,_e8){ +with(_e7){ +if(!CPApp){ +CPApp=objj_msgSend(objj_msgSend(CPApplication,"alloc"),"init"); +} +return CPApp; +} +}),new objj_method(sel_getUid("defaultThemeName"),function(_e9,_ea){ +with(_e9){ +return (objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPDefaultTheme")||"Aristo"); +} +})]); +var _64=function(_eb,_ec){ +return {_window:_eb,_state:CPRunContinuesResponse,_previous:nil}; +}; +var _b0=function(_ed,_ee){ +return {_mask:_ed,_callback:_ee}; +}; +_CPRunModalLoop=function(_ef){ +objj_msgSend(CPApp,"setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:",_CPRunModalLoop,CPAnyEventMask,nil,0,NO); +var _f0=objj_msgSend(_ef,"window"),_f1=CPApp._currentSession; +if(_f0==_f1._window||objj_msgSend(_f0,"worksWhenModal")){ +objj_msgSend(_f0,"sendEvent:",_ef); +} +}; +CPApplicationMain=function(_f2,_f3){ +var _f4=objj_msgSend(CPBundle,"mainBundle"),_f5=objj_msgSend(_f4,"principalClass"); +if(!_f5){ +_f5=objj_msgSend(CPApplication,"class"); +} +objj_msgSend(_f5,"sharedApplication"); +if(objj_msgSend(_f2,"containsObject:","debug")){ +CPLogRegister(CPLogPopup); +} +CPApp._args=_f2; +CPApp._namedArgs=_f3; +objj_msgSend(_CPAppBootstrapper,"performActions"); +}; +var _f6=nil; +var _3=objj_allocateClassPair(CPObject,"_CPAppBootstrapper"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_4,[new objj_method(sel_getUid("actions"),function(_f7,_f8){ +with(_f7){ +return [sel_getUid("bootstrapPlatform"),sel_getUid("loadDefaultTheme"),sel_getUid("loadMainCibFile")]; +} +}),new objj_method(sel_getUid("performActions"),function(_f9,_fa){ +with(_f9){ +if(!_f6){ +_f6=objj_msgSend(_f9,"actions"); +} +while(_f6.length){ +var _fb=_f6.shift(); +if(objj_msgSend(_f9,_fb)){ +return; +} +} +objj_msgSend(CPApp,"run"); +} +}),new objj_method(sel_getUid("bootstrapPlatform"),function(_fc,_fd){ +with(_fc){ +return objj_msgSend(CPPlatform,"bootstrap"); +} +}),new objj_method(sel_getUid("loadDefaultTheme"),function(_fe,_ff){ +with(_fe){ +var _100=objj_msgSend(CPApplication,"defaultThemeName"),_101=nil; +if(_100==="Aristo"){ +_101=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPApplication,"class")),"pathForResource:",_100+".blend"); +}else{ +_101=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_100+".blend"); +} +var _102=objj_msgSend(objj_msgSend(CPThemeBlend,"alloc"),"initWithContentsOfURL:",_101); +objj_msgSend(_102,"loadWithDelegate:",_fe); +return YES; +} +}),new objj_method(sel_getUid("blendDidFinishLoading:"),function(self,_103,_104){ +with(self){ +objj_msgSend(objj_msgSend(CPApplication,"sharedApplication"),"setThemeBlend:",_104); +objj_msgSend(CPTheme,"setDefaultTheme:",objj_msgSend(CPTheme,"themeNamed:",objj_msgSend(CPApplication,"defaultThemeName"))); +objj_msgSend(self,"performActions"); +} +}),new objj_method(sel_getUid("loadMainCibFile"),function(self,_105){ +with(self){ +var _106=objj_msgSend(CPBundle,"mainBundle"),_107=objj_msgSend(_106,"objectForInfoDictionaryKey:",_1)||objj_msgSend(_106,"objectForInfoDictionaryKey:",_2); +if(_107){ +objj_msgSend(_106,"loadCibFile:externalNameTable:loadDelegate:",_107,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",CPApp,CPCibOwner),self); +return YES; +}else{ +objj_msgSend(self,"loadCiblessBrowserMainMenu"); +} +return NO; +} +}),new objj_method(sel_getUid("loadCiblessBrowserMainMenu"),function(self,_108){ +with(self){ +var _109=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","MainMenu"); +objj_msgSend(_109,"setAutoenablesItems:",NO); +var _10a=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPApplication,"class")),_10b=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","New",sel_getUid("newDocument:"),"n"); +objj_msgSend(_10b,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/New.png"),CGSizeMake(16,16))); +objj_msgSend(_10b,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/NewHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_109,"addItem:",_10b); +var _10c=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Open",sel_getUid("openDocument:"),"o"); +objj_msgSend(_10c,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/Open.png"),CGSizeMake(16,16))); +objj_msgSend(_10c,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/OpenHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_109,"addItem:",_10c); +var _10d=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","Save"),_10e=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save",sel_getUid("saveDocument:"),nil); +objj_msgSend(_10e,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/Save.png"),CGSizeMake(16,16))); +objj_msgSend(_10e,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/SaveHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_10d,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save",sel_getUid("saveDocument:"),"s")); +objj_msgSend(_10d,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save As",sel_getUid("saveDocumentAs:"),nil)); +objj_msgSend(_10e,"setSubmenu:",_10d); +objj_msgSend(_109,"addItem:",_10e); +var _10f=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Edit",nil,nil),_110=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","Edit"),_111=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Undo",sel_getUid("undo:"),CPUndoKeyEquivalent),_112=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Redo",sel_getUid("redo:"),CPRedoKeyEquivalent); +objj_msgSend(_111,"setKeyEquivalentModifierMask:",CPUndoKeyEquivalentModifierMask); +objj_msgSend(_112,"setKeyEquivalentModifierMask:",CPRedoKeyEquivalentModifierMask); +objj_msgSend(_110,"addItem:",_111); +objj_msgSend(_110,"addItem:",_112); +objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Cut",sel_getUid("cut:"),"x")),objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Copy",sel_getUid("copy:"),"c")),objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Paste",sel_getUid("paste:"),"v")); +objj_msgSend(_10f,"setSubmenu:",_110); +objj_msgSend(_10f,"setHidden:",YES); +objj_msgSend(_109,"addItem:",_10f); +objj_msgSend(_109,"addItem:",objj_msgSend(CPMenuItem,"separatorItem")); +objj_msgSend(CPApp,"setMainMenu:",_109); +} +}),new objj_method(sel_getUid("cibDidFinishLoading:"),function(self,_113,aCib){ +with(self){ +objj_msgSend(self,"performActions"); +} +}),new objj_method(sel_getUid("cibDidFailToLoad:"),function(self,_114,aCib){ +with(self){ +throw new Error("Could not load main cib file (Did you forget to nib2cib it?)."); +} +}),new objj_method(sel_getUid("reset"),function(self,_115){ +with(self){ +_f6=nil; +} +})]); +p;19;CPArrayController.jt;17322;@STATIC;1.0;I;27;AppKit/CPObjectController.jI;26;AppKit/CPKeyValueBinding.jt;17239; +objj_executeFile("AppKit/CPObjectController.j",NO); +objj_executeFile("AppKit/CPKeyValueBinding.j",NO); +var _1=objj_allocateClassPair(CPObjectController,"CPArrayController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_avoidsEmptySelection"),new objj_ivar("_clearsFilterPredicateOnInsertion"),new objj_ivar("_filterRestrictsInsertion"),new objj_ivar("_preservesSelection"),new objj_ivar("_selectsInsertedObjects"),new objj_ivar("_alwaysUsesMultipleValuesMarker"),new objj_ivar("_selectionIndexes"),new objj_ivar("_sortDescriptors"),new objj_ivar("_filterPredicate"),new objj_ivar("_arrangedObjects")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPArrayController").super_class},"init"); +if(_3){ +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +} +return _3; +} +}),new objj_method(sel_getUid("prepareContent"),function(_5,_6){ +with(_5){ +objj_msgSend(_5,"_setContentArray:",[objj_msgSend(_5,"newObject")]); +} +}),new objj_method(sel_getUid("preservesSelection"),function(_7,_8){ +with(_7){ +return _preservesSelection; +} +}),new objj_method(sel_getUid("setPreservesSelection:"),function(_9,_a,_b){ +with(_9){ +_preservesSelection=_b; +} +}),new objj_method(sel_getUid("selectsInsertedObjects"),function(_c,_d){ +with(_c){ +return _selectsInsertedObjects; +} +}),new objj_method(sel_getUid("setSelectsInsertedObjects:"),function(_e,_f,_10){ +with(_e){ +_selectsInsertedObjects=_10; +} +}),new objj_method(sel_getUid("avoidsEmptySelection"),function(_11,_12){ +with(_11){ +return _avoidsEmptySelection; +} +}),new objj_method(sel_getUid("setAvoidsEmptySelection:"),function(_13,_14,_15){ +with(_13){ +_avoidsEmptySelection=_15; +} +}),new objj_method(sel_getUid("setContent:"),function(_16,_17,_18){ +with(_16){ +if(!objj_msgSend(_18,"isKindOfClass:",objj_msgSend(CPArray,"class"))){ +_18=[_18]; +} +var _19=nil,_1a=nil; +if(objj_msgSend(_16,"preservesSelection")){ +_19=objj_msgSend(_16,"selectedObjects"); +}else{ +_1a=objj_msgSend(_16,"selectionIndexes"); +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"willChangeValueForKey:","filterPredicate"); +} +_contentObject=_18; +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"__setFilterPredicate:",nil); +}else{ +objj_msgSend(_16,"_rearrangeObjects"); +} +if(objj_msgSend(_16,"preservesSelection")){ +objj_msgSend(_16,"__setSelectedObjects:",_19); +}else{ +objj_msgSend(_16,"__setSelectionIndexes:",_1a); +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("_setContentArray:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"setContent:",_1d); +} +}),new objj_method(sel_getUid("_setContentSet:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_1e,"setContent:",_20); +} +}),new objj_method(sel_getUid("contentArray"),function(_21,_22){ +with(_21){ +return objj_msgSend(_21,"content"); +} +}),new objj_method(sel_getUid("contentSet"),function(_23,_24){ +with(_23){ +return objj_msgSend(_23,"content"); +} +}),new objj_method(sel_getUid("arrangeObjects:"),function(_25,_26,_27){ +with(_25){ +var _28=objj_msgSend(_25,"filterPredicate"),_29=objj_msgSend(_25,"sortDescriptors"); +if(_28&&_29){ +var _2a=objj_msgSend(_27,"filteredArrayUsingPredicate:",_28); +objj_msgSend(_2a,"sortUsingDescriptors:",_29); +return _2a; +}else{ +if(_28){ +return objj_msgSend(_27,"filteredArrayUsingPredicate:",_28); +}else{ +if(_29){ +return objj_msgSend(_27,"sortedArrayUsingDescriptors:",_29); +} +} +} +return objj_msgSend(_27,"copy"); +} +}),new objj_method(sel_getUid("rearrangeObjects"),function(_2b,_2c){ +with(_2b){ +objj_msgSend(_2b,"willChangeValueForKey:","arrangedObjects"); +objj_msgSend(_2b,"_rearrangeObjects"); +objj_msgSend(_2b,"didChangeValueForKey:","arrangedObjects"); +} +}),new objj_method(sel_getUid("_rearrangeObjects"),function(_2d,_2e){ +with(_2d){ +var _2f=nil,_30=nil; +if(objj_msgSend(_2d,"preservesSelection")){ +_2f=objj_msgSend(_2d,"selectedObjects"); +}else{ +_30=objj_msgSend(_2d,"selectionIndexes"); +} +objj_msgSend(_2d,"__setArrangedObjects:",objj_msgSend(_2d,"arrangeObjects:",objj_msgSend(_2d,"contentArray"))); +if(objj_msgSend(_2d,"preservesSelection")){ +objj_msgSend(_2d,"__setSelectedObjects:",_2f); +}else{ +objj_msgSend(_2d,"__setSelectionIndexes:",_30); +} +} +}),new objj_method(sel_getUid("__setArrangedObjects:"),function(_31,_32,_33){ +with(_31){ +if(_arrangedObjects===_33){ +return; +} +_arrangedObjects=objj_msgSend(objj_msgSend(_CPObservableArray,"alloc"),"initWithArray:",_33); +} +}),new objj_method(sel_getUid("arrangedObjects"),function(_34,_35){ +with(_34){ +return _arrangedObjects; +} +}),new objj_method(sel_getUid("sortDescriptors"),function(_36,_37){ +with(_36){ +return _sortDescriptors; +} +}),new objj_method(sel_getUid("setSortDescriptors:"),function(_38,_39,_3a){ +with(_38){ +if(_sortDescriptors===_3a){ +return; +} +_sortDescriptors=objj_msgSend(_3a,"copy"); +objj_msgSend(_38,"_rearrangeObjects"); +} +}),new objj_method(sel_getUid("filterPredicate"),function(_3b,_3c){ +with(_3b){ +return _filterPredicate; +} +}),new objj_method(sel_getUid("setFilterPredicate:"),function(_3d,_3e,_3f){ +with(_3d){ +objj_msgSend(_3d,"__setFilterPredicate:",_3f); +} +}),new objj_method(sel_getUid("__setFilterPredicate:"),function(_40,_41,_42){ +with(_40){ +if(_filterPredicate===_42){ +return; +} +_filterPredicate=_42; +objj_msgSend(_40,"_rearrangeObjects"); +} +}),new objj_method(sel_getUid("alwaysUsesMultipleValuesMarker"),function(_43,_44){ +with(_43){ +return _alwaysUsesMultipleValuesMarker; +} +}),new objj_method(sel_getUid("selectionIndex"),function(_45,_46){ +with(_45){ +return objj_msgSend(_selectionIndexes,"firstIndex"); +} +}),new objj_method(sel_getUid("setSelectionIndex:"),function(_47,_48,_49){ +with(_47){ +return objj_msgSend(_47,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_49)); +} +}),new objj_method(sel_getUid("selectionIndexes"),function(_4a,_4b){ +with(_4a){ +return _selectionIndexes; +} +}),new objj_method(sel_getUid("setSelectionIndexes:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"__setSelectionIndexes:",_4e); +} +}),new objj_method(sel_getUid("__setSelectionIndex:"),function(_4f,_50,_51){ +with(_4f){ +objj_msgSend(_4f,"__setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_51)); +} +}),new objj_method(sel_getUid("__setSelectionIndexes:"),function(_52,_53,_54){ +with(_52){ +if(!_54){ +_54=objj_msgSend(CPIndexSet,"indexSet"); +} +if(!objj_msgSend(_54,"count")){ +if(_avoidsEmptySelection&&objj_msgSend(objj_msgSend(_52,"arrangedObjects"),"count")){ +_54=objj_msgSend(CPIndexSet,"indexSetWithIndex:",0); +} +}else{ +var _55=objj_msgSend(objj_msgSend(_52,"arrangedObjects"),"count"); +objj_msgSend(_54,"removeIndexesInRange:",CPMakeRange(_55,objj_msgSend(_54,"lastIndex")+1)); +if(!objj_msgSend(_54,"count")&&_avoidsEmptySelection&&_55){ +_54=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_55-1); +} +} +if(objj_msgSend(_selectionIndexes,"isEqualToIndexSet:",_54)){ +return NO; +} +_selectionIndexes=objj_msgSend(_54,"copy"); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_52),"reverseSetValueFor:","selectionIndexes"); +return YES; +} +}),new objj_method(sel_getUid("selectedObjects"),function(_56,_57){ +with(_56){ +var _58=objj_msgSend(objj_msgSend(_56,"arrangedObjects"),"objectsAtIndexes:",objj_msgSend(_56,"selectionIndexes")); +return objj_msgSend(_CPObservableArray,"arrayWithArray:",(_58||[])); +} +}),new objj_method(sel_getUid("setSelectedObjects:"),function(_59,_5a,_5b){ +with(_59){ +objj_msgSend(_59,"willChangeValueForKey:","selectionIndexes"); +objj_msgSend(_59,"_selectionWillChange"); +objj_msgSend(_59,"__setSelectedObjects:",_5b); +objj_msgSend(_59,"didChangeValueForKey:","selectionIndexes"); +objj_msgSend(_59,"_selectionDidChange"); +} +}),new objj_method(sel_getUid("__setSelectedObjects:"),function(_5c,_5d,_5e){ +with(_5c){ +var set=objj_msgSend(CPIndexSet,"indexSet"),_5f=objj_msgSend(_5e,"count"),_60=objj_msgSend(_5c,"arrangedObjects"); +for(var i=0;i<_5f;i++){ +var _61=objj_msgSend(_60,"indexOfObject:",objj_msgSend(_5e,"objectAtIndex:",i)); +if(_61!==CPNotFound){ +objj_msgSend(set,"addIndex:",_61); +} +} +objj_msgSend(_5c,"__setSelectionIndexes:",set); +return YES; +} +}),new objj_method(sel_getUid("canSelectPrevious"),function(_62,_63){ +with(_62){ +return objj_msgSend(objj_msgSend(_62,"selectionIndexes"),"firstIndex")>0; +} +}),new objj_method(sel_getUid("selectPrevious:"),function(_64,_65,_66){ +with(_64){ +var _67=objj_msgSend(objj_msgSend(_64,"selectionIndexes"),"firstIndex")-1; +if(_67>=0){ +objj_msgSend(_64,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_67)); +} +} +}),new objj_method(sel_getUid("canSelectNext"),function(_68,_69){ +with(_68){ +return objj_msgSend(objj_msgSend(_68,"selectionIndexes"),"firstIndex")0){ +objj_msgSend(_71,"__setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",0)); +} +objj_msgSend(_71,"didChangeValueForKey:","content"); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_71,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("removeObject:"),function(_75,_76,_77){ +with(_75){ +if(!objj_msgSend(_75,"canRemove")){ +return; +} +objj_msgSend(_75,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"removeObject:",_77); +if(_filterPredicate===nil||objj_msgSend(_filterPredicate,"evaluateWithObject:",_77)){ +var pos=objj_msgSend(_arrangedObjects,"indexOfObject:",_77); +objj_msgSend(_arrangedObjects,"removeObjectAtIndex:",pos); +objj_msgSend(_selectionIndexes,"shiftIndexesStartingAtIndex:by:",pos,-1); +} +objj_msgSend(_75,"didChangeValueForKey:","content"); +} +}),new objj_method(sel_getUid("add:"),function(_78,_79,_7a){ +with(_78){ +if(!objj_msgSend(_78,"canAdd")){ +return; +} +objj_msgSend(_78,"insert:",_7a); +} +}),new objj_method(sel_getUid("insert:"),function(_7b,_7c,_7d){ +with(_7b){ +if(!objj_msgSend(_7b,"canInsert")){ +return; +} +var _7e=objj_msgSend(_7b,"automaticallyPreparesContent")?objj_msgSend(_7b,"newObject"):objj_msgSend(_7b,"_defaultNewObject"); +objj_msgSend(_7b,"addObject:",_7e); +} +}),new objj_method(sel_getUid("remove:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSend(_7f,"removeObjects:",objj_msgSend(objj_msgSend(_7f,"arrangedObjects"),"objectsAtIndexes:",objj_msgSend(_7f,"selectionIndexes"))); +} +}),new objj_method(sel_getUid("removeObjectsAtArrangedObjectIndexes:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(_82,"_removeObjects:",objj_msgSend(objj_msgSend(_82,"arrangedObjects"),"objectsAtIndexes:",_84)); +} +}),new objj_method(sel_getUid("addObjects:"),function(_85,_86,_87){ +with(_85){ +if(!objj_msgSend(_85,"canAdd")){ +return; +} +var _88=objj_msgSend(_85,"contentArray"),_89=objj_msgSend(_87,"count"); +for(var i=0;i<_89;i++){ +objj_msgSend(_88,"addObject:",objj_msgSend(_87,"objectAtIndex:",i)); +} +objj_msgSend(_85,"setContent:",_88); +} +}),new objj_method(sel_getUid("removeObjects:"),function(_8a,_8b,_8c){ +with(_8a){ +if(!objj_msgSend(_8a,"canRemove")){ +return; +} +objj_msgSend(_8a,"_removeObjects:",_8c); +} +}),new objj_method(sel_getUid("_removeObjects:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8d,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"removeObjectsInArray:",_8f); +var _90=objj_msgSend(_8d,"arrangedObjects"),_91=objj_msgSend(_90,"indexOfObject:",objj_msgSend(_8f,"objectAtIndex:",0)); +objj_msgSend(_90,"removeObjectsInArray:",_8f); +var _92=objj_msgSend(_90,"count"),_93=objj_msgSend(CPIndexSet,"indexSet"); +if(objj_msgSend(_8d,"preservesSelection")||objj_msgSend(_8d,"avoidsEmptySelection")){ +_93=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_91); +if(_92<=0){ +_93=objj_msgSend(CPIndexSet,"indexSet"); +}else{ +if(_91>=_92){ +_93=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_92-1); +} +} +} +_selectionIndexes=_93; +objj_msgSend(_8d,"didChangeValueForKey:","content"); +} +}),new objj_method(sel_getUid("canInsert"),function(_94,_95){ +with(_94){ +return objj_msgSend(_94,"isEditable"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("initialize"),function(_96,_97){ +with(_96){ +if(_96!==objj_msgSend(CPArrayController,"class")){ +return; +} +objj_msgSend(_96,"exposeBinding:","contentArray"); +objj_msgSend(_96,"exposeBinding:","contentSet"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingContentArray"),function(_98,_99){ +with(_98){ +return objj_msgSend(CPSet,"setWithObjects:","content"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingArrangedObjects"),function(_9a,_9b){ +with(_9a){ +return objj_msgSend(CPSet,"setWithObjects:","content","filterPredicate","sortDescriptors"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelection"),function(_9c,_9d){ +with(_9c){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndex"),function(_9e,_9f){ +with(_9e){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndexes"),function(_a0,_a1){ +with(_a0){ +return objj_msgSend(CPSet,"setWithObjects:","arrangedObjects"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedObjects"),function(_a2,_a3){ +with(_a2){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"),function(_a4,_a5){ +with(_a4){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectNext"),function(_a6,_a7){ +with(_a6){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectPrevious"),function(_a8,_a9){ +with(_a8){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +})]); +var _1=objj_getClass("CPArrayController"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArrayController\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_aa,_ab,_ac){ +with(_aa){ +_aa=objj_msgSendSuper({receiver:_aa,super_class:objj_getClass("CPArrayController").super_class},"initWithCoder:",coder); +if(_aa){ +_avoidsEmptySelection=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerAvoidsEmptySelection"); +_clearsFilterPredicateOnInsertion=objj_msgSend(coder,"decodeBoolForKey:","CPClearsFilterPredicateOnInsertion"); +_filterRestrictsInsertion=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerFilterRestrictsInsertion"); +_preservesSelection=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerPreservesSelection"); +_selectsInsertedObjects=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerSelectsInsertedObjects"); +_alwaysUsesMultipleValuesMarker=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerAlwaysUsesMultipleValuesMarker"); +if(objj_msgSend(_aa,"automaticallyPreparesContent")){ +objj_msgSend(_aa,"prepareContent"); +}else{ +objj_msgSend(_aa,"_setContentArray:",[]); +} +} +return _aa; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(_ad,"_selectionWillChange"); +objj_msgSend(_ad,"_selectionDidChange"); +} +})]); +p;14;CPBezierPath.jt;4477;@STATIC;1.0;I;26;AppKit/CPGraphicsContext.jI;21;Foundation/CPObject.jt;4401; +objj_executeFile("AppKit/CPGraphicsContext.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +var _1=1; +var _2=objj_allocateClassPair(CPObject,"CPBezierPath"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_path"),new objj_ivar("_lineWidth")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +if(_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPBezierPath").super_class},"init")){ +_path=CGPathCreateMutable(); +_lineWidth=objj_msgSend(objj_msgSend(_4,"class"),"defaultLineWidth"); +} +return _4; +} +}),new objj_method(sel_getUid("moveToPoint:"),function(_6,_7,_8){ +with(_6){ +CGPathMoveToPoint(_path,nil,_8.x,_8.y); +} +}),new objj_method(sel_getUid("lineToPoint:"),function(_9,_a,_b){ +with(_9){ +CGPathAddLineToPoint(_path,nil,_b.x,_b.y); +} +}),new objj_method(sel_getUid("curveToPoint:controlPoint1:controlPoint2:"),function(_c,_d,_e,_f,_10){ +with(_c){ +CGPathAddCurveToPoint(_path,nil,_f.x,_f.y,_10.x,_10.y,_e.x,_e.y); +} +}),new objj_method(sel_getUid("closePath"),function(_11,_12){ +with(_11){ +CGPathCloseSubpath(_path); +} +}),new objj_method(sel_getUid("stroke"),function(_13,_14){ +with(_13){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(ctx); +CGContextAddPath(ctx,_path); +CGContextSetLineWidth(ctx,objj_msgSend(_13,"lineWidth")); +CGContextClosePath(ctx); +CGContextStrokePath(ctx); +} +}),new objj_method(sel_getUid("fill"),function(_15,_16){ +with(_15){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(ctx); +CGContextAddPath(ctx,_path); +CGContextSetLineWidth(ctx,objj_msgSend(_15,"lineWidth")); +CGContextClosePath(ctx); +CGContextFillPath(ctx); +} +}),new objj_method(sel_getUid("lineWidth"),function(_17,_18){ +with(_17){ +return _lineWidth; +} +}),new objj_method(sel_getUid("setLineWidth:"),function(_19,_1a,_1b){ +with(_19){ +_lineWidth=_1b; +} +}),new objj_method(sel_getUid("elementCount"),function(_1c,_1d){ +with(_1c){ +return _path.count; +} +}),new objj_method(sel_getUid("isEmpty"),function(_1e,_1f){ +with(_1e){ +return CGPathIsEmpty(_path); +} +}),new objj_method(sel_getUid("currentPoint"),function(_20,_21){ +with(_20){ +return CGPathGetCurrentPoint(_path); +} +}),new objj_method(sel_getUid("appendBezierPathWithPoints:count:"),function(_22,_23,_24,_25){ +with(_22){ +CGPathAddLines(_path,nil,_24,_25); +} +}),new objj_method(sel_getUid("appendBezierPathWithRect:"),function(_26,_27,_28){ +with(_26){ +CGPathAddRect(_path,nil,_28); +} +}),new objj_method(sel_getUid("appendBezierPathWithOvalInRect:"),function(_29,_2a,_2b){ +with(_29){ +CGPathAddPath(_path,nil,CGPathWithEllipseInRect(_2b)); +} +}),new objj_method(sel_getUid("appendBezierPathWithRoundedRect:xRadius:yRadius:"),function(_2c,_2d,_2e,_2f,_30){ +with(_2c){ +CGPathAddPath(_path,nil,CGPathWithRoundedRectangleInRect(_2e,_2f,_30,YES,YES,YES,YES)); +} +}),new objj_method(sel_getUid("appendBezierPath:"),function(_31,_32,_33){ +with(_31){ +CGPathAddPath(_path,nil,_33._path); +} +}),new objj_method(sel_getUid("removeAllPoints"),function(_34,_35){ +with(_34){ +_path=CGPathCreateMutable(); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("bezierPath"),function(_36,_37){ +with(_36){ +return objj_msgSend(objj_msgSend(_36,"alloc"),"init"); +} +}),new objj_method(sel_getUid("bezierPathWithOvalInRect:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(_38,"bezierPath"); +objj_msgSend(_3b,"appendBezierPathWithOvalInRect:",_3a); +return _3b; +} +}),new objj_method(sel_getUid("bezierPathWithRect:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=objj_msgSend(_3c,"bezierPath"); +objj_msgSend(_3f,"appendBezierPathWithRect:",_3e); +return _3f; +} +}),new objj_method(sel_getUid("defaultLineWidth"),function(_40,_41){ +with(_40){ +return _1; +} +}),new objj_method(sel_getUid("setDefaultLineWidth:"),function(_42,_43,_44){ +with(_42){ +_1=_44; +} +}),new objj_method(sel_getUid("fillRect:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(objj_msgSend(_45,"bezierPathWithRect:",_47),"fill"); +} +}),new objj_method(sel_getUid("strokeRect:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(objj_msgSend(_48,"bezierPathWithRect:",_4a),"stroke"); +} +}),new objj_method(sel_getUid("strokeLineFromPoint:toPoint:"),function(_4b,_4c,_4d,_4e){ +with(_4b){ +var _4f=objj_msgSend(_4b,"bezierPath"); +objj_msgSend(_4f,"moveToPoint:",_4d); +objj_msgSend(_4f,"lineToPoint:",_4e); +objj_msgSend(_4f,"stroke"); +} +})]); +p;7;CPBox.jt;6994;@STATIC;1.0;i;8;CPView.jt;6963; +objj_executeFile("CPView.j",YES); +CPNoBorder=0; +CPLineBorder=1; +CPBezelBorder=2; +CPGrooveBorder=3; +var _1=objj_allocateClassPair(CPView,"CPBox"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_borderType"),new objj_ivar("_borderColor"),new objj_ivar("_fillColor"),new objj_ivar("_cornerRadius"),new objj_ivar("_borderWidth"),new objj_ivar("_contentMargin"),new objj_ivar("_contentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPBox").super_class},"initWithFrame:",_5); +if(_3){ +_borderType=CPBezelBorder; +_fillColor=objj_msgSend(CPColor,"clearColor"); +_borderColor=objj_msgSend(CPColor,"blackColor"); +_borderWidth=1; +_contentMargin=CGSizeMake(0,0); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",objj_msgSend(_3,"bounds")); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_3,"setAutoresizesSubviews:",YES); +objj_msgSend(_3,"addSubview:",_contentView); +} +return _3; +} +}),new objj_method(sel_getUid("borderRect"),function(_6,_7){ +with(_6){ +return objj_msgSend(_6,"bounds"); +} +}),new objj_method(sel_getUid("borderType"),function(_8,_9){ +with(_8){ +return _borderType; +} +}),new objj_method(sel_getUid("setBorderType:"),function(_a,_b,_c){ +with(_a){ +_borderType=_c; +objj_msgSend(_a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderColor"),function(_d,_e){ +with(_d){ +return _borderColor; +} +}),new objj_method(sel_getUid("setBorderColor:"),function(_f,_10,_11){ +with(_f){ +if(objj_msgSend(_11,"isEqual:",_borderColor)){ +return; +} +_borderColor=_11; +objj_msgSend(_f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderWidth"),function(_12,_13){ +with(_12){ +return _borderWidth; +} +}),new objj_method(sel_getUid("setBorderWidth:"),function(_14,_15,_16){ +with(_14){ +if(_16===_borderWidth){ +return; +} +_borderWidth=_16; +objj_msgSend(_14,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("cornerRadius"),function(_17,_18){ +with(_17){ +return _cornerRadius; +} +}),new objj_method(sel_getUid("setCornerRadius:"),function(_19,_1a,_1b){ +with(_19){ +if(_1b===_cornerRadius){ +return; +} +_cornerRadius=_1b; +objj_msgSend(_19,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("fillColor"),function(_1c,_1d){ +with(_1c){ +return _fillColor; +} +}),new objj_method(sel_getUid("setFillColor:"),function(_1e,_1f,_20){ +with(_1e){ +if(objj_msgSend(_20,"isEqual:",_fillColor)){ +return; +} +_fillColor=_20; +objj_msgSend(_1e,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("contentView"),function(_21,_22){ +with(_21){ +return _contentView; +} +}),new objj_method(sel_getUid("setContentView:"),function(_23,_24,_25){ +with(_23){ +if(_25===_contentView){ +return; +} +objj_msgSend(_25,"setFrame:",CGRectInset(objj_msgSend(_23,"bounds"),_contentMargin.width+_borderWidth,_contentMargin.height+_borderWidth)); +objj_msgSend(_25,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_23,"replaceSubview:with:",_contentView,_25); +_contentView=_25; +} +}),new objj_method(sel_getUid("contentViewMargins"),function(_26,_27){ +with(_26){ +return _contentMargin; +} +}),new objj_method(sel_getUid("setContentViewMargins:"),function(_28,_29,_2a){ +with(_28){ +if(_2a.width<0||_2a.height<0){ +objj_msgSend(CPException,"raise:reason:",CPGenericException,"Margins must be positive"); +} +_contentMargin=CGSizeMakeCopy(_2a); +objj_msgSend(_28,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setFrameFromContentFrame:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"setFrame:",CGRectInset(_2d,-(_contentMargin.width+_borderWidth),-(_contentMargin.height+_borderWidth))); +objj_msgSend(_2b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("sizeToFit"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_contentView,"frame"); +objj_msgSend(_2e,"setFrameSize:",CGSizeMake(_30.size.width+_contentMargin.width*2,_30.size.height+_contentMargin.height*2)); +objj_msgSend(_contentView,"setFrameOrigin:",CGPointMake(_contentMargin.width,_contentMargin.height)); +} +}),new objj_method(sel_getUid("drawRect:"),function(_31,_32,_33){ +with(_31){ +if(_borderType===CPNoBorder){ +return; +} +var _34=objj_msgSend(_31,"bounds"),_35=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetFillColor(_35,objj_msgSend(_31,"fillColor")); +switch(_borderType){ +case CPBezelBorder: +var _36=[CPMinYEdge,CPMaxXEdge,CPMaxYEdge,CPMinXEdge],_37=190/255,_38=[142/255,_37,_37,_37],_39=_borderWidth; +while(_39--){ +_34=CPDrawTiledRects(_34,_34,_36,_38); +} +CGContextFillRect(_35,_34); +break; +default: +_34=CGRectInset(_34,_borderWidth/2,_borderWidth/2); +CGContextSetStrokeColor(_35,objj_msgSend(_31,"borderColor")); +CGContextSetLineWidth(_35,_borderWidth); +CGContextFillRoundedRectangleInRect(_35,_34,_cornerRadius,YES,YES,YES,YES); +CGContextStrokeRoundedRectangleInRect(_35,_34,_cornerRadius,YES,YES,YES,YES); +break; +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("boxEnclosingView:"),function(_3a,_3b,_3c){ +with(_3a){ +var box=objj_msgSend(objj_msgSend(_3a,"alloc"),"initWithFrame:",CGRectMakeZero()),_3d=objj_msgSend(_3c,"superview"); +objj_msgSend(box,"setFrameFromContentFrame:",objj_msgSend(_3c,"frame")); +objj_msgSend(_3d,"replaceSubview:with:",_3c,box); +objj_msgSend(box,"setContentView:",_3c); +return box; +} +})]); +var _3e="CPBoxBorderTypeKey",_3f="CPBoxBorderColorKey",_40="CPBoxFillColorKey",_41="CPBoxCornerRadiusKey",_42="CPBoxBorderWidthKey",_43="CPBoxContentMarginKey"; +var _1=objj_getClass("CPBox"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPBox\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_44,_45,_46){ +with(_44){ +_44=objj_msgSendSuper({receiver:_44,super_class:objj_getClass("CPBox").super_class},"initWithCoder:",_46); +if(_44){ +_borderType=objj_msgSend(_46,"decodeIntForKey:",_3e); +_borderColor=objj_msgSend(_46,"decodeObjectForKey:",_3f); +_fillColor=objj_msgSend(_46,"decodeObjectForKey:",_40); +_cornerRadius=objj_msgSend(_46,"decodeFloatForKey:",_41); +_borderWidth=objj_msgSend(_46,"decodeFloatForKey:",_42); +_contentMargin=objj_msgSend(_46,"decodeSizeForKey:",_43); +_contentView=objj_msgSend(_44,"subviews")[0]; +objj_msgSend(_44,"setAutoresizesSubviews:",YES); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +} +return _44; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_47,_48,_49){ +with(_47){ +objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPBox").super_class},"encodeWithCoder:",_49); +objj_msgSend(_49,"encodeInt:forKey:",_borderType,_3e); +objj_msgSend(_49,"encodeObject:forKey:",_borderColor,_3f); +objj_msgSend(_49,"encodeObject:forKey:",_fillColor,_40); +objj_msgSend(_49,"encodeFloat:forKey:",_cornerRadius,_41); +objj_msgSend(_49,"encodeFloat:forKey:",_borderWidth,_42); +objj_msgSend(_49,"encodeSize:forKey:",_contentMargin,_43); +} +})]); +p;11;CPBrowser.jt;33588;@STATIC;1.0;i;11;CPControl.ji;9;CPImage.ji;13;CPTableView.ji;14;CPScrollView.jt;33502; +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPScrollView.j",YES); +var _1=objj_allocateClassPair(CPControl,"CPBrowser"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_delegate"),new objj_ivar("_pathSeparator"),new objj_ivar("_contentView"),new objj_ivar("_horizontalScrollView"),new objj_ivar("_prototypeView"),new objj_ivar("_tableViews"),new objj_ivar("_tableDelegates"),new objj_ivar("_rootItem"),new objj_ivar("_delegateSupportsImages"),new objj_ivar("_doubleAction"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_tableViewClass"),new objj_ivar("_rowHeight"),new objj_ivar("_imageWidth"),new objj_ivar("_leafWidth"),new objj_ivar("_minColumnWidth"),new objj_ivar("_defaultColumnWidth"),new objj_ivar("_columnWidths")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("doubleAction"),function(_3,_4){ +with(_3){ +return _doubleAction; +} +}),new objj_method(sel_getUid("setDoubleAction:"),function(_5,_6,_7){ +with(_5){ +_doubleAction=_7; +} +}),new objj_method(sel_getUid("tableViewClass"),function(_8,_9){ +with(_8){ +return _tableViewClass; +} +}),new objj_method(sel_getUid("setTableViewClass:"),function(_a,_b,_c){ +with(_a){ +_tableViewClass=_c; +} +}),new objj_method(sel_getUid("defaultColumnWidth"),function(_d,_e){ +with(_d){ +return _defaultColumnWidth; +} +}),new objj_method(sel_getUid("setDefaultColumnWidth:"),function(_f,_10,_11){ +with(_f){ +_defaultColumnWidth=_11; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_12,_13,_14){ +with(_12){ +if(_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPBrowser").super_class},"initWithFrame:",_14)){ +_rowHeight=23; +_defaultColumnWidth=140; +_minColumnWidth=80; +_imageWidth=23; +_leafWidth=13; +_columnWidths=[]; +_pathSeparator="/"; +_tableViews=[]; +_tableDelegates=[]; +_allowsMultipleSelection=YES; +_allowsEmptySelection=YES; +_tableViewClass=objj_msgSend(_CPBrowserTableView,"class"); +_prototypeView=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_prototypeView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_prototypeView,"setValue:forThemeAttribute:inState:",objj_msgSend(CPColor,"whiteColor"),"text-color",CPThemeStateSelectedDataView); +objj_msgSend(_prototypeView,"setLineBreakMode:",CPLineBreakByTruncatingTail); +_horizontalScrollView=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",objj_msgSend(_12,"bounds")); +objj_msgSend(_horizontalScrollView,"setHasVerticalScroller:",NO); +objj_msgSend(_horizontalScrollView,"setAutohidesScrollers:",YES); +objj_msgSend(_horizontalScrollView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,CGRectGetHeight(objj_msgSend(_12,"bounds")))); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewHeightSizable); +objj_msgSend(_horizontalScrollView,"setDocumentView:",_contentView); +objj_msgSend(_12,"addSubview:",_horizontalScrollView); +} +return _12; +} +}),new objj_method(sel_getUid("setPrototypeView:"),function(_15,_16,_17){ +with(_15){ +_prototypeView=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_17)); +} +}),new objj_method(sel_getUid("prototypeView"),function(_18,_19){ +with(_18){ +return objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_prototypeView)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_1a,_1b,_1c){ +with(_1a){ +_delegate=_1c; +_delegateSupportsImages=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:imageValueForItem:")); +objj_msgSend(_1a,"loadColumnZero"); +} +}),new objj_method(sel_getUid("delegate"),function(_1d,_1e){ +with(_1d){ +return _delegate; +} +}),new objj_method(sel_getUid("tableViewInColumn:"),function(_1f,_20,_21){ +with(_1f){ +return _tableViews[_21]; +} +}),new objj_method(sel_getUid("columnOfTableView:"),function(_22,_23,_24){ +with(_22){ +return objj_msgSend(_tableViews,"indexOfObject:",_24); +} +}),new objj_method(sel_getUid("loadColumnZero"),function(_25,_26){ +with(_25){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("rootItemForBrowser:"))){ +_rootItem=objj_msgSend(_delegate,"rootItemForBrowser:",_25); +}else{ +_rootItem=nil; +} +objj_msgSend(_25,"setLastColumn:",-1); +objj_msgSend(_25,"addColumn"); +} +}),new objj_method(sel_getUid("setLastColumn:"),function(_27,_28,_29){ +with(_27){ +if(_29>=_tableViews.length){ +return; +} +var _2a=_tableViews.length-1; +var _2b=_29+1; +objj_msgSend(objj_msgSend(_tableViews.slice(_2b),"valueForKey:","enclosingScrollView"),"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +_tableViews=_tableViews.slice(0,_2b); +_tableDelegates=_tableDelegates.slice(0,_2b); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:didChangeLastColumn:toColumn:"))){ +objj_msgSend(_delegate,"browser:didChangeLastColumn:toColumn:",_27,_2a,_29); +} +objj_msgSend(_27,"tile"); +} +}),new objj_method(sel_getUid("lastColumn"),function(_2c,_2d){ +with(_2c){ +return _tableViews.length-1; +} +}),new objj_method(sel_getUid("addColumn"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_2e,"lastColumn"),_31=_tableViews[_30],_32=objj_msgSend(_31,"selectedRowIndexes"); +if(_30>=0&&objj_msgSend(_32,"count")>1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Can't add column, column "+_30+" has invalid selection."); +} +var _33=_30+1,_34=_33===0?_rootItem:objj_msgSend(_tableDelegates[_30],"childAtIndex:",objj_msgSend(_32,"firstIndex")); +if(_33>0&&_34&&objj_msgSend(_2e,"isLeafItem:",_34)){ +return; +} +var _35=objj_msgSend(objj_msgSend(_tableViewClass,"alloc"),"initWithFrame:browser:",CGRectMakeZero(),_2e); +objj_msgSend(_35,"setHeaderView:",nil); +objj_msgSend(_35,"setCornerView:",nil); +objj_msgSend(_35,"setAllowsMultipleSelection:",_allowsMultipleSelection); +objj_msgSend(_35,"setAllowsEmptySelection:",_allowsEmptySelection); +objj_msgSend(_35,"registerForDraggedTypes:",objj_msgSend(_2e,"registeredDraggedTypes")); +objj_msgSend(_2e,"_addTableColumnsToTableView:forColumnIndex:",_35,_33); +var _36=objj_msgSend(objj_msgSend(_CPBrowserTableDelegate,"alloc"),"init"); +objj_msgSend(_36,"_setDelegate:",_delegate); +objj_msgSend(_36,"_setBrowser:",_2e); +objj_msgSend(_36,"_setIndex:",_33); +objj_msgSend(_36,"_setItem:",_34); +_tableViews[_33]=_35; +_tableDelegates[_33]=_36; +objj_msgSend(_35,"setDelegate:",_36); +objj_msgSend(_35,"setDataSource:",_36); +objj_msgSend(_35,"setTarget:",_36); +objj_msgSend(_35,"setAction:",sel_getUid("_tableViewClicked:")); +objj_msgSend(_35,"setDoubleAction:",sel_getUid("_tableViewDoubleClicked:")); +objj_msgSend(_35,"setDraggingDestinationFeedbackStyle:",CPTableViewDraggingDestinationFeedbackStyleRegular); +var _37=objj_msgSend(objj_msgSend(_CPBrowserScrollView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_37,"_setBrowser:",_2e); +objj_msgSend(_37,"setDocumentView:",_35); +objj_msgSend(_37,"setHasHorizontalScroller:",NO); +objj_msgSend(_37,"setAutoresizingMask:",CPViewHeightSizable); +objj_msgSend(_contentView,"addSubview:",_37); +objj_msgSend(_2e,"tile"); +objj_msgSend(_2e,"scrollColumnToVisible:",_33); +} +}),new objj_method(sel_getUid("_addTableColumnsToTableView:forColumnIndex:"),function(_38,_39,_3a,_3b){ +with(_38){ +if(_delegateSupportsImages){ +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Image"),_3d=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_3d,"setImageScaling:",CPScaleProportionally); +objj_msgSend(_3c,"setDataView:",_3d); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +} +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Content"); +objj_msgSend(_3c,"setDataView:",_prototypeView); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Leaf"),_3d=objj_msgSend(objj_msgSend(_CPBrowserLeafView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_3d,"setBranchImage:",objj_msgSend(objj_msgSend(_38,"class"),"branchImage")); +objj_msgSend(_3d,"setHighlightedBranchImage:",objj_msgSend(objj_msgSend(_38,"class"),"highlightedBranchImage")); +objj_msgSend(_3c,"setDataView:",_3d); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +} +}),new objj_method(sel_getUid("reloadColumn:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(objj_msgSend(_3e,"tableViewInColumn:",_40),"reloadData"); +} +}),new objj_method(sel_getUid("tile"),function(_41,_42){ +with(_41){ +var _43=0,_44=objj_msgSend(CPScroller,"scrollerWidth"),_45=CGRectGetHeight(objj_msgSend(_contentView,"bounds")); +for(var i=0,_46=_tableViews.length;i<_46;i++){ +var _47=_tableViews[i],_48=objj_msgSend(_47,"enclosingScrollView"),_49=objj_msgSend(_41,"widthOfColumn:",i),_4a=CGRectGetHeight(objj_msgSend(_47,"bounds")); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Image"),"setWidth:",_imageWidth); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Content"),"setWidth:",_49-(_leafWidth+_delegateSupportsImages?_imageWidth:0)-_44-_44); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Leaf"),"setWidth:",_leafWidth); +objj_msgSend(_47,"setRowHeight:",_rowHeight); +objj_msgSend(_47,"setFrameSize:",CGSizeMake(_49-_44,_4a)); +objj_msgSend(_48,"setFrameOrigin:",CGPointMake(_43,0)); +objj_msgSend(_48,"setFrameSize:",CGSizeMake(_49,_45)); +_43+=_49; +} +objj_msgSend(_contentView,"setFrameSize:",CGSizeMake(_43,_45)); +} +}),new objj_method(sel_getUid("rowAtPoint:"),function(_4b,_4c,_4d){ +with(_4b){ +var _4e=objj_msgSend(_4b,"columnAtPoint:",_4d); +if(_4e===-1){ +return -1; +} +var _4f=_tableViews[_4e]; +return objj_msgSend(_4f,"rowAtPoint:",objj_msgSend(_4f,"convertPoint:fromView:",_4d,_4b)); +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(_50,_51,_52){ +with(_50){ +var _53=objj_msgSend(_contentView,"convertPoint:fromView:",_52,_50); +for(var i=0,_54=_tableViews.length;i<_54;i++){ +var _55=objj_msgSend(objj_msgSend(_tableViews[i],"enclosingScrollView"),"frame"); +if(CGRectContainsPoint(_55,_53)){ +return i; +} +} +return -1; +} +}),new objj_method(sel_getUid("rectOfRow:inColumn:"),function(_56,_57,_58,_59){ +with(_56){ +var _5a=_tableViews[_59],_5b=objj_msgSend(_5a,"rectOfRow:",_58); +_5b.origin=objj_msgSend(_56,"convertPoint:fromView:",_5b.origin,_5a); +return _5b; +} +}),new objj_method(sel_getUid("itemAtRow:inColumn:"),function(_5c,_5d,row,_5e){ +with(_5c){ +return objj_msgSend(_tableDelegates[_5e],"childAtIndex:",row); +} +}),new objj_method(sel_getUid("isLeafItem:"),function(_5f,_60,_61){ +with(_5f){ +return objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:isLeafItem:"))&&objj_msgSend(_delegate,"browser:isLeafItem:",_5f,_61); +} +}),new objj_method(sel_getUid("parentForItemsInColumn:"),function(_62,_63,_64){ +with(_62){ +return objj_msgSend(_tableDelegates[_64],"_item"); +} +}),new objj_method(sel_getUid("selectedItems"),function(_65,_66){ +with(_65){ +var _67=objj_msgSend(_65,"selectedColumn"),_68=objj_msgSend(_65,"selectedRowIndexesInColumn:",_67),set=objj_msgSend(CPSet,"set"),_69=objj_msgSend(_68,"firstIndex"); +while(_69!==CPNotFound){ +objj_msgSend(set,"addObject:",objj_msgSend(_65,"itemAtRow:inColumn:",_69,_67)); +_69=objj_msgSend(_68,"indexGreaterThanIndex:",_69); +} +return set; +} +}),new objj_method(sel_getUid("selectedItem"),function(_6a,_6b){ +with(_6a){ +var _6c=objj_msgSend(_6a,"selectedColumn"),_6d=objj_msgSend(_6a,"selectedRowInColumn:",_6c); +return objj_msgSend(_6a,"itemAtRow:inColumn:",_6d,_6c); +} +}),new objj_method(sel_getUid("trackMouse:"),function(_6e,_6f,_70){ +with(_6e){ +} +}),new objj_method(sel_getUid("_column:clickedRow:"),function(_71,_72,_73,_74){ +with(_71){ +objj_msgSend(_71,"setLastColumn:",_73); +if(_74>=0){ +objj_msgSend(_71,"addColumn"); +} +objj_msgSend(_71,"doClick:",_71); +} +}),new objj_method(sel_getUid("sendAction"),function(_75,_76){ +with(_75){ +objj_msgSend(_75,"sendAction:to:",_action,_target); +} +}),new objj_method(sel_getUid("doClick:"),function(_77,_78,_79){ +with(_77){ +objj_msgSend(_77,"sendAction:to:",_action,_target); +} +}),new objj_method(sel_getUid("doDoubleClick:"),function(_7a,_7b,_7c){ +with(_7a){ +objj_msgSend(_7a,"sendAction:to:",_doubleAction,_target); +} +}),new objj_method(sel_getUid("keyDown:"),function(_7d,_7e,_7f){ +with(_7d){ +var _80=objj_msgSend(_7d,"selectedColumn"); +if(_80===-1){ +return; +} +objj_msgSend(_tableViews[_80],"keyDown:",_7f); +} +}),new objj_method(sel_getUid("columnContentWidthForColumnWidth:"),function(_81,_82,_83){ +with(_81){ +return _83-(_leafWidth+_delegateSupportsImages?_imageWidth:0)-objj_msgSend(CPScroller,"scrollerWidth"); +} +}),new objj_method(sel_getUid("columnWidthForColumnContentWidth:"),function(_84,_85,_86){ +with(_84){ +return _86+(_leafWidth+_delegateSupportsImages?_imageWidth:0)+objj_msgSend(CPScroller,"scrollerWidth"); +} +}),new objj_method(sel_getUid("setImageWidth:"),function(_87,_88,_89){ +with(_87){ +_imageWidth=_89; +objj_msgSend(_87,"tile"); +} +}),new objj_method(sel_getUid("imageWidth"),function(_8a,_8b){ +with(_8a){ +return _imageWidth; +} +}),new objj_method(sel_getUid("setMinColumnWidth:"),function(_8c,_8d,_8e){ +with(_8c){ +_minColumnWidth=_8e; +objj_msgSend(_8c,"tile"); +} +}),new objj_method(sel_getUid("minColumnWidth"),function(_8f,_90){ +with(_8f){ +return _minColumnWidth; +} +}),new objj_method(sel_getUid("setWidth:ofColumn:"),function(_91,_92,_93,_94){ +with(_91){ +_columnWidths[_94]=_93; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:didResizeColumn:"))){ +objj_msgSend(_delegate,"browser:didResizeColumn:",_91,_94); +} +objj_msgSend(_91,"tile"); +} +}),new objj_method(sel_getUid("widthOfColumn:"),function(_95,_96,_97){ +with(_95){ +var _98=_columnWidths[_97]; +if(_98==null){ +_98=_defaultColumnWidth; +} +return MAX(objj_msgSend(CPScroller,"scrollerWidth"),MAX(_minColumnWidth,_98)); +} +}),new objj_method(sel_getUid("setRowHeight:"),function(_99,_9a,_9b){ +with(_99){ +_rowHeight=_9b; +} +}),new objj_method(sel_getUid("rowHeight"),function(_9c,_9d){ +with(_9c){ +return _rowHeight; +} +}),new objj_method(sel_getUid("scrollColumnToVisible:"),function(_9e,_9f,_a0){ +with(_9e){ +objj_msgSend(_contentView,"scrollRectToVisible:",objj_msgSend(objj_msgSend(objj_msgSend(_9e,"tableViewInColumn:",_a0),"enclosingScrollView"),"frame")); +} +}),new objj_method(sel_getUid("autohidesScroller"),function(_a1,_a2){ +with(_a1){ +return objj_msgSend(_horizontalScrollView,"autohidesScrollers"); +} +}),new objj_method(sel_getUid("setAutohidesScroller:"),function(_a3,_a4,_a5){ +with(_a3){ +objj_msgSend(_horizontalScrollView,"setAutohidesScrollers:",_a5); +} +}),new objj_method(sel_getUid("selectedRowInColumn:"),function(_a6,_a7,_a8){ +with(_a6){ +if(_a8>objj_msgSend(_a6,"lastColumn")||_a8<0){ +return -1; +} +return objj_msgSend(_tableViews[_a8],"selectedRow"); +} +}),new objj_method(sel_getUid("selectedColumn"),function(_a9,_aa){ +with(_a9){ +var _ab=objj_msgSend(_a9,"lastColumn"),row=objj_msgSend(_a9,"selectedRowInColumn:",_ab); +if(row>=0){ +return _ab; +}else{ +return _ab-1; +} +} +}),new objj_method(sel_getUid("selectRow:inColumn:"),function(_ac,_ad,row,_ae){ +with(_ac){ +var _af=row===-1?objj_msgSend(CPIndexSet,"indexSet"):objj_msgSend(CPIndexSet,"indexSetWithIndex:",row); +objj_msgSend(_ac,"selectRowIndexes:inColumn:",_af,_ae); +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_b0,_b1){ +with(_b0){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_b2,_b3,_b4){ +with(_b2){ +if(_allowsMultipleSelection===_b4){ +return; +} +_allowsMultipleSelection=_b4; +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setAllowsMultipleSelection:"),_b4); +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_b5,_b6){ +with(_b5){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_b7,_b8,_b9){ +with(_b7){ +if(_allowsEmptySelection===_b9){ +return; +} +_allowsEmptySelection=_b9; +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setAllowsEmptySelection:"),_b9); +} +}),new objj_method(sel_getUid("selectedRowIndexesInColumn:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_bc<0||_bc>objj_msgSend(_ba,"lastColumn")+1){ +return objj_msgSend(CPIndexSet,"indexSet"); +} +return objj_msgSend(objj_msgSend(_ba,"tableViewInColumn:",_bc),"selectedRowIndexes"); +} +}),new objj_method(sel_getUid("selectRowIndexes:inColumn:"),function(_bd,_be,_bf,_c0){ +with(_bd){ +if(_c0<0||_c0>objj_msgSend(_bd,"lastColumn")+1){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:selectionIndexesForProposedSelection:inColumn:"))){ +_bf=objj_msgSend(_delegate,"browser:selectionIndexesForProposedSelection:inColumn:",_bd,_bf,_c0); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:shouldSelectRowIndexes:inColumn:"))&&!objj_msgSend(_delegate,"browser:shouldSelectRowIndexes:inColumn:",_bd,_bf,_c0)){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browserSelectionIsChanging:"))){ +objj_msgSend(_delegate,"browserSelectionIsChanging:",_bd); +} +if(_c0>objj_msgSend(_bd,"lastColumn")){ +objj_msgSend(_bd,"addColumn"); +} +objj_msgSend(_bd,"setLastColumn:",_c0); +objj_msgSend(objj_msgSend(_bd,"tableViewInColumn:",_c0),"selectRowIndexes:byExtendingSelection:",_bf,NO); +objj_msgSend(_bd,"scrollColumnToVisible:",_c0); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browserSelectionDidChange:"))){ +objj_msgSend(_delegate,"browserSelectionDidChange:",_bd); +} +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSendSuper({receiver:_c1,super_class:objj_getClass("CPBrowser").super_class},"setBackgroundColor:",_c3); +objj_msgSend(_contentView,"setBackgroundColor:",_c3); +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_c4,_c5){ +with(_c4){ +return YES; +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(_c6,_c7,_c8){ +with(_c6){ +objj_msgSendSuper({receiver:_c6,super_class:objj_getClass("CPBrowser").super_class},"registerForDraggedTypes:",_c8); +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("registerForDraggedTypes:"),_c8); +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:inColumn:withEvent:"),function(_c9,_ca,_cb,_cc,_cd){ +with(_c9){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:canDragRowsWithIndexes:inColumn:withEvent:"))){ +return objj_msgSend(_delegate,"browser:canDragRowsWithIndexes:inColumn:withEvent:",_c9,_cb,_cc,_cd); +} +return YES; +} +}),new objj_method(sel_getUid("draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"),function(_ce,_cf,_d0,_d1,_d2,_d3){ +with(_ce){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"))){ +return objj_msgSend(_delegate,"browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",_ce,_d0,_d1,_d2,_d3); +} +return nil; +} +}),new objj_method(sel_getUid("draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"),function(_d4,_d5,_d6,_d7,_d8,_d9){ +with(_d4){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"))){ +return objj_msgSend(_delegate,"browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:",_d4,_d6,_d7,_d8,_d9); +} +return nil; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("branchImage"),function(_da,_db){ +with(_da){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPBrowser,"class")),"pathForResource:","browser-leaf.png"),CGSizeMake(9,9)); +} +}),new objj_method(sel_getUid("highlightedBranchImage"),function(_dc,_dd){ +with(_dc){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPBrowser,"class")),"pathForResource:","browser-leaf-highlighted.png"),CGSizeMake(9,9)); +} +})]); +var _de=nil; +var _1=objj_allocateClassPair(CPView,"_CPBrowserResizeControl"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_mouseDownX"),new objj_ivar("_browser"),new objj_ivar("_index"),new objj_ivar("_width")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_df,_e0,_e1){ +with(_df){ +if(_df=objj_msgSendSuper({receiver:_df,super_class:objj_getClass("_CPBrowserResizeControl").super_class},"initWithFrame:",_e1)){ +objj_msgSend(_df,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(_df,"class"),"backgroundImage"))); +} +return _df; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_e2,_e3,_e4){ +with(_e2){ +_mouseDownX=objj_msgSend(_e4,"locationInWindow").x; +_browser=objj_msgSend(objj_msgSend(_e2,"superview"),"_browser"); +_index=objj_msgSend(_browser,"columnOfTableView:",objj_msgSend(objj_msgSend(_e2,"superview"),"documentView")); +_width=objj_msgSend(_browser,"widthOfColumn:",_index); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_e5,_e6,_e7){ +with(_e5){ +var _e8=objj_msgSend(_e7,"locationInWindow").x-_mouseDownX; +objj_msgSend(_browser,"setWidth:ofColumn:",_width+_e8,_index); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_e9,_ea,_eb){ +with(_e9){ +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("backgroundImage"),function(_ec,_ed){ +with(_ec){ +if(!_de){ +var _ee=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_ec,"class")),"pathForResource:","browser-resize-control.png"); +_de=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",_ee,CGSizeMake(15,14)); +} +return _de; +} +})]); +var _1=objj_allocateClassPair(CPScrollView,"_CPBrowserScrollView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_resizeControl"),new objj_ivar("_browser")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_browser"),function(_ef,_f0){ +with(_ef){ +return _browser; +} +}),new objj_method(sel_getUid("_setBrowser:"),function(_f1,_f2,_f3){ +with(_f1){ +_browser=_f3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f4,_f5,_f6){ +with(_f4){ +if(_f4=objj_msgSendSuper({receiver:_f4,super_class:objj_getClass("_CPBrowserScrollView").super_class},"initWithFrame:",_f6)){ +_resizeControl=objj_msgSend(objj_msgSend(_CPBrowserResizeControl,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_f4,"addSubview:",_resizeControl); +} +return _f4; +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(_f7,_f8,_f9){ +with(_f7){ +objj_msgSendSuper({receiver:_f7,super_class:objj_getClass("_CPBrowserScrollView").super_class},"reflectScrolledClipView:",_f9); +var _fa=objj_msgSend(_verticalScroller,"frame"); +_fa.size.height=CGRectGetHeight(objj_msgSend(_f7,"bounds"))-14-_fa.origin.y; +objj_msgSend(_verticalScroller,"setFrameSize:",_fa.size); +var _fb=CGRectMake(CGRectGetMinX(_fa),CGRectGetMaxY(_fa),objj_msgSend(CPScroller,"scrollerWidth"),14); +objj_msgSend(_resizeControl,"setFrame:",_fb); +} +})]); +var _1=objj_allocateClassPair(CPTableView,"_CPBrowserTableView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_browser")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:browser:"),function(_fc,_fd,_fe,_ff){ +with(_fc){ +if(_fc=objj_msgSendSuper({receiver:_fc,super_class:objj_getClass("_CPBrowserTableView").super_class},"initWithFrame:",_fe)){ +_browser=_ff; +} +return _fc; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(self,_100){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("mouseDown:"),function(self,_101,_102){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"mouseDown:",_102); +objj_msgSend(objj_msgSend(self,"window"),"makeFirstResponder:",_browser); +} +}),new objj_method(sel_getUid("browserView"),function(self,_103){ +with(self){ +return _browser; +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"),function(self,_104,_105,_106){ +with(self){ +return objj_msgSend(_browser,"canDragRowsWithIndexes:inColumn:withEvent:",_105,objj_msgSend(_browser,"columnOfTableView:",self),objj_msgSend(CPApp,"currentEvent")); +} +}),new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"),function(self,_107,_108,_109,_10a,_10b){ +with(self){ +return objj_msgSend(_browser,"draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",_108,objj_msgSend(_browser,"columnOfTableView:",self),_10a,_10b)||objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"dragImageForRowsWithIndexes:tableColumns:event:offset:",_108,_109,_10a,_10b); +} +}),new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"),function(self,_10c,_10d,_10e,_10f,_110){ +with(self){ +var _111=_10e.length; +while(_111--){ +if(objj_msgSend(_10e[_111],"identifier")==="Leaf"){ +objj_msgSend(_10e,"removeObject:",_10e[_111]); +} +} +return objj_msgSend(_browser,"draggingViewForRowsWithIndexes:inColumn:withEvent:offset:",_10d,objj_msgSend(_browser,"columnOfTableView:",self),_10f,_110)||objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"dragViewForRowsWithIndexes:tableColumns:event:offset:",_10d,_10e,_10f,_110); +} +}),new objj_method(sel_getUid("moveUp:"),function(self,_112,_113){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"moveUp:",_113); +objj_msgSend(_browser,"selectRow:inColumn:",objj_msgSend(self,"selectedRow"),objj_msgSend(_browser,"selectedColumn")); +} +}),new objj_method(sel_getUid("moveDown:"),function(self,_114,_115){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"moveDown:",_115); +objj_msgSend(_browser,"selectRow:inColumn:",objj_msgSend(self,"selectedRow"),objj_msgSend(_browser,"selectedColumn")); +} +}),new objj_method(sel_getUid("moveLeft:"),function(self,_116,_117){ +with(self){ +var _118=objj_msgSend(_browser,"selectedColumn")-1,_119=objj_msgSend(_browser,"selectedRowInColumn:",_118); +objj_msgSend(_browser,"selectRow:inColumn:",_119,_118); +} +}),new objj_method(sel_getUid("moveRight:"),function(self,_11a,_11b){ +with(self){ +objj_msgSend(_browser,"selectRow:inColumn:",0,objj_msgSend(_browser,"selectedColumn")+1); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPBrowserTableDelegate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_browser"),new objj_ivar("_index"),new objj_ivar("_delegate"),new objj_ivar("_item")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_browser"),function(self,_11c){ +with(self){ +return _browser; +} +}),new objj_method(sel_getUid("_setBrowser:"),function(self,_11d,_11e){ +with(self){ +_browser=_11e; +} +}),new objj_method(sel_getUid("_index"),function(self,_11f){ +with(self){ +return _index; +} +}),new objj_method(sel_getUid("_setIndex:"),function(self,_120,_121){ +with(self){ +_index=_121; +} +}),new objj_method(sel_getUid("_delegate"),function(self,_122){ +with(self){ +return _delegate; +} +}),new objj_method(sel_getUid("_setDelegate:"),function(self,_123,_124){ +with(self){ +_delegate=_124; +} +}),new objj_method(sel_getUid("_item"),function(self,_125){ +with(self){ +return _item; +} +}),new objj_method(sel_getUid("_setItem:"),function(self,_126,_127){ +with(self){ +_item=_127; +} +}),new objj_method(sel_getUid("numberOfRowsInTableView:"),function(self,_128,_129){ +with(self){ +return objj_msgSend(_delegate,"browser:numberOfChildrenOfItem:",_browser,_item); +} +}),new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"),function(self,_12a,_12b,_12c,row){ +with(self){ +if(objj_msgSend(_12c,"identifier")==="Image"){ +return objj_msgSend(_delegate,"browser:imageValueForItem:",_browser,objj_msgSend(self,"childAtIndex:",row)); +}else{ +if(objj_msgSend(_12c,"identifier")==="Leaf"){ +return !objj_msgSend(_browser,"isLeafItem:",objj_msgSend(self,"childAtIndex:",row)); +}else{ +return objj_msgSend(_delegate,"browser:objectValueForItem:",_browser,objj_msgSend(self,"childAtIndex:",row)); +} +} +} +}),new objj_method(sel_getUid("_tableViewDoubleClicked:"),function(self,_12d,_12e){ +with(self){ +objj_msgSend(_browser,"doDoubleClick:",self); +} +}),new objj_method(sel_getUid("_tableViewClicked:"),function(self,_12f,_130){ +with(self){ +var _131=objj_msgSend(_130,"selectedRowIndexes"); +objj_msgSend(_browser,"_column:clickedRow:",_index,objj_msgSend(_131,"count")===1?objj_msgSend(_131,"firstIndex"):-1); +} +}),new objj_method(sel_getUid("childAtIndex:"),function(self,_132,_133){ +with(self){ +return objj_msgSend(_delegate,"browser:child:ofItem:",_browser,_133,_item); +} +}),new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"),function(self,_134,_135,info,row,_136){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:acceptDrop:atRow:column:dropOperation:"))){ +return objj_msgSend(_delegate,"browser:acceptDrop:atRow:column:dropOperation:",_browser,info,row,_index,_136); +}else{ +return NO; +} +} +}),new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"),function(self,_137,_138,info,row,_139){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:validateDrop:proposedRow:column:dropOperation:"))){ +return objj_msgSend(_delegate,"browser:validateDrop:proposedRow:column:dropOperation:",_browser,info,row,_index,_139); +}else{ +return CPDragOperationNone; +} +} +}),new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"),function(self,_13a,_13b,_13c,_13d){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:"))){ +return objj_msgSend(_delegate,"browser:writeRowsWithIndexes:inColumn:toPasteboard:",_browser,_13c,_index,_13d); +}else{ +return NO; +} +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(self,_13e,_13f){ +with(self){ +if(_13f===sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")){ +return objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")); +}else{ +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableDelegate").super_class},"respondsToSelector:",_13f); +} +} +})]); +var _1=objj_allocateClassPair(CPView,"_CPBrowserLeafView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isLeaf"),new objj_ivar("_branchImage"),new objj_ivar("_highlightedBranchImage")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isLeaf"),function(self,_140){ +with(self){ +return _isLeaf; +} +}),new objj_method(sel_getUid("branchImage"),function(self,_141){ +with(self){ +return _branchImage; +} +}),new objj_method(sel_getUid("setBranchImage:"),function(self,_142,_143){ +with(self){ +_branchImage=_143; +} +}),new objj_method(sel_getUid("highlightedBranchImage"),function(self,_144){ +with(self){ +return _highlightedBranchImage; +} +}),new objj_method(sel_getUid("setHighlightedBranchImage:"),function(self,_145,_146){ +with(self){ +_highlightedBranchImage=_146; +} +}),new objj_method(sel_getUid("objectValue"),function(self,_147){ +with(self){ +return _isLeaf; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(self,_148,_149){ +with(self){ +_isLeaf=!!_149; +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(self,_14a,_14b){ +with(self){ +if(_14b==="image-view"){ +return CGRectInset(objj_msgSend(self,"bounds"),1,1); +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"rectForEphemeralSubviewNamed:",_14b); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(self,_14c,_14d){ +with(self){ +if(_14d==="image-view"){ +return objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"createEphemeralSubviewNamed:",_14d); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_14e){ +with(self){ +var _14f=objj_msgSend(self,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","image-view",CPWindowAbove,nil); +var _150=objj_msgSend(self,"themeState")&CPThemeStateSelectedDataView; +objj_msgSend(_14f,"setImage:",_isLeaf?(_150?_highlightedBranchImage:_branchImage):nil); +objj_msgSend(_14f,"setImageScaling:",CPScaleNone); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_151,_152){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"encodeWithCoder:",_152); +objj_msgSend(_152,"encodeBool:forKey:",_isLeaf,"_CPBrowserLeafViewIsLeafKey"); +objj_msgSend(_152,"encodeObject:forKey:",_branchImage,"_CPBrowserLeafViewBranchImageKey"); +objj_msgSend(_152,"encodeObject:forKey:",_highlightedBranchImage,"_CPBrowserLeafViewHighlightedBranchImageKey"); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(self,_153,_154){ +with(self){ +if(self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"initWithCoder:",_154)){ +_isLeaf=objj_msgSend(_154,"decodeBoolForKey:","_CPBrowserLeafViewIsLeafKey"); +_branchImage=objj_msgSend(_154,"decodeObjectForKey:","_CPBrowserLeafViewBranchImageKey"); +_highlightedBranchImage=objj_msgSend(_154,"decodeObjectForKey:","_CPBrowserLeafViewHighlightedBranchImageKey"); +} +return self; +} +})]); +p;10;CPButton.jt;18863;@STATIC;1.0;i;21;_CPImageAndTextView.ji;12;CGGeometry.ji;11;CPControl.ji;17;CPStringDrawing.ji;12;CPCheckBox.ji;9;CPRadio.jt;18732; +objj_executeFile("_CPImageAndTextView.j",YES); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPStringDrawing.j",YES); +CPRoundedBezelStyle=1; +CPRegularSquareBezelStyle=2; +CPThickSquareBezelStyle=3; +CPThickerSquareBezelStyle=4; +CPDisclosureBezelStyle=5; +CPShadowlessSquareBezelStyle=6; +CPCircularBezelStyle=7; +CPTexturedSquareBezelStyle=8; +CPHelpButtonBezelStyle=9; +CPSmallSquareBezelStyle=10; +CPTexturedRoundedBezelStyle=11; +CPRoundRectBezelStyle=12; +CPRecessedBezelStyle=13; +CPRoundedDisclosureBezelStyle=14; +CPHUDBezelStyle=-1; +CPMomentaryLightButton=0; +CPPushOnPushOffButton=1; +CPToggleButton=2; +CPSwitchButton=3; +CPRadioButton=4; +CPMomentaryChangeButton=5; +CPOnOffButton=6; +CPMomentaryPushInButton=7; +CPMomentaryPushButton=0; +CPMomentaryLight=7; +CPNoButtonMask=0; +CPContentsButtonMask=1; +CPPushInButtonMask=2; +CPGrayButtonMask=4; +CPBackgroundButtonMask=8; +CPNoCellMask=CPNoButtonMask; +CPContentsCellMask=CPContentsButtonMask; +CPPushInCellMask=CPPushInButtonMask; +CPChangeGrayCellMask=CPGrayButtonMask; +CPChangeBackgroundCellMask=CPBackgroundButtonMask; +CPButtonStateMixed=CPThemeState("mixed"); +CPButtonDefaultHeight=24; +CPButtonImageOffset=3; +var _1=objj_allocateClassPair(CPControl,"CPButton"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_allowsMixedState"),new objj_ivar("_title"),new objj_ivar("_alternateTitle"),new objj_ivar("_showsStateBy"),new objj_ivar("_highlightsBy"),new objj_ivar("_imageDimsWhenDisabled"),new objj_ivar("_bezelStyle"),new objj_ivar("_controlSize"),new objj_ivar("_keyEquivalent"),new objj_ivar("_keyEquivalentModifierMask")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPButton").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setValue:forThemeAttribute:",CPCenterTextAlignment,"alignment"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPCenterVerticalTextAlignment,"vertical-alignment"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPImageLeft,"image-position"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPScaleNone,"image-scaling"); +_controlSize=CPRegularControlSize; +_keyEquivalent=""; +_keyEquivalentModifierMask=0; +objj_msgSend(_3,"setBordered:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("allowsMixedState"),function(_6,_7){ +with(_6){ +return _allowsMixedState; +} +}),new objj_method(sel_getUid("setAllowsMixedState:"),function(_8,_9,_a){ +with(_8){ +_a=!!_a; +if(_allowsMixedState===_a){ +return; +} +_allowsMixedState=_a; +if(!_allowsMixedState&&objj_msgSend(_8,"state")===CPMixedState){ +objj_msgSend(_8,"setState:",CPOnState); +} +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_b,_c,_d){ +with(_b){ +if(!_d||_d===""||(objj_msgSend(_d,"intValue")===0)){ +_d=CPOffState; +}else{ +if(!objj_msgSend(_d,"isKindOfClass:",objj_msgSend(CPNumber,"class"))){ +_d=CPOnState; +}else{ +if(_d>CPOnState){ +_d=CPOnState; +}else{ +if(_d=0){ +_53.width=MIN(_53.width,_57.width); +} +if(_57.height>=0){ +_53.height=MIN(_53.height,_57.height); +} +objj_msgSend(_51,"setFrameSize:",_53); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_58,_59,_5a){ +with(_58){ +if(_5a==="bezel-view"){ +return objj_msgSend(_58,"bezelRectForBounds:",objj_msgSend(_58,"bounds")); +}else{ +if(_5a==="content-view"){ +return objj_msgSend(_58,"contentRectForBounds:",objj_msgSend(_58,"bounds")); +} +} +return objj_msgSendSuper({receiver:_58,super_class:objj_getClass("CPButton").super_class},"rectForEphemeralSubviewNamed:",_5a); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d==="bezel-view"){ +var _5e=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_5e,"setHitTests:",NO); +return _5e; +}else{ +return objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_5f,_60){ +with(_5f){ +var _61=objj_msgSend(_5f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","bezel-view",CPWindowBelow,"content-view"); +objj_msgSend(_61,"setBackgroundColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","bezel-color")); +var _62=objj_msgSend(_5f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","content-view",CPWindowAbove,"bezel-view"); +if(_62){ +objj_msgSend(_62,"setText:",(objj_msgSend(_5f,"hasThemeState:",CPThemeStateHighlighted)&&_alternateTitle)?_alternateTitle:_title); +objj_msgSend(_62,"setImage:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image")); +objj_msgSend(_62,"setImageOffset:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-offset")); +objj_msgSend(_62,"setFont:",objj_msgSend(_5f,"currentValueForThemeAttribute:","font")); +objj_msgSend(_62,"setTextColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_62,"setAlignment:",objj_msgSend(_5f,"currentValueForThemeAttribute:","alignment")); +objj_msgSend(_62,"setVerticalAlignment:",objj_msgSend(_5f,"currentValueForThemeAttribute:","vertical-alignment")); +objj_msgSend(_62,"setLineBreakMode:",objj_msgSend(_5f,"currentValueForThemeAttribute:","line-break-mode")); +objj_msgSend(_62,"setTextShadowColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_62,"setTextShadowOffset:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-shadow-offset")); +objj_msgSend(_62,"setImagePosition:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-position")); +objj_msgSend(_62,"setImageScaling:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-scaling")); +objj_msgSend(_62,"setDimsImage:",objj_msgSend(_5f,"hasThemeState:",CPThemeStateDisabled)&&_imageDimsWhenDisabled); +} +} +}),new objj_method(sel_getUid("setBordered:"),function(_63,_64,_65){ +with(_63){ +if(_65){ +objj_msgSend(_63,"setThemeState:",CPThemeStateBordered); +}else{ +objj_msgSend(_63,"unsetThemeState:",CPThemeStateBordered); +} +} +}),new objj_method(sel_getUid("isBordered"),function(_66,_67){ +with(_66){ +return objj_msgSend(_66,"hasThemeState:",CPThemeStateBordered); +} +}),new objj_method(sel_getUid("setKeyEquivalent:"),function(_68,_69,_6a){ +with(_68){ +_keyEquivalent=_6a||""; +if(_6a===CPNewlineCharacter||_6a===CPCarriageReturnCharacter){ +objj_msgSend(_68,"setThemeState:",CPThemeStateDefault); +}else{ +objj_msgSend(_68,"unsetThemeState:",CPThemeStateDefault); +} +} +}),new objj_method(sel_getUid("viewWillMoveToWindow:"),function(_6b,_6c,_6d){ +with(_6b){ +var _6e=objj_msgSend(_6b,"window"); +if(_6e===_6d||_6d===nil){ +return; +} +if(objj_msgSend(_6e,"defaultButton")===_6b){ +objj_msgSend(_6e,"setDefaultButton:",nil); +} +if(objj_msgSend(_6b,"keyEquivalent")===CPNewlineCharacter||objj_msgSend(_6b,"keyEquivalent")===CPCarriageReturnCharacter){ +objj_msgSend(_6d,"setDefaultButton:",_6b); +} +} +}),new objj_method(sel_getUid("keyEquivalent"),function(_6f,_70){ +with(_6f){ +return _keyEquivalent; +} +}),new objj_method(sel_getUid("setKeyEquivalentModifierMask:"),function(_71,_72,_73){ +with(_71){ +_keyEquivalentModifierMask=_73; +} +}),new objj_method(sel_getUid("keyEquivalentModifierMask"),function(_74,_75){ +with(_74){ +return _keyEquivalentModifierMask; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_76,_77,_78){ +with(_76){ +if(objj_msgSend(objj_msgSend(_76,"window"),"defaultButton")===_76){ +return NO; +} +if(!objj_msgSend(_78,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(_76,"keyEquivalent"),objj_msgSend(_76,"keyEquivalentModifierMask"))){ +return NO; +} +objj_msgSend(_76,"performClick:",nil); +return YES; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("buttonWithTitle:"),function(_79,_7a,_7b){ +with(_79){ +return objj_msgSend(_79,"buttonWithTitle:theme:",_7b,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("buttonWithTitle:theme:"),function(_7c,_7d,_7e,_7f){ +with(_7c){ +var _80=objj_msgSend(objj_msgSend(_7c,"alloc"),"init"); +objj_msgSend(_80,"setTheme:",_7f); +objj_msgSend(_80,"setTitle:",_7e); +objj_msgSend(_80,"sizeToFit"); +return _80; +} +}),new objj_method(sel_getUid("themeClass"),function(_81,_82){ +with(_81){ +return "button"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_83,_84){ +with(_83){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),0,{top:(0),right:(0),bottom:(0),left:(0)},{top:(0),right:(0),bottom:(0),left:(0)},objj_msgSend(CPNull,"null")],["image","image-offset","bezel-inset","content-inset","bezel-color"]); +} +})]); +var _1=objj_getClass("CPButton"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setBezelStyle:"),function(_85,_86,_87){ +with(_85){ +} +}),new objj_method(sel_getUid("bezelStyle"),function(_88,_89){ +with(_88){ +} +})]); +var _8a="CPButtonImageKey",_8b="CPButtonAlternateImageKey",_8c="CPButtonTitleKey",_8d="CPButtonAlternateTitleKey",_8e="CPButtonIsBorderedKey",_8f="CPButtonAllowsMixedStateKey",_90="CPButtonImageDimsWhenDisabledKey",_91="CPButtonImagePositionKey",_92="CPButtonKeyEquivalentKey",_93="CPButtonKeyEquivalentMaskKey"; +var _1=objj_getClass("CPButton"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_94,_95,_96){ +with(_94){ +_94=objj_msgSendSuper({receiver:_94,super_class:objj_getClass("CPButton").super_class},"initWithCoder:",_96); +if(_94){ +_controlSize=CPRegularControlSize; +_title=objj_msgSend(_96,"decodeObjectForKey:",_8c); +_alternateTitle=objj_msgSend(_96,"decodeObjectForKey:",_8d); +if(objj_msgSend(_96,"containsValueForKey:",_8f)){ +_allowsMixedState=objj_msgSend(_96,"decodeBoolForKey:",_8f); +} +objj_msgSend(_94,"setImageDimsWhenDisabled:",objj_msgSend(_96,"decodeObjectForKey:",_90)); +if(objj_msgSend(_96,"containsValueForKey:",_91)){ +objj_msgSend(_94,"setImagePosition:",objj_msgSend(_96,"decodeIntForKey:",_91)); +} +if(objj_msgSend(_96,"containsValueForKey:",_92)){ +objj_msgSend(_94,"setKeyEquivalent:",CFData.decodeBase64ToUtf16String(objj_msgSend(_96,"decodeObjectForKey:",_92))); +} +_keyEquivalentModifierMask=objj_msgSend(_96,"decodeIntForKey:",_93); +objj_msgSend(_94,"setNeedsLayout"); +objj_msgSend(_94,"setNeedsDisplay:",YES); +} +return _94; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_97,_98,_99){ +with(_97){ +objj_msgSendSuper({receiver:_97,super_class:objj_getClass("CPButton").super_class},"encodeWithCoder:",_99); +objj_msgSend(_99,"encodeObject:forKey:",_title,_8c); +objj_msgSend(_99,"encodeObject:forKey:",_alternateTitle,_8d); +objj_msgSend(_99,"encodeBool:forKey:",_allowsMixedState,_8f); +objj_msgSend(_99,"encodeBool:forKey:",objj_msgSend(_97,"imageDimsWhenDisabled"),_90); +objj_msgSend(_99,"encodeInt:forKey:",objj_msgSend(_97,"imagePosition"),_91); +if(_keyEquivalent){ +objj_msgSend(_99,"encodeObject:forKey:",CFData.encodeBase64Utf16String(_keyEquivalent),_92); +} +objj_msgSend(_99,"encodeInt:forKey:",_keyEquivalentModifierMask,_93); +} +})]); +objj_executeFile("CPCheckBox.j",YES); +objj_executeFile("CPRadio.j",YES); +p;13;CPButtonBar.jt;9767;@STATIC;1.0;I;15;AppKit/CPView.jt;9728; +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPView,"CPButtonBar"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_hasResizeControl"),new objj_ivar("_resizeControlIsLeftAligned"),new objj_ivar("_buttons")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPButtonBar").super_class},"initWithFrame:",_5); +if(_3){ +_buttons=[]; +objj_msgSend(_3,"setNeedsLayout"); +} +return _3; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_6,"superview"),_9=_6; +while(_8){ +if(objj_msgSend(_8,"isKindOfClass:",objj_msgSend(CPSplitView,"class"))){ +var _a=objj_msgSend(objj_msgSend(_8,"subviews"),"indexOfObject:",_9); +objj_msgSend(_8,"setButtonBar:forDividerAtIndex:",_6,_a); +break; +} +_9=_8; +_8=objj_msgSend(_8,"superview"); +} +} +}),new objj_method(sel_getUid("setButtons:"),function(_b,_c,_d){ +with(_b){ +_buttons=objj_msgSend(CPArray,"arrayWithArray:",_d); +for(var i=0,_e=objj_msgSend(_buttons,"count");i<_e;i++){ +objj_msgSend(_buttons[i],"setBordered:",YES); +} +objj_msgSend(_b,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("buttons"),function(_f,_10){ +with(_f){ +return objj_msgSend(CPArray,"arrayWithArray:",_buttons); +} +}),new objj_method(sel_getUid("setHasResizeControl:"),function(_11,_12,_13){ +with(_11){ +if(_hasResizeControl===_13){ +return; +} +_hasResizeControl=!!_13; +objj_msgSend(_11,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("hasResizeControl"),function(_14,_15){ +with(_14){ +return _hasResizeControl; +} +}),new objj_method(sel_getUid("setResizeControlIsLeftAligned:"),function(_16,_17,_18){ +with(_16){ +if(_resizeControlIsLeftAligned===_18){ +return; +} +_resizeControlIsLeftAligned=!!_18; +objj_msgSend(_16,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("resizeControlIsLeftAligned"),function(_19,_1a){ +with(_19){ +return _resizeControlIsLeftAligned; +} +}),new objj_method(sel_getUid("resizeControlFrame"),function(_1b,_1c){ +with(_1b){ +var _1d=objj_msgSend(_1b,"currentValueForThemeAttribute:","resize-control-inset"),_1e=objj_msgSend(_1b,"currentValueForThemeAttribute:","resize-control-size"),_1f=objj_msgSend(_1b,"bounds"),_20=_resizeControlIsLeftAligned?0:_1f.size.width-_1e.width-_1d.right-_1d.left; +return CGRectMake(_20,0,_1e.width+_1d.left+_1d.right,_1e.height+_1d.top+_1d.bottom); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_21,_22,_23){ +with(_21){ +if(_23==="resize-control-view"){ +var _24=objj_msgSend(_21,"currentValueForThemeAttribute:","resize-control-inset"),_25=objj_msgSend(_21,"currentValueForThemeAttribute:","resize-control-size"),_26=objj_msgSend(_21,"bounds"); +if(_resizeControlIsLeftAligned){ +return CGRectMake(_24.left,_24.top,_25.width,_25.height); +}else{ +return CGRectMake(_26.size.width-_25.width-_24.right,_24.top,_25.width,_25.height); +} +} +return objj_msgSendSuper({receiver:_21,super_class:objj_getClass("CPButtonBar").super_class},"rectForEphemeralSubviewNamed:",_23); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_27,_28,_29){ +with(_27){ +if(_29==="resize-control-view"){ +return objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPButtonBar").super_class},"createEphemeralSubviewNamed:",_29); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_2a,_2b){ +with(_2a){ +objj_msgSend(_2a,"setBackgroundColor:",objj_msgSend(_2a,"currentValueForThemeAttribute:","bezel-color")); +var _2c=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateNormal),_2d=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateHighlighted),_2e=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateDisabled),_2f=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-text-color",CPThemeStateNormal); +var _30=objj_msgSend(CPArray,"arrayWithArray:",_buttons),_31=objj_msgSend(_30,"count"); +while(_31--){ +if(objj_msgSend(_30[_31],"isHidden")){ +objj_msgSend(_30,"removeObject:",_30[_31]); +} +} +var _32=_resizeControlIsLeftAligned?CGRectGetMaxX(objj_msgSend(_2a,"bounds"))+1:-1,_33=objj_msgSend(_2a,"bounds"),_34=CGRectGetHeight(_33)-1,_35=CGRectGetWidth(_33),_36=_hasResizeControl?objj_msgSend(_2a,"rectForEphemeralSubviewNamed:","resize-control-view"):CGRectMakeZero(),_37=CGRectGetWidth(_36),_38=_35-_37-1; +for(var i=0,_31=objj_msgSend(_30,"count");i<_31;i++){ +var _39=_30[i],_3a=CGRectGetWidth(objj_msgSend(_39,"frame")); +if(_38>_3a){ +_38-=_3a; +}else{ +break; +} +if(_resizeControlIsLeftAligned){ +objj_msgSend(_39,"setFrame:",CGRectMake(_32-_3a,1,_3a,_34)); +_32-=_3a-1; +}else{ +objj_msgSend(_39,"setFrame:",CGRectMake(_32,1,_3a,_34)); +_32+=_3a-1; +} +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2c,"bezel-color",CPThemeStateNormal|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2d,"bezel-color",CPThemeStateHighlighted|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2e,"bezel-color",CPThemeStateDisabled|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2f,"text-color",CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2c,"bezel-color",CPThemeStateNormal|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2d,"bezel-color",CPThemeStateHighlighted|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2e,"bezel-color",CPThemeStateDisabled|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_2a,"addSubview:",_39); +} +if(_hasResizeControl){ +var _3b=objj_msgSend(_2a,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","resize-control-view",CPWindowAbove,nil); +objj_msgSend(_3b,"setAutoresizingMask:",_resizeControlIsLeftAligned?CPViewMaxXMargin:CPViewMinXMargin); +objj_msgSend(_3b,"setBackgroundColor:",objj_msgSend(_2a,"currentValueForThemeAttribute:","resize-control-color")); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_3c,_3d,_3e){ +with(_3c){ +objj_msgSendSuper({receiver:_3c,super_class:objj_getClass("CPButtonBar").super_class},"setFrameSize:",_3e); +objj_msgSend(_3c,"setNeedsLayout"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("plusButton"),function(_3f,_40){ +with(_3f){ +var _41=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_42=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","plus_button.png"),CGSizeMake(11,12)); +objj_msgSend(_41,"setBordered:",NO); +objj_msgSend(_41,"setImage:",_42); +objj_msgSend(_41,"setImagePosition:",CPImageOnly); +return _41; +} +}),new objj_method(sel_getUid("minusButton"),function(_43,_44){ +with(_43){ +var _45=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_46=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","minus_button.png"),CGSizeMake(11,4)); +objj_msgSend(_45,"setBordered:",NO); +objj_msgSend(_45,"setImage:",_46); +objj_msgSend(_45,"setImagePosition:",CPImageOnly); +return _45; +} +}),new objj_method(sel_getUid("actionPopupButton"),function(_47,_48){ +with(_47){ +var _49=objj_msgSend(objj_msgSend(CPPopUpButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_4a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","action_button.png"),CGSizeMake(22,14)); +objj_msgSend(_49,"addItemWithTitle:",nil); +objj_msgSend(objj_msgSend(_49,"lastItem"),"setImage:",_4a); +objj_msgSend(_49,"setImagePosition:",CPImageOnly); +objj_msgSend(_49,"setValue:forThemeAttribute:",CGInsetMake(0,0,0,0),"content-inset"); +objj_msgSend(_49,"setPullsDown:",YES); +return _49; +} +}),new objj_method(sel_getUid("themeClass"),function(_4b,_4c){ +with(_4b){ +return "button-bar"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_4d,_4e){ +with(_4d){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CGInsetMake(0,0,0,0),CGSizeMakeZero(),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["resize-control-inset","resize-control-size","resize-control-color","bezel-color","button-bezel-color","button-text-color"]); +} +})]); +var _4f="CPButtonBarHasResizeControlKey",_50="CPButtonBarResizeControlIsLeftAlignedKey",_51="CPButtonBarButtonsKey"; +var _1=objj_getClass("CPButtonBar"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButtonBar\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("encodeWithCoder:"),function(_52,_53,_54){ +with(_52){ +objj_msgSendSuper({receiver:_52,super_class:objj_getClass("CPButtonBar").super_class},"encodeWithCoder:",_54); +objj_msgSend(_54,"encodeBool:forKey:",_hasResizeControl,_4f); +objj_msgSend(_54,"encodeBool:forKey:",_resizeControlIsLeftAligned,_50); +objj_msgSend(_54,"encodeObject:forKey:",_buttons,_51); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_55,_56,_57){ +with(_55){ +if(_55=objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPButtonBar").super_class},"initWithCoder:",_57)){ +_buttons=objj_msgSend(_57,"decodeObjectForKey:",_51)||[]; +_hasResizeControl=objj_msgSend(_57,"decodeBoolForKey:",_4f); +_resizeControlIsLeftAligned=objj_msgSend(_57,"decodeBoolForKey:",_50); +} +return _55; +} +})]); +p;12;CPCheckBox.jt;1690;@STATIC;1.0;i;10;CPButton.jt;1656; +objj_executeFile("CPButton.j",YES); +CPCheckBoxImageOffset=4; +var _1=objj_allocateClassPair(CPButton,"CPCheckBox"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCheckBox").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_3,"setShowsStateBy:",CPContentsCellMask); +objj_msgSend(_3,"setImagePosition:",CPImageLeft); +objj_msgSend(_3,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_3,"setBordered:",NO); +} +return _3; +} +}),new objj_method(sel_getUid("takeStateFromKeyPath:ofObjects:"),function(_6,_7,_8,_9){ +with(_6){ +var _a=_9.length,_b=objj_msgSend(_9[0],"valueForKeyPath:",_8)?CPOnState:CPOffState; +objj_msgSend(_6,"setAllowsMixedState:",NO); +objj_msgSend(_6,"setState:",_b); +while(_a-->1){ +if(_b!==(objj_msgSend(_9[_a],"valueForKeyPath:",_8)?CPOnState:CPOffState)){ +objj_msgSend(_6,"setAllowsMixedState:",YES); +objj_msgSend(_6,"setState:",CPMixedState); +} +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_c,_d,_e,_f){ +with(_c){ +objj_msgSend(_c,"takeStateFromKeyPath:ofObjects:",_e,_f); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("checkBoxWithTitle:theme:"),function(_10,_11,_12,_13){ +with(_10){ +return objj_msgSend(_10,"buttonWithTitle:theme:",_12,_13); +} +}),new objj_method(sel_getUid("checkBoxWithTitle:"),function(_14,_15,_16){ +with(_14){ +return objj_msgSend(_14,"buttonWithTitle:",_16); +} +}),new objj_method(sel_getUid("themeClass"),function(_17,_18){ +with(_17){ +return "check-box"; +} +})]); +p;12;CPClipView.jt;4951;@STATIC;1.0;i;8;CPView.jt;4920; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"CPClipView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_documentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setDocumentView:"),function(_3,_4,_5){ +with(_3){ +if(_documentView==_5){ +return; +} +var _6=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_documentView){ +objj_msgSend(_6,"removeObserver:name:object:",_3,CPViewFrameDidChangeNotification,_documentView); +objj_msgSend(_6,"removeObserver:name:object:",_3,CPViewBoundsDidChangeNotification,_documentView); +objj_msgSend(_documentView,"removeFromSuperview"); +} +_documentView=_5; +if(_documentView){ +objj_msgSend(_3,"addSubview:",_documentView); +objj_msgSend(_documentView,"setPostsFrameChangedNotifications:",YES); +objj_msgSend(_documentView,"setPostsBoundsChangedNotifications:",YES); +objj_msgSend(_6,"addObserver:selector:name:object:",_3,sel_getUid("viewFrameChanged:"),CPViewFrameDidChangeNotification,_documentView); +objj_msgSend(_6,"addObserver:selector:name:object:",_3,sel_getUid("viewBoundsChanged:"),CPViewBoundsDidChangeNotification,_documentView); +} +} +}),new objj_method(sel_getUid("documentView"),function(_7,_8){ +with(_7){ +return _documentView; +} +}),new objj_method(sel_getUid("constrainScrollPoint:"),function(_9,_a,_b){ +with(_9){ +if(!_documentView){ +return {x:0,y:0}; +} +var _c=objj_msgSend(_documentView,"frame"); +_b.x=MAX(0,MIN(_b.x,MAX((_c.size.width)-(_bounds.size.width),0))); +_b.y=MAX(0,MIN(_b.y,MAX((_c.size.height)-(_bounds.size.height),0))); +return _b; +} +}),new objj_method(sel_getUid("setBoundsOrigin:"),function(_d,_e,_f){ +with(_d){ +if((_bounds.origin.x==_f.x&&_bounds.origin.y==_f.y)){ +return; +} +objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPClipView").super_class},"setBoundsOrigin:",_f); +var _10=objj_msgSend(_d,"superview"),_11=objj_getClass("CPScrollView"); +if(objj_msgSend(_10,"isKindOfClass:",_11)){ +objj_msgSend(_10,"reflectScrolledClipView:",_d); +} +} +}),new objj_method(sel_getUid("scrollToPoint:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_12,"setBoundsOrigin:",objj_msgSend(_12,"constrainScrollPoint:",_14)); +} +}),new objj_method(sel_getUid("viewBoundsChanged:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("viewFrameChanged:"),function(_18,_19,_1a){ +with(_18){ +objj_msgSend(_18,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSendSuper({receiver:_1b,super_class:objj_getClass("CPClipView").super_class},"resizeSubviewsWithOldSize:",_1d); +objj_msgSend(_1b,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("_constrainScrollPoint"),function(_1e,_1f){ +with(_1e){ +var _20=objj_msgSend(_1e,"bounds").origin; +objj_msgSend(_1e,"scrollToPoint:",_20); +if(!CGPointEqualToPoint(_20,objj_msgSend(_1e,"bounds").origin)){ +return; +} +var _21=objj_msgSend(_1e,"superview"),_22=objj_getClass("CPScrollView"); +if(objj_msgSend(_21,"isKindOfClass:",_22)){ +objj_msgSend(_21,"reflectScrolledClipView:",_1e); +} +} +}),new objj_method(sel_getUid("autoscroll:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_23,"bounds"),_27=objj_msgSend(_23,"convertPoint:fromView:",objj_msgSend(_25,"locationInWindow"),nil),_28=objj_msgSend(_23,"superview"),_29=0,_2a=0; +if(CGRectContainsPoint(_26,_27)){ +return NO; +} +if(!objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))||objj_msgSend(_28,"hasVerticalScroller")){ +if(_27.yCGRectGetMaxY(_26)){ +_2a=CGRectGetMaxY(_26)-_27.y; +} +} +if(_2a<-_26.size.height){ +_2a=-_26.size.height; +} +if(_2a>_26.size.height){ +_2a=_26.size.height; +} +} +if(!objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))||objj_msgSend(_28,"hasHorizontalScroller")){ +if(_27.xCGRectGetMaxX(_26)){ +_29=CGRectGetMaxX(_26)-_27.x; +} +} +if(_29<-_26.size.width){ +_29=-_26.size.width; +} +if(_29>_26.size.width){ +_29=_26.size.width; +} +} +return objj_msgSend(_23,"scrollToPoint:",CGPointMake(_26.origin.x-_29,_26.origin.y-_2a)); +} +})]); +var _2b="CPScrollViewDocumentView"; +var _1=objj_getClass("CPClipView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPClipView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_2c,_2d,_2e){ +with(_2c){ +if(_2c=objj_msgSendSuper({receiver:_2c,super_class:objj_getClass("CPClipView").super_class},"initWithCoder:",_2e)){ +objj_msgSend(_2c,"setDocumentView:",objj_msgSend(_2e,"decodeObjectForKey:",_2b)); +} +return _2c; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2f,_30,_31){ +with(_2f){ +objj_msgSendSuper({receiver:_2f,super_class:objj_getClass("CPClipView").super_class},"encodeWithCoder:",_31); +objj_msgSend(_31,"encodeObject:forKey:",_documentView,_2b); +} +})]); +p;18;CPCollectionView.jt;20492;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;Foundation/CPData.jI;23;Foundation/CPIndexSet.jI;28;Foundation/CPKeyedArchiver.jI;30;Foundation/CPKeyedUnarchiver.ji;8;CPView.ji;22;CPCollectionViewItem.jt;20288; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPData.j",NO); +objj_executeFile("Foundation/CPIndexSet.j",NO); +objj_executeFile("Foundation/CPKeyedArchiver.j",NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPCollectionViewItem.j",YES); +var _1=objj_allocateClassPair(CPView,"CPCollectionView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_content"),new objj_ivar("_items"),new objj_ivar("_itemData"),new objj_ivar("_itemPrototype"),new objj_ivar("_itemForDragging"),new objj_ivar("_cachedItems"),new objj_ivar("_maxNumberOfRows"),new objj_ivar("_maxNumberOfColumns"),new objj_ivar("_minItemSize"),new objj_ivar("_maxItemSize"),new objj_ivar("_backgroundColors"),new objj_ivar("_tileWidth"),new objj_ivar("_isSelectable"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_selectionIndexes"),new objj_ivar("_itemSize"),new objj_ivar("_horizontalMargin"),new objj_ivar("_verticalMargin"),new objj_ivar("_numberOfRows"),new objj_ivar("_numberOfColumns"),new objj_ivar("_delegate"),new objj_ivar("_mouseDownEvent")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCollectionView").super_class},"initWithFrame:",_5); +if(_3){ +_items=[]; +_content=[]; +_cachedItems=[]; +_itemSize=CGSizeMakeZero(); +_minItemSize=CGSizeMakeZero(); +_maxItemSize=CGSizeMakeZero(); +objj_msgSend(_3,"setBackgroundColors:",nil); +_verticalMargin=5; +_tileWidth=-1; +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_allowsEmptySelection=YES; +_isSelectable=YES; +} +return _3; +} +}),new objj_method(sel_getUid("setItemPrototype:"),function(_6,_7,_8){ +with(_6){ +_cachedItems=[]; +_itemData=nil; +_itemForDragging=nil; +_itemPrototype=_8; +objj_msgSend(_6,"reloadContent"); +} +}),new objj_method(sel_getUid("itemPrototype"),function(_9,_a){ +with(_9){ +return _itemPrototype; +} +}),new objj_method(sel_getUid("newItemForRepresentedObject:"),function(_b,_c,_d){ +with(_b){ +var _e=nil; +if(_cachedItems.length){ +_e=_cachedItems.pop(); +}else{ +if(!_itemData){ +if(_itemPrototype){ +_itemData=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_itemPrototype); +} +} +_e=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_itemData); +} +objj_msgSend(_e,"setRepresentedObject:",_d); +objj_msgSend(objj_msgSend(_e,"view"),"setFrameSize:",_itemSize); +return _e; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_f,_10){ +with(_f){ +return YES; +} +}),new objj_method(sel_getUid("isFirstResponder"),function(_11,_12){ +with(_11){ +return objj_msgSend(objj_msgSend(_11,"window"),"firstResponder")===_11; +} +}),new objj_method(sel_getUid("setContent:"),function(_13,_14,_15){ +with(_13){ +if(_content==_15){ +return; +} +_content=_15; +objj_msgSend(_13,"reloadContent"); +} +}),new objj_method(sel_getUid("content"),function(_16,_17){ +with(_16){ +return _content; +} +}),new objj_method(sel_getUid("items"),function(_18,_19){ +with(_18){ +return _items; +} +}),new objj_method(sel_getUid("setSelectable:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_isSelectable==_1c){ +return; +} +_isSelectable=_1c; +if(!_isSelectable){ +var _1d=CPNotFound; +while((_1d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_1d))!=CPNotFound){ +objj_msgSend(_items[_1d],"setSelected:",NO); +} +} +} +}),new objj_method(sel_getUid("isSelectable"),function(_1e,_1f){ +with(_1e){ +return _isSelectable; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_20,_21,_22){ +with(_20){ +_allowsEmptySelection=_22; +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_23,_24){ +with(_23){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_25,_26,_27){ +with(_25){ +_allowsMultipleSelection=_27; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_28,_29){ +with(_28){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setSelectionIndexes:"),function(_2a,_2b,_2c){ +with(_2a){ +if(objj_msgSend(_selectionIndexes,"isEqual:",_2c)||!_isSelectable){ +return; +} +var _2d=CPNotFound; +while((_2d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_2d))!=CPNotFound){ +objj_msgSend(_items[_2d],"setSelected:",NO); +} +_selectionIndexes=_2c; +var _2d=CPNotFound; +while((_2d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_2d))!=CPNotFound){ +objj_msgSend(_items[_2d],"setSelected:",YES); +} +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_2a),"reverseSetValueFor:","selectionIndexes"); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionViewDidChangeSelection:"))){ +objj_msgSend(_delegate,"collectionViewDidChangeSelection:",_2a); +} +} +}),new objj_method(sel_getUid("selectionIndexes"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_selectionIndexes,"copy"); +} +}),new objj_method(sel_getUid("reloadContent"),function(_30,_31){ +with(_30){ +var _32=_items.length; +while(_32--){ +objj_msgSend(objj_msgSend(_items[_32],"view"),"removeFromSuperview"); +objj_msgSend(_items[_32],"setSelected:",NO); +_cachedItems.push(_items[_32]); +} +_items=[]; +if(!_itemPrototype||!_content){ +return; +} +var _33=0; +_32=_content.length; +for(;_33<_32;++_33){ +_items.push(objj_msgSend(_30,"newItemForRepresentedObject:",_content[_33])); +objj_msgSend(_30,"addSubview:",objj_msgSend(_items[_33],"view")); +} +_33=CPNotFound; +while((_33=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_33))!=CPNotFound){ +objj_msgSend(_items[_33],"setSelected:",YES); +} +objj_msgSend(_30,"tile"); +} +}),new objj_method(sel_getUid("tile"),function(_34,_35){ +with(_34){ +var _36=CGRectGetWidth(objj_msgSend(_34,"bounds")); +if(!objj_msgSend(_content,"count")||_36==_tileWidth){ +return; +} +var _37=CGSizeMakeCopy(_minItemSize); +_numberOfColumns=MAX(1,FLOOR(_36/_37.width)); +if(_maxNumberOfColumns>0){ +_numberOfColumns=MIN(_maxNumberOfColumns,_numberOfColumns); +} +var _38=_36-_numberOfColumns*_37.width,_39=NO; +if(_38>0&&_37.width<_maxItemSize.width){ +_37.width=MIN(_maxItemSize.width,_37.width+FLOOR(_38/_numberOfColumns)); +} +if(_maxNumberOfColumns==1&&_37.width<_maxItemSize.width&&_37.width<_36){ +_37.width=MIN(_maxItemSize.width,_36); +} +if(!CGSizeEqualToSize(_itemSize,_37)){ +_itemSize=_37; +_39=YES; +} +var _3a=0,_3b=_items.length; +if(_maxNumberOfColumns>0&&_maxNumberOfRows>0){ +_3b=MIN(_3b,_maxNumberOfColumns*_maxNumberOfRows); +} +_numberOfRows=CEIL(_3b/_numberOfColumns); +_horizontalMargin=FLOOR((_36-_numberOfColumns*_37.width)/(_numberOfColumns+1)); +var x=_horizontalMargin,y=-_37.height; +for(;_3a<_3b;++_3a){ +if(_3a%_numberOfColumns==0){ +x=_horizontalMargin; +y+=_verticalMargin+_37.height; +} +var _3c=objj_msgSend(_items[_3a],"view"); +objj_msgSend(_3c,"setFrameOrigin:",CGPointMake(x,y)); +if(_39){ +objj_msgSend(_3c,"setFrameSize:",_itemSize); +} +x+=_37.width+_horizontalMargin; +} +var _3d=objj_msgSend(_34,"superview"),_3e=y+_37.height+_verticalMargin; +if(objj_msgSend(_3d,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _3f=objj_msgSend(_3d,"bounds").size; +_3e=MAX(_3f.height,_3e); +} +_tileWidth=_36; +objj_msgSend(_34,"setFrameSize:",CGSizeMake(_36,_3e)); +_tileWidth=-1; +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"tile"); +} +}),new objj_method(sel_getUid("setMaxNumberOfRows:"),function(_43,_44,_45){ +with(_43){ +if(_maxNumberOfRows==_45){ +return; +} +_maxNumberOfRows=_45; +objj_msgSend(_43,"tile"); +} +}),new objj_method(sel_getUid("maxNumberOfRows"),function(_46,_47){ +with(_46){ +return _maxNumberOfRows; +} +}),new objj_method(sel_getUid("setMaxNumberOfColumns:"),function(_48,_49,_4a){ +with(_48){ +if(_maxNumberOfColumns==_4a){ +return; +} +_maxNumberOfColumns=_4a; +objj_msgSend(_48,"tile"); +} +}),new objj_method(sel_getUid("maxNumberOfColumns"),function(_4b,_4c){ +with(_4b){ +return _maxNumberOfColumns; +} +}),new objj_method(sel_getUid("numberOfRows"),function(_4d,_4e){ +with(_4d){ +return _numberOfRows; +} +}),new objj_method(sel_getUid("numberOfColumns"),function(_4f,_50){ +with(_4f){ +return _numberOfColumns; +} +}),new objj_method(sel_getUid("setMinItemSize:"),function(_51,_52,_53){ +with(_51){ +if(CGSizeEqualToSize(_minItemSize,_53)){ +return; +} +_minItemSize=CGSizeMakeCopy(_53); +objj_msgSend(_51,"tile"); +} +}),new objj_method(sel_getUid("minItemSize"),function(_54,_55){ +with(_54){ +return _minItemSize; +} +}),new objj_method(sel_getUid("setMaxItemSize:"),function(_56,_57,_58){ +with(_56){ +if(CGSizeEqualToSize(_maxItemSize,_58)){ +return; +} +_maxItemSize=CGSizeMakeCopy(_58); +objj_msgSend(_56,"tile"); +} +}),new objj_method(sel_getUid("maxItemSize"),function(_59,_5a){ +with(_59){ +return _maxItemSize; +} +}),new objj_method(sel_getUid("setBackgroundColors:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_backgroundColors===_5d){ +return; +} +_backgroundColors=_5d; +if(!_backgroundColors){ +_backgroundColors=objj_msgSend(CPColor,"whiteColor"); +} +if(objj_msgSend(_backgroundColors,"count")===1){ +objj_msgSend(_5b,"setBackgroundColor:",_backgroundColors[0]); +}else{ +objj_msgSend(_5b,"setBackgroundColor:",nil); +} +objj_msgSend(_5b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("backgroundColors"),function(_5e,_5f){ +with(_5e){ +return _backgroundColors; +} +}),new objj_method(sel_getUid("mouseUp:"),function(_60,_61,_62){ +with(_60){ +if(objj_msgSend(_selectionIndexes,"count")&&objj_msgSend(_62,"clickCount")==2&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:didDoubleClickOnItemAtIndex:"))){ +objj_msgSend(_delegate,"collectionView:didDoubleClickOnItemAtIndex:",_60,objj_msgSend(_selectionIndexes,"firstIndex")); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_63,_64,_65){ +with(_63){ +_mouseDownEvent=_65; +var _66=objj_msgSend(_63,"convertPoint:fromView:",objj_msgSend(_65,"locationInWindow"),nil),row=FLOOR(_66.y/(_itemSize.height+_verticalMargin)),_67=FLOOR(_66.x/(_itemSize.width+_horizontalMargin)),_68=row*_numberOfColumns+_67; +if(_68>=0&&_68<_items.length){ +if(_allowsMultipleSelection&&(objj_msgSend(_65,"modifierFlags")&CPCommandKeyMask||objj_msgSend(_65,"modifierFlags")&CPShiftKeyMask)){ +var _69=objj_msgSend(_selectionIndexes,"copy"); +if(objj_msgSend(_69,"containsIndex:",_68)){ +objj_msgSend(_69,"removeIndex:",_68); +}else{ +objj_msgSend(_69,"addIndex:",_68); +} +}else{ +_69=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_68); +} +objj_msgSend(_63,"setSelectionIndexes:",_69); +}else{ +if(_allowsEmptySelection){ +objj_msgSend(_63,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSet")); +} +} +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_6a,_6b,_6c){ +with(_6a){ +var _6d=objj_msgSend(_6c,"locationInWindow"),_6e=objj_msgSend(_mouseDownEvent,"locationInWindow"); +if((ABS(_6d.x-_6e.x)<3)&&(ABS(_6d.y-_6e.y)<3)){ +return; +} +if(!objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:dragTypesForItemsAtIndexes:"))){ +return; +} +if(!objj_msgSend(_selectionIndexes,"count")){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:canDragItemsAtIndexes:withEvent:"))&&!objj_msgSend(_delegate,"collectionView:canDragItemsAtIndexes:withEvent:",_6a,_selectionIndexes,_mouseDownEvent)){ +return; +} +var _6f=objj_msgSend(_delegate,"collectionView:dragTypesForItemsAtIndexes:",_6a,_selectionIndexes); +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",_6f,_6a); +if(!_itemForDragging){ +_itemForDragging=objj_msgSend(_6a,"newItemForRepresentedObject:",_content[objj_msgSend(_selectionIndexes,"firstIndex")]); +}else{ +objj_msgSend(_itemForDragging,"setRepresentedObject:",_content[objj_msgSend(_selectionIndexes,"firstIndex")]); +} +var _70=objj_msgSend(_itemForDragging,"view"); +objj_msgSend(_70,"setFrameSize:",_itemSize); +objj_msgSend(_70,"setAlphaValue:",0.7); +objj_msgSend(_6a,"dragView:at:offset:event:pasteboard:source:slideBack:",_70,objj_msgSend(objj_msgSend(_items[objj_msgSend(_selectionIndexes,"firstIndex")],"view"),"frame").origin,CGSizeMakeZero(),_mouseDownEvent,nil,_6a,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_71,_72,_73,_74){ +with(_71){ +objj_msgSend(_73,"setData:forType:",objj_msgSend(_delegate,"collectionView:dataForItemsAtIndexes:forType:",_71,_selectionIndexes,_74),_74); +} +}),new objj_method(sel_getUid("setVerticalMargin:"),function(_75,_76,_77){ +with(_75){ +if(_verticalMargin==_77){ +return; +} +_verticalMargin=_77; +objj_msgSend(_75,"tile"); +} +}),new objj_method(sel_getUid("verticalMargin"),function(_78,_79){ +with(_78){ +return _verticalMargin; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_7a,_7b,_7c){ +with(_7a){ +_delegate=_7c; +} +}),new objj_method(sel_getUid("delegate"),function(_7d,_7e){ +with(_7d){ +return _delegate; +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_7f,_80,_81){ +with(_7f){ +return objj_msgSend(_items,"objectAtIndex:",_81); +} +}),new objj_method(sel_getUid("frameForItemAtIndex:"),function(_82,_83,_84){ +with(_82){ +return objj_msgSend(objj_msgSend(objj_msgSend(_82,"itemAtIndex:",_84),"view"),"frame"); +} +}),new objj_method(sel_getUid("frameForItemsAtIndexes:"),function(_85,_86,_87){ +with(_85){ +var _88=[],_89=CGRectNull; +objj_msgSend(_87,"getIndexes:maxCount:inIndexRange:",_88,-1,nil); +var _8a=0,_8b=objj_msgSend(_88,"count"); +for(;_8a<_8b;++_8a){ +_89=CGRectUnion(_89,objj_msgSend(_85,"frameForItemAtIndex:",_88[_8a])); +} +return _89; +} +})]); +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("_modifySelectionWithNewIndex:direction:expand:"),function(_8c,_8d,_8e,_8f,_90){ +with(_8c){ +_8e=MIN(MAX(_8e,0),objj_msgSend(objj_msgSend(_8c,"items"),"count")-1); +if(_allowsMultipleSelection&&_90){ +var _91=objj_msgSend(_selectionIndexes,"copy"),_92=objj_msgSend(_91,"firstIndex"),_93=objj_msgSend(_91,"lastIndex"); +if(_8f===-1){ +objj_msgSend(_91,"addIndexesInRange:",CPMakeRange(_8e,_92-_8e+1)); +}else{ +objj_msgSend(_91,"addIndexesInRange:",CPMakeRange(_93,_8e-_93+1)); +} +}else{ +_91=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_8e); +} +objj_msgSend(_8c,"setSelectionIndexes:",_91); +objj_msgSend(_8c,"_scrollToSelection"); +} +}),new objj_method(sel_getUid("_scrollToSelection"),function(_94,_95){ +with(_94){ +var _96=objj_msgSend(_94,"frameForItemsAtIndexes:",objj_msgSend(_94,"selectionIndexes")); +if(!CGRectIsNull(_96)){ +objj_msgSend(_94,"scrollRectToVisible:",_96); +} +} +}),new objj_method(sel_getUid("moveLeft:"),function(_97,_98,_99){ +with(_97){ +var _9a=objj_msgSend(objj_msgSend(_97,"selectionIndexes"),"firstIndex"); +if(_9a===CPNotFound){ +_9a=objj_msgSend(objj_msgSend(_97,"items"),"count"); +} +objj_msgSend(_97,"_modifySelectionWithNewIndex:direction:expand:",_9a-1,-1,NO); +} +}),new objj_method(sel_getUid("moveLeftAndModifySelection:"),function(_9b,_9c,_9d){ +with(_9b){ +var _9e=objj_msgSend(objj_msgSend(_9b,"selectionIndexes"),"firstIndex"); +if(_9e===CPNotFound){ +_9e=objj_msgSend(objj_msgSend(_9b,"items"),"count"); +} +objj_msgSend(_9b,"_modifySelectionWithNewIndex:direction:expand:",_9e-1,-1,YES); +} +}),new objj_method(sel_getUid("moveRight:"),function(_9f,_a0,_a1){ +with(_9f){ +objj_msgSend(_9f,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_9f,"selectionIndexes"),"lastIndex")+1,1,NO); +} +}),new objj_method(sel_getUid("moveRightAndModifySelection:"),function(_a2,_a3,_a4){ +with(_a2){ +objj_msgSend(_a2,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a2,"selectionIndexes"),"lastIndex")+1,1,YES); +} +}),new objj_method(sel_getUid("moveDown:"),function(_a5,_a6,_a7){ +with(_a5){ +objj_msgSend(_a5,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a5,"selectionIndexes"),"lastIndex")+objj_msgSend(_a5,"numberOfColumns"),1,NO); +} +}),new objj_method(sel_getUid("moveDownAndModifySelection:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a8,"selectionIndexes"),"lastIndex")+objj_msgSend(_a8,"numberOfColumns"),1,YES); +} +}),new objj_method(sel_getUid("moveUp:"),function(_ab,_ac,_ad){ +with(_ab){ +var _ae=objj_msgSend(objj_msgSend(_ab,"selectionIndexes"),"firstIndex"); +if(_ae==CPNotFound){ +_ae=objj_msgSend(objj_msgSend(_ab,"items"),"count"); +} +objj_msgSend(_ab,"_modifySelectionWithNewIndex:direction:expand:",_ae-objj_msgSend(_ab,"numberOfColumns"),-1,NO); +} +}),new objj_method(sel_getUid("moveUpAndModifySelection:"),function(_af,_b0,_b1){ +with(_af){ +var _b2=objj_msgSend(objj_msgSend(_af,"selectionIndexes"),"firstIndex"); +if(_b2==CPNotFound){ +_b2=objj_msgSend(objj_msgSend(_af,"items"),"count"); +} +objj_msgSend(_af,"_modifySelectionWithNewIndex:direction:expand:",_b2-objj_msgSend(_af,"numberOfColumns"),-1,YES); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(_b3,_b4,_b5){ +with(_b3){ +if(objj_msgSend(objj_msgSend(_b3,"delegate"),"respondsToSelector:",sel_getUid("collectionView:shouldDeleteItemsAtIndexes:"))){ +objj_msgSend(objj_msgSend(_b3,"delegate"),"collectionView:shouldDeleteItemsAtIndexes:",_b3,objj_msgSend(_b3,"selectionIndexes")); +var _b6=objj_msgSend(objj_msgSend(_b3,"selectionIndexes"),"firstIndex"); +if(_b6>objj_msgSend(objj_msgSend(_b3,"content"),"count")-1){ +objj_msgSend(_b3,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",objj_msgSend(objj_msgSend(_b3,"content"),"count")-1)); +} +objj_msgSend(_b3,"_scrollToSelection"); +objj_msgSend(_b3,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("keyDown:"),function(_b7,_b8,_b9){ +with(_b7){ +objj_msgSend(_b7,"interpretKeyEvents:",[_b9]); +} +})]); +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("rectForItemAtIndex:"),function(_ba,_bb,_bc){ +with(_ba){ +_CPReportLenientDeprecation(objj_msgSend(_ba,"class"),_bb,sel_getUid("frameForItemAtIndex:")); +return objj_msgSend(_ba,"frameForItemAtIndex:",_bc); +} +}),new objj_method(sel_getUid("rectForItemsAtIndexes:"),function(_bd,_be,_bf){ +with(_bd){ +_CPReportLenientDeprecation(objj_msgSend(_bd,"class"),_be,sel_getUid("frameForItemsAtIndexes:")); +return objj_msgSend(_bd,"frameForItemsAtIndexes:",_bf); +} +})]); +var _c0="CPCollectionViewMinItemSizeKey",_c1="CPCollectionViewMaxItemSizeKey",_c2="CPCollectionViewVerticalMarginKey",_c3="CPCollectionViewMaxNumberOfRowsKey",_c4="CPCollectionViewMaxNumberOfColumnsKey",_c5="CPCollectionViewSelectableKey",_c6="CPCollectionViewBackgroundColorsKey"; +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_c7,_c8,_c9){ +with(_c7){ +_c7=objj_msgSendSuper({receiver:_c7,super_class:objj_getClass("CPCollectionView").super_class},"initWithCoder:",_c9); +if(_c7){ +_items=[]; +_content=[]; +_cachedItems=[]; +_itemSize=CGSizeMakeZero(); +_minItemSize=objj_msgSend(_c9,"decodeSizeForKey:",_c0)||CGSizeMakeZero(); +_maxItemSize=objj_msgSend(_c9,"decodeSizeForKey:",_c1)||CGSizeMakeZero(); +_maxNumberOfRows=objj_msgSend(_c9,"decodeIntForKey:",_c3)||0; +_maxNumberOfColumns=objj_msgSend(_c9,"decodeIntForKey:",_c4)||0; +_verticalMargin=objj_msgSend(_c9,"decodeFloatForKey:",_c2); +_isSelectable=objj_msgSend(_c9,"decodeBoolForKey:",_c5); +objj_msgSend(_c7,"setBackgroundColors:",objj_msgSend(_c9,"decodeObjectForKey:",_c6)); +_tileWidth=-1; +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_allowsEmptySelection=YES; +} +return _c7; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_ca,_cb,_cc){ +with(_ca){ +objj_msgSendSuper({receiver:_ca,super_class:objj_getClass("CPCollectionView").super_class},"encodeWithCoder:",_cc); +if(!CGSizeEqualToSize(_minItemSize,CGSizeMakeZero())){ +objj_msgSend(_cc,"encodeSize:forKey:",_minItemSize,_c0); +} +if(!CGSizeEqualToSize(_maxItemSize,CGSizeMakeZero())){ +objj_msgSend(_cc,"encodeSize:forKey:",_maxItemSize,_c1); +} +objj_msgSend(_cc,"encodeInt:forKey:",_maxNumberOfRows,_c3); +objj_msgSend(_cc,"encodeInt:forKey:",_maxNumberOfColumns,_c4); +objj_msgSend(_cc,"encodeBool:forKey:",_isSelectable,_c5); +objj_msgSend(_cc,"encodeFloat:forKey:",_verticalMargin,_c2); +objj_msgSend(_cc,"encodeObject:forKey:",_backgroundColors,_c6); +} +})]); +p;22;CPCollectionViewItem.jt;1188;@STATIC;1.0;i;18;CPViewController.jt;1146; +objj_executeFile("CPViewController.j",YES); +var _1=objj_allocateClassPair(CPViewController,"CPCollectionViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isSelected")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setRepresentedObject:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCollectionViewItem").super_class},"setRepresentedObject:",_5); +var _6=objj_msgSend(_3,"view"); +if(objj_msgSend(_6,"respondsToSelector:",sel_getUid("setRepresentedObject:"))){ +objj_msgSend(_6,"setRepresentedObject:",objj_msgSend(_3,"representedObject")); +} +} +}),new objj_method(sel_getUid("setSelected:"),function(_7,_8,_9){ +with(_7){ +_9=!!_9; +if(_isSelected===_9){ +return; +} +_isSelected=_9; +var _a=objj_msgSend(_7,"view"); +if(objj_msgSend(_a,"respondsToSelector:",sel_getUid("setSelected:"))){ +objj_msgSend(_a,"setSelected:",objj_msgSend(_7,"isSelected")); +} +} +}),new objj_method(sel_getUid("isSelected"),function(_b,_c){ +with(_b){ +return _isSelected; +} +}),new objj_method(sel_getUid("collectionView"),function(_d,_e){ +with(_d){ +return objj_msgSend(_view,"superview"); +} +})]); +p;9;CPColor.jt;11992;@STATIC;1.0;I;21;Foundation/CPObject.ji;9;CGColor.ji;17;CPCompatibility.ji;9;CPImage.jt;11898; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CGColor.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPImage.j",YES); +var _1=0,_2=1,_3=2,_4=3; +var _5=0,_6=1,_7=2; +var _8,_9,_a,_b,_c,_d,_e,_f,_10,_11,_12,_13,_14,_15,_16,_17; +var _18=objj_allocateClassPair(CPObject,"CPColor"),_19=_18.isa; +class_addIvars(_18,[new objj_ivar("_components"),new objj_ivar("_patternImage"),new objj_ivar("_cssString")]); +objj_registerClassPair(_18); +class_addMethods(_18,[new objj_method(sel_getUid("_initWithCSSString:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_1c.indexOf("rgb")==CPNotFound){ +return nil; +} +_1a=objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("CPColor").super_class},"init"); +var _1d=_1c.indexOf("("); +var _1e=_1c.substring(_1d+1).split(","); +_components=[parseInt(_1e[0],10)/255,parseInt(_1e[1],10)/255,parseInt(_1e[2],10)/255,_1e[3]?parseInt(_1e[3],10)/255:1]; +_cssString=_1c; +return _1a; +} +}),new objj_method(sel_getUid("_initWithRGBA:"),function(_1f,_20,_21){ +with(_1f){ +_1f=objj_msgSendSuper({receiver:_1f,super_class:objj_getClass("CPColor").super_class},"init"); +if(_1f){ +_components=_21; +var _22=CPFeatureIsCompatible(CPCSSRGBAFeature)&&_components[3]!=1; +_cssString=(_22?"rgba(":"rgb(")+parseInt(_components[0]*255)+", "+parseInt(_components[1]*255)+", "+parseInt(_components[2]*255)+(_22?(", "+_components[3]):"")+")"; +} +return _1f; +} +}),new objj_method(sel_getUid("_initWithPatternImage:"),function(_23,_24,_25){ +with(_23){ +_23=objj_msgSendSuper({receiver:_23,super_class:objj_getClass("CPColor").super_class},"init"); +if(_23){ +_patternImage=_25; +_cssString="url(\""+objj_msgSend(_patternImage,"filename")+"\")"; +_components=[0,0,0,1]; +} +return _23; +} +}),new objj_method(sel_getUid("patternImage"),function(_26,_27){ +with(_26){ +return _patternImage; +} +}),new objj_method(sel_getUid("alphaComponent"),function(_28,_29){ +with(_28){ +return _components[3]; +} +}),new objj_method(sel_getUid("blueComponent"),function(_2a,_2b){ +with(_2a){ +return _components[2]; +} +}),new objj_method(sel_getUid("greenComponent"),function(_2c,_2d){ +with(_2c){ +return _components[1]; +} +}),new objj_method(sel_getUid("redComponent"),function(_2e,_2f){ +with(_2e){ +return _components[0]; +} +}),new objj_method(sel_getUid("components"),function(_30,_31){ +with(_30){ +return _components; +} +}),new objj_method(sel_getUid("colorWithAlphaComponent:"),function(_32,_33,_34){ +with(_32){ +var _35=_components.slice(); +_35[_35.length-1]=_34; +return objj_msgSend(objj_msgSend(objj_msgSend(_32,"class"),"alloc"),"_initWithRGBA:",_35); +} +}),new objj_method(sel_getUid("hsbComponents"),function(_36,_37){ +with(_36){ +var red=ROUND(_components[_1]*255),_38=ROUND(_components[_2]*255),_39=ROUND(_components[_3]*255); +var max=MAX(red,_38,_39),min=MIN(red,_38,_39),_3a=max-min; +var _3b=max/255,_3c=(max!=0)?_3a/max:0; +var hue; +if(_3c==0){ +hue=0; +}else{ +var rr=(max-red)/_3a; +var gr=(max-_38)/_3a; +var br=(max-_39)/_3a; +if(red==max){ +hue=br-gr; +}else{ +if(_38==max){ +hue=2+rr-br; +}else{ +hue=4+gr-rr; +} +} +hue/=6; +if(hue<0){ +hue++; +} +} +return [ROUND(hue*360),ROUND(_3c*100),ROUND(_3b*100)]; +} +}),new objj_method(sel_getUid("cssString"),function(_3d,_3e){ +with(_3d){ +return _cssString; +} +}),new objj_method(sel_getUid("hexString"),function(_3f,_40){ +with(_3f){ +return _41(objj_msgSend(_3f,"redComponent"),objj_msgSend(_3f,"greenComponent"),objj_msgSend(_3f,"blueComponent")); +} +}),new objj_method(sel_getUid("isEqual:"),function(_42,_43,_44){ +with(_42){ +if(!_44){ +return NO; +} +if(_44===_42){ +return YES; +} +return objj_msgSend(_44,"isKindOfClass:",CPColor)&&objj_msgSend(_44,"cssString")===objj_msgSend(_42,"cssString"); +} +}),new objj_method(sel_getUid("description"),function(_45,_46){ +with(_45){ +return objj_msgSendSuper({receiver:_45,super_class:objj_getClass("CPColor").super_class},"description")+" "+objj_msgSend(_45,"cssString"); +} +})]); +class_addMethods(_19,[new objj_method(sel_getUid("colorWithRed:green:blue:alpha:"),function(_47,_48,red,_49,_4a,_4b){ +with(_47){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[red,_49,_4a,_4b]); +} +}),new objj_method(sel_getUid("colorWithCalibratedRed:green:blue:alpha:"),function(_4c,_4d,red,_4e,_4f,_50){ +with(_4c){ +return objj_msgSend(_4c,"colorWithRed:green:blue:alpha:",red,_4e,_4f,_50); +} +}),new objj_method(sel_getUid("colorWithWhite:alpha:"),function(_51,_52,_53,_54){ +with(_51){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[_53,_53,_53,_54]); +} +}),new objj_method(sel_getUid("colorWithCalibratedWhite:alpha:"),function(_55,_56,_57,_58){ +with(_55){ +return objj_msgSend(_55,"colorWithWhite:alpha:",_57,_58); +} +}),new objj_method(sel_getUid("colorWithHue:saturation:brightness:"),function(_59,_5a,hue,_5b,_5c){ +with(_59){ +return objj_msgSend(_59,"colorWithHue:saturation:brightness:alpha:",hue,_5b,_5c,1); +} +}),new objj_method(sel_getUid("colorWithHue:saturation:brightness:alpha:"),function(_5d,_5e,hue,_5f,_60,_61){ +with(_5d){ +if(_5f===0){ +return objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",_60/100,_61); +} +var f=hue%60,p=(_60*(100-_5f))/10000,q=(_60*(6000-_5f*f))/600000,t=(_60*(6000-_5f*(60-f)))/600000,b=_60/100; +switch(FLOOR(hue/60)){ +case 0: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",b,t,p,_61); +case 1: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",q,b,p,_61); +case 2: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",p,b,t,_61); +case 3: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",p,q,b,_61); +case 4: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",t,p,b,_61); +case 5: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",b,p,q,_61); +} +} +}),new objj_method(sel_getUid("colorWithHexString:"),function(_62,_63,hex){ +with(_62){ +var _64=_65(hex); +return _64?objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",_64):null; +} +}),new objj_method(sel_getUid("blackColor"),function(_66,_67){ +with(_66){ +if(!_8){ +_8=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,0,1]); +} +return _8; +} +}),new objj_method(sel_getUid("blueColor"),function(_68,_69){ +with(_68){ +if(!_b){ +_b=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,1,1]); +} +return _b; +} +}),new objj_method(sel_getUid("darkGrayColor"),function(_6a,_6b){ +with(_6a){ +if(!_f){ +_f=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1/3,1); +} +return _f; +} +}),new objj_method(sel_getUid("grayColor"),function(_6c,_6d){ +with(_6c){ +if(!_d){ +_d=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.5,1); +} +return _d; +} +}),new objj_method(sel_getUid("greenColor"),function(_6e,_6f){ +with(_6e){ +if(!_a){ +_a=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,1,0,1]); +} +return _a; +} +}),new objj_method(sel_getUid("lightGrayColor"),function(_70,_71){ +with(_70){ +if(!_e){ +_e=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",2/3,1); +} +return _e; +} +}),new objj_method(sel_getUid("redColor"),function(_72,_73){ +with(_72){ +if(!_9){ +_9=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0,0,1]); +} +return _9; +} +}),new objj_method(sel_getUid("whiteColor"),function(_74,_75){ +with(_74){ +if(!_10){ +_10=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,1,1,1]); +} +return _10; +} +}),new objj_method(sel_getUid("yellowColor"),function(_76,_77){ +with(_76){ +if(!_c){ +_c=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,1,0,1]); +} +return _c; +} +}),new objj_method(sel_getUid("brownColor"),function(_78,_79){ +with(_78){ +if(!_11){ +_11=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.6,0.4,0.2,1]); +} +return _11; +} +}),new objj_method(sel_getUid("cyanColor"),function(_7a,_7b){ +with(_7a){ +if(!_12){ +_12=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,1,1,1]); +} +return _12; +} +}),new objj_method(sel_getUid("magentaColor"),function(_7c,_7d){ +with(_7c){ +if(!_13){ +_13=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0,1,1]); +} +return _13; +} +}),new objj_method(sel_getUid("orangeColor"),function(_7e,_7f){ +with(_7e){ +if(!_14){ +_14=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0.5,0,1]); +} +return _14; +} +}),new objj_method(sel_getUid("purpleColor"),function(_80,_81){ +with(_80){ +if(!_15){ +_15=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.5,0,0.5,1]); +} +return _15; +} +}),new objj_method(sel_getUid("shadowColor"),function(_82,_83){ +with(_82){ +if(!_16){ +_16=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,0,1/3]); +} +return _16; +} +}),new objj_method(sel_getUid("clearColor"),function(_84,_85){ +with(_84){ +if(!_17){ +_17=objj_msgSend(_84,"colorWithCalibratedWhite:alpha:",0,0); +} +return _17; +} +}),new objj_method(sel_getUid("alternateSelectedControlColor"),function(_86,_87){ +with(_86){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.22,0.46,0.84,1]); +} +}),new objj_method(sel_getUid("secondarySelectedControlColor"),function(_88,_89){ +with(_88){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.83,0.83,0.83,1]); +} +}),new objj_method(sel_getUid("colorWithPatternImage:"),function(_8a,_8b,_8c){ +with(_8a){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithPatternImage:",_8c); +} +}),new objj_method(sel_getUid("colorWithCSSString:"),function(_8d,_8e,_8f){ +with(_8d){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithCSSString:",_8f); +} +})]); +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_18,[new objj_method(sel_getUid("set"),function(_90,_91){ +with(_90){ +objj_msgSend(_90,"setFill"); +objj_msgSend(_90,"setStroke"); +} +}),new objj_method(sel_getUid("setFill"),function(_92,_93){ +with(_92){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetFillColor(ctx,_92); +} +}),new objj_method(sel_getUid("setStroke"),function(_94,_95){ +with(_94){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(ctx,_94); +} +})]); +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_19,[new objj_method(sel_getUid("randomColor"),function(_96,_97){ +with(_96){ +return objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",RAND(),RAND(),RAND(),1); +} +})]); +var _98="CPColorComponentsKey",_99="CPColorPatternImageKey"; +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_18,[new objj_method(sel_getUid("initWithCoder:"),function(_9a,_9b,_9c){ +with(_9a){ +if(objj_msgSend(_9c,"containsValueForKey:",_99)){ +return objj_msgSend(_9a,"_initWithPatternImage:",objj_msgSend(_9c,"decodeObjectForKey:",_99)); +} +return objj_msgSend(_9a,"_initWithRGBA:",objj_msgSend(_9c,"decodeObjectForKey:",_98)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9d,_9e,_9f){ +with(_9d){ +if(_patternImage){ +objj_msgSend(_9f,"encodeObject:forKey:",_patternImage,_99); +}else{ +objj_msgSend(_9f,"encodeObject:forKey:",_components,_98); +} +} +})]); +var _a0="0123456789ABCDEF"; +var _65=function(hex){ +if(hex.length==3){ +hex=hex.charAt(0)+hex.charAt(0)+hex.charAt(1)+hex.charAt(1)+hex.charAt(2)+hex.charAt(2); +} +if(hex.length!=6){ +return null; +} +hex=hex.toUpperCase(); +for(var i=0;iobjj_msgSend(_6e,"bounds").size.width-1||_71.x<1){ +return NO; +} +objj_msgSend(_colorPanel,"setColor:updatePicker:",objj_msgSend(_6e,"colorAtIndex:",FLOOR(_71.x/13)),YES); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_73,_74,_75){ +with(_73){ +var _76=objj_msgSend(_73,"convertPoint:fromView:",objj_msgSend(_75,"locationInWindow"),nil); +if(_76.x>objj_msgSend(_73,"bounds").size.width-1||_76.x<1){ +return NO; +} +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",objj_msgSend(CPArray,"arrayWithObject:",CPColorDragType),_73); +var _77=_swatches[FLOOR(_76.x/13)]; +_dragColor=objj_msgSend(objj_msgSend(_77,"subviews")[0],"backgroundColor"); +var _78=CPRectCreateCopy(objj_msgSend(_77,"bounds")); +var _79=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_78),_7a=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(_78,1,1)); +objj_msgSend(_79,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_7a,"setBackgroundColor:",_dragColor); +objj_msgSend(_79,"addSubview:",_7a); +objj_msgSend(_73,"dragView:at:offset:event:pasteboard:source:slideBack:",_79,CPPointMake(_76.x-_78.size.width/2,_76.y-_78.size.height/2),CPPointMake(0,0),_75,nil,_73,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +if(_7e==CPColorDragType){ +objj_msgSend(_7d,"setData:forType:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_dragColor),_7e); +} +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(_7f,"convertPoint:fromView:",objj_msgSend(_81,"draggingLocation"),nil),_83=objj_msgSend(_81,"draggingPasteboard"),_84=nil; +if(!objj_msgSend(_83,"availableTypeFromArray:",[CPColorDragType])||_82.x>objj_msgSend(_7f,"bounds").size.width-1||_82.x<1){ +return NO; +} +objj_msgSend(_7f,"setColor:atIndex:",objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(_83,"dataForType:",CPColorDragType)),FLOOR(_82.x/13)); +} +})]); +var _8=objj_allocateClassPair(CPView,"_CPColorPanelPreview"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_colorPanel")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithFrame:"),function(_85,_86,_87){ +with(_85){ +_85=objj_msgSendSuper({receiver:_85,super_class:objj_getClass("_CPColorPanelPreview").super_class},"initWithFrame:",_87); +objj_msgSend(_85,"registerForDraggedTypes:",objj_msgSend(CPArray,"arrayWithObjects:",CPColorDragType)); +return _85; +} +}),new objj_method(sel_getUid("setColorPanel:"),function(_88,_89,_8a){ +with(_88){ +_colorPanel=_8a; +} +}),new objj_method(sel_getUid("colorPanel"),function(_8b,_8c){ +with(_8b){ +return _colorPanel; +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_8d,_8e,_8f){ +with(_8d){ +var _90=objj_msgSend(_8f,"draggingPasteboard"); +if(!objj_msgSend(_90,"availableTypeFromArray:",[CPColorDragType])){ +return NO; +} +var _91=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(_90,"dataForType:",CPColorDragType)); +objj_msgSend(_colorPanel,"setColor:updatePicker:",_91,YES); +} +}),new objj_method(sel_getUid("isOpaque"),function(_92,_93){ +with(_92){ +return YES; +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_94,_95,_96){ +with(_94){ +var _97=objj_msgSend(_94,"convertPoint:fromView:",objj_msgSend(_96,"locationInWindow"),nil); +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",[CPColorDragType],_94); +var _98=CPRectMake(0,0,15,15); +var _99=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_98),_9a=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(_98,1,1)); +objj_msgSend(_99,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_9a,"setBackgroundColor:",objj_msgSend(_94,"backgroundColor")); +objj_msgSend(_99,"addSubview:",_9a); +objj_msgSend(_94,"dragView:at:offset:event:pasteboard:source:slideBack:",_99,CPPointMake(_97.x-_98.size.width/2,_97.y-_98.size.height/2),CPPointMake(0,0),_96,nil,_94,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_9b,_9c,_9d,_9e){ +with(_9b){ +if(_9e==CPColorDragType){ +objj_msgSend(_9d,"setData:forType:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",objj_msgSend(_9b,"backgroundColor")),_9e); +} +} +})]); +objj_executeFile("CPColorPicker.j",YES); +objj_executeFile("CPSliderColorPicker.j",YES); +objj_msgSend(CPColorPanel,"provideColorPickerClass:",CPColorWheelColorPicker); +objj_msgSend(CPColorPanel,"provideColorPickerClass:",CPSliderColorPicker); +p;15;CPColorPicker.jt;10114;@STATIC;1.0;I;21;Foundation/CPObject.ji;14;CPColorPanel.jt;10049; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPColorPanel.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_panel"),new objj_ivar("_mask")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPColorPicker").super_class},"init"); +_panel=_6; +_mask=_5; +return _3; +} +}),new objj_method(sel_getUid("colorPanel"),function(_7,_8){ +with(_7){ +return _panel; +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_9,_a){ +with(_9){ +return nil; +} +}),new objj_method(sel_getUid("setMode:"),function(_b,_c,_d){ +with(_b){ +return; +} +}),new objj_method(sel_getUid("setColor:"),function(_e,_f,_10){ +with(_e){ +return; +} +})]); +var _1=objj_allocateClassPair(CPColorPicker,"CPColorWheelColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_pickerView"),new objj_ivar("_brightnessSlider"),new objj_ivar("_hueSaturationView"),new objj_ivar("_cachedColor")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_11,_12,_13,_14){ +with(_11){ +return objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPColorWheelColorPicker").super_class},"initWithPickerMask:colorPanel:",_13,_14); +} +}),new objj_method(sel_getUid("initView"),function(_15,_16){ +with(_15){ +aFrame=CPRectMake(0,0,CPColorPickerViewWidth,CPColorPickerViewHeight); +_pickerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",aFrame); +objj_msgSend(_pickerView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_brightnessSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CGRectMake(0,(aFrame.size.height-34),aFrame.size.width,15)); +objj_msgSend(_brightnessSlider,"setValue:forThemeAttribute:",15,"track-width"); +objj_msgSend(_brightnessSlider,"setValue:forThemeAttribute:",objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPColorPicker,"class")),"pathForResource:","brightness_bar.png"))),"track-color"); +objj_msgSend(_brightnessSlider,"setMinValue:",0); +objj_msgSend(_brightnessSlider,"setMaxValue:",100); +objj_msgSend(_brightnessSlider,"setFloatValue:",100); +objj_msgSend(_brightnessSlider,"setTarget:",_15); +objj_msgSend(_brightnessSlider,"setAction:",sel_getUid("brightnessSliderDidChange:")); +objj_msgSend(_brightnessSlider,"setAutoresizingMask:",CPViewWidthSizable|CPViewMinYMargin); +_hueSaturationView=objj_msgSend(objj_msgSend(__CPColorWheel,"alloc"),"initWithFrame:",CPRectMake(0,0,aFrame.size.width,aFrame.size.height-38)); +objj_msgSend(_hueSaturationView,"setDelegate:",_15); +objj_msgSend(_hueSaturationView,"setAutoresizingMask:",(CPViewWidthSizable|CPViewHeightSizable)); +objj_msgSend(_pickerView,"addSubview:",_hueSaturationView); +objj_msgSend(_pickerView,"addSubview:",_brightnessSlider); +} +}),new objj_method(sel_getUid("brightnessSliderDidChange:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"updateColor"); +} +}),new objj_method(sel_getUid("colorWheelDidChange:"),function(_1a,_1b,_1c){ +with(_1a){ +objj_msgSend(_1a,"updateColor"); +} +}),new objj_method(sel_getUid("updateColor"),function(_1d,_1e){ +with(_1d){ +var hue=objj_msgSend(_hueSaturationView,"angle"),_1f=objj_msgSend(_hueSaturationView,"distance"),_20=objj_msgSend(_brightnessSlider,"floatValue"); +objj_msgSend(_hueSaturationView,"setWheelBrightness:",_20/100); +objj_msgSend(_brightnessSlider,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithHue:saturation:brightness:",hue,_1f,100)); +var _21=objj_msgSend(_1d,"colorPanel"),_22=objj_msgSend(_21,"opacity"); +_cachedColor=objj_msgSend(CPColor,"colorWithHue:saturation:brightness:alpha:",hue,_1f,_20,_22); +objj_msgSend(objj_msgSend(_1d,"colorPanel"),"setColor:",_cachedColor); +} +}),new objj_method(sel_getUid("supportsMode:"),function(_23,_24,_25){ +with(_23){ +return (_25==CPWheelColorPickerMode)?YES:NO; +} +}),new objj_method(sel_getUid("currentMode"),function(_26,_27){ +with(_26){ +return CPWheelColorPickerMode; +} +}),new objj_method(sel_getUid("provideNewView:"),function(_28,_29,_2a){ +with(_28){ +if(_2a){ +objj_msgSend(_28,"initView"); +} +return _pickerView; +} +}),new objj_method(sel_getUid("setColor:"),function(_2b,_2c,_2d){ +with(_2b){ +if(objj_msgSend(_2d,"isEqual:",_cachedColor)){ +return; +} +var hsb=objj_msgSend(_2d,"hsbComponents"); +objj_msgSend(_hueSaturationView,"setPositionToColor:",_2d); +objj_msgSend(_brightnessSlider,"setFloatValue:",hsb[2]); +objj_msgSend(_hueSaturationView,"setWheelBrightness:",hsb[2]/100); +objj_msgSend(_brightnessSlider,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithHue:saturation:brightness:",hsb[0],hsb[1],100)); +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_button.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("provideNewAlternateButtonImage"),function(_30,_31){ +with(_30){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_button_h.png"),CGSizeMake(32,32)); +} +})]); +var _1=objj_allocateClassPair(CPView,"__CPColorWheel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_wheelImage"),new objj_ivar("_blackWheelImage"),new objj_ivar("_crosshair"),new objj_ivar("_delegate"),new objj_ivar("_angle"),new objj_ivar("_distance"),new objj_ivar("_radius")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_32,_33,_34){ +with(_32){ +_32=objj_msgSendSuper({receiver:_32,super_class:objj_getClass("__CPColorWheel").super_class},"initWithFrame:",_34); +var _35=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel.png"); +_wheelImage=new Image(); +_wheelImage.src=_35; +_wheelImage.style.position="absolute"; +_35=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_black.png"); +_blackWheelImage=new Image(); +_blackWheelImage.src=_35; +_blackWheelImage.style.opacity="0"; +_blackWheelImage.style.filter="alpha(opacity=0)"; +_blackWheelImage.style.position="absolute"; +objj_msgSend(_32,"setWheelSize:",_34.size); +_crosshair=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CPRectMake(_radius-2,_radius-2,4,4)); +objj_msgSend(_crosshair,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +var _36=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_crosshair,"bounds"),1,1)); +objj_msgSend(_36,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_crosshair,"addSubview:",_36); +objj_msgSend(_32,"addSubview:",_crosshair); +return _32; +} +}),new objj_method(sel_getUid("setWheelBrightness:"),function(_37,_38,_39){ +with(_37){ +_blackWheelImage.style.opacity=1-_39; +_blackWheelImage.style.filter="alpha(opacity="+(1-_39)*100+")"; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSendSuper({receiver:_3a,super_class:objj_getClass("__CPColorWheel").super_class},"setFrameSize:",_3c); +objj_msgSend(_3a,"setWheelSize:",_3c); +} +}),new objj_method(sel_getUid("setWheelSize:"),function(_3d,_3e,_3f){ +with(_3d){ +var min=MIN(_3f.width,_3f.height); +_blackWheelImage.style.width=min; +_blackWheelImage.style.height=min; +_blackWheelImage.width=min; +_blackWheelImage.height=min; +_blackWheelImage.style.top=(_3f.height-min)/2+"px"; +_blackWheelImage.style.left=(_3f.width-min)/2+"px"; +_wheelImage.style.width=min; +_wheelImage.style.height=min; +_wheelImage.width=min; +_wheelImage.height=min; +_wheelImage.style.top=(_3f.height-min)/2+"px"; +_wheelImage.style.left=(_3f.width-min)/2+"px"; +_radius=min/2; +objj_msgSend(_3d,"setAngle:distance:",objj_msgSend(_3d,"degreesToRadians:",_angle),(_distance/100)*_radius); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_40,_41,_42){ +with(_40){ +_delegate=_42; +} +}),new objj_method(sel_getUid("delegate"),function(_43,_44){ +with(_43){ +return _delegate; +} +}),new objj_method(sel_getUid("angle"),function(_45,_46){ +with(_45){ +return _angle; +} +}),new objj_method(sel_getUid("distance"),function(_47,_48){ +with(_47){ +return _distance; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_49,_4a,_4b){ +with(_49){ +objj_msgSend(_49,"reposition:",_4b); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"reposition:",_4e); +} +}),new objj_method(sel_getUid("reposition:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSend(_4f,"bounds"),_53=objj_msgSend(_4f,"convertPoint:fromView:",objj_msgSend(_51,"locationInWindow"),nil); +var _54=CGRectGetMidX(_52); +var _55=CGRectGetMidY(_52); +var _56=MIN(SQRT((_53.x-_54)*(_53.x-_54)+(_53.y-_55)*(_53.y-_55)),_radius); +var _57=ATAN2(_53.y-_55,_53.x-_54); +objj_msgSend(_4f,"setAngle:distance:",_57,_56); +objj_msgSend(_delegate,"colorWheelDidChange:",_4f); +} +}),new objj_method(sel_getUid("setAngle:distance:"),function(_58,_59,_5a,_5b){ +with(_58){ +var _5c=objj_msgSend(_58,"bounds"); +var _5d=CGRectGetMidX(_5c); +var _5e=CGRectGetMidY(_5c); +_angle=objj_msgSend(_58,"radiansToDegrees:",_5a); +_distance=(_5b/_radius)*100; +objj_msgSend(_crosshair,"setFrameOrigin:",CPPointMake(COS(_5a)*_5b+_5d-2,SIN(_5a)*_5b+_5e-2)); +} +}),new objj_method(sel_getUid("setPositionToColor:"),function(_5f,_60,_61){ +with(_5f){ +var hsb=objj_msgSend(_61,"hsbComponents"),_62=objj_msgSend(_5f,"bounds"); +var _63=objj_msgSend(_5f,"degreesToRadians:",hsb[0]),_64=(hsb[1]/100)*_radius; +objj_msgSend(_5f,"setAngle:distance:",_63,_64); +} +}),new objj_method(sel_getUid("radiansToDegrees:"),function(_65,_66,_67){ +with(_65){ +return ((-_67/PI)*180+360)%360; +} +}),new objj_method(sel_getUid("degreesToRadians:"),function(_68,_69,_6a){ +with(_68){ +return -(((_6a-360)/180)*PI); +} +})]); +p;13;CPColorWell.jt;6201;@STATIC;1.0;I;21;Foundation/CPString.ji;8;CPView.ji;9;CPColor.ji;14;CPColorPanel.jt;6112; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPColorPanel.j",YES); +var _1="_CPColorWellDidBecomeExclusiveNotification"; +var _2=objj_allocateClassPair(CPControl,"CPColorWell"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_active"),new objj_ivar("_bordered"),new objj_ivar("_color"),new objj_ivar("_wellView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPColorWell").super_class},"initWithFrame:",_6); +if(_4){ +_active=NO; +_bordered=YES; +_color=objj_msgSend(CPColor,"whiteColor"); +objj_msgSend(_4,"drawBezelWithHighlight:",NO); +objj_msgSend(_4,"drawWellInside:",CGRectInset(objj_msgSend(_4,"bounds"),3,3)); +objj_msgSend(_4,"_registerForNotifications"); +} +return _4; +} +}),new objj_method(sel_getUid("_registerForNotifications"),function(_7,_8){ +with(_7){ +var _9=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_9,"addObserver:selector:name:object:",_7,sel_getUid("colorWellDidBecomeExclusive:"),_1,nil); +objj_msgSend(_9,"addObserver:selector:name:object:",_7,sel_getUid("colorPanelWillClose:"),CPWindowWillCloseNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("isBordered"),function(_a,_b){ +with(_a){ +return _bordered; +} +}),new objj_method(sel_getUid("setBordered:"),function(_c,_d,_e){ +with(_c){ +if(_bordered==_e){ +return; +} +_bordered=_e; +objj_msgSend(_c,"drawWellInside:",CGRectInset(objj_msgSend(_c,"bounds"),3,3)); +} +}),new objj_method(sel_getUid("color"),function(_f,_10){ +with(_f){ +return _color; +} +}),new objj_method(sel_getUid("setColor:"),function(_11,_12,_13){ +with(_11){ +if(_color==_13){ +return; +} +_color=_13; +objj_msgSend(_11,"drawWellInside:",CGRectInset(objj_msgSend(_11,"bounds"),3,3)); +} +}),new objj_method(sel_getUid("takeColorFrom:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_14,"setColor:",objj_msgSend(_16,"color")); +} +}),new objj_method(sel_getUid("activate:"),function(_17,_18,_19){ +with(_17){ +if(_19){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",_1,_17); +} +if(objj_msgSend(_17,"isActive")){ +return; +} +_active=YES; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_17,sel_getUid("colorPanelDidChangeColor:"),CPColorPanelColorDidChangeNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("deactivate"),function(_1a,_1b){ +with(_1a){ +if(!objj_msgSend(_1a,"isActive")){ +return; +} +_active=NO; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_1a,CPColorPanelColorDidChangeNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("isActive"),function(_1c,_1d){ +with(_1c){ +return _active; +} +}),new objj_method(sel_getUid("drawBezelWithHighlight:"),function(_1e,_1f,_20){ +with(_1e){ +} +}),new objj_method(sel_getUid("drawWellInside:"),function(_21,_22,_23){ +with(_21){ +if(!_wellView){ +_wellView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_23); +objj_msgSend(_wellView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_21,"addSubview:",_wellView); +}else{ +objj_msgSend(_wellView,"setFrame:",_23); +} +objj_msgSend(_wellView,"setBackgroundColor:",_color); +} +}),new objj_method(sel_getUid("colorPanelDidChangeColor:"),function(_24,_25,_26){ +with(_24){ +objj_msgSend(_24,"takeColorFrom:",objj_msgSend(_26,"object")); +objj_msgSend(_24,"sendAction:to:",objj_msgSend(_24,"action"),objj_msgSend(_24,"target")); +} +}),new objj_method(sel_getUid("colorWellDidBecomeExclusive:"),function(_27,_28,_29){ +with(_27){ +if(_27!=objj_msgSend(_29,"object")){ +objj_msgSend(_27,"deactivate"); +} +} +}),new objj_method(sel_getUid("colorPanelWillClose:"),function(_2a,_2b,_2c){ +with(_2a){ +objj_msgSend(_2a,"deactivate"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_2d,_2e,_2f){ +with(_2d){ +if(!objj_msgSend(_2d,"isEnabled")){ +return; +} +objj_msgSend(_2d,"drawBezelWithHighlight:",YES); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_30,_31,_32){ +with(_30){ +if(!objj_msgSend(_30,"isEnabled")){ +return; +} +objj_msgSend(_30,"drawBezelWithHighlight:",CGRectContainsPoint(objj_msgSend(_30,"bounds"),objj_msgSend(_30,"convertPoint:fromView:",objj_msgSend(_32,"locationInWindow"),nil))); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_33,_34,_35){ +with(_33){ +objj_msgSend(_33,"drawBezelWithHighlight:",NO); +if(!CGRectContainsPoint(objj_msgSend(_33,"bounds"),objj_msgSend(_33,"convertPoint:fromView:",objj_msgSend(_35,"locationInWindow"),nil))||!objj_msgSend(_33,"isEnabled")){ +return; +} +objj_msgSend(_33,"activate:",YES); +var _36=objj_msgSend(CPColorPanel,"sharedColorPanel"); +objj_msgSend(_36,"setColor:",_color); +objj_msgSend(_36,"orderFront:",_33); +} +})]); +var _37="CPColorWellColorKey",_38="CPColorWellBorderedKey"; +var _2=objj_getClass("CPColorWell"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPColorWell\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_39,_3a,_3b){ +with(_39){ +_39=objj_msgSendSuper({receiver:_39,super_class:objj_getClass("CPColorWell").super_class},"initWithCoder:",_3b); +if(_39){ +_active=NO; +_bordered=objj_msgSend(_3b,"decodeBoolForKey:",_38); +_color=objj_msgSend(_3b,"decodeObjectForKey:",_37); +objj_msgSend(_39,"drawBezelWithHighlight:",NO); +objj_msgSend(_39,"drawWellInside:",CGRectInset(objj_msgSend(_39,"bounds"),3,3)); +objj_msgSend(_39,"_registerForNotifications"); +} +return _39; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=_subviews; +_subviews=objj_msgSend(_subviews,"copy"); +objj_msgSend(_subviews,"removeObjectIdenticalTo:",_wellView); +objj_msgSendSuper({receiver:_3c,super_class:objj_getClass("CPColorWell").super_class},"encodeWithCoder:",_3e); +_subviews=_3f; +objj_msgSend(_3e,"encodeObject:forKey:",_color,_37); +objj_msgSend(_3e,"encodeObject:forKey:",_bordered,_38); +} +})]); +p;17;CPCompatibility.jt;3813;@STATIC;1.0;i;9;CPEvent.ji;12;CPPlatform.jt;3764; +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPPlatform.j",YES); +CPUnknownBrowserEngine=0; +CPGeckoBrowserEngine=1; +CPInternetExplorerBrowserEngine=2; +CPKHTMLBrowserEngine=3; +CPOperaBrowserEngine=4; +CPWebKitBrowserEngine=5; +CPMacOperatingSystem=0; +CPWindowsOperatingSystem=1; +CPOtherOperatingSystem=2; +CPCSSRGBAFeature=1<<5; +CPHTMLCanvasFeature=1<<6; +CPHTMLContentEditableFeature=1<<7; +CPHTMLDragAndDropFeature=1<<8; +CPJavascriptInnerTextFeature=1<<9; +CPJavascriptTextContentFeature=1<<10; +CPJavascriptClipboardEventsFeature=1<<11; +CPJavascriptClipboardAccessFeature=1<<12; +CPJavaScriptCanvasDrawFeature=1<<13; +CPJavaScriptCanvasTransformFeature=1<<14; +CPVMLFeature=1<<15; +CPJavascriptRemedialKeySupport=1<<16; +CPJavaScriptShadowFeature=1<<20; +CPJavaScriptNegativeMouseWheelValues=1<<22; +CPJavaScriptMouseWheelValues_8_15=1<<23; +CPOpacityRequiresFilterFeature=1<<24; +CPInputTypeCanBeChangedFeature=1<<25; +CPHTML5DragAndDropSourceYOffBy1=1<<26; +var _1="",_2=CPUnknownBrowserEngine,_3=0; +_3|=CPInputTypeCanBeChangedFeature; +if(typeof window!=="undefined"&&typeof window.navigator!=="undefined"){ +_1=window.navigator.userAgent; +} +if(window.opera){ +_2=CPOperaBrowserEngine; +_3|=CPJavaScriptCanvasDrawFeature; +}else{ +if(window.attachEvent){ +_2=CPInternetExplorerBrowserEngine; +_3|=CPVMLFeature; +_3|=CPJavascriptRemedialKeySupport; +_3|=CPJavaScriptShadowFeature; +_3|=CPOpacityRequiresFilterFeature; +_3&=~CPInputTypeCanBeChangedFeature; +}else{ +if(_1.indexOf("AppleWebKit/")!=-1){ +_2=CPWebKitBrowserEngine; +_3|=CPCSSRGBAFeature; +_3|=CPHTMLContentEditableFeature; +if(_1.indexOf("Chrome")===-1){ +_3|=CPHTMLDragAndDropFeature; +} +_3|=CPJavascriptClipboardEventsFeature; +_3|=CPJavascriptClipboardAccessFeature; +_3|=CPJavaScriptShadowFeature; +var _4=_1.indexOf("AppleWebKit/")+"AppleWebKit/".length,_5=_1.indexOf(" ",_4),_6=_1.substring(_4,_5),_7=_6.indexOf("."),_8=parseInt(_6.substring(0,_7)),_9=parseInt(_6.substr(_7+1)); +if((_1.indexOf("Safari")!==CPNotFound&&(_8>525||(_8===525&&_9>14)))||_1.indexOf("Chrome")!==CPNotFound){ +_3|=CPJavascriptRemedialKeySupport; +} +if(!objj_msgSend(CPPlatform,"isBrowser")){ +_3|=CPJavascriptRemedialKeySupport; +} +if(_8<532||(_8===532&&_9<6)){ +_3|=CPHTML5DragAndDropSourceYOffBy1; +} +}else{ +if(_1.indexOf("KHTML")!=-1){ +_2=CPKHTMLBrowserEngine; +}else{ +if(_1.indexOf("Gecko")!==-1){ +_2=CPGeckoBrowserEngine; +_3|=CPJavaScriptCanvasDrawFeature; +var _a=_1.indexOf("Firefox"),_b=(_a===-1)?2:parseFloat(_1.substring(_a+"Firefox".length+1)); +if(_b>=3){ +_3|=CPCSSRGBAFeature; +} +if(_b<3){ +_3|=CPJavaScriptMouseWheelValues_8_15; +} +} +} +} +} +} +if(typeof document!="undefined"){ +var _c=document.createElement("canvas"); +if(_c&&_c.getContext){ +_3|=CPHTMLCanvasFeature; +var _d=document.createElement("canvas").getContext("2d"); +if(_d&&_d.setTransform&&_d.transform){ +_3|=CPJavaScriptCanvasTransformFeature; +} +} +var _e=document.createElement("div"); +if(_e.innerText!=undefined){ +_3|=CPJavascriptInnerTextFeature; +}else{ +if(_e.textContent!=undefined){ +_3|=CPJavascriptTextContentFeature; +} +} +} +CPFeatureIsCompatible=function(_f){ +return _3&_f; +}; +CPBrowserIsEngine=function(_10){ +return _2===_10; +}; +CPBrowserIsOperatingSystem=function(_11){ +return OPERATING_SYSTEM===_11; +}; +OPERATING_SYSTEM=CPOtherOperatingSystem; +if(_1.indexOf("Mac")!==-1){ +OPERATING_SYSTEM=CPMacOperatingSystem; +CPPlatformActionKeyMask=CPCommandKeyMask; +CPUndoKeyEquivalent="z"; +CPRedoKeyEquivalent="Z"; +CPUndoKeyEquivalentModifierMask=CPCommandKeyMask; +CPRedoKeyEquivalentModifierMask=CPCommandKeyMask; +}else{ +if(_1.indexOf("Windows")!==-1){ +OPERATING_SYSTEM=CPWindowsOperatingSystem; +} +CPPlatformActionKeyMask=CPControlKeyMask; +CPUndoKeyEquivalent="z"; +CPRedoKeyEquivalent="y"; +CPUndoKeyEquivalentModifierMask=CPControlKeyMask; +CPRedoKeyEquivalentModifierMask=CPControlKeyMask; +} +p;11;CPControl.jt;18804;@STATIC;1.0;i;8;CPFont.ji;10;CPShadow.ji;8;CPView.ji;19;CPKeyValueBinding.jt;18721; +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPShadow.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPKeyValueBinding.j",YES); +CPLeftTextAlignment=0; +CPRightTextAlignment=1; +CPCenterTextAlignment=2; +CPJustifiedTextAlignment=3; +CPNaturalTextAlignment=4; +CPRegularControlSize=0; +CPSmallControlSize=1; +CPMiniControlSize=2; +CPLineBreakByWordWrapping=0; +CPLineBreakByCharWrapping=1; +CPLineBreakByClipping=2; +CPLineBreakByTruncatingHead=3; +CPLineBreakByTruncatingTail=4; +CPLineBreakByTruncatingMiddle=5; +CPTopVerticalTextAlignment=1,CPCenterVerticalTextAlignment=2,CPBottomVerticalTextAlignment=3; +CPScaleProportionally=0; +CPScaleToFit=1; +CPScaleNone=2; +CPNoImage=0; +CPImageOnly=1; +CPImageLeft=2; +CPImageRight=3; +CPImageBelow=4; +CPImageAbove=5; +CPImageOverlaps=6; +CPOnState=1; +CPOffState=0; +CPMixedState=-1; +CPControlNormalBackgroundColor="CPControlNormalBackgroundColor"; +CPControlSelectedBackgroundColor="CPControlSelectedBackgroundColor"; +CPControlHighlightedBackgroundColor="CPControlHighlightedBackgroundColor"; +CPControlDisabledBackgroundColor="CPControlDisabledBackgroundColor"; +CPControlTextDidBeginEditingNotification="CPControlTextDidBeginEditingNotification"; +CPControlTextDidChangeNotification="CPControlTextDidChangeNotification"; +CPControlTextDidEndEditingNotification="CPControlTextDidEndEditingNotification"; +var _1=objj_msgSend(CPColor,"blackColor"); +var _2=objj_allocateClassPair(CPView,"CPControl"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_value"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_sendActionOn"),new objj_ivar("_sendsActionOnEndEditing"),new objj_ivar("_continuousTracking"),new objj_ivar("_trackingWasWithinFrame"),new objj_ivar("_trackingMouseDownFlags"),new objj_ivar("_previousTrackingLocation"),new objj_ivar("_toolTip")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("sendsActionOnEndEditing"),function(_4,_5){ +with(_4){ +return _sendsActionOnEndEditing; +} +}),new objj_method(sel_getUid("setSendsActionOnEndEditing:"),function(_6,_7,_8){ +with(_6){ +_sendsActionOnEndEditing=_8; +} +}),new objj_method(sel_getUid("_reverseSetBinding"),function(_9,_a){ +with(_9){ +var _b=objj_msgSend(CPKeyValueBinding,"getBinding:forObject:",CPValueBinding,_9); +objj_msgSend(_b,"reverseSetValueFor:","objectValue"); +} +}),new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(_c,_d,_e){ +with(_c){ +if(_e==="value"){ +return "objectValue"; +} +return objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPControl").super_class},"_replacementKeyPathForBinding:",_e); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f,_10,_11){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPControl").super_class},"initWithFrame:",_11); +if(_f){ +_sendActionOn=CPLeftMouseUpMask; +_trackingMouseDownFlags=0; +} +return _f; +} +}),new objj_method(sel_getUid("setAction:"),function(_12,_13,_14){ +with(_12){ +_action=_14; +} +}),new objj_method(sel_getUid("action"),function(_15,_16){ +with(_15){ +return _action; +} +}),new objj_method(sel_getUid("setTarget:"),function(_17,_18,_19){ +with(_17){ +_target=_19; +} +}),new objj_method(sel_getUid("target"),function(_1a,_1b){ +with(_1a){ +return _target; +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_1c,_1d,_1e,_1f){ +with(_1c){ +objj_msgSend(_1c,"_reverseSetBinding"); +objj_msgSend(CPApp,"sendAction:to:from:",_1e,_1f,_1c); +} +}),new objj_method(sel_getUid("sendActionOn:"),function(_20,_21,_22){ +with(_20){ +var _23=_sendActionOn; +_sendActionOn=_22; +return _23; +} +}),new objj_method(sel_getUid("isContinuous"),function(_24,_25){ +with(_24){ +return (_sendActionOn&CPPeriodicMask)!==0; +} +}),new objj_method(sel_getUid("setContinuous:"),function(_26,_27,_28){ +with(_26){ +if(_28){ +_sendActionOn|=CPPeriodicMask; +}else{ +_sendActionOn&=~CPPeriodicMask; +} +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(_29,_2a){ +with(_29){ +return NO; +} +}),new objj_method(sel_getUid("trackMouse:"),function(_2b,_2c,_2d){ +with(_2b){ +var _2e=objj_msgSend(_2d,"type"),_2f=objj_msgSend(_2b,"convertPoint:fromView:",objj_msgSend(_2d,"locationInWindow"),nil),_30=objj_msgSend(_2b,"tracksMouseOutsideOfFrame")||CGRectContainsPoint(objj_msgSend(_2b,"bounds"),_2f); +if(_2e===CPLeftMouseUp){ +objj_msgSend(_2b,"stopTracking:at:mouseIsUp:",_previousTrackingLocation,_2f,YES); +_trackingMouseDownFlags=0; +}else{ +if(_2e===CPLeftMouseDown){ +_trackingMouseDownFlags=objj_msgSend(_2d,"modifierFlags"); +_continuousTracking=objj_msgSend(_2b,"startTrackingAt:",_2f); +}else{ +if(_2e===CPLeftMouseDragged){ +if(_30){ +if(!_trackingWasWithinFrame){ +_continuousTracking=objj_msgSend(_2b,"startTrackingAt:",_2f); +}else{ +if(_continuousTracking){ +_continuousTracking=objj_msgSend(_2b,"continueTracking:at:",_previousTrackingLocation,_2f); +} +} +}else{ +objj_msgSend(_2b,"stopTracking:at:mouseIsUp:",_previousTrackingLocation,_2f,NO); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_2b,sel_getUid("trackMouse:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +if((_sendActionOn&(1<<_2e))&&_30){ +objj_msgSend(_2b,"sendAction:to:",_action,_target); +} +_trackingWasWithinFrame=_30; +_previousTrackingLocation=_2f; +} +}),new objj_method(sel_getUid("setState:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("nextState"),function(_34,_35){ +with(_34){ +return 0; +} +}),new objj_method(sel_getUid("performClick:"),function(_36,_37,_38){ +with(_36){ +if(!objj_msgSend(_36,"isEnabled")){ +return; +} +objj_msgSend(_36,"highlight:",YES); +objj_msgSend(_36,"setState:",objj_msgSend(_36,"nextState")); +try{ +objj_msgSend(_36,"sendAction:to:",objj_msgSend(_36,"action"),objj_msgSend(_36,"target")); +} +catch(e){ +throw e; +} +finally{ +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0.1,_36,sel_getUid("unhighlightButtonTimerDidFinish:"),nil,NO); +} +} +}),new objj_method(sel_getUid("unhighlightButtonTimerDidFinish:"),function(_39,_3a,_3b){ +with(_39){ +objj_msgSend(_39,"highlight:",NO); +} +}),new objj_method(sel_getUid("mouseDownFlags"),function(_3c,_3d){ +with(_3c){ +return _trackingMouseDownFlags; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(_3e,"highlight:",YES); +return (_sendActionOn&CPPeriodicMask)||(_sendActionOn&CPLeftMouseDraggedMask); +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(_41,_42,_43,_44){ +with(_41){ +return (_sendActionOn&CPPeriodicMask)||(_sendActionOn&CPLeftMouseDraggedMask); +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_45,_46,_47,_48,_49){ +with(_45){ +objj_msgSend(_45,"highlight:",NO); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_4a,_4b,_4c){ +with(_4a){ +if(!objj_msgSend(_4a,"isEnabled")){ +return; +} +objj_msgSend(_4a,"trackMouse:",_4c); +} +}),new objj_method(sel_getUid("objectValue"),function(_4d,_4e){ +with(_4d){ +return _value; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_4f,_50,_51){ +with(_4f){ +_value=_51; +objj_msgSend(_4f,"setNeedsLayout"); +objj_msgSend(_4f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("floatValue"),function(_52,_53){ +with(_52){ +var _54=parseFloat(_value,10); +return isNaN(_54)?0:_54; +} +}),new objj_method(sel_getUid("setFloatValue:"),function(_55,_56,_57){ +with(_55){ +objj_msgSend(_55,"setObjectValue:",_57); +} +}),new objj_method(sel_getUid("doubleValue"),function(_58,_59){ +with(_58){ +var _5a=parseFloat(_value,10); +return isNaN(_5a)?0:_5a; +} +}),new objj_method(sel_getUid("setDoubleValue:"),function(_5b,_5c,_5d){ +with(_5b){ +objj_msgSend(_5b,"setObjectValue:",_5d); +} +}),new objj_method(sel_getUid("intValue"),function(_5e,_5f){ +with(_5e){ +var _60=parseInt(_value,10); +return isNaN(_60)?0:_60; +} +}),new objj_method(sel_getUid("setIntValue:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_61,"setObjectValue:",_63); +} +}),new objj_method(sel_getUid("integerValue"),function(_64,_65){ +with(_64){ +var _66=parseInt(_value,10); +return isNaN(_66)?0:_66; +} +}),new objj_method(sel_getUid("setIntegerValue:"),function(_67,_68,_69){ +with(_67){ +objj_msgSend(_67,"setObjectValue:",_69); +} +}),new objj_method(sel_getUid("stringValue"),function(_6a,_6b){ +with(_6a){ +return (_value===undefined||_value===nil)?"":String(_value); +} +}),new objj_method(sel_getUid("setStringValue:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(_6c,"setObjectValue:",_6e); +} +}),new objj_method(sel_getUid("takeDoubleValueFrom:"),function(_6f,_70,_71){ +with(_6f){ +if(objj_msgSend(_71,"respondsToSelector:",sel_getUid("doubleValue"))){ +objj_msgSend(_6f,"setDoubleValue:",objj_msgSend(_71,"doubleValue")); +} +} +}),new objj_method(sel_getUid("takeFloatValueFrom:"),function(_72,_73,_74){ +with(_72){ +if(objj_msgSend(_74,"respondsToSelector:",sel_getUid("floatValue"))){ +objj_msgSend(_72,"setFloatValue:",objj_msgSend(_74,"floatValue")); +} +} +}),new objj_method(sel_getUid("takeIntegerValueFrom:"),function(_75,_76,_77){ +with(_75){ +if(objj_msgSend(_77,"respondsToSelector:",sel_getUid("integerValue"))){ +objj_msgSend(_75,"setIntegerValue:",objj_msgSend(_77,"integerValue")); +} +} +}),new objj_method(sel_getUid("takeIntValueFrom:"),function(_78,_79,_7a){ +with(_78){ +if(objj_msgSend(_7a,"respondsToSelector:",sel_getUid("intValue"))){ +objj_msgSend(_78,"setIntValue:",objj_msgSend(_7a,"intValue")); +} +} +}),new objj_method(sel_getUid("takeObjectValueFrom:"),function(_7b,_7c,_7d){ +with(_7b){ +if(objj_msgSend(_7d,"respondsToSelector:",sel_getUid("objectValue"))){ +objj_msgSend(_7b,"setObjectValue:",objj_msgSend(_7d,"objectValue")); +} +} +}),new objj_method(sel_getUid("takeStringValueFrom:"),function(_7e,_7f,_80){ +with(_7e){ +if(objj_msgSend(_80,"respondsToSelector:",sel_getUid("stringValue"))){ +objj_msgSend(_7e,"setStringValue:",objj_msgSend(_80,"stringValue")); +} +} +}),new objj_method(sel_getUid("textDidBeginEditing:"),function(_81,_82,_83){ +with(_81){ +if(objj_msgSend(_83,"object")!=_81){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidBeginEditingNotification,_81,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_83,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("textDidChange:"),function(_84,_85,_86){ +with(_84){ +if(objj_msgSend(_86,"object")!=_84){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidChangeNotification,_84,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_86,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("textDidEndEditing:"),function(_87,_88,_89){ +with(_87){ +if(objj_msgSend(_89,"object")!=_87){ +return; +} +objj_msgSend(_87,"_reverseSetBinding"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidEndEditingNotification,_87,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_89,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("setAlignment:"),function(_8a,_8b,_8c){ +with(_8a){ +objj_msgSend(_8a,"setValue:forThemeAttribute:",_8c,"alignment"); +} +}),new objj_method(sel_getUid("alignment"),function(_8d,_8e){ +with(_8d){ +return objj_msgSend(_8d,"valueForThemeAttribute:","alignment"); +} +}),new objj_method(sel_getUid("setVerticalAlignment:"),function(_8f,_90,_91){ +with(_8f){ +objj_msgSend(_8f,"setValue:forThemeAttribute:",_91,"vertical-alignment"); +} +}),new objj_method(sel_getUid("verticalAlignment"),function(_92,_93){ +with(_92){ +return objj_msgSend(_92,"valueForThemeAttribute:","vertical-alignment"); +} +}),new objj_method(sel_getUid("setLineBreakMode:"),function(_94,_95,_96){ +with(_94){ +objj_msgSend(_94,"setValue:forThemeAttribute:",_96,"line-break-mode"); +} +}),new objj_method(sel_getUid("lineBreakMode"),function(_97,_98){ +with(_97){ +return objj_msgSend(_97,"valueForThemeAttribute:","line-break-mode"); +} +}),new objj_method(sel_getUid("setTextColor:"),function(_99,_9a,_9b){ +with(_99){ +objj_msgSend(_99,"setValue:forThemeAttribute:",_9b,"text-color"); +} +}),new objj_method(sel_getUid("textColor"),function(_9c,_9d){ +with(_9c){ +return objj_msgSend(_9c,"valueForThemeAttribute:","text-color"); +} +}),new objj_method(sel_getUid("setFont:"),function(_9e,_9f,_a0){ +with(_9e){ +objj_msgSend(_9e,"setValue:forThemeAttribute:",_a0,"font"); +} +}),new objj_method(sel_getUid("font"),function(_a1,_a2){ +with(_a1){ +return objj_msgSend(_a1,"valueForThemeAttribute:","font"); +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_a3,_a4,_a5){ +with(_a3){ +objj_msgSend(_a3,"setValue:forThemeAttribute:",_a5,"text-shadow-color"); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_a6,_a7){ +with(_a6){ +return objj_msgSend(_a6,"valueForThemeAttribute:","text-shadow-color"); +} +}),new objj_method(sel_getUid("setTextShadowOffset:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"setValue:forThemeAttribute:",_aa,"text-shadow-offset"); +} +}),new objj_method(sel_getUid("textShadowOffset"),function(_ab,_ac){ +with(_ab){ +return objj_msgSend(_ab,"valueForThemeAttribute:","text-shadow-offset"); +} +}),new objj_method(sel_getUid("setImagePosition:"),function(_ad,_ae,_af){ +with(_ad){ +objj_msgSend(_ad,"setValue:forThemeAttribute:",_af,"image-position"); +} +}),new objj_method(sel_getUid("imagePosition"),function(_b0,_b1){ +with(_b0){ +return objj_msgSend(_b0,"valueForThemeAttribute:","image-position"); +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_b2,_b3,_b4){ +with(_b2){ +objj_msgSend(_b2,"setValue:forThemeAttribute:",_b4,"image-scaling"); +} +}),new objj_method(sel_getUid("imageScaling"),function(_b5,_b6){ +with(_b5){ +return objj_msgSend(_b5,"valueForThemeAttribute:","image-scaling"); +} +}),new objj_method(sel_getUid("setEnabled:"),function(_b7,_b8,_b9){ +with(_b7){ +if(_b9){ +objj_msgSend(_b7,"unsetThemeState:",CPThemeStateDisabled); +}else{ +objj_msgSend(_b7,"setThemeState:",CPThemeStateDisabled); +} +} +}),new objj_method(sel_getUid("isEnabled"),function(_ba,_bb){ +with(_ba){ +return !objj_msgSend(_ba,"hasThemeState:",CPThemeStateDisabled); +} +}),new objj_method(sel_getUid("highlight:"),function(_bc,_bd,_be){ +with(_bc){ +objj_msgSend(_bc,"setHighlighted:",_be); +} +}),new objj_method(sel_getUid("setHighlighted:"),function(_bf,_c0,_c1){ +with(_bf){ +if(_c1){ +objj_msgSend(_bf,"setThemeState:",CPThemeStateHighlighted); +}else{ +objj_msgSend(_bf,"unsetThemeState:",CPThemeStateHighlighted); +} +} +}),new objj_method(sel_getUid("isHighlighted"),function(_c2,_c3){ +with(_c2){ +return objj_msgSend(_c2,"hasThemeState:",CPThemeStateHighlighted); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("themeAttributes"),function(_c4,_c5){ +with(_c4){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CPLeftTextAlignment,CPTopVerticalTextAlignment,CPLineBreakByClipping,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"systemFontOfSize:",12),objj_msgSend(CPNull,"null"),{width:0,height:0},CPImageLeft,CPScaleToFit,{width:0,height:0},{width:-1,height:-1}],["alignment","vertical-alignment","line-break-mode","text-color","font","text-shadow-color","text-shadow-offset","image-position","image-scaling","min-size","max-size"]); +} +}),new objj_method(sel_getUid("initialize"),function(_c6,_c7){ +with(_c6){ +if(_c6===objj_msgSend(CPControl,"class")){ +objj_msgSend(_c6,"exposeBinding:","value"); +objj_msgSend(_c6,"exposeBinding:","objectValue"); +objj_msgSend(_c6,"exposeBinding:","stringValue"); +objj_msgSend(_c6,"exposeBinding:","integerValue"); +objj_msgSend(_c6,"exposeBinding:","intValue"); +objj_msgSend(_c6,"exposeBinding:","doubleValue"); +objj_msgSend(_c6,"exposeBinding:","floatValue"); +objj_msgSend(_c6,"exposeBinding:","enabled"); +} +} +})]); +var _c8="CPControlValueKey",_c9="CPControlControlStateKey",_ca="CPControlIsEnabledKey",_cb="CPControlTargetKey",_cc="CPControlActionKey",_cd="CPControlSendActionOnKey",_ce="CPControlSendsActionOnEndEditingKey"; +var _cf="CPImageViewImageKey"; +var _2=objj_getClass("CPControl"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPControl\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_d0,_d1,_d2){ +with(_d0){ +_d0=objj_msgSendSuper({receiver:_d0,super_class:objj_getClass("CPControl").super_class},"initWithCoder:",_d2); +if(_d0){ +objj_msgSend(_d0,"setObjectValue:",objj_msgSend(_d2,"decodeObjectForKey:",_c8)); +objj_msgSend(_d0,"setTarget:",objj_msgSend(_d2,"decodeObjectForKey:",_cb)); +objj_msgSend(_d0,"setAction:",objj_msgSend(_d2,"decodeObjectForKey:",_cc)); +objj_msgSend(_d0,"sendActionOn:",objj_msgSend(_d2,"decodeIntForKey:",_cd)); +objj_msgSend(_d0,"setSendsActionOnEndEditing:",objj_msgSend(_d2,"decodeBoolForKey:",_ce)); +} +return _d0; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_d3,_d4,_d5){ +with(_d3){ +objj_msgSendSuper({receiver:_d3,super_class:objj_getClass("CPControl").super_class},"encodeWithCoder:",_d5); +if(_sendsActionOnEndEditing){ +objj_msgSend(_d5,"encodeBool:forKey:",_sendsActionOnEndEditing,_ce); +} +if(_value!==nil){ +objj_msgSend(_d5,"encodeObject:forKey:",_value,_c8); +} +if(_target!==nil){ +objj_msgSend(_d5,"encodeConditionalObject:forKey:",_target,_cb); +} +if(_action!==NULL){ +objj_msgSend(_d5,"encodeObject:forKey:",_action,_cc); +} +objj_msgSend(_d5,"encodeInt:forKey:",_sendActionOn,_cd); +} +})]); +var _d6=[],_d7={},_d8={}; +_d6[CPRegularControlSize]="Regular"; +_d6[CPSmallControlSize]="Small"; +_d6[CPMiniControlSize]="Mini"; +_CPControlIdentifierForControlSize=function(_d9){ +return _d6[_d9]; +}; +_CPControlColorWithPatternImage=function(_da,_db){ +var _dc=1,_dd=arguments.length,_de=""; +for(;_dc<_dd;++_dc){ +_de+=arguments[_dc]; +} +var _df=_d7[_de]; +if(!_df){ +var _e0=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPControl,"class")); +_df=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e0,"pathForResource:",_db+"/"+_de+".png"),_da[_de])); +_d7[_de]=_df; +} +return _df; +}; +_CPControlThreePartImagePattern=function(_e1,_e2,_e3){ +var _e4=2,_e5=arguments.length,_e6=""; +for(;_e4<_e5;++_e4){ +_e6+=arguments[_e4]; +} +var _e7=_d8[_e6]; +if(!_e7){ +var _e8=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPControl,"class")),_e9=_e3+"/"+_e6; +_e2=_e2[_e6]; +_e7=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"0.png"),_e2[0]),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"1.png"),_e2[1]),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"2.png"),_e2[2])],_e1)); +_d8[_e6]=_e7; +} +return _e7; +}; +p;14;CPController.jt;1707;@STATIC;1.0;t;1688; +var _1="CPControllerDeclaredKeysKey"; +var _2=objj_allocateClassPair(CPObject,"CPController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_editors"),new objj_ivar("_declaredKeys")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPController").super_class},"init"); +if(_4){ +_editors=[]; +_declaredKeys=[]; +} +return _4; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6,_7,_8){ +with(_6){ +if(objj_msgSend(_declaredKeys,"count")>0){ +objj_msgSend(_8,"encodeObject:forKey:",_declaredKeys,_1); +} +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_9,_a,_b){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("CPController").super_class},"init"); +if(_9){ +_editors=[]; +_declaredKeys=objj_msgSend(_b,"decodeObjectForKey:",_1)||[]; +} +return nil; +} +}),new objj_method(sel_getUid("isEditing"),function(_c,_d){ +with(_c){ +return objj_msgSend(_editors,"count")>0; +} +}),new objj_method(sel_getUid("commitEditing"),function(_e,_f){ +with(_e){ +var _10=0,_11=_editors.length; +for(;_10<_11;++_10){ +if(!objj_msgSend(objj_msgSend(_editors,"objectAtIndex:",i),"commitEditing")){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("discardEditing"),function(_12,_13){ +with(_12){ +objj_msgSend(_editors,"makeObjectsPerformSelector:",sel_getUid("discardEditing")); +} +}),new objj_method(sel_getUid("objectDidBeginEditing:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_editors,"addObject:",_16); +} +}),new objj_method(sel_getUid("objectDidEndEditing:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_editors,"removeObject:",_19); +} +})]); +p;10;CPCookie.jt;1234;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1163; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPCookie"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_cookieName"),new objj_ivar("_cookieValue"),new objj_ivar("_expires")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithName:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCookie").super_class},"init"); +_cookieName=_5; +_cookieValue=objj_msgSend(_3,"_readCookieValue"); +return _3; +} +}),new objj_method(sel_getUid("value"),function(_6,_7){ +with(_6){ +return _cookieValue; +} +}),new objj_method(sel_getUid("name"),function(_8,_9){ +with(_8){ +return _cookieName; +} +}),new objj_method(sel_getUid("expires"),function(_a,_b){ +with(_a){ +return _expires; +} +}),new objj_method(sel_getUid("setValue:expires:domain:"),function(_c,_d,_e,_f,_10){ +with(_c){ +if(_f){ +var _11="; expires="+_f.toGMTString(); +}else{ +var _11=""; +} +if(_10){ +_10="; domain="+_10; +}else{ +_10=""; +} +_cookieValue=_e; +_expires=_11; +} +}),new objj_method(sel_getUid("_readCookieValue"),function(_12,_13){ +with(_12){ +return ""; +} +})]); +p;10;CPCursor.jt;7593;@STATIC;1.0;t;7574; +var _1=nil,_2=[],_3={},_4=nil; +var _5=objj_allocateClassPair(CPObject,"CPCursor"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_cssString"),new objj_ivar("_isSetOnMouseEntered"),new objj_ivar("_isSetOnMouseExited")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("isSetOnMouseEntered"),function(_7,_8){ +with(_7){ +return _isSetOnMouseEntered; +} +}),new objj_method(sel_getUid("setOnMouseEntered:"),function(_9,_a,_b){ +with(_9){ +_isSetOnMouseEntered=_b; +} +}),new objj_method(sel_getUid("isSetOnMouseExited"),function(_c,_d){ +with(_c){ +return _isSetOnMouseExited; +} +}),new objj_method(sel_getUid("setOnMouseExited:"),function(_e,_f,_10){ +with(_e){ +_isSetOnMouseExited=_10; +} +}),new objj_method(sel_getUid("initWithCSSString:"),function(_11,_12,_13){ +with(_11){ +if(_11=objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPCursor").super_class},"init")){ +_cssString=_13; +} +return _11; +} +}),new objj_method(sel_getUid("_cssString"),function(_14,_15){ +with(_14){ +return _cssString; +} +}),new objj_method(sel_getUid("initWithImage:hotSpot:"),function(_16,_17,_18,_19){ +with(_16){ +return objj_msgSend(_16,"initWithCSSString:","url("+objj_msgSend(_18,"filename")+")"); +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_1a,_1b,_1c){ +with(_1a){ +} +}),new objj_method(sel_getUid("mouseExited:"),function(_1d,_1e,_1f){ +with(_1d){ +} +}),new objj_method(sel_getUid("set"),function(_20,_21){ +with(_20){ +_1=_20; +} +}),new objj_method(sel_getUid("push"),function(_22,_23){ +with(_22){ +_1=_2.push(_22); +} +}),new objj_method(sel_getUid("pop"),function(_24,_25){ +with(_24){ +objj_msgSend(CPCursor,"pop"); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_26,_27,_28){ +with(_26){ +if(_26=objj_msgSendSuper({receiver:_26,super_class:objj_getClass("CPCursor").super_class},"init")){ +_cssString=objj_msgSend(_28,"decodeObjectForKey:","CPCursorNameKey"); +} +return _26; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"encodeObject:forKey:",_cssString,"CPCursorNameKey"); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("currentCursor"),function(_2c,_2d){ +with(_2c){ +return _1; +} +}),new objj_method(sel_getUid("cursorWithCSSString:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=_3[_30]; +if(typeof _31=="undefined"){ +_31=objj_msgSend(objj_msgSend(CPCursor,"alloc"),"initWithCSSString:",_30); +_3[_30]=_31; +} +return _31; +} +}),new objj_method(sel_getUid("cursorWithImageNamed:"),function(_32,_33,_34){ +with(_32){ +if(!_4){ +_4="url("+objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",_32),"resourcePath")+"/CPCursor/%@.cur)"; +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +_4+=", default"; +} +} +var url=objj_msgSend(CPString,"stringWithFormat:",_4,_34); +return objj_msgSend(objj_msgSend(CPCursor,"alloc"),"initWithCSSString:",url); +} +}),new objj_method(sel_getUid("arrowCursor"),function(_35,_36){ +with(_35){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","default"); +} +}),new objj_method(sel_getUid("crosshairCursor"),function(_37,_38){ +with(_37){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","crosshair"); +} +}),new objj_method(sel_getUid("IBeamCursor"),function(_39,_3a){ +with(_39){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","text"); +} +}),new objj_method(sel_getUid("pointingHandCursor"),function(_3b,_3c){ +with(_3b){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","pointer"); +} +}),new objj_method(sel_getUid("resizeDownCursor"),function(_3d,_3e){ +with(_3d){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_3e)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","s-resize"); +} +}),new objj_method(sel_getUid("resizeUpCursor"),function(_3f,_40){ +with(_3f){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_40)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","n-resize"); +} +}),new objj_method(sel_getUid("resizeLeftCursor"),function(_41,_42){ +with(_41){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_42)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","w-resize"); +} +}),new objj_method(sel_getUid("resizeRightCursor"),function(_43,_44){ +with(_43){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_44)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","e-resize"); +} +}),new objj_method(sel_getUid("resizeLeftRightCursor"),function(_45,_46){ +with(_45){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","col-resize"); +} +}),new objj_method(sel_getUid("resizeUpDownCursor"),function(_47,_48){ +with(_47){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","row-resize"); +} +}),new objj_method(sel_getUid("operationNotAllowedCursor"),function(_49,_4a){ +with(_49){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","not-allowed"); +} +}),new objj_method(sel_getUid("dragCopyCursor"),function(_4b,_4c){ +with(_4b){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_4c)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","copy"); +} +}),new objj_method(sel_getUid("dragLinkCursor"),function(_4d,_4e){ +with(_4d){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_4e)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","alias"); +} +}),new objj_method(sel_getUid("contextualMenuCursor"),function(_4f,_50){ +with(_4f){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_50)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","context-menu"); +} +}),new objj_method(sel_getUid("openHandCursor"),function(_51,_52){ +with(_51){ +if(CPBrowserIsEngine(CPWebKitBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-webkit-grab"); +}else{ +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-moz-grab"); +}else{ +if(CPBrowserIsEngine(CPOperaBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","move"); +} +} +} +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_52)); +} +}),new objj_method(sel_getUid("closedHandCursor"),function(_53,_54){ +with(_53){ +if(CPBrowserIsEngine(CPWebKitBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-webkit-grabbing"); +}else{ +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-moz-grabbing"); +} +} +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_54)); +} +}),new objj_method(sel_getUid("disappearingItemCursor"),function(_55,_56){ +with(_55){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_56)); +} +}),new objj_method(sel_getUid("hide"),function(_57,_58){ +with(_57){ +objj_msgSend(_57,"_setCursorCSS:","none"); +} +}),new objj_method(sel_getUid("unhide"),function(_59,_5a){ +with(_59){ +objj_msgSend(_59,"_setCursorCSS:",objj_msgSend(_1,"_cssString")); +} +}),new objj_method(sel_getUid("setHiddenUntilMouseMoves:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d){ +objj_msgSend(CPCursor,"hide"); +}else{ +objj_msgSend(CPCursor,"unhide"); +} +} +}),new objj_method(sel_getUid("_setCursorCSS:"),function(_5e,_5f,_60){ +with(_5e){ +} +}),new objj_method(sel_getUid("pop"),function(_61,_62){ +with(_61){ +if(_2.length>1){ +_2.pop(); +_1=_2[_2.length-1]; +} +} +})]); +p;12;CPDocument.jt;18918;@STATIC;1.0;I;21;Foundation/CPString.jI;20;Foundation/CPArray.ji;13;CPResponder.ji;13;CPSavePanel.ji;18;CPViewController.ji;20;CPWindowController.jt;18763; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPSavePanel.j",YES); +objj_executeFile("CPViewController.j",YES); +objj_executeFile("CPWindowController.j",YES); +CPSaveOperation=0; +CPSaveAsOperation=1; +CPSaveToOperation=2; +CPAutosaveOperation=3; +CPChangeDone=0; +CPChangeUndone=1; +CPChangeCleared=2; +CPChangeReadOtherContents=3; +CPChangeAutosaved=4; +CPDocumentWillSaveNotification="CPDocumentWillSaveNotification"; +CPDocumentDidSaveNotification="CPDocumentDidSaveNotification"; +CPDocumentDidFailToSaveNotification="CPDocumentDidFailToSaveNotification"; +var _1=0; +var _2=objj_allocateClassPair(CPResponder,"CPDocument"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_window"),new objj_ivar("_view"),new objj_ivar("_viewControllersForWindowControllers"),new objj_ivar("_fileURL"),new objj_ivar("_fileType"),new objj_ivar("_windowControllers"),new objj_ivar("_untitledDocumentIndex"),new objj_ivar("_hasUndoManager"),new objj_ivar("_undoManager"),new objj_ivar("_changeCount"),new objj_ivar("_readConnection"),new objj_ivar("_writeRequest"),new objj_ivar("_canCloseAlert")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPDocument").super_class},"init"); +if(_4){ +_windowControllers=[]; +_viewControllersForWindowControllers=objj_msgSend(CPDictionary,"dictionary"); +_hasUndoManager=YES; +_changeCount=0; +objj_msgSend(_4,"setNextResponder:",CPApp); +} +return _4; +} +}),new objj_method(sel_getUid("initWithType:error:"),function(_6,_7,_8,_9){ +with(_6){ +_6=objj_msgSend(_6,"init"); +if(_6){ +objj_msgSend(_6,"setFileType:",_8); +} +return _6; +} +}),new objj_method(sel_getUid("initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_a,_b,_c,_d,_e,_f,_10){ +with(_a){ +_a=objj_msgSend(_a,"init"); +if(_a){ +objj_msgSend(_a,"setFileURL:",_c); +objj_msgSend(_a,"setFileType:",_d); +objj_msgSend(_a,"readFromURL:ofType:delegate:didReadSelector:contextInfo:",_c,_d,_e,_f,_10); +} +return _a; +} +}),new objj_method(sel_getUid("initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_11,_12,_13,_14,_15,_16,_17,_18){ +with(_11){ +_11=objj_msgSend(_11,"init"); +if(_11){ +objj_msgSend(_11,"setFileURL:",_13); +objj_msgSend(_11,"setFileType:",_15); +objj_msgSend(_11,"readFromURL:ofType:delegate:didReadSelector:contextInfo:",_14,_15,_16,_17,_18); +} +return _11; +} +}),new objj_method(sel_getUid("dataOfType:error:"),function(_19,_1a,_1b,_1c){ +with(_19){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataOfType:error: must be overridden by the document subclass."); +} +}),new objj_method(sel_getUid("readFromData:ofType:error:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"readFromData:ofType: must be overridden by the document subclass."); +} +}),new objj_method(sel_getUid("viewControllerWillLoadCib:"),function(_22,_23,_24){ +with(_22){ +} +}),new objj_method(sel_getUid("viewControllerDidLoadCib:"),function(_25,_26,_27){ +with(_25){ +} +}),new objj_method(sel_getUid("firstEligibleExistingWindowController"),function(_28,_29){ +with(_28){ +return nil; +} +}),new objj_method(sel_getUid("makeWindowControllers"),function(_2a,_2b){ +with(_2a){ +objj_msgSend(_2a,"makeViewAndWindowControllers"); +} +}),new objj_method(sel_getUid("makeViewAndWindowControllers"),function(_2c,_2d){ +with(_2c){ +var _2e=objj_msgSend(_2c,"viewCibName"),_2f=nil,_30=nil; +if(objj_msgSend(_2e,"length")){ +_2f=objj_msgSend(objj_msgSend(CPViewController,"alloc"),"initWithCibName:bundle:owner:",_2e,nil,_2c); +} +if(_2f){ +_30=objj_msgSend(_2c,"firstEligibleExistingWindowController"); +} +if(!_30){ +var _31=objj_msgSend(_2c,"windowCibName"); +if(objj_msgSend(_31,"length")){ +_30=objj_msgSend(objj_msgSend(CPWindowController,"alloc"),"initWithWindowCibName:owner:",_31,_2c); +}else{ +if(_2f){ +var _32=objj_msgSend(_2f,"view"),_33=objj_msgSend(_32,"frame"); +_33.origin=CGPointMake(50,50); +var _34=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",_33,CPTitledWindowMask|CPClosableWindowMask|CPMiniaturizableWindowMask|CPResizableWindowMask); +_30=objj_msgSend(objj_msgSend(CPWindowController,"alloc"),"initWithWindow:",_34); +} +} +} +if(_30&&_2f){ +objj_msgSend(_30,"setSupportsMultipleDocuments:",YES); +} +if(_30){ +objj_msgSend(_2c,"addWindowController:",_30); +} +if(_2f){ +objj_msgSend(_2c,"addViewController:forWindowController:",_2f,_30); +} +} +}),new objj_method(sel_getUid("windowControllers"),function(_35,_36){ +with(_35){ +return _windowControllers; +} +}),new objj_method(sel_getUid("addWindowController:"),function(_37,_38,_39){ +with(_37){ +objj_msgSend(_windowControllers,"addObject:",_39); +if(objj_msgSend(_39,"document")!==_37){ +objj_msgSend(_39,"setDocument:",_37); +} +} +}),new objj_method(sel_getUid("removeWindowController:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_3c){ +objj_msgSend(_windowControllers,"removeObject:",_3c); +} +if(objj_msgSend(_3c,"document")===_3a){ +objj_msgSend(_3c,"setDocument:",nil); +} +} +}),new objj_method(sel_getUid("view"),function(_3d,_3e){ +with(_3d){ +return _view; +} +}),new objj_method(sel_getUid("viewControllers"),function(_3f,_40){ +with(_3f){ +return objj_msgSend(_viewControllersForWindowControllers,"allValues"); +} +}),new objj_method(sel_getUid("addViewController:forWindowController:"),function(_41,_42,_43,_44){ +with(_41){ +objj_msgSend(_viewControllersForWindowControllers,"setObject:forKey:",_43,objj_msgSend(_44,"UID")); +if(objj_msgSend(_44,"document")===_41){ +objj_msgSend(_44,"setViewController:",_43); +} +} +}),new objj_method(sel_getUid("removeViewController:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_viewControllersForWindowControllers,"removeObject:",_47); +} +}),new objj_method(sel_getUid("viewControllerForWindowController:"),function(_48,_49,_4a){ +with(_48){ +return objj_msgSend(_viewControllersForWindowControllers,"objectForKey:",objj_msgSend(_4a,"UID")); +} +}),new objj_method(sel_getUid("showWindows"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocument:"),_4b); +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("showWindow:"),_4b); +} +}),new objj_method(sel_getUid("displayName"),function(_4d,_4e){ +with(_4d){ +if(_fileURL){ +return objj_msgSend(_fileURL,"lastPathComponent"); +} +if(!_untitledDocumentIndex){ +_untitledDocumentIndex=++_1; +} +if(_untitledDocumentIndex==1){ +return "Untitled"; +} +return "Untitled "+_untitledDocumentIndex; +} +}),new objj_method(sel_getUid("viewCibName"),function(_4f,_50){ +with(_4f){ +return nil; +} +}),new objj_method(sel_getUid("windowCibName"),function(_51,_52){ +with(_51){ +return nil; +} +}),new objj_method(sel_getUid("windowControllerDidLoadCib:"),function(_53,_54,_55){ +with(_53){ +} +}),new objj_method(sel_getUid("windowControllerWillLoadCib:"),function(_56,_57,_58){ +with(_56){ +} +}),new objj_method(sel_getUid("readFromURL:ofType:delegate:didReadSelector:contextInfo:"),function(_59,_5a,_5b,_5c,_5d,_5e,_5f){ +with(_59){ +objj_msgSend(_readConnection,"cancel"); +_readConnection=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",objj_msgSend(CPURLRequest,"requestWithURL:",_5b),_59); +_readConnection.session=_60(_5c,_5d,_5e,_5f); +} +}),new objj_method(sel_getUid("fileURL"),function(_61,_62){ +with(_61){ +return _fileURL; +} +}),new objj_method(sel_getUid("setFileURL:"),function(_63,_64,_65){ +with(_63){ +if(_fileURL===_65){ +return; +} +_fileURL=_65; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:",sel_getUid("synchronizeWindowTitleWithDocumentName")); +} +}),new objj_method(sel_getUid("saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:"),function(_66,_67,_68,_69,_6a,_6b,_6c,_6d){ +with(_66){ +var _6e=objj_msgSend(_66,"dataOfType:error:",objj_msgSend(_66,"fileType"),nil),_6f=_changeCount; +_writeRequest=objj_msgSend(CPURLRequest,"requestWithURL:",_68); +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_writeRequest,"setHTTPMethod:","POST"); +}else{ +objj_msgSend(_writeRequest,"setHTTPMethod:","PUT"); +} +objj_msgSend(_writeRequest,"setHTTPBody:",objj_msgSend(_6e,"rawString")); +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","close","Connection"); +if(_6a===CPSaveOperation){ +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","true","x-cappuccino-overwrite"); +} +if(_6a!==CPSaveToOperation){ +objj_msgSend(_66,"updateChangeCount:",CPChangeCleared); +} +var _70=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",_writeRequest,_66); +_70.session=_71(_68,_6a,_6f,_6b,_6c,_6d,_70); +} +}),new objj_method(sel_getUid("connection:didReceiveResponse:"),function(_72,_73,_74,_75){ +with(_72){ +if(!objj_msgSend(_75,"isKindOfClass:",objj_msgSend(CPHTTPURLResponse,"class"))){ +return; +} +var _76=objj_msgSend(_75,"statusCode"); +if(_76===200){ +return; +} +var _77=_74.session; +if(_74==_readConnection){ +objj_msgSend(_74,"cancel"); +alert("There was an error retrieving the document."); +objj_msgSend(_77.delegate,_77.didReadSelector,_72,NO,_77.contextInfo); +}else{ +if(_76==409){ +objj_msgSend(_74,"cancel"); +if(confirm("There already exists a file with that name, would you like to overwrite it?")){ +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","true","x-cappuccino-overwrite"); +objj_msgSend(_74,"start"); +}else{ +if(_77.saveOperation!=CPSaveToOperation){ +_changeCount+=_77.changeCount; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_72,"isDocumentEdited")); +} +_writeRequest=nil; +objj_msgSend(_77.delegate,_77.didSaveSelector,_72,NO,_77.contextInfo); +objj_msgSend(_72,"_sendDocumentSavedNotification:",NO); +} +} +} +} +}),new objj_method(sel_getUid("connection:didReceiveData:"),function(_78,_79,_7a,_7b){ +with(_78){ +var _7c=_7a.session; +if(_7a==_readConnection){ +objj_msgSend(_78,"readFromData:ofType:error:",objj_msgSend(CPData,"dataWithRawString:",_7b),_7c.fileType,nil); +objj_msgSend(_7c.delegate,_7c.didReadSelector,_78,YES,_7c.contextInfo); +}else{ +if(_7c.saveOperation!=CPSaveToOperation){ +objj_msgSend(_78,"setFileURL:",_7c.absoluteURL); +} +_writeRequest=nil; +objj_msgSend(_7c.delegate,_7c.didSaveSelector,_78,YES,_7c.contextInfo); +objj_msgSend(_78,"_sendDocumentSavedNotification:",YES); +} +} +}),new objj_method(sel_getUid("connection:didFailWithError:"),function(_7d,_7e,_7f,_80){ +with(_7d){ +var _81=_7f.session; +if(_readConnection==_7f){ +objj_msgSend(_81.delegate,_81.didReadSelector,_7d,NO,_81.contextInfo); +}else{ +if(_81.saveOperation!=CPSaveToOperation){ +_changeCount+=_81.changeCount; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_7d,"isDocumentEdited")); +} +_writeRequest=nil; +alert("There was an error saving the document."); +objj_msgSend(_81.delegate,_81.didSaveSelector,_7d,NO,_81.contextInfo); +objj_msgSend(_7d,"_sendDocumentSavedNotification:",NO); +} +} +}),new objj_method(sel_getUid("connectionDidFinishLoading:"),function(_82,_83,_84){ +with(_82){ +if(_readConnection==_84){ +_readConnection=nil; +} +} +}),new objj_method(sel_getUid("isDocumentEdited"),function(_85,_86){ +with(_85){ +return _changeCount!=0; +} +}),new objj_method(sel_getUid("updateChangeCount:"),function(_87,_88,_89){ +with(_87){ +if(_89==CPChangeDone){ +++_changeCount; +}else{ +if(_89==CPChangeUndone){ +--_changeCount; +}else{ +if(_89==CPChangeCleared){ +_changeCount=0; +} +} +} +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_87,"isDocumentEdited")); +} +}),new objj_method(sel_getUid("setFileType:"),function(_8a,_8b,_8c){ +with(_8a){ +_fileType=_8c; +} +}),new objj_method(sel_getUid("fileType"),function(_8d,_8e){ +with(_8d){ +return _fileType; +} +}),new objj_method(sel_getUid("hasUndoManager"),function(_8f,_90){ +with(_8f){ +return _hasUndoManager; +} +}),new objj_method(sel_getUid("setHasUndoManager:"),function(_91,_92,_93){ +with(_91){ +if(_hasUndoManager==_93){ +return; +} +_hasUndoManager=_93; +if(!_hasUndoManager){ +objj_msgSend(_91,"setUndoManager:",nil); +} +} +}),new objj_method(sel_getUid("_undoManagerWillCloseGroup:"),function(_94,_95,_96){ +with(_94){ +var _97=objj_msgSend(_96,"object"); +if(objj_msgSend(_97,"isUndoing")||objj_msgSend(_97,"isRedoing")){ +return; +} +objj_msgSend(_94,"updateChangeCount:",CPChangeDone); +} +}),new objj_method(sel_getUid("_undoManagerDidUndoChange:"),function(_98,_99,_9a){ +with(_98){ +objj_msgSend(_98,"updateChangeCount:",CPChangeUndone); +} +}),new objj_method(sel_getUid("_undoManagerDidRedoChange:"),function(_9b,_9c,_9d){ +with(_9b){ +objj_msgSend(_9b,"updateChangeCount:",CPChangeDone); +} +}),new objj_method(sel_getUid("setUndoManager:"),function(_9e,_9f,_a0){ +with(_9e){ +var _a1=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_undoManager){ +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerDidUndoChangeNotification,_undoManager); +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerDidRedoChangeNotification,_undoManager); +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerWillCloseUndoGroupNotification,_undoManager); +} +_undoManager=_a0; +if(_undoManager){ +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerDidUndoChange:"),CPUndoManagerDidUndoChangeNotification,_undoManager); +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerDidRedoChange:"),CPUndoManagerDidRedoChangeNotification,_undoManager); +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerWillCloseGroup:"),CPUndoManagerWillCloseUndoGroupNotification,_undoManager); +} +} +}),new objj_method(sel_getUid("undoManager"),function(_a2,_a3){ +with(_a2){ +if(_hasUndoManager&&!_undoManager){ +objj_msgSend(_a2,"setUndoManager:",objj_msgSend(objj_msgSend(CPUndoManager,"alloc"),"init")); +} +return _undoManager; +} +}),new objj_method(sel_getUid("windowWillReturnUndoManager:"),function(_a4,_a5,_a6){ +with(_a4){ +return objj_msgSend(_a4,"undoManager"); +} +}),new objj_method(sel_getUid("saveDocument:"),function(_a7,_a8,_a9){ +with(_a7){ +objj_msgSend(_a7,"saveDocumentWithDelegate:didSaveSelector:contextInfo:",nil,nil,nil); +} +}),new objj_method(sel_getUid("saveDocumentWithDelegate:didSaveSelector:contextInfo:"),function(_aa,_ab,_ac,_ad,_ae){ +with(_aa){ +if(_fileURL){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentWillSaveNotification,_aa); +objj_msgSend(_aa,"saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",_fileURL,objj_msgSend(_aa,"fileType"),CPSaveOperation,_ac,_ad,_ae); +}else{ +objj_msgSend(_aa,"_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:",_ac,_ad,_ae); +} +} +}),new objj_method(sel_getUid("saveDocumentAs:"),function(_af,_b0,_b1){ +with(_af){ +objj_msgSend(_af,"_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:",nil,nil,nil); +} +}),new objj_method(sel_getUid("_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:"),function(_b2,_b3,_b4,_b5,_b6){ +with(_b2){ +var _b7=objj_msgSend(CPSavePanel,"savePanel"),_b8=objj_msgSend(_b7,"runModal"); +if(!_b8){ +return; +} +var _b9=objj_msgSend(_b7,"URL"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentWillSaveNotification,_b2); +objj_msgSend(_b2,"saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",_b9,objj_msgSend(_b2,"fileType"),CPSaveAsOperation,_b4,_b5,_b6); +} +}),new objj_method(sel_getUid("_sendDocumentSavedNotification:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_bc){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentDidSaveNotification,_ba); +}else{ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentDidFailToSaveNotification,_ba); +} +} +})]); +var _2=objj_getClass("CPDocument"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocument\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("close"),function(_bd,_be){ +with(_bd){ +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("removeDocumentAndCloseIfNecessary:"),_bd); +objj_msgSend(objj_msgSend(CPDocumentController,"sharedDocumentController"),"removeDocument:",_bd); +} +}),new objj_method(sel_getUid("shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:"),function(_bf,_c0,_c1,_c2,_c3,_c4){ +with(_bf){ +if(objj_msgSend(_c1,"shouldCloseDocument")||(objj_msgSend(_windowControllers,"count")<2&&objj_msgSend(_windowControllers,"indexOfObject:",_c1)!==CPNotFound)){ +objj_msgSend(_bf,"canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",_bf,sel_getUid("_document:shouldClose:context:"),{delegate:_c2,selector:_c3,context:_c4}); +}else{ +if(objj_msgSend(_c2,"respondsToSelector:",_c3)){ +objj_msgSend(_c2,_c3,_bf,YES,_c4); +} +} +} +}),new objj_method(sel_getUid("_document:shouldClose:context:"),function(_c5,_c6,_c7,_c8,_c9){ +with(_c5){ +if(_c7===_c5&&_c8){ +objj_msgSend(_c5,"close"); +} +objj_msgSend(_c9.delegate,_c9.selector,_c7,_c8,_c9.context); +} +}),new objj_method(sel_getUid("canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:"),function(_ca,_cb,_cc,_cd,_ce){ +with(_ca){ +if(!objj_msgSend(_ca,"isDocumentEdited")){ +return objj_msgSend(_cc,"respondsToSelector:",_cd)&&objj_msgSend(_cc,_cd,_ca,YES,_ce); +} +_canCloseAlert=objj_msgSend(objj_msgSend(CPAlert,"alloc"),"init"); +objj_msgSend(_canCloseAlert,"setDelegate:",_ca); +objj_msgSend(_canCloseAlert,"setAlertStyle:",CPWarningAlertStyle); +objj_msgSend(_canCloseAlert,"setTitle:","Unsaved Document"); +objj_msgSend(_canCloseAlert,"setMessageText:","Do you want to save the changes you've made to the document \""+(objj_msgSend(_ca,"displayName")||objj_msgSend(_ca,"fileName"))+"\"?"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Save"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Cancel"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Don't Save"); +_canCloseAlert._context={delegate:_cc,selector:_cd,context:_ce}; +objj_msgSend(_canCloseAlert,"runModal"); +} +}),new objj_method(sel_getUid("alertDidEnd:returnCode:"),function(_cf,_d0,_d1,_d2){ +with(_cf){ +if(_d1!==_canCloseAlert){ +return; +} +var _d3=_d1._context.delegate,_d4=_d1._context.selector,_d5=_d1._context.context; +if(_d2===0){ +objj_msgSend(_cf,"saveDocumentWithDelegate:didSaveSelector:contextInfo:",_d3,_d4,_d5); +}else{ +objj_msgSend(_d3,_d4,_cf,_d2===2,_d5); +} +_canCloseAlert=nil; +} +})]); +var _60=function(_d6,_d7,_d8,_d9){ +return {fileType:_d6,delegate:_d7,didReadSelector:_d8,contextInfo:_d9}; +}; +var _71=function(_da,_db,_dc,_dd,_de,_df,_e0){ +return {absoluteURL:_da,saveOperation:_db,changeCount:_dc,delegate:_dd,didSaveSelector:_de,contextInfo:_df,connection:_e0}; +}; +p;22;CPDocumentController.jt;9691;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPBundle.ji;12;CPDocument.ji;13;CPOpenPanel.jt;9585; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CPDocument.j",YES); +objj_executeFile("CPOpenPanel.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPDocumentController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_documents"),new objj_ivar("_documentTypes")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPDocumentController").super_class},"init"); +if(_4){ +_documents=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"); +if(!_1){ +_1=_4; +} +_documentTypes=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleDocumentTypes"); +} +return _4; +} +}),new objj_method(sel_getUid("documentForURL:"),function(_6,_7,_8){ +with(_6){ +var _9=0,_a=objj_msgSend(_documents,"count"); +for(;_9<_a;++_9){ +var _b=_documents[_9]; +if(objj_msgSend(objj_msgSend(_b,"fileURL"),"isEqual:",_8)){ +return _b; +} +} +return nil; +} +}),new objj_method(sel_getUid("openUntitledDocumentOfType:display:"),function(_c,_d,_e,_f){ +with(_c){ +var _10=objj_msgSend(_c,"makeUntitledDocumentOfType:error:",_e,nil); +if(_10){ +objj_msgSend(_c,"addDocument:",_10); +} +if(_f){ +objj_msgSend(_10,"makeWindowControllers"); +objj_msgSend(_10,"showWindows"); +} +return _10; +} +}),new objj_method(sel_getUid("makeUntitledDocumentOfType:error:"),function(_11,_12,_13,_14){ +with(_11){ +return objj_msgSend(objj_msgSend(objj_msgSend(_11,"documentClassForType:",_13),"alloc"),"initWithType:error:",_13,_14); +} +}),new objj_method(sel_getUid("openDocumentWithContentsOfURL:display:error:"),function(_15,_16,_17,_18,_19){ +with(_15){ +var _1a=objj_msgSend(_15,"documentForURL:",_17); +if(!_1a){ +var _1b=objj_msgSend(_15,"typeForContentsOfURL:error:",_17,_19); +_1a=objj_msgSend(_15,"makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_17,_1b,_15,sel_getUid("document:didRead:contextInfo:"),objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_18,"shouldDisplay")); +objj_msgSend(_15,"addDocument:",_1a); +if(_1a){ +objj_msgSend(_15,"noteNewRecentDocument:",_1a); +} +}else{ +if(_18){ +objj_msgSend(_1a,"showWindows"); +} +} +return _1a; +} +}),new objj_method(sel_getUid("reopenDocumentForURL:withContentsOfURL:error:"),function(_1c,_1d,_1e,_1f,_20){ +with(_1c){ +return objj_msgSend(_1c,"makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_1e,_1f,objj_msgSend(objj_msgSend(_documentTypes,"objectAtIndex:",0),"objectForKey:","CPBundleTypeName"),_1c,sel_getUid("document:didRead:contextInfo:"),nil); +} +}),new objj_method(sel_getUid("makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_21,_22,_23,_24,_25,_26,_27){ +with(_21){ +return objj_msgSend(objj_msgSend(objj_msgSend(_21,"documentClassForType:",_24),"alloc"),"initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_23,_24,_25,_26,_27); +} +}),new objj_method(sel_getUid("makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_28,_29,_2a,_2b,_2c,_2d,_2e,_2f){ +with(_28){ +return objj_msgSend(objj_msgSend(objj_msgSend(_28,"documentClassForType:",_2c),"alloc"),"initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_2a,_2b,_2c,_2d,_2e,_2f); +} +}),new objj_method(sel_getUid("document:didRead:contextInfo:"),function(_30,_31,_32,_33,_34){ +with(_30){ +if(!_33){ +return; +} +objj_msgSend(_32,"makeWindowControllers"); +if(objj_msgSend(_34,"objectForKey:","shouldDisplay")){ +objj_msgSend(_32,"showWindows"); +} +} +}),new objj_method(sel_getUid("newDocument:"),function(_35,_36,_37){ +with(_35){ +objj_msgSend(_35,"openUntitledDocumentOfType:display:",objj_msgSend(objj_msgSend(_documentTypes,"objectAtIndex:",0),"objectForKey:","CPBundleTypeName"),YES); +} +}),new objj_method(sel_getUid("openDocument:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(CPOpenPanel,"openPanel"); +objj_msgSend(_3b,"runModal"); +var _3c=objj_msgSend(_3b,"URLs"),_3d=0,_3e=objj_msgSend(_3c,"count"); +for(;_3d<_3e;++_3d){ +objj_msgSend(_38,"openDocumentWithContentsOfURL:display:error:",objj_msgSend(CPURL,"URLWithString:",_3c[_3d]),YES,nil); +} +} +}),new objj_method(sel_getUid("documents"),function(_3f,_40){ +with(_3f){ +return _documents; +} +}),new objj_method(sel_getUid("addDocument:"),function(_41,_42,_43){ +with(_41){ +objj_msgSend(_documents,"addObject:",_43); +} +}),new objj_method(sel_getUid("removeDocument:"),function(_44,_45,_46){ +with(_44){ +objj_msgSend(_documents,"removeObjectIdenticalTo:",_46); +} +}),new objj_method(sel_getUid("defaultType"),function(_47,_48){ +with(_47){ +return objj_msgSend(_documentTypes[0],"objectForKey:","CPBundleTypeName"); +} +}),new objj_method(sel_getUid("typeForContentsOfURL:error:"),function(_49,_4a,_4b,_4c){ +with(_49){ +var _4d=0,_4e=_documentTypes.length,_4f=objj_msgSend(objj_msgSend(_4b,"pathExtension"),"lowercaseString"),_50=nil; +for(;_4d<_4e;++_4d){ +var _51=_documentTypes[_4d],_52=objj_msgSend(_51,"objectForKey:","CFBundleTypeExtensions"),_53=0,_54=_52.length; +for(;_53<_54;++_53){ +var _55=objj_msgSend(_52[_53],"lowercaseString"); +if(_55===_4f){ +return objj_msgSend(_51,"objectForKey:","CPBundleTypeName"); +} +if(_55==="****"){ +_50=objj_msgSend(_51,"objectForKey:","CPBundleTypeName"); +} +} +} +return _50||objj_msgSend(_49,"defaultType"); +} +}),new objj_method(sel_getUid("_infoForType:"),function(_56,_57,_58){ +with(_56){ +var i=0,_59=objj_msgSend(_documentTypes,"count"); +for(;i<_59;++i){ +var _5a=_documentTypes[i]; +if(objj_msgSend(_5a,"objectForKey:","CPBundleTypeName")==_58){ +return _5a; +} +} +return nil; +} +}),new objj_method(sel_getUid("documentClassForType:"),function(_5b,_5c,_5d){ +with(_5b){ +var _5e=objj_msgSend(objj_msgSend(_5b,"_infoForType:",_5d),"objectForKey:","CPDocumentClass"); +return _5e?CPClassFromString(_5e):nil; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("sharedDocumentController"),function(_5f,_60){ +with(_5f){ +if(!_1){ +objj_msgSend(objj_msgSend(_5f,"alloc"),"init"); +} +return _1; +} +})]); +var _2=objj_getClass("CPDocumentController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:"),function(_61,_62,_63,_64,_65){ +with(_61){ +var _66={delegate:_63,selector:_64,context:_65}; +objj_msgSend(_61,"_closeDocumentsStartingWith:shouldClose:context:",nil,YES,_66); +} +}),new objj_method(sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"),function(_67,_68,_69,_6a,_6b){ +with(_67){ +if(_6a){ +objj_msgSend(_69,"close"); +if(objj_msgSend(objj_msgSend(_67,"documents"),"count")>0){ +objj_msgSend(objj_msgSend(objj_msgSend(_67,"documents"),"lastObject"),"canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",_67,sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"),_6b); +return; +} +} +if(objj_msgSend(_6b.delegate,"respondsToSelector:",_6b.selector)){ +objj_msgSend(_6b.delegate,_6b.selector,_67,objj_msgSend(objj_msgSend(_67,"documents"),"count")===0,_6b.context); +} +} +})]); +var _2=objj_getClass("CPDocumentController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("recentDocumentURLs"),function(_6c,_6d){ +with(_6c){ +if(typeof window["cpRecentDocumentURLs"]==="function"){ +return window.cpRecentDocumentURLs(); +} +return []; +} +}),new objj_method(sel_getUid("clearRecentDocuments:"),function(_6e,_6f,_70){ +with(_6e){ +if(typeof window["cpClearRecentDocuments"]==="function"){ +window.cpClearRecentDocuments(); +} +objj_msgSend(_6e,"_updateRecentDocumentsMenu"); +} +}),new objj_method(sel_getUid("noteNewRecentDocument:"),function(_71,_72,_73){ +with(_71){ +objj_msgSend(_71,"noteNewRecentDocumentURL:",objj_msgSend(objj_msgSend(_73,"fileURL"),"absoluteString")); +} +}),new objj_method(sel_getUid("noteNewRecentDocumentURL:"),function(_74,_75,_76){ +with(_74){ +if(typeof window["cpNoteNewRecentDocumentPath"]==="function"){ +window.cpNoteNewRecentDocumentPath(_76); +} +objj_msgSend(_74,"_updateRecentDocumentsMenu"); +} +}),new objj_method(sel_getUid("_removeAllRecentDocumentsFromMenu:"),function(_77,_78,_79){ +with(_77){ +var _7a=objj_msgSend(_79,"itemArray"),_7b=objj_msgSend(_7a,"count"); +while(_7b--){ +var _7c=_7a[_7b]; +if(objj_msgSend(_7c,"action")===sel_getUid("_openRecentDocument:")){ +objj_msgSend(_79,"removeItemAtIndex:",_7b); +} +} +} +}),new objj_method(sel_getUid("_updateRecentDocumentsMenu"),function(_7d,_7e){ +with(_7d){ +var _7f=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"_menuWithName:","_CPRecentDocumentsMenu"),_80=objj_msgSend(_7d,"recentDocumentURLs"),_81=objj_msgSend(_7f,"itemArray"),_82=objj_msgSend(_80,"count"),_83=objj_msgSend(_81,"count"); +objj_msgSend(_7d,"_removeAllRecentDocumentsFromMenu:",_7f); +if(_83){ +if(!_82){ +if(objj_msgSend(_81[0],"isSeparatorItem")){ +objj_msgSend(_7f,"removeItemAtIndex:",0); +} +}else{ +if(!objj_msgSend(_81[0],"isSeparatorItem")){ +objj_msgSend(_7f,"insertItem:atIndex:",objj_msgSend(CPMenuItem,"separatorItem"),0); +} +} +} +while(_82--){ +var _84=_80[_82],_85=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",objj_msgSend(_84,"lastPathComponent"),sel_getUid("_openRecentDocument:"),nil); +objj_msgSend(_85,"setTag:",_84); +objj_msgSend(_7f,"insertItem:atIndex:",_85,0); +} +} +}),new objj_method(sel_getUid("_openRecentDocument:"),function(_86,_87,_88){ +with(_86){ +objj_msgSend(_86,"openDocumentWithContentsOfURL:display:error:",objj_msgSend(_88,"tag"),YES,nil); +} +})]); +p;14;CPDragServer.jt;14787;@STATIC;1.0;I;15;AppKit/CPView.jI;16;AppKit/CPEvent.jI;21;AppKit/CPPasteboard.jI;20;AppKit/CPImageView.jt;14675; +objj_executeFile("AppKit/CPView.j",NO); +objj_executeFile("AppKit/CPEvent.j",NO); +objj_executeFile("AppKit/CPPasteboard.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +CPDragOperationNone=0,CPDragOperationCopy=1<<1,CPDragOperationLink=1<<1,CPDragOperationGeneric=1<<2,CPDragOperationPrivate=1<<3,CPDragOperationMove=1<<4,CPDragOperationDelete=1<<5,CPDragOperationEvery=-1; +var _1=nil,_2=0.05; +var _3=nil; +var _4=nil; +var _5=nil; +var _6=objj_allocateClassPair(CPObject,"CPDraggingInfo"),_7=_6.isa; +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("draggingPasteboard"),function(_8,_9){ +with(_8){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +return objj_msgSend(_CPDOMDataTransferPasteboard,"DOMDataTransferPasteboard"); +} +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingPasteboard"); +} +}),new objj_method(sel_getUid("draggingSource"),function(_a,_b){ +with(_a){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingSource"); +} +}),new objj_method(sel_getUid("draggingLocation"),function(_c,_d){ +with(_c){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingLocation"); +} +}),new objj_method(sel_getUid("draggingDestinationWindow"),function(_e,_f){ +with(_e){ +return (objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"),"isKindOfClass:",objj_msgSend(CPWindow,"class"))?objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"):objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"),"window")); +} +}),new objj_method(sel_getUid("draggedImage"),function(_10,_11){ +with(_10){ +return objj_msgSend(objj_msgSend(_10,"draggedView"),"image"); +} +}),new objj_method(sel_getUid("draggedImageLocation"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"draggedViewLocation"); +} +}),new objj_method(sel_getUid("draggedView"),function(_14,_15){ +with(_14){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggedView"); +} +}),new objj_method(sel_getUid("draggedViewLocation"),function(_16,_17){ +with(_16){ +var _18=objj_msgSend(CPDragServer,"sharedDragServer"); +return objj_msgSend((objj_msgSend(objj_msgSend(_18,"draggingDestination"),"isKindOfClass:",objj_msgSend(CPWindow,"class"))?objj_msgSend(_18,"draggingDestination"):objj_msgSend(objj_msgSend(_18,"draggingDestination"),"window")),"convertPlatformWindowToBase:",objj_msgSend(objj_msgSend(_18,"draggedView"),"frame").origin); +} +})]); +var _19=1<<0,_1a=1<<1,_1b=1<<2,_1c=1<<3; +var _6=objj_allocateClassPair(CPObject,"CPDragServer"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_isDragging"),new objj_ivar("_draggedWindow"),new objj_ivar("_draggedView"),new objj_ivar("_imageView"),new objj_ivar("_isDraggingImage"),new objj_ivar("_draggingOffset"),new objj_ivar("_draggingPasteboard"),new objj_ivar("_draggingSource"),new objj_ivar("_implementedDraggingSourceMethods"),new objj_ivar("_draggingLocation"),new objj_ivar("_draggingDestination"),new objj_ivar("_draggingDestinationWantsPeriodicUpdates"),new objj_ivar("_startDragLocation"),new objj_ivar("_shouldSlideBack"),new objj_ivar("_dragOperation"),new objj_ivar("_draggingUpdateTimer")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("isDragging"),function(_1d,_1e){ +with(_1d){ +return _isDragging; +} +}),new objj_method(sel_getUid("draggedWindow"),function(_1f,_20){ +with(_1f){ +return _draggedWindow; +} +}),new objj_method(sel_getUid("draggedView"),function(_21,_22){ +with(_21){ +return _draggedView; +} +}),new objj_method(sel_getUid("draggingOffset"),function(_23,_24){ +with(_23){ +return _draggingOffset; +} +}),new objj_method(sel_getUid("draggingPasteboard"),function(_25,_26){ +with(_25){ +return _draggingPasteboard; +} +}),new objj_method(sel_getUid("draggingSource"),function(_27,_28){ +with(_27){ +return _draggingSource; +} +}),new objj_method(sel_getUid("init"),function(_29,_2a){ +with(_29){ +_29=objj_msgSendSuper({receiver:_29,super_class:objj_getClass("CPDragServer").super_class},"init"); +if(_29){ +_draggedWindow=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",{origin:{x:0,y:0},size:{width:0,height:0}},CPBorderlessWindowMask); +objj_msgSend(_draggedWindow,"setLevel:",CPDraggingWindowLevel); +} +return _29; +} +}),new objj_method(sel_getUid("draggingDestination"),function(_2b,_2c){ +with(_2b){ +return _draggingDestination; +} +}),new objj_method(sel_getUid("draggingLocation"),function(_2d,_2e){ +with(_2d){ +return _draggingLocation; +} +}),new objj_method(sel_getUid("draggingStartedInPlatformWindow:globalLocation:"),function(_2f,_30,_31,_32){ +with(_2f){ +if(_isDraggingImage){ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:beganAt:"))){ +objj_msgSend(_draggingSource,"draggedImage:beganAt:",objj_msgSend(_draggedView,"image"),_32); +} +}else{ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:beganAt:"))){ +objj_msgSend(_draggingSource,"draggedView:beganAt:",_draggedView,_32); +} +} +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"orderFront:",_2f); +} +} +}),new objj_method(sel_getUid("draggingSourceUpdatedWithGlobalLocation:"),function(_33,_34,_35){ +with(_33){ +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"setFrameOrigin:",{x:_35.x-_draggingOffset.width,y:_35.y-_draggingOffset.height}); +} +if(_implementedDraggingSourceMethods&_19){ +objj_msgSend(_draggingSource,"draggedImage:movedTo:",objj_msgSend(_draggedView,"image"),_35); +}else{ +if(_implementedDraggingSourceMethods&_1b){ +objj_msgSend(_draggingSource,"draggedView:movedTo:",_draggedView,_35); +} +} +} +}),new objj_method(sel_getUid("draggingUpdatedInPlatformWindow:location:"),function(_36,_37,_38,_39){ +with(_36){ +objj_msgSend(_draggingUpdateTimer,"invalidate"); +_draggingUpdateTimer=nil; +var _3a=CPDragOperationCopy; +var _3b=objj_msgSend(_38,"_dragHitTest:pasteboard:",_39,objj_msgSend(_5,"draggingPasteboard")); +if(_3b){ +_draggingLocation=objj_msgSend((objj_msgSend(_3b,"isKindOfClass:",objj_msgSend(CPWindow,"class"))?_3b:objj_msgSend(_3b,"window")),"convertPlatformWindowToBase:",_39); +} +if(_3b!==_draggingDestination){ +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingExited:"))){ +objj_msgSend(_draggingDestination,"draggingExited:",_5); +} +_draggingDestination=_3b; +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("wantsPeriodicDraggingUpdates"))){ +_draggingDestinationWantsPeriodicUpdates=objj_msgSend(_draggingDestination,"wantsPeriodicDraggingUpdates"); +}else{ +_draggingDestinationWantsPeriodicUpdates=YES; +} +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingEntered:"))){ +_3a=objj_msgSend(_draggingDestination,"draggingEntered:",_5); +} +}else{ +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingUpdated:"))){ +_3a=objj_msgSend(_draggingDestination,"draggingUpdated:",_5); +} +} +if(!_draggingDestination){ +_3a=CPDragOperationNone; +}else{ +if(_draggingDestinationWantsPeriodicUpdates){ +_draggingUpdateTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",_2,_36,sel_getUid("_sendPeriodicDraggingUpdate:"),objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{platformWindow:_38,location:_39}),NO); +} +var _3c=objj_msgSend(_draggingDestination,"isKindOfClass:",objj_msgSend(CPView,"class"))?objj_msgSend(_draggingDestination,"enclosingScrollView"):nil; +if(_3c){ +var _3d=objj_msgSend(_3c,"contentView"),_3e=objj_msgSend(_3d,"bounds"),_3f=CGRectInset(_3e,10,10),_40=objj_msgSend(_3d,"convertPoint:fromView:",_draggingLocation,nil),_41=0,_42=0; +if(!CGRectContainsPoint(_3f,_40)){ +if(objj_msgSend(_3c,"hasVerticalScroller")){ +if(_40.yCGRectGetMaxY(_3f)){ +_42=CGRectGetMaxY(_3f)-_40.y; +} +} +if(_42<-_3f.size.height){ +_42=-_3f.size.height; +} +if(_42>_3f.size.height){ +_42=_3f.size.height; +} +} +if(objj_msgSend(_3c,"hasHorizontalScroller")){ +if(_40.xCGRectGetMaxX(_3f)){ +_41=CGRectGetMaxX(_3f)-_40.x; +} +} +if(_41<-_3f.size.width){ +_41=-_3f.size.width; +} +if(_41>_3f.size.width){ +_41=_3f.size.width; +} +} +objj_msgSend(_3d,"scrollToPoint:",CGPointMake(_3e.origin.x-_41,_3e.origin.y-_42)); +} +} +} +return _3a; +} +}),new objj_method(sel_getUid("_sendPeriodicDraggingUpdate:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_45,"userInfo"); +_dragOperation=objj_msgSend(_43,"draggingUpdatedInPlatformWindow:location:",objj_msgSend(_46,"objectForKey:","platformWindow"),objj_msgSend(_46,"objectForKey:","location")); +} +}),new objj_method(sel_getUid("draggingEndedInPlatformWindow:globalLocation:operation:"),function(_47,_48,_49,_4a,_4b){ +with(_47){ +objj_msgSend(_draggingUpdateTimer,"invalidate"); +_draggingUpdateTimer=nil; +objj_msgSend(_draggedView,"removeFromSuperview"); +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"orderOut:",_47); +} +if(_implementedDraggingSourceMethods&_1a){ +objj_msgSend(_draggingSource,"draggedImage:endedAt:operation:",objj_msgSend(_draggedView,"image"),_4a,_4b); +}else{ +if(_implementedDraggingSourceMethods&_1c){ +objj_msgSend(_draggingSource,"draggedView:endedAt:operation:",_draggedView,_4a,_4b); +} +} +_isDragging=NO; +} +}),new objj_method(sel_getUid("performDragOperationInPlatformWindow:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_draggingDestination&&(!objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("prepareForDragOperation:"))||objj_msgSend(_draggingDestination,"prepareForDragOperation:",_5))&&(!objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("performDragOperation:"))||objj_msgSend(_draggingDestination,"performDragOperation:",_5))&&objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("concludeDragOperation:"))){ +objj_msgSend(_draggingDestination,"concludeDragOperation:",_5); +} +} +}),new objj_method(sel_getUid("dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:"),function(_4f,_50,_51,_52,_53,_54,_55,_56,_57,_58){ +with(_4f){ +_isDragging=YES; +_draggedView=_51; +_draggingPasteboard=_56||objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard); +_draggingSource=_57; +_draggingDestination=nil; +_shouldSlideBack=_58; +var _59=objj_msgSend(_55,"window"),_5a=objj_msgSend(_55,"locationInWindow"); +if(_5a){ +if(_59){ +_5a=objj_msgSend(_59,"convertBaseToGlobal:",_5a); +} +_draggingOffset={width:_5a.x-_53.x,height:_5a.y-_53.y}; +}else{ +_draggingOffset={width:0,height:0}; +} +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_draggedWindow,"setPlatformWindow:",objj_msgSend(_52,"platformWindow")); +} +objj_msgSend(_51,"setFrameOrigin:",{x:0,y:0}); +var _5b=objj_msgSend(CPEvent,"mouseLocation"); +_startDragLocation={x:_5b.x-_draggingOffset.width,y:_5b.y-_draggingOffset.height}; +objj_msgSend(_draggedWindow,"setFrameOrigin:",_startDragLocation); +objj_msgSend(_draggedWindow,"setFrameSize:",objj_msgSend(_51,"frame").size); +objj_msgSend(objj_msgSend(_draggedWindow,"contentView"),"addSubview:",_51); +_implementedDraggingSourceMethods=0; +if(_draggedView===_imageView){ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:movedTo:"))){ +_implementedDraggingSourceMethods|=_19; +} +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:endedAt:operation:"))){ +_implementedDraggingSourceMethods|=_1a; +} +}else{ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:movedTo:"))){ +_implementedDraggingSourceMethods|=_1b; +} +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:endedAt:operation:"))){ +_implementedDraggingSourceMethods|=_1c; +} +} +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_4f,"draggingStartedInPlatformWindow:globalLocation:",objj_msgSend(_52,"platformWindow"),_5b); +objj_msgSend(_4f,"trackDragging:",_55); +} +} +}),new objj_method(sel_getUid("dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:"),function(_5c,_5d,_5e,_5f,_60,_61,_62,_63,_64,_65){ +with(_5c){ +_isDraggingImage=YES; +var _66=objj_msgSend(_5e,"size"); +if(!_imageView){ +_imageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:_66.width,height:_66.height}}); +} +objj_msgSend(_imageView,"setImage:",_5e); +objj_msgSend(_5c,"dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:",_imageView,_5f,_60,_61,_62,_63,_64,_65); +} +}),new objj_method(sel_getUid("trackDragging:"),function(_67,_68,_69){ +with(_67){ +var _6a=objj_msgSend(_69,"type"),_6b=objj_msgSend(_draggedWindow,"platformWindow"),_6c=objj_msgSend(objj_msgSend(_69,"window"),"convertBaseToPlatformWindow:",objj_msgSend(_69,"locationInWindow")); +if(_6a===CPLeftMouseUp){ +if(_dragOperation!==CPDragOperationNone){ +objj_msgSend(_67,"performDragOperationInPlatformWindow:",_6b); +} +objj_msgSend(_67,"draggingEndedInPlatformWindow:globalLocation:operation:",_6b,_6c,_dragOperation); +return; +}else{ +if(_6a===CPKeyDown){ +var _6d=objj_msgSend(_69,"keyCode"); +if(_6d===CPEscapeKeyCode){ +_dragOperation=CPDragOperationNone; +objj_msgSend(_67,"draggingEndedInPlatformWindow:globalLocation:operation:",_6b,CGPointMakeZero(),_dragOperation); +return; +} +}else{ +objj_msgSend(_67,"draggingSourceUpdatedWithGlobalLocation:",_6c); +_dragOperation=objj_msgSend(_67,"draggingUpdatedInPlatformWindow:location:",_6b,_6c); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_67,sel_getUid("trackDragging:"),CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPKeyDownMask,nil,0,NO); +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("initialize"),function(_6e,_6f){ +with(_6e){ +if(_6e!==objj_msgSend(CPDragServer,"class")){ +return; +} +_5=objj_msgSend(objj_msgSend(CPDraggingInfo,"alloc"),"init"); +} +}),new objj_method(sel_getUid("sharedDragServer"),function(_70,_71){ +with(_70){ +if(!_3){ +_3=objj_msgSend(objj_msgSend(CPDragServer,"alloc"),"init"); +} +return _3; +} +})]); +var _6=objj_getClass("CPWindow"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("_dragHitTest:pasteboard:"),function(_72,_73,_74,_75){ +with(_72){ +if(!_inclusiveRegisteredDraggedTypes){ +return nil; +} +var _76=objj_msgSend(_72,"convertPlatformWindowToBase:",_74),_77=objj_msgSend(_windowView,"hitTest:",_76); +while(_77&&!objj_msgSend(_75,"availableTypeFromArray:",objj_msgSend(_77,"registeredDraggedTypes"))){ +_77=objj_msgSend(_77,"superview"); +} +if(_77){ +return _77; +} +if(objj_msgSend(_75,"availableTypeFromArray:",objj_msgSend(_72,"registeredDraggedTypes"))){ +return _72; +} +return nil; +} +})]); +p;9;CPEvent.jt;11899;@STATIC;1.0;I;21;Foundation/CPObject.ji;8;CPText.jt;11841; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPText.j",YES); +CPLeftMouseDown=1; +CPLeftMouseUp=2; +CPRightMouseDown=3; +CPRightMouseUp=4; +CPMouseMoved=5; +CPLeftMouseDragged=6; +CPRightMouseDragged=7; +CPMouseEntered=8; +CPMouseExited=9; +CPKeyDown=10; +CPKeyUp=11; +CPFlagsChanged=12; +CPAppKitDefined=13; +CPSystemDefined=14; +CPApplicationDefined=15; +CPPeriodic=16; +CPCursorUpdate=17; +CPScrollWheel=22; +CPOtherMouseDown=25; +CPOtherMouseUp=26; +CPOtherMouseDragged=27; +CPTouchStart=28; +CPTouchMove=29; +CPTouchEnd=30; +CPTouchCancel=31; +CPAlphaShiftKeyMask=1<<16; +CPShiftKeyMask=1<<17; +CPControlKeyMask=1<<18; +CPAlternateKeyMask=1<<19; +CPCommandKeyMask=1<<20; +CPNumericPadKeyMask=1<<21; +CPHelpKeyMask=1<<22; +CPFunctionKeyMask=1<<23; +CPDeviceIndependentModifierFlagsMask=4294901760; +CPLeftMouseDownMask=1<=CPRectGetMinX(_18)&&_19.y>=CPRectGetMinY(_18)&&_19.x=_3b.width&&_3a>=_3b.height){ +_39=_3b.width; +_3a=_3b.height; +}else{ +var _3c=_3b.width/_3b.height,_3d=_39/_3a; +if(_3d>_3c){ +_39=_3a*_3c; +}else{ +_3a=_39/_3c; +} +} +}else{ +_39=_3b.width; +_3a=_3b.height; +} +if(_34==CPScaleNone){ +} +var x,y; +switch(_imageAlignment){ +case CPImageAlignLeft: +case CPImageAlignTopLeft: +case CPImageAlignBottomLeft: +x=0; +break; +case CPImageAlignRight: +case CPImageAlignTopRight: +case CPImageAlignBottomRight: +x=_37-_39; +break; +default: +x=(_37-_39)/2; +break; +} +switch(_imageAlignment){ +case CPImageAlignTop: +case CPImageAlignTopLeft: +case CPImageAlignTopRight: +y=0; +break; +case CPImageAlignBottom: +case CPImageAlignBottomLeft: +case CPImageAlignBottomRight: +y=_38-_3a; +break; +default: +y=(_38-_3a)/2; +break; +} +} +_imageRect={origin:{x:x,y:y},size:{width:_39,height:_3a}}; +if(_hasShadow){ +objj_msgSend(_shadowView,"setFrame:",{origin:{x:x-_3,y:y-_5},size:{width:_39+_35,height:_3a+_36}}); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(objj_msgSend(_3e,"nextResponder"),"mouseDown:",_40); +} +}),new objj_method(sel_getUid("setEditable:"),function(_41,_42,_43){ +with(_41){ +if(_isEditable===_43){ +return; +} +_isEditable=_43; +if(_isEditable){ +objj_msgSend(_41,"registerForDraggedTypes:",[CPImagesPboardType]); +}else{ +var _44=objj_msgSend(_41,"registeredDraggedTypes"); +objj_msgSend(_41,"unregisterDraggedTypes"); +objj_msgSend(_44,"removeObjectIdenticalTo:",CPImagesPboardType); +objj_msgSend(_41,"registerForDraggedTypes:",_44); +} +} +}),new objj_method(sel_getUid("isEditable"),function(_45,_46){ +with(_45){ +return _isEditable; +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_47,_48,_49){ +with(_47){ +var _4a=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(objj_msgSend(_49,"draggingPasteboard"),"dataForType:",CPImagesPboardType)); +if(objj_msgSend(_4a,"count")){ +objj_msgSend(_47,"setImage:",_4a[0]); +objj_msgSend(_47,"sendAction:to:",objj_msgSend(_47,"action"),objj_msgSend(_47,"target")); +} +return YES; +} +})]); +class_addMethods(_a,[new objj_method(sel_getUid("initialize"),function(_4b,_4c){ +with(_4b){ +var _4d=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class")); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(_4d,"pathForResource:","empty.png")); +} +})]); +var _4e="CPImageViewImageKey",_4f="CPImageViewImageScalingKey",_50="CPImageViewImageAlignmentKey",_51="CPImageViewHasShadowKey",_52="CPImageViewIsEditableKey"; +var _9=objj_getClass("CPImageView"); +if(!_9){ +throw new SyntaxError("*** Could not find definition for class \"CPImageView\""); +} +var _a=_9.isa; +class_addMethods(_9,[new objj_method(sel_getUid("initWithCoder:"),function(_53,_54,_55){ +with(_53){ +_53=objj_msgSendSuper({receiver:_53,super_class:objj_getClass("CPImageView").super_class},"initWithCoder:",_55); +if(_53){ +objj_msgSend(_53,"setHasShadow:",objj_msgSend(_55,"decodeBoolForKey:",_51)); +objj_msgSend(_53,"setImageAlignment:",objj_msgSend(_55,"decodeIntForKey:",_50)); +if(objj_msgSend(_55,"decodeBoolForKey:",_52)||NO){ +objj_msgSend(_53,"setEditable:",YES); +} +objj_msgSend(_53,"setNeedsLayout"); +objj_msgSend(_53,"setNeedsDisplay:",YES); +} +return _53; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_56,_57,_58){ +with(_56){ +if(_shadowView){ +var _59=_subviews; +_subviews=objj_msgSend(_subviews,"copy"); +objj_msgSend(_subviews,"removeObjectIdenticalTo:",_shadowView); +} +objj_msgSendSuper({receiver:_56,super_class:objj_getClass("CPImageView").super_class},"encodeWithCoder:",_58); +if(_shadowView){ +_subviews=_59; +} +objj_msgSend(_58,"encodeBool:forKey:",_hasShadow,_51); +objj_msgSend(_58,"encodeInt:forKey:",_imageAlignment,_50); +if(_isEditable){ +objj_msgSend(_58,"encodeBool:forKey:",_isEditable,_52); +} +} +})]); +p;14;CPKeyBinding.jt;9144;@STATIC;1.0;I;21;Foundation/CPObject.jt;9099; +objj_executeFile("Foundation/CPObject.j",NO); +CPStandardKeyBindings={"@.":"cancelOperation:","^a":"moveToBeginningOfParagraph:","^$a":"moveToBeginningOfParagraphAndModifySelection:","^b":"moveBackward:","^$b":"moveBackwardAndModifySelection:","^~b":"moveWordBackward:","^~$b":"moveWordBackwardAndModifySelection:","^d":"deleteForward:","^e":"moveToEndOfParagraph:","^$e":"moveToEndOfParagraphAndModifySelection:","^f":"moveForward:","^$f":"moveForwardAndModifySelection:","^~f":"moveWordForward:","^~$f":"moveWordForwardAndModifySelection:","^h":"deleteBackward:","^k":"deleteToEndOfParagraph:","^l":"centerSelectionInVisibleArea:","^n":"moveDown:","^$n":"moveDownAndModifySelection:","^o":["insertNewlineIgnoringFieldEditor:","moveBackward:"],"^p":"moveUp:","^$p":"moveUpAndModifySelection:","^t":"transpose:","^v":"pageDown:","^$v":"pageDownAndModifySelection:","^y":"yank:"}; +CPStandardKeyBindings[CPNewlineCharacter]="insertNewline:"; +CPStandardKeyBindings[CPCarriageReturnCharacter]="insertNewline:"; +CPStandardKeyBindings[CPEnterCharacter]="insertNewline:"; +CPStandardKeyBindings["~"+CPNewlineCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~"+CPCarriageReturnCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~"+CPEnterCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["^"+CPNewlineCharacter]="insertLineBreak:"; +CPStandardKeyBindings["^"+CPCarriageReturnCharacter]="insertLineBreak:"; +CPStandardKeyBindings["^"+CPEnterCharacter]="insertLineBreak:"; +CPStandardKeyBindings[CPBackspaceCharacter]="deleteBackward:"; +CPStandardKeyBindings["~"+CPBackspaceCharacter]="deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteCharacter]="deleteBackward:"; +CPStandardKeyBindings["@"+CPDeleteCharacter]="deleteToBeginningOfLine:"; +CPStandardKeyBindings["~"+CPDeleteCharacter]="deleteWordBackward:"; +CPStandardKeyBindings["^"+CPDeleteCharacter]="deleteBackwardByDecomposingPreviousCharacter:"; +CPStandardKeyBindings["^~"+CPDeleteCharacter]="deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteFunctionKey]="deleteForward:"; +CPStandardKeyBindings["~"+CPDeleteFunctionKey]="deleteWordForward:"; +CPStandardKeyBindings[CPTabCharacter]="insertTab:"; +CPStandardKeyBindings["~"+CPTabCharacter]="insertTabIgnoringFieldEditor:"; +CPStandardKeyBindings["^"+CPTabCharacter]="selectNextKeyView:"; +CPStandardKeyBindings[CPBackTabCharacter]="insertBacktab:"; +CPStandardKeyBindings["^"+CPBackTabCharacter]="selectPreviousKeyView:"; +CPStandardKeyBindings[CPEscapeFunctionKey]="cancelOperation:"; +CPStandardKeyBindings["~"+CPEscapeFunctionKey]="complete:"; +CPStandardKeyBindings[CPF5FunctionKey]="complete:"; +CPStandardKeyBindings[CPLeftArrowFunctionKey]="moveLeft:"; +CPStandardKeyBindings["~"+CPLeftArrowFunctionKey]="moveWordLeft:"; +CPStandardKeyBindings["^"+CPLeftArrowFunctionKey]="moveToLeftEndOfLine:"; +CPStandardKeyBindings["@"+CPLeftArrowFunctionKey]="moveToLeftEndOfLine:"; +CPStandardKeyBindings["$"+CPLeftArrowFunctionKey]="moveLeftAndModifySelection:"; +CPStandardKeyBindings["$~"+CPLeftArrowFunctionKey]="moveWordLeftAndModifySelection:"; +CPStandardKeyBindings["$^"+CPLeftArrowFunctionKey]="moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@"+CPLeftArrowFunctionKey]="moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^"+CPLeftArrowFunctionKey]="makeBaseWritingDirectionRightToLeft:"; +CPStandardKeyBindings["@^~"+CPLeftArrowFunctionKey]="makeTextWritingDirectionRightToLeft:"; +CPStandardKeyBindings[CPRightArrowFunctionKey]="moveRight:"; +CPStandardKeyBindings["~"+CPRightArrowFunctionKey]="moveWordRight:"; +CPStandardKeyBindings["^"+CPRightArrowFunctionKey]="moveToRightEndOfLine:"; +CPStandardKeyBindings["@"+CPRightArrowFunctionKey]="moveToRightEndOfLine:"; +CPStandardKeyBindings["$"+CPRightArrowFunctionKey]="moveRightAndModifySelection:"; +CPStandardKeyBindings["$~"+CPRightArrowFunctionKey]="moveWordRightAndModifySelection:"; +CPStandardKeyBindings["$^"+CPRightArrowFunctionKey]="moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@"+CPRightArrowFunctionKey]="moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^"+CPRightArrowFunctionKey]="makeBaseWritingDirectionLeftToRight:"; +CPStandardKeyBindings["@^~"+CPRightArrowFunctionKey]="makeTextWritingDirectionLeftToRight:"; +CPStandardKeyBindings[CPUpArrowFunctionKey]="moveUp:"; +CPStandardKeyBindings["~"+CPUpArrowFunctionKey]=["moveBackward:","moveToBeginningOfParagraph:"]; +CPStandardKeyBindings["^"+CPUpArrowFunctionKey]="scrollPageUp:"; +CPStandardKeyBindings["@"+CPUpArrowFunctionKey]="moveToBeginningOfDocument:"; +CPStandardKeyBindings["$"+CPUpArrowFunctionKey]="moveUpAndModifySelection:"; +CPStandardKeyBindings["$~"+CPUpArrowFunctionKey]="moveParagraphBackwardAndModifySelection:"; +CPStandardKeyBindings["$@"+CPUpArrowFunctionKey]="moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPDownArrowFunctionKey]="moveDown:"; +CPStandardKeyBindings["~"+CPDownArrowFunctionKey]=["moveForward:","moveToEndOfParagraph:"]; +CPStandardKeyBindings["^"+CPDownArrowFunctionKey]="scrollPageDown:"; +CPStandardKeyBindings["@"+CPDownArrowFunctionKey]="moveToEndOfDocument:"; +CPStandardKeyBindings["$"+CPDownArrowFunctionKey]="moveDownAndModifySelection:"; +CPStandardKeyBindings["$~"+CPDownArrowFunctionKey]="moveParagraphForwardAndModifySelection:"; +CPStandardKeyBindings["$@"+CPDownArrowFunctionKey]="moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings["@^"+CPDownArrowFunctionKey]="makeBaseWritingDirectionNatural:"; +CPStandardKeyBindings["@^~"+CPDownArrowFunctionKey]="makeTextWritingDirectionNatural:"; +CPStandardKeyBindings[CPHomeFunctionKey]="scrollToBeginningOfDocument:"; +CPStandardKeyBindings["$"+CPHomeFunctionKey]="moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPEndFunctionKey]="scrollToEndOfDocument:"; +CPStandardKeyBindings["$"+CPEndFunctionKey]="moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPPageUpFunctionKey]="scrollPageUp:"; +CPStandardKeyBindings["~"+CPPageUpFunctionKey]="pageUp:"; +CPStandardKeyBindings["$"+CPPageUpFunctionKey]="pageUpAndModifySelection:"; +CPStandardKeyBindings[CPPageDownFunctionKey]="scrollPageDown:"; +CPStandardKeyBindings["~"+CPPageDownFunctionKey]="pageDown:"; +CPStandardKeyBindings["$"+CPPageDownFunctionKey]="pageDownAndModifySelection:"; +var _1={}; +var _2=objj_allocateClassPair(CPObject,"CPKeyBinding"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_key"),new objj_ivar("_modifierFlags"),new objj_ivar("_selectors"),new objj_ivar("_cacheName")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithKey:modifierFlags:selectors:"),function(_4,_5,_6,_7,_8){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPKeyBinding").super_class},"init"); +if(_4){ +_key=_6; +_modifierFlags=_7; +_selectors=_8; +var _9=[]; +if(_modifierFlags&CPCommandKeyMask){ +_9.push("@"); +} +if(_modifierFlags&CPControlKeyMask){ +_9.push("^"); +} +if(_modifierFlags&CPAlternateKeyMask){ +_9.push("~"); +} +if(_modifierFlags&CPShiftKeyMask){ +_9.push("$"); +} +_9.push(_key); +_cacheName=_9.join(""); +} +return _4; +} +}),new objj_method(sel_getUid("key"),function(_a,_b){ +with(_a){ +return _key; +} +}),new objj_method(sel_getUid("modifierFlags"),function(_c,_d){ +with(_c){ +return _modifierFlags; +} +}),new objj_method(sel_getUid("selectors"),function(_e,_f){ +with(_e){ +return _selectors; +} +}),new objj_method(sel_getUid("_cacheName"),function(_10,_11){ +with(_10){ +return _cacheName; +} +}),new objj_method(sel_getUid("isEqual:"),function(_12,_13,rhs){ +with(_12){ +return _key===objj_msgSend(rhs,"key")&&_modifierFlags===objj_msgSend(rhs,"modifierFlags"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_14,_15){ +with(_14){ +if(objj_msgSend(_14,"class")!==CPKeyBinding){ +return; +} +objj_msgSend(_14,"createKeyBindingsFromJSObject:",CPStandardKeyBindings); +} +}),new objj_method(sel_getUid("createKeyBindingsFromJSObject:"),function(_16,_17,_18){ +with(_16){ +var _19; +for(_19 in _18){ +var _1a=_19.split(""),_1b=(objj_msgSend(_1a,"containsObject:","$")?CPShiftKeyMask:0)|(objj_msgSend(_1a,"containsObject:","^")?CPControlKeyMask:0)|(objj_msgSend(_1a,"containsObject:","~")?CPAlternateKeyMask:0)|(objj_msgSend(_1a,"containsObject:","@")?CPCommandKeyMask:0); +var _1c=_18[_19]; +if(!objj_msgSend(_1c,"isKindOfClass:",CPArray)){ +_1c=[_1c]; +} +var _1d=objj_msgSend(objj_msgSend(_16,"alloc"),"initWithKey:modifierFlags:selectors:",objj_msgSend(_1a,"lastObject"),_1b,_1c); +objj_msgSend(_16,"cacheKeyBinding:",_1d); +} +} +}),new objj_method(sel_getUid("cacheKeyBinding:"),function(_1e,_1f,_20){ +with(_1e){ +if(!_20){ +return; +} +_1[objj_msgSend(_20,"_cacheName")]=_20; +} +}),new objj_method(sel_getUid("keyBindingForKey:modifierFlags:"),function(_21,_22,_23,_24){ +with(_21){ +var _25=objj_msgSend(objj_msgSend(_21,"alloc"),"initWithKey:modifierFlags:selectors:",_23,_24,nil); +return _1[objj_msgSend(_25,"_cacheName")]; +} +}),new objj_method(sel_getUid("selectorsForKey:modifierFlags:"),function(_26,_27,_28,_29){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"keyBindingForKey:modifierFlags:",_28,_29),"selectors"); +} +})]); +p;19;CPKeyValueBinding.jt;12807;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;31;Foundation/CPValueTransformer.jt;12670; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPValueTransformer.j",NO); +var _1=objj_msgSend(CPDictionary,"new"),_2=objj_msgSend(CPDictionary,"new"); +var _3=0,_4=1; +var _5=objj_allocateClassPair(CPObject,"CPKeyValueBinding"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_info"),new objj_ivar("_source")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithBinding:name:to:keyPath:options:from:"),function(_7,_8,_9,_a,_b,_c,_d,_e){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPKeyValueBinding").super_class},"init"); +if(_7){ +_source=_e; +_info=objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_b,_c],[CPObservedObjectKey,CPObservedKeyPathKey]); +if(_d){ +objj_msgSend(_info,"setObject:forKey:",_d,CPOptionsKey); +} +objj_msgSend(_b,"addObserver:forKeyPath:options:context:",_7,_c,CPKeyValueObservingOptionNew,_9); +var _f=objj_msgSend(_2,"objectForKey:",objj_msgSend(_source,"hash")); +if(!_f){ +_f=objj_msgSend(CPDictionary,"new"); +objj_msgSend(_2,"setObject:forKey:",_f,objj_msgSend(_source,"hash")); +} +objj_msgSend(_f,"setObject:forKey:",_7,_a); +objj_msgSend(_7,"setValueFor:",_9); +} +return _7; +} +}),new objj_method(sel_getUid("setValueFor:"),function(_10,_11,_12){ +with(_10){ +var _13=objj_msgSend(_info,"objectForKey:",CPObservedObjectKey),_14=objj_msgSend(_info,"objectForKey:",CPObservedKeyPathKey),_15=objj_msgSend(_info,"objectForKey:",CPOptionsKey),_16=objj_msgSend(_13,"valueForKeyPath:",_14); +_16=objj_msgSend(_10,"transformValue:withOptions:",_16,_15); +objj_msgSend(_source,"setValue:forKey:",_16,_12); +} +}),new objj_method(sel_getUid("reverseSetValueFor:"),function(_17,_18,_19){ +with(_17){ +var _1a=objj_msgSend(_info,"objectForKey:",CPObservedObjectKey),_1b=objj_msgSend(_info,"objectForKey:",CPObservedKeyPathKey),_1c=objj_msgSend(_info,"objectForKey:",CPOptionsKey),_1d=objj_msgSend(_source,"valueForKeyPath:",_19); +_1d=objj_msgSend(_17,"reverseTransformValue:withOptions:",_1d,_1c); +objj_msgSend(_1a,"setValue:forKeyPath:",_1d,_1b); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_1e,_1f,_20,_21,_22,_23){ +with(_1e){ +if(!_22){ +return; +} +objj_msgSend(_1e,"setValueFor:",_23); +} +}),new objj_method(sel_getUid("transformValue:withOptions:"),function(_24,_25,_26,_27){ +with(_24){ +var _28,_29,_2a; +var _28=objj_msgSend(_27,"objectForKey:",CPValueTransformerNameBindingOption),_29; +if(_28){ +_29=objj_msgSend(CPValueTransformer,"valueTransformerForName:",_28); +if(!_29){ +var _2b=CPClassFromString(_28); +if(_2b){ +_29=objj_msgSend(objj_msgSend(_2b,"alloc"),"init"); +objj_msgSend(_2b,"setValueTransformer:forName:",_29,_28); +} +} +}else{ +_29=objj_msgSend(_27,"objectForKey:",CPValueTransformerBindingOption); +} +if(_29){ +_26=objj_msgSend(_29,"transformedValue:",_26); +} +switch(_26){ +case CPMultipleValuesMarker: +return objj_msgSend(_27,"objectForKey:",CPMultipleValuesPlaceholderBindingOption)||"Multiple Values"; +case CPNoSelectionMarker: +return objj_msgSend(_27,"objectForKey:",CPNoSelectionPlaceholderBindingOption)||"No Selection"; +case CPNotApplicableMarker: +if(objj_msgSend(_27,"objectForKey:",CPRaisesForNotApplicableKeysBindingOption)){ +objj_msgSend(CPException,"raise:reason:",CPGenericException,"can't transform non applicable key on: "+_source+" value: "+_26); +} +return objj_msgSend(_27,"objectForKey:",CPNotApplicablePlaceholderBindingOption)||"Not Applicable"; +case nil: +case undefined: +return objj_msgSend(_27,"objectForKey:",CPNullPlaceholderBindingOption)||nil; +} +return _26; +} +}),new objj_method(sel_getUid("reverseTransformValue:withOptions:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +var _30=objj_msgSend(_2f,"objectForKey:",CPValueTransformerNameBindingOption),_31; +if(_30){ +_31=objj_msgSend(CPValueTransformer,"valueTransformerForName:",_30); +}else{ +_31=objj_msgSend(_2f,"objectForKey:",CPValueTransformerBindingOption); +} +if(_31&&objj_msgSend(objj_msgSend(_31,"class"),"allowsReverseTransformation")){ +_2e=objj_msgSend(_31,"transformedValue:",_2e); +} +return _2e; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("exposeBinding:forClass:"),function(_32,_33,_34,_35){ +with(_32){ +var _36=objj_msgSend(_1,"objectForKey:",objj_msgSend(_35,"hash")); +if(!_36){ +_36=[]; +objj_msgSend(_1,"setObject:forKey:",_36,objj_msgSend(_35,"hash")); +} +_36.push(_34); +} +}),new objj_method(sel_getUid("exposedBindingsForClass:"),function(_37,_38,_39){ +with(_37){ +return objj_msgSend(objj_msgSend(_1,"objectForKey:",objj_msgSend(_39,"hash")),"copy"); +} +}),new objj_method(sel_getUid("getBinding:forObject:"),function(_3a,_3b,_3c,_3d){ +with(_3a){ +return objj_msgSend(objj_msgSend(_2,"objectForKey:",objj_msgSend(_3d,"hash")),"objectForKey:",_3c); +} +}),new objj_method(sel_getUid("infoForBinding:forObject:"),function(_3e,_3f,_40,_41){ +with(_3e){ +var _42=objj_msgSend(_3e,"getBinding:forObject:",_40,_41); +if(_42){ +return _42._info; +} +return nil; +} +}),new objj_method(sel_getUid("allBindingsForObject:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_2,"objectForKey:",objj_msgSend(_45,"hash")); +} +}),new objj_method(sel_getUid("unbind:forObject:"),function(_46,_47,_48,_49){ +with(_46){ +var _4a=objj_msgSend(_2,"objectForKey:",objj_msgSend(_49,"hash")); +if(!_4a){ +return; +} +var _4b=objj_msgSend(_4a,"objectForKey:",_48); +if(!_4b){ +return; +} +var _4c=_4b._info,_4d=objj_msgSend(_4c,"objectForKey:",CPObservedObjectKey),_4e=objj_msgSend(_4c,"objectForKey:",CPObservedKeyPathKey); +objj_msgSend(_4d,"removeObserver:forKeyPath:",_4b,_4e); +objj_msgSend(_4a,"removeObjectForKey:",_48); +} +}),new objj_method(sel_getUid("unbindAllForObject:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSend(_2,"objectForKey:",objj_msgSend(_51,"hash")); +if(!_52){ +return; +} +var _53=objj_msgSend(_52,"allKeys"),_54=_53.length; +while(_54--){ +objj_msgSend(_51,"unbind:",objj_msgSend(_52,"objectForKey:",_53[_54])); +} +objj_msgSend(_2,"removeObjectForKey:",objj_msgSend(_51,"hash")); +} +})]); +var _5=objj_getClass("CPObject"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("exposedBindings"),function(_55,_56){ +with(_55){ +var _57=[],_58=objj_msgSend(_55,"class"); +while(_58){ +var _59=objj_msgSend(CPKeyValueBinding,"exposedBindingsForClass:",_58); +if(_59){ +objj_msgSend(_57,"addObjectsFromArray:",_59); +} +_58=objj_msgSend(_58,"superclass"); +} +return _57; +} +}),new objj_method(sel_getUid("valueClassForBinding:"),function(_5a,_5b,_5c){ +with(_5a){ +return objj_msgSend(CPString,"class"); +} +}),new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"),function(_5d,_5e,_5f,_60,_61,_62){ +with(_5d){ +if(!_60||!_61){ +return CPLog.error("Invalid object or path on "+_5d+" for "+_5f); +} +objj_msgSend(_5d,"unbind:",_5f); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"alloc"),"initWithBinding:name:to:keyPath:options:from:",objj_msgSend(_5d,"_replacementKeyPathForBinding:",_5f),_5f,_60,_61,_62,_5d); +} +}),new objj_method(sel_getUid("infoForBinding:"),function(_63,_64,_65){ +with(_63){ +return objj_msgSend(CPKeyValueBinding,"infoForBinding:forObject:",_65,_63); +} +}),new objj_method(sel_getUid("unbind:"),function(_66,_67,_68){ +with(_66){ +objj_msgSend(CPKeyValueBinding,"unbind:forObject:",_68,_66); +} +}),new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(_69,_6a,_6b){ +with(_69){ +return _6b; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("exposeBinding:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(CPKeyValueBinding,"exposeBinding:forClass:",_6e,objj_msgSend(_6c,"class")); +} +})]); +var _5=objj_allocateClassPair(CPKeyValueBinding,"_CPKeyValueOrBinding"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setValueFor:"),function(_6f,_70,_71){ +with(_6f){ +var _72=objj_msgSend(_2,"valueForKey:",objj_msgSend(_source,"hash")); +if(!_72){ +return; +} +objj_msgSend(_source,"setValue:forKey:",_73(_71,_72,_4),_71); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_74,_75,_76,_77,_78,_79){ +with(_74){ +objj_msgSend(_74,"setValueFor:",_79); +} +})]); +var _5=objj_allocateClassPair(CPKeyValueBinding,"_CPKeyValueAndBinding"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setValueFor:"),function(_7a,_7b,_7c){ +with(_7a){ +var _7d=objj_msgSend(_2,"objectForKey:",objj_msgSend(_source,"hash")); +if(!_7d){ +return; +} +objj_msgSend(_source,"setValue:forKey:",_73(_7c,_7d,_3),_7c); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_7e,_7f,_80,_81,_82,_83){ +with(_7e){ +objj_msgSend(_7e,"setValueFor:",_83); +} +})]); +var _73=_73=function(key,_84,_85){ +var _86=key,_87,_88=1; +while(_87=objj_msgSend(_84,"objectForKey:",_86)){ +var _89=_87._info,_8a=objj_msgSend(_89,"objectForKey:",CPObservedObjectKey),_8b=objj_msgSend(_89,"objectForKey:",CPObservedKeyPathKey),_8c=objj_msgSend(_89,"objectForKey:",CPOptionsKey); +var _8d=objj_msgSend(_87,"transformValue:withOptions:",objj_msgSend(_8a,"valueForKeyPath:",_8b),_8c); +if(_8d==_85){ +return _85; +} +_86=objj_msgSend(CPString,"stringWithFormat:","%@%i",key,++_88); +} +return !_85; +}; +var _8e=_8e=function(_8f,_90,_91){ +var _92=objj_msgSend(_91,"objectForKey:",_8f),_93=_92._info,_94=objj_msgSend(_93,"objectForKey:",CPObservedObjectKey),_95=objj_msgSend(_93,"objectForKey:",CPObservedKeyPathKey),_96=objj_msgSend(_93,"objectForKey:",CPOptionsKey),_97=objj_msgSend(_94,"valueForKeyPath:",_95),_98=objj_msgSend(_96,"objectForKey:",CPSelectorNameBindingOption); +if(!_97||!_98){ +return; +} +var _99=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",objj_msgSend(_97,"methodSignatureForSelector:",_98)); +objj_msgSend(_99,"setSelector:",_98); +var _9a=_90; +count=1; +while(_92=objj_msgSend(_91,"objectForKey:",_9a)){ +_93=_92._info; +_95=objj_msgSend(_93,"objectForKey:",CPObserverKeyPathKey); +_94=objj_msgSend(objj_msgSend(_93,"objectForKey:",CPObservedObjectKey),"valueForKeyPath:",_95); +if(_94){ +objj_msgSend(_99,"setArgument:atIndex:",_94,++count); +} +_9a=objj_msgSend(CPString,"stringWithFormat:","%@%i",_90,count); +} +objj_msgSend(_99,"invoke"); +}; +CPObservedObjectKey="CPObservedObjectKey"; +CPObservedKeyPathKey="CPObservedKeyPathKey"; +CPOptionsKey="CPOptionsKey"; +CPMultipleValuesMarker="CPMultipleValuesMarker"; +CPNoSelectionMarker="CPNoSelectionMarker"; +CPNotApplicableMarker="CPNotApplicableMarker"; +CPAlignmentBinding="CPAlignmentBinding"; +CPEditableBinding="CPEditableBinding"; +CPEnabledBinding="CPEnabledBinding"; +CPFontBinding="CPFontBinding"; +CPHiddenBinding="CPHiddenBinding"; +CPSelectedIndexBinding="CPSelectedIndexBinding"; +CPTextColorBinding="CPTextColorBinding"; +CPToolTipBinding="CPToolTipBinding"; +CPValueBinding="value"; +CPAllowsEditingMultipleValuesSelectionBindingOption="CPAllowsEditingMultipleValuesSelectionBindingOption"; +CPAllowsNullArgumentBindingOption="CPAllowsNullArgumentBindingOption"; +CPConditionallySetsEditableBindingOption="CPConditionallySetsEditableBindingOption"; +CPConditionallySetsEnabledBindingOption="CPConditionallySetsEnabledBindingOption"; +CPConditionallySetsHiddenBindingOption="CPConditionallySetsHiddenBindingOption"; +CPContinuouslyUpdatesValueBindingOption="CPContinuouslyUpdatesValueBindingOption"; +CPCreatesSortDescriptorBindingOption="CPCreatesSortDescriptorBindingOption"; +CPDeletesObjectsOnRemoveBindingsOption="CPDeletesObjectsOnRemoveBindingsOption"; +CPDisplayNameBindingOption="CPDisplayNameBindingOption"; +CPDisplayPatternBindingOption="CPDisplayPatternBindingOption"; +CPHandlesContentAsCompoundValueBindingOption="CPHandlesContentAsCompoundValueBindingOption"; +CPInsertsNullPlaceholderBindingOption="CPInsertsNullPlaceholderBindingOption"; +CPInvokesSeparatelyWithArrayObjectsBindingOption="CPInvokesSeparatelyWithArrayObjectsBindingOption"; +CPMultipleValuesPlaceholderBindingOption="CPMultipleValuesPlaceholderBindingOption"; +CPNoSelectionPlaceholderBindingOption="CPNoSelectionPlaceholderBindingOption"; +CPNotApplicablePlaceholderBindingOption="CPNotApplicablePlaceholderBindingOption"; +CPNullPlaceholderBindingOption="CPNullPlaceholderBindingOption"; +CPPredicateFormatBindingOption="CPPredicateFormatBindingOption"; +CPRaisesForNotApplicableKeysBindingOption="CPRaisesForNotApplicableKeysBindingOption"; +CPSelectorNameBindingOption="CPSelectorNameBindingOption"; +CPSelectsAllWhenSettingContentBindingOption="CPSelectsAllWhenSettingContentBindingOption"; +CPValidatesImmediatelyBindingOption="CPValidatesImmediatelyBindingOption"; +CPValueTransformerNameBindingOption="CPValueTransformerNameBindingOption"; +CPValueTransformerBindingOption="CPValueTransformerBindingOption"; +p;20;CPObjectController.jt;18248;@STATIC;1.0;I;25;Foundation/CPDictionary.ji;14;CPController.jt;18179; +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("CPController.j",YES); +var _1=objj_allocateClassPair(CPController,"CPObjectController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentObject"),new objj_ivar("_selection"),new objj_ivar("_objectClass"),new objj_ivar("_isEditable"),new objj_ivar("_automaticallyPreparesContent"),new objj_ivar("_observedKeys")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithContent:",nil); +} +}),new objj_method(sel_getUid("initWithContent:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPObjectController").super_class},"init")){ +objj_msgSend(_5,"setContent:",_7); +objj_msgSend(_5,"setEditable:",YES); +objj_msgSend(_5,"setObjectClass:",objj_msgSend(CPMutableDictionary,"class")); +_observedKeys=objj_msgSend(objj_msgSend(CPCountedSet,"alloc"),"init"); +} +return _5; +} +}),new objj_method(sel_getUid("content"),function(_8,_9){ +with(_8){ +return _contentObject; +} +}),new objj_method(sel_getUid("setContent:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_a,"willChangeValueForKey:","contentObject"); +objj_msgSend(_a,"_selectionWillChange"); +_contentObject=_c; +objj_msgSend(_a,"didChangeValueForKey:","contentObject"); +objj_msgSend(_a,"_selectionDidChange"); +} +}),new objj_method(sel_getUid("_setContentObject:"),function(_d,_e,_f){ +with(_d){ +objj_msgSend(_d,"setContent:",_f); +} +}),new objj_method(sel_getUid("_contentObject"),function(_10,_11){ +with(_10){ +return objj_msgSend(_10,"content"); +} +}),new objj_method(sel_getUid("setAutomaticallyPreparesContent:"),function(_12,_13,_14){ +with(_12){ +_automaticallyPreparesContent=_14; +} +}),new objj_method(sel_getUid("automaticallyPreparesContent"),function(_15,_16){ +with(_15){ +return _automaticallyPreparesContent; +} +}),new objj_method(sel_getUid("prepareContent"),function(_17,_18){ +with(_17){ +objj_msgSend(_17,"setContent:",objj_msgSend(_17,"newObject")); +} +}),new objj_method(sel_getUid("setObjectClass:"),function(_19,_1a,_1b){ +with(_19){ +_objectClass=_1b; +} +}),new objj_method(sel_getUid("objectClass"),function(_1c,_1d){ +with(_1c){ +return _objectClass; +} +}),new objj_method(sel_getUid("newObject"),function(_1e,_1f){ +with(_1e){ +return objj_msgSend(objj_msgSend(objj_msgSend(_1e,"objectClass"),"alloc"),"init"); +} +}),new objj_method(sel_getUid("addObject:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(_20,"setContent:",_22); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","contentObject",_20),"reverseSetValueFor:","contentObject"); +} +}),new objj_method(sel_getUid("removeObject:"),function(_23,_24,_25){ +with(_23){ +if(objj_msgSend(_23,"content")===_25){ +objj_msgSend(_23,"setContent:",nil); +} +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","contentObject",_23),"reverseSetValueFor:","contentObject"); +} +}),new objj_method(sel_getUid("add:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(_26,"addObject:",objj_msgSend(_26,"newObject")); +} +}),new objj_method(sel_getUid("canAdd"),function(_29,_2a){ +with(_29){ +return objj_msgSend(_29,"isEditable"); +} +}),new objj_method(sel_getUid("remove:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"removeObject:",objj_msgSend(_2b,"content")); +} +}),new objj_method(sel_getUid("canRemove"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_2e,"isEditable")&&objj_msgSend(objj_msgSend(_2e,"selectedObjects"),"count"); +} +}),new objj_method(sel_getUid("setEditable:"),function(_30,_31,_32){ +with(_30){ +_isEditable=_32; +} +}),new objj_method(sel_getUid("isEditable"),function(_33,_34){ +with(_33){ +return _isEditable; +} +}),new objj_method(sel_getUid("selectedObjects"),function(_35,_36){ +with(_35){ +return objj_msgSend(objj_msgSend(_CPObservableArray,"alloc"),"initWithObjects:count:",[_contentObject],1); +} +}),new objj_method(sel_getUid("selection"),function(_37,_38){ +with(_37){ +return _selection; +} +}),new objj_method(sel_getUid("_selectionWillChange"),function(_39,_3a){ +with(_39){ +objj_msgSend(_selection,"controllerWillChange"); +objj_msgSend(_39,"willChangeValueForKey:","selection"); +} +}),new objj_method(sel_getUid("_selectionDidChange"),function(_3b,_3c){ +with(_3b){ +if(_selection===undefined||_selection===nil){ +_selection=objj_msgSend(objj_msgSend(CPControllerSelectionProxy,"alloc"),"initWithController:",_3b); +} +objj_msgSend(_selection,"controllerDidChange"); +objj_msgSend(_3b,"didChangeValueForKey:","selection"); +} +}),new objj_method(sel_getUid("observedKeys"),function(_3d,_3e){ +with(_3d){ +return _observedKeys; +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_3f,_40,_41,_42,_43,_44){ +with(_3f){ +objj_msgSend(_observedKeys,"addObject:",_42); +objj_msgSendSuper({receiver:_3f,super_class:objj_getClass("CPObjectController").super_class},"addObserver:forKeyPath:options:context:",_41,_42,_43,_44); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_45,_46,_47,_48){ +with(_45){ +objj_msgSend(_observedKeys,"removeObject:",_48); +objj_msgSendSuper({receiver:_45,super_class:objj_getClass("CPObjectController").super_class},"removeObserver:forKeyPath:",_47,_48); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("initialize"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"exposeBinding:","editable"); +objj_msgSend(_49,"exposeBinding:","contentObject"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingContentObject"),function(_4b,_4c){ +with(_4b){ +return objj_msgSend(CPSet,"setWithObjects:","content"); +} +}),new objj_method(sel_getUid("automaticallyNotifiesObserversForKey:"),function(_4d,_4e,_4f){ +with(_4d){ +if(_4f==="contentObject"){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanAdd"),function(_50,_51){ +with(_50){ +return objj_msgSend(CPSet,"setWithObject:","editable"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsert"),function(_52,_53){ +with(_52){ +return objj_msgSend(CPSet,"setWithObject:","editable"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"),function(_54,_55){ +with(_54){ +return objj_msgSend(CPSet,"setWithObjects:","editable","selection"); +} +})]); +var _56="CPObjectControllerObjectClassNameKey",_57="CPObjectControllerIsEditableKey",_58="CPObjectControllerAutomaticallyPreparesContentKey"; +var _1=objj_getClass("CPObjectController"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObjectController\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_59,_5a,_5b){ +with(_59){ +_59=objj_msgSendSuper({receiver:_59,super_class:objj_getClass("CPObjectController").super_class},"init"); +if(_59){ +var _5c=objj_msgSend(_5b,"decodeObjectForKey:",_56),_5d=CPClassFromString(_5c); +objj_msgSend(_59,"setObjectClass:",_5d); +objj_msgSend(_59,"setEditable:",objj_msgSend(_5b,"decodeBoolForKey:",_57)); +objj_msgSend(_59,"setAutomaticallyPreparesContent:",objj_msgSend(_5b,"decodeBoolForKey:",_58)||NO); +_observedKeys=objj_msgSend(objj_msgSend(CPCountedSet,"alloc"),"init"); +} +return _59; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_5e,_5f,_60){ +with(_5e){ +objj_msgSend(_60,"encodeObject:forKey:",CPStringFromClass(objectClass),_56); +objj_msgSend(_60,"encodeObject:forKey:",objj_msgSend(_5e,"isEditable"),_57); +if(!objj_msgSend(_5e,"automaticallyPreparesContent")){ +objj_msgSend(_60,"encodeBOOL:forKey:",YES,_58); +} +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPObservationProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath"),new objj_ivar("_observer"),new objj_ivar("_object"),new objj_ivar("_notifyObject"),new objj_ivar("_context"),new objj_ivar("_options")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKeyPath:observer:object:"),function(_61,_62,_63,_64,_65){ +with(_61){ +if(_61=objj_msgSendSuper({receiver:_61,super_class:objj_getClass("_CPObservationProxy").super_class},"init")){ +_keyPath=_63; +_observer=_64; +_object=_65; +} +return _61; +} +}),new objj_method(sel_getUid("observer"),function(_66,_67){ +with(_66){ +return _observer; +} +}),new objj_method(sel_getUid("keyPath"),function(_68,_69){ +with(_68){ +return _keyPath; +} +}),new objj_method(sel_getUid("context"),function(_6a,_6b){ +with(_6a){ +return _context; +} +}),new objj_method(sel_getUid("options"),function(_6c,_6d){ +with(_6c){ +return _options; +} +}),new objj_method(sel_getUid("setNotifyObject:"),function(_6e,_6f,_70){ +with(_6e){ +_notifyObject=_70; +} +}),new objj_method(sel_getUid("isEqual:"),function(_71,_72,_73){ +with(_71){ +if(objj_msgSend(_73,"class")===objj_msgSend(_71,"class")){ +if(_73._observer===_observer&&objj_msgSend(_73._keyPath,"isEqual:",_keyPath)&&objj_msgSend(_73._object,"isEqual:",_object)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_74,_75,_76,_77,_78,_79){ +with(_74){ +if(_notifyObject){ +objj_msgSend(_object,"observeValueForKeyPath:ofObject:change:context:",_keyPath,_object,_78,_79); +} +objj_msgSend(_observer,"observeValueForKeyPath:ofObject:change:context:",_keyPath,_object,_78,_79); +} +}),new objj_method(sel_getUid("description"),function(_7a,_7b){ +with(_7a){ +return objj_msgSendSuper({receiver:_7a,super_class:objj_getClass("_CPObservationProxy").super_class},"description")+objj_msgSend(CPString,"stringWithFormat:","observation proxy for %@ on key path %@",_observer,_keyPath); +} +})]); +var _1=objj_allocateClassPair(CPMutableArray,"_CPObservableArray"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_observationProxies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("description"),function(_7c,_7d){ +with(_7c){ +return "<_CPObservableArray: "+objj_msgSendSuper({receiver:_7c,super_class:objj_getClass("_CPObservableArray").super_class},"description")+" >"; +} +}),new objj_method(sel_getUid("initWithArray:"),function(_7e,_7f,_80){ +with(_7e){ +if(_7e=objj_msgSendSuper({receiver:_7e,super_class:objj_getClass("_CPObservableArray").super_class},"initWithArray:",_80)){ +_observationProxies=[]; +} +return _7e; +} +}),new objj_method(sel_getUid("initWithObjects:count:"),function(_81,_82,_83,_84){ +with(_81){ +if(_81=objj_msgSendSuper({receiver:_81,super_class:objj_getClass("_CPObservableArray").super_class},"initWithObjects:count:",_83,_84)){ +_observationProxies=[]; +} +return _81; +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_85,_86,_87,_88,_89,_8a){ +with(_85){ +if(_88.indexOf("@")===0){ +var _8b=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_88,_87,_85); +_8b._options=_89; +_8b._context=_8a; +objj_msgSend(_observationProxies,"addObject:",_8b); +var _8c=_88.indexOf("."),_8d=_88.substring(_8c+1),_8e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_85,"count"))); +objj_msgSend(_85,"addObserver:toObjectsAtIndexes:forKeyPath:options:context:",_8b,_8e,_8d,_89,_8a); +}else{ +var _8e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_85,"count"))); +objj_msgSend(_85,"addObserver:toObjectsAtIndexes:forKeyPath:options:context:",_87,_8e,_88,_89,_8a); +} +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_92.indexOf("@")===0){ +var _93=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_92,_91,_8f),_94=objj_msgSend(_observationProxies,"indexOfObject:",_93); +_93=objj_msgSend(_observationProxies,"objectAtIndex:",_94); +var _95=_92.indexOf("."),_96=_92.substring(_95+1),_97=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_8f,"count"))); +objj_msgSend(_8f,"removeObserver:fromObjectsAtIndexes:forKeyPath:",_93,_97,_96); +}else{ +var _97=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_8f,"count"))); +objj_msgSend(_8f,"removeObserver:fromObjectsAtIndexes:forKeyPath:",_91,_97,_92); +} +} +}),new objj_method(sel_getUid("insertObject:atIndex:"),function(_98,_99,_9a,_9b){ +with(_98){ +for(var i=0,_9c=objj_msgSend(_observationProxies,"count");i<_9c;i++){ +var _9d=objj_msgSend(_observationProxies,"objectAtIndex:",i),_9e=objj_msgSend(_9d,"keyPath"),_9f=_9e.indexOf(".")===0; +if(_9f){ +objj_msgSend(_98,"willChangeValueForKey:",_9e); +} +objj_msgSend(_9a,"addObserver:forKeyPath:options:context:",_9d,_9e,objj_msgSend(_9d,"options"),objj_msgSend(_9d,"context")); +if(_9f){ +objj_msgSend(_98,"didChangeValueForKey:",_9e); +} +} +objj_msgSendSuper({receiver:_98,super_class:objj_getClass("_CPObservableArray").super_class},"insertObject:atIndex:",_9a,_9b); +} +}),new objj_method(sel_getUid("removeObjectAtIndex:"),function(_a0,_a1,_a2){ +with(_a0){ +for(var i=0,_a3=objj_msgSend(_observationProxies,"count");i<_a3;i++){ +var _a4=objj_msgSend(_observationProxies,"objectAtIndex:",i),_a5=objj_msgSend(_a4,"keyPath"),_a6=_a5.indexOf(".")===0; +if(_a6){ +objj_msgSend(_a0,"willChangeValueForKey:",_a5); +} +objj_msgSend(anObject,"removeObserver:forKeyPath:",_a4,_a5); +if(_a6){ +objj_msgSend(_a0,"didChangeValueForKey:",_a5); +} +} +objj_msgSendSuper({receiver:_a0,super_class:objj_getClass("_CPObservableArray").super_class},"removeObjectAtIndex:",_a2); +} +}),new objj_method(sel_getUid("objectsAtIndexes:"),function(_a7,_a8,_a9){ +with(_a7){ +return objj_msgSend(_CPObservableArray,"arrayWithArray:",objj_msgSendSuper({receiver:_a7,super_class:objj_getClass("_CPObservableArray").super_class},"objectsAtIndexes:",_a9)); +} +}),new objj_method(sel_getUid("addObject:"),function(_aa,_ab,_ac){ +with(_aa){ +objj_msgSend(_aa,"insertObject:atIndex:",_ac,objj_msgSend(_aa,"count")); +} +}),new objj_method(sel_getUid("removeLastObject"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(_ad,"removeObjectAtIndex:",objj_msgSend(_ad,"count")); +} +}),new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"),function(_af,_b0,_b1,_b2){ +with(_af){ +var _b3=objj_msgSend(_af,"objectAtIndex:",_b1); +for(var i=0,_b4=objj_msgSend(_observationProxies,"count");i<_b4;i++){ +var _b5=objj_msgSend(_observationProxies,"objectAtIndex:",i),_b6=objj_msgSend(_b5,"keyPath"),_b7=_b6.indexOf(".")===0; +if(_b7){ +objj_msgSend(_af,"willChangeValueForKey:",_b6); +} +objj_msgSend(_b3,"removeObserver:forKeyPath:",_b5,_b6); +objj_msgSend(_b2,"addObserver:forKeyPath:options:context:",_b5,_b6,objj_msgSend(_b5,"options"),objj_msgSend(_b5,"context")); +if(_b7){ +objj_msgSend(_af,"didChangeValueForKey:",_b6); +} +} +objj_msgSend(_af,"replaceObjectAtIndex:withObject:",_b1,_b2); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_b8,_b9){ +with(_b8){ +var a=[]; +a.isa=_b8; +var _ba=class_copyIvarList(_b8),_bb=_ba.length; +while(_bb--){ +a[ivar_getName(_ba[_bb])]=nil; +} +return a; +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPControllerSelectionProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_controller"),new objj_ivar("_keys"),new objj_ivar("_cachedValues"),new objj_ivar("_observationProxies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithController:"),function(_bc,_bd,_be){ +with(_bc){ +if(_bc=objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPControllerSelectionProxy").super_class},"init")){ +_cachedValues=objj_msgSend(CPDictionary,"dictionary"); +_observationProxies=objj_msgSend(CPArray,"array"); +_controller=_be; +} +return _bc; +} +}),new objj_method(sel_getUid("valueForKey:"),function(_bf,_c0,_c1){ +with(_bf){ +var _c2=objj_msgSend(_cachedValues,"objectForKey:",_c1); +if(_c2!==undefined&&_c2!==nil){ +return _c2; +} +var _c3=objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"valueForKeyPath:",_c1),_c4=objj_msgSend(_c3,"count"); +if(!_c4){ +_c2=CPNoSelectionMarker; +}else{ +if(_c4===1){ +_c2=objj_msgSend(_c3,"objectAtIndex:",0); +}else{ +if(objj_msgSend(_controller,"alwaysUsesMultipleValuesMarker")){ +_c2=CPMultipleValuesMarker; +}else{ +_c2=objj_msgSend(_c3,"objectAtIndex:",0); +for(var i=0,_c4=objj_msgSend(_c3,"count");i<_c4&&_c2!=CPMultipleValuesMarker;i++){ +if(!objj_msgSend(_c2,"isEqual:",objj_msgSend(_c3,"objectAtIndex:",i))){ +_c2=CPMultipleValuesMarker; +} +} +} +} +} +objj_msgSend(_cachedValues,"setValue:forKey:",_c2,_c1); +return _c2; +} +}),new objj_method(sel_getUid("count"),function(_c5,_c6){ +with(_c5){ +return objj_msgSend(_cachedValues,"count"); +} +}),new objj_method(sel_getUid("keyEnumerator"),function(_c7,_c8){ +with(_c7){ +return objj_msgSend(_cachedValues,"keyEnumerator"); +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_c9,_ca,_cb,_cc){ +with(_c9){ +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"setValue:forKey:",_cb,_cc); +} +}),new objj_method(sel_getUid("controllerWillChange"),function(_cd,_ce){ +with(_cd){ +_keys=objj_msgSend(_cachedValues,"allKeys"); +if(!_keys){ +return; +} +for(var i=0,_cf=_keys.length;i<_cf;i++){ +objj_msgSend(_cd,"willChangeValueForKey:",_keys[i]); +} +objj_msgSend(_cachedValues,"removeAllObjects"); +} +}),new objj_method(sel_getUid("controllerDidChange"),function(_d0,_d1){ +with(_d0){ +objj_msgSend(_cachedValues,"removeAllObjects"); +if(!_keys){ +return; +} +for(var i=0,_d2=_keys.length;i<_d2;i++){ +objj_msgSend(_d0,"didChangeValueForKey:",_keys[i]); +} +_keys=nil; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_d3,_d4,_d5,_d6,_d7,_d8){ +with(_d3){ +objj_msgSend(_cachedValues,"removeObjectForKey:",_d5); +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_d9,_da,_db,_dc,_dd,_de){ +with(_d9){ +var _df=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_dc,_db,_d9); +objj_msgSend(_df,"setNotifyObject:",YES); +objj_msgSend(_observationProxies,"addObject:",_df); +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"addObserver:forKeyPath:options:context:",_df,_dc,_dd,_de); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_e0,_e1,_e2,_e3){ +with(_e0){ +var _e4=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_e3,_e2,_e0),_e5=objj_msgSend(_observationProxies,"indexOfObject:",_e4); +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"removeObserver:forKeyPath:",objj_msgSend(_observationProxies,"objectAtIndex:",_e5),_e3); +objj_msgSend(_observationProxies,"removeObjectAtIndex:",_e5); +} +})]); +p;13;CPOpenPanel.jt;2079;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2039; +objj_executeFile("AppKit/CPPanel.j",NO); +var _1=objj_allocateClassPair(CPPanel,"CPOpenPanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_canChooseFiles"),new objj_ivar("_canChooseDirectories"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_directoryURL"),new objj_ivar("_URLs")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("canChooseFiles"),function(_3,_4){ +with(_3){ +return _canChooseFiles; +} +}),new objj_method(sel_getUid("setCanChooseFiles:"),function(_5,_6,_7){ +with(_5){ +_canChooseFiles=_7; +} +}),new objj_method(sel_getUid("canChooseDirectories"),function(_8,_9){ +with(_8){ +return _canChooseDirectories; +} +}),new objj_method(sel_getUid("setCanChooseDirectories:"),function(_a,_b,_c){ +with(_a){ +_canChooseDirectories=_c; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_d,_e){ +with(_d){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_f,_10,_11){ +with(_f){ +_allowsMultipleSelection=_11; +} +}),new objj_method(sel_getUid("directoryURL"),function(_12,_13){ +with(_12){ +return _directoryURL; +} +}),new objj_method(sel_getUid("setDirectoryURL:"),function(_14,_15,_16){ +with(_14){ +_directoryURL=_16; +} +}),new objj_method(sel_getUid("runModal"),function(_17,_18){ +with(_17){ +if(typeof window["cpOpenPanel"]==="function"){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +var _19={directoryURL:objj_msgSend(_17,"directoryURL"),canChooseFiles:objj_msgSend(_17,"canChooseFiles"),canChooseDirectories:objj_msgSend(_17,"canChooseDirectories"),allowsMultipleSelection:objj_msgSend(_17,"allowsMultipleSelection")}; +var _1a=window.cpOpenPanel(_19); +_URLs=_1a.URLs; +return _1a.button; +} +throw "-runModal is unimplemented."; +} +}),new objj_method(sel_getUid("URLs"),function(_1b,_1c){ +with(_1b){ +return _URLs; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("openPanel"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(objj_msgSend(CPOpenPanel,"alloc"),"init"); +} +})]); +p;15;CPOutlineView.jt;38503;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.jt;38445; +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +CPOutlineViewColumnDidMoveNotification="CPOutlineViewColumnDidMoveNotification"; +CPOutlineViewColumnDidResizeNotification="CPOutlineViewColumnDidResizeNotification"; +CPOutlineViewItemDidCollapseNotification="CPOutlineViewItemDidCollapseNotification"; +CPOutlineViewItemDidExpandNotification="CPOutlineViewItemDidExpandNotification"; +CPOutlineViewItemWillCollapseNotification="CPOutlineViewItemWillCollapseNotification"; +CPOutlineViewItemWillExpandNotification="CPOutlineViewItemWillExpandNotification"; +CPOutlineViewSelectionDidChangeNotification="CPOutlineViewSelectionDidChangeNotification"; +CPOutlineViewSelectionIsChangingNotification="CPOutlineViewSelectionIsChangingNotification"; +var _1=1<<1,_2=1<<2,_3=1<<3,_4=1<<4,_5=1<<5,_6=1<<6,_7=1<<7,_8=1<<8,_9=1<<9,_a=1<<10; +var _b=1<<1,_c=1<<2,_d=1<<3,_e=1<<4,_f=1<<5,_10=1<<6,_11=1<<7,_12=1<<8,_13=1<<9,_14=1<<10,_15=1<<11,_16=1<<12,_17=1<<13,_18=1<<14,_19=1<<15,_1a=1<<16,_1b=1<<17,_1c=1<<18,_1d=1<<19,_1e=1<<20,_1f=1<<21,_20=1<<22,_21=1<<23,_22=1<<24; +CPOutlineViewDropOnItemIndex=-1; +var _23=objj_allocateClassPair(CPTableView,"CPOutlineView"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineViewDataSource"),new objj_ivar("_outlineViewDelegate"),new objj_ivar("_outlineTableColumn"),new objj_ivar("_indentationPerLevel"),new objj_ivar("_indentationMarkerFollowsDataView"),new objj_ivar("_implementedOutlineViewDataSourceMethods"),new objj_ivar("_implementedOutlineViewDelegateMethods"),new objj_ivar("_rootItemInfo"),new objj_ivar("_itemsForRows"),new objj_ivar("_itemInfosForItems"),new objj_ivar("_disclosureControlPrototype"),new objj_ivar("_disclosureControlsForRows"),new objj_ivar("_disclosureControlData"),new objj_ivar("_disclosureControlQueue"),new objj_ivar("_shouldRetargetItem"),new objj_ivar("_retargetedItem"),new objj_ivar("_shouldRetargetChildIndex"),new objj_ivar("_retargedChildIndex"),new objj_ivar("_dragHoverTimer"),new objj_ivar("_dropItem")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithFrame:"),function(_25,_26,_27){ +with(_25){ +_25=objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"initWithFrame:",_27); +if(_25){ +_selectionHighlightStyle=CPTableViewSelectionHighlightStyleSourceList; +_rootItemInfo={isExpanded:YES,isExpandable:NO,level:-1,row:-1,children:[],weight:0}; +_itemsForRows=[]; +_itemInfosForItems={}; +_disclosureControlsForRows=[]; +_retargetedItem=nil; +_shouldRetargetItem=NO; +_retargedChildIndex=nil; +_shouldRetargetChildIndex=NO; +_startHoverTime=nil; +objj_msgSend(_25,"setIndentationPerLevel:",16); +objj_msgSend(_25,"setIndentationMarkerFollowsDataView:",YES); +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"setDataSource:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource,"alloc"),"initWithOutlineView:",_25)); +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"setDelegate:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDelegate,"alloc"),"initWithOutlineView:",_25)); +objj_msgSend(_25,"setDisclosureControlPrototype:",objj_msgSend(objj_msgSend(CPDisclosureButton,"alloc"),"initWithFrame:",CGRectMake(0,0,10,10))); +} +return _25; +} +}),new objj_method(sel_getUid("setDataSource:"),function(_28,_29,_2a){ +with(_28){ +if(_outlineViewDataSource===_2a){ +return; +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:child:ofItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:child:ofItem:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:isItemExpandable:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:isItemExpandable:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:numberOfChildrenOfItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:numberOfChildrenOfItem:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:objectValueForTableColumn:byItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:objectValueForTableColumn:byItem:'"); +} +_outlineViewDataSource=_2a; +_implementedOutlineViewDataSourceMethods=0; +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:setObjectValue:forTableColumn:byItem:"))){ +_implementedOutlineViewDataSourceMethods|=_1; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:shouldDeferDisplayingChildrenOfItem:"))){ +_implementedOutlineViewDataSourceMethods|=_2; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:acceptDrop:item:childIndex:"))){ +_implementedOutlineViewDataSourceMethods|=_3; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:validateDrop:proposedItem:proposedChildIndex:"))){ +_implementedOutlineViewDataSourceMethods|=_4; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:validateDrop:proposedRow:proposedDropOperation:"))){ +_implementedOutlineViewDataSourceMethods|=_5; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:"))){ +_implementedOutlineViewDataSourceMethods|=_6; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:itemForPersistentObject:"))){ +_implementedOutlineViewDataSourceMethods|=_7; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:persistentObjectForItem:"))){ +_implementedOutlineViewDataSourceMethods|=_8; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:writeItems:toPasteboard:"))){ +_implementedOutlineViewDataSourceMethods|=_9; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:sortDescriptorsDidChange:"))){ +_implementedOutlineViewDataSourceMethods|=_a; +} +objj_msgSend(_28,"reloadData"); +} +}),new objj_method(sel_getUid("dataSource"),function(_2b,_2c){ +with(_2b){ +return _outlineViewDataSource; +} +}),new objj_method(sel_getUid("isExpandable:"),function(_2d,_2e,_2f){ +with(_2d){ +if(!_2f){ +return YES; +} +var _30=_itemInfosForItems[objj_msgSend(_2f,"UID")]; +if(!_30){ +return NO; +} +return _30.isExpandable; +} +}),new objj_method(sel_getUid("isItemExpanded:"),function(_31,_32,_33){ +with(_31){ +if(!_33){ +return YES; +} +var _34=_itemInfosForItems[objj_msgSend(_33,"UID")]; +if(!_34){ +return NO; +} +return _34.isExpanded; +} +}),new objj_method(sel_getUid("expandItem:"),function(_35,_36,_37){ +with(_35){ +objj_msgSend(_35,"expandItem:expandChildren:",_37,NO); +} +}),new objj_method(sel_getUid("expandItem:expandChildren:"),function(_38,_39,_3a,_3b){ +with(_38){ +var _3c=null; +if(!_3a){ +_3c=_rootItemInfo; +}else{ +_3c=_itemInfosForItems[objj_msgSend(_3a,"UID")]; +} +if(!_3c){ +return; +} +if(!_3c.isExpanded){ +objj_msgSend(_38,"_noteItemWillExpand:",_3a); +_3c.isExpanded=YES; +objj_msgSend(_38,"_noteItemDidExpand:",_3a); +objj_msgSend(_38,"reloadItem:reloadChildren:",_3a,YES); +} +if(_3b){ +var _3d=_3c.children,_3e=_3d.length; +while(_3e--){ +objj_msgSend(_38,"expandItem:expandChildren:",_3d[_3e],YES); +} +} +} +}),new objj_method(sel_getUid("collapseItem:"),function(_3f,_40,_41){ +with(_3f){ +if(!_41){ +return; +} +var _42=_itemInfosForItems[objj_msgSend(_41,"UID")]; +if(!_42){ +return; +} +if(!_42.isExpanded){ +return; +} +objj_msgSend(_3f,"_noteItemWillCollapse:",_41); +_42.isExpanded=NO; +objj_msgSend(_3f,"_noteItemDidCollapse:",_41); +objj_msgSend(_3f,"reloadItem:reloadChildren:",_41,YES); +} +}),new objj_method(sel_getUid("reloadItem:"),function(_43,_44,_45){ +with(_43){ +objj_msgSend(_43,"reloadItem:reloadChildren:",_45,NO); +} +}),new objj_method(sel_getUid("reloadItem:reloadChildren:"),function(_46,_47,_48,_49){ +with(_46){ +if(!!_49||!_48){ +_4a(_46,_48); +}else{ +_4b(_46,_48); +} +objj_msgSendSuper({receiver:_46,super_class:objj_getClass("CPOutlineView").super_class},"reloadData"); +} +}),new objj_method(sel_getUid("itemAtRow:"),function(_4c,_4d,_4e){ +with(_4c){ +return _itemsForRows[_4e]||nil; +} +}),new objj_method(sel_getUid("rowForItem:"),function(_4f,_50,_51){ +with(_4f){ +if(!_51){ +return _rootItemInfo.row; +} +var _52=_itemInfosForItems[objj_msgSend(_51,"UID")]; +if(!_52){ +return CPNotFound; +} +return _52.row; +} +}),new objj_method(sel_getUid("setOutlineTableColumn:"),function(_53,_54,_55){ +with(_53){ +if(_outlineTableColumn===_55){ +return; +} +_outlineTableColumn=_55; +objj_msgSend(_53,"reloadData"); +} +}),new objj_method(sel_getUid("outlineTableColumn"),function(_56,_57){ +with(_56){ +return _outlineTableColumn; +} +}),new objj_method(sel_getUid("levelForItem:"),function(_58,_59,_5a){ +with(_58){ +if(!_5a){ +return _rootItemInfo.level; +} +var _5b=_itemInfosForItems[objj_msgSend(_5a,"UID")]; +if(!_5b){ +return CPNotFound; +} +return _5b.level; +} +}),new objj_method(sel_getUid("levelForRow:"),function(_5c,_5d,_5e){ +with(_5c){ +return objj_msgSend(_5c,"levelForItem:",objj_msgSend(_5c,"itemAtRow:",_5e)); +} +}),new objj_method(sel_getUid("setIndentationPerLevel:"),function(_5f,_60,_61){ +with(_5f){ +if(_indentationPerLevel===_61){ +return; +} +_indentationPerLevel=_61; +objj_msgSend(_5f,"reloadData"); +} +}),new objj_method(sel_getUid("indentationPerLevel"),function(_62,_63){ +with(_62){ +return _indentationPerLevel; +} +}),new objj_method(sel_getUid("setIndentationMarkerFollowsDataView:"),function(_64,_65,_66){ +with(_64){ +if(_indentationMarkerFollowsDataView===_66){ +return; +} +_indentationMarkerFollowsDataView=_66; +objj_msgSend(_64,"reloadData"); +} +}),new objj_method(sel_getUid("indentationMarkerFollowsDataView"),function(_67,_68){ +with(_67){ +return _indentationMarkerFollowsDataView; +} +}),new objj_method(sel_getUid("parentForItem:"),function(_69,_6a,_6b){ +with(_69){ +if(!_6b){ +return nil; +} +var _6c=_itemInfosForItems[objj_msgSend(_6b,"UID")]; +if(!_6c){ +return nil; +} +var _6d=_6c.parent; +if(_6c[objj_msgSend(_6d,"UID")]===_rootItemInfo){ +_6d=nil; +} +return _6d; +} +}),new objj_method(sel_getUid("frameOfOutlineDataViewAtColumn:row:"),function(_6e,_6f,_70,_71){ +with(_6e){ +var _72=objj_msgSendSuper({receiver:_6e,super_class:objj_getClass("CPOutlineView").super_class},"frameOfDataViewAtColumn:row:",_70,_71),_73=(objj_msgSend(_6e,"levelForRow:",_71)+1)*objj_msgSend(_6e,"indentationPerLevel"); +_72.origin.x+=_73; +_72.size.width-=_73; +return _72; +} +}),new objj_method(sel_getUid("_performSelection:forRow:context:"),function(_74,_75,_76,_77,_78){ +with(_74){ +objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPOutlineView").super_class},"_performSelection:forRow:context:",_76,_77,_78); +var _79=_disclosureControlsForRows[_77],_7a=_76?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_79,"performSelector:withObject:",CPSelectorFromString(_7a),CPThemeStateSelected); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_outlineViewDelegate===_7d){ +return; +} +var _7e=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_outlineViewDelegate){ +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidMove:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewColumnDidMoveNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidResize:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewColumnDidResizeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionDidChange:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewSelectionDidChangeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionIsChanging:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewSelectionIsChangingNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillExpand:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemWillExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidExpand:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemDidExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillCollapse:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemWillCollapseNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidCollapse:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemDidCollapseNotification,_7b); +} +} +_outlineViewDelegate=_7d; +_implementedOutlineViewDelegateMethods=0; +var _7f=[_b,sel_getUid("outlineView:dataViewForTableColumn:item:"),_c,sel_getUid("outlineView:didClickTableColumn:"),_d,sel_getUid("outlineView:didDragTableColumn:"),_e,sel_getUid("outlineView:heightOfRowByItem:"),_f,sel_getUid("outlineView:isGroupItem:"),_10,sel_getUid("outlineView:mouseDownInHeaderOfTableColumn:"),_11,sel_getUid("outlineView:nextTypeSelectMatchFromItem:toItem:forString:"),_12,sel_getUid("outlineView:selectionIndexesForProposedSelection:"),_13,sel_getUid("outlineView:shouldCollapseItem:"),_14,sel_getUid("outlineView:shouldEditTableColumn:item:"),_15,sel_getUid("outlineView:shouldExpandItem:"),_16,sel_getUid("outlineView:shouldReorderColumn:toColumn:"),_17,sel_getUid("outlineView:shouldSelectItem:"),_18,sel_getUid("outlineView:shouldSelectTableColumn:"),_19,sel_getUid("outlineView:shouldShowOutlineViewForItem:"),_1a,sel_getUid("outlineView:shouldShowViewExpansionForTableColumn:item:"),_1b,sel_getUid("outlineView:shouldTrackView:forTableColumn:item:"),_1c,sel_getUid("outlineView:shouldTypeSelectForEvent:withCurrentSearchString:"),_1d,sel_getUid("outlineView:sizeToFitWidthOfColumn:"),_1e,sel_getUid("outlineView:toolTipForView:rect:tableColumn:item:mouseLocation:"),_1f,sel_getUid("outlineView:typeSelectStringForTableColumn:item:"),_20,sel_getUid("outlineView:willDisplayOutlineView:forTableColumn:item:"),_21,sel_getUid("outlineView:willDisplayView:forTableColumn:item:"),_22,sel_getUid("selectionShouldChangeInOutlineView:")],_80=objj_msgSend(_7f,"count"); +for(var i=0;i<_80;i+=2){ +var _81=_7f[i],_82=_7f[i+1]; +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",_82)){ +_implementedOutlineViewDelegateMethods|=_81; +} +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidMove:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewColumnDidMove:"),CPOutlineViewColumnDidMoveNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidResize:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewColumnDidMove:"),CPOutlineViewColumnDidResizeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionDidChange:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewSelectionDidChange:"),CPOutlineViewSelectionDidChangeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionIsChanging:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewSelectionIsChanging:"),CPOutlineViewSelectionIsChangingNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillExpand:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemWillExpand:"),CPOutlineViewItemWillExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidExpand:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemDidExpand:"),CPOutlineViewItemDidExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillCollapse:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemWillCollapse:"),CPOutlineViewItemWillCollapseNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidCollapse:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemDidCollapse:"),CPOutlineViewItemDidCollapseNotification,_7b); +} +} +}),new objj_method(sel_getUid("delegate"),function(_83,_84){ +with(_83){ +return _outlineViewDelegate; +} +}),new objj_method(sel_getUid("setDisclosureControlPrototype:"),function(_85,_86,_87){ +with(_85){ +_disclosureControlPrototype=_87; +_disclosureControlData=nil; +_disclosureControlQueue=[]; +objj_msgSend(_85,"reloadData"); +} +}),new objj_method(sel_getUid("reloadData"),function(_88,_89){ +with(_88){ +objj_msgSend(_88,"reloadItem:reloadChildren:",nil,YES); +} +}),new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"),function(_8a,_8b,_8c,_8d){ +with(_8a){ +var _8e=objj_msgSend(_8a,"tableColumns")[_8c]; +if(_8e===_outlineTableColumn){ +return objj_msgSend(_8a,"frameOfOutlineDataViewAtColumn:row:",_8c,_8d); +} +return objj_msgSendSuper({receiver:_8a,super_class:objj_getClass("CPOutlineView").super_class},"frameOfDataViewAtColumn:row:",_8c,_8d); +} +}),new objj_method(sel_getUid("setDropItem:dropChildIndex:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_dropItem!==_91&&_92<0&&objj_msgSend(_8f,"isExpandable:",_91)&&!objj_msgSend(_8f,"isItemExpanded:",_91)){ +if(_dragHoverTimer){ +objj_msgSend(_dragHoverTimer,"invalidate"); +} +var _93=function(){ +if(_dropItem){ +objj_msgSend(_dropOperationFeedbackView,"blink"); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.3,objj_msgSend(_8f,"expandItem:",_dropItem),NO); +} +}; +_dragHoverTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.8,_93,NO); +} +if(_92>=0){ +objj_msgSend(_dragHoverTimer,"invalidate"); +_dragHoverTimer=nil; +} +_dropItem=_91; +_retargetedItem=_91; +_shouldRetargetItem=YES; +_retargedChildIndex=_92; +_shouldRetargetChildIndex=YES; +var _94=(_retargetedItem!==nil)?_itemInfosForItems[objj_msgSend(_retargetedItem,"UID")]:_rootItemInfo; +if(_retargedChildIndex===objj_msgSend(_94.children,"count")){ +var _95=objj_msgSend(_94.children,"lastObject"); +_retargetedDropRow=objj_msgSend(_8f,"rowForItem:",_95)+1; +}else{ +var _95=(_retargedChildIndex!==CPOutlineViewDropOnItemIndex)?_94.children[_retargedChildIndex]:_retargetedItem; +_retargetedDropRow=objj_msgSend(_8f,"rowForItem:",_95); +} +} +}),new objj_method(sel_getUid("_draggingEnded"),function(_96,_97){ +with(_96){ +objj_msgSendSuper({receiver:_96,super_class:objj_getClass("CPOutlineView").super_class},"_draggingEnded"); +_dropItem=nil; +objj_msgSend(_dragHoverTimer,"invalidate"); +_dragHoverTimer=nil; +} +}),new objj_method(sel_getUid("_parentItemForUpperRow:andLowerRow:atMouseOffset:"),function(_98,_99,_9a,_9b,_9c){ +with(_98){ +if(_shouldRetargetItem){ +return _retargetedItem; +} +var _9d=objj_msgSend(_98,"levelForRow:",_9b); +upperItem=objj_msgSend(_98,"itemAtRow:",_9a); +upperLevel=objj_msgSend(_98,"levelForItem:",upperItem); +while(upperLevel>_9d){ +upperLevel=objj_msgSend(_98,"levelForItem:",upperItem); +if(_9c.x>(upperLevel+1)*objj_msgSend(_98,"indentationPerLevel")){ +return objj_msgSend(_98,"parentForItem:",upperItem); +} +upperItem=objj_msgSend(_98,"parentForItem:",upperItem); +} +return objj_msgSend(_98,"parentForItem:",objj_msgSend(_98,"itemAtRow:",_9b)); +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"),function(_9e,_9f,_a0,_a1,_a2){ +with(_9e){ +var _a3=objj_msgSendSuper({receiver:_9e,super_class:objj_getClass("CPOutlineView").super_class},"_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:",_a0,_a1,_a2),_a4=objj_msgSend(_9e,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_a0,_a1,_a2),_a5=objj_msgSend(_9e,"levelForItem:",_a4); +_a3.origin.x=(_a5+1)*objj_msgSend(_9e,"indentationPerLevel"); +_a3.size.width-=_a3.origin.x; +return _a3; +} +}),new objj_method(sel_getUid("_loadDataViewsInRows:columns:"),function(_a6,_a7,_a8,_a9){ +with(_a6){ +objj_msgSendSuper({receiver:_a6,super_class:objj_getClass("CPOutlineView").super_class},"_loadDataViewsInRows:columns:",_a8,_a9); +var _aa=objj_msgSend(objj_msgSend(_a6,"tableColumns"),"indexOfObjectIdenticalTo:",objj_msgSend(_a6,"outlineTableColumn")); +if(!objj_msgSend(_a9,"containsIndex:",_aa)){ +return; +} +var _ab=[]; +objj_msgSend(_a8,"getIndexes:maxCount:inIndexRange:",_ab,-1,nil); +var _ac=0,_ad=_ab.length; +for(;_ac<_ad;++_ac){ +var row=_ab[_ac],_ae=_itemsForRows[row],_af=objj_msgSend(_a6,"isExpandable:",_ae); +if(!_af){ +continue; +} +var _b0=objj_msgSend(_a6,"_dequeueDisclosureControl"),_b1=objj_msgSend(_b0,"frame"),_b2=objj_msgSend(_a6,"frameOfDataViewAtColumn:row:",_aa,row); +_b1.origin.x=_indentationMarkerFollowsDataView?(_b2.origin.x)-(_b1.size.width):0; +_b1.origin.y=(_b2.origin.y); +_b1.size.height=(_b2.size.height); +_disclosureControlsForRows[row]=_b0; +objj_msgSend(_b0,"setState:",objj_msgSend(_a6,"isItemExpanded:",_ae)?CPOnState:CPOffState); +var _b3=objj_msgSend(_a6,"isRowSelected:",row)?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_b0,"performSelector:withObject:",CPSelectorFromString(_b3),CPThemeStateSelected); +objj_msgSend(_b0,"setFrame:",_b1); +objj_msgSend(_a6,"addSubview:",_b0); +} +} +}),new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"),function(_b4,_b5,_b6,_b7){ +with(_b4){ +objj_msgSendSuper({receiver:_b4,super_class:objj_getClass("CPOutlineView").super_class},"_unloadDataViewsInRows:columns:",_b6,_b7); +var _b8=objj_msgSend(objj_msgSend(_b4,"tableColumns"),"indexOfObjectIdenticalTo:",objj_msgSend(_b4,"outlineTableColumn")); +if(!objj_msgSend(_b7,"containsIndex:",_b8)){ +return; +} +var _b9=[]; +objj_msgSend(_b6,"getIndexes:maxCount:inIndexRange:",_b9,-1,nil); +var _ba=0,_bb=_b9.length; +for(;_ba<_bb;++_ba){ +var row=_b9[_ba],_bc=_disclosureControlsForRows[row]; +if(!_bc){ +continue; +} +objj_msgSend(_bc,"removeFromSuperview"); +objj_msgSend(_b4,"_enqueueDisclosureControl:",_bc); +_disclosureControlsForRows[row]=nil; +} +} +}),new objj_method(sel_getUid("_toggleFromDisclosureControl:"),function(_bd,_be,_bf){ +with(_bd){ +var _c0=objj_msgSend(_bf,"frame"),_c1=objj_msgSend(_bd,"itemAtRow:",objj_msgSend(_bd,"rowAtPoint:",{x:(_c0.origin.x),y:(_c0.origin.y+(_c0.size.height)/2)})); +if(objj_msgSend(_bd,"isItemExpanded:",_c1)){ +objj_msgSend(_bd,"collapseItem:",_c1); +}else{ +objj_msgSend(_bd,"expandItem:",_c1); +} +} +}),new objj_method(sel_getUid("_enqueueDisclosureControl:"),function(_c2,_c3,_c4){ +with(_c2){ +_disclosureControlQueue.push(_c4); +} +}),new objj_method(sel_getUid("_dequeueDisclosureControl"),function(_c5,_c6){ +with(_c5){ +if(_disclosureControlQueue.length){ +return _disclosureControlQueue.pop(); +} +if(!_disclosureControlData){ +if(!_disclosureControlPrototype){ +return nil; +}else{ +_disclosureControlData=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_disclosureControlPrototype); +} +} +var _c7=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_disclosureControlData); +objj_msgSend(_c7,"setTarget:",_c5); +objj_msgSend(_c7,"setAction:",sel_getUid("_toggleFromDisclosureControl:")); +return _c7; +} +}),new objj_method(sel_getUid("_noteSelectionIsChanging"),function(_c8,_c9){ +with(_c8){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewSelectionIsChangingNotification,_c8,nil); +} +}),new objj_method(sel_getUid("_noteSelectionDidChange"),function(_ca,_cb){ +with(_ca){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewSelectionDidChangeNotification,_ca,nil); +} +}),new objj_method(sel_getUid("_noteItemWillExpand:"),function(_cc,_cd,_ce){ +with(_cc){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemWillExpandNotification,_cc,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_ce,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemDidExpand:"),function(_cf,_d0,_d1){ +with(_cf){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemDidExpandNotification,_cf,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d1,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemWillCollapse:"),function(_d2,_d3,_d4){ +with(_d2){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemWillCollapseNotification,_d2,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d4,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemDidCollapse:"),function(_d5,_d6,_d7){ +with(_d5){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemDidCollapseNotification,_d5,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d7,"CPObject")); +} +})]); +var _4b=function(_d8,_d9){ +if(!_d9){ +return; +} +with(_d8){ +var _da=_itemInfosForItems,_db=_outlineViewDataSource,_dc=objj_msgSend(_d9,"UID"),_dd=_da[_dc]; +if(!_dd){ +return []; +} +var _de=_dd.parent,_df=_de?_da[objj_msgSend(_de,"UID")]:_rootItemInfo,_e0=_df.children,_e1=objj_msgSend(_e0,"indexOfObjectIdenticalTo:",_d9),_e2=objj_msgSend(_db,"outlineView:child:ofItem:",_d8,_e1,_de); +if(_d9!==_e2){ +_da[objj_msgSend(_d9,"UID")]=nil; +_da[objj_msgSend(_e2,"UID")]=_dd; +_e0[_e1]=_e2; +_itemsForRows[_dd.row]=_e2; +} +_dd.isExpandable=objj_msgSend(_db,"outlineView:isItemExpandable:",_d8,_e2); +_dd.isExpanded=_dd.isExpandable&&_dd.isExpanded; +} +}; +var _4a=function(_e3,_e4,_e5){ +with(_e3){ +var _e6=_itemInfosForItems,_e7=_outlineViewDataSource; +if(!_e4){ +var _e8=_rootItemInfo; +}else{ +var _e9=objj_msgSend(_e4,"UID"),_e8=_e6[_e9]; +if(!_e8){ +return []; +} +_e8.isExpandable=objj_msgSend(_e7,"outlineView:isItemExpandable:",_e3,_e4); +if(!_e8.isExpandable&&_e8.isExpanded){ +_e8.isExpanded=NO; +_e8.children=[]; +} +} +var _ea=_e8.weight,_eb=_e4?[_e4]:[]; +if(_e8.isExpanded&&(!(_implementedOutlineViewDataSourceMethods&_2)||!objj_msgSend(_e7,"outlineView:shouldDeferDisplayingChildrenOfItem:",_e3,_e4))){ +var _ec=0,_ed=objj_msgSend(_e7,"outlineView:numberOfChildrenOfItem:",_e3,_e4),_ee=_e8.level+1; +_e8.children=[]; +for(;_ec<_ed;++_ec){ +var _ef=objj_msgSend(_e7,"outlineView:child:ofItem:",_e3,_ec,_e4),_f0=_e6[objj_msgSend(_ef,"UID")]; +if(!_f0){ +_f0={isExpanded:NO,isExpandable:NO,children:[],weight:1}; +_e6[objj_msgSend(_ef,"UID")]=_f0; +} +_e8.children[_ec]=_ef; +var _f1=_4a(_e3,_ef,YES); +_f0.parent=_e4; +_f0.level=_ee; +_eb=_eb.concat(_f1); +} +} +_e8.weight=_eb.length; +if(!_e5){ +var _ec=MAX(_e8.row,0),_f2=_itemsForRows; +_eb.unshift(_ec,_ea); +_f2.splice.apply(_f2,_eb); +var _ed=_f2.length; +for(;_ec<_ed;++_ec){ +_e6[objj_msgSend(_f2[_ec],"UID")].row=_ec; +} +var _f3=_e8.weight-_ea; +if(_f3!==0){ +var _f4=_e8.parent; +while(_f4){ +var _f5=_e6[objj_msgSend(_f4,"UID")]; +_f5.weight+=_f3; +_f4=_f5.parent; +} +if(_e4){ +_rootItemInfo.weight+=_f3; +} +} +} +} +return _eb; +}; +var _23=objj_allocateClassPair(CPObject,"_CPOutlineViewTableViewDataSource"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineView")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithOutlineView:"),function(_f6,_f7,_f8){ +with(_f6){ +_f6=objj_msgSendSuper({receiver:_f6,super_class:objj_getClass("_CPOutlineViewTableViewDataSource").super_class},"init"); +if(_f6){ +_outlineView=_f8; +} +return _f6; +} +}),new objj_method(sel_getUid("numberOfRowsInTableView:"),function(_f9,_fa,_fb){ +with(_f9){ +return _outlineView._itemsForRows.length; +} +}),new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"),function(_fc,_fd,_fe,_ff,aRow){ +with(_fc){ +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:objectValueForTableColumn:byItem:",_outlineView,_ff,_outlineView._itemsForRows[aRow]); +} +}),new objj_method(sel_getUid("tableView:setObjectValue:forTableColumn:row:"),function(self,_100,_101,_102,_103,aRow){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_1)){ +return; +} +objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:setObjectValue:forTableColumn:byItem:",_outlineView,_102,_103,_outlineView._itemsForRows[aRow]); +} +}),new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"),function(self,_104,_105,_106,_107){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_9)){ +return NO; +} +var _108=[]; +objj_msgSend(_106,"getIndexes:maxCount:inIndexRange:",_108,objj_msgSend(_106,"count"),nil); +var _109=objj_msgSend(_108,"count"),_10a=[]; +while(_109--){ +objj_msgSend(_10a,"addObject:",objj_msgSend(_outlineView,"itemAtRow:",objj_msgSend(_108,"objectAtIndex:",_109))); +} +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:writeItems:toPasteboard:",_outlineView,_10a,_107); +} +}),new objj_method(sel_getUid("_childIndexForDropOperation:row:offset:"),function(self,_10b,_10c,_10d,_10e){ +with(self){ +if(_outlineView._shouldRetargetChildIndex){ +return _outlineView._retargedChildIndex; +} +var _10f=CPNotFound; +if(_10c===CPTableViewDropAbove){ +var _110=objj_msgSend(_outlineView,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_10d-1,_10d,_10e),_111=(_110!==nil)?_outlineView._itemInfosForItems[objj_msgSend(_110,"UID")]:_outlineView._rootItemInfo,_112=_111.children; +_10f=objj_msgSend(_112,"indexOfObject:",objj_msgSend(_outlineView,"itemAtRow:",_10d)); +if(_10f===CPNotFound){ +_10f=_112.length; +} +}else{ +if(_10c===CPTableViewDropOn){ +_10f=-1; +} +} +return _10f; +} +}),new objj_method(sel_getUid("_parentItemForDropOperation:row:offset:"),function(self,_113,_114,_115,_116){ +with(self){ +if(_114===CPTableViewDropAbove){ +return objj_msgSend(_outlineView,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_115-1,_115,_116); +} +return objj_msgSend(_outlineView,"itemAtRow:",_115); +} +}),new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"),function(self,_117,_118,_119,_11a,_11b){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_4)){ +return CPDragOperationNone; +} +_outlineView._retargetedItem=nil; +_outlineView._shouldRetargetItem=NO; +_outlineView._retargedChildIndex=nil; +_outlineView._shouldRetargetChildIndex=NO; +var _11c=objj_msgSend(_outlineView,"convertPoint:fromView:",objj_msgSend(_119,"draggingLocation"),nil),_11d=objj_msgSend(self,"_parentItemForDropOperation:row:offset:",_11b,_11a,_11c),_11e=objj_msgSend(self,"_childIndexForDropOperation:row:offset:",_11b,_11a,_11c); +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:validateDrop:proposedItem:proposedChildIndex:",_outlineView,_119,_11d,_11e); +} +}),new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"),function(self,_11f,_120,_121,_122,_123){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_3)){ +return NO; +} +var _124=objj_msgSend(_outlineView,"convertPoint:fromView:",objj_msgSend(_121,"draggingLocation"),nil),_125=objj_msgSend(self,"_parentItemForDropOperation:row:offset:",_123,_122,_124); +childIndex=objj_msgSend(self,"_childIndexForDropOperation:row:offset:",_123,_122,_124); +_outlineView._retargetedItem=nil; +_outlineView._shouldRetargetItem=NO; +_outlineView._retargedChildIndex=nil; +_outlineView._shouldRetargetChildIndex=NO; +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:acceptDrop:item:childIndex:",_outlineView,_121,_125,childIndex); +} +})]); +var _23=objj_allocateClassPair(CPObject,"_CPOutlineViewTableViewDelegate"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineView")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithOutlineView:"),function(self,_126,_127){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPOutlineViewTableViewDelegate").super_class},"init"); +if(self){ +_outlineView=_127; +} +return self; +} +}),new objj_method(sel_getUid("tableView:dataViewForTableColumn:row:"),function(self,_128,_129,_12a,_12b){ +with(self){ +var _12c=nil; +if((_outlineView._implementedOutlineViewDelegateMethods&_b)){ +_12c=objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:dataViewForTableColumn:item:",_outlineView,_12a,objj_msgSend(_outlineView,"itemAtRow:",_12b)); +} +if(!_12c){ +_12c=objj_msgSend(_12a,"dataViewForRow:",_12b); +} +return _12c; +} +}),new objj_method(sel_getUid("tableView:shouldSelectRow:"),function(self,_12d,_12e,_12f){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_17)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:shouldSelectItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",_12f)); +} +return YES; +} +}),new objj_method(sel_getUid("tableView:shouldEditTableColumn:row:"),function(self,_130,_131,_132,aRow){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_14)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:shouldEditTableColumn:item:",_outlineView,_132,objj_msgSend(_outlineView,"itemAtRow:",aRow)); +} +return NO; +} +}),new objj_method(sel_getUid("tableView:heightOfRow:"),function(self,_133,_134,_135){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_e)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:heightOfRowByItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",_135)); +} +return objj_msgSend(_134,"rowHeight"); +} +}),new objj_method(sel_getUid("tableView:willDisplayView:forTableColumn:row:"),function(self,_136,_137,_138,_139,_13a){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_21)){ +var item=objj_msgSend(_outlineView,"itemAtRow:",_13a); +objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:willDisplayView:forTableColumn:item:",_outlineView,_138,_139,item); +} +} +}),new objj_method(sel_getUid("tableView:isGroupRow:"),function(self,_13b,_13c,row){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_f)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:isGroupItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",theRow)); +} +return NO; +} +})]); +var _23=objj_allocateClassPair(CPButton,"CPDisclosureButton"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_angle")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithFrame:"),function(self,_13d,_13e){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPDisclosureButton").super_class},"initWithFrame:",_13e); +if(self){ +objj_msgSend(self,"setBordered:",NO); +} +return self; +} +}),new objj_method(sel_getUid("setState:"),function(self,_13f,_140){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPDisclosureButton").super_class},"setState:",_140); +if(objj_msgSend(self,"state")===CPOnState){ +_angle=0; +}else{ +_angle=-PI_2; +} +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_141,_142){ +with(self){ +var _143=objj_msgSend(self,"bounds"),_144=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(_144); +CGContextTranslateCTM(_144,(_143.size.width)/2,(_143.size.height)/2); +CGContextRotateCTM(_144,_angle); +CGContextTranslateCTM(_144,-(_143.size.width)/2,-(_143.size.height)/2); +CGContextTranslateCTM(_144,FLOOR(((_143.size.width)-9)/2),FLOOR(((_143.size.height)-8)/2)); +CGContextMoveToPoint(_144,0,0); +CGContextAddLineToPoint(_144,9,0); +CGContextAddLineToPoint(_144,4.5,8); +CGContextAddLineToPoint(_144,0,0); +CGContextClosePath(_144); +CGContextSetFillColor(_144,_145(objj_msgSend(self,"hasThemeState:",CPThemeStateSelected),objj_msgSend(self,"hasThemeState:",CPThemeStateHighlighted))); +CGContextFillPath(_144); +CGContextBeginPath(_144); +CGContextMoveToPoint(_144,0,0); +if(_angle===0){ +CGContextAddLineToPoint(_144,4.5,8); +CGContextAddLineToPoint(_144,9,0); +}else{ +CGContextAddLineToPoint(_144,4.5,8); +} +CGContextSetStrokeColor(_144,objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1,0.8)); +CGContextStrokePath(_144); +} +})]); +var _146="CPOutlineViewIndentationPerLevelKey",_147="CPOutlineViewOutlineTableColumnKey",_148="CPOutlineViewDataSourceKey",_149="CPOutlineViewDelegateKey"; +var _23=objj_getClass("CPOutlineView"); +if(!_23){ +throw new SyntaxError("*** Could not find definition for class \"CPOutlineView\""); +} +var _24=_23.isa; +class_addMethods(_23,[new objj_method(sel_getUid("initWithCoder:"),function(self,_14a,_14b){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"initWithCoder:",_14b); +if(self){ +_rootItemInfo={isExpanded:YES,isExpandable:NO,level:-1,row:-1,children:[],weight:0}; +_itemsForRows=[]; +_itemInfosForItems={}; +_disclosureControlsForRows=[]; +objj_msgSend(self,"setIndentationMarkerFollowsDataView:",YES); +objj_msgSend(self,"setDisclosureControlPrototype:",objj_msgSend(objj_msgSend(CPDisclosureButton,"alloc"),"initWithFrame:",CGRectMake(0,0,10,10))); +_outlineTableColumn=objj_msgSend(_14b,"decodeObjectForKey:",_147); +_indentationPerLevel=objj_msgSend(_14b,"decodeFloatForKey:",_146); +_outlineViewDataSource=objj_msgSend(_14b,"decodeObjectForKey:",_148); +_outlineViewDelegate=objj_msgSend(_14b,"decodeObjectForKey:",_149); +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"setDataSource:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource,"alloc"),"initWithOutlineView:",self)); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_14c,_14d){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"encodeWithCoder:",_14d); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineTableColumn,_147); +objj_msgSend(_14d,"encodeFloat:forKey:",_indentationPerLevel,_146); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineViewDataSource,_148); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineViewDelegate,_149); +} +})]); +var _145=function(_14e,_14f){ +return _14e?(_14f?objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.9,1):objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1,1)):(_14f?objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.4,1):objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.5,1)); +}; +p;9;CPPanel.jt;1172;@STATIC;1.0;i;10;CPWindow.jt;1138; +objj_executeFile("CPWindow.j",YES); +CPOKButton=1; +CPCancelButton=0; +CPDocModalWindowMask=1<<6; +var _1=objj_allocateClassPair(CPWindow,"CPPanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_becomesKeyOnlyIfNeeded"),new objj_ivar("_worksWhenModal")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isFloatingPanel"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"level")==CPFloatingWindowLevel; +} +}),new objj_method(sel_getUid("setFloatingPanel:"),function(_5,_6,_7){ +with(_5){ +objj_msgSend(_5,"setLevel:",_7?CPFloatingWindowLevel:CPNormalWindowLevel); +} +}),new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"),function(_8,_9){ +with(_8){ +return _becomesKeyOnlyIfNeeded; +} +}),new objj_method(sel_getUid("setBecomesKeyOnlyIfNeeded:"),function(_a,_b,_c){ +with(_a){ +_becomesKeyOnlyIfNeeded=_c; +} +}),new objj_method(sel_getUid("worksWhenModal"),function(_d,_e){ +with(_d){ +return _worksWhenModal; +} +}),new objj_method(sel_getUid("setWorksWhenModal:"),function(_f,_10,_11){ +with(_f){ +_worksWhenModal=_11; +} +}),new objj_method(sel_getUid("canBecomeMainWindow"),function(_12,_13){ +with(_12){ +return NO; +} +})]); +p;14;CPPasteboard.jt;6740;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;40;Foundation/CPPropertyListSerialization.jt;6595; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPPropertyListSerialization.j",NO); +CPGeneralPboard="CPGeneralPboard"; +CPFontPboard="CPFontPboard"; +CPRulerPboard="CPRulerPboard"; +CPFindPboard="CPFindPboard"; +CPDragPboard="CPDragPboard"; +CPColorPboardType="CPColorPboardType"; +CPFilenamesPboardType="CPFilenamesPboardType"; +CPFontPboardType="CPFontPboardType"; +CPHTMLPboardType="CPHTMLPboardType"; +CPStringPboardType="CPStringPboardType"; +CPURLPboardType="CPURLPboardType"; +CPImagesPboardType="CPImagesPboardType"; +CPVideosPboardType="CPVideosPboardType"; +UTF8PboardType="public.utf8-plain-text"; +CPImagePboardType="CPImagePboardType"; +var _1=nil,_2=NO; +var _3=objj_allocateClassPair(CPObject,"CPPasteboard"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_types"),new objj_ivar("_owners"),new objj_ivar("_provided"),new objj_ivar("_changeCount"),new objj_ivar("_stateUID"),new objj_ivar("_nativePasteboard")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("_initWithName:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPPasteboard").super_class},"init"); +if(_5){ +_name=_7; +_types=[]; +_owners=objj_msgSend(CPDictionary,"dictionary"); +_provided=objj_msgSend(CPDictionary,"dictionary"); +_changeCount=0; +if(_2){ +_nativePasteboard=window.cpPasteboardWithName(_7); +objj_msgSend(_5,"_synchronizePasteboard"); +} +} +return _5; +} +}),new objj_method(sel_getUid("addTypes:owner:"),function(_8,_9,_a,_b){ +with(_8){ +var i=0,_c=_a.length; +for(;i<_c;++i){ +var _d=_a[i]; +if(!objj_msgSend(_owners,"objectForKey:",_d)){ +objj_msgSend(_types,"addObject:",_d); +objj_msgSend(_provided,"removeObjectForKey:",_d); +} +objj_msgSend(_owners,"setObject:forKey:",_b,_d); +} +if(_nativePasteboard){ +var _e=objj_msgSend(_a,"copy"); +if(objj_msgSend(_a,"containsObject:",CPStringPboardType)){ +_e.push(UTF8PboardType); +} +_nativePasteboard.addTypes_(_e); +} +return ++_changeCount; +} +}),new objj_method(sel_getUid("declareTypes:owner:"),function(_f,_10,_11,_12){ +with(_f){ +objj_msgSend(_f,"_declareTypes:owner:updateNativePasteboard:",_11,_12,YES); +} +}),new objj_method(sel_getUid("_declareTypes:owner:updateNativePasteboard:"),function(_13,_14,_15,_16,_17){ +with(_13){ +objj_msgSend(_types,"setArray:",_15); +_owners=objj_msgSend(CPDictionary,"dictionary"); +_provided=objj_msgSend(CPDictionary,"dictionary"); +var _18=_types.length; +while(_18--){ +objj_msgSend(_owners,"setObject:forKey:",_16,_types[_18]); +} +if(_nativePasteboard&&_17){ +var _19=objj_msgSend(_15,"copy"); +if(objj_msgSend(_15,"containsObject:",CPStringPboardType)){ +_19.push(UTF8PboardType); +} +_nativePasteboard.declareTypes_(_19); +_changeCount=_nativePasteboard.changeCount(); +} +return ++_changeCount; +} +}),new objj_method(sel_getUid("setData:forType:"),function(_1a,_1b,_1c,_1d){ +with(_1a){ +objj_msgSend(_provided,"setObject:forKey:",_1c,_1d); +if(_1d===CPStringPboardType){ +objj_msgSend(_1a,"setData:forType:",_1c,UTF8PboardType); +} +return YES; +} +}),new objj_method(sel_getUid("setPropertyList:forType:"),function(_1e,_1f,_20,_21){ +with(_1e){ +return objj_msgSend(_1e,"setData:forType:",objj_msgSend(CPPropertyListSerialization,"dataFromPropertyList:format:",_20,CPPropertyList280NorthFormat_v1_0),_21); +} +}),new objj_method(sel_getUid("setString:forType:"),function(_22,_23,_24,_25){ +with(_22){ +objj_msgSend(_22,"setPropertyList:forType:",_24,_25); +} +}),new objj_method(sel_getUid("availableTypeFromArray:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"types"),"firstObjectCommonWithArray:",_28); +} +}),new objj_method(sel_getUid("types"),function(_29,_2a){ +with(_29){ +objj_msgSend(_29,"_synchronizePasteboard"); +return _types; +} +}),new objj_method(sel_getUid("changeCount"),function(_2b,_2c){ +with(_2b){ +return _changeCount; +} +}),new objj_method(sel_getUid("dataForType:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_provided,"objectForKey:",_2f); +if(_30){ +return _30; +} +var _31=objj_msgSend(_owners,"objectForKey:",_2f); +if(_31){ +objj_msgSend(_31,"pasteboard:provideDataForType:",_2d,_2f); +return objj_msgSend(_provided,"objectForKey:",_2f); +} +if(_2f===CPStringPboardType){ +return objj_msgSend(_2d,"dataForType:",UTF8PboardType); +} +return nil; +} +}),new objj_method(sel_getUid("_synchronizePasteboard"),function(_32,_33){ +with(_32){ +if(_nativePasteboard&&_nativePasteboard.changeCount()>_changeCount){ +var _34=objj_msgSend(_nativePasteboard.types(),"copy"); +if(objj_msgSend(_34,"containsObject:",UTF8PboardType)){ +_34.push(CPStringPboardType); +} +objj_msgSend(_32,"_declareTypes:owner:updateNativePasteboard:",_34,_32,NO); +_changeCount=_nativePasteboard.changeCount(); +} +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_35,_36,_37,_38){ +with(_35){ +if(_38===CPStringPboardType){ +var _39=_nativePasteboard.stringForType_(UTF8PboardType); +objj_msgSend(_35,"setString:forType:",_39,CPStringPboardType); +objj_msgSend(_35,"setString:forType:",_39,UTF8PboardType); +}else{ +objj_msgSend(_35,"setString:forType:",_nativePasteboard.stringForType_(_38),_38); +} +} +}),new objj_method(sel_getUid("propertyListForType:"),function(_3a,_3b,_3c){ +with(_3a){ +var _3d=objj_msgSend(_3a,"dataForType:",_3c); +if(_3d){ +return objj_msgSend(CPPropertyListSerialization,"propertyListFromData:format:",_3d,CPPropertyList280NorthFormat_v1_0); +} +return nil; +} +}),new objj_method(sel_getUid("stringForType:"),function(_3e,_3f,_40){ +with(_3e){ +return objj_msgSend(_3e,"propertyListForType:",_40); +} +}),new objj_method(sel_getUid("_generateStateUID"),function(_41,_42){ +with(_41){ +var _43=32; +_stateUID=""; +while(_43--){ +_stateUID+=FLOOR(RAND()*16).toString(16).toUpperCase(); +} +return _stateUID; +} +}),new objj_method(sel_getUid("_stateUID"),function(_44,_45){ +with(_44){ +return _stateUID; +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_46,_47){ +with(_46){ +if(_46!=objj_msgSend(CPPasteboard,"class")){ +return; +} +objj_msgSend(_46,"setVersion:",1); +_1=objj_msgSend(CPDictionary,"dictionary"); +if(typeof window.cpPasteboardWithName!=="undefined"){ +_2=YES; +} +} +}),new objj_method(sel_getUid("generalPasteboard"),function(_48,_49){ +with(_48){ +return objj_msgSend(CPPasteboard,"pasteboardWithName:",CPGeneralPboard); +} +}),new objj_method(sel_getUid("pasteboardWithName:"),function(_4a,_4b,_4c){ +with(_4a){ +var _4d=objj_msgSend(_1,"objectForKey:",_4c); +if(_4d){ +return _4d; +} +_4d=objj_msgSend(objj_msgSend(CPPasteboard,"alloc"),"_initWithName:",_4c); +objj_msgSend(_1,"setObject:forKey:",_4d,_4c); +return _4d; +} +})]); +p;15;CPPopUpButton.jt;13484;@STATIC;1.0;i;10;CPButton.ji;12;CPGeometry.ji;8;CPMenu.ji;12;CPMenuItem.jt;13403; +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPMenuItem.j",YES); +var _1=7; +CPPopUpButtonStatePullsDown=CPThemeState("pulls-down"); +var _2=objj_allocateClassPair(CPButton,"CPPopUpButton"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_selectedIndex"),new objj_ivar("_preferredEdge"),new objj_ivar("_menu")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:pullsDown:"),function(_4,_5,_6,_7){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPPopUpButton").super_class},"initWithFrame:",_6); +if(_4){ +_selectedIndex=CPNotFound; +_preferredEdge=CPMaxYEdge; +objj_msgSend(_4,"setValue:forThemeAttribute:",CPImageLeft,"image-position"); +objj_msgSend(_4,"setValue:forThemeAttribute:",CPLeftTextAlignment,"alignment"); +objj_msgSend(_4,"setValue:forThemeAttribute:",CPLineBreakByTruncatingTail,"line-break-mode"); +objj_msgSend(_4,"setMenu:",objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","")); +objj_msgSend(_4,"setPullsDown:",_7); +} +return _4; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(_8,"initWithFrame:pullsDown:",_a,NO); +} +}),new objj_method(sel_getUid("setPullsDown:"),function(_b,_c,_d){ +with(_b){ +if(_d){ +var _e=objj_msgSend(_b,"setThemeState:",CPPopUpButtonStatePullsDown); +}else{ +var _e=objj_msgSend(_b,"unsetThemeState:",CPPopUpButtonStatePullsDown); +} +if(!_e){ +return; +} +var _f=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_f,"count")<=0){ +return; +} +objj_msgSend(_f[0],"setHidden:",objj_msgSend(_b,"pullsDown")); +objj_msgSend(_b,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("pullsDown"),function(_10,_11){ +with(_10){ +return objj_msgSend(_10,"hasThemeState:",CPPopUpButtonStatePullsDown); +} +}),new objj_method(sel_getUid("addItem:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_menu,"addItem:",_14); +} +}),new objj_method(sel_getUid("addItemWithTitle:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_menu,"addItemWithTitle:action:keyEquivalent:",_17,NULL,nil); +} +}),new objj_method(sel_getUid("addItemsWithTitles:"),function(_18,_19,_1a){ +with(_18){ +var _1b=0,_1c=objj_msgSend(_1a,"count"); +for(;_1b<_1c;++_1b){ +objj_msgSend(_18,"addItemWithTitle:",_1a[_1b]); +} +} +}),new objj_method(sel_getUid("insertItemWithTitle:atIndex:"),function(_1d,_1e,_1f,_20){ +with(_1d){ +var _21=objj_msgSend(_1d,"itemArray"),_22=objj_msgSend(_21,"count"); +while(_22--){ +if(objj_msgSend(_21[_22],"title")==_1f){ +objj_msgSend(_1d,"removeItemAtIndex:",_22); +} +} +objj_msgSend(_menu,"insertItemWithTitle:action:keyEquivalent:atIndex:",_1f,NULL,nil,_20); +} +}),new objj_method(sel_getUid("removeAllItems"),function(_23,_24){ +with(_23){ +var _25=objj_msgSend(_menu,"numberOfItems"); +while(_25--){ +objj_msgSend(_menu,"removeItemAtIndex:",0); +} +} +}),new objj_method(sel_getUid("removeItemWithTitle:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(_26,"removeItemAtIndex:",objj_msgSend(_26,"indexOfItemWithTitle:",_28)); +objj_msgSend(_26,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_menu,"removeItemAtIndex:",_2b); +objj_msgSend(_29,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("selectedItem"),function(_2c,_2d){ +with(_2c){ +if(_selectedIndex<0||_selectedIndex>objj_msgSend(_2c,"numberOfItems")-1){ +return nil; +} +return objj_msgSend(_menu,"itemAtIndex:",_selectedIndex); +} +}),new objj_method(sel_getUid("titleOfSelectedItem"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(objj_msgSend(_2e,"selectedItem"),"title"); +} +}),new objj_method(sel_getUid("indexOfSelectedItem"),function(_30,_31){ +with(_30){ +return _selectedIndex; +} +}),new objj_method(sel_getUid("objectValue"),function(_32,_33){ +with(_32){ +return _selectedIndex; +} +}),new objj_method(sel_getUid("selectItem:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_34,"selectItemAtIndex:",objj_msgSend(_34,"indexOfItem:",_36)); +} +}),new objj_method(sel_getUid("selectItemAtIndex:"),function(_37,_38,_39){ +with(_37){ +if(_selectedIndex==_39){ +return; +} +if(_selectedIndex>=0&&!objj_msgSend(_37,"pullsDown")){ +objj_msgSend(objj_msgSend(_37,"selectedItem"),"setState:",CPOffState); +} +_selectedIndex=_39; +if(_selectedIndex>=0&&!objj_msgSend(_37,"pullsDown")){ +objj_msgSend(objj_msgSend(_37,"selectedItem"),"setState:",CPOnState); +} +objj_msgSend(_37,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("selectItemWithTag:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSend(_3a,"selectItemAtIndex:",objj_msgSend(_3a,"indexOfItemWithTag:",_3c)); +} +}),new objj_method(sel_getUid("selectItemWithTitle:"),function(_3d,_3e,_3f){ +with(_3d){ +objj_msgSend(_3d,"selectItemAtIndex:",objj_msgSend(_3d,"indexOfItemWithTitle:",_3f)); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"selectItemAtIndex:",objj_msgSend(_42,"intValue")); +} +}),new objj_method(sel_getUid("menu"),function(_43,_44){ +with(_43){ +return _menu; +} +}),new objj_method(sel_getUid("setMenu:"),function(_45,_46,_47){ +with(_45){ +if(_menu===_47){ +return; +} +var _48=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_menu){ +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidAddItemNotification,_menu); +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidRemoveItemNotification,_menu); +} +_menu=_47; +if(_menu){ +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidAddItem:"),CPMenuDidAddItemNotification,_menu); +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidChangeItem:"),CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidRemoveItem:"),CPMenuDidRemoveItemNotification,_menu); +} +objj_msgSend(_45,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("numberOfItems"),function(_49,_4a){ +with(_49){ +return objj_msgSend(_menu,"numberOfItems"); +} +}),new objj_method(sel_getUid("itemArray"),function(_4b,_4c){ +with(_4b){ +return objj_msgSend(_menu,"itemArray"); +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_4d,_4e,_4f){ +with(_4d){ +return objj_msgSend(_menu,"itemAtIndex:",_4f); +} +}),new objj_method(sel_getUid("itemTitleAtIndex:"),function(_50,_51,_52){ +with(_50){ +return objj_msgSend(objj_msgSend(_menu,"itemAtIndex:",_52),"title"); +} +}),new objj_method(sel_getUid("itemTitles"),function(_53,_54){ +with(_53){ +var _55=[],_56=objj_msgSend(_53,"itemArray"),_57=0,_58=objj_msgSend(_56,"count"); +for(;_57<_58;++_57){ +_55.push(objj_msgSend(_56[_57],"title")); +} +return _55; +} +}),new objj_method(sel_getUid("itemWithTitle:"),function(_59,_5a,_5b){ +with(_59){ +return objj_msgSend(_menu,"itemAtIndex:",objj_msgSend(_menu,"indexOfItemWithTitle:",_5b)); +} +}),new objj_method(sel_getUid("lastItem"),function(_5c,_5d){ +with(_5c){ +return objj_msgSend(objj_msgSend(_menu,"itemArray"),"lastObject"); +} +}),new objj_method(sel_getUid("indexOfItem:"),function(_5e,_5f,_60){ +with(_5e){ +return objj_msgSend(_menu,"indexOfItem:",_60); +} +}),new objj_method(sel_getUid("indexOfItemWithTag:"),function(_61,_62,_63){ +with(_61){ +return objj_msgSend(_menu,"indexOfItemWithTag:",_63); +} +}),new objj_method(sel_getUid("indexOfItemWithTitle:"),function(_64,_65,_66){ +with(_64){ +return objj_msgSend(_menu,"indexOfItemWithTitle:",_66); +} +}),new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"),function(_67,_68,_69){ +with(_67){ +return objj_msgSend(_menu,"indexOfItemWithRepresentedObject:",_69); +} +}),new objj_method(sel_getUid("indexOfItemWithTarget:action:"),function(_6a,_6b,_6c,_6d){ +with(_6a){ +return objj_msgSend(_menu,"indexOfItemWithTarget:action:",_6c,_6d); +} +}),new objj_method(sel_getUid("preferredEdge"),function(_6e,_6f){ +with(_6e){ +return _preferredEdge; +} +}),new objj_method(sel_getUid("setPreferredEdge:"),function(_70,_71,_72){ +with(_70){ +_preferredEdge=_72; +} +}),new objj_method(sel_getUid("setTitle:"),function(_73,_74,_75){ +with(_73){ +if(objj_msgSend(_73,"title")===_75){ +return; +} +if(objj_msgSend(_73,"pullsDown")){ +var _76=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_76,"count")<=0){ +objj_msgSend(_73,"addItemWithTitle:",_75); +}else{ +objj_msgSend(_76[0],"setTitle:",_75); +objj_msgSend(_73,"synchronizeTitleAndSelectedItem"); +} +}else{ +var _77=objj_msgSend(_73,"indexOfItemWithTitle:",_75); +if(_77<0){ +objj_msgSend(_73,"addItemWithTitle:",_75); +_77=objj_msgSend(_73,"numberOfItems")-1; +} +objj_msgSend(_73,"selectItemAtIndex:",_77); +} +} +}),new objj_method(sel_getUid("setImage:"),function(_78,_79,_7a){ +with(_78){ +} +}),new objj_method(sel_getUid("synchronizeTitleAndSelectedItem"),function(_7b,_7c){ +with(_7b){ +var _7d=nil; +if(objj_msgSend(_7b,"pullsDown")){ +var _7e=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_7e,"count")>0){ +_7d=_7e[0]; +} +}else{ +_7d=objj_msgSend(_7b,"selectedItem"); +} +objj_msgSendSuper({receiver:_7b,super_class:objj_getClass("CPPopUpButton").super_class},"setImage:",objj_msgSend(_7d,"image")); +objj_msgSendSuper({receiver:_7b,super_class:objj_getClass("CPPopUpButton").super_class},"setTitle:",objj_msgSend(_7d,"title")); +} +}),new objj_method(sel_getUid("menuDidAddItem:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(objj_msgSend(_81,"userInfo"),"objectForKey:","CPMenuItemIndex"); +if(_selectedIndex<0){ +objj_msgSend(_7f,"selectItemAtIndex:",0); +}else{ +if(_82==_selectedIndex){ +objj_msgSend(_7f,"synchronizeTitleAndSelectedItem"); +}else{ +if(_82<_selectedIndex){ +++_selectedIndex; +} +} +} +if(_82==0&&objj_msgSend(_7f,"pullsDown")){ +var _83=objj_msgSend(_menu,"itemArray"); +objj_msgSend(_83[0],"setHidden:",YES); +if(_83.length>0){ +objj_msgSend(_83[1],"setHidden:",NO); +} +} +var _84=objj_msgSend(_menu,"itemArray")[_82],_85=objj_msgSend(_84,"action"); +if(!_85||(_85===sel_getUid("_popUpItemAction:"))){ +objj_msgSend(_84,"setTarget:",_7f); +objj_msgSend(_84,"setAction:",sel_getUid("_popUpItemAction:")); +} +} +}),new objj_method(sel_getUid("menuDidChangeItem:"),function(_86,_87,_88){ +with(_86){ +var _89=objj_msgSend(objj_msgSend(_88,"userInfo"),"objectForKey:","CPMenuItemIndex"); +if(objj_msgSend(_86,"pullsDown")&&_89!=0){ +return; +} +if(!objj_msgSend(_86,"pullsDown")&&_89!=_selectedIndex){ +return; +} +objj_msgSend(_86,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("menuDidRemoveItem:"),function(_8a,_8b,_8c){ +with(_8a){ +var _8d=objj_msgSend(_8a,"numberOfItems"); +if(_8d<=_selectedIndex&&_8d>0){ +objj_msgSend(_8a,"selectItemAtIndex:",_8d-1); +}else{ +objj_msgSend(_8a,"synchronizeTitleAndSelectedItem"); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_8e,_8f,_90){ +with(_8e){ +if(!objj_msgSend(_8e,"isEnabled")||!objj_msgSend(_8e,"numberOfItems")){ +return; +} +objj_msgSend(_8e,"highlight:",YES); +var _91=objj_msgSend(_8e,"menu"),_92=objj_msgSend(_8e,"bounds"),_93=CGRectGetWidth(_92); +objj_msgSend(_91,"setFont:",objj_msgSend(_8e,"font")); +if(objj_msgSend(_8e,"pullsDown")){ +var _94=nil,_95=CGPointMake(0,CGRectGetMaxY(_92)); +}else{ +var _96=objj_msgSend(_8e,"contentRectForBounds:",_92),_94=objj_msgSend(_8e,"selectedItem"),_97=objj_msgSend(_CPMenuWindow,"_standardLeftMargin")+objj_msgSend(_CPMenuItemStandardView,"_standardLeftMargin"),_95=CGPointMake(CGRectGetMinX(_96)-_97,0); +_93+=_97; +objj_msgSend(_91,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(_91,"setMinimumWidth:",_93); +objj_msgSend(_91,"_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:",_94,_95,CGRectGetMinY(_92),CGRectGetMaxY(_92),_8e,function(_98){ +objj_msgSend(_8e,"highlight:",NO); +var _99=objj_msgSend(_98,"highlightedItem"); +if(objj_msgSend(_99,"_isSelectable")){ +objj_msgSend(_8e,"selectItem:",_99); +} +}); +} +}),new objj_method(sel_getUid("_popUpItemAction:"),function(_9a,_9b,_9c){ +with(_9a){ +objj_msgSend(_9a,"sendAction:to:",objj_msgSend(_9a,"action"),objj_msgSend(_9a,"target")); +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_9d,_9e,_9f,_a0){ +with(_9d){ +var _a1=_a0.length,_a2=objj_msgSend(_a0[0],"valueForKeyPath:",_9f); +objj_msgSend(_9d,"selectItemWithTag:",_a2); +objj_msgSend(_9d,"setEnabled:",YES); +while(_a1-->1){ +if(_a2!==objj_msgSend(_a0[_a1],"valueForKeyPath:",_9f)){ +objj_msgSend(objj_msgSend(_9d,"selectedItem"),"setState:",CPOffState); +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("themeClass"),function(_a3,_a4){ +with(_a3){ +return "popup-button"; +} +})]); +var _a5="CPPopUpButtonMenuKey",_a6="CPPopUpButtonSelectedIndexKey",_a7="CPPopUpButtonPullsDownKey"; +var _2=objj_getClass("CPPopUpButton"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPPopUpButton\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_a8,_a9,_aa){ +with(_a8){ +_a8=objj_msgSendSuper({receiver:_a8,super_class:objj_getClass("CPPopUpButton").super_class},"initWithCoder:",_aa); +if(_a8){ +_selectedIndex=-1; +objj_msgSend(_a8,"setMenu:",objj_msgSend(_aa,"decodeObjectForKey:",_a5)); +objj_msgSend(_a8,"selectItemAtIndex:",objj_msgSend(_aa,"decodeObjectForKey:",_a6)); +} +return _a8; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_ab,_ac,_ad){ +with(_ab){ +objj_msgSendSuper({receiver:_ab,super_class:objj_getClass("CPPopUpButton").super_class},"encodeWithCoder:",_ad); +objj_msgSend(_ad,"encodeObject:forKey:",_menu,_a5); +objj_msgSend(_ad,"encodeInt:forKey:",_selectedIndex,_a6); +} +})]); +p;21;CPProgressIndicator.jt;8302;@STATIC;1.0;I;19;AppKit/CGGeometry.jI;20;AppKit/CPImageView.jI;15;AppKit/CPView.jt;8214; +objj_executeFile("AppKit/CGGeometry.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPProgressIndicatorBarStyle=0; +CPProgressIndicatorSpinningStyle=1; +CPProgressIndicatorHUDBarStyle=2; +var _1=nil,_2=nil,_3=nil,_4=nil; +var _5=objj_allocateClassPair(CPView,"CPProgressIndicator"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_minValue"),new objj_ivar("_maxValue"),new objj_ivar("_doubleValue"),new objj_ivar("_controlSize"),new objj_ivar("_isIndeterminate"),new objj_ivar("_style"),new objj_ivar("_isAnimating"),new objj_ivar("_isDisplayedWhenStoppedSet"),new objj_ivar("_isDisplayedWhenStopped"),new objj_ivar("_barView")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPProgressIndicator").super_class},"initWithFrame:",_9); +if(_7){ +_minValue=0; +_maxValue=100; +_doubleValue=0; +_style=CPProgressIndicatorBarStyle; +_isDisplayedWhenStoppedSet=NO; +_controlSize=CPRegularControlSize; +objj_msgSend(_7,"updateBackgroundColor"); +objj_msgSend(_7,"drawBar"); +} +return _7; +} +}),new objj_method(sel_getUid("setUsesThreadedAnimation:"),function(_a,_b,_c){ +with(_a){ +} +}),new objj_method(sel_getUid("startAnimation:"),function(_d,_e,_f){ +with(_d){ +_isAnimating=YES; +objj_msgSend(_d,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("stopAnimation:"),function(_10,_11,_12){ +with(_10){ +_isAnimating=NO; +objj_msgSend(_10,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("usesThreadedAnimation"),function(_13,_14){ +with(_13){ +return NO; +} +}),new objj_method(sel_getUid("incrementBy:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"setDoubleValue:",_doubleValue+_17); +} +}),new objj_method(sel_getUid("setDoubleValue:"),function(_18,_19,_1a){ +with(_18){ +_doubleValue=MIN(MAX(_1a,_minValue),_maxValue); +objj_msgSend(_18,"drawBar"); +} +}),new objj_method(sel_getUid("doubleValue"),function(_1b,_1c){ +with(_1b){ +return _doubleValue; +} +}),new objj_method(sel_getUid("setMinValue:"),function(_1d,_1e,_1f){ +with(_1d){ +_minValue=_1f; +} +}),new objj_method(sel_getUid("minValue"),function(_20,_21){ +with(_20){ +return _minValue; +} +}),new objj_method(sel_getUid("setMaxValue:"),function(_22,_23,_24){ +with(_22){ +_maxValue=_24; +} +}),new objj_method(sel_getUid("maxValue"),function(_25,_26){ +with(_25){ +return _maxValue; +} +}),new objj_method(sel_getUid("setControlSize:"),function(_27,_28,_29){ +with(_27){ +if(_controlSize==_29){ +return; +} +_controlSize=_29; +objj_msgSend(_27,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("controlSize"),function(_2a,_2b){ +with(_2a){ +return _controlSize; +} +}),new objj_method(sel_getUid("setControlTint:"),function(_2c,_2d,_2e){ +with(_2c){ +} +}),new objj_method(sel_getUid("controlTint"),function(_2f,_30){ +with(_2f){ +return 0; +} +}),new objj_method(sel_getUid("setBezeled:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("isBezeled"),function(_34,_35){ +with(_34){ +return YES; +} +}),new objj_method(sel_getUid("setIndeterminate:"),function(_36,_37,_38){ +with(_36){ +if(_isIndeterminate==_38){ +return; +} +_isIndeterminate=_38; +objj_msgSend(_36,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("isIndeterminate"),function(_39,_3a){ +with(_39){ +return _isIndeterminate; +} +}),new objj_method(sel_getUid("setStyle:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_style==_3d){ +return; +} +_style=_3d; +objj_msgSend(_3b,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("sizeToFit"),function(_3e,_3f){ +with(_3e){ +if(_style==CPProgressIndicatorSpinningStyle){ +objj_msgSend(_3e,"setFrameSize:",objj_msgSend(objj_msgSend(_1[_controlSize],"patternImage"),"size")); +}else{ +objj_msgSend(_3e,"setFrameSize:",CGSizeMake(CGRectGetWidth(objj_msgSend(_3e,"frame")),_4[_2+"BezelBorder"+_3[CPProgressIndicatorBarStyle]+_CPControlIdentifierForControlSize(_controlSize)][0].height)); +} +} +}),new objj_method(sel_getUid("setDisplayedWhenStopped:"),function(_40,_41,_42){ +with(_40){ +if(_isDisplayedWhenStoppedSet&&_isDisplayedWhenStopped==_42){ +return; +} +_isDisplayedWhenStoppedSet=YES; +_isDisplayedWhenStopped=_42; +objj_msgSend(_40,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("isDisplayedWhenStopped"),function(_43,_44){ +with(_43){ +if(_isDisplayedWhenStoppedSet){ +return _isDisplayedWhenStopped; +} +if(_style==CPProgressIndicatorBarStyle||_style==CPProgressIndicatorHUDBarStyle){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("_hideOrDisplay"),function(_45,_46){ +with(_45){ +objj_msgSend(_45,"setHidden:",!_isAnimating&&!objj_msgSend(_45,"isDisplayedWhenStopped")); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_47,_48,_49){ +with(_47){ +objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPProgressIndicator").super_class},"setFrameSize:",_49); +objj_msgSend(_47,"drawBar"); +} +}),new objj_method(sel_getUid("drawBar"),function(_4a,_4b){ +with(_4a){ +if(_style==CPProgressIndicatorSpinningStyle){ +return; +} +if(!_barView){ +_barView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,16)); +objj_msgSend(_4a,"addSubview:",_barView); +} +objj_msgSend(_barView,"setBackgroundColor:",_CPControlThreePartImagePattern(NO,_4,_2,"Bar",_3[_style],_CPControlIdentifierForControlSize(_controlSize))); +var _4c=CGRectGetWidth(objj_msgSend(_4a,"bounds")),_4d=_4c*((_doubleValue-_minValue)/(_maxValue-_minValue)); +if(_4d>0&&_4d<4){ +_4d=4; +} +objj_msgSend(_barView,"setFrameSize:",CGSizeMake(_4d,16)); +} +}),new objj_method(sel_getUid("updateBackgroundColor"),function(_4e,_4f){ +with(_4e){ +if(YES){ +if(_style==CPProgressIndicatorSpinningStyle){ +objj_msgSend(_barView,"removeFromSuperview"); +_barView=nil; +objj_msgSend(_4e,"setBackgroundColor:",_1[_controlSize]); +}else{ +objj_msgSend(_4e,"setBackgroundColor:",_CPControlThreePartImagePattern(NO,_4,_2,"BezelBorder",_3[_style],_CPControlIdentifierForControlSize(_controlSize))); +objj_msgSend(_4e,"drawBar"); +} +}else{ +objj_msgSend(_4e,"setBackgroundColor:",nil); +} +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("initialize"),function(_50,_51){ +with(_50){ +if(_50!=objj_msgSend(CPProgressIndicator,"class")){ +return; +} +var _52=objj_msgSend(CPBundle,"bundleForClass:",_50); +_1=[]; +_1[CPMiniControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +_1[CPSmallControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +_1[CPRegularControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +CPProgressIndicatorBezelBorderViewPool=[]; +var _53=CPProgressIndicatorBarStyle,end=CPProgressIndicatorHUDBarStyle; +for(;_53<=end;++_53){ +CPProgressIndicatorBezelBorderViewPool[_53]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPMiniControlSize]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPSmallControlSize]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPRegularControlSize]=[]; +} +_2=objj_msgSend(_50,"className"); +_3=[]; +_3[CPProgressIndicatorBarStyle]="Bar"; +_3[CPProgressIndicatorSpinningStyle]="Spinny"; +_3[CPProgressIndicatorHUDBarStyle]="HUDBar"; +var _54=_CPControlIdentifierForControlSize(CPRegularControlSize),_55=_CPControlIdentifierForControlSize(CPSmallControlSize),_56=_CPControlIdentifierForControlSize(CPMiniControlSize); +_4=[]; +var _57=[_2+"BezelBorder"+_3[CPProgressIndicatorBarStyle],_2+"Bar"+_3[CPProgressIndicatorBarStyle],_2+"BezelBorder"+_3[CPProgressIndicatorHUDBarStyle],_2+"Bar"+_3[CPProgressIndicatorHUDBarStyle]]; +for(var i=0,_58=_57.length;i<_58;i++){ +var _59=_57[i]; +_4[_59+_54]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +_4[_59+_55]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +_4[_59+_56]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +} +} +})]); +p;9;CPRadio.jt;5564;@STATIC;1.0;I;21;Foundation/CPObject.jI;18;Foundation/CPSet.ji;10;CPButton.jt;5481; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPSet.j",NO); +objj_executeFile("CPButton.j",YES); +CPRadioImageOffset=4; +var _1=objj_allocateClassPair(CPButton,"CPRadio"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_radioGroup")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:radioGroup:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPRadio").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setRadioGroup:",_6); +objj_msgSend(_3,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_3,"setShowsStateBy:",CPContentsCellMask); +objj_msgSend(_3,"setImagePosition:",CPImageLeft); +objj_msgSend(_3,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_3,"setBordered:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(_7,"initWithFrame:radioGroup:",_9,objj_msgSend(CPRadioGroup,"new")); +} +}),new objj_method(sel_getUid("nextState"),function(_a,_b){ +with(_a){ +return CPOnState; +} +}),new objj_method(sel_getUid("setRadioGroup:"),function(_c,_d,_e){ +with(_c){ +if(_radioGroup===_e){ +return; +} +objj_msgSend(_radioGroup,"_removeRadio:",_c); +_radioGroup=_e; +objj_msgSend(_radioGroup,"_addRadio:",_c); +} +}),new objj_method(sel_getUid("radioGroup"),function(_f,_10){ +with(_f){ +return _radioGroup; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_11,_12,_13){ +with(_11){ +objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPRadio").super_class},"setObjectValue:",_13); +if(objj_msgSend(_11,"state")===CPOnState){ +objj_msgSend(_radioGroup,"_setSelectedRadio:",_11); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("radioWithTitle:theme:"),function(_14,_15,_16,_17){ +with(_14){ +return objj_msgSend(_14,"buttonWithTitle:theme:",_16,_17); +} +}),new objj_method(sel_getUid("radioWithTitle:"),function(_18,_19,_1a){ +with(_18){ +return objj_msgSend(_18,"buttonWithTitle:",_1a); +} +}),new objj_method(sel_getUid("standardButtonWithTitle:"),function(_1b,_1c,_1d){ +with(_1b){ +var _1e=objj_msgSend(objj_msgSend(CPRadio,"alloc"),"init"); +objj_msgSend(_1e,"setTitle:",_1d); +return _1e; +} +}),new objj_method(sel_getUid("themeClass"),function(_1f,_20){ +with(_1f){ +return "radio"; +} +})]); +var _21="CPRadioRadioGroupKey"; +var _1=objj_getClass("CPRadio"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPRadio\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("CPRadio").super_class},"initWithCoder:",_24); +if(_22){ +_radioGroup=objj_msgSend(_24,"decodeObjectForKey:",_21); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPRadio").super_class},"encodeWithCoder:",_27); +objj_msgSend(_27,"encodeObject:forKey:",_radioGroup,_21); +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPRadioGroup"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_radios"),new objj_ivar("_selectedRadio"),new objj_ivar("_target"),new objj_ivar("_action")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("target"),function(_28,_29){ +with(_28){ +return _target; +} +}),new objj_method(sel_getUid("setTarget:"),function(_2a,_2b,_2c){ +with(_2a){ +_target=_2c; +} +}),new objj_method(sel_getUid("action"),function(_2d,_2e){ +with(_2d){ +return _action; +} +}),new objj_method(sel_getUid("setAction:"),function(_2f,_30,_31){ +with(_2f){ +_action=_31; +} +}),new objj_method(sel_getUid("init"),function(_32,_33){ +with(_32){ +_32=objj_msgSendSuper({receiver:_32,super_class:objj_getClass("CPRadioGroup").super_class},"init"); +if(_32){ +_radios=objj_msgSend(CPSet,"set"); +_selectedRadio=nil; +} +return _32; +} +}),new objj_method(sel_getUid("_addRadio:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_radios,"addObject:",_36); +if(objj_msgSend(_36,"state")===CPOnState){ +objj_msgSend(_34,"_setSelectedRadio:",_36); +} +} +}),new objj_method(sel_getUid("_removeRadio:"),function(_37,_38,_39){ +with(_37){ +if(_selectedRadio===_39){ +_selectedRadio=nil; +} +objj_msgSend(_radios,"removeObject:",_39); +} +}),new objj_method(sel_getUid("_setSelectedRadio:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_selectedRadio===_3c){ +return; +} +objj_msgSend(_selectedRadio,"setState:",CPOffState); +_selectedRadio=_3c; +objj_msgSend(CPApp,"sendAction:to:from:",_action,_target,_3a); +} +}),new objj_method(sel_getUid("selectedRadio"),function(_3d,_3e){ +with(_3d){ +return _selectedRadio; +} +}),new objj_method(sel_getUid("radios"),function(_3f,_40){ +with(_3f){ +return objj_msgSend(_radios,"allObjects"); +} +})]); +var _41="CPRadioGroupRadiosKey",_42="CPRadioGroupSelectedRadioKey"; +var _1=objj_getClass("CPRadioGroup"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPRadioGroup\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_43,_44,_45){ +with(_43){ +_43=objj_msgSendSuper({receiver:_43,super_class:objj_getClass("CPRadioGroup").super_class},"init"); +if(_43){ +_radios=objj_msgSend(_45,"decodeObjectForKey:",_41); +_selectedRadio=objj_msgSend(_45,"decodeObjectForKey:",_42); +} +return _43; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_46,_47,_48){ +with(_46){ +objj_msgSend(_48,"encodeObject:forKey:",_radios,_41); +objj_msgSend(_48,"encodeObject:forKey:",_selectedRadio,_42); +} +})]); +p;13;CPResponder.jt;5773;@STATIC;1.0;I;21;Foundation/CPObject.jt;5728; +objj_executeFile("Foundation/CPObject.j",NO); +CPDeleteKeyCode=8; +CPTabKeyCode=9; +CPReturnKeyCode=13; +CPEscapeKeyCode=27; +CPSpaceKeyCode=32; +CPPageUpKeyCode=33; +CPPageDownKeyCode=34; +CPLeftArrowKeyCode=37; +CPUpArrowKeyCode=38; +CPRightArrowKeyCode=39; +CPDownArrowKeyCode=40; +CPDeleteForwardKeyCode=46; +var _1=objj_allocateClassPair(CPObject,"CPResponder"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_menu"),new objj_ivar("_nextResponder")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("acceptsFirstResponder"),function(_3,_4){ +with(_3){ +return NO; +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(_5,_6){ +with(_5){ +return YES; +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_7,_8){ +with(_7){ +return YES; +} +}),new objj_method(sel_getUid("setNextResponder:"),function(_9,_a,_b){ +with(_9){ +_nextResponder=_b; +} +}),new objj_method(sel_getUid("nextResponder"),function(_c,_d){ +with(_c){ +return _nextResponder; +} +}),new objj_method(sel_getUid("interpretKeyEvents:"),function(_e,_f,_10){ +with(_e){ +var _11=0,_12=objj_msgSend(_10,"count"); +for(;_11<_12;++_11){ +var _13=_10[_11],_14=objj_msgSend(_13,"modifierFlags"),_15=objj_msgSend(_13,"charactersIgnoringModifiers"),_16=objj_msgSend(CPKeyBinding,"selectorsForKey:modifierFlags:",_15,_14); +if(_16){ +for(var s=0,_17=_16.length;s<_17;s++){ +var _18=_16[s]; +if(!_18){ +continue; +} +objj_msgSend(_e,"doCommandBySelector:",CPSelectorFromString(_18)); +} +}else{ +if(!(_14&(CPCommandKeyMask|CPControlKeyMask))&&objj_msgSend(_e,"respondsToSelector:",sel_getUid("insertText:"))){ +objj_msgSend(_e,"insertText:",objj_msgSend(_13,"characters")); +} +} +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_19,_1a,_1b){ +with(_19){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_1a,_1b); +} +}),new objj_method(sel_getUid("rightMouseDown:"),function(_1c,_1d,_1e){ +with(_1c){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_1d,_1e); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_1f,_20,_21){ +with(_1f){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_20,_21); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_23,_24); +} +}),new objj_method(sel_getUid("rightMouseUp:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_26,_27); +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_28,_29,_2a){ +with(_28){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_29,_2a); +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_2c,_2d); +} +}),new objj_method(sel_getUid("mouseExited:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_2f,_30); +} +}),new objj_method(sel_getUid("scrollWheel:"),function(_31,_32,_33){ +with(_31){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_32,_33); +} +}),new objj_method(sel_getUid("keyDown:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_35,_36); +} +}),new objj_method(sel_getUid("keyUp:"),function(_37,_38,_39){ +with(_37){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_38,_39); +} +}),new objj_method(sel_getUid("flagsChanged:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_3b,_3c); +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_3d,_3e,_3f){ +with(_3d){ +return NO; +} +}),new objj_method(sel_getUid("insertLineBreak:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"insertNewline:",_42); +} +}),new objj_method(sel_getUid("insertNewline:"),function(_43,_44,_45){ +with(_43){ +objj_msgSend(objj_msgSend(_43,"nextResponder"),"insertNewline:",_45); +} +}),new objj_method(sel_getUid("cancel:"),function(_46,_47,_48){ +with(_46){ +} +}),new objj_method(sel_getUid("insertTab:"),function(_49,_4a,_4b){ +with(_49){ +} +}),new objj_method(sel_getUid("insertBackTab:"),function(_4c,_4d,_4e){ +with(_4c){ +} +}),new objj_method(sel_getUid("insertText:"),function(_4f,_50,_51){ +with(_4f){ +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_52,_53,_54){ +with(_52){ +if(objj_msgSend(_52,"respondsToSelector:",_54)){ +objj_msgSend(_52,"performSelector:",_54); +}else{ +objj_msgSend(_nextResponder,"doCommandBySelector:",_54); +} +} +}),new objj_method(sel_getUid("tryToPerform:with:"),function(_55,_56,_57,_58){ +with(_55){ +if(objj_msgSend(_55,"respondsToSelector:",_57)){ +objj_msgSend(_55,"performSelector:withObject:",_57,_58); +return YES; +} +return objj_msgSend(_nextResponder,"tryToPerform:with:",_57,_58); +} +}),new objj_method(sel_getUid("setMenu:"),function(_59,_5a,_5b){ +with(_59){ +_menu=_5b; +} +}),new objj_method(sel_getUid("menu"),function(_5c,_5d){ +with(_5c){ +return _menu; +} +}),new objj_method(sel_getUid("undoManager"),function(_5e,_5f){ +with(_5e){ +return objj_msgSend(_nextResponder,"performSelector:",_5f); +} +}),new objj_method(sel_getUid("noResponderFor:"),function(_60,_61,_62){ +with(_60){ +} +})]); +var _63="CPResponderNextResponderKey"; +var _1=objj_getClass("CPResponder"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPResponder\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_64,_65,_66){ +with(_64){ +_64=objj_msgSendSuper({receiver:_64,super_class:objj_getClass("CPResponder").super_class},"init"); +if(_64){ +_nextResponder=objj_msgSend(_66,"decodeObjectForKey:",_63); +} +return _64; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_67,_68,_69){ +with(_67){ +if(_nextResponder!==nil){ +objj_msgSend(_69,"encodeConditionalObject:forKey:",_nextResponder,_63); +} +} +})]); +p;13;CPSavePanel.jt;2744;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2704; +objj_executeFile("AppKit/CPPanel.j",NO); +var _1=objj_allocateClassPair(CPPanel,"CPSavePanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_URL"),new objj_ivar("_isExtensionHidden"),new objj_ivar("_canSelectHiddenExtension"),new objj_ivar("_allowsOtherFileTypes"),new objj_ivar("_canCreateDirectories"),new objj_ivar("_allowedFileTypes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isExtensionHidden"),function(_3,_4){ +with(_3){ +return _isExtensionHidden; +} +}),new objj_method(sel_getUid("setExtensionHidden:"),function(_5,_6,_7){ +with(_5){ +_isExtensionHidden=_7; +} +}),new objj_method(sel_getUid("canSelectHiddenExtension"),function(_8,_9){ +with(_8){ +return _canSelectHiddenExtension; +} +}),new objj_method(sel_getUid("setCanSelectHiddenExtension:"),function(_a,_b,_c){ +with(_a){ +_canSelectHiddenExtension=_c; +} +}),new objj_method(sel_getUid("allowsOtherFileTypes"),function(_d,_e){ +with(_d){ +return _allowsOtherFileTypes; +} +}),new objj_method(sel_getUid("setAllowsOtherFileTypes:"),function(_f,_10,_11){ +with(_f){ +_allowsOtherFileTypes=_11; +} +}),new objj_method(sel_getUid("canCreateDirectories"),function(_12,_13){ +with(_12){ +return _canCreateDirectories; +} +}),new objj_method(sel_getUid("setCanCreateDirectories:"),function(_14,_15,_16){ +with(_14){ +_canCreateDirectories=_16; +} +}),new objj_method(sel_getUid("allowedFileTypes"),function(_17,_18){ +with(_17){ +return _allowedFileTypes; +} +}),new objj_method(sel_getUid("setAllowedFileTypes:"),function(_19,_1a,_1b){ +with(_19){ +_allowedFileTypes=_1b; +} +}),new objj_method(sel_getUid("init"),function(_1c,_1d){ +with(_1c){ +if(_1c=objj_msgSendSuper({receiver:_1c,super_class:objj_getClass("CPSavePanel").super_class},"init")){ +_canCreateDirectories=YES; +} +return _1c; +} +}),new objj_method(sel_getUid("runModal"),function(_1e,_1f){ +with(_1e){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +if(typeof window["cpSavePanel"]==="function"){ +var _20=window.cpSavePanel({isExtensionHidden:_isExtensionHidden,canSelectHiddenExtension:_canSelectHiddenExtension,allowsOtherFileTypes:_allowsOtherFileTypes,canCreateDirectories:_canCreateDirectories,allowedFileTypes:_allowedFileTypes}),_21=_20.button; +_URL=_21?objj_msgSend(CPURL,"URLWithString:",_20.URL):nil; +}else{ +var _22=window.prompt("Document Name:"),_21=_22!==null; +_URL=_21?objj_msgSend(objj_msgSend(_1e,"class"),"proposedFileURLWithDocumentName:",_22):nil; +} +return _21; +} +}),new objj_method(sel_getUid("URL"),function(_23,_24){ +with(_23){ +return _URL; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("savePanel"),function(_25,_26){ +with(_25){ +return objj_msgSend(objj_msgSend(CPSavePanel,"alloc"),"init"); +} +})]); +p;10;CPScreen.jt;331;@STATIC;1.0;I;21;Foundation/CPObject.jt;287; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPScreen"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("visibleFrame"),function(_3,_4){ +with(_3){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +})]); +p;12;CPScroller.jt;16772;@STATIC;1.0;i;11;CPControl.jt;16736; +objj_executeFile("CPControl.j",YES); +CPScrollerNoPart=0; +CPScrollerDecrementPage=1; +CPScrollerKnob=2; +CPScrollerIncrementPage=3; +CPScrollerDecrementLine=4; +CPScrollerIncrementLine=5; +CPScrollerKnobSlot=6; +CPScrollerIncrementArrow=0; +CPScrollerDecrementArrow=1; +CPNoScrollerParts=0; +CPOnlyScrollerArrows=1; +CPAllScrollerParts=2; +var _1=[CPScrollerKnobSlot,CPScrollerDecrementLine,CPScrollerIncrementLine,CPScrollerKnob],_2={},_3={}; +_2[CPScrollerDecrementLine]="decrement-line"; +_2[CPScrollerIncrementLine]="increment-line"; +_2[CPScrollerKnobSlot]="knob-slot"; +_2[CPScrollerKnob]="knob"; +var _4=objj_allocateClassPair(CPControl,"CPScroller"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_controlSize"),new objj_ivar("_usableParts"),new objj_ivar("_partRects"),new objj_ivar("_isVertical"),new objj_ivar("_knobProportion"),new objj_ivar("_hitPart"),new objj_ivar("_trackingPart"),new objj_ivar("_trackingFloatValue"),new objj_ivar("_trackingStartPoint")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("isVertical"),function(_6,_7){ +with(_6){ +return _isVertical; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPScroller").super_class},"initWithFrame:",_a); +if(_8){ +_controlSize=CPRegularControlSize; +_partRects=[]; +objj_msgSend(_8,"setFloatValue:",0); +objj_msgSend(_8,"setKnobProportion:",1); +_hitPart=CPScrollerNoPart; +objj_msgSend(_8,"_calculateIsVertical"); +} +return _8; +} +}),new objj_method(sel_getUid("setControlSize:"),function(_b,_c,_d){ +with(_b){ +if(_controlSize==_d){ +return; +} +_controlSize=_d; +objj_msgSend(_b,"setNeedsLayout"); +objj_msgSend(_b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("controlSize"),function(_e,_f){ +with(_e){ +return _controlSize; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_10,_11,_12){ +with(_10){ +objj_msgSendSuper({receiver:_10,super_class:objj_getClass("CPScroller").super_class},"setObjectValue:",MIN(1,MAX(0,+_12))); +} +}),new objj_method(sel_getUid("setKnobProportion:"),function(_13,_14,_15){ +with(_13){ +_knobProportion=MIN(1,MAX(0.0001,_15)); +objj_msgSend(_13,"setNeedsDisplay:",YES); +objj_msgSend(_13,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("knobProportion"),function(_16,_17){ +with(_16){ +return _knobProportion; +} +}),new objj_method(sel_getUid("currentValueForThemeAttribute:"),function(_18,_19,_1a){ +with(_18){ +var _1b=_themeState; +if(_2[_hitPart]+"-color"!==_1a){ +_1b&=~CPThemeStateHighlighted; +} +return objj_msgSend(_18,"valueForThemeAttribute:inState:",_1a,_1b); +} +}),new objj_method(sel_getUid("rectForPart:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_1e==CPScrollerNoPart){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +return _partRects[_1e]; +} +}),new objj_method(sel_getUid("testPart:"),function(_1f,_20,_21){ +with(_1f){ +_21=objj_msgSend(_1f,"convertPoint:fromView:",_21,nil); +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerKnob),_21)){ +return CPScrollerKnob; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerDecrementPage),_21)){ +return CPScrollerDecrementPage; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerIncrementPage),_21)){ +return CPScrollerIncrementPage; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerDecrementLine),_21)){ +return CPScrollerDecrementLine; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerIncrementLine),_21)){ +return CPScrollerIncrementLine; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerKnobSlot),_21)){ +return CPScrollerKnobSlot; +} +return CPScrollerNoPart; +} +}),new objj_method(sel_getUid("checkSpaceForParts"),function(_22,_23){ +with(_22){ +var _24=objj_msgSend(_22,"bounds"); +if(_knobProportion===1){ +_usableParts=CPNoScrollerParts; +_partRects[CPScrollerDecrementPage]=CGRectMakeZero(); +_partRects[CPScrollerKnob]=CGRectMakeZero(); +_partRects[CPScrollerIncrementPage]=CGRectMakeZero(); +_partRects[CPScrollerDecrementLine]=CGRectMakeZero(); +_partRects[CPScrollerIncrementLine]=CGRectMakeZero(); +_partRects[CPScrollerKnobSlot]=CGRectMakeCopy(_24); +return; +} +_usableParts=CPAllScrollerParts; +var _25=objj_msgSend(_22,"currentValueForThemeAttribute:","knob-inset"),_26=objj_msgSend(_22,"currentValueForThemeAttribute:","track-inset"),_27=(_24.size.width),_28=(_24.size.height); +if(objj_msgSend(_22,"isVertical")){ +var _29=objj_msgSend(_22,"currentValueForThemeAttribute:","decrement-line-size"),_2a=objj_msgSend(_22,"currentValueForThemeAttribute:","increment-line-size"),_2b=_29.height+_26.top,_2c=_2a.height+_26.bottom,_2d=_28-_2b-_2c,_2e=objj_msgSend(_22,"currentValueForThemeAttribute:","minimum-knob-length"),_2f=_27-_25.left-_25.right,_30=MAX(_2e,(_2d*_knobProportion)),_31=_2b+(_2d-_30)*objj_msgSend(_22,"floatValue"); +_partRects[CPScrollerDecrementPage]={origin:{x:0,y:_2b},size:{width:_27,height:_31-_2b}}; +_partRects[CPScrollerKnob]={origin:{x:_25.left,y:_31},size:{width:_2f,height:_30}}; +_partRects[CPScrollerIncrementPage]={origin:{x:0,y:_31+_30},size:{width:_27,height:_28-(_31+_30)-_2c}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_26.left,y:_2b},size:{width:_27-_26.left-_26.right,height:_2d}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:_29.width,height:_29.height}}; +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:_28-_2a.height},size:{width:_2a.width,height:_2a.height}}; +if(_28<_30+_29.height+_2a.height+_26.top+_26.bottom){ +_partRects[CPScrollerKnob]={origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_28<_29.height+_2a.height-2){ +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_26.left,y:0},size:{width:_27-_26.left-_26.right,height:_28}}; +} +}else{ +var _29=objj_msgSend(_22,"currentValueForThemeAttribute:","decrement-line-size"),_2a=objj_msgSend(_22,"currentValueForThemeAttribute:","increment-line-size"),_32=_29.width+_26.left,_33=_2a.width+_26.right; +slotWidth=_27-_32-_33,_2e=objj_msgSend(_22,"currentValueForThemeAttribute:","minimum-knob-length"),_2f=MAX(_2e,(slotWidth*_knobProportion)),_30=_28-_25.top-_25.bottom,_31=_32+(slotWidth-_2f)*objj_msgSend(_22,"floatValue"); +_partRects[CPScrollerDecrementPage]={origin:{x:_32,y:0},size:{width:_31-_32,height:_28}}; +_partRects[CPScrollerKnob]={origin:{x:_31,y:_25.top},size:{width:_2f,height:_30}}; +_partRects[CPScrollerIncrementPage]={origin:{x:_31+_2f,y:0},size:{width:_27-(_31+_2f)-_33,height:_28}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_32,y:_26.top},size:{width:slotWidth,height:_28-_26.top-_26.bottom}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:_29.width,height:_29.height}}; +_partRects[CPScrollerIncrementLine]={origin:{x:_27-_2a.width,y:0},size:{width:_2a.width,height:_2a.height}}; +if(_27<_2f+_29.width+_2a.width+_26.left+_26.right){ +_partRects[CPScrollerKnob]={origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_27<_29.width+_2a.width-2){ +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerKnobSlot]={origin:{x:0,y:0},size:{width:_27,height:_2d}}; +} +} +} +}),new objj_method(sel_getUid("usableParts"),function(_34,_35){ +with(_34){ +return _usableParts; +} +}),new objj_method(sel_getUid("drawArrow:highlight:"),function(_36,_37,_38,_39){ +with(_36){ +} +}),new objj_method(sel_getUid("drawKnob"),function(_3a,_3b){ +with(_3a){ +} +}),new objj_method(sel_getUid("drawKnobSlot"),function(_3c,_3d){ +with(_3c){ +} +}),new objj_method(sel_getUid("createViewForPart:"),function(_3e,_3f,_40){ +with(_3e){ +var _41=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_41,"setHitTests:",NO); +return _41; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_42,_43,_44){ +with(_42){ +return _partRects[_44]; +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_45,_46,_47){ +with(_45){ +var _48=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_48,"setHitTests:",NO); +return _48; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"checkSpaceForParts"); +var _4b=0,_4c=_1.length; +for(;_4b<_4c;++_4b){ +var _4d=_1[_4b]; +if(_4b===0){ +view=objj_msgSend(_49,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:",_4d,CPWindowBelow,_1[_4b+1]); +}else{ +view=objj_msgSend(_49,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:",_4d,CPWindowAbove,_1[_4b-1]); +} +if(view){ +objj_msgSend(view,"setBackgroundColor:",objj_msgSend(_49,"currentValueForThemeAttribute:",_2[_4d]+"-color")); +} +} +} +}),new objj_method(sel_getUid("drawParts"),function(_4e,_4f){ +with(_4e){ +objj_msgSend(_4e,"drawKnobSlot"); +objj_msgSend(_4e,"drawKnob"); +objj_msgSend(_4e,"drawArrow:highlight:",CPScrollerDecrementArrow,NO); +objj_msgSend(_4e,"drawArrow:highlight:",CPScrollerIncrementArrow,NO); +} +}),new objj_method(sel_getUid("hitPart"),function(_50,_51){ +with(_50){ +return _hitPart; +} +}),new objj_method(sel_getUid("trackKnob:"),function(_52,_53,_54){ +with(_52){ +var _55=objj_msgSend(_54,"type"); +if(_55===CPLeftMouseUp){ +_hitPart=CPScrollerNoPart; +return; +} +if(_55===CPLeftMouseDown){ +_trackingFloatValue=objj_msgSend(_52,"floatValue"); +_trackingStartPoint=objj_msgSend(_52,"convertPoint:fromView:",objj_msgSend(_54,"locationInWindow"),nil); +}else{ +if(_55===CPLeftMouseDragged){ +var _56=objj_msgSend(_52,"rectForPart:",CPScrollerKnob),_57=objj_msgSend(_52,"rectForPart:",CPScrollerKnobSlot),_58=!objj_msgSend(_52,"isVertical")?((_57.size.width)-(_56.size.width)):((_57.size.height)-(_56.size.height)); +if(_58<=0){ +objj_msgSend(_52,"setFloatValue:",0); +}else{ +var _59=objj_msgSend(_52,"convertPoint:fromView:",objj_msgSend(_54,"locationInWindow"),nil),_5a=!objj_msgSend(_52,"isVertical")?_59.x-_trackingStartPoint.x:_59.y-_trackingStartPoint.y; +objj_msgSend(_52,"setFloatValue:",_trackingFloatValue+_5a/_58); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_52,sel_getUid("trackKnob:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +objj_msgSend(_52,"sendAction:to:",objj_msgSend(_52,"action"),objj_msgSend(_52,"target")); +} +}),new objj_method(sel_getUid("trackScrollButtons:"),function(_5b,_5c,_5d){ +with(_5b){ +var _5e=objj_msgSend(_5d,"type"); +if(_5e===CPLeftMouseUp){ +objj_msgSend(_5b,"highlight:",NO); +objj_msgSend(CPEvent,"stopPeriodicEvents"); +_hitPart=CPScrollerNoPart; +return; +} +if(_5e===CPLeftMouseDown){ +_trackingPart=objj_msgSend(_5b,"hitPart"); +_trackingStartPoint=objj_msgSend(_5b,"convertPoint:fromView:",objj_msgSend(_5d,"locationInWindow"),nil); +if(objj_msgSend(_5d,"modifierFlags")&CPAlternateKeyMask){ +if(_trackingPart==CPScrollerDecrementLine){ +_hitPart=CPScrollerDecrementPage; +}else{ +if(_trackingPart==CPScrollerIncrementLine){ +_hitPart=CPScrollerIncrementPage; +}else{ +if(_trackingPart==CPScrollerDecrementPage||_trackingPart==CPScrollerIncrementPage){ +var _5f=objj_msgSend(_5b,"rectForPart:",CPScrollerKnob),_60=!objj_msgSend(_5b,"isVertical")?(_5f.size.width):(_5f.size.height),_61=objj_msgSend(_5b,"rectForPart:",CPScrollerKnobSlot),_62=(!objj_msgSend(_5b,"isVertical")?(_61.size.width):(_61.size.height))-_60; +objj_msgSend(_5b,"setFloatValue:",((!objj_msgSend(_5b,"isVertical")?_trackingStartPoint.x-(_61.origin.x):_trackingStartPoint.y-(_61.origin.y))-_60/2)/_62); +_hitPart=CPScrollerKnob; +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +return objj_msgSend(_5b,"trackKnob:",_5d); +} +} +} +} +objj_msgSend(_5b,"highlight:",YES); +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +objj_msgSend(CPEvent,"startPeriodicEventsAfterDelay:withPeriod:",0.5,0.04); +}else{ +if(_5e===CPLeftMouseDragged){ +_trackingStartPoint=objj_msgSend(_5b,"convertPoint:fromView:",objj_msgSend(_5d,"locationInWindow"),nil); +if(_trackingPart==CPScrollerDecrementPage||_trackingPart==CPScrollerIncrementPage){ +var _63=objj_msgSend(_5b,"testPart:",objj_msgSend(_5d,"locationInWindow")); +if(_63==CPScrollerDecrementPage||_63==CPScrollerIncrementPage){ +_trackingPart=_63; +_hitPart=_63; +} +} +objj_msgSend(_5b,"highlight:",CGRectContainsPoint(objj_msgSend(_5b,"rectForPart:",_trackingPart),_trackingStartPoint)); +}else{ +if(_5e==CPPeriodic&&CGRectContainsPoint(objj_msgSend(_5b,"rectForPart:",_trackingPart),_trackingStartPoint)){ +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_5b,sel_getUid("trackScrollButtons:"),CPPeriodicMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("_calculateIsVertical"),function(_64,_65){ +with(_64){ +var _66=objj_msgSend(_64,"bounds"),_67=(_66.size.width),_68=(_66.size.height); +_isVertical=_67<_68?1:(_67>_68?0:-1); +if(_isVertical===1){ +objj_msgSend(_64,"setThemeState:",CPThemeStateVertical); +}else{ +if(_isVertical===0){ +objj_msgSend(_64,"unsetThemeState:",CPThemeStateVertical); +} +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_69,_6a,_6b){ +with(_69){ +objj_msgSendSuper({receiver:_69,super_class:objj_getClass("CPScroller").super_class},"setFrameSize:",_6b); +objj_msgSend(_69,"checkSpaceForParts"); +objj_msgSend(_69,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_6c,_6d,_6e){ +with(_6c){ +if(!objj_msgSend(_6c,"isEnabled")){ +return; +} +_hitPart=objj_msgSend(_6c,"testPart:",objj_msgSend(_6e,"locationInWindow")); +switch(_hitPart){ +case CPScrollerKnob: +return objj_msgSend(_6c,"trackKnob:",_6e); +case CPScrollerDecrementLine: +case CPScrollerIncrementLine: +case CPScrollerDecrementPage: +case CPScrollerIncrementPage: +return objj_msgSend(_6c,"trackScrollButtons:",_6e); +} +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("themeClass"),function(_6f,_70){ +with(_6f){ +return "scroller"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_71,_72){ +with(_71){ +return objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{"scroller-width":15,"knob-slot-color":objj_msgSend(CPColor,"lightGrayColor"),"decrement-line-color":objj_msgSend(CPNull,"null"),"increment-line-color":objj_msgSend(CPNull,"null"),"knob-color":objj_msgSend(CPColor,"grayColor"),"decrement-line-size":{width:0,height:0},"increment-line-size":{width:0,height:0},"track-inset":{top:(0),right:(0),bottom:(0),left:(0)},"knob-inset":{top:(0),right:(0),bottom:(0),left:(0)},"minimum-knob-length":21}); +} +}),new objj_method(sel_getUid("scrollerWidth"),function(_73,_74){ +with(_73){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPScroller,"alloc"),"init"),"currentValueForThemeAttribute:","scroller-width"); +} +}),new objj_method(sel_getUid("scrollerWidthForControlSize:"),function(_75,_76,_77){ +with(_75){ +return objj_msgSend(_75,"scrollerWidth"); +} +})]); +var _78="CPScrollerControlSize",_79="CPScrollerKnobProportion"; +var _4=objj_getClass("CPScroller"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_7a,_7b,_7c){ +with(_7a){ +if(_7a=objj_msgSendSuper({receiver:_7a,super_class:objj_getClass("CPScroller").super_class},"initWithCoder:",_7c)){ +_controlSize=CPRegularControlSize; +if(objj_msgSend(_7c,"containsValueForKey:",_78)){ +_controlSize=objj_msgSend(_7c,"decodeIntForKey:",_78); +} +_knobProportion=1; +if(objj_msgSend(_7c,"containsValueForKey:",_79)){ +_knobProportion=objj_msgSend(_7c,"decodeFloatForKey:",_79); +} +_partRects=[]; +_hitPart=CPScrollerNoPart; +objj_msgSend(_7a,"_calculateIsVertical"); +var _7d=objj_msgSend(_7a,"frame"),_7e=objj_msgSend(CPScroller,"scrollerWidth"); +if(objj_msgSend(_7a,"isVertical")&&CGRectGetWidth(_7d)!==_7e){ +_7d.size.width=_7e; +} +if(!objj_msgSend(_7a,"isVertical")&&CGRectGetHeight(_7d)!==_7e){ +_7d.size.height=_7e; +} +objj_msgSend(_7a,"setFrame:",_7d); +} +return _7a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSendSuper({receiver:_7f,super_class:objj_getClass("CPScroller").super_class},"encodeWithCoder:",_81); +objj_msgSend(_81,"encodeInt:forKey:",_controlSize,_78); +objj_msgSend(_81,"encodeFloat:forKey:",_knobProportion,_79); +} +})]); +var _4=objj_getClass("CPScroller"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("setFloatValue:knobProportion:"),function(_82,_83,_84,_85){ +with(_82){ +objj_msgSend(_82,"setFloatValue:",_84); +objj_msgSend(_82,"setKnobProportion:",_85); +} +})]); +p;14;CPScrollView.jt;26736;@STATIC;1.0;i;8;CPView.ji;12;CPClipView.ji;12;CPScroller.jt;26670; +objj_executeFile("CPView.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPScroller.j",YES); +var _1=objj_allocateClassPair(CPView,"CPScrollView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentView"),new objj_ivar("_headerClipView"),new objj_ivar("_cornerView"),new objj_ivar("_bottomCornerView"),new objj_ivar("_hasVerticalScroller"),new objj_ivar("_hasHorizontalScroller"),new objj_ivar("_autohidesScrollers"),new objj_ivar("_verticalScroller"),new objj_ivar("_horizontalScroller"),new objj_ivar("_recursionCount"),new objj_ivar("_verticalLineScroll"),new objj_ivar("_verticalPageScroll"),new objj_ivar("_horizontalLineScroll"),new objj_ivar("_horizontalPageScroll"),new objj_ivar("_borderType")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPScrollView").super_class},"initWithFrame:",_5); +if(_3){ +_verticalLineScroll=10; +_verticalPageScroll=10; +_horizontalLineScroll=10; +_horizontalPageScroll=10; +_borderType=CPNoBorder; +_contentView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"initWithFrame:",objj_msgSend(_3,"_insetBounds")); +objj_msgSend(_3,"addSubview:",_contentView); +_headerClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"init"); +objj_msgSend(_3,"addSubview:",_headerClipView); +_bottomCornerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_3,"addSubview:",_bottomCornerView); +objj_msgSend(_3,"setHasVerticalScroller:",YES); +objj_msgSend(_3,"setHasHorizontalScroller:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("_insetBounds"),function(_6,_7){ +with(_6){ +return objj_msgSend(objj_msgSend(_6,"class"),"_insetBounds:borderType:",objj_msgSend(_6,"bounds"),_borderType); +} +}),new objj_method(sel_getUid("contentSize"),function(_8,_9){ +with(_8){ +return objj_msgSend(_contentView,"frame").size; +} +}),new objj_method(sel_getUid("documentView"),function(_a,_b){ +with(_a){ +return objj_msgSend(_contentView,"documentView"); +} +}),new objj_method(sel_getUid("setContentView:"),function(_c,_d,_e){ +with(_c){ +if(_contentView!==_e||!_e){ +return; +} +var _f=objj_msgSend(_e,"documentView"); +if(_f){ +objj_msgSend(_f,"removeFromSuperview"); +} +objj_msgSend(_contentView,"removeFromSuperview"); +_contentView=_e; +objj_msgSend(_contentView,"setDocumentView:",_f); +objj_msgSend(_c,"addSubview:",_contentView); +objj_msgSend(_c,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("contentView"),function(_10,_11){ +with(_10){ +return _contentView; +} +}),new objj_method(sel_getUid("setDocumentView:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_contentView,"setDocumentView:",_14); +objj_msgSend(_12,"_updateCornerAndHeaderView"); +objj_msgSend(_12,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(_15,_16,_17){ +with(_15){ +if(_contentView!==_17){ +return; +} +if(_recursionCount>5){ +return; +} +++_recursionCount; +var _18=objj_msgSend(_15,"documentView"); +if(!_18){ +if(_autohidesScrollers){ +objj_msgSend(_verticalScroller,"setHidden:",YES); +objj_msgSend(_horizontalScroller,"setHidden:",YES); +}else{ +} +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_15,"_insetBounds")); +objj_msgSend(_headerClipView,"setFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +--_recursionCount; +return; +} +var _19=objj_msgSend(_18,"frame"),_1a=objj_msgSend(_15,"_insetBounds"),_1b=objj_msgSend(_15,"_headerClipViewFrame"),_1c=(_1b.size.height); +_1a.origin.y+=_1c; +_1a.size.height-=_1c; +var _1d={width:(_19.size.width)-(_1a.size.width),height:(_19.size.height)-(_1a.size.height)},_1e=(objj_msgSend(_verticalScroller,"frame").size.width),_1f=(objj_msgSend(_horizontalScroller,"frame").size.height),_20=_1d.height>0,_21=_1d.width>0,_22=_hasVerticalScroller&&(!_autohidesScrollers||_20),_23=_hasHorizontalScroller&&(!_autohidesScrollers||_21); +if(_22){ +_1d.width+=_1e; +_21=_1d.width>0; +_23=_hasHorizontalScroller&&(!_autohidesScrollers||_21); +} +if(_23){ +_1d.height+=_1f; +_20=_1d.height>0; +_22=_hasVerticalScroller&&(!_autohidesScrollers||_20); +} +objj_msgSend(_verticalScroller,"setHidden:",!_22); +objj_msgSend(_verticalScroller,"setEnabled:",_20); +objj_msgSend(_horizontalScroller,"setHidden:",!_23); +objj_msgSend(_horizontalScroller,"setEnabled:",_21); +if(_22){ +_1a.size.width-=_1e; +} +if(_23){ +_1a.size.height-=_1f; +} +var _24=objj_msgSend(_contentView,"bounds").origin,_25=!objj_msgSend(_verticalScroller,"isHidden"),_26=!objj_msgSend(_horizontalScroller,"isHidden"); +if(_22){ +var _27=MAX((_1a.origin.y),MAX((objj_msgSend(_15,"_cornerViewFrame").origin.y+objj_msgSend(_15,"_cornerViewFrame").size.height),(_1b.origin.y+_1b.size.height))); +var _28=(_1a.origin.y+_1a.size.height)-_27; +objj_msgSend(_verticalScroller,"setFloatValue:",(_1d.height<=0)?0:_24.y/_1d.height); +objj_msgSend(_verticalScroller,"setKnobProportion:",(_1a.size.height)/(_19.size.height)); +objj_msgSend(_verticalScroller,"setFrame:",{origin:{x:(_1a.origin.x+_1a.size.width),y:_27},size:{width:_1e,height:_28}}); +}else{ +if(_25){ +objj_msgSend(_verticalScroller,"setFloatValue:",0); +objj_msgSend(_verticalScroller,"setKnobProportion:",1); +} +} +if(_23){ +objj_msgSend(_horizontalScroller,"setFloatValue:",(_1d.width<=0)?0:_24.x/_1d.width); +objj_msgSend(_horizontalScroller,"setKnobProportion:",(_1a.size.width)/(_19.size.width)); +objj_msgSend(_horizontalScroller,"setFrame:",{origin:{x:(_1a.origin.x),y:(_1a.origin.y+_1a.size.height)},size:{width:(_1a.size.width),height:_1f}}); +}else{ +if(_26){ +objj_msgSend(_horizontalScroller,"setFloatValue:",0); +objj_msgSend(_horizontalScroller,"setKnobProportion:",1); +} +} +objj_msgSend(_contentView,"setFrame:",_1a); +objj_msgSend(_headerClipView,"setFrame:",_1b); +objj_msgSend(_cornerView,"setFrame:",objj_msgSend(_15,"_cornerViewFrame")); +objj_msgSend(objj_msgSend(_15,"bottomCornerView"),"setFrame:",objj_msgSend(_15,"_bottomCornerViewFrame")); +objj_msgSend(objj_msgSend(_15,"bottomCornerView"),"setBackgroundColor:",objj_msgSend(_15,"currentValueForThemeAttribute:","bottom-corner-color")); +--_recursionCount; +} +}),new objj_method(sel_getUid("setBorderType:"),function(_29,_2a,_2b){ +with(_29){ +if(_borderType==_2b){ +return; +} +_borderType=_2b; +objj_msgSend(_29,"reflectScrolledClipView:",_contentView); +objj_msgSend(_29,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderType"),function(_2c,_2d){ +with(_2c){ +return _borderType; +} +}),new objj_method(sel_getUid("setHorizontalScroller:"),function(_2e,_2f,_30){ +with(_2e){ +if(_horizontalScroller===_30){ +return; +} +objj_msgSend(_horizontalScroller,"removeFromSuperview"); +objj_msgSend(_horizontalScroller,"setTarget:",nil); +objj_msgSend(_horizontalScroller,"setAction:",nil); +_horizontalScroller=_30; +objj_msgSend(_horizontalScroller,"setTarget:",_2e); +objj_msgSend(_horizontalScroller,"setAction:",sel_getUid("_horizontalScrollerDidScroll:")); +objj_msgSend(_2e,"addSubview:",_horizontalScroller); +objj_msgSend(_2e,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("horizontalScroller"),function(_31,_32){ +with(_31){ +return _horizontalScroller; +} +}),new objj_method(sel_getUid("setHasHorizontalScroller:"),function(_33,_34,_35){ +with(_33){ +if(_hasHorizontalScroller===_35){ +return; +} +_hasHorizontalScroller=_35; +if(_hasHorizontalScroller&&!_horizontalScroller){ +var _36=objj_msgSend(_33,"_insetBounds"); +objj_msgSend(_33,"setHorizontalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",CGRectMake(0,0,MAX((_36.size.width),objj_msgSend(CPScroller,"scrollerWidth")+1),objj_msgSend(CPScroller,"scrollerWidth")))); +objj_msgSend(objj_msgSend(_33,"horizontalScroller"),"setFrameSize:",CGSizeMake((_36.size.width),objj_msgSend(CPScroller,"scrollerWidth"))); +} +objj_msgSend(_33,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("hasHorizontalScroller"),function(_37,_38){ +with(_37){ +return _hasHorizontalScroller; +} +}),new objj_method(sel_getUid("setVerticalScroller:"),function(_39,_3a,_3b){ +with(_39){ +if(_verticalScroller===_3b){ +return; +} +objj_msgSend(_verticalScroller,"removeFromSuperview"); +objj_msgSend(_verticalScroller,"setTarget:",nil); +objj_msgSend(_verticalScroller,"setAction:",nil); +_verticalScroller=_3b; +objj_msgSend(_verticalScroller,"setTarget:",_39); +objj_msgSend(_verticalScroller,"setAction:",sel_getUid("_verticalScrollerDidScroll:")); +objj_msgSend(_39,"addSubview:",_verticalScroller); +objj_msgSend(_39,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("verticalScroller"),function(_3c,_3d){ +with(_3c){ +return _verticalScroller; +} +}),new objj_method(sel_getUid("setHasVerticalScroller:"),function(_3e,_3f,_40){ +with(_3e){ +if(_hasVerticalScroller===_40){ +return; +} +_hasVerticalScroller=_40; +if(_hasVerticalScroller&&!_verticalScroller){ +var _41=objj_msgSend(_3e,"_insetBounds"); +objj_msgSend(_3e,"setVerticalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:objj_msgSend(CPScroller,"scrollerWidth"),height:MAX((_41.size.height),objj_msgSend(CPScroller,"scrollerWidth")+1)}})); +objj_msgSend(objj_msgSend(_3e,"verticalScroller"),"setFrameSize:",CGSizeMake(objj_msgSend(CPScroller,"scrollerWidth"),(_41.size.height))); +} +objj_msgSend(_3e,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("hasVerticalScroller"),function(_42,_43){ +with(_42){ +return _hasVerticalScroller; +} +}),new objj_method(sel_getUid("setAutohidesScrollers:"),function(_44,_45,_46){ +with(_44){ +if(_autohidesScrollers==_46){ +return; +} +_autohidesScrollers=_46; +objj_msgSend(_44,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("autohidesScrollers"),function(_47,_48){ +with(_47){ +return _autohidesScrollers; +} +}),new objj_method(sel_getUid("_updateCornerAndHeaderView"),function(_49,_4a){ +with(_49){ +var _4b=objj_msgSend(_49,"documentView"),_4c=objj_msgSend(_49,"_headerView"),_4d=objj_msgSend(_4b,"respondsToSelector:",sel_getUid("headerView"))?objj_msgSend(_4b,"headerView"):nil; +if(_4c!==_4d){ +objj_msgSend(_4c,"removeFromSuperview"); +objj_msgSend(_headerClipView,"setDocumentView:",_4d); +} +var _4e=objj_msgSend(_4b,"respondsToSelector:",sel_getUid("cornerView"))?objj_msgSend(_4b,"cornerView"):nil; +if(_cornerView!==_4e){ +objj_msgSend(_cornerView,"removeFromSuperview"); +_cornerView=_4e; +if(_cornerView){ +objj_msgSend(_49,"addSubview:",_cornerView); +} +} +objj_msgSend(_49,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("_headerView"),function(_4f,_50){ +with(_4f){ +return objj_msgSend(_headerClipView,"documentView"); +} +}),new objj_method(sel_getUid("_cornerViewFrame"),function(_51,_52){ +with(_51){ +if(!_cornerView){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _53=objj_msgSend(_51,"_insetBounds"),_54=objj_msgSend(_cornerView,"frame"); +_54.origin.x=(_53.origin.x+_53.size.width)-(_54.size.width); +_54.origin.y=(_53.origin.y); +return _54; +} +}),new objj_method(sel_getUid("_headerClipViewFrame"),function(_55,_56){ +with(_55){ +var _57=objj_msgSend(_55,"_headerView"); +if(!_57){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _58=objj_msgSend(_55,"_insetBounds"); +_58.size.height=(objj_msgSend(_57,"frame").size.height); +_58.size.width-=(objj_msgSend(_55,"_cornerViewFrame").size.width); +return _58; +} +}),new objj_method(sel_getUid("_bottomCornerViewFrame"),function(_59,_5a){ +with(_59){ +if(objj_msgSend(objj_msgSend(_59,"horizontalScroller"),"isHidden")||objj_msgSend(objj_msgSend(_59,"verticalScroller"),"isHidden")){ +return CGRectMakeZero(); +} +var _5b=objj_msgSend(objj_msgSend(_59,"verticalScroller"),"frame"),_5c=CGRectMakeZero(); +_5c.origin.x=CGRectGetMinX(_5b); +_5c.origin.y=CGRectGetMaxY(_5b); +_5c.size.width=objj_msgSend(CPScroller,"scrollerWidth"); +_5c.size.height=objj_msgSend(CPScroller,"scrollerWidth"); +return _5c; +} +}),new objj_method(sel_getUid("setBottomCornerView:"),function(_5d,_5e,_5f){ +with(_5d){ +if(_bottomCornerView===_5f){ +return; +} +objj_msgSend(_bottomCornerView,"removeFromSuperview"); +objj_msgSend(_5f,"setFrame:",objj_msgSend(_5d,"_bottomCornerViewFrame")); +objj_msgSend(_5d,"addSubview:",_5f); +_bottomCornerView=_5f; +objj_msgSend(_5d,"_updateCornerAndHeaderView"); +} +}),new objj_method(sel_getUid("bottomCornerView"),function(_60,_61){ +with(_60){ +return _bottomCornerView; +} +}),new objj_method(sel_getUid("_verticalScrollerDidScroll:"),function(_62,_63,_64){ +with(_62){ +var _65=objj_msgSend(_64,"floatValue"),_66=objj_msgSend(objj_msgSend(_contentView,"documentView"),"frame"),_67=objj_msgSend(_contentView,"bounds"); +switch(objj_msgSend(_verticalScroller,"hitPart")){ +case CPScrollerDecrementLine: +_67.origin.y-=_verticalLineScroll; +break; +case CPScrollerIncrementLine: +_67.origin.y+=_verticalLineScroll; +break; +case CPScrollerDecrementPage: +_67.origin.y-=(_67.size.height)-_verticalPageScroll; +break; +case CPScrollerIncrementPage: +_67.origin.y+=(_67.size.height)-_verticalPageScroll; +break; +case CPScrollerKnobSlot: +case CPScrollerKnob: +default: +_67.origin.y=ROUND(_65*((_66.size.height)-(_67.size.height))); +} +objj_msgSend(_contentView,"scrollToPoint:",_67.origin); +} +}),new objj_method(sel_getUid("_horizontalScrollerDidScroll:"),function(_68,_69,_6a){ +with(_68){ +var _6b=objj_msgSend(_6a,"floatValue"),_6c=objj_msgSend(objj_msgSend(_68,"documentView"),"frame"),_6d=objj_msgSend(_contentView,"bounds"); +switch(objj_msgSend(_horizontalScroller,"hitPart")){ +case CPScrollerDecrementLine: +_6d.origin.x-=_horizontalLineScroll; +break; +case CPScrollerIncrementLine: +_6d.origin.x+=_horizontalLineScroll; +break; +case CPScrollerDecrementPage: +_6d.origin.x-=(_6d.size.width)-_horizontalPageScroll; +break; +case CPScrollerIncrementPage: +_6d.origin.x+=(_6d.size.width)-_horizontalPageScroll; +break; +case CPScrollerKnobSlot: +case CPScrollerKnob: +default: +_6d.origin.x=ROUND(_6b*((_6c.size.width)-(_6d.size.width))); +} +objj_msgSend(_contentView,"scrollToPoint:",_6d.origin); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_6d.origin.x,0)); +} +}),new objj_method(sel_getUid("tile"),function(_6e,_6f){ +with(_6e){ +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_70,_71,_72){ +with(_70){ +objj_msgSend(_70,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("setLineScroll:"),function(_73,_74,_75){ +with(_73){ +objj_msgSend(_73,"setHorizonalLineScroll:",_75); +objj_msgSend(_73,"setVerticalLineScroll:",_75); +} +}),new objj_method(sel_getUid("lineScroll"),function(_76,_77){ +with(_76){ +return objj_msgSend(_76,"horizontalLineScroll"); +} +}),new objj_method(sel_getUid("setHorizontalLineScroll:"),function(_78,_79,_7a){ +with(_78){ +_horizontalLineScroll=_7a; +} +}),new objj_method(sel_getUid("horizontalLineScroll"),function(_7b,_7c){ +with(_7b){ +return _horizontalLineScroll; +} +}),new objj_method(sel_getUid("setVerticalLineScroll:"),function(_7d,_7e,_7f){ +with(_7d){ +_verticalLineScroll=_7f; +} +}),new objj_method(sel_getUid("verticalLineScroll"),function(_80,_81){ +with(_80){ +return _verticalLineScroll; +} +}),new objj_method(sel_getUid("setPageScroll:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(_82,"setHorizontalPageScroll:",_84); +objj_msgSend(_82,"setVerticalPageScroll:",_84); +} +}),new objj_method(sel_getUid("pageScroll"),function(_85,_86){ +with(_85){ +return objj_msgSend(_85,"horizontalPageScroll"); +} +}),new objj_method(sel_getUid("setHorizontalPageScroll:"),function(_87,_88,_89){ +with(_87){ +_horizontalPageScroll=_89; +} +}),new objj_method(sel_getUid("horizontalPageScroll"),function(_8a,_8b){ +with(_8a){ +return _horizontalPageScroll; +} +}),new objj_method(sel_getUid("setVerticalPageScroll:"),function(_8c,_8d,_8e){ +with(_8c){ +_verticalPageScroll=_8e; +} +}),new objj_method(sel_getUid("verticalPageScroll"),function(_8f,_90){ +with(_8f){ +return _verticalPageScroll; +} +}),new objj_method(sel_getUid("drawRect:"),function(_91,_92,_93){ +with(_91){ +objj_msgSendSuper({receiver:_91,super_class:objj_getClass("CPScrollView").super_class},"drawRect:",_93); +if(_borderType==CPNoBorder){ +return; +} +var _94=objj_msgSend(_91,"bounds"),_95=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetLineWidth(_95,1); +switch(_borderType){ +case CPLineBorder: +CGContextSetStrokeColor(_95,objj_msgSend(_91,"currentValueForThemeAttribute:","border-color")); +CGContextStrokeRect(_95,{origin:{x:_94.origin.x+0.5,y:_94.origin.y+0.5},size:{width:_94.size.width-2*0.5,height:_94.size.height-2*0.5}}); +break; +case CPBezelBorder: +objj_msgSend(_91,"_drawGrayBezelInContext:bounds:",_95,_94); +break; +case CPGrooveBorder: +objj_msgSend(_91,"_drawGrooveInContext:bounds:",_95,_94); +break; +default: +break; +} +} +}),new objj_method(sel_getUid("_drawGrayBezelInContext:bounds:"),function(_96,_97,_98,_99){ +with(_96){ +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",142/255,1)); +var y=(_99.origin.y)+0.5; +CGContextMoveToPoint(_98,(_99.origin.x),y); +CGContextAddLineToPoint(_98,(_99.origin.x)+1,y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",192/255,1)); +CGContextMoveToPoint(_98,(_99.origin.x)+1,y); +CGContextAddLineToPoint(_98,(_99.origin.x+_99.size.width)-1,y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",142/255,1)); +CGContextMoveToPoint(_98,(_99.origin.x+_99.size.width)-1,y); +CGContextAddLineToPoint(_98,(_99.origin.x+_99.size.width),y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",190/255,1)); +var x=(_99.origin.x+_99.size.width)-0.5; +CGContextMoveToPoint(_98,x,(_99.origin.y)+1); +CGContextAddLineToPoint(_98,x,(_99.origin.y+_99.size.height)); +CGContextMoveToPoint(_98,x-0.5,(_99.origin.y+_99.size.height)-0.5); +CGContextAddLineToPoint(_98,(_99.origin.x),(_99.origin.y+_99.size.height)-0.5); +x=(_99.origin.x)+0.5; +CGContextMoveToPoint(_98,x,(_99.origin.y+_99.size.height)); +CGContextAddLineToPoint(_98,x,(_99.origin.y)+1); +CGContextStrokePath(_98); +} +}),new objj_method(sel_getUid("_drawGrooveInContext:bounds:"),function(_9a,_9b,_9c,_9d){ +with(_9a){ +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"colorWithWhite:alpha:",159/255,1)); +var y=(_9d.origin.y)+0.5; +CGContextMoveToPoint(_9c,(_9d.origin.x),y); +CGContextAddLineToPoint(_9c,(_9d.origin.x+_9d.size.width),y); +var x=(_9d.origin.x+_9d.size.width)-1.5; +CGContextMoveToPoint(_9c,x,(_9d.origin.y)+2); +CGContextAddLineToPoint(_9c,x,(_9d.origin.y+_9d.size.height)-1); +y=(_9d.origin.y+_9d.size.height)-1.5; +CGContextMoveToPoint(_9c,(_9d.origin.x+_9d.size.width)-1,y); +CGContextAddLineToPoint(_9c,(_9d.origin.x)+2,y); +x=(_9d.origin.x)+0.5; +CGContextMoveToPoint(_9c,x,(_9d.origin.y+_9d.size.height)); +CGContextAddLineToPoint(_9c,x,(_9d.origin.y)); +CGContextStrokePath(_9c); +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"whiteColor")); +var _9e={origin:{x:_9d.origin.x+1,y:_9d.origin.y+1},size:{width:_9d.size.width,height:_9d.size.height}}; +_9e.size.width-=1; +_9e.size.height-=1; +CGContextStrokeRect(_9c,{origin:{x:_9e.origin.x+0.5,y:_9e.origin.y+0.5},size:{width:_9e.size.width-2*0.5,height:_9e.size.height-2*0.5}}); +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"colorWithWhite:alpha:",192/255,1)); +y=(_9d.origin.y)+2.5; +CGContextMoveToPoint(_9c,(_9d.origin.x)+2,y); +CGContextAddLineToPoint(_9c,(_9d.origin.x+_9d.size.width)-2,y); +CGContextStrokePath(_9c); +} +}),new objj_method(sel_getUid("scrollWheel:"),function(_9f,_a0,_a1){ +with(_9f){ +objj_msgSend(_9f,"_respondToScrollWheelEventWithDeltaX:deltaY:",objj_msgSend(_a1,"deltaX"),objj_msgSend(_a1,"deltaY")); +} +}),new objj_method(sel_getUid("_respondToScrollWheelEventWithDeltaX:deltaY:"),function(_a2,_a3,_a4,_a5){ +with(_a2){ +var _a6=objj_msgSend(objj_msgSend(_a2,"documentView"),"frame"),_a7=objj_msgSend(_contentView,"bounds"),_a8=objj_msgSend(_contentView,"frame"),_a9=objj_msgSend(_a2,"enclosingScrollView"); +_a7.origin.x=ROUND(_a7.origin.x+_a4); +_a7.origin.y=ROUND(_a7.origin.y+_a5); +var _aa=objj_msgSend(_contentView,"constrainScrollPoint:",CGPointCreateCopy(_a7.origin)),_ab=_a7.origin.x-_aa.x,_ac=_a7.origin.y-_aa.y; +objj_msgSend(_contentView,"scrollToPoint:",_aa); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_aa.x,0)); +if(_ab||_ac){ +objj_msgSend(_a9,"_respondToScrollWheelEventWithDeltaX:deltaY:",_ab,_ac); +} +} +}),new objj_method(sel_getUid("keyDown:"),function(_ad,_ae,_af){ +with(_ad){ +objj_msgSend(_ad,"interpretKeyEvents:",[_af]); +} +}),new objj_method(sel_getUid("pageUp:"),function(_b0,_b1,_b2){ +with(_b0){ +var _b3=objj_msgSend(_contentView,"bounds"); +objj_msgSend(_b0,"moveByOffset:",CGSizeMake(0,-((_b3.size.height)-_verticalPageScroll))); +} +}),new objj_method(sel_getUid("pageDown:"),function(_b4,_b5,_b6){ +with(_b4){ +var _b7=objj_msgSend(_contentView,"bounds"); +objj_msgSend(_b4,"moveByOffset:",CGSizeMake(0,(_b7.size.height)-_verticalPageScroll)); +} +}),new objj_method(sel_getUid("moveLeft:"),function(_b8,_b9,_ba){ +with(_b8){ +objj_msgSend(_b8,"moveByOffset:",CGSizeMake(-_horizontalLineScroll,0)); +} +}),new objj_method(sel_getUid("moveRight:"),function(_bb,_bc,_bd){ +with(_bb){ +objj_msgSend(_bb,"moveByOffset:",CGSizeMake(_horizontalLineScroll,0)); +} +}),new objj_method(sel_getUid("moveUp:"),function(_be,_bf,_c0){ +with(_be){ +objj_msgSend(_be,"moveByOffset:",CGSizeMake(0,-_verticalLineScroll)); +} +}),new objj_method(sel_getUid("moveDown:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSend(_c1,"moveByOffset:",CGSizeMake(0,_verticalLineScroll)); +} +}),new objj_method(sel_getUid("moveByOffset:"),function(_c4,_c5,_c6){ +with(_c4){ +var _c7=objj_msgSend(objj_msgSend(_c4,"documentView"),"frame"),_c8=objj_msgSend(_contentView,"bounds"); +_c8.origin.x+=_c6.width; +_c8.origin.y+=_c6.height; +objj_msgSend(_contentView,"scrollToPoint:",_c8.origin); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_c8.origin,0)); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_c9,_ca){ +with(_c9){ +return "scrollview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_cb,_cc){ +with(_cb){ +return objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{"bottom-corner-color":objj_msgSend(CPColor,"whiteColor"),"border-color":objj_msgSend(CPColor,"blackColor")}); +} +}),new objj_method(sel_getUid("contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:"),function(_cd,_ce,_cf,_d0,_d1,_d2){ +with(_cd){ +var _d3=objj_msgSend(_cd,"_insetBounds:borderType:",{origin:{x:0,y:0},size:{width:_cf.width,height:_cf.height}},_d2),_d4=objj_msgSend(CPScroller,"scrollerWidth"); +if(_d0){ +_d3.size.height-=_d4; +} +if(_d1){ +_d3.size.width-=_d4; +} +return _d3.size; +} +}),new objj_method(sel_getUid("frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:"),function(_d5,_d6,_d7,_d8,_d9,_da){ +with(_d5){ +var _db=objj_msgSend(_d5,"_insetBounds:borderType:",{origin:{x:0,y:0},size:{width:_d7.width,height:_d7.height}},_da),_dc=_d7.width-_db.size.width,_dd=_d7.height-_db.size.height,_de={width:_d7.width+_dc,height:_d7.height+_dd},_df=objj_msgSend(CPScroller,"scrollerWidth"); +if(_d8){ +_de.height-=_df; +} +if(_d9){ +_de.width-=_df; +} +return _de; +} +}),new objj_method(sel_getUid("_insetBounds:borderType:"),function(_e0,_e1,_e2,_e3){ +with(_e0){ +switch(_e3){ +case CPLineBorder: +case CPBezelBorder: +return {origin:{x:_e2.origin.x+1,y:_e2.origin.y+1},size:{width:_e2.size.width-2*1,height:_e2.size.height-2*1}}; +case CPGrooveBorder: +_e2={origin:{x:_e2.origin.x+2,y:_e2.origin.y+2},size:{width:_e2.size.width-2*2,height:_e2.size.height-2*2}}; +++_e2.origin.y; +--_e2.size.height; +return _e2; +case CPNoBorder: +default: +return _e2; +} +} +})]); +var _e4="CPScrollViewContentView",_e5="CPScrollViewHeaderClipViewKey",_e6="CPScrollViewVLineScroll",_e7="CPScrollViewHLineScroll",_e8="CPScrollViewVPageScroll",_e9="CPScrollViewHPageScroll",_ea="CPScrollViewHasVScroller",_eb="CPScrollViewHasHScroller",_ec="CPScrollViewVScroller",_ed="CPScrollViewHScroller",_ee="CPScrollViewAutohidesScroller",_ef="CPScrollViewCornerViewKey",_f0="CPScrollViewBorderTypeKey"; +var _1=objj_getClass("CPScrollView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPScrollView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_f1,_f2,_f3){ +with(_f1){ +if(_f1=objj_msgSendSuper({receiver:_f1,super_class:objj_getClass("CPScrollView").super_class},"initWithCoder:",_f3)){ +_verticalLineScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e6); +_verticalPageScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e8); +_horizontalLineScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e7); +_horizontalPageScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e9); +_contentView=objj_msgSend(_f3,"decodeObjectForKey:",_e4); +_headerClipView=objj_msgSend(_f3,"decodeObjectForKey:",_e5); +if(!_headerClipView){ +_headerClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"init"); +objj_msgSend(_f1,"addSubview:",_headerClipView); +} +_bottomCornerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_f1,"addSubview:",_bottomCornerView); +_verticalScroller=objj_msgSend(_f3,"decodeObjectForKey:",_ec); +_horizontalScroller=objj_msgSend(_f3,"decodeObjectForKey:",_ed); +_hasVerticalScroller=objj_msgSend(_f3,"decodeBoolForKey:",_ea); +_hasHorizontalScroller=objj_msgSend(_f3,"decodeBoolForKey:",_eb); +_autohidesScrollers=objj_msgSend(_f3,"decodeBoolForKey:",_ee); +_borderType=objj_msgSend(_f3,"decodeIntForKey:",_f0); +_cornerView=objj_msgSend(_f3,"decodeObjectForKey:",_ef); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("reflectScrolledClipView:"),_f1,_contentView,0,[CPDefaultRunLoopMode]); +} +return _f1; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_f4,_f5,_f6){ +with(_f4){ +objj_msgSendSuper({receiver:_f4,super_class:objj_getClass("CPScrollView").super_class},"encodeWithCoder:",_f6); +objj_msgSend(_f6,"encodeObject:forKey:",_contentView,_e4); +objj_msgSend(_f6,"encodeObject:forKey:",_headerClipView,_e5); +objj_msgSend(_f6,"encodeObject:forKey:",_verticalScroller,_ec); +objj_msgSend(_f6,"encodeObject:forKey:",_horizontalScroller,_ed); +objj_msgSend(_f6,"encodeFloat:forKey:",_verticalLineScroll,_e6); +objj_msgSend(_f6,"encodeFloat:forKey:",_verticalPageScroll,_e8); +objj_msgSend(_f6,"encodeFloat:forKey:",_horizontalLineScroll,_e7); +objj_msgSend(_f6,"encodeFloat:forKey:",_horizontalPageScroll,_e9); +objj_msgSend(_f6,"encodeBool:forKey:",_hasVerticalScroller,_ea); +objj_msgSend(_f6,"encodeBool:forKey:",_hasHorizontalScroller,_eb); +objj_msgSend(_f6,"encodeBool:forKey:",_autohidesScrollers,_ee); +objj_msgSend(_f6,"encodeObject:forKey:",_cornerView,_ef); +objj_msgSend(_f6,"encodeInt:forKey:",_borderType,_f0); +} +})]); +p;15;CPSearchField.jt;21770;@STATIC;1.0;i;13;CPTextField.jt;21732; +objj_executeFile("CPTextField.j",YES); +CPSearchFieldRecentsTitleMenuItemTag=1000; +CPSearchFieldRecentsMenuItemTag=1001; +CPSearchFieldClearRecentsMenuItemTag=1002; +CPSearchFieldNoRecentsMenuItemTag=1003; +CPSearchFieldSeparatorMenuItemTag=1004; +var _1=nil,_2=nil,_3=nil,_4=nil; +var _5=25,_6=22,_7=22; +var _8=" "; +var _9=objj_allocateClassPair(CPTextField,"CPSearchField"),_a=_9.isa; +class_addIvars(_9,[new objj_ivar("_searchButton"),new objj_ivar("_cancelButton"),new objj_ivar("_searchMenuTemplate"),new objj_ivar("_searchMenu"),new objj_ivar("_recentsAutosaveName"),new objj_ivar("_recentSearches"),new objj_ivar("_maximumRecents"),new objj_ivar("_sendsWholeSearchString"),new objj_ivar("_sendsSearchStringImmediately"),new objj_ivar("_canResignFirstResponder"),new objj_ivar("_partialStringTimer")]); +objj_registerClassPair(_9); +class_addMethods(_9,[new objj_method(sel_getUid("initWithFrame:"),function(_b,_c,_d){ +with(_b){ +if(_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPSearchField").super_class},"initWithFrame:",_d)){ +_maximumRecents=10; +_sendsWholeSearchString=NO; +_sendsSearchStringImmediately=NO; +_recentsAutosaveName=nil; +objj_msgSend(_b,"_init"); +} +return _b; +} +}),new objj_method(sel_getUid("_init"),function(_e,_f){ +with(_e){ +_recentSearches=objj_msgSend(CPArray,"array"); +objj_msgSend(_e,"setBezeled:",YES); +objj_msgSend(_e,"setBezelStyle:",CPTextFieldRoundedBezel); +objj_msgSend(_e,"setBordered:",YES); +objj_msgSend(_e,"setEditable:",YES); +objj_msgSend(_e,"setDelegate:",_e); +objj_msgSend(_e,"setContinuous:",YES); +var _10=objj_msgSend(_e,"bounds"),_11=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",objj_msgSend(_e,"cancelButtonRectForBounds:",_10)),_12=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",objj_msgSend(_e,"searchButtonRectForBounds:",_10)); +objj_msgSend(_e,"setCancelButton:",_11); +objj_msgSend(_e,"resetCancelButton"); +objj_msgSend(_e,"setSearchButton:",_12); +objj_msgSend(_e,"resetSearchButton"); +_canResignFirstResponder=YES; +} +}),new objj_method(sel_getUid("setSearchButton:"),function(_13,_14,_15){ +with(_13){ +if(_15!=_searchButton){ +objj_msgSend(_searchButton,"removeFromSuperview"); +_searchButton=_15; +objj_msgSend(_searchButton,"setFrame:",objj_msgSend(_13,"searchButtonRectForBounds:",objj_msgSend(_13,"bounds"))); +objj_msgSend(_searchButton,"setAutoresizingMask:",CPViewMaxXMargin); +objj_msgSend(_13,"addSubview:",_searchButton); +} +} +}),new objj_method(sel_getUid("searchButton"),function(_16,_17){ +with(_16){ +return _searchButton; +} +}),new objj_method(sel_getUid("resetSearchButton"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_18,"searchButton"),_1b=(_searchMenuTemplate===nil)?_1:_2; +objj_msgSend(_1a,"setBordered:",NO); +objj_msgSend(_1a,"setImageScaling:",CPScaleToFit); +objj_msgSend(_1a,"setImage:",_1b); +objj_msgSend(_1a,"setAutoresizingMask:",CPViewMaxXMargin); +} +}),new objj_method(sel_getUid("setCancelButton:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_1e!=_cancelButton){ +objj_msgSend(_cancelButton,"removeFromSuperview"); +_cancelButton=_1e; +objj_msgSend(_cancelButton,"setFrame:",objj_msgSend(_1c,"cancelButtonRectForBounds:",objj_msgSend(_1c,"bounds"))); +objj_msgSend(_cancelButton,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_cancelButton,"setTarget:",_1c); +objj_msgSend(_cancelButton,"setAction:",sel_getUid("_searchFieldCancel:")); +objj_msgSend(_1c,"_updateCancelButtonVisibility"); +objj_msgSend(_1c,"addSubview:",_cancelButton); +} +} +}),new objj_method(sel_getUid("cancelButton"),function(_1f,_20){ +with(_1f){ +return _cancelButton; +} +}),new objj_method(sel_getUid("resetCancelButton"),function(_21,_22){ +with(_21){ +var _23=objj_msgSend(_21,"cancelButton"); +objj_msgSend(_23,"setBordered:",NO); +objj_msgSend(_23,"setImageScaling:",CPScaleToFit); +objj_msgSend(_23,"setImage:",_3); +objj_msgSend(_23,"setAlternateImage:",_4); +objj_msgSend(_23,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_23,"setTarget:",_21); +objj_msgSend(_23,"setAction:",sel_getUid("_searchFieldCancel:")); +} +}),new objj_method(sel_getUid("searchTextRectForBounds:"),function(_24,_25,_26){ +with(_24){ +var _27=0,_28=(_26.size.width),_29=objj_msgSend(_24,"bounds"); +if(_searchButton){ +var _2a=objj_msgSend(_24,"searchButtonRectForBounds:",_29); +_27=(_2a.origin.x+_2a.size.width)+2; +} +if(_cancelButton){ +var _2b=objj_msgSend(_24,"cancelButtonRectForBounds:",_29); +_28=(_2b.origin.x)-_27; +} +return {origin:{x:_27,y:(_26.origin.y)},size:{width:_28,height:(_26.size.height)}}; +} +}),new objj_method(sel_getUid("searchButtonRectForBounds:"),function(_2c,_2d,_2e){ +with(_2c){ +return {origin:{x:5,y:((_2e.size.height)-_7)/2},size:{width:_5,height:_7}}; +} +}),new objj_method(sel_getUid("cancelButtonRectForBounds:"),function(_2f,_30,_31){ +with(_2f){ +return {origin:{x:(_31.size.width)-_6-5,y:((_31.size.height)-_6)/2},size:{width:_7,height:_7}}; +} +}),new objj_method(sel_getUid("searchMenuTemplate"),function(_32,_33){ +with(_32){ +return _searchMenuTemplate; +} +}),new objj_method(sel_getUid("setSearchMenuTemplate:"),function(_34,_35,_36){ +with(_34){ +_searchMenuTemplate=_36; +objj_msgSend(_34,"resetSearchButton"); +objj_msgSend(_34,"_loadRecentSearchList"); +objj_msgSend(_34,"_updateSearchMenu"); +} +}),new objj_method(sel_getUid("sendsWholeSearchString"),function(_37,_38){ +with(_37){ +return _sendsWholeSearchString; +} +}),new objj_method(sel_getUid("setSendsWholeSearchString:"),function(_39,_3a,_3b){ +with(_39){ +_sendsWholeSearchString=_3b; +} +}),new objj_method(sel_getUid("sendsSearchStringImmediately"),function(_3c,_3d){ +with(_3c){ +return _sendsSearchStringImmediately; +} +}),new objj_method(sel_getUid("setSendsSearchStringImmediately:"),function(_3e,_3f,_40){ +with(_3e){ +_sendsSearchStringImmediately=_40; +} +}),new objj_method(sel_getUid("maximumRecents"),function(_41,_42){ +with(_41){ +return _maximumRecents; +} +}),new objj_method(sel_getUid("setMaximumRecents:"),function(_43,_44,max){ +with(_43){ +if(max>254){ +max=254; +}else{ +if(max<0){ +max=10; +} +} +_maximumRecents=max; +} +}),new objj_method(sel_getUid("recentSearches"),function(_45,_46){ +with(_45){ +return _recentSearches; +} +}),new objj_method(sel_getUid("setRecentSearches:"),function(_47,_48,_49){ +with(_47){ +var max=MIN(objj_msgSend(_47,"maximumRecents"),objj_msgSend(_49,"count")),_49=objj_msgSend(_49,"subarrayWithRange:",CPMakeRange(0,max)); +_recentSearches=_49; +objj_msgSend(_47,"_autosaveRecentSearchList"); +} +}),new objj_method(sel_getUid("recentsAutosaveName"),function(_4a,_4b){ +with(_4a){ +return _recentsAutosaveName; +} +}),new objj_method(sel_getUid("setRecentsAutosaveName:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_recentsAutosaveName!=nil){ +objj_msgSend(_4c,"_deregisterForAutosaveNotification"); +} +_recentsAutosaveName=_4e; +if(_recentsAutosaveName!=nil){ +objj_msgSend(_4c,"_registerForAutosaveNotification"); +} +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSendSuper({receiver:_4f,super_class:objj_getClass("CPSearchField").super_class},"contentRectForBounds:",_51); +return objj_msgSend(_4f,"searchTextRectForBounds:",_52); +} +}),new objj_method(sel_getUid("menu"),function(_53,_54){ +with(_53){ +return _searchMenu; +} +}),new objj_method(sel_getUid("isOpaque"),function(_55,_56){ +with(_55){ +return objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPSearchField").super_class},"isOpaque")&&objj_msgSend(_cancelButton,"isOpaque")&&objj_msgSend(_searchButton,"isOpaque"); +} +}),new objj_method(sel_getUid("_updateCancelButtonVisibility"),function(_57,_58){ +with(_57){ +objj_msgSend(_cancelButton,"setHidden:",(objj_msgSend(objj_msgSend(_57,"stringValue"),"length")===0)); +} +}),new objj_method(sel_getUid("controlTextDidChange:"),function(_59,_5a,_5b){ +with(_59){ +if(!objj_msgSend(_59,"sendsWholeSearchString")){ +if(objj_msgSend(_59,"sendsSearchStringImmediately")){ +objj_msgSend(_59,"_sendPartialString"); +}else{ +objj_msgSend(_partialStringTimer,"invalidate"); +var _5c=objj_msgSend(CPSearchField,"_keyboardDelayForPartialSearchString:",objj_msgSend(_59,"stringValue")); +_partialStringTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",_5c,_59,sel_getUid("_sendPartialString"),nil,NO); +} +} +objj_msgSend(_59,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_sendAction:"),function(_5d,_5e,_5f){ +with(_5d){ +objj_msgSend(_5d,"sendAction:to:",objj_msgSend(_5d,"action"),objj_msgSend(_5d,"target")); +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_60,_61,_62,_63){ +with(_60){ +objj_msgSendSuper({receiver:_60,super_class:objj_getClass("CPSearchField").super_class},"sendAction:to:",_62,_63); +objj_msgSend(_partialStringTimer,"invalidate"); +objj_msgSend(_60,"_addStringToRecentSearches:",objj_msgSend(_60,"stringValue")); +objj_msgSend(_60,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_addStringToRecentSearches:"),function(_64,_65,_66){ +with(_64){ +if(_66===nil||_66===""||objj_msgSend(_recentSearches,"containsObject:",_66)){ +return; +} +var _67=objj_msgSend(CPMutableArray,"arrayWithArray:",_recentSearches); +objj_msgSend(_67,"addObject:",_66); +objj_msgSend(_64,"setRecentSearches:",_67); +objj_msgSend(_64,"_updateSearchMenu"); +} +}),new objj_method(sel_getUid("hitTest:"),function(_68,_69,_6a){ +with(_68){ +if((_6a.x>=(objj_msgSend(_68,"frame").origin.x)&&_6a.y>=(objj_msgSend(_68,"frame").origin.y)&&_6a.x<(objj_msgSend(_68,"frame").origin.x+objj_msgSend(_68,"frame").size.width)&&_6a.y<(objj_msgSend(_68,"frame").origin.y+objj_msgSend(_68,"frame").size.height))){ +return _68; +}else{ +return nil; +} +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_6b,_6c){ +with(_6b){ +return _canResignFirstResponder&&objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPSearchField").super_class},"resignFirstResponder"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_6d,_6e,_6f){ +with(_6d){ +var _70=objj_msgSend(_6f,"locationInWindow"),_71=objj_msgSend(_6d,"convertPoint:fromView:",_70,nil); +if((_71.x>=(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x)&&_71.y>=(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y)&&_71.x<(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x+objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.width)&&_71.y<(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y+objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.height))){ +if(_searchMenuTemplate==nil){ +objj_msgSend(_6d,"_sendAction:",_6d); +}else{ +objj_msgSend(_6d,"_showMenu"); +} +}else{ +if((_71.x>=(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x)&&_71.y>=(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y)&&_71.x<(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x+objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.width)&&_71.y<(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y+objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.height))){ +objj_msgSend(_cancelButton,"mouseDown:",_6f); +}else{ +objj_msgSendSuper({receiver:_6d,super_class:objj_getClass("CPSearchField").super_class},"mouseDown:",_6f); +} +} +} +}),new objj_method(sel_getUid("defaultSearchMenuTemplate"),function(_72,_73){ +with(_72){ +var _74=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"init"),_75; +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Recent Searches",nil,""); +objj_msgSend(_75,"setTag:",CPSearchFieldRecentsTitleMenuItemTag); +objj_msgSend(_75,"setEnabled:",NO); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Recent search item",sel_getUid("_searchFieldSearch:"),""); +objj_msgSend(_75,"setTag:",CPSearchFieldRecentsMenuItemTag); +objj_msgSend(_75,"setTarget:",_72); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Clear Recent Searches",sel_getUid("_searchFieldClearRecents:"),""); +objj_msgSend(_75,"setTag:",CPSearchFieldClearRecentsMenuItemTag); +objj_msgSend(_75,"setTarget:",_72); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","No Recent Searches",nil,""); +objj_msgSend(_75,"setTag:",CPSearchFieldNoRecentsMenuItemTag); +objj_msgSend(_75,"setEnabled:",NO); +objj_msgSend(_74,"addItem:",_75); +return _74; +} +}),new objj_method(sel_getUid("_updateSearchMenu"),function(_76,_77){ +with(_76){ +if(_searchMenuTemplate===nil){ +return; +} +var _78=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"init"),_79=objj_msgSend(_recentSearches,"count"),_7a=objj_msgSend(_searchMenuTemplate,"numberOfItems"); +for(var i=0;i<_7a;i++){ +var _7b=objj_msgSend(objj_msgSend(_searchMenuTemplate,"itemAtIndex:",i),"copy"); +switch(objj_msgSend(_7b,"tag")){ +case CPSearchFieldRecentsTitleMenuItemTag: +if(_79===0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +break; +case CPSearchFieldRecentsMenuItemTag: +var _7c=sel_getUid("_searchFieldSearch:"); +for(var _7d=0;_7d<_79;++_7d){ +var _7e=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",_8+objj_msgSend(_recentSearches,"objectAtIndex:",_7d),_7c,objj_msgSend(_7b,"keyEquivalent")); +objj_msgSend(_7b,"setTarget:",_76); +objj_msgSend(_78,"addItem:",_7e); +} +continue; +case CPSearchFieldClearRecentsMenuItemTag: +if(_79===0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +objj_msgSend(_7b,"setAction:",sel_getUid("_searchFieldClearRecents:")); +objj_msgSend(_7b,"setTarget:",_76); +break; +case CPSearchFieldNoRecentsMenuItemTag: +if(_79!==0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +break; +case CPSearchFieldSeparatorMenuItemTag: +_7b=objj_msgSend(CPMenuItem,"separatorItem"); +objj_msgSend(_7b,"setEnabled:",NO); +objj_msgSend(_78,"addItem:",_7b); +continue; +} +objj_msgSend(_7b,"setEnabled:",(objj_msgSend(_7b,"isEnabled")&&objj_msgSend(_7b,"action")!=nil&&objj_msgSend(_7b,"target")!=nil)); +objj_msgSend(_78,"addItem:",_7b); +} +objj_msgSend(_78,"setDelegate:",_76); +_searchMenu=_78; +} +}),new objj_method(sel_getUid("_addSeparatorToMenu:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(CPMenuItem,"separatorItem"); +objj_msgSend(_82,"setEnabled:",NO); +objj_msgSend(_81,"addItem:",_82); +} +}),new objj_method(sel_getUid("menuWillOpen:"),function(_83,_84,_85){ +with(_83){ +_canResignFirstResponder=NO; +} +}),new objj_method(sel_getUid("menuDidClose:"),function(_86,_87,_88){ +with(_86){ +_canResignFirstResponder=YES; +objj_msgSend(_86,"becomeFirstResponder"); +} +}),new objj_method(sel_getUid("_showMenu"),function(_89,_8a){ +with(_89){ +if(_searchMenu===nil||objj_msgSend(_searchMenu,"numberOfItems")===0||!objj_msgSend(_89,"isEnabled")){ +return; +} +var _8b=objj_msgSend(objj_msgSend(_89,"superview"),"convertRect:toView:",objj_msgSend(_89,"frame"),nil),_8c=CPMakePoint(_8b.origin.x+10,_8b.origin.y+_8b.size.height-4); +var _8d=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPRightMouseDown,_8c,0,objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"timestamp"),objj_msgSend(objj_msgSend(_89,"window"),"windowNumber"),nil,1,1,0); +objj_msgSend(_89,"selectAll:",nil); +objj_msgSend(CPMenu,"popUpContextMenu:withEvent:forView:",_searchMenu,_8d,_89); +} +}),new objj_method(sel_getUid("_sendPartialString"),function(_8e,_8f){ +with(_8e){ +objj_msgSendSuper({receiver:_8e,super_class:objj_getClass("CPSearchField").super_class},"sendAction:to:",objj_msgSend(_8e,"action"),objj_msgSend(_8e,"target")); +objj_msgSend(_partialStringTimer,"invalidate"); +} +}),new objj_method(sel_getUid("_searchFieldCancel:"),function(_90,_91,_92){ +with(_90){ +objj_msgSend(_90,"setObjectValue:",""); +objj_msgSend(_90,"_sendPartialString"); +objj_msgSend(_90,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_searchFieldSearch:"),function(_93,_94,_95){ +with(_93){ +var _96=objj_msgSend(objj_msgSend(_95,"title"),"substringFromIndex:",objj_msgSend(_8,"length")); +if(objj_msgSend(_95,"tag")!=CPSearchFieldRecentsMenuItemTag){ +objj_msgSend(_93,"_addStringToRecentSearches:",_96); +} +objj_msgSend(_93,"setObjectValue:",_96); +objj_msgSend(_93,"_sendPartialString"); +objj_msgSend(_93,"selectAll:",nil); +objj_msgSend(_93,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_searchFieldClearRecents:"),function(_97,_98,_99){ +with(_97){ +objj_msgSend(_97,"setRecentSearches:",objj_msgSend(CPArray,"array")); +objj_msgSend(_97,"_updateSearchMenu"); +objj_msgSend(_97,"setStringValue:",""); +objj_msgSend(_97,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_registerForAutosaveNotification"),function(_9a,_9b){ +with(_9a){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_9a,sel_getUid("_updateAutosavedRecents:"),"CPAutosavedRecentsChangedNotification",nil); +} +}),new objj_method(sel_getUid("_deregisterForAutosaveNotification"),function(_9c,_9d){ +with(_9c){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_9c,"CPAutosavedRecentsChangedNotification",nil); +} +}),new objj_method(sel_getUid("_autosaveRecentSearchList"),function(_9e,_9f){ +with(_9e){ +if(_recentsAutosaveName!=nil){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:","CPAutosavedRecentsChangedNotification",_recentsAutosaveName); +} +} +}),new objj_method(sel_getUid("_updateAutosavedRecents:"),function(_a0,_a1,_a2){ +with(_a0){ +var _a3=objj_msgSend(_a0,"recentSearches"),_a4=objj_msgSend(_a2,"object"),_a5=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleName"),_a6=objj_msgSend(_a5,"lowercaseString")+"."+objj_msgSend(_a2,"object"),_a7=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_a6),_a8=objj_msgSend(_a3,"componentsJoinedByString:",","); +objj_msgSend(_a7,"setValue:expires:domain:",_a8,objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSinceNow:",3600*24*365),(window.location.href.hostname)); +} +}),new objj_method(sel_getUid("_loadRecentSearchList"),function(_a9,_aa){ +with(_a9){ +var _ab,_ac=objj_msgSend(_a9,"recentsAutosaveName"); +if(_ac===nil){ +return; +} +var _ad=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleName"),_ae=objj_msgSend(_ad,"lowercaseString")+"."+_ac,_af=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_ae); +if(_af!=nil){ +var _b0=objj_msgSend(_af,"value"); +_ab=(_b0!="")?objj_msgSend(_b0,"componentsSeparatedByString:",","):objj_msgSend(CPArray,"array"); +_recentSearches=_ab; +} +} +})]); +class_addMethods(_a,[new objj_method(sel_getUid("initialize"),function(_b1,_b2){ +with(_b1){ +if(_b1!=objj_msgSend(CPSearchField,"class")){ +return; +} +var _b3=objj_msgSend(CPBundle,"bundleForClass:",_b1); +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldSearch.png"),{width:_5,height:_7}); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldFind.png"),{width:_5,height:_7}); +_3=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldCancel.png"),{width:_6,height:_7}); +_4=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldCancelPressed.png"),{width:_6,height:_7}); +} +}),new objj_method(sel_getUid("_keyboardDelayForPartialSearchString:"),function(_b4,_b5,_b6){ +with(_b4){ +return (6-MIN(objj_msgSend(_b6,"length"),4))/10; +} +})]); +var _b7="CPRecentsAutosaveNameKey",_b8="CPSendsWholeSearchStringKey",_b9="CPSendsSearchStringImmediatelyKey",_ba="CPMaximumRecentsKey",_bb="CPSearchMenuTemplateKey"; +var _9=objj_getClass("CPSearchField"); +if(!_9){ +throw new SyntaxError("*** Could not find definition for class \"CPSearchField\""); +} +var _a=_9.isa; +class_addMethods(_9,[new objj_method(sel_getUid("encodeWithCoder:"),function(_bc,_bd,_be){ +with(_bc){ +objj_msgSend(_searchButton,"removeFromSuperview"); +objj_msgSend(_cancelButton,"removeFromSuperview"); +objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPSearchField").super_class},"encodeWithCoder:",_be); +if(_searchButton){ +objj_msgSend(_bc,"addSubview:",_searchButton); +} +if(_cancelButton){ +objj_msgSend(_bc,"addSubview:",_cancelButton); +} +objj_msgSend(_be,"encodeBool:forKey:",_sendsWholeSearchString,_b8); +objj_msgSend(_be,"encodeBool:forKey:",_sendsSearchStringImmediately,_b9); +objj_msgSend(_be,"encodeInt:forKey:",_maximumRecents,_ba); +if(_recentsAutosaveName){ +objj_msgSend(_be,"encodeObject:forKey:",_recentsAutosaveName,_b7); +} +if(_searchMenuTemplate){ +objj_msgSend(_be,"encodeObject:forKey:",_searchMenuTemplate,_bb); +} +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_bf,_c0,_c1){ +with(_bf){ +if(_bf=objj_msgSendSuper({receiver:_bf,super_class:objj_getClass("CPSearchField").super_class},"initWithCoder:",_c1)){ +_recentsAutosaveName=objj_msgSend(_c1,"decodeObjectForKey:",_b7); +_sendsWholeSearchString=objj_msgSend(_c1,"decodeBoolForKey:",_b8); +_sendsSearchStringImmediately=objj_msgSend(_c1,"decodeBoolForKey:",_b9); +_maximumRecents=objj_msgSend(_c1,"decodeIntForKey:",_ba); +var _c2=objj_msgSend(_c1,"decodeObjectForKey:",_bb); +if(_c2){ +objj_msgSend(_bf,"setSearchMenuTemplate:",_c2); +} +objj_msgSend(_bf,"_init"); +} +return _bf; +} +})]); +p;19;CPSecureTextField.jt;285;@STATIC;1.0;i;13;CPTextField.jt;249; +objj_executeFile("CPTextField.j",YES); +var _1=objj_allocateClassPair(CPTextField,"CPSecureTextField"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isSecure"),function(_3,_4){ +with(_3){ +return YES; +} +})]); +p;20;CPSegmentedControl.jt;23162;@STATIC;1.0;I;20;Foundation/CPArray.ji;11;CPControl.jt;23101; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("CPControl.j",YES); +CPSegmentSwitchTrackingSelectOne=0; +CPSegmentSwitchTrackingSelectAny=1; +CPSegmentSwitchTrackingMomentary=2; +var _1=objj_allocateClassPair(CPControl,"CPSegmentedControl"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_segments"),new objj_ivar("_themeStates"),new objj_ivar("_selectedSegment"),new objj_ivar("_segmentStyle"),new objj_ivar("_trackingMode"),new objj_ivar("_trackingSegment"),new objj_ivar("_trackingHighlighted")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_segments=[]; +_themeStates=[]; +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSegmentedControl").super_class},"initWithFrame:",_5); +if(_3){ +_selectedSegment=-1; +_trackingMode=CPSegmentSwitchTrackingSelectOne; +} +return _3; +} +}),new objj_method(sel_getUid("selectedTag"),function(_6,_7){ +with(_6){ +return objj_msgSend(_segments[_selectedSegment],"tag"); +} +}),new objj_method(sel_getUid("setSegmentCount:"),function(_8,_9,_a){ +with(_8){ +if(_segments.length==_a){ +return; +} +var _b=CGRectGetHeight(objj_msgSend(_8,"bounds")); +if(_segments.length<_a){ +for(var _c=_segments.length;_c<_a;++_c){ +_segments[_c]=objj_msgSend(objj_msgSend(_CPSegmentItem,"alloc"),"init"); +_themeStates[_c]=CPThemeStateNormal; +} +}else{ +if(_a<_segments.length){ +_segments.length=_a; +_themeStates.length=_a; +} +} +if(_selectedSegment>=_segments.length){ +_selectedSegment=-1; +} +objj_msgSend(_8,"tileWithChangedSegment:",0); +} +}),new objj_method(sel_getUid("segmentCount"),function(_d,_e){ +with(_d){ +return _segments.length; +} +}),new objj_method(sel_getUid("setSelectedSegment:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_f,"setSelected:forSegment:",YES,_11); +} +}),new objj_method(sel_getUid("selectedSegment"),function(_12,_13){ +with(_12){ +return _selectedSegment; +} +}),new objj_method(sel_getUid("selectSegmentWithTag:"),function(_14,_15,_16){ +with(_14){ +var _17=0; +for(;_17<_segments.length;++_17){ +if(_segments[_17].tag==_16){ +objj_msgSend(_14,"setSelectedSegment:",_17); +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("isTracking"),function(_18,_19){ +with(_18){ +} +}),new objj_method(sel_getUid("setTrackingMode:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_trackingMode==_1c){ +return; +} +_trackingMode=_1c; +if(_trackingMode==CPSegmentSwitchTrackingSelectOne){ +var _1d=0,_1e=NO; +for(;_1d<_segments.length;++_1d){ +if(objj_msgSend(_segments[_1d],"selected")){ +if(_1e){ +objj_msgSend(_1a,"setSelected:forSegment:",NO,_1d); +}else{ +_1e=YES; +} +} +} +}else{ +if(_trackingMode==CPSegmentSwitchTrackingMomentary){ +var _1d=0; +for(;_1d<_segments.length;++_1d){ +if(objj_msgSend(_segments[_1d],"selected")){ +objj_msgSend(_1a,"setSelected:forSegment:",NO,_1d); +} +} +} +} +} +}),new objj_method(sel_getUid("trackingMode"),function(_1f,_20){ +with(_1f){ +return _trackingMode; +} +}),new objj_method(sel_getUid("setWidth:forSegment:"),function(_21,_22,_23,_24){ +with(_21){ +objj_msgSend(_segments[_24],"setWidth:",_23); +objj_msgSend(_21,"tileWithChangedSegment:",_24); +} +}),new objj_method(sel_getUid("widthForSegment:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_segments[_27],"width"); +} +}),new objj_method(sel_getUid("setImage:forSegment:"),function(_28,_29,_2a,_2b){ +with(_28){ +objj_msgSend(_segments[_2b],"setImage:",_2a); +objj_msgSend(_28,"tileWithChangedSegment:",_2b); +} +}),new objj_method(sel_getUid("imageForSegment:"),function(_2c,_2d,_2e){ +with(_2c){ +return objj_msgSend(_segments[_2e],"image"); +} +}),new objj_method(sel_getUid("setLabel:forSegment:"),function(_2f,_30,_31,_32){ +with(_2f){ +objj_msgSend(_segments[_32],"setLabel:",_31); +objj_msgSend(_2f,"tileWithChangedSegment:",_32); +} +}),new objj_method(sel_getUid("labelForSegment:"),function(_33,_34,_35){ +with(_33){ +return objj_msgSend(_segments[_35],"label"); +} +}),new objj_method(sel_getUid("setMenu:forSegment:"),function(_36,_37,_38,_39){ +with(_36){ +objj_msgSend(_segments[_39],"setMenu:",_38); +} +}),new objj_method(sel_getUid("menuForSegment:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(_segments[_3c],"menu"); +} +}),new objj_method(sel_getUid("setSelected:forSegment:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +var _41=_segments[_40]; +if(objj_msgSend(_41,"selected")==_3f){ +return; +} +objj_msgSend(_41,"setSelected:",_3f); +_themeStates[_40]=_3f?CPThemeStateSelected:CPThemeStateNormal; +if(_3f){ +var _42=_selectedSegment; +_selectedSegment=_40; +if(_trackingMode==CPSegmentSwitchTrackingSelectOne&&_42!=_40&&_42!=-1){ +objj_msgSend(_segments[_42],"setSelected:",NO); +_themeStates[_42]=CPThemeStateNormal; +objj_msgSend(_3d,"drawSegmentBezel:highlight:",_42,NO); +} +} +if(_trackingMode!=CPSegmentSwitchTrackingMomentary){ +objj_msgSend(_3d,"drawSegmentBezel:highlight:",_40,NO); +} +objj_msgSend(_3d,"setNeedsLayout"); +objj_msgSend(_3d,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("isSelectedForSegment:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_segments[_45],"selected"); +} +}),new objj_method(sel_getUid("setEnabled:forSegment:"),function(_46,_47,_48,_49){ +with(_46){ +objj_msgSend(_segments[_49],"setEnabled:",_48); +if(_48){ +_themeStates[_49]&=~CPThemeStateDisabled; +}else{ +_themeStates[_49]|=CPThemeStateDisabled; +} +objj_msgSend(_46,"setNeedsLayout"); +objj_msgSend(_46,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("isEnabledForSegment:"),function(_4a,_4b,_4c){ +with(_4a){ +return objj_msgSend(_segments[_4c],"enabled"); +} +}),new objj_method(sel_getUid("setTag:forSegment:"),function(_4d,_4e,_4f,_50){ +with(_4d){ +objj_msgSend(_segments[_50],"setTag:",_4f); +} +}),new objj_method(sel_getUid("tagForSegment:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_segments[_53],"tag"); +} +}),new objj_method(sel_getUid("drawSegmentBezel:highlight:"),function(_54,_55,_56,_57){ +with(_54){ +if(_57){ +_themeStates[_56]|=CPThemeStateHighlighted; +}else{ +_themeStates[_56]&=~CPThemeStateHighlighted; +} +objj_msgSend(_54,"setNeedsLayout"); +objj_msgSend(_54,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("_leftOffsetForSegment:"),function(_58,_59,_5a){ +with(_58){ +var _5b=objj_msgSend(_58,"currentValueForThemeAttribute:","bezel-inset"); +if(_5a==0){ +return _5b.left; +} +var _5c=objj_msgSend(_58,"currentValueForThemeAttribute:","divider-thickness"); +return objj_msgSend(_58,"_leftOffsetForSegment:",_5a-1)+objj_msgSend(_58,"widthForSegment:",_5a-1)+_5c; +} +}),new objj_method(sel_getUid("_indexOfLastSegment"),function(_5d,_5e){ +with(_5d){ +var _5f=objj_msgSend(_segments,"count")-1; +if(_5f<0){ +_5f=0; +} +return _5f; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_60,_61,_62){ +with(_60){ +var _63=objj_msgSend(_60,"currentValueForThemeAttribute:","default-height"),_64=objj_msgSend(_60,"currentValueForThemeAttribute:","content-inset"),_65=objj_msgSend(_60,"currentValueForThemeAttribute:","bezel-inset"),_66=objj_msgSend(_60,"bounds"); +if(_62==="left-segment-bezel"){ +return CGRectMake(_65.left,_65.top,_64.left,_63); +}else{ +if(_62==="right-segment-bezel"){ +return CPRectMake(CGRectGetWidth(objj_msgSend(_60,"bounds"))-_64.right,_65.top,_64.right,_63); +}else{ +if(_62.indexOf("segment-bezel")===0){ +var _67=parseInt(_62.substring("segment-bezel-".length),10),_68=CGRectCreateCopy(objj_msgSend(_segments[_67],"frame")); +if(_67===0){ +_68.origin.x+=_64.left; +_68.size.width-=_64.left; +} +if(_67===_segments.length-1){ +_68.size.width=CGRectGetWidth(objj_msgSend(_60,"bounds"))-_64.right-_68.origin.x; +} +return _68; +}else{ +if(_62.indexOf("divider-bezel")===0){ +var _67=parseInt(_62.substring("divider-bezel-".length),10),_69=objj_msgSend(_60,"widthForSegment:",_67),_6a=objj_msgSend(_60,"_leftOffsetForSegment:",_67),_6b=objj_msgSend(_60,"currentValueForThemeAttribute:","divider-thickness"); +return CGRectMake(_6a+_69,_65.top,_6b,_63); +}else{ +if(_62.indexOf("segment-content")===0){ +var _67=parseInt(_62.substring("segment-content-".length),10); +return objj_msgSend(_60,"contentFrameForSegment:",_67); +} +} +} +} +} +return objj_msgSendSuper({receiver:_60,super_class:objj_getClass("CPSegmentedControl").super_class},"rectForEphemeralSubviewNamed:",_62); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_6e.substring(0,"segment-content".length)=="segment-content"){ +return objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +return objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_6f,_70){ +with(_6f){ +if(_segments.length<=0){ +return; +} +var _71=_themeStates[0]; +_71|=_themeState&CPThemeStateDisabled; +var _72=objj_msgSend(_6f,"valueForThemeAttribute:inState:","left-segment-bezel-color",_71); +var _73=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","left-segment-bezel",CPWindowBelow,nil); +objj_msgSend(_73,"setBackgroundColor:",_72); +var _71=_themeStates[_themeStates.length-1]; +_71|=_themeState&CPThemeStateDisabled; +var _74=objj_msgSend(_6f,"valueForThemeAttribute:inState:","right-segment-bezel-color",_71); +var _75=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","right-segment-bezel",CPWindowBelow,nil); +objj_msgSend(_75,"setBackgroundColor:",_74); +for(var i=0,_76=_themeStates.length;i<_76;i++){ +var _71=_themeStates[i]; +_71|=_themeState&CPThemeStateDisabled; +var _77=objj_msgSend(_6f,"valueForThemeAttribute:inState:","center-segment-bezel-color",_71); +var _78=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","segment-bezel-"+i,CPWindowBelow,nil); +objj_msgSend(_78,"setBackgroundColor:",_77); +var _79=_segments[i]; +var _7a=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","segment-content-"+i,CPWindowAbove,"segment-bezel-"+i); +objj_msgSend(_7a,"setText:",objj_msgSend(_79,"label")); +objj_msgSend(_7a,"setImage:",objj_msgSend(_79,"image")); +objj_msgSend(_7a,"setFont:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","font",_71)); +objj_msgSend(_7a,"setTextColor:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-color",_71)); +objj_msgSend(_7a,"setAlignment:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","alignment",_71)); +objj_msgSend(_7a,"setVerticalAlignment:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","vertical-alignment",_71)); +objj_msgSend(_7a,"setLineBreakMode:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","line-break-mode",_71)); +objj_msgSend(_7a,"setTextShadowColor:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-shadow-color",_71)); +objj_msgSend(_7a,"setTextShadowOffset:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-shadow-offset",_71)); +objj_msgSend(_7a,"setImageScaling:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","image-scaling",_71)); +if(objj_msgSend(_79,"image")&&objj_msgSend(_79,"label")){ +objj_msgSend(_7a,"setImagePosition:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","image-position",_71)); +}else{ +if(objj_msgSend(_79,"image")){ +objj_msgSend(_7a,"setImagePosition:",CPImageOnly); +} +} +if(i==_76-1){ +continue; +} +var _7b=_themeStates[i]|_themeStates[i+1]; +_7b=(_7b&CPThemeStateSelected&~CPThemeStateHighlighted)?CPThemeStateSelected:CPThemeStateNormal; +_7b|=_themeState&CPThemeStateDisabled; +var _7c=objj_msgSend(_6f,"valueForThemeAttribute:inState:","divider-bezel-color",_7b); +var _7d=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","divider-bezel-"+i,CPWindowBelow,nil); +objj_msgSend(_7d,"setBackgroundColor:",_7c); +} +} +}),new objj_method(sel_getUid("drawSegment:highlight:"),function(_7e,_7f,_80,_81){ +with(_7e){ +} +}),new objj_method(sel_getUid("tileWithChangedSegment:"),function(_82,_83,_84){ +with(_82){ +if(_84>=_segments.length){ +return; +} +var _85=_segments[_84],_86=objj_msgSend(_85,"width"),_87=_themeStates[_84]|(_themeState&CPThemeStateDisabled),_88=objj_msgSend(_82,"valueForThemeAttribute:inState:","content-inset",_87),_89=objj_msgSend(_82,"valueForThemeAttribute:inState:","font",_87); +if(!_86){ +if(objj_msgSend(_85,"image")&&objj_msgSend(_85,"label")){ +_86=objj_msgSend(objj_msgSend(_85,"label"),"sizeWithFont:",_89).width+objj_msgSend(objj_msgSend(_85,"image"),"size").width+_88.left+_88.right; +}else{ +if(_85.image){ +_86=objj_msgSend(objj_msgSend(_85,"image"),"size").width+_88.left+_88.right; +}else{ +if(_85.label){ +_86=objj_msgSend(objj_msgSend(_85,"label"),"sizeWithFont:",_89).width+_88.left+_88.right; +}else{ +_86=0; +} +} +} +} +var _8a=_86-CGRectGetWidth(objj_msgSend(_85,"frame")); +if(!_8a){ +objj_msgSend(_82,"setNeedsLayout"); +objj_msgSend(_82,"setNeedsDisplay:",YES); +return; +} +var _8b=objj_msgSend(_82,"frame"); +objj_msgSend(_82,"setFrameSize:",CGSizeMake(CGRectGetWidth(_8b)+_8a,CGRectGetHeight(_8b))); +objj_msgSend(_85,"setWidth:",_86); +objj_msgSend(_85,"setFrame:",objj_msgSend(_82,"frameForSegment:",_84)); +var _8c=_84+1; +for(;_8c<_segments.length;++_8c){ +objj_msgSend(_segments[_8c],"frame").origin.x+=_8a; +objj_msgSend(_82,"drawSegmentBezel:highlight:",_8c,NO); +objj_msgSend(_82,"drawSegment:highlight:",_8c,NO); +} +objj_msgSend(_82,"drawSegmentBezel:highlight:",_84,NO); +objj_msgSend(_82,"drawSegment:highlight:",_84,NO); +objj_msgSend(_82,"setNeedsLayout"); +objj_msgSend(_82,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("frameForSegment:"),function(_8d,_8e,_8f){ +with(_8d){ +return objj_msgSend(_8d,"bezelFrameForSegment:",_8f); +} +}),new objj_method(sel_getUid("bezelFrameForSegment:"),function(_90,_91,_92){ +with(_90){ +var _93=objj_msgSend(_90,"currentValueForThemeAttribute:","default-height"),_94=objj_msgSend(_90,"currentValueForThemeAttribute:","bezel-inset"),_95=objj_msgSend(_90,"widthForSegment:",_92),_96=objj_msgSend(_90,"_leftOffsetForSegment:",_92); +return CGRectMake(_96,_94.top,_95,_93); +} +}),new objj_method(sel_getUid("contentFrameForSegment:"),function(_97,_98,_99){ +with(_97){ +var _9a=objj_msgSend(_97,"currentValueForThemeAttribute:","default-height"),_9b=objj_msgSend(_97,"currentValueForThemeAttribute:","content-inset"),_9c=objj_msgSend(_97,"widthForSegment:",_99),_9d=objj_msgSend(_97,"_leftOffsetForSegment:",_99); +return CGRectMake(_9d+_9b.left,_9b.top,_9c-_9b.left-_9b.right,_9a-_9b.top-_9b.bottom); +} +}),new objj_method(sel_getUid("testSegment:"),function(_9e,_9f,_a0){ +with(_9e){ +var _a1=objj_msgSend(_9e,"convertPoint:fromView:",_a0,nil),_a2=_segments.length; +while(_a2--){ +if(CGRectContainsPoint(objj_msgSend(_segments[_a2],"frame"),_a0)){ +return _a2; +} +} +if(_segments.length){ +var _a3=CGRectCreateCopy(objj_msgSend(_segments[_segments.length-1],"frame")); +_a3.size.width=CGRectGetWidth(objj_msgSend(_9e,"bounds"))-_a3.origin.x; +if(CGRectContainsPoint(_a3,_a0)){ +return _segments.length-1; +} +} +return -1; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_a4,_a5,_a6){ +with(_a4){ +if(!objj_msgSend(_a4,"isEnabled")){ +return; +} +objj_msgSend(_a4,"trackSegment:",_a6); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_a7,_a8,_a9){ +with(_a7){ +} +}),new objj_method(sel_getUid("trackSegment:"),function(_aa,_ab,_ac){ +with(_aa){ +var _ad=objj_msgSend(_ac,"type"),_ae=objj_msgSend(_aa,"convertPoint:fromView:",objj_msgSend(_ac,"locationInWindow"),nil); +if(_ad==CPLeftMouseUp){ +if(_trackingSegment==-1){ +return; +} +if(_trackingSegment===objj_msgSend(_aa,"testSegment:",_ae)){ +if(_trackingMode==CPSegmentSwitchTrackingSelectAny){ +objj_msgSend(_aa,"setSelected:forSegment:",!objj_msgSend(_aa,"isSelectedForSegment:",_trackingSegment),_trackingSegment); +_selectedSegment=_trackingSegment; +}else{ +objj_msgSend(_aa,"setSelected:forSegment:",YES,_trackingSegment); +} +objj_msgSend(_aa,"sendAction:to:",objj_msgSend(_aa,"action"),objj_msgSend(_aa,"target")); +if(_trackingMode==CPSegmentSwitchTrackingMomentary){ +objj_msgSend(_aa,"setSelected:forSegment:",NO,_trackingSegment); +_selectedSegment=-1; +} +} +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,NO); +_trackingSegment=-1; +return; +} +if(_ad==CPLeftMouseDown){ +var _af=objj_msgSend(_aa,"testSegment:",_ae); +if(_af>-1&&objj_msgSend(_aa,"isEnabledForSegment:",_af)){ +_trackingHighlighted=YES; +_trackingSegment=_af; +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,YES); +} +}else{ +if(_ad==CPLeftMouseDragged){ +if(_trackingSegment==-1){ +return; +} +var _b0=objj_msgSend(_aa,"testSegment:",_ae)===_trackingSegment; +if(_b0!=_trackingHighlighted){ +_trackingHighlighted=_b0; +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,_trackingHighlighted); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_aa,sel_getUid("trackSegment:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("setFont:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSendSuper({receiver:_b1,super_class:objj_getClass("CPSegmentedControl").super_class},"setFont:",_b3); +objj_msgSend(_b1,"tileWithChangedSegment:",0); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_b4,_b5){ +with(_b4){ +return "segmented-control"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_b6,_b7){ +with(_b6){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CPCenterTextAlignment,CPCenterVerticalTextAlignment,CPImageLeft,CPScaleNone,{top:(0),right:(0),bottom:(0),left:(0)},{top:(0),right:(0),bottom:(0),left:(0)},objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),1,24],["alignment","vertical-alignment","image-position","image-scaling","bezel-inset","content-inset","left-segment-bezel-color","right-segment-bezel-color","center-segment-bezel-color","divider-bezel-color","divider-thickness","default-height"]); +} +})]); +var _b8="CPSegmentedControlSegmentsKey",_b9="CPSegmentedControlSelectedKey",_ba="CPSegmentedControlSegmentStyleKey",_bb="CPSegmentedControlTrackingModeKey"; +var _1=objj_getClass("CPSegmentedControl"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSegmentedControl\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_bc,_bd,_be){ +with(_bc){ +_bc=objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPSegmentedControl").super_class},"initWithCoder:",_be); +if(_bc){ +var _bf=objj_msgSend(_bc,"frame"),_c0=_bf.size.width; +_bf.size.width=0; +objj_msgSend(_bc,"setFrame:",_bf); +_segments=objj_msgSend(_be,"decodeObjectForKey:",_b8); +_segmentStyle=objj_msgSend(_be,"decodeIntForKey:",_ba); +_themeStates=[]; +if(objj_msgSend(_be,"containsValueForKey:",_b9)){ +_selectedSegment=objj_msgSend(_be,"decodeIntForKey:",_b9); +}else{ +_selectedSegment=-1; +} +if(objj_msgSend(_be,"containsValueForKey:",_bb)){ +_trackingMode=objj_msgSend(_be,"decodeIntForKey:",_bb); +}else{ +_trackingMode=CPSegmentSwitchTrackingSelectOne; +} +for(var i=0;i<_segments.length;i++){ +_themeStates[i]=objj_msgSend(_segments[i],"selected")?CPThemeStateSelected:CPThemeStateNormal; +objj_msgSend(_bc,"tileWithChangedSegment:",i); +} +var _c1=MAX(_c0-objj_msgSend(_bc,"frame").size.width,0),_c2=FLOOR(_c1/_segments.length); +for(var i=0;i<_segments.length;i++){ +objj_msgSend(_bc,"setWidth:forSegment:",objj_msgSend(_segments[i],"width")+_c2,i); +} +objj_msgSend(_bc,"tileWithChangedSegment:",0); +} +return _bc; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c3,_c4,_c5){ +with(_c3){ +objj_msgSendSuper({receiver:_c3,super_class:objj_getClass("CPSegmentedControl").super_class},"encodeWithCoder:",_c5); +objj_msgSend(_c5,"encodeObject:forKey:",_segments,_b8); +objj_msgSend(_c5,"encodeInt:forKey:",_selectedSegment,_b9); +objj_msgSend(_c5,"encodeInt:forKey:",_segmentStyle,_ba); +objj_msgSend(_c5,"encodeInt:forKey:",_trackingMode,_bb); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPSegmentItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("image"),new objj_ivar("label"),new objj_ivar("menu"),new objj_ivar("selected"),new objj_ivar("enabled"),new objj_ivar("tag"),new objj_ivar("width"),new objj_ivar("frame")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("image"),function(_c6,_c7){ +with(_c6){ +return image; +} +}),new objj_method(sel_getUid("setImage:"),function(_c8,_c9,_ca){ +with(_c8){ +image=_ca; +} +}),new objj_method(sel_getUid("label"),function(_cb,_cc){ +with(_cb){ +return label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_cd,_ce,_cf){ +with(_cd){ +label=_cf; +} +}),new objj_method(sel_getUid("menu"),function(_d0,_d1){ +with(_d0){ +return menu; +} +}),new objj_method(sel_getUid("setMenu:"),function(_d2,_d3,_d4){ +with(_d2){ +menu=_d4; +} +}),new objj_method(sel_getUid("selected"),function(_d5,_d6){ +with(_d5){ +return selected; +} +}),new objj_method(sel_getUid("setSelected:"),function(_d7,_d8,_d9){ +with(_d7){ +selected=_d9; +} +}),new objj_method(sel_getUid("enabled"),function(_da,_db){ +with(_da){ +return enabled; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_dc,_dd,_de){ +with(_dc){ +enabled=_de; +} +}),new objj_method(sel_getUid("tag"),function(_df,_e0){ +with(_df){ +return tag; +} +}),new objj_method(sel_getUid("setTag:"),function(_e1,_e2,_e3){ +with(_e1){ +tag=_e3; +} +}),new objj_method(sel_getUid("width"),function(_e4,_e5){ +with(_e4){ +return width; +} +}),new objj_method(sel_getUid("setWidth:"),function(_e6,_e7,_e8){ +with(_e6){ +width=_e8; +} +}),new objj_method(sel_getUid("frame"),function(_e9,_ea){ +with(_e9){ +return frame; +} +}),new objj_method(sel_getUid("setFrame:"),function(_eb,_ec,_ed){ +with(_eb){ +frame=_ed; +} +}),new objj_method(sel_getUid("init"),function(_ee,_ef){ +with(_ee){ +if(_ee=objj_msgSendSuper({receiver:_ee,super_class:objj_getClass("_CPSegmentItem").super_class},"init")){ +image=nil; +label=""; +menu=nil; +selected=NO; +enabled=YES; +tag=-1; +width=0; +frame=CGRectMakeZero(); +} +return _ee; +} +})]); +var _f0="CPSegmentItemImageKey",_f1="CPSegmentItemLabelKey",_f2="CPSegmentItemMenuKey",_f3="CPSegmentItemSelectedKey",_f4="CPSegmentItemEnabledKey",_f5="CPSegmentItemTagKey",_f6="CPSegmentItemWidthKey"; +var _1=objj_getClass("_CPSegmentItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPSegmentItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_f7,_f8,_f9){ +with(_f7){ +_f7=objj_msgSendSuper({receiver:_f7,super_class:objj_getClass("_CPSegmentItem").super_class},"init"); +if(_f7){ +image=objj_msgSend(_f9,"decodeObjectForKey:",_f0); +label=objj_msgSend(_f9,"decodeObjectForKey:",_f1); +menu=objj_msgSend(_f9,"decodeObjectForKey:",_f2); +selected=objj_msgSend(_f9,"decodeBoolForKey:",_f3); +enabled=objj_msgSend(_f9,"decodeBoolForKey:",_f4); +tag=objj_msgSend(_f9,"decodeIntForKey:",_f5); +width=objj_msgSend(_f9,"decodeFloatForKey:",_f6); +frame=CGRectMakeZero(); +} +return _f7; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_fa,_fb,_fc){ +with(_fa){ +objj_msgSend(_fc,"encodeObject:forKey:",image,_f0); +objj_msgSend(_fc,"encodeObject:forKey:",label,_f1); +objj_msgSend(_fc,"encodeObject:forKey:",menu,_f2); +objj_msgSend(_fc,"encodeBool:forKey:",selected,_f3); +objj_msgSend(_fc,"encodeBool:forKey:",enabled,_f4); +objj_msgSend(_fc,"encodeInt:forKey:",tag,_f5); +objj_msgSend(_fc,"encodeFloat:forKey:",width,_f6); +} +})]); +p;10;CPShadow.jt;1333;@STATIC;1.0;I;21;Foundation/CPObject.jt;1288; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPShadow"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_offset"),new objj_ivar("_blurRadius"),new objj_ivar("_color"),new objj_ivar("_cssString")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_initWithOffset:blurRadius:color:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPShadow").super_class},"init"); +if(_3){ +_offset=_5; +_blurRadius=_6; +_color=_7; +_cssString=objj_msgSend(_color,"cssString")+" "+Math.round(_5.width)+"px "+Math.round(_5.height)+"px "+Math.round(_blurRadius)+"px"; +} +return _3; +} +}),new objj_method(sel_getUid("shadowOffset"),function(_8,_9){ +with(_8){ +return _offset; +} +}),new objj_method(sel_getUid("shadowBlurRadius"),function(_a,_b){ +with(_a){ +return _blurRadius; +} +}),new objj_method(sel_getUid("shadowColor"),function(_c,_d){ +with(_c){ +return _color; +} +}),new objj_method(sel_getUid("cssString"),function(_e,_f){ +with(_e){ +return _cssString; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("shadowWithOffset:blurRadius:color:"),function(_10,_11,_12,_13,_14){ +with(_10){ +return objj_msgSend(objj_msgSend(CPShadow,"alloc"),"_initWithOffset:blurRadius:color:",_12,_13,_14); +} +})]); +p;14;CPShadowView.jt;6828;@STATIC;1.0;I;21;Foundation/CPBundle.ji;12;CGGeometry.ji;9;CPImage.ji;13;CPImageView.ji;8;CPView.jt;6723; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPView.j",YES); +CPLightShadow=0; +CPHeavyShadow=1; +var _1=nil,_2=nil; +var _3=3,_4=3,_5=3,_6=5,_7=7,_8=7,_9=5,_a=5; +var _b=objj_allocateClassPair(CPView,"CPShadowView"),_c=_b.isa; +class_addIvars(_b,[new objj_ivar("_weight")]); +objj_registerClassPair(_b); +class_addMethods(_b,[new objj_method(sel_getUid("initWithFrame:"),function(_d,_e,_f){ +with(_d){ +_d=objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPShadowView").super_class},"initWithFrame:",_f); +if(_d){ +_weight=CPLightShadow; +objj_msgSend(_d,"setBackgroundColor:",_1); +objj_msgSend(_d,"setHitTests:",NO); +} +return _d; +} +}),new objj_method(sel_getUid("setWeight:"),function(_10,_11,_12){ +with(_10){ +if(_weight==_12){ +return; +} +_weight=_12; +if(_weight==CPLightShadow){ +objj_msgSend(_10,"setBackgroundColor:",_1); +}else{ +objj_msgSend(_10,"setBackgroundColor:",_2); +} +} +}),new objj_method(sel_getUid("leftInset"),function(_13,_14){ +with(_13){ +return _weight==CPLightShadow?_3:_7; +} +}),new objj_method(sel_getUid("rightInset"),function(_15,_16){ +with(_15){ +return _weight==CPLightShadow?_4:_8; +} +}),new objj_method(sel_getUid("topInset"),function(_17,_18){ +with(_17){ +return _weight==CPLightShadow?_5:_9; +} +}),new objj_method(sel_getUid("bottomInset"),function(_19,_1a){ +with(_19){ +return _weight==CPLightShadow?_6:_a; +} +}),new objj_method(sel_getUid("horizontalInset"),function(_1b,_1c){ +with(_1b){ +if(_weight==CPLightShadow){ +return _3+_4; +} +return _7+_8; +} +}),new objj_method(sel_getUid("verticalInset"),function(_1d,_1e){ +with(_1d){ +if(_weight==CPLightShadow){ +return _5+_6; +} +return _9+_a; +} +}),new objj_method(sel_getUid("frameForContentFrame:"),function(_1f,_20,_21){ +with(_1f){ +return objj_msgSend(objj_msgSend(_1f,"class"),"frameForContentFrame:withWeight:",_21,_weight); +} +}),new objj_method(sel_getUid("setFrameForContentFrame:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_22,"setFrame:",objj_msgSend(_22,"frameForContentFrame:",_24)); +} +})]); +class_addMethods(_c,[new objj_method(sel_getUid("initialize"),function(_25,_26){ +with(_25){ +if(_25!=objj_msgSend(CPShadowView,"class")){ +return; +} +var _27=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_25,"class")); +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTopLeft.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTop.png"),CGSizeMake(1,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTopRight.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightLeft.png"),CGSizeMake(9,1)),nil,objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightRight.png"),CGSizeMake(9,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottomLeft.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottom.png"),CGSizeMake(1,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottomRight.png"),CGSizeMake(9,9))])); +_2=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTopLeft.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTop.png"),CGSizeMake(1,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTopRight.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyLeft.png"),CGSizeMake(17,1)),nil,objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyRight.png"),CGSizeMake(17,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottomLeft.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottom.png"),CGSizeMake(1,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottomRight.png"),CGSizeMake(17,17))])); +} +}),new objj_method(sel_getUid("shadowViewEnclosingView:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(_28,"shadowViewEnclosingView:withWeight:",_2a,CPLightShadow); +} +}),new objj_method(sel_getUid("shadowViewEnclosingView:withWeight:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +var _2f=objj_msgSend(objj_msgSend(CPShadowView,"alloc"),"initWithFrame:",objj_msgSend(_2d,"frame")); +objj_msgSend(_2f,"setWeight:",_2e); +var _30=objj_msgSend(_2f,"frame").size,_31=_30.width-objj_msgSend(_2f,"leftInset")-objj_msgSend(_2f,"rightInset"),_32=_30.height-objj_msgSend(_2f,"topInset")-objj_msgSend(_2f,"bottomInset"),_33=objj_msgSend(_2d,"superview"); +objj_msgSend(_2f,"setHitTests:",objj_msgSend(_2d,"hitTests")); +objj_msgSend(_2f,"setAutoresizingMask:",objj_msgSend(_2d,"autoresizingMask")); +objj_msgSend(_2d,"removeFromSuperview"); +objj_msgSend(_2f,"addSubview:",_2d); +objj_msgSend(_2d,"setFrame:",CGRectMake(objj_msgSend(_2f,"leftInset"),objj_msgSend(_2f,"topInset"),_31,_32)); +objj_msgSend(_33,"addSubview:",_2f); +return _2f; +} +}),new objj_method(sel_getUid("frameForContentFrame:withWeight:"),function(_34,_35,_36,_37){ +with(_34){ +if(_37==CPLightShadow){ +return CGRectMake((_36.origin.x)-_3,(_36.origin.y)-_5,(_36.size.width)+_3+_4,(_36.size.height)+_5+_6); +}else{ +return CGRectMake((_36.origin.x)-_7,(_36.origin.y)-_9,(_36.size.width)+_7+_8,(_36.size.height)+_9+_a); +} +} +})]); +p;10;CPSlider.jt;11751;@STATIC;1.0;i;11;CPControl.jt;11715; +objj_executeFile("CPControl.j",YES); +CPLinearSlider=0; +CPCircularSlider=1; +var _1=objj_allocateClassPair(CPControl,"CPSlider"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_minValue"),new objj_ivar("_maxValue"),new objj_ivar("_altIncrementValue"),new objj_ivar("_isVertical")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSlider").super_class},"initWithFrame:",_5); +if(_3){ +_minValue=0; +_maxValue=100; +objj_msgSend(_3,"setObjectValue:",50); +objj_msgSend(_3,"setContinuous:",YES); +objj_msgSend(_3,"_recalculateIsVertical"); +} +return _3; +} +}),new objj_method(sel_getUid("setMinValue:"),function(_6,_7,_8){ +with(_6){ +if(_minValue===_8){ +return; +} +_minValue=_8; +var _9=objj_msgSend(_6,"doubleValue"); +if(_9<_minValue){ +objj_msgSend(_6,"setDoubleValue:",_minValue); +} +objj_msgSend(_6,"setNeedsLayout"); +objj_msgSend(_6,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("minValue"),function(_a,_b){ +with(_a){ +return _minValue; +} +}),new objj_method(sel_getUid("setMaxValue:"),function(_c,_d,_e){ +with(_c){ +if(_maxValue===_e){ +return; +} +_maxValue=_e; +var _f=objj_msgSend(_c,"doubleValue"); +if(_f>_maxValue){ +objj_msgSend(_c,"setDoubleValue:",_maxValue); +} +objj_msgSend(_c,"setNeedsLayout"); +objj_msgSend(_c,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("maxValue"),function(_10,_11){ +with(_10){ +return _maxValue; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_12,_13,_14){ +with(_12){ +objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPSlider").super_class},"setObjectValue:",MIN(MAX(_14,_minValue),_maxValue)); +objj_msgSend(_12,"setNeedsLayout"); +objj_msgSend(_12,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setSliderType:"),function(_15,_16,_17){ +with(_15){ +if(_17===CPCircularSlider){ +objj_msgSend(_15,"setThemeState:",CPThemeStateCircular); +}else{ +objj_msgSend(_15,"unsetThemeState:",CPThemeStateCircular); +} +} +}),new objj_method(sel_getUid("sliderType"),function(_18,_19){ +with(_18){ +return objj_msgSend(_18,"hasThemeState:",CPThemeStateCircular)?CPCircularSlider:CPLinearSlider; +} +}),new objj_method(sel_getUid("trackRectForBounds:"),function(_1a,_1b,_1c){ +with(_1a){ +if(objj_msgSend(_1a,"hasThemeState:",CPThemeStateCircular)){ +var _1d=CGRectCreateCopy(_1c); +_1c.size.width=MIN(_1c.size.width,_1c.size.height); +_1c.size.height=_1c.size.width; +if(_1c.size.width<_1d.size.width){ +_1c.origin.x+=(_1d.size.width-_1c.size.width)/2; +}else{ +_1c.origin.y+=(_1d.size.height-_1c.size.height)/2; +} +}else{ +var _1e=objj_msgSend(_1a,"currentValueForThemeAttribute:","track-width"); +if(_1e<=0){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(objj_msgSend(_1a,"isVertical")){ +_1c.origin.x=((_1c.size.width)-_1e)/2; +_1c.size.width=_1e; +}else{ +_1c.origin.y=((_1c.size.height)-_1e)/2; +_1c.size.height=_1e; +} +} +return _1c; +} +}),new objj_method(sel_getUid("knobRectForBounds:"),function(_1f,_20,_21){ +with(_1f){ +var _22=objj_msgSend(_1f,"currentValueForThemeAttribute:","knob-size"); +if(_22.width<=0||_22.height<=0){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _23={origin:{x:0,y:0},size:{width:_22.width,height:_22.height}},_24=objj_msgSend(_1f,"trackRectForBounds:",_21); +if(!_24||(_24.size.width<=0||_24.size.height<=0)){ +_24=_21; +} +if(objj_msgSend(_1f,"hasThemeState:",CPThemeStateCircular)){ +var _25=3*PI_2-(1-objj_msgSend(_1f,"doubleValue")-_minValue)/(_maxValue-_minValue)*PI2,_26=CGRectGetWidth(_24)/2-8; +_23.origin.x=_26*COS(_25)+CGRectGetMidX(_24)-3; +_23.origin.y=_26*SIN(_25)+CGRectGetMidY(_24)-2; +}else{ +if(objj_msgSend(_1f,"isVertical")){ +_23.origin.x=(_24.origin.x+(_24.size.width)/2)-_22.width/2; +_23.origin.y=((_maxValue-objj_msgSend(_1f,"doubleValue"))/(_maxValue-_minValue))*((_24.size.height)-_22.height); +}else{ +_23.origin.x=((objj_msgSend(_1f,"doubleValue")-_minValue)/(_maxValue-_minValue))*((_24.size.width)-_22.width); +_23.origin.y=(_24.origin.y+(_24.size.height)/2)-_22.height/2; +} +} +return _23; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_27,_28,_29){ +with(_27){ +if(_29==="track-view"){ +return objj_msgSend(_27,"trackRectForBounds:",objj_msgSend(_27,"bounds")); +}else{ +if(_29==="knob-view"){ +return objj_msgSend(_27,"knobRectForBounds:",objj_msgSend(_27,"bounds")); +} +} +return objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPSlider").super_class},"rectForEphemeralSubviewNamed:",_29); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_2c==="track-view"||_2c==="knob-view"){ +var _2d=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_2d,"setHitTests:",NO); +return _2d; +} +return objj_msgSendSuper({receiver:_2a,super_class:objj_getClass("CPSlider").super_class},"createEphemeralSubviewNamed:",_2c); +} +}),new objj_method(sel_getUid("setAltIncrementValue:"),function(_2e,_2f,_30){ +with(_2e){ +_altIncrementValue=_30; +} +}),new objj_method(sel_getUid("altIncrementValue"),function(_31,_32){ +with(_31){ +return _altIncrementValue; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_33,_34,_35){ +with(_33){ +objj_msgSendSuper({receiver:_33,super_class:objj_getClass("CPSlider").super_class},"setFrameSize:",_35); +objj_msgSend(_33,"_recalculateIsVertical"); +} +}),new objj_method(sel_getUid("_recalculateIsVertical"),function(_36,_37){ +with(_36){ +var _38=objj_msgSend(_36,"bounds"),_39=(_38.size.width),_3a=(_38.size.height); +_isVertical=_39<_3a?1:(_39>_3a?0:-1); +if(_isVertical===1){ +objj_msgSend(_36,"setThemeState:",CPThemeStateVertical); +}else{ +if(_isVertical===0){ +objj_msgSend(_36,"unsetThemeState:",CPThemeStateVertical); +} +} +} +}),new objj_method(sel_getUid("isVertical"),function(_3b,_3c){ +with(_3b){ +return _isVertical; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_3d,_3e){ +with(_3d){ +var _3f=objj_msgSend(_3d,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","track-view",CPWindowBelow,"knob-view"); +if(_3f){ +objj_msgSend(_3f,"setBackgroundColor:",objj_msgSend(_3d,"currentValueForThemeAttribute:","track-color")); +} +var _40=objj_msgSend(_3d,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","knob-view",CPWindowAbove,"track-view"); +if(_40){ +objj_msgSend(_40,"setBackgroundColor:",objj_msgSend(_3d,"currentValueForThemeAttribute:","knob-color")); +} +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(_41,_42){ +with(_41){ +return YES; +} +}),new objj_method(sel_getUid("_valueAtPoint:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_43,"bounds"),_47=objj_msgSend(_43,"knobRectForBounds:",_46),_48=objj_msgSend(_43,"trackRectForBounds:",_46); +if(objj_msgSend(_43,"hasThemeState:",CPThemeStateCircular)){ +var _49=(_47.size.width); +_48.origin.x+=_49/2; +_48.size.width-=_49; +var _4a=objj_msgSend(_43,"minValue"),dx=_45.x-(_48.origin.x+(_48.size.width)/2),dy=_45.y-(_48.origin.y+(_48.size.height)/2); +return MAX(0,MIN(1,1-(3*PI_2-ATAN2(dy,dx))%PI2/PI2))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +}else{ +if(objj_msgSend(_43,"isVertical")){ +var _4b=(_47.size.height); +_48.origin.y+=_4b/2; +_48.size.height-=_4b; +var _4a=objj_msgSend(_43,"minValue"); +return MAX(0,MIN(1,((_48.origin.y+_48.size.height)-_45.y)/(_48.size.height)))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +}else{ +var _49=(_47.size.width); +_48.origin.x+=_49/2; +_48.size.width-=_49; +var _4a=objj_msgSend(_43,"minValue"); +return MAX(0,MIN(1,(_45.x-(_48.origin.x))/(_48.size.width)))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +} +} +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_4c,_4d,_4e){ +with(_4c){ +var _4f=objj_msgSend(_4c,"bounds"),_50=objj_msgSend(_4c,"knobRectForBounds:",{origin:{x:_4f.origin.x,y:_4f.origin.y},size:{width:_4f.size.width,height:_4f.size.height}}); +if((_4e.x>=(_50.origin.x)&&_4e.y>=(_50.origin.y)&&_4e.x<(_50.origin.x+_50.size.width)&&_4e.y<(_50.origin.y+_50.size.height))){ +_dragOffset={width:(_50.origin.x+(_50.size.width)/2)-_4e.x,height:(_50.origin.y+(_50.size.height)/2)-_4e.y}; +}else{ +var _51=objj_msgSend(_4c,"trackRectForBounds:",_4f); +if(_51&&(_4e.x>=(_51.origin.x)&&_4e.y>=(_51.origin.y)&&_4e.x<(_51.origin.x+_51.size.width)&&_4e.y<(_51.origin.y+_51.size.height))){ +_dragOffset={width:0,height:0}; +objj_msgSend(_4c,"setObjectValue:",objj_msgSend(_4c,"_valueAtPoint:",_4e)); +}else{ +return NO; +} +} +objj_msgSend(_4c,"setHighlighted:",YES); +objj_msgSend(_4c,"setNeedsLayout"); +objj_msgSend(_4c,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(_52,_53,_54,_55){ +with(_52){ +objj_msgSend(_52,"setObjectValue:",objj_msgSend(_52,"_valueAtPoint:",{x:_55.x+_dragOffset.width,y:_55.y+_dragOffset.height})); +return YES; +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_56,_57,_58,_59,_5a){ +with(_56){ +objj_msgSend(_56,"setHighlighted:",NO); +if(objj_msgSend(_target,"respondsToSelector:",sel_getUid("sliderDidFinish:"))){ +objj_msgSend(_target,"sliderDidFinish:",_56); +} +objj_msgSend(_56,"setNeedsLayout"); +objj_msgSend(_56,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setContinuous:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d){ +_sendActionOn|=CPLeftMouseDraggedMask; +}else{ +_sendActionOn&=~CPLeftMouseDraggedMask; +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_5e,_5f,_60,_61){ +with(_5e){ +var _62=_61.length,_63=objj_msgSend(_61[0],"valueForKeyPath:",_60); +objj_msgSend(_5e,"setObjectValue:",_63); +while(_62-->1){ +if(_63!==(objj_msgSend(_61[_62],"valueForKeyPath:",_60))){ +return objj_msgSend(_5e,"setFloatValue:",1); +} +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_64,_65){ +with(_64){ +return "slider"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_66,_67){ +with(_66){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),{width:0,height:0},0,objj_msgSend(CPNull,"null")],["knob-color","knob-size","track-width","track-color"]); +} +})]); +var _68="CPSliderMinValueKey",_69="CPSliderMaxValueKey",_6a="CPSliderAltIncrValueKey"; +var _1=objj_getClass("CPSlider"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_6b,_6c,_6d){ +with(_6b){ +_minValue=objj_msgSend(_6d,"decodeDoubleForKey:",_68); +_maxValue=objj_msgSend(_6d,"decodeDoubleForKey:",_69); +_6b=objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPSlider").super_class},"initWithCoder:",_6d); +if(_6b){ +_altIncrementValue=objj_msgSend(_6d,"decodeDoubleForKey:",_6a); +objj_msgSend(_6b,"setContinuous:",YES); +objj_msgSend(_6b,"_recalculateIsVertical"); +objj_msgSend(_6b,"setNeedsLayout"); +objj_msgSend(_6b,"setNeedsDisplay:",YES); +} +return _6b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6e,_6f,_70){ +with(_6e){ +objj_msgSendSuper({receiver:_6e,super_class:objj_getClass("CPSlider").super_class},"encodeWithCoder:",_70); +objj_msgSend(_70,"encodeDouble:forKey:",_minValue,_68); +objj_msgSend(_70,"encodeDouble:forKey:",_maxValue,_69); +objj_msgSend(_70,"encodeDouble:forKey:",_altIncrementValue,_6a); +} +})]); +var _1=objj_getClass("CPSlider"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("value"),function(_71,_72){ +with(_71){ +CPLog.warn("[CPSlider value] is deprecated, use doubleValue or objectValue instead."); +return objj_msgSend(_71,"doubleValue"); +} +}),new objj_method(sel_getUid("setValue:"),function(_73,_74,_75){ +with(_73){ +CPLog.warn("[CPSlider setValue:] is deprecated, use setDoubleValue: or setObjectValue: instead."); +objj_msgSend(_73,"setObjectValue:",_75); +} +})]); +p;21;CPSliderColorPicker.jt;14189;@STATIC;1.0;i;15;CPColorPicker.jt;14149; +objj_executeFile("CPColorPicker.j",YES); +var _1=objj_allocateClassPair(CPColorPicker,"CPSliderColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentView"),new objj_ivar("_redSlider"),new objj_ivar("_greenSlider"),new objj_ivar("_blueSlider"),new objj_ivar("_hueSlider"),new objj_ivar("_saturationSlider"),new objj_ivar("_brightnessSlider"),new objj_ivar("_rgbLabel"),new objj_ivar("_hsbLabel"),new objj_ivar("_redLabel"),new objj_ivar("_greenLabel"),new objj_ivar("_blueLabel"),new objj_ivar("_hueLabel"),new objj_ivar("_saturationLabel"),new objj_ivar("_brightnessLabel"),new objj_ivar("_hexLabel"),new objj_ivar("_hexValue"),new objj_ivar("_hexValue"),new objj_ivar("_redValue"),new objj_ivar("_greenValue"),new objj_ivar("_blueValue"),new objj_ivar("_hueValue"),new objj_ivar("_saturationValue"),new objj_ivar("_brightnessValue")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_3,_4,_5,_6){ +with(_3){ +return objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSliderColorPicker").super_class},"initWithPickerMask:colorPanel:",_5,_6); +} +}),new objj_method(sel_getUid("initView"),function(_7,_8){ +with(_7){ +aFrame=CPRectMake(0,0,CPColorPickerViewWidth,CPColorPickerViewHeight); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",aFrame); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_rgbLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,10,100,20)); +objj_msgSend(_rgbLabel,"setStringValue:","Red, Green, Blue"); +objj_msgSend(_rgbLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_redLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,35,15,20)); +objj_msgSend(_redLabel,"setStringValue:","R"); +objj_msgSend(_redLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_redSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,35,aFrame.size.width-70,20)); +objj_msgSend(_redSlider,"setMaxValue:",1); +objj_msgSend(_redSlider,"setMinValue:",0); +objj_msgSend(_redSlider,"setTarget:",_7); +objj_msgSend(_redSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_redSlider,"setAutoresizingMask:",CPViewWidthSizable); +_redValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,30,45,29)); +objj_msgSend(_redValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_redValue,"setEditable:",YES); +objj_msgSend(_redValue,"setBezeled:",YES); +objj_msgSend(_redValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_redValue); +_greenLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,58,15,20)); +objj_msgSend(_greenLabel,"setStringValue:","G"); +objj_msgSend(_greenLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_greenSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,58,aFrame.size.width-70,20)); +objj_msgSend(_greenSlider,"setMaxValue:",1); +objj_msgSend(_greenSlider,"setMinValue:",0); +objj_msgSend(_greenSlider,"setTarget:",_7); +objj_msgSend(_greenSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_greenSlider,"setAutoresizingMask:",CPViewWidthSizable); +_greenValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,53,45,29)); +objj_msgSend(_greenValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_greenValue,"setEditable:",YES); +objj_msgSend(_greenValue,"setBezeled:",YES); +objj_msgSend(_greenValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_greenValue); +_blueLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,81,15,20)); +objj_msgSend(_blueLabel,"setStringValue:","B"); +objj_msgSend(_blueLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_blueSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,81,aFrame.size.width-70,20)); +objj_msgSend(_blueSlider,"setMaxValue:",1); +objj_msgSend(_blueSlider,"setMinValue:",0); +objj_msgSend(_blueSlider,"setTarget:",_7); +objj_msgSend(_blueSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_blueSlider,"setAutoresizingMask:",CPViewWidthSizable); +_blueValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,76,45,29)); +objj_msgSend(_blueValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_blueValue,"setEditable:",YES); +objj_msgSend(_blueValue,"setBezeled:",YES); +objj_msgSend(_blueValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_blueValue); +_hsbLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,120,190,20)); +objj_msgSend(_hsbLabel,"setStringValue:","Hue, Saturation, Brightness"); +objj_msgSend(_hsbLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hueLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,145,15,20)); +objj_msgSend(_hueLabel,"setStringValue:","H"); +objj_msgSend(_hueLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hueSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,145,aFrame.size.width-70,20)); +objj_msgSend(_hueSlider,"setMaxValue:",359); +objj_msgSend(_hueSlider,"setMinValue:",0); +objj_msgSend(_hueSlider,"setTarget:",_7); +objj_msgSend(_hueSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_hueSlider,"setAutoresizingMask:",CPViewWidthSizable); +_hueValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,140,45,29)); +objj_msgSend(_hueValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_hueValue,"setEditable:",YES); +objj_msgSend(_hueValue,"setBezeled:",YES); +objj_msgSend(_hueValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_hueValue); +_saturationLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,168,15,20)); +objj_msgSend(_saturationLabel,"setStringValue:","S"); +objj_msgSend(_saturationLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_saturationSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,168,aFrame.size.width-70,20)); +objj_msgSend(_saturationSlider,"setMaxValue:",100); +objj_msgSend(_saturationSlider,"setMinValue:",0); +objj_msgSend(_saturationSlider,"setTarget:",_7); +objj_msgSend(_saturationSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_saturationSlider,"setAutoresizingMask:",CPViewWidthSizable); +_saturationValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,163,45,29)); +objj_msgSend(_saturationValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_saturationValue,"setEditable:",YES); +objj_msgSend(_saturationValue,"setBezeled:",YES); +objj_msgSend(_saturationValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_saturationValue); +_brightnessLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,191,15,20)); +objj_msgSend(_brightnessLabel,"setStringValue:","B"); +objj_msgSend(_brightnessLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_brightnessSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,191,aFrame.size.width-70,20)); +objj_msgSend(_brightnessSlider,"setMaxValue:",100); +objj_msgSend(_brightnessSlider,"setMinValue:",0); +objj_msgSend(_brightnessSlider,"setTarget:",_7); +objj_msgSend(_brightnessSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_brightnessSlider,"setAutoresizingMask:",CPViewWidthSizable); +_brightnessValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,186,45,29)); +objj_msgSend(_brightnessValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_brightnessValue,"setEditable:",YES); +objj_msgSend(_brightnessValue,"setBezeled:",YES); +objj_msgSend(_brightnessValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_brightnessValue); +_hexLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,230,30,20)); +objj_msgSend(_hexLabel,"setStringValue:","Hex"); +objj_msgSend(_hexLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hexValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(32,225,80,29)); +objj_msgSend(_hexValue,"setEditable:",YES); +objj_msgSend(_hexValue,"setBezeled:",YES); +objj_msgSend(_hexValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_hexValue); +objj_msgSend(_contentView,"addSubview:",_rgbLabel); +objj_msgSend(_contentView,"addSubview:",_redLabel); +objj_msgSend(_contentView,"addSubview:",_greenLabel); +objj_msgSend(_contentView,"addSubview:",_blueLabel); +objj_msgSend(_contentView,"addSubview:",_redSlider); +objj_msgSend(_contentView,"addSubview:",_greenSlider); +objj_msgSend(_contentView,"addSubview:",_blueSlider); +objj_msgSend(_contentView,"addSubview:",_hsbLabel); +objj_msgSend(_contentView,"addSubview:",_hueLabel); +objj_msgSend(_contentView,"addSubview:",_saturationLabel); +objj_msgSend(_contentView,"addSubview:",_brightnessLabel); +objj_msgSend(_contentView,"addSubview:",_hueSlider); +objj_msgSend(_contentView,"addSubview:",_saturationSlider); +objj_msgSend(_contentView,"addSubview:",_brightnessSlider); +objj_msgSend(_contentView,"addSubview:",_hexLabel); +} +}),new objj_method(sel_getUid("provideNewView:"),function(_9,_a,_b){ +with(_9){ +if(_b){ +objj_msgSend(_9,"initView"); +} +return _contentView; +} +}),new objj_method(sel_getUid("currentMode"),function(_c,_d){ +with(_c){ +return CPSliderColorPickerMode; +} +}),new objj_method(sel_getUid("supportsMode:"),function(_e,_f,_10){ +with(_e){ +return (_10==CPSliderColorPickerMode)?YES:NO; +} +}),new objj_method(sel_getUid("sliderChanged:"),function(_11,_12,_13){ +with(_11){ +var _14,_15=objj_msgSend(_11,"colorPanel"),_16=objj_msgSend(_15,"opacity"); +switch(_13){ +case _hueSlider: +case _saturationSlider: +case _brightnessSlider: +_14=objj_msgSend(CPColor,"colorWithHue:saturation:brightness:alpha:",objj_msgSend(_hueSlider,"floatValue"),objj_msgSend(_saturationSlider,"floatValue"),objj_msgSend(_brightnessSlider,"floatValue"),_16); +objj_msgSend(_11,"updateRGBSliders:",_14); +break; +case _redSlider: +case _greenSlider: +case _blueSlider: +_14=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",objj_msgSend(_redSlider,"floatValue"),objj_msgSend(_greenSlider,"floatValue"),objj_msgSend(_blueSlider,"floatValue"),_16); +objj_msgSend(_11,"updateHSBSliders:",_14); +break; +} +objj_msgSend(_11,"updateLabels"); +objj_msgSend(_11,"updateHex:",_14); +objj_msgSend(_15,"setColor:",_14); +} +}),new objj_method(sel_getUid("setColor:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"updateRGBSliders:",_19); +objj_msgSend(_17,"updateHSBSliders:",_19); +objj_msgSend(_17,"updateHex:",_19); +objj_msgSend(_17,"updateLabels"); +} +}),new objj_method(sel_getUid("updateHSBSliders:"),function(_1a,_1b,_1c){ +with(_1a){ +var hsb=objj_msgSend(_1c,"hsbComponents"); +objj_msgSend(_hueSlider,"setFloatValue:",hsb[0]); +objj_msgSend(_saturationSlider,"setFloatValue:",hsb[1]); +objj_msgSend(_brightnessSlider,"setFloatValue:",hsb[2]); +} +}),new objj_method(sel_getUid("updateHex:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_hexValue,"setStringValue:",objj_msgSend(_1f,"hexString")); +} +}),new objj_method(sel_getUid("updateRGBSliders:"),function(_20,_21,_22){ +with(_20){ +var rgb=objj_msgSend(_22,"components"); +objj_msgSend(_redSlider,"setFloatValue:",rgb[0]); +objj_msgSend(_greenSlider,"setFloatValue:",rgb[1]); +objj_msgSend(_blueSlider,"setFloatValue:",rgb[2]); +} +}),new objj_method(sel_getUid("updateLabels"),function(_23,_24){ +with(_23){ +objj_msgSend(_hueValue,"setStringValue:",ROUND(objj_msgSend(_hueSlider,"floatValue"))); +objj_msgSend(_saturationValue,"setStringValue:",ROUND(objj_msgSend(_saturationSlider,"floatValue"))); +objj_msgSend(_brightnessValue,"setStringValue:",ROUND(objj_msgSend(_brightnessSlider,"floatValue"))); +objj_msgSend(_redValue,"setStringValue:",ROUND(objj_msgSend(_redSlider,"floatValue")*255)); +objj_msgSend(_greenValue,"setStringValue:",ROUND(objj_msgSend(_greenSlider,"floatValue")*255)); +objj_msgSend(_blueValue,"setStringValue:",ROUND(objj_msgSend(_blueSlider,"floatValue")*255)); +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_25,_26){ +with(_25){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","slider_button.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("provideNewAlternateButtonImage"),function(_27,_28){ +with(_27){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","slider_button_h.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("controlTextDidEndEditing:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=objj_msgSend(_2b,"object"),_2d=objj_msgSend(objj_msgSend(_2c,"stringValue"),"stringByTrimmingWhitespace"); +if(_2c===_hexValue){ +var _2e=objj_msgSend(CPColor,"colorWithHexString:",_2d); +if(_2e){ +objj_msgSend(_29,"setColor:",_2e); +objj_msgSend(objj_msgSend(_29,"colorPanel"),"setColor:",_2e); +} +}else{ +switch(_2c){ +case _redValue: +objj_msgSend(_redSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_redSlider); +break; +case _greenValue: +objj_msgSend(_greenSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_greenSlider); +break; +case _blueValue: +objj_msgSend(_blueSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_blueSlider); +break; +case _hueValue: +objj_msgSend(_hueSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),360),0)); +objj_msgSend(_29,"sliderChanged:",_hueSlider); +break; +case _saturationValue: +objj_msgSend(_saturationSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),100),0)); +objj_msgSend(_29,"sliderChanged:",_saturationSlider); +break; +case _brightnessValue: +objj_msgSend(_brightnessSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),100),0)); +objj_msgSend(_29,"sliderChanged:",_brightnessSlider); +break; +} +} +} +})]); +p;13;CPSplitView.jt;21099;@STATIC;1.0;i;13;CPButtonBar.ji;9;CPImage.ji;8;CPView.jt;21036; +objj_executeFile("CPButtonBar.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPView.j",YES); +CPSplitViewDidResizeSubviewsNotification="CPSplitViewDidResizeSubviewsNotification"; +CPSplitViewWillResizeSubviewsNotification="CPSplitViewWillResizeSubviewsNotification"; +var _1=nil,_2=nil; +var _3=objj_allocateClassPair(CPView,"CPSplitView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_delegate"),new objj_ivar("_isVertical"),new objj_ivar("_isPaneSplitter"),new objj_ivar("_currentDivider"),new objj_ivar("_initialOffset"),new objj_ivar("_preCollapsePosition"),new objj_ivar("_originComponent"),new objj_ivar("_sizeComponent"),new objj_ivar("_DOMDividerElements"),new objj_ivar("_dividerImagePath"),new objj_ivar("_drawingDivider"),new objj_ivar("_needsResizeSubviews"),new objj_ivar("_buttonBars")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("initWithFrame:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPSplitView").super_class},"initWithFrame:",_7)){ +_currentDivider=CPNotFound; +_DOMDividerElements=[]; +_buttonBars=[]; +objj_msgSend(_5,"_setVertical:",YES); +} +return _5; +} +}),new objj_method(sel_getUid("dividerThickness"),function(_8,_9){ +with(_8){ +return objj_msgSend(_8,"currentValueForThemeAttribute:",objj_msgSend(_8,"isPaneSplitter")?"pane-divider-thickness":"divider-thickness"); +} +}),new objj_method(sel_getUid("isVertical"),function(_a,_b){ +with(_a){ +return _isVertical; +} +}),new objj_method(sel_getUid("setVertical:"),function(_c,_d,_e){ +with(_c){ +if(!objj_msgSend(_c,"_setVertical:",_e)){ +return; +} +var _f=objj_msgSend(_c,"frame"),_10=objj_msgSend(_c,"dividerThickness"); +objj_msgSend(_c,"_postNotificationWillResize"); +var _11=ROUND((_f.size[_sizeComponent]-_10*(_subviews.length-1))/_subviews.length),_12=0,_13=_subviews.length; +if(objj_msgSend(_c,"isVertical")){ +for(;_12<_13;++_12){ +objj_msgSend(_subviews[_12],"setFrame:",CGRectMake(ROUND((_11+_10)*_12),0,_11,_f.size.height)); +} +}else{ +for(;_12<_13;++_12){ +objj_msgSend(_subviews[_12],"setFrame:",CGRectMake(0,ROUND((_11+_10)*_12),_f.size.width,_11)); +} +} +objj_msgSend(_c,"setNeedsDisplay:",YES); +objj_msgSend(_c,"_postNotificationDidResize"); +} +}),new objj_method(sel_getUid("_setVertical:"),function(_14,_15,_16){ +with(_14){ +var _17=(_isVertical!=_16); +_isVertical=_16; +_originComponent=objj_msgSend(_14,"isVertical")?"x":"y"; +_sizeComponent=objj_msgSend(_14,"isVertical")?"width":"height"; +_dividerImagePath=objj_msgSend(_14,"isVertical")?objj_msgSend(_2,"filename"):objj_msgSend(_1,"filename"); +return _17; +} +}),new objj_method(sel_getUid("isPaneSplitter"),function(_18,_19){ +with(_18){ +return _isPaneSplitter; +} +}),new objj_method(sel_getUid("setIsPaneSplitter:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_isPaneSplitter==_1c){ +return; +} +_isPaneSplitter=_1c; +if(_DOMDividerElements[_drawingDivider]){ +objj_msgSend(_1a,"_setupDOMDivider"); +} +_needsResizeSubviews=YES; +objj_msgSend(_1a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_1d,_1e,_1f){ +with(_1d){ +_needsResizeSubviews=YES; +} +}),new objj_method(sel_getUid("isSubviewCollapsed:"),function(_20,_21,_22){ +with(_20){ +return objj_msgSend(_22,"frame").size[_sizeComponent]<1?YES:NO; +} +}),new objj_method(sel_getUid("rectOfDividerAtIndex:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_subviews[_25],"frame"),_27=CGRectMakeZero(); +_27.size=objj_msgSend(_23,"frame").size; +_27.size[_sizeComponent]=objj_msgSend(_23,"dividerThickness"); +_27.origin[_originComponent]=_26.origin[_originComponent]+_26.size[_sizeComponent]; +return _27; +} +}),new objj_method(sel_getUid("effectiveRectOfDividerAtIndex:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(_28,"rectOfDividerAtIndex:",_2a); +var _2c=2; +_2b.size[_sizeComponent]+=_2c*2; +_2b.origin[_originComponent]-=_2c; +return _2b; +} +}),new objj_method(sel_getUid("drawRect:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_subviews,"count")-1; +while((_30--)>0){ +_drawingDivider=_30; +objj_msgSend(_2d,"drawDividerInRect:",objj_msgSend(_2d,"rectOfDividerAtIndex:",_30)); +} +} +}),new objj_method(sel_getUid("drawDividerInRect:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("_setupDOMDivider"),function(_34,_35){ +with(_34){ +if(_isPaneSplitter){ +_DOMDividerElements[_drawingDivider].style.backgroundColor="#A5A5A5"; +_DOMDividerElements[_drawingDivider].style.backgroundImage=""; +}else{ +_DOMDividerElements[_drawingDivider].style.backgroundColor=""; +_DOMDividerElements[_drawingDivider].style.backgroundImage="url('"+_dividerImagePath+"')"; +} +} +}),new objj_method(sel_getUid("viewWillDraw"),function(_36,_37){ +with(_36){ +objj_msgSend(_36,"_adjustSubviewsWithCalculatedSize"); +} +}),new objj_method(sel_getUid("_adjustSubviewsWithCalculatedSize"),function(_38,_39){ +with(_38){ +if(!_needsResizeSubviews){ +return; +} +_needsResizeSubviews=NO; +var _3a=objj_msgSend(_38,"subviews"),_3b=_3a.length,_3c=CGSizeMakeZero(); +if(objj_msgSend(_38,"isVertical")){ +_3c.width+=objj_msgSend(_38,"dividerThickness")*(_3b-1); +_3c.height=CGRectGetHeight(objj_msgSend(_38,"frame")); +}else{ +_3c.width=CGRectGetWidth(objj_msgSend(_38,"frame")); +_3c.height+=objj_msgSend(_38,"dividerThickness")*(_3b-1); +} +while(_3b--){ +_3c[_sizeComponent]+=objj_msgSend(_3a[_3b],"frame").size[_sizeComponent]; +} +objj_msgSend(_38,"resizeSubviewsWithOldSize:",_3c); +} +}),new objj_method(sel_getUid("cursorAtPoint:hitDividerAtIndex:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +var _41=objj_msgSend(_subviews[_40],"frame"),_42=_41.origin[_originComponent]+_41.size[_sizeComponent],_43=objj_msgSend(_3d,"effectiveRectOfDividerAtIndex:",_40),_44=_buttonBars[_40],_45=null,_46=null; +if(_44!=null){ +_45=objj_msgSend(_44,"resizeControlFrame"); +_45.origin=objj_msgSend(_3d,"convertPoint:fromView:",_45.origin,_44); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:"))){ +_43=objj_msgSend(_delegate,"splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:",_3d,_43,_43,_40); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:additionalEffectiveRectOfDividerAtIndex:"))){ +_46=objj_msgSend(_delegate,"splitView:additionalEffectiveRectOfDividerAtIndex:",_3d,_40); +} +return CGRectContainsPoint(_43,_3f)||(_46&&CGRectContainsPoint(_46,_3f))||(_45&&CGRectContainsPoint(_45,_3f)); +} +}),new objj_method(sel_getUid("hitTest:"),function(_47,_48,_49){ +with(_47){ +if(objj_msgSend(_47,"isHidden")||!objj_msgSend(_47,"hitTests")||!CGRectContainsPoint(objj_msgSend(_47,"frame"),_49)){ +return nil; +} +var _4a=objj_msgSend(_47,"convertPoint:fromView:",_49,objj_msgSend(_47,"superview")); +var _4b=objj_msgSend(_subviews,"count")-1; +for(var i=0;i<_4b;i++){ +if(objj_msgSend(_47,"cursorAtPoint:hitDividerAtIndex:",_4a,i)){ +return _47; +} +} +return objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPSplitView").super_class},"hitTest:",_49); +} +}),new objj_method(sel_getUid("trackDivider:"),function(_4c,_4d,_4e){ +with(_4c){ +var _4f=objj_msgSend(_4e,"type"); +if(_4f==CPLeftMouseUp){ +if(_currentDivider!=CPNotFound){ +_currentDivider=CPNotFound; +objj_msgSend(_4c,"_updateResizeCursor:",_4e); +objj_msgSend(_4c,"_postNotificationDidResize"); +} +return; +} +if(_4f==CPLeftMouseDown){ +var _50=objj_msgSend(_4c,"convertPoint:fromView:",objj_msgSend(_4e,"locationInWindow"),nil); +_currentDivider=CPNotFound; +var _51=objj_msgSend(_subviews,"count")-1; +for(var i=0;i<_51;i++){ +var _52=objj_msgSend(_subviews[i],"frame"),_53=_52.origin[_originComponent]+_52.size[_sizeComponent]; +if(objj_msgSend(_4c,"cursorAtPoint:hitDividerAtIndex:",_50,i)){ +if(objj_msgSend(_4e,"clickCount")==2&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:"))){ +var _54=objj_msgSend(_4c,"minPossiblePositionOfDividerAtIndex:",i),_55=objj_msgSend(_4c,"maxPossiblePositionOfDividerAtIndex:",i); +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_4c,_subviews[i])&&objj_msgSend(_delegate,"splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:",_4c,_subviews[i],i)){ +if(objj_msgSend(_4c,"isSubviewCollapsed:",_subviews[i])){ +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",_preCollapsePosition?_preCollapsePosition:(_54+(_55-_54)/2),i); +}else{ +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",_54,i); +} +}else{ +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_4c,_subviews[i+1])&&objj_msgSend(_delegate,"splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:",_4c,_subviews[i+1],i)){ +if(objj_msgSend(_4c,"isSubviewCollapsed:",_subviews[i+1])){ +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",_preCollapsePosition?_preCollapsePosition:(_54+(_55-_54)/2),i); +}else{ +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",_55,i); +} +} +} +}else{ +_currentDivider=i; +_initialOffset=_53-_50[_originComponent]; +objj_msgSend(_4c,"_postNotificationWillResize"); +} +} +} +if(_currentDivider===CPNotFound){ +return; +} +}else{ +if(_4f==CPLeftMouseDragged&&_currentDivider!=CPNotFound){ +var _50=objj_msgSend(_4c,"convertPoint:fromView:",objj_msgSend(_4e,"locationInWindow"),nil); +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",(_50[_originComponent]+_initialOffset),_currentDivider); +objj_msgSend(_4c,"_updateResizeCursor:",_4e); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_4c,sel_getUid("trackDivider:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_56,_57,_58){ +with(_56){ +objj_msgSend(_56,"trackDivider:",_58); +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_59,_5a){ +with(_59){ +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_currentDivider==CPNotFound){ +objj_msgSend(_5b,"_updateResizeCursor:",_5d); +} +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_5e,_5f,_60){ +with(_5e){ +if(_currentDivider==CPNotFound){ +objj_msgSend(_5e,"_updateResizeCursor:",_60); +} +} +}),new objj_method(sel_getUid("mouseExited:"),function(_61,_62,_63){ +with(_61){ +if(_currentDivider==CPNotFound){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +} +}),new objj_method(sel_getUid("_updateResizeCursor:"),function(_64,_65,_66){ +with(_64){ +var _67=objj_msgSend(_64,"convertPoint:fromView:",objj_msgSend(_66,"locationInWindow"),nil); +if(objj_msgSend(_66,"type")===CPLeftMouseUp&&!objj_msgSend(objj_msgSend(_64,"window"),"acceptsMouseMovedEvents")){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +return; +} +for(var i=0,_68=objj_msgSend(_subviews,"count")-1;i<_68;i++){ +if(_currentDivider===i||(_currentDivider==CPNotFound&&objj_msgSend(_64,"cursorAtPoint:hitDividerAtIndex:",_67,i))){ +var _69=objj_msgSend(_subviews[i],"frame"),_6a=_69.size[_sizeComponent],_6b=_69.origin[_originComponent]+_6a,_6c=objj_msgSend(_64,"_realPositionForPosition:ofDividerAtIndex:",_6b-1,i)<_6b,_6d=objj_msgSend(_64,"_realPositionForPosition:ofDividerAtIndex:",_6b+1,i)>_6b,_6e=objj_msgSend(CPCursor,"arrowCursor"); +if(_6a===0){ +_6d=YES; +}else{ +if(!_6c&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))&&objj_msgSend(_delegate,"splitView:canCollapseSubview:",_64,_subviews[i])){ +_6c=YES; +} +} +if(_isVertical&&_6c&&_6d){ +_6e=objj_msgSend(CPCursor,"resizeLeftRightCursor"); +}else{ +if(_isVertical&&_6c){ +_6e=objj_msgSend(CPCursor,"resizeLeftCursor"); +}else{ +if(_isVertical&&_6d){ +_6e=objj_msgSend(CPCursor,"resizeRightCursor"); +}else{ +if(_6c&&_6d){ +_6e=objj_msgSend(CPCursor,"resizeUpDownCursor"); +}else{ +if(_6c){ +_6e=objj_msgSend(CPCursor,"resizeUpCursor"); +}else{ +if(_6d){ +_6e=objj_msgSend(CPCursor,"resizeDownCursor"); +} +} +} +} +} +} +objj_msgSend(_6e,"set"); +return; +} +} +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +}),new objj_method(sel_getUid("maxPossiblePositionOfDividerAtIndex:"),function(_6f,_70,_71){ +with(_6f){ +var _72=objj_msgSend(_subviews[_71+1],"frame"); +if(_71+10){ +var _76=objj_msgSend(_subviews[_75-1],"frame"); +return _76.origin[_originComponent]+_76.size[_sizeComponent]+objj_msgSend(_73,"dividerThickness"); +}else{ +return 0; +} +} +}),new objj_method(sel_getUid("_realPositionForPosition:ofDividerAtIndex:"),function(_77,_78,_79,_7a){ +with(_77){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainSplitPosition:ofSubviewAt:"))){ +_79=objj_msgSend(_delegate,"splitView:constrainSplitPosition:ofSubviewAt:",_77,_79,_7a); +} +var _7b=objj_msgSend(_77,"maxPossiblePositionOfDividerAtIndex:",_7a),_7c=objj_msgSend(_77,"minPossiblePositionOfDividerAtIndex:",_7a),_7d=_7b,_7e=_7c; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainMinCoordinate:ofSubviewAt:"))){ +_7e=objj_msgSend(_delegate,"splitView:constrainMinCoordinate:ofSubviewAt:",_77,_7c,_7a); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainMaxCoordinate:ofSubviewAt:"))){ +_7d=objj_msgSend(_delegate,"splitView:constrainMaxCoordinate:ofSubviewAt:",_77,_7b,_7a); +} +var _7f=_subviews[_7a],_80=MAX(MIN(_79,_7d),_7e); +if(_79<_7c+(_7e-_7c)/2){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))){ +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_77,_7f)){ +_80=_7c; +} +} +} +return _80; +} +}),new objj_method(sel_getUid("setPosition:ofDividerAtIndex:"),function(_81,_82,_83,_84){ +with(_81){ +objj_msgSend(_81,"_adjustSubviewsWithCalculatedSize"); +var _85=objj_msgSend(_81,"_realPositionForPosition:ofDividerAtIndex:",_83,_84); +var _86=_subviews[_84],_87=objj_msgSend(_86,"frame"),_88=_subviews[_84+1],_89=objj_msgSend(_88,"frame"); +_preCollapsePosition=0; +var _8a=_87.size[_sizeComponent]; +_87.size[_sizeComponent]=_85-_87.origin[_originComponent]; +if(_8a!==0&&_87.size[_sizeComponent]===0){ +_preCollapsePosition=_8a; +} +objj_msgSend(_subviews[_84],"setFrame:",_87); +_8a=_89.size[_sizeComponent]; +_89.size[_sizeComponent]=_89.origin[_originComponent]+_89.size[_sizeComponent]-_85-objj_msgSend(_81,"dividerThickness"); +if(_8a!==0&&_89.size[_sizeComponent]===0){ +_preCollapsePosition=_8a; +} +_89.origin[_originComponent]=_85+objj_msgSend(_81,"dividerThickness"); +objj_msgSend(_subviews[_84+1],"setFrame:",_89); +objj_msgSend(_81,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_8b,_8c,_8d){ +with(_8b){ +objj_msgSend(_8b,"_adjustSubviewsWithCalculatedSize"); +objj_msgSendSuper({receiver:_8b,super_class:objj_getClass("CPSplitView").super_class},"setFrameSize:",_8d); +objj_msgSend(_8b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_8e,_8f,_90){ +with(_8e){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:resizeSubviewsWithOldSize:"))){ +objj_msgSend(_delegate,"splitView:resizeSubviewsWithOldSize:",_8e,_90); +return; +} +objj_msgSend(_8e,"_postNotificationWillResize"); +var _91=0,_92=objj_msgSend(_subviews,"count"),_93=objj_msgSend(_8e,"bounds"),_94=objj_msgSend(_8e,"dividerThickness"),_95=_92-1,_96=0,_97=0,_98=-1,_99=0,_9a=objj_msgSend(_8e,"isVertical"); +for(_91=0;_91<_92;++_91){ +var _9b=_subviews[_91],_9c=_9a?objj_msgSend(_9b,"autoresizingMask")&CPViewWidthSizable:objj_msgSend(_9b,"autoresizingMask")&CPViewHeightSizable; +if(_9c){ +_96+=objj_msgSend(_9b,"frame").size[_sizeComponent]; +_98=_91; +_99++; +} +} +if(_99===_92){ +_96=0; +} +var _97=_96?_93.size[_sizeComponent]-_96:0,_9d=_93.size[_sizeComponent]-_90[_sizeComponent],_9e=(_90[_sizeComponent]-_95*_94-_97),_9f=_9e<=0?0:(_93.size[_sizeComponent]-_95*_94-_97)/_9e; +for(_91=0;_91<_92;++_91){ +var _9b=_subviews[_91],_a0=CGRectMakeCopy(_93),_9c=_9a?objj_msgSend(_9b,"autoresizingMask")&CPViewWidthSizable:objj_msgSend(_9b,"autoresizingMask")&CPViewHeightSizable; +if(_91+1==_92){ +_a0.size[_sizeComponent]=_93.size[_sizeComponent]-_a0.origin[_originComponent]; +}else{ +if(_96&&_9c&&_98===_91){ +_a0.size[_sizeComponent]=MAX(0,ROUND(objj_msgSend(_9b,"frame").size[_sizeComponent]+_9d)); +}else{ +if(_9c||!_96){ +_a0.size[_sizeComponent]=MAX(0,ROUND(_9f*objj_msgSend(_9b,"frame").size[_sizeComponent])); +_9d-=(_a0.size[_sizeComponent]-objj_msgSend(_9b,"frame").size[_sizeComponent]); +}else{ +if(_96&&!_9c){ +_a0.size[_sizeComponent]=objj_msgSend(_9b,"frame").size[_sizeComponent]; +} +} +} +} +_93.origin[_originComponent]+=_a0.size[_sizeComponent]+_94; +objj_msgSend(_9b,"setFrame:",_a0); +} +objj_msgSend(_8e,"_postNotificationDidResize"); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_a1,_a2,_a3){ +with(_a1){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewDidResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_delegate,CPSplitViewDidResizeSubviewsNotification,_a1); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewWillResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_delegate,CPSplitViewWillResizeSubviewsNotification,_a1); +} +_delegate=_a3; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewDidResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_delegate,sel_getUid("splitViewDidResizeSubviews:"),CPSplitViewDidResizeSubviewsNotification,_a1); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewWillResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_delegate,sel_getUid("splitViewWillResizeSubviews:"),CPSplitViewWillResizeSubviewsNotification,_a1); +} +} +}),new objj_method(sel_getUid("setButtonBar:forDividerAtIndex:"),function(_a4,_a5,_a6,_a7){ +with(_a4){ +if(!_a6){ +_buttonBars[_a7]=nil; +return; +} +var _a8=objj_msgSend(_a6,"superview"),_a9=_a6; +while(_a8&&_a8!==_a4){ +_a9=_a8; +_a8=objj_msgSend(_a8,"superview"); +} +if(_a8!==_a4){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"CPSplitView button bar must be a subview of the split view."); +} +var _aa=objj_msgSend(objj_msgSend(_a4,"subviews"),"indexOfObject:",_a9); +objj_msgSend(_a6,"setHasResizeControl:",YES); +objj_msgSend(_a6,"setResizeControlIsLeftAligned:",_a7<_aa); +_buttonBars[_a7]=_a6; +} +}),new objj_method(sel_getUid("_postNotificationWillResize"),function(_ab,_ac){ +with(_ab){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPSplitViewWillResizeSubviewsNotification,_ab); +} +}),new objj_method(sel_getUid("_postNotificationDidResize"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPSplitViewDidResizeSubviewsNotification,_ad); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("themeClass"),function(_af,_b0){ +with(_af){ +return "splitview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_b1,_b2){ +with(_b1){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[10,1],["divider-thickness","pane-divider-thickness"]); +} +}),new objj_method(sel_getUid("initialize"),function(_b3,_b4){ +with(_b3){ +if(_b3!=objj_msgSend(CPSplitView,"class")){ +return; +} +var _b5=objj_msgSend(CPBundle,"bundleForClass:",_b3); +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b5,"pathForResource:","CPSplitView/CPSplitViewHorizontal.png"),CPSizeMake(5,10)); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b5,"pathForResource:","CPSplitView/CPSplitViewVertical.png"),CPSizeMake(10,5)); +} +})]); +var _b6="CPSplitViewDelegateKey",_b7="CPSplitViewIsVerticalKey",_b8="CPSplitViewIsPaneSplitterKey",_b9="CPSplitViewButtonBarsKey"; +var _3=objj_getClass("CPSplitView"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPSplitView\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_ba,_bb,_bc){ +with(_ba){ +_ba=objj_msgSendSuper({receiver:_ba,super_class:objj_getClass("CPSplitView").super_class},"initWithCoder:",_bc); +if(_ba){ +_currentDivider=CPNotFound; +_DOMDividerElements=[]; +_buttonBars=objj_msgSend(_bc,"decodeObjectForKey:",_b9)||[]; +_delegate=objj_msgSend(_bc,"decodeObjectForKey:",_b6); +_isPaneSplitter=objj_msgSend(_bc,"decodeBoolForKey:",_b8); +objj_msgSend(_ba,"_setVertical:",objj_msgSend(_bc,"decodeBoolForKey:",_b7)); +} +return _ba; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_bd,_be,_bf){ +with(_bd){ +objj_msgSendSuper({receiver:_bd,super_class:objj_getClass("CPSplitView").super_class},"encodeWithCoder:",_bf); +objj_msgSend(_bf,"encodeConditionalObject:forKey:",_delegate,_b6); +objj_msgSend(_bf,"encodeBool:forKey:",_isVertical,_b7); +objj_msgSend(_bf,"encodeBool:forKey:",_isPaneSplitter,_b8); +} +})]); +p;17;CPStringDrawing.jt;875;@STATIC;1.0;I;21;Foundation/CPString.ji;18;CPPlatformString.jt;808; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPPlatformString.j",YES); +var _1=objj_getClass("CPString"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPString\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("cssString"),function(_3,_4){ +with(_3){ +return _3; +} +}),new objj_method(sel_getUid("sizeWithFont:"),function(_5,_6,_7){ +with(_5){ +return objj_msgSend(_5,"sizeWithFont:inWidth:",_7,NULL); +} +}),new objj_method(sel_getUid("sizeWithFont:inWidth:"),function(_8,_9,_a,_b){ +with(_8){ +return objj_msgSend(CPPlatformString,"sizeOfString:withFont:forWidth:",_8,_a,_b); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("metricsOfFont:"),function(_c,_d,_e){ +with(_c){ +return objj_msgSend(CPPlatformString,"metricsOfFont:",_e); +} +})]); +p;15;CPTableColumn.jt;12873;@STATIC;1.0;I;25;Foundation/CPDictionary.jI;21;Foundation/CPObject.jI;29;Foundation/CPSortDescriptor.jI;21;Foundation/CPString.ji;19;CPTableHeaderView.jt;12713; +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPSortDescriptor.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPTableHeaderView.j",YES); +CPTableColumnNoResizing=0; +CPTableColumnAutoresizingMask=1<<0; +CPTableColumnUserResizingMask=1<<1; +var _1=objj_allocateClassPair(CPObject,"CPTableColumn"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_tableView"),new objj_ivar("_headerView"),new objj_ivar("_dataView"),new objj_ivar("_dataViewData"),new objj_ivar("_width"),new objj_ivar("_minWidth"),new objj_ivar("_maxWidth"),new objj_ivar("_resizingMask"),new objj_ivar("_identifier"),new objj_ivar("_isEditable"),new objj_ivar("_sortDescriptorPrototype"),new objj_ivar("_isHidden"),new objj_ivar("_headerToolTip"),new objj_ivar("_disableResizingPosting")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("disableResizingPosting"),function(_3,_4){ +with(_3){ +return _disableResizingPosting; +} +}),new objj_method(sel_getUid("setDisableResizingPosting:"),function(_5,_6,_7){ +with(_5){ +_disableResizingPosting=_7; +} +}),new objj_method(sel_getUid("init"),function(_8,_9){ +with(_8){ +return objj_msgSend(_8,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPTableColumn").super_class},"init"); +if(_a){ +_dataViewData={}; +_width=100; +_minWidth=10; +_maxWidth=1000000; +_resizingMask=CPTableColumnAutoresizingMask|CPTableColumnUserResizingMask; +_disableResizingPosting=NO; +objj_msgSend(_a,"setIdentifier:",_c); +var _d=objj_msgSend(objj_msgSend(_CPTableColumnHeaderView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_a,"setHeaderView:",_d); +objj_msgSend(_a,"setDataView:",objj_msgSend(CPTextField,"new")); +} +return _a; +} +}),new objj_method(sel_getUid("setTableView:"),function(_e,_f,_10){ +with(_e){ +_tableView=_10; +} +}),new objj_method(sel_getUid("tableView"),function(_11,_12){ +with(_11){ +return _tableView; +} +}),new objj_method(sel_getUid("setWidth:"),function(_13,_14,_15){ +with(_13){ +_15=+_15; +if(_width===_15){ +return; +} +var _16=MIN(MAX(_15,objj_msgSend(_13,"minWidth")),objj_msgSend(_13,"maxWidth")); +if(_width===_16){ +return; +} +var _17=_width; +_width=_16; +var _18=objj_msgSend(_13,"tableView"); +if(_18){ +var _19=objj_msgSend(objj_msgSend(_18,"tableColumns"),"indexOfObjectIdenticalTo:",_13),_1a=_18._dirtyTableColumnRangeIndex; +if(_1a<0){ +_18._dirtyTableColumnRangeIndex=_19; +}else{ +_18._dirtyTableColumnRangeIndex=MIN(_19,_18._dirtyTableColumnRangeIndex); +} +var _1b=_18._exposedRows,_1c=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_19,objj_msgSend(_18._exposedColumns,"lastIndex")-_19+1)); +objj_msgSend(_18,"_layoutDataViewsInRows:columns:",_1b,_1c); +objj_msgSend(_18,"tile"); +if(!_disableResizingPosting){ +objj_msgSend(_13,"_postDidResizeNotificationWithOldWidth:",_17); +} +} +} +}),new objj_method(sel_getUid("width"),function(_1d,_1e){ +with(_1d){ +return _width; +} +}),new objj_method(sel_getUid("setMinWidth:"),function(_1f,_20,_21){ +with(_1f){ +_21=+_21; +if(_minWidth===_21){ +return; +} +_minWidth=_21; +var _22=objj_msgSend(_1f,"width"),_23=MAX(_22,objj_msgSend(_1f,"minWidth")); +if(_22!==_23){ +objj_msgSend(_1f,"setWidth:",_23); +} +} +}),new objj_method(sel_getUid("minWidth"),function(_24,_25){ +with(_24){ +return _minWidth; +} +}),new objj_method(sel_getUid("setMaxWidth:"),function(_26,_27,_28){ +with(_26){ +_28=+_28; +if(_maxWidth===_28){ +return; +} +_maxWidth=_28; +var _29=objj_msgSend(_26,"width"),_2a=MIN(_29,objj_msgSend(_26,"maxWidth")); +if(_29!==_2a){ +objj_msgSend(_26,"setWidth:",_2a); +} +} +}),new objj_method(sel_getUid("maxWidth"),function(_2b,_2c){ +with(_2b){ +return _maxWidth; +} +}),new objj_method(sel_getUid("setResizingMask:"),function(_2d,_2e,_2f){ +with(_2d){ +_resizingMask=_2f; +} +}),new objj_method(sel_getUid("resizingMask"),function(_30,_31){ +with(_30){ +return _resizingMask; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_32,_33){ +with(_32){ +var _34=(objj_msgSend(_headerView,"frame").size.width); +if(_34objj_msgSend(_32,"maxWidth")){ +objj_msgSend(_32,"setMaxWidth:",_34); +} +} +if(_width!==_34){ +objj_msgSend(_32,"setWidth:",_34); +} +} +}),new objj_method(sel_getUid("setHeaderView:"),function(_35,_36,_37){ +with(_35){ +if(!_37){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Attempt to set nil header view on "+objj_msgSend(_35,"description")); +} +_headerView=_37; +var _38=objj_msgSend(_tableView,"headerView"); +objj_msgSend(_38,"setNeedsLayout"); +objj_msgSend(_38,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("headerView"),function(_39,_3a){ +with(_39){ +return _headerView; +} +}),new objj_method(sel_getUid("setDataView:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_dataView===_3d){ +return; +} +if(_dataView){ +_dataViewData[objj_msgSend(_dataView,"UID")]=nil; +} +objj_msgSend(_3d,"setThemeState:",CPThemeStateTableDataView); +_dataView=_3d; +_dataViewData[objj_msgSend(_3d,"UID")]=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_3d); +} +}),new objj_method(sel_getUid("dataView"),function(_3e,_3f){ +with(_3e){ +return _dataView; +} +}),new objj_method(sel_getUid("dataViewForRow:"),function(_40,_41,_42){ +with(_40){ +return objj_msgSend(_40,"dataView"); +} +}),new objj_method(sel_getUid("_newDataViewForRow:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_43,"dataViewForRow:",_45),_47=objj_msgSend(_46,"UID"); +var x=objj_msgSend(_43,"tableView")._cachedDataViews[_47]; +if(x&&x.length){ +return x.pop(); +} +if(!_dataViewData[_47]){ +_dataViewData[_47]=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_46); +} +var _48=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_dataViewData[_47]); +_48.identifier=_47; +objj_msgSend(_48,"setAutoresizingMask:",CPViewNotSizable); +return _48; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_49,_4a,_4b){ +with(_49){ +_identifier=_4b; +} +}),new objj_method(sel_getUid("identifier"),function(_4c,_4d){ +with(_4c){ +return _identifier; +} +}),new objj_method(sel_getUid("setEditable:"),function(_4e,_4f,_50){ +with(_4e){ +_isEditable=_50; +} +}),new objj_method(sel_getUid("isEditable"),function(_51,_52){ +with(_51){ +return _isEditable; +} +}),new objj_method(sel_getUid("setSortDescriptorPrototype:"),function(_53,_54,_55){ +with(_53){ +_sortDescriptorPrototype=_55; +} +}),new objj_method(sel_getUid("sortDescriptorPrototype"),function(_56,_57){ +with(_56){ +return _sortDescriptorPrototype; +} +}),new objj_method(sel_getUid("setHidden:"),function(_58,_59,_5a){ +with(_58){ +_5a=!!_5a; +if(_isHidden===_5a){ +return; +} +_isHidden=_5a; +objj_msgSend(objj_msgSend(_58,"headerView"),"setHidden:",_5a); +objj_msgSend(objj_msgSend(_58,"tableView"),"_tableColumnVisibilityDidChange:",_58); +} +}),new objj_method(sel_getUid("isHidden"),function(_5b,_5c){ +with(_5b){ +return _isHidden; +} +}),new objj_method(sel_getUid("setHeaderToolTip:"),function(_5d,_5e,_5f){ +with(_5d){ +_headerToolTip=_5f; +} +}),new objj_method(sel_getUid("headerToolTip"),function(_60,_61){ +with(_60){ +return _headerToolTip; +} +}),new objj_method(sel_getUid("_postDidResizeNotificationWithOldWidth:"),function(_62,_63,_64){ +with(_62){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewColumnDidResizeNotification,objj_msgSend(_62,"tableView"),objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_62,_64],["CPTableColumn","CPOldWidth"])); +} +})]); +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"),function(_65,_66,_67,_68,_69,_6a){ +with(_65){ +objj_msgSendSuper({receiver:_65,super_class:objj_getClass("CPTableColumn").super_class},"bind:toObject:withKeyPath:options:",_67,_68,_69,_6a); +if(!objj_msgSend(_67,"isEqual:","someListOfExceptedBindings(notAcceptedBindings)")){ +objj_msgSend(objj_msgSend(_65,"tableView"),"_establishBindingsIfUnbound:",_68); +} +} +}),new objj_method(sel_getUid("prepareDataView:forRow:"),function(_6b,_6c,_6d,_6e){ +with(_6b){ +var _6f=objj_msgSend(CPKeyValueBinding,"allBindingsForObject:",_6b),_70=objj_msgSend(_6f,"allKeys"); +for(var i=0,_71=objj_msgSend(_70,"count");i<_71;i++){ +var _72=_70[i],_73=objj_msgSend(_6d,"_replacementKeyPathForBinding:",_72),_74=objj_msgSend(_6f,"objectForKey:",_72),_75=_74._info,_76=objj_msgSend(_75,"objectForKey:",CPObservedObjectKey),_77=objj_msgSend(_75,"objectForKey:",CPObservedKeyPathKey),_78=_77.lastIndexOf("."),_79; +if(_78===CPNotFound){ +_79=objj_msgSend(objj_msgSend(_76,"valueForKeyPath:",_77),"objectAtIndex:",_6e); +}else{ +var _7a=_77.substring(0,_78),_7b=_77.substring(_78+1),_7c=objj_msgSend(_76,"valueForKeyPath:",_7a); +if(objj_msgSend(_7c,"isKindOfClass:",CPArray)){ +_79=objj_msgSend(objj_msgSend(_7c,"objectAtIndex:",_6e),"valueForKeyPath:",_7b); +}else{ +_79=objj_msgSend(objj_msgSend(_7c,"valueForKeyPath:",_7b),"objectAtIndex:",_6e); +} +} +_79=objj_msgSend(_74,"transformValue:withOptions:",_79,objj_msgSend(_75,"objectForKey:",CPOptionsKey)); +objj_msgSend(_6d,"setValue:forKey:",_79,_73); +} +} +}),new objj_method(sel_getUid("setValue:"),function(_7d,_7e,_7f){ +with(_7d){ +objj_msgSend(objj_msgSend(_7d,"tableView"),"reloadData"); +} +})]); +var _80="CPTableColumnIdentifierKey",_81="CPTableColumnHeaderViewKey",_82="CPTableColumnDataViewKey",_83="CPTableColumnWidthKey",_84="CPTableColumnMinWidthKey",_85="CPTableColumnMaxWidthKey",_86="CPTableColumnResizingMaskKey",_87="CPTableColumnIsHiddenKey",_88="CPSortDescriptorPrototypeKey",_89="CPTableColumnIsEditableKey"; +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_8a,_8b,_8c){ +with(_8a){ +_8a=objj_msgSendSuper({receiver:_8a,super_class:objj_getClass("CPTableColumn").super_class},"init"); +if(_8a){ +_dataViewData={}; +_width=objj_msgSend(_8c,"decodeFloatForKey:",_83); +_minWidth=objj_msgSend(_8c,"decodeFloatForKey:",_84); +_maxWidth=objj_msgSend(_8c,"decodeFloatForKey:",_85); +objj_msgSend(_8a,"setIdentifier:",objj_msgSend(_8c,"decodeObjectForKey:",_80)); +objj_msgSend(_8a,"setHeaderView:",objj_msgSend(_8c,"decodeObjectForKey:",_81)); +objj_msgSend(_8a,"setDataView:",objj_msgSend(_8c,"decodeObjectForKey:",_82)); +objj_msgSend(_8a,"setHeaderView:",objj_msgSend(_8c,"decodeObjectForKey:",_81)); +_resizingMask=objj_msgSend(_8c,"decodeIntForKey:",_86); +_isHidden=objj_msgSend(_8c,"decodeBoolForKey:",_87); +_isEditable=objj_msgSend(_8c,"decodeBoolForKey:",_89); +_sortDescriptorPrototype=objj_msgSend(_8c,"decodeObjectForKey:",_88); +} +return _8a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8f,"encodeObject:forKey:",_identifier,_80); +objj_msgSend(_8f,"encodeObject:forKey:",_width,_83); +objj_msgSend(_8f,"encodeObject:forKey:",_minWidth,_84); +objj_msgSend(_8f,"encodeObject:forKey:",_maxWidth,_85); +objj_msgSend(_8f,"encodeObject:forKey:",_headerView,_81); +objj_msgSend(_8f,"encodeObject:forKey:",_dataView,_82); +objj_msgSend(_8f,"encodeObject:forKey:",_resizingMask,_86); +objj_msgSend(_8f,"encodeBool:forKey:",_isHidden,_87); +objj_msgSend(_8f,"encodeBool:forKey:",_isEditable,_89); +objj_msgSend(_8f,"encodeObject:forKey:",_sortDescriptorPrototype,_88); +} +})]); +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setHeaderCell:"),function(_90,_91,_92){ +with(_90){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"setHeaderCell: is not supported. -setHeaderCell:aView instead."); +} +}),new objj_method(sel_getUid("headerCell"),function(_93,_94){ +with(_93){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"headCell is not supported. -headerView instead."); +} +}),new objj_method(sel_getUid("setDataCell:"),function(_95,_96,_97){ +with(_95){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"setDataCell: is not supported. Use -setHeaderCell:aView instead."); +} +}),new objj_method(sel_getUid("dataCell"),function(_98,_99){ +with(_98){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataCell is not supported. Use -dataCell instead."); +} +}),new objj_method(sel_getUid("dataCellForRow:"),function(_9a,_9b,row){ +with(_9a){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataCellForRow: is not supported. Use -dataViewForRow:row instead."); +} +})]); +p;19;CPTableHeaderView.jt;21454;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.ji;8;CPView.jt;21384; +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPTableColumnHeaderView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_textField")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"_init"); +} +return _3; +} +}),new objj_method(sel_getUid("_init"),function(_6,_7){ +with(_6){ +_textField=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_textField,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_textField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_textField,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_textField,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_6,"addSubview:",_textField); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_8,_9){ +with(_8){ +objj_msgSend(_8,"setBackgroundColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","background-color")); +var _a=objj_msgSend(_8,"currentValueForThemeAttribute:","text-inset"),_b=objj_msgSend(_8,"bounds"); +objj_msgSend(_textField,"setFrame:",{origin:{x:_a.right,y:_a.top},size:{width:_b.size.width-_a.right-_a.left,height:_b.size.height-_a.top-_a.bottom}}); +objj_msgSend(_textField,"setTextColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_textField,"setFont:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-font")); +objj_msgSend(_textField,"setTextShadowColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_textField,"setTextShadowOffset:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-shadow-offset")); +objj_msgSend(_textField,"setAlignment:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-alignment")); +} +}),new objj_method(sel_getUid("setStringValue:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_textField,"setText:",_e); +} +}),new objj_method(sel_getUid("stringValue"),function(_f,_10){ +with(_f){ +return objj_msgSend(_textField,"text"); +} +}),new objj_method(sel_getUid("textField"),function(_11,_12){ +with(_11){ +return _textField; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_13,_14){ +with(_13){ +objj_msgSend(_textField,"sizeToFit"); +} +}),new objj_method(sel_getUid("setFont:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_textField,"setFont:",_17); +} +}),new objj_method(sel_getUid("_setIndicatorImage:"),function(_18,_19,_1a){ +with(_18){ +if(_1a){ +objj_msgSend(_textField,"setImage:",_1a); +objj_msgSend(_textField,"setImagePosition:",CPImageRight); +}else{ +objj_msgSend(_textField,"setImagePosition:",CPNoImage); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_1b,_1c){ +with(_1b){ +return "columnHeader"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),CGInsetMakeZero(),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),CGSizeMakeZero()],["background-color","text-alignment","text-inset","text-color","text-font","text-shadow-color","text-shadow-offset"]); +} +})]); +var _1f="_CPTableColumnHeaderViewStringValueKey",_20="_CPTableColumnHeaderViewFontKey",_21="_CPTableColumnHeaderViewImageKey"; +var _1=objj_getClass("_CPTableColumnHeaderView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPTableColumnHeaderView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +if(_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"initWithCoder:",_24)){ +objj_msgSend(_22,"_init"); +objj_msgSend(_22,"_setIndicatorImage:",objj_msgSend(_24,"decodeObjectForKey:",_21)); +objj_msgSend(_22,"setStringValue:",objj_msgSend(_24,"decodeObjectForKey:",_1f)); +objj_msgSend(_22,"setFont:",objj_msgSend(_24,"decodeObjectForKey:",_20)); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"encodeWithCoder:",_27); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"text"),_1f); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"image"),_21); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"font"),_20); +} +})]); +var _1=objj_allocateClassPair(CPView,"CPTableHeaderView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_mouseDownLocation"),new objj_ivar("_previousTrackingLocation"),new objj_ivar("_activeColumn"),new objj_ivar("_pressedColumn"),new objj_ivar("_isResizing"),new objj_ivar("_isDragging"),new objj_ivar("_isTrackingColumn"),new objj_ivar("_drawsColumnLines"),new objj_ivar("_columnOldWidth"),new objj_ivar("_tableView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("tableView"),function(_28,_29){ +with(_28){ +return _tableView; +} +}),new objj_method(sel_getUid("setTableView:"),function(_2a,_2b,_2c){ +with(_2a){ +_tableView=_2c; +} +}),new objj_method(sel_getUid("_init"),function(_2d,_2e){ +with(_2d){ +_mouseDownLocation={x:0,y:0}; +_previousTrackingLocation={x:0,y:0}; +_activeColumn=-1; +_pressedColumn=-1; +_isResizing=NO; +_isDragging=NO; +_isTrackingColumn=NO; +_drawsColumnLines=YES; +_columnOldWidth=0; +objj_msgSend(_2d,"setBackgroundColor:",objj_msgSend(_2d,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_2f,_30,_31){ +with(_2f){ +_2f=objj_msgSendSuper({receiver:_2f,super_class:objj_getClass("CPTableHeaderView").super_class},"initWithFrame:",_31); +if(_2f){ +objj_msgSend(_2f,"_init"); +} +return _2f; +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(_32,_33,_34){ +with(_32){ +return objj_msgSend(_tableView,"columnAtPoint:",CGPointMake(_34.x,_34.y)); +} +}),new objj_method(sel_getUid("headerRectOfColumn:"),function(_35,_36,_37){ +with(_35){ +var _38=objj_msgSend(_35,"bounds"),_39=objj_msgSend(_tableView,"rectOfColumn:",_37); +_38.origin.x=(_39.origin.x); +_38.size.width=(_39.size.width); +return _38; +} +}),new objj_method(sel_getUid("setDrawsColumnLines:"),function(_3a,_3b,_3c){ +with(_3a){ +_drawsColumnLines=_3c; +} +}),new objj_method(sel_getUid("drawsColumnLines"),function(_3d,_3e){ +with(_3d){ +return _drawsColumnLines; +} +}),new objj_method(sel_getUid("_cursorRectForColumn:"),function(_3f,_40,_41){ +with(_3f){ +if(_41==-1||!(objj_msgSend(_tableView._tableColumns[_41],"resizingMask")&CPTableColumnUserResizingMask)){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _42=objj_msgSend(_3f,"headerRectOfColumn:",_41); +_42.origin.x=(_42.origin.x+_42.size.width)-5; +_42.size.width=20; +return _42; +} +}),new objj_method(sel_getUid("_setPressedColumn:"),function(_43,_44,_45){ +with(_43){ +if(_pressedColumn!=-1){ +var _46=objj_msgSend(_tableView._tableColumns[_pressedColumn],"headerView"); +objj_msgSend(_46,"unsetThemeState:",CPThemeStateHighlighted); +} +if(_45!=-1){ +var _46=objj_msgSend(_tableView._tableColumns[_45],"headerView"); +objj_msgSend(_46,"setThemeState:",CPThemeStateHighlighted); +} +_pressedColumn=_45; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_47,_48,_49){ +with(_47){ +objj_msgSend(_47,"trackMouse:",_49); +} +}),new objj_method(sel_getUid("trackMouse:"),function(_4a,_4b,_4c){ +with(_4a){ +var _4d=objj_msgSend(_4c,"type"),_4e=objj_msgSend(_4a,"convertPoint:fromView:",objj_msgSend(_4c,"locationInWindow"),nil); +_4e.x-=5; +var _4f=objj_msgSend(_4a,"columnAtPoint:",_4e),_50=objj_msgSend(_4a,"shouldResizeTableColumn:at:",_4f,{x:_4e.x+5,y:_4e.y}); +if(_4d===CPLeftMouseUp){ +if(_50){ +objj_msgSend(_4a,"stopResizingTableColumn:at:",_activeColumn,_4e); +}else{ +if(objj_msgSend(_4a,"_shouldStopTrackingTableColumn:at:",_4f,_4e)){ +objj_msgSend(_tableView,"_didClickTableColumn:modifierFlags:",_4f,objj_msgSend(_4c,"modifierFlags")); +objj_msgSend(_4a,"stopTrackingTableColumn:at:",_4f,_4e); +_isTrackingColumn=NO; +} +} +objj_msgSend(_4a,"_updateResizeCursor:",objj_msgSend(CPApp,"currentEvent")); +_activeColumn=CPNotFound; +return; +} +if(_4d===CPLeftMouseDown){ +if(_4f===-1){ +return; +} +_mouseDownLocation=_4e; +_activeColumn=_4f; +objj_msgSend(_tableView,"_sendDelegateDidMouseDownInHeader:",_4f); +if(_50){ +objj_msgSend(_4a,"startResizingTableColumn:at:",_4f,_4e); +}else{ +objj_msgSend(_4a,"startTrackingTableColumn:at:",_4f,_4e); +_isTrackingColumn=YES; +} +}else{ +if(_4d===CPLeftMouseDragged){ +if(_50){ +objj_msgSend(_4a,"continueResizingTableColumn:at:",_activeColumn,_4e); +}else{ +if(_activeColumn===_4f&&(_4e.x>=(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.x)&&_4e.y>=(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.y)&&_4e.x<(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.x+objj_msgSend(_4a,"headerRectOfColumn:",_4f).size.width)&&_4e.y<(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.y+objj_msgSend(_4a,"headerRectOfColumn:",_4f).size.height))){ +if(_isTrackingColumn&&_pressedColumn!==-1){ +if(!objj_msgSend(_4a,"continueTrackingTableColumn:at:",_4f,_4e)){ +return; +} +}else{ +objj_msgSend(_4a,"startTrackingTableColumn:at:",_4f,_4e); +} +}else{ +if(_isTrackingColumn&&_pressedColumn!==-1){ +objj_msgSend(_4a,"stopTrackingTableColumn:at:",_activeColumn,_4e); +} +} +} +} +} +_previousTrackingLocation=_4e; +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_4a,sel_getUid("trackMouse:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("startTrackingTableColumn:at:"),function(_51,_52,_53,_54){ +with(_51){ +objj_msgSend(_51,"_setPressedColumn:",_53); +} +}),new objj_method(sel_getUid("continueTrackingTableColumn:at:"),function(_55,_56,_57,_58){ +with(_55){ +if(objj_msgSend(_55,"_shouldDragTableColumn:at:",_57,_58)){ +var _59=objj_msgSend(_55,"headerRectOfColumn:",_57),_5a={x:0,y:0},_5b=objj_msgSend(_tableView,"_dragViewForColumn:event:offset:",_57,objj_msgSend(CPApp,"currentEvent"),_5a),_5c={x:0,y:0}; +_5c.x=((_59.origin.x)+_5a.x)+(_58.x-_mouseDownLocation.x); +_5c.y=(_59.origin.y)+_5a.y; +objj_msgSend(_55,"dragView:at:offset:event:pasteboard:source:slideBack:",_5b,_5c,{width:0,height:0},objj_msgSend(CPApp,"currentEvent"),objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),_55,YES); +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("_shouldStopTrackingTableColumn:at:"),function(_5d,_5e,_5f,_60){ +with(_5d){ +return _isTrackingColumn&&_activeColumn===_5f&&(_60.x>=(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.x)&&_60.y>=(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.y)&&_60.x<(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.x+objj_msgSend(_5d,"headerRectOfColumn:",_5f).size.width)&&_60.y<(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.y+objj_msgSend(_5d,"headerRectOfColumn:",_5f).size.height)); +} +}),new objj_method(sel_getUid("stopTrackingTableColumn:at:"),function(_61,_62,_63,_64){ +with(_61){ +objj_msgSend(_61,"_setPressedColumn:",CPNotFound); +objj_msgSend(_61,"_updateResizeCursor:",objj_msgSend(CPApp,"currentEvent")); +} +}),new objj_method(sel_getUid("_shouldDragTableColumn:at:"),function(_65,_66,_67,_68){ +with(_65){ +return objj_msgSend(_tableView,"allowsColumnReordering")&&ABS(_68.x-_mouseDownLocation.x)>=10; +} +}),new objj_method(sel_getUid("_headerRectOfLastVisibleColumn"),function(_69,_6a){ +with(_69){ +var _6b=objj_msgSend(_tableView,"tableColumns"),_6c=objj_msgSend(_6b,"count"); +while(_6c--){ +var _6d=objj_msgSend(_6b,"objectAtIndex:",_6c); +if(!objj_msgSend(_6d,"isHidden")){ +return objj_msgSend(_69,"headerRectOfColumn:",_6c); +} +} +return nil; +} +}),new objj_method(sel_getUid("_constrainDragView:at:"),function(_6e,_6f,_70,_71){ +with(_6e){ +var _72=objj_msgSend(_tableView,"tableColumns"),_73=objj_msgSend(_6e,"_headerRectOfLastVisibleColumn"),_74=objj_msgSend(_6e,"headerRectOfColumn:",_activeColumn),_75=objj_msgSend(_70,"window"),_76=objj_msgSend(_75,"frame"); +_76.origin=objj_msgSend(objj_msgSend(_6e,"window"),"convertGlobalToBase:",_76.origin); +_76.origin=objj_msgSend(_6e,"convertPoint:fromView:",_76.origin,nil); +_76.origin.x=MAX(0,MIN((_76.origin.x),(_73.origin.x+_73.size.width)-(_74.size.width))); +_76.origin.y=(_73.origin.y); +_76.origin=objj_msgSend(_6e,"convertPoint:toView:",_76.origin,nil); +_76.origin=objj_msgSend(objj_msgSend(_6e,"window"),"convertBaseToGlobal:",_76.origin); +objj_msgSend(_75,"setFrame:",_76); +} +}),new objj_method(sel_getUid("_moveColumn:toColumn:"),function(_77,_78,_79,_7a){ +with(_77){ +objj_msgSend(_tableView,"moveColumn:toColumn:",_79,_7a); +_activeColumn=_7a; +_pressedColumn=_activeColumn; +} +}),new objj_method(sel_getUid("draggedView:beganAt:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +_isDragging=YES; +var _7f=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_activeColumn); +objj_msgSend(objj_msgSend(_7f,"headerView"),"setHidden:",YES); +objj_msgSend(_tableView,"_setDraggedColumn:",_7f); +objj_msgSend(_7b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("draggedView:movedTo:"),function(_80,_81,_82,_83){ +with(_80){ +objj_msgSend(_80,"_constrainDragView:at:",_82,_83); +var _84=objj_msgSend(_82,"window"),_85=objj_msgSend(_84,"frame"); +var _86=CGPointCreateCopy(_83); +if(_83.x<_previousTrackingLocation.x){ +_86={x:(_85.origin.x),y:(_85.origin.y)}; +}else{ +if(_83.x>_previousTrackingLocation.x){ +_86={x:(_85.origin.x+_85.size.width),y:(_85.origin.y)}; +} +} +_86=objj_msgSend(objj_msgSend(_80,"window"),"convertGlobalToBase:",_86); +_86=objj_msgSend(_80,"convertPoint:fromView:",_86,nil); +var _87=objj_msgSend(_80,"columnAtPoint:",_86); +if(_87!==-1){ +var _88=objj_msgSend(_80,"headerRectOfColumn:",_87),_89=objj_msgSend(_80,"convertPoint:fromView:",CGPointMake((_88.origin.x+(_88.size.width)/2),(_88.origin.y+(_88.size.height)/2)),_80); +if(_87<_activeColumn&&_86.x<_89.x){ +objj_msgSend(_80,"_moveColumn:toColumn:",_activeColumn,_87); +}else{ +if(_87>_activeColumn&&_86.x>_89.x){ +objj_msgSend(_80,"_moveColumn:toColumn:",_activeColumn,_87); +} +} +} +_previousTrackingLocation=_83; +} +}),new objj_method(sel_getUid("draggedView:endedAt:operation:"),function(_8a,_8b,_8c,_8d,_8e){ +with(_8a){ +_isDragging=NO; +_isTrackingColumn=NO; +objj_msgSend(_tableView,"_setDraggedColumn:",nil); +objj_msgSend(objj_msgSend(objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_activeColumn),"headerView"),"setHidden:",NO); +objj_msgSend(_8a,"stopTrackingTableColumn:at:",_activeColumn,_8d); +objj_msgSend(_8a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("shouldResizeTableColumn:at:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_isResizing){ +return YES; +} +if(_isTrackingColumn){ +return NO; +} +return objj_msgSend(_tableView,"allowsColumnResizing")&&(_92.x>=(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.x)&&_92.y>=(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.y)&&_92.x<(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.x+objj_msgSend(_8f,"_cursorRectForColumn:",_91).size.width)&&_92.y<(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.y+objj_msgSend(_8f,"_cursorRectForColumn:",_91).size.height)); +} +}),new objj_method(sel_getUid("startResizingTableColumn:at:"),function(_93,_94,_95,_96){ +with(_93){ +_isResizing=YES; +var _97=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_95); +objj_msgSend(_97,"setDisableResizingPosting:",YES); +objj_msgSend(_tableView,"setDisableAutomaticResizing:",YES); +} +}),new objj_method(sel_getUid("continueResizingTableColumn:at:"),function(_98,_99,_9a,_9b){ +with(_98){ +var _9c=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_9a),_9d=objj_msgSend(_9c,"width")+_9b.x-_previousTrackingLocation.x; +if(_9dobjj_msgSend(_9c,"maxWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftCursor"),"set"); +}else{ +_tableView._lastColumnShouldSnap=NO; +objj_msgSend(_9c,"setWidth:",_9d); +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftRightCursor"),"set"); +objj_msgSend(_98,"setNeedsLayout"); +objj_msgSend(_98,"setNeedsDisplay:",YES); +} +} +} +}),new objj_method(sel_getUid("stopResizingTableColumn:at:"),function(_9e,_9f,_a0,_a1){ +with(_9e){ +var _a2=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_a0); +objj_msgSend(_a2,"_postDidResizeNotificationWithOldWidth:",_columnOldWidth); +objj_msgSend(_a2,"setDisableResizingPosting:",NO); +objj_msgSend(_tableView,"setDisableAutomaticResizing:",NO); +_isResizing=NO; +} +}),new objj_method(sel_getUid("_updateResizeCursor:"),function(_a3,_a4,_a5){ +with(_a3){ +if(!objj_msgSend(_tableView,"allowsColumnResizing")||(objj_msgSend(_a5,"type")===CPLeftMouseUp&&!objj_msgSend(objj_msgSend(_a3,"window"),"acceptsMouseMovedEvents"))){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +return; +} +var _a6=objj_msgSend(_a3,"convertPoint:fromView:",objj_msgSend(_a5,"locationInWindow"),nil),_a7=CGPointMake(_a6.x-5,_a6.y),_a8=objj_msgSend(_a3,"columnAtPoint:",_a7); +if(_a8>=0&&(_a6.x>=(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.x)&&_a6.y>=(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.y)&&_a6.x<(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.x+objj_msgSend(_a3,"_cursorRectForColumn:",_a8).size.width)&&_a6.y<(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.y+objj_msgSend(_a3,"_cursorRectForColumn:",_a8).size.height))){ +var _a9=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_a8),_aa=objj_msgSend(_a9,"width"); +if(_aa==objj_msgSend(_a9,"minWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeRightCursor"),"set"); +}else{ +if(_aa==objj_msgSend(_a9,"maxWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftCursor"),"set"); +}else{ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftRightCursor"),"set"); +} +} +}else{ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_ab,_ac,_ad){ +with(_ab){ +objj_msgSend(_ab,"_updateResizeCursor:",_ad); +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_ae,_af,_b0){ +with(_ae){ +objj_msgSend(_ae,"_updateResizeCursor:",_b0); +} +}),new objj_method(sel_getUid("mouseExited:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_b4,_b5){ +with(_b4){ +var _b6=objj_msgSend(_tableView,"tableColumns"),_b7=objj_msgSend(_b6,"count"); +for(var i=0;i<_b7;i++){ +var _b8=objj_msgSend(_b6,"objectAtIndex:",i),_b9=objj_msgSend(_b8,"headerView"); +var _ba=objj_msgSend(_b4,"headerRectOfColumn:",i); +_ba.size.height-=0.5; +if(i>0){ +_ba.origin.x+=0.5; +_ba.size.width-=1; +} +objj_msgSend(_b9,"setFrame:",_ba); +if(objj_msgSend(_b9,"superview")!=_b4){ +objj_msgSend(_b4,"addSubview:",_b9); +} +} +objj_msgSend(_b4,"setBackgroundColor:",objj_msgSend(_b4,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("drawRect:"),function(_bb,_bc,_bd){ +with(_bb){ +if(!_tableView||!objj_msgSend(_bb,"drawsColumnLines")){ +return; +} +var _be=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_bf=objj_msgSend(_tableView,"columnIndexesInRect:",_bd),_c0=[],_c1=objj_msgSend(_tableView,"tableColumns"),_c2=_tableView._exposedColumns,_c3=objj_msgSend(_c2,"firstIndex"),_c4=CPMakeRange(_c3,objj_msgSend(_c2,"lastIndex")-_c3+1); +CGContextSetLineWidth(_be,1); +CGContextSetStrokeColor(_be,objj_msgSend(_bb,"currentValueForThemeAttribute:","divider-color")); +objj_msgSend(_bf,"getIndexes:maxCount:inIndexRange:",_c0,-1,_c4); +var _c5=0,_c6=_c0.length,_c7; +CGContextBeginPath(_be); +for(;_c5<_c6;_c5++){ +var _c8=_c0[_c5],_c9=objj_msgSend(_bb,"headerRectOfColumn:",_c8); +_c7=(_c9.origin.x+_c9.size.width); +CGContextMoveToPoint(_be,ROUND(_c7)+0.5,ROUND((_c9.origin.y))); +CGContextAddLineToPoint(_be,ROUND(_c7)+0.5,ROUND((_c9.origin.y+_c9.size.height))); +} +CGContextClosePath(_be); +CGContextStrokePath(_be); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_ca,_cb){ +with(_ca){ +return "tableHeaderRow"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_cc,_cd){ +with(_cc){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPColor,"grayColor")],["background-color","divider-color"]); +} +})]); +var _ce="CPTableHeaderViewTableViewKey",_cf="CPTableHeaderViewDrawsColumnLines"; +var _1=objj_getClass("CPTableHeaderView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableHeaderView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_d0,_d1,_d2){ +with(_d0){ +if(_d0=objj_msgSendSuper({receiver:_d0,super_class:objj_getClass("CPTableHeaderView").super_class},"initWithCoder:",_d2)){ +objj_msgSend(_d0,"_init"); +_tableView=objj_msgSend(_d2,"decodeObjectForKey:",_ce); +_drawsColumnLines=objj_msgSend(_d2,"decodeBoolForKey:",_cf); +} +return _d0; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_d3,_d4,_d5){ +with(_d3){ +objj_msgSendSuper({receiver:_d3,super_class:objj_getClass("CPTableHeaderView").super_class},"encodeWithCoder:",_d5); +objj_msgSend(_d5,"encodeObject:forKey:",_tableView,_ce); +objj_msgSend(_d5,"encodeBool:forKey:",_drawsColumnLines,_cf); +} +})]); +p;13;CPTableView.jt;95837;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;AppKit/CGGradient.ji;11;CPControl.ji;15;CPTableColumn.ji;15;_CPCornerView.ji;12;CPScroller.jt;95695; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("AppKit/CGGradient.j",NO); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("_CPCornerView.j",YES); +objj_executeFile("CPScroller.j",YES); +CPTableViewColumnDidMoveNotification="CPTableViewColumnDidMoveNotification"; +CPTableViewColumnDidResizeNotification="CPTableViewColumnDidResizeNotification"; +CPTableViewSelectionDidChangeNotification="CPTableViewSelectionDidChangeNotification"; +CPTableViewSelectionIsChangingNotification="CPTableViewSelectionIsChangingNotification"; +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5,_7=1<<6,_8=1<<7; +var _9=1<<0,_a=1<<1,_b=1<<2,_c=1<<3,_d=1<<4,_e=1<<5,_f=1<<6,_10=1<<7,_11=1<<8,_12=1<<9,_13=1<<10,_14=1<<11,_15=1<<12,_16=1<<13,_17=1<<14,_18=1<<15,_19=1<<16,_1a=1<<17,_1b=1<<18,_1c=1<<19; +CPTableViewDraggingDestinationFeedbackStyleNone=-1; +CPTableViewDraggingDestinationFeedbackStyleRegular=0; +CPTableViewDraggingDestinationFeedbackStyleSourceList=1; +CPTableViewDropOn=0; +CPTableViewDropAbove=1; +CPSourceListGradient="CPSourceListGradient"; +CPSourceListTopLineColor="CPSourceListTopLineColor"; +CPSourceListBottomLineColor="CPSourceListBottomLineColor"; +CPTableViewSelectionHighlightStyleNone=-1; +CPTableViewSelectionHighlightStyleRegular=0; +CPTableViewSelectionHighlightStyleSourceList=1; +CPTableViewGridNone=0; +CPTableViewSolidVerticalGridLineMask=1<<0; +CPTableViewSolidHorizontalGridLineMask=1<<1; +CPTableViewNoColumnAutoresizing=0; +CPTableViewUniformColumnAutoresizingStyle=1; +CPTableViewSequentialColumnAutoresizingStyle=2; +CPTableViewReverseSequentialColumnAutoresizingStyle=3; +CPTableViewLastColumnOnlyAutoresizingStyle=4; +CPTableViewFirstColumnOnlyAutoresizingStyle=5; +var _1d=objj_allocateClassPair(CPView,"_CPTableDrawView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_tableView")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("initWithTableView:"),function(_1f,_20,_21){ +with(_1f){ +_1f=objj_msgSendSuper({receiver:_1f,super_class:objj_getClass("_CPTableDrawView").super_class},"init"); +if(_1f){ +_tableView=_21; +} +return _1f; +} +}),new objj_method(sel_getUid("drawRect:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_22,"frame"),_26=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextTranslateCTM(_26,-(_25.origin.x),-(_25.origin.y)); +objj_msgSend(_tableView,"_drawRect:",_24); +} +})]); +var _1d=objj_allocateClassPair(CPControl,"CPTableView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_dataSource"),new objj_ivar("_implementedDataSourceMethods"),new objj_ivar("_delegate"),new objj_ivar("_implementedDelegateMethods"),new objj_ivar("_tableColumns"),new objj_ivar("_tableColumnRanges"),new objj_ivar("_dirtyTableColumnRangeIndex"),new objj_ivar("_numberOfHiddenColumns"),new objj_ivar("_reloadAllRows"),new objj_ivar("_objectValues"),new objj_ivar("_exposedRows"),new objj_ivar("_exposedColumns"),new objj_ivar("_dataViewsForTableColumns"),new objj_ivar("_cachedDataViews"),new objj_ivar("_allowsColumnReordering"),new objj_ivar("_allowsColumnResizing"),new objj_ivar("_allowsColumnSelection"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_sortDescriptors"),new objj_ivar("_intercellSpacing"),new objj_ivar("_rowHeight"),new objj_ivar("_usesAlternatingRowBackgroundColors"),new objj_ivar("_alternatingRowBackgroundColors"),new objj_ivar("_selectionHighlightStyle"),new objj_ivar("_currentHighlightedTableColumn"),new objj_ivar("_gridStyleMask"),new objj_ivar("_numberOfRows"),new objj_ivar("_headerView"),new objj_ivar("_cornerView"),new objj_ivar("_selectedColumnIndexes"),new objj_ivar("_selectedRowIndexes"),new objj_ivar("_selectionAnchorRow"),new objj_ivar("_lastSelectedRow"),new objj_ivar("_previouslySelectedRowIndexes"),new objj_ivar("_startTrackingPoint"),new objj_ivar("_startTrackingTimestamp"),new objj_ivar("_trackingPointMovedOutOfClickSlop"),new objj_ivar("_editingCellIndex"),new objj_ivar("_tableDrawView"),new objj_ivar("_doubleAction"),new objj_ivar("_clickedRow"),new objj_ivar("_columnAutoResizingStyle"),new objj_ivar("_lastTrackedRowIndex"),new objj_ivar("_originalMouseDownPoint"),new objj_ivar("_verticalMotionCanDrag"),new objj_ivar("_destinationDragStyle"),new objj_ivar("_isSelectingSession"),new objj_ivar("_draggedRowIndexes"),new objj_ivar("_dropOperationFeedbackView"),new objj_ivar("_dragOperationDefaultMask"),new objj_ivar("_retargetedDropRow"),new objj_ivar("_retargetedDropOperation"),new objj_ivar("_disableAutomaticResizing"),new objj_ivar("_lastColumnShouldSnap"),new objj_ivar("_implementsCustomDrawRow"),new objj_ivar("_draggedColumn"),new objj_ivar("_differedColumnDataToRemove")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("disableAutomaticResizing"),function(_27,_28){ +with(_27){ +return _disableAutomaticResizing; +} +}),new objj_method(sel_getUid("setDisableAutomaticResizing:"),function(_29,_2a,_2b){ +with(_29){ +_disableAutomaticResizing=_2b; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_2c,_2d,_2e){ +with(_2c){ +_2c=objj_msgSendSuper({receiver:_2c,super_class:objj_getClass("CPTableView").super_class},"initWithFrame:",_2e); +if(_2c){ +_allowsColumnReordering=YES; +_allowsColumnResizing=YES; +_allowsMultipleSelection=NO; +_allowsEmptySelection=YES; +_allowsColumnSelection=NO; +_disableAutomaticResizing=NO; +_selectionHighlightStyle=CPTableViewSelectionHighlightStyleRegular; +objj_msgSend(_2c,"setUsesAlternatingRowBackgroundColors:",NO); +objj_msgSend(_2c,"setAlternatingRowBackgroundColors:",[objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",245/255,249/255,252/255,1)]); +_tableColumns=[]; +_tableColumnRanges=[]; +_dirtyTableColumnRangeIndex=CPNotFound; +_numberOfHiddenColumns=0; +_intercellSpacing={width:3,height:2}; +_rowHeight=23; +objj_msgSend(_2c,"setGridColor:",objj_msgSend(CPColor,"colorWithHexString:","dce0e2")); +objj_msgSend(_2c,"setGridStyleMask:",CPTableViewGridNone); +_headerView=objj_msgSend(objj_msgSend(CPTableHeaderView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(_2c,"bounds").size.width,_rowHeight)); +objj_msgSend(_headerView,"setTableView:",_2c); +_cornerView=nil; +_lastSelectedRow=-1; +_currentHighlightedTableColumn=nil; +_sortDescriptors=objj_msgSend(CPArray,"array"); +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_verticalMotionCanDrag=YES; +_isSelectingSession=NO; +_retargetedDropRow=nil; +_retargetedDropOperation=nil; +_dragOperationDefaultMask=nil; +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleRegular; +objj_msgSend(_2c,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_2c,"_init"); +} +return _2c; +} +}),new objj_method(sel_getUid("_init"),function(_2f,_30){ +with(_2f){ +_tableViewFlags=0; +_selectedColumnIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_selectedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_dropOperationFeedbackView=objj_msgSend(objj_msgSend(_CPDropOperationDrawingView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_dropOperationFeedbackView,"setTableView:",_2f); +_lastColumnShouldSnap=NO; +if(!_alternatingRowBackgroundColors){ +_alternatingRowBackgroundColors=[objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"colorWithHexString:","e4e7ff")]; +} +_selectionHighlightColor=objj_msgSend(CPColor,"colorWithHexString:","5f83b9"); +_tableColumnRanges=[]; +_dirtyTableColumnRangeIndex=0; +_numberOfHiddenColumns=0; +_objectValues={}; +_dataViewsForTableColumns={}; +_dataViews=[]; +_numberOfRows=0; +_exposedRows=objj_msgSend(CPIndexSet,"indexSet"); +_exposedColumns=objj_msgSend(CPIndexSet,"indexSet"); +_cachedDataViews={}; +_tableDrawView=objj_msgSend(objj_msgSend(_CPTableDrawView,"alloc"),"initWithTableView:",_2f); +objj_msgSend(_tableDrawView,"setBackgroundColor:",objj_msgSend(CPColor,"clearColor")); +objj_msgSend(_2f,"addSubview:",_tableDrawView); +if(!_headerView){ +_headerView=objj_msgSend(objj_msgSend(CPTableHeaderView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(_2f,"bounds").size.width,_rowHeight)); +} +objj_msgSend(_headerView,"setTableView:",_2f); +if(!_cornerView){ +_cornerView=objj_msgSend(objj_msgSend(_CPCornerView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(CPScroller,"scrollerWidth"),CGRectGetHeight(objj_msgSend(_headerView,"frame")))); +} +_draggedColumn=nil; +_differedColumnDataToRemove=[]; +_implementsCustomDrawRow=objj_msgSend(_2f,"implementsSelector:",sel_getUid("drawRow:clipRect:")); +} +}),new objj_method(sel_getUid("setDataSource:"),function(_31,_32,_33){ +with(_31){ +if(_dataSource===_33){ +return; +} +_dataSource=_33; +_implementedDataSourceMethods=0; +if(!_dataSource){ +return; +} +var _34=!!objj_msgSend(_31,"infoForBinding:","content"); +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("numberOfRowsInTableView:"))){ +_implementedDataSourceMethods|=_1; +}else{ +if(!_34){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(_33,"description")+" does not implement numberOfRowsInTableView:."); +} +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:objectValueForTableColumn:row:"))){ +_implementedDataSourceMethods|=_2; +}else{ +if(!_34){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(_33,"description")+" does not implement tableView:objectValueForTableColumn:row:"); +} +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:setObjectValue:forTableColumn:row:"))){ +_implementedDataSourceMethods|=_3; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:acceptDrop:row:dropOperation:"))){ +_implementedDataSourceMethods|=_4; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:"))){ +_implementedDataSourceMethods|=_5; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"))){ +_implementedDataSourceMethods|=_6; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"))){ +_implementedDataSourceMethods|=_7; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:sortDescriptorsDidChange:"))){ +_implementedDataSourceMethods|=_8; +} +objj_msgSend(_31,"reloadData"); +} +}),new objj_method(sel_getUid("dataSource"),function(_35,_36){ +with(_35){ +return _dataSource; +} +}),new objj_method(sel_getUid("reloadDataForRowIndexes:columnIndexes:"),function(_37,_38,_39,_3a){ +with(_37){ +objj_msgSend(_37,"reloadData"); +} +}),new objj_method(sel_getUid("reloadData"),function(_3b,_3c){ +with(_3b){ +_reloadAllRows=YES; +_objectValues={}; +objj_msgSend(_3b,"noteNumberOfRowsChanged"); +objj_msgSend(_3b,"setNeedsLayout"); +objj_msgSend(_3b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setDoubleAction:"),function(_3d,_3e,_3f){ +with(_3d){ +_doubleAction=_3f; +} +}),new objj_method(sel_getUid("doubleAction"),function(_40,_41){ +with(_40){ +return _doubleAction; +} +}),new objj_method(sel_getUid("clickedRow"),function(_42,_43){ +with(_42){ +return _clickedRow; +} +}),new objj_method(sel_getUid("setAllowsColumnReordering:"),function(_44,_45,_46){ +with(_44){ +_allowsColumnReordering=!!_46; +} +}),new objj_method(sel_getUid("allowsColumnReordering"),function(_47,_48){ +with(_47){ +return _allowsColumnReordering; +} +}),new objj_method(sel_getUid("setAllowsColumnResizing:"),function(_49,_4a,_4b){ +with(_49){ +_allowsColumnResizing=!!_4b; +} +}),new objj_method(sel_getUid("allowsColumnResizing"),function(_4c,_4d){ +with(_4c){ +return _allowsColumnResizing; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_4e,_4f,_50){ +with(_4e){ +_allowsMultipleSelection=!!_50; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_51,_52){ +with(_51){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_53,_54,_55){ +with(_53){ +_allowsEmptySelection=!!_55; +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_56,_57){ +with(_56){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsColumnSelection:"),function(_58,_59,_5a){ +with(_58){ +_allowsColumnSelection=!!_5a; +} +}),new objj_method(sel_getUid("allowsColumnSelection"),function(_5b,_5c){ +with(_5b){ +return _allowsColumnSelection; +} +}),new objj_method(sel_getUid("setIntercellSpacing:"),function(_5d,_5e,_5f){ +with(_5d){ +if((_intercellSpacing.width==_5f.width&&_intercellSpacing.height==_5f.height)){ +return; +} +_intercellSpacing={width:_5f.width,height:_5f.height}; +_dirtyTableColumnRangeIndex=0; +objj_msgSend(_5d,"_recalculateTableColumnRanges"); +objj_msgSend(_5d,"setNeedsLayout"); +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +objj_msgSend(_headerView,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setThemeState:"),function(_60,_61,_62){ +with(_60){ +} +}),new objj_method(sel_getUid("intercellSpacing"),function(_63,_64){ +with(_63){ +return {width:_intercellSpacing.width,height:_intercellSpacing.height}; +} +}),new objj_method(sel_getUid("setRowHeight:"),function(_65,_66,_67){ +with(_65){ +_67=+_67; +if(_rowHeight===_67){ +return; +} +_rowHeight=MAX(0,_67); +objj_msgSend(_65,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("rowHeight"),function(_68,_69){ +with(_68){ +return _rowHeight; +} +}),new objj_method(sel_getUid("setUsesAlternatingRowBackgroundColors:"),function(_6a,_6b,_6c){ +with(_6a){ +_usesAlternatingRowBackgroundColors=_6c; +} +}),new objj_method(sel_getUid("usesAlternatingRowBackgroundColors"),function(_6d,_6e){ +with(_6d){ +return _usesAlternatingRowBackgroundColors; +} +}),new objj_method(sel_getUid("setAlternatingRowBackgroundColors:"),function(_6f,_70,_71){ +with(_6f){ +objj_msgSend(_6f,"setValue:forThemeAttribute:",_71,"alternating-row-colors"); +objj_msgSend(_6f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("alternatingRowBackgroundColors"),function(_72,_73){ +with(_72){ +return objj_msgSend(_72,"currentValueForThemeAttribute:","alternating-row-colors"); +} +}),new objj_method(sel_getUid("selectionHighlightStyle"),function(_74,_75){ +with(_74){ +return _selectionHighlightStyle; +} +}),new objj_method(sel_getUid("setSelectionHighlightStyle:"),function(_76,_77,_78){ +with(_76){ +if(_78==CPTableViewSelectionHighlightStyleSourceList&&!CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +return; +} +_selectionHighlightStyle=_78; +objj_msgSend(_76,"setNeedsDisplay:",YES); +if(_78===CPTableViewSelectionHighlightStyleSourceList){ +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleSourceList; +}else{ +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleRegular; +} +} +}),new objj_method(sel_getUid("setSelectionHighlightColor:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"setValue:forThemeAttribute:",_7b,"selection-color"); +objj_msgSend(_79,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("selectionHighlightColor"),function(_7c,_7d){ +with(_7c){ +return objj_msgSend(_7c,"currentValueForThemeAttribute:","selection-color"); +} +}),new objj_method(sel_getUid("setSelectionGradientColors:"),function(_7e,_7f,_80){ +with(_7e){ +objj_msgSend(_7e,"setValue:forThemeAttribute:",_80,"sourcelist-selection-color"); +objj_msgSend(_7e,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("selectionGradientColors"),function(_81,_82){ +with(_81){ +return objj_msgSend(_81,"currentValueForThemeAttribute:","sourcelist-selection-color"); +} +}),new objj_method(sel_getUid("setGridColor:"),function(_83,_84,_85){ +with(_83){ +objj_msgSend(_83,"setValue:forThemeAttribute:",_85,"grid-color"); +objj_msgSend(_83,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("gridColor"),function(_86,_87){ +with(_86){ +return objj_msgSend(_86,"currentValueForThemeAttribute:","grid-color"); +} +}),new objj_method(sel_getUid("setGridStyleMask:"),function(_88,_89,_8a){ +with(_88){ +if(_gridStyleMask===_8a){ +return; +} +_gridStyleMask=_8a; +objj_msgSend(_88,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("gridStyleMask"),function(_8b,_8c){ +with(_8b){ +return _gridStyleMask; +} +}),new objj_method(sel_getUid("addTableColumn:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_tableColumns,"addObject:",_8f); +objj_msgSend(_8f,"setTableView:",_8d); +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=(_tableColumns.length)-1; +}else{ +_dirtyTableColumnRangeIndex=MIN((_tableColumns.length)-1,_dirtyTableColumnRangeIndex); +} +objj_msgSend(_8d,"tile"); +objj_msgSend(_8d,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeTableColumn:"),function(_90,_91,_92){ +with(_90){ +if(objj_msgSend(_92,"tableView")!==_90){ +return; +} +var _93=objj_msgSend(_tableColumns,"indexOfObjectIdenticalTo:",_92); +if(_93===CPNotFound){ +return; +} +objj_msgSend(_differedColumnDataToRemove,"addObject:",{"column":_92,"shouldBeHidden":objj_msgSend(_92,"isHidden")}); +objj_msgSend(_92,"setHidden:",YES); +objj_msgSend(_92,"setTableView:",nil); +var _94=objj_msgSend(_92,"UID"); +if(_objectValues[_94]){ +_objectValues[_94]=nil; +} +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=_93; +}else{ +_dirtyTableColumnRangeIndex=MIN(_93,_dirtyTableColumnRangeIndex); +} +objj_msgSend(_90,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("_setDraggedColumn:"),function(_95,_96,_97){ +with(_95){ +if(_draggedColumn===_97){ +return; +} +_draggedColumn=_97; +objj_msgSend(_95,"reloadDataForRowIndexes:columnIndexes:",_exposedRows,objj_msgSend(CPIndexSet,"indexSetWithIndex:",objj_msgSend(_tableColumns,"indexOfObject:",_97))); +} +}),new objj_method(sel_getUid("moveColumn:toColumn:"),function(_98,_99,_9a,_9b){ +with(_98){ +_9a=+_9a; +_9b=+_9b; +if(_9a===_9b){ +return; +} +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=MIN(_9a,_9b); +}else{ +_dirtyTableColumnRangeIndex=MIN(_9a,_9b,_dirtyTableColumnRangeIndex); +} +var _9c=_tableColumns[_9a]; +objj_msgSend(_tableColumns,"removeObjectAtIndex:",_9a); +objj_msgSend(_tableColumns,"insertObject:atIndex:",_9c,_9b); +objj_msgSend(objj_msgSend(_98,"headerView"),"setNeedsLayout"); +objj_msgSend(objj_msgSend(_98,"headerView"),"setNeedsDisplay:",YES); +var _9d=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_98,"numberOfRows"))),_9e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_9a,_9b)); +objj_msgSend(_98,"reloadDataForRowIndexes:columnIndexes:",_9d,_9e); +} +}),new objj_method(sel_getUid("_tableColumnVisibilityDidChange:"),function(_9f,_a0,_a1){ +with(_9f){ +var _a2=objj_msgSend(objj_msgSend(_9f,"tableColumns"),"indexOfObjectIdenticalTo:",_a1); +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=_a2; +}else{ +_dirtyTableColumnRangeIndex=MIN(_a2,_dirtyTableColumnRangeIndex); +} +objj_msgSend(objj_msgSend(_9f,"headerView"),"setNeedsLayout"); +objj_msgSend(objj_msgSend(_9f,"headerView"),"setNeedsDisplay:",YES); +var _a3=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_9f,"numberOfRows"))); +objj_msgSend(_9f,"reloadDataForRowIndexes:columnIndexes:",_a3,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_a2)); +} +}),new objj_method(sel_getUid("tableColumns"),function(_a4,_a5){ +with(_a4){ +return _tableColumns; +} +}),new objj_method(sel_getUid("columnWithIdentifier:"),function(_a6,_a7,_a8){ +with(_a6){ +var _a9=0,_aa=(_tableColumns.length); +for(;_a9<_aa;++_a9){ +if(objj_msgSend(_tableColumns[_a9],"identifier")===_a8){ +return _a9; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tableColumnWithIdentifier:"),function(_ab,_ac,_ad){ +with(_ab){ +var _ae=objj_msgSend(_ab,"columnWithIdentifier:",_ad); +if(_ae===CPNotFound){ +return nil; +} +return _tableColumns[_ae]; +} +}),new objj_method(sel_getUid("selectColumnIndexes:byExtendingSelection:"),function(_af,_b0,_b1,_b2){ +with(_af){ +if((objj_msgSend(_b1,"firstIndex")!=CPNotFound&&objj_msgSend(_b1,"firstIndex")<0)||objj_msgSend(_b1,"lastIndex")>=objj_msgSend(_af,"numberOfColumns")){ +return; +} +if(objj_msgSend(_selectedRowIndexes,"count")>0){ +objj_msgSend(_af,"_updateHighlightWithOldRows:newRows:",_selectedRowIndexes,objj_msgSend(CPIndexSet,"indexSet")); +_selectedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +} +var _b3=objj_msgSend(_selectedColumnIndexes,"copy"); +if(_b2){ +objj_msgSend(_selectedColumnIndexes,"addIndexes:",_b1); +}else{ +_selectedColumnIndexes=objj_msgSend(_b1,"copy"); +} +objj_msgSend(_af,"_updateHighlightWithOldColumns:newColumns:",_b3,_selectedColumnIndexes); +objj_msgSend(_af,"setNeedsDisplay:",YES); +if(_headerView){ +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +} +objj_msgSend(_af,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("_setSelectedRowIndexes:"),function(_b4,_b5,_b6){ +with(_b4){ +if(objj_msgSend(_selectedRowIndexes,"isEqualToIndexSet:",_b6)){ +return; +} +var _b7=_selectedRowIndexes; +_lastSelectedRow=(objj_msgSend(_b6,"count")>0)?objj_msgSend(_b6,"lastIndex"):-1; +_selectedRowIndexes=objj_msgSend(_b6,"copy"); +objj_msgSend(_b4,"_updateHighlightWithOldRows:newRows:",_b7,_selectedRowIndexes); +objj_msgSend(_b4,"setNeedsDisplay:",YES); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_b4),"reverseSetValueFor:","selectedRowIndexes"); +objj_msgSend(_b4,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("selectRowIndexes:byExtendingSelection:"),function(_b8,_b9,_ba,_bb){ +with(_b8){ +if(objj_msgSend(_ba,"isEqualToIndexSet:",_selectedRowIndexes)||((objj_msgSend(_ba,"firstIndex")!=CPNotFound&&objj_msgSend(_ba,"firstIndex")<0)||objj_msgSend(_ba,"lastIndex")>=objj_msgSend(_b8,"numberOfRows"))){ +return; +} +if(objj_msgSend(_selectedColumnIndexes,"count")>0){ +objj_msgSend(_b8,"_updateHighlightWithOldColumns:newColumns:",_selectedColumnIndexes,objj_msgSend(CPIndexSet,"indexSet")); +_selectedColumnIndexes=objj_msgSend(CPIndexSet,"indexSet"); +if(_headerView){ +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +} +} +var _bc; +if(_bb){ +_bc=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_bc,"addIndexes:",_ba); +}else{ +_bc=objj_msgSend(_ba,"copy"); +} +objj_msgSend(_b8,"_setSelectedRowIndexes:",_bc); +} +}),new objj_method(sel_getUid("_updateHighlightWithOldRows:newRows:"),function(_bd,_be,_bf,_c0){ +with(_bd){ +var _c1=objj_msgSend(_exposedRows,"firstIndex"),_c2=objj_msgSend(_exposedRows,"lastIndex")-_c1+1,_c3=[],_c4=[],_c5=objj_msgSend(_bf,"copy"),_c6=objj_msgSend(_c0,"copy"); +objj_msgSend(_c5,"removeMatches:",_c6); +objj_msgSend(_c5,"getIndexes:maxCount:inIndexRange:",_c3,-1,CPMakeRange(_c1,_c2)); +objj_msgSend(_c6,"getIndexes:maxCount:inIndexRange:",_c4,-1,CPMakeRange(_c1,_c2)); +for(var _c7 in _dataViewsForTableColumns){ +var _c8=_dataViewsForTableColumns[_c7],_c9=_c3.length; +while(_c9--){ +objj_msgSend(_bd,"_performSelection:forRow:context:",NO,_c3[_c9],_c8); +} +_c9=_c4.length; +while(_c9--){ +objj_msgSend(_bd,"_performSelection:forRow:context:",YES,_c4[_c9],_c8); +} +} +} +}),new objj_method(sel_getUid("_performSelection:forRow:context:"),function(_ca,_cb,_cc,_cd,_ce){ +with(_ca){ +var _cf=_ce[_cd],_d0=_cc?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_cf,"performSelector:withObject:",CPSelectorFromString(_d0),CPThemeStateSelectedDataView); +} +}),new objj_method(sel_getUid("_updateHighlightWithOldColumns:newColumns:"),function(_d1,_d2,_d3,_d4){ +with(_d1){ +var _d5=objj_msgSend(_exposedColumns,"firstIndex"),_d6=objj_msgSend(_exposedColumns,"lastIndex")-_d5+1,_d7=[],_d8=[],_d9=objj_msgSend(_d3,"copy"),_da=objj_msgSend(_d4,"copy"),_db=[]; +objj_msgSend(_d9,"removeMatches:",_da); +objj_msgSend(_d9,"getIndexes:maxCount:inIndexRange:",_d7,-1,CPMakeRange(_d5,_d6)); +objj_msgSend(_da,"getIndexes:maxCount:inIndexRange:",_d8,-1,CPMakeRange(_d5,_d6)); +objj_msgSend(_exposedRows,"getIndexes:maxCount:inIndexRange:",_db,-1,nil); +var _dc=_db.length,_dd=_d7.length; +while(_dd--){ +var _de=_d7[_dd],_df=objj_msgSend(_tableColumns[_de],"UID"),_e0=_dataViewsForTableColumns[_df]; +for(var i=0;i<_dc;i++){ +var _e1=_db[i],_e2=_e0[_e1]; +objj_msgSend(_e2,"unsetThemeState:",CPThemeStateSelectedDataView); +} +if(_headerView){ +var _e3=objj_msgSend(_tableColumns[_de],"headerView"); +objj_msgSend(_e3,"unsetThemeState:",CPThemeStateSelected); +} +} +_dd=_d8.length; +while(_dd--){ +var _de=_d8[_dd],_df=objj_msgSend(_tableColumns[_de],"UID"),_e0=_dataViewsForTableColumns[_df]; +for(var i=0;i<_dc;i++){ +var _e1=_db[i],_e2=_e0[_e1]; +objj_msgSend(_e2,"setThemeState:",CPThemeStateSelectedDataView); +} +if(_headerView){ +var _e3=objj_msgSend(_tableColumns[_de],"headerView"); +objj_msgSend(_e3,"setThemeState:",CPThemeStateSelected); +} +} +} +}),new objj_method(sel_getUid("selectedColumn"),function(_e4,_e5){ +with(_e4){ +objj_msgSend(_selectedColumnIndexes,"lastIndex"); +} +}),new objj_method(sel_getUid("selectedColumnIndexes"),function(_e6,_e7){ +with(_e6){ +return _selectedColumnIndexes; +} +}),new objj_method(sel_getUid("selectedRow"),function(_e8,_e9){ +with(_e8){ +return _lastSelectedRow; +} +}),new objj_method(sel_getUid("selectedRowIndexes"),function(_ea,_eb){ +with(_ea){ +return objj_msgSend(_selectedRowIndexes,"copy"); +} +}),new objj_method(sel_getUid("deselectColumn:"),function(_ec,_ed,_ee){ +with(_ec){ +var _ef=objj_msgSend(_selectedColumnIndexes,"copy"); +objj_msgSend(_ef,"removeIndex:",_ee); +objj_msgSend(_ec,"selectColumnIndexes:byExtendingSelection:",_ef,NO); +objj_msgSend(_ec,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("deselectRow:"),function(_f0,_f1,_f2){ +with(_f0){ +var _f3=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_f3,"removeIndex:",_f2); +objj_msgSend(_f0,"selectRowIndexes:byExtendingSelection:",_f3,NO); +objj_msgSend(_f0,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("numberOfSelectedColumns"),function(_f4,_f5){ +with(_f4){ +return objj_msgSend(_selectedColumnIndexes,"count"); +} +}),new objj_method(sel_getUid("numberOfSelectedRows"),function(_f6,_f7){ +with(_f6){ +return objj_msgSend(_selectedRowIndexes,"count"); +} +}),new objj_method(sel_getUid("isColumnSelected:"),function(_f8,_f9,_fa){ +with(_f8){ +return objj_msgSend(_selectedColumnIndexes,"containsIndex:",_fa); +} +}),new objj_method(sel_getUid("isRowSelected:"),function(_fb,_fc,_fd){ +with(_fb){ +return objj_msgSend(_selectedRowIndexes,"containsIndex:",_fd); +} +}),new objj_method(sel_getUid("deselectAll"),function(_fe,_ff){ +with(_fe){ +objj_msgSend(_fe,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +objj_msgSend(_fe,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +} +}),new objj_method(sel_getUid("numberOfColumns"),function(self,_100){ +with(self){ +return (_tableColumns.length); +} +}),new objj_method(sel_getUid("numberOfRows"),function(self,_101){ +with(self){ +if(_numberOfRows){ +return _numberOfRows; +} +var _102=objj_msgSend(self,"infoForBinding:","content"); +if(_102){ +var _103=objj_msgSend(_102,"objectForKey:",CPObservedObjectKey),_104=objj_msgSend(_102,"objectForKey:",CPObservedKeyPathKey); +return objj_msgSend(objj_msgSend(_103,"valueForKeyPath:",_104),"count"); +}else{ +if(_dataSource){ +return objj_msgSend(_dataSource,"numberOfRowsInTableView:",self); +} +} +return 0; +} +}),new objj_method(sel_getUid("editColumn:row:withEvent:select:"),function(self,_105,_106,_107,_108,flag){ +with(self){ +if(!objj_msgSend(self,"isRowSelected:",_107)){ +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:","Error","Attempt to edit row="+_107+" when not selected.",nil),"raise"); +} +_editingCellIndex=CGPointMake(_106,_107); +objj_msgSend(self,"reloadDataForRowIndexes:columnIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_107),objj_msgSend(CPIndexSet,"indexSetWithIndex:",_106)); +} +}),new objj_method(sel_getUid("editedColumn"),function(self,_109){ +with(self){ +if(!_editingCellIndex){ +return CPNotFound; +} +return _editingCellIndex.x; +} +}),new objj_method(sel_getUid("editedRow"),function(self,_10a){ +with(self){ +if(!_editingCellIndex){ +return CPNotFound; +} +return _editingCellIndex.y; +} +}),new objj_method(sel_getUid("cornerView"),function(self,_10b){ +with(self){ +return _cornerView; +} +}),new objj_method(sel_getUid("setCornerView:"),function(self,_10c,_10d){ +with(self){ +if(_cornerView===_10d){ +return; +} +_cornerView=_10d; +var _10e=objj_msgSend(objj_msgSend(self,"superview"),"superview"); +if(objj_msgSend(_10e,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))&&objj_msgSend(_10e,"documentView")===self){ +objj_msgSend(_10e,"_updateCornerAndHeaderView"); +} +} +}),new objj_method(sel_getUid("headerView"),function(self,_10f){ +with(self){ +return _headerView; +} +}),new objj_method(sel_getUid("setHeaderView:"),function(self,_110,_111){ +with(self){ +if(_headerView===_111){ +return; +} +objj_msgSend(_headerView,"setTableView:",nil); +_headerView=_111; +if(_headerView){ +objj_msgSend(_headerView,"setTableView:",self); +objj_msgSend(_headerView,"setFrameSize:",{width:(objj_msgSend(self,"frame").size.width),height:(objj_msgSend(_headerView,"frame").size.height)}); +} +var _112=objj_msgSend(objj_msgSend(self,"superview"),"superview"); +if(objj_msgSend(_112,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))&&objj_msgSend(_112,"documentView")===self){ +objj_msgSend(_112,"_updateCornerAndHeaderView"); +} +} +}),new objj_method(sel_getUid("_recalculateTableColumnRanges"),function(self,_113){ +with(self){ +if(_dirtyTableColumnRangeIndex<0){ +return; +} +_numberOfHiddenColumns=0; +var _114=_dirtyTableColumnRangeIndex,_115=(_tableColumns.length),x=_114===0?0:CPMaxRange(_tableColumnRanges[_114-1]); +for(;_114<_115;++_114){ +var _116=_tableColumns[_114]; +if(objj_msgSend(_116,"isHidden")){ +_numberOfHiddenColumns+=1; +_tableColumnRanges[_114]=CPMakeRange(x,0); +}else{ +var _117=objj_msgSend(_tableColumns[_114],"width")+_intercellSpacing.width; +_tableColumnRanges[_114]=CPMakeRange(x,_117); +x+=_117; +} +} +_tableColumnRanges.length=_115; +_dirtyTableColumnRangeIndex=CPNotFound; +} +}),new objj_method(sel_getUid("rectOfColumn:"),function(self,_118,_119){ +with(self){ +_119=+_119; +var _11a=objj_msgSend(objj_msgSend(self,"tableColumns"),"objectAtIndex:",_119); +if(objj_msgSend(_11a,"isHidden")||_119<0||_119>=(_tableColumns.length)){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _11b=_tableColumnRanges[_119]; +return {origin:{x:_11b.location,y:0},size:{width:_11b.length,height:CGRectGetHeight(objj_msgSend(self,"bounds"))}}; +} +}),new objj_method(sel_getUid("rectOfRow:"),function(self,_11c,_11d){ +with(self){ +var _11e=_rowHeight+_intercellSpacing.height; +return {origin:{x:0,y:_11d*_11e},size:{width:(objj_msgSend(self,"bounds").size.width),height:_11e}}; +} +}),new objj_method(sel_getUid("rowsInRect:"),function(self,_11f,_120){ +with(self){ +if(_numberOfRows<=0){ +return CPMakeRange(0,0); +} +var _121=objj_msgSend(self,"bounds"); +if(!CGRectIntersectsRect(_120,_121)){ +return CPMakeRange(0,0); +} +var _122=objj_msgSend(self,"rowAtPoint:",_120.origin); +if(_122<0){ +_122=0; +} +var _123=objj_msgSend(self,"rowAtPoint:",{x:0,y:(_120.origin.y+_120.size.height)}); +if(_123<0){ +_123=_numberOfRows-1; +} +return CPMakeRange(_122,_123-_122+1); +} +}),new objj_method(sel_getUid("columnIndexesInRect:"),function(self,_124,_125){ +with(self){ +var _126=MAX(0,objj_msgSend(self,"columnAtPoint:",{x:_125.origin.x,y:0})),_127=objj_msgSend(self,"columnAtPoint:",{x:(_125.origin.x+_125.size.width),y:0}); +if(_127===CPNotFound){ +_127=(_tableColumns.length)-1; +} +if(_numberOfHiddenColumns<=0){ +return objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_126,_127-_126+1)); +} +var _128=objj_msgSend(CPIndexSet,"indexSet"); +for(;_126<=_127;++_126){ +var _129=_tableColumns[_126]; +if(!objj_msgSend(_129,"isHidden")){ +objj_msgSend(_128,"addIndex:",_126); +} +} +return _128; +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(self,_12a,_12b){ +with(self){ +var _12c=objj_msgSend(self,"bounds"); +if(!(_12b.x>=(_12c.origin.x)&&_12b.y>=(_12c.origin.y)&&_12b.x<(_12c.origin.x+_12c.size.width)&&_12b.y<(_12c.origin.y+_12c.size.height))){ +return CPNotFound; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var x=_12b.x,low=0,high=_tableColumnRanges.length-1; +while(low<=high){ +var _12d=FLOOR(low+(high-low)/2),_12e=_tableColumnRanges[_12d]; +if(x<_12e.location){ +high=_12d-1; +}else{ +if(x>=CPMaxRange(_12e)){ +low=_12d+1; +}else{ +var _12f=_tableColumnRanges.length; +while(_12d<_12f&&objj_msgSend(_tableColumns[_12d],"isHidden")){ +++_12d; +} +if(_12d<_12f){ +return _12d; +} +return CPNotFound; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("rowAtPoint:"),function(self,_130,_131){ +with(self){ +var y=_131.y,row=FLOOR(y/(_rowHeight+_intercellSpacing.height)); +if(row>=_numberOfRows){ +return -1; +} +return row; +} +}),new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"),function(self,_132,_133,aRow){ +with(self){ +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _134=_tableColumnRanges[_133],_135=objj_msgSend(self,"rectOfRow:",aRow),_136=FLOOR(_intercellSpacing.width/2),_137=FLOOR(_intercellSpacing.height/2); +return {origin:{x:_134.location+_136,y:(_135.origin.y)+_137},size:{width:_134.length-_intercellSpacing.width,height:(_135.size.height)-_intercellSpacing.height}}; +} +}),new objj_method(sel_getUid("resizeWithOldSuperviewSize:"),function(self,_138,_139){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"resizeWithOldSuperviewSize:",_139); +if(_disableAutomaticResizing){ +return; +} +var mask=_columnAutoResizingStyle; +if(mask===CPTableViewUniformColumnAutoresizingStyle){ +objj_msgSend(self,"_resizeAllColumnUniformlyWithOldSize:",_139); +}else{ +if(mask===CPTableViewLastColumnOnlyAutoresizingStyle){ +objj_msgSend(self,"sizeLastColumnToFit"); +}else{ +if(mask===CPTableViewFirstColumnOnlyAutoresizingStyle){ +objj_msgSend(self,"_autoResizeFirstColumn"); +} +} +} +} +}),new objj_method(sel_getUid("_autoResizeFirstColumn"),function(self,_13a){ +with(self){ +var _13b=objj_msgSend(self,"superview"); +if(!_13b){ +return; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _13c=(_tableColumns.length),_13d=nil,_13e=0,i=0; +for(;i<_13c;i++){ +var _13f=_tableColumns[i]; +if(!objj_msgSend(_13f,"isHidden")){ +if(!_13d){ +_13d=_13f; +} +_13e+=objj_msgSend(_13f,"width")+_intercellSpacing.width; +} +} +if(_13d){ +var _140=objj_msgSend(_13b,"bounds").size,_141=_140.width-_13e; +_141+=objj_msgSend(_13d,"width"); +_141=MAX(objj_msgSend(_13d,"minWidth"),_141); +_141=MIN(objj_msgSend(_13d,"maxWidth"),_141); +objj_msgSend(_13d,"setWidth:",FLOOR(_141)); +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("_resizeAllColumnUniformlyWithOldSize:"),function(self,_142,_143){ +with(self){ +var _144=objj_msgSend(self,"superview"); +if(!_144){ +return; +} +var _145=objj_msgSend(_144,"bounds").size; +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _146=(_tableColumns.length),_147=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"),_148=0; +for(var i=0;i<_146;i++){ +var _149=_tableColumns[i]; +if(!objj_msgSend(_149,"isHidden")&&(objj_msgSend(_149,"resizingMask")&CPTableColumnAutoresizingMask)){ +objj_msgSend(_147,"addObject:",i); +} +} +_146=objj_msgSend(_147,"count"); +if(_146>0){ +var _14a=CGRectGetMaxX(objj_msgSend(self,"rectOfColumn:",_147[_146-1])); +if(!_lastColumnShouldSnap&&(_14a>=_145.width&&_14a<=_143.width||_14a<=_145.width&&_14a>=_143.width)){ +_lastColumnShouldSnap=YES; +objj_msgSend(self,"_resizeAllColumnUniformlyWithOldSize:",CGSizeMake(_14a,0)); +} +if(!_lastColumnShouldSnap){ +return; +} +for(var i=0;i<_146;i++){ +var _14b=_147[i],_14c=_tableColumns[_14b],_14d=_148/(_146-i),_14e=(objj_msgSend(_14c,"width")/_143.width*objj_msgSend(_144,"bounds").size.width)+_14d,_14f=_14e; +_14f=MAX(objj_msgSend(_14c,"minWidth"),_14f); +_14f=MIN(objj_msgSend(_14c,"maxWidth"),_14f); +_148-=_14d; +_148+=_14e-_14f; +objj_msgSend(_14c,"setWidth:",_14f); +} +if(_148!==0){ +_lastColumnShouldSnap=NO; +} +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setColumnAutoresizingStyle:"),function(self,_150,_151){ +with(self){ +_columnAutoResizingStyle=_151; +} +}),new objj_method(sel_getUid("columnAutoresizingStyle"),function(self,_152){ +with(self){ +return _columnAutoResizingStyle; +} +}),new objj_method(sel_getUid("sizeLastColumnToFit"),function(self,_153){ +with(self){ +var _154=objj_msgSend(self,"superview"); +if(!_154){ +return; +} +var _155=objj_msgSend(_154,"bounds").size; +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _156=(_tableColumns.length); +while(_156--&&objj_msgSend(_tableColumns[_156],"isHidden")){ +} +if(_156>=0){ +var _157=_tableColumns[_156],_158=MAX(0,_155.width-CGRectGetMinX(objj_msgSend(self,"rectOfColumn:",_156))-_intercellSpacing.width); +if(_158>0){ +_158=MAX(objj_msgSend(_157,"minWidth"),_158); +_158=MIN(objj_msgSend(_157,"maxWidth"),_158); +objj_msgSend(_157,"setWidth:",_158); +} +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("noteNumberOfRowsChanged"),function(self,_159){ +with(self){ +var _15a=_numberOfRows; +_numberOfRows=nil; +_numberOfRows=objj_msgSend(self,"numberOfRows"); +var _15b=_15a-_numberOfRows; +if(_15b>0){ +objj_msgSend(_selectedRowIndexes,"removeIndexesInRange:",CPMakeRange(_numberOfRows,_15b)); +objj_msgSend(self,"_noteSelectionDidChange"); +} +objj_msgSend(self,"tile"); +} +}),new objj_method(sel_getUid("tile"),function(self,_15c){ +with(self){ +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _15d=_tableColumnRanges.length>0?CPMaxRange(objj_msgSend(_tableColumnRanges,"lastObject")):0,_15e=(_rowHeight+_intercellSpacing.height)*_numberOfRows,_15f=objj_msgSend(self,"superview"); +if(objj_msgSend(_15f,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _160=objj_msgSend(_15f,"bounds").size; +_15d=MAX(_160.width,_15d); +_15e=MAX(_160.height,_15e); +} +objj_msgSend(self,"setFrameSize:",{width:_15d,height:_15e}); +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("scrollRowToVisible:"),function(self,_161,_162){ +with(self){ +objj_msgSend(self,"scrollRectToVisible:",objj_msgSend(self,"rectOfRow:",_162)); +} +}),new objj_method(sel_getUid("scrollColumnToVisible:"),function(self,_163,_164){ +with(self){ +objj_msgSend(self,"scrollRectToVisible:",objj_msgSend(self,"rectOfColumn:",_164)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(self,_165,_166){ +with(self){ +if(_delegate===_166){ +return; +} +var _167=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_delegate){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidMove:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewColumnDidMoveNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidResize:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewColumnDidResizeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionDidChange:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewSelectionDidChangeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionIsChanging:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewSelectionIsChangingNotification,self); +} +} +_delegate=_166; +_implementedDelegateMethods=0; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("selectionShouldChangeInTableView:"))){ +_implementedDelegateMethods|=_9; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:dataViewForTableColumn:row:"))){ +_implementedDelegateMethods|=_a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:didClickTableColumn:"))){ +_implementedDelegateMethods|=_b; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:didDragTableColumn:"))){ +_implementedDelegateMethods|=_c; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:heightOfRow:"))){ +_implementedDelegateMethods|=_d; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:isGroupRow:"))){ +_implementedDelegateMethods|=_e; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:mouseDownInHeaderOfTableColumn:"))){ +_implementedDelegateMethods|=_f; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:nextTypeSelectMatchFromRow:toRow:forString:"))){ +_implementedDelegateMethods|=_10; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:selectionIndexesForProposedSelection:"))){ +_implementedDelegateMethods|=_11; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldEditTableColumn:row:"))){ +_implementedDelegateMethods|=_12; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldSelectRow:"))){ +_implementedDelegateMethods|=_13; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldSelectTableColumn:"))){ +_implementedDelegateMethods|=_14; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldShowViewExpansionForTableColumn:row:"))){ +_implementedDelegateMethods|=_15; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldTrackView:forTableColumn:row:"))){ +_implementedDelegateMethods|=_16; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldTypeSelectForEvent:withCurrentSearchString:"))){ +_implementedDelegateMethods|=_17; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:toolTipForView:rect:tableColumn:row:mouseLocation:"))){ +_implementedDelegateMethods|=_18; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:typeSelectStringForTableColumn:row:"))){ +_implementedDelegateMethods|=_19; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:willDisplayView:forTableColumn:row:"))){ +_implementedDelegateMethods|=_1a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidMove:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewColumnDidMove:"),CPTableViewColumnDidMoveNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidResize:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewColumnDidResize:"),CPTableViewColumnDidResizeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionDidChange:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewSelectionDidChange:"),CPTableViewSelectionDidChangeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionIsChanging:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewSelectionIsChanging:"),CPTableViewSelectionIsChangingNotification,self); +} +} +}),new objj_method(sel_getUid("delegate"),function(self,_168){ +with(self){ +return _delegate; +} +}),new objj_method(sel_getUid("_sendDelegateDidClickColumn:"),function(self,_169,_16a){ +with(self){ +if(_implementedDelegateMethods&_b){ +objj_msgSend(_delegate,"tableView:didClickTableColumn:",self,_tableColumns[_16a]); +} +} +}),new objj_method(sel_getUid("_sendDelegateDidDragColumn:"),function(self,_16b,_16c){ +with(self){ +if(_implementedDelegateMethods&_c){ +objj_msgSend(_delegate,"tableView:didDragTableColumn:",self,_tableColumns[_16c]); +} +} +}),new objj_method(sel_getUid("_sendDelegateDidMouseDownInHeader:"),function(self,_16d,_16e){ +with(self){ +if(_implementedDelegateMethods&_f){ +objj_msgSend(_delegate,"tableView:mouseDownInHeaderOfTableColumn:",self,_tableColumns[_16e]); +} +} +}),new objj_method(sel_getUid("_sendDataSourceSortDescriptorsDidChange:"),function(self,_16f,_170){ +with(self){ +if(_implementedDataSourceMethods&_8){ +objj_msgSend(_dataSource,"tableView:sortDescriptorsDidChange:",self,_170); +} +} +}),new objj_method(sel_getUid("_didClickTableColumn:modifierFlags:"),function(self,_171,_172,_173){ +with(self){ +objj_msgSend(self,"_sendDelegateDidClickColumn:",_172); +if(_allowsColumnSelection){ +objj_msgSend(self,"_noteSelectionIsChanging"); +if(_173&CPCommandKeyMask){ +if(objj_msgSend(self,"isColumnSelected:",_172)){ +objj_msgSend(self,"deselectColumn:",_172); +}else{ +if(objj_msgSend(self,"allowsMultipleSelection")==YES){ +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_172),YES); +} +} +return; +}else{ +if(_173&CPShiftKeyMask){ +var _174=MIN(_172,objj_msgSend(_selectedColumnIndexes,"lastIndex")),_175=MAX(_172,objj_msgSend(_selectedColumnIndexes,"firstIndex")); +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_174,_175-_174+1)),YES); +return; +}else{ +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_172),NO); +} +} +} +objj_msgSend(self,"_changeSortDescriptorsForClickOnColumn:",_172); +} +}),new objj_method(sel_getUid("_changeSortDescriptorsForClickOnColumn:"),function(self,_176,_177){ +with(self){ +var _178=objj_msgSend(_tableColumns,"objectAtIndex:",_177),_179=objj_msgSend(_178,"sortDescriptorPrototype"); +if(!_179){ +return; +} +var _17a=nil,_17b=objj_msgSend(self,"sortDescriptors"),_17c=objj_msgSend(CPArray,"arrayWithArray:",_17b),e=objj_msgSend(_17c,"objectEnumerator"),_17d=nil,_17e=objj_msgSend(CPArray,"array"); +if(objj_msgSend(_sortDescriptors,"count")>0){ +_17a=objj_msgSend(objj_msgSend(self,"sortDescriptors"),"objectAtIndex:",0); +} +while((_17d=objj_msgSend(e,"nextObject"))!=nil){ +if(objj_msgSend(objj_msgSend(_17d,"key"),"isEqual:",objj_msgSend(_179,"key"))){ +objj_msgSend(_17e,"addObject:",_17d); +} +} +if(objj_msgSend(objj_msgSend(_179,"key"),"isEqual:",objj_msgSend(_17a,"key"))){ +_179=objj_msgSend(_17a,"reversedSortDescriptor"); +} +objj_msgSend(_17c,"removeObjectsInArray:",_17e); +objj_msgSend(_17c,"insertObject:atIndex:",_179,0); +var _17f=objj_msgSend(_179,"ascending")?objj_msgSend(self,"_tableHeaderSortImage"):objj_msgSend(self,"_tableHeaderReverseSortImage"); +objj_msgSend(self,"setIndicatorImage:inTableColumn:",nil,_currentHighlightedTableColumn); +objj_msgSend(self,"setIndicatorImage:inTableColumn:",_17f,_178); +objj_msgSend(self,"setHighlightedTableColumn:",_178); +objj_msgSend(self,"setSortDescriptors:",_17c); +} +}),new objj_method(sel_getUid("setIndicatorImage:inTableColumn:"),function(self,_180,_181,_182){ +with(self){ +if(_182){ +var _183=objj_msgSend(_182,"headerView"); +if(objj_msgSend(_183,"respondsToSelector:",sel_getUid("_setIndicatorImage:"))){ +objj_msgSend(_183,"_setIndicatorImage:",_181); +} +} +} +}),new objj_method(sel_getUid("_tableHeaderSortImage"),function(self,_184){ +with(self){ +return objj_msgSend(self,"currentValueForThemeAttribute:","sort-image"); +} +}),new objj_method(sel_getUid("_tableHeaderReverseSortImage"),function(self,_185){ +with(self){ +return objj_msgSend(self,"currentValueForThemeAttribute:","sort-image-reversed"); +} +}),new objj_method(sel_getUid("highlightedTableColumn"),function(self,_186){ +with(self){ +return _currentHighlightedTableColumn; +} +}),new objj_method(sel_getUid("setHighlightedTableColumn:"),function(self,_187,_188){ +with(self){ +if(_currentHighlightedTableColumn==_188){ +return; +} +if(_headerView){ +if(_currentHighlightedTableColumn!=nil){ +objj_msgSend(objj_msgSend(_currentHighlightedTableColumn,"headerView"),"unsetThemeState:",CPThemeStateSelected); +} +if(_188!=nil){ +objj_msgSend(objj_msgSend(_188,"headerView"),"setThemeState:",CPThemeStateSelected); +} +} +_currentHighlightedTableColumn=_188; +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"),function(self,_189,_18a,_18b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"),function(self,_18c,_18d,_18e,_18f,_190){ +with(self){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:","Frameworks/AppKit/Resources/GenericFile.png",CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"),function(self,_191,_192,_193,_194,_195){ +with(self){ +var _196=objj_msgSend(self,"bounds"),view=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_196); +objj_msgSend(view,"setAlphaValue:",0.7); +var _197=objj_msgSend(_193,"count"); +while(_197--){ +var _198=objj_msgSend(_193,"objectAtIndex:",_197),row=objj_msgSend(_192,"firstIndex"); +while(row!==CPNotFound){ +var _199=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_198); +objj_msgSend(_199,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_197,row)); +objj_msgSend(_199,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_198,row)); +objj_msgSend(_198,"prepareDataView:forRow:",_199,row); +objj_msgSend(view,"addSubview:",_199); +row=objj_msgSend(_192,"indexGreaterThanIndex:",row); +} +} +var _19a=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_194,"locationInWindow"),nil); +_195.x=CGRectGetWidth(_196)/2-_19a.x; +_195.y=CGRectGetHeight(_196)/2-_19a.y; +return view; +} +}),new objj_method(sel_getUid("_dragViewForColumn:event:offset:"),function(self,_19b,_19c,_19d,_19e){ +with(self){ +var _19f=objj_msgSend(objj_msgSend(_CPColumnDragView,"alloc"),"initWithLineColor:",objj_msgSend(self,"gridColor")),_1a0=objj_msgSend(objj_msgSend(self,"tableColumns"),"objectAtIndex:",_19c),_1a1=CPRectMake(0,0,objj_msgSend(_1a0,"width"),(objj_msgSend(self,"visibleRect").size.height)+23),_1a2=objj_msgSend(self,"rectOfColumn:",_19c),_1a3=objj_msgSend(_1a0,"headerView"),row=objj_msgSend(_exposedRows,"firstIndex"); +while(row!==CPNotFound){ +var _1a4=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_1a0),_1a5=objj_msgSend(self,"frameOfDataViewAtColumn:row:",_19c,row); +_1a5.origin.x=0; +_1a5.origin.y=((_1a5.origin.y)-(objj_msgSend(self,"visibleRect").origin.y))+23; +objj_msgSend(_1a4,"setFrame:",_1a5); +objj_msgSend(_1a4,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_1a0,row)); +objj_msgSend(_19f,"addSubview:",_1a4); +row=objj_msgSend(_exposedRows,"indexGreaterThanIndex:",row); +} +var _1a6=objj_msgSend(_1a3,"frame"); +_1a6.origin={x:0,y:0}; +var _1a7=objj_msgSend(objj_msgSend(_CPTableColumnHeaderView,"alloc"),"initWithFrame:",_1a6); +objj_msgSend(_1a7,"setStringValue:",objj_msgSend(_1a3,"stringValue")); +objj_msgSend(_1a7,"setThemeState:",objj_msgSend(_1a3,"themeState")); +objj_msgSend(_19f,"addSubview:",_1a7); +objj_msgSend(_19f,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_19f,"setAlphaValue:",0.7); +objj_msgSend(_19f,"setFrame:",_1a1); +return _19f; +} +}),new objj_method(sel_getUid("setDraggingSourceOperationMask:forLocal:"),function(self,_1a8,mask,_1a9){ +with(self){ +_dragOperationDefaultMask=mask; +} +}),new objj_method(sel_getUid("setDropRow:dropOperation:"),function(self,_1aa,row,_1ab){ +with(self){ +if(row>objj_msgSend(self,"numberOfRows")&&_1ab===CPTableViewDropOn){ +var _1ac=objj_msgSend(self,"numberOfRows")+1,_1ad="Attempt to set dropRow="+row+" dropOperation=CPTableViewDropOn when [0 - "+_1ac+"] is valid range of rows."; +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:","Error",_1ad,nil),"raise"); +} +_retargetedDropRow=row; +_retargetedDropOperation=_1ab; +} +}),new objj_method(sel_getUid("setDraggingDestinationFeedbackStyle:"),function(self,_1ae,_1af){ +with(self){ +_destinationDragStyle=_1af; +} +}),new objj_method(sel_getUid("draggingDestinationFeedbackStyle"),function(self,_1b0){ +with(self){ +return _destinationDragStyle; +} +}),new objj_method(sel_getUid("setVerticalMotionCanBeginDrag:"),function(self,_1b1,_1b2){ +with(self){ +_verticalMotionCanDrag=_1b2; +} +}),new objj_method(sel_getUid("verticalMotionCanBeginDrag"),function(self,_1b3){ +with(self){ +return _verticalMotionCanDrag; +} +}),new objj_method(sel_getUid("setSortDescriptors:"),function(self,_1b4,_1b5){ +with(self){ +var _1b6=objj_msgSend(self,"sortDescriptors"),_1b7=nil; +if(_1b5==nil){ +_1b7=objj_msgSend(CPArray,"array"); +}else{ +_1b7=objj_msgSend(CPArray,"arrayWithArray:",_1b5); +} +if(objj_msgSend(_1b7,"isEqual:",_1b6)){ +return; +} +_sortDescriptors=_1b7; +objj_msgSend(self,"_sendDataSourceSortDescriptorsDidChange:",_1b6); +} +}),new objj_method(sel_getUid("sortDescriptors"),function(self,_1b8){ +with(self){ +return _sortDescriptors; +} +}),new objj_method(sel_getUid("_objectValueForTableColumn:row:"),function(self,_1b9,_1ba,_1bb){ +with(self){ +var _1bc=objj_msgSend(_1ba,"UID"),_1bd=_objectValues[_1bc]; +if(!_1bd){ +_1bd=[]; +_objectValues[_1bc]=_1bd; +} +var _1be=_1bd[_1bb]; +if(_1be===undefined&&(_implementedDataSourceMethods&_2)){ +_1be=objj_msgSend(_dataSource,"tableView:objectValueForTableColumn:row:",self,_1ba,_1bb); +_1bd[_1bb]=_1be; +} +return _1be; +} +}),new objj_method(sel_getUid("load"),function(self,_1bf){ +with(self){ +if(_reloadAllRows){ +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_exposedRows,_exposedColumns); +_exposedRows=objj_msgSend(CPIndexSet,"indexSet"); +_exposedColumns=objj_msgSend(CPIndexSet,"indexSet"); +_reloadAllRows=NO; +} +var _1c0=objj_msgSend(self,"visibleRect"),_1c1=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",objj_msgSend(self,"rowsInRect:",_1c0)),_1c2=objj_msgSend(self,"columnIndexesInRect:",_1c0),_1c3=objj_msgSend(_exposedRows,"copy"),_1c4=objj_msgSend(_exposedColumns,"copy"); +objj_msgSend(_1c3,"removeIndexes:",_1c1); +objj_msgSend(_1c4,"removeIndexes:",_1c2); +var _1c5=objj_msgSend(_1c1,"copy"),_1c6=objj_msgSend(_1c2,"copy"); +objj_msgSend(_1c5,"removeIndexes:",_exposedRows); +objj_msgSend(_1c6,"removeIndexes:",_exposedColumns); +var _1c7=objj_msgSend(_1c1,"copy"),_1c8=objj_msgSend(_1c2,"copy"); +objj_msgSend(_1c7,"removeIndexes:",_1c5); +objj_msgSend(_1c8,"removeIndexes:",_1c6); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c7,_1c4); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c3,_1c8); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c3,_1c4); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c5,_1c6); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c7,_1c6); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c5,_1c8); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c5,_1c6); +_exposedRows=_1c1; +_exposedColumns=_1c2; +objj_msgSend(_tableDrawView,"setFrame:",_1c0); +objj_msgSend(self,"setNeedsDisplay:",YES); +for(var _1c9 in _cachedDataViews){ +var _1ca=_cachedDataViews[_1c9],_1cb=_1ca.length; +while(_1cb--){ +objj_msgSend(_1ca[_1cb],"removeFromSuperview"); +} +} +if(objj_msgSend(_differedColumnDataToRemove,"count")){ +for(var i=0;i<_differedColumnDataToRemove.length;i++){ +var data=_differedColumnDataToRemove[i],_1cc=data.column; +objj_msgSend(_1cc,"setHidden:",data.shouldBeHidden); +objj_msgSend(_tableColumns,"removeObject:",_1cc); +} +objj_msgSend(_differedColumnDataToRemove,"removeAllObjects"); +} +} +}),new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"),function(self,_1cd,rows,_1ce){ +with(self){ +if(!objj_msgSend(rows,"count")||!objj_msgSend(_1ce,"count")){ +return; +} +var _1cf=[],_1d0=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1cf,-1,nil); +objj_msgSend(_1ce,"getIndexes:maxCount:inIndexRange:",_1d0,-1,nil); +var _1d1=0,_1d2=_1d0.length; +for(;_1d1<_1d2;++_1d1){ +var _1d3=_1d0[_1d1],_1d4=_tableColumns[_1d3],_1d5=objj_msgSend(_1d4,"UID"),_1d6=0,_1d7=_1cf.length; +for(;_1d6<_1d7;++_1d6){ +var row=_1cf[_1d6],_1d8=_dataViewsForTableColumns[_1d5]; +if(!_1d8||row>=_1d8.length){ +continue; +} +var _1d9=objj_msgSend(_1d8,"objectAtIndex:",row); +objj_msgSend(_1d8,"replaceObjectAtIndex:withObject:",row,nil); +objj_msgSend(self,"_enqueueReusableDataView:",_1d9); +} +} +} +}),new objj_method(sel_getUid("_loadDataViewsInRows:columns:"),function(self,_1da,rows,_1db){ +with(self){ +if(!objj_msgSend(rows,"count")||!objj_msgSend(_1db,"count")){ +return; +} +var _1dc=[],_1dd=[],_1de=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1dc,-1,nil); +objj_msgSend(_1db,"getIndexes:maxCount:inIndexRange:",_1de,-1,nil); +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _1df=0,_1e0=_1de.length; +for(;_1df<_1e0;++_1df){ +var _1e1=_1de[_1df],_1e2=_tableColumns[_1e1]; +if(objj_msgSend(_1e2,"isHidden")||_1e2===_draggedColumn){ +continue; +} +var _1e3=objj_msgSend(_1e2,"UID"); +if(!_dataViewsForTableColumns[_1e3]){ +_dataViewsForTableColumns[_1e3]=[]; +} +var _1e4=0,_1e5=_1dc.length,_1e6=objj_msgSend(_selectedColumnIndexes,"containsIndex:",_1e1); +for(;_1e4<_1e5;++_1e4){ +var row=_1dc[_1e4],_1e7=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_1e2),_1e8=objj_msgSend(_1e7,"isKindOfClass:",objj_msgSend(CPButton,"class")),_1e9=objj_msgSend(_1e7,"isKindOfClass:",objj_msgSend(CPTextField,"class")); +objj_msgSend(_1e7,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_1e1,row)); +objj_msgSend(_1e7,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_1e2,row)); +objj_msgSend(_1e2,"prepareDataView:forRow:",_1e7,row); +if(_1e6||objj_msgSend(self,"isRowSelected:",row)){ +objj_msgSend(_1e7,"setThemeState:",CPThemeStateSelectedDataView); +}else{ +objj_msgSend(_1e7,"unsetThemeState:",CPThemeStateSelectedDataView); +} +if(_implementedDelegateMethods&_1a){ +objj_msgSend(_delegate,"tableView:willDisplayView:forTableColumn:row:",self,_1e7,_1e2,row); +} +if(objj_msgSend(_1e7,"superview")!==self){ +objj_msgSend(self,"addSubview:",_1e7); +} +_dataViewsForTableColumns[_1e3][row]=_1e7; +if(_1e8||(_editingCellIndex&&_editingCellIndex.x===_1e1&&_editingCellIndex.y===row)){ +if(!_1e8){ +_editingCellIndex=undefined; +} +if(_1e9){ +objj_msgSend(_1e7,"setEditable:",YES); +objj_msgSend(_1e7,"setSendsActionOnEndEditing:",YES); +objj_msgSend(_1e7,"setSelectable:",YES); +objj_msgSend(_1e7,"selectText:",nil); +} +objj_msgSend(_1e7,"setTarget:",self); +objj_msgSend(_1e7,"setAction:",sel_getUid("_commitDataViewObjectValue:")); +_1e7.tableViewEditedColumnObj=_1e2; +_1e7.tableViewEditedRowIndex=row; +}else{ +if(_1e9){ +objj_msgSend(_1e7,"setEditable:",NO); +objj_msgSend(_1e7,"setSelectable:",NO); +} +} +} +} +} +}),new objj_method(sel_getUid("_layoutDataViewsInRows:columns:"),function(self,_1ea,rows,_1eb){ +with(self){ +var _1ec=[],_1ed=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1ec,-1,nil); +objj_msgSend(_1eb,"getIndexes:maxCount:inIndexRange:",_1ed,-1,nil); +var _1ee=0,_1ef=_1ed.length; +for(;_1ee<_1ef;++_1ee){ +var _1f0=_1ed[_1ee],_1f1=_tableColumns[_1f0],_1f2=objj_msgSend(_1f1,"UID"),_1f3=_dataViewsForTableColumns[_1f2],_1f4=_tableColumnRanges[_1f0],_1f5=0,_1f6=_1ec.length; +for(;_1f5<_1f6;++_1f5){ +var row=_1ec[_1f5],_1f7=_1f3[row]; +objj_msgSend(_1f7,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_1f0,row)); +} +} +} +}),new objj_method(sel_getUid("_commitDataViewObjectValue:"),function(self,_1f8,_1f9){ +with(self){ +objj_msgSend(_dataSource,"tableView:setObjectValue:forTableColumn:row:",self,objj_msgSend(_1f9,"objectValue"),_1f9.tableViewEditedColumnObj,_1f9.tableViewEditedRowIndex); +if(objj_msgSend(_1f9,"respondsToSelector:",sel_getUid("setEditable:"))){ +objj_msgSend(_1f9,"setEditable:",NO); +} +} +}),new objj_method(sel_getUid("_newDataViewForRow:tableColumn:"),function(self,_1fa,aRow,_1fb){ +with(self){ +if((_implementedDelegateMethods&_a)){ +var _1fc=objj_msgSend(_delegate,"tableView:dataViewForTableColumn:row:",self,_1fb,aRow); +objj_msgSend(_1fb,"setDataView:",_1fc); +} +return objj_msgSend(_1fb,"_newDataViewForRow:",aRow); +} +}),new objj_method(sel_getUid("_enqueueReusableDataView:"),function(self,_1fd,_1fe){ +with(self){ +if(!_1fe){ +return; +} +var _1ff=_1fe.identifier; +if(!_cachedDataViews[_1ff]){ +_cachedDataViews[_1ff]=[_1fe]; +}else{ +_cachedDataViews[_1ff].push(_1fe); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(self,_200,_201){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"setFrameSize:",_201); +if(_headerView){ +objj_msgSend(_headerView,"setFrameSize:",{width:(objj_msgSend(self,"frame").size.width),height:(objj_msgSend(_headerView,"frame").size.height)}); +} +} +}),new objj_method(sel_getUid("setNeedsDisplay:"),function(self,_202,_203){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"setNeedsDisplay:",_203); +objj_msgSend(_tableDrawView,"setNeedsDisplay:",_203); +} +}),new objj_method(sel_getUid("_drawRect:"),function(self,_204,_205){ +with(self){ +var _206=objj_msgSend(self,"visibleRect"); +objj_msgSend(self,"drawBackgroundInClipRect:",_206); +objj_msgSend(self,"drawGridInClipRect:",_206); +objj_msgSend(self,"highlightSelectionInClipRect:",_206); +if(_implementsCustomDrawRow){ +objj_msgSend(self,"_drawRows:clipRect:",_exposedRows,_206); +} +} +}),new objj_method(sel_getUid("drawBackgroundInClipRect:"),function(self,_207,_208){ +with(self){ +if(!_usesAlternatingRowBackgroundColors){ +return; +} +var _209=objj_msgSend(self,"alternatingRowBackgroundColors"),_20a=objj_msgSend(_209,"count"); +if(_20a===0){ +return; +} +var _20b=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +if(_20a===1){ +CGContextSetFillColor(_20b,_209[0]); +CGContextFillRect(_20b,_208); +return; +} +var _20c=objj_msgSend(self,"rowsInRect:",_208),_20d=_20c.location,_20e=CPMaxRange(_20c)-1,_20f=MIN(_20c.length,_20a),_210=0; +while(_20f--){ +var row=_20d-_20d%_20a+_20f,_211=nil; +CGContextBeginPath(_20b); +for(;row<=_20e;row+=_20a){ +if(row>=_20d){ +CGContextAddRect(_20b,CGRectIntersection(_208,_211=objj_msgSend(self,"rectOfRow:",row))); +} +} +if(row-_20a===_20e){ +_210=(_211.origin.y+_211.size.height); +} +CGContextClosePath(_20b); +CGContextSetFillColor(_20b,_209[_20f]); +CGContextFillPath(_20b); +} +var _212=(_208.origin.y+_208.size.height); +if(_210>=_212||_rowHeight<=0){ +return; +} +var _213=_rowHeight+_intercellSpacing.height,_211={origin:{x:(_208.origin.x),y:(_208.origin.y)+_210},size:{width:(_208.size.width),height:_213}}; +for(row=_20e+1;_210<_212;++row){ +CGContextSetFillColor(_20b,_209[row%_20a]); +CGContextFillRect(_20b,_211); +_210+=_213; +_211.origin.y+=_213; +} +} +}),new objj_method(sel_getUid("drawGridInClipRect:"),function(self,_214,_215){ +with(self){ +var _216=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_217=objj_msgSend(self,"gridStyleMask"); +if(!(_217&(CPTableViewSolidHorizontalGridLineMask|CPTableViewSolidVerticalGridLineMask))){ +return; +} +CGContextBeginPath(_216); +if(_217&CPTableViewSolidHorizontalGridLineMask){ +var _218=objj_msgSend(self,"rowsInRect:",_215),row=_218.location,_219=CPMaxRange(_218)-1,rowY=-0.5,minX=(_215.origin.x),maxX=(_215.origin.x+_215.size.width); +for(;row<=_219;++row){ +var _21a=objj_msgSend(self,"rectOfRow:",row),rowY=(_21a.origin.y+_21a.size.height)-0.5; +CGContextMoveToPoint(_216,minX,rowY); +CGContextAddLineToPoint(_216,maxX,rowY); +} +if(_rowHeight>0){ +var _21b=_rowHeight+_intercellSpacing.height,_21c=(_215.origin.y+_215.size.height); +while(rowY<_21c){ +rowY+=_21b; +CGContextMoveToPoint(_216,minX,rowY); +CGContextAddLineToPoint(_216,maxX,rowY); +} +} +} +if(_217&CPTableViewSolidVerticalGridLineMask){ +var _21d=objj_msgSend(self,"columnIndexesInRect:",_215),_21e=[]; +objj_msgSend(_21d,"getIndexes:maxCount:inIndexRange:",_21e,-1,nil); +var _21f=0,_220=_21e.length,minY=(_215.origin.y),maxY=(_215.origin.y+_215.size.height); +for(;_21f<_220;++_21f){ +var _221=objj_msgSend(self,"rectOfColumn:",_21e[_21f]),_222=(_221.origin.x+_221.size.width)+0.5; +CGContextMoveToPoint(_216,_222,minY); +CGContextAddLineToPoint(_216,_222,maxY); +} +} +CGContextClosePath(_216); +CGContextSetStrokeColor(_216,objj_msgSend(self,"gridColor")); +CGContextStrokePath(_216); +} +}),new objj_method(sel_getUid("highlightSelectionInClipRect:"),function(self,_223,_224){ +with(self){ +if(_selectionHighlightStyle===CPTableViewSelectionHighlightStyleNone){ +return; +} +var _225=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_226=[],_227=sel_getUid("rectOfRow:"); +if(objj_msgSend(_selectedRowIndexes,"count")>=1){ +var _228=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",objj_msgSend(self,"rowsInRect:",_224)),_229=objj_msgSend(_228,"firstIndex"),_22a=CPMakeRange(_229,objj_msgSend(_228,"lastIndex")-_229+1); +objj_msgSend(_selectedRowIndexes,"getIndexes:maxCount:inIndexRange:",_226,-1,_22a); +}else{ +if(objj_msgSend(_selectedColumnIndexes,"count")>=1){ +_227=sel_getUid("rectOfColumn:"); +var _22b=objj_msgSend(self,"columnIndexesInRect:",_224),_22c=objj_msgSend(_22b,"firstIndex"),_22a=CPMakeRange(_22c,objj_msgSend(_22b,"lastIndex")-_22c+1); +objj_msgSend(_selectedColumnIndexes,"getIndexes:maxCount:inIndexRange:",_226,-1,_22a); +} +} +var _22d=count2=objj_msgSend(_226,"count"); +if(!_22d){ +return; +} +var _22e=(_selectionHighlightStyle===CPTableViewSelectionHighlightStyleSourceList&&objj_msgSend(_selectedRowIndexes,"count")>=1),_22f=0.5*(_gridStyleMask&CPTableViewSolidHorizontalGridLineMask); +CGContextBeginPath(_225); +var _230=objj_msgSend(self,"selectionGradientColors"),_231=objj_msgSend(_230,"objectForKey:",CPSourceListTopLineColor),_232=objj_msgSend(_230,"objectForKey:",CPSourceListBottomLineColor),_233=objj_msgSend(_230,"objectForKey:",CPSourceListGradient); +while(_22d--){ +var _234=CGRectIntersection(objj_msgSend(self,_227,_226[_22d]),_224); +CGContextAddRect(_225,_234); +if(_22e){ +var minX=(_234.origin.x),minY=(_234.origin.y),maxX=(_234.origin.x+_234.size.width),maxY=(_234.origin.y+_234.size.height)-_22f; +CGContextDrawLinearGradient(_225,_233,_234.origin,CGPointMake(minX,maxY),0); +CGContextClosePath(_225); +CGContextBeginPath(_225); +CGContextMoveToPoint(_225,minX,minY); +CGContextAddLineToPoint(_225,maxX,minY); +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,_231); +CGContextStrokePath(_225); +CGContextBeginPath(_225); +CGContextMoveToPoint(_225,minX,maxY); +CGContextAddLineToPoint(_225,maxX,maxY-1); +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,_232); +CGContextStrokePath(_225); +} +} +CGContextClosePath(_225); +if(!_22e){ +objj_msgSend(objj_msgSend(self,"selectionHighlightColor"),"setFill"); +CGContextFillPath(_225); +} +CGContextBeginPath(_225); +var _235=objj_msgSend(self,"gridStyleMask"); +for(var i=0;i=1&&_235&CPTableViewSolidVerticalGridLineMask){ +var _22b=objj_msgSend(self,"columnIndexesInRect:",_224),_236=[],_237=objj_msgSend(_22b,"firstIndex"),_22a=CPMakeRange(_237,objj_msgSend(_22b,"lastIndex")-_237+1); +objj_msgSend(_22b,"getIndexes:maxCount:inIndexRange:",_236,-1,_22a); +var _238=objj_msgSend(_236,"count"); +for(var c=_237;c<_238;c++){ +var _239=objj_msgSend(self,"rectOfColumn:",_236[c]),colX=CGRectGetMaxX(_239)+0.5; +CGContextMoveToPoint(_225,colX,minY); +CGContextAddLineToPoint(_225,colX,maxY); +} +} +if(objj_msgSend(_226,"containsObject:",_226[i]+1)){ +CGContextMoveToPoint(_225,minX,maxY); +CGContextAddLineToPoint(_225,maxX,maxY); +} +} +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,objj_msgSend(self,"currentValueForThemeAttribute:","highlighted-grid-color")); +CGContextStrokePath(_225); +} +}),new objj_method(sel_getUid("_drawRows:clipRect:"),function(self,_23a,_23b,_23c){ +with(self){ +var row=objj_msgSend(_23b,"firstIndex"); +while(row!==CPNotFound){ +objj_msgSend(self,"drawRow:clipRect:",row,CGRectIntersection(_23c,objj_msgSend(self,"rectOfRow:",row))); +row=objj_msgSend(_23b,"indexGreaterThanIndex:",row); +} +} +}),new objj_method(sel_getUid("drawRow:clipRect:"),function(self,_23d,row,rect){ +with(self){ +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_23e){ +with(self){ +objj_msgSend(self,"load"); +} +}),new objj_method(sel_getUid("viewWillMoveToSuperview:"),function(self,_23f,_240){ +with(self){ +var _241=objj_msgSend(self,"superview"),_242=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_241){ +objj_msgSend(_242,"removeObserver:name:object:",self,CPViewFrameDidChangeNotification,_241); +objj_msgSend(_242,"removeObserver:name:object:",self,CPViewBoundsDidChangeNotification,_241); +} +if(_240){ +objj_msgSend(_240,"setPostsFrameChangedNotifications:",YES); +objj_msgSend(_240,"setPostsBoundsChangedNotifications:",YES); +objj_msgSend(_242,"addObserver:selector:name:object:",self,sel_getUid("superviewFrameChanged:"),CPViewFrameDidChangeNotification,_240); +objj_msgSend(_242,"addObserver:selector:name:object:",self,sel_getUid("superviewBoundsChanged:"),CPViewBoundsDidChangeNotification,_240); +} +} +}),new objj_method(sel_getUid("superviewBoundsChanged:"),function(self,_243,_244){ +with(self){ +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("superviewFrameChanged:"),function(self,_245,_246){ +with(self){ +objj_msgSend(self,"tile"); +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(self,_247){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(self,_248,_249){ +with(self){ +var row=objj_msgSend(self,"rowAtPoint:",_249); +if(row<0&&_allowsEmptySelection){ +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +} +objj_msgSend(self,"_noteSelectionIsChanging"); +if(objj_msgSend(self,"mouseDownFlags")&CPShiftKeyMask){ +_selectionAnchorRow=(ABS(objj_msgSend(_selectedRowIndexes,"firstIndex")-row)=0&&!(_implementedDataSourceMethods&_7)){ +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",row); +} +objj_msgSend(objj_msgSend(self,"window"),"makeFirstResponder:",self); +return YES; +} +}),new objj_method(sel_getUid("trackMouse:"),function(self,_24a,_24b){ +with(self){ +if(!objj_msgSend(_draggedRowIndexes,"count")){ +objj_msgSend(self,"autoscroll:",_24b); +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"trackMouse:",_24b); +}else{ +objj_msgSend(CPApp,"sendEvent:",_24b); +} +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(self,_24c,_24d,_24e){ +with(self){ +var row=objj_msgSend(self,"rowAtPoint:",_24e); +if(!_isSelectingSession&&_implementedDataSourceMethods&_7){ +if(row>=0&&(ABS(_startTrackingPoint.x-_24e.x)>3||(_verticalMotionCanDrag&&ABS(_startTrackingPoint.y-_24e.y)>3))||(objj_msgSend(_selectedRowIndexes,"containsIndex:",row))){ +if(objj_msgSend(_selectedRowIndexes,"containsIndex:",row)){ +_draggedRowIndexes=objj_msgSend(objj_msgSend(CPIndexSet,"alloc"),"initWithIndexSet:",_selectedRowIndexes); +}else{ +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSetWithIndex:",row); +} +var _24f=objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard); +if(objj_msgSend(self,"canDragRowsWithIndexes:atPoint:",_draggedRowIndexes,_24e)&&objj_msgSend(_dataSource,"tableView:writeRowsWithIndexes:toPasteboard:",self,_draggedRowIndexes,_24f)){ +var _250=objj_msgSend(CPApp,"currentEvent"),_251=CPPointMakeZero(),_252=objj_msgSend(_tableColumns,"objectsAtIndexes:",_exposedColumns); +var view=objj_msgSend(self,"dragViewForRowsWithIndexes:tableColumns:event:offset:",_draggedRowIndexes,_252,_250,_251); +if(!view){ +var _253=objj_msgSend(self,"dragImageForRowsWithIndexes:tableColumns:event:offset:",_draggedRowIndexes,_252,_250,_251); +view=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CPMakeRect(0,0,objj_msgSend(_253,"size").width,objj_msgSend(_253,"size").height)); +objj_msgSend(view,"setImage:",_253); +} +var _254=objj_msgSend(view,"bounds"),_255=CPPointMake(_24e.x-CGRectGetWidth(_254)/2+_251.x,_24e.y-CGRectGetHeight(_254)/2+_251.y); +objj_msgSend(self,"dragView:at:offset:event:pasteboard:source:slideBack:",view,_255,CPPointMakeZero(),objj_msgSend(CPApp,"currentEvent"),_24f,self,YES); +_startTrackingPoint=nil; +return NO; +} +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +}else{ +if(ABS(_startTrackingPoint.x-_24e.x)<5&&ABS(_startTrackingPoint.y-_24e.y)<5){ +return YES; +} +} +} +_isSelectingSession=YES; +if(row>=0&&row!==_lastTrackedRowIndex){ +_lastTrackedRowIndex=row; +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",row); +} +if((_implementedDataSourceMethods&_3)&&!_trackingPointMovedOutOfClickSlop){ +var _256=5; +if(ABS(_24e.x-_startTrackingPoint.x)>_256||ABS(_24e.y-_startTrackingPoint.y)>_256){ +_trackingPointMovedOutOfClickSlop=YES; +} +} +return YES; +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(self,_257,_258,_259,_25a){ +with(self){ +_isSelectingSession=NO; +var _25b=1000,_25c,_25d,_25e,_25f=YES; +if(_implementedDataSourceMethods&_7){ +_25e=objj_msgSend(self,"rowAtPoint:",_259); +if(_25e!==-1){ +if(objj_msgSend(_draggedRowIndexes,"count")>0){ +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +return; +} +_previouslySelectedRowIndexes=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",_25e); +} +} +if(_25a&&(_implementedDataSourceMethods&_3)&&!_trackingPointMovedOutOfClickSlop&&(objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"clickCount")>1)){ +_25c=objj_msgSend(self,"columnAtPoint:",_258); +if(_25c!==-1){ +_25d=_tableColumns[_25c]; +if(objj_msgSend(_25d,"isEditable")){ +_25e=objj_msgSend(self,"rowAtPoint:",_259); +if(_25e!==-1){ +if(_implementedDelegateMethods&_12){ +_25f=objj_msgSend(_delegate,"tableView:shouldEditTableColumn:row:",self,_25d,_25e); +} +if(_25f){ +objj_msgSend(self,"editColumn:row:withEvent:select:",_25c,_25e,nil,YES); +return; +} +} +} +} +} +if(objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"clickCount")===2&&_doubleAction){ +_clickedRow=objj_msgSend(self,"rowAtPoint:",_259); +objj_msgSend(self,"sendAction:to:",_doubleAction,_target); +} +} +}),new objj_method(sel_getUid("draggingEntered:"),function(self,_260,_261){ +with(self){ +var _262=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_261,"draggingLocation"),nil),_263=objj_msgSend(self,"_proposedDropOperationAtPoint:",_262),row=objj_msgSend(self,"_proposedRowAtPoint:",_262); +if(_retargetedDropRow!==nil){ +row=_retargetedDropRow; +} +var _264=objj_msgSend(self,"registeredDraggedTypes"),_265=objj_msgSend(_264,"count"),i=0; +for(;i<_265;i++){ +if(objj_msgSend(objj_msgSend(objj_msgSend(_261,"draggingPasteboard"),"types"),"containsObject:",objj_msgSend(_264,"objectAtIndex:",i))){ +return objj_msgSend(self,"_validateDrop:proposedRow:proposedDropOperation:",_261,row,_263); +} +} +return CPDragOperationNone; +} +}),new objj_method(sel_getUid("draggingExited:"),function(self,_266,_267){ +with(self){ +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +} +}),new objj_method(sel_getUid("draggingEnded:"),function(self,_268,_269){ +with(self){ +objj_msgSend(self,"_draggingEnded"); +} +}),new objj_method(sel_getUid("_draggingEnded"),function(self,_26a){ +with(self){ +_retargetedDropOperation=nil; +_retargetedDropRow=nil; +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +} +}),new objj_method(sel_getUid("wantsPeriodicDraggingUpdates"),function(self,_26b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("_proposedDropOperationAtPoint:"),function(self,_26c,_26d){ +with(self){ +if(_retargetedDropOperation!==nil){ +return _retargetedDropOperation; +} +var row=objj_msgSend(self,"_proposedRowAtPoint:",_26d),_26e=objj_msgSend(self,"rectOfRow:",row); +if(objj_msgSend(self,"intercellSpacing").height<5){ +_26e=CPRectInset(_26e,0,5-objj_msgSend(self,"intercellSpacing").height); +} +if(CGRectContainsPoint(_26e,_26d)&&row<_numberOfRows){ +return CPTableViewDropOn; +} +return CPTableViewDropAbove; +} +}),new objj_method(sel_getUid("_proposedRowAtPoint:"),function(self,_26f,_270){ +with(self){ +var row=FLOOR(_270.y/(_rowHeight+_intercellSpacing.height)),_271=row+1,rect=objj_msgSend(self,"rectOfRow:",row),_272=CGRectGetMaxY(rect),_273=_272-((_272-CGRectGetMinY(rect))*0.3); +if(_270.y>MAX(_273,_272-6)){ +row=_271; +} +if(row>=objj_msgSend(self,"numberOfRows")){ +row=objj_msgSend(self,"numberOfRows"); +} +return row; +} +}),new objj_method(sel_getUid("_validateDrop:proposedRow:proposedDropOperation:"),function(self,_274,info,row,_275){ +with(self){ +if(_implementedDataSourceMethods&_6){ +return objj_msgSend(_dataSource,"tableView:validateDrop:proposedRow:proposedDropOperation:",self,info,row,_275); +} +return CPDragOperationNone; +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewOnRow:"),function(self,_276,_277){ +with(self){ +if(_277>=objj_msgSend(self,"numberOfRows")){ +_277=objj_msgSend(self,"numberOfRows")-1; +} +return objj_msgSend(self,"rectOfRow:",_277); +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"),function(self,_278,_279,_27a,_27b){ +with(self){ +if(_27a>objj_msgSend(self,"numberOfRows")){ +_27a=objj_msgSend(self,"numberOfRows"); +} +return objj_msgSend(self,"rectOfRow:",_27a); +} +}),new objj_method(sel_getUid("draggingUpdated:"),function(self,_27c,_27d){ +with(self){ +var _27e=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_27d,"draggingLocation"),nil),_27f=objj_msgSend(self,"_proposedDropOperationAtPoint:",_27e),_280=objj_msgSend(self,"numberOfRows"),row=objj_msgSend(self,"_proposedRowAtPoint:",_27e),_281=objj_msgSend(self,"_validateDrop:proposedRow:proposedDropOperation:",_27d,row,_27f),_282=objj_msgSend(self,"visibleRect"); +if(_retargetedDropRow!==nil){ +row=_retargetedDropRow; +} +if(_27f===CPTableViewDropOn&&row>=objj_msgSend(self,"numberOfRows")){ +row=objj_msgSend(self,"numberOfRows")-1; +} +var rect={origin:{x:0,y:0},size:{width:0,height:0}}; +if(row===-1){ +rect=_282; +}else{ +if(_27f===CPTableViewDropAbove){ +rect=objj_msgSend(self,"_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:",row-1,row,_27e); +}else{ +rect=objj_msgSend(self,"_rectForDropHighlightViewOnRow:",row); +} +} +objj_msgSend(_dropOperationFeedbackView,"setDropOperation:",row!==-1?_27f:CPDragOperationNone); +objj_msgSend(_dropOperationFeedbackView,"setHidden:",(_281==CPDragOperationNone)); +objj_msgSend(_dropOperationFeedbackView,"setFrame:",rect); +objj_msgSend(_dropOperationFeedbackView,"setCurrentRow:",row); +objj_msgSend(self,"addSubview:",_dropOperationFeedbackView); +return _281; +} +}),new objj_method(sel_getUid("prepareForDragOperation:"),function(self,_283,_284){ +with(self){ +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +return (_implementedDataSourceMethods&_6); +} +}),new objj_method(sel_getUid("performDragOperation:"),function(self,_285,_286){ +with(self){ +var _287=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_286,"draggingLocation"),nil),_288=objj_msgSend(self,"_proposedDropOperationAtPoint:",_287),row=_retargetedDropRow; +if(row===nil){ +var row=objj_msgSend(self,"_proposedRowAtPoint:",_287); +} +return objj_msgSend(_dataSource,"tableView:acceptDrop:row:dropOperation:",self,_286,row,_288); +} +}),new objj_method(sel_getUid("concludeDragOperation:"),function(self,_289,_28a){ +with(self){ +objj_msgSend(self,"reloadData"); +} +}),new objj_method(sel_getUid("draggedImage:endedAt:operation:"),function(self,_28b,_28c,_28d,_28e){ +with(self){ +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:didEndDraggedImage:atPosition:operation:"))){ +objj_msgSend(_dataSource,"tableView:didEndDraggedImage:atPosition:operation:",self,_28c,_28d,_28e); +} +} +}),new objj_method(sel_getUid("draggedView:endedAt:operation:"),function(self,_28f,_290,_291,_292){ +with(self){ +objj_msgSend(self,"_draggingEnded"); +objj_msgSend(self,"draggedImage:endedAt:operation:",_290,_291,_292); +} +}),new objj_method(sel_getUid("_updateSelectionWithMouseAtRow:"),function(self,_293,aRow){ +with(self){ +if(aRow<0){ +return; +} +var _294,_295=NO; +if(objj_msgSend(self,"mouseDownFlags")&(CPCommandKeyMask|CPControlKeyMask|CPAlternateKeyMask)){ +if(objj_msgSend(_selectedRowIndexes,"containsIndex:",aRow)){ +_294=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_294,"removeIndex:",aRow); +}else{ +if(_allowsMultipleSelection){ +_294=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_294,"addIndex:",aRow); +}else{ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndex:",aRow); +} +} +}else{ +if(_allowsMultipleSelection){ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(MIN(aRow,_selectionAnchorRow),ABS(aRow-_selectionAnchorRow)+1)); +_295=objj_msgSend(self,"mouseDownFlags")&CPShiftKeyMask&&((_lastSelectedRow==objj_msgSend(_selectedRowIndexes,"lastIndex")&&aRow>_lastSelectedRow)||(_lastSelectedRow==objj_msgSend(_selectedRowIndexes,"firstIndex")&&aRow<_lastSelectedRow)); +}else{ +if(aRow>=0&&aRow<_numberOfRows){ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndex:",aRow); +}else{ +_294=objj_msgSend(CPIndexSet,"indexSet"); +} +} +} +if(objj_msgSend(_294,"isEqualToIndexSet:",_selectedRowIndexes)){ +return; +} +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +if(_implementedDelegateMethods&_11){ +_294=objj_msgSend(_delegate,"tableView:selectionIndexesForProposedSelection:",self,_294); +} +if(_implementedDelegateMethods&_13){ +var _296=[]; +objj_msgSend(_294,"getIndexes:maxCount:inIndexRange:",_296,-1,nil); +var _297=_296.length; +while(_297--){ +var _298=_296[_297]; +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,_298)){ +objj_msgSend(_294,"removeIndex:",_298); +} +} +if(objj_msgSend(_294,"count")===0){ +return; +} +} +if(!_allowsEmptySelection&&objj_msgSend(_294,"count")===0){ +return; +} +if(objj_msgSend(_294,"isEqualToIndexSet:",_selectedRowIndexes)){ +return; +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",_294,_295); +} +}),new objj_method(sel_getUid("_noteSelectionIsChanging"),function(self,_299){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewSelectionIsChangingNotification,self,nil); +} +}),new objj_method(sel_getUid("_noteSelectionDidChange"),function(self,_29a){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewSelectionDidChangeNotification,self,nil); +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(self,_29b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(self,_29c){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("keyDown:"),function(self,_29d,_29e){ +with(self){ +objj_msgSend(self,"interpretKeyEvents:",[_29e]); +} +}),new objj_method(sel_getUid("moveDown:"),function(self,_29f,_2a0){ +with(self){ +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +var _2a1=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"count")>0){ +var _2a2=NO; +if((objj_msgSend(_2a1,"modifierFlags")&CPShiftKeyMask)&&_allowsMultipleSelection){ +_2a2=YES; +} +var i=objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"lastIndex"); +if(i0){ +var i=0; +} +} +if(_implementedDelegateMethods&_13){ +while((!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i))&&i=0){ +objj_msgSend(self,"scrollRowToVisible:",i); +} +} +}),new objj_method(sel_getUid("moveDownAndModifySelection:"),function(self,_2a3,_2a4){ +with(self){ +objj_msgSend(self,"moveDown:",_2a4); +} +}),new objj_method(sel_getUid("moveUp:"),function(self,_2a5,_2a6){ +with(self){ +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +var _2a7=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"count")>0){ +var _2a8=NO; +if((objj_msgSend(_2a7,"modifierFlags")&CPShiftKeyMask)&&_allowsMultipleSelection){ +_2a8=YES; +} +var i=objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"firstIndex"); +if(i>0){ +i--; +} +}else{ +var _2a8=NO; +if(objj_msgSend(self,"numberOfRows")>0){ +var i=objj_msgSend(self,"numberOfRows")-1; +} +} +if(_implementedDelegateMethods&_13){ +while((!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i))&&i>0){ +i--; +} +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i)){ +return; +} +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",i),_2a8); +if(i>=0){ +objj_msgSend(self,"scrollRowToVisible:",i); +} +} +}),new objj_method(sel_getUid("moveUpAndModifySelection:"),function(self,_2a9,_2aa){ +with(self){ +objj_msgSend(self,"moveUp:",_2aa); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(self,_2ab,_2ac){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewDeleteKeyPressed:"))){ +objj_msgSend(_delegate,"tableViewDeleteKeyPressed:",self); +} +} +})]); +class_addMethods(_1e,[new objj_method(sel_getUid("themeClass"),function(self,_2ad){ +with(self){ +return "tableview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(self,_2ae){ +with(self){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["alternating-row-colors","grid-color","highlighted-grid-color","selection-color","sourcelist-selection-color","sort-image","sort-image-reversed"]); +} +})]); +var _1d=objj_getClass("CPTableView"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(self,_2af,_2b0){ +with(self){ +if(_2b0==="selectionIndexes"){ +return "selectedRowIndexes"; +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"_replacementKeyPathForBinding:",_2b0); +} +}),new objj_method(sel_getUid("_establishBindingsIfUnbound:"),function(self,_2b1,_2b2){ +with(self){ +if(objj_msgSend(objj_msgSend(self,"infoForBinding:","content"),"objectForKey:",CPObservedObjectKey)!==_2b2){ +objj_msgSend(self,"bind:toObject:withKeyPath:options:","content",_2b2,"arrangedObjects",nil); +} +if(objj_msgSend(objj_msgSend(self,"infoForBinding:","selectionIndexes"),"objectForKey:",CPObservedObjectKey)!==_2b2){ +objj_msgSend(self,"bind:toObject:withKeyPath:options:","selectionIndexes",_2b2,"selectionIndexes",nil); +} +} +}),new objj_method(sel_getUid("setContent:"),function(self,_2b3,_2b4){ +with(self){ +objj_msgSend(self,"reloadData"); +} +})]); +var _2b5="CPTableViewDataSourceKey",_2b6="CPTableViewDelegateKey",_2b7="CPTableViewHeaderViewKey",_2b8="CPTableViewTableColumnsKey",_2b9="CPTableViewRowHeightKey",_2ba="CPTableViewIntercellSpacingKey",_2bb="CPTableViewSelectionHighlightStyleKey",_2bc="CPTableViewMultipleSelectionKey",_2bd="CPTableViewEmptySelectionKey",_2be="CPTableViewColumnReorderingKey",_2bf="CPTableViewColumnResizingKey",_2c0="CPTableViewColumnSelectionKey",_2c1="CPTableViewColumnAutoresizingStyleKey",_2c2="CPTableViewGridColorKey",_2c3="CPTableViewGridStyleMaskKey",_2c4="CPTableViewUsesAlternatingBackgroundKey",_2c5="CPTableViewAlternatingRowColorsKey",_2b7="CPTableViewHeaderViewKey",_2c6="CPTableViewCornerViewKey"; +var _1d=objj_getClass("CPTableView"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("initWithCoder:"),function(self,_2c7,_2c8){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"initWithCoder:",_2c8); +if(self){ +_allowsColumnReordering=objj_msgSend(_2c8,"decodeBoolForKey:",_2be); +_allowsColumnResizing=objj_msgSend(_2c8,"decodeBoolForKey:",_2bf); +_allowsMultipleSelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2bc); +_allowsEmptySelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2bd); +_allowsColumnSelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2c0); +_selectionHighlightStyle=objj_msgSend(_2c8,"decodeIntForKey:",_2bb); +_columnAutoResizingStyle=objj_msgSend(_2c8,"decodeIntForKey:",_2c1); +_tableColumns=objj_msgSend(_2c8,"decodeObjectForKey:",_2b8)||[]; +objj_msgSend(_tableColumns,"makeObjectsPerformSelector:withObject:",sel_getUid("setTableView:"),self); +if(objj_msgSend(_2c8,"containsValueForKey:",_2b9)){ +_rowHeight=objj_msgSend(_2c8,"decodeFloatForKey:",_2b9); +}else{ +_rowHeight=23; +} +_intercellSpacing=objj_msgSend(_2c8,"decodeSizeForKey:",_2ba)||{width:3,height:2}; +objj_msgSend(self,"setGridColor:",objj_msgSend(_2c8,"decodeObjectForKey:",_2c2)); +_gridStyleMask=objj_msgSend(_2c8,"decodeIntForKey:",_2c3)||CPTableViewGridNone; +_usesAlternatingRowBackgroundColors=objj_msgSend(_2c8,"decodeObjectForKey:",_2c4); +objj_msgSend(self,"setAlternatingRowBackgroundColors:",objj_msgSend(_2c8,"decodeObjectForKey:",_2c5)); +_headerView=objj_msgSend(_2c8,"decodeObjectForKey:",_2b7); +_cornerView=objj_msgSend(_2c8,"decodeObjectForKey:",_2c6); +if(_cornerView){ +objj_msgSend(_cornerView,"setHidden:",NO); +} +_dataSource=objj_msgSend(_2c8,"decodeObjectForKey:",_2b5); +_delegate=objj_msgSend(_2c8,"decodeObjectForKey:",_2b6); +objj_msgSend(self,"_init"); +objj_msgSend(self,"viewWillMoveToSuperview:",objj_msgSend(self,"superview")); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_2c9,_2ca){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"encodeWithCoder:",_2ca); +objj_msgSend(_2ca,"encodeObject:forKey:",_dataSource,_2b5); +objj_msgSend(_2ca,"encodeObject:forKey:",_delegate,_2b6); +objj_msgSend(_2ca,"encodeFloat:forKey:",_rowHeight,_2b9); +objj_msgSend(_2ca,"encodeSize:forKey:",_intercellSpacing,_2ba); +objj_msgSend(_2ca,"encodeInt:forKey:",_selectionHighlightStyle,_2bb); +objj_msgSend(_2ca,"encodeInt:forKey:",_columnAutoResizingStyle,_2c1); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsMultipleSelection,_2bc); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsEmptySelection,_2bd); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnReordering,_2be); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnResizing,_2bf); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnSelection,_2c0); +objj_msgSend(_2ca,"encodeObject:forKey:",_tableColumns,_2b8); +objj_msgSend(_2ca,"encodeObject:forKey:",objj_msgSend(self,"gridColor"),_2c2); +objj_msgSend(_2ca,"encodeInt:forKey:",_gridStyleMask,_2c3); +objj_msgSend(_2ca,"encodeBool:forKey:",_usesAlternatingRowBackgroundColors,_2c4); +objj_msgSend(_2ca,"encodeObject:forKey:",objj_msgSend(self,"alternatingRowBackgroundColors"),_2c5); +objj_msgSend(_2ca,"encodeObject:forKey:",_cornerView,_2c6); +objj_msgSend(_2ca,"encodeObject:forKey:",_headerView,_2b7); +} +})]); +var _1d=objj_getClass("CPIndexSet"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("removeMatches:"),function(self,_2cb,_2cc){ +with(self){ +var _2cd=objj_msgSend(self,"firstIndex"); +var _2ce=MIN(_2cd,objj_msgSend(_2cc,"firstIndex")); +var _2cf=(_2ce==_2cd); +while(_2ce!=CPNotFound){ +var _2d0=(_2cf)?_2cc:self; +otherIndex=objj_msgSend(_2d0,"indexGreaterThanOrEqualToIndex:",_2ce); +if(otherIndex==_2ce){ +objj_msgSend(self,"removeIndex:",_2ce); +objj_msgSend(_2cc,"removeIndex:",_2ce); +} +_2ce=otherIndex; +_2cf=!_2cf; +} +} +})]); +var _1d=objj_allocateClassPair(CPView,"_CPDropOperationDrawingView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("dropOperation"),new objj_ivar("tableView"),new objj_ivar("currentRow"),new objj_ivar("isBlinking")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("dropOperation"),function(self,_2d1){ +with(self){ +return dropOperation; +} +}),new objj_method(sel_getUid("setDropOperation:"),function(self,_2d2,_2d3){ +with(self){ +dropOperation=_2d3; +} +}),new objj_method(sel_getUid("tableView"),function(self,_2d4){ +with(self){ +return tableView; +} +}),new objj_method(sel_getUid("setTableView:"),function(self,_2d5,_2d6){ +with(self){ +tableView=_2d6; +} +}),new objj_method(sel_getUid("currentRow"),function(self,_2d7){ +with(self){ +return currentRow; +} +}),new objj_method(sel_getUid("setCurrentRow:"),function(self,_2d8,_2d9){ +with(self){ +currentRow=_2d9; +} +}),new objj_method(sel_getUid("isBlinking"),function(self,_2da){ +with(self){ +return isBlinking; +} +}),new objj_method(sel_getUid("setIsBlinking:"),function(self,_2db,_2dc){ +with(self){ +isBlinking=_2dc; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_2dd,_2de){ +with(self){ +if(tableView._destinationDragStyle===CPTableViewDraggingDestinationFeedbackStyleNone||isBlinking){ +return; +} +var _2df=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"colorWithHexString:","4886ca")); +CGContextSetLineWidth(_2df,3); +if(currentRow===-1){ +CGContextStrokeRect(_2df,objj_msgSend(self,"bounds")); +}else{ +if(dropOperation===CPTableViewDropOn){ +var _2e0=objj_msgSend(tableView,"selectedRowIndexes"),_2e1={origin:{x:_2de.origin.x+2,y:_2de.origin.y+2},size:{width:_2de.size.width-4,height:_2de.size.height-5}}; +if(objj_msgSend(_2e0,"containsIndex:",currentRow)){ +CGContextSetLineWidth(_2df,2); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"whiteColor")); +}else{ +CGContextSetFillColor(_2df,objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",72/255,134/255,202/255,0.25)); +CGContextFillRoundedRectangleInRect(_2df,_2e1,8,YES,YES,YES,YES); +} +CGContextStrokeRoundedRectangleInRect(_2df,_2e1,8,YES,YES,YES,YES); +}else{ +if(dropOperation===CPTableViewDropAbove){ +objj_msgSend(self,"setFrameOrigin:",CGPointMake(_frame.origin.x,_frame.origin.y-8)); +var _2e0=objj_msgSend(tableView,"selectedRowIndexes"); +if(objj_msgSend(_2e0,"containsIndex:",currentRow-1)||objj_msgSend(_2e0,"containsIndex:",currentRow)){ +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"whiteColor")); +CGContextSetLineWidth(_2df,4); +CGContextStrokeEllipseInRect(_2df,{origin:{x:_2de.origin.x+4,y:_2de.origin.y+4},size:{width:8,height:8}}); +CGContextBeginPath(_2df); +CGContextMoveToPoint(_2df,10,_2de.origin.y+8); +CGContextAddLineToPoint(_2df,_2de.size.width-_2de.origin.y-8,_2de.origin.y+8); +CGContextClosePath(_2df); +CGContextStrokePath(_2df); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"colorWithHexString:","4886ca")); +CGContextSetLineWidth(_2df,3); +} +CGContextStrokeEllipseInRect(_2df,{origin:{x:_2de.origin.x+4,y:_2de.origin.y+4},size:{width:8,height:8}}); +CGContextBeginPath(_2df); +CGContextMoveToPoint(_2df,10,_2de.origin.y+8); +CGContextAddLineToPoint(_2df,_2de.size.width-_2de.origin.y-8,_2de.origin.y+8); +CGContextClosePath(_2df); +CGContextStrokePath(_2df); +} +} +} +} +}),new objj_method(sel_getUid("blink"),function(self,_2e2){ +with(self){ +if(dropOperation!==CPTableViewDropOn){ +return; +} +isBlinking=YES; +var _2e3=function(){ +objj_msgSend(self,"setHidden:",NO); +isBlinking=NO; +}; +var _2e4=function(){ +objj_msgSend(self,"setHidden:",YES); +isBlinking=YES; +}; +objj_msgSend(self,"setHidden:",YES); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.1,_2e3,NO); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.19,_2e4,NO); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.27,_2e3,NO); +} +})]); +var _1d=objj_allocateClassPair(CPView,"_CPColumnDragView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_lineColor")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("initWithLineColor:"),function(self,_2e5,_2e6){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPColumnDragView").super_class},"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +if(self){ +_lineColor=_2e6; +} +return self; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_2e7,_2e8){ +with(self){ +var _2e9=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(_2e9,_lineColor); +var _2ea=[{x:0.5,y:0},{x:0.5,y:_2e8.size.height}]; +CGContextStrokeLineSegments(_2e9,_2ea,2); +_2ea=[{x:_2e8.size.width-0.5,y:0},{x:_2e8.size.width-0.5,y:_2e8.size.height}]; +CGContextStrokeLineSegments(_2e9,_2ea,2); +} +})]); +p;11;CPTabView.jt;18841;@STATIC;1.0;i;13;CPImageView.ji;15;CPTabViewItem.ji;8;CPView.jt;18771; +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPTabViewItem.j",YES); +objj_executeFile("CPView.j",YES); +CPTopTabsBezelBorder=0; +CPNoTabsBezelBorder=4; +CPNoTabsLineBorder=5; +CPNoTabsNoBorder=6; +var _1=nil,_2=nil,_3=nil,_4=nil,_5=nil; +var _6=7,_7=7; +var _8=1,_9=2,_a=4,_b=8; +var _c=objj_allocateClassPair(CPView,"CPTabView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_labelsView"),new objj_ivar("_backgroundView"),new objj_ivar("_separatorView"),new objj_ivar("_auxiliaryView"),new objj_ivar("_contentView"),new objj_ivar("_tabViewItems"),new objj_ivar("_selectedTabViewItem"),new objj_ivar("_tabViewType"),new objj_ivar("_delegate"),new objj_ivar("_delegateSelectors")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_e,_f,_10){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPTabView").super_class},"initWithFrame:",_10); +if(_e){ +_tabViewType=CPTopTabsBezelBorder; +_tabViewItems=[]; +} +return _e; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_11,_12){ +with(_11){ +if(_tabViewType!=CPTopTabsBezelBorder||_labelsView){ +return; +} +objj_msgSend(_11,"_createBezelBorder"); +objj_msgSend(_11,"layoutSubviews"); +} +}),new objj_method(sel_getUid("_createBezelBorder"),function(_13,_14){ +with(_13){ +var _15=objj_msgSend(_13,"bounds"); +_labelsView=objj_msgSend(objj_msgSend(_CPTabLabelsView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_15),0)); +objj_msgSend(_labelsView,"setTabView:",_13); +objj_msgSend(_labelsView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_13,"addSubview:",_labelsView); +_backgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_backgroundView,"setBackgroundColor:",_5); +objj_msgSend(_backgroundView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_13,"addSubview:",_backgroundView); +_separatorView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_separatorView,"setBackgroundColor:",objj_msgSend(objj_msgSend(_13,"class"),"bezelBorderColor")); +objj_msgSend(_separatorView,"setAutoresizingMask:",CPViewWidthSizable|CPViewMaxYMargin); +objj_msgSend(_13,"addSubview:",_separatorView); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_16,_17){ +with(_16){ +if(_tabViewType==CPTopTabsBezelBorder){ +var _18=objj_msgSend(_16,"bounds"),_19=objj_msgSend(_CPTabLabelsView,"height"); +_18.origin.y+=_19; +_18.size.height-=_19; +objj_msgSend(_backgroundView,"setFrame:",_18); +var _1a=5; +if(_auxiliaryView){ +_1a=CGRectGetHeight(objj_msgSend(_auxiliaryView,"frame")); +objj_msgSend(_auxiliaryView,"setFrame:",CGRectMake(_6,_19,CGRectGetWidth(_18)-_6-_7,_1a)); +} +objj_msgSend(_separatorView,"setFrame:",CGRectMake(_6,_19+_1a,CGRectGetWidth(_18)-_6-_7,1)); +} +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_16,"contentRect")); +} +}),new objj_method(sel_getUid("addTabViewItem:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"insertTabViewItem:atIndex:",_1d,objj_msgSend(_tabViewItems,"count")); +} +}),new objj_method(sel_getUid("insertTabViewItem:atIndex:"),function(_1e,_1f,_20,_21){ +with(_1e){ +if(!_labelsView){ +objj_msgSend(_1e,"_createBezelBorder"); +} +objj_msgSend(_tabViewItems,"insertObject:atIndex:",_20,_21); +objj_msgSend(_labelsView,"tabView:didAddTabViewItem:",_1e,_20); +objj_msgSend(_20,"_setTabView:",_1e); +if(objj_msgSend(_tabViewItems,"count")==1){ +objj_msgSend(_1e,"selectFirstTabViewItem:",_1e); +} +if(_delegateSelectors&_b){ +objj_msgSend(_delegate,"tabViewDidChangeNumberOfTabViewItems:",_1e); +} +} +}),new objj_method(sel_getUid("removeTabViewItem:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_22,"indexOfTabViewItem:",_24); +objj_msgSend(_tabViewItems,"removeObjectIdenticalTo:",_24); +objj_msgSend(_labelsView,"tabView:didRemoveTabViewItemAtIndex:",_22,_25); +objj_msgSend(_24,"_setTabView:",nil); +if(_delegateSelectors&_b){ +objj_msgSend(_delegate,"tabViewDidChangeNumberOfTabViewItems:",_22); +} +} +}),new objj_method(sel_getUid("indexOfTabViewItem:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(_tabViewItems,"indexOfObjectIdenticalTo:",_28); +} +}),new objj_method(sel_getUid("indexOfTabViewItemWithIdentifier:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=0,_2d=objj_msgSend(_tabViewItems,"count"); +for(;_2c<_2d;++_2c){ +if(objj_msgSend(objj_msgSend(_tabViewItems[_2c],"identifier"),"isEqual:",_2b)){ +return _2c; +} +} +return _2c; +} +}),new objj_method(sel_getUid("numberOfTabViewItems"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_tabViewItems,"count"); +} +}),new objj_method(sel_getUid("tabViewItemAtIndex:"),function(_30,_31,_32){ +with(_30){ +return _tabViewItems[_32]; +} +}),new objj_method(sel_getUid("tabViewItems"),function(_33,_34){ +with(_33){ +return _tabViewItems; +} +}),new objj_method(sel_getUid("selectFirstTabViewItem:"),function(_35,_36,_37){ +with(_35){ +var _38=objj_msgSend(_tabViewItems,"count"); +if(_38){ +objj_msgSend(_35,"selectTabViewItemAtIndex:",0); +} +} +}),new objj_method(sel_getUid("selectLastTabViewItem:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=objj_msgSend(_tabViewItems,"count"); +if(_3c){ +objj_msgSend(_39,"selectTabViewItemAtIndex:",_3c-1); +} +} +}),new objj_method(sel_getUid("selectNextTabViewItem:"),function(_3d,_3e,_3f){ +with(_3d){ +if(!_selectedTabViewItem){ +return; +} +var _40=objj_msgSend(_3d,"indexOfTabViewItem:",_selectedTabViewItem),_41=objj_msgSend(_tabViewItems,"count"); +objj_msgSend(_3d,"selectTabViewItemAtIndex:",_40+1%_41); +} +}),new objj_method(sel_getUid("selectPreviousTabViewItem:"),function(_42,_43,_44){ +with(_42){ +if(!_selectedTabViewItem){ +return; +} +var _45=objj_msgSend(_42,"indexOfTabViewItem:",_selectedTabViewItem),_46=objj_msgSend(_tabViewItems,"count"); +objj_msgSend(_42,"selectTabViewItemAtIndex:",_45==0?_46:_45-1); +} +}),new objj_method(sel_getUid("selectTabViewItem:"),function(_47,_48,_49){ +with(_47){ +if((_delegateSelectors&_9)&&!objj_msgSend(_delegate,"tabView:shouldSelectTabViewItem:",_47,_49)){ +return; +} +if(_delegateSelectors&_a){ +objj_msgSend(_delegate,"tabView:willSelectTabViewItem:",_47,_49); +} +if(_selectedTabViewItem){ +_selectedTabViewItem._tabState=CPBackgroundTab; +objj_msgSend(_labelsView,"tabView:didChangeStateOfTabViewItem:",_47,_selectedTabViewItem); +} +_selectedTabViewItem=_49; +_selectedTabViewItem._tabState=CPSelectedTab; +var _4a=_contentView; +_contentView=objj_msgSend(_selectedTabViewItem,"view"); +if(_4a!==_contentView){ +objj_msgSend(_4a,"removeFromSuperview"); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_47,"addSubview:",_contentView); +} +var _4b=_auxiliaryView; +_auxiliaryView=objj_msgSend(_selectedTabViewItem,"auxiliaryView"); +if(_4b!==_auxiliaryView){ +objj_msgSend(_4b,"removeFromSuperview"); +objj_msgSend(_auxiliaryView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_47,"addSubview:",_auxiliaryView); +} +objj_msgSend(_labelsView,"tabView:didChangeStateOfTabViewItem:",_47,_selectedTabViewItem); +objj_msgSend(_47,"layoutSubviews"); +if(_delegateSelectors&_8){ +objj_msgSend(_delegate,"tabView:didSelectTabViewItem:",_47,_49); +} +} +}),new objj_method(sel_getUid("selectTabViewItemAtIndex:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"selectTabViewItem:",_tabViewItems[_4e]); +} +}),new objj_method(sel_getUid("selectedTabViewItem"),function(_4f,_50){ +with(_4f){ +return _selectedTabViewItem; +} +}),new objj_method(sel_getUid("setTabViewType:"),function(_51,_52,_53){ +with(_51){ +if(_tabViewType==_53){ +return; +} +_tabViewType=_53; +if(_tabViewType==CPNoTabsBezelBorder||_tabViewType==CPNoTabsLineBorder||_tabViewType==CPNoTabsNoBorder){ +objj_msgSend(_labelsView,"removeFromSuperview"); +}else{ +if(_labelsView&&!objj_msgSend(_labelsView,"superview")){ +objj_msgSend(_51,"addSubview:",_labelsView); +} +} +if(_tabViewType==CPNoTabsLineBorder||_tabViewType==CPNoTabsNoBorder){ +objj_msgSend(_backgroundView,"removeFromSuperview"); +}else{ +if(_backgroundView&&!objj_msgSend(_backgroundView,"superview")){ +objj_msgSend(_51,"addSubview:",_backgroundView); +} +} +objj_msgSend(_51,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabViewType"),function(_54,_55){ +with(_54){ +return _tabViewType; +} +}),new objj_method(sel_getUid("contentRect"),function(_56,_57){ +with(_56){ +var _58=CGRectMakeCopy(objj_msgSend(_56,"bounds")); +if(_tabViewType==CPTopTabsBezelBorder){ +var _59=objj_msgSend(_CPTabLabelsView,"height"),_5a=_auxiliaryView?CGRectGetHeight(objj_msgSend(_auxiliaryView,"frame")):5,_5b=1; +_58.origin.y+=_59+_5a+_5b; +_58.size.height-=_59+_5a+_5b*2; +_58.origin.x+=_6; +_58.size.width-=_6+_7; +} +return _58; +} +}),new objj_method(sel_getUid("delegate"),function(_5c,_5d){ +with(_5c){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_5e,_5f,_60){ +with(_5e){ +if(_delegate==_60){ +return; +} +_delegate=_60; +_delegateSelectors=0; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:shouldSelectTabViewItem:"))){ +_delegateSelectors|=_9; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:willSelectTabViewItem:"))){ +_delegateSelectors|=_a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:didSelectTabViewItem:"))){ +_delegateSelectors|=_8; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabViewDidChangeNumberOfTabViewItems:"))){ +_delegateSelectors|=_b; +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_61,_62,_63){ +with(_61){ +var _64=objj_msgSend(_labelsView,"convertPoint:fromView:",objj_msgSend(_63,"locationInWindow"),nil),_65=objj_msgSend(_labelsView,"representedTabViewItemAtPoint:",_64); +if(_65){ +objj_msgSend(_61,"selectTabViewItem:",_65); +} +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_66,_67){ +with(_66){ +if(_66!=CPTabView){ +return; +} +var _68=objj_msgSend(CPBundle,"bundleForClass:",_66),_69=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initByReferencingFile:size:","",CGSizeMake(7,0)),_6a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBackgroundCenter.png"),CGSizeMake(1,1)),_6b=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorderLeft.png"),CGSizeMake(7,1)),_6c=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorder.png"),CGSizeMake(1,1)),_6d=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorderRight.png"),CGSizeMake(7,1)); +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[_69,_69,_69,_6b,_6a,_6d,_6b,_6c,_6d])); +_4=objj_msgSend(CPColor,"colorWithPatternImage:",_6c); +} +}),new objj_method(sel_getUid("bezelBorderColor"),function(_6e,_6f){ +with(_6e){ +return _4; +} +})]); +var _70="CPTabViewItemsKey",_71="CPTabViewSelectedItemKey",_72="CPTabViewTypeKey",_73="CPTabViewDelegateKey"; +var _c=objj_getClass("CPTabView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPTabView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("initWithCoder:"),function(_74,_75,_76){ +with(_74){ +if(_74=objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPTabView").super_class},"initWithCoder:",_76)){ +_tabViewType=objj_msgSend(_76,"decodeIntForKey:",_72); +_tabViewItems=[]; +objj_msgSend(_74,"_createBezelBorder"); +var _77=objj_msgSend(_76,"decodeObjectForKey:",_70); +for(var i=0;_77&&i<_77.length;i++){ +objj_msgSend(_74,"insertTabViewItem:atIndex:",_77[i],i); +} +var _78=objj_msgSend(_76,"decodeObjectForKey:",_71); +if(_78){ +objj_msgSend(_74,"selectTabViewItem:",_78); +} +objj_msgSend(_74,"setDelegate:",objj_msgSend(_76,"decodeObjectForKey:",_73)); +} +return _74; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_79,_7a,_7b){ +with(_79){ +var _7c=_subviews; +_subviews=[]; +objj_msgSendSuper({receiver:_79,super_class:objj_getClass("CPTabView").super_class},"encodeWithCoder:",_7b); +_subviews=_7c; +objj_msgSend(_7b,"encodeObject:forKey:",_tabViewItems,_70); +objj_msgSend(_7b,"encodeObject:forKey:",_selectedTabViewItem,_71); +objj_msgSend(_7b,"encodeInt:forKey:",_tabViewType,_72); +objj_msgSend(_7b,"encodeConditionalObject:forKey:",_delegate,_73); +} +})]); +var _7d=nil,_7e=10,_7f=15; +var _c=objj_allocateClassPair(CPView,"_CPTabLabelsView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_tabView"),new objj_ivar("_tabLabels")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_80,_81,_82){ +with(_80){ +_80=objj_msgSendSuper({receiver:_80,super_class:objj_getClass("_CPTabLabelsView").super_class},"initWithFrame:",_82); +if(_80){ +_tabLabels=[]; +objj_msgSend(_80,"setBackgroundColor:",_7d); +objj_msgSend(_80,"setFrameSize:",CGSizeMake(CGRectGetWidth(_82),26)); +} +return _80; +} +}),new objj_method(sel_getUid("setTabView:"),function(_83,_84,_85){ +with(_83){ +_tabView=_85; +} +}),new objj_method(sel_getUid("tabView"),function(_86,_87){ +with(_86){ +return _tabView; +} +}),new objj_method(sel_getUid("tabView:didAddTabViewItem:"),function(_88,_89,_8a,_8b){ +with(_88){ +var _8c=objj_msgSend(objj_msgSend(_CPTabLabel,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_8c,"setTabViewItem:",_8b); +_tabLabels.push(_8c); +objj_msgSend(_88,"addSubview:",_8c); +objj_msgSend(_88,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabView:didRemoveTabViewItemAtIndex:"),function(_8d,_8e,_8f,_90){ +with(_8d){ +var _91=_tabLabels[_90]; +objj_msgSend(_tabLabels,"removeObjectAtIndex:",_90); +objj_msgSend(_91,"removeFromSuperview"); +objj_msgSend(_8d,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabView:didChangeStateOfTabViewItem:"),function(_92,_93,_94,_95){ +with(_92){ +objj_msgSend(_tabLabels[objj_msgSend(_94,"indexOfTabViewItem:",_95)],"setTabState:",objj_msgSend(_95,"tabState")); +} +}),new objj_method(sel_getUid("representedTabViewItemAtPoint:"),function(_96,_97,_98){ +with(_96){ +var _99=0,_9a=_tabLabels.length; +for(;_99<_9a;++_99){ +var _9b=_tabLabels[_99]; +if(CGRectContainsPoint(objj_msgSend(_9b,"frame"),_98)){ +return objj_msgSend(_9b,"tabViewItem"); +} +} +return nil; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_9c,_9d){ +with(_9c){ +var _9e=0,_9f=_tabLabels.length,_a0=((objj_msgSend(_9c,"bounds").size.width)-(_9f-1)*_7e-2*_7f)/_9f,x=_7f; +for(;_9e<_9f;++_9e){ +var _a1=_tabLabels[_9e],_a2={origin:{x:x,y:8},size:{width:_a0,height:18}}; +objj_msgSend(_a1,"setFrame:",_a2); +x=(_a2.origin.x+_a2.size.width)+_7e; +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_a3,_a4,_a5){ +with(_a3){ +if(CGSizeEqualToSize(objj_msgSend(_a3,"frame").size,_a5)){ +return; +} +objj_msgSendSuper({receiver:_a3,super_class:objj_getClass("_CPTabLabelsView").super_class},"setFrameSize:",_a5); +objj_msgSend(_a3,"layoutSubviews"); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_a6,_a7){ +with(_a6){ +if(_a6!=objj_msgSend(_CPTabLabelsView,"class")){ +return; +} +var _a8=objj_msgSend(CPBundle,"bundleForClass:",_a6); +_7d=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewLeft.png"),CGSizeMake(12,26)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewCenter.png"),CGSizeMake(1,26)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewRight.png"),CGSizeMake(12,26))],NO)); +} +}),new objj_method(sel_getUid("height"),function(_a9,_aa){ +with(_a9){ +return 26; +} +})]); +var _ab=nil,_ac=nil; +var _c=objj_allocateClassPair(CPView,"_CPTabLabel"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_tabViewItem"),new objj_ivar("_labelField")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_ad,_ae,_af){ +with(_ad){ +_ad=objj_msgSendSuper({receiver:_ad,super_class:objj_getClass("_CPTabLabel").super_class},"initWithFrame:",_af); +if(_ad){ +_labelField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_labelField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_labelField,"setFrame:",CGRectMake(5,0,CGRectGetWidth(_af)-10,20)); +objj_msgSend(_labelField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_labelField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",11)); +objj_msgSend(_ad,"addSubview:",_labelField); +objj_msgSend(_ad,"setTabState:",CPBackgroundTab); +} +return _ad; +} +}),new objj_method(sel_getUid("setTabState:"),function(_b0,_b1,_b2){ +with(_b0){ +objj_msgSend(_b0,"setBackgroundColor:",_b2==CPSelectedTab?_ac:_ab); +} +}),new objj_method(sel_getUid("setTabViewItem:"),function(_b3,_b4,_b5){ +with(_b3){ +_tabViewItem=_b5; +objj_msgSend(_b3,"update"); +} +}),new objj_method(sel_getUid("tabViewItem"),function(_b6,_b7){ +with(_b6){ +return _tabViewItem; +} +}),new objj_method(sel_getUid("update"),function(_b8,_b9){ +with(_b8){ +objj_msgSend(_labelField,"setStringValue:",objj_msgSend(_tabViewItem,"label")); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_ba,_bb){ +with(_ba){ +if(_ba!=objj_msgSend(_CPTabLabel,"class")){ +return; +} +var _bc=objj_msgSend(CPBundle,"bundleForClass:",_ba); +_ab=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundLeft.png"),CGSizeMake(6,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundCenter.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundRight.png"),CGSizeMake(6,18))],NO)); +_ac=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedLeft.png"),CGSizeMake(3,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedCenter.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedRight.png"),CGSizeMake(3,18))],NO)); +} +})]); +p;15;CPTabViewItem.jt;2872;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPView.jt;2807; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPSelectedTab=0; +CPBackgroundTab=1; +CPPressedTab=2; +var _1=objj_allocateClassPair(CPObject,"CPTabViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier"),new objj_ivar("_label"),new objj_ivar("_view"),new objj_ivar("_auxiliaryView"),new objj_ivar("_tabView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPTabViewItem").super_class},"init"); +if(_5){ +_identifier=_7; +} +return _5; +} +}),new objj_method(sel_getUid("setLabel:"),function(_8,_9,_a){ +with(_8){ +_label=_a; +} +}),new objj_method(sel_getUid("label"),function(_b,_c){ +with(_b){ +return _label; +} +}),new objj_method(sel_getUid("tabState"),function(_d,_e){ +with(_d){ +return _tabState; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_f,_10,_11){ +with(_f){ +_identifier=_11; +} +}),new objj_method(sel_getUid("identifier"),function(_12,_13){ +with(_12){ +return _identifier; +} +}),new objj_method(sel_getUid("setView:"),function(_14,_15,_16){ +with(_14){ +_view=_16; +} +}),new objj_method(sel_getUid("view"),function(_17,_18){ +with(_17){ +return _view; +} +}),new objj_method(sel_getUid("setAuxiliaryView:"),function(_19,_1a,_1b){ +with(_19){ +_auxiliaryView=_1b; +} +}),new objj_method(sel_getUid("auxiliaryView"),function(_1c,_1d){ +with(_1c){ +return _auxiliaryView; +} +}),new objj_method(sel_getUid("tabView"),function(_1e,_1f){ +with(_1e){ +return _tabView; +} +}),new objj_method(sel_getUid("_setTabView:"),function(_20,_21,_22){ +with(_20){ +_tabView=_22; +} +})]); +var _23="CPTabViewItemIdentifierKey",_24="CPTabViewItemLabelKey",_25="CPTabViewItemViewKey",_26="CPTabViewItemAuxViewKey"; +var _1=objj_getClass("CPTabViewItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTabViewItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_27,_28,_29){ +with(_27){ +_27=objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPTabViewItem").super_class},"init"); +if(_27){ +_identifier=objj_msgSend(_29,"decodeObjectForKey:",_23); +_label=objj_msgSend(_29,"decodeObjectForKey:",_24); +_view=objj_msgSend(_29,"decodeObjectForKey:",_25); +_auxiliaryView=objj_msgSend(_29,"decodeObjectForKey:",_26); +} +return _27; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2a,_2b,_2c){ +with(_2a){ +objj_msgSend(_2c,"encodeObject:forKey:",_identifier,_23); +objj_msgSend(_2c,"encodeObject:forKey:",_label,_24); +objj_msgSend(_2c,"encodeObject:forKey:",_view,_25); +objj_msgSend(_2c,"encodeObject:forKey:",_auxiliaryView,_26); +} +})]); +p;8;CPText.jt;265;@STATIC;1.0;i;8;CPView.jt;235; +objj_executeFile("CPView.j",YES); +CPEnterCharacter=""; +CPBackspaceCharacter="\b"; +CPTabCharacter="\t"; +CPNewlineCharacter="\n"; +CPFormFeedCharacter="\f"; +CPCarriageReturnCharacter="\r"; +CPBackTabCharacter=""; +CPDeleteCharacter=""; +p;13;CPTextField.jt;26042;@STATIC;1.0;i;11;CPControl.ji;17;CPStringDrawing.ji;17;CPCompatibility.ji;21;_CPImageAndTextView.jt;25936; +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPStringDrawing.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("_CPImageAndTextView.j",YES); +CPTextFieldSquareBezel=0; +CPTextFieldRoundedBezel=1; +CPTextFieldDidFocusNotification="CPTextFieldDidFocusNotification"; +CPTextFieldDidBlurNotification="CPTextFieldDidBlurNotification"; +var _1="•"; +var _2=objj_getClass("CPString"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPString\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("string"),function(_4,_5){ +with(_4){ +return _4; +} +})]); +CPTextFieldStateRounded=CPThemeState("rounded"); +CPTextFieldStatePlaceholder=CPThemeState("placeholder"); +var _2=objj_allocateClassPair(CPControl,"CPTextField"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_isEditing"),new objj_ivar("_isEditable"),new objj_ivar("_isSelectable"),new objj_ivar("_isSecure"),new objj_ivar("_drawsBackground"),new objj_ivar("_textFieldBackgroundColor"),new objj_ivar("_placeholderString"),new objj_ivar("_delegate"),new objj_ivar("_textDidChangeValue"),new objj_ivar("_bezelStyle"),new objj_ivar("_isBordered"),new objj_ivar("_controlSize")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPTextField").super_class},"initWithFrame:",_8); +if(_6){ +objj_msgSend(_6,"setStringValue:",""); +objj_msgSend(_6,"setPlaceholderString:",""); +_sendActionOn=CPKeyUpMask|CPKeyDownMask; +objj_msgSend(_6,"setValue:forThemeAttribute:",CPLeftTextAlignment,"alignment"); +} +return _6; +} +}),new objj_method(sel_getUid("setEditable:"),function(_9,_a,_b){ +with(_9){ +if(_isEditable===_b){ +return; +} +_isEditable=_b; +if(_b){ +_isSelectable=YES; +} +if(!_b&&objj_msgSend(objj_msgSend(_9,"window"),"firstResponder")===_9){ +objj_msgSend(objj_msgSend(_9,"window"),"makeFirstResponder:",nil); +} +} +}),new objj_method(sel_getUid("isEditable"),function(_c,_d){ +with(_c){ +return _isEditable; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_e,_f,_10){ +with(_e){ +objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPTextField").super_class},"setEnabled:",_10); +if(!_10&&objj_msgSend(objj_msgSend(_e,"window"),"firstResponder")===_e){ +objj_msgSend(objj_msgSend(_e,"window"),"makeFirstResponder:",nil); +} +} +}),new objj_method(sel_getUid("setSelectable:"),function(_11,_12,_13){ +with(_11){ +_isSelectable=_13; +} +}),new objj_method(sel_getUid("isSelectable"),function(_14,_15){ +with(_14){ +return _isSelectable; +} +}),new objj_method(sel_getUid("setSecure:"),function(_16,_17,_18){ +with(_16){ +_isSecure=_18; +} +}),new objj_method(sel_getUid("isSecure"),function(_19,_1a){ +with(_19){ +return _isSecure; +} +}),new objj_method(sel_getUid("setBezeled:"),function(_1b,_1c,_1d){ +with(_1b){ +if(_1d){ +objj_msgSend(_1b,"setThemeState:",CPThemeStateBezeled); +}else{ +objj_msgSend(_1b,"unsetThemeState:",CPThemeStateBezeled); +} +} +}),new objj_method(sel_getUid("isBezeled"),function(_1e,_1f){ +with(_1e){ +return objj_msgSend(_1e,"hasThemeState:",CPThemeStateBezeled); +} +}),new objj_method(sel_getUid("setBezelStyle:"),function(_20,_21,_22){ +with(_20){ +var _23=_22===CPTextFieldRoundedBezel; +if(_23){ +objj_msgSend(_20,"setThemeState:",CPTextFieldStateRounded); +}else{ +objj_msgSend(_20,"unsetThemeState:",CPTextFieldStateRounded); +} +} +}),new objj_method(sel_getUid("bezelStyle"),function(_24,_25){ +with(_24){ +if(objj_msgSend(_24,"hasThemeState:",CPTextFieldStateRounded)){ +return CPTextFieldRoundedBezel; +} +return CPTextFieldSquareBezel; +} +}),new objj_method(sel_getUid("setBordered:"),function(_26,_27,_28){ +with(_26){ +if(_28){ +objj_msgSend(_26,"setThemeState:",CPThemeStateBordered); +}else{ +objj_msgSend(_26,"unsetThemeState:",CPThemeStateBordered); +} +} +}),new objj_method(sel_getUid("isBordered"),function(_29,_2a){ +with(_29){ +return objj_msgSend(_29,"hasThemeState:",CPThemeStateBordered); +} +}),new objj_method(sel_getUid("setDrawsBackground:"),function(_2b,_2c,_2d){ +with(_2b){ +if(_drawsBackground==_2d){ +return; +} +_drawsBackground=_2d; +objj_msgSend(_2b,"setNeedsLayout"); +objj_msgSend(_2b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawsBackground"),function(_2e,_2f){ +with(_2e){ +return _drawsBackground; +} +}),new objj_method(sel_getUid("setTextFieldBackgroundColor:"),function(_30,_31,_32){ +with(_30){ +if(_textFieldBackgroundColor==_32){ +return; +} +_textFieldBackgroundColor=_32; +objj_msgSend(_30,"setNeedsLayout"); +objj_msgSend(_30,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("textFieldBackgroundColor"),function(_33,_34){ +with(_33){ +return _textFieldBackgroundColor; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_35,_36){ +with(_35){ +return objj_msgSend(_35,"isEditable")&&objj_msgSend(_35,"isEnabled"); +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(_37,_38){ +with(_37){ +objj_msgSend(_37,"setThemeState:",CPThemeStateEditing); +objj_msgSend(_37,"_updatePlaceholderState"); +objj_msgSend(_37,"setNeedsLayout"); +_isEditing=NO; +return YES; +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_39,_3a){ +with(_39){ +objj_msgSend(_39,"unsetThemeState:",CPThemeStateEditing); +objj_msgSend(_39,"_updatePlaceholderState"); +objj_msgSend(_39,"setNeedsLayout"); +if(_isEditing){ +_isEditing=NO; +objj_msgSend(_39,"textDidEndEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidEndEditingNotification,_39,nil)); +if(objj_msgSend(_39,"sendsActionOnEndEditing")){ +objj_msgSend(_39,"sendAction:to:",objj_msgSend(_39,"action"),objj_msgSend(_39,"target")); +} +} +objj_msgSend(_39,"textDidBlur:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPTextFieldDidBlurNotification,_39,nil)); +return YES; +} +}),new objj_method(sel_getUid("needsPanelToBecomeKey"),function(_3b,_3c){ +with(_3b){ +return YES; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_3d,_3e,_3f){ +with(_3d){ +if(objj_msgSend(_3d,"isEditable")&&objj_msgSend(_3d,"isEnabled")){ +return objj_msgSend(objj_msgSend(_3d,"window"),"makeFirstResponder:",_3d); +}else{ +if(objj_msgSend(_3d,"isSelectable")){ +if(document.attachEvent){ +CPTextFieldCachedSelectStartFunction=objj_msgSend(objj_msgSend(_3d,"window"),"platformWindow")._DOMBodyElement.onselectstart; +CPTextFieldCachedDragFunction=objj_msgSend(objj_msgSend(_3d,"window"),"platformWindow")._DOMBodyElement.ondrag; +objj_msgSend(objj_msgSend(_3d,"window"),"platformWindow")._DOMBodyElement.ondrag=function(){ +}; +objj_msgSend(objj_msgSend(_3d,"window"),"platformWindow")._DOMBodyElement.onselectstart=function(){ +}; +} +return objj_msgSend(objj_msgSend(objj_msgSend(_3f,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +}else{ +return objj_msgSend(objj_msgSend(_3d,"nextResponder"),"mouseDown:",_3f); +} +} +} +}),new objj_method(sel_getUid("mouseUp:"),function(_40,_41,_42){ +with(_40){ +if(!objj_msgSend(_40,"isSelectable")&&(!objj_msgSend(_40,"isEditable")||!objj_msgSend(_40,"isEnabled"))){ +objj_msgSend(objj_msgSend(_40,"nextResponder"),"mouseUp:",_42); +}else{ +if(objj_msgSend(_40,"isSelectable")){ +if(document.attachEvent){ +objj_msgSend(objj_msgSend(_40,"window"),"platformWindow")._DOMBodyElement.ondrag=CPTextFieldCachedDragFunction; +objj_msgSend(objj_msgSend(_40,"window"),"platformWindow")._DOMBodyElement.onselectstart=CPTextFieldCachedSelectStartFunction; +CPTextFieldCachedSelectStartFunction=nil; +CPTextFieldCachedDragFunction=nil; +} +return objj_msgSend(objj_msgSend(objj_msgSend(_42,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_43,_44,_45){ +with(_43){ +if(!objj_msgSend(_43,"isSelectable")&&(!objj_msgSend(_43,"isEditable")||!objj_msgSend(_43,"isEnabled"))){ +objj_msgSend(objj_msgSend(_43,"nextResponder"),"mouseDragged:",_45); +}else{ +if(objj_msgSend(_43,"isSelectable")){ +return objj_msgSend(objj_msgSend(objj_msgSend(_45,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("keyUp:"),function(_46,_47,_48){ +with(_46){ +var _49=objj_msgSend(_46,"stringValue"); +objj_msgSend(_46,"_setStringValue:",objj_msgSend(_46,"_inputElement").value); +if(_49!==objj_msgSend(_46,"stringValue")){ +if(!_isEditing){ +_isEditing=YES; +objj_msgSend(_46,"textDidBeginEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidBeginEditingNotification,_46,nil)); +} +objj_msgSend(_46,"textDidChange:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidChangeNotification,_46,nil)); +} +objj_msgSend(objj_msgSend(objj_msgSend(_46,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("keyDown:"),function(_4a,_4b,_4c){ +with(_4a){ +if(objj_msgSend(_4c,"keyCode")===CPReturnKeyCode){ +if(_isEditing){ +_isEditing=NO; +objj_msgSend(_4a,"textDidEndEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidEndEditingNotification,_4a,nil)); +} +objj_msgSend(_4a,"sendAction:to:",objj_msgSend(_4a,"action"),objj_msgSend(_4a,"target")); +objj_msgSend(_4a,"selectText:",nil); +objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +}else{ +if(objj_msgSend(_4c,"keyCode")===CPTabKeyCode){ +if(objj_msgSend(_4c,"modifierFlags")&CPShiftKeyMask){ +objj_msgSend(objj_msgSend(_4a,"window"),"selectPreviousKeyView:",_4a); +}else{ +objj_msgSend(objj_msgSend(_4a,"window"),"selectNextKeyView:",_4a); +} +if(objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"firstResponder"),"respondsToSelector:",sel_getUid("selectText:"))){ +objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"firstResponder"),"selectText:",_4a); +} +objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("textDidBlur:"),function(_4d,_4e,_4f){ +with(_4d){ +if(objj_msgSend(_4f,"object")!=_4d){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotification:",_4f); +} +}),new objj_method(sel_getUid("textDidFocus:"),function(_50,_51,_52){ +with(_50){ +if(objj_msgSend(_52,"object")!=_50){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotification:",_52); +} +}),new objj_method(sel_getUid("objectValue"),function(_53,_54){ +with(_53){ +return objj_msgSendSuper({receiver:_53,super_class:objj_getClass("CPTextField").super_class},"objectValue"); +} +}),new objj_method(sel_getUid("_setStringValue:"),function(_55,_56,_57){ +with(_55){ +objj_msgSend(_55,"willChangeValueForKey:","objectValue"); +objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPTextField").super_class},"setObjectValue:",String(_57)); +objj_msgSend(_55,"_updatePlaceholderState"); +objj_msgSend(_55,"didChangeValueForKey:","objectValue"); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_58,_59,_5a){ +with(_58){ +objj_msgSendSuper({receiver:_58,super_class:objj_getClass("CPTextField").super_class},"setObjectValue:",_5a); +objj_msgSend(_58,"_updatePlaceholderState"); +} +}),new objj_method(sel_getUid("_updatePlaceholderState"),function(_5b,_5c){ +with(_5b){ +var _5d=objj_msgSend(_5b,"stringValue"); +if((!_5d||_5d.length===0)&&!objj_msgSend(_5b,"hasThemeState:",CPThemeStateEditing)){ +objj_msgSend(_5b,"setThemeState:",CPTextFieldStatePlaceholder); +}else{ +objj_msgSend(_5b,"unsetThemeState:",CPTextFieldStatePlaceholder); +} +} +}),new objj_method(sel_getUid("setPlaceholderString:"),function(_5e,_5f,_60){ +with(_5e){ +if(_placeholderString===_60){ +return; +} +_placeholderString=_60; +if(objj_msgSend(_5e,"hasThemeState:",CPTextFieldStatePlaceholder)){ +objj_msgSend(_5e,"setNeedsLayout"); +objj_msgSend(_5e,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("placeholderString"),function(_61,_62){ +with(_61){ +return _placeholderString; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_63,_64){ +with(_63){ +var _65=objj_msgSend((objj_msgSend(_63,"stringValue")||" "),"sizeWithFont:",objj_msgSend(_63,"currentValueForThemeAttribute:","font")),_66=objj_msgSend(_63,"currentValueForThemeAttribute:","content-inset"),_67=objj_msgSend(_63,"currentValueForThemeAttribute:","min-size"),_68=objj_msgSend(_63,"currentValueForThemeAttribute:","max-size"); +_65.width=MAX(_65.width+_66.left+_66.right,_67.width); +_65.height=MAX(_65.height+_66.top+_66.bottom,_67.height); +if(_68.width>=0){ +_65.width=MIN(_65.width,_68.width); +} +if(_68.height>=0){ +_65.height=MIN(_65.height,_68.height); +} +if(objj_msgSend(_63,"isEditable")){ +_65.width=CGRectGetWidth(objj_msgSend(_63,"frame")); +} +objj_msgSend(_63,"setFrameSize:",_65); +} +}),new objj_method(sel_getUid("selectText:"),function(_69,_6a,_6b){ +with(_69){ +} +}),new objj_method(sel_getUid("copy:"),function(_6c,_6d,_6e){ +with(_6c){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +var _6f=objj_msgSend(_6c,"selectedRange"); +if(_6f.length<1){ +return; +} +var _70=objj_msgSend(CPPasteboard,"generalPasteboard"),_71=objj_msgSend(_6c,"stringValue"),_72=objj_msgSend(_71,"substringWithRange:",_6f); +objj_msgSend(_70,"declareTypes:owner:",[CPStringPboardType],nil); +objj_msgSend(_70,"setString:forType:",_72,CPStringPboardType); +} +} +}),new objj_method(sel_getUid("cut:"),function(_73,_74,_75){ +with(_73){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_73,"copy:",_75); +objj_msgSend(_73,"deleteBackward:",_75); +} +} +}),new objj_method(sel_getUid("paste:"),function(_76,_77,_78){ +with(_76){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +var _79=objj_msgSend(CPPasteboard,"generalPasteboard"); +if(!objj_msgSend(objj_msgSend(_79,"types"),"containsObject:",CPStringPboardType)){ +return; +} +objj_msgSend(_76,"deleteBackward:",_78); +var _7a=objj_msgSend(_76,"selectedRange"),_7b=objj_msgSend(_76,"stringValue"),_7c=objj_msgSend(_79,"stringForType:",CPStringPboardType),_7d=objj_msgSend(_7b,"stringByReplacingCharactersInRange:withString:",_7a,_7c); +objj_msgSend(_76,"setStringValue:",_7d); +objj_msgSend(_76,"setSelectedRange:",CPMakeRange(_7a.location+_7c.length,0)); +} +} +}),new objj_method(sel_getUid("selectedRange"),function(_7e,_7f){ +with(_7e){ +if(objj_msgSend(objj_msgSend(_7e,"window"),"firstResponder")!==_7e){ +return CPMakeRange(0,0); +} +try{ +var _80=objj_msgSend(_7e,"_inputElement"),_81=_80.selectionStart,_82=_80.selectionEnd; +if(objj_msgSend(_81,"isKindOfClass:",CPNumber)){ +return CPMakeRange(_81,_82-_81); +} +var _83=_80.ownerDocument||_80.document,_84=_83.selection.createRange(),_85=_80.createTextRange(); +if(_85.inRange(_84)){ +_85.setEndPoint("EndToStart",_84); +return CPMakeRange(_85.text.length,_84.text.length); +} +} +catch(e){ +} +return CGMakeRange(0,0); +} +}),new objj_method(sel_getUid("setSelectedRange:"),function(_86,_87,_88){ +with(_86){ +if(!objj_msgSend(objj_msgSend(_86,"window"),"firstResponder")===_86){ +return; +} +var _89=objj_msgSend(_86,"_inputElement"); +try{ +if(objj_msgSend(_89.selectionStart,"isKindOfClass:",CPNumber)){ +_89.selectionStart=_88.location; +_89.selectionEnd=CPMaxRange(_88); +}else{ +var _8a=_89.ownerDocument||_89.document,_8b=_8a.selection.createRange(),_8c=_89.createTextRange(); +if(_8c.inRange(_8b)){ +_8c.collapse(true); +_8c.move("character",_88.location); +_8c.moveEnd("character",_88.length); +_8c.select(); +} +} +} +catch(e){ +} +} +}),new objj_method(sel_getUid("selectAll:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8d,"selectText:",_8f); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(_90,_91,_92){ +with(_90){ +var _93=objj_msgSend(_90,"selectedRange"),_94=objj_msgSend(_90,"stringValue"),_95=objj_msgSend(_94,"stringByReplacingCharactersInRange:withString:",_93,""); +objj_msgSend(_90,"setStringValue:",_95); +objj_msgSend(_90,"setSelectedRange:",CPMakeRange(_93.location,0)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_96,_97,_98){ +with(_96){ +var _99=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_delegate){ +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPControlTextDidBeginEditingNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPControlTextDidChangeNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPControlTextDidEndEditingNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPTextFieldDidFocusNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPTextFieldDidBlurNotification,_96); +} +_delegate=_98; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidBeginEditing:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidBeginEditing:"),CPControlTextDidBeginEditingNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidChange:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidChange:"),CPControlTextDidChangeNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidEndEditing:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidEndEditing:"),CPControlTextDidEndEditingNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidFocus:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidFocus:"),CPTextFieldDidFocusNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidBlur:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidBlur:"),CPTextFieldDidBlurNotification,_96); +} +} +}),new objj_method(sel_getUid("delegate"),function(_9a,_9b){ +with(_9a){ +return _delegate; +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_9c,_9d,_9e){ +with(_9c){ +var _9f=objj_msgSend(_9c,"currentValueForThemeAttribute:","content-inset"); +if(!_9f){ +return _9e; +} +_9e.origin.x+=_9f.left; +_9e.origin.y+=_9f.top; +_9e.size.width-=_9f.left+_9f.right; +_9e.size.height-=_9f.top+_9f.bottom; +return _9e; +} +}),new objj_method(sel_getUid("bezelRectForBounds:"),function(_a0,_a1,_a2){ +with(_a0){ +var _a3=objj_msgSend(_a0,"currentValueForThemeAttribute:","bezel-inset"); +if(((_a3).top===0&&(_a3).right===0&&(_a3).bottom===0&&(_a3).left===0)){ +return _a2; +} +_a2.origin.x+=_a3.left; +_a2.origin.y+=_a3.top; +_a2.size.width-=_a3.left+_a3.right; +_a2.size.height-=_a3.top+_a3.bottom; +return _a2; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_a4,_a5,_a6){ +with(_a4){ +if(_a6==="bezel-view"){ +return objj_msgSend(_a4,"bezelRectForBounds:",objj_msgSend(_a4,"bounds")); +}else{ +if(_a6==="content-view"){ +return objj_msgSend(_a4,"contentRectForBounds:",objj_msgSend(_a4,"bounds")); +} +} +return objj_msgSendSuper({receiver:_a4,super_class:objj_getClass("CPTextField").super_class},"rectForEphemeralSubviewNamed:",_a6); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_a7,_a8,_a9){ +with(_a7){ +if(_a9==="bezel-view"){ +var _aa=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_aa,"setHitTests:",NO); +return _aa; +}else{ +var _aa=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_aa,"setHitTests:",NO); +return _aa; +} +return objj_msgSendSuper({receiver:_a7,super_class:objj_getClass("CPTextField").super_class},"createEphemeralSubviewNamed:",_a9); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_ab,_ac){ +with(_ab){ +var _ad=objj_msgSend(_ab,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","bezel-view",CPWindowBelow,"content-view"); +if(_ad){ +objj_msgSend(_ad,"setBackgroundColor:",objj_msgSend(_ab,"currentValueForThemeAttribute:","bezel-color")); +} +var _ae=objj_msgSend(_ab,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","content-view",CPWindowAbove,"bezel-view"); +if(_ae){ +objj_msgSend(_ae,"setHidden:",objj_msgSend(_ab,"hasThemeState:",CPThemeStateEditing)); +var _af=""; +if(objj_msgSend(_ab,"hasThemeState:",CPTextFieldStatePlaceholder)){ +_af=objj_msgSend(_ab,"placeholderString"); +}else{ +_af=objj_msgSend(_ab,"stringValue"); +if(objj_msgSend(_ab,"isSecure")){ +_af=_b0(_af); +} +} +objj_msgSend(_ae,"setText:",_af); +objj_msgSend(_ae,"setTextColor:",objj_msgSend(_ab,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_ae,"setFont:",objj_msgSend(_ab,"currentValueForThemeAttribute:","font")); +objj_msgSend(_ae,"setAlignment:",objj_msgSend(_ab,"currentValueForThemeAttribute:","alignment")); +objj_msgSend(_ae,"setVerticalAlignment:",objj_msgSend(_ab,"currentValueForThemeAttribute:","vertical-alignment")); +objj_msgSend(_ae,"setLineBreakMode:",objj_msgSend(_ab,"currentValueForThemeAttribute:","line-break-mode")); +objj_msgSend(_ae,"setTextShadowColor:",objj_msgSend(_ab,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_ae,"setTextShadowOffset:",objj_msgSend(_ab,"currentValueForThemeAttribute:","text-shadow-offset")); +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_b1,_b2,_b3,_b4){ +with(_b1){ +var _b5=_b4.length,_b6=objj_msgSend(_b4[0],"valueForKeyPath:",_b3); +objj_msgSend(_b1,"setStringValue:",_b6); +objj_msgSend(_b1,"setPlaceholderString:",""); +while(_b5-->1){ +if(_b6!==objj_msgSend(_b4[_b5],"valueForKeyPath:",_b3)){ +objj_msgSend(_b1,"setPlaceholderString:","Multiple Values"); +objj_msgSend(_b1,"setStringValue:",""); +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:"),function(_b7,_b8,_b9,_ba,_bb){ +with(_b7){ +return objj_msgSend(_b7,"textFieldWithStringValue:placeholder:width:theme:",_b9,_ba,_bb,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:theme:"),function(_bc,_bd,_be,_bf,_c0,_c1){ +with(_bc){ +var _c2=objj_msgSend(objj_msgSend(_bc,"alloc"),"initWithFrame:",CGRectMake(0,0,_c0,29)); +objj_msgSend(_c2,"setTheme:",_c1); +objj_msgSend(_c2,"setStringValue:",_be); +objj_msgSend(_c2,"setPlaceholderString:",_bf); +objj_msgSend(_c2,"setBordered:",YES); +objj_msgSend(_c2,"setBezeled:",YES); +objj_msgSend(_c2,"setEditable:",YES); +objj_msgSend(_c2,"sizeToFit"); +return _c2; +} +}),new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:"),function(_c3,_c4,_c5,_c6,_c7){ +with(_c3){ +return objj_msgSend(_c3,"roundedTextFieldWithStringValue:placeholder:width:theme:",_c5,_c6,_c7,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:theme:"),function(_c8,_c9,_ca,_cb,_cc,_cd){ +with(_c8){ +var _ce=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(0,0,_cc,29)); +objj_msgSend(_ce,"setTheme:",_cd); +objj_msgSend(_ce,"setStringValue:",_ca); +objj_msgSend(_ce,"setPlaceholderString:",_cb); +objj_msgSend(_ce,"setBezelStyle:",CPTextFieldRoundedBezel); +objj_msgSend(_ce,"setBordered:",YES); +objj_msgSend(_ce,"setBezeled:",YES); +objj_msgSend(_ce,"setEditable:",YES); +objj_msgSend(_ce,"sizeToFit"); +return _ce; +} +}),new objj_method(sel_getUid("labelWithTitle:"),function(_cf,_d0,_d1){ +with(_cf){ +return objj_msgSend(_cf,"labelWithTitle:theme:",_d1,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("labelWithTitle:theme:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +var _d6=objj_msgSend(objj_msgSend(_d2,"alloc"),"init"); +objj_msgSend(_d6,"setStringValue:",_d4); +objj_msgSend(_d6,"sizeToFit"); +return _d6; +} +}),new objj_method(sel_getUid("themeClass"),function(_d7,_d8){ +with(_d7){ +return "textfield"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_d9,_da){ +with(_d9){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[{top:(0),right:(0),bottom:(0),left:(0)},{top:(2),right:(2),bottom:(2),left:(2)},objj_msgSend(CPNull,"null")],["bezel-inset","content-inset","bezel-color"]); +} +})]); +var _b0=function(_db){ +if(!_db){ +return ""; +} +return Array(_db.length+1).join(_1); +}; +var _dc="CPTextFieldIsEditableKey",_dd="CPTextFieldIsSelectableKey",_de="CPTextFieldIsBorderedKey",_df="CPTextFieldIsBezeledKey",_e0="CPTextFieldBezelStyleKey",_e1="CPTextFieldDrawsBackgroundKey",_e2="CPTextFieldLineBreakModeKey",_e3="CPTextFieldAlignmentKey",_e4="CPTextFieldBackgroundColorKey",_e5="CPTextFieldPlaceholderStringKey"; +var _2=objj_getClass("CPTextField"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPTextField\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_e6,_e7,_e8){ +with(_e6){ +_e6=objj_msgSendSuper({receiver:_e6,super_class:objj_getClass("CPTextField").super_class},"initWithCoder:",_e8); +if(_e6){ +objj_msgSend(_e6,"setEditable:",objj_msgSend(_e8,"decodeBoolForKey:",_dc)); +objj_msgSend(_e6,"setSelectable:",objj_msgSend(_e8,"decodeBoolForKey:",_dd)); +objj_msgSend(_e6,"setDrawsBackground:",objj_msgSend(_e8,"decodeBoolForKey:",_e1)); +objj_msgSend(_e6,"setTextFieldBackgroundColor:",objj_msgSend(_e8,"decodeObjectForKey:",_e4)); +objj_msgSend(_e6,"setLineBreakMode:",objj_msgSend(_e8,"decodeIntForKey:",_e2)); +objj_msgSend(_e6,"setAlignment:",objj_msgSend(_e8,"decodeIntForKey:",_e3)); +objj_msgSend(_e6,"setPlaceholderString:",objj_msgSend(_e8,"decodeObjectForKey:",_e5)); +} +return _e6; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e9,_ea,_eb){ +with(_e9){ +objj_msgSendSuper({receiver:_e9,super_class:objj_getClass("CPTextField").super_class},"encodeWithCoder:",_eb); +objj_msgSend(_eb,"encodeBool:forKey:",_isEditable,_dc); +objj_msgSend(_eb,"encodeBool:forKey:",_isSelectable,_dd); +objj_msgSend(_eb,"encodeBool:forKey:",_drawsBackground,_e1); +objj_msgSend(_eb,"encodeObject:forKey:",_textFieldBackgroundColor,_e4); +objj_msgSend(_eb,"encodeInt:forKey:",objj_msgSend(_e9,"lineBreakMode"),_e2); +objj_msgSend(_eb,"encodeInt:forKey:",objj_msgSend(_e9,"alignment"),_e3); +objj_msgSend(_eb,"encodeObject:forKey:",_placeholderString,_e5); +} +})]); +p;9;CPTheme.jt;12925;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;30;Foundation/CPKeyedUnarchiver.jt;12818; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +var _1={},_2=nil,_3=nil; +var _4=objj_allocateClassPair(CPObject,"CPTheme"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_attributes")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithName:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPTheme").super_class},"init"); +if(_6){ +_name=_8; +_attributes=objj_msgSend(CPDictionary,"dictionary"); +_1[_name]=_6; +} +return _6; +} +}),new objj_method(sel_getUid("name"),function(_9,_a){ +with(_9){ +return _name; +} +}),new objj_method(sel_getUid("classNames"),function(_b,_c){ +with(_b){ +return objj_msgSend(_attributes,"allKeys"); +} +}),new objj_method(sel_getUid("attributesForClass:"),function(_d,_e,_f){ +with(_d){ +if(!_f){ +return nil; +} +var _10=nil; +if(objj_msgSend(_f,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +var _11=CPClassFromString(_f); +if(_11){ +_f=_11; +}else{ +_10=_f; +} +} +if(!_10){ +if(objj_msgSend(_f,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +if(objj_msgSend(_f,"respondsToSelector:",sel_getUid("themeClass"))){ +_10=objj_msgSend(_f,"themeClass"); +}else{ +return nil; +} +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"aClass must be a class object or a string."); +} +} +return objj_msgSend(_attributes,"objectForKey:",_10); +} +}),new objj_method(sel_getUid("attributeNamesForClass:"),function(_12,_13,_14){ +with(_12){ +var _15=objj_msgSend(_12,"attributesForClass:",_14); +if(_15){ +return objj_msgSend(_15,"allKeys"); +}else{ +return objj_msgSend(CPArray,"array"); +} +} +}),new objj_method(sel_getUid("attributeWithName:forClass:"),function(_16,_17,_18,_19){ +with(_16){ +var _1a=objj_msgSend(_16,"attributesForClass:",_19); +if(!_1a){ +return nil; +} +return objj_msgSend(_1a,"objectForKey:",_18); +} +}),new objj_method(sel_getUid("valueForAttributeWithName:forClass:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +return objj_msgSend(_1b,"valueForAttributeWithName:inState:forClass:",_1d,CPThemeStateNormal,_1e); +} +}),new objj_method(sel_getUid("valueForAttributeWithName:inState:forClass:"),function(_1f,_20,_21,_22,_23){ +with(_1f){ +var _24=objj_msgSend(_1f,"attributeWithName:forClass:",_21,_23); +if(!_24){ +return nil; +} +return objj_msgSend(_24,"valueForState:",_22); +} +}),new objj_method(sel_getUid("takeThemeFromObject:"),function(_25,_26,_27){ +with(_25){ +var _28=objj_msgSend(_27,"_themeAttributeDictionary"),_29=nil,_2a=objj_msgSend(_28,"keyEnumerator"),_2b=objj_msgSend(objj_msgSend(_27,"class"),"themeClass"); +while(_29=objj_msgSend(_2a,"nextObject")){ +objj_msgSend(_25,"_recordAttribute:forClass:",objj_msgSend(_28,"objectForKey:",_29),_2b); +} +} +}),new objj_method(sel_getUid("_recordAttribute:forClass:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +if(!objj_msgSend(_2e,"hasValues")){ +return; +} +var _30=objj_msgSend(_attributes,"objectForKey:",_2f); +if(!_30){ +_30=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_attributes,"setObject:forKey:",_30,_2f); +} +var _31=objj_msgSend(_2e,"name"),_32=objj_msgSend(_30,"objectForKey:",_31); +if(_32){ +objj_msgSend(_30,"setObject:forKey:",objj_msgSend(_32,"attributeMergedWithAttribute:",_2e),_31); +}else{ +objj_msgSend(_30,"setObject:forKey:",_2e,_31); +} +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("setDefaultTheme:"),function(_33,_34,_35){ +with(_33){ +_2=_35; +} +}),new objj_method(sel_getUid("defaultTheme"),function(_36,_37){ +with(_36){ +return _2; +} +}),new objj_method(sel_getUid("setDefaultHudTheme:"),function(_38,_39,_3a){ +with(_38){ +_3=_3a; +} +}),new objj_method(sel_getUid("defaultHudTheme"),function(_3b,_3c){ +with(_3b){ +if(!_3){ +_3=objj_msgSend(CPTheme,"themeNamed:",objj_msgSend(objj_msgSend(_3b,"defaultTheme"),"name")+"-HUD"); +} +return _3; +} +}),new objj_method(sel_getUid("themeNamed:"),function(_3d,_3e,_3f){ +with(_3d){ +return _1[_3f]; +} +})]); +var _40="CPThemeNameKey",_41="CPThemeAttributesKey"; +var _4=objj_getClass("CPTheme"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPTheme\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_42,_43,_44){ +with(_42){ +_42=objj_msgSendSuper({receiver:_42,super_class:objj_getClass("CPTheme").super_class},"init"); +if(_42){ +_name=objj_msgSend(_44,"decodeObjectForKey:",_40); +_attributes=objj_msgSend(_44,"decodeObjectForKey:",_41); +_1[_name]=_42; +} +return _42; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_47,"encodeObject:forKey:",_name,_40); +objj_msgSend(_47,"encodeObject:forKey:",_attributes,_41); +} +})]); +var _4=objj_allocateClassPair(CPKeyedUnarchiver,"_CPThemeKeyedUnarchiver"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_bundle")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initForReadingWithData:bundle:"),function(_48,_49,_4a,_4b){ +with(_48){ +_48=objj_msgSendSuper({receiver:_48,super_class:objj_getClass("_CPThemeKeyedUnarchiver").super_class},"initForReadingWithData:",_4a); +if(_48){ +_bundle=_4b; +} +return _48; +} +}),new objj_method(sel_getUid("bundle"),function(_4c,_4d){ +with(_4c){ +return _bundle; +} +}),new objj_method(sel_getUid("awakenCustomResources"),function(_4e,_4f){ +with(_4e){ +return YES; +} +})]); +var _50={},_51={},_52=0; +CPThemeState=function(_53){ +var _54=_50[_53]; +if(_54===undefined){ +if(_53.indexOf("+")===-1){ +_54=1<<_52++; +}else{ +var _54=0,_55=_53.split("+"),_56=_55.length; +while(_56--){ +var _57=_55[_56],_58=_50[_57]; +if(_58===undefined){ +_58=1<<_52++; +_50[_57]=_58; +_51[_58]=_57; +} +_54|=_58; +} +} +_50[_53]=_54; +_51[_54]=_53; +} +return _54; +}; +CPThemeStateName=function(_59){ +var _5a=_51[_59]; +if(_5a!==undefined){ +return _5a; +} +if(!(_59&(_59-1))){ +return ""; +} +var _5b=1,_5a=""; +for(;_5b<_59;_5b<<=1){ +if(_59&_5b){ +_5a+=(_5a.length===0?"":"+")+_51[_5b]; +} +} +_51[_59]=_5a; +return _5a; +}; +_51[0]="normal"; +CPThemeStateNormal=_50["normal"]=0; +CPThemeStateDisabled=CPThemeState("disabled"); +CPThemeStateHighlighted=CPThemeState("highlighted"); +CPThemeStateSelected=CPThemeState("selected"); +CPThemeStateTableDataView=CPThemeState("tableDataView"); +CPThemeStateSelectedDataView=CPThemeStateSelectedTableDataView=CPThemeState("selectedTableDataView"); +CPThemeStateBezeled=CPThemeState("bezeled"); +CPThemeStateBordered=CPThemeState("bordered"); +CPThemeStateEditable=CPThemeState("editable"); +CPThemeStateEditing=CPThemeState("editing"); +CPThemeStateVertical=CPThemeState("vertical"); +CPThemeStateDefault=CPThemeState("default"); +CPThemeStateCircular=CPThemeState("circular"); +var _4=objj_allocateClassPair(CPObject,"_CPThemeAttribute"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_defaultValue"),new objj_ivar("_values"),new objj_ivar("_cache"),new objj_ivar("_parentAttribute")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("values"),function(_5c,_5d){ +with(_5c){ +return _values; +} +}),new objj_method(sel_getUid("initWithName:defaultValue:"),function(_5e,_5f,_60,_61){ +with(_5e){ +_5e=objj_msgSendSuper({receiver:_5e,super_class:objj_getClass("_CPThemeAttribute").super_class},"init"); +if(_5e){ +_cache={}; +_name=_60; +_defaultValue=_61; +_values=objj_msgSend(CPDictionary,"dictionary"); +} +return _5e; +} +}),new objj_method(sel_getUid("name"),function(_62,_63){ +with(_62){ +return _name; +} +}),new objj_method(sel_getUid("defaultValue"),function(_64,_65){ +with(_64){ +return _defaultValue; +} +}),new objj_method(sel_getUid("hasValues"),function(_66,_67){ +with(_66){ +return objj_msgSend(_values,"count")>0; +} +}),new objj_method(sel_getUid("isTrivial"),function(_68,_69){ +with(_68){ +return (objj_msgSend(_values,"count")===1)&&(Number(objj_msgSend(_values,"allKeys")[0])===CPThemeStateNormal); +} +}),new objj_method(sel_getUid("setValue:"),function(_6a,_6b,_6c){ +with(_6a){ +_cache={}; +if(_6c===undefined||_6c===nil){ +_values=objj_msgSend(CPDictionary,"dictionary"); +}else{ +_values=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_6c,String(CPThemeStateNormal)); +} +} +}),new objj_method(sel_getUid("setValue:forState:"),function(_6d,_6e,_6f,_70){ +with(_6d){ +_cache={}; +if((_6f===undefined)||(_6f===nil)){ +objj_msgSend(_values,"removeObjectForKey:",String(_70)); +}else{ +objj_msgSend(_values,"setObject:forKey:",_6f,String(_70)); +} +} +}),new objj_method(sel_getUid("value"),function(_71,_72){ +with(_71){ +return objj_msgSend(_71,"valueForState:",CPThemeStateNormal); +} +}),new objj_method(sel_getUid("valueForState:"),function(_73,_74,_75){ +with(_73){ +var _76=_cache[_75]; +if(_76!==undefined){ +return _76; +} +_76=objj_msgSend(_values,"objectForKey:",String(_75)); +if((_76===undefined||_76===nil)&&_75!==CPThemeStateNormal){ +if(_75&(_75-1)){ +var _77=0,_78=objj_msgSend(_values,"allKeys"),_79=_78.length; +while(_79--){ +var _7a=Number(_78[_79]); +if((_7a&_75)===_7a){ +var _7b=_7c[_7a]; +if(_7b===undefined){ +_7b=_7d(_7a); +} +if(_7b>_77){ +_77=_7b; +_76=objj_msgSend(_values,"objectForKey:",String(_7a)); +} +} +} +} +if(_76===undefined||_76===nil){ +_76=objj_msgSend(_values,"objectForKey:",String(CPThemeStateNormal)); +} +} +if(_76===undefined||_76===nil){ +_76=objj_msgSend(_parentAttribute,"valueForState:",_75); +} +if(_76===undefined||_76===nil){ +_76=_defaultValue; +} +_cache[_75]=_76; +return _76; +} +}),new objj_method(sel_getUid("setParentAttribute:"),function(_7e,_7f,_80){ +with(_7e){ +if(_parentAttribute===_80){ +return; +} +_cache={}; +_parentAttribute=_80; +} +}),new objj_method(sel_getUid("attributeMergedWithAttribute:"),function(_81,_82,_83){ +with(_81){ +var _84=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_name,_defaultValue); +_84._values=objj_msgSend(_values,"copy"); +objj_msgSend(_84._values,"addEntriesFromDictionary:",_83._values); +return _84; +} +})]); +var _4=objj_getClass("_CPThemeAttribute"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"_CPThemeAttribute\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_85,_86,_87){ +with(_85){ +_85=objj_msgSendSuper({receiver:_85,super_class:objj_getClass("_CPThemeAttribute").super_class},"init"); +if(_85){ +_cache={}; +_name=objj_msgSend(_87,"decodeObjectForKey:","name"); +_values=objj_msgSend(CPDictionary,"dictionary"); +if(objj_msgSend(_87,"containsValueForKey:","value")){ +var _88=CPThemeStateNormal; +if(objj_msgSend(_87,"containsValueForKey:","state")){ +_88=CPThemeState(objj_msgSend(_87,"decodeObjectForKey:","state")); +} +objj_msgSend(_values,"setObject:forKey:",objj_msgSend(_87,"decodeObjectForKey:","value"),_88); +}else{ +var _89=objj_msgSend(_87,"decodeObjectForKey:","values"),_8a=objj_msgSend(_89,"allKeys"),_8b=_8a.length; +while(_8b--){ +var key=_8a[_8b]; +objj_msgSend(_values,"setObject:forKey:",objj_msgSend(_89,"objectForKey:",key),CPThemeState(key)); +} +} +} +return _85; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8c,_8d,_8e){ +with(_8c){ +objj_msgSend(_8e,"encodeObject:forKey:",_name,"name"); +var _8f=objj_msgSend(_values,"allKeys"),_90=_8f.length; +if(_90===1){ +var _91=_8f[0]; +if(Number(_91)!==CPThemeStateNormal){ +objj_msgSend(_8e,"encodeObject:forKey:",CPThemeStateName(Number(_91)),"state"); +} +objj_msgSend(_8e,"encodeObject:forKey:",objj_msgSend(_values,"objectForKey:",_91),"value"); +}else{ +var _92=objj_msgSend(CPDictionary,"dictionary"); +while(_90--){ +var key=_8f[_90]; +objj_msgSend(_92,"setObject:forKey:",objj_msgSend(_values,"objectForKey:",key),CPThemeStateName(Number(key))); +} +objj_msgSend(_8e,"encodeObject:forKey:",_92,"values"); +} +} +})]); +var _7c=[0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6]; +var _7d=function(_93){ +var _94=0,_95=_93; +while(_93){ +++_94; +_93&=(_93-1); +} +_7c[_95]=_94; +return _94; +}; +_7d.displayName="numberOfOnes"; +CPThemeAttributeEncode=function(_96,_97){ +var _98=_97._values,_99=objj_msgSend(_98,"count"),key="$a"+objj_msgSend(_97,"name"); +if(_99===1){ +var _9a=objj_msgSend(_98,"allKeys")[0]; +if(Number(_9a)===0){ +objj_msgSend(_96,"encodeObject:forKey:",objj_msgSend(_98,"objectForKey:",_9a),key); +return YES; +} +} +if(_99>=1){ +objj_msgSend(_96,"encodeObject:forKey:",_97,key); +return YES; +} +return NO; +}; +CPThemeAttributeDecode=function(_9b,_9c,_9d,_9e,_9f){ +var key="$a"+_9c; +if(!objj_msgSend(_9b,"containsValueForKey:",key)){ +var _a0=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_9c,_9d); +}else{ +var _a0=objj_msgSend(_9b,"decodeObjectForKey:",key); +if(!_a0.isa||!objj_msgSend(_a0,"isKindOfClass:",objj_msgSend(_CPThemeAttribute,"class"))){ +var _a1=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_9c,_9d); +objj_msgSend(_a1,"setValue:",_a0); +_a0=_a1; +} +} +if(_9e&&_9f){ +objj_msgSend(_a0,"setParentAttribute:",objj_msgSend(_9e,"attributeWithName:forClass:",_9c,_9f)); +} +return _a0; +}; +p;14;CPThemeBlend.jt;1853;@STATIC;1.0;I;21;Foundation/CPObject.jI;16;AppKit/CPTheme.jI;29;AppKit/_CPCibCustomResource.jI;30;AppKit/_CPCibKeyedUnarchiver.jt;1718; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPTheme.j",NO); +objj_executeFile("AppKit/_CPCibCustomResource.j",NO); +objj_executeFile("AppKit/_CPCibKeyedUnarchiver.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPThemeBlend"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_bundle"),new objj_ivar("_themes"),new objj_ivar("_loadDelegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithContentsOfURL:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPThemeBlend").super_class},"init"); +if(_3){ +_bundle=objj_msgSend(objj_msgSend(CPBundle,"alloc"),"initWithPath:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("themes"),function(_6,_7){ +with(_6){ +return _themes; +} +}),new objj_method(sel_getUid("themeNames"),function(_8,_9){ +with(_8){ +var _a=[]; +for(var i=0;i<_themes.length;++i){ +_a.push(_themes[i].substring(0,_themes[i].indexOf(".keyedtheme"))); +} +return _a; +} +}),new objj_method(sel_getUid("loadWithDelegate:"),function(_b,_c,_d){ +with(_b){ +_loadDelegate=_d; +objj_msgSend(_bundle,"loadWithDelegate:",_b); +} +}),new objj_method(sel_getUid("bundleDidFinishLoading:"),function(_e,_f,_10){ +with(_e){ +_themes=objj_msgSend(_bundle,"objectForInfoDictionaryKey:","CPKeyedThemes"); +var _11=_themes.length; +while(_11--){ +var _12=objj_msgSend(_10,"pathForResource:",_themes[_11]),_13=objj_msgSend(objj_msgSend(_CPThemeKeyedUnarchiver,"alloc"),"initForReadingWithData:bundle:",objj_msgSend(objj_msgSend(CPURL,"URLWithString:",_12),"staticResourceData"),_bundle); +objj_msgSend(_13,"decodeObjectForKey:","root"); +objj_msgSend(_13,"finishDecoding"); +} +objj_msgSend(_loadDelegate,"blendDidFinishLoading:",_e); +} +})]); +p;11;CPToolbar.jt;24452;@STATIC;1.0;I;21;Foundation/CPObject.ji;15;CPPopUpButton.ji;15;CPToolbarItem.jt;24366; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPPopUpButton.j",YES); +objj_executeFile("CPToolbarItem.j",YES); +CPToolbarDisplayModeDefault=0; +CPToolbarDisplayModeIconAndLabel=1; +CPToolbarDisplayModeIconOnly=2; +CPToolbarDisplayModeLabelOnly=3; +var _1=nil; +var _2=nil; +var _3=objj_allocateClassPair(CPObject,"CPToolbar"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_identifier"),new objj_ivar("_displayMode"),new objj_ivar("_showsBaselineSeparator"),new objj_ivar("_allowsUserCustomization"),new objj_ivar("_isVisible"),new objj_ivar("_delegate"),new objj_ivar("_itemIdentifiers"),new objj_ivar("_identifiedItems"),new objj_ivar("_defaultItems"),new objj_ivar("_allowedItems"),new objj_ivar("_selectableItems"),new objj_ivar("_items"),new objj_ivar("_itemsSortedByVisibilityPriority"),new objj_ivar("_toolbarView"),new objj_ivar("_window")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +return objj_msgSend(_5,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPToolbar").super_class},"init"); +if(_7){ +_items=[]; +_identifier=_9; +_isVisible=YES; +objj_msgSend(CPToolbar,"_addToolbar:forIdentifier:",_7,_identifier); +} +return _7; +} +}),new objj_method(sel_getUid("setDisplayMode:"),function(_a,_b,_c){ +with(_a){ +} +}),new objj_method(sel_getUid("identifier"),function(_d,_e){ +with(_d){ +return _identifier; +} +}),new objj_method(sel_getUid("delegate"),function(_f,_10){ +with(_f){ +return _delegate; +} +}),new objj_method(sel_getUid("isVisible"),function(_11,_12){ +with(_11){ +return _isVisible; +} +}),new objj_method(sel_getUid("setVisible:"),function(_13,_14,_15){ +with(_13){ +if(_isVisible===_15){ +return; +} +_isVisible=_15; +objj_msgSend(_window,"_noteToolbarChanged"); +} +}),new objj_method(sel_getUid("_window"),function(_16,_17){ +with(_16){ +return _window; +} +}),new objj_method(sel_getUid("_setWindow:"),function(_18,_19,_1a){ +with(_18){ +_window=_1a; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_1b,_1c,_1d){ +with(_1b){ +if(_delegate===_1d){ +return; +} +_delegate=_1d; +objj_msgSend(_1b,"_reloadToolbarItems"); +} +}),new objj_method(sel_getUid("_loadConfiguration"),function(_1e,_1f){ +with(_1e){ +} +}),new objj_method(sel_getUid("_toolbarView"),function(_20,_21){ +with(_20){ +if(!_toolbarView){ +_toolbarView=objj_msgSend(objj_msgSend(_CPToolbarView,"alloc"),"initWithFrame:",CPRectMake(0,0,1200,59)); +objj_msgSend(_toolbarView,"setToolbar:",_20); +objj_msgSend(_toolbarView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +return _toolbarView; +} +}),new objj_method(sel_getUid("_reloadToolbarItems"),function(_22,_23){ +with(_22){ +_itemIdentifiers=objj_msgSend(_defaultItems,"valueForKey:","itemIdentifier")||[]; +if(_delegate){ +var _24=objj_msgSend(objj_msgSend(_delegate,"toolbarDefaultItemIdentifiers:",_22),"mutableCopy"); +if(_24){ +_itemIdentifiers=objj_msgSend(_itemIdentifiers,"arrayByAddingObjectsFromArray:",_24); +} +} +var _25=0,_26=objj_msgSend(_itemIdentifiers,"count"); +_items=[]; +for(;_25<_26;++_25){ +var _27=_itemIdentifiers[_25],_28=objj_msgSend(CPToolbarItem,"_standardItemWithItemIdentifier:",_27); +if(!_28){ +_28=objj_msgSend(_identifiedItems,"objectForKey:",_27); +} +if(!_28&&_delegate){ +_28=objj_msgSend(_delegate,"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",_22,_27,YES); +} +_28=objj_msgSend(_28,"copy"); +if(_28===nil){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Toolbar delegate "+_delegate+" returned nil toolbar item for identifier \""+_27+"\""); +} +_28._toolbar=_22; +objj_msgSend(_items,"addObject:",_28); +} +_itemsSortedByVisibilityPriority=objj_msgSend(_items,"sortedArrayUsingFunction:context:",_29,NULL); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +}),new objj_method(sel_getUid("items"),function(_2a,_2b){ +with(_2a){ +return _items; +} +}),new objj_method(sel_getUid("visibleItems"),function(_2c,_2d){ +with(_2c){ +return objj_msgSend(_toolbarView,"visibleItems"); +} +}),new objj_method(sel_getUid("itemsSortedByVisibilityPriority"),function(_2e,_2f){ +with(_2e){ +return _itemsSortedByVisibilityPriority; +} +}),new objj_method(sel_getUid("validateVisibleItems"),function(_30,_31){ +with(_30){ +var _32=objj_msgSend(_30,"visibleItems"),_33=objj_msgSend(_32,"count"); +while(_33--){ +objj_msgSend(_32[_33],"validate"); +} +} +}),new objj_method(sel_getUid("_itemForItemIdentifier:willBeInsertedIntoToolbar:"),function(_34,_35,_36,_37){ +with(_34){ +var _38=objj_msgSend(_identifiedItems,"objectForKey:",_36); +if(!_38){ +_38=objj_msgSend(CPToolbarItem,"_standardItemWithItemIdentifier:",_36); +if(_delegate&&!_38){ +_38=objj_msgSend(objj_msgSend(_delegate,"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",_34,_36,_37),"copy"); +if(!_38){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Toolbar delegate "+_delegate+" returned nil toolbar item for identifier "+_36); +} +} +objj_msgSend(_identifiedItems,"setObject:forKey:",_38,_36); +} +return _38; +} +}),new objj_method(sel_getUid("_itemsWithIdentifiers:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=[]; +for(var i=0;i<_3b.length;i++){ +objj_msgSend(_3c,"addObject:",objj_msgSend(_39,"_itemForItemIdentifier:willBeInsertedIntoToolbar:",_3b[i],NO)); +} +return _3c; +} +}),new objj_method(sel_getUid("_defaultToolbarItems"),function(_3d,_3e){ +with(_3d){ +if(!_defaultItems&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("toolbarDefaultItemIdentifiers:"))){ +_defaultItems=[]; +var _3f=objj_msgSend(_delegate,"toolbarDefaultItemIdentifiers:",_3d),_40=0,_41=objj_msgSend(_3f,"count"); +for(;_40<_41;++_40){ +objj_msgSend(_defaultItems,"addObject:",objj_msgSend(_3d,"_itemForItemIdentifier:willBeInsertedIntoToolbar:",_3f[_40],NO)); +} +} +return _defaultItems; +} +}),new objj_method(sel_getUid("toolbarItemDidChange:"),function(_42,_43,_44){ +with(_42){ +if(objj_msgSend(_identifiedItems,"objectForKey:",objj_msgSend(_44,"itemIdentifier"))){ +objj_msgSend(_identifiedItems,"setObject:forKey:",_44,objj_msgSend(_44,"itemIdentifier")); +} +var _45=0,_46=objj_msgSend(_items,"count"); +for(;_45<=_46;++_45){ +var _47=_items[_45]; +if(objj_msgSend(_47,"itemIdentifier")===objj_msgSend(_44,"itemIdentifier")){ +_items[_45]=_44; +_itemsSortedByVisibilityPriority=objj_msgSend(_items,"sortedArrayUsingFunction:context:",_29,NULL); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +} +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_48,_49){ +with(_48){ +if(_48!=objj_msgSend(CPToolbar,"class")){ +return; +} +_1=objj_msgSend(CPDictionary,"dictionary"); +_2=objj_msgSend(CPDictionary,"dictionary"); +} +}),new objj_method(sel_getUid("_addToolbar:forIdentifier:"),function(_4a,_4b,_4c,_4d){ +with(_4a){ +var _4e=objj_msgSend(_1,"objectForKey:",_4d); +if(!_4e){ +_4e=[]; +objj_msgSend(_1,"setObject:forKey:",_4e,_4d); +} +objj_msgSend(_4e,"addObject:",_4c); +} +})]); +var _4f="CPToolbarIdentifierKey",_50="CPToolbarDisplayModeKey",_51="CPToolbarShowsBaselineSeparatorKey",_52="CPToolbarAllowsUserCustomizationKey",_53="CPToolbarIsVisibleKey",_54="CPToolbarDelegateKey",_55="CPToolbarIdentifiedItemsKey",_56="CPToolbarDefaultItemsKey",_57="CPToolbarAllowedItemsKey",_58="CPToolbarSelectableItemsKey"; +var _3=objj_getClass("CPToolbar"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbar\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_59,_5a,_5b){ +with(_59){ +_59=objj_msgSendSuper({receiver:_59,super_class:objj_getClass("CPToolbar").super_class},"init"); +if(_59){ +_identifier=objj_msgSend(_5b,"decodeObjectForKey:",_4f); +_displayMode=objj_msgSend(_5b,"decodeIntForKey:",_50); +_showsBaselineSeparator=objj_msgSend(_5b,"decodeBoolForKey:",_51); +_allowsUserCustomization=objj_msgSend(_5b,"decodeBoolForKey:",_52); +_isVisible=objj_msgSend(_5b,"decodeBoolForKey:",_53); +_identifiedItems=objj_msgSend(_5b,"decodeObjectForKey:",_55); +_defaultItems=objj_msgSend(_5b,"decodeObjectForKey:",_56); +_allowedItems=objj_msgSend(_5b,"decodeObjectForKey:",_57); +_selectableItems=objj_msgSend(_5b,"decodeObjectForKey:",_58); +objj_msgSend(objj_msgSend(_identifiedItems,"allValues"),"makeObjectsPerformSelector:withObject:",sel_getUid("_setToolbar:"),_59); +_items=[]; +objj_msgSend(CPToolbar,"_addToolbar:forIdentifier:",_59,_identifier); +objj_msgSend(_59,"setDelegate:",objj_msgSend(_5b,"decodeObjectForKey:",_54)); +objj_msgSend(_59,"_reloadToolbarItems"); +} +return _59; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_5c,_5d,_5e){ +with(_5c){ +objj_msgSend(_5e,"encodeObject:forKey:",_identifier,_4f); +objj_msgSend(_5e,"encodeInt:forKey:",_displayMode,_50); +objj_msgSend(_5e,"encodeBool:forKey:",_showsBaselineSeparator,_51); +objj_msgSend(_5e,"encodeBool:forKey:",_allowsUserCustomization,_52); +objj_msgSend(_5e,"encodeBool:forKey:",_isVisible,_53); +objj_msgSend(_5e,"encodeObject:forKey:",_identifiedItems,_55); +objj_msgSend(_5e,"encodeObject:forKey:",_defaultItems,_56); +objj_msgSend(_5e,"encodeObject:forKey:",_allowedItems,_57); +objj_msgSend(_5e,"encodeObject:forKey:",_selectableItems,_58); +objj_msgSend(_5e,"encodeConditionalObject:forKey:",_delegate,_54); +} +})]); +var _5f=nil,_60=nil,_61=nil; +var _62=5,_63=10,_64=20; +var _65=function(_66,_67,_68,_69){ +return {index:_66,view:_67,label:_68,minWidth:_69}; +}; +var _3=objj_allocateClassPair(CPView,"_CPToolbarView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_toolbar"),new objj_ivar("_flexibleWidthIndexes"),new objj_ivar("_visibleFlexibleWidthIndexes"),new objj_ivar("_itemInfos"),new objj_ivar("_viewsForToolbarItems"),new objj_ivar("_visibleItems"),new objj_ivar("_invisibleItems"),new objj_ivar("_additionalItemsButton"),new objj_ivar("_labelColor"),new objj_ivar("_labelShadowColor"),new objj_ivar("_minWidth"),new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("visibleItems"),function(_6a,_6b){ +with(_6a){ +return _visibleItems; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_6c,_6d,_6e){ +with(_6c){ +_6c=objj_msgSendSuper({receiver:_6c,super_class:objj_getClass("_CPToolbarView").super_class},"initWithFrame:",_6e); +if(_6c){ +_minWidth=0; +_labelColor=objj_msgSend(CPColor,"blackColor"); +_labelShadowColor=objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.75); +_additionalItemsButton=objj_msgSend(objj_msgSend(CPPopUpButton,"alloc"),"initWithFrame:pullsDown:",CGRectMake(0,0,10,15),YES); +objj_msgSend(_additionalItemsButton,"setBordered:",NO); +objj_msgSend(_additionalItemsButton,"setImagePosition:",CPImageOnly); +objj_msgSend(objj_msgSend(_additionalItemsButton,"menu"),"setShowsStateColumn:",NO); +objj_msgSend(objj_msgSend(_additionalItemsButton,"menu"),"setAutoenablesItems:",NO); +objj_msgSend(_additionalItemsButton,"setAlternateImage:",_61); +} +return _6c; +} +}),new objj_method(sel_getUid("setToolbar:"),function(_6f,_70,_71){ +with(_6f){ +_toolbar=_71; +} +}),new objj_method(sel_getUid("toolbar"),function(_72,_73){ +with(_72){ +return _toolbar; +} +}),new objj_method(sel_getUid("FIXME_setIsHUD:"),function(_74,_75,_76){ +with(_74){ +if(_FIXME_isHUD===_76){ +return; +} +_FIXME_isHUD=_76; +var _77=objj_msgSend(_toolbar,"items"),_78=objj_msgSend(_77,"count"); +while(_78--){ +objj_msgSend(objj_msgSend(_74,"viewForItem:",_77[_78]),"FIXME_setIsHUD:",_76); +} +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"tile"); +} +}),new objj_method(sel_getUid("viewForItem:"),function(_7c,_7d,_7e){ +with(_7c){ +return _viewsForToolbarItems[objj_msgSend(_7e,"UID")]||nil; +} +}),new objj_method(sel_getUid("tile"),function(_7f,_80){ +with(_7f){ +var _81=objj_msgSend(_toolbar,"items"),_82=CGRectGetWidth(objj_msgSend(_7f,"bounds")),_83=_minWidth,_84=[]; +_visibleItems=_81; +if(_82<_83){ +_82-=_64; +_visibleItems=objj_msgSend(_visibleItems,"copy"); +var _85=objj_msgSend(_toolbar,"itemsSortedByVisibilityPriority"),_86=_85.length; +while(_83>_82&&_86){ +var _87=_85[--_86],_88=objj_msgSend(_7f,"viewForItem:",_87); +_83-=objj_msgSend(_88,"minSize").width+_63; +objj_msgSend(_visibleItems,"removeObjectIdenticalTo:",_87); +objj_msgSend(_84,"addObject:",_87); +objj_msgSend(_88,"setHidden:",YES); +objj_msgSend(_88,"FIXME_setIsHUD:",_FIXME_isHUD); +} +} +var _86=objj_msgSend(_81,"count"),_89=0; +while(_86--){ +var _88=objj_msgSend(_7f,"viewForItem:",_81[_86]),_8a=objj_msgSend(_88,"minSize"); +if(_89<_8a.height){ +_89=_8a.height; +} +} +var _86=_visibleItems.length; +flexibleItemIndexes=objj_msgSend(CPIndexSet,"indexSet"); +while(_86--){ +var _87=_visibleItems[_86],_88=objj_msgSend(_7f,"viewForItem:",_87),_8a=objj_msgSend(_88,"minSize"); +if(_8a.width!==objj_msgSend(_88,"maxSize").width){ +objj_msgSend(flexibleItemIndexes,"addIndex:",_86); +}else{ +objj_msgSend(_88,"setFrameSize:",CGSizeMake(_8a.width,_89)); +} +objj_msgSend(_88,"setHidden:",NO); +} +var _8b=_82-_83,_8c=0; +while(_8b&&objj_msgSend(flexibleItemIndexes,"count")){ +_8c+=_8b/objj_msgSend(flexibleItemIndexes,"count"); +_8b=0; +var _8d=CPNotFound; +while((_8d=objj_msgSend(flexibleItemIndexes,"indexGreaterThanIndex:",_8d))!==CPNotFound){ +var _87=_visibleItems[_8d],_88=objj_msgSend(_7f,"viewForItem:",_87),_8e=objj_msgSend(_88,"minSize").width+_8c,_8f=MIN(_8e,objj_msgSend(_88,"maxSize").width); +if(_8f<_8e){ +objj_msgSend(flexibleItemIndexes,"removeIndex:",_8d); +_8b+=_8e-_8f; +} +objj_msgSend(_88,"setFrameSize:",CGSizeMake(_8f,_89)); +} +} +var _8d=0,_86=_visibleItems.length,x=_63; +for(;_8d<_86;++_8d){ +var _88=objj_msgSend(_7f,"viewForItem:",_visibleItems[_8d]),_90=CGRectGetWidth(objj_msgSend(_88,"frame")); +objj_msgSend(_88,"setFrame:",CGRectMake(x,0,_90,_89)); +x+=_90+_63; +} +var _91=NO; +if(objj_msgSend(_84,"count")){ +var _8d=0,_86=objj_msgSend(_81,"count"); +_invisibleItems=[]; +for(;_8d<_86;++_8d){ +var _87=_81[_8d]; +if(objj_msgSend(_84,"indexOfObjectIdenticalTo:",_87)!==CPNotFound){ +objj_msgSend(_invisibleItems,"addObject:",_87); +var _92=objj_msgSend(_87,"itemIdentifier"); +if(_92!==CPToolbarSpaceItemIdentifier&&_92!==CPToolbarFlexibleSpaceItemIdentifier&&_92!==CPToolbarSeparatorItemIdentifier){ +_91=YES; +} +} +} +} +if(_91){ +objj_msgSend(_additionalItemsButton,"setFrameOrigin:",CGPointMake(_82+5,(CGRectGetHeight(objj_msgSend(_7f,"bounds"))-CGRectGetHeight(objj_msgSend(_additionalItemsButton,"frame")))/2)); +objj_msgSend(_7f,"addSubview:",_additionalItemsButton); +objj_msgSend(_additionalItemsButton,"removeAllItems"); +objj_msgSend(_additionalItemsButton,"addItemWithTitle:","Additional Items"); +objj_msgSend(objj_msgSend(_additionalItemsButton,"itemArray")[0],"setImage:",_60); +var _8d=0,_86=objj_msgSend(_invisibleItems,"count"),_93=NO; +for(;_8d<_86;++_8d){ +var _87=_invisibleItems[_8d],_92=objj_msgSend(_87,"itemIdentifier"); +if(_92===CPToolbarSpaceItemIdentifier||_92===CPToolbarFlexibleSpaceItemIdentifier){ +continue; +} +if(_92===CPToolbarSeparatorItemIdentifier){ +if(_93){ +objj_msgSend(_additionalItemsButton,"addItem:",objj_msgSend(CPMenuItem,"separatorItem")); +} +continue; +} +_93=YES; +var _94=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",objj_msgSend(_87,"label"),objj_msgSend(_87,"action"),nil); +objj_msgSend(_94,"setImage:",objj_msgSend(_87,"image")); +objj_msgSend(_94,"setTarget:",objj_msgSend(_87,"target")); +objj_msgSend(_94,"setEnabled:",objj_msgSend(_87,"isEnabled")); +objj_msgSend(_additionalItemsButton,"addItem:",_94); +} +}else{ +objj_msgSend(_additionalItemsButton,"removeFromSuperview"); +} +} +}),new objj_method(sel_getUid("reloadToolbarItems"),function(_95,_96){ +with(_95){ +var _97=objj_msgSend(_95,"subviews"),_98=_97.length; +while(_98--){ +objj_msgSend(_97[_98],"removeFromSuperview"); +} +var _99=objj_msgSend(_toolbar,"items"),_9a=0; +_98=_99.length; +_minWidth=_63; +_viewsForToolbarItems={}; +for(;_9a<_98;++_9a){ +var _9b=_99[_9a],_9c=objj_msgSend(objj_msgSend(_CPToolbarItemView,"alloc"),"initWithToolbarItem:toolbar:",_9b,_95); +_viewsForToolbarItems[objj_msgSend(_9b,"UID")]=_9c; +objj_msgSend(_95,"addSubview:",_9c); +_minWidth+=objj_msgSend(_9c,"minSize").width+_63; +} +objj_msgSend(_95,"tile"); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_9d,_9e){ +with(_9d){ +if(_9d!==objj_msgSend(_CPToolbarView,"class")){ +return; +} +var _9f=objj_msgSend(CPBundle,"bundleForClass:",_9d); +_60=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_9f,"pathForResource:","_CPToolbarView/_CPToolbarViewExtraItemsImage.png"),CPSizeMake(10,15)); +_61=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_9f,"pathForResource:","_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png"),CGSizeMake(10,15)); +} +})]); +var _29=function(lhs,rhs){ +var _a0=objj_msgSend(lhs,"visibilityPriority"),_a1=objj_msgSend(rhs,"visibilityPriority"); +if(_a0==_a1){ +return CPOrderedSame; +} +if(_a0>_a1){ +return CPOrderedAscending; +} +return CPOrderedDescending; +}; +var _a2=5,_a3=2; +var _3=objj_allocateClassPair(CPControl,"_CPToolbarItemView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_labelSize"),new objj_ivar("_toolbarItem"),new objj_ivar("_toolbar"),new objj_ivar("_imageView"),new objj_ivar("_view"),new objj_ivar("_labelField"),new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("minSize"),function(_a4,_a5){ +with(_a4){ +return _minSize; +} +}),new objj_method(sel_getUid("maxSize"),function(_a6,_a7){ +with(_a6){ +return _maxSize; +} +}),new objj_method(sel_getUid("initWithToolbarItem:toolbar:"),function(_a8,_a9,_aa,_ab){ +with(_a8){ +_a8=objj_msgSendSuper({receiver:_a8,super_class:objj_getClass("_CPToolbarItemView").super_class},"init"); +if(_a8){ +_toolbarItem=_aa; +_labelField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_labelField,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_labelField,"setTextColor:",objj_msgSend(_a8,"FIXME_labelColor")); +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_a8,"FIXME_labelShadowColor")); +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_labelField,"setAutoresizingMask:",CPViewWidthSizable|CPViewMinXMargin); +objj_msgSend(_a8,"addSubview:",_labelField); +objj_msgSend(_a8,"updateFromItem"); +_toolbar=_ab; +var _ac=["label","image","alternateImage","minSize","maxSize","target","action","enabled"],_ad=0,_ae=objj_msgSend(_ac,"count"); +for(;_ad<_ae;++_ad){ +objj_msgSend(_toolbarItem,"addObserver:forKeyPath:options:context:",_a8,_ac[_ad],0,NULL); +} +} +return _a8; +} +}),new objj_method(sel_getUid("FIXME_setIsHUD:"),function(_af,_b0,_b1){ +with(_af){ +_FIXME_isHUD=_b1; +objj_msgSend(_labelField,"setTextColor:",objj_msgSend(_af,"FIXME_labelColor")); +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_af,"FIXME_labelShadowColor")); +} +}),new objj_method(sel_getUid("updateFromItem"),function(_b2,_b3){ +with(_b2){ +var _b4=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_b4===CPToolbarSpaceItemIdentifier||_b4===CPToolbarFlexibleSpaceItemIdentifier||_b4===CPToolbarSeparatorItemIdentifier){ +objj_msgSend(_view,"removeFromSuperview"); +objj_msgSend(_imageView,"removeFromSuperview"); +_minSize=objj_msgSend(_toolbarItem,"minSize"); +_maxSize=objj_msgSend(_toolbarItem,"maxSize"); +if(_b4===CPToolbarSeparatorItemIdentifier){ +_view=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,2,32)); +sizes={}; +sizes["CPToolbarItemSeparator"]=[CGSizeMake(2,26),CGSizeMake(2,1),CGSizeMake(2,26)]; +objj_msgSend(_view,"setBackgroundColor:",_CPControlThreePartImagePattern(YES,sizes,"CPToolbarItem","Separator")); +objj_msgSend(_b2,"addSubview:",_view); +} +return; +} +objj_msgSend(_b2,"setTarget:",objj_msgSend(_toolbarItem,"target")); +objj_msgSend(_b2,"setAction:",objj_msgSend(_toolbarItem,"action")); +var _b5=objj_msgSend(_toolbarItem,"view")||nil; +if(_b5!==_view){ +if(!_b5){ +objj_msgSend(_view,"removeFromSuperview"); +}else{ +objj_msgSend(_b2,"addSubview:",_b5); +objj_msgSend(_imageView,"removeFromSuperview"); +} +_view=_b5; +} +if(!_view){ +if(!_imageView){ +_imageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",objj_msgSend(_b2,"bounds")); +objj_msgSend(_imageView,"setImageScaling:",CPScaleNone); +objj_msgSend(_b2,"addSubview:",_imageView); +} +objj_msgSend(_imageView,"setImage:",objj_msgSend(_toolbarItem,"image")); +} +var _b6=objj_msgSend(_toolbarItem,"minSize"),_b7=objj_msgSend(_toolbarItem,"maxSize"); +objj_msgSend(_labelField,"setStringValue:",objj_msgSend(_toolbarItem,"label")); +objj_msgSend(_labelField,"sizeToFit"); +objj_msgSend(_b2,"setEnabled:",objj_msgSend(_toolbarItem,"isEnabled")); +_labelSize=objj_msgSend(_labelField,"frame").size; +_minSize=CGSizeMake(MAX(_labelSize.width,_b6.width),_labelSize.height+_b6.height+_a3+_a2); +_maxSize=CGSizeMake(MAX(_labelSize.width,_b6.width),100000000); +objj_msgSend(_toolbar,"tile"); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_b8,_b9){ +with(_b8){ +var _ba=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_ba===CPToolbarSpaceItemIdentifier||_ba===CPToolbarFlexibleSpaceItemIdentifier){ +return; +} +var _bb=objj_msgSend(_b8,"bounds"),_bc=(_bb.size.width); +if(_ba===CPToolbarSeparatorItemIdentifier){ +return objj_msgSend(_view,"setFrame:",CGRectMake(ROUND((_bc-2)/2),0,2,(_bb.size.height))); +} +var _bd=_view||_imageView,_be=objj_msgSend(_toolbarItem,"maxSize"),_bf=(_bb.size.height)-_labelSize.height-_a3-_a2,_c0=MIN(_be.width,_bc),_c1=MIN(_be.height,_bf); +objj_msgSend(_bd,"setFrame:",CGRectMake(ROUND((_bc-_c0)/2),_a2+ROUND((_bf-_c1)/2),_c0,_c1)); +objj_msgSend(_labelField,"setFrameOrigin:",CGPointMake(ROUND((_bc-_labelSize.width)/2),_a2+_bf+_a3)); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_c2,_c3,_c4){ +with(_c2){ +if(objj_msgSend(_toolbarItem,"view")){ +return objj_msgSend(objj_msgSend(_c2,"nextResponder"),"mouseDown:",_c4); +} +var _c5=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_c5===CPToolbarSpaceItemIdentifier||_c5===CPToolbarFlexibleSpaceItemIdentifier||_c5===CPToolbarSeparatorItemIdentifier){ +return objj_msgSend(objj_msgSend(_c2,"nextResponder"),"mouseDown:",_c4); +} +objj_msgSendSuper({receiver:_c2,super_class:objj_getClass("_CPToolbarItemView").super_class},"mouseDown:",_c4); +} +}),new objj_method(sel_getUid("setEnabled:"),function(_c6,_c7,_c8){ +with(_c6){ +objj_msgSendSuper({receiver:_c6,super_class:objj_getClass("_CPToolbarItemView").super_class},"setEnabled:",_c8); +if(_c8){ +objj_msgSend(_imageView,"setAlphaValue:",1); +objj_msgSend(_labelField,"setAlphaValue:",1); +}else{ +objj_msgSend(_imageView,"setAlphaValue:",0.5); +objj_msgSend(_labelField,"setAlphaValue:",0.5); +} +objj_msgSend(_toolbar,"tile"); +} +}),new objj_method(sel_getUid("FIXME_labelColor"),function(_c9,_ca){ +with(_c9){ +if(_FIXME_isHUD){ +return objj_msgSend(CPColor,"whiteColor"); +} +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("FIXME_labelShadowColor"),function(_cb,_cc){ +with(_cb){ +if(_FIXME_isHUD){ +return objj_msgSend(_cb,"isHighlighted")?objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.5):objj_msgSend(CPColor,"clearColor"); +} +return objj_msgSend(_cb,"isHighlighted")?objj_msgSend(CPColor,"colorWithWhite:alpha:",0,0.3):objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.75); +} +}),new objj_method(sel_getUid("setHighlighted:"),function(_cd,_ce,_cf){ +with(_cd){ +objj_msgSendSuper({receiver:_cd,super_class:objj_getClass("_CPToolbarItemView").super_class},"setHighlighted:",_cf); +if(_cf){ +var _d0=objj_msgSend(_toolbarItem,"alternateImage"); +if(_d0){ +objj_msgSend(_imageView,"setImage:",_d0); +} +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMakeZero()); +}else{ +var _d1=objj_msgSend(_toolbarItem,"image"); +if(_d1){ +objj_msgSend(_imageView,"setImage:",_d1); +} +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMake(0,1)); +} +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_cd,"FIXME_labelShadowColor")); +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +objj_msgSend(CPApp,"sendAction:to:from:",_d4,_d5,_toolbarItem); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_d6,_d7,_d8,_d9,_da,_db){ +with(_d6){ +if(_d8==="enabled"){ +objj_msgSend(_d6,"setEnabled:",objj_msgSend(_d9,"isEnabled")); +}else{ +if(_d8==="target"){ +objj_msgSend(_d6,"setTarget:",objj_msgSend(_d9,"target")); +}else{ +if(_d8==="action"){ +objj_msgSend(_d6,"setAction:",objj_msgSend(_d9,"action")); +}else{ +objj_msgSend(_d6,"updateFromItem"); +} +} +} +} +})]); +p;15;CPToolbarItem.jt;13726;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;16;AppKit/CPImage.jI;15;AppKit/CPView.ji;29;_CPToolbarFlexibleSpaceItem.ji;26;_CPToolbarShowColorsItem.ji;25;_CPToolbarSeparatorItem.ji;21;_CPToolbarSpaceItem.jt;13492; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPImage.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPToolbarItemVisibilityPriorityStandard=0; +CPToolbarItemVisibilityPriorityLow=-1000; +CPToolbarItemVisibilityPriorityHigh=1000; +CPToolbarItemVisibilityPriorityUser=2000; +CPToolbarSeparatorItemIdentifier="CPToolbarSeparatorItem"; +CPToolbarSpaceItemIdentifier="CPToolbarSpaceItem"; +CPToolbarFlexibleSpaceItemIdentifier="CPToolbarFlexibleSpaceItem"; +CPToolbarShowColorsItemIdentifier="CPToolbarShowColorsItem"; +CPToolbarShowFontsItemIdentifier="CPToolbarShowFontsItem"; +CPToolbarCustomizeToolbarItemIdentifier="CPToolbarCustomizeToolbarItem"; +CPToolbarPrintItemIdentifier="CPToolbarPrintItem"; +var _1=objj_allocateClassPair(CPObject,"CPToolbarItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_itemIdentifier"),new objj_ivar("_toolbar"),new objj_ivar("_label"),new objj_ivar("_paletteLabel"),new objj_ivar("_toolTip"),new objj_ivar("_tag"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_isEnabled"),new objj_ivar("_image"),new objj_ivar("_alternateImage"),new objj_ivar("_view"),new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_visibilityPriority"),new objj_ivar("_autovalidates")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithItemIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithItemIdentifier:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPToolbarItem").super_class},"init"); +if(_5){ +_itemIdentifier=_7; +_tag=0; +_isEnabled=YES; +_minSize=CGSizeMakeZero(); +_maxSize=CGSizeMakeZero(); +_visibilityPriority=CPToolbarItemVisibilityPriorityStandard; +_autovalidates=YES; +} +return _5; +} +}),new objj_method(sel_getUid("itemIdentifier"),function(_8,_9){ +with(_8){ +return _itemIdentifier; +} +}),new objj_method(sel_getUid("toolbar"),function(_a,_b){ +with(_a){ +return _toolbar; +} +}),new objj_method(sel_getUid("_setToolbar:"),function(_c,_d,_e){ +with(_c){ +_toolbar=_e; +} +}),new objj_method(sel_getUid("label"),function(_f,_10){ +with(_f){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_11,_12,_13){ +with(_11){ +_label=_13; +} +}),new objj_method(sel_getUid("paletteLabel"),function(_14,_15){ +with(_14){ +return _paletteLabel; +} +}),new objj_method(sel_getUid("setPaletteLabel:"),function(_16,_17,_18){ +with(_16){ +_paletteLabel=_18; +} +}),new objj_method(sel_getUid("toolTip"),function(_19,_1a){ +with(_19){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("toolTip"))){ +return objj_msgSend(_view,"toolTip"); +} +return _toolTip; +} +}),new objj_method(sel_getUid("setToolTip:"),function(_1b,_1c,_1d){ +with(_1b){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setToolTip:"))){ +objj_msgSend(_view,"setToolTip:",_1d); +} +_toolTip=_1d; +} +}),new objj_method(sel_getUid("tag"),function(_1e,_1f){ +with(_1e){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("tag"))){ +return objj_msgSend(_view,"tag"); +} +return _tag; +} +}),new objj_method(sel_getUid("setTag:"),function(_20,_21,_22){ +with(_20){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTag:"))){ +objj_msgSend(_view,"setTag:",_22); +} +_tag=_22; +} +}),new objj_method(sel_getUid("target"),function(_23,_24){ +with(_23){ +if(_view){ +return objj_msgSend(_view,"respondsToSelector:",sel_getUid("target"))?objj_msgSend(_view,"target"):nil; +} +return _target; +} +}),new objj_method(sel_getUid("setTarget:"),function(_25,_26,_27){ +with(_25){ +if(!_view){ +_target=_27; +}else{ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTarget:"))){ +objj_msgSend(_view,"setTarget:",_27); +} +} +} +}),new objj_method(sel_getUid("action"),function(_28,_29){ +with(_28){ +if(_view){ +return objj_msgSend(_view,"respondsToSelector:",sel_getUid("action"))?objj_msgSend(_view,"action"):nil; +} +return _action; +} +}),new objj_method(sel_getUid("setAction:"),function(_2a,_2b,_2c){ +with(_2a){ +if(!_view){ +_action=_2c; +}else{ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_view,"setAction:",_2c); +} +} +} +}),new objj_method(sel_getUid("isEnabled"),function(_2d,_2e){ +with(_2d){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("isEnabled"))){ +return objj_msgSend(_view,"isEnabled"); +} +return _isEnabled; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_2f,_30,_31){ +with(_2f){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_view,"setEnabled:",_31); +} +_isEnabled=_31; +} +}),new objj_method(sel_getUid("image"),function(_32,_33){ +with(_32){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("image"))){ +return objj_msgSend(_view,"image"); +} +return _image; +} +}),new objj_method(sel_getUid("setImage:"),function(_34,_35,_36){ +with(_34){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setImage:"))){ +objj_msgSend(_view,"setImage:",_36); +} +_image=_36; +if(!_image){ +return; +} +if(_minSize.width===0&&_minSize.height===0&&_maxSize.width===0&&_maxSize.height===0){ +var _37=objj_msgSend(_image,"size"); +if(_37.width>0||_37.height>0){ +objj_msgSend(_34,"setMinSize:",_37); +objj_msgSend(_34,"setMaxSize:",_37); +} +} +} +}),new objj_method(sel_getUid("setAlternateImage:"),function(_38,_39,_3a){ +with(_38){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setAlternateImage:"))){ +objj_msgSend(_view,"setAlternateImage:",_3a); +} +_alternateImage=_3a; +} +}),new objj_method(sel_getUid("alternateImage"),function(_3b,_3c){ +with(_3b){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("alternateIamge"))){ +return objj_msgSend(_view,"alternateImage"); +} +return _alternateImage; +} +}),new objj_method(sel_getUid("view"),function(_3d,_3e){ +with(_3d){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_3f,_40,_41){ +with(_3f){ +if(_view==_41){ +return; +} +_view=_41; +if(_view){ +if(_tag!==0&&objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTag:"))){ +objj_msgSend(_view,"setTag:",_tag); +} +_target=nil; +_action=nil; +} +} +}),new objj_method(sel_getUid("minSize"),function(_42,_43){ +with(_42){ +return _minSize; +} +}),new objj_method(sel_getUid("setMinSize:"),function(_44,_45,_46){ +with(_44){ +if(!_46.height||!_46.width){ +return; +} +_minSize=CGSizeMakeCopy(_46); +_maxSize=CGSizeMake(MAX(_minSize.width,_maxSize.width),MAX(_minSize.height,_maxSize.height)); +} +}),new objj_method(sel_getUid("maxSize"),function(_47,_48){ +with(_47){ +return _maxSize; +} +}),new objj_method(sel_getUid("setMaxSize:"),function(_49,_4a,_4b){ +with(_49){ +if(!_4b.height||!_4b.width){ +return; +} +_maxSize=CGSizeMakeCopy(_4b); +_minSize=CGSizeMake(MIN(_minSize.width,_maxSize.width),MIN(_minSize.height,_maxSize.height)); +} +}),new objj_method(sel_getUid("visibilityPriority"),function(_4c,_4d){ +with(_4c){ +return _visibilityPriority; +} +}),new objj_method(sel_getUid("setVisibilityPriority:"),function(_4e,_4f,_50){ +with(_4e){ +_visibilityPriority=_50; +} +}),new objj_method(sel_getUid("validate"),function(_51,_52){ +with(_51){ +var _53=objj_msgSend(_51,"action"),_54=objj_msgSend(_51,"target"); +if(_view){ +if(objj_msgSend(_54,"respondsToSelector:",sel_getUid("validateToolbarItem:"))){ +objj_msgSend(_51,"setEnabled:",objj_msgSend(_54,"validateToolbarItem:",_51)); +} +return; +} +if(!_53){ +return objj_msgSend(_51,"setEnabled:",NO); +} +if(_54&&!objj_msgSend(_54,"respondsToSelector:",_53)){ +return objj_msgSend(_51,"setEnabled:",NO); +} +_54=objj_msgSend(CPApp,"targetForAction:to:from:",_53,_54,_51); +if(!_54){ +return objj_msgSend(_51,"setEnabled:",NO); +} +if(objj_msgSend(_54,"respondsToSelector:",sel_getUid("validateToolbarItem:"))){ +objj_msgSend(_51,"setEnabled:",objj_msgSend(_54,"validateToolbarItem:",_51)); +}else{ +objj_msgSend(_51,"setEnabled:",YES); +} +} +}),new objj_method(sel_getUid("autovalidates"),function(_55,_56){ +with(_55){ +return _autovalidates; +} +}),new objj_method(sel_getUid("setAutovalidates:"),function(_57,_58,_59){ +with(_57){ +_autovalidates=!!_59; +} +})]); +var _5a="CPToolbarItemItemIdentifierKey",_5b="CPToolbarItemLabelKey",_5c="CPToolbarItemPaletteLabelKey",_5d="CPToolbarItemToolTipKey",_5e="CPToolbarItemTagKey",_5f="CPToolbarItemTargetKey",_60="CPToolbarItemActionKey",_61="CPToolbarItemEnabledKey",_62="CPToolbarItemImageKey",_63="CPToolbarItemAlternateImageKey",_64="CPToolbarItemViewKey",_65="CPToolbarItemMinSizeKey",_66="CPToolbarItemMaxSizeKey",_67="CPToolbarItemVisibilityPriorityKey",_68="CPToolbarItemAutovalidatesKey"; +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_69,_6a,_6b){ +with(_69){ +_69=objj_msgSendSuper({receiver:_69,super_class:objj_getClass("CPToolbarItem").super_class},"init"); +if(_69){ +_itemIdentifier=objj_msgSend(_6b,"decodeObjectForKey:",_5a); +_minSize=objj_msgSend(_6b,"decodeSizeForKey:",_65); +_maxSize=objj_msgSend(_6b,"decodeSizeForKey:",_66); +objj_msgSend(_69,"setLabel:",objj_msgSend(_6b,"decodeObjectForKey:",_5b)); +objj_msgSend(_69,"setPaletteLabel:",objj_msgSend(_6b,"decodeObjectForKey:",_5c)); +objj_msgSend(_69,"setToolTip:",objj_msgSend(_6b,"decodeObjectForKey:",_5d)); +objj_msgSend(_69,"setTag:",objj_msgSend(_6b,"decodeObjectForKey:",_5e)); +objj_msgSend(_69,"setTarget:",objj_msgSend(_6b,"decodeObjectForKey:",_5f)); +objj_msgSend(_69,"setAction:",CPSelectorFromString(objj_msgSend(_6b,"decodeObjectForKey:",_60))); +objj_msgSend(_69,"setEnabled:",objj_msgSend(_6b,"decodeBoolForKey:",_61)); +objj_msgSend(_69,"setImage:",objj_msgSend(_6b,"decodeObjectForKey:",_62)); +objj_msgSend(_69,"setAlternateImage:",objj_msgSend(_6b,"decodeObjectForKey:",_63)); +objj_msgSend(_69,"setView:",objj_msgSend(_6b,"decodeObjectForKey:",_64)); +objj_msgSend(_69,"setVisibilityPriority:",objj_msgSend(_6b,"decodeIntForKey:",_67)); +objj_msgSend(_69,"setAutovalidates:",objj_msgSend(_6b,"decodeBoolForKey:",_68)); +} +return _69; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(_6e,"encodeObject:forKey:",_itemIdentifier,_5a); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"label"),_5b); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"paletteLabel"),_5c); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"toolTip"),_5d); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"tag"),_5e); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"target"),_5f); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"action"),_60); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"isEnabled"),_61); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"image"),_62); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"alternateImage"),_63); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"view"),_64); +objj_msgSend(_6e,"encodeSize:forKey:",objj_msgSend(_6c,"minSize"),_65); +objj_msgSend(_6e,"encodeSize:forKey:",objj_msgSend(_6c,"maxSize"),_66); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"visibilityPriority"),_67); +objj_msgSend(_6e,"encodeBool:forKey:",objj_msgSend(_6c,"autovalidates"),_68); +} +})]); +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_6f,_70){ +with(_6f){ +var _71=objj_msgSend(objj_msgSend(objj_msgSend(_6f,"class"),"alloc"),"initWithItemIdentifier:",_itemIdentifier); +if(_view){ +objj_msgSend(_71,"setView:",objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_view))); +} +objj_msgSend(_71,"_setToolbar:",_toolbar); +objj_msgSend(_71,"setLabel:",_label); +objj_msgSend(_71,"setPaletteLabel:",_paletteLabel); +objj_msgSend(_71,"setToolTip:",objj_msgSend(_6f,"toolTip")); +objj_msgSend(_71,"setTag:",objj_msgSend(_6f,"tag")); +objj_msgSend(_71,"setTarget:",objj_msgSend(_6f,"target")); +objj_msgSend(_71,"setAction:",objj_msgSend(_6f,"action")); +objj_msgSend(_71,"setEnabled:",objj_msgSend(_6f,"isEnabled")); +objj_msgSend(_71,"setImage:",objj_msgSend(_6f,"image")); +objj_msgSend(_71,"setAlternateImage:",objj_msgSend(_6f,"alternateImage")); +objj_msgSend(_71,"setMinSize:",_minSize); +objj_msgSend(_71,"setMaxSize:",_maxSize); +objj_msgSend(_71,"setVisibilityPriority:",objj_msgSend(_6f,"visibilityPriority")); +objj_msgSend(_71,"setAutovalidates:",objj_msgSend(_6f,"autovalidates")); +return _71; +} +})]); +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_2,[new objj_method(sel_getUid("_standardItemWithItemIdentifier:"),function(_72,_73,_74){ +with(_72){ +switch(_74){ +case CPToolbarSeparatorItemIdentifier: +return objj_msgSend(_CPToolbarSeparatorItem,"new"); +case CPToolbarSpaceItemIdentifier: +return objj_msgSend(_CPToolbarSpaceItem,"new"); +case CPToolbarFlexibleSpaceItemIdentifier: +return objj_msgSend(_CPToolbarFlexibleSpaceItem,"new"); +case CPToolbarShowColorsItemIdentifier: +return objj_msgSend(_CPToolbarShowColorsItem,"new"); +case CPToolbarShowFontsItemIdentifier: +return nil; +case CPToolbarCustomizeToolbarItemIdentifier: +return nil; +case CPToolbarPrintItemIdentifier: +return nil; +} +return nil; +} +})]); +objj_executeFile("_CPToolbarFlexibleSpaceItem.j",YES); +objj_executeFile("_CPToolbarShowColorsItem.j",YES); +objj_executeFile("_CPToolbarSeparatorItem.j",YES); +objj_executeFile("_CPToolbarSpaceItem.j",YES); +p;12;CPTreeNode.jt;3517;@STATIC;1.0;I;21;Foundation/CPObject.jt;3472; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPTreeNode"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_representedObject"),new objj_ivar("_parentNode"),new objj_ivar("_childNodes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("representedObject"),function(_3,_4){ +with(_3){ +return _representedObject; +} +}),new objj_method(sel_getUid("parentNode"),function(_5,_6){ +with(_5){ +return _parentNode; +} +}),new objj_method(sel_getUid("initWithRepresentedObject:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPTreeNode").super_class},"init"); +if(_7){ +_representedObject=_9; +_childNodes=[]; +} +return _7; +} +}),new objj_method(sel_getUid("isLeaf"),function(_a,_b){ +with(_a){ +return objj_msgSend(_childNodes,"count")<=0; +} +}),new objj_method(sel_getUid("childNodes"),function(_c,_d){ +with(_c){ +return objj_msgSend(_childNodes,"copy"); +} +}),new objj_method(sel_getUid("mutableChildNodes"),function(_e,_f){ +with(_e){ +return objj_msgSend(_e,"mutableArrayValueForKey:","childNodes"); +} +}),new objj_method(sel_getUid("insertObject:inChildNodesAtIndex:"),function(_10,_11,_12,_13){ +with(_10){ +objj_msgSend(objj_msgSend(_12._parentNode,"mutableChildNodes"),"removeObjectIdenticalTo:",_12); +_12._parentNode=_10; +objj_msgSend(_childNodes,"insertObject:atIndex:",_12,_13); +} +}),new objj_method(sel_getUid("removeObjectFromChildNodesAtIndex:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_childNodes,"objectAtIndex:",_16)._parentNode=nil; +objj_msgSend(_childNodes,"removeObjectAtIndex:",_16); +} +}),new objj_method(sel_getUid("replaceObjectFromChildNodesAtIndex:withObject:"),function(_17,_18,_19,_1a){ +with(_17){ +var _1b=objj_msgSend(_childNodes,"objectAtIndex:",_19); +_1b._parentNode=nil; +_1a._parentNode=_17; +objj_msgSend(_childNodes,"replaceObjectAtIndex:withObject:",_19,_1a); +} +}),new objj_method(sel_getUid("objectInChildNodesAtIndex:"),function(_1c,_1d,_1e){ +with(_1c){ +return _childNodes[_1e]; +} +}),new objj_method(sel_getUid("sortWithSortDescriptors:recursively:"),function(_1f,_20,_21,_22){ +with(_1f){ +objj_msgSend(_childNodes,"sortUsingDescriptors:",_21); +if(!_22){ +return; +} +var _23=objj_msgSend(_childNodes,"count"); +while(_23--){ +objj_msgSend(_childNodes[_23],"sortWithSortDescriptors:recursively:",_21,YES); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("treeNodeWithRepresentedObject:"),function(_24,_25,_26){ +with(_24){ +return objj_msgSend(objj_msgSend(_24,"alloc"),"initWithRepresentedObject:",_26); +} +})]); +var _27="CPTreeNodeRepresentedObjectKey",_28="CPTreeNodeParentNodeKey",_29="CPTreeNodeChildNodesKey"; +var _1=objj_getClass("CPTreeNode"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTreeNode\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_2a,_2b,_2c){ +with(_2a){ +_2a=objj_msgSendSuper({receiver:_2a,super_class:objj_getClass("CPTreeNode").super_class},"init"); +if(_2a){ +_representedObject=objj_msgSend(_2c,"decodeObjectForKey:",_27); +_parentNode=objj_msgSend(_2c,"decodeObjectForKey:",_28); +_childNodes=objj_msgSend(_2c,"decodeObjectForKey:",_29); +} +return _2a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2d,_2e,_2f){ +with(_2d){ +objj_msgSend(_2f,"encodeObject:forKey:",_representedObject,_27); +objj_msgSend(_2f,"encodeConditionalObject:forKey:",_parentNode,_28); +objj_msgSend(_2f,"encodeObject:forKey:",_childNodes,_29); +} +})]); +p;8;CPView.jt;47699;@STATIC;1.0;I;20;Foundation/CPArray.jI;26;Foundation/CPObjJRuntime.ji;19;CGAffineTransform.ji;12;CGGeometry.ji;9;CPColor.ji;12;CPGeometry.ji;19;CPGraphicsContext.ji;13;CPResponder.ji;9;CPTheme.ji;18;_CPDisplayServer.jt;47474; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObjJRuntime.j",NO); +objj_executeFile("CGAffineTransform.j",YES); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPGraphicsContext.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPTheme.j",YES); +objj_executeFile("_CPDisplayServer.j",YES); +CPViewNotSizable=0; +CPViewMinXMargin=1; +CPViewWidthSizable=2; +CPViewMaxXMargin=4; +CPViewMinYMargin=8; +CPViewHeightSizable=16; +CPViewMaxYMargin=32; +CPViewBoundsDidChangeNotification="CPViewBoundsDidChangeNotification"; +CPViewFrameDidChangeNotification="CPViewFrameDidChangeNotification"; +var _1=nil,_2=nil; +var _3={},_4=1<<0,_5=1<<1; +var _6=objj_allocateClassPair(CPResponder,"CPView"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_window"),new objj_ivar("_superview"),new objj_ivar("_subviews"),new objj_ivar("_graphicsContext"),new objj_ivar("_tag"),new objj_ivar("_frame"),new objj_ivar("_bounds"),new objj_ivar("_boundsTransform"),new objj_ivar("_inverseBoundsTransform"),new objj_ivar("_registeredDraggedTypes"),new objj_ivar("_registeredDraggedTypesArray"),new objj_ivar("_isHidden"),new objj_ivar("_hitTests"),new objj_ivar("_clipsToBounds"),new objj_ivar("_postsFrameChangedNotifications"),new objj_ivar("_postsBoundsChangedNotifications"),new objj_ivar("_inhibitFrameAndBoundsChangedNotifications"),new objj_ivar("_dirtyRect"),new objj_ivar("_opacity"),new objj_ivar("_backgroundColor"),new objj_ivar("_autoresizesSubviews"),new objj_ivar("_autoresizingMask"),new objj_ivar("_layer"),new objj_ivar("_wantsLayer"),new objj_ivar("_isInFullScreenMode"),new objj_ivar("_fullScreenModeState"),new objj_ivar("_needsLayout"),new objj_ivar("_ephemeralSubviews"),new objj_ivar("_theme"),new objj_ivar("_themeAttributes"),new objj_ivar("_themeState"),new objj_ivar("_ephemeralSubviewsForNames"),new objj_ivar("_ephereralSubviews"),new objj_ivar("_nextKeyView"),new objj_ivar("_previousKeyView"),new objj_ivar("_viewClassFlags")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("setupViewFlags"),function(_8,_9){ +with(_8){ +var _a=objj_msgSend(_8,"class"),_b=objj_msgSend(_a,"UID"); +if(_3[_b]===undefined){ +var _c=0; +if(objj_msgSend(_a,"instanceMethodForSelector:",sel_getUid("drawRect:"))!==objj_msgSend(CPView,"instanceMethodForSelector:",sel_getUid("drawRect:"))){ +_c|=_4; +} +if(objj_msgSend(_a,"instanceMethodForSelector:",sel_getUid("layoutSubviews"))!==objj_msgSend(CPView,"instanceMethodForSelector:",sel_getUid("layoutSubviews"))){ +_c|=_5; +} +_3[_b]=_c; +} +_viewClassFlags=_3[_b]; +} +}),new objj_method(sel_getUid("init"),function(_d,_e){ +with(_d){ +return objj_msgSend(_d,"initWithFrame:",CGRectMakeZero()); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f,_10,_11){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPView").super_class},"init"); +if(_f){ +var _12=(_11.size.width),_13=(_11.size.height); +_subviews=[]; +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_tag=-1; +_frame={origin:{x:_11.origin.x,y:_11.origin.y},size:{width:_11.size.width,height:_11.size.height}}; +_bounds={origin:{x:0,y:0},size:{width:_12,height:_13}}; +_autoresizingMask=CPViewNotSizable; +_autoresizesSubviews=YES; +_clipsToBounds=YES; +_opacity=1; +_isHidden=NO; +_hitTests=YES; +_theme=objj_msgSend(CPTheme,"defaultTheme"); +_themeState=CPThemeStateNormal; +objj_msgSend(_f,"setupViewFlags"); +objj_msgSend(_f,"_loadThemeAttributes"); +} +return _f; +} +}),new objj_method(sel_getUid("superview"),function(_14,_15){ +with(_14){ +return _superview; +} +}),new objj_method(sel_getUid("subviews"),function(_16,_17){ +with(_16){ +return objj_msgSend(_subviews,"copy"); +} +}),new objj_method(sel_getUid("window"),function(_18,_19){ +with(_18){ +return _window; +} +}),new objj_method(sel_getUid("addSubview:"),function(_1a,_1b,_1c){ +with(_1a){ +objj_msgSend(_1a,"_insertSubview:atIndex:",_1c,CPNotFound); +} +}),new objj_method(sel_getUid("addSubview:positioned:relativeTo:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +var _22=_21?objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_21):CPNotFound; +if(_22===CPNotFound){ +_22=(_20===CPWindowAbove)?objj_msgSend(_subviews,"count"):0; +}else{ +if(_20===CPWindowAbove){ +++_22; +} +} +objj_msgSend(_1d,"_insertSubview:atIndex:",_1f,_22); +} +}),new objj_method(sel_getUid("_insertSubview:atIndex:"),function(_23,_24,_25,_26){ +with(_23){ +var _27=_subviews.length; +objj_msgSend(objj_msgSend(_23,"window"),"_dirtyKeyViewLoop"); +if(_25._superview==_23){ +var _28=objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_25); +if(_28===_26||_28===_27-1&&_26===_27){ +return; +} +objj_msgSend(_subviews,"removeObjectAtIndex:",_28); +if(_26>_28){ +--_26; +} +--_27; +}else{ +objj_msgSend(_25,"removeFromSuperview"); +objj_msgSend(_25,"_setWindow:",_window); +objj_msgSend(_25,"viewWillMoveToSuperview:",_23); +_25._superview=_23; +} +if(_26===CPNotFound||_26>=_27){ +_subviews.push(_25); +}else{ +_subviews.splice(_26,0,_25); +} +objj_msgSend(_25,"setNextResponder:",_23); +objj_msgSend(_25,"viewDidMoveToSuperview"); +objj_msgSend(_23,"didAddSubview:",_25); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_29,_2a,_2b){ +with(_29){ +} +}),new objj_method(sel_getUid("removeFromSuperview"),function(_2c,_2d){ +with(_2c){ +if(!_superview){ +return; +} +objj_msgSend(objj_msgSend(_2c,"window"),"_dirtyKeyViewLoop"); +objj_msgSend(_superview,"willRemoveSubview:",_2c); +objj_msgSend(_superview._subviews,"removeObject:",_2c); +_superview=nil; +objj_msgSend(_2c,"_setWindow:",nil); +} +}),new objj_method(sel_getUid("replaceSubview:with:"),function(_2e,_2f,_30,_31){ +with(_2e){ +if(_30._superview!=_2e){ +return; +} +var _32=objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_30); +objj_msgSend(_30,"removeFromSuperview"); +objj_msgSend(_2e,"_insertSubview:atIndex:",_31,_32); +} +}),new objj_method(sel_getUid("setSubviews:"),function(_33,_34,_35){ +with(_33){ +if(!_35){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"newSubviews cannot be nil in -[CPView setSubviews:]"); +} +if(objj_msgSend(_subviews,"isEqual:",_35)){ +return; +} +if(objj_msgSend(_subviews,"count")===0){ +var _36=0,_37=objj_msgSend(_35,"count"); +for(;_36<_37;++_36){ +objj_msgSend(_33,"addSubview:",_35[_36]); +} +return; +} +if(objj_msgSend(_35,"count")===0){ +var _37=objj_msgSend(_subviews,"count"); +while(_37--){ +objj_msgSend(_subviews[_37],"removeFromSuperview"); +} +return; +} +var _38=objj_msgSend(CPMutableSet,"setWithArray:",_subviews); +objj_msgSend(_38,"removeObjectsInArray:",_35); +objj_msgSend(_38,"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +var _39=objj_msgSend(CPMutableSet,"setWithArray:",_35); +objj_msgSend(_39,"removeObjectsInArray:",_subviews); +var _3a=nil,_3b=objj_msgSend(_39,"objectEnumerator"); +while(_3a=objj_msgSend(_3b,"nextObject")){ +objj_msgSend(_33,"addSubview:",_3a); +} +if(objj_msgSend(_subviews,"isEqual:",_35)){ +return; +} +_subviews=objj_msgSend(_35,"copy"); +} +}),new objj_method(sel_getUid("_setWindow:"),function(_3c,_3d,_3e){ +with(_3c){ +if(_window===_3e){ +return; +} +objj_msgSend(objj_msgSend(_3c,"window"),"_dirtyKeyViewLoop"); +if(objj_msgSend(_window,"firstResponder")===_3c){ +objj_msgSend(_window,"makeFirstResponder:",nil); +} +objj_msgSend(_3c,"viewWillMoveToWindow:",_3e); +if(_registeredDraggedTypes){ +objj_msgSend(_window,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_3e,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +} +_window=_3e; +var _3f=objj_msgSend(_subviews,"count"); +while(_3f--){ +objj_msgSend(_subviews[_3f],"_setWindow:",_3e); +} +objj_msgSend(_3c,"viewDidMoveToWindow"); +objj_msgSend(objj_msgSend(_3c,"window"),"_dirtyKeyViewLoop"); +} +}),new objj_method(sel_getUid("isDescendantOf:"),function(_40,_41,_42){ +with(_40){ +var _43=_40; +do{ +if(_43==_42){ +return YES; +} +}while(_43=objj_msgSend(_43,"superview")); +return NO; +} +}),new objj_method(sel_getUid("viewDidMoveToSuperview"),function(_44,_45){ +with(_44){ +objj_msgSend(_44,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_46,_47){ +with(_46){ +} +}),new objj_method(sel_getUid("viewWillMoveToSuperview:"),function(_48,_49,_4a){ +with(_48){ +} +}),new objj_method(sel_getUid("viewWillMoveToWindow:"),function(_4b,_4c,_4d){ +with(_4b){ +} +}),new objj_method(sel_getUid("willRemoveSubview:"),function(_4e,_4f,_50){ +with(_4e){ +} +}),new objj_method(sel_getUid("enclosingMenuItem"),function(_51,_52){ +with(_51){ +var _53=_51; +while(_53&&!objj_msgSend(_53,"isKindOfClass:",objj_msgSend(_CPMenuItemView,"class"))){ +_53=objj_msgSend(_53,"superview"); +} +if(_53){ +return _53._menuItem; +} +return nil; +} +}),new objj_method(sel_getUid("setTag:"),function(_54,_55,_56){ +with(_54){ +_tag=_56; +} +}),new objj_method(sel_getUid("tag"),function(_57,_58){ +with(_57){ +return _tag; +} +}),new objj_method(sel_getUid("viewWithTag:"),function(_59,_5a,_5b){ +with(_59){ +if(objj_msgSend(_59,"tag")==_5b){ +return _59; +} +var _5c=0,_5d=_subviews.length; +for(;_5c<_5d;++_5c){ +var _5e=objj_msgSend(_subviews[_5c],"viewWithTag:",_5b); +if(_5e){ +return _5e; +} +} +return nil; +} +}),new objj_method(sel_getUid("isFlipped"),function(_5f,_60){ +with(_5f){ +return YES; +} +}),new objj_method(sel_getUid("setFrame:"),function(_61,_62,_63){ +with(_61){ +if(((_frame.origin.x==_63.origin.x&&_frame.origin.y==_63.origin.y)&&(_frame.size.width==_63.size.width&&_frame.size.height==_63.size.height))){ +return; +} +_inhibitFrameAndBoundsChangedNotifications=YES; +objj_msgSend(_61,"setFrameOrigin:",_63.origin); +objj_msgSend(_61,"setFrameSize:",_63.size); +_inhibitFrameAndBoundsChangedNotifications=NO; +if(_postsFrameChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_61); +} +} +}),new objj_method(sel_getUid("frame"),function(_64,_65){ +with(_64){ +return {origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}}; +} +}),new objj_method(sel_getUid("frameOrigin"),function(_66,_67){ +with(_66){ +return {x:_frame.origin.x,y:_frame.origin.y}; +} +}),new objj_method(sel_getUid("frameSize"),function(_68,_69){ +with(_68){ +return {width:_frame.size.width,height:_frame.size.height}; +} +}),new objj_method(sel_getUid("setCenter:"),function(_6a,_6b,_6c){ +with(_6a){ +objj_msgSend(_6a,"setFrameOrigin:",CGPointMake(_6c.x-_frame.size.width/2,_6c.y-_frame.size.height/2)); +} +}),new objj_method(sel_getUid("center"),function(_6d,_6e){ +with(_6d){ +return CGPointMake(_frame.size.width/2+_frame.origin.x,_frame.size.height/2+_frame.origin.y); +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_6f,_70,_71){ +with(_6f){ +var _72=_frame.origin; +if(!_71||(_72.x==_71.x&&_72.y==_71.y)){ +return; +} +_72.x=_71.x; +_72.y=_71.y; +if(_postsFrameChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_6f); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_73,_74,_75){ +with(_73){ +var _76=_frame.size; +if(!_75||(_76.width==_75.width&&_76.height==_75.height)){ +return; +} +var _77={width:_76.width,height:_76.height}; +_76.width=_75.width; +_76.height=_75.height; +if(YES){ +_bounds.size.width=_75.width; +_bounds.size.height=_75.height; +} +if(_layer){ +objj_msgSend(_layer,"_owningViewBoundsChanged"); +} +if(_autoresizesSubviews){ +objj_msgSend(_73,"resizeSubviewsWithOldSize:",_77); +} +objj_msgSend(_73,"setNeedsLayout"); +objj_msgSend(_73,"setNeedsDisplay:",YES); +if(_postsFrameChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_73); +} +} +}),new objj_method(sel_getUid("setBounds:"),function(_78,_79,_7a){ +with(_78){ +if(((_bounds.origin.x==_7a.origin.x&&_bounds.origin.y==_7a.origin.y)&&(_bounds.size.width==_7a.size.width&&_bounds.size.height==_7a.size.height))){ +return; +} +_inhibitFrameAndBoundsChangedNotifications=YES; +objj_msgSend(_78,"setBoundsOrigin:",_7a.origin); +objj_msgSend(_78,"setBoundsSize:",_7a.size); +_inhibitFrameAndBoundsChangedNotifications=NO; +if(_postsBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_78); +} +} +}),new objj_method(sel_getUid("bounds"),function(_7b,_7c){ +with(_7b){ +return {origin:{x:_bounds.origin.x,y:_bounds.origin.y},size:{width:_bounds.size.width,height:_bounds.size.height}}; +} +}),new objj_method(sel_getUid("boundsOrigin"),function(_7d,_7e){ +with(_7d){ +return {x:_bounds.origin.x,y:_bounds.origin.y}; +} +}),new objj_method(sel_getUid("boundsSize"),function(_7f,_80){ +with(_7f){ +return {width:_bounds.size.width,height:_bounds.size.height}; +} +}),new objj_method(sel_getUid("setBoundsOrigin:"),function(_81,_82,_83){ +with(_81){ +var _84=_bounds.origin; +if((_84.x==_83.x&&_84.y==_83.y)){ +return; +} +_84.x=_83.x; +_84.y=_83.y; +if(_84.x!=0||_84.y!=0){ +_boundsTransform={a:1,b:0,c:0,d:1,tx:-_84.x,ty:-_84.y}; +_inverseBoundsTransform=CGAffineTransformInvert(_boundsTransform); +}else{ +_boundsTransform=nil; +_inverseBoundsTransform=nil; +} +if(_postsBoundsChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_81); +} +} +}),new objj_method(sel_getUid("setBoundsSize:"),function(_85,_86,_87){ +with(_85){ +var _88=_bounds.size; +if((_88.width==_87.width&&_88.height==_87.height)){ +return; +} +var _89=_frame.size; +if(!(_88.width==_89.width&&_88.height==_89.height)){ +var _8a=_bounds.origin; +_8a.x/=_88.width/_89.width; +_8a.y/=_88.height/_89.height; +} +_88.width=_87.width; +_88.height=_87.height; +if(!(_88.width==_89.width&&_88.height==_89.height)){ +var _8a=_bounds.origin; +_8a.x*=_88.width/_89.width; +_8a.y*=_88.height/_89.height; +} +if(_postsBoundsChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_85); +} +} +}),new objj_method(sel_getUid("resizeWithOldSuperviewSize:"),function(_8b,_8c,_8d){ +with(_8b){ +var _8e=objj_msgSend(_8b,"autoresizingMask"); +if(_8e==CPViewNotSizable){ +return; +} +var _8f=_superview._frame,_90={origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}},dX=((_8f.size.width)-_8d.width)/(((_8e&CPViewMinXMargin)?1:0)+(_8e&CPViewWidthSizable?1:0)+(_8e&CPViewMaxXMargin?1:0)),dY=((_8f.size.height)-_8d.height)/((_8e&CPViewMinYMargin?1:0)+(_8e&CPViewHeightSizable?1:0)+(_8e&CPViewMaxYMargin?1:0)); +if(_8e&CPViewMinXMargin){ +_90.origin.x+=dX; +} +if(_8e&CPViewWidthSizable){ +_90.size.width+=dX; +} +if(_8e&CPViewMinYMargin){ +_90.origin.y+=dY; +} +if(_8e&CPViewHeightSizable){ +_90.size.height+=dY; +} +objj_msgSend(_8b,"setFrame:",_90); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_91,_92,_93){ +with(_91){ +var _94=_subviews.length; +while(_94--){ +objj_msgSend(_subviews[_94],"resizeWithOldSuperviewSize:",_93); +} +} +}),new objj_method(sel_getUid("setAutoresizesSubviews:"),function(_95,_96,_97){ +with(_95){ +_autoresizesSubviews=!!_97; +} +}),new objj_method(sel_getUid("autoresizesSubviews"),function(_98,_99){ +with(_98){ +return _autoresizesSubviews; +} +}),new objj_method(sel_getUid("setAutoresizingMask:"),function(_9a,_9b,_9c){ +with(_9a){ +_autoresizingMask=_9c; +} +}),new objj_method(sel_getUid("autoresizingMask"),function(_9d,_9e){ +with(_9d){ +return _autoresizingMask; +} +}),new objj_method(sel_getUid("enterFullScreenMode"),function(_9f,_a0){ +with(_9f){ +return objj_msgSend(_9f,"enterFullScreenMode:withOptions:",nil,nil); +} +}),new objj_method(sel_getUid("enterFullScreenMode:withOptions:"),function(_a1,_a2,_a3,_a4){ +with(_a1){ +_fullScreenModeState=_a5(_a1); +var _a6=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"contentBounds"),CPBorderlessWindowMask); +objj_msgSend(_a6,"setLevel:",CPScreenSaverWindowLevel); +objj_msgSend(_a6,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +var _a7=objj_msgSend(_a6,"contentView"); +objj_msgSend(_a7,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_a7,"addSubview:",_a1); +objj_msgSend(_a1,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_a1,"setFrame:",CGRectMakeCopy(objj_msgSend(_a7,"bounds"))); +objj_msgSend(_a6,"makeKeyAndOrderFront:",_a1); +objj_msgSend(_a6,"makeFirstResponder:",_a1); +_isInFullScreenMode=YES; +return YES; +} +}),new objj_method(sel_getUid("exitFullScreenMode"),function(_a8,_a9){ +with(_a8){ +objj_msgSend(_a8,"exitFullScreenModeWithOptions:",nil); +} +}),new objj_method(sel_getUid("exitFullScreenModeWithOptions:"),function(_aa,_ab,_ac){ +with(_aa){ +if(!_isInFullScreenMode){ +return; +} +_isInFullScreenMode=NO; +objj_msgSend(_aa,"setFrame:",_fullScreenModeState.frame); +objj_msgSend(_aa,"setAutoresizingMask:",_fullScreenModeState.autoresizingMask); +objj_msgSend(_fullScreenModeState.superview,"_insertSubview:atIndex:",_aa,_fullScreenModeState.index); +objj_msgSend(objj_msgSend(_aa,"window"),"orderOut:",_aa); +} +}),new objj_method(sel_getUid("isInFullScreenMode"),function(_ad,_ae){ +with(_ad){ +return _isInFullScreenMode; +} +}),new objj_method(sel_getUid("setHidden:"),function(_af,_b0,_b1){ +with(_af){ +_b1=!!_b1; +if(_isHidden===_b1){ +return; +} +_isHidden=_b1; +if(_b1){ +var _b2=objj_msgSend(_window,"firstResponder"); +if(objj_msgSend(_b2,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +do{ +if(_af==_b2){ +objj_msgSend(_window,"makeFirstResponder:",objj_msgSend(_af,"nextValidKeyView")); +break; +} +}while(_b2=objj_msgSend(_b2,"superview")); +} +objj_msgSend(_af,"_notifyViewDidHide"); +}else{ +objj_msgSend(_af,"_notifyViewDidUnhide"); +} +} +}),new objj_method(sel_getUid("_notifyViewDidHide"),function(_b3,_b4){ +with(_b3){ +objj_msgSend(_b3,"viewDidHide"); +var _b5=objj_msgSend(_subviews,"count"); +while(_b5--){ +objj_msgSend(_subviews[_b5],"_notifyViewDidHide"); +} +} +}),new objj_method(sel_getUid("_notifyViewDidUnhide"),function(_b6,_b7){ +with(_b6){ +objj_msgSend(_b6,"viewDidUnhide"); +var _b8=objj_msgSend(_subviews,"count"); +while(_b8--){ +objj_msgSend(_subviews[_b8],"_notifyViewDidUnhide"); +} +} +}),new objj_method(sel_getUid("isHidden"),function(_b9,_ba){ +with(_b9){ +return _isHidden; +} +}),new objj_method(sel_getUid("setClipsToBounds:"),function(_bb,_bc,_bd){ +with(_bb){ +if(_clipsToBounds===_bd){ +return; +} +_clipsToBounds=_bd; +} +}),new objj_method(sel_getUid("clipsToBounds"),function(_be,_bf){ +with(_be){ +return _clipsToBounds; +} +}),new objj_method(sel_getUid("setAlphaValue:"),function(_c0,_c1,_c2){ +with(_c0){ +if(_opacity==_c2){ +return; +} +_opacity=_c2; +} +}),new objj_method(sel_getUid("alphaValue"),function(_c3,_c4){ +with(_c3){ +return _opacity; +} +}),new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"),function(_c5,_c6){ +with(_c5){ +var _c7=_c5; +while(_c7&&!objj_msgSend(_c7,"isHidden")){ +_c7=objj_msgSend(_c7,"superview"); +} +return _c7!==nil; +} +}),new objj_method(sel_getUid("viewDidHide"),function(_c8,_c9){ +with(_c8){ +} +}),new objj_method(sel_getUid("viewDidUnhide"),function(_ca,_cb){ +with(_ca){ +} +}),new objj_method(sel_getUid("acceptsFirstMouse:"),function(_cc,_cd,_ce){ +with(_cc){ +return YES; +} +}),new objj_method(sel_getUid("hitTests"),function(_cf,_d0){ +with(_cf){ +return _hitTests; +} +}),new objj_method(sel_getUid("setHitTests:"),function(_d1,_d2,_d3){ +with(_d1){ +_hitTests=!!_d3; +} +}),new objj_method(sel_getUid("hitTest:"),function(_d4,_d5,_d6){ +with(_d4){ +if(_isHidden||!_hitTests||!CPRectContainsPoint(_frame,_d6)){ +return nil; +} +var _d7=nil,i=_subviews.length,_d8={x:_d6.x-(_frame.origin.x),y:_d6.y-(_frame.origin.y)}; +if(_inverseBoundsTransform){ +_d8={x:_d8.x*_inverseBoundsTransform.a+_d8.y*_inverseBoundsTransform.c+_inverseBoundsTransform.tx,y:_d8.x*_inverseBoundsTransform.b+_d8.y*_inverseBoundsTransform.d+_inverseBoundsTransform.ty}; +} +while(i--){ +if(_d7=objj_msgSend(_subviews[i],"hitTest:",_d8)){ +return _d7; +} +} +return _d4; +} +}),new objj_method(sel_getUid("needsPanelToBecomeKey"),function(_d9,_da){ +with(_d9){ +return NO; +} +}),new objj_method(sel_getUid("mouseDownCanMoveWindow"),function(_db,_dc){ +with(_db){ +return !objj_msgSend(_db,"isOpaque"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_dd,_de,_df){ +with(_dd){ +if(objj_msgSend(_dd,"mouseDownCanMoveWindow")){ +objj_msgSendSuper({receiver:_dd,super_class:objj_getClass("CPView").super_class},"mouseDown:",_df); +} +} +}),new objj_method(sel_getUid("rightMouseDown:"),function(_e0,_e1,_e2){ +with(_e0){ +var _e3=objj_msgSend(_e0,"menuForEvent:",_e2); +if(_e3){ +objj_msgSend(CPMenu,"popUpContextMenu:withEvent:forView:",_e3,_e2,_e0); +}else{ +if(objj_msgSend(objj_msgSend(_e0,"nextResponder"),"isKindOfClass:",CPView)){ +objj_msgSendSuper({receiver:_e0,super_class:objj_getClass("CPView").super_class},"rightMouseDown:",_e2); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_e2,"window"),"platformWindow"),"_propagateContextMenuDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("menuForEvent:"),function(_e4,_e5,_e6){ +with(_e4){ +return objj_msgSend(_e4,"menu")||objj_msgSend(objj_msgSend(_e4,"class"),"defaultMenu"); +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_e7,_e8,_e9){ +with(_e7){ +if(_backgroundColor==_e9){ +return; +} +if(_e9==objj_msgSend(CPNull,"null")){ +_e9=nil; +} +_backgroundColor=_e9; +} +}),new objj_method(sel_getUid("backgroundColor"),function(_ea,_eb){ +with(_ea){ +return _backgroundColor; +} +}),new objj_method(sel_getUid("convertPoint:fromView:"),function(_ec,_ed,_ee,_ef){ +with(_ec){ +return CGPointApplyAffineTransform(_ee,_f0(_ef,_ec)); +} +}),new objj_method(sel_getUid("convertPoint:toView:"),function(_f1,_f2,_f3,_f4){ +with(_f1){ +return CGPointApplyAffineTransform(_f3,_f0(_f1,_f4)); +} +}),new objj_method(sel_getUid("convertSize:fromView:"),function(_f5,_f6,_f7,_f8){ +with(_f5){ +return CGSizeApplyAffineTransform(_f7,_f0(_f8,_f5)); +} +}),new objj_method(sel_getUid("convertSize:toView:"),function(_f9,_fa,_fb,_fc){ +with(_f9){ +return CGSizeApplyAffineTransform(_fb,_f0(_f9,_fc)); +} +}),new objj_method(sel_getUid("convertRect:fromView:"),function(_fd,_fe,_ff,_100){ +with(_fd){ +return CGRectApplyAffineTransform(_ff,_f0(_100,_fd)); +} +}),new objj_method(sel_getUid("convertRect:toView:"),function(self,_101,_102,_103){ +with(self){ +return CGRectApplyAffineTransform(_102,_f0(self,_103)); +} +}),new objj_method(sel_getUid("setPostsFrameChangedNotifications:"),function(self,_104,_105){ +with(self){ +_105=!!_105; +if(_postsFrameChangedNotifications===_105){ +return; +} +_postsFrameChangedNotifications=_105; +if(_postsFrameChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,self); +} +} +}),new objj_method(sel_getUid("postsFrameChangedNotifications"),function(self,_106){ +with(self){ +return _postsFrameChangedNotifications; +} +}),new objj_method(sel_getUid("setPostsBoundsChangedNotifications:"),function(self,_107,_108){ +with(self){ +_108=!!_108; +if(_postsBoundsChangedNotifications===_108){ +return; +} +_postsBoundsChangedNotifications=_108; +if(_postsBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,self); +} +} +}),new objj_method(sel_getUid("postsBoundsChangedNotifications"),function(self,_109){ +with(self){ +return _postsBoundsChangedNotifications; +} +}),new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"),function(self,_10a,_10b,_10c,_10d,_10e,_10f,_110,_111){ +with(self){ +objj_msgSend(_window,"dragImage:at:offset:event:pasteboard:source:slideBack:",_10b,objj_msgSend(self,"convertPoint:toView:",_10c,nil),_10d,_10e,_10f,_110,_111); +} +}),new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"),function(self,_112,_113,_114,_115,_116,_117,_118,_119){ +with(self){ +objj_msgSend(_window,"dragView:at:offset:event:pasteboard:source:slideBack:",_113,objj_msgSend(self,"convertPoint:toView:",_114,nil),_115,_116,_117,_118,_119); +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(self,_11a,_11b){ +with(self){ +if(!_11b||!objj_msgSend(_11b,"count")){ +return; +} +var _11c=objj_msgSend(self,"window"); +objj_msgSend(_11c,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_registeredDraggedTypes,"addObjectsFromArray:",_11b); +objj_msgSend(_11c,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypesArray=nil; +} +}),new objj_method(sel_getUid("registeredDraggedTypes"),function(self,_11d){ +with(self){ +if(!_registeredDraggedTypesArray){ +_registeredDraggedTypesArray=objj_msgSend(_registeredDraggedTypes,"allObjects"); +} +return _registeredDraggedTypesArray; +} +}),new objj_method(sel_getUid("unregisterDraggedTypes"),function(self,_11e){ +with(self){ +objj_msgSend(objj_msgSend(self,"window"),"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_11f,_120){ +with(self){ +} +}),new objj_method(sel_getUid("setNeedsDisplay:"),function(self,_121,_122){ +with(self){ +if(_122){ +objj_msgSend(self,"setNeedsDisplayInRect:",objj_msgSend(self,"bounds")); +} +} +}),new objj_method(sel_getUid("setNeedsDisplayInRect:"),function(self,_123,_124){ +with(self){ +if(!(_viewClassFlags&_4)){ +return; +} +if((_124.size.width<=0||_124.size.height<=0)){ +return; +} +if(_dirtyRect&&!(_dirtyRect.size.width<=0||_dirtyRect.size.height<=0)){ +_dirtyRect=CGRectUnion(_124,_dirtyRect); +}else{ +_dirtyRect={origin:{x:_124.origin.x,y:_124.origin.y},size:{width:_124.size.width,height:_124.size.height}}; +} +_CPDisplayServerAddDisplayObject(self); +} +}),new objj_method(sel_getUid("needsDisplay"),function(self,_125){ +with(self){ +return _dirtyRect&&!(_dirtyRect.size.width<=0||_dirtyRect.size.height<=0); +} +}),new objj_method(sel_getUid("displayIfNeeded"),function(self,_126){ +with(self){ +if(objj_msgSend(self,"needsDisplay")){ +objj_msgSend(self,"displayRect:",_dirtyRect); +} +} +}),new objj_method(sel_getUid("display"),function(self,_127){ +with(self){ +objj_msgSend(self,"displayRect:",objj_msgSend(self,"visibleRect")); +} +}),new objj_method(sel_getUid("displayIfNeededInRect:"),function(self,_128,_129){ +with(self){ +if(objj_msgSend(self,"needsDisplay")){ +objj_msgSend(self,"displayRect:",_129); +} +} +}),new objj_method(sel_getUid("displayRect:"),function(self,_12a,_12b){ +with(self){ +objj_msgSend(self,"viewWillDraw"); +objj_msgSend(self,"displayRectIgnoringOpacity:inContext:",_12b,nil); +_dirtyRect=NULL; +} +}),new objj_method(sel_getUid("displayRectIgnoringOpacity:inContext:"),function(self,_12c,_12d,_12e){ +with(self){ +if(objj_msgSend(self,"isHidden")){ +return; +} +} +}),new objj_method(sel_getUid("viewWillDraw"),function(self,_12f){ +with(self){ +} +}),new objj_method(sel_getUid("lockFocus"),function(self,_130){ +with(self){ +if(!_graphicsContext){ +var _131=CGBitmapGraphicsContextCreate(); +_DOMContentsElement=_131.DOMElement; +_DOMContentsElement.style.zIndex=-100; +_DOMContentsElement.style.overflow="hidden"; +_DOMContentsElement.style.position="absolute"; +_DOMContentsElement.style.visibility="visible"; +_DOMContentsElement.width=ROUND((_frame.size.width)); +_DOMContentsElement.height=ROUND((_frame.size.height)); +_DOMContentsElement.style.top="0px"; +_DOMContentsElement.style.left="0px"; +_DOMContentsElement.style.width=ROUND((_frame.size.width))+"px"; +_DOMContentsElement.style.height=ROUND((_frame.size.height))+"px"; +_graphicsContext=objj_msgSend(CPGraphicsContext,"graphicsContextWithGraphicsPort:flipped:",_131,YES); +} +objj_msgSend(CPGraphicsContext,"setCurrentContext:",_graphicsContext); +CGContextSaveGState(objj_msgSend(_graphicsContext,"graphicsPort")); +} +}),new objj_method(sel_getUid("unlockFocus"),function(self,_132){ +with(self){ +CGContextRestoreGState(objj_msgSend(_graphicsContext,"graphicsPort")); +objj_msgSend(CPGraphicsContext,"setCurrentContext:",nil); +} +}),new objj_method(sel_getUid("setNeedsLayout"),function(self,_133){ +with(self){ +if(!(_viewClassFlags&_5)){ +return; +} +_needsLayout=YES; +_CPDisplayServerAddLayoutObject(self); +} +}),new objj_method(sel_getUid("layoutIfNeeded"),function(self,_134){ +with(self){ +if(_needsLayout){ +_needsLayout=NO; +objj_msgSend(self,"layoutSubviews"); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_135){ +with(self){ +} +}),new objj_method(sel_getUid("isOpaque"),function(self,_136){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("visibleRect"),function(self,_137){ +with(self){ +if(!_superview){ +return _bounds; +} +return CGRectIntersection(objj_msgSend(self,"convertRect:fromView:",objj_msgSend(_superview,"visibleRect"),_superview),_bounds); +} +}),new objj_method(sel_getUid("_enclosingClipView"),function(self,_138){ +with(self){ +var _139=_superview,_13a=objj_msgSend(CPClipView,"class"); +while(_139&&!objj_msgSend(_139,"isKindOfClass:",_13a)){ +_139=_139._superview; +} +return _139; +} +}),new objj_method(sel_getUid("scrollPoint:"),function(self,_13b,_13c){ +with(self){ +var _13d=objj_msgSend(self,"_enclosingClipView"); +if(!_13d){ +return; +} +objj_msgSend(_13d,"scrollToPoint:",objj_msgSend(self,"convertPoint:toView:",_13c,_13d)); +} +}),new objj_method(sel_getUid("scrollRectToVisible:"),function(self,_13e,_13f){ +with(self){ +var _140=objj_msgSend(self,"visibleRect"); +_13f=CGRectIntersection(_13f,_bounds); +if((_13f.size.width<=0||_13f.size.height<=0)||CGRectContainsRect(_140,_13f)){ +return NO; +} +var _141=objj_msgSend(self,"_enclosingClipView"); +if(!_141){ +return NO; +} +var _142={x:_140.origin.x,y:_140.origin.y}; +if((_13f.origin.x)<=(_140.origin.x)){ +_142.x=(_13f.origin.x); +}else{ +if((_13f.origin.x+_13f.size.width)>(_140.origin.x+_140.size.width)){ +_142.x+=(_13f.origin.x+_13f.size.width)-(_140.origin.x+_140.size.width); +} +} +if((_13f.origin.y)<=(_140.origin.y)){ +_142.y=CGRectGetMinY(_13f); +}else{ +if((_13f.origin.y+_13f.size.height)>(_140.origin.y+_140.size.height)){ +_142.y+=(_13f.origin.y+_13f.size.height)-(_140.origin.y+_140.size.height); +} +} +objj_msgSend(_141,"scrollToPoint:",CGPointMake(_142.x,_142.y)); +return YES; +} +}),new objj_method(sel_getUid("autoscroll:"),function(self,_143,_144){ +with(self){ +return objj_msgSend(objj_msgSend(self,"superview"),"autoscroll:",_144); +} +}),new objj_method(sel_getUid("adjustScroll:"),function(self,_145,_146){ +with(self){ +return _146; +} +}),new objj_method(sel_getUid("scrollRect:by:"),function(self,_147,_148,_149){ +with(self){ +} +}),new objj_method(sel_getUid("enclosingScrollView"),function(self,_14a){ +with(self){ +var _14b=_superview,_14c=objj_msgSend(CPScrollView,"class"); +while(_14b&&!objj_msgSend(_14b,"isKindOfClass:",_14c)){ +_14b=_14b._superview; +} +return _14b; +} +}),new objj_method(sel_getUid("scrollClipView:toPoint:"),function(self,_14d,_14e,_14f){ +with(self){ +objj_msgSend(_14e,"scrollToPoint:",_14f); +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(self,_150,_151){ +with(self){ +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("initialize"),function(self,_152){ +with(self){ +if(self!==objj_msgSend(CPView,"class")){ +return; +} +_1=objj_msgSend(CPNotificationCenter,"defaultCenter"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingFrame"),function(self,_153){ +with(self){ +return objj_msgSend(CPSet,"setWithObjects:","frameOrigin","frameSize"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingBounds"),function(self,_154){ +with(self){ +return objj_msgSend(CPSet,"setWithObjects:","boundsOrigin","boundsSize"); +} +}),new objj_method(sel_getUid("defaultMenu"),function(self,_155){ +with(self){ +return nil; +} +})]); +var _6=objj_getClass("CPView"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("performKeyEquivalent:"),function(self,_156,_157){ +with(self){ +var _158=objj_msgSend(_subviews,"count"); +while(_158--){ +if(objj_msgSend(_subviews[_158],"performKeyEquivalent:",_157)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("canBecomeKeyView"),function(self,_159){ +with(self){ +return objj_msgSend(self,"acceptsFirstResponder")&&!objj_msgSend(self,"isHiddenOrHasHiddenAncestor"); +} +}),new objj_method(sel_getUid("nextKeyView"),function(self,_15a){ +with(self){ +return _nextKeyView; +} +}),new objj_method(sel_getUid("nextValidKeyView"),function(self,_15b){ +with(self){ +var _15c=objj_msgSend(self,"nextKeyView"); +while(_15c&&!objj_msgSend(_15c,"canBecomeKeyView")){ +_15c=objj_msgSend(_15c,"nextKeyView"); +} +return _15c; +} +}),new objj_method(sel_getUid("previousKeyView"),function(self,_15d){ +with(self){ +return _previousKeyView; +} +}),new objj_method(sel_getUid("previousValidKeyView"),function(self,_15e){ +with(self){ +var _15f=objj_msgSend(self,"previousKeyView"); +while(_15f&&!objj_msgSend(_15f,"canBecomeKeyView")){ +_15f=objj_msgSend(_15f,"previousKeyView"); +} +return _15f; +} +}),new objj_method(sel_getUid("_setPreviousKeyView:"),function(self,_160,_161){ +with(self){ +_previousKeyView=_161; +} +}),new objj_method(sel_getUid("setNextKeyView:"),function(self,_162,next){ +with(self){ +_nextKeyView=next; +objj_msgSend(_nextKeyView,"_setPreviousKeyView:",self); +} +})]); +var _6=objj_getClass("CPView"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("setLayer:"),function(self,_163,_164){ +with(self){ +if(_layer==_164){ +return; +} +if(_layer){ +_layer._owningView=nil; +} +_layer=_164; +if(_layer){ +var _165=CGRectMakeCopy(objj_msgSend(self,"bounds")); +objj_msgSend(_layer,"_setOwningView:",self); +} +} +}),new objj_method(sel_getUid("layer"),function(self,_166){ +with(self){ +return _layer; +} +}),new objj_method(sel_getUid("setWantsLayer:"),function(self,_167,_168){ +with(self){ +_wantsLayer=!!_168; +} +}),new objj_method(sel_getUid("wantsLayer"),function(self,_169){ +with(self){ +return _wantsLayer; +} +})]); +var _6=objj_getClass("CPView"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("themeState"),function(self,_16a){ +with(self){ +return _themeState; +} +}),new objj_method(sel_getUid("hasThemeState:"),function(self,_16b,_16c){ +with(self){ +return !!(_themeState&((typeof _16c==="string")?CPThemeState(_16c):_16c)); +} +}),new objj_method(sel_getUid("setThemeState:"),function(self,_16d,_16e){ +with(self){ +var _16f=(typeof _16e==="string")?CPThemeState(_16e):_16e; +if(_themeState&_16f){ +return NO; +} +_themeState|=_16f; +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("unsetThemeState:"),function(self,_170,_171){ +with(self){ +var _172=((typeof _171==="string")?CPThemeState(_171):_171); +if(!(_themeState&_172)){ +return NO; +} +_themeState&=~_172; +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("_loadThemeAttributes"),function(self,_173){ +with(self){ +var _174=objj_msgSend(self,"class"),_175=objj_msgSend(_174,"_themeAttributes"),_176=_175.length; +if(!_176){ +return; +} +var _177=objj_msgSend(self,"theme"),_178=objj_msgSend(_174,"themeClass"); +_themeAttributes={}; +while(_176--){ +var _179=_175[_176--],_17a=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_179,_175[_176]); +objj_msgSend(_17a,"setParentAttribute:",objj_msgSend(_177,"attributeWithName:forClass:",_179,_178)); +_themeAttributes[_179]=_17a; +} +} +}),new objj_method(sel_getUid("setTheme:"),function(self,_17b,_17c){ +with(self){ +if(_theme===_17c){ +return; +} +_theme=_17c; +objj_msgSend(self,"viewDidChangeTheme"); +} +}),new objj_method(sel_getUid("theme"),function(self,_17d){ +with(self){ +return _theme; +} +}),new objj_method(sel_getUid("viewDidChangeTheme"),function(self,_17e){ +with(self){ +if(!_themeAttributes){ +return; +} +var _17f=objj_msgSend(self,"theme"),_180=objj_msgSend(objj_msgSend(self,"class"),"themeClass"); +for(var _181 in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_181)){ +objj_msgSend(_themeAttributes[_181],"setParentAttribute:",objj_msgSend(_17f,"attributeWithName:forClass:",_181,_180)); +} +} +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("_themeAttributeDictionary"),function(self,_182){ +with(self){ +var _183=objj_msgSend(CPDictionary,"dictionary"); +if(_themeAttributes){ +var _184=objj_msgSend(self,"theme"); +for(var _185 in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_185)){ +objj_msgSend(_183,"setObject:forKey:",_themeAttributes[_185],_185); +} +} +} +return _183; +} +}),new objj_method(sel_getUid("setValue:forThemeAttribute:inState:"),function(self,_186,_187,_188,_189){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_188]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_188+"'"); +} +var _18a=objj_msgSend(self,"currentValueForThemeAttribute:",_188); +objj_msgSend(_themeAttributes[_188],"setValue:forState:",_187,_189); +if(objj_msgSend(self,"currentValueForThemeAttribute:",_188)===_18a){ +return; +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setValue:forThemeAttribute:"),function(self,_18b,_18c,_18d){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_18d]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_18d+"'"); +} +var _18e=objj_msgSend(self,"currentValueForThemeAttribute:",_18d); +objj_msgSend(_themeAttributes[_18d],"setValue:",_18c); +if(objj_msgSend(self,"currentValueForThemeAttribute:",_18d)===_18e){ +return; +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("valueForThemeAttribute:inState:"),function(self,_18f,_190,_191){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_190]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_190+"'"); +} +return objj_msgSend(_themeAttributes[_190],"valueForState:",_191); +} +}),new objj_method(sel_getUid("valueForThemeAttribute:"),function(self,_192,_193){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_193]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_193+"'"); +} +return objj_msgSend(_themeAttributes[_193],"value"); +} +}),new objj_method(sel_getUid("currentValueForThemeAttribute:"),function(self,_194,_195){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_195]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_195+"'"); +} +return objj_msgSend(_themeAttributes[_195],"valueForState:",_themeState); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(self,_196,_197){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(self,_198,_199){ +with(self){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +}),new objj_method(sel_getUid("layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:"),function(self,_19a,_19b,_19c,_19d){ +with(self){ +if(!_ephemeralSubviewsForNames){ +_ephemeralSubviewsForNames={}; +_ephemeralSubviews=objj_msgSend(CPSet,"set"); +} +var _19e=objj_msgSend(self,"rectForEphemeralSubviewNamed:",_19b); +if(_19e&&!(_19e.size.width<=0||_19e.size.height<=0)){ +if(!_ephemeralSubviewsForNames[_19b]){ +_ephemeralSubviewsForNames[_19b]=objj_msgSend(self,"createEphemeralSubviewNamed:",_19b); +objj_msgSend(_ephemeralSubviews,"addObject:",_ephemeralSubviewsForNames[_19b]); +if(_ephemeralSubviewsForNames[_19b]){ +objj_msgSend(self,"addSubview:positioned:relativeTo:",_ephemeralSubviewsForNames[_19b],_19c,_ephemeralSubviewsForNames[_19d]); +} +} +if(_ephemeralSubviewsForNames[_19b]){ +objj_msgSend(_ephemeralSubviewsForNames[_19b],"setFrame:",_19e); +} +}else{ +if(_ephemeralSubviewsForNames[_19b]){ +objj_msgSend(_ephemeralSubviewsForNames[_19b],"removeFromSuperview"); +objj_msgSend(_ephemeralSubviews,"removeObject:",_ephemeralSubviewsForNames[_19b]); +delete _ephemeralSubviewsForNames[_19b]; +} +} +return _ephemeralSubviewsForNames[_19b]; +} +}),new objj_method(sel_getUid("ephemeralSubviewNamed:"),function(self,_19f,_1a0){ +with(self){ +if(!_ephemeralSubviewsForNames){ +return nil; +} +return (_ephemeralSubviewsForNames[_1a0]||nil); +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("themeClass"),function(self,_1a1){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("themeAttributes"),function(self,_1a2){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("_themeAttributes"),function(self,_1a3){ +with(self){ +if(!_2){ +_2={}; +} +var _1a4=objj_msgSend(self,"class"),_1a5=objj_msgSend(CPView,"class"),_1a6=[],_1a7=objj_msgSend(CPNull,"null"); +for(;_1a4&&_1a4!==_1a5;_1a4=objj_msgSend(_1a4,"superclass")){ +var _1a8=_2[class_getName(_1a4)]; +if(_1a8){ +_1a6=_1a6.length?_1a6.concat(_1a8):_1a6; +_2[objj_msgSend(self,"className")]=_1a6; +break; +} +var _1a9=objj_msgSend(_1a4,"themeAttributes"); +if(!_1a9){ +continue; +} +var _1aa=objj_msgSend(_1a9,"allKeys"),_1ab=_1aa.length; +while(_1ab--){ +var _1ac=_1aa[_1ab],_1ad=objj_msgSend(_1a9,"objectForKey:",_1ac); +_1a6.push(_1ad===_1a7?nil:_1ad); +_1a6.push(_1ac); +} +} +return _1a6; +} +})]); +var _1ae="CPViewAutoresizingMask",_1af="CPViewAutoresizesSubviews",_1b0="CPViewBackgroundColor",_1b1="CPViewBoundsKey",_1b2="CPViewFrameKey",_1b3="CPViewHitTestsKey",_1b4="CPViewIsHiddenKey",_1b5="CPViewOpacityKey",_1b6="CPViewSubviewsKey",_1b7="CPViewSuperviewKey",_1b8="CPViewTagKey",_1b9="CPViewThemeStateKey",_1ba="CPViewWindowKey",_1bb="CPViewNextKeyViewKey",_1bc="CPViewPreviousKeyViewKey"; +var _6=objj_getClass("CPView"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("initWithCoder:"),function(self,_1bd,_1be){ +with(self){ +_frame=objj_msgSend(_1be,"decodeRectForKey:",_1b2); +_bounds=objj_msgSend(_1be,"decodeRectForKey:",_1b1); +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPView").super_class},"initWithCoder:",_1be); +if(self){ +_tag=objj_msgSend(_1be,"containsValueForKey:",_1b8)?objj_msgSend(_1be,"decodeIntForKey:",_1b8):-1; +_window=objj_msgSend(_1be,"decodeObjectForKey:",_1ba); +_subviews=objj_msgSend(_1be,"decodeObjectForKey:",_1b6)||[]; +_superview=objj_msgSend(_1be,"decodeObjectForKey:",_1b7); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_autoresizingMask=objj_msgSend(_1be,"decodeIntForKey:",_1ae)||CPViewNotSizable; +_autoresizesSubviews=!objj_msgSend(_1be,"containsValueForKey:",_1af)||objj_msgSend(_1be,"decodeBoolForKey:",_1af); +_hitTests=!objj_msgSend(_1be,"containsValueForKey:",_1b3)||objj_msgSend(_1be,"decodeObjectForKey:",_1b3); +if(objj_msgSend(_1be,"containsValueForKey:",_1b4)){ +objj_msgSend(self,"setHidden:",objj_msgSend(_1be,"decodeBoolForKey:",_1b4)); +}else{ +_isHidden=NO; +} +if(objj_msgSend(_1be,"containsValueForKey:",_1b5)){ +objj_msgSend(self,"setAlphaValue:",objj_msgSend(_1be,"decodeIntForKey:",_1b5)); +}else{ +_opacity=1; +} +objj_msgSend(self,"setBackgroundColor:",objj_msgSend(_1be,"decodeObjectForKey:",_1b0)); +objj_msgSend(self,"setupViewFlags"); +_theme=objj_msgSend(CPTheme,"defaultTheme"); +_themeState=CPThemeState(objj_msgSend(_1be,"decodeIntForKey:",_1b9)); +_themeAttributes={}; +var _1bf=objj_msgSend(self,"class"),_1c0=objj_msgSend(_1bf,"themeClass"),_1c1=objj_msgSend(_1bf,"_themeAttributes"),_1c2=_1c1.length; +while(_1c2--){ +var _1c3=_1c1[_1c2--]; +_themeAttributes[_1c3]=CPThemeAttributeDecode(_1be,_1c3,_1c1[_1c2],_theme,_1c0); +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_1c4,_1c5){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPView").super_class},"encodeWithCoder:",_1c5); +if(_tag!==-1){ +objj_msgSend(_1c5,"encodeInt:forKey:",_tag,_1b8); +} +objj_msgSend(_1c5,"encodeRect:forKey:",_frame,_1b2); +objj_msgSend(_1c5,"encodeRect:forKey:",_bounds,_1b1); +if(_window!==nil){ +objj_msgSend(_1c5,"encodeConditionalObject:forKey:",_window,_1ba); +} +var _1c6=objj_msgSend(_subviews,"count"),_1c7=_subviews; +if(_1c6>0&&objj_msgSend(_ephemeralSubviews,"count")>0){ +_1c7=objj_msgSend(_1c7,"copy"); +while(_1c6--){ +if(objj_msgSend(_ephemeralSubviews,"containsObject:",_1c7[_1c6])){ +_1c7.splice(_1c6,1); +} +} +} +if(_1c7.length>0){ +objj_msgSend(_1c5,"encodeObject:forKey:",_1c7,_1b6); +} +if(_superview!==nil){ +objj_msgSend(_1c5,"encodeConditionalObject:forKey:",_superview,_1b7); +} +if(_autoresizingMask!==CPViewNotSizable){ +objj_msgSend(_1c5,"encodeInt:forKey:",_autoresizingMask,_1ae); +} +if(!_autoresizesSubviews){ +objj_msgSend(_1c5,"encodeBool:forKey:",_autoresizesSubviews,_1af); +} +if(_backgroundColor!==nil){ +objj_msgSend(_1c5,"encodeObject:forKey:",_backgroundColor,_1b0); +} +if(_hitTests!==YES){ +objj_msgSend(_1c5,"encodeBool:forKey:",_hitTests,_1b3); +} +if(_opacity!==1){ +objj_msgSend(_1c5,"encodeFloat:forKey:",_opacity,_1b5); +} +if(_isHidden){ +objj_msgSend(_1c5,"encodeBool:forKey:",_isHidden,_1b4); +} +var _1c8=objj_msgSend(self,"nextKeyView"); +if(_1c8!==nil){ +objj_msgSend(_1c5,"encodeConditionalObject:forKey:",_1c8,_1bb); +} +var _1c9=objj_msgSend(self,"previousKeyView"); +if(_1c9!==nil){ +objj_msgSend(_1c5,"encodeConditionalObject:forKey:",_1c9,_1bc); +} +objj_msgSend(_1c5,"encodeInt:forKey:",CPThemeStateName(_themeState),_1b9); +for(var _1ca in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_1ca)){ +CPThemeAttributeEncode(_1c5,_themeAttributes[_1ca]); +} +} +} +})]); +var _a5=function(_1cb){ +var _1cc=_1cb._superview; +return {autoresizingMask:_1cb._autoresizingMask,frame:CGRectMakeCopy(_1cb._frame),index:(_1cc?objj_msgSend(_1cc._subviews,"indexOfObjectIdenticalTo:",_1cb):0),superview:_1cc}; +}; +var _f0=function(_1cd,_1ce){ +var _1cf=CGAffineTransformMakeIdentity(),_1d0=YES,_1d1=nil,_1d2=nil; +if(_1cd){ +var view=_1cd; +while(view&&view!=_1ce){ +var _1d3=view._frame; +_1cf.tx+=(_1d3.origin.x); +_1cf.ty+=(_1d3.origin.y); +if(view._boundsTransform){ +var tx=_1cf.tx*view._boundsTransform.a+_1cf.ty*view._boundsTransform.c+view._boundsTransform.tx; +_1cf.ty=_1cf.tx*view._boundsTransform.b+_1cf.ty*view._boundsTransform.d+view._boundsTransform.ty; +_1cf.tx=tx; +var a=_1cf.a*view._boundsTransform.a+_1cf.b*view._boundsTransform.c,b=_1cf.a*view._boundsTransform.b+_1cf.b*view._boundsTransform.d,c=_1cf.c*view._boundsTransform.a+_1cf.d*view._boundsTransform.c; +_1cf.d=_1cf.c*view._boundsTransform.b+_1cf.d*view._boundsTransform.d; +_1cf.a=a; +_1cf.b=b; +_1cf.c=c; +} +view=view._superview; +} +if(view===_1ce){ +return _1cf; +}else{ +if(_1cd&&_1ce){ +_1d1=objj_msgSend(_1cd,"window"); +_1d2=objj_msgSend(_1ce,"window"); +if(_1d1&&_1d2&&_1d1!==_1d2){ +_1d0=NO; +var _1d3=objj_msgSend(_1d1,"frame"); +_1cf.tx+=(_1d3.origin.x); +_1cf.ty+=(_1d3.origin.y); +} +} +} +} +var view=_1ce; +while(view){ +var _1d3=view._frame; +_1cf.tx-=(_1d3.origin.x); +_1cf.ty-=(_1d3.origin.y); +if(view._boundsTransform){ +var tx=_1cf.tx*view._inverseBoundsTransform.a+_1cf.ty*view._inverseBoundsTransform.c+view._inverseBoundsTransform.tx; +_1cf.ty=_1cf.tx*view._inverseBoundsTransform.b+_1cf.ty*view._inverseBoundsTransform.d+view._inverseBoundsTransform.ty; +_1cf.tx=tx; +var a=_1cf.a*view._inverseBoundsTransform.a+_1cf.b*view._inverseBoundsTransform.c,b=_1cf.a*view._inverseBoundsTransform.b+_1cf.b*view._inverseBoundsTransform.d,c=_1cf.c*view._inverseBoundsTransform.a+_1cf.d*view._inverseBoundsTransform.c; +_1cf.d=_1cf.c*view._inverseBoundsTransform.b+_1cf.d*view._inverseBoundsTransform.d; +_1cf.a=a; +_1cf.b=b; +_1cf.c=c; +} +view=view._superview; +} +if(!_1d0){ +var _1d3=objj_msgSend(_1d2,"frame"); +_1cf.tx-=(_1d3.origin.x); +_1cf.ty-=(_1d3.origin.y); +} +return _1cf; +}; +p;17;CPViewAnimation.jt;4854;@STATIC;1.0;I;20;AppKit/CPAnimation.jt;4810; +objj_executeFile("AppKit/CPAnimation.j",NO); +CPViewAnimationTargetKey="CPViewAnimationTarget"; +CPViewAnimationStartFrameKey="CPViewAnimationStartFrame"; +CPViewAnimationEndFrameKey="CPViewAnimationEndFrame"; +CPViewAnimationEffectKey="CPViewAnimationEffect"; +CPViewAnimationFadeInEffect="CPViewAnimationFadeIn"; +CPViewAnimationFadeOutEffect="CPViewAnimationFadeOut"; +var _1=objj_allocateClassPair(CPAnimation,"CPViewAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_viewAnimations")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithViewAnimations:"),function(_3,_4,_5){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPViewAnimation").super_class},"initWithDuration:animationCurve:",0.5,CPAnimationLinear)){ +objj_msgSend(_3,"setViewAnimations:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("startAnimation"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_viewAnimations,"count"); +while(_8--){ +var _9=objj_msgSend(_viewAnimations,"objectAtIndex:",_8),_a=objj_msgSend(_6,"_targetView:",_9),_b=objj_msgSend(_6,"_startFrame:",_9); +objj_msgSend(_a,"setFrame:",_b); +var _c=objj_msgSend(_6,"_effect:",_9); +if(_c===CPViewAnimationFadeInEffect){ +objj_msgSend(_a,"setAlphaValue:",0); +objj_msgSend(_a,"setHidden:",NO); +}else{ +if(_c===CPViewAnimationFadeOutEffect){ +objj_msgSend(_a,"setAlphaValue:",1); +} +} +} +objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPViewAnimation").super_class},"startAnimation"); +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(_d,_e,_f){ +with(_d){ +objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPViewAnimation").super_class},"setCurrentProgress:",_f); +var _10=objj_msgSend(_viewAnimations,"count"); +while(_10--){ +var _11=objj_msgSend(_viewAnimations,"objectAtIndex:",_10),_12=objj_msgSend(_d,"_targetView:",_11),_13=objj_msgSend(_d,"_startFrame:",_11),_14=objj_msgSend(_d,"_endFrame:",_11),_15={origin:{x:0,y:0},size:{width:0,height:0}}; +_15.origin.x=_14.origin.x-_13.origin.x; +_15.origin.y=_14.origin.y-_13.origin.y; +_15.size.width=_14.size.width-_13.size.width; +_15.size.height=_14.size.height-_13.size.height; +var _16={origin:{x:0,y:0},size:{width:0,height:0}}; +_16.origin.x=_13.origin.x+_15.origin.x*_f; +_16.origin.y=_13.origin.y+_15.origin.y*_f; +_16.size.width=_13.size.width+_15.size.width*_f; +_16.size.height=_13.size.height+_15.size.height*_f; +objj_msgSend(_12,"setFrame:",_16); +var _17=objj_msgSend(_d,"_effect:",_11); +if(_17===CPViewAnimationFadeInEffect){ +objj_msgSend(_12,"setAlphaValue:",1*_f); +}else{ +if(_17===CPViewAnimationFadeOutEffect){ +objj_msgSend(_12,"setAlphaValue:",1+(0-1)*_f); +} +} +if(_f===1){ +objj_msgSend(_12,"setHidden:",(_14.size.width<=0||_14.size.height<=0)||objj_msgSend(_12,"alphaValue")===0); +} +} +} +}),new objj_method(sel_getUid("stopAnimation"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_viewAnimations,"count"); +while(_1a--){ +var _1b=objj_msgSend(_viewAnimations,"objectAtIndex:",_1a),_1c=objj_msgSend(_18,"_targetView:",_1b),_1d=objj_msgSend(_18,"_endFrame:",_1b); +objj_msgSend(_1c,"setFrame:",_1d); +var _1e=objj_msgSend(_18,"_effect:",_1b); +if(_1e===CPViewAnimationFadeInEffect){ +objj_msgSend(_1c,"setAlphaValue:",1); +}else{ +if(_1e===CPViewAnimationFadeOutEffect){ +objj_msgSend(_1c,"setAlphaValue:",0); +} +} +objj_msgSend(_1c,"setHidden:",(_1d.size.width<=0||_1d.size.height<=0)||objj_msgSend(_1c,"alphaValue")===0); +} +objj_msgSendSuper({receiver:_18,super_class:objj_getClass("CPViewAnimation").super_class},"stopAnimation"); +} +}),new objj_method(sel_getUid("_targetView:"),function(_1f,_20,_21){ +with(_1f){ +var _22=objj_msgSend(_21,"valueForKey:",CPViewAnimationTargetKey); +if(!_22){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(CPString,"stringWithFormat:","view animation: %@ does not have a target view",objj_msgSend(_21,"description"))); +} +return _22; +} +}),new objj_method(sel_getUid("_startFrame:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_25,"valueForKey:",CPViewAnimationStartFrameKey); +if(!_26){ +return objj_msgSend(objj_msgSend(_23,"_targetView:",_25),"frame"); +} +return _26; +} +}),new objj_method(sel_getUid("_endFrame:"),function(_27,_28,_29){ +with(_27){ +var _2a=objj_msgSend(_29,"valueForKey:",CPViewAnimationEndFrameKey); +if(!_2a){ +return objj_msgSend(objj_msgSend(_27,"_targetView:",_29),"frame"); +} +return _2a; +} +}),new objj_method(sel_getUid("_effect:"),function(_2b,_2c,_2d){ +with(_2b){ +return objj_msgSend(_2d,"valueForKey:",CPViewAnimationEffectKey); +} +}),new objj_method(sel_getUid("viewAnimations"),function(_2e,_2f){ +with(_2e){ +return _viewAnimations; +} +}),new objj_method(sel_getUid("setViewAnimations:"),function(_30,_31,_32){ +with(_30){ +if(_32!=_viewAnimations){ +objj_msgSend(_30,"stopAnimation"); +_viewAnimations=objj_msgSend(_32,"copy"); +} +} +})]); +p;18;CPViewController.jt;5479;@STATIC;1.0;I;20;AppKit/CPResponder.jt;5435; +objj_executeFile("AppKit/CPResponder.j",NO); +var _1; +var _2=objj_allocateClassPair(CPResponder,"CPViewController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_view"),new objj_ivar("_isLoading"),new objj_ivar("_representedObject"),new objj_ivar("_title"),new objj_ivar("_cibName"),new objj_ivar("_cibBundle"),new objj_ivar("_cibExternalNameTable")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("view"),function(_4,_5){ +with(_4){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_6,_7,_8){ +with(_6){ +_view=_8; +} +}),new objj_method(sel_getUid("representedObject"),function(_9,_a){ +with(_9){ +return _representedObject; +} +}),new objj_method(sel_getUid("setRepresentedObject:"),function(_b,_c,_d){ +with(_b){ +_representedObject=_d; +} +}),new objj_method(sel_getUid("title"),function(_e,_f){ +with(_e){ +return _title; +} +}),new objj_method(sel_getUid("setTitle:"),function(_10,_11,_12){ +with(_10){ +_title=_12; +} +}),new objj_method(sel_getUid("cibName"),function(_13,_14){ +with(_13){ +return _cibName; +} +}),new objj_method(sel_getUid("cibBundle"),function(_15,_16){ +with(_15){ +return _cibBundle; +} +}),new objj_method(sel_getUid("cibExternalNameTable"),function(_17,_18){ +with(_17){ +return _cibExternalNameTable; +} +}),new objj_method(sel_getUid("init"),function(_19,_1a){ +with(_19){ +return objj_msgSend(_19,"initWithCibName:bundle:",nil,nil); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +return objj_msgSend(_1b,"initWithCibName:bundle:externalNameTable:",_1d,_1e,nil); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:owner:"),function(_1f,_20,_21,_22,_23){ +with(_1f){ +return objj_msgSend(_1f,"initWithCibName:bundle:externalNameTable:",_21,_22,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_23,CPCibOwner)); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:externalNameTable:"),function(_24,_25,_26,_27,_28){ +with(_24){ +_24=objj_msgSendSuper({receiver:_24,super_class:objj_getClass("CPViewController").super_class},"init"); +if(_24){ +_cibName=_26; +_cibBundle=_27||objj_msgSend(CPBundle,"mainBundle"); +_cibExternalNameTable=_28||objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_24,CPCibOwner); +_isLoading=NO; +} +return _24; +} +}),new objj_method(sel_getUid("loadView"),function(_29,_2a){ +with(_29){ +if(_view){ +return; +} +var cib=objj_msgSend(_1,"objectForKey:",_cibName); +if(!cib){ +cib=objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",objj_msgSend(_cibBundle,"pathForResource:",_cibName+".cib")); +objj_msgSend(_1,"setObject:forKey:",cib,_cibName); +} +objj_msgSend(cib,"instantiateCibWithExternalNameTable:",_cibExternalNameTable); +} +}),new objj_method(sel_getUid("view"),function(_2b,_2c){ +with(_2b){ +if(!_view){ +_isLoading=YES; +var _2d=objj_msgSend(_cibExternalNameTable,"objectForKey:",CPCibOwner); +if(objj_msgSend(_2d,"respondsToSelector:",sel_getUid("viewControllerWillLoadCib:"))){ +objj_msgSend(_2d,"viewControllerWillLoadCib:",_2b); +} +objj_msgSend(_2b,"loadView"); +if(_view===nil&&objj_msgSend(_2d,"isKindOfClass:",objj_msgSend(CPDocument,"class"))){ +objj_msgSend(_2b,"setView:",objj_msgSend(_2d,"valueForKey:","view")); +} +if(!_view){ +var _2e=objj_msgSend(CPString,"stringWithFormat:","View for %@ could not be loaded from Cib or no view specified. Override loadView to load the view manually.",_2b); +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,_2e); +} +if(objj_msgSend(_2d,"respondsToSelector:",sel_getUid("viewControllerDidLoadCib:"))){ +objj_msgSend(_2d,"viewControllerDidLoadCib:",_2b); +} +_isLoading=NO; +objj_msgSend(_2b,"viewDidLoad"); +} +return _view; +} +}),new objj_method(sel_getUid("viewDidLoad"),function(_2f,_30){ +with(_2f){ +} +}),new objj_method(sel_getUid("setView:"),function(_31,_32,_33){ +with(_31){ +var _34=!_view; +_view=_33; +if(!_isLoading&&_34){ +objj_msgSend(_31,"viewDidLoad"); +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_35,_36){ +with(_35){ +if(_35===CPViewController){ +_1=objj_msgSend(CPDictionary,"dictionary"); +} +} +})]); +var _37="CPViewControllerViewKey",_38="CPViewControllerTitleKey",_39="CPViewControllerCibNameKey",_3a="CPViewControllerBundleKey"; +var _2=objj_getClass("CPViewController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPViewController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_3b,_3c,_3d){ +with(_3b){ +_3b=objj_msgSendSuper({receiver:_3b,super_class:objj_getClass("CPViewController").super_class},"initWithCoder:",_3d); +if(_3b){ +_view=objj_msgSend(_3d,"decodeObjectForKey:",_37); +_title=objj_msgSend(_3d,"decodeObjectForKey:",_38); +_cibName=objj_msgSend(_3d,"decodeObjectForKey:",_39); +var _3e=objj_msgSend(_3d,"decodeObjectForKey:",_3a); +_cibBundle=_3e?objj_msgSend(CPBundle,"bundleWithPath:",_3e):objj_msgSend(CPBundle,"mainBundle"); +_cibExternalNameTable=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_3b,CPCibOwner); +} +return _3b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_3f,_40,_41){ +with(_3f){ +objj_msgSendSuper({receiver:_3f,super_class:objj_getClass("CPViewController").super_class},"encodeWithCoder:",_41); +objj_msgSend(_41,"encodeObject:forKey:",_view,_37); +objj_msgSend(_41,"encodeObject:forKey:",_title,_38); +objj_msgSend(_41,"encodeObject:forKey:",_cibName,_39); +objj_msgSend(_41,"encodeObject:forKey:",objj_msgSend(_cibBundle,"bundlePath"),_3a); +} +})]); +p;11;CPWebView.jt;14384;@STATIC;1.0;I;15;AppKit/CPView.jt;14344; +objj_executeFile("AppKit/CPView.j",NO); +CPWebViewProgressStartedNotification="CPWebViewProgressStartedNotification"; +CPWebViewProgressFinishedNotification="CPWebViewProgressFinishedNotification"; +CPWebViewScrollAppKit=1; +CPWebViewScrollNative=2; +var _1=objj_allocateClassPair(CPView,"CPWebView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_scrollView"),new objj_ivar("_frameView"),new objj_ivar("_iframe"),new objj_ivar("_mainFrameURL"),new objj_ivar("_backwardStack"),new objj_ivar("_forwardStack"),new objj_ivar("_ignoreLoadStart"),new objj_ivar("_ignoreLoadEnd"),new objj_ivar("_downloadDelegate"),new objj_ivar("_frameLoadDelegate"),new objj_ivar("_policyDelegate"),new objj_ivar("_resourceLoadDelegate"),new objj_ivar("_UIDelegate"),new objj_ivar("_wso"),new objj_ivar("_url"),new objj_ivar("_html"),new objj_ivar("_loadCallback"),new objj_ivar("_scrollMode"),new objj_ivar("_scrollSize"),new objj_ivar("_loadHTMLStringTimer")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:frameName:groupName:"),function(_3,_4,_5,_6,_7){ +with(_3){ +if(_3=objj_msgSend(_3,"initWithFrame:",_5)){ +_iframe.name=_6; +} +return _3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +if(_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPWebView").super_class},"initWithFrame:",_a)){ +_mainFrameURL=nil; +_backwardStack=[]; +_forwardStack=[]; +_scrollMode=CPWebViewScrollNative; +objj_msgSend(_8,"_initDOMWithFrame:",_a); +} +return _8; +} +}),new objj_method(sel_getUid("_initDOMWithFrame:"),function(_b,_c,_d){ +with(_b){ +_ignoreLoadStart=YES; +_ignoreLoadEnd=YES; +_iframe=document.createElement("iframe"); +_iframe.name="iframe_"+Math.floor(Math.random()*10000); +_iframe.style.width="100%"; +_iframe.style.height="100%"; +_iframe.style.borderWidth="0px"; +_iframe.frameBorder="0"; +objj_msgSend(_b,"setDrawsBackground:",YES); +_loadCallback=function(){ +if(!_ignoreLoadStart){ +objj_msgSend(_b,"_startedLoading"); +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=_iframe.src; +_mainFrameURL=_iframe.src; +objj_msgSend(_forwardStack,"removeAllObjects"); +}else{ +_ignoreLoadStart=NO; +} +if(!_ignoreLoadEnd){ +objj_msgSend(_b,"_finishedLoading"); +}else{ +_ignoreLoadEnd=NO; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +}; +if(_iframe.addEventListener){ +_iframe.addEventListener("load",_loadCallback,false); +}else{ +if(_iframe.attachEvent){ +_iframe.attachEvent("onload",_loadCallback); +} +} +_frameView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",objj_msgSend(_b,"bounds")); +objj_msgSend(_frameView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_scrollView=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",objj_msgSend(_b,"bounds")); +objj_msgSend(_scrollView,"setAutohidesScrollers:",YES); +objj_msgSend(_scrollView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_scrollView,"setDocumentView:",_frameView); +_frameView._DOMElement.appendChild(_iframe); +objj_msgSend(_b,"_setScrollMode:",_scrollMode); +objj_msgSend(_b,"addSubview:",_scrollView); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_e,_f,_10){ +with(_e){ +objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPWebView").super_class},"setFrameSize:",_10); +objj_msgSend(_e,"_resizeWebFrame"); +} +}),new objj_method(sel_getUid("_attachScrollEventIfNecessary"),function(_11,_12){ +with(_11){ +if(_scrollMode!==CPWebViewScrollAppKit){ +return; +} +var win=null; +try{ +win=objj_msgSend(_11,"DOMWindow"); +} +catch(e){ +} +if(win&&win.addEventListener){ +var _13=function(_14){ +var _15=objj_msgSend(_11,"bounds"),_16=CGPointMake(CGRectGetMidX(_15),CGRectGetMidY(_15)),_17=objj_msgSend(_11,"convertPoint:toView:",_16,nil),_18=objj_msgSend(objj_msgSend(_11,"window"),"convertBaseToBridge:",_17); +_14._overrideLocation=_18; +objj_msgSend(objj_msgSend(objj_msgSend(_11,"window"),"platformWindow"),"scrollEvent:",_14); +}; +win.addEventListener("DOMMouseScroll",_13,false); +} +} +}),new objj_method(sel_getUid("_resizeWebFrame"),function(_19,_1a){ +with(_19){ +if(_scrollMode===CPWebViewScrollAppKit){ +if(_scrollSize){ +objj_msgSend(_frameView,"setFrameSize:",_scrollSize); +}else{ +var _1b=objj_msgSend(_frameView,"visibleRect"); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(CGRectGetMaxX(_1b),CGRectGetMaxY(_1b))); +var win=null; +try{ +win=objj_msgSend(_19,"DOMWindow"); +} +catch(e){ +} +if(win&&win.document&&win.document.body){ +var _1c=win.document.body.scrollWidth,_1d=win.document.body.scrollHeight; +_iframe.setAttribute("width",_1c); +_iframe.setAttribute("height",_1d); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(_1c,_1d)); +}else{ +CPLog.warn("using default size 800*1600"); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(800,1600)); +} +objj_msgSend(_frameView,"scrollRectToVisible:",_1b); +} +} +} +}),new objj_method(sel_getUid("setScrollMode:"),function(_1e,_1f,_20){ +with(_1e){ +if(_scrollMode==_20){ +return; +} +objj_msgSend(_1e,"_setScrollMode:",_20); +} +}),new objj_method(sel_getUid("_setScrollMode:"),function(_21,_22,_23){ +with(_21){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +_scrollMode=CPWebViewScrollNative; +}else{ +_scrollMode=_23; +} +_ignoreLoadStart=YES; +_ignoreLoadEnd=YES; +var _24=_iframe.parentNode; +_24.removeChild(_iframe); +if(_scrollMode===CPWebViewScrollAppKit){ +objj_msgSend(_scrollView,"setHasHorizontalScroller:",YES); +objj_msgSend(_scrollView,"setHasVerticalScroller:",YES); +_iframe.setAttribute("scrolling","no"); +}else{ +objj_msgSend(_scrollView,"setHasHorizontalScroller:",NO); +objj_msgSend(_scrollView,"setHasVerticalScroller:",NO); +_iframe.setAttribute("scrolling","auto"); +objj_msgSend(_frameView,"setFrameSize:",objj_msgSend(_scrollView,"bounds").size); +} +_24.appendChild(_iframe); +} +}),new objj_method(sel_getUid("loadHTMLString:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_25,"loadHTMLString:baseURL:",_27,nil); +} +}),new objj_method(sel_getUid("loadHTMLString:baseURL:"),function(_28,_29,_2a,URL){ +with(_28){ +objj_msgSend(_28,"_setScrollMode:",CPWebViewScrollAppKit); +objj_msgSend(_frameView,"setFrameSize:",objj_msgSend(_scrollView,"contentSize")); +objj_msgSend(_28,"_startedLoading"); +_ignoreLoadStart=YES; +_ignoreLoadEnd=NO; +_url=null; +_html=_2a; +objj_msgSend(_28,"_load"); +} +}),new objj_method(sel_getUid("_loadMainFrameURL"),function(_2b,_2c){ +with(_2b){ +objj_msgSend(_2b,"_setScrollMode:",CPWebViewScrollNative); +objj_msgSend(_2b,"_startedLoading"); +_ignoreLoadStart=YES; +_ignoreLoadEnd=NO; +_url=_mainFrameURL; +_html=null; +objj_msgSend(_2b,"_load"); +} +}),new objj_method(sel_getUid("_load"),function(_2d,_2e){ +with(_2d){ +if(_url){ +_iframe.src=_url; +}else{ +if(_html){ +_iframe.src=""; +if(_loadHTMLStringTimer!==nil){ +window.clearTimeout(_loadHTMLStringTimer); +_loadHTMLStringTimer=nil; +} +_loadHTMLStringTimer=window.setTimeout(function(){ +var win=objj_msgSend(_2d,"DOMWindow"); +if(win){ +win.document.write(_html); +} +window.setTimeout(_loadCallback,1); +},0); +} +} +} +}),new objj_method(sel_getUid("_startedLoading"),function(_2f,_30){ +with(_2f){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWebViewProgressStartedNotification,_2f); +if(objj_msgSend(_frameLoadDelegate,"respondsToSelector:",sel_getUid("webView:didStartProvisionalLoadForFrame:"))){ +objj_msgSend(_frameLoadDelegate,"webView:didStartProvisionalLoadForFrame:",_2f,nil); +} +} +}),new objj_method(sel_getUid("_finishedLoading"),function(_31,_32){ +with(_31){ +objj_msgSend(_31,"_resizeWebFrame"); +objj_msgSend(_31,"_attachScrollEventIfNecessary"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWebViewProgressFinishedNotification,_31); +if(objj_msgSend(_frameLoadDelegate,"respondsToSelector:",sel_getUid("webView:didFinishLoadForFrame:"))){ +objj_msgSend(_frameLoadDelegate,"webView:didFinishLoadForFrame:",_31,nil); +} +} +}),new objj_method(sel_getUid("mainFrameURL"),function(_33,_34){ +with(_33){ +return _mainFrameURL; +} +}),new objj_method(sel_getUid("setMainFrameURL:"),function(_35,_36,_37){ +with(_35){ +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=_37; +objj_msgSend(_forwardStack,"removeAllObjects"); +objj_msgSend(_35,"_loadMainFrameURL"); +} +}),new objj_method(sel_getUid("goBack"),function(_38,_39){ +with(_38){ +if(_backwardStack.length>0){ +if(_mainFrameURL){ +objj_msgSend(_forwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=objj_msgSend(_backwardStack,"lastObject"); +objj_msgSend(_backwardStack,"removeLastObject"); +objj_msgSend(_38,"_loadMainFrameURL"); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("goForward"),function(_3a,_3b){ +with(_3a){ +if(_forwardStack.length>0){ +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=objj_msgSend(_forwardStack,"lastObject"); +objj_msgSend(_forwardStack,"removeLastObject"); +objj_msgSend(_3a,"_loadMainFrameURL"); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("canGoBack"),function(_3c,_3d){ +with(_3c){ +return (_backwardStack.length>0); +} +}),new objj_method(sel_getUid("canGoForward"),function(_3e,_3f){ +with(_3e){ +return (_forwardStack.length>0); +} +}),new objj_method(sel_getUid("backForwardList"),function(_40,_41){ +with(_40){ +return {back:_backwardStack,forward:_forwardStack}; +} +}),new objj_method(sel_getUid("close"),function(_42,_43){ +with(_42){ +_iframe.parentNode.removeChild(_iframe); +} +}),new objj_method(sel_getUid("DOMWindow"),function(_44,_45){ +with(_44){ +return (_iframe.contentDocument&&_iframe.contentDocument.defaultView)||_iframe.contentWindow; +} +}),new objj_method(sel_getUid("windowScriptObject"),function(_46,_47){ +with(_46){ +var win=objj_msgSend(_46,"DOMWindow"); +if(!_wso||win!=objj_msgSend(_wso,"window")){ +if(win){ +_wso=objj_msgSend(objj_msgSend(CPWebScriptObject,"alloc"),"initWithWindow:",win); +}else{ +_wso=nil; +} +} +return _wso; +} +}),new objj_method(sel_getUid("stringByEvaluatingJavaScriptFromString:"),function(_48,_49,_4a){ +with(_48){ +var _4b=objj_msgSend(_48,"objectByEvaluatingJavaScriptFromString:",_4a); +return _4b?String(_4b):nil; +} +}),new objj_method(sel_getUid("objectByEvaluatingJavaScriptFromString:"),function(_4c,_4d,_4e){ +with(_4c){ +return objj_msgSend(objj_msgSend(_4c,"windowScriptObject"),"evaluateWebScript:",_4e); +} +}),new objj_method(sel_getUid("computedStyleForElement:pseudoElement:"),function(_4f,_50,_51,_52){ +with(_4f){ +var win=objj_msgSend(objj_msgSend(_4f,"windowScriptObject"),"window"); +if(win){ +return win.document.defaultView.getComputedStyle(_51,_52); +} +return nil; +} +}),new objj_method(sel_getUid("drawsBackground"),function(_53,_54){ +with(_53){ +return _iframe.style.backgroundColor!=""; +} +}),new objj_method(sel_getUid("setDrawsBackground:"),function(_55,_56,_57){ +with(_55){ +_iframe.style.backgroundColor=_57?"white":""; +} +}),new objj_method(sel_getUid("takeStringURLFrom:"),function(_58,_59,_5a){ +with(_58){ +objj_msgSend(_58,"setMainFrameURL:",objj_msgSend(_5a,"stringValue")); +} +}),new objj_method(sel_getUid("goBack:"),function(_5b,_5c,_5d){ +with(_5b){ +objj_msgSend(_5b,"goBack"); +} +}),new objj_method(sel_getUid("goForward:"),function(_5e,_5f,_60){ +with(_5e){ +objj_msgSend(_5e,"goForward"); +} +}),new objj_method(sel_getUid("stopLoading:"),function(_61,_62,_63){ +with(_61){ +} +}),new objj_method(sel_getUid("reload:"),function(_64,_65,_66){ +with(_64){ +objj_msgSend(_64,"_loadMainFrameURL"); +} +}),new objj_method(sel_getUid("print:"),function(_67,_68,_69){ +with(_67){ +try{ +objj_msgSend(_67,"DOMWindow").print(); +} +catch(e){ +alert("Please click the webpage and select \"Print\" from the \"File\" menu"); +} +} +}),new objj_method(sel_getUid("downloadDelegate"),function(_6a,_6b){ +with(_6a){ +return _downloadDelegate; +} +}),new objj_method(sel_getUid("setDownloadDelegate:"),function(_6c,_6d,_6e){ +with(_6c){ +_downloadDelegate=_6e; +} +}),new objj_method(sel_getUid("frameLoadDelegate"),function(_6f,_70){ +with(_6f){ +return _frameLoadDelegate; +} +}),new objj_method(sel_getUid("setFrameLoadDelegate:"),function(_71,_72,_73){ +with(_71){ +_frameLoadDelegate=_73; +} +}),new objj_method(sel_getUid("policyDelegate"),function(_74,_75){ +with(_74){ +return _policyDelegate; +} +}),new objj_method(sel_getUid("setPolicyDelegate:"),function(_76,_77,_78){ +with(_76){ +_policyDelegate=_78; +} +}),new objj_method(sel_getUid("resourceLoadDelegate"),function(_79,_7a){ +with(_79){ +return _resourceLoadDelegate; +} +}),new objj_method(sel_getUid("setResourceLoadDelegate:"),function(_7b,_7c,_7d){ +with(_7b){ +_resourceLoadDelegate=_7d; +} +}),new objj_method(sel_getUid("UIDelegate"),function(_7e,_7f){ +with(_7e){ +return _UIDelegate; +} +}),new objj_method(sel_getUid("setUIDelegate:"),function(_80,_81,_82){ +with(_80){ +_UIDelegate=_82; +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPWebScriptObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_window")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithWindow:"),function(_83,_84,_85){ +with(_83){ +if(_83=objj_msgSendSuper({receiver:_83,super_class:objj_getClass("CPWebScriptObject").super_class},"init")){ +_window=_85; +} +return _83; +} +}),new objj_method(sel_getUid("callWebScriptMethod:withArguments:"),function(_86,_87,_88,_89){ +with(_86){ +if(typeof _window[_88]=="function"){ +try{ +return _window[_88].apply(_89); +} +catch(e){ +} +} +return undefined; +} +}),new objj_method(sel_getUid("evaluateWebScript:"),function(_8a,_8b,_8c){ +with(_8a){ +try{ +return _window.eval(_8c); +} +catch(e){ +} +return undefined; +} +}),new objj_method(sel_getUid("window"),function(_8d,_8e){ +with(_8d){ +return _window; +} +})]); +var _1=objj_getClass("CPWebView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPWebView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_8f,_90,_91){ +with(_8f){ +_8f=objj_msgSendSuper({receiver:_8f,super_class:objj_getClass("CPWebView").super_class},"initWithCoder:",_91); +if(_8f){ +_mainFrameURL=nil; +_backwardStack=[]; +_forwardStack=[]; +_scrollMode=CPWebViewScrollNative; +objj_msgSend(_8f,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +} +return _8f; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_92,_93,_94){ +with(_92){ +var _95=_subviews; +_subviews=[]; +objj_msgSendSuper({receiver:_92,super_class:objj_getClass("CPWebView").super_class},"encodeWithCoder:",_94); +_subviews=_95; +} +})]); +p;20;CPWindowController.jt;9176;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;13;CPResponder.ji;10;CPWindow.ji;12;CPDocument.jt;9055; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPWindow.j",YES); +objj_executeFile("CPDocument.j",YES); +var _1=objj_allocateClassPair(CPResponder,"CPWindowController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_window"),new objj_ivar("_documents"),new objj_ivar("_document"),new objj_ivar("_shouldCloseDocument"),new objj_ivar("_supportsMultipleDocuments"),new objj_ivar("_cibOwner"),new objj_ivar("_windowCibName"),new objj_ivar("_windowCibPath"),new objj_ivar("_viewController"),new objj_ivar("_viewControllerContainerView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithWindow:",nil); +} +}),new objj_method(sel_getUid("initWithWindow:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPWindowController").super_class},"init"); +if(_5){ +objj_msgSend(_5,"setWindow:",_7); +objj_msgSend(_5,"setShouldCloseDocument:",NO); +objj_msgSend(_5,"setNextResponder:",CPApp); +_documents=[]; +} +return _5; +} +}),new objj_method(sel_getUid("initWithWindowCibName:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(_8,"initWithWindowCibName:owner:",_a,_8); +} +}),new objj_method(sel_getUid("initWithWindowCibName:owner:"),function(_b,_c,_d,_e){ +with(_b){ +_b=objj_msgSend(_b,"initWithWindow:",nil); +if(_b){ +_cibOwner=_e; +_windowCibName=_d; +} +return _b; +} +}),new objj_method(sel_getUid("initWithWindowCibPath:owner:"),function(_f,_10,_11,_12){ +with(_f){ +_f=objj_msgSend(_f,"initWithWindow:",nil); +if(_f){ +_cibOwner=_12; +_windowCibPath=_11; +} +return _f; +} +}),new objj_method(sel_getUid("loadWindow"),function(_13,_14){ +with(_13){ +if(_window){ +return; +} +objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"loadCibFile:externalNameTable:",objj_msgSend(_13,"windowCibPath"),objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_cibOwner,CPCibOwner)); +} +}),new objj_method(sel_getUid("showWindow:"),function(_15,_16,_17){ +with(_15){ +var _18=objj_msgSend(_15,"window"); +if(objj_msgSend(_18,"respondsToSelector:",sel_getUid("becomesKeyOnlyIfNeeded"))&&objj_msgSend(_18,"becomesKeyOnlyIfNeeded")){ +objj_msgSend(_18,"orderFront:",_17); +}else{ +objj_msgSend(_18,"makeKeyAndOrderFront:",_17); +} +} +}),new objj_method(sel_getUid("isWindowLoaded"),function(_19,_1a){ +with(_19){ +return _window!==nil; +} +}),new objj_method(sel_getUid("window"),function(_1b,_1c){ +with(_1b){ +if(!_window){ +objj_msgSend(_1b,"windowWillLoad"); +objj_msgSend(_document,"windowControllerWillLoadCib:",_1b); +objj_msgSend(_1b,"loadWindow"); +if(_window===nil&&objj_msgSend(_cibOwner,"isKindOfClass:",objj_msgSend(CPDocument,"class"))){ +objj_msgSend(_1b,"setWindow:",objj_msgSend(_cibOwner,"valueForKey:","window")); +} +if(!_window){ +var _1d=objj_msgSend(CPString,"stringWithFormat:","Window for %@ could not be loaded from Cib or no window specified. Override loadWindow to load the window manually.",_1b); +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,_1d); +} +objj_msgSend(_1b,"windowDidLoad"); +objj_msgSend(_document,"windowControllerDidLoadCib:",_1b); +objj_msgSend(_1b,"synchronizeWindowTitleWithDocumentName"); +} +return _window; +} +}),new objj_method(sel_getUid("setWindow:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_window,"setWindowController:",nil); +_window=_20; +objj_msgSend(_window,"setWindowController:",_1e); +objj_msgSend(_window,"setNextResponder:",_1e); +} +}),new objj_method(sel_getUid("windowDidLoad"),function(_21,_22){ +with(_21){ +} +}),new objj_method(sel_getUid("windowWillLoad"),function(_23,_24){ +with(_23){ +} +}),new objj_method(sel_getUid("setDocument:"),function(_25,_26,_27){ +with(_25){ +if(_document===_27){ +return; +} +var _28=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_document){ +if(!objj_msgSend(_25,"supportsMultipleDocuments")){ +objj_msgSend(_25,"removeDocument:",_document); +} +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentWillSaveNotification,_document); +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentDidSaveNotification,_document); +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentDidFailToSaveNotification,_document); +} +_document=_27; +if(_document){ +objj_msgSend(_25,"addDocument:",_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentWillSave:"),CPDocumentWillSaveNotification,_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentDidSave:"),CPDocumentDidSaveNotification,_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentDidFailToSave:"),CPDocumentDidFailToSaveNotification,_document); +objj_msgSend(_25,"setDocumentEdited:",objj_msgSend(_document,"isDocumentEdited")); +} +var _29=objj_msgSend(_document,"viewControllerForWindowController:",_25); +if(_29){ +objj_msgSend(_25,"setViewController:",_29); +} +objj_msgSend(_25,"synchronizeWindowTitleWithDocumentName"); +} +}),new objj_method(sel_getUid("setSupportsMultipleDocuments:"),function(_2a,_2b,_2c){ +with(_2a){ +_supportsMultipleDocuments=_2c; +} +}),new objj_method(sel_getUid("supportsMultipleDocuments"),function(_2d,_2e){ +with(_2d){ +return _supportsMultipleDocuments; +} +}),new objj_method(sel_getUid("addDocument:"),function(_2f,_30,_31){ +with(_2f){ +if(_31&&!objj_msgSend(_documents,"containsObject:",_31)){ +objj_msgSend(_documents,"addObject:",_31); +} +} +}),new objj_method(sel_getUid("removeDocument:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_documents,"indexOfObjectIdenticalTo:",_34); +if(_35===CPNotFound){ +return; +} +objj_msgSend(_documents,"removeObjectAtIndex:",_35); +if(_document===_34&&objj_msgSend(_documents,"count")){ +objj_msgSend(_32,"setDocument:",objj_msgSend(_documents,"objectAtIndex:",MIN(_35,objj_msgSend(_documents,"count")-1))); +} +} +}),new objj_method(sel_getUid("removeDocumentAndCloseIfNecessary:"),function(_36,_37,_38){ +with(_36){ +objj_msgSend(_36,"removeDocument:",_38); +if(!objj_msgSend(_documents,"count")){ +objj_msgSend(_36,"close"); +} +} +}),new objj_method(sel_getUid("documents"),function(_39,_3a){ +with(_39){ +return _documents; +} +}),new objj_method(sel_getUid("setViewControllerContainerView:"),function(_3b,_3c,_3d){ +with(_3b){ +_viewControllerContainerView=_3d; +} +}),new objj_method(sel_getUid("viewControllerContainerView"),function(_3e,_3f){ +with(_3e){ +return _viewControllerContainerView; +} +}),new objj_method(sel_getUid("setViewController:"),function(_40,_41,_42){ +with(_40){ +var _43=objj_msgSend(_40,"viewControllerContainerView")||objj_msgSend(objj_msgSend(_40,"window"),"contentView"),_44=objj_msgSend(_viewController,"view"),_45=_44?objj_msgSend(_44,"frame"):objj_msgSend(_43,"bounds"); +objj_msgSend(_44,"removeFromSuperview"); +_viewController=_42; +_44=objj_msgSend(_viewController,"view"); +if(_44){ +objj_msgSend(_44,"setFrame:",_45); +objj_msgSend(_43,"addSubview:",_44); +} +} +}),new objj_method(sel_getUid("viewController"),function(_46,_47){ +with(_46){ +return _viewController; +} +}),new objj_method(sel_getUid("_documentWillSave:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(objj_msgSend(_48,"window"),"setDocumentSaving:",YES); +} +}),new objj_method(sel_getUid("_documentDidSave:"),function(_4b,_4c,_4d){ +with(_4b){ +objj_msgSend(objj_msgSend(_4b,"window"),"setDocumentSaving:",NO); +} +}),new objj_method(sel_getUid("_documentDidFailToSave:"),function(_4e,_4f,_50){ +with(_4e){ +objj_msgSend(objj_msgSend(_4e,"window"),"setDocumentSaving:",NO); +} +}),new objj_method(sel_getUid("document"),function(_51,_52){ +with(_51){ +return _document; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_53,_54,_55){ +with(_53){ +objj_msgSend(objj_msgSend(_53,"window"),"setDocumentEdited:",_55); +} +}),new objj_method(sel_getUid("close"),function(_56,_57){ +with(_56){ +objj_msgSend(objj_msgSend(_56,"window"),"close"); +} +}),new objj_method(sel_getUid("setShouldCloseDocument:"),function(_58,_59,_5a){ +with(_58){ +_shouldCloseDocument=_5a; +} +}),new objj_method(sel_getUid("shouldCloseDocument"),function(_5b,_5c){ +with(_5b){ +return _shouldCloseDocument; +} +}),new objj_method(sel_getUid("owner"),function(_5d,_5e){ +with(_5d){ +return _cibOwner; +} +}),new objj_method(sel_getUid("windowCibName"),function(_5f,_60){ +with(_5f){ +if(_windowCibName){ +return _windowCibName; +} +return objj_msgSend(objj_msgSend(_windowCibPath,"lastPathComponent"),"stringByDeletingPathExtension"); +} +}),new objj_method(sel_getUid("windowCibPath"),function(_61,_62){ +with(_61){ +if(_windowCibPath){ +return _windowCibPath; +} +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_windowCibName+".cib"); +} +}),new objj_method(sel_getUid("synchronizeWindowTitleWithDocumentName"),function(_63,_64){ +with(_63){ +if(!_document||!_window){ +return; +} +objj_msgSend(_window,"setTitle:",objj_msgSend(_63,"windowTitleForDocumentDisplayName:",objj_msgSend(_document,"displayName"))); +} +}),new objj_method(sel_getUid("windowTitleForDocumentDisplayName:"),function(_65,_66,_67){ +with(_65){ +return _67; +} +})]); +p;20;_CPCibClassSwapper.jt;1345;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1274; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="_CPCibClassSwapperClassNameKey",_2="_CPCibClassSwapperOriginalClassNameKey"; +var _3=objj_allocateClassPair(CPObject,"_CPCibClassSwapper"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_4,[new objj_method(sel_getUid("allocObjectWithCoder:className:"),function(_5,_6,_7,_8){ +with(_5){ +var _9=objj_msgSend(_7,"classForClassName:",_8); +if(!_9){ +_9=objj_lookUpClass(_8); +if(!_9){ +return nil; +} +} +return objj_msgSend(_9,"alloc"); +} +}),new objj_method(sel_getUid("allocWithCoder:"),function(_a,_b,_c){ +with(_a){ +if(objj_msgSend(_c,"respondsToSelector:",sel_getUid("usesOriginalClasses"))&&objj_msgSend(_c,"usesOriginalClasses")){ +var _d=objj_msgSend(_c,"decodeObjectForKey:",_2),_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,_d); +}else{ +var _d=objj_msgSend(_c,"decodeObjectForKey:",_1),_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,_d); +if(!_e){ +CPLog.error("Unable to find class "+_d+" in cib file."); +_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,objj_msgSend(_c,"decodeObjectForKey:",_2)); +} +} +if(!_e){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unable to find class "+_d+" in cib file."); +} +return _e; +} +})]); +p;20;_CPCibCustomObject.jt;1717;@STATIC;1.0;I;21;Foundation/CPObject.jt;1672; +objj_executeFile("Foundation/CPObject.j",NO); +var _1="_CPCibCustomObjectClassName"; +var _2=objj_allocateClassPair(CPObject,"_CPCibCustomObject"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_className")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("customClassName"),function(_4,_5){ +with(_4){ +return _className; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_6,_7,_8){ +with(_6){ +_className=_8; +} +}),new objj_method(sel_getUid("description"),function(_9,_a){ +with(_9){ +return objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPCibCustomObject").super_class},"description")+" ("+objj_msgSend(_9,"customClassName")+")"; +} +})]); +var _2=objj_getClass("_CPCibCustomObject"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomObject\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("_CPCibCustomObject").super_class},"init"); +if(_b){ +_className=objj_msgSend(_d,"decodeObjectForKey:",_1); +} +return _b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e,_f,_10){ +with(_e){ +objj_msgSend(_10,"encodeObject:forKey:",_className,_1); +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_11,_12){ +with(_11){ +var _13=CPClassFromString(_className); +if(_13===objj_msgSend(_11,"class")){ +_className="CPObject"; +return _11; +} +if(!_13){ +_13=objj_msgSend(CPObject,"class"); +} +if(_13===objj_msgSend(CPApplication,"class")){ +return objj_msgSend(CPApplication,"sharedApplication"); +} +return objj_msgSend(objj_msgSend(_13,"alloc"),"init"); +} +})]); +p;22;_CPCibCustomResource.jt;3116;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;3045; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="_CPCibCustomResourceClassNameKey",_2="_CPCibCustomResourceResourceNameKey",_3="_CPCibCustomResourcePropertiesKey"; +var _4=objj_allocateClassPair(CPObject,"_CPCibCustomResource"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_className"),new objj_ivar("_resourceName"),new objj_ivar("_properties")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithClassName:resourceName:properties:"),function(_6,_7,_8,_9,_a){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("_CPCibCustomResource").super_class},"init"); +if(_6){ +_className=_8; +_resourceName=_9; +_properties=_a; +} +return _6; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("_CPCibCustomResource").super_class},"init"); +if(_b){ +_className=objj_msgSend(_d,"decodeObjectForKey:",_1); +_resourceName=objj_msgSend(_d,"decodeObjectForKey:",_2); +_properties=objj_msgSend(_d,"decodeObjectForKey:",_3); +} +return _b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e,_f,_10){ +with(_e){ +objj_msgSend(_10,"encodeObject:forKey:",_className,_1); +objj_msgSend(_10,"encodeObject:forKey:",_resourceName,_2); +objj_msgSend(_10,"encodeObject:forKey:",_properties,_3); +} +}),new objj_method(sel_getUid("awakeAfterUsingCoder:"),function(_11,_12,_13){ +with(_11){ +if(objj_msgSend(_13,"respondsToSelector:",sel_getUid("bundle"))&&(!objj_msgSend(_13,"respondsToSelector:",sel_getUid("awakenCustomResources"))||objj_msgSend(_13,"awakenCustomResources"))){ +if(_className==="CPImage"){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(_13,"bundle"),"pathForResource:",_resourceName),_properties.valueForKey("size")); +} +} +return _11; +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("imageResourceWithName:size:"),function(_14,_15,_16,_17){ +with(_14){ +return objj_msgSend(objj_msgSend(_14,"alloc"),"initWithClassName:resourceName:properties:","CPImage",_16,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_17,"size")); +} +})]); +var _4=objj_getClass("_CPCibCustomResource"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomResource\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("filename"),function(_18,_19){ +with(_18){ +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_resourceName); +} +}),new objj_method(sel_getUid("size"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_properties,"objectForKey:","size"); +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_1c,_1d){ +with(_1c){ +return NO; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_1e,_1f){ +with(_1e){ +return NO; +} +}),new objj_method(sel_getUid("loadStatus"),function(_20,_21){ +with(_20){ +return CPImageLoadStatusCompleted; +} +}),new objj_method(sel_getUid("delegate"),function(_22,_23){ +with(_22){ +return nil; +} +})]); +p;18;_CPCibCustomView.jt;2402;@STATIC;1.0;i;8;CPView.jt;2371; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPCibCustomView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_className")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("customClassName"),function(_3,_4){ +with(_3){ +return _className; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_5,_6,_7){ +with(_5){ +if(_className===_7){ +return; +} +_className=_7; +objj_msgSend(_5,"setNeedsDisplay:",YES); +objj_msgSend(_5,"setNeedsLayout"); +} +})]); +var _8="_CPCibCustomViewClassNameKey"; +var _1=objj_getClass("_CPCibCustomView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_9,_a,_b){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPCibCustomView").super_class},"initWithCoder:",_b); +if(_9){ +_className=objj_msgSend(_b,"decodeObjectForKey:",_8); +} +return _9; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPCibCustomView").super_class},"encodeWithCoder:",_e); +objj_msgSend(_e,"encodeObject:forKey:",_className,_8); +} +}),new objj_method(sel_getUid("customClassName"),function(_f,_10){ +with(_f){ +return _className; +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_11,_12){ +with(_11){ +var _13=CPClassFromString(_className); +if(!_13){ +_13=objj_msgSend(CPView,"class"); +} +if(_13===objj_msgSend(_11,"class")){ +_className="CPView"; +return _11; +} +var _14=objj_msgSend(objj_msgSend(_13,"alloc"),"initWithFrame:",objj_msgSend(_11,"frame")); +if(_14){ +objj_msgSend(_14,"setBounds:",objj_msgSend(_11,"bounds")); +var _15=objj_msgSend(_11,"subviews"),_16=0,_17=_15.length; +for(;_16<_17;++_16){ +objj_msgSend(_14,"addSubview:",_15[_16]); +} +objj_msgSend(_14,"setAutoresizingMask:",objj_msgSend(_11,"autoresizingMask")); +objj_msgSend(_14,"setAutoresizesSubviews:",objj_msgSend(_11,"autoresizesSubviews")); +objj_msgSend(_14,"setHitTests:",objj_msgSend(_11,"hitTests")); +objj_msgSend(_14,"setHidden:",objj_msgSend(_11,"isHidden")); +objj_msgSend(_14,"setAlphaValue:",objj_msgSend(_11,"alphaValue")); +objj_msgSend(_superview,"replaceSubview:with:",_11,_14); +objj_msgSend(_14,"setBackgroundColor:",objj_msgSend(_11,"backgroundColor")); +} +return _14; +} +})]); +p;23;_CPCibKeyedUnarchiver.jt;1485;@STATIC;1.0;I;30;Foundation/CPKeyedUnarchiver.jt;1431; +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +var _1=objj_allocateClassPair(CPKeyedUnarchiver,"_CPCibKeyedUnarchiver"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_bundle"),new objj_ivar("_awakenCustomResources"),new objj_ivar("_externalObjectsForProxyIdentifiers")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initForReadingWithData:bundle:awakenCustomResources:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPCibKeyedUnarchiver").super_class},"initForReadingWithData:",_5); +if(_3){ +_bundle=_6; +_awakenCustomResources=_7; +objj_msgSend(_3,"setDelegate:",_3); +} +return _3; +} +}),new objj_method(sel_getUid("bundle"),function(_8,_9){ +with(_8){ +return _bundle; +} +}),new objj_method(sel_getUid("awakenCustomResources"),function(_a,_b){ +with(_a){ +return _awakenCustomResources; +} +}),new objj_method(sel_getUid("setExternalObjectsForProxyIdentifiers:"),function(_c,_d,_e){ +with(_c){ +_externalObjectsForProxyIdentifiers=_e; +} +}),new objj_method(sel_getUid("externalObjectForProxyIdentifier:"),function(_f,_10,_11){ +with(_f){ +return objj_msgSend(_externalObjectsForProxyIdentifiers,"objectForKey:",_11); +} +}),new objj_method(sel_getUid("replaceObjectAtUID:withObject:"),function(_12,_13,_14,_15){ +with(_12){ +_objects[_14]=_15; +} +}),new objj_method(sel_getUid("objectAtUID:"),function(_16,_17,_18){ +with(_16){ +return _objects[_18]; +} +})]); +p;18;_CPCibObjectData.jt;6216;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;22;CPCibOutletConnector.jt;6033; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPCib.j",YES); +objj_executeFile("CPCibConnector.j",YES); +objj_executeFile("CPCibControlConnector.j",YES); +objj_executeFile("CPCibOutletConnector.j",YES); +var _1=objj_allocateClassPair(CPObject,"_CPCibObjectData"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_namesKeys"),new objj_ivar("_namesValues"),new objj_ivar("_accessibilityConnectors"),new objj_ivar("_accessibilityOidsKeys"),new objj_ivar("_accessibilityOidsValues"),new objj_ivar("_classesKeys"),new objj_ivar("_classesValues"),new objj_ivar("_connections"),new objj_ivar("_fontManager"),new objj_ivar("_framework"),new objj_ivar("_nextOid"),new objj_ivar("_objectsKeys"),new objj_ivar("_objectsValues"),new objj_ivar("_oidKeys"),new objj_ivar("_oidValues"),new objj_ivar("_fileOwner"),new objj_ivar("_visibleWindows"),new objj_ivar("_replacementObjects")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPCibObjectData").super_class},"init"); +if(_3){ +_namesKeys=[]; +_namesValues=[]; +_classesKeys=[]; +_classesValues=[]; +_connections=[]; +_framework=""; +_nextOid=[]; +_objectsKeys=[]; +_objectsValues=[]; +_oidKeys=[]; +_oidValues=[]; +_fileOwner=nil; +_visibleWindows=objj_msgSend(CPSet,"set"); +} +return _3; +} +}),new objj_method(sel_getUid("displayVisibleWindows"),function(_5,_6){ +with(_5){ +var _7=nil,_8=objj_msgSend(_visibleWindows,"objectEnumerator"); +while(_7=objj_msgSend(_8,"nextObject")){ +objj_msgSend(_replacementObjects[objj_msgSend(_7,"UID")],"makeKeyAndOrderFront:",_5); +} +} +})]); +var _9="_CPCibObjectDataNamesKeysKey",_a="_CPCibObjectDataNamesValuesKey",_b="_CPCibObjectDataAccessibilityConnectors",_c="_CPCibObjectDataAccessibilityOidsKeys",_d="_CPCibObjectDataAccessibilityOidsValues",_e="_CPCibObjectDataClassesKeysKey",_f="_CPCibObjectDataClassesValuesKey",_10="_CPCibObjectDataConnectionsKey",_11="_CPCibObjectDataFontManagerKey",_12="_CPCibObjectDataFrameworkKey",_13="_CPCibObjectDataNextOidKey",_14="_CPCibObjectDataObjectsKeysKey",_15="_CPCibObjectDataObjectsValuesKey",_16="_CPCibObjectDataOidKeysKey",_17="_CPCibObjectDataOidValuesKey",_18="_CPCibObjectDataFileOwnerKey",_19="_CPCibObjectDataVisibleWindowsKey"; +var _1=objj_getClass("_CPCibObjectData"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibObjectData\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_1a,_1b,_1c){ +with(_1a){ +_1a=objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("_CPCibObjectData").super_class},"init"); +if(_1a){ +_replacementObjects={}; +_namesKeys=objj_msgSend(_1c,"decodeObjectForKey:",_9); +_namesValues=objj_msgSend(_1c,"decodeObjectForKey:",_a); +_classesKeys=objj_msgSend(_1c,"decodeObjectForKey:",_e); +_classesValues=objj_msgSend(_1c,"decodeObjectForKey:",_f); +_connections=objj_msgSend(_1c,"decodeObjectForKey:",_10); +_framework=objj_msgSend(_1c,"decodeObjectForKey:",_12); +_nextOid=objj_msgSend(_1c,"decodeIntForKey:",_13); +_objectsKeys=objj_msgSend(_1c,"decodeObjectForKey:",_14); +_objectsValues=objj_msgSend(_1c,"decodeObjectForKey:",_15); +_oidKeys=objj_msgSend(_1c,"decodeObjectForKey:",_16); +_oidValues=objj_msgSend(_1c,"decodeObjectForKey:",_17); +_fileOwner=objj_msgSend(_1c,"decodeObjectForKey:",_18); +_visibleWindows=objj_msgSend(_1c,"decodeObjectForKey:",_19); +} +return _1a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_1f,"encodeObject:forKey:",_namesKeys,_9); +objj_msgSend(_1f,"encodeObject:forKey:",_namesValues,_a); +objj_msgSend(_1f,"encodeObject:forKey:",_classesKeys,_e); +objj_msgSend(_1f,"encodeObject:forKey:",_classesValues,_f); +objj_msgSend(_1f,"encodeObject:forKey:",_connections,_10); +objj_msgSend(_1f,"encodeObject:forKey:",_framework,_12); +objj_msgSend(_1f,"encodeInt:forKey:",_nextOid,_13); +objj_msgSend(_1f,"encodeObject:forKey:",_objectsKeys,_14); +objj_msgSend(_1f,"encodeObject:forKey:",_objectsValues,_15); +objj_msgSend(_1f,"encodeObject:forKey:",_oidKeys,_16); +objj_msgSend(_1f,"encodeObject:forKey:",_oidValues,_17); +objj_msgSend(_1f,"encodeObject:forKey:",_fileOwner,_18); +objj_msgSend(_1f,"encodeObject:forKey:",_visibleWindows,_19); +} +}),new objj_method(sel_getUid("instantiateWithOwner:topLevelObjects:"),function(_20,_21,_22,_23){ +with(_20){ +var _24=objj_msgSend(_objectsKeys,"count"); +while(_24--){ +var _25=_objectsKeys[_24],_26=_objectsValues[_24],_27=_25; +if(objj_msgSend(_25,"respondsToSelector:",sel_getUid("_cibInstantiate"))){ +var _27=objj_msgSend(_25,"_cibInstantiate"); +if(_27!==_25){ +_replacementObjects[objj_msgSend(_25,"UID")]=_27; +if(objj_msgSend(_27,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +var _28=objj_msgSend(_27,"superview"); +if(objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _29=objj_msgSend(_28,"superview"); +if(objj_msgSend(_29,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))){ +objj_msgSend(_29,"setDocumentView:",_27); +} +} +} +} +} +if(_23&&_26===_fileOwner&&_25!==_fileOwner){ +_23.push(_27); +} +} +} +}),new objj_method(sel_getUid("establishConnectionsWithOwner:topLevelObjects:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +_replacementObjects[objj_msgSend(_fileOwner,"UID")]=_2c; +var _2e=0,_2f=_connections.length; +for(;_2e<_2f;++_2e){ +var _30=_connections[_2e]; +objj_msgSend(_30,"replaceObjects:",_replacementObjects); +objj_msgSend(_30,"establishConnection"); +} +} +}),new objj_method(sel_getUid("awakeWithOwner:topLevelObjects:"),function(_31,_32,_33,_34){ +with(_31){ +var _35=objj_msgSend(_objectsKeys,"count"); +while(_35--){ +var _36=_objectsKeys[_35],_37=_replacementObjects[objj_msgSend(_36,"UID")]; +if(_37){ +_36=_37; +} +if(_36!==_33&&objj_msgSend(_36,"respondsToSelector:",sel_getUid("awakeFromCib"))){ +objj_msgSend(_36,"awakeFromCib"); +} +} +if(objj_msgSend(_33,"respondsToSelector:",sel_getUid("awakeFromCib"))){ +objj_msgSend(_33,"awakeFromCib"); +} +} +})]); +p;19;_CPCibProxyObject.jt;1009;@STATIC;1.0;I;21;Foundation/CPObject.jt;965; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"_CPCibProxyObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier")]); +objj_registerClassPair(_1); +var _3="CPIdentifier"; +var _1=objj_getClass("_CPCibProxyObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibProxyObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("_CPCibProxyObject").super_class},"init"); +if(_4){ +_identifier=objj_msgSend(_6,"decodeObjectForKey:",_3); +} +if(objj_msgSend(_6,"respondsToSelector:",sel_getUid("externalObjectForProxyIdentifier:"))){ +return objj_msgSend(_6,"externalObjectForProxyIdentifier:",_identifier); +} +return _4; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7,_8,_9){ +with(_7){ +objj_msgSend(_9,"encodeObject:forKey:",_identifier,_3); +} +})]); +p;22;_CPCibWindowTemplate.jt;4518;@STATIC;1.0;I;21;Foundation/CPObject.jt;4473; +objj_executeFile("Foundation/CPObject.j",NO); +var _1="_CPCibWindowTemplateMinSizeKey",_2="_CPCibWindowTemplateMaxSizeKey",_3="_CPCibWindowTemplateViewClassKey",_4="_CPCibWindowTemplateWindowClassKey",_5="_CPCibWindowTemplateWindowRectKey",_6="_CPCibWindowTempatStyleMaskKey",_7="_CPCibWindowTemplateWindowTitleKey",_8="_CPCibWindowTemplateWindowViewKey",_9="_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop"; +_CPCibWindowTemplateWindowIsFullPlatformWindowKey="_CPCibWindowTemplateWindowIsFullPlatformWindowKey"; +var _a=objj_allocateClassPair(CPObject,"_CPCibWindowTemplate"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_viewClass"),new objj_ivar("_windowClass"),new objj_ivar("_windowRect"),new objj_ivar("_windowStyleMask"),new objj_ivar("_windowTitle"),new objj_ivar("_windowView"),new objj_ivar("_windowAutorecalculatesKeyViewLoop"),new objj_ivar("_windowIsFullPlatformWindow")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("init"),function(_c,_d){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPCibWindowTemplate").super_class},"init"); +if(_c){ +_windowClass="CPWindow"; +_windowRect=CGRectMake(0,0,400,200); +_windowStyleMask=CPTitledWindowMask|CPClosableWindowMask|CPMiniaturizableWindowMask|CPResizableWindowMask; +_windowTitle="Window"; +_windowView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,400,200)); +_windowIsFullPlatformWindow=NO; +} +return _c; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_e,_f,_10){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPCibWindowTemplate").super_class},"init"); +if(_e){ +if(objj_msgSend(_10,"containsValueForKey:",_1)){ +_minSize=objj_msgSend(_10,"decodeSizeForKey:",_1); +} +if(objj_msgSend(_10,"containsValueForKey:",_2)){ +_maxSize=objj_msgSend(_10,"decodeSizeForKey:",_2); +} +_viewClass=objj_msgSend(_10,"decodeObjectForKey:",_3); +_windowClass=objj_msgSend(_10,"decodeObjectForKey:",_4); +_windowRect=objj_msgSend(_10,"decodeRectForKey:",_5); +_windowStyleMask=objj_msgSend(_10,"decodeIntForKey:",_6); +_windowTitle=objj_msgSend(_10,"decodeObjectForKey:",_7); +_windowView=objj_msgSend(_10,"decodeObjectForKey:",_8); +_windowAutorecalculatesKeyViewLoop=!!objj_msgSend(_10,"decodeObjectForKey:",_9); +_windowIsFullPlatformWindow=!!objj_msgSend(_10,"decodeObjectForKey:",_CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +return _e; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_11,_12,_13){ +with(_11){ +if(_minSize){ +objj_msgSend(_13,"encodeSize:forKey:",_minSize,_1); +} +if(_maxSize){ +objj_msgSend(_13,"encodeSize:forKey:",_maxSize,_2); +} +objj_msgSend(_13,"encodeObject:forKey:",_viewClass,_3); +objj_msgSend(_13,"encodeObject:forKey:",_windowClass,_4); +objj_msgSend(_13,"encodeRect:forKey:",_windowRect,_5); +objj_msgSend(_13,"encodeInt:forKey:",_windowStyleMask,_6); +objj_msgSend(_13,"encodeObject:forKey:",_windowTitle,_7); +objj_msgSend(_13,"encodeObject:forKey:",_windowView,_8); +if(_windowAutorecalculatesKeyViewLoop){ +objj_msgSend(_13,"encodeObject:forKey:",_windowAutorecalculatesKeyViewLoop,_9); +} +if(_windowIsFullPlatformWindow){ +objj_msgSend(_13,"encodeObject:forKey:",_windowIsFullPlatformWindow,_CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +} +}),new objj_method(sel_getUid("customClassName"),function(_14,_15){ +with(_14){ +return _windowClass; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_16,_17,_18){ +with(_16){ +_windowClass=_18; +} +}),new objj_method(sel_getUid("windowClass"),function(_19,_1a){ +with(_19){ +return _windowClass; +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_1b,_1c){ +with(_1b){ +var _1d=CPClassFromString(objj_msgSend(_1b,"windowClass")); +var _1e=objj_msgSend(objj_msgSend(_1d,"alloc"),"initWithContentRect:styleMask:",_windowRect,_windowStyleMask); +if(_minSize){ +objj_msgSend(_1e,"setMinSize:",_minSize); +} +if(_maxSize){ +objj_msgSend(_1e,"setMaxSize:",_maxSize); +} +objj_msgSend(_1e,"setTitle:",_windowTitle); +objj_msgSend(_windowView,"setAutoresizesSubviews:",NO); +objj_msgSend(_1e,"setContentView:",_windowView); +objj_msgSend(_windowView,"setAutoresizesSubviews:",YES); +if(objj_msgSend(_viewClass,"isKindOfClass:",objj_msgSend(CPToolbar,"class"))){ +objj_msgSend(_1e,"setToolbar:",_viewClass); +} +objj_msgSend(_1e,"setAutorecalculatesKeyViewLoop:",_windowAutorecalculatesKeyViewLoop); +objj_msgSend(_1e,"setFullBridge:",_windowIsFullPlatformWindow); +return _1e; +} +})]); +p;7;CPCib.jt;5447;@STATIC;1.0;I;21;Foundation/CPObject.jI;28;Foundation/CPURLConnection.jI;25;Foundation/CPURLRequest.ji;20;_CPCibClassSwapper.ji;20;_CPCibCustomObject.ji;22;_CPCibCustomResource.ji;18;_CPCibCustomView.ji;23;_CPCibKeyedUnarchiver.ji;18;_CPCibObjectData.ji;19;_CPCibProxyObject.ji;22;_CPCibWindowTemplate.jt;5137; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPURLConnection.j",NO); +objj_executeFile("Foundation/CPURLRequest.j",NO); +objj_executeFile("_CPCibClassSwapper.j",YES); +objj_executeFile("_CPCibCustomObject.j",YES); +objj_executeFile("_CPCibCustomResource.j",YES); +objj_executeFile("_CPCibCustomView.j",YES); +objj_executeFile("_CPCibKeyedUnarchiver.j",YES); +objj_executeFile("_CPCibObjectData.j",YES); +objj_executeFile("_CPCibProxyObject.j",YES); +objj_executeFile("_CPCibWindowTemplate.j",YES); +CPCibOwner="CPCibOwner",CPCibTopLevelObjects="CPCibTopLevelObjects",CPCibReplacementClasses="CPCibReplacementClasses",CPCibExternalObjects="CPCibExternalObjects"; +var _1="CPCibObjectDataKey"; +var _2=objj_allocateClassPair(CPObject,"CPCib"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_data"),new objj_ivar("_bundle"),new objj_ivar("_awakenCustomResources"),new objj_ivar("_loadDelegate")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithContentsOfURL:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPCib").super_class},"init"); +if(_4){ +_data=objj_msgSend(CPURLConnection,"sendSynchronousRequest:returningResponse:",objj_msgSend(CPURLRequest,"requestWithURL:",_6),nil); +_awakenCustomResources=YES; +} +return _4; +} +}),new objj_method(sel_getUid("initWithContentsOfURL:loadDelegate:"),function(_7,_8,_9,_a){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPCib").super_class},"init"); +if(_7){ +objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",objj_msgSend(CPURLRequest,"requestWithURL:",_9),_7); +_awakenCustomResources=YES; +_loadDelegate=_a; +} +return _7; +} +}),new objj_method(sel_getUid("initWithCibNamed:bundle:"),function(_b,_c,_d,_e){ +with(_b){ +if(!objj_msgSend(_d,"hasSuffix:",".cib")){ +_d=objj_msgSend(_d,"stringByAppendingString:",".cib"); +} +_b=objj_msgSend(_b,"initWithContentsOfURL:",objj_msgSend(_e||objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_d)); +if(_b){ +_bundle=_e; +} +return _b; +} +}),new objj_method(sel_getUid("initWithCibNamed:bundle:loadDelegate:"),function(_f,_10,_11,_12,_13){ +with(_f){ +if(!objj_msgSend(_11,"hasSuffix:",".cib")){ +_11=objj_msgSend(_11,"stringByAppendingString:",".cib"); +} +_f=objj_msgSend(_f,"initWithContentsOfURL:loadDelegate:",objj_msgSend(_12||objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_11),_13); +if(_f){ +_bundle=_12; +} +return _f; +} +}),new objj_method(sel_getUid("_setAwakenCustomResources:"),function(_14,_15,_16){ +with(_14){ +_awakenCustomResources=_16; +} +}),new objj_method(sel_getUid("_awakenCustomResources"),function(_17,_18){ +with(_17){ +return _awakenCustomResources; +} +}),new objj_method(sel_getUid("instantiateCibWithExternalNameTable:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=_bundle,_1d=objj_msgSend(_1b,"objectForKey:",CPCibOwner); +if(!_1c&&_1d){ +_1c=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_1d,"class")); +} +var _1e=objj_msgSend(objj_msgSend(_CPCibKeyedUnarchiver,"alloc"),"initForReadingWithData:bundle:awakenCustomResources:",_data,_1c,_awakenCustomResources),_1f=objj_msgSend(_1b,"objectForKey:",CPCibReplacementClasses); +if(_1f){ +var key=nil,_20=objj_msgSend(_1f,"keyEnumerator"); +while(key=objj_msgSend(_20,"nextObject")){ +objj_msgSend(_1e,"setClass:forClassName:",objj_msgSend(_1f,"objectForKey:",key),key); +} +} +objj_msgSend(_1e,"setExternalObjectsForProxyIdentifiers:",objj_msgSend(_1b,"objectForKey:",CPCibExternalObjects)); +var _21=objj_msgSend(_1e,"decodeObjectForKey:",_1); +if(!_21||!objj_msgSend(_21,"isKindOfClass:",objj_msgSend(_CPCibObjectData,"class"))){ +return NO; +} +var _22=objj_msgSend(_1b,"objectForKey:",CPCibTopLevelObjects); +objj_msgSend(_21,"instantiateWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"establishConnectionsWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"awakeWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"displayVisibleWindows"); +return YES; +} +}),new objj_method(sel_getUid("instantiateCibWithOwner:topLevelObjects:"),function(_23,_24,_25,_26){ +with(_23){ +return objj_msgSend(_23,"instantiateCibWithExternalNameTable:",objj_msgSend(CPDictionary,"dictionaryWithObjectsAndKeys:",_25,CPCibOwner,_26,CPCibTopLevelObjects)); +} +})]); +var _2=objj_getClass("CPCib"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPCib\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("connection:didReceiveData:"),function(_27,_28,_29,_2a){ +with(_27){ +if(!_2a){ +return objj_msgSend(_27,"connection:didFailWithError:",_29,nil); +} +_data=objj_msgSend(CPData,"dataWithRawString:",_2a); +} +}),new objj_method(sel_getUid("connection:didFailWithError:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +if(objj_msgSend(_loadDelegate,"respondsToSelector:",sel_getUid("cibDidFailToLoad:"))){ +objj_msgSend(_loadDelegate,"cibDidFailToLoad:",_2b); +} +_loadDelegate=nil; +} +}),new objj_method(sel_getUid("connectionDidFinishLoading:"),function(_2f,_30,_31){ +with(_2f){ +if(objj_msgSend(_loadDelegate,"respondsToSelector:",sel_getUid("cibDidFinishLoading:"))){ +objj_msgSend(_loadDelegate,"cibDidFinishLoading:",_2f); +} +_loadDelegate=nil; +} +})]); +p;16;CPCibConnector.jt;2363;@STATIC;1.0;I;21;Foundation/CPObject.jI;29;Foundation/CPKeyValueCoding.jt;2284; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPKeyValueCoding.j",NO); +var _1="_CPCibConnectorSourceKey",_2="_CPCibConnectorDestinationKey",_3="_CPCibConnectorLabelKey"; +var _4=objj_allocateClassPair(CPObject,"CPCibConnector"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_source"),new objj_ivar("_destination"),new objj_ivar("_label")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("source"),function(_6,_7){ +with(_6){ +return _source; +} +}),new objj_method(sel_getUid("setSource:"),function(_8,_9,_a){ +with(_8){ +_source=_a; +} +}),new objj_method(sel_getUid("destination"),function(_b,_c){ +with(_b){ +return _destination; +} +}),new objj_method(sel_getUid("setDestination:"),function(_d,_e,_f){ +with(_d){ +_destination=_f; +} +}),new objj_method(sel_getUid("label"),function(_10,_11){ +with(_10){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_12,_13,_14){ +with(_12){ +_label=_14; +} +}),new objj_method(sel_getUid("replaceObject:withObject:"),function(_15,_16,_17,_18){ +with(_15){ +if(_source===_17){ +_source=_18; +} +if(_destination===_17){ +_destination=_18; +} +} +}),new objj_method(sel_getUid("replaceObjects:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=_1b[objj_msgSend(_source,"UID")]; +if(_1c!==undefined){ +_source=_1c; +} +_1c=_1b[objj_msgSend(_destination,"UID")]; +if(_1c!==undefined){ +_destination=_1c; +} +} +})]); +var _4=objj_getClass("CPCibConnector"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPCibConnector\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +_1d=objj_msgSendSuper({receiver:_1d,super_class:objj_getClass("CPCibConnector").super_class},"init"); +if(_1d){ +_source=objj_msgSend(_1f,"decodeObjectForKey:",_1); +_destination=objj_msgSend(_1f,"decodeObjectForKey:",_2); +_label=objj_msgSend(_1f,"decodeObjectForKey:",_3); +} +return _1d; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(_22,"encodeObject:forKey:",_source,_1); +objj_msgSend(_22,"encodeObject:forKey:",_destination,_2); +objj_msgSend(_22,"encodeObject:forKey:",_label,_3); +} +})]); +var _4=objj_allocateClassPair(CPCibConnector,"_CPCibConnector"),_5=_4.isa; +objj_registerClassPair(_4); +p;23;CPCibControlConnector.jt;1534;@STATIC;1.0;i;16;CPCibConnector.jt;1494; +objj_executeFile("CPCibConnector.j",YES); +var _1=objj_allocateClassPair(CPCibConnector,"CPCibControlConnector"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("establishConnection"),function(_3,_4){ +with(_3){ +var _5=_label,_6=objj_msgSend(_5,"length"); +if(_6&&_5.charAt(_6-1)!==":"){ +_5+=":"; +} +var _7=CPSelectorFromString(_5); +if(!_7){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] selector "+_5+" does not exist."); +} +if(_destination&&!objj_msgSend(_destination,"respondsToSelector:",_7)){ +CPLog.warn("Could not connect the action "+_7+" to target of class "+objj_msgSend(_destination,"className")); +return; +} +if(objj_msgSend(_source,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_source,sel_getUid("setAction:"),_7); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] "+objj_msgSend(_source,"description")+" does not respond to setAction:"); +} +if(objj_msgSend(_source,"respondsToSelector:",sel_getUid("setTarget:"))){ +objj_msgSend(_source,sel_getUid("setTarget:"),_destination); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] "+objj_msgSend(_source,"description")+" does not respond to setTarget:"); +} +} +})]); +var _1=objj_allocateClassPair(CPCibControlConnector,"_CPCibControlConnector"),_2=_1.isa; +objj_registerClassPair(_1); +p;14;CPCibLoading.jt;3586;@STATIC;1.0;I;21;Foundation/CPBundle.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;3485; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="CPCibOwner"; +var _2=objj_getClass("CPObject"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("awakeFromCib"),function(_4,_5){ +with(_4){ +} +})]); +var _2=objj_getClass("CPBundle"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPBundle\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("loadCibFile:externalNameTable:"),function(_6,_7,_8,_9){ +with(_6){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",_8),"instantiateCibWithExternalNameTable:",_9); +} +}),new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"),function(_a,_b,_c,_d,_e){ +with(_a){ +return (objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithCibNamed:bundle:loadDelegate:",_c,_a,objj_msgSend(objj_msgSend(_CPCibLoadDelegate,"alloc"),"initWithLoadDelegate:externalNameTable:",_e,_d))); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("loadCibFile:externalNameTable:"),function(_f,_10,_11,_12){ +with(_f){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",_11),"instantiateCibWithExternalNameTable:",_12); +} +}),new objj_method(sel_getUid("loadCibNamed:owner:"),function(_13,_14,_15,_16){ +with(_13){ +if(!objj_msgSend(_15,"hasSuffix:",".cib")){ +_15=objj_msgSend(_15,"stringByAppendingString:",".cib"); +} +var _17=_16?objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_16,"class")):objj_msgSend(CPBundle,"mainBundle"),_18=objj_msgSend(_17,"pathForResource:",_15); +return objj_msgSend(_13,"loadCibFile:externalNameTable:",_18,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_16,_1)); +} +}),new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"),function(_19,_1a,_1b,_1c,_1d){ +with(_19){ +return (objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:loadDelegate:",_1b,objj_msgSend(objj_msgSend(_CPCibLoadDelegate,"alloc"),"initWithLoadDelegate:externalNameTable:",_1d,_1c))); +} +}),new objj_method(sel_getUid("loadCibNamed:owner:loadDelegate:"),function(_1e,_1f,_20,_21,_22){ +with(_1e){ +if(!objj_msgSend(_20,"hasSuffix:",".cib")){ +_20=objj_msgSend(_20,"stringByAppendingString:",".cib"); +} +var _23=_21?objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_21,"class")):objj_msgSend(CPBundle,"mainBundle"),_24=objj_msgSend(_23,"pathForResource:",_20); +return objj_msgSend(_1e,"loadCibFile:externalNameTable:loadDelegate:",_24,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_21,_1),_22); +} +})]); +var _2=objj_allocateClassPair(CPObject,"_CPCibLoadDelegate"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_loadDelegate"),new objj_ivar("_externalNameTable")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithLoadDelegate:externalNameTable:"),function(_25,_26,_27,_28){ +with(_25){ +_25=objj_msgSend(_25,"init"); +if(_25){ +_loadDelegate=_27; +_externalNameTable=_28; +} +return _25; +} +}),new objj_method(sel_getUid("cibDidFinishLoading:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"instantiateCibWithExternalNameTable:",_externalNameTable); +objj_msgSend(_loadDelegate,"cibDidFinishLoading:",_2b); +} +}),new objj_method(sel_getUid("cibDidFailToLoad:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_loadDelegate,"cibDidFailToLoad:",_2e); +} +})]); +p;22;CPCibOutletConnector.jt;703;@STATIC;1.0;i;16;CPCibConnector.jt;664; +objj_executeFile("CPCibConnector.j",YES); +var _1=objj_allocateClassPair(CPCibConnector,"CPCibOutletConnector"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("establishConnection"),function(_3,_4){ +with(_3){ +try{ +objj_msgSend(_source,"setValue:forKey:",_destination,_label); +} +catch(anException){ +if(objj_msgSend(anException,"name")===CPUndefinedKeyException){ +CPLog.warn("Could not connect the outlet "+_label+" of target of class "+objj_msgSend(_source,"className")); +}else{ +throw anException; +} +} +} +})]); +var _1=objj_allocateClassPair(CPCibOutletConnector,"_CPCibOutletConnector"),_2=_1.isa; +objj_registerClassPair(_1); +p;13;CAAnimation.jt;3814;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;23;CAMediaTimingFunction.jt;3715; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CAMediaTimingFunction.j",YES); +var _1=objj_allocateClassPair(CPObject,"CAAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isRemovedOnCompletion"),new objj_ivar("_delegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CAAnimation").super_class},"init"); +if(_3){ +_isRemovedOnCompletion=YES; +} +return _3; +} +}),new objj_method(sel_getUid("shouldArchiveValueForKey:"),function(_5,_6,_7){ +with(_5){ +return YES; +} +}),new objj_method(sel_getUid("setRemovedOnCompletion:"),function(_8,_9,_a){ +with(_8){ +_isRemovedOnCompletion=_a; +} +}),new objj_method(sel_getUid("removedOnCompletion"),function(_b,_c){ +with(_b){ +return _isRemovedOnCompletion; +} +}),new objj_method(sel_getUid("isRemovedOnCompletion"),function(_d,_e){ +with(_d){ +return _isRemovedOnCompletion; +} +}),new objj_method(sel_getUid("timingFunction"),function(_f,_10){ +with(_f){ +return nil; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_11,_12,_13){ +with(_11){ +_delegate=_13; +} +}),new objj_method(sel_getUid("delegate"),function(_14,_15){ +with(_14){ +return _delegate; +} +}),new objj_method(sel_getUid("runActionForKey:object:arguments:"),function(_16,_17,_18,_19,_1a){ +with(_16){ +objj_msgSend(_19,"addAnimation:forKey:",_16,_18); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("animation"),function(_1b,_1c){ +with(_1b){ +return objj_msgSend(objj_msgSend(_1b,"alloc"),"init"); +} +}),new objj_method(sel_getUid("defaultValueForKey:"),function(_1d,_1e,_1f){ +with(_1d){ +return nil; +} +})]); +var _1=objj_allocateClassPair(CAAnimation,"CAPropertyAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath"),new objj_ivar("_isCumulative"),new objj_ivar("_isAdditive")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setKeyPath:"),function(_20,_21,_22){ +with(_20){ +_keyPath=_22; +} +}),new objj_method(sel_getUid("keyPath"),function(_23,_24){ +with(_23){ +return _keyPath; +} +}),new objj_method(sel_getUid("setCumulative:"),function(_25,_26,_27){ +with(_25){ +_isCumulative=_27; +} +}),new objj_method(sel_getUid("cumulative"),function(_28,_29){ +with(_28){ +return _isCumulative; +} +}),new objj_method(sel_getUid("isCumulative"),function(_2a,_2b){ +with(_2a){ +return _isCumulative; +} +}),new objj_method(sel_getUid("setAdditive:"),function(_2c,_2d,_2e){ +with(_2c){ +_isAdditive=_2e; +} +}),new objj_method(sel_getUid("additive"),function(_2f,_30){ +with(_2f){ +return _isAdditive; +} +}),new objj_method(sel_getUid("isAdditive"),function(_31,_32){ +with(_31){ +return _isAdditive; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("animationWithKeyPath:"),function(_33,_34,_35){ +with(_33){ +var _36=objj_msgSend(_33,"animation"); +objj_msgSend(_36,"setKeyPath:",_35); +return _36; +} +})]); +var _1=objj_allocateClassPair(CAPropertyAnimation,"CABasicAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_fromValue"),new objj_ivar("_toValue"),new objj_ivar("_byValue")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setFromValue:"),function(_37,_38,_39){ +with(_37){ +_fromValue=_39; +} +}),new objj_method(sel_getUid("fromValue"),function(_3a,_3b){ +with(_3a){ +return _fromValue; +} +}),new objj_method(sel_getUid("setToValue:"),function(_3c,_3d,_3e){ +with(_3c){ +_toValue=_3e; +} +}),new objj_method(sel_getUid("toValue"),function(_3f,_40){ +with(_3f){ +return _toValue; +} +}),new objj_method(sel_getUid("setByValue:"),function(_41,_42,_43){ +with(_41){ +_byValue=_43; +} +}),new objj_method(sel_getUid("byValue"),function(_44,_45){ +with(_44){ +return _byValue; +} +})]); +p;16;CABackingStore.jt;737;@STATIC;1.0;i;12;CGGeometry.ji;17;CPCompatibility.jt;680; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPCompatibility.j",YES); +CABackingStoreGetContext=function(_1){ +return _1.context; +}; +if(CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +CABackingStoreCreate=function(){ +var _2=document.createElement("canvas"); +_2.style.position="absolute"; +return {context:_2.getContext("2d"),buffer:_2,_image:_2}; +}; +CABackingStoreSetSize=function(_3,_4){ +var _5=_3.buffer; +_5.width=_4.width; +_5.height=_4.height; +_5.style.width=_4.width+"px"; +_5.style.height=_4.height+"px"; +}; +}else{ +CABackingStoreCreate=function(){ +var _6=CGBitmapGraphicsContextCreate(); +_6.buffer=""; +return {context:_6}; +}; +CABackingStoreSetSize=function(_7,_8){ +}; +} +p;14;CAFlashLayer.jt;851;@STATIC;1.0;i;9;CALayer.ji;14;CPFlashMovie.jt;801; +objj_executeFile("CALayer.j",YES); +objj_executeFile("CPFlashMovie.j",YES); +var _1=objj_allocateClassPair(CALayer,"CAFlashLayer"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_flashMovie")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setFlashMovie:"),function(_3,_4,_5){ +with(_3){ +if(_flashMovie==_5){ +return; +} +_flashMovie=_5; +_DOMElement.innerHTML=""; +} +}),new objj_method(sel_getUid("flashMovie"),function(_6,_7){ +with(_6){ +return _flashMovie; +} +})]); +p;9;CALayer.jt;24760;@STATIC;1.0;I;21;Foundation/CPObject.jI;23;AppKit/CABackingStore.jI;18;AppKit/CGContext.jI;19;AppKit/CGGeometry.ji;12;CGGeometry.jt;24622; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CABackingStore.j",NO); +objj_executeFile("AppKit/CGContext.j",NO); +objj_executeFile("AppKit/CGGeometry.j",NO); +objj_executeFile("CGGeometry.j",YES); +CGAffineTransformMake=function(a,b,c,d,tx,ty){ +return {a:a,b:b,c:c,d:d,tx:tx,ty:ty}; +}; +CGAffineTransformMakeIdentity=function(){ +return {a:1,b:0,c:0,d:1,tx:0,ty:0}; +}; +CGAffineTransformMakeCopy=function(_1){ +return {a:_1.a,b:_1.b,c:_1.c,d:_1.d,tx:_1.tx,ty:_1.ty}; +}; +CGAffineTransformMakeScale=function(sx,sy){ +return {a:sx,b:0,c:0,d:sy,tx:0,ty:0}; +}; +CGAffineTransformMakeTranslation=function(tx,ty){ +return {a:1,b:0,c:0,d:1,tx:tx,ty:ty}; +}; +CGAffineTransformTranslate=function(_2,tx,ty){ +return {a:_2.a,b:_2.b,c:_2.c,d:_2.d,tx:_2.tx+_2.a*tx+_2.c*ty,ty:_2.ty+_2.b*tx+_2.d*ty}; +}; +CGAffineTransformScale=function(_3,sx,sy){ +return {a:_3.a*sx,b:_3.b*sx,c:_3.c*sy,d:_3.d*sy,tx:_3.tx,ty:_3.ty}; +}; +CGAffineTransformConcat=function(_4,_5){ +return {a:_4.a*_5.a+_4.b*_5.c,b:_4.a*_5.b+_4.b*_5.d,c:_4.c*_5.a+_4.d*_5.c,d:_4.c*_5.b+_4.d*_5.d,tx:_4.tx*_5.a+_4.ty*_5.c+_5.tx,ty:_4.tx*_5.b+_4.ty*_5.d+_5.ty}; +}; +CGPointApplyAffineTransform=function(_6,_7){ +return {x:_6.x*_7.a+_6.y*_7.c+_7.tx,y:_6.x*_7.b+_6.y*_7.d+_7.ty}; +}; +CGSizeApplyAffineTransform=function(_8,_9){ +return {width:_8.width*_9.a+_8.height*_9.c,height:_8.width*_9.b+_8.height*_9.d}; +}; +CGAffineTransformIsIdentity=function(_a){ +return (_a.a==1&&_a.b==0&&_a.c==0&&_a.d==1&&_a.tx==0&&_a.ty==0); +}; +CGAffineTransformEqualToTransform=function(_b,_c){ +return (_b.a==_c.a&&_b.b==_c.b&&_b.c==_c.c&&_b.d==_c.d&&_b.tx==_c.tx&&_b.ty==_c.ty); +}; +CGStringCreateWithCGAffineTransform=function(_d){ +return (" [[ "+_d.a+", "+_d.b+", 0 ], [ "+_d.c+", "+_d.d+", 0 ], [ "+_d.tx+", "+_d.ty+", 1]]"); +}; +CGAffineTransformCreateCopy=function(_e){ +return {a:_e.a,b:_e.b,c:_e.c,d:_e.d,tx:_e.tx,ty:_e.ty}; +}; +CGAffineTransformMakeRotation=function(_f){ +var sin=SIN(_f),cos=COS(_f); +return {a:cos,b:sin,c:-sin,d:cos,tx:0,ty:0}; +}; +CGAffineTransformRotate=function(_10,_11){ +var sin=SIN(_11),cos=COS(_11); +return {a:_10.a*cos+_10.c*sin,b:_10.b*cos+_10.d*sin,c:_10.c*cos-_10.a*sin,d:_10.d*cos-_10.b*sin,tx:_10.tx,ty:_10.ty}; +}; +CGAffineTransformInvert=function(_12){ +var _13=1/(_12.a*_12.d-_12.b*_12.c); +return {a:_13*_12.d,b:-_13*_12.b,c:-_13*_12.c,d:_13*_12.a,tx:_13*(_12.c*_12.ty-_12.d*_12.tx),ty:_13*(_12.b*_12.tx-_12.a*_12.ty)}; +}; +CGRectApplyAffineTransform=function(_14,_15){ +var top=(_14.origin.y),_16=(_14.origin.x),_17=(_14.origin.x+_14.size.width),_18=(_14.origin.y+_14.size.height),_19=CGPointApplyAffineTransform({x:_16,y:top},_15),_1a=CGPointApplyAffineTransform({x:_17,y:top},_15),_1b=CGPointApplyAffineTransform({x:_16,y:_18},_15),_1c=CGPointApplyAffineTransform({x:_17,y:_18},_15),_1d=MIN(_19.x,_1a.x,_1b.x,_1c.x),_1e=MAX(_19.x,_1a.x,_1b.x,_1c.x),_1f=MIN(_19.y,_1a.y,_1b.y,_1c.y),_20=MAX(_19.y,_1a.y,_1b.y,_1c.y); +return {origin:{x:_1d,y:_1f},size:{width:(_1e-_1d),height:(_20-_1f)}}; +}; +CPStringFromCGAffineTransform=function(_21){ +return "{"+_21.a+", "+_21.b+", "+_21.c+", "+_21.d+", "+_21.tx+", "+_21.ty+"}"; +}; +var _22=1,_23=2,_24=4,_25=8,_26=16; +var _27=NO; +var _28=1,_29=2,_2a=4,_2b=8,_2c=16,_2d=_2a|_28|_29; +var _2e=nil; +var _2f=objj_allocateClassPair(CPObject,"CALayer"),_30=_2f.isa; +class_addIvars(_2f,[new objj_ivar("_frame"),new objj_ivar("_bounds"),new objj_ivar("_position"),new objj_ivar("_zPosition"),new objj_ivar("_anchorPoint"),new objj_ivar("_affineTransform"),new objj_ivar("_sublayerTransform"),new objj_ivar("_sublayerTransformForSublayers"),new objj_ivar("_backingStoreFrame"),new objj_ivar("_standardBackingStoreFrame"),new objj_ivar("_hasSublayerTransform"),new objj_ivar("_hasCustomBackingStoreFrame"),new objj_ivar("_opacity"),new objj_ivar("_isHidden"),new objj_ivar("_backgroundColor"),new objj_ivar("_superlayer"),new objj_ivar("_sublayers"),new objj_ivar("_runLoopUpdateMask"),new objj_ivar("_needsDisplayOnBoundsChange"),new objj_ivar("_delegate"),new objj_ivar("_delegateRespondsToDisplayLayerSelector"),new objj_ivar("_delegateRespondsToDrawLayerInContextSelector"),new objj_ivar("_DOMElement"),new objj_ivar("_DOMContentsElement"),new objj_ivar("_contents"),new objj_ivar("_context"),new objj_ivar("_owningView"),new objj_ivar("_transformToLayer"),new objj_ivar("_transformFromLayer")]); +objj_registerClassPair(_2f); +class_addMethods(_2f,[new objj_method(sel_getUid("init"),function(_31,_32){ +with(_31){ +_31=objj_msgSendSuper({receiver:_31,super_class:objj_getClass("CALayer").super_class},"init"); +if(_31){ +_frame=CGRectMakeZero(); +_backingStoreFrame=CGRectMakeZero(); +_standardBackingStoreFrame=CGRectMakeZero(); +_bounds=CGRectMakeZero(); +_position=CGPointMakeZero(); +_zPosition=0; +_anchorPoint=CGPointMake(0.5,0.5); +_affineTransform=CGAffineTransformMakeIdentity(); +_sublayerTransform=CGAffineTransformMakeIdentity(); +_transformToLayer=CGAffineTransformMakeIdentity(); +_transformFromLayer=CGAffineTransformMakeIdentity(); +_opacity=1; +_isHidden=NO; +_masksToBounds=NO; +_sublayers=[]; +_DOMElement=document.createElement("div"); +_DOMElement.style.overflow="visible"; +_DOMElement.style.position="absolute"; +_DOMElement.style.visibility="visible"; +_DOMElement.style.top="0px"; +_DOMElement.style.left="0px"; +_DOMElement.style.zIndex=0; +_DOMElement.style.width="0px"; +_DOMElement.style.height="0px"; +} +return _31; +} +}),new objj_method(sel_getUid("setBounds:"),function(_33,_34,_35){ +with(_33){ +if(CGRectEqualToRect(_bounds,_35)){ +return; +} +var _36=_bounds.origin; +_bounds={origin:{x:_35.origin.x,y:_35.origin.y},size:{width:_35.size.width,height:_35.size.height}}; +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_33); +} +_CALayerRecalculateGeometry(_33,_22); +} +}),new objj_method(sel_getUid("bounds"),function(_37,_38){ +with(_37){ +return _bounds; +} +}),new objj_method(sel_getUid("setPosition:"),function(_39,_3a,_3b){ +with(_39){ +if(CGPointEqualToPoint(_position,_3b)){ +return; +} +_position={x:_3b.x,y:_3b.y}; +_CALayerRecalculateGeometry(_39,_23); +} +}),new objj_method(sel_getUid("position"),function(_3c,_3d){ +with(_3c){ +return _position; +} +}),new objj_method(sel_getUid("setZPosition:"),function(_3e,_3f,_40){ +with(_3e){ +if(_zPosition==_40){ +return; +} +_zPosition=_40; +objj_msgSend(_3e,"registerRunLoopUpdateWithMask:",_2a); +} +}),new objj_method(sel_getUid("setAnchorPoint:"),function(_41,_42,_43){ +with(_41){ +_43={x:_43.x,y:_43.y}; +_43.x=MIN(1,MAX(0,_43.x)); +_43.y=MIN(1,MAX(0,_43.y)); +if(CGPointEqualToPoint(_anchorPoint,_43)){ +return; +} +_anchorPoint=_43; +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_41); +} +if(_owningView){ +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +} +_CALayerRecalculateGeometry(_41,_24); +} +}),new objj_method(sel_getUid("anchorPoint"),function(_44,_45){ +with(_44){ +return _anchorPoint; +} +}),new objj_method(sel_getUid("setAffineTransform:"),function(_46,_47,_48){ +with(_46){ +if(CGAffineTransformEqualToTransform(_affineTransform,_48)){ +return; +} +_affineTransform={a:_48.a,b:_48.b,c:_48.c,d:_48.d,tx:_48.tx,ty:_48.ty}; +_CALayerRecalculateGeometry(_46,_25); +} +}),new objj_method(sel_getUid("affineTransform"),function(_49,_4a){ +with(_49){ +return _affineTransform; +} +}),new objj_method(sel_getUid("setSublayerTransform:"),function(_4b,_4c,_4d){ +with(_4b){ +if(CGAffineTransformEqualToTransform(_sublayerTransform,_4d)){ +return; +} +var _4e=_hasSublayerTransform; +_sublayerTransform={a:_4d.a,b:_4d.b,c:_4d.c,d:_4d.d,tx:_4d.tx,ty:_4d.ty}; +_hasSublayerTransform=!(_sublayerTransform.a==1&&_sublayerTransform.b==0&&_sublayerTransform.c==0&&_sublayerTransform.d==1&&_sublayerTransform.tx==0&&_sublayerTransform.ty==0); +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_4b); +var _4f=_sublayers.length; +while(_4f--){ +_CALayerRecalculateGeometry(_sublayers[_4f],_26); +} +} +} +}),new objj_method(sel_getUid("sublayerTransform"),function(_50,_51){ +with(_50){ +return _sublayerTransform; +} +}),new objj_method(sel_getUid("transformToLayer"),function(_52,_53){ +with(_52){ +return _transformToLayer; +} +}),new objj_method(sel_getUid("setFrame:"),function(_54,_55,_56){ +with(_54){ +alert("FIXME IMPLEMENT"); +} +}),new objj_method(sel_getUid("frame"),function(_57,_58){ +with(_57){ +if(!_frame){ +_frame=objj_msgSend(_57,"convertRect:toLayer:",_bounds,_superlayer); +} +return _frame; +} +}),new objj_method(sel_getUid("backingStoreFrame"),function(_59,_5a){ +with(_59){ +return _backingStoreFrame; +} +}),new objj_method(sel_getUid("setBackingStoreFrame:"),function(_5b,_5c,_5d){ +with(_5b){ +_hasCustomBackingStoreFrame=(_5d!=nil); +if(_5d==nil){ +_5d=CGRectMakeCopy(_standardBackingStoreFrame); +}else{ +if(_superlayer){ +_5d=objj_msgSend(_superlayer,"convertRect:toLayer:",_5d,nil); +var _5e=objj_msgSend(_superlayer,"bounds"),_5f=objj_msgSend(_superlayer,"convertRect:toLayer:",_5e,nil); +_5d.origin.x-=(_5f.origin.x); +_5d.origin.y-=(_5f.origin.y); +}else{ +_5d=CGRectMakeCopy(_5d); +} +} +if(!CGPointEqualToPoint(_backingStoreFrame.origin,_5d.origin)){ +objj_msgSend(_5b,"registerRunLoopUpdateWithMask:",_28); +} +if(!CGSizeEqualToSize(_backingStoreFrame.size,_5d.size)){ +objj_msgSend(_5b,"registerRunLoopUpdateWithMask:",_29); +} +_backingStoreFrame=_5d; +} +}),new objj_method(sel_getUid("contents"),function(_60,_61){ +with(_60){ +return _contents; +} +}),new objj_method(sel_getUid("setContents:"),function(_62,_63,_64){ +with(_62){ +if(_contents==_64){ +return; +} +_contents=_64; +objj_msgSend(_62,"composite"); +} +}),new objj_method(sel_getUid("composite"),function(_65,_66){ +with(_65){ +if(_27&&!_contents||!_context){ +return; +} +CGContextClearRect(_context,{origin:{x:0,y:0},size:{width:(_backingStoreFrame.size.width),height:(_backingStoreFrame.size.height)}}); +var _67=_transformFromLayer; +if(_superlayer){ +var _68=_CALayerGetTransform(_superlayer,nil),_69=CGPointApplyAffineTransform(_superlayer._bounds.origin,_68); +_67=CGAffineTransformConcat(_67,_68); +_67.tx-=_69.x; +_67.ty-=_69.y; +} +_67.tx-=(_backingStoreFrame.origin.x); +_67.ty-=(_backingStoreFrame.origin.y); +CGContextSaveGState(_context); +CGContextConcatCTM(_context,_67); +if(_27){ +_context.drawImage(_contents.buffer,(_bounds.origin.x),(_bounds.origin.y)); +}else{ +objj_msgSend(_65,"drawInContext:",_context); +} +CGContextRestoreGState(_context); +} +}),new objj_method(sel_getUid("display"),function(_6a,_6b){ +with(_6a){ +if(!_context){ +_context=CGBitmapGraphicsContextCreate(); +_DOMContentsElement=_context.DOMElement; +_DOMContentsElement.style.zIndex=-100; +_DOMContentsElement.style.overflow="hidden"; +_DOMContentsElement.style.position="absolute"; +_DOMContentsElement.style.visibility="visible"; +_DOMContentsElement.width=ROUND((_backingStoreFrame.size.width)); +_DOMContentsElement.height=ROUND((_backingStoreFrame.size.height)); +_DOMContentsElement.style.top="0px"; +_DOMContentsElement.style.left="0px"; +_DOMContentsElement.style.width=ROUND((_backingStoreFrame.size.width))+"px"; +_DOMContentsElement.style.height=ROUND((_backingStoreFrame.size.height))+"px"; +_DOMElement.appendChild(_DOMContentsElement); +} +if(_27){ +if(_delegateRespondsToDisplayLayerSelector){ +return objj_msgSend(_delegate,"displayInLayer:",_6a); +} +if((_backingStoreFrame.size.width)==0||(_backingStoreFrame.size.height)==0){ +return; +} +if(!_contents){ +_contents=CABackingStoreCreate(); +} +CABackingStoreSetSize(_contents,_bounds.size); +objj_msgSend(_6a,"drawInContext:",CABackingStoreGetContext(_contents)); +} +objj_msgSend(_6a,"composite"); +} +}),new objj_method(sel_getUid("drawInContext:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_backgroundColor){ +CGContextSetFillColor(_6e,_backgroundColor); +CGContextFillRect(_6e,_bounds); +} +if(_delegateRespondsToDrawLayerInContextSelector){ +objj_msgSend(_delegate,"drawLayer:inContext:",_6c,_6e); +} +} +}),new objj_method(sel_getUid("opacity"),function(_6f,_70){ +with(_6f){ +return _opacity; +} +}),new objj_method(sel_getUid("setOpacity:"),function(_71,_72,_73){ +with(_71){ +if(_opacity==_73){ +return; +} +_opacity=_73; +_DOMElement.style.opacity=_73; +_DOMElement.style.filter="alpha(opacity="+_73*100+")"; +} +}),new objj_method(sel_getUid("setHidden:"),function(_74,_75,_76){ +with(_74){ +_isHidden=_76; +_DOMElement.style.display=_76?"none":"block"; +} +}),new objj_method(sel_getUid("hidden"),function(_77,_78){ +with(_77){ +return _isHidden; +} +}),new objj_method(sel_getUid("isHidden"),function(_79,_7a){ +with(_79){ +return _isHidden; +} +}),new objj_method(sel_getUid("setMasksToBounds:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_masksToBounds==_7d){ +return; +} +_masksToBounds=_7d; +_DOMElement.style.overflow=_masksToBounds?"hidden":"visible"; +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_7e,_7f,_80){ +with(_7e){ +_backgroundColor=_80; +objj_msgSend(_7e,"setNeedsDisplay"); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_81,_82){ +with(_81){ +return _backgroundColor; +} +}),new objj_method(sel_getUid("sublayers"),function(_83,_84){ +with(_83){ +return _sublayers; +} +}),new objj_method(sel_getUid("superlayer"),function(_85,_86){ +with(_85){ +return _superlayer; +} +}),new objj_method(sel_getUid("addSublayer:"),function(_87,_88,_89){ +with(_87){ +objj_msgSend(_87,"insertSublayer:atIndex:",_89,_sublayers.length); +return; +if(_DOMContentsElement&&_89._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"addObject:",_89); +_DOMElement.appendChild(_89._DOMElement); +} +}),new objj_method(sel_getUid("removeFromSuperlayer"),function(_8a,_8b){ +with(_8a){ +if(_owningView){ +objj_msgSend(_owningView,"setLayer:",nil); +} +if(!_superlayer){ +return; +} +_superlayer._DOMElement.removeChild(_DOMElement); +objj_msgSend(_superlayer._sublayers,"removeObject:",_8a); +_superlayer=nil; +} +}),new objj_method(sel_getUid("insertSublayer:atIndex:"),function(_8c,_8d,_8e,_8f){ +with(_8c){ +if(!_8e){ +return; +} +var _90=objj_msgSend(_8e,"superlayer"); +if(_90==_8c){ +var _91=objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_8e); +if(_91==_8f){ +return; +} +objj_msgSend(_sublayers,"removeObjectAtIndex:",_91); +if(_91<_8f){ +--_8f; +} +}else{ +if(_90!=nil){ +objj_msgSend(_8e,"removeFromSuperlayer"); +} +} +if(_DOMContentsElement&&_8e._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"insertObject:atIndex:",_8e,_8f); +if(_8f>=_sublayers.length-1){ +_DOMElement.appendChild(_8e._DOMElement); +}else{ +_DOMElement.insertBefore(_8e._DOMElement,_sublayers[_8f+1]._DOMElement); +} +_8e._superlayer=_8c; +if(_8c!=_90){ +_CALayerRecalculateGeometry(_8e,268435455); +} +} +}),new objj_method(sel_getUid("insertSublayer:below:"),function(_92,_93,_94,_95){ +with(_92){ +var _96=_95?objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_95):0; +objj_msgSend(_92,"insertSublayer:atIndex:",_94,_96==CPNotFound?_sublayers.length:_96); +} +}),new objj_method(sel_getUid("insertSublayer:above:"),function(_97,_98,_99,_9a){ +with(_97){ +var _9b=_9a?objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_9a):_sublayers.length; +if(_9b==CPNotFound){ +objj_msgSend(CPException,"raise:reason:","CALayerNotFoundException","aSublayer is not a sublayer of this layer"); +} +objj_msgSend(_sublayers,"insertObject:atIndex:",_99,_9b==CPNotFound?_sublayers.length:_9b+1); +} +}),new objj_method(sel_getUid("replaceSublayer:with:"),function(_9c,_9d,_9e,_9f){ +with(_9c){ +if(_9e==_9f){ +return; +} +if(_9e._superlayer!=_9c){ +alert("EXCEPTION"); +return; +} +if(_DOMContentsElement&&_9f._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"replaceObjectAtIndex:withObject:",objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_9e),_9f); +_DOMElement.replaceChild(_9e._DOMElement,_9f._DOMElement); +} +}),new objj_method(sel_getUid("registerRunLoopUpdateWithMask:"),function(_a0,_a1,_a2){ +with(_a0){ +if(_2e==nil){ +_2e={}; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("runLoopUpdateLayers"),CALayer,nil,0,[CPDefaultRunLoopMode]); +} +_runLoopUpdateMask|=_a2; +_2e[objj_msgSend(_a0,"UID")]=_a0; +} +}),new objj_method(sel_getUid("setNeedsComposite"),function(_a3,_a4){ +with(_a3){ +objj_msgSend(_a3,"registerRunLoopUpdateWithMask:",_2c); +} +}),new objj_method(sel_getUid("setNeedsDisplay"),function(_a5,_a6){ +with(_a5){ +objj_msgSend(_a5,"registerRunLoopUpdateWithMask:",_2b); +} +}),new objj_method(sel_getUid("setNeedsDisplayOnBoundsChange:"),function(_a7,_a8,_a9){ +with(_a7){ +_needsDisplayOnBoundsChange=_a9; +} +}),new objj_method(sel_getUid("needsDisplayOnBoundsChange"),function(_aa,_ab){ +with(_aa){ +return _needsDisplayOnBoundsChange; +} +}),new objj_method(sel_getUid("setNeedsDisplayInRect:"),function(_ac,_ad,_ae){ +with(_ac){ +_dirtyRect=_ae; +objj_msgSend(_ac,"display"); +} +}),new objj_method(sel_getUid("convertPoint:fromLayer:"),function(_af,_b0,_b1,_b2){ +with(_af){ +return CGPointApplyAffineTransform(_b1,_CALayerGetTransform(_b2,_af)); +} +}),new objj_method(sel_getUid("convertPoint:toLayer:"),function(_b3,_b4,_b5,_b6){ +with(_b3){ +return CGPointApplyAffineTransform(_b5,_CALayerGetTransform(_b3,_b6)); +} +}),new objj_method(sel_getUid("convertRect:fromLayer:"),function(_b7,_b8,_b9,_ba){ +with(_b7){ +return CGRectApplyAffineTransform(_b9,_CALayerGetTransform(_ba,_b7)); +} +}),new objj_method(sel_getUid("convertRect:toLayer:"),function(_bb,_bc,_bd,_be){ +with(_bb){ +return CGRectApplyAffineTransform(_bd,_CALayerGetTransform(_bb,_be)); +} +}),new objj_method(sel_getUid("containsPoint:"),function(_bf,_c0,_c1){ +with(_bf){ +return (_c1.x>=(_bounds.origin.x)&&_c1.y>=(_bounds.origin.y)&&_c1.x<(_bounds.origin.x+_bounds.size.width)&&_c1.y<(_bounds.origin.y+_bounds.size.height)); +} +}),new objj_method(sel_getUid("hitTest:"),function(_c2,_c3,_c4){ +with(_c2){ +if(_isHidden){ +return nil; +} +var _c5=CGPointApplyAffineTransform(_c4,_transformToLayer); +if(!(_c5.x>=(_bounds.origin.x)&&_c5.y>=(_bounds.origin.y)&&_c5.x<(_bounds.origin.x+_bounds.size.width)&&_c5.y<(_bounds.origin.y+_bounds.size.height))){ +return nil; +} +var _c6=nil,_c7=_sublayers.length; +while(_c7--){ +if(_c6=objj_msgSend(_sublayers[_c7],"hitTest:",_c5)){ +return _c6; +} +} +return _c2; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_c8,_c9,_ca){ +with(_c8){ +if(_delegate==_ca){ +return; +} +_delegate=_ca; +_delegateRespondsToDisplayLayerSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("displayLayer:")); +_delegateRespondsToDrawLayerInContextSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("drawLayer:inContext:")); +if(_delegateRespondsToDisplayLayerSelector||_delegateRespondsToDrawLayerInContextSelector){ +objj_msgSend(_c8,"setNeedsDisplay"); +} +} +}),new objj_method(sel_getUid("delegate"),function(_cb,_cc){ +with(_cb){ +return _delegate; +} +}),new objj_method(sel_getUid("_setOwningView:"),function(_cd,_ce,_cf){ +with(_cd){ +_owningView=_cf; +if(_owningView){ +_owningView=_cf; +_bounds.size=CGSizeMakeCopy(objj_msgSend(_owningView,"bounds").size); +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +} +_CALayerRecalculateGeometry(_cd,_23|_22); +} +}),new objj_method(sel_getUid("_owningViewBoundsChanged"),function(_d0,_d1){ +with(_d0){ +_bounds.size=CGSizeMakeCopy(objj_msgSend(_owningView,"bounds").size); +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +_CALayerRecalculateGeometry(_d0,_23|_22); +} +}),new objj_method(sel_getUid("_update"),function(_d2,_d3){ +with(_d2){ +window.loop=true; +var _d4=_runLoopUpdateMask; +if(_d4&_2d){ +_CALayerUpdateDOM(_d2,_d4); +} +if(_d4&_2b){ +objj_msgSend(_d2,"display"); +}else{ +if(_d4&_29||_d4&_2c){ +objj_msgSend(_d2,"composite"); +} +} +_runLoopUpdateMask=0; +window.loop=false; +} +})]); +class_addMethods(_30,[new objj_method(sel_getUid("layer"),function(_d5,_d6){ +with(_d5){ +return objj_msgSend(objj_msgSend(objj_msgSend(_d5,"class"),"alloc"),"init"); +} +}),new objj_method(sel_getUid("runLoopUpdateLayers"),function(_d7,_d8){ +with(_d7){ +for(UID in _2e){ +var _d9=_2e[UID],_da=_d9._runLoopUpdateMask; +if(_da&_2d){ +_CALayerUpdateDOM(_d9,_da); +} +if(_da&_2b){ +objj_msgSend(_d9,"display"); +}else{ +if(_da&_29||_da&_2c){ +objj_msgSend(_d9,"composite"); +} +} +_d9._runLoopUpdateMask=0; +} +window.loop=false; +_2e=nil; +} +})]); +_CALayerUpdateSublayerTransformForSublayers=function(_db){ +var _dc=_db._bounds,_dd=_db._anchorPoint,_de=(_dc.size.width)*_dd.x,_df=(_dc.size.height)*_dd.y; +_db._sublayerTransformForSublayers=CGAffineTransformConcat(CGAffineTransformMakeTranslation(-_de,-_df),CGAffineTransformConcat(_db._sublayerTransform,CGAffineTransformMakeTranslation(_de,_df))); +}; +_CALayerUpdateDOM=function(_e0,_e1){ +var _e2=_e0._DOMElement.style; +if(_e1&_2a){ +_e2.zIndex=_e0._zPosition; +} +var _e3=_e0._backingStoreFrame; +if(_e1&_28){ +_e2.top=ROUND((_e3.origin.y))+"px"; +_e2.left=ROUND((_e3.origin.x))+"px"; +} +if(_e1&_29){ +var _e4=MAX(0,ROUND((_e3.size.width))),_e5=MAX(0,ROUND((_e3.size.height))),_e6=_e0._DOMContentsElement; +_e2.width=_e4+"px"; +_e2.height=_e5+"px"; +if(_e6){ +_e6.width=_e4; +_e6.height=_e5; +_e6.style.width=_e4+"px"; +_e6.style.height=_e5+"px"; +} +} +}; +_CALayerRecalculateGeometry=function(_e7,_e8){ +var _e9=_e7._bounds,_ea=_e7._superlayer,_eb=(_e9.size.width),_ec=(_e9.size.height),_ed=_e7._position,_ee=_e7._anchorPoint,_ef=_e7._affineTransform,_f0={width:_e7._backingStoreFrame.width,height:_e7._backingStoreFrame.height},_f1=_e7._hasCustomBackingStoreFrame; +_e7._transformFromLayer=CGAffineTransformConcat(CGAffineTransformMakeTranslation(-_eb*_ee.x-(_e7._bounds.origin.x),-_ec*_ee.y-(_e7._bounds.origin.y)),CGAffineTransformConcat(_ef,CGAffineTransformMakeTranslation(_ed.x,_ed.y))); +if(_ea&&_ea._hasSublayerTransform){ +var tx=_e7._transformFromLayer.tx*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.ty*_ea._sublayerTransformForSublayers.c+_ea._sublayerTransformForSublayers.tx; +_e7._transformFromLayer.ty=_e7._transformFromLayer.tx*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.ty*_ea._sublayerTransformForSublayers.d+_ea._sublayerTransformForSublayers.ty; +_e7._transformFromLayer.tx=tx; +var a=_e7._transformFromLayer.a*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.b*_ea._sublayerTransformForSublayers.c,b=_e7._transformFromLayer.a*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.b*_ea._sublayerTransformForSublayers.d,c=_e7._transformFromLayer.c*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.d*_ea._sublayerTransformForSublayers.c; +_e7._transformFromLayer.d=_e7._transformFromLayer.c*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.d*_ea._sublayerTransformForSublayers.d; +_e7._transformFromLayer.a=a; +_e7._transformFromLayer.b=b; +_e7._transformFromLayer.c=c; +} +_e7._transformToLayer=CGAffineTransformInvert(_e7._transformFromLayer); +_e7._frame=nil; +_e7._standardBackingStoreFrame=objj_msgSend(_e7,"convertRect:toLayer:",_e9,nil); +if(_ea){ +var _e9=objj_msgSend(_ea,"bounds"),_f2=objj_msgSend(_ea,"convertRect:toLayer:",_e9,nil); +_e7._standardBackingStoreFrame.origin.x-=(_f2.origin.x); +_e7._standardBackingStoreFrame.origin.y-=(_f2.origin.y); +} +var _f3=_e7._standardBackingStoreFrame.origin,_f4=_e7._standardBackingStoreFrame.size; +_f3.x=FLOOR(_f3.x); +_f3.y=FLOOR(_f3.y); +_f4.width=CEIL(_f4.width)+1; +_f4.height=CEIL(_f4.height)+1; +if(!_f1){ +var _f5=CGRectMakeCopy(_e7._standardBackingStoreFrame); +if(ROUND((_f5.origin.x))!=ROUND((_e7._backingStoreFrame.origin.x))||ROUND((_f5.origin.y))!=ROUND((_e7._backingStoreFrame.origin.y))){ +objj_msgSend(_e7,"registerRunLoopUpdateWithMask:",_28); +} +if(((_f5.size.width)!=ROUND((_e7._backingStoreFrame.size.width))||(_f5.size.height)!=ROUND((_e7._backingStoreFrame.size.height)))){ +objj_msgSend(_e7,"registerRunLoopUpdateWithMask:",_29); +} +_e7._backingStoreFrame=_f5; +} +if(_e8&_22&&_e7._needsDisplayOnBoundsChange){ +objj_msgSend(_e7,"setNeedsDisplay"); +}else{ +if(_f1||(_e8&~(_23|_24))){ +objj_msgSend(_e7,"setNeedsComposite"); +} +} +var _f6=_e7._sublayers,_f7=0,_f8=_f6.length; +for(;_f7<_f8;++_f7){ +_CALayerRecalculateGeometry(_f6[_f7],_e8); +} +}; +_CALayerGetTransform=function(_f9,_fa){ +var _fb=CGAffineTransformMakeIdentity(); +if(_f9){ +var _fc=_f9; +while(_fc&&_fc!=_fa){ +var _fd=_fc._transformFromLayer; +var tx=_fb.tx*_fd.a+_fb.ty*_fd.c+_fd.tx; +_fb.ty=_fb.tx*_fd.b+_fb.ty*_fd.d+_fd.ty; +_fb.tx=tx; +var a=_fb.a*_fd.a+_fb.b*_fd.c,b=_fb.a*_fd.b+_fb.b*_fd.d,c=_fb.c*_fd.a+_fb.d*_fd.c; +_fb.d=_fb.c*_fd.b+_fb.d*_fd.d; +_fb.a=a; +_fb.b=b; +_fb.c=c; +_fc=_fc._superlayer; +} +if(_fc==_fa){ +return _fb; +} +} +var _fe=[],_fc=_fa; +while(_fc){ +_fe.push(_fc); +_fc=_fc._superlayer; +} +var _ff=_fe.length; +while(_ff--){ +var _100=_fe[_ff]._transformToLayer; +var tx=_fb.tx*_100.a+_fb.ty*_100.c+_100.tx; +_fb.ty=_fb.tx*_100.b+_fb.ty*_100.d+_100.ty; +_fb.tx=tx; +var a=_fb.a*_100.a+_fb.b*_100.c,b=_fb.a*_100.b+_fb.b*_100.d,c=_fb.c*_100.a+_fb.d*_100.c; +_fb.d=_fb.c*_100.b+_fb.d*_100.d; +_fb.a=a; +_fb.b=b; +_fb.c=c; +} +return _fb; +}; +p;23;CAMediaTimingFunction.jt;2263;@STATIC;1.0;I;21;Foundation/CPObject.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;2162; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +kCAMediaTimingFunctionLinear="kCAMediaTimingFunctionLinear"; +kCAMediaTimingFunctionEaseIn="kCAMediaTimingFunctionEaseIn"; +kCAMediaTimingFunctionEaseOut="kCAMediaTimingFunctionEaseOut"; +kCAMediaTimingFunctionEaseInEaseOut="kCAMediaTimingFunctionEaseInEaseOut"; +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CAMediaTimingFunction"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_c1x"),new objj_ivar("_c1y"),new objj_ivar("_c2x"),new objj_ivar("_c2y")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithControlPoints::::"),function(_4,_5,_6,_7,_8,_9){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CAMediaTimingFunction").super_class},"init"); +if(_4){ +_c1x=_6; +_c1y=_7; +_c2x=_8; +_c2y=_9; +} +return _4; +} +}),new objj_method(sel_getUid("getControlPointAtIndex:values:"),function(_a,_b,_c,_d){ +with(_a){ +if(_c==0){ +_d[0]=0; +_d[1]=0; +}else{ +if(_c==1){ +_d[0]=_c1x; +_d[1]=_c1y; +}else{ +if(_c==2){ +_d[0]=_c2x; +_d[1]=_c2y; +}else{ +_d[0]=1; +_d[1]=1; +} +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("functionWithName:"),function(_e,_f,_10){ +with(_e){ +if(!_1){ +_1=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0,0,1,1),kCAMediaTimingFunctionLinear); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0.42,0,1,1),kCAMediaTimingFunctionEaseIn); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0,0,0.58,1),kCAMediaTimingFunctionEaseOut); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0.42,0,0.58,1),kCAMediaTimingFunctionEaseInEaseOut); +} +return objj_msgSend(_1,"objectForKey:",_10); +} +}),new objj_method(sel_getUid("functionWithControlPoints::::"),function(_11,_12,c1x,c1y,c2x,c2y){ +with(_11){ +return objj_msgSend(objj_msgSend(_11,"alloc"),"initWithControlPoints::::",c1x,c1y,c2x,c2y); +} +})]); +p;19;CGAffineTransform.jt;2936;@STATIC;1.0;i;12;CGGeometry.jt;2900; +objj_executeFile("CGGeometry.j",YES); +CGAffineTransformMake=function(a,b,c,d,tx,ty){ +return {a:a,b:b,c:c,d:d,tx:tx,ty:ty}; +}; +CGAffineTransformMakeIdentity=function(){ +return {a:1,b:0,c:0,d:1,tx:0,ty:0}; +}; +CGAffineTransformMakeCopy=function(_1){ +return {a:_1.a,b:_1.b,c:_1.c,d:_1.d,tx:_1.tx,ty:_1.ty}; +}; +CGAffineTransformMakeScale=function(sx,sy){ +return {a:sx,b:0,c:0,d:sy,tx:0,ty:0}; +}; +CGAffineTransformMakeTranslation=function(tx,ty){ +return {a:1,b:0,c:0,d:1,tx:tx,ty:ty}; +}; +CGAffineTransformTranslate=function(_2,tx,ty){ +return {a:_2.a,b:_2.b,c:_2.c,d:_2.d,tx:_2.tx+_2.a*tx+_2.c*ty,ty:_2.ty+_2.b*tx+_2.d*ty}; +}; +CGAffineTransformScale=function(_3,sx,sy){ +return {a:_3.a*sx,b:_3.b*sx,c:_3.c*sy,d:_3.d*sy,tx:_3.tx,ty:_3.ty}; +}; +CGAffineTransformConcat=function(_4,_5){ +return {a:_4.a*_5.a+_4.b*_5.c,b:_4.a*_5.b+_4.b*_5.d,c:_4.c*_5.a+_4.d*_5.c,d:_4.c*_5.b+_4.d*_5.d,tx:_4.tx*_5.a+_4.ty*_5.c+_5.tx,ty:_4.tx*_5.b+_4.ty*_5.d+_5.ty}; +}; +CGPointApplyAffineTransform=function(_6,_7){ +return {x:_6.x*_7.a+_6.y*_7.c+_7.tx,y:_6.x*_7.b+_6.y*_7.d+_7.ty}; +}; +CGSizeApplyAffineTransform=function(_8,_9){ +return {width:_8.width*_9.a+_8.height*_9.c,height:_8.width*_9.b+_8.height*_9.d}; +}; +CGAffineTransformIsIdentity=function(_a){ +return (_a.a==1&&_a.b==0&&_a.c==0&&_a.d==1&&_a.tx==0&&_a.ty==0); +}; +CGAffineTransformEqualToTransform=function(_b,_c){ +return (_b.a==_c.a&&_b.b==_c.b&&_b.c==_c.c&&_b.d==_c.d&&_b.tx==_c.tx&&_b.ty==_c.ty); +}; +CGStringCreateWithCGAffineTransform=function(_d){ +return (" [[ "+_d.a+", "+_d.b+", 0 ], [ "+_d.c+", "+_d.d+", 0 ], [ "+_d.tx+", "+_d.ty+", 1]]"); +}; +CGAffineTransformCreateCopy=function(_e){ +return {a:_e.a,b:_e.b,c:_e.c,d:_e.d,tx:_e.tx,ty:_e.ty}; +}; +CGAffineTransformMakeRotation=function(_f){ +var sin=SIN(_f),cos=COS(_f); +return {a:cos,b:sin,c:-sin,d:cos,tx:0,ty:0}; +}; +CGAffineTransformRotate=function(_10,_11){ +var sin=SIN(_11),cos=COS(_11); +return {a:_10.a*cos+_10.c*sin,b:_10.b*cos+_10.d*sin,c:_10.c*cos-_10.a*sin,d:_10.d*cos-_10.b*sin,tx:_10.tx,ty:_10.ty}; +}; +CGAffineTransformInvert=function(_12){ +var _13=1/(_12.a*_12.d-_12.b*_12.c); +return {a:_13*_12.d,b:-_13*_12.b,c:-_13*_12.c,d:_13*_12.a,tx:_13*(_12.c*_12.ty-_12.d*_12.tx),ty:_13*(_12.b*_12.tx-_12.a*_12.ty)}; +}; +CGRectApplyAffineTransform=function(_14,_15){ +var top=(_14.origin.y),_16=(_14.origin.x),_17=(_14.origin.x+_14.size.width),_18=(_14.origin.y+_14.size.height),_19=CGPointApplyAffineTransform({x:_16,y:top},_15),_1a=CGPointApplyAffineTransform({x:_17,y:top},_15),_1b=CGPointApplyAffineTransform({x:_16,y:_18},_15),_1c=CGPointApplyAffineTransform({x:_17,y:_18},_15),_1d=MIN(_19.x,_1a.x,_1b.x,_1c.x),_1e=MAX(_19.x,_1a.x,_1b.x,_1c.x),_1f=MIN(_19.y,_1a.y,_1b.y,_1c.y),_20=MAX(_19.y,_1a.y,_1b.y,_1c.y); +return {origin:{x:_1d,y:_1f},size:{width:(_1e-_1d),height:(_20-_1f)}}; +}; +CPStringFromCGAffineTransform=function(_21){ +return "{"+_21.a+", "+_21.b+", "+_21.c+", "+_21.d+", "+_21.tx+", "+_21.ty+"}"; +}; +p;9;CGColor.jt;2143;@STATIC;1.0;i;14;CGColorSpace.jt;2105; +objj_executeFile("CGColorSpace.j",YES); +var _1=0; +CFHashCode=function(_2){ +if(!_2.hash){ +_2.hash=++_1; +} +return _2; +}; +kCGColorWhite="kCGColorWhite"; +kCGColorBlack="kCGColorBlack"; +kCGColorClear="kCGColorClear"; +var _3={}; +CGColorGetConstantColor=function(_4){ +alert("FIX ME"); +}; +CGColorRetain=function(_5){ +return _5; +}; +CGColorRelease=function(){ +}; +CGColorCreate=function(_6,_7){ +if(!_6||!_7){ +return NULL; +} +var _7=_7.slice(); +CGColorSpaceStandardizeComponents(_6,_7); +var _8=CFHashCode(_6)+_7.join(""); +if(_3[_8]){ +return _3[_8]; +} +return _3[_8]={colorspace:_6,pattern:NULL,components:_7}; +}; +CGColorCreateCopy=function(_9){ +return _9; +}; +CGColorCreateGenericGray=function(_a,_b){ +return CGColorCreate(0,[_a,_b]); +}; +CGColorCreateGenericRGB=function(_c,_d,_e,_f){ +return CGColorCreate(0,[_c,_d,_e,_f]); +}; +CGColorCreateGenericCMYK=function(_10,_11,_12,_13,_14){ +return CGColorCreate(0,[_10,_11,_12,_13,_14]); +}; +CGColorCreateCopyWithAlpha=function(_15,_16){ +var _17=_15.components; +if(!_15||_16==_17[_17.length-1]){ +return _15; +} +if(_15.pattern){ +var _18=CGColorCreateWithPattern(_15.colorspace,_15.pattern,_17); +}else{ +var _18=CGColorCreate(_15.colorspace,_17); +} +_18.components[_17.length-1]=_16; +return _18; +}; +CGColorCreateWithPattern=function(_19,_1a,_1b){ +if(!_19||!_1a||!_1b){ +return NULL; +} +return {colorspace:_19,pattern:_1a,components:_1b.slice()}; +}; +CGColorEqualToColor=function(lhs,rhs){ +if(lhs==rhs){ +return true; +} +if(!lhs||!rhs){ +return false; +} +var _1c=lhs.components,_1d=rhs.components,_1e=_1c.length; +if(_1e!=_1d.length){ +return false; +} +while(_1e--){ +if(_1c[_1e]!=_1d[_1e]){ +return false; +} +} +if(lhs.pattern!=rhs.pattern){ +return false; +} +if(CGColorSpaceEqualToColorSpace(lhs.colorspace,rhs.colorspace)){ +return false; +} +return true; +}; +CGColorGetAlpha=function(_1f){ +var _20=_1f.components; +return _20[_20.length-1]; +}; +CGColorGetColorSpace=function(_21){ +return _21.colorspace; +}; +CGColorGetComponents=function(_22){ +return _22.components; +}; +CGColorGetNumberOfComponents=function(_23){ +return _23.components.length; +}; +CGColorGetPattern=function(_24){ +return _24.pattern; +}; +p;14;CGColorSpace.jt;3521;@STATIC;1.0;t;3502; +kCGColorSpaceModelUnknown=-1; +kCGColorSpaceModelMonochrome=0; +kCGColorSpaceModelRGB=1; +kCGColorSpaceModelCMYK=2; +kCGColorSpaceModelLab=3; +kCGColorSpaceModelDeviceN=4; +kCGColorSpaceModelIndexed=5; +kCGColorSpaceModelPattern=6; +kCGColorSpaceGenericGray="CGColorSpaceGenericGray"; +kCGColorSpaceGenericRGB="CGColorSpaceGenericRGB"; +kCGColorSpaceGenericCMYK="CGColorSpaceGenericCMYK"; +kCGColorSpaceGenericRGBLinear="CGColorSpaceGenericRGBLinear"; +kCGColorSpaceGenericRGBHDR="CGColorSpaceGenericRGBHDR"; +kCGColorSpaceAdobeRGB1998="CGColorSpaceAdobeRGB1998"; +kCGColorSpaceSRGB="CGColorSpaceSRGB"; +var _1={}; +CGColorSpaceCreateCalibratedGray=function(_2,_3,_4){ +return {model:kCGColorSpaceModelMonochrome,count:1,base:NULL}; +}; +CGColorSpaceCreateCalibratedRGB=function(_5,_6,_7){ +return {model:kCGColorSpaceModelRGB,count:1,base:NULL}; +}; +CGColorSpaceCreateICCBased=function(_8,_9,_a,_b){ +return NULL; +}; +CGColorSpaceCreateLab=function(_c,_d,_e){ +return NULL; +}; +CGColorSpaceCreateDeviceCMYK=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericCMYK); +}; +CGColorSpaceCreateDeviceGray=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericGray); +}; +CGColorSpaceCreateDeviceRGB=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); +}; +CGColorSpaceCreateWithPlatformColorSpace=function(){ +return NULL; +}; +CGColorSpaceCreateIndexed=function(_f,_10,_11){ +return NULL; +}; +CGColorSpaceCreatePattern=function(_12){ +if(_12){ +return {model:kCGColorSpaceModelPattern,count:_12.count,base:_12}; +} +return {model:kCGColorSpaceModelPattern,count:0,base:NULL}; +}; +CGColorSpaceCreateWithName=function(_13){ +var _14=_1[_13]; +if(_14){ +return _14; +} +switch(_13){ +case kCGColorSpaceGenericGray: +return _1[_13]={model:kCGColorSpaceModelMonochrome,count:1,base:NULL}; +case kCGColorSpaceGenericRGB: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceGenericCMYK: +return _1[_13]={model:kCGColorSpaceModelCMYK,count:4,base:NULL}; +case kCGColorSpaceGenericRGBLinear: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceGenericRGBHDR: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceAdobeRGB1998: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceSRGB: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +} +return NULL; +}; +CGColorSpaceCopyICCProfile=function(_15){ +return NULL; +}; +CGColorSpaceGetNumberOfComponents=function(_16){ +return _16.count; +}; +CGColorSpaceGetTypeID=function(_17){ +}; +CGColorSpaceGetModel=function(_18){ +return _18.model; +}; +CGColorSpaceGetBaseColorSpace=function(_19){ +}; +CGColorSpaceGetColorTableCount=function(_1a){ +}; +CGColorSpaceGetColorTable=function(_1b){ +}; +CGColorSpaceRelease=function(_1c){ +}; +CGColorSpaceRetain=function(_1d){ +return _1d; +}; +CGColorSpaceStandardizeComponents=function(_1e,_1f){ +var _20=_1e.count; +if(_20>_1f.length){ +_1f[_20]=1; +return; +} +var _21=_1f[_20]; +if(_21<0){ +_1f[_20]=0; +}else{ +if(_21>1){ +_1f[_20]=1; +}else{ +_1f[_20]=ROUND(_21*1000)/1000; +} +} +if(_1e.base){ +_1e=_1e.base; +} +switch(_1e.model){ +case kCGColorSpaceModelMonochrome: +case kCGColorSpaceModelRGB: +case kCGColorSpaceModelCMYK: +case kCGColorSpaceModelDeviceN: +while(_20--){ +if(_20>_1f.length){ +_1f[_20]=1; +return; +} +var _21=_1f[_20]; +if(_21<0){ +_1f[_20]=0; +}else{ +if(_21>1){ +_1f[_20]=1; +}else{ +_1f[_20]=ROUND(_21*255)/255; +} +} +} +break; +case kCGColorSpaceModelIndexed: +case kCGColorSpaceModelLab: +case kCGColorSpaceModelPattern: +break; +} +}; +p;11;CGContext.jt;20418;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.ji;8;CGPath.jt;20345; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CGAffineTransform.j",YES); +objj_executeFile("CGPath.j",YES); +kCGLineCapButt=0; +kCGLineCapRound=1; +kCGLineCapSquare=2; +kCGLineJoinMiter=0; +kCGLineJoinRound=1; +kCGLineJoinBevel=2; +kCGPathFill=0; +kCGPathEOFill=1; +kCGPathStroke=2; +kCGPathFillStroke=3; +kCGPathEOFillStroke=4; +kCGBlendModeNormal=0; +kCGBlendModeMultiply=1; +kCGBlendModeScreen=2; +kCGBlendModeOverlay=3; +kCGBlendModeDarken=4; +kCGBlendModeLighten=5; +kCGBlendModeColorDodge=6; +kCGBlendModeColorBurn=7; +kCGBlendModeSoftLight=8; +kCGBlendModeHardLight=9; +kCGBlendModeDifference=10; +kCGBlendModeExclusion=11; +kCGBlendModeHue=12; +kCGBlendModeSaturation=13; +kCGBlendModeColor=14; +kCGBlendModeLuminosity=15; +kCGBlendModeClear=16; +kCGBlendModeCopy=17; +kCGBlendModeSourceIn=18; +kCGBlendModeSourceOut=19; +kCGBlendModeSourceAtop=20; +kCGBlendModeDestinationOver=21; +kCGBlendModeDestinationIn=22; +kCGBlendModeDestinationOut=23; +kCGBlendModeDestinationAtop=24; +kCGBlendModeXOR=25; +kCGBlendModePlusDarker=26; +kCGBlendModePlusLighter=27; +CGContextRelease=function(){ +}; +CGContextRetain=function(_1){ +return _1; +}; +if(!CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +CGGStateCreate=function(){ +return {alpha:1,strokeStyle:"#000",fillStyle:"#ccc",lineWidth:1,lineJoin:kCGLineJoinMiter,lineCap:kCGLineCapButt,miterLimit:10,globalAlpha:1,blendMode:kCGBlendModeNormal,shadowOffset:{width:0,height:0},shadowBlur:0,shadowColor:NULL,CTM:{a:1,b:0,c:0,d:1,tx:0,ty:0}}; +}; +CGGStateCreateCopy=function(_2){ +return {alpha:_2.alpha,strokeStyle:_2.strokeStyle,fillStyle:_2.fillStyle,lineWidth:_2.lineWidth,lineJoin:_2.lineJoin,lineCap:_2.lineCap,miterLimit:_2.miterLimit,globalAlpha:_2.globalAlpha,blendMode:_2.blendMode,shadowOffset:_2.shadowOffset,shadowBlur:_2.shadowBlur,shadowColor:_2.shadowColor,CTM:{a:_2.CTM.a,b:_2.CTM.b,c:_2.CTM.c,d:_2.CTM.d,tx:_2.CTM.tx,ty:_2.CTM.ty}}; +}; +CGBitmapGraphicsContextCreate=function(){ +return {DOMElement:document.createElement("div"),path:NULL,gState:CGGStateCreate(),gStateStack:[]}; +}; +CGContextSaveGState=function(_3){ +_3.gStateStack.push(CGGStateCreateCopy(_3.gState)); +}; +CGContextRestoreGState=function(_4){ +_4.gState=_4.gStateStack.pop(); +}; +CGContextSetLineCap=function(_5,_6){ +_5.gState.lineCap=_6; +}; +CGContextSetLineJoin=function(_7,_8){ +_7.gState.lineJoin=_8; +}; +CGContextSetLineWidth=function(_9,_a){ +_9.gState.lineWidth=_a; +}; +CGContextSetMiterLimit=function(_b,_c){ +_b.gState.miterLimit=_c; +}; +CGContextSetBlendMode=function(_d,_e){ +_d.gState.blendMode=_e; +}; +CGContextAddArc=function(_f,x,y,_10,_11,_12,_13){ +CGPathAddArc(_f.path,_f.gState.CTM,x,y,_10,_11,_12,_13); +}; +CGContextAddArcToPoint=function(_14,x1,y1,x2,y2,_15){ +CGPathAddArcToPoint(_14.path,_14.gState.CTM,x1,y1,x2,y2,_15); +}; +CGContextAddCurveToPoint=function(_16,_17,_18,_19,_1a,x,y){ +CGPathAddCurveToPoint(_16.path,_16.gState.CTM,_17,_18,_19,_1a,x,y); +}; +CGContextAddLines=function(_1b,_1c,_1d){ +CGPathAddLines(_1b.path,_1b.gState.CTM,_1c,_1d); +}; +CGContextAddLineToPoint=function(_1e,x,y){ +CGPathAddLineToPoint(_1e.path,_1e.gState.CTM,x,y); +}; +CGContextAddPath=function(_1f,_20){ +if(!_1f||CGPathIsEmpty(_20)){ +return; +} +if(!_1f.path){ +_1f.path=CGPathCreateMutable(); +} +CGPathAddPath(_1f.path,_1f.gState.CTM,_20); +}; +CGContextAddQuadCurveToPoint=function(_21,cpx,cpy,x,y){ +CGPathAddQuadCurveToPoint(_21.path,_21.gState.CTM,cpx,cpy,x,y); +}; +CGContextAddRect=function(_22,_23){ +CGPathAddRect(_22.path,_22.gState.CTM,_23); +}; +CGContextAddRects=function(_24,_25,_26){ +CGPathAddRects(_24.path,_24.gState.CTM,_25,_26); +}; +CGContextBeginPath=function(_27){ +_27.path=CGPathCreateMutable(); +}; +CGContextClosePath=function(_28){ +CGPathCloseSubpath(_28.path); +}; +CGContextMoveToPoint=function(_29,x,y){ +if(!_29.path){ +_29.path=CGPathCreateMutable(); +} +CGPathMoveToPoint(_29.path,_29.gState.CTM,x,y); +}; +CGContextFillRect=function(_2a,_2b){ +CGContextFillRects(_2a,[_2b],1); +}; +CGContextFillRects=function(_2c,_2d,_2e){ +if(arguments[2]===undefined){ +var _2e=_2d.length; +} +CGContextBeginPath(_2c); +CGContextAddRects(_2c,_2d,_2e); +CGContextClosePath(_2c); +CGContextDrawPath(_2c,kCGPathFill); +}; +CGContextStrokeRect=function(_2f,_30){ +CGContextBeginPath(_2f); +CGContextAddRect(_2f,_30); +CGContextClosePath(_2f); +CGContextDrawPath(_2f,kCGPathStroke); +}; +CGContextStrokeRectWithWidth=function(_31,_32,_33){ +CGContextSaveGState(_31); +CGContextSetLineWidth(_31,_33); +CGContextStrokeRect(_31,_32); +CGContextRestoreGState(_31); +}; +CGContextConcatCTM=function(_34,_35){ +var CTM=_34.gState.CTM; +var tx=CTM.tx*_35.a+CTM.ty*_35.c+_35.tx; +CTM.ty=CTM.tx*_35.b+CTM.ty*_35.d+_35.ty; +CTM.tx=tx; +var a=CTM.a*_35.a+CTM.b*_35.c,b=CTM.a*_35.b+CTM.b*_35.d,c=CTM.c*_35.a+CTM.d*_35.c; +CTM.d=CTM.c*_35.b+CTM.d*_35.d; +CTM.a=a; +CTM.b=b; +CTM.c=c; +}; +CGContextGetCTM=function(_36){ +return _36.gState.CTM; +}; +CGContextRotateCTM=function(_37,_38){ +var _39=_37.gState; +_39.CTM=CGAffineTransformRotate(_39.CTM,_38); +}; +CGContextScaleCTM=function(_3a,sx,sy){ +var _3b=_3a.gState; +_3b.CTM={a:_3b.CTM.a*sx,b:_3b.CTM.b*sx,c:_3b.CTM.c*sy,d:_3b.CTM.d*sy,tx:_3b.CTM.tx,ty:_3b.CTM.ty}; +}; +CGContextTranslateCTM=function(_3c,tx,ty){ +var _3d=_3c.gState; +_3d.CTM={a:_3d.CTM.a,b:_3d.CTM.b,c:_3d.CTM.c,d:_3d.CTM.d,tx:_3d.CTM.tx+_3d.CTM.a*tx+_3d.CTM.c*ty,ty:_3d.CTM.ty+_3d.CTM.b*tx+_3d.CTM.d*ty}; +}; +CGContextSetShadow=function(_3e,_3f,_40){ +var _41=_3e.gState; +_41.shadowOffset={width:_3f.width,height:_3f.height}; +_41.shadowBlur=_40; +_41.shadowColor=objj_msgSend(CPColor,"shadowColor"); +}; +CGContextSetShadowWithColor=function(_42,_43,_44,_45){ +var _46=_42.gState; +_46.shadowOffset={width:_43.width,height:_43.height}; +_46.shadowBlur=_44; +_46.shadowColor=_45; +}; +CGContextSetAlpha=function(_47,_48){ +_47.gState.alpha=MAX(MIN(_48,1),0); +}; +} +CGContextEOFillPath=function(_49){ +CGContextDrawPath(_49,kCGPathEOFill); +}; +CGContextFillPath=function(_4a){ +CGContextDrawPath(_4a,kCGPathFill); +}; +var _4b=4*((SQRT2-1)/3); +CGContextAddEllipseInRect=function(_4c,_4d){ +CGContextBeginPath(_4c); +CGContextAddPath(_4c,CGPathWithEllipseInRect(_4d)); +CGContextClosePath(_4c); +}; +CGContextFillEllipseInRect=function(_4e,_4f){ +CGContextBeginPath(_4e); +CGContextAddEllipseInRect(_4e,_4f); +CGContextClosePath(_4e); +CGContextFillPath(_4e); +}; +CGContextStrokeEllipseInRect=function(_50,_51){ +CGContextBeginPath(_50); +CGContextAddEllipseInRect(_50,_51); +CGContextClosePath(_50); +CGContextStrokePath(_50); +}; +CGContextStrokePath=function(_52){ +CGContextDrawPath(_52,kCGPathStroke); +}; +CGContextStrokeLineSegments=function(_53,_54,_55){ +var i=0; +if(arguments["count"]==NULL){ +var _55=_54.length; +} +CGContextBeginPath(_53); +for(;i<_55;i+=2){ +CGContextMoveToPoint(_53,_54[i].x,_54[i].y); +CGContextAddLineToPoint(_53,_54[i+1].x,_54[i+1].y); +} +CGContextStrokePath(_53); +}; +CGContextSetFillColor=function(_56,_57){ +if(_57){ +_56.gState.fillStyle=objj_msgSend(_57,"cssString"); +} +}; +CGContextSetStrokeColor=function(_58,_59){ +if(_59){ +_58.gState.strokeStyle=objj_msgSend(_59,"cssString"); +} +}; +CGContextFillRoundedRectangleInRect=function(_5a,_5b,_5c,ne,se,sw,nw){ +CGContextBeginPath(_5a); +CGContextAddPath(_5a,CGPathWithRoundedRectangleInRect(_5b,_5c,_5c,ne,se,sw,nw)); +CGContextClosePath(_5a); +CGContextFillPath(_5a); +}; +CGContextStrokeRoundedRectangleInRect=function(_5d,_5e,_5f,ne,se,sw,nw){ +CGContextBeginPath(_5d); +CGContextAddPath(_5d,CGPathWithRoundedRectangleInRect(_5e,_5f,_5f,ne,se,sw,nw)); +CGContextClosePath(_5d); +CGContextStrokePath(_5d); +}; +if(CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +var _60=["butt","round","square"],_61=["miter","round","bevel"],_62=["source-over","source-over","source-over","source-over","darker","lighter","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","copy","source-in","source-out","source-atop","destination-over","destination-in","destination-out","destination-atop","xor","source-over","source-over"]; +CGContextSaveGState=function(_63){ +_63.save(); +}; +CGContextRestoreGState=function(_64){ +_64.restore(); +}; +CGContextSetLineCap=function(_65,_66){ +_65.lineCap=_60[_66]; +}; +CGContextSetLineJoin=function(_67,_68){ +_67.lineJoin=_61[_68]; +}; +CGContextSetLineWidth=function(_69,_6a){ +_69.lineWidth=_6a; +}; +CGContextSetMiterLimit=function(_6b,_6c){ +_6b.miterLimit=_6c; +}; +CGContextSetBlendMode=function(_6d,_6e){ +_6d.globalCompositeOperation=_62[_6e]; +}; +CGContextAddArc=function(_6f,x,y,_70,_71,_72,_73){ +_6f.arc(x,y,_70,_71,_72,!_73); +}; +CGContextAddArcToPoint=function(_74,x1,y1,x2,y2,_75){ +_74.arcTo(x1,y1,x2,y2,_75); +}; +CGContextAddCurveToPoint=function(_76,_77,_78,_79,_7a,x,y){ +_76.bezierCurveTo(_77,_78,_79,_7a,x,y); +}; +CGContextAddLineToPoint=function(_7b,x,y){ +_7b.lineTo(x,y); +}; +CGContextAddPath=function(_7c,_7d){ +if(!_7c||CGPathIsEmpty(_7d)){ +return; +} +var _7e=_7d.elements,i=0,_7f=_7d.count; +for(;i<_7f;++i){ +var _80=_7e[i],_81=_80.type; +switch(_81){ +case kCGPathElementMoveToPoint: +_7c.moveTo(_80.x,_80.y); +break; +case kCGPathElementAddLineToPoint: +_7c.lineTo(_80.x,_80.y); +break; +case kCGPathElementAddQuadCurveToPoint: +_7c.quadraticCurveTo(_80.cpx,_80.cpy,_80.x,_80.y); +break; +case kCGPathElementAddCurveToPoint: +_7c.bezierCurveTo(_80.cp1x,_80.cp1y,_80.cp2x,_80.cp2y,_80.x,_80.y); +break; +case kCGPathElementCloseSubpath: +_7c.closePath(); +break; +case kCGPathElementAddArc: +_7c.arc(_80.x,_80.y,_80.radius,_80.startAngle,_80.endAngle,_80.clockwise); +break; +case kCGPathElementAddArcTo: +break; +} +} +}; +CGContextAddRect=function(_82,_83){ +_82.rect((_83.origin.x),(_83.origin.y),(_83.size.width),(_83.size.height)); +}; +CGContextAddRects=function(_84,_85,_86){ +var i=0; +if(arguments["count"]==NULL){ +var _86=_85.length; +} +for(;i<_86;++i){ +var _87=_85[i]; +_84.rect((_87.origin.x),(_87.origin.y),(_87.size.width),(_87.size.height)); +} +}; +CGContextBeginPath=function(_88){ +_88.beginPath(); +}; +CGContextClosePath=function(_89){ +_89.closePath(); +}; +CGContextMoveToPoint=function(_8a,x,y){ +_8a.moveTo(x,y); +}; +CGContextClearRect=function(_8b,_8c){ +_8b.clearRect((_8c.origin.x),(_8c.origin.y),(_8c.size.width),(_8c.size.height)); +}; +CGContextDrawPath=function(_8d,_8e){ +if(_8e==kCGPathFill||_8e==kCGPathFillStroke){ +_8d.fill(); +}else{ +if(_8e==kCGPathEOFill||_8e==kCGPathEOFillStroke){ +alert("not implemented!!!"); +} +} +if(_8e==kCGPathStroke||_8e==kCGPathFillStroke||_8e==kCGPathEOFillStroke){ +_8d.stroke(); +} +}; +CGContextFillRect=function(_8f,_90){ +_8f.fillRect((_90.origin.x),(_90.origin.y),(_90.size.width),(_90.size.height)); +}; +CGContextFillRects=function(_91,_92,_93){ +var i=0; +if(arguments["count"]==NULL){ +var _93=_92.length; +} +for(;i<_93;++i){ +var _94=_92[i]; +_91.fillRect((_94.origin.x),(_94.origin.y),(_94.size.width),(_94.size.height)); +} +}; +CGContextStrokeRect=function(_95,_96){ +_95.strokeRect((_96.origin.x),(_96.origin.y),(_96.size.width),(_96.size.height)); +}; +CGContextClip=function(_97){ +_97.clip(); +}; +CGContextClipToRect=function(_98,_99){ +_98.beginPath(); +_98.rect((_99.origin.x),(_99.origin.y),(_99.size.width),(_99.size.height)); +_98.closePath(); +_98.clip(); +}; +CGContextClipToRects=function(_9a,_9b,_9c){ +if(arguments["count"]==NULL){ +var _9c=_9b.length; +} +_9a.beginPath(); +CGContextAddRects(_9a,_9b,_9c); +_9a.clip(); +}; +CGContextSetAlpha=function(_9d,_9e){ +_9d.globalAlpha=_9e; +}; +CGContextSetFillColor=function(_9f,_a0){ +_9f.fillStyle=objj_msgSend(_a0,"cssString"); +}; +CGContextSetStrokeColor=function(_a1,_a2){ +_a1.strokeStyle=objj_msgSend(_a2,"cssString"); +}; +CGContextSetShadow=function(_a3,_a4,_a5){ +_a3.shadowOffsetX=_a4.width; +_a3.shadowOffsetY=_a4.height; +_a3.shadowBlur=_a5; +}; +CGContextSetShadowWithColor=function(_a6,_a7,_a8,_a9){ +_a6.shadowOffsetX=_a7.width; +_a6.shadowOffsetY=_a7.height; +_a6.shadowBlur=_a8; +_a6.shadowColor=objj_msgSend(_a9,"cssString"); +}; +CGContextRotateCTM=function(_aa,_ab){ +_aa.rotate(_ab); +}; +CGContextScaleCTM=function(_ac,sx,sy){ +_ac.scale(sx,sy); +}; +CGContextTranslateCTM=function(_ad,tx,ty){ +_ad.translate(tx,ty); +}; +eigen=function(_ae){ +alert("IMPLEMENT ME!"); +}; +if(CPFeatureIsCompatible(CPJavaScriptCanvasTransformFeature)){ +CGContextConcatCTM=function(_af,_b0){ +_af.transform(_b0.a,_b0.b,_b0.c,_b0.d,_b0.tx,_b0.ty); +}; +}else{ +CGContextConcatCTM=function(_b1,_b2){ +var a=_b2.a,b=_b2.b,c=_b2.c,d=_b2.d,tx=_b2.tx,ty=_b2.ty,sx=1,sy=1,a1=0,a2=0; +if(b==0&&c==0){ +sx=a; +sy=d; +}else{ +if(a*b==-c*d){ +var _b3=(a*d<0||b*c>0)?-1:1,a2=(ATAN2(b,d)+ATAN2(-_b3*c,_b3*a))/2,cos=COS(a2),sin=SIN(a2); +if(cos==0){ +sx=-c/sin; +sy=b/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +} +} +}else{ +if(a*c==-b*d){ +var _b3=(a*d<0||b*c>0)?-1:1; +a1=(Math.atan2(_b3*b,_b3*a)+Math.atan2(-c,d))/2,cos=COS(a1),sin=SIN(a1); +if(cos==0){ +sx=b/sin; +sy=-c/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +} +} +}else{ +var _b4=CGAffineTransformMake(a,c,b,d,0,0),u=eigen(CGAffineTransformConcat(_b2,_b4)),v=eigen(CGAffineTransformConcat(_b4,_b2)),U=CGAffineTransformMake(u.vector_1.x,u.vector_2.x,u.vector_1.y,u.vector_2.y,0,0),VT=CGAffineTransformMake(v.vector_1.x,v.vector_1.y,v.vector_2.x,v.vector_2.y,0,0),S=CGAffineTransformConcat(CGAffineTransformConcat(CGAffineTransformInvert(U),_b2),CGAffineTransformInvert(VT)); +a=VT.a; +b=VT.b; +c=VT.c; +d=VT.d; +var _b3=(a*d<0||b*c>0)?-1:1,a2=(ATAN2(b,d)+ATAN2(-_b3*c,_b3*a))/2,cos=COS(a2),sin=SIN(a2); +if(cos==0){ +sx=-c/sin; +sy=b/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +} +} +S.a*=sx; +S.d*=sy; +a=U.a; +b=U.b; +c=U.c; +d=U.d; +var _b3=(a*d<0||b*c>0)?-1:1; +a1=(Math.atan2(_b3*b,_b3*a)+Math.atan2(-c,d))/2,cos=COS(a1),sin=SIN(a1); +if(cos==0){ +sx=b/sin; +sy=-c/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +} +} +sx=S.a*sx; +sy=S.d*sy; +} +} +} +if(tx!=0||ty!=0){ +CGContextTranslateCTM(_b1,tx,ty); +} +if(a1!=0){ +CGContextRotateCTM(_b1,a1); +} +if(sx!=1||sy!=1){ +CGContextScaleCTM(_b1,sx,sy); +} +if(a2!=0){ +CGContextRotateCTM(_b1,a2); +} +}; +} +CGContextDrawImage=function(_b5,_b6,_b7){ +_b5.drawImage(_b7._image,(_b6.origin.x),(_b6.origin.y),(_b6.size.width),(_b6.size.height)); +}; +to_string=function(_b8){ +return "rgba("+ROUND(_b8.components[0]*255)+", "+ROUND(_b8.components[1]*255)+", "+ROUND(255*_b8.components[2])+", "+_b8.components[3]+")"; +}; +CGContextDrawLinearGradient=function(_b9,_ba,_bb,_bc,_bd){ +var _be=_ba.colors,_bf=_be.length,_c0=_b9.createLinearGradient(_bb.x,_bb.y,_bc.x,_bc.y); +while(_bf--){ +_c0.addColorStop(_ba.locations[_bf],to_string(_be[_bf])); +} +_b9.fillStyle=_c0; +_b9.fill(); +}; +CGBitmapGraphicsContextCreate=function(){ +var _c1=document.createElement("canvas"),_c2=_c1.getContext("2d"); +_c2.DOMElement=_c1; +return _c2; +}; +}else{ +if(CPFeatureIsCompatible(CPVMLFeature)){ +var _c3=["f","t"],_c4=["flat","round","square"],_c5=["miter","round","bevel"],_c6=[" m "," l ","qb"," c "," x ",[" at "," wa "]]; +var _c7=CGBitmapGraphicsContextCreate; +CGBitmapGraphicsContextCreate=function(){ +document.namespaces.add("cg_vml_","urn:schemas-microsoft-com:vml"); +document.createStyleSheet().cssText="cg_vml_\\:*{behavior:url(#default#VML)}"; +CGBitmapGraphicsContextCreate=_c7; +return _c7(); +}; +CGContextClearRect=function(_c8,_c9){ +if(_c8.buffer!=nil){ +_c8.buffer=""; +}else{ +_c8.DOMElement.innerHTML=""; +} +_c8.path=NULL; +}; +var W=10,H=10,Z=10,Z_2=Z/2; +CGContextDrawImage=function(_ca,_cb,_cc){ +var _cd=""; +if(_cc.buffer!=nil){ +_cd=_cc.buffer; +}else{ +var ctm=_ca.gState.CTM,_ce=CGPointApplyAffineTransform(_cb.origin,ctm),_cf=ctm.a==ctm.d&&ctm.b==-ctm.c,vml=[""); +_cd=vml.join(""); +} +if(_ca.buffer!=nil){ +_ca.buffer+=_cd; +}else{ +_ca.DOMElement.insertAdjacentHTML("BeforeEnd",_cd); +} +}; +CGContextDrawPath=function(_d1,_d2){ +if(!_d1||CGPathIsEmpty(_d1.path)){ +return; +} +var _d3=_d1.path.elements,i=0,_d4=_d1.path.count,_d5=_d1.gState,_d6=(_d2==kCGPathFill||_d2==kCGPathFillStroke)?1:0,_d7=(_d2==kCGPathStroke||_d2==kCGPathFillStroke)?1:0,_d8=_d5.alpha,vml=["=x){ +if(_df.y"); +if(_d5.gradient){ +vml.push(_d5.gradient); +}else{ +if(_d6){ +vml.push(""); +} +} +if(_d7){ +vml.push(""); +} +var _e0=_d5.shadowColor; +if(_e0){ +var _e1=_d5.shadowOffset; +vml.push(""); +} +vml.push(""); +_d1.path=NULL; +if(_d1.buffer!=nil){ +_d1.buffer+=vml.join(""); +}else{ +_d1.DOMElement.insertAdjacentHTML("BeforeEnd",vml.join("")); +} +}; +to_string=function(_e2){ +return "rgb("+ROUND(_e2.components[0]*255)+", "+ROUND(_e2.components[1]*255)+", "+ROUND(255*_e2.components[2])+")"; +}; +CGContextDrawLinearGradient=function(_e3,_e4,_e5,_e6,_e7){ +if(!_e3||!_e4){ +return; +} +var vml=nil; +if(_e4.vml_gradient){ +var _e8=objj_msgSend(objj_msgSend(_e4.vml_gradient,"stops"),"sortedArrayUsingSelector:",sel_getUid("comparePosition:")),_e9=objj_msgSend(_e8,"count"); +vml=[""); +}else{ +var _ea=_e4.colors,_e9=_ea.length; +vml=[""); +} +_e3.gState.gradient=vml.join(""); +}; +} +} +p;12;CGGeometry.jt;6756;@STATIC;1.0;t;6737; +CGPointMake=function(x,y){ +return {x:x,y:y}; +}; +CGPointMakeZero=function(){ +return {x:0,y:0}; +}; +CGPointMakeCopy=function(_1){ +return {x:_1.x,y:_1.y}; +}; +CGPointCreateCopy=function(_2){ +return {x:_2.x,y:_2.y}; +}; +CGPointEqualToPoint=function(_3,_4){ +return (_3.x==_4.x&&_3.y==_4.y); +}; +CGStringFromPoint=function(_5){ +return ("{"+_5.x+", "+_5.y+"}"); +}; +CGSizeMake=function(_6,_7){ +return {width:_6,height:_7}; +}; +CGSizeMakeZero=function(){ +return {width:0,height:0}; +}; +CGSizeMakeCopy=function(_8){ +return {width:_8.width,height:_8.height}; +}; +CGSizeCreateCopy=function(_9){ +return {width:_9.width,height:_9.height}; +}; +CGSizeEqualToSize=function(_a,_b){ +return (_a.width==_b.width&&_a.height==_b.height); +}; +CGStringFromSize=function(_c){ +return ("{"+_c.width+", "+_c.height+"}"); +}; +CGRectMake=function(x,y,_d,_e){ +return {origin:{x:x,y:y},size:{width:_d,height:_e}}; +}; +CGRectMakeZero=function(){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +}; +CGRectMakeCopy=function(_f){ +return {origin:{x:_f.origin.x,y:_f.origin.y},size:{width:_f.size.width,height:_f.size.height}}; +}; +CGRectCreateCopy=function(_10){ +return {origin:{x:_10.origin.x,y:_10.origin.y},size:{width:_10.size.width,height:_10.size.height}}; +}; +CGRectEqualToRect=function(_11,_12){ +return ((_11.origin.x==_12.origin.x&&_11.origin.y==_12.origin.y)&&(_11.size.width==_12.size.width&&_11.size.height==_12.size.height)); +}; +CGStringFromRect=function(_13){ +return ("{"+("{"+_13.origin.x+", "+_13.origin.y+"}")+", "+("{"+_13.size.width+", "+_13.size.height+"}")+"}"); +}; +CGRectOffset=function(_14,dX,dY){ +return {origin:{x:_14.origin.x+dX,y:_14.origin.y+dY},size:{width:_14.size.width,height:_14.size.height}}; +}; +CGRectInset=function(_15,dX,dY){ +return {origin:{x:_15.origin.x+dX,y:_15.origin.y+dY},size:{width:_15.size.width-2*dX,height:_15.size.height-2*dY}}; +}; +CGRectGetHeight=function(_16){ +return (_16.size.height); +}; +CGRectGetMaxX=function(_17){ +return (_17.origin.x+_17.size.width); +}; +CGRectGetMaxY=function(_18){ +return (_18.origin.y+_18.size.height); +}; +CGRectGetMidX=function(_19){ +return (_19.origin.x+(_19.size.width)/2); +}; +CGRectGetMidY=function(_1a){ +return (_1a.origin.y+(_1a.size.height)/2); +}; +CGRectGetMinX=function(_1b){ +return (_1b.origin.x); +}; +CGRectGetMinY=function(_1c){ +return (_1c.origin.y); +}; +CGRectGetWidth=function(_1d){ +return (_1d.size.width); +}; +CGRectIsEmpty=function(_1e){ +return (_1e.size.width<=0||_1e.size.height<=0); +}; +CGRectIsNull=function(_1f){ +return (_1f.size.width<=0||_1f.size.height<=0); +}; +CGRectContainsPoint=function(_20,_21){ +return (_21.x>=(_20.origin.x)&&_21.y>=(_20.origin.y)&&_21.x<(_20.origin.x+_20.size.width)&&_21.y<(_20.origin.y+_20.size.height)); +}; +CGInsetMake=function(top,_22,_23,_24){ +return {top:(top),right:(_22),bottom:(_23),left:(_24)}; +}; +CGInsetMakeZero=function(){ +return {top:(0),right:(0),bottom:(0),left:(0)}; +}; +CGInsetMakeCopy=function(_25){ +return {top:(_25.top),right:(_25.right),bottom:(_25.bottom),left:(_25.left)}; +}; +CGInsetIsEmpty=function(_26){ +return ((_26).top===0&&(_26).right===0&&(_26).bottom===0&&(_26).left===0); +}; +CGInsetEqualToInset=function(_27,_28){ +return ((_27).top===(_28).top&&(_27).right===(_28).right&&(_27).bottom===(_28).bottom&&(_27).left===(_28).left); +}; +CGMinXEdge=0; +CGMinYEdge=1; +CGMaxXEdge=2; +CGMaxYEdge=3; +CGRectNull={origin:{x:Infinity,y:Infinity},size:{width:0,height:0}}; +CGRectDivide=function(_29,_2a,rem,_2b,_2c){ +_2a.origin={x:_29.origin.x,y:_29.origin.y}; +_2a.size={width:_29.size.width,height:_29.size.height}; +rem.origin={x:_29.origin.x,y:_29.origin.y}; +rem.size={width:_29.size.width,height:_29.size.height}; +switch(_2c){ +case CGMinXEdge: +_2a.size.width=_2b; +rem.origin.x+=_2b; +rem.size.width-=_2b; +break; +case CGMaxXEdge: +_2a.origin.x=(_2a.origin.x+_2a.size.width)-_2b; +_2a.size.width=_2b; +rem.size.width-=_2b; +break; +case CGMinYEdge: +_2a.size.height=_2b; +rem.origin.y+=_2b; +rem.size.height-=_2b; +break; +case CGMaxYEdge: +_2a.origin.y=(_2a.origin.y+_2a.size.height)-_2b; +_2a.size.height=_2b; +rem.size.height-=_2b; +} +}; +CGRectContainsRect=function(_2d,_2e){ +var _2f=CGRectUnion(_2d,_2e); +return ((_2f.origin.x==_2d.origin.x&&_2f.origin.y==_2d.origin.y)&&(_2f.size.width==_2d.size.width&&_2f.size.height==_2d.size.height)); +}; +CGRectIntersectsRect=function(_30,_31){ +var _32=CGRectIntersection(_30,_31); +return !(_32.size.width<=0||_32.size.height<=0); +}; +CGRectIntegral=function(_33){ +_33=CGRectStandardize(_33); +var x=FLOOR((_33.origin.x)),y=FLOOR((_33.origin.y)); +_33.size.width=CEIL((_33.origin.x+_33.size.width))-x; +_33.size.height=CEIL((_33.origin.y+_33.size.height))-y; +_33.origin.x=x; +_33.origin.y=y; +return _33; +}; +CGRectIntersection=function(_34,_35){ +var _36={origin:{x:MAX((_34.origin.x),(_35.origin.x)),y:MAX((_34.origin.y),(_35.origin.y))},size:{width:0,height:0}}; +_36.size.width=MIN((_34.origin.x+_34.size.width),(_35.origin.x+_35.size.width))-(_36.origin.x); +_36.size.height=MIN((_34.origin.y+_34.size.height),(_35.origin.y+_35.size.height))-(_36.origin.y); +return (_36.size.width<=0||_36.size.height<=0)?{origin:{x:0,y:0},size:{width:0,height:0}}:_36; +}; +CGRectStandardize=function(_37){ +var _38=(_37.size.width),_39=(_37.size.height),_3a={origin:{x:_37.origin.x,y:_37.origin.y},size:{width:_37.size.width,height:_37.size.height}}; +if(_38<0){ +_3a.origin.x+=_38; +_3a.size.width=-_38; +} +if(_39<0){ +_3a.origin.y+=_39; +_3a.size.height=-_39; +} +return _3a; +}; +CGRectUnion=function(_3b,_3c){ +var _3d=!_3b||_3b===CGRectNull,_3e=!_3c||_3c===CGRectNull; +if(_3d){ +return _3e?CGRectNull:_3c; +} +if(_3e){ +return _3d?CGRectNull:_3b; +} +var _3f=MIN((_3b.origin.x),(_3c.origin.x)),_40=MIN((_3b.origin.y),(_3c.origin.y)),_41=MAX((_3b.origin.x+_3b.size.width),(_3c.origin.x+_3c.size.width)),_42=MAX((_3b.origin.y+_3b.size.height),(_3c.origin.y+_3c.size.height)); +return {origin:{x:_3f,y:_40},size:{width:_41-_3f,height:_42-_40}}; +}; +CGPointFromString=function(_43){ +var _44=_43.indexOf(","); +return {x:parseInt(_43.substr(1,_44-1)),y:parseInt(_43.substring(_44+1,_43.length))}; +}; +CGSizeFromString=function(_45){ +var _46=_45.indexOf(","); +return {width:parseInt(_45.substr(1,_46-1)),height:parseInt(_45.substring(_46+1,_45.length))}; +}; +CGRectFromString=function(_47){ +var _48=_47.indexOf(",",_47.indexOf(",")+1); +return {origin:CGPointFromString(_47.substr(1,_48-1)),size:CGSizeFromString(_47.substring(_48+2,_47.length))}; +}; +CGPointFromEvent=function(_49){ +return {x:_49.clientX,y:_49.clientY}; +}; +CGInsetFromString=function(_4a){ +var _4b=_4a.substr(1,_4a.length-2).split(","); +return {top:(parseFloat(_4b[0])),right:(parseFloat(_4b[1])),bottom:(parseFloat(_4b[2])),left:(parseFloat(_4b[3]))}; +}; +CGInsetFromCPString=CGInsetFromString; +CPStringFromCGInset=function(_4c){ +return "{"+_4c.top+", "+_4c.left+", "+_4c.bottom+", "+_4c.right+"}"; +}; +p;12;CGGradient.jt;622;@STATIC;1.0;i;9;CGColor.ji;14;CGColorSpace.jt;572; +objj_executeFile("CGColor.j",YES); +objj_executeFile("CGColorSpace.j",YES); +kCGGradientDrawsBeforeStartLocation=1<<0; +kCGGradientDrawsAfterEndLocation=1<<1; +CGGradientCreateWithColorComponents=function(_1,_2,_3,_4){ +if(arguments["count"]==NULL){ +var _4=_3.length; +} +var _5=[]; +while(_4--){ +var _6=_4*4; +_5[_4]=CGColorCreate(_1,_2.slice(_6,_6+4)); +} +return CGGradientCreateWithColors(_1,_5,_3); +}; +CGGradientCreateWithColors=function(_7,_8,_9){ +return {colorspace:_7,colors:_8,locations:_9}; +}; +CGGradientRelease=function(){ +}; +CGGradientRetain=function(_a){ +return _a; +}; +p;8;CGPath.jt;7466;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.jt;7406; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CGAffineTransform.j",YES); +kCGPathElementMoveToPoint=0; +kCGPathElementAddLineToPoint=1; +kCGPathElementAddQuadCurveToPoint=2; +kCGPathElementAddCurveToPoint=3; +kCGPathElementCloseSubpath=4; +kCGPathElementAddArc=5; +kCGPathElementAddArcToPoint=6; +CGPathCreateMutable=function(){ +return {count:0,start:NULL,current:NULL,elements:[]}; +}; +CGPathCreateMutableCopy=function(_1){ +var _2=CGPathCreateMutable(); +CGPathAddPath(_2,_1); +return _2; +}; +CGPathCreateCopy=function(_3){ +return CGPathCreateMutableCopy(_3); +}; +CGPathRelease=function(_4){ +}; +CGPathRetain=function(_5){ +return _5; +}; +CGPathAddArc=function(_6,_7,x,y,_8,_9,_a,_b){ +if(_7&&!(_7.a==1&&_7.b==0&&_7.c==0&&_7.d==1&&_7.tx==0&&_7.ty==0)){ +var _c={x:x,y:y},_d={x:COS(_a),y:SIN(_a)},_e={x:COS(_9),y:SIN(_9)}; +_d={x:_d.x*_7.a+_d.y*_7.c+_7.tx,y:_d.x*_7.b+_d.y*_7.d+_7.ty}; +_e={x:_e.x*_7.a+_e.y*_7.c+_7.tx,y:_e.x*_7.b+_e.y*_7.d+_7.ty}; +_c={x:_c.x*_7.a+_c.y*_7.c+_7.tx,y:_c.x*_7.b+_c.y*_7.d+_7.ty}; +x=_c.x; +y=_c.y; +var _f=_a,_10=_9; +_a=ATAN2(_d.y-_7.ty,_d.x-_7.tx); +_9=ATAN2(_e.y-_7.ty,_e.x-_7.tx); +if(_a==_9&&_f!=_10){ +if(_10>_f){ +_a=_a-PI2; +}else{ +_9=_9-PI2; +} +} +_8={width:_8,height:0}; +_8={width:_8.width*_7.a+_8.height*_7.c,height:_8.width*_7.b+_8.height*_7.d}; +_8=SQRT(_8.width*_8.width+_8.height*_8.height); +} +_6.current={x:x+_8*COS(_a),y:y+_8*SIN(_a)}; +_6.elements[_6.count++]={type:kCGPathElementAddArc,x:x,y:y,radius:_8,startAngle:_9,endAngle:_a}; +}; +CGPathAddArcToPoint=function(_11,_12,x1,y1,x2,y2,_13){ +}; +CGPathAddCurveToPoint=function(_14,_15,_16,_17,_18,_19,x,y){ +var cp1={x:_16,y:_17},cp2={x:_18,y:_19},end={x:x,y:y}; +if(_15){ +cp1={x:cp1.x*_15.a+cp1.y*_15.c+_15.tx,y:cp1.x*_15.b+cp1.y*_15.d+_15.ty}; +cp2={x:cp2.x*_15.a+cp2.y*_15.c+_15.tx,y:cp2.x*_15.b+cp2.y*_15.d+_15.ty}; +end={x:end.x*_15.a+end.y*_15.c+_15.tx,y:end.x*_15.b+end.y*_15.d+_15.ty}; +} +_14.current=end; +_14.elements[_14.count++]={type:kCGPathElementAddCurveToPoint,cp1x:cp1.x,cp1y:cp1.y,cp2x:cp2.x,cp2y:cp2.y,x:end.x,y:end.y}; +}; +CGPathAddLines=function(_1a,_1b,_1c,_1d){ +var i=1; +if(arguments["count"]==NULL){ +var _1d=_1c.length; +} +if(!_1a||_1d<2){ +return; +} +CGPathMoveToPoint(_1a,_1b,_1c[0].x,_1c[0].y); +for(;i<_1d;++i){ +CGPathAddLineToPoint(_1a,_1b,_1c[i].x,_1c[i].y); +} +}; +CGPathAddLineToPoint=function(_1e,_1f,x,y){ +var _20={x:x,y:y}; +if(_1f!=NULL){ +_20={x:_20.x*_1f.a+_20.y*_1f.c+_1f.tx,y:_20.x*_1f.b+_20.y*_1f.d+_1f.ty}; +} +_1e.elements[_1e.count++]={type:kCGPathElementAddLineToPoint,x:_20.x,y:_20.y}; +_1e.current=_20; +}; +CGPathAddPath=function(_21,_22,_23){ +for(var i=0,_24=_23.count;i<_24;++i){ +var _25=_23.elements[i]; +switch(_25.type){ +case kCGPathElementAddLineToPoint: +CGPathAddLineToPoint(_21,_22,_25.x,_25.y); +break; +case kCGPathElementAddCurveToPoint: +CGPathAddCurveToPoint(_21,_22,_25.cp1x,_25.cp1y,_25.cp2x,_25.cp2y,_25.x,_25.y); +break; +case kCGPathElementAddArc: +CGPathAddArc(_21,_22,_25.x,_25.y,_25.radius,_25.startAngle,_25.endAngle,_25.isClockwise); +break; +case kCGPathElementAddQuadCurveToPoint: +CGPathAddQuadCurveToPoint(_21,_22,_25.cpx,_25.cpy,_25.x,_25.y); +break; +case kCGPathElementMoveToPoint: +CGPathMoveToPoint(_21,_22,_25.x,_25.y); +break; +case kCGPathElementCloseSubpath: +CGPathCloseSubpath(_21); +break; +} +} +}; +CGPathAddQuadCurveToPoint=function(_26,_27,cpx,cpy,x,y){ +var cp={x:cpx,y:cpy},end={x:x,y:y}; +if(_27){ +cp={x:cp.x*_27.a+cp.y*_27.c+_27.tx,y:cp.x*_27.b+cp.y*_27.d+_27.ty}; +end={x:end.x*_27.a+end.y*_27.c+_27.tx,y:end.x*_27.b+end.y*_27.d+_27.ty}; +} +_26.elements[_26.count++]={type:kCGPathElementAddQuadCurveToPoint,cpx:cp.x,cpy:cp.y,x:end.x,y:end.y}; +_26.current=end; +}; +CGPathAddRect=function(_28,_29,_2a){ +CGPathAddRects(_28,_29,[_2a],1); +}; +CGPathAddRects=function(_2b,_2c,_2d,_2e){ +var i=0; +if(arguments["count"]==NULL){ +var _2e=_2d.length; +} +for(;i<_2e;++i){ +var _2f=_2d[i]; +CGPathMoveToPoint(_2b,_2c,(_2f.origin.x),(_2f.origin.y)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x+_2f.size.width),(_2f.origin.y)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x+_2f.size.width),(_2f.origin.y+_2f.size.height)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x),(_2f.origin.y+_2f.size.height)); +CGPathCloseSubpath(_2b); +} +}; +CGPathMoveToPoint=function(_30,_31,x,y){ +var _32={x:x,y:y},_33=_30.count; +if(_31!=NULL){ +_32={x:_32.x*_31.a+_32.y*_31.c+_31.tx,y:_32.x*_31.b+_32.y*_31.d+_31.ty}; +} +_30.start=_32; +_30.current=_32; +var _34=_30.elements[_33-1]; +if(_33!=0&&_34.type==kCGPathElementMoveToPoint){ +_34.x=_32.x; +_34.y=_32.y; +}else{ +_30.elements[_30.count++]={type:kCGPathElementMoveToPoint,x:_32.x,y:_32.y}; +} +}; +var _35=4*((SQRT2-1)/3); +CGPathWithEllipseInRect=function(_36){ +var _37=CGPathCreateMutable(); +if((_36.size.width)==(_36.size.height)){ +CGPathAddArc(_37,nil,(_36.origin.x+(_36.size.width)/2),(_36.origin.y+(_36.size.height)/2),(_36.size.width)/2,0,2*PI,YES); +}else{ +var _38={width:(_36.size.width)/2,height:(_36.size.height)/2},_39={x:(_36.origin.x)+_38.width,y:(_36.origin.y)+_38.height}; +CGPathMoveToPoint(_37,nil,_39.x,_39.y-_38.height); +CGPathAddCurveToPoint(_37,nil,_39.x+(_35*_38.width),_39.y-_38.height,_39.x+_38.width,_39.y-(_35*_38.height),_39.x+_38.width,_39.y); +CGPathAddCurveToPoint(_37,nil,_39.x+_38.width,_39.y+(_35*_38.height),_39.x+(_35*_38.width),_39.y+_38.height,_39.x,_39.y+_38.height); +CGPathAddCurveToPoint(_37,nil,_39.x-(_35*_38.width),_39.y+_38.height,_39.x-_38.width,_39.y+(_35*_38.height),_39.x-_38.width,_39.y); +CGPathAddCurveToPoint(_37,nil,_39.x-_38.width,_39.y-(_35*_38.height),_39.x-(_35*_38.width),_39.y-_38.height,_39.x,_39.y-_38.height); +} +CGPathCloseSubpath(_37); +return _37; +}; +CGPathWithRoundedRectangleInRect=function(_3a,_3b,_3c,ne,se,sw,nw){ +var _3d=CGPathCreateMutable(),_3e=(_3a.origin.x),_3f=(_3a.origin.x+_3a.size.width),_40=(_3a.origin.y),_41=(_3a.origin.y+_3a.size.height); +CGPathMoveToPoint(_3d,nil,_3e+_3b,_40); +if(ne){ +CGPathAddLineToPoint(_3d,nil,_3f-_3b,_40); +CGPathAddCurveToPoint(_3d,nil,_3f-_3b,_40,_3f,_40,_3f,_40+_3b); +}else{ +CGPathAddLineToPoint(_3d,nil,_3f,_40); +} +if(se){ +CGPathAddLineToPoint(_3d,nil,_3f,_41-_3b); +CGPathAddCurveToPoint(_3d,nil,_3f,_41-_3b,_3f,_41,_3f-_3b,_41); +}else{ +CGPathAddLineToPoint(_3d,nil,_3f,_41); +} +if(sw){ +CGPathAddLineToPoint(_3d,nil,_3e+_3b,_41); +CGPathAddCurveToPoint(_3d,nil,_3e+_3b,_41,_3e,_41,_3e,_41-_3b); +}else{ +CGPathAddLineToPoint(_3d,nil,_3e,_41); +} +if(nw){ +CGPathAddLineToPoint(_3d,nil,_3e,_40+_3b); +CGPathAddCurveToPoint(_3d,nil,_3e,_40+_3b,_3e,_40,_3e+_3b,_40); +}else{ +CGPathAddLineToPoint(_3d,nil,_3e,_40); +} +CGPathCloseSubpath(_3d); +return _3d; +}; +CGPathCloseSubpath=function(_42){ +var _43=_42.count; +if(_43==0||_42.elements[_43-1].type==kCGPathElementCloseSubpath){ +return; +} +_42.elements[_42.count++]={type:kCGPathElementCloseSubpath,points:[_42.start]}; +}; +CGPathEqualToPath=function(_44,_45){ +if(_44==_45){ +return YES; +} +if(_44.count!=_45.count||!(_44.start.x==_45.start.x&&_44.start.y==_45.start.y)||!(_44.current.x==_45.current.x&&_44.current.y==_45.current.y)){ +return NO; +} +var i=0,_46=_44.count; +for(;i<_46;++i){ +var _47=_44[i],_48=_45[i]; +if(_47.type!=_48.type){ +return NO; +} +if((_47.type==kCGPathElementAddArc||_47.type==kCGPathElementAddArcToPoint)&&_47.radius!=_48.radius){ +return NO; +} +var j=_47.points.length; +while(j--){ +if(!(_47.points[j].x==_48.points[j].x&&_47.points[j].y==_48.points[j].y)){ +return NO; +} +} +} +return YES; +}; +CGPathGetCurrentPoint=function(_49){ +return {x:_49.current.x,y:_49.current.y}; +}; +CGPathIsEmpty=function(_4a){ +return !_4a||_4a.count==0; +}; +p;18;_CPMenuBarWindow.jt;12977;@STATIC;1.0;i;15;_CPMenuWindow.jt;12937; +objj_executeFile("_CPMenuWindow.j",YES); +var _1=28,_2=10,_3=10,_4=10; +var _5=nil,_6=nil; +var _7=objj_allocateClassPair(CPPanel,"_CPMenuBarWindow"),_8=_7.isa; +class_addIvars(_7,[new objj_ivar("_menu"),new objj_ivar("_highlightView"),new objj_ivar("_menuItemViews"),new objj_ivar("_trackingMenuItem"),new objj_ivar("_iconImageView"),new objj_ivar("_titleField"),new objj_ivar("_textColor"),new objj_ivar("_titleColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_titleShadowColor"),new objj_ivar("_highlightColor"),new objj_ivar("_highlightTextColor"),new objj_ivar("_highlightTextShadowColor")]); +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("init"),function(_9,_a){ +with(_9){ +var _b=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"contentBounds"); +_b.size.height=_1; +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPMenuBarWindow").super_class},"initWithContentRect:styleMask:",_b,CPBorderlessWindowMask); +if(_9){ +objj_msgSend(_9,"setLevel:",CPMainMenuWindowLevel); +objj_msgSend(_9,"setAutoresizingMask:",CPWindowWidthSizable); +var _c=objj_msgSend(_9,"contentView"); +objj_msgSend(_c,"setAutoresizesSubviews:",NO); +objj_msgSend(_9,"setBecomesKeyOnlyIfNeeded:",YES); +_iconImageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(0,0,16,16)); +objj_msgSend(_c,"addSubview:",_iconImageView); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",13)); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_c,"addSubview:",_titleField); +} +return _9; +} +}),new objj_method(sel_getUid("setTitle:"),function(_d,_e,_f){ +with(_d){ +objj_msgSend(_titleField,"setStringValue:",_f); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_d,"tile"); +} +}),new objj_method(sel_getUid("setIconImage:"),function(_10,_11,_12){ +with(_10){ +objj_msgSend(_iconImageView,"setImage:",_12); +objj_msgSend(_iconImageView,"setHidden:",_12==nil); +objj_msgSend(_10,"tile"); +} +}),new objj_method(sel_getUid("setIconImageAlphaValue:"),function(_13,_14,_15){ +with(_13){ +objj_msgSend(_iconImageView,"setAlphaValue:",_15); +} +}),new objj_method(sel_getUid("setColor:"),function(_16,_17,_18){ +with(_16){ +if(!_18){ +if(!_5){ +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPMenuBarWindow,"class")),"pathForResource:","_CPMenuBarWindow/_CPMenuBarWindowBackground.png"),CGSizeMake(1,28))); +} +objj_msgSend(objj_msgSend(_16,"contentView"),"setBackgroundColor:",_5); +}else{ +objj_msgSend(objj_msgSend(_16,"contentView"),"setBackgroundColor:",_18); +} +} +}),new objj_method(sel_getUid("setTextColor:"),function(_19,_1a,_1b){ +with(_19){ +if(_textColor==_1b){ +return; +} +_textColor=_1b; +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setTextColor:"),_textColor); +} +}),new objj_method(sel_getUid("setTitleColor:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_titleColor==_1e){ +return; +} +_titleColor=_1e; +objj_msgSend(_titleField,"setTextColor:",_1e?_1e:objj_msgSend(CPColor,"blackColor")); +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_1f,_20,_21){ +with(_1f){ +if(_textShadowColor==_21){ +return; +} +_textShadowColor=_21; +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setTextShadowColor:"),_textShadowColor); +} +}),new objj_method(sel_getUid("setTitleShadowColor:"),function(_22,_23,_24){ +with(_22){ +if(_titleShadowColor==_24){ +return; +} +_titleShadowColor=_24; +objj_msgSend(_titleField,"setTextShadowColor:",_24?_24:objj_msgSend(CPColor,"whiteColor")); +} +}),new objj_method(sel_getUid("setHighlightColor:"),function(_25,_26,_27){ +with(_25){ +if(_highlightColor==_27){ +return; +} +_highlightColor=_27; +} +}),new objj_method(sel_getUid("setHighlightTextColor:"),function(_28,_29,_2a){ +with(_28){ +if(_highlightTextColor==_2a){ +return; +} +_highlightTextColor=_2a; +} +}),new objj_method(sel_getUid("setHighlightTextShadowColor:"),function(_2b,_2c,_2d){ +with(_2b){ +if(_highlightTextShadowColor==_2d){ +return; +} +_highlightTextShadowColor=_2d; +} +}),new objj_method(sel_getUid("setMenu:"),function(_2e,_2f,_30){ +with(_2e){ +if(_menu==_30){ +return; +} +var _31=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_menu){ +objj_msgSend(_31,"removeObserver:name:object:",_2e,CPMenuDidAddItemNotification,_menu); +objj_msgSend(_31,"removeObserver:name:object:",_2e,CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_31,"removeObserver:name:object:",_2e,CPMenuDidRemoveItemNotification,_menu); +var _32=objj_msgSend(_menu,"itemArray"),_33=_32.length; +while(_33--){ +objj_msgSend(objj_msgSend(_32[_33],"_menuItemView"),"removeFromSuperview"); +} +} +_menu=_30; +if(_menu){ +objj_msgSend(_31,"addObserver:selector:name:object:",_2e,sel_getUid("menuDidAddItem:"),CPMenuDidAddItemNotification,_menu); +objj_msgSend(_31,"addObserver:selector:name:object:",_2e,sel_getUid("menuDidChangeItem:"),CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_31,"addObserver:selector:name:object:",_2e,sel_getUid("menuDidRemoveItem:"),CPMenuDidRemoveItemNotification,_menu); +} +_menuItemViews=[]; +var _34=objj_msgSend(_2e,"contentView"),_32=objj_msgSend(_menu,"itemArray"),_33=_32.length; +for(index=0;index<_33;++index){ +var _35=_32[index],_36=objj_msgSend(_35,"_menuItemView"); +_menuItemViews.push(_36); +objj_msgSend(_36,"setTextColor:",_textColor); +objj_msgSend(_36,"setHidden:",objj_msgSend(_35,"isHidden")); +objj_msgSend(_36,"synchronizeWithMenuItem"); +objj_msgSend(_34,"addSubview:",_36); +} +objj_msgSend(_2e,"tile"); +} +}),new objj_method(sel_getUid("menuDidChangeItem:"),function(_37,_38,_39){ +with(_37){ +var _3a=objj_msgSend(_menu,"itemAtIndex:",objj_msgSend(objj_msgSend(_39,"userInfo"),"objectForKey:","CPMenuItemIndex")),_3b=objj_msgSend(_3a,"_menuItemView"); +objj_msgSend(_3b,"setHidden:",objj_msgSend(_3a,"isHidden")); +objj_msgSend(_3b,"synchronizeWithMenuItem"); +objj_msgSend(_37,"tile"); +} +}),new objj_method(sel_getUid("menuDidAddItem:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=objj_msgSend(objj_msgSend(_3e,"userInfo"),"objectForKey:","CPMenuItemIndex"),_40=objj_msgSend(_menu,"itemAtIndex:",_3f),_41=objj_msgSend(_40,"_menuItemView"); +objj_msgSend(_menuItemViews,"insertObject:atIndex:",_41,_3f); +objj_msgSend(_41,"setTextColor:",_textColor); +objj_msgSend(_41,"setHidden:",objj_msgSend(_40,"isHidden")); +objj_msgSend(_41,"synchronizeWithMenuItem"); +objj_msgSend(objj_msgSend(_3c,"contentView"),"addSubview:",_41); +objj_msgSend(_3c,"tile"); +} +}),new objj_method(sel_getUid("menuDidRemoveItem:"),function(_42,_43,_44){ +with(_42){ +var _45=objj_msgSend(objj_msgSend(_44,"userInfo"),"objectForKey:","CPMenuItemIndex"),_46=objj_msgSend(_menuItemViews,"objectAtIndex:",_45); +objj_msgSend(_menuItemViews,"removeObjectAtIndex:",_45); +objj_msgSend(_46,"removeFromSuperview"); +objj_msgSend(_42,"tile"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_47,_48,_49){ +with(_47){ +var _4a=CGRectInset(objj_msgSend(objj_msgSend(_47,"platformWindow"),"visibleFrame"),5,0); +_4a.size.height-=5; +objj_msgSend(objj_msgSend(_CPMenuManager,"sharedMenuManager"),"beginTracking:menuContainer:constraintRect:callback:",_49,_47,_4a,function(_4b,_4c){ +objj_msgSend(_4c,"_performActionOfHighlightedItemChain"); +objj_msgSend(_4c,"_highlightItemAtIndex:",CPNotFound); +}); +} +}),new objj_method(sel_getUid("font"),function(_4d,_4e){ +with(_4d){ +objj_msgSend(CPFont,"systemFontOfSize:",12); +} +}),new objj_method(sel_getUid("tile"),function(_4f,_50){ +with(_4f){ +var _51=objj_msgSend(_menu,"itemArray"),_52=0,_53=_51.length,x=_3,y=0,_54=YES; +for(;_52<_53;++_52){ +var _55=_51[_52]; +if(objj_msgSend(_55,"isSeparatorItem")){ +x=CGRectGetWidth(objj_msgSend(_4f,"frame"))-_4; +_54=NO; +continue; +} +if(objj_msgSend(_55,"isHidden")){ +continue; +} +var _56=objj_msgSend(_55,"_menuItemView"),_57=objj_msgSend(_56,"frame"); +if(_54){ +objj_msgSend(_56,"setFrame:",CGRectMake(x,0,CGRectGetWidth(_57),_1)); +x+=CGRectGetWidth(objj_msgSend(_56,"frame")); +}else{ +objj_msgSend(_56,"setFrame:",CGRectMake(x-CGRectGetWidth(_57),0,CGRectGetWidth(_57),_1)); +x=CGRectGetMinX(objj_msgSend(_56,"frame")); +} +} +var _58=objj_msgSend(objj_msgSend(_4f,"contentView"),"bounds"),_59=objj_msgSend(_titleField,"frame"); +if(objj_msgSend(_iconImageView,"isHidden")){ +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_58)-CGRectGetWidth(_59))/2,(CGRectGetHeight(_58)-CGRectGetHeight(_59))/2)); +}else{ +var _5a=objj_msgSend(_iconImageView,"frame"),_5b=CGRectGetWidth(_5a),_5c=_5b+CGRectGetWidth(_59); +objj_msgSend(_iconImageView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_58)-_5c)/2,(CGRectGetHeight(_58)-CGRectGetHeight(_5a))/2)); +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_58)-_5c)/2+_5b,(CGRectGetHeight(_58)-CGRectGetHeight(_59))/2)); +} +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_5d,_5e,_5f,_60,_61){ +with(_5d){ +var _62=objj_msgSend(_5d,"frame").size; +objj_msgSendSuper({receiver:_5d,super_class:objj_getClass("_CPMenuBarWindow").super_class},"setFrame:display:animate:",_5f,_60,_61); +if(!(_62.width==_5f.size.width&&_62.height==_5f.size.height)){ +objj_msgSend(_5d,"tile"); +} +} +})]); +class_addMethods(_8,[new objj_method(sel_getUid("initialize"),function(_63,_64){ +with(_63){ +if(_63!=objj_msgSend(_CPMenuBarWindow,"class")){ +return; +} +var _65=objj_msgSend(CPBundle,"bundleForClass:",_63); +_6=objj_msgSend(CPFont,"boldSystemFontOfSize:",12); +} +}),new objj_method(sel_getUid("font"),function(_66,_67){ +with(_66){ +return _6; +} +})]); +var _7=objj_getClass("_CPMenuBarWindow"); +if(!_7){ +throw new SyntaxError("*** Could not find definition for class \"_CPMenuBarWindow\""); +} +var _8=_7.isa; +class_addMethods(_7,[new objj_method(sel_getUid("isMenuBar"),function(_68,_69){ +with(_68){ +return YES; +} +}),new objj_method(sel_getUid("globalFrame"),function(_6a,_6b){ +with(_6a){ +return objj_msgSend(_6a,"frame"); +} +}),new objj_method(sel_getUid("scrollingStateForPoint:"),function(_6c,_6d,_6e){ +with(_6c){ +return _CPMenuManagerScrollingStateNone; +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_6f,_70,_71){ +with(_6f){ +var _72=objj_msgSend(_menu,"itemArray"),_73=_72.length; +while(_73--){ +var _74=_72[_73]; +if(objj_msgSend(_74,"isHidden")||objj_msgSend(_74,"isSeparatorItem")){ +continue; +} +if(CGRectContainsPoint(objj_msgSend(_6f,"rectForItemAtIndex:",_73),_71)){ +return _73; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_75,_76,_77){ +with(_75){ +var _78=objj_msgSend(_menu,"itemAtIndex:",_77===CPNotFound?0:_77); +return objj_msgSend(objj_msgSend(_78,"_menuItemView"),"frame"); +} +})]); +var _7=objj_allocateClassPair(_CPMenuView,"_CPMenuBarView"),_8=_7.isa; +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("rectForItemAtIndex:"),function(_79,_7a,_7b){ +with(_79){ +return objj_msgSend(_menuItemViews[_7b===CPNotFound?0:_7b],"frame"); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_7c,_7d,_7e){ +with(_7c){ +var _7f=objj_msgSend(_7c,"bounds"); +if(!CGRectContainsPoint(_7f,_7e)){ +return CPNotFound; +} +var x=_7e.x,low=0,_80=_visibleMenuItemInfos.length-1; +while(low<=_80){ +var _81=FLOOR(low+(_80-low)/2),_82=_visibleMenuItemInfos[_81],_83=objj_msgSend(_82.view,"frame"); +if(xCGRectGetMaxX(_83)){ +low=_81+1; +}else{ +return _82.index; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tile"),function(_84,_85){ +with(_84){ +var _86=objj_msgSend(_menu,"itemArray"),_87=0,_88=_86.length,x=_3,y=0,_89=YES; +for(;_87<_88;++_87){ +var _8a=_86[_87]; +if(objj_msgSend(_8a,"isSeparatorItem")){ +x=CGRectGetWidth(objj_msgSend(_84,"frame"))-_4; +_89=NO; +continue; +} +if(objj_msgSend(_8a,"isHidden")){ +continue; +} +var _8b=objj_msgSend(_8a,"_menuItemView"),_8c=objj_msgSend(_8b,"frame"); +if(_89){ +objj_msgSend(_8b,"setFrameOrigin:",CGPointMake(x,(_1-1-CGRectGetHeight(_8c))/2)); +x+=CGRectGetWidth(objj_msgSend(_8b,"frame"))+_2; +}else{ +objj_msgSend(_8b,"setFrameOrigin:",CGPointMake(x-CGRectGetWidth(_8c),(_1-1-CGRectGetHeight(_8c))/2)); +x=CGRectGetMinX(objj_msgSend(_8b,"frame"))-_2; +} +} +var _8d=objj_msgSend(objj_msgSend(_84,"contentView"),"bounds"),_8e=objj_msgSend(_titleField,"frame"); +if(objj_msgSend(_iconImageView,"isHidden")){ +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8d)-CGRectGetWidth(_8e))/2,(CGRectGetHeight(_8d)-CGRectGetHeight(_8e))/2)); +}else{ +var _8f=objj_msgSend(_iconImageView,"frame"),_90=CGRectGetWidth(_8f),_91=_90+CGRectGetWidth(_8e); +objj_msgSend(_iconImageView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8d)-_91)/2,(CGRectGetHeight(_8d)-CGRectGetHeight(_8f))/2)); +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8d)-_91)/2+_90,(CGRectGetHeight(_8d)-CGRectGetHeight(_8e))/2)); +} +} +})]); +p;16;_CPMenuManager.jt;8469;@STATIC;1.0;I;21;Foundation/CPObject.jt;8424; +objj_executeFile("Foundation/CPObject.j",NO); +_CPMenuManagerScrollingStateUp=-1,_CPMenuManagerScrollingStateDown=1,_CPMenuManagerScrollingStateNone=0; +var _1=500; +var _2=nil; +var _3=objj_allocateClassPair(CPObject,"_CPMenuManager"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_startTime"),new objj_ivar("_scrollingState"),new objj_ivar("_lastGlobalLocation"),new objj_ivar("_lastMouseOverMenuView"),new objj_ivar("_constraintRect"),new objj_ivar("_menuContainerStack"),new objj_ivar("_trackingCallback")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +if(_2){ +return _2; +} +return objj_msgSendSuper({receiver:_5,super_class:objj_getClass("_CPMenuManager").super_class},"init"); +} +}),new objj_method(sel_getUid("trackingMenuContainer"),function(_7,_8){ +with(_7){ +return _menuContainerStack[0]; +} +}),new objj_method(sel_getUid("trackingMenu"),function(_9,_a){ +with(_9){ +return objj_msgSend(objj_msgSend(_9,"trackingMenuContainer"),"menu"); +} +}),new objj_method(sel_getUid("beginTracking:menuContainer:constraintRect:callback:"),function(_b,_c,_d,_e,_f,_10){ +with(_b){ +var _11=objj_msgSend(_e,"menu"); +CPApp._activeMenu=_11; +_startTime=objj_msgSend(_d,"timestamp"); +_scrollingState=_CPMenuManagerScrollingStateNone; +_constraintRect=_f; +_menuContainerStack=[_e]; +_trackingCallback=_10; +if(_11===objj_msgSend(CPApp,"mainMenu")){ +var _12=objj_msgSend(_d,"globalLocation"); +var _13=objj_msgSend(_e,"convertGlobalToBase:",_12); +var _14=objj_msgSend(_e,"itemIndexAtPoint:",_13),_15=_14!==CPNotFound?objj_msgSend(_11,"itemAtIndex:",_14):nil; +_menuBarButtonItemIndex=_14; +_menuBarButtonMenuContainer=_e; +if(objj_msgSend(_15,"_isMenuBarButton")){ +return objj_msgSend(_b,"trackMenuBarButtonEvent:",_d); +} +} +objj_msgSend(_b,"trackEvent:",_d); +} +}),new objj_method(sel_getUid("trackEvent:"),function(_16,_17,_18){ +with(_16){ +var _19=objj_msgSend(_18,"type"),_1a=objj_msgSend(_16,"trackingMenu"); +if(_19===CPAppKitDefined){ +return objj_msgSend(_16,"completeTracking"); +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_16,sel_getUid("trackEvent:"),CPPeriodicMask|CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPAppKitDefinedMask,nil,nil,YES); +var _1b=_19===CPPeriodic?_lastGlobalLocation:objj_msgSend(_18,"globalLocation"); +_lastGlobalLocation=_1b; +var _1c=objj_msgSend(_16,"menuContainerForPoint:",_1b),_1d=objj_msgSend(_1c,"menu"),_1e=objj_msgSend(_1c,"convertGlobalToBase:",_1b); +var _1f=_1c?objj_msgSend(_1c,"itemIndexAtPoint:",_1e):CPNotFound,_20=_1f!==CPNotFound?objj_msgSend(_1d,"itemAtIndex:",_1f):nil; +if(!objj_msgSend(_20,"isEnabled")||objj_msgSend(_20,"_isMenuBarButton")){ +_1f=CPNotFound; +_20=nil; +} +var _21=objj_msgSend(_20,"view"); +if(_19===CPPeriodic){ +if(_scrollingState===_CPMenuManagerScrollingStateUp){ +objj_msgSend(_1c,"scrollUp"); +}else{ +if(_scrollingState===_CPMenuManagerScrollingStateDown){ +objj_msgSend(_1c,"scrollDown"); +} +} +} +if(_21){ +if(!_lastMouseOverMenuView){ +objj_msgSend(_1d,"_highlightItemAtIndex:",CPNotFound); +} +if(_lastMouseOverMenuView!=_21){ +objj_msgSend(_21,"mouseExited:",_18); +objj_msgSend(_lastMouseOverMenuView,"mouseEntered:",_18); +_lastMouseOverMenuView=_21; +} +var _22=_1c; +if(!objj_msgSend(_22,"isKindOfClass:",objj_msgSend(CPWindow,"class"))){ +_22=objj_msgSend(_22,"window"); +} +objj_msgSend(_22,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_19,_1e,objj_msgSend(_18,"modifierFlags"),objj_msgSend(_18,"timestamp"),_22,nil,0,objj_msgSend(_18,"clickCount"),objj_msgSend(_18,"pressure"))); +}else{ +if(_lastMouseOverMenuView){ +objj_msgSend(_lastMouseOverMenuView,"mouseExited:",_18); +_lastMouseOverMenuView=nil; +} +objj_msgSend(_1d,"_highlightItemAtIndex:",_1f); +if(_19===CPMouseMoved||_19===CPLeftMouseDragged||_19===CPLeftMouseDown){ +var _23=_scrollingState; +_scrollingState=objj_msgSend(_1c,"scrollingStateForPoint:",_1b); +if(_scrollingState!==_23){ +if(_scrollingState===_CPMenuManagerScrollingStateNone){ +objj_msgSend(CPEvent,"stopPeriodicEvents"); +}else{ +if(_23===_CPMenuManagerScrollingStateNone){ +objj_msgSend(CPEvent,"startPeriodicEventsAfterDelay:withPeriod:",0,0.04); +} +} +} +}else{ +if(_19===CPLeftMouseUp&&(objj_msgSend(_18,"timestamp")-_startTime>_1)){ +objj_msgSend(_1a,"cancelTracking"); +} +} +} +if(objj_msgSend(_20,"hasSubmenu")){ +var _24=objj_msgSend(_1c,"rectForItemAtIndex:",_1f); +if(objj_msgSend(_1c,"isMenuBar")){ +var _25=CGPointMake(CGRectGetMinX(_24),CGRectGetMaxY(_24)); +}else{ +var _25=CGPointMake(CGRectGetMaxX(_24),CGRectGetMinY(_24)); +} +_25=objj_msgSend(_1c,"convertBaseToGlobal:",_25); +objj_msgSend(_16,"showMenu:fromMenu:atPoint:",objj_msgSend(_20,"submenu"),objj_msgSend(_20,"menu"),_25); +}else{ +objj_msgSend(_16,"showMenu:fromMenu:atPoint:",nil,_1d,CGPointMakeZero()); +} +} +}),new objj_method(sel_getUid("trackMenuBarButtonEvent:"),function(_26,_27,_28){ +with(_26){ +var _29=objj_msgSend(_28,"type"); +if(_29===CPAppKitDefined){ +return objj_msgSend(_26,"completeTracking"); +} +var _2a=objj_msgSend(_28,"globalLocation"); +var _2b=objj_msgSend(_26,"trackingMenu"),_2c=objj_msgSend(_26,"trackingMenuContainer"),_2d=objj_msgSend(_2c,"convertGlobalToBase:",_2a); +if(objj_msgSend(_2c,"itemIndexAtPoint:",_2d)===_menuBarButtonItemIndex){ +objj_msgSend(_2b,"_highlightItemAtIndex:",_menuBarButtonItemIndex); +}else{ +objj_msgSend(_2b,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_26,sel_getUid("trackMenuBarButtonEvent:"),CPPeriodicMask|CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPAppKitDefinedMask,nil,nil,YES); +if(_29===CPLeftMouseUp){ +objj_msgSend(_2b,"cancelTracking"); +} +} +}),new objj_method(sel_getUid("completeTracking"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_2e,"trackingMenu"); +objj_msgSend(CPEvent,"stopPeriodicEvents"); +var _31=objj_msgSend(_30,"highlightedItem"); +objj_msgSend(_2e,"showMenu:fromMenu:atPoint:",nil,_30,nil); +var _32=objj_msgSend(_30,"delegate"); +if(objj_msgSend(_32,"respondsToSelector:",sel_getUid("menuDidClose:"))){ +objj_msgSend(_32,"menuDidClose:",_30); +} +if(_trackingCallback){ +_trackingCallback(objj_msgSend(_2e,"trackingMenuContainer"),_30); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPMenuDidEndTrackingNotification,_30); +CPApp._activeMenu=nil; +} +}),new objj_method(sel_getUid("menuContainerForPoint:"),function(_33,_34,_35){ +with(_33){ +var _36=objj_msgSend(_menuContainerStack,"count"),_37=_menuContainerStack[0]; +if(_36===1){ +return _37; +} +var _38=0,_39=_36-1; +if(objj_msgSend(_37,"isMenuBar")){ +if(CGRectContainsPoint(objj_msgSend(_37,"globalFrame"),_35)){ +return _37; +} +_38=1; +} +var _3a=_36,x=_35.x,_3b=Infinity,_3c=nil; +while(_3a-->_38){ +var _3d=_menuContainerStack[_3a],_3e=objj_msgSend(_3d,"globalFrame"),_3f=(_3e.origin.x),_40=(_3e.origin.x+_3e.size.width); +if(x<_40&&x>=_3f){ +return _3d; +} +if(_3a===_38||_3a===_39){ +var _41=ABS(x<_3f?_3f-x:_40-x); +if(_41<_3b){ +_3c=_3d; +_3b=_41; +} +} +} +return _3c; +} +}),new objj_method(sel_getUid("showMenu:fromMenu:atPoint:"),function(_42,_43,_44,_45,_46){ +with(_42){ +var _47=_menuContainerStack.length,_48=_47; +while(_48--){ +var _49=_menuContainerStack[_48],_4a=objj_msgSend(_49,"menu"); +if(_4a===_45){ +break; +} +if(_4a===_44){ +return objj_msgSend(_44,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(_49,"orderOut:",_42); +objj_msgSend(_49,"setMenu:",nil); +objj_msgSend(_CPMenuWindow,"poolMenuWindow:",_49); +objj_msgSend(_menuContainerStack,"removeObjectAtIndex:",_48); +} +if(!_44){ +return; +} +objj_msgSend(_44,"_highlightItemAtIndex:",CPNotFound); +var _4b=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_44,objj_msgSend(_menuContainerStack[0],"font")); +objj_msgSend(_menuContainerStack,"addObject:",_4b); +objj_msgSend(_4b,"setConstraintRect:",_constraintRect); +if(_45===objj_msgSend(_42,"trackingMenu")&&objj_msgSend(objj_msgSend(_42,"trackingMenuContainer"),"isMenuBar")){ +objj_msgSend(_4b,"setBackgroundStyle:",_CPMenuWindowMenuBarBackgroundStyle); +}else{ +objj_msgSend(_4b,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +} +objj_msgSend(_4b,"setFrameOrigin:",_46); +objj_msgSend(_4b,"orderFront:",_42); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedMenuManager"),function(_4c,_4d){ +with(_4c){ +if(!_2){ +_2=objj_msgSend(objj_msgSend(_CPMenuManager,"alloc"),"init"); +} +return _2; +} +})]); +p;15;_CPMenuWindow.jt;17126;@STATIC;1.0;t;17106; +var _1=[],_2=5,_3=[]; +_CPMenuWindowMenuBarBackgroundStyle=0; +_CPMenuWindowPopUpBackgroundStyle=1; +_CPMenuWindowAttachedMenuBackgroundStyle=2; +var _4=500,_5=5,_6=1,_7=1,_8=5,_9=16; +var _a=objj_allocateClassPair(CPWindow,"_CPMenuWindow"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuView"),new objj_ivar("_menuClipView"),new objj_ivar("_moreAboveView"),new objj_ivar("_moreBelowView"),new objj_ivar("_unconstrainedFrame"),new objj_ivar("_constraintRect")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("initWithContentRect:styleMask:"),function(_c,_d,_e,_f){ +with(_c){ +_constraintRect={origin:{x:0,y:0},size:{width:0,height:0}}; +_unconstrainedFrame={origin:{x:0,y:0},size:{width:0,height:0}}; +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPMenuWindow").super_class},"initWithContentRect:styleMask:",_e,CPBorderlessWindowMask); +if(_c){ +objj_msgSend(_c,"setLevel:",CPPopUpMenuWindowLevel); +objj_msgSend(_c,"setHasShadow:",YES); +objj_msgSend(_c,"setShadowStyle:",CPMenuWindowShadowStyle); +objj_msgSend(_c,"setAcceptsMouseMovedEvents:",YES); +var _10=objj_msgSend(_c,"contentView"); +_menuView=objj_msgSend(objj_msgSend(_CPMenuView,"alloc"),"initWithFrame:",CGRectMakeZero()); +_menuClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"initWithFrame:",CGRectMake(_6,_5,0,0)); +objj_msgSend(_menuClipView,"setDocumentView:",_menuView); +objj_msgSend(_10,"addSubview:",_menuClipView); +_moreAboveView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_moreAboveView,"setImage:",_CPMenuWindowMoreAboveImage); +objj_msgSend(_moreAboveView,"setFrameSize:",objj_msgSend(_CPMenuWindowMoreAboveImage,"size")); +objj_msgSend(_10,"addSubview:",_moreAboveView); +_moreBelowView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_moreBelowView,"setImage:",_CPMenuWindowMoreBelowImage); +objj_msgSend(_moreBelowView,"setFrameSize:",objj_msgSend(_CPMenuWindowMoreBelowImage,"size")); +objj_msgSend(_10,"addSubview:",_moreBelowView); +objj_msgSend(_c,"setShadowStyle:",CPWindowShadowStyleMenu); +} +return _c; +} +}),new objj_method(sel_getUid("setFont:"),function(_11,_12,_13){ +with(_11){ +objj_msgSend(_menuView,"setFont:",_13); +} +}),new objj_method(sel_getUid("font"),function(_14,_15){ +with(_14){ +return objj_msgSend(_menuView,"font"); +} +}),new objj_method(sel_getUid("setBackgroundStyle:"),function(_16,_17,_18){ +with(_16){ +objj_msgSend(_16,"setBackgroundColor:",objj_msgSend(objj_msgSend(_16,"class"),"backgroundColorForBackgroundStyle:",_18)); +} +}),new objj_method(sel_getUid("setMenu:"),function(_19,_1a,_1b){ +with(_19){ +objj_msgSend(_1b,"_setMenuWindow:",_19); +objj_msgSend(_menuView,"setMenu:",_1b); +var _1c=objj_msgSend(_menuView,"frame").size; +objj_msgSend(_19,"setFrameSize:",CGSizeMake(_6+_1c.width+_7,_5+_1c.height+_8)); +objj_msgSend(_menuView,"scrollPoint:",CGPointMake(0,0)); +objj_msgSend(_menuClipView,"setFrame:",CGRectMake(_6,_5,_1c.width,_1c.height)); +} +}),new objj_method(sel_getUid("setMinWidth:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=objj_msgSend(_1d,"unconstrainedFrame").size; +objj_msgSend(_1d,"setFrameSize:",CGSizeMake(MAX(_20.width,_1f),_20.height)); +} +}),new objj_method(sel_getUid("menu"),function(_21,_22){ +with(_21){ +return objj_msgSend(_menuView,"menu"); +} +}),new objj_method(sel_getUid("orderFront:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(_23,"setFrame:",_unconstrainedFrame); +objj_msgSendSuper({receiver:_23,super_class:objj_getClass("_CPMenuWindow").super_class},"orderFront:",_25); +} +}),new objj_method(sel_getUid("setConstraintRect:"),function(_26,_27,_28){ +with(_26){ +_constraintRect=_28; +objj_msgSend(_26,"setFrame:",_unconstrainedFrame); +} +}),new objj_method(sel_getUid("unconstrainedFrame"),function(_29,_2a){ +with(_29){ +return {origin:{x:_unconstrainedFrame.origin.x,y:_unconstrainedFrame.origin.y},size:{width:_unconstrainedFrame.size.width,height:_unconstrainedFrame.size.height}}; +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:",{origin:{x:_2d.x,y:_2d.y},size:{width:(_unconstrainedFrame.size.width),height:(_unconstrainedFrame.size.height)}}); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSendSuper({receiver:_2e,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:",{origin:{x:(_unconstrainedFrame.origin.x),y:(_unconstrainedFrame.origin.y)},size:{width:_30.width,height:_30.height}}); +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_31,_32,_33,_34,_35){ +with(_31){ +_unconstrainedFrame={origin:{x:_33.origin.x,y:_33.origin.y},size:{width:_33.size.width,height:_33.size.height}}; +var _36=CGRectIntersection(_unconstrainedFrame,_constraintRect); +_36.origin.x=CGRectGetMinX(_unconstrainedFrame); +_36.size.width=CGRectGetWidth(_unconstrainedFrame); +if(CGRectGetWidth(_36)>CGRectGetWidth(_constraintRect)){ +_36.size.width=CGRectGetWidth(_constraintRect); +} +if(CGRectGetMaxX(_36)>CGRectGetMaxX(_constraintRect)){ +_36.origin.x-=CGRectGetMaxX(_36)-CGRectGetMaxX(_constraintRect); +} +if(CGRectGetMinX(_36)CGRectGetMaxY(_36)-_8,_3a=_5,_3b=_8,_3c=objj_msgSend(_31,"contentView"),_3d=objj_msgSend(_3c,"bounds"); +if(_38){ +_3a+=_9; +var _3e=objj_msgSend(_moreAboveView,"frame"); +objj_msgSend(_moreAboveView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_3d)-CGRectGetWidth(_3e))/2,(_5+_9-CGRectGetHeight(_3e))/2)); +} +objj_msgSend(_moreAboveView,"setHidden:",!_38); +if(_39){ +_3b+=_9; +objj_msgSend(_moreBelowView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_3d)-CGRectGetWidth(objj_msgSend(_moreBelowView,"frame")))/2,CGRectGetHeight(_3d)-_9-_8)); +} +objj_msgSend(_moreBelowView,"setHidden:",!_39); +var _3f=CGRectMake(_6,_3a,CGRectGetWidth(_36)-_6-_7,CGRectGetHeight(_36)-_3a-_3b); +objj_msgSend(_menuClipView,"setFrame:",_3f); +objj_msgSend(_menuView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_3f),CGRectGetHeight(objj_msgSend(_menuView,"frame")))); +objj_msgSend(_menuView,"scrollPoint:",CGPointMake(0,objj_msgSend(_31,"convertBaseToGlobal:",_3f.origin).y-_37.y)); +} +}),new objj_method(sel_getUid("hasMinimumNumberOfVisibleItems"),function(_40,_41){ +with(_40){ +var _42=objj_msgSend(_menuView,"visibleRect"); +if(CGRectIsEmpty(_42)){ +return NO; +} +var _43=objj_msgSend(_menuView,"numberOfUnhiddenItems"),_44=MIN(_43,3),_45=0,_46=objj_msgSend(_menuView,"itemIndexAtPoint:",objj_msgSend(_menuView,"convertPoint:fromView:",objj_msgSend(_menuClipView,"frame").origin,nil)); +for(;_46<_43&&_45<_44;++_46){ +var _47=objj_msgSend(_menuView,"rectForUnhiddenItemAtIndex:",_46),_48=CGRectIntersection(_42,_47); +if(CGRectIsEmpty(_48)){ +break; +} +if(CGRectEqualToRect(_48,_47)){ +++_45; +} +} +return _45>=_44; +} +}),new objj_method(sel_getUid("canScrollUp"),function(_49,_4a){ +with(_49){ +return !objj_msgSend(_moreAboveView,"isHidden"); +} +}),new objj_method(sel_getUid("canScrollDown"),function(_4b,_4c){ +with(_4b){ +return !objj_msgSend(_moreBelowView,"isHidden"); +} +}),new objj_method(sel_getUid("canScroll"),function(_4d,_4e){ +with(_4d){ +return objj_msgSend(_4d,"canScrollUp")||objj_msgSend(_4d,"canScrollDown"); +} +}),new objj_method(sel_getUid("scrollUp"),function(_4f,_50){ +with(_4f){ +if(CGRectGetMinY(_unconstrainedFrame)>=CGRectGetMinY(_constraintRect)){ +return; +} +_unconstrainedFrame.origin.y+=10; +objj_msgSend(_4f,"setFrame:",_unconstrainedFrame); +} +}),new objj_method(sel_getUid("scrollDown"),function(_51,_52){ +with(_51){ +if(CGRectGetMaxY(_unconstrainedFrame)<=CGRectGetHeight(_constraintRect)){ +return; +} +_unconstrainedFrame.origin.y-=10; +objj_msgSend(_51,"setFrame:",_unconstrainedFrame); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("menuWindowWithMenu:font:"),function(_53,_54,_55,_56){ +with(_53){ +var _57=nil; +if(_1.length){ +_57=_1.pop(); +objj_msgSend(_57,"setFrameOrigin:",CGPointMakeZero()); +}else{ +_57=objj_msgSend(objj_msgSend(_CPMenuWindow,"alloc"),"init"); +} +objj_msgSend(_57,"setFont:",_56); +objj_msgSend(_57,"setMenu:",_55); +objj_msgSend(_57,"setMinWidth:",objj_msgSend(_55,"minimumWidth")); +return _57; +} +}),new objj_method(sel_getUid("poolMenuWindow:"),function(_58,_59,_5a){ +with(_58){ +if(!_5a||_1.length>=_2){ +return; +} +_1.push(_5a); +} +}),new objj_method(sel_getUid("initialize"),function(_5b,_5c){ +with(_5b){ +if(_5b!=objj_msgSend(_CPMenuWindow,"class")){ +return; +} +var _5d=objj_msgSend(CPBundle,"bundleForClass:",_5b); +_CPMenuWindowMoreAboveImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5d,"pathForResource:","_CPMenuWindow/_CPMenuWindowMoreAbove.png"),CGSizeMake(38,18)); +_CPMenuWindowMoreBelowImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5d,"pathForResource:","_CPMenuWindow/_CPMenuWindowMoreBelow.png"),CGSizeMake(38,18)); +} +}),new objj_method(sel_getUid("_standardLeftMargin"),function(_5e,_5f){ +with(_5e){ +return _6; +} +}),new objj_method(sel_getUid("backgroundColorForBackgroundStyle:"),function(_60,_61,_62){ +with(_60){ +var _63=_3[_62]; +if(!_63){ +var _64=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_60,"class")); +if(_62==_CPMenuWindowPopUpBackgroundStyle){ +_63=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded0.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow1.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded2.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded6.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow7.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded8.png"),CGSizeMake(4,4))])); +}else{ +if(_62==_CPMenuWindowMenuBarBackgroundStyle){ +_63=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded6.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow7.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded8.png"),CGSizeMake(4,4))])); +} +} +_3[_62]=_63; +} +return _63; +} +})]); +var _a=objj_getClass("_CPMenuWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"_CPMenuWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("globalFrame"),function(_65,_66){ +with(_65){ +return objj_msgSend(_65,"frame"); +} +}),new objj_method(sel_getUid("isMenuBar"),function(_67,_68){ +with(_67){ +return NO; +} +}),new objj_method(sel_getUid("scrollingStateForPoint:"),function(_69,_6a,_6b){ +with(_69){ +var _6c=objj_msgSend(_69,"frame"); +if(!objj_msgSend(_69,"canScroll")){ +return _CPMenuManagerScrollingStateNone; +} +if(_6b.yCGRectGetMaxY(_6c)-_8-_9){ +return _CPMenuManagerScrollingStateDown; +} +return _CPMenuManagerScrollingStateNone; +} +}),new objj_method(sel_getUid("deltaYForItemAtIndex:"),function(_6d,_6e,_6f){ +with(_6d){ +return _5+CGRectGetMinY(objj_msgSend(_menuView,"rectForItemAtIndex:",_6f)); +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_70,_71,_72){ +with(_70){ +return objj_msgSend(_menuView,"convertRect:toView:",objj_msgSend(_menuView,"rectForItemAtIndex:",_72),nil); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_73,_74,_75){ +with(_73){ +if(!CGRectContainsPoint(objj_msgSend(_menuClipView,"bounds"),objj_msgSend(_menuClipView,"convertPoint:fromView:",_75,nil))){ +return NO; +} +return objj_msgSend(_menuView,"itemIndexAtPoint:",objj_msgSend(_menuView,"convertPoint:fromView:",_75,nil)); +} +})]); +var _a=objj_allocateClassPair(CPView,"_CPMenuView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuItemViews"),new objj_ivar("_visibleMenuItemInfos"),new objj_ivar("_font")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("font"),function(_76,_77){ +with(_76){ +return _font; +} +}),new objj_method(sel_getUid("setFont:"),function(_78,_79,_7a){ +with(_78){ +_font=_7a; +} +}),new objj_method(sel_getUid("numberOfUnhiddenItems"),function(_7b,_7c){ +with(_7b){ +return _visibleMenuItemInfos.length; +} +}),new objj_method(sel_getUid("rectForUnhiddenItemAtIndex:"),function(_7d,_7e,_7f){ +with(_7d){ +return objj_msgSend(_7d,"rectForItemAtIndex:",_visibleMenuItemInfos[_7f].index); +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_80,_81,_82){ +with(_80){ +return objj_msgSend(_menuItemViews[_82===CPNotFound?0:_82],"frame"); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_83,_84,_85){ +with(_83){ +var x=_85.x,_86=objj_msgSend(_83,"bounds"); +if(xCGRectGetMaxX(_86)){ +return CPNotFound; +} +var y=_85.y,low=0,_87=_visibleMenuItemInfos.length-1; +while(low<=_87){ +var _88=FLOOR(low+(_87-low)/2),_89=_visibleMenuItemInfos[_88]; +frame=objj_msgSend(_89.view,"frame"); +if(yCGRectGetMaxY(frame)){ +low=_88+1; +}else{ +return _89.index; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tile"),function(_8a,_8b){ +with(_8a){ +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +_menuItemViews=[]; +_visibleMenuItemInfos=[]; +var _8c=objj_msgSend(_8a,"menu"); +if(!_8c){ +return; +} +var _8d=objj_msgSend(_8c,"itemArray"),_8e=0,_8f=objj_msgSend(_8d,"count"),_90=0,y=0,_91=objj_msgSend(_8c,"showsStateColumn"); +for(;_8e<_8f;++_8e){ +var _92=_8d[_8e],_93=objj_msgSend(_92,"_menuItemView"); +_menuItemViews.push(_93); +if(objj_msgSend(_92,"isHidden")){ +continue; +} +_visibleMenuItemInfos.push({view:_93,index:_8e}); +objj_msgSend(_93,"setFont:",_font); +objj_msgSend(_93,"setShowsStateColumn:",_91); +objj_msgSend(_93,"synchronizeWithMenuItem"); +objj_msgSend(_93,"setFrameOrigin:",CGPointMake(0,y)); +objj_msgSend(_8a,"addSubview:",_93); +var _94=objj_msgSend(_93,"minSize"),_95=_94.width; +if(_90<_95){ +_90=_95; +} +y+=_94.height; +} +for(_8e=0;_8e<_8f;++_8e){ +var _93=_menuItemViews[_8e]; +objj_msgSend(_93,"setFrameSize:",CGSizeMake(_90,CGRectGetHeight(objj_msgSend(_93,"frame")))); +} +objj_msgSend(_8a,"setAutoresizesSubviews:",NO); +objj_msgSend(_8a,"setFrameSize:",CGSizeMake(_90,y)); +objj_msgSend(_8a,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("setMenu:"),function(_96,_97,_98){ +with(_96){ +objj_msgSendSuper({receiver:_96,super_class:objj_getClass("_CPMenuView").super_class},"setMenu:",_98); +objj_msgSend(_96,"tile"); +} +})]); +p;8;CPMenu.jt;23227;@STATIC;1.0;I;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPString.ji;16;_CPMenuManager.ji;15;CPApplication.ji;12;CPClipView.ji;12;CPMenuItem.ji;9;CPPanel.ji;18;_CPMenuBarWindow.ji;15;_CPMenuWindow.jt;22957; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("_CPMenuManager.j",YES); +objj_executeFile("CPApplication.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPMenuItem.j",YES); +objj_executeFile("CPPanel.j",YES); +CPMenuDidAddItemNotification="CPMenuDidAddItemNotification"; +CPMenuDidChangeItemNotification="CPMenuDidChangeItemNotification"; +CPMenuDidRemoveItemNotification="CPMenuDidRemoveItemNotification"; +CPMenuDidEndTrackingNotification="CPMenuDidEndTrackingNotification"; +var _1=28; +var _2=NO,_3="",_4=nil,_5=1,_6=nil,_7=nil; +var _8=objj_allocateClassPair(CPObject,"CPMenu"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_supermenu"),new objj_ivar("_title"),new objj_ivar("_name"),new objj_ivar("_font"),new objj_ivar("_minimumWidth"),new objj_ivar("_items"),new objj_ivar("_autoenablesItems"),new objj_ivar("_showsStateColumn"),new objj_ivar("_delegate"),new objj_ivar("_highlightedIndex"),new objj_ivar("_menuWindow")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("menuBarHeight"),function(_a,_b){ +with(_a){ +if(_a===objj_msgSend(CPApp,"mainMenu")){ +return _1; +} +return 0; +} +}),new objj_method(sel_getUid("initWithTitle:"),function(_c,_d,_e){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPMenu").super_class},"init"); +if(_c){ +_title=_e; +_items=[]; +_autoenablesItems=YES; +_showsStateColumn=YES; +objj_msgSend(_c,"setMinimumWidth:",0); +} +return _c; +} +}),new objj_method(sel_getUid("init"),function(_f,_10){ +with(_f){ +return objj_msgSend(_f,"initWithTitle:",""); +} +}),new objj_method(sel_getUid("insertItem:atIndex:"),function(_11,_12,_13,_14){ +with(_11){ +var _15=objj_msgSend(_13,"menu"); +if(_15){ +if(_15!==_11){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Attempted to insert item into menu that was already in another menu."); +}else{ +return; +} +} +objj_msgSend(_13,"setMenu:",_11); +objj_msgSend(_items,"insertObject:atIndex:",_13,_14); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidAddItemNotification,_11,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_14,"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("insertItemWithTitle:action:keyEquivalent:atIndex:"),function(_16,_17,_18,_19,_1a,_1b){ +with(_16){ +var _1c=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",_18,_19,_1a); +objj_msgSend(_16,"insertItem:atIndex:",_1c,_1b); +return _1c; +} +}),new objj_method(sel_getUid("addItem:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_1d,"insertItem:atIndex:",_1f,objj_msgSend(_items,"count")); +} +}),new objj_method(sel_getUid("addItemWithTitle:action:keyEquivalent:"),function(_20,_21,_22,_23,_24){ +with(_20){ +return objj_msgSend(_20,"insertItemWithTitle:action:keyEquivalent:atIndex:",_22,_23,_24,objj_msgSend(_items,"count")); +} +}),new objj_method(sel_getUid("removeItem:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_25,"removeItemAtIndex:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_27)); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_28,_29,_2a){ +with(_28){ +if(_2a<0||_2a>=_items.length){ +return; +} +objj_msgSend(_items[_2a],"setMenu:",nil); +objj_msgSend(_items,"removeObjectAtIndex:",_2a); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidRemoveItemNotification,_28,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_2a,"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("itemChanged:"),function(_2b,_2c,_2d){ +with(_2b){ +if(objj_msgSend(_2d,"menu")!=_2b){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidChangeItemNotification,_2b,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_2d),"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("itemWithTag:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=objj_msgSend(_2e,"indexOfItemWithTag:",_30); +if(_31==CPNotFound){ +return nil; +} +return _items[_31]; +} +}),new objj_method(sel_getUid("itemWithTitle:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"indexOfItemWithTitle:",_34); +if(_35==CPNotFound){ +return nil; +} +return _items[_35]; +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_36,_37,_38){ +with(_36){ +return objj_msgSend(_items,"objectAtIndex:",_38); +} +}),new objj_method(sel_getUid("numberOfItems"),function(_39,_3a){ +with(_39){ +return objj_msgSend(_items,"count"); +} +}),new objj_method(sel_getUid("itemArray"),function(_3b,_3c){ +with(_3b){ +return _items; +} +}),new objj_method(sel_getUid("indexOfItem:"),function(_3d,_3e,_3f){ +with(_3d){ +if(objj_msgSend(_3f,"menu")!==_3d){ +return CPNotFound; +} +return objj_msgSend(_items,"indexOfObjectIdenticalTo:",_3f); +} +}),new objj_method(sel_getUid("indexOfItemWithTitle:"),function(_40,_41,_42){ +with(_40){ +var _43=0,_44=_items.length; +for(;_43<_44;++_43){ +if(objj_msgSend(_items[_43],"title")===_42){ +return _43; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithTag:"),function(_45,_46,_47){ +with(_45){ +var _48=0,_49=_items.length; +for(;_48<_49;++_48){ +if(objj_msgSend(_items[_48],"tag")==_47){ +return _48; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithTarget:andAction:"),function(_4a,_4b,_4c,_4d){ +with(_4a){ +var _4e=0,_4f=_items.length; +for(;_4e<_4f;++_4e){ +var _50=_items[_4e]; +if(objj_msgSend(_50,"target")==_4c&&(!_4d||objj_msgSend(_50,"action")==_4d)){ +return _4e; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"),function(_51,_52,_53){ +with(_51){ +var _54=0,_55=_items.length; +for(;_54<_55;++_54){ +if(objj_msgSend(objj_msgSend(_items[_54],"representedObject"),"isEqual:",_53)){ +return _54; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithSubmenu:"),function(_56,_57,_58){ +with(_56){ +var _59=0,_5a=_items.length; +for(;_59<_5a;++_59){ +if(objj_msgSend(_items[_59],"submenu")==_58){ +return _59; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("setSubmenu:forItem:"),function(_5b,_5c,_5d,_5e){ +with(_5b){ +objj_msgSend(_5e,"setTarget:",_5e); +objj_msgSend(_5e,"setAction:",sel_getUid("submenuAction:")); +objj_msgSend(_5e,"setSubmenu:",_5d); +} +}),new objj_method(sel_getUid("submenuAction:"),function(_5f,_60,_61){ +with(_5f){ +} +}),new objj_method(sel_getUid("supermenu"),function(_62,_63){ +with(_62){ +return _supermenu; +} +}),new objj_method(sel_getUid("setSupermenu:"),function(_64,_65,_66){ +with(_64){ +_supermenu=_66; +} +}),new objj_method(sel_getUid("isTornOff"),function(_67,_68){ +with(_67){ +return !_supermenu||_67==objj_msgSend(CPApp,"mainMenu"); +} +}),new objj_method(sel_getUid("setAutoenablesItems:"),function(_69,_6a,_6b){ +with(_69){ +_autoenablesItems=_6b; +} +}),new objj_method(sel_getUid("autoenablesItems"),function(_6c,_6d){ +with(_6c){ +return _autoenablesItems; +} +}),new objj_method(sel_getUid("update"),function(_6e,_6f){ +with(_6e){ +} +}),new objj_method(sel_getUid("setTitle:"),function(_70,_71,_72){ +with(_70){ +_title=_72; +} +}),new objj_method(sel_getUid("title"),function(_73,_74){ +with(_73){ +return _title; +} +}),new objj_method(sel_getUid("setMinimumWidth:"),function(_75,_76,_77){ +with(_75){ +_minimumWidth=_77; +} +}),new objj_method(sel_getUid("minimumWidth"),function(_78,_79){ +with(_78){ +return _minimumWidth; +} +}),new objj_method(sel_getUid("_performActionOfHighlightedItemChain"),function(_7a,_7b){ +with(_7a){ +var _7c=objj_msgSend(_7a,"highlightedItem"); +while(objj_msgSend(_7c,"submenu")&&objj_msgSend(_7c,"action")===sel_getUid("submenuAction:")){ +_7c=objj_msgSend(objj_msgSend(_7c,"submenu"),"highlightedItem"); +} +if(_7c&&objj_msgSend(_7c,"isEnabled")){ +objj_msgSend(CPApp,"sendAction:to:from:",objj_msgSend(_7c,"action"),objj_msgSend(_7c,"target"),_7c); +} +} +}),new objj_method(sel_getUid("popUpMenuPositioningItem:atLocation:inView:callback:"),function(_7d,_7e,_7f,_80,_81,_82){ +with(_7d){ +objj_msgSend(_7d,"_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:",_7f,_80,_80.y,_80.y,_81,_82); +} +}),new objj_method(sel_getUid("_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:"),function(_83,_84,_85,_86,_87,_88,_89,_8a){ +with(_83){ +var _8b=0; +if(_85){ +_8b=objj_msgSend(_83,"indexOfItem:",_85); +if(_8b===CPNotFound){ +throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, menu item "+_85+" is not present in menu "+_83; +} +} +var _8c=objj_msgSend(_89,"window"); +if(_89&&!_8c){ +throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, view is not in any window."; +} +var _8d=objj_msgSend(_83,"delegate"); +if(objj_msgSend(_8d,"respondsToSelector:",sel_getUid("menuWillOpen:"))){ +objj_msgSend(_8d,"menuWillOpen:",aMenu); +} +if(_89){ +_86=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",_86,nil)); +} +var _8e=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_83,objj_msgSend(_83,"font")); +objj_msgSend(_8e,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +if(_85){ +_86.y-=objj_msgSend(_8e,"deltaYForItemAtIndex:",_8b); +} +var _8f=objj_msgSend(CPMenu,"_constraintRectForView:",_89); +objj_msgSend(_8e,"setFrameOrigin:",_86); +objj_msgSend(_8e,"setConstraintRect:",_8f); +if(!objj_msgSend(_8e,"hasMinimumNumberOfVisibleItems")){ +var _90=objj_msgSend(_8e,"unconstrainedFrame"),_91=CGRectGetMinY(_90); +if(_91>=CGRectGetMaxY(_8f)||objj_msgSend(_8e,"canScrollDown")){ +if(_89){ +_87=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",CGPointMake(0,_87),nil)).y; +} +_90.origin.y=MIN(CGRectGetMaxY(_8f),_87)-CGRectGetHeight(_90); +}else{ +if(_91=0?_items[_highlightedIndex]:nil; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_99,_9a,_9b){ +with(_99){ +_delegate=_9b; +} +}),new objj_method(sel_getUid("delegate"),function(_9c,_9d){ +with(_9c){ +return _delegate; +} +}),new objj_method(sel_getUid("cancelTracking"),function(_9e,_9f){ +with(_9e){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("_fireCancelTrackingEvent"),_9e,nil,0,[CPDefaultRunLoopMode]); +} +}),new objj_method(sel_getUid("_fireCancelTrackingEvent"),function(_a0,_a1){ +with(_a0){ +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",CPAppKitDefined,{x:0,y:0},0,0,0,0,0,0,0)); +objj_msgSend(_CPDisplayServer,"run"); +} +}),new objj_method(sel_getUid("_setMenuWindow:"),function(_a2,_a3,_a4){ +with(_a2){ +_menuWindow=_a4; +} +}),new objj_method(sel_getUid("setFont:"),function(_a5,_a6,_a7){ +with(_a5){ +_font=_a7; +} +}),new objj_method(sel_getUid("font"),function(_a8,_a9){ +with(_a8){ +return _font; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_aa,_ab,_ac){ +with(_aa){ +if(_autoenablesItems){ +objj_msgSend(_aa,"update"); +} +var _ad=0,_ae=_items.length,_af=objj_msgSend(_ac,"charactersIgnoringModifiers"),_b0=objj_msgSend(_ac,"modifierFlags"); +for(;_ad<_ae;++_ad){ +var _b1=_items[_ad],_b2=objj_msgSend(_b1,"keyEquivalentModifierMask"); +if(objj_msgSend(_ac,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(_b1,"keyEquivalent"),objj_msgSend(_b1,"keyEquivalentModifierMask"))){ +if(objj_msgSend(_b1,"isEnabled")){ +objj_msgSend(_aa,"performActionForItemAtIndex:",_ad); +}else{ +} +return YES; +} +if(objj_msgSend(objj_msgSend(_b1,"submenu"),"performKeyEquivalent:",_ac)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("performActionForItemAtIndex:"),function(_b3,_b4,_b5){ +with(_b3){ +var _b6=_items[_b5]; +objj_msgSend(CPApp,"sendAction:to:from:",objj_msgSend(_b6,"action"),objj_msgSend(_b6,"target"),_b6); +} +}),new objj_method(sel_getUid("_itemIsHighlighted:"),function(_b7,_b8,_b9){ +with(_b7){ +return _items[_highlightedIndex]==_b9; +} +}),new objj_method(sel_getUid("_highlightItemAtIndex:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_highlightedIndex===_bc){ +return; +} +if(_highlightedIndex!==CPNotFound){ +objj_msgSend(objj_msgSend(_items[_highlightedIndex],"_menuItemView"),"highlight:",NO); +} +_highlightedIndex=_bc; +if(_highlightedIndex!==CPNotFound){ +objj_msgSend(objj_msgSend(_items[_highlightedIndex],"_menuItemView"),"highlight:",YES); +} +} +}),new objj_method(sel_getUid("_setMenuName:"),function(_bd,_be,_bf){ +with(_bd){ +if(_name===_bf){ +return; +} +_name=_bf; +if(_name==="CPMainMenu"){ +objj_msgSend(CPApp,"setMainMenu:",_bd); +} +} +}),new objj_method(sel_getUid("_menuName"),function(_c0,_c1){ +with(_c0){ +return _name; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_c2,_c3){ +with(_c2){ +if(_name==="_CPMainMenu"){ +objj_msgSend(_c2,"_setMenuName:","CPMainMenu"); +objj_msgSend(CPMenu,"setMenuBarVisible:",YES); +} +} +}),new objj_method(sel_getUid("_menuWithName:"),function(_c4,_c5,_c6){ +with(_c4){ +if(_c6===_name){ +return _c4; +} +for(var i=0,_c7=objj_msgSend(_items,"count");i<_c7;i++){ +var _c8=objj_msgSend(objj_msgSend(_items[i],"submenu"),"_menuWithName:",_c6); +if(_c8){ +return _c8; +} +} +return nil; +} +})]); +class_addMethods(_9,[new objj_method(sel_getUid("initialize"),function(_c9,_ca){ +with(_c9){ +objj_msgSend(objj_msgSend(_c9,"class"),"setMenuBarAttributes:",objj_msgSend(CPDictionary,"dictionary")); +} +}),new objj_method(sel_getUid("menuBarVisible"),function(_cb,_cc){ +with(_cb){ +return _2; +} +}),new objj_method(sel_getUid("setMenuBarVisible:"),function(_cd,_ce,_cf){ +with(_cd){ +if(_2===_cf){ +return; +} +_2=_cf; +if(objj_msgSend(CPPlatform,"supportsNativeMainMenu")){ +return; +} +if(_cf){ +if(!_7){ +_7=objj_msgSend(objj_msgSend(_CPMenuBarWindow,"alloc"),"init"); +} +objj_msgSend(_7,"setMenu:",objj_msgSend(CPApp,"mainMenu")); +objj_msgSend(_7,"setTitle:",_3); +objj_msgSend(_7,"setIconImage:",_4); +objj_msgSend(_7,"setIconImageAlphaValue:",_5); +objj_msgSend(_7,"setColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarBackgroundColor")); +objj_msgSend(_7,"setTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextColor")); +objj_msgSend(_7,"setTitleColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleColor")); +objj_msgSend(_7,"setTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextShadowColor")); +objj_msgSend(_7,"setTitleShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleShadowColor")); +objj_msgSend(_7,"setHighlightColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightColor")); +objj_msgSend(_7,"setHighlightTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextColor")); +objj_msgSend(_7,"setHighlightTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextShadowColor")); +objj_msgSend(_7,"orderFront:",_cd); +}else{ +objj_msgSend(_7,"orderOut:",_cd); +} +} +}),new objj_method(sel_getUid("setMenuBarTitle:"),function(_d0,_d1,_d2){ +with(_d0){ +_3=_d2; +objj_msgSend(_7,"setTitle:",_3); +} +}),new objj_method(sel_getUid("menuBarTitle"),function(_d3,_d4){ +with(_d3){ +return _3; +} +}),new objj_method(sel_getUid("setMenuBarIconImage:"),function(_d5,_d6,_d7){ +with(_d5){ +_CPMenuBarImage=_d7; +objj_msgSend(_7,"setIconImage:",_d7); +} +}),new objj_method(sel_getUid("menuBarIconImage"),function(_d8,_d9){ +with(_d8){ +return _CPMenuBarImage; +} +}),new objj_method(sel_getUid("setMenuBarAttributes:"),function(_da,_db,_dc){ +with(_da){ +if(_6==_dc){ +return; +} +_6=objj_msgSend(_dc,"copy"); +var _dd=objj_msgSend(_dc,"objectForKey:","CPMenuBarTextColor"),_de=objj_msgSend(_dc,"objectForKey:","CPMenuBarTitleColor"),_df=objj_msgSend(_dc,"objectForKey:","CPMenuBarTextShadowColor"),_e0=objj_msgSend(_dc,"objectForKey:","CPMenuBarTitleShadowColor"),_e1=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightColor"),_e2=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightTextColor"),_e3=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightTextShadowColor"); +if(!_dd&&_de){ +objj_msgSend(_6,"setObject:forKey:",_de,"CPMenuBarTextColor"); +}else{ +if(_dd&&!_de){ +objj_msgSend(_6,"setObject:forKey:",_dd,"CPMenuBarTitleColor"); +}else{ +if(!_dd&&!_de){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",0.051,0.2,0.275,1),"CPMenuBarTextColor"); +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",0.051,0.2,0.275,1),"CPMenuBarTitleColor"); +} +} +} +if(!_df&&_e0){ +objj_msgSend(_6,"setObject:forKey:",_e0,"CPMenuBarTextShadowColor"); +}else{ +if(_df&&!_e0){ +objj_msgSend(_6,"setObject:forKey:",_df,"CPMenuBarTitleShadowColor"); +}else{ +if(!_df&&!_e0){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarTextShadowColor"); +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarTitleShadowColor"); +} +} +} +if(!_e1){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",94/255,130/255,186/255,1),"CPMenuBarHighlightColor"); +} +if(!_e2){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarHighlightTextColor"); +} +if(!_e3){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"blackColor"),"CPMenuBarHighlightTextShadowColor"); +} +if(_7){ +objj_msgSend(_7,"setColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarBackgroundColor")); +objj_msgSend(_7,"setTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextColor")); +objj_msgSend(_7,"setTitleColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleColor")); +objj_msgSend(_7,"setTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextShadowColor")); +objj_msgSend(_7,"setTitleShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleShadowColor")); +objj_msgSend(_7,"setHighlightColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightColor")); +objj_msgSend(_7,"setHighlightTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextColor")); +objj_msgSend(_7,"setHighlightTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextShadowColor")); +} +} +}),new objj_method(sel_getUid("menuBarAttributes"),function(_e4,_e5){ +with(_e4){ +return _6; +} +}),new objj_method(sel_getUid("_setMenuBarIconImageAlphaValue:"),function(_e6,_e7,_e8){ +with(_e6){ +_5=_e8; +objj_msgSend(_7,"setIconImageAlphaValue:",_e8); +} +}),new objj_method(sel_getUid("menuBarHeight"),function(_e9,_ea){ +with(_e9){ +return _1; +} +}),new objj_method(sel_getUid("_constraintRectForView:"),function(_eb,_ec,_ed){ +with(_eb){ +if(objj_msgSend(CPPlatform,"isBrowser")){ +return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(_ed,"window"),"platformWindow"),"contentBounds"),5,5); +} +return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(_ed,"window"),"screen"),"visibleFrame"),5,5); +} +}),new objj_method(sel_getUid("trackingCallbackWithCallback:"),function(_ee,_ef,_f0){ +with(_ee){ +return function(_f1,_f2){ +objj_msgSend(_f1,"setMenu:",nil); +objj_msgSend(_f1,"orderOut:",_ee); +objj_msgSend(_CPMenuWindow,"poolMenuWindow:",_f1); +if(_f0){ +_f0(_f2); +} +objj_msgSend(_f2,"_performActionOfHighlightedItemChain"); +}; +} +}),new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:"),function(_f3,_f4,_f5,_f6,_f7){ +with(_f3){ +objj_msgSend(_f3,"popUpContextMenu:withEvent:forView:withFont:",_f5,_f6,_f7,nil); +} +}),new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:withFont:"),function(_f8,_f9,_fa,_fb,_fc,_fd){ +with(_f8){ +var _fe=objj_msgSend(_fa,"delegate"); +if(objj_msgSend(_fe,"respondsToSelector:",sel_getUid("menuWillOpen:"))){ +objj_msgSend(_fe,"menuWillOpen:",_fa); +} +if(!_fd){ +_fd=objj_msgSend(CPFont,"systemFontOfSize:",12); +} +var _ff=objj_msgSend(_fc,"window"),_100=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_fa,_fd); +objj_msgSend(_100,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +var _101=objj_msgSend(CPMenu,"_constraintRectForView:",_fc),_102=objj_msgSend(objj_msgSend(_fb,"window"),"convertBaseToGlobal:",objj_msgSend(_fb,"locationInWindow")); +objj_msgSend(_100,"setConstraintRect:",_101); +objj_msgSend(_100,"setFrameOrigin:",_102); +if(!objj_msgSend(_100,"hasMinimumNumberOfVisibleItems")){ +var _103=objj_msgSend(_100,"unconstrainedFrame"),_104=CGRectGetMinY(_103); +if(_104>=CGRectGetMaxY(_101)||objj_msgSend(_100,"canScrollDown")){ +_103.origin.y=MIN(CGRectGetMaxY(_101),_102.y)-CGRectGetHeight(_103); +}else{ +if(_1040){ +objj_msgSend(_b8,"encodeInt:forKey:",_indentationLevel,_b0); +} +if((_representedObject)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_representedObject),(_b1)); +} +if((_view)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_view),(_b2)); +} +} +})]); +p;31;_CPBorderlessBridgeWindowView.jt;2040;@STATIC;1.0;i;15;_CPWindowView.jt;2001; +objj_executeFile("_CPWindowView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(_CPWindowView,"_CPBorderlessBridgeWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_toolbarBackgroundView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_4,_5,_6){ +with(_4){ +} +}),new objj_method(sel_getUid("tile"),function(_7,_8){ +with(_7){ +objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPBorderlessBridgeWindowView").super_class},"tile"); +var _9=objj_msgSend(_7,"window"),_a=objj_msgSend(_7,"bounds"); +objj_msgSend(objj_msgSend(_9,"contentView"),"setFrame:",CGRectMake(0,objj_msgSend(_7,"toolbarMaxY"),CGRectGetWidth(_a),CGRectGetHeight(_a)-objj_msgSend(_7,"toolbarMaxY"))); +if(!objj_msgSend(objj_msgSend(_9,"toolbar"),"isVisible")){ +objj_msgSend(_toolbarBackgroundView,"removeFromSuperview"); +_toolbarBackgroundView=nil; +return; +} +if(!_toolbarBackgroundView){ +_toolbarBackgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_toolbarBackgroundView,"setBackgroundColor:",objj_msgSend(objj_msgSend(_7,"class"),"toolbarBackgroundColor")); +objj_msgSend(_toolbarBackgroundView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_7,"addSubview:positioned:relativeTo:",_toolbarBackgroundView,CPWindowBelow,nil); +} +var _b=CGRectMakeZero(),_c=objj_msgSend(_7,"toolbarOffset"); +_b.origin=CGPointMake(_c.width,_c.height); +_b.size=objj_msgSend(_toolbarView,"frame").size; +objj_msgSend(_toolbarBackgroundView,"setFrame:",_b); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("toolbarBackgroundColor"),function(_d,_e){ +with(_d){ +if(!_1){ +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPBorderlessBridgeWindowView,"class")),"pathForResource:","_CPToolbarView/_CPToolbarViewBackground.png"),CGSizeMake(1,59))); +} +return _1; +} +})]); +p;25;_CPBorderlessWindowView.jt;190;@STATIC;1.0;i;15;_CPWindowView.jt;152; +objj_executeFile("_CPWindowView.j",YES); +var _1=objj_allocateClassPair(_CPWindowView,"_CPBorderlessWindowView"),_2=_1.isa; +objj_registerClassPair(_1); +p;23;_CPDocModalWindowView.jt;1359;@STATIC;1.0;i;15;_CPWindowView.jt;1320; +objj_executeFile("_CPWindowView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(_CPWindowView,"_CPDocModalWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_bodyView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_4,_5,_6,_7){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("_CPDocModalWindowView").super_class},"initWithFrame:styleMask:",_6,_7); +if(_4){ +var _8=objj_msgSend(_4,"class"),_9=objj_msgSend(_4,"bounds"); +_bodyView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_9),CGRectGetHeight(_9))); +objj_msgSend(_bodyView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_bodyView,"setBackgroundColor:",objj_msgSend(_8,"bodyBackgroundColor")); +objj_msgSend(_bodyView,"setHitTests:",NO); +objj_msgSend(_4,"addSubview:",_bodyView); +} +return _4; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_a,_b,_c){ +with(_a){ +return _c; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_d,_e,_f){ +with(_d){ +return _f; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("bodyBackgroundColor"),function(_10,_11){ +with(_10){ +if(!_1){ +_1=objj_msgSend(CPColor,"colorWithWhite:alpha:",0.96,0.9); +} +return _1; +} +})]); +p;18;_CPHUDWindowView.jt;6961;@STATIC;1.0;t;6942; +var _1=nil,_2=nil; +var _3=26; +var _4=objj_allocateClassPair(_CPWindowView,"_CPHUDWindowView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_toolbarView"),new objj_ivar("_titleField"),new objj_ivar("_closeButton")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(objj_msgSend(_6,"class"),"contentRectForFrameRect:",_8); +if(objj_msgSend(objj_msgSend(objj_msgSend(_6,"window"),"toolbar"),"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_6,"toolbarView"),"frame")); +_9.origin.y+=toolbarHeight; +_9.size.height-=toolbarHeight; +} +return _9; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_a,_b,_c){ +with(_a){ +var _d=objj_msgSend(objj_msgSend(_a,"class"),"frameRectForContentRect:",_c); +if(objj_msgSend(objj_msgSend(objj_msgSend(_a,"window"),"toolbar"),"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_a,"toolbarView"),"frame")); +_d.origin.y-=toolbarHeight; +_d.size.height+=toolbarHeight; +} +return _d; +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPHUDWindowView").super_class},"initWithFrame:styleMask:",_10,_11); +if(_e){ +var _12=objj_msgSend(_e,"bounds"); +objj_msgSend(_e,"setBackgroundColor:",_1); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setHitTests:",NO); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_titleField,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_titleField,"setTextShadowColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setStringValue:","Untitled"); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setStringValue:",""); +objj_msgSend(_titleField,"setFrame:",CGRectMake(20,3,CGRectGetWidth(objj_msgSend(_e,"bounds"))-40,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +objj_msgSend(_e,"addSubview:",_titleField); +if(_styleMask&CPClosableWindowMask){ +var _13=objj_msgSend(_CPHUDWindowViewCloseImage,"size"); +_closeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(8,5,_13.width,_13.height)); +objj_msgSend(_closeButton,"setBordered:",NO); +objj_msgSend(_closeButton,"setImage:",_CPHUDWindowViewCloseImage); +objj_msgSend(_closeButton,"setAlternateImage:",_CPHUDWindowViewCloseActiveImage); +objj_msgSend(_e,"addSubview:",_closeButton); +} +objj_msgSend(_e,"setResizeIndicatorOffset:",CGSizeMake(5,5)); +} +return _e; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_14,_15){ +with(_14){ +objj_msgSend(_closeButton,"setTarget:",objj_msgSend(_14,"window")); +objj_msgSend(_closeButton,"setAction:",sel_getUid("performClose:")); +} +}),new objj_method(sel_getUid("setTitle:"),function(_16,_17,_18){ +with(_16){ +objj_msgSend(_titleField,"setStringValue:",_18); +} +}),new objj_method(sel_getUid("toolbarView"),function(_19,_1a){ +with(_19){ +return _toolbarView; +} +}),new objj_method(sel_getUid("toolbarLabelColor"),function(_1b,_1c){ +with(_1b){ +return objj_msgSend(CPColor,"whiteColor"); +} +}),new objj_method(sel_getUid("toolbarLabelShadowColor"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_1f,_20){ +with(_1f){ +return CGSizeMake(0,_3); +} +}),new objj_method(sel_getUid("tile"),function(_21,_22){ +with(_21){ +objj_msgSendSuper({receiver:_21,super_class:objj_getClass("_CPHUDWindowView").super_class},"tile"); +var _23=objj_msgSend(_21,"window"),_24=objj_msgSend(_21,"bounds"),_25=CGRectGetWidth(_24); +objj_msgSend(_titleField,"setFrame:",CGRectMake(20,3,_25-40,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +var _26=objj_msgSend(_21,"toolbarMaxY"); +objj_msgSend(objj_msgSend(_23,"contentView"),"setFrameOrigin:",CGPointMake(0,_26,_25,CGRectGetHeight(_24)-_26)); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("initialize"),function(_27,_28){ +with(_27){ +if(_27!=objj_msgSend(_CPHUDWindowView,"class")){ +return; +} +var _29=objj_msgSend(CPBundle,"bundleForClass:",_27); +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground0.png"),CPSizeMake(7,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground1.png"),CPSizeMake(1,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground2.png"),CPSizeMake(7,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground3.png"),CPSizeMake(7,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground4.png"),CPSizeMake(2,2)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground5.png"),CPSizeMake(7,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground6.png"),CPSizeMake(7,3)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground7.png"),CPSizeMake(1,3)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground8.png"),CPSizeMake(7,3))])); +_CPHUDWindowViewCloseImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","HUDTheme/WindowClose.png"),CPSizeMake(18,18)); +_CPHUDWindowViewCloseActiveImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","HUDTheme/WindowCloseActive.png"),CPSizeMake(18,18)); +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_2a,_2b,_2c){ +with(_2a){ +var _2d=CGRectMakeCopy(_2c),_2e=_3; +_2d.origin.y+=_2e; +_2d.size.height-=_2e; +return _2d; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_2f,_30,_31){ +with(_2f){ +var _32=CGRectMakeCopy(_31),_33=_3; +_32.origin.y-=_33; +_32.size.height+=_33; +return _32; +} +})]); +p;23;_CPStandardWindowView.jt;11862;@STATIC;1.0;i;15;_CPWindowView.jt;11822; +objj_executeFile("_CPWindowView.j",YES); +var _1=41; +var _2=nil,_3=nil; +var _4=objj_allocateClassPair(CPView,"_CPTexturedWindowHeadView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_gradientView"),new objj_ivar("_solidView"),new objj_ivar("_dividerView")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithFrame:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("_CPTexturedWindowHeadView").super_class},"initWithFrame:",_8); +if(_6){ +var _9=objj_msgSend(_6,"class"),_a=objj_msgSend(_6,"bounds"); +_gradientView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_a),_1)); +objj_msgSend(_gradientView,"setBackgroundColor:",objj_msgSend(_9,"gradientColor")); +objj_msgSend(_6,"addSubview:",_gradientView); +_solidView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,_1,CGRectGetWidth(_a),CGRectGetHeight(_a)-_1)); +objj_msgSend(_solidView,"setBackgroundColor:",objj_msgSend(_9,"solidColor")); +objj_msgSend(_6,"addSubview:",_solidView); +} +return _6; +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_b,_c,_d){ +with(_b){ +var _e=objj_msgSend(_b,"bounds"); +objj_msgSend(_gradientView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_e),_1)); +objj_msgSend(_solidView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_e),CGRectGetHeight(_e)-_1)); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("gradientColor"),function(_f,_10){ +with(_f){ +if(!_2){ +var _11=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPWindowView,"class")); +_2=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop0.png"),CGSizeMake(6,41)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop1.png"),CGSizeMake(1,41)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop2.png"),CGSizeMake(6,41))],NO)); +} +return _2; +} +}),new objj_method(sel_getUid("solidColor"),function(_12,_13){ +with(_12){ +if(!_3){ +_3=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",195/255,195/255,195/255,1); +} +return _3; +} +})]); +var _14=nil,_15=nil,_16=nil,_17=nil,_18=nil,_19=nil,_1a=nil,_1b=nil,_1c=nil; +var _1d=41; +STANDARD_TITLEBAR_HEIGHT=25; +var _4=objj_allocateClassPair(_CPWindowView,"_CPStandardWindowView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_headView"),new objj_ivar("_dividerView"),new objj_ivar("_bodyView"),new objj_ivar("_toolbarView"),new objj_ivar("_titleField"),new objj_ivar("_closeButton"),new objj_ivar("_minimizeButton"),new objj_ivar("_isDocumentEdited")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_1e,_1f,_20){ +with(_1e){ +var _21=objj_msgSend(objj_msgSend(_1e,"class"),"contentRectForFrameRect:",_20),_22=objj_msgSend(objj_msgSend(_1e,"window"),"toolbar"); +if(objj_msgSend(_22,"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_22,"_toolbarView"),"frame")); +_21.origin.y+=toolbarHeight; +_21.size.height-=toolbarHeight; +} +return _21; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(objj_msgSend(_23,"class"),"frameRectForContentRect:",_25),_27=objj_msgSend(objj_msgSend(_23,"window"),"toolbar"); +if(objj_msgSend(_27,"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_27,"_toolbarView"),"frame")); +_26.origin.y-=toolbarHeight; +_26.size.height+=toolbarHeight; +} +return _26; +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_28,_29,_2a,_2b){ +with(_28){ +_28=objj_msgSendSuper({receiver:_28,super_class:objj_getClass("_CPStandardWindowView").super_class},"initWithFrame:styleMask:",_2a,_2b); +if(_28){ +var _2c=objj_msgSend(_28,"class"),_2d=objj_msgSend(_28,"bounds"); +_headView=objj_msgSend(objj_msgSend(_CPTexturedWindowHeadView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_2d),objj_msgSend(objj_msgSend(_28,"class"),"titleBarHeight"))); +objj_msgSend(_headView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_headView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_headView); +_dividerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,CGRectGetMaxY(objj_msgSend(_headView,"frame")),CGRectGetWidth(_2d),1)); +objj_msgSend(_dividerView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_dividerView,"setBackgroundColor:",objj_msgSend(_2c,"dividerBackgroundColor")); +objj_msgSend(_dividerView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_dividerView); +var y=CGRectGetMaxY(objj_msgSend(_dividerView,"frame")); +_bodyView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,y,CGRectGetWidth(_2d),CGRectGetHeight(_2d)-y)); +objj_msgSend(_bodyView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_bodyView,"setBackgroundColor:",objj_msgSend(_2c,"bodyBackgroundColor")); +objj_msgSend(_bodyView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_bodyView); +objj_msgSend(_28,"setResizeIndicatorOffset:",CGSizeMake(2,2)); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",12)); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setTextShadowColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_titleField,"setStringValue:","Untitled"); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setStringValue:",""); +objj_msgSend(_28,"addSubview:",_titleField); +if(_styleMask&CPClosableWindowMask){ +if(!_17){ +var _2e=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_17=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButton.png"),CGSizeMake(16,16)); +_18=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png"),CGSizeMake(16,16)); +_19=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png"),CGSizeMake(16,16)); +_1a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png"),CGSizeMake(16,16)); +} +_closeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(8,7,16,16)); +objj_msgSend(_closeButton,"setBordered:",NO); +objj_msgSend(_28,"_updateCloseButton"); +objj_msgSend(_28,"addSubview:",_closeButton); +} +if(_styleMask&CPMiniaturizableWindowMask&&!objj_msgSend(CPPlatform,"isBrowser")){ +if(!_1b){ +var _2e=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_1b=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardMinimizeButton.png"),CGSizeMake(16,16)); +_1c=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png"),CGSizeMake(16,16)); +} +_minimizeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(27,7,16,16)); +objj_msgSend(_minimizeButton,"setBordered:",NO); +objj_msgSend(_minimizeButton,"setImage:",_1b); +objj_msgSend(_minimizeButton,"setAlternateImage:",_1c); +objj_msgSend(_28,"addSubview:",_minimizeButton); +} +objj_msgSend(_28,"tile"); +} +return _28; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_2f,_30){ +with(_2f){ +objj_msgSend(_closeButton,"setTarget:",objj_msgSend(_2f,"window")); +objj_msgSend(_closeButton,"setAction:",sel_getUid("performClose:")); +objj_msgSend(_minimizeButton,"setTarget:",objj_msgSend(_2f,"window")); +objj_msgSend(_minimizeButton,"setAction:",sel_getUid("performMiniaturize:")); +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_31,_32){ +with(_31){ +return CGSizeMake(0,objj_msgSend(objj_msgSend(_31,"class"),"titleBarHeight")); +} +}),new objj_method(sel_getUid("tile"),function(_33,_34){ +with(_33){ +objj_msgSendSuper({receiver:_33,super_class:objj_getClass("_CPStandardWindowView").super_class},"tile"); +var _35=objj_msgSend(_33,"window"),_36=objj_msgSend(_33,"bounds"),_37=CGRectGetWidth(_36); +objj_msgSend(_headView,"setFrameSize:",CGSizeMake(_37,objj_msgSend(_33,"toolbarMaxY"))); +objj_msgSend(_dividerView,"setFrame:",CGRectMake(0,CGRectGetMaxY(objj_msgSend(_headView,"frame")),_37,1)); +var _38=CGRectGetMaxY(objj_msgSend(_dividerView,"frame")); +objj_msgSend(_bodyView,"setFrame:",CGRectMake(0,_38,_37,CGRectGetHeight(_36)-_38)); +var _39=8; +if(_closeButton){ +_39+=19; +} +if(_minimizeButton){ +_39+=19; +} +objj_msgSend(_titleField,"setFrame:",CGRectMake(_39,5,_37-_39*2,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +objj_msgSend(objj_msgSend(_35,"contentView"),"setFrameOrigin:",CGPointMake(0,CGRectGetMaxY(objj_msgSend(_dividerView,"frame")))); +} +}),new objj_method(sel_getUid("_updateCloseButton"),function(_3a,_3b){ +with(_3a){ +if(_isDocumentEdited){ +objj_msgSend(_closeButton,"setImage:",_19); +objj_msgSend(_closeButton,"setAlternateImage:",_1a); +}else{ +objj_msgSend(_closeButton,"setImage:",_17); +objj_msgSend(_closeButton,"setAlternateImage:",_18); +} +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_3c,_3d,_3e){ +with(_3c){ +_isDocumentEdited=_3e; +objj_msgSend(_3c,"_updateCloseButton"); +} +}),new objj_method(sel_getUid("setTitle:"),function(_3f,_40,_41){ +with(_3f){ +objj_msgSend(_titleField,"setStringValue:",_41); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_42,_43,_44){ +with(_42){ +if(CGRectContainsPoint(objj_msgSend(_headView,"frame"),objj_msgSend(_42,"convertPoint:fromView:",objj_msgSend(_44,"locationInWindow"),nil))){ +return objj_msgSend(_42,"trackMoveWithEvent:",_44); +} +objj_msgSendSuper({receiver:_42,super_class:objj_getClass("_CPStandardWindowView").super_class},"mouseDown:",_44); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("bodyBackgroundColor"),function(_45,_46){ +with(_45){ +if(!_14){ +_14=objj_msgSend(CPColor,"colorWithWhite:alpha:",0.96,1); +} +return _14; +} +}),new objj_method(sel_getUid("dividerBackgroundColor"),function(_47,_48){ +with(_47){ +if(!_15){ +_15=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",125/255,125/255,125/255,1); +} +return _15; +} +}),new objj_method(sel_getUid("titleColor"),function(_49,_4a){ +with(_49){ +if(!_16){ +_16=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",44/255,44/255,44/255,1); +} +return _16; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_4b,_4c,_4d){ +with(_4b){ +var _4e=CGRectMakeCopy(_4d),_4f=objj_msgSend(_4b,"titleBarHeight")+1; +_4e.origin.y+=_4f; +_4e.size.height-=_4f; +return _4e; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_50,_51,_52){ +with(_50){ +var _53=CGRectMakeCopy(_52),_54=objj_msgSend(_50,"titleBarHeight")+1; +_53.origin.y-=_54; +_53.size.height+=_54; +return _53; +} +}),new objj_method(sel_getUid("titleBarHeight"),function(_55,_56){ +with(_55){ +return STANDARD_TITLEBAR_HEIGHT; +} +})]); +p;15;_CPWindowView.jt;9275;@STATIC;1.0;i;8;CPView.ji;13;CPImageView.jt;9226; +objj_executeFile("CPView.j",YES); +objj_executeFile("CPImageView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPView,"_CPWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_styleMask"),new objj_ivar("_resizeIndicator"),new objj_ivar("_resizeIndicatorOffset"),new objj_ivar("_toolbarView"),new objj_ivar("_toolbarOffset"),new objj_ivar("_resizeFrame"),new objj_ivar("_mouseDraggedPoint"),new objj_ivar("_cachedScreenFrame")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_4,_5,_6){ +with(_4){ +return objj_msgSend(objj_msgSend(_4,"class"),"contentRectForFrameRect:",_6); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(objj_msgSend(_7,"class"),"frameRectForContentRect:",_9); +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_a,_b,_c,_d){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("_CPWindowView").super_class},"initWithFrame:",_c); +if(_a){ +_styleMask=_d; +_resizeIndicatorOffset=CGSizeMakeZero(); +_toolbarOffset=CGSizeMakeZero(); +} +return _a; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_e,_f,_10){ +with(_e){ +} +}),new objj_method(sel_getUid("setTitle:"),function(_11,_12,_13){ +with(_11){ +} +}),new objj_method(sel_getUid("acceptsFirstMouse:"),function(_14,_15,_16){ +with(_14){ +return YES; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_17,_18,_19){ +with(_17){ +var _1a=objj_msgSend(_17,"window"); +if((_styleMask&CPResizableWindowMask)&&_resizeIndicator){ +var _1b=objj_msgSend(_resizeIndicator,"frame"); +if(CGRectContainsPoint(_1b,objj_msgSend(_17,"convertPoint:fromView:",objj_msgSend(_19,"locationInWindow"),nil))){ +return objj_msgSend(_17,"trackResizeWithEvent:",_19); +} +} +if(objj_msgSend(_1a,"isMovableByWindowBackground")){ +objj_msgSend(_17,"trackMoveWithEvent:",_19); +}else{ +objj_msgSendSuper({receiver:_17,super_class:objj_getClass("_CPWindowView").super_class},"mouseDown:",_19); +} +} +}),new objj_method(sel_getUid("trackResizeWithEvent:"),function(_1c,_1d,_1e){ +with(_1c){ +var _1f=objj_msgSend(_1e,"locationInWindow"),_20=objj_msgSend(_1e,"type"); +if(_20===CPLeftMouseUp){ +return; +} +var _21=objj_msgSend(_1c,"window"); +if(_20===CPLeftMouseDown){ +var _22=objj_msgSend(_21,"frame"); +_resizeFrame=CGRectMake(_1f.x,_1f.y,CGRectGetWidth(_22),CGRectGetHeight(_22)); +}else{ +if(_20===CPLeftMouseDragged){ +var _23=CGSizeMake(CGRectGetWidth(_resizeFrame)+_1f.x-CGRectGetMinX(_resizeFrame),CGRectGetHeight(_resizeFrame)+_1f.y-CGRectGetMinY(_resizeFrame)); +if(_21._isSheet&&_21._parentView&&(_21._frame.size.width!==_23.width)){ +objj_msgSend(_21._parentView,"_setAttachedSheetFrameOrigin"); +} +objj_msgSend(_21,"setFrameSize:",_23); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_1c,sel_getUid("trackResizeWithEvent:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("_pointWithinScreenFrame:"),function(_24,_25,_26){ +with(_24){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +return _26; +} +var _27=_cachedScreenFrame; +if(!_27){ +_27=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"visibleFrame"); +} +var _28=0; +if(objj_msgSend(CPMenu,"menuBarVisible")){ +_28=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"menuBarHeight"); +} +var _29=CGPointMake(0,0); +_29.x=MIN(MAX(_26.x,-_frame.size.width+4),CGRectGetMaxX(_27)-4); +_29.y=MIN(MAX(_26.y,_28),CGRectGetMaxY(_27)-8); +return _29; +} +}),new objj_method(sel_getUid("trackMoveWithEvent:"),function(_2a,_2b,_2c){ +with(_2a){ +var _2d=objj_msgSend(_2c,"type"); +if(_2d===CPLeftMouseUp){ +_cachedScreenFrame=nil; +return; +}else{ +if(_2d===CPLeftMouseDown){ +_mouseDraggedPoint=objj_msgSend(objj_msgSend(_2a,"window"),"convertBaseToGlobal:",objj_msgSend(_2c,"locationInWindow")); +_cachedScreenFrame=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"visibleFrame"); +}else{ +if(_2d===CPLeftMouseDragged){ +var _2e=objj_msgSend(_2a,"window"),_2f=objj_msgSend(_2e,"frame"),_30=objj_msgSend(_2e,"convertBaseToGlobal:",objj_msgSend(_2c,"locationInWindow")),_31=objj_msgSend(_2a,"_pointWithinScreenFrame:",CGPointMake((_2f.origin.x)+(_30.x-_mouseDraggedPoint.x),(_2f.origin.y)+(_30.y-_mouseDraggedPoint.y))); +objj_msgSend(_2e,"setFrameOrigin:",_31); +_mouseDraggedPoint=objj_msgSend(_2a,"_pointWithinScreenFrame:",_30); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_2a,sel_getUid("trackMoveWithEvent:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_32,_33,_34){ +with(_32){ +if(_34){ +var _35=objj_msgSend(_1,"size"),_36=objj_msgSend(_32,"frame").size; +_resizeIndicator=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(_36.width-_35.width-_resizeIndicatorOffset.width,_36.height-_35.height-_resizeIndicatorOffset.height,_35.width,_35.height)); +objj_msgSend(_resizeIndicator,"setImage:",_1); +objj_msgSend(_resizeIndicator,"setAutoresizingMask:",CPViewMinXMargin|CPViewMinYMargin); +objj_msgSend(_32,"addSubview:",_resizeIndicator); +}else{ +objj_msgSend(_resizeIndicator,"removeFromSuperview"); +_resizeIndicator=nil; +} +} +}),new objj_method(sel_getUid("showsResizeIndicator"),function(_37,_38){ +with(_37){ +return _resizeIndicator!==nil; +} +}),new objj_method(sel_getUid("setResizeIndicatorOffset:"),function(_39,_3a,_3b){ +with(_39){ +if(CGSizeEqualToSize(_resizeIndicatorOffset,_3b)){ +return; +} +_resizeIndicatorOffset=_3b; +if(!_resizeIndicator){ +return; +} +var _3c=objj_msgSend(_resizeIndicator,"frame").size,_3d=objj_msgSend(_39,"frame").size; +objj_msgSend(_resizeIndicator,"setFrameOrigin:",CGPointMake(_3d.width-_3c.width-_3b.width,_3d.height-_3c.height-_3b.height)); +} +}),new objj_method(sel_getUid("resizeIndicatorOffset"),function(_3e,_3f){ +with(_3e){ +return _resizeIndicatorOffset; +} +}),new objj_method(sel_getUid("windowDidChangeDocumentEdited"),function(_40,_41){ +with(_40){ +} +}),new objj_method(sel_getUid("windowDidChangeDocumentSaving"),function(_42,_43){ +with(_42){ +} +}),new objj_method(sel_getUid("showsToolbar"),function(_44,_45){ +with(_44){ +return YES; +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_46,_47){ +with(_46){ +return _toolbarOffset; +} +}),new objj_method(sel_getUid("toolbarLabelColor"),function(_48,_49){ +with(_48){ +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("toolbarMaxY"),function(_4a,_4b){ +with(_4a){ +if(!_toolbarView||objj_msgSend(_toolbarView,"isHidden")){ +return objj_msgSend(_4a,"toolbarOffset").height; +} +return CGRectGetMaxY(objj_msgSend(_toolbarView,"frame")); +} +}),new objj_method(sel_getUid("toolbarView"),function(_4c,_4d){ +with(_4c){ +return _toolbarView; +} +}),new objj_method(sel_getUid("tile"),function(_4e,_4f){ +with(_4e){ +var _50=objj_msgSend(_4e,"window"),_51=objj_msgSend(_4e,"bounds"),_52=CGRectGetWidth(_51); +if(objj_msgSend(objj_msgSend(_50,"toolbar"),"isVisible")){ +var _53=objj_msgSend(_4e,"toolbarView"),_54=objj_msgSend(_4e,"toolbarOffset"); +objj_msgSend(_53,"setFrame:",CGRectMake(_54.width,_54.height,_52,CGRectGetHeight(objj_msgSend(_53,"frame")))); +} +if(objj_msgSend(_4e,"showsResizeIndicator")){ +var _55=objj_msgSend(_resizeIndicator,"frame").size,_56=objj_msgSend(_4e,"bounds").size; +objj_msgSend(_resizeIndicator,"setFrameOrigin:",CGPointMake(_56.width-_55.width-_resizeIndicatorOffset.width,_56.height-_55.height-_resizeIndicatorOffset.height)); +} +} +}),new objj_method(sel_getUid("noteToolbarChanged"),function(_57,_58){ +with(_57){ +var _59=objj_msgSend(_57,"window"),_5a=objj_msgSend(_59,"toolbar"),_5b=objj_msgSend(_5a,"_toolbarView"); +if(_toolbarView!==_5b){ +objj_msgSend(_toolbarView,"removeFromSuperview"); +if(_5b){ +objj_msgSend(_5b,"removeFromSuperview"); +objj_msgSend(_5b,"FIXME_setIsHUD:",_styleMask&CPHUDBackgroundWindowMask); +objj_msgSend(_57,"addSubview:",_5b); +} +_toolbarView=_5b; +} +objj_msgSend(_5b,"setHidden:",!objj_msgSend(_57,"showsToolbar")||!objj_msgSend(_5a,"isVisible")); +if(_59){ +var _5c=objj_msgSend(_57,"convertRect:toView:",objj_msgSend(objj_msgSend(_59,"contentView"),"frame"),nil); +_5c.origin=objj_msgSend(_59,"convertBaseToGlobal:",_5c.origin); +objj_msgSend(_57,"setAutoresizesSubviews:",NO); +objj_msgSend(_59,"setFrame:",objj_msgSend(_59,"frameRectForContentRect:",_5c)); +objj_msgSend(_57,"setAutoresizesSubviews:",YES); +} +objj_msgSend(_57,"tile"); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_5d,_5e,_5f){ +with(_5d){ +if(!_resizeIndicator||_5f===_resizeIndicator){ +return; +} +objj_msgSend(_5d,"addSubview:",_resizeIndicator); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_60,_61){ +with(_60){ +if(_60!=objj_msgSend(_CPWindowView,"class")){ +return; +} +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")),"pathForResource:","_CPWindowView/_CPWindowViewResizeIndicator.png"),CGSizeMake(12,12)); +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_62,_63,_64){ +with(_62){ +return CGRectMakeCopy(_64); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_65,_66,_67){ +with(_65){ +return CGRectMakeCopy(_67); +} +})]); +p;10;CPWindow.jt;60138;@STATIC;1.0;I;25;Foundation/CPCountedSet.jI;33;Foundation/CPNotificationCenter.jI;26;Foundation/CPUndoManager.ji;12;CGGeometry.ji;13;CPAnimation.ji;13;CPResponder.ji;10;CPScreen.ji;18;CPPlatformWindow.ji;15;_CPWindowView.ji;23;_CPStandardWindowView.ji;23;_CPDocModalWindowView.ji;18;_CPHUDWindowView.ji;25;_CPBorderlessWindowView.ji;31;_CPBorderlessBridgeWindowView.ji;14;CPDragServer.ji;8;CPView.jt;59732; +objj_executeFile("Foundation/CPCountedSet.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPUndoManager.j",NO); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPAnimation.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPScreen.j",YES); +objj_executeFile("CPPlatformWindow.j",YES); +CPBorderlessWindowMask=0; +CPTitledWindowMask=1<<0; +CPClosableWindowMask=1<<1; +CPMiniaturizableWindowMask=1<<2; +CPResizableWindowMask=1<<3; +CPTexturedBackgroundWindowMask=1<<8; +CPBorderlessBridgeWindowMask=1<<20; +CPHUDBackgroundWindowMask=1<<21; +CPWindowNotSizable=0; +CPWindowMinXMargin=1; +CPWindowWidthSizable=2; +CPWindowMaxXMargin=4; +CPWindowMinYMargin=8; +CPWindowHeightSizable=16; +CPWindowMaxYMargin=32; +CPBackgroundWindowLevel=-1; +CPNormalWindowLevel=0; +CPFloatingWindowLevel=3; +CPSubmenuWindowLevel=3; +CPTornOffMenuWindowLevel=3; +CPMainMenuWindowLevel=24; +CPStatusWindowLevel=25; +CPModalPanelWindowLevel=8; +CPPopUpMenuWindowLevel=101; +CPDraggingWindowLevel=500; +CPScreenSaverWindowLevel=1000; +CPWindowOut=0; +CPWindowAbove=1; +CPWindowBelow=2; +CPWindowWillCloseNotification="CPWindowWillCloseNotification"; +CPWindowDidBecomeMainNotification="CPWindowDidBecomeMainNotification"; +CPWindowDidResignMainNotification="CPWindowDidResignMainNotification"; +CPWindowDidBecomeKeyNotification="CPWindowDidBecomeKeyNotification"; +CPWindowDidResignKeyNotification="CPWindowDidResignKeyNotification"; +CPWindowDidResizeNotification="CPWindowDidResizeNotification"; +CPWindowDidMoveNotification="CPWindowDidMoveNotification"; +CPWindowWillBeginSheetNotification="CPWindowWillBeginSheetNotification"; +CPWindowDidEndSheetNotification="CPWindowDidEndSheetNotification"; +CPWindowDidMiniaturizeNotification="CPWindowDidMiniaturizeNotification"; +CPWindowWillMiniaturizeNotification="CPWindowWillMiniaturizeNotification"; +CPWindowDidDeminiaturizeNotification="CPWindowDidDeminiaturizeNotification"; +CPWindowShadowStyleStandard=0; +CPWindowShadowStyleMenu=1; +CPWindowShadowStylePanel=2; +var _1=20,_2=19,_3=10,_4=10,_5=5,_6=nil; +var _7=nil,_8=nil; +var _9=0.2; +var _a=objj_allocateClassPair(CPResponder,"CPWindow"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_platformWindow"),new objj_ivar("_windowNumber"),new objj_ivar("_styleMask"),new objj_ivar("_frame"),new objj_ivar("_level"),new objj_ivar("_isVisible"),new objj_ivar("_isMiniaturized"),new objj_ivar("_isAnimating"),new objj_ivar("_hasShadow"),new objj_ivar("_isMovableByWindowBackground"),new objj_ivar("_shadowStyle"),new objj_ivar("_showsResizeIndicator"),new objj_ivar("_isDocumentEdited"),new objj_ivar("_isDocumentSaving"),new objj_ivar("_shadowView"),new objj_ivar("_windowView"),new objj_ivar("_contentView"),new objj_ivar("_toolbarView"),new objj_ivar("_mouseEnteredStack"),new objj_ivar("_leftMouseDownView"),new objj_ivar("_rightMouseDownView"),new objj_ivar("_toolbar"),new objj_ivar("_firstResponder"),new objj_ivar("_initialFirstResponder"),new objj_ivar("_delegate"),new objj_ivar("_title"),new objj_ivar("_acceptsMouseMovedEvents"),new objj_ivar("_ignoresMouseEvents"),new objj_ivar("_windowController"),new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_undoManager"),new objj_ivar("_representedURL"),new objj_ivar("_registeredDraggedTypes"),new objj_ivar("_registeredDraggedTypesArray"),new objj_ivar("_inclusiveRegisteredDraggedTypes"),new objj_ivar("_defaultButton"),new objj_ivar("_defaultButtonEnabled"),new objj_ivar("_autorecalculatesKeyViewLoop"),new objj_ivar("_keyViewLoopIsDirty"),new objj_ivar("_sharesChromeWithPlatformWindow"),new objj_ivar("_autoresizingMask"),new objj_ivar("_delegateRespondsToWindowWillReturnUndoManagerSelector"),new objj_ivar("_isFullPlatformWindow"),new objj_ivar("_fullPlatformWindowSession"),new objj_ivar("_sheetContext"),new objj_ivar("_parentView"),new objj_ivar("_isSheet"),new objj_ivar("_frameAnimation")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("init"),function(_c,_d){ +with(_c){ +return objj_msgSend(_c,"initWithContentRect:styleMask:",{origin:{x:0,y:0},size:{width:0,height:0}},CPTitledWindowMask); +} +}),new objj_method(sel_getUid("initWithContentRect:styleMask:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPWindow").super_class},"init"); +if(_e){ +var _12=objj_msgSend(objj_msgSend(_e,"class"),"_windowViewClassForStyleMask:",_11); +_frame=objj_msgSend(_12,"frameRectForContentRect:",_10); +objj_msgSend(_e,"_setSharesChromeWithPlatformWindow:",!objj_msgSend(CPPlatform,"isBrowser")); +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_e,"setPlatformWindow:",objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")); +}else{ +if((_11&CPBorderlessBridgeWindowMask)&&_10.size.width===0&&_10.size.height===0){ +var _13=objj_msgSend(objj_msgSend(objj_msgSend(CPScreen,"alloc"),"init"),"visibleFrame"); +_frame.size.height=MIN(768,_13.size.height); +_frame.size.width=MIN(1024,_13.size.width); +_frame.origin.x=(_13.size.width-_frame.size.width)/2; +_frame.origin.y=(_13.size.height-_frame.size.height)/2; +} +objj_msgSend(_e,"setPlatformWindow:",objj_msgSend(objj_msgSend(CPPlatformWindow,"alloc"),"initWithContentRect:",_frame)); +objj_msgSend(_e,"platformWindow")._only=_e; +} +_isFullPlatformWindow=NO; +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_isSheet=NO; +_windowNumber=objj_msgSend(CPApp._windows,"count"); +CPApp._windows[_windowNumber]=_e; +_styleMask=_11; +objj_msgSend(_e,"setLevel:",CPNormalWindowLevel); +_minSize=CGSizeMake(0,0); +_maxSize=CGSizeMake(1000000,1000000); +_windowView=objj_msgSend(objj_msgSend(_12,"alloc"),"initWithFrame:styleMask:",CGRectMake(0,0,CGRectGetWidth(_frame),CGRectGetHeight(_frame)),_11); +objj_msgSend(_windowView,"_setWindow:",_e); +objj_msgSend(_windowView,"setNextResponder:",_e); +objj_msgSend(_e,"setMovableByWindowBackground:",_11&CPHUDBackgroundWindowMask); +objj_msgSend(_e,"setContentView:",objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero())); +_firstResponder=_e; +objj_msgSend(_e,"setNextResponder:",CPApp); +objj_msgSend(_e,"setHasShadow:",_11!==CPBorderlessWindowMask); +if(_11&CPBorderlessBridgeWindowMask){ +objj_msgSend(_e,"setFullPlatformWindow:",YES); +} +_defaultButtonEnabled=YES; +_keyViewLoopIsDirty=YES; +objj_msgSend(_e,"setShowsResizeIndicator:",_styleMask&CPResizableWindowMask); +} +return _e; +} +}),new objj_method(sel_getUid("platformWindow"),function(_14,_15){ +with(_14){ +return _platformWindow; +} +}),new objj_method(sel_getUid("setPlatformWindow:"),function(_16,_17,_18){ +with(_16){ +_platformWindow=_18; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_19,_1a){ +with(_19){ +_keyViewLoopIsDirty=!objj_msgSend(_19,"_hasKeyViewLoop"); +} +}),new objj_method(sel_getUid("_setWindowView:"),function(_1b,_1c,_1d){ +with(_1b){ +if(_windowView===_1d){ +return; +} +var _1e=_windowView; +_windowView=_1d; +if(_1e){ +objj_msgSend(_1e,"_setWindow:",nil); +objj_msgSend(_1e,"noteToolbarChanged"); +} +if(_windowView){ +var _1f=objj_msgSend(_contentView,"convertRect:toView:",objj_msgSend(_contentView,"bounds"),nil); +_1f.origin=objj_msgSend(_1b,"convertBaseToGlobal:",_1f.origin); +objj_msgSend(_windowView,"_setWindow:",_1b); +objj_msgSend(_windowView,"setNextResponder:",_1b); +objj_msgSend(_windowView,"addSubview:",_contentView); +objj_msgSend(_windowView,"setTitle:",_title); +objj_msgSend(_windowView,"noteToolbarChanged"); +objj_msgSend(_windowView,"setShowsResizeIndicator:",objj_msgSend(_1b,"showsResizeIndicator")); +objj_msgSend(_1b,"setFrame:",objj_msgSend(_1b,"frameRectForContentRect:",_1f)); +} +} +}),new objj_method(sel_getUid("setFullPlatformWindow:"),function(_20,_21,_22){ +with(_20){ +if(!objj_msgSend(_platformWindow,"supportsFullPlatformWindows")){ +return; +} +_22=!!_22; +if(_isFullPlatformWindow===_22){ +return; +} +_isFullPlatformWindow=_22; +if(_isFullPlatformWindow){ +_fullPlatformWindowSession=_CPWindowFullPlatformWindowSessionMake(_windowView,objj_msgSend(_20,"contentRectForFrameRect:",objj_msgSend(_20,"frame")),objj_msgSend(_20,"hasShadow"),objj_msgSend(_20,"level")); +var _23=objj_msgSend(objj_msgSend(_20,"class"),"_windowViewClassForFullPlatformWindowStyleMask:",_styleMask),_24=objj_msgSend(objj_msgSend(_23,"alloc"),"initWithFrame:styleMask:",CGRectMakeZero(),_styleMask); +objj_msgSend(_20,"_setWindowView:",_24); +objj_msgSend(_20,"setLevel:",CPBackgroundWindowLevel); +objj_msgSend(_20,"setHasShadow:",NO); +objj_msgSend(_20,"setAutoresizingMask:",CPWindowWidthSizable|CPWindowHeightSizable); +objj_msgSend(_20,"setFrame:",objj_msgSend(_platformWindow,"visibleFrame")); +}else{ +var _24=_fullPlatformWindowSession.windowView; +objj_msgSend(_20,"_setWindowView:",_24); +objj_msgSend(_20,"setLevel:",_fullPlatformWindowSession.level); +objj_msgSend(_20,"setHasShadow:",_fullPlatformWindowSession.hasShadow); +objj_msgSend(_20,"setAutoresizingMask:",CPWindowNotSizable); +objj_msgSend(_20,"setFrame:",objj_msgSend(_24,"frameRectForContentRect:",_fullPlatformWindowSession.contentRect)); +} +} +}),new objj_method(sel_getUid("isFullPlatformWindow"),function(_25,_26){ +with(_25){ +return _isFullPlatformWindow; +} +}),new objj_method(sel_getUid("styleMask"),function(_27,_28){ +with(_27){ +return _styleMask; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_29,_2a,_2b){ +with(_29){ +return objj_msgSend(_windowView,"contentRectForFrameRect:",_2b); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_2c,_2d,_2e){ +with(_2c){ +return objj_msgSend(_windowView,"frameRectForContentRect:",_2e); +} +}),new objj_method(sel_getUid("frame"),function(_2f,_30){ +with(_2f){ +return {origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}}; +} +}),new objj_method(sel_getUid("_setClippedFrame:display:animate:"),function(_31,_32,_33,_34,_35){ +with(_31){ +_33.size.width=MIN(MAX(_33.size.width,_minSize.width),_maxSize.width); +_33.size.height=MIN(MAX(_33.size.height,_minSize.height),_maxSize.height); +objj_msgSend(_31,"setFrame:display:animate:",_33,_34,_35); +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_36,_37,_38,_39,_3a){ +with(_36){ +_38={origin:{x:_38.origin.x,y:_38.origin.y},size:{width:_38.size.width,height:_38.size.height}}; +var _3b=_38.origin.x,_3c=_3b-FLOOR(_3b); +if(_3c){ +_38.origin.x=_3b>0.879?CEIL(_3b):FLOOR(_3b); +} +_3b=_38.origin.y; +_3c=_3b-FLOOR(_3b); +if(_3c){ +_38.origin.y=_3b>0.879?CEIL(_3b):FLOOR(_3b); +} +_3b=_38.size.width; +_3c=_3b-FLOOR(_3b); +if(_3c){ +_38.size.width=_3b>0.15?CEIL(_3b):FLOOR(_3b); +} +_3b=_38.size.height; +_3c=_3b-FLOOR(_3b); +if(_3c){ +_38.size.height=_3b>0.15?CEIL(_3b):FLOOR(_3b); +} +if(_3a){ +objj_msgSend(_frameAnimation,"stopAnimation"); +_frameAnimation=objj_msgSend(objj_msgSend(_CPWindowFrameAnimation,"alloc"),"initWithWindow:targetFrame:",_36,_38); +objj_msgSend(_frameAnimation,"startAnimation"); +}else{ +var _3d=_frame.origin,_3e=_38.origin; +if(!(_3d.x==_3e.x&&_3d.y==_3e.y)){ +_3d.x=_3e.x; +_3d.y=_3e.y; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidMoveNotification,_36); +} +var _3f=_frame.size,_40=_38.size; +if(!(_3f.width==_40.width&&_3f.height==_40.height)){ +_3f.width=_40.width; +_3f.height=_40.height; +objj_msgSend(_windowView,"setFrameSize:",_3f); +if(_hasShadow){ +objj_msgSend(_shadowView,"setFrameSize:",{width:_1+_3f.width+_2,height:_4+_3f.height+_3+_5}); +} +if(!_isAnimating){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResizeNotification,_36); +} +} +if(objj_msgSend(_36,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"setContentRect:",_frame); +} +} +} +}),new objj_method(sel_getUid("setFrame:display:"),function(_41,_42,_43,_44){ +with(_41){ +objj_msgSend(_41,"_setClippedFrame:display:animate:",_43,_44,NO); +} +}),new objj_method(sel_getUid("setFrame:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_45,"_setClippedFrame:display:animate:",_47,YES,NO); +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(_48,"_setClippedFrame:display:animate:",{origin:{x:_4a.x,y:_4a.y},size:{width:(_frame.size.width),height:(_frame.size.height)}},YES,NO); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_4b,_4c,_4d){ +with(_4b){ +objj_msgSend(_4b,"_setClippedFrame:display:animate:",{origin:{x:(_frame.origin.x),y:(_frame.origin.y)},size:{width:_4d.width,height:_4d.height}},YES,NO); +} +}),new objj_method(sel_getUid("orderFront:"),function(_4e,_4f,_50){ +with(_4e){ +if(_firstResponder===_4e||!_firstResponder){ +objj_msgSend(_4e,"makeFirstResponder:",objj_msgSend(_4e,"initialFirstResponder")); +} +if(!CPApp._keyWindow){ +objj_msgSend(_4e,"makeKeyWindow"); +} +if(!CPApp._mainWindow){ +objj_msgSend(_4e,"makeMainWindow"); +} +} +}),new objj_method(sel_getUid("orderBack:"),function(_51,_52,_53){ +with(_51){ +} +}),new objj_method(sel_getUid("orderOut:"),function(_54,_55,_56){ +with(_54){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowWillClose:"))){ +objj_msgSend(_delegate,"windowWillClose:",_54); +} +objj_msgSend(_54,"_updateMainAndKeyWindows"); +} +}),new objj_method(sel_getUid("orderWindow:relativeTo:"),function(_57,_58,_59,_5a){ +with(_57){ +} +}),new objj_method(sel_getUid("setLevel:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d===_level){ +return; +} +objj_msgSend(_platformWindow,"moveWindow:fromLevel:toLevel:",_5b,_level,_5d); +_level=_5d; +if(objj_msgSend(_5b,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"setLevel:",_5d); +} +} +}),new objj_method(sel_getUid("level"),function(_5e,_5f){ +with(_5e){ +return _level; +} +}),new objj_method(sel_getUid("isVisible"),function(_60,_61){ +with(_60){ +return _isVisible; +} +}),new objj_method(sel_getUid("showsResizeIndicator"),function(_62,_63){ +with(_62){ +return _showsResizeIndicator; +} +}),new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_64,_65,_66){ +with(_64){ +_66=!!_66; +if(_showsResizeIndicator===_66){ +return; +} +_showsResizeIndicator=_66; +objj_msgSend(_windowView,"setShowsResizeIndicator:",objj_msgSend(_64,"showsResizeIndicator")); +} +}),new objj_method(sel_getUid("resizeIndicatorOffset"),function(_67,_68){ +with(_67){ +return objj_msgSend(_windowView,"resizeIndicatorOffset"); +} +}),new objj_method(sel_getUid("setResizeIndicatorOffset:"),function(_69,_6a,_6b){ +with(_69){ +objj_msgSend(_windowView,"setResizeIndicatorOffset:",_6b); +} +}),new objj_method(sel_getUid("setContentView:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_contentView){ +objj_msgSend(_contentView,"removeFromSuperview"); +} +var _6f=CGRectMake(0,0,CGRectGetWidth(_frame),CGRectGetHeight(_frame)); +_contentView=_6e; +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_6c,"contentRectForFrameRect:",_6f)); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_windowView,"addSubview:",_contentView); +} +}),new objj_method(sel_getUid("contentView"),function(_70,_71){ +with(_70){ +return _contentView; +} +}),new objj_method(sel_getUid("setAlphaValue:"),function(_72,_73,_74){ +with(_72){ +objj_msgSend(_windowView,"setAlphaValue:",_74); +} +}),new objj_method(sel_getUid("alphaValue"),function(_75,_76){ +with(_75){ +return objj_msgSend(_windowView,"alphaValue"); +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_77,_78,_79){ +with(_77){ +objj_msgSend(_windowView,"setBackgroundColor:",_79); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_7a,_7b){ +with(_7a){ +return objj_msgSend(_windowView,"backgroundColor"); +} +}),new objj_method(sel_getUid("setMinSize:"),function(_7c,_7d,_7e){ +with(_7c){ +if(CGSizeEqualToSize(_minSize,_7e)){ +return; +} +_minSize=CGSizeCreateCopy(_7e); +var _7f=CGSizeMakeCopy(objj_msgSend(_7c,"frame").size),_80=NO; +if(_7f.width<_minSize.width){ +_7f.width=_minSize.width; +_80=YES; +} +if(_7f.height<_minSize.height){ +_7f.height=_minSize.height; +_80=YES; +} +if(_80){ +objj_msgSend(_7c,"setFrameSize:",_7f); +} +} +}),new objj_method(sel_getUid("minSize"),function(_81,_82){ +with(_81){ +return _minSize; +} +}),new objj_method(sel_getUid("setMaxSize:"),function(_83,_84,_85){ +with(_83){ +if(CGSizeEqualToSize(_maxSize,_85)){ +return; +} +_maxSize=CGSizeCreateCopy(_85); +var _86=CGSizeMakeCopy(objj_msgSend(_83,"frame").size),_87=NO; +if(_86.width>_maxSize.width){ +_86.width=_maxSize.width; +_87=YES; +} +if(_86.height>_maxSize.height){ +_86.height=_maxSize.height; +_87=YES; +} +if(_87){ +objj_msgSend(_83,"setFrameSize:",_86); +} +} +}),new objj_method(sel_getUid("maxSize"),function(_88,_89){ +with(_88){ +return _maxSize; +} +}),new objj_method(sel_getUid("hasShadow"),function(_8a,_8b){ +with(_8a){ +return _hasShadow; +} +}),new objj_method(sel_getUid("_updateShadow"),function(_8c,_8d){ +with(_8c){ +if(objj_msgSend(_8c,"_sharesChromeWithPlatformWindow")){ +if(_shadowView){ +_shadowView=nil; +} +objj_msgSend(_platformWindow,"setHasShadow:",_hasShadow); +return; +} +if(_hasShadow&&!_shadowView){ +var _8e=objj_msgSend(_windowView,"bounds"); +_shadowView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(-_1,-_3+_5,_1+CGRectGetWidth(_8e)+_2,_3+CGRectGetHeight(_8e)+_4)); +if(!_6){ +var _8f=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_6=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow0.png"),CGSizeMake(20,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow1.png"),CGSizeMake(1,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow2.png"),CGSizeMake(19,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow3.png"),CGSizeMake(20,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow5.png"),CGSizeMake(19,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow6.png"),CGSizeMake(20,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow7.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow8.png"),CGSizeMake(19,18))])); +} +objj_msgSend(_shadowView,"setBackgroundColor:",_6); +objj_msgSend(_shadowView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +}else{ +if(!_hasShadow&&_shadowView){ +_shadowView=nil; +} +} +} +}),new objj_method(sel_getUid("setHasShadow:"),function(_90,_91,_92){ +with(_90){ +if(_hasShadow===_92){ +return; +} +_hasShadow=_92; +objj_msgSend(_90,"_updateShadow"); +} +}),new objj_method(sel_getUid("setShadowStyle:"),function(_93,_94,_95){ +with(_93){ +_shadowStyle=_95; +objj_msgSend(objj_msgSend(_93,"platformWindow"),"setShadowStyle:",_shadowStyle); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_96,_97,_98){ +with(_96){ +var _99=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidResignKeyNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidBecomeKeyNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidBecomeMainNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidResignMainNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidMoveNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidResizeNotification,_96); +_delegate=_98; +_delegateRespondsToWindowWillReturnUndoManagerSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowWillReturnUndoManager:")); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResignKey:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResignKey:"),CPWindowDidResignKeyNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidBecomeKey:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidBecomeKey:"),CPWindowDidBecomeKeyNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidBecomeMain:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidBecomeMain:"),CPWindowDidBecomeMainNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResignMain:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResignMain:"),CPWindowDidResignMainNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidMove:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidMove:"),CPWindowDidMoveNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResize:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResize:"),CPWindowDidResizeNotification,_96); +} +} +}),new objj_method(sel_getUid("delegate"),function(_9a,_9b){ +with(_9a){ +return _delegate; +} +}),new objj_method(sel_getUid("setWindowController:"),function(_9c,_9d,_9e){ +with(_9c){ +_windowController=_9e; +} +}),new objj_method(sel_getUid("windowController"),function(_9f,_a0){ +with(_9f){ +return _windowController; +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_a1,_a2,_a3){ +with(_a1){ +if(objj_msgSend(_delegate,"respondsToSelector:",_a3)){ +objj_msgSend(_delegate,"performSelector:",_a3); +}else{ +objj_msgSendSuper({receiver:_a1,super_class:objj_getClass("CPWindow").super_class},"doCommandBySelector:",_a3); +} +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_a4,_a5){ +with(_a4){ +return YES; +} +}),new objj_method(sel_getUid("initialFirstResponder"),function(_a6,_a7){ +with(_a6){ +return _initialFirstResponder; +} +}),new objj_method(sel_getUid("setInitialFirstResponder:"),function(_a8,_a9,_aa){ +with(_a8){ +_initialFirstResponder=_aa; +} +}),new objj_method(sel_getUid("makeFirstResponder:"),function(_ab,_ac,_ad){ +with(_ab){ +if(_firstResponder===_ad){ +return YES; +} +if(!objj_msgSend(_firstResponder,"resignFirstResponder")){ +return NO; +} +if(!_ad||!objj_msgSend(_ad,"acceptsFirstResponder")||!objj_msgSend(_ad,"becomeFirstResponder")){ +_firstResponder=_ab; +return NO; +} +_firstResponder=_ad; +return YES; +} +}),new objj_method(sel_getUid("firstResponder"),function(_ae,_af){ +with(_ae){ +return _firstResponder; +} +}),new objj_method(sel_getUid("acceptsMouseMovedEvents"),function(_b0,_b1){ +with(_b0){ +return _acceptsMouseMovedEvents; +} +}),new objj_method(sel_getUid("setAcceptsMouseMovedEvents:"),function(_b2,_b3,_b4){ +with(_b2){ +_acceptsMouseMovedEvents=_b4; +} +}),new objj_method(sel_getUid("ignoresMouseEvents"),function(_b5,_b6){ +with(_b5){ +return _ignoresMouseEvents; +} +}),new objj_method(sel_getUid("setIgnoresMouseEvents:"),function(_b7,_b8,_b9){ +with(_b7){ +_ignoresMouseEvents=_b9; +} +}),new objj_method(sel_getUid("title"),function(_ba,_bb){ +with(_ba){ +return _title; +} +}),new objj_method(sel_getUid("setTitle:"),function(_bc,_bd,_be){ +with(_bc){ +_title=_be; +objj_msgSend(_windowView,"setTitle:",_be); +objj_msgSend(_bc,"_synchronizeMenuBarTitleWithWindowTitle"); +} +}),new objj_method(sel_getUid("setTitleWithRepresentedFilename:"),function(_bf,_c0,_c1){ +with(_bf){ +objj_msgSend(_bf,"setRepresentedFilename:",_c1); +objj_msgSend(_bf,"setTitle:",objj_msgSend(_c1,"lastPathComponent")); +} +}),new objj_method(sel_getUid("setRepresentedFilename:"),function(_c2,_c3,_c4){ +with(_c2){ +objj_msgSend(_c2,"setRepresentedURL:",_c4); +} +}),new objj_method(sel_getUid("representedFilename"),function(_c5,_c6){ +with(_c5){ +return _representedURL; +} +}),new objj_method(sel_getUid("setRepresentedURL:"),function(_c7,_c8,_c9){ +with(_c7){ +_representedURL=_c9; +} +}),new objj_method(sel_getUid("representedURL"),function(_ca,_cb){ +with(_ca){ +return _representedURL; +} +}),new objj_method(sel_getUid("screen"),function(_cc,_cd){ +with(_cc){ +return objj_msgSend(objj_msgSend(CPScreen,"alloc"),"init"); +} +}),new objj_method(sel_getUid("setMovableByWindowBackground:"),function(_ce,_cf,_d0){ +with(_ce){ +_isMovableByWindowBackground=_d0; +} +}),new objj_method(sel_getUid("isMovableByWindowBackground"),function(_d1,_d2){ +with(_d1){ +return _isMovableByWindowBackground; +} +}),new objj_method(sel_getUid("center"),function(_d3,_d4){ +with(_d3){ +if(_isFullPlatformWindow){ +return; +} +var _d5=objj_msgSend(_d3,"frame").size,_d6=objj_msgSend(CPPlatform,"isBrowser")?objj_msgSend(_platformWindow,"contentBounds").size:objj_msgSend(objj_msgSend(_d3,"screen"),"visibleFrame").size; +var _d7=CGPointMake((_d6.width-_d5.width)/2,(_d6.height-_d5.height)/2); +if(_d7.x<0){ +_d7.x=0; +} +if(_d7.y<0){ +_d7.y=0; +} +objj_msgSend(_d3,"setFrameOrigin:",_d7); +} +}),new objj_method(sel_getUid("sendEvent:"),function(_d8,_d9,_da){ +with(_d8){ +var _db=objj_msgSend(_da,"type"),_dc=objj_msgSend(_da,"locationInWindow"); +switch(_db){ +case CPFlagsChanged: +return objj_msgSend(objj_msgSend(_d8,"firstResponder"),"flagsChanged:",_da); +case CPKeyUp: +return objj_msgSend(objj_msgSend(_d8,"firstResponder"),"keyUp:",_da); +case CPKeyDown: +objj_msgSend(objj_msgSend(_d8,"firstResponder"),"keyDown:",_da); +if(!objj_msgSend(_d8,"disableKeyEquivalentForDefaultButton")){ +if(objj_msgSend(_da,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(objj_msgSend(_d8,"defaultButton"),"keyEquivalent"),objj_msgSend(objj_msgSend(_d8,"defaultButton"),"keyEquivalentModifierMask"))){ +objj_msgSend(objj_msgSend(_d8,"defaultButton"),"performClick:",_d8); +} +} +return; +case CPScrollWheel: +return objj_msgSend(objj_msgSend(_windowView,"hitTest:",_dc),"scrollWheel:",_da); +case CPLeftMouseUp: +case CPRightMouseUp: +var _dd=_leftMouseDownView,_de=_db==CPRightMouseUp?sel_getUid("rightMouseUp:"):sel_getUid("mouseUp:"); +if(!_dd){ +_dd=objj_msgSend(_windowView,"hitTest:",_dc); +} +objj_msgSend(_dd,"performSelector:withObject:",_de,_da); +_leftMouseDownView=nil; +return; +case CPLeftMouseDown: +case CPRightMouseDown: +_leftMouseDownView=objj_msgSend(_windowView,"hitTest:",_dc); +if(_leftMouseDownView!=_firstResponder&&objj_msgSend(_leftMouseDownView,"acceptsFirstResponder")){ +objj_msgSend(_d8,"makeFirstResponder:",_leftMouseDownView); +} +objj_msgSend(CPApp,"activateIgnoringOtherApps:",YES); +var _df=objj_msgSend(_da,"window"),_de=_db==CPRightMouseDown?sel_getUid("rightMouseDown:"):sel_getUid("mouseDown:"); +if(objj_msgSend(_df,"isKeyWindow")||objj_msgSend(_df,"becomesKeyOnlyIfNeeded")&&!objj_msgSend(_leftMouseDownView,"needsPanelToBecomeKey")){ +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_de,_da); +}else{ +objj_msgSend(_d8,"makeKeyAndOrderFront:",_d8); +if(objj_msgSend(_leftMouseDownView,"acceptsFirstMouse:",_da)){ +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_de,_da); +} +} +break; +case CPLeftMouseDragged: +case CPRightMouseDragged: +if(!_leftMouseDownView){ +return objj_msgSend(objj_msgSend(_windowView,"hitTest:",_dc),"mouseDragged:",_da); +} +var _de; +if(_db==CPRightMouseDragged){ +_de=sel_getUid("rightMouseDragged:"); +if(!objj_msgSend(_leftMouseDownView,"respondsToSelector:",_de)){ +_de=nil; +} +} +if(!_de){ +_de=sel_getUid("mouseDragged:"); +} +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_de,_da); +case CPMouseMoved: +if(!_acceptsMouseMovedEvents){ +return; +} +if(!_mouseEnteredStack){ +_mouseEnteredStack=[]; +} +var _e0=objj_msgSend(_windowView,"hitTest:",_dc); +if(objj_msgSend(_mouseEnteredStack,"count")&&objj_msgSend(_mouseEnteredStack,"lastObject")===_e0){ +return objj_msgSend(_e0,"mouseMoved:",_da); +} +var _e1=_e0,_e2=[]; +while(_e1){ +_e2.unshift(_e1); +_e1=objj_msgSend(_e1,"superview"); +} +var _e3=MIN(_mouseEnteredStack.length,_e2.length); +while(_e3--){ +if(_mouseEnteredStack[_e3]===_e2[_e3]){ +break; +} +} +var _e4=_e3+1,_e5=_mouseEnteredStack.length; +if(_e4<_e5){ +var _e6=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPMouseExited,_dc,objj_msgSend(_da,"modifierFlags"),objj_msgSend(_da,"timestamp"),_windowNumber,nil,-1,1,0); +for(;_e4<_e5;++_e4){ +objj_msgSend(_mouseEnteredStack[_e4],"mouseExited:",_e6); +} +} +_e4=_e3+1; +_e5=_e2.length; +if(_e4<_e5){ +var _e6=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPMouseEntered,_dc,objj_msgSend(_da,"modifierFlags"),objj_msgSend(_da,"timestamp"),_windowNumber,nil,-1,1,0); +for(;_e4<_e5;++_e4){ +objj_msgSend(_e2[_e4],"mouseEntered:",_e6); +} +} +_mouseEnteredStack=_e2; +objj_msgSend(_e0,"mouseMoved:",_da); +} +} +}),new objj_method(sel_getUid("windowNumber"),function(_e7,_e8){ +with(_e7){ +return _windowNumber; +} +}),new objj_method(sel_getUid("becomeKeyWindow"),function(_e9,_ea){ +with(_e9){ +CPApp._keyWindow=_e9; +if(_firstResponder!==_e9&&objj_msgSend(_firstResponder,"respondsToSelector:",sel_getUid("becomeKeyWindow"))){ +objj_msgSend(_firstResponder,"becomeKeyWindow"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidBecomeKeyNotification,_e9); +} +}),new objj_method(sel_getUid("canBecomeKeyWindow"),function(_eb,_ec){ +with(_eb){ +return YES; +} +}),new objj_method(sel_getUid("isKeyWindow"),function(_ed,_ee){ +with(_ed){ +return objj_msgSend(CPApp,"keyWindow")==_ed; +} +}),new objj_method(sel_getUid("makeKeyAndOrderFront:"),function(_ef,_f0,_f1){ +with(_ef){ +objj_msgSend(_ef,"orderFront:",_ef); +objj_msgSend(_ef,"makeKeyWindow"); +objj_msgSend(_ef,"makeMainWindow"); +} +}),new objj_method(sel_getUid("makeKeyWindow"),function(_f2,_f3){ +with(_f2){ +if(objj_msgSend(CPApp,"keyWindow")===_f2||!objj_msgSend(_f2,"canBecomeKeyWindow")){ +return; +} +objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"resignKeyWindow"); +objj_msgSend(_f2,"becomeKeyWindow"); +} +}),new objj_method(sel_getUid("resignKeyWindow"),function(_f4,_f5){ +with(_f4){ +if(_firstResponder!==_f4&&objj_msgSend(_firstResponder,"respondsToSelector:",sel_getUid("resignKeyWindow"))){ +objj_msgSend(_firstResponder,"resignKeyWindow"); +} +if(CPApp._keyWindow===_f4){ +CPApp._keyWindow=nil; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResignKeyNotification,_f4); +} +}),new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"),function(_f6,_f7,_f8,_f9,_fa,_fb,_fc,_fd,_fe){ +with(_f6){ +objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:",_f8,_f6,objj_msgSend(_f6,"convertBaseToGlobal:",_f9),_fa,_fb,_fc,_fd,_fe); +} +}),new objj_method(sel_getUid("_noteRegisteredDraggedTypes:"),function(_ff,_100,_101){ +with(_ff){ +if(!_101){ +return; +} +if(!_inclusiveRegisteredDraggedTypes){ +_inclusiveRegisteredDraggedTypes=objj_msgSend(CPCountedSet,"set"); +} +objj_msgSend(_inclusiveRegisteredDraggedTypes,"unionSet:",_101); +} +}),new objj_method(sel_getUid("_noteUnregisteredDraggedTypes:"),function(self,_102,_103){ +with(self){ +if(!_103){ +return; +} +objj_msgSend(_inclusiveRegisteredDraggedTypes,"minusSet:",_103); +if(objj_msgSend(_inclusiveRegisteredDraggedTypes,"count")===0){ +_inclusiveRegisteredDraggedTypes=nil; +} +} +}),new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"),function(self,_104,_105,_106,_107,_108,_109,_10a,_10b){ +with(self){ +objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:",_105,self,objj_msgSend(self,"convertBaseToGlobal:",_106),_107,_108,_109,_10a,_10b); +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(self,_10c,_10d){ +with(self){ +if(!_10d){ +return; +} +objj_msgSend(self,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_registeredDraggedTypes,"addObjectsFromArray:",_10d); +objj_msgSend(self,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypesArray=nil; +} +}),new objj_method(sel_getUid("registeredDraggedTypes"),function(self,_10e){ +with(self){ +if(!_registeredDraggedTypesArray){ +_registeredDraggedTypesArray=objj_msgSend(_registeredDraggedTypes,"allObjects"); +} +return _registeredDraggedTypesArray; +} +}),new objj_method(sel_getUid("unregisterDraggedTypes"),function(self,_10f){ +with(self){ +objj_msgSend(self,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(self,_110,_111){ +with(self){ +if(_isDocumentEdited==_111){ +return; +} +_isDocumentEdited=_111; +objj_msgSend(CPMenu,"_setMenuBarIconImageAlphaValue:",_isDocumentEdited?0.5:1); +objj_msgSend(_windowView,"setDocumentEdited:",_111); +} +}),new objj_method(sel_getUid("isDocumentEdited"),function(self,_112){ +with(self){ +return _isDocumentEdited; +} +}),new objj_method(sel_getUid("setDocumentSaving:"),function(self,_113,_114){ +with(self){ +if(_isDocumentSaving==_114){ +return; +} +_isDocumentSaving=_114; +objj_msgSend(self,"_synchronizeSaveMenuWithDocumentSaving"); +objj_msgSend(_windowView,"windowDidChangeDocumentSaving"); +} +}),new objj_method(sel_getUid("isDocumentSaving"),function(self,_115){ +with(self){ +return _isDocumentSaving; +} +}),new objj_method(sel_getUid("_synchronizeSaveMenuWithDocumentSaving"),function(self,_116){ +with(self){ +if(!objj_msgSend(self,"isMainWindow")){ +return; +} +var _117=objj_msgSend(CPApp,"mainMenu"),_118=objj_msgSend(_117,"indexOfItemWithTitle:",_isDocumentSaving?"Save":"Saving..."); +if(_118==CPNotFound){ +return; +} +var item=objj_msgSend(_117,"itemAtIndex:",_118); +if(_isDocumentSaving){ +_7=objj_msgSend(item,"image"); +objj_msgSend(item,"setTitle:","Saving..."); +objj_msgSend(item,"setImage:",_8); +objj_msgSend(item,"setEnabled:",NO); +}else{ +objj_msgSend(item,"setTitle:","Save"); +objj_msgSend(item,"setImage:",_7); +objj_msgSend(item,"setEnabled:",YES); +} +} +}),new objj_method(sel_getUid("performMiniaturize:"),function(self,_119,_11a){ +with(self){ +objj_msgSend(self,"miniaturize:",_11a); +} +}),new objj_method(sel_getUid("miniaturize:"),function(self,_11b,_11c){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillMiniaturizeNotification,self); +objj_msgSend(objj_msgSend(self,"platformWindow"),"miniaturize:",_11c); +objj_msgSend(self,"_updateMainAndKeyWindows"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidMiniaturizeNotification,self); +_isMiniaturized=YES; +} +}),new objj_method(sel_getUid("deminiaturize:"),function(self,_11d,_11e){ +with(self){ +objj_msgSend(objj_msgSend(self,"platformWindow"),"deminiaturize:",_11e); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidDeminiaturizeNotification,self); +_isMiniaturized=NO; +} +}),new objj_method(sel_getUid("isMiniaturized"),function(self,_11f){ +with(self){ +return _isMiniaturized; +} +}),new objj_method(sel_getUid("performClose:"),function(self,_120,_121){ +with(self){ +if(!(_styleMask&CPClosableWindowMask)){ +return; +} +if(objj_msgSend(self,"isFullBridge")){ +var _122=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(_122,"type")===CPKeyDown&&objj_msgSend(_122,"characters")==="w"&&(objj_msgSend(_122,"modifierFlags")&CPPlatformActionKeyMask)){ +objj_msgSend(objj_msgSend(self,"platformWindow"),"_propagateCurrentDOMEvent:",YES); +return; +} +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowShouldClose:"))){ +if(!objj_msgSend(_delegate,"windowShouldClose:",self)){ +return; +} +}else{ +if(objj_msgSend(self,"respondsToSelector:",sel_getUid("windowShouldClose:"))&&!objj_msgSend(self,"windowShouldClose:",self)){ +return; +} +} +var _123=objj_msgSend(_windowController,"documents"); +if(objj_msgSend(_123,"count")){ +var _124=objj_msgSend(_123,"indexOfObject:",objj_msgSend(_windowController,"document")); +objj_msgSend(_123[_124],"shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",_windowController,self,sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),{documents:objj_msgSend(_123,"copy"),visited:0,index:_124}); +}else{ +objj_msgSend(self,"close"); +} +} +}),new objj_method(sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),function(self,_125,_126,_127,_128){ +with(self){ +if(_127){ +var _129=objj_msgSend(self,"windowController"),_12a=_128.documents,_12b=objj_msgSend(_12a,"count"),_12c=++_128.visited,_12d=++_128.index%_12b; +objj_msgSend(_126,"removeWindowController:",_129); +if(_12c<_12b){ +objj_msgSend(_129,"setDocument:",_12a[_12d]); +objj_msgSend(_12a[_12d],"shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",_windowController,self,sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),_128); +}else{ +objj_msgSend(self,"close"); +} +} +} +}),new objj_method(sel_getUid("close"),function(self,_12e){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillCloseNotification,self); +objj_msgSend(self,"orderOut:",nil); +} +}),new objj_method(sel_getUid("isMainWindow"),function(self,_12f){ +with(self){ +return objj_msgSend(CPApp,"mainWindow")==self; +} +}),new objj_method(sel_getUid("canBecomeMainWindow"),function(self,_130){ +with(self){ +if(objj_msgSend(self,"isVisible")){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("makeMainWindow"),function(self,_131){ +with(self){ +if(objj_msgSend(CPApp,"mainWindow")===self||!objj_msgSend(self,"canBecomeMainWindow")){ +return; +} +objj_msgSend(objj_msgSend(CPApp,"mainWindow"),"resignMainWindow"); +objj_msgSend(self,"becomeMainWindow"); +} +}),new objj_method(sel_getUid("becomeMainWindow"),function(self,_132){ +with(self){ +CPApp._mainWindow=self; +objj_msgSend(self,"_synchronizeMenuBarTitleWithWindowTitle"); +objj_msgSend(self,"_synchronizeSaveMenuWithDocumentSaving"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidBecomeMainNotification,self); +} +}),new objj_method(sel_getUid("resignMainWindow"),function(self,_133){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResignMainNotification,self); +if(CPApp._mainWindow===self){ +CPApp._mainWindow=nil; +} +} +}),new objj_method(sel_getUid("_updateMainAndKeyWindows"),function(self,_134){ +with(self){ +var _135=objj_msgSend(CPApp,"orderedWindows"),_136=objj_msgSend(_135,"count"); +if(objj_msgSend(self,"isKeyWindow")){ +var _137=objj_msgSend(CPApp,"keyWindow"); +objj_msgSend(self,"resignKeyWindow"); +if(_137&&_137!==self&&objj_msgSend(_137,"canBecomeKeyWindow")){ +objj_msgSend(_137,"makeKeyWindow"); +}else{ +var _138=objj_msgSend(CPApp,"mainMenu"),_139=objj_getClass("_CPMenuBarWindow"),_13a; +for(var i=0;i<_136;i++){ +var _13b=_135[i]; +if(objj_msgSend(_13b,"isKindOfClass:",_139)){ +_13a=_13b; +} +if(_13b===self||_13b===_13a){ +continue; +} +if(objj_msgSend(_13b,"isVisible")&&objj_msgSend(_13b,"canBecomeKeyWindow")){ +objj_msgSend(_13b,"makeKeyWindow"); +break; +} +} +if(!objj_msgSend(CPApp,"keyWindow")){ +objj_msgSend(_13a,"makeKeyWindow"); +} +} +} +if(objj_msgSend(self,"isMainWindow")){ +var _13c=objj_msgSend(CPApp,"mainWindow"); +objj_msgSend(self,"resignMainWindow"); +if(_13c&&_13c!==self&&objj_msgSend(_13c,"canBecomeMainWindow")){ +objj_msgSend(_13c,"makeMainWindow"); +}else{ +var _138=objj_msgSend(CPApp,"mainMenu"),_139=objj_getClass("_CPMenuBarWindow"),_13a; +for(var i=0;i<_136;i++){ +var _13b=_135[i]; +if(objj_msgSend(_13b,"isKindOfClass:",_139)){ +_13a=_13b; +} +if(_13b===self||_13b===_13a){ +continue; +} +if(objj_msgSend(_13b,"isVisible")&&objj_msgSend(_13b,"canBecomeMainWindow")){ +objj_msgSend(_13b,"makeMainWindow"); +break; +} +} +} +} +} +}),new objj_method(sel_getUid("toolbar"),function(self,_13d){ +with(self){ +return _toolbar; +} +}),new objj_method(sel_getUid("setToolbar:"),function(self,_13e,_13f){ +with(self){ +if(_toolbar===_13f){ +return; +} +objj_msgSend(objj_msgSend(_13f,"_window"),"setToolbar:",nil); +objj_msgSend(_toolbar,"_setWindow:",nil); +_toolbar=_13f; +objj_msgSend(_toolbar,"_setWindow:",self); +objj_msgSend(self,"_noteToolbarChanged"); +} +}),new objj_method(sel_getUid("toggleToolbarShown:"),function(self,_140,_141){ +with(self){ +var _142=objj_msgSend(self,"toolbar"); +objj_msgSend(_142,"setVisible:",!objj_msgSend(_142,"isVisible")); +} +}),new objj_method(sel_getUid("_noteToolbarChanged"),function(self,_143){ +with(self){ +var _144=CGRectMakeCopy(objj_msgSend(self,"frame")),_145; +objj_msgSend(_windowView,"noteToolbarChanged"); +if(_isFullPlatformWindow){ +_145=objj_msgSend(_platformWindow,"visibleFrame"); +}else{ +_145=CGRectMakeCopy(objj_msgSend(self,"frame")); +_145.origin=_144.origin; +} +objj_msgSend(self,"setFrame:",_145); +} +}),new objj_method(sel_getUid("_setFrame:delegate:duration:curve:"),function(self,_146,_147,_148,_149,_14a){ +with(self){ +objj_msgSend(_frameAnimation,"stopAnimation"); +_frameAnimation=objj_msgSend(objj_msgSend(_CPWindowFrameAnimation,"alloc"),"initWithWindow:targetFrame:",self,_147); +objj_msgSend(_frameAnimation,"setDelegate:",_148); +objj_msgSend(_frameAnimation,"setAnimationCurve:",_14a); +objj_msgSend(_frameAnimation,"setDuration:",_149); +objj_msgSend(_frameAnimation,"startAnimation"); +} +}),new objj_method(sel_getUid("animationResizeTime:"),function(self,_14b,_14c){ +with(self){ +return _9; +} +}),new objj_method(sel_getUid("_setAttachedSheetFrameOrigin"),function(self,_14d){ +with(self){ +var _14e=objj_msgSend(self,"attachedSheet"); +var _14f=objj_msgSend(objj_msgSend(self,"contentView"),"frame"),_150=CGRectMakeCopy(objj_msgSend(_14e,"frame")); +_150.origin.y=CGRectGetMinY(_frame)+CGRectGetMinY(_14f); +_150.origin.x=CGRectGetMinX(_frame)+FLOOR((CGRectGetWidth(_frame)-CGRectGetWidth(_150))/2); +objj_msgSend(_14e,"setFrame:display:animate:",_150,YES,NO); +} +}),new objj_method(sel_getUid("_attachSheet:modalDelegate:didEndSelector:contextInfo:"),function(self,_151,_152,_153,_154,_155){ +with(self){ +var _156=objj_msgSend(_152,"frame"); +_sheetContext={"sheet":_152,"modalDelegate":_153,"endSelector":_154,"contextInfo":_155,"frame":CGRectMakeCopy(_156),"returnCode":-1,"opened":NO}; +objj_msgSend(self,"_attachSheetWindow:",_152); +} +}),new objj_method(sel_getUid("_attachSheetWindow:"),function(self,_157,_158){ +with(self){ +var _159=objj_msgSend(_158,"frame"),_15a=objj_msgSend(self,"frame"),_15b=objj_msgSend(_158,"contentView"); +objj_msgSend(self,"_setUpMasksForView:",_15b); +_158._isSheet=YES; +_158._parentView=self; +var _15c=_15a.origin.x+FLOOR((_15a.size.width-_159.size.width)/2),_15d=_15a.origin.y+objj_msgSend(objj_msgSend(self,"contentView"),"frame").origin.y,_15e=CGRectMake(_15c,_15d,_159.size.width,0),_15f=CGRectMake(_15c,_15d,_159.size.width,_159.size.height); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillBeginSheetNotification,self); +objj_msgSend(CPApp,"runModalForWindow:",_158); +objj_msgSend(_158,"orderFront:",self); +objj_msgSend(_158,"setFrame:display:animate:",_15e,YES,NO); +_sheetContext["opened"]=YES; +objj_msgSend(_158,"_setFrame:delegate:duration:curve:",_15f,self,objj_msgSend(self,"animationResizeTime:",_15f),CPAnimationEaseOut); +objj_msgSend(_158,"becomeKeyWindow"); +} +}),new objj_method(sel_getUid("_detachSheetWindow"),function(self,_160){ +with(self){ +var _161=objj_msgSend(self,"attachedSheet"),_162=objj_msgSend(_161,"frame"),_163=CGRectMakeCopy(_162); +_163.size.height=0; +_sheetContext["frame"]=_162; +var _164=objj_msgSend(_161,"contentView"); +objj_msgSend(self,"_setUpMasksForView:",_164); +_sheetContext["opened"]=NO; +objj_msgSend(_161,"_setFrame:delegate:duration:curve:",_163,self,objj_msgSend(self,"animationResizeTime:",_163),CPAnimationEaseIn); +} +}),new objj_method(sel_getUid("animationDidEnd:"),function(self,_165,anim){ +with(self){ +var _166=_sheetContext["sheet"]; +if(anim._window!=_166){ +return; +} +var _167=objj_msgSend(_166,"contentView"); +if(_sheetContext["opened"]===YES){ +objj_msgSend(self,"_restoreMasksForView:",_167); +return; +} +objj_msgSend(CPApp,"stopModal"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidEndSheetNotification,self); +objj_msgSend(_166,"orderOut:",self); +var _168=_sheetContext["frame"]; +objj_msgSend(_166,"setFrame:",_168); +objj_msgSend(self,"_restoreMasksForView:",_167); +var _169=_sheetContext["modalDelegate"],_16a=_sheetContext["endSelector"],_16b=_sheetContext["returnCode"],_16c=_sheetContext["contextInfo"]; +_sheetContext=nil; +_166._parentView=nil; +if(_169!=nil&&_16a!=nil){ +objj_msgSend(_169,_16a,_166,_16b,_16c); +} +} +}),new objj_method(sel_getUid("_setUpMasksForView:"),function(self,_16d,_16e){ +with(self){ +var _16f=objj_msgSend(_16e,"subviews"); +objj_msgSend(_16f,"addObject:",_16e); +for(var i=0,_170=objj_msgSend(_16f,"count");i<_170;i++){ +var view=objj_msgSend(_16f,"objectAtIndex:",i),mask=objj_msgSend(view,"autoresizingMask"),_171=(mask&CPViewMinYMargin)?128:CPViewMinYMargin; +objj_msgSend(view,"setAutoresizingMask:",(mask|_171)); +} +} +}),new objj_method(sel_getUid("_restoreMasksForView:"),function(self,_172,_173){ +with(self){ +var _174=objj_msgSend(_173,"subviews"); +objj_msgSend(_174,"addObject:",_173); +for(var i=0,_175=objj_msgSend(_174,"count");i<_175;i++){ +var view=objj_msgSend(_174,"objectAtIndex:",i),mask=objj_msgSend(view,"autoresizingMask"),_176=(mask&128)?128:CPViewMinYMargin; +objj_msgSend(view,"setAutoresizingMask:",(mask&(~_176))); +} +} +}),new objj_method(sel_getUid("attachedSheet"),function(self,_177){ +with(self){ +if(_sheetContext===nil){ +return nil; +} +return _sheetContext["sheet"]; +} +}),new objj_method(sel_getUid("isSheet"),function(self,_178){ +with(self){ +return _isSheet; +} +}),new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"),function(self,_179){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("worksWhenModal"),function(self,_17a){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(self,_17b,_17c){ +with(self){ +return objj_msgSend(objj_msgSend(self,"contentView"),"performKeyEquivalent:",_17c); +} +}),new objj_method(sel_getUid("keyDown:"),function(self,_17d,_17e){ +with(self){ +if(objj_msgSend(_17e,"_couldBeKeyEquivalent")&&objj_msgSend(self,"performKeyEquivalent:",_17e)){ +return; +} +objj_msgSend(self,"interpretKeyEvents:",[_17e]); +} +}),new objj_method(sel_getUid("insertTab:"),function(self,_17f,_180){ +with(self){ +objj_msgSend(self,"selectNextKeyView:",nil); +} +}),new objj_method(sel_getUid("_dirtyKeyViewLoop"),function(self,_181){ +with(self){ +if(_autorecalculatesKeyViewLoop){ +_keyViewLoopIsDirty=YES; +} +} +}),new objj_method(sel_getUid("_hasKeyViewLoop"),function(self,_182){ +with(self){ +var _183=[]; +objj_msgSend(self,"_appendSubviewsOf:toArray:",_contentView,_183); +for(var i=0,_184=objj_msgSend(_183,"count");i<_184;i++){ +if(_183[i]._nextKeyView){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("recalculateKeyViewLoop"),function(self,_185){ +with(self){ +var _186=[]; +objj_msgSend(self,"_appendSubviewsOf:toArray:",_contentView,_186); +var _187=objj_msgSend(_186,"sortedArrayUsingFunction:context:",_188,_contentView),_189=objj_msgSend(_187,"count"); +for(var i=0;i<_189;i++){ +objj_msgSend(_187[i],"setNextKeyView:",_187[(i+1)%_189]); +} +_keyViewLoopIsDirty=NO; +} +}),new objj_method(sel_getUid("_appendSubviewsOf:toArray:"),function(self,_18a,_18b,_18c){ +with(self){ +var _18d=objj_msgSend(_18b,"subviews"),_18e=objj_msgSend(_18d,"count"); +while(_18e--){ +objj_msgSend(self,"_appendSubviewsOf:toArray:",_18d[_18e],_18c); +} +objj_msgSend(_18c,"addObject:",_18b); +} +}),new objj_method(sel_getUid("setAutorecalculatesKeyViewLoop:"),function(self,_18f,_190){ +with(self){ +if(_autorecalculatesKeyViewLoop===_190){ +return; +} +_autorecalculatesKeyViewLoop=_190; +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +}else{ +if(_autorecalculatesKeyViewLoop){ +objj_msgSend(self,"_dirtyKeyViewLoop"); +} +} +} +}),new objj_method(sel_getUid("autorecalculatesKeyViewLoop"),function(self,_191){ +with(self){ +return _autorecalculatesKeyViewLoop; +} +}),new objj_method(sel_getUid("selectNextKeyView:"),function(self,_192,_193){ +with(self){ +if(objj_msgSend(_firstResponder,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +objj_msgSend(self,"selectKeyViewFollowingView:",_firstResponder); +} +} +}),new objj_method(sel_getUid("selectPreviousKeyView:"),function(self,_194,_195){ +with(self){ +if(objj_msgSend(_firstResponder,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +objj_msgSend(self,"selectKeyViewPrecedingView:",_firstResponder); +} +} +}),new objj_method(sel_getUid("selectKeyViewFollowingView:"),function(self,_196,_197){ +with(self){ +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +} +objj_msgSend(self,"makeFirstResponder:",objj_msgSend(_197,"nextValidKeyView")); +} +}),new objj_method(sel_getUid("selectKeyViewPrecedingView:"),function(self,_198,_199){ +with(self){ +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +} +objj_msgSend(self,"makeFirstResponder:",objj_msgSend(_199,"previousValidKeyView")); +} +}),new objj_method(sel_getUid("setDefaultButtonCell:"),function(self,_19a,_19b){ +with(self){ +objj_msgSend(self,"setDefaultButton:",_19b); +} +}),new objj_method(sel_getUid("defaultButtonCell"),function(self,_19c){ +with(self){ +return objj_msgSend(self,"defaultButton"); +} +}),new objj_method(sel_getUid("setDefaultButton:"),function(self,_19d,_19e){ +with(self){ +if(_defaultButton===_19e){ +return; +} +if(objj_msgSend(_defaultButton,"keyEquivalent")===CPCarriageReturnCharacter){ +objj_msgSend(_defaultButton,"setKeyEquivalent:",nil); +} +_defaultButton=_19e; +if(objj_msgSend(_defaultButton,"keyEquivalent")!==CPCarriageReturnCharacter){ +objj_msgSend(_defaultButton,"setKeyEquivalent:",CPCarriageReturnCharacter); +} +} +}),new objj_method(sel_getUid("defaultButton"),function(self,_19f){ +with(self){ +return _defaultButton; +} +}),new objj_method(sel_getUid("enableKeyEquivalentForDefaultButton"),function(self,_1a0){ +with(self){ +_defaultButtonEnabled=YES; +} +}),new objj_method(sel_getUid("enableKeyEquivalentForDefaultButtonCell"),function(self,_1a1){ +with(self){ +objj_msgSend(self,"enableKeyEquivalentForDefaultButton"); +} +}),new objj_method(sel_getUid("disableKeyEquivalentForDefaultButton"),function(self,_1a2){ +with(self){ +_defaultButtonEnabled=NO; +} +}),new objj_method(sel_getUid("disableKeyEquivalentForDefaultButtonCell"),function(self,_1a3){ +with(self){ +objj_msgSend(self,"disableKeyEquivalentForDefaultButton"); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("initialize"),function(self,_1a4){ +with(self){ +if(self!=objj_msgSend(CPWindow,"class")){ +return; +} +var _1a5=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_8=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_1a5,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(16,16)); +} +}),new objj_method(sel_getUid("_windowViewClassForStyleMask:"),function(self,_1a6,_1a7){ +with(self){ +if(_1a7&CPHUDBackgroundWindowMask){ +return _CPHUDWindowView; +}else{ +if(_1a7===CPBorderlessWindowMask){ +return _CPBorderlessWindowView; +}else{ +if(_1a7&CPDocModalWindowMask){ +return _CPDocModalWindowView; +} +} +} +return _CPStandardWindowView; +} +}),new objj_method(sel_getUid("_windowViewClassForFullPlatformWindowStyleMask:"),function(self,_1a8,_1a9){ +with(self){ +return _CPBorderlessBridgeWindowView; +} +}),new objj_method(sel_getUid("frameRectForContentRect:styleMask:"),function(self,_1aa,_1ab,_1ac){ +with(self){ +return objj_msgSend(objj_msgSend(objj_msgSend(self,"class"),"_windowViewClassForStyleMask:",_1ac),"frameRectForContentRect:",_1ab); +} +})]); +var _188=function(a,b,_1ad){ +var _1ae=objj_msgSend(a,"convertRect:toView:",objj_msgSend(a,"bounds"),nil),_1af=objj_msgSend(b,"convertRect:toView:",objj_msgSend(b,"bounds"),nil); +if(CGRectGetMinY(_1ae)=_11){ +objj_msgSend(_windows,"addObject:",_f); +}else{ +objj_msgSend(_windows,"insertObject:atIndex:",_f,_10); +} +for(;_12<_11;++_12){ +_windows[_12]._index=_12; +_windows[_12]._DOMElement.style.zIndex=_12; +} +if(_f._DOMElement.parentNode!==_DOMElement){ +_DOMElement.appendChild(_f._DOMElement); +_f._isVisible=YES; +if(objj_msgSend(_f,"isFullBridge")){ +objj_msgSend(_f,"setFrame:",objj_msgSend(_f._platformWindow,"usableContentFrame")); +} +} +} +}),new objj_method(sel_getUid("orderedWindows"),function(_14,_15){ +with(_14){ +return _windows; +} +})]); +p;22;CPPlatformWindow+DOM.jt;32978;@STATIC;1.0;I;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.ji;9;CPEvent.ji;8;CPText.ji;17;CPCompatibility.ji;18;CPDOMWindowLayer.ji;12;CPPlatform.ji;18;CPPlatformWindow.ji;26;CPPlatformWindow+DOMKeys.jt;32764; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPRunLoop.j",NO); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPText.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPDOMWindowLayer.j",YES); +objj_executeFile("CPPlatform.j",YES); +objj_executeFile("CPPlatformWindow.j",YES); +objj_executeFile("CPPlatformWindow+DOMKeys.j",YES); +var _1=objj_msgSend(CPSet,"set"); +var _2,_3,_4,_5; +var _6={},_7={},_8={},_9={61:187,59:186},_a={}; +_6[CPKeyCodes.A]=YES; +_8[CPKeyCodes.F1]=YES; +_8[CPKeyCodes.F2]=YES; +_8[CPKeyCodes.F3]=YES; +_8[CPKeyCodes.F4]=YES; +_8[CPKeyCodes.F5]=YES; +_8[CPKeyCodes.F6]=YES; +_8[CPKeyCodes.F7]=YES; +_8[CPKeyCodes.F8]=YES; +_8[CPKeyCodes.F9]=YES; +_8[CPKeyCodes.F10]=YES; +_8[CPKeyCodes.F11]=YES; +_8[CPKeyCodes.F12]=YES; +_a[CPKeyCodes.BACKSPACE]=CPDeleteCharacter; +_a[CPKeyCodes.DELETE]=CPDeleteFunctionKey; +_a[CPKeyCodes.TAB]=CPTabCharacter; +_a[CPKeyCodes.ENTER]=CPCarriageReturnCharacter; +_a[CPKeyCodes.ESC]=CPEscapeFunctionKey; +_a[CPKeyCodes.PAGE_UP]=CPPageUpFunctionKey; +_a[CPKeyCodes.PAGE_DOWN]=CPPageDownFunctionKey; +_a[CPKeyCodes.LEFT]=CPLeftArrowFunctionKey; +_a[CPKeyCodes.UP]=CPUpArrowFunctionKey; +_a[CPKeyCodes.RIGHT]=CPRightArrowFunctionKey; +_a[CPKeyCodes.DOWN]=CPDownArrowFunctionKey; +_a[CPKeyCodes.SEMICOLON]=";"; +_a[CPKeyCodes.DASH]="-"; +_a[CPKeyCodes.EQUALS]="="; +_a[CPKeyCodes.COMMA]=","; +_a[CPKeyCodes.PERIOD]="."; +_a[CPKeyCodes.SLASH]="/"; +_a[CPKeyCodes.APOSTROPHE]="`"; +_a[CPKeyCodes.SINGLE_QUOTE]="'"; +_a[CPKeyCodes.OPEN_SQUARE_BRACKET]="["; +_a[CPKeyCodes.BACKSLASH]="\\"; +_a[CPKeyCodes.CLOSE_SQUARE_BRACKET]="]"; +var _b=[CPKeyCodes.META,CPKeyCodes.MAC_FF_META,CPKeyCodes.CTRL,CPKeyCodes.ALT,CPKeyCodes.SHIFT]; +var _c=objj_msgSend(CPPlatform,"supportsDragAndDrop"); +var _d=objj_getClass("CPPlatformWindow"); +if(!_d){ +throw new SyntaxError("*** Could not find definition for class \"CPPlatformWindow\""); +} +var _e=_d.isa; +class_addMethods(_d,[new objj_method(sel_getUid("_init"),function(_f,_10){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPPlatformWindow").super_class},"init"); +if(_f){ +_DOMWindow=window; +_contentRect={origin:{x:0,y:0},size:{width:0,height:0}}; +_windowLevels=[]; +_windowLayers=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_f,"registerDOMWindow"); +objj_msgSend(_f,"updateFromNativeContentRect"); +_charCodes={}; +} +return _f; +} +}),new objj_method(sel_getUid("nativeContentRect"),function(_11,_12){ +with(_11){ +if(!_DOMWindow){ +return objj_msgSend(_11,"contentRect"); +} +if(_DOMWindow.cpFrame){ +return _DOMWindow.cpFrame(); +} +var _13={origin:{x:0,y:0},size:{width:0,height:0}}; +if(window.screenTop){ +_13.origin={x:_DOMWindow.screenLeft,y:_DOMWindow.screenTop}; +}else{ +if(window.screenX){ +_13.origin={x:_DOMWindow.screenX,y:_DOMWindow.screenY}; +} +} +if(_DOMWindow.innerWidth){ +_13.size={width:_DOMWindow.innerWidth,height:_DOMWindow.innerHeight}; +}else{ +if(document.documentElement&&document.documentElement.clientWidth){ +_13.size={width:_DOMWindow.document.documentElement.clientWidth,height:_DOMWindow.document.documentElement.clientHeight}; +}else{ +_13.size={width:_DOMWindow.document.body.clientWidth,height:_DOMWindow.document.body.clientHeight}; +} +} +return _13; +} +}),new objj_method(sel_getUid("updateNativeContentRect"),function(_14,_15){ +with(_14){ +if(!_DOMWindow){ +return; +} +if(typeof _DOMWindow["cpSetFrame"]==="function"){ +return _DOMWindow.cpSetFrame(objj_msgSend(_14,"contentRect")); +} +var _16=objj_msgSend(_14,"contentRect").origin,_17=objj_msgSend(_14,"nativeContentRect").origin; +if(_16.x!==_17.x||_16.y!==_17.y){ +_DOMWindow.moveBy(_16.x-_17.x,_16.y-_17.y); +} +var _18=objj_msgSend(_14,"contentRect").size,_19=objj_msgSend(_14,"nativeContentRect").size; +if(_18.width!==_19.width||_18.height!==_19.height){ +_DOMWindow.resizeBy(_18.width-_19.width,_18.height-_19.height); +} +} +}),new objj_method(sel_getUid("orderBack:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_DOMWindow){ +_DOMWindow.blur(); +} +} +}),new objj_method(sel_getUid("createDOMElements"),function(_1d,_1e){ +with(_1d){ +var _1f=_DOMWindow.document; +_DOMFocusElement=_1f.createElement("input"); +_DOMFocusElement.style.position="absolute"; +_DOMFocusElement.style.zIndex="-1000"; +_DOMFocusElement.style.opacity="0"; +_DOMFocusElement.style.filter="alpha(opacity=0)"; +_DOMFocusElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMFocusElement); +_DOMPasteboardElement=_1f.createElement("textarea"); +_DOMPasteboardElement.style.position="absolute"; +_DOMPasteboardElement.style.top="-10000px"; +_DOMPasteboardElement.style.zIndex="999"; +_DOMPasteboardElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMPasteboardElement); +_DOMPasteboardElement.blur(); +_DOMEventGuard=_1f.createElement("div"); +_DOMEventGuard.style.position="absolute"; +_DOMEventGuard.style.top="0px"; +_DOMEventGuard.style.left="0px"; +_DOMEventGuard.style.width="100%"; +_DOMEventGuard.style.height="100%"; +_DOMEventGuard.style.zIndex="999"; +_DOMEventGuard.style.display="none"; +_DOMEventGuard.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMEventGuard); +_DOMScrollingElement=_1f.createElement("div"); +_DOMScrollingElement.style.position="absolute"; +_DOMScrollingElement.style.visibility="hidden"; +_DOMScrollingElement.style.zIndex="998"; +_DOMScrollingElement.style.height="60px"; +_DOMScrollingElement.style.width="60px"; +_DOMScrollingElement.style.overflow="scroll"; +_DOMScrollingElement.style.opacity="0"; +_DOMScrollingElement.style.filter="alpha(opacity=0)"; +_DOMScrollingElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMScrollingElement); +var _20=_1f.createElement("div"); +_20.style.width="400px"; +_20.style.height="400px"; +_DOMScrollingElement.appendChild(_20); +_DOMScrollingElement.scrollTop=150; +_DOMScrollingElement.scrollLeft=150; +} +}),new objj_method(sel_getUid("registerDOMWindow"),function(_21,_22){ +with(_21){ +var _23=_DOMWindow.document; +_DOMBodyElement=_23.getElementById("cappuccino-body")||_23.body; +if(_c){ +_DOMBodyElement.style["-khtml-user-select"]="none"; +} +_DOMBodyElement.webkitTouchCallout="none"; +objj_msgSend(_21,"createDOMElements"); +objj_msgSend(_21,"_addLayers"); +var _24=objj_msgSend(_21,"class"),_25=class_getMethodImplementation(_24,sel_getUid("dragEvent:")),_26=function(_27){ +_25(_21,nil,_27); +},_28=sel_getUid("resizeEvent:"),_29=class_getMethodImplementation(_24,_28),_2a=function(_2b){ +_29(_21,nil,_2b); +},_2c=sel_getUid("copyEvent:"),_2d=class_getMethodImplementation(_24,_2c),_2e=function(_2f){ +_2d(_21,nil,_2f); +},_30=sel_getUid("pasteEvent:"),_31=class_getMethodImplementation(_24,_30),_32=function(_33){ +_31(_21,nil,_33); +},_34=sel_getUid("keyEvent:"),_35=class_getMethodImplementation(_24,_34),_36=function(_37){ +_35(_21,nil,_37); +},_38=sel_getUid("mouseEvent:"),_39=class_getMethodImplementation(_24,_38),_3a=function(_3b){ +_39(_21,nil,_3b); +},_3c=sel_getUid("contextMenuEvent:"),_3d=class_getMethodImplementation(_24,_3c),_3e=function(_3f){ +return _3d(_21,nil,_3f); +},_40=sel_getUid("scrollEvent:"),_41=class_getMethodImplementation(_24,_40),_42=function(_43){ +_41(_21,nil,_43); +},_44=sel_getUid("touchEvent:"),_45=class_getMethodImplementation(_24,_44),_46=function(_47){ +_45(_21,nil,_47); +}; +if(_23.addEventListener){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_23.addEventListener("dragstart",_26,NO); +_23.addEventListener("drag",_26,NO); +_23.addEventListener("dragend",_26,NO); +_23.addEventListener("dragover",_26,NO); +_23.addEventListener("dragleave",_26,NO); +_23.addEventListener("drop",_26,NO); +} +_23.addEventListener("mouseup",_3a,NO); +_23.addEventListener("mousedown",_3a,NO); +_23.addEventListener("mousemove",_3a,NO); +_23.addEventListener("contextmenu",_3e,NO); +_23.addEventListener("beforecopy",_2e,NO); +_23.addEventListener("beforecut",_2e,NO); +_23.addEventListener("beforepaste",_32,NO); +_23.addEventListener("keyup",_36,NO); +_23.addEventListener("keydown",_36,NO); +_23.addEventListener("keypress",_36,NO); +_23.addEventListener("touchstart",_46,NO); +_23.addEventListener("touchend",_46,NO); +_23.addEventListener("touchmove",_46,NO); +_23.addEventListener("touchcancel",_46,NO); +_DOMWindow.addEventListener("DOMMouseScroll",_42,NO); +_DOMWindow.addEventListener("mousewheel",_42,NO); +_DOMWindow.addEventListener("resize",_2a,NO); +_DOMWindow.addEventListener("unload",function(){ +objj_msgSend(_21,"updateFromNativeContentRect"); +objj_msgSend(_21,"_removeLayers"); +_23.removeEventListener("mouseup",_3a,NO); +_23.removeEventListener("mousedown",_3a,NO); +_23.removeEventListener("mousemove",_3a,NO); +_23.removeEventListener("contextmenu",_3e,NO); +_23.removeEventListener("keyup",_36,NO); +_23.removeEventListener("keydown",_36,NO); +_23.removeEventListener("keypress",_36,NO); +_23.removeEventListener("beforecopy",_2e,NO); +_23.removeEventListener("beforecut",_2e,NO); +_23.removeEventListener("beforepaste",_32,NO); +_23.removeEventListener("touchstart",_46,NO); +_23.removeEventListener("touchend",_46,NO); +_23.removeEventListener("touchmove",_46,NO); +_DOMWindow.removeEventListener("resize",_2a,NO); +_DOMWindow.removeEventListener("DOMMouseScroll",_42,NO); +_DOMWindow.removeEventListener("mousewheel",_42,NO); +objj_msgSend(_1,"removeObject:",_21); +_21._DOMWindow=nil; +},NO); +}else{ +_23.attachEvent("onmouseup",_3a); +_23.attachEvent("onmousedown",_3a); +_23.attachEvent("onmousemove",_3a); +_23.attachEvent("ondblclick",_3a); +_23.attachEvent("oncontextmenu",_3e); +_23.attachEvent("onkeyup",_36); +_23.attachEvent("onkeydown",_36); +_23.attachEvent("onkeypress",_36); +_DOMWindow.attachEvent("onresize",_2a); +_DOMWindow.onmousewheel=_42; +_23.onmousewheel=_42; +_DOMBodyElement.ondrag=function(){ +return NO; +}; +_DOMBodyElement.onselectstart=function(){ +return _DOMWindow.event.srcElement===_DOMPasteboardElement; +}; +_DOMWindow.attachEvent("onbeforeunload",function(){ +objj_msgSend(_21,"updateFromNativeContentRect"); +objj_msgSend(_21,"_removeLayers"); +_23.detachEvent("onmouseup",_3a); +_23.detachEvent("onmousedown",_3a); +_23.detachEvent("onmousemove",_3a); +_23.detachEvent("ondblclick",_3a); +_23.detachEvent("oncontextmenu",_3e); +_23.detachEvent("onkeyup",_36); +_23.detachEvent("onkeydown",_36); +_23.detachEvent("onkeypress",_36); +_DOMWindow.detachEvent("onresize",_2a); +_DOMWindow.onmousewheel=NULL; +_23.onmousewheel=NULL; +_DOMBodyElement.ondrag=NULL; +_DOMBodyElement.onselectstart=NULL; +objj_msgSend(_1,"removeObject:",_21); +_21._DOMWindow=nil; +},NO); +} +} +}),new objj_method(sel_getUid("orderFront:"),function(_48,_49,_4a){ +with(_48){ +if(_DOMWindow){ +return _DOMWindow.focus(); +} +_DOMWindow=window.open("","_blank","menubar=no,location=no,resizable=yes,scrollbars=no,status=no,left="+(_contentRect.origin.x)+",top="+(_contentRect.origin.y)+",width="+(_contentRect.size.width)+",height="+(_contentRect.size.height)); +objj_msgSend(_1,"addObject:",_48); +_DOMWindow.document.write(""); +_DOMWindow.document.close(); +if(!objj_msgSend(CPPlatform,"isBrowser")){ +_DOMWindow.cpWindowNumber=objj_msgSend(_48._only,"windowNumber"); +_DOMWindow.cpSetFrame(_contentRect); +_DOMWindow.cpSetLevel(_level); +_DOMWindow.cpSetHasShadow(_hasShadow); +_DOMWindow.cpSetShadowStyle(_shadowStyle); +} +objj_msgSend(_48,"registerDOMWindow"); +_DOMBodyElement.style.cursor=objj_msgSend(objj_msgSend(CPCursor,"currentCursor"),"_cssString"); +} +}),new objj_method(sel_getUid("orderOut:"),function(_4b,_4c,_4d){ +with(_4b){ +if(!_DOMWindow){ +return; +} +_DOMWindow.close(); +} +}),new objj_method(sel_getUid("dragEvent:"),function(_4e,_4f,_50){ +with(_4e){ +var _51=_50.type,_52=objj_msgSend(CPDragServer,"sharedDragServer"),_53={x:_50.clientX,y:_50.clientY},_54=objj_msgSend(_CPDOMDataTransferPasteboard,"DOMDataTransferPasteboard"); +objj_msgSend(_54,"_setDataTransfer:",_50.dataTransfer); +if(_50.type==="dragstart"){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +objj_msgSend(_54,"_setPasteboard:",objj_msgSend(_52,"draggingPasteboard")); +var _55=objj_msgSend(_52,"draggedWindow"),_56=objj_msgSend(_55,"frame"),_57=_55._DOMElement; +_57.style.left=-(_56.size.width)+"px"; +_57.style.top=-(_56.size.height)+"px"; +var _58=_57.parentNode; +if(_58){ +_58.removeChild(_57); +} +_DOMBodyElement.appendChild(_57); +var _59=objj_msgSend(_52,"draggingOffset"); +_50.dataTransfer.setDragImage(_57,_59.width,_59.height); +_50.dataTransfer.effectAllowed="all"; +objj_msgSend(_52,"draggingStartedInPlatformWindow:globalLocation:",_4e,objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:_50.screenY}); +}else{ +if(_51==="drag"){ +var y=_50.screenY; +if(CPFeatureIsCompatible(CPHTML5DragAndDropSourceYOffBy1)){ +y-=1; +} +objj_msgSend(_52,"draggingSourceUpdatedWithGlobalLocation:",objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:y}); +}else{ +if(_51==="dragover"||_51==="dragleave"){ +if(_50.preventDefault){ +_50.preventDefault(); +} +var _5a="none",_5b=objj_msgSend(_52,"draggingUpdatedInPlatformWindow:location:",_4e,_53); +if(_5b===CPDragOperationMove||_5b===CPDragOperationGeneric||_5b===CPDragOperationPrivate){ +_5a="move"; +}else{ +if(_5b===CPDragOperationCopy){ +_5a="copy"; +}else{ +if(_5b===CPDragOperationLink){ +_5a="link"; +} +} +} +_50.dataTransfer.dropEffect=_5a; +}else{ +if(_51==="dragend"){ +var _5a=_50.dataTransfer.dropEffect; +if(_5a==="move"){ +_5b=CPDragOperationMove; +}else{ +if(_5a==="copy"){ +_5b=CPDragOperationCopy; +}else{ +if(_5a==="link"){ +_5b=CPDragOperationLink; +}else{ +_5b=CPDragOperationNone; +} +} +} +objj_msgSend(_52,"draggingEndedInPlatformWindow:globalLocation:operation:",_4e,objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:_50.screenY},_5b); +}else{ +objj_msgSend(_52,"performDragOperationInPlatformWindow:",_4e); +if(_50.preventDefault){ +_50.preventDefault(); +} +if(_50.stopPropagation){ +_50.stopPropagation(); +} +} +} +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("keyEvent:"),function(_5c,_5d,_5e){ +with(_5c){ +var _5f,_60=_5e.timeStamp||new Date(),_61=_5e.target||_5e.srcElement,_62=objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"windowNumber"),_63=(_5e.shiftKey?CPShiftKeyMask:0)|(_5e.ctrlKey?CPControlKeyMask:0)|(_5e.altKey?CPAlternateKeyMask:0)|(_5e.metaKey?CPCommandKeyMask:0); +_4=YES; +if(!(_7[String.fromCharCode(_5e.keyCode||_5e.charCode).toLowerCase()]||_6[_5e.keyCode])){ +if((_63&(CPControlKeyMask|CPCommandKeyMask))||_8[_5e.keyCode]){ +_4=NO; +} +} +var _64=NO,_65=NO,_66=nil; +switch(_5e.type){ +case "keydown": +if(_5e.keyCode in _9){ +_keyCode=_9[_5e.keyCode]; +}else{ +_keyCode=_5e.keyCode; +} +var _67; +if(_5e.which===0||_5e.charCode===0){ +_67=_a[_keyCode]; +} +if(!_67){ +_67=String.fromCharCode(_keyCode).toLowerCase(); +} +_66=(_63&CPShiftKeyMask||_capsLockActive)?_67.toUpperCase():_67; +if(_keyCode===CPKeyCodes.CAPS_LOCK){ +_capsLockActive=YES; +} +if(objj_msgSend(_b,"containsObject:",_keyCode)){ +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPFlagsChanged,location,_63,_60,_62,nil,nil,nil,NO,_keyCode); +break; +}else{ +if(_63&(CPControlKeyMask|CPCommandKeyMask)){ +var _68=objj_msgSend(_5c,"_validateCopyCutOrPasteEvent:flags:",_5e,_63); +if(_67==="v"&&_68){ +if(!_ignoreNativePastePreparation){ +_DOMPasteboardElement.select(); +_DOMPasteboardElement.value=""; +} +_64=YES; +}else{ +if((_67=="c"||_67=="x")&&_68){ +_65=YES; +if(_ignoreNativeCopyOrCutEvent){ +break; +} +} +} +}else{ +if(CPKeyCodes.firesKeyPressEvent(_keyCode,_lastKey,_5e.shiftKey,_5e.ctrlKey,_5e.altKey)){ +_4=NO; +break; +}else{ +} +} +} +case "keypress": +if(_5e.type==="keypress"&&(_63&(CPControlKeyMask|CPCommandKeyMask))){ +break; +} +var _69=_keyCode,_6a=_5e.keyCode||_5e.charCode,_6b=(_charCodes[_69]!=nil); +_lastKey=_69; +_charCodes[_69]=_6a; +var _67=_66; +if(!_67&&(_5e.which===0||_5e.charCode===0)){ +_67=_a[_6a]; +} +if(!_67){ +_67=String.fromCharCode(_6a); +} +_6c=_67.toLowerCase(); +if(!_66&&(_63&CPCommandKeyMask)&&((_63&CPShiftKeyMask)||_capsLockActive)){ +_67=_67.toUpperCase(); +} +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyDown,location,_63,_60,_62,nil,_67,_6c,_6b,_6a); +if(_64){ +_pasteboardKeyDownEvent=_5f; +window.setNativeTimeout(function(){ +objj_msgSend(_5c,"_checkPasteboardElement"); +},0); +} +break; +case "keyup": +var _69=_5e.keyCode,_6a=_charCodes[_69]; +_keyCode=-1; +_lastKey=-1; +_charCodes[_69]=nil; +_ignoreNativeCopyOrCutEvent=NO; +_ignoreNativePastePreparation=NO; +if(_69===CPKeyCodes.CAPS_LOCK){ +_capsLockActive=NO; +} +if(objj_msgSend(_b,"containsObject:",_69)){ +break; +} +var _67=_a[_6a]||String.fromCharCode(_6a),_6c=_67.toLowerCase(); +if(!(_63&CPShiftKeyMask)&&(_63&CPCommandKeyMask)&&!_capsLockActive){ +_67=_6c; +} +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyUp,location,_63,_60,_62,nil,_67,_6c,NO,_69); +break; +} +if(_5f&&!_64){ +_5f._DOMEvent=_5e; +objj_msgSend(CPApp,"sendEvent:",_5f); +if(_65){ +objj_msgSend(_5c,"_primePasteboardElement"); +} +} +if(_4){ +_3(_5e,_5c); +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("copyEvent:"),function(_6d,_6e,_6f){ +with(_6d){ +if(objj_msgSend(_6d,"_validateCopyCutOrPasteEvent:flags:",_6f,CPPlatformActionKeyMask)&&!_ignoreNativeCopyOrCutEvent){ +var cut=_6f.type==="beforecut",_70=cut?CPKeyCodes.X:CPKeyCodes.C,_71=cut?"x":"c",_72=_6f.timeStamp?_6f.timeStamp:new Date(),_73=objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"windowNumber"),_74=CPPlatformActionKeyMask; +event=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyDown,location,_74,_72,_73,nil,_71,_71,NO,_70); +event._DOMEvent=_6f; +objj_msgSend(CPApp,"sendEvent:",event); +objj_msgSend(_6d,"_primePasteboardElement"); +_ignoreNativeCopyOrCutEvent=YES; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("pasteEvent:"),function(_75,_76,_77){ +with(_75){ +if(objj_msgSend(_75,"_validateCopyCutOrPasteEvent:flags:",_77,CPPlatformActionKeyMask)){ +_DOMPasteboardElement.focus(); +_DOMPasteboardElement.select(); +_DOMPasteboardElement.value=""; +_ignoreNativePastePreparation=YES; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_validateCopyCutOrPasteEvent:flags:"),function(_78,_79,_7a,_7b){ +with(_78){ +return (((_7a.target||_7a.srcElement).nodeName.toUpperCase()!=="INPUT"&&(_7a.target||_7a.srcElement).nodeName.toUpperCase()!=="TEXTAREA")||_7a.target===_DOMPasteboardElement)&&(_7b&CPPlatformActionKeyMask); +} +}),new objj_method(sel_getUid("_primePasteboardElement"),function(_7c,_7d){ +with(_7c){ +var _7e=objj_msgSend(CPPasteboard,"generalPasteboard"),_7f=objj_msgSend(_7e,"types"); +if(_7f.length){ +if(objj_msgSend(_7f,"indexOfObjectIdenticalTo:",CPStringPboardType)!=CPNotFound){ +_DOMPasteboardElement.value=objj_msgSend(_7e,"stringForType:",CPStringPboardType); +}else{ +_DOMPasteboardElement.value=objj_msgSend(_7e,"_generateStateUID"); +} +_DOMPasteboardElement.focus(); +_DOMPasteboardElement.select(); +window.setNativeTimeout(function(){ +objj_msgSend(_7c,"_clearPasteboardElement"); +},0); +} +} +}),new objj_method(sel_getUid("_checkPasteboardElement"),function(_80,_81){ +with(_80){ +var _82=_DOMPasteboardElement.value; +if(objj_msgSend(_82,"length")){ +var _83=objj_msgSend(CPPasteboard,"generalPasteboard"); +if(objj_msgSend(_83,"_stateUID")!=_82){ +objj_msgSend(_83,"declareTypes:owner:",[CPStringPboardType],_80); +objj_msgSend(_83,"setString:forType:",_82,CPStringPboardType); +} +} +objj_msgSend(_80,"_clearPasteboardElement"); +objj_msgSend(CPApp,"sendEvent:",_pasteboardKeyDownEvent); +_pasteboardKeyDownEvent=nil; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_clearPasteboardElement"),function(_84,_85){ +with(_84){ +_DOMPasteboardElement.value=""; +_DOMPasteboardElement.blur(); +} +}),new objj_method(sel_getUid("scrollEvent:"),function(_86,_87,_88){ +with(_86){ +if(_hideDOMScrollingElementTimeout){ +clearTimeout(_hideDOMScrollingElementTimeout); +_hideDOMScrollingElementTimeout=nil; +} +if(!_88){ +_88=window.event; +} +var _89=nil; +if(CPFeatureIsCompatible(CPJavaScriptMouseWheelValues_8_15)){ +var x=_88._offsetX||0,y=_88._offsetY||0,_8a=_88.target; +while(_8a.nodeType!==1){ +_8a=_8a.parentNode; +} +if(_8a.offsetParent){ +do{ +x+=_8a.offsetLeft; +y+=_8a.offsetTop; +}while(_8a=_8a.offsetParent); +} +_89={x:(x+((_88.clientX-8)/15)),y:(y+((_88.clientY-8)/15))}; +}else{ +if(_88._overrideLocation){ +_89=_88._overrideLocation; +}else{ +_89={x:_88.clientX,y:_88.clientY}; +} +} +var _8b=0,_8c=0,_8d=0,_8e=_88.timeStamp?_88.timeStamp:new Date(),_8f=(_88.shiftKey?CPShiftKeyMask:0)|(_88.ctrlKey?CPControlKeyMask:0)|(_88.altKey?CPAlternateKeyMask:0)|(_88.metaKey?CPCommandKeyMask:0); +_DOMScrollingElement.style.visibility="visible"; +_DOMScrollingElement.style.top=(_89.y-15)+"px"; +_DOMScrollingElement.style.left=(_89.x-15)+"px"; +_4=NO; +var _90=objj_msgSend(_86,"hitTest:",_89); +if(!_90){ +return; +} +var _8d=objj_msgSend(_90,"windowNumber"); +_89=objj_msgSend(_90,"convertBridgeToBase:",_89); +var _91=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPScrollWheel,_89,_8f,_8e,_8d,nil,-1,1,0); +_91._DOMEvent=_88; +setTimeout(function(){ +var _92=_DOMScrollingElement.scrollLeft-150,_8c=_DOMScrollingElement.scrollTop-150; +if(_92||_8c){ +_91._deltaX=_92; +_91._deltaY=_8c; +objj_msgSend(CPApp,"sendEvent:",_91); +} +_DOMScrollingElement.scrollLeft=150; +_DOMScrollingElement.scrollTop=150; +},0); +_hideDOMScrollingElementTimeout=setTimeout(function(){ +_DOMScrollingElement.style.visibility="hidden"; +},300); +} +}),new objj_method(sel_getUid("resizeEvent:"),function(_93,_94,_95){ +with(_93){ +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(CPApp._activeMenu,"cancelTracking"); +} +var _96=objj_msgSend(_93,"contentRect").size; +objj_msgSend(_93,"updateFromNativeContentRect"); +var _97=_windowLevels,_98=_windowLayers,_99=_97.length; +while(_99--){ +var _9a=objj_msgSend(_98,"objectForKey:",_97[_99])._windows,_9b=_9a.length; +while(_9b--){ +objj_msgSend(_9a[_9b],"resizeWithOldPlatformWindowSize:",_96); +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("touchEvent:"),function(_9c,_9d,_9e){ +with(_9c){ +if(_9e.touches&&(_9e.touches.length==1||(_9e.touches.length==0&&_9e.changedTouches.length==1))){ +var _9f={}; +switch(_9e.type){ +case CPDOMEventTouchStart: +_9f.type=CPDOMEventMouseDown; +break; +case CPDOMEventTouchEnd: +_9f.type=CPDOMEventMouseUp; +break; +case CPDOMEventTouchMove: +_9f.type=CPDOMEventMouseMoved; +break; +case CPDOMEventTouchCancel: +_9f.type=CPDOMEventMouseUp; +break; +} +var _a0=_9e.touches.length?_9e.touches[0]:_9e.changedTouches[0]; +_9f.clientX=_a0.clientX; +_9f.clientY=_a0.clientY; +_9f.timestamp=_9e.timestamp; +_9f.target=_9e.target; +_9f.shiftKey=_9f.ctrlKey=_9f.altKey=_9f.metaKey=false; +_9f.preventDefault=function(){ +if(_9e.preventDefault){ +_9e.preventDefault(); +} +}; +_9f.stopPropagation=function(){ +if(_9e.stopPropagation){ +_9e.stopPropagation(); +} +}; +objj_msgSend(_9c,"mouseEvent:",_9f); +return; +}else{ +if(_9e.preventDefault){ +_9e.preventDefault(); +} +if(_9e.stopPropagation){ +_9e.stopPropagation(); +} +} +} +}),new objj_method(sel_getUid("mouseEvent:"),function(_a1,_a2,_a3){ +with(_a1){ +var _a4=_overriddenEventType||_a3.type; +if(_a4==="dblclick"){ +_overriddenEventType=CPDOMEventMouseDown; +objj_msgSend(_a1,"mouseEvent:",_a3); +_overriddenEventType=CPDOMEventMouseUp; +objj_msgSend(_a1,"mouseEvent:",_a3); +_overriddenEventType=nil; +return; +} +var _a5,_a6={x:_a3.clientX,y:_a3.clientY},_a7=_a3.timeStamp?_a3.timeStamp:new Date(),_a8=(_a3.target||_a3.srcElement),_a9=0,_aa=(_a3.shiftKey?CPShiftKeyMask:0)|(_a3.ctrlKey?CPControlKeyMask:0)|(_a3.altKey?CPAlternateKeyMask:0)|(_a3.metaKey?CPCommandKeyMask:0); +_4=YES; +if(_mouseDownWindow){ +_a9=objj_msgSend(_mouseDownWindow,"windowNumber"); +}else{ +var _ab=objj_msgSend(_a1,"hitTest:",_a6); +if((_a3.type===CPDOMEventMouseDown)&&_ab){ +_mouseDownWindow=_ab; +} +_a9=objj_msgSend(_ab,"windowNumber"); +} +if(_a9){ +_a6=objj_msgSend(CPApp._windows[_a9],"convertPlatformWindowToBase:",_a6); +} +if(_a4==="mouseup"){ +if(_mouseIsDown){ +_a5=_ac(_a3,_mouseDownIsRightClick?CPRightMouseUp:CPLeftMouseUp,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseUp,_a7,_a6),0); +_mouseIsDown=NO; +_lastMouseUp=_a5; +_mouseDownWindow=nil; +_mouseDownIsRightClick=NO; +} +if(_DOMEventMode){ +_DOMEventMode=NO; +return; +} +}else{ +if(_a4==="mousedown"){ +var _ad=_a3.button; +_mouseDownIsRightClick=_ad==2||(CPBrowserIsOperatingSystem(CPMacOperatingSystem)&&_ad==0&&_aa&CPControlKeyMask); +if(_a8.tagName==="INPUT"&&_a8!=_DOMFocusElement){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMBodyElement.setAttribute("draggable","false"); +_DOMBodyElement.style["-khtml-user-drag"]="none"; +} +_DOMEventMode=YES; +_mouseIsDown=YES; +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_mouseDownIsRightClick?CPRightMouseDown:CPLeftMouseDown,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0)); +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_mouseDownIsRightClick?CPRightMouseUp:CPLeftMouseUp,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0)); +return; +}else{ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMBodyElement.setAttribute("draggable","true"); +_DOMBodyElement.style["-khtml-user-drag"]="element"; +} +} +_5=YES; +_a5=_ac(_a3,_mouseDownIsRightClick?CPRightMouseDown:CPLeftMouseDown,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0); +_mouseIsDown=YES; +_lastMouseDown=_a5; +}else{ +if(_DOMEventMode){ +return; +} +_a5=_ac(_a3,_mouseIsDown?(_mouseDownIsRightClick?CPRightMouseDragged:CPLeftMouseDragged):CPMouseMoved,_a6,_aa,_a7,_a9,nil,-1,1,0); +} +} +var _ae=objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"isDragging"); +if(_a5&&(!_ae||!_c)){ +_a5._DOMEvent=_a3; +objj_msgSend(CPApp,"sendEvent:",_a5); +} +if(_4&&(!_c||_a4!=="mousedown"&&!_ae)){ +_3(_a3,_a1); +} +var _af=NO; +for(var i=0;i_b9){ +_bc=_bd-1; +}else{ +low=_bd+1; +} +} +var _be=0; +if(_bd!==undefined){ +_be=_windowLevels[_bd]>_b9?_bd:_bd+1; +} +objj_msgSend(_windowLevels,"insertObject:atIndex:",_b9,_be); +_bb._DOMElement.style.zIndex=_b9; +_DOMBodyElement.appendChild(_bb._DOMElement); +} +return _bb; +} +}),new objj_method(sel_getUid("order:window:relativeTo:"),function(_bf,_c0,_c1,_c2,_c3){ +with(_bf){ +objj_msgSend(CPPlatform,"initializeScreenIfNecessary"); +var _c4=objj_msgSend(_bf,"layerAtLevel:create:",objj_msgSend(_c2,"level"),_c1!==CPWindowOut); +if(_c1===CPWindowOut){ +return objj_msgSend(_c4,"removeWindow:",_c2); +} +var _c5=CPNotFound; +if(_c3){ +_c5=_c1===CPWindowAbove?_c3._index+1:_c3._index; +} +objj_msgSend(_c4,"insertWindow:atIndex:",_c2,_c5); +} +}),new objj_method(sel_getUid("_removeLayers"),function(_c6,_c7){ +with(_c6){ +var _c8=_windowLevels,_c9=_windowLayers,_ca=_c8.length; +while(_ca--){ +var _cb=objj_msgSend(_c9,"objectForKey:",_c8[_ca]); +_DOMBodyElement.removeChild(_cb._DOMElement); +} +} +}),new objj_method(sel_getUid("_addLayers"),function(_cc,_cd){ +with(_cc){ +var _ce=_windowLevels,_cf=_windowLayers,_d0=_ce.length; +while(_d0--){ +var _d1=objj_msgSend(_cf,"objectForKey:",_ce[_d0]); +_DOMBodyElement.appendChild(_d1._DOMElement); +} +} +}),new objj_method(sel_getUid("_dragHitTest:pasteboard:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +var _d6=_windowLevels,_d7=_windowLayers,_d8=_d6.length; +while(_d8--){ +if(_d6[_d8]>=CPDraggingWindowLevel){ +continue; +} +var _d9=objj_msgSend(_d7,"objectForKey:",_d6[_d8])._windows,_da=_d9.length; +while(_da--){ +var _db=_d9[_da]; +if(objj_msgSend(_db,"_sharesChromeWithPlatformWindow")){ +return objj_msgSend(_db,"_dragHitTest:pasteboard:",_d4,_d5); +} +if(objj_msgSend(_db,"containsPoint:",_d4)){ +return objj_msgSend(_db,"_dragHitTest:pasteboard:",_d4,_d5); +} +} +} +return nil; +} +}),new objj_method(sel_getUid("_propagateCurrentDOMEvent:"),function(_dc,_dd,_de){ +with(_dc){ +_4=!_de; +} +}),new objj_method(sel_getUid("_willPropagateCurrentDOMEvent"),function(_df,_e0){ +with(_df){ +return !_4; +} +}),new objj_method(sel_getUid("_propagateContextMenuDOMEvent:"),function(_e1,_e2,_e3){ +with(_e1){ +if(_e3&&CPBrowserIsEngine(CPGeckoBrowserEngine)){ +_4=!_e3; +} +_5=!_e3; +} +}),new objj_method(sel_getUid("_willPropagateContextMenuDOMEvent"),function(_e4,_e5){ +with(_e4){ +return _5; +} +}),new objj_method(sel_getUid("hitTest:"),function(_e6,_e7,_e8){ +with(_e6){ +if(_e6._only){ +return _e6._only; +} +var _e9=_windowLevels,_ea=_windowLayers,_eb=_e9.length,_ec=nil; +while(_eb--&&!_ec){ +var _ed=objj_msgSend(_ea,"objectForKey:",_e9[_eb])._windows,_ee=_ed.length; +while(_ee--&&!_ec){ +var _ef=_ed[_ee]; +if(!_ef._ignoresMouseEvents&&objj_msgSend(_ef,"containsPoint:",_e8)){ +_ec=_ef; +} +} +} +return _ec; +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("visiblePlatformWindows"),function(_f0,_f1){ +with(_f0){ +if(objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"isVisible")){ +var set=objj_msgSend(CPSet,"setWithSet:",_1); +objj_msgSend(set,"addObject:",objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")); +return set; +}else{ +return _1; +} +} +}),new objj_method(sel_getUid("preventCharacterKeysFromPropagating:"),function(_f2,_f3,_f4){ +with(_f2){ +for(var i=_f4.length;i>0;i--){ +_7[""+_f4[i-1].toLowerCase()]=YES; +} +} +}),new objj_method(sel_getUid("preventCharacterKeyFromPropagating:"),function(_f5,_f6,_f7){ +with(_f5){ +_7[_f7.toLowerCase()]=YES; +} +}),new objj_method(sel_getUid("clearCharacterKeysToPreventFromPropagating"),function(_f8,_f9){ +with(_f8){ +_7={}; +} +}),new objj_method(sel_getUid("preventKeyCodesFromPropagating:"),function(_fa,_fb,_fc){ +with(_fa){ +for(var i=_fc.length;i>0;i--){ +_6[_fc[i-1]]=YES; +} +} +}),new objj_method(sel_getUid("preventKeyCodeFromPropagating:"),function(_fd,_fe,_ff){ +with(_fd){ +_6[_ff]=YES; +} +}),new objj_method(sel_getUid("clearKeyCodesToPreventFromPropagating"),function(self,_100){ +with(self){ +_6={}; +} +})]); +var _101=objj_msgSend(CPEvent,"class"); +var _ac=function(_102,_103,_104,_105,_106,_107,_108,_109,_10a,_10b){ +_102.isa=_101; +_102._type=_103; +_102._location=_104; +_102._modifierFlags=_105; +_102._timestamp=_106; +_102._windowNumber=_107; +_102._window=nil; +_102._context=_108; +_102._eventNumber=_109; +_102._clickCount=_10a; +_102._pressure=_10b; +return _102; +}; +var _10c=5,_10d=(typeof document!="undefined"&&document.addEventListener)?350:1000; +var _2=function(_10e,_10f,_110){ +if(!_10e){ +return 1; +} +var _111=objj_msgSend(_10e,"locationInWindow"); +return (_10f-objj_msgSend(_10e,"timestamp")<_10d&&ABS(_111.x-_110.x)<_10c&&ABS(_111.y-_110.y)<_10c)?objj_msgSend(_10e,"clickCount")+1:1; +}; +var _3=function(_112,_113){ +_112.cancelBubble=true; +_112.returnValue=false; +if(_112.preventDefault){ +_112.preventDefault(); +} +if(_112.stopPropagation){ +_112.stopPropagation(); +} +if(_112.type===CPDOMEventMouseDown){ +_113._DOMFocusElement.focus(); +_113._DOMFocusElement.blur(); +} +}; +CPWindowObjectList=function(){ +var _114=objj_msgSend(CPPlatformWindow,"visiblePlatformWindows"),_115=objj_msgSend(_114,"objectEnumerator"),_116=nil,_117=[]; +while(_116=objj_msgSend(_115,"nextObject")){ +var _118=_116._windowLevels,_119=_116._windowLayers,_11a=_118.length; +while(_11a--){ +var _11b=objj_msgSend(_119,"objectForKey:",_118[_11a])._windows,_11c=_11b.length; +while(_11c--){ +_117.push(_11b[_11c]); +} +} +} +return _117; +}; +CPWindowList=function(){ +var _11d=CPWindowObjectList(),_11e=[]; +for(var i=0,_11f=objj_msgSend(_11d,"count");i<_11f;i++){ +_11e.push(objj_msgSend(_11d[i],"windowNumber")); +} +return _11e; +}; +p;26;CPPlatformWindow+DOMKeys.jt;2336;@STATIC;1.0;t;2317; +CPKeyCodes={BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229}; +CPKeyCodes.firesKeyPressEvent=function(_1,_2,_3,_4,_5){ +if(!CPFeatureIsCompatible(CPJavascriptRemedialKeySupport)){ +return true; +} +if(CPBrowserIsOperatingSystem(CPMacOperatingSystem)&&_5){ +return CPKeyCodes.isCharacterKey(_1); +} +if(_5&&!_4){ +return false; +} +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)&&!_3&&(_4||_5)){ +return false; +} +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)&&_4&&_2==_1){ +return false; +} +switch(_1){ +case CPKeyCodes.ENTER: +return true; +case CPKeyCodes.ESC: +return !CPBrowserIsEngine(CPWebKitBrowserEngine); +} +return CPKeyCodes.isCharacterKey(_1); +}; +CPKeyCodes.isCharacterKey=function(_6){ +if(_6>=CPKeyCodes.ZERO&&_6<=CPKeyCodes.NINE){ +return true; +} +if(_6>=CPKeyCodes.NUM_ZERO&&_6<=CPKeyCodes.NUM_MULTIPLY){ +return true; +} +if(_6>=CPKeyCodes.A&&_6<=CPKeyCodes.Z){ +return true; +} +switch(_6){ +case CPKeyCodes.SPACE: +case CPKeyCodes.QUESTION_MARK: +case CPKeyCodes.NUM_PLUS: +case CPKeyCodes.NUM_MINUS: +case CPKeyCodes.NUM_PERIOD: +case CPKeyCodes.NUM_DIVISION: +case CPKeyCodes.SEMICOLON: +case CPKeyCodes.DASH: +case CPKeyCodes.EQUALS: +case CPKeyCodes.COMMA: +case CPKeyCodes.PERIOD: +case CPKeyCodes.SLASH: +case CPKeyCodes.APOSTROPHE: +case CPKeyCodes.SINGLE_QUOTE: +case CPKeyCodes.OPEN_SQUARE_BRACKET: +case CPKeyCodes.BACKSLASH: +case CPKeyCodes.CLOSE_SQUARE_BRACKET: +return true; +default: +return false; +} +}; +e; ADDED Site/Site/Frameworks/AppKit/Info.plist Index: Site/Site/Frameworks/AppKit/Info.plist ================================================================== --- Site/Site/Frameworks/AppKit/Info.plist +++ Site/Site/Frameworks/AppKit/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;18;CPBundleIdentifierS;15;com.280n.AppKitK;29;CPBundleInfoDictionaryVersiond;1;6K;12;CPBundleNameS;6;AppKitK;19;CPBundlePackageTypeS;4;FMWKK;15;CPBundleVersionS;5;0.8.1K;20;CPBundleEnvironmentsA;S;7;BrowserS;8;CommonJSE;K;18;CPBundleExecutableS;9;AppKit.sjK;36;CPBundleEnvironmentsWithImageSpritesA;S;7;BrowserE;E; ADDED Site/Site/Frameworks/AppKit/LICENSE Index: Site/Site/Frameworks/AppKit/LICENSE ================================================================== --- Site/Site/Frameworks/AppKit/LICENSE +++ Site/Site/Frameworks/AppKit/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site/Frameworks/AppKit/Resources/AboutPanel.cib Index: Site/Site/Frameworks/AppKit/Resources/AboutPanel.cib ================================================================== --- Site/Site/Frameworks/AppKit/Resources/AboutPanel.cib +++ Site/Site/Frameworks/AppKit/Resources/AboutPanel.cib @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;K;21;CPCibObjectRecordsKeyD;K;6;CP$UIDd;1;4E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;6E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;7E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;8E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;2;10E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;11E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;12E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;13E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;15E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;17E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;19E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;54E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;56E;E;E;S;16;IBCocoaFrameworkd;3;461D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;57E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;58E;E;D;K;10;$classnameS;15;CibObjectRecordK;8;$classesA;S;15;CibObjectRecordS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;59E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;60E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;62E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;63E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;64E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;48E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;65E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;66E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;67E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;68E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;69E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;47E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;70E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;71E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;72E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;73E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;74E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;46E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;75E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;76E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;77E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;78E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;79E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;80E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;81E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;44E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;53E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;60E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;82E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;17E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;51E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;39E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;83E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;42E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;52E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;60E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;84E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;39E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;50E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;60E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;85E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;40E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;51E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;86E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;87E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;88E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;89E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;90E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;91E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;93E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;94E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;96E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;92E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;97E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;E;D;K;10;$classnameS;11;CPImageViewK;8;$classesA;S;11;CPImageViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;99E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;100E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;101E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;102E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;107E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;108E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;109E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;12;$atext-colorD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;115E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;116E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;117E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;117E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;118E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;119E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;120E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;6;$afontD;K;6;CP$UIDd;3;121E;K;12;$atext-colorD;K;6;CP$UIDd;3;122E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;123E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;116E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;117E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;117E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;124E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;125E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;12;$atext-colorD;K;6;CP$UIDd;3;128E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;129E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;116E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;117E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;117E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;12;File's OwnerS;6;WindowS;11;ApplicationS;4;ViewS;10;Image viewS;10;Text fieldD;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;17E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;39E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;130E;E;S;18;CPWindowControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;5;ArrayD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;47E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;47E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;42E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;26;{3.40282e+38, 3.40282e+38}S;8;CPWindowS;22;{{72, 57}, {219, 263}}d;1;7S;0;S;13;CPApplicationS;5;$nullS;21;{{0, 26}, {219, 263}}S;20;{{0, 0}, {219, 263}}S;5;$nullD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;d;2;18S;6;normalS;1;1S;24;{{45.5, 16}, {128, 128}}S;20;{{0, 0}, {128, 128}}d;2;37d;1;0D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;104E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;131E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;132E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;134E;E;d;1;4S;1;2S;22;{{16, 165}, {187, 25}}S;19;{{0, 0}, {187, 25}}d;2;36D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;135E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;136E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;117E;E;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;137E;E;S;7;AppNamed;4;3072F;S;1;3S;22;{{16, 194}, {187, 20}}S;19;{{0, 0}, {187, 20}}D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;135E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;136E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;138E;E;S;19;Version XXX (build)S;1;4S;22;{{16, 222}, {187, 22}}S;19;{{0, 0}, {187, 22}}D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;135E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;136E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;139E;E;S;9;CopyrightS;6;windowS;7;CPImageS;8;Icon.pngD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;141E;E;E;S;5;Ariald;2;13D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;142E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;142E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;142E;E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;140E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;143E;E;d;1;1S;24;{"width":-1,"height":-1}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt @@ -0,0 +1,1189 @@ +/* +Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR" + +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/alert-error.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABmxJREFUeNrUWV1sFFUUPjs7u9vttvRvZ1sMygJCSynRF3kh0UQfePGFxESfTEx80AQlEEKMhtlMlRcl1uATCdF3XnzAmBAf1JgYf6KILaVUoD/Q0h9Kf2a2uzu/njMz226b0s7cO5B4k5O72+6e8333fOfMvXdjjuPARiMWi8FWY6hre/WljKYA/yig9Qb9cOeNyQ3/LvIg8NdDbn5+j5Lt3gGigAth2+EdCQKYtgMPBu8pC3/fhjDEIieF8OWWg0hI2gax4bug6wazr3gyAVmpCRz0N9/PR4yZVP++Drm5Z5ciSQ3gTM+BUSyvpI5lWLEKiLoJktQCDvp92H+HmRgTqWt7O+SWnt1KTmoEe3YOzGKFi1BVy4ZWAtGxISe1IrHdyhwjsdCkru5tl1t78kquLQMmZshcjoDQKjPQ1TKI1hzkspSxvPJgYCQ0sVCk/ny2XW47sAsJNYAx+zBiQqsZ01HKovPQI4bxZkMSC0zqjz05ua0bM9SaAX3mMRGqzZhWxkbqEbMx7uz14MQCkfp1d07O7s8r7a31LiEjBCFq1TfnizCzrEOuPgmdLRmv9Qck5iCx9mwzOBh/enA0EDFhqw/8skuSpa6dSq6lHioz81ChFbRsXEUnkF1dMsA8+iZ0nb/ozn8tGoG/S3EoHsWl+ITDdhwZDexNFnXTTP2cz8q5zp1Ke7NHyCiFl1z22GnY+9obEI/H4enDL8K/+TzYX50LJUVvIeehvQ0zhnjuD22esdijtkk/5SX5qa5nlA6Uiz63AHqJrYZSl36ERklySVmWBcWFBSgdPRy+zHDblkynIInEplDOk0PjhZdGZ3tDyQ/Tq2zHJ3wZu1ylGE5ytZZIJEAURdwJCe4cJ98MflwpIg7CQ7gIX2j5WZgVZ3EZHVXA4ehy5ZkpaMhm17wnkKxd0UY8dYjLYqkpC7+jL5fBRMnwjNIYtuLunlVS4yNgsWx6awbhshwApkxVJcczrKlJN9N0lKG5MnoHBE6fhIsxUw6uqGdcADAzVfnSbN0bx2cP50IRLmZStCIWn1Tg7tgaUg7Jj9OnxZ6p1S7FM4S7o2tIxSbG+bPvZoqlplzp2dxFbd2fAEuvuK1d1zTQp6e4d4YeLmb5ecapFVgaGYHUgR5QsUlw+3NdMtaUSd3Ptl3jHdrIHch2HwDt9q1I/JEPk7Wmouh+NCojHhl9bCQSfxZzTUXV/ahBDFwD9Z+r7hyFP4vnORVF96OxcOU716IaNvNzyoZIut/jGB4uVvlFUFMG+hkuGaAhkAzu1DvTCUjEYhHUFKv8LM94xq1kPXR/8iFI+/fDg+FhGDj7MXQby5x7P55tEq0omsWxUz8oK/Dc697Jd+cLhyDd1ARLx99hv8mlwyZh2oTUIw+Ji7bTN6aVQEikkJfAdrBD6zxyBNLpNNTV1bnzvpdfYfZFOAgP4SJ8oUn1LuuF/oXFvknD5CJWGbzuri6dfGku/XuTixDhIVyEj+U2ST1bMgoDC0tIzIBYMulJ0e+IQW3o5HGY/v6Ku5ml+caxd0P7oLgUn3AQHsJ1Np1QQ1+81Pw+1Xg6lVC6tzWc6IgLYJbLXDXGUkMiSncKe/jgktb3acUo9NZ5hM6UdObLTJUcnVpUwWpsOLE9mQL7CRFzZYvxJgwLbqha3zndLBRSomptcWcS9NpZJYcnlzSwnxCxFUKm7RL63DALZ5KiGuSxKYSIo5Lj66raN4FSEFLYPLD4q7elURr5Jf8Uh+JR3I8ScXX957h/IKgS+8KwCu9pKtiZx5OxlQxRDRW1vi8Nu/BBQlAtCL4JEBjiqhRoQNP6JuxoM7aSIfRL/inOaVFwJbeR8XS/lT+ts6a344Lck8m8v4N2IJwZowzFscvdw9cDxeL5i5ZNV8qL7g2mb6fiwhqwn5kWt/yISML/DlkcA184qmmNhzKZt7oaG0EwTfb9nCjCkK7D78Xi19/YzgXyj5ahQzjti73DeLCr4jCk6LMptDrftqG1IoDLk1pRaoLiq7qPIMxhRfAdJ720fPub41zGl1n/X0t0qetbyQ7oWoygtksI5BLOP/grm/ZXOfBJgnygFdFm/dcbZzPgnX6YmhLWyS/lE0j4C53y50TIBmT78qJEV/zZ8MlVauW3XgSPxM7RKIQai9XMVQt8hVFjds1s17yvtS1JiQzBa0nCJu+Z7mi2eM8nv//z+E+AAQCtbACM76VJFwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/alert-info.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACUpJREFUeNrUWmtsHFcVPrOzMzu768d6/fYmdhLnRZzQNO6DqkEpbSSiqK1IhVSUQqEKCooSUSFVwA9EVX40QuqDgiCVgqCQJiK0qJVKKKSgJii0SkWbhyDOy/Hasb3ep/c17zsznDuZNa6x453ZTSSOdHzvzOy9c757HvfcM2Ysy4K5xDAMLERPH74Ai1AMeYvDG5CXI3fNej7m8Fnkk8inkKegSnrliXUz/flkp+QHl2Ra5ny3eeSdyN8IC9yWrpYQdETC0BgMgBDggPeztgB0sRSd9Koa6S1KyuZUXtyXnJZAUsmfcexryEehDuQalGX+D6jdyD9cHWuJ9XW2QCgUAFExQNQMSIkmqHkJiGkBXVRqAJzfBwHWB0E+CP2xMHx2hR+KorQtPjW97VqisB/nehb50G0FZRpGpbsS+Xdre1sH+7qiYIAPMpIOpekiasO0gRDEb2JrzrISHwJj8Q/iAg7bAOeDJsEPK5Z0wLKu6PLRRO63VyZyu/CnTzpmehtA3dDUNuTDg2uWRKORRpjIK1BUCMiaOaOVBccjk0/5L0Be1CFd1NBcWeiLtUM4yG/55PLkaXz8GPKHtwGUsQ+bn9x/Rz+r4/ChRAlk1bDBeCWCypfRXIsyA3mJQDf6492fWdp1+t/xE/j4W46/3RpQu1798Ptrlrbt72xrQVMzIFMsgYY2ZllQF0JcoBPUuKpDR5MAm+9YySfSuV9fvp4O4uMDdQf11M9P7Vze3bK/LdoMY2huBVFDAUy4FUTQbycQnNjAQxcu4MX41M8c/zpWN1Bf/+mJdaZBftkWbYF4DgGVVTCqNDeDChgfg3w2B5HWKMSW9QLLsouOkw3TXjRqmnev72dPn714CB1wEB+NLDbWt9gPvvry31iDkCPrV/UG02hyuaIMmk5sYavh0YsXYWNUhb1bY3YbHxqqeqyq6ZDJi5BTLRhYubQF5agq1DOLZRQ7X/jLnlV93b/gI60wlSnhyrkzuY2BFGz/XD/wPA+apsG7p4fhjNLhag6OY6GnrRGKqSTEJ1JPHHnmi0dullHcFNTjP/4TjyNH7ty0oWcyK4GCDuyWnvl8I8S62lEwDgj6SSqdheffz7ueJxTkobOJh7PnLlxGAdcd/d52w1OaRHTtyeW9PT3TuI/IimpvpK6FCYVAEATw+Xy2L/n5gG1abkmUcC8UOOjuiK4en0rvwFtvegoUaMPfFJqaIZUvg67rniJZrqRCTyczYwH02jCI63noOkyjHG2RCJCx8d2eQD367O97AwJ/L2Y+IMvqgva7GE3mRBhwklk6RwITWEIMT3OJhgJNDQKmXdaDKF+UrpkrUERTtzd1dkCphEJ41BKlTFGxUytqfrSdQJBoAZ7nK6A8ra0tbHIq+RBevuEOFNHvZwMClGTF3gy9UiKvVPJFu01hjlfLfKKkYm4Ypv6+xTUozMbXGBYDmqp6cuwZTZWZGdO1QZX0mjSlIQt+zpbPtU8ZhrlCI5a9t1g1JHfJMnxKU+mybod2r0TnIEGOLnS/a1CmSSLUTHTi3Z9sTZWInRkEg0EoY8DJlpWa5mNMBmUyUFOkyRWozXteYVG9rKbVZiq2xmkmOpWHpsYGuJ7M1zwfjaJ0oXFb4FzlfqcOPG1gxEMmdvitla+nCzfyQARXj/l0DXPPm5jQwj6l6yWi6RF6fLdqPDCNpUs2qEnco2rVFN0aDI36pV50DYoQ9SrR5bto9aiW6EfpWkaGC6NpGE7jnmfUBsrP+FFTdO9UR1yD0jX1qq4iKJOtKVrZ5jyUsLkeRDWlqRpNDq64B6XIp+VS/iu+ULRmk6krYbYvFXOgKdIHrkEpxfS7xenmlyPhVjzlmp79ivpkITEJqHXgMENp7o6Br4qT70KRj/ExkE8nDDE7/lfXoOInXr+66pHvnDU1eSMtYHr1K5Kdgr0Pr4eVS9phZDILB4+dA669x5s/+f1A5DIQVfn7+Ad/mPJy9DB0uXRIyqc3+sJtQPcsL9ra8+gmeGzroH3yvQezk+aGELx4/JonLfE8C+XsJGhS4ZBTQnRfo8gM/eNX+cRoymdRQKZ9DnLLW+9bD9FoFCJ4DqLtA/eu8zQPHt5R7QoU0hPDybPH3/BceClPDBVUqfCSNJ20VW86ZuiGR1JlW0t0PG2vZyXXc1ALoePF3BRoYv4FJTdRrqVEZmXOHT8AbOBrUX9ggPUFXSe4Pzp8CgNEAB7ctBLePzMMz712EqOp4crsOMzKjXIOCqnrH02eOvKbmqtJlKLrt24OtC59L7psg0DLw+Q2hXgbEIZwwW9BNv6vkpyOP5C/cOKTmRX3Uk2ardHWu3Z8uzm2+kWusR0UjcyYxa0ERAs1oYAfsiPnDSJO78qdeed1J0e+KShf1ZH5n2+9mh+/tF8tJCHg9+HOztrVJTx31Z3pvCyLPojbmZRLgC4VfoCAjrbdt7Mqu3XzgUDKffz28wZ5WPQFxp6L9g2wFpqGqqp11RhNg2hAYU0ZMvEh3VTK3y2cP3aw5Z7HlWr3SsbtN1+kcMPah77EhiMHIrFVjVagGRTlRh2iFnD0nRQQrRGCPI1ZyHCKlLO7xUsn3mse/LI0U3j5+L+Vsbp98228c4dYOvPWm0Lf4LWcQQ42tPcOCE3toJt+OzK6BVfxHTvsAwEtNwZiZuIjLTu6Vx0/dx7fp5mmu2ymGk0xDs+9pgvSGlz9had8XGhfuH1JJ9/UAZZfsAuf1FQowLkgKxqhQOyKLe4/jC6CWkyDlJkYNzXxJfnKSfpBO+sEBcvhGQVVrr1GP8YJJhVm5/TpkTrCsHy3v2P1I0wgvI0TGgb4xigEGtsAr4HhgvhLfubrPCZuYOkyWCoCKWWQs3hLPGOp5eN68tIfMQOmOR09AOoOKNPh2X3zBiZvoHyORirMOUz79N8M0AGgmW5lyO20ZfxCP8MJazEV78OJorimYXw/P2t6Fe+LKFIOTDKKAC9YRBtxqq1p5GnqOvSg4FTEiANQd/oVNuvmUwtlHrawmFlZRJlEpi+dpFpEbpjzHiqciJx3gCSda61ue1wdzI9qAbUBAUdzIRpPnHsh5x47p8BEtSA5YEpOX3EWpgLwlpnfzQJFxTyZWWCZWWZaAc7OGW85AlaErJiVNUt4a9bRwnWg8FdpWvONZmanLHPuz9efb975+lDFfffm9/9O/xFgANbLi7lf3e3qAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/alert-warning.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB/BJREFUeNrUWVtsI1cZ/sbXxB7f4ji+29m1t9lsspulUakglUAUJJQ8AYpEFwkhRBGIF7SVqJBBlZD6lKdIeSgI9gEhIVGVB1SKoFqxquBxoVVp2a2yJI2dbLPO1beZ8cyc4Z9xsl3HdmI7zmZzpE/jM55z/vOf//zf+c4MhyZl9earOIEySfiQIOCEi6XZTU3Temnjc4S/WV1BXi6uV+n3LOFPJ+mU6YQnbYDwpm/sq/zQZ78J/9Wv2aj+OiH92J3SI9ULqIy96hqeHHCE/NTrCvr8fXBf+LyNMTbfKxvNcJLL7yoHvOg+HwPYe9BYARznhCuRgrSZnBY2Pp6hZ/78+CLVAzBNW/CNPmsGdw+askQ37kNTV+jPj+CMJ/T/5+k5m9Yje4+ieU7pkToervHh9BQfoxSSV6kuEljtqnyC/kEZ7sR4ipbhSz2w1YCTyCmeBjvHxyLkQJaiVKQosYfQlDI5moVrOKgbytDz0V7n1Ek4lfGcuxyxe0o0+Dw5Itc5BaZAkzdhsT6A78LTTiKTuSfdqTThuicVAqo5MLVC91gjGC3D6ho8KR/6feEXqM1zj8Gp7kCBmB+4OGkzaasUoC0jKvVR2odK/28D0jKx4bB+a4Ham3uVVr2M1IxjKDHtSTqJD7KAKhqDbw0JmnQf/JAGd3J0gtp//0lbfrShavPuJO1JwhLlzO7ewNmhMEhEXIYnGaSq9opOMifmFO0hHUEhavaeH0s5PSJYlfYjViWobUCm5x/AZs3DmxoPUl+ZTm03Qy8URZR2vIw3GaAokXKQy/q0fDpBTMMf31rHck7EcKwPX58OwmTiPrXFiEyEZfjPT2JrUbtOt35DWDxVlU4z87PgpUmnlbSdKhGFa3Ld/7974xP8+verD+sVQcW3vxGq76O6BbN1CYGxp23r79+e5zjMnKagNfSdP8nTbOvkIDXkzT9vi3V9G/WD+aVWwSo5DERt4EPJaZ10To0oaGkthK48Y4Zwl8a1Q0tJacgbjrPW9a3XG3NLIYoncqnchS8R1fvVVbztNJy65olfmPINSVDLaySJKEqq2oCBAUf9AUuvN3kOShWqsA6ez8OfGk+R0nipt+zHtKPAq6o254vTOam8SGlUaknb8Yizrm+j3oriZSKNMpFGgtf1b4bsRNsYSwO6jVQm8NTliNOWgyJu0JFCbknb0WA9F+n1lhRP/SjiJqzsfwhdutq1LuzGKUPfDQ1badl9bMzuYcoh6Ktn0oh+CD5MaSgi9ZvDUEIBP9idLuzYKT2JI+NXbGbxHphIya0qh6qG+BAOOMWOUBqkC8UCULwHf01pkC7UzD1QFKwVZtzh6HQgXIFSpL1Hbk4OjyLoFGC11Mzo1yAvHtlGJw2lvA6fdxMD51ITZPc7h4ypAZ1EytB3gwkvWIGiJBWbUvhB0OgQjbpr+aRfqd6OhGLVMtmhDZlUCNn9RSe6sG2ndIoNXkinPI77UCsbNKPyESp8HwpioX6jX+NqHEfaaEf9q8I2HKYVhEbSEa12Sj6GU0SLB0A7IjLBuIlmLwetKhypwOvyKmyv0bl+7aCdJhNpFFYRThhjuk5INxlbA9pS6aTC56LjaaetugS5sn0ohTel9cAenQfQUTuNSEgRCjBXlhC7nLaptPzbUentLL+rvM/zQjQmEDmsEzlUO5ptHZMjVvzkx5/BM6O2jttCkSEX1hEOF+GNBNvShUeqdPq5MJQkcthepFwq1tZ7hyVk38X0hAlakaIsd96eiSWyv4xgYhRbOU1X8W/T7Wq3Kv3aYDI0FRzYhFrcMKi2PXKohyYSk21QLkqVrtrr0VJLm/D1UX49FT9SFx4WKaJQzIXiFqg7OTpVCLW3GqdUVEkEt7OGSNyL1TvI0PB/q3916jRSmdjFaMTNZaGUdmubYqf5QJAkhuuvSXj+ZQE/WhBRrrCu+tHtK6UCbGIWycuxQ3VhK6cMfRdLCpB37xvUSlTUFd5+V8V7S7Xj/Z2shr/cVrvuy1Aau+uk9HfgCXha6sIWRw/Mn5sI28yFLInLUtdR0uHy1x89eL+z6770/FIrlJ/bWYSH+1u+LzQfdOjWr16c8Ue9r6TPFVDN6xutdKw3i8mkA2Wri5ahhqlnPfjWF8ikUD7WG1ONiMMzaIXABkLlHTouA+/Xna4frfz9l9+jIzQ+vPLcYMpTvQN5e7s2Q8cpZMGSiMHk5sFKJISXs8cnHOJ0q9eLsuMi/vXO1hpVR+huqenbJP3TSnx0KOW3rUHa3DtWHLfQ+JXlld5SIfWpFgtwO7JIjCYjK//NZ+juTxsidfO170ZpAu9OfcXpNOc/glIoniqFtxMtM++AKTKCd/4q6Bvx2P77wn2i4BRFe/n8lUGnXVgl6txTDsaHsicUBmlUYCbBm54YtNH4f/78D25wehz05ceNjc2aJFkZ4/sFUuEFSkSl9p3xSS80TpXG63aVUFWUS7ofX/7hDWaZnZ01LS/n+7Pr3ncji9qXPBE7HA4nzkpRTHYsLe5iNV/5t8Ox3U/+CJZ8Pm+2WJjrxs3cm7kN78gtl/WLJq7/zHhFC0rcLj34x63/7L5hsfS5yJ/qQ/az2R3lt27v3FBk+Q+0K5vOilMcxzGL1Vzudzh3uL2UsQQCAZWWX9HKaauOPn7L7Ky9uTlDTpHg4VRiCEFWuGIsFlC5faLg+RWLyeQ12e0ShzNWJMmuMbbDSqWE8sEHr7P/CzAAN77WZZ8SpakAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUCFtj2rt3L5OVlRXTt2/fmP79+8f0//9/MI2M//79i5WNjY9sxoULFwBPdEPtOkpElQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUeNpi2Lt370yG79+/z2T69u0bA9O/f/8YmP7//w9loRF///7Fw8UphmbohQsXGAACDAAFaUdSlQta6wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH9JREFUeNpi3Lt3LwsDA4M3EFsBsQDL////faWkpDykpaUZ2NjYGJiAAtbi4uIMf//+Zfj27RsDy79//3iBmAEGQFoYQBguAJJFUUGmAMhK2muhiRnIAqAg/Pz7928GWEAxAWWPPn/+nOHXr19glaAg3Pz69WsWIDYD6uADCDAAuvWepGgKK5MAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHtJREFUeNpi3Lt370wGBoYPQHwMiLeyWFlZMfz69Uvg6dOnXs+ePWNi+vbtG8Pfv38ZxMXFGf7//2/N8u/fPwYYALJ5WYCicAEQG10FWQIgK2mvhSZmYAjAAujPnz+gAPoMVgHivHz5EqTiOMuFCxdACj4B8Skg3ggQYACEzZ6gbOTDXgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUCFtjKi0tZbK0tGRiZGQEYxCA0TCAzmdmZsYpB+NLSEgw7d69GwDfyAUd/UzAZgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAINJREFUGFeVjbENwkAQBOf2z+fQEdLJuDIiS9RgiQhEIVT34TdBRPACAd5wtLNr27YFcAVW4Ohmds/MyzzPRAQu6bwsC8MwAOBmdogIXnFJSOqBmf1odKCUsnfjo/IGSil7le72P+XrhiS1cRxxdyQhM3u01pimiczEJd1qrVFrPQH5BFHNEV7zubdvAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIhJREFUGFeVjbENg1AUA89+X1BSRUIKizBPZqAiVSahyhLME/SlvwFNUoUmCAWX1p2tYRjewAuYgEfq+551Xa/Lsow557Ak6rqm6zps35IkAKqqQtIl2eYb22zEVvwQh0VEnN2IiB0iIs4qh7f7yn8btokIbBe3bUvTNJRSkDSleZ4BMvC0ff8ANOUZTP6A0qkAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHZJREFUGFe1kDEKgDAMRf8QcoNSaW/mJHgJJ8WDeJSep0P3LqWtyaCgo2DgLT8vCYRCCAxgFSbBU+99d84t3nswMzSYrbWotSLnDGqtGQFXqQHlDrT7MD4GevL/kV92vB+USimGiG7jiDEu+lcN1dhSSiyMIgwn4zCUe/hU7cUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHlJREFUGFdj2bt3738GBoanQLwAiJtYrKysGH79+iX99OnT6mfPnjGzfPv2jYGRkZFBXFycASiYzPLv3z8GGACyRVn+//8PFwCx0VWQJfD37186aKGJGRgCsAD68+cPKIBeg1WAOC9fvgSpWMBy4cIFkIIXQLwMiGsAfrObQPFrrDEAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAaCAIAAAD5ZqGGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABxJREFUCFtj2Hv8MsOLj78ZHr79QxK+/vw3KRgAe89HUPF0VZwAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiePHxN9PPP4xMDAwMTAz/gZgRiWbAjr/9+o9TDgsGCDAAAzMJ6g6yR1MAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABpJREFUeNpifP/1D+OrT39Jwo/f/SEFAwQYAODeRsIBHh3QAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpi2nfi8vuvf5gYwGDQUwABBgCRZQVstXD5TQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiev/1z74Tl5kYwGDQUwABBgCS+gVsJvl2BwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpinrNoJROvgAgTAwMDE8N/IGZEohmw4x+//+OUw4IBAgwAAtMHPgLjCOMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiXLdl97t375gYwGDQUwABBgBZowUZrYKqmQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpinLNopZCQMBMDGAx6CiDAAH9oAlBHNVNpAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpi2Hfi8osPv5kYwGDQUwABBgCHXwVdauGiRQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpievHh174Tl5kYwGDQUwABBgCJfwVeVOih6QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-resize-control.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAKCAYAAAB8OZQwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF1JREFUeNpUT0EOgCAM6/r/MzceoB/UoKEyJihNljVtRwNT3tQAn5T3zomGckO+YcFp1vWAwqPeUAQtRPyg0MCqLzk4/VqaPfDnlvPRRbeXqh5v1lHq/MB5VT0CDACNvzl3e/9MRwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAL1JREFUeNrEkrsKwkAQRWfDsF0kVYrd/7AwPyCKHytiuaUK/kZIQjrRKq+Ndwpb8wJdOGwzZ+7Msqrve5p72DnHuPdgA6IRzgNcwZmRfDDGbK21pLUeNOu6jrIs2+V5HnDXdUkcx9S2LTVNMygrpUjq0zRN2HsfosHkfcWTZJoji7Ncln1/L4s4Z2zx/jj20td+VVUVMvOkfcUL8FMuRVEQGtBnim9IndTDu0nyqSxLBms0XY0IfoI7OL4FGACS4bkP/RnUSQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMNJREFUeNrEkkEKgzAQRdMkZO9CDHizrgpeotDS0t6j4Kq38DiVSHUZRImxfwrtsmpcNPAYGOblEzKbcRxZ6JFFUSjUE9iBdIbzADm4SiRfkiTZa62ZUmrS7Ps+NcYcqqoSchiGLIoi1rYts9ZOypxzRvNlWWbSex93XTf7nQh7V/Io+dtYcsj5s+ycC5NJDEkmb13yahl/Fiw/sXKxEGKRSB5H6q2ua9rZT/MnNEfz8HJKPjdNo8AWl+oZwQbcwfElwADuQbxR1tcjhAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-mixed-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUpJREFUeNqckj1Lw1AUhk/Sq7WU2LpYKRQHPyq4OEiHdhdRHF39Qf4aRZyEDoIVhYLgorgoNv0wFNRU0/Tek3hOanQItE0vPFwI75M3595ovu/DtEscn9QE7ftEmchO4LwTNeJceJ53sFZY2i0u5yGVnB1rOu4g+/jS3Ht6besCESuLuRy0HAD15Y7/VF0Dzj88mxWWjQ+X51YTzYkEV7AnFCpg4i52BCoFUsWX2RNKIUiJwYP65UXeapkZTYuG+UoLK8Xu5nb5LWgmj+T/5vv6zUbX6qzqCRFtkgPo2fbd+lbpVw6aJckyCKQzCzBjEHOpiOx+9yCZNv6y7A2b5bB55/CoSlt11KxhVoUzM7FPm2dGnPK0MWhWtuv2jYQQsa6JPZ3+lKu22YC+04dwhFFwjvPkXQv08MzqNAVRopfOT1D8SdwSpz8CDAB8Kd6AIP4Z1gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-mixed-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUVJREFUeNqcks9Kw0AQxifJJiaiVMFotBWLXjx59OSTeBJ8CUFR9Og7CD159im8exFUBBWqpkFaa5Q2+yfObKM95JCkAx9Zlu+Xb2d2jTRNYdJi51fXDn6PUXuoegmmjWqhzphS6nRtce6guTQPrs0KyQEX9aewe/jc6VlMSrnvTTlw/9YFLmQhbDMLap4DxBHsh724dJ/oh8Ewoa/PhBR6o2oRx6QQelG1iGMC++Rc6Y2Xxzv4/IjAMIycma7UX25AsNocJSOH8Dj54fYGwtc2mFZ+6pInsLEZw8JKI4N1MtcLKm+mBsH6LNiul4OHPzE47vS/l7hRcnZFW9s7xYPKvOKvZzHJtKlnKcfJlaYtdbKIuEh80zRLg/ik6diRiQ/kot+PIUnoBKpQ5CM/ci0mlTyJv78c1C7+NCgR/I66RB39CjAAFHjbsmAj4HkAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-mixed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUZJREFUeNqckrFKw1AUhk+Sa2wFcaoNLVUpFTs5uugDODo7CX0JQVF09B2ETs4+hAhuOggWO1Q0bUpxENQkvfcknpMYHSom6b38BA7/l//+N9HCMIRplzi7vDbpeUTaI1UzMDapTToVQRCcrNas/bXlChRnzVTS9cfVzlP/4PHZMQQithbLZRi4AOrDTz+qrgH7H3p2i+HSm8+9VaaeSOII5oRCBay8ixmBSoFU+WHmhFIIUmI06N7fwutwANof5pB2ZakOtUYzTiaO4N/ku5sr6HU7oBtiMkmOYX1jE6yVxjccJUuCZTQozC+AVW/CTKE4Afuf7zSf+/EyFyfLOHlreye1a+JVSWdW7tvmzohT3jZGyWrk+17JECLXZ2JOpz/l3LFfwHM9SCr8J/axn7i2wACPR8O+Sdqll1oZgh3SBenwS4ABALu11aydNvk+AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-selected-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAiFJREFUeNqUU1trE0EYPU0n5tLdtcYmaVPabCNaQdOElJbSkL5Ia7F4Af+RbyooBEHQCl4exBfxgljwRSSxoC8WqmJTqmJra6u0SchlszO7zuya1kIa9IPzsN98Z853hrMtpmnif8oX7ve1tJLzJqO3yaVHrwnvTXGMcrQ3IzJGoR5P0M2tLVIrFZ3EMIzTh3s6J/vDIXhc+5qqptNpVEHI/u4I/EqbRBhjyUAwiNUKQEvansS3mZd4/moWSpeKvt5uxAbiAQcny3nNhFajYJQ1xMqXz3hw7w4kfwiSLOPsmXPgG8uEch8Ce1WtpuHWtSsgykEQdxumTk5AUhSL42CUQv+DG5cvoJDPb38L3J++joJuwiW3YzAWhRqJWH3Bc1C+lq4zrK+u4f38PKavXoSm6VYv82IGHz4twHvAj4C/A6PJlNUXEDxOthV+/VyH3BnGRr6Ih3dv4utSDjPPnkDq6ILL7cHE+DgMnon6RoJHKOUqHCE1ghOTp5DJZvFxIYfc4iI8viD36cVYKgmvJFlz9RI8Yinr9oMdPRZFuVLFu7k5gAfP4XTiyKE+9PSq2zM7ZEvZ3r9eA/EEyuUKlr4tQ/G6MTg0sut8h8xAROSEh78rMTSMSrmEaCxu+TQobRhVsXZR06pyKyG7DkdSY7ZCgwww+8GKImHZtZVlVLnXuoVmEHNinvNmCTPY040f3wnHML9U+Ye/ssDxhuPxbwEGAExxWB6CMBpMAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-selected-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhNJREFUeNqUk01rE1EUht9O70ySaRMT7CQTU2tiYiwxftdU0F/iRsW1exeidNOF/gFRChVEwYJBUIKgWwMiFqwgilgCtUmIbdIkte3MvRPPnWpDqY164YW555znfHDP9N1+WsT/nMmrF0f6+tmtjuCXmeM4GtlukC6RYr1AITji2VNWvdHQrNWWV8ITB8LBa/FICF6V9ax6994U1sG0PbGDMAIDBhNCXPF5NHwu12FzsSv4YfYtXr2ZRSAax7BpYGwsd0jCRrXR7lnxe7WMF4UCBsMx6LqO82fH8cMSBuM0ByXYFbRtC/nHj6AFDTDvAM6dPuEmaK7VoQjOIRNIzUzfQbvd2rpLFfIzWIMKjz+I0cR+RPeZrl1yCqc5bdvBUm0JX+dLePLgPqwN7treFV9j/lsFeshAKODH0cwR1y4lOYI3KzQay/CbI1gh8OXzPMoLJRQJHhyKQtM8yJ08BgedblfEMc5t9yMcjeFMbhzvP35CabGKhcVn8O01aU4dxzNpeH0+N+73kRxzK/96ong8gXXLxpd+eu8OoKgqhiNDiIQjWzFd2K0sqI2uI5VMugkqyyvQVQWj6fQ2fxcWYELwHVkPp1LYmJtDMpGA43RI4o+rKtuu2dwyFEXZ5sxmM5tBDt8B0krLtmsKLchUs9mGZckOnL9Kxsl44qaZcMTN9mpLI12gpOY//JUV0kPS9Z8CDACMI0E9p2np0QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-selected.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgtJREFUKFOV0V9Ik1EYBvBzNeiyLrsYddGoJYmmIkl0oYktikzFnLN0xpJBXxYtmqE2dY7JliuGRovQTc3J1FolbWGpodUMYQ2K/tk/MRwEFXkRXTyd98A+GOKyix8f3/s+z+HAYQDY/1ivVCk3bFYP8u86Zh+dVnBt3AKHVNoDk8jQHPm9aVcRNqbn3WK24ce2QOQtYkvLePf9T0pSixPbNDqklxlRUGuaZm1DE/GpTz8R/riMsflfq7J472JLQSl2Vp1F6YVOtPofxZnl5jjuvPmRkudhDOq9ZciokLDHaIHv2QdQjzX2hTD66tuq/NFF5B6uwY6SOmTXmNFx+4mYU4819NzDUGxJ2Kc/hd6n8/I/OXSyEeoD1ciuPo8614A8px47dz2I/rlFuMNRKHPysbv8BHzPF8RMutQLVWE5so6asN/kgHf2i5gT6rEzV0fQE/kMy8ADbD+ox9YiLYqlZvEsqvwSZGrrkWdowmV+OOUSqMcktx+emfeC1BVAZuVpcUCaplI8SY6+AWZfSM7IWd5jRlc/uiZfy447+8Q1s6pMoqizepL2CdRjBocXV8ZfJtG2epBraEZhvQ2d4diKPaEeq7XfgDP0IonjfhTFZheaBidW7BKox45Zr8XbgxHYx+bWjPLUY7qWbpvUPQLL8Ayswdl/ohzlea+DVVx0Kzgn95XDGlCO8oq/2QGjSdgwyFQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK9JREFUKJHFkjEKwyAUhuUNuUED0ms4eZ0eo4VS6NwbFHoRz+CQKwRSyewQiJr3l3Rr0dShw4cSvk/lEUopiV8hY0zDXJmeSQX0q98Qn3CRUh6VUnuttcgBDz46CiEc2rYV8zwL730WePDRUYxxx5vXR6w53h46Kgm+UR/jKVupj0sH9Wlwf3x27bTHaZo2Ras/4g+7D8MgSg+AB5+7B24+O+duXdc9rbUiBzz43J0WHcymW5LxdgkAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUCFtj6tpwjCnYwZTpzodfTP/+/Qfif0x/gRhM/wWx/0JoOBvGB9JoapD1gsy6eu4kADbzQ5rojOveAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEBJREFUeNpi6NpwbCbD3Q+/ZzLd+fCLgenfv/8g4h8D018QAWH9BXP/wlhIXITYX6gONMVoRoGNv3ruJANAgAEAzhtGyJPGg6AAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUeNpi7NpwjIWBgcEbiK2AWIDl379/vqqyEh7qcpIMnOxsDCz///+3FpcQZ3j5k5Hhz/dfDCAVvJ9/MwJV/2MAAZAAAwjDAFjgL7oAmoq/DH//IgmAOH+BggRU/EU3A1nL378gLX/R3IFqBpoKiLX4HAbxC4Yt+D2HaigTUODz71+/GGAqQQJHXz57yvDrJ0jwPziQN7999ZwFiM2AOvgAAgwA2zedN71ws+cAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKdJREFUeNqUkD0KAjEQRr9IWuv1Lt7QG+wttBA8wYoWdhaiNlqsCxbLWsgmmYkZ/4hxQQx8EF7ezCRRo3GRA6hDipCp2tc2v7YGm0OJ7fE06+1qg6pVyAYZvPdDzexhJFBg5n4AjNeSvaYUfBsUA5ISegM57DAi8DCikqcR96C0B3cZzL/Gfkzh9B6EP55Pzgm43L/QWYtzVQqY6/VqIUITsgyZ3AQYACwxo+jE5WFHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUCFtjCquZyKRtbM7ExMjEBCWYmMEkkGYGsZmhNIgPZYNomDiSGmS9qkJsTGv2nQIA4IwFK30tWVsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJhJREFUGJVjDKuZyMbAwFAHxAlALM3CxMTUKCQqXiEsLsHAwsrGwMLIyJgsJinDwMzCwgACIBWirGysDDAAEmAAYRQBZnQBFBXMzMwMzMwYWpiRBdBUgDjMmGYwo5nBjF8FM6otYENR3YHVWnwOI+h9IJ/pNS8w9FhZmBmgqpnmvnr1kkGKi4FBVQgSyPV3nrxkA+IooA4JAD9CEUzrpwlHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUGNONjzsOgWEURM+d+fwRpYTEo1UpFXZiA5ZBZQd2oFJZgwXYh8RPWIBHqET8nrecnMyZG4Px9AqsgRkwSd1en/Pp2Nrnm9Fhl1sKkWVl6o02ETFMUgCgrISkWpLE/SSRXAxeCT8C2yTLnwnJz6W2SLYLHX6x+JvFxR3vtf5B/Pe+FZS5IGmnTjWjWYHtNkfSLC2WK4ANMI+I8Q10tBpanttAIQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKNJREFUGFdj6dpwjI2BgaEOiBOAWJrl379/jaqyEhXqcpIMnOxsDCz///9PFpcQZ3j5k5Hhz/dfDCAVop9/MwJV/2MAAZAAAwjDAFjgL7oAmoq/DH//IgmAOH+BggRU/EU3A1nL378gLShm/EM3A00FxFp8DoP4BcMW/J7D9P7r379+iTKzsMAF5r589rRCRFySgYWVFRzI9W9fPWcD4iigAgkAAWSTEqdsRP0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKBJREFUGNOVjzsKwlAQRc+TtwWJ+3MbVlbiKlJZuwrBxs5C1EaRJGiRTvKZ+yz88IyCOOXhzL0zbjpfBOAEpMDY7csmXKuazSFje8wnvV1ZU1SOZJAQQhh6KVArUOOQ1PeSeI4kvHXBp2ExMLzJXsDsqxGBuxGtPIw4w7oZ+mZIv2rfWtS9w/jjfWtbJJ29FGibhkuRISn169USIAdmwOgGxHqjvh+HJ8QAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAIAAAAL5hHIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCB1j7u/vZ87JyWEuKioC44SEBABISgbNtp1KFwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUeNpi7O/vn8mkoqLCwCQhIcHAxMPDw8D05csXBoAAAwBIogYEjN3jQgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUeNpirKysFODm5o5iY2PTZWFhYWIRFhZOAGJNXl5eBqAgA4uQkJCSuLg4Az8/PwMrKysDEzs7+z0uLi4GHh4eMGb6+fPnom/fvl398uULAwgDBBgAx68Ss6bQhHIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi7Ovrm/n3799/P3/+vPz169dlLCoqKgy/fv1i+vz5s/7bt285WSQkJBh+//7NwMXFxQAESiw8PDxggT9//jCws7PfY/ny5QtY4Nu3b1eB5iwBCDAA1UAuSStF1W0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFRJREFUCB1jrKyslObm5p7GxsbmzcLCwszY09OzS1hY2JWXl5cBKMjAOG/evM8SEhI8/Pz8DKysrAyMS5cu3SUtLe0qKCgIEQCqkAOqmAlU4QFSAQDMoQ//dMukywAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFVJREFUCB1FyjEKwCAMQNHktIUexsMECl27egBvENBB0ASHRIotXfrHx8cQwrrfzOwYY+xIRMvdQVWh1nphjHHNOaH3DqUUx5TSB601YOb/EJEz57w9xYtAc8FdpUUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAAwSURBVHjaYjAzM/vP9OvXLwYmBgYGBqb///8jE9jE8CvBawrzhw8fGBn+//8vBRgAxTY3eCgJOmQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAAwSURBVHjaYjAzM2tg+vXrFwMTAwMDA9P///+RCWxi+JXgNYX5w4cPDAz////nBQwAi5c260232L8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACESURBVHjarI67CgIxEEXPzE4UH4RtLRYhZBs/QRv/v8yvpDSbsdpGBEH2lOdyuVeAlHO+j+M4qereVPUSY7wuyxJaa2jvPbh7cHcADKD3zooBrOlXoXzwu7KF+GN2i6dqZs3dX6sYUkrHWuvJzM4iMlBKOczzfDOzB/AUdxdgBwRA3gMATndJshnCq34AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACHSURBVHjarI4tDsJAFIS/bl5DENSjVtVwgBoMR+N0HGB1FVhE1SZs6RsMrQBBQjpuvmR+qq7rzu7+GIbh1vf9JZRSmKZp0zRNDCHsDUASQO3utb3NDFnArC8Q+NDvyBrgj9k1ni4dkkYze5ok3L3knK8xxjvAycyObdseUkrbStIOEDAC5TUAKxFgMuA5pPMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAAzSURBVHjaYlBTU/vP9Pv3bwYmRkZGBiYGBgYoC0GgiWFTgl8HXIz5xYsXjAz///+XAgwAKVgKjcWlLqMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACGSURBVHjatJAxCsJQEETfrIsJCSkEBeF3gX8BW8HKG3gUwdoz5i5fm5BNYxorEX3lGwaGEXBOKV3btj0CnZvZoa7r0ziOTURg0zQ1QAMgCQOICBZ8ST4Xxht/qfxCfLPU3Z8R8ZCEJFZ9329LKbuqqvaS1gzDsMk5X9z9BtwVEQK619E2DwBfRh57l5xeoQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACLSURBVHjatI4xCsJAEEXfDFMsAS9gs6TZA3gAz+YFPEquYKWHsLBMvxATi4QZGwWxEtHX/cf/8KWUEsAwjuOp7/u9zvPMsiyrlNJWVTcqIjxo3L3RZ4oIAOyl8aFQ3vjL5Bfim6cigogQEZOZ3QzA3a+11mPO+SzAzsymtm0vXdcdJCLWgAMTMNwHACs+L3xeMd7tAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACJSURBVHjarI4xCgIxFERfvh+LwC4RFKxDcgFbwcobeBTB2jPuVQLabPK3SiOCIPvKNwwzDrimlO4hhLOIDCoip3EcL7VWP88z0lrzZubNDAAFaK3RUYCefhXCB78ra4g/Ztd4Kqr6NrNXF5sY476UclDVo3NuyzRNu5zzTVUfwNOZmQMGwAOyDACRI0tKhkhIygAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACKSURBVHjarI49CgIxFIQn4VUL5gA2S65gkdKzeQGPkitY6SGEeIfAyhMCebONu4UWgux088H8uJQSzWyqtd5KKWffWkPvfRdCOHrvDwIAJAFgMLNB3maBWMGiL+Dxod+RLcAfs1s8XTtIqoi8hCTM7Kmq13Ec7w7ASUQ0xvjIOV8cyT0AA6AApnkA8SJiRCHFwrsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAA/SURBVHjaZIvBCYBAEMSGKfS0Fdu4fk6saR8TPwsK9wmEEI/jxFUlB2RAJmlNIkPkZA8ftoN/QGp97nUZmO8AYzNFSPGK8tYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAA8SURBVHjaZIuxCYBAAMTC9e7kJOooP/cXFwsFhW8CIYTjvEbmnKRKVGL7aluiJe0aPiyH/yA8CrCjbvcAE+tBokS7K5QAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACLSURBVHjapI5LDoJAEAWrhx7xdwEjYDIJG4+gmHj/JXeRBTLdbowLXBh1+SqpyhMgdd3lVDdNHWMsNYSw21fVAYjjOKJmFhGJ2QwABbDneAGfA3OfgTfF54r539HP4Ken/kU0qOo05Xx3wIEipbQehtumLJdbESno+37Vtu1RVc/AVdxdgAUQAXkMAA50T0Ivt9NcAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACVSURBVHjanI4xDsIwFEOd8CvEgOiKqBSWLO0JEAsnAY7CGXOEzIWpU0q+GVAlyIKoF0uWn+XF+XK9tV13qDf1PsY42JQSACx3TeOstVtREiBhjKlUtRKSAIDJhar41Bv5CsoGWSJaIDNGfweznvLf0QnIOY8i8hRVRc45Pe59dM71AHASkaP3vg0hrAzJNQACGAGk1wAfU2M6/egpmAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUeNpkjMEJACAMA5OM4Syiqzl4obYoWDCPcOEg6GO6zAyKQASiks4kLynpiVJFJPEX54X5DSy4e9sCDABELwjMR/gd5wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNqkkL0KQjEMRpO0OBQq3F4F50JBHV0FJ9/ARxGcfcY+jA79u4ku0kEvGEighy8HGgSA83a3v7pxPBKR1TwOg3On1prJOYOutRqGhgEgImiQkge86wWQCOATUA9k93uC+sRv6QwwQ9on8C8paa2fpZSH/Fhaee9XKaX10tqNUmoBMcYhhHDh5I037sjHFaPlNqKYBBgAFyshPM4kBT4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJRJREFUeNpitLGz///v37/P796+PXrj+rVepj9//jD8//+fV1BIyI6JicmIBUgwgAAjIyMXUCUXCyMDFPz/D6ZYGKEqYACuBS4A1EtABRO6CsKGEiFAhKHoKhgpNxTmW2BQfmNhYfkO1vLn9+8vTx4/OiIvL38TJNkAlClTVVUNvnTpkiAjMMSlgIL/gPgbEH8GCDAA2UIwblDGBeAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACgSURBVHjapI4xCsJAFAUn2Z9m0UbtjCEXSGNrtPIGOYr3ygUshICdYis5glpYKYTNXxuxiIWo5RuY4QmwzPP5apIksyiK+hKG4XQcxwvANk2DqKolCGyrCoAA6HO8gO8C9b4D3hTfVdT/Hf0Mfnrqv4mKyN217c0YYwEkTdPj5XyqBsNRbozpSVmWVVEUctjvNs45K1mWXeu6XgNbIHwMAL4rWK1r13/GAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACcSURBVHjanI4xCsJAFERn118FxNQaCGlN5wFyFPUOXsAL7RWsvISFzXaCsVFWCPw/FhLQNGKmGRjmDTNZb7Zc1vUun+VNjPHiu64DgOmiKBrv/UqMBEg45zIzy4QkAKB3oRk+9Ua+gmGDHCI2QEaM/g5GPeW/oz2gqklEnmJmUNXHrb0ey7I8OQB7EUlVVZ1DCAdHcg7AACQA99cA7LNl9l3/HpoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUeNpiEhUVPcOkoqJylklTU/Mei5yc3HumR48eCQIEGABLxgeqlrkYjQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiFhUVTWPW19eXYtLU1HzPJCcn951ZSUlJGSDAADTlBJ4jXpdLAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUeNokiEEKwCAMwGAtFqQWj4p7jN/rF/3BYIdd6mA4mbBADgkSUVhWRNwBYKKIVPk5nHMDY4ycUrpyzua9H7jiXHOWUm5mfkFVn9ZaMDPqvW+fAAMAgxAYEA9uUqQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF9JREFUeNoMyjEKgCAUBmB7/mBQtjlEeAAHzxV4yo4SGLg1ifZCocYPvsEYs/feqbV2MfMhvfeb1roCmIUQK5xzdykFKaWJiBZYa5+cs6y1yn+8iDGOP6CU4hDC+QkwABcBJR2ZJ8maAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpiZGdnlwTiBhYWFgtmZuY/jKKiojP5+PhkgfgtGxvbDxYBAQEJILgvKSn5iouL6ycLkHMTKPhHWlr6PQ8Pz0/mzs7OT7du3ZL6+vUrz7dv31gBAgwAuQcYxkfD6eQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGNJREFUeNoAVQCq/wQVFRXN/f39BPz8/Mj5+fmAAy0tLTUNDQ3tBAQEGAAAADIEKSkp3fb29gfn5+fyAgICHAQdHR3v9PT0B/f39wcAAAD1AuPj4xHm5uYRBwcH8mpqaq0CDABLliXpqWUbNwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/knob-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAADRUlEQVRIie2VS28bZRSGn5l4xhPHjY1jN4lrJZAUEhmDuKhkw4oKiajcsgB100WFEF2yYUPX5R+wqFDFIhuKAJWLCAgVIdQFEjtUoTqJExcsFF87GU/GM+PxZxYeOxPLUemmK470ro70nDPvd84Z+D8edkj/IS8Bsi8J6ALCV9fXA8H7wNCHV64sJU5MnVbD2nRYVZKO2665jl1uNOvbH12+nAe8QKH7wiUgtLq6Gj/7+puvLC08sZhJz5BMxEkk4jQaOrWGTumfPfI7m4Wb39z4YWNj4x7QGS4wNgp8/vzFmbOvnrvwwnPPTj+59DhuR1DfNyn+vYfd9hgf11iczxCdmEhEE6lcy3O3iltb9v3gY0Dk4ruX3l4583w8HJlgt1TGMC1sx6UjBLbjYpgW5brO5OQJpmIxRVEjUzd//H5zuPsgXALUS+9/8MzKypmnuiGVfeMAIcSxMg9adGWZ2GT0kWQqY/7+262y7z8AoQBcBtSTM7PLghCWZQ0SjVqN9WtX+fP2H2RzT3PhnfdIJJMAeJ6LqmpMzaSywG16D9zpA4NwRVXDKddzcV1voPVrV2nUKiwsLNCoVfj0k4+P5E3LQlHUJKAGmcOdj0kSmhAghDdImIZOOp1G0zRs26ZSqeB5h3khBF0k1bd5JBxAatm2Y9t2WJYPPyqby2HoOrIso2ka2WwO13WPwB2n1WZotIO2AHSb9f2GaZp4njfQ6mtrpDNzCCFIZ+Y4t/bWkbxpmpgN4x5DoxjsXACdnWL+r5OnZmdD6mHKtAWrb6wRjUQwLYu9Sg03YIth6BS287v0HnLktAig/e0X1+/MP7a0LMtyLBqNAuC5HjvFEqPCMAx2C9t73924vgm4QfioDZV1vdpMn5qfQ5JCiqIcO+e6rlOvVp2vv/rsl6au1wGL3iiOhHcB6tWqu13Il1PJ6biiqlGE6J2/bhfP83BaLQzD4O5Oofzl5+u/lkulMmAOdz58uCTfqnEgCsRefOnl048uLs/H4vFJRQmp7bbn7uu6USzcuXvr55+2AANoAi2G1v/Yq0hvISLAhF9MoTddAmj7sAPfCmcYfBx84H2gSH9B+j+Ljm+BywPe81FF+uqH4Ojf6OHHv8wPry1u2L4DAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/knob-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABBlJREFUeNq0lctvG1UUxn8zY2emTtI2D5PEdWqnlEo0RKVVoVWRKCAhxCNFVBEPIYHEsgv+ADbddNdtF4CQWCAQSLBgA0tQQYi2Saw09EHVUidxEtuJk9SP8dh3xsPmjDtJG2DDlY6ujo7ud8/57rnf0Xzf5/9akfe/+WO7mCamA0bI98U8oBXyHwTfBlSXWBQwgQ7xdQF0gSbQAJT4ra2XbAUPQDuAGNAJdMluSgWegNaAquy2XBZc8gC4LpnuAHYCvWJ9wC6JB6sF3ANKYutAGahLJa0weJBxDOgBBoEhoE/LZsa09aUxnGqKppOkw8phdc35PYlZP314FtgNLElVCDUK8MPglmSYANJU1wa49tO7YyNDh8eeOkFqb5LhZIKF3FJ6bj6Xnr124+TVS99lGH3+S7p6TXkrT6jxAM84NHFGE467JeO0vzq/r5X54aPxF55Jn3r1JUwrRtVpkM3l8TWNeH8/x44+SQfe0M2LPx7X+pIZzez0AEdMAS3j0MQZQ3juBZK0vEH38vcfTrz24sCjBw6QXcxTrtk4jSatVgun0aRcsymWNkgOJ+ndGTNvXvolbuwdux566Abg6kKJKZn3qhu/Hj1ycH9qV98jFFZKuK67rRVWSgwkhjnyWPKwun7xqDx+t+DpwQcx5TG7VP7O0/GBAWq2jVIKpRSF/DLnz53lg7ff4Py5sxTyy+1YzbZJJJOo5dvH5c06hWZDD3WKCaCq6+moabUPK6X44rOPWVspMDIywtpKgc8/ubAp7msGqraRkuawpKX1cLfoAK7jdBtGBKXcdlNXyxskEgksy6LRaFAoFjfFdd3AdZyYuEaAFQl9ihaA5/uVSqXSbVlW+/Djo09Q3ljHMAxM0+TgwVGUUu14vV7H87HFDTRnk1Y0AOjozBaWlzaV/cqp0+wZTuF5HnuGU4yffnNTvJhfhuiOOQFvt2IkpBU2UIsMpidv3741Fh8cvE+L4/Py66fpisWo2jb54irKvU/LrT9vEk3s/10koSY64wWZN4AKUOo5Nn45O7+4cG1mBle5uMqlXne4O5dj9sYt7s7lqNeddmxmapJc6V6m5/j4pOhMRfBaAXhTFG5VMyIb/Sff+nR6erKcmbqCct1tLTN1hatXZ8rx5975SoBXBacZ/NCw5PoA0d1xYqnRqezkz/HS0vyQoetEIlF0XcexbQrLi8xMTzJfLGX2jJ+5YMaHl4AFoCjq2ARa2ntfz4ZVsTOkigmgt3Dx2yOVv2ZOqOpG2ndVtxaJVqJdu7Pd+w79NvDsxLRkvAgURHrtQBUD8O30vD+k51vXvRAVa/+k50GvK6HGlZYqAytSkRWaRI50RUU4/tdJFL7Ak70uF5hSlRYaBg2x5n+doWyZ7EEFxkPGnBf62Q+d/n8PAPiyIDwt8vw5AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAKQWlDQ1BJQ0MgUHJvZmlsZQAAeAGdlndUU9kWh8+9N73QEiIgJfQaegkg0jtIFQRRiUmAUAKGhCZ2RAVGFBEpVmRUwAFHhyJjRRQLg4Ji1wnyEFDGwVFEReXdjGsJ7601896a/cdZ39nnt9fZZ+9917oAUPyCBMJ0WAGANKFYFO7rwVwSE8vE9wIYEAEOWAHA4WZmBEf4RALU/L09mZmoSMaz9u4ugGS72yy/UCZz1v9/kSI3QyQGAApF1TY8fiYX5QKUU7PFGTL/BMr0lSkyhjEyFqEJoqwi48SvbPan5iu7yZiXJuShGlnOGbw0noy7UN6aJeGjjAShXJgl4GejfAdlvVRJmgDl9yjT0/icTAAwFJlfzOcmoWyJMkUUGe6J8gIACJTEObxyDov5OWieAHimZ+SKBIlJYqYR15hp5ejIZvrxs1P5YjErlMNN4Yh4TM/0tAyOMBeAr2+WRQElWW2ZaJHtrRzt7VnW5mj5v9nfHn5T/T3IevtV8Sbsz55BjJ5Z32zsrC+9FgD2JFqbHbO+lVUAtG0GQOXhrE/vIADyBQC03pzzHoZsXpLE4gwnC4vs7GxzAZ9rLivoN/ufgm/Kv4Y595nL7vtWO6YXP4EjSRUzZUXlpqemS0TMzAwOl89k/fcQ/+PAOWnNycMsnJ/AF/GF6FVR6JQJhIlou4U8gViQLmQKhH/V4X8YNicHGX6daxRodV8AfYU5ULhJB8hvPQBDIwMkbj96An3rWxAxCsi+vGitka9zjzJ6/uf6Hwtcim7hTEEiU+b2DI9kciWiLBmj34RswQISkAd0oAo0gS4wAixgDRyAM3AD3iAAhIBIEAOWAy5IAmlABLJBPtgACkEx2AF2g2pwANSBetAEToI2cAZcBFfADXALDIBHQAqGwUswAd6BaQiC8BAVokGqkBakD5lC1hAbWgh5Q0FQOBQDxUOJkBCSQPnQJqgYKoOqoUNQPfQjdBq6CF2D+qAH0CA0Bv0BfYQRmALTYQ3YALaA2bA7HAhHwsvgRHgVnAcXwNvhSrgWPg63whfhG/AALIVfwpMIQMgIA9FGWAgb8URCkFgkAREha5EipAKpRZqQDqQbuY1IkXHkAwaHoWGYGBbGGeOHWYzhYlZh1mJKMNWYY5hWTBfmNmYQM4H5gqVi1bGmWCesP3YJNhGbjS3EVmCPYFuwl7ED2GHsOxwOx8AZ4hxwfrgYXDJuNa4Etw/XjLuA68MN4SbxeLwq3hTvgg/Bc/BifCG+Cn8cfx7fjx/GvyeQCVoEa4IPIZYgJGwkVBAaCOcI/YQRwjRRgahPdCKGEHnEXGIpsY7YQbxJHCZOkxRJhiQXUiQpmbSBVElqIl0mPSa9IZPJOmRHchhZQF5PriSfIF8lD5I/UJQoJhRPShxFQtlOOUq5QHlAeUOlUg2obtRYqpi6nVpPvUR9Sn0vR5Mzl/OX48mtk6uRa5Xrl3slT5TXl3eXXy6fJ18hf0r+pvy4AlHBQMFTgaOwVqFG4bTCPYVJRZqilWKIYppiiWKD4jXFUSW8koGStxJPqUDpsNIlpSEaQtOledK4tE20Otpl2jAdRzek+9OT6cX0H+i99AllJWVb5SjlHOUa5bPKUgbCMGD4M1IZpYyTjLuMj/M05rnP48/bNq9pXv+8KZX5Km4qfJUilWaVAZWPqkxVb9UU1Z2qbapP1DBqJmphatlq+9Uuq43Pp893ns+dXzT/5PyH6rC6iXq4+mr1w+o96pMamhq+GhkaVRqXNMY1GZpumsma5ZrnNMe0aFoLtQRa5VrntV4wlZnuzFRmJbOLOaGtru2nLdE+pN2rPa1jqLNYZ6NOs84TXZIuWzdBt1y3U3dCT0svWC9fr1HvoT5Rn62fpL9Hv1t/ysDQINpgi0GbwaihiqG/YZ5ho+FjI6qRq9Eqo1qjO8Y4Y7ZxivE+41smsImdSZJJjclNU9jU3lRgus+0zwxr5mgmNKs1u8eisNxZWaxG1qA5wzzIfKN5m/krCz2LWIudFt0WXyztLFMt6ywfWSlZBVhttOqw+sPaxJprXWN9x4Zq42Ozzqbd5rWtqS3fdr/tfTuaXbDdFrtOu8/2DvYi+yb7MQc9h3iHvQ732HR2KLuEfdUR6+jhuM7xjOMHJ3snsdNJp9+dWc4pzg3OowsMF/AX1C0YctFx4bgccpEuZC6MX3hwodRV25XjWuv6zE3Xjed2xG3E3dg92f24+ysPSw+RR4vHlKeT5xrPC16Il69XkVevt5L3Yu9q76c+Oj6JPo0+E752vqt9L/hh/QL9dvrd89fw5/rX+08EOASsCegKpARGBFYHPgsyCRIFdQTDwQHBu4IfL9JfJFzUFgJC/EN2hTwJNQxdFfpzGC4sNKwm7Hm4VXh+eHcELWJFREPEu0iPyNLIR4uNFksWd0bJR8VF1UdNRXtFl0VLl1gsWbPkRoxajCCmPRYfGxV7JHZyqffS3UuH4+ziCuPuLjNclrPs2nK15anLz66QX8FZcSoeGx8d3xD/iRPCqeVMrvRfuXflBNeTu4f7kufGK+eN8V34ZfyRBJeEsoTRRJfEXYljSa5JFUnjAk9BteB1sl/ygeSplJCUoykzqdGpzWmEtPi000IlYYqwK10zPSe9L8M0ozBDuspp1e5VE6JA0ZFMKHNZZruYjv5M9UiMJJslg1kLs2qy3mdHZZ/KUcwR5vTkmuRuyx3J88n7fjVmNXd1Z752/ob8wTXuaw6thdauXNu5Tnddwbrh9b7rj20gbUjZ8MtGy41lG99uit7UUaBRsL5gaLPv5sZCuUJR4b0tzlsObMVsFWzt3WazrWrblyJe0fViy+KK4k8l3JLr31l9V/ndzPaE7b2l9qX7d+B2CHfc3em681iZYlle2dCu4F2t5czyovK3u1fsvlZhW3FgD2mPZI+0MqiyvUqvakfVp+qk6oEaj5rmvep7t+2d2sfb17/fbX/TAY0DxQc+HhQcvH/I91BrrUFtxWHc4azDz+ui6rq/Z39ff0TtSPGRz0eFR6XHwo911TvU1zeoN5Q2wo2SxrHjccdv/eD1Q3sTq+lQM6O5+AQ4ITnx4sf4H++eDDzZeYp9qukn/Z/2ttBailqh1tzWibakNml7THvf6YDTnR3OHS0/m/989Iz2mZqzymdLz5HOFZybOZ93fvJCxoXxi4kXhzpXdD66tOTSna6wrt7LgZevXvG5cqnbvfv8VZerZ645XTt9nX297Yb9jdYeu56WX+x+aem172296XCz/ZbjrY6+BX3n+l37L972un3ljv+dGwOLBvruLr57/17cPel93v3RB6kPXj/Mejj9aP1j7OOiJwpPKp6qP6391fjXZqm99Oyg12DPs4hnj4a4Qy//lfmvT8MFz6nPK0a0RupHrUfPjPmM3Xqx9MXwy4yX0+OFvyn+tveV0auffnf7vWdiycTwa9HrmT9K3qi+OfrW9m3nZOjk03dp76anit6rvj/2gf2h+2P0x5Hp7E/4T5WfjT93fAn88ngmbWbm3/eE8/ul8iYiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD00lEQVRIDdVUX2hTZxQ/Sc29N7G1bdKKjda2SKRNa0mZQ18qooXS4SwWN0TFPbiHMZQN9jK2PW6DPQ3ZHhwIgr4ogjZatQXng30XdIWqUVttMU2bJjc3/+7NTZP9zm1yk7tWEMSHHfjd737fOef3ne9853y2YrFIH0rsH4qYef+/5BvelhYbBDpGDcB2DJ7zJeVLWOE5C8Y1YltvHbycLiaTfvz51+HGhqZBUZR6BcHRmcvpTzRNfRyXoxO//PRDEDYqkAdPAaNF1pCXiKWh4eH2g4OHznX5fAPbvC3kcTeQp7GBluMyLcdkmn8TpulQ6N7fE2Pf3A0GZ8Cq/XcDS1rKxCe+ON23t39fcHeg19PRtp3iiRSFo3F6/jpMG10S1Tqd9FFgF7kb6wdEQXgAv4E7o6NPMVo2MMmh4Hw6nE6nu2/3ngsf9wU8gtNF/zzjoCoiKylizEeWcJJ66tvV40kqyu8gPwarOGh0nMC4g+pS5H/n6a+/Pb7Tt6MzreUpsrRM+Xz+rWC9hivt9vv3n/3u+5PsD3CQhpiRY8b/tZ7mpiNFWw2lM5lVC3xjy1G6dOE8TU89pq6eXjr15Vfk9jQZel3XSRBEcjc3H8XCFYAvWGNldeRM7hJEya/BgZ3KuAzi2FKEOjo6jPHiX3+aOrZJZrLkEMRO+G8EzIDNHyxyPYuowk2FQpEKBS7lVUkpMnm9XpIkiTRNo8jiIsgr+tUU22phLQDMY0g1OefKrqrZpKqqdTU1pg11dfeQIseJ10RRJL+/24i8xEErKyvYVE1jzk5mzqvTwjdcSMTkF+l02nLsTw6P0NbWNoOEx09HPrfo2V6JJ7isjI7FaEh15KzQZl+GJrds9QY2OCqqlFqkoeERqnW5KIWLXliMko4qKksiIdOL0NP7mOcA5jGkwrD6XmRuj14Ltu3wHUHut9XV1RlGeeR35tV8ycU6KIpCM89Dj8ZuXL0FDafG3LU6LbyYQl0vjo/d+G0hvJCMxWJGhBzlemB9ZCGSHB+7fg6+S+wP6IAh5ttS6lC+bTewfXNLS2Do8GdnWtvae1xod4cgkN1uRxUVSM/lKJPN0tyr2anxm9f/iITnH8JnDogDZoea5FgkbMAnkQDeoAVo7T8wONTu29m/qb6hVXAIrpyeyygJeW429Gxy8v7EHdgw6RuAiS1vi4UcyuoNOOHchs0Ab1ZuEE4f5zYGcCqigAJYiDGnNeTGYuU957eCSblBRIBPxu82tzfnlzfJAu/2nsPQkNIdcENwRTmAcoNwP3C58cXxKfgRNF5B/Ftk3cgtFu8x+Rc1XeEgwmSoOwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-down-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAa5JREFUeNrcUstqwlAQneTG2DyaaCKUrmxtRDdC6T/5JX6BK7eu3Ll36Qf4C0LWIlQkouZlz4RckRZai6t24HCTO3NmzswdhYh6juN4qqqmQKJpWgzwmQKZECLHfY44yrJMTdNUABpQ0fjydDopjMtvRp7nirTyX2UgiUBotSDDBJw5oEpwEHMAkon5jquCrOm6fq+VlwLSsk/Egsx+PlkFV2S5gG5Z1mNBtm1bj6KIykpMOJWKimplOyxXS5KkijmYwEvhaLfbAX50OHXOKk8OlDgej3dxHBtIYtVqtR5oKjf+0Gq13hqNhgNntNvtlFK+QFXur1ImrBqG4fi+34M6F36SAyNUtpvN5mu9Xg9Xq9X7druNWS23YZpmxXVdH0N6RkJupeCcydLQ/xOCnzgA1ejylCRpKt1gf5T8ZWB4U8KkeSnOQ2JgiD+Tu90u9ft9frrz3eFwoMFgQHjC72Uvl0sKw5C3jjqdDgVBQIvFgtbr9XU9TyaTQrbnebTf72k6nV4/sM1mQ6PRiLDPNBwOC9lXDUzabDYj7DHN5/PfPxVPeDwe/8cNu4n8IcAA4WwjSMEpNj8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-down-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcZJREFUeNrcUr1qwlAUPkluYjQlUIsVO0iHBMG1L1A6lK7t5tZnEB/CydXF1QdwanHq4EvoUHATHQQxNTZ//c5tIkKhtTi1Bz7uveee7/x89ypE1LBt21FV1QfehBAewKsPvGuaFsAfIY6iKBJhGBqACeQFO5MkURnYKtmeEcexqigKA8dEwVkDBJIYgC3JMAOXIaBl4CCQ4pTIiQk+HRVzIJrAhUidObQWIEgHBAeBFDGZ73nlLrgiyBZwAveVJJumafm+n6SVeD4mJWli8TlZwu3mgyCw4TuDHreSXKlU7qbT6TMuOYggkpp2kEuTKVwV5wJwahhGg0eTZARfVqvV+8Vi8bRer7l1HsMHMeTiqQ4G4s7R5QP2ZS6SCUYILpdKpUfLsl5Wq9XrZrPx+HVYMF3XC6jmgnyDyjyD5OzImSHzNQKvOQit0v7K2DeVjrA/Sv4iGIvjeZ5UNBOJARF/JtfrdWo2m/z2Ox9+H7VaLZrNZt+3PR6PaTKZkOu6VKvVyHEcGo1GNJ/PD5u51+vJVovFohyh3+8fLthyuaROp0Pb7Zba7Tbhtx0mWGaDwYDwXWk4HP7+qbjtbrf7H3/YUeQPAQYATq8uCgYHvXQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-down-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc1JREFUeNrcUrtOAkEUvbs7LI9dlleUxAYLCDRU/gCxMLbaGRsbvoQvoKKloqOWcj+AX8AQSgIJISDLPj133SVGE8VQ6SQnM3PnnnvPnBmJiB4Mw6jKsmwBr0KILcCzBdiKojiIe8gjz/OE67oqkALSgoNBEMgMLKV4zfB9X5YkiYFtIGGvAAJFVOQaIRlDxaELKDE4CSQ/InJhQiyBjkmQU6qqXogomIQ0B0kJQHASSB6T+ZxnVsEdQdYAXdO0q5Cs67q22WyCqBPfj0lBVFi83yxguWnHcQz4UAJuQjm1Wu0WGx2HOqpmo1nnRCAL5Pb7fcG27SKKnOXz+UfQlLAzXL1sNpt3s9nseblcsnS+hgUVLjePfFAzmcx5Lpe7R6wMRRQbRuhcrlQqT4VCwZzP5y/r9XrLr8OGgZQBqQaTrpnECJvSp4H7t5Db4gTIp49zTIqHTCeMP0r+YhjelOA0/4qDSQyY+DO50WhQu93mpzvELMuiTqdDeMLvZU8mE5pOp/zrqF6vU7VapfF4TIvF4rg7DwaDUHaxWKTdbkfD4fB4w1arFfV6PcJ/pm63G8o+yrB4jEYjKpVKZJrm75+KHe73+//xh51EfhNgACA6JNNWltjcAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAYAAAAlH6X5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC9JREFUeNpiYGBg4GD09/f/z/T+/XsGpn///kGJv3//IrPQuAh1YOLXr18MAAEGAHdlKH321oJgAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-knob-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARFJREFUeNqEkj1ug0AQhfcvFhC0yLJA2FKKKAUlHUVKUDq3LtK78BmS2r0Ln8c+gC+RLj0U/C+ZsUDCgOORnnal/fTm7c7SpmkIpZQMirbiINbuiSDjwkMeBMHKtu1vzvkazJZXh4Ezgk9RFG00TTsURbEAEWSG8BUMw3ALbseyLElVVbfZWhhp4fu+5zjOJU1TTSk1yid6F5qZprlDEF2nSvSzQpcPBLuM/8LQ+nWY8x7MAVR1XT+EsZo8z39g9e7BrF3x6irLsjO+ArpPqXs67GBKKd9c1z0xxuQj5yKO498kSb667Nilr5uhgAzQHAazNgxjjx3wqPsOo3GDnkFS1/UXy7I+hRDv+JFAzp8AAwCqDI1JAuEnqwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-knob-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASVJREFUeNqMkT9KxUAQxmdf1iAWqQU7+1whBC8QSO0BLCwFL+AJvIGNlQQClhIs7HMDyxiIGpH8N9n4zXP3WbxncOCD2Z3ffju7I4hon35jhiZIcR6GIa8piqJ1UQRBMG/IeX6ZpinKsuwqTdM3Poi6iuP4B/Y8bwMLIci2bVbetu15kiT32P7SN9FKKUVGcCVAVNf1oWVZd77vn4LZY24LNhqGgbquIynlteu6x+AsvnjFbrukDxw4jnOm3YVkp7+CD8D9BKnNS8kuS4FHH5m+/wOTfuByGxx93z+bfNGZXQE/6qnOi86ofWCaN2YwO2GMnaWqqrpomuaVf2IL1hA7vmOKl0VRPGC7hsZ1G/yXGsyhbBzHp7Isb9Frju1PqDM9fwswACNF1jCNRpSTAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAYAAAAlH6X5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNo8i7kRACAMw4xD2twxCPvvRghPKHChkwoDQKeZNd5NiognBlX15fy2Epv3AUZESZDuXtPqEWAAAbEUmbnlEr0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAYAAAAlH6X5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAENJREFUeNoUy8ENwCAMQ1HLIYJThuhW3X+GFlAaqdiHr3cxANwtIi6eLZrZqzx09yktaUufUjwPsKpMaczMLo1fgAEADawUxddyoEQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-left-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbhJREFUeNq0VFtqwlAQnTw0UbCISj+kO9D+dAVxCxZxEYJr6BIEt+EyXINfrS2p0HylKiHmdb09ExILJWkF7cAhgZmcc+fMnShEdE//GLplWY/XIDoej+Fms3l1HMdVVVUoinJk6EhcTC6E8Far1XMURb6maTGIBWtCSJ4lgA+pWq2WpeV6vc7JQ5DGAJOmxL8K4GTk+z71ej2ybbuwBvmP3W53YHIgAnmS2wNIlQWKwMSVSoUmkwlNp1Mqq3Nd95NJ2Ro+PT91Xf9GUQdsyWAwoNFoRN1u90RWFPv9nm1JGCBMsnf2P+1AZxt+BhMPh0PqdDrUaDSYhIrqssNE6JQJBQMdiFyAh1xo0WKxoPl8TtvtNh0uCkstQl7jQTPYdyaGyAkqn6wIy+WSxuMxzWYz8jyPyurq9boppVQgwKB0sJlIalO/33/665o2m820m6IIw/Ady/UCm3zDMA54RpiFyAXO2gPclNIcCO9M03QwihgdxdkWy3RBpCSt3W5b/HIBFAjcBEHgJklyugmZbaS1Wq1LBZjHqNVqt7x36CRAB7mOcpV/URYmBv6AObzFcWyjG+5I/RJgAC85tuyF4bVKAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-left-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcdJREFUeNq0lLtOAlEQhucsC1TEcGvgDWgIlc8Ale0GGl6A14DnwNYHUAtiYWJntNdY0GziskT2fvcf3Ni4J5K4nuTPwGH45razgog0+scjhsNhVgYoy7LDbrfb7Pf7V0VRQiFEBMVqmqZ/hoOhb7fb6yRJdpVKxQU4xHWMQMlJAeI4JlVVpXxd128ANwC3AHWhCPcJF6ZwAJkY7DgODQYDqY/neY+QCajFASCHg3AlSMqRVhCGITWbTVosFjQajWg+nxf62bb9BqDHwBzsw8ZoUwKlhQH4bjKZ0HQ6pV6v951t0fF9/wPAAPKRsZ9/jvMgqYre/fjTbDYjTdOo0+lQo9Ggw+FARX75fOxqtRrxk8NCBWz5ewKlhTNYr9e0Wq3INE2q1WoER+kMAKzzMLlwbgtnjjtWxFI4syJtNhsaj8e0XC7JsiyS+SH7M+yAwjt1XCy0hbMHnIMlot/v/7porVbrWI2kRQ+u694i0Hu9XjdhHcwi4CpO3gPDMKS/AXIO2BOqcSCP+89V5NstythkBXO6CILgEo92lH0dni1XEYlut5uV9F77QLuuYJ/RJhtw3o1QtNvtrMy3J7K/g7kH/IXn8CnAADDPYRM6gNQFAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-left-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc5JREFUeNq0VM1KAmEUvTOOvyCpuHLtTvdt9Q1CcBH4BoLP0Dv4CG19gGoRLYRcRStXZSAuhKZJzSbnv3MmMYiZCrILh0/n3jn33nPnfoqIHMs/mtJoNIJ9EPm+v5rNZpfz+fxeVVVbURQHcDU4/kzued58PB6f2bb9lEgkTBDbeOwikferBHhRUqlUbPGTyeQcMTrIX0BqAg7zAsG3CVCZmKYptVpNptNpZAz8N8vl0iD5NsGG0gAe4KtMEAUSJ5NJ6Xa70uv1JC7OMIwHkL5RGlbPU9O0T0R1QEmazaa0222pVCo7sihbrVZLEFusHISb7W/qzy58jTJ8NRK3Wi0pl8uSz+dJIlFx22LW6NThl0OgA5787wHREg0GA+n3+7JYLMLhIjBWIvjTHCaHTd1ZOZIQDqHFVTYcDmU0Gkmn0wm7iYvL5XIH6/Va5U6Fi8XBonqQh0NW6vX6j4tWKBTCbqLMsqxrLNcFZHpMp9MGzlfMwmIXv94DfCmxPhAeZjKZW8ziFV2+UX9WTl8QBMo+NlktFotHuq6fIokTfBhna4VzKJVKJ3ggfwEsn81m6zh1JHlGB7u7TqlWq8E+b0/IdOU4ztB13TveR+8CDAA4ZHMC9dTxrwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-right-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcRJREFUeNq0VEtuwkAM9WQCoQRICK3aErWLSCBRpScox2CPOAg7rsAxWHMVVgguwEd0gYDM9DlNFhVJP4JasjyTxO95nj0RRPRK/2hmrVbztNYGu1LKbDabtu/7bSFE6RoEwnXdNwALrJlEYl2AWWEYvhiGcXMpgSyXy48AilCxwl7zwyiKCGTvlUrlHpGyfL/fk5SS8t6nLqvV6h2DwzWI4ggTu91OQz4yTbOWldhqtWixWMQkyMkncBynwcBwzeCpdNwTRIVTPGQlDodD6nQ6NJvNaL1eE/LjxDOCer3ucQUMnhIkTZeHw8HwPM/PIhgMBhQEAXW7XSoWizSfz1NpvzgUMCP1aUYCrhLJ1Ol0ijgpy3AyYgk59nq9uCfT6fR8TKEhg4lERwGiuOHcCEwT77PHD9/jPS2XSxqNRvEJMu8B65+MqE5kYv15bAUmzMo7wXa7pfF4TJPJ5PuLxkDphoETl+y2bd/mnaDf79Nms/n5JqNCvsECehtYy+PxWEA0Mb4u+vOUR7BarX73q0iBEXldgFuQrQSCdh74n/5FXDGAUgILujcgTQiJSjxmFxNw9dxky7IcVP2M6oN0hq9hHwIMAA2mcW+/QfMYAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-right-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc1JREFUeNq0VE1rwkAQnc0mJrFqFKEIllJKWwqV1J5KobdevXirP8WfIP4Pj+q/8SDVYy+iVgTTxCR9o/Fk0g+0A481cee9eTO7EUTUoH8MNZfLXYVhqAJaEAR6oVA4LRaLNSFE/hgC0jTNR6w+CBnBarVyF4vFG4Qv8d6EMB0CmU6nHxRF8UDusRAQwgkB74Zh2EmJrusS8n4WyGazdyBfswMk8BrwH3ASwp3Au7O4RNu2aTweb0Q4EgUsy7phYmDTIuxlKNFcPLi4j0tstVpUqVRoMBjQbDZLFFIRDtoh8SDZxXZPmELCp+M4H9yuuCiVSlQul6larVK/36dut0vYv3+KEC5IFECNyGXUsjXC830/ViCTyRAOwmZtNBq0XC6p1+vtC0gpecAKwOQCQvzsb5SkFEkOsIc0TaPRaETNZpOGw2H8PeDeR70LeAZiqyR4DnBnJTmYz+fUbrep0+l8f9G4mF1RIObh8jxSDMRtkoN6vU7T6fTnm4wKVZ4B+s2/dc/z0lhN2L+Amackgclk8rtPBYg1EGpYDeAEyKH6PNpTSyL/07cIFZsgSoHYBLKo+lrX9VcW4XN8sAC3hdsEnIP8GXg5RuW7+BJgAINQm2YEYuEWAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-right-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdlJREFUeNq0VLFOwlAUve1rqW1py0AMAWOMsUZi0DgZEzdXRgad+BI2foHPYCT8CosEJgcSoLAgpa3nFlikFQ34kpvb19d3zr3nvFeJiN7oH4di2/ZVFEUKQg3DUCsWi6elUqkqSVLuGARC1/VH5ACAHOF8Pl+ORqP3fD5/ifc6iOmQEIZhPMiy7APcZyJEFAQBL35ks9m7tI2LxYKEEPsJLMu6BfiKOwAR55AX0EkE+SRFUc6SNrquS4PBICbBnnQCx3GuGRgRS4QOOGT2BdlHF/dJGxuNBpXLZer1ejSZTAj7Y82/f4cClQXMFZgI7mL9TZTBhs/ZbOYVCoVE8/g9DgNVKhXqdDrU7XbJ9/3dU4SxBIGMUDbgYiPZCsNnP5IGOiNIGOdarRZ7wiQ7BNCQDZYRDC6BiOcBT1RV5XkiAeuOdRoOh9RsNqnf7yffA9Z+o13IHkhrJol9wAlz0jrwPI9arRa12+2fLxoXsy0KwGwu+5HhME3zJq2Der1O0+l0/01GhQp7AL35WYNRBrKO43sBf57SCMbj8e9+FQBWAaginyBMhA3ZciCopoH/6V+EinUAZQCsIyzo7kKaV0iU43N8MAHLwlnTtHNU/YzqX7aX5BjjS4ABAEDnkWqhfTpFAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-up-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZJJREFUeNrUlMtrwkAQxiePxiZ48FHTggUvvaZ49uTRiwgW8Spe/XuVHgslB0tTQoIk5rX9JiSQqqXYXuzCZJbZ+e1OJt9GIiJrOBw+ZVlGh5am6Rd/aDL9YVwgLISgIAh+B0uSRJPJhJIkOQ/m7o7HY5pOp9Tr9c6DW60WzWYz6na7tFqtvj39CI7jmBaLBXU6nXwTy7JoNBrl3/VHuN/v02AwoHq9TpqmUaPRoOVySaZpHsHqYWC9XtN8Pj+psH8gksuGj7odRdG767pvvu8H0PcVh3Rdv4bdybJ8cxJGYrLdbl9s23ag6xiJKcIZ5iIMQ99xnI9ms2kahvFQcmoBBpvN5hlJoaIoe4AMJwBzuMhRPM+zd7ud2263HxEyFDxu+QQshAD2gCNVVSP4BD5m4zlXgo1SHhCMC/Xd5zCEr2Mx4hPLZPgUvmoZ1llmAvqPa7WaphZ3l0tMi93zJJ6XUFk6r/FPgu86+NcSLptTNVFswiYqjeXcGNV7JSzKBJ5XQFEYlysBzLgaeAmvGn4KMABFtPy+67Pl0wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-up-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZRJREFUeNrslL9OwlAUxs9tSzHKAARSEnbioHQicWF2ZGpA4gN0553cfQM34+ykMTFG4mgbobS0va3fKcU/SKJoYhwk+fgup+d3enpuL4KIjkzTPEmShFYlpXznq1LoB58/CKdpSmEYfg8uFAo0GAyyYW0E8yQty6J+v0+tVmsz2DAMGg6H1Gw2aTQafR2O45hs26Z6vU7VapXa7Tb1er1sBp/CnU6Hut0ulUol0nWdyuVyVqzRaHyAxf8b9ouwtmafrzzPuwyCwMHebiM00TStAplY766FkRi4rnvmOM61EMJXFGWOsMQ6wVY9+L5/UywW91DkEPGtFxjg43g8Po2iyFFVdQJwBgUAY4hPhkCOjq4uoFscmmPEaiq+9jkJlR0AT4CnqD6Fz+AsH2vuJEReiCKsO6wPMhg/KrjosZDsITmAz+GsMFeE63Jx6BIPvpO1jSpzVl49hnNixACLn3uRJiQfEHiK9s+XMP9lZM/3VigQ50pe55ryIBXc/X4Jyzwh5buwuEWO5VoOTXIncBVynwUYAA6xEqaxcbksAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-up-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaZJREFUeNrslD1PwnAQxq8vKVIZKAgLA6uDjYyGiU0WQkLCYOJAWPle7n4DN+NsQqIxMcZgwoA0lNLy75vPYfEFNAZNjIMkD9fc/37X6/EUiYiOarXaSRRFtKowDN/FVcn0g88fhOM4Jtd1vwdLkkTNZpOCINgM5u02Gg1qtVpULpc3g3O5HLXbbSqVStTr9T69+xrs+z51Oh0qFAqLJqZpUr1eX/yuX8KVSoWq1SplMhnSNI2y2Sx1u10qFovre/l32C/C6mpCCHFlWdalbdtj+FtHyk6n0wa0L8vy7ocwCr3hcHg2GAyu4WsXhXN2Kq4jz/MeRqPRjWEYe7quHyK/9QIDfOz3+6coGiuKYgOcQR7AAArZD6jRJpPJheM4t/l8/hi5HQVfJhTgYAxgAniqquoUcYbIcnHNkwg0EjCMgEHu4L6DBQzjGzh0WCh2UOwhzhFZIpGPc54igv+dVCq1rSbv7pyVdA8QudBngMXP/VwmhfwngRijwfkSFjw6H74VGgSJote9xrxIGePfL+EwKYj5LiwekXOJlksLeRJEBY9qPQkwAH6xFG4uskBeAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-knob-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNqUUL1qwzAQ1vkfAu7YxU/Sx/BrZOnWtc+QN8iSsdCxe/HYLoVMBmGoQwZjE2PLxJbVO2GBKIU6go87Sd93d98BYyxK0/Rc13UspWTzPGuYnKKdm/9xHIWDYsznwnEoXX9Q863FWPHN9/3VQqUUm6bpXYurqtqFYdh5nrdWLJqm2ZNYZVl2EkJsgyBg/xWgrn3fP3ddx13zmOf5MUmSzyiKHpBwZxZDZMtn2bbtU1mWr3i9GDExFOc8R8IhjmPABW5c170HABJ9DcPwUhTFI1r8QG6LEPBrKrJBBWl7wRJNA4kYEdclSvjDFixwLOipLehJwfZ06/kRYABTY58KWRsFmgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAYAAAAB3PQ6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUeNpiZGBg4AgKCvr+7t07hn///sHx379/4TQyGyb/+/dvBoAAAwB0aihkcGml8AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-knob-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARBJREFUeNqUkbtKxEAUhudkZieERSQIQSFWKSwt04gpxFha+QA+gtY+h4XPYGdlY+Mr2FsETGERMOR+Gf8ZRllWi90fPphJznfOZELsb8jiWMg+V2C26LWiNVEXcyCAtDj2nZZ6ywgmWhNFFEV7YRjeKqXO5nk+HseRdV331jTNa5ZlD1VVfaKuAi2tiIskSc49z7tv2/YQAtPiNE0MTQzYfxRFcZfn+Qvqv7j9JpGm6ZXruo8Qd/u+N8WYblhZ70gpL1GXlWX5rmUnjuN93/ef67qWwzD8Sv+hwzk/xZAnc6NBENzgmEt9zE1CRB6GXRsZnS70xE0DmQkhToyMHOmL2SZocPDzDxdsy0BefgswANTzkXd08tnFAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAYAAAAB3PQ6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADlJREFUeNosyrsNACAMQ8F820gMwv67kQQwEsXpuTAT0YyIISKlqgnL3d+u3w0HP+puBslMQ+0KMACg5xR+0/xvkgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAYAAAAB3PQ6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNoMyrENACAIBVEEiVYM4VbuP4OKQRJ/cXnNFSKaZjaY2UVko6WqBzq88KHER5kpqEZEg/0LMACqFRSole+PrAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNpiMDMz+8/069cvBiYGIGD6//8/MoFNDL8SvKYwf/jwgZERyJICCDAAxTs3eXOW1tsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNpiMjMz28/069cvBiYGIGD6//8/MoFNDL8SvKYwf/jwgZEByBIGCDAAqR83M1ta/ucAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYGBg2M8EJBjoQTADMSPz////HwMEGABruwTRxWVztwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIZJREFUeNpiZGBgkFZRUckTEBDQYWJi4mIBEmZ8fHz6f//+Zf/z5w8D079///j////PDsQMIMACIoCCDDAAFoDJYhVgYkADhLVQQ4AMa6nhUiYWFpafQIGfMAFmJSUlrs+fPwsBJYQYGRlZGS5dusSuqqpqBxSIACpIYITqZwNiLpAOgAADABBQSostyhMHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiNDMz2//v379vHz58uHLnzp1JLL9+/WJgZGTk4uPj02diYjJjYQCC////gyh2oEp+FigHJsgAF4ABDAEmBjRAWAs1BMiwlhouhZsBlPjJwsLyE6wCGHTfv337dllBQeEuSDIBKBOhqqpqd+nSJXZGoAphoOBfIP4GxL8AAgwAD0RdoB6ph54AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYmBg+M8EJBjoQTADMSPD////pQACDACI0wRH0uIsCAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpiiItP+M/069cvBqZ///8zMP0HE//+Qbn/QKz//0Hcf5gSCAJDx39kif8MDBAu85PHjxkZgLJSAAEGAGF5RJzjY1IbAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpijotP2M/069cvBqZ///8zMP0HE//+Qbn/QKz//0Hcf5gSCAJDx39kif8MDBAu85PHjxmZgbKPAQIMAEa5RStdv6aRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYmBg2M8EJBjoQTADMSPz////HwMEGABsqwTTd4K/0AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJNJREFUeNqkTrEKAjEMTWpKqyCKq+dBh26Cg+vpZ4ij39yPObhiE1MQhzqIGngheXkvCQLAcRhOl13f7621CzLGxG3XHXTgcs5AzOwB0RVmqEE18bN5EdISLNIQbxZpLSx/L/1M/PSpfLHUENF0L2WqpopZCGE9juPKOb9BRAsppWWM8azKqwpuqBdQi7nCK/AhwACtz1AKJyXHLwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAJVJREFUeNqcjjEKwkAURF/WDxHBExjYamtv4DmsTO5qThA9QdKJWirJsv9bSEDTiJlmYJg3zAKogADkwEUOZVXGGB9d257r+ujcMAwAq01RbJ1zQdQMzMiyLFfVpZgZAKOLqfKpN/IVTBtmU0QnyIzR38Gsp/bv6AiklHoR6UVVSSk977fryXvfAVQisg8h7JqmWb8GAJDqY/rl9HS9AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUeNpijItP2P/79+9vjx89unLkyOFVTL9+/WIAAi5pGRl9JiYmVZZ///8zMAAxIyMj+79//zhY/oMEGEBiEJrl/79/DMgAogVFAF3F///oWv6haSHDUMICZLn0P6mGwjT8/fv3JwsLy0+wFiDn+7u3by7Ly8s/BkkmAGUiVFVV7S5dusTLCLRFGBSkQPwDiL8DBBgApSFphTgm62sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYmBg+M8EJBjoQTADMSPD////pQACDACI0wRH0uIsCAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJZJREFUeNpiZGBgcLGxsS2WlZOzZmVl5WVhYmIykpaRsQNKcP369YuB5d+/f1wMjIxcf//9YwABFhDxD8qBC/xHF/j3/z+aAIaW/+ha/v2n2FDCAmS59D8JhjKxsLB8//P37zeQJhBmVlRUFP327ZsoOzuHBCMjIxvDpUuXBFVVVYOBKsuAChoYgTYwAhm8oFAHGQEQYABQ6FDZFd6uyQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNpijotP+K+lrV0swC9g9+jRo5dMv379YgACXmkZGTsmJiYjln///zMwADEjIyPXv3//uFj+gwQYQGIQmuX/v38MyACiBUUAXcX//+ha/qFpIcNQwgJkufQ/iYYygTSA8J+/f7+xsLB8ZwJp+f3795c3r18dkpeXv8kIlGwAynxTVFS8u3bt2n2MQFukgIIgg74B8WeAAAMAKAhm4pQzrFgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRJREFUeNpiZGBgUAGCyQICAtZMTEy8LEDCg4+Pz+7v379cf/78YWD69++fyP///7mAmAEEWEAEUJABBsACMFmsAkwMaICwFmoIkGEtNVzKxMLC8h0o8A0mwKykpMT7+fNnSaCEBCMjIxvDpUuXOFVVVYOBAmVABQ2MUP0cQMwHMhMgwAC+qEtf0TB9pwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiUlNT+8/0+/dvBiZGRkYGJgYggLAQBJoYNiX4dcDFmF+8eMHI/P///1sAAQYAKxcLUpcjeNUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNJREFUeNpiUFNT+8+gqKj4n4mRkZGBiQEIICwEgSaGTQl+HXAx5hcvXjAy/v//XwogwAB2Swj9RrJOegAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRJREFUeNpiZGBgcJGWli7m5ua2BrJ5WZiYmIw4ODjs/vz5w/X//38Gpn///nEBZUCYgZGRkYEJxADJwAALTIZ4ASYGNEATLdQQIMelLCws34EB9A0kCMLMioqKot++fRNlZ2eXAAqwMVy6dElQVVU1GKiyDKijgRGoHGQALzSgmQACDABfaR58r+agPwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRJREFUeNpiVFNT+8/AwPD569evR58+fdrL9Pv3b4Y/f/7wcnBw2DExMRkxMTIyMkAB179//7iYYLz///+DaRYkFUQKMDGgAZpooYYAOS4FCYAwMIC+sbCwfAebAQy6Lx8+fDgkLy9/E8RvAMqUqaqqBl+6dEmQEahUCqQIiL+BogMgwAAPLi475A3jcQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiZGBgUJGWlp7Mzc1tDWTzsjAxMXlwcHDY/fnzh+v///8MTP/+/RMBynABMQMjIyMDE4gBkoEBFpgM8QJMDGiAJlqoIUCOS1lYWL4DA+gbSBCEmZWUlHi/fv0qyc7OLgEUYGO4dOkSp6qqajBQZRlQRwMjNDw5gJgPZCZAgAEAjMsekNnyoBIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiVFNT+8/AwPD569evR58+fZrL8vv3bwZGRkZeDg4OOyYmJg8mIIcBCrj+/fsnwgTj/f//H0yzIKkgUoCJAQ3QRAs1BMhxKUgAhIEB9I2FheU72Axg0H358OHDIQUFhYsg9Q1AmW+Kiop3165du40RqFQKKPgHiD8B8Q+AAAMAvLgsezVKBIMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiMTMz+//v37/PHz58OHrnzp1cll+/fjEwMjLy8vHx2TExMXmwMADB////QRQXUKUIC5QDE2SAC8AAhgATAxogrIUaAmRYSw2Xws0ASnxjYWH5DlYBDLov3759O6KgoHARJNkAlClTVVUNvnTpEicjUIUUUPAPEH8C4h8AAQYAaEheCvo+JpcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFiklEQVRYCc1XbUxbZRQ+pS1toYUKjPFZBQaDZAiMkC1blG1ZnCZiZsyS7YfGHy5GEx0xfmXRHyZmMWp0OmNi9Jf+cEaNZGPOIm5jGWS4sYEY+RCGq3x25avf7e2H53l3by0DBzKa7CRP7nvf3nuep+c957zvVUWjUbobLOluEAENmpUKUbHxswDE4z21DOXPRPg+LCPEV9xzwFcWctVyz8kCQKZl6J5/6dXNFktRg9FofDCqIkOyVlvO8xSUpH5VlHxut/u8zTZy8tMP3r3C0wGGxIgsJ+i2QliEIsDwxltH9uUWWg5nZ2XeZynIp7ycbFKr1ZRhTmceopm5eQqHwzQ+aSfb6BjZHdN/TYyNvvP2m69/wz/7GBKLQZSWtCWFxEVB/8T+Jyvqd+76orS0pKp8QwmZzWk0O++ieZeXIpEIef3400Qpeh0lJSVRuimF7kk30Tw/MzA0TAODQz1tZ8888/3xr/r4MT9jyegsEiKLwPobXnz58CNlFRWfb6mtTivIzyPb+BT5AkH+aXkz6JKpMDebxsYnqLOr2znY13fw4/ePnOY3EZ3wrUu1lBCISHm28ZVHKyurv6zfVqfxh6Lk8niXZ1/iCVNqCuk1KmrruBTq7e1+6rOj7zXzY14WgsSO2QIhck4YHt93oGbHQ3tObt9SZ3b7JQqFFrwTe3mlA41GTUa9lto7L82da7E2/PDt11f5XV98ziilR/KSoDLStj5Q/0nNpk3mWZePgkFJ5ALyYbWAD/iCT/gGB0Mrc/LwZk8QA3lseK7xtQMbyzZUSdwyUAWrJb/1PfiCT/gGB/MZ4vlFQ4uPRlFxUaNOb6CAXA2KyrW4BlgMfIOD/X3H8DO3qCJladAx9fufPrg7NyenMBSOUpiXIhGAb3CAC5wMcMdavCjXvPz8XUlqDUVYeSINHOBiDpSzhxFR9hohxJhqrOKuJCKRSCHgEFw38wTckiIEV12yXm9B20ZiJdLAAS5wMoQGRYjYU1SkSsHpBLmRSAMHuPiCdiHyNF6IWpQcR4MzOZE6cDYQbYFJsCwLhAhiKRT0SVLIhNAl0kRPYa54DiUiWIuw2+kZ8wf85Xo9qipxxhwELmZAMoo8iBcizc44BnxebzkfdhKngj0zB4GLh+LQBDKxPnzF0S5w/drQRQ/vsuEwN7MEwstCbCPDv4JT5o41NITId6blx46quq1TRpNxfaKWx+/3k8PhmPrFeuoCOBmiVyhLI4Tw5NwfPVeOZ2RkHkrWJvPt2pvL6SJwsOc5xiIhKG0c4+aszU3NxaXlDRqNpthkMvHU2pnL5aLJ8bERcLBXCAGn+LASOSIf25A4TsZU6+nmo/Ypu4dP5Gu28cEXfLacOvEhOGQuHKj/FcKTMJQRQuX4s//3yx1tPx+7YbeHWc0dn0ngA77gE77BIXPFWriSI+JLiDuqEpWJzvbzVq6cpO07dr+QkZlpMK5ymdy8HDPT0772c63HLl+8YGUBEwxEPhYNHtOCM6uYUKnQVrEPrGNYCu8t3rznsb2HsnPyLKkpqZSswz61vAUDAfJ4PWSfHLdZTzR99Pf1a/jgsjFuMG5/eIZ7+bQGMTjKZTDyGAXbdu5++P7q2r1paeYMvUEvBGFP0srNT5IksYdAgN/nJ6dzbua37q6mjrOtP/H7o4xxxgxDVIqSG3wvbFFEMCuLQSKj1+Ogm8VYz1hXUVlTVVJWXpuVnbOR9yQtL1kOzxMvwSTvIZLDPjkwPNjf1dd7tYen8e+RmMgJLAeqZGUfWPxgzFgQxKDfIzqoZbMMiEtlQKiSZ+jOIMKJC6QoT8DFQBT+/ycnvxSzuOhAEBIEogCM0fVEC+ArKgCfgWjbIAYwvvOPcHYSM1kQDirIn3jEC0GHjgdSQfSJmKP/GPwDy9LPcQuXXBoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-disabled-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFRElEQVRYCc2X309bZRjH3x5O20MppQxcS4GhtCsQGKg4R5YtccFEoxmJJku48kajF+7CJUvmhVcmxpiY7GbeGP+AXalhUYcbYYm4sMFcNjdYurIJg/JjFEo5lEN7OPh8X87pWgu0uJ1kT/L0/HrP8/30eZ/3x7FsbGyw58GE5wECDGKhIBYyvS2O+ANwnBv3kVq4pjtPNWW8oJRb8rXTAQxx8aOTp6sCAX/QWeKsI12rVbJXkjBLKWvzxJSSV+TxcHgs9MO5b6fptmpA5QPaEUSHKKJg4udfft1cU1179IXKcve+mhrm8+5loiCwPW43PWZsIRZjqqaxyMwcm5icZI/nF2PT01MDX31x5g49BtD6TjBbgmRkQezq7q7sfOOtrsD+em9joJ653S4Wi8ksJieYRsIJRQEHc0gSEwjM7XRQGyeLU5t74TAL3X8w03elt6fn/HnKGAcCT0535YBkQFg/PXUm0NTc3HWwvc1e4/OxicgcU5JJLpzvR7LZ2D7fXjYZibChG7fWRu/e7fnu7Ddhei9FngOzFQiK0PrxyVPB1lfb3zt66KCgqBqTE4l82ls+dzocTBIF9se1Ie32Xzd++v7c2RA1TBEJijptWcNXz4Z4/MQJT/OB1ncPtbcJC9QFcVnm3YCu2K3jXcRALMREbFIXda1cEP0BCtN+5EjnOy+3tEgLcYUlqSt2K/7f9oiBWIiJ2NAgL8qEycwIhqj4yWenW4JBvxeVoGnqU0M8gVIZYiI2NKBFbsxBmxOaTgYou/9Ff4eNRkBSKawo6Z2CLakmGWJDg14aIVdJmxduZkbE7g8+rPdUectUGvWYE0xxig0NaBFIemY3TgBk9VbXviQIIu8SujbNoAEtEjCG87oBwuuj1OX00qzE68I0CgQmDa6VUScGCDIiSjapTKQxr9K8YaZBA1rQJOflYYAgI4LFIlg5AtWHmYbo0IImTqGVBcKHGrIhmAxC4aFFlgOCmyyZWkupqmrH4mWmAQJamRpGRrAaasvyyrKiKHaJxrqZRhoMWtAk5ytxFshidH4+kaittNmM2+bgJGgBhdZWICBT/wmHJv37GxqdTqc5BHpUgDx6ODYFTfJ0seAx0qNeuXzxUXQhSiv+5qbnyTqx+1V3u3cRGxp9vb9MQFPXTo8aUKF4lNGbw3fK3eUdNtrYmGHxeJxBA1rk0OQZySwG0Cm9v/aE/A1NDaIolrtcLrr17AwQszPTi9CgqACBJjc+TrH80RXI1shXLvVeGJyfe5yUaVPzrBY+xELMS7/9PAgNXUvTtTenV7oJ43VCx8T9kZHIQP/v1+lFLfEUuzOjThADsRATsaFBnq4POk/XCN/N0t5gne4hK8tDgwNhorUcPtb5+p7yCmvJ/+ymFeqOhcVo6mp/3/Xha3+GEVvXyPq82HbzTI0d5GXVdXVVbx9/v8Pj8ZUV00YYG5tCLEmT1iqNkNnZyNLFCz8OTo2P44NriRzZyNk8bwWCRQiORamYvJTcdfjYm4G21tcaS8tKi6ViiVltBEQVZhM3Rxd2X6iyVFJhyirNnEvLq7duD9+72n8ZWYiTIxOr5IV9TlBDWhn5dy5gMKqw0UV2SuBNB17x+ANBX4XHVyGKlqISp4vPfityXFbVjfXobCQ6Fg5FRv++OUvtUZRwZAFdzuvCKFC6TltORtJP6EQH4p+cdAkg9Asc58gYQI0VEqMOQvjHEMXwhBsAWTVB97NsRxC0zMgOBCEMBwQA4Xw/QUeMOhQ7HDCAggMQScDzbS0viPGmDoRLAEHcOGaCGPORceQEeCmf/Qt/gODdNKcAsQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-disabled-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpilJSU5GNjY/NmYWFR+fPnz51fv35tZeHl5fUXEhJS5uDgYPjx44f6+/fv2VmAArKioqIMrKysDL9//2ZgZGSUZQKqeAzUzsDMzMwAokF8JqCWTUBz7vz7948BRAP56wECDACARibFW62AbgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpilJSUlGZjY5vGwsLi8efPnx2/fv3KYuHl5Z0vJCTkysHBwfDjxw+/9+/f87MABSxFRUUZWFlZGX7//s3AyMhoyQRUcRyonYGZmZkBRIP4TEAtKUBzdvz7948BRAP5cQABBgC1gCaMj8SIGAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFpJREFUeNpiVlBQ+OXr6/vP399fC8h2//jx4wEmfn7+c9euXXP48uUL+9WrVx15eHjOM6WlpZX/+fOHa926dRNBdFZWVgnj////2RgYGOSBmA+IPwHxQ4AAAwBD7SPhd4irzgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpilpeX/x8cHPzD399fW0lJyeXdu3dHAAIMAExLCKH400byAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-disabled-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFpJREFUeNpiUVBQqLW1tT0IpL89fPiQ89ChQ05M/Pz8z69du6bw5csX5qtXryry8PA8Z0pLS9vz588f1nXr1nmC6KysrF2M////Z2ZgYBAAYnYg/gnEHwACDABY9SRUSyy5EAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpilJeXb3B2dt4jJyf3/dGjR5x79+51AQgwAEsRCN8VvtvtAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-disabled-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHVJREFUeNpilJeX52NgYPAGYhUgvgPEWxkVFBTigAx+Tk7OV9+/fxcDsr+wAAl5GRmZ84KCgt/fv3//5fHjx8ZM////Z5aSkvqioqLyRVpa+itQERMTkGDg4uL6w8PD8xdoxB8QHyzIBJRjZmb+zwRRwwAQYACJUxySG2T8dAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAG5JREFUeNpilJeXl2ZgYJgGxB5AvAOIs5gYGRkXALEmFxfXVhANxMuYgDL2MjIye1VUVG4A6T3///+3ZgISrFJSUi+Agi+kpaVfAhUxg1QyALX+5OHh+cnJyfkTxAcLMjEx/WdmZv4PokF8gAADANpxGPrplMnhAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/knob-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwxJREFUeNrUVUtrE1EUnlcmM0nTTJqEtiqhFMF2I4gIShduVGhdCKJ/oS5ciOC/UARBLUpFpRYKFbvRNpQKilsfUBdpG4htbEyTNPPIc5J5XO8ZJmFM0jZddOGBw+Tm3vvdc7/znXNJhBBxVEYRR2hHCs40fpAk2TpH2k47HMbAo+FwZHvTGlQz+9yI7uvr498urjwSfN4rHEOH3AzF1nSzrurGrlwsL9+YuHRHFMWqfYjZhgKntCQVgLlnM3OXV2MbSiqVQhgAlUolVK/XrS+M4X+Yh3Ww3klxE7MFnOrv7/fOLryfXNuIm9lsFqmqiqrVKqpUKqhcLltfGMP/MA/rnr6avTY4OOhpHNDAZFo4Zs5dGBs4PXLycTAgkB6Ph9A0bc+Eeb1ea9/5s2dmBEE4lU6nNWcOnGqhIpGI9/bde1MBX4/L7XYThmE0o+jkMM9xHBEWfL6HU9MvAoGAxw6yTYp0MBjsDfX2jLEsS5im2bXDASG/7+LQ0JDgFImTFhpfU+BcNE9RlLWpWwMZcyzNw348zHYEZxiGJwlkXesw4NYBiCBdLhdn10MbuFUwGuYRuITouzVYr+k6wjegnZw7wa3KK1VUtVarcZDQbg3rnyhV1RpOsuGsVmd4hq7r1d/pTAxr+VAJxfontrbTq1i2ql2t7eB4kbww9+aBKBcMXIldAReLRSK9K1bnXk/fh/17gufz+UIum02sfPr8UpRkBBv30znMS7KCotHok0KhsLW5uQngeifOzWQyWcaVtv3l4/K8LObL4+MTtwZCGgc6xkogGhKFqsXlT+zsSurS0uLUzx/forlcbluSpIqT89aE6plMRqJpen31+1fzV3w9fvX6zcnI8WMjPR6OZTC4jsFx0uvJ1J+1D+/mn8uyHMPAcfxVHC3YlqfdtBz9HKhiR0dHA+Fw+ITf749g/Q9g78WRszjyOk58AfuOoihJiDgWi0kgmkbbbWJ2AG/2c+gVw8PDfp7nA1BgdoFYqsImJRIJxabin35+EHjrS8R0eIn0g14i8r99/f8KMABYnUshETxaoQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/knob-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA1VJREFUSMe1lWtIVFEQx5fMB2WSRmQFIhQVGQjSm5JIJFRIyzQypOiDYBBZmq0PqKwwM0W38LX4WB9pobuWpi5ppZTiquuT1LW1NM0KMqIH2Zdp5jZXdu1eti99+DGcmTn/e87cc+YoqvrfK2RYhDggSxFXZCWyiq0r+x04T1JDTtSRBTwQb8QXCUAOsvVlvwfnOUp9ZKGwPeLCk7Yjocg5JB0pRMrZprM/lPM8eJ69nDgF3JBNSBByEalAhpA5BCyYYz/F45FAZCPvwn6h+GJkOeKFhCPZSB8JFXeMQ07LIGQ1dMPN2nbB0pj8/CEjkoEc5g+4iCUSxZcg65BDSA4yXWGchuymXihpHQT90BQYJj+DafaXYGlMfopTHua/RjJ5x1QiJ1Hcjk/AXuQKMlbWNQmp2ueg6zZD38ef8GL6BzyZ+A6N498ES2PyU5zyKnqmgHeqRHZwee0U/KfXI5FIfVX/DKTp2qG2xwxP33yFOtMXWShe3WmCjPousUT3uKyepEviy5BtSDIymd86DOpmI9SNzoJu+JNNKK+guQfy20ZI3MQ/2AdxJvEViD/XGm7gNks7xuD+4Id5Cp4Ngd/xaFjrvUuwNLaM3+00C/N49SpkP+mSuDsSglRSMLGkATSGSfxR7+bZFxENG/zDwSv4lGD3HI2yims6JyBJ0yiKV/BlcyfxNcgRpIaC5/O0UILilmwJioStJ+JhZ9QlwW4OiLCKF6N4bL5OFK/my7X6r5XH5msht20U1O3meQLPXhOEd0dfFeyBMylW8dzWEYgt0Emu3KrmyWV6SKszQE7r6Dw0Dkm6LQiTlYrTPKmaW56Wt1lNRogvegSqlpf/zIXCesjW90meFqtzXtk3AzG51ZBY/hgy9AM2UWqaIAEPgdw5F2+oL9/QV0VYx6hbGojDFaU1GGWhOOVpDBOyN1Syt5TihDj1AzitqoKE8mZI0XbA9YddgqUx+Sle+kdYtrfIdcUB2momdsGYvBo4maqGY5fvCJbG5OdS9Nrqigp+siz7uZJraFrQy0VMHFdyvmw/l3qJqHZh/PdVfH5r2KrYH8Z5Nl8iyzfUiXfhycfKDwnmmxfMYx+Ou3G+zTfUEjs+ps580dy5Vbjz2JnjdrKvPwD8N34D1L0Qnrdlo6IAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAs9JREFUSMdj+P//PwOtMMPQNxwLYARiJiBmBWIOIOYGYh4ozQEVZ4KqQwGEDIcZylM0aWlU/aJti1pW7rvQse7ILxAN4oPEoZbBLCHKcJBCDu+EHLX6xTt2Lj185f/hm0//X3/+8f/rr3/ANIgPEgfJg9RBfcJEyHCQAs7Q3GqLpuV7X++4cO//3fe//p998f3/wcff/m+//wVMg/ggcZA8SJ1HbKYOsgXYDAeFHZuAqIRE9YKtV3devP//6OMv/zff+ogTg+S3nr3zv3z2+j1AvcLQIGLEZjgzEPMlN04qWrj/wv+tt979X3/9LUEMUrdg//n/SY0T84H6eUGux2Y4GxCLF0xedmTpyTv/V11+CcezDlz57xyd+V9a3xJMg/jI8qvO3P0P0gfSDzIHm+GcQKxQPGPdh4WnHv1feu4ZHDtEZf5Xcw37r+2fBKZtwtNQ5BeefPgfqO8tSD/IHGyGg5KVWtGMdf8XAA1Hxjresf9N4sv+W6TVg2ktzygU+flAwwunr/0N1K8KMgeb4aDw0siesOTj9EM3/88+dheOvfJbwAZbZTaDaffcJhT56Qdv/M/qX/weqF8dZA5Ol8c1TDrdufnU/2kHb8IxiB9QPRlsMIjGJg/Sh8/l4DB3jc/rLJu39f+kvdeIxqVzt/x3jsluwRfm4NTCys5hGVM/6UHVkt3/e3deIogrFu74H1rWcQqo1wxfagGnc1DQqBhZJUQ3TPlQAnRR57ZzODFIHqROSlU7DKhPBV86Z4S6XhSI9cTkVaL88hrOZk1a8b9yyZ7/TeuO/2/ddBpMg/ggcZA8UF0EUL0OoRwKL1ug3tMFYhcT7/B+n7z6S2HV/Z8jG6b8B9EgPkgcJA81WIxQ2YJSKkJdAvKqKdQQPyAOhNIuUHEVqDqiSkX08pwX6ipQKgAVrRpQWgEqzktqeY6tJuKE5gNeKM1JUk005CpoACn7Zz8845ivAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-arrows-pullsdown.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAGCAYAAAARx7TFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUCFtjcMlpNnDObv7mkt383xmKQWwwzgGK5zQbM/z//194zvrdM5AkwBikePrq7bOB8iIgRSCsXDt9+VaIZBNYUeWUJbuB4qogeZgihm8/fpintEy/ADItoXHqtW8/flrB5OCKgJjx4bNXQWmtM87defw8HMTHpgiE2YDYDYjZkcUBl+OOeCK3v4cAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-arrows.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAPCAYAAAA2yOUNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANVJREFUKJFj+P//PwMMu2Q387jkNK8D0kLI4gzIHLfc1s1ARf/d8lp3Omc3M2MoAgo2ghQAaTAGsrtQFAEFQpAkkXE4WBFQwsAlp+U7zBSwJJR2hYgbgEwSBuIkIE7DgkHiwigOx4WpqAjkMKCDv7lkI3k/G+74b0BsDHb4nPW7ZyBJ/If5dPrq7bOB8iIwI5Vrpy/fCpFsAiuqnLJkN1BcFcVN3378ME9pmX4BZFpC49Rr3378tMLmcMaHz14FpbXOOHfn8XNQSDPi8h0bELsBMTuyOAC+nGWQKm0f4QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-disabled-right-pullsdown.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXlJREFUeNrslkFLAkEYht9d91hgrORCRKeCiqJDRGK2GIVYxw4d+kf9g/5FHax/YNShW9ohSINyRTNZ01zdmW1mV+3mbsVslz74mDnNM+837zcz0slZ/hRio8kyzzKnUEpxvLcpjNSxetFi6WX//smQFcdxUHi1hMEUWUJc01AsV5KuMkodYbAeW7vHRsaZHMAoRAdnuDASJixEZQSEhAEjUDiIsIno4Jw/UBYC7EuZTxkbjQYucxeghGDYkdJgjCgRZLJZqKrqq0wmhJdxfE6rUzg62B1BJMmbcPBhJg0tpiLIOrLbZ2R8diwbEzENO4l1D+J4+vSNNUTjM2hbfd81XOsPqX7x1iZYWFqEUauj8FDC/NwslldWUXvvBjyzkfWDGaRqdqGnkqyMEra3EjDMD7HWN1oW0noKz80O26TzPet7d2Pwpub7eqybP7uuvDMLo88I/p+Y35XQtjmjJfxbYPf7qFcrHHblfnjubq9FCuPWvWF5/inAAMMzdZSyHBqHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNq8ls9KG1EUxr9JZuGiKcaJNdCFSEoWCl1YqEpaaaoitILg1idw2Tfo2jfoW6jYRcCaukiqrUg2bUTI6KgYrY5ObDPJJHMn3juJ/0C8c9tOD5xkhsydX75zv3NmpNm57Af4GwbNLM2PsuM4mB4b9I1kWrX2/M7Bm83dw4DcaDTwQ7d8g8kBCV3RKPJaMeEqc5yGb7AavXeNflNOqAVz4HcwRoB9EIGsWhYWFhZRNk2hdYwjrCyVSqFQ2IZNbExMvIUkSSLKCAhxPOXq6hpUdRvs/pqmIZPJel7LOLJ7Qg94oaoq1r+tN09aYnK5HJSIglgsxl3POPKlsvtC13Wkl9NNyE3j0uOVzysIhR5CURROGS+VcWBd9N+/fzeDu7aHtin2S1VYtuNRGaeMZo1g67j+l9Z3lbEyEt/7jDFc6/PK+K+a2pMywzCQ/rQE2759HdvDYDCIV69HEA6HucoCTevfn51KGFPjySvXSy0Qi8nRYTyKdPCnCPHY1OVqHW3tnUgO9F/TaLx49hQPIlH3d09N3ZyNfIOclivoicdxeKJjs6DhSfdjxHv7cHReEd0zbwYpGiYSQwPuPEwMPsf+WVncjSKD+KBUwcvEEPZOfws9B6+mPhGAsSIUfpb+zPr/4+FJbJsxfvn+WmDX6zg5KjLYF/eF5/vGmp/Czml+pTl/IcAAabQiHJYP3UgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-right-pullsdown.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXJJREFUSMftlk9LAkEchl/30KlDoemCRUUopBQeQogSsYQOHTp0iM59jLoEnTr0EUztC/Qpgi5eoqBTFyt1tULR3HF3ppndJTrlWMx2aeHhN7uw8/Du/NnRTi+vmGKqnBPOmEYpxf5mWhk766lofDp8yD3HGmMMdy1TGdUeENF1cM+Bk4xSpgxiUbwR8Dad8mT+4MhsH/iU+ZjMhm1T5QiP5twIoWrsP0nmE26yIRhNA+VSCcVCAeceRY+LcgkNozG0Dy+Z+IzfEw5OYm87D3EFBAG3wXjZ3cpBDwUh04+7zobE75kWxkM6NlZXXAljjjibTmEiEkXXHEiMGZVLJnjt9hFPLCKxMMd9AcRmZ5BcWsYLfy7bhzf15ai3+8hm1pCMzSOfy6DWfpffRX4y9WsdE7ksF3XI6FPf3RvlFyexLDw0204d5b0vY+bHOrPx/4v5FQNCRDXUHwtMgvrTo5AVnQPPbeVaGfc3lVqr8XzGPUcfblj1AECuvN0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAfBJREFUSIm9ls0rBGEcx7+7Bzk4eNlli7ylzUtJFGkRUY7KzdmFcuDAhULtycHf4LRecpBc1sHLgYi0JcqupS0WszteYmftrJnxzDPrLWWeofHUp9/M8+s33/k13+d5xjq1tK2YzAXBTUizyrKMnvZ60+hqqsl3FuSOEp1Jq6IoOOYTpnEhAHkOB4hOL+1MlhXTEF9k3Isg17I9JfY/UDHJAM+JBJaXVxATBEN172JG8Hq9OA0GSVyFJElGO5NIkczEzs4uzs7OYbEAoVAIW1vbzLWqjpXeqII6BE4D2N/bBxS8D5/PB3/Az1Sv6jB1xnERrK+tAxZ8HUR4c2OT5tk70yHPloOJoX64hwfgHhnQYup6fLCP5lmeo3WmgyAm4Y884oT7jjqv5vWekepMwn+hrTNGR/0Fan2WN+J5HosL85jzeL4wP+uh89FolK0zzfo/Y8/JQndnGzWg5Y2UM7s6WpBry9bfRVitH3tOIj3TjraG2g81MprqqpFhc9A8k/W1vVHfkbexOEqcTpSXFtH1VVaYD2dlFfinOFP9p2/G9pGv7gW4GhtQUVaM1mYXwncxAyaRjG/E4Yc4ml2NuCTR9CNGfJEQ5B5oNP2I+Q1JUVRjxPzfgoSIm/ClKjZDf3iODnZN4+Tw4JrnrqaJztgraPK+AKe0hD8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi9JREFUeNqUVLuO2kAUvcYGgs3yCi+zCYhiSzZK42xDScsPJKIhFV8Q8SF0NGxER4NQ/oBmU0SQIiQFQghjBApRADvYPJx7kb2CrDZiR7ow4/E5OvfM8TDwcDDNZvPa6XRmHA5HkmXZy91uJ+/3++Fms/maz+e7+I55AjheVKtVfyKReBeJRK5DoRB4vV4QBAFUVYXVagXz+Rxms1l3PB5/LBaLv20ca5PVajUxHo9/SKVSyXQ6DW63GxiGAcMwANUAz/OA5IDqYqjqJpvNfm61WjqBOfrJ5XJcIBB4j+CLcDgMmqad9Ift3M+j0SiYpnmh6/pbXFaoNQepKBQKUiwWe+Hz+QA3D6DHivaDwSCg6gyqvyE8KWHRRIn63263cO7w+/3gcrne4PTuQILjJRI9iQS9IeAl4YmEwR4F2ngKCQ00mLfbYbBPDYvnOO5sAswMndwfm8TEHMiLxeKKjD13LJdLyo9C+AOJoihdURSvKAvnDgwdyLL8hfAUNqbT6fyUJCmD5no9Hg/l4L81mUyg3+9/L5fLnxCvE4m5Xq9NJBhh0DK4dlHUHyNA1TAajdRGo3E7GAx+kT127M1er6dNp9NvGLoIuv7cPkaKPplIHhABKvhRr9dv2+32hFQQljn6EInQjSWUSqXXyWTyFXokYhZ4TCp+CZoyHA47lUqFfFCx1nTKxyT3GaJ2sJ5Z/5z1jF6mEBkW2LCePbwK/lHFWnPGuj+odlad3Cd/BRgAYjwouXetfmAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjNJREFUeNqMVEurUlEY3cfjO5PjO0UkCCKCiqLxnTnpktUwCidySRz5K/wJRgMnDmxkkdWooBo4bdCFi83UUkFS8/3W1pJjeL3FPR8s4Xj2t/Zaa3/7SOJsSYVCIWIwGA51Ot0dWZZvLJfL49Vq9XU+n7+PRCIFrFmfath9yGQy/kAg8MLpdN632+3CYrFsMB6PN+j1eqLdbr+t1+vPYrFYY59Eymaz1zwez2e/3+91uVxiOp2KxWKxgV6v38BkMolWqyUajUazUqncjcfjP6lKT4ZwOGxSFOUlVHi3C3eLRKzBYCDMZrPw+XxebPIcfz3kax1+dNFo9Aks3Fqv12I0Ggn4/y/4HlkJt9t9CPVP6YJK9AjxMQIUCE5oKQQt0COMRiNJciQxgOA2d9nK1lJcj76b7CeJDBtOWuEOWovrQaSwnyQSQurAioNetRY3nM1m3W0m6+FweIzADpi81ppMJgJ9J9sjXuLc3zkcjgOGpbV43LVa7RX7OWxGzMilVCr1AcN21WaznUvQ7/cFpvZTMpnk6fySKQfSVlDxDcN2D89WHN0muH+h2+2KTqfTyufzR+Vy+QedyeplWpVKpU6z2fwYDAavIODLbJAk6W+IzIB3Bwq+5HK5o2Kx+J2u2Cvt3CEGchFwJhKJR6FQ6IHVar2OWVBA8hvBn1Sr1TfpdPo11vBe9DnyFCHt2WXQFpXsAmDiHFAMMAWGavNYJTj7KdhTZVAJJNUyieYqTn1P/ggwAOPnK9ASMplRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-selected-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAutJREFUeNp8VF1IU1Ec/9+vbffO2aabk63JJvMrFEeiVj4EFhI99Bp90FM9SL1G0EsE0ktvgQlJD0kIRkT4YPQUBD0kCJImpuGcc6tdt7ldN+/u7rn3ds7YplPswu/cc+7//H7/j/M/l4LjD/Vkai7Emcw9NMv6aJrx6roW0xGKqkVl6emdq4t4j1FDOLwYfTZh97S23271untamhzgrK/DsEJSymPkYEvchY1YYim+sfZ24vFopsJjKmIPnr/2NPuDjwY6A77e9gBorAV2EQ2RPRWKwIJVECDocYGFY9ySxp5r6+1fWPgyVyBklgwdZ89zDrf37mBXwFbX4IKVHbkmP0nVQMKf4nje0NgEfW26rbCfv4WXLzEQiYS68XBsqKcjOGRpcIOkINAN/UTkixowFgF4xmjyhS6k5z9/jJJIWJNF6GeFOsgratV7JrUDM5PjsLq8CJ3dIbh+7z7YG10lm4oABFs9cGZ+EC+/03jgaIY7jSgTqDjsCqZfjUNUTIHd31V6T028qLHLGgsUzXoJn0TC6IYhGCUPqBpJMpuDeo8fWDMPSJEhLW7X2Ml+zOMJn4hQiiLLckHmWZatbmoJdkBaVoHGW4iQL9iJRQ7SRSo+NUUmp0ORdIxcZjchZbM4TFTFxcsj0Oxygq6h0nt45EqNXZIkyGUzIuET11piK7zi9gX8PC5u5SHz4eFLNUeNkHaQrijCn/D6EuGXmi26+iPb0t3XzZjMgpkXQNf1/yIR34bN1eXw7PjYJ0zPERFDQ6qBmydldTZ3AUVxvNV6Yp8QgVhkQ/724c07Kfk3gflKpe31VDyyL0Z+bwoOl0s3wE6uFVUqGQVqUYUcrkEiFoXNX8uRrzOT7+PrP6PYmCdc6tBFJPWxYTgGrt0MuQPtZ3jbKSfDchYcaUHeyyYT4bWV+dlpcovTJA1SJpIJdeQ3QIQsZTErhrnsgLSFUva8h1EoCxz/FRyJiivf8ooIORq14v0w4Z8AAwCwpYb8ccIJGgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-selected-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvpJREFUeNp8VF1Ik1EYfr+//Tg3N3U457T5tygUc5YgdBlRCRZ00Q/VhTchdNOFN91EIN50HSLRRUGCSWKGo7wJgqikMIoiZ6nT+bPcj9v3uW/fz87pnDGnK+vA830c3vd53+e857wvA38v9vajwFnBYOxmeb6dZblWhLJfkK7PaqoydefamWfEB+0lMHs3fYNDNe4G37DXVdntqbRBhbUEykvNEJdkiIlpCEdTsLQRnVpbCF4futW3usPjdoLduPugxeVteutv8hxpdleCKGuwGhfhWzgGUkYFgeehweUAi8ngk7DhanPbsScfXwVSlMzTz0F/l9lRVTPS0Vjj1DHAu2C46HwxUc8pWYjEodpRCm1elzOT3h4mph4ClSphL/UP9B5qPNArKjokiHSM8T+RSiugZBFU2CxNdf7jyzMvJz5RJUaDqeSioumgIa2QPbWVgBdPR2HpZxC8jT44df4C2OyOnE3P6lBqFEAwmq+Q7WOWfEwsJ7RJMgmioQIC42OwKWXAXn84938+Nlpkj6VkYFi+lfKpEgFhbEc4Cyi7W4dURgOb2wu80Qy6IoMYWckp2FmY3jPGNsqnQVhFkZOqqpaxLFtwqq71goR5YDk+F6i6rh50fTcIQghURRYpn7KQtJWYy2QU4pQtoN3vJ2/EQtTpUG61wNGOjiI79ZeSW/OUT5VokeXF6bIKZ6eN4wqZjCYz+Ntaiq5az+6eV9pOw/rifIDyKYtZ+f55vaG96zTHG+wcCYQQ/i8kaRs2wqH3k/cGBgk/SoMQxRomj2fJ4fGeYFjGxJNSYYz2hSSJkEjEk2/GH95MRTfmqCguX2g9thba+hX6MVPmqm1keIMbY4aQIAdaA0VRQRRFiIRDH16P3u9fm/86Sx8z5TJ7GtFE4CTwdPZcPldV7ztptpY1cLxgJUpFWUwuRBaD0zOTIxPEZ4Vgk0ChIpg/xoCBwJYPVkFgyTcpreh2PjMl08ZT9x0FO/OEXk5emZDf0/lBeyKTz140T34LMAAJdqAwng0CqAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-selected.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlxJREFUOMtjYMAETPWLtgW2rNg7p23NwbMd6478AtEgPkgcJM+AD2S2TZduXrF3y9LDV/4fvvn0//XnH/+//voHTIP4IHGQPEgdNv2MOd1zdZpW7Hu148K9/3ff//p/9sX3/wcff/u//f4XMA3ig8RB8iB1ac1T5EH64CaoG1ly1S7acWnnxfv/jz7+8n/zrY84MUh+69k7/6vmbd4B1MoGD4OcvgUZC/df+L/11rv/66+/JYhB6hbsP/8/t39hCiyMOIumrTqw9OSd/6suv4TjWQeu/HeOzvwvrW8JpkF8ZPlVZ+7+B+kD6QcZIlgyc/37hace/V967hkcO0Rl/ldzDfuv7Z8Epm3C01DkF558+L94xrq3IP0gQ8SKZqz7vwBoCDLW8Y79bxJf9t8irR5Ma3lGocjPBxpSOH3tb5B+kCES2ROXfph+6Ob/2cfuwrFXfgvYAKvMZjDtntuEIj/94I3/2ROWvAPpB7skvnHKyc7Np/5PO3gTjkH8gOrJYANANDZ5kD6YSwQ9kouby+Zt/T9p7zWicencLf/dEvLrYWHCyc7JrRtTP/l+1ZLd/3t3XiKIKxbu+B9W3nUCqFcTFjugeBZTM7WLim6Y8qEEaEPntnM4MUgepE5W08AXqE8EOS+xA7GCuKJakH9B0+msSSv+Vy7Z879p3fH/rZtOg2kQHyQOkgepA6qXQ06xDNA8wAmVsDLzi+ryzW+4EFbT/ymyYcp/EA3ig8RB8kAsC8QcKHkHCbBBnQjyqw0QuwOxF5S2gYqLoLsAG2CCukoQGn0SUFoQKo5RngAAHC8qpFnABTYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeNJREFUOMuVU7tLqnEYtigJpJJTS0JtDUHQpEPnDC7Oxz8haHNpqk1cxUkELwQuOnhbVI6oIFGCoiAYitfBQVDMS4LgcM7y9j4fvw+62Onrg4eX9/I8v4ff7/1Uqo/fWjKZ/J1Op2+z2Wwll8v9RUSOOvqq/31+v/+Ah5OVSoV6vR6Nx2NaLpdSRI46+phbxV8LBAInPPDUbDZpsVjQfD6n2WxGk8lEishRRx9zPp/v8I0rk8m0xVYf2+02TadTGo1GnwL9RqNB8Xj8D1M3ZI31YDB4WS6XaTgc0mAw+BKYK5VKxO4vZDfqcDicg3q/31eMVqtF4IEPEU0sFpt1u13p8pSi0+kQ88bgQ2QnGo0SRL4DiEQikX/gQ2SX7+S5Xq9LFpWiVqsR8ybgS074uR4KhQJBSCkwD57sRGOz2a4TiQRVq1XF4Ccmq9V6Jd+JWqvVHnk8ng4vkbSVXyGVSpHT6bxjrk5+nXVYMpvNJq/XO4Uj7MxnQB9zRqPxnHnbr7d2k7Gv1+t/ORyO+1AoRJlMhvL5PBWLRSkiRx19g8Hwk+f3Xm+sSqipRePYYrHc2O32gsvlmrvdbkJEjjr6jB/i4JV/9IawqBPDp4wzEY9Fffu9g5V/tHClEc+3K6JG1D+c/gLaLHWQM6f6bgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-down-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARxJREFUeNrcU7tuhDAQ9AtQQBQ5IQokCkDi/7+Fz4CChgiO8yNjb8idTiKPMpkCY+3s7uzY5uM4SimFEDJAHOABLMBa65zDV/jFOXYOF6J3tl9D9hnbHvAd7QPOeMZYrbWKomhdV8Q4h9p7AolGggkICUbFcbxtV20MO6by8zqHDZShuNagGuqjEL5cXqdpQiOywDcQEpkYBJxQ2CklEfJsiCnLcp7n201j2GCg4YyUWCKQPPWxKFUUxbK8bdfNoDW3UAL3JQJelyPH1KMJWZam6QtJJMaTs4L9Bn+VrZ4uxjAMy7LQNs/zvu9Pa8PjruvoAuCEmqb5RkmWZVVV4aeu6yRJvlJCAG/fd9yFH00JJW3bfj6z/3A67wIMAMmK0TcxpouqAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-down-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXdJREFUeNrcUs9PwjAYXbt2gIpHQzDGg1e8YkiEAzGRi/yB+Cdx8OTFRKPyQ4MSYWNs/bHV1y0SYoLEo74t/dr0fa/vaz/S7/c9zyt8AXPGGOfcdV1KKSEkTdMkg5SS2phaOBtgjMkTtNYZG1HbiI1v1BVPKRUsQpYYR0pFqas1zxNWyI5MldbSQk3e3pnLiyL0IQOjcIwBc0JoagxxHOTHgBDQfhqMWaG0Gy38KI4JJSgMxCS1haA+2IKHOIqFFEEQDsavVumgejR8vM8kcQNGeQq/ZRtj2VZa3NzeYWnZhWLp8Phk8jIMF0tcEM9AM+1EJzM/eHgehcsITJbXzj0PJ8w/pkJEWmnJpEtdofQ8WEymMyFVTmPr97Wzty+8Is6NhIjjEAO+dQJ1foO/ymbfeqjXux6ORvmyWq1etNsbtdHQ3e4VGsa+AOet5vkWJ5VK5axex6TRaJTL5Z+c5Gi1mr7vn9ZqUortVcJJp3OJrvo/r/MpwADuwwM0qCfRHAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-down-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrcUj1vwjAUjB0nLQSK0qUfKR1Yy1IGysgIKwsj/4g/lnZlZ0ViQGocx3bsnhOKKlpadWxPkf3i3L1378UkTdMwDM/egZgxFgSB7/uUUkKIMaasIKWkbjcO3glYa2uB1pq6CLt2Knw4oh54SinkZqgopaLU1zqoBQdUJY3SWjoozjmLotZms0EayOAYC2JCqLGWeB70AigK5MbOOp2L7XabC0EoQWMglsY1gv5gCx5ELgpZ4AwChtN+/yF9fuE8ryZgVajwOLa1ji0EKjSbDdR0ddvt9tNwuFqtsleOAQUVaJW71CWhXiuKIAaT1r1DOhg8du+7mHHO8yzLUArURvP8Mo7RUk1jH+d1l9zeXF/B9H6i1eywHgjU+w3+Kpsd3aHlcrler+vXXq+3WCxO5saw5/N5PV1c9Nls9oOTJEnG4zGCyWQSx/F3TmpMp9PdbjcajT5f9y+6hBP4gav/83feBBgAu4vyDSWkLFcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiWrpyHcP12/eZXr15x/T792+mX79+gfHPn0D86yeQhuFfcDmgOmZWLl6AAAMA0ScnvzgM/74AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNo8ybEJACAQBEG8/ltSbEILUMz99O8eRAOzZTblUtOYC9sMEQGSkAR3viYdfo36TyG01o8AAwDxoyq9365oKwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVZJREFUeNp8kr1OAkEUhe/8sLvCgIPgClYUGhKjhSE2FmJrYWFhbCzURKzUWuNrWPgcPoHhDeyMMTzBEmBlZ4R1x5nNYpDInuQkk5nv3ntyM6jZbMKUkDbWpnf3DyeU0kOM8ZZSqm4e6QxIL1tX667rPjKW32eMgeM4safhGDw7v6iXy8vtUqnMFzmHMAxhrC37/T+wGW277spTcanILdsG3/dhVjTpmrm+uW1lc9ldQigIIeA/0aSrRQg5NnWj0QjmaQJnhJQbhUhpeJwOc86d4TAoRFEExmkw6vV630EgPqUUTMdJhZWx/BJvg4HfyLFcKmzmhjKQz57nNWy9tnkitVrNrI50Oh/vlerqns5cNQWT/NM28O+foJS8IoSPFCjbsZ25sMkN3a7nE4JfdO2mlLISd8EojhCpCFDy61CSf0E7r13YbuycZizrQJ/XlIrv4EeAAQDMloUiXiKSSQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWZJREFUeNp8krtOAkEUhg/LKIRGwAZ8Agpbe9/AN5DCzkvvE6hPgb0WJDYW3qiNRhvUGBpZIZpw21mX3bnteGZZ0BDXk5xszuw3/znzz6SurhsaAELMZ611UwhePzo8qGMt43XzP4pU2+4go4ExBkEQgOu64HlfjW63s3Vcq9nxpmiDNXIccCgFISUsZjJQKpWgWFxeL5dX7jar1QoyxIgamCilohbTr4+ZyWYhny8UpFQnWK7F4yhLCAHz6fs+pAmBXC5X2d7ZqyK4YNQtie3/Ss45qDAEQtIbMWwRzgUkBZ4bGOerM9i0TYoQlT1vvBQf0sA8EeaT+enMDf6Psktd4/3L1GcihUyEB4MBKo/Pp7eZOLMBh6Nh6+bywngtItjYNB+9Xg/6/b7z+dHdxXL8A6sJbMYJWADUofg+6O17+23fttuvv2BNms2nyYtKgaND3RKcnT0+3J/iknHBxWTxdcO3AAMAyTPqDXZdVhcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAV5JREFUeNpiZEAFjEDMBMQs8xcvD2djZfNlZGLS/f//vzpMElkhS2tHt6qsrOxUAUEhBwEBAQZubm4GLi4usAIWZIV1jS3q0tIyhyWlpAWERUQZfv/+zfDj52+GL9/eoSgGWc0uKyc/U1RcXICdk4vh3fsPDOiABWoq64TJ09J4efmsmFlYGb58+cqADbBATWVjZmYJZWBiYvjx4ycDLgBTzPr56zctob//GX7+/IVfsaioGMfHz5/5/v77y/D311+8ihlfv3719/NnoEu/fuVhYWHBq/g/CH/79vXmu3fvjPn5+fEq/gfEf75++rz52bPnxhwcnDgVM0ODjvnalYu35RVV7f79+ycJirG/f/9iYGbkNAF076X/jMyBQA3s2DTAFIPczfDyxbPPLMzMB4HhrfP16zcJsCmMkOQDNACekBih7gc5mBeI+exdPGPYODk9//9nUAFikBgDQIABAM09iIFDDek1AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAW5JREFUeNp8ks1Kw0AQxydhU6sGxINUPVQUDz149e4b+ACCgl59AEEsehc8+AaFHvzAghfxIuLFIh4traalh0KaVpO0zYfm29mYlCKkA8Pu7Px2dvc/yxQvbgIA8NGrEPgVy7ZKu9tbJYzdaJ3mQ2OqQjNAA9M0Q1dVFfo99bHREPZO8ketaFO4ge1+KfApq2A5LkykJyGbXYL5hcWNleXV18P8cQ4ZQotSmDiOEx4Rj9TSU9Mwl8nM2q53ieF6dB2PtW0b/ruuG8CSFPA8nzs9O99BkKPVCU0mmev7wKW4TZwW6OHEspLhIGDAMH/WososQakSYc/3YKBpM9EjEbaSYZrTdGMwVGMcrCgKaq/XYp3H3lmSOqBrg7u4m4lqSJIE3W6nfl0sUK2dRFgURWi32/1WU9jH0BzCox00DANkWYaeqrzUa28Hwnv1YwQOyHO5/PejGKaPv65uf5u3Tw/3V7hEVdCoKFG74VeAAQDaxdSLiOs7LQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNJREFUeNo8iTEKADAIxEL9/0udRUSF9pYGMuQOdz/CzCQRQWZSVXQ3M8PuftXa338FGABp7SMpb2OFxQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUeNo8xtsJwAAIwECMr/0HcyJRS/vRwEGoKiLik5n/mxnujqryJiLcHbvLzNDdjwADAARbDu/0NmM1AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-left-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASVJREFUeNqcU8mugzAMzFpx58KR//8jbiAOoFZtD6AHElk6JEDdBam8iYSSGI/Hjs37vmfHMQV4j63nEdbaQxTG2vvtbq0RQkopAge+TB1jMeZ8ucBVyRkiIJqUD/p+Af68Xm8zC7AS4XiY6G8YnHNKY82gcgDhv2Ecx6Io3i+HESoiiyJcEV8UNU1T13XMhd5DzuL0Wp0lNZjpuaqqtm2xQfDoTK0iMMhVxQsRDYvK5XmeJMmmiFrnyjLO+BO7RNjDnGVZmqZlWX4QSc/CWi8pF++6jhLTaHCgqZkApfTppD9f7b3Y8biFolZUzRjrnDUG/uimZ+DdPtprLq3VNBlwOYfZ4iFfEQtyoCE3LheAMY26F0UY4n9Mv3PLO+A7V4rzhwADAFzx4BgPjY4eAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-left-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAY1JREFUeNqUk0tPwkAUhUvn0dJpBTHqVv0FsNWYaFzJX3ZlIgFZFgIbE6MxRCLBWA3Q0nY8bSXC4IOedjGZO/P13EcLV9dNLb9kHBJNMkoY1Qkhuq5Tx3FyIaIonLyNia4Z3OCcUUp1HaACjaIoF+XjdYT7ppE8nCWgQio6n883B028MSiWVYRMw2CMISlQEMoBisKAU2pZli0EQIbBUR3sf4H8IFi/8+Z5jZtGvX65vEm10CiaAqTUUWbnO+r7vkJx3c5tu43vKCFLIC3GOOMww3lWnV9BzVar1+tjgaNKiJUF46lYwqOUrIBms5XTtWrNNIuu60oplVBWDggZoeMokOJoppw+OjzY39vtdLpKaDr1hRCa1GIpNSkLCy1Aa59NdgmtVatKaDgaV7bL6HIUhpi+OI7/79qPGgxfdiolzGDaryQvLLIEk4Fc79of6vbvKuUSGkdo8n8hRcZkNpPk5OwCLjd8Yf9x8OzYYsu2l2uEzpDj0/M4j4IguH948rx3GLGFBQ4oKP+nAAMAB7f00otUtiAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-left-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXdJREFUeNqck0tuwjAURbHjT0iCxDbYAntgieyBEUJihsSk7QS1bAAxKNARJITExu513CIaaEV6FVmWX3J83ydkvV63muuQpunhYIw15hwEAaWUlGXZCJGfTsu3ZX7KpZBCcMYYpQARUhRFA0qePz2/4P52GMpQCu5ApBIzxjxIsdYuFq+gRFEbCqXknLukCEG0Aeh9s1FKRXGUxDFAUgpUB+ceRM/3tN1uh8Nh7XC3+0A6cQS18YTIrpKodMfRbDYbj8e4pxaCHRSFCy6qj311LlGmtb5+ezQazedzbHDhdQgFwsr97dzxGAt+gOD5GjQYDLrd7nQ6xb4WujQIBUbHUaC/QFC/3+/1epPJpBZCTs6XbRm3WvItHyWr1erBrmXZEU+SxJ1OgoKjzN7UV/tvHf0mdOmY5xjganwcApsLqwEIwgSlWVaURcDc/4UUObd+JhsMZDV7YEVKa1WqgHovLW+K7ff7f/z9Wmk4AMVa47pJ6acAAwDbUso/kA6gwAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-right-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT9JREFUeNqck0uLgzAUhfMSXAkdOiCi4Mb//39cua6MGxdK8+pJ0mZipjDjHEK10fvl3nuudJ5n60UIpZQUXuS8BGMMEGsNWFprKSUX4uNy4ZyfAoHDOMdyEkLgTkl1u82AnssonoyMjDHU1UeVUl/L8nm9/gcEAYQEHYoQsLZtK8vyRGlRKC0U6K9833d71DiOPzeDXLMjFc5xXyMoWhss7+a3Fq+u6+q6DokfXEv/G5ckZ8zViH6j2DR5/GJzmqZ1XYdhSI8RKRgPKA3tdkK70lfDPfbbtm2a5jV970Cvt62/WD9iB1BVVX3fwwHjlQbSdF7CY/h1v0ulpCgKkXgaDEkbfOhRPC3MkVIayxhH58eMYhYZ4gmKbPOU9svii8sC3sbnoJCOd8lZjjn6NTIHITYUhmahO5nlf9dDgAEAn/cvPZYArNYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-right-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYpJREFUeNqck01PwjAYx9eu2xLjNATjh2CRC+IBT/Kp5Woi8bCLBw9GphINRoMMonR9WVufbbhsxAPzn6Z76dNf/8/TloRhqLVWSslUy1QpCyFMrOYirutqbQBl2ylGhguhpNw/bGPbbgwyBkCaEIIxBkMsYcv5m986bsQinufBA1iQneM4NuAQNpR+LT/3Dlr/AUEPrI0vy1pTyhOKidMgteLN5MopKCu/1uuEc2Gq0Zej0flg4Pv+HyBQ+aFzX0CR0uOOIFwAqxodRY+TSXTW73e7JwihGgjqUn5kjhBSSjuucHLx5ffWylLK6/F4NpsNhxc1kF3ZGvCCKwJ7jNUcFbkHnU4QBFtDm9LWoiFeZ/VKEsY5qw4dtduQFNQoTSW0GqhMVeeCjVNpJqj2x3zB68ue9nrQb/3cgMyvslsiJRiGBopXq/f5ojgWO20/zC9ONrgQQnABW84pTW7v7hljDQ5kASrsCAGdjOPV1U24pkmzuwZzTV4aKO305fUhep48TXfPqNSPAAMAXbEphoLM6uIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-right-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX1JREFUeNqUk99ugjAUxtfSwtggGRn3voC7cZmXZpdGn8G38wV8D6/0xjvvJZnJUEoLtPuAiIpbJicN9M/Jr9/52pLlcqm1LoqCUotS4vu+53kP3YPZtq21ASrPcynldxy7rvvW7zuO0wlENpuNMaYWpZRKpUxFioXh8KMTi2y3W/zAAgiiABKJOCaJ6z6+DwYdSqu3BQhfsBhjlFL0wdrtojB87eBR3TNVVBRSVqp1FEVB8HKZPZ/Pp9NpEAS/gBDNQFe6QMkyR3IllUL/Mnu9Xq9Wq/F4PBqNauFnEOe8GZSKCCkKzW2F+SIvXWvtjJNdLBZwdjabXYEsyzor0ppeBLcZXGuBkP9ZRWuJtRSWuqBMl35xxlvZvV5vMpmEYVifzNXxZ1nWyMEalCdJEseHw+Ho+c9PrnvvqZlTgAJomko0xAMxjm3flvYnCKn1zYavuNlSSTRM4sndTylLQw2NHDBEKmQqGbNuvfsH9LXfm9NDgztCiMa1TvEjwADa4Bo+zuuFWwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-up-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQ5JREFUeNrUk9FuwyAMRbFxHvIn+f8PSpTkKe1DOilSUyhk16bTJjStm7SH7UpERj6+gCG0bVvbts6544NyzlUAxRjZ/UR/msaBhmHA91v0siwn03M6hDBNE4J5nhE/ofu+TykhQKfHcayyUs27rqtu59/0+9doqZp9ve7oIBE5cp7ZizDiikanLpeX/baLB8NKO0Ib0y1g2jTyTsPsdD7jfTQiMPNcChweChqeUg4hihXoWNcVqEAw8cVd7fGucD/McMuHXZPg/4n3u/cKizdrbNd7WxkFmVS5SLAK8gqa2Fgi3YnZG0xwR3wIxgPixwb0gIYWlfNpALok3vrwiUoWgZpa/Vd3VFzKOq8CDACjBLiBGK0ZHAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-up-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNrUU0tLw0AQ3sdkk2wa21qfrYoogjcPnvwP9Rd7sArV9iC1YKEtggcRRC1iiX1lk3WygaK9VMGDftnM7Ga++XYzk9CTs0vf96MoCg3Gk8nYYDRKDF7pk0kYqjBk5Cf402ytdbV6gfZb7JtWq93pdLrd+ewgCGq1Ok6azeZwOJzDPq1UsOo4UUo1GtczUZhZH5fLM935N/X+NfaXmsSRAh3ZrsU8Gzs5GAyfX17xi51lax2P3vuMxK7rWAiwKKP57MLaytL9w2P79o6YJoCRjN56TwK49KTrSlsI5DPGYh0rFe1sby4X8uf1qyD9G4J+T1hcSul5XgZHBkcCP+P76DyvsJg/OjxItDEfMxzHldJNlKWLwkII1CaEqkhxzgFgs1Tc2igCJ7FtC8exbTu5LcMFsDhnlFKIAR1mcuD7e7tgARcG+GoIDJgwNR4t0UTgJrgsra9CSkLgjngyZEzrlc4xQCysp87lsownajxV+kydJtD0JAYfAgwAo0qgTdQcI7EAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-up-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU5JREFUeNrkkj1vgzAQhrF9/sB05v//gGSJlCE/IIK2azNkz5YiAflQAAN9baQkytC0W6Uewpzxc3f2vWa73S5N03Ech2B932N0zvXBrg5+1nXNo9/Yn6ZxoPl8jvFH9Hq9zvM8y7LndFVVy+USzmq1Qsue0LPZrGkaOG3bLhaLh1X2X9X5xuh+Upblfl9cmgvnnDGmlTKxkUSPNBq13W4/i8IYI6XkzD+dc5eywvQlsTcacry+vaPhSWLj2CKlD+B8GNH4Hqv14ZiEAE9/bDYQx1qbeNxqDVqBhmRQBzuBrnA8DYVOp3NsYgsw9iMSK+VpKO16J4Qgoq7rXNfR4XA0WhmjtfavDCyRFMIflAbCB5GCBMQn3AEVTKIkEQ/twDu1BQXGSKGI3xhonJ2CoaK/ZYzdblzwsRDJMYpwCsOFzyamTPfoNYBNOwn2JcAAJXXV9kM4kCMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUlJREFUeNqMkb1OwzAQxy+OExgZeAAk1IWhon0V1oqB12BkR0LiEUCCCioxQFmYIR2YWkqFBFKqxpQ25It8f5gzShADlWrrZ/vs+/vsO+n0vMObzQZ8zD8hTVNIkuSHOEaSGOeK5PdMoPW0gnDO7SzLQJIkWLYJfwDJI6gZ+L4PCqVLi4MgwGD8laRp1jZNE1RVWVos/OMwvJaZMRnUtxs7lNJ1qij47wzyPF/IeDyG6Tvr3XWvDoj2cB/NZ9PWRNctz3WAELIwomEYwBhz3l6G+2g6Mg78tnsz26zVLlbU1XrB8w2RkCzLgWOPoggsywJd12HKmDbsP+49P/VHqPOqFItZZEw9PDrelanSCsJoy3bcNe/Ls0M/GLmu3bk8O2mjjy9yhiR/6yPW4s1KiYrI5V6B5EKApCXFf8WtLqkQNi8vqBA2fAswAMMZzeG4WyTTAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUeNpiXLpynZGR4as3737//v0LDH7+/AWEMAAR+wWUPX7iBECAAQBhgCfi/ZM1bwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-disabled-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUdJREFUeNqUUT1PwzAQvThplzIwsJUhA1kY+Av9EawVAzPwBxj5NxVi69iqG0qZS+gABCGQkihtonwotZMzvspBXZCKpeezfe+dz8/GZDqTjuNAkqbQNA0IIaCua+BcbNdCcOB0JurfHEXvxUMmpUxIZBgG7DuIr0bG1LSoqgosy9pbvNlsKLwxVWWUqpb/Iya+4HxsHvR6ixPHOTcZO6IC9CZEVK3hNiI20GC7RgjDEFareP7kPt4xz3uukmQ9jKJwXZYFMMb+vDGOY0L6/fV5Sw2Ytm3LuetG/eP+fcfqnkmQNhmiTVGuc8jyDIIgoBtd//318sP3l2SYMRgMiENW06O7V9c3F4yZQyU6zYvisCzLRBm0LIr8YTadjBSnUCipbituC1DPHY2ugqnPkH6IBApCA3ctlpqAOllpoaFzuAPaw48AAwDbB9BTAAnfJQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpi3LvvgKqq6oePH//+/fv79+8/f/78+vUbDED0HyAEC/75++fq1WsAAQYAbM4oZ81Xt6sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-disabled-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUpJREFUeNqUkbtKA0EUQO88drNJdjMJSSyUoGghmkJE1HJrsfKBGEtLn5Wf4FfY2lvYqaT3B8TCkPULEtiwI/uY8Y5sEUQxXjjMneGemTszxPd9+BYEoTkkR+eoHJMD/0EyaxZiI2xMzpAYSZDUbMLHRJPbJ6dnHcb4VhzHbfkhF6JI9qWUr1JG3e7T4x3WRDkxwba/xMNOZ67Vmr0ploq+UhqyTAGlFMJRCKMwhMFwCMPB4Lnfe7sKgn4PndCcxs4vLlc8z3sQ1WqNcwvwVCSBJEmg6DjAGINy2QXO+GaaZvca9P57ELzQpaVlB53bZnOqViqVQSkFv0W9XjeI6ZnWNU4F3dndO3Zdd9GrVLDVDP6KRqMBnlfZWF1bP6LY0oEQAtI0hUnD1Fu2vW2+pu3gvf4jFwoFM8xTQkjVPIjWemKZWxzrQXwKMAAaxXA5BvQ04AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVNJREFUeNpiZMAEjEDMBMWMUPwfiv9B8X+YQnRNLEDMCsRsQMyMpPkvEP8C4t9A/AdkCCOSRpAmtp7+SZEsrGye37591/7y7avy5y9f73/59PnGly+f9q1etmg9UM03KP4FcxZLcVmFgrq61mxuXh77v//+M/z584+BmYWZ4f3792D88uUrhjevXp28euls6fWrl+8C9XwGOYtlwuSpBgryiofEJCQ0eHj5GZiZWRiYmJgZ/v77C6SZGNjZ2Rn4+QWA/H8yzGwcQYwM//a/ef3qE7O5hSWXo7PrDikZGRlOLm6GX79+M/z9+xcr5uLiAtEcTMysGnduXtvB3NrRmyEsLBwjKirGAPQnTo3IBnz99k1aUET0PRMrK0sYUDPYRmIBSD07J6c30///DNrc3NwMv//8IVozyPb//xmVmBgZGQVYWFiAnP9Ea2ZlZQWp5wcIMAAiP6Ghx1+GGwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpifP36NRMTEzMYMCEBRjBgAIP/YPDv3z+AAAMArN8L7foJbfsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUeNokxsEJADAIA0Cise4/mBNJtNDe61BV58nMH5IR4e5mBmB3Z0ZSd18BBgDIAA7SuCPczwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scrollview-bottom-corner-color.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAIAAAC0tAIdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiPHPmDAPRgAWIjY2NiVTNxEAKGFU9qpoYABBgABtHAx0Ze9+BAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUCFtj2rt3L5OTkxPTt2/fmP79+8f0//9/MI2M//79i5WNjY9sxokTJwBXtEPtiHmeoQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpi2Lt370yG////z2T69u0bA9O/f/8YmIBcKAuN+Pv3Lx4uTjE0Q0+cOMEAEGAAD7lHUquXzXYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpi2Lt370ym////MyAR//79gxJoXDTi79+/eGSxGQC3AyDAAN4mR4fIJKx/AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpi3Lt3LwsDA4M3EFsBsQDL////fWVlZT3k5eUZ2NnZGZiAAtYyMjIM//79Y/j27RsDC5DBC+LAAEgLAwjDBUCyKCrIFPj79y8dtNDEDGQBUBB+/vXrFwMsoJiAskefPHnC8PPnT7BKUBBufv78OQsQmwF18AEEGAD19p6n4TmfGAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHlJREFUeNpi3Lt370wGBoYPQHwMiLcy/v//f+bPnz8ZHj58yPD48eMdTN++fWP49+8fg4yMDANQ0poFxIEBIJuXBSgKFwCx0VWQJfD37186aKGJGRgCsAD6/fs3KIA+g1WAOM+ePQOpOMpy4sQJkIJPQHwKiDcDBBgAYcihtIbGbDIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUCFtj2rt3L9P////h+N+/f2CMzEbGf//+xRDDpgdqHgArhUbwsMigfwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUCFtj6tpwjCnS2Yzp2tufTP/+/Qfif0x/gRhM/wWx/0JoOBvGB9JoapD1gsy6eu4kADcbQ5oyd/JRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUeNpi6tpwbCZTpLMZA9O1tz8ZmP79+w8i/jEw/QURENZfMPcvjIXERYj9hepAU4xmFNj4q+dOMgAEGACr+UQz3IvZcgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADJJREFUeNpi6tpwbCbTv3//GJj+///PAGFhEH8ZmP7+xcb6C1UCZiEkEGLYzANZBBBgAL41RzPloL1CAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi7NpwjIWBgcEbiK2AWIDl379/vhpyEh6aClIMXOxsDCz///+3FpeQYHjyjYHhz5efDCAVvB9+ARUz/AMRYAEGEIYBsMBfdAE0FX8Z/v5FEgBx/gIFCaj4i24Gspa/f0Fa/qK5A9UMNBUQa/E5DOIXDFvwew7VUCagwOffv34xwFSCBI6/fPaU4ddPkOB/cCBvfPvqORMQmwF18AEEGADSXZ0uKgg45QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKdJREFUeNqUkEsKwjAQhv9Ktq7tXbyhN+gtdCF4goou3PlYiooPqCAWCm0zE2d8EWNBDPwQvnwzkyTq9dMEwEWSSobRNrdJUVZYrvdYbY6j1uJcYlcAnTiGc65rmB0qjfjM3BbAeC3dGwrBt0E+IC2hN9DDBsMDD8MreRp+Dwp7cJPB/GvsxxQO70H44/lkrYL8/oW2rpGdDgrGZj6bqHCVTCWDmwADABEdo9VXvegQAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACtJREFUCFtj6tpwjOnfv39M////B9Oo+C/T37/o9F+wHIiGicH46PqBZgIAEU5GmoIeoQQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUGFdj6dpwjI2BgaEOiBOAWJrl379/jRpyEhWaClIMXOxsDCz///9PFpeQYHjyjYHhz5efDCAVoh9+ARUz/AMRYAEGEIYBsMBfdAE0FX8Z/v5FEgBx/gIFCaj4i24Gspa/f0FaUMz4h24GmgqItfgcBvELhi34PYfp/de/f/0SZWZhgQssePnsaamIuCQDCysrOJBr3r56zgzEUUAFEgD4NZMFqr7d7gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUGNOVjzsKwlAQRU/kbUHM/tyGlZW4ilTWrkKwsfNTit+IWgmBJG/us/BDjAFxysOZe2ei4XgSgD2QAP1oe/MhywuW6wOrTTpoLa45uww6cUwIoeukQKFAAUhqO0m8RhLO6uDbsCownMnewKzRqICHUVl5GtUMq2eoyZB+1X60qH6H8cf75j2Szk4K+LLkcjoiKXHz2RQgBUZA7w6pZqOrnOa4eAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUGFdj2rt3LxsQtwDxEyD+z/T///9GGRmZamtra2knJycGkEAyUIDh379/DN++fWNgAjJEQZy/f/+CBUEqGJAxSAUDMiZXAGQDDNNOC03MQBEABsrrX79+oQTQ3CdPnjD8/PkTrqL++fPnfWfPnn1x4sQJBgBuoxapBuMd2gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUCJljmjx5MpOFhQUTIyMjEwjAaGTAzMyMk48uBzODh4eHae/evQACDwVlbTA8UgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUCFtjCquZyKRtbM7ExMjEBCWYmMEkkGYGsZmhNIgPZYNomDiSGmS9OqLsTEt3nwQA4LgFKynwVH4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJlJREFUGJVjCauZyMbAwFAHxAlALM3CxMTUKCQqXiEsLsHAwsrGwMLIyJgsJinDwMzCwgACIBWirGysDDAAEmAAYRQBZnQBFBXMzMwMzMwYWpiRBdBUgDjMmGYwo5nBjF8FM6otYENR3YHVWnwOI8r7r/nZGEW//2Ni+PPvP1hg7uuXLyq0FaUZONkhgVx/8/FLNiCOAuqQAAAUvBbWQgxxhgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUGFeNj8ENAQEQRd/8GYvEdSVCogBuDjrRgDLsSQc6cKEJFShEspsNBSA4CdZKzPHlzf8zNstWd+AArIFljCZTrpdz/1jki1NZuGQiSVp0ewPMbB6SAaCkgaQ0JPEcSYRXwbfhL+DuhMt/G5J/hrqLcPc34NWVWuOjxat31Ne+Z9QZ/70fMtq6IanUOG0y7BhlkSNpHZvdHiAHtmaWPQB3Dxpmsh5qIwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHZJREFUGJVjmjx5MhsQtwDxEyD+z8TIyNgoKSlZbWRkJG1hYcEAEkiWlpZmYGdnZwCyGZiAQBTEAdIQDBJFxkxwGQQmS4CZmRmO6WgGNaxFwcBAeQ0NGHgAzX327BkDKysrAw8PD1hF/ePHj/sOHz78Yu/evQwAKaocei2dPwMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHpJREFUGJVjmjx58n8gfgLELUDMxmRhYcFgZGQkLSkpWc3IyNjIBCQY2NnZGaSlpRmA7GQmIGAAYZAgkBYFq0DGcBVImGQBZmZmBhimoxnUsBZDABoosAB6zcTDw8PAysrK8OzZM5DEAqa9e/cyHD58+MXjx4/7gCpqACrxHHpLd88mAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHRJREFUGFdj3Lt3738GBoanQLwAiJsY/wPBz58/GR4+fMjw+PHjDqZv374x/Pv3j0FGRoYBKJfMAuLAAJAtygIUhQuA2OgqyBL4+/cvHbTQxAwMAVgA/f79GxRAr8EqQJxnz56BVMxlOXHiBEjBCyBeBsT1APoAoYpapz15AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5dJREFUWMPNmMtLG0Ecx2eDRopFGijUVCpeSnvxVKSn/geFXAIVLJ7EQntoCsWKPQqpLYgQjW9UtCD4QOv7GYOoSUWJokERUfGBDxRBQw/SMP19hxGs7K6JZiGBD4bZ33y/38zOzM7KOOcsHoiLEPEZJJpPc3Nz0sDAQBbxjngvwfcsXBsfH2eRcpsgSk9Pj214ePjX6OhoyO/386WlJb68vCzAd7ThGmpQiz5jY2NMj2iCKJ2dnS+HhoZ+z83N8Z2dHX5+fs5DoZD4e3Z2JrjahhrUog/6QoMCMjUiDWKiX/aJfuHF5uamMDk9PeXHx8e6oAa16IO+0IDWyMgIu04kQRDCtbi4yA8ODoTB0dFRVKAP+kIDWtCkUWJXuSmIqaOjw7GwsMBPTk744eHhnYAGtKAJ7cHBQXaJXhClqanpVV9f38X29jbf39+PCdCCJrTh0d/fz4BekMTu7m7/6uoq39vbiynQhDY8KBQDWkGUxsZG+9TUFN/d3TUEaMNDbgeaQRLb2to8wWBQDKURQBsecuTVg9hstoddXV1/sey2trYMAdrwkF6qQZSysrLXtLb5xsaGocADXvBUC5JQWVn5eWJigq+vrxsKPKqqqr7AUy2ImYJ883q9fG1tzVDgAS94qgVJKi8vL/F4PHxlZcVQ4AEveKoGKS0t/UrPBjGzjQQe8NIKYi4qKrLTTBaPdCOBB7y0bk1CZmZmBm3BYTwX8KAyAmjDA15ak1UhLG632zc5OckDgYAhQBse8NJavvgkFxYWfqDDDJ+fnzcEaMMDXg0NDZpbvJl4TDM6gE0Hp6xYAk1owwNe9fX12g89IiU/P/9NbW1tGMM4OzsbE6AFTWjDA151dXX6xwDiEc3qEjrI8JmZGXEovgvQgBY0oQ2PmpoaBnQPRsQ9Ir24uPhne3u72JJ9Pt+tQF9oQAuaUluprq5m4MajInGfyCgoKPhBszzc29vLp6eno4IOPlghYWhAS2qaaHtnl0R0eJYd07Ozs9/SThhsaWnhdLwT9xsHHDVwDTWoRZ+cnJxcORIiBAVjV4n4dUIOJe7rs7y8vI9Op9Prcrn+0NLjra2t/4E2XEMNaqnPcyJVapgqKirYdaJ6wZITGDPdSjy1WCwv7HZ7rsPhcBLfJU60Wa3WLNTI2hTZV6Fly9S41SunFE0mHshRSiOeSNJkm0XWiAA0QkyPO72Ey1AJcgNMkphlmxKNUNz9W+Ifu9qUIf+T8EoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-disabled-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABCRJREFUeNrsWElLW1EUfi9DY4yCimgcUBtUuihtN666iYlBA6LYLOoPcOO09SeI2J0TKKIiCC1oF7oJiaXdZOFGbG2xZKGxzvMYM+f1fOl7ksQk5mkCLnrhkDfd833vO+eee15YjuOYpzDY/0TiEWFZNulJ09PTsvz8/FI6LCOT8JeDZH+Oj4+3S0pK/Mn60ul0oV+ZGNLz8/OvFArFW4lE8iI7O1uhUqluXwAv5HQ6Gblc7vH7/b89Ho+tqanpx+LiIpcqRdi5ubkKAm0lFSoKCwuZnJyc0POYGz5fuHZ+fs4cHBwwpI6DyH00mUwOq9Uak1BdXV1SRKCCnlR4V11dLSUiDL0tEwgEEr6dVCplZDIZiDB2uz1A6nwmdb5YLJY7ZAwGw71EQOJ9eXl5LVSA42AwKCoBKYQh4lBnc3PzK5H5ZDabI8jU19f/ezZeOGZnZ3VlZWW1paWlIZJQQQhFsoY5mAsf8AWfDQ0NbPgzt6RjkZiamqrMyMgw5eXlMV6vN6TEYww+4As+4dtoNLLCPWHEWjUSSkZTZWWlFLEWG45EeQOfFCoTnX4gNSISLVoRdnJy8jUl5fOsrCzRobjP4BO+gdHY2MgmUkRCy1Sbm5ubMiWiB3wDgw6/E0YgJpHm5mYlFaSqzMzMtBGBb2AAi1S6jkWE1Wq1GmIric7oVA9gAKulpWWV44EiiFDhUhPbtKkhDGDQCiqiw5/YHaKJIHFVWPfpJsJvBZk8ZvBOjlABCmXyfSX8sYPHiCjlEUSo8Lh9Pl/aFQEGsOISOTk52b+5uUk7EWAAKx6R4MLCwibtshxkE9MoiRlYJBcXFxywhPyIJsKtrq66qH/YuLy81FDjkxYiV1dXaKA2gCWsmDtEkK9bW1tLarUa9SQtRI6OjhhgAGtiYoKLt9cE+vr6VnZ3d7cohinfa+ATvoEBrER7Ddatm2QzU3Fro6LDkqVECbfbzTgcDoTfjFNghVfvaCK44xsbG7PTLmmhHqK+uLg41Gk9tm4cHh6CiAW+gTE6OsqFKxILAXddvb2939bW1pZ2dnYYl8v14HBgLnzAF3zCNzCi97N4PStOnpFl9fT0aKlvNVCrx6LLEjPOzs7Qq3Jk1v7+fpDAbusdGRm5ZdDe3n5/88yTUbW2tlbV1NQYCwoKikAGSzteuCA3lujp6SnCsbe8vGyemZlBOJwgMTw8HLGtd3R0JPc5weeREtbW1vZSo9G8oU4LHZxcqVRGPIwwXF9f+8g21tfXV8bHx3+hkPLh8A8NDd3pLTo7O5P/wOJzSU6mgFGXpdTr9UXUnavDPzm3t7f3bTbb/t7eHsA9vPlwb3BwMGaD09XVJfrbVyAEhaT8r4S/Lqw4JLqfLwP4DQ4MDCTssLq7ux/+Ec6DszFWXZAnxInZe57U3xJ/BRgARVYyv4nD3moAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-disabled-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGhJREFUeNpiVFNTE+Dk5IxiY2PT/vXr19Xv378vYxEVFU2QkpLS5OHhYfj69av+06dPOVmkpaWV5OXlGYCqGYCqGBgZGZWYgCrugQRYWFjAEiA+05cvXxb9+PHj6p8/fxhANJA/HyDAALRmJzIlcakAAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUCB1jUFNTk9bX199oamr6E0SD+AzW1ta7QkND/ycmJv4PCwv7D+QfYAAyPpeWlv6vq6v7D6LDw8N/MiQlJe0CCTQ1NYElkpOTwSrlysrKtoMkQDRQpRwAeJEtgtzX+HUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/spinner.gif +Content-Transfer-Encoding:base64 + +R0lGODlhEAAQAPQAAO7u7gAAAODg4IGBgdHR0UFBQXJycgAAAFJSUiEhIaGhobKyshISEpKSkgMDAzIyMmFhYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAAKAAEALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQACgACACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQACgADACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkEAAoABAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkEAAoABQAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkEAAoABgAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAAKAAcALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkEAAoACAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAAKAAkALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQACgAKACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQACgALACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-ascending.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAYAAAArzdW1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK1JREFUeNpi/P//PwMhwITG59DX1+8B0bgUseTl5YUyMzMXJwMBkM+KTZHAvXv36kVFRRlevHhRCuQLoStiLS8vj/7z54+yoKAgw79//+QLCgoSYKbBFAleuXKlhJeXl4GDg4OBh4eH4datW3lAE8VgiliBbkkB6pYBKWBiYgIrBAKp9vZ2kNvYWEBuefv2rZ+qquoXfn5+TkZGRgZQsACt/f7u3TtvoPx0gAADAHykNUXFhlgVAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-descending.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAYAAAArzdW1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANdJREFUeNpi/P//P4+JicnuX79+WTAyMjLAAFCcgY2N7cSZM2dcWYB8/rKysiOLFi2yYGVlhSv6/fs3Q0JCwkGQPEjRj7CwsOsXL1789OzZMz6Qaf/+/WOQl5d/HxISchMkzwQkPgLxBR8fn30g3SAAUgTk7wYyz4PkQYr+APEDS0vLjcrKyu///v3LoKam9sbU1HQzUPwhSJ4J6gSYabu/f//+39/ffzuQfxGIP8F9AcWCQBy2cuXKtUA6GIj5YXKMIAIKmIFYFoglgPgZED8BOQ8kARBgAHkkbCsrrUGyAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-highlighted-pressed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADtJREFUeNo8i8sNACAMQpH9p6oTGb2oB7Sx9kD4vFDMKufalEQAxHVB2SVEvvIczPfHlZ/fnY3ejgADAPV/LBeRV6LeAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACtJREFUeNpi/vT5C9OPHz+Z/v//z8TAwACmYRiZz8AAonHLo/M/fngHEGAAmHc1lNgXMmwAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-pressed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiOHPmDBMDAwPT////cdIwjIuPRT3LkydPAAIMAGirLBgXU933AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNocw4kNwCAMADHd/qtlF74QfqgaS+a9x//e68857L1Za/k5J2MMeu+01jAzaq2oqi+lkHMmpeRjjIQQEJFPgAEAIdRCSGGFwR8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableviewselection.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAACXBIWXMAAAsTAAALEwEAmpwYAAAPU2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarVd5NNT/17+f2W2DsWYda7KF7LLvawyyFY2ZsTVmxhhEZElJaeGbRKlot6QokZISlbRIUigVXy1oQSIxvz/0/X6f5/c7z3nOc85z/3if1/ue+7r3de95n3PPG0CcTOVwmCgAiGfxuBRXB3JwSCgZ/xKwIAwSYAFaVFoix97X1wv+R5t9DggAQK8elcNhwv/NiNzgkFAARBcAJKOXsR0ASEYu4wAAkEzhcXgASAwASNJiqHQAJB0AdLkBFEcA5BwAEKOXcRMAECOX8T0AICbTonkAyAsAHIlFj2UB4CcAcDZ0RiINgKgLAHR6Ii0egHgAAOUQH8+mA4g9AwAtGofLAxD7BQDqwSGh5GXJUWgAywcAuMF/fJvnAOryAVSm//GpDwBIdQJUBf3jm6YAAgCI9OPEqDVGAACACDsAYF/z+dOaAPgigMVCPn+hks9fPAmAHgJoY9KSuMm/54UgDwH+t/tyz78NjQCgAEAZ4mEEiUAmUaXoEIw2VhqHxksSrAUYgieEJkUciEdFf4mzSeOSVKlJmSjZablUBYziQWV58nFVfbUWDVvNdi33Va06rrot+sqrSwzRRlvWPDUxNS03m7Zwsiy2+mRtY5Nie8UecbBzDHc65PzA5bObkLu2h4snzSvTu8Sned1bPxRlpb9XwObAnesrgm4G94dMh63YYLjRMZwakb6piHo68irtAX2AMR61ECMQKxGnsFmFqRm/mmXENueYJVhwjRJ1eKuSVJJlUyS3CG5ZTP2cNrj1fvrVjPPbDmZmZsVle+eYblfOFcz9uqNn55W8g7u259N3O+9RK0AVfNw7um/hgEKhadG6P8IPJhXvPlRT0nK4p3So7MtRgXLZY+rHTU64VARUhp+MOZVyeuuZvLMHzu05v7+qsLqopqi2/EJpXdHFgku59Vsbki4nXKE1rr/q1WTXbHRNrYXUsnR94sZAa+vNi22Hbm27Hd3uf2dth2aneOf83eF7LfdPd+1+wOsOeqj3cPZR9eONT8SetPewnyo/7evNebb62eu+gudWz8f7S194vFh4eXYgeFBwsHmI8UrqVffr1OFVw2/eHHhr93bq3dmR0FHiaOef28ZMxiben/5A/6j2cfBT2Xj4hNrE6GTN55Qvjl+JXz98a5o6MM2e8ftuMavzQ2dOb972Z8xC1SJxqYnPBwAxMAce3EbIyC6EjypCm6InMDewR3H78YcItQK9QmhhT5FC4hsxa/EjEjjJzVIPZcxla+Xk5NMVRpTslM+oiKjGqHVrGGjmrRxapaXN1WnXk9QPWF1sMGSktibY+KTJgBmYW1okW1ZY3Vs7ZaNi62sXbV/kUOd4z2nEeclVzs3M3deD4cnzyvIu8Dm+rt63ze8B5bn/WMBU4Oz6pWCREFKoRJjCBpWNCuHyEfKb5KnKkXI0KboEQyAKouajP8e8i30R1735OrMmvpy1j53FSUyI5volOvEMk5SShZPnU0a3PE29kXZ2a3H6jozYbRsyXbIMs+Vy0DmT24dy+3YM7/ya9ysfu1twj3iB4l7dfSb7bQ7YFboXhf1BPUgv5hzaWrLj8J7S/WUnjlQcrStvOdZx/NGJ5xWvKkdOTpz6eQZ9lnCOeF62SqvauMa61v0CpS74IuNSUn16Q+7lfVfKGquv3mi63dx97V3L2PXZVsJNUpvCLe3bVu1+dxgd3M70u1vv0e47dql0LT7o6b7wMO8R7bHtE+knH3ran5b3cp459cn1fXne1l/yIu6lzQBp4NXgpaG8VxGvjYfxw+/eXH675x11xGxUePTDn51jp99nf9j4ce0n8jh2fHKie7Lxc+WXgq9bvsVMhU77zrh/t5+1/GEyZzJv/nPtgvUvl0XfJSrfg88HACIYAA3OwjzijzSjdFDn0UboDgwdK4K9g8vE2xMECW8FrguWCWUJs0ToxA2i68UCxSmkYImNklSpOOlUmTzZwhXlcvXytxQ6FfuVPil/I8+pImpC6gQNkqboSmEtuVUC2hgdRGdad0JvSP/+6kaDcsMsI8YaR2N9E4LJO9M2swrzXAu6pYOVvNX3tX3WjTYHbVl2bvY6DojDkON1p6POKS4+rnpuQm5j7m0epZ4cLxdvBe9ZnwfrTvhu8fOgqFNm/e8HHAtMWO8QRAoaDW4IyQr1D1MMe7/h8sbscL8I5YgPmy5SUyOdaaK0l/STDGaUYdT36OaYzFifOIm4/s3lzNh47fivrCb2No5XAilhgHs6kcWzSRJIepZcmcLaYp6KSe1JK98an26dIZIxtK06My2Lkq2aPZNzb/vR3OQdrjsVds7kde+qzE/dTdmjXYAqGNjbsK94P/uAWyG5cL7o+R9NB4uLuYc8SlYexhweLr1RduxI0tGgcpNjksfhBKpCuJJ0UvKUzGn5M8pnlc/Jn5etkqqWrJGolbwgVSd7Uf6SfL1Ug8xl5StajXpX9ZqMmx2u+bVQryfe2NlafvNu2/CthXb1Ox4daZ2X7n68r9616UFl99wj/8cXe8SepvRO9+X3S7xoGEgYWvNqcXjhHWbUdaz6o+WE5Ze9003zdXw+wPLuAwDAmQIcjgAIUQTwcwUoWAuw0hxAahOArwhAgAWg9CUB+X4bEIf9f++PFWAJoZAO5XALRhAMooV4IRzkINKMDKNwKH1UICoDdRr1BDWPVkP7oTPQVeiXGALGHBODKcM8wqKx5th47EnsIE4K54vbg7uLJ+Bd8TvwdwkihPWEMsKIgJ4AT+COoJQgXbBBCC8UIdQkTBKOF74noiGyR2SaGES8JqohWi4mLLZV7Ks4S3ySFE/6KsGTmJfcLiUsdUBaRvqUjL7MNVlP2eEVyXKCcqfk7eVfKnAUJRSblUKUfimfIq8jL6lUqW5UI6l1qGdomGv80Gxemanlskpo1UvtUzqpuh56WvpY/eHVHQbnDHcbpaxhGG8w8TddZ+Zs7mLhbuljtWltrHWKTY5thV2z/ZDDZyeSs4VLtGuRW5X7aY8Dntlead4cn+R1Cb4JfgwKy58dkBlYsH5vUEnwhZDboT1hYxv44UoR1puCqDmRlbT7DHSUYTQ9piy2dzMwHeJ3sZ5w5BNiuVcSl5I2JTduEUllpT1JN8k4mSmetS2bv52ZO7kzPm8iP2b3lwLO3rn9uYVaRfUHPYv7SraVuh4JKGce31Fx9eTjM5hz5lUJNacvjFxa0RB15djV99fWXk9sfXxLpJ3acfUe0hXSffzReI91b35fywvSgN9Q9us7b6ZGZP50e0/5mDy+bTLjS9K30GnlmbHZ0jnd+bMLAr8oi+FLWXw+ABhCFByCDviGKCHuCA85jnQhsygyyguVhjqLeoZGo43QVHQRugM9j9HDbMIcwjzE4rEO2AzsdexPnAUuFXcDD3gnfD7+KUGBEENoEhAQCBWoFlgSDBK8JCQkxBC6JawhnC38TsRT5BqRTMwjzorGir4S8xPrELcUv0EyIV2RsJK4Jekm2SMVJjUmnSSDlzkmay77fAVHTkiuSt5bfkahTNFGcVzpmLKn8hz5okqcqrLqoFqFeqTGSo0JzYsrs7TWrVJc9UP7kc4Z3V16Ufquqw0M5AxxhjNGI2ueGrebtJleNmswb7Cot2y2al3baf3M5o3tJ3uMA9FxpZON8waXNNcSt1r3eo8qz2qvOu9mn7vrenz7/YYp3wKQQKX1ekHmwYEhvND8sMoNNze+jcBtUqJ6RsbR9tIbGEPR+BjT2Ki40s23mVMsbTaNU57wMBF4VknJyZdSplLN0xK21qb/2GabuTPrQY7Idp/cih1Tefq7duf371Eq4O59sJ98ILHw9h+iByOLb5eoHC4rszsyXl52PKJCqrL3VMEZ73Pq599X19UW1G26ZNagcHmmcaip+drl6+Wt2W3022F31nYa3yN3SXSLPJx7PNzT0dvYd65/z0vmoMcrm2HpN1Pvno3WjuV8WP9JaXx8suVL3jfvaeJM12zxnPdPkYXriyw+HwAsIAWuwAyyBklA6pEZlAlqC+oGGoV2Re9FP8coY5iYJiwOG4Q9j13A+eBO4/j4YPxFghghkfBUwFigXBAvyBUcFgoQuiNsLdwkoivSQDQmXhV1FH0gFi42Lb6bpEvqlkiWlJXsksqQNpB+K1MiS1khuaJfrlg+REFNYUrxmlKhMo28RkVIZUK1U+2Uep4GWzNspZeWzSp9bR0dVV01PSV9rdV6BmaGbkZha9jG+03Omj42+2GhbOlqlbi21nrMVslug/0Rh2EnXedMl2ducu48j14vDe99PhO+FL8a/xUBGYEfgtyDm0NVw4o2EsLTIqapUZEDdH/G42ifmJtxTptb4+1YjRy7hLZEW97dZJ+U3tSItE/pqRlzmXnZ8jn1ua47HufRds3vPlpgtPfZfm6hcNG1g5TixZKjpaSy5COD5b7Hbp0wrTh/UulU5RnNs1Xn9asaasxqr9fZXeyod294e4XbONuU1rzY8scNjdZzbdq3atr179R1GtytuU/sKugWesh9NPLEr+diL/EZs+9+v8aLrJfPB2WHgl8dft3/Ruot5V3eyIXR9j8Hx/gfpD6qfVIdV5lQnlT8vOLz4pfXX1u/lU/FTBtOT89c+h4/S57t+5E0Jzx3at54/uZPz59dCxYL537J/Er/dW9RajFy8cLiwpLr0oGll3w1PpPfyOcDLP+XAABA0JHNZHPJXo5O8P9r8cykv2qQAECYFemz7jf+wOH5BgCANAD8TEz2dwYAMQBELCrWxf03JtOpTp4AoACAGKTFOPoAgDAA4hXFdaEsc5HgOKqHLwAQARAWgxXov5wfSecwfb1+430cngMFAGQBkBOMROe/YprSYgKCfnO7uEmUQABQB0BebGZ7Un7X+kVnOP3WhiKwmD5ey3VRsrE89wAAkARA6YMLUIEL0cAAPfACR3D6fZKBCmRwBDZwgQGJ4AKjwIXov6PWwyhwIfbfWHoQBVTgQjIwIBE2wxhwIT4iNocL5H/LTgM2JAETGJAEXINqg48Gv/6OcQQ2MIEN/7A8/8PzV55/YmOBDuz/lp8JbOBGxOZw4+ujkg+zUy3Xx2A0MUYYE4wDxhpjg7EAMkYaIwd6GGOMOcYeY4uxwphgLB5NXJ34u87yfCL/7tPzL83AANZ/zIz2X9TA8v8dAAAnBnA0HwCg/dK5/3hrPMYWHgCAI5uTyo2NjuGR7TkcJkOX7M6i6euSjQwMLOBf/0ZN7hNwtO8AAAAgY0hSTQAAbZgAAHOOAADi5AAAhvsAAHXhAADNcwAAMq0AABrd66B7UwAAAD9JREFUeNpUirENgDAQxKLrKCiYi72Yjo3y9tOkIJVl2eN+3lznkTkr2ilcJEXH5eCvGTXYAUIZNNDR/QO+AQD8FEZFeDuoxQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAIAAACOpGH9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1jWLRqJ8OFq3cYPnz8zPD//3+qYKBZAMWVP/kpEKROAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-focused-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAYAAADtlXTHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADdJREFUCB1jWHjqkTwDkIgHEftAxH+GRat3/Wc4f/XOf4Z3Hz79Z/jz9x+NCLDxYCthloOdoQAAdj5sTxjpYWAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-focused-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAAeCAYAAADKO/UvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApdJREFUSMed1UtPE1EYBuAaMS7QhMiCxhjdqBtxqT/AG0tNcGGicaEu5EeoS9l7CySmBakhphIjJRHkqlQoNG2RAikU7CW2tbYULKD09vqe4TQ0k+l1kmc575zvnG++o+uaCejKOEAH6TAdpUbS0wk6SafKvXyIjlATnaWLdJVu0C26Q3eLBdRRvfzieWqh+/SEXlIv9dMQjWgFiK830Gm6RG30nMYpTFDTCjhG56iVntIXShu+raFjYBYd5jG8No/A0PsJXe8G0U3qEhpkwG3qpIBx2odOiw1v3g/j46AVo5MOTNkXYJ/zwOlegWvBi8JNrJcltMqAmMHqhaFvHAPD05hxLsGzGkQwFMWv3wnEE5tIbCSxsZlEYRl6uQeiBL8IMH0Yx8SUS3k5Gksgub2D3VQKmUwWuVwOOew9+RCximZ6SBNGmx89/V9hnXXDF4zgT3Ib6XRGeVHr0clGapLn/4xSxiGHsgIRsLX9F5lsFtqv74eITjxD92jUOPUDlhEbPN6AsgIRUO7RyVa+QI/oZ9eYGzbHkrJ5SgllI/ZCRF9coReiccyjDmUVya2donugFSL24zqZRMiQdU45xn+7qYoC8iHH6Sb1iZBJ+6JSijjGmkNsLg9i65vIVliKupy3IsTqXK4ppLFwYz/PemoqJ3/Ejylknl5RNla0dzUhhc021m3zYdEbrPqI821/TbZ92mJfVX64apqt8Ads2xtCfjg8waraXj0K2sUw6pnxYdkfrvgHLDaU4iYGza+FKxoF6vHYXDgeu1na8HwAoej6/lDKag8l9aBull3cLgd1podhg98DcK1F4A3FNcdjsSvjstxs0YgTFKnkyih1eT2Ql9creXlZSl1eWteovpZrVB1WV+pC/w9TNVqlMEGHagAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-focused-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAAeCAYAAADKO/UvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoFJREFUSMellUtPU1EQx0uAsEASIgubaHRj3IhbPwBG3ZpgjInGDW78FC71AygEEtMWITaGGiIlsdgioKVP+5CHaS21D9PW2lJqLUb6GP9Tz60V6eWWnuR3d/eXmTlzZlQ6Z+wMOA1OATUYAH2gB3SCDqCSgz93wG1wE1wDl8FFcA6cAMdAt5yMPxawAOaAHoyC+2AEXAUXRIS9oKuZhA4gCZbAI3APDIGzoF9E9a9k8rmJdECjf0VPZiw0PvOGxuddpFkNs6wEVsADMAzOg+P7RSrfRoi865/I7Q+Qzb1Bi+889NJkpacGM00YHaS1R1gWAxPglhD1N6am2skXKLdToGwuT1+/5SieSFNgK05O70eaN9tJ82KJNNYQizJCNCxS65WKrSKcKlOtUrlcoV97e1Qo7lI6k6vJlm0+mp6ti6IitSFR7O66ZP9hYalUpu+FIkXiKbK61mlq7i1pHVEWLYtiD4rr7zhQIkVXrlToR/FnTcQRaRc8UrH51q6IPupsKpEOizgiTs1oQaFtn0lc/4hoyJ5DJRwRp8Y14mLrLH6WpERDcmf3HSqRasTFDiIaw6JHasgx8UQGFEn48K19wfWbV/2SRC/emlqxhGvDKdneb0qSWXADnFQsqSClzHaenOjstiVWb1CSPGs9HXQzP4vXrnoko0curMEelEbF0a54MxSnSUekvWYzurfaa3tPAFE4aw9w5UgPMBhN0pSzPpwetjwK1sJJmv4jyCobSpW/QymR3ibzWkxKoXE8DsqOx1AiS75wikwfYgi/9nNZ1IBTuC4E/w/qJisjJSbYY1HES7Iro2F5GcXLHBONdLeV5SW3RtVK16jcQu9SstB/A7wYWu6etp7HAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA0AAAAWCAYAAAAb+hYkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdFJREFUOMuVlNtLAlEQxucp6CnoKQj6w4L+gKC3iqR66E5IN6Ky6EZKmYaR0c2yoMjMXNJASbtApUTZxbVVS9t1mnPKiDJcB/bt/M7MfOf7FmpbRiD71bXqoKF9DJq7J6FzwFDaN2quHplesk7MrgjT8+vyjNmGevq+gXoCGrvGoaPfUDw4YdEYFjbFZZsDd/aP0Sn4UTgJosd3jl7/xSdU3zbKb9cOG8umjOuuVfshHnlOMXgZwtBtBO8fovgUjWFUlFCMScg7MKBHZyqftWxd7zq9/HDkMYpSIompdBplWcFMJoMZ/Cw+knbIWESAy+H24VXoDl+kBL6/y/xgroL2fj3QSBrWgQHxxCvKioK5j39BtHTJqt35FLy44R0YkK+AJKx0HZ/yZflImL/AuuGwsi5SPPnvDn8geocAk/UtlUa1BQeCX2SjMVlVQ25vQHx8jqGicrQsFCgYovGsBY9HQlQxIZhdVEMkeQl5TSxIcv2CDcjRGmZQ1Y9LNgKKQhF1E1TbiELHDAt7zpPy6/BdWJVheTSGjTC3aIcDt6+CQFfeaGRD2KszcZA6FtOoTbSj+B1C5VcIf8Ud6AcCa9uHTJzSs8tQTfg2skIXeH7G/QMDueJzvPRB+QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA0AAAAWCAYAAAAb+hYkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUOMudlNtLAlEQxs9T4FPgUyD0/wm9VRTVQ3ciuhGlRlakmF0oMjSxrCgyNS0VrLQLFEp00VzbLNRdp5kto6Jy7cDZp/3tN/PNfMsM8w6Yxjs1axf0JqtfM7VsGdDNq7uGjMqWngnW0DHG6tq0rLZVI10AYCx4dA6B8Bn4Q1Fw+49gc/cQVhwuMC6sccP6xcbOQaOiqXuc1b+DEsSleUhxPCRTabi9T0Hs+g6iFzHYD5yAzemBSbPd2ztqriLV+nbdG4QPKNAtFEAQRMjmcsBnnuEukZLgbXcQTIvrV33aORWBH9D3Qx/I5wV45DNwGbsBly9MoLd3xFzxK1RUF0QRnjIvEkiKWGrjn1DxEEiKVKrN6U6iOZUlIVKkUqlHMsew4FCXhIo9kjmnqIbjsMiC6JCrcRzHlisQlw1Rb1Si5+A4KxsSscTEQ5o2hy8b8gUjEfnl4bbQmuF+/suI8izHAXNoednDLXuN/BgVheyFvYrfxHfcIRUurLxoIODd84WrZ5acDMP4QwjFLyHksKRmVFAQ0K+dYx8h/Bx3fDGAtlpxMWuwaeXqhofhD0dS+Bz3V7HA8uslKDy0AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAADCAIAAAA2iEnWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABxJREFUCB1jmTNnDicnJ4uMjIywsDALEEtKSgIALM0DDeT4y3sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAIAAADdv/LVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUCB1jWLVqFZOWlhbDx48fARyiBVLivNzsAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAADCAIAAAA2iEnWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1jWrp06Zw5c5jU1NRkZGSYJCUlhYWFAUybBRTduo1wAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAIAAAB7QOjdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1juHLlysePHwESGQVQhb5n0gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1j+P//PwAF/gL+n8otEwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAIAAAB7QOjdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1j/Pjx4+PHjwETfwV+HAwP5QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCB1jvHLliqysLOPp06clJSUBLX0FglncIWUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAIAAAAW4yFwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABBJREFUCB1j+P//P9OnT58AF6oF1hwiRUMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCB1j/vjxY0xMDHNOTs779+8BN9MH/68NXLgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHCAYAAAArkDztAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGZJREFUCB0FwcsJg0AUAMAJ+9YPgUV4IIhevHizBhtIk2kjJeSYEtJGLpmJ5/t7Q0HFgA41UHDHhBmJFqiYsOPEgTUwYMaJBy70gQ6JA9fv8+rHcRSoaFjRb9smMwUKBjTITMuy+AM42wji1WBJjgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAHCAYAAADJTCeUAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACZJREFUCB1jXnjqkTxzYGqhP4joBRELmaNcLRuY6+vrG5jb29sbAOK+DN7MoThrAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHCAYAAAArkDztAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAG9JREFUCB0FwbEKgmAYAMCDPrHJXWp27AFa2trber0eJdpa23QIhAaDH0IQS4m6i9O1XWPGhDdmfANb9Eh44oUhcMQDNW64Ywoc8MEZMKCPaC7GccyzzX6HGg3aqKpKSklHjhUKZFGWJeh+oMASiz+A7SOInCfK3QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUCB1jWHjqkQIQxwPxfiD+f+XKlf8fP378DwDW+RK/bGv6kwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1j+P//PwAF/gL+n8otEwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1j+Pjx4/8rV678X3jqEQjvB+J4IFYAAP2REr8fi4n2AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUCFtjWHjqkTgQewDxZCD+cfr06f9Pnjz5zwDkCAKxKRDnAvFOkCQQgyU4gVgeiB2gkiCd60ASLEDMD5U0hRobBpJghEpyQo0F2SkDAHWKUDJqcdSvAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABpJREFUCB1j+Pjx43+GhacegYk9IFYciJAHAM/uDz+C0SZ2AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUCFtjePLkyf/Tp0//X3jq0Q8gngzEHkAszgAkYII7gTgXiE2BWBAksQ6qEiToAMTyQMwJkgiDajeFCvIDMQtIQgZkJkg7SCVIEIgZAdauUDJ/hcSRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUCB1j2rx58//Tp0//v379OpgG8Zn+////C4gZkPBfpl+/fh38/fs3AxI+wvT58+eUjx8/7vjw4QMDiP706VMcAOlpQfMaZOfrAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAIAAACZnPOkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUCB1j3rx5cxEYJCQk+Pn5AQA+dAbTLdUgHwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-disabled-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAExJREFUeNpMxbsNgDAMBcCH6wzg1amQWCGzUMEAKf1JZSMCdClOt9RaV2ZGKQW9d7TWQGOM+4PJQxFxZiYmF7n7rqqHiODfzLZXgAEAth07HqinDKIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi3Lx580wJCQkGHh4ehi9fvjC8ePGCASDAAFQeCLRojHkfAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-disabled-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpirKysFODi4opiZmbW/vv379Vv374tYxEWFk4QEhLSZGdnZ/j586f+u3fvOEGCquLi4gxA1QxAVQyMjIwqLLy8vCz8/PwMPDw8DKysrAzfv39nYmJjYwNzkDETUDkDOgYIMABjBxggiQuq/QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUCB1jqqyslG5ubt7Y1tb2E0SD+EzCwsLzpaWl/eTl5dlANJC/FCRoLyEhwQAUYADRQL4NEy8vLxs/Pz+DoKAgA4jm4+NjZmJjY2NgZWVFwUyMjIwM6BgAhF0QgRCnPUsAAAAASUVORK5CYII= +*/ ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt @@ -0,0 +1,1 @@ +@STATIC;1.0;u;25;Resources/alert-error.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/alert-error.pngu;24;Resources/alert-info.png64;mhtml:Browser.environment/MHTMLData.txt!Resources/alert-info.pngu;27;Resources/alert-warning.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/alert-warning.pngu;33;Resources/button-bezel-center.png73;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-center.pngu;42;Resources/button-bezel-disabled-center.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-disabled-center.pngu;40;Resources/button-bezel-disabled-left.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-disabled-left.pngu;41;Resources/button-bezel-disabled-right.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-disabled-right.pngu;45;Resources/button-bezel-highlighted-center.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-highlighted-center.pngu;43;Resources/button-bezel-highlighted-left.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-highlighted-left.pngu;44;Resources/button-bezel-highlighted-right.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-highlighted-right.pngu;31;Resources/button-bezel-left.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-left.pngu;32;Resources/button-bezel-right.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-right.pngu;29;Resources/buttonbar-bezel.png69;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-bezel.pngu;43;Resources/buttonbar-button-bezel-center.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-center.pngu;52;Resources/buttonbar-button-bezel-disabled-center.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-disabled-center.pngu;50;Resources/buttonbar-button-bezel-disabled-left.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-disabled-left.pngu;51;Resources/buttonbar-button-bezel-disabled-right.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-disabled-right.pngu;55;Resources/buttonbar-button-bezel-highlighted-center.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-highlighted-center.pngu;53;Resources/buttonbar-button-bezel-highlighted-left.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-highlighted-left.pngu;54;Resources/buttonbar-button-bezel-highlighted-right.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-highlighted-right.pngu;41;Resources/buttonbar-button-bezel-left.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-left.pngu;42;Resources/buttonbar-button-bezel-right.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-right.pngu;38;Resources/buttonbar-resize-control.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-resize-control.pngu;38;Resources/check-box-image-disabled.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-disabled.pngu;41;Resources/check-box-image-highlighted.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-highlighted.pngu;44;Resources/check-box-image-mixed-disabled.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-mixed-disabled.pngu;47;Resources/check-box-image-mixed-highlighted.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-mixed-highlighted.pngu;35;Resources/check-box-image-mixed.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-mixed.pngu;47;Resources/check-box-image-selected-disabled.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-selected-disabled.pngu;50;Resources/check-box-image-selected-highlighted.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-selected-highlighted.pngu;38;Resources/check-box-image-selected.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-selected.pngu;29;Resources/check-box-image.png69;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image.pngu;41;Resources/default-button-bezel-center.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-center.pngu;50;Resources/default-button-bezel-disabled-center.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-disabled-center.pngu;48;Resources/default-button-bezel-disabled-left.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-disabled-left.pngu;49;Resources/default-button-bezel-disabled-right.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-disabled-right.pngu;53;Resources/default-button-bezel-highlighted-center.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-highlighted-center.pngu;51;Resources/default-button-bezel-highlighted-left.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-highlighted-left.pngu;52;Resources/default-button-bezel-highlighted-right.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-highlighted-right.pngu;39;Resources/default-button-bezel-left.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-left.pngu;40;Resources/default-button-bezel-right.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-right.pngu;37;Resources/horizontal-track-center.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-center.pngu;46;Resources/horizontal-track-disabled-center.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-disabled-center.pngu;44;Resources/horizontal-track-disabled-left.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-disabled-left.pngu;45;Resources/horizontal-track-disabled-right.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-disabled-right.pngu;35;Resources/horizontal-track-left.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-left.pngu;36;Resources/horizontal-track-right.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-right.pngu;37;Resources/HUD/button-bezel-center.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-center.pngu;46;Resources/HUD/button-bezel-disabled-center.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-disabled-center.pngu;44;Resources/HUD/button-bezel-disabled-left.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-disabled-left.pngu;45;Resources/HUD/button-bezel-disabled-right.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-disabled-right.pngu;49;Resources/HUD/button-bezel-highlighted-center.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-highlighted-center.pngu;47;Resources/HUD/button-bezel-highlighted-left.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-highlighted-left.pngu;48;Resources/HUD/button-bezel-highlighted-right.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-highlighted-right.pngu;35;Resources/HUD/button-bezel-left.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-left.pngu;36;Resources/HUD/button-bezel-right.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-right.pngu;45;Resources/HUD/default-button-bezel-center.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-center.pngu;54;Resources/HUD/default-button-bezel-disabled-center.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-disabled-center.pngu;52;Resources/HUD/default-button-bezel-disabled-left.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-disabled-left.pngu;53;Resources/HUD/default-button-bezel-disabled-right.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-disabled-right.pngu;57;Resources/HUD/default-button-bezel-highlighted-center.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-highlighted-center.pngu;55;Resources/HUD/default-button-bezel-highlighted-left.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-highlighted-left.pngu;56;Resources/HUD/default-button-bezel-highlighted-right.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-highlighted-right.pngu;43;Resources/HUD/default-button-bezel-left.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-left.pngu;44;Resources/HUD/default-button-bezel-right.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-right.pngu;41;Resources/HUD/horizontal-track-center.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-center.pngu;50;Resources/HUD/horizontal-track-disabled-center.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-disabled-center.pngu;48;Resources/HUD/horizontal-track-disabled-left.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-disabled-left.pngu;49;Resources/HUD/horizontal-track-disabled-right.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-disabled-right.pngu;39;Resources/HUD/horizontal-track-left.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-left.pngu;40;Resources/HUD/horizontal-track-right.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-right.pngu;31;Resources/HUD/knob-disabled.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/knob-disabled.pngu;34;Resources/HUD/knob-highlighted.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/knob-highlighted.pngu;22;Resources/HUD/knob.png62;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/knob.pngu;46;Resources/HUD/scroller-down-arrow-disabled.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-down-arrow-disabled.pngu;49;Resources/HUD/scroller-down-arrow-highlighted.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-down-arrow-highlighted.pngu;37;Resources/HUD/scroller-down-arrow.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-down-arrow.pngu;49;Resources/HUD/scroller-horizontal-knob-center.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-knob-center.pngu;47;Resources/HUD/scroller-horizontal-knob-left.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-knob-left.pngu;48;Resources/HUD/scroller-horizontal-knob-right.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-knob-right.pngu;52;Resources/HUD/scroller-horizontal-track-disabled.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-track-disabled.pngu;43;Resources/HUD/scroller-horizontal-track.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-track.pngu;46;Resources/HUD/scroller-left-arrow-disabled.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-left-arrow-disabled.pngu;49;Resources/HUD/scroller-left-arrow-highlighted.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-left-arrow-highlighted.pngu;37;Resources/HUD/scroller-left-arrow.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-left-arrow.pngu;47;Resources/HUD/scroller-right-arrow-disabled.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-right-arrow-disabled.pngu;50;Resources/HUD/scroller-right-arrow-highlighted.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-right-arrow-highlighted.pngu;38;Resources/HUD/scroller-right-arrow.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-right-arrow.pngu;44;Resources/HUD/scroller-up-arrow-disabled.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-up-arrow-disabled.pngu;47;Resources/HUD/scroller-up-arrow-highlighted.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-up-arrow-highlighted.pngu;35;Resources/HUD/scroller-up-arrow.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-up-arrow.pngu;47;Resources/HUD/scroller-vertical-knob-bottom.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-knob-bottom.pngu;47;Resources/HUD/scroller-vertical-knob-center.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-knob-center.pngu;44;Resources/HUD/scroller-vertical-knob-top.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-knob-top.pngu;50;Resources/HUD/scroller-vertical-track-disabled.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-track-disabled.pngu;41;Resources/HUD/scroller-vertical-track.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-track.pngu;48;Resources/HUD/segmented-control-bezel-center.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-center.pngu;57;Resources/HUD/segmented-control-bezel-disabled-center.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-center.pngu;58;Resources/HUD/segmented-control-bezel-disabled-divider.png98;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-divider.pngu;55;Resources/HUD/segmented-control-bezel-disabled-left.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-left.pngu;56;Resources/HUD/segmented-control-bezel-disabled-right.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-right.pngu;49;Resources/HUD/segmented-control-bezel-divider.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-divider.pngu;60;Resources/HUD/segmented-control-bezel-highlighted-center.png100;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-center.pngu;69;Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png109;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-center.pngu;70;Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.pngu;67;Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-left.pngu;73;Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png113;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.pngu;68;Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png108;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-right.pngu;61;Resources/HUD/segmented-control-bezel-highlighted-divider.png101;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-divider.pngu;58;Resources/HUD/segmented-control-bezel-highlighted-left.png98;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-left.pngu;59;Resources/HUD/segmented-control-bezel-highlighted-right.png99;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-right.pngu;46;Resources/HUD/segmented-control-bezel-left.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-left.pngu;55;Resources/HUD/segmented-control-bezel-pushed-center.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-center.pngu;67;Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-highlighted-center.pngu;65;Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png105;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-highlighted-left.pngu;66;Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png106;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-highlighted-right.pngu;53;Resources/HUD/segmented-control-bezel-pushed-left.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-left.pngu;54;Resources/HUD/segmented-control-bezel-pushed-right.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-right.pngu;47;Resources/HUD/segmented-control-bezel-right.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-right.pngu;39;Resources/HUD/slider-circular-bezel.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-bezel.pngu;48;Resources/HUD/slider-circular-disabled-bezel.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-disabled-bezel.pngu;47;Resources/HUD/slider-circular-disabled-knob.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-disabled-knob.pngu;38;Resources/HUD/slider-circular-knob.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-knob.pngu;39;Resources/HUD/vertical-track-bottom.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-bottom.pngu;39;Resources/HUD/vertical-track-center.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-center.pngu;48;Resources/HUD/vertical-track-disabled-bottom.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-disabled-bottom.pngu;48;Resources/HUD/vertical-track-disabled-center.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-disabled-center.pngu;45;Resources/HUD/vertical-track-disabled-top.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-disabled-top.pngu;36;Resources/HUD/vertical-track-top.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-top.pngu;27;Resources/knob-disabled.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/knob-disabled.pngu;30;Resources/knob-highlighted.png70;mhtml:Browser.environment/MHTMLData.txt!Resources/knob-highlighted.pngu;18;Resources/knob.png58;mhtml:Browser.environment/MHTMLData.txt!Resources/knob.pngu;36;Resources/popup-arrows-pullsdown.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-arrows-pullsdown.pngu;26;Resources/popup-arrows.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-arrows.pngu;50;Resources/popup-bezel-disabled-right-pullsdown.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-disabled-right-pullsdown.pngu;40;Resources/popup-bezel-disabled-right.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-disabled-right.pngu;41;Resources/popup-bezel-right-pullsdown.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-right-pullsdown.pngu;31;Resources/popup-bezel-right.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-right.pngu;34;Resources/radio-image-disabled.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-disabled.pngu;37;Resources/radio-image-highlighted.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-highlighted.pngu;43;Resources/radio-image-selected-disabled.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-selected-disabled.pngu;46;Resources/radio-image-selected-highlighted.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-selected-highlighted.pngu;34;Resources/radio-image-selected.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-selected.pngu;25;Resources/radio-image.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image.pngu;42;Resources/scroller-down-arrow-disabled.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-down-arrow-disabled.pngu;45;Resources/scroller-down-arrow-highlighted.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-down-arrow-highlighted.pngu;33;Resources/scroller-down-arrow.png73;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-down-arrow.pngu;45;Resources/scroller-horizontal-knob-center.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-center.pngu;54;Resources/scroller-horizontal-knob-disabled-center.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-disabled-center.pngu;52;Resources/scroller-horizontal-knob-disabled-left.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-disabled-left.pngu;53;Resources/scroller-horizontal-knob-disabled-right.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-disabled-right.pngu;43;Resources/scroller-horizontal-knob-left.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-left.pngu;44;Resources/scroller-horizontal-knob-right.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-right.pngu;48;Resources/scroller-horizontal-track-disabled.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-track-disabled.pngu;39;Resources/scroller-horizontal-track.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-track.pngu;42;Resources/scroller-left-arrow-disabled.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-left-arrow-disabled.pngu;45;Resources/scroller-left-arrow-highlighted.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-left-arrow-highlighted.pngu;33;Resources/scroller-left-arrow.png73;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-left-arrow.pngu;43;Resources/scroller-right-arrow-disabled.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-right-arrow-disabled.pngu;46;Resources/scroller-right-arrow-highlighted.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-right-arrow-highlighted.pngu;34;Resources/scroller-right-arrow.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-right-arrow.pngu;40;Resources/scroller-up-arrow-disabled.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-up-arrow-disabled.pngu;43;Resources/scroller-up-arrow-highlighted.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-up-arrow-highlighted.pngu;31;Resources/scroller-up-arrow.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-up-arrow.pngu;43;Resources/scroller-vertical-knob-bottom.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-bottom.pngu;43;Resources/scroller-vertical-knob-center.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-center.pngu;52;Resources/scroller-vertical-knob-disabled-bottom.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-disabled-bottom.pngu;52;Resources/scroller-vertical-knob-disabled-center.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-disabled-center.pngu;49;Resources/scroller-vertical-knob-disabled-top.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-disabled-top.pngu;40;Resources/scroller-vertical-knob-top.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-top.pngu;46;Resources/scroller-vertical-track-disabled.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-track-disabled.pngu;37;Resources/scroller-vertical-track.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-track.pngu;44;Resources/scrollview-bottom-corner-color.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/scrollview-bottom-corner-color.pngu;44;Resources/segmented-control-bezel-center.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-center.pngu;53;Resources/segmented-control-bezel-disabled-center.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-center.pngu;54;Resources/segmented-control-bezel-disabled-divider.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-divider.pngu;51;Resources/segmented-control-bezel-disabled-left.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-left.pngu;52;Resources/segmented-control-bezel-disabled-right.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-right.pngu;45;Resources/segmented-control-bezel-divider.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-divider.pngu;56;Resources/segmented-control-bezel-highlighted-center.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-center.pngu;65;Resources/segmented-control-bezel-highlighted-disabled-center.png105;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-center.pngu;66;Resources/segmented-control-bezel-highlighted-disabled-divider.png106;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-divider.pngu;63;Resources/segmented-control-bezel-highlighted-disabled-left.png103;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-left.pngu;64;Resources/segmented-control-bezel-highlighted-disabled-right.png104;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-right.pngu;57;Resources/segmented-control-bezel-highlighted-divider.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-divider.pngu;54;Resources/segmented-control-bezel-highlighted-left.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-left.pngu;55;Resources/segmented-control-bezel-highlighted-right.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-right.pngu;42;Resources/segmented-control-bezel-left.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-left.pngu;51;Resources/segmented-control-bezel-pushed-center.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-center.pngu;63;Resources/segmented-control-bezel-pushed-highlighted-center.png103;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-highlighted-center.pngu;61;Resources/segmented-control-bezel-pushed-highlighted-left.png101;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-highlighted-left.pngu;62;Resources/segmented-control-bezel-pushed-highlighted-right.png102;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-highlighted-right.pngu;49;Resources/segmented-control-bezel-pushed-left.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-left.pngu;50;Resources/segmented-control-bezel-pushed-right.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-right.pngu;43;Resources/segmented-control-bezel-right.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-right.pngu;35;Resources/slider-circular-bezel.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-bezel.pngu;44;Resources/slider-circular-disabled-bezel.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-disabled-bezel.pngu;43;Resources/slider-circular-disabled-knob.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-disabled-knob.pngu;34;Resources/slider-circular-knob.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-knob.pngu;21;Resources/spinner.gif61;mhtml:Browser.environment/MHTMLData.txt!Resources/spinner.gifu;44;Resources/tableview-headerview-ascending.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-ascending.pngu;45;Resources/tableview-headerview-descending.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-descending.pngu;54;Resources/tableview-headerview-highlighted-pressed.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-highlighted-pressed.pngu;46;Resources/tableview-headerview-highlighted.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-highlighted.pngu;42;Resources/tableview-headerview-pressed.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-pressed.pngu;34;Resources/tableview-headerview.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview.pngu;32;Resources/tableviewselection.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/tableviewselection.pngu;44;Resources/textfield-bezel-rounded-center.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-center.pngu;52;Resources/textfield-bezel-rounded-focused-center.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-focused-center.pngu;50;Resources/textfield-bezel-rounded-focused-left.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-focused-left.pngu;51;Resources/textfield-bezel-rounded-focused-right.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-focused-right.pngu;42;Resources/textfield-bezel-rounded-left.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-left.pngu;43;Resources/textfield-bezel-rounded-right.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-right.pngu;38;Resources/textfield-bezel-square-0.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-0.pngu;38;Resources/textfield-bezel-square-1.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-1.pngu;38;Resources/textfield-bezel-square-2.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-2.pngu;38;Resources/textfield-bezel-square-3.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-3.pngu;38;Resources/textfield-bezel-square-4.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-4.pngu;38;Resources/textfield-bezel-square-5.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-5.pngu;38;Resources/textfield-bezel-square-6.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-6.pngu;38;Resources/textfield-bezel-square-7.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-7.pngu;38;Resources/textfield-bezel-square-8.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-8.pngu;46;Resources/textfield-bezel-square-focused-0.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-0.pngu;46;Resources/textfield-bezel-square-focused-1.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-1.pngu;46;Resources/textfield-bezel-square-focused-2.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-2.pngu;46;Resources/textfield-bezel-square-focused-3.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-3.pngu;46;Resources/textfield-bezel-square-focused-4.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-4.pngu;46;Resources/textfield-bezel-square-focused-5.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-5.pngu;46;Resources/textfield-bezel-square-focused-6.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-6.pngu;46;Resources/textfield-bezel-square-focused-7.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-7.pngu;46;Resources/textfield-bezel-square-focused-8.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-8.pngu;35;Resources/vertical-track-bottom.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-bottom.pngu;35;Resources/vertical-track-center.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-center.pngu;44;Resources/vertical-track-disabled-bottom.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-disabled-bottom.pngu;44;Resources/vertical-track-disabled-center.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-disabled-center.pngu;41;Resources/vertical-track-disabled-top.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-disabled-top.pngu;32;Resources/vertical-track-top.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-top.png ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt @@ -0,0 +1,9 @@ +/* +Content-Type: multipart/related; boundary="_SEPARATOR_" + +--_SEPARATOR_ +Content-Location:test +Content-Transfer-Encoding:base64 + +R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== +*/ ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Info.plist Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Info.plist ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Info.plist +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;26;CPApplicationDelegateClassS;20;BKShowcaseControllerK;12;CPBundleNameS;12;Aristo.blendK;14;BKLearnMoreURLS;28;http://cappuccino.org/aristoK;22;BKLearnMoreButtonTitleS;16;Aristo Home PageK;16;CPPrincipalClassS;13;CPApplicationK;29;CPBundleInfoDictionaryVersiond;1;6K;18;CPBundleIdentifierS;21;com.280n.blend.AristoK;15;CPBundleVersionf;3;0.1K;19;CPBundlePackageTypeS;4;BLNDK;20;CPBundleEnvironmentsA;S;7;BrowserS;8;CommonJSE;K;18;CPBundleExecutableS;15;Aristo.blend.sjK;36;CPBundleEnvironmentsWithImageSpritesA;S;7;BrowserE;K;13;CPKeyedThemesA;S;17;Aristo.keyedthemeS;21;Aristo-HUD.keyedthemeE;E; ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-error.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-error.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-error.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-error.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-info.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-info.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-info.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-info.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-warning.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-warning.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-warning.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-warning.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/spinner.gif Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/spinner.gif ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/spinner.gif +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/spinner.gif cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png Index: Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png +++ Site/Site/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPApplication/New.png Index: Site/Site/Frameworks/AppKit/Resources/CPApplication/New.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPApplication/New.png +++ Site/Site/Frameworks/AppKit/Resources/CPApplication/New.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPApplication/NewHighlighted.png Index: Site/Site/Frameworks/AppKit/Resources/CPApplication/NewHighlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPApplication/NewHighlighted.png +++ Site/Site/Frameworks/AppKit/Resources/CPApplication/NewHighlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPApplication/Open.png Index: Site/Site/Frameworks/AppKit/Resources/CPApplication/Open.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPApplication/Open.png +++ Site/Site/Frameworks/AppKit/Resources/CPApplication/Open.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPApplication/OpenHighlighted.png Index: Site/Site/Frameworks/AppKit/Resources/CPApplication/OpenHighlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPApplication/OpenHighlighted.png +++ Site/Site/Frameworks/AppKit/Resources/CPApplication/OpenHighlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPApplication/Save.png Index: Site/Site/Frameworks/AppKit/Resources/CPApplication/Save.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPApplication/Save.png +++ Site/Site/Frameworks/AppKit/Resources/CPApplication/Save.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPApplication/SaveHighlighted.png Index: Site/Site/Frameworks/AppKit/Resources/CPApplication/SaveHighlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPApplication/SaveHighlighted.png +++ Site/Site/Frameworks/AppKit/Resources/CPApplication/SaveHighlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/closedHandCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/closedHandCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/closedHandCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/closedHandCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/contextualMenuCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/contextualMenuCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/contextualMenuCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/contextualMenuCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/disappearingItemCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/disappearingItemCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/disappearingItemCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/disappearingItemCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/dragCopyCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/dragCopyCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/dragCopyCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/dragCopyCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/dragLinkCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/dragLinkCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/dragLinkCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/dragLinkCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/openHandCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/openHandCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/openHandCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/openHandCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeDownCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeDownCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeDownCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeDownCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeLeftCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeLeftCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeLeftCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeLeftCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeRightCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeRightCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeRightCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeRightCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeUpCursor.cur Index: Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeUpCursor.cur ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeUpCursor.cur +++ Site/Site/Frameworks/AppKit/Resources/CPCursor/resizeUpCursor.cur cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanel.png Index: Site/Site/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanel.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanel.png +++ Site/Site/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanel.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png Index: Site/Site/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png +++ Site/Site/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png Index: Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png +++ Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png Index: Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png +++ Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png Index: Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png +++ Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png Index: Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png +++ Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewRightShadow.png Index: Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewRightShadow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewRightShadow.png +++ Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewRightShadow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png Index: Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png +++ Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png Index: Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png +++ Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopShadow.png Index: Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopShadow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopShadow.png +++ Site/Site/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopShadow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png Index: Site/Site/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png +++ Site/Site/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png Index: Site/Site/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png +++ Site/Site/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif Index: Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif +++ Site/Site/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png Index: Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png +++ Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png Index: Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png +++ Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldFind.png Index: Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldFind.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldFind.png +++ Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldFind.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png Index: Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png +++ Site/Site/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png Index: Site/Site/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png +++ Site/Site/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewVertical.png Index: Site/Site/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewVertical.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewVertical.png +++ Site/Site/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewVertical.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png Index: Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png +++ Site/Site/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png Index: Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png +++ Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png Index: Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png +++ Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png Index: Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png +++ Site/Site/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow0.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow0.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow1.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow1.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow2.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow2.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow3.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow3.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow3.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow3.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow4.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow4.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow4.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow4.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow5.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow5.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow5.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow5.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow6.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow6.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow6.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow6.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow7.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow7.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow7.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow7.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow8.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow8.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow8.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow8.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/CPWindowResizeIndicator.png Index: Site/Site/Frameworks/AppKit/Resources/CPWindowResizeIndicator.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/CPWindowResizeIndicator.png +++ Site/Site/Frameworks/AppKit/Resources/CPWindowResizeIndicator.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/FIXME_ImageShadow.png Index: Site/Site/Frameworks/AppKit/Resources/FIXME_ImageShadow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/FIXME_ImageShadow.png +++ Site/Site/Frameworks/AppKit/Resources/FIXME_ImageShadow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/GenericFile.png Index: Site/Site/Frameworks/AppKit/Resources/GenericFile.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/GenericFile.png +++ Site/Site/Frameworks/AppKit/Resources/GenericFile.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/HUDTheme/WindowClose.png Index: Site/Site/Frameworks/AppKit/Resources/HUDTheme/WindowClose.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/HUDTheme/WindowClose.png +++ Site/Site/Frameworks/AppKit/Resources/HUDTheme/WindowClose.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/HUDTheme/WindowCloseActive.png Index: Site/Site/Frameworks/AppKit/Resources/HUDTheme/WindowCloseActive.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/HUDTheme/WindowCloseActive.png +++ Site/Site/Frameworks/AppKit/Resources/HUDTheme/WindowCloseActive.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png Index: Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png +++ Site/Site/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png Index: Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png +++ Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png Index: Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png +++ Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png Index: Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png +++ Site/Site/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png Index: Site/Site/Frameworks/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png +++ Site/Site/Frameworks/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/action_button.png Index: Site/Site/Frameworks/AppKit/Resources/action_button.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/action_button.png +++ Site/Site/Frameworks/AppKit/Resources/action_button.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/brightness_bar.png Index: Site/Site/Frameworks/AppKit/Resources/brightness_bar.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/brightness_bar.png +++ Site/Site/Frameworks/AppKit/Resources/brightness_bar.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/browser-leaf-highlighted.png Index: Site/Site/Frameworks/AppKit/Resources/browser-leaf-highlighted.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/browser-leaf-highlighted.png +++ Site/Site/Frameworks/AppKit/Resources/browser-leaf-highlighted.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/browser-leaf.png Index: Site/Site/Frameworks/AppKit/Resources/browser-leaf.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/browser-leaf.png +++ Site/Site/Frameworks/AppKit/Resources/browser-leaf.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/browser-resize-control.png Index: Site/Site/Frameworks/AppKit/Resources/browser-resize-control.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/browser-resize-control.png +++ Site/Site/Frameworks/AppKit/Resources/browser-resize-control.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/color_well.png Index: Site/Site/Frameworks/AppKit/Resources/color_well.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/color_well.png +++ Site/Site/Frameworks/AppKit/Resources/color_well.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/empty.png Index: Site/Site/Frameworks/AppKit/Resources/empty.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/empty.png +++ Site/Site/Frameworks/AppKit/Resources/empty.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/minus_button.png Index: Site/Site/Frameworks/AppKit/Resources/minus_button.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/minus_button.png +++ Site/Site/Frameworks/AppKit/Resources/minus_button.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/plus_button.png Index: Site/Site/Frameworks/AppKit/Resources/plus_button.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/plus_button.png +++ Site/Site/Frameworks/AppKit/Resources/plus_button.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/slider_button.png Index: Site/Site/Frameworks/AppKit/Resources/slider_button.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/slider_button.png +++ Site/Site/Frameworks/AppKit/Resources/slider_button.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/slider_button_h.png Index: Site/Site/Frameworks/AppKit/Resources/slider_button_h.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/slider_button_h.png +++ Site/Site/Frameworks/AppKit/Resources/slider_button_h.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/standardApplicationIcon.png Index: Site/Site/Frameworks/AppKit/Resources/standardApplicationIcon.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/standardApplicationIcon.png +++ Site/Site/Frameworks/AppKit/Resources/standardApplicationIcon.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/wheel.png Index: Site/Site/Frameworks/AppKit/Resources/wheel.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/wheel.png +++ Site/Site/Frameworks/AppKit/Resources/wheel.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/wheel_black.png Index: Site/Site/Frameworks/AppKit/Resources/wheel_black.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/wheel_black.png +++ Site/Site/Frameworks/AppKit/Resources/wheel_black.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/wheel_button.png Index: Site/Site/Frameworks/AppKit/Resources/wheel_button.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/wheel_button.png +++ Site/Site/Frameworks/AppKit/Resources/wheel_button.png cannot compute difference between binary files ADDED Site/Site/Frameworks/AppKit/Resources/wheel_button_h.png Index: Site/Site/Frameworks/AppKit/Resources/wheel_button_h.png ================================================================== --- Site/Site/Frameworks/AppKit/Resources/wheel_button_h.png +++ Site/Site/Frameworks/AppKit/Resources/wheel_button_h.png cannot compute difference between binary files ADDED Site/Site/Frameworks/BlendKit/Browser.environment/BlendKit.sj Index: Site/Site/Frameworks/BlendKit/Browser.environment/BlendKit.sj ================================================================== --- Site/Site/Frameworks/BlendKit/Browser.environment/BlendKit.sj +++ Site/Site/Frameworks/BlendKit/Browser.environment/BlendKit.sj @@ -0,0 +1,561 @@ +@STATIC;1.0;p;22;BKShowcaseController.jt;15395;@STATIC;1.0;I;16;AppKit/CPTheme.jI;15;AppKit/CPView.jt;15334; +objj_executeFile("AppKit/CPTheme.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +var _1=176; +var _2="BKLearnMoreToolbarItemIdentifier",_3="BKStateToolbarItemIdentifier",_4="BKBackgroundColorToolbarItemIdentifier"; +var _5=objj_allocateClassPair(CPObject,"BKShowcaseController"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_themeDescriptorClasses"),new objj_ivar("_themesCollectionView"),new objj_ivar("_themedObjectsCollectionView"),new objj_ivar("theWindow")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("applicationDidFinishLaunching:"),function(_7,_8,_9){ +with(_7){ +_themeDescriptorClasses=objj_msgSend(BKThemeDescriptor,"allThemeDescriptorClasses"); +theWindow=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",CGRectMakeZero(),CPBorderlessBridgeWindowMask); +var _a=objj_msgSend(objj_msgSend(CPToolbar,"alloc"),"initWithIdentifier:","Toolbar"); +objj_msgSend(_a,"setDelegate:",_7); +objj_msgSend(theWindow,"setToolbar:",_a); +var _b=objj_msgSend(theWindow,"contentView"),_c=objj_msgSend(_b,"bounds"),_d=objj_msgSend(objj_msgSend(CPSplitView,"alloc"),"initWithFrame:",_c); +objj_msgSend(_d,"setIsPaneSplitter:",YES); +objj_msgSend(_d,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_b,"addSubview:",_d); +var _e=objj_msgSend(CPTextField,"labelWithTitle:","THEMES"); +objj_msgSend(_e,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",11)); +objj_msgSend(_e,"setTextColor:",objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",93/255,93/255,93/255,1)); +objj_msgSend(_e,"setTextShadowColor:",objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",225/255,255/255,255/255,0.7)); +objj_msgSend(_e,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_e,"sizeToFit"); +objj_msgSend(_e,"setFrameOrigin:",CGPointMake(5,4)); +var _f=objj_msgSend(objj_msgSend(CPCollectionViewItem,"alloc"),"init"); +objj_msgSend(_f,"setView:",objj_msgSend(objj_msgSend(BKThemeDescriptorCell,"alloc"),"init")); +_themesCollectionView=objj_msgSend(objj_msgSend(CPCollectionView,"alloc"),"initWithFrame:",CGRectMake(0,0,_1,CGRectGetHeight(_c))); +objj_msgSend(_themesCollectionView,"setDelegate:",_7); +objj_msgSend(_themesCollectionView,"setItemPrototype:",_f); +objj_msgSend(_themesCollectionView,"setMinItemSize:",CGSizeMake(20,36)); +objj_msgSend(_themesCollectionView,"setMaxItemSize:",CGSizeMake(10000000,36)); +objj_msgSend(_themesCollectionView,"setMaxNumberOfColumns:",1); +objj_msgSend(_themesCollectionView,"setContent:",_themeDescriptorClasses); +objj_msgSend(_themesCollectionView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_themesCollectionView,"setVerticalMargin:",0); +objj_msgSend(_themesCollectionView,"setSelectable:",YES); +objj_msgSend(_themesCollectionView,"setFrameOrigin:",CGPointMake(0,20)); +objj_msgSend(_themesCollectionView,"setAutoresizingMask:",CPViewWidthSizable); +var _10=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",CGRectMake(0,0,_1,CGRectGetHeight(_c))),_b=objj_msgSend(_10,"contentView"); +objj_msgSend(_10,"setAutohidesScrollers:",YES); +objj_msgSend(_10,"setDocumentView:",_themesCollectionView); +objj_msgSend(_b,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",212/255,221/255,230/255,1)); +objj_msgSend(_b,"addSubview:",_e); +objj_msgSend(_d,"addSubview:",_10); +_themedObjectsCollectionView=objj_msgSend(objj_msgSend(CPCollectionView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_c)-_1-1,10)); +var _11=objj_msgSend(objj_msgSend(CPCollectionViewItem,"alloc"),"init"); +objj_msgSend(_11,"setView:",objj_msgSend(objj_msgSend(BKShowcaseCell,"alloc"),"init")); +objj_msgSend(_themedObjectsCollectionView,"setItemPrototype:",_11); +objj_msgSend(_themedObjectsCollectionView,"setVerticalMargin:",20); +objj_msgSend(_themedObjectsCollectionView,"setAutoresizingMask:",CPViewWidthSizable); +var _10=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",CGRectMake(_1+1,0,CGRectGetWidth(_c)-_1-1,CGRectGetHeight(_c))); +objj_msgSend(_10,"setHasHorizontalScroller:",NO); +objj_msgSend(_10,"setAutohidesScrollers:",YES); +objj_msgSend(_10,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_10,"setDocumentView:",_themedObjectsCollectionView); +objj_msgSend(_d,"addSubview:",_10); +objj_msgSend(_themesCollectionView,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",0)); +objj_msgSend(theWindow,"setFullPlatformWindow:",YES); +objj_msgSend(theWindow,"makeKeyAndOrderFront:",_7); +} +}),new objj_method(sel_getUid("collectionViewDidChangeSelection:"),function(_12,_13,_14){ +with(_12){ +var _15=_themeDescriptorClasses[objj_msgSend(objj_msgSend(_14,"selectionIndexes"),"firstIndex")],_16=objj_msgSend(_15,"itemSize"); +_16.width=MAX(100,_16.width+20); +_16.height=MAX(100,_16.height+30); +objj_msgSend(_themedObjectsCollectionView,"setMinItemSize:",_16); +objj_msgSend(_themedObjectsCollectionView,"setMaxItemSize:",_16); +objj_msgSend(_themedObjectsCollectionView,"setContent:",objj_msgSend(_15,"themedShowcaseObjectTemplates")); +objj_msgSend(BKShowcaseCell,"setBackgroundColor:",objj_msgSend(_15,"showcaseBackgroundColor")); +} +}),new objj_method(sel_getUid("hasLearnMoreURL"),function(_17,_18){ +with(_17){ +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","BKLearnMoreURL"); +} +}),new objj_method(sel_getUid("toolbarAllowedItemIdentifiers:"),function(_19,_1a,_1b){ +with(_19){ +return [_2,CPToolbarSpaceItemIdentifier,CPToolbarFlexibleSpaceItemIdentifier,_4,_3]; +} +}),new objj_method(sel_getUid("toolbarDefaultItemIdentifiers:"),function(_1c,_1d,_1e){ +with(_1c){ +var _1f=[CPToolbarFlexibleSpaceItemIdentifier,_4,_3]; +if(objj_msgSend(_1c,"hasLearnMoreURL")){ +_1f=[_2].concat(_1f); +} +return _1f; +} +}),new objj_method(sel_getUid("toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:"),function(_20,_21,_22,_23,_24){ +with(_20){ +var _25=objj_msgSend(objj_msgSend(CPToolbarItem,"alloc"),"initWithItemIdentifier:",_23); +objj_msgSend(_25,"setTarget:",_20); +if(_23===_3){ +var _26=objj_msgSend(CPPopUpButton,"buttonWithTitle:","Enabled"); +objj_msgSend(_26,"addItemWithTitle:","Disabled"); +objj_msgSend(_25,"setView:",_26); +objj_msgSend(_25,"setTarget:",nil); +objj_msgSend(_25,"setAction:",sel_getUid("changeState:")); +objj_msgSend(_25,"setLabel:","State"); +var _27=CGRectGetWidth(objj_msgSend(_26,"frame")); +objj_msgSend(_25,"setMinSize:",CGSizeMake(_27+20,24)); +objj_msgSend(_25,"setMaxSize:",CGSizeMake(_27+20,24)); +}else{ +if(_23===_4){ +var _26=objj_msgSend(CPPopUpButton,"buttonWithTitle:","Window Background"); +objj_msgSend(_26,"addItemWithTitle:","Light Checkers"); +objj_msgSend(_26,"addItemWithTitle:","Dark Checkers"); +objj_msgSend(_26,"addItemWithTitle:","White"); +objj_msgSend(_26,"addItemWithTitle:","Black"); +objj_msgSend(_26,"addItemWithTitle:","More Choices..."); +var _28=objj_msgSend(_26,"itemArray"); +objj_msgSend(_28[0],"setRepresentedObject:",objj_msgSend(BKThemeDescriptor,"windowBackgroundColor")); +objj_msgSend(_28[1],"setRepresentedObject:",objj_msgSend(BKThemeDescriptor,"lightCheckersColor")); +objj_msgSend(_28[2],"setRepresentedObject:",objj_msgSend(BKThemeDescriptor,"darkCheckersColor")); +objj_msgSend(_28[3],"setRepresentedObject:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_28[4],"setRepresentedObject:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_25,"setView:",_26); +objj_msgSend(_25,"setTarget:",nil); +objj_msgSend(_25,"setAction:",sel_getUid("changeColor:")); +objj_msgSend(_25,"setLabel:","Background Color"); +var _27=CGRectGetWidth(objj_msgSend(_26,"frame")); +objj_msgSend(_25,"setMinSize:",CGSizeMake(_27,24)); +objj_msgSend(_25,"setMaxSize:",CGSizeMake(_27,24)); +}else{ +if(_23===_2){ +var _29=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","BKLearnMoreButtonTitle"); +if(!_29){ +_29=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPBundleName")||"Home Page"; +} +var _2a=objj_msgSend(CPButton,"buttonWithTitle:",_29); +objj_msgSend(theWindow,"setDefaultButton:",_2a); +objj_msgSend(_25,"setView:",_2a); +objj_msgSend(_25,"setLabel:","Learn More"); +objj_msgSend(_25,"setTarget:",nil); +objj_msgSend(_25,"setAction:",sel_getUid("learnMore:")); +var _27=CGRectGetWidth(objj_msgSend(_2a,"frame")); +objj_msgSend(_25,"setMinSize:",CGSizeMake(_27,24)); +objj_msgSend(_25,"setMaxSize:",CGSizeMake(_27,24)); +} +} +} +return _25; +} +}),new objj_method(sel_getUid("learnMore:"),function(_2b,_2c,_2d){ +with(_2b){ +window.location.href=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","BKLearnMoreURL"); +} +}),new objj_method(sel_getUid("selectedThemeDescriptor"),function(_2e,_2f){ +with(_2e){ +return _themeDescriptorClasses[objj_msgSend(objj_msgSend(_themesCollectionView,"selectionIndexes"),"firstIndex")]; +} +}),new objj_method(sel_getUid("changeState:"),function(_30,_31,_32){ +with(_30){ +var _33=objj_msgSend(objj_msgSend(_30,"selectedThemeDescriptor"),"themedShowcaseObjectTemplates"),_34=objj_msgSend(_33,"count"); +while(_34--){ +var _35=objj_msgSend(_33[_34],"valueForKey:","themedObject"); +if(objj_msgSend(_35,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_35,"setEnabled:",objj_msgSend(_32,"title")==="Enabled"?YES:NO); +} +} +} +}),new objj_method(sel_getUid("changeColor:"),function(_36,_37,_38){ +with(_36){ +var _39=nil; +if(objj_msgSend(_38,"isKindOfClass:",objj_msgSend(CPColorPanel,"class"))){ +_39=objj_msgSend(_38,"color"); +}else{ +if(objj_msgSend(_38,"titleOfSelectedItem")==="More Choices..."){ +objj_msgSend(_38,"addItemWithTitle:","Other"); +objj_msgSend(_38,"selectItemWithTitle:","Other"); +objj_msgSend(CPApp,"orderFrontColorPanel:",_36); +}else{ +_39=objj_msgSend(objj_msgSend(_38,"selectedItem"),"representedObject"); +objj_msgSend(_38,"removeItemWithTitle:","Other"); +} +} +if(_39){ +objj_msgSend(objj_msgSend(_36,"selectedThemeDescriptor"),"setShowcaseBackgroundColor:",_39); +objj_msgSend(BKShowcaseCell,"setBackgroundColor:",_39); +} +} +})]); +var _3a=nil; +var _5=objj_allocateClassPair(CPView,"BKThemeDescriptorCell"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_label")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setRepresentedObject:"),function(_3b,_3c,_3d){ +with(_3b){ +if(!_label){ +_label=objj_msgSend(CPTextField,"labelWithTitle:","hello"); +objj_msgSend(_label,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_label,"setFrame:",CGRectMake(10,0,CGRectGetWidth(objj_msgSend(_3b,"bounds"))-20,CGRectGetHeight(objj_msgSend(_3b,"bounds")))); +objj_msgSend(_label,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_label,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_3b,"addSubview:",_label); +} +objj_msgSend(_label,"setStringValue:",objj_msgSend(_3d,"themeName")+" ("+objj_msgSend(objj_msgSend(_3d,"themedShowcaseObjectTemplates"),"count")+")"); +} +}),new objj_method(sel_getUid("setSelected:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(_3e,"setBackgroundColor:",_40?objj_msgSend(objj_msgSend(_3e,"class"),"selectionColor"):nil); +objj_msgSend(_label,"setTextShadowOffset:",_40?CGSizeMake(0,1):CGSizeMakeZero()); +objj_msgSend(_label,"setTextShadowColor:",_40?objj_msgSend(CPColor,"blackColor"):nil); +objj_msgSend(_label,"setFont:",_40?objj_msgSend(CPFont,"boldSystemFontOfSize:",11):objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_label,"setTextColor:",_40?objj_msgSend(CPColor,"whiteColor"):objj_msgSend(CPColor,"blackColor")); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("selectionColor"),function(_41,_42){ +with(_41){ +if(!_3a){ +_3a=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(BKThemeDescriptorCell,"class")),"pathForResource:","selection.png"),CGSizeMake(1,36))); +} +return _3a; +} +})]); +var _43=nil; +var _44="BKShowcaseCellBackgroundColorDidChangeNotification"; +var _5=objj_allocateClassPair(CPView,"BKShowcaseCell"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_backgroundView"),new objj_ivar("_view"),new objj_ivar("_label")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("init"),function(_45,_46){ +with(_45){ +_45=objj_msgSendSuper({receiver:_45,super_class:objj_getClass("BKShowcaseCell").super_class},"init"); +if(_45){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_45,sel_getUid("showcaseBackgroundDidChange:"),_44,nil); +} +return _45; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_47,_48,_49){ +with(_47){ +_47=objj_msgSendSuper({receiver:_47,super_class:objj_getClass("BKShowcaseCell").super_class},"initWithCoder:",_49); +if(_47){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_47,sel_getUid("showcaseBackgroundDidChange:"),_44,nil); +} +return _47; +} +}),new objj_method(sel_getUid("showcaseBackgroundDidChange:"),function(_4a,_4b,_4c){ +with(_4a){ +objj_msgSend(_backgroundView,"setBackgroundColor:",objj_msgSend(BKShowcaseCell,"backgroundColor")); +} +}),new objj_method(sel_getUid("setSelected:"),function(_4d,_4e,_4f){ +with(_4d){ +} +}),new objj_method(sel_getUid("setRepresentedObject:"),function(_50,_51,_52){ +with(_50){ +if(!_label){ +_label=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_label,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_label,"setAutoresizingMask:",CPViewMinYMargin|CPViewWidthSizable); +objj_msgSend(_label,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",11)); +objj_msgSend(_50,"addSubview:",_label); +} +objj_msgSend(_label,"setStringValue:",objj_msgSend(_52,"valueForKey:","label")); +objj_msgSend(_label,"sizeToFit"); +objj_msgSend(_label,"setFrame:",CGRectMake(0,CGRectGetHeight(objj_msgSend(_50,"bounds"))-CGRectGetHeight(objj_msgSend(_label,"frame")),CGRectGetWidth(objj_msgSend(_50,"bounds")),CGRectGetHeight(objj_msgSend(_label,"frame")))); +if(!_backgroundView){ +_backgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_50,"addSubview:",_backgroundView); +} +objj_msgSend(_backgroundView,"setFrame:",CGRectMake(0,0,CGRectGetWidth(objj_msgSend(_50,"bounds")),CGRectGetMinY(objj_msgSend(_label,"frame")))); +objj_msgSend(_backgroundView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +if(_view){ +objj_msgSend(_view,"removeFromSuperview"); +} +_view=objj_msgSend(_52,"valueForKey:","themedObject"); +objj_msgSend(_view,"setTheme:",nil); +objj_msgSend(_view,"setAutoresizingMask:",CPViewMinXMargin|CPViewMaxXMargin|CPViewMinYMargin|CPViewMaxYMargin); +objj_msgSend(_view,"setFrameOrigin:",CGPointMake((CGRectGetWidth(objj_msgSend(_backgroundView,"bounds"))-CGRectGetWidth(objj_msgSend(_view,"frame")))/2,(CGRectGetHeight(objj_msgSend(_backgroundView,"bounds"))-CGRectGetHeight(objj_msgSend(_view,"frame")))/2)); +objj_msgSend(_backgroundView,"addSubview:",_view); +objj_msgSend(_backgroundView,"setBackgroundColor:",objj_msgSend(BKShowcaseCell,"backgroundColor")); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("setBackgroundColor:"),function(_53,_54,_55){ +with(_53){ +if(_43===_55){ +return; +} +_43=_55; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",_44,nil); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_56,_57){ +with(_56){ +return _43; +} +})]); +p;19;BKThemeDescriptor.jt;7386;@STATIC;1.0;I;21;Foundation/CPObject.jt;7341; +objj_executeFile("Foundation/CPObject.j",NO); +var _1={},_2={},_3={},_4={},_5=nil,_6=nil,_7=nil; +var _8=objj_allocateClassPair(CPObject,"BKThemeDescriptor"),_9=_8.isa; +objj_registerClassPair(_8); +class_addMethods(_9,[new objj_method(sel_getUid("allThemeDescriptorClasses"),function(_a,_b){ +with(_a){ +var _c=[]; +for(candidate in global){ +var _d=objj_getClass(candidate),_e=class_getName(_d); +if(_e==="BKThemeDescriptor"){ +continue; +} +var _f=_e.indexOf("ThemeDescriptor"); +if((_f>=0)&&(_f===_e.length-"ThemeDescriptor".length)){ +_c.push(_d); +} +} +objj_msgSend(_c,"sortUsingSelector:",sel_getUid("compare:")); +return _c; +} +}),new objj_method(sel_getUid("lightCheckersColor"),function(_10,_11){ +with(_10){ +if(!_5){ +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(BKThemeDescriptor,"class")),"pathForResource:","light-checkers.png"),CGSizeMake(12,12))); +} +return _5; +} +}),new objj_method(sel_getUid("darkCheckersColor"),function(_12,_13){ +with(_12){ +if(!_6){ +_6=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(BKThemeDescriptor,"class")),"pathForResource:","dark-checkers.png"),CGSizeMake(12,12))); +} +return _6; +} +}),new objj_method(sel_getUid("windowBackgroundColor"),function(_14,_15){ +with(_14){ +return objj_msgSend(_CPStandardWindowView,"bodyBackgroundColor"); +} +}),new objj_method(sel_getUid("defaultShowcaseBackgroundColor"),function(_16,_17){ +with(_16){ +return objj_msgSend(_CPStandardWindowView,"bodyBackgroundColor"); +} +}),new objj_method(sel_getUid("showcaseBackgroundColor"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_18,"className"); +if(!_4[_1a]){ +_4[_1a]=objj_msgSend(_18,"defaultShowcaseBackgroundColor"); +} +return _4[_1a]; +} +}),new objj_method(sel_getUid("setShowcaseBackgroundColor:"),function(_1b,_1c,_1d){ +with(_1b){ +_4[objj_msgSend(_1b,"className")]=_1d; +} +}),new objj_method(sel_getUid("itemSize"),function(_1e,_1f){ +with(_1e){ +var _20=objj_msgSend(_1e,"className"); +if(!_1[_20]){ +objj_msgSend(_1e,"calculateThemedObjectTemplates"); +} +return CGSizeMakeCopy(_1[_20]); +} +}),new objj_method(sel_getUid("themedObjectTemplates"),function(_21,_22){ +with(_21){ +var _23=objj_msgSend(_21,"className"); +if(!_2[_23]){ +objj_msgSend(_21,"calculateThemedObjectTemplates"); +} +return _2[_23]; +} +}),new objj_method(sel_getUid("themedShowcaseObjectTemplates"),function(_24,_25){ +with(_24){ +var _26=objj_msgSend(_24,"className"); +if(!_3[_26]){ +objj_msgSend(_24,"calculateThemedObjectTemplates"); +} +return _3[_26]; +} +}),new objj_method(sel_getUid("calculateThemedObjectTemplates"),function(_27,_28){ +with(_27){ +var _29=[],_2a=[],_2b=CGSizeMake(0,0),_2c=class_copyMethodList(objj_msgSend(_27,"class").isa),_2d=0,_2e=objj_msgSend(_2c,"count"),_2f=[]; +if(objj_msgSend(_27,"respondsToSelector:",sel_getUid("themeShowcaseExcludes"))){ +_2f=objj_msgSend(_27,"themeShowcaseExcludes"); +} +for(;_2d<_2f.length;++_2d){ +var _30=_2f[_2d].toLowerCase(); +if(_30&&_30.indexOf("themed")!==0){ +_2f[_2d]="themed"+_30; +}else{ +_2f[_2d]=_30; +} +} +for(_2d=0;_2d<_2e;++_2d){ +var _31=_2c[_2d],_32=method_getName(_31); +if(_32.indexOf("themed")!==0){ +continue; +} +var _33=method_getImplementation(_31),_34=_33(_27,_32); +if(!_34){ +continue; +} +var _35=objj_msgSend(objj_msgSend(BKThemedObjectTemplate,"alloc"),"init"),_36=objj_msgSend(_2f,"containsObject:",_32.toLowerCase()); +objj_msgSend(_35,"setValue:forKey:",_34,"themedObject"); +objj_msgSend(_35,"setValue:forKey:",BKLabelFromIdentifier(_32),"label"); +objj_msgSend(_29,"addObject:",_35); +if(!_36){ +if(objj_msgSend(_34,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +var _37=objj_msgSend(_34,"frame").size,_38=objj_msgSend(objj_msgSend(_35,"valueForKey:","label"),"sizeWithFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",12)).width+20; +if(_37.width>_2b.width){ +_2b.width=_37.width; +} +if(_38>_2b.width){ +_2b.width=_38; +} +if(_37.height>_2b.height){ +_2b.height=_37.height; +} +} +objj_msgSend(_2a,"addObject:",_35); +} +} +var _39=objj_msgSend(_27,"className"); +_1[_39]=_2b; +_2[_39]=_29; +_3[_39]=_2a; +} +}),new objj_method(sel_getUid("compare:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(objj_msgSend(_3a,"themeName"),"compare:",objj_msgSend(_3c,"themeName")); +} +}),new objj_method(sel_getUid("registerThemeValues:forView:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +for(var i=0;i<_3f.length;++i){ +var _41=_3f[i],_42=_41[0],_43=_41[1],_44=_41[2]; +if(_44){ +objj_msgSend(_40,"setValue:forThemeAttribute:inState:",_43,_42,_44); +}else{ +objj_msgSend(_40,"setValue:forThemeAttribute:",_43,_42); +} +} +} +}),new objj_method(sel_getUid("registerThemeValues:forView:inherit:"),function(_45,_46,_47,_48,_49){ +with(_45){ +if(_49){ +var _4a=objj_msgSend(_45,"themeName"),_4b=_4a.indexOf("-"); +if(_4b<0){ +objj_msgSend(_45,"registerThemeValues:forView:",_49,_48); +}else{ +var _4c=_4a.substr(_4b+1)+"/"; +for(var i=0;i<_49.length;++i){ +var _4d=_49[i],_4e=_4d[0],_4f=_4d[1],_50=_4d[2],_51=nil; +if(typeof (_4f)==="object"&&_4f.hasOwnProperty("isa")&&objj_msgSend(_4f,"isKindOfClass:",CPColor)&&(_51=objj_msgSend(_4f,"patternImage"))){ +if(objj_msgSend(_51,"isThreePartImage")||objj_msgSend(_51,"isNinePartImage")){ +var _52=objj_msgSend(_51,"imageSlices"),_53=[]; +for(var _54=0;_54<_52.length;++_54){ +var _55=_52[_54],_56=_4c+objj_msgSend(objj_msgSend(_55,"filename"),"lastPathComponent"),_57=objj_msgSend(_55,"size"); +_53.push([_56,_57.width,_57.height]); +} +if(objj_msgSend(_51,"isThreePartImage")){ +_4f=PatternColor(_53,objj_msgSend(_51,"isVertical")); +}else{ +_4f=PatternColor(_53); +} +}else{ +var _56=_4c+objj_msgSend(objj_msgSend(_51,"filename"),"lastPathComponent"),_57=objj_msgSend(_51,"size"); +_4f=PatternColor(_56,_57.width,_57.height); +} +} +if(_50){ +objj_msgSend(_48,"setValue:forThemeAttribute:inState:",_4f,_4e,_50); +}else{ +objj_msgSend(_48,"setValue:forThemeAttribute:",_4f,_4e); +} +} +} +} +if(_47){ +objj_msgSend(_45,"registerThemeValues:forView:",_47,_48); +} +} +})]); +BKLabelFromIdentifier=function(_58){ +var _59=_58.substr("themed".length),_5a=0,_5b=_59.length,_5c="",_5d=null,_5e=YES; +for(;_5a<_5b;++_5a){ +var _5f=_59.charAt(_5a),_60=/^[A-Z]/.test(_5f); +if(_60){ +if(!_5e){ +if(_5d===null){ +_5c+=" "+_5f.toLowerCase(); +}else{ +_5c+=_5f; +} +} +_5d=_5f; +}else{ +if(_5e&&_5d!==null){ +_5c+=_5d; +} +_5c+=_5f; +_5d=null; +_5e=NO; +} +} +return _5c; +}; +PatternIsVertical=YES,PatternIsHorizontal=NO; +PatternColor=function(){ +if(arguments.length<3){ +var _61=arguments[0],_62=[]; +for(var i=0;i<_61.length;++i){ +var _63=_61[i]; +_62.push(_63?objj_msgSend(_CPCibCustomResource,"imageResourceWithName:size:",_63[0],CGSizeMake(_63[1],_63[2])):nil); +} +if(arguments.length==2){ +return objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",_62,arguments[1])); +}else{ +return objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",_62)); +} +}else{ +if(arguments.length==3){ +return objj_msgSend(CPColor,"colorWithPatternImage:",PatternImage(arguments[0],arguments[1],arguments[2])); +}else{ +return nil; +} +} +}; +PatternImage=function(_64,_65,_66){ +return objj_msgSend(_CPCibCustomResource,"imageResourceWithName:size:",_64,CGSizeMake(_65,_66)); +}; +p;24;BKThemedObjectTemplate.jt;911;@STATIC;1.0;I;15;AppKit/CPView.jt;873; +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPView,"BKThemedObjectTemplate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_label"),new objj_ivar("_themedObject")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("BKThemedObjectTemplate").super_class},"init"); +if(_3){ +_label=objj_msgSend(_5,"decodeObjectForKey:","BKThemedObjectTemplateLabel"); +_themedObject=objj_msgSend(_5,"decodeObjectForKey:","BKThemedObjectTemplateThemedObject"); +} +return _3; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6,_7,_8){ +with(_6){ +objj_msgSend(_8,"encodeObject:forKey:",_label,"BKThemedObjectTemplateLabel"); +objj_msgSend(_8,"encodeObject:forKey:",_themedObject,"BKThemedObjectTemplateThemedObject"); +} +})]); +p;17;BKThemeTemplate.jt;873;@STATIC;1.0;I;21;Foundation/CPObject.jt;829; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"BKThemeTemplate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_name"),new objj_ivar("_description")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("BKThemeTemplate").super_class},"init"); +if(_3){ +_name=objj_msgSend(_5,"decodeObjectForKey:","BKThemeTemplateName"); +_description=objj_msgSend(_5,"decodeObjectForKey:","BKThemeTemplateDescription"); +} +return _3; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6,_7,_8){ +with(_6){ +objj_msgSend(_8,"encodeObject:forKey:",_name,"BKThemeTemplateName"); +objj_msgSend(_8,"encodeObject:forKey:",_description,"BKThemeTemplateDescription"); +} +})]); +p;10;BlendKit.jt;307;@STATIC;1.0;i;22;BKShowcaseController.ji;19;BKThemeDescriptor.ji;17;BKThemeTemplate.ji;24;BKThemedObjectTemplate.jt;187; +objj_executeFile("BKShowcaseController.j",YES); +objj_executeFile("BKThemeDescriptor.j",YES); +objj_executeFile("BKThemeTemplate.j",YES); +objj_executeFile("BKThemedObjectTemplate.j",YES); +e; ADDED Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLData.txt Index: Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLData.txt ================================================================== --- Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLData.txt +++ Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLData.txt @@ -0,0 +1,19 @@ +/* +Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR" + +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/dark-checkers.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACVJREFUeNpi1NPTY0AFly5dQhNhYiACDEZFjJhCmP4dsr4DCDAAhJEDocvkWaYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/light-checkers.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAANIWlDQ1BJQ0MgUHJvZmlsZQAAeJyV13k0VW37B/Brn8ExHAcHx0E4MssUmUOGSFSmzCWZOZyTKZUyJIXIEIomiiZFiUSG6iFDSAoJRZmFEMlwfn/IU79nred913v/de1rrb33vfdan++9LgAOsiudTkUBgH9AcKCViQHF3sGRgusELLAACXiB7OoWRNe3sDCHf13zHYAAALTLu9Lp1CTCxYdqVScD7735OaO+Y5flv98HAACEQHsHRwBEDgB4vNbqbQDAc3CttgEAnsPB9GAAxBsAeNy8Xd0BkHAAkAu0sTIEQG4BAMFrrS4DAMLBtboeAAihbl7BAEgXABMxwN0nAAA3AcCk6+4R5AZAkAMAd/cgN38AQjIAKPj709wBCDUAIO1GDwwGIIwAgLy9gyNlbctO8QBb+AGYzX73DqcDlOQASO/63RN7DEByBchN/N2btQIEABBSa5CnijIAACB4AwBsH4MxKwmASwVYSWEwlnIZjJXrAOgegBqqW0hg6K//hSDNAP/teu2bfy00AoACQMSRfNRRdDgmHHuCKRIXzXySxYillvU02xl8HPtZQimnN1cKMYU7lec8bzopnS+TXCtAE8zekC10WbieEiKau/G6WKvEMcl8qTaZE7J3N3XIRyvcU+zefFr5ocpH1bNqper9mkla5dpDOmm6VXpj+hkGzw0nt2cZ15nMmF7d2Wg2vyt3d8ue1xavLduslm3u7H1n22HXad/liHF64Nyzr3d/n8vHA58O4t2euH/xGPQc8hr2HvEZ9eOlPvP/GjBJm6JPH/oWOBM0FzwX8j10/vBC2I8ji0d/HlsOXz6+EiET+S4aOYmKQZ/CxGJPM53BxTHHsySwnmVLxCexnyMkc6RwpnKlEc9zp/Nk8GaSLvBdJGfxZwtcEry84YrQVeFrIjmUXNHrG2+I5YnnS9yUuiV1W/qOzF3Zu+MF1Hty9+ULFYuUHmx+uLlY+dGWEtVStdL5x6Fl6k80yrUqtJ9urdxapVO1Wh1Ro/ds23P9FwZ/GdZiamPqtr80rjdpMG00bWJtSnhl1mzesruV0HrutUWb5RurdmJ76lvrdzYdeztJnZlddu/tux0/CHzI7nHude7b91H449VPLv0HBkQHcj8f/OI26D4kMZQ/7DniNeo9JjN2Z9x3wu8rdVJ+8v5UwDTtG31m88zD2cC5oO/B86rzpQuhP8IWj/w8sqS1VLF8bCV8VWe1isEAQMRQBNQ0uglzF5vGFI7zYrZhMWTdwiaFl2InE/g4yJxkLl6iJLc0jwavOWk/XxA5ib9QoElwVIhbWE3Ei3JB9KUYIq4jcUjygdSUjLQsdVOFPFpBXzFFqV9ZRiV2S6earDpdo1aLTzts6ytdkh5t23MDccNjRm3GwiZhOypNF802m3vsSt/dZkGwNLEKs86zeWvLarfN/pDDZcc6p6l9Ivv3uBw9kOtae3DUnddDz9Pe64T3NZ8a316/RX/ugE00I7r3ofDA5KDc4JKQ+tAPh8fC5o+ij3GFU47LnVCN2BZpFrUn2unkgRiPU9TY4NOBZyLjIuNPJsSdTU1MSMo6dzE5MyUl9VJa6vmM9AsZtzJvXrh/8VbW3ezCS08vP71Se/XVtbac9tz26+03PuR9yR++OXBr8PbUnW93pwom783cnyocL5p4MPywv3jgUXdJW2nD45qyx08Kyy9VpD6NrPSvcqo2q9n6TPY58fnii09/NdY+qkt7GVhv3aDWKNjIaOp+9ag5vsWxVax16HVx2/E329sJ7b1vr73z7VDpWOls7kp7v69bpnv2Q3lPdK9ZH09f38fbn4L6tQcwA42fz3/ZPyg1ODFUPhw1snOUd7R37MY4dUJ1YvVrw2TqlNO0+PTEt+KZ8FmTOeJc1/e8edqC5g/0j5eLKT+dlsSWvi6XrkSumjJIDAYAnETCUEfR2uhyzHGsHraaKQp3itmYuZYllvU0Wzx+J76JPZGQyJHEuYezlSuZmMqdxpPGa8P7lpTBl0G+wJ8lkC2YveGSkLNQr/BVkWuUHNGcjTli18VvSORJ5kvdlL4lc1vWR3Zs0x25Avl7CvcVC5WKNj9QfqhSvOWRaqlaqXqpRpjGD81yrXLtiq1PdSp1T+iu6lVvq9F/ZvDc8IVRzHbM9lrjOpOXO+pNG3Y2miWY481f7Wre3bKn1SLZktOyzeqNdbvN270dthl2JLtO+y6H947dTtnOgs49+3r3f3T5dOCTa85B0YMDbp/dv3gMeuZ7Sa4liO+Y312qHHXi/6XI7N8pUnZE48ji0Z/HlsKXj6+cWI1gREE06u8kwZ3BxTHHNcTvTGA7i0/EJ7Gf40jmTOH6O0tImXwXyL+yZMOfWZI7cN3thlieeL7kTcn1NCmQuyd/X+GPLFEp2VKq+li9TP2JRrlmhfZT7cqtVbrVun/kyPY645fG9SYNOxpNm8xehbZsbN392qLN4o1l+/F3sh22nXZd0d2KHxx7YvtUPsb1qw6c/eI+pD2cMuoz7vuVOkX7Fj/nOH9uMWHFisEAWDv7AACY1AAyNgHYZgFY5wLEbgKQcgEg3QKwYAew0QQUVhhQOnRAduqsnx+AACcIgQIYgAMEQTIUwQ+EgpghYcgtpAUZRnGgTFBRqErUMloHHYWuQy9jRDEOmHzMd6wx9hS2EDvFZMKUwzSE48U54yqZccyazDHM4yxaLDSWGlZ51kjWMjYCWxTbezwPPgA/wr6d/SR7P8GV8JwDzeHJMcFpyZnBucIVxzVD1CLmcatz53FP8bjwLPD68JaSNpFe8nmSceQ7/BL8h/nnBC4LmgjObrgmJC4ULowIl4j4UkQp3aLnN27cGCnGIdYqniKxV1JAckDqrrSh9G0ZA1ku2f5NxXKn5Z0VVBTxisNKf23OVY5Wcd9ioiqnxq22rD6kkalJ0KzRKtLO2Xpe54xuhN7hbYf0qQY+ht5G3tv9jANMgnccM43Zec4s2/z2rrLdDXt6LL5Z4ayFbTT2WtvS7ZLs7zu8dpx1Ju/T3e/pknygwnXEjc/dxOOIZ4EP2dfCL55aG4Ci6dOjDr0IYgo2C0kNEz9CO/o0nPW444mCCEaUTQzqlHPs4zPccYfi2xLTkxaTXVLq0hTPZ2UGXficZZ1de+X+NYmcy9f58jlvJt0m3Dl3L7NQqOjGQ/kSo9K2Mtcn3yr5qgpqDF4E13LUFdTvbIpvlm9pex3aXveO3inYVd8j2dv1Mb5f70vBkPuIyGj3V9sp0nTnTNacy8LEYslSBIPMYAAACliBD2RAD+whBNKhDPoQHKKEuCBJSDUyi5JFuaCyUG/RHOhd6LPoZgw7Zg8mHfMBS8H6YIuwP5gMmc4xvcdJ4EJwL5iJzO7MZSxsLM4s91kxrPtZH7GxsrmxVeN58XR8M7sseyL7BMGcUMjBzkHj6ODcxnmDi8AVyvWBaEx8wE3hTuVe5Qni+crryztGopJm+IL55slH+RH+swICAncENQXrNthuGBWKFOYXLhWxFBmjxIpKitZvDBDjE6sSd5PASzyTDJASkXojHSdjILMiW7EpXE5HbkG+WuGMoo2SqNLU5mrlFBXfLUaqwqpLau/Un2hc1ozS8tK226qjo6grqkfchtFH688YfDOcMhrfPmQ8azK+4/tOlBmPOd+uzbt19+yxsLL0szpinW3zcO8r2w92yw48jopOu50P7bu4v9Zl2JXloJKbt3uWR7XntLeMj4dvpt87f8GAvbRs+kigdFBocEOo0OGgsMajYseSwsdOOETUR6lF58UQTyWdJp7JiCcnZCeqJrUke6T8TEtMV88YvHAly/fS3isy17A5E9ef55XcvHg79q7bPedC4wcaxVtKFB7LP5GukKiUrlZ6pvdiR63lS2rDoaaU5mutT9v62hkdIl063e49CX3lnyY+8w8aDEeO3hr/Mikw7TlzZW5oQXoxYKl0FWEwAIAJOEEIDMABkqEI3qzbX3e/ph7DgXHAfMcaY7N+eV/FOTOLMMcwj7PYsNSwyrNeYiOwRbEt4APwI+zuBFfCZw5PjgnOIM4VrjgiiZjHrc7dyOPCs8Cb/Lfp3fxzvzxbCCPCJb8sW65J/uU4VMbgT8O/Bf/y+0azRqvot93fcv/d7X9S69XvQ/a1+Kfa0O5/uo2+86fcs8q/5WYwrdu9rLmu90baut8C4rrg4rJ1wxUn1xQ/61533DDaFP/qr+aMlrbXoW+E2uve0TuKOmO76rtDeyR7/fqMPsb36w2c/nzwS8Hg/FD7iMio35jpuPQE7qvtZP5U7LTXtx0zsrNss5Nzr78Xz2cs2CxM/IhZNPgp9XNoKWKZvHxlhWslZmVh9QYjgcEAWJuXAACA1ZBGpQVSzA2N/stw978uf2rI+jsQAMB7BOy1BgAiAGwAQ6ABFWgQCBQwB0MwAlib1QAAmDgBLtkBAFT/OBb5z+cGe4QFAwAY0uhHAn28vIMp+nQ61YNiSPOnhwR7BMpRTAPcFOQoykpK6gAA/webaQNyG2W/uAAAAClJREFUGJVjPHPmDAMqMDY2RhNhYiACDEZFjP///0cTOnv27MC6iXqKAKr3CHhmo7+yAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/selection.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAIAAADHFsdbAAAPTmlDQ1BJQ0MgUHJvZmlsZQAAeAGtmHk4lN3/x89sDMZgrNlmrMkWsu/7Tva1bDNjN8YYRGRJaVHhIVFTESlLthKRlKjQIqRQKh4taEEi2+8enp7n+v6+13P9/vmd65r7vM7nvD+fz7nvc1/nzLkB4CEEUqmRcABAFIVOc7EyJXh5+xBYXwEUwABeoAPkAomxVBMnJ3tI8i9l8QWAMbsGlJix/kX0b2YsDUoIAEwREvCFbLExk4O22I3JCXQqHdKEMpkYGkiCOBliRZqbixnEVyDGhmxxM5ODtvghk+OJIUzflwCw4CikMAoArDMQG5LIsUSom5mXRIolRkGcAwDcNCoqGorPPQjZ5YhUGuTLvQqxNPO5QDVUghEA6PZCMUb/sUUsAVB7FACJ+X9s0iMA8HcDUOn5j23eZfNZwQSexgbvUtsMB8OYAoB6s7ExLwuNLQ+AtdyNjZXSjY21SwAgxgDoiCTG0eI3tdCNwB4D8H+1t+75Lw8ENDnMCcaDKDAB84fNwosQ3kh5lAALgpUPbcBGZr/IMctpij3HtcoTjZvmC+SfFQwWmhdOFEWK5eNFCBcklaVaZYxkO+VsdrQrWCm2KuN3Fqoi1Pbteq6hqcnQmtcx1y3Q+2xgaJhgdMMEZmps5md+2qLX8os1h428raUd0T7VodCxZfc7Z7jLdld7twj3wx4lnne8hr3nfbftUd1r5hfonxyQF1gedJPYSxohTwevhLKF8YaLRkhEykbtpKhFa1O1YnRoarEK9B1xEvFCCXz72PetJX5JGt3/KPlmytUD+ampaeHpDhmaB/GZ7JnfDvUfvpGVf+TgUdIxi+NS2fDsTycmT67kiOZq5u3+wy8/ruDY6erC1jP9RWPFX8+xMYTOS1/QuGhZ4lbqdym0LKF8/+Wsipwrx6+eqsytyqvOq2FcK6rNq8uuz2zY3xh3PeYGscnjpn2zcYvaLalWXOt628ztkfb2O3Udp+8euBfS6Xpfv0u2m6d7+cH4w9ZH5T3Heul9no+VHi8+qXq69xn3s87+6Of450MDGYM7B98MZb/QezE9XPTS9uXKq4oRr1H20ZYx8mv+131vEsd3jL99m/PO+N3c+4oJn0nsZPefB6Y0pmY+lH8kfZL6NPq5eNpvRmpmcrb6S8JXs2/Ybx+/N8/lzEcvOP/QWVT4qbCktGz0K3Slcg273ryxAc0/N9AGdHAPRoAdgW3A8xCaiBnkbdQ5llOsp9E1bAMcCIwdZy72LbcBz1leFr4I/seC2kI1wsIiyaIT4sb4yxKckqFSfTIqslnbx3bIydMUOpX4lN12FqiMqUnt8lK/pDGiBbR1deJ1S/Qe6s8ZShg5GYeY5JnWmj00n7BYtxK21rJxsiXb0e3THLIdL+xucOpw7nV54TrlNue+6LHuxemN8+H1Fd0jsVfUT8RfJEAkEB8kTOQn8ZLZgkHwcsiX0PdhL8P7Itoiq6MYlJPRadTYmBCac6w5XTVOPB4Tv5wwue954u2kiv0FyYdSwg7sSbVMU00XzkBkzB4cyxw6NH74W9bqUdQx9uM82WInFE9qnDLMMc61yfP9IzCfVEA9vb/w0JnjRaeKL54tOVfLaD3fdeHJxRclr0snLs2U/bqMqEBfwV4VqpSrUq82qLG55lLrVUeuj2tIbsy8fvJGcVPVzdvN91r6br1vnWpbbEffwXWI3pW/p9fpfJ/cRetOfrD/IfGRWY9Ez1pvf9+1x1lPiE+Nngk8+9jf+ZwxQB00HxIe+vqiY7jwZfgrwxHcyOvR+rGs1/5v1MdZx9+/vf7u+PvACa1JzOTHP7unyj+kf9z7Sf8zYRo1PTvTN9v0pfRr9rd930PnfOadFmx+mCzq/tRY0ljW/qW/YrBquea0Hrhhuzn/WKACiKACLMNcYS1wBfhVhBqiC0lCcaLus6SymqDZ0e/Y2tiLOdIwFE4Sdg+XB7c7jwvOi3cvtCKECyQKZgnlbmMIN4jcFe0WGxb/jP9OWJKESXFIo2VwslzbMXLCO9jkkQowhXnFGaUx5Uc7m1QYqmlq5F1m6soaaI33mh1aJdqZOiRdUz0RvR/6QwZNhvlGFGNrEwVTmOmYWZv5OYsES0crJWsO6ymbDtsiO6q9pYOow6Jj7+6LTvucbV2kXRZdH7mdd4/xMPXEeU56NXqn+bj6ivl+2HN9b7qfsz/e/2NAXWBikAWRi/iKdIkcGawa/COkJTQ1zDGcN3w4ghEZFiUf9Y3SHH2Aah+DixmhlcdS6IZxbHGD8aUJlH3aicjE/iTG/qhkgxTOlLEDValJaS7pkukLGQ8PnsuMP2R1WPTwQlbfkdKjicdcjstD68rIicaTBaeic6xzCbnLeS/+aM4vKKCdti3cfgZ5ZrzodvH5s3HnPBka5/kugIvwEkwp7hJfmWC5yGV8Bf6KCPQ28VfxVfPW8F3jrxWqE6kXaeBvFLyOvyHXpHRTqVm9xfSWc2tgW+ztw+2MOw86xu+udErft+1K6q5/8OmRdE9Ab2nf0hPXp3X93M8TBuaHjg7zvmwciRnb9XptfOU9ctJqquqT7ozu1xPzzcu1zPnf2vuYewKLJgBn/AHwFgPA2QqAbH0AtmtDe1UAAE6cALjpALgyH4D9uAdgpqfA7/1jG9AFPiAZMMBdaB9BwuRg9jAqLB/WAhuHs8CV4e7wFHg5/Bl8GSGFcEakICoRr5BopDYyFFmMfIJCoLRRUahLqFEWfhYnluMsD1jRrFash1gfoDnRHuhi9ASbEhud7T47PzuJvZGDlcOfoxmDw0RhHnLKcB7nnMd6Ym9xyXAxuDHc+7m/8VB4ZnFRuG+8dN5lvoP8GP4cAUGBMkFlwVtCdkLj2+KF2YXLRExEXolSxXjFWsS9xVfxZYTdhHWJSsm9UjipLukUGW2Zn7It21PlLHdw7HglX6aQqGirJKeMUh7f2aVyRfWYWsIusvoeDVfN3VoW2pY6NrqOegH6YQYJhhlGJcYtJmOmX8xxFjqWIVZ51pU25bY5dun2SQ5Ux/jdMU4xzmQXimu0W6p7tscJz0Kva973fPp9p/Zs+In7GwR4BmYElRIfkRHBqiGk0OKwgQgQaRp1hPKMKhITRrsRux4XEN+0jzORkvQsWSPlUipP2oH0jYORmbOHo7JmjoYe+5pNPbF0KjNXLq8h365gqPBAkdVZN0bkhUMlNy89vYy8ol0ZU11+baJ+W2PwjfM3P9zSb4ttf3qXszOw6+ZDWI9334Un0/0GA0eHWl/iRpzH0t/cfzs3Ifin9QeXT/HTB2ZTvsZ995nHL0wtFi0pLlessK26rPmtp22uH6ogGJwGXeA7TBxmA6PDLsB6YItwAtwengSvgA8iENB6EojIQ3QhlpFKyADkaeRjFCvKFJWCakP9YtFhSWS5zQpYzVmPsj5Hi6JD0c1sbGw+bFVs6+ye7PUcHBxkjrsYGUw65j2nHectLAGbhV3kCuN6ze3M3cWjy3Mbp4G7wavHe5fPmq+f35d/SiBOkFXwvJC20IttVGEO4UoRB5EF0WIxQ7Fp8fN4O/wSoU4iXBIvOSpVIh0ks11mRrZue5rc7h1iO37KP1G4rHhEKVjZaqeKirAqi+qC2sSu5+qdGh2a17UatRt1GnRb9Nr1uw0GDd8afTZBmmLNtpsbWuyxTLIqtK6xabCttKuyr3VocXywu99p2Hnc5bsbzF3cQ8lT28vdm+5z1Ld0z5297/xZAsQD7YLCiSdIjeSxENZQzbDg8KKIe5FzFPloIpUR8zgW0PXi4uPrE+YStZNi9tck/zxglHo4rTeD86BjZsmhuSzlI8eODh8Xz6ad6D1FyInNvfcHV35Qwb1CiTPFxcZnpxnFF/xL+EsHyrIvO1yRvvqhqrYmuzagXqtR9PpC01hzy63rbYz29A7SPd/7+t3qDwk9vH2cj5eejvd3DTQNXRk+/ipy1Pa14bjA27n3g5M1UxkfPT6LT0/Ptn7N+u4wj13oWSxYcvjFudK2Rtmcfx2QAG6ABdguWAysAbYA14Dvg99GwBFWiBOIF0g8MhLZjGJBeaKuolZYHFnKWTZYvVjr0NzoWPRzNnU2BjsrO419nMON4z7GANPMqcjZiFXH3uQy4+rl9uOe5zmGU8T18cbzCfH18KcIqAi8EywUctnGt21YuEDEW1RKdE7slngunkjYJcEhMSPZLVUmnSUTLeu73V7OcIeyvIKCpKKUkriy3E4lFS1VazXfXdHqpzQqNJ9q/dTB61rpxerXGEwZiRvvMTlrOm6uaJFqOWgtbEO3HbCXcTjpOOPk4lztus0txf2jp41Xi4+kb95etF+S/3xgcNAIyZX8NMQx9E64eUR7lDGliWoc0xFrRH8Q75gwkOif9Dk5MWUpNStdJKMh0+rQ0yzikeVj57LVTgyeouVi8m7luxSsFZ4rwhXHnx1lOJ2/e1Gz5Ool8bLSy7IVlVeVKxurtWraao3ruhpsGt/doDUtNie1rLX+cVum/UqH/N3qTuX7td0qD6ofYXuy+zge055MPHPurxvADkYOPRqWeZn26sWo0JjX6zNvht/yv3N5nzVxbbLzz9GpjY/8n6Q+S05LzOBnxb5s+7L29c239u+MudB51fn5hfofUYuExaGfcUuYpbJl9eU7v+x+9azorFxZFVxNXn24xr8WtHZtbWXdaj1n/dWG1EbkRhNz/rfOS8z9A7CbRUdG0wj2Zuabzf+/S1RkHHQm2yw46IqhBDnuhmomf6TSndygWgD6/YqNd7WAam7oOMQdHGZp8xcTSIHmdhCLQnaVpFAzR4gxENsH0yxdIIZ8YV7hgbZOEGMhppAp7q4QQ/FhydTIzTMuk09S6aZMvRDEF8mxFr81zUmhbp5/+fbQ4lzcIZaGNC8jou2YemauVRLZ/K+xwdGUSEd7yA7lhQuF0W2Y4+eDWBlYgkBAAyGADJSAPTAD5n9dCZCdALWjoV4yiIV0k5u63yqPzXbY//JSglZmZrz4TZ8IMAVxlH9YBg2K9Z/RiVDkOBAJ6eIATaVK5ZPK6t8aZtbIzcy/vez+y7IVbWuEW9owQIJUv+3M+Jt2ZvaohuD4M9GJuh6hSFmkGlIDaYo0QBoidQABKYAUBkpIdejfgQnSCKkH9ek8mbk58/dYtp5P0N/3afd7zNDIKX9b/ysrCIO+Y2ye36EnDVig9+McdCYHoLOe+YngPwudvA862wNgFk1NpIWFhNIJJtDXC7IiwYZCVFYkqKmo6ID/Af9GTe47ptE5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAUklEQVQIHVWMsRGAQBACGXITExuyMMv7ov5A7nXGMTrYA3Beg8e+URZVpmQaZlV8tPxpA6xZtPHnyXS29HSQ3Fx90Yv3Pzq95ujN3n7zjm+eewN3s15bSuoFLgAAAABJRU5ErkJggg== +*/ ADDED Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLPaths.txt Index: Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLPaths.txt ================================================================== --- Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLPaths.txt +++ Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLPaths.txt @@ -0,0 +1,1 @@ +@STATIC;1.0;u;27;Resources/dark-checkers.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/dark-checkers.pngu;28;Resources/light-checkers.png68;mhtml:Browser.environment/MHTMLData.txt!Resources/light-checkers.pngu;23;Resources/selection.png63;mhtml:Browser.environment/MHTMLData.txt!Resources/selection.png ADDED Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLTest.txt Index: Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLTest.txt ================================================================== --- Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLTest.txt +++ Site/Site/Frameworks/BlendKit/Browser.environment/MHTMLTest.txt @@ -0,0 +1,9 @@ +/* +Content-Type: multipart/related; boundary="_SEPARATOR_" + +--_SEPARATOR_ +Content-Location:test +Content-Transfer-Encoding:base64 + +R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== +*/ ADDED Site/Site/Frameworks/BlendKit/Browser.environment/dataURLs.txt Index: Site/Site/Frameworks/BlendKit/Browser.environment/dataURLs.txt ================================================================== --- Site/Site/Frameworks/BlendKit/Browser.environment/dataURLs.txt +++ Site/Site/Frameworks/BlendKit/Browser.environment/dataURLs.txt @@ -0,0 +1,1 @@ +@STATIC;1.0;u;27;Resources/dark-checkers.png198;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACVJREFUeNpi1NPTY0AFly5dQhNhYiACDEZFjJhCmP4dsr4DCDAAhJEDocvkWaYAAAAASUVORK5CYII=u;28;Resources/light-checkers.png4650;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAANIWlDQ1BJQ0MgUHJvZmlsZQAAeJyV13k0VW37B/Brn8ExHAcHx0E4MssUmUOGSFSmzCWZOZyTKZUyJIXIEIomiiZFiUSG6iFDSAoJRZmFEMlwfn/IU79nred913v/de1rrb33vfdan++9LgAOsiudTkUBgH9AcKCViQHF3sGRgusELLAACXiB7OoWRNe3sDCHf13zHYAAALTLu9Lp1CTCxYdqVScD7735OaO+Y5flv98HAACEQHsHRwBEDgB4vNbqbQDAc3CttgEAnsPB9GAAxBsAeNy8Xd0BkHAAkAu0sTIEQG4BAMFrrS4DAMLBtboeAAihbl7BAEgXABMxwN0nAAA3AcCk6+4R5AZAkAMAd/cgN38AQjIAKPj709wBCDUAIO1GDwwGIIwAgLy9gyNlbctO8QBb+AGYzX73DqcDlOQASO/63RN7DEByBchN/N2btQIEABBSa5CnijIAACB4AwBsH4MxKwmASwVYSWEwlnIZjJXrAOgegBqqW0hg6K//hSDNAP/teu2bfy00AoACQMSRfNRRdDgmHHuCKRIXzXySxYillvU02xl8HPtZQimnN1cKMYU7lec8bzopnS+TXCtAE8zekC10WbieEiKau/G6WKvEMcl8qTaZE7J3N3XIRyvcU+zefFr5ocpH1bNqper9mkla5dpDOmm6VXpj+hkGzw0nt2cZ15nMmF7d2Wg2vyt3d8ue1xavLduslm3u7H1n22HXad/liHF64Nyzr3d/n8vHA58O4t2euH/xGPQc8hr2HvEZ9eOlPvP/GjBJm6JPH/oWOBM0FzwX8j10/vBC2I8ji0d/HlsOXz6+EiET+S4aOYmKQZ/CxGJPM53BxTHHsySwnmVLxCexnyMkc6RwpnKlEc9zp/Nk8GaSLvBdJGfxZwtcEry84YrQVeFrIjmUXNHrG2+I5YnnS9yUuiV1W/qOzF3Zu+MF1Hty9+ULFYuUHmx+uLlY+dGWEtVStdL5x6Fl6k80yrUqtJ9urdxapVO1Wh1Ro/ds23P9FwZ/GdZiamPqtr80rjdpMG00bWJtSnhl1mzesruV0HrutUWb5RurdmJ76lvrdzYdeztJnZlddu/tux0/CHzI7nHude7b91H449VPLv0HBkQHcj8f/OI26D4kMZQ/7DniNeo9JjN2Z9x3wu8rdVJ+8v5UwDTtG31m88zD2cC5oO/B86rzpQuhP8IWj/w8sqS1VLF8bCV8VWe1isEAQMRQBNQ0uglzF5vGFI7zYrZhMWTdwiaFl2InE/g4yJxkLl6iJLc0jwavOWk/XxA5ib9QoElwVIhbWE3Ei3JB9KUYIq4jcUjygdSUjLQsdVOFPFpBXzFFqV9ZRiV2S6earDpdo1aLTzts6ytdkh5t23MDccNjRm3GwiZhOypNF802m3vsSt/dZkGwNLEKs86zeWvLarfN/pDDZcc6p6l9Ivv3uBw9kOtae3DUnddDz9Pe64T3NZ8a316/RX/ugE00I7r3ofDA5KDc4JKQ+tAPh8fC5o+ij3GFU47LnVCN2BZpFrUn2unkgRiPU9TY4NOBZyLjIuNPJsSdTU1MSMo6dzE5MyUl9VJa6vmM9AsZtzJvXrh/8VbW3ezCS08vP71Se/XVtbac9tz26+03PuR9yR++OXBr8PbUnW93pwom783cnyocL5p4MPywv3jgUXdJW2nD45qyx08Kyy9VpD6NrPSvcqo2q9n6TPY58fnii09/NdY+qkt7GVhv3aDWKNjIaOp+9ag5vsWxVax16HVx2/E329sJ7b1vr73z7VDpWOls7kp7v69bpnv2Q3lPdK9ZH09f38fbn4L6tQcwA42fz3/ZPyg1ODFUPhw1snOUd7R37MY4dUJ1YvVrw2TqlNO0+PTEt+KZ8FmTOeJc1/e8edqC5g/0j5eLKT+dlsSWvi6XrkSumjJIDAYAnETCUEfR2uhyzHGsHraaKQp3itmYuZYllvU0Wzx+J76JPZGQyJHEuYezlSuZmMqdxpPGa8P7lpTBl0G+wJ8lkC2YveGSkLNQr/BVkWuUHNGcjTli18VvSORJ5kvdlL4lc1vWR3Zs0x25Avl7CvcVC5WKNj9QfqhSvOWRaqlaqXqpRpjGD81yrXLtiq1PdSp1T+iu6lVvq9F/ZvDc8IVRzHbM9lrjOpOXO+pNG3Y2miWY481f7Wre3bKn1SLZktOyzeqNdbvN270dthl2JLtO+y6H947dTtnOgs49+3r3f3T5dOCTa85B0YMDbp/dv3gMeuZ7Sa4liO+Y312qHHXi/6XI7N8pUnZE48ji0Z/HlsKXj6+cWI1gREE06u8kwZ3BxTHHNcTvTGA7i0/EJ7Gf40jmTOH6O0tImXwXyL+yZMOfWZI7cN3thlieeL7kTcn1NCmQuyd/X+GPLFEp2VKq+li9TP2JRrlmhfZT7cqtVbrVun/kyPY645fG9SYNOxpNm8xehbZsbN392qLN4o1l+/F3sh22nXZd0d2KHxx7YvtUPsb1qw6c/eI+pD2cMuoz7vuVOkX7Fj/nOH9uMWHFisEAWDv7AACY1AAyNgHYZgFY5wLEbgKQcgEg3QKwYAew0QQUVhhQOnRAduqsnx+AACcIgQIYgAMEQTIUwQ+EgpghYcgtpAUZRnGgTFBRqErUMloHHYWuQy9jRDEOmHzMd6wx9hS2EDvFZMKUwzSE48U54yqZccyazDHM4yxaLDSWGlZ51kjWMjYCWxTbezwPPgA/wr6d/SR7P8GV8JwDzeHJMcFpyZnBucIVxzVD1CLmcatz53FP8bjwLPD68JaSNpFe8nmSceQ7/BL8h/nnBC4LmgjObrgmJC4ULowIl4j4UkQp3aLnN27cGCnGIdYqniKxV1JAckDqrrSh9G0ZA1ku2f5NxXKn5Z0VVBTxisNKf23OVY5Wcd9ioiqnxq22rD6kkalJ0KzRKtLO2Xpe54xuhN7hbYf0qQY+ht5G3tv9jANMgnccM43Zec4s2/z2rrLdDXt6LL5Z4ayFbTT2WtvS7ZLs7zu8dpx1Ju/T3e/pknygwnXEjc/dxOOIZ4EP2dfCL55aG4Ci6dOjDr0IYgo2C0kNEz9CO/o0nPW444mCCEaUTQzqlHPs4zPccYfi2xLTkxaTXVLq0hTPZ2UGXficZZ1de+X+NYmcy9f58jlvJt0m3Dl3L7NQqOjGQ/kSo9K2Mtcn3yr5qgpqDF4E13LUFdTvbIpvlm9pex3aXveO3inYVd8j2dv1Mb5f70vBkPuIyGj3V9sp0nTnTNacy8LEYslSBIPMYAAACliBD2RAD+whBNKhDPoQHKKEuCBJSDUyi5JFuaCyUG/RHOhd6LPoZgw7Zg8mHfMBS8H6YIuwP5gMmc4xvcdJ4EJwL5iJzO7MZSxsLM4s91kxrPtZH7GxsrmxVeN58XR8M7sseyL7BMGcUMjBzkHj6ODcxnmDi8AVyvWBaEx8wE3hTuVe5Qni+crryztGopJm+IL55slH+RH+swICAncENQXrNthuGBWKFOYXLhWxFBmjxIpKitZvDBDjE6sSd5PASzyTDJASkXojHSdjILMiW7EpXE5HbkG+WuGMoo2SqNLU5mrlFBXfLUaqwqpLau/Un2hc1ozS8tK226qjo6grqkfchtFH688YfDOcMhrfPmQ8azK+4/tOlBmPOd+uzbt19+yxsLL0szpinW3zcO8r2w92yw48jopOu50P7bu4v9Zl2JXloJKbt3uWR7XntLeMj4dvpt87f8GAvbRs+kigdFBocEOo0OGgsMajYseSwsdOOETUR6lF58UQTyWdJp7JiCcnZCeqJrUke6T8TEtMV88YvHAly/fS3isy17A5E9ef55XcvHg79q7bPedC4wcaxVtKFB7LP5GukKiUrlZ6pvdiR63lS2rDoaaU5mutT9v62hkdIl063e49CX3lnyY+8w8aDEeO3hr/Mikw7TlzZW5oQXoxYKl0FWEwAIAJOEEIDMABkqEI3qzbX3e/ph7DgXHAfMcaY7N+eV/FOTOLMMcwj7PYsNSwyrNeYiOwRbEt4APwI+zuBFfCZw5PjgnOIM4VrjgiiZjHrc7dyOPCs8Cb/Lfp3fxzvzxbCCPCJb8sW65J/uU4VMbgT8O/Bf/y+0azRqvot93fcv/d7X9S69XvQ/a1+Kfa0O5/uo2+86fcs8q/5WYwrdu9rLmu90baut8C4rrg4rJ1wxUn1xQ/61533DDaFP/qr+aMlrbXoW+E2uve0TuKOmO76rtDeyR7/fqMPsb36w2c/nzwS8Hg/FD7iMio35jpuPQE7qvtZP5U7LTXtx0zsrNss5Nzr78Xz2cs2CxM/IhZNPgp9XNoKWKZvHxlhWslZmVh9QYjgcEAWJuXAACA1ZBGpQVSzA2N/stw978uf2rI+jsQAMB7BOy1BgAiAGwAQ6ABFWgQCBQwB0MwAlib1QAAmDgBLtkBAFT/OBb5z+cGe4QFAwAY0uhHAn28vIMp+nQ61YNiSPOnhwR7BMpRTAPcFOQoykpK6gAA/webaQNyG2W/uAAAAClJREFUGJVjPHPmDAMqMDY2RhNhYiACDEZFjP///0cTOnv27MC6iXqKAKr3CHhmo7+yAAAAAElFTkSuQmCCu;23;Resources/selection.png5478;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAIAAADHFsdbAAAPTmlDQ1BJQ0MgUHJvZmlsZQAAeAGtmHk4lN3/x89sDMZgrNlmrMkWsu/7Tva1bDNjN8YYRGRJaVHhIVFTESlLthKRlKjQIqRQKh4taEEi2+8enp7n+v6+13P9/vmd65r7vM7nvD+fz7nvc1/nzLkB4CEEUqmRcABAFIVOc7EyJXh5+xBYXwEUwABeoAPkAomxVBMnJ3tI8i9l8QWAMbsGlJix/kX0b2YsDUoIAEwREvCFbLExk4O22I3JCXQqHdKEMpkYGkiCOBliRZqbixnEVyDGhmxxM5ODtvghk+OJIUzflwCw4CikMAoArDMQG5LIsUSom5mXRIolRkGcAwDcNCoqGorPPQjZ5YhUGuTLvQqxNPO5QDVUghEA6PZCMUb/sUUsAVB7FACJ+X9s0iMA8HcDUOn5j23eZfNZwQSexgbvUtsMB8OYAoB6s7ExLwuNLQ+AtdyNjZXSjY21SwAgxgDoiCTG0eI3tdCNwB4D8H+1t+75Lw8ENDnMCcaDKDAB84fNwosQ3kh5lAALgpUPbcBGZr/IMctpij3HtcoTjZvmC+SfFQwWmhdOFEWK5eNFCBcklaVaZYxkO+VsdrQrWCm2KuN3Fqoi1Pbteq6hqcnQmtcx1y3Q+2xgaJhgdMMEZmps5md+2qLX8os1h428raUd0T7VodCxZfc7Z7jLdld7twj3wx4lnne8hr3nfbftUd1r5hfonxyQF1gedJPYSxohTwevhLKF8YaLRkhEykbtpKhFa1O1YnRoarEK9B1xEvFCCXz72PetJX5JGt3/KPlmytUD+ampaeHpDhmaB/GZ7JnfDvUfvpGVf+TgUdIxi+NS2fDsTycmT67kiOZq5u3+wy8/ruDY6erC1jP9RWPFX8+xMYTOS1/QuGhZ4lbqdym0LKF8/+Wsipwrx6+eqsytyqvOq2FcK6rNq8uuz2zY3xh3PeYGscnjpn2zcYvaLalWXOt628ztkfb2O3Udp+8euBfS6Xpfv0u2m6d7+cH4w9ZH5T3Heul9no+VHi8+qXq69xn3s87+6Of450MDGYM7B98MZb/QezE9XPTS9uXKq4oRr1H20ZYx8mv+131vEsd3jL99m/PO+N3c+4oJn0nsZPefB6Y0pmY+lH8kfZL6NPq5eNpvRmpmcrb6S8JXs2/Ybx+/N8/lzEcvOP/QWVT4qbCktGz0K3Slcg273ryxAc0/N9AGdHAPRoAdgW3A8xCaiBnkbdQ5llOsp9E1bAMcCIwdZy72LbcBz1leFr4I/seC2kI1wsIiyaIT4sb4yxKckqFSfTIqslnbx3bIydMUOpX4lN12FqiMqUnt8lK/pDGiBbR1deJ1S/Qe6s8ZShg5GYeY5JnWmj00n7BYtxK21rJxsiXb0e3THLIdL+xucOpw7nV54TrlNue+6LHuxemN8+H1Fd0jsVfUT8RfJEAkEB8kTOQn8ZLZgkHwcsiX0PdhL8P7Itoiq6MYlJPRadTYmBCac6w5XTVOPB4Tv5wwue954u2kiv0FyYdSwg7sSbVMU00XzkBkzB4cyxw6NH74W9bqUdQx9uM82WInFE9qnDLMMc61yfP9IzCfVEA9vb/w0JnjRaeKL54tOVfLaD3fdeHJxRclr0snLs2U/bqMqEBfwV4VqpSrUq82qLG55lLrVUeuj2tIbsy8fvJGcVPVzdvN91r6br1vnWpbbEffwXWI3pW/p9fpfJ/cRetOfrD/IfGRWY9Ez1pvf9+1x1lPiE+Nngk8+9jf+ZwxQB00HxIe+vqiY7jwZfgrwxHcyOvR+rGs1/5v1MdZx9+/vf7u+PvACa1JzOTHP7unyj+kf9z7Sf8zYRo1PTvTN9v0pfRr9rd930PnfOadFmx+mCzq/tRY0ljW/qW/YrBquea0Hrhhuzn/WKACiKACLMNcYS1wBfhVhBqiC0lCcaLus6SymqDZ0e/Y2tiLOdIwFE4Sdg+XB7c7jwvOi3cvtCKECyQKZgnlbmMIN4jcFe0WGxb/jP9OWJKESXFIo2VwslzbMXLCO9jkkQowhXnFGaUx5Uc7m1QYqmlq5F1m6soaaI33mh1aJdqZOiRdUz0RvR/6QwZNhvlGFGNrEwVTmOmYWZv5OYsES0crJWsO6ymbDtsiO6q9pYOow6Jj7+6LTvucbV2kXRZdH7mdd4/xMPXEeU56NXqn+bj6ivl+2HN9b7qfsz/e/2NAXWBikAWRi/iKdIkcGawa/COkJTQ1zDGcN3w4ghEZFiUf9Y3SHH2Aah+DixmhlcdS6IZxbHGD8aUJlH3aicjE/iTG/qhkgxTOlLEDValJaS7pkukLGQ8PnsuMP2R1WPTwQlbfkdKjicdcjstD68rIicaTBaeic6xzCbnLeS/+aM4vKKCdti3cfgZ5ZrzodvH5s3HnPBka5/kugIvwEkwp7hJfmWC5yGV8Bf6KCPQ28VfxVfPW8F3jrxWqE6kXaeBvFLyOvyHXpHRTqVm9xfSWc2tgW+ztw+2MOw86xu+udErft+1K6q5/8OmRdE9Ab2nf0hPXp3X93M8TBuaHjg7zvmwciRnb9XptfOU9ctJqquqT7ozu1xPzzcu1zPnf2vuYewKLJgBn/AHwFgPA2QqAbH0AtmtDe1UAAE6cALjpALgyH4D9uAdgpqfA7/1jG9AFPiAZMMBdaB9BwuRg9jAqLB/WAhuHs8CV4e7wFHg5/Bl8GSGFcEakICoRr5BopDYyFFmMfIJCoLRRUahLqFEWfhYnluMsD1jRrFash1gfoDnRHuhi9ASbEhud7T47PzuJvZGDlcOfoxmDw0RhHnLKcB7nnMd6Ym9xyXAxuDHc+7m/8VB4ZnFRuG+8dN5lvoP8GP4cAUGBMkFlwVtCdkLj2+KF2YXLRExEXolSxXjFWsS9xVfxZYTdhHWJSsm9UjipLukUGW2Zn7It21PlLHdw7HglX6aQqGirJKeMUh7f2aVyRfWYWsIusvoeDVfN3VoW2pY6NrqOegH6YQYJhhlGJcYtJmOmX8xxFjqWIVZ51pU25bY5dun2SQ5Ux/jdMU4xzmQXimu0W6p7tscJz0Kva973fPp9p/Zs+In7GwR4BmYElRIfkRHBqiGk0OKwgQgQaRp1hPKMKhITRrsRux4XEN+0jzORkvQsWSPlUipP2oH0jYORmbOHo7JmjoYe+5pNPbF0KjNXLq8h365gqPBAkdVZN0bkhUMlNy89vYy8ol0ZU11+baJ+W2PwjfM3P9zSb4ttf3qXszOw6+ZDWI9334Un0/0GA0eHWl/iRpzH0t/cfzs3Ifin9QeXT/HTB2ZTvsZ995nHL0wtFi0pLlessK26rPmtp22uH6ogGJwGXeA7TBxmA6PDLsB6YItwAtwengSvgA8iENB6EojIQ3QhlpFKyADkaeRjFCvKFJWCakP9YtFhSWS5zQpYzVmPsj5Hi6JD0c1sbGw+bFVs6+ye7PUcHBxkjrsYGUw65j2nHectLAGbhV3kCuN6ze3M3cWjy3Mbp4G7wavHe5fPmq+f35d/SiBOkFXwvJC20IttVGEO4UoRB5EF0WIxQ7Fp8fN4O/wSoU4iXBIvOSpVIh0ks11mRrZue5rc7h1iO37KP1G4rHhEKVjZaqeKirAqi+qC2sSu5+qdGh2a17UatRt1GnRb9Nr1uw0GDd8afTZBmmLNtpsbWuyxTLIqtK6xabCttKuyr3VocXywu99p2Hnc5bsbzF3cQ8lT28vdm+5z1Ld0z5297/xZAsQD7YLCiSdIjeSxENZQzbDg8KKIe5FzFPloIpUR8zgW0PXi4uPrE+YStZNi9tck/zxglHo4rTeD86BjZsmhuSzlI8eODh8Xz6ad6D1FyInNvfcHV35Qwb1CiTPFxcZnpxnFF/xL+EsHyrIvO1yRvvqhqrYmuzagXqtR9PpC01hzy63rbYz29A7SPd/7+t3qDwk9vH2cj5eejvd3DTQNXRk+/ipy1Pa14bjA27n3g5M1UxkfPT6LT0/Ptn7N+u4wj13oWSxYcvjFudK2Rtmcfx2QAG6ABdguWAysAbYA14Dvg99GwBFWiBOIF0g8MhLZjGJBeaKuolZYHFnKWTZYvVjr0NzoWPRzNnU2BjsrO419nMON4z7GANPMqcjZiFXH3uQy4+rl9uOe5zmGU8T18cbzCfH18KcIqAi8EywUctnGt21YuEDEW1RKdE7slngunkjYJcEhMSPZLVUmnSUTLeu73V7OcIeyvIKCpKKUkriy3E4lFS1VazXfXdHqpzQqNJ9q/dTB61rpxerXGEwZiRvvMTlrOm6uaJFqOWgtbEO3HbCXcTjpOOPk4lztus0txf2jp41Xi4+kb95etF+S/3xgcNAIyZX8NMQx9E64eUR7lDGliWoc0xFrRH8Q75gwkOif9Dk5MWUpNStdJKMh0+rQ0yzikeVj57LVTgyeouVi8m7luxSsFZ4rwhXHnx1lOJ2/e1Gz5Ool8bLSy7IVlVeVKxurtWraao3ruhpsGt/doDUtNie1rLX+cVum/UqH/N3qTuX7td0qD6ofYXuy+zge055MPHPurxvADkYOPRqWeZn26sWo0JjX6zNvht/yv3N5nzVxbbLzz9GpjY/8n6Q+S05LzOBnxb5s+7L29c239u+MudB51fn5hfofUYuExaGfcUuYpbJl9eU7v+x+9azorFxZFVxNXn24xr8WtHZtbWXdaj1n/dWG1EbkRhNz/rfOS8z9A7CbRUdG0wj2Zuabzf+/S1RkHHQm2yw46IqhBDnuhmomf6TSndygWgD6/YqNd7WAam7oOMQdHGZp8xcTSIHmdhCLQnaVpFAzR4gxENsH0yxdIIZ8YV7hgbZOEGMhppAp7q4QQ/FhydTIzTMuk09S6aZMvRDEF8mxFr81zUmhbp5/+fbQ4lzcIZaGNC8jou2YemauVRLZ/K+xwdGUSEd7yA7lhQuF0W2Y4+eDWBlYgkBAAyGADJSAPTAD5n9dCZCdALWjoV4yiIV0k5u63yqPzXbY//JSglZmZrz4TZ8IMAVxlH9YBg2K9Z/RiVDkOBAJ6eIATaVK5ZPK6t8aZtbIzcy/vez+y7IVbWuEW9owQIJUv+3M+Jt2ZvaohuD4M9GJuh6hSFmkGlIDaYo0QBoidQABKYAUBkpIdejfgQnSCKkH9ek8mbk58/dYtp5P0N/3afd7zNDIKX9b/ysrCIO+Y2ye36EnDVig9+McdCYHoLOe+YngPwudvA862wNgFk1NpIWFhNIJJtDXC7IiwYZCVFYkqKmo6ID/Af9GTe47ptE5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAUklEQVQIHVWMsRGAQBACGXITExuyMMv7ov5A7nXGMTrYA3Beg8e+URZVpmQaZlV8tPxpA6xZtPHnyXS29HSQ3Fx90Yv3Pzq95ujN3n7zjm+eewN3s15bSuoFLgAAAABJRU5ErkJggg==e; ADDED Site/Site/Frameworks/BlendKit/CommonJS.environment/BlendKit.sj Index: Site/Site/Frameworks/BlendKit/CommonJS.environment/BlendKit.sj ================================================================== --- Site/Site/Frameworks/BlendKit/CommonJS.environment/BlendKit.sj +++ Site/Site/Frameworks/BlendKit/CommonJS.environment/BlendKit.sj @@ -0,0 +1,561 @@ +@STATIC;1.0;p;22;BKShowcaseController.jt;15395;@STATIC;1.0;I;16;AppKit/CPTheme.jI;15;AppKit/CPView.jt;15334; +objj_executeFile("AppKit/CPTheme.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +var _1=176; +var _2="BKLearnMoreToolbarItemIdentifier",_3="BKStateToolbarItemIdentifier",_4="BKBackgroundColorToolbarItemIdentifier"; +var _5=objj_allocateClassPair(CPObject,"BKShowcaseController"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_themeDescriptorClasses"),new objj_ivar("_themesCollectionView"),new objj_ivar("_themedObjectsCollectionView"),new objj_ivar("theWindow")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("applicationDidFinishLaunching:"),function(_7,_8,_9){ +with(_7){ +_themeDescriptorClasses=objj_msgSend(BKThemeDescriptor,"allThemeDescriptorClasses"); +theWindow=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",CGRectMakeZero(),CPBorderlessBridgeWindowMask); +var _a=objj_msgSend(objj_msgSend(CPToolbar,"alloc"),"initWithIdentifier:","Toolbar"); +objj_msgSend(_a,"setDelegate:",_7); +objj_msgSend(theWindow,"setToolbar:",_a); +var _b=objj_msgSend(theWindow,"contentView"),_c=objj_msgSend(_b,"bounds"),_d=objj_msgSend(objj_msgSend(CPSplitView,"alloc"),"initWithFrame:",_c); +objj_msgSend(_d,"setIsPaneSplitter:",YES); +objj_msgSend(_d,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_b,"addSubview:",_d); +var _e=objj_msgSend(CPTextField,"labelWithTitle:","THEMES"); +objj_msgSend(_e,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",11)); +objj_msgSend(_e,"setTextColor:",objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",93/255,93/255,93/255,1)); +objj_msgSend(_e,"setTextShadowColor:",objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",225/255,255/255,255/255,0.7)); +objj_msgSend(_e,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_e,"sizeToFit"); +objj_msgSend(_e,"setFrameOrigin:",CGPointMake(5,4)); +var _f=objj_msgSend(objj_msgSend(CPCollectionViewItem,"alloc"),"init"); +objj_msgSend(_f,"setView:",objj_msgSend(objj_msgSend(BKThemeDescriptorCell,"alloc"),"init")); +_themesCollectionView=objj_msgSend(objj_msgSend(CPCollectionView,"alloc"),"initWithFrame:",CGRectMake(0,0,_1,CGRectGetHeight(_c))); +objj_msgSend(_themesCollectionView,"setDelegate:",_7); +objj_msgSend(_themesCollectionView,"setItemPrototype:",_f); +objj_msgSend(_themesCollectionView,"setMinItemSize:",CGSizeMake(20,36)); +objj_msgSend(_themesCollectionView,"setMaxItemSize:",CGSizeMake(10000000,36)); +objj_msgSend(_themesCollectionView,"setMaxNumberOfColumns:",1); +objj_msgSend(_themesCollectionView,"setContent:",_themeDescriptorClasses); +objj_msgSend(_themesCollectionView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_themesCollectionView,"setVerticalMargin:",0); +objj_msgSend(_themesCollectionView,"setSelectable:",YES); +objj_msgSend(_themesCollectionView,"setFrameOrigin:",CGPointMake(0,20)); +objj_msgSend(_themesCollectionView,"setAutoresizingMask:",CPViewWidthSizable); +var _10=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",CGRectMake(0,0,_1,CGRectGetHeight(_c))),_b=objj_msgSend(_10,"contentView"); +objj_msgSend(_10,"setAutohidesScrollers:",YES); +objj_msgSend(_10,"setDocumentView:",_themesCollectionView); +objj_msgSend(_b,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",212/255,221/255,230/255,1)); +objj_msgSend(_b,"addSubview:",_e); +objj_msgSend(_d,"addSubview:",_10); +_themedObjectsCollectionView=objj_msgSend(objj_msgSend(CPCollectionView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_c)-_1-1,10)); +var _11=objj_msgSend(objj_msgSend(CPCollectionViewItem,"alloc"),"init"); +objj_msgSend(_11,"setView:",objj_msgSend(objj_msgSend(BKShowcaseCell,"alloc"),"init")); +objj_msgSend(_themedObjectsCollectionView,"setItemPrototype:",_11); +objj_msgSend(_themedObjectsCollectionView,"setVerticalMargin:",20); +objj_msgSend(_themedObjectsCollectionView,"setAutoresizingMask:",CPViewWidthSizable); +var _10=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",CGRectMake(_1+1,0,CGRectGetWidth(_c)-_1-1,CGRectGetHeight(_c))); +objj_msgSend(_10,"setHasHorizontalScroller:",NO); +objj_msgSend(_10,"setAutohidesScrollers:",YES); +objj_msgSend(_10,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_10,"setDocumentView:",_themedObjectsCollectionView); +objj_msgSend(_d,"addSubview:",_10); +objj_msgSend(_themesCollectionView,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",0)); +objj_msgSend(theWindow,"setFullPlatformWindow:",YES); +objj_msgSend(theWindow,"makeKeyAndOrderFront:",_7); +} +}),new objj_method(sel_getUid("collectionViewDidChangeSelection:"),function(_12,_13,_14){ +with(_12){ +var _15=_themeDescriptorClasses[objj_msgSend(objj_msgSend(_14,"selectionIndexes"),"firstIndex")],_16=objj_msgSend(_15,"itemSize"); +_16.width=MAX(100,_16.width+20); +_16.height=MAX(100,_16.height+30); +objj_msgSend(_themedObjectsCollectionView,"setMinItemSize:",_16); +objj_msgSend(_themedObjectsCollectionView,"setMaxItemSize:",_16); +objj_msgSend(_themedObjectsCollectionView,"setContent:",objj_msgSend(_15,"themedShowcaseObjectTemplates")); +objj_msgSend(BKShowcaseCell,"setBackgroundColor:",objj_msgSend(_15,"showcaseBackgroundColor")); +} +}),new objj_method(sel_getUid("hasLearnMoreURL"),function(_17,_18){ +with(_17){ +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","BKLearnMoreURL"); +} +}),new objj_method(sel_getUid("toolbarAllowedItemIdentifiers:"),function(_19,_1a,_1b){ +with(_19){ +return [_2,CPToolbarSpaceItemIdentifier,CPToolbarFlexibleSpaceItemIdentifier,_4,_3]; +} +}),new objj_method(sel_getUid("toolbarDefaultItemIdentifiers:"),function(_1c,_1d,_1e){ +with(_1c){ +var _1f=[CPToolbarFlexibleSpaceItemIdentifier,_4,_3]; +if(objj_msgSend(_1c,"hasLearnMoreURL")){ +_1f=[_2].concat(_1f); +} +return _1f; +} +}),new objj_method(sel_getUid("toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:"),function(_20,_21,_22,_23,_24){ +with(_20){ +var _25=objj_msgSend(objj_msgSend(CPToolbarItem,"alloc"),"initWithItemIdentifier:",_23); +objj_msgSend(_25,"setTarget:",_20); +if(_23===_3){ +var _26=objj_msgSend(CPPopUpButton,"buttonWithTitle:","Enabled"); +objj_msgSend(_26,"addItemWithTitle:","Disabled"); +objj_msgSend(_25,"setView:",_26); +objj_msgSend(_25,"setTarget:",nil); +objj_msgSend(_25,"setAction:",sel_getUid("changeState:")); +objj_msgSend(_25,"setLabel:","State"); +var _27=CGRectGetWidth(objj_msgSend(_26,"frame")); +objj_msgSend(_25,"setMinSize:",CGSizeMake(_27+20,24)); +objj_msgSend(_25,"setMaxSize:",CGSizeMake(_27+20,24)); +}else{ +if(_23===_4){ +var _26=objj_msgSend(CPPopUpButton,"buttonWithTitle:","Window Background"); +objj_msgSend(_26,"addItemWithTitle:","Light Checkers"); +objj_msgSend(_26,"addItemWithTitle:","Dark Checkers"); +objj_msgSend(_26,"addItemWithTitle:","White"); +objj_msgSend(_26,"addItemWithTitle:","Black"); +objj_msgSend(_26,"addItemWithTitle:","More Choices..."); +var _28=objj_msgSend(_26,"itemArray"); +objj_msgSend(_28[0],"setRepresentedObject:",objj_msgSend(BKThemeDescriptor,"windowBackgroundColor")); +objj_msgSend(_28[1],"setRepresentedObject:",objj_msgSend(BKThemeDescriptor,"lightCheckersColor")); +objj_msgSend(_28[2],"setRepresentedObject:",objj_msgSend(BKThemeDescriptor,"darkCheckersColor")); +objj_msgSend(_28[3],"setRepresentedObject:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_28[4],"setRepresentedObject:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_25,"setView:",_26); +objj_msgSend(_25,"setTarget:",nil); +objj_msgSend(_25,"setAction:",sel_getUid("changeColor:")); +objj_msgSend(_25,"setLabel:","Background Color"); +var _27=CGRectGetWidth(objj_msgSend(_26,"frame")); +objj_msgSend(_25,"setMinSize:",CGSizeMake(_27,24)); +objj_msgSend(_25,"setMaxSize:",CGSizeMake(_27,24)); +}else{ +if(_23===_2){ +var _29=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","BKLearnMoreButtonTitle"); +if(!_29){ +_29=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPBundleName")||"Home Page"; +} +var _2a=objj_msgSend(CPButton,"buttonWithTitle:",_29); +objj_msgSend(theWindow,"setDefaultButton:",_2a); +objj_msgSend(_25,"setView:",_2a); +objj_msgSend(_25,"setLabel:","Learn More"); +objj_msgSend(_25,"setTarget:",nil); +objj_msgSend(_25,"setAction:",sel_getUid("learnMore:")); +var _27=CGRectGetWidth(objj_msgSend(_2a,"frame")); +objj_msgSend(_25,"setMinSize:",CGSizeMake(_27,24)); +objj_msgSend(_25,"setMaxSize:",CGSizeMake(_27,24)); +} +} +} +return _25; +} +}),new objj_method(sel_getUid("learnMore:"),function(_2b,_2c,_2d){ +with(_2b){ +window.location.href=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","BKLearnMoreURL"); +} +}),new objj_method(sel_getUid("selectedThemeDescriptor"),function(_2e,_2f){ +with(_2e){ +return _themeDescriptorClasses[objj_msgSend(objj_msgSend(_themesCollectionView,"selectionIndexes"),"firstIndex")]; +} +}),new objj_method(sel_getUid("changeState:"),function(_30,_31,_32){ +with(_30){ +var _33=objj_msgSend(objj_msgSend(_30,"selectedThemeDescriptor"),"themedShowcaseObjectTemplates"),_34=objj_msgSend(_33,"count"); +while(_34--){ +var _35=objj_msgSend(_33[_34],"valueForKey:","themedObject"); +if(objj_msgSend(_35,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_35,"setEnabled:",objj_msgSend(_32,"title")==="Enabled"?YES:NO); +} +} +} +}),new objj_method(sel_getUid("changeColor:"),function(_36,_37,_38){ +with(_36){ +var _39=nil; +if(objj_msgSend(_38,"isKindOfClass:",objj_msgSend(CPColorPanel,"class"))){ +_39=objj_msgSend(_38,"color"); +}else{ +if(objj_msgSend(_38,"titleOfSelectedItem")==="More Choices..."){ +objj_msgSend(_38,"addItemWithTitle:","Other"); +objj_msgSend(_38,"selectItemWithTitle:","Other"); +objj_msgSend(CPApp,"orderFrontColorPanel:",_36); +}else{ +_39=objj_msgSend(objj_msgSend(_38,"selectedItem"),"representedObject"); +objj_msgSend(_38,"removeItemWithTitle:","Other"); +} +} +if(_39){ +objj_msgSend(objj_msgSend(_36,"selectedThemeDescriptor"),"setShowcaseBackgroundColor:",_39); +objj_msgSend(BKShowcaseCell,"setBackgroundColor:",_39); +} +} +})]); +var _3a=nil; +var _5=objj_allocateClassPair(CPView,"BKThemeDescriptorCell"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_label")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setRepresentedObject:"),function(_3b,_3c,_3d){ +with(_3b){ +if(!_label){ +_label=objj_msgSend(CPTextField,"labelWithTitle:","hello"); +objj_msgSend(_label,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_label,"setFrame:",CGRectMake(10,0,CGRectGetWidth(objj_msgSend(_3b,"bounds"))-20,CGRectGetHeight(objj_msgSend(_3b,"bounds")))); +objj_msgSend(_label,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_label,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_3b,"addSubview:",_label); +} +objj_msgSend(_label,"setStringValue:",objj_msgSend(_3d,"themeName")+" ("+objj_msgSend(objj_msgSend(_3d,"themedShowcaseObjectTemplates"),"count")+")"); +} +}),new objj_method(sel_getUid("setSelected:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(_3e,"setBackgroundColor:",_40?objj_msgSend(objj_msgSend(_3e,"class"),"selectionColor"):nil); +objj_msgSend(_label,"setTextShadowOffset:",_40?CGSizeMake(0,1):CGSizeMakeZero()); +objj_msgSend(_label,"setTextShadowColor:",_40?objj_msgSend(CPColor,"blackColor"):nil); +objj_msgSend(_label,"setFont:",_40?objj_msgSend(CPFont,"boldSystemFontOfSize:",11):objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_label,"setTextColor:",_40?objj_msgSend(CPColor,"whiteColor"):objj_msgSend(CPColor,"blackColor")); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("selectionColor"),function(_41,_42){ +with(_41){ +if(!_3a){ +_3a=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(BKThemeDescriptorCell,"class")),"pathForResource:","selection.png"),CGSizeMake(1,36))); +} +return _3a; +} +})]); +var _43=nil; +var _44="BKShowcaseCellBackgroundColorDidChangeNotification"; +var _5=objj_allocateClassPair(CPView,"BKShowcaseCell"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_backgroundView"),new objj_ivar("_view"),new objj_ivar("_label")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("init"),function(_45,_46){ +with(_45){ +_45=objj_msgSendSuper({receiver:_45,super_class:objj_getClass("BKShowcaseCell").super_class},"init"); +if(_45){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_45,sel_getUid("showcaseBackgroundDidChange:"),_44,nil); +} +return _45; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_47,_48,_49){ +with(_47){ +_47=objj_msgSendSuper({receiver:_47,super_class:objj_getClass("BKShowcaseCell").super_class},"initWithCoder:",_49); +if(_47){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_47,sel_getUid("showcaseBackgroundDidChange:"),_44,nil); +} +return _47; +} +}),new objj_method(sel_getUid("showcaseBackgroundDidChange:"),function(_4a,_4b,_4c){ +with(_4a){ +objj_msgSend(_backgroundView,"setBackgroundColor:",objj_msgSend(BKShowcaseCell,"backgroundColor")); +} +}),new objj_method(sel_getUid("setSelected:"),function(_4d,_4e,_4f){ +with(_4d){ +} +}),new objj_method(sel_getUid("setRepresentedObject:"),function(_50,_51,_52){ +with(_50){ +if(!_label){ +_label=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_label,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_label,"setAutoresizingMask:",CPViewMinYMargin|CPViewWidthSizable); +objj_msgSend(_label,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",11)); +objj_msgSend(_50,"addSubview:",_label); +} +objj_msgSend(_label,"setStringValue:",objj_msgSend(_52,"valueForKey:","label")); +objj_msgSend(_label,"sizeToFit"); +objj_msgSend(_label,"setFrame:",CGRectMake(0,CGRectGetHeight(objj_msgSend(_50,"bounds"))-CGRectGetHeight(objj_msgSend(_label,"frame")),CGRectGetWidth(objj_msgSend(_50,"bounds")),CGRectGetHeight(objj_msgSend(_label,"frame")))); +if(!_backgroundView){ +_backgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_50,"addSubview:",_backgroundView); +} +objj_msgSend(_backgroundView,"setFrame:",CGRectMake(0,0,CGRectGetWidth(objj_msgSend(_50,"bounds")),CGRectGetMinY(objj_msgSend(_label,"frame")))); +objj_msgSend(_backgroundView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +if(_view){ +objj_msgSend(_view,"removeFromSuperview"); +} +_view=objj_msgSend(_52,"valueForKey:","themedObject"); +objj_msgSend(_view,"setTheme:",nil); +objj_msgSend(_view,"setAutoresizingMask:",CPViewMinXMargin|CPViewMaxXMargin|CPViewMinYMargin|CPViewMaxYMargin); +objj_msgSend(_view,"setFrameOrigin:",CGPointMake((CGRectGetWidth(objj_msgSend(_backgroundView,"bounds"))-CGRectGetWidth(objj_msgSend(_view,"frame")))/2,(CGRectGetHeight(objj_msgSend(_backgroundView,"bounds"))-CGRectGetHeight(objj_msgSend(_view,"frame")))/2)); +objj_msgSend(_backgroundView,"addSubview:",_view); +objj_msgSend(_backgroundView,"setBackgroundColor:",objj_msgSend(BKShowcaseCell,"backgroundColor")); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("setBackgroundColor:"),function(_53,_54,_55){ +with(_53){ +if(_43===_55){ +return; +} +_43=_55; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",_44,nil); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_56,_57){ +with(_56){ +return _43; +} +})]); +p;19;BKThemeDescriptor.jt;7386;@STATIC;1.0;I;21;Foundation/CPObject.jt;7341; +objj_executeFile("Foundation/CPObject.j",NO); +var _1={},_2={},_3={},_4={},_5=nil,_6=nil,_7=nil; +var _8=objj_allocateClassPair(CPObject,"BKThemeDescriptor"),_9=_8.isa; +objj_registerClassPair(_8); +class_addMethods(_9,[new objj_method(sel_getUid("allThemeDescriptorClasses"),function(_a,_b){ +with(_a){ +var _c=[]; +for(candidate in global){ +var _d=objj_getClass(candidate),_e=class_getName(_d); +if(_e==="BKThemeDescriptor"){ +continue; +} +var _f=_e.indexOf("ThemeDescriptor"); +if((_f>=0)&&(_f===_e.length-"ThemeDescriptor".length)){ +_c.push(_d); +} +} +objj_msgSend(_c,"sortUsingSelector:",sel_getUid("compare:")); +return _c; +} +}),new objj_method(sel_getUid("lightCheckersColor"),function(_10,_11){ +with(_10){ +if(!_5){ +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(BKThemeDescriptor,"class")),"pathForResource:","light-checkers.png"),CGSizeMake(12,12))); +} +return _5; +} +}),new objj_method(sel_getUid("darkCheckersColor"),function(_12,_13){ +with(_12){ +if(!_6){ +_6=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(BKThemeDescriptor,"class")),"pathForResource:","dark-checkers.png"),CGSizeMake(12,12))); +} +return _6; +} +}),new objj_method(sel_getUid("windowBackgroundColor"),function(_14,_15){ +with(_14){ +return objj_msgSend(_CPStandardWindowView,"bodyBackgroundColor"); +} +}),new objj_method(sel_getUid("defaultShowcaseBackgroundColor"),function(_16,_17){ +with(_16){ +return objj_msgSend(_CPStandardWindowView,"bodyBackgroundColor"); +} +}),new objj_method(sel_getUid("showcaseBackgroundColor"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_18,"className"); +if(!_4[_1a]){ +_4[_1a]=objj_msgSend(_18,"defaultShowcaseBackgroundColor"); +} +return _4[_1a]; +} +}),new objj_method(sel_getUid("setShowcaseBackgroundColor:"),function(_1b,_1c,_1d){ +with(_1b){ +_4[objj_msgSend(_1b,"className")]=_1d; +} +}),new objj_method(sel_getUid("itemSize"),function(_1e,_1f){ +with(_1e){ +var _20=objj_msgSend(_1e,"className"); +if(!_1[_20]){ +objj_msgSend(_1e,"calculateThemedObjectTemplates"); +} +return CGSizeMakeCopy(_1[_20]); +} +}),new objj_method(sel_getUid("themedObjectTemplates"),function(_21,_22){ +with(_21){ +var _23=objj_msgSend(_21,"className"); +if(!_2[_23]){ +objj_msgSend(_21,"calculateThemedObjectTemplates"); +} +return _2[_23]; +} +}),new objj_method(sel_getUid("themedShowcaseObjectTemplates"),function(_24,_25){ +with(_24){ +var _26=objj_msgSend(_24,"className"); +if(!_3[_26]){ +objj_msgSend(_24,"calculateThemedObjectTemplates"); +} +return _3[_26]; +} +}),new objj_method(sel_getUid("calculateThemedObjectTemplates"),function(_27,_28){ +with(_27){ +var _29=[],_2a=[],_2b=CGSizeMake(0,0),_2c=class_copyMethodList(objj_msgSend(_27,"class").isa),_2d=0,_2e=objj_msgSend(_2c,"count"),_2f=[]; +if(objj_msgSend(_27,"respondsToSelector:",sel_getUid("themeShowcaseExcludes"))){ +_2f=objj_msgSend(_27,"themeShowcaseExcludes"); +} +for(;_2d<_2f.length;++_2d){ +var _30=_2f[_2d].toLowerCase(); +if(_30&&_30.indexOf("themed")!==0){ +_2f[_2d]="themed"+_30; +}else{ +_2f[_2d]=_30; +} +} +for(_2d=0;_2d<_2e;++_2d){ +var _31=_2c[_2d],_32=method_getName(_31); +if(_32.indexOf("themed")!==0){ +continue; +} +var _33=method_getImplementation(_31),_34=_33(_27,_32); +if(!_34){ +continue; +} +var _35=objj_msgSend(objj_msgSend(BKThemedObjectTemplate,"alloc"),"init"),_36=objj_msgSend(_2f,"containsObject:",_32.toLowerCase()); +objj_msgSend(_35,"setValue:forKey:",_34,"themedObject"); +objj_msgSend(_35,"setValue:forKey:",BKLabelFromIdentifier(_32),"label"); +objj_msgSend(_29,"addObject:",_35); +if(!_36){ +if(objj_msgSend(_34,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +var _37=objj_msgSend(_34,"frame").size,_38=objj_msgSend(objj_msgSend(_35,"valueForKey:","label"),"sizeWithFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",12)).width+20; +if(_37.width>_2b.width){ +_2b.width=_37.width; +} +if(_38>_2b.width){ +_2b.width=_38; +} +if(_37.height>_2b.height){ +_2b.height=_37.height; +} +} +objj_msgSend(_2a,"addObject:",_35); +} +} +var _39=objj_msgSend(_27,"className"); +_1[_39]=_2b; +_2[_39]=_29; +_3[_39]=_2a; +} +}),new objj_method(sel_getUid("compare:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(objj_msgSend(_3a,"themeName"),"compare:",objj_msgSend(_3c,"themeName")); +} +}),new objj_method(sel_getUid("registerThemeValues:forView:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +for(var i=0;i<_3f.length;++i){ +var _41=_3f[i],_42=_41[0],_43=_41[1],_44=_41[2]; +if(_44){ +objj_msgSend(_40,"setValue:forThemeAttribute:inState:",_43,_42,_44); +}else{ +objj_msgSend(_40,"setValue:forThemeAttribute:",_43,_42); +} +} +} +}),new objj_method(sel_getUid("registerThemeValues:forView:inherit:"),function(_45,_46,_47,_48,_49){ +with(_45){ +if(_49){ +var _4a=objj_msgSend(_45,"themeName"),_4b=_4a.indexOf("-"); +if(_4b<0){ +objj_msgSend(_45,"registerThemeValues:forView:",_49,_48); +}else{ +var _4c=_4a.substr(_4b+1)+"/"; +for(var i=0;i<_49.length;++i){ +var _4d=_49[i],_4e=_4d[0],_4f=_4d[1],_50=_4d[2],_51=nil; +if(typeof (_4f)==="object"&&_4f.hasOwnProperty("isa")&&objj_msgSend(_4f,"isKindOfClass:",CPColor)&&(_51=objj_msgSend(_4f,"patternImage"))){ +if(objj_msgSend(_51,"isThreePartImage")||objj_msgSend(_51,"isNinePartImage")){ +var _52=objj_msgSend(_51,"imageSlices"),_53=[]; +for(var _54=0;_54<_52.length;++_54){ +var _55=_52[_54],_56=_4c+objj_msgSend(objj_msgSend(_55,"filename"),"lastPathComponent"),_57=objj_msgSend(_55,"size"); +_53.push([_56,_57.width,_57.height]); +} +if(objj_msgSend(_51,"isThreePartImage")){ +_4f=PatternColor(_53,objj_msgSend(_51,"isVertical")); +}else{ +_4f=PatternColor(_53); +} +}else{ +var _56=_4c+objj_msgSend(objj_msgSend(_51,"filename"),"lastPathComponent"),_57=objj_msgSend(_51,"size"); +_4f=PatternColor(_56,_57.width,_57.height); +} +} +if(_50){ +objj_msgSend(_48,"setValue:forThemeAttribute:inState:",_4f,_4e,_50); +}else{ +objj_msgSend(_48,"setValue:forThemeAttribute:",_4f,_4e); +} +} +} +} +if(_47){ +objj_msgSend(_45,"registerThemeValues:forView:",_47,_48); +} +} +})]); +BKLabelFromIdentifier=function(_58){ +var _59=_58.substr("themed".length),_5a=0,_5b=_59.length,_5c="",_5d=null,_5e=YES; +for(;_5a<_5b;++_5a){ +var _5f=_59.charAt(_5a),_60=/^[A-Z]/.test(_5f); +if(_60){ +if(!_5e){ +if(_5d===null){ +_5c+=" "+_5f.toLowerCase(); +}else{ +_5c+=_5f; +} +} +_5d=_5f; +}else{ +if(_5e&&_5d!==null){ +_5c+=_5d; +} +_5c+=_5f; +_5d=null; +_5e=NO; +} +} +return _5c; +}; +PatternIsVertical=YES,PatternIsHorizontal=NO; +PatternColor=function(){ +if(arguments.length<3){ +var _61=arguments[0],_62=[]; +for(var i=0;i<_61.length;++i){ +var _63=_61[i]; +_62.push(_63?objj_msgSend(_CPCibCustomResource,"imageResourceWithName:size:",_63[0],CGSizeMake(_63[1],_63[2])):nil); +} +if(arguments.length==2){ +return objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",_62,arguments[1])); +}else{ +return objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",_62)); +} +}else{ +if(arguments.length==3){ +return objj_msgSend(CPColor,"colorWithPatternImage:",PatternImage(arguments[0],arguments[1],arguments[2])); +}else{ +return nil; +} +} +}; +PatternImage=function(_64,_65,_66){ +return objj_msgSend(_CPCibCustomResource,"imageResourceWithName:size:",_64,CGSizeMake(_65,_66)); +}; +p;24;BKThemedObjectTemplate.jt;911;@STATIC;1.0;I;15;AppKit/CPView.jt;873; +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPView,"BKThemedObjectTemplate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_label"),new objj_ivar("_themedObject")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("BKThemedObjectTemplate").super_class},"init"); +if(_3){ +_label=objj_msgSend(_5,"decodeObjectForKey:","BKThemedObjectTemplateLabel"); +_themedObject=objj_msgSend(_5,"decodeObjectForKey:","BKThemedObjectTemplateThemedObject"); +} +return _3; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6,_7,_8){ +with(_6){ +objj_msgSend(_8,"encodeObject:forKey:",_label,"BKThemedObjectTemplateLabel"); +objj_msgSend(_8,"encodeObject:forKey:",_themedObject,"BKThemedObjectTemplateThemedObject"); +} +})]); +p;17;BKThemeTemplate.jt;873;@STATIC;1.0;I;21;Foundation/CPObject.jt;829; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"BKThemeTemplate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_name"),new objj_ivar("_description")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("BKThemeTemplate").super_class},"init"); +if(_3){ +_name=objj_msgSend(_5,"decodeObjectForKey:","BKThemeTemplateName"); +_description=objj_msgSend(_5,"decodeObjectForKey:","BKThemeTemplateDescription"); +} +return _3; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6,_7,_8){ +with(_6){ +objj_msgSend(_8,"encodeObject:forKey:",_name,"BKThemeTemplateName"); +objj_msgSend(_8,"encodeObject:forKey:",_description,"BKThemeTemplateDescription"); +} +})]); +p;10;BlendKit.jt;307;@STATIC;1.0;i;22;BKShowcaseController.ji;19;BKThemeDescriptor.ji;17;BKThemeTemplate.ji;24;BKThemedObjectTemplate.jt;187; +objj_executeFile("BKShowcaseController.j",YES); +objj_executeFile("BKThemeDescriptor.j",YES); +objj_executeFile("BKThemeTemplate.j",YES); +objj_executeFile("BKThemedObjectTemplate.j",YES); +e; ADDED Site/Site/Frameworks/BlendKit/Info.plist Index: Site/Site/Frameworks/BlendKit/Info.plist ================================================================== --- Site/Site/Frameworks/BlendKit/Info.plist +++ Site/Site/Frameworks/BlendKit/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;18;CPBundleIdentifierS;17;com.280n.BlendKitK;29;CPBundleInfoDictionaryVersiond;1;6K;12;CPBundleNameS;8;BlendKitK;19;CPBundlePackageTypeS;4;FMWKK;15;CPBundleVersionS;5;0.8.1K;20;CPBundleEnvironmentsA;S;7;BrowserS;8;CommonJSE;K;18;CPBundleExecutableS;11;BlendKit.sjK;36;CPBundleEnvironmentsWithImageSpritesA;S;7;BrowserE;E; ADDED Site/Site/Frameworks/BlendKit/LICENSE Index: Site/Site/Frameworks/BlendKit/LICENSE ================================================================== --- Site/Site/Frameworks/BlendKit/LICENSE +++ Site/Site/Frameworks/BlendKit/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site/Frameworks/BlendKit/Resources/dark-checkers.png Index: Site/Site/Frameworks/BlendKit/Resources/dark-checkers.png ================================================================== --- Site/Site/Frameworks/BlendKit/Resources/dark-checkers.png +++ Site/Site/Frameworks/BlendKit/Resources/dark-checkers.png cannot compute difference between binary files ADDED Site/Site/Frameworks/BlendKit/Resources/light-checkers.png Index: Site/Site/Frameworks/BlendKit/Resources/light-checkers.png ================================================================== --- Site/Site/Frameworks/BlendKit/Resources/light-checkers.png +++ Site/Site/Frameworks/BlendKit/Resources/light-checkers.png cannot compute difference between binary files ADDED Site/Site/Frameworks/BlendKit/Resources/selection.png Index: Site/Site/Frameworks/BlendKit/Resources/selection.png ================================================================== --- Site/Site/Frameworks/BlendKit/Resources/selection.png +++ Site/Site/Frameworks/BlendKit/Resources/selection.png cannot compute difference between binary files ADDED Site/Site/Frameworks/Foundation/Info.plist Index: Site/Site/Frameworks/Foundation/Info.plist ================================================================== --- Site/Site/Frameworks/Foundation/Info.plist +++ Site/Site/Frameworks/Foundation/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;18;CPBundleIdentifierS;19;com.280n.FoundationK;29;CPBundleInfoDictionaryVersiond;1;6K;12;CPBundleNameS;10;FoundationK;19;CPBundlePackageTypeS;4;FMWKK;15;CPBundleVersionS;5;0.8.1K;20;CPBundleEnvironmentsA;S;4;ObjJE;K;18;CPBundleExecutableS;13;Foundation.sjK;36;CPBundleEnvironmentsWithImageSpritesA;E;E; ADDED Site/Site/Frameworks/Foundation/LICENSE Index: Site/Site/Frameworks/Foundation/LICENSE ================================================================== --- Site/Site/Frameworks/Foundation/LICENSE +++ Site/Site/Frameworks/Foundation/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site/Frameworks/Foundation/ObjJ.environment/Foundation.sj Index: Site/Site/Frameworks/Foundation/ObjJ.environment/Foundation.sj ================================================================== --- Site/Site/Frameworks/Foundation/ObjJ.environment/Foundation.sj +++ Site/Site/Frameworks/Foundation/ObjJ.environment/Foundation.sj @@ -0,0 +1,10742 @@ +@STATIC;1.0;p;13;CPArray+KVO.jt;13001;@STATIC;1.0;i;9;CPArray.ji;8;CPNull.jt;12956; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPNull.j",YES); +var _1=objj_getClass("CPObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("mutableArrayValueForKey:"),function(_3,_4,_5){ +with(_3){ +return objj_msgSend(objj_msgSend(_CPKVCArray,"alloc"),"initWithKey:forProxyObject:",_5,_3); +} +}),new objj_method(sel_getUid("mutableArrayValueForKeyPath:"),function(_6,_7,_8){ +with(_6){ +var _9=_8.indexOf("."); +if(_9<0){ +return objj_msgSend(_6,"mutableArrayValueForKey:",_8); +} +var _a=_8.substring(0,_9),_b=_8.substring(_9+1); +return objj_msgSend(objj_msgSend(_6,"valueForKeyPath:",_a),"valueForKeyPath:",_b); +} +})]); +var _1=objj_allocateClassPair(CPArray,"_CPKVCArray"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_proxyObject"),new objj_ivar("_key"),new objj_ivar("_insertSEL"),new objj_ivar("_insert"),new objj_ivar("_removeSEL"),new objj_ivar("_remove"),new objj_ivar("_replaceSEL"),new objj_ivar("_replace"),new objj_ivar("_insertManySEL"),new objj_ivar("_insertMany"),new objj_ivar("_removeManySEL"),new objj_ivar("_removeMany"),new objj_ivar("_replaceManySEL"),new objj_ivar("_replaceMany"),new objj_ivar("_objectAtIndexSEL"),new objj_ivar("_objectAtIndex"),new objj_ivar("_countSEL"),new objj_ivar("_count"),new objj_ivar("_accessSEL"),new objj_ivar("_access"),new objj_ivar("_setSEL"),new objj_ivar("_set")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKey:forProxyObject:"),function(_c,_d,_e,_f){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPKVCArray").super_class},"init"); +_key=_e; +_proxyObject=_f; +var _10=_key.charAt(0).toUpperCase()+_key.substring(1); +_insertSEL=sel_getName("insertObject:in"+_10+"AtIndex:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_insertSEL)){ +_insert=objj_msgSend(_proxyObject,"methodForSelector:",_insertSEL); +} +_removeSEL=sel_getName("removeObjectFrom"+_10+"AtIndex:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_removeSEL)){ +_remove=objj_msgSend(_proxyObject,"methodForSelector:",_removeSEL); +} +_replaceSEL=sel_getName("replaceObjectFrom"+_10+"AtIndex:withObject:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_replaceSEL)){ +_replace=objj_msgSend(_proxyObject,"methodForSelector:",_replaceSEL); +} +_insertManySEL=sel_getName("insertObjects:in"+_10+"AtIndexes:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_insertManySEL)){ +_insertMany=objj_msgSend(_proxyObject,"methodForSelector:",_insertManySEL); +} +_removeManySEL=sel_getName("removeObjectsFrom"+_10+"AtIndexes:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_removeManySEL)){ +_remove=objj_msgSend(_proxyObject,"methodForSelector:",_removeManySEL); +} +_replaceManySEL=sel_getName("replaceObjectsFrom"+_10+"AtIndexes:withObjects:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_replaceManySEL)){ +_replace=objj_msgSend(_proxyObject,"methodForSelector:",_replaceManySEL); +} +_objectAtIndexSEL=sel_getName("objectIn"+_10+"AtIndex:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_objectAtIndexSEL)){ +_objectAtIndex=objj_msgSend(_proxyObject,"methodForSelector:",_objectAtIndexSEL); +} +_countSEL=sel_getName("countOf"+_10); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_countSEL)){ +_count=objj_msgSend(_proxyObject,"methodForSelector:",_countSEL); +} +_accessSEL=sel_getName(_key); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_accessSEL)){ +_access=objj_msgSend(_proxyObject,"methodForSelector:",_accessSEL); +} +_setSEL=sel_getName("set"+_10+":"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_setSEL)){ +_set=objj_msgSend(_proxyObject,"methodForSelector:",_setSEL); +} +return _c; +} +}),new objj_method(sel_getUid("copy"),function(_11,_12){ +with(_11){ +var i=0,_13=[],_14=objj_msgSend(_11,"count"); +for(;i<_14;i++){ +objj_msgSend(_13,"addObject:",objj_msgSend(_11,"objectAtIndex:",i)); +} +return _13; +} +}),new objj_method(sel_getUid("_representedObject"),function(_15,_16){ +with(_15){ +if(_access){ +return _access(_proxyObject,_accessSEL); +} +return objj_msgSend(_proxyObject,"valueForKey:",_key); +} +}),new objj_method(sel_getUid("_setRepresentedObject:"),function(_17,_18,_19){ +with(_17){ +if(_set){ +return _set(_proxyObject,_setSEL,_19); +} +objj_msgSend(_proxyObject,"setValue:forKey:",_19,_key); +} +}),new objj_method(sel_getUid("count"),function(_1a,_1b){ +with(_1a){ +if(_count){ +return _count(_proxyObject,_countSEL); +} +return objj_msgSend(objj_msgSend(_1a,"_representedObject"),"count"); +} +}),new objj_method(sel_getUid("indexOfObject:inRange:"),function(_1c,_1d,_1e,_1f){ +with(_1c){ +var _20=_1f.location,_21=_1f.length,_22=!!_1e.isa; +for(;_20<_21;++_20){ +var _23=objj_msgSend(_1c,"objectAtIndex:",_20); +if(_1e===_23||_22&&!!_23.isa&&objj_msgSend(_1e,"isEqual:",_23)){ +return _20; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObject:"),function(_24,_25,_26){ +with(_24){ +return objj_msgSend(_24,"indexOfObject:inRange:",_26,CPMakeRange(0,objj_msgSend(_24,"count"))); +} +}),new objj_method(sel_getUid("indexOfObjectIdenticalTo:inRange:"),function(_27,_28,_29,_2a){ +with(_27){ +var _2b=_2a.location,_2c=_2a.length; +for(;_2b<_2c;++_2b){ +if(_29===objj_msgSend(_27,"objectAtIndex:",_2b)){ +return _2b; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObjectIdenticalTo:"),function(_2d,_2e,_2f){ +with(_2d){ +return objj_msgSend(_2d,"indexOfObjectIdenticalTo:inRange:",_2f,CPMakeRange(0,objj_msgSend(_2d,"count"))); +} +}),new objj_method(sel_getUid("objectAtIndex:"),function(_30,_31,_32){ +with(_30){ +if(_objectAtIndex){ +return _objectAtIndex(_proxyObject,_objectAtIndexSEL,_32); +} +return objj_msgSend(objj_msgSend(_30,"_representedObject"),"objectAtIndex:",_32); +} +}),new objj_method(sel_getUid("addObject:"),function(_33,_34,_35){ +with(_33){ +objj_msgSend(_33,"insertObject:atIndex:",_35,objj_msgSend(_33,"count")); +} +}),new objj_method(sel_getUid("addObjectsFromArray:"),function(_36,_37,_38){ +with(_36){ +var _39=0,_3a=objj_msgSend(_38,"count"); +objj_msgSend(_36,"insertObjects:atIndexes:",_38,objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(objj_msgSend(_36,"count"),_3a))); +} +}),new objj_method(sel_getUid("insertObject:atIndex:"),function(_3b,_3c,_3d,_3e){ +with(_3b){ +objj_msgSend(_3b,"insertObjects:atIndexes:",[_3d],objj_msgSend(CPIndexSet,"indexSetWithIndex:",_3e)); +} +}),new objj_method(sel_getUid("insertObjects:atIndexes:"),function(_3f,_40,_41,_42){ +with(_3f){ +if(_insertMany){ +_insertMany(_proxyObject,_insertManySEL,_41,_42); +}else{ +if(_insert){ +var _43=[]; +objj_msgSend(_42,"getIndexes:maxCount:inIndexRange:",_43,-1,nil); +for(var _44=0;_440){ +min=_90; +} +} +return min; +}; +_69["count"]=_7d=function(_91,_92,_93){ +return objj_msgSend(_91,"count"); +}; +_69["sum"]=_7e=function(_94,_95,_96){ +var _97=objj_msgSend(_94,"valueForKeyPath:",_96),_98=objj_msgSend(_97,"count"),sum=0; +while(_98--){ +sum+=objj_msgSend(_97[_98],"doubleValue"); +} +return sum; +}; +var _1=objj_getClass("CPArray"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("addObserver:toObjectsAtIndexes:forKeyPath:options:context:"),function(_99,_9a,_9b,_9c,_9d,_9e,_9f){ +with(_99){ +var _a0=objj_msgSend(_9c,"firstIndex"); +while(_a0>=0){ +objj_msgSend(_99[_a0],"addObserver:forKeyPath:options:context:",_9b,_9d,_9e,_9f); +_a0=objj_msgSend(_9c,"indexGreaterThanIndex:",_a0); +} +} +}),new objj_method(sel_getUid("removeObserver:fromObjectsAtIndexes:forKeyPath:"),function(_a1,_a2,_a3,_a4,_a5){ +with(_a1){ +var _a6=objj_msgSend(_a4,"firstIndex"); +while(_a6>=0){ +objj_msgSend(_a1[_a6],"removeObserver:forKeyPath:",_a3,_a5); +_a6=objj_msgSend(_a4,"indexGreaterThanIndex:",_a6); +} +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_a7,_a8,_a9,_aa,_ab,_ac){ +with(_a7){ +if(objj_msgSend(isa,"instanceMethodForSelector:",_a8)===objj_msgSend(CPArray,"instanceMethodForSelector:",_a8)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unsupported method on CPArray"); +}else{ +objj_msgSendSuper({receiver:_a7,super_class:objj_getClass("CPArray").super_class},"addObserver:forKeyPath:options:context:",_a9,_aa,_ab,_ac); +} +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_ad,_ae,_af,_b0){ +with(_ad){ +if(objj_msgSend(isa,"instanceMethodForSelector:",_ae)===objj_msgSend(CPArray,"instanceMethodForSelector:",_ae)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unsupported method on CPArray"); +}else{ +objj_msgSendSuper({receiver:_ad,super_class:objj_getClass("CPArray").super_class},"removeObserver:forKeyPath:",_af,_b0); +} +} +})]); +p;9;CPArray.jt;21105;@STATIC;1.0;i;14;CPEnumerator.ji;13;CPException.ji;10;CPObject.ji;9;CPRange.ji;18;CPSortDescriptor.jt;20997; +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPRange.j",YES); +objj_executeFile("CPSortDescriptor.j",YES); +CPEnumerationNormal=0; +CPEnumerationConcurrent=1<<0; +CPEnumerationReverse=1<<1; +var _1=objj_allocateClassPair(CPEnumerator,"_CPArrayEnumerator"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_array"),new objj_ivar("_index")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithArray:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPArrayEnumerator").super_class},"init"); +if(_3){ +_array=_5; +_index=-1; +} +return _3; +} +}),new objj_method(sel_getUid("nextObject"),function(_6,_7){ +with(_6){ +if(++_index>=objj_msgSend(_array,"count")){ +return nil; +} +return objj_msgSend(_array,"objectAtIndex:",_index); +} +})]); +var _1=objj_allocateClassPair(CPEnumerator,"_CPReverseArrayEnumerator"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_array"),new objj_ivar("_index")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithArray:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("_CPReverseArrayEnumerator").super_class},"init"); +if(_8){ +_array=_a; +_index=objj_msgSend(_array,"count"); +} +return _8; +} +}),new objj_method(sel_getUid("nextObject"),function(_b,_c){ +with(_b){ +if(--_index<0){ +return nil; +} +return objj_msgSend(_array,"objectAtIndex:",_index); +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPArray"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_d,_e){ +with(_d){ +return _d; +} +}),new objj_method(sel_getUid("initWithArray:"),function(_f,_10,_11){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPArray").super_class},"init"); +if(_f){ +objj_msgSend(_f,"setArray:",_11); +} +return _f; +} +}),new objj_method(sel_getUid("initWithArray:copyItems:"),function(_12,_13,_14,_15){ +with(_12){ +if(!_15){ +return objj_msgSend(_12,"initWithArray:",_14); +} +_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPArray").super_class},"init"); +if(_12){ +var _16=0,_17=objj_msgSend(_14,"count"); +for(;_16<_17;++_16){ +if(_14[_16].isa){ +_12[_16]=objj_msgSend(_14[_16],"copy"); +}else{ +_12[_16]=_14[_16]; +} +} +} +return _12; +} +}),new objj_method(sel_getUid("initWithObjects:"),function(_18,_19,_1a){ +with(_18){ +var i=2,_1b=arguments.length; +for(;i<_1b;++i){ +push(arguments[i]); +} +return _18; +} +}),new objj_method(sel_getUid("initWithObjects:count:"),function(_1c,_1d,_1e,_1f){ +with(_1c){ +_1c=objj_msgSendSuper({receiver:_1c,super_class:objj_getClass("CPArray").super_class},"init"); +if(_1c){ +var _20=0; +for(;_20<_1f;++_20){ +push(_1e[_20]); +} +} +return _1c; +} +}),new objj_method(sel_getUid("containsObject:"),function(_21,_22,_23){ +with(_21){ +return objj_msgSend(_21,"indexOfObject:",_23)!=CPNotFound; +} +}),new objj_method(sel_getUid("count"),function(_24,_25){ +with(_24){ +return length; +} +}),new objj_method(sel_getUid("indexOfObject:"),function(_26,_27,_28){ +with(_26){ +var i=0,_29=length; +if(_28&&_28.isa){ +for(;i<_29;++i){ +if(objj_msgSend(_26[i],"isEqual:",_28)){ +return i; +} +} +}else{ +if(_26.indexOf){ +return indexOf(_28); +}else{ +for(;i<_29;++i){ +if(_26[i]===_28){ +return i; +} +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObject:inRange:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +var i=_2d.location,_2e=MIN(CPMaxRange(_2d),length); +if(_2c&&_2c.isa){ +for(;i<_2e;++i){ +if(objj_msgSend(_2a[i],"isEqual:",_2c)){ +return i; +} +} +}else{ +for(;i<_2e;++i){ +if(_2a[i]===_2c){ +return i; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObjectIdenticalTo:"),function(_2f,_30,_31){ +with(_2f){ +if(_2f.indexOf){ +return indexOf(_31); +}else{ +var _32=0,_33=length; +for(;_32<_33;++_32){ +if(_2f[_32]===_31){ +return _32; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObjectIdenticalTo:inRange:"),function(_34,_35,_36,_37){ +with(_34){ +if(_34.indexOf){ +var _38=indexOf(_36,_37.location); +if(CPLocationInRange(_38,_37)){ +return _38; +} +}else{ +var _38=_37.location,_39=MIN(CPMaxRange(_37),length); +for(;_38<_39;++_38){ +if(_34[_38]==_36){ +return _38; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObjectPassingTest:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(_3a,"indexOfObjectWithOptions:passingTest:context:",CPEnumerationNormal,_3c,undefined); +} +}),new objj_method(sel_getUid("indexOfObjectPassingTest:context:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +return objj_msgSend(_3d,"indexOfObjectWithOptions:passingTest:context:",CPEnumerationNormal,_3f,_40); +} +}),new objj_method(sel_getUid("indexOfObjectWithOptions:passingTest:"),function(_41,_42,_43,_44){ +with(_41){ +return objj_msgSend(_41,"indexOfObjectWithOptions:passingTest:context:",_43,_44,undefined); +} +}),new objj_method(sel_getUid("indexOfObjectWithOptions:passingTest:context:"),function(_45,_46,_47,_48,_49){ +with(_45){ +var _4a,_4b,_4c; +if(_47&CPEnumerationReverse){ +_4a=objj_msgSend(_45,"count")-1; +_4b=-1; +_4c=-1; +}else{ +_4a=0; +_4b=objj_msgSend(_45,"count"); +_4c=1; +} +for(var i=_4a;i!=_4b;i+=_4c){ +var _4d=_48(objj_msgSend(_45,"objectAtIndex:",i),i,_49); +if(typeof _4d==="boolean"&&_4d){ +return i; +}else{ +if(typeof _4d==="object"&&_4d==nil){ +return CPNotFound; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObject:sortedBySelector:"),function(_4e,_4f,_50,_51){ +with(_4e){ +return objj_msgSend(_4e,"indexOfObject:sortedByFunction:",_50,function(lhs,rhs){ +objj_msgSend(lhs,_51,rhs); +}); +} +}),new objj_method(sel_getUid("indexOfObject:sortedByFunction:"),function(_52,_53,_54,_55){ +with(_52){ +return objj_msgSend(_52,"indexOfObject:sortedByFunction:context:",_54,_55,nil); +} +}),new objj_method(sel_getUid("indexOfObject:sortedByFunction:context:"),function(_56,_57,_58,_59,_5a){ +with(_56){ +var _5b=objj_msgSend(_56,"_indexOfObject:sortedByFunction:context:",_58,_59,_5a); +return _5b>=0?_5b:CPNotFound; +} +}),new objj_method(sel_getUid("_indexOfObject:sortedByFunction:context:"),function(_5c,_5d,_5e,_5f,_60){ +with(_5c){ +if(!_5f){ +return CPNotFound; +} +if(length===0){ +return -1; +} +var mid,c,_61=0,_62=length-1; +while(_61<=_62){ +mid=FLOOR((_61+_62)/2); +c=_5f(_5e,_5c[mid],_60); +if(c>0){ +_61=mid+1; +}else{ +if(c<0){ +_62=mid-1; +}else{ +while(mid=length||_75<0){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"index ("+_75+") beyond bounds ("+length+")"); +} +return _73[_75]; +} +}),new objj_method(sel_getUid("objectsAtIndexes:"),function(_76,_77,_78){ +with(_76){ +var _79=CPNotFound,_7a=[]; +while((_79=objj_msgSend(_78,"indexGreaterThanIndex:",_79))!==CPNotFound){ +objj_msgSend(_7a,"addObject:",objj_msgSend(_76,"objectAtIndex:",_79)); +} +return _7a; +} +}),new objj_method(sel_getUid("objectEnumerator"),function(_7b,_7c){ +with(_7b){ +return objj_msgSend(objj_msgSend(_CPArrayEnumerator,"alloc"),"initWithArray:",_7b); +} +}),new objj_method(sel_getUid("reverseObjectEnumerator"),function(_7d,_7e){ +with(_7d){ +return objj_msgSend(objj_msgSend(_CPReverseArrayEnumerator,"alloc"),"initWithArray:",_7d); +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:"),function(_7f,_80,_81){ +with(_7f){ +if(!_81){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"makeObjectsPerformSelector: 'aSelector' can't be nil"); +} +var _82=0,_83=length; +for(;_82<_83;++_82){ +objj_msgSend(_7f[_82],_81); +} +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:withObject:"),function(_84,_85,_86,_87){ +with(_84){ +if(!_86){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"makeObjectsPerformSelector:withObject 'aSelector' can't be nil"); +} +var _88=0,_89=length; +for(;_88<_89;++_88){ +objj_msgSend(_84[_88],_86,_87); +} +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:withObjects:"),function(_8a,_8b,_8c,_8d){ +with(_8a){ +if(!_8c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"makeObjectsPerformSelector:withObjects: 'aSelector' can't be nil"); +} +var _8e=0,_8f=length,_90=[nil,_8c].concat(_8d||[]); +for(;_8e<_8f;++_8e){ +_90[0]=_8a[_8e]; +objj_msgSend.apply(this,_90); +} +} +}),new objj_method(sel_getUid("firstObjectCommonWithArray:"),function(_91,_92,_93){ +with(_91){ +if(!objj_msgSend(_93,"count")||!objj_msgSend(_91,"count")){ +return nil; +} +var i=0,_94=objj_msgSend(_91,"count"); +for(;i<_94;++i){ +if(objj_msgSend(_93,"containsObject:",_91[i])){ +return _91[i]; +} +} +return nil; +} +}),new objj_method(sel_getUid("isEqualToArray:"),function(_95,_96,_97){ +with(_95){ +if(_95===_97){ +return YES; +} +if(_97===nil||length!==_97.length){ +return NO; +} +var _98=0,_99=objj_msgSend(_95,"count"); +for(;_98<_99;++_98){ +var lhs=_95[_98],rhs=_97[_98]; +if(lhs!==rhs&&(lhs&&!lhs.isa||rhs&&!rhs.isa||!objj_msgSend(lhs,"isEqual:",rhs))){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("isEqual:"),function(_9a,_9b,_9c){ +with(_9a){ +if(_9a===_9c){ +return YES; +} +if(!objj_msgSend(_9c,"isKindOfClass:",objj_msgSend(CPArray,"class"))){ +return NO; +} +return objj_msgSend(_9a,"isEqualToArray:",_9c); +} +}),new objj_method(sel_getUid("arrayByAddingObject:"),function(_9d,_9e,_9f){ +with(_9d){ +var _a0=objj_msgSend(_9d,"copy"); +_a0.push(_9f); +return _a0; +} +}),new objj_method(sel_getUid("arrayByAddingObjectsFromArray:"),function(_a1,_a2,_a3){ +with(_a1){ +return slice(0).concat(_a3); +} +}),new objj_method(sel_getUid("subarrayWithRange:"),function(_a4,_a5,_a6){ +with(_a4){ +if(_a6.location<0||CPMaxRange(_a6)>length){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"subarrayWithRange: aRange out of bounds"); +} +return slice(_a6.location,CPMaxRange(_a6)); +} +}),new objj_method(sel_getUid("sortedArrayUsingDescriptors:"),function(_a7,_a8,_a9){ +with(_a7){ +var _aa=objj_msgSend(_a7,"copy"); +objj_msgSend(_aa,"sortUsingDescriptors:",_a9); +return _aa; +} +}),new objj_method(sel_getUid("sortedArrayUsingFunction:"),function(_ab,_ac,_ad){ +with(_ab){ +return objj_msgSend(_ab,"sortedArrayUsingFunction:context:",_ad,nil); +} +}),new objj_method(sel_getUid("sortedArrayUsingFunction:context:"),function(_ae,_af,_b0,_b1){ +with(_ae){ +var _b2=objj_msgSend(_ae,"copy"); +objj_msgSend(_b2,"sortUsingFunction:context:",_b0,_b1); +return _b2; +} +}),new objj_method(sel_getUid("sortedArrayUsingSelector:"),function(_b3,_b4,_b5){ +with(_b3){ +var _b6=objj_msgSend(_b3,"copy"); +objj_msgSend(_b6,"sortUsingSelector:",_b5); +return _b6; +} +}),new objj_method(sel_getUid("componentsJoinedByString:"),function(_b7,_b8,_b9){ +with(_b7){ +return join(_b9); +} +}),new objj_method(sel_getUid("description"),function(_ba,_bb){ +with(_ba){ +var _bc=0,_bd=objj_msgSend(_ba,"count"),_be="("; +for(;_bc<_bd;++_bc){ +if(_bc===0){ +_be+="\n"; +} +var _bf=objj_msgSend(_ba,"objectAtIndex:",_bc),_c0=_bf&&_bf.isa?objj_msgSend(_bf,"description"):String(_bf); +_be+="\t"+_c0.split("\n").join("\n\t"); +if(_bc!==_bd-1){ +_be+=", "; +} +_be+="\n"; +} +return _be+")"; +} +}),new objj_method(sel_getUid("pathsMatchingExtensions:"),function(_c1,_c2,_c3){ +with(_c1){ +var _c4=0,_c5=objj_msgSend(_c1,"count"),_c6=[]; +for(;_c4<_c5;++_c4){ +if(_c1[_c4].isa&&objj_msgSend(_c1[_c4],"isKindOfClass:",objj_msgSend(CPString,"class"))&&objj_msgSend(_c3,"containsObject:",objj_msgSend(_c1[_c4],"pathExtension"))){ +_c6.push(_c1[_c4]); +} +} +return _c6; +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_c7,_c8,_c9,_ca){ +with(_c7){ +var i=0,_cb=objj_msgSend(_c7,"count"); +for(;i<_cb;++i){ +objj_msgSend(_c7[i],"setValue:forKey:",_c9,_ca); +} +} +}),new objj_method(sel_getUid("valueForKey:"),function(_cc,_cd,_ce){ +with(_cc){ +var i=0,_cf=objj_msgSend(_cc,"count"),_d0=[]; +for(;i<_cf;++i){ +_d0.push(objj_msgSend(_cc[i],"valueForKey:",_ce)); +} +return _d0; +} +}),new objj_method(sel_getUid("copy"),function(_d1,_d2){ +with(_d1){ +return slice(0); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_d3,_d4){ +with(_d3){ +return []; +} +}),new objj_method(sel_getUid("array"),function(_d5,_d6){ +with(_d5){ +return objj_msgSend(objj_msgSend(_d5,"alloc"),"init"); +} +}),new objj_method(sel_getUid("arrayWithArray:"),function(_d7,_d8,_d9){ +with(_d7){ +return objj_msgSend(objj_msgSend(_d7,"alloc"),"initWithArray:",_d9); +} +}),new objj_method(sel_getUid("arrayWithObject:"),function(_da,_db,_dc){ +with(_da){ +return objj_msgSend(objj_msgSend(_da,"alloc"),"initWithObjects:",_dc); +} +}),new objj_method(sel_getUid("arrayWithObjects:"),function(_dd,_de,_df){ +with(_dd){ +var i=2,_e0=objj_msgSend(objj_msgSend(_dd,"alloc"),"init"),_e1=arguments.length; +for(;i<_e1;++i){ +_e0.push(arguments[i]); +} +return _e0; +} +}),new objj_method(sel_getUid("arrayWithObjects:count:"),function(_e2,_e3,_e4,_e5){ +with(_e2){ +return objj_msgSend(objj_msgSend(_e2,"alloc"),"initWithObjects:count:",_e4,_e5); +} +})]); +var _1=objj_getClass("CPArray"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCapacity:"),function(_e6,_e7,_e8){ +with(_e6){ +return _e6; +} +}),new objj_method(sel_getUid("addObject:"),function(_e9,_ea,_eb){ +with(_e9){ +push(_eb); +} +}),new objj_method(sel_getUid("addObjectsFromArray:"),function(_ec,_ed,_ee){ +with(_ec){ +splice.apply(_ec,[length,0].concat(_ee)); +} +}),new objj_method(sel_getUid("insertObject:atIndex:"),function(_ef,_f0,_f1,_f2){ +with(_ef){ +splice(_f2,0,_f1); +} +}),new objj_method(sel_getUid("insertObjects:atIndexes:"),function(_f3,_f4,_f5,_f6){ +with(_f3){ +var _f7=objj_msgSend(_f6,"count"),_f8=objj_msgSend(_f5,"count"); +if(_f7!==_f8){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"the counts of the passed-in array ("+_f8+") and index set ("+_f7+") must be identical."); +} +var _f9=objj_msgSend(_f6,"lastIndex"); +if(_f9>=objj_msgSend(_f3,"count")+_f7){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"the last index ("+_f9+") must be less than the sum of the original count ("+objj_msgSend(_f3,"count")+") and the insertion count ("+_f7+")."); +} +var _fa=0,_fb=objj_msgSend(_f6,"firstIndex"); +for(;_fa<_f8;++_fa,_fb=objj_msgSend(_f6,"indexGreaterThanIndex:",_fb)){ +objj_msgSend(_f3,"insertObject:atIndex:",_f5[_fa],_fb); +} +} +}),new objj_method(sel_getUid("insertObject:inArraySortedByDescriptors:"),function(_fc,_fd,_fe,_ff){ +with(_fc){ +var _100=objj_msgSend(_ff,"count"); +var _101=objj_msgSend(_fc,"_indexOfObject:sortedByFunction:context:",_fe,function(lhs,rhs){ +var i=0,_102=CPOrderedSame; +while(i<_100){ +if((_102=objj_msgSend(_ff[i++],"compareObject:withObject:",lhs,rhs))!=CPOrderedSame){ +return _102; +} +} +return _102; +},nil); +if(_101<0){ +_101=-_101-1; +} +objj_msgSend(_fc,"insertObject:atIndex:",_fe,_101); +return _101; +} +}),new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"),function(self,_103,_104,_105){ +with(self){ +self[_104]=_105; +} +}),new objj_method(sel_getUid("replaceObjectsAtIndexes:withObjects:"),function(self,_106,_107,_108){ +with(self){ +var i=0,_109=objj_msgSend(_107,"firstIndex"); +while(_109!=CPNotFound){ +objj_msgSend(self,"replaceObjectAtIndex:withObject:",_109,_108[i++]); +_109=objj_msgSend(_107,"indexGreaterThanIndex:",_109); +} +} +}),new objj_method(sel_getUid("replaceObjectsInRange:withObjectsFromArray:range:"),function(self,_10a,_10b,_10c,_10d){ +with(self){ +if(!_10d.location&&_10d.length==objj_msgSend(_10c,"count")){ +objj_msgSend(self,"replaceObjectsInRange:withObjectsFromArray:",_10b,_10c); +}else{ +splice.apply(self,[_10b.location,_10b.length].concat(objj_msgSend(_10c,"subarrayWithRange:",_10d))); +} +} +}),new objj_method(sel_getUid("replaceObjectsInRange:withObjectsFromArray:"),function(self,_10e,_10f,_110){ +with(self){ +splice.apply(self,[_10f.location,_10f.length].concat(_110)); +} +}),new objj_method(sel_getUid("setArray:"),function(self,_111,_112){ +with(self){ +if(self==_112){ +return; +} +splice.apply(self,[0,length].concat(_112)); +} +}),new objj_method(sel_getUid("removeAllObjects"),function(self,_113){ +with(self){ +splice(0,length); +} +}),new objj_method(sel_getUid("removeLastObject"),function(self,_114){ +with(self){ +pop(); +} +}),new objj_method(sel_getUid("removeObject:"),function(self,_115,_116){ +with(self){ +objj_msgSend(self,"removeObject:inRange:",_116,CPMakeRange(0,length)); +} +}),new objj_method(sel_getUid("removeObject:inRange:"),function(self,_117,_118,_119){ +with(self){ +var _11a; +while((_11a=objj_msgSend(self,"indexOfObject:inRange:",_118,_119))!=CPNotFound){ +objj_msgSend(self,"removeObjectAtIndex:",_11a); +_119=CPIntersectionRange(CPMakeRange(_11a,length-_11a),_119); +} +} +}),new objj_method(sel_getUid("removeObjectAtIndex:"),function(self,_11b,_11c){ +with(self){ +splice(_11c,1); +} +}),new objj_method(sel_getUid("removeObjectsAtIndexes:"),function(self,_11d,_11e){ +with(self){ +var _11f=objj_msgSend(_11e,"lastIndex"); +while(_11f!=CPNotFound){ +objj_msgSend(self,"removeObjectAtIndex:",_11f); +_11f=objj_msgSend(_11e,"indexLessThanIndex:",_11f); +} +} +}),new objj_method(sel_getUid("removeObjectIdenticalTo:"),function(self,_120,_121){ +with(self){ +objj_msgSend(self,"removeObjectIdenticalTo:inRange:",_121,CPMakeRange(0,objj_msgSend(self,"count"))); +} +}),new objj_method(sel_getUid("removeObjectIdenticalTo:inRange:"),function(self,_122,_123,_124){ +with(self){ +var _125,_126=objj_msgSend(self,"count"); +while((_125=objj_msgSend(self,"indexOfObjectIdenticalTo:inRange:",_123,_124))!==CPNotFound){ +objj_msgSend(self,"removeObjectAtIndex:",_125); +_124=CPIntersectionRange(CPMakeRange(_125,(--_126)-_125),_124); +} +} +}),new objj_method(sel_getUid("removeObjectsInArray:"),function(self,_127,_128){ +with(self){ +var _129=0,_12a=objj_msgSend(_128,"count"); +for(;_129<_12a;++_129){ +objj_msgSend(self,"removeObject:",_128[_129]); +} +} +}),new objj_method(sel_getUid("removeObjectsInRange:"),function(self,_12b,_12c){ +with(self){ +splice(_12c.location,_12c.length); +} +}),new objj_method(sel_getUid("exchangeObjectAtIndex:withObjectAtIndex:"),function(self,_12d,_12e,_12f){ +with(self){ +var _130=self[_12e]; +self[_12e]=self[_12f]; +self[_12f]=_130; +} +}),new objj_method(sel_getUid("sortUsingDescriptors:"),function(self,_131,_132){ +with(self){ +objj_msgSend(self,"sortUsingFunction:context:",_133,_132); +} +}),new objj_method(sel_getUid("sortUsingFunction:context:"),function(self,_134,_135,_136){ +with(self){ +var h,i,j,k,l,m,n=objj_msgSend(self,"count"),o; +var A,B=[]; +for(h=1;h=0;m-=h+h){ +l=m-h+1; +if(l<0){ +l=0; +} +for(i=0,j=l;j<=m;i++,j++){ +B[i]=self[j]; +} +for(i=0,k=l;k_string.length||_17===undefined){ +return CPNotFound; +} +var _18=function(_19,_1a){ +if(CPLocationInRange(_19,_1a.range)){ +return CPOrderedSame; +}else{ +if(CPMaxRange(_1a.range)<=_19){ +return CPOrderedDescending; +}else{ +return CPOrderedAscending; +} +} +}; +return objj_msgSend(_rangeEntries,"indexOfObject:sortedByFunction:",_17,_18); +} +}),new objj_method(sel_getUid("attributesAtIndex:effectiveRange:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +var _1f=objj_msgSend(_1b,"_indexOfEntryWithIndex:",_1d); +if(_1f==CPNotFound){ +return nil; +} +var _20=_rangeEntries[_1f]; +if(_1e){ +_1e.location=_20.range.location; +_1e.length=_20.range.length; +} +return _20.attributes; +} +}),new objj_method(sel_getUid("attributesAtIndex:longestEffectiveRange:inRange:"),function(_21,_22,_23,_24,_25){ +with(_21){ +var _26=objj_msgSend(_21,"_indexOfEntryWithIndex:",_23); +if(_26==CPNotFound){ +return nil; +} +if(!_24){ +return _rangeEntries[_26].attributes; +} +if(CPRangeInRange(_rangeEntries[_26].range,_25)){ +_24.location=_25.location; +_24.length=_25.length; +return _rangeEntries[_26].attributes; +} +var _27=_26-1,_28=_rangeEntries[_26],_29=_28.attributes; +while(_27>=0){ +var _2a=_rangeEntries[_27]; +if(CPMaxRange(_2a.range)>_25.location&&objj_msgSend(_2a.attributes,"isEqualToDictionary:",_29)){ +_28=_2a; +_27--; +}else{ +break; +} +} +_24.location=MAX(_28.range.location,_25.location); +_28=_rangeEntries[_26]; +_27=_26+1; +while(_27<_rangeEntries.length){ +var _2a=_rangeEntries[_27]; +if(_2a.range.location=0){ +var _3a=_rangeEntries[_37]; +if(CPMaxRange(_3a.range)>_35.location&&_3b(_39,objj_msgSend(_3a.attributes,"objectForKey:",_32))){ +_38=_3a; +_37--; +}else{ +break; +} +} +_34.location=MAX(_38.range.location,_35.location); +_38=_rangeEntries[_36]; +_37=_36+1; +while(_37<_rangeEntries.length){ +var _3a=_rangeEntries[_37]; +if(_3a.range.location0&&!objj_msgSend(_41,"isEqualToDictionary:",_42)){ +return NO; +} +if(CPMaxRange(_3f)_string.length||_49.location<0){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"tried to get attributedSubstring for an invalid range: "+(_49?CPStringFromRange(_49):"nil")); +} +var _4a=objj_msgSend(objj_msgSend(CPAttributedString,"alloc"),"initWithString:",_string.substring(_49.location,CPMaxRange(_49))),_4b=objj_msgSend(_47,"_indexOfEntryWithIndex:",_49.location),_4c=_rangeEntries[_4b],_4d=CPMaxRange(_49); +_4a._rangeEntries=[]; +while(_4c&&CPMaxRange(_4c.range)<_4d){ +var _4e=_4f(_4c); +_4e.range.location-=_49.location; +if(_4e.range.location<0){ +_4e.range.length+=_4e.range.location; +_4e.range.location=0; +} +_4a._rangeEntries.push(_4e); +_4c=_rangeEntries[++_4b]; +} +if(_4c){ +var _50=_4f(_4c); +_50.range.length=CPMaxRange(_49)-_50.range.location; +_50.range.location-=_49.location; +if(_50.range.location<0){ +_50.range.length+=_50.range.location; +_50.range.location=0; +} +_4a._rangeEntries.push(_50); +} +return _4a; +} +}),new objj_method(sel_getUid("replaceCharactersInRange:withString:"),function(_51,_52,_53,_54){ +with(_51){ +if(!_54){ +_54=""; +} +var _55=objj_msgSend(_51,"_indexOfEntryWithIndex:",_53.location),_56=_rangeEntries[_55],_57=objj_msgSend(_51,"_indexOfEntryWithIndex:",MAX(CPMaxRange(_53)-1,0)),_58=_rangeEntries[_57],_59=_54.length-_53.length; +_string=_string.substring(0,_53.location)+_54+_string.substring(CPMaxRange(_53)); +if(_55==_57){ +_56.range.length+=_59; +}else{ +_58.range.length=CPMaxRange(_58.range)-CPMaxRange(_53); +_58.range.location=CPMaxRange(_53); +_56.range.length=CPMaxRange(_53)-_56.range.location; +_rangeEntries.splice(_55,_57-_55); +} +_57=_55+1; +while(_57<_rangeEntries.length){ +_rangeEntries[_57++].range.location+=_59; +} +} +}),new objj_method(sel_getUid("deleteCharactersInRange:"),function(_5a,_5b,_5c){ +with(_5a){ +objj_msgSend(_5a,"replaceCharactersInRange:withString:",_5c,nil); +} +}),new objj_method(sel_getUid("setAttributes:range:"),function(_5d,_5e,_5f,_60){ +with(_5d){ +var _61=objj_msgSend(_5d,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",_60.location,YES),_62=objj_msgSend(_5d,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",CPMaxRange(_60),YES),_63=_61; +if(_62==CPNotFound){ +_62=_rangeEntries.length; +} +while(_63<_62){ +_rangeEntries[_63++].attributes=objj_msgSend(_5f,"copy"); +} +objj_msgSend(_5d,"_coalesceRangeEntriesFromIndex:toIndex:",_61,_62); +} +}),new objj_method(sel_getUid("addAttributes:range:"),function(_64,_65,_66,_67){ +with(_64){ +var _68=objj_msgSend(_64,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",_67.location,YES),_69=objj_msgSend(_64,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",CPMaxRange(_67),YES),_6a=_68; +if(_69==CPNotFound){ +_69=_rangeEntries.length; +} +while(_6a<_69){ +var _6b=objj_msgSend(_66,"allKeys"),_6c=objj_msgSend(_6b,"count"); +while(_6c--){ +objj_msgSend(_rangeEntries[_6a].attributes,"setObject:forKey:",objj_msgSend(_66,"objectForKey:",_6b[_6c]),_6b[_6c]); +} +_6a++; +} +objj_msgSend(_64,"_coalesceRangeEntriesFromIndex:toIndex:",_68,_69); +} +}),new objj_method(sel_getUid("addAttribute:value:range:"),function(_6d,_6e,_6f,_70,_71){ +with(_6d){ +objj_msgSend(_6d,"addAttributes:range:",objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_70,_6f),_71); +} +}),new objj_method(sel_getUid("removeAttribute:range:"),function(_72,_73,_74,_75){ +with(_72){ +var _76=objj_msgSend(_72,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",_75.location,YES),_77=objj_msgSend(_72,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",CPMaxRange(_75),YES),_78=_76; +if(_77==CPNotFound){ +_77=_rangeEntries.length; +} +while(_78<_77){ +objj_msgSend(_rangeEntries[_78++].attributes,"removeObjectForKey:",_74); +} +objj_msgSend(_72,"_coalesceRangeEntriesFromIndex:toIndex:",_76,_77); +} +}),new objj_method(sel_getUid("appendAttributedString:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"insertAttributedString:atIndex:",_7b,_string.length); +} +}),new objj_method(sel_getUid("insertAttributedString:atIndex:"),function(_7c,_7d,_7e,_7f){ +with(_7c){ +if(_7f<0||_7f>objj_msgSend(_7c,"length")){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"tried to insert attributed string at an invalid index: "+_7f); +} +var _80=objj_msgSend(_7c,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",_7f,YES),_81=_7e._rangeEntries,_82=objj_msgSend(_7e,"length"); +if(_80==CPNotFound){ +_80=_rangeEntries.length; +} +_string=_string.substring(0,_7f)+_7e._string+_string.substring(_7f); +var _83=_80; +while(_83<_rangeEntries.length){ +_rangeEntries[_83++].range.location+=_82; +} +var _84=_81.length,_85=0; +while(_85<_84){ +var _86=_4f(_81[_85++]); +_86.range.location+=_7f; +_rangeEntries.splice(_80-1+_85,0,_86); +} +} +}),new objj_method(sel_getUid("replaceCharactersInRange:withAttributedString:"),function(_87,_88,_89,_8a){ +with(_87){ +objj_msgSend(_87,"deleteCharactersInRange:",_89); +objj_msgSend(_87,"insertAttributedString:atIndex:",_8a,_89.location); +} +}),new objj_method(sel_getUid("setAttributedString:"),function(_8b,_8c,_8d){ +with(_8b){ +_string=_8d._string; +_rangeEntries=[]; +var i=0,_8e=_8d._rangeEntries.length; +for(;i<_8e;i++){ +_rangeEntries.push(_4f(_8d._rangeEntries[i])); +} +} +}),new objj_method(sel_getUid("_indexOfRangeEntryForIndex:splitOnMaxIndex:"),function(_8f,_90,_91,_92){ +with(_8f){ +var _93=objj_msgSend(_8f,"_indexOfEntryWithIndex:",_91); +if(_93<0){ +return _93; +} +var _94=_rangeEntries[_93]; +if(_94.range.location==_91||(CPMaxRange(_94.range)-1==_91&&!_92)){ +return _93; +} +var _95=splitRangeEntryAtIndex(_94,_91); +_rangeEntries.splice(_93,1,_95[0],_95[1]); +_93++; +return _93; +} +}),new objj_method(sel_getUid("_coalesceRangeEntriesFromIndex:toIndex:"),function(_96,_97,_98,end){ +with(_96){ +var _99=_98; +if(end>=_rangeEntries.length){ +end=_rangeEntries.length-1; +} +while(_990&&objj_msgSend(set,"characterIsMember:",_69.charAt(_6d))){ +_6d--; +} +str=str.substr(0,_6d+1); +} +return str; +} +})]); +alphanumericCharacterSet=[48,10,65,26,97,26,170,1,178,2,181,1,185,2,188,3,192,23,216,31,248,458,710,12,736,5,750,1,768,112,890,4,902,1,904,3,908,1,910,20,931,44,976,38,1015,139,1155,4,1160,140,1329,38,1369,1,1377,39,1425,45,1471,1,1473,2,1476,2,1479,1,1488,27,1520,3,1552,6,1569,26,1600,31,1632,10,1646,102,1749,8,1758,11,1770,19,1791,1,1808,59,1869,33,1920,50,1984,54,2042,1,2305,57,2364,18,2384,5,2392,12,2406,10,2427,5,2433,3,2437,8,2447,2,2451,22,2474,7,2482,1,2486,4,2492,9,2503,2,2507,4,2519,1,2524,2,2527,5,2534,12,2548,6,2561,3,2565,6,2575,2,2579,22,2602,7,2610,2,2613,2,2616,2,2620,1,2622,5,2631,2,2635,3,2649,4,2654,1,2662,15,2689,3,2693,9,2703,3,2707,22,2730,7,2738,2,2741,5,2748,10,2759,3,2763,3,2768,1,2784,4,2790,10,2817,3,2821,8,2831,2,2835,22,2858,7,2866,2,2869,5,2876,8,2887,2,2891,3,2902,2,2908,2,2911,3,2918,10,2929,1,2946,2,2949,6,2958,3,2962,4,2969,2,2972,1,2974,2,2979,2,2984,3,2990,12,3006,5,3014,3,3018,4,3031,1,3046,13,3073,3,3077,8,3086,3,3090,23,3114,10,3125,5,3134,7,3142,3,3146,4,3157,2,3168,2,3174,10,3202,2,3205,8,3214,3,3218,23,3242,10,3253,5,3260,9,3270,3,3274,4,3285,2,3294,1,3296,4,3302,10,3330,2,3333,8,3342,3,3346,23,3370,16,3390,6,3398,3,3402,4,3415,1,3424,2,3430,10,3458,2,3461,18,3482,24,3507,9,3517,1,3520,7,3530,1,3535,6,3542,1,3544,8,3570,2,3585,58,3648,15,3664,10,3713,2,3716,1,3719,2,3722,1,3725,1,3732,4,3737,7,3745,3,3749,1,3751,1,3754,2,3757,13,3771,3,3776,5,3782,1,3784,6,3792,10,3804,2,3840,1,3864,2,3872,20,3893,1,3895,1,3897,1,3902,10,3913,34,3953,20,3974,6,3984,8,3993,36,4038,1,4096,34,4131,5,4137,2,4140,7,4150,4,4160,10,4176,10,4256,38,4304,43,4348,1,4352,90,4447,68,4520,82,4608,73,4682,4,4688,7,4696,1,4698,4,4704,41,4746,4,4752,33,4786,4,4792,7,4800,1,4802,4,4808,15,4824,57,4882,4,4888,67,4959,1,4969,20,4992,16,5024,85,5121,620,5743,8,5761,26,5792,75,5870,3,5888,13,5902,7,5920,21,5952,20,5984,13,5998,3,6002,2,6016,52,6070,30,6103,1,6108,2,6112,10,6128,10,6155,3,6160,10,6176,88,6272,42,6400,29,6432,12,6448,12,6470,40,6512,5,6528,42,6576,26,6608,10,6656,28,6912,76,6992,10,7019,9,7424,203,7678,158,7840,90,7936,22,7960,6,7968,38,8008,6,8016,8,8025,1,8027,1,8029,1,8031,31,8064,53,8118,7,8126,1,8130,3,8134,7,8144,4,8150,6,8160,13,8178,3,8182,7,8304,2,8308,6,8319,11,8336,5,8400,32,8450,1,8455,1,8458,10,8469,1,8473,5,8484,1,8486,1,8488,1,8490,4,8495,11,8508,4,8517,5,8526,1,8531,50,9312,60,9450,22,10102,30,11264,47,11312,47,11360,13,11380,4,11392,101,11517,1,11520,38,11568,54,11631,1,11648,23,11680,7,11688,7,11696,7,11704,7,11712,7,11720,7,11728,7,11736,7,12293,3,12321,15,12337,5,12344,5,12353,86,12441,2,12445,3,12449,90,12540,4,12549,40,12593,94,12690,4,12704,24,12784,16,12832,10,12881,15,12928,10,12977,15,13312,6582,19968,20924,40960,1165,42775,4,43008,40,43072,52,44032,11172,63744,302,64048,59,64112,106,64256,7,64275,5,64285,12,64298,13,64312,5,64318,1,64320,2,64323,2,64326,108,64467,363,64848,64,64914,54,65008,12,65024,16,65056,4,65136,5,65142,135,65296,10,65313,26,65345,26,65382,89,65474,6,65482,6,65490,6]; +controlCharacterSet=[0,32,127,33,173,1,1536,4,1757,1,1807,1,6068,2,8203,5,8234,5,8288,4,8298,6,65279,1]; +decimalDigitCharacterSet=[48,10,1632,10,1776,10,1984,10,2406,10,2534,10,2662,10,2790,10,2918,10,3046,10,3174,10,3302,10,3430,10,3664,10,3792,10,3872,10,4160,10,6112,10,6160,10,6470,10,6608,10,6992,10]; +decomposableCharacterSet=[192,6,199,9,209,6,217,5,224,6,231,9,241,6,249,5,255,17,274,20,296,9,308,4,313,6,323,6,332,6,340,18,360,23,416,2,431,2,461,16,478,6,486,11,500,2,504,36,542,2,550,14,832,2,835,2,884,1,894,1,901,6,908,1,910,3,938,7,970,5,979,2,1024,2,1027,1,1031,1,1036,3,1049,1,1081,1,1104,2,1107,1,1111,1,1116,3,1142,2,1217,2,1232,4,1238,2,1242,6,1250,6,1258,12,1272,2,1570,5,1728,1,1730,1,1747,1,2345,1,2353,1,2356,1,2392,8,2507,2,2524,2,2527,1,2611,1,2614,1,2649,3,2654,1,2888,1,2891,2,2908,2,2964,1,3018,3,3144,1,3264,1,3271,2,3274,2,3402,3,3546,1,3548,3,3907,1,3917,1,3922,1,3927,1,3932,1,3945,1,3955,1,3957,2,3960,1,3969,1,3987,1,3997,1,4002,1,4007,1,4012,1,4025,1,4134,1,6918,1,6920,1,6922,1,6924,1,6926,1,6930,1,6971,1,6973,1,6976,2,6979,1,7680,154,7835,1,7840,90,7936,22,7960,6,7968,38,8008,6,8016,8,8025,1,8027,1,8029,1,8031,31,8064,53,8118,7,8126,1,8129,4,8134,14,8150,6,8157,19,8178,3,8182,8,8192,2,8486,1,8490,2,8602,2,8622,1,8653,3,8708,1,8713,1,8716,1,8740,1,8742,1,8769,1,8772,1,8775,1,8777,1,8800,1,8802,1,8813,5,8820,2,8824,2,8832,2,8836,2,8840,2,8876,4,8928,4,8938,4,9001,2,10972,1,12364,1,12366,1,12368,1,12370,1,12372,1,12374,1,12376,1,12378,1,12380,1,12382,1,12384,1,12386,1,12389,1,12391,1,12393,1,12400,2,12403,2,12406,2,12409,2,12412,2,12436,1,12446,1,12460,1,12462,1,12464,1,12466,1,12468,1,12470,1,12472,1,12474,1,12476,1,12478,1,12480,1,12482,1,12485,1,12487,1,12489,1,12496,2,12499,2,12502,2,12505,2,12508,2,12532,1,12535,4,12542,1,44032,11172,63744,270,64016,1,64018,1,64021,10,64032,1,64034,1,64037,2,64042,4,64048,59,64112,106,64285,1,64287,1,64298,13,64312,5,64318,1,64320,2,64323,2]; +illegalCharacterSet=[880,4,886,4,895,5,907,1,909,1,930,1,975,1,1159,1,1300,29,1367,2,1376,1,1416,1,1419,6,1480,8,1515,5,1525,11,1540,7,1558,5,1564,2,1568,1,1595,5,1631,1,1806,1,1867,2,1902,18,1970,14,2043,262,2362,2,2382,2,2389,3,2417,10,2432,1,2436,1,2445,2,2449,2,2473,1,2481,1,2483,3,2490,2,2501,2,2505,2,2511,8,2520,4,2526,1,2532,2,2555,6,2564,1,2571,4,2577,2,2601,1,2609,1,2612,1,2615,1,2618,2,2621,1,2627,4,2633,2,2638,11,2653,1,2655,7,2677,12,2692,1,2702,1,2706,1,2729,1,2737,1,2740,1,2746,2,2758,1,2762,1,2766,2,2769,15,2788,2,2800,1,2802,15,2820,1,2829,2,2833,2,2857,1,2865,1,2868,1,2874,2,2884,3,2889,2,2894,8,2904,4,2910,1,2914,4,2930,16,2948,1,2955,3,2961,1,2966,3,2971,1,2973,1,2976,3,2981,3,2987,3,3002,4,3011,3,3017,1,3022,9,3032,14,3067,6,3076,1,3085,1,3089,1,3113,1,3124,1,3130,4,3141,1,3145,1,3150,7,3159,9,3170,4,3184,18,3204,1,3213,1,3217,1,3241,1,3252,1,3258,2,3269,1,3273,1,3278,7,3287,7,3295,1,3300,2,3312,1,3315,15,3332,1,3341,1,3345,1,3369,1,3386,4,3396,2,3401,1,3406,9,3416,8,3426,4,3440,18,3460,1,3479,3,3506,1,3516,1,3518,2,3527,3,3531,4,3541,1,3543,1,3552,18,3573,12,3643,4,3676,37,3715,1,3717,2,3721,1,3723,2,3726,6,3736,1,3744,1,3748,1,3750,1,3752,2,3756,1,3770,1,3774,2,3781,1,3783,1,3790,2,3802,2,3806,34,3912,1,3947,6,3980,4,3992,1,4029,1,4045,2,4050,46,4130,1,4136,1,4139,1,4147,3,4154,6,4186,70,4294,10,4349,3,4442,5,4515,5,4602,6,4681,1,4686,2,4695,1,4697,1,4702,2,4745,1,4750,2,4785,1,4790,2,4799,1,4801,1,4806,2,4823,1,4881,1,4886,2,4955,4,4989,3,5018,6,5109,12,5751,9,5789,3,5873,15,5901,1,5909,11,5943,9,5972,12,5997,1,6001,1,6004,12,6110,2,6122,6,6138,6,6159,1,6170,6,6264,8,6314,86,6429,3,6444,4,6460,4,6465,3,6510,2,6517,11,6570,6,6602,6,6618,4,6684,2,6688,224,6988,4,7037,387,7627,51,7836,4,7930,6,7958,2,7966,2,8006,2,8014,2,8024,1,8026,1,8028,1,8030,1,8062,2,8117,1,8133,1,8148,2,8156,1,8176,2,8181,1,8191,1,8292,6,8306,2,8335,1,8341,11,8374,26,8432,16,8527,4,8581,11,9192,24,9255,25,9291,21,9885,3,9907,78,9989,1,9994,2,10024,1,10060,1,10062,1,10067,3,10071,1,10079,2,10133,3,10160,1,10175,1,10187,5,10220,4,11035,5,11044,220,11311,1,11359,1,11373,7,11384,8,11499,14,11558,10,11622,9,11632,16,11671,9,11687,1,11695,1,11703,1,11711,1,11719,1,11727,1,11735,1,11743,33,11800,4,11806,98,11930,1,12020,12,12246,26,12284,4,12352,1,12439,2,12544,5,12589,4,12687,1,12728,8,12752,32,12831,1,12868,12,13055,1,19894,10,40892,68,42125,3,42183,569,42779,5,42786,222,43052,20,43128,904,55204,92,64046,2,64107,5,64218,38,64263,12,64280,5,64311,1,64317,1,64319,1,64322,1,64325,1,64434,33,64832,16,64912,2,64968,40,65022,2,65050,6,65060,12,65107,1,65127,1,65132,4,65141,1,65277,2,65280,1,65471,3,65480,2,65488,2,65496,2,65501,3,65511,1,65519,10]; +letterCharacterSet=[65,26,97,26,170,1,181,1,186,1,192,23,216,31,248,458,710,12,736,5,750,1,768,112,890,4,902,1,904,3,908,1,910,20,931,44,976,38,1015,139,1155,4,1160,140,1329,38,1369,1,1377,39,1425,45,1471,1,1473,2,1476,2,1479,1,1488,27,1520,3,1552,6,1569,26,1600,31,1646,102,1749,8,1758,11,1770,6,1786,3,1791,1,1808,59,1869,33,1920,50,1994,44,2042,1,2305,57,2364,18,2384,5,2392,12,2427,5,2433,3,2437,8,2447,2,2451,22,2474,7,2482,1,2486,4,2492,9,2503,2,2507,4,2519,1,2524,2,2527,5,2544,2,2561,3,2565,6,2575,2,2579,22,2602,7,2610,2,2613,2,2616,2,2620,1,2622,5,2631,2,2635,3,2649,4,2654,1,2672,5,2689,3,2693,9,2703,3,2707,22,2730,7,2738,2,2741,5,2748,10,2759,3,2763,3,2768,1,2784,4,2817,3,2821,8,2831,2,2835,22,2858,7,2866,2,2869,5,2876,8,2887,2,2891,3,2902,2,2908,2,2911,3,2929,1,2946,2,2949,6,2958,3,2962,4,2969,2,2972,1,2974,2,2979,2,2984,3,2990,12,3006,5,3014,3,3018,4,3031,1,3073,3,3077,8,3086,3,3090,23,3114,10,3125,5,3134,7,3142,3,3146,4,3157,2,3168,2,3202,2,3205,8,3214,3,3218,23,3242,10,3253,5,3260,9,3270,3,3274,4,3285,2,3294,1,3296,4,3330,2,3333,8,3342,3,3346,23,3370,16,3390,6,3398,3,3402,4,3415,1,3424,2,3458,2,3461,18,3482,24,3507,9,3517,1,3520,7,3530,1,3535,6,3542,1,3544,8,3570,2,3585,58,3648,15,3713,2,3716,1,3719,2,3722,1,3725,1,3732,4,3737,7,3745,3,3749,1,3751,1,3754,2,3757,13,3771,3,3776,5,3782,1,3784,6,3804,2,3840,1,3864,2,3893,1,3895,1,3897,1,3902,10,3913,34,3953,20,3974,6,3984,8,3993,36,4038,1,4096,34,4131,5,4137,2,4140,7,4150,4,4176,10,4256,38,4304,43,4348,1,4352,90,4447,68,4520,82,4608,73,4682,4,4688,7,4696,1,4698,4,4704,41,4746,4,4752,33,4786,4,4792,7,4800,1,4802,4,4808,15,4824,57,4882,4,4888,67,4959,1,4992,16,5024,85,5121,620,5743,8,5761,26,5792,75,5888,13,5902,7,5920,21,5952,20,5984,13,5998,3,6002,2,6016,52,6070,30,6103,1,6108,2,6155,3,6176,88,6272,42,6400,29,6432,12,6448,12,6480,30,6512,5,6528,42,6576,26,6656,28,6912,76,7019,9,7424,203,7678,158,7840,90,7936,22,7960,6,7968,38,8008,6,8016,8,8025,1,8027,1,8029,1,8031,31,8064,53,8118,7,8126,1,8130,3,8134,7,8144,4,8150,6,8160,13,8178,3,8182,7,8305,1,8319,1,8336,5,8400,32,8450,1,8455,1,8458,10,8469,1,8473,5,8484,1,8486,1,8488,1,8490,4,8495,11,8508,4,8517,5,8526,1,8579,2,11264,47,11312,47,11360,13,11380,4,11392,101,11520,38,11568,54,11631,1,11648,23,11680,7,11688,7,11696,7,11704,7,11712,7,11720,7,11728,7,11736,7,12293,2,12330,6,12337,5,12347,2,12353,86,12441,2,12445,3,12449,90,12540,4,12549,40,12593,94,12704,24,12784,16,13312,6582,19968,20924,40960,1165,42775,4,43008,40,43072,52,44032,11172,63744,302,64048,59,64112,106,64256,7,64275,5,64285,12,64298,13,64312,5,64318,1,64320,2,64323,2,64326,108,64467,363,64848,64,64914,54,65008,12,65024,16,65056,4,65136,5,65142,135,65313,26,65345,26,65382,89,65474,6,65482,6,65490,6]; +lowercaseLetterCharacterSet=[97,26,170,1,181,1,186,1,223,24,248,8,257,1,259,1,261,1,263,1,265,1,267,1,269,1,271,1,273,1,275,1,277,1,279,1,281,1,283,1,285,1,287,1,289,1,291,1,293,1,295,1,297,1,299,1,301,1,303,1,305,1,307,1,309,1,311,2,314,1,316,1,318,1,320,1,322,1,324,1,326,1,328,2,331,1,333,1,335,1,337,1,339,1,341,1,343,1,345,1,347,1,349,1,351,1,353,1,355,1,357,1,359,1,361,1,363,1,365,1,367,1,369,1,371,1,373,1,375,1,378,1,380,1,382,3,387,1,389,1,392,1,396,2,402,1,405,1,409,3,414,1,417,1,419,1,421,1,424,1,426,2,429,1,432,1,436,1,438,1,441,2,445,3,454,1,457,1,460,1,462,1,464,1,466,1,468,1,470,1,472,1,474,1,476,2,479,1,481,1,483,1,485,1,487,1,489,1,491,1,493,1,495,2,499,1,501,1,505,1,507,1,509,1,511,1,513,1,515,1,517,1,519,1,521,1,523,1,525,1,527,1,529,1,531,1,533,1,535,1,537,1,539,1,541,1,543,1,545,1,547,1,549,1,551,1,553,1,555,1,557,1,559,1,561,1,563,7,572,1,575,2,578,1,583,1,585,1,587,1,589,1,591,69,661,27,891,3,912,1,940,35,976,2,981,3,985,1,987,1,989,1,991,1,993,1,995,1,997,1,999,1,1001,1,1003,1,1005,1,1007,5,1013,1,1016,1,1019,2,1072,48,1121,1,1123,1,1125,1,1127,1,1129,1,1131,1,1133,1,1135,1,1137,1,1139,1,1141,1,1143,1,1145,1,1147,1,1149,1,1151,1,1153,1,1163,1,1165,1,1167,1,1169,1,1171,1,1173,1,1175,1,1177,1,1179,1,1181,1,1183,1,1185,1,1187,1,1189,1,1191,1,1193,1,1195,1,1197,1,1199,1,1201,1,1203,1,1205,1,1207,1,1209,1,1211,1,1213,1,1215,1,1218,1,1220,1,1222,1,1224,1,1226,1,1228,1,1230,2,1233,1,1235,1,1237,1,1239,1,1241,1,1243,1,1245,1,1247,1,1249,1,1251,1,1253,1,1255,1,1257,1,1259,1,1261,1,1263,1,1265,1,1267,1,1269,1,1271,1,1273,1,1275,1,1277,1,1279,1,1281,1,1283,1,1285,1,1287,1,1289,1,1291,1,1293,1,1295,1,1297,1,1299,1,1377,39,7424,44,7522,22,7545,34,7681,1,7683,1,7685,1,7687,1,7689,1,7691,1,7693,1,7695,1,7697,1,7699,1,7701,1,7703,1,7705,1,7707,1,7709,1,7711,1,7713,1,7715,1,7717,1,7719,1,7721,1,7723,1,7725,1,7727,1,7729,1,7731,1,7733,1,7735,1,7737,1,7739,1,7741,1,7743,1,7745,1,7747,1,7749,1,7751,1,7753,1,7755,1,7757,1,7759,1,7761,1,7763,1,7765,1,7767,1,7769,1,7771,1,7773,1,7775,1,7777,1,7779,1,7781,1,7783,1,7785,1,7787,1,7789,1,7791,1,7793,1,7795,1,7797,1,7799,1,7801,1,7803,1,7805,1,7807,1,7809,1,7811,1,7813,1,7815,1,7817,1,7819,1,7821,1,7823,1,7825,1,7827,1,7829,7,7841,1,7843,1,7845,1,7847,1,7849,1,7851,1,7853,1,7855,1,7857,1,7859,1,7861,1,7863,1,7865,1,7867,1,7869,1,7871,1,7873,1,7875,1,7877,1,7879,1,7881,1,7883,1,7885,1,7887,1,7889,1,7891,1,7893,1,7895,1,7897,1,7899,1,7901,1,7903,1,7905,1,7907,1,7909,1,7911,1,7913,1,7915,1,7917,1,7919,1,7921,1,7923,1,7925,1,7927,1,7929,1,7936,8,7952,6,7968,8,7984,8,8000,6,8016,8,8032,8,8048,14,8064,8,8080,8,8096,8,8112,5,8118,2,8126,1,8130,3,8134,2,8144,4,8150,2,8160,8,8178,3,8182,2,8305,1,8319,1,8458,1,8462,2,8467,1,8495,1,8500,1,8505,1,8508,2,8518,4,8526,1,8580,1,11312,47,11361,1,11365,2,11368,1,11370,1,11372,1,11380,1,11382,2,11393,1,11395,1,11397,1,11399,1,11401,1,11403,1,11405,1,11407,1,11409,1,11411,1,11413,1,11415,1,11417,1,11419,1,11421,1,11423,1,11425,1,11427,1,11429,1,11431,1,11433,1,11435,1,11437,1,11439,1,11441,1,11443,1,11445,1,11447,1,11449,1,11451,1,11453,1,11455,1,11457,1,11459,1,11461,1,11463,1,11465,1,11467,1,11469,1,11471,1,11473,1,11475,1,11477,1,11479,1,11481,1,11483,1,11485,1,11487,1,11489,1,11491,2,11520,38,64256,7,64275,5]; +nonBaseCharacterSet=[768,112,1155,4,1160,2,1425,45,1471,1,1473,2,1476,2,1479,1,1552,6,1611,20,1648,1,1750,7,1758,7,1767,2,1770,4,1809,1,1840,27,1958,11,2027,9,2305,3,2364,1,2366,16,2385,4,2402,2,2433,3,2492,1,2494,7,2503,2,2507,3,2519,1,2530,2,2561,3,2620,1,2622,5,2631,2,2635,3,2672,2,2689,3,2748,1,2750,8,2759,3,2763,3,2786,2,2817,3,2876,1,2878,6,2887,2,2891,3,2902,2,2946,1,3006,5,3014,3,3018,4,3031,1,3073,3,3134,7,3142,3,3146,4,3157,2,3202,2,3260,1,3262,7,3270,3,3274,4,3285,2,3298,2,3330,2,3390,6,3398,3,3402,4,3415,1,3458,2,3530,1,3535,6,3542,1,3544,8,3570,2,3633,1,3636,7,3655,8,3761,1,3764,6,3771,2,3784,6,3864,2,3893,1,3895,1,3897,1,3902,2,3953,20,3974,2,3984,8,3993,36,4038,1,4140,7,4150,4,4182,4,4959,1,5906,3,5938,3,5970,2,6002,2,6070,30,6109,1,6155,3,6313,1,6432,12,6448,12,6576,17,6600,2,6679,5,6912,5,6964,17,7019,9,7616,11,7678,2,8400,32,12330,6,12441,2,43010,1,43014,1,43019,1,43043,5,64286,1,65024,16]; +punctuationCharacterSet=[33,3,37,6,44,4,58,2,63,2,91,3,95,1,123,1,125,1,161,1,171,1,183,1,187,1,191,1,894,1,903,1,1370,6,1417,2,1470,1,1472,1,1475,1,1478,1,1523,2,1548,2,1563,1,1566,2,1642,4,1748,1,1792,14,2039,3,2404,2,2416,1,3572,1,3663,1,3674,2,3844,15,3898,4,3973,1,4048,2,4170,6,4347,1,4961,8,5741,2,5787,2,5867,3,5941,2,6100,3,6104,3,6144,11,6468,2,6622,2,6686,2,7002,7,8208,24,8240,20,8261,13,8275,12,8317,2,8333,2,9001,2,10088,14,10181,2,10214,6,10627,22,10712,4,10748,2,11513,4,11518,2,11776,24,11804,2,12289,3,12296,10,12308,12,12336,1,12349,1,12448,1,12539,1,43124,4,64830,2,65040,10,65072,35,65108,14,65123,1,65128,1,65130,2,65281,3,65285,6,65292,4,65306,2,65311,2,65339,3,65343,1,65371,1,65373,1]; +uppercaseLetterCharacterSet=[65,26,192,23,216,7,256,1,258,1,260,1,262,1,264,1,266,1,268,1,270,1,272,1,274,1,276,1,278,1,280,1,282,1,284,1,286,1,288,1,290,1,292,1,294,1,296,1,298,1,300,1,302,1,304,1,306,1,308,1,310,1,313,1,315,1,317,1,319,1,321,1,323,1,325,1,327,1,330,1,332,1,334,1,336,1,338,1,340,1,342,1,344,1,346,1,348,1,350,1,352,1,354,1,356,1,358,1,360,1,362,1,364,1,366,1,368,1,370,1,372,1,374,1,376,2,379,1,381,1,385,2,388,1,390,2,393,3,398,4,403,2,406,3,412,2,415,2,418,1,420,1,422,2,425,1,428,1,430,2,433,3,437,1,439,2,444,1,452,2,455,2,458,2,461,1,463,1,465,1,467,1,469,1,471,1,473,1,475,1,478,1,480,1,482,1,484,1,486,1,488,1,490,1,492,1,494,1,497,2,500,1,502,3,506,1,508,1,510,1,512,1,514,1,516,1,518,1,520,1,522,1,524,1,526,1,528,1,530,1,532,1,534,1,536,1,538,1,540,1,542,1,544,1,546,1,548,1,550,1,552,1,554,1,556,1,558,1,560,1,562,1,570,2,573,2,577,1,579,4,584,1,586,1,588,1,590,1,902,1,904,3,908,1,910,2,913,17,931,9,978,3,984,1,986,1,988,1,990,1,992,1,994,1,996,1,998,1,1000,1,1002,1,1004,1,1006,1,1012,1,1015,1,1017,2,1021,51,1120,1,1122,1,1124,1,1126,1,1128,1,1130,1,1132,1,1134,1,1136,1,1138,1,1140,1,1142,1,1144,1,1146,1,1148,1,1150,1,1152,1,1162,1,1164,1,1166,1,1168,1,1170,1,1172,1,1174,1,1176,1,1178,1,1180,1,1182,1,1184,1,1186,1,1188,1,1190,1,1192,1,1194,1,1196,1,1198,1,1200,1,1202,1,1204,1,1206,1,1208,1,1210,1,1212,1,1214,1,1216,2,1219,1,1221,1,1223,1,1225,1,1227,1,1229,1,1232,1,1234,1,1236,1,1238,1,1240,1,1242,1,1244,1,1246,1,1248,1,1250,1,1252,1,1254,1,1256,1,1258,1,1260,1,1262,1,1264,1,1266,1,1268,1,1270,1,1272,1,1274,1,1276,1,1278,1,1280,1,1282,1,1284,1,1286,1,1288,1,1290,1,1292,1,1294,1,1296,1,1298,1,1329,38,4256,38,7680,1,7682,1,7684,1,7686,1,7688,1,7690,1,7692,1,7694,1,7696,1,7698,1,7700,1,7702,1,7704,1,7706,1,7708,1,7710,1,7712,1,7714,1,7716,1,7718,1,7720,1,7722,1,7724,1,7726,1,7728,1,7730,1,7732,1,7734,1,7736,1,7738,1,7740,1,7742,1,7744,1,7746,1,7748,1,7750,1,7752,1,7754,1,7756,1,7758,1,7760,1,7762,1,7764,1,7766,1,7768,1,7770,1,7772,1,7774,1,7776,1,7778,1,7780,1,7782,1,7784,1,7786,1,7788,1,7790,1,7792,1,7794,1,7796,1,7798,1,7800,1,7802,1,7804,1,7806,1,7808,1,7810,1,7812,1,7814,1,7816,1,7818,1,7820,1,7822,1,7824,1,7826,1,7828,1,7840,1,7842,1,7844,1,7846,1,7848,1,7850,1,7852,1,7854,1,7856,1,7858,1,7860,1,7862,1,7864,1,7866,1,7868,1,7870,1,7872,1,7874,1,7876,1,7878,1,7880,1,7882,1,7884,1,7886,1,7888,1,7890,1,7892,1,7894,1,7896,1,7898,1,7900,1,7902,1,7904,1,7906,1,7908,1,7910,1,7912,1,7914,1,7916,1,7918,1,7920,1,7922,1,7924,1,7926,1,7928,1,7944,8,7960,6,7976,8,7992,8,8008,6,8025,1,8027,1,8029,1,8031,1,8040,8,8072,8,8088,8,8104,8,8120,5,8136,5,8152,4,8168,5,8184,5,8450,1,8455,1,8459,3,8464,3,8469,1,8473,5,8484,1,8486,1,8488,1,8490,4,8496,4,8510,2,8517,1,8579,1,11264,47,11360,1,11362,3,11367,1,11369,1,11371,1,11381,1,11392,1,11394,1,11396,1,11398,1,11400,1,11402,1,11404,1,11406,1,11408,1,11410,1,11412,1,11414,1,11416,1,11418,1,11420,1,11422,1,11424,1,11426,1,11428,1,11430,1,11432,1,11434,1,11436,1,11438,1,11440,1,11442,1,11444,1,11446,1,11448,1,11450,1,11452,1,11454,1,11456,1,11458,1,11460,1,11462,1,11464,1,11466,1,11468,1,11470,1,11472,1,11474,1,11476,1,11478,1,11480,1,11482,1,11484,1,11486,1,11488,1,11490,1]; +whitespaceAndNewlineCharacterSet=[9,5,32,1,133,1,160,1,5760,1,8192,12,8232,2,8239,1,8287,1]; +whitespaceCharacterSet=[9,1,32,1,160,1,5760,1,8192,12,8239,1,8287,1]; +p;9;CPCoder.jt;1892;@STATIC;1.0;i;13;CPException.ji;10;CPObject.jt;1840; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPCoder"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("allowsKeyedCoding"),function(_3,_4){ +with(_3){ +return NO; +} +}),new objj_method(sel_getUid("encodeValueOfObjCType:at:"),function(_5,_6,_7,_8){ +with(_5){ +CPInvalidAbstractInvocation(); +} +}),new objj_method(sel_getUid("encodeDataObject:"),function(_9,_a,_b){ +with(_9){ +CPInvalidAbstractInvocation(); +} +}),new objj_method(sel_getUid("encodeObject:"),function(_c,_d,_e){ +with(_c){ +} +}),new objj_method(sel_getUid("encodePoint:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_f,"encodeNumber:",_11.x); +objj_msgSend(_f,"encodeNumber:",_11.y); +} +}),new objj_method(sel_getUid("encodeRect:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_12,"encodePoint:",_14.origin); +objj_msgSend(_12,"encodeSize:",_14.size); +} +}),new objj_method(sel_getUid("encodeSize:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"encodeNumber:",_17.width); +objj_msgSend(_15,"encodeNumber:",_17.height); +} +}),new objj_method(sel_getUid("encodePropertyList:"),function(_18,_19,_1a){ +with(_18){ +} +}),new objj_method(sel_getUid("encodeRootObject:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"encodeObject:",_1d); +} +}),new objj_method(sel_getUid("encodeBycopyObject:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_1e,"encodeObject:",_20); +} +}),new objj_method(sel_getUid("encodeConditionalObject:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(_21,"encodeObject:",_23); +} +})]); +var _1=objj_getClass("CPObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("awakeAfterUsingCoder:"),function(_24,_25,_26){ +with(_24){ +return _24; +} +})]); +p;14;CPCountedSet.jt;1287;@STATIC;1.0;i;7;CPSet.jt;1257; +objj_executeFile("CPSet.j",YES); +var _1=objj_allocateClassPair(CPMutableSet,"CPCountedSet"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_counts")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("addObject:"),function(_3,_4,_5){ +with(_3){ +if(!_counts){ +_counts={}; +} +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCountedSet").super_class},"addObject:",_5); +var _6=objj_msgSend(_5,"UID"); +if(_counts[_6]===undefined){ +_counts[_6]=1; +}else{ +++_counts[_6]; +} +} +}),new objj_method(sel_getUid("removeObject:"),function(_7,_8,_9){ +with(_7){ +if(!_counts){ +return; +} +var _a=objj_msgSend(_9,"UID"); +if(_counts[_a]===undefined){ +return; +}else{ +--_counts[_a]; +if(_counts[_a]===0){ +delete _counts[_a]; +objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPCountedSet").super_class},"removeObject:",_9); +} +} +} +}),new objj_method(sel_getUid("removeAllObjects"),function(_b,_c){ +with(_b){ +objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPCountedSet").super_class},"removeAllObjects"); +_counts={}; +} +}),new objj_method(sel_getUid("countForObject:"),function(_d,_e,_f){ +with(_d){ +if(!_counts){ +_counts={}; +} +var UID=objj_msgSend(_f,"UID"); +if(_counts[UID]===undefined){ +return 0; +} +return _counts[UID]; +} +})]); +p;8;CPData.jt;4290;@STATIC;1.0;i;10;CPObject.ji;10;CPString.jt;4241; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPData"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithRawString:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPData").super_class},"init"); +if(_3){ +objj_msgSend(_3,"setRawString:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("initWithPlistObject:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPData").super_class},"init"); +if(_6){ +objj_msgSend(_6,"setPlistObject:",_8); +} +return _6; +} +}),new objj_method(sel_getUid("initWithPlistObject:format:"),function(_9,_a,_b,_c){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("CPData").super_class},"init"); +if(_9){ +objj_msgSend(_9,"setPlistObject:format:",_b,_c); +} +return _9; +} +}),new objj_method(sel_getUid("initWithJSONObject:"),function(_d,_e,_f){ +with(_d){ +_d=objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPData").super_class},"init"); +if(_d){ +objj_msgSend(_d,"setJSONObject:",_f); +} +return _d; +} +}),new objj_method(sel_getUid("rawString"),function(_10,_11){ +with(_10){ +return _10.rawString(); +} +}),new objj_method(sel_getUid("plistObject"),function(_12,_13){ +with(_12){ +return _12.propertyList(); +} +}),new objj_method(sel_getUid("JSONObject"),function(_14,_15){ +with(_14){ +return _14.JSONObject(); +} +}),new objj_method(sel_getUid("length"),function(_16,_17){ +with(_16){ +return objj_msgSend(objj_msgSend(_16,"rawString"),"length"); +} +}),new objj_method(sel_getUid("description"),function(_18,_19){ +with(_18){ +return _18.toString(); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_1a,_1b){ +with(_1a){ +return new CFMutableData(); +} +}),new objj_method(sel_getUid("data"),function(_1c,_1d){ +with(_1c){ +return objj_msgSend(objj_msgSend(_1c,"alloc"),"init"); +} +}),new objj_method(sel_getUid("dataWithRawString:"),function(_1e,_1f,_20){ +with(_1e){ +return objj_msgSend(objj_msgSend(_1e,"alloc"),"initWithRawString:",_20); +} +}),new objj_method(sel_getUid("dataWithPlistObject:"),function(_21,_22,_23){ +with(_21){ +return objj_msgSend(objj_msgSend(_21,"alloc"),"initWithPlistObject:",_23); +} +}),new objj_method(sel_getUid("dataWithPlistObject:format:"),function(_24,_25,_26,_27){ +with(_24){ +return objj_msgSend(objj_msgSend(_24,"alloc"),"initWithPlistObject:format:",_26,_27); +} +}),new objj_method(sel_getUid("dataWithJSONObject:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(objj_msgSend(_28,"alloc"),"initWithJSONObject:",_2a); +} +})]); +var _1=objj_getClass("CPData"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPData\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setRawString:"),function(_2b,_2c,_2d){ +with(_2b){ +_2b.setRawString(_2d); +} +}),new objj_method(sel_getUid("setPlistObject:"),function(_2e,_2f,_30){ +with(_2e){ +_2e.setPropertyList(_30); +} +}),new objj_method(sel_getUid("setPlistObject:format:"),function(_31,_32,_33,_34){ +with(_31){ +_31.setPropertyList(_33,_34); +} +}),new objj_method(sel_getUid("setJSONObject:"),function(_35,_36,_37){ +with(_35){ +_35.setJSONObject(_37); +} +})]); +var _1=objj_getClass("CPData"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPData\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithString:"),function(_38,_39,_3a){ +with(_38){ +_CPReportLenientDeprecation(_38,_39,sel_getUid("initWithRawString:")); +return objj_msgSend(_38,"initWithRawString:",_3a); +} +}),new objj_method(sel_getUid("setString:"),function(_3b,_3c,_3d){ +with(_3b){ +_CPReportLenientDeprecation(_3b,_3c,sel_getUid("setRawString:")); +objj_msgSend(_3b,"setRawString:",_3d); +} +}),new objj_method(sel_getUid("string"),function(_3e,_3f){ +with(_3e){ +_CPReportLenientDeprecation(_3e,_3f,sel_getUid("rawString")); +return objj_msgSend(_3e,"rawString"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("dataWithString:"),function(_40,_41,_42){ +with(_40){ +_CPReportLenientDeprecation(_40,_41,sel_getUid("dataWithRawString:")); +return objj_msgSend(_40,"dataWithRawString:",_42); +} +})]); +CFData.prototype.isa=CPData; +CFMutableData.prototype.isa=CPData; +p;8;CPDate.jt;5033;@STATIC;1.0;i;10;CPObject.ji;10;CPString.jt;4984; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +var _1=new Date(Date.UTC(2001,1,1,0,0,0,0)); +var _2=objj_allocateClassPair(CPObject,"CPDate"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithTimeIntervalSinceNow:"),function(_4,_5,_6){ +with(_4){ +_4=new Date((new Date()).getTime()+_6*1000); +return _4; +} +}),new objj_method(sel_getUid("initWithTimeIntervalSince1970:"),function(_7,_8,_9){ +with(_7){ +_7=new Date(_9*1000); +return _7; +} +}),new objj_method(sel_getUid("initWithTimeIntervalSinceReferenceDate:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSend(_a,"initWithTimeInterval:sinceDate:",_c,_1); +return _a; +} +}),new objj_method(sel_getUid("initWithTimeInterval:sinceDate:"),function(_d,_e,_f,_10){ +with(_d){ +_d=new Date(_10.getTime()+_f*1000); +return _d; +} +}),new objj_method(sel_getUid("initWithString:"),function(_11,_12,_13){ +with(_11){ +var _14=/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}) ([-+])(\d{2})(\d{2})/,d=_13.match(new RegExp(_14)); +if(!d||d.length!=10){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"initWithString: the string must be of YYYY-MM-DD HH:MM:SS ±HHMM format"); +} +var _15=new Date(d[1],d[2]-1,d[3]),_16=(Number(d[8])*60+Number(d[9]))*(d[7]==="-"?-1:1); +_15.setHours(d[4]); +_15.setMinutes(d[5]); +_15.setSeconds(d[6]); +_11=new Date(_15.getTime()+(_16-_15.getTimezoneOffset())*60*1000); +return _11; +} +}),new objj_method(sel_getUid("timeIntervalSinceDate:"),function(_17,_18,_19){ +with(_17){ +return (_17.getTime()-_19.getTime())/1000; +} +}),new objj_method(sel_getUid("timeIntervalSinceNow"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_1a,"timeIntervalSinceDate:",objj_msgSend(CPDate,"date")); +} +}),new objj_method(sel_getUid("timeIntervalSince1970"),function(_1c,_1d){ +with(_1c){ +return _1c.getTime()/1000; +} +}),new objj_method(sel_getUid("timeIntervalSinceReferenceDate"),function(_1e,_1f){ +with(_1e){ +return (_1e.getTime()-_1.getTime())/1000; +} +}),new objj_method(sel_getUid("isEqual:"),function(_20,_21,_22){ +with(_20){ +if(_20===_22){ +return YES; +} +if(!_22||!objj_msgSend(_22,"isKindOfClass:",objj_msgSend(CPDate,"class"))){ +return NO; +} +return objj_msgSend(_20,"isEqualToDate:",_22); +} +}),new objj_method(sel_getUid("isEqualToDate:"),function(_23,_24,_25){ +with(_23){ +if(!_25){ +return NO; +} +return !(_23<_25||_23>_25); +} +}),new objj_method(sel_getUid("compare:"),function(_26,_27,_28){ +with(_26){ +return (_26>_28)?CPOrderedDescending:((_26<_28)?CPOrderedAscending:CPOrderedSame); +} +}),new objj_method(sel_getUid("earlierDate:"),function(_29,_2a,_2b){ +with(_29){ +return (_29<_2b)?_29:_2b; +} +}),new objj_method(sel_getUid("laterDate:"),function(_2c,_2d,_2e){ +with(_2c){ +return (_2c>_2e)?_2c:_2e; +} +}),new objj_method(sel_getUid("description"),function(_2f,_30){ +with(_2f){ +var _31=_2f.getTimezoneOffset()>=0,_32=FLOOR(_2f.getTimezoneOffset()/60),_33=_2f.getTimezoneOffset()-_32*60; +return objj_msgSend(CPString,"stringWithFormat:","%04d-%02d-%02d %02d:%02d:%02d %s%02d%02d",_2f.getFullYear(),_2f.getMonth()+1,_2f.getDate(),_2f.getHours(),_2f.getMinutes(),_2f.getSeconds(),_31?"+":"-",ABS(_32),ABS(_33)); +} +}),new objj_method(sel_getUid("copy"),function(_34,_35){ +with(_34){ +return new Date(_34.getTime()); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("alloc"),function(_36,_37){ +with(_36){ +return new Date; +} +}),new objj_method(sel_getUid("date"),function(_38,_39){ +with(_38){ +return objj_msgSend(objj_msgSend(_38,"alloc"),"init"); +} +}),new objj_method(sel_getUid("dateWithTimeIntervalSinceNow:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSinceNow:",_3c); +} +}),new objj_method(sel_getUid("dateWithTimeIntervalSince1970:"),function(_3d,_3e,_3f){ +with(_3d){ +return objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSince1970:",_3f); +} +}),new objj_method(sel_getUid("dateWithTimeIntervalSinceReferenceDate:"),function(_40,_41,_42){ +with(_40){ +return objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSinceReferenceDate:",_42); +} +}),new objj_method(sel_getUid("distantPast"),function(_43,_44){ +with(_43){ +return new Date(-10000,1,1,0,0,0,0); +} +}),new objj_method(sel_getUid("distantFuture"),function(_45,_46){ +with(_45){ +return new Date(10000,1,1,0,0,0,0); +} +}),new objj_method(sel_getUid("timeIntervalSinceReferenceDate"),function(_47,_48){ +with(_47){ +return objj_msgSend(objj_msgSend(CPDate,"date"),"timeIntervalSinceReferenceDate"); +} +})]); +var _49="CPDateTimeKey"; +var _2=objj_getClass("CPDate"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDate\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_4a,_4b,_4c){ +with(_4a){ +if(_4a){ +_4a.setTime(objj_msgSend(_4c,"decodeIntForKey:",_49)); +} +return _4a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_4d,_4e,_4f){ +with(_4d){ +objj_msgSend(_4f,"encodeInt:forKey:",_4d.getTime(),_49); +} +})]); +Date.prototype.isa=CPDate; +p;14;CPDictionary.jt;8238;@STATIC;1.0;i;9;CPArray.ji;14;CPEnumerator.ji;13;CPException.ji;10;CPObject.jt;8154; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPEnumerator,"_CPDictionaryValueEnumerator"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyEnumerator"),new objj_ivar("_dictionary")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithDictionary:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPDictionaryValueEnumerator").super_class},"init"); +if(_3){ +_keyEnumerator=objj_msgSend(_5,"keyEnumerator"); +_dictionary=_5; +} +return _3; +} +}),new objj_method(sel_getUid("nextObject"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_keyEnumerator,"nextObject"); +if(!_8){ +return nil; +} +return objj_msgSend(_dictionary,"objectForKey:",_8); +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPDictionary"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithDictionary:"),function(_9,_a,_b){ +with(_9){ +var _c="",_d=objj_msgSend(objj_msgSend(CPDictionary,"alloc"),"init"); +for(_c in _b._buckets){ +objj_msgSend(_d,"setObject:forKey:",objj_msgSend(_b,"objectForKey:",_c),_c); +} +return _d; +} +}),new objj_method(sel_getUid("initWithObjects:forKeys:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPDictionary").super_class},"init"); +if(objj_msgSend(_10,"count")!=objj_msgSend(_11,"count")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Counts are different.("+objj_msgSend(_10,"count")+"!="+objj_msgSend(_11,"count")+")"); +} +if(_e){ +var i=objj_msgSend(_11,"count"); +while(i--){ +objj_msgSend(_e,"setObject:forKey:",_10[i],_11[i]); +} +} +return _e; +} +}),new objj_method(sel_getUid("initWithObjectsAndKeys:"),function(_12,_13,_14){ +with(_12){ +var _15=arguments.length; +if(_15%2!==0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Key-value count is mismatched. ("+_15+" arguments passed)"); +} +_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPDictionary").super_class},"init"); +if(_12){ +var _16=2; +for(;_16<_15;_16+=2){ +var _17=arguments[_16]; +if(_17===nil){ +break; +} +objj_msgSend(_12,"setObject:forKey:",_17,arguments[_16+1]); +} +} +return _12; +} +}),new objj_method(sel_getUid("copy"),function(_18,_19){ +with(_18){ +return objj_msgSend(CPDictionary,"dictionaryWithDictionary:",_18); +} +}),new objj_method(sel_getUid("count"),function(_1a,_1b){ +with(_1a){ +return _count; +} +}),new objj_method(sel_getUid("allKeys"),function(_1c,_1d){ +with(_1c){ +return objj_msgSend(_keys,"copy"); +} +}),new objj_method(sel_getUid("allValues"),function(_1e,_1f){ +with(_1e){ +var _20=_keys.length,_21=[]; +while(_20--){ +_21.push(_1e.valueForKey(_keys[_20])); +} +return _21; +} +}),new objj_method(sel_getUid("allKeysForObject:"),function(_22,_23,_24){ +with(_22){ +var _25=_keys.length,_26=0,_27=[],_28=nil,_29=nil; +for(;_26<_25;++_26){ +_28=_keys[_26],_29=_buckets[_28]; +if(_29.isa&&_24&&_24.isa&&objj_msgSend(_29,"respondsToSelector:",sel_getUid("isEqual:"))&&objj_msgSend(_29,"isEqual:",_24)){ +_27.push(_28); +}else{ +if(_29===_24){ +_27.push(_28); +} +} +} +return _27; +} +}),new objj_method(sel_getUid("keyEnumerator"),function(_2a,_2b){ +with(_2a){ +return objj_msgSend(_keys,"objectEnumerator"); +} +}),new objj_method(sel_getUid("objectEnumerator"),function(_2c,_2d){ +with(_2c){ +return objj_msgSend(objj_msgSend(_CPDictionaryValueEnumerator,"alloc"),"initWithDictionary:",_2c); +} +}),new objj_method(sel_getUid("isEqualToDictionary:"),function(_2e,_2f,_30){ +with(_2e){ +if(_2e===_30){ +return YES; +} +var _31=objj_msgSend(_2e,"count"); +if(_31!==objj_msgSend(_30,"count")){ +return NO; +} +var _32=_31; +while(_32--){ +var _33=_keys[_32],_34=_buckets[_33],_35=_30._buckets[_33]; +if(_34===_35){ +continue; +} +if(_34&&_34.isa&&_35&&_35.isa&&objj_msgSend(_34,"respondsToSelector:",sel_getUid("isEqual:"))&&objj_msgSend(_34,"isEqual:",_35)){ +continue; +} +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("isEqual:"),function(_36,_37,_38){ +with(_36){ +if(_36===_38){ +return YES; +} +if(!objj_msgSend(_38,"isKindOfClass:",objj_msgSend(CPDictionary,"class"))){ +return NO; +} +return objj_msgSend(_36,"isEqualToDictionary:",_38); +} +}),new objj_method(sel_getUid("objectForKey:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=_buckets[_3b]; +return (_3c===undefined)?nil:_3c; +} +}),new objj_method(sel_getUid("removeAllObjects"),function(_3d,_3e){ +with(_3d){ +_3d.removeAllValues(); +} +}),new objj_method(sel_getUid("removeObjectForKey:"),function(_3f,_40,_41){ +with(_3f){ +_3f.removeValueForKey(_41); +} +}),new objj_method(sel_getUid("removeObjectsForKeys:"),function(_42,_43,_44){ +with(_42){ +var _45=_44.length; +while(_45--){ +objj_msgSend(_42,"removeObjectForKey:",_44[_45]); +} +} +}),new objj_method(sel_getUid("setObject:forKey:"),function(_46,_47,_48,_49){ +with(_46){ +_46.setValueForKey(_49,_48); +} +}),new objj_method(sel_getUid("addEntriesFromDictionary:"),function(_4a,_4b,_4c){ +with(_4a){ +if(!_4c){ +return; +} +var _4d=objj_msgSend(_4c,"allKeys"),_4e=objj_msgSend(_4d,"count"); +while(_4e--){ +var key=_4d[_4e]; +objj_msgSend(_4a,"setObject:forKey:",objj_msgSend(_4c,"objectForKey:",key),key); +} +} +}),new objj_method(sel_getUid("description"),function(_4f,_50){ +with(_4f){ +return _4f.toString(); +} +}),new objj_method(sel_getUid("containsKey:"),function(_51,_52,_53){ +with(_51){ +var _54=objj_msgSend(_51,"objectForKey:",_53); +return ((_54!==nil)&&(_54!==undefined)); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_55,_56){ +with(_55){ +return new CFMutableDictionary(); +} +}),new objj_method(sel_getUid("dictionary"),function(_57,_58){ +with(_57){ +return objj_msgSend(objj_msgSend(_57,"alloc"),"init"); +} +}),new objj_method(sel_getUid("dictionaryWithDictionary:"),function(_59,_5a,_5b){ +with(_59){ +return objj_msgSend(objj_msgSend(_59,"alloc"),"initWithDictionary:",_5b); +} +}),new objj_method(sel_getUid("dictionaryWithObject:forKey:"),function(_5c,_5d,_5e,_5f){ +with(_5c){ +return objj_msgSend(objj_msgSend(_5c,"alloc"),"initWithObjects:forKeys:",[_5e],[_5f]); +} +}),new objj_method(sel_getUid("dictionaryWithObjects:forKeys:"),function(_60,_61,_62,_63){ +with(_60){ +return objj_msgSend(objj_msgSend(_60,"alloc"),"initWithObjects:forKeys:",_62,_63); +} +}),new objj_method(sel_getUid("dictionaryWithJSObject:"),function(_64,_65,_66){ +with(_64){ +return objj_msgSend(_64,"dictionaryWithJSObject:recursively:",_66,NO); +} +}),new objj_method(sel_getUid("dictionaryWithJSObject:recursively:"),function(_67,_68,_69,_6a){ +with(_67){ +var key="",_6b=objj_msgSend(objj_msgSend(_67,"alloc"),"init"); +for(key in _69){ +if(!_69.hasOwnProperty(key)){ +continue; +} +var _6c=_69[key]; +if(_6c===null){ +objj_msgSend(_6b,"setObject:forKey:",objj_msgSend(CPNull,"null"),key); +continue; +} +if(_6a){ +if(_6c.constructor===Object){ +_6c=objj_msgSend(CPDictionary,"dictionaryWithJSObject:recursively:",_6c,YES); +}else{ +if(objj_msgSend(_6c,"isKindOfClass:",CPArray)){ +var _6d=[],i=0,_6e=_6c.length; +for(;i<_6e;i++){ +var _6f=_6c[i]; +if(_6f.constructor===Object){ +_6d.push(objj_msgSend(CPDictionary,"dictionaryWithJSObject:recursively:",_6f,YES)); +}else{ +_6d.push(_6f); +} +} +_6c=_6d; +} +} +} +objj_msgSend(_6b,"setObject:forKey:",_6c,key); +} +return _6b; +} +}),new objj_method(sel_getUid("dictionaryWithObjectsAndKeys:"),function(_70,_71,_72){ +with(_70){ +arguments[0]=objj_msgSend(_70,"alloc"); +arguments[1]=sel_getUid("initWithObjectsAndKeys:"); +return objj_msgSend.apply(this,arguments); +} +})]); +var _1=objj_getClass("CPDictionary"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPDictionary\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_73,_74,_75){ +with(_73){ +return objj_msgSend(_75,"_decodeDictionaryOfObjectsForKey:","CP.objects"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_76,_77,_78){ +with(_76){ +objj_msgSend(_78,"_encodeDictionaryOfObjects:forKey:",_76,"CP.objects"); +} +})]); +var _1=objj_allocateClassPair(CPDictionary,"CPMutableDictionary"),_2=_1.isa; +objj_registerClassPair(_1); +CFDictionary.prototype.isa=CPDictionary; +CFMutableDictionary.prototype.isa=CPMutableDictionary; +p;14;CPEnumerator.jt;357;@STATIC;1.0;i;10;CPObject.jt;324; +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPEnumerator"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("nextObject"),function(_3,_4){ +with(_3){ +return nil; +} +}),new objj_method(sel_getUid("allObjects"),function(_5,_6){ +with(_5){ +return []; +} +})]); +p;13;CPException.jt;3505;@STATIC;1.0;i;9;CPCoder.ji;10;CPObject.ji;10;CPString.jt;3443; +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +CPInvalidArgumentException="CPInvalidArgumentException"; +CPUnsupportedMethodException="CPUnsupportedMethodException"; +CPRangeException="CPRangeException"; +CPInternalInconsistencyException="CPInternalInconsistencyException"; +var _1=objj_allocateClassPair(CPObject,"CPException"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_userInfo")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithName:reason:userInfo:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPException").super_class},"init"); +if(_3){ +name=_5; +message=_6; +_userInfo=_7; +} +return _3; +} +}),new objj_method(sel_getUid("name"),function(_8,_9){ +with(_8){ +return name; +} +}),new objj_method(sel_getUid("reason"),function(_a,_b){ +with(_a){ +return message; +} +}),new objj_method(sel_getUid("userInfo"),function(_c,_d){ +with(_c){ +return _userInfo; +} +}),new objj_method(sel_getUid("description"),function(_e,_f){ +with(_e){ +return message; +} +}),new objj_method(sel_getUid("raise"),function(_10,_11){ +with(_10){ +throw _10; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_12,_13){ +with(_12){ +return new Error(); +} +}),new objj_method(sel_getUid("raise:reason:"),function(_14,_15,_16,_17){ +with(_14){ +objj_msgSend(objj_msgSend(_14,"exceptionWithName:reason:userInfo:",_16,_17,nil),"raise"); +} +}),new objj_method(sel_getUid("exceptionWithName:reason:userInfo:"),function(_18,_19,_1a,_1b,_1c){ +with(_18){ +return objj_msgSend(objj_msgSend(_18,"alloc"),"initWithName:reason:userInfo:",_1a,_1b,_1c); +} +})]); +var _1=objj_getClass("CPException"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPException\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(objj_msgSend(_1d,"class"),"exceptionWithName:reason:userInfo:",name,message,_userInfo); +} +})]); +var _1f="CPExceptionNameKey",_20="CPExceptionReasonKey",_21="CPExceptionUserInfoKey"; +var _1=objj_getClass("CPException"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPException\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("CPException").super_class},"init"); +if(_22){ +name=objj_msgSend(_24,"decodeObjectForKey:",_1f); +message=objj_msgSend(_24,"decodeObjectForKey:",_20); +_userInfo=objj_msgSend(_24,"decodeObjectForKey:",_21); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_27,"encodeObject:forKey:",name,_1f); +objj_msgSend(_27,"encodeObject:forKey:",message,_20); +objj_msgSend(_27,"encodeObject:forKey:",_userInfo,_21); +} +})]); +Error.prototype.isa=CPException; +Error.prototype._userInfo=NULL; +objj_msgSend(CPException,"initialize"); +_CPRaiseInvalidAbstractInvocation=function(_28,_29){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"*** -"+sel_getName(_29)+" cannot be sent to an abstract object of class "+objj_msgSend(_28,"className")+": Create a concrete instance!"); +}; +_CPReportLenientDeprecation=function(_2a,_2b,_2c){ +CPLog.warn("["+CPStringFromClass(_2a)+" "+CPStringFromSelector(_2b)+"] is deprecated, using "+CPStringFromSelector(_2c)+" instead."); +}; +p;13;CPFormatter.jt;1549;@STATIC;1.0;I;21;Foundation/CPObject.jt;1504; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPFormatter"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("stringForObjectValue:"),function(_3,_4,_5){ +with(_3){ +_CPRaiseInvalidAbstractInvocation(_3,sel_getUid("stringForObjectValue:")); +return nil; +} +}),new objj_method(sel_getUid("editingStringForObjectValue:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"stringForObjectValue:",_8); +} +}),new objj_method(sel_getUid("getObjectValue:forString:errorDescription:"),function(_9,_a,_b,_c,_d){ +with(_9){ +_CPRaiseInvalidAbstractInvocation(_9,sel_getUid("getObjectValue:forString:errorDescription:")); +return NO; +} +}),new objj_method(sel_getUid("isPartialStringValid:newEditingString:errorDescription:"),function(_e,_f,_10,_11,_12){ +with(_e){ +_CPRaiseInvalidAbstractInvocation(_e,sel_getUid("isPartialStringValid:newEditingString:errorDescription:")); +return NO; +} +}),new objj_method(sel_getUid("isPartialStringValue:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"),function(_13,_14,_15,_16,_17,_18,_19){ +with(_13){ +_CPRaiseInvalidAbstractInvocation(_13,sel_getUid("isPartialStringValue:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:")); +return NO; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_1a,_1b,_1c){ +with(_1a){ +return objj_msgSend(_1a,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +} +})]); +p;21;CPFunctionOperation.jt;1271;@STATIC;1.0;I;21;Foundation/CPObject.ji;13;CPOperation.jt;1208; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPOperation.j",YES); +var _1=objj_allocateClassPair(CPOperation,"CPFunctionOperation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_functions")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("main"),function(_3,_4){ +with(_3){ +if(_functions&&objj_msgSend(_functions,"count")>0){ +var i=0,_5=objj_msgSend(_functions,"count"); +for(;i<_5;i++){ +var _6=objj_msgSend(_functions,"objectAtIndex:",i); +_6(); +} +} +} +}),new objj_method(sel_getUid("init"),function(_7,_8){ +with(_7){ +if(_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPFunctionOperation").super_class},"init")){ +_functions=[]; +} +return _7; +} +}),new objj_method(sel_getUid("addExecutionFunction:"),function(_9,_a,_b){ +with(_9){ +objj_msgSend(_functions,"addObject:",_b); +} +}),new objj_method(sel_getUid("executionFunctions"),function(_c,_d){ +with(_c){ +return _functions; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("functionOperationWithFunction:"),function(_e,_f,_10){ +with(_e){ +functionOp=objj_msgSend(objj_msgSend(CPFunctionOperation,"alloc"),"init"); +objj_msgSend(functionOp,"addExecutionFunction:",_10); +return functionOp; +} +})]); +p;12;CPIndexSet.jt;12162;@STATIC;1.0;i;10;CPObject.ji;9;CPRange.jt;12114; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPRange.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPIndexSet"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_count"),new objj_ivar("_ranges")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithIndexesInRange:",{location:(0),length:0}); +} +}),new objj_method(sel_getUid("initWithIndex:"),function(_5,_6,_7){ +with(_5){ +return objj_msgSend(_5,"initWithIndexesInRange:",{location:(_7),length:1}); +} +}),new objj_method(sel_getUid("initWithIndexesInRange:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPIndexSet").super_class},"init"); +if(_8){ +_count=MAX(0,_a.length); +if(_count>0){ +_ranges=[_a]; +}else{ +_ranges=[]; +} +} +return _8; +} +}),new objj_method(sel_getUid("initWithIndexSet:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPIndexSet").super_class},"init"); +if(_b){ +_count=objj_msgSend(_d,"count"); +_ranges=[]; +var _e=_d._ranges,_f=_e.length; +while(_f--){ +_ranges[_f]={location:(_e[_f]).location,length:(_e[_f]).length}; +} +} +return _b; +} +}),new objj_method(sel_getUid("isEqual:"),function(_10,_11,_12){ +with(_10){ +if(_10===_12){ +return YES; +} +if(!_12||!objj_msgSend(_12,"isKindOfClass:",objj_msgSend(CPIndexSet,"class"))){ +return NO; +} +return objj_msgSend(_10,"isEqualToIndexSet:",_12); +} +}),new objj_method(sel_getUid("isEqualToIndexSet:"),function(_13,_14,_15){ +with(_13){ +if(!_15){ +return NO; +} +if(_13===_15){ +return YES; +} +var _16=_ranges.length,_17=_15._ranges; +if(_16!==_17.length||_count!==_15._count){ +return NO; +} +while(_16--){ +if(!CPEqualRanges(_ranges[_16],_17[_16])){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("isEqual:"),function(_18,_19,_1a){ +with(_18){ +return _18===_1a||objj_msgSend(_1a,"isKindOfClass:",objj_msgSend(_18,"class"))&&objj_msgSend(_18,"isEqualToIndexSet:",_1a); +} +}),new objj_method(sel_getUid("containsIndex:"),function(_1b,_1c,_1d){ +with(_1b){ +return _1e(_ranges,_1d)!==CPNotFound; +} +}),new objj_method(sel_getUid("containsIndexesInRange:"),function(_1f,_20,_21){ +with(_1f){ +if(_21.length<=0){ +return NO; +} +if(_count<_21.length){ +return NO; +} +var _22=_1e(_ranges,_21.location); +if(_22===CPNotFound){ +return NO; +} +var _23=_ranges[_22]; +return CPIntersectionRange(_23,_21).length===_21.length; +} +}),new objj_method(sel_getUid("containsIndexes:"),function(_24,_25,_26){ +with(_24){ +var _27=_26._count; +if(_27<=0){ +return YES; +} +if(_count<_27){ +return NO; +} +var _28=_26._ranges,_29=_28.length; +while(_29--){ +if(!objj_msgSend(_24,"containsIndexesInRange:",_28[_29])){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("intersectsIndexesInRange:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_count<=0){ +return NO; +} +var _2d=_2e(_ranges,_2c.location); +if(FLOOR(_2d)===_2d){ +return YES; +} +var _2f=_2e(_ranges,((_2c).location+(_2c).length)-1); +if(FLOOR(_2f)===_2f){ +return YES; +} +return _2d!==_2f; +} +}),new objj_method(sel_getUid("count"),function(_30,_31){ +with(_30){ +return _count; +} +}),new objj_method(sel_getUid("firstIndex"),function(_32,_33){ +with(_32){ +if(_count>0){ +return _ranges[0].location; +} +return CPNotFound; +} +}),new objj_method(sel_getUid("lastIndex"),function(_34,_35){ +with(_34){ +if(_count>0){ +return ((_ranges[_ranges.length-1]).location+(_ranges[_ranges.length-1]).length)-1; +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexGreaterThanIndex:"),function(_36,_37,_38){ +with(_36){ +++_38; +var _39=_2e(_ranges,_38); +if(_39===CPNotFound){ +return CPNotFound; +} +_39=CEIL(_39); +if(_39>=_ranges.length){ +return CPNotFound; +} +var _3a=_ranges[_39]; +if(CPLocationInRange(_38,_3a)){ +return _38; +} +return _3a.location; +} +}),new objj_method(sel_getUid("indexLessThanIndex:"),function(_3b,_3c,_3d){ +with(_3b){ +--_3d; +var _3e=_2e(_ranges,_3d); +if(_3e===CPNotFound){ +return CPNotFound; +} +_3e=FLOOR(_3e); +if(_3e<0){ +return CPNotFound; +} +var _3f=_ranges[_3e]; +if(CPLocationInRange(_3d,_3f)){ +return _3d; +} +return ((_3f).location+(_3f).length)-1; +} +}),new objj_method(sel_getUid("indexGreaterThanOrEqualToIndex:"),function(_40,_41,_42){ +with(_40){ +return objj_msgSend(_40,"indexGreaterThanIndex:",_42-1); +} +}),new objj_method(sel_getUid("indexLessThanOrEqualToIndex:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_43,"indexLessThanIndex:",_45+1); +} +}),new objj_method(sel_getUid("getIndexes:maxCount:inIndexRange:"),function(_46,_47,_48,_49,_4a){ +with(_46){ +if(!_count||_49===0||_4a&&!_4a.length){ +if(_4a){ +_4a.length=0; +} +return 0; +} +var _4b=0; +if(_4a){ +var _4c=_4a.location,_4d=((_4a).location+(_4a).length)-1,_4e=CEIL(_2e(_ranges,_4c)),_4f=FLOOR(_2e(_ranges,_4d)); +}else{ +var _4c=objj_msgSend(_46,"firstIndex"),_4d=objj_msgSend(_46,"lastIndex"),_4e=0,_4f=_ranges.length-1; +} +while(_4e<=_4f){ +var _50=_ranges[_4e],_51=MAX(_4c,_50.location),_52=MIN(_4d+1,((_50).location+(_50).length)); +for(;_51<_52;++_51){ +_48[_4b++]=_51; +if(_4b===_49){ +if(_4a){ +_4a.location=_51+1; +_4a.length=_4d+1-_51-1; +} +return _49; +} +} +++_4e; +} +if(_4a){ +_4a.location=CPNotFound; +_4a.length=0; +} +return _4b; +} +}),new objj_method(sel_getUid("description"),function(_53,_54){ +with(_53){ +var _55=objj_msgSendSuper({receiver:_53,super_class:objj_getClass("CPIndexSet").super_class},"description"); +if(_count){ +var _56=0,_57=_ranges.length; +_55+="[number of indexes: "+_count+" (in "+_57; +if(_57===1){ +_55+=" range), indexes: ("; +}else{ +_55+=" ranges), indexes: ("; +} +for(;_56<_57;++_56){ +var _58=_ranges[_56]; +_55+=_58.location; +if(_58.length>1){ +_55+="-"+(CPMaxRange(_58)-1); +} +if(_56+1<_57){ +_55+=" "; +} +} +_55+=")]"; +}else{ +_55+="(no indexes)"; +} +return _55; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("indexSet"),function(_59,_5a){ +with(_59){ +return objj_msgSend(objj_msgSend(_59,"alloc"),"init"); +} +}),new objj_method(sel_getUid("indexSetWithIndex:"),function(_5b,_5c,_5d){ +with(_5b){ +return objj_msgSend(objj_msgSend(_5b,"alloc"),"initWithIndex:",_5d); +} +}),new objj_method(sel_getUid("indexSetWithIndexesInRange:"),function(_5e,_5f,_60){ +with(_5e){ +return objj_msgSend(objj_msgSend(_5e,"alloc"),"initWithIndexesInRange:",_60); +} +})]); +var _1=objj_getClass("CPIndexSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("addIndex:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_61,"addIndexesInRange:",{location:(_63),length:1}); +} +}),new objj_method(sel_getUid("addIndexes:"),function(_64,_65,_66){ +with(_64){ +var _67=_66._ranges,_68=_67.length; +while(_68--){ +objj_msgSend(_64,"addIndexesInRange:",_67[_68]); +} +} +}),new objj_method(sel_getUid("addIndexesInRange:"),function(_69,_6a,_6b){ +with(_69){ +if(_6b.length<=0){ +return; +} +if(_count<=0){ +_count=_6b.length; +_ranges=[_6b]; +return; +} +var _6c=_ranges.length,_6d=_2e(_ranges,_6b.location-1),_6e=CEIL(_6d); +if(_6e===_6d&&_6e<_6c){ +_6b=CPUnionRange(_6b,_ranges[_6e]); +} +var _6f=_2e(_ranges,CPMaxRange(_6b)),_70=FLOOR(_6f); +if(_70===_6f&&_70>=0){ +_6b=CPUnionRange(_6b,_ranges[_70]); +} +var _71=_70-_6e+1; +if(_71===_ranges.length){ +_ranges=[_6b]; +_count=_6b.length; +}else{ +if(_71===1){ +if(_6e<_ranges.length){ +_count-=_ranges[_6e].length; +} +_count+=_6b.length; +_ranges[_6e]=_6b; +}else{ +if(_71>0){ +var _72=_6e,_73=_6e+_71-1; +for(;_72<=_73;++_72){ +_count-=_ranges[_72].length; +} +objj_msgSend(_ranges,"removeObjectsInRange:",{location:(_6e),length:_71}); +} +objj_msgSend(_ranges,"insertObject:atIndex:",_6b,_6e); +_count+=_6b.length; +} +} +} +}),new objj_method(sel_getUid("removeIndex:"),function(_74,_75,_76){ +with(_74){ +objj_msgSend(_74,"removeIndexesInRange:",{location:(_76),length:1}); +} +}),new objj_method(sel_getUid("removeIndexes:"),function(_77,_78,_79){ +with(_77){ +var _7a=_79._ranges,_7b=_7a.length; +while(_7b--){ +objj_msgSend(_77,"removeIndexesInRange:",_7a[_7b]); +} +} +}),new objj_method(sel_getUid("removeAllIndexes"),function(_7c,_7d){ +with(_7c){ +_ranges=[]; +_count=0; +} +}),new objj_method(sel_getUid("removeIndexesInRange:"),function(_7e,_7f,_80){ +with(_7e){ +if(_80.length<=0){ +return; +} +if(_count<=0){ +return; +} +var _81=_ranges.length,_82=_2e(_ranges,_80.location),_83=CEIL(_82); +if(_82===_83&&_83<_81){ +var _84=_ranges[_83]; +if(_80.location!==_84.location){ +var _85=CPMaxRange(_80),_86=CPMaxRange(_84); +_84.length=_80.location-_84.location; +if(_85<_86){ +_count-=_80.length; +objj_msgSend(_ranges,"insertObject:atIndex:",{location:(_85),length:_86-_85},_83+1); +return; +}else{ +_count-=_86-_80.location; +_83+=1; +} +} +} +var _87=_2e(_ranges,CPMaxRange(_80)-1),_88=FLOOR(_87); +if(_87===_88&&_88>=0){ +var _85=CPMaxRange(_80),_84=_ranges[_88],_86=CPMaxRange(_84); +if(_85!==_86){ +_count-=_85-_84.location; +_88-=1; +_84.location=_85; +_84.length=_86-_85; +} +} +var _89=_88-_83+1; +if(_89>0){ +var _8a=_83,_8b=_83+_89-1; +for(;_8a<=_8b;++_8a){ +_count-=_ranges[_8a].length; +} +objj_msgSend(_ranges,"removeObjectsInRange:",{location:(_83),length:_89}); +} +} +}),new objj_method(sel_getUid("shiftIndexesStartingAtIndex:by:"),function(_8c,_8d,_8e,_8f){ +with(_8c){ +if(!_count||_8f==0){ +return; +} +var i=_ranges.length-1,_90=CPMakeRange(CPNotFound,0); +for(;i>=0;--i){ +var _91=_ranges[i],_92=CPMaxRange(_91); +if(_8e>=_92){ +break; +} +if(_8e>_91.location){ +_90=CPMakeRange(_8e+_8f,_92-_8e); +_91.length=_8e-_91.location; +if(_8f>0){ +objj_msgSend(_ranges,"insertObject:atIndex:",_90,i+1); +}else{ +if(_90.location<0){ +_90.length=CPMaxRange(_90); +_90.location=0; +} +} +break; +} +if((_91.location+=_8f)<0){ +_91.length=CPMaxRange(_91); +_91.location=0; +} +} +if(_8f<0){ +var j=i+1,_93=_ranges.length,_94=[]; +for(;j<_93;++j){ +objj_msgSend(_94,"addObject:",_ranges[j]); +_count-=_ranges[j].length; +} +if((j=i+1)<_93){ +objj_msgSend(_ranges,"removeObjectsInRange:",CPMakeRange(j,_93-j)); +for(j=0,_93=_94.length;j<_93;++j){ +objj_msgSend(_8c,"addIndexesInRange:",_94[j]); +} +} +if(_90.location!=CPNotFound){ +objj_msgSend(_8c,"addIndexesInRange:",_90); +} +} +} +})]); +var _95="CPIndexSetCountKey",_96="CPIndexSetRangeStringsKey"; +var _1=objj_getClass("CPIndexSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_97,_98,_99){ +with(_97){ +_97=objj_msgSendSuper({receiver:_97,super_class:objj_getClass("CPIndexSet").super_class},"init"); +if(_97){ +_count=objj_msgSend(_99,"decodeIntForKey:",_95); +_ranges=[]; +var _9a=objj_msgSend(_99,"decodeObjectForKey:",_96),_9b=0,_9c=_9a.length; +for(;_9b<_9c;++_9b){ +_ranges.push(CPRangeFromString(_9a[_9b])); +} +} +return _97; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9d,_9e,_9f){ +with(_9d){ +objj_msgSend(_9f,"encodeInt:forKey:",_count,_95); +var _a0=0,_a1=_ranges.length,_a2=[]; +for(;_a0<_a1;++_a0){ +_a2[_a0]=CPStringFromRange(_ranges[_a0]); +} +objj_msgSend(_9f,"encodeObject:forKey:",_a2,_96); +} +})]); +var _1=objj_getClass("CPIndexSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_a3,_a4){ +with(_a3){ +return objj_msgSend(objj_msgSend(objj_msgSend(_a3,"class"),"alloc"),"initWithIndexSet:",_a3); +} +}),new objj_method(sel_getUid("mutableCopy"),function(_a5,_a6){ +with(_a5){ +return objj_msgSend(objj_msgSend(objj_msgSend(_a5,"class"),"alloc"),"initWithIndexSet:",_a5); +} +})]); +var _1=objj_allocateClassPair(CPIndexSet,"CPMutableIndexSet"),_2=_1.isa; +objj_registerClassPair(_1); +var _1e=function(_a7,_a8){ +var low=0,_a9=_a7.length-1; +while(low<=_a9){ +var _aa=FLOOR(low+(_a9-low)/2),_ab=_a7[_aa]; +if(_a8<_ab.location){ +_a9=_aa-1; +}else{ +if(_a8>=CPMaxRange(_ab)){ +low=_aa+1; +}else{ +return _aa; +} +} +} +return CPNotFound; +}; +var _2e=function(_ac,_ad){ +var _ae=_ac.length; +if(_ae<=0){ +return CPNotFound; +} +var low=0,_af=_ae*2; +while(low<=_af){ +var _b0=FLOOR(low+(_af-low)/2),_b1=_b0/2,_b2=FLOOR(_b1); +if(_b1===_b2){ +if(_b2-1>=0&&_ad=_ac[_b2].location){ +low=_b0+1; +}else{ +return _b2-0.5; +} +} +}else{ +var _b3=_ac[_b2]; +if(_ad<_b3.location){ +_af=_b0-1; +}else{ +if(_ad>=CPMaxRange(_b3)){ +low=_b0+1; +}else{ +return _b2; +} +} +} +} +return CPNotFound; +}; +p;14;CPInvocation.jt;2659;@STATIC;1.0;i;13;CPException.ji;10;CPObject.jt;2607; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPInvocation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_returnValue"),new objj_ivar("_arguments"),new objj_ivar("_methodSignature")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithMethodSignature:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPInvocation").super_class},"init"); +if(_3){ +_arguments=[]; +_methodSignature=_5; +} +return _3; +} +}),new objj_method(sel_getUid("setSelector:"),function(_6,_7,_8){ +with(_6){ +_arguments[1]=_8; +} +}),new objj_method(sel_getUid("selector"),function(_9,_a){ +with(_9){ +return _arguments[1]; +} +}),new objj_method(sel_getUid("setTarget:"),function(_b,_c,_d){ +with(_b){ +_arguments[0]=_d; +} +}),new objj_method(sel_getUid("target"),function(_e,_f){ +with(_e){ +return _arguments[0]; +} +}),new objj_method(sel_getUid("setArgument:atIndex:"),function(_10,_11,_12,_13){ +with(_10){ +_arguments[_13]=_12; +} +}),new objj_method(sel_getUid("argumentAtIndex:"),function(_14,_15,_16){ +with(_14){ +return _arguments[_16]; +} +}),new objj_method(sel_getUid("setReturnValue:"),function(_17,_18,_19){ +with(_17){ +_returnValue=_19; +} +}),new objj_method(sel_getUid("returnValue"),function(_1a,_1b){ +with(_1a){ +return _returnValue; +} +}),new objj_method(sel_getUid("invoke"),function(_1c,_1d){ +with(_1c){ +_returnValue=objj_msgSend.apply(objj_msgSend,_arguments); +} +}),new objj_method(sel_getUid("invokeWithTarget:"),function(_1e,_1f,_20){ +with(_1e){ +_arguments[0]=_20; +_returnValue=objj_msgSend.apply(objj_msgSend,_arguments); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("invocationWithMethodSignature:"),function(_21,_22,_23){ +with(_21){ +return objj_msgSend(objj_msgSend(_21,"alloc"),"initWithMethodSignature:",_23); +} +})]); +var _24="CPInvocationArguments",_25="CPInvocationReturnValue"; +var _1=objj_getClass("CPInvocation"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPInvocation\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_26,_27,_28){ +with(_26){ +_26=objj_msgSendSuper({receiver:_26,super_class:objj_getClass("CPInvocation").super_class},"init"); +if(_26){ +_returnValue=objj_msgSend(_28,"decodeObjectForKey:",_25); +_arguments=objj_msgSend(_28,"decodeObjectForKey:",_24); +} +return _26; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"encodeObject:forKey:",_returnValue,_25); +objj_msgSend(_2b,"encodeObject:forKey:",_arguments,_24); +} +})]); +p;23;CPInvocationOperation.jt;1480;@STATIC;1.0;i;14;CPInvocation.ji;10;CPObject.ji;13;CPOperation.jt;1409; +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPOperation.j",YES); +var _1=objj_allocateClassPair(CPOperation,"CPInvocationOperation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_invocation")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("main"),function(_3,_4){ +with(_3){ +if(_invocation){ +objj_msgSend(_invocation,"invoke"); +} +} +}),new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPInvocationOperation").super_class},"init")){ +_invocation=nil; +} +return _5; +} +}),new objj_method(sel_getUid("initWithInvocation:"),function(_7,_8,_9){ +with(_7){ +if(_7=objj_msgSend(_7,"init")){ +_invocation=_9; +} +return _7; +} +}),new objj_method(sel_getUid("initWithTarget:selector:object:"),function(_a,_b,_c,_d,_e){ +with(_a){ +var _f=objj_msgSend(objj_msgSend(CPInvocation,"alloc"),"initWithMethodSignature:",nil); +objj_msgSend(_f,"setTarget:",_c); +objj_msgSend(_f,"setSelector:",_d); +objj_msgSend(_f,"setArgument:atIndex:",_e,2); +return objj_msgSend(_a,"initWithInvocation:",_f); +} +}),new objj_method(sel_getUid("invocation"),function(_10,_11){ +with(_10){ +return _invocation; +} +}),new objj_method(sel_getUid("result"),function(_12,_13){ +with(_12){ +if(objj_msgSend(_12,"isFinished")&&_invocation){ +return objj_msgSend(_invocation,"returnValue"); +} +return nil; +} +})]); +p;19;CPJSONPConnection.jt;3704;@STATIC;1.0;i;10;CPObject.jt;3670; +objj_executeFile("CPObject.j",YES); +CPJSONPConnectionCallbacks={}; +CPJSONPCallbackReplacementString="${JSONP_CALLBACK}"; +var _1=objj_allocateClassPair(CPObject,"CPJSONPConnection"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_request"),new objj_ivar("_delegate"),new objj_ivar("_callbackParameter"),new objj_ivar("_scriptTag")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithRequest:callback:delegate:"),function(_3,_4,_5,_6,_7){ +with(_3){ +return objj_msgSend(_3,"initWithRequest:callback:delegate:startImmediately:",_5,_6,_7,NO); +} +}),new objj_method(sel_getUid("initWithRequest:callback:delegate:startImmediately:"),function(_8,_9,_a,_b,_c,_d){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPJSONPConnection").super_class},"init"); +_request=_a; +_delegate=_c; +_callbackParameter=_b; +if(!_callbackParameter&&objj_msgSend(objj_msgSend(_request,"URL"),"absoluteString").indexOf(CPJSONPCallbackReplacementString)<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"JSONP source specified without callback parameter or CPJSONPCallbackReplacementString in URL."); +} +if(_d){ +objj_msgSend(_8,"start"); +} +return _8; +} +}),new objj_method(sel_getUid("start"),function(_e,_f){ +with(_e){ +try{ +CPJSONPConnectionCallbacks["callback"+objj_msgSend(_e,"UID")]=function(_10){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didReceiveData:"))){ +objj_msgSend(_delegate,"connection:didReceiveData:",_e,_10); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connectionDidFinishLoading:"))){ +objj_msgSend(_delegate,"connectionDidFinishLoading:",_e); +} +objj_msgSend(_e,"removeScriptTag"); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +}; +var _11=document.getElementsByTagName("head").item(0),_12=objj_msgSend(objj_msgSend(_request,"URL"),"absoluteString"); +if(_callbackParameter){ +_12+=(_12.indexOf("?")<0)?"?":"&"; +_12+=_callbackParameter+"=CPJSONPConnectionCallbacks.callback"+objj_msgSend(_e,"UID"); +}else{ +if(_12.indexOf(CPJSONPCallbackReplacementString)>=0){ +_12=objj_msgSend(_12,"stringByReplacingOccurrencesOfString:withString:",CPJSONPCallbackReplacementString,"CPJSONPConnectionCallbacks.callback"+objj_msgSend(_e,"UID")); +}else{ +return; +} +} +_scriptTag=document.createElement("script"); +_scriptTag.setAttribute("type","text/javascript"); +_scriptTag.setAttribute("charset","utf-8"); +_scriptTag.setAttribute("src",_12); +_11.appendChild(_scriptTag); +} +catch(exception){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didFailWithError:"))){ +objj_msgSend(_delegate,"connection:didFailWithError:",_e,exception); +} +objj_msgSend(_e,"removeScriptTag"); +} +} +}),new objj_method(sel_getUid("removeScriptTag"),function(_13,_14){ +with(_13){ +var _15=document.getElementsByTagName("head").item(0); +if(_scriptTag&&_scriptTag.parentNode==_15){ +_15.removeChild(_scriptTag); +} +CPJSONPConnectionCallbacks["callback"+objj_msgSend(_13,"UID")]=nil; +delete CPJSONPConnectionCallbacks["callback"+objj_msgSend(_13,"UID")]; +} +}),new objj_method(sel_getUid("cancel"),function(_16,_17){ +with(_16){ +objj_msgSend(_16,"removeScriptTag"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("sendRequest:callback:delegate:"),function(_18,_19,_1a,_1b,_1c){ +with(_18){ +return objj_msgSend(_18,"connectionWithRequest:callback:delegate:",_1a,_1b,_1c); +} +}),new objj_method(sel_getUid("connectionWithRequest:callback:delegate:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +return objj_msgSend(objj_msgSend(objj_msgSend(_1d,"class"),"alloc"),"initWithRequest:callback:delegate:startImmediately:",_1f,_20,_21,YES); +} +})]); +p;17;CPKeyedArchiver.jt;10342;@STATIC;1.0;i;9;CPArray.ji;9;CPCoder.ji;8;CPData.ji;14;CPDictionary.ji;10;CPNumber.ji;10;CPString.ji;9;CPValue.jt;10222; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPData.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPNumber.j",YES); +objj_executeFile("CPString.j",YES); +objj_executeFile("CPValue.j",YES); +var _1=nil; +var _2=1,_3=2,_4=4,_5=8,_6=16; +var _7="$null",_8=nil,_9="CP$UID",_a="$top",_b="$objects",_c="$archiver",_d="$version",_e="$classname",_f="$classes",_10="$class"; +var _11=Nil,_12=Nil; +var _13=objj_allocateClassPair(CPValue,"_CPKeyedArchiverValue"),_14=_13.isa; +objj_registerClassPair(_13); +var _13=objj_allocateClassPair(CPCoder,"CPKeyedArchiver"),_14=_13.isa; +class_addIvars(_13,[new objj_ivar("_delegate"),new objj_ivar("_delegateSelectors"),new objj_ivar("_data"),new objj_ivar("_objects"),new objj_ivar("_UIDs"),new objj_ivar("_conditionalUIDs"),new objj_ivar("_replacementObjects"),new objj_ivar("_replacementClassNames"),new objj_ivar("_plistObject"),new objj_ivar("_plistObjects"),new objj_ivar("_outputFormat")]); +objj_registerClassPair(_13); +class_addMethods(_13,[new objj_method(sel_getUid("initForWritingWithMutableData:"),function(_15,_16,_17){ +with(_15){ +_15=objj_msgSendSuper({receiver:_15,super_class:objj_getClass("CPKeyedArchiver").super_class},"init"); +if(_15){ +_data=_17; +_objects=[]; +_UIDs=objj_msgSend(CPDictionary,"dictionary"); +_conditionalUIDs=objj_msgSend(CPDictionary,"dictionary"); +_replacementObjects=objj_msgSend(CPDictionary,"dictionary"); +_data=_17; +_plistObject=objj_msgSend(CPDictionary,"dictionary"); +_plistObjects=objj_msgSend(CPArray,"arrayWithObject:",_7); +} +return _15; +} +}),new objj_method(sel_getUid("finishEncoding"),function(_18,_19){ +with(_18){ +if(_delegate&&_delegateSelectors&_6){ +objj_msgSend(_delegate,"archiverWillFinish:",_18); +} +var i=0,_1a=_plistObject,_1b=[]; +for(;i<_objects.length;++i){ +var _1c=_objects[i],_1d=objj_msgSend(_1c,"classForKeyedArchiver"); +_plistObject=_plistObjects[objj_msgSend(_UIDs,"objectForKey:",objj_msgSend(_1c,"UID"))]; +objj_msgSend(_1c,"encodeWithCoder:",_18); +if(_delegate&&_delegateSelectors&_2){ +objj_msgSend(_delegate,"archiver:didEncodeObject:",_18,_1c); +} +} +_plistObject=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_plistObject,"setObject:forKey:",_1a,_a); +objj_msgSend(_plistObject,"setObject:forKey:",_plistObjects,_b); +objj_msgSend(_plistObject,"setObject:forKey:",objj_msgSend(_18,"className"),_c); +objj_msgSend(_plistObject,"setObject:forKey:","100000",_d); +objj_msgSend(_data,"setPlistObject:",_plistObject); +if(_delegate&&_delegateSelectors&_5){ +objj_msgSend(_delegate,"archiverDidFinish:",_18); +} +} +}),new objj_method(sel_getUid("outputFormat"),function(_1e,_1f){ +with(_1e){ +return _outputFormat; +} +}),new objj_method(sel_getUid("setOutputFormat:"),function(_20,_21,_22){ +with(_20){ +_outputFormat=_22; +} +}),new objj_method(sel_getUid("encodeBool:forKey:"),function(_23,_24,_25,_26){ +with(_23){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_23,_25,NO),_26); +} +}),new objj_method(sel_getUid("encodeDouble:forKey:"),function(_28,_29,_2a,_2b){ +with(_28){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_28,_2a,NO),_2b); +} +}),new objj_method(sel_getUid("encodeFloat:forKey:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_2c,_2e,NO),_2f); +} +}),new objj_method(sel_getUid("encodeInt:forKey:"),function(_30,_31,_32,_33){ +with(_30){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_30,_32,NO),_33); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_34,_35,_36){ +with(_34){ +_delegate=_36; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:didEncodeObject:"))){ +_delegateSelectors|=_2; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:willEncodeObject:"))){ +_delegateSelectors|=_3; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:willReplaceObject:withObject:"))){ +_delegateSelectors|=_4; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:didFinishEncoding:"))){ +_delegateSelectors|=_CPKeyedArchiverDidFinishEncodingSelector; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:willFinishEncoding:"))){ +_delegateSelectors|=_CPKeyedArchiverWillFinishEncodingSelector; +} +} +}),new objj_method(sel_getUid("delegate"),function(_37,_38){ +with(_37){ +return _delegate; +} +}),new objj_method(sel_getUid("encodePoint:forKey:"),function(_39,_3a,_3b,_3c){ +with(_39){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_39,CPStringFromPoint(_3b),NO),_3c); +} +}),new objj_method(sel_getUid("encodeRect:forKey:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_3d,CPStringFromRect(_3f),NO),_40); +} +}),new objj_method(sel_getUid("encodeSize:forKey:"),function(_41,_42,_43,_44){ +with(_41){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_41,CPStringFromSize(_43),NO),_44); +} +}),new objj_method(sel_getUid("encodeConditionalObject:forKey:"),function(_45,_46,_47,_48){ +with(_45){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_45,_47,YES),_48); +} +}),new objj_method(sel_getUid("encodeNumber:forKey:"),function(_49,_4a,_4b,_4c){ +with(_49){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_49,_4b,NO),_4c); +} +}),new objj_method(sel_getUid("encodeObject:forKey:"),function(_4d,_4e,_4f,_50){ +with(_4d){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_4d,_4f,NO),_50); +} +}),new objj_method(sel_getUid("_encodeArrayOfObjects:forKey:"),function(_51,_52,_53,_54){ +with(_51){ +var i=0,_55=_53.length,_56=objj_msgSend(CPArray,"arrayWithCapacity:",_55); +for(;i<_55;++i){ +objj_msgSend(_56,"addObject:",_27(_51,_53[i],NO)); +} +objj_msgSend(_plistObject,"setObject:forKey:",_56,_54); +} +}),new objj_method(sel_getUid("_encodeDictionaryOfObjects:forKey:"),function(_57,_58,_59,_5a){ +with(_57){ +var key,_5b=objj_msgSend(_59,"keyEnumerator"),_5c=objj_msgSend(CPDictionary,"dictionary"); +while(key=objj_msgSend(_5b,"nextObject")){ +objj_msgSend(_5c,"setObject:forKey:",_27(_57,objj_msgSend(_59,"objectForKey:",key),NO),key); +} +objj_msgSend(_plistObject,"setObject:forKey:",_5c,_5a); +} +}),new objj_method(sel_getUid("setClassName:forClass:"),function(_5d,_5e,_5f,_60){ +with(_5d){ +if(!_replacementClassNames){ +_replacementClassNames=objj_msgSend(CPDictionary,"dictionary"); +} +objj_msgSend(_replacementClassNames,"setObject:forKey:",_5f,CPStringFromClass(_60)); +} +}),new objj_method(sel_getUid("classNameForClass:"),function(_61,_62,_63){ +with(_61){ +if(!_replacementClassNames){ +return _63.name; +} +var _64=objj_msgSend(_replacementClassNames,"objectForKey:",CPStringFromClass(aClassName)); +return _64?_64:_63.name; +} +})]); +class_addMethods(_14,[new objj_method(sel_getUid("initialize"),function(_65,_66){ +with(_65){ +if(_65!=objj_msgSend(CPKeyedArchiver,"class")){ +return; +} +_11=objj_msgSend(CPString,"class"); +_12=objj_msgSend(CPNumber,"class"); +_8=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",0,_9); +} +}),new objj_method(sel_getUid("allowsKeyedCoding"),function(_67,_68){ +with(_67){ +return YES; +} +}),new objj_method(sel_getUid("archivedDataWithRootObject:"),function(_69,_6a,_6b){ +with(_69){ +var _6c=objj_msgSend(CPData,"dataWithPlistObject:",nil),_6d=objj_msgSend(objj_msgSend(_69,"alloc"),"initForWritingWithMutableData:",_6c); +objj_msgSend(_6d,"encodeObject:forKey:",_6b,"root"); +objj_msgSend(_6d,"finishEncoding"); +return _6c; +} +}),new objj_method(sel_getUid("setClassName:forClass:"),function(_6e,_6f,_70,_71){ +with(_6e){ +if(!_1){ +_1=objj_msgSend(CPDictionary,"dictionary"); +} +objj_msgSend(_1,"setObject:forKey:",_70,CPStringFromClass(_71)); +} +}),new objj_method(sel_getUid("classNameForClass:"),function(_72,_73,_74){ +with(_72){ +if(!_1){ +return _74.name; +} +var _75=objj_msgSend(_1,"objectForKey:",CPStringFromClass(aClassName)); +return _75?_75:_74.name; +} +})]); +var _27=function(_76,_77,_78){ +if(_77!==nil&&!_77.isa){ +_77=objj_msgSend(_CPKeyedArchiverValue,"valueWithJSObject:",_77); +} +var _79=objj_msgSend(_77,"UID"),_7a=objj_msgSend(_76._replacementObjects,"objectForKey:",_79); +if(_7a===nil){ +_7a=objj_msgSend(_77,"replacementObjectForKeyedArchiver:",_76); +if(_76._delegate){ +if(_7a!==_77&&_76._delegateSelectors&_4){ +objj_msgSend(_76._delegate,"archiver:willReplaceObject:withObject:",_76,_77,_7a); +} +if(_76._delegateSelectors&_3){ +_77=objj_msgSend(_76._delegate,"archiver:willEncodeObject:",_76,_7a); +if(_77!==_7a&&_76._delegateSelectors&_4){ +objj_msgSend(_76._delegate,"archiver:willReplaceObject:withObject:",_76,_7a,_77); +} +_7a=_77; +} +} +objj_msgSend(_76._replacementObjects,"setObject:forKey:",_7a,_79); +} +if(_7a===nil){ +return _8; +} +var UID=objj_msgSend(_76._UIDs,"objectForKey:",_79=objj_msgSend(_7a,"UID")); +if(UID===nil){ +if(_78){ +if((UID=objj_msgSend(_76._conditionalUIDs,"objectForKey:",_79))===nil){ +objj_msgSend(_76._conditionalUIDs,"setObject:forKey:",UID=objj_msgSend(_76._plistObjects,"count"),_79); +objj_msgSend(_76._plistObjects,"addObject:",_7); +} +}else{ +var _7b=objj_msgSend(_7a,"classForKeyedArchiver"),_7c=nil; +if((_7b===_11)||(_7b===_12)){ +_7c=_7a; +}else{ +_7c=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_76._objects,"addObject:",_7a); +var _7d=objj_msgSend(_76,"classNameForClass:",_7b); +if(!_7d){ +_7d=objj_msgSend(objj_msgSend(_76,"class"),"classNameForClass:",_7b); +} +if(!_7d){ +_7d=_7b.name; +}else{ +_7b=CPClassFromString(_7d); +} +var _7e=objj_msgSend(_76._UIDs,"objectForKey:",_7d); +if(!_7e){ +var _7f=objj_msgSend(CPDictionary,"dictionary"),_80=[]; +objj_msgSend(_7f,"setObject:forKey:",_7d,_e); +do{ +objj_msgSend(_80,"addObject:",CPStringFromClass(_7b)); +}while(_7b=objj_msgSend(_7b,"superclass")); +objj_msgSend(_7f,"setObject:forKey:",_80,_f); +_7e=objj_msgSend(_76._plistObjects,"count"); +objj_msgSend(_76._plistObjects,"addObject:",_7f); +objj_msgSend(_76._UIDs,"setObject:forKey:",_7e,_7d); +} +objj_msgSend(_7c,"setObject:forKey:",objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_7e,_9),_10); +} +UID=objj_msgSend(_76._conditionalUIDs,"objectForKey:",_79); +if(UID!==nil){ +objj_msgSend(_76._UIDs,"setObject:forKey:",UID,_79); +objj_msgSend(_76._plistObjects,"replaceObjectAtIndex:withObject:",UID,_7c); +}else{ +objj_msgSend(_76._UIDs,"setObject:forKey:",UID=objj_msgSend(_76._plistObjects,"count"),_79); +objj_msgSend(_76._plistObjects,"addObject:",_7c); +} +} +} +return objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",UID,_9); +}; +p;19;CPKeyedUnarchiver.jt;8540;@STATIC;1.0;i;9;CPCoder.ji;8;CPNull.jt;8496; +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPNull.j",YES); +CPInvalidUnarchiveOperationException="CPInvalidUnarchiveOperationException"; +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5; +var _7="$null"; +_CPKeyedArchiverUIDKey="CP$UID",_CPKeyedArchiverTopKey="$top",_CPKeyedArchiverObjectsKey="$objects",_CPKeyedArchiverArchiverKey="$archiver",_CPKeyedArchiverVersionKey="$version",_CPKeyedArchiverClassNameKey="$classname",_CPKeyedArchiverClassesKey="$classes",_CPKeyedArchiverClassKey="$class"; +var _8=Nil,_9=Nil,_a=Nil,_b=Nil,_c=Nil,_d=Nil,_e=Nil,_f=Nil; +var _10=objj_allocateClassPair(CPCoder,"CPKeyedUnarchiver"),_11=_10.isa; +class_addIvars(_10,[new objj_ivar("_delegate"),new objj_ivar("_delegateSelectors"),new objj_ivar("_data"),new objj_ivar("_replacementClasses"),new objj_ivar("_objects"),new objj_ivar("_archive"),new objj_ivar("_plistObject"),new objj_ivar("_plistObjects")]); +objj_registerClassPair(_10); +class_addMethods(_10,[new objj_method(sel_getUid("initForReadingWithData:"),function(_12,_13,_14){ +with(_12){ +_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPKeyedUnarchiver").super_class},"init"); +if(_12){ +_archive=objj_msgSend(_14,"plistObject"); +_objects=[objj_msgSend(CPNull,"null")]; +_plistObject=objj_msgSend(_archive,"objectForKey:",_CPKeyedArchiverTopKey); +_plistObjects=objj_msgSend(_archive,"objectForKey:",_CPKeyedArchiverObjectsKey); +_replacementClasses=new CFMutableDictionary(); +} +return _12; +} +}),new objj_method(sel_getUid("containsValueForKey:"),function(_15,_16,_17){ +with(_15){ +return _plistObject.valueForKey(_17)!=nil; +} +}),new objj_method(sel_getUid("_decodeDictionaryOfObjectsForKey:"),function(_18,_19,_1a){ +with(_18){ +var _1b=_plistObject.valueForKey(_1a),_1c=(_1b!=nil)&&_1b.isa; +if(_1c===_b||_1c===_c){ +var _1d=_1b.keys(),_1e=0,_1f=_1d.length,_20=new CFMutableDictionary(); +for(;_1e<_1f;++_1e){ +var key=_1d[_1e]; +_20.setValueForKey(key,_21(_18,_1b.valueForKey(key).valueForKey(_CPKeyedArchiverUIDKey))); +} +return _20; +} +return nil; +} +}),new objj_method(sel_getUid("decodeBoolForKey:"),function(_22,_23,_24){ +with(_22){ +return !!objj_msgSend(_22,"decodeObjectForKey:",_24); +} +}),new objj_method(sel_getUid("decodeFloatForKey:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_25,"decodeObjectForKey:",_27); +} +}),new objj_method(sel_getUid("decodeDoubleForKey:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(_28,"decodeObjectForKey:",_2a); +} +}),new objj_method(sel_getUid("decodeIntForKey:"),function(_2b,_2c,_2d){ +with(_2b){ +return objj_msgSend(_2b,"decodeObjectForKey:",_2d); +} +}),new objj_method(sel_getUid("decodePointForKey:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=objj_msgSend(_2e,"decodeObjectForKey:",_30); +if(_31){ +return CPPointFromString(_31); +}else{ +return CPPointMake(0,0); +} +} +}),new objj_method(sel_getUid("decodeRectForKey:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"decodeObjectForKey:",_34); +if(_35){ +return CPRectFromString(_35); +}else{ +return CPRectMakeZero(); +} +} +}),new objj_method(sel_getUid("decodeSizeForKey:"),function(_36,_37,_38){ +with(_36){ +var _39=objj_msgSend(_36,"decodeObjectForKey:",_38); +if(_39){ +return CPSizeFromString(_39); +}else{ +return CPSizeMake(0,0); +} +} +}),new objj_method(sel_getUid("decodeObjectForKey:"),function(_3a,_3b,_3c){ +with(_3a){ +var _3d=_plistObject.valueForKey(_3c),_3e=(_3d!=nil)&&_3d.isa; +if(_3e===_b||_3e===_c){ +return _21(_3a,_3d.valueForKey(_CPKeyedArchiverUIDKey)); +}else{ +if(_3e===_d||_3e===_e||_3e===_a){ +return _3d; +}else{ +if(_3e===_8||_3e===_9){ +var _3f=0,_40=_3d.length,_41=[]; +for(;_3f<_40;++_3f){ +_41[_3f]=_21(_3a,_3d[_3f].valueForKey(_CPKeyedArchiverUIDKey)); +} +return _41; +} +} +} +return nil; +} +}),new objj_method(sel_getUid("decodeBytesForKey:"),function(_42,_43,_44){ +with(_42){ +var _45=objj_msgSend(_42,"decodeObjectForKey:",_44); +if(!_45){ +return nil; +} +var _46=_45.isa; +if(_46===_e){ +return _45.bytes; +} +return nil; +} +}),new objj_method(sel_getUid("finishDecoding"),function(_47,_48){ +with(_47){ +if(_delegateSelectors&_4){ +objj_msgSend(_delegate,"unarchiverWillFinish:",_47); +} +if(_delegateSelectors&_5){ +objj_msgSend(_delegate,"unarchiverDidFinish:",_47); +} +} +}),new objj_method(sel_getUid("delegate"),function(_49,_4a){ +with(_49){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_4b,_4c,_4d){ +with(_4b){ +_delegate=_4d; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:cannotDecodeObjectOfClassName:originalClasses:"))){ +_delegateSelectors|=_1; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:didDecodeObject:"))){ +_delegateSelectors|=_2; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:willReplaceObject:withObject:"))){ +_delegateSelectors|=_3; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiverWillFinish:"))){ +_delegateSelectors|=_CPKeyedUnarchiverWilFinishSelector; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiverDidFinish:"))){ +_delegateSelectors|=_5; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:cannotDecodeObjectOfClassName:originalClasses:"))){ +_delegateSelectors|=_6; +} +} +}),new objj_method(sel_getUid("setClass:forClassName:"),function(_4e,_4f,_50,_51){ +with(_4e){ +_replacementClasses.setValueForKey(_51,_50); +} +}),new objj_method(sel_getUid("classForClassName:"),function(_52,_53,_54){ +with(_52){ +return _replacementClasses.valueForKey(_54); +} +}),new objj_method(sel_getUid("allowsKeyedCoding"),function(_55,_56){ +with(_55){ +return YES; +} +})]); +class_addMethods(_11,[new objj_method(sel_getUid("initialize"),function(_57,_58){ +with(_57){ +if(_57!==objj_msgSend(CPKeyedUnarchiver,"class")){ +return; +} +_8=objj_msgSend(CPArray,"class"); +_9=objj_msgSend(CPMutableArray,"class"); +_a=objj_msgSend(CPString,"class"); +_b=objj_msgSend(CPDictionary,"class"); +_c=objj_msgSend(CPMutableDictionary,"class"); +_d=objj_msgSend(CPNumber,"class"); +_e=objj_msgSend(CPData,"class"); +_f=objj_msgSend(_CPKeyedArchiverValue,"class"); +} +}),new objj_method(sel_getUid("unarchiveObjectWithData:"),function(_59,_5a,_5b){ +with(_59){ +if(!_5b){ +CPLog.error("Null data passed to -[CPKeyedUnarchiver unarchiveObjectWithData:]."); +return nil; +} +var _5c=objj_msgSend(objj_msgSend(_59,"alloc"),"initForReadingWithData:",_5b),_5d=objj_msgSend(_5c,"decodeObjectForKey:","root"); +objj_msgSend(_5c,"finishDecoding"); +return _5d; +} +}),new objj_method(sel_getUid("unarchiveObjectWithFile:"),function(_5e,_5f,_60){ +with(_5e){ +} +}),new objj_method(sel_getUid("unarchiveObjectWithFile:asynchronously:"),function(_61,_62,_63,_64){ +with(_61){ +} +})]); +var _21=function(_65,_66){ +var _67=_65._objects[_66]; +if(_67){ +if(_67===_65._objects[0]){ +return nil; +}else{ +return _67; +} +} +var _67,_68=_65._plistObjects[_66],_69=_68.isa; +if(_69===_b||_69===_c){ +var _6a=_65._plistObjects[_68.valueForKey(_CPKeyedArchiverClassKey).valueForKey(_CPKeyedArchiverUIDKey)],_6b=_6a.valueForKey(_CPKeyedArchiverClassNameKey),_6c=_6a.valueForKey(_CPKeyedArchiverClassesKey),_6d=objj_msgSend(_65,"classForClassName:",_6b); +if(!_6d){ +_6d=CPClassFromString(_6b); +} +if(!_6d&&(_65._delegateSelectors&_6)){ +_6d=objj_msgSend(_delegate,"unarchiver:cannotDecodeObjectOfClassName:originalClasses:",_65,_6b,_6c); +} +if(!_6d){ +objj_msgSend(CPException,"raise:reason:",CPInvalidUnarchiveOperationException,"-[CPKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class ("+_6b+")"); +} +var _6e=_65._plistObject; +_65._plistObject=_68; +_67=objj_msgSend(_6d,"allocWithCoder:",_65); +_65._objects[_66]=_67; +var _6f=objj_msgSend(_67,"initWithCoder:",_65); +_65._plistObject=_6e; +if(_6f!==_67){ +if(_65._delegateSelectors&_3){ +objj_msgSend(_65._delegate,"unarchiver:willReplaceObject:withObject:",_65,_67,_6f); +} +_67=_6f; +_65._objects[_66]=_6f; +} +_6f=objj_msgSend(_67,"awakeAfterUsingCoder:",_65); +if(_6f!==_67){ +if(_65._delegateSelectors&_3){ +objj_msgSend(_65._delegate,"unarchiver:willReplaceObject:withObject:",_65,_67,_6f); +} +_67=_6f; +_65._objects[_66]=_6f; +} +if(_65._delegate){ +if(_65._delegateSelectors&_2){ +_6f=objj_msgSend(_65._delegate,"unarchiver:didDecodeObject:",_65,_67); +} +if(_6f!=_67){ +if(_65._delegateSelectors&_3){ +objj_msgSend(_65._delegate,"unarchiver:willReplaceObject:withObject:",_65,_67,_6f); +} +_67=_6f; +_65._objects[_66]=_6f; +} +} +}else{ +_65._objects[_66]=_67=_68; +if(objj_msgSend(_67,"class")===_a){ +if(_67===_7){ +_65._objects[_66]=_65._objects[0]; +return nil; +}else{ +_65._objects[_66]=_67=_68; +} +} +} +if((_67!=nil)&&(_67.isa===_f)){ +_67=objj_msgSend(_67,"JSObject"); +} +return _67; +}; +p;18;CPKeyValueCoding.jt;7312;@STATIC;1.0;i;9;CPArray.ji;14;CPDictionary.ji;8;CPNull.ji;10;CPObject.ji;21;CPKeyValueObserving.ji;13;CPArray+KVO.jt;7190; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPNull.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=nil,_2=nil; +CPUndefinedKeyException="CPUndefinedKeyException"; +CPTargetObjectUserInfoKey="CPTargetObjectUserInfoKey"; +CPUnknownUserInfoKey="CPUnknownUserInfoKey"; +var _3="$CPObjectAccessorsForClassKey",_4="$CPObjectModifiersForClassKey"; +var _5=objj_getClass("CPObject"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("_ivarForKey:"),function(_7,_8,_9){ +with(_7){ +var _a="_"+_9; +if(typeof _7[_a]!="undefined"){ +return _a; +} +var _b="is"+_9.charAt(0).toUpperCase()+_9.substr(1); +_a="_"+_b; +if(typeof _7[_a]!="undefined"){ +return _a; +} +_a=_9; +if(typeof _7[_a]!="undefined"){ +return _a; +} +_a=_b; +if(typeof _7[_a]!="undefined"){ +return _a; +} +return nil; +} +}),new objj_method(sel_getUid("valueForKey:"),function(_c,_d,_e){ +with(_c){ +var _f=objj_msgSend(_c,"class"),_10=_11(_f,_e); +if(_10){ +return objj_msgSend(_c,_10); +} +if(objj_msgSend(_f,"accessInstanceVariablesDirectly")){ +var _12=objj_msgSend(_c,"_ivarForKey:",_e); +if(_12){ +return _c[_12]; +} +} +return objj_msgSend(_c,"valueForUndefinedKey:",_e); +} +}),new objj_method(sel_getUid("valueForKeyPath:"),function(_13,_14,_15){ +with(_13){ +var _16=_15.indexOf("."); +if(_16===-1){ +return objj_msgSend(_13,"valueForKey:",_15); +} +var _17=_15.substring(0,_16),_18=_15.substring(_16+1),_19=objj_msgSend(_13,"valueForKey:",_17); +return objj_msgSend(_19,"valueForKeyPath:",_18); +} +}),new objj_method(sel_getUid("dictionaryWithValuesForKeys:"),function(_1a,_1b,_1c){ +with(_1a){ +var _1d=0,_1e=_1c.length,_1f=objj_msgSend(CPDictionary,"dictionary"); +for(;_1d<_1e;++_1d){ +var key=_1c[_1d],_20=objj_msgSend(_1a,"valueForKey:",key); +if(_20===nil){ +objj_msgSend(_1f,"setObject:forKey:",objj_msgSend(CPNull,"null"),key); +}else{ +objj_msgSend(_1f,"setObject:forKey:",_20,key); +} +} +return _1f; +} +}),new objj_method(sel_getUid("valueForUndefinedKey:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:",CPUndefinedKeyException,objj_msgSend(_21,"description")+" is not key value coding-compliant for the key "+_23,objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_21,_23],[CPTargetObjectUserInfoKey,CPUnknownUserInfoKey])),"raise"); +} +}),new objj_method(sel_getUid("setValue:forKeyPath:"),function(_24,_25,_26,_27){ +with(_24){ +if(!_27){ +_27="self"; +} +var i=0,_28=_27.split("."),_29=_28.length-1,_2a=_24; +for(;i<_29;++i){ +_2a=objj_msgSend(_2a,"valueForKey:",_28[i]); +} +objj_msgSend(_2a,"setValue:forKey:",_26,_28[i]); +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +var _2f=objj_msgSend(_2b,"class"),_30=objj_msgSend(_2f,"_modifierForKey:",_2e); +if(_30){ +return objj_msgSend(_2b,_30,_2d); +} +if(objj_msgSend(_2f,"accessInstanceVariablesDirectly")){ +var _31=objj_msgSend(_2b,"_ivarForKey:",_2e); +if(_31){ +objj_msgSend(_2b,"willChangeValueForKey:",_2e); +_2b[_31]=_2d; +objj_msgSend(_2b,"didChangeValueForKey:",_2e); +return; +} +} +objj_msgSend(_2b,"setValue:forUndefinedKey:",_2d,_2e); +} +}),new objj_method(sel_getUid("setValue:forUndefinedKey:"),function(_32,_33,_34,_35){ +with(_32){ +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:",CPUndefinedKeyException,objj_msgSend(_32,"description")+" is not key value coding-compliant for the key "+_35,objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_32,_35],[CPTargetObjectUserInfoKey,CPUnknownUserInfoKey])),"raise"); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("accessInstanceVariablesDirectly"),function(_36,_37){ +with(_36){ +return YES; +} +}),new objj_method(sel_getUid("_accessorForKey:"),function(_38,_39,_3a){ +with(_38){ +var _3b=nil,_3c=isa[_3]; +if(_3c){ +_3b=_3c[_3a]; +if(_3b){ +return _3b===objj_msgSend(CPNull,"null")?nil:_3b; +} +}else{ +_3c=isa[_3]={}; +} +var _3d=_3a.charAt(0).toUpperCase()+_3a.substr(1); +if(objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("get"+_3d))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString(_3a))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("is"+_3d))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("_get"+_3d))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("_"+_3a))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("_is"+_3d))){ +_3c[_3a]=_3b; +return _3b; +} +_3c[_3a]=objj_msgSend(CPNull,"null"); +return nil; +} +}),new objj_method(sel_getUid("_modifierForKey:"),function(_3e,_3f,_40){ +with(_3e){ +if(!_2){ +_2=objj_msgSend(CPDictionary,"dictionary"); +} +var UID=objj_msgSend(isa,"UID"),_41=nil,_42=objj_msgSend(_2,"objectForKey:",UID); +if(_42){ +_41=objj_msgSend(_42,"objectForKey:",_40); +if(_41){ +return _41===objj_msgSend(CPNull,"null")?nil:_41; +} +}else{ +_42=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_2,"setObject:forKey:",_42,UID); +} +if(_41){ +return _41===objj_msgSend(CPNull,"null")?nil:_41; +} +var _43=_40.charAt(0).toUpperCase()+_40.substr(1)+":"; +if(objj_msgSend(_3e,"instancesRespondToSelector:",_41=CPSelectorFromString("set"+_43))||objj_msgSend(_3e,"instancesRespondToSelector:",_41=CPSelectorFromString("_set"+_43))){ +objj_msgSend(_42,"setObject:forKey:",_41,_40); +return _41; +} +objj_msgSend(_42,"setObject:forKey:",objj_msgSend(CPNull,"null"),_40); +return nil; +} +})]); +var _44=objj_msgSend(CPNull,"null"); +var _11=function(_45,_46){ +var _47=nil,_48=_45.isa[_3]; +if(_48){ +_47=_48[_46]; +if(_47){ +return _47===_44?nil:_47; +} +}else{ +_48=_45.isa[_3]={}; +} +var _49=_46.charAt(0).toUpperCase()+_46.substr(1); +if(objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("get"+_49))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString(_46))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("is"+_49))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("_get"+_49))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("_"+_46))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("_is"+_49))){ +_48[_46]=_47; +return _47; +} +_48[_46]=_44; +return nil; +}; +var _5=objj_getClass("CPDictionary"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPDictionary\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("valueForKey:"),function(_4a,_4b,_4c){ +with(_4a){ +if(objj_msgSend(_4c,"hasPrefix:","@")){ +return objj_msgSendSuper({receiver:_4a,super_class:objj_getClass("CPDictionary").super_class},"valueForKey:",_4c.substr(1)); +} +return objj_msgSend(_4a,"objectForKey:",_4c); +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_4d,_4e,_4f,_50){ +with(_4d){ +objj_msgSend(_4d,"setObject:forKey:",_4f,_50); +} +})]); +var _5=objj_getClass("CPNull"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPNull\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("valueForKey:"),function(_51,_52,_53){ +with(_51){ +return _51; +} +})]); +objj_executeFile("CPKeyValueObserving.j",YES); +objj_executeFile("CPArray+KVO.j",YES); +p;21;CPKeyValueObserving.jt;18935;@STATIC;1.0;i;9;CPArray.ji;14;CPDictionary.ji;13;CPException.ji;8;CPNull.ji;10;CPObject.ji;7;CPSet.ji;13;CPArray+KVO.jt;18809; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPNull.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPSet.j",YES); +var _1=objj_getClass("CPObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("willChangeValueForKey:"),function(_3,_4,_5){ +with(_3){ +} +}),new objj_method(sel_getUid("didChangeValueForKey:"),function(_6,_7,_8){ +with(_6){ +} +}),new objj_method(sel_getUid("willChange:valuesAtIndexes:forKey:"),function(_9,_a,_b,_c,_d){ +with(_9){ +} +}),new objj_method(sel_getUid("didChange:valuesAtIndexes:forKey:"),function(_e,_f,_10,_11,key){ +with(_e){ +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_12,_13,_14,_15,_16,_17){ +with(_12){ +if(!_14||!_15){ +return; +} +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_12),"_addObserver:forKeyPath:options:context:",_14,_15,_16,_17); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_18,_19,_1a,_1b){ +with(_18){ +if(!_1a||!_1b){ +return; +} +objj_msgSend(_18[_1c],"_removeObserver:forKeyPath:",_1a,_1b); +} +}),new objj_method(sel_getUid("applyChange:toKeyPath:"),function(_1d,_1e,_1f,_20){ +with(_1d){ +var _21=objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeKindKey); +if(_21===CPKeyValueChangeSetting){ +var _22=objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeNewKey); +objj_msgSend(_1d,"setValue:forKeyPath:",_22===objj_msgSend(CPNull,"null")?nil:_22,_20); +}else{ +if(_21===CPKeyValueChangeInsertion){ +objj_msgSend(objj_msgSend(_1d,"mutableArrayValueForKeyPath:",_20),"insertObjects:atIndexes:",objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeNewKey),objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeIndexesKey)); +}else{ +if(_21===CPKeyValueChangeRemoval){ +objj_msgSend(objj_msgSend(_1d,"mutableArrayValueForKeyPath:",_20),"removeObjectsAtIndexes:",objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeIndexesKey)); +}else{ +if(_21===CPKeyValueChangeReplacement){ +objj_msgSend(objj_msgSend(_1d,"mutableArrayValueForKeyPath:",_20),"replaceObjectAtIndexes:withObjects:",objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeIndexesKey),objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeNewKey)); +} +} +} +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("automaticallyNotifiesObserversForKey:"),function(_23,_24,_25){ +with(_23){ +return YES; +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingValueForKey:"),function(_26,_27,_28){ +with(_26){ +var _29=_28.charAt(0).toUpperCase()+_28.substring(1); +selector="keyPathsForValuesAffecting"+_29; +if(objj_msgSend(objj_msgSend(_26,"class"),"respondsToSelector:",selector)){ +return objj_msgSend(objj_msgSend(_26,"class"),selector); +} +return objj_msgSend(CPSet,"set"); +} +})]); +var _1=objj_getClass("CPDictionary"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPDictionary\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("inverseChangeDictionary"),function(_2a,_2b){ +with(_2a){ +var _2c=objj_msgSend(_2a,"mutableCopy"),_2d=objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeKindKey); +if(_2d===CPKeyValueChangeSetting||_2d===CPKeyValueChangeReplacement){ +objj_msgSend(_2c,"setObject:forKey:",objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeOldKey),CPKeyValueChangeNewKey); +objj_msgSend(_2c,"setObject:forKey:",objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeNewKey),CPKeyValueChangeOldKey); +}else{ +if(_2d===CPKeyValueChangeInsertion){ +objj_msgSend(_2c,"setObject:forKey:",CPKeyValueChangeRemoval,CPKeyValueChangeKindKey); +objj_msgSend(_2c,"setObject:forKey:",objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeNewKey),CPKeyValueChangeOldKey); +objj_msgSend(_2c,"removeObjectForKey:",CPKeyValueChangeNewKey); +}else{ +if(_2d===CPKeyValueChangeRemoval){ +objj_msgSend(_2c,"setObject:forKey:",CPKeyValueChangeInsertion,CPKeyValueChangeKindKey); +objj_msgSend(_2c,"setObject:forKey:",objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeOldKey),CPKeyValueChangeNewKey); +objj_msgSend(_2c,"removeObjectForKey:",CPKeyValueChangeOldKey); +} +} +} +return _2c; +} +})]); +CPKeyValueObservingOptionNew=1<<0; +CPKeyValueObservingOptionOld=1<<1; +CPKeyValueObservingOptionInitial=1<<2; +CPKeyValueObservingOptionPrior=1<<3; +CPKeyValueChangeKindKey="CPKeyValueChangeKindKey"; +CPKeyValueChangeNewKey="CPKeyValueChangeNewKey"; +CPKeyValueChangeOldKey="CPKeyValueChangeOldKey"; +CPKeyValueChangeIndexesKey="CPKeyValueChangeIndexesKey"; +CPKeyValueChangeNotificationIsPriorKey="CPKeyValueChangeNotificationIsPriorKey"; +CPKeyValueChangeSetting=1; +CPKeyValueChangeInsertion=2; +CPKeyValueChangeRemoval=3; +CPKeyValueChangeReplacement=4; +var _2e=CPKeyValueObservingOptionNew|CPKeyValueObservingOptionOld,_2f="$KVODEPENDENT",_1c="$KVOPROXY"; +var _1=objj_allocateClassPair(CPObject,"_CPKVOProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_targetObject"),new objj_ivar("_nativeClass"),new objj_ivar("_changesForKey"),new objj_ivar("_observersForKey"),new objj_ivar("_observersForKeyLength"),new objj_ivar("_replacedKeys")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithTarget:"),function(_30,_31,_32){ +with(_30){ +_30=objj_msgSendSuper({receiver:_30,super_class:objj_getClass("_CPKVOProxy").super_class},"init"); +_targetObject=_32; +_nativeClass=objj_msgSend(_32,"class"); +_observersForKey={}; +_changesForKey={}; +_observersForKeyLength=0; +return _30; +} +}),new objj_method(sel_getUid("_replaceClass"),function(_33,_34){ +with(_33){ +var _35=_nativeClass,_36="$KVO_"+class_getName(_nativeClass),_37=objj_lookUpClass(_36); +if(_37){ +_targetObject.isa=_37; +_replacedKeys=_37._replacedKeys; +return; +} +var _38=objj_allocateClassPair(_35,_36); +objj_registerClassPair(_38); +_replacedKeys=objj_msgSend(CPSet,"set"); +_38._replacedKeys=_replacedKeys; +var _39=_CPKVOModelSubclass.method_list,_3a=_39.length,i=0; +for(;i<_3a;i++){ +var _3b=_39[i]; +class_addMethod(_38,method_getName(_3b),method_getImplementation(_3b),""); +} +if(objj_msgSend(_targetObject,"isKindOfClass:",objj_msgSend(CPDictionary,"class"))){ +var _39=_CPKVOModelDictionarySubclass.method_list,_3a=_39.length,i=0; +for(;i<_3a;i++){ +var _3b=_39[i]; +class_addMethod(_38,method_getName(_3b),method_getImplementation(_3b),""); +} +} +_targetObject.isa=_38; +} +}),new objj_method(sel_getUid("_replaceSetterForKey:"),function(_3c,_3d,_3e){ +with(_3c){ +if(objj_msgSend(_replacedKeys,"containsObject:",_3e)||!objj_msgSend(_nativeClass,"automaticallyNotifiesObserversForKey:",_3e)){ +return; +} +var _3f=_nativeClass,_40=_3e.charAt(0).toUpperCase()+_3e.substring(1),_41=false,_42=["set"+_40+":",_43,"_set"+_40+":",_43,"insertObject:in"+_40+"AtIndex:",_44,"replaceObjectIn"+_40+"AtIndex:withObject:",_45,"removeObjectFrom"+_40+"AtIndex:",_46]; +var i=0,_47=_42.length; +for(;i<_47;i+=2){ +var _48=sel_getName(_42[i]),_49=_42[i+1]; +if(objj_msgSend(_nativeClass,"instancesRespondToSelector:",_48)){ +var _4a=class_getInstanceMethod(_nativeClass,_48); +class_addMethod(_targetObject.isa,_48,_49(_3e,_4a),""); +objj_msgSend(_replacedKeys,"addObject:",_3e); +} +} +var _4b=objj_msgSend(objj_msgSend(_nativeClass,"keyPathsForValuesAffectingValueForKey:",_3e),"allObjects"),_4c=_4b?_4b.length:0; +if(!_4c){ +return; +} +var _4d=_nativeClass[_2f]; +if(!_4d){ +_4d={}; +_nativeClass[_2f]=_4d; +} +while(_4c--){ +var _4e=_4b[_4c],_4f=_4d[_4e]; +if(!_4f){ +_4f=objj_msgSend(CPSet,"new"); +_4d[_4e]=_4f; +} +objj_msgSend(_4f,"addObject:",_3e); +objj_msgSend(_3c,"_replaceSetterForKey:",_4e); +} +} +}),new objj_method(sel_getUid("_addObserver:forKeyPath:options:context:"),function(_50,_51,_52,_53,_54,_55){ +with(_50){ +if(!_52){ +return; +} +var _56=nil; +if(_53.indexOf(".")!=CPNotFound){ +_56=objj_msgSend(objj_msgSend(_CPKVOForwardingObserver,"alloc"),"initWithKeyPath:object:observer:options:context:",_53,_targetObject,_52,_54,_55); +}else{ +objj_msgSend(_50,"_replaceSetterForKey:",_53); +} +var _57=_observersForKey[_53]; +if(!_57){ +_57=objj_msgSend(CPDictionary,"dictionary"); +_observersForKey[_53]=_57; +_observersForKeyLength++; +} +objj_msgSend(_57,"setObject:forKey:",_58(_52,_54,_55,_56),objj_msgSend(_52,"UID")); +if(_54&CPKeyValueObservingOptionInitial){ +var _59=objj_msgSend(_targetObject,"valueForKeyPath:",_53); +if(_59===nil||_59===undefined){ +_59=objj_msgSend(CPNull,"null"); +} +var _5a=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_59,CPKeyValueChangeNewKey); +objj_msgSend(_52,"observeValueForKeyPath:ofObject:change:context:",_53,_50,_5a,_55); +} +} +}),new objj_method(sel_getUid("_removeObserver:forKeyPath:"),function(_5b,_5c,_5d,_5e){ +with(_5b){ +var _5f=_observersForKey[_5e]; +if(_5e.indexOf(".")!=CPNotFound){ +var _60=objj_msgSend(_5f,"objectForKey:",objj_msgSend(_5d,"UID")).forwarder; +objj_msgSend(_60,"finalize"); +} +objj_msgSend(_5f,"removeObjectForKey:",objj_msgSend(_5d,"UID")); +if(!objj_msgSend(_5f,"count")){ +_observersForKeyLength--; +delete _observersForKey[_5e]; +} +if(!_observersForKeyLength){ +_targetObject.isa=_nativeClass; +delete _targetObject[_1c]; +} +} +}),new objj_method(sel_getUid("_sendNotificationsForKey:changeOptions:isBefore:"),function(_61,_62,_63,_64,_65){ +with(_61){ +var _66=_changesForKey[_63]; +if(_65){ +_66=_64; +var _67=objj_msgSend(_66,"objectForKey:",CPKeyValueChangeIndexesKey); +if(_67){ +var _68=objj_msgSend(_66,"objectForKey:",CPKeyValueChangeKindKey); +if(_68===CPKeyValueChangeReplacement||_68===CPKeyValueChangeRemoval){ +var _69=objj_msgSend(objj_msgSend(_targetObject,"mutableArrayValueForKeyPath:",_63),"objectsAtIndexes:",_67); +objj_msgSend(_66,"setValue:forKey:",_69,CPKeyValueChangeOldKey); +} +}else{ +var _6a=objj_msgSend(_targetObject,"valueForKey:",_63); +if(_6a===nil||_6a===undefined){ +_6a=objj_msgSend(CPNull,"null"); +} +objj_msgSend(_66,"setObject:forKey:",_6a,CPKeyValueChangeOldKey); +} +objj_msgSend(_66,"setObject:forKey:",1,CPKeyValueChangeNotificationIsPriorKey); +_changesForKey[_63]=_66; +}else{ +if(!_66){ +_66=objj_msgSend(CPDictionary,"new"); +} +objj_msgSend(_66,"removeObjectForKey:",CPKeyValueChangeNotificationIsPriorKey); +var _67=objj_msgSend(_66,"objectForKey:",CPKeyValueChangeIndexesKey); +if(_67){ +var _68=objj_msgSend(_66,"objectForKey:",CPKeyValueChangeKindKey); +if(_68==CPKeyValueChangeReplacement||_68==CPKeyValueChangeInsertion){ +var _69=objj_msgSend(objj_msgSend(_targetObject,"mutableArrayValueForKeyPath:",_63),"objectsAtIndexes:",_67); +objj_msgSend(_66,"setValue:forKey:",_69,CPKeyValueChangeNewKey); +} +}else{ +var _6b=objj_msgSend(_targetObject,"valueForKey:",_63); +if(_6b===nil||_6b===undefined){ +_6b=objj_msgSend(CPNull,"null"); +} +objj_msgSend(_66,"setObject:forKey:",_6b,CPKeyValueChangeNewKey); +} +} +var _6c=objj_msgSend(_observersForKey[_63],"allValues"),_6d=_6c?_6c.length:0; +while(_6d--){ +var _6e=_6c[_6d]; +if(_65&&(_6e.options&CPKeyValueObservingOptionPrior)){ +objj_msgSend(_6e.observer,"observeValueForKeyPath:ofObject:change:context:",_63,_targetObject,_66,_6e.context); +}else{ +if(!_65){ +objj_msgSend(_6e.observer,"observeValueForKeyPath:ofObject:change:context:",_63,_targetObject,_66,_6e.context); +} +} +} +var _6f=_nativeClass[_2f]; +if(!_6f){ +return; +} +var _70=objj_msgSend(_6f[_63],"allObjects"); +if(!_70){ +return; +} +var _71=0,_6d=objj_msgSend(_70,"count"); +for(;_71<_6d;++_71){ +var _72=_70[_71]; +objj_msgSend(_61,"_sendNotificationsForKey:changeOptions:isBefore:",_72,_65?objj_msgSend(_64,"copy"):_changesForKey[_72],_65); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("proxyForObject:"),function(_73,_74,_75){ +with(_73){ +var _76=_75[_1c]; +if(_76){ +return _76; +} +_76=objj_msgSend(objj_msgSend(_73,"alloc"),"initWithTarget:",_75); +objj_msgSend(_76,"_replaceClass"); +_75[_1c]=_76; +return _76; +} +})]); +var _1=objj_allocateClassPair(Nil,"_CPKVOModelSubclass"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("willChangeValueForKey:"),function(_77,_78,_79){ +with(_77){ +var _7a=objj_msgSend(_77,"class"),_7b=sel_getUid("willChangeValueForKey:"),_7c=class_getMethodImplementation(_7a,_7b); +_7c(_77,_7b,_79); +if(!_79){ +return; +} +var _7d=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",CPKeyValueChangeSetting,CPKeyValueChangeKindKey); +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_77),"_sendNotificationsForKey:changeOptions:isBefore:",_79,_7d,YES); +} +}),new objj_method(sel_getUid("didChangeValueForKey:"),function(_7e,_7f,_80){ +with(_7e){ +var _81=objj_msgSend(_7e,"class"),_82=sel_getUid("didChangeValueForKey:"),_83=class_getMethodImplementation(_81,_82); +_83(_7e,_82,_80); +if(!_80){ +return; +} +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_7e),"_sendNotificationsForKey:changeOptions:isBefore:",_80,nil,NO); +} +}),new objj_method(sel_getUid("willChange:valuesAtIndexes:forKey:"),function(_84,_85,_86,_87,_88){ +with(_84){ +var _89=objj_msgSend(_84,"class"),_8a=sel_getUid("willChange:valuesAtIndexes:forKey:"),_8b=class_getMethodImplementation(_89,_8a); +_8b(_84,_8a,_86,_87,_88); +if(!_88){ +return; +} +var _8c=objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_86,_87],[CPKeyValueChangeKindKey,CPKeyValueChangeIndexesKey]); +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_84),"_sendNotificationsForKey:changeOptions:isBefore:",_88,_8c,YES); +} +}),new objj_method(sel_getUid("didChange:valuesAtIndexes:forKey:"),function(_8d,_8e,_8f,_90,_91){ +with(_8d){ +var _92=objj_msgSend(_8d,"class"),_93=sel_getUid("didChange:valuesAtIndexes:forKey:"),_94=class_getMethodImplementation(_92,_93); +_94(_8d,_93,_8f,_90,_91); +if(!_91){ +return; +} +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_8d),"_sendNotificationsForKey:changeOptions:isBefore:",_91,nil,NO); +} +}),new objj_method(sel_getUid("class"),function(_95,_96){ +with(_95){ +return _95[_1c]._nativeClass; +} +}),new objj_method(sel_getUid("superclass"),function(_97,_98){ +with(_97){ +return objj_msgSend(objj_msgSend(_97,"class"),"superclass"); +} +}),new objj_method(sel_getUid("isKindOfClass:"),function(_99,_9a,_9b){ +with(_99){ +return objj_msgSend(objj_msgSend(_99,"class"),"isSubclassOfClass:",_9b); +} +}),new objj_method(sel_getUid("isMemberOfClass:"),function(_9c,_9d,_9e){ +with(_9c){ +return objj_msgSend(_9c,"class")==_9e; +} +}),new objj_method(sel_getUid("className"),function(_9f,_a0){ +with(_9f){ +return objj_msgSend(_9f,"class").name; +} +})]); +var _1=objj_allocateClassPair(Nil,"_CPKVOModelDictionarySubclass"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("removeAllObjects"),function(_a1,_a2){ +with(_a1){ +var _a3=objj_msgSend(_a1,"allKeys"),_a4=objj_msgSend(_a3,"count"),i=0; +for(;i<_a4;i++){ +objj_msgSend(_a1,"willChangeValueForKey:",_a3[i]); +} +var _a5=objj_msgSend(_a1,"class"),_a6=sel_getUid("removeAllObjects"),_a7=class_getMethodImplementation(_a5,_a6); +_a7(_a1,_a6); +for(i=0;i<_a4;i++){ +objj_msgSend(_a1,"didChangeValueForKey:",_a3[i]); +} +} +}),new objj_method(sel_getUid("removeObjectForKey:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"willChangeValueForKey:",_aa); +var _ab=objj_msgSend(_a8,"class"),_ac=sel_getUid("removeObjectForKey:"),_ad=class_getMethodImplementation(_ab,_ac); +_ad(_a8,_ac,_aa); +objj_msgSend(_a8,"didChangeValueForKey:",_aa); +} +}),new objj_method(sel_getUid("setObject:forKey:"),function(_ae,_af,_b0,_b1){ +with(_ae){ +objj_msgSend(_ae,"willChangeValueForKey:",_b1); +var _b2=objj_msgSend(_ae,"class"),_b3=sel_getUid("setObject:forKey:"),_b4=class_getMethodImplementation(_b2,_b3); +_b4(_ae,_b3,_b0,_b1); +objj_msgSend(_ae,"didChangeValueForKey:",_b1); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPKVOForwardingObserver"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_object"),new objj_ivar("_observer"),new objj_ivar("_context"),new objj_ivar("_firstPart"),new objj_ivar("_secondPart"),new objj_ivar("_value")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKeyPath:object:observer:options:context:"),function(_b5,_b6,_b7,_b8,_b9,_ba,_bb){ +with(_b5){ +_b5=objj_msgSendSuper({receiver:_b5,super_class:objj_getClass("_CPKVOForwardingObserver").super_class},"init"); +_context=_bb; +_observer=_b9; +_object=_b8; +var _bc=_b7.indexOf("."); +if(_bc==CPNotFound){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Created _CPKVOForwardingObserver without compound key path: "+_b7); +} +_firstPart=_b7.substring(0,_bc); +_secondPart=_b7.substring(_bc+1); +objj_msgSend(_object,"addObserver:forKeyPath:options:context:",_b5,_firstPart,_2e,nil); +_value=objj_msgSend(_object,"valueForKey:",_firstPart); +if(_value){ +objj_msgSend(_value,"addObserver:forKeyPath:options:context:",_b5,_secondPart,_2e,nil); +} +return _b5; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_bd,_be,_bf,_c0,_c1,_c2){ +with(_bd){ +if(_bf===_firstPart){ +objj_msgSend(_observer,"observeValueForKeyPath:ofObject:change:context:",_firstPart,_object,_c1,_context); +if(_value){ +objj_msgSend(_value,"removeObserver:forKeyPath:",_bd,_secondPart); +} +_value=objj_msgSend(_object,"valueForKey:",_firstPart); +if(_value){ +objj_msgSend(_value,"addObserver:forKeyPath:options:context:",_bd,_secondPart,_2e,nil); +} +}else{ +objj_msgSend(_observer,"observeValueForKeyPath:ofObject:change:context:",_firstPart+"."+_bf,_object,_c1,_context); +} +} +}),new objj_method(sel_getUid("finalize"),function(_c3,_c4){ +with(_c3){ +if(_value){ +objj_msgSend(_value,"removeObserver:forKeyPath:",_c3,_secondPart); +} +objj_msgSend(_object,"removeObserver:forKeyPath:",_c3,_firstPart); +_object=nil; +_observer=nil; +_context=nil; +_value=nil; +} +})]); +var _58=_58=function(_c5,_c6,_c7,_c8){ +return {observer:_c5,options:_c6,context:_c7,forwarder:_c8}; +}; +var _43=_43=function(_c9,_ca){ +return function(_cb,_cc,_cd){ +objj_msgSend(_cb,"willChangeValueForKey:",_c9); +_ca.method_imp(_cb,_cc,_cd); +objj_msgSend(_cb,"didChangeValueForKey:",_c9); +}; +}; +var _44=_44=function(_ce,_cf){ +return function(_d0,_d1,_d2,_d3){ +objj_msgSend(_d0,"willChange:valuesAtIndexes:forKey:",CPKeyValueChangeInsertion,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_d3),_ce); +_cf.method_imp(_d0,_d1,_d2,_d3); +objj_msgSend(_d0,"didChange:valuesAtIndexes:forKey:",CPKeyValueChangeInsertion,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_d3),_ce); +}; +}; +var _45=_45=function(_d4,_d5){ +return function(_d6,_d7,_d8,_d9){ +objj_msgSend(_d6,"willChange:valuesAtIndexes:forKey:",CPKeyValueChangeReplacement,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_d8),_d4); +_d5.method_imp(_d6,_d7,_d8,_d9); +objj_msgSend(_d6,"didChange:valuesAtIndexes:forKey:",CPKeyValueChangeReplacement,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_d8),_d4); +}; +}; +var _46=_46=function(_da,_db){ +return function(_dc,_dd,_de){ +objj_msgSend(_dc,"willChange:valuesAtIndexes:forKey:",CPKeyValueChangeRemoval,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_de),_da); +_db.method_imp(_dc,_dd,_de); +objj_msgSend(_dc,"didChange:valuesAtIndexes:forKey:",CPKeyValueChangeRemoval,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_de),_da); +}; +}; +objj_executeFile("CPArray+KVO.j",YES); +p;7;CPLog.jt;17;@STATIC;1.0;t;1; +p;16;CPNotification.jt;1472;@STATIC;1.0;i;13;CPException.ji;10;CPObject.jt;1420; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPNotification"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_name"),new objj_ivar("_object"),new objj_ivar("_userInfo")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"CPNotification's init method should not be used"); +} +}),new objj_method(sel_getUid("initWithName:object:userInfo:"),function(_5,_6,_7,_8,_9){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPNotification").super_class},"init"); +if(_5){ +_name=_7; +_object=_8; +_userInfo=_9; +} +return _5; +} +}),new objj_method(sel_getUid("name"),function(_a,_b){ +with(_a){ +return _name; +} +}),new objj_method(sel_getUid("object"),function(_c,_d){ +with(_c){ +return _object; +} +}),new objj_method(sel_getUid("userInfo"),function(_e,_f){ +with(_e){ +return _userInfo; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("notificationWithName:object:userInfo:"),function(_10,_11,_12,_13,_14){ +with(_10){ +return objj_msgSend(objj_msgSend(_10,"alloc"),"initWithName:object:userInfo:",_12,_13,_14); +} +}),new objj_method(sel_getUid("notificationWithName:object:"),function(_15,_16,_17,_18){ +with(_15){ +return objj_msgSend(objj_msgSend(_15,"alloc"),"initWithName:object:userInfo:",_17,_18,nil); +} +})]); +p;22;CPNotificationCenter.jt;6517;@STATIC;1.0;i;9;CPArray.ji;14;CPDictionary.ji;13;CPException.ji;16;CPNotification.ji;8;CPNull.jt;6415; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPNotification.j",YES); +objj_executeFile("CPNull.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPNotificationCenter"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_namedRegistries"),new objj_ivar("_unnamedRegistry")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPNotificationCenter").super_class},"init"); +if(_4){ +_namedRegistries=objj_msgSend(CPDictionary,"dictionary"); +_unnamedRegistry=objj_msgSend(objj_msgSend(_CPNotificationRegistry,"alloc"),"init"); +} +return _4; +} +}),new objj_method(sel_getUid("addObserver:selector:name:object:"),function(_6,_7,_8,_9,_a,_b){ +with(_6){ +var _c,_d=objj_msgSend(objj_msgSend(_CPNotificationObserver,"alloc"),"initWithObserver:selector:",_8,_9); +if(_a==nil){ +_c=_unnamedRegistry; +}else{ +if(!(_c=objj_msgSend(_namedRegistries,"objectForKey:",_a))){ +_c=objj_msgSend(objj_msgSend(_CPNotificationRegistry,"alloc"),"init"); +objj_msgSend(_namedRegistries,"setObject:forKey:",_c,_a); +} +} +objj_msgSend(_c,"addObserver:object:",_d,_b); +} +}),new objj_method(sel_getUid("removeObserver:"),function(_e,_f,_10){ +with(_e){ +var _11=nil,_12=objj_msgSend(_namedRegistries,"keyEnumerator"); +while(_11=objj_msgSend(_12,"nextObject")){ +objj_msgSend(objj_msgSend(_namedRegistries,"objectForKey:",_11),"removeObserver:object:",_10,nil); +} +objj_msgSend(_unnamedRegistry,"removeObserver:object:",_10,nil); +} +}),new objj_method(sel_getUid("removeObserver:name:object:"),function(_13,_14,_15,_16,_17){ +with(_13){ +if(_16==nil){ +var _18=nil,_19=objj_msgSend(_namedRegistries,"keyEnumerator"); +while(_18=objj_msgSend(_19,"nextObject")){ +objj_msgSend(objj_msgSend(_namedRegistries,"objectForKey:",_18),"removeObserver:object:",_15,_17); +} +objj_msgSend(_unnamedRegistry,"removeObserver:object:",_15,_17); +}else{ +objj_msgSend(objj_msgSend(_namedRegistries,"objectForKey:",_16),"removeObserver:object:",_15,_17); +} +} +}),new objj_method(sel_getUid("postNotification:"),function(_1a,_1b,_1c){ +with(_1a){ +if(!_1c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"postNotification: does not except 'nil' notifications"); +} +_1d(_1a,_1c); +} +}),new objj_method(sel_getUid("postNotificationName:object:userInfo:"),function(_1e,_1f,_20,_21,_22){ +with(_1e){ +_1d(_1e,objj_msgSend(objj_msgSend(CPNotification,"alloc"),"initWithName:object:userInfo:",_20,_21,_22)); +} +}),new objj_method(sel_getUid("postNotificationName:object:"),function(_23,_24,_25,_26){ +with(_23){ +_1d(_23,objj_msgSend(objj_msgSend(CPNotification,"alloc"),"initWithName:object:userInfo:",_25,_26,nil)); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("defaultCenter"),function(_27,_28){ +with(_27){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(CPNotificationCenter,"alloc"),"init"); +} +return _1; +} +})]); +var _1d=function(_29,_2a){ +objj_msgSend(_29._unnamedRegistry,"postNotification:",_2a); +objj_msgSend(objj_msgSend(_29._namedRegistries,"objectForKey:",objj_msgSend(_2a,"name")),"postNotification:",_2a); +}; +var _2=objj_allocateClassPair(CPObject,"_CPNotificationRegistry"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_objectObservers"),new objj_ivar("_observerRemovalCount")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_2b,_2c){ +with(_2b){ +_2b=objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("_CPNotificationRegistry").super_class},"init"); +if(_2b){ +_observerRemovalCount=0; +_objectObservers=objj_msgSend(CPDictionary,"dictionary"); +} +return _2b; +} +}),new objj_method(sel_getUid("addObserver:object:"),function(_2d,_2e,_2f,_30){ +with(_2d){ +if(!_30){ +_30=objj_msgSend(CPNull,"null"); +} +var _31=objj_msgSend(_objectObservers,"objectForKey:",objj_msgSend(_30,"UID")); +if(!_31){ +_31=[]; +objj_msgSend(_objectObservers,"setObject:forKey:",_31,objj_msgSend(_30,"UID")); +} +_31.push(_2f); +} +}),new objj_method(sel_getUid("removeObserver:object:"),function(_32,_33,_34,_35){ +with(_32){ +var _36=[]; +if(_35==nil){ +var key=nil,_37=objj_msgSend(_objectObservers,"keyEnumerator"); +while(key=objj_msgSend(_37,"nextObject")){ +var _38=objj_msgSend(_objectObservers,"objectForKey:",key),_39=_38?_38.length:0; +while(_39--){ +if(objj_msgSend(_38[_39],"observer")==_34){ +++_observerRemovalCount; +_38.splice(_39,1); +} +} +if(!_38||_38.length==0){ +_36.push(key); +} +} +}else{ +var key=objj_msgSend(_35,"UID"),_38=objj_msgSend(_objectObservers,"objectForKey:",key); +_39=_38?_38.length:0; +while(_39--){ +if(objj_msgSend(_38[_39],"observer")==_34){ +++_observerRemovalCount; +_38.splice(_39,1); +} +} +if(!_38||_38.length==0){ +_36.push(key); +} +} +var _39=_36.length; +while(_39--){ +objj_msgSend(_objectObservers,"removeObjectForKey:",_36[_39]); +} +} +}),new objj_method(sel_getUid("postNotification:"),function(_3a,_3b,_3c){ +with(_3a){ +var _3d=_observerRemovalCount,_3e=objj_msgSend(_3c,"object"),_3f=nil; +if(_3e!=nil&&(_3f=objj_msgSend(objj_msgSend(_objectObservers,"objectForKey:",objj_msgSend(_3e,"UID")),"copy"))){ +var _40=_3f,_41=_3f.length; +while(_41--){ +var _42=_3f[_41]; +if((_3d===_observerRemovalCount)||objj_msgSend(_40,"indexOfObjectIdenticalTo:",_42)!==CPNotFound){ +objj_msgSend(_42,"postNotification:",_3c); +} +} +} +_3f=objj_msgSend(objj_msgSend(_objectObservers,"objectForKey:",objj_msgSend(objj_msgSend(CPNull,"null"),"UID")),"copy"); +if(!_3f){ +return; +} +var _3d=_observerRemovalCount,_41=_3f.length,_40=_3f; +while(_41--){ +var _42=_3f[_41]; +if((_3d===_observerRemovalCount)||objj_msgSend(_40,"indexOfObjectIdenticalTo:",_42)!==CPNotFound){ +objj_msgSend(_42,"postNotification:",_3c); +} +} +} +}),new objj_method(sel_getUid("count"),function(_43,_44){ +with(_43){ +return objj_msgSend(_objectObservers,"count"); +} +})]); +var _2=objj_allocateClassPair(CPObject,"_CPNotificationObserver"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_observer"),new objj_ivar("_selector")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithObserver:selector:"),function(_45,_46,_47,_48){ +with(_45){ +if(_45){ +_observer=_47; +_selector=_48; +} +return _45; +} +}),new objj_method(sel_getUid("observer"),function(_49,_4a){ +with(_49){ +return _observer; +} +}),new objj_method(sel_getUid("postNotification:"),function(_4b,_4c,_4d){ +with(_4b){ +objj_msgSend(_observer,"performSelector:withObject:",_selector,_4d); +} +})]); +p;8;CPNull.jt;731;@STATIC;1.0;i;10;CPObject.jt;698; +objj_executeFile("CPObject.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPNull"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("isEqual:"),function(_4,_5,_6){ +with(_4){ +if(_4===_6){ +return YES; +} +return objj_msgSend(_6,"isKindOfClass:",objj_msgSend(CPNull,"class")); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(CPNull,"null"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("null"),function(_d,_e){ +with(_d){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(CPNull,"alloc"),"init"); +} +return _1; +} +})]); +p;10;CPNumber.jt;6048;@STATIC;1.0;i;10;CPObject.ji;15;CPObjJRuntime.jt;5994; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPObjJRuntime.j",YES); +var _1=new Number(),_2=new CFMutableDictionary(); +var _3=objj_allocateClassPair(CPObject,"CPNumber"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("initWithBool:"),function(_5,_6,_7){ +with(_5){ +return _7; +} +}),new objj_method(sel_getUid("initWithChar:"),function(_8,_9,_a){ +with(_8){ +if(_a.charCodeAt){ +return _a.charCodeAt(0); +} +return _a; +} +}),new objj_method(sel_getUid("initWithDouble:"),function(_b,_c,_d){ +with(_b){ +return _d; +} +}),new objj_method(sel_getUid("initWithFloat:"),function(_e,_f,_10){ +with(_e){ +return _10; +} +}),new objj_method(sel_getUid("initWithInt:"),function(_11,_12,_13){ +with(_11){ +return _13; +} +}),new objj_method(sel_getUid("initWithLong:"),function(_14,_15,_16){ +with(_14){ +return _16; +} +}),new objj_method(sel_getUid("initWithLongLong:"),function(_17,_18,_19){ +with(_17){ +return _19; +} +}),new objj_method(sel_getUid("initWithShort:"),function(_1a,_1b,_1c){ +with(_1a){ +return _1c; +} +}),new objj_method(sel_getUid("initWithUnsignedChar:"),function(_1d,_1e,_1f){ +with(_1d){ +if(_1f.charCodeAt){ +return _1f.charCodeAt(0); +} +return _1f; +} +}),new objj_method(sel_getUid("initWithUnsignedInt:"),function(_20,_21,_22){ +with(_20){ +return _22; +} +}),new objj_method(sel_getUid("initWithUnsignedLong:"),function(_23,_24,_25){ +with(_23){ +return _25; +} +}),new objj_method(sel_getUid("initWithUnsignedShort:"),function(_26,_27,_28){ +with(_26){ +return _28; +} +}),new objj_method(sel_getUid("UID"),function(_29,_2a){ +with(_29){ +var UID=_2.valueForKey(_29); +if(!UID){ +UID=objj_generateObjectUID(); +_2.setValueForKey(_29,UID); +} +return UID+""; +} +}),new objj_method(sel_getUid("boolValue"),function(_2b,_2c){ +with(_2b){ +return _2b?true:false; +} +}),new objj_method(sel_getUid("charValue"),function(_2d,_2e){ +with(_2d){ +return String.fromCharCode(_2d); +} +}),new objj_method(sel_getUid("decimalValue"),function(_2f,_30){ +with(_2f){ +throw new Error("decimalValue: NOT YET IMPLEMENTED"); +} +}),new objj_method(sel_getUid("descriptionWithLocale:"),function(_31,_32,_33){ +with(_31){ +if(!_33){ +return toString(); +} +throw new Error("descriptionWithLocale: NOT YET IMPLEMENTED"); +} +}),new objj_method(sel_getUid("description"),function(_34,_35){ +with(_34){ +return objj_msgSend(_34,"descriptionWithLocale:",nil); +} +}),new objj_method(sel_getUid("doubleValue"),function(_36,_37){ +with(_36){ +if(typeof _36=="boolean"){ +return _36?1:0; +} +return _36; +} +}),new objj_method(sel_getUid("floatValue"),function(_38,_39){ +with(_38){ +if(typeof _38=="boolean"){ +return _38?1:0; +} +return _38; +} +}),new objj_method(sel_getUid("intValue"),function(_3a,_3b){ +with(_3a){ +if(typeof _3a=="boolean"){ +return _3a?1:0; +} +return _3a; +} +}),new objj_method(sel_getUid("longLongValue"),function(_3c,_3d){ +with(_3c){ +if(typeof _3c=="boolean"){ +return _3c?1:0; +} +return _3c; +} +}),new objj_method(sel_getUid("longValue"),function(_3e,_3f){ +with(_3e){ +if(typeof _3e=="boolean"){ +return _3e?1:0; +} +return _3e; +} +}),new objj_method(sel_getUid("shortValue"),function(_40,_41){ +with(_40){ +if(typeof _40=="boolean"){ +return _40?1:0; +} +return _40; +} +}),new objj_method(sel_getUid("stringValue"),function(_42,_43){ +with(_42){ +return toString(); +} +}),new objj_method(sel_getUid("unsignedCharValue"),function(_44,_45){ +with(_44){ +return String.fromCharCode(_44); +} +}),new objj_method(sel_getUid("unsignedIntValue"),function(_46,_47){ +with(_46){ +if(typeof _46=="boolean"){ +return _46?1:0; +} +return _46; +} +}),new objj_method(sel_getUid("unsignedLongValue"),function(_48,_49){ +with(_48){ +if(typeof _48=="boolean"){ +return _48?1:0; +} +return _48; +} +}),new objj_method(sel_getUid("unsignedShortValue"),function(_4a,_4b){ +with(_4a){ +if(typeof _4a=="boolean"){ +return _4a?1:0; +} +return _4a; +} +}),new objj_method(sel_getUid("compare:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_4c>_4e){ +return CPOrderedDescending; +}else{ +if(_4c<_4e){ +return CPOrderedAscending; +} +} +return CPOrderedSame; +} +}),new objj_method(sel_getUid("isEqualToNumber:"),function(_4f,_50,_51){ +with(_4f){ +return _4f==_51; +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("alloc"),function(_52,_53){ +with(_52){ +return _1; +} +}),new objj_method(sel_getUid("numberWithBool:"),function(_54,_55,_56){ +with(_54){ +return _56; +} +}),new objj_method(sel_getUid("numberWithChar:"),function(_57,_58,_59){ +with(_57){ +if(_59.charCodeAt){ +return _59.charCodeAt(0); +} +return _59; +} +}),new objj_method(sel_getUid("numberWithDouble:"),function(_5a,_5b,_5c){ +with(_5a){ +return _5c; +} +}),new objj_method(sel_getUid("numberWithFloat:"),function(_5d,_5e,_5f){ +with(_5d){ +return _5f; +} +}),new objj_method(sel_getUid("numberWithInt:"),function(_60,_61,_62){ +with(_60){ +return _62; +} +}),new objj_method(sel_getUid("numberWithLong:"),function(_63,_64,_65){ +with(_63){ +return _65; +} +}),new objj_method(sel_getUid("numberWithLongLong:"),function(_66,_67,_68){ +with(_66){ +return _68; +} +}),new objj_method(sel_getUid("numberWithShort:"),function(_69,_6a,_6b){ +with(_69){ +return _6b; +} +}),new objj_method(sel_getUid("numberWithUnsignedChar:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_6e.charCodeAt){ +return _6e.charCodeAt(0); +} +return _6e; +} +}),new objj_method(sel_getUid("numberWithUnsignedInt:"),function(_6f,_70,_71){ +with(_6f){ +return _71; +} +}),new objj_method(sel_getUid("numberWithUnsignedLong:"),function(_72,_73,_74){ +with(_72){ +return _74; +} +}),new objj_method(sel_getUid("numberWithUnsignedShort:"),function(_75,_76,_77){ +with(_75){ +return _77; +} +})]); +var _3=objj_getClass("CPNumber"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPNumber\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_78,_79,_7a){ +with(_78){ +return objj_msgSend(_7a,"decodeNumber"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7b,_7c,_7d){ +with(_7b){ +objj_msgSend(_7d,"encodeNumber:forKey:",_7b,"self"); +} +})]); +Number.prototype.isa=CPNumber; +Boolean.prototype.isa=CPNumber; +objj_msgSend(CPNumber,"initialize"); +p;10;CPObject.jt;6862;@STATIC;1.0;t;6843; +var _1=objj_allocateClassPair(Nil,"CPObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("isa")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return _3; +} +}),new objj_method(sel_getUid("copy"),function(_5,_6){ +with(_5){ +return _5; +} +}),new objj_method(sel_getUid("mutableCopy"),function(_7,_8){ +with(_7){ +return objj_msgSend(_7,"copy"); +} +}),new objj_method(sel_getUid("dealloc"),function(_9,_a){ +with(_9){ +} +}),new objj_method(sel_getUid("class"),function(_b,_c){ +with(_b){ +return isa; +} +}),new objj_method(sel_getUid("isKindOfClass:"),function(_d,_e,_f){ +with(_d){ +return objj_msgSend(isa,"isSubclassOfClass:",_f); +} +}),new objj_method(sel_getUid("isMemberOfClass:"),function(_10,_11,_12){ +with(_10){ +return _10.isa===_12; +} +}),new objj_method(sel_getUid("isProxy"),function(_13,_14){ +with(_13){ +return NO; +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(_15,_16,_17){ +with(_15){ +return !!class_getInstanceMethod(isa,_17); +} +}),new objj_method(sel_getUid("implementsSelector:"),function(_18,_19,_1a){ +with(_18){ +var _1b=class_copyMethodList(isa),_1c=_1b.length; +while(_1c--){ +if(method_getName(_1b[_1c])===_1a){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("methodForSelector:"),function(_1d,_1e,_1f){ +with(_1d){ +return class_getMethodImplementation(isa,_1f); +} +}),new objj_method(sel_getUid("methodSignatureForSelector:"),function(_20,_21,_22){ +with(_20){ +return nil; +} +}),new objj_method(sel_getUid("description"),function(_23,_24){ +with(_23){ +return "<"+class_getName(isa)+" 0x"+objj_msgSend(CPString,"stringWithHash:",objj_msgSend(_23,"UID"))+">"; +} +}),new objj_method(sel_getUid("performSelector:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_25,_27); +} +}),new objj_method(sel_getUid("performSelector:withObject:"),function(_28,_29,_2a,_2b){ +with(_28){ +return objj_msgSend(_28,_2a,_2b); +} +}),new objj_method(sel_getUid("performSelector:withObject:withObject:"),function(_2c,_2d,_2e,_2f,_30){ +with(_2c){ +return objj_msgSend(_2c,_2e,_2f,_30); +} +}),new objj_method(sel_getUid("forwardInvocation:"),function(_31,_32,_33){ +with(_31){ +objj_msgSend(_31,"doesNotRecognizeSelector:",objj_msgSend(_33,"selector")); +} +}),new objj_method(sel_getUid("forward::"),function(_34,_35,_36,_37){ +with(_34){ +var _38=objj_msgSend(_34,"methodSignatureForSelector:",_36); +if(_38){ +invocation=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",_38); +objj_msgSend(invocation,"setTarget:",_34); +objj_msgSend(invocation,"setSelector:",_36); +var _39=2,_3a=_37.length; +for(;_39<_3a;++_39){ +objj_msgSend(invocation,"setArgument:atIndex:",_37[_39],_39); +} +objj_msgSend(_34,"forwardInvocation:",invocation); +return objj_msgSend(invocation,"returnValue"); +} +objj_msgSend(_34,"doesNotRecognizeSelector:",_36); +} +}),new objj_method(sel_getUid("doesNotRecognizeSelector:"),function(_3b,_3c,_3d){ +with(_3b){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,(class_isMetaClass(isa)?"+":"-")+" ["+objj_msgSend(_3b,"className")+" "+_3d+"] unrecognized selector sent to "+(class_isMetaClass(isa)?"class":"instance")+" 0x"+objj_msgSend(CPString,"stringWithHash:",objj_msgSend(_3b,"UID"))); +} +}),new objj_method(sel_getUid("awakeAfterUsingCoder:"),function(_3e,_3f,_40){ +with(_3e){ +return _3e; +} +}),new objj_method(sel_getUid("classForKeyedArchiver"),function(_41,_42){ +with(_41){ +return objj_msgSend(_41,"classForCoder"); +} +}),new objj_method(sel_getUid("classForCoder"),function(_43,_44){ +with(_43){ +return objj_msgSend(_43,"class"); +} +}),new objj_method(sel_getUid("replacementObjectForArchiver:"),function(_45,_46,_47){ +with(_45){ +return objj_msgSend(_45,"replacementObjectForCoder:",_47); +} +}),new objj_method(sel_getUid("replacementObjectForKeyedArchiver:"),function(_48,_49,_4a){ +with(_48){ +return objj_msgSend(_48,"replacementObjectForCoder:",_4a); +} +}),new objj_method(sel_getUid("replacementObjectForCoder:"),function(_4b,_4c,_4d){ +with(_4b){ +return _4b; +} +}),new objj_method(sel_getUid("className"),function(_4e,_4f){ +with(_4e){ +return isa.name; +} +}),new objj_method(sel_getUid("autorelease"),function(_50,_51){ +with(_50){ +return _50; +} +}),new objj_method(sel_getUid("hash"),function(_52,_53){ +with(_52){ +return objj_msgSend(_52,"UID"); +} +}),new objj_method(sel_getUid("UID"),function(_54,_55){ +with(_54){ +if(typeof _54._UID==="undefined"){ +_54._UID=objj_generateObjectUID(); +} +return _UID+""; +} +}),new objj_method(sel_getUid("isEqual:"),function(_56,_57,_58){ +with(_56){ +return _56===_58||objj_msgSend(_56,"UID")===objj_msgSend(_58,"UID"); +} +}),new objj_method(sel_getUid("retain"),function(_59,_5a){ +with(_59){ +return _59; +} +}),new objj_method(sel_getUid("release"),function(_5b,_5c){ +with(_5b){ +} +}),new objj_method(sel_getUid("self"),function(_5d,_5e){ +with(_5d){ +return _5d; +} +}),new objj_method(sel_getUid("superclass"),function(_5f,_60){ +with(_5f){ +return isa.super_class; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("load"),function(_61,_62){ +with(_61){ +} +}),new objj_method(sel_getUid("initialize"),function(_63,_64){ +with(_63){ +} +}),new objj_method(sel_getUid("new"),function(_65,_66){ +with(_65){ +return objj_msgSend(objj_msgSend(_65,"alloc"),"init"); +} +}),new objj_method(sel_getUid("alloc"),function(_67,_68){ +with(_67){ +return class_createInstance(_67); +} +}),new objj_method(sel_getUid("allocWithCoder:"),function(_69,_6a,_6b){ +with(_69){ +return objj_msgSend(_69,"alloc"); +} +}),new objj_method(sel_getUid("class"),function(_6c,_6d){ +with(_6c){ +return _6c; +} +}),new objj_method(sel_getUid("superclass"),function(_6e,_6f){ +with(_6e){ +return super_class; +} +}),new objj_method(sel_getUid("isSubclassOfClass:"),function(_70,_71,_72){ +with(_70){ +var _73=_70; +for(;_73;_73=_73.super_class){ +if(_73===_72){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("isKindOfClass:"),function(_74,_75,_76){ +with(_74){ +return objj_msgSend(_74,"isSubclassOfClass:",_76); +} +}),new objj_method(sel_getUid("isMemberOfClass:"),function(_77,_78,_79){ +with(_77){ +return _77===_79; +} +}),new objj_method(sel_getUid("instancesRespondToSelector:"),function(_7a,_7b,_7c){ +with(_7a){ +return !!class_getInstanceMethod(_7a,_7c); +} +}),new objj_method(sel_getUid("instanceMethodForSelector:"),function(_7d,_7e,_7f){ +with(_7d){ +return class_getMethodImplementation(_7d,_7f); +} +}),new objj_method(sel_getUid("description"),function(_80,_81){ +with(_80){ +return class_getName(isa); +} +}),new objj_method(sel_getUid("setVersion:"),function(_82,_83,_84){ +with(_82){ +version=_84; +return _82; +} +}),new objj_method(sel_getUid("version"),function(_85,_86){ +with(_85){ +return version; +} +})]); +objj_class.prototype.toString=objj_object.prototype.toString=function(){ +if(this.isa&&class_getInstanceMethod(this.isa,"description")!=NULL){ +return objj_msgSend(this,"description"); +}else{ +return String(this)+" (-description not implemented)"; +} +}; +p;15;CPObjJRuntime.jt;390;@STATIC;1.0;t;372; +CPStringFromSelector=function(_1){ +return sel_getName(_1); +}; +CPSelectorFromString=function(_2){ +return sel_registerName(_2); +}; +CPClassFromString=function(_3){ +return objj_getClass(_3); +}; +CPStringFromClass=function(_4){ +return class_getName(_4); +}; +CPOrderedAscending=-1; +CPOrderedSame=0; +CPOrderedDescending=1; +CPNotFound=-1; +MIN=Math.min; +MAX=Math.max; +ABS=Math.abs; +p;13;CPOperation.jt;4258;@STATIC;1.0;i;10;CPObject.jt;4224; +objj_executeFile("CPObject.j",YES); +CPOperationQueuePriorityVeryLow=-8; +CPOperationQueuePriorityLow=-4; +CPOperationQueuePriorityNormal=0; +CPOperationQueuePriorityHigh=4; +CPOperationQueuePriorityVeryHigh=8; +var _1=objj_allocateClassPair(CPObject,"CPOperation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("operations"),new objj_ivar("_cancelled"),new objj_ivar("_executing"),new objj_ivar("_finished"),new objj_ivar("_ready"),new objj_ivar("_queuePriority"),new objj_ivar("_completionFunction"),new objj_ivar("_dependencies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("main"),function(_3,_4){ +with(_3){ +} +}),new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPOperation").super_class},"init")){ +_cancelled=NO; +_executing=NO; +_finished=NO; +_ready=YES; +_dependencies=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"); +_queuePriority=CPOperationQueuePriorityNormal; +} +return _5; +} +}),new objj_method(sel_getUid("start"),function(_7,_8){ +with(_7){ +if(!_cancelled){ +objj_msgSend(_7,"willChangeValueForKey:","isExecuting"); +_executing=YES; +objj_msgSend(_7,"didChangeValueForKey:","isExecuting"); +objj_msgSend(_7,"main"); +if(_completionFunction){ +_completionFunction(); +} +objj_msgSend(_7,"willChangeValueForKey:","isExecuting"); +_executing=NO; +objj_msgSend(_7,"didChangeValueForKey:","isExecuting"); +objj_msgSend(_7,"willChangeValueForKey:","isFinished"); +_finished=YES; +objj_msgSend(_7,"didChangeValueForKey:","isFinished"); +} +} +}),new objj_method(sel_getUid("isCancelled"),function(_9,_a){ +with(_9){ +return _cancelled; +} +}),new objj_method(sel_getUid("isExecuting"),function(_b,_c){ +with(_b){ +return _executing; +} +}),new objj_method(sel_getUid("isFinished"),function(_d,_e){ +with(_d){ +return _finished; +} +}),new objj_method(sel_getUid("isConcurrent"),function(_f,_10){ +with(_f){ +return NO; +} +}),new objj_method(sel_getUid("isReady"),function(_11,_12){ +with(_11){ +return _ready; +} +}),new objj_method(sel_getUid("completionFunction"),function(_13,_14){ +with(_13){ +return _completionFunction; +} +}),new objj_method(sel_getUid("setCompletionFunction:"),function(_15,_16,_17){ +with(_15){ +_completionFunction=_17; +} +}),new objj_method(sel_getUid("addDependency:"),function(_18,_19,_1a){ +with(_18){ +objj_msgSend(_18,"willChangeValueForKey:","dependencies"); +objj_msgSend(_1a,"addObserver:forKeyPath:options:context:",_18,"isFinished",(CPKeyValueObservingOptionNew),NULL); +objj_msgSend(_dependencies,"addObject:",_1a); +objj_msgSend(_18,"didChangeValueForKey:","dependencies"); +objj_msgSend(_18,"_updateIsReadyState"); +} +}),new objj_method(sel_getUid("removeDependency:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"willChangeValueForKey:","dependencies"); +objj_msgSend(_dependencies,"removeObject:",_1d); +objj_msgSend(_1d,"removeObserver:forKeyPath:",_1b,"isFinished"); +objj_msgSend(_1b,"didChangeValueForKey:","dependencies"); +objj_msgSend(_1b,"_updateIsReadyState"); +} +}),new objj_method(sel_getUid("dependencies"),function(_1e,_1f){ +with(_1e){ +return _dependencies; +} +}),new objj_method(sel_getUid("waitUntilFinished"),function(_20,_21){ +with(_20){ +} +}),new objj_method(sel_getUid("cancel"),function(_22,_23){ +with(_22){ +objj_msgSend(_22,"willChangeValueForKey:","isCancelled"); +_cancelled=YES; +objj_msgSend(_22,"didChangeValueForKey:","isCancelled"); +} +}),new objj_method(sel_getUid("setQueuePriority:"),function(_24,_25,_26){ +with(_24){ +_queuePriority=_26; +} +}),new objj_method(sel_getUid("queuePriority"),function(_27,_28){ +with(_27){ +return _queuePriority; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_29,_2a,_2b,_2c,_2d,_2e){ +with(_29){ +if(_2b=="isFinished"){ +objj_msgSend(_29,"_updateIsReadyState"); +} +} +}),new objj_method(sel_getUid("_updateIsReadyState"),function(_2f,_30){ +with(_2f){ +var _31=YES; +if(_dependencies&&objj_msgSend(_dependencies,"count")>0){ +var i=0; +for(i=0;i0){ +var i=0,_d=objj_msgSend(_operations,"count"); +for(;i<_d;i++){ +var op=objj_msgSend(_operations,"objectAtIndex:",i); +if(objj_msgSend(op,"isReady")&&!objj_msgSend(op,"isCancelled")&&!objj_msgSend(op,"isFinished")&&!objj_msgSend(op,"isExecuting")){ +objj_msgSend(op,"start"); +} +} +} +} +}),new objj_method(sel_getUid("_enableTimer:"),function(_e,_f,_10){ +with(_e){ +if(!_10){ +if(_timer){ +objj_msgSend(_timer,"invalidate"); +_timer=nil; +} +}else{ +if(!_timer){ +_timer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0.01,_e,sel_getUid("_runNextOpsInQueue"),nil,YES); +} +} +} +}),new objj_method(sel_getUid("addOperation:"),function(_11,_12,_13){ +with(_11){ +objj_msgSend(_11,"willChangeValueForKey:","operations"); +objj_msgSend(_11,"willChangeValueForKey:","operationCount"); +objj_msgSend(_operations,"addObject:",_13); +objj_msgSend(_11,"_sortOpsByPriority:",_operations); +objj_msgSend(_11,"didChangeValueForKey:","operations"); +objj_msgSend(_11,"didChangeValueForKey:","operationCount"); +} +}),new objj_method(sel_getUid("addOperations:waitUntilFinished:"),function(_14,_15,ops,_16){ +with(_14){ +if(ops){ +if(_16){ +objj_msgSend(_14,"_sortOpsByPriority:",ops); +objj_msgSend(_14,"_runOpsSynchronously:",ops); +} +objj_msgSend(_operations,"addObjectsFromArray:",ops); +objj_msgSend(_14,"_sortOpsByPriority:",_operations); +} +} +}),new objj_method(sel_getUid("addOperationWithFunction:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"addOperation:",objj_msgSend(CPFunctionOperation,"functionOperationWithFunction:",_19)); +} +}),new objj_method(sel_getUid("operations"),function(_1a,_1b){ +with(_1a){ +return _operations; +} +}),new objj_method(sel_getUid("operationCount"),function(_1c,_1d){ +with(_1c){ +if(_operations){ +return objj_msgSend(_operations,"count"); +} +return 0; +} +}),new objj_method(sel_getUid("cancelAllOperations"),function(_1e,_1f){ +with(_1e){ +if(_operations){ +var i=0,_20=objj_msgSend(_operations,"count"); +for(;i<_20;i++){ +objj_msgSend(objj_msgSend(_operations,"objectAtIndex:",i),"cancel"); +} +} +} +}),new objj_method(sel_getUid("waitUntilAllOperationsAreFinished"),function(_21,_22){ +with(_21){ +objj_msgSend(_21,"_enableTimer:",NO); +objj_msgSend(_21,"_runOpsSynchronously:",_operations); +if(!_suspended){ +objj_msgSend(_21,"_enableTimer:",YES); +} +} +}),new objj_method(sel_getUid("maxConcurrentOperationCount"),function(_23,_24){ +with(_23){ +return 1; +} +}),new objj_method(sel_getUid("setSuspended:"),function(_25,_26,_27){ +with(_25){ +_suspended=_27; +objj_msgSend(_25,"_enableTimer:",!_27); +} +}),new objj_method(sel_getUid("isSuspended"),function(_28,_29){ +with(_28){ +return _suspended; +} +}),new objj_method(sel_getUid("_sortOpsByPriority:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_2c){ +objj_msgSend(_2c,"sortUsingFunction:context:",function(lhs,rhs){ +if(objj_msgSend(lhs,"queuePriority")objj_msgSend(rhs,"queuePriority")){ +return -1; +}else{ +return 0; +} +} +},nil); +} +} +}),new objj_method(sel_getUid("_runOpsSynchronously:"),function(_2d,_2e,ops){ +with(_2d){ +if(ops){ +var _2f=YES; +while(_2f){ +var i=0,_30=objj_msgSend(ops,"count"); +_2f=NO; +for(;i<_30;i++){ +var op=objj_msgSend(ops,"objectAtIndex:",i); +if(objj_msgSend(op,"isReady")&&!objj_msgSend(op,"isCancelled")&&!objj_msgSend(op,"isFinished")&&!objj_msgSend(op,"isExecuting")){ +objj_msgSend(op,"start"); +} +} +for(i=0;i<_30;i++){ +var op=objj_msgSend(ops,"objectAtIndex:",i); +if(!objj_msgSend(op,"isFinished")&&!objj_msgSend(op,"isCancelled")){ +_2f=YES; +} +} +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("mainQueue"),function(_31,_32){ +with(_31){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(CPOperationQueue,"alloc"),"init"); +objj_msgSend(_1,"setName:","main"); +} +return _1; +} +}),new objj_method(sel_getUid("currentQueue"),function(_33,_34){ +with(_33){ +return objj_msgSend(CPOperationQueue,"mainQueue"); +} +})]); +p;29;CPPropertyListSerialization.jt;1497;@STATIC;1.0;i;10;CPObject.jt;1463; +objj_executeFile("CPObject.j",YES); +CPPropertyListUnknownFormat=0; +CPPropertyListOpenStepFormat=kCFPropertyListOpenStepFormat; +CPPropertyListXMLFormat_v1_0=kCFPropertyListXMLFormat_v1_0; +CPPropertyListBinaryFormat_v1_0=kCFPropertyListBinaryFormat_v1_0; +CPPropertyList280NorthFormat_v1_0=kCFPropertyList280NorthFormat_v1_0; +var _1=objj_allocateClassPair(CPObject,"CPPropertyListSerialization"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_2,[new objj_method(sel_getUid("dataFromPropertyList:format:"),function(_3,_4,_5,_6){ +with(_3){ +return CPPropertyListCreateData(_5,_6); +} +}),new objj_method(sel_getUid("propertyListFromData:format:"),function(_7,_8,_9,_a){ +with(_7){ +return CPPropertyListCreateFromData(_9,_a); +} +})]); +var _1=objj_getClass("CPPropertyListSerialization"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPPropertyListSerialization\""); +} +var _2=_1.isa; +class_addMethods(_2,[new objj_method(sel_getUid("dataFromPropertyList:format:errorDescription:"),function(_b,_c,_d,_e,_f){ +with(_b){ +_CPReportLenientDeprecation(_b,_c,sel_getUid("dataFromPropertyList:format:")); +return objj_msgSend(_b,"dataFromPropertyList:format:",_d,_e); +} +}),new objj_method(sel_getUid("propertyListFromData:format:errorDescription:"),function(_10,_11,_12,_13,_14){ +with(_10){ +_CPReportLenientDeprecation(_10,_11,sel_getUid("propertyListFromData:format:")); +return objj_msgSend(_10,"propertyListFromData:format:",_12,_13); +} +})]); +p;9;CPProxy.jt;3567;@STATIC;1.0;i;13;CPException.ji;14;CPInvocation.ji;10;CPString.jt;3496; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPString.j",YES); +var _1=objj_allocateClassPair(Nil,"CPProxy"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("methodSignatureForSelector:"),function(_3,_4,_5){ +with(_3){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-methodSignatureForSelector: called on abstract CPProxy class."); +} +}),new objj_method(sel_getUid("forwardInvocation:"),function(_6,_7,_8){ +with(_6){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-forwardInvocation: called on abstract CPProxy class."); +} +}),new objj_method(sel_getUid("forward::"),function(_9,_a,_b,_c){ +with(_9){ +return objj_msgSend(CPObject,"methodForSelector:",_a)(_9,_a,_b,_c); +} +}),new objj_method(sel_getUid("hash"),function(_d,_e){ +with(_d){ +return objj_msgSend(_d,"UID"); +} +}),new objj_method(sel_getUid("UID"),function(_f,_10){ +with(_f){ +if(typeof _f._UID==="undefined"){ +_f._UID=objj_generateObjectUID(); +} +return _UID; +} +}),new objj_method(sel_getUid("isEqual:"),function(_11,_12,_13){ +with(_11){ +return _11===object; +} +}),new objj_method(sel_getUid("self"),function(_14,_15){ +with(_14){ +return _14; +} +}),new objj_method(sel_getUid("class"),function(_16,_17){ +with(_16){ +return isa; +} +}),new objj_method(sel_getUid("superclass"),function(_18,_19){ +with(_18){ +return class_getSuperclass(isa); +} +}),new objj_method(sel_getUid("performSelector:"),function(_1a,_1b,_1c){ +with(_1a){ +return objj_msgSend(_1a,_1c); +} +}),new objj_method(sel_getUid("performSelector:withObject:"),function(_1d,_1e,_1f,_20){ +with(_1d){ +return objj_msgSend(_1d,_1f,_20); +} +}),new objj_method(sel_getUid("performSelector:withObject:withObject:"),function(_21,_22,_23,_24,_25){ +with(_21){ +return objj_msgSend(_21,_23,_24,_25); +} +}),new objj_method(sel_getUid("isProxy"),function(_26,_27){ +with(_26){ +return YES; +} +}),new objj_method(sel_getUid("isKindOfClass:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(_28,"methodSignatureForSelector:",_29),_2c=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",_2b); +objj_msgSend(_28,"forwardInvocation:",_2c); +return objj_msgSend(_2c,"returnValue"); +} +}),new objj_method(sel_getUid("isMemberOfClass:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_2d,"methodSignatureForSelector:",_2e),_31=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",_30); +objj_msgSend(_2d,"forwardInvocation:",_31); +return objj_msgSend(_31,"returnValue"); +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"methodSignatureForSelector:",_33),_36=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",_35); +objj_msgSend(_32,"forwardInvocation:",_36); +return objj_msgSend(_36,"returnValue"); +} +}),new objj_method(sel_getUid("description"),function(_37,_38){ +with(_37){ +return "<"+class_getName(isa)+" 0x"+objj_msgSend(CPString,"stringWithHash:",objj_msgSend(_37,"UID"))+">"; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("load"),function(_39,_3a){ +with(_39){ +} +}),new objj_method(sel_getUid("initialize"),function(_3b,_3c){ +with(_3b){ +} +}),new objj_method(sel_getUid("class"),function(_3d,_3e){ +with(_3d){ +return _3d; +} +}),new objj_method(sel_getUid("alloc"),function(_3f,_40){ +with(_3f){ +return class_createInstance(_3f); +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(_41,_42,_43){ +with(_41){ +return !!class_getInstanceMethod(isa,aSelector); +} +})]); +p;9;CPRange.jt;1244;@STATIC;1.0;t;1225; +CPMakeRange=function(_1,_2){ +return {location:_1,length:_2}; +}; +CPCopyRange=function(_3){ +return {location:_3.location,length:_3.length}; +}; +CPMakeRangeCopy=function(_4){ +return {location:_4.location,length:_4.length}; +}; +CPEmptyRange=function(_5){ +return _5.length===0; +}; +CPMaxRange=function(_6){ +return _6.location+_6.length; +}; +CPEqualRanges=function(_7,_8){ +return ((_7.location===_8.location)&&(_7.length===_8.length)); +}; +CPLocationInRange=function(_9,_a){ +return (_9>=_a.location)&&(_9=CPMaxRange(_12)); +}; +CPStringFromRange=function(_13){ +return "{"+_13.location+", "+_13.length+"}"; +}; +CPRangeFromString=function(_14){ +var _15=_14.indexOf(","); +return {location:parseInt(_14.substr(1,_15-1)),length:parseInt(_14.substring(_15+1,_14.length))}; +}; +p;11;CPRunLoop.jt;6935;@STATIC;1.0;i;9;CPArray.ji;10;CPObject.ji;10;CPString.jt;6873; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +CPDefaultRunLoopMode="CPDefaultRunLoopMode"; +_CPRunLoopPerformCompare=function(_1,_2){ +return objj_msgSend(_2,"order")-objj_msgSend(_1,"order"); +}; +var _3=[],_4=5; +var _5=objj_allocateClassPair(CPObject,"_CPRunLoopPerform"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_target"),new objj_ivar("_selector"),new objj_ivar("_argument"),new objj_ivar("_order"),new objj_ivar("_runLoopModes"),new objj_ivar("_isValid")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithSelector:target:argument:order:modes:"),function(_7,_8,_9,_a,_b,_c,_d){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPRunLoopPerform").super_class},"init"); +if(_7){ +_selector=_9; +_target=_a; +_argument=_b; +_order=_c; +_runLoopModes=_d; +_isValid=YES; +} +return _7; +} +}),new objj_method(sel_getUid("selector"),function(_e,_f){ +with(_e){ +return _selector; +} +}),new objj_method(sel_getUid("target"),function(_10,_11){ +with(_10){ +return _target; +} +}),new objj_method(sel_getUid("argument"),function(_12,_13){ +with(_12){ +return _argument; +} +}),new objj_method(sel_getUid("order"),function(_14,_15){ +with(_14){ +return _order; +} +}),new objj_method(sel_getUid("fireInMode:"),function(_16,_17,_18){ +with(_16){ +if(!_isValid){ +return YES; +} +if(objj_msgSend(_runLoopModes,"containsObject:",_18)){ +objj_msgSend(_target,"performSelector:withObject:",_selector,_argument); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("invalidate"),function(_19,_1a){ +with(_19){ +_isValid=NO; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("_poolPerform:"),function(_1b,_1c,_1d){ +with(_1b){ +if(!_1d||_3.length>=_4){ +return; +} +_3.push(_1d); +} +}),new objj_method(sel_getUid("performWithSelector:target:argument:order:modes:"),function(_1e,_1f,_20,_21,_22,_23,_24){ +with(_1e){ +if(_3.length){ +var _25=_3.pop(); +_25._target=_21; +_25._selector=_20; +_25._argument=_22; +_25._order=_23; +_25._runLoopModes=_24; +_25._isValid=YES; +return _25; +} +return objj_msgSend(objj_msgSend(_1e,"alloc"),"initWithSelector:target:argument:order:modes:",_20,_21,_22,_23,_24); +} +})]); +var _26=0; +var _5=objj_allocateClassPair(CPObject,"CPRunLoop"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_runLoopLock"),new objj_ivar("_timersForModes"),new objj_ivar("_nativeTimersForModes"),new objj_ivar("_nextTimerFireDatesForModes"),new objj_ivar("_didAddTimer"),new objj_ivar("_effectiveDate"),new objj_ivar("_orderedPerforms"),new objj_ivar("_runLoopInsuranceTimer")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("init"),function(_27,_28){ +with(_27){ +_27=objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPRunLoop").super_class},"init"); +if(_27){ +_orderedPerforms=[]; +_timersForModes={}; +_nativeTimersForModes={}; +_nextTimerFireDatesForModes={}; +} +return _27; +} +}),new objj_method(sel_getUid("performSelector:target:argument:order:modes:"),function(_29,_2a,_2b,_2c,_2d,_2e,_2f){ +with(_29){ +var _30=objj_msgSend(_CPRunLoopPerform,"performWithSelector:target:argument:order:modes:",_2b,_2c,_2d,_2e,_2f),_31=_orderedPerforms.length; +while(_31--){ +if(_2e_string.length){ +_1f=_string.length; +}else{ +if(_1f<0){ +_1f=0; +} +} +_scanLocation=_1f; +} +}),new objj_method(sel_getUid("_performScanWithSelector:withObject:into:"),function(_20,_21,s,arg,ref){ +with(_20){ +var ret=objj_msgSend(_20,"performSelector:withObject:",s,arg); +if(ref!=nil){ +ref(ret); +} +return ret!=NULL; +} +}),new objj_method(sel_getUid("scanCharactersFromSet:intoString:"),function(_22,_23,_24,ref){ +with(_22){ +return objj_msgSend(_22,"_performScanWithSelector:withObject:into:",sel_getUid("scanCharactersFromSet:"),_24,ref); +} +}),new objj_method(sel_getUid("scanCharactersFromSet:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_25,"_scanWithSet:breakFlag:",_27,NO); +} +}),new objj_method(sel_getUid("scanUpToCharactersFromSet:intoString:"),function(_28,_29,_2a,ref){ +with(_28){ +return objj_msgSend(_28,"_performScanWithSelector:withObject:into:",sel_getUid("scanUpToCharactersFromSet:"),_2a,ref); +} +}),new objj_method(sel_getUid("scanUpToCharactersFromSet:"),function(_2b,_2c,_2d){ +with(_2b){ +return objj_msgSend(_2b,"_scanWithSet:breakFlag:",_2d,YES); +} +}),new objj_method(sel_getUid("_scanWithSet:breakFlag:"),function(_2e,_2f,_30,_31){ +with(_2e){ +if(objj_msgSend(_2e,"isAtEnd")){ +return nil; +} +var _32=objj_msgSend(_2e,"scanLocation"); +var str=nil; +while(_32<_string.length){ +var c=(_string.charAt(_32)); +if(objj_msgSend(_30,"characterIsMember:",c)==_31){ +break; +} +if(!objj_msgSend(_charactersToBeSkipped,"characterIsMember:",c)){ +if(!str){ +str=""; +} +str+=c; +} +_32++; +} +if(str){ +objj_msgSend(_2e,"setScanLocation:",_32); +} +return str; +} +}),new objj_method(sel_getUid("_movePastCharactersToBeSkipped"),function(_33,_34){ +with(_33){ +var _35=objj_msgSend(_33,"scanLocation"); +var _36=objj_msgSend(_33,"string"); +var _37=objj_msgSend(_33,"charactersToBeSkipped"); +while(_35<_36.length){ +if(!objj_msgSend(_37,"characterIsMember:",_36.charAt(_35))){ +break; +} +_35++; +} +objj_msgSend(_33,"setScanLocation:",_35); +} +}),new objj_method(sel_getUid("scanString:intoString:"),function(_38,_39,_3a,ref){ +with(_38){ +return objj_msgSend(_38,"_performScanWithSelector:withObject:into:",sel_getUid("scanString:"),_3a,ref); +} +}),new objj_method(sel_getUid("scanString:"),function(_3b,_3c,s){ +with(_3b){ +objj_msgSend(_3b,"_movePastCharactersToBeSkipped"); +if(objj_msgSend(_3b,"isAtEnd")){ +return nil; +} +var _3d=objj_msgSend(_3b,"string").substr(objj_msgSend(_3b,"scanLocation"),s.length); +if((_caseSensitive&&_3d!=s)||(!_caseSensitive&&(_3d.toLowerCase()!=s.toLowerCase()))){ +return nil; +}else{ +objj_msgSend(_3b,"setScanLocation:",objj_msgSend(_3b,"scanLocation")+s.length); +return s; +} +} +}),new objj_method(sel_getUid("scanUpToString:intoString:"),function(_3e,_3f,_40,ref){ +with(_3e){ +return objj_msgSend(_3e,"_performScanWithSelector:withObject:into:",sel_getUid("scanUpToString:"),_40,ref); +} +}),new objj_method(sel_getUid("scanUpToString:"),function(_41,_42,s){ +with(_41){ +var _43=objj_msgSend(_41,"scanLocation"),str=objj_msgSend(_41,"string"); +var _44=nil; +while(_4357||(_4b==45&&pos!=_48)){ +break; +} +} +} +objj_msgSend(_46,"setScanLocation:",pos); +return f; +} +return nil; +} +}),new objj_method(sel_getUid("scanInt"),function(_4c,_4d){ +with(_4c){ +objj_msgSend(_4c,"_movePastCharactersToBeSkipped"); +var str=objj_msgSend(_4c,"string"),_4e=objj_msgSend(_4c,"scanLocation"); +if(objj_msgSend(_4c,"isAtEnd")){ +return 0; +} +var s=str.substring(_4e,str.length); +var i=parseInt(s); +if(i){ +var pos,_4f=NO; +for(pos=_4e;pos<_4e+str.length;pos++){ +var _50=str.charCodeAt(pos); +if(_50==46){ +if(_4f==YES){ +break; +} +_4f=YES; +}else{ +if(_50<48||_50>57||(_50==45&&pos!=_4e)){ +break; +} +} +} +objj_msgSend(_4c,"setScanLocation:",pos); +return i; +} +return nil; +} +}),new objj_method(sel_getUid("scanInt:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_51,"_performScanWithSelector:withObject:into:",sel_getUid("scanInt"),nil,_53); +} +}),new objj_method(sel_getUid("scanFloat:"),function(_54,_55,_56){ +with(_54){ +return objj_msgSend(_54,"_performScanWithSelector:withObject:into:",sel_getUid("scanFloat"),nil,_56); +} +}),new objj_method(sel_getUid("scanDouble:"),function(_57,_58,_59){ +with(_57){ +return objj_msgSend(_57,"scanFloat:",_59); +} +}),new objj_method(sel_getUid("description"),function(_5a,_5b){ +with(_5a){ +return objj_msgSendSuper({receiver:_5a,super_class:objj_getClass("CPScanner").super_class},"description")+" {"+CPStringFromClass(objj_msgSend(_5a,"class"))+", state = '"+(objj_msgSend(_5a,"string").substr(0,_scanLocation)+"{{ SCAN LOCATION ->}}"+objj_msgSend(_5a,"string").substr(_scanLocation))+"'; }"; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("scannerWithString:"),function(_5c,_5d,_5e){ +with(_5c){ +return objj_msgSend(objj_msgSend(_5c,"alloc"),"initWithString:",_5e); +} +})]); +p;7;CPSet.jt;8014;@STATIC;1.0;i;9;CPArray.ji;14;CPEnumerator.ji;10;CPNumber.ji;10;CPObject.jt;7933; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPNumber.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPSet"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contents"),new objj_ivar("_count")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSet").super_class},"init")){ +_count=0; +_contents={}; +} +return _3; +} +}),new objj_method(sel_getUid("initWithArray:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSend(_5,"init")){ +var _8=_7.length; +while(_8--){ +objj_msgSend(_5,"addObject:",_7[_8]); +} +} +return _5; +} +}),new objj_method(sel_getUid("initWithObjects:count:"),function(_9,_a,_b,_c){ +with(_9){ +return objj_msgSend(_9,"initWithArray:",_b.splice(0,_c)); +} +}),new objj_method(sel_getUid("initWithObjects:"),function(_d,_e,_f){ +with(_d){ +if(_d=objj_msgSend(_d,"init")){ +var _10=arguments.length,i=2; +for(;i<_10&&(argument=arguments[i])!=nil;++i){ +objj_msgSend(_d,"addObject:",argument); +} +} +return _d; +} +}),new objj_method(sel_getUid("initWithSet:"),function(_11,_12,_13){ +with(_11){ +return objj_msgSend(_11,"initWithSet:copyItems:",_13,NO); +} +}),new objj_method(sel_getUid("initWithSet:copyItems:"),function(_14,_15,_16,_17){ +with(_14){ +_14=objj_msgSend(_14,"init"); +if(!_16){ +return _14; +} +var _18=_16._contents,_19; +for(_19 in _18){ +if(_18.hasOwnProperty(_19)){ +if(_17){ +objj_msgSend(_14,"addObject:",objj_msgSend(_18[_19],"copy")); +}else{ +objj_msgSend(_14,"addObject:",_18[_19]); +} +} +} +return _14; +} +}),new objj_method(sel_getUid("allObjects"),function(_1a,_1b){ +with(_1a){ +var _1c=[],_1d; +for(_1d in _contents){ +if(_contents.hasOwnProperty(_1d)){ +_1c.push(_contents[_1d]); +} +} +return _1c; +} +}),new objj_method(sel_getUid("anyObject"),function(_1e,_1f){ +with(_1e){ +var _20; +for(_20 in _contents){ +if(_contents.hasOwnProperty(_20)){ +return _contents[_20]; +} +} +return nil; +} +}),new objj_method(sel_getUid("containsObject:"),function(_21,_22,_23){ +with(_21){ +var obj=_contents[objj_msgSend(_23,"UID")]; +if(obj!==undefined&&objj_msgSend(obj,"isEqual:",_23)){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("count"),function(_24,_25){ +with(_24){ +return _count; +} +}),new objj_method(sel_getUid("intersectsSet:"),function(_26,_27,_28){ +with(_26){ +if(_26===_28){ +return YES; +} +var _29=objj_msgSend(_28,"allObjects"),_2a=objj_msgSend(_29,"count"); +while(_2a--){ +if(objj_msgSend(_26,"containsObject:",_29[_2a])){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("isEqualToSet:"),function(_2b,_2c,set){ +with(_2b){ +return _2b===set||(objj_msgSend(_2b,"count")===objj_msgSend(set,"count")&&objj_msgSend(set,"isSubsetOfSet:",_2b)); +} +}),new objj_method(sel_getUid("isSubsetOfSet:"),function(_2d,_2e,set){ +with(_2d){ +var _2f=objj_msgSend(_2d,"allObjects"),i=0,_30=_2f.length; +for(;i<_30;i++){ +if(!objj_msgSend(set,"containsObject:",_2f[i])){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:"),function(_31,_32,_33){ +with(_31){ +objj_msgSend(_31,"makeObjectsPerformSelector:withObject:",_33,nil); +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:withObject:"),function(_34,_35,_36,_37){ +with(_34){ +var _38=objj_msgSend(_34,"allObjects"),i=0,_39=_38.length; +for(;i<_39;i++){ +objj_msgSend(_38[i],"performSelector:withObject:",_36,_37); +} +} +}),new objj_method(sel_getUid("member:"),function(_3a,_3b,_3c){ +with(_3a){ +if(objj_msgSend(_3a,"containsObject:",_3c)){ +return _3c; +} +return nil; +} +}),new objj_method(sel_getUid("objectEnumerator"),function(_3d,_3e){ +with(_3d){ +return objj_msgSend(objj_msgSend(_3d,"allObjects"),"objectEnumerator"); +} +}),new objj_method(sel_getUid("initWithCapacity:"),function(_3f,_40,_41){ +with(_3f){ +_3f=objj_msgSend(_3f,"init"); +return _3f; +} +}),new objj_method(sel_getUid("setSet:"),function(_42,_43,set){ +with(_42){ +objj_msgSend(_42,"removeAllObjects"); +objj_msgSend(_42,"addObjectsFromArray:",objj_msgSend(set,"allObjects")); +} +}),new objj_method(sel_getUid("addObject:"),function(_44,_45,_46){ +with(_44){ +if(objj_msgSend(_44,"containsObject:",_46)){ +return; +} +_contents[objj_msgSend(_46,"UID")]=_46; +_count++; +} +}),new objj_method(sel_getUid("addObjectsFromArray:"),function(_47,_48,_49){ +with(_47){ +var _4a=objj_msgSend(_49,"count"); +while(_4a--){ +objj_msgSend(_47,"addObject:",_49[_4a]); +} +} +}),new objj_method(sel_getUid("removeObject:"),function(_4b,_4c,_4d){ +with(_4b){ +if(objj_msgSend(_4b,"containsObject:",_4d)){ +delete _contents[objj_msgSend(_4d,"UID")]; +_count--; +} +} +}),new objj_method(sel_getUid("removeObjectsInArray:"),function(_4e,_4f,_50){ +with(_4e){ +var _51=objj_msgSend(_50,"count"); +while(_51--){ +objj_msgSend(_4e,"removeObject:",_50[_51]); +} +} +}),new objj_method(sel_getUid("removeAllObjects"),function(_52,_53){ +with(_52){ +_contents={}; +_count=0; +} +}),new objj_method(sel_getUid("intersectSet:"),function(_54,_55,set){ +with(_54){ +var _56=objj_msgSend(_54,"allObjects"),i=0,_57=_56.length; +for(;i<_57;i++){ +if(!objj_msgSend(set,"containsObject:",_56[i])){ +objj_msgSend(_54,"removeObject:",_56[i]); +} +} +} +}),new objj_method(sel_getUid("minusSet:"),function(_58,_59,set){ +with(_58){ +var _5a=objj_msgSend(set,"allObjects"),i=0,_5b=_5a.length; +for(;i<_5b;i++){ +if(objj_msgSend(_58,"containsObject:",_5a[i])){ +objj_msgSend(_58,"removeObject:",_5a[i]); +} +} +} +}),new objj_method(sel_getUid("unionSet:"),function(_5c,_5d,set){ +with(_5c){ +var _5e=objj_msgSend(set,"allObjects"),i=0,_5f=_5e.length; +for(;i<_5f;i++){ +objj_msgSend(_5c,"addObject:",_5e[i]); +} +} +}),new objj_method(sel_getUid("description"),function(_60,_61){ +with(_60){ +return "{("+objj_msgSend(_60,"allObjects").join(", ")+")}"; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("set"),function(_62,_63){ +with(_62){ +return objj_msgSend(objj_msgSend(_62,"alloc"),"init"); +} +}),new objj_method(sel_getUid("setWithArray:"),function(_64,_65,_66){ +with(_64){ +return objj_msgSend(objj_msgSend(_64,"alloc"),"initWithArray:",_66); +} +}),new objj_method(sel_getUid("setWithObject:"),function(_67,_68,_69){ +with(_67){ +return objj_msgSend(objj_msgSend(_67,"alloc"),"initWithArray:",[_69]); +} +}),new objj_method(sel_getUid("setWithObjects:count:"),function(_6a,_6b,_6c,_6d){ +with(_6a){ +return objj_msgSend(objj_msgSend(_6a,"alloc"),"initWithObjects:count:",_6c,_6d); +} +}),new objj_method(sel_getUid("setWithObjects:"),function(_6e,_6f,_70){ +with(_6e){ +var set=objj_msgSend(objj_msgSend(_6e,"alloc"),"init"),_71=arguments.length,i=2; +for(;i<_71&&((argument=arguments[i])!==nil);++i){ +objj_msgSend(set,"addObject:",argument); +} +return set; +} +}),new objj_method(sel_getUid("setWithSet:"),function(_72,_73,set){ +with(_72){ +return objj_msgSend(objj_msgSend(_72,"alloc"),"initWithSet:",set); +} +}),new objj_method(sel_getUid("setWithCapacity:"),function(_74,_75,_76){ +with(_74){ +return objj_msgSend(objj_msgSend(_74,"alloc"),"initWithCapacity:",_76); +} +})]); +var _1=objj_getClass("CPSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_77,_78){ +with(_77){ +return objj_msgSend(objj_msgSend(CPSet,"alloc"),"initWithSet:",_77); +} +}),new objj_method(sel_getUid("mutableCopy"),function(_79,_7a){ +with(_79){ +return objj_msgSend(_79,"copy"); +} +})]); +var _7b="CPSetObjectsKey"; +var _1=objj_getClass("CPSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_7c,_7d,_7e){ +with(_7c){ +return objj_msgSend(_7c,"initWithArray:",objj_msgSend(_7e,"decodeObjectForKey:",_7b)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSend(_81,"encodeObject:forKey:",objj_msgSend(_7f,"allObjects"),_7b); +} +})]); +var _1=objj_allocateClassPair(CPSet,"CPMutableSet"),_2=_1.isa; +objj_registerClassPair(_1); +p;18;CPSortDescriptor.jt;2966;@STATIC;1.0;i;10;CPObject.ji;15;CPObjJRuntime.jt;2912; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPObjJRuntime.j",YES); +CPOrderedAscending=-1; +CPOrderedSame=0; +CPOrderedDescending=1; +var _1=objj_allocateClassPair(CPObject,"CPSortDescriptor"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_key"),new objj_ivar("_selector"),new objj_ivar("_ascending")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKey:ascending:"),function(_3,_4,_5,_6){ +with(_3){ +return objj_msgSend(_3,"initWithKey:ascending:selector:",_5,_6,sel_getUid("compare:")); +} +}),new objj_method(sel_getUid("initWithKey:ascending:selector:"),function(_7,_8,_9,_a,_b){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPSortDescriptor").super_class},"init"); +if(_7){ +_key=_9; +_ascending=_a; +_selector=_b; +} +return _7; +} +}),new objj_method(sel_getUid("ascending"),function(_c,_d){ +with(_c){ +return _ascending; +} +}),new objj_method(sel_getUid("key"),function(_e,_f){ +with(_e){ +return _key; +} +}),new objj_method(sel_getUid("selector"),function(_10,_11){ +with(_10){ +return _selector; +} +}),new objj_method(sel_getUid("compareObject:withObject:"),function(_12,_13,_14,_15){ +with(_12){ +return (_ascending?1:-1)*objj_msgSend(objj_msgSend(_14,"valueForKeyPath:",_key),"performSelector:withObject:",_selector,objj_msgSend(_15,"valueForKeyPath:",_key)); +} +}),new objj_method(sel_getUid("reversedSortDescriptor"),function(_16,_17){ +with(_16){ +return objj_msgSend(objj_msgSend(objj_msgSend(_16,"class"),"alloc"),"initWithKey:ascending:selector:",_key,!_ascending,_selector); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("sortDescriptorWithKey:ascending:"),function(_18,_19,_1a,_1b){ +with(_18){ +return objj_msgSend(objj_msgSend(_18,"alloc"),"initWithKey:ascending:",_1a,_1b); +} +}),new objj_method(sel_getUid("sortDescriptorWithKey:ascending:selector:"),function(_1c,_1d,_1e,_1f,_20){ +with(_1c){ +return objj_msgSend(objj_msgSend(_1c,"alloc"),"initWithKey:ascending:selector:",_1e,_1f,_20); +} +})]); +var _21="CPSortDescriptorKeyKey",_22="CPSortDescriptorAscendingKey",_23="CPSortDescriptorSelectorKey"; +var _1=objj_getClass("CPSortDescriptor"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSortDescriptor\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_24,_25,_26){ +with(_24){ +if(_24=objj_msgSendSuper({receiver:_24,super_class:objj_getClass("CPSortDescriptor").super_class},"init")){ +_key=objj_msgSend(_26,"decodeObjectForKey:",_21); +_ascending=objj_msgSend(_26,"decodeBoolForKey:",_22); +_selector=CPSelectorFromString(objj_msgSend(_26,"decodeObjectForKey:",_23)); +} +return _24; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_27,_28,_29){ +with(_27){ +objj_msgSend(_29,"encodeObject:forKey:",_key,_21); +objj_msgSend(_29,"encodeBool:forKey:",_ascending,_22); +objj_msgSend(_29,"encodeObject:forKey:",CPStringFromSelector(_selector),_23); +} +})]); +p;10;CPString.jt;11356;@STATIC;1.0;i;13;CPException.ji;10;CPObject.ji;18;CPSortDescriptor.ji;9;CPValue.jt;11267; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPSortDescriptor.j",YES); +objj_executeFile("CPValue.j",YES); +CPCaseInsensitiveSearch=1; +CPLiteralSearch=2; +CPBackwardsSearch=4; +CPAnchoredSearch=8; +CPNumericSearch=64; +CPDiacriticInsensitiveSearch=128; +var _1=new CFMutableDictionary(); +var _2=["/",".","*","+","?","|","$","^","(",")","[","]","{","}","\\"],_3=new RegExp("(\\"+_2.join("|\\")+")","g"),_4=new RegExp("(^\\s+|\\s+$)","g"); +var _5=objj_allocateClassPair(CPObject,"CPString"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithString:"),function(_7,_8,_9){ +with(_7){ +return String(_9); +} +}),new objj_method(sel_getUid("initWithFormat:"),function(_a,_b,_c){ +with(_a){ +if(!_c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"initWithFormat: the format can't be 'nil'"); +} +_a=ObjectiveJ.sprintf.apply(this,Array.prototype.slice.call(arguments,2)); +return _a; +} +}),new objj_method(sel_getUid("description"),function(_d,_e){ +with(_d){ +return _d; +} +}),new objj_method(sel_getUid("length"),function(_f,_10){ +with(_f){ +return length; +} +}),new objj_method(sel_getUid("characterAtIndex:"),function(_11,_12,_13){ +with(_11){ +return charAt(_13); +} +}),new objj_method(sel_getUid("stringByAppendingFormat:"),function(_14,_15,_16){ +with(_14){ +if(!_16){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"initWithFormat: the format can't be 'nil'"); +} +return _14+ObjectiveJ.sprintf.apply(this,Array.prototype.slice.call(arguments,2)); +} +}),new objj_method(sel_getUid("stringByAppendingString:"),function(_17,_18,_19){ +with(_17){ +return _17+_19; +} +}),new objj_method(sel_getUid("stringByPaddingToLength:withString:startingAtIndex:"),function(_1a,_1b,_1c,_1d,_1e){ +with(_1a){ +if(length==_1c){ +return _1a; +} +if(_1c=0){ +_1f+=_20; +} +if(-_21<_20.length){ +_1f+=_20.substring(0,-_21); +} +return _1f; +} +}),new objj_method(sel_getUid("componentsSeparatedByString:"),function(_22,_23,_24){ +with(_22){ +return split(_24); +} +}),new objj_method(sel_getUid("substringFromIndex:"),function(_25,_26,_27){ +with(_25){ +return substr(_27); +} +}),new objj_method(sel_getUid("substringWithRange:"),function(_28,_29,_2a){ +with(_28){ +return substr(_2a.location,_2a.length); +} +}),new objj_method(sel_getUid("substringToIndex:"),function(_2b,_2c,_2d){ +with(_2b){ +return substring(0,_2d); +} +}),new objj_method(sel_getUid("rangeOfString:"),function(_2e,_2f,_30){ +with(_2e){ +return objj_msgSend(_2e,"rangeOfString:options:",_30,0); +} +}),new objj_method(sel_getUid("rangeOfString:options:"),function(_31,_32,_33,_34){ +with(_31){ +return objj_msgSend(_31,"rangeOfString:options:range:",_33,_34,nil); +} +}),new objj_method(sel_getUid("rangeOfString:options:range:"),function(_35,_36,_37,_38,_39){ +with(_35){ +var _3a=(_39==nil)?_35:objj_msgSend(_35,"substringWithRange:",_39),_3b=CPNotFound; +if(_38&CPCaseInsensitiveSearch){ +_3a=_3a.toLowerCase(); +_37=_37.toLowerCase(); +} +if(_38&CPBackwardsSearch){ +_3b=_3a.lastIndexOf(_37,_38&CPAnchoredSearch?length-_37.length:0); +}else{ +if(_38&CPAnchoredSearch){ +_3b=_3a.substr(0,_37.length).indexOf(_37)!=CPNotFound?0:CPNotFound; +}else{ +_3b=_3a.indexOf(_37); +} +} +return CPMakeRange(_3b,_3b==CPNotFound?0:_37.length); +} +}),new objj_method(sel_getUid("stringByEscapingRegexControlCharacters"),function(_3c,_3d){ +with(_3c){ +return _3c.replace(_3,"\\$1"); +} +}),new objj_method(sel_getUid("stringByReplacingOccurrencesOfString:withString:"),function(_3e,_3f,_40,_41){ +with(_3e){ +return _3e.replace(new RegExp(objj_msgSend(_40,"stringByEscapingRegexControlCharacters"),"g"),_41); +} +}),new objj_method(sel_getUid("stringByReplacingOccurrencesOfString:withString:options:range:"),function(_42,_43,_44,_45,_46,_47){ +with(_42){ +var _48=substring(0,_47.location),_49=substr(_47.location,_47.length),end=substring(_47.location+_47.length,_42.length),_44=objj_msgSend(_44,"stringByEscapingRegexControlCharacters"),_4a; +if(_46&CPCaseInsensitiveSearch){ +_4a=new RegExp(_44,"gi"); +}else{ +_4a=new RegExp(_44,"g"); +} +return _48+""+_49.replace(_4a,_45)+""+end; +} +}),new objj_method(sel_getUid("stringByReplacingCharactersInRange:withString:"),function(_4b,_4c,_4d,_4e){ +with(_4b){ +return ""+substring(0,_4d.location)+_4e+substring(_4d.location+_4d.length,_4b.length); +} +}),new objj_method(sel_getUid("stringByTrimmingWhitespace"),function(_4f,_50){ +with(_4f){ +return _4f.replace(_4,""); +} +}),new objj_method(sel_getUid("compare:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_51,"compare:options:",_53,nil); +} +}),new objj_method(sel_getUid("caseInsensitiveCompare:"),function(_54,_55,_56){ +with(_54){ +return objj_msgSend(_54,"compare:options:",_56,CPCaseInsensitiveSearch); +} +}),new objj_method(sel_getUid("compare:options:"),function(_57,_58,_59,_5a){ +with(_57){ +var lhs=_57,rhs=_59; +if(_5a&CPCaseInsensitiveSearch){ +lhs=lhs.toLowerCase(); +rhs=rhs.toLowerCase(); +} +if(_5a&CPDiacriticInsensitiveSearch){ +lhs=lhs.stripDiacritics(); +rhs=rhs.stripDiacritics(); +} +if(lhsrhs){ +return CPOrderedDescending; +} +} +return CPOrderedSame; +} +}),new objj_method(sel_getUid("compare:options:range:"),function(_5b,_5c,_5d,_5e,_5f){ +with(_5b){ +var lhs=objj_msgSend(_5b,"substringWithRange:",_5f),rhs=_5d; +return objj_msgSend(lhs,"compare:options:",rhs,_5e); +} +}),new objj_method(sel_getUid("hasPrefix:"),function(_60,_61,_62){ +with(_60){ +return _62&&_62!=""&&indexOf(_62)==0; +} +}),new objj_method(sel_getUid("hasSuffix:"),function(_63,_64,_65){ +with(_63){ +return _65&&_65!=""&&length>=_65.length&&lastIndexOf(_65)==(length-_65.length); +} +}),new objj_method(sel_getUid("isEqual:"),function(_66,_67,_68){ +with(_66){ +if(_66===_68){ +return YES; +} +if(!_68||!objj_msgSend(_68,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +return NO; +} +return objj_msgSend(_66,"isEqualToString:",_68); +} +}),new objj_method(sel_getUid("isEqualToString:"),function(_69,_6a,_6b){ +with(_69){ +return _69==_6b; +} +}),new objj_method(sel_getUid("UID"),function(_6c,_6d){ +with(_6c){ +var UID=_1.valueForKey(_6c); +if(!UID){ +UID=objj_generateObjectUID(); +_1.setValueForKey(_6c,UID); +} +return UID+""; +} +}),new objj_method(sel_getUid("commonPrefixWithString:"),function(_6e,_6f,_70){ +with(_6e){ +return objj_msgSend(_6e,"commonPrefixWithString:options:",_70,0); +} +}),new objj_method(sel_getUid("commonPrefixWithString:options:"),function(_71,_72,_73,_74){ +with(_71){ +var len=0,lhs=_71,rhs=_73,min=MIN(objj_msgSend(lhs,"length"),objj_msgSend(rhs,"length")); +if(_74&CPCaseInsensitiveSearch){ +lhs=objj_msgSend(lhs,"lowercaseString"); +rhs=objj_msgSend(rhs,"lowercaseString"); +} +for(;len=_b3[0]&&_b2<=_b3[_b3.length-1]){ +_b2=_af[i]; +break; +} +} +_b0+=String.fromCharCode(_b2); +} +return _b0; +}; +String.prototype.isa=CPString; +p;9;CPTimer.jt;5527;@STATIC;1.0;i;8;CPDate.ji;14;CPInvocation.ji;10;CPObject.ji;11;CPRunLoop.jt;5446; +objj_executeFile("CPDate.j",YES); +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPRunLoop.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPTimer"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_timeInterval"),new objj_ivar("_invocation"),new objj_ivar("_callback"),new objj_ivar("_repeats"),new objj_ivar("_isValid"),new objj_ivar("_fireDate"),new objj_ivar("_userInfo")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFireDate:interval:invocation:repeats:"),function(_3,_4,_5,_6,_7,_8){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPTimer").super_class},"init"); +if(_3){ +_timeInterval=_6; +_invocation=_7; +_repeats=_8; +_isValid=YES; +_fireDate=_5; +} +return _3; +} +}),new objj_method(sel_getUid("initWithFireDate:interval:target:selector:userInfo:repeats:"),function(_9,_a,_b,_c,_d,_e,_f,_10){ +with(_9){ +var _11=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",1); +objj_msgSend(_11,"setTarget:",_d); +objj_msgSend(_11,"setSelector:",_e); +objj_msgSend(_11,"setArgument:atIndex:",_9,2); +_9=objj_msgSend(_9,"initWithFireDate:interval:invocation:repeats:",_b,_c,_11,_10); +if(_9){ +_userInfo=_f; +} +return _9; +} +}),new objj_method(sel_getUid("initWithFireDate:interval:callback:repeats:"),function(_12,_13,_14,_15,_16,_17){ +with(_12){ +_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPTimer").super_class},"init"); +if(_12){ +_timeInterval=_15; +_callback=_16; +_repeats=_17; +_isValid=YES; +_fireDate=_14; +} +return _12; +} +}),new objj_method(sel_getUid("timeInterval"),function(_18,_19){ +with(_18){ +return _timeInterval; +} +}),new objj_method(sel_getUid("fireDate"),function(_1a,_1b){ +with(_1a){ +return _fireDate; +} +}),new objj_method(sel_getUid("setFireDate:"),function(_1c,_1d,_1e){ +with(_1c){ +_fireDate=_1e; +} +}),new objj_method(sel_getUid("fire"),function(_1f,_20){ +with(_1f){ +if(!_isValid){ +return; +} +if(_callback){ +_callback(); +}else{ +objj_msgSend(_invocation,"invoke"); +} +if(!_isValid){ +return; +} +if(_repeats){ +_fireDate=objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_timeInterval); +}else{ +objj_msgSend(_1f,"invalidate"); +} +} +}),new objj_method(sel_getUid("isValid"),function(_21,_22){ +with(_21){ +return _isValid; +} +}),new objj_method(sel_getUid("invalidate"),function(_23,_24){ +with(_23){ +_isValid=NO; +_userInfo=nil; +_invocation=nil; +_callback=nil; +} +}),new objj_method(sel_getUid("userInfo"),function(_25,_26){ +with(_25){ +return _userInfo; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("scheduledTimerWithTimeInterval:invocation:repeats:"),function(_27,_28,_29,_2a,_2b){ +with(_27){ +var _2c=objj_msgSend(objj_msgSend(_27,"alloc"),"initWithFireDate:interval:invocation:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_29),_29,_2a,_2b); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"addTimer:forMode:",_2c,CPDefaultRunLoopMode); +return _2c; +} +}),new objj_method(sel_getUid("scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:"),function(_2d,_2e,_2f,_30,_31,_32,_33){ +with(_2d){ +var _34=objj_msgSend(objj_msgSend(_2d,"alloc"),"initWithFireDate:interval:target:selector:userInfo:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_2f),_2f,_30,_31,_32,_33); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"addTimer:forMode:",_34,CPDefaultRunLoopMode); +return _34; +} +}),new objj_method(sel_getUid("scheduledTimerWithTimeInterval:callback:repeats:"),function(_35,_36,_37,_38,_39){ +with(_35){ +var _3a=objj_msgSend(objj_msgSend(_35,"alloc"),"initWithFireDate:interval:callback:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_37),_37,_38,_39); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"addTimer:forMode:",_3a,CPDefaultRunLoopMode); +return _3a; +} +}),new objj_method(sel_getUid("timerWithTimeInterval:invocation:repeats:"),function(_3b,_3c,_3d,_3e,_3f){ +with(_3b){ +return objj_msgSend(objj_msgSend(_3b,"alloc"),"initWithFireDate:interval:invocation:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_3d),_3d,_3e,_3f); +} +}),new objj_method(sel_getUid("timerWithTimeInterval:target:selector:userInfo:repeats:"),function(_40,_41,_42,_43,_44,_45,_46){ +with(_40){ +return objj_msgSend(objj_msgSend(_40,"alloc"),"initWithFireDate:interval:target:selector:userInfo:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_42),_42,_43,_44,_45,_46); +} +}),new objj_method(sel_getUid("timerWithTimeInterval:callback:repeats:"),function(_47,_48,_49,_4a,_4b){ +with(_47){ +return objj_msgSend(objj_msgSend(_47,"alloc"),"initWithFireDate:interval:callback:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_49),_49,_4a,_4b); +} +})]); +var _4c=1000,_4d={}; +var _4e=function(_4f,_50,_51,_52){ +var _53=_4c++,_54=nil; +if(typeof _4f==="string"){ +_54=function(){ +new Function(_4f)(); +if(!_51){ +_4d[_53]=nil; +} +}; +}else{ +if(!_52){ +_52=[]; +} +_54=function(){ +_4f.apply(window,_52); +if(!_51){ +_4d[_53]=nil; +} +}; +} +_4d[_53]=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",_50/1000,_54,_51); +return _53; +}; +window.setTimeout=function(_55,_56){ +return _4e(_55,_56,NO,Array.prototype.slice.apply(arguments,[2])); +}; +window.clearTimeout=function(_57){ +var _58=_4d[_57]; +if(_58){ +objj_msgSend(_58,"invalidate"); +} +_4d[_57]=nil; +}; +window.setInterval=function(_59,_5a,_5b){ +return _4e(_59,_5a,YES,Array.prototype.slice.apply(arguments,[2])); +}; +window.clearInterval=function(_5c){ +window.clearTimeout(_5c); +}; +p;15;CPUndoManager.jt;17233;@STATIC;1.0;i;14;CPInvocation.ji;10;CPObject.ji;9;CPProxy.jt;17166; +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPProxy.j",YES); +var _1=0,_2=1,_3=2; +CPUndoManagerCheckpointNotification="CPUndoManagerCheckpointNotification"; +CPUndoManagerDidOpenUndoGroupNotification="CPUndoManagerDidOpenUndoGroupNotification"; +CPUndoManagerDidRedoChangeNotification="CPUndoManagerDidRedoChangeNotification"; +CPUndoManagerDidUndoChangeNotification="CPUndoManagerDidUndoChangeNotification"; +CPUndoManagerWillCloseUndoGroupNotification="CPUndoManagerWillCloseUndoGroupNotification"; +CPUndoManagerWillRedoChangeNotification="CPUndoManagerWillRedoChangeNotification"; +CPUndoManagerWillUndoChangeNotification="CPUndoManagerWillUndoChangeNotification"; +CPUndoCloseGroupingRunLoopOrdering=350000; +var _4=[],_5=5; +var _6=objj_allocateClassPair(CPObject,"_CPUndoGrouping"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_parent"),new objj_ivar("_invocations"),new objj_ivar("_actionName")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("initWithParent:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("_CPUndoGrouping").super_class},"init"); +if(_8){ +_parent=_a; +_invocations=[]; +_actionName=""; +} +return _8; +} +}),new objj_method(sel_getUid("parent"),function(_b,_c){ +with(_b){ +return _parent; +} +}),new objj_method(sel_getUid("addInvocation:"),function(_d,_e,_f){ +with(_d){ +_invocations.push(_f); +} +}),new objj_method(sel_getUid("addInvocationsFromArray:"),function(_10,_11,_12){ +with(_10){ +objj_msgSend(_invocations,"addObjectsFromArray:",_12); +} +}),new objj_method(sel_getUid("removeInvocationsWithTarget:"),function(_13,_14,_15){ +with(_13){ +var _16=_invocations.length; +while(_16--){ +if(objj_msgSend(_invocations[_16],"target")==_15){ +_invocations.splice(_16,1); +} +} +} +}),new objj_method(sel_getUid("invocations"),function(_17,_18){ +with(_17){ +return _invocations; +} +}),new objj_method(sel_getUid("invoke"),function(_19,_1a){ +with(_19){ +var _1b=_invocations.length; +while(_1b--){ +objj_msgSend(_invocations[_1b],"invoke"); +} +} +}),new objj_method(sel_getUid("setActionName:"),function(_1c,_1d,_1e){ +with(_1c){ +_actionName=_1e; +} +}),new objj_method(sel_getUid("actionName"),function(_1f,_20){ +with(_1f){ +return _actionName; +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("_poolUndoGrouping:"),function(_21,_22,_23){ +with(_21){ +if(!_23||_4.length>=_5){ +return; +} +_4.push(_23); +} +}),new objj_method(sel_getUid("undoGroupingWithParent:"),function(_24,_25,_26){ +with(_24){ +if(_4.length){ +var _27=_4.pop(); +_27._parent=_26; +if(_27._invocations.length){ +_27._invocations=[]; +} +return _27; +} +return objj_msgSend(objj_msgSend(_24,"alloc"),"initWithParent:",_26); +} +})]); +var _28="_CPUndoGroupingParentKey",_29="_CPUndoGroupingInvocationsKey",_2a="_CPUndoGroupingActionNameKey"; +var _6=objj_getClass("_CPUndoGrouping"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"_CPUndoGrouping\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("initWithCoder:"),function(_2b,_2c,_2d){ +with(_2b){ +_2b=objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("_CPUndoGrouping").super_class},"init"); +if(_2b){ +_parent=objj_msgSend(_2d,"decodeObjectForKey:",_28); +_invocations=objj_msgSend(_2d,"decodeObjectForKey:",_29); +_actionName=objj_msgSend(_2d,"decodeObjectForKey:",_2a); +} +return _2b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSend(_30,"encodeObject:forKey:",_parent,_28); +objj_msgSend(_30,"encodeObject:forKey:",_invocations,_29); +objj_msgSend(_30,"encodeObject:forKey:",_actionName,_2a); +} +})]); +var _6=objj_allocateClassPair(CPObject,"CPUndoManager"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_redoStack"),new objj_ivar("_undoStack"),new objj_ivar("_groupsByEvent"),new objj_ivar("_disableCount"),new objj_ivar("_levelsOfUndo"),new objj_ivar("_currentGrouping"),new objj_ivar("_state"),new objj_ivar("_preparedTarget"),new objj_ivar("_undoManagerProxy"),new objj_ivar("_runLoopModes"),new objj_ivar("_registeredWithRunLoop")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("init"),function(_31,_32){ +with(_31){ +_31=objj_msgSendSuper({receiver:_31,super_class:objj_getClass("CPUndoManager").super_class},"init"); +if(_31){ +_redoStack=[]; +_undoStack=[]; +_state=_1; +objj_msgSend(_31,"setRunLoopModes:",[CPDefaultRunLoopMode]); +objj_msgSend(_31,"setGroupsByEvent:",YES); +_undoManagerProxy=objj_msgSend(_CPUndoManagerProxy,"alloc"); +_undoManagerProxy._undoManager=_31; +} +return _31; +} +}),new objj_method(sel_getUid("_addUndoInvocation:"),function(_33,_34,_35){ +with(_33){ +if(!_currentGrouping){ +if(objj_msgSend(_33,"groupsByEvent")){ +objj_msgSend(_33,"_beginUndoGroupingForEvent"); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"No undo group is currently open"); +} +} +objj_msgSend(_currentGrouping,"addInvocation:",_35); +if(_state===_1){ +objj_msgSend(_redoStack,"removeAllObjects"); +} +} +}),new objj_method(sel_getUid("registerUndoWithTarget:selector:object:"),function(_36,_37,_38,_39,_3a){ +with(_36){ +if(_disableCount>0){ +return; +} +var _3b=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",nil); +objj_msgSend(_3b,"setTarget:",_38); +objj_msgSend(_3b,"setSelector:",_39); +objj_msgSend(_3b,"setArgument:atIndex:",_3a,2); +objj_msgSend(_36,"_addUndoInvocation:",_3b); +} +}),new objj_method(sel_getUid("prepareWithInvocationTarget:"),function(_3c,_3d,_3e){ +with(_3c){ +_preparedTarget=_3e; +return _undoManagerProxy; +} +}),new objj_method(sel_getUid("_methodSignatureOfPreparedTargetForSelector:"),function(_3f,_40,_41){ +with(_3f){ +if(objj_msgSend(_preparedTarget,"respondsToSelector:",_41)){ +return 1; +} +return nil; +} +}),new objj_method(sel_getUid("_forwardInvocationToPreparedTarget:"),function(_42,_43,_44){ +with(_42){ +if(_disableCount>0){ +return; +} +objj_msgSend(_44,"setTarget:",_preparedTarget); +objj_msgSend(_42,"_addUndoInvocation:",_44); +_preparedTarget=nil; +} +}),new objj_method(sel_getUid("canRedo"),function(_45,_46){ +with(_45){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPUndoManagerCheckpointNotification,_45); +return objj_msgSend(_redoStack,"count")>0; +} +}),new objj_method(sel_getUid("canUndo"),function(_47,_48){ +with(_47){ +if(_undoStack.length>0){ +return YES; +} +return objj_msgSend(objj_msgSend(_currentGrouping,"invocations"),"count")>0; +} +}),new objj_method(sel_getUid("undo"),function(_49,_4a){ +with(_49){ +if(objj_msgSend(_49,"groupingLevel")===1){ +objj_msgSend(_49,"endUndoGrouping"); +} +objj_msgSend(_49,"undoNestedGroup"); +} +}),new objj_method(sel_getUid("undoNestedGroup"),function(_4b,_4c){ +with(_4b){ +if(objj_msgSend(_undoStack,"count")<=0){ +return; +} +var _4d=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_4d,"postNotificationName:object:",CPUndoManagerCheckpointNotification,_4b); +objj_msgSend(_4d,"postNotificationName:object:",CPUndoManagerWillUndoChangeNotification,_4b); +var _4e=_undoStack.pop(),_4f=objj_msgSend(_4e,"actionName"); +_state=_2; +objj_msgSend(_4b,"_beginUndoGrouping"); +objj_msgSend(_4e,"invoke"); +objj_msgSend(_4b,"endUndoGrouping"); +objj_msgSend(_CPUndoGrouping,"_poolUndoGrouping:",_4e); +_state=_1; +objj_msgSend(objj_msgSend(_redoStack,"lastObject"),"setActionName:",_4f); +objj_msgSend(_4d,"postNotificationName:object:",CPUndoManagerDidUndoChangeNotification,_4b); +} +}),new objj_method(sel_getUid("redo"),function(_50,_51){ +with(_50){ +if(objj_msgSend(_redoStack,"count")<=0){ +return; +} +var _52=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_52,"postNotificationName:object:",CPUndoManagerCheckpointNotification,_50); +objj_msgSend(_52,"postNotificationName:object:",CPUndoManagerWillRedoChangeNotification,_50); +var _53=_currentGrouping,_54=_redoStack.pop(),_55=objj_msgSend(_54,"actionName"); +_currentGrouping=nil; +_state=_3; +objj_msgSend(_50,"_beginUndoGrouping"); +objj_msgSend(_54,"invoke"); +objj_msgSend(_50,"endUndoGrouping"); +objj_msgSend(_CPUndoGrouping,"_poolUndoGrouping:",_54); +_currentGrouping=_53; +_state=_1; +objj_msgSend(objj_msgSend(_undoStack,"lastObject"),"setActionName:",_55); +objj_msgSend(_52,"postNotificationName:object:",CPUndoManagerDidRedoChangeNotification,_50); +} +}),new objj_method(sel_getUid("beginUndoGrouping"),function(_56,_57){ +with(_56){ +if(!_currentGrouping&&objj_msgSend(_56,"groupsByEvent")){ +objj_msgSend(_56,"_beginUndoGroupingForEvent"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPUndoManagerCheckpointNotification,_56); +objj_msgSend(_56,"_beginUndoGrouping"); +} +}),new objj_method(sel_getUid("_beginUndoGroupingForEvent"),function(_58,_59){ +with(_58){ +objj_msgSend(_58,"_beginUndoGrouping"); +objj_msgSend(_58,"_registerWithRunLoop"); +} +}),new objj_method(sel_getUid("_beginUndoGrouping"),function(_5a,_5b){ +with(_5a){ +_currentGrouping=objj_msgSend(_CPUndoGrouping,"undoGroupingWithParent:",_currentGrouping); +} +}),new objj_method(sel_getUid("endUndoGrouping"),function(_5c,_5d){ +with(_5c){ +if(!_currentGrouping){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"endUndoGrouping. No undo group is currently open."); +} +var _5e=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_5e,"postNotificationName:object:",CPUndoManagerCheckpointNotification,_5c); +var _5f=objj_msgSend(_currentGrouping,"parent"); +if(!_5f&&objj_msgSend(_currentGrouping,"invocations").length>0){ +objj_msgSend(_5e,"postNotificationName:object:",CPUndoManagerWillCloseUndoGroupNotification,_5c); +var _60=_state===_2?_redoStack:_undoStack; +_60.push(_currentGrouping); +if(_levelsOfUndo>0&&_60.length>_levelsOfUndo){ +_60.splice(0,1); +} +}else{ +objj_msgSend(_5f,"addInvocationsFromArray:",objj_msgSend(_currentGrouping,"invocations")); +objj_msgSend(_CPUndoGrouping,"_poolUndoGrouping:",_currentGrouping); +} +_currentGrouping=_5f; +} +}),new objj_method(sel_getUid("enableUndoRegistration"),function(_61,_62){ +with(_61){ +if(_disableCount<=0){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"enableUndoRegistration. There are no disable messages in effect right now."); +} +_disableCount--; +} +}),new objj_method(sel_getUid("groupsByEvent"),function(_63,_64){ +with(_63){ +return _groupsByEvent; +} +}),new objj_method(sel_getUid("setGroupsByEvent:"),function(_65,_66,_67){ +with(_65){ +_67=!!_67; +if(_groupsByEvent===_67){ +return; +} +_groupsByEvent=_67; +if(!objj_msgSend(_65,"groupsByEvent")){ +objj_msgSend(_65,"_unregisterWithRunLoop"); +} +} +}),new objj_method(sel_getUid("groupingLevel"),function(_68,_69){ +with(_68){ +var _6a=_currentGrouping,_6b=_currentGrouping?1:0; +while(_6a=objj_msgSend(_6a,"parent")){ +++_6b; +} +return _6b; +} +}),new objj_method(sel_getUid("disableUndoRegistration"),function(_6c,_6d){ +with(_6c){ +++_disableCount; +} +}),new objj_method(sel_getUid("isUndoRegistrationEnabled"),function(_6e,_6f){ +with(_6e){ +return _disableCount==0; +} +}),new objj_method(sel_getUid("isUndoing"),function(_70,_71){ +with(_70){ +return _state===_2; +} +}),new objj_method(sel_getUid("isRedoing"),function(_72,_73){ +with(_72){ +return _state===_3; +} +}),new objj_method(sel_getUid("removeAllActions"),function(_74,_75){ +with(_74){ +_redoStack=[]; +_undoStack=[]; +_disableCount=0; +} +}),new objj_method(sel_getUid("removeAllActionsWithTarget:"),function(_76,_77,_78){ +with(_76){ +objj_msgSend(_currentGrouping,"removeInvocationsWithTarget:",_78); +var _79=_redoStack.length; +while(_79--){ +var _7a=_redoStack[_79]; +objj_msgSend(_7a,"removeInvocationsWithTarget:",_78); +if(!objj_msgSend(_7a,"invocations").length){ +_redoStack.splice(_79,1); +} +} +_79=_undoStack.length; +while(_79--){ +var _7a=_undoStack[_79]; +objj_msgSend(_7a,"removeInvocationsWithTarget:",_78); +if(!objj_msgSend(_7a,"invocations").length){ +_undoStack.splice(_79,1); +} +} +} +}),new objj_method(sel_getUid("setActionName:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_7d!==nil&&_currentGrouping){ +objj_msgSend(_currentGrouping,"setActionName:",_7d); +} +} +}),new objj_method(sel_getUid("redoActionName"),function(_7e,_7f){ +with(_7e){ +if(!objj_msgSend(_7e,"canRedo")){ +return nil; +} +return objj_msgSend(objj_msgSend(_redoStack,"lastObject"),"actionName"); +} +}),new objj_method(sel_getUid("redoMenuItemTitle"),function(_80,_81){ +with(_80){ +return objj_msgSend(_80,"redoMenuTitleForUndoActionName:",objj_msgSend(_80,"redoActionName")); +} +}),new objj_method(sel_getUid("redoMenuTitleForUndoActionName:"),function(_82,_83,_84){ +with(_82){ +if(_84||_84===0){ +return "Redo "+_84; +} +return "Redo"; +} +}),new objj_method(sel_getUid("undoActionName"),function(_85,_86){ +with(_85){ +if(!objj_msgSend(_85,"canUndo")){ +return nil; +} +return objj_msgSend(objj_msgSend(_undoStack,"lastObject"),"actionName"); +} +}),new objj_method(sel_getUid("undoMenuItemTitle"),function(_87,_88){ +with(_87){ +return objj_msgSend(_87,"undoMenuTitleForUndoActionName:",objj_msgSend(_87,"undoActionName")); +} +}),new objj_method(sel_getUid("undoMenuTitleForUndoActionName:"),function(_89,_8a,_8b){ +with(_89){ +if(_8b||_8b===0){ +return "Undo "+_8b; +} +return "Undo"; +} +}),new objj_method(sel_getUid("runLoopModes"),function(_8c,_8d){ +with(_8c){ +return _runLoopModes; +} +}),new objj_method(sel_getUid("setRunLoopModes:"),function(_8e,_8f,_90){ +with(_8e){ +_runLoopModes=objj_msgSend(_90,"copy"); +if(_registeredWithRunLoop){ +objj_msgSend(_8e,"_unregisterWithRunLoop"); +objj_msgSend(_8e,"_registerWithRunLoop"); +} +} +}),new objj_method(sel_getUid("_runLoopEndUndoGrouping"),function(_91,_92){ +with(_91){ +objj_msgSend(_91,"endUndoGrouping"); +_registeredWithRunLoop=NO; +} +}),new objj_method(sel_getUid("_registerWithRunLoop"),function(_93,_94){ +with(_93){ +if(_registeredWithRunLoop){ +return; +} +_registeredWithRunLoop=YES; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("_runLoopEndUndoGrouping"),_93,nil,CPUndoCloseGroupingRunLoopOrdering,_runLoopModes); +} +}),new objj_method(sel_getUid("_unregisterWithRunLoop"),function(_95,_96){ +with(_95){ +if(!_registeredWithRunLoop){ +return; +} +_registeredWithRunLoop=NO; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"cancelPerformSelector:target:argument:",sel_getUid("_runLoopEndUndoGrouping"),_95,nil); +} +}),new objj_method(sel_getUid("observeChangesForKeyPath:ofObject:"),function(_97,_98,_99,_9a){ +with(_97){ +objj_msgSend(_9a,"addObserver:forKeyPath:options:context:",_97,_99,CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew,NULL); +} +}),new objj_method(sel_getUid("stopObservingChangesForKeyPath:ofObject:"),function(_9b,_9c,_9d,_9e){ +with(_9b){ +objj_msgSend(_9e,"removeObserver:forKeyPath:",_9b,_9d); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_9f,_a0,_a1,_a2,_a3,_a4){ +with(_9f){ +var _a5=objj_msgSend(_a3,"valueForKey:",CPKeyValueChangeOldKey),_a6=objj_msgSend(_a3,"valueForKey:",CPKeyValueChangeNewKey); +if(_a5===_a6||(_a5!==nil&&_a5.isa&&(_a6===nil||_a6.isa)&&objj_msgSend(_a5,"isEqual:",_a6))){ +return; +} +objj_msgSend(objj_msgSend(_9f,"prepareWithInvocationTarget:",_a2),"applyChange:toKeyPath:",objj_msgSend(_a3,"inverseChangeDictionary"),_a1); +} +})]); +var _a7="CPUndoManagerRedoStackKey",_a8="CPUndoManagerUndoStackKey",_a9="CPUndoManagerLevelsOfUndoKey",_aa="CPUndoManagerActionNameKey",_ab="CPUndoManagerCurrentGroupingKey",_ac="CPUndoManagerRunLoopModesKey",_ad="CPUndoManagerGroupsByEventKey"; +var _6=objj_getClass("CPUndoManager"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPUndoManager\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("initWithCoder:"),function(_ae,_af,_b0){ +with(_ae){ +_ae=objj_msgSendSuper({receiver:_ae,super_class:objj_getClass("CPUndoManager").super_class},"init"); +if(_ae){ +_redoStack=objj_msgSend(_b0,"decodeObjectForKey:",_a7); +_undoStack=objj_msgSend(_b0,"decodeObjectForKey:",_a8); +_levelsOfUndo=objj_msgSend(_b0,"decodeObjectForKey:",_a9); +_actionName=objj_msgSend(_b0,"decodeObjectForKey:",_aa); +_currentGrouping=objj_msgSend(_b0,"decodeObjectForKey:",_ab); +_state=_1; +objj_msgSend(_ae,"setRunLoopModes:",objj_msgSend(_b0,"decodeObjectForKey:",_ac)); +objj_msgSend(_ae,"setGroupsByEvent:",objj_msgSend(_b0,"decodeBoolForKey:",_ad)); +} +return _ae; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSend(_b3,"encodeObject:forKey:",_redoStack,_a7); +objj_msgSend(_b3,"encodeObject:forKey:",_undoStack,_a8); +objj_msgSend(_b3,"encodeInt:forKey:",_levelsOfUndo,_a9); +objj_msgSend(_b3,"encodeObject:forKey:",_actionName,_aa); +objj_msgSend(_b3,"encodeObject:forKey:",_currentGrouping,_ab); +objj_msgSend(_b3,"encodeObject:forKey:",_runLoopModes,_ac); +objj_msgSend(_b3,"encodeBool:forKey:",_groupsByEvent,_ad); +} +})]); +var _6=objj_allocateClassPair(CPProxy,"_CPUndoManagerProxy"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_undoManager")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("methodSignatureForSelector:"),function(_b4,_b5,_b6){ +with(_b4){ +return objj_msgSend(_undoManager,"_methodSignatureOfPreparedTargetForSelector:",_b6); +} +}),new objj_method(sel_getUid("forwardInvocation:"),function(_b7,_b8,_b9){ +with(_b7){ +objj_msgSend(_undoManager,"_forwardInvocationToPreparedTarget:",_b9); +} +})]); +p;7;CPURL.jt;5953;@STATIC;1.0;i;10;CPObject.jt;5919; +objj_executeFile("CPObject.j",YES); +CPURLNameKey="CPURLNameKey"; +CPURLLocalizedNameKey="CPURLLocalizedNameKey"; +CPURLIsRegularFileKey="CPURLIsRegularFileKey"; +CPURLIsDirectoryKey="CPURLIsDirectoryKey"; +CPURLIsSymbolicLinkKey="CPURLIsSymbolicLinkKey"; +CPURLIsVolumeKey="CPURLIsVolumeKey"; +CPURLIsPackageKey="CPURLIsPackageKey"; +CPURLIsSystemImmutableKey="CPURLIsSystemImmutableKey"; +CPURLIsUserImmutableKey="CPURLIsUserImmutableKey"; +CPURLIsHiddenKey="CPURLIsHiddenKey"; +CPURLHasHiddenExtensionKey="CPURLHasHiddenExtensionKey"; +CPURLCreationDateKey="CPURLCreationDateKey"; +CPURLContentAccessDateKey="CPURLContentAccessDateKey"; +CPURLContentModificationDateKey="CPURLContentModificationDateKey"; +CPURLAttributeModificationDateKey="CPURLAttributeModificationDateKey"; +CPURLLinkCountKey="CPURLLinkCountKey"; +CPURLParentDirectoryURLKey="CPURLParentDirectoryURLKey"; +CPURLVolumeURLKey="CPURLTypeIdentifierKey"; +CPURLTypeIdentifierKey="CPURLTypeIdentifierKey"; +CPURLLocalizedTypeDescriptionKey="CPURLLocalizedTypeDescriptionKey"; +CPURLLabelNumberKey="CPURLLabelNumberKey"; +CPURLLabelColorKey="CPURLLabelColorKey"; +CPURLLocalizedLabelKey="CPURLLocalizedLabelKey"; +CPURLEffectiveIconKey="CPURLEffectiveIconKey"; +CPURLCustomIconKey="CPURLCustomIconKey"; +var _1=objj_allocateClassPair(CPObject,"CPURL"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return nil; +} +}),new objj_method(sel_getUid("initWithScheme:host:path:"),function(_5,_6,_7,_8,_9){ +with(_5){ +var _a=(_7?_7+":":"")+(_8?_8+"//":"")+(_9||""); +return objj_msgSend(_5,"initWithString:",_a); +} +}),new objj_method(sel_getUid("initWithString:"),function(_b,_c,_d){ +with(_b){ +return objj_msgSend(_b,"initWithString:relativeToURL:",_d,nil); +} +}),new objj_method(sel_getUid("initWithString:relativeToURL:"),function(_e,_f,_10,_11){ +with(_e){ +return new CFURL(_10,_11); +} +}),new objj_method(sel_getUid("absoluteURL"),function(_12,_13){ +with(_12){ +return _12.absoluteURL(); +} +}),new objj_method(sel_getUid("baseURL"),function(_14,_15){ +with(_14){ +return _14.baseURL(); +} +}),new objj_method(sel_getUid("absoluteString"),function(_16,_17){ +with(_16){ +return _16.absoluteString(); +} +}),new objj_method(sel_getUid("relativeString"),function(_18,_19){ +with(_18){ +return _18.string(); +} +}),new objj_method(sel_getUid("path"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_1a,"absoluteURL").path(); +} +}),new objj_method(sel_getUid("pathComponents"),function(_1c,_1d){ +with(_1c){ +var _1e=_1c.pathComponents(); +return objj_msgSend(_1e,"copy"); +} +}),new objj_method(sel_getUid("relativePath"),function(_1f,_20){ +with(_1f){ +return _1f.path(); +} +}),new objj_method(sel_getUid("scheme"),function(_21,_22){ +with(_21){ +return _21.scheme(); +} +}),new objj_method(sel_getUid("user"),function(_23,_24){ +with(_23){ +return objj_msgSend(_23,"absoluteURL").user(); +} +}),new objj_method(sel_getUid("password"),function(_25,_26){ +with(_25){ +return objj_msgSend(_25,"absoluteURL").password(); +} +}),new objj_method(sel_getUid("host"),function(_27,_28){ +with(_27){ +return objj_msgSend(_27,"absoluteURL").domain(); +} +}),new objj_method(sel_getUid("port"),function(_29,_2a){ +with(_29){ +var _2b=objj_msgSend(_29,"absoluteURL").portNumber(); +if(_2b===-1){ +return nil; +} +return _2b; +} +}),new objj_method(sel_getUid("parameterString"),function(_2c,_2d){ +with(_2c){ +return _2c.queryString(); +} +}),new objj_method(sel_getUid("fragment"),function(_2e,_2f){ +with(_2e){ +return _2e.fragment(); +} +}),new objj_method(sel_getUid("isEqual:"),function(_30,_31,_32){ +with(_30){ +return objj_msgSend(_30,"relativeString")===objj_msgSend(_32,"relativeString")&&(objj_msgSend(_30,"baseURL")===objj_msgSend(_32,"baseURL")||objj_msgSend(objj_msgSend(_30,"baseURL"),"isEqual:",objj_msgSend(_32,"baseURL"))); +} +}),new objj_method(sel_getUid("lastPathComponent"),function(_33,_34){ +with(_33){ +return objj_msgSend(_33,"absoluteURL").lastPathComponent(); +} +}),new objj_method(sel_getUid("pathExtension"),function(_35,_36){ +with(_35){ +return _35.pathExtension(); +} +}),new objj_method(sel_getUid("standardizedURL"),function(_37,_38){ +with(_37){ +return _37.standardizedURL(); +} +}),new objj_method(sel_getUid("isFileURL"),function(_39,_3a){ +with(_39){ +return objj_msgSend(_39,"scheme")==="file"; +} +}),new objj_method(sel_getUid("description"),function(_3b,_3c){ +with(_3b){ +return objj_msgSend(_3b,"absoluteString"); +} +}),new objj_method(sel_getUid("resourceValueForKey:"),function(_3d,_3e,_3f){ +with(_3d){ +return _3d.resourcePropertyForKey(_3f); +} +}),new objj_method(sel_getUid("setResourceValue:forKey:"),function(_40,_41,_42,_43){ +with(_40){ +return _40.setResourcePropertyForKey(_43,_42); +} +}),new objj_method(sel_getUid("staticResourceData"),function(_44,_45){ +with(_44){ +return _44.staticResourceData(); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_46,_47){ +with(_46){ +return new CFURL(); +} +}),new objj_method(sel_getUid("URLWithString:"),function(_48,_49,_4a){ +with(_48){ +return objj_msgSend(objj_msgSend(_48,"alloc"),"initWithString:",_4a); +} +}),new objj_method(sel_getUid("URLWithString:relativeToURL:"),function(_4b,_4c,_4d,_4e){ +with(_4b){ +return objj_msgSend(objj_msgSend(_4b,"alloc"),"initWithString:relativeToURL:",_4d,_4e); +} +})]); +var _4f="CPURLURLStringKey",_50="CPURLBaseURLKey"; +var _1=objj_getClass("CPURL"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPURL\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_51,"initWithString:relativeToURL:",objj_msgSend(_53,"decodeObjectForKey:",_4f),objj_msgSend(_53,"decodeObjectForKey:",_50)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_54,_55,_56){ +with(_54){ +objj_msgSend(_56,"encodeObject:forKey:",_baseURL,_50); +objj_msgSend(_56,"encodeObject:forKey:",_string,_4f); +} +})]); +CFURL.prototype.isa=objj_msgSend(CPURL,"class"); +p;17;CPURLConnection.jt;5414;@STATIC;1.0;i;10;CPObject.ji;11;CPRunLoop.ji;14;CPURLRequest.ji;15;CPURLResponse.jt;5325; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPRunLoop.j",YES); +objj_executeFile("CPURLRequest.j",YES); +objj_executeFile("CPURLResponse.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPURLConnection"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_request"),new objj_ivar("_delegate"),new objj_ivar("_isCanceled"),new objj_ivar("_isLocalFileConnection"),new objj_ivar("_HTTPRequest")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithRequest:delegate:startImmediately:"),function(_4,_5,_6,_7,_8){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPURLConnection").super_class},"init"); +if(_4){ +_request=_6; +_delegate=_7; +_isCanceled=NO; +var _9=objj_msgSend(_request,"URL"),_a=objj_msgSend(_9,"scheme"); +_isLocalFileConnection=_a==="file"||((_a==="http"||_a==="https:")&&window.location&&(window.location.protocol==="file:"||window.location.protocol==="app:")); +_HTTPRequest=new CFHTTPRequest(); +if(_8){ +objj_msgSend(_4,"start"); +} +} +return _4; +} +}),new objj_method(sel_getUid("initWithRequest:delegate:"),function(_b,_c,_d,_e){ +with(_b){ +return objj_msgSend(_b,"initWithRequest:delegate:startImmediately:",_d,_e,YES); +} +}),new objj_method(sel_getUid("delegate"),function(_f,_10){ +with(_f){ +return _delegate; +} +}),new objj_method(sel_getUid("start"),function(_11,_12){ +with(_11){ +_isCanceled=NO; +try{ +_HTTPRequest.open(objj_msgSend(_request,"HTTPMethod"),objj_msgSend(objj_msgSend(_request,"URL"),"absoluteString"),YES); +_HTTPRequest.onreadystatechange=function(){ +objj_msgSend(_11,"_readyStateDidChange"); +}; +var _13=objj_msgSend(_request,"allHTTPHeaderFields"),key=nil,_14=objj_msgSend(_13,"keyEnumerator"); +while(key=objj_msgSend(_14,"nextObject")){ +_HTTPRequest.setRequestHeader(key,objj_msgSend(_13,"objectForKey:",key)); +} +_HTTPRequest.send(objj_msgSend(_request,"HTTPBody")); +} +catch(anException){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didFailWithError:"))){ +objj_msgSend(_delegate,"connection:didFailWithError:",_11,anException); +} +} +} +}),new objj_method(sel_getUid("cancel"),function(_15,_16){ +with(_15){ +_isCanceled=YES; +try{ +_HTTPRequest.abort(); +} +catch(anException){ +} +} +}),new objj_method(sel_getUid("isLocalFileConnection"),function(_17,_18){ +with(_17){ +return _isLocalFileConnection; +} +}),new objj_method(sel_getUid("_readyStateDidChange"),function(_19,_1a){ +with(_19){ +if(_HTTPRequest.readyState()===CFHTTPRequest.CompleteState){ +var _1b=_HTTPRequest.status(),URL=objj_msgSend(_request,"URL"); +if(_1b===401&&objj_msgSend(_1,"respondsToSelector:",sel_getUid("connectionDidReceiveAuthenticationChallenge:"))){ +objj_msgSend(_1,"connectionDidReceiveAuthenticationChallenge:",_19); +}else{ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didReceiveResponse:"))){ +if(_isLocalFileConnection){ +objj_msgSend(_delegate,"connection:didReceiveResponse:",_19,objj_msgSend(objj_msgSend(CPURLResponse,"alloc"),"initWithURL:",URL)); +}else{ +var _1c=objj_msgSend(objj_msgSend(CPHTTPURLResponse,"alloc"),"initWithURL:",URL); +objj_msgSend(_1c,"_setStatusCode:",_1b); +objj_msgSend(_delegate,"connection:didReceiveResponse:",_19,_1c); +} +} +if(!_isCanceled){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didReceiveData:"))){ +objj_msgSend(_delegate,"connection:didReceiveData:",_19,_HTTPRequest.responseText()); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connectionDidFinishLoading:"))){ +objj_msgSend(_delegate,"connectionDidFinishLoading:",_19); +} +} +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_HTTPRequest"),function(_1d,_1e){ +with(_1d){ +return _HTTPRequest; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("setClassDelegate:"),function(_1f,_20,_21){ +with(_1f){ +_1=_21; +} +}),new objj_method(sel_getUid("sendSynchronousRequest:returningResponse:"),function(_22,_23,_24,_25){ +with(_22){ +try{ +var _26=new CFHTTPRequest(); +_26.open(objj_msgSend(_24,"HTTPMethod"),objj_msgSend(objj_msgSend(_24,"URL"),"absoluteString"),NO); +var _27=objj_msgSend(_24,"allHTTPHeaderFields"),key=nil,_28=objj_msgSend(_27,"keyEnumerator"); +while(key=objj_msgSend(_28,"nextObject")){ +_26.setRequestHeader(key,objj_msgSend(_27,"objectForKey:",key)); +} +_26.send(objj_msgSend(_24,"HTTPBody")); +return objj_msgSend(CPData,"dataWithRawString:",_26.responseText()); +} +catch(anException){ +} +return nil; +} +}),new objj_method(sel_getUid("connectionWithRequest:delegate:"),function(_29,_2a,_2b,_2c){ +with(_29){ +return objj_msgSend(objj_msgSend(_29,"alloc"),"initWithRequest:delegate:",_2b,_2c); +} +})]); +var _2=objj_getClass("CPURLConnection"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPURLConnection\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("_XMLHTTPRequest"),function(_2d,_2e){ +with(_2d){ +_CPReportLenientDeprecation(_2d,_2e,sel_getUid("_HTTPRequest")); +return objj_msgSend(_2d,"_HTTPRequest"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("sendSynchronousRequest:returningResponse:error:"),function(_2f,_30,_31,_32,_33){ +with(_2f){ +_CPReportLenientDeprecation(_2f,_30,sel_getUid("sendSynchronousRequest:returningResponse:")); +return objj_msgSend(_2f,"sendSynchronousRequest:returningResponse:",_31,_32); +} +})]); +p;14;CPURLRequest.jt;2069;@STATIC;1.0;i;10;CPObject.jt;2035; +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPURLRequest"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_URL"),new objj_ivar("_HTTPBody"),new objj_ivar("_HTTPMethod"),new objj_ivar("_HTTPHeaderFields")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithURL:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPURLRequest").super_class},"init"); +if(_3){ +objj_msgSend(_3,"setURL:",_5); +_HTTPBody=""; +_HTTPMethod="GET"; +_HTTPHeaderFields=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_3,"setValue:forHTTPHeaderField:","Thu, 01 Jan 1970 00:00:00 GMT","If-Modified-Since"); +objj_msgSend(_3,"setValue:forHTTPHeaderField:","no-cache","Cache-Control"); +objj_msgSend(_3,"setValue:forHTTPHeaderField:","XMLHttpRequest","X-Requested-With"); +} +return _3; +} +}),new objj_method(sel_getUid("URL"),function(_6,_7){ +with(_6){ +return _URL; +} +}),new objj_method(sel_getUid("setURL:"),function(_8,_9,_a){ +with(_8){ +_URL=new CFURL(_a); +} +}),new objj_method(sel_getUid("setHTTPBody:"),function(_b,_c,_d){ +with(_b){ +_HTTPBody=_d; +} +}),new objj_method(sel_getUid("HTTPBody"),function(_e,_f){ +with(_e){ +return _HTTPBody; +} +}),new objj_method(sel_getUid("setHTTPMethod:"),function(_10,_11,_12){ +with(_10){ +_HTTPMethod=_12; +} +}),new objj_method(sel_getUid("HTTPMethod"),function(_13,_14){ +with(_13){ +return _HTTPMethod; +} +}),new objj_method(sel_getUid("allHTTPHeaderFields"),function(_15,_16){ +with(_15){ +return _HTTPHeaderFields; +} +}),new objj_method(sel_getUid("valueForHTTPHeaderField:"),function(_17,_18,_19){ +with(_17){ +return objj_msgSend(_HTTPHeaderFields,"objectForKey:",_19); +} +}),new objj_method(sel_getUid("setValue:forHTTPHeaderField:"),function(_1a,_1b,_1c,_1d){ +with(_1a){ +objj_msgSend(_HTTPHeaderFields,"setObject:forKey:",_1c,_1d); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("requestWithURL:"),function(_1e,_1f,_20){ +with(_1e){ +return objj_msgSend(objj_msgSend(CPURLRequest,"alloc"),"initWithURL:",_20); +} +})]); +p;15;CPURLResponse.jt;888;@STATIC;1.0;i;10;CPObject.jt;855; +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPURLResponse"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_URL")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithURL:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPURLResponse").super_class},"init"); +if(_3){ +_URL=_5; +} +return _3; +} +}),new objj_method(sel_getUid("URL"),function(_6,_7){ +with(_6){ +return _URL; +} +})]); +var _1=objj_allocateClassPair(CPURLResponse,"CPHTTPURLResponse"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_statusCode")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_setStatusCode:"),function(_8,_9,_a){ +with(_8){ +_statusCode=_a; +} +}),new objj_method(sel_getUid("statusCode"),function(_b,_c){ +with(_b){ +return _statusCode; +} +})]); +p;22;CPUserSessionManager.jt;1912;@STATIC;1.0;i;10;CPObject.ji;10;CPString.jt;1863; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +CPUserSessionUndeterminedStatus=0; +CPUserSessionLoggedInStatus=1; +CPUserSessionLoggedOutStatus=2; +CPUserSessionManagerStatusDidChangeNotification="CPUserSessionManagerStatusDidChangeNotification"; +CPUserSessionManagerUserIdentifierDidChangeNotification="CPUserSessionManagerUserIdentifierDidChangeNotification"; +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPUserSessionManager"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_status"),new objj_ivar("_userIdentifier")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPUserSessionManager").super_class},"init"); +if(_4){ +_status=CPUserSessionUndeterminedStatus; +} +return _4; +} +}),new objj_method(sel_getUid("status"),function(_6,_7){ +with(_6){ +return _status; +} +}),new objj_method(sel_getUid("setStatus:"),function(_8,_9,_a){ +with(_8){ +if(_status==_a){ +return; +} +_status=_a; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPUserSessionManagerStatusDidChangeNotification,_8); +if(_status!=CPUserSessionLoggedInStatus){ +objj_msgSend(_8,"setUserIdentifier:",nil); +} +} +}),new objj_method(sel_getUid("userIdentifier"),function(_b,_c){ +with(_b){ +return _userIdentifier; +} +}),new objj_method(sel_getUid("setUserIdentifier:"),function(_d,_e,_f){ +with(_d){ +if(_userIdentifier==_f){ +return; +} +_userIdentifier=_f; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPUserSessionManagerUserIdentifierDidChangeNotification,_d); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("defaultManager"),function(_10,_11){ +with(_10){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(CPUserSessionManager,"alloc"),"init"); +} +return _1; +} +})]); +p;9;CPValue.jt;1690;@STATIC;1.0;i;9;CPCoder.ji;10;CPObject.jt;1643; +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPValue"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_JSObject")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithJSObject:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPValue").super_class},"init"); +if(_3){ +_JSObject=_5; +} +return _3; +} +}),new objj_method(sel_getUid("JSObject"),function(_6,_7){ +with(_6){ +return _JSObject; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("valueWithJSObject:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(objj_msgSend(_8,"alloc"),"initWithJSObject:",_a); +} +})]); +var _b="CPValueValueKey"; +var _1=objj_getClass("CPValue"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPValue\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_c,_d,_e){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPValue").super_class},"init"); +if(_c){ +_JSObject=JSON.parse(objj_msgSend(_e,"decodeObjectForKey:",_b)); +} +return _c; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_11,"encodeObject:forKey:",JSON.stringify(_JSObject),_b); +} +})]); +CPJSObjectCreateJSON=function(_12){ +CPLog.warn("CPJSObjectCreateJSON deprecated, use JSON.stringify() or CPString's objectFromJSON"); +return JSON.stringify(_12); +}; +CPJSObjectCreateWithJSON=function(_13){ +CPLog.warn("CPJSObjectCreateWithJSON deprecated, use JSON.parse() or CPString's JSONFromObject"); +return JSON.parse(_13); +}; +p;20;CPValueTransformer.jt;4788;@STATIC;1.0;i;10;CPObject.ji;14;CPDictionary.jt;4735; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPDictionary.j",YES); +var _1=objj_msgSend(CPDictionary,"dictionary"); +var _2=objj_allocateClassPair(CPObject,"CPValueTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("reverseTransformedValue:"),function(_4,_5,_6){ +with(_4){ +if(objj_msgSend(objj_msgSend(_4,"class"),"allowsReverseTransformation")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,(_4+" is not reversible.")); +} +return objj_msgSend(_4,"transformedValue:",_6); +} +}),new objj_method(sel_getUid("transformedValue:"),function(_7,_8,_9){ +with(_7){ +return nil; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_a,_b){ +with(_a){ +if(_a!==objj_msgSend(CPValueTransformer,"class")){ +return; +} +objj_msgSend(CPValueTransformer,"setValueTransformer:forName:",objj_msgSend(objj_msgSend(CPNegateBooleanTransformer,"alloc"),"init"),CPNegateBooleanTransformerName); +objj_msgSend(CPValueTransformer,"setValueTransformer:forName:",objj_msgSend(objj_msgSend(CPIsNilTransformer,"alloc"),"init"),CPIsNilTransformerName); +objj_msgSend(CPValueTransformer,"setValueTransformer:forName:",objj_msgSend(objj_msgSend(CPIsNotNilTransformer,"alloc"),"init"),CPIsNotNilTransformerName); +objj_msgSend(CPValueTransformer,"setValueTransformer:forName:",objj_msgSend(objj_msgSend(CPUnarchiveFromDataTransformer,"alloc"),"init"),CPUnarchiveFromDataTransformerName); +} +}),new objj_method(sel_getUid("setValueTransformer:forName:"),function(_c,_d,_e,_f){ +with(_c){ +objj_msgSend(_1,"setObject:forKey:",_e,_f); +} +}),new objj_method(sel_getUid("valueTransformerForName:"),function(_10,_11,_12){ +with(_10){ +return objj_msgSend(_1,"objectForKey:",_12); +} +}),new objj_method(sel_getUid("valueTransformerNames"),function(_13,_14){ +with(_13){ +return objj_msgSend(_1,"allKeys"); +} +}),new objj_method(sel_getUid("allowsReverseTransformation"),function(_15,_16){ +with(_15){ +return NO; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_17,_18){ +with(_17){ +return objj_msgSend(CPObject,"class"); +} +})]); +var _2=objj_allocateClassPair(CPValueTransformer,"CPNegateBooleanTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("reverseTransformedValue:"),function(_19,_1a,_1b){ +with(_19){ +return !objj_msgSend(_1b,"boolValue"); +} +}),new objj_method(sel_getUid("transformedValue:"),function(_1c,_1d,_1e){ +with(_1c){ +return !objj_msgSend(_1e,"boolValue"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("allowsReverseTransformation"),function(_1f,_20){ +with(_1f){ +return YES; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_21,_22){ +with(_21){ +return objj_msgSend(CPNumber,"class"); +} +})]); +var _2=objj_allocateClassPair(CPValueTransformer,"CPIsNilTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("transformedValue:"),function(_23,_24,_25){ +with(_23){ +return _25===nil||_25===undefined; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("allowsReverseTransformation"),function(_26,_27){ +with(_26){ +return NO; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_28,_29){ +with(_28){ +return objj_msgSend(CPNumber,"class"); +} +})]); +var _2=objj_allocateClassPair(CPValueTransformer,"CPIsNotNilTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("transformedValue:"),function(_2a,_2b,_2c){ +with(_2a){ +return _2c!==nil&&_2c!==undefined; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("allowsReverseTransformation"),function(_2d,_2e){ +with(_2d){ +return NO; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_2f,_30){ +with(_2f){ +return objj_msgSend(CPNumber,"class"); +} +})]); +var _2=objj_allocateClassPair(CPValueTransformer,"CPUnarchiveFromDataTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("reverseTransformedValue:"),function(_31,_32,_33){ +with(_31){ +return objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_33); +} +}),new objj_method(sel_getUid("transformedValue:"),function(_34,_35,_36){ +with(_34){ +return objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_36); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("allowsReverseTransformation"),function(_37,_38){ +with(_37){ +return YES; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_39,_3a){ +with(_39){ +return objj_msgSend(CPData,"class"); +} +})]); +CPNegateBooleanTransformerName="CPNegateBooleanTransformerName"; +CPIsNilTransformerName="CPIsNilTransformerName"; +CPIsNotNilTransformerName="CPIsNotNilTransformerName"; +CPUnarchiveFromDataTransformerName="CPUnarchiveFromDataTransformerName"; +p;17;CPWebDAVManager.jt;4315;@STATIC;1.0;t;4296; +var _1=function(_2,_3,_4){ +var _5=objj_msgSend(_4,"objectForKey:","resourcetype"); +if(_5===CPWebDAVManagerCollectionResourceType){ +objj_msgSend(_2,"setResourceValue:forKey:",YES,CPURLIsDirectoryKey); +objj_msgSend(_2,"setResourceValue:forKey:",NO,CPURLIsRegularFileKey); +}else{ +if(_5===CPWebDAVManagerNonCollectionResourceType){ +objj_msgSend(_2,"setResourceValue:forKey:",NO,CPURLIsDirectoryKey); +objj_msgSend(_2,"setResourceValue:forKey:",YES,CPURLIsRegularFileKey); +} +} +var _6=objj_msgSend(_4,"objectForKey:","displayname"); +if(_6!==nil){ +objj_msgSend(_2,"setResourceValue:forKey:",_6,CPURLNameKey); +objj_msgSend(_2,"setResourceValue:forKey:",_6,CPURLLocalizedNameKey); +} +}; +CPWebDAVManagerCollectionResourceType=1; +CPWebDAVManagerNonCollectionResourceType=0; +var _7=objj_allocateClassPair(CPObject,"CPWebDAVManager"),_8=_7.isa; +class_addIvars(_7,[new objj_ivar("_blocksForConnections")]); +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("init"),function(_9,_a){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("CPWebDAVManager").super_class},"init"); +if(_9){ +_blocksForConnections=objj_msgSend(CPDictionary,"dictionary"); +} +return _9; +} +}),new objj_method(sel_getUid("contentsOfDirectoryAtURL:includingPropertiesForKeys:options:block:"),function(_b,_c,_d,_e,_f,_10){ +with(_b){ +var _11=[],_12=objj_msgSend(_e,"count"); +while(_12--){ +_11.push(_13[_e[_12]]); +} +var _14=function(_15,_16){ +var _17=[],_18=nil,_19=objj_msgSend(_16,"keyEnumerator"); +while(_18=objj_msgSend(_19,"nextObject")){ +var URL=objj_msgSend(CPURL,"URLWithString:",_18),_11=objj_msgSend(_16,"objectForKey:",_18); +if(!objj_msgSend(objj_msgSend(URL,"absoluteString"),"isEqual:",objj_msgSend(_15,"absoluteString"))){ +_17.push(URL); +_1(URL,_e,_11); +} +} +return _17; +}; +if(!_10){ +return _14(_d,response); +} +objj_msgSend(_b,"PROPFIND:properties:depth:block:",_d,_11,1,function(_1a,_1b){ +_10(_1a,_14(_1a,_1b)); +}); +} +}),new objj_method(sel_getUid("PROPFIND:properties:depth:block:"),function(_1c,_1d,_1e,_1f,_20,_21){ +with(_1c){ +var _22=objj_msgSend(CPURLRequest,"requestWithURL:",_1e); +objj_msgSend(_22,"setHTTPMethod:","PROPFIND"); +objj_msgSend(_22,"setValue:forHTTPHeaderField:",_20,"Depth"); +var _23=[""],_24=0,_25=_1f.length; +for(;_24<_25;++_24){ +_23.push(""); +} +_23.push(""); +objj_msgSend(_22,"setHTTPBody:",_23.join("")); +if(!_21){ +return _26(objj_msgSend(objj_msgSend(CPURLConnection,"sendSynchronousRequest:returningResponse:",_22,nil),"rawString")); +}else{ +var _27=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",_22,_1c); +objj_msgSend(_blocksForConnections,"setObject:forKey:",_21,objj_msgSend(_27,"UID")); +} +} +}),new objj_method(sel_getUid("connection:didReceiveData:"),function(_28,_29,_2a,_2b){ +with(_28){ +var _2c=objj_msgSend(_blocksForConnections,"objectForKey:",objj_msgSend(_2a,"UID")); +_2c(objj_msgSend(_2a._request,"URL"),_26(_2b)); +} +})]); +var _13={}; +_13[CPURLNameKey]="displayname"; +_13[CPURLLocalizedNameKey]="displayname"; +_13[CPURLIsRegularFileKey]="resourcetype"; +_13[CPURLIsDirectoryKey]="resourcetype"; +var _2d=function(_2e){ +if(typeof window["ActiveXObject"]!=="undefined"){ +var _2f=new ActiveXObject("Microsoft.XMLDOM"); +_2f.async=false; +_2f.loadXML(_2e); +return _2f; +} +return new DOMParser().parseFromString(_2e,"text/xml"); +}; +var _26=function(_30){ +var _31=_2d(_30),_32=_31.getElementsByTagNameNS("*","response"),_33=0,_34=_32.length; +var _35=objj_msgSend(CPDictionary,"dictionary"); +for(;_33<_34;++_33){ +var _36=_32[_33],_37=_36.getElementsByTagNameNS("*","prop").item(0).childNodes,_38=0,_39=_37.length,_3a=objj_msgSend(CPDictionary,"dictionary"); +for(;_38<_39;++_38){ +var _3b=_37[_38]; +if(_3b.nodeType===8||_3b.nodeType===3){ +continue; +} +var _3c=_3b.nodeName,_3d=_3c.lastIndexOf(":"); +if(_3d>-1){ +_3c=_3c.substr(_3d+1); +} +if(_3c==="resourcetype"){ +objj_msgSend(_3a,"setObject:forKey:",_3b.firstChild?CPWebDAVManagerCollectionResourceType:CPWebDAVManagerNonCollectionResourceType,_3c); +}else{ +objj_msgSend(_3a,"setObject:forKey:",_3b.firstChild.nodeValue,_3c); +} +} +var _3e=_36.getElementsByTagNameNS("*","href").item(0); +objj_msgSend(_35,"setObject:forKey:",_3a,_3e.firstChild.nodeValue); +} +return _35; +}; +var _3f=function(_40,_41){ +}; +p;12;Foundation.jt;2685;@STATIC;1.0;i;9;CPArray.ji;10;CPBundle.ji;16;CPCharacterSet.ji;9;CPCoder.ji;23;CPComparisonPredicate.ji;21;CPCompoundPredicate.ji;8;CPData.ji;8;CPDate.ji;14;CPDictionary.ji;14;CPEnumerator.ji;13;CPException.ji;13;CPFormatter.ji;14;CPExpression.ji;12;CPIndexSet.ji;14;CPInvocation.ji;19;CPJSONPConnection.ji;17;CPKeyedArchiver.ji;19;CPKeyedUnarchiver.ji;18;CPKeyValueCoding.ji;21;CPKeyValueObserving.ji;16;CPNotification.ji;22;CPNotificationCenter.ji;8;CPNull.ji;10;CPNumber.ji;10;CPObject.ji;15;CPObjJRuntime.ji;13;CPOperation.ji;18;CPOperationQueue.ji;13;CPPredicate.ji;29;CPPropertyListSerialization.ji;9;CPRange.ji;11;CPRunLoop.ji;11;CPScanner.ji;7;CPSet.ji;18;CPSortDescriptor.ji;10;CPString.ji;9;CPTimer.ji;15;CPUndoManager.ji;7;CPURL.ji;17;CPURLConnection.ji;14;CPURLRequest.ji;15;CPURLResponse.ji;22;CPUserSessionManager.ji;9;CPValue.ji;20;CPValueTransformer.jt;1811; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPBundle.j",YES); +objj_executeFile("CPCharacterSet.j",YES); +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPComparisonPredicate.j",YES); +objj_executeFile("CPCompoundPredicate.j",YES); +objj_executeFile("CPData.j",YES); +objj_executeFile("CPDate.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPFormatter.j",YES); +objj_executeFile("CPExpression.j",YES); +objj_executeFile("CPIndexSet.j",YES); +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPJSONPConnection.j",YES); +objj_executeFile("CPKeyedArchiver.j",YES); +objj_executeFile("CPKeyedUnarchiver.j",YES); +objj_executeFile("CPKeyValueCoding.j",YES); +objj_executeFile("CPKeyValueObserving.j",YES); +objj_executeFile("CPNotification.j",YES); +objj_executeFile("CPNotificationCenter.j",YES); +objj_executeFile("CPNull.j",YES); +objj_executeFile("CPNumber.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPObjJRuntime.j",YES); +objj_executeFile("CPOperation.j",YES); +objj_executeFile("CPOperationQueue.j",YES); +objj_executeFile("CPPredicate.j",YES); +objj_executeFile("CPPropertyListSerialization.j",YES); +objj_executeFile("CPRange.j",YES); +objj_executeFile("CPRunLoop.j",YES); +objj_executeFile("CPScanner.j",YES); +objj_executeFile("CPSet.j",YES); +objj_executeFile("CPSortDescriptor.j",YES); +objj_executeFile("CPString.j",YES); +objj_executeFile("CPTimer.j",YES); +objj_executeFile("CPUndoManager.j",YES); +objj_executeFile("CPURL.j",YES); +objj_executeFile("CPURLConnection.j",YES); +objj_executeFile("CPURLRequest.j",YES); +objj_executeFile("CPURLResponse.j",YES); +objj_executeFile("CPUserSessionManager.j",YES); +objj_executeFile("CPValue.j",YES); +objj_executeFile("CPValueTransformer.j",YES); +p;23;CPComparisonPredicate.jt;12931;@STATIC;1.0;i;9;CPArray.ji;8;CPNull.ji;10;CPString.ji;14;CPEnumerator.ji;13;CPPredicate.ji;14;CPExpression.ji;23;CPExpression_operator.jt;12787; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPNull.j",YES); +objj_executeFile("CPString.j",YES); +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPPredicate.j",YES); +objj_executeFile("CPExpression.j",YES); +objj_executeFile("CPExpression_operator.j",YES); +CPDirectPredicateModifier=0; +CPAllPredicateModifier=1; +CPAnyPredicateModifier=2; +CPCaseInsensitivePredicateOption=1; +CPDiacriticInsensitivePredicateOption=2; +CPDiacriticInsensitiveSearch=128; +CPLessThanPredicateOperatorType=0; +CPLessThanOrEqualToPredicateOperatorType=1; +CPGreaterThanPredicateOperatorType=2; +CPGreaterThanOrEqualToPredicateOperatorType=3; +CPEqualToPredicateOperatorType=4; +CPNotEqualToPredicateOperatorType=5; +CPMatchesPredicateOperatorType=6; +CPLikePredicateOperatorType=7; +CPBeginsWithPredicateOperatorType=8; +CPEndsWithPredicateOperatorType=9; +CPInPredicateOperatorType=10; +CPCustomSelectorPredicateOperatorType=11; +CPContainsPredicateOperatorType=99; +CPBetweenPredicateOperatorType=100; +var _1; +var _2; +var _3=objj_allocateClassPair(CPPredicate,"CPComparisonPredicate"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_left"),new objj_ivar("_right"),new objj_ivar("_modifier"),new objj_ivar("_type"),new objj_ivar("_options"),new objj_ivar("_customSelector")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("initWithLeftExpression:rightExpression:customSelector:"),function(_5,_6,_7,_8,_9){ +with(_5){ +_left=_7; +_right=_8; +_modifier=CPDirectPredicateModifier; +_type=CPCustomSelectorPredicateOperatorType; +_options=0; +_customSelector=_9; +return _5; +} +}),new objj_method(sel_getUid("initWithLeftExpression:rightExpression:modifier:type:options:"),function(_a,_b,_c,_d,_e,_f,_10){ +with(_a){ +_left=_c; +_right=_d; +_modifier=_e; +_type=_f; +_options=(_f!=CPMatchesPredicateOperatorType&&_f!=CPLikePredicateOperatorType&&_f!=CPBeginsWithPredicateOperatorType&&_f!=CPEndsWithPredicateOperatorType&&_f!=CPInPredicateOperatorType&&_f!=CPContainsPredicateOperatorType)?0:_10; +_customSelector=NULL; +return _a; +} +}),new objj_method(sel_getUid("comparisonPredicateModifier"),function(_11,_12){ +with(_11){ +return _modifier; +} +}),new objj_method(sel_getUid("customSelector"),function(_13,_14){ +with(_13){ +return _customSelector; +} +}),new objj_method(sel_getUid("leftExpression"),function(_15,_16){ +with(_15){ +return _left; +} +}),new objj_method(sel_getUid("options"),function(_17,_18){ +with(_17){ +return _options; +} +}),new objj_method(sel_getUid("predicateOperatorType"),function(_19,_1a){ +with(_19){ +return _type; +} +}),new objj_method(sel_getUid("rightExpression"),function(_1b,_1c){ +with(_1b){ +return _right; +} +}),new objj_method(sel_getUid("predicateFormat"),function(_1d,_1e){ +with(_1d){ +var _1f; +switch(_modifier){ +case CPDirectPredicateModifier: +_1f=""; +break; +case CPAllPredicateModifier: +_1f="ALL "; +break; +case CPAnyPredicateModifier: +_1f="ANY "; +break; +default: +_1f=""; +break; +} +var _20; +switch(_options){ +case CPCaseInsensitivePredicateOption: +_20="[c]"; +break; +case CPDiacriticInsensitivePredicateOption: +_20="[d]"; +break; +case CPCaseInsensitivePredicateOption|CPDiacriticInsensitivePredicateOption: +_20="[cd]"; +break; +default: +_20=""; +break; +} +var _21; +switch(_type){ +case CPLessThanPredicateOperatorType: +_21="<"; +break; +case CPLessThanOrEqualToPredicateOperatorType: +_21="<="; +break; +case CPGreaterThanPredicateOperatorType: +_21=">"; +break; +case CPGreaterThanOrEqualToPredicateOperatorType: +_21=">="; +break; +case CPEqualToPredicateOperatorType: +_21="=="; +break; +case CPNotEqualToPredicateOperatorType: +_21="!="; +break; +case CPMatchesPredicateOperatorType: +_21="MATCHES"; +break; +case CPLikePredicateOperatorType: +_21="LIKE"; +break; +case CPBeginsWithPredicateOperatorType: +_21="BEGINSWITH"; +break; +case CPEndsWithPredicateOperatorType: +_21="ENDSWITH"; +break; +case CPInPredicateOperatorType: +_21="IN"; +break; +case CPContainsPredicateOperatorType: +_21="CONTAINS"; +break; +case CPCustomSelectorPredicateOperatorType: +_21=CPStringFromSelector(_customSelector); +break; +} +return objj_msgSend(CPString,"stringWithFormat:","%s%s %s%s %s",_1f,objj_msgSend(_left,"description"),_21,_20,objj_msgSend(_right,"description")); +} +}),new objj_method(sel_getUid("predicateWithSubstitutionVariables:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_left,"_expressionWithSubstitutionVariables:",_24),_26=objj_msgSend(_right,"_expressionWithSubstitutionVariables:",_24); +if(_type!=CPCustomSelectorPredicateOperatorType){ +return objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:modifier:type:options:",_25,_26,_modifier,_type,_options); +}else{ +return objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:customSelector:",_25,_26,_customSelector); +} +} +}),new objj_method(sel_getUid("_evaluateValue:rightValue:"),function(_27,_28,lhs,rhs){ +with(_27){ +var _29=(lhs==nil||objj_msgSend(lhs,"isEqual:",objj_msgSend(CPNull,"null"))),_2a=(rhs==nil||objj_msgSend(rhs,"isEqual:",objj_msgSend(CPNull,"null"))); +if((_29||_2a)&&_type!=CPCustomSelectorPredicateOperatorType){ +return (_29==_2a&&(_type==CPEqualToPredicateOperatorType||_type==CPLessThanOrEqualToPredicateOperatorType||_type==CPGreaterThanOrEqualToPredicateOperatorType)); +} +var _2b=0; +switch(_type){ +case CPLessThanPredicateOperatorType: +return (objj_msgSend(lhs,"compare:",rhs)==CPOrderedAscending); +case CPLessThanOrEqualToPredicateOperatorType: +return (objj_msgSend(lhs,"compare:",rhs)!=CPOrderedDescending); +case CPGreaterThanPredicateOperatorType: +return (objj_msgSend(lhs,"compare:",rhs)==CPOrderedDescending); +case CPGreaterThanOrEqualToPredicateOperatorType: +return (objj_msgSend(lhs,"compare:",rhs)!=CPOrderedAscending); +case CPEqualToPredicateOperatorType: +return objj_msgSend(lhs,"isEqual:",rhs); +case CPNotEqualToPredicateOperatorType: +return (!objj_msgSend(lhs,"isEqual:",rhs)); +case CPMatchesPredicateOperatorType: +var _2c=(_options&CPCaseInsensitivePredicateOption)?"gi":"g"; +if(_options&CPDiacriticInsensitivePredicateOption){ +lhs=lhs.stripDiacritics(); +rhs=rhs.stripDiacritics(); +} +return (new RegExp(rhs,_2c)).test(lhs); +case CPLikePredicateOperatorType: +if(_options&CPDiacriticInsensitivePredicateOption){ +lhs=lhs.stripDiacritics(); +rhs=rhs.stripDiacritics(); +} +var _2c=(_options&CPCaseInsensitivePredicateOption)?"gi":"g"; +var reg=new RegExp(rhs.escapeForRegExp(),_2c); +return reg.test(lhs); +case CPBeginsWithPredicateOperatorType: +var _2d=CPMakeRange(0,objj_msgSend(rhs,"length")); +if(_options&CPCaseInsensitivePredicateOption){ +_2b|=CPCaseInsensitiveSearch; +} +if(_options&CPDiacriticInsensitivePredicateOption){ +_2b|=CPDiacriticInsensitiveSearch; +} +return (objj_msgSend(lhs,"compare:options:range:",rhs,_2b,_2d)==CPOrderedSame); +case CPEndsWithPredicateOperatorType: +var _2d=CPMakeRange(objj_msgSend(lhs,"length")-objj_msgSend(rhs,"length"),objj_msgSend(rhs,"length")); +if(_options&CPCaseInsensitivePredicateOption){ +_2b|=CPCaseInsensitiveSearch; +} +if(_options&CPDiacriticInsensitivePredicateOption){ +_2b|=CPDiacriticInsensitiveSearch; +} +return (objj_msgSend(lhs,"compare:options:range:",rhs,_2b,_2d)==CPOrderedSame); +case CPInPredicateOperatorType: +if(!objj_msgSend(rhs,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +if(!objj_msgSend(rhs,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right hand side for an IN operator must be a collection"); +} +var e=objj_msgSend(rhs,"objectEnumerator"),_2e; +while(_2e=objj_msgSend(e,"nextObject")){ +if(objj_msgSend(_2e,"isEqual:",lhs)){ +return YES; +} +} +return NO; +} +if(_options&CPCaseInsensitivePredicateOption){ +_2b|=CPCaseInsensitiveSearch; +} +if(_options&CPDiacriticInsensitivePredicateOption){ +_2b|=CPDiacriticInsensitiveSearch; +} +return (objj_msgSend(rhs,"rangeOfString:options:",lhs,_2b).location!=CPNotFound); +case CPCustomSelectorPredicateOperatorType: +return objj_msgSend(lhs,"performSelector:withObject:",_customSelector,rhs); +case CPContainsPredicateOperatorType: +if(!objj_msgSend(lhs,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +if(!objj_msgSend(lhs,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left hand side for a CONTAINS operator must be a collection or a string"); +} +var e=objj_msgSend(lhs,"objectEnumerator"),_2e; +while(_2e=objj_msgSend(e,"nextObject")){ +if(objj_msgSend(_2e,"isEqual:",rhs)){ +return YES; +} +} +return NO; +} +if(_options&CPCaseInsensitivePredicateOption){ +_2b|=CPCaseInsensitiveSearch; +} +if(_options&CPDiacriticInsensitivePredicateOption){ +_2b|=CPDiacriticInsensitiveSearch; +} +return (objj_msgSend(lhs,"rangeOfString:options:",rhs,_2b).location!=CPNotFound); +case CPBetweenPredicateOperatorType: +if(objj_msgSend(lhs,"count")<2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right hand side for a BETWEEN operator must contain 2 objects"); +} +var _2f=objj_msgSend(rhs,"objectAtIndex:",0),_30=objj_msgSend(rhs,"objectAtIndex:",1); +return (objj_msgSend(lhs,"compare:",_2f)==CPOrderedDescending&&objj_msgSend(lhs,"compare:",_30)==CPOrderedAscending); +default: +return NO; +} +} +}),new objj_method(sel_getUid("evaluateWithObject:"),function(_31,_32,_33){ +with(_31){ +return objj_msgSend(_31,"evaluateWithObject:substitutionVariables:",_33,nil); +} +}),new objj_method(sel_getUid("evaluateWithObject:substitutionVariables:"),function(_34,_35,_36,_37){ +with(_34){ +var _38=_left,_39=_right; +if(_37!=nil){ +_38=objj_msgSend(_38,"_expressionWithSubstitutionVariables:",_37); +_39=objj_msgSend(_39,"_expressionWithSubstitutionVariables:",_37); +} +var _3a=objj_msgSend(_38,"expressionValueWithObject:context:",_36,nil),_3b=objj_msgSend(_39,"expressionValueWithObject:context:",_36,nil); +if(_modifier==CPDirectPredicateModifier){ +return objj_msgSend(_34,"_evaluateValue:rightValue:",_3a,_3b); +}else{ +if(!objj_msgSend(_3a,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left hand side for an ALL or ANY operator must be either a CPArray or a CPSet"); +} +var e=objj_msgSend(_3a,"objectEnumerator"),_3c=(_modifier==CPAllPredicateModifier),_3d; +while(_3d=objj_msgSend(e,"nextObject")){ +var _3e=objj_msgSend(_34,"_evaluateValue:rightValue:",_3d,_3b); +if(_3e!=_3c){ +return _3e; +} +} +return _3c; +} +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("predicateWithLeftExpression:rightExpression:customSelector:"),function(_3f,_40,_41,_42,_43){ +with(_3f){ +return objj_msgSend(objj_msgSend(_3f,"alloc"),"initWithLeftExpression:rightExpression:customSelector:",_41,_42,_43); +} +}),new objj_method(sel_getUid("predicateWithLeftExpression:rightExpression:modifier:type:options:"),function(_44,_45,_46,_47,_48,_49,_4a){ +with(_44){ +return objj_msgSend(objj_msgSend(_44,"alloc"),"initWithLeftExpression:rightExpression:modifier:type:options:",_46,_47,_48,_49,_4a); +} +})]); +var _3=objj_getClass("CPComparisonPredicate"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPComparisonPredicate\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_4b,_4c,_4d){ +with(_4b){ +_4b=objj_msgSendSuper({receiver:_4b,super_class:objj_getClass("CPComparisonPredicate").super_class},"init"); +if(_4b!=nil){ +_left=objj_msgSend(_4d,"decodeObjectForKey:","CPComparisonPredicateLeftExpression"); +_right=objj_msgSend(_4d,"decodeObjectForKey:","CPComparisonPredicateRightExpression"); +_modifier=objj_msgSend(_4d,"decodeIntForKey:","CPComparisonPredicateModifier"); +_type=objj_msgSend(_4d,"decodeIntForKey:","CPComparisonPredicateType"); +_options=objj_msgSend(_4d,"decodeIntForKey:","CPComparisonPredicateOptions"); +_customSelector=objj_msgSend(_4d,"decodeObjectForKey:","CPComparisonPredicateCustomSelector"); +} +return _4b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_4e,_4f,_50){ +with(_4e){ +objj_msgSend(_50,"encodeObject:forKey:",_left,"CPComparisonPredicateLeftExpression"); +objj_msgSend(_50,"encodeObject:forKey:",_right,"CPComparisonPredicateRightExpression"); +objj_msgSend(_50,"encodeInt:forKey:",_modifier,"CPComparisonPredicateModifier"); +objj_msgSend(_50,"encodeInt:forKey:",_type,"CPComparisonPredicateType"); +objj_msgSend(_50,"encodeInt:forKey:",_options,"CPComparisonPredicateOptions"); +objj_msgSend(_50,"encodeObject:forKey:",_customSelector,"CPComparisonPredicateCustomSelector"); +} +})]); +var _51=["*","?","(",")","{","}",".","+","|","/","$","^"]; +var _52=[".*",".?","\\(","\\)","\\{","\\}","\\.","\\+","\\|","\\/","\\$","\\^"]; +String.prototype.escapeForRegExp=function(){ +var _53=false; +for(var i=0;i<_51.length;++i){ +if(this.indexOf(_51[i])!==-1){ +_53=true; +break; +} +} +if(!_53){ +return this; +} +var _54="",_55; +for(var i=0;i1&&objj_msgSend(_16,"compoundPredicateType")!=_type){ +_17=objj_msgSend(CPString,"stringWithFormat:","(%s)",_17); +} +if(_17!=nil){ +objj_msgSend(_14,"addObject:",_17); +} +} +switch(_type){ +case CPNotPredicateType: +_13+="NOT %s"+objj_msgSend(_14,"objectAtIndex:",0); +break; +case CPAndPredicateType: +_13+=objj_msgSend(_14,"objectAtIndex:",0); +var _15=objj_msgSend(_14,"count"); +for(var j=1;j<_15;j++){ +_13+=" AND "+objj_msgSend(_14,"objectAtIndex:",j); +} +break; +case CPOrPredicateType: +_13+=objj_msgSend(_14,"objectAtIndex:",0); +var _15=objj_msgSend(_14,"count"); +for(var j=1;j<_15;j++){ +_13+=" OR "+objj_msgSend(_14,"objectAtIndex:",j); +} +break; +} +return _13; +} +}),new objj_method(sel_getUid("evaluateWithObject:"),function(_18,_19,_1a){ +with(_18){ +return objj_msgSend(_18,"evaluateWithObject:substitutionVariables:",_1a,nil); +} +}),new objj_method(sel_getUid("evaluateWithObject:substitutionVariables:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +var _1f=NO,_20=objj_msgSend(_predicates,"count"),i; +if(_20==0){ +return YES; +} +for(i=0;i<_20;i++){ +var _21=objj_msgSend(_predicates,"objectAtIndex:",i); +switch(_type){ +case CPNotPredicateType: +return !objj_msgSend(_21,"evaluateWithObject:substitutionVariables:",_1d,_1e); +case CPAndPredicateType: +if(i==0){ +_1f=objj_msgSend(_21,"evaluateWithObject:substitutionVariables:",_1d,_1e); +}else{ +_1f=_1f&&objj_msgSend(_21,"evaluateWithObject:substitutionVariables:",_1d,_1e); +} +if(!_1f){ +return NO; +} +break; +case CPOrPredicateType: +if(objj_msgSend(_21,"evaluateWithObject:substitutionVariables:",_1d,_1e)){ +return YES; +} +break; +} +} +return _1f; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("notPredicateWithSubpredicate:"),function(_22,_23,_24){ +with(_22){ +return objj_msgSend(objj_msgSend(_22,"alloc"),"initWithType:subpredicates:",CPNotPredicateType,objj_msgSend(CPArray,"arrayWithObject:",_24)); +} +}),new objj_method(sel_getUid("andPredicateWithSubpredicates:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(objj_msgSend(_25,"alloc"),"initWithType:subpredicates:",CPAndPredicateType,_27); +} +}),new objj_method(sel_getUid("orPredicateWithSubpredicates:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(objj_msgSend(_28,"alloc"),"initWithType:subpredicates:",CPOrPredicateType,_2a); +} +})]); +var _2=objj_getClass("CPCompoundPredicate"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPCompoundPredicate\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_2b,_2c,_2d){ +with(_2b){ +_2b=objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("CPCompoundPredicate").super_class},"init"); +if(_2b!=nil){ +_predicates=objj_msgSend(_2d,"decodeObjectForKey:","CPCompoundPredicateSubpredicates"); +_type=objj_msgSend(_2d,"decodeIntForKey:","CPCompoundPredicateType"); +} +return _2b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSend(_30,"encodeObject:forKey:",_predicates,"CPCompoundPredicateSubpredicates"); +objj_msgSend(_30,"encodeInt:forKey:",_type,"CPCompoundPredicateType"); +} +})]); +p;14;CPExpression.jt;5093;@STATIC;1.0;I;21;Foundation/CPString.jI;20;Foundation/CPArray.jI;29;Foundation/CPKeyValueCoding.jI;25;Foundation/CPDictionary.jI;20;Foundation/CPCoder.ji;23;CPExpression_constant.ji;19;CPExpression_self.ji;23;CPExpression_variable.ji;22;CPExpression_keypath.ji;23;CPExpression_function.ji;24;CPExpression_aggregate.ji;23;CPExpression_unionset.ji;27;CPExpression_intersectset.ji;23;CPExpression_minusset.jt;4682; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPKeyValueCoding.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPCoder.j",NO); +CPConstantValueExpressionType=0; +CPEvaluatedObjectExpressionType=1; +CPVariableExpressionType=2; +CPKeyPathExpressionType=3; +CPFunctionExpressionType=4; +CPAggregateExpressionType=5; +CPSubqueryExpressionType=6; +CPUnionSetExpressionType=7; +CPIntersectSetExpressionType=8; +CPMinusSetExpressionType=9; +var _1=objj_allocateClassPair(CPObject,"CPExpression"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_type")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithExpressionType:"),function(_3,_4,_5){ +with(_3){ +_type=_5; +return _3; +} +}),new objj_method(sel_getUid("expressionType"),function(_6,_7){ +with(_6){ +return _type; +} +}),new objj_method(sel_getUid("constantValue"),function(_8,_9){ +with(_8){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPConstantValueExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("variable"),function(_a,_b){ +with(_a){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPVariableExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("keyPath"),function(_c,_d){ +with(_c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPKeyPathExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("function"),function(_e,_f){ +with(_e){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPFunctionExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("arguments"),function(_10,_11){ +with(_10){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPFunctionExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("collection"),function(_12,_13){ +with(_12){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPAggregateExpressionType"); +return nil; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("expressionForConstantValue:"),function(_14,_15,_16){ +with(_14){ +return objj_msgSend(objj_msgSend(CPExpression_constant,"alloc"),"initWithValue:",_16); +} +}),new objj_method(sel_getUid("expressionForEvaluatedObject"),function(_17,_18){ +with(_17){ +return objj_msgSend(objj_msgSend(CPExpression_self,"alloc"),"init"); +} +}),new objj_method(sel_getUid("expressionForVariable:"),function(_19,_1a,_1b){ +with(_19){ +return objj_msgSend(objj_msgSend(CPExpression_variable,"alloc"),"initWithVariable:",_1b); +} +}),new objj_method(sel_getUid("expressionForKeyPath:"),function(_1c,_1d,_1e){ +with(_1c){ +return objj_msgSend(objj_msgSend(CPExpression_keypath,"alloc"),"initWithKeyPath:",_1e); +} +}),new objj_method(sel_getUid("expressionForAggregate:"),function(_1f,_20,_21){ +with(_1f){ +return objj_msgSend(objj_msgSend(CPExpression_aggregate,"alloc"),"initWithAggregate:",_21); +} +}),new objj_method(sel_getUid("expressionForUnionSet:with:"),function(_22,_23,_24,_25){ +with(_22){ +return objj_msgSend(objj_msgSend(CPExpression_unionset,"alloc"),"initWithLeft:right:",_24,_25); +} +}),new objj_method(sel_getUid("expressionForIntersectSet:with:"),function(_26,_27,_28,_29){ +with(_26){ +return objj_msgSend(objj_msgSend(CPExpression_intersectset,"alloc"),"initWithLeft:right:",_28,_29); +} +}),new objj_method(sel_getUid("expressionForMinusSet:with:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +return objj_msgSend(objj_msgSend(CPExpression_minusset,"alloc"),"initWithLeft:right:",_2c,_2d); +} +}),new objj_method(sel_getUid("expressionForFunction:arguments:"),function(_2e,_2f,_30,_31){ +with(_2e){ +return objj_msgSend(objj_msgSend(CPExpression_function,"alloc"),"initWithSelector:arguments:",CPSelectorFromString(_30),_31); +} +}),new objj_method(sel_getUid("expressionForFunction:selectorName:arguments:"),function(_32,_33,_34,_35,_36){ +with(_32){ +return objj_msgSend(objj_msgSend(CPExpression_function,"alloc"),"initWithTarget:selector:arguments:",_34,CPSelectorFromString(_35),_36); +} +}),new objj_method(sel_getUid("expressionForSubquery:usingIteratorVariable:predicate:"),function(_37,_38,_39,_3a,_3b){ +with(_37){ +return nil; +} +})]); +objj_executeFile("CPExpression_constant.j",YES); +objj_executeFile("CPExpression_self.j",YES); +objj_executeFile("CPExpression_variable.j",YES); +objj_executeFile("CPExpression_keypath.j",YES); +objj_executeFile("CPExpression_function.j",YES); +objj_executeFile("CPExpression_aggregate.j",YES); +objj_executeFile("CPExpression_unionset.j",YES); +objj_executeFile("CPExpression_intersectset.j",YES); +objj_executeFile("CPExpression_minusset.j",YES); +p;24;CPExpression_aggregate.jt;3086;@STATIC;1.0;i;14;CPExpression.jI;20;Foundation/CPArray.jI;21;Foundation/CPString.jt;2997; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_aggregate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_aggregate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithAggregate:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_aggregate").super_class},"initWithExpressionType:",CPAggregateExpressionType); +_aggregate=_5; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(_8,"decodeObjectForKey:","CPExpressionAggregate"); +return objj_msgSend(_6,"initWithAggregate:",_9); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_c,"encodeObject:forKey:",_aggregate,"CPExpressionAggregate"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_d,_e,_f){ +with(_d){ +if(_d==_f){ +return YES; +} +if(_f.isa!=_d.isa||objj_msgSend(_f,"expressionType")!=objj_msgSend(_d,"expressionType")||!objj_msgSend(objj_msgSend(_f,"collection"),"isEqual:",objj_msgSend(_d,"collection"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("collection"),function(_10,_11){ +with(_10){ +return _aggregate; +} +}),new objj_method(sel_getUid("rightExpression"),function(_12,_13){ +with(_12){ +if(objj_msgSend(_aggregate,"count")>0){ +return objj_msgSend(_aggregate,"lastObject"); +} +return nil; +} +}),new objj_method(sel_getUid("leftExpression"),function(_14,_15){ +with(_14){ +if(objj_msgSend(_aggregate,"count")>0){ +return objj_msgSend(_aggregate,"objectAtIndex:",0); +} +return nil; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_16,_17,_18,_19){ +with(_16){ +var _1a=objj_msgSend(CPArray,"array"),_1b=objj_msgSend(_aggregate,"objectEnumerator"),exp; +while(exp=objj_msgSend(_1b,"nextObject")){ +var _1c=objj_msgSend(exp,"expressionValueWithObject:context:",_18,_19); +if(_1c!=nil){ +objj_msgSend(_1a,"addObject:",_1c); +} +} +return _1a; +} +}),new objj_method(sel_getUid("description"),function(_1d,_1e){ +with(_1d){ +var i,_1f=objj_msgSend(_aggregate,"count"),_20="{"; +for(i=0;i<_1f;i++){ +_20=_20+objj_msgSend(CPString,"stringWithFormat:","%s%s",objj_msgSend(objj_msgSend(_aggregate,"objectAtIndex:",i),"description"),(i+1<_1f)?", ":""); +} +_20=_20+"}"; +return _20; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_21,_22,_23){ +with(_21){ +var _24=objj_msgSend(CPArray,"array"),_25=objj_msgSend(_aggregate,"count"),i; +for(i=0;i<_25;i++){ +objj_msgSend(_24,"addObject:",objj_msgSend(objj_msgSend(_aggregate,"objectAtIndex:",i),"_expressionWithSubstitutionVariables:",_23)); +} +return objj_msgSend(CPExpression,"expressionForAggregate:",_24); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("expressionForAggregate:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"alloc"),"initWithAggregate:",_28); +} +})]); +p;25;CPExpression_assignment.jt;2785;@STATIC;1.0;i;14;CPExpression.ji;23;CPExpression_variable.jI;21;Foundation/CPString.jt;2693; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("CPExpression_variable.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_assignment"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_assignmentVariable"),new objj_ivar("_subexpression")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithAssignmentVariable:expression:"),function(_3,_4,_5,_6){ +with(_3){ +_assignmentVariable=objj_msgSend(CPExpression,"expressionForVariable:",_5); +_subexpression=_6; +return _3; +} +}),new objj_method(sel_getUid("initWithAssignmentExpression:expression:"),function(_7,_8,_9,_a){ +with(_7){ +_assignmentVariable=_9; +_subexpression=_a; +return _7; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +var _e=objj_msgSend(_d,"decodeObjectForKey:","CPExpressionAssignmentVariable"); +var _f=objj_msgSend(_d,"decodeObjectForKey:","CPExpressionAssignmentExpression"); +return objj_msgSend(_b,"initWithAssignmentVariable:expression:",_e,_f); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_10,_11,_12){ +with(_10){ +objj_msgSend(_12,"encodeObject:forKey:",_assignmentVariable,"CPExpressionAssignmentVariable"); +objj_msgSend(_12,"encodeObject:forKey:",_subexpression,"CPExpressionAssignmentExpression"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_13,_14,_15){ +with(_13){ +if(_13==_15){ +return YES; +} +if(_15.isa!=_13.isa||objj_msgSend(_15,"expressionType")!=objj_msgSend(_13,"expressionType")||!objj_msgSend(objj_msgSend(_15,"subexpression"),"isEqual:",objj_msgSend(_13,"subexpression"))||!objj_msgSend(objj_msgSend(_15,"variable"),"isEqualToString:",objj_msgSend(_13,"variable"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("assignmentVariable"),function(_16,_17){ +with(_16){ +return _assignmentVariable; +} +}),new objj_method(sel_getUid("subexpression"),function(_18,_19){ +with(_18){ +return _subexpression; +} +}),new objj_method(sel_getUid("variable"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_assignmentVariable,"variable"); +} +}),new objj_method(sel_getUid("description"),function(_1c,_1d){ +with(_1c){ +var _1e=objj_msgSend(_expression,"description"); +if(objj_msgSend(_subexpression,"isKindOfClass:",objj_msgSend(CPExpression_operator,"class"))){ +_1e=objj_msgSend(CPString,"stringWithFormat:","(%@)",_1e); +} +return objj_msgSend(CPString,"stringWithFormat:","%@ := %@",objj_msgSend(_1c,"variable"),_1e); +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_1f,_20,_21,_22){ +with(_1f){ +return nil; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_23,_24,_25){ +with(_23){ +return nil; +} +})]); +p;23;CPExpression_constant.jt;1814;@STATIC;1.0;i;14;CPExpression.jI;25;Foundation/CPDictionary.jt;1746; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPDictionary.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_constant"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_value")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithValue:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_constant").super_class},"initWithExpressionType:",CPConstantValueExpressionType); +_value=_5; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(_8,"decodeObjectForKey:","CPExpressionConstantValue"); +return objj_msgSend(_6,"initWithValue:",_9); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_c,"encodeObject:forKey:",_value,"CPExpressionConstantValue"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_d,_e,_f){ +with(_d){ +if(_d==_f){ +return YES; +} +if(_f.isa!=_d.isa||objj_msgSend(_f,"expressionType")!=objj_msgSend(_d,"expressionType")||!objj_msgSend(objj_msgSend(_f,"constantValue"),"isEqual:",objj_msgSend(_d,"constantValue"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("constantValue"),function(_10,_11){ +with(_10){ +return _value; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +return _value; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_16,_17,_18){ +with(_16){ +return _16; +} +}),new objj_method(sel_getUid("description"),function(_19,_1a){ +with(_19){ +if(objj_msgSend(_value,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +return "\""+_value+"\""; +} +return objj_msgSend(_value,"description"); +} +})]); +p;23;CPExpression_function.jt;11558;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jt;11438; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_function"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_operand"),new objj_ivar("_selector"),new objj_ivar("_arguments"),new objj_ivar("_argc")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithSelector:arguments:"),function(_3,_4,_5,_6){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_function").super_class},"initWithExpressionType:",CPFunctionExpressionType); +if(!objj_msgSend(_3,"respondsToSelector:",_5)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unknown function implementation: "+_5); +} +_selector=_5; +_operand=nil; +_arguments=_6; +_argc=objj_msgSend(_6,"count"); +return _3; +} +}),new objj_method(sel_getUid("initWithTarget:selector:arguments:"),function(_7,_8,_9,_a,_b){ +with(_7){ +objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPExpression_function").super_class},"initWithExpressionType:",CPFunctionExpressionType); +var _c=objj_msgSend(_9,"expressionValueWithObject:context:",object,context); +if(!objj_msgSend(_c,"respondsToSelector:",_a)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unknown function implementation: "+_a); +} +_selector=_a; +_operand=_9; +_arguments=_b; +_argc=objj_msgSend(_b,"count"); +return _7; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_d,_e,_f){ +with(_d){ +var _10=CPSelectorFromString(objj_msgSend(_f,"decodeObjectForKey:","CPExpressionFunctionName")); +var _11=objj_msgSend(_f,"decodeObjectForKey:","CPExpressionFunctionArguments"); +return objj_msgSend(_d,"initWithSelector:arguments:",_10,_11); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_14,"encodeObject:forKey:",objj_msgSend(_12,"_function"),"CPExpressionFunctionName"); +objj_msgSend(_14,"encodeObject:forKey:",_arguments,"CPExpressionArguments"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_15,_16,_17){ +with(_15){ +if(_15==_17){ +return YES; +} +if(_17.isa!=_15.isa||objj_msgSend(_17,"expressionType")!=objj_msgSend(_15,"expressionType")||!objj_msgSend(objj_msgSend(_17,"_function"),"isEqualToString:",objj_msgSend(_15,"_function"))||!objj_msgSend(objj_msgSend(_17,"operand"),"isEqual:",objj_msgSend(_15,"operand"))||!objj_msgSend(objj_msgSend(_17,"arguments"),"isEqualToArray:",objj_msgSend(_15,"arguments"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("_function"),function(_18,_19){ +with(_18){ +return CPStringFromSelector(_selector); +} +}),new objj_method(sel_getUid("function"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_1a,"_function"); +} +}),new objj_method(sel_getUid("arguments"),function(_1c,_1d){ +with(_1c){ +return _arguments; +} +}),new objj_method(sel_getUid("operand"),function(_1e,_1f){ +with(_1e){ +return _operand; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_20,_21,_22,_23){ +with(_20){ +var _24=objj_msgSend(CPArray,"array"),i; +for(i=0;i<_argc;i++){ +var arg=objj_msgSend(objj_msgSend(_arguments,"objectAtIndex:",i),"expressionValueWithObject:context:",_22,_23); +if(arg!=nil){ +objj_msgSend(_24,"addObject:",arg); +} +} +var _25=(_operand==nil)?_20:objj_msgSend(_operand,"expressionValueWithObject:context:",_22,_23); +return objj_msgSend(_25,"performSelector:withObject:",_selector,_24); +} +}),new objj_method(sel_getUid("description"),function(_26,_27){ +with(_26){ +var _28=objj_msgSend(CPString,"stringWithFormat:","%@ %s(",objj_msgSend(_operand,"description"),objj_msgSend(_26,"_function")),i; +for(i=0;i<_argc;i++){ +_28=_28+objj_msgSend(_arguments,"objectAtIndex:",i)+(i+1<_argc)?", ":""; +} +_28=_28+")"; +return _28; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=objj_msgSend(CPArray,"array"),i; +for(i=0;i<_argc;i++){ +objj_msgSend(_2c,"addObject:",objj_msgSend(objj_msgSend(_arguments,"objectAtIndex:",i),"_expressionWithSubstitutionVariables:",_2b)); +} +return objj_msgSend(CPExpression,"expressionForFunction:selectorName:arguments:",objj_msgSend(_29,"operand"),objj_msgSend(_29,"_function"),_2c); +} +}),new objj_method(sel_getUid("sum:"),function(_2d,_2e,_2f){ +with(_2d){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var i,sum=0; +for(i=0;i<_argc;i++){ +sum+=objj_msgSend(objj_msgSend(_2f,"objectAtIndex:",i),"doubleValue"); +} +return objj_msgSend(CPNumber,"numberWithDouble:",sum); +} +}),new objj_method(sel_getUid("count:"),function(_30,_31,_32){ +with(_30){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return objj_msgSend(CPNumber,"numberWithUnsignedInt:",objj_msgSend(objj_msgSend(_32,"objectAtIndex:",0),"count")); +} +}),new objj_method(sel_getUid("min:"),function(_33,_34,_35){ +with(_33){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return MIN(objj_msgSend(_35,"objectAtIndex:",0),objj_msgSend(_35,"objectAtIndex:",1)); +} +}),new objj_method(sel_getUid("max:"),function(_36,_37,_38){ +with(_36){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return MAX(objj_msgSend(_38,"objectAtIndex:",0),objj_msgSend(_38,"objectAtIndex:",1)); +} +}),new objj_method(sel_getUid("average:"),function(_39,_3a,_3b){ +with(_39){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var i,sum=0; +for(i=0;i<_argc;i++){ +sum+=objj_msgSend(objj_msgSend(_3b,"objectAtIndex:",i),"doubleValue"); +} +return objj_msgSend(CPNumber,"numberWithDouble:",sum/_argc); +} +}),new objj_method(sel_getUid("add::"),function(_3c,_3d,to,_3e){ +with(_3c){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _3f=objj_msgSend(_3e,"objectAtIndex:",0),_40=objj_msgSend(_3e,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithDouble:",objj_msgSend(_3f,"doubleValue")+objj_msgSend(_40,"doubleValue")); +} +}),new objj_method(sel_getUid("from::"),function(_41,_42,_43,_44){ +with(_41){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _45=objj_msgSend(_44,"objectAtIndex:",0),_46=objj_msgSend(_44,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithDouble:",objj_msgSend(_45,"doubleValue")-objj_msgSend(_46,"doubleValue")); +} +}),new objj_method(sel_getUid("multiply::"),function(_47,_48,by,_49){ +with(_47){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _4a=objj_msgSend(_49,"objectAtIndex:",0),_4b=objj_msgSend(_49,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithDouble:",objj_msgSend(_4a,"doubleValue")*objj_msgSend(_4b,"doubleValue")); +} +}),new objj_method(sel_getUid("divide::"),function(_4c,_4d,by,_4e){ +with(_4c){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _4f=objj_msgSend(_4e,"objectAtIndex:",0),_50=objj_msgSend(_4e,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithDouble:",objj_msgSend(_4f,"doubleValue")/objj_msgSend(_50,"doubleValue")); +} +}),new objj_method(sel_getUid("sqrt:"),function(_51,_52,_53){ +with(_51){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_53,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",SQRT(num)); +} +}),new objj_method(sel_getUid("raise::"),function(_54,_55,to,_56){ +with(_54){ +if(_argc<2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_56,"objectAtIndex:",0),"doubleValue"),_57=objj_msgSend(objj_msgSend(_56,"objectAtIndex:",1),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",POW(num,_57)); +} +}),new objj_method(sel_getUid("abs:"),function(_58,_59,_5a){ +with(_58){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_5a,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",ABS(num)); +} +}),new objj_method(sel_getUid("now"),function(_5b,_5c){ +with(_5b){ +return objj_msgSend(CPDate,"date"); +} +}),new objj_method(sel_getUid("ln:"),function(_5d,_5e,_5f){ +with(_5d){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_5f,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",Math.log(num)); +} +}),new objj_method(sel_getUid("exp:"),function(_60,_61,_62){ +with(_60){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_62,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",EXP(num)); +} +}),new objj_method(sel_getUid("ceiling:"),function(_63,_64,_65){ +with(_63){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_65,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",CEIL(num)); +} +}),new objj_method(sel_getUid("random"),function(_66,_67){ +with(_66){ +return objj_msgSend(CPNumber,"numberWithDouble:",RAND()); +} +}),new objj_method(sel_getUid("modulus::"),function(_68,_69,by,_6a){ +with(_68){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _6b=objj_msgSend(_6a,"objectAtIndex:",0),_6c=objj_msgSend(_6a,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithInt:",(objj_msgSend(_6b,"intValue")%objj_msgSend(_6c,"intValue"))); +} +}),new objj_method(sel_getUid("first:"),function(_6d,_6e,_6f){ +with(_6d){ +if(_argc==0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return objj_msgSend(objj_msgSend(_6f,"objectAtIndex:",0),"objectAtIndex:",0); +} +}),new objj_method(sel_getUid("last:"),function(_70,_71,_72){ +with(_70){ +if(_argc==0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return objj_msgSend(objj_msgSend(_72,"objectAtIndex:",0),"lastObject"); +} +}),new objj_method(sel_getUid("chs:"),function(_73,_74,_75){ +with(_73){ +if(_argc==0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return objj_msgSend(CPNumber,"numberWithInt:",-objj_msgSend(objj_msgSend(_75,"objectAtIndex:",0),"intValue")); +} +}),new objj_method(sel_getUid("index:"),function(_76,_77,_78){ +with(_76){ +if(_argc<2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _79=objj_msgSend(_78,"objectAtIndex:",0),_7a=objj_msgSend(_78,"objectAtIndex:",1); +if(objj_msgSend(_79,"isKindOfClass:",objj_msgSend(CPDictionary,"class"))){ +return objj_msgSend(_79,"objectForKey:",_7a); +}else{ +return objj_msgSend(_79,"objectAtIndex:",objj_msgSend(_7a,"intValue")); +} +} +})]); +p;27;CPExpression_intersectset.jt;3032;@STATIC;1.0;i;14;CPExpression.jt;2994; +objj_executeFile("CPExpression.j",YES); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_intersectset"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_left"),new objj_ivar("_right")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithLeft:right:"),function(_3,_4,_5,_6){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_intersectset").super_class},"initWithExpressionType:",CPIntersectSetExpressionType); +_left=_5; +_right=_6; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_7,_8,_9){ +with(_7){ +var _a=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionUnionSetLeftExpression"); +var _b=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionUnionSetRightExpression"); +return objj_msgSend(_7,"initWithLeft:right:",_a,_b); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_e,"encodeObject:forKey:",_left,"CPExpressionUnionSetLeftExpression"); +objj_msgSend(_e,"encodeObject:forKey:",_right,"CPExpressionUnionSetRightExpression"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_f,_10,_11){ +with(_f){ +if(_f==_11){ +return YES; +} +if(_11.isa!=_f.isa||objj_msgSend(_11,"expressionType")!=objj_msgSend(_f,"expressionType")||!objj_msgSend(objj_msgSend(_11,"leftExpression"),"isEqual:",objj_msgSend(_f,"leftExpression"))||!objj_msgSend(objj_msgSend(_11,"rightExpression"),"isEqual:",objj_msgSend(_f,"rightExpression"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +var _16=objj_msgSend(_right,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_16,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right expression for a CPIntersectSetExpressionType expression must be either a CPArray, CPDictionary or CPSet"); +} +var _17=objj_msgSend(_left,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_17,"isKindOfClass:",objj_msgSend(CPSet,"set"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left expression for a CPIntersectSetExpressionType expression must a CPSet"); +} +var set=objj_msgSend(CPSet,"setWithSet:",_17),e=objj_msgSend(_16,"objectEnumerator"),_18; +while(_18=objj_msgSend(e,"nextObject")){ +if(objj_msgSend(_17,"containsObject:",_18)){ +objj_msgSend(set,"addObject:",_18); +} +} +return objj_msgSend(CPExpression,"expressionForConstantValue:",set); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_19,_1a,_1b){ +with(_19){ +return _19; +} +}),new objj_method(sel_getUid("leftExpression"),function(_1c,_1d){ +with(_1c){ +return _left; +} +}),new objj_method(sel_getUid("rightExpression"),function(_1e,_1f){ +with(_1e){ +return _right; +} +}),new objj_method(sel_getUid("description"),function(_20,_21){ +with(_20){ +return objj_msgSend(_left,"description")+" INTERSECT "+objj_msgSend(_right,"description"); +} +})]); +p;22;CPExpression_keypath.jt;1788;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;29;Foundation/CPKeyValueCoding.jt;1690; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPKeyValueCoding.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_keypath"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKeyPath:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_keypath").super_class},"initWithExpressionType:",CPKeyPathExpressionType); +_keyPath=_5; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(_8,"decodeObjectForKey:","CPExpressionKeyPath"); +return objj_msgSend(_6,"initWithKeyPath:",_9); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_c,"encodeObject:forKey:",_keyPath,"CPExpressionKeyPath"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_d,_e,_f){ +with(_d){ +if(_d==_f){ +return YES; +} +if(_f.isa!=_d.isa||objj_msgSend(_f,"expressionType")!=objj_msgSend(_d,"expressionType")||!objj_msgSend(objj_msgSend(_f,"keyPath"),"isEqualToString:",objj_msgSend(_d,"keyPath"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("keyPath"),function(_10,_11){ +with(_10){ +return _keyPath; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +return objj_msgSend(_14,"valueForKeyPath:",_keyPath); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_16,_17,_18){ +with(_16){ +return _16; +} +}),new objj_method(sel_getUid("description"),function(_19,_1a){ +with(_19){ +return _keyPath; +} +})]); +p;23;CPExpression_minusset.jt;2903;@STATIC;1.0;i;14;CPExpression.jt;2865; +objj_executeFile("CPExpression.j",YES); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_minusset"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithLeft:right:"),function(_3,_4,_5,_6){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_minusset").super_class},"initWithExpressionType:",CPMinusSetExpressionType); +_left=_5; +_right=_6; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_7,_8,_9){ +with(_7){ +var _a=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionMinusSetLeftExpression"); +var _b=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionMinusSetRightExpression"); +return objj_msgSend(_7,"initWithLeft:right:",_a,_b); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_e,"encodeObject:forKey:",_left,"CPExpressionMinusSetLeftExpression"); +objj_msgSend(_e,"encodeObject:forKey:",_right,"CPExpressionMinusSetRightExpression"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_f,_10,_11){ +with(_f){ +if(_f==_11){ +return YES; +} +if(_11.isa!=_f.isa||objj_msgSend(_11,"expressionType")!=objj_msgSend(_f,"expressionType")||!objj_msgSend(objj_msgSend(_11,"leftExpression"),"isEqual:",objj_msgSend(_f,"leftExpression"))||!objj_msgSend(objj_msgSend(_11,"rightExpression"),"isEqual:",objj_msgSend(_f,"rightExpression"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +var _16=objj_msgSend(_right,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_16,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right expression for a CPIntersectSetExpressionType expression must be either a CPArray, CPDictionary or CPSet"); +} +var _17=objj_msgSend(_left,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_17,"isKindOfClass:",objj_msgSend(CPSet,"set"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left expression for a CPIntersectSetExpressionType expression must a CPSet"); +} +var set=objj_msgSend(CPSet,"setWithSet:",_17),e=objj_msgSend(_16,"objectEnumerator"),_18; +while(_18=objj_msgSend(e,"nextObject")){ +objj_msgSend(set,"removeObject:",_18); +} +return objj_msgSend(CPExpression,"expressionForConstantValue:",set); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_19,_1a,_1b){ +with(_19){ +return _19; +} +}),new objj_method(sel_getUid("leftExpression"),function(_1c,_1d){ +with(_1c){ +return _left; +} +}),new objj_method(sel_getUid("rightExpression"),function(_1e,_1f){ +with(_1e){ +return _right; +} +}),new objj_method(sel_getUid("description"),function(_20,_21){ +with(_20){ +return objj_msgSend(_left,"description")+" MINUS "+objj_msgSend(_right,"description"); +} +})]); +p;23;CPExpression_operator.jt;4015;@STATIC;1.0;i;14;CPExpression.jI;20;Foundation/CPArray.jI;21;Foundation/CPString.jI;25;Foundation/CPDictionary.jt;3896; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +var _1="CPExpressionOperatorNegate"; +var _2="CPExpressionOperatorAdd"; +var _3="CPExpressionOperatorSubtract"; +var _4="CPExpressionOperatorMultiply"; +var _5="CPExpressionOperatorDivide"; +var _6="CPExpressionOperatorExp"; +var _7="CPExpressionOperatorAssign"; +var _8="CPExpressionOperatorKeypath"; +var _9="CPExpressionOperatorIndex"; +var _a="CPExpressionOperatorIndexFirst"; +var _b="CPExpressionOperatorIndexLast"; +var _c="CPExpressionOperatorIndexSize"; +var _d=objj_allocateClassPair(CPExpression,"CPExpression_operator"),_e=_d.isa; +class_addIvars(_d,[new objj_ivar("_operator"),new objj_ivar("_arguments")]); +objj_registerClassPair(_d); +class_addMethods(_d,[new objj_method(sel_getUid("initWithOperator:arguments:"),function(_f,_10,_11,_12){ +with(_f){ +_operator=_11; +_arguments=_12; +return _f; +} +}),new objj_method(sel_getUid("arguments"),function(_13,_14){ +with(_13){ +return _arguments; +} +}),new objj_method(sel_getUid("description"),function(_15,_16){ +with(_15){ +var _17=objj_msgSend(CPString,"string"),_18=objj_msgSend(CPArray,"array"),_19=objj_msgSend(_arguments,"count"),i; +for(i=0;i<_19;i++){ +var _1a=objj_msgSend(_arguments,"objectAtIndex:",i),_1b=objj_msgSend(_1a,"description"); +if(objj_msgSend(_1a,"isKindOfClass:",objj_msgSend(CPExpression_operator,"class"))){ +_1b=objj_msgSend(CPString,"stringWithFormat:","(%@)",_1b); +} +objj_msgSend(_18,"addObject:",_1b); +} +switch(_operator){ +case _1: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","-%@",objj_msgSend(_18,"objectAtIndex:",0)); +break; +case _2: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ + %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _3: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ - %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _4: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ * %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _5: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ / %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _6: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ ** %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _7: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ := %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _8: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@.%@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _9: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@[%@]",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _a: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@[FIRST]",objj_msgSend(_18,"objectAtIndex:",0)); +break; +case _b: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@[LAST]",objj_msgSend(_18,"objectAtIndex:",0)); +break; +case _c: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@[SIZE]",objj_msgSend(_18,"objectAtIndex:",0)); +break; +} +return _17; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_1c,_1d,_1e){ +with(_1c){ +var _1f=objj_msgSend(CPArray,"array"),_20=objj_msgSend(_arguments,"count"),i; +for(i=0;i<_20;i++){ +objj_msgSend(_1f,"addObject:",objj_msgSend(objj_msgSend(_arguments,"objectAtIndex:",i),"_expressionWithSubstitutionVariables:",_1e)); +} +return objj_msgSend(CPExpression_operator,"expressionForOperator:arguments:",_operator,_1f); +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("expressionForOperator:arguments:"),function(_21,_22,_23,_24){ +with(_21){ +return objj_msgSend(_21,"initWithOperator:arguments:",_23,_24); +} +})]); +p;19;CPExpression_self.jt;1270;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;25;Foundation/CPDictionary.jI;20;Foundation/CPCoder.jt;1151; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPCoder.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_self"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_self").super_class},"initWithExpressionType:",CPEvaluatedObjectExpressionType); +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_5,_6,_7){ +with(_5){ +return objj_msgSend(_5,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8,_9,_a){ +with(_8){ +} +}),new objj_method(sel_getUid("isEqual:"),function(_b,_c,_d){ +with(_b){ +return (_d==_b); +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_e,_f,_10,_11){ +with(_e){ +return _10; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_12,_13,_14){ +with(_12){ +return _12; +} +}),new objj_method(sel_getUid("description"),function(_15,_16){ +with(_15){ +return "SELF"; +} +})]); +p;23;CPExpression_unionset.jt;2895;@STATIC;1.0;i;14;CPExpression.jt;2857; +objj_executeFile("CPExpression.j",YES); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_unionset"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithLeft:right:"),function(_3,_4,_5,_6){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_unionset").super_class},"initWithExpressionType:",CPUnionSetExpressionType); +_left=_5; +_right=_6; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_7,_8,_9){ +with(_7){ +var _a=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionUnionSetLeftExpression"),_b=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionUnionSetRightExpression"); +return objj_msgSend(_7,"initWithLeft:right:",_a,_b); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_e,"encodeObject:forKey:",_left,"CPExpressionUnionSetLeftExpression"); +objj_msgSend(_e,"encodeObject:forKey:",_right,"CPExpressionUnionSetRightExpression"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_f,_10,_11){ +with(_f){ +if(_f==_11){ +return YES; +} +if(_11.isa!=_f.isa||objj_msgSend(_11,"expressionType")!=objj_msgSend(_f,"expressionType")||!objj_msgSend(objj_msgSend(_11,"leftExpression"),"isEqual:",objj_msgSend(_f,"leftExpression"))||!objj_msgSend(objj_msgSend(_11,"rightExpression"),"isEqual:",objj_msgSend(_f,"rightExpression"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +var _16=objj_msgSend(_right,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_16,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right expression for a CPIntersectSetExpressionType expression must be either a CPArray, CPDictionary or CPSet"); +} +var _17=objj_msgSend(_left,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_17,"isKindOfClass:",objj_msgSend(CPSet,"set"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left expression for a CPIntersectSetExpressionType expression must a CPSet"); +} +var _18=objj_msgSend(CPSet,"setWithSet:",_17),e=objj_msgSend(_16,"objectEnumerator"),_19; +while(_19=objj_msgSend(e,"nextObject")){ +objj_msgSend(_18,"addObject:",_19); +} +return objj_msgSend(CPExpression,"expressionForConstantValue:",_18); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_1a,_1b,_1c){ +with(_1a){ +return _1a; +} +}),new objj_method(sel_getUid("leftExpression"),function(_1d,_1e){ +with(_1d){ +return _left; +} +}),new objj_method(sel_getUid("rightExpression"),function(_1f,_20){ +with(_1f){ +return _right; +} +}),new objj_method(sel_getUid("description"),function(_21,_22){ +with(_21){ +return objj_msgSend(_left,"description")+" UNION "+objj_msgSend(_right,"description"); +} +})]); +p;23;CPExpression_variable.jt;2001;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;25;Foundation/CPDictionary.jt;1907; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_variable"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_variable")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithVariable:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_variable").super_class},"initWithExpressionType:",CPVariableExpressionType); +_variable=objj_msgSend(_5,"copy"); +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(_8,"decodeObjectForKey:","CPExpressionVariable"); +return objj_msgSend(_6,"initWithVariable:",_9); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_c,"encodeObject:forKey:",_variable,"CPExpressionVariable"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_d,_e,_f){ +with(_d){ +if(_d==_f){ +return YES; +} +if(_f.isa!=_d.isa||objj_msgSend(_f,"expressionType")!=objj_msgSend(_d,"expressionType")||!objj_msgSend(objj_msgSend(_f,"variable"),"isEqualToString:",objj_msgSend(_d,"variable"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("variable"),function(_10,_11){ +with(_10){ +return _variable; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +return objj_msgSend(_15,"objectForKey:",_variable); +} +}),new objj_method(sel_getUid("description"),function(_16,_17){ +with(_16){ +return objj_msgSend(CPString,"stringWithFormat:","$%s",_variable); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_18,_19,_1a){ +with(_18){ +var _1b=objj_msgSend(_1a,"objectForKey:",_variable); +if(_1b!=nil){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",_1b); +} +return _18; +} +})]); +p;13;CPPredicate.jt;24096;@STATIC;1.0;I;20;Foundation/CPValue.jI;20;Foundation/CPArray.jI;18;Foundation/CPSet.jI;19;Foundation/CPNull.jI;22;Foundation/CPScanner.ji;21;CPCompoundPredicate.ji;23;CPComparisonPredicate.ji;14;CPExpression.ji;23;CPExpression_operator.ji;24;CPExpression_aggregate.ji;25;CPExpression_assignment.jt;23792; +objj_executeFile("Foundation/CPValue.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPSet.j",NO); +objj_executeFile("Foundation/CPNull.j",NO); +objj_executeFile("Foundation/CPScanner.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPPredicate"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("predicateWithSubstitutionVariables:"),function(_3,_4,_5){ +with(_3){ +} +}),new objj_method(sel_getUid("evaluateWithObject:"),function(_6,_7,_8){ +with(_6){ +} +}),new objj_method(sel_getUid("evaluateWithObject:substitutionVariables:"),function(_9,_a,_b,_c){ +with(_9){ +} +}),new objj_method(sel_getUid("predicateFormat"),function(_d,_e){ +with(_d){ +} +}),new objj_method(sel_getUid("description"),function(_f,_10){ +with(_f){ +return objj_msgSend(_f,"predicateFormat"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("predicateWithFormat:"),function(_11,_12,_13){ +with(_11){ +if(!_13){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,_12+" the format can't be 'nil'"); +} +var _14=Array.prototype.slice.call(arguments,3); +return objj_msgSend(_11,"predicateWithFormat:argumentArray:",arguments[2],_14); +} +}),new objj_method(sel_getUid("predicateWithFormat:argumentArray:"),function(_15,_16,_17,_18){ +with(_15){ +if(!_17){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,_16+" the format can't be 'nil'"); +} +var s=objj_msgSend(objj_msgSend(CPPredicateScanner,"alloc"),"initWithString:args:",_17,_18),p=objj_msgSend(s,"parse"); +return p; +} +}),new objj_method(sel_getUid("predicateWithFormat:arguments:"),function(_19,_1a,_1b,_1c){ +with(_19){ +return nil; +} +}),new objj_method(sel_getUid("predicateWithValue:"),function(_1d,_1e,_1f){ +with(_1d){ +return objj_msgSend(objj_msgSend(CPPredicate_BOOL,"alloc"),"initWithBool:",_1f); +} +})]); +var _1=objj_allocateClassPair(CPPredicate,"CPPredicate_BOOL"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_value")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithBool:"),function(_20,_21,_22){ +with(_20){ +_value=_22; +return _20; +} +}),new objj_method(sel_getUid("evaluateObject:"),function(_23,_24,_25){ +with(_23){ +return _value; +} +}),new objj_method(sel_getUid("predicateFormat"),function(_26,_27){ +with(_26){ +return (_value)?"TRUEPREDICATE":"FALSEPREDICATE"; +} +})]); +var _1=objj_getClass("CPArray"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("filteredArrayUsingPredicate:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(_28,"count"),_2c=objj_msgSend(CPArray,"array"),i; +for(i=0;i<_2b;i++){ +var _2d=_28[i]; +if(objj_msgSend(_2a,"evaluateWithObject:",_2d)){ +_2c.push(_2d); +} +} +return _2c; +} +}),new objj_method(sel_getUid("filterUsingPredicate:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=objj_msgSend(_2e,"count"); +while(_31--){ +if(!objj_msgSend(_30,"evaluateWithObject:",_2e[_31])){ +splice(_31,1); +} +} +} +})]); +var _1=objj_getClass("CPSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("filteredSetUsingPredicate:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"count"),_36=objj_msgSend(CPSet,"set"),i; +for(i=0;i<_35;i++){ +var _37=objj_msgSend(_32,"objectAtIndex:",i); +if(objj_msgSend(_34,"evaluateWithObject:",_37)){ +objj_msgSend(_36,"addObject:",_37); +} +} +return _36; +} +}),new objj_method(sel_getUid("filterUsingPredicate:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(_38,"count"); +while(--_3b>=0){ +var _3c=objj_msgSend(_38,"objectAtIndex:",_3b); +if(!objj_msgSend(_3a,"evaluateWithObject:",_3c)){ +objj_msgSend(_38,"removeObjectAtIndex:",_3b); +} +} +} +})]); +var _1=objj_allocateClassPair(CPScanner,"CPPredicateScanner"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_args"),new objj_ivar("_retrieved")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithString:args:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +_3d=objj_msgSendSuper({receiver:_3d,super_class:objj_getClass("CPPredicateScanner").super_class},"initWithString:",_3f); +if(_3d!=nil){ +_args=objj_msgSend(_40,"objectEnumerator"); +} +return _3d; +} +}),new objj_method(sel_getUid("nextArg"),function(_41,_42){ +with(_41){ +return objj_msgSend(_args,"nextObject"); +} +}),new objj_method(sel_getUid("scanPredicateKeyword:"),function(_43,_44,key){ +with(_43){ +var loc=objj_msgSend(_43,"scanLocation"); +var c; +objj_msgSend(_43,"setCaseSensitive:",NO); +if(!objj_msgSend(_43,"scanString:intoString:",key,NULL)){ +return NO; +} +if(objj_msgSend(_43,"isAtEnd")){ +return YES; +} +c=objj_msgSend(objj_msgSend(_43,"string"),"characterAtIndex:",objj_msgSend(_43,"scanLocation")); +if(!objj_msgSend(objj_msgSend(CPCharacterSet,"alphanumericCharacterSet"),"characterIsMember:",c)){ +return YES; +} +objj_msgSend(_43,"setScanLocation:",loc); +return NO; +} +}),new objj_method(sel_getUid("parse"),function(_45,_46){ +with(_45){ +var r=nil; +try{ +objj_msgSend(_45,"setCharactersToBeSkipped:",objj_msgSend(CPCharacterSet,"whitespaceCharacterSet")); +r=objj_msgSend(_45,"parsePredicate"); +} +catch(error){ +CPLogConsole("Parsing failed for "+objj_msgSend(_45,"string")+" with "+error); +} +finally{ +if(!objj_msgSend(_45,"isAtEnd")){ +CPLogConsole("Format string contains extra characters: \""+objj_msgSend(_45,"string")+"\""); +} +} +return r; +} +}),new objj_method(sel_getUid("parsePredicate"),function(_47,_48){ +with(_47){ +return objj_msgSend(_47,"parseAnd"); +} +}),new objj_method(sel_getUid("parseAnd"),function(_49,_4a){ +with(_49){ +var l=objj_msgSend(_49,"parseOr"); +while(objj_msgSend(_49,"scanPredicateKeyword:","AND")||objj_msgSend(_49,"scanPredicateKeyword:","&&")){ +var r=objj_msgSend(_49,"parseOr"); +if(objj_msgSend(r,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(r,"compoundPredicateType")==CPAndPredicateType){ +if(objj_msgSend(l,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(l,"compoundPredicateType")==CPAndPredicateType){ +objj_msgSend(objj_msgSend(l,"subpredicates"),"addObjectsFromArray:",objj_msgSend(r,"subpredicates")); +}else{ +objj_msgSend(objj_msgSend(r,"subpredicates"),"insertObject:atIndex:",l,0); +l=r; +} +}else{ +if(objj_msgSend(l,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(l,"compoundPredicateType")==CPAndPredicateType){ +objj_msgSend(objj_msgSend(l,"subpredicates"),"addObject:",r); +}else{ +l=objj_msgSend(CPCompoundPredicate,"andPredicateWithSubpredicates:",objj_msgSend(CPArray,"arrayWithObjects:",l,r)); +} +} +} +return l; +} +}),new objj_method(sel_getUid("parseNot"),function(_4b,_4c){ +with(_4b){ +if(objj_msgSend(_4b,"scanString:intoString:","(",NULL)){ +var r=objj_msgSend(_4b,"parsePredicate"); +if(!objj_msgSend(_4b,"scanString:intoString:",")",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing ) in compound predicate"); +} +return r; +} +if(objj_msgSend(_4b,"scanPredicateKeyword:","NOT")||objj_msgSend(_4b,"scanPredicateKeyword:","!")){ +return objj_msgSend(CPCompoundPredicate,"notPredicateWithSubpredicate:",objj_msgSend(_4b,"parseNot")); +} +if(objj_msgSend(_4b,"scanPredicateKeyword:","TRUEPREDICATE")){ +return objj_msgSend(CPPredicate,"predicateWithValue:",YES); +} +if(objj_msgSend(_4b,"scanPredicateKeyword:","FALSEPREDICATE")){ +return objj_msgSend(CPPredicate,"predicateWithValue:",NO); +} +return objj_msgSend(_4b,"parseComparison"); +} +}),new objj_method(sel_getUid("parseOr"),function(_4d,_4e){ +with(_4d){ +var l=objj_msgSend(_4d,"parseNot"); +while(objj_msgSend(_4d,"scanPredicateKeyword:","OR")||objj_msgSend(_4d,"scanPredicateKeyword:","||")){ +var r=objj_msgSend(_4d,"parseNot"); +if(objj_msgSend(r,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(r,"compoundPredicateType")==CPOrPredicateType){ +if(objj_msgSend(l,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(l,"compoundPredicateType")==CPOrPredicateType){ +objj_msgSend(objj_msgSend(l,"subpredicates"),"addObjectsFromArray:",objj_msgSend(r,"subpredicates")); +}else{ +objj_msgSend(objj_msgSend(r,"subpredicates"),"insertObject:atIndex:",l,0); +l=r; +} +}else{ +if(objj_msgSend(l,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(l,"compoundPredicateType")==CPOrPredicateType){ +objj_msgSend(objj_msgSend(l,"subpredicates"),"addObject:",r); +}else{ +l=objj_msgSend(CPCompoundPredicate,"orPredicateWithSubpredicates:",objj_msgSend(CPArray,"arrayWithObjects:",l,r)); +} +} +} +return l; +} +}),new objj_method(sel_getUid("parseComparison"),function(_4f,_50){ +with(_4f){ +var _51=CPDirectPredicateModifier,_52=0,_53=0,_54,_55,p,_56=NO,_57=NO; +if(objj_msgSend(_4f,"scanPredicateKeyword:","ANY")){ +_51=CPAnyPredicateModifier; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","ALL")){ +_51=CPAllPredicateModifier; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","NONE")){ +_51=CPAnyPredicateModifier; +_56=YES; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","SOME")){ +_51=CPAllPredicateModifier; +_56=YES; +} +} +} +} +_54=objj_msgSend(_4f,"parseExpression"); +if(objj_msgSend(_4f,"scanString:intoString:","!=",NULL)||objj_msgSend(_4f,"scanString:intoString:","<>",NULL)){ +_52=CPNotEqualToPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","<=",NULL)||objj_msgSend(_4f,"scanString:intoString:","=<",NULL)){ +_52=CPLessThanOrEqualToPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:",">=",NULL)||objj_msgSend(_4f,"scanString:intoString:","=>",NULL)){ +_52=CPGreaterThanOrEqualToPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","<",NULL)){ +_52=CPLessThanPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:",">",NULL)){ +_52=CPGreaterThanPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","==",NULL)||objj_msgSend(_4f,"scanString:intoString:","=",NULL)){ +_52=CPEqualToPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","MATCHES")){ +_52=CPMatchesPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","LIKE")){ +_52=CPLikePredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","BEGINSWITH")){ +_52=CPBeginsWithPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","ENDSWITH")){ +_52=CPEndsWithPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","IN")){ +_52=CPInPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","CONTAINS")){ +_52=CPInPredicateOperatorType; +_57=YES; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","BETWEEN")){ +var exp=objj_msgSend(_4f,"parseSimpleExpression"),a=objj_msgSend(exp,"constantValue"),_58,_59,_5a,_5b,lp,up; +if(!objj_msgSend(a,"isKindOfClass:",objj_msgSend(CPArray,"class"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"BETWEEN operator requires array argument"); +} +_58=objj_msgSend(a,"objectAtIndex:",0); +_59=objj_msgSend(a,"objectAtIndex:",1); +_5a=objj_msgSend(CPExpression,"expressionForConstantValue:",_58); +_5b=objj_msgSend(CPExpression,"expressionForConstantValue:",_59); +lp=objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:modifier:type:options:",_54,_5a,_51,CPGreaterThanPredicateOperatorType,_53); +up=objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:modifier:type:options:",_54,_5b,_51,CPLessThanPredicateOperatorType,_53); +return objj_msgSend(CPCompoundPredicate,"andPredicateWithSubpredicates:",objj_msgSend(CPArray,"arrayWithObjects:",lp,up)); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid comparison predicate: "+objj_msgSend(objj_msgSend(_4f,"string"),"substringFromIndex:",objj_msgSend(_4f,"scanLocation"))); +} +} +} +} +} +} +} +} +} +} +} +} +} +if(objj_msgSend(_4f,"scanString:intoString:","[cd]",NULL)){ +_53=CPCaseInsensitivePredicateOption|CPDiacriticInsensitivePredicateOption; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","[c]",NULL)){ +_53=CPCaseInsensitivePredicateOption; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","[d]",NULL)){ +_53=CPDiacriticInsensitivePredicateOption; +} +} +} +_55=objj_msgSend(_4f,"parseExpression"); +if(_57==YES){ +var tmp=_54; +_54=_55; +_55=tmp; +} +p=objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:modifier:type:options:",_54,_55,_51,_52,_53); +return _56?objj_msgSend(CPCompoundPredicate,"notPredicateWithSubpredicate:",p):p; +} +}),new objj_method(sel_getUid("parseExpression"),function(_5c,_5d){ +with(_5c){ +return objj_msgSend(_5c,"parseBinaryExpression"); +} +}),new objj_method(sel_getUid("parseSimpleExpression"),function(_5e,_5f){ +with(_5e){ +var _60,_61,_62,dbl; +if(objj_msgSend(_5e,"scanDouble:",function(_63){ +var _64=dbl; +if(typeof _63!="undefined"){ +dbl=_63; +} +return _64; +})){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(CPNumber,"numberWithDouble:",dbl)); +} +if(objj_msgSend(_5e,"scanString:intoString:","-",NULL)){ +return objj_msgSend(CPExpression,"expressionForFunction:arguments:","chs",objj_msgSend(CPArray,"arrayWithObject:",objj_msgSend(_5e,"parseExpression"))); +} +if(objj_msgSend(_5e,"scanString:intoString:","(",NULL)){ +var arg=objj_msgSend(_5e,"parseExpression"); +if(!objj_msgSend(_5e,"scanString:intoString:",")",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing ) in expression"); +} +return arg; +} +if(objj_msgSend(_5e,"scanString:intoString:","{",NULL)){ +var a=objj_msgSend(CPMutableArray,"arrayWithCapacity:",10); +if(objj_msgSend(_5e,"scanString:intoString:","}",NULL)){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",a); +} +objj_msgSend(a,"addObject:",objj_msgSend(_5e,"parseExpression")); +while(objj_msgSend(_5e,"scanString:intoString:",",",NULL)){ +objj_msgSend(a,"addObject:",objj_msgSend(_5e,"parseExpression")); +} +if(!objj_msgSend(_5e,"scanString:intoString:","}",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing } in aggregate"); +} +return objj_msgSend(CPExpression,"expressionForConstantValue:",a); +} +if(objj_msgSend(_5e,"scanPredicateKeyword:","NULL")||objj_msgSend(_5e,"scanPredicateKeyword:","NIL")){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(CPNull,"null")); +} +if(objj_msgSend(_5e,"scanPredicateKeyword:","TRUE")||objj_msgSend(_5e,"scanPredicateKeyword:","YES")){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(CPNumber,"numberWithBool:",YES)); +} +if(objj_msgSend(_5e,"scanPredicateKeyword:","FALSE")||objj_msgSend(_5e,"scanPredicateKeyword:","NO")){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(CPNumber,"numberWithBool:",NO)); +} +if(objj_msgSend(_5e,"scanPredicateKeyword:","SELF")){ +return objj_msgSend(CPExpression,"expressionForEvaluatedObject"); +} +if(objj_msgSend(_5e,"scanString:intoString:","$",NULL)){ +var _65=objj_msgSend(_5e,"parseExpression"); +if(!objj_msgSend(_65,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid variable identifier: "+_65); +} +return objj_msgSend(CPExpression,"expressionForVariable:",objj_msgSend(_65,"keyPath")); +} +_61=objj_msgSend(_5e,"scanLocation"); +if(objj_msgSend(_5e,"scanString:intoString:","%",NULL)){ +if(objj_msgSend(_5e,"isAtEnd")==NO){ +var c=objj_msgSend(objj_msgSend(_5e,"string"),"characterAtIndex:",objj_msgSend(_5e,"scanLocation")); +switch(c){ +case "%": +_61=objj_msgSend(_5e,"scanLocation"); +break; +case "K": +objj_msgSend(_5e,"setScanLocation:",objj_msgSend(_5e,"scanLocation")+1); +return objj_msgSend(CPExpression,"expressionForKeyPath:",objj_msgSend(_5e,"nextArg")); +case "@": +case "c": +case "C": +case "d": +case "D": +case "i": +case "o": +case "O": +case "u": +case "U": +case "x": +case "X": +case "e": +case "E": +case "f": +case "g": +case "G": +objj_msgSend(_5e,"setScanLocation:",objj_msgSend(_5e,"scanLocation")+1); +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(_5e,"nextArg")); +case "h": +objj_msgSend(_5e,"scanString:intoString:","h",NULL); +if(objj_msgSend(_5e,"isAtEnd")==NO){ +c=objj_msgSend(objj_msgSend(_5e,"string"),"characterAtIndex:",objj_msgSend(_5e,"scanLocation")); +if(c=="i"||c=="u"){ +objj_msgSend(_5e,"setScanLocation:",objj_msgSend(_5e,"scanLocation")+1); +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(_5e,"nextArg")); +} +} +break; +case "q": +objj_msgSend(_5e,"scanString:intoString:","q",NULL); +if(objj_msgSend(_5e,"isAtEnd")==NO){ +c=objj_msgSend(objj_msgSend(_5e,"string"),"characterAtIndex:",objj_msgSend(_5e,"scanLocation")); +if(c=="i"||c=="u"||c=="x"||c=="X"){ +objj_msgSend(_5e,"setScanLocation:",objj_msgSend(_5e,"scanLocation")+1); +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(_5e,"nextArg")); +} +} +break; +} +} +objj_msgSend(_5e,"setScanLocation:",_61); +} +if(objj_msgSend(_5e,"scanString:intoString:","\"",NULL)){ +var _66=objj_msgSend(_5e,"charactersToBeSkipped"),str; +objj_msgSend(_5e,"setCharactersToBeSkipped:",nil); +if(objj_msgSend(_5e,"scanUpToString:intoString:","\"",function(_67){ +var _68=str; +if(typeof _67!="undefined"){ +str=_67; +} +return _68; +})==NO){ +objj_msgSend(_5e,"setCharactersToBeSkipped:",_66); +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid double quoted literal at "+_61); +} +objj_msgSend(_5e,"scanString:intoString:","\"",NULL); +objj_msgSend(_5e,"setCharactersToBeSkipped:",_66); +return objj_msgSend(CPExpression,"expressionForConstantValue:",str); +} +if(objj_msgSend(_5e,"scanString:intoString:","'",NULL)){ +var _66=objj_msgSend(_5e,"charactersToBeSkipped"),str; +objj_msgSend(_5e,"setCharactersToBeSkipped:",nil); +if(objj_msgSend(_5e,"scanUpToString:intoString:","'",function(_69){ +var _6a=str; +if(typeof _69!="undefined"){ +str=_69; +} +return _6a; +})==NO){ +objj_msgSend(_5e,"setCharactersToBeSkipped:",_66); +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid single quoted literal at "+_61); +} +objj_msgSend(_5e,"scanString:intoString:","'",NULL); +objj_msgSend(_5e,"setCharactersToBeSkipped:",_66); +return objj_msgSend(CPExpression,"expressionForConstantValue:",str); +} +if(objj_msgSend(_5e,"scanString:intoString:","@",NULL)){ +var e=objj_msgSend(_5e,"parseExpression"); +if(!objj_msgSend(e,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid keypath identifier: "+e); +} +return objj_msgSend(CPExpression,"expressionForKeyPath:",objj_msgSend(e,"keyPath")+"@"); +} +objj_msgSend(_5e,"scanString:intoString:","#",NULL); +if(!_60){ +_60=objj_msgSend(CPCharacterSet,"characterSetWithCharactersInString:","_$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); +} +if(!objj_msgSend(_5e,"scanCharactersFromSet:intoString:",_60,function(_6b){ +var _6c=_62; +if(typeof _6b!="undefined"){ +_62=_6b; +} +return _6c; +})){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing identifier: "+objj_msgSend(objj_msgSend(_5e,"string"),"substringFromIndex:",objj_msgSend(_5e,"scanLocation"))); +} +return objj_msgSend(CPExpression,"expressionForKeyPath:",_62); +} +}),new objj_method(sel_getUid("parseFunctionalExpression"),function(_6d,_6e){ +with(_6d){ +var _6f=objj_msgSend(_6d,"parseSimpleExpression"); +while(YES){ +if(objj_msgSend(_6d,"scanString:intoString:","(",NULL)){ +var _70=objj_msgSend(CPMutableArray,"arrayWithCapacity:",5); +if(!objj_msgSend(_6f,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid function identifier: "+_6f); +} +if(!objj_msgSend(_6d,"scanString:intoString:",")",NULL)){ +objj_msgSend(_70,"addObject:",objj_msgSend(_6d,"parseExpression")); +while(objj_msgSend(_6d,"scanString:intoString:",",",NULL)){ +objj_msgSend(_70,"addObject:",objj_msgSend(_6d,"parseExpression")); +} +if(!objj_msgSend(_6d,"scanString:intoString:",")",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing ) in function arguments"); +} +} +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:",objj_msgSend(_6f,"keyPath"),_70); +}else{ +if(objj_msgSend(_6d,"scanString:intoString:","[",NULL)){ +if(objj_msgSend(_6d,"scanPredicateKeyword:","FIRST")){ +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:","first",objj_msgSend(CPArray,"arrayWithObject:",objj_msgSend(_6d,"parseExpression"))); +}else{ +if(objj_msgSend(_6d,"scanPredicateKeyword:","LAST")){ +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:","last",objj_msgSend(CPArray,"arrayWithObject:",objj_msgSend(_6d,"parseExpression"))); +}else{ +if(objj_msgSend(_6d,"scanPredicateKeyword:","SIZE")){ +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:","count",objj_msgSend(CPArray,"arrayWithObject:",objj_msgSend(_6d,"parseExpression"))); +}else{ +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:","index",objj_msgSend(CPArray,"arrayWithObjects:",_6f,objj_msgSend(_6d,"parseExpression"))); +} +} +} +if(!objj_msgSend(_6d,"scanString:intoString:","]",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing ] in index argument"); +} +}else{ +if(objj_msgSend(_6d,"scanString:intoString:",".",NULL)){ +if(!objj_msgSend(_6f,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid left keypath:"+_6f); +} +var _71=objj_msgSend(_6d,"parseExpression"); +if(!objj_msgSend(_71,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid right keypath:"+_71); +} +_6f=objj_msgSend(CPExpression,"expressionForKeyPath:",objj_msgSend(_6f,"keyPath")+"."+objj_msgSend(_71,"keyPath")); +}else{ +return _6f; +} +} +} +} +} +}),new objj_method(sel_getUid("parsePowerExpression"),function(_72,_73){ +with(_72){ +var _74=objj_msgSend(_72,"parseFunctionalExpression"); +while(YES){ +var _75; +if(objj_msgSend(_72,"scanString:intoString:","**",NULL)){ +_75=objj_msgSend(_72,"parseFunctionalExpression"); +_74=objj_msgSend(CPExpression,"expressionForFunction:arguments:","pow",objj_msgSend(CPArray,"arrayWithObjects:",_74,_75)); +}else{ +return _74; +} +} +} +}),new objj_method(sel_getUid("parseMultiplicationExpression"),function(_76,_77){ +with(_76){ +var _78=objj_msgSend(_76,"parsePowerExpression"); +while(YES){ +var _79; +if(objj_msgSend(_76,"scanString:intoString:","*",NULL)){ +_79=objj_msgSend(_76,"parsePowerExpression"); +_78=objj_msgSend(CPExpression,"expressionForFunction:arguments:","_mul",objj_msgSend(CPArray,"arrayWithObjects:",_78,_79)); +}else{ +if(objj_msgSend(_76,"scanString:intoString:","/",NULL)){ +_79=objj_msgSend(_76,"parsePowerExpression"); +_78=objj_msgSend(CPExpression,"expressionForFunction:arguments:","_div",objj_msgSend(CPArray,"arrayWithObjects:",_78,_79)); +}else{ +return _78; +} +} +} +} +}),new objj_method(sel_getUid("parseAdditionExpression"),function(_7a,_7b){ +with(_7a){ +var _7c=objj_msgSend(_7a,"parseMultiplicationExpression"); +while(YES){ +var _7d; +if(objj_msgSend(_7a,"scanString:intoString:","+",NULL)){ +_7d=objj_msgSend(_7a,"parseMultiplicationExpression"); +_7c=objj_msgSend(CPExpression,"expressionForFunction:arguments:","_add",objj_msgSend(CPArray,"arrayWithObjects:",_7c,_7d)); +}else{ +if(objj_msgSend(_7a,"scanString:intoString:","-",NULL)){ +_7d=objj_msgSend(_7a,"parseMultiplicationExpression"); +_7c=objj_msgSend(CPExpression,"expressionForFunction:arguments:","_sub",objj_msgSend(CPArray,"arrayWithObjects:",_7c,_7d)); +}else{ +return _7c; +} +} +} +} +}),new objj_method(sel_getUid("parseBinaryExpression"),function(_7e,_7f){ +with(_7e){ +var _80=objj_msgSend(_7e,"parseAdditionExpression"); +while(YES){ +var _81; +if(objj_msgSend(_7e,"scanString:intoString:",":=",NULL)){ +_81=objj_msgSend(_7e,"parseAdditionExpression"); +}else{ +return _80; +} +} +} +})]); +objj_executeFile("CPCompoundPredicate.j",YES); +objj_executeFile("CPComparisonPredicate.j",YES); +objj_executeFile("CPExpression.j",YES); +objj_executeFile("CPExpression_operator.j",YES); +objj_executeFile("CPExpression_aggregate.j",YES); +objj_executeFile("CPExpression_assignment.j",YES); +e; ADDED Site/Site/Frameworks/Objective-J/LICENSE Index: Site/Site/Frameworks/Objective-J/LICENSE ================================================================== --- Site/Site/Frameworks/Objective-J/LICENSE +++ Site/Site/Frameworks/Objective-J/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site/Frameworks/Objective-J/Objective-J.js Index: Site/Site/Frameworks/Objective-J/Objective-J.js ================================================================== --- Site/Site/Frameworks/Objective-J/Objective-J.js +++ Site/Site/Frameworks/Objective-J/Objective-J.js @@ -0,0 +1,3696 @@ +var ObjectiveJ={}; +(function(_1,_2){ +if(!this.JSON){ +JSON={}; +} +(function(){ +function f(n){ +return n<10?"0"+n:n; +}; +if(typeof Date.prototype.toJSON!=="function"){ +Date.prototype.toJSON=function(_3){ +return this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z"; +}; +String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(_4){ +return this.valueOf(); +}; +} +var cx=new RegExp("[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]","g"); +var _5=new RegExp("[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]","g"); +var _6,_7,_8={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\"":"\\\"","\\":"\\\\"},_9; +function _a(_b){ +_5.lastIndex=0; +return _5.test(_b)?"\""+_b.replace(_5,function(a){ +var c=_8[a]; +return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4); +})+"\"":"\""+_b+"\""; +}; +function _c(_d,_e){ +var i,k,v,_f,_10=_6,_11,_12=_e[_d]; +if(_12&&typeof _12==="object"&&typeof _12.toJSON==="function"){ +_12=_12.toJSON(_d); +} +if(typeof _9==="function"){ +_12=_9.call(_e,_d,_12); +} +switch(typeof _12){ +case "string": +return _a(_12); +case "number": +return isFinite(_12)?String(_12):"null"; +case "boolean": +case "null": +return String(_12); +case "object": +if(!_12){ +return "null"; +} +_6+=_7; +_11=[]; +if(Object.prototype.toString.apply(_12)==="[object Array]"){ +_f=_12.length; +for(i=0;i<_f;i+=1){ +_11[i]=_c(i,_12)||"null"; +} +v=_11.length===0?"[]":_6?"[\n"+_6+_11.join(",\n"+_6)+"\n"+_10+"]":"["+_11.join(",")+"]"; +_6=_10; +return v; +} +if(_9&&typeof _9==="object"){ +_f=_9.length; +for(i=0;i<_f;i+=1){ +k=_9[i]; +if(typeof k==="string"){ +v=_c(k,_12); +if(v){ +_11.push(_a(k)+(_6?": ":":")+v); +} +} +} +}else{ +for(k in _12){ +if(Object.hasOwnProperty.call(_12,k)){ +v=_c(k,_12); +if(v){ +_11.push(_a(k)+(_6?": ":":")+v); +} +} +} +} +v=_11.length===0?"{}":_6?"{\n"+_6+_11.join(",\n"+_6)+"\n"+_10+"}":"{"+_11.join(",")+"}"; +_6=_10; +return v; +} +}; +if(typeof JSON.stringify!=="function"){ +JSON.stringify=function(_13,_14,_15){ +var i; +_6=""; +_7=""; +if(typeof _15==="number"){ +for(i=0;i<_15;i+=1){ +_7+=" "; +} +}else{ +if(typeof _15==="string"){ +_7=_15; +} +} +_9=_14; +if(_14&&typeof _14!=="function"&&(typeof _14!=="object"||typeof _14.length!=="number")){ +throw new Error("JSON.stringify"); +} +return _c("",{"":_13}); +}; +} +if(typeof JSON.parse!=="function"){ +JSON.parse=function(_16,_17){ +var j; +function _18(_19,key){ +var k,v,_1a=_19[key]; +if(_1a&&typeof _1a==="object"){ +for(k in _1a){ +if(Object.hasOwnProperty.call(_1a,k)){ +v=_18(_1a,k); +if(v!==_46){ +_1a[k]=v; +}else{ +delete _1a[k]; +} +} +} +} +return _17.call(_19,key,_1a); +}; +cx.lastIndex=0; +if(cx.test(_16)){ +_16=_16.replace(cx,function(a){ +return "\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4); +}); +} +if(/^[\],:{}\s]*$/.test(_16.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){ +j=eval("("+_16+")"); +return typeof _17==="function"?_18({"":j},""):j; +} +throw new SyntaxError("JSON.parse"); +}; +} +}()); +var _1b=new RegExp("([^%]+|%[\\+\\-\\ \\#0]*[0-9\\*]*(.[0-9\\*]+)?[hlL]?[cbBdieEfgGosuxXpn%@])","g"); +var _1c=new RegExp("(%)([\\+\\-\\ \\#0]*)([0-9\\*]*)((.[0-9\\*]+)?)([hlL]?)([cbBdieEfgGosuxXpn%@])"); +_2.sprintf=function(_1d){ +var _1d=arguments[0],_1e=_1d.match(_1b),_1f=0,_20="",arg=1; +for(var i=0;i<_1e.length;i++){ +var t=_1e[i]; +if(_1d.substring(_1f,_1f+t.length)!=t){ +return _20; +} +_1f+=t.length; +if(t.charAt(0)!="%"){ +_20+=t; +}else{ +var _21=t.match(_1c); +if(_21.length!=8||_21[0]!=t){ +return _20; +} +var _22=_21[1],_23=_21[2],_24=_21[3],_25=_21[4],_26=_21[6],_27=_21[7]; +var _28=null; +if(_24=="*"){ +_28=arguments[arg++]; +}else{ +if(_24!=""){ +_28=Number(_24); +} +} +var _29=null; +if(_25==".*"){ +_29=arguments[arg++]; +}else{ +if(_25!=""){ +_29=Number(_25.substring(1)); +} +} +var _2a=(_23.indexOf("-")>=0); +var _2b=(_23.indexOf("0")>=0); +var _2c=""; +if(RegExp("[bBdiufeExXo]").test(_27)){ +var num=Number(arguments[arg++]); +var _2d=""; +if(num<0){ +_2d="-"; +}else{ +if(_23.indexOf("+")>=0){ +_2d="+"; +}else{ +if(_23.indexOf(" ")>=0){ +_2d=" "; +} +} +} +if(_27=="d"||_27=="i"||_27=="u"){ +var _2e=String(Math.abs(Math.floor(num))); +_2c=_2f(_2d,"",_2e,"",_28,_2a,_2b); +} +if(_27=="f"){ +var _2e=String((_29!=null)?Math.abs(num).toFixed(_29):Math.abs(num)); +var _30=(_23.indexOf("#")>=0&&_2e.indexOf(".")<0)?".":""; +_2c=_2f(_2d,"",_2e,_30,_28,_2a,_2b); +} +if(_27=="e"||_27=="E"){ +var _2e=String(Math.abs(num).toExponential(_29!=null?_29:21)); +var _30=(_23.indexOf("#")>=0&&_2e.indexOf(".")<0)?".":""; +_2c=_2f(_2d,"",_2e,_30,_28,_2a,_2b); +} +if(_27=="x"||_27=="X"){ +var _2e=String(Math.abs(num).toString(16)); +var _31=(_23.indexOf("#")>=0&&num!=0)?"0x":""; +_2c=_2f(_2d,_31,_2e,"",_28,_2a,_2b); +} +if(_27=="b"||_27=="B"){ +var _2e=String(Math.abs(num).toString(2)); +var _31=(_23.indexOf("#")>=0&&num!=0)?"0b":""; +_2c=_2f(_2d,_31,_2e,"",_28,_2a,_2b); +} +if(_27=="o"){ +var _2e=String(Math.abs(num).toString(8)); +var _31=(_23.indexOf("#")>=0&&num!=0)?"0":""; +_2c=_2f(_2d,_31,_2e,"",_28,_2a,_2b); +} +if(RegExp("[A-Z]").test(_27)){ +_2c=_2c.toUpperCase(); +}else{ +_2c=_2c.toLowerCase(); +} +}else{ +var _2c=""; +if(_27=="%"){ +_2c="%"; +}else{ +if(_27=="c"){ +_2c=String(arguments[arg++]).charAt(0); +}else{ +if(_27=="s"||_27=="@"){ +_2c=String(arguments[arg++]); +}else{ +if(_27=="p"||_27=="n"){ +arg++; +_2c=""; +} +} +} +} +_2c=_2f("","",_2c,"",_28,_2a,false); +} +_20+=_2c; +} +} +return _20; +}; +function _2f(_32,_33,_34,_35,_36,_37,_38){ +var _39=(_32.length+_33.length+_34.length+_35.length); +if(_37){ +return _32+_33+_34+_35+pad(_36-_39," "); +}else{ +if(_38){ +return _32+_33+pad(_36-_39,"0")+_34+_35; +}else{ +return pad(_36-_39," ")+_32+_33+_34+_35; +} +} +}; +function pad(n,ch){ +return Array(MAX(0,n)+1).join(ch); +}; +CPLogDisable=false; +var _3a="Cappuccino"; +var _3b=["fatal","error","warn","info","debug","trace"]; +var _3c=_3b[3]; +var _3d={}; +for(var i=0;i<_3b.length;i++){ +_3d[_3b[i]]=i; +} +var _3e={}; +CPLogRegister=function(_3f,_40,_41){ +CPLogRegisterRange(_3f,_3b[0],_40||_3b[_3b.length-1],_41); +}; +CPLogRegisterRange=function(_42,_43,_44,_45){ +var min=_3d[_43]; +var max=_3d[_44]; +if(min!==_46&&max!==_46&&min<=max){ +for(var i=min;i<=max;i++){ +CPLogRegisterSingle(_42,_3b[i],_45); +} +} +}; +CPLogRegisterSingle=function(_47,_48,_49){ +if(!_3e[_48]){ +_3e[_48]=[]; +} +for(var i=0;i<_3e[_48].length;i++){ +if(_3e[_48][i][0]===_47){ +_3e[_48][i][1]=_49; +return; +} +} +_3e[_48].push([_47,_49]); +}; +CPLogUnregister=function(_4a){ +for(var _4b in _3e){ +for(var i=0;i<_3e[_4b].length;i++){ +if(_3e[_4b][i][0]===_4a){ +_3e[_4b].splice(i--,1); +} +} +} +}; +function _4c(_4d,_4e,_4f){ +if(_4f==_46){ +_4f=_3a; +} +if(_4e==_46){ +_4e=_3c; +} +var _50=(typeof _4d[0]=="string"&&_4d.length>1)?_2.sprintf.apply(null,_4d):String(_4d[0]); +if(_3e[_4e]){ +for(var i=0;i<_3e[_4e].length;i++){ +var _51=_3e[_4e][i]; +_51[0](_50,_4e,_4f,_51[1]); +} +} +}; +CPLog=function(){ +_4c(arguments); +}; +for(var i=0;i<_3b.length;i++){ +CPLog[_3b[i]]=(function(_52){ +return function(){ +_4c(arguments,_52); +}; +})(_3b[i]); +} +var _53=function(_54,_55,_56){ +var now=new Date(); +_55=(_55==null?"":" ["+CPLogColorize(_55,_55)+"]"); +if(typeof _2.sprintf=="function"){ +return _2.sprintf("%4d-%02d-%02d %02d:%02d:%02d.%03d %s%s: %s",now.getFullYear(),now.getMonth()+1,now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds(),now.getMilliseconds(),_56,_55,_54); +}else{ +return now+" "+_56+_55+": "+_54; +} +}; +CPLogConsole=function(_57,_58,_59,_5a){ +if(typeof console!="undefined"){ +var _5b=(_5a||_53)(_57,_58,_59); +var _5c={"fatal":"error","error":"error","warn":"warn","info":"info","debug":"debug","trace":"debug"}[_58]; +if(_5c&&console[_5c]){ +console[_5c](_5b); +}else{ +if(console.log){ +console.log(_5b); +} +} +} +}; +CPLogColorize=function(_5d,_5e){ +return _5d; +}; +CPLogAlert=function(_5f,_60,_61,_62){ +if(typeof alert!="undefined"&&!CPLogDisable){ +var _63=(_62||_53)(_5f,_60,_61); +CPLogDisable=!confirm(_63+"\n\n(Click cancel to stop log alerts)"); +} +}; +var _64=null; +CPLogPopup=function(_65,_66,_67,_68){ +try{ +if(CPLogDisable||window.open==_46){ +return; +} +if(!_64||!_64.document){ +_64=window.open("","_blank","width=600,height=400,status=no,resizable=yes,scrollbars=yes"); +if(!_64){ +CPLogDisable=!confirm(_65+"\n\n(Disable pop-up blocking for CPLog window; Click cancel to stop log alerts)"); +return; +} +_69(_64); +} +var _6a=_64.document.createElement("div"); +_6a.setAttribute("class",_66||"fatal"); +var _6b=(_68||_53)(_65,_68?_66:null,_67); +_6a.appendChild(_64.document.createTextNode(_6b)); +_64.log.appendChild(_6a); +if(_64.focusEnabled.checked){ +_64.focus(); +} +if(_64.blockEnabled.checked){ +_64.blockEnabled.checked=_64.confirm(_6b+"\nContinue blocking?"); +} +if(_64.scrollEnabled.checked){ +_64.scrollToBottom(); +} +} +catch(e){ +} +}; +var _6c=""; +function _69(_6d){ +var doc=_6d.document; +doc.writeln(""+_6c+""); +doc.title=_3a+" Run Log"; +var _6e=doc.getElementsByTagName("head")[0]; +var _6f=doc.getElementsByTagName("body")[0]; +var _70=window.location.protocol+"//"+window.location.host+window.location.pathname; +_70=_70.substring(0,_70.lastIndexOf("/")+1); +var div=doc.createElement("div"); +div.setAttribute("id","header"); +_6f.appendChild(div); +var ul=doc.createElement("ul"); +ul.setAttribute("id","enablers"); +div.appendChild(ul); +for(var i=0;i<_3b.length;i++){ +var li=doc.createElement("li"); +li.setAttribute("id","en"+_3b[i]); +li.setAttribute("class",_3b[i]); +li.setAttribute("onclick","toggle(this);"); +li.setAttribute("enabled","yes"); +li.appendChild(doc.createTextNode(_3b[i])); +ul.appendChild(li); +} +var ul=doc.createElement("ul"); +ul.setAttribute("id","options"); +div.appendChild(ul); +var _71={"focus":["Focus",false],"block":["Block",false],"wrap":["Wrap",false],"scroll":["Scroll",true],"close":["Close",true]}; +for(o in _71){ +var li=doc.createElement("li"); +ul.appendChild(li); +_6d[o+"Enabled"]=doc.createElement("input"); +_6d[o+"Enabled"].setAttribute("id",o); +_6d[o+"Enabled"].setAttribute("type","checkbox"); +if(_71[o][1]){ +_6d[o+"Enabled"].setAttribute("checked","checked"); +} +li.appendChild(_6d[o+"Enabled"]); +var _72=doc.createElement("label"); +_72.setAttribute("for",o); +_72.appendChild(doc.createTextNode(_71[o][0])); +li.appendChild(_72); +} +_6d.log=doc.createElement("div"); +_6d.log.setAttribute("class","enerror endebug enwarn eninfo enfatal entrace"); +_6f.appendChild(_6d.log); +_6d.toggle=function(_73){ +var _74=(_73.getAttribute("enabled")=="yes")?"no":"yes"; +_73.setAttribute("enabled",_74); +if(_74=="yes"){ +_6d.log.className+=" "+_73.id; +}else{ +_6d.log.className=_6d.log.className.replace(new RegExp("[\\s]*"+_73.id,"g"),""); +} +}; +_6d.scrollToBottom=function(){ +_6d.scrollTo(0,_6f.offsetHeight); +}; +_6d.wrapEnabled.addEventListener("click",function(){ +_6d.log.setAttribute("wrap",_6d.wrapEnabled.checked?"yes":"no"); +},false); +_6d.addEventListener("keydown",function(e){ +var e=e||_6d.event; +if(e.keyCode==75&&(e.ctrlKey||e.metaKey)){ +while(_6d.log.firstChild){ +_6d.log.removeChild(_6d.log.firstChild); +} +e.preventDefault(); +} +},"false"); +window.addEventListener("unload",function(){ +if(_6d&&_6d.closeEnabled&&_6d.closeEnabled.checked){ +CPLogDisable=true; +_6d.close(); +} +},false); +_6d.addEventListener("unload",function(){ +if(!CPLogDisable){ +CPLogDisable=!confirm("Click cancel to stop logging"); +} +},false); +}; +CPLogDefault=(typeof window==="object"&&window.console)?CPLogConsole:CPLogPopup; +var _46; +if(typeof window!=="undefined"){ +window.setNativeTimeout=window.setTimeout; +window.clearNativeTimeout=window.clearTimeout; +window.setNativeInterval=window.setInterval; +window.clearNativeInterval=window.clearInterval; +} +NO=false; +YES=true; +nil=null; +Nil=null; +NULL=null; +ABS=Math.abs; +ASIN=Math.asin; +ACOS=Math.acos; +ATAN=Math.atan; +ATAN2=Math.atan2; +SIN=Math.sin; +COS=Math.cos; +TAN=Math.tan; +EXP=Math.exp; +POW=Math.pow; +CEIL=Math.ceil; +FLOOR=Math.floor; +ROUND=Math.round; +MIN=Math.min; +MAX=Math.max; +RAND=Math.random; +SQRT=Math.sqrt; +E=Math.E; +LN2=Math.LN2; +LN10=Math.LN10; +LOG2E=Math.LOG2E; +LOG10E=Math.LOG10E; +PI=Math.PI; +PI2=Math.PI*2; +PI_2=Math.PI/2; +SQRT1_2=Math.SQRT1_2; +SQRT2=Math.SQRT2; +function _75(_76){ +this._eventListenersForEventNames={}; +this._owner=_76; +}; +_75.prototype.addEventListener=function(_77,_78){ +var _79=this._eventListenersForEventNames; +if(!_7a.call(_79,_77)){ +var _7b=[]; +_79[_77]=_7b; +}else{ +var _7b=_79[_77]; +} +var _7c=_7b.length; +while(_7c--){ +if(_7b[_7c]===_78){ +return; +} +} +_7b.push(_78); +}; +_75.prototype.removeEventListener=function(_7d,_7e){ +var _7f=this._eventListenersForEventNames; +if(!_7a.call(_7f,_7d)){ +return; +} +var _80=_7f[_7d],_81=_80.length; +while(_81--){ +if(_80[_81]===_7e){ +return _80.splice(_81,1); +} +} +}; +_75.prototype.dispatchEvent=function(_82){ +var _83=_82.type,_84=this._eventListenersForEventNames; +if(_7a.call(_84,_83)){ +var _85=this._eventListenersForEventNames[_83],_86=0,_87=_85.length; +for(;_86<_87;++_86){ +_85[_86](_82); +} +} +var _88=(this._owner||this)["on"+_83]; +if(_88){ +_88(_82); +} +}; +var _89=0,_8a=null,_8b=[]; +function _8c(_8d){ +var _8e=_89; +if(_8a===null){ +window.setNativeTimeout(function(){ +var _8f=_8b,_90=0,_91=_8b.length; +++_89; +_8a=null; +_8b=[]; +for(;_90<_91;++_90){ +_8f[_90](); +} +},0); +} +return function(){ +var _92=arguments; +if(_89>_8e){ +_8d.apply(this,_92); +}else{ +_8b.push(function(){ +_8d.apply(this,_92); +}); +} +}; +}; +var _93=null; +if(window.ActiveXObject!==_46){ +var _94=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP.6.0"],_95=_94.length; +while(_95--){ +try{ +var _96=_94[_95]; +new ActiveXObject(_96); +_93=function(){ +return new ActiveXObject(_96); +}; +break; +} +catch(anException){ +} +} +} +if(!_93){ +_93=window.XMLHttpRequest; +} +CFHTTPRequest=function(){ +this._isOpen=false; +this._requestHeaders={}; +this._mimeType=null; +this._eventDispatcher=new _75(this); +this._nativeRequest=new _93(); +var _97=this; +this._stateChangeHandler=function(){ +_aa(_97); +}; +this._nativeRequest.onreadystatechange=this._stateChangeHandler; +if(CFHTTPRequest.AuthenticationDelegate!==nil){ +this._eventDispatcher.addEventListener("HTTP403",function(){ +CFHTTPRequest.AuthenticationDelegate(_97); +}); +} +}; +CFHTTPRequest.UninitializedState=0; +CFHTTPRequest.LoadingState=1; +CFHTTPRequest.LoadedState=2; +CFHTTPRequest.InteractiveState=3; +CFHTTPRequest.CompleteState=4; +CFHTTPRequest.AuthenticationDelegate=nil; +CFHTTPRequest.prototype.status=function(){ +try{ +return this._nativeRequest.status||0; +} +catch(anException){ +return 0; +} +}; +CFHTTPRequest.prototype.statusText=function(){ +try{ +return this._nativeRequest.statusText||""; +} +catch(anException){ +return ""; +} +}; +CFHTTPRequest.prototype.readyState=function(){ +return this._nativeRequest.readyState; +}; +CFHTTPRequest.prototype.success=function(){ +var _98=this.status(); +if(_98>=200&&_98<300){ +return YES; +} +return _98===0&&this.responseText()&&this.responseText().length; +}; +CFHTTPRequest.prototype.responseXML=function(){ +var _99=this._nativeRequest.responseXML; +if(_99&&(_93===window.XMLHttpRequest)){ +return _99; +} +return _9a(this.responseText()); +}; +CFHTTPRequest.prototype.responsePropertyList=function(){ +var _9b=this.responseText(); +if(CFPropertyList.sniffedFormatOfString(_9b)===CFPropertyList.FormatXML_v1_0){ +return CFPropertyList.propertyListFromXML(this.responseXML()); +} +return CFPropertyList.propertyListFromString(_9b); +}; +CFHTTPRequest.prototype.responseText=function(){ +return this._nativeRequest.responseText; +}; +CFHTTPRequest.prototype.setRequestHeader=function(_9c,_9d){ +this._requestHeaders[_9c]=_9d; +}; +CFHTTPRequest.prototype.getResponseHeader=function(_9e){ +return this._nativeRequest.getResponseHeader(_9e); +}; +CFHTTPRequest.prototype.getAllResponseHeaders=function(){ +return this._nativeRequest.getAllResponseHeaders(); +}; +CFHTTPRequest.prototype.overrideMimeType=function(_9f){ +this._mimeType=_9f; +}; +CFHTTPRequest.prototype.open=function(_a0,_a1,_a2,_a3,_a4){ +this._isOpen=true; +this._URL=_a1; +this._async=_a2; +this._method=_a0; +this._user=_a3; +this._password=_a4; +return this._nativeRequest.open(_a0,_a1,_a2,_a3,_a4); +}; +CFHTTPRequest.prototype.send=function(_a5){ +if(!this._isOpen){ +delete this._nativeRequest.onreadystatechange; +this._nativeRequest.open(this._method,this._URL,this._async,this._user,this._password); +this._nativeRequest.onreadystatechange=this._stateChangeHandler; +} +for(var i in this._requestHeaders){ +if(this._requestHeaders.hasOwnProperty(i)){ +this._nativeRequest.setRequestHeader(i,this._requestHeaders[i]); +} +} +if(this._mimeType&&"overrideMimeType" in this._nativeRequest){ +this._nativeRequest.overrideMimeType(this._mimeType); +} +this._isOpen=false; +try{ +return this._nativeRequest.send(_a5); +} +catch(anException){ +this._eventDispatcher.dispatchEvent({type:"failure",request:this}); +} +}; +CFHTTPRequest.prototype.abort=function(){ +this._isOpen=false; +return this._nativeRequest.abort(); +}; +CFHTTPRequest.prototype.addEventListener=function(_a6,_a7){ +this._eventDispatcher.addEventListener(_a6,_a7); +}; +CFHTTPRequest.prototype.removeEventListener=function(_a8,_a9){ +this._eventDispatcher.removeEventListener(_a8,_a9); +}; +function _aa(_ab){ +var _ac=_ab._eventDispatcher; +_ac.dispatchEvent({type:"readystatechange",request:_ab}); +var _ad=_ab._nativeRequest,_ae=["uninitialized","loading","loaded","interactive","complete"]; +if(_ae[_ab.readyState()]==="complete"){ +var _af="HTTP"+_ab.status(); +_ac.dispatchEvent({type:_af,request:_ab}); +var _b0=_ab.success()?"success":"failure"; +_ac.dispatchEvent({type:_b0,request:_ab}); +_ac.dispatchEvent({type:_ae[_ab.readyState()],request:_ab}); +}else{ +_ac.dispatchEvent({type:_ae[_ab.readyState()],request:_ab}); +} +}; +function _b1(_b2,_b3,_b4){ +var _b5=new CFHTTPRequest(); +if(_b2.pathExtension()==="plist"){ +_b5.overrideMimeType("text/xml"); +} +if(_2.asyncLoader){ +_b5.onsuccess=_8c(_b3); +_b5.onfailure=_8c(_b4); +}else{ +_b5.onsuccess=_b3; +_b5.onfailure=_b4; +} +_b5.open("GET",_b2.absoluteString(),_2.asyncLoader); +_b5.send(""); +}; +_2.asyncLoader=YES; +_2.Asynchronous=_8c; +_2.determineAndDispatchHTTPRequestEvents=_aa; +var _b6=0; +objj_generateObjectUID=function(){ +return _b6++; +}; +CFPropertyList=function(){ +this._UID=objj_generateObjectUID(); +}; +CFPropertyList.DTDRE=/^\s*(?:<\?\s*xml\s+version\s*=\s*\"1.0\"[^>]*\?>\s*)?(?:<\!DOCTYPE[^>]*>\s*)?/i; +CFPropertyList.XMLRE=/^\s*(?:<\?\s*xml\s+version\s*=\s*\"1.0\"[^>]*\?>\s*)?(?:<\!DOCTYPE[^>]*>\s*)?<\s*plist[^>]*\>/i; +CFPropertyList.FormatXMLDTD="\n"; +CFPropertyList.Format280NorthMagicNumber="280NPLIST"; +CFPropertyList.FormatOpenStep=1,CFPropertyList.FormatXML_v1_0=100,CFPropertyList.FormatBinary_v1_0=200,CFPropertyList.Format280North_v1_0=-1000; +CFPropertyList.sniffedFormatOfString=function(_b7){ +if(_b7.match(CFPropertyList.XMLRE)){ +return CFPropertyList.FormatXML_v1_0; +} +if(_b7.substr(0,CFPropertyList.Format280NorthMagicNumber.length)===CFPropertyList.Format280NorthMagicNumber){ +return CFPropertyList.Format280North_v1_0; +} +return NULL; +}; +CFPropertyList.dataFromPropertyList=function(_b8,_b9){ +var _ba=new CFMutableData(); +_ba.setRawString(CFPropertyList.stringFromPropertyList(_b8,_b9)); +return _ba; +}; +CFPropertyList.stringFromPropertyList=function(_bb,_bc){ +if(!_bc){ +_bc=CFPropertyList.Format280North_v1_0; +} +var _bd=_be[_bc]; +return _bd["start"]()+_bf(_bb,_bd)+_bd["finish"](); +}; +function _bf(_c0,_c1){ +var _c2=typeof _c0,_c3=_c0.valueOf(),_c4=typeof _c3; +if(_c2!==_c4){ +_c2=_c4; +_c0=_c3; +} +if(_c0===YES||_c0===NO){ +_c2="boolean"; +}else{ +if(_c2==="number"){ +if(FLOOR(_c0)===_c0){ +_c2="integer"; +}else{ +_c2="real"; +} +}else{ +if(_c2!=="string"){ +if(_c0.slice){ +_c2="array"; +}else{ +_c2="dictionary"; +} +} +} +} +return _c1[_c2](_c0,_c1); +}; +var _be={}; +_be[CFPropertyList.FormatXML_v1_0]={"start":function(){ +return CFPropertyList.FormatXMLDTD+""; +},"finish":function(){ +return ""; +},"string":function(_c5){ +return ""+_c6(_c5)+""; +},"boolean":function(_c7){ +return _c7?"":""; +},"integer":function(_c8){ +return ""+_c8+""; +},"real":function(_c9){ +return ""+_c9+""; +},"array":function(_ca,_cb){ +var _cc=0,_cd=_ca.length,_ce=""; +for(;_cc<_cd;++_cc){ +_ce+=_bf(_ca[_cc],_cb); +} +return _ce+""; +},"dictionary":function(_cf,_d0){ +var _d1=_cf._keys,_95=0,_d2=_d1.length,_d3=""; +for(;_95<_d2;++_95){ +var key=_d1[_95]; +_d3+=""+key+""; +_d3+=_bf(_cf.valueForKey(key),_d0); +} +return _d3+""; +}}; +var _d4="A",_d5="D",_d6="f",_d7="d",_d8="S",_d9="T",_da="F",_db="K",_dc="E"; +_be[CFPropertyList.Format280North_v1_0]={"start":function(){ +return CFPropertyList.Format280NorthMagicNumber+";1.0;"; +},"finish":function(){ +return ""; +},"string":function(_dd){ +return _d8+";"+_dd.length+";"+_dd; +},"boolean":function(_de){ +return (_de?_d9:_da)+";"; +},"integer":function(_df){ +var _e0=""+_df; +return _d7+";"+_e0.length+";"+_e0; +},"real":function(_e1){ +var _e2=""+_e1; +return _d6+";"+_e2.length+";"+_e2; +},"array":function(_e3,_e4){ +var _e5=0,_e6=_e3.length,_e7=_d4+";"; +for(;_e5<_e6;++_e5){ +_e7+=_bf(_e3[_e5],_e4); +} +return _e7+_dc+";"; +},"dictionary":function(_e8,_e9){ +var _ea=_e8._keys,_95=0,_eb=_ea.length,_ec=_d5+";"; +for(;_95<_eb;++_95){ +var key=_ea[_95]; +_ec+=_db+";"+key.length+";"+key; +_ec+=_bf(_e8.valueForKey(key),_e9); +} +return _ec+_dc+";"; +}}; +var _ed="xml",_ee="#document",_ef="plist",_f0="key",_f1="dict",_f2="array",_f3="string",_f4="true",_f5="false",_f6="real",_f7="integer",_f8="data"; +var _f9=function(_fa,_fb,_fc){ +var _fd=_fa; +_fd=(_fd.firstChild); +if(_fd!==NULL&&((_fd.nodeType)===8||(_fd.nodeType)===3)){ +while((_fd=(_fd.nextSibling))&&((_fd.nodeType)===8||(_fd.nodeType)===3)){ +} +} +if(_fd){ +return _fd; +} +if((String(_fa.nodeName))===_f2||(String(_fa.nodeName))===_f1){ +_fc.pop(); +}else{ +if(_fd===_fb){ +return NULL; +} +_fd=_fa; +while((_fd=(_fd.nextSibling))&&((_fd.nodeType)===8||(_fd.nodeType)===3)){ +} +if(_fd){ +return _fd; +} +} +_fd=_fa; +while(_fd){ +var _fe=_fd; +while((_fe=(_fe.nextSibling))&&((_fe.nodeType)===8||(_fe.nodeType)===3)){ +} +if(_fe){ +return _fe; +} +var _fd=(_fd.parentNode); +if(_fb&&_fd===_fb){ +return NULL; +} +_fc.pop(); +} +return NULL; +}; +CFPropertyList.propertyListFromData=function(_ff,_100){ +return CFPropertyList.propertyListFromString(_ff.rawString(),_100); +}; +CFPropertyList.propertyListFromString=function(_101,_102){ +if(!_102){ +_102=CFPropertyList.sniffedFormatOfString(_101); +} +if(_102===CFPropertyList.FormatXML_v1_0){ +return CFPropertyList.propertyListFromXML(_101); +} +if(_102===CFPropertyList.Format280North_v1_0){ +return _103(_101); +} +return NULL; +}; +var _d4="A",_d5="D",_d6="f",_d7="d",_d8="S",_d9="T",_da="F",_db="K",_dc="E"; +function _103(_104){ +var _105=new _106(_104),_107=NULL,key="",_108=NULL,_109=NULL,_10a=[],_10b=NULL; +while(_107=_105.getMarker()){ +if(_107===_dc){ +_10a.pop(); +continue; +} +var _10c=_10a.length; +if(_10c){ +_10b=_10a[_10c-1]; +} +if(_107===_db){ +key=_105.getString(); +_107=_105.getMarker(); +} +switch(_107){ +case _d4: +_108=[]; +_10a.push(_108); +break; +case _d5: +_108=new CFMutableDictionary(); +_10a.push(_108); +break; +case _d6: +_108=parseFloat(_105.getString()); +break; +case _d7: +_108=parseInt(_105.getString(),10); +break; +case _d8: +_108=_105.getString(); +break; +case _d9: +_108=YES; +break; +case _da: +_108=NO; +break; +default: +throw new Error("*** "+_107+" marker not recognized in Plist."); +} +if(!_109){ +_109=_108; +}else{ +if(_10b){ +if(_10b.slice){ +_10b.push(_108); +}else{ +_10b.setValueForKey(key,_108); +} +} +} +} +return _109; +}; +function _c6(_10d){ +return _10d.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">"); +}; +function _10e(_10f){ +return _10f.replace(/"/g,"\"").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"); +}; +function _9a(_110){ +if(window.DOMParser){ +return (new window.DOMParser().parseFromString(_110,"text/xml").documentElement); +}else{ +if(window.ActiveXObject){ +XMLNode=new ActiveXObject("Microsoft.XMLDOM"); +var _111=_110.match(CFPropertyList.DTDRE); +if(_111){ +_110=_110.substr(_111[0].length); +} +XMLNode.loadXML(_110); +return XMLNode; +} +} +return NULL; +}; +CFPropertyList.propertyListFromXML=function(_112){ +var _113=_112; +if(_112.valueOf&&typeof _112.valueOf()==="string"){ +_113=_9a(_112); +} +while(((String(_113.nodeName))===_ee)||((String(_113.nodeName))===_ed)){ +_113=(_113.firstChild); +} +if(_113!==NULL&&((_113.nodeType)===8||(_113.nodeType)===3)){ +while((_113=(_113.nextSibling))&&((_113.nodeType)===8||(_113.nodeType)===3)){ +} +} +if(((_113.nodeType)===10)){ +while((_113=(_113.nextSibling))&&((_113.nodeType)===8||(_113.nodeType)===3)){ +} +} +if(!((String(_113.nodeName))===_ef)){ +return NULL; +} +var key="",_114=NULL,_115=NULL,_116=_113,_117=[],_118=NULL; +while(_113=_f9(_113,_116,_117)){ +var _119=_117.length; +if(_119){ +_118=_117[_119-1]; +} +if((String(_113.nodeName))===_f0){ +key=((String((_113.firstChild).nodeValue))); +while((_113=(_113.nextSibling))&&((_113.nodeType)===8||(_113.nodeType)===3)){ +} +} +switch(String((String(_113.nodeName)))){ +case _f2: +_114=[]; +_117.push(_114); +break; +case _f1: +_114=new CFMutableDictionary(); +_117.push(_114); +break; +case _f6: +_114=parseFloat(((String((_113.firstChild).nodeValue)))); +break; +case _f7: +_114=parseInt(((String((_113.firstChild).nodeValue))),10); +break; +case _f3: +if((_113.getAttribute("type")==="base64")){ +_114=(_113.firstChild)?CFData.decodeBase64ToString(((String((_113.firstChild).nodeValue)))):""; +}else{ +_114=_10e((_113.firstChild)?((String((_113.firstChild).nodeValue))):""); +} +break; +case _f4: +_114=YES; +break; +case _f5: +_114=NO; +break; +case _f8: +_114=new CFMutableData(); +_114.bytes=(_113.firstChild)?CFData.decodeBase64ToArray(((String((_113.firstChild).nodeValue))),YES):[]; +break; +default: +throw new Error("*** "+(String(_113.nodeName))+" tag not recognized in Plist."); +} +if(!_115){ +_115=_114; +}else{ +if(_118){ +if(_118.slice){ +_118.push(_114); +}else{ +_118.setValueForKey(key,_114); +} +} +} +} +return _115; +}; +kCFPropertyListOpenStepFormat=CFPropertyList.FormatOpenStep; +kCFPropertyListXMLFormat_v1_0=CFPropertyList.FormatXML_v1_0; +kCFPropertyListBinaryFormat_v1_0=CFPropertyList.FormatBinary_v1_0; +kCFPropertyList280NorthFormat_v1_0=CFPropertyList.Format280North_v1_0; +CFPropertyListCreate=function(){ +return new CFPropertyList(); +}; +CFPropertyListCreateFromXMLData=function(data){ +return CFPropertyList.propertyListFromData(data,CFPropertyList.FormatXML_v1_0); +}; +CFPropertyListCreateXMLData=function(_11a){ +return CFPropertyList.dataFromPropertyList(_11a,CFPropertyList.FormatXML_v1_0); +}; +CFPropertyListCreateFrom280NorthData=function(data){ +return CFPropertyList.propertyListFromData(data,CFPropertyList.Format280North_v1_0); +}; +CFPropertyListCreate280NorthData=function(_11b){ +return CFPropertyList.dataFromPropertyList(_11b,CFPropertyList.Format280North_v1_0); +}; +CPPropertyListCreateFromData=function(data,_11c){ +return CFPropertyList.propertyListFromData(data,_11c); +}; +CPPropertyListCreateData=function(_11d,_11e){ +return CFPropertyList.dataFromPropertyList(_11d,_11e); +}; +CFDictionary=function(_11f){ +this._keys=[]; +this._count=0; +this._buckets={}; +this._UID=objj_generateObjectUID(); +}; +var _120=Array.prototype.indexOf,_7a=Object.prototype.hasOwnProperty; +CFDictionary.prototype.copy=function(){ +return this; +}; +CFDictionary.prototype.mutableCopy=function(){ +var _121=new CFMutableDictionary(),keys=this._keys,_122=this._count; +_121._keys=keys.slice(); +_121._count=_122; +var _123=0,_124=this._buckets,_125=_121._buckets; +for(;_123<_122;++_123){ +var key=keys[_123]; +_125[key]=_124[key]; +} +return _121; +}; +CFDictionary.prototype.containsKey=function(aKey){ +return _7a.apply(this._buckets,[aKey]); +}; +CFDictionary.prototype.containsValue=function(_126){ +var keys=this._keys,_127=this._buckets,_95=0,_128=keys.length; +for(;_95<_128;++_95){ +if(_127[keys[_95]]===_126){ +return YES; +} +} +return NO; +}; +CFDictionary.prototype.count=function(){ +return this._count; +}; +CFDictionary.prototype.countOfKey=function(aKey){ +return this.containsKey(aKey)?1:0; +}; +CFDictionary.prototype.countOfValue=function(_129){ +var keys=this._keys,_12a=this._buckets,_95=0,_12b=keys.length,_12c=0; +for(;_95<_12b;++_95){ +if(_12a[keys[_95]]===_129){ +++_12c; +} +} +return _12c; +}; +CFDictionary.prototype.keys=function(){ +return this._keys.slice(); +}; +CFDictionary.prototype.valueForKey=function(aKey){ +var _12d=this._buckets; +if(!_7a.apply(_12d,[aKey])){ +return nil; +} +return _12d[aKey]; +}; +CFDictionary.prototype.toString=function(){ +var _12e="{\n",keys=this._keys,_95=0,_12f=this._count; +for(;_95<_12f;++_95){ +var key=keys[_95]; +_12e+="\t"+key+" = \""+String(this.valueForKey(key)).split("\n").join("\n\t")+"\"\n"; +} +return _12e+"}"; +}; +CFMutableDictionary=function(_130){ +CFDictionary.apply(this,[]); +}; +CFMutableDictionary.prototype=new CFDictionary(); +CFMutableDictionary.prototype.copy=function(){ +return this.mutableCopy(); +}; +CFMutableDictionary.prototype.addValueForKey=function(aKey,_131){ +if(this.containsKey(aKey)){ +return; +} +++this._count; +this._keys.push(aKey); +this._buckets[aKey]=_131; +}; +CFMutableDictionary.prototype.removeValueForKey=function(aKey){ +var _132=-1; +if(_120){ +_132=_120.call(this._keys,aKey); +}else{ +var keys=this._keys,_95=0,_133=keys.length; +for(;_95<_133;++_95){ +if(keys[_95]===aKey){ +_132=_95; +break; +} +} +} +if(_132===-1){ +return; +} +--this._count; +this._keys.splice(_132,1); +delete this._buckets[aKey]; +}; +CFMutableDictionary.prototype.removeAllValues=function(){ +this._count=0; +this._keys=[]; +this._buckets={}; +}; +CFMutableDictionary.prototype.replaceValueForKey=function(aKey,_134){ +if(!this.containsKey(aKey)){ +return; +} +this._buckets[aKey]=_134; +}; +CFMutableDictionary.prototype.setValueForKey=function(aKey,_135){ +if(_135===nil||_135===_46){ +this.removeValueForKey(aKey); +}else{ +if(this.containsKey(aKey)){ +this.replaceValueForKey(aKey,_135); +}else{ +this.addValueForKey(aKey,_135); +} +} +}; +CFData=function(){ +this._rawString=NULL; +this._propertyList=NULL; +this._propertyListFormat=NULL; +this._JSONObject=NULL; +this._bytes=NULL; +this._base64=NULL; +}; +CFData.prototype.propertyList=function(){ +if(!this._propertyList){ +this._propertyList=CFPropertyList.propertyListFromString(this.rawString()); +} +return this._propertyList; +}; +CFData.prototype.JSONObject=function(){ +if(!this._JSONObject){ +try{ +this._JSONObject=JSON.parse(this.rawString()); +} +catch(anException){ +} +} +return this._JSONObject; +}; +CFData.prototype.rawString=function(){ +if(this._rawString===NULL){ +if(this._propertyList){ +this._rawString=CFPropertyList.stringFromPropertyList(this._propertyList,this._propertyListFormat); +}else{ +if(this._JSONObject){ +this._rawString=JSON.stringify(this._JSONObject); +}else{ +throw new Error("Can't convert data to string."); +} +} +} +return this._rawString; +}; +CFData.prototype.bytes=function(){ +return this._bytes; +}; +CFData.prototype.base64=function(){ +return this._base64; +}; +CFMutableData=function(){ +CFData.call(this); +}; +CFMutableData.prototype=new CFData(); +function _136(_137){ +this._rawString=NULL; +this._propertyList=NULL; +this._propertyListFormat=NULL; +this._JSONObject=NULL; +this._bytes=NULL; +this._base64=NULL; +}; +CFMutableData.prototype.setPropertyList=function(_138,_139){ +_136(this); +this._propertyList=_138; +this._propertyListFormat=_139; +}; +CFMutableData.prototype.setJSONObject=function(_13a){ +_136(this); +this._JSONObject=_13a; +}; +CFMutableData.prototype.setRawString=function(_13b){ +_136(this); +this._rawString=_13b; +}; +CFMutableData.prototype.setBytes=function(_13c){ +_136(this); +this._bytes=_13c; +}; +CFMutableData.prototype.setBase64String=function(_13d){ +_136(this); +this._base64=_13d; +}; +var _13e=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/","="],_13f=[]; +for(var i=0;i<_13e.length;i++){ +_13f[_13e[i].charCodeAt(0)]=i; +} +CFData.decodeBase64ToArray=function(_140,_141){ +if(_141){ +_140=_140.replace(/[^A-Za-z0-9\+\/\=]/g,""); +} +var pad=(_140[_140.length-1]=="="?1:0)+(_140[_140.length-2]=="="?1:0),_142=_140.length,_143=[]; +var i=0; +while(i<_142){ +var bits=(_13f[_140.charCodeAt(i++)]<<18)|(_13f[_140.charCodeAt(i++)]<<12)|(_13f[_140.charCodeAt(i++)]<<6)|(_13f[_140.charCodeAt(i++)]); +_143.push((bits&16711680)>>16); +_143.push((bits&65280)>>8); +_143.push(bits&255); +} +if(pad>0){ +return _143.slice(0,-1*pad); +} +return _143; +}; +CFData.encodeBase64Array=function(_144){ +var pad=(3-(_144.length%3))%3,_145=_144.length+pad,_146=[]; +if(pad>0){ +_144.push(0); +} +if(pad>1){ +_144.push(0); +} +var i=0; +while(i<_145){ +var bits=(_144[i++]<<16)|(_144[i++]<<8)|(_144[i++]); +_146.push(_13e[(bits&16515072)>>18]); +_146.push(_13e[(bits&258048)>>12]); +_146.push(_13e[(bits&4032)>>6]); +_146.push(_13e[bits&63]); +} +if(pad>0){ +_146[_146.length-1]="="; +_144.pop(); +} +if(pad>1){ +_146[_146.length-2]="="; +_144.pop(); +} +return _146.join(""); +}; +CFData.decodeBase64ToString=function(_147,_148){ +return CFData.bytesToString(CFData.decodeBase64ToArray(_147,_148)); +}; +CFData.decodeBase64ToUtf16String=function(_149,_14a){ +return CFData.bytesToUtf16String(CFData.decodeBase64ToArray(_149,_14a)); +}; +CFData.bytesToString=function(_14b){ +return String.fromCharCode.apply(NULL,_14b); +}; +CFData.encodeBase64String=function(_14c){ +var temp=[]; +for(var i=0;i<_14c.length;i++){ +temp.push(_14c.charCodeAt(i)); +} +return CFData.encodeBase64Array(temp); +}; +CFData.bytesToUtf16String=function(_14d){ +var temp=[]; +for(var i=0;i<_14d.length;i+=2){ +temp.push(_14d[i+1]<<8|_14d[i]); +} +return String.fromCharCode.apply(NULL,temp); +}; +CFData.encodeBase64Utf16String=function(_14e){ +var temp=[]; +for(var i=0;i<_14e.length;i++){ +var c=_14e.charCodeAt(i); +temp.push(_14e.charCodeAt(i)&255); +temp.push((_14e.charCodeAt(i)&65280)>>8); +} +return CFData.encodeBase64Array(temp); +}; +var _14f,_150,_151=0; +function _152(){ +if(++_151!==1){ +return; +} +_14f={}; +_150={}; +}; +function _153(){ +_151=MAX(_151-1,0); +if(_151!==0){ +return; +} +delete _14f; +delete _150; +}; +var _154=new RegExp("^"+"(?:"+"([^:/?#]+):"+")?"+"(?:"+"(//)"+"("+"(?:"+"("+"([^:@]*)"+":?"+"([^:@]*)"+")?"+"@"+")?"+"([^:/?#]*)"+"(?::(\\d*))?"+")"+")?"+"([^?#]*)"+"(?:\\?([^#]*))?"+"(?:#(.*))?"); +var _155=["url","scheme","authorityRoot","authority","userInfo","user","password","domain","portNumber","path","queryString","fragment"]; +function _156(aURL){ +if(aURL._parts){ +return aURL._parts; +} +var _157=aURL.string(),_158=_157.match(/^mhtml:/); +if(_158){ +_157=_157.substr("mhtml:".length); +} +if(_151>0&&_7a.call(_150,_157)){ +aURL._parts=_150[_157]; +return aURL._parts; +} +aURL._parts={}; +var _159=aURL._parts,_15a=_154.exec(_157),_95=_15a.length; +while(_95--){ +_159[_155[_95]]=_15a[_95]||NULL; +} +_159.portNumber=parseInt(_159.portNumber,10); +if(isNaN(_159.portNumber)){ +_159.portNumber=-1; +} +_159.pathComponents=[]; +if(_159.path){ +var _15b=_159.path.split("/"),_15c=_159.pathComponents,_95=0,_15d=_15b.length; +for(;_95<_15d;++_95){ +var _15e=_15b[_95]; +if(_15e){ +_15c.push(_15e); +}else{ +if(_95===0){ +_15c.push("/"); +} +} +} +_159.pathComponents=_15c; +} +if(_158){ +_159.url="mhtml:"+_159.url; +_159.scheme="mhtml:"+_159.scheme; +} +if(_151>0){ +_150[_157]=_159; +} +return _159; +}; +CFURL=function(aURL,_15f){ +aURL=aURL||""; +if(aURL instanceof CFURL){ +if(!_15f){ +return aURL; +} +var _160=aURL.baseURL(); +if(_160){ +_15f=new CFURL(_160.absoluteURL(),_15f); +} +aURL=aURL.string(); +} +if(_151>0){ +var _161=aURL+" "+(_15f&&_15f.UID()||""); +if(_7a.call(_14f,_161)){ +return _14f[_161]; +} +_14f[_161]=this; +} +if(aURL.match(/^data:/)){ +var _162={},_95=_155.length; +while(_95--){ +_162[_155[_95]]=""; +} +_162.url=aURL; +_162.scheme="data"; +_162.pathComponents=[]; +this._parts=_162; +this._standardizedURL=this; +this._absoluteURL=this; +} +this._UID=objj_generateObjectUID(); +this._string=aURL; +this._baseURL=_15f; +}; +CFURL.prototype.UID=function(){ +return this._UID; +}; +var _163={}; +CFURL.prototype.mappedURL=function(){ +return _163[this.absoluteString()]||this; +}; +CFURL.setMappedURLForURL=function(_164,_165){ +_163[_164.absoluteString()]=_165; +}; +CFURL.prototype.schemeAndAuthority=function(){ +var _166="",_167=this.scheme(); +if(_167){ +_166+=_167+":"; +} +var _168=this.authority(); +if(_168){ +_166+="//"+_168; +} +return _166; +}; +CFURL.prototype.absoluteString=function(){ +if(this._absoluteString===_46){ +this._absoluteString=this.absoluteURL().string(); +} +return this._absoluteString; +}; +CFURL.prototype.toString=function(){ +return this.absoluteString(); +}; +function _169(aURL){ +aURL=aURL.standardizedURL(); +var _16a=aURL.baseURL(); +if(!_16a){ +return aURL; +} +var _16b=((aURL)._parts||_156(aURL)),_16c,_16d=_16a.absoluteURL(),_16e=((_16d)._parts||_156(_16d)); +if(_16b.scheme||_16b.authority){ +_16c=_16b; +}else{ +_16c={}; +_16c.scheme=_16e.scheme; +_16c.authority=_16e.authority; +_16c.userInfo=_16e.userInfo; +_16c.user=_16e.user; +_16c.password=_16e.password; +_16c.domain=_16e.domain; +_16c.portNumber=_16e.portNumber; +_16c.queryString=_16b.queryString; +_16c.fragment=_16b.fragment; +var _16f=_16b.pathComponents; +if(_16f.length&&_16f[0]==="/"){ +_16c.path=_16b.path; +_16c.pathComponents=_16f; +}else{ +var _170=_16e.pathComponents,_171=_170.concat(_16f); +if(!_16a.hasDirectoryPath()&&_170.length){ +_171.splice(_170.length-1,1); +} +if(_16f.length&&(_16f[0]===".."||_16f[0]===".")){ +_172(_171,YES); +} +_16c.pathComponents=_171; +_16c.path=_173(_171,_16f.length<=0||aURL.hasDirectoryPath()); +} +} +var _174=_175(_16c),_176=new CFURL(_174); +_176._parts=_16c; +_176._standardizedURL=_176; +_176._standardizedString=_174; +_176._absoluteURL=_176; +_176._absoluteString=_174; +return _176; +}; +function _173(_177,_178){ +var path=_177.join("/"); +if(path.length&&path.charAt(0)==="/"){ +path=path.substr(1); +} +if(_178){ +path+="/"; +} +return path; +}; +function _172(_179,_17a){ +var _17b=0,_17c=0,_17d=_179.length,_17e=_17a?_179:[],_17f=NO; +for(;_17b<_17d;++_17b){ +var _180=_179[_17b]; +if(_180===""){ +continue; +} +if(_180==="."){ +_17f=_17c===0; +continue; +} +if(_180!==".."||_17c===0||_17e[_17c-1]===".."){ +_17e[_17c]=_180; +_17c++; +continue; +} +if(_17c>0&&_17e[_17c-1]!=="/"){ +--_17c; +} +} +if(_17f&&_17c===0){ +_17e[_17c++]="."; +} +_17e.length=_17c; +return _17e; +}; +function _175(_181){ +var _182="",_183=_181.scheme; +if(_183){ +_182+=_183+":"; +} +var _184=_181.authority; +if(_184){ +_182+="//"+_184; +} +_182+=_181.path; +var _185=_181.queryString; +if(_185){ +_182+="?"+_185; +} +var _186=_181.fragment; +if(_186){ +_182+="#"+_186; +} +return _182; +}; +CFURL.prototype.absoluteURL=function(){ +if(this._absoluteURL===_46){ +this._absoluteURL=_169(this); +} +return this._absoluteURL; +}; +CFURL.prototype.standardizedURL=function(){ +if(this._standardizedURL===_46){ +var _187=((this)._parts||_156(this)),_188=_187.pathComponents,_189=_172(_188,NO); +var _18a=_173(_189,this.hasDirectoryPath()); +if(_187.path===_18a){ +this._standardizedURL=this; +}else{ +var _18b=_18c(_187); +_18b.pathComponents=_189; +_18b.path=_18a; +var _18d=new CFURL(_175(_18b),this.baseURL()); +_18d._parts=_18b; +_18d._standardizedURL=_18d; +this._standardizedURL=_18d; +} +} +return this._standardizedURL; +}; +function _18c(_18e){ +var _18f={},_190=_155.length; +while(_190--){ +var _191=_155[_190]; +_18f[_191]=_18e[_191]; +} +return _18f; +}; +CFURL.prototype.string=function(){ +return this._string; +}; +CFURL.prototype.authority=function(){ +var _192=((this)._parts||_156(this)).authority; +if(_192){ +return _192; +} +var _193=this.baseURL(); +return _193&&_193.authority()||""; +}; +CFURL.prototype.hasDirectoryPath=function(){ +var _194=this._hasDirectoryPath; +if(_194===_46){ +var path=this.path(); +if(!path){ +return NO; +} +if(path.charAt(path.length-1)==="/"){ +return YES; +} +var _195=this.lastPathComponent(); +_194=_195==="."||_195===".."; +this._hasDirectoryPath=_194; +} +return _194; +}; +CFURL.prototype.hostName=function(){ +return this.authority(); +}; +CFURL.prototype.fragment=function(){ +return ((this)._parts||_156(this)).fragment; +}; +CFURL.prototype.lastPathComponent=function(){ +if(this._lastPathComponent===_46){ +var _196=this.pathComponents(),_197=_196.length; +if(!_197){ +this._lastPathComponent=""; +}else{ +this._lastPathComponent=_196[_197-1]; +} +} +return this._lastPathComponent; +}; +CFURL.prototype.path=function(){ +return ((this)._parts||_156(this)).path; +}; +CFURL.prototype.pathComponents=function(){ +return ((this)._parts||_156(this)).pathComponents; +}; +CFURL.prototype.pathExtension=function(){ +var _198=this.lastPathComponent(); +if(!_198){ +return NULL; +} +_198=_198.replace(/^\.*/,""); +var _199=_198.lastIndexOf("."); +return _199<=0?"":_198.substring(_199+1); +}; +CFURL.prototype.queryString=function(){ +return ((this)._parts||_156(this)).queryString; +}; +CFURL.prototype.scheme=function(){ +var _19a=this._scheme; +if(_19a===_46){ +_19a=((this)._parts||_156(this)).scheme; +if(!_19a){ +var _19b=this.baseURL(); +_19a=_19b&&_19b.scheme(); +} +this._scheme=_19a; +} +return _19a; +}; +CFURL.prototype.user=function(){ +return ((this)._parts||_156(this)).user; +}; +CFURL.prototype.password=function(){ +return ((this)._parts||_156(this)).password; +}; +CFURL.prototype.portNumber=function(){ +return ((this)._parts||_156(this)).portNumber; +}; +CFURL.prototype.domain=function(){ +return ((this)._parts||_156(this)).domain; +}; +CFURL.prototype.baseURL=function(){ +return this._baseURL; +}; +CFURL.prototype.asDirectoryPathURL=function(){ +if(this.hasDirectoryPath()){ +return this; +} +var _19c=this.lastPathComponent(); +if(_19c!=="/"){ +_19c="./"+_19c; +} +return new CFURL(_19c+"/",this); +}; +function _19d(aURL){ +if(!aURL._resourcePropertiesForKeys){ +aURL._resourcePropertiesForKeys=new CFMutableDictionary(); +} +return aURL._resourcePropertiesForKeys; +}; +CFURL.prototype.resourcePropertyForKey=function(aKey){ +return _19d(this).valueForKey(aKey); +}; +CFURL.prototype.setResourcePropertyForKey=function(aKey,_19e){ +_19d(this).setValueForKey(aKey,_19e); +}; +CFURL.prototype.staticResourceData=function(){ +var data=new CFMutableData(); +data.setRawString(_19f.resourceAtURL(this).contents()); +return data; +}; +function _106(_1a0){ +this._string=_1a0; +var _1a1=_1a0.indexOf(";"); +this._magicNumber=_1a0.substr(0,_1a1); +this._location=_1a0.indexOf(";",++_1a1); +this._version=_1a0.substring(_1a1,this._location++); +}; +_106.prototype.magicNumber=function(){ +return this._magicNumber; +}; +_106.prototype.version=function(){ +return this._version; +}; +_106.prototype.getMarker=function(){ +var _1a2=this._string,_1a3=this._location; +if(_1a3>=_1a2.length){ +return null; +} +var next=_1a2.indexOf(";",_1a3); +if(next<0){ +return null; +} +var _1a4=_1a2.substring(_1a3,next); +if(_1a4==="e"){ +return null; +} +this._location=next+1; +return _1a4; +}; +_106.prototype.getString=function(){ +var _1a5=this._string,_1a6=this._location; +if(_1a6>=_1a5.length){ +return null; +} +var next=_1a5.indexOf(";",_1a6); +if(next<0){ +return null; +} +var size=parseInt(_1a5.substring(_1a6,next),10),text=_1a5.substr(next+1,size); +this._location=next+1+size; +return text; +}; +var _1a7=0,_1a8=1<<0,_1a9=1<<1,_1aa=1<<2,_1ab=1<<3,_1ac=1<<4; +var _1ad={},_1ae={},_1af=new Date().getTime(),_1b0=0,_1b1=0; +CFBundle=function(aURL){ +aURL=_1b2(aURL).asDirectoryPathURL(); +var _1b3=aURL.absoluteString(),_1b4=_1ad[_1b3]; +if(_1b4){ +return _1b4; +} +_1ad[_1b3]=this; +this._bundleURL=aURL; +this._resourcesDirectoryURL=new CFURL("Resources/",aURL); +this._staticResource=NULL; +this._isValid=NO; +this._loadStatus=_1a7; +this._loadRequests=[]; +this._infoDictionary=new CFDictionary(); +this._eventDispatcher=new _75(this); +}; +CFBundle.environments=function(){ +return ["Browser","ObjJ"]; +}; +CFBundle.bundleContainingURL=function(aURL){ +aURL=new CFURL(".",_1b2(aURL)); +var _1b5,_1b6=aURL.absoluteString(); +while(!_1b5||_1b5!==_1b6){ +var _1b7=_1ad[_1b6]; +if(_1b7&&_1b7._isValid){ +return _1b7; +} +aURL=new CFURL("..",aURL); +_1b5=_1b6; +_1b6=aURL.absoluteString(); +} +return NULL; +}; +CFBundle.mainBundle=function(){ +return new CFBundle(_1b8); +}; +function _1b9(_1ba,_1bb){ +if(_1bb){ +_1ae[_1ba.name]=_1bb; +} +}; +CFBundle.bundleForClass=function(_1bc){ +return _1ae[_1bc.name]||CFBundle.mainBundle(); +}; +CFBundle.prototype.bundleURL=function(){ +return this._bundleURL; +}; +CFBundle.prototype.resourcesDirectoryURL=function(){ +return this._resourcesDirectoryURL; +}; +CFBundle.prototype.resourceURL=function(_1bd,_1be,_1bf){ +if(_1be){ +_1bd=_1bd+"."+_1be; +} +if(_1bf){ +_1bd=_1bf+"/"+_1bd; +} +var _1c0=(new CFURL(_1bd,this.resourcesDirectoryURL())).mappedURL(); +return _1c0.absoluteURL(); +}; +CFBundle.prototype.mostEligibleEnvironmentURL=function(){ +if(this._mostEligibleEnvironmentURL===_46){ +this._mostEligibleEnvironmentURL=new CFURL(this.mostEligibleEnvironment()+".environment/",this.bundleURL()); +} +return this._mostEligibleEnvironmentURL; +}; +CFBundle.prototype.executableURL=function(){ +if(this._executableURL===_46){ +var _1c1=this.valueForInfoDictionaryKey("CPBundleExecutable"); +if(!_1c1){ +this._executableURL=NULL; +}else{ +this._executableURL=new CFURL(_1c1,this.mostEligibleEnvironmentURL()); +} +} +return this._executableURL; +}; +CFBundle.prototype.infoDictionary=function(){ +return this._infoDictionary; +}; +CFBundle.prototype.valueForInfoDictionaryKey=function(aKey){ +return this._infoDictionary.valueForKey(aKey); +}; +CFBundle.prototype.hasSpritedImages=function(){ +var _1c2=this._infoDictionary.valueForKey("CPBundleEnvironmentsWithImageSprites")||[],_95=_1c2.length,_1c3=this.mostEligibleEnvironment(); +while(_95--){ +if(_1c2[_95]===_1c3){ +return YES; +} +} +return NO; +}; +CFBundle.prototype.environments=function(){ +return this._infoDictionary.valueForKey("CPBundleEnvironments")||["ObjJ"]; +}; +CFBundle.prototype.mostEligibleEnvironment=function(_1c4){ +_1c4=_1c4||this.environments(); +var _1c5=CFBundle.environments(),_95=0,_1c6=_1c5.length,_1c7=_1c4.length; +for(;_95<_1c6;++_95){ +var _1c8=0,_1c9=_1c5[_95]; +for(;_1c8<_1c7;++_1c8){ +if(_1c9===_1c4[_1c8]){ +return _1c9; +} +} +} +return NULL; +}; +CFBundle.prototype.isLoading=function(){ +return this._loadStatus&_1a8; +}; +CFBundle.prototype.isLoaded=function(){ +return this._loadStatus&_1ac; +}; +CFBundle.prototype.load=function(_1ca){ +if(this._loadStatus!==_1a7){ +return; +} +this._loadStatus=_1a8|_1a9; +var self=this,_1cb=this.bundleURL(),_1cc=new CFURL("..",_1cb); +if(_1cc.absoluteString()===_1cb.absoluteString()){ +_1cc=_1cc.schemeAndAuthority(); +} +_19f.resolveResourceAtURL(_1cc,YES,function(_1cd){ +var _1ce=_1cb.absoluteURL().lastPathComponent(); +self._staticResource=_1cd._children[_1ce]||new _19f(_1cb,_1cd,YES,NO); +function _1cf(_1d0){ +self._loadStatus&=~_1a9; +var _1d1=_1d0.request.responsePropertyList(); +self._isValid=!!_1d1||CFBundle.mainBundle()===self; +if(_1d1){ +self._infoDictionary=_1d1; +} +if(!self._infoDictionary){ +_1d3(self,new Error("Could not load bundle at \""+path+"\"")); +return; +} +if(self===CFBundle.mainBundle()&&self.valueForInfoDictionaryKey("CPApplicationSize")){ +_1b1=self.valueForInfoDictionaryKey("CPApplicationSize").valueForKey("executable")||0; +} +_1d7(self,_1ca); +}; +function _1d2(){ +self._isValid=CFBundle.mainBundle()===self; +self._loadStatus=_1a7; +_1d3(self,new Error("Could not load bundle at \""+self.bundleURL()+"\"")); +}; +new _b1(new CFURL("Info.plist",self.bundleURL()),_1cf,_1d2); +}); +}; +function _1d3(_1d4,_1d5){ +_1d6(_1d4._staticResource); +_1d4._eventDispatcher.dispatchEvent({type:"error",error:_1d5,bundle:_1d4}); +}; +function _1d7(_1d8,_1d9){ +if(!_1d8.mostEligibleEnvironment()){ +return _1da(); +} +_1db(_1d8,_1dc,_1da); +_1dd(_1d8,_1dc,_1da); +if(_1d8._loadStatus===_1a8){ +return _1dc(); +} +function _1da(_1de){ +var _1df=_1d8._loadRequests,_1e0=_1df.length; +while(_1e0--){ +_1df[_1e0].abort(); +} +this._loadRequests=[]; +_1d8._loadStatus=_1a7; +_1d3(_1d8,_1de||new Error("Could not recognize executable code format in Bundle "+_1d8)); +}; +function _1dc(){ +if((typeof CPApp==="undefined"||!CPApp||!CPApp._finishedLaunching)&&typeof OBJJ_PROGRESS_CALLBACK==="function"&&_1b1){ +OBJJ_PROGRESS_CALLBACK(MAX(MIN(1,_1b0/_1b1),0),_1b1,_1d8.bundlePath()); +} +if(_1d8._loadStatus===_1a8){ +_1d8._loadStatus=_1ac; +}else{ +return; +} +_1d6(_1d8._staticResource); +function _1e1(){ +_1d8._eventDispatcher.dispatchEvent({type:"load",bundle:_1d8}); +}; +if(_1d9){ +_1e2(_1d8,_1e1); +}else{ +_1e1(); +} +}; +}; +function _1db(_1e3,_1e4,_1e5){ +var _1e6=_1e3.executableURL(); +if(!_1e6){ +return; +} +_1e3._loadStatus|=_1aa; +new _b1(_1e6,function(_1e7){ +try{ +_1b0+=_1e7.request.responseText().length; +_1e8(_1e3,_1e7.request.responseText(),_1e6); +_1e3._loadStatus&=~_1aa; +_1e4(); +} +catch(anException){ +_1e5(anException); +} +},_1e5); +}; +function _1e9(_1ea){ +return "mhtml:"+new CFURL("MHTMLTest.txt",_1ea.mostEligibleEnvironmentURL()); +}; +function _1eb(_1ec){ +if(_1ed===_1ee){ +return new CFURL("dataURLs.txt",_1ec.mostEligibleEnvironmentURL()); +} +if(_1ed===_1ef||_1ed===_1f0){ +return new CFURL("MHTMLPaths.txt",_1ec.mostEligibleEnvironmentURL()); +} +return NULL; +}; +function _1dd(_1f1,_1f2,_1f3){ +if(!_1f1.hasSpritedImages()){ +return; +} +_1f1._loadStatus|=_1ab; +if(!_1f4()){ +return _1f5(_1e9(_1f1),function(){ +_1dd(_1f1,_1f2,_1f3); +}); +} +var _1f6=_1eb(_1f1); +if(!_1f6){ +_1f1._loadStatus&=~_1ab; +return _1f2(); +} +new _b1(_1f6,function(_1f7){ +try{ +_1b0+=_1f7.request.responseText().length; +_1e8(_1f1,_1f7.request.responseText(),_1f6); +_1f1._loadStatus&=~_1ab; +} +catch(anException){ +_1f3(anException); +} +_1f2(); +},_1f3); +}; +var _1f8=[],_1ed=-1,_1f9=0,_1ee=1,_1ef=2,_1f0=3; +function _1f4(){ +return _1ed!==-1; +}; +function _1f5(_1fa,_1fb){ +if(_1f4()){ +return; +} +_1f8.push(_1fb); +if(_1f8.length>1){ +return; +} +_1f8.push(function(){ +var size=0,_1fc=CFBundle.mainBundle().valueForInfoDictionaryKey("CPApplicationSize"); +if(!_1fc){ +return; +} +switch(_1ed){ +case _1ee: +size=_1fc.valueForKey("data"); +break; +case _1ef: +case _1f0: +size=_1fc.valueForKey("mhtml"); +break; +} +_1b1+=size; +}); +_1fd([_1ee,"data:image/gif;base64,R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==",_1ef,_1fa+"!test",_1f0,_1fa+"?"+_1af+"!test"]); +}; +function _1fe(){ +var _1ff=_1f8.length; +while(_1ff--){ +_1f8[_1ff](); +} +}; +function _1fd(_200){ +if(_200.length<2){ +_1ed=_1f9; +_1fe(); +return; +} +var _201=new Image(); +_201.onload=function(){ +if(_201.width===1&&_201.height===1){ +_1ed=_200[0]; +_1fe(); +}else{ +_201.onerror(); +} +}; +_201.onerror=function(){ +_1fd(_200.slice(2)); +}; +_201.src=_200[1]; +}; +function _1e2(_202,_203){ +var _204=[_202._staticResource]; +function _205(_206){ +for(;_206<_204.length;++_206){ +var _207=_204[_206]; +if(_207.isNotFound()){ +continue; +} +if(_207.isFile()){ +var _208=new _320(_207.URL()); +if(_208.hasLoadedFileDependencies()){ +_208.execute(); +}else{ +_208.loadFileDependencies(function(){ +_205(_206); +}); +return; +} +}else{ +if(_207.URL().absoluteString()===_202.resourcesDirectoryURL().absoluteString()){ +continue; +} +var _209=_207.children(); +for(var name in _209){ +if(_7a.call(_209,name)){ +_204.push(_209[name]); +} +} +} +} +_203(); +}; +_205(0); +}; +var _20a="@STATIC",_20b="p",_20c="u",_20d="c",_20e="t",_20f="I",_210="i"; +function _1e8(_211,_212,_213){ +var _214=new _106(_212); +if(_214.magicNumber()!==_20a){ +throw new Error("Could not read static file: "+_213); +} +if(_214.version()!=="1.0"){ +throw new Error("Could not read static file: "+_213); +} +var _215,_216=_211.bundleURL(),file=NULL; +while(_215=_214.getMarker()){ +var text=_214.getString(); +if(_215===_20b){ +var _217=new CFURL(text,_216),_218=_19f.resourceAtURL(new CFURL(".",_217),YES); +file=new _19f(_217,_218,NO,YES); +}else{ +if(_215===_20c){ +var URL=new CFURL(text,_216),_219=_214.getString(); +if(_219.indexOf("mhtml:")===0){ +_219="mhtml:"+new CFURL(_219.substr("mhtml:".length),_216); +if(_1ed===_1f0){ +var _21a=_219.indexOf("!"),_21b=_219.substring(0,_21a),_21c=_219.substring(_21a); +_219=_21b+"?"+_1af+_21c; +} +} +CFURL.setMappedURLForURL(URL,new CFURL(_219)); +var _218=_19f.resourceAtURL(new CFURL(".",URL),YES); +new _19f(URL,_218,NO,YES); +}else{ +if(_215===_20e){ +file.write(text); +} +} +} +} +}; +CFBundle.prototype.addEventListener=function(_21d,_21e){ +this._eventDispatcher.addEventListener(_21d,_21e); +}; +CFBundle.prototype.removeEventListener=function(_21f,_220){ +this._eventDispatcher.removeEventListener(_21f,_220); +}; +CFBundle.prototype.onerror=function(_221){ +throw _221.error; +}; +CFBundle.prototype.bundlePath=function(){ +return this._bundleURL.absoluteURL().path(); +}; +CFBundle.prototype.path=function(){ +CPLog.warn("CFBundle.prototype.path is deprecated, use CFBundle.prototype.bundlePath instead."); +return this.bundlePath.apply(this,arguments); +}; +CFBundle.prototype.pathForResource=function(_222){ +return this.resourceURL(_222).absoluteString(); +}; +var _223={}; +function _19f(aURL,_224,_225,_226){ +this._parent=_224; +this._eventDispatcher=new _75(this); +var name=aURL.absoluteURL().lastPathComponent()||aURL.schemeAndAuthority(); +this._name=name; +this._URL=aURL; +this._isResolved=!!_226; +if(_225){ +this._URL=this._URL.asDirectoryPathURL(); +} +if(!_224){ +_223[name]=this; +} +this._isDirectory=!!_225; +this._isNotFound=NO; +if(_224){ +_224._children[name]=this; +} +if(_225){ +this._children={}; +}else{ +this._contents=""; +} +}; +_19f.rootResources=function(){ +return _223; +}; +_2.StaticResource=_19f; +function _1d6(_227){ +_227._isResolved=YES; +_227._eventDispatcher.dispatchEvent({type:"resolve",staticResource:_227}); +}; +_19f.prototype.resolve=function(){ +if(this.isDirectory()){ +var _228=new CFBundle(this.URL()); +_228.onerror=function(){ +}; +_228.load(NO); +}else{ +var self=this; +function _229(_22a){ +self._contents=_22a.request.responseText(); +_1d6(self); +}; +function _22b(){ +self._isNotFound=YES; +_1d6(self); +}; +new _b1(this.URL(),_229,_22b); +} +}; +_19f.prototype.name=function(){ +return this._name; +}; +_19f.prototype.URL=function(){ +return this._URL; +}; +_19f.prototype.contents=function(){ +return this._contents; +}; +_19f.prototype.children=function(){ +return this._children; +}; +_19f.prototype.parent=function(){ +return this._parent; +}; +_19f.prototype.isResolved=function(){ +return this._isResolved; +}; +_19f.prototype.write=function(_22c){ +this._contents+=_22c; +}; +function _22d(_22e){ +var _22f=_22e.schemeAndAuthority(),_230=_223[_22f]; +if(!_230){ +_230=new _19f(new CFURL(_22f),NULL,YES,YES); +} +return _230; +}; +_19f.resourceAtURL=function(aURL,_231){ +aURL=_1b2(aURL).absoluteURL(); +var _232=_22d(aURL),_233=aURL.pathComponents(),_95=0,_234=_233.length; +for(;_95<_234;++_95){ +var name=_233[_95]; +if(_7a.call(_232._children,name)){ +_232=_232._children[name]; +}else{ +if(_231){ +if(name!=="/"){ +name="./"+name; +} +_232=new _19f(new CFURL(name,_232.URL()),_232,YES,YES); +}else{ +throw new Error("Static Resource at "+aURL+" is not resolved (\""+name+"\")"); +} +} +} +return _232; +}; +_19f.prototype.resourceAtURL=function(aURL,_235){ +return _19f.resourceAtURL(new CFURL(aURL,this.URL()),_235); +}; +_19f.resolveResourceAtURL=function(aURL,_236,_237){ +aURL=_1b2(aURL).absoluteURL(); +_238(_22d(aURL),_236,aURL.pathComponents(),0,_237); +}; +_19f.prototype.resolveResourceAtURL=function(aURL,_239,_23a){ +_19f.resolveResourceAtURL(new CFURL(aURL,this.URL()).absoluteURL(),_239,_23a); +}; +function _238(_23b,_23c,_23d,_23e,_23f){ +var _240=_23d.length; +for(;_23e<_240;++_23e){ +var name=_23d[_23e],_241=_7a.call(_23b._children,name)&&_23b._children[name]; +if(!_241){ +_241=new _19f(new CFURL(name,_23b.URL()),_23b,_23e+1<_240||_23c,NO); +_241.resolve(); +} +if(!_241.isResolved()){ +return _241.addEventListener("resolve",function(){ +_238(_23b,_23c,_23d,_23e,_23f); +}); +} +if(_241.isNotFound()){ +return _23f(null,new Error("File not found: "+_23d.join("/"))); +} +if((_23e+1<_240)&&_241.isFile()){ +return _23f(null,new Error("File is not a directory: "+_23d.join("/"))); +} +_23b=_241; +} +_23f(_23b); +}; +function _242(aURL,_243,_244){ +var _245=_19f.includeURLs(),_246=new CFURL(aURL,_245[_243]).absoluteURL(); +_19f.resolveResourceAtURL(_246,NO,function(_247){ +if(!_247){ +if(_243+1<_245.length){ +_242(aURL,_243+1,_244); +}else{ +_244(NULL); +} +return; +} +_244(_247); +}); +}; +_19f.resolveResourceAtURLSearchingIncludeURLs=function(aURL,_248){ +_242(aURL,0,_248); +}; +_19f.prototype.addEventListener=function(_249,_24a){ +this._eventDispatcher.addEventListener(_249,_24a); +}; +_19f.prototype.removeEventListener=function(_24b,_24c){ +this._eventDispatcher.removeEventListener(_24b,_24c); +}; +_19f.prototype.isNotFound=function(){ +return this._isNotFound; +}; +_19f.prototype.isFile=function(){ +return !this._isDirectory; +}; +_19f.prototype.isDirectory=function(){ +return this._isDirectory; +}; +_19f.prototype.toString=function(_24d){ +if(this.isNotFound()){ +return ""; +} +var _24e=this.name(); +if(this.isDirectory()){ +var _24f=this._children; +for(var name in _24f){ +if(_24f.hasOwnProperty(name)){ +var _250=_24f[name]; +if(_24d||!_250.isNotFound()){ +_24e+="\n\t"+_24f[name].toString(_24d).split("\n").join("\n\t"); +} +} +} +} +return _24e; +}; +var _251=NULL; +_19f.includeURLs=function(){ +if(_252){ +return _252; +} +var _252=[]; +if(!_1.OBJJ_INCLUDE_PATHS&&!_1.OBJJ_INCLUDE_URLS){ +_252=["Frameworks","Frameworks/Debug"]; +}else{ +_252=(_1.OBJJ_INCLUDE_PATHS||[]).concat(_1.OBJJ_INCLUDE_URLS||[]); +} +var _253=_252.length; +while(_253--){ +_252[_253]=new CFURL(_252[_253]).asDirectoryPathURL(); +} +return _252; +}; +var _254="accessors",_255="class",_256="end",_257="function",_258="implementation",_259="import",_25a="each",_25b="outlet",_25c="action",_25d="new",_25e="selector",_25f="super",_260="var",_261="in",_262="pragma",_263="mark",_264="=",_265="+",_266="-",_267=":",_268=",",_269=".",_26a="*",_26b=";",_26c="<",_26d="{",_26e="}",_26f=">",_270="[",_271="\"",_272="@",_273="#",_274="]",_275="?",_276="(",_277=")",_278=/^(?:(?:\s+$)|(?:\/(?:\/|\*)))/,_279=/^[+-]?\d+(([.]\d+)*([eE][+-]?\d+))?$/,_27a=/^[a-zA-Z_$](\w|$)*$/; +function _27b(_27c){ +this._index=-1; +this._tokens=(_27c+"\n").match(/\/\/.*(\r|\n)?|\/\*(?:.|\n|\r)*?\*\/|\w+\b|[+-]?\d+(([.]\d+)*([eE][+-]?\d+))?|"[^"\\]*(\\[\s\S][^"\\]*)*"|'[^'\\]*(\\[\s\S][^'\\]*)*'|\s+|./g); +this._context=[]; +return this; +}; +_27b.prototype.push=function(){ +this._context.push(this._index); +}; +_27b.prototype.pop=function(){ +this._index=this._context.pop(); +}; +_27b.prototype.peek=function(_27d){ +if(_27d){ +this.push(); +var _27e=this.skip_whitespace(); +this.pop(); +return _27e; +} +return this._tokens[this._index+1]; +}; +_27b.prototype.next=function(){ +return this._tokens[++this._index]; +}; +_27b.prototype.previous=function(){ +return this._tokens[--this._index]; +}; +_27b.prototype.last=function(){ +if(this._index<0){ +return NULL; +} +return this._tokens[this._index-1]; +}; +_27b.prototype.skip_whitespace=function(_27f){ +var _280; +if(_27f){ +while((_280=this.previous())&&_278.test(_280)){ +} +}else{ +while((_280=this.next())&&_278.test(_280)){ +} +} +return _280; +}; +_2.Lexer=_27b; +function _281(){ +this.atoms=[]; +}; +_281.prototype.toString=function(){ +return this.atoms.join(""); +}; +_2.preprocess=function(_282,aURL,_283){ +return new _284(_282,aURL,_283).executable(); +}; +_2.eval=function(_285){ +return eval(_2.preprocess(_285).code()); +}; +var _284=function(_286,aURL,_287){ +this._URL=new CFURL(aURL); +_286=_286.replace(/^#[^\n]+\n/,"\n"); +this._currentSelector=""; +this._currentClass=""; +this._currentSuperClass=""; +this._currentSuperMetaClass=""; +this._buffer=new _281(); +this._preprocessed=NULL; +this._dependencies=[]; +this._tokens=new _27b(_286); +this._flags=_287; +this._classMethod=false; +this._executable=NULL; +this._classLookupTable={}; +this._classVars={}; +var _288=new objj_class(); +for(var i in _288){ +this._classVars[i]=1; +} +this.preprocess(this._tokens,this._buffer); +}; +_284.prototype.setClassInfo=function(_289,_28a,_28b){ +this._classLookupTable[_289]={superClassName:_28a,ivars:_28b}; +}; +_284.prototype.getClassInfo=function(_28c){ +return this._classLookupTable[_28c]; +}; +_284.prototype.allIvarNamesForClassName=function(_28d){ +var _28e={},_28f=this.getClassInfo(_28d); +while(_28f){ +for(var i in _28f.ivars){ +_28e[i]=1; +} +_28f=this.getClassInfo(_28f.superClassName); +} +return _28e; +}; +_2.Preprocessor=_284; +_284.Flags={}; +_284.Flags.IncludeDebugSymbols=1<<0; +_284.Flags.IncludeTypeSignatures=1<<1; +_284.prototype.executable=function(){ +if(!this._executable){ +this._executable=new _290(this._buffer.toString(),this._dependencies,this._URL); +} +return this._executable; +}; +_284.prototype.accessors=function(_291){ +var _292=_291.skip_whitespace(),_293={}; +if(_292!=_276){ +_291.previous(); +return _293; +} +while((_292=_291.skip_whitespace())!=_277){ +var name=_292,_294=true; +if(!/^\w+$/.test(name)){ +throw new SyntaxError(this.error_message("*** @accessors attribute name not valid.")); +} +if((_292=_291.skip_whitespace())==_264){ +_294=_291.skip_whitespace(); +if(!/^\w+$/.test(_294)){ +throw new SyntaxError(this.error_message("*** @accessors attribute value not valid.")); +} +if(name=="setter"){ +if((_292=_291.next())!=_267){ +throw new SyntaxError(this.error_message("*** @accessors setter attribute requires argument with \":\" at end of selector name.")); +} +_294+=":"; +} +_292=_291.skip_whitespace(); +} +_293[name]=_294; +if(_292==_277){ +break; +} +if(_292!=_268){ +throw new SyntaxError(this.error_message("*** Expected ',' or ')' in @accessors attribute list.")); +} +} +return _293; +}; +_284.prototype.brackets=function(_295,_296){ +var _297=[]; +while(this.preprocess(_295,NULL,NULL,NULL,_297[_297.length]=[])){ +} +if(_297[0].length===1){ +_296.atoms[_296.atoms.length]="["; +_296.atoms[_296.atoms.length]=_297[0][0]; +_296.atoms[_296.atoms.length]="]"; +}else{ +var _298=new _281(); +if(_297[0][0].atoms[0]==_25f){ +_296.atoms[_296.atoms.length]="objj_msgSendSuper("; +_296.atoms[_296.atoms.length]="{ receiver:self, super_class:"+(this._classMethod?this._currentSuperMetaClass:this._currentSuperClass)+" }"; +}else{ +_296.atoms[_296.atoms.length]="objj_msgSend("; +_296.atoms[_296.atoms.length]=_297[0][0]; +} +_298.atoms[_298.atoms.length]=_297[0][1]; +var _299=1,_29a=_297.length,_29b=new _281(); +for(;_299<_29a;++_299){ +var pair=_297[_299]; +_298.atoms[_298.atoms.length]=pair[1]; +_29b.atoms[_29b.atoms.length]=", "+pair[0]; +} +_296.atoms[_296.atoms.length]=", \""; +_296.atoms[_296.atoms.length]=_298; +_296.atoms[_296.atoms.length]="\""; +_296.atoms[_296.atoms.length]=_29b; +_296.atoms[_296.atoms.length]=")"; +} +}; +_284.prototype.directive=function(_29c,_29d,_29e){ +var _29f=_29d?_29d:new _281(),_2a0=_29c.next(); +if(_2a0.charAt(0)==_271){ +_29f.atoms[_29f.atoms.length]=_2a0; +}else{ +if(_2a0===_255){ +_29c.skip_whitespace(); +return; +}else{ +if(_2a0===_258){ +this.implementation(_29c,_29f); +}else{ +if(_2a0===_259){ +this._import(_29c); +}else{ +if(_2a0===_25e){ +this.selector(_29c,_29f); +} +} +} +} +} +if(!_29d){ +return _29f; +} +}; +_284.prototype.hash=function(_2a1,_2a2){ +var _2a3=_2a2?_2a2:new _281(),_2a4=_2a1.next(); +if(_2a4===_262){ +_2a4=_2a1.skip_whitespace(); +if(_2a4===_263){ +while((_2a4=_2a1.next()).indexOf("\n")<0){ +} +} +}else{ +throw new SyntaxError(this.error_message("*** Expected \"pragma\" to follow # but instead saw \""+_2a4+"\".")); +} +}; +_284.prototype.implementation=function(_2a5,_2a6){ +var _2a7=_2a6,_2a8="",_2a9=NO,_2aa=_2a5.skip_whitespace(),_2ab="Nil",_2ac=new _281(),_2ad=new _281(); +if(!(/^\w/).test(_2aa)){ +throw new Error(this.error_message("*** Expected class name, found \""+_2aa+"\".")); +} +this._currentSuperClass="objj_getClass(\""+_2aa+"\").super_class"; +this._currentSuperMetaClass="objj_getMetaClass(\""+_2aa+"\").super_class"; +this._currentClass=_2aa; +this._currentSelector=""; +if((_2a8=_2a5.skip_whitespace())==_276){ +_2a8=_2a5.skip_whitespace(); +if(_2a8==_277){ +throw new SyntaxError(this.error_message("*** Can't Have Empty Category Name for class \""+_2aa+"\".")); +} +if(_2a5.skip_whitespace()!=_277){ +throw new SyntaxError(this.error_message("*** Improper Category Definition for class \""+_2aa+"\".")); +} +_2a7.atoms[_2a7.atoms.length]="{\nvar the_class = objj_getClass(\""+_2aa+"\")\n"; +_2a7.atoms[_2a7.atoms.length]="if(!the_class) throw new SyntaxError(\"*** Could not find definition for class \\\""+_2aa+"\\\"\");\n"; +_2a7.atoms[_2a7.atoms.length]="var meta_class = the_class.isa;"; +}else{ +if(_2a8==_267){ +_2a8=_2a5.skip_whitespace(); +if(!_27a.test(_2a8)){ +throw new SyntaxError(this.error_message("*** Expected class name, found \""+_2a8+"\".")); +} +_2ab=_2a8; +_2a8=_2a5.skip_whitespace(); +} +_2a7.atoms[_2a7.atoms.length]="{var the_class = objj_allocateClassPair("+_2ab+", \""+_2aa+"\"),\nmeta_class = the_class.isa;"; +if(_2a8==_26d){ +var _2ae={},_2af=0,_2b0=[],_2b1,_2b2={}; +while((_2a8=_2a5.skip_whitespace())&&_2a8!=_26e){ +if(_2a8===_272){ +_2a8=_2a5.next(); +if(_2a8===_254){ +_2b1=this.accessors(_2a5); +}else{ +if(_2a8!==_25b){ +throw new SyntaxError(this.error_message("*** Unexpected '@' token in ivar declaration ('@"+_2a8+"').")); +} +} +}else{ +if(_2a8==_26b){ +if(_2af++===0){ +_2a7.atoms[_2a7.atoms.length]="class_addIvars(the_class, ["; +}else{ +_2a7.atoms[_2a7.atoms.length]=", "; +} +var name=_2b0[_2b0.length-1]; +_2a7.atoms[_2a7.atoms.length]="new objj_ivar(\""+name+"\")"; +_2ae[name]=1; +_2b0=[]; +if(_2b1){ +_2b2[name]=_2b1; +_2b1=NULL; +} +}else{ +_2b0.push(_2a8); +} +} +} +if(_2b0.length){ +throw new SyntaxError(this.error_message("*** Expected ';' in ivar declaration, found '}'.")); +} +if(_2af){ +_2a7.atoms[_2a7.atoms.length]="]);\n"; +} +if(!_2a8){ +throw new SyntaxError(this.error_message("*** Expected '}'")); +} +this.setClassInfo(_2aa,_2ab==="Nil"?null:_2ab,_2ae); +var _2ae=this.allIvarNamesForClassName(_2aa); +for(ivar_name in _2b2){ +var _2b3=_2b2[ivar_name],_2b4=_2b3["property"]||ivar_name; +var _2b5=_2b3["getter"]||_2b4,_2b6="(id)"+_2b5+"\n{\nreturn "+ivar_name+";\n}"; +if(_2ac.atoms.length!==0){ +_2ac.atoms[_2ac.atoms.length]=",\n"; +} +_2ac.atoms[_2ac.atoms.length]=this.method(new _27b(_2b6),_2ae); +if(_2b3["readonly"]){ +continue; +} +var _2b7=_2b3["setter"]; +if(!_2b7){ +var _2b8=_2b4.charAt(0)=="_"?1:0; +_2b7=(_2b8?"_":"")+"set"+_2b4.substr(_2b8,1).toUpperCase()+_2b4.substring(_2b8+1)+":"; +} +var _2b9="(void)"+_2b7+"(id)newValue\n{\n"; +if(_2b3["copy"]){ +_2b9+="if ("+ivar_name+" !== newValue)\n"+ivar_name+" = [newValue copy];\n}"; +}else{ +_2b9+=ivar_name+" = newValue;\n}"; +} +if(_2ac.atoms.length!==0){ +_2ac.atoms[_2ac.atoms.length]=",\n"; +} +_2ac.atoms[_2ac.atoms.length]=this.method(new _27b(_2b9),_2ae); +} +}else{ +_2a5.previous(); +} +_2a7.atoms[_2a7.atoms.length]="objj_registerClassPair(the_class);\n"; +} +if(!_2ae){ +var _2ae=this.allIvarNamesForClassName(_2aa); +} +while((_2a8=_2a5.skip_whitespace())){ +if(_2a8==_265){ +this._classMethod=true; +if(_2ad.atoms.length!==0){ +_2ad.atoms[_2ad.atoms.length]=", "; +} +_2ad.atoms[_2ad.atoms.length]=this.method(_2a5,this._classVars); +}else{ +if(_2a8==_266){ +this._classMethod=false; +if(_2ac.atoms.length!==0){ +_2ac.atoms[_2ac.atoms.length]=", "; +} +_2ac.atoms[_2ac.atoms.length]=this.method(_2a5,_2ae); +}else{ +if(_2a8==_273){ +this.hash(_2a5,_2a7); +}else{ +if(_2a8==_272){ +if((_2a8=_2a5.next())==_256){ +break; +}else{ +throw new SyntaxError(this.error_message("*** Expected \"@end\", found \"@"+_2a8+"\".")); +} +} +} +} +} +} +if(_2ac.atoms.length!==0){ +_2a7.atoms[_2a7.atoms.length]="class_addMethods(the_class, ["; +_2a7.atoms[_2a7.atoms.length]=_2ac; +_2a7.atoms[_2a7.atoms.length]="]);\n"; +} +if(_2ad.atoms.length!==0){ +_2a7.atoms[_2a7.atoms.length]="class_addMethods(meta_class, ["; +_2a7.atoms[_2a7.atoms.length]=_2ad; +_2a7.atoms[_2a7.atoms.length]="]);\n"; +} +_2a7.atoms[_2a7.atoms.length]="}"; +this._currentClass=""; +}; +_284.prototype._import=function(_2ba){ +var _2bb="",_2bc=_2ba.skip_whitespace(),_2bd=(_2bc!==_26c); +if(_2bc===_26c){ +while((_2bc=_2ba.next())&&_2bc!==_26f){ +_2bb+=_2bc; +} +if(!_2bc){ +throw new SyntaxError(this.error_message("*** Unterminated import statement.")); +} +}else{ +if(_2bc.charAt(0)===_271){ +_2bb=_2bc.substr(1,_2bc.length-2); +}else{ +throw new SyntaxError(this.error_message("*** Expecting '<' or '\"', found \""+_2bc+"\".")); +} +} +this._buffer.atoms[this._buffer.atoms.length]="objj_executeFile(\""; +this._buffer.atoms[this._buffer.atoms.length]=_2bb; +this._buffer.atoms[this._buffer.atoms.length]=_2bd?"\", YES);":"\", NO);"; +this._dependencies.push(new _2be(new CFURL(_2bb),_2bd)); +}; +_284.prototype.method=function(_2bf,_2c0){ +var _2c1=new _281(),_2c2,_2c3="",_2c4=[],_2c5=[null]; +_2c0=_2c0||{}; +while((_2c2=_2bf.skip_whitespace())&&_2c2!==_26d&&_2c2!==_26b){ +if(_2c2==_267){ +var type=""; +_2c3+=_2c2; +_2c2=_2bf.skip_whitespace(); +if(_2c2==_276){ +while((_2c2=_2bf.skip_whitespace())&&_2c2!=_277){ +type+=_2c2; +} +_2c2=_2bf.skip_whitespace(); +} +_2c5[_2c4.length+1]=type||null; +_2c4[_2c4.length]=_2c2; +if(_2c2 in _2c0){ +throw new SyntaxError(this.error_message("*** Method ( "+_2c3+" ) uses a parameter name that is already in use ( "+_2c2+" )")); +} +}else{ +if(_2c2==_276){ +var type=""; +while((_2c2=_2bf.skip_whitespace())&&_2c2!=_277){ +type+=_2c2; +} +_2c5[0]=type||null; +}else{ +if(_2c2==_268){ +if((_2c2=_2bf.skip_whitespace())!=_269||_2bf.next()!=_269||_2bf.next()!=_269){ +throw new SyntaxError(this.error_message("*** Argument list expected after ','.")); +} +}else{ +_2c3+=_2c2; +} +} +} +} +if(_2c2===_26b){ +_2c2=_2bf.skip_whitespace(); +if(_2c2!==_26d){ +throw new SyntaxError(this.error_message("Invalid semi-colon in method declaration. "+"Semi-colons are allowed only to terminate the method signature, before the open brace.")); +} +} +var _2c6=0,_2c7=_2c4.length; +_2c1.atoms[_2c1.atoms.length]="new objj_method(sel_getUid(\""; +_2c1.atoms[_2c1.atoms.length]=_2c3; +_2c1.atoms[_2c1.atoms.length]="\"), function"; +this._currentSelector=_2c3; +if(this._flags&_284.Flags.IncludeDebugSymbols){ +_2c1.atoms[_2c1.atoms.length]=" $"+this._currentClass+"__"+_2c3.replace(/:/g,"_"); +} +_2c1.atoms[_2c1.atoms.length]="(self, _cmd"; +for(;_2c6<_2c7;++_2c6){ +_2c1.atoms[_2c1.atoms.length]=", "; +_2c1.atoms[_2c1.atoms.length]=_2c4[_2c6]; +} +_2c1.atoms[_2c1.atoms.length]=")\n{ with(self)\n{"; +_2c1.atoms[_2c1.atoms.length]=this.preprocess(_2bf,NULL,_26e,_26d); +_2c1.atoms[_2c1.atoms.length]="}\n}"; +if(this._flags&_284.Flags.IncludeDebugSymbols){ +_2c1.atoms[_2c1.atoms.length]=","+JSON.stringify(_2c5); +} +_2c1.atoms[_2c1.atoms.length]=")"; +this._currentSelector=""; +return _2c1; +}; +_284.prototype.preprocess=function(_2c8,_2c9,_2ca,_2cb,_2cc){ +var _2cd=_2c9?_2c9:new _281(),_2ce=0,_2cf=""; +if(_2cc){ +_2cc[0]=_2cd; +var _2d0=false,_2d1=[0,0,0]; +} +while((_2cf=_2c8.next())&&((_2cf!==_2ca)||_2ce)){ +if(_2cc){ +if(_2cf===_275){ +++_2d1[2]; +}else{ +if(_2cf===_26d){ +++_2d1[0]; +}else{ +if(_2cf===_26e){ +--_2d1[0]; +}else{ +if(_2cf===_276){ +++_2d1[1]; +}else{ +if(_2cf===_277){ +--_2d1[1]; +}else{ +if((_2cf===_267&&_2d1[2]--===0||(_2d0=(_2cf===_274)))&&_2d1[0]===0&&_2d1[1]===0){ +_2c8.push(); +var _2d2=_2d0?_2c8.skip_whitespace(true):_2c8.previous(),_2d3=_278.test(_2d2); +if(_2d3||_27a.test(_2d2)&&_278.test(_2c8.previous())){ +_2c8.push(); +var last=_2c8.skip_whitespace(true),_2d4=true,_2d5=false; +if(last==="+"||last==="-"){ +if(_2c8.previous()!==last){ +_2d4=false; +}else{ +last=_2c8.skip_whitespace(true); +_2d5=true; +} +} +_2c8.pop(); +_2c8.pop(); +if(_2d4&&((!_2d5&&(last===_26e))||last===_277||last===_274||last===_269||_279.test(last)||last.charAt(last.length-1)==="\""||last.charAt(last.length-1)==="'"||_27a.test(last)&&!/^(new|return|case|var)$/.test(last))){ +if(_2d3){ +_2cc[1]=":"; +}else{ +_2cc[1]=_2d2; +if(!_2d0){ +_2cc[1]+=":"; +} +var _2ce=_2cd.atoms.length; +while(_2cd.atoms[_2ce--]!==_2d2){ +} +_2cd.atoms.length=_2ce; +} +return !_2d0; +} +if(_2d0){ +return NO; +} +} +_2c8.pop(); +if(_2d0){ +return NO; +} +} +} +} +} +} +} +_2d1[2]=MAX(_2d1[2],0); +} +if(_2cb){ +if(_2cf===_2cb){ +++_2ce; +}else{ +if(_2cf===_2ca){ +--_2ce; +} +} +} +if(_2cf===_257){ +var _2d6=""; +while((_2cf=_2c8.next())&&_2cf!==_276&&!(/^\w/).test(_2cf)){ +_2d6+=_2cf; +} +if(_2cf===_276){ +if(_2cb===_276){ +++_2ce; +} +_2cd.atoms[_2cd.atoms.length]="function"+_2d6+"("; +if(_2cc){ +++_2d1[1]; +} +}else{ +_2cd.atoms[_2cd.atoms.length]=_2cf+"= function"; +} +}else{ +if(_2cf==_272){ +this.directive(_2c8,_2cd); +}else{ +if(_2cf==_273){ +this.hash(_2c8,_2cd); +}else{ +if(_2cf==_270){ +this.brackets(_2c8,_2cd); +}else{ +_2cd.atoms[_2cd.atoms.length]=_2cf; +} +} +} +} +} +if(_2cc){ +throw new SyntaxError(this.error_message("*** Expected ']' - Unterminated message send or array.")); +} +if(!_2c9){ +return _2cd; +} +}; +_284.prototype.selector=function(_2d7,_2d8){ +var _2d9=_2d8?_2d8:new _281(); +_2d9.atoms[_2d9.atoms.length]="sel_getUid(\""; +if(_2d7.skip_whitespace()!=_276){ +throw new SyntaxError(this.error_message("*** Expected '('")); +} +var _2da=_2d7.skip_whitespace(); +if(_2da==_277){ +throw new SyntaxError(this.error_message("*** Unexpected ')', can't have empty @selector()")); +} +_2d8.atoms[_2d8.atoms.length]=_2da; +var _2db,_2dc=true; +while((_2db=_2d7.next())&&_2db!=_277){ +if(_2dc&&/^\d+$/.test(_2db)||!(/^(\w|$|\:)/.test(_2db))){ +if(!(/\S/).test(_2db)){ +if(_2d7.skip_whitespace()==_277){ +break; +}else{ +throw new SyntaxError(this.error_message("*** Unexpected whitespace in @selector().")); +} +}else{ +throw new SyntaxError(this.error_message("*** Illegal character '"+_2db+"' in @selector().")); +} +} +_2d9.atoms[_2d9.atoms.length]=_2db; +_2dc=(_2db==_267); +} +_2d9.atoms[_2d9.atoms.length]="\")"; +if(!_2d8){ +return _2d9; +} +}; +_284.prototype.error_message=function(_2dd){ +return _2dd+" "; +}; +function _2be(aURL,_2de){ +this._URL=aURL; +this._isLocal=_2de; +}; +_2.FileDependency=_2be; +_2be.prototype.URL=function(){ +return this._URL; +}; +_2be.prototype.isLocal=function(){ +return this._isLocal; +}; +_2be.prototype.toMarkedString=function(){ +var _2df=this.URL().absoluteString(); +return (this.isLocal()?_210:_20f)+";"+_2df.length+";"+_2df; +}; +_2be.prototype.toString=function(){ +return (this.isLocal()?"LOCAL: ":"STD: ")+this.URL(); +}; +var _2e0=0,_2e1=1,_2e2=2,_2e3=0; +function _290(_2e4,_2e5,aURL,_2e6){ +if(arguments.length===0){ +return this; +} +this._code=_2e4; +this._function=_2e6||NULL; +this._URL=_1b2(aURL||new CFURL("(Anonymous"+(_2e3++)+")")); +this._fileDependencies=_2e5; +if(_2e5.length){ +this._fileDependencyStatus=_2e0; +this._fileDependencyCallbacks=[]; +}else{ +this._fileDependencyStatus=_2e2; +} +if(this._function){ +return; +} +this.setCode(_2e4); +}; +_2.Executable=_290; +_290.prototype.path=function(){ +return this.URL().path(); +}; +_290.prototype.URL=function(){ +return this._URL; +}; +_290.prototype.functionParameters=function(){ +var _2e7=["global","objj_executeFile","objj_importFile"]; +return _2e7; +}; +_290.prototype.functionArguments=function(){ +var _2e8=[_1,this.fileExecuter(),this.fileImporter()]; +return _2e8; +}; +_290.prototype.execute=function(){ +var _2e9=_2ea; +_2ea=CFBundle.bundleContainingURL(this.URL()); +var _2eb=this._function.apply(_1,this.functionArguments()); +_2ea=_2e9; +return _2eb; +}; +_290.prototype.code=function(){ +return this._code; +}; +_290.prototype.setCode=function(code){ +this._code=code; +var _2ec=this.functionParameters().join(","); +this._function=new Function(_2ec,code); +}; +_290.prototype.fileDependencies=function(){ +return this._fileDependencies; +}; +_290.prototype.hasLoadedFileDependencies=function(){ +return this._fileDependencyStatus===_2e2; +}; +var _2ed=0,_2ee=[],_2ef={}; +_290.prototype.loadFileDependencies=function(_2f0){ +var _2f1=this._fileDependencyStatus; +if(_2f0){ +if(_2f1===_2e2){ +return _2f0(); +} +this._fileDependencyCallbacks.push(_2f0); +} +if(_2f1===_2e0){ +if(_2ed){ +throw "Can't load"; +} +_2f2(this); +} +}; +function _2f2(_2f3){ +_2ee.push(_2f3); +_2f3._fileDependencyStatus=_2e1; +var _2f4=_2f3.fileDependencies(),_95=0,_2f5=_2f4.length,_2f6=_2f3.referenceURL(),_2f7=_2f6.absoluteString(),_2f8=_2f3.fileExecutableSearcher(); +_2ed+=_2f5; +for(;_95<_2f5;++_95){ +var _2f9=_2f4[_95],_2fa=_2f9.isLocal(),URL=_2f9.URL(),_2fb=(_2fa&&(_2f7+" ")||"")+URL; +if(_2ef[_2fb]){ +if(--_2ed===0){ +_2fc(); +} +continue; +} +_2ef[_2fb]=YES; +_2f8(URL,_2fa,_2fd); +} +}; +function _2fd(_2fe){ +--_2ed; +if(_2fe._fileDependencyStatus===_2e0){ +_2f2(_2fe); +}else{ +if(_2ed===0){ +_2fc(); +} +} +}; +function _2fc(){ +var _2ff=_2ee,_95=0,_300=_2ff.length; +_2ee=[]; +for(;_95<_300;++_95){ +_2ff[_95]._fileDependencyStatus=_2e2; +} +for(_95=0;_95<_300;++_95){ +var _301=_2ff[_95],_302=_301._fileDependencyCallbacks,_303=0,_304=_302.length; +for(;_303<_304;++_303){ +_302[_303](); +} +_301._fileDependencyCallbacks=[]; +} +}; +_290.prototype.referenceURL=function(){ +if(this._referenceURL===_46){ +this._referenceURL=new CFURL(".",this.URL()); +} +return this._referenceURL; +}; +_290.prototype.fileImporter=function(){ +return _290.fileImporterForURL(this.referenceURL()); +}; +_290.prototype.fileExecuter=function(){ +return _290.fileExecuterForURL(this.referenceURL()); +}; +_290.prototype.fileExecutableSearcher=function(){ +return _290.fileExecutableSearcherForURL(this.referenceURL()); +}; +var _305={}; +_290.fileExecuterForURL=function(aURL){ +var _306=_1b2(aURL),_307=_306.absoluteString(),_308=_305[_307]; +if(!_308){ +_308=function(aURL,_309,_30a){ +_290.fileExecutableSearcherForURL(_306)(aURL,_309,function(_30b){ +if(!_30b.hasLoadedFileDependencies()){ +throw "No executable loaded for file at URL "+aURL; +} +_30b.execute(_30a); +}); +}; +_305[_307]=_308; +} +return _308; +}; +var _30c={}; +_290.fileImporterForURL=function(aURL){ +var _30d=_1b2(aURL),_30e=_30d.absoluteString(),_30f=_30c[_30e]; +if(!_30f){ +_30f=function(aURL,_310,_311){ +_152(); +_290.fileExecutableSearcherForURL(_30d)(aURL,_310,function(_312){ +_312.loadFileDependencies(function(){ +_312.execute(); +_153(); +if(_311){ +_311(); +} +}); +}); +}; +_30c[_30e]=_30f; +} +return _30f; +}; +var _313={},_314={}; +_290.fileExecutableSearcherForURL=function(_315){ +var _316=_315.absoluteString(),_317=_313[_316],_318={}; +if(!_317){ +_317=function(aURL,_319,_31a){ +var _31b=(_319&&_315||"")+aURL,_31c=_314[_31b]; +if(_31c){ +return _31d(_31c); +} +var _31e=(aURL instanceof CFURL)&&aURL.scheme(); +if(_319||_31e){ +if(!_31e){ +aURL=new CFURL(aURL,_315); +} +_19f.resolveResourceAtURL(aURL,NO,_31d); +}else{ +_19f.resolveResourceAtURLSearchingIncludeURLs(aURL,_31d); +} +function _31d(_31f){ +if(!_31f){ +throw new Error("Could not load file at "+aURL); +} +_314[_31b]=_31f; +_31a(new _320(_31f.URL())); +}; +}; +_313[_316]=_317; +} +return _317; +}; +var _321={}; +function _320(aURL){ +aURL=_1b2(aURL); +var _322=aURL.absoluteString(),_323=_321[_322]; +if(_323){ +return _323; +} +_321[_322]=this; +var _324=_19f.resourceAtURL(aURL).contents(),_325=NULL,_326=aURL.pathExtension(); +if(_324.match(/^@STATIC;/)){ +_325=_327(_324,aURL); +}else{ +if(_326==="j"||!_326){ +_325=_2.preprocess(_324,aURL,_284.Flags.IncludeDebugSymbols); +}else{ +_325=new _290(_324,[],aURL); +} +} +_290.apply(this,[_325.code(),_325.fileDependencies(),aURL,_325._function]); +this._hasExecuted=NO; +}; +_2.FileExecutable=_320; +_320.prototype=new _290(); +_320.prototype.execute=function(_328){ +if(this._hasExecuted&&!_328){ +return; +} +this._hasExecuted=YES; +_290.prototype.execute.call(this); +}; +_320.prototype.hasExecuted=function(){ +return this._hasExecuted; +}; +function _327(_329,aURL){ +var _32a=new _106(_329); +var _32b=NULL,code="",_32c=[]; +while(_32b=_32a.getMarker()){ +var text=_32a.getString(); +if(_32b===_20e){ +code+=text; +}else{ +if(_32b===_20f){ +_32c.push(new _2be(new CFURL(text),NO)); +}else{ +if(_32b===_210){ +_32c.push(new _2be(new CFURL(text),YES)); +} +} +} +} +var fn=_320._lookupCachedFunction(aURL); +if(fn){ +return new _290(code,_32c,aURL,fn); +} +return new _290(code,_32c,aURL); +}; +var _32d={}; +_320._cacheFunction=function(aURL,fn){ +aURL=typeof aURL==="string"?aURL:aURL.absoluteString(); +_32d[aURL]=fn; +}; +_320._lookupCachedFunction=function(aURL){ +aURL=typeof aURL==="string"?aURL:aURL.absoluteString(); +return _32d[aURL]; +}; +var _32e=1,_32f=2,_330=4,_331=8; +objj_ivar=function(_332,_333){ +this.name=_332; +this.type=_333; +}; +objj_method=function(_334,_335,_336){ +this.name=_334; +this.method_imp=_335; +this.types=_336; +}; +objj_class=function(_337){ +this.isa=NULL; +this.super_class=NULL; +this.sub_classes=[]; +this.name=NULL; +this.info=0; +this.ivars=[]; +this.method_list=[]; +this.method_hash={}; +this.method_store=function(){ +}; +this.method_dtable=this.method_store.prototype; +this.allocator=function(){ +}; +this._UID=-1; +}; +objj_object=function(){ +this.isa=NULL; +this._UID=-1; +}; +class_getName=function(_338){ +if(_338==Nil){ +return ""; +} +return _338.name; +}; +class_isMetaClass=function(_339){ +if(!_339){ +return NO; +} +return ((_339.info&(_32f))); +}; +class_getSuperclass=function(_33a){ +if(_33a==Nil){ +return Nil; +} +return _33a.super_class; +}; +class_setSuperclass=function(_33b,_33c){ +_33b.super_class=_33c; +_33b.isa.super_class=_33c.isa; +}; +class_addIvar=function(_33d,_33e,_33f){ +var _340=_33d.allocator.prototype; +if(typeof _340[_33e]!="undefined"){ +return NO; +} +_33d.ivars.push(new objj_ivar(_33e,_33f)); +_340[_33e]=NULL; +return YES; +}; +class_addIvars=function(_341,_342){ +var _343=0,_344=_342.length,_345=_341.allocator.prototype; +for(;_343<_344;++_343){ +var ivar=_342[_343],name=ivar.name; +if(typeof _345[name]==="undefined"){ +_341.ivars.push(ivar); +_345[name]=NULL; +} +} +}; +class_copyIvarList=function(_346){ +return _346.ivars.slice(0); +}; +class_addMethod=function(_347,_348,_349,_34a){ +if(_347.method_hash[_348]){ +return NO; +} +var _34b=new objj_method(_348,_349,_34a); +_347.method_list.push(_34b); +_347.method_dtable[_348]=_34b; +if(!((_347.info&(_32f)))&&(((_347.info&(_32f)))?_347:_347.isa).isa===(((_347.info&(_32f)))?_347:_347.isa)){ +class_addMethod((((_347.info&(_32f)))?_347:_347.isa),_348,_349,_34a); +} +return YES; +}; +class_addMethods=function(_34c,_34d){ +var _34e=0,_34f=_34d.length,_350=_34c.method_list,_351=_34c.method_dtable; +for(;_34e<_34f;++_34e){ +var _352=_34d[_34e]; +if(_34c.method_hash[_352.name]){ +continue; +} +_350.push(_352); +_351[_352.name]=_352; +} +if(!((_34c.info&(_32f)))&&(((_34c.info&(_32f)))?_34c:_34c.isa).isa===(((_34c.info&(_32f)))?_34c:_34c.isa)){ +class_addMethods((((_34c.info&(_32f)))?_34c:_34c.isa),_34d); +} +}; +class_getInstanceMethod=function(_353,_354){ +if(!_353||!_354){ +return NULL; +} +var _355=_353.method_dtable[_354]; +return _355?_355:NULL; +}; +class_getClassMethod=function(_356,_357){ +if(!_356||!_357){ +return NULL; +} +var _358=(((_356.info&(_32f)))?_356:_356.isa).method_dtable[_357]; +return _358?_358:NULL; +}; +class_respondsToSelector=function(_359,_35a){ +return class_getClassMethod(_359,_35a)!=NULL; +}; +class_copyMethodList=function(_35b){ +return _35b.method_list.slice(0); +}; +class_replaceMethod=function(_35c,_35d,_35e){ +if(!_35c||!_35d){ +return NULL; +} +var _35f=_35c.method_dtable[_35d],_360=NULL; +if(_35f){ +_360=_35f.method_imp; +} +_35f.method_imp=_35e; +return _360; +}; +var _361=function(_362){ +var meta=(((_362.info&(_32f)))?_362:_362.isa); +if((_362.info&(_32f))){ +_362=objj_getClass(_362.name); +} +if(_362.super_class&&!((((_362.super_class.info&(_32f)))?_362.super_class:_362.super_class.isa).info&(_330))){ +_361(_362.super_class); +} +if(!(meta.info&(_330))&&!(meta.info&(_331))){ +meta.info=(meta.info|(_331))&~(0); +objj_msgSend(_362,"initialize"); +meta.info=(meta.info|(_330))&~(_331); +} +}; +var _363=new objj_method("forward",function(self,_364){ +return objj_msgSend(self,"forward::",_364,arguments); +}); +class_getMethodImplementation=function(_365,_366){ +if(!((((_365.info&(_32f)))?_365:_365.isa).info&(_330))){ +_361(_365); +} +var _367=_365.method_dtable[_366]; +if(!_367){ +_367=_363; +} +var _368=_367.method_imp; +return _368; +}; +var _369={}; +objj_allocateClassPair=function(_36a,_36b){ +var _36c=new objj_class(_36b),_36d=new objj_class(_36b),_36e=_36c; +if(_36a){ +_36e=_36a; +while(_36e.superclass){ +_36e=_36e.superclass; +} +_36c.allocator.prototype=new _36a.allocator; +_36c.method_store.prototype=new _36a.method_store; +_36c.method_dtable=_36c.method_store.prototype; +_36d.method_store.prototype=new _36a.isa.method_store; +_36d.method_dtable=_36d.method_store.prototype; +_36c.super_class=_36a; +_36d.super_class=_36a.isa; +}else{ +_36c.allocator.prototype=new objj_object(); +} +_36c.isa=_36d; +_36c.name=_36b; +_36c.info=_32e; +_36c._UID=objj_generateObjectUID(); +_36d.isa=_36e.isa; +_36d.name=_36b; +_36d.info=_32f; +_36d._UID=objj_generateObjectUID(); +return _36c; +}; +var _2ea=nil; +objj_registerClassPair=function(_36f){ +_1[_36f.name]=_36f; +_369[_36f.name]=_36f; +_1b9(_36f,_2ea); +}; +class_createInstance=function(_370){ +if(!_370){ +throw new Error("*** Attempting to create object with Nil class."); +} +var _371=new _370.allocator(); +_371.isa=_370; +_371._UID=objj_generateObjectUID(); +return _371; +}; +var _372=function(){ +}; +_372.prototype.member=false; +with(new _372()){ +member=true; +} +if(new _372().member){ +var _373=class_createInstance; +class_createInstance=function(_374){ +var _375=_373(_374); +if(_375){ +var _376=_375.isa,_377=_376; +while(_376){ +var _378=_376.ivars; +count=_378.length; +while(count--){ +_375[_378[count].name]=NULL; +} +_376=_376.super_class; +} +_375.isa=_377; +} +return _375; +}; +} +object_getClassName=function(_379){ +if(!_379){ +return ""; +} +var _37a=_379.isa; +return _37a?class_getName(_37a):""; +}; +objj_lookUpClass=function(_37b){ +var _37c=_369[_37b]; +return _37c?_37c:Nil; +}; +objj_getClass=function(_37d){ +var _37e=_369[_37d]; +if(!_37e){ +} +return _37e?_37e:Nil; +}; +objj_getMetaClass=function(_37f){ +var _380=objj_getClass(_37f); +return (((_380.info&(_32f)))?_380:_380.isa); +}; +ivar_getName=function(_381){ +return _381.name; +}; +ivar_getTypeEncoding=function(_382){ +return _382.type; +}; +objj_msgSend=function(_383,_384){ +if(_383==nil){ +return nil; +} +var isa=_383.isa; +if(!((((isa.info&(_32f)))?isa:isa.isa).info&(_330))){ +_361(isa); +} +var _385=isa.method_dtable[_384]; +if(!_385){ +_385=_363; +} +var _386=_385.method_imp; +switch(arguments.length){ +case 2: +return _386(_383,_384); +case 3: +return _386(_383,_384,arguments[2]); +case 4: +return _386(_383,_384,arguments[2],arguments[3]); +} +return _386.apply(_383,arguments); +}; +objj_msgSendSuper=function(_387,_388){ +var _389=_387.super_class; +arguments[0]=_387.receiver; +if(!((((_389.info&(_32f)))?_389:_389.isa).info&(_330))){ +_361(_389); +} +var _38a=_389.method_dtable[_388]; +if(!_38a){ +_38a=_363; +} +var _38b=_38a.method_imp; +return _38b.apply(_387.receiver,arguments); +}; +method_getName=function(_38c){ +return _38c.name; +}; +method_getImplementation=function(_38d){ +return _38d.method_imp; +}; +method_setImplementation=function(_38e,_38f){ +var _390=_38e.method_imp; +_38e.method_imp=_38f; +return _390; +}; +method_exchangeImplementations=function(lhs,rhs){ +var _391=method_getImplementation(lhs),_392=method_getImplementation(rhs); +method_setImplementation(lhs,_392); +method_setImplementation(rhs,_391); +}; +sel_getName=function(_393){ +return _393?_393:""; +}; +sel_getUid=function(_394){ +return _394; +}; +sel_isEqual=function(lhs,rhs){ +return lhs===rhs; +}; +sel_registerName=function(_395){ +return _395; +}; +objj_eval=function(_396){ +var url=_2.pageURL; +var _397=_2.asyncLoader; +_2.asyncLoader=NO; +var _398=_2.preprocess(_396,url,0); +if(!_398.hasLoadedFileDependencies()){ +_398.loadFileDependencies(); +} +_1._objj_eval_scope={}; +_1._objj_eval_scope.objj_executeFile=_290.fileExecuterForURL(url); +_1._objj_eval_scope.objj_importFile=_290.fileImporterForURL(url); +var code="with(_objj_eval_scope){"+_398._code+"\n//*/\n}"; +var _399; +_399=eval(code); +_2.asyncLoader=_397; +return _399; +}; +_2.objj_eval=objj_eval; +_152(); +var _39a=new CFURL(window.location.href),_39b=document.getElementsByTagName("base"),_39c=_39b.length; +if(_39c>0){ +var _39d=_39b[_39c-1],_39e=_39d&&_39d.getAttribute("href"); +if(_39e){ +_39a=new CFURL(_39e,_39a); +} +} +var _39f=new CFURL(window.OBJJ_MAIN_FILE||"main.j"),_1b8=new CFURL(".",new CFURL(_39f,_39a)).absoluteURL(),_3a0=new CFURL("..",_1b8).absoluteURL(); +if(_1b8===_3a0){ +_3a0=new CFURL(_3a0.schemeAndAuthority()); +} +_19f.resourceAtURL(_3a0,YES); +_2.pageURL=_39a; +_2.bootstrap=function(){ +_3a1(); +}; +function _3a1(){ +_19f.resolveResourceAtURL(_1b8,YES,function(_3a2){ +var _3a3=_19f.includeURLs(),_95=0,_3a4=_3a3.length; +for(;_95<_3a4;++_95){ +_3a2.resourceAtURL(_3a3[_95],YES); +} +_290.fileImporterForURL(_1b8)(_39f.lastPathComponent(),YES,function(){ +_153(); +_3aa(function(){ +var _3a5=window.location.hash.substring(1),args=[]; +if(_3a5.length){ +args=_3a5.split("/"); +for(var i=0,_3a4=args.length;i<_3a4;i++){ +args[i]=decodeURIComponent(args[i]); +} +} +var _3a6=window.location.search.substring(1).split("&"),_3a7=new CFMutableDictionary(); +for(var i=0,_3a4=_3a6.length;i<_3a4;i++){ +var _3a8=_3a6[i].split("="); +if(!_3a8[0]){ +continue; +} +if(_3a8[1]==null){ +_3a8[1]=true; +} +_3a7.setValueForKey(decodeURIComponent(_3a8[0]),decodeURIComponent(_3a8[1])); +} +main(args,_3a7); +}); +}); +}); +}; +var _3a9=NO; +function _3aa(_3ab){ +if(_3a9){ +return _3ab(); +} +if(window.addEventListener){ +window.addEventListener("load",_3ab,NO); +}else{ +if(window.attachEvent){ +window.attachEvent("onload",_3ab); +} +} +}; +_3aa(function(){ +_3a9=YES; +}); +if(typeof OBJJ_AUTO_BOOTSTRAP==="undefined"||OBJJ_AUTO_BOOTSTRAP){ +_2.bootstrap(); +} +function _1b2(aURL){ +if(aURL instanceof CFURL&&aURL.scheme()){ +return aURL; +} +return new CFURL(aURL,_1b8); +}; +objj_importFile=_290.fileImporterForURL(_1b8); +objj_executeFile=_290.fileExecuterForURL(_1b8); +objj_import=function(){ +CPLog.warn("objj_import is deprecated, use objj_importFile instead"); +objj_importFile.apply(this,arguments); +}; +})(window,ObjectiveJ); ADDED Site/Site/Info.plist Index: Site/Site/Info.plist ================================================================== --- Site/Site/Info.plist +++ Site/Site/Info.plist @@ -0,0 +1,14 @@ + + + + + CPApplicationDelegateClass + AppController + CPBundleName + Site + CPPrincipalClass + CPApplication + Main cib file base name + MainMenu.cib + + ADDED Site/Site/Resources/MainMenu.cib Index: Site/Site/Resources/MainMenu.cib ================================================================== --- Site/Site/Resources/MainMenu.cib +++ Site/Site/Resources/MainMenu.cib cannot compute difference between binary files ADDED Site/Site/Resources/MainMenu.xib Index: Site/Site/Resources/MainMenu.xib ================================================================== --- Site/Site/Resources/MainMenu.xib +++ Site/Site/Resources/MainMenu.xib @@ -0,0 +1,2366 @@ + + + + 1050 + 10H574 + 823 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 823 + + + YES + + + + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{335, 148}, {518, 602}} + 1946157056 + Window + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 301 + + YES + + + 301 + {{212, 43}, {96, 32}} + + YES + + 67239424 + 134217728 + Logout + + LucidaGrande + 13 + 1044 + + + -2038284033 + 130 + + + + 200 + 25 + + + + + 301 + {{99, 558}, {326, 29}} + + YES + + 68288064 + 272630784 + FIRENET CONTROL PANEL + + LucidaGrande + 24 + 16 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 301 + {{39, 488}, {96, 32}} + + YES + + 67239424 + 134217728 + Debug + + + -2038284033 + 129 + + + 200 + 25 + + + + + 301 + {{212, 488}, {96, 32}} + + YES + + 67239424 + 134217728 + Console + + + -2038284033 + 129 + + + 200 + 25 + + + + + 301 + {{212, 43}, {96, 32}} + + YES + + 67239424 + 134217728 + Logout + + + -2038284033 + 130 + + + + 200 + 25 + + + + + 301 + {{177, 410}, {185, 44}} + + YES + + -1542324672 + 138417152 + + + LucidaGrande + 36 + 16 + + + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 1 + MCAxIDAAA + + + + + + 301 + {{379, 488}, {98, 32}} + + YES + + 67239424 + 134217728 + RunShow + + + -2038284033 + 129 + + + 200 + 25 + + + + {518, 602} + + + YES + + + {{0, 0}, {1440, 878}} + {1.79769e+308, 1.79769e+308} + + + AppController + + + 1 + 2 + {{196, 317}, {136, 193}} + 544736256 + Login + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 301 + {{28, 156}, {79, 17}} + + YES + + 68288064 + 138413056 + CHALLENGE + + + + + + + + + 301 + {{20, 126}, {96, 22}} + + YES + + -2075001280 + 138413056 + chal + + 0000 + + YES + + + 6 + System + textColor + + + + + + + 301 + {{20, 71}, {96, 22}} + + YES + + -1804468672 + 138413056 + + + 0000 + + YES + + + + + + + 301 + {{34, 101}, {68, 17}} + + YES + + 68288064 + 272630784 + RESPONSE + + + + + + + + + 301 + {{36, 19}, {64, 27}} + + YES + + -2080244224 + 134217728 + Login + + + -2033434369 + 66 + Login + + 400 + 75 + + + + {136, 193} + + + {{0, 0}, {1280, 778}} + {1.79769e+308, 1.79769e+308} + + + 1 + 2 + {{350, 157}, {514, 533}} + 611844096 + Debug + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 268 + {{177, 491}, {162, 22}} + + YES + + 68288064 + 272630784 + FIRENET DEBUG + + LucidaGrande + 18 + 16 + + + + + + + + + 268 + {{110, 442}, {243, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{67, 444}, {38, 17}} + + YES + + 68288064 + 272630784 + CMD + + + + + + + + + 268 + {{208, 394}, {96, 32}} + + YES + + 67239424 + 134217728 + Send + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{97, 91}, {317, 265}} + + YES + + -1805517311 + 272629760 + + + + YES + + + + + + + 268 + {{223, 364}, {65, 17}} + + YES + + 68288064 + 272630784 + Response + + + + + + + + + 268 + {{393, 20}, {96, 32}} + + YES + + 67239424 + 134217728 + Done + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{131, 403}, {63, 18}} + + YES + + 67239424 + 0 + Post + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + {514, 533} + + {{0, 0}, {1280, 778}} + {1.79769e+308, 1.79769e+308} + + + 1 + 2 + {{351, 151}, {676, 539}} + 611844096 + Console + NSWindow + + {1.79769e+308, 1.79769e+308} + {520, 539} + + + 256 + + YES + + + 301 + {{410, 12}, {96, 32}} + + YES + + 67239424 + 134217728 + Done + + + -2038284033 + 129 + + + 200 + 25 + + + + + 301 + + YES + + + 2304 + + YES + + + 274 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 256 + {535, 360} + + YES + + + 256 + {535, 17} + + + + + + -2147483392 + {{379, 0}, {16, 17}} + + + + YES + + 64 + 40 + 1000 + + 75628096 + 134219776 + Node + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 337772096 + 2048 + Text Cell + + + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 64 + 40 + 1000 + + 75628096 + 134219776 + Armed + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 64 + 10 + 3.4028234663852886e+38 + + 75628096 + 134219776 + Ch 1 + + + 6 + System + headerColor + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 64 + 10 + 3.4028234663852886e+38 + + 75628096 + 134219776 + Ch 2 + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 64 + 10 + 3.4028234663852886e+38 + + 75628096 + 134219776 + Ch 3 + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 64 + 10 + 3.4028234663852886e+38 + + 75628096 + 134219776 + Ch 4 + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 68 + 10 + 3.4028234663852886e+38 + + 75628096 + 134219776 + Ch 5 + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 59 + 10 + 3.4028234663852886e+38 + + 75628096 + 2048 + Ch 6 + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 373293056 + + + 4 + 15 + 0 + YES + 0 + + + {{1, 17}, {535, 360}} + + + + + 4 + + + + -2147483392 + {{379, 17}, {15, 365}} + + + _doScroller: + 0.96052631578947367 + + + + -2147483392 + {{1, 382}, {470, 15}} + + 1 + + _doScroller: + 0.99607072691552068 + + + + 2304 + + YES + + + {{1, 0}, {535, 17}} + + + + + 4 + + + + {{0, 20}, {537, 378}} + + + 562 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + {557, 401} + + NSView + + + {{1, 1}, {557, 401}} + + + + + 4 + + + + 256 + {{558, 1}, {15, 401}} + + + _doScroller: + 1 + 0.96363627910614014 + + + + 256 + {{1, 402}, {557, 15}} + + 1 + + _doScroller: + 0.50602412223815918 + + + {{61, 69}, {574, 418}} + + + 50 + + + + + + {676, 539} + + + {{0, 0}, {1280, 778}} + {520, 561} + {1.79769e+308, 1.79769e+308} + + + 1 + 2 + {{382, 82}, {489, 587}} + 611844096 + Run + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 268 + {{379, 12}, {96, 32}} + + YES + + 67239424 + 134217728 + Done + + + -2038284033 + 129 + + + 200 + 25 + + + + {489, 587} + + + {{0, 0}, {1280, 778}} + {1.79769e+308, 1.79769e+308} + + + + + YES + + + delegate + + + + 451 + + + + theWindow + + + + 459 + + + + loginWindow + + + + 536 + + + + loginChal + + + + 537 + + + + loginResp + + + + 539 + + + + mainbLogout + + + + 589 + + + + logoutButton: + + + + 594 + + + + loginSend: + + + + 596 + + + + debugWindow + + + + 597 + + + + debugShow: + + + + 598 + + + + mainbDebug + + + + 599 + + + + mainbConsole + + + + 600 + + + + debugSend: + + + + 602 + + + + debugDone: + + + + 603 + + + + debugCmd + + + + 604 + + + + debugOutput + + + + 605 + + + + debugckPost + + + + 608 + + + + loginReady + + + + 614 + + + + consoleShow: + + + + 619 + + + + consoleDone: + + + + 620 + + + + consoleWindow + + + + 621 + + + + runWindow + + + + 630 + + + + mainbRun + + + + 631 + + + + runShow: + + + + 632 + + + + runDone: + + + + 633 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + + + + + + 450 + + + + + 524 + + + YES + + + + Login(Window) + + + 525 + + + YES + + + + + + + + + + 526 + + + YES + + + + + + 527 + + + YES + + + + + + 528 + + + YES + + + + + + 529 + + + YES + + + + + + 530 + + + YES + + + + + + 531 + + + + + 532 + + + + + 533 + + + + + 534 + + + + + 535 + + + + + 541 + + + YES + + + + + + 542 + + + + + 559 + + + YES + + + + + + 560 + + + + + 563 + + + YES + + + + Debug(Window) + + + 564 + + + YES + + + + + + + + + + + + + 565 + + + YES + + + + + + 566 + + + + + 567 + + + YES + + + + + + 568 + + + + + 569 + + + YES + + + + + + 570 + + + + + 571 + + + YES + + + + + + 572 + + + + + 573 + + + YES + + + + + + 574 + + + + + 575 + + + YES + + + + + + 576 + + + + + 577 + + + YES + + + + + + 578 + + + + + 579 + + + YES + + + + + + 580 + + + + + 581 + + + YES + + + + + + 582 + + + + + 585 + + + YES + + + + + + 586 + + + + + 606 + + + YES + + + + + + 607 + + + + + 611 + + + YES + + + + + + 612 + + + + + 615 + + + YES + + + + Console (Window) + + + 616 + + + YES + + + + + + + 617 + + + YES + + + + + + 618 + + + + + 623 + + + YES + + + + + + 624 + + + + + 626 + + + YES + + + + Run (Window) + + + 627 + + + YES + + + + + + 628 + + + YES + + + + + + 629 + + + + + 644 + + + YES + + + + + + + + 645 + + + + + 646 + + + + + 647 + + + YES + + + + + + 648 + + + YES + + + + + + + + + 649 + + + + + 650 + + + + + 651 + + + YES + + + + + + + + + + + + + 652 + + + + + 653 + + + YES + + + + + + 654 + + + YES + + + + + + 655 + + + + + 656 + + + + + 657 + + + YES + + + + + + 658 + + + + + 659 + + + YES + + + + + + 660 + + + + + 661 + + + YES + + + + + + 662 + + + + + 663 + + + YES + + + + + + 664 + + + + + 665 + + + YES + + + + + + 666 + + + + + 667 + + + YES + + + + + + 668 + + + + + + + YES + + YES + -3.IBPluginDependency + 371.IBEditorWindowLastContentRect + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 371.windowTemplate.maxSize + 372.IBPluginDependency + 524.IBEditorWindowLastContentRect + 524.IBPluginDependency + 524.IBWindowTemplateEditedContentRect + 524.NSWindowTemplate.visibleAtLaunch + 524.WindowOrigin + 524.editorWindowContentRectSynchronizationRect + 525.IBPluginDependency + 526.IBPluginDependency + 526.IBViewBoundsToFrameTransform + 527.IBPluginDependency + 527.IBViewBoundsToFrameTransform + 528.IBPluginDependency + 528.IBViewBoundsToFrameTransform + 529.IBPluginDependency + 529.IBViewBoundsToFrameTransform + 530.IBPluginDependency + 530.IBViewBoundsToFrameTransform + 531.IBPluginDependency + 532.IBPluginDependency + 533.IBPluginDependency + 534.IBPluginDependency + 535.IBPluginDependency + 541.IBPluginDependency + 541.IBViewBoundsToFrameTransform + 542.IBPluginDependency + 559.IBPluginDependency + 559.IBViewBoundsToFrameTransform + 560.IBPluginDependency + 563.IBEditorWindowLastContentRect + 563.IBPluginDependency + 563.IBWindowTemplateEditedContentRect + 563.NSWindowTemplate.visibleAtLaunch + 564.IBPluginDependency + 565.IBPluginDependency + 565.IBViewBoundsToFrameTransform + 566.IBPluginDependency + 567.IBPluginDependency + 568.IBPluginDependency + 569.IBPluginDependency + 569.IBViewBoundsToFrameTransform + 570.IBPluginDependency + 571.IBPluginDependency + 571.IBViewBoundsToFrameTransform + 572.IBPluginDependency + 573.IBPluginDependency + 573.IBViewBoundsToFrameTransform + 574.IBPluginDependency + 575.IBPluginDependency + 575.IBViewBoundsToFrameTransform + 576.IBPluginDependency + 577.IBPluginDependency + 578.IBPluginDependency + 579.IBPluginDependency + 579.IBViewBoundsToFrameTransform + 580.IBPluginDependency + 581.IBPluginDependency + 581.IBViewBoundsToFrameTransform + 582.IBPluginDependency + 585.IBPluginDependency + 585.IBViewBoundsToFrameTransform + 586.IBPluginDependency + 606.IBPluginDependency + 606.IBViewBoundsToFrameTransform + 607.IBPluginDependency + 611.IBPluginDependency + 612.IBPluginDependency + 615.IBEditorWindowLastContentRect + 615.IBPluginDependency + 615.IBWindowTemplateEditedContentRect + 615.NSWindowTemplate.visibleAtLaunch + 615.windowTemplate.hasMinSize + 615.windowTemplate.minSize + 616.IBPluginDependency + 617.IBPluginDependency + 617.IBViewBoundsToFrameTransform + 618.IBPluginDependency + 623.IBPluginDependency + 624.IBPluginDependency + 626.IBEditorWindowLastContentRect + 626.IBPluginDependency + 626.IBWindowTemplateEditedContentRect + 626.NSWindowTemplate.visibleAtLaunch + 627.IBPluginDependency + 628.IBPluginDependency + 629.IBPluginDependency + 644.IBPluginDependency + 644.IBViewBoundsToFrameTransform + 645.IBPluginDependency + 646.IBPluginDependency + 647.IBPluginDependency + 648.IBPluginDependency + 648.IBViewBoundsToFrameTransform + 649.IBPluginDependency + 650.IBPluginDependency + 651.IBPluginDependency + 652.IBPluginDependency + 653.IBPluginDependency + 654.IBPluginDependency + 655.IBPluginDependency + 656.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + {{373, 123}, {518, 602}} + com.apple.InterfaceBuilder.CocoaPlugin + {{373, 123}, {518, 602}} + + {{33, 99}, {480, 360}} + {3.40282e+38, 3.40282e+38} + com.apple.InterfaceBuilder.CocoaPlugin + {{562, 220}, {136, 193}} + com.apple.InterfaceBuilder.CocoaPlugin + {{562, 220}, {136, 193}} + + {196, 240} + {{357, 418}, {480, 270}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCDAAAwngAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBoAAAwpIAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCCAAAwsQAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBoAAAwwAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABB4AAAwxkAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDVAAAwpIAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABC2gAAxBJAAA + + com.apple.InterfaceBuilder.CocoaPlugin + {{365, 101}, {514, 533}} + com.apple.InterfaceBuilder.CocoaPlugin + {{365, 101}, {514, 533}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDSgAAw/+AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABChgAAw+cAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDNwAAw9OAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCwgAAw72AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDZwAAw72AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCHAAAxAGAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDQwAAxAGAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDVAAAwpIAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABC6gAAw9GAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{214, 174}, {676, 539}} + com.apple.InterfaceBuilder.CocoaPlugin + {{214, 174}, {676, 539}} + + + {520, 539} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDz4AAwogAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{378, 101}, {489, 587}} + com.apple.InterfaceBuilder.CocoaPlugin + {{378, 101}, {489, 587}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCdAAAw/KAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAAAAAAAAw8YAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 668 + + + + YES + + AppController + + YES + + YES + consoleDone: + consoleShow: + debugDone: + debugSend: + debugShow: + loginSend: + logoutButton: + runDone: + runShow: + + + YES + id + id + id + id + id + id + id + id + id + + + + YES + + YES + consoleDone: + consoleShow: + debugDone: + debugSend: + debugShow: + loginSend: + logoutButton: + runDone: + runShow: + + + YES + + consoleDone: + id + + + consoleShow: + id + + + debugDone: + id + + + debugSend: + id + + + debugShow: + id + + + loginSend: + id + + + logoutButton: + id + + + runDone: + id + + + runShow: + id + + + + + YES + + YES + consoleWindow + debugCmd + debugOutput + debugWindow + debugckPost + loginChal + loginReady + loginResp + loginWindow + mainbConsole + mainbDebug + mainbLogout + mainbRun + runWindow + theWindow + + + YES + NSWindow + id + id + NSWindow + id + id + id + id + NSWindow + id + id + id + id + NSWindow + NSWindow + + + + YES + + YES + consoleWindow + debugCmd + debugOutput + debugWindow + debugckPost + loginChal + loginReady + loginResp + loginWindow + mainbConsole + mainbDebug + mainbLogout + mainbRun + runWindow + theWindow + + + YES + + consoleWindow + NSWindow + + + debugCmd + id + + + debugOutput + id + + + debugWindow + NSWindow + + + debugckPost + id + + + loginChal + id + + + loginReady + id + + + loginResp + id + + + loginWindow + NSWindow + + + mainbConsole + id + + + mainbDebug + id + + + mainbLogout + id + + + mainbRun + id + + + runWindow + NSWindow + + + theWindow + NSWindow + + + + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../Site.xcodeproj + 3 + + NSSwitch + {15, 15} + + + ADDED Site/Site/Resources/spinner.gif Index: Site/Site/Resources/spinner.gif ================================================================== --- Site/Site/Resources/spinner.gif +++ Site/Site/Resources/spinner.gif cannot compute difference between binary files ADDED Site/Site/Site.xcodeproj/default.pbxuser Index: Site/Site/Site.xcodeproj/default.pbxuser ================================================================== --- Site/Site/Site.xcodeproj/default.pbxuser +++ Site/Site/Site.xcodeproj/default.pbxuser @@ -0,0 +1,232 @@ +// !$*UTF8*$! +{ + 64200A3C0FD424DD005D41CE /* Project object */ = { + activeBuildConfigurationName = Release; + activeExecutable = 64200DD80FD4268D005D41CE /* Release (Safari) */; + activeTarget = 64200DBC0FD42578005D41CE /* Untitled */; + addToTargets = ( + 64200DBC0FD42578005D41CE /* Untitled */, + ); + codeSenseManager = 64200A410FD424DD005D41CE /* Code sense */; + executables = ( + 64200DD80FD4268D005D41CE /* Release */, + ); + ignoreBreakpointsInProjectsDict = { + }; + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; + PBXFileTableDataSourceColumnWidthsKey = ( + 22, + 300, + 229, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXExecutablesDataSource_ActiveFlagID, + PBXExecutablesDataSource_NameID, + PBXExecutablesDataSource_CommentsID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 341, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 301, + 60, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 265572455; + PBXWorkspaceStateSaveDate = 265572455; + }; + perUserProjectItems = { + 64200DC60FD425B7005D41CE /* PBXTextBookmark */ = 64200DC60FD425B7005D41CE /* PBXTextBookmark */; + 64200E0F0FD43007005D41CE /* PBXTextBookmark */ = 64200E0F0FD43007005D41CE /* PBXTextBookmark */; + 64200E100FD43007005D41CE /* PBXTextBookmark */ = 64200E100FD43007005D41CE /* PBXTextBookmark */; + 64C346B70FD450570036BAB2 /* PBXTextBookmark */ = 64C346B70FD450570036BAB2 /* PBXTextBookmark */; + 64C346BD0FD450680036BAB2 /* PBXTextBookmark */ = 64C346BD0FD450680036BAB2 /* PBXTextBookmark */; + }; + sourceControlManager = 64200A400FD424DD005D41CE /* Source Control */; + userBuildSettings = { + }; + }; + 64200A400FD424DD005D41CE /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + }; + }; + 64200A410FD424DD005D41CE /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 64200A4A0FD4250F005D41CE /* main.j */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {960, 816}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 316}"; + sepNavWindowFrame = "{{15, 215}, {1019, 958}}"; + }; + }; + 64200A4C0FD4250F005D41CE /* index.html */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1230, 952}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 418}"; + }; + }; + 64200A4D0FD4250F005D41CE /* AppController.j */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {660, 308}}"; + sepNavSelRange = "{130, 0}"; + sepNavVisRange = "{0, 503}"; + sepNavWindowFrame = "{{61, 173}, {1019, 958}}"; + }; + }; + 64200DBC0FD42578005D41CE /* Untitled */ = { + activeExec = 0; + }; + 64200DC60FD425B7005D41CE /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 64200A4D0FD4250F005D41CE /* AppController.j */; + name = "AppController.j: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 503; + vrLoc = 0; + }; + 64200DD80FD4268D005D41CE /* Release (Safari) */ = { + isa = PBXExecutable; + activeArgIndices = ( + YES, + ); + argumentStrings = ( + "-a \"$(BROWSER_APP_NAME)\" \"$(PROJECT_DIR)\"/\"$(INDEX_FILE)\"", + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 0; + configStateDict = { + "PBXLSLaunchAction-0" = { + PBXLSLaunchAction = 0; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXLSRunLaunchConfig; + commandLineArgs = ( + ); + displayName = "Executable Runner"; + environment = { + }; + identifier = com.apple.Xcode.launch.runConfig; + remoteHostInfo = ""; + startActionInfo = ""; + }; + }; + customDataFormattersEnabled = 1; + dataTipCustomDataFormattersEnabled = 1; + dataTipShowTypeColumn = 1; + dataTipSortType = 0; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + launchableReference = 64200DD90FD4268D005D41CE /* open */; + libgmallocEnabled = 0; + name = "Site"; + savedGlobals = { + }; + showTypeColumn = 0; + sourceDirectories = ( + ); + startupPath = "<>"; + }; + 64200DD90FD4268D005D41CE /* open */ = { + isa = PBXFileReference; + lastKnownFileType = "compiled.mach-o.executable"; + name = open; + path = /usr/bin/open; + sourceTree = ""; + }; + 64200E0F0FD43007005D41CE /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 64200A4C0FD4250F005D41CE /* index.html */; + name = "index.html: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 418; + vrLoc = 0; + }; + 64200E100FD43007005D41CE /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 64200A4C0FD4250F005D41CE /* index.html */; + name = "index.html: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 418; + vrLoc = 0; + }; + 64C346B70FD450570036BAB2 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 64200A4D0FD4250F005D41CE /* AppController.j */; + name = "AppController.j: 10"; + rLen = 0; + rLoc = 130; + rType = 0; + vrLen = 503; + vrLoc = 0; + }; + 64C346BD0FD450680036BAB2 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 64200A4D0FD4250F005D41CE /* AppController.j */; + name = "AppController.j: 10"; + rLen = 0; + rLoc = 130; + rType = 0; + vrLen = 503; + vrLoc = 0; + }; +} ADDED Site/Site/Site.xcodeproj/jim.mode1v3 Index: Site/Site/Site.xcodeproj/jim.mode1v3 ================================================================== --- Site/Site/Site.xcodeproj/jim.mode1v3 +++ Site/Site/Site.xcodeproj/jim.mode1v3 @@ -0,0 +1,1413 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 382DF98812944A5F006770C2 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + + XCObserverAutoDisconnectKey + + XCObserverDefintionKey + + XCObserverFactoryKey + XCPerspectivesSpecificationIdentifier + XCObserverGUIDKey + XCObserverProjectIdentifier + XCObserverNotificationKey + PBXStatusBuildStateMessageNotification + XCObserverTargetKey + XCMainBuildResultsModuleGUID + XCObserverTriggerKey + awakenModuleWithObserver: + XCObserverValidationKey + + + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-target-popup + active-buildstyle-popup + action + debugger-enable-breakpoints + buildOrClean + go-debug + com.apple.ide.PBXToolbarStopButton + servicesModulebreakpoints + servicesModulefind + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 64200A3A0FD424DD005D41CE + 64200DB90FD42540005D41CE + 64200DBA0FD4254B005D41CE + 64200A470FD4250F005D41CE + 1C37FBAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 3 + 1 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 486}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 504}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 448 262 663 545 0 0 1280 1002 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {455, 0}} + RubberWindowFrame + 448 262 663 545 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 5}, {455, 499}} + RubberWindowFrame + 448 262 663 545 0 0 1280 1002 + + Module + XCDetailModule + Proportion + 499pt + + + Proportion + 455pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 386D68A81306A18500D46036 + 1CE0B1FE06471DED0097A5F4 + 386D68A91306A18500D46036 + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + PinnedNavigatorIdentifier + 38AFD52812EF715500A0094F + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 319201659.179506 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 2 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + /Users/jschimpf/Public/Firenet/Site/Site/Site.xcodeproj + + WindowString + 448 262 663 545 0 0 1280 1002 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {1093, 308}} + RubberWindowFrame + 87 56 1093 590 0 0 1280 778 + + Module + PBXNavigatorGroup + Proportion + 308pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1010 + + GeometryConfiguration + + Frame + {{0, 313}, {1093, 236}} + RubberWindowFrame + 87 56 1093 590 0 0 1280 778 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 549pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 382DF98412944A5D006770C2 + 38AFD52B12EF723200A0094F + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowContentMinSize + 486 300 + WindowString + 87 56 1093 590 0 0 1280 778 + WindowToolGUID + 382DF98412944A5D006770C2 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {316, 203}} + {{316, 0}, {378, 203}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 203}} + {{0, 203}, {694, 178}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 381}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 148 + + Frame + {{316, 0}, {378, 203}} + RubberWindowFrame + 229 227 694 422 0 0 1280 778 + + RubberWindowFrame + 229 227 694 422 0 0 1280 778 + + Module + PBXDebugSessionModule + Proportion + 381pt + + + Proportion + 381pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 38E3503712D2236900587B71 + 1C162984064C10D400B95A72 + 38E3503812D2236900587B71 + 38E3503912D2236900587B71 + 38E3503A12D2236900587B71 + 38E3503B12D2236900587B71 + 38E3503C12D2236900587B71 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 229 227 694 422 0 0 1280 778 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {650, 209}} + RubberWindowFrame + 327 449 650 250 0 0 1280 778 + + Module + PBXDebugCLIModule + Proportion + 209pt + + + Proportion + 209pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 1C78EAAD065D492600B07095 + 38A3295612BFB3C0009A3052 + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 327 449 650 250 0 0 1280 778 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.breakpoints + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 116 342 744 409 0 0 1280 778 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 116 342 744 409 0 0 1280 778 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + + TableOfContents + + 38A329FF12C27FE2009A3052 + 38A32A0012C27FE2009A3052 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 116 342 744 409 0 0 1280 778 + WindowToolGUID + 38A329FF12C27FE2009A3052 + WindowToolIsVisible + + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + ADDED Site/Site/Site.xcodeproj/jim.pbxuser Index: Site/Site/Site.xcodeproj/jim.pbxuser ================================================================== --- Site/Site/Site.xcodeproj/jim.pbxuser +++ Site/Site/Site.xcodeproj/jim.pbxuser @@ -0,0 +1,206 @@ +// !$*UTF8*$! +{ + 38ECFB6512B50DC6008E1314 /* myAppUtils.j */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {607, 1806}}"; + sepNavSelRange = "{2427, 11}"; + sepNavVisRange = "{0, 780}"; + sepNavWindowFrame = "{{169, 50}, {654, 715}}"; + }; + }; + 64200A3C0FD424DD005D41CE /* Project object */ = { + activeBuildConfigurationName = Release; + activeExecutable = 64200DD80FD4268D005D41CE /* Site */; + activeTarget = 64200DBC0FD42578005D41CE /* Site */; + addToTargets = ( + 64200DBC0FD42578005D41CE /* Site */, + ); + codeSenseManager = 64200A410FD424DD005D41CE /* Code sense */; + executables = ( + 64200DD80FD4268D005D41CE /* Site */, + ); + ignoreBreakpointsInProjectsDict = { + }; + perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 198, + 20, + 99, + 99, + 29, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; + PBXFileTableDataSourceColumnWidthsKey = ( + 22, + 300, + 229, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXExecutablesDataSource_ActiveFlagID, + PBXExecutablesDataSource_NameID, + PBXExecutablesDataSource_CommentsID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 216, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 176, + 60, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 319201659; + PBXWorkspaceStateSaveDate = 319201659; + }; + sourceControlManager = 64200A400FD424DD005D41CE /* Source Control */; + userBuildSettings = { + }; + }; + 64200A400FD424DD005D41CE /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; + }; + }; + 64200A410FD424DD005D41CE /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 64200A4A0FD4250F005D41CE /* main.j */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {972, 587}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 313}"; + sepNavWindowFrame = "{{15, 63}, {1019, 715}}"; + }; + }; + 64200A4C0FD4250F005D41CE /* index.html */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1230, 952}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 418}"; + }; + }; + 64200A4D0FD4250F005D41CE /* AppController.j */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {678, 5474}}"; + sepNavSelRange = "{6478, 0}"; + sepNavVisRange = "{6113, 956}"; + sepNavWindowFrame = "{{169, 50}, {654, 715}}"; + }; + }; + 64200DBC0FD42578005D41CE /* Site */ = { + activeExec = 0; + }; + 64200DD80FD4268D005D41CE /* Site */ = { + isa = PBXExecutable; + activeArgIndices = ( + YES, + ); + argumentStrings = ( + "-a \"$(BROWSER_APP_NAME)\" \"$(PROJECT_DIR)\"/\"$(INDEX_FILE)\"", + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 0; + configStateDict = { + "PBXLSLaunchAction-0" = { + PBXLSLaunchAction = 0; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXLSRunLaunchConfig; + commandLineArgs = ( + ); + displayName = "Executable Runner"; + environment = { + }; + identifier = com.apple.Xcode.launch.runConfig; + remoteHostInfo = ""; + startActionInfo = ""; + }; + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + launchableReference = 64200DD90FD4268D005D41CE /* open */; + libgmallocEnabled = 0; + name = Site; + savedGlobals = { + }; + sourceDirectories = ( + ); + startupPath = "<>"; + }; + 64200DD90FD4268D005D41CE /* open */ = { + isa = PBXFileReference; + lastKnownFileType = "compiled.mach-o.executable"; + name = open; + path = /usr/bin/open; + sourceTree = ""; + }; +} ADDED Site/Site/Site.xcodeproj/project.pbxproj Index: Site/Site/Site.xcodeproj/project.pbxproj ================================================================== --- Site/Site/Site.xcodeproj/project.pbxproj +++ Site/Site/Site.xcodeproj/project.pbxproj @@ -0,0 +1,190 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXAggregateTarget section */ + 64200DBC0FD42578005D41CE /* Site */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 64200DCB0FD425B7005D41CE /* Build configuration list for PBXAggregateTarget "Site" */; + buildPhases = ( + 64200DE70FD428F4005D41CE /* Build Application */, + ); + dependencies = ( + ); + name = Site; + productName = Site; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXFileReference section */ + 38ECFB6512B50DC6008E1314 /* myAppUtils.j */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = myAppUtils.j; sourceTree = ""; }; + 641D44E00FD437FB00EACBFF /* Frameworks */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Frameworks; sourceTree = SOURCE_ROOT; }; + 64200A490FD4250F005D41CE /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = ""; }; + 64200A4A0FD4250F005D41CE /* main.j */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.j; sourceTree = ""; }; + 64200A4B0FD4250F005D41CE /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 64200A4C0FD4250F005D41CE /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + 64200A4D0FD4250F005D41CE /* AppController.j */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AppController.j; sourceTree = ""; }; + 64B168F30FD4E529001197CA /* index-debug.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "index-debug.html"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXGroup section */ + 64200A3A0FD424DD005D41CE = { + isa = PBXGroup; + children = ( + 64200DB90FD42540005D41CE /* Classes */, + 64200DBA0FD4254B005D41CE /* Others */, + 64200A470FD4250F005D41CE /* Resources */, + 641D44E00FD437FB00EACBFF /* Frameworks */, + ); + sourceTree = ""; + }; + 64200A470FD4250F005D41CE /* Resources */ = { + isa = PBXGroup; + children = ( + 64200A490FD4250F005D41CE /* MainMenu.xib */, + ); + path = Resources; + sourceTree = ""; + }; + 64200DB90FD42540005D41CE /* Classes */ = { + isa = PBXGroup; + children = ( + 64200A4D0FD4250F005D41CE /* AppController.j */, + 38ECFB6512B50DC6008E1314 /* myAppUtils.j */, + ); + name = Classes; + sourceTree = ""; + }; + 64200DBA0FD4254B005D41CE /* Others */ = { + isa = PBXGroup; + children = ( + 64200A4A0FD4250F005D41CE /* main.j */, + 64200A4B0FD4250F005D41CE /* Info.plist */, + 64200A4C0FD4250F005D41CE /* index.html */, + 64B168F30FD4E529001197CA /* index-debug.html */, + ); + name = Others; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXProject section */ + 64200A3C0FD424DD005D41CE /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 64200A3F0FD424DD005D41CE /* Build configuration list for PBXProject "Site" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 0; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 64200A3A0FD424DD005D41CE; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 64200DBC0FD42578005D41CE /* Site */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 64200DE70FD428F4005D41CE /* Build Application */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Build Application"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/bin/sh\n\n##################\n### CAPPUCCINO ###\n##################\n\n#validate cappuccino Frameworks path\nif test -d \"$CAPP_FRAMEWORKS_PATH\";\nthen\n\tcappFrameworksPath=$CAPP_FRAMEWORKS_PATH;\nelse\n\t#search for cappuccino frameworks with spotlight\n\tcappFrameworksPaths=$(mdfind \"kMDItemContentType == 'public.folder' && kMDItemDisplayName == 'Frameworks'\");\n\tcappFrameworksPath=\"/usr/local/narwhal/packages/cappuccino/Frameworks\";\n\tfor aCappFrameworksPath in $cappFrameworksPaths; do\n\t\tif test $aCappFrameworksPath -nt $cappFrameworksPath;\n\t\tthen\n\t\t\tif test ! -z \"$(echo $aCappFrameworksPath | awk '/cappuccino\\/Frameworks/')\";\n\t\t\tthen \n\t\t\t\tcappFrameworksPath=$aCappFrameworksPath;\n\t\t\telse\n\t\t\t\tif test ! -z \"$(echo $aCappFrameworksPath | awk '/objj\\/lib\\/Frameworks/')\";\n\t\t\t\tthen \n\t\t\t\t\tcappFrameworksPath=$aCappFrameworksPath;\n\t\t\t\tfi\n\t\t\tfi\n\t\tfi\n\tdone;\nfi\n\n#copy cappuccino frameworks\nif test -d $cappFrameworksPath;\nthen\n\trm -rf ./Frameworks;\n\tmkdir ./Frameworks;\n\n\tif test $LINK_FRAMEWORKS = \"YES\";\n\tthen\n\t\tif test $DEBUG = \"NO\"\n\t\tthen\n\t\t\tln -sf $cappFrameworksPath/* Frameworks;\n\t\t\trm -rf Frameworks/Debug;\n\t\telse\n\t\t\tln -sf $cappFrameworksPath/Debug/* Frameworks;\n\t\tfi\n\telse\n\t\tif test $DEBUG = \"NO\"\n\t\tthen\n\t\t\tcp -rf $cappFrameworksPath/* Frameworks;\n\t\t\trm -rf Frameworks/Debug;\n\t\telse\n\t\t\tcp -rf $cappFrameworksPath/Debug/* Frameworks;\n\t\tfi\n\tfi\t\n\techo \"Copy Cappuccino Frameworks from location '$cappFrameworksPath'\";\nfi\n\n#validate cappuccino bin path\nif test -d \"$CAPP_BIN_PATH\";\nthen\n\tcappBinPath=\"$CAPP_BIN_PATH\";\nelse\n\t#search for objj bin with spotlight\n\tcappBinPaths=$(mdfind \"kMDItemContentType == 'public.unix-executable' && kMDItemDisplayName == 'nib2cib'\");\n\tcappBinPath=\"/usr/local/narwhal/packages/cappuccino/bin\";\n\tfor aCappBinPath in $cappBinPaths; do\n\t\tif test $aCappBinPath -nt $cappBinPath;\n\t\tthen\n\t\t\tif test ! -z \"$(echo $aCappBinPath | awk '/cappuccino\\/bin/')\";\n\t\t\t\tthen \n\t\t\t\tcappBinPath=$aCappBinPath;\n\t\t\tfi\n\t\tfi\n\tdone;\n\tcappBinPath=$(echo $cappBinPath | sed -e 's/\\/nib2cib$//');\nfi\n\necho \"Cappuccino binary path is '$cappBinPath'\";\n\n#add cappuccino bin to profile\nPATH=${PATH}:$cappBinPath;\n\n\n##################\n### OBJECTIVE-J###\n##################\n\n# validate objj runtime path\nif test -d \"$OBJJ_RUNTIME_PATH\";\nthen\n\tobjjRuntimePath=\"$OBJJ_RUNTIME_PATH\";\nelse\n\tobjjRuntimePath=\"/usr/local/narwhal/packages/objective-j/Frameworks\";\n\t#search for cappuccino frameworks with spotlight\n\tobjjRuntimePaths=$(mdfind \"kMDItemContentType == 'public.folder' && kMDItemDisplayName == 'Frameworks'\");\n\tobjjRuntimePath=\"/usr/narwhal/packages/objective-j/Frameworks\";\n\tfor aObjjRuntimePath in $objjRuntimePaths; do\n\t\tif test $aObjjRuntimePath -nt $objjRuntimePath;\n\t\tthen\n\t\t\tif test ! -z \"$(echo $aObjjRuntimePath | awk '/objective-j\\/Frameworks/')\";\n\t\t\t\tthen \n\t\t\t\tobjjRuntimePath=$aObjjRuntimePath;\n\t\t\tfi\n\t\tfi\n\tdone;\nfi\n\n# copy the objective-j runtime\nif test -d $objjRuntimePath;\nthen\n\techo \"Copy Objective-J Frameworks from location '$objjRuntimePath'\";\n\tif test $LINK_FRAMEWORKS = \"YES\";\n\tthen\n\t\tif test $DEBUG = \"NO\"\n\t\tthen\n\t\t\tln -sf $objjRuntimePath/* Frameworks;\n\t\t\trm -rf Frameworks/Debug;\n\t\telse\n\t\t\tln -sf $objjRuntimePath/Debug/* Frameworks;\n\t\tfi\n\telse\n\t\tif test $DEBUG = \"NO\"\n\t\tthen\n\t\t\tcp -rf $objjRuntimePath/* Frameworks;\n\t\t\trm -rf Frameworks/Debug;\n\t\telse\n\t\t\tcp -rf $objjRuntimePath/Debug/* Frameworks;\n\t\tfi\n\tfi\nfi\n\n# validate objj bin path\nif test -d \"$OBJJ_BIN_PATH\";\nthen\n\tobjjBinPath=\"$OBJJ_BIN_PATH\";\nelse\n\t#search for objj bin with spotlight\n\tobjjBinPaths=$(mdfind \"kMDItemContentType == 'public.unix-executable' && kMDItemDisplayName == 'objj'\");\n\tobjjBinPath=\"/usr/local/narwhal/packages/objective-j/bin\";\n\tfor aObjjBinPath in $objjBinPaths; do\n\t\tif test $aObjjBinPath -nt $objjBinPath;\n\t\tthen\n\t\t\tif test ! -z \"$(echo $aObjjBinPath | awk '/objective-j\\/bin/')\";\n\t\t\t\tthen \n\t\t\t\tobjjBinPath=$aObjjBinPath;\n\t\t\tfi\n\t\tfi\n\tdone;\n\tobjjBinPath=$(echo $objjBinPath | sed -e 's/\\/objj$//');\nfi\n\necho \"Objective-J binary path is '$objjBinPath'\";\n\n#add objj bin to profile\nPATH=${PATH}:$objjBinPath;\n\n\n###############\n### NARWHAL ###\n###############\n\n#search for narwhal bin with spotlight\nnarwhalBinPaths=$(mdfind \"kMDItemContentType == 'public.unix-executable' && kMDItemDisplayName == 'narwhal'\");\nnarwhalBinPath=\"narwhalBin\";\nfor aNarwhalBin in $narwhalBinPaths; do\n\tif test $aNarwhalBin -nt $narwhalBinPath;\n\tthen\n\t\tif test ! -z \"$(echo $aNarwhalBin | awk '/narwhal\\/bin/')\";\n\t\t\tthen \n\t\t\tnarwhalBin=$aNarwhalBin;\n\t\tfi\n\tfi\ndone;\nnarwhalBin=$(echo $narwhalBin | sed -e 's/\\/narwhal$//');\nPATH=${PATH}:$narwhalBin;\necho \"NARWHAL binary path is '$narwhalBin'\";\n\n\n### Handle custom frameworks ###\n#copy custom frameworks or files to Frameworks\nif test -n \"$CUSTOM_FRAMEWORKS\";\nthen\n\tif test $LINK_FRAMEWORKS = \"YES\";\n\tthen\n\t\tln -sf $CUSTOM_FRAMEWORKS ./Frameworks/;\n\telse\n\t\tcp -rf $CUSTOM_FRAMEWORKS ./Frameworks/;\n\tfi\nfi\n\n\n###############\n### NIB2CIB ###\n###############\n\necho \"Check Interface Builder Files ....\";\n\n# for xib files\nxibFiles=$(find . -type f -name \"*.xib\");\nfor xibFile in $xibFiles; do\n cibFile=$(echo $xibFile | sed -e 's/\\.xib$/.cib/');\n test $xibFile -nt $cibFile && nib2cib $xibFile || echo \"- Interface Builder File '$cibFile' is up-to-date\";\ndone;\n\n# for nib files\nnibFiles=$(find . -type d -name \"*.nib\");\nfor nibFile in $nibFiles; do\n \tcibFile=$(echo $nibFile | sed -e 's/\\.nib$/.cib/');\n\ttest $nibFile -nt $cibFile && nib2cib $nibFile || echo \"- Interface Builder File \\'$cibFile\\' is up-to-date\";\ndone;\n\n\n#################\n### CORE DATA ###\n#################\n\nmomcBinPaths=$(mdfind \"kMDItemContentType == 'public.unix-executable' && kMDItemDisplayName == 'momc'\");\nmomcBin=\"momc\";\nfor aMomcBin in $momcBinPaths; do\n\tif test $aMomcBin -nt $momcBin;\n\tthen\n\t\tmomcBin=$(echo $aMomcBin | sed -e 's/\\momc$//');\n\tfi\ndone;\necho 'MOMC file location is '$momcBin'';\nPATH=${PATH}:momcBin;\n\nxcdmodels=$(find . -type d -name \"*.xcdatamodel\");\nfor xcdmodel in $xcdmodels; do\n\txccpdfile=$(echo $xcdmodel | sed -e 's/\\.xcdatamodel$/.cxcdatamodel/');\n\tmomc $xcdmodel $xccpdfile\n\tplutil -convert xml1 $xccpdfile\n\techo \"- Core Data Model '$xcdmodel' converted\";\ndone;"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 64200A3E0FD424DD005D41CE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BROWSER_APP_NAME = Safari.app; + CAPP_BIN_PATH = /usr/local/narwhal/packages/cappuccino/bin; + CAPP_FRAMEWORKS_PATH = /usr/local/narwhal/packages/cappuccino/Frameworks; + CUSTOM_FRAMEWORKS = ""; + DEBUG = NO; + INDEX_FILE = index.html; + LINK_FRAMEWORKS = NO; + OBJJ_BIN_PATH = "/usr/local/narwhal/packages/objective-j/bin"; + OBJJ_RUNTIME_PATH = "/usr/local/narwhal/packages/objective-j/Frameworks"; + }; + name = Release; + }; + 64200DBE0FD42578005D41CE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PRODUCT_NAME = Untitled; + ZERO_LINK = NO; + }; + name = Release; + }; + 64A306A10FD4E183000D6AD7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BROWSER_APP_NAME = Safari.app; + CAPP_BIN_PATH = /usr/local/narwhal/packages/cappuccino/bin; + CAPP_FRAMEWORKS_PATH = /usr/local/narwhal/packages/cappuccino/Frameworks; + CUSTOM_FRAMEWORKS = ""; + DEBUG = YES; + INDEX_FILE = "index-debug.html"; + LINK_FRAMEWORKS = YES; + OBJJ_BIN_PATH = "/usr/local/narwhal/packages/objective-j/bin"; + OBJJ_RUNTIME_PATH = "/usr/local/narwhal/packages/objective-j/Frameworks"; + }; + name = Debug; + }; + 64A306A20FD4E183000D6AD7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PRODUCT_NAME = Untitled; + ZERO_LINK = NO; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 64200A3F0FD424DD005D41CE /* Build configuration list for PBXProject "Site" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 64A306A10FD4E183000D6AD7 /* Debug */, + 64200A3E0FD424DD005D41CE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 64200DCB0FD425B7005D41CE /* Build configuration list for PBXAggregateTarget "Site" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 64A306A20FD4E183000D6AD7 /* Debug */, + 64200DBE0FD42578005D41CE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 64200A3C0FD424DD005D41CE /* Project object */; +} ADDED Site/Site/index-debug.html Index: Site/Site/index-debug.html ================================================================== --- Site/Site/index-debug.html +++ Site/Site/index-debug.html @@ -0,0 +1,69 @@ + + + + + + + + Untitled + + + + + + + + + + + + + + + + ADDED Site/Site/index.html Index: Site/Site/index.html ================================================================== --- Site/Site/index.html +++ Site/Site/index.html @@ -0,0 +1,68 @@ + + + + + + + + Site + + + + + + + + + + + + +
+ + + +
+ + + ADDED Site/Site/main.j Index: Site/Site/main.j ================================================================== --- Site/Site/main.j +++ Site/Site/main.j @@ -0,0 +1,20 @@ +/* + * main.j + * Site + * + * Created by Jim on 17/11/2010. + * Copyright __MyCompanyName__ 2010. All rights reserved. +*/ + +@import +@import + +@import "AppController.j" + + +CPLogRegister(CPLogPopup); + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} ADDED Site/Site/myAppUtils.j Index: Site/Site/myAppUtils.j ================================================================== --- Site/Site/myAppUtils.j +++ Site/Site/myAppUtils.j @@ -0,0 +1,128 @@ +/* + * myAppUtils.j + * + * Utility functions for application + * + * Created by Jim on 12/12/2010 + * Copyright Pandora Products 2010. All rights reserved. + * + * 12-Dec-2010 Initial version +*/ + +@import + +@implementation myAppUtils : CPObject +{ + id parse_data; + CPString response_data; +} + +//----------------------------------------------------------------------- +/* + (id)init - Create object + + INPUT: NONE + + OUTPUT: created object +*/ +//----------------------------------------------------------------------- + +-(id)init +{ + self = [super init]; + + return self; +} + +//----------------------------------------------------------------------- +/* + Objective J + var getData(var url, var post ) - Get data from server via AJAX + + INPUT: url - URL location to get data + post - Boolean if true do POST, false do GET + data - Data for post (if any) + + OUTPUT: TRUE if read OK + Results available via + getParse - Parsed data + getResponse - Text response +*/ +//----------------------------------------------------------------------- + +-(Boolean)getData:(var)path PostState:(Boolean)post DataString:(var)data +{ + var client = new XMLHttpRequest(); + var representationOfDesiredState; + var parse; + var str; + var rtnval = false; + + // (1) GET/POST ? If Post get extra data + if( post ) + { + client.open("POST",path,false); + representationOfDesiredState = data; + } + else + { + client.open("GET", path, false); + representationOfDesiredState = ""; + } + + // (2) Set up request + client.setRequestHeader("Content-Type", "text/plain"); + client.send(representationOfDesiredState); + + // (3) Show result + if (client.status == 200) + { + str = [[CPString alloc] initWithString:client.responseText]; + parse = [str objectFromJSON ]; + + response_data = str; + parse_data = parse; + rtnval = true; + } + else + { + parse_data = nil; + response_data = nil; + rtnval = false; + } + + return rtnval; +} + +//----------------------------------------------------------------------- +/* + (id)getParse - Return JSON parsed response + + INTPUT: NONE + + OUTPUT: Parsed JSON object +*/ +//----------------------------------------------------------------------- + +-(id)getParse +{ + return parse_data; +} + +//----------------------------------------------------------------------- +/* + (CPString)getResponse - Get response text + + INPUT: NONE + + OUTPUT: Text of response +*/ +//----------------------------------------------------------------------- + +-(CPString)getResponse +{ + return response_data; +} + + +@end ADDED Site/Site_J/Buttons/abort.graffle Index: Site/Site_J/Buttons/abort.graffle ================================================================== --- Site/Site_J/Buttons/abort.graffle +++ Site/Site_J/Buttons/abort.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/abort.png Index: Site/Site_J/Buttons/abort.png ================================================================== --- Site/Site_J/Buttons/abort.png +++ Site/Site_J/Buttons/abort.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/arm.graffle Index: Site/Site_J/Buttons/arm.graffle ================================================================== --- Site/Site_J/Buttons/arm.graffle +++ Site/Site_J/Buttons/arm.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/arm.png Index: Site/Site_J/Buttons/arm.png ================================================================== --- Site/Site_J/Buttons/arm.png +++ Site/Site_J/Buttons/arm.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/black.graffle Index: Site/Site_J/Buttons/black.graffle ================================================================== --- Site/Site_J/Buttons/black.graffle +++ Site/Site_J/Buttons/black.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/black32.png Index: Site/Site_J/Buttons/black32.png ================================================================== --- Site/Site_J/Buttons/black32.png +++ Site/Site_J/Buttons/black32.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/disarm.graffle Index: Site/Site_J/Buttons/disarm.graffle ================================================================== --- Site/Site_J/Buttons/disarm.graffle +++ Site/Site_J/Buttons/disarm.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/disarm.png Index: Site/Site_J/Buttons/disarm.png ================================================================== --- Site/Site_J/Buttons/disarm.png +++ Site/Site_J/Buttons/disarm.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/fire.graffle Index: Site/Site_J/Buttons/fire.graffle ================================================================== --- Site/Site_J/Buttons/fire.graffle +++ Site/Site_J/Buttons/fire.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/fire.png Index: Site/Site_J/Buttons/fire.png ================================================================== --- Site/Site_J/Buttons/fire.png +++ Site/Site_J/Buttons/fire.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/grey.graffle Index: Site/Site_J/Buttons/grey.graffle ================================================================== --- Site/Site_J/Buttons/grey.graffle +++ Site/Site_J/Buttons/grey.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/grey.png Index: Site/Site_J/Buttons/grey.png ================================================================== --- Site/Site_J/Buttons/grey.png +++ Site/Site_J/Buttons/grey.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/grey32.png Index: Site/Site_J/Buttons/grey32.png ================================================================== --- Site/Site_J/Buttons/grey32.png +++ Site/Site_J/Buttons/grey32.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/no_disarm.graffle Index: Site/Site_J/Buttons/no_disarm.graffle ================================================================== --- Site/Site_J/Buttons/no_disarm.graffle +++ Site/Site_J/Buttons/no_disarm.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/no_disarm.png Index: Site/Site_J/Buttons/no_disarm.png ================================================================== --- Site/Site_J/Buttons/no_disarm.png +++ Site/Site_J/Buttons/no_disarm.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/no_run.graffle Index: Site/Site_J/Buttons/no_run.graffle ================================================================== --- Site/Site_J/Buttons/no_run.graffle +++ Site/Site_J/Buttons/no_run.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/no_run.png Index: Site/Site_J/Buttons/no_run.png ================================================================== --- Site/Site_J/Buttons/no_run.png +++ Site/Site_J/Buttons/no_run.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/no_status.graffle Index: Site/Site_J/Buttons/no_status.graffle ================================================================== --- Site/Site_J/Buttons/no_status.graffle +++ Site/Site_J/Buttons/no_status.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/no_status.png Index: Site/Site_J/Buttons/no_status.png ================================================================== --- Site/Site_J/Buttons/no_status.png +++ Site/Site_J/Buttons/no_status.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/orange.graffle Index: Site/Site_J/Buttons/orange.graffle ================================================================== --- Site/Site_J/Buttons/orange.graffle +++ Site/Site_J/Buttons/orange.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/orange.png Index: Site/Site_J/Buttons/orange.png ================================================================== --- Site/Site_J/Buttons/orange.png +++ Site/Site_J/Buttons/orange.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/orange32.png Index: Site/Site_J/Buttons/orange32.png ================================================================== --- Site/Site_J/Buttons/orange32.png +++ Site/Site_J/Buttons/orange32.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/red.graffle Index: Site/Site_J/Buttons/red.graffle ================================================================== --- Site/Site_J/Buttons/red.graffle +++ Site/Site_J/Buttons/red.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/red.png Index: Site/Site_J/Buttons/red.png ================================================================== --- Site/Site_J/Buttons/red.png +++ Site/Site_J/Buttons/red.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/red32.png Index: Site/Site_J/Buttons/red32.png ================================================================== --- Site/Site_J/Buttons/red32.png +++ Site/Site_J/Buttons/red32.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/rest_cmds.png Index: Site/Site_J/Buttons/rest_cmds.png ================================================================== --- Site/Site_J/Buttons/rest_cmds.png +++ Site/Site_J/Buttons/rest_cmds.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/run.graffle Index: Site/Site_J/Buttons/run.graffle ================================================================== --- Site/Site_J/Buttons/run.graffle +++ Site/Site_J/Buttons/run.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/run.png Index: Site/Site_J/Buttons/run.png ================================================================== --- Site/Site_J/Buttons/run.png +++ Site/Site_J/Buttons/run.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/status.graffle Index: Site/Site_J/Buttons/status.graffle ================================================================== --- Site/Site_J/Buttons/status.graffle +++ Site/Site_J/Buttons/status.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/status.png Index: Site/Site_J/Buttons/status.png ================================================================== --- Site/Site_J/Buttons/status.png +++ Site/Site_J/Buttons/status.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/yellow.graffle Index: Site/Site_J/Buttons/yellow.graffle ================================================================== --- Site/Site_J/Buttons/yellow.graffle +++ Site/Site_J/Buttons/yellow.graffle cannot compute difference between binary files ADDED Site/Site_J/Buttons/yellow.png Index: Site/Site_J/Buttons/yellow.png ================================================================== --- Site/Site_J/Buttons/yellow.png +++ Site/Site_J/Buttons/yellow.png cannot compute difference between binary files ADDED Site/Site_J/Buttons/yellow32.png Index: Site/Site_J/Buttons/yellow32.png ================================================================== --- Site/Site_J/Buttons/yellow32.png +++ Site/Site_J/Buttons/yellow32.png cannot compute difference between binary files ADDED Site/Site_J/auto.js Index: Site/Site_J/auto.js ================================================================== --- Site/Site_J/auto.js +++ Site/Site_J/auto.js @@ -0,0 +1,300 @@ +// ************************************************* +// +// AUTOMATIC RUN - Selection part +// +// 18-Nov-2011 [7f829d5df2] Initial Version +// 9-Feb-2013 Handle programming failures +// +// ************************************************* + +//var FNET_Status; +var FNET_NET_MAX = 30; // Maximum net size +var FNET_NET_MIN = 1; +var FNET_NET_CH = 6; +//var AUTO_RUN = false; // Initial arm state +//var FNET_Ready = new Array(); +//var FNET_ReadyCount = 0; + +// Select GLOBALS + +var SHOW_LIST = new Array(); +var SELECT_ROW = null; +var SHOW_SELECT = 0; +var SHOW_TIME = 0; + + + +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +//----------------------------------------------------------------------- +/* + AUTO PAGE Major function + + DIV = AUTO_RUN_BLOCK + + Set up for show selection +*/ +//----------------------------------------------------------------------- + +function AUTO_Operation() +{ + var path; + var result; + var outmsg; + + // Clear the area... + $("#AUTO_RUN_BLOCK").replaceWith("

...Loading...
"); + + // Send out a list command and use it to get the shows structure + + path = lcnURI + "firenet/program/list"; + result = FNET_getData(path,true,"",true ); + + // Build the show table from the result + // And await user selection + + AUTO_ShowList(result) +} + +//----------------------------------------------------------------------- +/* + Setup Handling +*/ +//----------------------------------------------------------------------- + +function AUTO_ShowList( shows ) +{ + var hdr; + var body; + var output; + + // Set up SHOW_LIST & clear previous + + SHOW_LIST = shows.shows; + SHOW_SELECT = 0; + SHOW_TiME = 0; + + // Set up the header for this table + + hdr = AUTO_BuildShowHeader(); + body = AUTO_BuildShowBody(SHOW_LIST); + + // Add the table and a select button + + output = "

"; + output = output + "

SHOW LIST

"; + output = output + ""; + output = output + hdr + body; + output = output + "
"; + output = output + "

"; + + $("#AUTO_RUN_BLOCK").replaceWith( output ); + + // Set up event handlers + + $('#AUTO_SEL').click(AUTO_SEL_Handler); +} + +//----------------------------------------------------------------------- +/* + EVENT HANDLERS (for show slection) +*/ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +/* + --ROW SELECTION -- + + AUTO_TBL_Handler(tblid) - Handle press in table + + INPUT: ID of button N##C# + + OUTPUT: NONE + +*/ +//----------------------------------------------------------------------- + +function AUTO_TBL_Handler(row) +{ + // Clear previous one + + if( SELECT_ROW != null ) + { + $(SELECT_ROW).removeAttr("style"); + } + + // Select new row + + $(row).attr("style","background-color: #FF0000;"); + SELECT_ROW = row; +} + +//----------------------------------------------------------------------- +/* + -- BUTTON EVENT Select button -- + + AUTO_TBL_Handler(tblid) - Handle press in table + + INPUT: ID of button N##C# + + OUTPUT: NONE + +*/ +//----------------------------------------------------------------------- + +function AUTO_SEL_Handler(tblid) +{ + var parts; + var path; + var result; + + // Is there a row selected, if not just bail + + if( SELECT_ROW != null ) + { + // Pull out the ROW ID into the selected show + + parts = parseInt( SELECT_ROW.id ) - 1; // Zero based array... + SELECT_SHOW = SHOW_LIST[parts]; + + // Calculate the show time + + parts = SELECT_SHOW.time.split(":"); + switch( parts.length ) + { + case 0: SHOW_TIME = 0; + break; + + case 1: SHOW_TIME = parseInt(parts[0]); + break; + + case 2: SHOW_TIME = 60 * parseInt(parts[0]); + SHOW_TIME = SHOW_TIME + parseInt(parts[1]); + break; + + case 3: SHOW_TIME = 3600 * parseInt(parts[0]); + SHOW_TIME = SHOW_TIME + 60 * parseInt(parts[1]); + SHOW_TIME = SHOW_TIME + parseInt(parts[2]); + break; + + default: SHOW_TIME = 0; // Something wrong... + break; + } + + // Next select the show + + path = lcnURI + "firenet/program/set/" + SELECT_ROW.id; + result = FNET_getData(path,true,"",true); + if( result.STATUS == "OK" ) + { + // Now program the nodes but first reset ALL of them + + $("#AUTO_RUN_BLOCK").replaceWith("

...Programming nodes...

"); + path = lcnURI + "firenet/program/pgm"; + result = FNET_getData(path,true,"",true); + if( result.STATUS == "OK" ) + { + $("#AUTO_RUN_BLOCK").replaceWith("

...READY...
"); + AUTO_RunOperation(); + } + else + { + // Failed to program so go back to start + outmsg = "

PGM FAILED...

"; + outmsg = outmsg + "

" + result.STATUS + "

"; + $("#AUTO_RUN_BLOCK").replaceWith(outmsg); + SHOW_SELECT = 0; + SHOW_TIME = 0; + SELECT_ROW = null; + // Reset all nodes before returning + path = lcnURI + "firenet/program/abort"; + result = FNET_getData(path,true,"",true); + + setTimeout(AUTO_Operation,5000) + } + } + else + { + // Failed to load program so go back to start + outmsg = "

PGM LOAD FAILED...

"; + outmsg = outmsg + "

" + result.STATUS + "

"; + $("#AUTO_RUN_BLOCK").replaceWith(outmsg); + SHOW_SELECT = 0; + SHOW_TIME = 0; + SELECT_ROW = null; + + // Reset all nodes before returning + path = lcnURI + "firenet/program/abort"; + result = FNET_getData(path,true,"",true); + + setTimeout(AUTO_Operation,5000) + } + + } + +} + +//----------------------------------------------------------------------- +/* + AUTO_BuildShowHeader() + + INPUT: NONE + + OUTPUT: Return table header structure +*/ +//----------------------------------------------------------------------- + +function AUTO_BuildShowHeader() +{ + var tablehdr; + var i; + + tablehdr = ""; + tablehdr = tablehdr + "#"; + tablehdr = tablehdr + "Show"; + tablehdr = tablehdr + "Time"; + tablehdr = tablehdr + "Nodes"; + tablehdr = tablehdr + ""; + + return tablehdr; +} +//----------------------------------------------------------------------- +/* + AUTO_BuildShowBody(inventory) + + INPUT: NONE + + OUTPUT: Return table body structure +*/ +//----------------------------------------------------------------------- + +function AUTO_BuildShowBody( shows ) +{ + var output = ""; + var i,j; + var row; + + // Build each row + + for( i=0; i<100; i++ ) + { + if( shows[i] != null ) + { + j = i + 1; + row = ""; + + row = row + "" + j + ""; + row = row + "" + shows[i].show + ""; + row = row + "" + shows[i].time + ""; + row = row + "" + shows[i].nodes + "" + row = row + ""; + + output = output + row; + } + else + break; + } + + return output; +} ADDED Site/Site_J/autorest.js Index: Site/Site_J/autorest.js ================================================================== --- Site/Site_J/autorest.js +++ Site/Site_J/autorest.js @@ -0,0 +1,14 @@ +// Get the status + // Clear the map [2fbacd1fdc] + path = lcnURI + "firenet/status/C"; + result = FNET_getData(path,false,"" ,true); + + // Display the status + result = AUTO_BuildTblFullStatus( result ); + outmsg = "
" + result + AUTO_AddButtons(); + outmsg = outmsg + "
"; + $("#AUTO_RUN_BLOCK").replaceWith(outmsg); + + // Set up event handler + + $('input').click(AUTOEVENT_Handler); ADDED Site/Site_J/autorun.js Index: Site/Site_J/autorun.js ================================================================== --- Site/Site_J/autorun.js +++ Site/Site_J/autorun.js @@ -0,0 +1,741 @@ +// ************************************************* +// +// AUTOMATIC RUN - Operation part +// +// 18-Nov-2011 [7f829d5df2] Initial Version +// +// ************************************************* + +// RUN Variables + +var AUTO_RUN = false; +var AUTO_ARM = false; +var AUTO_RUN_TIME = 0; +var AUTO_RUN_START = 0; + +//----------------------------------------------------------------------- +/* + AUTO_RunOperation() - Read network status and bring up major buttons +*/ +//----------------------------------------------------------------------- + +function AUTO_RunOperation() +{ +var path; + var result; + var outmsg; + + // Clear the area... + if( AUTO_RUN != true ) + $("#AUTO_RUN_BLOCK").replaceWith("

...Loading...
"); + + // Get the status + // Clear the map + path = lcnURI + "firenet/status/C"; + result = FNET_getData(path,false,"" ,true); + + // Build the RUN display + result = AUTO_BuildTblFullStatus( result ); + + outmsg = AUTO_NewRunBlock( result ); + + // Replace block + + $("#AUTO_RUN_BLOCK").replaceWith(outmsg); + + // Set up event handler + + $('input').click(AUTOEVENT_Handler); +} + +//----------------------------------------------------------------------- +/* + EVENT HANDLER (for ALL input fields) +*/ +//----------------------------------------------------------------------- + +function AUTOEVENT_Handler() +{ + // Extract the ID + // MANARM and MANFIRE are handled by special routines + + switch( this.id ) + { + case "AUTOARM": AUTOARM_Handler(); + break; + + case "AUTORUN": AUTORUN_Handler(); + break; + + case "AUTOABORT": AUTOABORT_Handler(); + break; + + case "AUTOSTATUS": AUTOSTATUS_Handler(); + break; + + default: break; + } +} + +//----------------------------------------------------------------------- +/* + EVENT ARM Button - Send out message to ARM or DISARM all nodes +*/ +//----------------------------------------------------------------------- + +function AUTOARM_Handler() +{ + + var path; + var result; + + if( AUTO_RUN == false ) + { + // Depending on FIRE status send an ARM or disarm command + + if( AUTO_ARM ) + { + // Send a DISARM command + + path = lcnURI + "firenet/arm/0/D"; + AUTO_ARM=false; + } + else + { + // Send an ARM command + + path = lcnURI + "firenet/arm/0/A"; + AUTO_ARM=true; + } + + // Output a message to show what we are doing + + outmsg = "

Processing...

"; + $("#AUTO_RUN_BLOCK").replaceWith(outmsg); + + // Send the command then update the status + // Allow network to settle before doing status + + result = FNET_getData(path,true,"" ); + + setTimeout(AUTO_RunOperation,1000); + } +} + +//----------------------------------------------------------------------- +/* + EVENT RUN Button - Do RUN or ABORT +*/ +//----------------------------------------------------------------------- + +function AUTORUN_Handler() +{ + + var path; + var result; + + if( AUTO_ARM == true ) + { + if( AUTO_RUN == false ) + { + + // Depending on FIRE status send an ARM or disarm command + // Send (1) ARM + // (2) SYNC + // (3) ZP + + AUTO_RUN = true; + + // Output a message to show what we are doing + + outmsg = "

Processing...

"; + $("#AUTO_RUN_BLOCK").replaceWith(outmsg); + + // Send the command then update the status + // Allow network to settle before doing status + FNET_SLEEP( 2000 ); + AUTO_RunOperation(); + + // Now start running + + path = lcnURI + "firenet/program/start"; + result = FNET_getData(path,true,"",true ); + if( result.STATUS == "OK" ) + { + AUTO_RUN_START = FNET_NOWMS(); + AUTO_RUN=true; // SUCCESS + AUTO_RUN_TIME = 0; + setTimeout(AUTO_RunMonitor,1000); + } + else + { + // FAILURE ---- + AUTO_RUN = false; + AUTO_RunOperation(); + } + } + else + { + var path; + var result; + + // Send an ABORT command + + path = lcnURI + "firenet/program/abort"; + result = FNET_getData(path,true,"" ); + + // Output a message to show what we are doing + + outmsg = "

DONE...

"; + $("#AUTO_RUN_BLOCK").replaceWith(outmsg); + + // Send the command then update the status + // Allow network to settle before doing status + + AUTO_RUN = false; + AUTO_ARM = false; + SHOW_SELECT = 0; + SHOW_TIME = 0; + SELECT_ROW = null; + AUTO_RUN_TIME = 0; + setTimeout(AUTO_Operation,500); + } + } +} + +//----------------------------------------------------------------------- +/* + RUN MONITOR + + This routine runs every 100 ms and does: + + (1) Updates time graph + (2) Does a status check and updated fired pieces on display +*/ +//----------------------------------------------------------------------- + +function AUTO_RunMonitor() +{ + var plotval; + var plotline; + var outmsg; + var elapsed; + var runtime; + var result; + + // (1) If not running the bail + + if( AUTO_RUN ) + { + // (2) Update time and graph + + elapsed = FNET_NOWMS() - AUTO_RUN_START; + elapsed = elapsed/1000.0; + + AUTO_RUN_TIME = elapsed; + + plotval = 100.0 * AUTO_RUN_TIME/SHOW_TIME + plotline = [[1,plotval]]; + + $.plot( $('#AUTO_PLOT_BLOCK'), [ + { label: "SHOW", data:plotline, bars:{show:true }} + ], + { yaxis:{max:100.0, min:0 }, + xaxis:{ max:2,min:1, ticks:[[1.5, "SHOW"]] }, + legend: {show: false} + } + ); + + // Send and receive STATUS message + + path = lcnURI + "firenet/program/status"; + result = FNET_getData(path,true,"",true ); + AUTO_StatusMsgHdlr( result ); + + if( AUTO_RUN_TIME >= SHOW_TIME ) + { + // End the show, update the screen and reset the boxes + AUTO_RUN = false; + outmsg = "

DONE...

"; + $("#AUTO_RUN_BLOCK").replaceWith(outmsg); + + path = lcnURI + "firenet/program/abort"; + result = FNET_getData(path,true,"" ); + + AUTO_RUN = false; + AUTO_ARM = false; + SHOW_SELECT = 0; + SHOW_TIME = 0; + SELECT_ROW = null; + AUTO_RUN_TIME = 0; + setTimeout(AUTO_Operation,500); + } + else + setTimeout(AUTO_RunMonitor,1000); + } +} + +//----------------------------------------------------------------------- +/* + EVENT STATUS Button - Update status display +*/ +//----------------------------------------------------------------------- + +function AUTOSTATUS_Handler() +{ + + if( AUTO_RUN == false ) + { + // Just update status and table + + AUTO_RunOperation(); + FNET_ReadyCount = 0; + } +} + + +//----------------------------------------------------------------------- +/* + -- STATUS HANDLER -- + + AUTO_StatusMsgHdlr(status) - Handle status message + + INPUT: status message of the form: + status.STATUS - Status value + status.FIRED - Array of fired nodes + + OUTPUT: NONE + + (a) Extract node and channel # + (b) Set channel(s) as fired + (c) Update table +*/ +//----------------------------------------------------------------------- + +function AUTO_StatusMsgHdlr(status) +{ + + var n; + var ch; + var i; + var node; + var cmd; + var result; + var fire_list; + + // (1) If no fired list then bail + + if( status.FIRED != null ) + { + fire_list = status.FIRED; + + // (2) Loop through list and marked fired + + for( i=0; i"; + result = result + ""; + result = result + AUTO_BuildHeader(); + result = result + AUTO_BuildFullBody(FNET_Status); + result = result + "
"; + result = result + ""; + + + return result; +} + +//----------------------------------------------------------------------- +/* + AUTO_UpdateTable() + + INPUT: FNET_Status - Updated + + OUTPUT: NONE + Table update with new status values +*/ +//----------------------------------------------------------------------- + +function AUTO_UpdateTable() +{ + var result; + + // Add on the table + + result = AUTO_BuildStatusTable(); + + // & update + + $("#AUTO_TABLE").replaceWith(result); +} + +//----------------------------------------------------------------------- +// -- DISPLAY FUNCTIONS -- +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +/* + AUTO_BuildTblFullStatus( fnetstatus ) + + INPUT: fnetstatus - Firenet whole net status structure + + OUTPUT: Table structure showing network status +*/ +//----------------------------------------------------------------------- + +function AUTO_BuildTblFullStatus( fnetstatus ) +{ + var rtnval = "** FAILED **"; + var i; + var indx; + + // (1) Check status and return FAIL if bad + + if( fnetstatus.STATUS == "SUCCESS" ) + { + FNET_Status = new Array(FNET_NET_MAX); + + for( i=FNET_NET_MIN; i<= FNET_NET_MAX; i++ ) + { + indx = i + ""; + FNET_Status[i] = fnetstatus[indx] + } + + rtnval = AUTO_BuildStatusTable(); + } + + return rtnval; +} + +//----------------------------------------------------------------------- +/* + AUTO_BuildHeader() + + INPUT: NONE + + OUTPUT: Return table header structure +*/ +//----------------------------------------------------------------------- + +function AUTO_BuildHeader() +{ + var tablehdr; + var i; + + tablehdr = ""; + tablehdr = tablehdr + "Node"; + tablehdr = tablehdr + "Arm"; + for( i=FNET_NET_MIN; i<=FNET_NET_CH; i++ ) + { + tablehdr = tablehdr + "Ch " + i + ""; + } + tablehdr = tablehdr + "---"; + tablehdr = tablehdr + "Node"; + tablehdr = tablehdr + "Arm"; + for( i=FNET_NET_MIN; i<=FNET_NET_CH; i++ ) + { + tablehdr = tablehdr + "Ch " + i + ""; + } + tablehdr = tablehdr + ""; + + return tablehdr; +} + +//----------------------------------------------------------------------- +/* + AUTO_BuildTblFullBody( fnetstatus ) + + INPUT: fnetstatus - Array with node present in the network defined + Array size = FNET_NET_MAX + + OUTPUT: Table structure showing network status +*/ +//----------------------------------------------------------------------- + +function AUTO_BuildFullBody( fnetstatus ) +{ + var i; + var pass = 0; + var result = ""; + var node; + var row = ""; + + // Build the table as two columns of nodes + + for( i=FNET_NET_MIN; i<=FNET_NET_MAX; i++ ) + { + // Get a node + + node = FNET_Status[i]; + if( node != null ) + { + // Build node element of the row + + row = AUTO_BuildNode( i,node ); + + if( pass == 0 ) + { + // First part of the row + result = result + " " + row; + pass = pass + 1; + } + else + { + // End of a row + pass = 0; // Start a new row + result = result + "---" + row; + result = result + "\r"; + } + } + } + + // If we come out here with pass == 1 then we have to + // end a row + + if( pass == 1 ) + { + result = result + "\r"; + } + + return result; +} + +//----------------------------------------------------------------------- +/* + AUTO_BuildNode( n,node ) + + INPUT: n - Node # + node - Data for a single node + node.ARMED - A/D + node + + OUTPUT: Turn node array into an row in an HTML array + with cell indexes in ARMED of N# + with cell indexs in CHANNELS of N#C# + + Rules: ARMED - D All Channels shown as GREY Buttons/grey32.png + + ARMED - A Fired channel BLACK Buttons/yblack2.png + Unfired not present - GREY Buttons/grey32.png + Unfired present - YELLOW Buttons/orange32.png + Return data is just the node data not the and not + the --- in the middle +*/ +//----------------------------------------------------------------------- + +function AUTO_BuildNode( n,node ) +{ + var result = ""; + var armed=false; + var i; + var part; + + // Do the NODE # + + result = "" + n + ""; + + // Now do the ARMED stuff + + result = result + ""; + + // Do the nodes + + for( i=1; i<= FNET_NET_CH; i++ ) + { + part = ""; + } + + return result; +} + +//----------------------------------------------------------------------- +/* + function AUTO_AddButtons() + + INPUT: NONE + + OUTPUT: Return ARM, RUN & ABORT +*/ +//----------------------------------------------------------------------- + +function AUTO_AddButtons() +{ + var rtnval; + + // Add STATUS, ARM, RUN-ABORT buttons on display + + rtnval = "
"; + //rtnval = ""; + rtnval = "
"; + + // Status button + + if( AUTO_RUN ) + rtnval = rtnval + ""; + else + rtnval = rtnval + ""; + + // ARM button + + if( AUTO_ARM ) + { + if( AUTO_RUN ) + rtnval = rtnval + ""; + else + rtnval = rtnval + ""; + } + else + rtnval = rtnval + ""; + + // RUN/ABORT button + + if( AUTO_ARM ) + { + if( AUTO_RUN ) + rtnval = rtnval + ""; + else + rtnval = rtnval + ""; + } + else + rtnval = rtnval + ""; + + rtnval = rtnval + "
"; + rtnval = rtnval + ""; + + return rtnval; +} + +//----------------------------------------------------------------------- +/* + AUTO_RemoveReady( n,ch ) - Remove channel from ready list + + INPUT: n - Node # + ch - Channel + + OUTPUT: If this value is in ready list, remove it +*/ +//----------------------------------------------------------------------- + +function AUTO_RemoveReady( n,ch ) +{ + var i; + + // Scan through the list and remove matching element + + for( i=0; i" + + // Add Table + + outmsg = outmsg + table; + + // Add Graph + + outmsg = outmsg + "
"; + + // Buttons + + outmsg = outmsg + AUTO_AddButtons(); + + // Close AUTO_RUN_BLOCK + + outmsg = outmsg + ""; + + return outmsg; +} + ADDED Site/Site_J/index.html Index: Site/Site_J/index.html ================================================================== --- Site/Site_J/index.html +++ Site/Site_J/index.html @@ -0,0 +1,129 @@ + + + + + FIRENET + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Operation

+ + +
+

+ The FIRENET system is a networked firing system. + It uses an RS-485 network between each node. Each node is capabible + of firing up to 6 pieces. The network is then connected to a computer controller which + is a web server using a RESTful control interface to the network. The user interface is + a web page (i.e. this one) and you control the firing from here. +

+

+ The nodes have built in monitering capability that can check if a piece is + wired correctly and when it is fired. In addition the nodes can be synchronized + so pieces can be fired simultaneously by multiple nodes. +

+

+

NOTE: You must login in before any use of the system

+

+
+ + +
+

- RUN -

+
+ + +
+

-- DEBUG --

+

Command

+
+
+
Post
+
+
+
+ +
+
+ + +
+
+

-- MANUAL --

+
+
+ + +
+

-- INVENTORY --

+
+

-- PROCESSING --

+
+
+ + +
+

- LOGIN -

+

Enter a Response for the Challenge

+
Challenge
+
+

+

Response
+
+

+

+
+ + +
+
+

-- AUTO --

+
+
+
+ + ADDED Site/Site_J/indexjava.js Index: Site/Site_J/indexjava.js ================================================================== --- Site/Site_J/indexjava.js +++ Site/Site_J/indexjava.js @@ -0,0 +1,281 @@ +// ************************************************* +// +// INDEX PAGE JAVA SCRIPT +// +// 12-Feb-2011 Initial Version +// 13-Feb-2011 Added REST code & login actions +// 9-Mar-2011 Added disable/enable login actions +// 14-May-2011 Add Inventory page +// 18-Nov-2011 [7f829d5df2] Add Auto operation +// +// ************************************************* + +// Main handler document control + + +var login_action = false; // SET FALSE to disable LOGIN +var lcnURI; + +// Get location for REST TARGETS + +lcnURI = window.location.protocol + "//" + window.location.hostname + ":" + + window.location.port + "/rest/"; + +//----------------------------------------------------------------------- +/* + ready section (main) Run when document ready + + Look for main link presses here + Cycles between IDLE - LOGIN - RUN states +*/ +//----------------------------------------------------------------------- + +$(document).ready +( + + function() + { + + // Run first to startup + + FNET_swToIdle(); + + // ************************* + // Page Actions + + $("#LOGIN_LINK").click // Login + ( + function() + { + + FNET_swToLogin(); + if( login_action ) + { + if ( login_prep() === false ) + { + FNET_swToIdle(); // FAILURE + } + } + else + FNET_swToRun(); // Run with no login + } + ); + + + $("#LOGOUT_LINK").click // Logout + ( + function() + { + logout_action(); + FNET_swToIdle(); + } + ); + + // Login Submit action + + $("#LOGIN_SUB").click // Login SUBMIT + ( + function() + { + if( login_check() ) + { + FNET_swToRun(); // Success + } + else + { + FNET_swToIdle(); // FAILURE + } + } + ); + + + $("#RUN_DEBUG").click // DEBUG + ( + function() + { + DEBUG_SwToDebug(); + } + ); + + $("#DEBUG_SUB").click + ( + function() + { + DEBUG_Action(); + } + ); + + $("#RUN_MAN").click // MANUAL RUN + ( + function() + { + MANUAL_SwToManual(); + } + ); + + $("#RUN_INV").click // INVENTORY RUN + ( + function() + { + INV_SwToInv(); + } + ); + + + $("#RUN_AUTO").click // AUTO RUN + ( + function() + { + AUTO_SwToAuto(); + } + ); + } +); + +//----------------------------------------------------------------------- +/* + login_prep() - Get Login challenge + + INPUT: NONE + + OUTPUT: Sets Challenge field if ready, returns true + false if problem + + NOTE: Also does a LOGOUT first +*/ +//----------------------------------------------------------------------- + +function login_prep() +{ + var path; + var result; + + // Logout if we haven't + path = lcnURI + "admin/login/logout"; + result = FNET_getData(path,true,"" ); + + // Get the Challenge + path = lcnURI + "admin/login/request"; + result = FNET_getData(path,false,"",true ); + if ( result !== null && result.CHAL !== null) + { + $('input[name="LOGIN_CHAL"]').val(result.CHAL); + result = true; + } + else + { + result = false; // FAILURE + } +} + +//----------------------------------------------------------------------- +/* + login_check() - Send the log in response + + INPUT: NONE + Reads LOGIN_RESP field + + OUTPUT: If challenge correct returns true + false if problem + +*/ +//----------------------------------------------------------------------- + +function login_check() +{ + var path; + var result; + + // Return the challenge + // Note upper case it + result = $('input[name="LOGIN_RESP"]').val(); + result = result.toUpperCase(); + + path = lcnURI + "admin/login/response/" + result; + result = FNET_getData(path,true,"" ,true); + + if ( result !== null && result.LOGIN === "OK" ) + { + $('input[name="LOGIN_CHAL"]').val(""); + $('input[name="LOGIN_RESP"]').val(""); + result = true; + } + else + { + result = false; // FAILURE + } + + return result; +} + +//----------------------------------------------------------------------- +/* + logout_action() - logout + + INPUT: Sends LOGOUT message + + OUTPUT: true if success + false if not +*/ +//----------------------------------------------------------------------- + +function logout_action() +{ + var path; + var result; + + // Send a DISARM command to the array + + path = lcnURI + "firenet/arm/0/D"; + result = FNET_getData(path,true,"" ); + + // Logout + path = lcnURI + "admin/login/logout"; + result = FNET_getData(path,true,"" ,true); + + + if ( result !== null && result.LOGOUT === "OK" ) + { + result = true; + } + else + { + result = false; // FAILURE + } +} + +//----------------------------------------------------------------------- +/* + DEBUG_Action() - Do DEBUG operation + + INPUT: Sends current command + + OUTPUT: NONE +*/ +//----------------------------------------------------------------------- + +function DEBUG_Action() +{ + var path; + var result; + var post_state = $('#DEBUG_POST:checked').val(); + + if( post_state === undefined ) + post_state = "off"; + if( post_state == "on" ) + post_state = true; + else + post_state = false; + + // Get the user input and upper case it + result = $('input[name="DEBUG_CMD"]').val(); + result = result.toUpperCase(); + + path = lcnURI + result; + result = FNET_getData(path,post_state,"",false ); + + var textarea = jQuery('textarea#DEBUG_OUTPUT'); + + textarea.val(result); +} + ADDED Site/Site_J/inventory.js Index: Site/Site_J/inventory.js ================================================================== --- Site/Site_J/inventory.js +++ Site/Site_J/inventory.js @@ -0,0 +1,233 @@ +// ************************************************* +// +// INVENTORY PAGE +// +// 11-May-2011 Initial Version +// +// ************************************************* + +var FNET_IStatus; +var FNET_Inventory; +var FNET_NET_MAX = 30; // Maximum net size +var FNET_NET_MIN = 1; + +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +//----------------------------------------------------------------------- +/* + INVENTORY PAGE Major function + + DIV = INV_RUN_BLOCK + + (1) On entrance replace MANUAL_RUN with + ... Loading .... + And read status +*/ +//----------------------------------------------------------------------- + +function INVENTORY_Operation() +{ + var path; + var result; + var outmsg; + + // Clear the area... + $("#INV_RUN_BLOCK").replaceWith("

...Loading...
"); + +// path = "http://localhost:5010"; +// FNET_IStatus = FNET_getData(path,false,"",false); + + // Get the status + // Clear the map [2fbacd1fdc] + path = lcnURI + "firenet/status/C"; + FNET_IStatus = FNET_getData(path,false,"",true); + + // Build the inventory + + INVENTORY_Handler(); + +} + +//----------------------------------------------------------------------- +/* + Update inventory Information +*/ +//----------------------------------------------------------------------- + +function INVENTORY_Handler() +{ + var i; + var indx; + var hdr; + var body; + var output; + + // Create a new inventory array + + FNET_Inventory = new Array(); + + // Scan through each node and get the inventory information + + for( i=FNET_NET_MIN; i<= FNET_NET_MAX; i++ ) + { + indx = i + ""; + if( FNET_IStatus[indx] != null ) + { + FNET_Inventory[i] = INVENTORY_NodeData( indx ); + } + } + + // Now build the table for this run + + hdr = INVENTORY_BuildHeader(); + body = INVENTORY_BuildBody( FNET_Inventory ); + + output = "

"; + output = output + ""; + output = output + hdr + body; + output = output + "
"; + $("#INV_RUN_BLOCK").replaceWith( output ); +} + +//----------------------------------------------------------------------- +/* + -- SUPPORT FUNCTIONS --- +*/ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +/* + Get inventory information on 1 NODE +*/ +//----------------------------------------------------------------------- +function INVENTORY_NodeData( node ) +{ + var path; + var result; + var n; + var output = new Array(); + + // (1) Get the version information + + path = lcnURI + "firenet/version/" + node; + result = INV_getData(path,false,"",true); + + output.VERSION = result.VERSION; + + // (2) Get the Firing time data + + path = lcnURI + "firenet/literal/" + node + "/T"; + result = INV_getData(path,true,"",true); + + result = result.DATA; + n = result.length; + output.FT = result.substring( n-4); + + // (3) Get the Backoff time data + + path = lcnURI + "firenet/literal/" + node + "/B"; + result = INV_getData(path,true,"",true); + + result = result.DATA; + n = result.length; + output.BACKOFF = result.substring( n-4); + + // (4) Get the Test mode data + + path = lcnURI + "firenet/literal/" + node + "/M"; + result = INV_getData(path,true,"",true); + + result = result.DATA; + n = result.length; + output.TEST = result.substring( n-1); + + + return output; +} + +function INV_getData( path, postState,data,flag ) +{ + var count = 3; + var result; + + while( count > 0 ) + { + result = FNET_getData( path, postState,data,flag ); + if( result.STATUS == "XMIT" ) + break; + + FNET_SLEEP( 100 ); + count = count - 1 + + result.DATA = ""; + } + + return result; +} + +//----------------------------------------------------------------------- +// -- DISPLAY FUNCTIONS -- +//----------------------------------------------------------------------- + +//----------------------------------------------------------------------- +/* + INVENTORY_BuildHeader() + + INPUT: NONE + + OUTPUT: Return table header structure +*/ +//----------------------------------------------------------------------- + +function INVENTORY_BuildHeader() +{ + var tablehdr; + var i; + + tablehdr = ""; + tablehdr = tablehdr + "Node"; + tablehdr = tablehdr + "Version"; + tablehdr = tablehdr + "Firing Time"; + tablehdr = tablehdr + "Backoff"; + tablehdr = tablehdr + "Test Mode"; + tablehdr = tablehdr + ""; + + return tablehdr; +} + +//----------------------------------------------------------------------- +/* + INVENTORY_BuildBody(inventory) + + INPUT: NONE + + OUTPUT: Return table body structure +*/ +//----------------------------------------------------------------------- + +function INVENTORY_BuildBody( inventory ) +{ + var output = ""; + var i; + + // Build each row + + for( i=FNET_NET_MIN; i<= FNET_NET_MAX; i++ ) + { + if( inventory[i] != null ) + { + row = ""; + + row = row + "" + i + ""; + row = row + "" + inventory[i].VERSION + ""; + row = row + "" + inventory[i].FT + ""; + row = row + "" + inventory[i].BACKOFF + "" + row = row + "" + inventory[i].TEST + "" + row = row + ""; + + output = output + row; + } + } + + return output; +} ADDED Site/Site_J/jquery.flot.js Index: Site/Site_J/jquery.flot.js ================================================================== --- Site/Site_J/jquery.flot.js +++ Site/Site_J/jquery.flot.js @@ -0,0 +1,3137 @@ +/* Javascript plotting library for jQuery, version 0.8.2. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +*/ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ +(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); + +// the actual Flot code +(function($) { + + // Cache the prototype hasOwnProperty for faster access + + var hasOwnProperty = Object.prototype.hasOwnProperty; + + /////////////////////////////////////////////////////////////////////////// + // The Canvas object is a wrapper around an HTML5 tag. + // + // @constructor + // @param {string} cls List of classes to apply to the canvas. + // @param {element} container Element onto which to append the canvas. + // + // Requiring a container is a little iffy, but unfortunately canvas + // operations don't work unless the canvas is attached to the DOM. + + function Canvas(cls, container) { + + var element = container.children("." + cls)[0]; + + if (element == null) { + + element = document.createElement("canvas"); + element.className = cls; + + $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) + .appendTo(container); + + // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas + + if (!element.getContext) { + if (window.G_vmlCanvasManager) { + element = window.G_vmlCanvasManager.initElement(element); + } else { + throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); + } + } + } + + this.element = element; + + var context = this.context = element.getContext("2d"); + + // Determine the screen's ratio of physical to device-independent + // pixels. This is the ratio between the canvas width that the browser + // advertises and the number of pixels actually present in that space. + + // The iPhone 4, for example, has a device-independent width of 320px, + // but its screen is actually 640px wide. It therefore has a pixel + // ratio of 2, while most normal devices have a ratio of 1. + + var devicePixelRatio = window.devicePixelRatio || 1, + backingStoreRatio = + context.webkitBackingStorePixelRatio || + context.mozBackingStorePixelRatio || + context.msBackingStorePixelRatio || + context.oBackingStorePixelRatio || + context.backingStorePixelRatio || 1; + + this.pixelRatio = devicePixelRatio / backingStoreRatio; + + // Size the canvas to match the internal dimensions of its container + + this.resize(container.width(), container.height()); + + // Collection of HTML div layers for text overlaid onto the canvas + + this.textContainer = null; + this.text = {}; + + // Cache of text fragments and metrics, so we can avoid expensively + // re-calculating them when the plot is re-rendered in a loop. + + this._textCache = {}; + } + + // Resizes the canvas to the given dimensions. + // + // @param {number} width New width of the canvas, in pixels. + // @param {number} width New height of the canvas, in pixels. + + Canvas.prototype.resize = function(width, height) { + + if (width <= 0 || height <= 0) { + throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); + } + + var element = this.element, + context = this.context, + pixelRatio = this.pixelRatio; + + // Resize the canvas, increasing its density based on the display's + // pixel ratio; basically giving it more pixels without increasing the + // size of its element, to take advantage of the fact that retina + // displays have that many more pixels in the same advertised space. + + // Resizing should reset the state (excanvas seems to be buggy though) + + if (this.width != width) { + element.width = width * pixelRatio; + element.style.width = width + "px"; + this.width = width; + } + + if (this.height != height) { + element.height = height * pixelRatio; + element.style.height = height + "px"; + this.height = height; + } + + // Save the context, so we can reset in case we get replotted. The + // restore ensure that we're really back at the initial state, and + // should be safe even if we haven't saved the initial state yet. + + context.restore(); + context.save(); + + // Scale the coordinate space to match the display density; so even though we + // may have twice as many pixels, we still want lines and other drawing to + // appear at the same size; the extra pixels will just make them crisper. + + context.scale(pixelRatio, pixelRatio); + }; + + // Clears the entire canvas area, not including any overlaid HTML text + + Canvas.prototype.clear = function() { + this.context.clearRect(0, 0, this.width, this.height); + }; + + // Finishes rendering the canvas, including managing the text overlay. + + Canvas.prototype.render = function() { + + var cache = this._textCache; + + // For each text layer, add elements marked as active that haven't + // already been rendered, and remove those that are no longer active. + + for (var layerKey in cache) { + if (hasOwnProperty.call(cache, layerKey)) { + + var layer = this.getTextLayer(layerKey), + layerCache = cache[layerKey]; + + layer.hide(); + + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + + var positions = styleCache[key].positions; + + for (var i = 0, position; position = positions[i]; i++) { + if (position.active) { + if (!position.rendered) { + layer.append(position.element); + position.rendered = true; + } + } else { + positions.splice(i--, 1); + if (position.rendered) { + position.element.detach(); + } + } + } + + if (positions.length == 0) { + delete styleCache[key]; + } + } + } + } + } + + layer.show(); + } + } + }; + + // Creates (if necessary) and returns the text overlay container. + // + // @param {string} classes String of space-separated CSS classes used to + // uniquely identify the text layer. + // @return {object} The jQuery-wrapped text-layer div. + + Canvas.prototype.getTextLayer = function(classes) { + + var layer = this.text[classes]; + + // Create the text layer if it doesn't exist + + if (layer == null) { + + // Create the text layer container, if it doesn't exist + + if (this.textContainer == null) { + this.textContainer = $("
") + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0, + 'font-size': "smaller", + color: "#545454" + }) + .insertAfter(this.element); + } + + layer = this.text[classes] = $("
") + .addClass(classes) + .css({ + position: "absolute", + top: 0, + left: 0, + bottom: 0, + right: 0 + }) + .appendTo(this.textContainer); + } + + return layer; + }; + + // Creates (if necessary) and returns a text info object. + // + // The object looks like this: + // + // { + // width: Width of the text's wrapper div. + // height: Height of the text's wrapper div. + // element: The jQuery-wrapped HTML div containing the text. + // positions: Array of positions at which this text is drawn. + // } + // + // The positions array contains objects that look like this: + // + // { + // active: Flag indicating whether the text should be visible. + // rendered: Flag indicating whether the text is currently visible. + // element: The jQuery-wrapped HTML div containing the text. + // x: X coordinate at which to draw the text. + // y: Y coordinate at which to draw the text. + // } + // + // Each position after the first receives a clone of the original element. + // + // The idea is that that the width, height, and general 'identity' of the + // text is constant no matter where it is placed; the placements are a + // secondary property. + // + // Canvas maintains a cache of recently-used text info objects; getTextInfo + // either returns the cached element or creates a new entry. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {string} text Text string to retrieve info for. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @return {object} a text info object. + + Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { + + var textStyle, layerCache, styleCache, info; + + // Cast the value to a string, in case we were given a number or such + + text = "" + text; + + // If the font is a font-spec object, generate a CSS font definition + + if (typeof font === "object") { + textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; + } else { + textStyle = font; + } + + // Retrieve (or create) the cache for the text's layer and styles + + layerCache = this._textCache[layer]; + + if (layerCache == null) { + layerCache = this._textCache[layer] = {}; + } + + styleCache = layerCache[textStyle]; + + if (styleCache == null) { + styleCache = layerCache[textStyle] = {}; + } + + info = styleCache[text]; + + // If we can't find a matching element in our cache, create a new one + + if (info == null) { + + var element = $("
").html(text) + .css({ + position: "absolute", + 'max-width': width, + top: -9999 + }) + .appendTo(this.getTextLayer(layer)); + + if (typeof font === "object") { + element.css({ + font: textStyle, + color: font.color + }); + } else if (typeof font === "string") { + element.addClass(font); + } + + info = styleCache[text] = { + width: element.outerWidth(true), + height: element.outerHeight(true), + element: element, + positions: [] + }; + + element.detach(); + } + + return info; + }; + + // Adds a text string to the canvas text overlay. + // + // The text isn't drawn immediately; it is marked as rendering, which will + // result in its addition to the canvas on the next render pass. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number} x X coordinate at which to draw the text. + // @param {number} y Y coordinate at which to draw the text. + // @param {string} text Text string to draw. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which to rotate the text, in degrees. + // Angle is currently unused, it will be implemented in the future. + // @param {number=} width Maximum width of the text before it wraps. + // @param {string=} halign Horizontal alignment of the text; either "left", + // "center" or "right". + // @param {string=} valign Vertical alignment of the text; either "top", + // "middle" or "bottom". + + Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { + + var info = this.getTextInfo(layer, text, font, angle, width), + positions = info.positions; + + // Tweak the div's position to match the text's alignment + + if (halign == "center") { + x -= info.width / 2; + } else if (halign == "right") { + x -= info.width; + } + + if (valign == "middle") { + y -= info.height / 2; + } else if (valign == "bottom") { + y -= info.height; + } + + // Determine whether this text already exists at this position. + // If so, mark it for inclusion in the next render pass. + + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = true; + return; + } + } + + // If the text doesn't exist at this position, create a new entry + + // For the very first position we'll re-use the original element, + // while for subsequent ones we'll clone it. + + position = { + active: true, + rendered: false, + element: positions.length ? info.element.clone() : info.element, + x: x, + y: y + }; + + positions.push(position); + + // Move the element to its final position within the container + + position.element.css({ + top: Math.round(y), + left: Math.round(x), + 'text-align': halign // In case the text wraps + }); + }; + + // Removes one or more text strings from the canvas text overlay. + // + // If no parameters are given, all text within the layer is removed. + // + // Note that the text is not immediately removed; it is simply marked as + // inactive, which will result in its removal on the next render pass. + // This avoids the performance penalty for 'clear and redraw' behavior, + // where we potentially get rid of all text on a layer, but will likely + // add back most or all of it later, as when redrawing axes, for example. + // + // @param {string} layer A string of space-separated CSS classes uniquely + // identifying the layer containing this text. + // @param {number=} x X coordinate of the text. + // @param {number=} y Y coordinate of the text. + // @param {string=} text Text string to remove. + // @param {(string|object)=} font Either a string of space-separated CSS + // classes or a font-spec object, defining the text's font and style. + // @param {number=} angle Angle at which the text is rotated, in degrees. + // Angle is currently unused, it will be implemented in the future. + + Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { + if (text == null) { + var layerCache = this._textCache[layer]; + if (layerCache != null) { + for (var styleKey in layerCache) { + if (hasOwnProperty.call(layerCache, styleKey)) { + var styleCache = layerCache[styleKey]; + for (var key in styleCache) { + if (hasOwnProperty.call(styleCache, key)) { + var positions = styleCache[key].positions; + for (var i = 0, position; position = positions[i]; i++) { + position.active = false; + } + } + } + } + } + } + } else { + var positions = this.getTextInfo(layer, text, font, angle).positions; + for (var i = 0, position; position = positions[i]; i++) { + if (position.x == x && position.y == y) { + position.active = false; + } + } + } + }; + + /////////////////////////////////////////////////////////////////////////// + // The top-level container for the entire plot. + + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85, // set to 0 to avoid background + sorted: null // default to no legend sorting + }, + xaxis: { + show: null, // null = auto-detect, true = always, false = never + position: "bottom", // or "top" + mode: null, // null or "time" + font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } + color: null, // base color, labels, ticks + tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + reserveSpace: null, // whether to reserve space even if axis isn't shown + tickLength: null, // size in pixels of ticks, or "full" for whole line + alignTicksWithAxis: null, // axis number or null for no sync + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null // number or [number, "unit"] + }, + yaxis: { + autoscaleMargin: 0.02, + position: "left" // or "right" + }, + xaxes: [], + yaxes: [], + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff", + symbol: "circle" // or callback + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + // Omit 'zero', so we can later default its value to + // match that of the 'fill' option. + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // "left", "right", or "center" + horizontal: false, + zero: true + }, + shadowSize: 3, + highlightColor: null + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + borderColor: null, // set if different from the grid color + tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" + margin: 0, // distance from the canvas edge to the grid + labelMargin: 5, // in pixels + axisMargin: 8, // in pixels + borderWidth: 2, // in pixels + minBorderMargin: null, // in pixels, null means taken from points radius + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + interaction: { + redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow + }, + hooks: {} + }, + surface = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + xaxes = [], yaxes = [], + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + processOffset: [], + drawBackground: [], + drawSeries: [], + draw: [], + bindEvents: [], + drawOverlay: [], + shutdown: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return surface.element; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function () { return series; }; + plot.getAxes = function () { + var res = {}, i; + $.each(xaxes.concat(yaxes), function (_, axis) { + if (axis) + res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; + }); + return res; + }; + plot.getXAxes = function () { return xaxes; }; + plot.getYAxes = function () { return yaxes; }; + plot.c2p = canvasToAxisCoords; + plot.p2c = axisToCanvasCoords; + plot.getOptions = function () { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { + left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), + top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) + }; + }; + plot.shutdown = shutdown; + plot.destroy = function () { + shutdown(); + placeholder.removeData("plot").empty(); + + series = []; + options = null; + surface = null; + overlay = null; + eventHolder = null; + ctx = null; + octx = null; + xaxes = []; + yaxes = []; + hooks = null; + highlights = []; + plot = null; + }; + plot.resize = function () { + var width = placeholder.width(), + height = placeholder.height(); + surface.resize(width, height); + overlay.resize(width, height); + }; + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + setupCanvases(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + + // References to key classes, allowing plugins to modify them + + var classes = { + Canvas: Canvas + }; + + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot, classes); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + + $.extend(true, options, opts); + + // $.extend merges arrays, rather than replacing them. When less + // colors are provided than the size of the default palette, we + // end up with those colors plus the remaining defaults, which is + // not expected behavior; avoid it by replacing them here. + + if (opts && opts.colors) { + options.colors = opts.colors; + } + + if (options.xaxis.color == null) + options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + if (options.yaxis.color == null) + options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility + options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; + if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility + options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; + + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + if (options.grid.tickColor == null) + options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + // Fill in defaults for axis options, including any unspecified + // font-spec fields, if a font-spec was provided. + + // If no x/y axis options were provided, create one of each anyway, + // since the rest of the code assumes that they exist. + + var i, axisOptions, axisCount, + fontSize = placeholder.css("font-size"), + fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 13, + fontDefaults = { + style: placeholder.css("font-style"), + size: Math.round(0.8 * fontSizeDefault), + variant: placeholder.css("font-variant"), + weight: placeholder.css("font-weight"), + family: placeholder.css("font-family") + }; + + axisCount = options.xaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.xaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.xaxis, axisOptions); + options.xaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + axisCount = options.yaxes.length || 1; + for (i = 0; i < axisCount; ++i) { + + axisOptions = options.yaxes[i]; + if (axisOptions && !axisOptions.tickColor) { + axisOptions.tickColor = axisOptions.color; + } + + axisOptions = $.extend(true, {}, options.yaxis, axisOptions); + options.yaxes[i] = axisOptions; + + if (axisOptions.font) { + axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); + if (!axisOptions.font.color) { + axisOptions.font.color = axisOptions.color; + } + if (!axisOptions.font.lineHeight) { + axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.15); + } + } + } + + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.x2axis) { + options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); + options.xaxes[1].position = "top"; + } + if (options.y2axis) { + options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); + options.yaxes[1].position = "right"; + } + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize != null) + options.series.shadowSize = options.shadowSize; + if (options.highlightColor != null) + options.series.highlightColor = options.highlightColor; + + // save options on axes for future reference + for (i = 0; i < options.xaxes.length; ++i) + getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; + for (i = 0; i < options.yaxes.length; ++i) + getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; + + // add hooks from options + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data != null) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisNumber(obj, coord) { + var a = obj[coord + "axis"]; + if (typeof a == "object") // if we got a real axis, extract number + a = a.n; + if (typeof a != "number") + a = 1; // default to first axis + return a; + } + + function allAxes() { + // return flat array without annoying null entries + return $.grep(xaxes.concat(yaxes), function (a) { return a; }); + } + + function canvasToAxisCoords(pos) { + // return an object with x/y corresponding to all used axes + var res = {}, i, axis; + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) + res["x" + axis.n] = axis.c2p(pos.left); + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) + res["y" + axis.n] = axis.c2p(pos.top); + } + + if (res.x1 !== undefined) + res.x = res.x1; + if (res.y1 !== undefined) + res.y = res.y1; + + return res; + } + + function axisToCanvasCoords(pos) { + // get canvas coords from the first pair of x/y found in pos + var res = {}, i, axis, key; + + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) { + key = "x" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "x"; + + if (pos[key] != null) { + res.left = axis.p2c(pos[key]); + break; + } + } + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) { + key = "y" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "y"; + + if (pos[key] != null) { + res.top = axis.p2c(pos[key]); + break; + } + } + } + + return res; + } + + function getOrCreateAxis(axes, number) { + if (!axes[number - 1]) + axes[number - 1] = { + n: number, // save the number for future reference + direction: axes == xaxes ? "x" : "y", + options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) + }; + + return axes[number - 1]; + } + + function fillInSeriesOptions() { + + var neededColors = series.length, maxIndex = -1, i; + + // Subtract the number of series that already have fixed colors or + // color indexes from the number that we still need to generate. + + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + neededColors--; + if (typeof sc == "number" && sc > maxIndex) { + maxIndex = sc; + } + } + } + + // If any of the series have fixed color indexes, then we need to + // generate at least as many colors as the highest index. + + if (neededColors <= maxIndex) { + neededColors = maxIndex + 1; + } + + // Generate all the colors, using first the option colors and then + // variations on those colors once they're exhausted. + + var c, colors = [], colorPool = options.colors, + colorPoolSize = colorPool.length, variation = 0; + + for (i = 0; i < neededColors; i++) { + + c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); + + // Each time we exhaust the colors in the pool we adjust + // a scaling factor used to produce more variations on + // those colors. The factor alternates negative/positive + // to produce lighter/darker colors. + + // Reset the variation after every few cycles, or else + // it will end up producing only white or black colors. + + if (i % colorPoolSize == 0 && i) { + if (variation >= 0) { + if (variation < 0.5) { + variation = -variation - 0.2; + } else variation = 0; + } else variation = -variation; + } + + colors[i] = c.scale('rgb', 1 + variation); + } + + // Finalize the series options, filling in their colors + + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v] && s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // If nothing was provided for lines.zero, default it to match + // lines.fill, since areas by default should extend to zero. + + if (s.lines.zero == null) { + s.lines.zero = !!s.lines.fill; + } + + // setup axes + s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); + s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + fakeInfinity = Number.MAX_VALUE, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p, + data, format; + + function updateAxis(axis, min, max) { + if (min < axis.datamin && min != -fakeInfinity) + axis.datamin = min; + if (max > axis.datamax && max != fakeInfinity) + axis.datamax = max; + } + + $.each(allAxes(), function (_, axis) { + // init axis + axis.datamin = topSentry; + axis.datamax = bottomSentry; + axis.used = false; + }); + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + data = s.data; + format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); + format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + var insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + else if (val == Infinity) + val = fakeInfinity; + else if (val == -Infinity) + val = -fakeInfinity; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.autoscale !== false) { + if (f.x) { + updateAxis(s.xaxis, val, val); + } + if (f.y) { + updateAxis(s.yaxis, val, val); + } + } + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points; + ps = s.datapoints.pointsize; + format = s.datapoints.format; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta; + + switch (s.bars.align) { + case "left": + delta = 0; + break; + case "right": + delta = -s.bars.barWidth; + break; + default: + delta = -s.bars.barWidth / 2; + } + + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + $.each(allAxes(), function (_, axis) { + if (axis.datamin == topSentry) + axis.datamin = null; + if (axis.datamax == bottomSentry) + axis.datamax = null; + }); + } + + function setupCanvases() { + + // Make sure the placeholder is clear of everything except canvases + // from a previous plot in this container that we'll try to re-use. + + placeholder.css("padding", 0) // padding messes up the positioning + .children().filter(function(){ + return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); + }).remove(); + + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + surface = new Canvas("flot-base", placeholder); + overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features + + ctx = surface.context; + octx = overlay.context; + + // define which element we're listening for events on + eventHolder = $(overlay.element).unbind(); + + // If we're re-using a plot object, shut down the old one + + var existing = placeholder.data("plot"); + + if (existing) { + existing.shutdown(); + overlay.clear(); + } + + // save in case we get replotted + placeholder.data("plot", plot); + } + + function bindEvents() { + // bind events + if (options.grid.hoverable) { + eventHolder.mousemove(onMouseMove); + + // Use bind, rather than .mouseleave, because we officially + // still support jQuery 1.2.6, which doesn't define a shortcut + // for mouseenter or mouseleave. This was a bug/oversight that + // was fixed somewhere around 1.3.x. We can return to using + // .mouseleave when we drop support for 1.2.6. + + eventHolder.bind("mouseleave", onMouseLeave); + } + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function shutdown() { + if (redrawTimeout) + clearTimeout(redrawTimeout); + + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mouseleave", onMouseLeave); + eventHolder.unbind("click", onClick); + + executeHooks(hooks.shutdown, [eventHolder]); + } + + function setTransformationHelpers(axis) { + // set helper functions on the axis, assumes plot area + // has been computed already + + function identity(x) { return x; } + + var s, m, t = axis.options.transform || identity, + it = axis.options.inverseTransform; + + // precompute how much the axis is scaling a point + // in canvas space + if (axis.direction == "x") { + s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); + m = Math.min(t(axis.max), t(axis.min)); + } + else { + s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); + s = -s; + m = Math.max(t(axis.max), t(axis.min)); + } + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + + function measureTickLabels(axis) { + + var opts = axis.options, + ticks = axis.ticks || [], + labelWidth = opts.labelWidth || 0, + labelHeight = opts.labelHeight || 0, + maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = opts.font || "flot-tick-label tickLabel"; + + for (var i = 0; i < ticks.length; ++i) { + + var t = ticks[i]; + + if (!t.label) + continue; + + var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); + + labelWidth = Math.max(labelWidth, info.width); + labelHeight = Math.max(labelHeight, info.height); + } + + axis.labelWidth = opts.labelWidth || labelWidth; + axis.labelHeight = opts.labelHeight || labelHeight; + } + + function allocateAxisBoxFirstPhase(axis) { + // find the bounding box of the axis by looking at label + // widths/heights and ticks, make room by diminishing the + // plotOffset; this first phase only looks at one + // dimension per axis, the other dimension depends on the + // other axes so will have to wait + + var lw = axis.labelWidth, + lh = axis.labelHeight, + pos = axis.options.position, + isXAxis = axis.direction === "x", + tickLength = axis.options.tickLength, + axisMargin = options.grid.axisMargin, + padding = options.grid.labelMargin, + innermost = true, + outermost = true, + first = true, + found = false; + + // Determine the axis's position in its direction and on its side + + $.each(isXAxis ? xaxes : yaxes, function(i, a) { + if (a && a.reserveSpace) { + if (a === axis) { + found = true; + } else if (a.options.position === pos) { + if (found) { + outermost = false; + } else { + innermost = false; + } + } + if (!found) { + first = false; + } + } + }); + + // The outermost axis on each side has no margin + + if (outermost) { + axisMargin = 0; + } + + // The ticks for the first axis in each direction stretch across + + if (tickLength == null) { + tickLength = first ? "full" : 5; + } + + if (!isNaN(+tickLength)) + padding += +tickLength; + + if (isXAxis) { + lh += padding; + + if (pos == "bottom") { + plotOffset.bottom += lh + axisMargin; + axis.box = { top: surface.height - plotOffset.bottom, height: lh }; + } + else { + axis.box = { top: plotOffset.top + axisMargin, height: lh }; + plotOffset.top += lh + axisMargin; + } + } + else { + lw += padding; + + if (pos == "left") { + axis.box = { left: plotOffset.left + axisMargin, width: lw }; + plotOffset.left += lw + axisMargin; + } + else { + plotOffset.right += lw + axisMargin; + axis.box = { left: surface.width - plotOffset.right, width: lw }; + } + } + + // save for future reference + axis.position = pos; + axis.tickLength = tickLength; + axis.box.padding = padding; + axis.innermost = innermost; + } + + function allocateAxisBoxSecondPhase(axis) { + // now that all axis boxes have been placed in one + // dimension, we can set the remaining dimension coordinates + if (axis.direction == "x") { + axis.box.left = plotOffset.left - axis.labelWidth / 2; + axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; + } + else { + axis.box.top = plotOffset.top - axis.labelHeight / 2; + axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; + } + } + + function adjustLayoutForThingsStickingOut() { + // possibly adjust plot offset to ensure everything stays + // inside the canvas and isn't clipped off + + var minMargin = options.grid.minBorderMargin, + axis, i; + + // check stuff from the plot (FIXME: this should just read + // a value from the series, otherwise it's impossible to + // customize) + if (minMargin == null) { + minMargin = 0; + for (i = 0; i < series.length; ++i) + minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + } + + var margins = { + left: minMargin, + right: minMargin, + top: minMargin, + bottom: minMargin + }; + + // check axis labels, note we don't check the actual + // labels but instead use the overall width/height to not + // jump as much around with replots + $.each(allAxes(), function (_, axis) { + if (axis.reserveSpace && axis.ticks && axis.ticks.length) { + var lastTick = axis.ticks[axis.ticks.length - 1]; + if (axis.direction === "x") { + margins.left = Math.max(margins.left, axis.labelWidth / 2); + if (lastTick.v <= axis.max) { + margins.right = Math.max(margins.right, axis.labelWidth / 2); + } + } else { + margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); + if (lastTick.v <= axis.max) { + margins.top = Math.max(margins.top, axis.labelHeight / 2); + } + } + } + }); + + plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); + plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); + plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); + plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); + } + + function setupGrid() { + var i, axes = allAxes(), showGrid = options.grid.show; + + // Initialize the plot's offset from the edge of the canvas + + for (var a in plotOffset) { + var margin = options.grid.margin || 0; + plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; + } + + executeHooks(hooks.processOffset, [plotOffset]); + + // If the grid is visible, add its border width to the offset + + for (var a in plotOffset) { + if(typeof(options.grid.borderWidth) == "object") { + plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; + } + else { + plotOffset[a] += showGrid ? options.grid.borderWidth : 0; + } + } + + // init axes + $.each(axes, function (_, axis) { + axis.show = axis.options.show; + if (axis.show == null) + axis.show = axis.used; // by default an axis is visible if it's got data + + axis.reserveSpace = axis.show || axis.options.reserveSpace; + + setRange(axis); + }); + + if (showGrid) { + + var allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; }); + + $.each(allocatedAxes, function (_, axis) { + // make the ticks + setupTickGeneration(axis); + setTicks(axis); + snapRangeToTicks(axis, axis.ticks); + // find labelWidth/Height for axis + measureTickLabels(axis); + }); + + // with all dimensions calculated, we can compute the + // axis bounding boxes, start from the outside + // (reverse order) + for (i = allocatedAxes.length - 1; i >= 0; --i) + allocateAxisBoxFirstPhase(allocatedAxes[i]); + + // make sure we've got enough space for things that + // might stick out + adjustLayoutForThingsStickingOut(); + + $.each(allocatedAxes, function (_, axis) { + allocateAxisBoxSecondPhase(axis); + }); + } + + plotWidth = surface.width - plotOffset.left - plotOffset.right; + plotHeight = surface.height - plotOffset.bottom - plotOffset.top; + + // now we got the proper plot dimensions, we can compute the scaling + $.each(axes, function (_, axis) { + setTransformationHelpers(axis); + }); + + if (showGrid) { + drawAxisLabels(); + } + + insertLegend(); + } + + function setRange(axis) { + var opts = axis.options, + min = +(opts.min != null ? opts.min : axis.datamin), + max = +(opts.max != null ? opts.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (opts.min == null) + min -= widen; + // always widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (opts.max == null || opts.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = opts.autoscaleMargin; + if (margin != null) { + if (opts.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (opts.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function setupTickGeneration(axis) { + var opts = axis.options; + + // estimate number of ticks + var noTicks; + if (typeof opts.ticks == "number" && opts.ticks > 0) + noTicks = opts.ticks; + else + // heuristic based on the model a*sqrt(x) fitted to + // some data points that seemed reasonable + noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); + + var delta = (axis.max - axis.min) / noTicks, + dec = -Math.floor(Math.log(delta) / Math.LN10), + maxDec = opts.tickDecimals; + + if (maxDec != null && dec > maxDec) { + dec = maxDec; + } + + var magn = Math.pow(10, -dec), + norm = delta / magn, // norm is between 1.0 and 10.0 + size; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + + if (opts.minTickSize != null && size < opts.minTickSize) { + size = opts.minTickSize; + } + + axis.delta = delta; + axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); + axis.tickSize = opts.tickSize || size; + + // Time mode was moved to a plug-in in 0.8, but since so many people use this + // we'll add an especially friendly make sure they remembered to include it. + + if (opts.mode == "time" && !axis.tickGenerator) { + throw new Error("Time mode requires the flot.time plugin."); + } + + // Flot supports base-10 axes; any other mode else is handled by a plug-in, + // like flot.time.js. + + if (!axis.tickGenerator) { + + axis.tickGenerator = function (axis) { + + var ticks = [], + start = floorInBase(axis.min, axis.tickSize), + i = 0, + v = Number.NaN, + prev; + + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push(v); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + axis.tickFormatter = function (value, axis) { + + var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; + var formatted = "" + Math.round(value * factor) / factor; + + // If tickDecimals was specified, ensure that we have exactly that + // much precision; otherwise default to the value's own precision. + + if (axis.tickDecimals != null) { + var decimal = formatted.indexOf("."); + var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; + if (precision < axis.tickDecimals) { + return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); + } + } + + return formatted; + }; + } + + if ($.isFunction(opts.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; + + if (opts.alignTicksWithAxis != null) { + var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; + if (otherAxis && otherAxis.used && otherAxis != axis) { + // consider snapping min/max to outermost nice ticks + var niceTicks = axis.tickGenerator(axis); + if (niceTicks.length > 0) { + if (opts.min == null) + axis.min = Math.min(axis.min, niceTicks[0]); + if (opts.max == null && niceTicks.length > 1) + axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); + } + + axis.tickGenerator = function (axis) { + // copy ticks, scaled to this axis + var ticks = [], v, i; + for (i = 0; i < otherAxis.ticks.length; ++i) { + v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); + v = axis.min + v * (axis.max - axis.min); + ticks.push(v); + } + return ticks; + }; + + // we might need an extra decimal since forced + // ticks don't necessarily fit naturally + if (!axis.mode && opts.tickDecimals == null) { + var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), + ts = axis.tickGenerator(axis); + + // only proceed if the tick interval rounded + // with an extra decimal doesn't give us a + // zero at end + if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) + axis.tickDecimals = extraDec; + } + } + } + } + + function setTicks(axis) { + var oticks = axis.options.ticks, ticks = []; + if (oticks == null || (typeof oticks == "number" && oticks > 0)) + ticks = axis.tickGenerator(axis); + else if (oticks) { + if ($.isFunction(oticks)) + // generate the ticks + ticks = oticks(axis); + else + ticks = oticks; + } + + // clean up/labelify the supplied ticks, copy them over + var i, v; + axis.ticks = []; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = +t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = +t; + if (label == null) + label = axis.tickFormatter(v, axis); + if (!isNaN(v)) + axis.ticks.push({ v: v, label: label }); + } + } + + function snapRangeToTicks(axis, ticks) { + if (axis.options.autoscaleMargin && ticks.length > 0) { + // snap to ticks + if (axis.options.min == null) + axis.min = Math.min(axis.min, ticks[0].v); + if (axis.options.max == null && ticks.length > 1) + axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); + } + } + + function draw() { + + surface.clear(); + + executeHooks(hooks.drawBackground, [ctx]); + + var grid = options.grid; + + // draw background, if any + if (grid.show && grid.backgroundColor) + drawBackground(); + + if (grid.show && !grid.aboveData) { + drawGrid(); + } + + for (var i = 0; i < series.length; ++i) { + executeHooks(hooks.drawSeries, [ctx, series[i]]); + drawSeries(series[i]); + } + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) { + drawGrid(); + } + + surface.render(); + + // A draw implies that either the axes or data have changed, so we + // should probably update the overlay highlights as well. + + triggerRedrawOverlay(); + } + + function extractRange(ranges, coord) { + var axis, from, to, key, axes = allAxes(); + + for (var i = 0; i < axes.length; ++i) { + axis = axes[i]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? xaxes[0] : yaxes[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function drawBackground() { + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + ctx.restore(); + } + + function drawGrid() { + var i, axes, bw, bc; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) { + axes = plot.getAxes(); + // xmin etc. is backwards compatibility, to be + // removed in the future + axes.xmin = axes.xaxis.min; + axes.xmax = axes.xaxis.max; + axes.ymin = axes.yaxis.min; + axes.ymax = axes.yaxis.max; + + markings = markings(axes); + } + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + if (xrange.from == xrange.to && yrange.from == yrange.to) + continue; + + // then draw + xrange.from = xrange.axis.p2c(xrange.from); + xrange.to = xrange.axis.p2c(xrange.to); + yrange.from = yrange.axis.p2c(yrange.from); + yrange.to = yrange.axis.p2c(yrange.to); + + if (xrange.from == xrange.to || yrange.from == yrange.to) { + // draw line + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; + ctx.moveTo(xrange.from, yrange.from); + ctx.lineTo(xrange.to, yrange.to); + ctx.stroke(); + } + else { + // fill area + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the ticks + axes = allAxes(); + bw = options.grid.borderWidth; + + for (var j = 0; j < axes.length; ++j) { + var axis = axes[j], box = axis.box, + t = axis.tickLength, x, y, xoff, yoff; + if (!axis.show || axis.ticks.length == 0) + continue; + + ctx.lineWidth = 1; + + // find the edges + if (axis.direction == "x") { + x = 0; + if (t == "full") + y = (axis.position == "top" ? 0 : plotHeight); + else + y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); + } + else { + y = 0; + if (t == "full") + x = (axis.position == "left" ? 0 : plotWidth); + else + x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); + } + + // draw tick bar + if (!axis.innermost) { + ctx.strokeStyle = axis.options.color; + ctx.beginPath(); + xoff = yoff = 0; + if (axis.direction == "x") + xoff = plotWidth + 1; + else + yoff = plotHeight + 1; + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") { + y = Math.floor(y) + 0.5; + } else { + x = Math.floor(x) + 0.5; + } + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + ctx.stroke(); + } + + // draw ticks + + ctx.strokeStyle = axis.options.tickColor; + + ctx.beginPath(); + for (i = 0; i < axis.ticks.length; ++i) { + var v = axis.ticks[i].v; + + xoff = yoff = 0; + + if (isNaN(v) || v < axis.min || v > axis.max + // skip those lying on the axes if we got a border + || (t == "full" + && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) + && (v == axis.min || v == axis.max))) + continue; + + if (axis.direction == "x") { + x = axis.p2c(v); + yoff = t == "full" ? -plotHeight : t; + + if (axis.position == "top") + yoff = -yoff; + } + else { + y = axis.p2c(v); + xoff = t == "full" ? -plotWidth : t; + + if (axis.position == "left") + xoff = -xoff; + } + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") + x = Math.floor(x) + 0.5; + else + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + } + + ctx.stroke(); + } + + + // draw border + if (bw) { + // If either borderWidth or borderColor is an object, then draw the border + // line by line instead of as one rectangle + bc = options.grid.borderColor; + if(typeof bw == "object" || typeof bc == "object") { + if (typeof bw !== "object") { + bw = {top: bw, right: bw, bottom: bw, left: bw}; + } + if (typeof bc !== "object") { + bc = {top: bc, right: bc, bottom: bc, left: bc}; + } + + if (bw.top > 0) { + ctx.strokeStyle = bc.top; + ctx.lineWidth = bw.top; + ctx.beginPath(); + ctx.moveTo(0 - bw.left, 0 - bw.top/2); + ctx.lineTo(plotWidth, 0 - bw.top/2); + ctx.stroke(); + } + + if (bw.right > 0) { + ctx.strokeStyle = bc.right; + ctx.lineWidth = bw.right; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); + ctx.lineTo(plotWidth + bw.right / 2, plotHeight); + ctx.stroke(); + } + + if (bw.bottom > 0) { + ctx.strokeStyle = bc.bottom; + ctx.lineWidth = bw.bottom; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); + ctx.lineTo(0, plotHeight + bw.bottom / 2); + ctx.stroke(); + } + + if (bw.left > 0) { + ctx.strokeStyle = bc.left; + ctx.lineWidth = bw.left; + ctx.beginPath(); + ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); + ctx.lineTo(0- bw.left/2, 0); + ctx.stroke(); + } + } + else { + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + } + + ctx.restore(); + } + + function drawAxisLabels() { + + $.each(allAxes(), function (_, axis) { + var box = axis.box, + legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", + layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, + font = axis.options.font || "flot-tick-label tickLabel", + tick, x, y, halign, valign; + + // Remove text before checking for axis.show and ticks.length; + // otherwise plugins, like flot-tickrotor, that draw their own + // tick labels will end up with both theirs and the defaults. + + surface.removeText(layer); + + if (!axis.show || axis.ticks.length == 0) + return; + + for (var i = 0; i < axis.ticks.length; ++i) { + + tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + + if (axis.direction == "x") { + halign = "center"; + x = plotOffset.left + axis.p2c(tick.v); + if (axis.position == "bottom") { + y = box.top + box.padding; + } else { + y = box.top + box.height - box.padding; + valign = "bottom"; + } + } else { + valign = "middle"; + y = plotOffset.top + axis.p2c(tick.v); + if (axis.position == "left") { + x = box.left + box.width - box.padding; + halign = "right"; + } else { + x = box.left + box.padding; + } + } + + surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); + } + }); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + i = 0, top, areaOpen = false, + ypos = 1, segmentStart = 0, segmentEnd = 0; + + // we process each segment in two turns, first forward + // direction to sketch out top, then once we hit the + // end we go backwards to sketch the bottom + while (true) { + if (ps > 0 && i > points.length + ps) + break; + + i += ps; // ps is negative if going backwards + + var x1 = points[i - ps], + y1 = points[i - ps + ypos], + x2 = points[i], y2 = points[i + ypos]; + + if (areaOpen) { + if (ps > 0 && x1 != null && x2 == null) { + // at turning point + segmentEnd = i; + ps = -ps; + ypos = 2; + continue; + } + + if (ps < 0 && i == segmentStart + ps) { + // done with the reverse sweep + ctx.fill(); + areaOpen = false; + ps = -ps; + ypos = 1; + i = segmentStart = segmentEnd + ps; + continue; + } + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + continue; + } + + // else it's a bit more complicated, there might + // be a flat maxed out rectangle first, then a + // triangular cutout or reverse; to find these + // keep track of the current x values + var x1old = x1, x2old = x2; + + // clip the y values, without shortcutting, we + // go through all cases in turn + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); + // it goes to (x1, y1), but we fill that below + } + + // fill triangular section, this sometimes result + // in redundant points if (x1, y1) hasn't changed + // from previous line to, but we just ignore that + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); + } + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + x = axisx.p2c(x); + y = axisy.p2c(y) + offset; + if (symbol == "circle") + ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); + else + symbol(ctx, x, y, radius, shadow); + ctx.closePath(); + + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.points.lineWidth, + sw = series.shadowSize, + radius = series.points.radius, + symbol = series.points.symbol; + + // If the user sets the line width to 0, we change it to a very + // small value. A line width of 0 seems to force the default of 1. + // Doing the conditional here allows the shadow setting to still be + // optional even with a lineWidth of 0. + + if( lw == 0 ) + lw = 0.0001; + + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, true, + series.xaxis, series.yaxis, symbol); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, true, + series.xaxis, series.yaxis, symbol); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, false, + series.xaxis, series.yaxis, symbol); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + // in horizontal mode, we start the bar from the left + // instead of from the bottom so it appears to be + // horizontal rather than vertical + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.fillStyle = fillStyleCallback(bottom, top); + c.fillRect(left, top, right - left, bottom - top) + } + + // draw outline + if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom); + if (drawLeft) + c.lineTo(left, top); + else + c.moveTo(left, top); + if (drawTop) + c.lineTo(right, top); + else + c.moveTo(right, top); + if (drawRight) + c.lineTo(right, bottom); + else + c.moveTo(right, bottom); + if (drawBottom) + c.lineTo(left, bottom); + else + c.moveTo(left, bottom); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + + var barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + + if (options.legend.container != null) { + $(options.legend.container).html(""); + } else { + placeholder.find(".legend").remove(); + } + + if (!options.legend.show) { + return; + } + + var fragments = [], entries = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + + // Build a list of legend entries, with each having a label and a color + + for (var i = 0; i < series.length; ++i) { + s = series[i]; + if (s.label) { + label = lf ? lf(s.label, s) : s.label; + if (label) { + entries.push({ + label: label, + color: s.color + }); + } + } + } + + // Sort the legend using either the default or a custom comparator + + if (options.legend.sorted) { + if ($.isFunction(options.legend.sorted)) { + entries.sort(options.legend.sorted); + } else if (options.legend.sorted == "reverse") { + entries.reverse(); + } else { + var ascending = options.legend.sorted != "descending"; + entries.sort(function(a, b) { + return a.label == b.label ? 0 : ( + (a.label < b.label) != ascending ? 1 : -1 // Logical XOR + ); + }); + } + } + + // Generate markup for the list of entries, in their final order + + for (var i = 0; i < entries.length; ++i) { + + var entry = entries[i]; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push(''); + fragments.push(''); + rowStarted = true; + } + + fragments.push( + '
' + + '' + entry.label + '' + ); + } + + if (rowStarted) + fragments.push(''); + + if (fragments.length == 0) + return; + + var table = '' + fragments.join("") + '
'; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('
' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('
').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j, ps; + + for (i = series.length - 1; i >= 0; --i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + ps = s.datapoints.pointsize; + // with inverse transforms, we can't use the maxx/maxy + // optimization, sadly + if (axisx.options.inverseTransform) + maxx = Number.MAX_VALUE; + if (axisy.options.inverseTransform) + maxy = Number.MAX_VALUE; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist < smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + + var barLeft, barRight; + + switch (s.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -s.bars.barWidth; + break; + default: + barLeft = -s.bars.barWidth / 2; + } + + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onMouseLeave(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top, + pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); + + pos.pageX = event.pageX; + pos.pageY = event.pageY; + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && + h.point[0] == item.datapoint[0] && + h.point[1] == item.datapoint[1])) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + var t = options.interaction.redrawOverlayInterval; + if (t == -1) { // skip event queue + drawOverlay(); + return; + } + + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, t); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + overlay.clear(); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + return; + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis, + highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = highlightColor; + var radius = 1.5 * pointRadius; + x = axisx.p2c(x); + y = axisy.p2c(y); + + octx.beginPath(); + if (series.points.symbol == "circle") + octx.arc(x, y, radius, 0, 2 * Math.PI, false); + else + series.points.symbol(octx, x, y, radius, false); + octx.closePath(); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), + fillStyle = highlightColor, + barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + default: + barLeft = -series.bars.barWidth / 2; + } + + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = highlightColor; + + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + var co = $.color.parse(defaultColor); + if (c.brightness != null) + co = co.scale('rgb', c.brightness); + if (c.opacity != null) + co.a *= c.opacity; + c = co.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + // Add the plot function to the top level of the jQuery object + + $.plot = function(placeholder, data, options) { + //var t0 = new Date(); + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); + return plot; + }; + + $.plot.version = "0.8.2"; + + $.plot.plugins = []; + + // Also add the plot function as a chainable property + + $.fn.plot = function(data, options) { + return this.each(function() { + $.plot(this, data, options); + }); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); ADDED Site/Site_J/jquery.js Index: Site/Site_J/jquery.js ================================================================== --- Site/Site_J/jquery.js +++ Site/Site_J/jquery.js @@ -0,0 +1,9111 @@ +/*! + * jQuery JavaScript Library v2.1.0 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-01-23T21:10Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper window is present, + // execute the factory and get jQuery + // For environments that do not inherently posses a window with a document + // (such as Node.js), expose a jQuery-making factory as module.exports + // This accentuates the need for the creation of a real window + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// + +var arr = []; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var trim = "".trim; + +var support = {}; + + + +var + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + version = "2.1.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return a 'clean' array + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return just the object + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + return obj - parseFloat( obj ) >= 0; + }, + + isPlainObject: function( obj ) { + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Support: Firefox <20 + // The try/catch suppresses exceptions thrown when attempting to access + // the "constructor" property of certain host objects, ie. |window.location| + // https://bugzilla.mozilla.org/show_bug.cgi?id=814622 + try { + if ( obj.constructor && + !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + } catch ( e ) { + return false; + } + + // If the function hasn't returned already, we're confident that + // |obj| is a plain object, created by {} or constructed with new Object + return true; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + // Support: Android < 4.0, iOS < 6 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + var script, + indirect = eval; + + code = jQuery.trim( code ); + + if ( code ) { + // If the code includes a valid, prologue position + // strict mode pragma, execute code by injecting a + // script tag into the document. + if ( code.indexOf("use strict") === 1 ) { + script = document.createElement("script"); + script.text = code; + document.head.appendChild( script ).parentNode.removeChild( script ); + } else { + // Otherwise, avoid the DOM node creation, insertion + // and removal by using an indirect global eval + indirect( code ); + } + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + trim: function( text ) { + return text == null ? "" : trim.call( text ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v1.10.16 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-01-13 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + compile, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document (jQuery #6963) + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== strundefined && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, + doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", function() { + setDocument(); + }, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", function() { + setDocument(); + }); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { + div.innerHTML = "
"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8, Opera 10-12 + // Nothing should be selected when empty strings follow ^= or $= or *= + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; + }); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + len = this.length, + ret = [], + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + dir: function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; + }, + + sibling: function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter(function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.unique( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + } +}); + +/** + * The ready event handler and self cleanup method + */ +function completed() { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + jQuery.ready(); +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + } + } + return readyList.promise( obj ); +}; + +// Kick off the DOM ready check even if the user does not +jQuery.ready.promise(); + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + len ? fn( elems[0], key ) : emptyGet; +}; + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( owner ) { + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + /* jshint -W018 */ + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + +function Data() { + // Support: Android < 4, + // Old WebKit does not have Object.preventExtensions/freeze method, + // return new empty object instead with no [[set]] accessor + Object.defineProperty( this.cache = {}, 0, { + get: function() { + return {}; + } + }); + + this.expando = jQuery.expando + Math.random(); +} + +Data.uid = 1; +Data.accepts = jQuery.acceptData; + +Data.prototype = { + key: function( owner ) { + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return the key for a frozen object. + if ( !Data.accepts( owner ) ) { + return 0; + } + + var descriptor = {}, + // Check if the owner object already has a cache key + unlock = owner[ this.expando ]; + + // If not, create one + if ( !unlock ) { + unlock = Data.uid++; + + // Secure it in a non-enumerable, non-writable property + try { + descriptor[ this.expando ] = { value: unlock }; + Object.defineProperties( owner, descriptor ); + + // Support: Android < 4 + // Fallback to a less secure definition + } catch ( e ) { + descriptor[ this.expando ] = unlock; + jQuery.extend( owner, descriptor ); + } + } + + // Ensure the cache object + if ( !this.cache[ unlock ] ) { + this.cache[ unlock ] = {}; + } + + return unlock; + }, + set: function( owner, data, value ) { + var prop, + // There may be an unlock assigned to this node, + // if there is no entry for this "owner", create one inline + // and set the unlock as though an owner entry had always existed + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + // Fresh assignments by object are shallow copied + if ( jQuery.isEmptyObject( cache ) ) { + jQuery.extend( this.cache[ unlock ], data ); + // Otherwise, copy the properties one-by-one to the cache object + } else { + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + } + return cache; + }, + get: function( owner, key ) { + // Either a valid cache is found, or will be created. + // New caches will be created and the unlock returned, + // allowing direct access to the newly created + // empty data object. A valid owner object must be provided. + var cache = this.cache[ this.key( owner ) ]; + + return key === undefined ? + cache : cache[ key ]; + }, + access: function( owner, key, value ) { + var stored; + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ((key && typeof key === "string") && value === undefined) ) { + + stored = this.get( owner, key ); + + return stored !== undefined ? + stored : this.get( owner, jQuery.camelCase(key) ); + } + + // [*]When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, camel, + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + if ( key === undefined ) { + this.cache[ unlock ] = {}; + + } else { + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = key.concat( key.map( jQuery.camelCase ) ); + } else { + camel = jQuery.camelCase( key ); + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key, camel ]; + } else { + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = camel; + name = name in cache ? + [ name ] : ( name.match( rnotwhite ) || [] ); + } + } + + i = name.length; + while ( i-- ) { + delete cache[ name[ i ] ]; + } + } + }, + hasData: function( owner ) { + return !jQuery.isEmptyObject( + this.cache[ owner[ this.expando ] ] || {} + ); + }, + discard: function( owner ) { + if ( owner[ this.expando ] ) { + delete this.cache[ owner[ this.expando ] ]; + } + } +}; +var data_priv = new Data(); + +var data_user = new Data(); + + + +/* + Implementation Summary + + 1. Enforce API surface and semantic compatibility with 1.9.x branch + 2. Improve the module's maintainability by reducing the storage + paths to a single mechanism. + 3. Use the same single mechanism to support "private" and "user" data. + 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) + 5. Avoid exposing implementation details on user objects (eg. expando properties) + 6. Provide a clear path for implementation upgrade to WeakMap in 2014 +*/ +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + data_user.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend({ + hasData: function( elem ) { + return data_user.hasData( elem ) || data_priv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return data_user.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + data_user.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to data_priv methods, these can be deprecated. + _data: function( elem, name, data ) { + return data_priv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + data_priv.remove( elem, name ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = data_user.get( elem ); + + if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + name = attrs[ i ].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + data_priv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + data_user.set( this, key ); + }); + } + + return access( this, function( value ) { + var data, + camelKey = jQuery.camelCase( key ); + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + // Attempt to get data from the cache + // with the key as-is + data = data_user.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to get data from the cache + // with the key camelized + data = data_user.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, camelKey, undefined ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each(function() { + // First, attempt to store a copy or reference of any + // data that might've been store with a camelCased key. + var data = data_user.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + data_user.set( this, camelKey, value ); + + // *... In the case of properties that might _actually_ + // have dashes, we need to also store a copy of that + // unchanged property. + if ( key.indexOf("-") !== -1 && data !== undefined ) { + data_user.set( this, key, value ); + } + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + data_user.remove( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = data_priv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = data_priv.access( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return data_priv.get( elem, key ) || data_priv.access( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + data_priv.remove( elem, [ type + "queue", key ] ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = data_priv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + }; + +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ); + + // #11217 - WebKit loses check when the name is after the checked attribute + div.innerHTML = ""; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE9-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +})(); +var strundefined = typeof undefined; + + + +support.focusinBubbles = "onfocusin" in window; + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.hasData( elem ) && data_priv.get( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + data_priv.remove( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.disabled !== true || event.type !== "click" ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: Cordova 2.5 (WebKit) (#13255) + // All events should have a target; Cordova deviceready doesn't + if ( !event.target ) { + event.target = document; + } + + // Support: Safari 6.0+, Chrome < 28 + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } +}; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + // Support: Android < 4.0 + src.defaultPrevented === undefined && + src.getPreventDefault && src.getPreventDefault() ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && e.preventDefault ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && e.stopPropagation ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// Support: Chrome 15+ +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// Create "bubbling" focus and blur events +// Support: Firefox, Chrome, Safari +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = data_priv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = data_priv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + data_priv.remove( doc, fix ); + + } else { + data_priv.access( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); + + +var + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rhtml = /<|&#?\w+;/, + rnoInnerhtml = /<(?:script|style|link)/i, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /^$|\/(?:java|ecma)script/i, + rscriptTypeMasked = /^true\/(.*)/, + rcleanScript = /^\s*\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + + // Support: IE 9 + option: [ 1, "" ], + + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] + }; + +// Support: IE 9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: 1.x compatibility +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute("type"); + } + + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + data_priv.set( + elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) + ); + } +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( data_priv.hasData( src ) ) { + pdataOld = data_priv.access( src ); + pdataCur = data_priv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( data_user.hasData( src ) ) { + udataOld = data_user.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + data_user.set( dest, udataCur ); + } +} + +function getAll( context, tag ) { + var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : + context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + +// Support: IE >= 9 +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Support: IE >= 9 + // Fix Cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + // Support: QtWebKit + // jQuery.merge because push.apply(_, arraylike) throws + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: QtWebKit + // jQuery.merge because push.apply(_, arraylike) throws + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Fixes #12346 + // Support: Webkit, IE + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; + }, + + cleanData: function( elems ) { + var data, elem, events, type, key, j, + special = jQuery.event.special, + i = 0; + + for ( ; (elem = elems[ i ]) !== undefined; i++ ) { + if ( jQuery.acceptData( elem ) ) { + key = elem[ data_priv.expando ]; + + if ( key && (data = data_priv.cache[ key ]) ) { + events = Object.keys( data.events || {} ); + if ( events.length ) { + for ( j = 0; (type = events[j]) !== undefined; j++ ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + if ( data_priv.cache[ key ] ) { + // Discard any remaining `private` data + delete data_priv.cache[ key ]; + } + } + } + // Discard any remaining `user` data + delete data_user.cache[ elem[ data_user.expando ] ]; + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each(function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + }); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + self.domManip( args, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + // Support: QtWebKit + // jQuery.merge because push.apply(_, arraylike) throws + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because push.apply(_, arraylike) throws + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle ? + + // Use of this method is a temporary fix (more like optmization) until something better comes along, + // since it was removed from specification and supported only in FF + window.getDefaultComputedStyle( elem[ 0 ] ).display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery( "Close + + + ADDED Site/Site_W/jpqplot/docs/files/changes-txt.html Index: Site/Site_W/jpqplot/docs/files/changes-txt.html ================================================================== --- Site/Site_W/jpqplot/docs/files/changes-txt.html +++ Site/Site_W/jpqplot/docs/files/changes-txt.html @@ -0,0 +1,39 @@ + + +Change Log + + + + + + + + + +

0.9.7

  • Added Mekko chart plot type with enhanced legend and axes support.
  • Implemented vertical waterfall charts.  Can create waterfall plot as option to bar chart.  See examples folder of distribution.
  • Enhanced plot labels for waterfall style.
  • Enhanced bar plots so you can now color each bar of a series independently with the “varyBarColor” option.
  • Refactored series drawing so that each series and series shadow drawn on it’s own canvas.  Allows series to be redrawn independently of each other.
  • Added additional default series colors.
  • Aded useNegativeColors option to turn off negative color array and use only seriesColors array to define all bar/filled line colors.
  • Fix css for cursor legend.
  • Modified shape renderer so rectangles can be stroked and filled.
  • Refactored date methods out of dateAxisRenderer so that date formatter and methods can be accesses outside of dateAxisRenderer plugin.
  • Fixed #132, now trigger series change event on plot target instead of drag canvas.
  • Fixes issue #116 where some source files had mix of tabs and spaces for indentation.  Should have been all spaces.
  • Fixed issue #126, some links broken in docs section of web site.
  • Fixed issue #90, trendline plugin incompatibility with pie renderer.
  • Updated samples in examples folder of distribution to include navigation links if web server is set up to process .html files with php.

0.9.6

  • New, easier to use, replot() method for placing plots in tabs, accordions, resizable containers or for changing plot parameters programmatically.
  • Updated legend renderer for pie charts to draw swatches which will print correctly.
  • Fixed issue #118 with patch from taum so autoscale option will honor tickInterval and numberTicks options
  • Fix to plot diameter calculation for initially hidden plots.
  • Added examples for making plots in jQuery UI tabs and accordions.
  • Fixed issue #120 where pie chart with single slice not displaying correctly in IE and Chrome

0.9.5.2

  • Fixed #102 where double clicking on plot that has zoom enabled, but has not been zoomed resulted in error.
  • Fixed bug where candlestick coloring options not working.
  • Added option to turn individual series labels off in the legend.

0.9.5.1

  • Fixed bug where tooltip not working with OHLC and candlestick charts.
  • Added additional marker styles: plus, X and dash.

0.9.5

  • Implemented “zoomProxy”.  zoomProxy allows zooming one plot from another such as an overview plot.
  • Zooming can now be constrained to just x or y axis.
  • Enhanced cursor plugin with vertical “dataTracking” line.  This is a line at the cursor location with a readout of data points at the line location which are displayed in the chart legend.
  • Changed cursor tooltip format string.  Now one format string is used for entire tooptip.
  • Added mechanisms to specify plot size when plot target is hidden or plot height/width otherwise cannot be determined from markup.
  • Added $.jqplot.config object to specify jqplot wide configuraiton options.  These include enablePlugins to globally set the default plugin state on/off and defaultHeight/defaultWidth to specify default plot height/width.
  • Added fillToZero option which forces filled charts to fill to zero as opposed to axis minimum.  Thus negative filled bar/line values will fill upwards to zero axis value.
  • Added option to disable stacking on individual lines.
  • Changed targetId property of the plot object so it now includes a “#” before the id string.
  • Improved tick and body sizing of Open Hi Low Close and candlestick charts.
  • Removed lots of web site related files from the repository.  This means that, if working from the sources, user’s won’t be able to build the jqplot web site and the docs/tests that are hosted on that site.  The minified and compressed distribution packages will build fine.
  • Lots of examples were added to a separate examples directory to better show functionality of jqPlot for local testing with the distribution.
  • Many various bug fixes and other minor enhancements.

0.9.4

  • Implemented axis labels.  Labels can be rendered in div tags or as canvas elements supporting rotated text.
  • Improved rotated axis label positioning so labels will start or end at a tick position.
  • Fixed bug where an empty data series would hang plot rendering.
  • completed issue #66 for misc. improvements to documentation.
  • Fixed issue #64 where the same ID’s were assigned to cursor and highlighter elements.
  • Added option to legend to encode special HTML characters.
  • Fixed undesirable behavior where point labels for points off the plot were being rendered.
  • Added edgeTolerance option to point label renderer to control rendering of labels near plot edges.

0.9.3

  • Preliminary support for axis labels.  Currently rendered into DIV tags, so no ratated label support.  This feature is currently expreimental.
  • Fixed bug #52, needed space in tick div tag between style and class declarations or plot failed in certain application doctypes.
  • Fixed issue #54, miter style line join for chart lines causing spikes at steep changes in slope.  Changed miter style to round.
  • Added examples for new autoscaling algorithm.
  • Fixed bug #57, category axis labels disappear on redraw()
  • Improved algorithm which controlled maximum number of labels that would display on a category axis.
  • Fixed bug #45 where null values causing errors in plotData and gridData.
  • Fixed issue #60 where seriesColors option was not working.

0.9.2

  • Fixed bug #45 where a plot could crash if series had different numbers of points.
  • Fixed issue #50, added option to turn off sorting of series data.
  • Fixed issue #31, implemented a better axis autoscaling algorithm and added an autoscale option.

0.9.1

  • Fixed bug #40, when axis pad, padMax, padMin set to 0, graph would fail to render.
  • Fixed bug #41 where pie and bar charts not rendered correctly on redraw().
  • Fixed bug #11, filled stacked line plots not rendering correctly in IE.
  • Fixed bug #42 where stacked charts not rendering with string date axis ticks.
  • Fixed bug in redraw() method where axes ticks were not reset.
  • Fixed “jqplotPreRedrawEvent” that should have been named “jqplotPostRedraw” event.

0.9.0

  • Added Open Hi Low Close charts, Candlestick charts and Hi Low Close charts.
  • Added support for arbitrary labels on the data points.
  • Enhanced highlighter plugin to allow custom formatting control of entire tooltip.
  • Enhanced highlighter to support multiple y values in a data point.
  • Fixed bug #38 where series with a single point with a negative value would fail.
  • Improvements to examples to show what plugins to include.
  • Expanded documentation for some of the plugins.

0.8.5

  • Added zooming ability with double click or single click options to reset zoom.
  • Modified default tick spacing algorithm for date axes to give more space to ticks.
  • Fixed bug #2 where tickInterval wasn’t working properly.
  • Added neighborThreshold option to control how close mouse must be to point to trigger neighbor detection.
  • Added double click event handler on plot.

0.8.0

  • Support for up to 9 y axes.
  • Added option to control padding at max/min bounds of axes separately.
  • Closed issue #21, added options to control grid line color and width.
  • Closed issue #20, added options to filled line charts to stoke above fill and customize fill color and transparency.
  • Improved structure of on line documentation to make usage and options docs default.
  • Added much documentation on options and css styling.

0.7.1

  • Bug fix release
  • Fixed bug #6, missing semi-colons messing up some javascript compressors.
  • Fixed bug #13 where 2D ticks array of [values, labels] would fail to renderer with DateAxisRenderer.
  • Fixes bug #16 where pie renderer overwriting options for all plot types and crashing non pie plots.
  • Fixes bug #17 constrainTo dragable option mispelled as “contstrainTo”.  Fixed dragable color issue when used with trend lines.

0.7.0

  • Pie chart support
  • Enabled tooltipLocation option in highlighter.
  • Highlighter Tooltip will account for mark size and highlight size when positioning itself.
  • Added ability to show just x, y or both axes in highlighter tooltip.
  • Added customization of separator between axes values in highlighter tooltip.
  • Modified how shadows are drawn for lines, bars and markers.  Now drawn first, so they are always behind the object.
  • Adjustments to shadow parameters on lines to account for new shadow positioning.
  • Added a ColorGenerator class to robustly return next available color for a plot with wrap around to first color at end.
  • Udates to docs about css file.
  • Fixed bug with String x values in series and IE error on sorting (Category Axis).
  • Added cursor changes in dragable plugin when cursor near dragable point.

0.6.6b

  • Added excanvas.js and excanvas.min.js to compressed distributions.
  • Added example/test html pages I had locally into repository and to compressed distributions.

0.6.6a

  • Removed absolute positioning from dom element and put back into css file.
  • Duplicate of 0.6.6 with a suffix to unambiguously differentiate between previously posted 0.6.6 release.

0.6.6

  • Fixed bug #5, trend line plugin failing when no trend line options specified.
  • Added absolute position css spec to axis tick dom element.
  • Enhancement to category axes, more intuitive handling of series with missing data values.

0.6.5

  • Fixed bug #4, series of unequal data length not rendering correctly.  This is a bugfix release only.

0.6.4

  • Fixed bug (issue #1 in tracker) where flat line data series (all x and/or y values are euqal) or single value data series would crash.

0.6.3

  • Support for stacked line (a.k.a. area) and stacked bar (horizontal and vertical) charts.
  • Refactored barRenderer to use default shape and shadow renderers.
  • Added info (contacts & support information) page to web site.

0.6.2

  • This is a minor upgrade to docs and build only.  No functionality has changed.
  • Ant build script generates entire site, examples, tests and distribution.
  • Improvements to documentation.

0.6.1

  • New sprintf implementation from Ash Searle that implements %g.
  • Fix to sprintf e/f formats.
  • Created new format specifier, %p and %P to preserve significance.
  • Modified p/P format to better display larger numbers.
  • Fixed and simplified significant digits calculation for sprintf.
  • Added option to have cursor tooltip follow the mouse or not.
  • Added options to change size of highlight.
  • Updates to handle dates like ‘6-May-09’.
  • Mods to improve look of web site.
  • Updates to documentation.
  • Added license and copyright statement to source files.

0.6.0

  • Added rotated text support.  Uses native canvas text functionality in browsers that support it or draws text on canvas with Hershey font
  • metrics for non-supporting browsers.
  • Removed lots of lint in js code.
  • Moved tick css from js code into css file.
  • Fix to tick positioning css.  y axis ticks were positioned to wrong side of axis div.
  • Refactored axis tick renderer instantiation into the axes renderers themselves.

For chnages prior to 0.6.0 release, please see change log at http://bitbucket.org/cleonello/jqplot/changesets/

+ +
+ + + + + + + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/gpl-2-0-txt.html Index: Site/Site_W/jpqplot/docs/files/gpl-2-0-txt.html ================================================================== --- Site/Site_W/jpqplot/docs/files/gpl-2-0-txt.html +++ Site/Site_W/jpqplot/docs/files/gpl-2-0-txt.html @@ -0,0 +1,39 @@ + + +GPL Version 2 + + + + + + + + + +

GNU GENERAL PUBLIC LICENSE Version 2, June 1991

Copyright © 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your freedom to share and change it.  By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.  This General Public License applies to most of the Free Software Foundation’s software and to any other program whose authors commit to using it.  (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.)  You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price.  Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights.  These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have.  You must make sure that they, too, receive or can get the source code.  And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

Also, for each author’s protection and ours, we want to make certain that everyone understands that there is no warranty for this free software.  If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors’ reputations.

Finally, any free program is threatened constantly by software patents.  We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary.  To prevent this, we have made it clear that any patent must be licensed for everyone’s free use or not licensed at all.

The precise terms and conditions for copying, distribution and modification follow.

GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0.  This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License.  The “Program”, below, refers to any such program or work, and a “work based on the Program” means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language.  (Hereinafter, translation is included without limitation in the term “modification”.)  Each licensee is addressed as “you”.

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope.  The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program).  Whether that is true depends on what the Program does.

1.  You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

2.  You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License.  (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.  But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

3.  You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer to distribute corresponding source code.  (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for making modifications to it.  For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.  However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

4.  You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License.  Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License.  However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

5.  You are not required to accept this License, since you have not signed it.  However, nothing else grants you permission to modify or distribute the Program or its derivative works.  These actions are prohibited by law if you do not accept this License.  Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

6.  Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions.  You may not impose any further restrictions on the recipients’ exercise of the rights granted herein.  You are not responsible for enforcing compliance by third parties to this License.

7.  If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License.  If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all.  For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices.  Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

8.  If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded.  In such case, this License incorporates the limitation as if written in the body of this License.

9.  The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time.  Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Program specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation.  If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

10.  If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission.  For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this.  Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

NO WARRANTY

11.  BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

12.  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+ +
+ + + + + + + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/images/background.jpg Index: Site/Site_W/jpqplot/docs/files/images/background.jpg ================================================================== --- Site/Site_W/jpqplot/docs/files/images/background.jpg +++ Site/Site_W/jpqplot/docs/files/images/background.jpg cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/basicline.png Index: Site/Site_W/jpqplot/docs/files/images/basicline.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/basicline.png +++ Site/Site_W/jpqplot/docs/files/images/basicline.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/basiclogaxis.png Index: Site/Site_W/jpqplot/docs/files/images/basiclogaxis.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/basiclogaxis.png +++ Site/Site_W/jpqplot/docs/files/images/basiclogaxis.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/basiclogoptions.png Index: Site/Site_W/jpqplot/docs/files/images/basiclogoptions.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/basiclogoptions.png +++ Site/Site_W/jpqplot/docs/files/images/basiclogoptions.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/basicoptions.png Index: Site/Site_W/jpqplot/docs/files/images/basicoptions.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/basicoptions.png +++ Site/Site_W/jpqplot/docs/files/images/basicoptions.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/dualaxis.png Index: Site/Site_W/jpqplot/docs/files/images/dualaxis.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/dualaxis.png +++ Site/Site_W/jpqplot/docs/files/images/dualaxis.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/logo.jpg Index: Site/Site_W/jpqplot/docs/files/images/logo.jpg ================================================================== --- Site/Site_W/jpqplot/docs/files/images/logo.jpg +++ Site/Site_W/jpqplot/docs/files/images/logo.jpg cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/navdocs.png Index: Site/Site_W/jpqplot/docs/files/images/navdocs.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/navdocs.png +++ Site/Site_W/jpqplot/docs/files/images/navdocs.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/navdocsover.png Index: Site/Site_W/jpqplot/docs/files/images/navdocsover.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/navdocsover.png +++ Site/Site_W/jpqplot/docs/files/images/navdocsover.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/navdownload.png Index: Site/Site_W/jpqplot/docs/files/images/navdownload.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/navdownload.png +++ Site/Site_W/jpqplot/docs/files/images/navdownload.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/navdownloadover.png Index: Site/Site_W/jpqplot/docs/files/images/navdownloadover.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/navdownloadover.png +++ Site/Site_W/jpqplot/docs/files/images/navdownloadover.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/navexamples.png Index: Site/Site_W/jpqplot/docs/files/images/navexamples.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/navexamples.png +++ Site/Site_W/jpqplot/docs/files/images/navexamples.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/navexamplesover.png Index: Site/Site_W/jpqplot/docs/files/images/navexamplesover.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/navexamplesover.png +++ Site/Site_W/jpqplot/docs/files/images/navexamplesover.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/navhome.png Index: Site/Site_W/jpqplot/docs/files/images/navhome.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/navhome.png +++ Site/Site_W/jpqplot/docs/files/images/navhome.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/navhomeover.png Index: Site/Site_W/jpqplot/docs/files/images/navhomeover.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/navhomeover.png +++ Site/Site_W/jpqplot/docs/files/images/navhomeover.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/new.png Index: Site/Site_W/jpqplot/docs/files/images/new.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/new.png +++ Site/Site_W/jpqplot/docs/files/images/new.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/sample3.png Index: Site/Site_W/jpqplot/docs/files/images/sample3.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/sample3.png +++ Site/Site_W/jpqplot/docs/files/images/sample3.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/images/samplesm.png Index: Site/Site_W/jpqplot/docs/files/images/samplesm.png ================================================================== --- Site/Site_W/jpqplot/docs/files/images/samplesm.png +++ Site/Site_W/jpqplot/docs/files/images/samplesm.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/jqPlotCssStyling-txt.html Index: Site/Site_W/jpqplot/docs/files/jqPlotCssStyling-txt.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqPlotCssStyling-txt.html +++ Site/Site_W/jpqplot/docs/files/jqPlotCssStyling-txt.html @@ -0,0 +1,39 @@ + + +jqPlot CSS Customization + + + + + + + + + +

Much of the styling of jqPlot is done by css.  The jqPlot css file is, unremarkably, jquery.jqplot.css and resides in the same directory as jqPlot itself.

There exist some styling related javascript properties on the plot objects themselves (like fontStyle, fontSize, etc.).  These can be set with the options object at plot creation.  Generally, setting these options is NOT the preferred way to customize the look of the plot.  Use the css file instead.  These options are deprecated and may disappear.  The exceptions are certain background and color options which control attributes of something renderered on a canvas.  This would be line color, grid background, etc.  These must be set by the options object.  For a list of available options, see jqPlot Options.

Objects in the plot that can be customized by css are given a css class like “.jqplot-*”.  For example, the plot title will have a “.jqplot-title” class, the axes “.jqplot-axis”, etc.

Currently assigned classes in jqPlot are as follows:

.jqplot-targetStyles for the plot target div.  These will be cascaded down to all plot elements according to css rules.
.jqplot-axisStyles for all axes
.jqplot-xaxisStyles applied to the primary x axis only.
.jqplot-yaxisStyles applied to the primary y axis only.
.jqplot-x2axis, .jqplot-x3axis, ...Styles applied to the 2nd, 3rd, etc. x axis only.
.jqplot-y2axis, .jqplot-y3axis, ...Styles applied to the 2nd, 3rd, etc.y axis only.
.jqplot-axis-tickStyles applied to all axis ticks
.jqplot-xaxis-tickStyles applied to primary x axis ticks only.
.jqplot-x2axis-tickStyles applied to secondary x axis ticks only.
.jqplot-yaxis-tickStyles applied to primary y axis ticks only.
.jqplot-y2axis-tickStyles applied to secondary y axis ticks only.
table.jqplot-table-legendStyles applied to the legend box table.
.jqplot-titleStyles applied to the title.
.jqplot-cursor-tooltipStyles applied to the cursor tooltip
.jqplot-highlighter-tooltipStyles applied to the highlighter tooltip.
div.jqplot-table-legend-swatchthe div element used for the colored swatch on the legend.

Note that axes will be assigned 2 classes like: class=”.jqplot-axis .jqplot-xaxis”.

+ +
+ + + + + + + + + + +
This document is out of date.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqPlotOptions-txt.html Index: Site/Site_W/jpqplot/docs/files/jqPlotOptions-txt.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqPlotOptions-txt.html +++ Site/Site_W/jpqplot/docs/files/jqPlotOptions-txt.html @@ -0,0 +1,292 @@ + + +jqPlot Options + + + + + + + + + +

This document is out of date.  While the options described here should still be relavent and valid, it has not been updated for many new options.  Sorry for this inconvenience.

This document describes the options available to jqPlot.  These are set with the third argument to the $.jqplot(‘target’, data, options) function.  Options are using the following convention:

property: default, // notes

This document is not complete!  Not all options are shown!  Also, Options marked with * in the notes are post 0.7.1 additions.  They will be available in the next release.  Further information about the options can be found in the online API documentation.  For details on how the options relate to the API documentation, see the Options Tutorial in the optionsTutorial.txt file.

options =
+{
+    seriesColors: [ "#4bb2c5", "#c5b47f", "#EAA228", "#579575", "#839557", "#958c12",
+        "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc"],  // colors that will
+         // be assigned to the series.  If there are more series than colors, colors
+         // will wrap around and start at the beginning again.
+
+    stackSeries: false, // if true, will create a stack plot.
+                        // Currently supported by line and bar graphs.
+
+    title: '',      // Title for the plot.  Can also be specified as an object like:
+
+    title: {
+        text: '',   // title for the plot,
+        show: true,
+    },
+
+    axesDefaults: {
+        show: false,    // wether or not to renderer the axis.  Determined automatically.
+        min: null,      // minimum numerical value of the axis.  Determined automatically.
+        max: null,      // maximum numverical value of the axis.  Determined automatically.
+        pad: 1.2,       // a factor multiplied by the data range on the axis to give the
+                        // axis range so that data points don't fall on the edges of the axis.
+        ticks: [],      // a 1D [val1, val2, ...], or 2D [[val, label], [val, label], ...]
+                        // array of ticks to use.  Computed automatically.
+        numberTicks: undefined,
+        renderer: $.jqplot.LinearAxisRenderer,  // renderer to use to draw the axis,
+        rendererOptions: {},    // options to pass to the renderer.  LinearAxisRenderer
+                                // has no options,
+        tickOptions: {
+            mark: 'outside',    // Where to put the tick mark on the axis
+                                // 'outside', 'inside' or 'cross',
+            showMark: true,
+            showGridline: true, // wether to draw a gridline (across the whole grid) at this tick,
+            markSize: 4,        // length the tick will extend beyond the grid in pixels.  For
+                                // 'cross', length will be added above and below the grid boundary,
+            show: true,         // wether to show the tick (mark and label),
+            showLabel: true,    // wether to show the text label at the tick,
+            formatString: '',   // format string to use with the axis tick formatter
+        }
+        showTicks: true,        // wether or not to show the tick labels,
+        showTickMarks: true,    // wether or not to show the tick marks
+    },
+
+    axes: {
+        xaxis: {
+            // same options as axesDefaults
+        },
+        yaxis: {
+            // same options as axesDefaults
+        },
+        x2axis: {
+            // same options as axesDefaults
+        },
+        y2axis: {
+            // same options as axesDefaults
+        }
+    },
+
+    seriesDefaults: {
+        show: true,     // wether to render the series.
+        xaxis: 'xaxis', // either 'xaxis' or 'x2axis'.
+        yaxis: 'yaxis', // either 'yaxis' or 'y2axis'.
+        label: '',      // label to use in the legend for this line.
+        color: '',      // CSS color spec to use for the line.  Determined automatically.
+        lineWidth: 2.5, // Width of the line in pixels.
+        shadow: true,   // show shadow or not.
+        shadowAngle: 45,    // angle (degrees) of the shadow, clockwise from x axis.
+        shadowOffset: 1.25, // offset from the line of the shadow.
+        shadowDepth: 3,     // Number of strokes to make when drawing shadow.  Each
+                            // stroke offset by shadowOffset from the last.
+        shadowAlpha: 0.1,   // Opacity of the shadow.
+        showLine: true,     // whether to render the line segments or not.
+        showMarker: true,   // render the data point markers or not.
+        fill: false,        // fill under the line,
+        fillAndStroke: false,       // *stroke a line at top of fill area.
+        fillColor: undefined,       // *custom fill color for filled lines (default is line color).
+        fillAlpha: undefined,       // *custom alpha to apply to fillColor.
+        renderer: $.jqplot.LineRenderer],    // renderer used to draw the series.
+        rendererOptions: {}, // options passed to the renderer.  LineRenderer has no options.
+        markerRenderer: $.jqplot.MarkerRenderer,    // renderer to use to draw the data
+                                                    // point markers.
+        markerOptions: {
+            show: true,             // wether to show data point markers.
+            style: 'filledCircle',  // circle, diamond, square, filledCircle.
+                                    // filledDiamond or filledSquare.
+            lineWidth: 2,       // width of the stroke drawing the marker.
+            size: 9,            // size (diameter, edge length, etc.) of the marker.
+            color: '#666666'    // color of marker, set to color of line by default.
+            shadow: true,       // wether to draw shadow on marker or not.
+            shadowAngle: 45,    // angle of the shadow.  Clockwise from x axis.
+            shadowOffset: 1,    // offset from the line of the shadow,
+            shadowDepth: 3,     // Number of strokes to make when drawing shadow.  Each stroke
+                                // offset by shadowOffset from the last.
+            shadowAlpha: 0.07   // Opacity of the shadow
+        }
+    },
+
+    series:[
+        {Each series has same options as seriesDefaults},
+        {You can override each series individually here}
+    ],
+
+    legend: {
+        show: false,
+        location: 'ne',     // compass direction, nw, n, ne, e, se, s, sw, w.
+        xoffset: 12,        // pixel offset of the legend box from the x (or x2) axis.
+        yoffset: 12,        // pixel offset of the legend box from the y (or y2) axis.
+    },
+
+    grid: {
+        drawGridLines: true,        // wether to draw lines across the grid or not.
+        gridLineColor: '#cccccc'    // *Color of the grid lines.
+        background: '#fffdf6',      // CSS color spec for background color of grid.
+        borderColor: '#999999',     // CSS color spec for border around grid.
+        borderWidth: 2.0,           // pixel width of border around grid.
+        shadow: true,               // draw a shadow for grid.
+        shadowAngle: 45,            // angle of the shadow.  Clockwise from x axis.
+        shadowOffset: 1.5,          // offset from the line of the shadow.
+        shadowWidth: 3,             // width of the stroke for the shadow.
+        shadowDepth: 3,             // Number of strokes to make when drawing shadow.
+                                    // Each stroke offset by shadowOffset from the last.
+        shadowAlpha: 0.07           // Opacity of the shadow
+        renderer: $.jqplot.CanvasGridRenderer,  // renderer to use to draw the grid.
+        rendererOptions: {}         // options to pass to the renderer.  Note, the default
+                                    // CanvasGridRenderer takes no additional options.
+    },
+
+    // Plugin and renderer options.
+
+    // BarRenderer.
+    // With BarRenderer, you can specify additional options in the rendererOptions object
+    // on the series or on the seriesDefaults object.  Note, some options are respecified
+    // (like shadowDepth) to override lineRenderer defaults from which BarRenderer inherits.
+
+    seriesDefaults: {
+        rendererOptions: {
+            barPadding: 8,      // number of pixels between adjacent bars in the same
+                                // group (same category or bin).
+            barMargin: 10,      // number of pixels between adjacent groups of bars.
+            barDirection: 'vertical', // vertical or horizontal.
+            barWidth: null,     // width of the bars.  null to calculate automatically.
+            shadowOffset: 2,    // offset from the bar edge to stroke the shadow.
+            shadowDepth: 5,     // nuber of strokes to make for the shadow.
+            shadowAlpha: 0.8,   // transparency of the shadow.
+        }
+    },
+
+    // Cursor
+    // Options are passed to the cursor plugin through the "cursor" object at the top
+    // level of the options object.
+
+    cursor: {
+        style: 'crosshair',     // A CSS spec for the cursor type to change the
+                                // cursor to when over plot.
+        show: true,
+        showTooltip: true,      // show a tooltip showing cursor position.
+        followMouse: false,     // wether tooltip should follow the mouse or be stationary.
+        tooltipLocation: 'se',  // location of the tooltip either relative to the mouse
+                                // (followMouse=true) or relative to the plot.  One of
+                                // the compass directions, n, ne, e, se, etc.
+        tooltipOffset: 6,       // pixel offset of the tooltip from the mouse or the axes.
+        showTooltipGridPosition: false,     // show the grid pixel coordinates of the mouse
+                                            // in the tooltip.
+        showTooltipUnitPosition: true,      // show the coordinates in data units of the mouse
+                                            // in the tooltip.
+        tooltipFormatString: '%.4P',    // sprintf style format string for tooltip values.
+        useAxesFormatters: true,        // wether to use the same formatter and formatStrings
+                                        // as used by the axes, or to use the formatString
+                                        // specified on the cursor with sprintf.
+        tooltipAxesGroups: [],  // show only specified axes groups in tooltip.  Would specify like:
+                                // [['xaxis', 'yaxis'], ['xaxis', 'y2axis']].  By default, all axes
+                                // combinations with for the series in the plot are shown.
+
+    },
+
+    // Dragable
+    // Dragable options are specified with the "dragable" object at the top level
+    // of the options object.
+
+    dragable: {
+        color: undefined,       // custom color to use for the dragged point and dragged line
+                                // section. default will use a transparent variant of the line color.
+        constrainTo: 'none',    // Constrain dragging motion to an axis: 'x', 'y', or 'none'.
+    },
+
+    // Highlighter
+    // Highlighter options are specified with the "highlighter" object at the top level
+    // of the options object.
+
+    highlighter: {
+        lineWidthAdjust: 2.5,   // pixels to add to the size line stroking the data point marker
+                                // when showing highlight.  Only affects non filled data point markers.
+        sizeAdjust: 5,          // pixels to add to the size of filled markers when drawing highlight.
+        showTooltip: true,      // show a tooltip with data point values.
+        tooltipLocation: 'nw',  // location of tooltip: n, ne, e, se, s, sw, w, nw.
+        fadeTooltip: true,      // use fade effect to show/hide tooltip.
+        tooltipFadeSpeed: "fast"// slow, def, fast, or a number of milliseconds.
+        tooltipOffset: 2,       // pixel offset of tooltip from the highlight.
+        tooltipAxes: 'both',    // which axis values to display in the tooltip, x, y or both.
+        tooltipSeparator: ', '  // separator between values in the tooltip.
+        useAxesFormatters: true // use the same format string and formatters as used in the axes to
+                                // display values in the tooltip.
+        tooltipFormatString: '%.5P' // sprintf format string for the tooltip.  only used if
+                                    // useAxesFormatters is false.  Will use sprintf formatter with
+                                    // this string, not the axes formatters.
+    },
+
+    // LogAxisRenderer
+    // LogAxisRenderer add 2 options to the axes object.  These options are specified directly on
+    // the axes or axesDefaults object.
+
+    axesDefaults: {
+        base: 10,                   // the logarithmic base.
+        tickDistribution: 'even',   // 'even' or 'power'.  'even' will produce with even visiual (pixel)
+                                    // spacing on the axis.  'power' will produce ticks spaced by
+                                    // increasing powers of the log base.
+    },
+
+    // PieRenderer
+    // PieRenderer accepts options from the rendererOptions object of the series or seriesDefaults object.
+
+    seriesDefaults: {
+        rendererOptions: {
+            diameter: undefined, // diameter of pie, auto computed by default.
+            padding: 20,        // padding between pie and neighboring legend or plot margin.
+            sliceMargin: 0,     // gap between slices.
+            fill: true,         // render solid (filled) slices.
+            shadowOffset: 2,    // offset of the shadow from the chart.
+            shadowDepth: 5,     // Number of strokes to make when drawing shadow.  Each stroke
+                                // offset by shadowOffset from the last.
+            shadowAlpha: 0.07   // Opacity of the shadow
+        }
+    },
+
+    // Trendline
+    // Trendline takes options on the trendline object of the series or seriesDefaults object.
+
+    seriesDefaults: {
+        trendline: {
+            show: true,         // show the trend line
+            color: '#666666',   // CSS color spec for the trend line.
+            label: '',          // label for the trend line.
+            type: 'linear',     // 'linear', 'exponential' or 'exp'
+            shadow: true,       // show the trend line shadow.
+            lineWidth: 1.5,     // width of the trend line.
+            shadowAngle: 45,    // angle of the shadow.  Clockwise from x axis.
+            shadowOffset: 1.5,  // offset from the line of the shadow.
+            shadowDepth: 3,     // Number of strokes to make when drawing shadow.
+                                // Each stroke offset by shadowOffset from the last.
+            shadowAlpha: 0.07   // Opacity of the shadow
+        }
+    }
+}
+ +
+ + + + + + + + + + +
This document will help you understand how jqPlot’s options relate to the API documentation and the jqPlot object itself.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-axisLabelRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-axisLabelRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-axisLabelRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-axisLabelRenderer-js.html @@ -0,0 +1,47 @@ + + +$.jqplot.AxisLabelRenderer + + + + + + + + + +

Renderer to place labels on the axes.

Summary
$.jqplot.AxisLabelRendererRenderer to place labels on the axes.
Properties
showwether or not to show the tick (mark and label).
labelThe text or html for the label.
escapeHTMLtrue to escape HTML entities in the label.
+ +

Properties

+ +

show

this.show = true

wether or not to show the tick (mark and label).

+ +

label

this.label = ''

The text or html for the label.

+ +

escapeHTML

this.escapeHTML = false

true to escape HTML entities in the label.

+ +
+ + + + + + + + + + +
this.show = true
wether or not to show the tick (mark and label).
this.label = ''
The text or html for the label.
this.escapeHTML = false
true to escape HTML entities in the label.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-axisTickRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-axisTickRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-axisTickRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-axisTickRenderer-js.html @@ -0,0 +1,69 @@ + + +$.jqplot.AxisTickRenderer + + + + + + + + + +

A “tick” object showing the value of a tick/gridline on the plot.

Summary
$.jqplot.AxisTickRendererA “tick” object showing the value of a tick/gridline on the plot.
Properties
marktick mark on the axis.
showMarkwether or not to show the mark on the axis.
showGridlinewether or not to draw the gridline on the grid at this tick.
isMinorTickif this is a minor tick.
sizeLength of the tick beyond the grid in pixels.
markSizeLength of the tick marks in pixels.
showwether or not to show the tick (mark and label).
showLabelwether or not to show the label.
formatterA class of a formatter for the tick text.
prefixstring appended to the tick label if no formatString is specified.
formatStringstring passed to the formatter.
fontFamilycss spec for the font-family css attribute.
fontSizecss spec for the font-size css attribute.
textColorcss spec for the color attribute.
+ +

Properties

+ +

mark

this.mark = 'outside'

tick mark on the axis.  One of ‘inside’, ‘outside’, ‘cross’, ‘’ or null.

+ +

showMark

this.showMark = true

wether or not to show the mark on the axis.

+ +

showGridline

this.showGridline = true

wether or not to draw the gridline on the grid at this tick.

+ +

isMinorTick

this.isMinorTick = false

if this is a minor tick.

+ +

size

this.size = 4

Length of the tick beyond the grid in pixels.  DEPRECATED: This has been superceeded by markSize

+ +

markSize

this.markSize = 6

Length of the tick marks in pixels.  For ‘cross’ style, length will be stoked above and below axis, so total length will be twice this.

+ +

show

this.show = true

wether or not to show the tick (mark and label).  Setting this to false requires more testing.  It is recommended to set showLabel and showMark to false instead.

+ +

showLabel

this.showLabel = true

wether or not to show the label.

+ +

formatter

this.formatter = $.jqplot.DefaultTickFormatter

A class of a formatter for the tick text.  sprintf by default.

+ +

prefix

this.prefix = ''

string appended to the tick label if no formatString is specified.

+ +

formatString

this.formatString = ''

string passed to the formatter.

+ +

fontFamily

this.fontFamily

css spec for the font-family css attribute.

+ +

fontSize

this.fontSize

css spec for the font-size css attribute.

+ +

textColor

this.textColor

css spec for the color attribute.

+ +
+ + + + + + + + + + +
this.mark = 'outside'
tick mark on the axis.
this.showMark = true
wether or not to show the mark on the axis.
this.showGridline = true
wether or not to draw the gridline on the grid at this tick.
this.isMinorTick = false
if this is a minor tick.
this.size = 4
Length of the tick beyond the grid in pixels.
this.markSize = 6
Length of the tick marks in pixels.
this.show = true
wether or not to show the tick (mark and label).
this.showLabel = true
wether or not to show the label.
this.formatter = $.jqplot.DefaultTickFormatter
A class of a formatter for the tick text.
this.prefix = ''
string appended to the tick label if no formatString is specified.
this.formatString = ''
string passed to the formatter.
this.fontFamily
css spec for the font-family css attribute.
this.fontSize
css spec for the font-size css attribute.
this.textColor
css spec for the color attribute.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-canvasGridRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-canvasGridRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-canvasGridRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-canvasGridRenderer-js.html @@ -0,0 +1,39 @@ + + +$.jqplot.CanvasGridRenderer + + + + + + + + + +

The default jqPlot grid renderer, creating a grid on a canvas element.  The renderer has no additional options beyond the Grid class.

+ +
+ + + + + + + + + + +
Object representing the grid on which the plot is drawn.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-core-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-core-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-core-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-core-js.html cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/files/jqplot-divTitleRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-divTitleRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-divTitleRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-divTitleRenderer-js.html @@ -0,0 +1,39 @@ + + +$.jqplot.DivTitleRenderer + + + + + + + + + +

The default title renderer for jqPlot.  This class has no options beyond the Title class.

+ +
+ + + + + + + + + + +
Plot Title object.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-lineRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-lineRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-lineRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-lineRenderer-js.html @@ -0,0 +1,53 @@ + + +$.jqplot.LineRenderer + + + + + + + + + +

The default line renderer for jqPlot, this class has no options beyond the Series class.  Draws series as a line.

Summary
$.jqplot.LineRendererThe default line renderer for jqPlot, this class has no options beyond the Series class.
Properties
highlightMouseOverTrue to highlight area on a filled plot when moused over.
highlightMouseDownTrue to highlight when a mouse button is pressed over an area on a filled plot.
highlightColorcolor to use when highlighting an area on a filled plot.
Functions
setGridDataconverts the user data values to grid coordinates and stores them in the gridData array.
makeGridDataconverts any arbitrary data values to grid coordinates and returns them.
+ +

Properties

+ +

highlightMouseOver

this.highlightMouseOver = true

True to highlight area on a filled plot when moused over.  This must be false to enable highlightMouseDown to highlight when clicking on an area on a filled plot.

+ +

highlightMouseDown

this.highlightMouseDown = false

True to highlight when a mouse button is pressed over an area on a filled plot.  This will be disabled if highlightMouseOver is true.

+ +

highlightColor

this.highlightColor = null

color to use when highlighting an area on a filled plot.

+ +

Functions

+ +

setGridData

$.jqplot.LineRenderer.prototype.setGridData = function(plot)

converts the user data values to grid coordinates and stores them in the gridData array.  Called with scope of a series.

+ +

makeGridData

$.jqplot.LineRenderer.prototype.makeGridData = function(data,
plot)

converts any arbitrary data values to grid coordinates and returns them.  This method exists so that plugins can use a series’ linerenderer to generate grid data points without overwriting the grid data associated with that series.  Called with scope of a series.

+ +
+ + + + + + + + + + +
An individual data series object.
this.highlightMouseOver = true
True to highlight area on a filled plot when moused over.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over an area on a filled plot.
this.highlightColor = null
color to use when highlighting an area on a filled plot.
$.jqplot.LineRenderer.prototype.setGridData = function(plot)
converts the user data values to grid coordinates and stores them in the gridData array.
$.jqplot.LineRenderer.prototype.makeGridData = function(data,
plot)
converts any arbitrary data values to grid coordinates and returns them.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-linearAxisRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-linearAxisRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-linearAxisRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-linearAxisRenderer-js.html @@ -0,0 +1,39 @@ + + +$.jqplot.LinearAxisRenderer + + + + + + + + + +

The default jqPlot axis renderer, creating a numeric axis.  The renderer has no additional options beyond the Axis object.

+ +
+ + + + + + + + + + +
An individual axis object.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-markerRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-markerRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-markerRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-markerRenderer-js.html @@ -0,0 +1,65 @@ + + +$.jqplot.MarkerRenderer + + + + + + + + + +

The default jqPlot marker renderer, rendering the points on the line.

Summary
$.jqplot.MarkerRendererThe default jqPlot marker renderer, rendering the points on the line.
Properties
showwether or not to show the marker.
styleOne of diamond, circle, square, x, plus, dash, filledDiamond, filledCircle, filledSquare
lineWidthsize of the line for non-filled markers.
sizeSize of the marker (diameter or circle, length of edge of square, etc.)
colorcolor of marker.
shadowwether or not to draw a shadow on the line
shadowAngleShadow angle in degrees
shadowOffsetShadow offset from line in pixels
shadowDepthNumber of times shadow is stroked, each stroke offset shadowOffset from the last.
shadowAlphaAlpha channel transparency of shadow.
shadowRendererRenderer that will draws the shadows on the marker.
shapeRendererRenderer that will draw the marker.
+ +

Properties

+ +

show

this.show = true

wether or not to show the marker.

+ +

style

this.style = 'filledCircle'

One of diamond, circle, square, x, plus, dash, filledDiamond, filledCircle, filledSquare

+ +

lineWidth

this.lineWidth = 2

size of the line for non-filled markers.

+ +

size

this.size = 9.0

Size of the marker (diameter or circle, length of edge of square, etc.)

+ +

color

this.color = '#666666'

color of marker.  Will be set to color of series by default on init.

+ +

shadow

this.shadow = true

wether or not to draw a shadow on the line

+ +

shadowAngle

this.shadowAngle = 45

Shadow angle in degrees

+ +

shadowOffset

this.shadowOffset = 1

Shadow offset from line in pixels

+ +

shadowDepth

this.shadowDepth = 3

Number of times shadow is stroked, each stroke offset shadowOffset from the last.

+ +

shadowAlpha

this.shadowAlpha = '0.07'

Alpha channel transparency of shadow.  0 = transparent.

+ +

shadowRenderer

this.shadowRenderer = new $.jqplot.ShadowRenderer()

Renderer that will draws the shadows on the marker.

+ +

shapeRenderer

this.shapeRenderer = new $.jqplot.ShapeRenderer()

Renderer that will draw the marker.

+ +
+ + + + + + + + + + +
this.show = true
wether or not to show the marker.
this.style = 'filledCircle'
One of diamond, circle, square, x, plus, dash, filledDiamond, filledCircle, filledSquare
this.lineWidth = 2
size of the line for non-filled markers.
this.size = 9.0
Size of the marker (diameter or circle, length of edge of square, etc.)
this.color = '#666666'
color of marker.
this.shadow = true
wether or not to draw a shadow on the line
this.shadowAngle = 45
Shadow angle in degrees
this.shadowOffset = 1
Shadow offset from line in pixels
this.shadowDepth = 3
Number of times shadow is stroked, each stroke offset shadowOffset from the last.
this.shadowAlpha = '0.07'
Alpha channel transparency of shadow.
this.shadowRenderer = new $.jqplot.ShadowRenderer()
Renderer that will draws the shadows on the marker.
this.shapeRenderer = new $.jqplot.ShapeRenderer()
Renderer that will draw the marker.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-shadowRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-shadowRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-shadowRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-shadowRenderer-js.html @@ -0,0 +1,61 @@ + + +$.jqplot.shadowRenderer + + + + + + + + + +

The default jqPlot shadow renderer, rendering shadows behind shapes.

Summary
$.jqplot.shadowRendererThe default jqPlot shadow renderer, rendering shadows behind shapes.
Properties
angleAngle of the shadow in degrees.
offsetPixel offset at the given shadow angle of each shadow stroke from the last stroke.
alphaalpha transparency of shadow stroke.
lineWidthwidth of the shadow line stroke.
lineJoinHow line segments of the shadow are joined.
lineCaphow ends of the shadow line are rendered.
fillwhether to fill the shape.
depthhow many times the shadow is stroked.
isarcwether the shadow is an arc or not.
drawdraws an transparent black (i.e.
+ +

Properties

+ +

angle

this.angle = 45

Angle of the shadow in degrees.  Measured counter-clockwise from the x axis.

+ +

offset

this.offset = 1

Pixel offset at the given shadow angle of each shadow stroke from the last stroke.

+ +

alpha

this.alpha = 0.07

alpha transparency of shadow stroke.

+ +

lineWidth

this.lineWidth = 1.5

width of the shadow line stroke.

+ +

lineJoin

this.lineJoin = 'miter'

How line segments of the shadow are joined.

+ +

lineCap

this.lineCap = 'round'

how ends of the shadow line are rendered.

+ +

fill

this.fill = false

whether to fill the shape.

+ +

depth

this.depth = 3

how many times the shadow is stroked.  Each stroke will be offset by offset at angle degrees.

+ +

isarc

this.isarc = false

wether the shadow is an arc or not.

+ +

draw

$.jqplot.ShadowRenderer.prototype.draw = function(ctx,
points,
options)

draws an transparent black (i.e. gray) shadow.

ctxcanvas drawing context
pointsarray of points or [x, y, radius, start angle (rad), end angle (rad)]
+ +
+ + + + + + + + + + +
this.angle = 45
Angle of the shadow in degrees.
this.offset = 1
Pixel offset at the given shadow angle of each shadow stroke from the last stroke.
this.alpha = 0.07
alpha transparency of shadow stroke.
this.lineWidth = 1.5
width of the shadow line stroke.
this.lineJoin = 'miter'
How line segments of the shadow are joined.
this.lineCap = 'round'
how ends of the shadow line are rendered.
this.fill = false
whether to fill the shape.
this.depth = 3
how many times the shadow is stroked.
this.isarc = false
wether the shadow is an arc or not.
$.jqplot.ShadowRenderer.prototype.draw = function(ctx,
points,
options)
draws an transparent black (i.e.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-shapeRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-shapeRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-shapeRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-shapeRenderer-js.html @@ -0,0 +1,63 @@ + + +$.jqplot.shapeRenderer + + + + + + + + + +

The default jqPlot shape renderer.  Given a set of points will plot them and either stroke a line (fill = false) or fill them (fill = true).  If a filled shape is desired, closePath = true must also be set to close the shape.

Summary
$.jqplot.shapeRendererThe default jqPlot shape renderer.
Properties
lineJoinHow line segments of the shadow are joined.
lineCaphow ends of the shadow line are rendered.
fillwhether to fill the shape.
isarcwether the shadow is an arc or not.
fillRecttrue to draw shape as a filled rectangle.
strokeRecttrue to draw shape as a stroked rectangle.
clearRecttrue to cear a rectangle.
strokeStylecss color spec for the stoke style
fillStylecss color spec for the fill style.
Functions
drawdraws the shape.
+ +

Properties

+ +

lineJoin

this.lineJoin = 'miter'

How line segments of the shadow are joined.

+ +

lineCap

this.lineCap = 'round'

how ends of the shadow line are rendered.

+ +

fill

this.fill = false

whether to fill the shape.

+ +

isarc

this.isarc = false

wether the shadow is an arc or not.

+ +

fillRect

this.fillRect = false

true to draw shape as a filled rectangle.

+ +

strokeRect

this.strokeRect = false

true to draw shape as a stroked rectangle.

+ +

clearRect

this.clearRect = false

true to cear a rectangle.

+ +

strokeStyle

this.strokeStyle = '#999999'

css color spec for the stoke style

+ +

fillStyle

this.fillStyle = '#999999'

css color spec for the fill style.

+ +

Functions

+ +

draw

$.jqplot.ShapeRenderer.prototype.draw = function(ctx,
points,
options)

draws the shape.

ctxcanvas drawing context
pointsarray of points for shapes or [x, y, width, height] for rectangles or [x, y, radius, start angle (rad), end angle (rad)] for circles and arcs.
+ +
+ + + + + + + + + + +
this.lineJoin = 'miter'
How line segments of the shadow are joined.
this.lineCap = 'round'
how ends of the shadow line are rendered.
this.fill = false
whether to fill the shape.
this.isarc = false
wether the shadow is an arc or not.
this.fillRect = false
true to draw shape as a filled rectangle.
this.strokeRect = false
true to draw shape as a stroked rectangle.
this.clearRect = false
true to cear a rectangle.
this.strokeStyle = '#999999'
css color spec for the stoke style
this.fillStyle = '#999999'
css color spec for the fill style.
$.jqplot.ShapeRenderer.prototype.draw = function(ctx,
points,
options)
draws the shape.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/jqplot-themeEngine-js.html Index: Site/Site_W/jpqplot/docs/files/jqplot-themeEngine-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/jqplot-themeEngine-js.html +++ Site/Site_W/jpqplot/docs/files/jqplot-themeEngine-js.html @@ -0,0 +1,190 @@ + + +$.jqplot.ThemeEngine + + + + + + + + + +

Theme Engine provides a programatic way to change some of the more common jqplot styling options such as fonts, colors and grid options.  A theme engine instance is created with each plot.  The theme engine manages a collection of themes which can be modified, added to, or applied to the plot.

The themeEngine class is not instantiated directly.  When a plot is initialized, the current plot options are scanned an a default theme named “Default” is created.  This theme is used as the basis for other themes added to the theme engine and is always available.

A theme is a simple javascript object with styling parameters for various entities of the plot.  A theme has the form:

{
+    _name:f "Default",
+    target: {
+        backgroundColor: "transparent"
+    },
+    legend: {
+        textColor: null,
+        fontFamily: null,
+        fontSize: null,
+        border: null,
+        background: null
+    },
+    title: {
+        textColor: "rgb(102, 102, 102)",
+        fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif",
+        fontSize: "19.2px",
+        textAlign: "center"
+    },
+    seriesStyles: {},
+    series: [{
+        color: "#4bb2c5",
+        lineWidth: 2.5,
+        shadow: true,
+        fillColor: "#4bb2c5",
+        showMarker: true,
+        markerOptions: {
+            color: "#4bb2c5",
+            show: true,
+            style: 'filledCircle',
+            lineWidth: 1.5,
+            size: 4,
+            shadow: true
+        }
+    }],
+    grid: {
+        drawGridlines: true,
+        gridLineColor: "#cccccc",
+        gridLineWidth: 1,
+        backgroundColor: "#fffdf6",
+        borderColor: "#999999",
+        borderWidth: 2,
+        shadow: true
+    },
+    axesStyles: {
+        label: {},
+        ticks: {}
+    },
+    axes: {
+        xaxis: {
+            borderColor: "#999999",
+            borderWidth: 2,
+            ticks: {
+                show: true,
+                showGridline: true,
+                showLabel: true,
+                showMark: true,
+                size: 4,
+                textColor: "",
+                whiteSpace: "nowrap",
+                fontSize: "12px",
+                fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif"
+            },
+            label: {
+                textColor: "rgb(102, 102, 102)",
+                whiteSpace: "normal",
+                fontSize: "14.6667px",
+                fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif",
+                fontWeight: "400"
+            }
+        },
+        yaxis: {
+            borderColor: "#999999",
+            borderWidth: 2,
+            ticks: {
+                show: true,
+                showGridline: true,
+                showLabel: true,
+                showMark: true,
+                size: 4,
+                textColor: "",
+                whiteSpace: "nowrap",
+                fontSize: "12px",
+                fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif"
+            },
+            label: {
+                textColor: null,
+                whiteSpace: null,
+                fontSize: null,
+                fontFamily: null,
+                fontWeight: null
+            }
+        },
+        x2axis: {...
+        },
+        ...
+        y9axis: {...
+        }
+    }
+}

”seriesStyles” is a style object that will be applied to all series in the plot.  It will forcibly override any styles applied on the individual series.  “axesStyles” is a style object that will be applied to all axes in the plot.  It will also forcibly override any styles on the individual axes.

The example shown above has series options for a line series.  Options for other series types are shown below:

Bar Series

{
+    color: "#4bb2c5",
+    seriesColors: ["#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"],
+    lineWidth: 2.5,
+    shadow: true,
+    barPadding: 2,
+    barMargin: 10,
+    barWidth: 15.09375,
+    highlightColors: ["rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)"]
+}

Pie Series

{
+    seriesColors: ["#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"],
+    padding: 20,
+    sliceMargin: 0,
+    fill: true,
+    shadow: true,
+    startAngle: 0,
+    lineWidth: 2.5,
+    highlightColors: ["rgb(129,201,214)", "rgb(240,189,104)", "rgb(214,202,165)", "rgb(137,180,158)", "rgb(168,180,137)", "rgb(180,174,89)", "rgb(180,113,161)", "rgb(129,141,236)", "rgb(227,205,120)", "rgb(255,138,76)", "rgb(76,169,219)", "rgb(215,126,190)", "rgb(220,232,135)", "rgb(200,167,96)", "rgb(103,202,235)", "rgb(208,154,215)"]
+}

Funnel Series

{
+    color: "#4bb2c5",
+    lineWidth: 2,
+    shadow: true,
+    padding: {
+        top: 20,
+        right: 20,
+        bottom: 20,
+        left: 20
+    },
+    sectionMargin: 6,
+    seriesColors: ["#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"],
+    highlightColors: ["rgb(147,208,220)", "rgb(242,199,126)", "rgb(220,210,178)", "rgb(154,191,172)", "rgb(180,191,154)", "rgb(191,186,112)", "rgb(191,133,174)", "rgb(147,157,238)", "rgb(231,212,139)", "rgb(255,154,102)", "rgb(102,181,224)", "rgb(221,144,199)", "rgb(225,235,152)", "rgb(200,167,96)", "rgb(124,210,238)", "rgb(215,169,221)"]
+}
Summary
$.jqplot.ThemeEngineTheme Engine provides a programatic way to change some of the more common jqplot styling options such as fonts, colors and grid options.
Properties
themeshash of themes managed by the theme engine.
activeThemePointer to currently active theme
methods
getGet and return the named theme or the active theme if no name given.
getThemeNamesReturn the list of theme names in this manager in alpha-numerical order.
getThemesReturn a list of themes in alpha-numerical order by name.
removeRemove the given theme from the themeEngine.
newThemeCreate a new theme based on the default theme, adding it the themeEngine.
renameRename a theme.
copyCreate a copy of an existing theme in the themeEngine, adding it the themeEngine.
+ +

Properties

+ +

themes

this.themes = {}

hash of themes managed by the theme engine.  Indexed by theme name.

+ +

activeTheme

this.activeTheme=null

Pointer to currently active theme

+ +

methods

+ +

get

$.jqplot.ThemeEngine.prototype.get = function(name)

Get and return the named theme or the active theme if no name given.

parameter

namename of theme to get.

returns

Theme instance of given name.

+ +

getThemeNames

$.jqplot.ThemeEngine.prototype.getThemeNames = function()

Return the list of theme names in this manager in alpha-numerical order.

parameter

None

returns

A the list of theme names in this manager in alpha-numerical order.

+ +

getThemes

$.jqplot.ThemeEngine.prototype.getThemes = function()

Return a list of themes in alpha-numerical order by name.

parameter

None

returns

A list of themes in alpha-numerical order by name.

+ +

remove

$.jqplot.ThemeEngine.prototype.remove = function(name)

Remove the given theme from the themeEngine.

parameters

namename of the theme to remove.

returns

true on success, false on failure.

+ +

newTheme

$.jqplot.ThemeEngine.prototype.newTheme = function(name,
obj)

Create a new theme based on the default theme, adding it the themeEngine.

parameters

namename of the new theme.
objoptional object of styles to be applied to this new theme.

returns

new Theme object.

+ +

rename

$.jqplot.ThemeEngine.prototype.rename = function (oldName,
newName)

Rename a theme.

parameters

oldNamecurrent name of the theme.
newNamedesired name of the theme.

returns

new Theme object.

+ +

copy

$.jqplot.ThemeEngine.prototype.copy = function (sourceName,
targetName,
obj)

Create a copy of an existing theme in the themeEngine, adding it the themeEngine.

parameters

sourceNamename of the existing theme.
targetNamename of the copy.
objoptional object of style parameter to apply to the new theme.

returns

new Theme object.

+ +
+ + + + + + + + + + +
this.themes = {}
hash of themes managed by the theme engine.
this.activeTheme=null
Pointer to currently active theme
$.jqplot.ThemeEngine.prototype.get = function(name)
Get and return the named theme or the active theme if no name given.
$.jqplot.ThemeEngine.prototype.getThemeNames = function()
Return the list of theme names in this manager in alpha-numerical order.
$.jqplot.ThemeEngine.prototype.getThemes = function()
Return a list of themes in alpha-numerical order by name.
$.jqplot.ThemeEngine.prototype.remove = function(name)
Remove the given theme from the themeEngine.
$.jqplot.ThemeEngine.prototype.newTheme = function(name,
obj)
Create a new theme based on the default theme, adding it the themeEngine.
$.jqplot.ThemeEngine.prototype.rename = function (oldName,
newName)
Rename a theme.
$.jqplot.ThemeEngine.prototype.copy = function (sourceName,
targetName,
obj)
Create a copy of an existing theme in the themeEngine, adding it the themeEngine.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/optionsTutorial-txt.html Index: Site/Site_W/jpqplot/docs/files/optionsTutorial-txt.html ================================================================== --- Site/Site_W/jpqplot/docs/files/optionsTutorial-txt.html +++ Site/Site_W/jpqplot/docs/files/optionsTutorial-txt.html @@ -0,0 +1,119 @@ + + +Options Tutorial + + + + + + + + + +

This document will help you understand how jqPlot’s options relate to the API documentation and the jqPlot object itself.  For a listing of options available to jqPlot, see jqPlot Options in the jqPlotOptions.txt file.

The key to effectively using jqPlot is understanding jqPlot’s options.  The online documentation is API documentation.  While it explains what attributes and methods various objects posses, it doesn’t explain how to use or set those attributes through options.  This tutorial will help explain that.

Lets assume you are creating a plot like this:

chart = $.jqplot('chart', dataSeries, optionsObj);

First, note that you shouldn’t try to directly set attributes on the “chart” object (like chart.grid.shadow) after your call to $.jqplot().  At best this won’t do anything **(see below).  You should pass options in via the “optionsObj”.

the optionsObj really represents the plot object (jqPlot object, not to be confused with the $.jqplot function which will create a jqPlot object).  Attributes you specify on that object will be merged with attributes in the jqPlot object.  The axes, legend, series, etc. are attributes on the jqPlot object.  The jqPlot/optionsObj object looks something like (only some attributes shown):

jqPlot-|
+       |-seriesColors
+       |-textColor
+       |-fontFamily
+       |-fontSize
+       |-stackSeries
+       |-series(Array)-|
+       |               |-Series1-|
+       |               |         |-lineWidth
+       |               |         |-shadow
+       |               |         |-showLine
+       |               |         |-showMarker
+       |               |         |-color
+       |               |-Series2...
+       |               |-...
+       |               |-SeriesN
+       |
+       |-grid(Object)-|
+       |              |-drawGridLines
+       |              |-background
+       |              |-borderColor
+       |              |-borderWidth
+       |              |-shadow
+       |
+       |-title(Object)-|
+       |               |-text
+       |               |-show
+       |               |-fontFamily
+       |               |-fontSize
+       |               |-textAlign
+       |               |-textColor
+       |
+       |-axes(Object)-|
+       |              |-xais-|
+       |              |      |-min
+       |              |      |-max
+       |              |      |-numberTicks
+       |              |      |-showTicks
+       |              |      |-showTickMarks
+       |              |      |-pad
+       |
+       | ... and so on

The optionsObj should follow the same construction as if it were a jqPlot object (with some exceptions/shortcuts I’ll mention in a moment).  So generally, when you see something like “this.drawGridLines” in the grid properties in the docs, just replace “this” with “grid” in your options object.  So it becomes optionsObj.grid.drawGridLines.  Do likewise with the other objects in the plot, replacing “this”, with the respective attribute on the plot like “legend” or “title”.  Series and Axes are handled a little different, because series is an array and axes has 4 distinct children “xaxis”, “yaxis”, “x2axis” and “y2axis”.

So, to remove the shadow from the grid and change the grid border size you would do:

optionObj = {grid:{shadow:false, borderWidth:9.0}};

To do the same as above but also make all the text in the plot red you would do:

optionObj = {
+   textColor:"#ff0000",
+   grid:{shadow:false, borderWidth:9.0}
+}

Here is a more deeply nested example.  Say you want to specify a min and max on your y axis and use a specific color for your second series.  That would look like:

optionsObj = {
+   axes:{yaxis:{min:5, max:230}},
+   series:[{},{color:"#33ff66"}]
+}

Note that series options are an array in order of the series data you sent in to your plot.  To get to the second series, you have to put an object (even if empty) in place of the first series.

There is a handy shortcut to assign options to all axes or all series at one go.  Use axesDefaults and seriesDefaults.  So, if you wanted both x and y axes to start at 0 and you wanted all series to not show markers, you could do:

optionsObj = {axesDefaults:{min:0}, seriesDefaults:{showMarker:false}}

Another shortcut is for the plot title.  Normally, you would assign options to the title as an object.  If you specify a title option as a string, it will assign that to the title.text property automatically.  So these two are equivalent:

optionsObj = {title:{text:"My Plot"}}

and

optionsObj = {title:"My Plot"}

Where things need more explaination is with renderers, plugins and their options.  Briefly, what’s renderer, what’s a plugin.

A renderer is an object that is used to draw something and gets attached to an existing object in the plot in order to draw it.  A plugin does more than just provide drawing functionality to an object.  It will do more like calculate a trend line, change the cursor, provide event driven functionality, etc.  I consider renderers plugins, but plugins don’t have to be renderers.

So, how do you use renderers, plugins, and specify their options?  Some common renderes are for bar charts and category axes.  If you want to render your series as a bar chart with each set of bars showing up in a category on the x axis, you do:

optionsObj = {
+   seriesDefaults:{renderer:$.jqplot.BarRenderer},
+   axes:{xaxis:{renderer:$.jqplot.CategoryAxisRenderer}}
+}

This replaces the default renderer used for all series in the plot with a bar renderer and the x axis default renderer (but not any other axis) with a category renderer.

Now, how would I assign options to those renderers?  The renderer’s attributes may not be present in the pre-existing jqPlot object, they may be specific to the renderer.  This is done through the “rendererOptions” option on the appropriate object.  So, if I wanted my bars to be 25 pixels wide, I would do:

optionsObj = {
+   seriesDefaults:{
+       renderer:$.jqplot.BarRenderer},
+       rendererOptions:{
+           barWidth:25
+       },
+   axes:{xaxis:{renderer:$.jqplot.CategoryAxisRenderer}}
+}

Again, this is using the “seriesDefaults” option, which will apply options to all series in the plot.  You could do the same on any particular series in the plot through the “series” options array.

Plugins are free to add their own options.  For example, the highlighter plugin has it’s own set of options that are unique to it.  As a result, it responds to options placed in the “highlighter” attribute of your options object.  So, if I wanted to change the highlighter tooltip to fade in and out slowly and be positioned directly above the point I’m highlighting:

optionsObj = {
+    highlighter:{tooltipFadeSpeed:'slow', tooltipLocation:'n'}
+}

Other plugins, like dragable and trendlines, add their options in with the series.  This is because both of those plugins can have different options for different series in the plot.  So, if you wanted to specify the color of the dragable and constrain it to drag only on the x axis as well as specify the color of the trend line you could do:

series:[{
+    dragable: {
+        color: '#ff3366',
+        constrainTo: 'x'
+    },
+    trendline: {
+        color: '#cccccc'
+    }
+}]

This would apply those options to the first series only.  If you had 2 series and wanted to turn off dragging and trend lines on the second series, you could do:

series:[{
+    dragable: {
+        color: '#ff3366',
+        constrainTo: 'x'
+    },
+    trendline: {
+        color: '#cccccc'
+    }
+}, {
+   isDragable: false,
+   trendline:{
+       show: false
+   }
+}]

Note, series dragability is turned off with the “isDragable” option directly on the series itself, not with a suboption of “dragable”.  This may be improved in the future.

I hope this is helpful.  A few key points to remember:

  • When you see “this” in the api docs, you generally replace it with the name of the object (in lowercase) you are looking at in your options object.
  • seriesDefaults and axesDefaults are convenient shortcuts.
  • to assign options to a renderer, generally use the “rendererOptions”
  • plugins may add their own options attribute, like “highlighter” or “cursor”.

** Note: you can set attributes after the plot is created (like plot.grid.shadow = false), but you’ll have to issue the appropriate calls to possibly reinitialize and redraw the plot.  jqPlot can definitely handle this to change the plot after creation (this is how the dragable plugin updates the plot data and the trend line plugin recomputes itself when data changes).  This hasn’t been documented yet, however.

+ +
+ + + + + + + + + + +
This document is out of date.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-BezierCurveRenderer-js.html @@ -0,0 +1,45 @@ + + +$.jqplot.BezierCurveRenderer.js + + + + + + + + + +

Renderer which draws lines as stacked bezier curves.  Data for the line will not be specified as an array of [x, y] data point values, but as a an array of [start piont, bezier curve] So, the line is specified as: [[xstart, ystart], [cp1x, cp1y, cp2x, cp2y, xend, yend]].

Summary
$.jqplot.BezierCurveRenderer.jsRenderer which draws lines as stacked bezier curves.
Functions
setGridDataconverts the user data values to grid coordinates and stores them in the gridData array.
makeGridDataconverts any arbitrary data values to grid coordinates and returns them.
+ +

Functions

+ +

setGridData

$.jqplot.BezierCurveRenderer.prototype.setGridData = function(plot)

converts the user data values to grid coordinates and stores them in the gridData array.  Called with scope of a series.

+ +

makeGridData

$.jqplot.BezierCurveRenderer.prototype.makeGridData = function(data,
plot)

converts any arbitrary data values to grid coordinates and returns them.  This method exists so that plugins can use a series’ linerenderer to generate grid data points without overwriting the grid data associated with that series.  Called with scope of a series.

+ +
+ + + + + + + + + + +
$.jqplot.BezierCurveRenderer.prototype.setGridData = function(plot)
converts the user data values to grid coordinates and stores them in the gridData array.
$.jqplot.BezierCurveRenderer.prototype.makeGridData = function(data,
plot)
converts any arbitrary data values to grid coordinates and returns them.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-barRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-barRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-barRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-barRenderer-js.html @@ -0,0 +1,67 @@ + + +$.jqplot.BarRenderer + + + + + + + + + +

A plugin renderer for jqPlot to draw a bar plot.  Draws series as a line.

Summary
$.jqplot.BarRendererA plugin renderer for jqPlot to draw a bar plot.
Properties
barPaddingNumber of pixels between adjacent bars at the same axis value.
barMarginNumber of pixels between groups of bars at adjacent axis values.
barDirection‘vertical’ = up and down bars, ‘horizontal’ = side to side bars
barWidthWidth of the bar in pixels (auto by devaul).
shadowOffsetoffset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
shadowDepthnumber of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
shadowAlphatransparency of the shadow (0 = transparent, 1 = opaque)
waterfalltrue to enable waterfall plot.
groupsgroup bars into this many groups
varyBarColortrue to color each bar of a series separately rather than have every bar of a given series the same color.
highlightMouseOverTrue to highlight slice when moused over.
highlightMouseDownTrue to highlight when a mouse button is pressed over a slice.
highlightColorsan array of colors to use when highlighting a bar.
+ +

Properties

+ +

barPadding

this.barPadding = 8

Number of pixels between adjacent bars at the same axis value.

+ +

barMargin

this.barMargin = 10

Number of pixels between groups of bars at adjacent axis values.

+ +

barDirection

this.barDirection = 'vertical'

’vertical’ = up and down bars, ‘horizontal’ = side to side bars

+ +

barWidth

this.barWidth = null

Width of the bar in pixels (auto by devaul).  null = calculated automatically.

+ +

shadowOffset

this.shadowOffset = 2

offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.

+ +

shadowDepth

this.shadowDepth = 5

number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.

+ +

shadowAlpha

this.shadowAlpha = 0.08

transparency of the shadow (0 = transparent, 1 = opaque)

+ +

waterfall

this.waterfall = false

true to enable waterfall plot.

+ +

groups

this.groups = 1

group bars into this many groups

+ +

varyBarColor

this.varyBarColor = false

true to color each bar of a series separately rather than have every bar of a given series the same color.  If used for non-stacked multiple series bar plots, user should specify a separate ‘seriesColors’ array for each series.  Otherwise, each series will set their bars to the same color array.  This option has no Effect for stacked bar charts and is disabled.

+ +

highlightMouseOver

this.highlightMouseOver = true

True to highlight slice when moused over.  This must be false to enable highlightMouseDown to highlight when clicking on a slice.

+ +

highlightMouseDown

this.highlightMouseDown = false

True to highlight when a mouse button is pressed over a slice.  This will be disabled if highlightMouseOver is true.

+ +

highlightColors

this.highlightColors = []

an array of colors to use when highlighting a bar.

+ +
+ + + + + + + + + + +
this.barPadding = 8
Number of pixels between adjacent bars at the same axis value.
this.barMargin = 10
Number of pixels between groups of bars at adjacent axis values.
this.barDirection = 'vertical'
‘vertical’ = up and down bars, ‘horizontal’ = side to side bars
this.barWidth = null
Width of the bar in pixels (auto by devaul).
this.shadowOffset = 2
offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowAlpha = 0.08
transparency of the shadow (0 = transparent, 1 = opaque)
this.waterfall = false
true to enable waterfall plot.
this.groups = 1
group bars into this many groups
this.varyBarColor = false
true to color each bar of a series separately rather than have every bar of a given series the same color.
this.highlightMouseOver = true
True to highlight slice when moused over.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a slice.
this.highlightColors = []
an array of colors to use when highlighting a bar.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-blockRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-blockRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-blockRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-blockRenderer-js.html @@ -0,0 +1,53 @@ + + +$.jqplot.BlockRenderer + + + + + + + + + +

Plugin renderer to draw a x-y block chart.  A Block chart has data points displayed as colored squares with a text label inside.  Data must be supplied in the form:

[[x1, y1, "label 1", {css}], [x2, y2, "label 2", {css}], ...]

The label and css object are optional.  If the label is ommitted, the box will collapse unless a css height and/or width is specified.

The css object is an object specifying css properties such as:

{background:'#4f98a5', border:'3px solid gray', padding:'1px'}

Note that css properties specified with the data point override defaults specified with the series.

Summary
$.jqplot.BlockRendererPlugin renderer to draw a x-y block chart.
Properties
cssdefault css styles that will be applied to all data blocks.
escapeHtmltrue to escape html in the box label.
insertBreakstrue to turn spaces in data block label into html breaks <br />.
varyBlockColorstrue to vary the color of each block in this series according to the seriesColors array.
Methods
moveBlockMoves an individual block.
+ +

Properties

+ +

css

this.css = {padding:'2px', border:'1px solid #999', textAlign:'center'}

default css styles that will be applied to all data blocks. these values will be overridden by css styles supplied with the individulal data points.

+ +

escapeHtml

this.escapeHtml = false

true to escape html in the box label.

+ +

insertBreaks

this.insertBreaks = true

true to turn spaces in data block label into html breaks <br />.

+ +

varyBlockColors

this.varyBlockColors = false

true to vary the color of each block in this series according to the seriesColors array.  False to set each block to the color specified on this series.  This has no effect if a css background color option is specified in the renderer css options.

+ +

Methods

+ +

moveBlock

this.moveBlock = function (idx,
x,
y,
duration)

Moves an individual block.  More efficient than redrawing the whole series by calling plot.drawSeries().  Properties: idx - the 0 based index of the block or point in this series. x - the x coordinate in data units (value on x axis) to move the block to. y - the y coordinate in data units (value on the y axis) to move the block to. duration - optional parameter to create an animated movement.  Can be a number (higher is slower animation) or ‘fast’, ‘normal’ or ‘slow’.  If not provided, the element is moved without any animation.

+ +
+ + + + + + + + + + +
this.css = {padding:'2px', border:'1px solid #999', textAlign:'center'}
default css styles that will be applied to all data blocks.
this.escapeHtml = false
true to escape html in the box label.
this.insertBreaks = true
true to turn spaces in data block label into html breaks br /.
this.varyBlockColors = false
true to vary the color of each block in this series according to the seriesColors array.
this.moveBlock = function (idx,
x,
y,
duration)
Moves an individual block.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-bubbleRenderer-js.html @@ -0,0 +1,71 @@ + + +$.jqplot.BubbleRenderer + + + + + + + + + +

Plugin renderer to draw a bubble chart.  A Bubble chart has data points displayed as colored circles with an optional text label inside.  To use the bubble renderer, you must include the bubble renderer like:

<script language="javascript" type="text/javascript" src="../src/plugins/jqplot.bubbleRenderer.js"></script>

Data must be supplied in the form:

[[x1, y1, r1, <label or {label:'text', color:color}>], ...]

where the label or options object is optional.

Note that all bubble colors will be the same unless the “varyBubbleColors” option is set to true.  Colors can be specified in the data array or in the seriesColors array option on the series.  If no colors are defined, the default jqPlot series of 16 colors are used.  Colors are automatically cycled around again if there are more bubbles than colors.

Bubbles are autoscaled by default to fit within the chart area while maintaining relative sizes.  If the “autoscaleBubbles” option is set to false, the r(adius) values in the data array a treated as literal pixel values for the radii of the bubbles.

Properties are passed into the bubble renderer in the rendererOptions object of the series options like:

seriesDefaults: {
+    renderer: $.jqplot.BubbleRenderer,
+    rendererOptions: {
+        bubbleAlpha: 0.7,
+        varyBubbleColors: false
+    }
+}
Summary
$.jqplot.BubbleRendererPlugin renderer to draw a bubble chart.
Properties
varyBubbleColorsTrue to vary the color of each bubble in this series according to the seriesColors array.
autoscaleBubblesTrue to scale the bubble radius based on plot size.
autoscaleMultiplierMultiplier the bubble size if autoscaleBubbles is true.
autoscalePointsFactorFactor which decreases bubble size based on how many bubbles on on the chart.
escapeHtmlTrue to escape html in bubble label text.
highlightMouseOverTrue to highlight bubbles when moused over.
highlightMouseDownTrue to highlight when a mouse button is pressed over a bubble.
highlightColorsAn array of colors to use when highlighting a slice.
bubbleAlphaAlpha transparency to apply to all bubbles in this series.
highlightAlphaAlpha transparency to apply when highlighting bubble.
bubbleGradientsTrue to color the bubbles with gradient fills instead of flat colors.
showLabelsTrue to show labels on bubbles (if any), false to not show.
+ +

Properties

+ +

varyBubbleColors

this.varyBubbleColors = true

True to vary the color of each bubble in this series according to the seriesColors array.  False to set each bubble to the color specified on this series.  This has no effect if a css background color option is specified in the renderer css options.

+ +

autoscaleBubbles

this.autoscaleBubbles = true

True to scale the bubble radius based on plot size.  False will use the radius value as provided as a raw pixel value for bubble radius.

+ +

autoscaleMultiplier

this.autoscaleMultiplier = 1.0

Multiplier the bubble size if autoscaleBubbles is true.

+ +

autoscalePointsFactor

this.autoscalePointsFactor = -0.07

Factor which decreases bubble size based on how many bubbles on on the chart.  0 means no adjustment for number of bubbles.  Negative values will decrease size of bubbles as more bubbles are added.  Values between 0 and -0.2 should work well.

+ +

escapeHtml

this.escapeHtml = true

True to escape html in bubble label text.

+ +

highlightMouseOver

this.highlightMouseOver = true

True to highlight bubbles when moused over.  This must be false to enable highlightMouseDown to highlight when clicking on a slice.

+ +

highlightMouseDown

this.highlightMouseDown = false

True to highlight when a mouse button is pressed over a bubble.  This will be disabled if highlightMouseOver is true.

+ +

highlightColors

this.highlightColors = []

An array of colors to use when highlighting a slice.  Calculated automatically if not supplied.

+ +

bubbleAlpha

this.bubbleAlpha = 1.0

Alpha transparency to apply to all bubbles in this series.

+ +

highlightAlpha

this.highlightAlpha = null

Alpha transparency to apply when highlighting bubble.  Set to value of bubbleAlpha by default.

+ +

bubbleGradients

this.bubbleGradients = false

True to color the bubbles with gradient fills instead of flat colors.  NOT AVAILABLE IN IE due to lack of excanvas support for radial gradient fills. will be ignored in IE.

+ +

showLabels

this.showLabels = true

True to show labels on bubbles (if any), false to not show.

+ +
+ + + + + + + + + + +
this.varyBubbleColors = true
True to vary the color of each bubble in this series according to the seriesColors array.
this.autoscaleBubbles = true
True to scale the bubble radius based on plot size.
this.autoscaleMultiplier = 1.0
Multiplier the bubble size if autoscaleBubbles is true.
this.autoscalePointsFactor = -0.07
Factor which decreases bubble size based on how many bubbles on on the chart.
this.escapeHtml = true
True to escape html in bubble label text.
this.highlightMouseOver = true
True to highlight bubbles when moused over.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a bubble.
this.highlightColors = []
An array of colors to use when highlighting a slice.
this.bubbleAlpha = 1.0
Alpha transparency to apply to all bubbles in this series.
this.highlightAlpha = null
Alpha transparency to apply when highlighting bubble.
this.bubbleGradients = false
True to color the bubbles with gradient fills instead of flat colors.
this.showLabels = true
True to show labels on bubbles (if any), false to not show.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html @@ -0,0 +1,63 @@ + + +$.jqplot.CanvasAxisLabelRenderer + + + + + + + + + +

Renderer to draw axis labels with a canvas element to support advanced featrues such as rotated text.  This renderer uses a separate rendering engine to draw the text on the canvas.  Two modes of rendering the text are available.  If the browser has native font support for canvas fonts (currently Mozila 3.5 and Safari 4), you can enable text rendering with the canvas fillText method.  You do so by setting the “enableFontSupport” option to true.

Browsers lacking native font support will have the text drawn on the canvas using the Hershey font metrics.  Even if the “enableFontSupport” option is true non-supporting browsers will still render with the Hershey font.

Summary
$.jqplot.CanvasAxisLabelRendererRenderer to draw axis labels with a canvas element to support advanced featrues such as rotated text.
Properties
angleangle of text, measured clockwise from x axis.
showwether or not to show the tick (mark and label).
showLabelwether or not to show the label.
labellabel for the axis.
fontFamilyCSS spec for the font-family css attribute.
fontSizeCSS spec for font size.
fontWeight
fontStretchMultiplier to condense or expand font width.
textColorcss spec for the color attribute.
enableFontSupporttrue to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.
pt2pxPoint to pixel scaling factor, used for computing height of bounding box around a label.
+ +

Properties

+ +

angle

this.angle = 0

angle of text, measured clockwise from x axis.

+ +

show

this.show = true

wether or not to show the tick (mark and label).

+ +

showLabel

this.showLabel = true

wether or not to show the label.

+ +

label

this.label = ''

label for the axis.

+ +

fontFamily

this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'

CSS spec for the font-family css attribute.  Applies only to browsers supporting native font rendering in the canvas tag.  Currently Mozilla 3.5 and Safari 4.

+ +

fontSize

this.fontSize = '11pt'

CSS spec for font size.

+ +

fontWeight

this.fontWeight = 'normal'
CSS spec for fontWeight: normal, bold, bolder, lighter or a number 100900
+ +

fontStretch

this.fontStretch = 1.0

Multiplier to condense or expand font width.  Applies only to browsers which don’t support canvas native font rendering.

+ +

textColor

this.textColor = '#666666'

css spec for the color attribute.

+ +

enableFontSupport

this.enableFontSupport = true

true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.  If true, label will be drawn with canvas tag native support for fonts.  If false, label will be drawn with Hershey font metrics.

+ +

pt2px

this.pt2px = null

Point to pixel scaling factor, used for computing height of bounding box around a label.  The labels text renderer has a default setting of 1.4, which should be suitable for most fonts.  Leave as null to use default.  If tops of letters appear clipped, increase this.  If bounding box seems too big, decrease.  This is an issue only with the native font renderering capabilities of Mozilla 3.5 and Safari 4 since they do not provide a method to determine the font height.

+ +
+ + + + + + + + + + +
this.angle = 0
angle of text, measured clockwise from x axis.
this.show = true
wether or not to show the tick (mark and label).
this.showLabel = true
wether or not to show the label.
this.label = ''
label for the axis.
this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'
CSS spec for the font-family css attribute.
this.fontSize = '11pt'
CSS spec for font size.
this.fontWeight = 'normal'
this.fontStretch = 1.0
Multiplier to condense or expand font width.
this.textColor = '#666666'
css spec for the color attribute.
this.enableFontSupport = true
true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.
this.pt2px = null
Point to pixel scaling factor, used for computing height of bounding box around a label.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html @@ -0,0 +1,79 @@ + + +$.jqplot.CanvasAxisTickRenderer + + + + + + + + + +

Renderer to draw axis ticks with a canvas element to support advanced featrues such as rotated text.  This renderer uses a separate rendering engine to draw the text on the canvas.  Two modes of rendering the text are available.  If the browser has native font support for canvas fonts (currently Mozila 3.5 and Safari 4), you can enable text rendering with the canvas fillText method.  You do so by setting the “enableFontSupport” option to true.

Browsers lacking native font support will have the text drawn on the canvas using the Hershey font metrics.  Even if the “enableFontSupport” option is true non-supporting browsers will still render with the Hershey font.

Summary
$.jqplot.CanvasAxisTickRendererRenderer to draw axis ticks with a canvas element to support advanced featrues such as rotated text.
Properties
marktick mark on the axis.
showMarkwether or not to show the mark on the axis.
showGridlinewether or not to draw the gridline on the grid at this tick.
isMinorTickif this is a minor tick.
angleangle of text, measured clockwise from x axis.
markSizeLength of the tick marks in pixels.
showwether or not to show the tick (mark and label).
showLabelwether or not to show the label.
labelPosition‘auto’, ‘start’, ‘middle’ or ‘end’.
formatterA class of a formatter for the tick text.
formatStringstring passed to the formatter.
prefixstring appended to the tick label if no formatString is specified.
fontFamilycss spec for the font-family css attribute.
fontSizeCSS spec for font size.
fontWeightCSS spec for fontWeight
fontStretchMultiplier to condense or expand font width.
textColorcss spec for the color attribute.
enableFontSupporttrue to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.
pt2pxPoint to pixel scaling factor, used for computing height of bounding box around a label.
+ +

Properties

+ +

mark

this.mark = 'outside'

tick mark on the axis.  One of ‘inside’, ‘outside’, ‘cross’, ‘’ or null.

+ +

showMark

this.showMark = true

wether or not to show the mark on the axis.

+ +

showGridline

this.showGridline = true

wether or not to draw the gridline on the grid at this tick.

+ +

isMinorTick

this.isMinorTick = false

if this is a minor tick.

+ +

angle

this.angle = 0

angle of text, measured clockwise from x axis.

+ +

markSize

this.markSize = 4

Length of the tick marks in pixels.  For ‘cross’ style, length will be stoked above and below axis, so total length will be twice this.

+ +

show

this.show = true

wether or not to show the tick (mark and label).

+ +

showLabel

this.showLabel = true

wether or not to show the label.

+ +

labelPosition

this.labelPosition = 'auto'

’auto’, ‘start’, ‘middle’ or ‘end’.  Whether tick label should be positioned so the start, middle, or end of the tick mark.

+ +

formatter

this.formatter = $.jqplot.DefaultTickFormatter

A class of a formatter for the tick text.  The default $.jqplot.DefaultTickFormatter uses sprintf.

+ +

formatString

this.formatString = ''

string passed to the formatter.

+ +

prefix

this.prefix = ''

string appended to the tick label if no formatString is specified.

+ +

fontFamily

this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'

css spec for the font-family css attribute.

+ +

fontSize

this.fontSize = '10pt'

CSS spec for font size.

+ +

fontWeight

this.fontWeight = 'normal'

CSS spec for fontWeight

+ +

fontStretch

this.fontStretch = 1.0

Multiplier to condense or expand font width.  Applies only to browsers which don’t support canvas native font rendering.

+ +

textColor

this.textColor = '#666666'

css spec for the color attribute.

+ +

enableFontSupport

this.enableFontSupport = true

true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.  If true, tick label will be drawn with canvas tag native support for fonts.  If false, tick label will be drawn with Hershey font metrics.

+ +

pt2px

this.pt2px = null

Point to pixel scaling factor, used for computing height of bounding box around a label.  The labels text renderer has a default setting of 1.4, which should be suitable for most fonts.  Leave as null to use default.  If tops of letters appear clipped, increase this.  If bounding box seems too big, decrease.  This is an issue only with the native font renderering capabilities of Mozilla 3.5 and Safari 4 since they do not provide a method to determine the font height.

+ +
+ + + + + + + + + + +
this.mark = 'outside'
tick mark on the axis.
this.showMark = true
wether or not to show the mark on the axis.
this.showGridline = true
wether or not to draw the gridline on the grid at this tick.
this.isMinorTick = false
if this is a minor tick.
this.angle = 0
angle of text, measured clockwise from x axis.
this.markSize = 4
Length of the tick marks in pixels.
this.show = true
wether or not to show the tick (mark and label).
this.showLabel = true
wether or not to show the label.
this.labelPosition = 'auto'
‘auto’, ‘start’, ‘middle’ or ‘end’.
this.formatter = $.jqplot.DefaultTickFormatter
A class of a formatter for the tick text.
this.formatString = ''
string passed to the formatter.
this.prefix = ''
string appended to the tick label if no formatString is specified.
this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'
css spec for the font-family css attribute.
this.fontSize = '10pt'
CSS spec for font size.
this.fontWeight = 'normal'
CSS spec for fontWeight
this.fontStretch = 1.0
Multiplier to condense or expand font width.
this.textColor = '#666666'
css spec for the color attribute.
this.enableFontSupport = true
true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.
this.pt2px = null
Point to pixel scaling factor, used for computing height of bounding box around a label.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-categoryAxisRenderer-js.html @@ -0,0 +1,46 @@ + + +$.jqplot.CategoryAxisRenderer + + + + + + + + + +

A plugin for jqPlot to render a category style axis, with equal pixel spacing between y data values of a series.

To use this renderer, include the plugin in your source

<script type="text/javascript" language="javascript" src="plugins/jqplot.categoryAxisRenderer.js"></script>

and supply the appropriate options to your plot

{axes:{xaxis:{renderer:$.jqplot.CategoryAxisRenderer}}}
Summary
$.jqplot.CategoryAxisRendererA plugin for jqPlot to render a category style axis, with equal pixel spacing between y data values of a series.
Properties
sortMergedLabelsTrue to sort tick labels when labels are created by merging x axis values from multiple series.
tickRendererA class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
+ +

Properties

+ +

sortMergedLabels

this.sortMergedLabels = false

True to sort tick labels when labels are created by merging x axis values from multiple series.  That is, say you have two series like:

line1 = [[2006, 4],            [2008, 9], [2009, 16]];
+line2 = [[2006, 3], [2007, 7], [2008, 6]];

If no label array is specified, tick labels will be collected from the x values of the series.  With sortMergedLabels set to true, tick labels will be:

[2006, 2007, 2008, 2009]

With sortMergedLabels set to false, tick labels will be:

[2006, 2008, 2009, 2007]

Note, this property is specified on the renderOptions for the axes when creating a plot:

axes:{xaxis:{renderer:$.jqplot.CategoryAxisRenderer, rendererOptions:{sortMergedLabels:true}}}
+ +

tickRenderer

A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer. this.tickRenderer = $.jqplot.AxisTickRenderer; this.labelRenderer = $.jqplot.AxisLabelRenderer;

+ +
+ + + + + + + + + + +
this.sortMergedLabels = false
True to sort tick labels when labels are created by merging x axis values from multiple series.
A “tick” object showing the value of a tick/gridline on the plot.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-ciParser-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-ciParser-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-ciParser-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-ciParser-js.html @@ -0,0 +1,39 @@ + + +$.jqplot.ciParser + + + + + + + + + +

Data Renderer which converts a custom JSON data object into jqPlot data format.

Parameters

dataJSON encoded string or object.
plotreference to jqPlot Plot object.

Returns

data array in jqPlot format.

+ +
+ + + + + + + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-cursor-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-cursor-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-cursor-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-cursor-js.html @@ -0,0 +1,91 @@ + + +$.jqplot.Cursor + + + + + + + + + +

Plugin class representing the cursor as displayed on the plot.

Summary
$.jqplot.CursorPlugin class representing the cursor as displayed on the plot.
Properties
styleCSS spec for cursor style
showwether to show the cursor or not.
showTooltipshow a cursor position tooltip.
followMouseTooltip follows the mouse, it is not at a fixed location.
tooltipLocationWhere to position tooltip.
tooltipOffsetPixel offset of tooltip from the grid boudaries or cursor center.
showTooltipGridPositionshow the grid pixel coordinates of the mouse.
showTooltipUnitPositionshow the unit (data) coordinates of the mouse.
showTooltipDataPositionUsed with showVerticalLine to show intersecting data points in the tooltip.
tooltipFormatStringsprintf format string for the tooltip.
useAxesFormattersUse the x and y axes formatters to format the text in the tooltip.
tooltipAxisGroupsShow position for the specified axes.
zoomEnable plot zooming.
clickResetWill reset plot zoom if single click on plot without drag.
dblClickResetWill reset plot zoom if double click on plot without drag.
showVerticalLinedraw a vertical line across the plot which follows the cursor.
showHorizontalLinedraw a horizontal line across the plot which follows the cursor.
constrainZoomTo‘none’, ‘x’ or ‘y’
intersectionThresholdpixel distance from data point or marker to consider cursor lines intersecting with point.
showCursorLegendReplace the plot legend with an enhanced legend displaying intersection information.
cursorLegendFormatStringFormat string used in the cursor legend.
constrainOutsideZoomTrue to limit actual zoom area to edges of grid, even when zooming outside of plot area.
showTooltipOutsideZoomTrue will keep updating the tooltip when zooming of the grid.
methods
$.jqplot.Cursor.zoomProxylinks targetPlot to controllerPlot so that plot zooming of targetPlot will be controlled by zooming on the controllerPlot.
+ +

Properties

+ +

style

this.style = 'crosshair'

CSS spec for cursor style

+ +

show

this.show = $.jqplot.config.enablePlugins

wether to show the cursor or not.

+ +

showTooltip

this.showTooltip = true

show a cursor position tooltip.  Location of the tooltip will be controlled by followMouse and tooltipLocation.

+ +

followMouse

this.followMouse = false

Tooltip follows the mouse, it is not at a fixed location.  Tooltip will show on the grid at the location given by tooltipLocation, offset from the grid edge by tooltipOffset.

+ +

tooltipLocation

this.tooltipLocation = 'se'

Where to position tooltip.  If followMouse is true, this is relative to the cursor, otherwise, it is relative to the grid.  One of ‘n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘nw’

+ +

tooltipOffset

this.tooltipOffset = 6

Pixel offset of tooltip from the grid boudaries or cursor center.

+ +

showTooltipGridPosition

this.showTooltipGridPosition = false

show the grid pixel coordinates of the mouse.

+ +

showTooltipUnitPosition

this.showTooltipUnitPosition = true

show the unit (data) coordinates of the mouse.

+ +

showTooltipDataPosition

this.showTooltipDataPosition = false

Used with showVerticalLine to show intersecting data points in the tooltip.

+ +

tooltipFormatString

this.tooltipFormatString = '%.4P, %.4P'

sprintf format string for the tooltip.  Uses Ash Searle’s javascript sprintf implementation found here: http://hexmen.com/blog/2007/03/printf-sprintf/ See http://perldoc.perl.org/functions/sprintf.html for reference Note, if showTooltipDataPosition is true, the default tooltipFormatString will be set to the cursorLegendFormatString, not the default given here.

+ +

useAxesFormatters

this.useAxesFormatters = true

Use the x and y axes formatters to format the text in the tooltip.

+ +

tooltipAxisGroups

this.tooltipAxisGroups = []

Show position for the specified axes.  This is an array like [[‘xaxis’, ‘yaxis’], [‘xaxis’, ‘y2axis’]] Default is to compute automatically for all visible axes.

+ +

zoom

this.zoom = false

Enable plot zooming.

+ +

clickReset

this.clickReset = false

Will reset plot zoom if single click on plot without drag.

+ +

dblClickReset

this.dblClickReset = true

Will reset plot zoom if double click on plot without drag.

+ +

showVerticalLine

this.showVerticalLine = false

draw a vertical line across the plot which follows the cursor.  When the line is near a data point, a special legend and/or tooltip can be updated with the data values.

+ +

showHorizontalLine

this.showHorizontalLine = false

draw a horizontal line across the plot which follows the cursor.

+ +

constrainZoomTo

this.constrainZoomTo = 'none'

’none’, ‘x’ or ‘y’

+ +

intersectionThreshold

this.intersectionThreshold = 2

pixel distance from data point or marker to consider cursor lines intersecting with point.  If data point markers are not shown, this should be >= 1 or will often miss point intersections.

+ +

showCursorLegend

this.showCursorLegend = false

Replace the plot legend with an enhanced legend displaying intersection information.

+ +

cursorLegendFormatString

this.cursorLegendFormatString = $.jqplot.Cursor.cursorLegendFormatString

Format string used in the cursor legend.  If showTooltipDataPosition is true, this will also be the default format string used by tooltipFormatString.

+ +

constrainOutsideZoom

this.constrainOutsideZoom = true

True to limit actual zoom area to edges of grid, even when zooming outside of plot area.  That is, can’t zoom out by mousing outside plot.

+ +

showTooltipOutsideZoom

this.showTooltipOutsideZoom = false

True will keep updating the tooltip when zooming of the grid.

+ +

methods

+ +

$.jqplot.Cursor.zoomProxy

$.jqplot.Cursor.zoomProxy = function(targetPlot,
controllerPlot)

links targetPlot to controllerPlot so that plot zooming of targetPlot will be controlled by zooming on the controllerPlot. controllerPlot will not actually zoom, but acts as an overview plot.  Note, the zoom options must be set to true for zoomProxy to work.

+ +
+ + + + + + + + + + +
this.style = 'crosshair'
CSS spec for cursor style
this.show = $.jqplot.config.enablePlugins
wether to show the cursor or not.
this.showTooltip = true
show a cursor position tooltip.
this.followMouse = false
Tooltip follows the mouse, it is not at a fixed location.
this.tooltipLocation = 'se'
Where to position tooltip.
this.tooltipOffset = 6
Pixel offset of tooltip from the grid boudaries or cursor center.
this.showTooltipGridPosition = false
show the grid pixel coordinates of the mouse.
this.showTooltipUnitPosition = true
show the unit (data) coordinates of the mouse.
this.showTooltipDataPosition = false
Used with showVerticalLine to show intersecting data points in the tooltip.
this.tooltipFormatString = '%.4P, %.4P'
sprintf format string for the tooltip.
this.useAxesFormatters = true
Use the x and y axes formatters to format the text in the tooltip.
this.tooltipAxisGroups = []
Show position for the specified axes.
this.zoom = false
Enable plot zooming.
this.clickReset = false
Will reset plot zoom if single click on plot without drag.
this.dblClickReset = true
Will reset plot zoom if double click on plot without drag.
this.showVerticalLine = false
draw a vertical line across the plot which follows the cursor.
this.showHorizontalLine = false
draw a horizontal line across the plot which follows the cursor.
this.constrainZoomTo = 'none'
‘none’, ‘x’ or ‘y’
this.intersectionThreshold = 2
pixel distance from data point or marker to consider cursor lines intersecting with point.
this.showCursorLegend = false
Replace the plot legend with an enhanced legend displaying intersection information.
this.cursorLegendFormatString = $.jqplot.Cursor.cursorLegendFormatString
Format string used in the cursor legend.
this.constrainOutsideZoom = true
True to limit actual zoom area to edges of grid, even when zooming outside of plot area.
this.showTooltipOutsideZoom = false
True will keep updating the tooltip when zooming of the grid.
$.jqplot.Cursor.zoomProxy = function(targetPlot,
controllerPlot)
links targetPlot to controllerPlot so that plot zooming of targetPlot will be controlled by zooming on the controllerPlot.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-dateAxisRenderer-js.html @@ -0,0 +1,93 @@ + + +$.jqplot.DateAxisRenderer + + + + + + + + + +

A plugin for a jqPlot to render an axis as a series of date values.  This renderer has no options beyond those supplied by the Axis class.  It supplies it’s own tick formatter, so the tickOptions.formatter option should not be overridden.

Thanks to Ken Synder for his enhanced Date instance methods which are included with this code http://kendsnyder.com/sandbox/date/.

To use this renderer, include the plugin in your source

<script type="text/javascript" language="javascript" src="plugins/jqplot.dateAxisRenderer.js"></script>

and supply the appropriate options to your plot

{axes:{xaxis:{renderer:$.jqplot.DateAxisRenderer}}}

Dates can be passed into the axis in almost any recognizable value and will be parsed.  They will be rendered on the axis in the format specified by tickOptions.formatString.  e.g. tickOptions.formatString = ‘%Y-%m-%d’.

Accecptable format codes are:

Code    Result                  Description
+            == Years ==
+%Y      2008                Four-digit year
+%y      08                  Two-digit year
+            == Months ==
+%m      09                  Two-digit month
+%#m     9                   One or two-digit month
+%B      September           Full month name
+%b      Sep                 Abbreviated month name
+            == Days ==
+%d      05                  Two-digit day of month
+%#d     5                   One or two-digit day of month
+%e      5                   One or two-digit day of month
+%A      Sunday              Full name of the day of the week
+%a      Sun                 Abbreviated name of the day of the week
+%w      0                   Number of the day of the week (0 = Sunday, 6 = Saturday)
+%o      th                  The ordinal suffix string following the day of the month
+            == Hours ==
+%H      23                  Hours in 24-hour format (two digits)
+%#H     3                   Hours in 24-hour integer format (one or two digits)
+%I      11                  Hours in 12-hour format (two digits)
+%#I     3                   Hours in 12-hour integer format (one or two digits)
+%p      PM                  AM or PM
+            == Minutes ==
+%M      09                  Minutes (two digits)
+%#M     9                   Minutes (one or two digits)
+            == Seconds ==
+%S      02                  Seconds (two digits)
+%#S     2                   Seconds (one or two digits)
+%s      1206567625723       Unix timestamp (Seconds past 1970-01-01 00:00:00)
+            == Milliseconds ==
+%N      008                 Milliseconds (three digits)
+%#N     8                   Milliseconds (one to three digits)
+            == Timezone ==
+%O      360                 difference in minutes between local time and GMT
+%Z      Mountain Standard Time  Name of timezone as reported by browser
+%G      -06:00              Hours and minutes between GMT
+            == Shortcuts ==
+%F      2008-03-26          %Y-%m-%d
+%T      05:06:30            %H:%M:%S
+%X      05:06:30            %H:%M:%S
+%x      03/26/08            %m/%d/%y
+%D      03/26/08            %m/%d/%y
+%#c     Wed Mar 26 15:31:00 2008  %a %b %e %H:%M:%S %Y
+%v      3-Sep-2008          %e-%b-%Y
+%R      15:31               %H:%M
+%r      3:31:00 PM          %I:%M:%S %p
+            == Characters ==
+%n      \n                  Newline
+%t      \t                  Tab
+%%      %                   Percent Symbol
Summary
$.jqplot.DateAxisRendererA plugin for a jqPlot to render an axis as a series of date values.
Properties
tickRendererA class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
+ +

Properties

+ +

tickRenderer

A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer. this.tickRenderer = $.jqplot.AxisTickRenderer; this.labelRenderer = $.jqplot.AxisLabelRenderer;

+ +
+ + + + + + + + + + +
A “tick” object showing the value of a tick/gridline on the plot.
An individual axis object.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-donutRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-donutRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-donutRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-donutRenderer-js.html @@ -0,0 +1,98 @@ + + +$.jqplot.DonutRenderer + + + + + + + + + +

Plugin renderer to draw a donut chart. x values, if present, will be used as slice labels. y values give slice size.

To use this renderer, you need to include the donut renderer plugin, for example:

<script type="text/javascript" src="plugins/jqplot.donutRenderer.js"></script>

Properties described here are passed into the $.jqplot function as options on the series renderer.  For example:

plot2 = $.jqplot('chart2', [s1, s2], {
+    seriesDefaults: {
+        renderer:$.jqplot.DonutRenderer,
+        rendererOptions:{
+             sliceMargin: 2,
+             innerDiameter: 110,
+             startAngle: -90
+         }
+     }
+});

A donut plot will trigger events on the plot target according to user interaction.  All events return the event object, the series index, the point (slice) index, and the point data for the appropriate slice.

’jqplotDataMouseOver’triggered when user mouseing over a slice.
’jqplotDataHighlight’triggered the first time user mouses over a slice, if highlighting is enabled.
’jqplotDataUnhighlight’triggered when a user moves the mouse out of a highlighted slice.
’jqplotDataClick’triggered when the user clicks on a slice.
’jqplotDataRightClick’tiggered when the user right clicks on a slice if the “captureRightClick” option is set to true on the plot.
Summary
$.jqplot.DonutRendererPlugin renderer to draw a donut chart.
Properties
diameterOuter diameter of the donut, auto computed by default
innerDiameterInner diameter of teh donut, auto calculated by default.
thicknessthickness of the donut, auto computed by default Overridden by if innerDiameter is specified.
paddingpadding between the donut and plot edges, legend, etc.
sliceMarginangular spacing between donut slices in degrees.
ringMarginpixel distance between rings, or multiple series in a donut plot.
filltrue or false, wether to fil the slices.
shadowOffsetoffset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
shadowAlphatransparency of the shadow (0 = transparent, 1 = opaque)
shadowDepthnumber of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
highlightMouseOverTrue to highlight slice when moused over.
highlightMouseDownTrue to highlight when a mouse button is pressed over a slice.
highlightColorsan array of colors to use when highlighting a slice.
dataLabelsEither ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
showDataLabelstrue to show data labels on slices.
dataLabelFormatStringFormat string for data labels.
dataLabelThreshold
dataLabelPositionFactorA Multiplier (0-1) of the pie radius which controls position of label on slice.
dataLabelNudgeNumber of pixels to slide the label away from (+) or toward (-) the center of the pie.
startAngleAngle to start drawing donut in degrees.
$.jqplot.DonutLegendRendererLegend Renderer specific to donut plots.
Properties
numberRowsMaximum number of rows in the legend.
numberColumnsMaximum number of columns in the legend.
+ +

Properties

+ +

diameter

this.diameter = null

Outer diameter of the donut, auto computed by default

+ +

innerDiameter

this.innerDiameter = null

Inner diameter of teh donut, auto calculated by default.  If specified will override thickness value.

+ +

thickness

this.thickness = null

thickness of the donut, auto computed by default Overridden by if innerDiameter is specified.

+ +

padding

this.padding = 20

padding between the donut and plot edges, legend, etc.

+ +

sliceMargin

this.sliceMargin = 0

angular spacing between donut slices in degrees.

+ +

ringMargin

this.ringMargin = null

pixel distance between rings, or multiple series in a donut plot. null will compute ringMargin based on sliceMargin.

+ +

fill

this.fill = true

true or false, wether to fil the slices.

+ +

shadowOffset

this.shadowOffset = 2

offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.

+ +

shadowAlpha

this.shadowAlpha = 0.07

transparency of the shadow (0 = transparent, 1 = opaque)

+ +

shadowDepth

this.shadowDepth = 5

number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.

+ +

highlightMouseOver

this.highlightMouseOver = true

True to highlight slice when moused over.  This must be false to enable highlightMouseDown to highlight when clicking on a slice.

+ +

highlightMouseDown

this.highlightMouseDown = false

True to highlight when a mouse button is pressed over a slice.  This will be disabled if highlightMouseOver is true.

+ +

highlightColors

this.highlightColors = []

an array of colors to use when highlighting a slice.

+ +

dataLabels

this.dataLabels = 'percent'

Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.  Defaults to percentage of each pie slice.

+ +

showDataLabels

this.showDataLabels = false

true to show data labels on slices.

+ +

dataLabelFormatString

this.dataLabelFormatString = null

Format string for data labels.  If none, ‘%s’ is used for “label” and for arrays, ‘%d’ for value and ‘%d%%’ for percentage.

+ +

dataLabelThreshold

this.dataLabelThreshold = 3
Threshhold in percentage (0100) of pie area, below which no label will be displayed.  This applies to all label types, not just to percentage labels.
+ +

dataLabelPositionFactor

this.dataLabelPositionFactor = 0.5

A Multiplier (0-1) of the pie radius which controls position of label on slice.  Increasing will slide label toward edge of pie, decreasing will slide label toward center of pie.

+ +

dataLabelNudge

this.dataLabelNudge = 0

Number of pixels to slide the label away from (+) or toward (-) the center of the pie.

+ +

startAngle

this.startAngle = 0

Angle to start drawing donut in degrees.  According to orientation of canvas coordinate system: 0 = on the positive x axis -90 = on the positive y axis.  90 = on the negaive y axis.  180 or - 180 = on the negative x axis.

+ +

$.jqplot.DonutLegendRenderer

Legend Renderer specific to donut plots.  Set by default when user creates a donut plot.

Summary
Properties
numberRowsMaximum number of rows in the legend.
numberColumnsMaximum number of columns in the legend.
+ +

Properties

+ +

numberRows

this.numberRows = null

Maximum number of rows in the legend.  0 or null for unlimited.

+ +

numberColumns

this.numberColumns = null

Maximum number of columns in the legend.  0 or null for unlimited.

+ +
+ + + + + + + + + + +
this.diameter = null
Outer diameter of the donut, auto computed by default
this.innerDiameter = null
Inner diameter of teh donut, auto calculated by default.
this.thickness = null
thickness of the donut, auto computed by default Overridden by if innerDiameter is specified.
this.padding = 20
padding between the donut and plot edges, legend, etc.
this.sliceMargin = 0
angular spacing between donut slices in degrees.
this.ringMargin = null
pixel distance between rings, or multiple series in a donut plot.
this.fill = true
true or false, wether to fil the slices.
this.shadowOffset = 2
offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.highlightMouseOver = true
True to highlight slice when moused over.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a slice.
this.highlightColors = []
an array of colors to use when highlighting a slice.
this.dataLabels = 'percent'
Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
this.showDataLabels = false
true to show data labels on slices.
this.dataLabelFormatString = null
Format string for data labels.
this.dataLabelThreshold = 3
this.dataLabelPositionFactor = 0.5
A Multiplier (0-1) of the pie radius which controls position of label on slice.
this.dataLabelNudge = 0
Number of pixels to slide the label away from (+) or toward (-) the center of the pie.
this.startAngle = 0
Angle to start drawing donut in degrees.
this.numberRows = null
Maximum number of rows in the legend.
this.numberColumns = null
Maximum number of columns in the legend.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-dragable-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-dragable-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-dragable-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-dragable-js.html @@ -0,0 +1,45 @@ + + +$.jqplot.Dragable + + + + + + + + + +

Plugin to make plotted points dragable by the user.

Summary
$.jqplot.DragablePlugin to make plotted points dragable by the user.
Properties
colorCSS color spec for the dragged point (and adjacent line segment or bar).
constrainToConstrain dragging motion to an axis or to none.
+ +

Properties

+ +

color

this.color

CSS color spec for the dragged point (and adjacent line segment or bar).

+ +

constrainTo

this.constrainTo = 'none'

Constrain dragging motion to an axis or to none.  Allowable values are ‘none’, ‘x’, ‘y’

+ +
+ + + + + + + + + + +
this.color
CSS color spec for the dragged point (and adjacent line segment or bar).
this.constrainTo = 'none'
Constrain dragging motion to an axis or to none.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html @@ -0,0 +1,49 @@ + + +/Users/cleonell/Sites/lib/jqplot/build/plugins/jqplot.enhancedLegendRenderer.js + + + + + + + + + +
Summary
jqplot.enhancedLegendRenderer.js
Properties
numberRowsMaximum number of rows in the legend.
numberColumnsMaximum number of columns in the legend.
seriesTogglefalse to not enable series on/off toggling on the legend.
disableIEFadingtrue to toggle series with a show/hide method only and not allow fading in/out.
+ +

Properties

+ +

numberRows

this.numberRows = null

Maximum number of rows in the legend.  0 or null for unlimited.

+ +

numberColumns

this.numberColumns = null

Maximum number of columns in the legend.  0 or null for unlimited.

+ +

seriesToggle

this.seriesToggle = 'normal'

false to not enable series on/off toggling on the legend. true or a fadein/fadeout speed (number of milliseconds or ‘fast’, ‘normal’, ‘slow’) to enable show/hide of series on click of legend item.

+ +

disableIEFading

this.disableIEFading = true

true to toggle series with a show/hide method only and not allow fading in/out.  This is to overcome poor performance of fade in some versions of IE.

+ +
+ + + + + + + + + + +
this.numberRows = null
Maximum number of rows in the legend.
this.numberColumns = null
Maximum number of columns in the legend.
this.seriesToggle = 'normal'
false to not enable series on/off toggling on the legend.
this.disableIEFading = true
true to toggle series with a show/hide method only and not allow fading in/out.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-funnelRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-funnelRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-funnelRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-funnelRenderer-js.html @@ -0,0 +1,87 @@ + + +$.jqplot.FunnelRenderer + + + + + + + + + +

Plugin renderer to draw a funnel chart. x values, if present, will be used as labels. y values give area size.

Funnel charts will draw a single series only.

To use this renderer, you need to include the funnel renderer plugin, for example:

<script type="text/javascript" src="plugins/jqplot.funnelRenderer.js"></script>

Properties described here are passed into the $.jqplot function as options on the series renderer.  For example:

plot2 = $.jqplot('chart2', [s1, s2], {
+    seriesDefaults: {
+        renderer:$.jqplot.FunnelRenderer,
+        rendererOptions:{
+             sectionMargin: 12,
+             widthRatio: 0.3
+         }
+     }
+});

IMPORTANT

The funnel renderer will reorder data in descending order so the largest value in the data set is first and displayed on top of the funnel.  Data will then be displayed in descending order down the funnel.  The area of each funnel section will correspond to the value of each data point relative to the sum of all values.  That is section area is proportional to section value divided by sum of all section values.

If your data is not in descending order when passed into the plot, it will be reordered when stored in the series.data property.  A copy of the unordered data is kept in the series._unorderedData property.

A funnel plot will trigger events on the plot target according to user interaction.  All events return the event object, the series index, the point (section) index, and the point data for the appropriate section.  Note the point index will referr to the ordered data, not the original unordered data.

’jqplotDataMouseOver’triggered when mousing over a section.
’jqplotDataHighlight’triggered the first time user mouses over a section, if highlighting is enabled.
’jqplotDataUnhighlight’triggered when a user moves the mouse out of a highlighted section.
’jqplotDataClick’triggered when the user clicks on a section.
’jqplotDataRightClick’tiggered when the user right clicks on a section if the “captureRightClick” option is set to true on the plot.
Summary
$.jqplot.FunnelRendererPlugin renderer to draw a funnel chart.
Properties
paddingpadding between the funnel and plot edges, legend, etc.
sectionMarginspacing between funnel sections in pixels.
filltrue or false, wether to fill the areas.
shadowOffsetoffset of the shadow from the area and offset of each succesive stroke of the shadow from the last.
shadowAlphatransparency of the shadow (0 = transparent, 1 = opaque)
shadowDepthnumber of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
highlightMouseOverTrue to highlight area when moused over.
highlightMouseDownTrue to highlight when a mouse button is pressed over a area.
highlightColorsarray of colors to use when highlighting an area.
widthRatioThe ratio of the width of the top of the funnel to the bottom.
lineWidthwidth of line if areas are stroked and not filled.
dataLabelsEither ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
showDataLabelstrue to show data labels on slices.
dataLabelFormatStringFormat string for data labels.
dataLabelThreshold
$.jqplot.FunnelLegendRendererLegend Renderer specific to funnel plots.
Properties
numberRowsMaximum number of rows in the legend.
numberColumnsMaximum number of columns in the legend.
+ +

Properties

+ +

padding

this.padding = {top: 20, right: 20, bottom: 20, left: 20}

padding between the funnel and plot edges, legend, etc.

+ +

sectionMargin

this.sectionMargin = 6

spacing between funnel sections in pixels.

+ +

fill

this.fill = true

true or false, wether to fill the areas.

+ +

shadowOffset

this.shadowOffset = 2

offset of the shadow from the area and offset of each succesive stroke of the shadow from the last.

+ +

shadowAlpha

this.shadowAlpha = 0.07

transparency of the shadow (0 = transparent, 1 = opaque)

+ +

shadowDepth

this.shadowDepth = 5

number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.

+ +

highlightMouseOver

this.highlightMouseOver = true

True to highlight area when moused over.  This must be false to enable highlightMouseDown to highlight when clicking on a area.

+ +

highlightMouseDown

this.highlightMouseDown = false

True to highlight when a mouse button is pressed over a area.  This will be disabled if highlightMouseOver is true.

+ +

highlightColors

this.highlightColors = []

array of colors to use when highlighting an area.

+ +

widthRatio

this.widthRatio = 0.2

The ratio of the width of the top of the funnel to the bottom. a ratio of 0 will make an upside down pyramid.

+ +

lineWidth

this.lineWidth = 2

width of line if areas are stroked and not filled.

+ +

dataLabels

this.dataLabels = 'percent'

Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.  Defaults to percentage of each pie slice.

+ +

showDataLabels

this.showDataLabels = false

true to show data labels on slices.

+ +

dataLabelFormatString

this.dataLabelFormatString = null

Format string for data labels.  If none, ‘%s’ is used for “label” and for arrays, ‘%d’ for value and ‘%d%%’ for percentage.

+ +

dataLabelThreshold

this.dataLabelThreshold = 3
Threshhold in percentage (0100) of pie area, below which no label will be displayed.  This applies to all label types, not just to percentage labels.
+ +

$.jqplot.FunnelLegendRenderer

Legend Renderer specific to funnel plots.  Set by default when the user creates a funnel plot.

Summary
Properties
numberRowsMaximum number of rows in the legend.
numberColumnsMaximum number of columns in the legend.
+ +

Properties

+ +

numberRows

this.numberRows = null

Maximum number of rows in the legend.  0 or null for unlimited.

+ +

numberColumns

this.numberColumns = null

Maximum number of columns in the legend.  0 or null for unlimited.

+ +
+ + + + + + + + + + +
this.padding = {top: 20, right: 20, bottom: 20, left: 20}
padding between the funnel and plot edges, legend, etc.
this.sectionMargin = 6
spacing between funnel sections in pixels.
this.fill = true
true or false, wether to fill the areas.
this.shadowOffset = 2
offset of the shadow from the area and offset of each succesive stroke of the shadow from the last.
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.highlightMouseOver = true
True to highlight area when moused over.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a area.
this.highlightColors = []
array of colors to use when highlighting an area.
this.widthRatio = 0.2
The ratio of the width of the top of the funnel to the bottom.
this.lineWidth = 2
width of line if areas are stroked and not filled.
this.dataLabels = 'percent'
Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
this.showDataLabels = false
true to show data labels on slices.
this.dataLabelFormatString = null
Format string for data labels.
this.dataLabelThreshold = 3
this.numberRows = null
Maximum number of rows in the legend.
this.numberColumns = null
Maximum number of columns in the legend.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-highlighter-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-highlighter-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-highlighter-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-highlighter-js.html @@ -0,0 +1,80 @@ + + +$.jqplot.Highlighter + + + + + + + + + +

Plugin which will highlight data points when they are moused over.

To use this plugin, include the js file in your source:

<script type="text/javascript" src="plugins/jqplot.highlighter.js"></script>

A tooltip providing information about the data point is enabled by default.  To disable the tooltip, set “showTooltip” to false.

You can control what data is displayed in the tooltip with various options.  The “tooltipAxes” option controls wether the x, y or both data values are displayed.

Some chart types (e.g. hi-low-close) have more than one y value per data point.  To display the additional values in the tooltip, set the “yvalues” option to the desired number of y values present (3 for a hlc chart).

By default, data values will be formatted with the same formatting specifiers as used to format the axis ticks.  A custom format code can be supplied with the tooltipFormatString option.  This will apply to all values in the tooltip.

For more complete control, the “formatString” option can be set.  This Allows conplete control over tooltip formatting.  Values are passed to the format string in an order determined by the “tooltipAxes” and “yvalues” options.  So, if you have a hi-low-close chart and you just want to display the hi-low-close values in the tooltip, you could set a formatString like:

highlighter: {
+    tooltipAxes: 'y',
+    yvalues: 3,
+    formatString:'<table class="jqplot-highlighter">
+        <tr><td>hi:</td><td>%s</td></tr>
+        <tr><td>low:</td><td>%s</td></tr>
+        <tr><td>close:</td><td>%s</td></tr></table>'
+}
Summary
$.jqplot.HighlighterPlugin which will highlight data points when they are moused over.
Properties
showtrue to show the highlight.
markerRendererRenderer used to draw the marker of the highlighted point.
showMarkertrue to show the marker
lineWidthAdjustPixels to add to the lineWidth of the highlight.
sizeAdjustPixels to add to the overall size of the highlight.
showTooltipShow a tooltip with data point values.
tooltipLocationWhere to position tooltip, ‘n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘nw’
fadeTooltiptrue = fade in/out tooltip, flase = show/hide tooltip
tooltipFadeSpeed‘slow’, ‘def’, ‘fast’, or number of milliseconds.
tooltipOffsetPixel offset of tooltip from the highlight.
tooltipAxesWhich axes to display in tooltip, ‘x’, ‘y’ or ‘both’, ‘xy’ or ‘yx’ ‘both’ and ‘xy’ are equivalent, ‘yx’ reverses order of labels.
useAxesFormattersUse the x and y axes formatters to format the text in the tooltip.
tooltipFormatStringsprintf format string for the tooltip.
formatStringalternative to tooltipFormatString will format the whole tooltip text, populating with x, y values as indicated by tooltipAxes option.
yvaluesNumber of y values to expect in the data point array.
bringSeriesToFrontThis option requires jQuery 1.4+ True to bring the series of the highlighted point to the front of other series.
+ +

Properties

+ +

show

this.show = $.jqplot.config.enablePlugins

true to show the highlight.

+ +

markerRenderer

this.markerRenderer = new $.jqplot.MarkerRenderer({shadow:false})

Renderer used to draw the marker of the highlighted point.  Renderer will assimilate attributes from the data point being highlighted, so no attributes need set on the renderer directly.  Default is to turn off shadow drawing on the highlighted point.

+ +

showMarker

this.showMarker = true

true to show the marker

+ +

lineWidthAdjust

this.lineWidthAdjust = 2.5

Pixels to add to the lineWidth of the highlight.

+ +

sizeAdjust

this.sizeAdjust = 5

Pixels to add to the overall size of the highlight.

+ +

showTooltip

this.showTooltip = true

Show a tooltip with data point values.

+ +

tooltipLocation

this.tooltipLocation = 'nw'

Where to position tooltip, ‘n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘nw’

+ +

fadeTooltip

this.fadeTooltip = true

true = fade in/out tooltip, flase = show/hide tooltip

+ +

tooltipFadeSpeed

this.tooltipFadeSpeed = "fast"

’slow’, ‘def’, ‘fast’, or number of milliseconds.

+ +

tooltipOffset

this.tooltipOffset = 2

Pixel offset of tooltip from the highlight.

+ +

tooltipAxes

this.tooltipAxes = 'both'

Which axes to display in tooltip, ‘x’, ‘y’ or ‘both’, ‘xy’ or ‘yx’ ‘both’ and ‘xy’ are equivalent, ‘yx’ reverses order of labels.

+ +

useAxesFormatters

this.useAxesFormatters = true

Use the x and y axes formatters to format the text in the tooltip.

+ +

tooltipFormatString

this.tooltipFormatString = '%.5P'

sprintf format string for the tooltip.  Uses Ash Searle’s javascript sprintf implementation found here: http://hexmen.com/blog/2007/03/printf-sprintf/ See http://perldoc.perl.org/functions/sprintf.html for reference.  Additional “p” and “P” format specifiers added by Chris Leonello.

+ +

formatString

this.formatString = null

alternative to tooltipFormatString will format the whole tooltip text, populating with x, y values as indicated by tooltipAxes option.  So, you could have a tooltip like: ‘Date: %s, number of cats: %d’ to format the whole tooltip at one go.  If useAxesFormatters is true, values will be formatted according to Axes formatters and you can populate your tooltip string with %s placeholders.

+ +

yvalues

this.yvalues = 1

Number of y values to expect in the data point array.  Typically this is 1.  Certain plots, like OHLC, will have more y values in each data point array.

+ +

bringSeriesToFront

this.bringSeriesToFront = false

This option requires jQuery 1.4+ True to bring the series of the highlighted point to the front of other series.

+ +
+ + + + + + + + + + +
this.show = $.jqplot.config.enablePlugins
true to show the highlight.
this.markerRenderer = new $.jqplot.MarkerRenderer({shadow:false})
Renderer used to draw the marker of the highlighted point.
this.showMarker = true
true to show the marker
this.lineWidthAdjust = 2.5
Pixels to add to the lineWidth of the highlight.
this.sizeAdjust = 5
Pixels to add to the overall size of the highlight.
this.showTooltip = true
Show a tooltip with data point values.
this.tooltipLocation = 'nw'
Where to position tooltip, ‘n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘nw’
this.fadeTooltip = true
true = fade in/out tooltip, flase = show/hide tooltip
this.tooltipFadeSpeed = "fast"
‘slow’, ‘def’, ‘fast’, or number of milliseconds.
this.tooltipOffset = 2
Pixel offset of tooltip from the highlight.
this.tooltipAxes = 'both'
Which axes to display in tooltip, ‘x’, ‘y’ or ‘both’, ‘xy’ or ‘yx’ ‘both’ and ‘xy’ are equivalent, ‘yx’ reverses order of labels.
this.useAxesFormatters = true
Use the x and y axes formatters to format the text in the tooltip.
this.tooltipFormatString = '%.5P'
sprintf format string for the tooltip.
this.formatString = null
alternative to tooltipFormatString will format the whole tooltip text, populating with x, y values as indicated by tooltipAxes option.
this.yvalues = 1
Number of y values to expect in the data point array.
this.bringSeriesToFront = false
This option requires jQuery 1.4+ True to bring the series of the highlighted point to the front of other series.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-logAxisRenderer-js.html @@ -0,0 +1,45 @@ + + +$.jqplot.LogAxisRenderer + + + + + + + + + +

A plugin for a jqPlot to render a logarithmic axis.

To use this renderer, include the plugin in your source

<script type="text/javascript" language="javascript" src="plugins/jqplot.logAxisRenderer.js"></script>

and supply the appropriate options to your plot

{axes:{xaxis:{renderer:$.jqplot.LogAxisRenderer}}}
Summary
$.jqplot.LogAxisRendererA plugin for a jqPlot to render a logarithmic axis.
axisDefaultsDefault properties which will be applied directly to the series.
PropertiesProperties
tickRendererA class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
+ +

axisDefaults

Default properties which will be applied directly to the series.

+ +

Properties

Properties

/ basethe logarithmic base, commonly 2, 10 or Math.E
tickDistribution’even’ or ‘power’.  ‘even’ gives equal pixel spacing of the ticks on the plot.  ‘power’ gives ticks in powers of 10.
+ +

tickRenderer

A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer. this.tickRenderer = $.jqplot.AxisTickRenderer; this.labelRenderer = $.jqplot.AxisLabelRenderer;

+ +
+ + + + + + + + + + +
A “tick” object showing the value of a tick/gridline on the plot.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html @@ -0,0 +1,49 @@ + + +$.jqplot.MekkoAxisRenderer + + + + + + + + + +

An axis renderer for a Mekko chart.  Should be used with a Mekko chart where the mekkoRenderer is used on the series.  Displays the Y axis as a range from 0 to 1 (0 to 100%) and the x axis with a tick for each series scaled to the sum of all the y values.

Summary
$.jqplot.MekkoAxisRendererAn axis renderer for a Mekko chart.
Properties
tickModeHow to space the ticks on the axis.
barLabelRendererrenderer to use to draw labels under each bar.
barLabelsarray of labels to put under each bar.
barLabelOptionsoptions object to pass to the bar label renderer.
+ +

Properties

+ +

tickMode

this.tickMode

How to space the ticks on the axis.  ‘bar’ will place a tick at the width of each bar.  This is the default for the x axis.  ‘even’ will place ticks at even intervals.  This is the default for x2 axis and y axis.  y axis cannot be changed.

+ +

barLabelRenderer

this.barLabelRenderer = $.jqplot.AxisLabelRenderer

renderer to use to draw labels under each bar.

+ +

barLabels

this.barLabels = this.barLabels || []

array of labels to put under each bar.

+ +

barLabelOptions

this.barLabelOptions = {}

options object to pass to the bar label renderer.

+ +
+ + + + + + + + + + +
this.tickMode
How to space the ticks on the axis.
this.barLabelRenderer = $.jqplot.AxisLabelRenderer
renderer to use to draw labels under each bar.
this.barLabels = this.barLabels || []
array of labels to put under each bar.
this.barLabelOptions = {}
options object to pass to the bar label renderer.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-mekkoRenderer-js.html @@ -0,0 +1,62 @@ + + +$.jqplot.MekkoRenderer + + + + + + + + + +

Draws a Mekko style chart which shows 3 dimensional data on a 2 dimensional graph. the $.jqplot.MekkoAxisRenderer should be used with mekko charts.  The mekko renderer overrides the default legend renderer with it’s own $.jqplot.MekkoLegendRenderer which allows more flexibility to specify number of rows and columns in the legend.

Data is specified per bar in the chart.  You can specify data as an array of y values, or as an array of [label, value] pairs.  Note that labels are used only on the first series.  Labels on subsequent series are ignored:

bar1 = [['shirts', 8],['hats', 14],['shoes', 6],['gloves', 16],['dolls', 12]];
+bar2 = [15,6,9,13,6];
+bar3 = [['grumpy',4],['sneezy',2],['happy',7],['sleepy',9],['doc',7]];

If you want to place labels for each bar under the axis, you use the barLabels option on the axes.  The bar labels can be styled with the “.jqplot-mekko-barLabel” css class.

barLabels = ['Mickey Mouse', 'Donald Duck', 'Goofy'];
+axes:{xaxis:{barLabels:barLabels}}
Summary
$.jqplot.MekkoRendererDraws a Mekko style chart which shows 3 dimensional data on a 2 dimensional graph.
Properties
borderColorcolor of the borders between areas on the chart
showBordersTrue to draw borders lines between areas on the chart.
Functions
setGridDataconverts the user data values to grid coordinates and stores them in the gridData array.
makeGridDataconverts any arbitrary data values to grid coordinates and returns them.
$.jqplot.MekkoLegendRendererLegend renderer used by mekko charts with options for controlling number or rows and columns as well as placement outside of plot area.
Properties
numberRowsMaximum number of rows in the legend.
numberColumnsMaximum number of columns in the legend.
+ +

Properties

+ +

borderColor

this.borderColor = null

color of the borders between areas on the chart

+ +

showBorders

this.showBorders = true

True to draw borders lines between areas on the chart.  False will draw borders lines with the same color as the area.

+ +

Functions

+ +

setGridData

$.jqplot.MekkoRenderer.prototype.setGridData = function(plot)

converts the user data values to grid coordinates and stores them in the gridData array.  Will convert user data into appropriate rectangles.  Called with scope of a series.

+ +

makeGridData

$.jqplot.MekkoRenderer.prototype.makeGridData = function(data,
plot)

converts any arbitrary data values to grid coordinates and returns them.  This method exists so that plugins can use a series’ linerenderer to generate grid data points without overwriting the grid data associated with that series.  Called with scope of a series.

+ +

$.jqplot.MekkoLegendRenderer

Legend renderer used by mekko charts with options for controlling number or rows and columns as well as placement outside of plot area.

Summary
Properties
numberRowsMaximum number of rows in the legend.
numberColumnsMaximum number of columns in the legend.
+ +

Properties

+ +

numberRows

this.numberRows = null

Maximum number of rows in the legend.  0 or null for unlimited.

+ +

numberColumns

this.numberColumns = null

Maximum number of columns in the legend.  0 or null for unlimited.

+ +
+ + + + + + + + + + +
this.borderColor = null
color of the borders between areas on the chart
this.showBorders = true
True to draw borders lines between areas on the chart.
$.jqplot.MekkoRenderer.prototype.setGridData = function(plot)
converts the user data values to grid coordinates and stores them in the gridData array.
$.jqplot.MekkoRenderer.prototype.makeGridData = function(data,
plot)
converts any arbitrary data values to grid coordinates and returns them.
this.numberRows = null
Maximum number of rows in the legend.
this.numberColumns = null
Maximum number of columns in the legend.
An axis renderer for a Mekko chart.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-meterGaugeRenderer-js.html @@ -0,0 +1,103 @@ + + +$.jqplot.MeterGaugeRenderer + + + + + + + + + +

Plugin renderer to draw a meter gauge chart.

Data consists of a single series with 1 data point to position the gauge needle.

To use this renderer, you need to include the meter gauge renderer plugin, for example:

<script type="text/javascript" src="plugins/jqplot.meterGaugeRenderer.js"></script>

Properties described here are passed into the $.jqplot function as options on the series renderer.  For example:

plot0 = $.jqplot('chart0',[[18]],{
+    title: 'Network Speed',
+    seriesDefaults: {
+        renderer: $.jqplot.MeterGaugeRenderer,
+        rendererOptions: {
+            label: 'MB/s'
+        }
+    }
+});

A meterGauge plot does not support events.

Summary
$.jqplot.MeterGaugeRendererPlugin renderer to draw a meter gauge chart.
Properties
diameterOuter diameter of the meterGauge, auto computed by default
paddingpadding between the meterGauge and plot edges, auto calculated by default.
shadowOffsetoffset of the shadow from the gauge ring and offset of each succesive stroke of the shadow from the last.
shadowAlphatransparency of the shadow (0 = transparent, 1 = opaque)
shadowDepthnumber of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
backgroundbackground color of the inside of the gauge.
ringColorcolor of the outer ring, hub, and needle of the gauge.
tickColorcolor of the tick marks around the gauge.
ringWidthwidth of the ring around the gauge.
minMinimum value on the gauge.
maxMaximum value on the gauge.
ticksArray of tick values.
showTickstrue to show ticks around gauge.
showTickLabelstrue to show tick labels next to ticks.
labelA gauge label like ‘kph’ or ‘Volts’
labelHeightAdjustNumber of Pixels to offset the label up (-) or down (+) from its default position.
labelPositionWhere to position the label, either ‘inside’ or ‘bottom’.
intervalsArray of ranges to be drawn around the gauge.
intervalColorsArray of colors to use for the intervals.
intervalInnerRadiusRadius of the inner circle of the interval ring.
intervalOuterRadiusRadius of the outer circle of the interval ring.
tickSpacingDegrees between ticks.
hubRadiusRadius of the hub at the bottom center of gauge which the needle attaches to.
tickPaddingpadding of the tick marks to the outer ring and the tick labels to marks.
needleThicknessMaximum thickness the needle.
needlePadPadding between needle and inner edge of the ring when the needle is at the min or max gauge value.
pegNeedleTrue will stop needle just below/above the min/max values if data is below/above min/max, as if the meter is “pegged”.
+ +

Properties

+ +

diameter

this.diameter = null

Outer diameter of the meterGauge, auto computed by default

+ +

padding

this.padding = null

padding between the meterGauge and plot edges, auto calculated by default.

+ +

shadowOffset

this.shadowOffset = 2

offset of the shadow from the gauge ring and offset of each succesive stroke of the shadow from the last.

+ +

shadowAlpha

this.shadowAlpha = 0.07

transparency of the shadow (0 = transparent, 1 = opaque)

+ +

shadowDepth

this.shadowDepth = 4

number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.

+ +

background

this.background = "#efefef"

background color of the inside of the gauge.

+ +

ringColor

this.ringColor = "#BBC6D0"

color of the outer ring, hub, and needle of the gauge.

+ +

tickColor

this.tickColor = "989898"

color of the tick marks around the gauge.

+ +

ringWidth

this.ringWidth = null

width of the ring around the gauge.  Auto computed by default.

+ +

min

this.min

Minimum value on the gauge.  Auto computed by default

+ +

max

this.max

Maximum value on the gauge.  Auto computed by default

+ +

ticks

this.ticks = []

Array of tick values.  Auto computed by default.

+ +

showTicks

this.showTicks = true

true to show ticks around gauge.

+ +

showTickLabels

this.showTickLabels = true

true to show tick labels next to ticks.

+ +

label

this.label = null

A gauge label like ‘kph’ or ‘Volts’

+ +

labelHeightAdjust

this.labelHeightAdjust = 0

Number of Pixels to offset the label up (-) or down (+) from its default position.

+ +

labelPosition

this.labelPosition = 'inside'

Where to position the label, either ‘inside’ or ‘bottom’.

+ +

intervals

this.intervals = []

Array of ranges to be drawn around the gauge.  Array of form:

[value1, value2, ...]

indicating the values for the first, second, ... intervals.

+ +

intervalColors

this.intervalColors = [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"]

Array of colors to use for the intervals.

+ +

intervalInnerRadius

this.intervalInnerRadius = null

Radius of the inner circle of the interval ring.

+ +

intervalOuterRadius

this.intervalOuterRadius = null

Radius of the outer circle of the interval ring.

+ +

tickSpacing

this.tickSpacing = 30

Degrees between ticks.  This is a target number, if incompatible span and ticks are supplied, a suitable spacing close to this value will be computed.

+ +

hubRadius

this.hubRadius = null

Radius of the hub at the bottom center of gauge which the needle attaches to.  Auto computed by default

+ +

tickPadding

this.tickPadding = null

padding of the tick marks to the outer ring and the tick labels to marks.  Auto computed by default.

+ +

needleThickness

this.needleThickness = null

Maximum thickness the needle.  Auto computed by default.

+ +

needlePad

this.needlePad = 6

Padding between needle and inner edge of the ring when the needle is at the min or max gauge value.

+ +

pegNeedle

this.pegNeedle = true

True will stop needle just below/above the min/max values if data is below/above min/max, as if the meter is “pegged”.

+ +
+ + + + + + + + + + +
this.diameter = null
Outer diameter of the meterGauge, auto computed by default
this.padding = null
padding between the meterGauge and plot edges, auto calculated by default.
this.shadowOffset = 2
offset of the shadow from the gauge ring and offset of each succesive stroke of the shadow from the last.
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowDepth = 4
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.background = "#efefef"
background color of the inside of the gauge.
this.ringColor = "#BBC6D0"
color of the outer ring, hub, and needle of the gauge.
this.tickColor = "989898"
color of the tick marks around the gauge.
this.ringWidth = null
width of the ring around the gauge.
this.min
Minimum value on the gauge.
this.max
Maximum value on the gauge.
this.ticks = []
Array of tick values.
this.showTicks = true
true to show ticks around gauge.
this.showTickLabels = true
true to show tick labels next to ticks.
this.label = null
A gauge label like ‘kph’ or ‘Volts’
this.labelHeightAdjust = 0
Number of Pixels to offset the label up (-) or down (+) from its default position.
this.labelPosition = 'inside'
Where to position the label, either ‘inside’ or ‘bottom’.
this.intervals = []
Array of ranges to be drawn around the gauge.
this.intervalColors = [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"]
Array of colors to use for the intervals.
this.intervalInnerRadius = null
Radius of the inner circle of the interval ring.
this.intervalOuterRadius = null
Radius of the outer circle of the interval ring.
this.tickSpacing = 30
Degrees between ticks.
this.hubRadius = null
Radius of the hub at the bottom center of gauge which the needle attaches to.
this.tickPadding = null
padding of the tick marks to the outer ring and the tick labels to marks.
this.needleThickness = null
Maximum thickness the needle.
this.needlePad = 6
Padding between needle and inner edge of the ring when the needle is at the min or max gauge value.
this.pegNeedle = true
True will stop needle just below/above the min/max values if data is below/above min/max, as if the meter is “pegged”.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-ohlcRenderer-js.html @@ -0,0 +1,65 @@ + + +$.jqplot.OHLCRenderer + + + + + + + + + +

jqPlot Plugin to draw Open Hi Low Close, Candlestick and Hi Low Close charts.

To use this plugin, include the renderer js file in your source:

<script type="text/javascript" src="plugins/jqplot.ohlcRenderer.js"></script>

You will most likely want to use a date axis renderer for the x axis also, so include the date axis render js file also:

<script type="text/javascript" src="plugins/jqplot.dateAxisRenderer.js"></script>

Then you set the renderer in the series options on your plot

series: [{renderer:$.jqplot.OHLCRenderer}]

For OHLC and candlestick charts, data should be specified like so:

dat = [['07/06/2009',138.7,139.68,135.18,135.4], ['06/29/2009',143.46,144.66,139.79,140.02], ...]

If the data array has only 4 values per point instead of 5, the renderer will create a Hi Low Close chart instead.  In that case, data should be supplied like:

dat = [['07/06/2009',139.68,135.18,135.4], ['06/29/2009',144.66,139.79,140.02], ...]

To generate a candlestick chart instead of an OHLC chart, set the “candlestick” option to true:

series: [{renderer:$.jqplot.OHLCRenderer, rendererOptions:{candleStick:true}}],
Summary
$.jqplot.OHLCRendererjqPlot Plugin to draw Open Hi Low Close, Candlestick and Hi Low Close charts.
Properties
candleSticktrue to render chart as candleStick.
tickLengthlength of the line in pixels indicating open and close price.
bodyWidthwidth of the candlestick body in pixels.
openColorcolor of the open price tick mark.
closeColorcolor of the close price tick mark.
wickColorcolor of the hi-lo line thorugh the candlestick body.
fillUpBodytrue to render an “up” day (close price greater than open price) with a filled candlestick body.
fillDownBodytrue to render a “down” day (close price lower than open price) with a filled candlestick body.
upBodyColorColor of candlestick body of an “up” day.
downBodyColorColor of candlestick body on a “down” day.
hlctrue if is a hi-low-close chart (no open price).
lineWidthWidth of the hi-low line and open/close ticks.
+ +

Properties

+ +

candleStick

this.candleStick = false

true to render chart as candleStick.  Must have an open price, cannot be a hlc chart.

+ +

tickLength

this.tickLength = 'auto'

length of the line in pixels indicating open and close price.  Default will auto calculate based on plot width and number of points displayed.

+ +

bodyWidth

this.bodyWidth = 'auto'

width of the candlestick body in pixels.  Default will auto calculate based on plot width and number of candlesticks displayed.

+ +

openColor

this.openColor = null

color of the open price tick mark.  Default is series color.

+ +

closeColor

this.closeColor = null

color of the close price tick mark.  Default is series color.

+ +

wickColor

this.wickColor = null

color of the hi-lo line thorugh the candlestick body.  Default is the series color.

+ +

fillUpBody

this.fillUpBody = false

true to render an “up” day (close price greater than open price) with a filled candlestick body.

+ +

fillDownBody

this.fillDownBody = true

true to render a “down” day (close price lower than open price) with a filled candlestick body.

+ +

upBodyColor

this.upBodyColor = null

Color of candlestick body of an “up” day.  Default is series color.

+ +

downBodyColor

this.downBodyColor = null

Color of candlestick body on a “down” day.  Default is series color.

+ +

hlc

this.hlc = false

true if is a hi-low-close chart (no open price).  This is determined automatically from the series data.

+ +

lineWidth

this.lineWidth = 1.5

Width of the hi-low line and open/close ticks.

+ +
+ + + + + + + + + + +
this.candleStick = false
true to render chart as candleStick.
this.tickLength = 'auto'
length of the line in pixels indicating open and close price.
this.bodyWidth = 'auto'
width of the candlestick body in pixels.
this.openColor = null
color of the open price tick mark.
this.closeColor = null
color of the close price tick mark.
this.wickColor = null
color of the hi-lo line thorugh the candlestick body.
this.fillUpBody = false
true to render an “up” day (close price greater than open price) with a filled candlestick body.
this.fillDownBody = true
true to render a “down” day (close price lower than open price) with a filled candlestick body.
this.upBodyColor = null
Color of candlestick body of an “up” day.
this.downBodyColor = null
Color of candlestick body on a “down” day.
this.hlc = false
true if is a hi-low-close chart (no open price).
this.lineWidth = 1.5
Width of the hi-low line and open/close ticks.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-pieRenderer-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-pieRenderer-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-pieRenderer-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-pieRenderer-js.html @@ -0,0 +1,93 @@ + + +$.jqplot.PieRenderer + + + + + + + + + +

Plugin renderer to draw a pie chart. x values, if present, will be used as slice labels. y values give slice size.

To use this renderer, you need to include the pie renderer plugin, for example:

<script type="text/javascript" src="plugins/jqplot.pieRenderer.js"></script>

Properties described here are passed into the $.jqplot function as options on the series renderer.  For example:

plot2 = $.jqplot('chart2', [s1, s2], {
+    seriesDefaults: {
+        renderer:$.jqplot.PieRenderer,
+        rendererOptions:{
+             sliceMargin: 2,
+             startAngle: -90
+         }
+     }
+});

A pie plot will trigger events on the plot target according to user interaction.  All events return the event object, the series index, the point (slice) index, and the point data for the appropriate slice.

’jqplotDataMouseOver’triggered when user mouseing over a slice.
’jqplotDataHighlight’triggered the first time user mouses over a slice, if highlighting is enabled.
’jqplotDataUnhighlight’triggered when a user moves the mouse out of a highlighted slice.
’jqplotDataClick’triggered when the user clicks on a slice.
’jqplotDataRightClick’tiggered when the user right clicks on a slice if the “captureRightClick” option is set to true on the plot.
Summary
$.jqplot.PieRendererPlugin renderer to draw a pie chart.
Properties
diameterOuter diameter of the pie, auto computed by default
paddingpadding between the pie and plot edges, legend, etc.
sliceMarginangular spacing between pie slices in degrees.
filltrue or false, wether to fil the slices.
shadowOffsetoffset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
shadowAlphatransparency of the shadow (0 = transparent, 1 = opaque)
shadowDepthnumber of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
highlightMouseOverTrue to highlight slice when moused over.
highlightMouseDownTrue to highlight when a mouse button is pressed over a slice.
highlightColorsan array of colors to use when highlighting a slice.
dataLabelsEither ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
showDataLabelstrue to show data labels on slices.
dataLabelFormatStringFormat string for data labels.
dataLabelThreshold
dataLabelPositionFactorA Multiplier (0-1) of the pie radius which controls position of label on slice.
dataLabelNudgeNumber of pixels to slide the label away from (+) or toward (-) the center of the pie.
dataLabelCenterOnTrue to center the data label at its position.
startAngleAngle to start drawing pie in degrees.
$.jqplot.PieLegendRendererLegend Renderer specific to pie plots.
Properties
numberRowsMaximum number of rows in the legend.
numberColumnsMaximum number of columns in the legend.
+ +

Properties

+ +

diameter

this.diameter = null

Outer diameter of the pie, auto computed by default

+ +

padding

this.padding = 20

padding between the pie and plot edges, legend, etc.

+ +

sliceMargin

this.sliceMargin = 0

angular spacing between pie slices in degrees.

+ +

fill

this.fill = true

true or false, wether to fil the slices.

+ +

shadowOffset

this.shadowOffset = 2

offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.

+ +

shadowAlpha

this.shadowAlpha = 0.07

transparency of the shadow (0 = transparent, 1 = opaque)

+ +

shadowDepth

this.shadowDepth = 5

number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.

+ +

highlightMouseOver

this.highlightMouseOver = true

True to highlight slice when moused over.  This must be false to enable highlightMouseDown to highlight when clicking on a slice.

+ +

highlightMouseDown

this.highlightMouseDown = false

True to highlight when a mouse button is pressed over a slice.  This will be disabled if highlightMouseOver is true.

+ +

highlightColors

this.highlightColors = []

an array of colors to use when highlighting a slice.

+ +

dataLabels

this.dataLabels = 'percent'

Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.  Defaults to percentage of each pie slice.

+ +

showDataLabels

this.showDataLabels = false

true to show data labels on slices.

+ +

dataLabelFormatString

this.dataLabelFormatString = null

Format string for data labels.  If none, ‘%s’ is used for “label” and for arrays, ‘%d’ for value and ‘%d%%’ for percentage.

+ +

dataLabelThreshold

this.dataLabelThreshold = 3
Threshhold in percentage (0100) of pie area, below which no label will be displayed.  This applies to all label types, not just to percentage labels.
+ +

dataLabelPositionFactor

this.dataLabelPositionFactor = 0.52

A Multiplier (0-1) of the pie radius which controls position of label on slice.  Increasing will slide label toward edge of pie, decreasing will slide label toward center of pie.

+ +

dataLabelNudge

this.dataLabelNudge = 2

Number of pixels to slide the label away from (+) or toward (-) the center of the pie.

+ +

dataLabelCenterOn

this.dataLabelCenterOn = true

True to center the data label at its position.  False to set the inside facing edge of the label at its position.

+ +

startAngle

this.startAngle = 0

Angle to start drawing pie in degrees.  According to orientation of canvas coordinate system: 0 = on the positive x axis -90 = on the positive y axis.  90 = on the negaive y axis.  180 or - 180 = on the negative x axis.

+ +

$.jqplot.PieLegendRenderer

Legend Renderer specific to pie plots.  Set by default when user creates a pie plot.

Summary
Properties
numberRowsMaximum number of rows in the legend.
numberColumnsMaximum number of columns in the legend.
+ +

Properties

+ +

numberRows

this.numberRows = null

Maximum number of rows in the legend.  0 or null for unlimited.

+ +

numberColumns

this.numberColumns = null

Maximum number of columns in the legend.  0 or null for unlimited.

+ +
+ + + + + + + + + + +
this.diameter = null
Outer diameter of the pie, auto computed by default
this.padding = 20
padding between the pie and plot edges, legend, etc.
this.sliceMargin = 0
angular spacing between pie slices in degrees.
this.fill = true
true or false, wether to fil the slices.
this.shadowOffset = 2
offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.highlightMouseOver = true
True to highlight slice when moused over.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a slice.
this.highlightColors = []
an array of colors to use when highlighting a slice.
this.dataLabels = 'percent'
Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
this.showDataLabels = false
true to show data labels on slices.
this.dataLabelFormatString = null
Format string for data labels.
this.dataLabelThreshold = 3
this.dataLabelPositionFactor = 0.52
A Multiplier (0-1) of the pie radius which controls position of label on slice.
this.dataLabelNudge = 2
Number of pixels to slide the label away from (+) or toward (-) the center of the pie.
this.dataLabelCenterOn = true
True to center the data label at its position.
this.startAngle = 0
Angle to start drawing pie in degrees.
this.numberRows = null
Maximum number of rows in the legend.
this.numberColumns = null
Maximum number of columns in the legend.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-pointLabels-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-pointLabels-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-pointLabels-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-pointLabels-js.html @@ -0,0 +1,72 @@ + + +$.jqplot.PointLabels + + + + + + + + + +

Plugin for putting labels at the data points.

To use this plugin, include the js file in your source:

<script type="text/javascript" src="plugins/jqplot.pointLabels.js"></script>

By default, the last value in the data ponit array in the data series is used for the label.  For most series renderers, extra data can be added to the data point arrays and the last value will be used as the label.

For instance, this series:

[[1,4], [3,5], [7,2]]

Would, by default, use the y values in the labels.  Extra data can be added to the series like so:

[[1,4,'mid'], [3 5,'hi'], [7,2,'low']]

And now the point labels would be ‘mid’, ‘low’, and ‘hi’.

Options to the point labels and a custom labels array can be passed into the “pointLabels” option on the series option like so:

series:[{pointLabels:{
+   labels:['mid', 'hi', 'low'],
+   location:'se',
+   ypadding: 12
+   }
+}]

A custom labels array in the options takes precendence over any labels in the series data.  If you have a custom labels array in the options, but still want to use values from the series array as labels, set the “labelsFromSeries” option to true.

By default, html entities (<, >, etc.) are escaped in point labels.  If you want to include actual html markup in the labels, set the “escapeHTML” option to false.

Summary
$.jqplot.PointLabelsPlugin for putting labels at the data points.
Properties
showshow the labels or not.
locationcompass location where to position the label around the point.
labelsFromSeriestrue to use labels within data point arrays.
seriesLabelIndexarray index for location of labels within data point arrays.
labelsarray of arrays of labels, one array for each series.
stackedValuetrue to display value as stacked in a stacked plot.
ypaddingvertical padding in pixels between point and label
xpaddinghorizontal padding in pixels between point and label
escapeHTMLtrue to escape html entities in the labels.
edgeToleranceNumber of pixels that the label must be away from an axis boundary in order to be drawn.
formatterA class of a formatter for the tick text.
formatStringstring passed to the formatter.
hideZerostrue to not show a label for a value which is 0.
+ +

Properties

+ +

show

this.show = $.jqplot.config.enablePlugins

show the labels or not.

+ +

location

this.location = 'n'

compass location where to position the label around the point.  ‘n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘nw’

+ +

labelsFromSeries

this.labelsFromSeries = false

true to use labels within data point arrays.

+ +

seriesLabelIndex

this.seriesLabelIndex = null

array index for location of labels within data point arrays. if null, will use the last element of the data point array.

+ +

labels

this.labels = []

array of arrays of labels, one array for each series.

+ +

stackedValue

this.stackedValue = false

true to display value as stacked in a stacked plot. no effect if labels is specified.

+ +

ypadding

this.ypadding = 6

vertical padding in pixels between point and label

+ +

xpadding

this.xpadding = 6

horizontal padding in pixels between point and label

+ +

escapeHTML

this.escapeHTML = true

true to escape html entities in the labels.  If you want to include markup in the labels, set to false.

+ +

edgeTolerance

this.edgeTolerance = -5

Number of pixels that the label must be away from an axis boundary in order to be drawn.  Negative values will allow overlap with the grid boundaries.

+ +

formatter

this.formatter = $.jqplot.DefaultTickFormatter

A class of a formatter for the tick text.  sprintf by default.

+ +

formatString

this.formatString = ''

string passed to the formatter.

+ +

hideZeros

this.hideZeros = false

true to not show a label for a value which is 0.

+ +
+ + + + + + + + + + +
this.show = $.jqplot.config.enablePlugins
show the labels or not.
this.location = 'n'
compass location where to position the label around the point.
this.labelsFromSeries = false
true to use labels within data point arrays.
this.seriesLabelIndex = null
array index for location of labels within data point arrays.
this.labels = []
array of arrays of labels, one array for each series.
this.stackedValue = false
true to display value as stacked in a stacked plot.
this.ypadding = 6
vertical padding in pixels between point and label
this.xpadding = 6
horizontal padding in pixels between point and label
this.escapeHTML = true
true to escape html entities in the labels.
this.edgeTolerance = -5
Number of pixels that the label must be away from an axis boundary in order to be drawn.
this.formatter = $.jqplot.DefaultTickFormatter
A class of a formatter for the tick text.
this.formatString = ''
string passed to the formatter.
this.hideZeros = false
true to not show a label for a value which is 0.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/plugins/jqplot-trendline-js.html Index: Site/Site_W/jpqplot/docs/files/plugins/jqplot-trendline-js.html ================================================================== --- Site/Site_W/jpqplot/docs/files/plugins/jqplot-trendline-js.html +++ Site/Site_W/jpqplot/docs/files/plugins/jqplot-trendline-js.html @@ -0,0 +1,67 @@ + + +$.jqplot.Trendline + + + + + + + + + +

Plugin which will automatically compute and draw trendlines for plotted data.

Summary
$.jqplot.TrendlinePlugin which will automatically compute and draw trendlines for plotted data.
Properties
showWether or not to show the trend line.
colorCSS color spec for the trend line.
rendererRenderer to use to draw the trend line.
rendererOptionsOptions to pass to the line renderer.
labelLabel for the trend line to use in the legend.
typeEither ‘exponential’, ‘exp’, or ‘linear’.
shadowtrue or false, wether or not to show the shadow.
markerRendererRenderer to use to draw markers on the line.
lineWidthWidth of the trend line.
shadowAngleAngle of the shadow on the trend line.
shadowOffsetpixel offset for each stroke of the shadow.
shadowAlphaAlpha transparency of the shadow.
shadowDepthnumber of strokes to make of the shadow.
+ +

Properties

+ +

show

this.show = $.jqplot.config.enablePlugins

Wether or not to show the trend line.

+ +

color

this.color = '#666666'

CSS color spec for the trend line.  By default this wil be the same color as the primary line.

+ +

renderer

this.renderer = new $.jqplot.LineRenderer()

Renderer to use to draw the trend line.  The data series that is plotted may not be rendered as a line.  Therefore, we use our own line renderer here to draw a trend line.

+ +

rendererOptions

this.rendererOptions = {marker:{show:false}}

Options to pass to the line renderer.  By default, markers are not shown on trend lines.

+ +

label

this.label = ''

Label for the trend line to use in the legend.

+ +

type

this.type = 'linear'

Either ‘exponential’, ‘exp’, or ‘linear’.

+ +

shadow

this.shadow = true

true or false, wether or not to show the shadow.

+ +

markerRenderer

this.markerRenderer = {show:false}

Renderer to use to draw markers on the line.  I think this is wrong.

+ +

lineWidth

this.lineWidth = 1.5

Width of the trend line.

+ +

shadowAngle

this.shadowAngle = 45

Angle of the shadow on the trend line.

+ +

shadowOffset

this.shadowOffset = 1.0

pixel offset for each stroke of the shadow.

+ +

shadowAlpha

this.shadowAlpha = 0.07

Alpha transparency of the shadow.

+ +

shadowDepth

this.shadowDepth = 3

number of strokes to make of the shadow.

+ +
+ + + + + + + + + + +
this.show = $.jqplot.config.enablePlugins
Wether or not to show the trend line.
this.color = '#666666'
CSS color spec for the trend line.
this.renderer = new $.jqplot.LineRenderer()
Renderer to use to draw the trend line.
this.rendererOptions = {marker:{show:false}}
Options to pass to the line renderer.
this.label = ''
Label for the trend line to use in the legend.
this.type = 'linear'
Either ‘exponential’, ‘exp’, or ‘linear’.
this.shadow = true
true or false, wether or not to show the shadow.
this.markerRenderer = {show:false}
Renderer to use to draw markers on the line.
this.lineWidth = 1.5
Width of the trend line.
this.shadowAngle = 45
Angle of the shadow on the trend line.
this.shadowOffset = 1.0
pixel offset for each stroke of the shadow.
this.shadowAlpha = 0.07
Alpha transparency of the shadow.
this.shadowDepth = 3
number of strokes to make of the shadow.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/files/usage-txt.html Index: Site/Site_W/jpqplot/docs/files/usage-txt.html ================================================================== --- Site/Site_W/jpqplot/docs/files/usage-txt.html +++ Site/Site_W/jpqplot/docs/files/usage-txt.html @@ -0,0 +1,58 @@ + + +jqPlot Usage + + + + + + + + + +

Usage Documentation

Introduction

jqPlot is a jQuery plugin to generate pure client-side javascript charts in your web pages.

The jqPlot home page is at http://www.jqplot.com/.

The project page and downloads are at http://www.bitbucket.org/cleonello/jqplot/.

Below are a few examples to demonstrate jqPlot usage.  These plots are shown as static images.  Many more examples of dynamically rendered plots can be seen on the test and examples pages here: ../../tests/.

Include the Files

jqPlot requires jQuery (1.4+ required for certain features). jQuery 1.4.1 is included in the distribution.  To use jqPlot include jquery, the jqPlot jQuery plugin, jqPlot css file and optionally the excanvas script for IE support in your web page:

<!--[if IE]><script language="javascript" type="text/javascript" src="excanvas.js"></script><![endif]-->
+<script language="javascript" type="text/javascript" src="jquery-1.4.2.min.js"></script>
+<script language="javascript" type="text/javascript" src="jquery.jqplot.min.js"></script>
+<link rel="stylesheet" type="text/css" href="jquery.jqplot.css" />

Add a plot container

Add a container (target) to your web page where you want your plot to show up.  Be sure to give your target a width and a height:

<div id="chartdiv" style="height:400px;width:300px; "></div>

Create a plot

Then, create the actual plot by calling the $.jqplot plugin with the id of your target and some data:

$.jqplot('chartdiv',  [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]]);

Which will produce a chart like:

Plot Options

You can customize the plot by passing options to the $.jqplot function.  Options are described in jqPlot Options in the jqPlotOptions.txt file.  An example of options usage:

$.jqplot('chartdiv',  [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]],
+{ title:'Exponential Line',
+  axes:{yaxis:{min:-10, max:240}},
+  series:[{color:'#5FAB78'}]
+});

Which will produce a plot like:

Using Plugins

You can use jqPlot plugins (that is, plugins to the jqPlot plugin) by including them in your html after you include the jqPlot plugin.  Here is how to include the log axis plugin:

<link rel="stylesheet" type="text/css" href="jquery.jqplot.css" />
+<!--[if IE]><script language="javascript" type="text/javascript" src="excanvas.js"></script><![endif]-->
+<script language="javascript" type="text/javascript" src="jquery-1.4.2.min.js"></script>
+<script language="javascript" type="text/javascript" src="jquery.jqplot.min.js"></script>
+<script language="javascript" type="text/javascript" src="jqplot.logAxisRenderer.js"></script>

Important note: For jqplot builds r529 and above (0.9.7r529 and higher), you must explicitly enable plugins via either the { show: true } plugin option to the plot or by using the $.jqplot.config.enablePlugins = true; config options set on the page before plot creation.  Only plugins that can be immediately active upon loading are affected.  This includes non-renderer plugins like cursor, dragable, highlighter, and trendline.

Here is a the same $.jqplot call but with a log y axis:

$.jqplot('chartdiv',  [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]],
+{ title:'Exponential Line',
+  axes:{yaxis:{renderer: $.jqplot.LogAxisRenderer}},
+  series:[{color:'#5FAB78'}]
+});

Which produces a plot like:

You can further customize with options specific to the log axis plugin:

$.jqplot('chartdiv',  [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]],
+{ title:'Exponential Line',
+  axes:{yaxis:{renderer: $.jqplot.LogAxisRenderer, tickDistribution:'power'}},
+  series:[{color:'#5FAB78'}]
+});

Which makes a plot like:

For a full list of options, see jqPlot Options in the jqPlotOptions.txt file.

You can add as many plugins as you wish.  Order is generally not important.  Some plugins, like the highlighter plugin which highlights data points near the mouse, don’t need any extra options or setup to function.  Highlighter does have additional options which the user can set.

Other plugins, the barRenderer for example, provide functionality the must be specified in the chart options object.  To render a series as a bar graph with the bar renderer, you would first include the plugin after jqPlot:

<script language="javascript" type="text/javascript" src="plugins/jqplot.barRenderer.min.js"></script>

Then you would create a chart like:

$.jqplot('chartdiv',  [[34.53, 56.32, 25.1, 18.6]], {series:[{renderer:$.jqplot.BarRenderer}]});

Here the default LineRenderer is replaced by a BarRenderer to generate a bar graph for the first (an only) series.

+ +
+ + + + + + + + + + +
This document is out of date.
+ + + + + + + + ADDED Site/Site_W/jpqplot/docs/index.html Index: Site/Site_W/jpqplot/docs/index.html ================================================================== --- Site/Site_W/jpqplot/docs/index.html +++ Site/Site_W/jpqplot/docs/index.html @@ -0,0 +1,1 @@ + ADDED Site/Site_W/jpqplot/docs/index/Classes.html Index: Site/Site_W/jpqplot/docs/index/Classes.html ================================================================== --- Site/Site_W/jpqplot/docs/index/Classes.html +++ Site/Site_W/jpqplot/docs/index/Classes.html @@ -0,0 +1,58 @@ + + +Class Index + + + + + + + + + +
Class Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
$#!
 $.jqplot
 $.jqplot.AxisLabelRenderer
 $.jqplot.AxisTickRenderer
 $.jqplot.BarRenderer
 $.jqplot.BezierCurveRenderer.js
 $.jqplot.BlockRenderer
 $.jqplot.BubbleRenderer
 $.jqplot.CanvasAxisLabelRenderer
 $.jqplot.CanvasAxisTickRenderer
 $.jqplot.CanvasGridRenderer
 $.jqplot.CategoryAxisRenderer
 $.jqplot.ciParser
 $.jqplot.Cursor
 $.jqplot.DateAxisRenderer
 $.jqplot.DivTitleRenderer
 $.jqplot.DonutLegendRenderer
 $.jqplot.DonutRenderer
 $.jqplot.Dragable
 $.jqplot.FunnelLegendRenderer
 $.jqplot.FunnelRenderer
 $.jqplot.Highlighter
 $.jqplot.LinearAxisRenderer
 $.jqplot.LineRenderer
 $.jqplot.LogAxisRenderer
 $.jqplot.MarkerRenderer
 $.jqplot.MekkoAxisRenderer
 $.jqplot.MekkoLegendRenderer
 $.jqplot.MekkoRenderer
 $.jqplot.MeterGaugeRenderer
 $.jqplot.OHLCRenderer
 $.jqplot.PieLegendRenderer
 $.jqplot.PieRenderer
 $.jqplot.PointLabels
 $.jqplot.shadowRenderer
 $.jqplot.shapeRenderer
 $.jqplot.ThemeEngine
 $.jqplot.Trendline
A
 Axis
G
 Grid
J
 jqPlot
L
 Legend
S
 Series
T
 Title
+ +
jQuery function called by the user to create a plot.
Renderer to place labels on the axes.
A “tick” object showing the value of a tick/gridline on the plot.
A plugin renderer for jqPlot to draw a bar plot.
Renderer which draws lines as stacked bezier curves.
Plugin renderer to draw a x-y block chart.
Plugin renderer to draw a bubble chart.
Renderer to draw axis labels with a canvas element to support advanced featrues such as rotated text.
Renderer to draw axis ticks with a canvas element to support advanced featrues such as rotated text.
The default jqPlot grid renderer, creating a grid on a canvas element.
A plugin for jqPlot to render a category style axis, with equal pixel spacing between y data values of a series.
Data Renderer which converts a custom JSON data object into jqPlot data format.
Plugin class representing the cursor as displayed on the plot.
A plugin for a jqPlot to render an axis as a series of date values.
The default title renderer for jqPlot.
Legend Renderer specific to donut plots.
Plugin renderer to draw a donut chart.
Plugin to make plotted points dragable by the user.
Legend Renderer specific to funnel plots.
Plugin renderer to draw a funnel chart.
Plugin which will highlight data points when they are moused over.
The default jqPlot axis renderer, creating a numeric axis.
The default line renderer for jqPlot, this class has no options beyond the Series class.
A plugin for a jqPlot to render a logarithmic axis.
The default jqPlot marker renderer, rendering the points on the line.
An axis renderer for a Mekko chart.
Legend renderer used by mekko charts with options for controlling number or rows and columns as well as placement outside of plot area.
Draws a Mekko style chart which shows 3 dimensional data on a 2 dimensional graph.
Plugin renderer to draw a meter gauge chart.
jqPlot Plugin to draw Open Hi Low Close, Candlestick and Hi Low Close charts.
Legend Renderer specific to pie plots.
Plugin renderer to draw a pie chart.
Plugin for putting labels at the data points.
The default jqPlot shadow renderer, rendering shadows behind shapes.
The default jqPlot shape renderer.
Theme Engine provides a programatic way to change some of the more common jqplot styling options such as fonts, colors and grid options.
Plugin which will automatically compute and draw trendlines for plotted data.
+ + + +
An individual axis object.
+ + + +
Object representing the grid on which the plot is drawn.
+ + + +
Plot object returned by call to $.jqplot.
+ + + +
Legend object.
+ + + +
An individual data series object.
+ + + +
Plot Title object.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/Files.html Index: Site/Site_W/jpqplot/docs/index/Files.html ================================================================== --- Site/Site_W/jpqplot/docs/index/Files.html +++ Site/Site_W/jpqplot/docs/index/Files.html @@ -0,0 +1,34 @@ + + +File Index + + + + + + + + + +
File Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
J
 jqplot.enhancedLegendRenderer.js
+ + + +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/Functions.html Index: Site/Site_W/jpqplot/docs/index/Functions.html ================================================================== --- Site/Site_W/jpqplot/docs/index/Functions.html +++ Site/Site_W/jpqplot/docs/index/Functions.html @@ -0,0 +1,66 @@ + + +Function Index + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
C
 copy, $.jqplot.ThemeEngine
D
 draw
 drawSeries, jqPlot
G
 get, $.jqplot.ThemeEngine
 getThemeNames, $.jqplot.ThemeEngine
 getThemes, $.jqplot.ThemeEngine
I
 init, jqPlot
M
 makeGridData
 moveBlock, $.jqplot.BlockRenderer
 moveSeriesToBack, jqPlot
 moveSeriesToFront, jqPlot
N
 newTheme, $.jqplot.ThemeEngine
R
 redraw, jqPlot
 reInitialize, jqPlot
 remove, $.jqplot.ThemeEngine
 rename, $.jqplot.ThemeEngine
 replot, jqPlot
 resetAxesScale, jqPlot
 restoreOriginalSeriesOrder, jqPlot
 restorePreviousSeriesOrder, jqPlot
S
 setGridData
Z
 zoomProxy, $.jqplot.Cursor.$.jqplot.Cursor
+ +
$.jqplot.ThemeEngine.prototype.copy = function (sourceName,
targetName,
obj)
Create a copy of an existing theme in the themeEngine, adding it the themeEngine.
+ + + +
$.jqplot.ShadowRenderer.prototype.draw = function(ctx,
points,
options)
draws an transparent black (i.e.
$.jqplot.ShapeRenderer.prototype.draw = function(ctx,
points,
options)
draws the shape.
this.draw = function()
Draws all elements of the plot into the container.
this.drawSeries = function(options,
idx)
Redraws all or just one series on the plot.
+ + + +
$.jqplot.ThemeEngine.prototype.get = function(name)
Get and return the named theme or the active theme if no name given.
$.jqplot.ThemeEngine.prototype.getThemeNames = function()
Return the list of theme names in this manager in alpha-numerical order.
$.jqplot.ThemeEngine.prototype.getThemes = function()
Return a list of themes in alpha-numerical order by name.
+ + + +
this.init = function(target,
data,
options)
sets the plot target, checks data and applies user options to plot.
+ + + +
$.jqplot.BezierCurveRenderer.prototype.makeGridData = function(data,
plot)
converts any arbitrary data values to grid coordinates and returns them.
$.jqplot.LineRenderer.prototype.makeGridData = function(data,
plot)
converts any arbitrary data values to grid coordinates and returns them.
$.jqplot.MekkoRenderer.prototype.makeGridData = function(data,
plot)
converts any arbitrary data values to grid coordinates and returns them.
this.moveBlock = function (idx,
x,
y,
duration)
Moves an individual block.
this.moveSeriesToBack = function (idx)
This method requires jQuery 1.4+ Moves the specified series canvas behind all other series canvases.
this.moveSeriesToFront = function (idx)
This method requires jQuery 1.4+ Moves the specified series canvas in front of all other series canvases.
+ + + +
$.jqplot.ThemeEngine.prototype.newTheme = function(name,
obj)
Create a new theme based on the default theme, adding it the themeEngine.
+ + + +
this.redraw = function(clear)
Empties the plot target div and redraws the plot.
this.reInitialize = function ()
reinitialize plot for replotting.
$.jqplot.ThemeEngine.prototype.remove = function(name)
Remove the given theme from the themeEngine.
$.jqplot.ThemeEngine.prototype.rename = function (oldName,
newName)
Rename a theme.
this.replot = function(options)
Does a reinitialization of the plot followed by a redraw.
this.resetAxesScale = function(axes)
Reset the specified axes min, max, numberTicks and tickInterval properties to null or reset these properties on all axes if no list of axes is provided.
this.restoreOriginalSeriesOrder = function ()
This method requires jQuery 1.4+ Restore the series canvas order to its original order when the plot was created.
this.restorePreviousSeriesOrder = function ()
This method requires jQuery 1.4+ Restore the series canvas order to its previous state.
+ + + +
$.jqplot.BezierCurveRenderer.prototype.setGridData = function(plot)
converts the user data values to grid coordinates and stores them in the gridData array.
$.jqplot.LineRenderer.prototype.setGridData = function(plot)
converts the user data values to grid coordinates and stores them in the gridData array.
$.jqplot.MekkoRenderer.prototype.setGridData = function(plot)
converts the user data values to grid coordinates and stores them in the gridData array.
+ + + +
$.jqplot.Cursor.zoomProxy = function(targetPlot,
controllerPlot)
links targetPlot to controllerPlot so that plot zooming of targetPlot will be controlled by zooming on the controllerPlot.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/General.html Index: Site/Site_W/jpqplot/docs/index/General.html ================================================================== --- Site/Site_W/jpqplot/docs/index/General.html +++ Site/Site_W/jpqplot/docs/index/General.html @@ -0,0 +1,46 @@ + + +Index + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
$#!
 $.jqplot
 $.jqplot.AxisLabelRenderer
 $.jqplot.AxisTickRenderer
 $.jqplot.BarRenderer
 $.jqplot.BezierCurveRenderer.js
 $.jqplot.BlockRenderer
 $.jqplot.BubbleRenderer
 $.jqplot.CanvasAxisLabelRenderer
 $.jqplot.CanvasAxisTickRenderer
 $.jqplot.CanvasGridRenderer
 $.jqplot.CategoryAxisRenderer
 $.jqplot.ciParser
 $.jqplot.Cursor
 $.jqplot.DateAxisRenderer
 $.jqplot.DivTitleRenderer
 $.jqplot.DonutLegendRenderer
 $.jqplot.DonutRenderer
 $.jqplot.Dragable
 $.jqplot.FunnelLegendRenderer
 $.jqplot.FunnelRenderer
 $.jqplot.Highlighter
 $.jqplot.LinearAxisRenderer
 $.jqplot.LineRenderer
 $.jqplot.LogAxisRenderer
 $.jqplot.MarkerRenderer
 $.jqplot.MekkoAxisRenderer
 $.jqplot.MekkoLegendRenderer
 $.jqplot.MekkoRenderer
 $.jqplot.MeterGaugeRenderer
 $.jqplot.OHLCRenderer
 $.jqplot.PieLegendRenderer
 $.jqplot.PieRenderer
 $.jqplot.PointLabels
 $.jqplot.shadowRenderer
 $.jqplot.shapeRenderer
 $.jqplot.ThemeEngine
 $.jqplot.Trendline
A
 activeTheme, $.jqplot.ThemeEngine
 addLegendRowHooks, $.jqplot.$.jqplot
 alpha, $.jqplot.shadowRenderer
 angle
 autoscale, Axis
 autoscaleBubbles, $.jqplot.BubbleRenderer
 autoscaleMultiplier, $.jqplot.BubbleRenderer
 autoscalePointsFactor, $.jqplot.BubbleRenderer
 Available Options
 axes, jqPlot
 axesDefaults, jqPlot
 Axis
 axisDefaults, $.jqplot.LogAxisRenderer
B
 background
 barDirection, $.jqplot.BarRenderer
 barLabelOptions, $.jqplot.MekkoAxisRenderer
 barLabelRenderer, $.jqplot.MekkoAxisRenderer
 barLabels, $.jqplot.MekkoAxisRenderer
 barMargin, $.jqplot.BarRenderer
 barPadding, $.jqplot.BarRenderer
 barWidth, $.jqplot.BarRenderer
 bodyWidth, $.jqplot.OHLCRenderer
 border, Legend
 borderColor
 borderWidth
 breakOnNull, Series
 bringSeriesToFront, $.jqplot.Highlighter
 bubbleAlpha, $.jqplot.BubbleRenderer
 bubbleGradients, $.jqplot.BubbleRenderer
C
 candleStick, $.jqplot.OHLCRenderer
 Change Log
 Changes
 clearRect, $.jqplot.shapeRenderer
 clickReset, $.jqplot.Cursor
 closeColor, $.jqplot.OHLCRenderer
 color
 constrainOutsideZoom, $.jqplot.Cursor
 constrainTo, $.jqplot.Dragable
 constrainZoomTo, $.jqplot.Cursor
 copy, $.jqplot.ThemeEngine
 Copyright&License
 css, $.jqplot.BlockRenderer
 cursorLegendFormatString, $.jqplot.Cursor
+ +
jQuery function called by the user to create a plot.
Renderer to place labels on the axes.
A “tick” object showing the value of a tick/gridline on the plot.
A plugin renderer for jqPlot to draw a bar plot.
Renderer which draws lines as stacked bezier curves.
Plugin renderer to draw a x-y block chart.
Plugin renderer to draw a bubble chart.
Renderer to draw axis labels with a canvas element to support advanced featrues such as rotated text.
Renderer to draw axis ticks with a canvas element to support advanced featrues such as rotated text.
The default jqPlot grid renderer, creating a grid on a canvas element.
A plugin for jqPlot to render a category style axis, with equal pixel spacing between y data values of a series.
Data Renderer which converts a custom JSON data object into jqPlot data format.
Plugin class representing the cursor as displayed on the plot.
A plugin for a jqPlot to render an axis as a series of date values.
The default title renderer for jqPlot.
Legend Renderer specific to donut plots.
Plugin renderer to draw a donut chart.
Plugin to make plotted points dragable by the user.
Legend Renderer specific to funnel plots.
Plugin renderer to draw a funnel chart.
Plugin which will highlight data points when they are moused over.
The default jqPlot axis renderer, creating a numeric axis.
The default line renderer for jqPlot, this class has no options beyond the Series class.
A plugin for a jqPlot to render a logarithmic axis.
The default jqPlot marker renderer, rendering the points on the line.
An axis renderer for a Mekko chart.
Legend renderer used by mekko charts with options for controlling number or rows and columns as well as placement outside of plot area.
Draws a Mekko style chart which shows 3 dimensional data on a 2 dimensional graph.
Plugin renderer to draw a meter gauge chart.
jqPlot Plugin to draw Open Hi Low Close, Candlestick and Hi Low Close charts.
Legend Renderer specific to pie plots.
Plugin renderer to draw a pie chart.
Plugin for putting labels at the data points.
The default jqPlot shadow renderer, rendering shadows behind shapes.
The default jqPlot shape renderer.
Theme Engine provides a programatic way to change some of the more common jqplot styling options such as fonts, colors and grid options.
Plugin which will automatically compute and draw trendlines for plotted data.
+ + + +
this.activeTheme=null
Pointer to currently active theme
called at the end of legend draw, so plugins can add rows to the legend table.
this.alpha = 0.07
alpha transparency of shadow stroke.
this.angle = 0
angle of text, measured clockwise from x axis.
this.angle = 0
angle of text, measured clockwise from x axis.
this.angle = 45
Angle of the shadow in degrees.
this.autoscale = false
Autoscale the axis min and max values to provide sensible tick spacing.
this.autoscaleBubbles = true
True to scale the bubble radius based on plot size.
this.autoscaleMultiplier = 1.0
Multiplier the bubble size if autoscaleBubbles is true.
this.autoscalePointsFactor = -0.07
Factor which decreases bubble size based on how many bubbles on on the chart.
See jqPlot Options for a list of options available thorugh the options object (not complete yet!)
this.axes = {xaxis: new Axis('xaxis'), yaxis: new Axis('yaxis'), x2axis: new Axis('x2axis'), y2axis: new Axis('y2axis'), y3axis: new Axis('y3axis'), y4axis: new Axis('y4axis'), y5axis: new Axis('y5axis'), y6axis: new Axis('y6axis'), y7axis: new Axis('y7axis'), y8axis: new Axis('y8axis'), y9axis: new Axis('y9axis')}
up to 4 axes are supported, each with it’s own options, See Axis for axis specific options.
default options that will be applied to all axes.
An individual axis object.
Default properties which will be applied directly to the series.
+ + + +
this.background = "#efefef"
background color of the inside of the gauge.
this.background = '#fffdf6'
css spec for the background color.
this.background
css spec for the background of the legend box.
this.barDirection = 'vertical'
‘vertical’ = up and down bars, ‘horizontal’ = side to side bars
this.barLabelOptions = {}
options object to pass to the bar label renderer.
this.barLabelRenderer = $.jqplot.AxisLabelRenderer
renderer to use to draw labels under each bar.
this.barLabels = this.barLabels || []
array of labels to put under each bar.
this.barMargin = 10
Number of pixels between groups of bars at adjacent axis values.
this.barPadding = 8
Number of pixels between adjacent bars at the same axis value.
this.barWidth = null
Width of the bar in pixels (auto by devaul).
this.bodyWidth = 'auto'
width of the candlestick body in pixels.
this.border
css spec for the border around the legend box.
this.borderColor = null
color of the borders between areas on the chart
this.borderColor = null
color of the border adjacent to the axis.
this.borderColor = '#999999'
css spec for the color of the grid border.
this.borderWidth = null
width of line stroked at the border of the axis.
this.borderWidth = 2.0
width of the border in pixels.
this.breakOnNull = false
Not implemented.
this.bringSeriesToFront = false
This option requires jQuery 1.4+ True to bring the series of the highlighted point to the front of other series.
this.bubbleAlpha = 1.0
Alpha transparency to apply to all bubbles in this series.
this.bubbleGradients = false
True to color the bubbles with gradient fills instead of flat colors.
+ + + +
this.candleStick = false
true to render chart as candleStick.
See Change Log
this.clearRect = false
true to cear a rectangle.
this.clickReset = false
Will reset plot zoom if single click on plot without drag.
this.closeColor = null
color of the close price tick mark.
this.color
CSS color spec for the dragged point (and adjacent line segment or bar).
this.color = '#666666'
color of marker.
this.color = '#666666'
CSS color spec for the trend line.
this.color
css color spec for the series
this.constrainOutsideZoom = true
True to limit actual zoom area to edges of grid, even when zooming outside of plot area.
this.constrainTo = 'none'
Constrain dragging motion to an axis or to none.
this.constrainZoomTo = 'none'
‘none’, ‘x’ or ‘y’
$.jqplot.ThemeEngine.prototype.copy = function (sourceName,
targetName,
obj)
Create a copy of an existing theme in the themeEngine, adding it the themeEngine.
this.css = {padding:'2px', border:'1px solid #999', textAlign:'center'}
default css styles that will be applied to all data blocks.
this.cursorLegendFormatString = $.jqplot.Cursor.cursorLegendFormatString
Format string used in the cursor legend.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/General2.html Index: Site/Site_W/jpqplot/docs/index/General2.html ================================================================== --- Site/Site_W/jpqplot/docs/index/General2.html +++ Site/Site_W/jpqplot/docs/index/General2.html @@ -0,0 +1,46 @@ + + +Index + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 data, jqPlot
 dataLabelCenterOn, $.jqplot.PieRenderer
 dataLabelFormatString
 dataLabelNudge
 dataLabelPositionFactor
 dataLabels
 dataLabelThreshold
 dblClickReset, $.jqplot.Cursor
 defaultAxisStart, jqPlot
 depth, $.jqplot.shadowRenderer
 diameter
 disableIEFading
 disableStack, Series
 downBodyColor, $.jqplot.OHLCRenderer
 draw
 drawBorder, Grid
 drawGridlines, Grid
 drawSeries, jqPlot
E
 edgeTolerance, $.jqplot.PointLabels
 enableFontSupport
 escapeHtml
 escapeHTML
 eventListenerHooks, $.jqplot.$.jqplot
F
 fadeTooltip, $.jqplot.Highlighter
 fill
 fillAlpha, Series
 fillAndStroke, Series
 fillAxis, Series
 fillColor, Series
 fillDownBody, $.jqplot.OHLCRenderer
 fillRect, $.jqplot.shapeRenderer
 fillStyle, $.jqplot.shapeRenderer
 fillToValue, Series
 fillToZero, Series
 fillUpBody, $.jqplot.OHLCRenderer
 followMouse, $.jqplot.Cursor
 fontFamily
 fontSize
 fontStretch
 fontWeight
 formatString
 formatter
 Functions
G
 get, $.jqplot.ThemeEngine
 getThemeNames, $.jqplot.ThemeEngine
 getThemes, $.jqplot.ThemeEngine
 GPL Version 2
 grid, jqPlot
 Grid
 gridLineColor, Grid
 gridLineWidth, Grid
 groups, $.jqplot.BarRenderer
+ +
this.data = []
user’s data.
this.dataLabelCenterOn = true
True to center the data label at its position.
this.dataLabelFormatString = null
Format string for data labels.
this.dataLabelFormatString = null
Format string for data labels.
this.dataLabelFormatString = null
Format string for data labels.
this.dataLabelNudge = 0
Number of pixels to slide the label away from (+) or toward (-) the center of the pie.
this.dataLabelNudge = 2
Number of pixels to slide the label away from (+) or toward (-) the center of the pie.
this.dataLabelPositionFactor = 0.5
A Multiplier (0-1) of the pie radius which controls position of label on slice.
this.dataLabelPositionFactor = 0.52
A Multiplier (0-1) of the pie radius which controls position of label on slice.
this.dataLabels = 'percent'
Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
this.dataLabels = 'percent'
Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
this.dataLabels = 'percent'
Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
this.dataLabelThreshold = 3
this.dataLabelThreshold = 3
this.dataLabelThreshold = 3
this.dblClickReset = true
Will reset plot zoom if double click on plot without drag.
this.defaultAxisStart = 1
1-D data series are internally converted into 2-D [x,y] data point arrays by jqPlot.
this.depth = 3
how many times the shadow is stroked.
this.diameter = null
Outer diameter of the donut, auto computed by default
this.diameter = null
Outer diameter of the meterGauge, auto computed by default
this.diameter = null
Outer diameter of the pie, auto computed by default
this.disableIEFading = true
true to toggle series with a show/hide method only and not allow fading in/out.
this.disableStack = false
true to not stack this series with other series in the plot.
this.downBodyColor = null
Color of candlestick body on a “down” day.
$.jqplot.ShadowRenderer.prototype.draw = function(ctx,
points,
options)
draws an transparent black (i.e.
$.jqplot.ShapeRenderer.prototype.draw = function(ctx,
points,
options)
draws the shape.
this.draw = function()
Draws all elements of the plot into the container.
this.drawBorder = true
True to draw border around grid.
this.drawGridlines = true
wether to draw the gridlines on the plot.
this.drawSeries = function(options,
idx)
Redraws all or just one series on the plot.
+ + + +
this.edgeTolerance = -5
Number of pixels that the label must be away from an axis boundary in order to be drawn.
this.enableFontSupport = true
true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.
this.enableFontSupport = true
true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.
this.escapeHtml = false
true to escape html in the box label.
this.escapeHtml = true
True to escape html in bubble label text.
this.escapeHTML = false
true to escape HTML entities in the label.
this.escapeHTML = true
true to escape html entities in the labels.
called at the end of plot drawing, binds listeners to the event canvas which lays on top of the grid area.
+ + + +
this.fadeTooltip = true
true = fade in/out tooltip, flase = show/hide tooltip
this.fill = true
true or false, wether to fil the slices.
this.fill = true
true or false, wether to fill the areas.
this.fill = true
true or false, wether to fil the slices.
this.fill = false
whether to fill the shape.
this.fill = false
whether to fill the shape.
this.fill = false
true or false, wether to fill under lines or in bars.
this.fillAlpha
Alpha transparency to apply to the fill under the line.
this.fillAndStroke = false
If true will stroke the line (with color this.color) as well as fill under it.
this.fillAxis = 'y'
Either ‘x’ or ‘y’.
this.fillColor
CSS color spec to use for fill under line.
this.fillDownBody = true
true to render a “down” day (close price lower than open price) with a filled candlestick body.
this.fillRect = false
true to draw shape as a filled rectangle.
this.fillStyle = '#999999'
css color spec for the fill style.
this.fillToValue = 0
fill a filled series to this value on the fill axis.
this.fillToZero = false
true will force bar and filled series to fill toward zero on the fill Axis.
this.fillUpBody = false
true to render an “up” day (close price greater than open price) with a filled candlestick body.
this.followMouse = false
Tooltip follows the mouse, it is not at a fixed location.
this.fontFamily
css spec for the font-family css attribute.
this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'
CSS spec for the font-family css attribute.
this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'
css spec for the font-family css attribute.
this.fontFamily
css font-family spec for the legend text.
this.fontFamily
css font-family spec for the text.
this.fontSize
css spec for the font-size css attribute.
this.fontSize = '11pt'
CSS spec for font size.
this.fontSize = '10pt'
CSS spec for font size.
this.fontSize
css spec for the font-size attribute.
this.fontSize
css font-size spec for the legend text.
this.fontSize
css font-size spec for the text.
this.fontStretch = 1.0
Multiplier to condense or expand font width.
this.fontStretch = 1.0
Multiplier to condense or expand font width.
this.fontWeight = 'normal'
this.fontWeight = 'normal'
CSS spec for fontWeight
this.formatString = ''
string passed to the formatter.
this.formatString = ''
string passed to the formatter.
this.formatString = null
alternative to tooltipFormatString will format the whole tooltip text, populating with x, y values as indicated by tooltipAxes option.
this.formatString = ''
string passed to the formatter.
this.formatter = $.jqplot.DefaultTickFormatter
A class of a formatter for the tick text.
this.formatter = $.jqplot.DefaultTickFormatter
A class of a formatter for the tick text.
this.formatter = $.jqplot.DefaultTickFormatter
A class of a formatter for the tick text.
+ + + +
$.jqplot.ThemeEngine.prototype.get = function(name)
Get and return the named theme or the active theme if no name given.
$.jqplot.ThemeEngine.prototype.getThemeNames = function()
Return the list of theme names in this manager in alpha-numerical order.
$.jqplot.ThemeEngine.prototype.getThemes = function()
Return a list of themes in alpha-numerical order by name.
GNU GENERAL PUBLIC LICENSE Version 2, June 1991
this.grid = new Grid()
See Grid for grid specific options.
Object representing the grid on which the plot is drawn.
this.gridLineColor = '#cccccc'
color of the grid lines.
this.gridLineWidth = 1.0
width of the grid lines.
this.groups = 1
group bars into this many groups
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/General3.html Index: Site/Site_W/jpqplot/docs/index/General3.html ================================================================== --- Site/Site_W/jpqplot/docs/index/General3.html +++ Site/Site_W/jpqplot/docs/index/General3.html @@ -0,0 +1,46 @@ + + +Index + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 hideZeros, $.jqplot.PointLabels
 highlightAlpha, $.jqplot.BubbleRenderer
 highlightColor, $.jqplot.LineRenderer
 highlightColors
 highlightMouseDown
 highlightMouseOver
 hlc, $.jqplot.OHLCRenderer
 Hooks, $.jqplot
 hubRadius, $.jqplot.MeterGaugeRenderer
I
 index, Series
 init, jqPlot
 innerDiameter, $.jqplot.DonutRenderer
 insertBreaks, $.jqplot.BlockRenderer
 intersectionThreshold, $.jqplot.Cursor
 intervalColors, $.jqplot.MeterGaugeRenderer
 intervalInnerRadius, $.jqplot.MeterGaugeRenderer
 intervalOuterRadius, $.jqplot.MeterGaugeRenderer
 intervals, $.jqplot.MeterGaugeRenderer
 Introduction
 isarc
 isMinorTick
J
 jqPlot
 jqPlot Charts
 jqPlot CSS Customization
 jqPlot Options
 jqPlot Pugin Hooks, $.jqplot
 jqPlot Usage
 jqplot.enhancedLegendRenderer.js
L
 label
 labelHeightAdjust, $.jqplot.MeterGaugeRenderer
 labelOptions, Axis
 labelPosition
 labelRenderer, Axis
 labels
 labelsFromSeries, $.jqplot.PointLabels
 legend, jqPlot
 Legend
 lineCap
 lineJoin
 lineWidth
 lineWidthAdjust, $.jqplot.Highlighter
 location
+ +
this.hideZeros = false
true to not show a label for a value which is 0.
this.highlightAlpha = null
Alpha transparency to apply when highlighting bubble.
this.highlightColor = null
color to use when highlighting an area on a filled plot.
this.highlightColors = []
an array of colors to use when highlighting a bar.
this.highlightColors = []
An array of colors to use when highlighting a slice.
this.highlightColors = []
an array of colors to use when highlighting a slice.
this.highlightColors = []
array of colors to use when highlighting an area.
this.highlightColors = []
an array of colors to use when highlighting a slice.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a slice.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a bubble.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a slice.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a area.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over an area on a filled plot.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a slice.
this.highlightMouseOver = true
True to highlight slice when moused over.
this.highlightMouseOver = true
True to highlight bubbles when moused over.
this.highlightMouseOver = true
True to highlight slice when moused over.
this.highlightMouseOver = true
True to highlight area when moused over.
this.highlightMouseOver = true
True to highlight area on a filled plot when moused over.
this.highlightMouseOver = true
True to highlight slice when moused over.
this.hlc = false
true if is a hi-low-close chart (no open price).
this.hubRadius = null
Radius of the hub at the bottom center of gauge which the needle attaches to.
+ + + +
this.index
0 based index of this series in the plot series array.
this.init = function(target,
data,
options)
sets the plot target, checks data and applies user options to plot.
this.innerDiameter = null
Inner diameter of teh donut, auto calculated by default.
this.insertBreaks = true
true to turn spaces in data block label into html breaks br /.
this.intersectionThreshold = 2
pixel distance from data point or marker to consider cursor lines intersecting with point.
this.intervalColors = [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"]
Array of colors to use for the intervals.
this.intervalInnerRadius = null
Radius of the inner circle of the interval ring.
this.intervalOuterRadius = null
Radius of the outer circle of the interval ring.
this.intervals = []
Array of ranges to be drawn around the gauge.
jqPlot requires jQuery (1.4+ required for certain features).
this.isarc = false
wether the shadow is an arc or not.
this.isarc = false
wether the shadow is an arc or not.
this.isMinorTick = false
if this is a minor tick.
this.isMinorTick = false
if this is a minor tick.
+ + + +
Plot object returned by call to $.jqplot.
Pure JavaScript plotting plugin for jQuery.
Much of the styling of jqPlot is done by css.
This document is out of date.
+ + + +
this.label = ''
The text or html for the label.
this.label = ''
label for the axis.
this.label = null
A gauge label like ‘kph’ or ‘Volts’
this.label = ''
Label for the trend line to use in the legend.
this.label = null
Label for the axis
this.label = ''
Line label to use in the legend.
this.labelHeightAdjust = 0
Number of Pixels to offset the label up (-) or down (+) from its default position.
this.labelOptions = {}
Options passed to the label renderer.
this.labelPosition = 'auto'
‘auto’, ‘start’, ‘middle’ or ‘end’.
this.labelPosition = 'inside'
Where to position the label, either ‘inside’ or ‘bottom’.
this.labelRenderer = $.jqplot.AxisLabelRenderer
A class of a rendering engine for creating an axis label.
this.labels = []
array of arrays of labels, one array for each series.
this.labels = []
Array of labels to use.
this.labelsFromSeries = false
true to use labels within data point arrays.
this.legend = new Legend()
see $.jqplot.TableLegendRenderer
Legend object.
this.lineCap = 'round'
how ends of the shadow line are rendered.
this.lineCap = 'round'
how ends of the shadow line are rendered.
this.lineJoin = 'miter'
How line segments of the shadow are joined.
this.lineJoin = 'miter'
How line segments of the shadow are joined.
this.lineWidth = 2
width of line if areas are stroked and not filled.
this.lineWidth = 2
size of the line for non-filled markers.
this.lineWidth = 1.5
Width of the hi-low line and open/close ticks.
this.lineWidth = 1.5
width of the shadow line stroke.
this.lineWidth = 1.5
Width of the trend line.
this.lineWidth = 2.5
width of the line in pixels.
this.lineWidthAdjust = 2.5
Pixels to add to the lineWidth of the highlight.
this.location = 'n'
compass location where to position the label around the point.
this.location = 'ne'
Placement of the legend.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/General4.html Index: Site/Site_W/jpqplot/docs/index/General4.html ================================================================== --- Site/Site_W/jpqplot/docs/index/General4.html +++ Site/Site_W/jpqplot/docs/index/General4.html cannot compute difference between binary files ADDED Site/Site_W/jpqplot/docs/index/General5.html Index: Site/Site_W/jpqplot/docs/index/General5.html ================================================================== --- Site/Site_W/jpqplot/docs/index/General5.html +++ Site/Site_W/jpqplot/docs/index/General5.html @@ -0,0 +1,34 @@ + + +Index + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 sectionMargin, $.jqplot.FunnelRenderer
 series, jqPlot
 Series
 seriesColors, jqPlot
 seriesDefaults, jqPlot
 seriesLabelIndex, $.jqplot.PointLabels
 seriesToggle
 setGridData
 shadow
 shadowAlpha
 shadowAngle
 shadowColor, Grid
 shadowDepth
 shadowOffset
 shadowRenderer, $.jqplot.MarkerRenderer
 shadowWidth, Grid
 shapeRenderer, $.jqplot.MarkerRenderer
 show
 showBorders, $.jqplot.MekkoRenderer
 showCursorLegend, $.jqplot.Cursor
 showDataLabels
 showGridline
 showHorizontalLine, $.jqplot.Cursor
 showLabel
 showLabels
 showLine, Series
 showMark
 showMarker
 showMinorTicks, Axis
 showSwatch, Legend
 showTickLabels, $.jqplot.MeterGaugeRenderer
 showTickMarks, Axis
 showTicks
 showTooltip
 showTooltipDataPosition, $.jqplot.Cursor
 showTooltipGridPosition, $.jqplot.Cursor
 showTooltipOutsideZoom, $.jqplot.Cursor
 showTooltipUnitPosition, $.jqplot.Cursor
 showVerticalLine, $.jqplot.Cursor
 size
 sizeAdjust, $.jqplot.Highlighter
 sliceMargin
 sortData, jqPlot
 sortMergedLabels, $.jqplot.CategoryAxisRenderer
 stackedValue, $.jqplot.PointLabels
 stackSeries, jqPlot
 startAngle
 strokeRect, $.jqplot.shapeRenderer
 strokeStyle, $.jqplot.shapeRenderer
 style
 syncTicks, Axis
+ +
this.sectionMargin = 6
spacing between funnel sections in pixels.
this.series = []
Array of series object options.
An individual data series object.
this.seriesColors = [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"]
Ann array of CSS color specifications that will be applied, in order, to the series in the plot.
seriesDefaults: {}, gridPadding: {top:10, right:10, bottom:23, left:10}, series:[] }
default options that will be applied to all series.
this.seriesLabelIndex = null
array index for location of labels within data point arrays.
this.seriesToggle = 'normal'
false to not enable series on/off toggling on the legend.
$.jqplot.BezierCurveRenderer.prototype.setGridData = function(plot)
converts the user data values to grid coordinates and stores them in the gridData array.
$.jqplot.LineRenderer.prototype.setGridData = function(plot)
converts the user data values to grid coordinates and stores them in the gridData array.
$.jqplot.MekkoRenderer.prototype.setGridData = function(plot)
converts the user data values to grid coordinates and stores them in the gridData array.
this.shadow = true
wether or not to draw a shadow on the line
this.shadow = true
true or false, wether or not to show the shadow.
this.shadow = true
wether to show a shadow behind the grid.
this.shadow = true
wether or not to draw a shadow on the line
this.shadowAlpha = 0.08
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = '0.07'
Alpha channel transparency of shadow.
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = 0.07
Alpha transparency of the shadow.
this.shadowAlpha = '0.07'
Alpha channel transparency of shadow.
this.shadowAlpha = '0.1'
Alpha channel transparency of shadow.
this.shadowAngle = 45
Shadow angle in degrees
this.shadowAngle = 45
Angle of the shadow on the trend line.
this.shadowAngle = 45
shadow angle in degrees
this.shadowAngle = 45
Shadow angle in degrees
this.shadowColor = null
an optional css color spec for the shadow in ‘rgba(n, n, n, n)’ form
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 3
Number of times shadow is stroked, each stroke offset shadowOffset from the last.
this.shadowDepth = 4
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 3
number of strokes to make of the shadow.
this.shadowDepth = 3
Number of times shadow is stroked, each stroke offset shadowOffset from the last.
this.shadowDepth = 3
Number of times shadow is stroked, each stroke offset shadowOffset from the last.
this.shadowOffset = 2
offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 2
offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 2
offset of the shadow from the area and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 1
Shadow offset from line in pixels
this.shadowOffset = 2
offset of the shadow from the gauge ring and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 2
offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 1.0
pixel offset for each stroke of the shadow.
this.shadowOffset = 1.5
Offset of each shadow stroke from the border in pixels
this.shadowOffset = 1.25
Shadow offset from line in pixels
this.shadowRenderer = new $.jqplot.ShadowRenderer()
Renderer that will draws the shadows on the marker.
this.shadowWidth = 3
width of the stoke for the shadow
this.shapeRenderer = new $.jqplot.ShapeRenderer()
Renderer that will draw the marker.
this.show = true
wether or not to show the tick (mark and label).
this.show = true
wether or not to show the tick (mark and label).
this.show = true
wether or not to show the tick (mark and label).
this.show = true
wether or not to show the tick (mark and label).
this.show = $.jqplot.config.enablePlugins
wether to show the cursor or not.
this.show = $.jqplot.config.enablePlugins
true to show the highlight.
this.show = true
wether or not to show the marker.
this.show = $.jqplot.config.enablePlugins
show the labels or not.
this.show = $.jqplot.config.enablePlugins
Wether or not to show the trend line.
this.show = false
Wether to display the axis on the graph.
this.show = false
Wether to display the legend on the graph.
this.show = true
wether or not to draw the series.
this.show = true
wether or not to show the title
this.showBorders = true
True to draw borders lines between areas on the chart.
this.showCursorLegend = false
Replace the plot legend with an enhanced legend displaying intersection information.
this.showDataLabels = false
true to show data labels on slices.
this.showDataLabels = false
true to show data labels on slices.
this.showDataLabels = false
true to show data labels on slices.
this.showGridline = true
wether or not to draw the gridline on the grid at this tick.
this.showGridline = true
wether or not to draw the gridline on the grid at this tick.
this.showHorizontalLine = false
draw a horizontal line across the plot which follows the cursor.
this.showLabel = true
wether or not to show the label.
this.showLabel = true
wether or not to show the label.
this.showLabel = true
wether or not to show the label.
this.showLabel = true
true to show the axis label.
this.showLabel = true
true to show label for this series in the legend.
this.showLabels = true
True to show labels on bubbles (if any), false to not show.
this.showLabels = true
true to show the label text on the legend.
this.showLine = true
wether to actually draw the line or not.
this.showMark = true
wether or not to show the mark on the axis.
this.showMark = true
wether or not to show the mark on the axis.
this.showMarker = true
true to show the marker
this.showMarker = true
wether or not to show the markers at the data points.
this.showMinorTicks = true
Wether or not to show minor ticks.
this.showSwatches = true
true to show the color swatches on the legend.
this.showTickLabels = true
true to show tick labels next to ticks.
this.showTickMarks = true
Wether to show the tick marks (line crossing grid) or not.
this.showTicks = true
true to show ticks around gauge.
this.showTicks = true
Wether to show the ticks (both marks and labels) or not.
this.showTooltip = true
show a cursor position tooltip.
this.showTooltip = true
Show a tooltip with data point values.
this.showTooltipDataPosition = false
Used with showVerticalLine to show intersecting data points in the tooltip.
this.showTooltipGridPosition = false
show the grid pixel coordinates of the mouse.
this.showTooltipOutsideZoom = false
True will keep updating the tooltip when zooming of the grid.
this.showTooltipUnitPosition = true
show the unit (data) coordinates of the mouse.
this.showVerticalLine = false
draw a vertical line across the plot which follows the cursor.
this.size = 4
Length of the tick beyond the grid in pixels.
this.size = 9.0
Size of the marker (diameter or circle, length of edge of square, etc.)
this.sizeAdjust = 5
Pixels to add to the overall size of the highlight.
this.sliceMargin = 0
angular spacing between donut slices in degrees.
this.sliceMargin = 0
angular spacing between pie slices in degrees.
this.sortData = true
false to not sort the data passed in by the user.
this.sortMergedLabels = false
True to sort tick labels when labels are created by merging x axis values from multiple series.
this.stackedValue = false
true to display value as stacked in a stacked plot.
this.stackSeries = false
true or false, creates a stack or “mountain” plot.
this.startAngle = 0
Angle to start drawing donut in degrees.
this.startAngle = 0
Angle to start drawing pie in degrees.
this.strokeRect = false
true to draw shape as a stroked rectangle.
this.strokeStyle = '#999999'
css color spec for the stoke style
this.style = 'crosshair'
CSS spec for cursor style
this.style = 'filledCircle'
One of diamond, circle, square, x, plus, dash, filledDiamond, filledCircle, filledSquare
this.syncTicks = null
true to try and synchronize tick spacing across multiple axes so that ticks and grid lines line up.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/General6.html Index: Site/Site_W/jpqplot/docs/index/General6.html ================================================================== --- Site/Site_W/jpqplot/docs/index/General6.html +++ Site/Site_W/jpqplot/docs/index/General6.html @@ -0,0 +1,58 @@ + + +Index + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 text, Title
 textAlign, Title
 textColor
 themes, $.jqplot.ThemeEngine
 thickness, $.jqplot.DonutRenderer
 tickColor, $.jqplot.MeterGaugeRenderer
 tickInterval, Axis
 tickLength, $.jqplot.OHLCRenderer
 tickMode, $.jqplot.MekkoAxisRenderer
 tickOptions, Axis
 tickPadding, $.jqplot.MeterGaugeRenderer
 tickRenderer
 ticks
 tickSpacing
 title, jqPlot
 Title
 tooltipAxes, $.jqplot.Highlighter
 tooltipAxisGroups, $.jqplot.Cursor
 tooltipFadeSpeed, $.jqplot.Highlighter
 tooltipFormatString
 tooltipLocation
 tooltipOffset
 type, $.jqplot.Trendline
U
 upBodyColor, $.jqplot.OHLCRenderer
 Usage
 useAxesFormatters
 useNegativeColors, Series
 useSeriesColor, Axis
V
 varyBarColor, $.jqplot.BarRenderer
 varyBlockColors, $.jqplot.BlockRenderer
 varyBubbleColors, $.jqplot.BubbleRenderer
 Version
W
 waterfall, $.jqplot.BarRenderer
 wickColor, $.jqplot.OHLCRenderer
 widthRatio, $.jqplot.FunnelRenderer
X
 xaxis, Series
 xoffset, Legend
 xpadding, $.jqplot.PointLabels
Y
 yaxis, Series
 yoffset, Legend
 ypadding, $.jqplot.PointLabels
 yvalues, $.jqplot.Highlighter
Z
 zoom, $.jqplot.Cursor
 zoomProxy, $.jqplot.Cursor.$.jqplot.Cursor
+ +
this.text = text
text of the title;
this.textAlign
css text-align spec for the text.
this.textColor
css spec for the color attribute.
this.textColor = '#666666'
css spec for the color attribute.
this.textColor = '#666666'
css spec for the color attribute.
this.textColor
css color spec for the legend text.
this.textColor
css color spec for the text.
this.themes = {}
hash of themes managed by the theme engine.
this.thickness = null
thickness of the donut, auto computed by default Overridden by if innerDiameter is specified.
this.tickColor = "989898"
color of the tick marks around the gauge.
this.tickInterval
number of units between ticks.
this.tickLength = 'auto'
length of the line in pixels indicating open and close price.
this.tickMode
How to space the ticks on the axis.
this.tickOptions = {}
Options that will be passed to the tickRenderer, see $.jqplot.AxisTickRenderer options.
this.tickPadding = null
padding of the tick marks to the outer ring and the tick labels to marks.
A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
this.tickRenderer = $.jqplot.AxisTickRenderer
A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
this.ticks = []
Array of tick values.
this.ticks = []
1D [val, val, ...] or 2D [[val, label], [val, label], ...] array of ticks for the axis.
this.tickSpacing = 30
Degrees between ticks.
this.tickSpacing = 75
Approximate pixel spacing between ticks on graph.
this.title = new Title()
Title object.
Plot Title object.
this.tooltipAxes = 'both'
Which axes to display in tooltip, ‘x’, ‘y’ or ‘both’, ‘xy’ or ‘yx’ ‘both’ and ‘xy’ are equivalent, ‘yx’ reverses order of labels.
this.tooltipAxisGroups = []
Show position for the specified axes.
this.tooltipFadeSpeed = "fast"
‘slow’, ‘def’, ‘fast’, or number of milliseconds.
this.tooltipFormatString = '%.4P, %.4P'
sprintf format string for the tooltip.
this.tooltipFormatString = '%.5P'
sprintf format string for the tooltip.
this.tooltipLocation = 'se'
Where to position tooltip.
this.tooltipLocation = 'nw'
Where to position tooltip, ‘n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘nw’
this.tooltipOffset = 6
Pixel offset of tooltip from the grid boudaries or cursor center.
this.tooltipOffset = 2
Pixel offset of tooltip from the highlight.
this.type = 'linear'
Either ‘exponential’, ‘exp’, or ‘linear’.
+ + + +
this.upBodyColor = null
Color of candlestick body of an “up” day.
See jqPlot Usage
this.useAxesFormatters = true
Use the x and y axes formatters to format the text in the tooltip.
this.useAxesFormatters = true
Use the x and y axes formatters to format the text in the tooltip.
this.useNegativeColors = true
true to color negative values differently in filled and bar charts.
this.useSeriesColor = false
Use the color of the first series associated with this axis for the tick marks and line bordering this axis.
+ + + +
this.varyBarColor = false
true to color each bar of a series separately rather than have every bar of a given series the same color.
this.varyBlockColors = false
true to vary the color of each block in this series according to the seriesColors array.
this.varyBubbleColors = true
True to vary the color of each bubble in this series according to the seriesColors array.
0.9.7r635
+ + + +
this.waterfall = false
true to enable waterfall plot.
this.wickColor = null
color of the hi-lo line thorugh the candlestick body.
this.widthRatio = 0.2
The ratio of the width of the top of the funnel to the bottom.
+ + + +
this.xaxis = 'xaxis'
which x axis to use with this series, either ‘xaxis’ or ‘x2axis’.
this.xoffset = 0
DEPRECATED.
this.xpadding = 6
horizontal padding in pixels between point and label
+ + + +
this.yaxis = 'yaxis'
which y axis to use with this series, either ‘yaxis’ or ‘y2axis’.
this.yoffset = 0
DEPRECATED.
this.ypadding = 6
vertical padding in pixels between point and label
this.yvalues = 1
Number of y values to expect in the data point array.
+ + + +
this.zoom = false
Enable plot zooming.
$.jqplot.Cursor.zoomProxy = function(targetPlot,
controllerPlot)
links targetPlot to controllerPlot so that plot zooming of targetPlot will be controlled by zooming on the controllerPlot.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/Hooks.html Index: Site/Site_W/jpqplot/docs/index/Hooks.html ================================================================== --- Site/Site_W/jpqplot/docs/index/Hooks.html +++ Site/Site_W/jpqplot/docs/index/Hooks.html @@ -0,0 +1,46 @@ + + +Hook Index + + + + + + + + + +
Hook Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 addLegendRowHooks, $.jqplot.$.jqplot
E
 eventListenerHooks, $.jqplot.$.jqplot
J
 jqPlot Pugin Hooks, $.jqplot
P
 postDrawHooks, $.jqplot.$.jqplot
 postDrawSeriesHooks, $.jqplot.$.jqplot
 postDrawSeriesShadowHooks, $.jqplot.$.jqplot
 postInitHooks, $.jqplot.$.jqplot
 postParseOptionsHooks, $.jqplot.$.jqplot
 postParseSeriesOptionsHooks, $.jqplot.$.jqplot
 postSeriesInitHooks, $.jqplot.$.jqplot
 preDrawHooks, $.jqplot.$.jqplot
 preDrawLegendHooks, $.jqplot.$.jqplot
 preDrawSeriesHooks, $.jqplot.$.jqplot
 preDrawSeriesShadowHooks, $.jqplot.$.jqplot
 preInitHooks, $.jqplot.$.jqplot
 preParseOptionsHooks, $.jqplot.$.jqplot
 preParseSeriesOptionsHooks, $.jqplot.$.jqplot
 preSeriesInitHooks, $.jqplot.$.jqplot
+ +
called at the end of legend draw, so plugins can add rows to the legend table.
+ + + +
called at the end of plot drawing, binds listeners to the event canvas which lays on top of the grid area.
+ + + + + + + +
called after plot draw.
called after each series is drawn.
called after series shadows are drawn.
called after initialization.
called after user options are parsed.
called after series related options are parsed.
called after series is initialized.
called before plot draw.
called before the legend is drawn.
called before each series is drawn.
called before series shadows are drawn.
called before initialization.
called before user options are parsed.
called before series related options are parsed.
called before series is initialized.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/Properties.html Index: Site/Site_W/jpqplot/docs/index/Properties.html ================================================================== --- Site/Site_W/jpqplot/docs/index/Properties.html +++ Site/Site_W/jpqplot/docs/index/Properties.html @@ -0,0 +1,50 @@ + + +Property Index + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
A
 activeTheme, $.jqplot.ThemeEngine
 alpha, $.jqplot.shadowRenderer
 angle
 autoscale, Axis
 autoscaleBubbles, $.jqplot.BubbleRenderer
 autoscaleMultiplier, $.jqplot.BubbleRenderer
 autoscalePointsFactor, $.jqplot.BubbleRenderer
 axes, jqPlot
 axesDefaults, jqPlot
 axisDefaults, $.jqplot.LogAxisRenderer
B
 background
 barDirection, $.jqplot.BarRenderer
 barLabelOptions, $.jqplot.MekkoAxisRenderer
 barLabelRenderer, $.jqplot.MekkoAxisRenderer
 barLabels, $.jqplot.MekkoAxisRenderer
 barMargin, $.jqplot.BarRenderer
 barPadding, $.jqplot.BarRenderer
 barWidth, $.jqplot.BarRenderer
 bodyWidth, $.jqplot.OHLCRenderer
 border, Legend
 borderColor
 borderWidth
 breakOnNull, Series
 bringSeriesToFront, $.jqplot.Highlighter
 bubbleAlpha, $.jqplot.BubbleRenderer
 bubbleGradients, $.jqplot.BubbleRenderer
C
 candleStick, $.jqplot.OHLCRenderer
 clearRect, $.jqplot.shapeRenderer
 clickReset, $.jqplot.Cursor
 closeColor, $.jqplot.OHLCRenderer
 color
 constrainOutsideZoom, $.jqplot.Cursor
 constrainTo, $.jqplot.Dragable
 constrainZoomTo, $.jqplot.Cursor
 css, $.jqplot.BlockRenderer
 cursorLegendFormatString, $.jqplot.Cursor
D
 data, jqPlot
 dataLabelCenterOn, $.jqplot.PieRenderer
 dataLabelFormatString
 dataLabelNudge
 dataLabelPositionFactor
 dataLabels
 dataLabelThreshold
 dblClickReset, $.jqplot.Cursor
 defaultAxisStart, jqPlot
 depth, $.jqplot.shadowRenderer
 diameter
 disableIEFading
 disableStack, Series
 downBodyColor, $.jqplot.OHLCRenderer
 drawBorder, Grid
 drawGridlines, Grid
E
 edgeTolerance, $.jqplot.PointLabels
 enableFontSupport
 escapeHtml
 escapeHTML
+ +
this.activeTheme=null
Pointer to currently active theme
this.alpha = 0.07
alpha transparency of shadow stroke.
this.angle = 0
angle of text, measured clockwise from x axis.
this.angle = 0
angle of text, measured clockwise from x axis.
this.angle = 45
Angle of the shadow in degrees.
this.autoscale = false
Autoscale the axis min and max values to provide sensible tick spacing.
this.autoscaleBubbles = true
True to scale the bubble radius based on plot size.
this.autoscaleMultiplier = 1.0
Multiplier the bubble size if autoscaleBubbles is true.
this.autoscalePointsFactor = -0.07
Factor which decreases bubble size based on how many bubbles on on the chart.
this.axes = {xaxis: new Axis('xaxis'), yaxis: new Axis('yaxis'), x2axis: new Axis('x2axis'), y2axis: new Axis('y2axis'), y3axis: new Axis('y3axis'), y4axis: new Axis('y4axis'), y5axis: new Axis('y5axis'), y6axis: new Axis('y6axis'), y7axis: new Axis('y7axis'), y8axis: new Axis('y8axis'), y9axis: new Axis('y9axis')}
up to 4 axes are supported, each with it’s own options, See Axis for axis specific options.
default options that will be applied to all axes.
Default properties which will be applied directly to the series.
+ + + +
this.background = "#efefef"
background color of the inside of the gauge.
this.background = '#fffdf6'
css spec for the background color.
this.background
css spec for the background of the legend box.
this.barDirection = 'vertical'
‘vertical’ = up and down bars, ‘horizontal’ = side to side bars
this.barLabelOptions = {}
options object to pass to the bar label renderer.
this.barLabelRenderer = $.jqplot.AxisLabelRenderer
renderer to use to draw labels under each bar.
this.barLabels = this.barLabels || []
array of labels to put under each bar.
this.barMargin = 10
Number of pixels between groups of bars at adjacent axis values.
this.barPadding = 8
Number of pixels between adjacent bars at the same axis value.
this.barWidth = null
Width of the bar in pixels (auto by devaul).
this.bodyWidth = 'auto'
width of the candlestick body in pixels.
this.border
css spec for the border around the legend box.
this.borderColor = null
color of the borders between areas on the chart
this.borderColor = null
color of the border adjacent to the axis.
this.borderColor = '#999999'
css spec for the color of the grid border.
this.borderWidth = null
width of line stroked at the border of the axis.
this.borderWidth = 2.0
width of the border in pixels.
this.breakOnNull = false
Not implemented.
this.bringSeriesToFront = false
This option requires jQuery 1.4+ True to bring the series of the highlighted point to the front of other series.
this.bubbleAlpha = 1.0
Alpha transparency to apply to all bubbles in this series.
this.bubbleGradients = false
True to color the bubbles with gradient fills instead of flat colors.
+ + + +
this.candleStick = false
true to render chart as candleStick.
this.clearRect = false
true to cear a rectangle.
this.clickReset = false
Will reset plot zoom if single click on plot without drag.
this.closeColor = null
color of the close price tick mark.
this.color
CSS color spec for the dragged point (and adjacent line segment or bar).
this.color = '#666666'
color of marker.
this.color = '#666666'
CSS color spec for the trend line.
this.color
css color spec for the series
this.constrainOutsideZoom = true
True to limit actual zoom area to edges of grid, even when zooming outside of plot area.
this.constrainTo = 'none'
Constrain dragging motion to an axis or to none.
this.constrainZoomTo = 'none'
‘none’, ‘x’ or ‘y’
this.css = {padding:'2px', border:'1px solid #999', textAlign:'center'}
default css styles that will be applied to all data blocks.
this.cursorLegendFormatString = $.jqplot.Cursor.cursorLegendFormatString
Format string used in the cursor legend.
+ + + +
this.data = []
user’s data.
this.dataLabelCenterOn = true
True to center the data label at its position.
this.dataLabelFormatString = null
Format string for data labels.
this.dataLabelFormatString = null
Format string for data labels.
this.dataLabelFormatString = null
Format string for data labels.
this.dataLabelNudge = 0
Number of pixels to slide the label away from (+) or toward (-) the center of the pie.
this.dataLabelNudge = 2
Number of pixels to slide the label away from (+) or toward (-) the center of the pie.
this.dataLabelPositionFactor = 0.5
A Multiplier (0-1) of the pie radius which controls position of label on slice.
this.dataLabelPositionFactor = 0.52
A Multiplier (0-1) of the pie radius which controls position of label on slice.
this.dataLabels = 'percent'
Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
this.dataLabels = 'percent'
Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
this.dataLabels = 'percent'
Either ‘label’, ‘value’, ‘percent’ or an array of labels to place on the pie slices.
this.dataLabelThreshold = 3
this.dataLabelThreshold = 3
this.dataLabelThreshold = 3
this.dblClickReset = true
Will reset plot zoom if double click on plot without drag.
this.defaultAxisStart = 1
1-D data series are internally converted into 2-D [x,y] data point arrays by jqPlot.
this.depth = 3
how many times the shadow is stroked.
this.diameter = null
Outer diameter of the donut, auto computed by default
this.diameter = null
Outer diameter of the meterGauge, auto computed by default
this.diameter = null
Outer diameter of the pie, auto computed by default
this.disableIEFading = true
true to toggle series with a show/hide method only and not allow fading in/out.
this.disableStack = false
true to not stack this series with other series in the plot.
this.downBodyColor = null
Color of candlestick body on a “down” day.
this.drawBorder = true
True to draw border around grid.
this.drawGridlines = true
wether to draw the gridlines on the plot.
+ + + +
this.edgeTolerance = -5
Number of pixels that the label must be away from an axis boundary in order to be drawn.
this.enableFontSupport = true
true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.
this.enableFontSupport = true
true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+.
this.escapeHtml = false
true to escape html in the box label.
this.escapeHtml = true
True to escape html in bubble label text.
this.escapeHTML = false
true to escape HTML entities in the label.
this.escapeHTML = true
true to escape html entities in the labels.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/Properties2.html Index: Site/Site_W/jpqplot/docs/index/Properties2.html ================================================================== --- Site/Site_W/jpqplot/docs/index/Properties2.html +++ Site/Site_W/jpqplot/docs/index/Properties2.html @@ -0,0 +1,50 @@ + + +Property Index + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
F
 fadeTooltip, $.jqplot.Highlighter
 fill
 fillAlpha, Series
 fillAndStroke, Series
 fillAxis, Series
 fillColor, Series
 fillDownBody, $.jqplot.OHLCRenderer
 fillRect, $.jqplot.shapeRenderer
 fillStyle, $.jqplot.shapeRenderer
 fillToValue, Series
 fillToZero, Series
 fillUpBody, $.jqplot.OHLCRenderer
 followMouse, $.jqplot.Cursor
 fontFamily
 fontSize
 fontStretch
 fontWeight
 formatString
 formatter
G
 grid, jqPlot
 gridLineColor, Grid
 gridLineWidth, Grid
 groups, $.jqplot.BarRenderer
H
 hideZeros, $.jqplot.PointLabels
 highlightAlpha, $.jqplot.BubbleRenderer
 highlightColor, $.jqplot.LineRenderer
 highlightColors
 highlightMouseDown
 highlightMouseOver
 hlc, $.jqplot.OHLCRenderer
 hubRadius, $.jqplot.MeterGaugeRenderer
I
 index, Series
 innerDiameter, $.jqplot.DonutRenderer
 insertBreaks, $.jqplot.BlockRenderer
 intersectionThreshold, $.jqplot.Cursor
 intervalColors, $.jqplot.MeterGaugeRenderer
 intervalInnerRadius, $.jqplot.MeterGaugeRenderer
 intervalOuterRadius, $.jqplot.MeterGaugeRenderer
 intervals, $.jqplot.MeterGaugeRenderer
 isarc
 isMinorTick
L
 label
 labelHeightAdjust, $.jqplot.MeterGaugeRenderer
 labelOptions, Axis
 labelPosition
 labelRenderer, Axis
 labels
 labelsFromSeries, $.jqplot.PointLabels
 legend, jqPlot
 lineCap
 lineJoin
 lineWidth
 lineWidthAdjust, $.jqplot.Highlighter
 location
+ +
this.fadeTooltip = true
true = fade in/out tooltip, flase = show/hide tooltip
this.fill = true
true or false, wether to fil the slices.
this.fill = true
true or false, wether to fill the areas.
this.fill = true
true or false, wether to fil the slices.
this.fill = false
whether to fill the shape.
this.fill = false
whether to fill the shape.
this.fill = false
true or false, wether to fill under lines or in bars.
this.fillAlpha
Alpha transparency to apply to the fill under the line.
this.fillAndStroke = false
If true will stroke the line (with color this.color) as well as fill under it.
this.fillAxis = 'y'
Either ‘x’ or ‘y’.
this.fillColor
CSS color spec to use for fill under line.
this.fillDownBody = true
true to render a “down” day (close price lower than open price) with a filled candlestick body.
this.fillRect = false
true to draw shape as a filled rectangle.
this.fillStyle = '#999999'
css color spec for the fill style.
this.fillToValue = 0
fill a filled series to this value on the fill axis.
this.fillToZero = false
true will force bar and filled series to fill toward zero on the fill Axis.
this.fillUpBody = false
true to render an “up” day (close price greater than open price) with a filled candlestick body.
this.followMouse = false
Tooltip follows the mouse, it is not at a fixed location.
this.fontFamily
css spec for the font-family css attribute.
this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'
CSS spec for the font-family css attribute.
this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'
css spec for the font-family css attribute.
this.fontFamily
css font-family spec for the legend text.
this.fontFamily
css font-family spec for the text.
this.fontSize
css spec for the font-size css attribute.
this.fontSize = '11pt'
CSS spec for font size.
this.fontSize = '10pt'
CSS spec for font size.
this.fontSize
css spec for the font-size attribute.
this.fontSize
css font-size spec for the legend text.
this.fontSize
css font-size spec for the text.
this.fontStretch = 1.0
Multiplier to condense or expand font width.
this.fontStretch = 1.0
Multiplier to condense or expand font width.
this.fontWeight = 'normal'
this.fontWeight = 'normal'
CSS spec for fontWeight
this.formatString = ''
string passed to the formatter.
this.formatString = ''
string passed to the formatter.
this.formatString = null
alternative to tooltipFormatString will format the whole tooltip text, populating with x, y values as indicated by tooltipAxes option.
this.formatString = ''
string passed to the formatter.
this.formatter = $.jqplot.DefaultTickFormatter
A class of a formatter for the tick text.
this.formatter = $.jqplot.DefaultTickFormatter
A class of a formatter for the tick text.
this.formatter = $.jqplot.DefaultTickFormatter
A class of a formatter for the tick text.
+ + + +
this.grid = new Grid()
See Grid for grid specific options.
this.gridLineColor = '#cccccc'
color of the grid lines.
this.gridLineWidth = 1.0
width of the grid lines.
this.groups = 1
group bars into this many groups
+ + + +
this.hideZeros = false
true to not show a label for a value which is 0.
this.highlightAlpha = null
Alpha transparency to apply when highlighting bubble.
this.highlightColor = null
color to use when highlighting an area on a filled plot.
this.highlightColors = []
an array of colors to use when highlighting a bar.
this.highlightColors = []
An array of colors to use when highlighting a slice.
this.highlightColors = []
an array of colors to use when highlighting a slice.
this.highlightColors = []
array of colors to use when highlighting an area.
this.highlightColors = []
an array of colors to use when highlighting a slice.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a slice.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a bubble.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a slice.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a area.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over an area on a filled plot.
this.highlightMouseDown = false
True to highlight when a mouse button is pressed over a slice.
this.highlightMouseOver = true
True to highlight slice when moused over.
this.highlightMouseOver = true
True to highlight bubbles when moused over.
this.highlightMouseOver = true
True to highlight slice when moused over.
this.highlightMouseOver = true
True to highlight area when moused over.
this.highlightMouseOver = true
True to highlight area on a filled plot when moused over.
this.highlightMouseOver = true
True to highlight slice when moused over.
this.hlc = false
true if is a hi-low-close chart (no open price).
this.hubRadius = null
Radius of the hub at the bottom center of gauge which the needle attaches to.
+ + + +
this.index
0 based index of this series in the plot series array.
this.innerDiameter = null
Inner diameter of teh donut, auto calculated by default.
this.insertBreaks = true
true to turn spaces in data block label into html breaks br /.
this.intersectionThreshold = 2
pixel distance from data point or marker to consider cursor lines intersecting with point.
this.intervalColors = [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"]
Array of colors to use for the intervals.
this.intervalInnerRadius = null
Radius of the inner circle of the interval ring.
this.intervalOuterRadius = null
Radius of the outer circle of the interval ring.
this.intervals = []
Array of ranges to be drawn around the gauge.
this.isarc = false
wether the shadow is an arc or not.
this.isarc = false
wether the shadow is an arc or not.
this.isMinorTick = false
if this is a minor tick.
this.isMinorTick = false
if this is a minor tick.
+ + + +
this.label = ''
The text or html for the label.
this.label = ''
label for the axis.
this.label = null
A gauge label like ‘kph’ or ‘Volts’
this.label = ''
Label for the trend line to use in the legend.
this.label = null
Label for the axis
this.label = ''
Line label to use in the legend.
this.labelHeightAdjust = 0
Number of Pixels to offset the label up (-) or down (+) from its default position.
this.labelOptions = {}
Options passed to the label renderer.
this.labelPosition = 'auto'
‘auto’, ‘start’, ‘middle’ or ‘end’.
this.labelPosition = 'inside'
Where to position the label, either ‘inside’ or ‘bottom’.
this.labelRenderer = $.jqplot.AxisLabelRenderer
A class of a rendering engine for creating an axis label.
this.labels = []
array of arrays of labels, one array for each series.
this.labels = []
Array of labels to use.
this.labelsFromSeries = false
true to use labels within data point arrays.
this.legend = new Legend()
see $.jqplot.TableLegendRenderer
this.lineCap = 'round'
how ends of the shadow line are rendered.
this.lineCap = 'round'
how ends of the shadow line are rendered.
this.lineJoin = 'miter'
How line segments of the shadow are joined.
this.lineJoin = 'miter'
How line segments of the shadow are joined.
this.lineWidth = 2
width of line if areas are stroked and not filled.
this.lineWidth = 2
size of the line for non-filled markers.
this.lineWidth = 1.5
Width of the hi-low line and open/close ticks.
this.lineWidth = 1.5
width of the shadow line stroke.
this.lineWidth = 1.5
Width of the trend line.
this.lineWidth = 2.5
width of the line in pixels.
this.lineWidthAdjust = 2.5
Pixels to add to the lineWidth of the highlight.
this.location = 'n'
compass location where to position the label around the point.
this.location = 'ne'
Placement of the legend.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/Properties3.html Index: Site/Site_W/jpqplot/docs/index/Properties3.html ================================================================== --- Site/Site_W/jpqplot/docs/index/Properties3.html +++ Site/Site_W/jpqplot/docs/index/Properties3.html @@ -0,0 +1,50 @@ + + +Property Index + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
M
 marginBottom, Legend
 marginLeft, Legend
 marginRight, Legend
 marginTop, Legend
 mark
 markerOptions, Series
 markerRenderer
 markSize
 max
 min
N
 needlePad, $.jqplot.MeterGaugeRenderer
 needleThickness, $.jqplot.MeterGaugeRenderer
 neighborThreshold, Series
 numberColumns
 numberRows
 numberTicks, Axis
O
 offset, $.jqplot.shadowRenderer
 openColor, $.jqplot.OHLCRenderer
P
 pad, Axis
 padding
 padMax, Axis
 padMin, Axis
 pegNeedle, $.jqplot.MeterGaugeRenderer
 placement, Legend
 predraw, Legend
 prefix
 pt2px
R
 renderer
 rendererOptions
 ringColor, $.jqplot.MeterGaugeRenderer
 ringMargin, $.jqplot.DonutRenderer
 ringWidth, $.jqplot.MeterGaugeRenderer
 rowSpacing, Legend
+ +
this.marginBottom = null
CSS margin for the legend DOM element.
this.marginLeft = null
CSS margin for the legend DOM element.
this.marginRight = null
CSS margin for the legend DOM element.
this.marginTop = null
CSS margin for the legend DOM element.
this.mark = 'outside'
tick mark on the axis.
this.mark = 'outside'
tick mark on the axis.
this.markerOptions = {}
renderer specific options to pass to the markerRenderer, see $.jqplot.MarkerRenderer.
this.markerRenderer = new $.jqplot.MarkerRenderer({shadow:false})
Renderer used to draw the marker of the highlighted point.
this.markerRenderer = {show:false}
Renderer to use to draw markers on the line.
this.markerRenderer = $.jqplot.MarkerRenderer
A class of a renderer which will draw marker (e.g.
this.markSize = 6
Length of the tick marks in pixels.
this.markSize = 4
Length of the tick marks in pixels.
this.max
Maximum value on the gauge.
this.max=null
maximum value of the axis (in data units, not pixels).
this.min
Minimum value on the gauge.
this.min=null
minimum value of the axis (in data units, not pixels).
+ + + +
this.needlePad = 6
Padding between needle and inner edge of the ring when the needle is at the min or max gauge value.
this.needleThickness = null
Maximum thickness the needle.
this.neighborThreshold = 4
how close or far (in pixels) the cursor must be from a point marker to detect the point.
this.numberColumns = null
Maximum number of columns in the legend.
this.numberColumns = null
Maximum number of columns in the legend.
this.numberColumns = null
Maximum number of columns in the legend.
this.numberColumns = null
Maximum number of columns in the legend.
this.numberColumns = null
Maximum number of columns in the legend.
this.numberRows = null
Maximum number of rows in the legend.
this.numberRows = null
Maximum number of rows in the legend.
this.numberRows = null
Maximum number of rows in the legend.
this.numberRows = null
Maximum number of rows in the legend.
this.numberRows = null
Maximum number of rows in the legend.
this.numberTicks
Desired number of ticks.
+ + + +
this.offset = 1
Pixel offset at the given shadow angle of each shadow stroke from the last stroke.
this.openColor = null
color of the open price tick mark.
+ + + +
this.pad = 1.2
Padding to extend the range above and below the data bounds.
this.padding = 20
padding between the donut and plot edges, legend, etc.
this.padding = {top: 20, right: 20, bottom: 20, left: 20}
padding between the funnel and plot edges, legend, etc.
this.padding = null
padding between the meterGauge and plot edges, auto calculated by default.
this.padding = 20
padding between the pie and plot edges, legend, etc.
this.padMax = null
Padding to extend the range above data bounds.
this.padMin = null
Padding to extend the range below data bounds.
this.pegNeedle = true
True will stop needle just below/above the min/max values if data is below/above min/max, as if the meter is “pegged”.
this.placement = "insideGrid"
“insideGrid” places legend inside the grid area of the plot.
Wether to draw the legend before the series or not.
this.prefix = ''
string appended to the tick label if no formatString is specified.
this.prefix = ''
string appended to the tick label if no formatString is specified.
this.pt2px = null
Point to pixel scaling factor, used for computing height of bounding box around a label.
this.pt2px = null
Point to pixel scaling factor, used for computing height of bounding box around a label.
+ + + +
this.renderer = new $.jqplot.LineRenderer()
Renderer to use to draw the trend line.
this.renderer = $.jqplot.LinearAxisRenderer
A class of a rendering engine that handles tick generation, scaling input data to pixel grid units and drawing the axis element.
this.renderer = $.jqplot.CanvasGridRenderer
Instance of a renderer which will actually render the grid, see $.jqplot.CanvasGridRenderer.
this.renderer = $.jqplot.LineRenderer
A class of a renderer which will draw the series, see $.jqplot.LineRenderer.
this.renderer = $.jqplot.DivTitleRenderer
A class for creating a DOM element for the title, see $.jqplot.DivTitleRenderer.
this.rendererOptions = {marker:{show:false}}
Options to pass to the line renderer.
this.rendererOptions = {}
renderer specific options.
this.rendererOptions = {}
Options to pass on to the renderer, see $.jqplot.CanvasGridRenderer.
this.rendererOptions = {}
renderer specific options passed to the renderer.
this.rendererOptions = {}
Options to pass on to the renderer.
this.rendererOptions = {}
renderer specific options passed to the renderer.
this.ringColor = "#BBC6D0"
color of the outer ring, hub, and needle of the gauge.
this.ringMargin = null
pixel distance between rings, or multiple series in a donut plot.
this.ringWidth = null
width of the ring around the gauge.
this.rowSpacing = '0.5em'
css padding-top spec for the rows in the legend.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/Properties4.html Index: Site/Site_W/jpqplot/docs/index/Properties4.html ================================================================== --- Site/Site_W/jpqplot/docs/index/Properties4.html +++ Site/Site_W/jpqplot/docs/index/Properties4.html @@ -0,0 +1,34 @@ + + +Property Index + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
S
 sectionMargin, $.jqplot.FunnelRenderer
 series, jqPlot
 seriesColors, jqPlot
 seriesDefaults, jqPlot
 seriesLabelIndex, $.jqplot.PointLabels
 seriesToggle
 shadow
 shadowAlpha
 shadowAngle
 shadowColor, Grid
 shadowDepth
 shadowOffset
 shadowRenderer, $.jqplot.MarkerRenderer
 shadowWidth, Grid
 shapeRenderer, $.jqplot.MarkerRenderer
 show
 showBorders, $.jqplot.MekkoRenderer
 showCursorLegend, $.jqplot.Cursor
 showDataLabels
 showGridline
 showHorizontalLine, $.jqplot.Cursor
 showLabel
 showLabels
 showLine, Series
 showMark
 showMarker
 showMinorTicks, Axis
 showSwatch, Legend
 showTickLabels, $.jqplot.MeterGaugeRenderer
 showTickMarks, Axis
 showTicks
 showTooltip
 showTooltipDataPosition, $.jqplot.Cursor
 showTooltipGridPosition, $.jqplot.Cursor
 showTooltipOutsideZoom, $.jqplot.Cursor
 showTooltipUnitPosition, $.jqplot.Cursor
 showVerticalLine, $.jqplot.Cursor
 size
 sizeAdjust, $.jqplot.Highlighter
 sliceMargin
 sortData, jqPlot
 sortMergedLabels, $.jqplot.CategoryAxisRenderer
 stackedValue, $.jqplot.PointLabels
 stackSeries, jqPlot
 startAngle
 strokeRect, $.jqplot.shapeRenderer
 strokeStyle, $.jqplot.shapeRenderer
 style
 syncTicks, Axis
+ +
this.sectionMargin = 6
spacing between funnel sections in pixels.
this.series = []
Array of series object options.
this.seriesColors = [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"]
Ann array of CSS color specifications that will be applied, in order, to the series in the plot.
seriesDefaults: {}, gridPadding: {top:10, right:10, bottom:23, left:10}, series:[] }
default options that will be applied to all series.
this.seriesLabelIndex = null
array index for location of labels within data point arrays.
this.seriesToggle = 'normal'
false to not enable series on/off toggling on the legend.
this.shadow = true
wether or not to draw a shadow on the line
this.shadow = true
true or false, wether or not to show the shadow.
this.shadow = true
wether to show a shadow behind the grid.
this.shadow = true
wether or not to draw a shadow on the line
this.shadowAlpha = 0.08
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = '0.07'
Alpha channel transparency of shadow.
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = 0.07
transparency of the shadow (0 = transparent, 1 = opaque)
this.shadowAlpha = 0.07
Alpha transparency of the shadow.
this.shadowAlpha = '0.07'
Alpha channel transparency of shadow.
this.shadowAlpha = '0.1'
Alpha channel transparency of shadow.
this.shadowAngle = 45
Shadow angle in degrees
this.shadowAngle = 45
Angle of the shadow on the trend line.
this.shadowAngle = 45
shadow angle in degrees
this.shadowAngle = 45
Shadow angle in degrees
this.shadowColor = null
an optional css color spec for the shadow in ‘rgba(n, n, n, n)’ form
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 3
Number of times shadow is stroked, each stroke offset shadowOffset from the last.
this.shadowDepth = 4
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 5
number of strokes to apply to the shadow, each stroke offset shadowOffset from the last.
this.shadowDepth = 3
number of strokes to make of the shadow.
this.shadowDepth = 3
Number of times shadow is stroked, each stroke offset shadowOffset from the last.
this.shadowDepth = 3
Number of times shadow is stroked, each stroke offset shadowOffset from the last.
this.shadowOffset = 2
offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 2
offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 2
offset of the shadow from the area and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 1
Shadow offset from line in pixels
this.shadowOffset = 2
offset of the shadow from the gauge ring and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 2
offset of the shadow from the slice and offset of each succesive stroke of the shadow from the last.
this.shadowOffset = 1.0
pixel offset for each stroke of the shadow.
this.shadowOffset = 1.5
Offset of each shadow stroke from the border in pixels
this.shadowOffset = 1.25
Shadow offset from line in pixels
this.shadowRenderer = new $.jqplot.ShadowRenderer()
Renderer that will draws the shadows on the marker.
this.shadowWidth = 3
width of the stoke for the shadow
this.shapeRenderer = new $.jqplot.ShapeRenderer()
Renderer that will draw the marker.
this.show = true
wether or not to show the tick (mark and label).
this.show = true
wether or not to show the tick (mark and label).
this.show = true
wether or not to show the tick (mark and label).
this.show = true
wether or not to show the tick (mark and label).
this.show = $.jqplot.config.enablePlugins
wether to show the cursor or not.
this.show = $.jqplot.config.enablePlugins
true to show the highlight.
this.show = true
wether or not to show the marker.
this.show = $.jqplot.config.enablePlugins
show the labels or not.
this.show = $.jqplot.config.enablePlugins
Wether or not to show the trend line.
this.show = false
Wether to display the axis on the graph.
this.show = false
Wether to display the legend on the graph.
this.show = true
wether or not to draw the series.
this.show = true
wether or not to show the title
this.showBorders = true
True to draw borders lines between areas on the chart.
this.showCursorLegend = false
Replace the plot legend with an enhanced legend displaying intersection information.
this.showDataLabels = false
true to show data labels on slices.
this.showDataLabels = false
true to show data labels on slices.
this.showDataLabels = false
true to show data labels on slices.
this.showGridline = true
wether or not to draw the gridline on the grid at this tick.
this.showGridline = true
wether or not to draw the gridline on the grid at this tick.
this.showHorizontalLine = false
draw a horizontal line across the plot which follows the cursor.
this.showLabel = true
wether or not to show the label.
this.showLabel = true
wether or not to show the label.
this.showLabel = true
wether or not to show the label.
this.showLabel = true
true to show the axis label.
this.showLabel = true
true to show label for this series in the legend.
this.showLabels = true
True to show labels on bubbles (if any), false to not show.
this.showLabels = true
true to show the label text on the legend.
this.showLine = true
wether to actually draw the line or not.
this.showMark = true
wether or not to show the mark on the axis.
this.showMark = true
wether or not to show the mark on the axis.
this.showMarker = true
true to show the marker
this.showMarker = true
wether or not to show the markers at the data points.
this.showMinorTicks = true
Wether or not to show minor ticks.
this.showSwatches = true
true to show the color swatches on the legend.
this.showTickLabels = true
true to show tick labels next to ticks.
this.showTickMarks = true
Wether to show the tick marks (line crossing grid) or not.
this.showTicks = true
true to show ticks around gauge.
this.showTicks = true
Wether to show the ticks (both marks and labels) or not.
this.showTooltip = true
show a cursor position tooltip.
this.showTooltip = true
Show a tooltip with data point values.
this.showTooltipDataPosition = false
Used with showVerticalLine to show intersecting data points in the tooltip.
this.showTooltipGridPosition = false
show the grid pixel coordinates of the mouse.
this.showTooltipOutsideZoom = false
True will keep updating the tooltip when zooming of the grid.
this.showTooltipUnitPosition = true
show the unit (data) coordinates of the mouse.
this.showVerticalLine = false
draw a vertical line across the plot which follows the cursor.
this.size = 4
Length of the tick beyond the grid in pixels.
this.size = 9.0
Size of the marker (diameter or circle, length of edge of square, etc.)
this.sizeAdjust = 5
Pixels to add to the overall size of the highlight.
this.sliceMargin = 0
angular spacing between donut slices in degrees.
this.sliceMargin = 0
angular spacing between pie slices in degrees.
this.sortData = true
false to not sort the data passed in by the user.
this.sortMergedLabels = false
True to sort tick labels when labels are created by merging x axis values from multiple series.
this.stackedValue = false
true to display value as stacked in a stacked plot.
this.stackSeries = false
true or false, creates a stack or “mountain” plot.
this.startAngle = 0
Angle to start drawing donut in degrees.
this.startAngle = 0
Angle to start drawing pie in degrees.
this.strokeRect = false
true to draw shape as a stroked rectangle.
this.strokeStyle = '#999999'
css color spec for the stoke style
this.style = 'crosshair'
CSS spec for cursor style
this.style = 'filledCircle'
One of diamond, circle, square, x, plus, dash, filledDiamond, filledCircle, filledSquare
this.syncTicks = null
true to try and synchronize tick spacing across multiple axes so that ticks and grid lines line up.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/index/Properties5.html Index: Site/Site_W/jpqplot/docs/index/Properties5.html ================================================================== --- Site/Site_W/jpqplot/docs/index/Properties5.html +++ Site/Site_W/jpqplot/docs/index/Properties5.html @@ -0,0 +1,58 @@ + + +Property Index + + + + + + + + + +
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
T
 text, Title
 textAlign, Title
 textColor
 themes, $.jqplot.ThemeEngine
 thickness, $.jqplot.DonutRenderer
 tickColor, $.jqplot.MeterGaugeRenderer
 tickInterval, Axis
 tickLength, $.jqplot.OHLCRenderer
 tickMode, $.jqplot.MekkoAxisRenderer
 tickOptions, Axis
 tickPadding, $.jqplot.MeterGaugeRenderer
 tickRenderer
 ticks
 tickSpacing
 title, jqPlot
 tooltipAxes, $.jqplot.Highlighter
 tooltipAxisGroups, $.jqplot.Cursor
 tooltipFadeSpeed, $.jqplot.Highlighter
 tooltipFormatString
 tooltipLocation
 tooltipOffset
 type, $.jqplot.Trendline
U
 upBodyColor, $.jqplot.OHLCRenderer
 useAxesFormatters
 useNegativeColors, Series
 useSeriesColor, Axis
V
 varyBarColor, $.jqplot.BarRenderer
 varyBlockColors, $.jqplot.BlockRenderer
 varyBubbleColors, $.jqplot.BubbleRenderer
W
 waterfall, $.jqplot.BarRenderer
 wickColor, $.jqplot.OHLCRenderer
 widthRatio, $.jqplot.FunnelRenderer
X
 xaxis, Series
 xoffset, Legend
 xpadding, $.jqplot.PointLabels
Y
 yaxis, Series
 yoffset, Legend
 ypadding, $.jqplot.PointLabels
 yvalues, $.jqplot.Highlighter
Z
 zoom, $.jqplot.Cursor
+ +
this.text = text
text of the title;
this.textAlign
css text-align spec for the text.
this.textColor
css spec for the color attribute.
this.textColor = '#666666'
css spec for the color attribute.
this.textColor = '#666666'
css spec for the color attribute.
this.textColor
css color spec for the legend text.
this.textColor
css color spec for the text.
this.themes = {}
hash of themes managed by the theme engine.
this.thickness = null
thickness of the donut, auto computed by default Overridden by if innerDiameter is specified.
this.tickColor = "989898"
color of the tick marks around the gauge.
this.tickInterval
number of units between ticks.
this.tickLength = 'auto'
length of the line in pixels indicating open and close price.
this.tickMode
How to space the ticks on the axis.
this.tickOptions = {}
Options that will be passed to the tickRenderer, see $.jqplot.AxisTickRenderer options.
this.tickPadding = null
padding of the tick marks to the outer ring and the tick labels to marks.
A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
this.tickRenderer = $.jqplot.AxisTickRenderer
A class of a rendering engine for creating the ticks labels displayed on the plot, See $.jqplot.AxisTickRenderer.
this.ticks = []
Array of tick values.
this.ticks = []
1D [val, val, ...] or 2D [[val, label], [val, label], ...] array of ticks for the axis.
this.tickSpacing = 30
Degrees between ticks.
this.tickSpacing = 75
Approximate pixel spacing between ticks on graph.
this.title = new Title()
Title object.
this.tooltipAxes = 'both'
Which axes to display in tooltip, ‘x’, ‘y’ or ‘both’, ‘xy’ or ‘yx’ ‘both’ and ‘xy’ are equivalent, ‘yx’ reverses order of labels.
this.tooltipAxisGroups = []
Show position for the specified axes.
this.tooltipFadeSpeed = "fast"
‘slow’, ‘def’, ‘fast’, or number of milliseconds.
this.tooltipFormatString = '%.4P, %.4P'
sprintf format string for the tooltip.
this.tooltipFormatString = '%.5P'
sprintf format string for the tooltip.
this.tooltipLocation = 'se'
Where to position tooltip.
this.tooltipLocation = 'nw'
Where to position tooltip, ‘n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘nw’
this.tooltipOffset = 6
Pixel offset of tooltip from the grid boudaries or cursor center.
this.tooltipOffset = 2
Pixel offset of tooltip from the highlight.
this.type = 'linear'
Either ‘exponential’, ‘exp’, or ‘linear’.
+ + + +
this.upBodyColor = null
Color of candlestick body of an “up” day.
this.useAxesFormatters = true
Use the x and y axes formatters to format the text in the tooltip.
this.useAxesFormatters = true
Use the x and y axes formatters to format the text in the tooltip.
this.useNegativeColors = true
true to color negative values differently in filled and bar charts.
this.useSeriesColor = false
Use the color of the first series associated with this axis for the tick marks and line bordering this axis.
+ + + +
this.varyBarColor = false
true to color each bar of a series separately rather than have every bar of a given series the same color.
this.varyBlockColors = false
true to vary the color of each block in this series according to the seriesColors array.
this.varyBubbleColors = true
True to vary the color of each bubble in this series according to the seriesColors array.
+ + + +
this.waterfall = false
true to enable waterfall plot.
this.wickColor = null
color of the hi-lo line thorugh the candlestick body.
this.widthRatio = 0.2
The ratio of the width of the top of the funnel to the bottom.
+ + + +
this.xaxis = 'xaxis'
which x axis to use with this series, either ‘xaxis’ or ‘x2axis’.
this.xoffset = 0
DEPRECATED.
this.xpadding = 6
horizontal padding in pixels between point and label
+ + + +
this.yaxis = 'yaxis'
which y axis to use with this series, either ‘yaxis’ or ‘y2axis’.
this.yoffset = 0
DEPRECATED.
this.ypadding = 6
vertical padding in pixels between point and label
this.yvalues = 1
Number of y values to expect in the data point array.
+ + + +
this.zoom = false
Enable plot zooming.
+ +
+ + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/javascript/main.js Index: Site/Site_W/jpqplot/docs/javascript/main.js ================================================================== --- Site/Site_W/jpqplot/docs/javascript/main.js +++ Site/Site_W/jpqplot/docs/javascript/main.js @@ -0,0 +1,836 @@ +// This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL + + +// +// Browser Styles +// ____________________________________________________________________________ + +var agt=navigator.userAgent.toLowerCase(); +var browserType; +var browserVer; + +if (agt.indexOf("opera") != -1) + { + browserType = "Opera"; + + if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1) + { browserVer = "Opera7"; } + else if (agt.indexOf("opera 8") != -1 || agt.indexOf("opera/8") != -1) + { browserVer = "Opera8"; } + else if (agt.indexOf("opera 9") != -1 || agt.indexOf("opera/9") != -1) + { browserVer = "Opera9"; } + } + +else if (agt.indexOf("applewebkit") != -1) + { + browserType = "Safari"; + + if (agt.indexOf("version/3") != -1) + { browserVer = "Safari3"; } + else if (agt.indexOf("safari/4") != -1) + { browserVer = "Safari2"; } + } + +else if (agt.indexOf("khtml") != -1) + { + browserType = "Konqueror"; + } + +else if (agt.indexOf("msie") != -1) + { + browserType = "IE"; + + if (agt.indexOf("msie 6") != -1) + { browserVer = "IE6"; } + else if (agt.indexOf("msie 7") != -1) + { browserVer = "IE7"; } + } + +else if (agt.indexOf("gecko") != -1) + { + browserType = "Firefox"; + + if (agt.indexOf("rv:1.7") != -1) + { browserVer = "Firefox1"; } + else if (agt.indexOf("rv:1.8)") != -1 || agt.indexOf("rv:1.8.0") != -1) + { browserVer = "Firefox15"; } + else if (agt.indexOf("rv:1.8.1") != -1) + { browserVer = "Firefox2"; } + } + + +// +// Support Functions +// ____________________________________________________________________________ + + +function GetXPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetLeft; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function GetYPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetTop; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function MoveToPosition(item, x, y) + { + // Opera 5 chokes on the px extension, so it can use the Microsoft one instead. + + if (item.style.left != null) + { + item.style.left = x + "px"; + item.style.top = y + "px"; + } + else if (item.style.pixelLeft != null) + { + item.style.pixelLeft = x; + item.style.pixelTop = y; + }; + }; + + +// +// Menu +// ____________________________________________________________________________ + + +function ToggleMenu(id) + { + if (!window.document.getElementById) + { return; }; + + var display = window.document.getElementById(id).style.display; + + if (display == "none") + { display = "block"; } + else + { display = "none"; } + + window.document.getElementById(id).style.display = display; + } + +function HideAllBut(ids, max) + { + if (document.getElementById) + { + ids.sort( function(a,b) { return a - b; } ); + var number = 1; + + while (number < max) + { + if (ids.length > 0 && number == ids[0]) + { ids.shift(); } + else + { + document.getElementById("MGroupContent" + number).style.display = "none"; + }; + + number++; + }; + }; + } + + +// +// Tooltips +// ____________________________________________________________________________ + + +var tooltipTimer = 0; + +function ShowTip(event, tooltipID, linkID) + { + if (tooltipTimer) + { clearTimeout(tooltipTimer); }; + + var docX = event.clientX + window.pageXOffset; + var docY = event.clientY + window.pageYOffset; + + var showCommand = "ReallyShowTip('" + tooltipID + "', '" + linkID + "', " + docX + ", " + docY + ")"; + + tooltipTimer = setTimeout(showCommand, 1000); + } + +function ReallyShowTip(tooltipID, linkID, docX, docY) + { + tooltipTimer = 0; + + var tooltip; + var link; + + if (document.getElementById) + { + tooltip = document.getElementById(tooltipID); + link = document.getElementById(linkID); + } +/* else if (document.all) + { + tooltip = eval("document.all['" + tooltipID + "']"); + link = eval("document.all['" + linkID + "']"); + } +*/ + if (tooltip) + { + var left = GetXPosition(link); + var top = GetYPosition(link); + top += link.offsetHeight; + + + // The fallback method is to use the mouse X and Y relative to the document. We use a separate if and test if its a number + // in case some browser snuck through the above if statement but didn't support everything. + + if (!isFinite(top) || top == 0) + { + left = docX; + top = docY; + } + + // Some spacing to get it out from under the cursor. + + top += 10; + + // Make sure the tooltip doesnt get smushed by being too close to the edge, or in some browsers, go off the edge of the + // page. We do it here because Konqueror does get offsetWidth right even if it doesnt get the positioning right. + + if (tooltip.offsetWidth != null) + { + var width = tooltip.offsetWidth; + var docWidth = document.body.clientWidth; + + if (left + width > docWidth) + { left = docWidth - width - 1; } + + // If there's a horizontal scroll bar we could go past zero because it's using the page width, not the window width. + if (left < 0) + { left = 0; }; + } + + MoveToPosition(tooltip, left, top); + tooltip.style.visibility = "visible"; + } + } + +function HideTip(tooltipID) + { + if (tooltipTimer) + { + clearTimeout(tooltipTimer); + tooltipTimer = 0; + } + + var tooltip; + + if (document.getElementById) + { tooltip = document.getElementById(tooltipID); } + else if (document.all) + { tooltip = eval("document.all['" + tooltipID + "']"); } + + if (tooltip) + { tooltip.style.visibility = "hidden"; } + } + + +// +// Blockquote fix for IE +// ____________________________________________________________________________ + + +function NDOnLoad() + { + if (browserVer == "IE6") + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + if (scrollboxes.item(0)) + { + NDDoResize(); + window.onresize=NDOnResize; + }; + }; + }; + + +var resizeTimer = 0; + +function NDOnResize() + { + if (resizeTimer != 0) + { clearTimeout(resizeTimer); }; + + resizeTimer = setTimeout(NDDoResize, 250); + }; + + +function NDDoResize() + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + var i; + var item; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = 100; + i++; + }; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = item.parentNode.offsetWidth; + i++; + }; + + clearTimeout(resizeTimer); + resizeTimer = 0; + } + + + +/* ________________________________________________________________________________________________________ + + Class: SearchPanel + ________________________________________________________________________________________________________ + + A class handling everything associated with the search panel. + + Parameters: + + name - The name of the global variable that will be storing this instance. Is needed to be able to set timeouts. + mode - The mode the search is going to work in. Pass CommandLineOption()>, so the + value will be something like "HTML" or "FramedHTML". + + ________________________________________________________________________________________________________ +*/ + + +function SearchPanel(name, mode, resultsPath) + { + if (!name || !mode || !resultsPath) + { alert("Incorrect parameters to SearchPanel."); }; + + + // Group: Variables + // ________________________________________________________________________ + + /* + var: name + The name of the global variable that will be storing this instance of the class. + */ + this.name = name; + + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: resultsPath + The relative path from the current HTML page to the results page directory. + */ + this.resultsPath = resultsPath; + + /* + var: keyTimeout + The timeout used between a keystroke and when a search is performed. + */ + this.keyTimeout = 0; + + /* + var: keyTimeoutLength + The length of in thousandths of a second. + */ + this.keyTimeoutLength = 500; + + /* + var: lastSearchValue + The last search string executed, or an empty string if none. + */ + this.lastSearchValue = ""; + + /* + var: lastResultsPage + The last results page. The value is only relevant if is set. + */ + this.lastResultsPage = ""; + + /* + var: deactivateTimeout + + The timeout used between when a control is deactivated and when the entire panel is deactivated. Is necessary + because a control may be deactivated in favor of another control in the same panel, in which case it should stay + active. + */ + this.deactivateTimout = 0; + + /* + var: deactivateTimeoutLength + The length of in thousandths of a second. + */ + this.deactivateTimeoutLength = 200; + + + + + // Group: DOM Elements + // ________________________________________________________________________ + + + // Function: DOMSearchField + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); }; + + // Function: DOMSearchType + this.DOMSearchType = function() + { return document.getElementById("MSearchType"); }; + + // Function: DOMPopupSearchResults + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); }; + + // Function: DOMPopupSearchResultsWindow + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); }; + + // Function: DOMSearchPanel + this.DOMSearchPanel = function() + { return document.getElementById("MSearchPanel"); }; + + + + + // Group: Event Handlers + // ________________________________________________________________________ + + + /* + Function: OnSearchFieldFocus + Called when focus is added or removed from the search field. + */ + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchFieldChange + Called when the content of the search field is changed. + */ + this.OnSearchFieldChange = function() + { + if (this.keyTimeout) + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + }; + + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) + { + if (searchValue != "") + { + this.keyTimeout = setTimeout(this.name + ".Search()", this.keyTimeoutLength); + } + else + { + if (this.mode == "HTML") + { this.DOMPopupSearchResultsWindow().style.display = "none"; }; + this.lastSearchValue = ""; + }; + }; + }; + + + /* + Function: OnSearchTypeFocus + Called when focus is added or removed from the search type. + */ + this.OnSearchTypeFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchTypeChange + Called when the search type is changed. + */ + this.OnSearchTypeChange = function() + { + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != "") + { + this.Search(); + }; + }; + + + + // Group: Action Functions + // ________________________________________________________________________ + + + /* + Function: CloseResultsWindow + Closes the results window. + */ + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = "none"; + this.Activate(false, true); + }; + + + /* + Function: Search + Performs a search. + */ + this.Search = function() + { + this.keyTimeout = 0; + + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + var searchTopic = this.DOMSearchType().value; + + var pageExtension = searchValue.substr(0,1); + + if (pageExtension.match(/^[a-z]/i)) + { pageExtension = pageExtension.toUpperCase(); } + else if (pageExtension.match(/^[0-9]/)) + { pageExtension = 'Numbers'; } + else + { pageExtension = "Symbols"; }; + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + // indexSectionsWithContent is defined in searchdata.js + if (indexSectionsWithContent[searchTopic][pageExtension] == true) + { + resultsPage = this.resultsPath + '/' + searchTopic + pageExtension + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else + { + resultsPage = this.resultsPath + '/NoResults.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + }; + + var resultsFrame; + if (this.mode == "HTML") + { resultsFrame = window.frames.MSearchResults; } + else if (this.mode == "FramedHTML") + { resultsFrame = window.top.frames['Content']; }; + + + if (resultsPage != this.lastResultsPage || + + // Bug in IE. If everything becomes hidden in a run, none of them will be able to be reshown in the next for some + // reason. It counts the right number of results, and you can even read the display as "block" after setting it, but it + // just doesn't work in IE 6 or IE 7. So if we're on the right page but the previous search had no results, reload the + // page anyway to get around the bug. + (browserType == "IE" && hasResultsPage && + (!resultsFrame.searchResults || resultsFrame.searchResults.lastMatchCount == 0)) ) + + { + resultsFrame.location.href = resultsPageWithSearch; + } + + // So if the results page is right and there's no IE bug, reperform the search on the existing page. We have to check if there + // are results because NoResults.html doesn't have any JavaScript, and it would be useless to do anything on that page even + // if it did. + else if (hasResultsPage) + { + // We need to check if this exists in case the frame is present but didn't finish loading. + if (resultsFrame.searchResults) + { resultsFrame.searchResults.Search(searchValue); } + + // Otherwise just reload instead of waiting. + else + { resultsFrame.location.href = resultsPageWithSearch; }; + }; + + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (this.mode == "HTML" && domPopupSearchResultsWindow.style.display != "block") + { + var domSearchType = this.DOMSearchType(); + + var left = GetXPosition(domSearchType); + var top = GetYPosition(domSearchType) + domSearchType.offsetHeight; + + MoveToPosition(domPopupSearchResultsWindow, left, top); + domPopupSearchResultsWindow.style.display = 'block'; + }; + + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + }; + + + + // Group: Activation Functions + // Functions that handle whether the entire panel is active or not. + // ________________________________________________________________________ + + + /* + Function: Activate + + Activates or deactivates the search panel, resetting things to their default values if necessary. You can call this on every + control's OnBlur() and it will handle not deactivating the entire panel when focus is just switching between them transparently. + + Parameters: + + isActive - Whether you're activating or deactivating the panel. + ignoreDeactivateDelay - Set if you're positive the action will deactivate the panel and thus want to skip the delay. + */ + this.Activate = function(isActive, ignoreDeactivateDelay) + { + // We want to ignore isActive being false while the results window is open. + if (isActive || (this.mode == "HTML" && this.DOMPopupSearchResultsWindow().style.display == "block")) + { + if (this.inactivateTimeout) + { + clearTimeout(this.inactivateTimeout); + this.inactivateTimeout = 0; + }; + + this.DOMSearchPanel().className = 'MSearchPanelActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == 'Search') + { searchField.value = ""; } + } + else if (!ignoreDeactivateDelay) + { + this.inactivateTimeout = setTimeout(this.name + ".InactivateAfterTimeout()", this.inactivateTimeoutLength); + } + else + { + this.InactivateAfterTimeout(); + }; + }; + + + /* + Function: InactivateAfterTimeout + + Called by , which is set by . Inactivation occurs on a timeout because a control may + receive OnBlur() when focus is really transferring to another control in the search panel. In this case we don't want to + actually deactivate the panel because not only would that cause a visible flicker but it could also reset the search value. + So by doing it on a timeout instead, there's a short period where the second control's OnFocus() can cancel the deactivation. + */ + this.InactivateAfterTimeout = function() + { + this.inactivateTimeout = 0; + + this.DOMSearchPanel().className = 'MSearchPanelInactive'; + this.DOMSearchField().value = "Search"; + + this.lastSearchValue = ""; + this.lastResultsPage = ""; + }; + }; + + + + +/* ________________________________________________________________________________________________________ + + Class: SearchResults + _________________________________________________________________________________________________________ + + The class that handles everything on the search results page. + _________________________________________________________________________________________________________ +*/ + + +function SearchResults(name, mode) + { + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: lastMatchCount + The number of matches from the last run of . + */ + this.lastMatchCount = 0; + + + /* + Function: Toggle + Toggles the visibility of the passed element ID. + */ + this.Toggle = function(id) + { + if (this.mode == "FramedHTML") + { return; }; + + var parentElement = document.getElementById(id); + + var element = parentElement.firstChild; + + while (element && element != parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'ISubIndex') + { + if (element.style.display == 'block') + { element.style.display = "none"; } + else + { element.style.display = 'block'; } + }; + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { element = element.firstChild; } + else if (element.nextSibling) + { element = element.nextSibling; } + else + { + do + { + element = element.parentNode; + } + while (element && element != parentElement && !element.nextSibling); + + if (element && element != parentElement) + { element = element.nextSibling; }; + }; + }; + }; + + + /* + Function: Search + + Searches for the passed string. If there is no parameter, it takes it from the URL query. + + Always returns true, since other documents may try to call it and that may or may not be possible. + */ + this.Search = function(search) + { + if (!search) + { + search = window.location.search; + search = search.substring(1); // Remove the leading ? + search = unescape(search); + }; + + search = search.replace(/^ +/, ""); + search = search.replace(/ +$/, ""); + search = search.toLowerCase(); + + if (search.match(/[^a-z0-9]/)) // Just a little speedup so it doesn't have to go through the below unnecessarily. + { + search = search.replace(/\_/g, "_und"); + search = search.replace(/\ +/gi, "_spc"); + search = search.replace(/\~/g, "_til"); + search = search.replace(/\!/g, "_exc"); + search = search.replace(/\@/g, "_att"); + search = search.replace(/\#/g, "_num"); + search = search.replace(/\$/g, "_dol"); + search = search.replace(/\%/g, "_pct"); + search = search.replace(/\^/g, "_car"); + search = search.replace(/\&/g, "_amp"); + search = search.replace(/\*/g, "_ast"); + search = search.replace(/\(/g, "_lpa"); + search = search.replace(/\)/g, "_rpa"); + search = search.replace(/\-/g, "_min"); + search = search.replace(/\+/g, "_plu"); + search = search.replace(/\=/g, "_equ"); + search = search.replace(/\{/g, "_lbc"); + search = search.replace(/\}/g, "_rbc"); + search = search.replace(/\[/g, "_lbk"); + search = search.replace(/\]/g, "_rbk"); + search = search.replace(/\:/g, "_col"); + search = search.replace(/\;/g, "_sco"); + search = search.replace(/\"/g, "_quo"); + search = search.replace(/\'/g, "_apo"); + search = search.replace(/\/g, "_ran"); + search = search.replace(/\,/g, "_com"); + search = search.replace(/\./g, "_per"); + search = search.replace(/\?/g, "_que"); + search = search.replace(/\//g, "_sla"); + search = search.replace(/[^a-z0-9\_]i/gi, "_zzz"); + }; + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); + + if (search.length <= rowMatchName.length && rowMatchName.substr(0, search.length) == search) + { + row.style.display = "block"; + matches++; + } + else + { row.style.display = "none"; }; + }; + + i++; + }; + + document.getElementById("Searching").style.display="none"; + + if (matches == 0) + { document.getElementById("NoMatches").style.display="block"; } + else + { document.getElementById("NoMatches").style.display="none"; } + + this.lastMatchCount = matches; + + return true; + }; + }; + ADDED Site/Site_W/jpqplot/docs/javascript/searchdata.js Index: Site/Site_W/jpqplot/docs/javascript/searchdata.js ================================================================== --- Site/Site_W/jpqplot/docs/javascript/searchdata.js +++ Site/Site_W/jpqplot/docs/javascript/searchdata.js @@ -0,0 +1,182 @@ +var indexSectionsWithContent = { + "General": { + "Symbols": true, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": true, + "K": false, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": true, + "Y": true, + "Z": true + }, + "Functions": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": false, + "C": true, + "D": true, + "E": false, + "F": false, + "G": true, + "H": false, + "I": true, + "J": false, + "K": false, + "L": false, + "M": true, + "N": true, + "O": false, + "P": false, + "Q": false, + "R": true, + "S": true, + "T": false, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": true + }, + "Files": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": false, + "C": false, + "D": false, + "E": false, + "F": false, + "G": false, + "H": false, + "I": false, + "J": true, + "K": false, + "L": false, + "M": false, + "N": false, + "O": false, + "P": false, + "Q": false, + "R": false, + "S": false, + "T": false, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Classes": { + "Symbols": true, + "Numbers": false, + "A": true, + "B": false, + "C": false, + "D": false, + "E": false, + "F": false, + "G": true, + "H": false, + "I": false, + "J": true, + "K": false, + "L": true, + "M": false, + "N": false, + "O": false, + "P": false, + "Q": false, + "R": false, + "S": true, + "T": true, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Hooks": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": false, + "C": false, + "D": false, + "E": true, + "F": false, + "G": false, + "H": false, + "I": false, + "J": true, + "K": false, + "L": false, + "M": false, + "N": false, + "O": false, + "P": true, + "Q": false, + "R": false, + "S": false, + "T": false, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Properties": { + "Symbols": false, + "Numbers": false, + "A": true, + "B": true, + "C": true, + "D": true, + "E": true, + "F": true, + "G": true, + "H": true, + "I": true, + "J": false, + "K": false, + "L": true, + "M": true, + "N": true, + "O": true, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": true, + "V": true, + "W": true, + "X": true, + "Y": true, + "Z": true + } + } ADDED Site/Site_W/jpqplot/docs/search/ClassesA.html Index: Site/Site_W/jpqplot/docs/search/ClassesA.html ================================================================== --- Site/Site_W/jpqplot/docs/search/ClassesA.html +++ Site/Site_W/jpqplot/docs/search/ClassesA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/ClassesG.html Index: Site/Site_W/jpqplot/docs/search/ClassesG.html ================================================================== --- Site/Site_W/jpqplot/docs/search/ClassesG.html +++ Site/Site_W/jpqplot/docs/search/ClassesG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/ClassesJ.html Index: Site/Site_W/jpqplot/docs/search/ClassesJ.html ================================================================== --- Site/Site_W/jpqplot/docs/search/ClassesJ.html +++ Site/Site_W/jpqplot/docs/search/ClassesJ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/ClassesL.html Index: Site/Site_W/jpqplot/docs/search/ClassesL.html ================================================================== --- Site/Site_W/jpqplot/docs/search/ClassesL.html +++ Site/Site_W/jpqplot/docs/search/ClassesL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/ClassesS.html Index: Site/Site_W/jpqplot/docs/search/ClassesS.html ================================================================== --- Site/Site_W/jpqplot/docs/search/ClassesS.html +++ Site/Site_W/jpqplot/docs/search/ClassesS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/ClassesSymbols.html Index: Site/Site_W/jpqplot/docs/search/ClassesSymbols.html ================================================================== --- Site/Site_W/jpqplot/docs/search/ClassesSymbols.html +++ Site/Site_W/jpqplot/docs/search/ClassesSymbols.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/search/ClassesT.html Index: Site/Site_W/jpqplot/docs/search/ClassesT.html ================================================================== --- Site/Site_W/jpqplot/docs/search/ClassesT.html +++ Site/Site_W/jpqplot/docs/search/ClassesT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FilesJ.html Index: Site/Site_W/jpqplot/docs/search/FilesJ.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FilesJ.html +++ Site/Site_W/jpqplot/docs/search/FilesJ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FunctionsC.html Index: Site/Site_W/jpqplot/docs/search/FunctionsC.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FunctionsC.html +++ Site/Site_W/jpqplot/docs/search/FunctionsC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
copy, $.jqplot.ThemeEngine
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FunctionsD.html Index: Site/Site_W/jpqplot/docs/search/FunctionsD.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FunctionsD.html +++ Site/Site_W/jpqplot/docs/search/FunctionsD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
drawSeries, jqPlot
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FunctionsG.html Index: Site/Site_W/jpqplot/docs/search/FunctionsG.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FunctionsG.html +++ Site/Site_W/jpqplot/docs/search/FunctionsG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
get, $.jqplot.ThemeEngine
getThemeNames, $.jqplot.ThemeEngine
getThemes, $.jqplot.ThemeEngine
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FunctionsI.html Index: Site/Site_W/jpqplot/docs/search/FunctionsI.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FunctionsI.html +++ Site/Site_W/jpqplot/docs/search/FunctionsI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
init, jqPlot
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FunctionsM.html Index: Site/Site_W/jpqplot/docs/search/FunctionsM.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FunctionsM.html +++ Site/Site_W/jpqplot/docs/search/FunctionsM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
moveBlock, $.jqplot.BlockRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FunctionsN.html Index: Site/Site_W/jpqplot/docs/search/FunctionsN.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FunctionsN.html +++ Site/Site_W/jpqplot/docs/search/FunctionsN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
newTheme, $.jqplot.ThemeEngine
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FunctionsR.html Index: Site/Site_W/jpqplot/docs/search/FunctionsR.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FunctionsR.html +++ Site/Site_W/jpqplot/docs/search/FunctionsR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
redraw, jqPlot
reInitialize, jqPlot
remove, $.jqplot.ThemeEngine
rename, $.jqplot.ThemeEngine
replot, jqPlot
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FunctionsS.html Index: Site/Site_W/jpqplot/docs/search/FunctionsS.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FunctionsS.html +++ Site/Site_W/jpqplot/docs/search/FunctionsS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/FunctionsZ.html Index: Site/Site_W/jpqplot/docs/search/FunctionsZ.html ================================================================== --- Site/Site_W/jpqplot/docs/search/FunctionsZ.html +++ Site/Site_W/jpqplot/docs/search/FunctionsZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
zoomProxy, $.jqplot.Cursor.$.jqplot.Cursor
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralA.html Index: Site/Site_W/jpqplot/docs/search/GeneralA.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralA.html +++ Site/Site_W/jpqplot/docs/search/GeneralA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
activeTheme, $.jqplot.ThemeEngine
addLegendRowHooks, $.jqplot.$.jqplot
alpha, $.jqplot.shadowRenderer
autoscale, Axis
autoscaleBubbles, $.jqplot.BubbleRenderer
autoscaleMultiplier, $.jqplot.BubbleRenderer
autoscalePointsFactor, $.jqplot.BubbleRenderer
axes, jqPlot
axesDefaults, jqPlot
axisDefaults, $.jqplot.LogAxisRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralB.html Index: Site/Site_W/jpqplot/docs/search/GeneralB.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralB.html +++ Site/Site_W/jpqplot/docs/search/GeneralB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
barDirection, $.jqplot.BarRenderer
barLabelOptions, $.jqplot.MekkoAxisRenderer
barLabelRenderer, $.jqplot.MekkoAxisRenderer
barLabels, $.jqplot.MekkoAxisRenderer
barMargin, $.jqplot.BarRenderer
barPadding, $.jqplot.BarRenderer
barWidth, $.jqplot.BarRenderer
bodyWidth, $.jqplot.OHLCRenderer
border, Legend
breakOnNull, Series
bringSeriesToFront, $.jqplot.Highlighter
bubbleAlpha, $.jqplot.BubbleRenderer
bubbleGradients, $.jqplot.BubbleRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralC.html Index: Site/Site_W/jpqplot/docs/search/GeneralC.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralC.html +++ Site/Site_W/jpqplot/docs/search/GeneralC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
candleStick, $.jqplot.OHLCRenderer
clearRect, $.jqplot.shapeRenderer
clickReset, $.jqplot.Cursor
closeColor, $.jqplot.OHLCRenderer
constrainOutsideZoom, $.jqplot.Cursor
constrainTo, $.jqplot.Dragable
constrainZoomTo, $.jqplot.Cursor
copy, $.jqplot.ThemeEngine
css, $.jqplot.BlockRenderer
cursorLegendFormatString, $.jqplot.Cursor
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralD.html Index: Site/Site_W/jpqplot/docs/search/GeneralD.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralD.html +++ Site/Site_W/jpqplot/docs/search/GeneralD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/search/GeneralE.html Index: Site/Site_W/jpqplot/docs/search/GeneralE.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralE.html +++ Site/Site_W/jpqplot/docs/search/GeneralE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
edgeTolerance, $.jqplot.PointLabels
eventListenerHooks, $.jqplot.$.jqplot
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralF.html Index: Site/Site_W/jpqplot/docs/search/GeneralF.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralF.html +++ Site/Site_W/jpqplot/docs/search/GeneralF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/search/GeneralG.html Index: Site/Site_W/jpqplot/docs/search/GeneralG.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralG.html +++ Site/Site_W/jpqplot/docs/search/GeneralG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
get, $.jqplot.ThemeEngine
getThemeNames, $.jqplot.ThemeEngine
getThemes, $.jqplot.ThemeEngine
grid, jqPlot
groups, $.jqplot.BarRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralH.html Index: Site/Site_W/jpqplot/docs/search/GeneralH.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralH.html +++ Site/Site_W/jpqplot/docs/search/GeneralH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
hideZeros, $.jqplot.PointLabels
highlightAlpha, $.jqplot.BubbleRenderer
highlightColor, $.jqplot.LineRenderer
hlc, $.jqplot.OHLCRenderer
Hooks, $.jqplot
hubRadius, $.jqplot.MeterGaugeRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralI.html Index: Site/Site_W/jpqplot/docs/search/GeneralI.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralI.html +++ Site/Site_W/jpqplot/docs/search/GeneralI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
index, Series
init, jqPlot
innerDiameter, $.jqplot.DonutRenderer
insertBreaks, $.jqplot.BlockRenderer
intersectionThreshold, $.jqplot.Cursor
intervalColors, $.jqplot.MeterGaugeRenderer
intervalInnerRadius, $.jqplot.MeterGaugeRenderer
intervalOuterRadius, $.jqplot.MeterGaugeRenderer
intervals, $.jqplot.MeterGaugeRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralJ.html Index: Site/Site_W/jpqplot/docs/search/GeneralJ.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralJ.html +++ Site/Site_W/jpqplot/docs/search/GeneralJ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralL.html Index: Site/Site_W/jpqplot/docs/search/GeneralL.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralL.html +++ Site/Site_W/jpqplot/docs/search/GeneralL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/search/GeneralM.html Index: Site/Site_W/jpqplot/docs/search/GeneralM.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralM.html +++ Site/Site_W/jpqplot/docs/search/GeneralM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
marginBottom, Legend
marginLeft, Legend
marginRight, Legend
marginTop, Legend
Methods, $.jqplot.BlockRenderer
moveBlock, $.jqplot.BlockRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralN.html Index: Site/Site_W/jpqplot/docs/search/GeneralN.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralN.html +++ Site/Site_W/jpqplot/docs/search/GeneralN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
needlePad, $.jqplot.MeterGaugeRenderer
needleThickness, $.jqplot.MeterGaugeRenderer
newTheme, $.jqplot.ThemeEngine
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralO.html Index: Site/Site_W/jpqplot/docs/search/GeneralO.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralO.html +++ Site/Site_W/jpqplot/docs/search/GeneralO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
offset, $.jqplot.shadowRenderer
openColor, $.jqplot.OHLCRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralP.html Index: Site/Site_W/jpqplot/docs/search/GeneralP.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralP.html +++ Site/Site_W/jpqplot/docs/search/GeneralP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
pad, Axis
padMax, Axis
padMin, Axis
pegNeedle, $.jqplot.MeterGaugeRenderer
placement, Legend
postDrawHooks, $.jqplot.$.jqplot
postDrawSeriesHooks, $.jqplot.$.jqplot
postDrawSeriesShadowHooks, $.jqplot.$.jqplot
postInitHooks, $.jqplot.$.jqplot
postParseOptionsHooks, $.jqplot.$.jqplot
postParseSeriesOptionsHooks, $.jqplot.$.jqplot
postSeriesInitHooks, $.jqplot.$.jqplot
predraw, Legend
preDrawHooks, $.jqplot.$.jqplot
preDrawLegendHooks, $.jqplot.$.jqplot
preDrawSeriesHooks, $.jqplot.$.jqplot
preDrawSeriesShadowHooks, $.jqplot.$.jqplot
preInitHooks, $.jqplot.$.jqplot
preParseOptionsHooks, $.jqplot.$.jqplot
preParseSeriesOptionsHooks, $.jqplot.$.jqplot
preSeriesInitHooks, $.jqplot.$.jqplot
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralR.html Index: Site/Site_W/jpqplot/docs/search/GeneralR.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralR.html +++ Site/Site_W/jpqplot/docs/search/GeneralR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
redraw, jqPlot
reInitialize, jqPlot
remove, $.jqplot.ThemeEngine
rename, $.jqplot.ThemeEngine
replot, jqPlot
ringColor, $.jqplot.MeterGaugeRenderer
ringMargin, $.jqplot.DonutRenderer
ringWidth, $.jqplot.MeterGaugeRenderer
rowSpacing, Legend
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralS.html Index: Site/Site_W/jpqplot/docs/search/GeneralS.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralS.html +++ Site/Site_W/jpqplot/docs/search/GeneralS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
sectionMargin, $.jqplot.FunnelRenderer
series, jqPlot
seriesColors, jqPlot
seriesLabelIndex, $.jqplot.PointLabels
shadowRenderer, $.jqplot.MarkerRenderer
shapeRenderer, $.jqplot.MarkerRenderer
showBorders, $.jqplot.MekkoRenderer
showCursorLegend, $.jqplot.Cursor
showHorizontalLine, $.jqplot.Cursor
showLine, Series
showSwatch, Legend
showTickLabels, $.jqplot.MeterGaugeRenderer
showTooltipDataPosition, $.jqplot.Cursor
showTooltipGridPosition, $.jqplot.Cursor
showTooltipOutsideZoom, $.jqplot.Cursor
showTooltipUnitPosition, $.jqplot.Cursor
showVerticalLine, $.jqplot.Cursor
sizeAdjust, $.jqplot.Highlighter
sortData, jqPlot
sortMergedLabels, $.jqplot.CategoryAxisRenderer
stackedValue, $.jqplot.PointLabels
stackSeries, jqPlot
strokeRect, $.jqplot.shapeRenderer
strokeStyle, $.jqplot.shapeRenderer
syncTicks, Axis
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralSymbols.html Index: Site/Site_W/jpqplot/docs/search/GeneralSymbols.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralSymbols.html +++ Site/Site_W/jpqplot/docs/search/GeneralSymbols.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/search/GeneralT.html Index: Site/Site_W/jpqplot/docs/search/GeneralT.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralT.html +++ Site/Site_W/jpqplot/docs/search/GeneralT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
text, Title
textAlign, Title
themes, $.jqplot.ThemeEngine
thickness, $.jqplot.DonutRenderer
tickColor, $.jqplot.MeterGaugeRenderer
tickLength, $.jqplot.OHLCRenderer
tickMode, $.jqplot.MekkoAxisRenderer
tickPadding, $.jqplot.MeterGaugeRenderer
title, jqPlot
tooltipAxes, $.jqplot.Highlighter
tooltipAxisGroups, $.jqplot.Cursor
tooltipFadeSpeed, $.jqplot.Highlighter
type, $.jqplot.Trendline
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralU.html Index: Site/Site_W/jpqplot/docs/search/GeneralU.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralU.html +++ Site/Site_W/jpqplot/docs/search/GeneralU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
upBodyColor, $.jqplot.OHLCRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralV.html Index: Site/Site_W/jpqplot/docs/search/GeneralV.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralV.html +++ Site/Site_W/jpqplot/docs/search/GeneralV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
varyBarColor, $.jqplot.BarRenderer
varyBlockColors, $.jqplot.BlockRenderer
varyBubbleColors, $.jqplot.BubbleRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralW.html Index: Site/Site_W/jpqplot/docs/search/GeneralW.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralW.html +++ Site/Site_W/jpqplot/docs/search/GeneralW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
waterfall, $.jqplot.BarRenderer
wickColor, $.jqplot.OHLCRenderer
widthRatio, $.jqplot.FunnelRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralX.html Index: Site/Site_W/jpqplot/docs/search/GeneralX.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralX.html +++ Site/Site_W/jpqplot/docs/search/GeneralX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
xaxis, Series
xoffset, Legend
xpadding, $.jqplot.PointLabels
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralY.html Index: Site/Site_W/jpqplot/docs/search/GeneralY.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralY.html +++ Site/Site_W/jpqplot/docs/search/GeneralY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
yaxis, Series
yoffset, Legend
ypadding, $.jqplot.PointLabels
yvalues, $.jqplot.Highlighter
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/GeneralZ.html Index: Site/Site_W/jpqplot/docs/search/GeneralZ.html ================================================================== --- Site/Site_W/jpqplot/docs/search/GeneralZ.html +++ Site/Site_W/jpqplot/docs/search/GeneralZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
zoom, $.jqplot.Cursor
zoomProxy, $.jqplot.Cursor.$.jqplot.Cursor
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/HooksA.html Index: Site/Site_W/jpqplot/docs/search/HooksA.html ================================================================== --- Site/Site_W/jpqplot/docs/search/HooksA.html +++ Site/Site_W/jpqplot/docs/search/HooksA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
addLegendRowHooks, $.jqplot.$.jqplot
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/HooksE.html Index: Site/Site_W/jpqplot/docs/search/HooksE.html ================================================================== --- Site/Site_W/jpqplot/docs/search/HooksE.html +++ Site/Site_W/jpqplot/docs/search/HooksE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
eventListenerHooks, $.jqplot.$.jqplot
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/HooksJ.html Index: Site/Site_W/jpqplot/docs/search/HooksJ.html ================================================================== --- Site/Site_W/jpqplot/docs/search/HooksJ.html +++ Site/Site_W/jpqplot/docs/search/HooksJ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/HooksP.html Index: Site/Site_W/jpqplot/docs/search/HooksP.html ================================================================== --- Site/Site_W/jpqplot/docs/search/HooksP.html +++ Site/Site_W/jpqplot/docs/search/HooksP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
postDrawHooks, $.jqplot.$.jqplot
postDrawSeriesHooks, $.jqplot.$.jqplot
postDrawSeriesShadowHooks, $.jqplot.$.jqplot
postInitHooks, $.jqplot.$.jqplot
postParseOptionsHooks, $.jqplot.$.jqplot
postParseSeriesOptionsHooks, $.jqplot.$.jqplot
postSeriesInitHooks, $.jqplot.$.jqplot
preDrawHooks, $.jqplot.$.jqplot
preDrawLegendHooks, $.jqplot.$.jqplot
preDrawSeriesHooks, $.jqplot.$.jqplot
preDrawSeriesShadowHooks, $.jqplot.$.jqplot
preInitHooks, $.jqplot.$.jqplot
preParseOptionsHooks, $.jqplot.$.jqplot
preParseSeriesOptionsHooks, $.jqplot.$.jqplot
preSeriesInitHooks, $.jqplot.$.jqplot
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/NoResults.html Index: Site/Site_W/jpqplot/docs/search/NoResults.html ================================================================== --- Site/Site_W/jpqplot/docs/search/NoResults.html +++ Site/Site_W/jpqplot/docs/search/NoResults.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + +
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesA.html Index: Site/Site_W/jpqplot/docs/search/PropertiesA.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesA.html +++ Site/Site_W/jpqplot/docs/search/PropertiesA.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
activeTheme, $.jqplot.ThemeEngine
alpha, $.jqplot.shadowRenderer
autoscale, Axis
autoscaleBubbles, $.jqplot.BubbleRenderer
autoscaleMultiplier, $.jqplot.BubbleRenderer
autoscalePointsFactor, $.jqplot.BubbleRenderer
axes, jqPlot
axesDefaults, jqPlot
axisDefaults, $.jqplot.LogAxisRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesB.html Index: Site/Site_W/jpqplot/docs/search/PropertiesB.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesB.html +++ Site/Site_W/jpqplot/docs/search/PropertiesB.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
barDirection, $.jqplot.BarRenderer
barLabelOptions, $.jqplot.MekkoAxisRenderer
barLabelRenderer, $.jqplot.MekkoAxisRenderer
barLabels, $.jqplot.MekkoAxisRenderer
barMargin, $.jqplot.BarRenderer
barPadding, $.jqplot.BarRenderer
barWidth, $.jqplot.BarRenderer
bodyWidth, $.jqplot.OHLCRenderer
border, Legend
breakOnNull, Series
bringSeriesToFront, $.jqplot.Highlighter
bubbleAlpha, $.jqplot.BubbleRenderer
bubbleGradients, $.jqplot.BubbleRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesC.html Index: Site/Site_W/jpqplot/docs/search/PropertiesC.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesC.html +++ Site/Site_W/jpqplot/docs/search/PropertiesC.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
candleStick, $.jqplot.OHLCRenderer
clearRect, $.jqplot.shapeRenderer
clickReset, $.jqplot.Cursor
closeColor, $.jqplot.OHLCRenderer
constrainOutsideZoom, $.jqplot.Cursor
constrainTo, $.jqplot.Dragable
constrainZoomTo, $.jqplot.Cursor
css, $.jqplot.BlockRenderer
cursorLegendFormatString, $.jqplot.Cursor
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesD.html Index: Site/Site_W/jpqplot/docs/search/PropertiesD.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesD.html +++ Site/Site_W/jpqplot/docs/search/PropertiesD.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/search/PropertiesE.html Index: Site/Site_W/jpqplot/docs/search/PropertiesE.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesE.html +++ Site/Site_W/jpqplot/docs/search/PropertiesE.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
edgeTolerance, $.jqplot.PointLabels
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesF.html Index: Site/Site_W/jpqplot/docs/search/PropertiesF.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesF.html +++ Site/Site_W/jpqplot/docs/search/PropertiesF.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/search/PropertiesG.html Index: Site/Site_W/jpqplot/docs/search/PropertiesG.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesG.html +++ Site/Site_W/jpqplot/docs/search/PropertiesG.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
grid, jqPlot
groups, $.jqplot.BarRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesH.html Index: Site/Site_W/jpqplot/docs/search/PropertiesH.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesH.html +++ Site/Site_W/jpqplot/docs/search/PropertiesH.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
hideZeros, $.jqplot.PointLabels
highlightAlpha, $.jqplot.BubbleRenderer
highlightColor, $.jqplot.LineRenderer
hlc, $.jqplot.OHLCRenderer
hubRadius, $.jqplot.MeterGaugeRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesI.html Index: Site/Site_W/jpqplot/docs/search/PropertiesI.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesI.html +++ Site/Site_W/jpqplot/docs/search/PropertiesI.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
index, Series
innerDiameter, $.jqplot.DonutRenderer
insertBreaks, $.jqplot.BlockRenderer
intersectionThreshold, $.jqplot.Cursor
intervalColors, $.jqplot.MeterGaugeRenderer
intervalInnerRadius, $.jqplot.MeterGaugeRenderer
intervalOuterRadius, $.jqplot.MeterGaugeRenderer
intervals, $.jqplot.MeterGaugeRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesL.html Index: Site/Site_W/jpqplot/docs/search/PropertiesL.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesL.html +++ Site/Site_W/jpqplot/docs/search/PropertiesL.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ADDED Site/Site_W/jpqplot/docs/search/PropertiesM.html Index: Site/Site_W/jpqplot/docs/search/PropertiesM.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesM.html +++ Site/Site_W/jpqplot/docs/search/PropertiesM.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
marginBottom, Legend
marginLeft, Legend
marginRight, Legend
marginTop, Legend
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesN.html Index: Site/Site_W/jpqplot/docs/search/PropertiesN.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesN.html +++ Site/Site_W/jpqplot/docs/search/PropertiesN.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
needlePad, $.jqplot.MeterGaugeRenderer
needleThickness, $.jqplot.MeterGaugeRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesO.html Index: Site/Site_W/jpqplot/docs/search/PropertiesO.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesO.html +++ Site/Site_W/jpqplot/docs/search/PropertiesO.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
offset, $.jqplot.shadowRenderer
openColor, $.jqplot.OHLCRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesP.html Index: Site/Site_W/jpqplot/docs/search/PropertiesP.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesP.html +++ Site/Site_W/jpqplot/docs/search/PropertiesP.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
pad, Axis
padMax, Axis
padMin, Axis
pegNeedle, $.jqplot.MeterGaugeRenderer
placement, Legend
predraw, Legend
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesR.html Index: Site/Site_W/jpqplot/docs/search/PropertiesR.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesR.html +++ Site/Site_W/jpqplot/docs/search/PropertiesR.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
ringColor, $.jqplot.MeterGaugeRenderer
ringMargin, $.jqplot.DonutRenderer
ringWidth, $.jqplot.MeterGaugeRenderer
rowSpacing, Legend
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesS.html Index: Site/Site_W/jpqplot/docs/search/PropertiesS.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesS.html +++ Site/Site_W/jpqplot/docs/search/PropertiesS.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
sectionMargin, $.jqplot.FunnelRenderer
series, jqPlot
seriesColors, jqPlot
seriesLabelIndex, $.jqplot.PointLabels
shadowRenderer, $.jqplot.MarkerRenderer
shapeRenderer, $.jqplot.MarkerRenderer
showBorders, $.jqplot.MekkoRenderer
showCursorLegend, $.jqplot.Cursor
showHorizontalLine, $.jqplot.Cursor
showLine, Series
showSwatch, Legend
showTickLabels, $.jqplot.MeterGaugeRenderer
showTooltipDataPosition, $.jqplot.Cursor
showTooltipGridPosition, $.jqplot.Cursor
showTooltipOutsideZoom, $.jqplot.Cursor
showTooltipUnitPosition, $.jqplot.Cursor
showVerticalLine, $.jqplot.Cursor
sizeAdjust, $.jqplot.Highlighter
sortData, jqPlot
sortMergedLabels, $.jqplot.CategoryAxisRenderer
stackedValue, $.jqplot.PointLabels
stackSeries, jqPlot
strokeRect, $.jqplot.shapeRenderer
strokeStyle, $.jqplot.shapeRenderer
syncTicks, Axis
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesT.html Index: Site/Site_W/jpqplot/docs/search/PropertiesT.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesT.html +++ Site/Site_W/jpqplot/docs/search/PropertiesT.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
text, Title
textAlign, Title
themes, $.jqplot.ThemeEngine
thickness, $.jqplot.DonutRenderer
tickColor, $.jqplot.MeterGaugeRenderer
tickLength, $.jqplot.OHLCRenderer
tickMode, $.jqplot.MekkoAxisRenderer
tickPadding, $.jqplot.MeterGaugeRenderer
title, jqPlot
tooltipAxes, $.jqplot.Highlighter
tooltipAxisGroups, $.jqplot.Cursor
tooltipFadeSpeed, $.jqplot.Highlighter
type, $.jqplot.Trendline
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesU.html Index: Site/Site_W/jpqplot/docs/search/PropertiesU.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesU.html +++ Site/Site_W/jpqplot/docs/search/PropertiesU.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
upBodyColor, $.jqplot.OHLCRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesV.html Index: Site/Site_W/jpqplot/docs/search/PropertiesV.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesV.html +++ Site/Site_W/jpqplot/docs/search/PropertiesV.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
varyBarColor, $.jqplot.BarRenderer
varyBlockColors, $.jqplot.BlockRenderer
varyBubbleColors, $.jqplot.BubbleRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesW.html Index: Site/Site_W/jpqplot/docs/search/PropertiesW.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesW.html +++ Site/Site_W/jpqplot/docs/search/PropertiesW.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
waterfall, $.jqplot.BarRenderer
wickColor, $.jqplot.OHLCRenderer
widthRatio, $.jqplot.FunnelRenderer
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesX.html Index: Site/Site_W/jpqplot/docs/search/PropertiesX.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesX.html +++ Site/Site_W/jpqplot/docs/search/PropertiesX.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
xaxis, Series
xoffset, Legend
xpadding, $.jqplot.PointLabels
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesY.html Index: Site/Site_W/jpqplot/docs/search/PropertiesY.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesY.html +++ Site/Site_W/jpqplot/docs/search/PropertiesY.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
yaxis, Series
yoffset, Legend
ypadding, $.jqplot.PointLabels
yvalues, $.jqplot.Highlighter
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/search/PropertiesZ.html Index: Site/Site_W/jpqplot/docs/search/PropertiesZ.html ================================================================== --- Site/Site_W/jpqplot/docs/search/PropertiesZ.html +++ Site/Site_W/jpqplot/docs/search/PropertiesZ.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +
Loading...
zoom, $.jqplot.Cursor
Searching...
No Matches
ADDED Site/Site_W/jpqplot/docs/styles/1.css Index: Site/Site_W/jpqplot/docs/styles/1.css ================================================================== --- Site/Site_W/jpqplot/docs/styles/1.css +++ Site/Site_W/jpqplot/docs/styles/1.css @@ -0,0 +1,767 @@ +/* + IMPORTANT: If you're editing this file in the output directory of one of + your projects, your changes will be overwritten the next time you run + Natural Docs. Instead, copy this file to your project directory, make your + changes, and you can use it with -s. Even better would be to make a CSS + file in your project directory with only your changes, which you can then + use with -s [original style] [your changes]. + + On the other hand, if you're editing this file in the Natural Docs styles + directory, the changes will automatically be applied to all your projects + that use this style the next time Natural Docs is run on them. + + This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure + Natural Docs is licensed under the GPL +*/ + +body { + font: 10pt Verdana, Arial, sans-serif; + color: #000000; + margin: 0; padding: 0; + } + +.ContentPage, +.IndexPage, +.FramedMenuPage { + background-color: #E8E8E8; + } +.FramedContentPage, +.FramedIndexPage, +.FramedSearchResultsPage, +.PopupSearchResultsPage { + background-color: #FFFFFF; + } + + +a:link, +a:visited { color: #900000; text-decoration: none } +a:hover { color: #900000; text-decoration: underline } +a:active { color: #FF0000; text-decoration: underline } + +td { + vertical-align: top } + +img { border: 0; } + + +/* + Comment out this line to use web-style paragraphs (blank line between + paragraphs, no indent) instead of print-style paragraphs (no blank line, + indented.) +*/ +p { + text-indent: 5ex; margin: 0 } + + +/* Opera doesn't break with just wbr, but will if you add this. */ +.Opera wbr:after { + content: "\00200B"; + } + + +/* Blockquotes are used as containers for things that may need to scroll. */ +blockquote { + padding: 0; + margin: 0; + overflow: auto; + } + + +.Firefox1 blockquote { + padding-bottom: .5em; + } + +/* Turn off scrolling when printing. */ +@media print { + blockquote { + overflow: visible; + } + .IE blockquote { + width: auto; + } + } + + + +#Menu { + font-size: 9pt; + padding: 10px 0 0 0; + } +.ContentPage #Menu, +.IndexPage #Menu { + position: absolute; + top: 0; + left: 0; + width: 31ex; + overflow: hidden; + } +.ContentPage .Firefox #Menu, +.IndexPage .Firefox #Menu { + width: 27ex; + } + + + .MTitle { + font-size: 16pt; font-weight: bold; font-variant: small-caps; + text-align: center; + padding: 5px 10px 15px 10px; + border-bottom: 1px dotted #000000; + margin-bottom: 15px } + + .MSubTitle { + font-size: 9pt; font-weight: normal; font-variant: normal; + margin-top: 1ex; margin-bottom: 5px } + + + .MEntry a:link, + .MEntry a:hover, + .MEntry a:visited { color: #606060; margin-right: 0 } + .MEntry a:active { color: #A00000; margin-right: 0 } + + + .MGroup { + font-variant: small-caps; font-weight: bold; + margin: 1em 0 1em 10px; + } + + .MGroupContent { + font-variant: normal; font-weight: normal } + + .MGroup a:link, + .MGroup a:hover, + .MGroup a:visited { color: #545454; margin-right: 10px } + .MGroup a:active { color: #A00000; margin-right: 10px } + + + .MFile, + .MText, + .MLink, + .MIndex { + padding: 1px 17px 2px 10px; + margin: .25em 0 .25em 0; + } + + .MText { + font-size: 8pt; font-style: italic } + + .MLink { + font-style: italic } + + #MSelected { + color: #000000; background-color: #FFFFFF; + /* Replace padding with border. */ + padding: 0 10px 0 10px; + border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000; + margin-right: 5px; + } + + /* Close off the left side when its in a group. */ + .MGroup #MSelected { + padding-left: 9px; border-left-width: 1px } + + /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ + .Firefox #MSelected { + -moz-border-radius-topright: 10px; + -moz-border-radius-bottomright: 10px } + .Firefox .MGroup #MSelected { + -moz-border-radius-topleft: 10px; + -moz-border-radius-bottomleft: 10px } + + + #MSearchPanel { + padding: 0px 6px; + margin: .25em 0; + } + + + #MSearchField { + font: italic 9pt Verdana, sans-serif; + color: #606060; + background-color: #E8E8E8; + border: none; + padding: 2px 4px; + width: 100%; + } + /* Only Opera gets it right. */ + .Firefox #MSearchField, + .IE #MSearchField, + .Safari #MSearchField { + width: 94%; + } + .Opera9 #MSearchField, + .Konqueror #MSearchField { + width: 97%; + } + .FramedMenuPage .Firefox #MSearchField, + .FramedMenuPage .Safari #MSearchField, + .FramedMenuPage .Konqueror #MSearchField { + width: 98%; + } + + /* Firefox doesn't do this right in frames without #MSearchPanel added on. + It's presence doesn't hurt anything other browsers. */ + #MSearchPanel.MSearchPanelInactive:hover #MSearchField { + background-color: #FFFFFF; + border: 1px solid #C0C0C0; + padding: 1px 3px; + } + .MSearchPanelActive #MSearchField { + background-color: #FFFFFF; + border: 1px solid #C0C0C0; + font-style: normal; + padding: 1px 3px; + } + + #MSearchType { + visibility: hidden; + font: 8pt Verdana, sans-serif; + width: 98%; + padding: 0; + border: 1px solid #C0C0C0; + } + .MSearchPanelActive #MSearchType, + /* As mentioned above, Firefox doesn't do this right in frames without #MSearchPanel added on. */ + #MSearchPanel.MSearchPanelInactive:hover #MSearchType, + #MSearchType:focus { + visibility: visible; + color: #606060; + } + #MSearchType option#MSearchEverything { + font-weight: bold; + } + + .Opera8 .MSearchPanelInactive:hover, + .Opera8 .MSearchPanelActive { + margin-left: -1px; + } + + + iframe#MSearchResults { + width: 60ex; + height: 15em; + } + #MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000000; + background-color: #E8E8E8; + } + #MSearchResultsWindowClose { + font-weight: bold; + font-size: 8pt; + display: block; + padding: 2px 5px; + } + #MSearchResultsWindowClose:link, + #MSearchResultsWindowClose:visited { + color: #000000; + text-decoration: none; + } + #MSearchResultsWindowClose:active, + #MSearchResultsWindowClose:hover { + color: #800000; + text-decoration: none; + background-color: #F4F4F4; + } + + + + +#Content { + padding-bottom: 15px; + } + +.ContentPage #Content { + border-width: 0 0 1px 1px; + border-style: solid; + border-color: #000000; + background-color: #FFFFFF; + font-size: 9pt; /* To make 31ex match the menu's 31ex. */ + margin-left: 31ex; + } +.ContentPage .Firefox #Content { + margin-left: 27ex; + } + + + + .CTopic { + font-size: 10pt; + margin-bottom: 3em; + } + + + .CTitle { + font-size: 12pt; font-weight: bold; + border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0; + margin: 0 15px .5em 15px } + + .CGroup .CTitle { + font-size: 16pt; font-variant: small-caps; + padding-left: 15px; padding-right: 15px; + border-width: 0 0 2px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + .CClass .CTitle, + .CInterface .CTitle, + .CDatabase .CTitle, + .CDatabaseTable .CTitle, + .CSection .CTitle { + font-size: 18pt; + color: #FFFFFF; background-color: #A0A0A0; + padding: 10px 15px 10px 15px; + border-width: 2px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + #MainTopic .CTitle { + font-size: 20pt; + color: #FFFFFF; background-color: #7070C0; + padding: 10px 15px 10px 15px; + border-width: 0 0 3px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + .CBody { + margin-left: 15px; margin-right: 15px } + + + .CToolTip { + position: absolute; visibility: hidden; + left: 0; top: 0; + background-color: #FFFFE0; + padding: 5px; + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000; + font-size: 8pt; + } + + .Opera .CToolTip { + max-width: 98%; + } + + /* Scrollbars would be useless. */ + .CToolTip blockquote { + overflow: hidden; + } + .IE6 .CToolTip blockquote { + overflow: visible; + } + + .CHeading { + font-weight: bold; font-size: 10pt; + margin: 1.5em 0 .5em 0; + } + + .CBody pre { + font: 10pt "Courier New", Courier, monospace; + margin: 1em 0; + } + + .CBody ul { + /* I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever. + Reapply it here as padding. */ + padding-left: 15px; padding-right: 15px; + margin: .5em 5ex .5em 5ex; + } + + .CDescriptionList { + margin: .5em 5ex 0 5ex } + + .CDLEntry { + font: 10pt "Courier New", Courier, monospace; color: #808080; + padding-bottom: .25em; + white-space: nowrap } + + .CDLDescription { + font-size: 10pt; /* For browsers that don't inherit correctly, like Opera 5. */ + padding-bottom: .5em; padding-left: 5ex } + + + .CTopic img { + text-align: center; + display: block; + margin: 1em auto; + } + .CImageCaption { + font-variant: small-caps; + font-size: 8pt; + color: #808080; + text-align: center; + position: relative; + top: 1em; + } + + .CImageLink { + color: #808080; + font-style: italic; + } + a.CImageLink:link, + a.CImageLink:visited, + a.CImageLink:hover { color: #808080 } + + + + + +.Prototype { + font: 10pt "Courier New", Courier, monospace; + padding: 5px 3ex; + border-width: 1px; border-style: solid; + margin: 0 5ex 1.5em 5ex; + } + + .Prototype td { + font-size: 10pt; + } + + .PDefaultValue, + .PDefaultValuePrefix, + .PTypePrefix { + color: #8F8F8F; + } + .PTypePrefix { + text-align: right; + } + .PAfterParameters { + vertical-align: bottom; + } + + .IE .Prototype table { + padding: 0; + } + + .CFunction .Prototype { + background-color: #F4F4F4; border-color: #D0D0D0 } + .CProperty .Prototype { + background-color: #F4F4FF; border-color: #C0C0E8 } + .CVariable .Prototype { + background-color: #FFFFF0; border-color: #E0E0A0 } + + .CClass .Prototype { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; + background-color: #F4F4F4; + } + .CInterface .Prototype { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0D0; + background-color: #F4F4FF; + } + + .CDatabaseIndex .Prototype, + .CConstant .Prototype { + background-color: #D0D0D0; border-color: #000000 } + .CType .Prototype, + .CEnumeration .Prototype { + background-color: #FAF0F0; border-color: #E0B0B0; + } + .CDatabaseTrigger .Prototype, + .CEvent .Prototype, + .CDelegate .Prototype { + background-color: #F0FCF0; border-color: #B8E4B8 } + + .CToolTip .Prototype { + margin: 0 0 .5em 0; + white-space: nowrap; + } + + + + + +.Summary { + margin: 1.5em 5ex 0 5ex } + + .STitle { + font-size: 12pt; font-weight: bold; + margin-bottom: .5em } + + + .SBorder { + background-color: #FFFFF0; + padding: 15px; + border: 1px solid #C0C060 } + + /* In a frame IE 6 will make them too long unless you set the width to 100%. Without frames it will be correct without a width + or slightly too long (but not enough to scroll) with a width. This arbitrary weirdness simply astounds me. IE 7 has the same + problem with frames, haven't tested it without. */ + .FramedContentPage .IE .SBorder { + width: 100% } + + /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ + .Firefox .SBorder { + -moz-border-radius: 20px } + + + .STable { + font-size: 9pt; width: 100% } + + .SEntry { + width: 30% } + .SDescription { + width: 70% } + + + .SMarked { + background-color: #F8F8D8 } + + .SDescription { padding-left: 2ex } + .SIndent1 .SEntry { padding-left: 1.5ex } .SIndent1 .SDescription { padding-left: 3.5ex } + .SIndent2 .SEntry { padding-left: 3.0ex } .SIndent2 .SDescription { padding-left: 5.0ex } + .SIndent3 .SEntry { padding-left: 4.5ex } .SIndent3 .SDescription { padding-left: 6.5ex } + .SIndent4 .SEntry { padding-left: 6.0ex } .SIndent4 .SDescription { padding-left: 8.0ex } + .SIndent5 .SEntry { padding-left: 7.5ex } .SIndent5 .SDescription { padding-left: 9.5ex } + + .SDescription a { color: #800000} + .SDescription a:active { color: #A00000 } + + .SGroup td { + padding-top: .5em; padding-bottom: .25em } + + .SGroup .SEntry { + font-weight: bold; font-variant: small-caps } + + .SGroup .SEntry a { color: #800000 } + .SGroup .SEntry a:active { color: #F00000 } + + + .SMain td, + .SClass td, + .SDatabase td, + .SDatabaseTable td, + .SSection td { + font-size: 10pt; + padding-bottom: .25em } + + .SClass td, + .SDatabase td, + .SDatabaseTable td, + .SSection td { + padding-top: 1em } + + .SMain .SEntry, + .SClass .SEntry, + .SDatabase .SEntry, + .SDatabaseTable .SEntry, + .SSection .SEntry { + font-weight: bold; + } + + .SMain .SEntry a, + .SClass .SEntry a, + .SDatabase .SEntry a, + .SDatabaseTable .SEntry a, + .SSection .SEntry a { color: #000000 } + + .SMain .SEntry a:active, + .SClass .SEntry a:active, + .SDatabase .SEntry a:active, + .SDatabaseTable .SEntry a:active, + .SSection .SEntry a:active { color: #A00000 } + + + + + +.ClassHierarchy { + margin: 0 15px 1em 15px } + + .CHEntry { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; + margin-bottom: 3px; + padding: 2px 2ex; + font-size: 10pt; + background-color: #F4F4F4; color: #606060; + } + + .Firefox .CHEntry { + -moz-border-radius: 4px; + } + + .CHCurrent .CHEntry { + font-weight: bold; + border-color: #000000; + color: #000000; + } + + .CHChildNote .CHEntry { + font-style: italic; + font-size: 8pt; + } + + .CHIndent { + margin-left: 3ex; + } + + .CHEntry a:link, + .CHEntry a:visited, + .CHEntry a:hover { + color: #606060; + } + .CHEntry a:active { + color: #800000; + } + + + + + +#Index { + background-color: #FFFFFF; + } + +/* As opposed to .PopupSearchResultsPage #Index */ +.IndexPage #Index, +.FramedIndexPage #Index, +.FramedSearchResultsPage #Index { + padding: 15px; + } + +.IndexPage #Index { + border-width: 0 0 1px 1px; + border-style: solid; + border-color: #000000; + font-size: 9pt; /* To make 27ex match the menu's 27ex. */ + margin-left: 27ex; + } + + + .IPageTitle { + font-size: 20pt; font-weight: bold; + color: #FFFFFF; background-color: #7070C0; + padding: 10px 15px 10px 15px; + border-width: 0 0 3px 0; border-color: #000000; border-style: solid; + margin: -15px -15px 0 -15px } + + .FramedSearchResultsPage .IPageTitle { + margin-bottom: 15px; + } + + .INavigationBar { + font-size: 10pt; + text-align: center; + background-color: #FFFFF0; + padding: 5px; + border-bottom: solid 1px black; + margin: 0 -15px 15px -15px; + } + + .INavigationBar a { + font-weight: bold } + + .IHeading { + font-size: 16pt; font-weight: bold; + padding: 2.5em 0 .5em 0; + text-align: center; + width: 3.5ex; + } + #IFirstHeading { + padding-top: 0; + } + + .IEntry { + font-size: 10pt; + padding-left: 1ex; + } + .PopupSearchResultsPage .IEntry { + font-size: 8pt; + padding: 1px 5px; + } + .PopupSearchResultsPage .Opera9 .IEntry, + .FramedSearchResultsPage .Opera9 .IEntry { + text-align: left; + } + .FramedSearchResultsPage .IEntry { + padding: 0; + } + + .ISubIndex { + padding-left: 3ex; padding-bottom: .5em } + .PopupSearchResultsPage .ISubIndex { + display: none; + } + + /* While it may cause some entries to look like links when they aren't, I found it's much easier to read the + index if everything's the same color. */ + .ISymbol { + font-weight: bold; color: #900000 } + + .IndexPage .ISymbolPrefix, + .FramedIndexPage .ISymbolPrefix { + font-size: 10pt; + text-align: right; + color: #C47C7C; + background-color: #F8F8F8; + border-right: 3px solid #E0E0E0; + border-left: 1px solid #E0E0E0; + padding: 0 1px 0 2px; + } + .PopupSearchResultsPage .ISymbolPrefix, + .FramedSearchResultsPage .ISymbolPrefix { + color: #900000; + } + .PopupSearchResultsPage .ISymbolPrefix { + font-size: 8pt; + } + + .IndexPage #IFirstSymbolPrefix, + .FramedIndexPage #IFirstSymbolPrefix { + border-top: 1px solid #E0E0E0; + } + .IndexPage #ILastSymbolPrefix, + .FramedIndexPage #ILastSymbolPrefix { + border-bottom: 1px solid #E0E0E0; + } + .IndexPage #IOnlySymbolPrefix, + .FramedIndexPage #IOnlySymbolPrefix { + border-top: 1px solid #E0E0E0; + border-bottom: 1px solid #E0E0E0; + } + + a.IParent, + a.IFile { + display: block; + } + + .PopupSearchResultsPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + } + .FramedSearchResultsPage .SRStatus { + font-size: 10pt; + font-style: italic; + } + + .SRResult { + display: none; + } + + + +#Footer { + font-size: 8pt; + color: #989898; + text-align: right; + } + +#Footer p { + text-indent: 0; + margin-bottom: .5em; + } + +.ContentPage #Footer, +.IndexPage #Footer { + text-align: right; + margin: 2px; + } + +.FramedMenuPage #Footer { + text-align: center; + margin: 5em 10px 10px 10px; + padding-top: 1em; + border-top: 1px solid #C8C8C8; + } + + #Footer a:link, + #Footer a:hover, + #Footer a:visited { color: #989898 } + #Footer a:active { color: #A00000 } + ADDED Site/Site_W/jpqplot/docs/styles/2.css Index: Site/Site_W/jpqplot/docs/styles/2.css ================================================================== --- Site/Site_W/jpqplot/docs/styles/2.css +++ Site/Site_W/jpqplot/docs/styles/2.css @@ -0,0 +1,174 @@ +html, body { + height: 100%; +} + +/* +div.Firefox { + height: 100%; +} +*/ + +.MTitle { + font-variant: normal; +} + +.MLink { + font-style: normal; +} + +.CBody { +margin-left: 30px; +margin-right: 30px; +} + +p { + text-indent: 0; + margin-bottom: 1em; + } + +.CBody p { +/* + padding-top: 4px; + padding-bottom: 4px; +*/ +} + +#Menu { + margin-top: 94px; + border: 0px; +} + +body.ContentPage { + background-image: url('../../images/background.jpg'); + background-color: #818181; + background-position: left top; + background-repeat: repeat-x; +} + +.MGroup a:link, +.MGroup a:hover, +.MGroup a:visited { color: #bfbfbf; margin-right: 10px } +.MGroup a:active { color: #f58f07; margin-right: 10px } + + +.MEntry a:link, +.MEntry a:hover, +.MEntry a:visited { color: #bfbfbf; margin-right: 0 } +.MEntry a:active { color: #f58f07; margin-right: 0 } + +#Footer { + color: #bfbfbf; +} + +#Footer a:link, #Footer a:hover, #Footer a:visited { + color: #5c93f0; +} + +#MainTopic div.CTitle.logo { + color: #292929; + font-size: 0px; + font-style: normal; + font-weight: normal; + border-width: 0px; + padding: 0px; + margin: 0px; + background-position: left top; + background-repeat: no-repeat; + background-image: url('../../images/logo.jpg'); + background-color: #292929; + height: 94px; + position: relative; + +} + +#MainTopic h1.CTitle a { + display: none; +} + + +#MainTopic div.CBody p:first-child { + margin-top: 24px; +} + +.ContentPage #Content { + border: 0px; +/* height: 100%; */ +} + +#IPageLogo { + width: 780px; + color: #292929; + font-style: normal; + font-weight: normal; + border-width: 0px; + padding: 0px; + margin: 0px; + background-position: left top; + background-repeat: no-repeat; + background-image: url('../../images/logo.jpg'); + background-color: #292929; + height: 94px; + position: relative; + left: 27ex; +} + +#Menu, #IPageLogo { + font-size: 9pt; +} + +body.IndexPage { + background-image: url('../../images/background.jpg'); +} + +/*#IPageLogo:hover { + cursor: pointer; +}*/ + +.IPageTitle { + background-color:#FFFFF0; + color: #333333; + border: 0px; +} + + + +div.nav { + position:relative; + top: 70px; + text-align: right; +} + +a.nav span { + font-size: 11px; + position: relative; + bottom: 2px; +} + +a.nav:visited { + text-decoration: none; + border: 0px; + color: #aaaaaa; +} + +a.nav, a.nav:link { + border: 0px; + text-decoration: none; + font-family: Tahoma, "Helvetica Neue", "Trebuchet MS", Verdana, Arial, sans-serif; + font-size: 16px; + color: #aaaaaa; + margin-right: 11px; +} + +a.nav:hover { + text-decoration: none; + border: 0px; + color: #E0771C; +} + +a.nav:active { + text-decoration: none; + border: 0px; + color: #E0771C; +} + + ADDED Site/Site_W/jpqplot/docs/styles/main.css Index: Site/Site_W/jpqplot/docs/styles/main.css ================================================================== --- Site/Site_W/jpqplot/docs/styles/main.css +++ Site/Site_W/jpqplot/docs/styles/main.css @@ -0,0 +1,2 @@ +@import URL("1.css"); +@import URL("2.css"); ADDED Site/Site_W/jpqplot/examples/OHLC.html Index: Site/Site_W/jpqplot/examples/OHLC.html ================================================================== --- Site/Site_W/jpqplot/examples/OHLC.html +++ Site/Site_W/jpqplot/examples/OHLC.html @@ -0,0 +1,333 @@ + + + + + + + OHLC Charts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+
+

+
+

+
+

+
+

+

The examples below use the folowing code:

+

+  
+

ADDED   Site/Site_W/jpqplot/examples/OHLC2.html
Index: Site/Site_W/jpqplot/examples/OHLC2.html
==================================================================
--- Site/Site_W/jpqplot/examples/OHLC2.html
+++ Site/Site_W/jpqplot/examples/OHLC2.html
@@ -0,0 +1,193 @@
+
+
+
+
+  
+  Open Hi Low Close and Canclestick Charts
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+
+  
+
+
+  
+  
+
+
+
+ + ADDED Site/Site_W/jpqplot/examples/area.html Index: Site/Site_W/jpqplot/examples/area.html ================================================================== --- Site/Site_W/jpqplot/examples/area.html +++ Site/Site_W/jpqplot/examples/area.html @@ -0,0 +1,107 @@ + + + + + + Theming Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Area charts support highlighting and mouse events by default. The options and handlers and callbacks are essentially the same as with bar, pie, donut and funnel charts. One notable exception for area charts is that no data point index will be provided to the callback and the entire data set for the highlighted area will be returned. This is because the area is not associated with one particular data point, but with the entire data set of the series.

+ +
Moused Over: Nothing
+ +
+ +

For the chart below, mouseover has been disabled and click handling is enabled by setting "highlightMouseDown: true". For "fillToZero" area charts that have both negative and positive values as shown below, clicking in either the positive of negative regions will generate the same result.

+ +
You Clicked: Nothing yet
+ +
+ + ADDED Site/Site_W/jpqplot/examples/axisLabel.html Index: Site/Site_W/jpqplot/examples/axisLabel.html ================================================================== --- Site/Site_W/jpqplot/examples/axisLabel.html +++ Site/Site_W/jpqplot/examples/axisLabel.html @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + ADDED Site/Site_W/jpqplot/examples/axisLabelsRotatedText.html Index: Site/Site_W/jpqplot/examples/axisLabelsRotatedText.html ================================================================== --- Site/Site_W/jpqplot/examples/axisLabelsRotatedText.html +++ Site/Site_W/jpqplot/examples/axisLabelsRotatedText.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + ADDED Site/Site_W/jpqplot/examples/axisLabelsRotatedText2.html Index: Site/Site_W/jpqplot/examples/axisLabelsRotatedText2.html ================================================================== --- Site/Site_W/jpqplot/examples/axisLabelsRotatedText2.html +++ Site/Site_W/jpqplot/examples/axisLabelsRotatedText2.html @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + ADDED Site/Site_W/jpqplot/examples/barLinePieStack.html Index: Site/Site_W/jpqplot/examples/barLinePieStack.html ================================================================== --- Site/Site_W/jpqplot/examples/barLinePieStack.html +++ Site/Site_W/jpqplot/examples/barLinePieStack.html @@ -0,0 +1,198 @@ + + + + + + Multiple Chart types on same page + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+ + ADDED Site/Site_W/jpqplot/examples/barMissingValues.html Index: Site/Site_W/jpqplot/examples/barMissingValues.html ================================================================== --- Site/Site_W/jpqplot/examples/barMissingValues.html +++ Site/Site_W/jpqplot/examples/barMissingValues.html @@ -0,0 +1,64 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + +
+
+ + ADDED Site/Site_W/jpqplot/examples/barTest.html Index: Site/Site_W/jpqplot/examples/barTest.html ================================================================== --- Site/Site_W/jpqplot/examples/barTest.html +++ Site/Site_W/jpqplot/examples/barTest.html @@ -0,0 +1,283 @@ + + + + + + Bar Charts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

To create bar plots, you have to include the "jqplot.barRenderer.js" file in your source.

+ +

Below is a default bar plot. Bars will highlight on mouseover. Events are triggered when you mouseover a bar and also when you click on a bar. Here We capture the 'jqplotDataClick' event and display the clicked series index, point index and data values. When series data is assigned as a 1-dimensional array as in this example, jqPlot automatically converts it into a 2-dimensional array for plotting. So a series defined as [2, 6, 7, 10] will become [[1,2], [2,6], [3,7], [4,10]].

+ +

You Clicked: Nothing yet
+ +
+

+
+    

The plot target also fires a 'jqplotDataMouseOver' when the cursor is moused over a bar even if highlighting is turned off. This event will fire continuously as the user mouses over the bar. 'jqplotDataHighlight' fires only once when the user first passes over the bar. Additionally, a 'jqplotDataUnhighlight' event is fired when the user moves out of a bar (if highlighting is enabled).

+ +

Moused Over: Nothing
+ +
+

+    
+    
Moused Over: Nothing
+
Clicked: Nothing
+ +
+

+    
+    

The next example has the plot's 'captureRightClick' option set to true. This causes the plot to fire a 'jqplotRightClick' event the the user clicks the right mouse button over a bar. Here, the 'highlightMouseDown' option is also set to true. This will highlight a slice on mouse down instead of on move over. Highlighting will occur for either left or right click.

+ +
You Right Clicked: Nothing yet
+ +
+

+    
+    
+

+    
+    
+

+        
+

A pie chart is added to test for incompatibilities.

+
+

+  
+

ADDED   Site/Site_W/jpqplot/examples/barTest2.html
Index: Site/Site_W/jpqplot/examples/barTest2.html
==================================================================
--- Site/Site_W/jpqplot/examples/barTest2.html
+++ Site/Site_W/jpqplot/examples/barTest2.html
@@ -0,0 +1,74 @@
+
+
+
+
+  
+  
+  Bar Charts
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+  
+  
+    
+  
+  
+
+        
+    
+ + + ADDED Site/Site_W/jpqplot/examples/bezierCurve.html Index: Site/Site_W/jpqplot/examples/bezierCurve.html ================================================================== --- Site/Site_W/jpqplot/examples/bezierCurve.html +++ Site/Site_W/jpqplot/examples/bezierCurve.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + +

The Bezier curve renderer can distinguish between two different input data formats. This first example has the data passed in as 2 data points, the second one defining the Bezier curve to the end point. With this format, non-default axes renderers will require specifying the minimum and maximum on the axes.

+
+    [[xstart, ystart], [cp1x, cp1y, cp2x, cp2y, xend, yend]];
+
+
+

This second example has the data broken out into 4 points, which will be assembled to define the Bezier Curve. With this format, any axes renderer can be used without explicitly specifying the minimum and maximum.

+
+    [[xstart, ystart], [cp1x, cp1y], [cp2x, cp2y], [xend, yend]];
+
+
+

Here is an example using a date axis renderer with Bezier curves. The data looks like:

+
+    [['01/01/2010', 6], ['02/01/2010', 9], ['03/01/2010', 8], ['04/01/2010', 3]]
+
+ +
+ +

Note that jqPlot converts the datetime strings into timestamps internally, so further explicit modification of the x value (date value) of series data points will have to be with integer time stamp data. So, you would do something like:

+ +
+    plot3.series[2].data
+    [[1262322000000, 6], [1265000400000, 9], [1267419600000, 8], [1270094400000, 3]]
+    plot3.series[2].data[1][0] = 1265900400000
+    plot3.drawSeries(2)
+
+ + + + ADDED Site/Site_W/jpqplot/examples/blockPlot.html Index: Site/Site_W/jpqplot/examples/blockPlot.html ================================================================== --- Site/Site_W/jpqplot/examples/blockPlot.html +++ Site/Site_W/jpqplot/examples/blockPlot.html @@ -0,0 +1,149 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + +

Below is an example block plot. This plot also uses the Enhanced Legend Renderer plugin. Clicking on an item in the legend will toggle display of the appropriate series.

+
+

Blocks can be moved by selecting the series, the point, and an optional duration parameter. If specified, duration will animate the movement. Duration is either a number in milliseconds, or the keywords 'fast' or 'slow'. Higher numbers will cause a slower animation.

+ Series: + Point: + Duration: + X: + Y: + + +

This second chart is like the first except the "varyBlockColors" renderer option is set to true. This will vary the color of each block in a series separately. This allows displaying a third dimension to the data such as grouping beverage products by producer and by category such as "cola", "tea", "energy drink", etc.

+ +

Also, the legend has it's "showSwathces" option set to false, since the blocks of each series will be of varying color and won't correspond to one swatch color. This still enables the user to show and hide the series by clicking on a label in the legend.

+ +
+ + + ADDED Site/Site_W/jpqplot/examples/breakOnNull.html Index: Site/Site_W/jpqplot/examples/breakOnNull.html ================================================================== --- Site/Site_W/jpqplot/examples/breakOnNull.html +++ Site/Site_W/jpqplot/examples/breakOnNull.html @@ -0,0 +1,53 @@ + + + + + + + Break On Null Test + + + + + + + + + + + + + + + + + + + +
+ + ADDED Site/Site_W/jpqplot/examples/bubbleChart2.html Index: Site/Site_W/jpqplot/examples/bubbleChart2.html ================================================================== --- Site/Site_W/jpqplot/examples/bubbleChart2.html +++ Site/Site_W/jpqplot/examples/bubbleChart2.html @@ -0,0 +1,253 @@ + + + + + + Bubble Chart Examples + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Bubble charts represent 3 dimensional data. Data is passed in to a bubble chart as a series of [x, y, radius, <label or object>]. The optional fourth element of the data point can either be either a label string or an object having 'label' and/or 'color' properties to assign to the bubble.

+ +

By default, all bubbles are scaled according to the size of the plot area. The radius value in the data point will be adjusted to fit the bubbles in the chart. If the "autoscaleBubbles" option is set to false, the radius value in the data will be taken as a literal pixel value for the radius of the points.

+ +

The below chart show basic customization of bubble appearance with the "bubbleAlpha" and "highlightAlpha" options.

+ +
+

+
+
+
+
+    
+    
+
CompanyR Value
+

+
+

Below is a basic bubble chart showing usage of the optional label and color properties passed in with the data.

+ +
+

+
+

The next chart uses the "bubbleGradients: true" option to specify gradient fills on the bubbles. Radial gradients are not supported in IE* and will be automatically disabled.

+ +
+ +

*Radial gradients are not supported in IE because they are not supported in the excanvas emulation layer used by jqPlot to render charts in IE. jqPlot renders charts using the HTML canvas element which is supported by nearly every browser except IE. Excanvas translates the canvas rendering to VML rendering for IE, but unfortunately does not properly handle radial gradients.

+ +

+
+

The following bubble chart shows the "autoscalePointsFactor" and "autoscaleMultiplier" options which can be used to control bubble scaling. The "autoscalePointsFactor" options controls bubble scaling with the number of points on the plot. A negative value will decrease bubble size and number of bubbles increases. The "autoscaleMultiplier" will makes all bubbles larger or smaller for values greater or less than 1.0.

+ +

This chart also demonstrates some of the highlighting options. Bubble highlighting is controlled with the "highlightMouseOver" and "highlightMouseDown" boolean options. Here the "highlightMouseDown: true" option is set which causes the plot to highlight on mousedown (click). This automatically sets the "highlightMouseOver" option to false.

+ +

Events are also trigger with plot interaction. Specifically, "jqplotDataHighlight", "jqplotDataUnhighlight", "jqplotDataClick" and "jqplotDataRightClick" events are triggered. Handlers are passed an event object, the series index, the point index, and the bubble data.

+ +
+

+  
+

ADDED   Site/Site_W/jpqplot/examples/bubblechart.html
Index: Site/Site_W/jpqplot/examples/bubblechart.html
==================================================================
--- Site/Site_W/jpqplot/examples/bubblechart.html
+++ Site/Site_W/jpqplot/examples/bubblechart.html
@@ -0,0 +1,69 @@
+
+
+
+
+  
+  Bubble Chart Test
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+
+
+  
+  
+
+
+ + ADDED Site/Site_W/jpqplot/examples/catchError.html Index: Site/Site_W/jpqplot/examples/catchError.html ================================================================== --- Site/Site_W/jpqplot/examples/catchError.html +++ Site/Site_W/jpqplot/examples/catchError.html @@ -0,0 +1,53 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + +
+
+ + ADDED Site/Site_W/jpqplot/examples/categoryHorizontalBar.html Index: Site/Site_W/jpqplot/examples/categoryHorizontalBar.html ================================================================== --- Site/Site_W/jpqplot/examples/categoryHorizontalBar.html +++ Site/Site_W/jpqplot/examples/categoryHorizontalBar.html @@ -0,0 +1,81 @@ + + + + + Test 3 + + + + + + + + + + + + + + + + + + + + + +
+
+ + + ADDED Site/Site_W/jpqplot/examples/categoryVsLinearAxes.html Index: Site/Site_W/jpqplot/examples/categoryVsLinearAxes.html ================================================================== --- Site/Site_W/jpqplot/examples/categoryVsLinearAxes.html +++ Site/Site_W/jpqplot/examples/categoryVsLinearAxes.html @@ -0,0 +1,74 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + +
+
+ + ADDED Site/Site_W/jpqplot/examples/chartInTable.html Index: Site/Site_W/jpqplot/examples/chartInTable.html ================================================================== --- Site/Site_W/jpqplot/examples/chartInTable.html +++ Site/Site_W/jpqplot/examples/chartInTable.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + +
+
+
+ +
+ + ADDED Site/Site_W/jpqplot/examples/ciParser.html Index: Site/Site_W/jpqplot/examples/ciParser.html ================================================================== --- Site/Site_W/jpqplot/examples/ciParser.html +++ Site/Site_W/jpqplot/examples/ciParser.html @@ -0,0 +1,111 @@ + + + + + + Data Renderers, AJAX and JSON Data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

JSON data formatted according the the City Index API spec can be read in directly by jqPlot thorugh the use of the dataRenderer option and a custom ciParser data renderer. The ciParser data renderer will translate either a JSON encoded string or JSON object.

+ +

To use the the ciParser, include the jqplot.json2.js and jqplot.ciParser.js files. Specify the $.jqplot.ciParser as the renderer in the plot's "dataRenderer" option. The City Index JSON data can then be passed into the jqplot function as shown in the examples below:

+ +

Here, a stringified JSON data objects is passed into the jqplot function.

+
+

+

This example uses the same City Index data format, but passes in a JSON object instead of a string.

+
+

+  
+

ADDED   Site/Site_W/jpqplot/examples/customHighlighterCursorTrendline.html
Index: Site/Site_W/jpqplot/examples/customHighlighterCursorTrendline.html
==================================================================
--- Site/Site_W/jpqplot/examples/customHighlighterCursorTrendline.html
+++ Site/Site_W/jpqplot/examples/customHighlighterCursorTrendline.html
@@ -0,0 +1,72 @@
+
+
+
+
+  
+  
+  
+  Simple Test
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+   
+  
+  
+  
+  
+
+  
+  
+
+
+ + + + ADDED Site/Site_W/jpqplot/examples/customPieTests.html Index: Site/Site_W/jpqplot/examples/customPieTests.html ================================================================== --- Site/Site_W/jpqplot/examples/customPieTests.html +++ Site/Site_W/jpqplot/examples/customPieTests.html @@ -0,0 +1,73 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + +
+
+
+
+ + ADDED Site/Site_W/jpqplot/examples/dataLabels.html Index: Site/Site_W/jpqplot/examples/dataLabels.html ================================================================== --- Site/Site_W/jpqplot/examples/dataLabels.html +++ Site/Site_W/jpqplot/examples/dataLabels.html @@ -0,0 +1,192 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data labels can be automatically added to pie chart and donut chart slices as well as funnel chart areas. what labels are displayed is controlled by the series "dataLabel" option. There are 4 types of data labels to display:

+

    +
  • "label" - label of the point. +
  • "value" - value of the point. +
  • "percent" - percent of the whole (pie/donut/funnel) of the point. +
  • Array - custom array of data point labels, one for each point. +
+ +

Formatting of labels is controlled through the series "dataLabelsFormatString" option. By default, the format string will be set based on the label type: +

    +
  • "label" - '%s', raw string. +
  • "value" - '%d', integer format. +
  • "percent" - '%d%%', integer with % sign appended. +
  • Array - '%s', raw string. +
+ +

The following examples will clarify usage as well as other options. By default, data labels are turned off. They are enabled by setting the "showDataLabels: true" option. Below is the default configuration for a pie chart:

+ +
+ +

+ 
+    

Notice that no data label was shown for "Insignia". This is because the area of its slice is less than the "dataLabelThreshold" (3% by default). The threshold is applicable no matter what type of label we used. We can change the threshold and the format string for the label in the following example:

+ +

+ +

+    
+    

Data labels function similarly for funnel and donut plots. Here is a funnel plot with the "dataLabels" option set to display the point label. Note that the label for "Insignia" is not displayed because Insignia represents less than 3% of the overall chart area, which is below the dataLabelThreshold:

+ +

+ +

+    
+    

The last example shows usage of a custom dataLabels array. Again, labels for small sections will not be displayed unless the "dataLabelThreshold" is reduced (it is set to 3 percent by default).

+ +
+ +

+    
+ 
+  
+

ADDED   Site/Site_W/jpqplot/examples/dataRenderer.html
Index: Site/Site_W/jpqplot/examples/dataRenderer.html
==================================================================
--- Site/Site_W/jpqplot/examples/dataRenderer.html
+++ Site/Site_W/jpqplot/examples/dataRenderer.html
@@ -0,0 +1,179 @@
+
+
+
+
+  
+  Data Renderers, AJAX and JSON Data
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+  
+
+
+
+  
+
+
+
+
+
+  
+
+
+  
+  
+
+

The "dataRenderer" plot options allows you to specify a data preprocessor for your plot. This enables jqPlot to accept data in any arbitrary format (e.g. AJAX data soruces, JSON strings, etc.). Below are some examples illustrating how to use dataRenderers.

+ +

In this simple example, we create a dataRenderer which takes an array of x values and returns an array of [x, sin(x)] value pairs. Data renderers are passes the plot data and a reference to the plot as arguments.

+
+

+

An example of how to use a dataRenderer to fetch data from a server via an AJAX callback. Here the "data" passed into the plot is actually the url of the data source.

+
+

+

This example uses a more complicated dataRenderer that has been encapsulated as a jqplot plugin and loaded separately. This plugin accepts JSON data objects or strings formatted according to the City Index data format and returns jqPlot formatted data. This example uses a JSON encoded string.

+
+

+

This example uses the same City Index data format, but passes in a JSON object instead of a string.

+
+

+
+

There is a third argument passed to the data renderer, dataRendererOptions. It was not used in these examples, but can be set as a separate option on the plot to pass additional arguments into the renderer if needed.

+ + ADDED Site/Site_W/jpqplot/examples/dataTracking.html Index: Site/Site_W/jpqplot/examples/dataTracking.html ================================================================== --- Site/Site_W/jpqplot/examples/dataTracking.html +++ Site/Site_W/jpqplot/examples/dataTracking.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + ADDED Site/Site_W/jpqplot/examples/donutTest.html Index: Site/Site_W/jpqplot/examples/donutTest.html ================================================================== --- Site/Site_W/jpqplot/examples/donutTest.html +++ Site/Site_W/jpqplot/examples/donutTest.html @@ -0,0 +1,89 @@ + + + + + + Donut Chart Test + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

To create donut plots, you have to include the "jqplot.donutRenderer.js" file in your source. You can view the javascript that generated these plots by clicking the "View Code" button below.

+ + +

Below is a default donut plot. Slices will highlight on mouseover. Events are triggered when you mouseover a slice and also when you click on a slice. Here We capture the 'jqplotDataClick' event and display the clicked series index, point index and data values.

+ +

You Clicked: Nothing yet
+ +
+ +

Below is a customized donut plot with 2 series. Renderer options for sliceMargin, innerDiameter, and startAngle have been specified. Here We capture the 'jqplotDataHighlight' event and display the currently highlighted series index, point index and data values.

+ +

The plot target also fires a 'jqplotDataMouseOver' when the cursor is moused over a slice even if highlighting is turned off. This event will fire continuously as the user mouses over the slice. 'jqplotDataHighlight' fires only once when the user first passes over the slice. Additionally, a 'jqplotDataUnhighlight' event is fired when the user moves out of a slice (if highlighting is enabled).

+ +

Moused Over: Nothing
+ +
+ +

The next example has the plot's 'captureRightClick' option set to true. This causes the plot to fire a 'jqplotRightClick' event the the user clicks the right mouse button over a slice. Note, click highlighting is the same for both right and left clicks, although separate events are triggered.

+ +

You Right Clicked: Nothing yet
+ +
+ +

The fourth example shows a plot with no sliceMargin and with the shadow turned on.

+ +
+ +

The last example shows a donut with all of the default colors. Mouse over to see the default highlight colors. Series colors can be specified with the "seriesColors" option on the plot or on the series. The highlight colors are specified with the 'highlightColors' option on the series renderer.

+ +
+ +

A simple line chart is added to test for imcompatabilities.

+
+ + ADDED Site/Site_W/jpqplot/examples/donutTest.js Index: Site/Site_W/jpqplot/examples/donutTest.js ================================================================== --- Site/Site_W/jpqplot/examples/donutTest.js +++ Site/Site_W/jpqplot/examples/donutTest.js @@ -0,0 +1,96 @@ +$(document).ready(function(){ + + $.jqplot.config.enablePlugins = true; + + s1 = [['a',2], ['b',8], ['c',14], ['d',20]]; + s2 = [['a', 4], ['b', 12], ['c', 6], ['d', 3]]; + s3 = [['a', 2], ['b', 1], ['c', 3], ['d', 3]]; + s4 = [['a', 4], ['b', 3], ['c', 2], ['d', 1]]; + + s5 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; + + plot1 = $.jqplot('chart1', [s1], { + seriesDefaults:{ + renderer:$.jqplot.DonutRenderer + }, + legend: {show:true} + }); + + plot2 = $.jqplot('chart2', [s1, s2], { + seriesDefaults: { + renderer:$.jqplot.DonutRenderer, + rendererOptions:{ + sliceMargin: 2, + innerDiameter: 110, + startAngle: -90 + } + } + }); + + plot3 = $.jqplot('chart3', [s1, s2, s3], { + captureRightClick: true, + seriesDefaults:{ + renderer:$.jqplot.DonutRenderer, + shadow: false, + rendererOptions:{ + innerDiameter: 110, + startAngle: -90, + sliceMargin: 2, + highlightMouseDown: true + } + }, + legend: { + show: true, + location: 'e', + placement: 'outside' + } + }); + + plot4 = $.jqplot('chart4', [s1, s2, s3, s4], { + seriesDefaults:{ + renderer:$.jqplot.DonutRenderer + }, + legend: { + show: true, + location: 's', + placement: 'outside', + rendererOptions:{ + numberRows: 1 + } + } + }); + + plot5 = $.jqplot('chart5', [s5], { + seriesDefaults:{ + renderer:$.jqplot.DonutRenderer + } + }); + + plot6 = $.jqplot('chart6', [[1,2,3,4]]); + + $('#chart1').bind('jqplotDataClick', + function (ev, seriesIndex, pointIndex, data) { + $('#info1').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data); + } + ); + + $('#chart2').bind('jqplotDataHighlight', + function (ev, seriesIndex, pointIndex, data) { + $('#info2').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data); + } + ); + + $('#chart2').bind('jqplotDataUnhighlight', + function (ev) { + $('#info2').html('Nothing'); + } + ); + + $('#chart3').bind('jqplotDataRightClick', + function (ev, seriesIndex, pointIndex, data) { + $('#info3').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data); + } + ); + + $(document).unload(function() {$('*').unbind(); }); +}); ADDED Site/Site_W/jpqplot/examples/examples.css Index: Site/Site_W/jpqplot/examples/examples.css ================================================================== --- Site/Site_W/jpqplot/examples/examples.css +++ Site/Site_W/jpqplot/examples/examples.css @@ -0,0 +1,34 @@ +body { + margin:20px; + font-family:"Trebuchet MS", Arial, Helvetica, sans-serif; +} + +div.nav { + margin-bottom:10px; +} + +pre.code-block{ + background: #D8F4DC; + border: 1px solid rgb(200, 200, 200); + padding-top: 1em; + padding-left: 3em; + padding-bottom: 1em; + margin-top: 1em; + margin-bottom: 3em; + +} + +pre.code { + background: #D8F4DC; + border: 1px solid rgb(200, 200, 200); + padding-top: 1em; + padding-left: 3em; + padding-bottom: 1em; + margin-top: 1em; + margin-bottom: 4em; + +} + +p { + margin: 2em 0; +} ADDED Site/Site_W/jpqplot/examples/fillToZero.html Index: Site/Site_W/jpqplot/examples/fillToZero.html ================================================================== --- Site/Site_W/jpqplot/examples/fillToZero.html +++ Site/Site_W/jpqplot/examples/fillToZero.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + + + ADDED Site/Site_W/jpqplot/examples/filledLine.html Index: Site/Site_W/jpqplot/examples/filledLine.html ================================================================== --- Site/Site_W/jpqplot/examples/filledLine.html +++ Site/Site_W/jpqplot/examples/filledLine.html @@ -0,0 +1,78 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + +
+
+
+
+ + ADDED Site/Site_W/jpqplot/examples/filledLineCategoryAxis.html Index: Site/Site_W/jpqplot/examples/filledLineCategoryAxis.html ================================================================== --- Site/Site_W/jpqplot/examples/filledLineCategoryAxis.html +++ Site/Site_W/jpqplot/examples/filledLineCategoryAxis.html @@ -0,0 +1,80 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + +
+ + ADDED Site/Site_W/jpqplot/examples/funnelTest.html Index: Site/Site_W/jpqplot/examples/funnelTest.html ================================================================== --- Site/Site_W/jpqplot/examples/funnelTest.html +++ Site/Site_W/jpqplot/examples/funnelTest.html @@ -0,0 +1,82 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

To create donut plots, you have to include the "jqplot.funnelRenderer.js" file in your source. You can view the javascript that generated these plots by clicking the "View Code" button below.

+ + +

Below is a default funnel plot. Sections will highlight on mouseover. Events are triggered when you mouseover a section and also when you click on a section. Here We capture the 'jqplotDataClick' event and display the clicked series index, point index and data values.

+ +

You Clicked: Nothing yet
+ +
+ +

Below is a customized funnel plot. Renderer options for sectionMargin and widthRatio have been set. Here We capture the 'jqplotDataHighlight' event and display the currently highlighted series index, point index and data values.

+ +

The plot target also fires a 'jqplotDataMouseOver' when the cursor is moused over a slice even if highlighting is turned off. This event will fire continuously as the user mouses over the slice. 'jqplotDataHighlight' fires only once when the user first passes over the slice. Additionally, a 'jqplotDataUnhighlight' event is fired when the user moves out of a slice (if highlighting is enabled).

+ +

Moused Over: Nothing
+ +
+ +

The next example has the plot's 'captureRightClick' option set to true. This causes the plot to fire a 'jqplotRightClick' event the the user clicks the right mouse button over a slice. Note, click highlighting is the same for both right and left clicks, although separate events are triggered. Here the series 'highlightMouseDown' option is set to true to highlight sections when a mouse down event occurs on them. This automatically disables highlighting on mouseover.

+ +

You Right Clicked: Nothing yet
+ +
+ +

A small chart to test for plugin compatabiity.

+
+ + + ADDED Site/Site_W/jpqplot/examples/funnelTest.js Index: Site/Site_W/jpqplot/examples/funnelTest.js ================================================================== --- Site/Site_W/jpqplot/examples/funnelTest.js +++ Site/Site_W/jpqplot/examples/funnelTest.js @@ -0,0 +1,74 @@ +$(document).ready(function(){ + + s1 = [['Sony',7], ['Samsumg',13], ['LG',14], ['Vizio',5]]; + s2 = [['a', 4], ['b', 12], ['c', 6], ['d', 3]]; + s3 = [['a', 2], ['b', 1], ['c', 3], ['d', 3]]; + s4 = [['a', 4], ['b', 3], ['c', 2], ['d', 1]]; + + s5 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; + + plot1 = $.jqplot('chart1', [s1], { + seriesDefaults:{ + renderer:$.jqplot.FunnelRenderer + } + }); + + plot2 = $.jqplot('chart2', [s1], { + seriesDefaults:{ + renderer:$.jqplot.FunnelRenderer, + rendererOptions: { + widthRatio: 0.5, + sectionMargin: 0 + } + }, + legend: { + show:true, + location: 'e' + } + }); + + plot3 = $.jqplot('chart3', [s1], { + captureRightClick: true, + seriesDefaults:{ + renderer:$.jqplot.FunnelRenderer, + rendererOptions: { + widthRatio: 0.2, + sectionMargin: 0, + highlightMouseDown: true + } + }, + legend: { + show:true, + location: 'e', + placement: 'outside' + } + }); + + plot4 = $.jqplot('chart4', [[1,2,3,4]]); + + $('#chart1').bind('jqplotDataClick', + function (ev, seriesIndex, pointIndex, data) { + $('#info1').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data); + } + ); + + $('#chart2').bind('jqplotDataHighlight', + function (ev, seriesIndex, pointIndex, data) { + $('#info2').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data); + } + ); + + $('#chart2').bind('jqplotDataUnhighlight', + function (ev) { + $('#info2').html('Nothing'); + } + ); + + $('#chart3').bind('jqplotDataRightClick', + function (ev, seriesIndex, pointIndex, data) { + $('#info3').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data); + } + ); + + $(document).unload(function() {$('*').unbind(); }); +}); ADDED Site/Site_W/jpqplot/examples/gridCustomization.html Index: Site/Site_W/jpqplot/examples/gridCustomization.html ================================================================== --- Site/Site_W/jpqplot/examples/gridCustomization.html +++ Site/Site_W/jpqplot/examples/gridCustomization.html @@ -0,0 +1,56 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + +
+ + ADDED Site/Site_W/jpqplot/examples/hiddenPlot.html Index: Site/Site_W/jpqplot/examples/hiddenPlot.html ================================================================== --- Site/Site_W/jpqplot/examples/hiddenPlot.html +++ Site/Site_W/jpqplot/examples/hiddenPlot.html @@ -0,0 +1,216 @@ + + + + + + Plots in Hidden Containers + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

This page demonstrates using plots within containers that are initially hidden. Examples are shown for jQuery UI tabs and Accordions

+
+ +
+

Tab 2 and tab 3 contain plots which are initially hidden. Using a combination of alternate sizing specification and the plots "replot" method the plots are properly displayed when their containers are shown.

+

The alternate sizing specifications for setting plot height and width are needed because a hidden element (or child of a hidden element) has no size. The first example in tab 2 uses custom "data-height" and "data-width" attributes on the plot target element to specify height. The second example uses "width" and "height" properties specified on the options object passed into the $.jqplot() function.

+ +

The default size is 300px wide by 400px high. The default setting can be overriden by specifying different values to the $.jqplot.config.defaultHeight and $.jqplot.config.defaultWidth properties. Height and width values are taken in this order of prececence:

+ +
    +
  1. The css properties if available and plot is not hidden with display:none.
  2. +
  3. Options object passed into the $.jqplot() function.
  4. +
  5. Custom data-height and data-width attributes on the plot target.
  6. +
  7. The config defaults.
  8. +
+ +

Here is how the replot method can be used to bind to the "tabsshow" event of the UI tabs:

+ +
+    $('#tabs').bind('tabsshow', function(event, ui) {
+      if (ui.index == 1) {
+        plot1.replot();
+      }
+      else if (ui.index == 2) {
+        plot2.replot();
+      }
+    });
+
+ +

The ui.index property is the index of the tab that was shown.

+
+ +
+

This plot was in an initially hidden container. It's hieght and width are set by the "data-height" and "data-width" properties of the plot container.

+
+
+ +
+

This plot is in an initially hidden container. It's height and width are set by the 'height' and 'width' properties of the options object passed into the plot constructor.

+
+
+ +
+ +
+ +

Section 1

+
+

Secion 2 contains a plot. Sizing plots in hidden accordion sections is very similar to sizing in a tab widget. Because of the default animation on accordions, however, the plot will not draw itself until the entire accordion panel is shown.

+ +

Binidng to the accordion "accordionchange" event is also similar as with tabs:

+ +
+    $('#accordion').bind('accordionchange', function(event, ui) {
+      var index = $(this).find("h3").index ( ui.newHeader[0] );
+      if (index == 1) {
+        plot3.replot();
+      }
+    });
+    
+
+ +

Section 2

+
+

+ This plot also has it's height and width set with the data-height and data-width attributes. Note, if you want the accordian widget to properly size itself before the plot is shown, you must also specify a css height and width on the plot target. +

+
+
+ +
+
+ + ADDED Site/Site_W/jpqplot/examples/highlighter.html Index: Site/Site_W/jpqplot/examples/highlighter.html ================================================================== --- Site/Site_W/jpqplot/examples/highlighter.html +++ Site/Site_W/jpqplot/examples/highlighter.html @@ -0,0 +1,95 @@ + + + + + + Highlighter Test + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + + ADDED Site/Site_W/jpqplot/examples/highlighter2.html Index: Site/Site_W/jpqplot/examples/highlighter2.html ================================================================== --- Site/Site_W/jpqplot/examples/highlighter2.html +++ Site/Site_W/jpqplot/examples/highlighter2.html @@ -0,0 +1,63 @@ + + + + + + Highlighter Test + + + + + + + + + + + + + + + + + + +

This page demonstrates creating your own custom highlighter by attaching a callback to the 'jqplotMouseMove' event.

+
+ + + ADDED Site/Site_W/jpqplot/examples/horizontalLine.html Index: Site/Site_W/jpqplot/examples/horizontalLine.html ================================================================== --- Site/Site_W/jpqplot/examples/horizontalLine.html +++ Site/Site_W/jpqplot/examples/horizontalLine.html @@ -0,0 +1,51 @@ + + + + + + Horizontal Line (const. y values) + + + + + + + + + + + + + + + + + + +
+ + ADDED Site/Site_W/jpqplot/examples/intticks.html Index: Site/Site_W/jpqplot/examples/intticks.html ================================================================== --- Site/Site_W/jpqplot/examples/intticks.html +++ Site/Site_W/jpqplot/examples/intticks.html @@ -0,0 +1,178 @@ + + + + + + Enhanced Tick Algorithm + + + + + + + + + + + + + + + + + + + + + +

Tests of enhancements to axis tick generation algorithm. Axis now checks to see if the tick interval (delta between ticks) is less than the precision of the tick format string. If it is, it will try to increase the tick interval, number of ticks or change the axis minimum or maximum so that it is at least as great as the tick label precision.

+ +

Note, if the user has specified the axis tickInterval, numberTicks, min or max options, the algorithm may not be able to produce the desired ticks.

+ +

This helps in situations where the user wants to display ticks formatted as integer values on a plot with a very small range. For example, a plot with a y axis range from 0 to 2 and 6 ticks will have a tickInterval of 0.4 and ticks like [0, 0.4, 0.8, 1.2, 1.6, 2]. When formatted as integers, the plot displays ticks like [0, 0, 1, 1, 2, 2]. The new algorithm will try to adjust the number of ticks or the axis minimum or maximum to generate ticks like [0, 1, 2].

+ +
+
+
+
+
+
+
+
+ + ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png cannot compute difference between binary files ADDED Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/jquery-ui-1.8.1.custom.css Index: Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/jquery-ui-1.8.1.custom.css ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/jquery-ui-1.8.1.custom.css +++ Site/Site_W/jpqplot/examples/jquery-ui/css/ui-lightness/jquery-ui-1.8.1.custom.css @@ -0,0 +1,486 @@ +/* +* jQuery UI CSS Framework +* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +*/ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* +* jQuery UI CSS Framework +* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px +*/ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/* Resizable +----------------------------------*/ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Accordion +----------------------------------*/ +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +/* IE7-/Win - Fix extra vertical space in lists */ +.ui-accordion a { zoom: 1; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; }/* Autocomplete +----------------------------------*/ +.ui-autocomplete { position: absolute; cursor: default; } +.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ + +/* Menu +----------------------------------*/ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/* Button +----------------------------------*/ + +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ + + + + + +/* Dialog +----------------------------------*/ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* Slider +----------------------------------*/ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs +----------------------------------*/ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/* Datepicker +----------------------------------*/ +.ui-datepicker { width: 17em; padding: .2em .2em 0; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* Progressbar +----------------------------------*/ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } ADDED Site/Site_W/jpqplot/examples/jquery-ui/js/jquery-1.4.2.min.js Index: Site/Site_W/jpqplot/examples/jquery-ui/js/jquery-1.4.2.min.js ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/js/jquery-1.4.2.min.js +++ Site/Site_W/jpqplot/examples/jquery-ui/js/jquery-1.4.2.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); ADDED Site/Site_W/jpqplot/examples/jquery-ui/js/jquery-ui-1.8.1.custom.min.js Index: Site/Site_W/jpqplot/examples/jquery-ui/js/jquery-ui-1.8.1.custom.min.js ================================================================== --- Site/Site_W/jpqplot/examples/jquery-ui/js/jquery-ui-1.8.1.custom.min.js +++ Site/Site_W/jpqplot/examples/jquery-ui/js/jquery-ui-1.8.1.custom.min.js @@ -0,0 +1,756 @@ +/*! + * jQuery UI 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +jQuery.ui||function(c){c.ui={version:"1.8.1",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}(jQuery); +;/*! + * jQuery UI Widget 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Draggable 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Draggables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- +this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); +d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| +this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element, +b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== +a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| +0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment== +"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&& +a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"), +10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft(): +f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})},stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options; +if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!= +"HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>=i&& +e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height; +g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidthb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable, +{version:"1.8.1"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)}); +else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&& +d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a= +d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset; +var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left: +a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top- +e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition, +g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b= +d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height= +e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +;/* + * jQuery UI Selectable 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var d=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(d.options.filter,d.element[0]);f.each(function(){var c=e(this),b=c.offset();e.data(this,"selectable-item",{element:this,$element:c,left:b.left,top:b.top,right:b.left+c.outerWidth(),bottom:b.top+c.outerHeight(),startselected:false,selected:c.hasClass("ui-selected"), +selecting:c.hasClass("ui-selecting"),unselecting:c.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e(document.createElement("div")).css({border:"1px dotted black"}).addClass("ui-selectable-helper")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this}, +_mouseStart:function(d){var f=this;this.opos=[d.pageX,d.pageY];if(!this.options.disabled){var c=this.options;this.selectees=e(c.filter,this.element[0]);this._trigger("start",d);e(c.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:d.clientX,top:d.clientY,width:0,height:0});c.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!d.metaKey){b.$element.removeClass("ui-selected"); +b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",d,{unselecting:b.element})}});e(d.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){b.$element.removeClass("ui-unselecting").addClass("ui-selecting");b.unselecting=false;b.selecting=true;b.selected=true;f._trigger("selecting",d,{selecting:b.element});return false}})}},_mouseDrag:function(d){var f=this;this.dragged=true;if(!this.options.disabled){var c=this.options, +b=this.opos[0],g=this.opos[1],h=d.pageX,i=d.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(c.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(self, +arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem= +c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset, +{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment(); +if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start", +a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a, +c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]== +document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp();this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate", +null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem): +d(this.domPosition.parent).prepend(this.currentItem);return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c}, +_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")},_getDragHorizontalDirection:function(){var a= +this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)? +h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"), +b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)? +i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h=0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement, +c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height= +this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()- +parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0], +this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b= +1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update", +g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity", +this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()==location.href.toLowerCase()}},_create:function(){var a=this.options,b=this;this.running=0;this.element.addClass("ui-accordion ui-widget ui-helper-reset"); +this.element[0].nodeName=="UL"&&this.element.children("li").addClass("ui-accordion-li-fix");this.headers=this.element.find(a.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c(this).removeClass("ui-state-focus")}); +this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(a.navigation){var d=this.element.find("a").filter(a.navigationFilter);if(d.length){var f=d.closest(".ui-accordion-header");this.active=f.length?f:d.closest(".ui-accordion-content").prev()}}this.active=this._findActive(this.active||a.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");this.active.next().addClass("ui-accordion-content-active"); +this._createIcons();this.resize();this.element.attr("role","tablist");this.headers.attr("role","tab").bind("keydown",function(g){return b._keydown(g)}).next().attr("role","tabpanel");this.headers.not(this.active||"").attr("aria-expanded","false").attr("tabIndex","-1").next().hide();this.active.length?this.active.attr("aria-expanded","true").attr("tabIndex","0"):this.headers.eq(0).attr("tabIndex","0");c.browser.safari||this.headers.find("a").attr("tabIndex","-1");a.event&&this.headers.bind(a.event+ +".accordion",function(g){b._clickHandler.call(b,g,this);g.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.find(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role").unbind(".accordion").removeData("accordion"); +this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");if(a.autoHeight||a.fillHeight)b.css("height", +"");return this},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();b&&this._createIcons()}},_keydown:function(a){var b=c.ui.keyCode;if(!(this.options.disabled||a.altKey||a.ctrlKey)){var d=this.headers.length,f=this.headers.index(a.target),g=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:g=this.headers[(f+1)%d];break;case b.LEFT:case b.UP:g=this.headers[(f-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target}, +a.target);a.preventDefault()}if(g){c(a.target).attr("tabIndex","-1");c(g).attr("tabIndex","0");g.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0, +b-c(this).innerHeight()+c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a=="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d= +this.options;if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]==this.active[0];d.active=d.collapsible&&b?false:c(".ui-accordion-header",this.element).index(a);if(!(this.running||!d.collapsible&&b)){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").find(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected); +a.next().addClass("ui-accordion-content-active")}e=a.next();f=this.active.next();g={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):e,oldContent:f};d=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(e,f,g,b,d)}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +this.active.next().addClass("ui-accordion-content-active");var f=this.active.next(),g={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:f},e=this.active=c([]);this._toggle(e,f,g)}},_toggle:function(a,b,d,f,g){var e=this.options,k=this;this.toShow=a;this.toHide=b;this.data=d;var i=function(){if(k)return k._completed.apply(k,arguments)};this._trigger("changestart",null,this.data);this.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&f?{toShow:c([]), +toHide:b,complete:i,down:g,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:i,down:g,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;f=c.ui.accordion.animations;var h=e.duration,j=e.animated;if(j&&!f[j]&&!c.easing[j])j="slide";f[j]||(f[j]=function(l){this.slide(l,{easing:j, +duration:h||700})});f[j](d)}else{if(e.collapsible&&f)a.toggle();else{b.hide();a.show()}i(true)}b.prev().attr("aria-expanded","false").attr("tabIndex","-1").blur();a.prev().attr("aria-expanded","true").attr("tabIndex","0").focus()},_completed:function(a){var b=this.options;this.running=a?0:--this.running;if(!this.running){b.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion, +{version:"1.8.1",animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),f=0,g={},e={},k;b=a.toShow;k=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(i,h){e[h]="hide";i=(""+c.css(a.toShow[0], +h)).match(/^([\d+-.]+)(.*)$/);g[h]={value:i[1],unit:i[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(e,{step:function(i,h){if(h.prop=="height")f=h.end-h.start===0?0:(h.now-h.start)/(h.end-h.start);a.toShow[0].style[h.prop]=f*g[h.prop].value+g[h.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css("width",k);a.toShow.css({overflow:d});a.complete()}})}else a.toHide.animate({height:"hide"}, +a);else a.toShow.animate({height:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Autocomplete 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Autocomplete + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.position.js + */ +(function(e){e.widget("ui.autocomplete",{options:{minLength:1,delay:300},_create:function(){var a=this,b=this.element[0].ownerDocument;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){var d=e.ui.keyCode;switch(c.keyCode){case d.PAGE_UP:a._move("previousPage",c);break;case d.PAGE_DOWN:a._move("nextPage",c);break;case d.UP:a._move("previous",c);c.preventDefault(); +break;case d.DOWN:a._move("next",c);c.preventDefault();break;case d.ENTER:a.menu.active&&c.preventDefault();case d.TAB:if(!a.menu.active)return;a.menu.select(c);break;case d.ESCAPE:a.element.val(a.term);a.close(c);break;case d.LEFT:case d.RIGHT:case d.SHIFT:case d.CONTROL:case d.ALT:break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){a.search(null,c)},a.options.delay);break}}).bind("focus.autocomplete",function(){a.selectedItem=null;a.previous=a.element.val()}).bind("blur.autocomplete", +function(c){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=e("
    ").addClass("ui-autocomplete").appendTo("body",b).menu({focus:function(c,d){d=d.item.data("item.autocomplete");false!==a._trigger("focus",null,{item:d})&&/^key/.test(c.originalEvent.type)&&a.element.val(d.value)},selected:function(c,d){d=d.item.data("item.autocomplete");false!==a._trigger("select", +c,{item:d})&&a.element.val(d.value);a.close(c);c=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=c}a.selectedItem=d},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,b;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(c,d){d(e.ui.autocomplete.filter(a,c.term))}}else if(typeof this.options.source==="string"){b=this.options.source;this.source=function(c,d){e.getJSON(b,c,d)}}else this.source=this.options.source},search:function(a,b){a= +a!=null?a:this.element.val();if(a.length").data("item.autocomplete",b).append(""+b.label+"").appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&& +/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,b){var c=new RegExp(e.ui.autocomplete.escapeRegex(b),"i");return e.grep(a,function(d){return c.test(d.label||d.value||d)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(e(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(b){a.activate(b,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.attr("scrollTop"),f=this.element.height();if(c<0)this.element.attr("scrollTop",d+c);else c>f&&this.element.attr("scrollTop",d+c-f+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,b,c){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(c,a):this.activate(c,this.element.children(b))}else this.activate(c,this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active|| +this.last())this.activate(a,this.element.children(":first"));else{var b=this.active.offset().top,c=this.element.height(),d=this.element.children("li").filter(function(){var f=e(this).offset().top-b-c+e(this).height();return f<10&&f>-10});d.length||(d=this.element.children(":last"));this.activate(a,d)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last")); +else{var b=this.active.offset().top,c=this.element.height();result=this.element.children("li").filter(function(){var d=e(this).offset().top-b+c-e(this).height();return d<10&&d>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()
    ").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(), +d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon");this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}}); +a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
    ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index", +c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a, +function(g,f){g=c('').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging"); +b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position"); +a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop", +f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]= +g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a, +b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break; +case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title", +d.uiDialogTitlebar).html(""+(b||" "));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight", +this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.1",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&& +c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
    ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&& +b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight, +document.body.offsetHeight);return a");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("
    ");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),g,h,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");g=b._start(c,f);if(g===false)return}break}i=b.options.step;g=b.options.values&&b.options.values.length?(h=b.values(f)):(h=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:h=b._valueMin();break;case d.ui.keyCode.END:h=b._valueMax();break;case d.ui.keyCode.PAGE_UP:h=g+(b._valueMax()-b._valueMin())/5;break;case d.ui.keyCode.PAGE_DOWN:h=g-(b._valueMax()-b._valueMin())/5;break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(g=== +b._valueMax())return;h=g+i;break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(g===b._valueMin())return;h=g-i;break}b._slide(c,f,h);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,g,h,i;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c={x:b.pageX,y:b.pageY};e=this._normValueFromMouse(c);f=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(j){var k=Math.abs(e-h.values(j));if(f>k){f=k;g=d(this);i=j}});if(a.range===true&&this.values(1)===a.min){i+=1;g=d(this.handles[i])}if(this._start(b, +i)===false)return false;this._mouseSliding=true;h._handleIndex=i;g.addClass("ui-state-active").focus();a=g.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-g.width()/2,top:b.pageY-a.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)};e=this._normValueFromMouse(c);this._slide(b,i,e);return this._animateOff=true},_mouseStart:function(){return true}, +_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a; +if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value= +this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;fthis._valueMax())return this._valueMax();var a=this.options.step,c=b%a;b=b-c;if(c>=a/2)b+=a;return parseFloat(b.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,a=this.options,c=this, +e=!this._animateOff?a.animate:false,f,g={},h,i,j,k;if(this.options.values&&this.options.values.length)this.handles.each(function(l){f=(c.values(l)-c._valueMin())/(c._valueMax()-c._valueMin())*100;g[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](g,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(l===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate);if(l===1)c.range[e?"animate":"css"]({width:f-h+"%"},{queue:false,duration:a.animate})}else{if(l=== +0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(l===1)c.range[e?"animate":"css"]({height:f-h+"%"},{queue:false,duration:a.animate})}h=f});else{i=this.value();j=this._valueMin();k=this._valueMax();f=k!==j?(i-j)/(k-j)*100:0;g[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](g,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e? +"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.1"})})(jQuery); +;/* + * jQuery UI Tabs 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Tabs + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(d){var s=0,u=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
    ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
  • #{label}
  • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&&e==this.options.selected|| +this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+ ++s},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++u);return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.1"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k')}function E(a,b){d.extend(a, +b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.1"}});var y=(new Date).getTime();d.extend(J.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]= +f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id)a.id="dp"+ ++this.uuid;var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
    ')}}, +_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& +b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== +""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, +c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), +true);this._updateDatepicker(b);this._updateAlternate(b)}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){a="dp"+ ++this.uuid;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});b=b&&b.constructor==Date? +this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]); +d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}}, +_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b= +d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false; +for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target|| +a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a); +d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&& +d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=d.datepicker._getBorders(b.dpDiv);b.dpDiv.find("iframe.ui-datepicker-cover").css({left:-i[0],top:-i[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f, +h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a)).find("iframe.ui-datepicker-cover").css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover"); +this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover"); +this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);var e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"); +a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus()},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(), +k=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>k&&k>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"]; +a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val(): +"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&& +!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth; +b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){a=this._getInst(d(a)[0]); +a.input&&a._selectingMonthYear&&!d.browser.msie&&a.input.focus();a._selectingMonthYear=!a._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a, +"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")|| +this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null; +for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,k=c=-1,l=-1,u=-1,j=false,o=function(p){(p=z+1-1){k=1;l=u;do{e=this._getDaysInMonth(c,k-1);if(l<=e)break;k++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c, +k-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=k||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c? +c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=j+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear|| +a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),k=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay? +new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),j=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=j&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-k,1)),this._getFormatConfig(a)); +n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m, +g+k,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";k=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&& +a.currentDay?u:b;k=!h?k:this.formatDate(k,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
    '+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
    ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;k=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),w=this._get(a,"showOtherMonths"),G=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var K=this._getDefaultDate(a),H="",C=0;C1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
    '+(/all|left/.test(t)&&C==0?c? +f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,j,o,C>0||D>0,z,v)+'
    ';var A=k?'":"";for(t=0;t<7;t++){var q=(t+h)%7;A+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=A+"";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay, +A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var N=0;N";var O=!k?"":'";for(t=0;t<7;t++){var F=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,I=B&&!G||!F[0]||j&&qo;O+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=O+""}g++;if(g>11){g=0;m++}x+="
    '+this._get(a,"weekHeader")+"
    '+this._get(a,"calculateWeek")(q)+""+(B&&!w?" ":I?''+q.getDate()+ +"":''+q.getDate()+"")+"
    "+(l?""+(i[0]>0&&D==i[1]-1?'
    ':""):"");L+=x}H+=L}H+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'': +"");a._keyEvent=false;return H},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var k=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),j='
    ',o="";if(h||!k)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(j+=o+(h||!(k&&l)?" ":""));if(h||!l)j+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b, +i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(j+='"}j+=this._get(a,"yearSuffix");if(u)j+=(h||!(k&&l)?" ":"")+o;j+="
    ";return j},_adjustInstDate:function(a,b,c){var e= +a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, +"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, +"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= +function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b)); +return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new J;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.1";window["DP_jQuery_"+y]=d})(jQuery); +;/* + * jQuery UI Progressbar 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b){b.widget("ui.progressbar",{options:{value:0},_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this._valueMin(),"aria-valuemax":this._valueMax(),"aria-valuenow":this._value()});this.valueDiv=b("
    ").appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===undefined)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){switch(a){case "value":this.options.value=c;this._refreshValue();this._trigger("change");break}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;if(athis._valueMax())a=this._valueMax();return a}, +_valueMin:function(){return 0},_valueMax:function(){return 100},_refreshValue:function(){var a=this.value();this.valueDiv[a===this._valueMax()?"addClass":"removeClass"]("ui-corner-right").width(a+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.1"})})(jQuery); +;/* + * jQuery UI Effects 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Effects/ + */ +jQuery.effects||function(f){function k(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return l.transparent;return l[f.trim(c).toLowerCase()]}function q(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return k(b)}function m(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function n(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in r||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function s(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function j(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(f.isFunction(b)){d=b;b=null}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:f.fx.speeds[b]||f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=q(b.elem,a);b.end=k(b.end);b.colorInit= +true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var l={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189, +183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255, +165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},o=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,d){if(f.isFunction(b)){d=b;b=null}return this.each(function(){var e=f(this),g=e.attr("style")||" ",h=n(m.call(this)),p,t=e.attr("className");f.each(o,function(u, +i){c[i]&&e[i+"Class"](c[i])});p=n(m.call(this));e.attr("className",t);e.animate(s(h,p),a,b,function(){f.each(o,function(u,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)})})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a? +f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===undefined?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.1",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this, +arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+ +b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2, +10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)* +a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +;/* + * jQuery UI Effects Fold 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Effects/Fold + * + * Depends: + * jquery.effects.core.js + */ +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100* +f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +;/* + * jQuery UI Effects Highlight 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Effects/Highlight + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Pulsate 1.8.1 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Effects/Pulsate + * + * Depends: + * jquery.effects.core.js + */ +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +; ADDED Site/Site_W/jpqplot/examples/jsondata.txt Index: Site/Site_W/jpqplot/examples/jsondata.txt ================================================================== --- Site/Site_W/jpqplot/examples/jsondata.txt +++ Site/Site_W/jpqplot/examples/jsondata.txt @@ -0,0 +1,1 @@ +[[1, 3, 2, 4, 6, 9]] ADDED Site/Site_W/jpqplot/examples/legendLabels.html Index: Site/Site_W/jpqplot/examples/legendLabels.html ================================================================== --- Site/Site_W/jpqplot/examples/legendLabels.html +++ Site/Site_W/jpqplot/examples/legendLabels.html @@ -0,0 +1,205 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    The following charts demonstrate some options of the EnhancedLegendRendrer. Some of the enhancements are:

    +
      +
    • Control of number of rows and/or columns.
    • +
    • Clickable swatches and labels to toggle series on/off.
    • +
    • Placement of legend inside or outside of the plot (this has since been added to the default legend functionality).
    • +
    • Ability to hide legend swatches and or labels.
    • +
    + +

    The first plot has legend labels in 3 columns. They are clickable.

    + +
    + +
    
    +    
    +

    The second chart has legend labels in 2 columns placed outside of the plot. The showLabels option is false, but the labels are still clickable.

    +

    The legend renderer's "seriesToggle" option has been set to 900 to produce a slow, 900 ms fade. You can set this to a number or to 'fast', 'normal' or 'slow'.

    +

    Also, the disableIEFading option is set to false to allow fading on IE (as opposed to simple show/hide). In IE, series will be toggled with a show()/hide() method by default as opposed to fadeIn()/fadeOut() because of poor performance on some machines.

    +
    + +
    
    +
    +

    The third plot has legend labels in 1 row outside and below the chart area. The showSwatches option is false, but the labels are still clickable.

    +
    + + +
    
    +

    The fourth chart is a pie plot. Pie plots use their own legend renderer, since a pie plot is only 1 series. The pie legend renderer has also been updated to handle custom rows/columns, although it is not clickable.

    +
    + +
    
    +    
    +  
    +
    
    ADDED   Site/Site_W/jpqplot/examples/legendLabels2.html
    Index: Site/Site_W/jpqplot/examples/legendLabels2.html
    ==================================================================
    --- Site/Site_W/jpqplot/examples/legendLabels2.html
    +++ Site/Site_W/jpqplot/examples/legendLabels2.html
    @@ -0,0 +1,228 @@
    +
    +
    +
    +
    +  
    +  Simple Test
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +
    +
    +
    +
    +  
    +
    +  
    +
    +
    +
    +
    +
    +
    + 
    +  
    +  
    +
    +
    +

    This example demonstrates how to use the legend "location: 'outsideGrid'" option. This option will place the legend outside of the grid but inside of the plot target. It will shrink the grid to accommodate the plot target. Borders have been added to the plot target container elements to clarify how the legend is drawn in each case.

    + +
    + +
    
    +    
    +
    + +
    
    +
    +
    + +
    
    +
    +
    + +
    
    +
    +
    + +
    
    +    
    +  
    +
    
    ADDED   Site/Site_W/jpqplot/examples/liz.zip
    Index: Site/Site_W/jpqplot/examples/liz.zip
    ==================================================================
    --- Site/Site_W/jpqplot/examples/liz.zip
    +++ Site/Site_W/jpqplot/examples/liz.zip
    cannot compute difference between binary files
    
    ADDED   Site/Site_W/jpqplot/examples/markerStyles.html
    Index: Site/Site_W/jpqplot/examples/markerStyles.html
    ==================================================================
    --- Site/Site_W/jpqplot/examples/markerStyles.html
    +++ Site/Site_W/jpqplot/examples/markerStyles.html
    @@ -0,0 +1,44 @@
    +
    +
    +  
    +  
    +  
    +  
    +  
    +  
    +
    +  
    +  
    +  
    +  
    +	
    +	
    +		
    +
    +
    +
    +
    +
    + + + + + ADDED Site/Site_W/jpqplot/examples/mekkoChart.html Index: Site/Site_W/jpqplot/examples/mekkoChart.html ================================================================== --- Site/Site_W/jpqplot/examples/mekkoChart.html +++ Site/Site_W/jpqplot/examples/mekkoChart.html @@ -0,0 +1,217 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + +

    Mekko charts make a number of customizations to the series, axes and legend. You can create a Mekko chart by including the renderers:

    +
    +<script language="javascript" type="text/javascript" src="../src/plugins/jqplot.mekkoRenderer.js"></script>
    +<script language="javascript" type="text/javascript" src="../src/plugins/jqplot.mekkoAxisRenderer.js"></script>
    +
    + +

    Data is specified per bar in the chart. You can specify data as an array of y values, or as an array of [label, value] pairs. Note that labels are used only on the first series. Labels on subsequent series are ignored:

    +
    +bar1 = [['shirts', 8],['hats', 14],['shoes', 6],['gloves', 16],['dolls', 12]];
    +bar2 = [15,6,9,13,6];
    +bar3 = [['grumpy',4],['sneezy',2],['happy',7],['sleepy',9],['doc',7]];
    +
    + +

    If you want to place labels for each bar under the axis, you use the barLabels option on the axes. The bar labels can be styled with the ".jqplot-mekko-barLabel" css class.

    +
    +barLabels = ['Mickey Mouse', 'Donald Duck', 'Goofy'];
    +axes:{xaxis:{barLabels:barLabels}}
    +
    + +
    + +

    You can add a secondary x axes, and the tick spacing of the axes can be separately controlled with the "tickMode" option. "bar" will produce tics at bar boundaries, "even" will produce evenly spaced ticks. If you set the axes max greater than the sum of the data range (the maximum x value), the plot will be padded. Note that you should set the max on both axes to the same value.

    + +
    +axes:{
    +    xaxis:{
    +        barLabels:barLabels,
    +        max: 175
    +    }, 
    +    x2axis:{
    +        show:true, 
    +        tickMode:'even', 
    +        max: 175
    +    }
    +}
    +
    + +

    Here the borders between chart areas have been given a custom color using the "borderColor" option on the series renderer.

    + +
    +    seriesDefaults:{renderer:$.jqplot.MekkoRenderer, rendererOptions: {borderColor: '#dddddd'}}
    +
    + +

    Additionally, the legend can be placed "outside" (the default for a mekko chart) or "inside" of the grid area with the "placement" option on the legend renderer.

    + +
    +legend:{
    +    show:true, 
    +    rendererOptions:{placement: "insideGrid"}, 
    +    location:'e'
    +},
    +
    + +
    + +

    Legend labels can be specified independently of the series with the "labels" option on the legend. These will override any labels specified with the series. There are also options to control the number of rows and number of columns in the legend as well as placement.

    + +

    Here the legend is positioned to the "north" and set to render 1 row tall (number of columns determined automatically). Note that an extra css specification was added to pad the bottom of the title of this chart to give room for the legend above the plot.

    + +
    +legendLabels = ['hotels', 'rides', 'buses', 'instruments', 'totes'];
    +
    +legend:{
    +    show:true, 
    +    location: 'n',
    +    labels: legendLabels,
    +    rendererOptions:{numberRows: 1, placement: "outside"}
    +},    
    +
    + +

    Also, the borders between the chart areas have been turned off with the "showBorders: false" option.

    + +
    +    seriesDefaults:{renderer:$.jqplot.MekkoRenderer, rendererOptions: {showBorders: false}}
    +
    + +
    + + ADDED Site/Site_W/jpqplot/examples/meterGauge.html Index: Site/Site_W/jpqplot/examples/meterGauge.html ================================================================== --- Site/Site_W/jpqplot/examples/meterGauge.html +++ Site/Site_W/jpqplot/examples/meterGauge.html @@ -0,0 +1,132 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + +

    A meter gauge plot shows a data value in a speedometer style gauge. The "series" in consists of a single data value that positions the needle on the gauge. The span of the gauge will be automatically determined, or can be set with the "min" and "max" values in the "rendererOptions" of the series. The plot below also specifies a chart title and a "label" for the gauge.

    + +
    + +

    For small gauges, it can be desirable to turn off the tick labels by setting the "showTickLabels" option in the rendererOptions to false. Also, colored interval bands can be specified. The interval ranges are specified as an array of values the "intervals" option and custom colors for each interval can be specified with the "intervalColors" option.

    + +
    + +

    The inner and outer radii of the interval band will automatically adjust when tick Labels are turned on. Also, the gauge minimum and maximum can be specified with the "min" and "max" options in the rendererOptions.

    + +
    + +

    The inner and outer radii of the interval band can also be specified with the "intervalInnerRadius" and "intervalOuterRadius" options. In the plot below, the "labelPosition" option was set to "bottom" to put the gauge label below the plot. The "labelHeightAdjust" option was set to -5 to raise the label slightly (5 pixels) to place it closer to the gauge.

    +

    The gauge automatically resizes to best fit the container. The font size of the tick labels and gauge labels do not size to the container, however. The font size of the tick labels can be controlled by styling the css ".jqplot-meterGauge-ticks" class and the gauge label by the "jqplot-meterGauge-label" class.

    +
    + + ADDED Site/Site_W/jpqplot/examples/meterGauge2.html Index: Site/Site_W/jpqplot/examples/meterGauge2.html ================================================================== --- Site/Site_W/jpqplot/examples/meterGauge2.html +++ Site/Site_W/jpqplot/examples/meterGauge2.html @@ -0,0 +1,158 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    
    +  
    +
    
    ADDED   Site/Site_W/jpqplot/examples/minMaxLines.html
    Index: Site/Site_W/jpqplot/examples/minMaxLines.html
    ==================================================================
    --- Site/Site_W/jpqplot/examples/minMaxLines.html
    +++ Site/Site_W/jpqplot/examples/minMaxLines.html
    @@ -0,0 +1,61 @@
    +
    +
    +
    +
    +  
    +  Horizontal Bar with Vertical lines Test
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +
    +  
    +
    +
    +  
    +  
    +
    +
    + + ADDED Site/Site_W/jpqplot/examples/missingValues.html Index: Site/Site_W/jpqplot/examples/missingValues.html ================================================================== --- Site/Site_W/jpqplot/examples/missingValues.html +++ Site/Site_W/jpqplot/examples/missingValues.html @@ -0,0 +1,119 @@ + + + + + + Null Value Handling + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    
    +    
    +
    
    +    
    +
    
    +    
    +
    
    +  
    +
    
    ADDED   Site/Site_W/jpqplot/examples/multiAxesRotatedText.html
    Index: Site/Site_W/jpqplot/examples/multiAxesRotatedText.html
    ==================================================================
    --- Site/Site_W/jpqplot/examples/multiAxesRotatedText.html
    +++ Site/Site_W/jpqplot/examples/multiAxesRotatedText.html
    @@ -0,0 +1,70 @@
    +
    +
    +
    +
    +	
    +	untitled
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +	
    +	
    +
    +
    +
    +
    +
    + + + + ADDED Site/Site_W/jpqplot/examples/multipleBarColors.html Index: Site/Site_W/jpqplot/examples/multipleBarColors.html ================================================================== --- Site/Site_W/jpqplot/examples/multipleBarColors.html +++ Site/Site_W/jpqplot/examples/multipleBarColors.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + +

    Individual bars can now have different colors. This is achieved by setting the "varyBarColor" option to true in the series rendererOptions. The default is to assign each bar a different color from the default "seriesColors" array. You can customize the seriesColors array to assign whatever colors you like to the bars.

    +
    +
    + +

    Bars and filled series are colored differently for positive and negative values by default. Negative values will be a slightly darker and less saturated than their positive counterparts for visual effect. This applies to only bar and filled line charts by default.

    + +
    + +

    If you want to use only the colors defined in the "seriesColors" array and not colors from the "negativeSeriesColors" array, set the "useNegativeColors" option to false. This way negative values and positive values will pull their colors from the same color array.

    + +

    Note that there are only 16 colors defined in the default color arrays. Color arrays will cylcle through colors continuously when the last color is used.

    + +
    + + + + + ADDED Site/Site_W/jpqplot/examples/multipleLines.html Index: Site/Site_W/jpqplot/examples/multipleLines.html ================================================================== --- Site/Site_W/jpqplot/examples/multipleLines.html +++ Site/Site_W/jpqplot/examples/multipleLines.html @@ -0,0 +1,47 @@ + + + + + + Multiple lines Test + + + + + + + + + + + + + + + + + +
    + + ADDED Site/Site_W/jpqplot/examples/multipleYAxes.html Index: Site/Site_W/jpqplot/examples/multipleYAxes.html ================================================================== --- Site/Site_W/jpqplot/examples/multipleYAxes.html +++ Site/Site_W/jpqplot/examples/multipleYAxes.html @@ -0,0 +1,85 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + ADDED Site/Site_W/jpqplot/examples/nav.inc Index: Site/Site_W/jpqplot/examples/nav.inc ================================================================== --- Site/Site_W/jpqplot/examples/nav.inc +++ Site/Site_W/jpqplot/examples/nav.inc @@ -0,0 +1,35 @@ + ADDED Site/Site_W/jpqplot/examples/pieTest.html Index: Site/Site_W/jpqplot/examples/pieTest.html ================================================================== --- Site/Site_W/jpqplot/examples/pieTest.html +++ Site/Site_W/jpqplot/examples/pieTest.html @@ -0,0 +1,103 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    This page tests for 3 conditions. Plotting pies with a slice that begins at 0 and ends at and near 2*pi (360 degrees), disabling the trendline plugin on pies, and plotting a pie that has a 0 value (or a very small value relative to other values) in the data set.

    +
    +
    
    +    
    +
    
    +    
    +
    
    +    
    +
    
    +    
    +
    
    +    
    +
    
    +  
    +
    
    ADDED   Site/Site_W/jpqplot/examples/pieTest2.html
    Index: Site/Site_W/jpqplot/examples/pieTest2.html
    ==================================================================
    --- Site/Site_W/jpqplot/examples/pieTest2.html
    +++ Site/Site_W/jpqplot/examples/pieTest2.html
    @@ -0,0 +1,88 @@
    +
    +
    +
    +
    +  
    +  Pie Chart Test
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  	
    +  
    +
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +
    +  
    +  
    +  
    +     
    +    
    +  
    +  
    +
    +
    +

    To create pie plots, you have to include the "jqplot.pieRenderer.js" file in your source. You can view the javascript that generated these plots by clicking the "View Code" button below.

    + + +

    Below is a default pie plot. Slices will highlight on mouseover. Events are triggered when you mouseover a slice and also when you click on a slice. Here We capture the 'jqplotDataClick' event and display the clicked series index, point index and data values.

    + +

    You Clicked: Nothing yet
    + +
    + +

    Below is a customized customized pie plot where options for sliceMargin and startAngle have been specified. Here We capture the 'jqplotDataHighlight' event and display the currently highlighted series index, point index and data values.

    + +

    The plot target also fires a 'jqplotDataMouseOver' when the cursor is moused over a slice even if highlighting is turned off. This event will fire continuously as the user mouses over the slice. 'jqplotDataHighlight' fires only once when the user first passes over the slice. Additionally, a 'jqplotDataUnhighlight' event is fired when the user moves out of a slice (if highlighting is enabled).

    + +

    Moused Over: Nothing
    + +
    + +

    The next example has the plot's 'captureRightClick' option set to true. This causes the plot to fire a 'jqplotRightClick' event the the user clicks the right mouse button over a slice.

    + +

    The 'highlightMouseDown' option is also set to true. This will highlight a slice on mouse down instead of on move over. Highlighting will occur for either left or right click.

    + +
    You Right Clicked: Nothing yet
    + +
    + +

    The last example shows a pie with all of the default colors. Mouse over to see the default highlight colors. Series colors can be specified with the "seriesColors" option on the plot. The highlight colors are specified with the 'highlightColors' option on the series renderer.

    + +
    + +

    A simple line chart is added to test for imcompatabilities.

    +
    + + ADDED Site/Site_W/jpqplot/examples/pieTest2.js Index: Site/Site_W/jpqplot/examples/pieTest2.js ================================================================== --- Site/Site_W/jpqplot/examples/pieTest2.js +++ Site/Site_W/jpqplot/examples/pieTest2.js @@ -0,0 +1,80 @@ +$(document).ready(function(){ + + $.jqplot.config.enablePlugins = true; + + s1 = [['a',2], ['b',6], ['c',7], ['d',10]]; + s2 = [['a', 4], ['b', 7], ['c', 6], ['d', 3]]; + s3 = [['a', 2], ['b', 1], ['c', 3], ['d', 3]]; + s4 = [['a', 4], ['b', 3], ['c', 2], ['d', 1]]; + + s5 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; + + plot1 = $.jqplot('chart1', [s1], { + seriesDefaults:{ + renderer:$.jqplot.PieRenderer + }, + legend: {show:true} + }); + + plot2 = $.jqplot('chart2', [s2], { + seriesDefaults: { + renderer:$.jqplot.PieRenderer, + rendererOptions:{ + sliceMargin: 4, + startAngle: -90 + } + } + }); + + plot3 = $.jqplot('chart3', [s3], { + captureRightClick: true, + seriesDefaults:{ + renderer:$.jqplot.PieRenderer, + shadow: false, + rendererOptions:{ + startAngle: 90, + sliceMargin: 4, + highlightMouseDown: true + } + }, + legend: { + show: true, + location: 'e', + placement: 'outside' + } + }); + + plot5 = $.jqplot('chart5', [s5], { + seriesDefaults:{ + renderer:$.jqplot.PieRenderer + } + }); + + plot6 = $.jqplot('chart6', [[1,2,3,4]]); + + $('#chart1').bind('jqplotDataClick', + function (ev, seriesIndex, pointIndex, data) { + $('#info1').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data); + } + ); + + $('#chart2').bind('jqplotDataHighlight', + function (ev, seriesIndex, pointIndex, data) { + $('#info2').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data); + } + ); + + $('#chart2').bind('jqplotDataUnhighlight', + function (ev) { + $('#info2').html('Nothing'); + } + ); + + $('#chart3').bind('jqplotDataRightClick', + function (ev, seriesIndex, pointIndex, data) { + $('#info3').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data); + } + ); + + $(document).unload(function() {$('*').unbind(); }); +}); ADDED Site/Site_W/jpqplot/examples/pieTest3.html Index: Site/Site_W/jpqplot/examples/pieTest3.html ================================================================== --- Site/Site_W/jpqplot/examples/pieTest3.html +++ Site/Site_W/jpqplot/examples/pieTest3.html @@ -0,0 +1,100 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    
    + 
    +    
    + 
    +  
    +
    
    ADDED   Site/Site_W/jpqplot/examples/pointLabels.html
    Index: Site/Site_W/jpqplot/examples/pointLabels.html
    ==================================================================
    --- Site/Site_W/jpqplot/examples/pointLabels.html
    +++ Site/Site_W/jpqplot/examples/pointLabels.html
    @@ -0,0 +1,94 @@
    +
    +
    +
    +
    +  
    +  
    +  
    +  Zooming with Point Labels
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +
    +  
    +
    +
    +  
    +  
    +
    +    

    Click and drag to zoom. Double click on plot or click "Reset Zoom" button to reset zoom.

    +
    +
    + + + +
    +
    + + ADDED Site/Site_W/jpqplot/examples/pointLabels2.html Index: Site/Site_W/jpqplot/examples/pointLabels2.html ================================================================== --- Site/Site_W/jpqplot/examples/pointLabels2.html +++ Site/Site_W/jpqplot/examples/pointLabels2.html @@ -0,0 +1,47 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + +
    + + ADDED Site/Site_W/jpqplot/examples/prefix.html Index: Site/Site_W/jpqplot/examples/prefix.html ================================================================== --- Site/Site_W/jpqplot/examples/prefix.html +++ Site/Site_W/jpqplot/examples/prefix.html @@ -0,0 +1,90 @@ + + + + + + Test + + + + + + + + + + + + + + + + + + + + + + +

    Example of the "prefix" axis tick option. This option adds a prefix to the tick label if and only if no formatString option is specified.

    +
    +
    
    +    
    +    

    A new configuration option, $.jqplot.config.defaultTickFormatString, has been added as well. When no user formatString is specified, linear axes previously used a hard coded '%.1f' default format string. The config option controls this default format string. This allows an alternative way to format tick labels, with or without a prefix, if no formatString option is specified.

    +
    +
    
    +  
    +
    
    ADDED   Site/Site_W/jpqplot/examples/resizablePlot.html
    Index: Site/Site_W/jpqplot/examples/resizablePlot.html
    ==================================================================
    --- Site/Site_W/jpqplot/examples/resizablePlot.html
    +++ Site/Site_W/jpqplot/examples/resizablePlot.html
    @@ -0,0 +1,150 @@
    +
    +
    +
    +
    +  
    +  
    +  
    +  Plots in Hidden Containers
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  	
    +  
    +
    +  
    +  
    +  
    +  
    +
    +    
    +

    Plot targets can be placed inside of resizable containers for dynamic plot sizing. The examples here use the jQuery UI package for resizing functionality.

    + + + + +
    +
    +
    +
    +
    + +

    The first plot has good resize performance in Firefox, Safari and other canvas enabled browsers. The plot will resize dynamically with the container. IE performance will be slow since IE doesn't natively support the canvas element.

    + +

    Resizing is handled by binding a handler to the 'resize' event. The handler function replots the plot during resize. Here, the plot targets's height and width must be specified as a percentage of the container and the container must be visible.

    + +

    The event handler looks like:

    +
    +    $('#resizable1').bind('resize', function(event, ui) {
    +        plot1.replot();
    +    });
    +
    +
    + + +
    + +
    +
    +
    +
    +

    The second plot uses an alternative sizing method that is more responsive in all browsers, especially IE. The differnece? First, the plot target is given a static height and width that will fit inside the resizable container. Then, instead of resizing dynamically with the container, the plots replot() method is called at the end of the resize. When resizing is done, the plot targets hieght and width are set to a percentage of the container's and then the replot method is called.

    + +

    Also, an options object is passed into the replot method. It contains a single option, resetAxes, which, if true, resets all axes so the min, max, numberTicks and tickInterval are recalculated.

    +
    +    $('#resizable2').bind('resizestop', function(event, ui) {
    +        $('#chart2').height($('#resizable2').height()*0.96);
    +        $('#chart2').width($('#resizable2').width()*0.96);
    +        plot2.replot({resetAxes:true});
    +    });
    +
    + +

    You can also pass in option objects to reset specific axes like:

    + +
    +    {resetAxes:['yaxis', 'y2axis']};
    +    
    +    or
    +    
    +    {resetAxes:{yaxis:true, y2axis:true}};
    +
    + +
    + + + ADDED Site/Site_W/jpqplot/examples/rotatedTickLabels.html Index: Site/Site_W/jpqplot/examples/rotatedTickLabels.html ================================================================== --- Site/Site_W/jpqplot/examples/rotatedTickLabels.html +++ Site/Site_W/jpqplot/examples/rotatedTickLabels.html @@ -0,0 +1,61 @@ + + + + + jqPlot Test 2 + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + ADDED Site/Site_W/jpqplot/examples/rotatedTickLabelsZoom.html Index: Site/Site_W/jpqplot/examples/rotatedTickLabelsZoom.html ================================================================== --- Site/Site_W/jpqplot/examples/rotatedTickLabelsZoom.html +++ Site/Site_W/jpqplot/examples/rotatedTickLabelsZoom.html @@ -0,0 +1,68 @@ + + + + + jqPlot Test 2 + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + ADDED Site/Site_W/jpqplot/examples/seriesCanvasReorder.html Index: Site/Site_W/jpqplot/examples/seriesCanvasReorder.html ================================================================== --- Site/Site_W/jpqplot/examples/seriesCanvasReorder.html +++ Site/Site_W/jpqplot/examples/seriesCanvasReorder.html @@ -0,0 +1,93 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + +

    When lines overlap each other it can be difficult to tell what is going on with the series below the top. The highlighter plugin, the enhancedLegendRenderer plugin and special methods of plot help with this situation.

    + +

    The highlighter plugin has been enhanced with a "bringSeriesToFront" option which will bring the series of the highlighted point to the front when a data point is highlighted. Note, however, when highlighting a point which coincides with multiple series, highlighter will detect this as the top most series and no highlighting effect will be noticed.

    + +

    The enhancedLegendRenderer plugin enabled clickable legend labels which will show/hide series. This functionality can be disabled by setting the "seriesToggle" option on the legend renderer to false. You can also change the fade duration of the series by setting the seriesToggle option to a millisecond value like 450, or the 'slow' or 'fast' keywords.

    + +

    On IE, series are simple toggled without the fading. This avoids some erratic behaviour with fading elements on IE. IE fading can be re-enabled be setting the disableIEFading option to false.

    + +

    The plot object has 4 methods which can bring a series forward or push it backward on the stack. Click the buttons below to bring individual series to the front. The "Last Order" button will toggle the current series order with the last displayed series order. The "Original" button will reset the series to display in the order when the plot was created.

    + + +
    + + + + + + + + +

    The 4 methods to achieve this effect are:

    + +
    +    plot.moveSeriesToFront(series index);
    +    plot.restorePreviousSeriesOrder();
    +    plot.restoreOriginalSeriesOrder();
    +    plot.moveSeriesToBack(series index);
    +
    + +

    moveSeriesToBack is not demonstrated here, but is available.

    + + + ADDED Site/Site_W/jpqplot/examples/seriesUpdate.html Index: Site/Site_W/jpqplot/examples/seriesUpdate.html ================================================================== --- Site/Site_W/jpqplot/examples/seriesUpdate.html +++ Site/Site_W/jpqplot/examples/seriesUpdate.html @@ -0,0 +1,123 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + +

    This example demonstrates how to update a point in a series and then redraw just that series. You can select a series, a point and change it's x and y value with the form below the chart.

    + +
    + +
    + Series: + Point: + X: + Y: + +
    + +

    The mechanism to update data in a series and then redraw the series is simple. update the data in the "plot.series[seriesIndex].data[dataIndex]" and then redraw just that series with "plot.drawSeries(options, seriesIndex);" Here is the relavent code which updates the series on this chart:

    + +
    +    var f = document.forms[0];
    +    var seriesIndex = f.seriesId.selectedIndex;
    +    var series = plot1.series[seriesIndex];
    +    var data = series.data[f.pointId.selectedIndex];
    +    var xval = parseFloat(f.xvalue.value);
    +    var yval = parseFloat(f.yvalue.value);
    +    data[0] = xval;
    +    data[1] = yval;
    +    plot1.drawSeries({}, seriesIndex);
    +
    + +

    You can also update an entire series dataset at once and redraw the series like so:

    + +
    +    plot1.series[2].data = [[1,4], [2,6], [3,4], [4,1], [5,7]];
    +    plot1.drawSeries({}, 2);
    +
    + +

    You can test this by clicking the button below. You should see the entire "bears" line drop lower on the chart.

    + + + +

    Note that the redrawSeries method does not do any axes scaling or redraw any other elements on the chart. It is intended to be a lightweight method to redraw just one series. Also note, if no series Index is passed in as the second parameter to drawSeries, it will redraw all series without rescaling or redrawing other plot elements.

    + + ADDED Site/Site_W/jpqplot/examples/shadowTests.html Index: Site/Site_W/jpqplot/examples/shadowTests.html ================================================================== --- Site/Site_W/jpqplot/examples/shadowTests.html +++ Site/Site_W/jpqplot/examples/shadowTests.html @@ -0,0 +1,133 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + ADDED Site/Site_W/jpqplot/examples/singlePoint.html Index: Site/Site_W/jpqplot/examples/singlePoint.html ================================================================== --- Site/Site_W/jpqplot/examples/singlePoint.html +++ Site/Site_W/jpqplot/examples/singlePoint.html @@ -0,0 +1,70 @@ + + + + + + Single Negative Point + + + + + + + + + + + + + + + + + + + + + +
    + + ADDED Site/Site_W/jpqplot/examples/sparkLine.html Index: Site/Site_W/jpqplot/examples/sparkLine.html ================================================================== --- Site/Site_W/jpqplot/examples/sparkLine.html +++ Site/Site_W/jpqplot/examples/sparkLine.html @@ -0,0 +1,48 @@ + + + + + + Sparkline Test + + + + + + + + + + + + + + + + + +
    + + ADDED Site/Site_W/jpqplot/examples/stackedBar2.html Index: Site/Site_W/jpqplot/examples/stackedBar2.html ================================================================== --- Site/Site_W/jpqplot/examples/stackedBar2.html +++ Site/Site_W/jpqplot/examples/stackedBar2.html @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + ADDED Site/Site_W/jpqplot/examples/stackedBar3.html Index: Site/Site_W/jpqplot/examples/stackedBar3.html ================================================================== --- Site/Site_W/jpqplot/examples/stackedBar3.html +++ Site/Site_W/jpqplot/examples/stackedBar3.html @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + ADDED Site/Site_W/jpqplot/examples/stackedBarCategoryVsLinearAxes.html Index: Site/Site_W/jpqplot/examples/stackedBarCategoryVsLinearAxes.html ================================================================== --- Site/Site_W/jpqplot/examples/stackedBarCategoryVsLinearAxes.html +++ Site/Site_W/jpqplot/examples/stackedBarCategoryVsLinearAxes.html @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + ADDED Site/Site_W/jpqplot/examples/stackedCategoryAxis.html Index: Site/Site_W/jpqplot/examples/stackedCategoryAxis.html ================================================================== --- Site/Site_W/jpqplot/examples/stackedCategoryAxis.html +++ Site/Site_W/jpqplot/examples/stackedCategoryAxis.html @@ -0,0 +1,89 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + +
    + + ADDED Site/Site_W/jpqplot/examples/stackedFilledLine.html Index: Site/Site_W/jpqplot/examples/stackedFilledLine.html ================================================================== --- Site/Site_W/jpqplot/examples/stackedFilledLine.html +++ Site/Site_W/jpqplot/examples/stackedFilledLine.html @@ -0,0 +1,77 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + +
    + + ADDED Site/Site_W/jpqplot/examples/stackedLine.html Index: Site/Site_W/jpqplot/examples/stackedLine.html ================================================================== --- Site/Site_W/jpqplot/examples/stackedLine.html +++ Site/Site_W/jpqplot/examples/stackedLine.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + ADDED Site/Site_W/jpqplot/examples/test2.html Index: Site/Site_W/jpqplot/examples/test2.html ================================================================== --- Site/Site_W/jpqplot/examples/test2.html +++ Site/Site_W/jpqplot/examples/test2.html @@ -0,0 +1,64 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + ADDED Site/Site_W/jpqplot/examples/theming.html Index: Site/Site_W/jpqplot/examples/theming.html ================================================================== --- Site/Site_W/jpqplot/examples/theming.html +++ Site/Site_W/jpqplot/examples/theming.html @@ -0,0 +1,483 @@ + + + + + + + + Theming Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    jqPlot has basic theming support for commonly styled atributes of plot elements. Upon creation, each plot will have a "themeEngine" that controls modificaition, adding, removing and activating of plot themes. In addition, each plot will have a "Default" theme which corresponds to the styling of the plot at plot creation.

    + +

    Creation of new themes is easy. A "style" object is created with properties for the various plot elements to be styles. Attached to each of those is an ojbect with the actual styling properties. A simple style object might look like:

    + +
    +    gabe = {
    +        series: [
    +            {color: 'rgba(216, 159, 60, 0.4)'},
    +            {color: 'rgba(159, 216, 60, 0.4)'},
    +            {color: 'rgba(60, 159, 216, 0.4)'},
    +        ],
    +        grid: {
    +            backgroundColor: '#DEA493'
    +        }
    +    }
    +
    + +

    This new style would then be added to the plot's themeEngine as a new theme. it can then be activated by calling the plot's activateTheme method.

    +
    +    plot1b.themeEngine.newTheme('gabe', gabe);
    +    plot1b.activateTheme('gabe');
    +
    + +
    +

    Select Theme for area plot: + +

    + +

    Themes can be reused between plots. Here a style object is created and assigned to two different plots. For convenience, the theme is given the same name when added to each plot's themeEngine. Since each plot keeps it's own copy of the theme, the names do not need to be the same. Also note that themes are added as deep copies by value and not by reference. This avoids strange behavior due to the cascading nature of css related styles.

    + +
    +    temp = {
    +        seriesStyles: {
    +            seriesColors: ['red', 'orange', 'yellow', 'green', 'blue', 'indigo'],
    +            highlightColors: ['lightpink', 'lightsalmon', 'lightyellow', 'lightgreen', 'lightblue', 'mediumslateblue']
    +        },
    +        legend: {
    +            fontSize: '8pt'
    +        },
    +        title: {
    +            fontSize: '18pt'
    +        },
    +        grid: {
    +            backgroundColor: 'rgb(211, 233, 195)'
    +        }
    +    };
    +    
    +    plot3.themeEngine.newTheme('uma', temp);
    +    plot5.themeEngine.newTheme('uma', temp);
    +
    + +

    Select Theme for funnel and pie charts at same time: + +

    + +
    + +

    Select Theme for funnel plot: + +

    + +
    + +

    Select Theme for pie chart: + +

    + +

    There are various was to create and edit themes for a plot. Below are two different methods for creating additional themes for a line plot and adding them to the plots themeEngine. Here the axesStyles property is used to supply styling to all axes at one time. A similar property, seriesStyles, exists for styling all series of a plot at one time. Note, neither of these methods is as straightforward as using the newTheme() method of the plots themeEngine, but are included for illustrative purposes.

    + +
     
    +    e1 = plot1.themeEngine;
    +    brass = e1.copy('Default', 'brass');
    +    brass.title.fontFamily = 'Copperplate, Impact';
    +    brass.grid.backgroundColor = "rgb(216, 198, 114)";
    +    brass.grid.drawGridlines = false;
    +    brass.series[0].lineWidth = 6.5;
    +    brass.series[0].markerOptions.show = false;
    +    brass.axesStyles.label.fontFamily = "Copperplate, 'Copperplate Gothic Light', Impact";
    +    brass.axesStyles.ticks.fontFamily = "Copperplate, 'Copperplate Gothic Light', Impact";
    +    brass.axesStyles.label.fontSize = '14pt';
    +    
    +    temp = {
    +        grid: {
    +            backgroundColor: "#593D2B",
    +            gridLineColor: '#E8E8E8',
    +            gridLineWidth: 3
    +        },
    +        title: {
    +            fontFamily: '"Comic Sans MS", cursive',
    +            fontSize: '18pt',
    +            textColor: '#C7CC4E'
    +        },
    +        seriesStyles: {
    +            color: "#DBBCAF",
    +            lineWidth: 8,
    +            markerOptions: {
    +                show: false
    +            }
    +        },
    +        axes: {
    +            xaxis: {
    +                label: {
    +                    fontFamily: '"Comic Sans MS", cursive',
    +                    textColor: '#C7CC4E'
    +                }
    +            }
    +        }
    +    };
    +    
    +    chocolate = plot1.themeEngine.copy('Default', 'chocolate', temp);
    +
    + +
    + +

    Select theme for line chart: + +

    + +

    The example below shows more extensive use of the various styling options to give the chart a rather ugly and dated appearence. Note that, for bar (and funnel, pie and donut charts), highlightColors can be specified as an array of colors which will be applied to each bar individually, as a single string giving a color to apply to all bars, or as an empty array which will force jqPlot to auto calculate highlight colors based on the current bar color.

    + +

    +    oldstyle = {
    +        title: {
    +            fontFamily: 'Times New Roman',
    +            textColor: 'black'
    +        },
    +        axesStyles: {
    +           borderWidth: 0,
    +           ticks: {
    +               fontSize: '12pt',
    +               fontFamily: 'Times New Roman',
    +               textColor: 'black'
    +           },
    +           label: {
    +               fontFamily: 'Times New Roman',
    +               textColor: 'black'
    +           }
    +        },
    +        grid: {
    +            backgroundColor: 'white',
    +            borderWidth: 0,
    +            gridLineColor: 'black',
    +            gridLineWidth: 2,
    +            borderColor: 'black'
    +        },
    +        series: [
    +            {color: 'red', highlightColors: ['aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime', 'maroon', 'navy', 'olive', 'purple', 'red', 'silver', 'teal', 'white', 'yellow']},
    +            {color: 'green', highlightColors: []},
    +            {color: 'blue', highlightColors: []},
    +            {color: 'yellow', highlightColors: 'rgb(255, 245, 185)'}
    +        ],
    +        legend: {
    +            background: 'white',
    +            textColor: 'black',
    +            fontFamily: 'Times New Roman',
    +            border: '1px solid black'
    +        }
    +    };
    +    
    +    plot2.themeEngine.newTheme('oldstyle', oldstyle);
    +
    + +
    + +

    Select theme for bar chart: + +

    + + + ADDED Site/Site_W/jpqplot/examples/trendlineDragableCustomization.html Index: Site/Site_W/jpqplot/examples/trendlineDragableCustomization.html ================================================================== --- Site/Site_W/jpqplot/examples/trendlineDragableCustomization.html +++ Site/Site_W/jpqplot/examples/trendlineDragableCustomization.html @@ -0,0 +1,79 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + +
    +
    + + ADDED Site/Site_W/jpqplot/examples/verticalLine.html Index: Site/Site_W/jpqplot/examples/verticalLine.html ================================================================== --- Site/Site_W/jpqplot/examples/verticalLine.html +++ Site/Site_W/jpqplot/examples/verticalLine.html @@ -0,0 +1,52 @@ + + + + + + Simple Test + + + + + + + + + + + + + + + + + + +
    + + ADDED Site/Site_W/jpqplot/examples/waterfall.html Index: Site/Site_W/jpqplot/examples/waterfall.html ================================================================== --- Site/Site_W/jpqplot/examples/waterfall.html +++ Site/Site_W/jpqplot/examples/waterfall.html @@ -0,0 +1,135 @@ + + + + + + Waterfall Chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Waterfall chart using default bar colors.

    +
    +
    
    +    

    Waterfall chart using custom colors and "useNegativeColors" set to "false".

    +
    +
    
    +  
    +
    
    ADDED   Site/Site_W/jpqplot/examples/zoom1.html
    Index: Site/Site_W/jpqplot/examples/zoom1.html
    ==================================================================
    --- Site/Site_W/jpqplot/examples/zoom1.html
    +++ Site/Site_W/jpqplot/examples/zoom1.html
    @@ -0,0 +1,125 @@
    +
    +
    +
    +
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +  
    +
    +  
    +  
    +  
    +  
    +  
    +  
    +	
    +	
    +	
    +	
    +		
    +
    +
    +
    +
    +
    + + + + + + ADDED Site/Site_W/jpqplot/examples/zoom2.html Index: Site/Site_W/jpqplot/examples/zoom2.html ================================================================== --- Site/Site_W/jpqplot/examples/zoom2.html +++ Site/Site_W/jpqplot/examples/zoom2.html @@ -0,0 +1,73 @@ + + + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + ADDED Site/Site_W/jpqplot/examples/zoom3.html Index: Site/Site_W/jpqplot/examples/zoom3.html ================================================================== --- Site/Site_W/jpqplot/examples/zoom3.html +++ Site/Site_W/jpqplot/examples/zoom3.html @@ -0,0 +1,69 @@ + + + + + + + Zoom plugin with multiple Y Axes + + + + + + + + + + + + + + + + + + + +

    Click and drag to zoom. Double click on plot or click "Reset Zoom" button to reset zoom.

    +
    +
    + +
    + + ADDED Site/Site_W/jpqplot/examples/zoomOptions.html Index: Site/Site_W/jpqplot/examples/zoomOptions.html ================================================================== --- Site/Site_W/jpqplot/examples/zoomOptions.html +++ Site/Site_W/jpqplot/examples/zoomOptions.html @@ -0,0 +1,101 @@ + + + + + + + Simple Test + + + + + + + + + + + + + + + + + + + + + + + +

    Zooming has been enhanced to maintain plot zoom while the mouse moves over the entire document, not just the plot. Two new options have been added to the cursor plugin to further enhance zooming:

    + +
    +
    constrainOutsideZoom
    +
    True to limit the resulting zoom area to the edges of grid, even if the cursor is outside of the grid. That is, you can't expand the axis ranges by moving the cursor outside of the plot area when this is true. If set to false, you can effectively zoom out by mousing outside of the plot region. Default false.
    +
    showTooltipOutsideZoom
    +
    True to keep showing and updating the tooltip even when the cursor is outside of the plot area. Not applicable if zoomOutsidePlot is false. Default false
    +
    + +

    The fist plot demonstrates the default functionality where you can move the mouse off of the plot while zooming but the actual area zoomed will not extend beyond the axes.

    +
    +
    + +

    The second plot sets constrainOutsideZoom to false, so zooming will not only function when the mouse is outside of the plot, but the zoom range will be extended to the mouse position outside of the grid.

    +
    +
    + +

    The third plot is like the third, but showTooltipOutsideZoom is true and the tooltip is set to follow the mouse, so you have an idea of what your range is while zooming.

    +
    +
    + + ADDED Site/Site_W/jpqplot/examples/zoomProxy.html Index: Site/Site_W/jpqplot/examples/zoomProxy.html ================================================================== --- Site/Site_W/jpqplot/examples/zoomProxy.html +++ Site/Site_W/jpqplot/examples/zoomProxy.html @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + ADDED Site/Site_W/jpqplot/excanvas.js Index: Site/Site_W/jpqplot/excanvas.js ================================================================== --- Site/Site_W/jpqplot/excanvas.js +++ Site/Site_W/jpqplot/excanvas.js @@ -0,0 +1,1416 @@ +// Copyright 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +// Known Issues: +// +// * Patterns only support repeat. +// * Radial gradient are not implemented. The VML version of these look very +// different from the canvas one. +// * Clipping paths are not implemented. +// * Coordsize. The width and height attribute have higher priority than the +// width and height style values which isn't correct. +// * Painting mode isn't implemented. +// * Canvas width/height should is using content-box by default. IE in +// Quirks mode will draw the canvas using border-box. Either change your +// doctype to HTML5 +// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) +// or use Box Sizing Behavior from WebFX +// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) +// * Non uniform scaling does not correctly scale strokes. +// * Optimize. There is always room for speed improvements. + +// Only add this code if we do not already have a canvas implementation +if (!document.createElement('canvas').getContext) { + +(function() { + + // alias some functions to make (compiled) code shorter + var m = Math; + var mr = m.round; + var ms = m.sin; + var mc = m.cos; + var abs = m.abs; + var sqrt = m.sqrt; + + // this is used for sub pixel precision + var Z = 10; + var Z2 = Z / 2; + + var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1]; + + /** + * This funtion is assigned to the elements as element.getContext(). + * @this {HTMLElement} + * @return {CanvasRenderingContext2D_} + */ + function getContext() { + return this.context_ || + (this.context_ = new CanvasRenderingContext2D_(this)); + } + + var slice = Array.prototype.slice; + + /** + * Binds a function to an object. The returned function will always use the + * passed in {@code obj} as {@code this}. + * + * Example: + * + * g = bind(f, obj, a, b) + * g(c, d) // will do f.call(obj, a, b, c, d) + * + * @param {Function} f The function to bind the object to + * @param {Object} obj The object that should act as this when the function + * is called + * @param {*} var_args Rest arguments that will be used as the initial + * arguments when the function is called + * @return {Function} A new function that has bound this + */ + function bind(f, obj, var_args) { + var a = slice.call(arguments, 2); + return function() { + return f.apply(obj, a.concat(slice.call(arguments))); + }; + } + + function encodeHtmlAttribute(s) { + return String(s).replace(/&/g, '&').replace(/"/g, '"'); + } + + function addNamespace(doc, prefix, urn) { + if (!doc.namespaces[prefix]) { + doc.namespaces.add(prefix, urn, '#default#VML'); + } + } + + function addNamespacesAndStylesheet(doc) { + addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml'); + addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office'); + + // Setup default CSS. Only add one style sheet per document + if (!doc.styleSheets['ex_canvas_']) { + var ss = doc.createStyleSheet(); + ss.owningElement.id = 'ex_canvas_'; + ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + + // default size is 300x150 in Gecko and Opera + 'text-align:left;width:300px;height:150px}'; + } + } + + // Add namespaces and stylesheet at startup. + addNamespacesAndStylesheet(document); + + var G_vmlCanvasManager_ = { + init: function(opt_doc) { + var doc = opt_doc || document; + // Create a dummy element so that IE will allow canvas elements to be + // recognized. + doc.createElement('canvas'); + doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); + }, + + init_: function(doc) { + // find all canvas elements + var els = doc.getElementsByTagName('canvas'); + for (var i = 0; i < els.length; i++) { + this.initElement(els[i]); + } + }, + + /** + * Public initializes a canvas element so that it can be used as canvas + * element from now on. This is called automatically before the page is + * loaded but if you are creating elements using createElement you need to + * make sure this is called on the element. + * @param {HTMLElement} el The canvas element to initialize. + * @return {HTMLElement} the element that was created. + */ + initElement: function(el) { + if (!el.getContext) { + el.getContext = getContext; + + // Add namespaces and stylesheet to document of the element. + addNamespacesAndStylesheet(el.ownerDocument); + + // Remove fallback content. There is no way to hide text nodes so we + // just remove all childNodes. We could hide all elements and remove + // text nodes but who really cares about the fallback content. + el.innerHTML = ''; + + // do not use inline function because that will leak memory + el.attachEvent('onpropertychange', onPropertyChange); + el.attachEvent('onresize', onResize); + + var attrs = el.attributes; + if (attrs.width && attrs.width.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setWidth_(attrs.width.nodeValue); + el.style.width = attrs.width.nodeValue + 'px'; + } else { + el.width = el.clientWidth; + } + if (attrs.height && attrs.height.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setHeight_(attrs.height.nodeValue); + el.style.height = attrs.height.nodeValue + 'px'; + } else { + el.height = el.clientHeight; + } + //el.getContext().setCoordsize_() + } + return el; + } + }; + + function onPropertyChange(e) { + var el = e.srcElement; + + switch (e.propertyName) { + case 'width': + el.getContext().clearRect(); + el.style.width = el.attributes.width.nodeValue + 'px'; + // In IE8 this does not trigger onresize. + el.firstChild.style.width = el.clientWidth + 'px'; + break; + case 'height': + el.getContext().clearRect(); + el.style.height = el.attributes.height.nodeValue + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + break; + } + } + + function onResize(e) { + var el = e.srcElement; + if (el.firstChild) { + el.firstChild.style.width = el.clientWidth + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + } + } + + G_vmlCanvasManager_.init(); + + // precompute "00" to "FF" + var decToHex = []; + for (var i = 0; i < 16; i++) { + for (var j = 0; j < 16; j++) { + decToHex[i * 16 + j] = i.toString(16) + j.toString(16); + } + } + + function createMatrixIdentity() { + return [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1] + ]; + } + + function matrixMultiply(m1, m2) { + var result = createMatrixIdentity(); + + for (var x = 0; x < 3; x++) { + for (var y = 0; y < 3; y++) { + var sum = 0; + + for (var z = 0; z < 3; z++) { + sum += m1[x][z] * m2[z][y]; + } + + result[x][y] = sum; + } + } + return result; + } + + function copyState(o1, o2) { + o2.fillStyle = o1.fillStyle; + o2.lineCap = o1.lineCap; + o2.lineJoin = o1.lineJoin; + o2.lineWidth = o1.lineWidth; + o2.miterLimit = o1.miterLimit; + o2.shadowBlur = o1.shadowBlur; + o2.shadowColor = o1.shadowColor; + o2.shadowOffsetX = o1.shadowOffsetX; + o2.shadowOffsetY = o1.shadowOffsetY; + o2.strokeStyle = o1.strokeStyle; + o2.globalAlpha = o1.globalAlpha; + o2.font = o1.font; + o2.textAlign = o1.textAlign; + o2.textBaseline = o1.textBaseline; + o2.arcScaleX_ = o1.arcScaleX_; + o2.arcScaleY_ = o1.arcScaleY_; + o2.lineScale_ = o1.lineScale_; + } + + var colorData = { + aliceblue: '#F0F8FF', + antiquewhite: '#FAEBD7', + aquamarine: '#7FFFD4', + azure: '#F0FFFF', + beige: '#F5F5DC', + bisque: '#FFE4C4', + black: '#000000', + blanchedalmond: '#FFEBCD', + blueviolet: '#8A2BE2', + brown: '#A52A2A', + burlywood: '#DEB887', + cadetblue: '#5F9EA0', + chartreuse: '#7FFF00', + chocolate: '#D2691E', + coral: '#FF7F50', + cornflowerblue: '#6495ED', + cornsilk: '#FFF8DC', + crimson: '#DC143C', + cyan: '#00FFFF', + darkblue: '#00008B', + darkcyan: '#008B8B', + darkgoldenrod: '#B8860B', + darkgray: '#A9A9A9', + darkgreen: '#006400', + darkgrey: '#A9A9A9', + darkkhaki: '#BDB76B', + darkmagenta: '#8B008B', + darkolivegreen: '#556B2F', + darkorange: '#FF8C00', + darkorchid: '#9932CC', + darkred: '#8B0000', + darksalmon: '#E9967A', + darkseagreen: '#8FBC8F', + darkslateblue: '#483D8B', + darkslategray: '#2F4F4F', + darkslategrey: '#2F4F4F', + darkturquoise: '#00CED1', + darkviolet: '#9400D3', + deeppink: '#FF1493', + deepskyblue: '#00BFFF', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1E90FF', + firebrick: '#B22222', + floralwhite: '#FFFAF0', + forestgreen: '#228B22', + gainsboro: '#DCDCDC', + ghostwhite: '#F8F8FF', + gold: '#FFD700', + goldenrod: '#DAA520', + grey: '#808080', + greenyellow: '#ADFF2F', + honeydew: '#F0FFF0', + hotpink: '#FF69B4', + indianred: '#CD5C5C', + indigo: '#4B0082', + ivory: '#FFFFF0', + khaki: '#F0E68C', + lavender: '#E6E6FA', + lavenderblush: '#FFF0F5', + lawngreen: '#7CFC00', + lemonchiffon: '#FFFACD', + lightblue: '#ADD8E6', + lightcoral: '#F08080', + lightcyan: '#E0FFFF', + lightgoldenrodyellow: '#FAFAD2', + lightgreen: '#90EE90', + lightgrey: '#D3D3D3', + lightpink: '#FFB6C1', + lightsalmon: '#FFA07A', + lightseagreen: '#20B2AA', + lightskyblue: '#87CEFA', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#B0C4DE', + lightyellow: '#FFFFE0', + limegreen: '#32CD32', + linen: '#FAF0E6', + magenta: '#FF00FF', + mediumaquamarine: '#66CDAA', + mediumblue: '#0000CD', + mediumorchid: '#BA55D3', + mediumpurple: '#9370DB', + mediumseagreen: '#3CB371', + mediumslateblue: '#7B68EE', + mediumspringgreen: '#00FA9A', + mediumturquoise: '#48D1CC', + mediumvioletred: '#C71585', + midnightblue: '#191970', + mintcream: '#F5FFFA', + mistyrose: '#FFE4E1', + moccasin: '#FFE4B5', + navajowhite: '#FFDEAD', + oldlace: '#FDF5E6', + olivedrab: '#6B8E23', + orange: '#FFA500', + orangered: '#FF4500', + orchid: '#DA70D6', + palegoldenrod: '#EEE8AA', + palegreen: '#98FB98', + paleturquoise: '#AFEEEE', + palevioletred: '#DB7093', + papayawhip: '#FFEFD5', + peachpuff: '#FFDAB9', + peru: '#CD853F', + pink: '#FFC0CB', + plum: '#DDA0DD', + powderblue: '#B0E0E6', + rosybrown: '#BC8F8F', + royalblue: '#4169E1', + saddlebrown: '#8B4513', + salmon: '#FA8072', + sandybrown: '#F4A460', + seagreen: '#2E8B57', + seashell: '#FFF5EE', + sienna: '#A0522D', + skyblue: '#87CEEB', + slateblue: '#6A5ACD', + slategray: '#708090', + slategrey: '#708090', + snow: '#FFFAFA', + springgreen: '#00FF7F', + steelblue: '#4682B4', + tan: '#D2B48C', + thistle: '#D8BFD8', + tomato: '#FF6347', + turquoise: '#40E0D0', + violet: '#EE82EE', + wheat: '#F5DEB3', + whitesmoke: '#F5F5F5', + yellowgreen: '#9ACD32' + }; + + + function getRgbHslContent(styleString) { + var start = styleString.indexOf('(', 3); + var end = styleString.indexOf(')', start + 1); + var parts = styleString.substring(start + 1, end).split(','); + // add alpha if needed + if (parts.length != 4 || styleString.charAt(3) != 'a') { + parts[3] = 1; + } + return parts; + } + + function percent(s) { + return parseFloat(s) / 100; + } + + function clamp(v, min, max) { + return Math.min(max, Math.max(min, v)); + } + + function hslToRgb(parts){ + var r, g, b, h, s, l; + h = parseFloat(parts[0]) / 360 % 360; + if (h < 0) + h++; + s = clamp(percent(parts[1]), 0, 1); + l = clamp(percent(parts[2]), 0, 1); + if (s == 0) { + r = g = b = l; // achromatic + } else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hueToRgb(p, q, h + 1 / 3); + g = hueToRgb(p, q, h); + b = hueToRgb(p, q, h - 1 / 3); + } + + return '#' + decToHex[Math.floor(r * 255)] + + decToHex[Math.floor(g * 255)] + + decToHex[Math.floor(b * 255)]; + } + + function hueToRgb(m1, m2, h) { + if (h < 0) + h++; + if (h > 1) + h--; + + if (6 * h < 1) + return m1 + (m2 - m1) * 6 * h; + else if (2 * h < 1) + return m2; + else if (3 * h < 2) + return m1 + (m2 - m1) * (2 / 3 - h) * 6; + else + return m1; + } + + var processStyleCache = {}; + + function processStyle(styleString) { + if (styleString in processStyleCache) { + return processStyleCache[styleString]; + } + + var str, alpha = 1; + + styleString = String(styleString); + if (styleString.charAt(0) == '#') { + str = styleString; + } else if (/^rgb/.test(styleString)) { + var parts = getRgbHslContent(styleString); + var str = '#', n; + for (var i = 0; i < 3; i++) { + if (parts[i].indexOf('%') != -1) { + n = Math.floor(percent(parts[i]) * 255); + } else { + n = +parts[i]; + } + str += decToHex[clamp(n, 0, 255)]; + } + alpha = +parts[3]; + } else if (/^hsl/.test(styleString)) { + var parts = getRgbHslContent(styleString); + str = hslToRgb(parts); + alpha = parts[3]; + } else { + str = colorData[styleString] || styleString; + } + return processStyleCache[styleString] = {color: str, alpha: alpha}; + } + + var DEFAULT_STYLE = { + style: 'normal', + variant: 'normal', + weight: 'normal', + size: 10, + family: 'sans-serif' + }; + + // Internal text style cache + var fontStyleCache = {}; + + function processFontStyle(styleString) { + if (fontStyleCache[styleString]) { + return fontStyleCache[styleString]; + } + + var el = document.createElement('div'); + var style = el.style; + try { + style.font = styleString; + } catch (ex) { + // Ignore failures to set to invalid font. + } + + return fontStyleCache[styleString] = { + style: style.fontStyle || DEFAULT_STYLE.style, + variant: style.fontVariant || DEFAULT_STYLE.variant, + weight: style.fontWeight || DEFAULT_STYLE.weight, + size: style.fontSize || DEFAULT_STYLE.size, + family: style.fontFamily || DEFAULT_STYLE.family + }; + } + + function getComputedStyle(style, element) { + var computedStyle = {}; + + for (var p in style) { + computedStyle[p] = style[p]; + } + + // Compute the size + var canvasFontSize = parseFloat(element.currentStyle.fontSize), + fontSize = parseFloat(style.size); + + if (typeof style.size == 'number') { + computedStyle.size = style.size; + } else if (style.size.indexOf('px') != -1) { + computedStyle.size = fontSize; + } else if (style.size.indexOf('em') != -1) { + computedStyle.size = canvasFontSize * fontSize; + } else if(style.size.indexOf('%') != -1) { + computedStyle.size = (canvasFontSize / 100) * fontSize; + } else if (style.size.indexOf('pt') != -1) { + computedStyle.size = fontSize / .75; + } else { + computedStyle.size = canvasFontSize; + } + + // Different scaling between normal text and VML text. This was found using + // trial and error to get the same size as non VML text. + computedStyle.size *= 0.981; + + return computedStyle; + } + + function buildStyle(style) { + return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + + style.size + 'px ' + style.family; + } + + var lineCapMap = { + 'butt': 'flat', + 'round': 'round' + }; + + function processLineCap(lineCap) { + return lineCapMap[lineCap] || 'square'; + } + + /** + * This class implements CanvasRenderingContext2D interface as described by + * the WHATWG. + * @param {HTMLElement} canvasElement The element that the 2D context should + * be associated with + */ + function CanvasRenderingContext2D_(canvasElement) { + this.m_ = createMatrixIdentity(); + + this.mStack_ = []; + this.aStack_ = []; + this.currentPath_ = []; + + // Canvas context properties + this.strokeStyle = '#000'; + this.fillStyle = '#000'; + + this.lineWidth = 1; + this.lineJoin = 'miter'; + this.lineCap = 'butt'; + this.miterLimit = Z * 1; + this.globalAlpha = 1; + this.font = '10px sans-serif'; + this.textAlign = 'left'; + this.textBaseline = 'alphabetic'; + this.canvas = canvasElement; + + var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' + + canvasElement.clientHeight + 'px;overflow:hidden;position:absolute'; + var el = canvasElement.ownerDocument.createElement('div'); + el.style.cssText = cssText; + canvasElement.appendChild(el); + + var overlayEl = el.cloneNode(false); + // Use a non transparent background. + overlayEl.style.backgroundColor = 'red'; + overlayEl.style.filter = 'alpha(opacity=0)'; + canvasElement.appendChild(overlayEl); + + this.element_ = el; + this.arcScaleX_ = 1; + this.arcScaleY_ = 1; + this.lineScale_ = 1; + } + + var contextPrototype = CanvasRenderingContext2D_.prototype; + contextPrototype.clearRect = function() { + if (this.textMeasureEl_) { + this.textMeasureEl_.removeNode(true); + this.textMeasureEl_ = null; + } + this.element_.innerHTML = ''; + }; + + contextPrototype.beginPath = function() { + // TODO: Branch current matrix so that save/restore has no effect + // as per safari docs. + this.currentPath_ = []; + }; + + contextPrototype.moveTo = function(aX, aY) { + var p = getCoords(this, aX, aY); + this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.lineTo = function(aX, aY) { + var p = getCoords(this, aX, aY); + this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); + + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, + aCP2x, aCP2y, + aX, aY) { + var p = getCoords(this, aX, aY); + var cp1 = getCoords(this, aCP1x, aCP1y); + var cp2 = getCoords(this, aCP2x, aCP2y); + bezierCurveTo(this, cp1, cp2, p); + }; + + // Helper function that takes the already fixed cordinates. + function bezierCurveTo(self, cp1, cp2, p) { + self.currentPath_.push({ + type: 'bezierCurveTo', + cp1x: cp1.x, + cp1y: cp1.y, + cp2x: cp2.x, + cp2y: cp2.y, + x: p.x, + y: p.y + }); + self.currentX_ = p.x; + self.currentY_ = p.y; + } + + contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { + // the following is lifted almost directly from + // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes + + var cp = getCoords(this, aCPx, aCPy); + var p = getCoords(this, aX, aY); + + var cp1 = { + x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), + y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) + }; + var cp2 = { + x: cp1.x + (p.x - this.currentX_) / 3.0, + y: cp1.y + (p.y - this.currentY_) / 3.0 + }; + + bezierCurveTo(this, cp1, cp2, p); + }; + + contextPrototype.arc = function(aX, aY, aRadius, + aStartAngle, aEndAngle, aClockwise) { + aRadius *= Z; + var arcType = aClockwise ? 'at' : 'wa'; + + var xStart = aX + mc(aStartAngle) * aRadius - Z2; + var yStart = aY + ms(aStartAngle) * aRadius - Z2; + + var xEnd = aX + mc(aEndAngle) * aRadius - Z2; + var yEnd = aY + ms(aEndAngle) * aRadius - Z2; + + // IE won't render arches drawn counter clockwise if xStart == xEnd. + if (xStart == xEnd && !aClockwise) { + xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something + // that can be represented in binary + } + + var p = getCoords(this, aX, aY); + var pStart = getCoords(this, xStart, yStart); + var pEnd = getCoords(this, xEnd, yEnd); + + this.currentPath_.push({type: arcType, + x: p.x, + y: p.y, + radius: aRadius, + xStart: pStart.x, + yStart: pStart.y, + xEnd: pEnd.x, + yEnd: pEnd.y}); + + }; + + contextPrototype.rect = function(aX, aY, aWidth, aHeight) { + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + }; + + contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.stroke(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.fill(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { + var gradient = new CanvasGradient_('gradient'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + return gradient; + }; + + contextPrototype.createRadialGradient = function(aX0, aY0, aR0, + aX1, aY1, aR1) { + var gradient = new CanvasGradient_('gradientradial'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.r0_ = aR0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + gradient.r1_ = aR1; + return gradient; + }; + + contextPrototype.drawImage = function(image, var_args) { + var dx, dy, dw, dh, sx, sy, sw, sh; + + // to find the original width we overide the width and height + var oldRuntimeWidth = image.runtimeStyle.width; + var oldRuntimeHeight = image.runtimeStyle.height; + image.runtimeStyle.width = 'auto'; + image.runtimeStyle.height = 'auto'; + + // get the original size + var w = image.width; + var h = image.height; + + // and remove overides + image.runtimeStyle.width = oldRuntimeWidth; + image.runtimeStyle.height = oldRuntimeHeight; + + if (arguments.length == 3) { + dx = arguments[1]; + dy = arguments[2]; + sx = sy = 0; + sw = dw = w; + sh = dh = h; + } else if (arguments.length == 5) { + dx = arguments[1]; + dy = arguments[2]; + dw = arguments[3]; + dh = arguments[4]; + sx = sy = 0; + sw = w; + sh = h; + } else if (arguments.length == 9) { + sx = arguments[1]; + sy = arguments[2]; + sw = arguments[3]; + sh = arguments[4]; + dx = arguments[5]; + dy = arguments[6]; + dw = arguments[7]; + dh = arguments[8]; + } else { + throw Error('Invalid number of arguments'); + } + + var d = getCoords(this, dx, dy); + + var w2 = sw / 2; + var h2 = sh / 2; + + var vmlStr = []; + + var W = 10; + var H = 10; + + // For some reason that I've now forgotten, using divs didn't work + vmlStr.push(' ' , + '', + ''); + + this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); + }; + + contextPrototype.stroke = function(aFill) { + var lineStr = []; + var lineOpen = false; + + var W = 10; + var H = 10; + + lineStr.push(''); + + if (!aFill) { + appendStroke(this, lineStr); + } else { + appendFill(this, lineStr, min, max); + } + + lineStr.push(''); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + }; + + function appendStroke(ctx, lineStr) { + var a = processStyle(ctx.strokeStyle); + var color = a.color; + var opacity = a.alpha * ctx.globalAlpha; + var lineWidth = ctx.lineScale_ * ctx.lineWidth; + + // VML cannot correctly render a line if the width is less than 1px. + // In that case, we dilute the color to make the line look thinner. + if (lineWidth < 1) { + opacity *= lineWidth; + } + + lineStr.push( + '' + ); + } + + function appendFill(ctx, lineStr, min, max) { + var fillStyle = ctx.fillStyle; + var arcScaleX = ctx.arcScaleX_; + var arcScaleY = ctx.arcScaleY_; + var width = max.x - min.x; + var height = max.y - min.y; + if (fillStyle instanceof CanvasGradient_) { + // TODO: Gradients transformed with the transformation matrix. + var angle = 0; + var focus = {x: 0, y: 0}; + + // additional offset + var shift = 0; + // scale factor for offset + var expansion = 1; + + if (fillStyle.type_ == 'gradient') { + var x0 = fillStyle.x0_ / arcScaleX; + var y0 = fillStyle.y0_ / arcScaleY; + var x1 = fillStyle.x1_ / arcScaleX; + var y1 = fillStyle.y1_ / arcScaleY; + var p0 = getCoords(ctx, x0, y0); + var p1 = getCoords(ctx, x1, y1); + var dx = p1.x - p0.x; + var dy = p1.y - p0.y; + angle = Math.atan2(dx, dy) * 180 / Math.PI; + + // The angle should be a non-negative number. + if (angle < 0) { + angle += 360; + } + + // Very small angles produce an unexpected result because they are + // converted to a scientific notation string. + if (angle < 1e-6) { + angle = 0; + } + } else { + var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_); + focus = { + x: (p0.x - min.x) / width, + y: (p0.y - min.y) / height + }; + + width /= arcScaleX * Z; + height /= arcScaleY * Z; + var dimension = m.max(width, height); + shift = 2 * fillStyle.r0_ / dimension; + expansion = 2 * fillStyle.r1_ / dimension - shift; + } + + // We need to sort the color stops in ascending order by offset, + // otherwise IE won't interpret it correctly. + var stops = fillStyle.colors_; + stops.sort(function(cs1, cs2) { + return cs1.offset - cs2.offset; + }); + + var length = stops.length; + var color1 = stops[0].color; + var color2 = stops[length - 1].color; + var opacity1 = stops[0].alpha * ctx.globalAlpha; + var opacity2 = stops[length - 1].alpha * ctx.globalAlpha; + + var colors = []; + for (var i = 0; i < length; i++) { + var stop = stops[i]; + colors.push(stop.offset * expansion + shift + ' ' + stop.color); + } + + // When colors attribute is used, the meanings of opacity and o:opacity2 + // are reversed. + lineStr.push(''); + } else if (fillStyle instanceof CanvasPattern_) { + if (width && height) { + var deltaLeft = -min.x; + var deltaTop = -min.y; + lineStr.push(''); + } + } else { + var a = processStyle(ctx.fillStyle); + var color = a.color; + var opacity = a.alpha * ctx.globalAlpha; + lineStr.push(''); + } + } + + contextPrototype.fill = function() { + this.stroke(true); + }; + + contextPrototype.closePath = function() { + this.currentPath_.push({type: 'close'}); + }; + + function getCoords(ctx, aX, aY) { + var m = ctx.m_; + return { + x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, + y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 + }; + }; + + contextPrototype.save = function() { + var o = {}; + copyState(this, o); + this.aStack_.push(o); + this.mStack_.push(this.m_); + this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); + }; + + contextPrototype.restore = function() { + if (this.aStack_.length) { + copyState(this.aStack_.pop(), this); + this.m_ = this.mStack_.pop(); + } + }; + + function matrixIsFinite(m) { + return isFinite(m[0][0]) && isFinite(m[0][1]) && + isFinite(m[1][0]) && isFinite(m[1][1]) && + isFinite(m[2][0]) && isFinite(m[2][1]); + } + + function setM(ctx, m, updateLineScale) { + if (!matrixIsFinite(m)) { + return; + } + ctx.m_ = m; + + if (updateLineScale) { + // Get the line scale. + // Determinant of this.m_ means how much the area is enlarged by the + // transformation. So its square root can be used as a scale factor + // for width. + var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; + ctx.lineScale_ = sqrt(abs(det)); + } + } + + contextPrototype.translate = function(aX, aY) { + var m1 = [ + [1, 0, 0], + [0, 1, 0], + [aX, aY, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.rotate = function(aRot) { + var c = mc(aRot); + var s = ms(aRot); + + var m1 = [ + [c, s, 0], + [-s, c, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.scale = function(aX, aY) { + this.arcScaleX_ *= aX; + this.arcScaleY_ *= aY; + var m1 = [ + [aX, 0, 0], + [0, aY, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { + var m1 = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { + var m = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, m, true); + }; + + /** + * The text drawing function. + * The maxWidth argument isn't taken in account, since no browser supports + * it yet. + */ + contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) { + var m = this.m_, + delta = 1000, + left = 0, + right = delta, + offset = {x: 0, y: 0}, + lineStr = []; + + var fontStyle = getComputedStyle(processFontStyle(this.font), + this.element_); + + var fontStyleString = buildStyle(fontStyle); + + var elementStyle = this.element_.currentStyle; + var textAlign = this.textAlign.toLowerCase(); + switch (textAlign) { + case 'left': + case 'center': + case 'right': + break; + case 'end': + textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left'; + break; + case 'start': + textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left'; + break; + default: + textAlign = 'left'; + } + + // 1.75 is an arbitrary number, as there is no info about the text baseline + switch (this.textBaseline) { + case 'hanging': + case 'top': + offset.y = fontStyle.size / 1.75; + break; + case 'middle': + break; + default: + case null: + case 'alphabetic': + case 'ideographic': + case 'bottom': + offset.y = -fontStyle.size / 2.25; + break; + } + + switch(textAlign) { + case 'right': + left = delta; + right = 0.05; + break; + case 'center': + left = right = delta / 2; + break; + } + + var d = getCoords(this, x + offset.x, y + offset.y); + + lineStr.push(''); + + if (stroke) { + appendStroke(this, lineStr); + } else { + // TODO: Fix the min and max params. + appendFill(this, lineStr, {x: -left, y: 0}, + {x: right, y: fontStyle.size}); + } + + var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + + m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0'; + + var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z); + + lineStr.push('', + '', + ''); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + }; + + contextPrototype.fillText = function(text, x, y, maxWidth) { + this.drawText_(text, x, y, maxWidth, false); + }; + + contextPrototype.strokeText = function(text, x, y, maxWidth) { + this.drawText_(text, x, y, maxWidth, true); + }; + + contextPrototype.measureText = function(text) { + if (!this.textMeasureEl_) { + var s = ''; + this.element_.insertAdjacentHTML('beforeEnd', s); + this.textMeasureEl_ = this.element_.lastChild; + } + var doc = this.element_.ownerDocument; + this.textMeasureEl_.innerHTML = ''; + this.textMeasureEl_.style.font = this.font; + // Don't use innerHTML or innerText because they allow markup/whitespace. + this.textMeasureEl_.appendChild(doc.createTextNode(text)); + return {width: this.textMeasureEl_.offsetWidth}; + }; + + /******** STUBS ********/ + contextPrototype.clip = function() { + // TODO: Implement + }; + + contextPrototype.arcTo = function() { + // TODO: Implement + }; + + contextPrototype.createPattern = function(image, repetition) { + return new CanvasPattern_(image, repetition); + }; + + // Gradient / Pattern Stubs + function CanvasGradient_(aType) { + this.type_ = aType; + this.x0_ = 0; + this.y0_ = 0; + this.r0_ = 0; + this.x1_ = 0; + this.y1_ = 0; + this.r1_ = 0; + this.colors_ = []; + } + + CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { + aColor = processStyle(aColor); + this.colors_.push({offset: aOffset, + color: aColor.color, + alpha: aColor.alpha}); + }; + + function CanvasPattern_(image, repetition) { + assertImageIsValid(image); + switch (repetition) { + case 'repeat': + case null: + case '': + this.repetition_ = 'repeat'; + break + case 'repeat-x': + case 'repeat-y': + case 'no-repeat': + this.repetition_ = repetition; + break; + default: + throwException('SYNTAX_ERR'); + } + + this.src_ = image.src; + this.width_ = image.width; + this.height_ = image.height; + } + + function throwException(s) { + throw new DOMException_(s); + } + + function assertImageIsValid(img) { + if (!img || img.nodeType != 1 || img.tagName != 'IMG') { + throwException('TYPE_MISMATCH_ERR'); + } + if (img.readyState != 'complete') { + throwException('INVALID_STATE_ERR'); + } + } + + function DOMException_(s) { + this.code = this[s]; + this.message = s +': DOM Exception ' + this.code; + } + var p = DOMException_.prototype = new Error; + p.INDEX_SIZE_ERR = 1; + p.DOMSTRING_SIZE_ERR = 2; + p.HIERARCHY_REQUEST_ERR = 3; + p.WRONG_DOCUMENT_ERR = 4; + p.INVALID_CHARACTER_ERR = 5; + p.NO_DATA_ALLOWED_ERR = 6; + p.NO_MODIFICATION_ALLOWED_ERR = 7; + p.NOT_FOUND_ERR = 8; + p.NOT_SUPPORTED_ERR = 9; + p.INUSE_ATTRIBUTE_ERR = 10; + p.INVALID_STATE_ERR = 11; + p.SYNTAX_ERR = 12; + p.INVALID_MODIFICATION_ERR = 13; + p.NAMESPACE_ERR = 14; + p.INVALID_ACCESS_ERR = 15; + p.VALIDATION_ERR = 16; + p.TYPE_MISMATCH_ERR = 17; + + // set up externs + G_vmlCanvasManager = G_vmlCanvasManager_; + CanvasRenderingContext2D = CanvasRenderingContext2D_; + CanvasGradient = CanvasGradient_; + CanvasPattern = CanvasPattern_; + DOMException = DOMException_; +})(); + +} // if ADDED Site/Site_W/jpqplot/excanvas.min.js Index: Site/Site_W/jpqplot/excanvas.min.js ================================================================== --- Site/Site_W/jpqplot/excanvas.min.js +++ Site/Site_W/jpqplot/excanvas.min.js @@ -0,0 +1,35 @@ +document.createElement("canvas").getContext||function(){function Z(){return this.context_||(this.context_=new C(this))}function $(a,b){var c=P.call(arguments,2);return function(){return a.apply(b,c.concat(P.call(arguments)))}}function Q(a){return String(a).replace(/&/g,"&").replace(/"/g,""")}function R(a,b,c){a.namespaces[b]||a.namespaces.add(b,c,"#default#VML")}function S(a){R(a,"g_vml_","urn:schemas-microsoft-com:vml");R(a,"g_o_","urn:schemas-microsoft-com:office:office");if(!a.styleSheets.ex_canvas_){a= +a.createStyleSheet();a.owningElement.id="ex_canvas_";a.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}function aa(a){var b=a.srcElement;switch(a.propertyName){case "width":b.getContext().clearRect();b.style.width=b.attributes.width.nodeValue+"px";b.firstChild.style.width=b.clientWidth+"px";break;case "height":b.getContext().clearRect();b.style.height=b.attributes.height.nodeValue+"px";b.firstChild.style.height=b.clientHeight+"px";break}}function ba(a){a= +a.srcElement;if(a.firstChild){a.firstChild.style.width=a.clientWidth+"px";a.firstChild.style.height=a.clientHeight+"px"}}function D(){return[[1,0,0],[0,1,0],[0,0,1]]}function u(a,b){for(var c=D(),d=0;d<3;d++)for(var e=0;e<3;e++){for(var f=0,h=0;h<3;h++)f+=a[d][h]*b[h][e];c[d][e]=f}return c}function T(a,b){b.fillStyle=a.fillStyle;b.lineCap=a.lineCap;b.lineJoin=a.lineJoin;b.lineWidth=a.lineWidth;b.miterLimit=a.miterLimit;b.shadowBlur=a.shadowBlur;b.shadowColor=a.shadowColor;b.shadowOffsetX=a.shadowOffsetX; +b.shadowOffsetY=a.shadowOffsetY;b.strokeStyle=a.strokeStyle;b.globalAlpha=a.globalAlpha;b.font=a.font;b.textAlign=a.textAlign;b.textBaseline=a.textBaseline;b.arcScaleX_=a.arcScaleX_;b.arcScaleY_=a.arcScaleY_;b.lineScale_=a.lineScale_}function U(a){var b=a.indexOf("(",3),c=a.indexOf(")",b+1);b=a.substring(b+1,c).split(",");if(b.length!=4||a.charAt(3)!="a")b[3]=1;return b}function E(a){return parseFloat(a)/100}function F(a,b,c){return Math.min(c,Math.max(b,a))}function ca(a){var b,c;c=parseFloat(a[0])/ +360%360;c<0&&c++;b=F(E(a[1]),0,1);a=F(E(a[2]),0,1);if(b==0)b=a=c=a;else{var d=a<0.5?a*(1+b):a+b-a*b,e=2*a-d;b=G(e,d,c+1/3);a=G(e,d,c);c=G(e,d,c-1/3)}return"#"+v[Math.floor(b*255)]+v[Math.floor(a*255)]+v[Math.floor(c*255)]}function G(a,b,c){c<0&&c++;c>1&&c--;return 6*c<1?a+(b-a)*6*c:2*c<1?b:3*c<2?a+(b-a)*(2/3-c)*6:a}function H(a){if(a in I)return I[a];var b,c=1;a=String(a);if(a.charAt(0)=="#")b=a;else if(/^rgb/.test(a)){c=U(a);b="#";for(var d,e=0;e<3;e++){d=c[e].indexOf("%")!=-1?Math.floor(E(c[e])* +255):+c[e];b+=v[F(d,0,255)]}c=+c[3]}else if(/^hsl/.test(a)){c=U(a);b=ca(c);c=c[3]}else b=da[a]||a;return I[a]={color:b,alpha:c}}function ea(a){if(J[a])return J[a];var b=document.createElement("div").style;try{b.font=a}catch(c){}return J[a]={style:b.fontStyle||w.style,variant:b.fontVariant||w.variant,weight:b.fontWeight||w.weight,size:b.fontSize||w.size,family:b.fontFamily||w.family}}function fa(a,b){var c={};for(var d in a)c[d]=a[d];b=parseFloat(b.currentStyle.fontSize);d=parseFloat(a.size);c.size= +typeof a.size=="number"?a.size:a.size.indexOf("px")!=-1?d:a.size.indexOf("em")!=-1?b*d:a.size.indexOf("%")!=-1?b/100*d:a.size.indexOf("pt")!=-1?d/0.75:b;c.size*=0.981;return c}function ga(a){return a.style+" "+a.variant+" "+a.weight+" "+a.size+"px "+a.family}function ha(a){return ia[a]||"square"}function C(a){this.m_=D();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=l*1;this.globalAlpha= +1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=a;var b="width:"+a.clientWidth+"px;height:"+a.clientHeight+"px;overflow:hidden;position:absolute",c=a.ownerDocument.createElement("div");c.style.cssText=b;a.appendChild(c);b=c.cloneNode(false);b.style.backgroundColor="red";b.style.filter="alpha(opacity=0)";a.appendChild(b);this.element_=c;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}function V(a,b,c,d){a.currentPath_.push({type:"bezierCurveTo",cp1x:b.x, +cp1y:b.y,cp2x:c.x,cp2y:c.y,x:d.x,y:d.y});a.currentX_=d.x;a.currentY_=d.y}function W(a,b){var c=H(a.strokeStyle),d=c.color;c=c.alpha*a.globalAlpha;var e=a.lineScale_*a.lineWidth;if(e<1)c*=e;b.push("')}function X(a,b,c,d){var e=a.fillStyle,f=a.arcScaleX_,h=a.arcScaleY_,j=d.x-c.x,m=d.y-c.y;if(e instanceof x){var k=0;d={x:0,y:0};var q=0, +o=1;if(e.type_=="gradient"){k=e.x1_/f;c=e.y1_/h;var n=p(a,e.x0_/f,e.y0_/h);k=p(a,k,c);k=Math.atan2(k.x-n.x,k.y-n.y)*180/Math.PI;if(k<0)k+=360;if(k<1.0E-6)k=0}else{n=p(a,e.x0_,e.y0_);d={x:(n.x-c.x)/j,y:(n.y-c.y)/m};j/=f*l;m/=h*l;o=r.max(j,m);q=2*e.r0_/o;o=2*e.r1_/o-q}f=e.colors_;f.sort(function(A,ja){return A.offset-ja.offset});h=f.length;n=f[0].color;c=f[h-1].color;j=f[0].alpha*a.globalAlpha;a=f[h-1].alpha*a.globalAlpha;m=[];for(var s=0;s')}else if(e instanceof K)j&&m&&b.push("');else{e=H(a.fillStyle);b.push('')}}function p(a,b,c){a=a.m_;return{x:l*(b*a[0][0]+c*a[1][0]+ +a[2][0])-t,y:l*(b*a[0][1]+c*a[1][1]+a[2][1])-t}}function ka(a){return isFinite(a[0][0])&&isFinite(a[0][1])&&isFinite(a[1][0])&&isFinite(a[1][1])&&isFinite(a[2][0])&&isFinite(a[2][1])}function z(a,b,c){if(ka(b)){a.m_=b;if(c)a.lineScale_=la(ma(b[0][0]*b[1][1]-b[0][1]*b[1][0]))}}function x(a){this.type_=a;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}function K(a,b){na(a);switch(b){case "repeat":case null:case "":this.repetition_="repeat";break;case "repeat-x":case "repeat-y":case "no-repeat":this.repetition_= +b;break;default:L("SYNTAX_ERR")}this.src_=a.src;this.width_=a.width;this.height_=a.height}function L(a){throw new M(a);}function na(a){if(!a||a.nodeType!=1||a.tagName!="IMG")L("TYPE_MISMATCH_ERR");a.readyState!="complete"&&L("INVALID_STATE_ERR")}function M(a){this.code=this[a];this.message=a+": DOM Exception "+this.code}var r=Math,i=r.round,N=r.sin,O=r.cos,ma=r.abs,la=r.sqrt,l=10,t=l/2;navigator.userAgent.match(/MSIE ([\d.]+)?/);var P=Array.prototype.slice;S(document);var Y={init:function(a){a=a|| +document;a.createElement("canvas");a.attachEvent("onreadystatechange",$(this.init_,this,a))},init_:function(a){a=a.getElementsByTagName("canvas");for(var b=0;b','","");this.element_.insertAdjacentHTML("BeforeEnd",n.join(""))};g.stroke=function(a){var b=[];b.push("d.x)d.x=f.x;if(c.y==null||f.yd.y)d.y=f.y}}b.push(' ">');a?X(this,b,c,d):W(this,b);b.push("");this.element_.insertAdjacentHTML("beforeEnd",b.join(""))};g.fill=function(){this.stroke(true)};g.closePath=function(){this.currentPath_.push({type:"close"})};g.save=function(){var a={};T(this,a);this.aStack_.push(a);this.mStack_.push(this.m_);this.m_=u(D(),this.m_)};g.restore=function(){if(this.aStack_.length){T(this.aStack_.pop(), +this);this.m_=this.mStack_.pop()}};g.translate=function(a,b){z(this,u([[1,0,0],[0,1,0],[a,b,1]],this.m_),false)};g.rotate=function(a){var b=O(a);a=N(a);z(this,u([[b,a,0],[-a,b,0],[0,0,1]],this.m_),false)};g.scale=function(a,b){this.arcScaleX_*=a;this.arcScaleY_*=b;z(this,u([[a,0,0],[0,b,0],[0,0,1]],this.m_),true)};g.transform=function(a,b,c,d,e,f){z(this,u([[a,b,0],[c,d,0],[e,f,1]],this.m_),true)};g.setTransform=function(a,b,c,d,e,f){z(this,[[a,b,0],[c,d,0],[e,f,1]],true)};g.drawText_=function(a, +b,c,d,e){var f=this.m_;d=0;var h=1E3,j={x:0,y:0},m=[],k=fa(ea(this.font),this.element_),q=ga(k),o=this.element_.currentStyle,n=this.textAlign.toLowerCase();switch(n){case "left":case "center":case "right":break;case "end":n=o.direction=="ltr"?"right":"left";break;case "start":n=o.direction=="rtl"?"right":"left";break;default:n="left"}switch(this.textBaseline){case "hanging":case "top":j.y=k.size/1.75;break;case "middle":break;default:case null:case "alphabetic":case "ideographic":case "bottom":j.y= +-k.size/2.25;break}switch(n){case "right":d=1E3;h=0.05;break;case "center":d=h=500;break}b=p(this,b+j.x,c+j.y);m.push('');e?W(this,m):X(this,m,{x:-d,y:0},{x:h,y:k.size});e=f[0][0].toFixed(3)+","+f[1][0].toFixed(3)+","+f[0][1].toFixed(3)+","+f[1][1].toFixed(3)+",0,0";b=i(b.x/l)+","+i(b.y/l);m.push('','','');this.element_.insertAdjacentHTML("beforeEnd",m.join(""))};g.fillText=function(a,b,c,d){this.drawText_(a,b,c,d,false)};g.strokeText=function(a,b,c,d){this.drawText_(a,b,c,d,true)};g.measureText=function(a){if(!this.textMeasureEl_){this.element_.insertAdjacentHTML("beforeEnd",''); +this.textMeasureEl_=this.element_.lastChild}var b=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(b.createTextNode(a));return{width:this.textMeasureEl_.offsetWidth}};g.clip=function(){};g.arcTo=function(){};g.createPattern=function(a,b){return new K(a,b)};x.prototype.addColorStop=function(a,b){b=H(b);this.colors_.push({offset:a,color:b.color,alpha:b.alpha})};g=M.prototype=new Error;g.INDEX_SIZE_ERR=1;g.DOMSTRING_SIZE_ERR= +2;g.HIERARCHY_REQUEST_ERR=3;g.WRONG_DOCUMENT_ERR=4;g.INVALID_CHARACTER_ERR=5;g.NO_DATA_ALLOWED_ERR=6;g.NO_MODIFICATION_ALLOWED_ERR=7;g.NOT_FOUND_ERR=8;g.NOT_SUPPORTED_ERR=9;g.INUSE_ATTRIBUTE_ERR=10;g.INVALID_STATE_ERR=11;g.SYNTAX_ERR=12;g.INVALID_MODIFICATION_ERR=13;g.NAMESPACE_ERR=14;g.INVALID_ACCESS_ERR=15;g.VALIDATION_ERR=16;g.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=Y;CanvasRenderingContext2D=C;CanvasGradient=x;CanvasPattern=K;DOMException=M}(); ADDED Site/Site_W/jpqplot/gpl-2.0.txt Index: Site/Site_W/jpqplot/gpl-2.0.txt ================================================================== --- Site/Site_W/jpqplot/gpl-2.0.txt +++ Site/Site_W/jpqplot/gpl-2.0.txt @@ -0,0 +1,280 @@ +Title: GPL Version 2 + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. ADDED Site/Site_W/jpqplot/jqPlotCssStyling.txt Index: Site/Site_W/jpqplot/jqPlotCssStyling.txt ================================================================== --- Site/Site_W/jpqplot/jqPlotCssStyling.txt +++ Site/Site_W/jpqplot/jqPlotCssStyling.txt @@ -0,0 +1,53 @@ +Title: jqPlot CSS Customization + +Much of the styling of jqPlot is done by css. The jqPlot css file is, unremarkably, +jquery.jqplot.css and resides in the same directory as jqPlot itself. + +There exist some styling related javascript properties on the plot objects themselves +(like fontStyle, fontSize, etc.). These can be set with the options object at plot creation. +Generally, setting these options is *NOT* the preferred way to customize the look of the +plot. Use the css file instead. *These options are deprecated and may disappear*. The +exceptions are certain background and color options which control attributes of something +renderered on a canvas. This would be line color, grid background, etc. These must +be set by the options object. For a list of available options, see . + +Objects in the plot that can be customized by css are given a css class like ".jqplot-*". +For example, the plot title will have a ".jqplot-title" class, the axes ".jqplot-axis", etc. + +Currently assigned classes in jqPlot +are as follows: + +.jqplot-target - Styles for the plot target div. These will be cascaded down +to all plot elements according to css rules. + +.jqplot-axis - Styles for all axes + +.jqplot-xaxis - Styles applied to the primary x axis only. + +.jqplot-yaxis - Styles applied to the primary y axis only. + +.jqplot-x2axis, .jqplot-x3axis, ... - Styles applied to the 2nd, 3rd, etc. x axis only. + +.jqplot-y2axis, .jqplot-y3axis, ... - Styles applied to the 2nd, 3rd, etc.y axis only. + +.jqplot-axis-tick - Styles applied to all axis ticks + +.jqplot-xaxis-tick - Styles applied to primary x axis ticks only. + +.jqplot-x2axis-tick - Styles applied to secondary x axis ticks only. + +.jqplot-yaxis-tick - Styles applied to primary y axis ticks only. + +.jqplot-y2axis-tick - Styles applied to secondary y axis ticks only. + +table.jqplot-table-legend - Styles applied to the legend box table. + +.jqplot-title - Styles applied to the title. + +.jqplot-cursor-tooltip - Styles applied to the cursor tooltip + +.jqplot-highlighter-tooltip - Styles applied to the highlighter tooltip. + +div.jqplot-table-legend-swatch - the div element used for the colored swatch on the legend. + +Note that axes will be assigned 2 classes like: class=".jqplot-axis .jqplot-xaxis". ADDED Site/Site_W/jpqplot/jqPlotOptions.txt Index: Site/Site_W/jpqplot/jqPlotOptions.txt ================================================================== --- Site/Site_W/jpqplot/jqPlotOptions.txt +++ Site/Site_W/jpqplot/jqPlotOptions.txt @@ -0,0 +1,276 @@ +Title: jqPlot Options + +**This document is out of date. While the options described here should still be +relavent and valid, it has not been updated for many new options. Sorry for +this inconvenience.** + +This document describes the options available to jqPlot. These are set with the +third argument to the $.jqplot('target', data, options) function. Options are +using the following convention: + +{{{ +property: default, // notes +}}} + +This document is not complete! Not all options are shown! Also, Options marked +with ** in the notes are post 0.7.1 additions. They will be available in the next +release. Further information about the options can be found in the online API +documentation. For details on how the options relate to the API documentation, +see the in the optionsTutorial.txt file. + +{{{ +options = +{ + seriesColors: [ "#4bb2c5", "#c5b47f", "#EAA228", "#579575", "#839557", "#958c12", + "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc"], // colors that will + // be assigned to the series. If there are more series than colors, colors + // will wrap around and start at the beginning again. + + stackSeries: false, // if true, will create a stack plot. + // Currently supported by line and bar graphs. + + title: '', // Title for the plot. Can also be specified as an object like: + + title: { + text: '', // title for the plot, + show: true, + }, + + axesDefaults: { + show: false, // wether or not to renderer the axis. Determined automatically. + min: null, // minimum numerical value of the axis. Determined automatically. + max: null, // maximum numverical value of the axis. Determined automatically. + pad: 1.2, // a factor multiplied by the data range on the axis to give the + // axis range so that data points don't fall on the edges of the axis. + ticks: [], // a 1D [val1, val2, ...], or 2D [[val, label], [val, label], ...] + // array of ticks to use. Computed automatically. + numberTicks: undefined, + renderer: $.jqplot.LinearAxisRenderer, // renderer to use to draw the axis, + rendererOptions: {}, // options to pass to the renderer. LinearAxisRenderer + // has no options, + tickOptions: { + mark: 'outside', // Where to put the tick mark on the axis + // 'outside', 'inside' or 'cross', + showMark: true, + showGridline: true, // wether to draw a gridline (across the whole grid) at this tick, + markSize: 4, // length the tick will extend beyond the grid in pixels. For + // 'cross', length will be added above and below the grid boundary, + show: true, // wether to show the tick (mark and label), + showLabel: true, // wether to show the text label at the tick, + formatString: '', // format string to use with the axis tick formatter + } + showTicks: true, // wether or not to show the tick labels, + showTickMarks: true, // wether or not to show the tick marks + }, + + axes: { + xaxis: { + // same options as axesDefaults + }, + yaxis: { + // same options as axesDefaults + }, + x2axis: { + // same options as axesDefaults + }, + y2axis: { + // same options as axesDefaults + } + }, + + seriesDefaults: { + show: true, // wether to render the series. + xaxis: 'xaxis', // either 'xaxis' or 'x2axis'. + yaxis: 'yaxis', // either 'yaxis' or 'y2axis'. + label: '', // label to use in the legend for this line. + color: '', // CSS color spec to use for the line. Determined automatically. + lineWidth: 2.5, // Width of the line in pixels. + shadow: true, // show shadow or not. + shadowAngle: 45, // angle (degrees) of the shadow, clockwise from x axis. + shadowOffset: 1.25, // offset from the line of the shadow. + shadowDepth: 3, // Number of strokes to make when drawing shadow. Each + // stroke offset by shadowOffset from the last. + shadowAlpha: 0.1, // Opacity of the shadow. + showLine: true, // whether to render the line segments or not. + showMarker: true, // render the data point markers or not. + fill: false, // fill under the line, + fillAndStroke: false, // **stroke a line at top of fill area. + fillColor: undefined, // **custom fill color for filled lines (default is line color). + fillAlpha: undefined, // **custom alpha to apply to fillColor. + renderer: $.jqplot.LineRenderer], // renderer used to draw the series. + rendererOptions: {}, // options passed to the renderer. LineRenderer has no options. + markerRenderer: $.jqplot.MarkerRenderer, // renderer to use to draw the data + // point markers. + markerOptions: { + show: true, // wether to show data point markers. + style: 'filledCircle', // circle, diamond, square, filledCircle. + // filledDiamond or filledSquare. + lineWidth: 2, // width of the stroke drawing the marker. + size: 9, // size (diameter, edge length, etc.) of the marker. + color: '#666666' // color of marker, set to color of line by default. + shadow: true, // wether to draw shadow on marker or not. + shadowAngle: 45, // angle of the shadow. Clockwise from x axis. + shadowOffset: 1, // offset from the line of the shadow, + shadowDepth: 3, // Number of strokes to make when drawing shadow. Each stroke + // offset by shadowOffset from the last. + shadowAlpha: 0.07 // Opacity of the shadow + } + }, + + series:[ + {Each series has same options as seriesDefaults}, + {You can override each series individually here} + ], + + legend: { + show: false, + location: 'ne', // compass direction, nw, n, ne, e, se, s, sw, w. + xoffset: 12, // pixel offset of the legend box from the x (or x2) axis. + yoffset: 12, // pixel offset of the legend box from the y (or y2) axis. + }, + + grid: { + drawGridLines: true, // wether to draw lines across the grid or not. + gridLineColor: '#cccccc' // **Color of the grid lines. + background: '#fffdf6', // CSS color spec for background color of grid. + borderColor: '#999999', // CSS color spec for border around grid. + borderWidth: 2.0, // pixel width of border around grid. + shadow: true, // draw a shadow for grid. + shadowAngle: 45, // angle of the shadow. Clockwise from x axis. + shadowOffset: 1.5, // offset from the line of the shadow. + shadowWidth: 3, // width of the stroke for the shadow. + shadowDepth: 3, // Number of strokes to make when drawing shadow. + // Each stroke offset by shadowOffset from the last. + shadowAlpha: 0.07 // Opacity of the shadow + renderer: $.jqplot.CanvasGridRenderer, // renderer to use to draw the grid. + rendererOptions: {} // options to pass to the renderer. Note, the default + // CanvasGridRenderer takes no additional options. + }, + + // Plugin and renderer options. + + // BarRenderer. + // With BarRenderer, you can specify additional options in the rendererOptions object + // on the series or on the seriesDefaults object. Note, some options are respecified + // (like shadowDepth) to override lineRenderer defaults from which BarRenderer inherits. + + seriesDefaults: { + rendererOptions: { + barPadding: 8, // number of pixels between adjacent bars in the same + // group (same category or bin). + barMargin: 10, // number of pixels between adjacent groups of bars. + barDirection: 'vertical', // vertical or horizontal. + barWidth: null, // width of the bars. null to calculate automatically. + shadowOffset: 2, // offset from the bar edge to stroke the shadow. + shadowDepth: 5, // nuber of strokes to make for the shadow. + shadowAlpha: 0.8, // transparency of the shadow. + } + }, + + // Cursor + // Options are passed to the cursor plugin through the "cursor" object at the top + // level of the options object. + + cursor: { + style: 'crosshair', // A CSS spec for the cursor type to change the + // cursor to when over plot. + show: true, + showTooltip: true, // show a tooltip showing cursor position. + followMouse: false, // wether tooltip should follow the mouse or be stationary. + tooltipLocation: 'se', // location of the tooltip either relative to the mouse + // (followMouse=true) or relative to the plot. One of + // the compass directions, n, ne, e, se, etc. + tooltipOffset: 6, // pixel offset of the tooltip from the mouse or the axes. + showTooltipGridPosition: false, // show the grid pixel coordinates of the mouse + // in the tooltip. + showTooltipUnitPosition: true, // show the coordinates in data units of the mouse + // in the tooltip. + tooltipFormatString: '%.4P', // sprintf style format string for tooltip values. + useAxesFormatters: true, // wether to use the same formatter and formatStrings + // as used by the axes, or to use the formatString + // specified on the cursor with sprintf. + tooltipAxesGroups: [], // show only specified axes groups in tooltip. Would specify like: + // [['xaxis', 'yaxis'], ['xaxis', 'y2axis']]. By default, all axes + // combinations with for the series in the plot are shown. + + }, + + // Dragable + // Dragable options are specified with the "dragable" object at the top level + // of the options object. + + dragable: { + color: undefined, // custom color to use for the dragged point and dragged line + // section. default will use a transparent variant of the line color. + constrainTo: 'none', // Constrain dragging motion to an axis: 'x', 'y', or 'none'. + }, + + // Highlighter + // Highlighter options are specified with the "highlighter" object at the top level + // of the options object. + + highlighter: { + lineWidthAdjust: 2.5, // pixels to add to the size line stroking the data point marker + // when showing highlight. Only affects non filled data point markers. + sizeAdjust: 5, // pixels to add to the size of filled markers when drawing highlight. + showTooltip: true, // show a tooltip with data point values. + tooltipLocation: 'nw', // location of tooltip: n, ne, e, se, s, sw, w, nw. + fadeTooltip: true, // use fade effect to show/hide tooltip. + tooltipFadeSpeed: "fast"// slow, def, fast, or a number of milliseconds. + tooltipOffset: 2, // pixel offset of tooltip from the highlight. + tooltipAxes: 'both', // which axis values to display in the tooltip, x, y or both. + tooltipSeparator: ', ' // separator between values in the tooltip. + useAxesFormatters: true // use the same format string and formatters as used in the axes to + // display values in the tooltip. + tooltipFormatString: '%.5P' // sprintf format string for the tooltip. only used if + // useAxesFormatters is false. Will use sprintf formatter with + // this string, not the axes formatters. + }, + + // LogAxisRenderer + // LogAxisRenderer add 2 options to the axes object. These options are specified directly on + // the axes or axesDefaults object. + + axesDefaults: { + base: 10, // the logarithmic base. + tickDistribution: 'even', // 'even' or 'power'. 'even' will produce with even visiual (pixel) + // spacing on the axis. 'power' will produce ticks spaced by + // increasing powers of the log base. + }, + + // PieRenderer + // PieRenderer accepts options from the rendererOptions object of the series or seriesDefaults object. + + seriesDefaults: { + rendererOptions: { + diameter: undefined, // diameter of pie, auto computed by default. + padding: 20, // padding between pie and neighboring legend or plot margin. + sliceMargin: 0, // gap between slices. + fill: true, // render solid (filled) slices. + shadowOffset: 2, // offset of the shadow from the chart. + shadowDepth: 5, // Number of strokes to make when drawing shadow. Each stroke + // offset by shadowOffset from the last. + shadowAlpha: 0.07 // Opacity of the shadow + } + }, + + // Trendline + // Trendline takes options on the trendline object of the series or seriesDefaults object. + + seriesDefaults: { + trendline: { + show: true, // show the trend line + color: '#666666', // CSS color spec for the trend line. + label: '', // label for the trend line. + type: 'linear', // 'linear', 'exponential' or 'exp' + shadow: true, // show the trend line shadow. + lineWidth: 1.5, // width of the trend line. + shadowAngle: 45, // angle of the shadow. Clockwise from x axis. + shadowOffset: 1.5, // offset from the line of the shadow. + shadowDepth: 3, // Number of strokes to make when drawing shadow. + // Each stroke offset by shadowOffset from the last. + shadowAlpha: 0.07 // Opacity of the shadow + } + } +} +}}} ADDED Site/Site_W/jpqplot/jquery-1.4.1.min.js Index: Site/Site_W/jpqplot/jquery-1.4.1.min.js ================================================================== --- Site/Site_W/jpqplot/jquery-1.4.1.min.js +++ Site/Site_W/jpqplot/jquery-1.4.1.min.js @@ -0,0 +1,152 @@ +/*! + * jQuery JavaScript Library v1.4.1 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Jan 25 19:43:33 2010 -0500 + */ +(function(z,v){function la(){if(!c.isReady){try{r.documentElement.doScroll("left")}catch(a){setTimeout(la,1);return}c.ready()}}function Ma(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,i){var j=a.length;if(typeof b==="object"){for(var n in b)X(a,n,b[n],f,e,d);return a}if(d!==v){f=!i&&f&&c.isFunction(d);for(n=0;n-1){i=j.data;i.beforeFilter&&i.beforeFilter[a.type]&&!i.beforeFilter[a.type](a)||f.push(j.selector)}else delete x[o]}i=c(a.target).closest(f, +a.currentTarget);m=0;for(s=i.length;m)[^>]*$|^#([\w-]+)$/,Qa=/^.[^:#\[\.,]*$/,Ra=/\S/,Sa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Ta=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,O=navigator.userAgent, +va=false,P=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,Q=Array.prototype.slice,wa=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Pa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:r;if(a=Ta.exec(a))if(c.isPlainObject(b)){a=[r.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=ra([d[1]], +[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}}else{if(b=r.getElementById(d[2])){if(b.id!==d[2])return S.find(a);this.length=1;this[0]=b}this.context=r;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=r;a=r.getElementsByTagName(a)}else return!b||b.jquery?(b||S).find(a):c(b).find(a);else if(c.isFunction(a))return S.ready(a);if(a.selector!==v){this.selector=a.selector;this.context=a.context}return c.isArray(a)?this.setArray(a):c.makeArray(a, +this)},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length},toArray:function(){return Q.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){a=c(a||null);a.prevObject=this;a.context=this.context;if(b==="find")a.selector=this.selector+(this.selector?" ":"")+d;else if(b)a.selector=this.selector+"."+b+"("+d+")";return a},setArray:function(a){this.length=0;ba.apply(this,a);return this},each:function(a,b){return c.each(this, +a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(r,c);else P&&P.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(Q.apply(this,arguments),"slice",Q.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice}; +c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,i,j,n;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
    a";var e=d.getElementsByTagName("*"),i=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!i)){c.support= +{leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(i.getAttribute("style")),hrefNormalized:i.getAttribute("href")==="/a",opacity:/^0.55$/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:r.createElement("select").appendChild(r.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null}; +b.type="text/javascript";try{b.appendChild(r.createTextNode("window."+f+"=1;"))}catch(j){}a.insertBefore(b,a.firstChild);if(z[f]){c.support.scriptEval=true;delete z[f]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function n(){c.support.noCloneEvent=false;d.detachEvent("onclick",n)});d.cloneNode(true).fireEvent("onclick")}d=r.createElement("div");d.innerHTML="";a=r.createDocumentFragment();a.appendChild(d.firstChild); +c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var n=r.createElement("div");n.style.width=n.style.paddingLeft="1px";r.body.appendChild(n);c.boxModel=c.support.boxModel=n.offsetWidth===2;r.body.removeChild(n).style.display="none"});a=function(n){var o=r.createElement("div");n="on"+n;var m=n in o;if(!m){o.setAttribute(n,"return;");m=typeof o[n]==="function"}return m};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=i=null}})();c.props= +{"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ua=0,xa={},Va={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var f=a[G],e=c.cache;if(!b&&!f)return null;f||(f=++Ua);if(typeof b==="object"){a[G]=f;e=e[f]=c.extend(true, +{},b)}else e=e[f]?e[f]:typeof d==="undefined"?Va:(e[f]={});if(d!==v){a[G]=f;e[b]=d}return typeof b==="string"?e[b]:e}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{try{delete a[G]}catch(i){a.removeAttribute&&a.removeAttribute(G)}delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this, +a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===v){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===v&&this.length)f=c.data(this[0],a);return f===v&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d); +return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===v)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]|| +a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var ya=/[\n\t]/g,ca=/\s+/,Wa=/\r/g,Xa=/href|src|style/,Ya=/(button|input)/i,Za=/(button|input|object|select|textarea)/i,$a=/^(a|area)$/i,za=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(o){var m= +c(this);m.addClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===v){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value|| +{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var i=b?d:0;for(d=b?d+1:e.length;i=0;else if(c.nodeName(this,"select")){var x=c.makeArray(s);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),x)>=0});if(!x.length)this.selectedIndex=-1}else this.value=s}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return v;if(f&&b in c.attrFn)return c(a)[b](d); +f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==v;b=f&&c.props[b]||b;if(a.nodeType===1){var i=Xa.test(b);if(b in a&&f&&!i){if(e){b==="type"&&Ya.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Za.test(a.nodeName)||$a.test(a.nodeName)&&a.href?0:v;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText= +""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&i?a.getAttribute(b,2):a.getAttribute(b);return a===null?v:a}return c.style(a,b,d)}});var ab=function(a){return a.replace(/[^\w\s\.\|`]/g,function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==z&&!a.frameElement)a=z;if(!d.guid)d.guid=c.guid++;if(f!==v){d=c.proxy(d);d.data=f}var e=c.data(a,"events")||c.data(a,"events",{}),i=c.data(a,"handle"),j;if(!i){j= +function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(j.elem,arguments):v};i=c.data(a,"handle",j)}if(i){i.elem=a;b=b.split(/\s+/);for(var n,o=0;n=b[o++];){var m=n.split(".");n=m.shift();if(o>1){d=c.proxy(d);if(f!==v)d.data=f}d.type=m.slice(0).sort().join(".");var s=e[n],x=this.special[n]||{};if(!s){s=e[n]={};if(!x.setup||x.setup.call(a,f,m,d)===false)if(a.addEventListener)a.addEventListener(n,i,false);else a.attachEvent&&a.attachEvent("on"+n,i)}if(x.add)if((m=x.add.call(a, +d,f,m,s))&&c.isFunction(m)){m.guid=m.guid||d.guid;m.data=m.data||d.data;m.type=m.type||d.type;d=m}s[d.guid]=d;this.global[n]=true}a=null}}},global:{},remove:function(a,b,d){if(!(a.nodeType===3||a.nodeType===8)){var f=c.data(a,"events"),e,i,j;if(f){if(b===v||typeof b==="string"&&b.charAt(0)===".")for(i in f)this.remove(a,i+(b||""));else{if(b.type){d=b.handler;b=b.type}b=b.split(/\s+/);for(var n=0;i=b[n++];){var o=i.split(".");i=o.shift();var m=!o.length,s=c.map(o.slice(0).sort(),ab);s=new RegExp("(^|\\.)"+ +s.join("\\.(?:.*\\.)?")+"(\\.|$)");var x=this.special[i]||{};if(f[i]){if(d){j=f[i][d.guid];delete f[i][d.guid]}else for(var A in f[i])if(m||s.test(f[i][A].type))delete f[i][A];x.remove&&x.remove.call(a,o,j);for(e in f[i])break;if(!e){if(!x.teardown||x.teardown.call(a,o)===false)if(a.removeEventListener)a.removeEventListener(i,c.data(a,"handle"),false);else a.detachEvent&&a.detachEvent("on"+i,c.data(a,"handle"));e=null;delete f[i]}}}}for(e in f)break;if(!e){if(A=c.data(a,"handle"))A.elem=null;c.removeData(a, +"events");c.removeData(a,"handle")}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();this.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return v;a.result=v;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d, +b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(i){}if(!a.isPropagationStopped()&&f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){d=a.target;var j;if(!(c.nodeName(d,"a")&&e==="click")&&!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()])){try{if(d[e]){if(j=d["on"+e])d["on"+e]=null;this.triggered=true;d[e]()}}catch(n){}if(j)d["on"+e]=j;this.triggered=false}}},handle:function(a){var b, +d;a=arguments[0]=c.event.fix(a||z.event);a.currentTarget=this;d=a.type.split(".");a.type=d.shift();b=!d.length&&!a.exclusive;var f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");d=(c.data(this,"events")||{})[a.type];for(var e in d){var i=d[e];if(b||f.test(i.type)){a.handler=i;a.data=i.data;i=i.apply(this,arguments);if(i!==v){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), +fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||r;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=r.documentElement;d=r.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| +d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==v)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a,b){c.extend(a,b||{});a.guid+=b.selector+b.live;b.liveProxy=a;c.event.add(this,b.live,na,b)},remove:function(a){if(a.length){var b= +0,d=new RegExp("(^|\\.)"+a[0]+"(\\.|$)");c.each(c.data(this,"events").live||{},function(){d.test(this.type)&&b++});b<1&&c.event.remove(this,a[0],na)}},special:{}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true}; +c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y};var Aa=function(a){for(var b= +a.relatedTarget;b&&b!==this;)try{b=b.parentNode}catch(d){break}if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}},Ba=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ba:Aa,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ba:Aa)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(a,b,d){if(this.nodeName.toLowerCase()!== +"form"){c.event.add(this,"click.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="submit"||i==="image")&&c(e).closest("form").length)return ma("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="text"||i==="password")&&c(e).closest("form").length&&f.keyCode===13)return ma("submit",this,arguments)})}else return false},remove:function(a,b){c.event.remove(this,"click.specialSubmit"+(b?"."+b.guid:""));c.event.remove(this, +"keypress.specialSubmit"+(b?"."+b.guid:""))}};if(!c.support.changeBubbles){var da=/textarea|input|select/i;function Ca(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d}function ea(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Ca(d);if(a.type!=="focusout"|| +d.type!=="radio")c.data(d,"_change_data",e);if(!(f===v||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}}c.event.special.change={filters:{focusout:ea,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return ea.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return ea.call(this,a)},beforeactivate:function(a){a= +a.target;a.nodeName.toLowerCase()==="input"&&a.type==="radio"&&c.data(a,"_change_data",Ca(a))}},setup:function(a,b,d){for(var f in T)c.event.add(this,f+".specialChange."+d.guid,T[f]);return da.test(this.nodeName)},remove:function(a,b){for(var d in T)c.event.remove(this,d+".specialChange"+(b?"."+b.guid:""),T[d]);return da.test(this.nodeName)}};var T=c.event.special.change.filters}r.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this, +f)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var i in d)this[b](i,f,d[i],e);return this}if(c.isFunction(f)){e=f;f=v}var j=b==="one"?c.proxy(e,function(n){c(this).unbind(n,j);return e.apply(this,arguments)}):e;return d==="unload"&&b!=="one"?this.one(d,f,e):this.each(function(){c.event.add(this,d,j,f)})}});c.fn.extend({unbind:function(a, +b){if(typeof a==="object"&&!a.preventDefault){for(var d in a)this.unbind(d,a[d]);return this}return this.each(function(){c.event.remove(this,a,b)})},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d0){y=t;break}}t=t[g]}l[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,i=Object.prototype.toString,j=false,n=true;[0,0].sort(function(){n=false;return 0});var o=function(g,h,k,l){k=k||[];var q=h=h||r;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g|| +typeof g!=="string")return k;for(var p=[],u,t,y,R,H=true,M=w(h),I=g;(f.exec(""),u=f.exec(I))!==null;){I=u[3];p.push(u[1]);if(u[2]){R=u[3];break}}if(p.length>1&&s.exec(g))if(p.length===2&&m.relative[p[0]])t=fa(p[0]+p[1],h);else for(t=m.relative[p[0]]?[h]:o(p.shift(),h);p.length;){g=p.shift();if(m.relative[g])g+=p.shift();t=fa(g,t)}else{if(!l&&p.length>1&&h.nodeType===9&&!M&&m.match.ID.test(p[0])&&!m.match.ID.test(p[p.length-1])){u=o.find(p.shift(),h,M);h=u.expr?o.filter(u.expr,u.set)[0]:u.set[0]}if(h){u= +l?{expr:p.pop(),set:A(l)}:o.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=u.expr?o.filter(u.expr,u.set):u.set;if(p.length>0)y=A(t);else H=false;for(;p.length;){var D=p.pop();u=D;if(m.relative[D])u=p.pop();else D="";if(u==null)u=h;m.relative[D](y,u,M)}}else y=[]}y||(y=t);y||o.error(D||g);if(i.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))k.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&& +y[g].nodeType===1&&k.push(t[g]);else k.push.apply(k,y);else A(y,k);if(R){o(R,q,k,l);o.uniqueSort(k)}return k};o.uniqueSort=function(g){if(C){j=n;g.sort(C);if(j)for(var h=1;h":function(g,h){var k=typeof h==="string";if(k&&!/\W/.test(h)){h=h.toLowerCase();for(var l=0,q=g.length;l=0))k||l.push(u);else if(k)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&& +"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,k,l,q,p){h=g[1].replace(/\\/g,"");if(!p&&m.attrMap[h])g[1]=m.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,k,l,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=o(g[3],null,null,h);else{g=o.filter(g[3],h,k,true^q);k||l.push.apply(l,g);return false}else if(m.match.POS.test(g[0])||m.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true); +return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,k){return!!o(k[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"=== +g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,h){return h===0},last:function(g,h,k,l){return h===l.length-1},even:function(g,h){return h%2=== +0},odd:function(g,h){return h%2===1},lt:function(g,h,k){return hk[3]-0},nth:function(g,h,k){return k[3]-0===h},eq:function(g,h,k){return k[3]-0===h}},filter:{PSEUDO:function(g,h,k,l){var q=h[1],p=m.filters[q];if(p)return p(g,k,h,l);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=h[3];k=0;for(l=h.length;k= +0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var k=h[1];g=m.attrHandle[k]?m.attrHandle[k](g):g[k]!=null?g[k]:g.getAttribute(k);k=g+"";var l=h[2];h=h[4];return g==null?l==="!=":l==="="?k===h:l==="*="?k.indexOf(h)>=0:l==="~="?(" "+k+" ").indexOf(h)>=0:!h?k&&g!==false:l==="!="?k!==h:l==="^="? +k.indexOf(h)===0:l==="$="?k.substr(k.length-h.length)===h:l==="|="?k===h||k.substr(0,h.length+1)===h+"-":false},POS:function(g,h,k,l){var q=m.setFilters[h[2]];if(q)return q(g,k,h,l)}}},s=m.match.POS;for(var x in m.match){m.match[x]=new RegExp(m.match[x].source+/(?![^\[]*\])(?![^\(]*\))/.source);m.leftMatch[x]=new RegExp(/(^(?:.|\r|\n)*?)/.source+m.match[x].source.replace(/\\(\d+)/g,function(g,h){return"\\"+(h-0+1)}))}var A=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g}; +try{Array.prototype.slice.call(r.documentElement.childNodes,0)}catch(B){A=function(g,h){h=h||[];if(i.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var k=0,l=g.length;k";var k=r.documentElement;k.insertBefore(g,k.firstChild);if(r.getElementById(h)){m.find.ID=function(l,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(l[1]))?q.id===l[1]||typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id").nodeValue===l[1]?[q]:v:[]};m.filter.ID=function(l,q){var p=typeof l.getAttributeNode!=="undefined"&&l.getAttributeNode("id"); +return l.nodeType===1&&p&&p.nodeValue===q}}k.removeChild(g);k=g=null})();(function(){var g=r.createElement("div");g.appendChild(r.createComment(""));if(g.getElementsByTagName("*").length>0)m.find.TAG=function(h,k){k=k.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var l=0;k[l];l++)k[l].nodeType===1&&h.push(k[l]);k=h}return k};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")m.attrHandle.href=function(h){return h.getAttribute("href", +2)};g=null})();r.querySelectorAll&&function(){var g=o,h=r.createElement("div");h.innerHTML="

    ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){o=function(l,q,p,u){q=q||r;if(!u&&q.nodeType===9&&!w(q))try{return A(q.querySelectorAll(l),p)}catch(t){}return g(l,q,p,u)};for(var k in g)o[k]=g[k];h=null}}();(function(){var g=r.createElement("div");g.innerHTML="
    ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length=== +0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){m.order.splice(1,0,"CLASS");m.find.CLASS=function(h,k,l){if(typeof k.getElementsByClassName!=="undefined"&&!l)return k.getElementsByClassName(h[1])};g=null}}})();var E=r.compareDocumentPosition?function(g,h){return g.compareDocumentPosition(h)&16}:function(g,h){return g!==h&&(g.contains?g.contains(h):true)},w=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},fa=function(g,h){var k=[], +l="",q;for(h=h.nodeType?[h]:h;q=m.match.PSEUDO.exec(g);){l+=q[0];g=g.replace(m.match.PSEUDO,"")}g=m.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var i=d;i0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,i={},j;if(f&&a.length){e=0;for(var n=a.length;e +-1:c(f).is(e)){d.push({selector:j,elem:f});delete i[j]}}f=f.parentNode}}return d}var o=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(m,s){for(;s&&s.ownerDocument&&s!==b;){if(o?o.index(s)>-1:c(s).is(a))return s;s=s.parentNode}return null})},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(), +a);return this.pushStack(pa(a[0])||pa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")}, +nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);bb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e): +e;if((this.length>1||db.test(f))&&cb.test(a))e=e.reverse();return this.pushStack(e,a,Q.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===v||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!== +b&&d.push(a);return d}});var Fa=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ga=/(<([\w:]+)[^>]*?)\/>/g,eb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,Ha=/<([\w:]+)/,fb=/"},F={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "], +col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
    ","
    "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==v)return this.empty().append((this[0]&&this[0].ownerDocument||r).createTextNode(a));return c.getText(this)}, +wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length? +d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments, +false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&& +!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Fa,"").replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){qa(this,b);qa(this.find("*"),b.find("*"))}return b},html:function(a){if(a===v)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Fa,""):null;else if(typeof a==="string"&&!/ + * > + * > + * + * jqPlot can be customized by overriding the defaults of any of the objects which make + * up the plot. The general usage of jqplot is: + * + * > chart = $.jqplot('targetElemId', [dataArray,...], {optionsObject}); + * + * The options available to jqplot are detailed in in the jqPlotOptions.txt file. + * + * An actual call to $.jqplot() may look like the + * examples below: + * + * > chart = $.jqplot('chartdiv', [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]]); + * + * or + * + * > dataArray = [34,12,43,55,77]; + * > chart = $.jqplot('targetElemId', [dataArray, ...], {title:'My Plot', axes:{yaxis:{min:20, max:100}}}); + * + * For more inforrmation, see . + * + * About: Usage + * + * See + * + * About: Available Options + * + * See for a list of options available thorugh the options object (not complete yet!) + * + * About: Options Usage + * + * See + * + * About: Changes + * + * See + * + */ + +(function($) { + // make sure undefined is undefined + var undefined; + + /** + * Class: $.jqplot + * jQuery function called by the user to create a plot. + * + * Parameters: + * target - ID of target element to render the plot into. + * data - an array of data series. + * options - user defined options object. See the individual classes for available options. + * + * Properties: + * config - object to hold configuration information for jqPlot plot object. + * + * attributes: + * enablePlugins - False to disable plugins by default. Plugins must then be explicitly + * enabled in the individual plot options. Default: false. + * This property sets the "show" property of certain plugins to true or false. + * Only plugins that can be immediately active upon loading are affected. This includes + * non-renderer plugins like cursor, dragable, highlighter, and trendline. + * defaultHeight - Default height for plots where no css height specification exists. This + * is a jqplot wide default. + * defaultWidth - Default height for plots where no css height specification exists. This + * is a jqplot wide default. + */ + + $.jqplot = function(target, data, options) { + var _data, _options; + + if (options == null) { + if (data instanceof Array) { + _data = data; + _options = null; + } + + else if (data.constructor == Object) { + _data = null; + _options = data; + } + } + else { + _data = data; + _options = options; + } + var plot = new jqPlot(); + // remove any error class that may be stuck on target. + $('#'+target).removeClass('jqplot-error'); + + if ($.jqplot.config.catchErrors) { + try { + plot.init(target, _data, _options); + plot.draw(); + plot.themeEngine.init.call(plot); + return plot; + } + catch(e) { + var msg = $.jqplot.config.errorMessage || e.message; + $('#'+target).append('
    '+msg+'
    '); + $('#'+target).addClass('jqplot-error'); + document.getElementById(target).style.background = $.jqplot.config.errorBackground; + document.getElementById(target).style.border = $.jqplot.config.errorBorder; + document.getElementById(target).style.fontFamily = $.jqplot.config.errorFontFamily; + document.getElementById(target).style.fontSize = $.jqplot.config.errorFontSize; + document.getElementById(target).style.fontStyle = $.jqplot.config.errorFontStyle; + document.getElementById(target).style.fontWeight = $.jqplot.config.errorFontWeight; + } + } + else { + plot.init(target, _data, _options); + plot.draw(); + plot.themeEngine.init.call(plot); + return plot; + } + }; + + $.jqplot.debug = 1; + $.jqplot.config = { + debug:1, + enablePlugins:false, + defaultHeight:300, + defaultWidth:400, + UTCAdjust:false, + timezoneOffset: new Date(new Date().getTimezoneOffset() * 60000), + errorMessage: '', + errorBackground: '', + errorBorder: '', + errorFontFamily: '', + errorFontSize: '', + errorFontStyle: '', + errorFontWeight: '', + catchErrors: false, + defaultTickFormatString: "%.1f" + }; + + $.jqplot.enablePlugins = $.jqplot.config.enablePlugins; + + // canvas related tests taken from modernizer: + // Copyright 20092010 Faruk Ates. + // http://www.modernizr.com + + $.jqplot.support_canvas = function() { + return !!document.createElement('canvas').getContext; + }; + + $.jqplot.support_canvas_text = function() { + return !!(document.createElement('canvas').getContext && typeof document.createElement('canvas').getContext('2d').fillText == 'function'); + }; + + $.jqplot.use_excanvas = ($.browser.msie && !$.jqplot.support_canvas()) ? true : false; + + /** + * + * Hooks: jqPlot Pugin Hooks + * + * $.jqplot.preInitHooks - called before initialization. + * $.jqplot.postInitHooks - called after initialization. + * $.jqplot.preParseOptionsHooks - called before user options are parsed. + * $.jqplot.postParseOptionsHooks - called after user options are parsed. + * $.jqplot.preDrawHooks - called before plot draw. + * $.jqplot.postDrawHooks - called after plot draw. + * $.jqplot.preDrawSeriesHooks - called before each series is drawn. + * $.jqplot.postDrawSeriesHooks - called after each series is drawn. + * $.jqplot.preDrawLegendHooks - called before the legend is drawn. + * $.jqplot.addLegendRowHooks - called at the end of legend draw, so plugins + * can add rows to the legend table. + * $.jqplot.preSeriesInitHooks - called before series is initialized. + * $.jqplot.postSeriesInitHooks - called after series is initialized. + * $.jqplot.preParseSeriesOptionsHooks - called before series related options + * are parsed. + * $.jqplot.postParseSeriesOptionsHooks - called after series related options + * are parsed. + * $.jqplot.eventListenerHooks - called at the end of plot drawing, binds + * listeners to the event canvas which lays on top of the grid area. + * $.jqplot.preDrawSeriesShadowHooks - called before series shadows are drawn. + * $.jqplot.postDrawSeriesShadowHooks - called after series shadows are drawn. + * + */ + + $.jqplot.preInitHooks = []; + $.jqplot.postInitHooks = []; + $.jqplot.preParseOptionsHooks = []; + $.jqplot.postParseOptionsHooks = []; + $.jqplot.preDrawHooks = []; + $.jqplot.postDrawHooks = []; + $.jqplot.preDrawSeriesHooks = []; + $.jqplot.postDrawSeriesHooks = []; + $.jqplot.preDrawLegendHooks = []; + $.jqplot.addLegendRowHooks = []; + $.jqplot.preSeriesInitHooks = []; + $.jqplot.postSeriesInitHooks = []; + $.jqplot.preParseSeriesOptionsHooks = []; + $.jqplot.postParseSeriesOptionsHooks = []; + $.jqplot.eventListenerHooks = []; + $.jqplot.preDrawSeriesShadowHooks = []; + $.jqplot.postDrawSeriesShadowHooks = []; + + // A superclass holding some common properties and methods. + $.jqplot.ElemContainer = function() { + this._elem; + this._plotWidth; + this._plotHeight; + this._plotDimensions = {height:null, width:null}; + }; + + $.jqplot.ElemContainer.prototype.createElement = function(el, offsets, clss, cssopts, attrib) { + this._offsets = offsets; + var klass = clss || 'jqplot'; + var elem = document.createElement(el); + this._elem = $(elem); + this._elem.addClass(klass); + this._elem.css(cssopts); + this._elem.attr(attrib); + return this._elem; + }; + + $.jqplot.ElemContainer.prototype.getWidth = function() { + if (this._elem) { + return this._elem.outerWidth(true); + } + else { + return null; + } + }; + + $.jqplot.ElemContainer.prototype.getHeight = function() { + if (this._elem) { + return this._elem.outerHeight(true); + } + else { + return null; + } + }; + + $.jqplot.ElemContainer.prototype.getPosition = function() { + if (this._elem) { + return this._elem.position(); + } + else { + return {top:null, left:null, bottom:null, right:null}; + } + }; + + $.jqplot.ElemContainer.prototype.getTop = function() { + return this.getPosition().top; + }; + + $.jqplot.ElemContainer.prototype.getLeft = function() { + return this.getPosition().left; + }; + + $.jqplot.ElemContainer.prototype.getBottom = function() { + return this._elem.css('bottom'); + }; + + $.jqplot.ElemContainer.prototype.getRight = function() { + return this._elem.css('right'); + }; + + + /** + * Class: Axis + * An individual axis object. Cannot be instantiated directly, but created + * by the Plot oject. Axis properties can be set or overriden by the + * options passed in from the user. + * + */ + function Axis(name) { + $.jqplot.ElemContainer.call(this); + // Group: Properties + // + // Axes options are specified within an axes object at the top level of the + // plot options like so: + // > { + // > axes: { + // > xaxis: {min: 5}, + // > yaxis: {min: 2, max: 8, numberTicks:4}, + // > x2axis: {pad: 1.5}, + // > y2axis: {ticks:[22, 44, 66, 88]} + // > } + // > } + // There are 4 axes, 'xaxis', 'yaxis', 'x2axis', 'y2axis'. Any or all of + // which may be specified. + this.name = name; + this._series = []; + // prop: show + // Wether to display the axis on the graph. + this.show = false; + // prop: tickRenderer + // A class of a rendering engine for creating the ticks labels displayed on the plot, + // See <$.jqplot.AxisTickRenderer>. + this.tickRenderer = $.jqplot.AxisTickRenderer; + // prop: tickOptions + // Options that will be passed to the tickRenderer, see <$.jqplot.AxisTickRenderer> options. + this.tickOptions = {}; + // prop: labelRenderer + // A class of a rendering engine for creating an axis label. + this.labelRenderer = $.jqplot.AxisLabelRenderer; + // prop: labelOptions + // Options passed to the label renderer. + this.labelOptions = {}; + // prop: label + // Label for the axis + this.label = null; + // prop: showLabel + // true to show the axis label. + this.showLabel = true; + // prop: min + // minimum value of the axis (in data units, not pixels). + this.min=null; + // prop: max + // maximum value of the axis (in data units, not pixels). + this.max=null; + // prop: autoscale + // Autoscale the axis min and max values to provide sensible tick spacing. + // If axis min or max are set, autoscale will be turned off. + // The numberTicks, tickInterval and pad options do work with + // autoscale, although tickInterval has not been tested yet. + // padMin and padMax do nothing when autoscale is on. + this.autoscale = false; + // prop: pad + // Padding to extend the range above and below the data bounds. + // The data range is multiplied by this factor to determine minimum and maximum axis bounds. + // A value of 0 will be interpreted to mean no padding, and pad will be set to 1.0. + this.pad = 1.2; + // prop: padMax + // Padding to extend the range above data bounds. + // The top of the data range is multiplied by this factor to determine maximum axis bounds. + // A value of 0 will be interpreted to mean no padding, and padMax will be set to 1.0. + this.padMax = null; + // prop: padMin + // Padding to extend the range below data bounds. + // The bottom of the data range is multiplied by this factor to determine minimum axis bounds. + // A value of 0 will be interpreted to mean no padding, and padMin will be set to 1.0. + this.padMin = null; + // prop: ticks + // 1D [val, val, ...] or 2D [[val, label], [val, label], ...] array of ticks for the axis. + // If no label is specified, the value is formatted into an appropriate label. + this.ticks = []; + // prop: numberTicks + // Desired number of ticks. Default is to compute automatically. + this.numberTicks; + // prop: tickInterval + // number of units between ticks. Mutually exclusive with numberTicks. + this.tickInterval; + // prop: renderer + // A class of a rendering engine that handles tick generation, + // scaling input data to pixel grid units and drawing the axis element. + this.renderer = $.jqplot.LinearAxisRenderer; + // prop: rendererOptions + // renderer specific options. See <$.jqplot.LinearAxisRenderer> for options. + this.rendererOptions = {}; + // prop: showTicks + // Wether to show the ticks (both marks and labels) or not. + // Will not override showMark and showLabel options if specified on the ticks themselves. + this.showTicks = true; + // prop: showTickMarks + // Wether to show the tick marks (line crossing grid) or not. + // Overridden by showTicks and showMark option of tick itself. + this.showTickMarks = true; + // prop: showMinorTicks + // Wether or not to show minor ticks. This is renderer dependent. + // The default <$.jqplot.LinearAxisRenderer> does not have minor ticks. + this.showMinorTicks = true; + // prop: useSeriesColor + // Use the color of the first series associated with this axis for the + // tick marks and line bordering this axis. + this.useSeriesColor = false; + // prop: borderWidth + // width of line stroked at the border of the axis. Defaults + // to the width of the grid boarder. + this.borderWidth = null; + // prop: borderColor + // color of the border adjacent to the axis. Defaults to grid border color. + this.borderColor = null; + // minimum and maximum values on the axis. + this._dataBounds = {min:null, max:null}; + // pixel position from the top left of the min value and max value on the axis. + this._offsets = {min:null, max:null}; + this._ticks=[]; + this._label = null; + // prop: syncTicks + // true to try and synchronize tick spacing across multiple axes so that ticks and + // grid lines line up. This has an impact on autoscaling algorithm, however. + // In general, autoscaling an individual axis will work better if it does not + // have to sync ticks. + this.syncTicks = null; + // prop: tickSpacing + // Approximate pixel spacing between ticks on graph. Used during autoscaling. + // This number will be an upper bound, actual spacing will be less. + this.tickSpacing = 75; + // Properties to hold the original values for min, max, ticks, tickInterval and numberTicks + // so they can be restored if altered by plugins. + this._min = null; + this._max = null; + this._tickInterval = null; + this._numberTicks = null; + this.__ticks = null; + } + + Axis.prototype = new $.jqplot.ElemContainer(); + Axis.prototype.constructor = Axis; + + Axis.prototype.init = function() { + this.renderer = new this.renderer(); + // set the axis name + this.tickOptions.axis = this.name; + // if showMark or showLabel tick options not specified, use value of axis option. + // showTicks overrides showTickMarks. + if (this.tickOptions.showMark == null) { + this.tickOptions.showMark = this.showTicks; + } + if (this.tickOptions.showMark == null) { + this.tickOptions.showMark = this.showTickMarks; + } + if (this.tickOptions.showLabel == null) { + this.tickOptions.showLabel = this.showTicks; + } + + if (this.label == null || this.label == '') { + this.showLabel = false; + } + else { + this.labelOptions.label = this.label; + } + if (this.showLabel == false) { + this.labelOptions.show = false; + } + // set the default padMax, padMin if not specified + // special check, if no padding desired, padding + // should be set to 1.0 + if (this.pad == 0) { + this.pad = 1.0; + } + if (this.padMax == 0) { + this.padMax = 1.0; + } + if (this.padMin == 0) { + this.padMin = 1.0; + } + if (this.padMax == null) { + this.padMax = (this.pad-1)/2 + 1; + } + if (this.padMin == null) { + this.padMin = (this.pad-1)/2 + 1; + } + // now that padMin and padMax are correctly set, reset pad in case user has supplied + // padMin and/or padMax + this.pad = this.padMax + this.padMin - 1; + if (this.min != null || this.max != null) { + this.autoscale = false; + } + // if not set, sync ticks for y axes but not x by default. + if (this.syncTicks == null && this.name.indexOf('y') > -1) { + this.syncTicks = true; + } + else if (this.syncTicks == null){ + this.syncTicks = false; + } + this.renderer.init.call(this, this.rendererOptions); + + }; + + Axis.prototype.draw = function(ctx) { + return this.renderer.draw.call(this, ctx); + + }; + + Axis.prototype.set = function() { + this.renderer.set.call(this); + }; + + Axis.prototype.pack = function(pos, offsets) { + if (this.show) { + this.renderer.pack.call(this, pos, offsets); + } + // these properties should all be available now. + if (this._min == null) { + this._min = this.min; + this._max = this.max; + this._tickInterval = this.tickInterval; + this._numberTicks = this.numberTicks; + this.__ticks = this._ticks; + } + }; + + // reset the axis back to original values if it has been scaled, zoomed, etc. + Axis.prototype.reset = function() { + this.renderer.reset.call(this); + }; + + Axis.prototype.resetScale = function() { + this.min = null; + this.max = null; + this.numberTicks = null; + this.tickInterval = null; + }; + + /** + * Class: Legend + * Legend object. Cannot be instantiated directly, but created + * by the Plot oject. Legend properties can be set or overriden by the + * options passed in from the user. + */ + function Legend(options) { + $.jqplot.ElemContainer.call(this); + // Group: Properties + + // prop: show + // Wether to display the legend on the graph. + this.show = false; + // prop: location + // Placement of the legend. one of the compass directions: nw, n, ne, e, se, s, sw, w + this.location = 'ne'; + // prop: labels + // Array of labels to use. By default the renderer will look for labels on the series. + // Labels specified in this array will override labels specified on the series. + this.labels = []; + // prop: showLabels + // true to show the label text on the legend. + this.showLabels = true; + // prop: showSwatch + // true to show the color swatches on the legend. + this.showSwatches = true; + // prop: placement + // "insideGrid" places legend inside the grid area of the plot. + // "outsideGrid" places the legend outside the grid but inside the plot container, + // shrinking the grid to accomodate the legend. + // "inside" synonym for "insideGrid", + // "outside" places the legend ouside the grid area, but does not shrink the grid which + // can cause the legend to overflow the plot container. + this.placement = "insideGrid"; + // prop: xoffset + // DEPRECATED. Set the margins on the legend using the marginTop, marginLeft, etc. + // properties or via CSS margin styling of the .jqplot-table-legend class. + this.xoffset = 0; + // prop: yoffset + // DEPRECATED. Set the margins on the legend using the marginTop, marginLeft, etc. + // properties or via CSS margin styling of the .jqplot-table-legend class. + this.yoffset = 0; + // prop: border + // css spec for the border around the legend box. + this.border; + // prop: background + // css spec for the background of the legend box. + this.background; + // prop: textColor + // css color spec for the legend text. + this.textColor; + // prop: fontFamily + // css font-family spec for the legend text. + this.fontFamily; + // prop: fontSize + // css font-size spec for the legend text. + this.fontSize ; + // prop: rowSpacing + // css padding-top spec for the rows in the legend. + this.rowSpacing = '0.5em'; + // renderer + // A class that will create a DOM object for the legend, + // see <$.jqplot.TableLegendRenderer>. + this.renderer = $.jqplot.TableLegendRenderer; + // prop: rendererOptions + // renderer specific options passed to the renderer. + this.rendererOptions = {}; + // prop: predraw + // Wether to draw the legend before the series or not. + // Used with series specific legend renderers for pie, donut, mekko charts, etc. + this.preDraw = false; + // prop: marginTop + // CSS margin for the legend DOM element. This will set an element + // CSS style for the margin which will override any style sheet setting. + // The default will be taken from the stylesheet. + this.marginTop = null; + // prop: marginRight + // CSS margin for the legend DOM element. This will set an element + // CSS style for the margin which will override any style sheet setting. + // The default will be taken from the stylesheet. + this.marginRight = null; + // prop: marginBottom + // CSS margin for the legend DOM element. This will set an element + // CSS style for the margin which will override any style sheet setting. + // The default will be taken from the stylesheet. + this.marginBottom = null; + // prop: marginLeft + // CSS margin for the legend DOM element. This will set an element + // CSS style for the margin which will override any style sheet setting. + // The default will be taken from the stylesheet. + this.marginLeft = null; + + this.escapeHtml = false; + this._series = []; + + $.extend(true, this, options); + } + + Legend.prototype = new $.jqplot.ElemContainer(); + Legend.prototype.constructor = Legend; + + Legend.prototype.setOptions = function(options) { + $.extend(true, this, options); + + // Try to emulate deprecated behaviour + // if user has specified xoffset or yoffset, copy these to + // the margin properties. + + if (this.placement == 'inside') this.placement = 'insideGrid'; + + if (this.xoffset >0) { + if (this.placement == 'insideGrid') { + switch (this.location) { + case 'nw': + case 'w': + case 'sw': + if (this.marginLeft == null) { + this.marginLeft = this.xoffset + 'px'; + } + this.marginRight = '0px'; + break; + case 'ne': + case 'e': + case 'se': + default: + if (this.marginRight == null) { + this.marginRight = this.xoffset + 'px'; + } + this.marginLeft = '0px'; + break; + } + } + else if (this.placement == 'outside') { + switch (this.location) { + case 'nw': + case 'w': + case 'sw': + if (this.marginRight == null) { + this.marginRight = this.xoffset + 'px'; + } + this.marginLeft = '0px'; + break; + case 'ne': + case 'e': + case 'se': + default: + if (this.marginLeft == null) { + this.marginLeft = this.xoffset + 'px'; + } + this.marginRight = '0px'; + break; + } + } + this.xoffset = 0; + } + + if (this.yoffset >0) { + if (this.placement == 'outside') { + switch (this.location) { + case 'sw': + case 's': + case 'se': + if (this.marginTop == null) { + this.marginTop = this.yoffset + 'px'; + } + this.marginBottom = '0px'; + break; + case 'ne': + case 'n': + case 'nw': + default: + if (this.marginBottom == null) { + this.marginBottom = this.yoffset + 'px'; + } + this.marginTop = '0px'; + break; + } + } + else if (this.placement == 'insideGrid') { + switch (this.location) { + case 'sw': + case 's': + case 'se': + if (this.marginBottom == null) { + this.marginBottom = this.yoffset + 'px'; + } + this.marginTop = '0px'; + break; + case 'ne': + case 'n': + case 'nw': + default: + if (this.marginTop == null) { + this.marginTop = this.yoffset + 'px'; + } + this.marginBottom = '0px'; + break; + } + } + this.yoffset = 0; + } + + // TO-DO: + // Handle case where offsets are < 0. + // + }; + + Legend.prototype.init = function() { + this.renderer = new this.renderer(); + this.renderer.init.call(this, this.rendererOptions); + }; + + Legend.prototype.draw = function(offsets) { + for (var i=0; i<$.jqplot.preDrawLegendHooks.length; i++){ + $.jqplot.preDrawLegendHooks[i].call(this, offsets); + } + return this.renderer.draw.call(this, offsets); + }; + + Legend.prototype.pack = function(offsets) { + this.renderer.pack.call(this, offsets); + }; + + /** + * Class: Title + * Plot Title object. Cannot be instantiated directly, but created + * by the Plot oject. Title properties can be set or overriden by the + * options passed in from the user. + * + * Parameters: + * text - text of the title. + */ + function Title(text) { + $.jqplot.ElemContainer.call(this); + // Group: Properties + + // prop: text + // text of the title; + this.text = text; + // prop: show + // wether or not to show the title + this.show = true; + // prop: fontFamily + // css font-family spec for the text. + this.fontFamily; + // prop: fontSize + // css font-size spec for the text. + this.fontSize ; + // prop: textAlign + // css text-align spec for the text. + this.textAlign; + // prop: textColor + // css color spec for the text. + this.textColor; + // prop: renderer + // A class for creating a DOM element for the title, + // see <$.jqplot.DivTitleRenderer>. + this.renderer = $.jqplot.DivTitleRenderer; + // prop: rendererOptions + // renderer specific options passed to the renderer. + this.rendererOptions = {}; + } + + Title.prototype = new $.jqplot.ElemContainer(); + Title.prototype.constructor = Title; + + Title.prototype.init = function() { + this.renderer = new this.renderer(); + this.renderer.init.call(this, this.rendererOptions); + }; + + Title.prototype.draw = function(width) { + return this.renderer.draw.call(this, width); + }; + + Title.prototype.pack = function() { + this.renderer.pack.call(this); + }; + + + /** + * Class: Series + * An individual data series object. Cannot be instantiated directly, but created + * by the Plot oject. Series properties can be set or overriden by the + * options passed in from the user. + */ + function Series() { + $.jqplot.ElemContainer.call(this); + // Group: Properties + // Properties will be assigned from a series array at the top level of the + // options. If you had two series and wanted to change the color and line + // width of the first and set the second to use the secondary y axis with + // no shadow and supply custom labels for each: + // > { + // > series:[ + // > {color: '#ff4466', lineWidth: 5, label:'good line'}, + // > {yaxis: 'y2axis', shadow: false, label:'bad line'} + // > ] + // > } + + // prop: show + // wether or not to draw the series. + this.show = true; + // prop: xaxis + // which x axis to use with this series, either 'xaxis' or 'x2axis'. + this.xaxis = 'xaxis'; + this._xaxis; + // prop: yaxis + // which y axis to use with this series, either 'yaxis' or 'y2axis'. + this.yaxis = 'yaxis'; + this._yaxis; + this.gridBorderWidth = 2.0; + // prop: renderer + // A class of a renderer which will draw the series, + // see <$.jqplot.LineRenderer>. + this.renderer = $.jqplot.LineRenderer; + // prop: rendererOptions + // Options to pass on to the renderer. + this.rendererOptions = {}; + this.data = []; + this.gridData = []; + // prop: label + // Line label to use in the legend. + this.label = ''; + // prop: showLabel + // true to show label for this series in the legend. + this.showLabel = true; + // prop: color + // css color spec for the series + this.color; + // prop: lineWidth + // width of the line in pixels. May have different meanings depending on renderer. + this.lineWidth = 2.5; + // prop: shadow + // wether or not to draw a shadow on the line + this.shadow = true; + // prop: shadowAngle + // Shadow angle in degrees + this.shadowAngle = 45; + // prop: shadowOffset + // Shadow offset from line in pixels + this.shadowOffset = 1.25; + // prop: shadowDepth + // Number of times shadow is stroked, each stroke offset shadowOffset from the last. + this.shadowDepth = 3; + // prop: shadowAlpha + // Alpha channel transparency of shadow. 0 = transparent. + this.shadowAlpha = '0.1'; + // prop: breakOnNull + // Not implemented. wether line segments should be be broken at null value. + // False will join point on either side of line. + this.breakOnNull = false; + // prop: markerRenderer + // A class of a renderer which will draw marker (e.g. circle, square, ...) at the data points, + // see <$.jqplot.MarkerRenderer>. + this.markerRenderer = $.jqplot.MarkerRenderer; + // prop: markerOptions + // renderer specific options to pass to the markerRenderer, + // see <$.jqplot.MarkerRenderer>. + this.markerOptions = {}; + // prop: showLine + // wether to actually draw the line or not. Series will still be renderered, even if no line is drawn. + this.showLine = true; + // prop: showMarker + // wether or not to show the markers at the data points. + this.showMarker = true; + // prop: index + // 0 based index of this series in the plot series array. + this.index; + // prop: fill + // true or false, wether to fill under lines or in bars. + // May not be implemented in all renderers. + this.fill = false; + // prop: fillColor + // CSS color spec to use for fill under line. Defaults to line color. + this.fillColor; + // prop: fillAlpha + // Alpha transparency to apply to the fill under the line. + // Use this to adjust alpha separate from fill color. + this.fillAlpha; + // prop: fillAndStroke + // If true will stroke the line (with color this.color) as well as fill under it. + // Applies only when fill is true. + this.fillAndStroke = false; + // prop: disableStack + // true to not stack this series with other series in the plot. + // To render properly, non-stacked series must come after any stacked series + // in the plot's data series array. So, the plot's data series array would look like: + // > [stackedSeries1, stackedSeries2, ..., nonStackedSeries1, nonStackedSeries2, ...] + // disableStack will put a gap in the stacking order of series, and subsequent + // stacked series will not fill down through the non-stacked series and will + // most likely not stack properly on top of the non-stacked series. + this.disableStack = false; + // _stack is set by the Plot if the plot is a stacked chart. + // will stack lines or bars on top of one another to build a "mountain" style chart. + // May not be implemented in all renderers. + this._stack = false; + // prop: neighborThreshold + // how close or far (in pixels) the cursor must be from a point marker to detect the point. + this.neighborThreshold = 4; + // prop: fillToZero + // true will force bar and filled series to fill toward zero on the fill Axis. + this.fillToZero = false; + // prop: fillToValue + // fill a filled series to this value on the fill axis. + // Works in conjunction with fillToZero, so that must be true. + this.fillToValue = 0; + // prop: fillAxis + // Either 'x' or 'y'. Which axis to fill the line toward if fillToZero is true. + // 'y' means fill up/down to 0 on the y axis for this series. + this.fillAxis = 'y'; + // prop: useNegativeColors + // true to color negative values differently in filled and bar charts. + this.useNegativeColors = true; + this._stackData = []; + // _plotData accounts for stacking. If plots not stacked, _plotData and data are same. If + // stacked, _plotData is accumulation of stacking data. + this._plotData = []; + // _plotValues hold the individual x and y values that will be plotted for this series. + this._plotValues = {x:[], y:[]}; + // statistics about the intervals between data points. Used for auto scaling. + this._intervals = {x:{}, y:{}}; + // data from the previous series, for stacked charts. + this._prevPlotData = []; + this._prevGridData = []; + this._stackAxis = 'y'; + this._primaryAxis = '_xaxis'; + // give each series a canvas to draw on. This should allow for redrawing speedups. + this.canvas = new $.jqplot.GenericCanvas(); + this.shadowCanvas = new $.jqplot.GenericCanvas(); + this.plugins = {}; + // sum of y values in this series. + this._sumy = 0; + this._sumx = 0; + } + + Series.prototype = new $.jqplot.ElemContainer(); + Series.prototype.constructor = Series; + + Series.prototype.init = function(index, gridbw, plot) { + // weed out any null values in the data. + this.index = index; + this.gridBorderWidth = gridbw; + var d = this.data; + var temp = [], i; + for (i=0; i. + this.renderer = $.jqplot.CanvasGridRenderer; + // prop: rendererOptions + // Options to pass on to the renderer, + // see <$.jqplot.CanvasGridRenderer>. + this.rendererOptions = {}; + this._offsets = {top:null, bottom:null, left:null, right:null}; + } + + Grid.prototype = new $.jqplot.ElemContainer(); + Grid.prototype.constructor = Grid; + + Grid.prototype.init = function() { + this.renderer = new this.renderer(); + this.renderer.init.call(this, this.rendererOptions); + }; + + Grid.prototype.createElement = function(offsets) { + this._offsets = offsets; + return this.renderer.createElement.call(this); + }; + + Grid.prototype.draw = function() { + this.renderer.draw.call(this); + }; + + $.jqplot.GenericCanvas = function() { + $.jqplot.ElemContainer.call(this); + this._ctx; + }; + + $.jqplot.GenericCanvas.prototype = new $.jqplot.ElemContainer(); + $.jqplot.GenericCanvas.prototype.constructor = $.jqplot.GenericCanvas; + + $.jqplot.GenericCanvas.prototype.createElement = function(offsets, clss, plotDimensions) { + this._offsets = offsets; + var klass = 'jqplot'; + if (clss != undefined) { + klass = clss; + } + var elem; + // if this canvas already has a dom element, don't make a new one. + if (this._elem) { + elem = this._elem.get(0); + } + else { + elem = document.createElement('canvas'); + } + // if new plotDimensions supplied, use them. + if (plotDimensions != undefined) { + this._plotDimensions = plotDimensions; + } + + elem.width = this._plotDimensions.width - this._offsets.left - this._offsets.right; + elem.height = this._plotDimensions.height - this._offsets.top - this._offsets.bottom; + this._elem = $(elem); + this._elem.css({ position: 'absolute', left: this._offsets.left, top: this._offsets.top }); + + this._elem.addClass(klass); + if ($.jqplot.use_excanvas) { + window.G_vmlCanvasManager.init_(document); + elem = window.G_vmlCanvasManager.initElement(elem); + } + return this._elem; + }; + + $.jqplot.GenericCanvas.prototype.setContext = function() { + this._ctx = this._elem.get(0).getContext("2d"); + return this._ctx; + }; + + $.jqplot.HooksManager = function () { + this.hooks =[]; + }; + + $.jqplot.HooksManager.prototype.addOnce = function(fn) { + var havehook = false, i; + for (i=0; i { + // > axesDefaults:{min:0}, + // > series:[{color:'#6633dd'}], + // > title: 'A Plot' + // > } + // + // prop: data + // user's data. Data should *NOT* be specified in the options object, + // but be passed in as the second argument to the $.jqplot() function. + // The data property is described here soley for reference. + // The data should be in the form of an array of 2D or 1D arrays like + // > [ [[x1, y1], [x2, y2],...], [y1, y2, ...] ]. + this.data = []; + // prop dataRenderer + // A callable which can be used to preprocess data passed into the plot. + // Will be called with 2 arguments, the plot data and a reference to the plot. + this.dataRenderer; + // prop dataRendererOptions + // Options that will be passed to the dataRenderer. + // Can be of any type. + this.dataRendererOptions; + // The id of the dom element to render the plot into + this.targetId = null; + // the jquery object for the dom target. + this.target = null; + this.defaults = { + // prop: axesDefaults + // default options that will be applied to all axes. + // see for axes options. + axesDefaults: {}, + axes: {xaxis:{}, yaxis:{}, x2axis:{}, y2axis:{}, y3axis:{}, y4axis:{}, y5axis:{}, y6axis:{}, y7axis:{}, y8axis:{}, y9axis:{}}, + // prop: seriesDefaults + // default options that will be applied to all series. + // see for series options. + seriesDefaults: {}, + gridPadding: {top:10, right:10, bottom:23, left:10}, + series:[] + }; + // prop: series + // Array of series object options. + // see for series specific options. + this.series = []; + // prop: axes + // up to 4 axes are supported, each with it's own options, + // See for axis specific options. + this.axes = {xaxis: new Axis('xaxis'), yaxis: new Axis('yaxis'), x2axis: new Axis('x2axis'), y2axis: new Axis('y2axis'), y3axis: new Axis('y3axis'), y4axis: new Axis('y4axis'), y5axis: new Axis('y5axis'), y6axis: new Axis('y6axis'), y7axis: new Axis('y7axis'), y8axis: new Axis('y8axis'), y9axis: new Axis('y9axis')}; + // prop: grid + // See for grid specific options. + this.grid = new Grid(); + // prop: legend + // see <$.jqplot.TableLegendRenderer> + this.legend = new Legend(); + this.baseCanvas = new $.jqplot.GenericCanvas(); + // array of series indicies. Keep track of order + // which series canvases are displayed, lowest + // to highest, back to front. + this.seriesStack = []; + this.previousSeriesStack = []; + this.eventCanvas = new $.jqplot.GenericCanvas(); + this._width = null; + this._height = null; + this._plotDimensions = {height:null, width:null}; + this._gridPadding = {top:10, right:10, bottom:10, left:10}; + // a shortcut for axis syncTicks options. Not implemented yet. + this.syncXTicks = true; + // a shortcut for axis syncTicks options. Not implemented yet. + this.syncYTicks = true; + // prop: seriesColors + // Ann array of CSS color specifications that will be applied, in order, + // to the series in the plot. Colors will wrap around so, if their + // are more series than colors, colors will be reused starting at the + // beginning. For pie charts, this specifies the colors of the slices. + this.seriesColors = [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"]; + this.negativeSeriesColors = [ "#498991", "#C08840", "#9F9274", "#546D61", "#646C4A", "#6F6621", "#6E3F5F", "#4F64B0", "#A89050", "#C45923", "#187399", "#945381", "#959E5C", "#C7AF7B", "#478396", "#907294"]; + // prop: sortData + // false to not sort the data passed in by the user. + // Many bar, stakced and other graphs as well as many plugins depend on + // having sorted data. + this.sortData = true; + var seriesColorsIndex = 0; + // prop textColor + // css spec for the css color attribute. Default for the entire plot. + this.textColor; + // prop; fontFamily + // css spec for the font-family attribute. Default for the entire plot. + this.fontFamily; + // prop: fontSize + // css spec for the font-size attribute. Default for the entire plot. + this.fontSize; + // prop: title + // Title object. See for specific options. As a shortcut, you + // can specify the title option as just a string like: title: 'My Plot' + // and this will create a new title object with the specified text. + this.title = new Title(); + // container to hold all of the merged options. Convienence for plugins. + this.options = {}; + // prop: stackSeries + // true or false, creates a stack or "mountain" plot. + // Not all series renderers may implement this option. + this.stackSeries = false; + // prop: defaultAxisStart + // 1-D data series are internally converted into 2-D [x,y] data point arrays + // by jqPlot. This is the default starting value for the missing x or y value. + // The added data will be a monotonically increasing series (e.g. [1, 2, 3, ...]) + // starting at this value. + this.defaultAxisStart = 1; + // array to hold the cumulative stacked series data. + // used to ajust the individual series data, which won't have access to other + // series data. + this._stackData = []; + // array that holds the data to be plotted. This will be the series data + // merged with the the appropriate data from _stackData according to the stackAxis. + this._plotData = []; + // Namespece to hold plugins. Generally non-renderer plugins add themselves to here. + this.plugins = {}; + // Count how many times the draw method has been called while the plot is visible. + // Mostly used to test if plot has never been dran (=0), has been successfully drawn + // into a visible container once (=1) or draw more than once into a visible container. + // Can use this in tests to see if plot has been visibly drawn at least one time. + // After plot has been visibly drawn once, it generally doesn't need redrawn if its + // container is hidden and shown. + this._drawCount = 0; + // this.doCustomEventBinding = true; + // prop: drawIfHidden + // True to execute the draw method even if the plot target is hidden. + // Generally, this should be false. Most plot elements will not be sized/ + // positioned correclty if renderered into a hidden container. To render into + // a hidden container, call the replot method when the container is shown. + this.drawIfHidden = false; + // true to intercept right click events and fire a 'jqplotRightClick' event. + // this will also block the context menu. + this.captureRightClick = false; + this.themeEngine = new $.jqplot.ThemeEngine(); + // sum of y values for all series in plot. + // used in mekko chart. + this._sumy = 0; + this._sumx = 0; + this.preInitHooks = new $.jqplot.HooksManager(); + this.postInitHooks = new $.jqplot.HooksManager(); + this.preParseOptionsHooks = new $.jqplot.HooksManager(); + this.postParseOptionsHooks = new $.jqplot.HooksManager(); + this.preDrawHooks = new $.jqplot.HooksManager(); + this.postDrawHooks = new $.jqplot.HooksManager(); + this.preDrawSeriesHooks = new $.jqplot.HooksManager(); + this.postDrawSeriesHooks = new $.jqplot.HooksManager(); + this.preDrawLegendHooks = new $.jqplot.HooksManager(); + this.addLegendRowHooks = new $.jqplot.HooksManager(); + this.preSeriesInitHooks = new $.jqplot.HooksManager(); + this.postSeriesInitHooks = new $.jqplot.HooksManager(); + this.preParseSeriesOptionsHooks = new $.jqplot.HooksManager(); + this.postParseSeriesOptionsHooks = new $.jqplot.HooksManager(); + this.eventListenerHooks = new $.jqplot.EventListenerManager(); + this.preDrawSeriesShadowHooks = new $.jqplot.HooksManager(); + this.postDrawSeriesShadowHooks = new $.jqplot.HooksManager(); + + this.colorGenerator = $.jqplot.ColorGenerator; + + // Group: methods + // + // method: init + // sets the plot target, checks data and applies user + // options to plot. + this.init = function(target, data, options) { + for (var i=0; i<$.jqplot.preInitHooks.length; i++) { + $.jqplot.preInitHooks[i].call(this, target, data, options); + } + + for (var i=0; i<this.preInitHooks.hooks.length; i++) { + this.preInitHooks.hooks[i].call(this, target, data, options); + } + + this.targetId = '#'+target; + this.target = $('#'+target); + // remove any error class that may be stuck on target. + this.target.removeClass('jqplot-error'); + if (!this.target.get(0)) { + throw "No plot target specified"; + } + + // make sure the target is positioned by some means and set css + if (this.target.css('position') == 'static') { + this.target.css('position', 'relative'); + } + if (!this.target.hasClass('jqplot-target')) { + this.target.addClass('jqplot-target'); + } + + // if no height or width specified, use a default. + if (!this.target.height()) { + var h; + if (options && options.height) { + h = parseInt(options.height, 10); + } + else if (this.target.attr('data-height')) { + h = parseInt(this.target.attr('data-height'), 10); + } + else { + h = parseInt($.jqplot.config.defaultHeight, 10); + } + this._height = h; + this.target.css('height', h+'px'); + } + else { + this._height = this.target.height(); + } + if (!this.target.width()) { + var w; + if (options && options.width) { + w = parseInt(options.width, 10); + } + else if (this.target.attr('data-width')) { + w = parseInt(this.target.attr('data-width'), 10); + } + else { + w = parseInt($.jqplot.config.defaultWidth, 10); + } + this._width = w; + this.target.css('width', w+'px'); + } + else { + this._width = this.target.width(); + } + + this._plotDimensions.height = this._height; + this._plotDimensions.width = this._width; + this.grid._plotDimensions = this._plotDimensions; + this.title._plotDimensions = this._plotDimensions; + this.baseCanvas._plotDimensions = this._plotDimensions; + this.eventCanvas._plotDimensions = this._plotDimensions; + this.legend._plotDimensions = this._plotDimensions; + if (this._height <=0 || this._width <=0 || !this._height || !this._width) { + throw "Canvas dimension not set"; + } + + if (options.dataRenderer && typeof(options.dataRenderer) == "function") { + if (options.dataRendererOptions) { + this.dataRendererOptions = options.dataRendererOptions; + } + this.dataRenderer = options.dataRenderer; + data = this.dataRenderer(data, this, this.dataRendererOptions); + } + + if (data == null) { + throw{ + name: "DataError", + message: "No data to plot." + }; + } + + if (data.constructor != Array || data.length == 0 || data[0].constructor != Array || data[0].length == 0) { + throw{ + name: "DataError", + message: "No data to plot." + }; + } + + this.data = data; + + this.parseOptions(options); + + if (this.textColor) { + this.target.css('color', this.textColor); + } + if (this.fontFamily) { + this.target.css('font-family', this.fontFamily); + } + if (this.fontSize) { + this.target.css('font-size', this.fontSize); + } + + this.title.init(); + this.legend.init(); + this._sumy = 0; + this._sumx = 0; + for (var i=0; i<this.series.length; i++) { + // set default stacking order for series canvases + this.seriesStack.push(i); + this.previousSeriesStack.push(i); + this.series[i].shadowCanvas._plotDimensions = this._plotDimensions; + this.series[i].canvas._plotDimensions = this._plotDimensions; + for (var j=0; j<$.jqplot.preSeriesInitHooks.length; j++) { + $.jqplot.preSeriesInitHooks[j].call(this.series[i], target, data, this.options.seriesDefaults, this.options.series[i], this); + } + for (var j=0; j<this.preSeriesInitHooks.hooks.length; j++) { + this.preSeriesInitHooks.hooks[j].call(this.series[i], target, data, this.options.seriesDefaults, this.options.series[i], this); + } + this.populatePlotData(this.series[i], i); + this.series[i]._plotDimensions = this._plotDimensions; + this.series[i].init(i, this.grid.borderWidth, this); + for (var j=0; j<$.jqplot.postSeriesInitHooks.length; j++) { + $.jqplot.postSeriesInitHooks[j].call(this.series[i], target, data, this.options.seriesDefaults, this.options.series[i], this); + } + for (var j=0; j<this.postSeriesInitHooks.hooks.length; j++) { + this.postSeriesInitHooks.hooks[j].call(this.series[i], target, data, this.options.seriesDefaults, this.options.series[i], this); + } + this._sumy += this.series[i]._sumy; + this._sumx += this.series[i]._sumx; + } + + for (var name in this.axes) { + this.axes[name]._plotDimensions = this._plotDimensions; + this.axes[name].init(); + } + + if (this.sortData) { + sortData(this.series); + } + this.grid.init(); + this.grid._axes = this.axes; + + this.legend._series = this.series; + + for (var i=0; i<$.jqplot.postInitHooks.length; i++) { + $.jqplot.postInitHooks[i].call(this, target, data, options); + } + + for (var i=0; i<this.postInitHooks.hooks.length; i++) { + this.postInitHooks.hooks[i].call(this, target, data, options); + } + }; + + // method: resetAxesScale + // Reset the specified axes min, max, numberTicks and tickInterval properties to null + // or reset these properties on all axes if no list of axes is provided. + // + // Parameters: + // axes - Boolean to reset or not reset all axes or an array or object of axis names to reset. + this.resetAxesScale = function(axes) { + var ax = (axes != undefined) ? axes : this.axes; + if (ax === true) { + ax = this.axes; + } + if (ax.constructor === Array) { + for (var i = 0; i < ax.length; i++) { + this.axes[ax[i]].resetScale(); + } + } + else if (ax.constructor === Object) { + for (var name in ax) { + this.axes[name].resetScale(); + } + } + }; + // method: reInitialize + // reinitialize plot for replotting. + // not called directly. + this.reInitialize = function () { + // Plot should be visible and have a height and width. + // If plot doesn't have height and width for some + // reason, set it by other means. Plot must not have + // a display:none attribute, however. + if (!this.target.height()) { + var h; + if (options && options.height) { + h = parseInt(options.height, 10); + } + else if (this.target.attr('data-height')) { + h = parseInt(this.target.attr('data-height'), 10); + } + else { + h = parseInt($.jqplot.config.defaultHeight, 10); + } + this._height = h; + this.target.css('height', h+'px'); + } + else { + this._height = this.target.height(); + } + if (!this.target.width()) { + var w; + if (options && options.width) { + w = parseInt(options.width, 10); + } + else if (this.target.attr('data-width')) { + w = parseInt(this.target.attr('data-width'), 10); + } + else { + w = parseInt($.jqplot.config.defaultWidth, 10); + } + this._width = w; + this.target.css('width', w+'px'); + } + else { + this._width = this.target.width(); + } + + if (this._height <=0 || this._width <=0 || !this._height || !this._width) { + throw "Target dimension not set"; + } + + this._plotDimensions.height = this._height; + this._plotDimensions.width = this._width; + this.grid._plotDimensions = this._plotDimensions; + this.title._plotDimensions = this._plotDimensions; + this.baseCanvas._plotDimensions = this._plotDimensions; + this.eventCanvas._plotDimensions = this._plotDimensions; + this.legend._plotDimensions = this._plotDimensions; + + for (var n in this.axes) { + this.axes[n]._plotWidth = this._width; + this.axes[n]._plotHeight = this._height; + } + + this.title._plotWidth = this._width; + + if (this.textColor) { + this.target.css('color', this.textColor); + } + if (this.fontFamily) { + this.target.css('font-family', this.fontFamily); + } + if (this.fontSize) { + this.target.css('font-size', this.fontSize); + } + + this._sumy = 0; + this._sumx = 0; + for (var i=0; i<this.series.length; i++) { + this.populatePlotData(this.series[i], i); + this.series[i]._plotDimensions = this._plotDimensions; + this.series[i].canvas._plotDimensions = this._plotDimensions; + //this.series[i].init(i, this.grid.borderWidth); + this._sumy += this.series[i]._sumy; + this._sumx += this.series[i]._sumx; + } + + for (var name in this.axes) { + this.axes[name]._plotDimensions = this._plotDimensions; + this.axes[name]._ticks = []; + this.axes[name].renderer.init.call(this.axes[name], {}); + } + + if (this.sortData) { + sortData(this.series); + } + + this.grid._axes = this.axes; + + this.legend._series = this.series; + }; + + // sort the series data in increasing order. + function sortData(series) { + var d, sd, pd, ppd, ret; + for (var i=0; i<series.length; i++) { + // d = series[i].data; + // sd = series[i]._stackData; + // pd = series[i]._plotData; + // ppd = series[i]._prevPlotData; + var check; + var bat = [series[i].data, series[i]._stackData, series[i]._plotData, series[i]._prevPlotData]; + for (var n=0; n<4; n++) { + check = true; + d = bat[n]; + if (series[i]._stackAxis == 'x') { + for (var j = 0; j < d.length; j++) { + if (typeof(d[j][1]) != "number") { + check = false; + break; + } + } + if (check) { + d.sort(function(a,b) { return a[1] - b[1]; }); + // sd.sort(function(a,b) { return a[1] - b[1]; }); + // pd.sort(function(a,b) { return a[1] - b[1]; }); + // ppd.sort(function(a,b) { return a[1] - b[1]; }); + } + } + else { + for (var j = 0; j < d.length; j++) { + if (typeof(d[j][0]) != "number") { + check = false; + break; + } + } + if (check) { + d.sort(function(a,b) { return a[0] - b[0]; }); + // sd.sort(function(a,b) { return a[0] - b[0]; }); + // pd.sort(function(a,b) { return a[0] - b[0]; }); + // ppd.sort(function(a,b) { return a[0] - b[0]; }); + } + } + } + + } + } + + // populate the _stackData and _plotData arrays for the plot and the series. + this.populatePlotData = function(series, index) { + // if a stacked chart, compute the stacked data + this._plotData = []; + this._stackData = []; + series._stackData = []; + series._plotData = []; + var plotValues = {x:[], y:[]}; + if (this.stackSeries && !series.disableStack) { + series._stack = true; + var sidx = series._stackAxis == 'x' ? 0 : 1; + var idx = sidx ? 0 : 1; + // push the current data into stackData + //this._stackData.push(this.series[i].data); + var temp = $.extend(true, [], series.data); + // create the data that will be plotted for this series + var plotdata = $.extend(true, [], series.data); + // for first series, nothing to add to stackData. + for (var j=0; j<index; j++) { + var cd = this.series[j].data; + for (var k=0; k<cd.length; k++) { + temp[k][0] += cd[k][0]; + temp[k][1] += cd[k][1]; + // only need to sum up the stack axis column of data + plotdata[k][sidx] += cd[k][sidx]; + } + } + for (var i=0; i<plotdata.length; i++) { + plotValues.x.push(plotdata[i][0]); + plotValues.y.push(plotdata[i][1]); + } + this._plotData.push(plotdata); + this._stackData.push(temp); + series._stackData = temp; + series._plotData = plotdata; + series._plotValues = plotValues; + } + else { + for (var i=0; i<series.data.length; i++) { + plotValues.x.push(series.data[i][0]); + plotValues.y.push(series.data[i][1]); + } + this._stackData.push(series.data); + this.series[index]._stackData = series.data; + this._plotData.push(series.data); + series._plotData = series.data; + series._plotValues = plotValues; + } + if (index>0) { + series._prevPlotData = this.series[index-1]._plotData; + } + series._sumy = 0; + series._sumx = 0; + for (i=series.data.length-1; i>-1; i--) { + series._sumy += series.data[i][1]; + series._sumx += series.data[i][0]; + } + }; + + // function to safely return colors from the color array and wrap around at the end. + this.getNextSeriesColor = (function(t) { + var idx = 0; + var sc = t.seriesColors; + + return function () { + if (idx < sc.length) { + return sc[idx++]; + } + else { + idx = 0; + return sc[idx++]; + } + }; + })(this); + + this.parseOptions = function(options){ + for (var i=0; i<this.preParseOptionsHooks.hooks.length; i++) { + this.preParseOptionsHooks.hooks[i].call(this, options); + } + for (var i=0; i<$.jqplot.preParseOptionsHooks.length; i++) { + $.jqplot.preParseOptionsHooks[i].call(this, options); + } + this.options = $.extend(true, {}, this.defaults, options); + this.stackSeries = this.options.stackSeries; + if (this.options.seriesColors) { + this.seriesColors = this.options.seriesColors; + } + if (this.options.negativeSeriesColors) { + this.negativeSeriesColors = this.options.negativeSeriesColors; + } + if (this.options.captureRightClick) { + this.captureRightClick = this.options.captureRightClick; + } + this.defaultAxisStart = (options && options.defaultAxisStart != null) ? options.defaultAxisStart : this.defaultAxisStart; + var cg = new this.colorGenerator(this.seriesColors); + // this._gridPadding = this.options.gridPadding; + $.extend(true, this._gridPadding, this.options.gridPadding); + this.sortData = (this.options.sortData != null) ? this.options.sortData : this.sortData; + for (var n in this.axes) { + var axis = this.axes[n]; + $.extend(true, axis, this.options.axesDefaults, this.options.axes[n]); + axis._plotWidth = this._width; + axis._plotHeight = this._height; + } + if (this.data.length == 0) { + this.data = []; + for (var i=0; i<this.options.series.length; i++) { + this.data.push(this.options.series.data); + } + } + + var normalizeData = function(data, dir, start) { + // return data as an array of point arrays, + // in form [[x1,y1...], [x2,y2...], ...] + var temp = []; + var i; + dir = dir || 'vertical'; + if (!(data[0] instanceof Array)) { + // we have a series of scalars. One line with just y values. + // turn the scalar list of data into a data array of form: + // [[1, data[0]], [2, data[1]], ...] + for (i=0; i<data.length; i++) { + if (dir == 'vertical') { + temp.push([start + i, data[i]]); + } + else { + temp.push([data[i], start+i]); + } + } + } + else { + // we have a properly formatted data series, copy it. + $.extend(true, temp, data); + } + return temp; + }; + + for (var i=0; i<this.data.length; i++) { + var temp = new Series(); + for (var j=0; j<$.jqplot.preParseSeriesOptionsHooks.length; j++) { + $.jqplot.preParseSeriesOptionsHooks[j].call(temp, this.options.seriesDefaults, this.options.series[i]); + } + for (var j=0; j<this.preParseSeriesOptionsHooks.hooks.length; j++) { + this.preParseSeriesOptionsHooks.hooks[j].call(temp, this.options.seriesDefaults, this.options.series[i]); + } + $.extend(true, temp, {seriesColors:this.seriesColors, negativeSeriesColors:this.negativeSeriesColors}, this.options.seriesDefaults, this.options.series[i]); + var dir = 'vertical'; + if (temp.renderer.constructor == $.jqplot.barRenderer && temp.rendererOptions && temp.rendererOptions.barDirection == 'horizontal') { + dir = 'horizontal'; + } + temp.data = normalizeData(this.data[i], dir, this.defaultAxisStart); + switch (temp.xaxis) { + case 'xaxis': + temp._xaxis = this.axes.xaxis; + break; + case 'x2axis': + temp._xaxis = this.axes.x2axis; + break; + default: + break; + } + temp._yaxis = this.axes[temp.yaxis]; + temp._xaxis._series.push(temp); + temp._yaxis._series.push(temp); + if (temp.show) { + temp._xaxis.show = true; + temp._yaxis.show = true; + } + + // parse the renderer options and apply default colors if not provided + if (!temp.color && temp.show != false) { + temp.color = cg.next(); + } + if (!temp.label) { + temp.label = 'Series '+ (i+1).toString(); + } + // temp.rendererOptions.show = temp.show; + // $.extend(true, temp.renderer, {color:this.seriesColors[i]}, this.rendererOptions); + this.series.push(temp); + for (var j=0; j<$.jqplot.postParseSeriesOptionsHooks.length; j++) { + $.jqplot.postParseSeriesOptionsHooks[j].call(this.series[i], this.options.seriesDefaults, this.options.series[i]); + } + for (var j=0; j<this.postParseSeriesOptionsHooks.hooks.length; j++) { + this.postParseSeriesOptionsHooks.hooks[j].call(this.series[i], this.options.seriesDefaults, this.options.series[i]); + } + } + + // copy the grid and title options into this object. + $.extend(true, this.grid, this.options.grid); + // if axis border properties aren't set, set default. + for (var n in this.axes) { + var axis = this.axes[n]; + if (axis.borderWidth == null) { + axis.borderWidth =this.grid.borderWidth; + } + if (axis.borderColor == null) { + if (n != 'xaxis' && n != 'x2axis' && axis.useSeriesColor === true && axis.show) { + axis.borderColor = axis._series[0].color; + } + else { + axis.borderColor = this.grid.borderColor; + } + } + } + + if (typeof this.options.title == 'string') { + this.title.text = this.options.title; + } + else if (typeof this.options.title == 'object') { + $.extend(true, this.title, this.options.title); + } + this.title._plotWidth = this._width; + this.legend.setOptions(this.options.legend); + + for (var i=0; i<$.jqplot.postParseOptionsHooks.length; i++) { + $.jqplot.postParseOptionsHooks[i].call(this, options); + } + for (var i=0; i<this.postParseOptionsHooks.hooks.length; i++) { + this.postParseOptionsHooks.hooks[i].call(this, options); + } + }; + + // method: replot + // Does a reinitialization of the plot followed by + // a redraw. Method could be used to interactively + // change plot characteristics and then replot. + // + // Parameters: + // options - Options used for replotting. + // + // Properties: + // clear - false to not clear (empty) the plot container before replotting (default: true). + // resetAxes - true to reset all axes min, max, numberTicks and tickInterval setting so axes will rescale themselves. + // optionally pass in list of axes to reset (e.g. ['xaxis', 'y2axis']) (default: false). + this.replot = function(options) { + var opts = (options != undefined) ? options : {}; + var clear = (opts.clear != undefined) ? opts.clear : true; + var resetAxes = (opts.resetAxes != undefined) ? opts.resetAxes : false; + this.target.trigger('jqplotPreReplot'); + if (clear) { + this.target.empty(); + } + if (resetAxes) { + this.resetAxesScale(resetAxes); + } + this.reInitialize(); + this.draw(); + this.target.trigger('jqplotPostReplot'); + }; + + // method: redraw + // Empties the plot target div and redraws the plot. + // This enables plot data and properties to be changed + // and then to comletely clear the plot and redraw. + // redraw *will not* reinitialize any plot elements. + // That is, axes will not be autoscaled and defaults + // will not be reapplied to any plot elements. redraw + // is used primarily with zooming. + // + // Parameters: + // clear - false to not clear (empty) the plot container before redrawing (default: true). + this.redraw = function(clear) { + clear = (clear != null) ? clear : true; + this.target.trigger('jqplotPreRedraw'); + if (clear) { + this.target.empty(); + } + for (var ax in this.axes) { + this.axes[ax]._ticks = []; + } + for (var i=0; i<this.series.length; i++) { + this.populatePlotData(this.series[i], i); + } + this._sumy = 0; + this._sumx = 0; + for (i=0; i<this.series.length; i++) { + this._sumy += this.series[i]._sumy; + this._sumx += this.series[i]._sumx; + } + this.draw(); + this.target.trigger('jqplotPostRedraw'); + }; + + // method: draw + // Draws all elements of the plot into the container. + // Does not clear the container before drawing. + this.draw = function(){ + if (this.drawIfHidden || this.target.is(':visible')) { + this.target.trigger('jqplotPreDraw'); + var i, j; + for (i=0; i<$.jqplot.preDrawHooks.length; i++) { + $.jqplot.preDrawHooks[i].call(this); + } + for (i=0; i<this.preDrawHooks.hooks.length; i++) { + this.preDrawHooks.hooks[i].call(this); + } + // create an underlying canvas to be used for special features. + this.target.append(this.baseCanvas.createElement({left:0, right:0, top:0, bottom:0}, 'jqplot-base-canvas')); + this.baseCanvas.setContext(); + this.target.append(this.title.draw()); + this.title.pack({top:0, left:0}); + + // make room for the legend between the grid and the edge. + var legendElem = this.legend.draw(); + + var gridPadding = {top:0, left:0, bottom:0, right:0}; + + if (this.legend.placement == "outsideGrid") { + // temporarily append the legend to get dimensions + this.target.append(legendElem); + switch (this.legend.location) { + case 'n': + gridPadding.top += this.legend.getHeight(); + break; + case 's': + gridPadding.bottom += this.legend.getHeight(); + break; + case 'ne': + case 'e': + case 'se': + gridPadding.right += this.legend.getWidth(); + break; + case 'nw': + case 'w': + case 'sw': + gridPadding.left += this.legend.getWidth(); + break; + default: // same as 'ne' + gridPadding.right += this.legend.getWidth(); + break; + } + legendElem = legendElem.detach(); + } + + var ax = this.axes; + for (var name in ax) { + this.target.append(ax[name].draw(this.baseCanvas._ctx)); + ax[name].set(); + } + if (ax.yaxis.show) { + gridPadding.left += ax.yaxis.getWidth(); + } + var ra = ['y2axis', 'y3axis', 'y4axis', 'y5axis', 'y6axis', 'y7axis', 'y8axis', 'y9axis']; + var rapad = [0, 0, 0, 0, 0, 0, 0, 0]; + var gpr = 0; + var n; + for (n=0; n<8; n++) { + if (ax[ra[n]].show) { + gpr += ax[ra[n]].getWidth(); + rapad[n] = gpr; + } + } + gridPadding.right += gpr; + if (ax.x2axis.show) { + gridPadding.top += ax.x2axis.getHeight(); + } + if (this.title.show) { + gridPadding.top += this.title.getHeight(); + } + if (ax.xaxis.show) { + gridPadding.bottom += ax.xaxis.getHeight(); + } + + // end of gridPadding adjustments. + var arr = ['top', 'bottom', 'left', 'right']; + for (var n in arr) { + if (gridPadding[arr[n]]) { + this._gridPadding[arr[n]] = gridPadding[arr[n]]; + } + } + + var legendPadding = (this.legend.placement == 'outsideGrid') ? {top:this.title.getHeight(), left: 0, right: 0, bottom: 0} : this._gridPadding; + + ax.xaxis.pack({position:'absolute', bottom:this._gridPadding.bottom - ax.xaxis.getHeight(), left:0, width:this._width}, {min:this._gridPadding.left, max:this._width - this._gridPadding.right}); + ax.yaxis.pack({position:'absolute', top:0, left:this._gridPadding.left - ax.yaxis.getWidth(), height:this._height}, {min:this._height - this._gridPadding.bottom, max: this._gridPadding.top}); + ax.x2axis.pack({position:'absolute', top:this._gridPadding.top - ax.x2axis.getHeight(), left:0, width:this._width}, {min:this._gridPadding.left, max:this._width - this._gridPadding.right}); + for (i=8; i>0; i--) { + ax[ra[i-1]].pack({position:'absolute', top:0, right:this._gridPadding.right - rapad[i-1]}, {min:this._height - this._gridPadding.bottom, max: this._gridPadding.top}); + } + // ax.y2axis.pack({position:'absolute', top:0, right:0}, {min:this._height - this._gridPadding.bottom, max: this._gridPadding.top}); + + this.target.append(this.grid.createElement(this._gridPadding)); + this.grid.draw(); + + // put the shadow canvases behind the series canvases so shadows don't overlap on stacked bars. + for (i=0; i<this.series.length; i++) { + // draw series in order of stacking. This affects only + // order in which canvases are added to dom. + j = this.seriesStack[i]; + this.target.append(this.series[j].shadowCanvas.createElement(this._gridPadding, 'jqplot-series-shadowCanvas')); + this.series[j].shadowCanvas.setContext(); + this.series[j].shadowCanvas._elem.data('seriesIndex', j); + } + + for (i=0; i<this.series.length; i++) { + // draw series in order of stacking. This affects only + // order in which canvases are added to dom. + j = this.seriesStack[i]; + this.target.append(this.series[j].canvas.createElement(this._gridPadding, 'jqplot-series-canvas')); + this.series[j].canvas.setContext(); + this.series[j].canvas._elem.data('seriesIndex', j); + } + // Need to use filled canvas to capture events in IE. + // Also, canvas seems to block selection of other elements in document on FF. + this.target.append(this.eventCanvas.createElement(this._gridPadding, 'jqplot-event-canvas')); + this.eventCanvas.setContext(); + this.eventCanvas._ctx.fillStyle = 'rgba(0,0,0,0)'; + this.eventCanvas._ctx.fillRect(0,0,this.eventCanvas._ctx.canvas.width, this.eventCanvas._ctx.canvas.height); + + // bind custom event handlers to regular events. + this.bindCustomEvents(); + + // draw legend before series if the series needs to know the legend dimensions. + if (this.legend.preDraw) { + this.eventCanvas._elem.before(legendElem); + this.legend.pack(legendPadding); + if (this.legend._elem) { + this.drawSeries({legendInfo:{location:this.legend.location, placement:this.legend.placement, width:this.legend.getWidth(), height:this.legend.getHeight(), xoffset:this.legend.xoffset, yoffset:this.legend.yoffset}}); + } + else { + this.drawSeries(); + } + } + else { // draw series before legend + this.drawSeries(); + $(this.series[this.series.length-1].canvas._elem).after(legendElem); + this.legend.pack(legendPadding); + } + + // register event listeners on the overlay canvas + for (var i=0; i<$.jqplot.eventListenerHooks.length; i++) { + // in the handler, this will refer to the eventCanvas dom element. + // make sure there are references back into plot objects. + this.eventCanvas._elem.bind($.jqplot.eventListenerHooks[i][0], {plot:this}, $.jqplot.eventListenerHooks[i][1]); + } + + // register event listeners on the overlay canvas + for (var i=0; i<this.eventListenerHooks.hooks.length; i++) { + // in the handler, this will refer to the eventCanvas dom element. + // make sure there are references back into plot objects. + this.eventCanvas._elem.bind(this.eventListenerHooks.hooks[i][0], {plot:this}, this.eventListenerHooks.hooks[i][1]); + } + + for (var i=0; i<$.jqplot.postDrawHooks.length; i++) { + $.jqplot.postDrawHooks[i].call(this); + } + + for (var i=0; i<this.postDrawHooks.hooks.length; i++) { + this.postDrawHooks.hooks[i].call(this); + } + + if (this.target.is(':visible')) { + this._drawCount += 1; + } + + this.target.trigger('jqplotPostDraw', [this]); + } + }; + + this.bindCustomEvents = function() { + this.eventCanvas._elem.bind('click', {plot:this}, this.onClick); + this.eventCanvas._elem.bind('dblclick', {plot:this}, this.onDblClick); + this.eventCanvas._elem.bind('mousedown', {plot:this}, this.onMouseDown); + this.eventCanvas._elem.bind('mousemove', {plot:this}, this.onMouseMove); + this.eventCanvas._elem.bind('mouseenter', {plot:this}, this.onMouseEnter); + this.eventCanvas._elem.bind('mouseleave', {plot:this}, this.onMouseLeave); + if (this.captureRightClick) { + this.eventCanvas._elem.bind('mouseup', {plot:this}, this.onRightClick); + this.eventCanvas._elem.get(0).oncontextmenu = function() { + return false; + }; + } + else { + this.eventCanvas._elem.bind('mouseup', {plot:this}, this.onMouseUp); + } + }; + + function getEventPosition(ev) { + var plot = ev.data.plot; + var go = plot.eventCanvas._elem.offset(); + var gridPos = {x:ev.pageX - go.left, y:ev.pageY - go.top}; + var dataPos = {xaxis:null, yaxis:null, x2axis:null, y2axis:null, y3axis:null, y4axis:null, y5axis:null, y6axis:null, y7axis:null, y8axis:null, y9axis:null}; + var an = ['xaxis', 'yaxis', 'x2axis', 'y2axis', 'y3axis', 'y4axis', 'y5axis', 'y6axis', 'y7axis', 'y8axis', 'y9axis']; + var ax = plot.axes; + var n, axis; + for (n=11; n>0; n--) { + axis = an[n-1]; + if (ax[axis].show) { + dataPos[axis] = ax[axis].series_p2u(gridPos[axis.charAt(0)]); + } + } + + return {offsets:go, gridPos:gridPos, dataPos:dataPos}; + } + + + // function to check if event location is over a area area + function checkIntersection(gridpos, plot) { + var series = plot.series; + var i, j, k, s, r, x, y, theta, sm, sa, minang, maxang; + var d0, d, p, pp, points, bw; + var threshold, t; + for (k=plot.seriesStack.length-1; k>=0; k--) { + i = plot.seriesStack[k]; + s = series[i]; + switch (s.renderer.constructor) { + case $.jqplot.BarRenderer: + x = gridpos.x; + y = gridpos.y; + for (j=s.gridData.length-1; j>=0; j--) { + points = s._barPoints[j]; + if (x>points[0][0] && x<points[2][0] && y>points[2][1] && y<points[0][1]) { + return {seriesIndex:s.index, pointIndex:j, gridData:p, data:s.data[j], points:s._barPoints[j]}; + } + } + break; + + case $.jqplot.DonutRenderer: + sa = s.startAngle/180*Math.PI; + x = gridpos.x - s._center[0]; + y = gridpos.y - s._center[1]; + r = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + if (x > 0 && -y >= 0) { + theta = 2*Math.PI - Math.atan(-y/x); + } + else if (x > 0 && -y < 0) { + theta = -Math.atan(-y/x); + } + else if (x < 0) { + theta = Math.PI - Math.atan(-y/x); + } + else if (x == 0 && -y > 0) { + theta = 3*Math.PI/2; + } + else if (x == 0 && -y < 0) { + theta = Math.PI/2; + } + else if (x == 0 && y == 0) { + theta = 0; + } + if (sa) { + theta -= sa; + if (theta < 0) { + theta += 2*Math.PI; + } + else if (theta > 2*Math.PI) { + theta -= 2*Math.PI; + } + } + + sm = s.sliceMargin/180*Math.PI; + if (r < s._radius && r > s._innerRadius) { + for (j=0; j<s.gridData.length; j++) { + minang = (j>0) ? s.gridData[j-1][1]+sm : sm; + maxang = s.gridData[j][1]; + if (theta > minang && theta < maxang) { + return {seriesIndex:s.index, pointIndex:j, gridData:s.gridData[j], data:s.data[j]}; + } + } + } + break; + + case $.jqplot.PieRenderer: + sa = s.startAngle/180*Math.PI; + x = gridpos.x - s._center[0]; + y = gridpos.y - s._center[1]; + r = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + if (x > 0 && -y >= 0) { + theta = 2*Math.PI - Math.atan(-y/x); + } + else if (x > 0 && -y < 0) { + theta = -Math.atan(-y/x); + } + else if (x < 0) { + theta = Math.PI - Math.atan(-y/x); + } + else if (x == 0 && -y > 0) { + theta = 3*Math.PI/2; + } + else if (x == 0 && -y < 0) { + theta = Math.PI/2; + } + else if (x == 0 && y == 0) { + theta = 0; + } + if (sa) { + theta -= sa; + if (theta < 0) { + theta += 2*Math.PI; + } + else if (theta > 2*Math.PI) { + theta -= 2*Math.PI; + } + } + + sm = s.sliceMargin/180*Math.PI; + if (r < s._radius) { + for (j=0; j<s.gridData.length; j++) { + minang = (j>0) ? s.gridData[j-1][1]+sm : sm; + maxang = s.gridData[j][1]; + if (theta > minang && theta < maxang) { + return {seriesIndex:s.index, pointIndex:j, gridData:s.gridData[j], data:s.data[j]}; + } + } + } + break; + + case $.jqplot.BubbleRenderer: + x = gridpos.x; + y = gridpos.y; + var ret = null; + + if (s.show) { + for (var j=0; j<s.gridData.length; j++) { + p = s.gridData[j]; + d = Math.sqrt( (x-p[0]) * (x-p[0]) + (y-p[1]) * (y-p[1]) ); + if (d <= p[2] && (d <= d0 || d0 == null)) { + d0 = d; + ret = {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + if (ret != null) return ret; + } + break; + + case $.jqplot.FunnelRenderer: + x = gridpos.x; + y = gridpos.y; + var v = s._vertices, + vfirst = v[0], + vlast = v[v.length-1], + lex, + rex; + + // equations of right and left sides, returns x, y values given height of section (y value and 2 points) + + function findedge (l, p1 , p2) { + var m = (p1[1] - p2[1])/(p1[0] - p2[0]); + var b = p1[1] - m*p1[0]; + var y = l + p1[1]; + + return [(y - b)/m, y]; + } + + // check each section + lex = findedge(y, vfirst[0], vlast[3]); + rex = findedge(y, vfirst[1], vlast[2]); + for (j=0; j<v.length; j++) { + cv = v[j]; + if (y >= cv[0][1] && y <= cv[3][1] && x >= lex[0] && x <= rex[0]) { + return {seriesIndex:s.index, pointIndex:j, gridData:null, data:s.data[j]}; + } + } + break; + + case $.jqplot.LineRenderer: + x = gridpos.x; + y = gridpos.y; + r = s.renderer; + if (s.show) { + if (s.fill) { + // first check if it is in bounding box + var inside = false; + if (x>s._boundingBox[0][0] && x<s._boundingBox[1][0] && y>s._boundingBox[1][1] && y<s._boundingBox[0][1]) { + // now check the crossing number + + var numPoints = s._areaPoints.length; + var ii; + var j = numPoints-1; + + for(var ii=0; ii < numPoints; ii++) { + var vertex1 = [s._areaPoints[ii][0], s._areaPoints[ii][1]]; + var vertex2 = [s._areaPoints[j][0], s._areaPoints[j][1]]; + + if (vertex1[1] < y && vertex2[1] >= y || vertex2[1] < y && vertex1[1] >= y) { + if (vertex1[0] + (y - vertex1[1]) / (vertex2[1] - vertex1[1]) * (vertex2[0] - vertex1[0]) < x) { + inside = !inside; + } + } + + j = ii; + } + } + if (inside) { + return {seriesIndex:i, pointIndex:null, gridData:s.gridData, data:s.data, points:s._areaPoints}; + } + break; + + } + else { + t = s.markerRenderer.size/2+s.neighborThreshold; + threshold = (t > 0) ? t : 0; + for (var j=0; j<s.gridData.length; j++) { + p = s.gridData[j]; + // neighbor looks different to OHLC chart. + if (r.constructor == $.jqplot.OHLCRenderer) { + if (r.candleStick) { + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._bodyWidth/2 && x <= p[0]+r._bodyWidth/2 && y >= yp(s.data[j][2]) && y <= yp(s.data[j][3])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + // if an open hi low close chart + else if (!r.hlc){ + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._tickLength && x <= p[0]+r._tickLength && y >= yp(s.data[j][2]) && y <= yp(s.data[j][3])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + // a hi low close chart + else { + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._tickLength && x <= p[0]+r._tickLength && y >= yp(s.data[j][1]) && y <= yp(s.data[j][2])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + + } + else if (p[0] != null && p[1] != null){ + d = Math.sqrt( (x-p[0]) * (x-p[0]) + (y-p[1]) * (y-p[1]) ); + if (d <= threshold && (d <= d0 || d0 == null)) { + d0 = d; + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + } + } + } + break; + + default: + x = gridpos.x; + y = gridpos.y; + r = s.renderer; + if (s.show) { + t = s.markerRenderer.size/2+s.neighborThreshold; + threshold = (t > 0) ? t : 0; + for (var j=0; j<s.gridData.length; j++) { + p = s.gridData[j]; + // neighbor looks different to OHLC chart. + if (r.constructor == $.jqplot.OHLCRenderer) { + if (r.candleStick) { + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._bodyWidth/2 && x <= p[0]+r._bodyWidth/2 && y >= yp(s.data[j][2]) && y <= yp(s.data[j][3])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + // if an open hi low close chart + else if (!r.hlc){ + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._tickLength && x <= p[0]+r._tickLength && y >= yp(s.data[j][2]) && y <= yp(s.data[j][3])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + // a hi low close chart + else { + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._tickLength && x <= p[0]+r._tickLength && y >= yp(s.data[j][1]) && y <= yp(s.data[j][2])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + + } + else { + d = Math.sqrt( (x-p[0]) * (x-p[0]) + (y-p[1]) * (y-p[1]) ); + if (d <= threshold && (d <= d0 || d0 == null)) { + d0 = d; + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + } + } + break; + } + } + + return null; + } + + + + this.onClick = function(ev) { + // Event passed in is normalized and will have data attribute. + // Event passed out is unnormalized. + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + var evt = jQuery.Event('jqplotClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + }; + + this.onDblClick = function(ev) { + // Event passed in is normalized and will have data attribute. + // Event passed out is unnormalized. + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + var evt = jQuery.Event('jqplotDblClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + }; + + this.onMouseDown = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + var evt = jQuery.Event('jqplotMouseDown'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + }; + + this.onMouseUp = function(ev) { + var positions = getEventPosition(ev); + var evt = jQuery.Event('jqplotMouseUp'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, null, ev.data.plot]); + }; + + this.onRightClick = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + if (p.captureRightClick) { + if (ev.which == 3) { + var evt = jQuery.Event('jqplotRightClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + } + else { + var evt = jQuery.Event('jqplotMouseUp'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + } + } + }; + + this.onMouseMove = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + var evt = jQuery.Event('jqplotMouseMove'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + }; + + this.onMouseEnter = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var evt = jQuery.Event('jqplotMouseEnter'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, null, p]); + }; + + this.onMouseLeave = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var evt = jQuery.Event('jqplotMouseLeave'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, null, p]); + }; + + // method: drawSeries + // Redraws all or just one series on the plot. No axis scaling + // is performed and no other elements on the plot are redrawn. + // options is an options object to pass on to the series renderers. + // It can be an empty object {}. idx is the series index + // to redraw if only one series is to be redrawn. + this.drawSeries = function(options, idx){ + var i, series, ctx; + // if only one argument passed in and it is a number, use it ad idx. + idx = (typeof(options) == "number" && idx == null) ? options : idx; + options = (typeof(options) == "object") ? options : {}; + // draw specified series + if (idx != undefined) { + series = this.series[idx]; + ctx = series.shadowCanvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + series.drawShadow(ctx, options, this); + ctx = series.canvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + series.draw(ctx, options, this); + if (series.renderer.constructor == $.jqplot.BezierCurveRenderer) { + if (idx < this.series.length - 1) { + this.drawSeries(idx+1); + } + } + } + + else { + // if call series drawShadow method first, in case all series shadows + // should be drawn before any series. This will ensure, like for + // stacked bar plots, that shadows don't overlap series. + for (i=0; i<this.series.length; i++) { + // first clear the canvas + series = this.series[i]; + ctx = series.shadowCanvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + series.drawShadow(ctx, options, this); + ctx = series.canvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + series.draw(ctx, options, this); + } + } + }; + + // method: moveSeriesToFront + // This method requires jQuery 1.4+ + // Moves the specified series canvas in front of all other series canvases. + // This effectively "draws" the specified series on top of all other series, + // although it is performed through DOM manipulation, no redrawing is performed. + // + // Parameters: + // idx - 0 based index of the series to move. This will be the index of the series + // as it was first passed into the jqplot function. + this.moveSeriesToFront = function (idx) { + idx = parseInt(idx, 10); + var stackIndex = $.inArray(idx, this.seriesStack); + // if already in front, return + if (stackIndex == -1) { + return; + } + if (stackIndex == this.seriesStack.length -1) { + this.previousSeriesStack = this.seriesStack.slice(0); + return; + } + var opidx = this.seriesStack[this.seriesStack.length -1]; + var serelem = this.series[idx].canvas._elem.detach(); + var shadelem = this.series[idx].shadowCanvas._elem.detach(); + this.series[opidx].shadowCanvas._elem.after(shadelem); + this.series[opidx].canvas._elem.after(serelem); + this.previousSeriesStack = this.seriesStack.slice(0); + this.seriesStack.splice(stackIndex, 1); + this.seriesStack.push(idx); + }; + + // method: moveSeriesToBack + // This method requires jQuery 1.4+ + // Moves the specified series canvas behind all other series canvases. + // + // Parameters: + // idx - 0 based index of the series to move. This will be the index of the series + // as it was first passed into the jqplot function. + this.moveSeriesToBack = function (idx) { + idx = parseInt(idx, 10); + var stackIndex = $.inArray(idx, this.seriesStack); + // if already in back, return + if (stackIndex == 0 || stackIndex == -1) { + return; + } + var opidx = this.seriesStack[0]; + var serelem = this.series[idx].canvas._elem.detach(); + var shadelem = this.series[idx].shadowCanvas._elem.detach(); + this.series[opidx].shadowCanvas._elem.before(shadelem); + this.series[opidx].canvas._elem.before(serelem); + this.previousSeriesStack = this.seriesStack.slice(0); + this.seriesStack.splice(stackIndex, 1); + this.seriesStack.unshift(idx); + }; + + // method: restorePreviousSeriesOrder + // This method requires jQuery 1.4+ + // Restore the series canvas order to its previous state. + // Useful to put a series back where it belongs after moving + // it to the front. + this.restorePreviousSeriesOrder = function () { + var i, j, serelem, shadelem, temp; + // if no change, return. + if (this.seriesStack == this.previousSeriesStack) { + return; + } + for (i=1; i<this.previousSeriesStack.length; i++) { + move = this.previousSeriesStack[i]; + keep = this.previousSeriesStack[i-1]; + serelem = this.series[move].canvas._elem.detach(); + shadelem = this.series[move].shadowCanvas._elem.detach(); + this.series[keep].shadowCanvas._elem.after(shadelem); + this.series[keep].canvas._elem.after(serelem); + } + temp = this.seriesStack.slice(0); + this.seriesStack = this.previousSeriesStack.slice(0); + this.previousSeriesStack = temp; + }; + + // method: restoreOriginalSeriesOrder + // This method requires jQuery 1.4+ + // Restore the series canvas order to its original order + // when the plot was created. + this.restoreOriginalSeriesOrder = function () { + var i, j, arr=[]; + for (i=0; i<this.series.length; i++) { + arr.push(i); + } + if (this.seriesStack == arr) { + return; + } + this.previousSeriesStack = this.seriesStack.slice(0); + this.seriesStack = arr; + for (i=1; i<this.seriesStack.length; i++) { + serelem = this.series[i].canvas._elem.detach(); + shadelem = this.series[i].shadowCanvas._elem.detach(); + this.series[i-1].shadowCanvas._elem.after(shadelem); + this.series[i-1].canvas._elem.after(serelem); + } + }; + + this.activateTheme = function (name) { + this.themeEngine.activate(this, name); + }; + } + + + // conpute a highlight color or array of highlight colors from given colors. + $.jqplot.computeHighlightColors = function(colors) { + var ret; + if (typeof(colors) == "array") { + ret = []; + for (var i=0; i<colors.length; i++){ + var rgba = $.jqplot.getColorComponents(colors[i]); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + newrgb[j] = (sum > 570) ? newrgb[j] * 0.8 : newrgb[j] + 0.3 * (255 - newrgb[j]); + newrgb[j] = parseInt(newrgb[j], 10); + } + ret.push('rgb('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+')'); + } + } + else { + var rgba = $.jqplot.getColorComponents(colors); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + newrgb[j] = (sum > 570) ? newrgb[j] * 0.8 : newrgb[j] + 0.3 * (255 - newrgb[j]); + newrgb[j] = parseInt(newrgb[j], 10); + } + ret = 'rgb('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+')'; + } + return ret; + }; + + $.jqplot.ColorGenerator = function(colors) { + var idx = 0; + + this.next = function () { + if (idx < colors.length) { + return colors[idx++]; + } + else { + idx = 0; + return colors[idx++]; + } + }; + + this.previous = function () { + if (idx > 0) { + return colors[idx--]; + } + else { + idx = colors.length-1; + return colors[idx]; + } + }; + + // get a color by index without advancing pointer. + this.get = function(i) { + var idx = i - colors.length * Math.floor(i/colors.length); + return colors[idx]; + }; + + this.setColors = function(c) { + colors = c; + }; + + this.reset = function() { + idx = 0; + }; + }; + + // convert a hex color string to rgb string. + // h - 3 or 6 character hex string, with or without leading # + // a - optional alpha + $.jqplot.hex2rgb = function(h, a) { + h = h.replace('#', ''); + if (h.length == 3) { + h = h[0]+h[0]+h[1]+h[1]+h[2]+h[2]; + } + var rgb; + rgb = 'rgba('+parseInt(h.slice(0,2), 16)+', '+parseInt(h.slice(2,4), 16)+', '+parseInt(h.slice(4,6), 16); + if (a) { + rgb += ', '+a; + } + rgb += ')'; + return rgb; + }; + + // convert an rgb color spec to a hex spec. ignore any alpha specification. + $.jqplot.rgb2hex = function(s) { + var pat = /rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *(?:, *[0-9.]*)?\)/; + var m = s.match(pat); + var h = '#'; + for (i=1; i<4; i++) { + var temp; + if (m[i].search(/%/) != -1) { + temp = parseInt(255*m[i]/100, 10).toString(16); + if (temp.length == 1) { + temp = '0'+temp; + } + } + else { + temp = parseInt(m[i], 10).toString(16); + if (temp.length == 1) { + temp = '0'+temp; + } + } + h += temp; + } + return h; + }; + + // given a css color spec, return an rgb css color spec + $.jqplot.normalize2rgb = function(s, a) { + if (s.search(/^ *rgba?\(/) != -1) { + return s; + } + else if (s.search(/^ *#?[0-9a-fA-F]?[0-9a-fA-F]/) != -1) { + return $.jqplot.hex2rgb(s, a); + } + else { + throw 'invalid color spec'; + } + }; + + // extract the r, g, b, a color components out of a css color spec. + $.jqplot.getColorComponents = function(s) { + // check to see if a color keyword. + s = $.jqplot.colorKeywordMap[s] || s; + var rgb = $.jqplot.normalize2rgb(s); + var pat = /rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *,? *([0-9.]* *)?\)/; + var m = rgb.match(pat); + var ret = []; + for (i=1; i<4; i++) { + if (m[i].search(/%/) != -1) { + ret[i-1] = parseInt(255*m[i]/100, 10); + } + else { + ret[i-1] = parseInt(m[i], 10); + } + } + ret[3] = parseFloat(m[4]) ? parseFloat(m[4]) : 1.0; + return ret; + }; + + $.jqplot.colorKeywordMap = {aliceblue: 'rgb(240, 248, 255)', antiquewhite: 'rgb(250, 235, 215)', aqua: 'rgb( 0, 255, 255)', aquamarine: 'rgb(127, 255, 212)', azure: 'rgb(240, 255, 255)', beige: 'rgb(245, 245, 220)', bisque: 'rgb(255, 228, 196)', black: 'rgb( 0, 0, 0)', blanchedalmond: 'rgb(255, 235, 205)', blue: 'rgb( 0, 0, 255)', blueviolet: 'rgb(138, 43, 226)', brown: 'rgb(165, 42, 42)', burlywood: 'rgb(222, 184, 135)', cadetblue: 'rgb( 95, 158, 160)', chartreuse: 'rgb(127, 255, 0)', chocolate: 'rgb(210, 105, 30)', coral: 'rgb(255, 127, 80)', cornflowerblue: 'rgb(100, 149, 237)', cornsilk: 'rgb(255, 248, 220)', crimson: 'rgb(220, 20, 60)', cyan: 'rgb( 0, 255, 255)', darkblue: 'rgb( 0, 0, 139)', darkcyan: 'rgb( 0, 139, 139)', darkgoldenrod: 'rgb(184, 134, 11)', darkgray: 'rgb(169, 169, 169)', darkgreen: 'rgb( 0, 100, 0)', darkgrey: 'rgb(169, 169, 169)', darkkhaki: 'rgb(189, 183, 107)', darkmagenta: 'rgb(139, 0, 139)', darkolivegreen: 'rgb( 85, 107, 47)', darkorange: 'rgb(255, 140, 0)', darkorchid: 'rgb(153, 50, 204)', darkred: 'rgb(139, 0, 0)', darksalmon: 'rgb(233, 150, 122)', darkseagreen: 'rgb(143, 188, 143)', darkslateblue: 'rgb( 72, 61, 139)', darkslategray: 'rgb( 47, 79, 79)', darkslategrey: 'rgb( 47, 79, 79)', darkturquoise: 'rgb( 0, 206, 209)', darkviolet: 'rgb(148, 0, 211)', deeppink: 'rgb(255, 20, 147)', deepskyblue: 'rgb( 0, 191, 255)', dimgray: 'rgb(105, 105, 105)', dimgrey: 'rgb(105, 105, 105)', dodgerblue: 'rgb( 30, 144, 255)', firebrick: 'rgb(178, 34, 34)', floralwhite: 'rgb(255, 250, 240)', forestgreen: 'rgb( 34, 139, 34)', fuchsia: 'rgb(255, 0, 255)', gainsboro: 'rgb(220, 220, 220)', ghostwhite: 'rgb(248, 248, 255)', gold: 'rgb(255, 215, 0)', goldenrod: 'rgb(218, 165, 32)', gray: 'rgb(128, 128, 128)', grey: 'rgb(128, 128, 128)', green: 'rgb( 0, 128, 0)', greenyellow: 'rgb(173, 255, 47)', honeydew: 'rgb(240, 255, 240)', hotpink: 'rgb(255, 105, 180)', indianred: 'rgb(205, 92, 92)', indigo: 'rgb( 75, 0, 130)', ivory: 'rgb(255, 255, 240)', khaki: 'rgb(240, 230, 140)', lavender: 'rgb(230, 230, 250)', lavenderblush: 'rgb(255, 240, 245)', lawngreen: 'rgb(124, 252, 0)', lemonchiffon: 'rgb(255, 250, 205)', lightblue: 'rgb(173, 216, 230)', lightcoral: 'rgb(240, 128, 128)', lightcyan: 'rgb(224, 255, 255)', lightgoldenrodyellow: 'rgb(250, 250, 210)', lightgray: 'rgb(211, 211, 211)', lightgreen: 'rgb(144, 238, 144)', lightgrey: 'rgb(211, 211, 211)', lightpink: 'rgb(255, 182, 193)', lightsalmon: 'rgb(255, 160, 122)', lightseagreen: 'rgb( 32, 178, 170)', lightskyblue: 'rgb(135, 206, 250)', lightslategray: 'rgb(119, 136, 153)', lightslategrey: 'rgb(119, 136, 153)', lightsteelblue: 'rgb(176, 196, 222)', lightyellow: 'rgb(255, 255, 224)', lime: 'rgb( 0, 255, 0)', limegreen: 'rgb( 50, 205, 50)', linen: 'rgb(250, 240, 230)', magenta: 'rgb(255, 0, 255)', maroon: 'rgb(128, 0, 0)', mediumaquamarine: 'rgb(102, 205, 170)', mediumblue: 'rgb( 0, 0, 205)', mediumorchid: 'rgb(186, 85, 211)', mediumpurple: 'rgb(147, 112, 219)', mediumseagreen: 'rgb( 60, 179, 113)', mediumslateblue: 'rgb(123, 104, 238)', mediumspringgreen: 'rgb( 0, 250, 154)', mediumturquoise: 'rgb( 72, 209, 204)', mediumvioletred: 'rgb(199, 21, 133)', midnightblue: 'rgb( 25, 25, 112)', mintcream: 'rgb(245, 255, 250)', mistyrose: 'rgb(255, 228, 225)', moccasin: 'rgb(255, 228, 181)', navajowhite: 'rgb(255, 222, 173)', navy: 'rgb( 0, 0, 128)', oldlace: 'rgb(253, 245, 230)', olive: 'rgb(128, 128, 0)', olivedrab: 'rgb(107, 142, 35)', orange: 'rgb(255, 165, 0)', orangered: 'rgb(255, 69, 0)', orchid: 'rgb(218, 112, 214)', palegoldenrod: 'rgb(238, 232, 170)', palegreen: 'rgb(152, 251, 152)', paleturquoise: 'rgb(175, 238, 238)', palevioletred: 'rgb(219, 112, 147)', papayawhip: 'rgb(255, 239, 213)', peachpuff: 'rgb(255, 218, 185)', peru: 'rgb(205, 133, 63)', pink: 'rgb(255, 192, 203)', plum: 'rgb(221, 160, 221)', powderblue: 'rgb(176, 224, 230)', purple: 'rgb(128, 0, 128)', red: 'rgb(255, 0, 0)', rosybrown: 'rgb(188, 143, 143)', royalblue: 'rgb( 65, 105, 225)', saddlebrown: 'rgb(139, 69, 19)', salmon: 'rgb(250, 128, 114)', sandybrown: 'rgb(244, 164, 96)', seagreen: 'rgb( 46, 139, 87)', seashell: 'rgb(255, 245, 238)', sienna: 'rgb(160, 82, 45)', silver: 'rgb(192, 192, 192)', skyblue: 'rgb(135, 206, 235)', slateblue: 'rgb(106, 90, 205)', slategray: 'rgb(112, 128, 144)', slategrey: 'rgb(112, 128, 144)', snow: 'rgb(255, 250, 250)', springgreen: 'rgb( 0, 255, 127)', steelblue: 'rgb( 70, 130, 180)', tan: 'rgb(210, 180, 140)', teal: 'rgb( 0, 128, 128)', thistle: 'rgb(216, 191, 216)', tomato: 'rgb(255, 99, 71)', turquoise: 'rgb( 64, 224, 208)', violet: 'rgb(238, 130, 238)', wheat: 'rgb(245, 222, 179)', white: 'rgb(255, 255, 255)', whitesmoke: 'rgb(245, 245, 245)', yellow: 'rgb(255, 255, 0)', yellowgreen: 'rgb(154, 205, 50)'}; + + // Convienence function that won't hang IE. + $.jqplot.log = function() { + if (window.console && $.jqplot.debug) { + if (arguments.length == 1) { + console.log (arguments[0]); + } + else { + console.log(arguments); + } + } + }; + var log = $.jqplot.log; + + + // class: $.jqplot.AxisLabelRenderer + // Renderer to place labels on the axes. + $.jqplot.AxisLabelRenderer = function(options) { + // Group: Properties + $.jqplot.ElemContainer.call(this); + // name of the axis associated with this tick + this.axis; + // prop: show + // wether or not to show the tick (mark and label). + this.show = true; + // prop: label + // The text or html for the label. + this.label = ''; + this.fontFamily = null; + this.fontSize = null; + this.textColor = null; + this._elem; + // prop: escapeHTML + // true to escape HTML entities in the label. + this.escapeHTML = false; + + $.extend(true, this, options); + }; + + $.jqplot.AxisLabelRenderer.prototype = new $.jqplot.ElemContainer(); + $.jqplot.AxisLabelRenderer.prototype.constructor = $.jqplot.AxisLabelRenderer; + + $.jqplot.AxisLabelRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + $.jqplot.AxisLabelRenderer.prototype.draw = function() { + this._elem = $('<div style="position:absolute;" class="jqplot-'+this.axis+'-label"></div>'); + + if (Number(this.label)) { + this._elem.css('white-space', 'nowrap'); + } + + if (!this.escapeHTML) { + this._elem.html(this.label); + } + else { + this._elem.text(this.label); + } + if (this.fontFamily) { + this._elem.css('font-family', this.fontFamily); + } + if (this.fontSize) { + this._elem.css('font-size', this.fontSize); + } + if (this.textColor) { + this._elem.css('color', this.textColor); + } + + return this._elem; + }; + + $.jqplot.AxisLabelRenderer.prototype.pack = function() { + }; + + // class: $.jqplot.AxisTickRenderer + // A "tick" object showing the value of a tick/gridline on the plot. + $.jqplot.AxisTickRenderer = function(options) { + // Group: Properties + $.jqplot.ElemContainer.call(this); + // prop: mark + // tick mark on the axis. One of 'inside', 'outside', 'cross', '' or null. + this.mark = 'outside'; + // name of the axis associated with this tick + this.axis; + // prop: showMark + // wether or not to show the mark on the axis. + this.showMark = true; + // prop: showGridline + // wether or not to draw the gridline on the grid at this tick. + this.showGridline = true; + // prop: isMinorTick + // if this is a minor tick. + this.isMinorTick = false; + // prop: size + // Length of the tick beyond the grid in pixels. + // DEPRECATED: This has been superceeded by markSize + this.size = 4; + // prop: markSize + // Length of the tick marks in pixels. For 'cross' style, length + // will be stoked above and below axis, so total length will be twice this. + this.markSize = 6; + // prop: show + // wether or not to show the tick (mark and label). + // Setting this to false requires more testing. It is recommended + // to set showLabel and showMark to false instead. + this.show = true; + // prop: showLabel + // wether or not to show the label. + this.showLabel = true; + this.label = ''; + this.value = null; + this._styles = {}; + // prop: formatter + // A class of a formatter for the tick text. sprintf by default. + this.formatter = $.jqplot.DefaultTickFormatter; + // prop: prefix + // string appended to the tick label if no formatString is specified. + this.prefix = ''; + // prop: formatString + // string passed to the formatter. + this.formatString = ''; + // prop: fontFamily + // css spec for the font-family css attribute. + this.fontFamily; + // prop: fontSize + // css spec for the font-size css attribute. + this.fontSize; + // prop: textColor + // css spec for the color attribute. + this.textColor; + this._elem; + + $.extend(true, this, options); + }; + + $.jqplot.AxisTickRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + $.jqplot.AxisTickRenderer.prototype = new $.jqplot.ElemContainer(); + $.jqplot.AxisTickRenderer.prototype.constructor = $.jqplot.AxisTickRenderer; + + $.jqplot.AxisTickRenderer.prototype.setTick = function(value, axisName, isMinor) { + this.value = value; + this.axis = axisName; + if (isMinor) { + this.isMinorTick = true; + } + return this; + }; + + $.jqplot.AxisTickRenderer.prototype.draw = function() { + if (!this.label) { + this.label = this.formatter(this.formatString, this.value); + } + // add prefix if needed + if (this.prefix && !this.formatString) { + this.label = this.prefix + this.label; + } + style ='style="position:absolute;'; + if (Number(this.label)) { + style +='white-space:nowrap;'; + } + style += '"'; + this._elem = $('<div '+style+' class="jqplot-'+this.axis+'-tick">'+this.label+'</div>'); + for (var s in this._styles) { + this._elem.css(s, this._styles[s]); + } + if (this.fontFamily) { + this._elem.css('font-family', this.fontFamily); + } + if (this.fontSize) { + this._elem.css('font-size', this.fontSize); + } + if (this.textColor) { + this._elem.css('color', this.textColor); + } + return this._elem; + }; + + $.jqplot.DefaultTickFormatter = function (format, val) { + if (typeof val == 'number') { + if (!format) { + format = $.jqplot.config.defaultTickFormatString; + } + return $.jqplot.sprintf(format, val); + } + else { + return String(val); + } + }; + + $.jqplot.AxisTickRenderer.prototype.pack = function() { + }; + + // Class: $.jqplot.CanvasGridRenderer + // The default jqPlot grid renderer, creating a grid on a canvas element. + // The renderer has no additional options beyond the <Grid> class. + $.jqplot.CanvasGridRenderer = function(){ + this.shadowRenderer = new $.jqplot.ShadowRenderer(); + }; + + // called with context of Grid object + $.jqplot.CanvasGridRenderer.prototype.init = function(options) { + this._ctx; + $.extend(true, this, options); + // set the shadow renderer options + var sopts = {lineJoin:'miter', lineCap:'round', fill:false, isarc:false, angle:this.shadowAngle, offset:this.shadowOffset, alpha:this.shadowAlpha, depth:this.shadowDepth, lineWidth:this.shadowWidth, closePath:false, strokeStyle:this.shadowColor}; + this.renderer.shadowRenderer.init(sopts); + }; + + // called with context of Grid. + $.jqplot.CanvasGridRenderer.prototype.createElement = function() { + var elem = document.createElement('canvas'); + var w = this._plotDimensions.width; + var h = this._plotDimensions.height; + elem.width = w; + elem.height = h; + this._elem = $(elem); + this._elem.addClass('jqplot-grid-canvas'); + this._elem.css({ position: 'absolute', left: 0, top: 0 }); + if ($.jqplot.use_excanvas) { + window.G_vmlCanvasManager.init_(document); + } + if ($.jqplot.use_excanvas) { + elem = window.G_vmlCanvasManager.initElement(elem); + } + this._top = this._offsets.top; + this._bottom = h - this._offsets.bottom; + this._left = this._offsets.left; + this._right = w - this._offsets.right; + this._width = this._right - this._left; + this._height = this._bottom - this._top; + return this._elem; + }; + + $.jqplot.CanvasGridRenderer.prototype.draw = function() { + this._ctx = this._elem.get(0).getContext("2d"); + var ctx = this._ctx; + var axes = this._axes; + // Add the grid onto the grid canvas. This is the bottom most layer. + ctx.save(); + ctx.clearRect(0, 0, this._plotDimensions.width, this._plotDimensions.height); + ctx.fillStyle = this.backgroundColor || this.background; + ctx.fillRect(this._left, this._top, this._width, this._height); + + if (this.drawGridlines) { + ctx.save(); + ctx.lineJoin = 'miter'; + ctx.lineCap = 'butt'; + ctx.lineWidth = this.gridLineWidth; + ctx.strokeStyle = this.gridLineColor; + var b, e; + var ax = ['xaxis', 'yaxis', 'x2axis', 'y2axis']; + for (var i=4; i>0; i--) { + var name = ax[i-1]; + var axis = axes[name]; + var ticks = axis._ticks; + if (axis.show) { + for (var j=ticks.length; j>0; j--) { + var t = ticks[j-1]; + if (t.show) { + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (name) { + case 'xaxis': + // draw the grid line + if (t.showGridline) { + drawLine(pos, this._top, pos, this._bottom); + } + + // draw the mark + if (t.showMark && t.mark) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._bottom; + e = this._bottom+s; + break; + case 'inside': + b = this._bottom-s; + e = this._bottom; + break; + case 'cross': + b = this._bottom-s; + e = this._bottom+s; + break; + default: + b = this._bottom; + e = this._bottom+s; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[pos,b],[pos,e]], {lineCap:'butt', lineWidth:this.gridLineWidth, offset:this.gridLineWidth*0.75, depth:2, fill:false, closePath:false}); + } + // draw the line + drawLine(pos, b, pos, e); + } + break; + case 'yaxis': + // draw the grid line + if (t.showGridline) { + drawLine(this._right, pos, this._left, pos); + } + // draw the mark + if (t.showMark && t.mark) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._left-s; + e = this._left; + break; + case 'inside': + b = this._left; + e = this._left+s; + break; + case 'cross': + b = this._left-s; + e = this._left+s; + break; + default: + b = this._left-s; + e = this._left; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + } + break; + case 'x2axis': + // draw the grid line + if (t.showGridline) { + drawLine(pos, this._bottom, pos, this._top); + } + // draw the mark + if (t.showMark && t.mark) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._top-s; + e = this._top; + break; + case 'inside': + b = this._top; + e = this._top+s; + break; + case 'cross': + b = this._top-s; + e = this._top+s; + break; + default: + b = this._top-s; + e = this._top; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[pos,b],[pos,e]], {lineCap:'butt', lineWidth:this.gridLineWidth, offset:this.gridLineWidth*0.75, depth:2, fill:false, closePath:false}); + } + drawLine(pos, b, pos, e); + } + break; + case 'y2axis': + // draw the grid line + if (t.showGridline) { + drawLine(this._left, pos, this._right, pos); + } + // draw the mark + if (t.showMark && t.mark) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._right; + e = this._right+s; + break; + case 'inside': + b = this._right-s; + e = this._right; + break; + case 'cross': + b = this._right-s; + e = this._right+s; + break; + default: + b = this._right; + e = this._right+s; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + } + break; + default: + break; + } + } + } + } + } + // Now draw grid lines for additional y axes + ax = ['y3axis', 'y4axis', 'y5axis', 'y6axis', 'y7axis', 'y8axis', 'y9axis']; + for (var i=7; i>0; i--) { + var axis = axes[ax[i-1]]; + var ticks = axis._ticks; + if (axis.show) { + var tn = ticks[axis.numberTicks-1]; + var t0 = ticks[0]; + var left = axis.getLeft(); + var points = [[left, tn.getTop() + tn.getHeight()/2], [left, t0.getTop() + t0.getHeight()/2 + 1.0]]; + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, points, {lineCap:'butt', fill:false, closePath:false}); + } + // draw the line + drawLine(points[0][0], points[0][1], points[1][0], points[1][1], {lineCap:'butt', strokeStyle:axis.borderColor, lineWidth:axis.borderWidth}); + // draw the tick marks + for (var j=ticks.length; j>0; j--) { + var t = ticks[j-1]; + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + if (t.showMark && t.mark) { + switch (m) { + case 'outside': + b = left; + e = left+s; + break; + case 'inside': + b = left-s; + e = left; + break; + case 'cross': + b = left-s; + e = left+s; + break; + default: + b = left; + e = left+s; + break; + } + points = [[b,pos], [e,pos]]; + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, points, {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + // draw the line + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + } + } + } + } + + ctx.restore(); + } + + function drawLine(bx, by, ex, ey, opts) { + ctx.save(); + opts = opts || {}; + if (opts.lineWidth == null || opts.lineWidth != 0){ + $.extend(true, ctx, opts); + ctx.beginPath(); + ctx.moveTo(bx, by); + ctx.lineTo(ex, ey); + ctx.stroke(); + ctx.restore(); + } + } + + if (this.shadow) { + var points = [[this._left, this._bottom], [this._right, this._bottom], [this._right, this._top]]; + this.renderer.shadowRenderer.draw(ctx, points); + } + // Now draw border around grid. Use axis border definitions. start at + // upper left and go clockwise. + if (this.borderWidth != 0 && this.drawBorder) { + drawLine (this._left, this._top, this._right, this._top, {lineCap:'round', strokeStyle:axes.x2axis.borderColor, lineWidth:axes.x2axis.borderWidth}); + drawLine (this._right, this._top, this._right, this._bottom, {lineCap:'round', strokeStyle:axes.y2axis.borderColor, lineWidth:axes.y2axis.borderWidth}); + drawLine (this._right, this._bottom, this._left, this._bottom, {lineCap:'round', strokeStyle:axes.xaxis.borderColor, lineWidth:axes.xaxis.borderWidth}); + drawLine (this._left, this._bottom, this._left, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); + } + // ctx.lineWidth = this.borderWidth; + // ctx.strokeStyle = this.borderColor; + // ctx.strokeRect(this._left, this._top, this._width, this._height); + + + ctx.restore(); + }; + + /** + * Date instance methods + * + * @author Ken Snyder (ken d snyder at gmail dot com) + * @date 2008-09-10 + * @version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * @license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * @contributions Chris Leonello + * @comment Bug fix to 12 hour time and additions to handle milliseconds and + * @comment 24 hour time without am/pm suffix + * + */ + + // begin by creating a scope for utility variables + + // + // pre-calculate the number of milliseconds in a day + // + + var day = 24 * 60 * 60 * 1000; + // + // function to add leading zeros + // + var zeroPad = function(number, digits) { + number = String(number); + while (number.length < digits) { + number = '0' + number; + } + return number; + }; + // + // set up integers and functions for adding to a date or subtracting two dates + // + var multipliers = { + millisecond: 1, + second: 1000, + minute: 60 * 1000, + hour: 60 * 60 * 1000, + day: day, + week: 7 * day, + month: { + // add a number of months + add: function(d, number) { + // add any years needed (increments of 12) + multipliers.year.add(d, Math[number > 0 ? 'floor' : 'ceil'](number / 12)); + // ensure that we properly wrap betwen December and January + var prevMonth = d.getMonth() + (number % 12); + if (prevMonth == 12) { + prevMonth = 0; + d.setYear(d.getFullYear() + 1); + } else if (prevMonth == -1) { + prevMonth = 11; + d.setYear(d.getFullYear() - 1); + } + d.setMonth(prevMonth); + }, + // get the number of months between two Date objects (decimal to the nearest day) + diff: function(d1, d2) { + // get the number of years + var diffYears = d1.getFullYear() - d2.getFullYear(); + // get the number of remaining months + var diffMonths = d1.getMonth() - d2.getMonth() + (diffYears * 12); + // get the number of remaining days + var diffDays = d1.getDate() - d2.getDate(); + // return the month difference with the days difference as a decimal + return diffMonths + (diffDays / 30); + } + }, + year: { + // add a number of years + add: function(d, number) { + d.setYear(d.getFullYear() + Math[number > 0 ? 'floor' : 'ceil'](number)); + }, + // get the number of years between two Date objects (decimal to the nearest day) + diff: function(d1, d2) { + return multipliers.month.diff(d1, d2) / 12; + } + } + }; + // + // alias each multiplier with an 's' to allow 'year' and 'years' for example + // + for (var unit in multipliers) { + if (unit.substring(unit.length - 1) != 's') { // IE will iterate newly added properties :| + multipliers[unit + 's'] = multipliers[unit]; + } + } + // + // take a date instance and a format code and return the formatted value + // + var format = function(d, code) { + if (Date.prototype.strftime.formatShortcuts[code]) { + // process any shortcuts recursively + return d.strftime(Date.prototype.strftime.formatShortcuts[code]); + } else { + // get the format code function and toPaddedString() argument + var getter = (Date.prototype.strftime.formatCodes[code] || '').split('.'); + var nbr = d['get' + getter[0]] ? d['get' + getter[0]]() : ''; + // run toPaddedString() if specified + if (getter[1]) { + nbr = zeroPad(nbr, getter[1]); + } + // prepend the leading character + return nbr; + } + }; + // + // Add methods to Date instances + // + var instanceMethods = { + // + // Return a date one day ahead (or any other unit) + // + // @param string unit + // units: year | month | day | week | hour | minute | second | millisecond + // @return object Date + // + succ: function(unit) { + return this.clone().add(1, unit); + }, + // + // Add an arbitrary amount to the currently stored date + // + // @param integer/float number + // @param string unit + // @return object Date (chainable) + // + add: function(number, unit) { + var factor = multipliers[unit] || multipliers.day; + if (typeof factor == 'number') { + this.setTime(this.getTime() + (factor * number)); + } else { + factor.add(this, number); + } + return this; + }, + // + // Find the difference between the current and another date + // + // @param string/object dateObj + // @param string unit + // @param boolean allowDecimal + // @return integer/float + // + diff: function(dateObj, unit, allowDecimal) { + // ensure we have a Date object + dateObj = Date.create(dateObj); + if (dateObj === null) { + return null; + } + // get the multiplying factor integer or factor function + var factor = multipliers[unit] || multipliers.day; + if (typeof factor == 'number') { + // multiply + var unitDiff = (this.getTime() - dateObj.getTime()) / factor; + } else { + // run function + var unitDiff = factor.diff(this, dateObj); + } + // if decimals are not allowed, round toward zero + return (allowDecimal ? unitDiff : Math[unitDiff > 0 ? 'floor' : 'ceil'](unitDiff)); + }, + // + // Convert a date to a string using traditional strftime format codes + // + // @param string formatStr + // @return string + // + strftime: function(formatStr) { + // default the format string to year-month-day + var source = formatStr || '%Y-%m-%d', result = '', match; + // Account for display of time in local time or as UTC time + // var val = ($.jqplot.comfig.convertUTCtoLocaltime) ? this : + // replace each format code + while (source.length > 0) { + if (match = source.match(Date.prototype.strftime.formatCodes.matcher)) { + result += source.slice(0, match.index); + result += (match[1] || '') + format(this, match[2]); + source = source.slice(match.index + match[0].length); + } else { + result += source; + source = ''; + } + } + return result; + }, + // + // Return a proper two-digit year integer + // + // @return integer + // + getShortYear: function() { + return this.getYear() % 100; + }, + // + // Get the number of the current month, 1-12 + // + // @return integer + // + getMonthNumber: function() { + return this.getMonth() + 1; + }, + // + // Get the name of the current month + // + // @return string + // + getMonthName: function() { + return Date.MONTHNAMES[this.getMonth()]; + }, + // + // Get the abbreviated name of the current month + // + // @return string + // + getAbbrMonthName: function() { + return Date.ABBR_MONTHNAMES[this.getMonth()]; + }, + // + // Get the name of the current week day + // + // @return string + // + getDayName: function() { + return Date.DAYNAMES[this.getDay()]; + }, + // + // Get the abbreviated name of the current week day + // + // @return string + // + getAbbrDayName: function() { + return Date.ABBR_DAYNAMES[this.getDay()]; + }, + // + // Get the ordinal string associated with the day of the month (i.e. st, nd, rd, th) + // + // @return string + // + getDayOrdinal: function() { + return Date.ORDINALNAMES[this.getDate() % 10]; + }, + // + // Get the current hour on a 12-hour scheme + // + // @return integer + // + getHours12: function() { + var hours = this.getHours(); + return hours > 12 ? hours - 12 : (hours == 0 ? 12 : hours); + }, + // + // Get the AM or PM for the current time + // + // @return string + // + getAmPm: function() { + return this.getHours() >= 12 ? 'PM' : 'AM'; + }, + // + // Get the current date as a Unix timestamp + // + // @return integer + // + getUnix: function() { + return Math.round(this.getTime() / 1000, 0); + }, + // + // Get the GMT offset in hours and minutes (e.g. +06:30) + // + // @return string + // + getGmtOffset: function() { + // divide the minutes offset by 60 + var hours = this.getTimezoneOffset() / 60; + // decide if we are ahead of or behind GMT + var prefix = hours < 0 ? '+' : '-'; + // remove the negative sign if any + hours = Math.abs(hours); + // add the +/- to the padded number of hours to : to the padded minutes + return prefix + zeroPad(Math.floor(hours), 2) + ':' + zeroPad((hours % 1) * 60, 2); + }, + // + // Get the browser-reported name for the current timezone (e.g. MDT, Mountain Daylight Time) + // + // @return string + // + getTimezoneName: function() { + var match = /(?:\((.+)\)$| ([A-Z]{3}) )/.exec(this.toString()); + return match[1] || match[2] || 'GMT' + this.getGmtOffset(); + }, + // + // Convert the current date to an 8-digit integer (%Y%m%d) + // + // @return int + // + toYmdInt: function() { + return (this.getFullYear() * 10000) + (this.getMonthNumber() * 100) + this.getDate(); + }, + // + // Create a copy of a date object + // + // @return object + // + clone: function() { + return new Date(this.getTime()); + } + }; + for (var name in instanceMethods) { + Date.prototype[name] = instanceMethods[name]; + } + // + // Add static methods to the date object + // + var staticMethods = { + // + // The heart of the date functionality: returns a date object if given a convertable value + // + // @param string/object/integer date + // @return object Date + // + create: function(date) { + // If the passed value is already a date object, return it + if (date instanceof Date) { + return date; + } + // if (typeof date == 'number') return new Date(date); + // If the passed value is an integer, interpret it as a javascript timestamp + if (typeof date == 'number') { + return new Date(date); + } + // If the passed value is a string, attempt to parse it using Date.parse() + var parsable = String(date).replace(/^\s*(.+)\s*$/, '$1'), i = 0, length = Date.create.patterns.length, pattern; + var current = parsable; + while (i < length) { + ms = Date.parse(current); + if (!isNaN(ms)) { + return new Date(ms); + } + pattern = Date.create.patterns[i]; + if (typeof pattern == 'function') { + obj = pattern(current); + if (obj instanceof Date) { + return obj; + } + } else { + current = parsable.replace(pattern[0], pattern[1]); + } + i++; + } + return NaN; + }, + // + // constants representing month names, day names, and ordinal names + // (same names as Ruby Date constants) + // + MONTHNAMES : 'January February March April May June July August September October November December'.split(' '), + ABBR_MONTHNAMES : 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '), + DAYNAMES : 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '), + ABBR_DAYNAMES : 'Sun Mon Tue Wed Thu Fri Sat'.split(' '), + ORDINALNAMES : 'th st nd rd th th th th th th'.split(' '), + // + // Shortcut for full ISO-8601 date conversion + // + ISO: '%Y-%m-%dT%H:%M:%S.%N%G', + // + // Shortcut for SQL-type formatting + // + SQL: '%Y-%m-%d %H:%M:%S', + // + // Setter method for month, day, and ordinal names for i18n + // + // @param object newNames + // + daysInMonth: function(year, month) { + if (month == 2) { + return new Date(year, 1, 29).getDate() == 29 ? 29 : 28; + } + return [undefined,31,undefined,31,30,31,30,31,31,30,31,30,31][month]; + } + }; + for (var name in staticMethods) { + Date[name] = staticMethods[name]; + } + // + // format codes for strftime + // + // each code must be an array where the first member is the name of a Date.prototype function + // and optionally a second member indicating the number to pass to Number#toPaddedString() + // + Date.prototype.strftime.formatCodes = { + // + // 2-part regex matcher for format codes + // + // first match must be the character before the code (to account for escaping) + // second match must be the format code character(s) + // + matcher: /()%(#?(%|[a-z]))/i, + // year + Y: 'FullYear', + y: 'ShortYear.2', + // month + m: 'MonthNumber.2', + '#m': 'MonthNumber', + B: 'MonthName', + b: 'AbbrMonthName', + // day + d: 'Date.2', + '#d': 'Date', + e: 'Date', + A: 'DayName', + a: 'AbbrDayName', + w: 'Day', + o: 'DayOrdinal', + // hours + H: 'Hours.2', + '#H': 'Hours', + I: 'Hours12.2', + '#I': 'Hours12', + p: 'AmPm', + // minutes + M: 'Minutes.2', + '#M': 'Minutes', + // seconds + S: 'Seconds.2', + '#S': 'Seconds', + s: 'Unix', + // milliseconds + N: 'Milliseconds.3', + '#N': 'Milliseconds', + // timezone + O: 'TimezoneOffset', + Z: 'TimezoneName', + G: 'GmtOffset' + }; + // + // shortcuts that will be translated into their longer version + // + // be sure that format shortcuts do not refer to themselves: this will cause an infinite loop + // + Date.prototype.strftime.formatShortcuts = { + // date + F: '%Y-%m-%d', + // time + T: '%H:%M:%S', + X: '%H:%M:%S', + // local format date + x: '%m/%d/%y', + D: '%m/%d/%y', + // local format extended + '#c': '%a %b %e %H:%M:%S %Y', + // local format short + v: '%e-%b-%Y', + R: '%H:%M', + r: '%I:%M:%S %p', + // tab and newline + t: '\t', + n: '\n', + '%': '%' + }; + // + // A list of conversion patterns (array arguments sent directly to gsub) + // Add, remove or splice a patterns to customize date parsing ability + // + Date.create.patterns = [ + [/-/g, '/'], // US-style time with dashes => Parsable US-style time + [/st|nd|rd|th/g, ''], // remove st, nd, rd and th + [/(3[01]|[0-2]\d)\s*\.\s*(1[0-2]|0\d)\s*\.\s*([1-9]\d{3})/, '$2/$1/$3'], // World time => Parsable US-style time + [/([1-9]\d{3})\s*-\s*(1[0-2]|0\d)\s*-\s*(3[01]|[0-2]\d)/, '$2/$3/$1'], // ISO-style time => Parsable US-style time + function(str) { // 12-hour or 24 hour time with milliseconds + // var match = str.match(/^(?:(.+)\s+)?([1-9]|1[012])(?:\s*\:\s*(\d\d))?(?:\s*\:\s*(\d\d))?\s*(am|pm)\s*$/i); + var match = str.match(/^(?:(.+)\s+)?([012]?\d)(?:\s*\:\s*(\d\d))?(?:\s*\:\s*(\d\d(\.\d*)?))?\s*(am|pm)?\s*$/i); + // opt. date hour opt. minute opt. second opt. msec opt. am or pm + if (match) { + if (match[1]) { + var d = Date.create(match[1]); + if (isNaN(d)) { + return; + } + } else { + var d = new Date(); + d.setMilliseconds(0); + } + var hour = parseFloat(match[2]); + if (match[6]) { + hour = match[6].toLowerCase() == 'am' ? (hour == 12 ? 0 : hour) : (hour == 12 ? 12 : hour + 12); + } + d.setHours(hour, parseInt(match[3] || 0, 10), parseInt(match[4] || 0, 10), ((parseFloat(match[5] || 0)) || 0)*1000); + return d; + } + else { + return str; + } + }, + function(str) { // ISO timestamp with time zone. + var match = str.match(/^(?:(.+))[T|\s+]([012]\d)(?:\:(\d\d))(?:\:(\d\d))(?:\.\d+)([\+\-]\d\d\:\d\d)$/i); + if (match) { + if (match[1]) { + var d = Date.create(match[1]); + if (isNaN(d)) { + return; + } + } else { + var d = new Date(); + d.setMilliseconds(0); + } + var hour = parseFloat(match[2]); + d.setHours(hour, parseInt(match[3], 10), parseInt(match[4], 10), parseFloat(match[5])*1000); + return d; + } + else { + return str; + } + }, + function(str) { + var match = str.match(/^([0-3]?\d)\s*[-\/.\s]{1}\s*([a-zA-Z]{3,9})\s*[-\/.\s]{1}\s*([0-3]?\d)$/); + if (match) { + var d = new Date(); + var y = parseFloat(String(d.getFullYear()).slice(2,4)); + var cent = parseInt(String(d.getFullYear())/100, 10)*100; + var centoffset = 1; + var m1 = parseFloat(match[1]); + var m3 = parseFloat(match[3]); + var ny, nd, nm; + if (m1 > 31) { // first number is a year + nd = match[3]; + if (m1 < y+centoffset) { // if less than 1 year out, assume it is this century. + ny = cent + m1; + } + else { + ny = cent - 100 + m1; + } + } + + else { // last number is the year + nd = match[1]; + if (m3 < y+centoffset) { // if less than 1 year out, assume it is this century. + ny = cent + m3; + } + else { + ny = cent - 100 + m3; + } + } + + var nm = $.inArray(match[2], Date.ABBR_MONTHNAMES); + + if (nm == -1) { + nm = $.inArray(match[2], Date.MONTHNAMES); + } + + d.setFullYear(ny, nm, nd); + d.setHours(0,0,0,0); + return d; + } + + else { + return str; + } + } + ]; + + if ($.jqplot.config.debug) { + $.date = Date.create; + } + + // Class: $.jqplot.DivTitleRenderer + // The default title renderer for jqPlot. This class has no options beyond the <Title> class. + $.jqplot.DivTitleRenderer = function() { + }; + + $.jqplot.DivTitleRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + $.jqplot.DivTitleRenderer.prototype.draw = function() { + var r = this.renderer; + if (!this.text) { + this.show = false; + this._elem = $('<div class="jqplot-title" style="height:0px;width:0px;"></div>'); + } + else if (this.text) { + var color; + if (this.color) { + color = this.color; + } + else if (this.textColor) { + color = this.textColor; + } + // don't trust that a stylesheet is present, set the position. + var styletext = 'position:absolute;top:0px;left:0px;'; + styletext += (this._plotWidth) ? 'width:'+this._plotWidth+'px;' : ''; + styletext += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + styletext += (this.textAlign) ? 'text-align:'+this.textAlign+';' : 'text-align:center;'; + styletext += (color) ? 'color:'+color+';' : ''; + styletext += (this.paddingBottom) ? 'padding-bottom:'+this.paddingBottom+';' : ''; + this._elem = $('<div class="jqplot-title" style="'+styletext+'">'+this.text+'</div>'); + if (this.fontFamily) { + this._elem.css('font-family', this.fontFamily); + } + } + + return this._elem; + }; + + $.jqplot.DivTitleRenderer.prototype.pack = function() { + // nothing to do here + }; + + // Class: $.jqplot.LineRenderer + // The default line renderer for jqPlot, this class has no options beyond the <Series> class. + // Draws series as a line. + $.jqplot.LineRenderer = function(){ + this.shapeRenderer = new $.jqplot.ShapeRenderer(); + this.shadowRenderer = new $.jqplot.ShadowRenderer(); + }; + + // called with scope of series. + $.jqplot.LineRenderer.prototype.init = function(options, plot) { + options = options || {}; + var lopts = {highlightMouseOver: options.highlightMouseOver, highlightMouseDown: options.highlightMouseDown, highlightColor: options.highlightColor}; + + delete (options.highlightMouseOver); + delete (options.highlightMouseDown); + delete (options.highlightColor); + + $.extend(true, this.renderer, options); + // set the shape renderer options + var opts = {lineJoin:'round', lineCap:'round', fill:this.fill, isarc:false, strokeStyle:this.color, fillStyle:this.fillColor, lineWidth:this.lineWidth, closePath:this.fill}; + this.renderer.shapeRenderer.init(opts); + // set the shadow renderer options + // scale the shadowOffset to the width of the line. + if (this.lineWidth > 2.5) { + var shadow_offset = this.shadowOffset* (1 + (Math.atan((this.lineWidth/2.5))/0.785398163 - 1)*0.6); + // var shadow_offset = this.shadowOffset; + } + // for skinny lines, don't make such a big shadow. + else { + var shadow_offset = this.shadowOffset*Math.atan((this.lineWidth/2.5))/0.785398163; + } + var sopts = {lineJoin:'round', lineCap:'round', fill:this.fill, isarc:false, angle:this.shadowAngle, offset:shadow_offset, alpha:this.shadowAlpha, depth:this.shadowDepth, lineWidth:this.lineWidth, closePath:this.fill}; + this.renderer.shadowRenderer.init(sopts); + this._areaPoints = []; + this._boundingBox = [[],[]]; + + if (!this.isTrendline && this.fill) { + + // prop: highlightMouseOver + // True to highlight area on a filled plot when moused over. + // This must be false to enable highlightMouseDown to highlight when clicking on an area on a filled plot. + this.highlightMouseOver = true; + // prop: highlightMouseDown + // True to highlight when a mouse button is pressed over an area on a filled plot. + // This will be disabled if highlightMouseOver is true. + this.highlightMouseDown = false; + // prop: highlightColor + // color to use when highlighting an area on a filled plot. + this.highlightColor = null; + // if user has passed in highlightMouseDown option and not set highlightMouseOver, disable highlightMouseOver + if (lopts.highlightMouseDown && lopts.highlightMouseOver == null) { + lopts.highlightMouseOver = false; + } + + $.extend(true, this, {highlightMouseOver: lopts.highlightMouseOver, highlightMouseDown: lopts.highlightMouseDown, highlightColor: lopts.highlightColor}); + + if (!this.highlightColor) { + this.highlightColor = $.jqplot.computeHighlightColors(this.fillColor); + } + // turn off traditional highlighter + if (this.highlighter) { + this.highlighter.show = false; + } + plot.postInitHooks.addOnce(postInit); + plot.postDrawHooks.addOnce(postPlotDraw); + plot.eventListenerHooks.addOnce('jqplotMouseMove', handleMove); + plot.eventListenerHooks.addOnce('jqplotMouseDown', handleMouseDown); + plot.eventListenerHooks.addOnce('jqplotMouseUp', handleMouseUp); + plot.eventListenerHooks.addOnce('jqplotClick', handleClick); + plot.eventListenerHooks.addOnce('jqplotRightClick', handleRightClick); + } + + }; + + // Method: setGridData + // converts the user data values to grid coordinates and stores them + // in the gridData array. + // Called with scope of a series. + $.jqplot.LineRenderer.prototype.setGridData = function(plot) { + // recalculate the grid data + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var data = this._plotData; + var pdata = this._prevPlotData; + this.gridData = []; + this._prevGridData = []; + for (var i=0; i<this.data.length; i++) { + // if not a line series or if no nulls in data, push the converted point onto the array. + if (data[i][0] != null && data[i][1] != null) { + this.gridData.push([xp.call(this._xaxis, data[i][0]), yp.call(this._yaxis, data[i][1])]); + } + // else if there is a null, preserve it. + else if (data[i][0] == null) { + this.gridData.push([null, yp.call(this._yaxis, data[i][1])]); + } + else if (data[i][1] == null) { + this.gridData.push([xp.call(this._xaxis, data[i][0]), null]); + } + // if not a line series or if no nulls in data, push the converted point onto the array. + if (pdata[i] != null && pdata[i][0] != null && pdata[i][1] != null) { + this._prevGridData.push([xp.call(this._xaxis, pdata[i][0]), yp.call(this._yaxis, pdata[i][1])]); + } + // else if there is a null, preserve it. + else if (pdata[i] != null && pdata[i][0] == null) { + this._prevGridData.push([null, yp.call(this._yaxis, pdata[i][1])]); + } + else if (pdata[i] != null && pdata[i][0] != null && pdata[i][1] == null) { + this._prevGridData.push([xp.call(this._xaxis, pdata[i][0]), null]); + } + } + }; + + // Method: makeGridData + // converts any arbitrary data values to grid coordinates and + // returns them. This method exists so that plugins can use a series' + // linerenderer to generate grid data points without overwriting the + // grid data associated with that series. + // Called with scope of a series. + $.jqplot.LineRenderer.prototype.makeGridData = function(data, plot) { + // recalculate the grid data + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var gd = []; + var pgd = []; + for (var i=0; i<data.length; i++) { + // if not a line series or if no nulls in data, push the converted point onto the array. + if (data[i][0] != null && data[i][1] != null) { + gd.push([xp.call(this._xaxis, data[i][0]), yp.call(this._yaxis, data[i][1])]); + } + // else if there is a null, preserve it. + else if (data[i][0] == null) { + gd.push([null, yp.call(this._yaxis, data[i][1])]); + } + else if (data[i][1] == null) { + gd.push([xp.call(this._xaxis, data[i][0]), null]); + } + } + return gd; + }; + + + // called within scope of series. + $.jqplot.LineRenderer.prototype.draw = function(ctx, gd, options) { + var i; + var opts = (options != undefined) ? options : {}; + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + var fillAndStroke = (opts.fillAndStroke != undefined) ? opts.fillAndStroke : this.fillAndStroke; + var xmin, ymin, xmax, ymax; + ctx.save(); + if (gd.length) { + if (showLine) { + // if we fill, we'll have to add points to close the curve. + if (fill) { + if (this.fillToZero) { + // have to break line up into shapes at axis crossings + var negativeColors = new $.jqplot.ColorGenerator(this.negativeSeriesColors); + var negativeColor = negativeColors.get(this.index); + if (! this.useNegativeColors) { + negativeColor = opts.fillStyle; + } + var isnegative = false; + var posfs = opts.fillStyle; + + // if stoking line as well as filling, get a copy of line data. + if (fillAndStroke) { + var fasgd = gd.slice(0); + } + // if not stacked, fill down to axis + if (this.index == 0 || !this._stack) { + + var tempgd = []; + this._areaPoints = []; + var pyzero = this._yaxis.series_u2p(this.fillToValue); + var pxzero = this._xaxis.series_u2p(this.fillToValue); + + if (this.fillAxis == 'y') { + tempgd.push([gd[0][0], pyzero]); + this._areaPoints.push([gd[0][0], pyzero]); + + for (var i=0; i<gd.length-1; i++) { + tempgd.push(gd[i]); + this._areaPoints.push(gd[i]); + // do we have an axis crossing? + if (this._plotData[i][1] * this._plotData[i+1][1] < 0) { + if (this._plotData[i][1] < 0) { + isnegative = true; + opts.fillStyle = negativeColor; + } + else { + isnegative = false; + opts.fillStyle = posfs; + } + + var xintercept = gd[i][0] + (gd[i+1][0] - gd[i][0]) * (pyzero-gd[i][1])/(gd[i+1][1] - gd[i][1]); + tempgd.push([xintercept, pyzero]); + this._areaPoints.push([xintercept, pyzero]); + // now draw this shape and shadow. + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, tempgd, opts); + } + this.renderer.shapeRenderer.draw(ctx, tempgd, opts); + // now empty temp array and continue + tempgd = [[xintercept, pyzero]]; + // this._areaPoints = [[xintercept, pyzero]]; + } + } + if (this._plotData[gd.length-1][1] < 0) { + isnegative = true; + opts.fillStyle = negativeColor; + } + else { + isnegative = false; + opts.fillStyle = posfs; + } + tempgd.push(gd[gd.length-1]); + this._areaPoints.push(gd[gd.length-1]); + tempgd.push([gd[gd.length-1][0], pyzero]); + this._areaPoints.push([gd[gd.length-1][0], pyzero]); + } + // now draw this shape and shadow. + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, tempgd, opts); + } + this.renderer.shapeRenderer.draw(ctx, tempgd, opts); + + + // var gridymin = this._yaxis.series_u2p(0); + // // IE doesn't return new length on unshift + // gd.unshift([gd[0][0], gridymin]); + // len = gd.length; + // gd.push([gd[len - 1][0], gridymin]); + } + // if stacked, fill to line below + else { + var prev = this._prevGridData; + for (var i=prev.length; i>0; i--) { + gd.push(prev[i-1]); + // this._areaPoints.push(prev[i-1]); + } + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, gd, opts); + } + this._areaPoints = gd; + this.renderer.shapeRenderer.draw(ctx, gd, opts); + } + } + ///////////////////////// + // Not filled to zero + //////////////////////// + else { + // if stoking line as well as filling, get a copy of line data. + if (fillAndStroke) { + var fasgd = gd.slice(0); + } + // if not stacked, fill down to axis + if (this.index == 0 || !this._stack) { + // var gridymin = this._yaxis.series_u2p(this._yaxis.min) - this.gridBorderWidth / 2; + var gridymin = ctx.canvas.height; + // IE doesn't return new length on unshift + gd.unshift([gd[0][0], gridymin]); + len = gd.length; + gd.push([gd[len - 1][0], gridymin]); + } + // if stacked, fill to line below + else { + var prev = this._prevGridData; + for (var i=prev.length; i>0; i--) { + gd.push(prev[i-1]); + } + } + this._areaPoints = gd; + + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, gd, opts); + } + + this.renderer.shapeRenderer.draw(ctx, gd, opts); + } + if (fillAndStroke) { + var fasopts = $.extend(true, {}, opts, {fill:false, closePath:false}); + this.renderer.shapeRenderer.draw(ctx, fasgd, fasopts); + ////////// + // TODO: figure out some way to do shadows nicely + // if (shadow) { + // this.renderer.shadowRenderer.draw(ctx, fasgd, fasopts); + // } + // now draw the markers + if (this.markerRenderer.show) { + for (i=0; i<fasgd.length; i++) { + this.markerRenderer.draw(fasgd[i][0], fasgd[i][1], ctx, opts.markerOptions); + } + } + } + } + else { + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, gd, opts); + } + + this.renderer.shapeRenderer.draw(ctx, gd, opts); + } + } + // calculate the bounding box + var xmin = xmax = ymin = ymax = null; + for (i=0; i<this._areaPoints.length; i++) { + var p = this._areaPoints[i]; + if (xmin > p[0] || xmin == null) { + xmin = p[0]; + } + if (ymax < p[1] || ymax == null) { + ymax = p[1]; + } + if (xmax < p[0] || xmax == null) { + xmax = p[0]; + } + if (ymin > p[1] || ymin == null) { + ymin = p[1]; + } + } + this._boundingBox = [[xmin, ymax], [xmax, ymin]]; + + // now draw the markers + if (this.markerRenderer.show && !fill) { + for (i=0; i<gd.length; i++) { + if (gd[i][0] != null && gd[i][1] != null) { + this.markerRenderer.draw(gd[i][0], gd[i][1], ctx, opts.markerOptions); + } + } + } + } + + ctx.restore(); + }; + + $.jqplot.LineRenderer.prototype.drawShadow = function(ctx, gd, options) { + // This is a no-op, shadows drawn with lines. + }; + + // called with scope of plot. + // make sure to not leave anything highlighted. + function postInit(target, data, options) { + for (i=0; i<this.series.length; i++) { + if (this.series[i].renderer.constructor == $.jqplot.LineRenderer) { + // don't allow mouseover and mousedown at same time. + if (this.series[i].highlightMouseOver) { + this.series[i].highlightMouseDown = false; + } + } + } + this.target.bind('mouseout', {plot:this}, function (ev) { unhighlight(ev.data.plot); }); + } + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + function postPlotDraw() { + this.plugins.lineRenderer = {highlightedSeriesIndex:null}; + this.plugins.lineRenderer.highlightCanvas = new $.jqplot.GenericCanvas(); + + this.eventCanvas._elem.before(this.plugins.lineRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-lineRenderer-highlight-canvas', this._plotDimensions)); + var hctx = this.plugins.lineRenderer.highlightCanvas.setContext(); + } + + function highlight (plot, sidx, pidx, points) { + var s = plot.series[sidx]; + var canvas = plot.plugins.lineRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0,canvas._ctx.canvas.width, canvas._ctx.canvas.height); + s._highlightedPoint = pidx; + plot.plugins.lineRenderer.highlightedSeriesIndex = sidx; + var opts = {fillStyle: s.highlightColor}; + s.renderer.shapeRenderer.draw(canvas._ctx, points, opts); + } + + function unhighlight (plot) { + var canvas = plot.plugins.lineRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0, canvas._ctx.canvas.width, canvas._ctx.canvas.height); + for (var i=0; i<plot.series.length; i++) { + plot.series[i]._highlightedPoint = null; + } + plot.plugins.lineRenderer.highlightedSeriesIndex = null; + plot.target.trigger('jqplotDataUnhighlight'); + } + + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt1 = jQuery.Event('jqplotDataMouseOver'); + evt1.pageX = ev.pageX; + evt1.pageY = ev.pageY; + plot.target.trigger(evt1, ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.lineRenderer.highlightedSeriesIndex)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, neighbor.seriesIndex, neighbor.pointIndex, neighbor.points); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseDown(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + if (plot.series[ins[0]].highlightMouseDown && !(ins[0] == plot.plugins.lineRenderer.highlightedSeriesIndex)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, neighbor.seriesIndex, neighbor.pointIndex, neighbor.points); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseUp(ev, gridpos, datapos, neighbor, plot) { + var idx = plot.plugins.lineRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + } + + function handleClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt = jQuery.Event('jqplotDataClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + function handleRightClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var idx = plot.plugins.lineRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + var evt = jQuery.Event('jqplotDataRightClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + + // class: $.jqplot.LinearAxisRenderer + // The default jqPlot axis renderer, creating a numeric axis. + // The renderer has no additional options beyond the <Axis> object. + $.jqplot.LinearAxisRenderer = function() { + }; + + // called with scope of axis object. + $.jqplot.LinearAxisRenderer.prototype.init = function(options){ + $.extend(true, this, options); + var db = this._dataBounds; + // Go through all the series attached to this axis and find + // the min/max bounds for this axis. + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + var d = s._plotData; + + for (var j=0; j<d.length; j++) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + if ((d[j][0] != null && d[j][0] < db.min) || db.min == null) { + db.min = d[j][0]; + } + if ((d[j][0] != null && d[j][0] > db.max) || db.max == null) { + db.max = d[j][0]; + } + } + else { + if ((d[j][1] != null && d[j][1] < db.min) || db.min == null) { + db.min = d[j][1]; + } + if ((d[j][1] != null && d[j][1] > db.max) || db.max == null) { + db.max = d[j][1]; + } + } + } + } + }; + + // called with scope of axis + $.jqplot.LinearAxisRenderer.prototype.draw = function(ctx) { + if (this.show) { + // populate the axis label and value properties. + // createTicks is a method on the renderer, but + // call it within the scope of the axis. + this.renderer.createTicks.call(this); + // fill a div with axes labels in the right direction. + // Need to pregenerate each axis to get it's bounds and + // position it and the labels correctly on the plot. + var dim=0; + var temp; + // Added for theming. + if (this._elem) { + this._elem.empty(); + } + + this._elem = $('<div class="jqplot-axis jqplot-'+this.name+'" style="position:absolute;"></div>'); + + if (this.name == 'xaxis' || this.name == 'x2axis') { + this._elem.width(this._plotDimensions.width); + } + else { + this._elem.height(this._plotDimensions.height); + } + + // create a _label object. + this.labelOptions.axis = this.name; + this._label = new this.labelRenderer(this.labelOptions); + if (this._label.show) { + var elem = this._label.draw(ctx); + elem.appendTo(this._elem); + } + + var t = this._ticks; + for (var i=0; i<t.length; i++) { + var tick = t[i]; + if (tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { + var elem = tick.draw(ctx); + elem.appendTo(this._elem); + } + } + } + return this._elem; + }; + + // called with scope of an axis + $.jqplot.LinearAxisRenderer.prototype.reset = function() { + this.min = this._min; + this.max = this._max; + this.tickInterval = this._tickInterval; + this.numberTicks = this._numberTicks; + // this._ticks = this.__ticks; + }; + + // called with scope of axis + $.jqplot.LinearAxisRenderer.prototype.set = function() { + var dim = 0; + var temp; + var w = 0; + var h = 0; + var lshow = (this._label == null) ? false : this._label.show; + if (this.show) { + var t = this._ticks; + for (var i=0; i<t.length; i++) { + var tick = t[i]; + if (tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + temp = tick._elem.outerHeight(true); + } + else { + temp = tick._elem.outerWidth(true); + } + if (temp > dim) { + dim = temp; + } + } + } + + if (lshow) { + w = this._label._elem.outerWidth(true); + h = this._label._elem.outerHeight(true); + } + if (this.name == 'xaxis') { + dim = dim + h; + this._elem.css({'height':dim+'px', left:'0px', bottom:'0px'}); + } + else if (this.name == 'x2axis') { + dim = dim + h; + this._elem.css({'height':dim+'px', left:'0px', top:'0px'}); + } + else if (this.name == 'yaxis') { + dim = dim + w; + this._elem.css({'width':dim+'px', left:'0px', top:'0px'}); + if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { + this._label._elem.css('width', w+'px'); + } + } + else { + dim = dim + w; + this._elem.css({'width':dim+'px', right:'0px', top:'0px'}); + if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { + this._label._elem.css('width', w+'px'); + } + } + } + }; + + // called with scope of axis + $.jqplot.LinearAxisRenderer.prototype.createTicks = function() { + // we're are operating on an axis here + var ticks = this._ticks; + var userTicks = this.ticks; + var name = this.name; + // databounds were set on axis initialization. + var db = this._dataBounds; + var dim, interval; + var min, max; + var pos1, pos2; + var tt, i; + // get a copy of user's settings for min/max. + var userMin = this.min; + var userMax = this.max; + var userNT = this.numberTicks; + var userTI = this.tickInterval; + + // if we already have ticks, use them. + // ticks must be in order of increasing value. + + if (userTicks.length) { + // ticks could be 1D or 2D array of [val, val, ,,,] or [[val, label], [val, label], ...] or mixed + for (i=0; i<userTicks.length; i++){ + var ut = userTicks[i]; + var t = new this.tickRenderer(this.tickOptions); + if (ut.constructor == Array) { + t.value = ut[0]; + t.label = ut[1]; + t.setTick(ut[0], this.name); + this._ticks.push(t); + } + + else { + t.value = ut; + t.setTick(ut, this.name); + this._ticks.push(t); + } + } + this.numberTicks = userTicks.length; + this.min = this._ticks[0].value; + this.max = this._ticks[this.numberTicks-1].value; + this.tickInterval = (this.max - this.min) / (this.numberTicks - 1); + } + + // we don't have any ticks yet, let's make some! + else { + if (name == 'xaxis' || name == 'x2axis') { + dim = this._plotDimensions.width; + } + else { + dim = this._plotDimensions.height; + } + + // if min, max and number of ticks specified, user can't specify interval. + if (!this.autoscale && this.min != null && this.max != null && this.numberTicks != null) { + this.tickInterval = null; + } + + // if max, min, and interval specified and interval won't fit, ignore interval. + // if (this.min != null && this.max != null && this.tickInterval != null) { + // if (parseInt((this.max-this.min)/this.tickInterval, 10) != (this.max-this.min)/this.tickInterval) { + // this.tickInterval = null; + // } + // } + + min = ((this.min != null) ? this.min : db.min); + max = ((this.max != null) ? this.max : db.max); + + // if min and max are same, space them out a bit + if (min == max) { + var adj = 0.05; + if (min > 0) { + adj = Math.max(Math.log(min)/Math.LN10, 0.05); + } + min -= adj; + max += adj; + } + + var range = max - min; + var rmin, rmax; + var temp; + + // autoscale. Can't autoscale if min or max is supplied. + // Will use numberTicks and tickInterval if supplied. Ticks + // across multiple axes may not line up depending on how + // bars are to be plotted. + if (this.autoscale && this.min == null && this.max == null) { + var rrange, ti, margin; + var forceMinZero = false; + var forceZeroLine = false; + var intervals = {min:null, max:null, average:null, stddev:null}; + // if any series are bars, or if any are fill to zero, and if this + // is the axis to fill toward, check to see if we can start axis at zero. + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + var faname = (s.fillAxis == 'x') ? s._xaxis.name : s._yaxis.name; + // check to see if this is the fill axis + if (this.name == faname) { + var vals = s._plotValues[s.fillAxis]; + var vmin = vals[0]; + var vmax = vals[0]; + for (var j=1; j<vals.length; j++) { + if (vals[j] < vmin) { + vmin = vals[j]; + } + else if (vals[j] > vmax) { + vmax = vals[j]; + } + } + var dp = (vmax - vmin) / vmax; + // is this sries a bar? + if (s.renderer.constructor == $.jqplot.BarRenderer) { + // if no negative values and could also check range. + if (vmin >= 0 && (s.fillToZero || dp > 0.1)) { + forceMinZero = true; + } + else { + forceMinZero = false; + if (s.fill && s.fillToZero && vmin < 0 && vmax > 0) { + forceZeroLine = true; + } + else { + forceZeroLine = false; + } + } + } + + // if not a bar and filling, use appropriate method. + else if (s.fill) { + if (vmin >= 0 && (s.fillToZero || dp > 0.1)) { + forceMinZero = true; + } + else if (vmin < 0 && vmax > 0 && s.fillToZero) { + forceMinZero = false; + forceZeroLine = true; + } + else { + forceMinZero = false; + forceZeroLine = false; + } + } + + // if not a bar and not filling, only change existing state + // if it doesn't make sense + else if (vmin < 0) { + forceMinZero = false; + } + } + } + + // check if we need make axis min at 0. + if (forceMinZero) { + // compute number of ticks + this.numberTicks = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); + this.min = 0; + userMin = 0; + // what order is this range? + // what tick interval does that give us? + ti = max/(this.numberTicks-1); + temp = Math.pow(10, Math.abs(Math.floor(Math.log(ti)/Math.LN10))); + if (ti/temp == parseInt(ti/temp, 10)) { + ti += temp; + } + this.tickInterval = Math.ceil(ti/temp) * temp; + this.max = this.tickInterval * (this.numberTicks - 1); + } + + // check if we need to make sure there is a tick at 0. + else if (forceZeroLine) { + // compute number of ticks + this.numberTicks = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); + var ntmin = Math.ceil(Math.abs(min)/range*(this.numberTicks-1)); + var ntmax = this.numberTicks - 1 - ntmin; + ti = Math.max(Math.abs(min/ntmin), Math.abs(max/ntmax)); + temp = Math.pow(10, Math.abs(Math.floor(Math.log(ti)/Math.LN10))); + this.tickInterval = Math.ceil(ti/temp) * temp; + this.max = this.tickInterval * ntmax; + this.min = -this.tickInterval * ntmin; + } + + // if nothing else, do autoscaling which will try to line up ticks across axes. + else { + if (this.numberTicks == null){ + if (this.tickInterval) { + this.numberTicks = 3 + Math.ceil(range / this.tickInterval); + } + else { + this.numberTicks = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); + } + } + + if (this.tickInterval == null) { + // get a tick interval + ti = range/(this.numberTicks - 1); + + if (ti < 1) { + temp = Math.pow(10, Math.abs(Math.floor(Math.log(ti)/Math.LN10))); + } + else { + temp = 1; + } + this.tickInterval = Math.ceil(ti*temp*this.pad)/temp; + } + else { + temp = 1 / this.tickInterval; + } + + // try to compute a nicer, more even tick interval + // temp = Math.pow(10, Math.floor(Math.log(ti)/Math.LN10)); + // this.tickInterval = Math.ceil(ti/temp) * temp; + rrange = this.tickInterval * (this.numberTicks - 1); + margin = (rrange - range)/2; + + if (this.min == null) { + this.min = Math.floor(temp*(min-margin))/temp; + } + if (this.max == null) { + this.max = this.min + rrange; + } + } + } + + // Use the default algorithm which pads each axis to make the chart + // centered nicely on the grid. + else { + rmin = (this.min != null) ? this.min : min - range*(this.padMin - 1); + rmax = (this.max != null) ? this.max : max + range*(this.padMax - 1); + this.min = rmin; + this.max = rmax; + range = this.max - this.min; + + if (this.numberTicks == null){ + // if tickInterval is specified by user, we will ignore computed maximum. + // max will be equal or greater to fit even # of ticks. + if (this.tickInterval != null) { + this.numberTicks = Math.ceil((this.max - this.min)/this.tickInterval)+1; + this.max = this.min + this.tickInterval*(this.numberTicks-1); + } + else if (dim > 100) { + this.numberTicks = parseInt(3+(dim-100)/75, 10); + } + else { + this.numberTicks = 2; + } + } + + if (this.tickInterval == null) { + this.tickInterval = range / (this.numberTicks-1); + } + } + + if (this.renderer.constructor == $.jqplot.LinearAxisRenderer) { + // fix for misleading tick display with small range and low precision. + range = this.max - this.min; + // figure out precision + var temptick = new this.tickRenderer(this.tickOptions); + // use the tick formatString or, the default. + var fs = temptick.formatString || $.jqplot.config.defaultTickFormatString; + var fs = fs.match($.jqplot.sprintf.regex)[0]; + var precision = 0; + if (fs) { + if (fs.search(/[fFeEgGpP]/) > -1) { + var m = fs.match(/\%\.(\d{0,})?[eEfFgGpP]/); + if (m) precision = parseInt(m[1], 10); + else precision = 6; + } + else if (fs.search(/[di]/) > -1) { + precision = 0; + } + // fact will be <= 1; + var fact = Math.pow(10, -precision); + if (this.tickInterval < fact) { + // need to correct underrange + if (userNT == null && userTI == null) { + this.tickInterval = fact; + if (userMax == null && userMin == null) { + // this.min = Math.floor((this._dataBounds.min - this.tickInterval)/fact) * fact; + this.min = Math.floor(this._dataBounds.min/fact) * fact; + if (this.min == this._dataBounds.min) { + this.min = this._dataBounds.min - this.tickInterval; + } + // this.max = Math.ceil((this._dataBounds.max + this.tickInterval)/fact) * fact; + this.max = Math.ceil(this._dataBounds.max/fact) * fact; + if (this.max == this._dataBounds.max) { + this.max = this._dataBounds.max + this.tickInterval; + } + var n = (this.max - this.min)/this.tickInterval; + n = n.toFixed(11); + n = Math.ceil(n); + this.numberTicks = n + 1; + } + else if (userMax == null) { + // add one tick for top of range. + var n = (this._dataBounds.max - this.min) / this.tickInterval; + n = n.toFixed(11); + this.numberTicks = Math.ceil(n) + 2; + this.max = this.min + this.tickInterval * (this.numberTicks-1); + } + else if (userMin == null) { + // add one tick for bottom of range. + var n = (this.max - this._dataBounds.min) / this.tickInterval; + n = n.toFixed(11); + this.numberTicks = Math.ceil(n) + 2; + this.min = this.max - this.tickInterval * (this.numberTicks-1); + } + else { + // calculate a number of ticks so max is within axis scale + this.numberTicks = Math.ceil((userMax - userMin)/this.tickInterval) + 1; + // if user's min and max don't fit evenly in ticks, adjust. + // This takes care of cases such as user min set to 0, max set to 3.5 but tick + // format string set to %d (integer ticks) + this.min = Math.floor(userMin*Math.pow(10, precision))/Math.pow(10, precision); + this.max = Math.ceil(userMax*Math.pow(10, precision))/Math.pow(10, precision); + // this.max = this.min + this.tickInterval*(this.numberTicks-1); + this.numberTicks = Math.ceil((this.max - this.min)/this.tickInterval) + 1; + } + } + } + } + } + + + + for (var i=0; i<this.numberTicks; i++){ + tt = this.min + i * this.tickInterval; + var t = new this.tickRenderer(this.tickOptions); + // var t = new $.jqplot.AxisTickRenderer(this.tickOptions); + + t.setTick(tt, this.name); + this._ticks.push(t); + } + } + }; + + // called with scope of axis + $.jqplot.LinearAxisRenderer.prototype.pack = function(pos, offsets) { + var ticks = this._ticks; + var max = this.max; + var min = this.min; + var offmax = offsets.max; + var offmin = offsets.min; + var lshow = (this._label == null) ? false : this._label.show; + + for (var p in pos) { + this._elem.css(p, pos[p]); + } + + this._offsets = offsets; + // pixellength will be + for x axes and - for y axes becasue pixels always measured from top left. + var pixellength = offmax - offmin; + var unitlength = max - min; + + // point to unit and unit to point conversions references to Plot DOM element top left corner. + this.p2u = function(p){ + return (p - offmin) * unitlength / pixellength + min; + }; + + this.u2p = function(u){ + return (u - min) * pixellength / unitlength + offmin; + }; + + if (this.name == 'xaxis' || this.name == 'x2axis'){ + this.series_u2p = function(u){ + return (u - min) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + min; + }; + } + + else { + this.series_u2p = function(u){ + return (u - max) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + max; + }; + } + + if (this.show) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + for (i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + // will need to adjust auto positioning based on which axis this is. + var temp = (this.name == 'xaxis') ? 1 : -1; + switch (t.labelPosition) { + case 'auto': + // position at end + if (temp * t.angle < 0) { + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + } + // position at start + else { + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + } + break; + case 'end': + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + case 'start': + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + break; + case 'middle': + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + default: + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + } + } + else { + shim = -t.getWidth()/2; + } + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('left', val); + t.pack(); + } + } + if (lshow) { + var w = this._label._elem.outerWidth(true); + this._label._elem.css('left', offmin + pixellength/2 - w/2 + 'px'); + if (this.name == 'xaxis') { + this._label._elem.css('bottom', '0px'); + } + else { + this._label._elem.css('top', '0px'); + } + this._label.pack(); + } + } + else { + for (i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + // will need to adjust auto positioning based on which axis this is. + var temp = (this.name == 'yaxis') ? 1 : -1; + switch (t.labelPosition) { + case 'auto': + // position at end + case 'end': + if (temp * t.angle < 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'start': + if (t.angle > 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'middle': + // if (t.angle > 0) { + // shim = -t.getHeight()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + // } + // else { + // shim = -t.getHeight()/2 - t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + // } + shim = -t.getHeight()/2; + break; + default: + shim = -t.getHeight()/2; + break; + } + } + else { + shim = -t.getHeight()/2; + } + + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('top', val); + t.pack(); + } + } + if (lshow) { + var h = this._label._elem.outerHeight(true); + this._label._elem.css('top', offmax - pixellength/2 - h/2 + 'px'); + if (this.name == 'yaxis') { + this._label._elem.css('left', '0px'); + } + else { + this._label._elem.css('right', '0px'); + } + this._label.pack(); + } + } + } + }; + + + // class: $.jqplot.MarkerRenderer + // The default jqPlot marker renderer, rendering the points on the line. + $.jqplot.MarkerRenderer = function(options){ + // Group: Properties + + // prop: show + // wether or not to show the marker. + this.show = true; + // prop: style + // One of diamond, circle, square, x, plus, dash, filledDiamond, filledCircle, filledSquare + this.style = 'filledCircle'; + // prop: lineWidth + // size of the line for non-filled markers. + this.lineWidth = 2; + // prop: size + // Size of the marker (diameter or circle, length of edge of square, etc.) + this.size = 9.0; + // prop: color + // color of marker. Will be set to color of series by default on init. + this.color = '#666666'; + // prop: shadow + // wether or not to draw a shadow on the line + this.shadow = true; + // prop: shadowAngle + // Shadow angle in degrees + this.shadowAngle = 45; + // prop: shadowOffset + // Shadow offset from line in pixels + this.shadowOffset = 1; + // prop: shadowDepth + // Number of times shadow is stroked, each stroke offset shadowOffset from the last. + this.shadowDepth = 3; + // prop: shadowAlpha + // Alpha channel transparency of shadow. 0 = transparent. + this.shadowAlpha = '0.07'; + // prop: shadowRenderer + // Renderer that will draws the shadows on the marker. + this.shadowRenderer = new $.jqplot.ShadowRenderer(); + // prop: shapeRenderer + // Renderer that will draw the marker. + this.shapeRenderer = new $.jqplot.ShapeRenderer(); + + $.extend(true, this, options); + }; + + $.jqplot.MarkerRenderer.prototype.init = function(options) { + $.extend(true, this, options); + var sdopt = {angle:this.shadowAngle, offset:this.shadowOffset, alpha:this.shadowAlpha, lineWidth:this.lineWidth, depth:this.shadowDepth, closePath:true}; + if (this.style.indexOf('filled') != -1) { + sdopt.fill = true; + } + if (this.style.indexOf('ircle') != -1) { + sdopt.isarc = true; + sdopt.closePath = false; + } + this.shadowRenderer.init(sdopt); + + var shopt = {fill:false, isarc:false, strokeStyle:this.color, fillStyle:this.color, lineWidth:this.lineWidth, closePath:true}; + if (this.style.indexOf('filled') != -1) { + shopt.fill = true; + } + if (this.style.indexOf('ircle') != -1) { + shopt.isarc = true; + shopt.closePath = false; + } + this.shapeRenderer.init(shopt); + }; + + $.jqplot.MarkerRenderer.prototype.drawDiamond = function(x, y, ctx, fill, options) { + var stretch = 1.2; + var dx = this.size/2/stretch; + var dy = this.size/2*stretch; + var points = [[x-dx, y], [x, y+dy], [x+dx, y], [x, y-dy]]; + if (this.shadow) { + this.shadowRenderer.draw(ctx, points); + } + this.shapeRenderer.draw(ctx, points, options); + + // ctx.restore(); + }; + + $.jqplot.MarkerRenderer.prototype.drawPlus = function(x, y, ctx, fill, options) { + var stretch = 1.0; + var dx = this.size/2*stretch; + var dy = this.size/2*stretch; + var points1 = [[x, y-dy], [x, y+dy]]; + var points2 = [[x+dx, y], [x-dx, y]]; + var opts = $.extend(true, {}, this.options, {closePath:false}); + if (this.shadow) { + this.shadowRenderer.draw(ctx, points1, {closePath:false}); + this.shadowRenderer.draw(ctx, points2, {closePath:false}); + } + this.shapeRenderer.draw(ctx, points1, opts); + this.shapeRenderer.draw(ctx, points2, opts); + + // ctx.restore(); + }; + + $.jqplot.MarkerRenderer.prototype.drawX = function(x, y, ctx, fill, options) { + var stretch = 1.0; + var dx = this.size/2*stretch; + var dy = this.size/2*stretch; + var opts = $.extend(true, {}, this.options, {closePath:false}); + var points1 = [[x-dx, y-dy], [x+dx, y+dy]]; + var points2 = [[x-dx, y+dy], [x+dx, y-dy]]; + if (this.shadow) { + this.shadowRenderer.draw(ctx, points1, {closePath:false}); + this.shadowRenderer.draw(ctx, points2, {closePath:false}); + } + this.shapeRenderer.draw(ctx, points1, opts); + this.shapeRenderer.draw(ctx, points2, opts); + + // ctx.restore(); + }; + + $.jqplot.MarkerRenderer.prototype.drawDash = function(x, y, ctx, fill, options) { + var stretch = 1.0; + var dx = this.size/2*stretch; + var dy = this.size/2*stretch; + var points = [[x-dx, y], [x+dx, y]]; + if (this.shadow) { + this.shadowRenderer.draw(ctx, points); + } + this.shapeRenderer.draw(ctx, points, options); + + // ctx.restore(); + }; + + $.jqplot.MarkerRenderer.prototype.drawSquare = function(x, y, ctx, fill, options) { + var stretch = 1.0; + var dx = this.size/2/stretch; + var dy = this.size/2*stretch; + var points = [[x-dx, y-dy], [x-dx, y+dy], [x+dx, y+dy], [x+dx, y-dy]]; + if (this.shadow) { + this.shadowRenderer.draw(ctx, points); + } + this.shapeRenderer.draw(ctx, points, options); + + // ctx.restore(); + }; + + $.jqplot.MarkerRenderer.prototype.drawCircle = function(x, y, ctx, fill, options) { + var radius = this.size/2; + var end = 2*Math.PI; + var points = [x, y, radius, 0, end, true]; + if (this.shadow) { + this.shadowRenderer.draw(ctx, points); + } + this.shapeRenderer.draw(ctx, points, options); + + // ctx.restore(); + }; + + $.jqplot.MarkerRenderer.prototype.draw = function(x, y, ctx, options) { + options = options || {}; + // hack here b/c shape renderer uses canvas based color style options + // and marker uses css style names. + if (options.show == null || options.show != false) { + if (options.color && !options.fillStyle) { + options.fillStyle = options.color; + } + if (options.color && !options.strokeStyle) { + options.strokeStyle = options.color; + } + switch (this.style) { + case 'diamond': + this.drawDiamond(x,y,ctx, false, options); + break; + case 'filledDiamond': + this.drawDiamond(x,y,ctx, true, options); + break; + case 'circle': + this.drawCircle(x,y,ctx, false, options); + break; + case 'filledCircle': + this.drawCircle(x,y,ctx, true, options); + break; + case 'square': + this.drawSquare(x,y,ctx, false, options); + break; + case 'filledSquare': + this.drawSquare(x,y,ctx, true, options); + break; + case 'x': + this.drawX(x,y,ctx, true, options); + break; + case 'plus': + this.drawPlus(x,y,ctx, true, options); + break; + case 'dash': + this.drawDash(x,y,ctx, true, options); + break; + default: + this.drawDiamond(x,y,ctx, false, options); + break; + } + } + }; + + // class: $.jqplot.shadowRenderer + // The default jqPlot shadow renderer, rendering shadows behind shapes. + $.jqplot.ShadowRenderer = function(options){ + // Group: Properties + + // prop: angle + // Angle of the shadow in degrees. Measured counter-clockwise from the x axis. + this.angle = 45; + // prop: offset + // Pixel offset at the given shadow angle of each shadow stroke from the last stroke. + this.offset = 1; + // prop: alpha + // alpha transparency of shadow stroke. + this.alpha = 0.07; + // prop: lineWidth + // width of the shadow line stroke. + this.lineWidth = 1.5; + // prop: lineJoin + // How line segments of the shadow are joined. + this.lineJoin = 'miter'; + // prop: lineCap + // how ends of the shadow line are rendered. + this.lineCap = 'round'; + // prop; closePath + // whether line path segment is closed upon itself. + this.closePath = false; + // prop: fill + // whether to fill the shape. + this.fill = false; + // prop: depth + // how many times the shadow is stroked. Each stroke will be offset by offset at angle degrees. + this.depth = 3; + this.strokeStyle = 'rgba(0,0,0,0.1)'; + // prop: isarc + // wether the shadow is an arc or not. + this.isarc = false; + + $.extend(true, this, options); + }; + + $.jqplot.ShadowRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + // function: draw + // draws an transparent black (i.e. gray) shadow. + // + // ctx - canvas drawing context + // points - array of points or [x, y, radius, start angle (rad), end angle (rad)] + $.jqplot.ShadowRenderer.prototype.draw = function(ctx, points, options) { + ctx.save(); + var opts = (options != null) ? options : {}; + var fill = (opts.fill != null) ? opts.fill : this.fill; + var closePath = (opts.closePath != null) ? opts.closePath : this.closePath; + var offset = (opts.offset != null) ? opts.offset : this.offset; + var alpha = (opts.alpha != null) ? opts.alpha : this.alpha; + var depth = (opts.depth != null) ? opts.depth : this.depth; + var isarc = (opts.isarc != null) ? opts.isarc : this.isarc; + ctx.lineWidth = (opts.lineWidth != null) ? opts.lineWidth : this.lineWidth; + ctx.lineJoin = (opts.lineJoin != null) ? opts.lineJoin : this.lineJoin; + ctx.lineCap = (opts.lineCap != null) ? opts.lineCap : this.lineCap; + ctx.strokeStyle = opts.strokeStyle || this.strokeStyle || 'rgba(0,0,0,'+alpha+')'; + ctx.fillStyle = opts.fillStyle || this.fillStyle || 'rgba(0,0,0,'+alpha+')'; + for (var j=0; j<depth; j++) { + ctx.translate(Math.cos(this.angle*Math.PI/180)*offset, Math.sin(this.angle*Math.PI/180)*offset); + ctx.beginPath(); + if (isarc) { + ctx.arc(points[0], points[1], points[2], points[3], points[4], true); + } + else { + var move = true; + for (var i=0; i<points.length; i++) { + // skip to the first non-null point and move to it. + if (points[i][0] != null && points[i][1] != null) { + if (move) { + ctx.moveTo(points[i][0], points[i][1]); + move = false; + } + else { + ctx.lineTo(points[i][0], points[i][1]); + } + } + else { + move = true; + } + } + + } + if (closePath) { + ctx.closePath(); + } + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + } + ctx.restore(); + }; + + // class: $.jqplot.shapeRenderer + // The default jqPlot shape renderer. Given a set of points will + // plot them and either stroke a line (fill = false) or fill them (fill = true). + // If a filled shape is desired, closePath = true must also be set to close + // the shape. + $.jqplot.ShapeRenderer = function(options){ + + this.lineWidth = 1.5; + // prop: lineJoin + // How line segments of the shadow are joined. + this.lineJoin = 'miter'; + // prop: lineCap + // how ends of the shadow line are rendered. + this.lineCap = 'round'; + // prop; closePath + // whether line path segment is closed upon itself. + this.closePath = false; + // prop: fill + // whether to fill the shape. + this.fill = false; + // prop: isarc + // wether the shadow is an arc or not. + this.isarc = false; + // prop: fillRect + // true to draw shape as a filled rectangle. + this.fillRect = false; + // prop: strokeRect + // true to draw shape as a stroked rectangle. + this.strokeRect = false; + // prop: clearRect + // true to cear a rectangle. + this.clearRect = false; + // prop: strokeStyle + // css color spec for the stoke style + this.strokeStyle = '#999999'; + // prop: fillStyle + // css color spec for the fill style. + this.fillStyle = '#999999'; + + $.extend(true, this, options); + }; + + $.jqplot.ShapeRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + // function: draw + // draws the shape. + // + // ctx - canvas drawing context + // points - array of points for shapes or + // [x, y, width, height] for rectangles or + // [x, y, radius, start angle (rad), end angle (rad)] for circles and arcs. + $.jqplot.ShapeRenderer.prototype.draw = function(ctx, points, options) { + ctx.save(); + var opts = (options != null) ? options : {}; + var fill = (opts.fill != null) ? opts.fill : this.fill; + var closePath = (opts.closePath != null) ? opts.closePath : this.closePath; + var fillRect = (opts.fillRect != null) ? opts.fillRect : this.fillRect; + var strokeRect = (opts.strokeRect != null) ? opts.strokeRect : this.strokeRect; + var clearRect = (opts.clearRect != null) ? opts.clearRect : this.clearRect; + var isarc = (opts.isarc != null) ? opts.isarc : this.isarc; + ctx.lineWidth = opts.lineWidth || this.lineWidth; + ctx.lineJoin = opts.lineJoing || this.lineJoin; + ctx.lineCap = opts.lineCap || this.lineCap; + ctx.strokeStyle = (opts.strokeStyle || opts.color) || this.strokeStyle; + ctx.fillStyle = opts.fillStyle || this.fillStyle; + ctx.beginPath(); + if (isarc) { + ctx.arc(points[0], points[1], points[2], points[3], points[4], true); + if (closePath) { + ctx.closePath(); + } + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + ctx.restore(); + return; + } + else if (clearRect) { + ctx.clearRect(points[0], points[1], points[2], points[3]); + ctx.restore(); + return; + } + else if (fillRect || strokeRect) { + if (fillRect) { + ctx.fillRect(points[0], points[1], points[2], points[3]); + } + if (strokeRect) { + ctx.strokeRect(points[0], points[1], points[2], points[3]); + ctx.restore(); + return; + } + } + else { + var move = true; + for (var i=0; i<points.length; i++) { + // skip to the first non-null point and move to it. + if (points[i][0] != null && points[i][1] != null) { + if (move) { + ctx.moveTo(points[i][0], points[i][1]); + move = false; + } + else { + ctx.lineTo(points[i][0], points[i][1]); + } + } + else { + move = true; + } + } + if (closePath) { + ctx.closePath(); + } + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + } + ctx.restore(); + }; + + // class $.jqplot.TableLegendRenderer + // The default legend renderer for jqPlot. + $.jqplot.TableLegendRenderer = function(){ + // + }; + + $.jqplot.TableLegendRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + $.jqplot.TableLegendRenderer.prototype.addrow = function (label, color, pad, reverse) { + var rs = (pad) ? this.rowSpacing : '0'; + if (reverse){ + var tr = $('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem); + } + else{ + var tr = $('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem); + } + if (this.showSwatches) { + $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+ + '<div><div class="jqplot-table-legend-swatch" style="background-color:'+color+';border-color:'+color+';"></div>'+ + '</div></td>').appendTo(tr); + } + if (this.showLabels) { + var elem = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>'); + elem.appendTo(tr); + if (this.escapeHtml) { + elem.text(label); + } + else { + elem.html(label); + } + } + }; + + // called with scope of legend + $.jqplot.TableLegendRenderer.prototype.draw = function() { + var legend = this; + if (this.show) { + var series = this._series; + // make a table. one line label per row. + var ss = 'position:absolute;'; + ss += (this.background) ? 'background:'+this.background+';' : ''; + ss += (this.border) ? 'border:'+this.border+';' : ''; + ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : ''; + ss += (this.textColor) ? 'color:'+this.textColor+';' : ''; + ss += (this.marginTop != null) ? 'margin-top:'+this.marginTop+';' : ''; + ss += (this.marginBottom != null) ? 'margin-bottom:'+this.marginBottom+';' : ''; + ss += (this.marginLeft != null) ? 'margin-left:'+this.marginLeft+';' : ''; + ss += (this.marginRight != null) ? 'margin-right:'+this.marginRight+';' : ''; + this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>'); + + var pad = false, + reverse = false; + for (var i = 0; i< series.length; i++) { + s = series[i]; + if (s._stack || s.renderer.constructor == $.jqplot.BezierCurveRenderer){ + reverse = true; + } + if (s.show && s.showLabel) { + var lt = this.labels[i] || s.label.toString(); + if (lt) { + var color = s.color; + if (reverse && i < series.length - 1){ + pad = true; + } + else if (reverse && i == series.length - 1){ + pad = false; + } + this.renderer.addrow.call(this, lt, color, pad, reverse); + pad = true; + } + // let plugins add more rows to legend. Used by trend line plugin. + for (var j=0; j<$.jqplot.addLegendRowHooks.length; j++) { + var item = $.jqplot.addLegendRowHooks[j].call(this, s); + if (item) { + this.renderer.addrow.call(this, item.label, item.color, pad); + pad = true; + } + } + } + } + } + return this._elem; + }; + + $.jqplot.TableLegendRenderer.prototype.pack = function(offsets) { + if (this.show) { + if (this.placement == 'insideGrid') { + switch (this.location) { + case 'nw': + var a = offsets.left; + var b = offsets.top; + this._elem.css('left', a); + this._elem.css('top', b); + break; + case 'n': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = offsets.top; + this._elem.css('left', a); + this._elem.css('top', b); + break; + case 'ne': + var a = offsets.right; + var b = offsets.top; + this._elem.css({right:a, top:b}); + break; + case 'e': + var a = offsets.right; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({right:a, top:b}); + break; + case 'se': + var a = offsets.right; + var b = offsets.bottom; + this._elem.css({right:a, bottom:b}); + break; + case 's': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = offsets.bottom; + this._elem.css({left:a, bottom:b}); + break; + case 'sw': + var a = offsets.left; + var b = offsets.bottom; + this._elem.css({left:a, bottom:b}); + break; + case 'w': + var a = offsets.left; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({left:a, top:b}); + break; + default: // same as 'se' + var a = offsets.right; + var b = offsets.bottom; + this._elem.css({right:a, bottom:b}); + break; + } + + } + else if (this.placement == 'outside'){ + switch (this.location) { + case 'nw': + var a = this._plotDimensions.width - offsets.left; + var b = offsets.top; + this._elem.css('right', a); + this._elem.css('top', b); + break; + case 'n': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = this._plotDimensions.height - offsets.top; + this._elem.css('left', a); + this._elem.css('bottom', b); + break; + case 'ne': + var a = this._plotDimensions.width - offsets.right; + var b = offsets.top; + this._elem.css({left:a, top:b}); + break; + case 'e': + var a = this._plotDimensions.width - offsets.right; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({left:a, top:b}); + break; + case 'se': + var a = this._plotDimensions.width - offsets.right; + var b = offsets.bottom; + this._elem.css({left:a, bottom:b}); + break; + case 's': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = this._plotDimensions.height - offsets.bottom; + this._elem.css({left:a, top:b}); + break; + case 'sw': + var a = this._plotDimensions.width - offsets.left; + var b = offsets.bottom; + this._elem.css({right:a, bottom:b}); + break; + case 'w': + var a = this._plotDimensions.width - offsets.left; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({right:a, top:b}); + break; + default: // same as 'se' + var a = offsets.right; + var b = offsets.bottom; + this._elem.css({right:a, bottom:b}); + break; + } + } + else { + switch (this.location) { + case 'nw': + this._elem.css({left:0, top:offsets.top}); + break; + case 'n': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + this._elem.css({left: a, top:offsets.top}); + break; + case 'ne': + this._elem.css({right:0, top:offsets.top}); + break; + case 'e': + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({right:offsets.right, top:b}); + break; + case 'se': + this._elem.css({right:offsets.right, bottom:offsets.bottom}); + break; + case 's': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + this._elem.css({left: a, bottom:offsets.bottom}); + break; + case 'sw': + this._elem.css({left:offsets.left, bottom:offsets.bottom}); + break; + case 'w': + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({left:offsets.left, top:b}); + break; + default: // same as 'se' + this._elem.css({right:offsets.right, bottom:offsets.bottom}); + break; + } + } + } + }; + + /** + * Class: $.jqplot.ThemeEngine + * Theme Engine provides a programatic way to change some of the more + * common jqplot styling options such as fonts, colors and grid options. + * A theme engine instance is created with each plot. The theme engine + * manages a collection of themes which can be modified, added to, or + * applied to the plot. + * + * The themeEngine class is not instantiated directly. + * When a plot is initialized, the current plot options are scanned + * an a default theme named "Default" is created. This theme is + * used as the basis for other themes added to the theme engine and + * is always available. + * + * A theme is a simple javascript object with styling parameters for + * various entities of the plot. A theme has the form: + * + * + * > { + * > _name:f "Default", + * > target: { + * > backgroundColor: "transparent" + * > }, + * > legend: { + * > textColor: null, + * > fontFamily: null, + * > fontSize: null, + * > border: null, + * > background: null + * > }, + * > title: { + * > textColor: "rgb(102, 102, 102)", + * > fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif", + * > fontSize: "19.2px", + * > textAlign: "center" + * > }, + * > seriesStyles: {}, + * > series: [{ + * > color: "#4bb2c5", + * > lineWidth: 2.5, + * > shadow: true, + * > fillColor: "#4bb2c5", + * > showMarker: true, + * > markerOptions: { + * > color: "#4bb2c5", + * > show: true, + * > style: 'filledCircle', + * > lineWidth: 1.5, + * > size: 4, + * > shadow: true + * > } + * > }], + * > grid: { + * > drawGridlines: true, + * > gridLineColor: "#cccccc", + * > gridLineWidth: 1, + * > backgroundColor: "#fffdf6", + * > borderColor: "#999999", + * > borderWidth: 2, + * > shadow: true + * > }, + * > axesStyles: { + * > label: {}, + * > ticks: {} + * > }, + * > axes: { + * > xaxis: { + * > borderColor: "#999999", + * > borderWidth: 2, + * > ticks: { + * > show: true, + * > showGridline: true, + * > showLabel: true, + * > showMark: true, + * > size: 4, + * > textColor: "", + * > whiteSpace: "nowrap", + * > fontSize: "12px", + * > fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif" + * > }, + * > label: { + * > textColor: "rgb(102, 102, 102)", + * > whiteSpace: "normal", + * > fontSize: "14.6667px", + * > fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif", + * > fontWeight: "400" + * > } + * > }, + * > yaxis: { + * > borderColor: "#999999", + * > borderWidth: 2, + * > ticks: { + * > show: true, + * > showGridline: true, + * > showLabel: true, + * > showMark: true, + * > size: 4, + * > textColor: "", + * > whiteSpace: "nowrap", + * > fontSize: "12px", + * > fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif" + * > }, + * > label: { + * > textColor: null, + * > whiteSpace: null, + * > fontSize: null, + * > fontFamily: null, + * > fontWeight: null + * > } + * > }, + * > x2axis: {... + * > }, + * > ... + * > y9axis: {... + * > } + * > } + * > } + * + * "seriesStyles" is a style object that will be applied to all series in the plot. + * It will forcibly override any styles applied on the individual series. "axesStyles" is + * a style object that will be applied to all axes in the plot. It will also forcibly + * override any styles on the individual axes. + * + * The example shown above has series options for a line series. Options for other + * series types are shown below: + * + * Bar Series: + * + * > { + * > color: "#4bb2c5", + * > seriesColors: ["#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"], + * > lineWidth: 2.5, + * > shadow: true, + * > barPadding: 2, + * > barMargin: 10, + * > barWidth: 15.09375, + * > highlightColors: ["rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)"] + * > } + * + * Pie Series: + * + * > { + * > seriesColors: ["#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"], + * > padding: 20, + * > sliceMargin: 0, + * > fill: true, + * > shadow: true, + * > startAngle: 0, + * > lineWidth: 2.5, + * > highlightColors: ["rgb(129,201,214)", "rgb(240,189,104)", "rgb(214,202,165)", "rgb(137,180,158)", "rgb(168,180,137)", "rgb(180,174,89)", "rgb(180,113,161)", "rgb(129,141,236)", "rgb(227,205,120)", "rgb(255,138,76)", "rgb(76,169,219)", "rgb(215,126,190)", "rgb(220,232,135)", "rgb(200,167,96)", "rgb(103,202,235)", "rgb(208,154,215)"] + * > } + * + * Funnel Series: + * + * > { + * > color: "#4bb2c5", + * > lineWidth: 2, + * > shadow: true, + * > padding: { + * > top: 20, + * > right: 20, + * > bottom: 20, + * > left: 20 + * > }, + * > sectionMargin: 6, + * > seriesColors: ["#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"], + * > highlightColors: ["rgb(147,208,220)", "rgb(242,199,126)", "rgb(220,210,178)", "rgb(154,191,172)", "rgb(180,191,154)", "rgb(191,186,112)", "rgb(191,133,174)", "rgb(147,157,238)", "rgb(231,212,139)", "rgb(255,154,102)", "rgb(102,181,224)", "rgb(221,144,199)", "rgb(225,235,152)", "rgb(200,167,96)", "rgb(124,210,238)", "rgb(215,169,221)"] + * > } + * + */ + $.jqplot.ThemeEngine = function(){ + // Group: Properties + // + // prop: themes + // hash of themes managed by the theme engine. + // Indexed by theme name. + this.themes = {}; + // prop: activeTheme + // Pointer to currently active theme + this.activeTheme=null; + + }; + + // called with scope of plot + $.jqplot.ThemeEngine.prototype.init = function() { + // get the Default theme from the current plot settings. + var th = new $.jqplot.Theme({_name:'Default'}); + var n, i; + + for (n in th.target) { + if (n == "textColor") { + th.target[n] = this.target.css('color'); + } + else { + th.target[n] = this.target.css(n); + } + } + + if (this.title.show && this.title._elem) { + for (n in th.title) { + if (n == "textColor") { + th.title[n] = this.title._elem.css('color'); + } + else { + th.title[n] = this.title._elem.css(n); + } + } + } + + for (n in th.grid) { + th.grid[n] = this.grid[n]; + } + if (th.grid.backgroundColor == null && this.grid.background != null) { + th.grid.backgroundColor = this.grid.background; + } + if (this.legend.show && this.legend._elem) { + for (n in th.legend) { + if (n == 'textColor') { + th.legend[n] = this.legend._elem.css('color'); + } + else { + th.legend[n] = this.legend._elem.css(n); + } + } + } + var s; + + for (i=0; i<this.series.length; i++) { + s = this.series[i]; + if (s.renderer.constructor == $.jqplot.LineRenderer) { + th.series.push(new LineSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.BarRenderer) { + th.series.push(new BarSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.PieRenderer) { + th.series.push(new PieSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.DonutRenderer) { + th.series.push(new DonutSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.FunnelRenderer) { + th.series.push(new FunnelSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.MeterGaugeRenderer) { + th.series.push(new MeterSeriesProperties()); + } + else { + th.series.push({}); + } + for (n in th.series[i]) { + th.series[i][n] = s[n]; + } + } + var a, ax; + for (n in this.axes) { + ax = this.axes[n]; + a = th.axes[n] = new AxisProperties(); + a.borderColor = ax.borderColor; + a.borderWidth = ax.borderWidth; + if (ax._ticks && ax._ticks[0]) { + for (nn in a.ticks) { + if (ax._ticks[0].hasOwnProperty(nn)) { + a.ticks[nn] = ax._ticks[0][nn]; + } + else if (ax._ticks[0]._elem){ + a.ticks[nn] = ax._ticks[0]._elem.css(nn); + } + } + } + if (ax._label && ax._label.show) { + for (nn in a.label) { + // a.label[nn] = ax._label._elem.css(nn); + if (ax._label[nn]) { + a.label[nn] = ax._label[nn]; + } + else if (ax._label._elem){ + if (nn == 'textColor') { + a.label[nn] = ax._label._elem.css('color'); + } + else { + a.label[nn] = ax._label._elem.css(nn); + } + } + } + } + } + this.themeEngine._add(th); + this.themeEngine.activeTheme = this.themeEngine.themes[th._name]; + }; + /** + * Group: methods + * + * method: get + * + * Get and return the named theme or the active theme if no name given. + * + * parameter: + * + * name - name of theme to get. + * + * returns: + * + * Theme instance of given name. + */ + $.jqplot.ThemeEngine.prototype.get = function(name) { + if (!name) { + // return the active theme + return this.activeTheme; + } + else { + return this.themes[name]; + } + }; + + function numericalOrder(a,b) { return a-b; } + + /** + * method: getThemeNames + * + * Return the list of theme names in this manager in alpha-numerical order. + * + * parameter: + * + * None + * + * returns: + * + * A the list of theme names in this manager in alpha-numerical order. + */ + $.jqplot.ThemeEngine.prototype.getThemeNames = function() { + var tn = []; + for (var n in this.themes) { + tn.push(n); + } + return tn.sort(numericalOrder); + }; + + /** + * method: getThemes + * + * Return a list of themes in alpha-numerical order by name. + * + * parameter: + * + * None + * + * returns: + * + * A list of themes in alpha-numerical order by name. + */ + $.jqplot.ThemeEngine.prototype.getThemes = function() { + var tn = []; + var themes = []; + for (var n in this.themes) { + tn.push(n); + } + tn.sort(numericalOrder); + for (var i=0; i<tn.length; i++) { + themes.push(this.themes[tn[i]]); + } + return themes; + }; + + $.jqplot.ThemeEngine.prototype.activate = function(plot, name) { + // sometimes need to redraw whole plot. + var redrawPlot = false; + if (!name && this.activeTheme && this.activeTheme._name) { + name = this.activeTheme._name; + } + if (!this.themes.hasOwnProperty(name)) { + throw new Error("No theme of that name"); + } + else { + var th = this.themes[name]; + this.activeTheme = th; + var val, checkBorderColor = false, checkBorderWidth = false; + var arr = ['xaxis', 'x2axis', 'yaxis', 'y2axis']; + + for (i=0; i<arr.length; i++) { + var ax = arr[i]; + if (th.axesStyles.borderColor != null) { + plot.axes[ax].borderColor = th.axesStyles.borderColor; + } + if (th.axesStyles.borderWidth != null) { + plot.axes[ax].borderWidth = th.axesStyles.borderWidth; + } + } + + for (axname in plot.axes) { + var axis = plot.axes[axname]; + if (axis.show) { + var thaxis = th.axes[axname] || {}; + var thaxstyle = th.axesStyles; + var thax = $.jqplot.extend(true, {}, thaxis, thaxstyle); + val = (th.axesStyles.borderColor != null) ? th.axesStyles.borderColor : thax.borderColor; + if (thax.borderColor != null) { + axis.borderColor = thax.borderColor; + redrawPlot = true; + } + val = (th.axesStyles.borderWidth != null) ? th.axesStyles.borderWidth : thax.borderWidth; + if (thax.borderWidth != null) { + axis.borderWidth = thax.borderWidth; + redrawPlot = true; + } + if (axis._ticks && axis._ticks[0]) { + for (nn in thax.ticks) { + // val = null; + // if (th.axesStyles.ticks && th.axesStyles.ticks[nn] != null) { + // val = th.axesStyles.ticks[nn]; + // } + // else if (thax.ticks[nn] != null){ + // val = thax.ticks[nn] + // } + val = thax.ticks[nn]; + if (val != null) { + axis.tickOptions[nn] = val; + axis._ticks = []; + redrawPlot = true; + } + } + } + if (axis._label && axis._label.show) { + for (nn in thax.label) { + // val = null; + // if (th.axesStyles.label && th.axesStyles.label[nn] != null) { + // val = th.axesStyles.label[nn]; + // } + // else if (thax.label && thax.label[nn] != null){ + // val = thax.label[nn] + // } + val = thax.label[nn]; + if (val != null) { + axis.labelOptions[nn] = val; + redrawPlot = true; + } + } + } + + } + } + + for (var n in th.grid) { + if (th.grid[n] != null) { + plot.grid[n] = th.grid[n]; + } + } + if (!redrawPlot) { + plot.grid.draw(); + } + + if (plot.legend.show) { + for (n in th.legend) { + if (th.legend[n] != null) { + plot.legend[n] = th.legend[n]; + } + } + } + if (plot.title.show) { + for (n in th.title) { + if (th.title[n] != null) { + plot.title[n] = th.title[n]; + } + } + } + + var i; + for (i=0; i<th.series.length; i++) { + var opts = {}; + var redrawSeries = false; + for (n in th.series[i]) { + val = (th.seriesStyles[n] != null) ? th.seriesStyles[n] : th.series[i][n]; + if (val != null) { + opts[n] = val; + if (n == 'color') { + plot.series[i].renderer.shapeRenderer.fillStyle = val; + plot.series[i].renderer.shapeRenderer.strokeStyle = val; + plot.series[i][n] = val; + } + else if (n == 'lineWidth') { + plot.series[i].renderer.shapeRenderer.lineWidth = val; + plot.series[i][n] = val; + } + else if (n == 'markerOptions') { + merge (plot.series[i].markerOptions, val); + merge (plot.series[i].markerRenderer, val); + } + else { + plot.series[i][n] = val; + } + redrawPlot = true; + } + } + } + + if (redrawPlot) { + plot.target.empty(); + plot.draw(); + } + + for (n in th.target) { + if (th.target[n] != null) { + plot.target.css(n, th.target[n]); + } + } + } + + }; + + $.jqplot.ThemeEngine.prototype._add = function(theme, name) { + if (name) { + theme._name = name; + } + if (!theme._name) { + theme._name = Date.parse(new Date()); + } + if (!this.themes.hasOwnProperty(theme._name)) { + this.themes[theme._name] = theme; + } + else { + throw new Error("jqplot.ThemeEngine Error: Theme already in use"); + } + }; + + // method remove + // Delete the named theme, return true on success, false on failure. + + + /** + * method: remove + * + * Remove the given theme from the themeEngine. + * + * parameters: + * + * name - name of the theme to remove. + * + * returns: + * + * true on success, false on failure. + */ + $.jqplot.ThemeEngine.prototype.remove = function(name) { + if (name == 'Default') { + return false; + } + return delete this.themes[name]; + }; + + /** + * method: newTheme + * + * Create a new theme based on the default theme, adding it the themeEngine. + * + * parameters: + * + * name - name of the new theme. + * obj - optional object of styles to be applied to this new theme. + * + * returns: + * + * new Theme object. + */ + $.jqplot.ThemeEngine.prototype.newTheme = function(name, obj) { + if (typeof(name) == 'object') { + obj = obj || name; + name = null; + } + if (obj && obj._name) { + name = obj._name; + } + else { + name = name || Date.parse(new Date()); + } + // var th = new $.jqplot.Theme(name); + var th = this.copy(this.themes['Default']._name, name); + $.jqplot.extend(th, obj); + return th; + }; + + // function clone(obj) { + // return eval(obj.toSource()); + // } + + function clone(obj){ + if(obj == null || typeof(obj) != 'object'){ + return obj; + } + + var temp = new obj.constructor(); + for(var key in obj){ + temp[key] = clone(obj[key]); + } + return temp; + } + + $.jqplot.clone = clone; + + function merge(obj1, obj2) { + if (obj2 == null || typeof(obj2) != 'object') { + return; + } + for (var key in obj2) { + if (key == 'highlightColors') { + obj1[key] = clone(obj2[key]); + } + if (obj2[key] != null && typeof(obj2[key]) == 'object') { + if (!obj1.hasOwnProperty(key)) { + obj1[key] = {}; + } + merge(obj1[key], obj2[key]); + } + else { + obj1[key] = obj2[key]; + } + } + } + + $.jqplot.merge = merge; + + // Use the jQuery 1.3.2 extend function since behaviour in jQuery 1.4 seems problematic + $.jqplot.extend = function() { + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !toString.call(target) === "[object Function]" ) { + target = {}; + } + + for ( ; i < length; i++ ){ + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( var name in options ) { + var src = target[ name ], copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging object values + if ( deep && copy && typeof copy === "object" && !copy.nodeType ) { + target[ name ] = $.jqplot.extend( deep, + // Never move original objects, clone them + src || ( copy.length != null ? [ ] : { } ) + , copy ); + } + // Don't bring in undefined values + else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + // Return the modified object + return target; + }; + + /** + * method: rename + * + * Rename a theme. + * + * parameters: + * + * oldName - current name of the theme. + * newName - desired name of the theme. + * + * returns: + * + * new Theme object. + */ + $.jqplot.ThemeEngine.prototype.rename = function (oldName, newName) { + if (oldName == 'Default' || newName == 'Default') { + throw new Error ("jqplot.ThemeEngine Error: Cannot rename from/to Default"); + } + if (this.themes.hasOwnProperty(newName)) { + throw new Error ("jqplot.ThemeEngine Error: New name already in use."); + } + else if (this.themes.hasOwnProperty(oldName)) { + var th = this.copy (oldName, newName); + this.remove(oldName); + return th; + } + throw new Error("jqplot.ThemeEngine Error: Old name or new name invalid"); + }; + + /** + * method: copy + * + * Create a copy of an existing theme in the themeEngine, adding it the themeEngine. + * + * parameters: + * + * sourceName - name of the existing theme. + * targetName - name of the copy. + * obj - optional object of style parameter to apply to the new theme. + * + * returns: + * + * new Theme object. + */ + $.jqplot.ThemeEngine.prototype.copy = function (sourceName, targetName, obj) { + if (targetName == 'Default') { + throw new Error ("jqplot.ThemeEngine Error: Cannot copy over Default theme"); + } + if (!this.themes.hasOwnProperty(sourceName)) { + var s = "jqplot.ThemeEngine Error: Source name invalid"; + throw new Error(s); + } + if (this.themes.hasOwnProperty(targetName)) { + var s = "jqplot.ThemeEngine Error: Target name invalid"; + throw new Error(s); + } + else { + var th = clone(this.themes[sourceName]); + th._name = targetName; + $.jqplot.extend(true, th, obj); + this._add(th); + return th; + } + }; + + + $.jqplot.Theme = function(name, obj) { + if (typeof(name) == 'object') { + obj = obj || name; + name = null; + } + name = name || Date.parse(new Date()); + this._name = name; + this.target = { + backgroundColor: null + }; + this.legend = { + textColor: null, + fontFamily: null, + fontSize: null, + border: null, + background: null + }; + this.title = { + textColor: null, + fontFamily: null, + fontSize: null, + textAlign: null + }; + this.seriesStyles = {}; + this.series = []; + this.grid = { + drawGridlines: null, + gridLineColor: null, + gridLineWidth: null, + backgroundColor: null, + borderColor: null, + borderWidth: null, + shadow: null + }; + this.axesStyles = {label:{}, ticks:{}}; + this.axes = {}; + if (typeof(obj) == 'string') { + this._name = obj; + } + else if(typeof(obj) == 'object') { + $.jqplot.extend(true, this, obj); + } + }; + + var AxisProperties = function() { + this.borderColor = null; + this.borderWidth = null; + this.ticks = new AxisTicks(); + this.label = new AxisLabel(); + }; + + var AxisTicks = function() { + this.show = null; + this.showGridline = null; + this.showLabel = null; + this.showMark = null; + this.size = null; + this.textColor = null; + this.whiteSpace = null; + this.fontSize = null; + this.fontFamily = null; + }; + + var AxisLabel = function() { + this.textColor = null; + this.whiteSpace = null; + this.fontSize = null; + this.fontFamily = null; + this.fontWeight = null; + }; + + var LineSeriesProperties = function() { + this.color=null; + this.lineWidth=null; + this.shadow=null; + this.fillColor=null; + this.showMarker=null; + this.markerOptions = new MarkerOptions(); + }; + + var MarkerOptions = function() { + this.show = null; + this.style = null; + this.lineWidth = null; + this.size = null; + this.color = null; + this.shadow = null; + }; + + var BarSeriesProperties = function() { + this.color=null; + this.seriesColors=null; + this.lineWidth=null; + this.shadow=null; + this.barPadding=null; + this.barMargin=null; + this.barWidth=null; + this.highlightColors=null; + }; + + var PieSeriesProperties = function() { + this.seriesColors=null; + this.padding=null; + this.sliceMargin=null; + this.fill=null; + this.shadow=null; + this.startAngle=null; + this.lineWidth=null; + this.highlightColors=null; + }; + + var DonutSeriesProperties = function() { + this.seriesColors=null; + this.padding=null; + this.sliceMargin=null; + this.fill=null; + this.shadow=null; + this.startAngle=null; + this.lineWidth=null; + this.innerDiameter=null; + this.thickness=null; + this.ringMargin=null; + this.highlightColors=null; + }; + + var FunnelSeriesProperties = function() { + this.color=null; + this.lineWidth=null; + this.shadow=null; + this.padding=null; + this.sectionMargin=null; + this.seriesColors=null; + this.highlightColors=null; + }; + + var MeterSeriesProperties = function() { + this.padding=null; + this.backgroundColor=null; + this.ringColor=null; + this.tickColor=null; + this.ringWidth=null; + this.intervalColors=null; + this.intervalInnerRadius=null; + this.intervalOuterRadius=null; + this.hubRadius=null; + this.needleThickness=null; + this.needlePad=null; + }; + + + + /** + * JavaScript printf/sprintf functions. + * + * This code has been adapted from the publicly available sprintf methods + * by Ash Searle. His original header follows: + * + * This code is unrestricted: you are free to use it however you like. + * + * The functions should work as expected, performing left or right alignment, + * truncating strings, outputting numbers with a required precision etc. + * + * For complex cases, these functions follow the Perl implementations of + * (s)printf, allowing arguments to be passed out-of-order, and to set the + * precision or length of the output based on arguments instead of fixed + * numbers. + * + * See http://perldoc.perl.org/functions/sprintf.html for more information. + * + * Implemented: + * - zero and space-padding + * - right and left-alignment, + * - base X prefix (binary, octal and hex) + * - positive number prefix + * - (minimum) width + * - precision / truncation / maximum width + * - out of order arguments + * + * Not implemented (yet): + * - vector flag + * - size (bytes, words, long-words etc.) + * + * Will not implement: + * - %n or %p (no pass-by-reference in JavaScript) + * + * @version 2007.04.27 + * @author Ash Searle + * + * You can see the original work and comments on his blog: + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + */ + + /** + * @Modifications 2009.05.26 + * @author Chris Leonello + * + * Added %p %P specifier + * Acts like %g or %G but will not add more significant digits to the output than present in the input. + * Example: + * Format: '%.3p', Input: 0.012, Output: 0.012 + * Format: '%.3g', Input: 0.012, Output: 0.0120 + * Format: '%.4p', Input: 12.0, Output: 12.0 + * Format: '%.4g', Input: 12.0, Output: 12.00 + * Format: '%.4p', Input: 4.321e-5, Output: 4.321e-5 + * Format: '%.4g', Input: 4.321e-5, Output: 4.3210e-5 + */ + $.jqplot.sprintf = function() { + function pad(str, len, chr, leftJustify) { + var padding = (str.length >= len) ? '' : Array(1 + len - str.length >>> 0).join(chr); + return leftJustify ? str + padding : padding + str; + + } + + function justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace) { + var diff = minWidth - value.length; + if (diff > 0) { + var spchar = ' '; + if (htmlSpace) { spchar = ' '; } + if (leftJustify || !zeroPad) { + value = pad(value, minWidth, spchar, leftJustify); + } else { + value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length); + } + } + return value; + } + + function formatBaseX(value, base, prefix, leftJustify, minWidth, precision, zeroPad, htmlSpace) { + // Note: casts negative numbers to positive ones + var number = value >>> 0; + prefix = prefix && number && {'2': '0b', '8': '0', '16': '0x'}[base] || ''; + value = prefix + pad(number.toString(base), precision || 0, '0', false); + return justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace); + } + + function formatString(value, leftJustify, minWidth, precision, zeroPad, htmlSpace) { + if (precision != null) { + value = value.slice(0, precision); + } + return justify(value, '', leftJustify, minWidth, zeroPad, htmlSpace); + } + + var a = arguments, i = 0, format = a[i++]; + + return format.replace($.jqplot.sprintf.regex, function(substring, valueIndex, flags, minWidth, _, precision, type) { + if (substring == '%%') { return '%'; } + + // parse flags + var leftJustify = false, positivePrefix = '', zeroPad = false, prefixBaseX = false, htmlSpace = false; + for (var j = 0; flags && j < flags.length; j++) switch (flags.charAt(j)) { + case ' ': positivePrefix = ' '; break; + case '+': positivePrefix = '+'; break; + case '-': leftJustify = true; break; + case '0': zeroPad = true; break; + case '#': prefixBaseX = true; break; + case '&': htmlSpace = true; break; + } + + // parameters may be null, undefined, empty-string or real valued + // we want to ignore null, undefined and empty-string values + + if (!minWidth) { + minWidth = 0; + } + else if (minWidth == '*') { + minWidth = +a[i++]; + } + else if (minWidth.charAt(0) == '*') { + minWidth = +a[minWidth.slice(1, -1)]; + } + else { + minWidth = +minWidth; + } + + // Note: undocumented perl feature: + if (minWidth < 0) { + minWidth = -minWidth; + leftJustify = true; + } + + if (!isFinite(minWidth)) { + throw new Error('$.jqplot.sprintf: (minimum-)width must be finite'); + } + + if (!precision) { + precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type == 'd') ? 0 : void(0); + } + else if (precision == '*') { + precision = +a[i++]; + } + else if (precision.charAt(0) == '*') { + precision = +a[precision.slice(1, -1)]; + } + else { + precision = +precision; + } + + // grab value using valueIndex if required? + var value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++]; + + switch (type) { + case 's': { + if (value == null) { + return ''; + } + return formatString(String(value), leftJustify, minWidth, precision, zeroPad, htmlSpace); + } + case 'c': return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad, htmlSpace); + case 'b': return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad,htmlSpace); + case 'o': return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad, htmlSpace); + case 'x': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad, htmlSpace); + case 'X': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad, htmlSpace).toUpperCase(); + case 'u': return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad, htmlSpace); + case 'i': { + var number = parseInt(+value, 10); + if (isNaN(number)) { + return ''; + } + var prefix = number < 0 ? '-' : positivePrefix; + value = prefix + pad(String(Math.abs(number)), precision, '0', false); + return justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace); + } + case 'd': { + var number = Math.round(+value); + if (isNaN(number)) { + return ''; + } + var prefix = number < 0 ? '-' : positivePrefix; + value = prefix + pad(String(Math.abs(number)), precision, '0', false); + return justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace); + } + case 'e': + case 'E': + case 'f': + case 'F': + case 'g': + case 'G': + { + var number = +value; + if (isNaN(number)) { + return ''; + } + var prefix = number < 0 ? '-' : positivePrefix; + var method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())]; + var textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2]; + value = prefix + Math.abs(number)[method](precision); + return justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace)[textTransform](); + } + case 'p': + case 'P': + { + // make sure number is a number + var number = +value; + if (isNaN(number)) { + return ''; + } + var prefix = number < 0 ? '-' : positivePrefix; + + var parts = String(Number(Math.abs(number)).toExponential()).split(/e|E/); + var sd = (parts[0].indexOf('.') != -1) ? parts[0].length - 1 : parts[0].length; + var zeros = (parts[1] < 0) ? -parts[1] - 1 : 0; + + if (Math.abs(number) < 1) { + if (sd + zeros <= precision) { + value = prefix + Math.abs(number).toPrecision(sd); + } + else { + if (sd <= precision - 1) { + value = prefix + Math.abs(number).toExponential(sd-1); + } + else { + value = prefix + Math.abs(number).toExponential(precision-1); + } + } + } + else { + var prec = (sd <= precision) ? sd : precision; + value = prefix + Math.abs(number).toPrecision(prec); + } + var textTransform = ['toString', 'toUpperCase']['pP'.indexOf(type) % 2]; + return justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace)[textTransform](); + } + case 'n': return ''; + default: return substring; + } + }); + }; + + $.jqplot.sprintf.regex = /%%|%(\d+\$)?([-+#0& ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([nAscboxXuidfegpEGP])/g; + +})(jQuery); ADDED Site/Site_W/jpqplot/jquery.jqplot.min.css Index: Site/Site_W/jpqplot/jquery.jqplot.min.css ================================================================== --- Site/Site_W/jpqplot/jquery.jqplot.min.css +++ Site/Site_W/jpqplot/jquery.jqplot.min.css @@ -0,0 +1,1 @@ +.jqplot-target{position:relative;color:#666;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:1em;}.jqplot-axis{font-size:.75em;}.jqplot-xaxis{margin-top:10px;}.jqplot-x2axis{margin-bottom:10px;}.jqplot-yaxis{margin-right:10px;}.jqplot-y2axis,.jqplot-y3axis,.jqplot-y4axis,.jqplot-y5axis,.jqplot-y6axis,.jqplot-y7axis,.jqplot-y8axis,.jqplot-y9axis{margin-left:10px;margin-right:10px;}.jqplot-axis-tick,.jqplot-xaxis-tick,.jqplot-yaxis-tick,.jqplot-x2axis-tick,.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick{position:absolute;}.jqplot-xaxis-tick{top:0;left:15px;vertical-align:top;}.jqplot-x2axis-tick{bottom:0;left:15px;vertical-align:bottom;}.jqplot-yaxis-tick{right:0;top:15px;text-align:right;}.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick{left:0;top:15px;text-align:left;}.jqplot-meterGauge-tick{font-size:.75em;color:#999;}.jqplot-meterGauge-label{font-size:1em;color:#999;}.jqplot-xaxis-label{margin-top:10px;font-size:11pt;position:absolute;}.jqplot-x2axis-label{margin-bottom:10px;font-size:11pt;position:absolute;}.jqplot-yaxis-label{margin-right:10px;font-size:11pt;position:absolute;}.jqplot-y2axis-label,.jqplot-y3axis-label,.jqplot-y4axis-label,.jqplot-y5axis-label,.jqplot-y6axis-label,.jqplot-y7axis-label,.jqplot-y8axis-label,.jqplot-y9axis-label{font-size:11pt;position:absolute;}table.jqplot-table-legend{margin-top:12px;margin-bottom:12px;margin-left:12px;margin-right:12px;}table.jqplot-table-legend,table.jqplot-cursor-legend{background-color:rgba(255,255,255,0.6);border:1px solid #ccc;position:absolute;font-size:.75em;}td.jqplot-table-legend{vertical-align:middle;}td.jqplot-seriesToggle:hover,td.jqplot-seriesToggle:active{cursor:pointer;}td.jqplot-table-legend>div{border:1px solid #ccc;padding:1px;}div.jqplot-table-legend-swatch{width:0;height:0;border-top-width:5px;border-bottom-width:5px;border-left-width:6px;border-right-width:6px;border-top-style:solid;border-bottom-style:solid;border-left-style:solid;border-right-style:solid;}.jqplot-title{top:0;left:0;padding-bottom:.5em;font-size:1.2em;}table.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em;}.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px;}.jqplot-highlighter-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px;}.jqplot-point-label{font-size:.75em;z-index:2;}td.jqplot-cursor-legend-swatch{vertical-align:middle;text-align:center;}div.jqplot-cursor-legend-swatch{width:1.2em;height:.7em;}.jqplot-error{text-align:center;}.jqplot-error-message{position:relative;top:46%;display:inline-block;}div.jqplot-bubble-label{font-size:.8em;padding-left:2px;padding-right:2px;color:rgb(20%,20%,20%);}div.jqplot-bubble-label.jqplot-bubble-label-highlight{background:rgba(90%,90%,90%,0.7);} ADDED Site/Site_W/jpqplot/jquery.jqplot.min.js Index: Site/Site_W/jpqplot/jquery.jqplot.min.js ================================================================== --- Site/Site_W/jpqplot/jquery.jqplot.min.js +++ Site/Site_W/jpqplot/jquery.jqplot.min.js cannot compute difference between binary files ADDED Site/Site_W/jpqplot/optionsTutorial.txt Index: Site/Site_W/jpqplot/optionsTutorial.txt ================================================================== --- Site/Site_W/jpqplot/optionsTutorial.txt +++ Site/Site_W/jpqplot/optionsTutorial.txt @@ -0,0 +1,239 @@ +Title: Options Tutorial + +This document will help you understand how jqPlot's options +relate to the API documentation and the jqPlot object +itself. For a listing of options available to jqPlot, +see <jqPlot Options> in the jqPlotOptions.txt file. + +The key to effectively using jqPlot is understanding jqPlot's +options. The online documentation is API documentation. While +it explains what attributes and methods various objects posses, +it doesn't explain how to use or set those attributes through +options. This tutorial will help explain that. + +Lets assume you are creating a plot +like this: + +> chart = $.jqplot('chart', dataSeries, optionsObj); + +First, note that you shouldn't try to directly set attributes on the +"chart" object (like chart.grid.shadow) after your call to $.jqplot(). +At best this won't do anything **(see below). You should pass options in via +the "optionsObj". + +the optionsObj really represents the plot object (jqPlot object, not +to be confused with the $.jqplot function which will create a jqPlot +object). Attributes you specify on that object will be merged with +attributes in the jqPlot object. The axes, legend, series, etc. are +attributes on the jqPlot object. The jqPlot/optionsObj object looks +something like (only some attributes shown): + +> jqPlot-| +> |-seriesColors +> |-textColor +> |-fontFamily +> |-fontSize +> |-stackSeries +> |-series(Array)-| +> | |-Series1-| +> | | |-lineWidth +> | | |-shadow +> | | |-showLine +> | | |-showMarker +> | | |-color +> | |-Series2... +> | |-... +> | |-SeriesN +> | +> |-grid(Object)-| +> | |-drawGridLines +> | |-background +> | |-borderColor +> | |-borderWidth +> | |-shadow +> | +> |-title(Object)-| +> | |-text +> | |-show +> | |-fontFamily +> | |-fontSize +> | |-textAlign +> | |-textColor +> | +> |-axes(Object)-| +> | |-xais-| +> | | |-min +> | | |-max +> | | |-numberTicks +> | | |-showTicks +> | | |-showTickMarks +> | | |-pad +> | +> | ... and so on + +The optionsObj should follow the same construction as if it were a +jqPlot object (with some exceptions/shortcuts I'll mention in a +moment). So generally, when you see something like +"this.drawGridLines" in the grid properties in the docs, just replace +"this" with "grid" in your options object. So it becomes +optionsObj.grid.drawGridLines. Do likewise with the other objects in +the plot, replacing "this", with the respective attribute on the plot +like "legend" or "title". Series and Axes are handled a little +different, because series is an array and axes has 4 distinct children +"xaxis", "yaxis", "x2axis" and "y2axis". + +So, to remove the shadow from the grid and change the grid border size +you would do: + +> optionObj = {grid:{shadow:false, borderWidth:9.0}}; + +To do the same as above but also make all the text in the plot red you +would do: + +> optionObj = { +> textColor:"#ff0000", +> grid:{shadow:false, borderWidth:9.0} +> } + +Here is a more deeply nested example. Say you want to specify a min +and max on your y axis and use a specific color for your second +series. That would look like: + +> optionsObj = { +> axes:{yaxis:{min:5, max:230}}, +> series:[{},{color:"#33ff66"}] +> } + +Note that series options are an array in order of the series data you +sent in to your plot. To get to the second series, you have to put an +object (even if empty) in place of the first series. + +There is a handy shortcut to assign options to all axes or all series +at one go. Use axesDefaults and seriesDefaults. So, if you wanted +both x and y axes to start at 0 and you wanted all series to not show +markers, you could do: + +> optionsObj = {axesDefaults:{min:0}, seriesDefaults:{showMarker:false}} + +Another shortcut is for the plot title. Normally, you would assign +options to the title as an object. If you specify a title option as a +string, it will assign that to the title.text property automatically. +So these two are equivalent: + +> optionsObj = {title:{text:"My Plot"}} + +and + +> optionsObj = {title:"My Plot"} + +Where things need more explaination is with renderers, plugins and +their options. Briefly, what's renderer, what's a plugin. + +A renderer is an object that is used to draw something and gets +attached to an existing object in the plot in order to draw it. A +plugin does more than just provide drawing functionality to an +object. It will do more like calculate a trend line, change the +cursor, provide event driven functionality, etc. I consider renderers +plugins, but plugins don't have to be renderers. + +So, how do you use renderers, plugins, and specify their options? +Some common renderes are for bar charts and category axes. If you +want to render your series as a bar chart with each set of bars +showing up in a category on the x axis, you do: + +> optionsObj = { +> seriesDefaults:{renderer:$.jqplot.BarRenderer}, +> axes:{xaxis:{renderer:$.jqplot.CategoryAxisRenderer}} +> } + +This replaces the default renderer used for all series in the plot +with a bar renderer and the x axis default renderer (but not any other +axis) with a category renderer. + +Now, how would I assign options to those renderers? The renderer's +attributes may not be present in the pre-existing jqPlot object, they +may be specific to the renderer. This is done through the +"rendererOptions" option on the appropriate object. So, if I wanted my +bars to be 25 pixels wide, I would do: + + +> optionsObj = { +> seriesDefaults:{ +> renderer:$.jqplot.BarRenderer}, +> rendererOptions:{ +> barWidth:25 +> }, +> axes:{xaxis:{renderer:$.jqplot.CategoryAxisRenderer}} +> } + +Again, this is using the "seriesDefaults" option, which will apply +options to all series in the plot. You could do the same on any +particular series in the plot through the "series" options array. + +Plugins are free to add their own options. For example, the +highlighter plugin has it's own set of options that are unique to it. +As a result, it responds to options placed in the "highlighter" +attribute of your options object. So, if I wanted to change the +highlighter tooltip to fade in and out slowly and be positioned +directly above the point I'm highlighting: + +> optionsObj = { +> highlighter:{tooltipFadeSpeed:'slow', tooltipLocation:'n'} +> } + +Other plugins, like dragable and trendlines, add their options in with +the series. This is because both of those plugins can have different +options for different series in the plot. So, if you wanted to specify the +color of the dragable and constrain it to drag only on the x axis as well +as specify the color of the trend line you could do: + +> series:[{ +> dragable: { +> color: '#ff3366', +> constrainTo: 'x' +> }, +> trendline: { +> color: '#cccccc' +> } +> }] + +This would apply those options to the first series only. If you had 2 series +and wanted to turn off dragging and trend lines on the second series, you could do: + +> series:[{ +> dragable: { +> color: '#ff3366', +> constrainTo: 'x' +> }, +> trendline: { +> color: '#cccccc' +> } +> }, { +> isDragable: false, +> trendline:{ +> show: false +> } +> }] + +Note, series dragability is turned off with the "isDragable" option directly on +the series itself, not with a suboption of "dragable". This may be improved +in the future. + +I hope this is helpful. +A few key points to remember: + +- When you see "this" in the api docs, you generally replace it with +the name of the object (in lowercase) you are looking at in your +options object. +- seriesDefaults and axesDefaults are convenient shortcuts. +- to assign options to a renderer, generally use the "rendererOptions" +- plugins may add their own options attribute, like "highlighter" or +"cursor". + +** Note: you can set attributes after the plot is created (like +plot.grid.shadow = false), but you'll have to issue the appropriate +calls to possibly reinitialize and redraw the plot. jqPlot can +definitely handle this to change the plot after creation (this is how +the dragable plugin updates the plot data and the trend line plugin +recomputes itself when data changes). This hasn't been documented +yet, however. ADDED Site/Site_W/jpqplot/plugins/jqplot.BezierCurveRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.BezierCurveRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.BezierCurveRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.BezierCurveRenderer.js @@ -0,0 +1,300 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + // Class: $.jqplot.BezierCurveRenderer.js + // Renderer which draws lines as stacked bezier curves. + // Data for the line will not be specified as an array of + // [x, y] data point values, but as a an array of [start piont, bezier curve] + // So, the line is specified as: [[xstart, ystart], [cp1x, cp1y, cp2x, cp2y, xend, yend]]. + $.jqplot.BezierCurveRenderer = function(){ + $.jqplot.LineRenderer.call(this); + }; + + $.jqplot.BezierCurveRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.BezierCurveRenderer.prototype.constructor = $.jqplot.BezierCurveRenderer; + + + // Method: setGridData + // converts the user data values to grid coordinates and stores them + // in the gridData array. + // Called with scope of a series. + $.jqplot.BezierCurveRenderer.prototype.setGridData = function(plot) { + // recalculate the grid data + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + // this._plotData should be same as this.data + var data = this.data; + this.gridData = []; + this._prevGridData = []; + // if seriesIndex = 0, fill to x axis. + // if seriesIndex > 0, fill to previous series data. + var idx = this.index; + if (data.length == 2) { + if (idx == 0) { + this.gridData = [ + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, data[0][1])], + [xp.call(this._xaxis, data[1][0]), yp.call(this._yaxis, data[1][1]), + xp.call(this._xaxis, data[1][2]), yp.call(this._yaxis, data[1][3]), + xp.call(this._xaxis, data[1][4]), yp.call(this._yaxis, data[1][5])], + [xp.call(this._xaxis, data[1][4]), yp.call(this._yaxis, this._yaxis.min)], + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, this._yaxis.min)] + ]; + } + else { + var psd = plot.series[idx-1].data; + this.gridData = [ + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, data[0][1])], + [xp.call(this._xaxis, data[1][0]), yp.call(this._yaxis, data[1][1]), + xp.call(this._xaxis, data[1][2]), yp.call(this._yaxis, data[1][3]), + xp.call(this._xaxis, data[1][4]), yp.call(this._yaxis, data[1][5])], + [xp.call(this._xaxis, psd[1][4]), yp.call(this._yaxis, psd[1][5])], + [xp.call(this._xaxis, psd[1][2]), yp.call(this._yaxis, psd[1][3]), + xp.call(this._xaxis, psd[1][0]), yp.call(this._yaxis, psd[1][1]), + xp.call(this._xaxis, psd[0][0]), yp.call(this._yaxis, psd[0][1])] + ]; + } + } + else { + if (idx == 0) { + this.gridData = [ + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, data[0][1])], + [xp.call(this._xaxis, data[1][0]), yp.call(this._yaxis, data[1][1]), + xp.call(this._xaxis, data[2][0]), yp.call(this._yaxis, data[2][1]), + xp.call(this._xaxis, data[3][0]), yp.call(this._yaxis, data[3][1])], + [xp.call(this._xaxis, data[3][1]), yp.call(this._yaxis, this._yaxis.min)], + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, this._yaxis.min)] + ]; + } + else { + var psd = plot.series[idx-1].data; + this.gridData = [ + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, data[0][1])], + [xp.call(this._xaxis, data[1][0]), yp.call(this._yaxis, data[1][1]), + xp.call(this._xaxis, data[2][0]), yp.call(this._yaxis, data[2][1]), + xp.call(this._xaxis, data[3][0]), yp.call(this._yaxis, data[3][1])], + [xp.call(this._xaxis, psd[3][0]), yp.call(this._yaxis, psd[3][1])], + [xp.call(this._xaxis, psd[2][0]), yp.call(this._yaxis, psd[2][1]), + xp.call(this._xaxis, psd[1][0]), yp.call(this._yaxis, psd[1][1]), + xp.call(this._xaxis, psd[0][0]), yp.call(this._yaxis, psd[0][1])] + ]; + } + } + }; + + // Method: makeGridData + // converts any arbitrary data values to grid coordinates and + // returns them. This method exists so that plugins can use a series' + // linerenderer to generate grid data points without overwriting the + // grid data associated with that series. + // Called with scope of a series. + $.jqplot.BezierCurveRenderer.prototype.makeGridData = function(data, plot) { + // recalculate the grid data + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var gd = []; + var pgd = []; + // if seriesIndex = 0, fill to x axis. + // if seriesIndex > 0, fill to previous series data. + var idx = this.index; + if (data.length == 2) { + if (idx == 0) { + gd = [ + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, data[0][1])], + [xp.call(this._xaxis, data[1][0]), yp.call(this._yaxis, data[1][1]), + xp.call(this._xaxis, data[1][2]), yp.call(this._yaxis, data[1][3]), + xp.call(this._xaxis, data[1][4]), yp.call(this._yaxis, data[1][5])], + [xp.call(this._xaxis, data[1][4]), yp.call(this._yaxis, this._yaxis.min)], + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, this._yaxis.min)] + ]; + } + else { + var psd = plot.series[idx-1].data; + gd = [ + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, data[0][1])], + [xp.call(this._xaxis, data[1][0]), yp.call(this._yaxis, data[1][1]), + xp.call(this._xaxis, data[1][2]), yp.call(this._yaxis, data[1][3]), + xp.call(this._xaxis, data[1][4]), yp.call(this._yaxis, data[1][5])], + [xp.call(this._xaxis, psd[1][4]), yp.call(this._yaxis, psd[1][5])], + [xp.call(this._xaxis, psd[1][2]), yp.call(this._yaxis, psd[1][3]), + xp.call(this._xaxis, psd[1][0]), yp.call(this._yaxis, psd[1][1]), + xp.call(this._xaxis, psd[0][0]), yp.call(this._yaxis, psd[0][1])] + ]; + } + } + else { + if (idx == 0) { + gd = [ + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, data[0][1])], + [xp.call(this._xaxis, data[1][0]), yp.call(this._yaxis, data[1][1]), + xp.call(this._xaxis, data[2][0]), yp.call(this._yaxis, data[2][1]), + xp.call(this._xaxis, data[3][0]), yp.call(this._yaxis, data[3][1])], + [xp.call(this._xaxis, data[3][1]), yp.call(this._yaxis, this._yaxis.min)], + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, this._yaxis.min)] + ]; + } + else { + var psd = plot.series[idx-1].data; + gd = [ + [xp.call(this._xaxis, data[0][0]), yp.call(this._yaxis, data[0][1])], + [xp.call(this._xaxis, data[1][0]), yp.call(this._yaxis, data[1][1]), + xp.call(this._xaxis, data[2][0]), yp.call(this._yaxis, data[2][1]), + xp.call(this._xaxis, data[3][0]), yp.call(this._yaxis, data[3][1])], + [xp.call(this._xaxis, psd[3][0]), yp.call(this._yaxis, psd[3][1])], + [xp.call(this._xaxis, psd[2][0]), yp.call(this._yaxis, psd[2][1]), + xp.call(this._xaxis, psd[1][0]), yp.call(this._yaxis, psd[1][1]), + xp.call(this._xaxis, psd[0][0]), yp.call(this._yaxis, psd[0][1])] + ]; + } + } + return gd; + }; + + + // called within scope of series. + $.jqplot.BezierCurveRenderer.prototype.draw = function(ctx, gd, options) { + var i; + ctx.save(); + if (gd.length) { + if (this.showLine) { + ctx.save(); + var opts = (options != null) ? options : {}; + ctx.fillStyle = opts.fillStyle || this.color; + ctx.beginPath(); + ctx.moveTo(gd[0][0], gd[0][1]); + ctx.bezierCurveTo(gd[1][0], gd[1][1], gd[1][2], gd[1][3], gd[1][4], gd[1][5]); + ctx.lineTo(gd[2][0], gd[2][1]); + if (gd[3].length == 2) { + ctx.lineTo(gd[3][0], gd[3][1]); + } + else { + ctx.bezierCurveTo(gd[3][0], gd[3][1], gd[3][2], gd[3][3], gd[3][4], gd[3][5]); + } + ctx.closePath(); + ctx.fill(); + ctx.restore(); + } + } + + ctx.restore(); + }; + + $.jqplot.BezierCurveRenderer.prototype.drawShadow = function(ctx, gd, options) { + // This is a no-op, shadows drawn with lines. + }; + + $.jqplot.BezierAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + }; + + $.jqplot.BezierAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.BezierAxisRenderer.prototype.constructor = $.jqplot.BezierAxisRenderer; + + + // Axes on a plot with Bezier Curves + $.jqplot.BezierAxisRenderer.prototype.init = function(options){ + $.extend(true, this, options); + var db = this._dataBounds; + // Go through all the series attached to this axis and find + // the min/max bounds for this axis. + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + var d = s.data; + if (d.length == 4) { + for (var j=0; j<d.length; j++) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + if (d[j][0] < db.min || db.min == null) { + db.min = d[j][0]; + } + if (d[j][0] > db.max || db.max == null) { + db.max = d[j][0]; + } + } + else { + if (d[j][1] < db.min || db.min == null) { + db.min = d[j][1]; + } + if (d[j][1] > db.max || db.max == null) { + db.max = d[j][1]; + } + } + } + } + else { + if (this.name == 'xaxis' || this.name == 'x2axis') { + if (d[0][0] < db.min || db.min == null) { + db.min = d[0][0]; + } + if (d[0][0] > db.max || db.max == null) { + db.max = d[0][0]; + } + for (var j=0; j<5; j+=2) { + if (d[1][j] < db.min || db.min == null) { + db.min = d[1][j]; + } + if (d[1][j] > db.max || db.max == null) { + db.max = d[1][j]; + } + } + } + else { + if (d[0][1] < db.min || db.min == null) { + db.min = d[0][1]; + } + if (d[0][1] > db.max || db.max == null) { + db.max = d[0][1]; + } + for (var j=1; j<6; j+=2) { + if (d[1][j] < db.min || db.min == null) { + db.min = d[1][j]; + } + if (d[1][j] > db.max || db.max == null) { + db.max = d[1][j]; + } + } + } + } + } + }; + + // setup default renderers for axes and legend so user doesn't have to + // called with scope of plot + function preInit(target, data, options) { + options = options || {}; + options.axesDefaults = $.extend(true, {pad:0}, options.axesDefaults); + options.legend = $.extend(true, {placement:'outside'}, options.legend); + // only set these if there is a pie series + var setopts = false; + if (options.seriesDefaults.renderer == $.jqplot.BezierCurveRenderer) { + setopts = true; + } + else if (options.series) { + for (var i=0; i < options.series.length; i++) { + if (options.series[i].renderer == $.jqplot.BezierCurveRenderer) { + setopts = true; + } + } + } + + if (setopts) { + options.axesDefaults.renderer = $.jqplot.BezierAxisRenderer; + } + } + + $.jqplot.preInitHooks.push(preInit); + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.BezierCurveRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.BezierCurveRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.BezierCurveRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.BezierCurveRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(b){b.jqplot.BezierCurveRenderer=function(){b.jqplot.LineRenderer.call(this)};b.jqplot.BezierCurveRenderer.prototype=new b.jqplot.LineRenderer();b.jqplot.BezierCurveRenderer.prototype.constructor=b.jqplot.BezierCurveRenderer;b.jqplot.BezierCurveRenderer.prototype.setGridData=function(h){var e=this._xaxis.series_u2p;var g=this._yaxis.series_u2p;var f=this.data;this.gridData=[];this._prevGridData=[];var d=this.index;if(f.length==2){if(d==0){this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[1][2]),g.call(this._yaxis,f[1][3]),e.call(this._xaxis,f[1][4]),g.call(this._yaxis,f[1][5])],[e.call(this._xaxis,f[1][4]),g.call(this._yaxis,this._yaxis.min)],[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,this._yaxis.min)]]}else{var c=h.series[d-1].data;this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[1][2]),g.call(this._yaxis,f[1][3]),e.call(this._xaxis,f[1][4]),g.call(this._yaxis,f[1][5])],[e.call(this._xaxis,c[1][4]),g.call(this._yaxis,c[1][5])],[e.call(this._xaxis,c[1][2]),g.call(this._yaxis,c[1][3]),e.call(this._xaxis,c[1][0]),g.call(this._yaxis,c[1][1]),e.call(this._xaxis,c[0][0]),g.call(this._yaxis,c[0][1])]]}}else{if(d==0){this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[2][0]),g.call(this._yaxis,f[2][1]),e.call(this._xaxis,f[3][0]),g.call(this._yaxis,f[3][1])],[e.call(this._xaxis,f[3][1]),g.call(this._yaxis,this._yaxis.min)],[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,this._yaxis.min)]]}else{var c=h.series[d-1].data;this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[2][0]),g.call(this._yaxis,f[2][1]),e.call(this._xaxis,f[3][0]),g.call(this._yaxis,f[3][1])],[e.call(this._xaxis,c[3][0]),g.call(this._yaxis,c[3][1])],[e.call(this._xaxis,c[2][0]),g.call(this._yaxis,c[2][1]),e.call(this._xaxis,c[1][0]),g.call(this._yaxis,c[1][1]),e.call(this._xaxis,c[0][0]),g.call(this._yaxis,c[0][1])]]}}};b.jqplot.BezierCurveRenderer.prototype.makeGridData=function(g,i){var f=this._xaxis.series_u2p;var h=this._yaxis.series_u2p;var e=[];var j=[];var d=this.index;if(g.length==2){if(d==0){e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[1][2]),h.call(this._yaxis,g[1][3]),f.call(this._xaxis,g[1][4]),h.call(this._yaxis,g[1][5])],[f.call(this._xaxis,g[1][4]),h.call(this._yaxis,this._yaxis.min)],[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,this._yaxis.min)]]}else{var c=i.series[d-1].data;e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[1][2]),h.call(this._yaxis,g[1][3]),f.call(this._xaxis,g[1][4]),h.call(this._yaxis,g[1][5])],[f.call(this._xaxis,c[1][4]),h.call(this._yaxis,c[1][5])],[f.call(this._xaxis,c[1][2]),h.call(this._yaxis,c[1][3]),f.call(this._xaxis,c[1][0]),h.call(this._yaxis,c[1][1]),f.call(this._xaxis,c[0][0]),h.call(this._yaxis,c[0][1])]]}}else{if(d==0){e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[2][0]),h.call(this._yaxis,g[2][1]),f.call(this._xaxis,g[3][0]),h.call(this._yaxis,g[3][1])],[f.call(this._xaxis,g[3][1]),h.call(this._yaxis,this._yaxis.min)],[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,this._yaxis.min)]]}else{var c=i.series[d-1].data;e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[2][0]),h.call(this._yaxis,g[2][1]),f.call(this._xaxis,g[3][0]),h.call(this._yaxis,g[3][1])],[f.call(this._xaxis,c[3][0]),h.call(this._yaxis,c[3][1])],[f.call(this._xaxis,c[2][0]),h.call(this._yaxis,c[2][1]),f.call(this._xaxis,c[1][0]),h.call(this._yaxis,c[1][1]),f.call(this._xaxis,c[0][0]),h.call(this._yaxis,c[0][1])]]}}return e};b.jqplot.BezierCurveRenderer.prototype.draw=function(c,g,d){var e;c.save();if(g.length){if(this.showLine){c.save();var f=(d!=null)?d:{};c.fillStyle=f.fillStyle||this.color;c.beginPath();c.moveTo(g[0][0],g[0][1]);c.bezierCurveTo(g[1][0],g[1][1],g[1][2],g[1][3],g[1][4],g[1][5]);c.lineTo(g[2][0],g[2][1]);if(g[3].length==2){c.lineTo(g[3][0],g[3][1])}else{c.bezierCurveTo(g[3][0],g[3][1],g[3][2],g[3][3],g[3][4],g[3][5])}c.closePath();c.fill();c.restore()}}c.restore()};b.jqplot.BezierCurveRenderer.prototype.drawShadow=function(c,e,d){};b.jqplot.BezierAxisRenderer=function(){b.jqplot.LinearAxisRenderer.call(this)};b.jqplot.BezierAxisRenderer.prototype=new b.jqplot.LinearAxisRenderer();b.jqplot.BezierAxisRenderer.prototype.constructor=b.jqplot.BezierAxisRenderer;b.jqplot.BezierAxisRenderer.prototype.init=function(f){b.extend(true,this,f);var c=this._dataBounds;for(var g=0;g<this._series.length;g++){var h=this._series[g];var k=h.data;if(k.length==4){for(var e=0;e<k.length;e++){if(this.name=="xaxis"||this.name=="x2axis"){if(k[e][0]<c.min||c.min==null){c.min=k[e][0]}if(k[e][0]>c.max||c.max==null){c.max=k[e][0]}}else{if(k[e][1]<c.min||c.min==null){c.min=k[e][1]}if(k[e][1]>c.max||c.max==null){c.max=k[e][1]}}}}else{if(this.name=="xaxis"||this.name=="x2axis"){if(k[0][0]<c.min||c.min==null){c.min=k[0][0]}if(k[0][0]>c.max||c.max==null){c.max=k[0][0]}for(var e=0;e<5;e+=2){if(k[1][e]<c.min||c.min==null){c.min=k[1][e]}if(k[1][e]>c.max||c.max==null){c.max=k[1][e]}}}else{if(k[0][1]<c.min||c.min==null){c.min=k[0][1]}if(k[0][1]>c.max||c.max==null){c.max=k[0][1]}for(var e=1;e<6;e+=2){if(k[1][e]<c.min||c.min==null){c.min=k[1][e]}if(k[1][e]>c.max||c.max==null){c.max=k[1][e]}}}}}};function a(g,f,d){d=d||{};d.axesDefaults=b.extend(true,{pad:0},d.axesDefaults);d.legend=b.extend(true,{placement:"outside"},d.legend);var c=false;if(d.seriesDefaults.renderer==b.jqplot.BezierCurveRenderer){c=true}else{if(d.series){for(var e=0;e<d.series.length;e++){if(d.series[e].renderer==b.jqplot.BezierCurveRenderer){c=true}}}}if(c){d.axesDefaults.renderer=b.jqplot.BezierAxisRenderer}}b.jqplot.preInitHooks.push(a)})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.barRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.barRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.barRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.barRenderer.js @@ -0,0 +1,629 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + + // Class: $.jqplot.BarRenderer + // A plugin renderer for jqPlot to draw a bar plot. + // Draws series as a line. + + $.jqplot.BarRenderer = function(){ + $.jqplot.LineRenderer.call(this); + }; + + $.jqplot.BarRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.BarRenderer.prototype.constructor = $.jqplot.BarRenderer; + + // called with scope of series. + $.jqplot.BarRenderer.prototype.init = function(options, plot) { + // Group: Properties + // + // prop: barPadding + // Number of pixels between adjacent bars at the same axis value. + this.barPadding = 8; + // prop: barMargin + // Number of pixels between groups of bars at adjacent axis values. + this.barMargin = 10; + // prop: barDirection + // 'vertical' = up and down bars, 'horizontal' = side to side bars + this.barDirection = 'vertical'; + // prop: barWidth + // Width of the bar in pixels (auto by devaul). null = calculated automatically. + this.barWidth = null; + // prop: shadowOffset + // offset of the shadow from the slice and offset of + // each succesive stroke of the shadow from the last. + this.shadowOffset = 2; + // prop: shadowDepth + // number of strokes to apply to the shadow, + // each stroke offset shadowOffset from the last. + this.shadowDepth = 5; + // prop: shadowAlpha + // transparency of the shadow (0 = transparent, 1 = opaque) + this.shadowAlpha = 0.08; + // prop: waterfall + // true to enable waterfall plot. + this.waterfall = false; + // prop: groups + // group bars into this many groups + this.groups = 1; + // prop: varyBarColor + // true to color each bar of a series separately rather than + // have every bar of a given series the same color. + // If used for non-stacked multiple series bar plots, user should + // specify a separate 'seriesColors' array for each series. + // Otherwise, each series will set their bars to the same color array. + // This option has no Effect for stacked bar charts and is disabled. + this.varyBarColor = false; + // prop: highlightMouseOver + // True to highlight slice when moused over. + // This must be false to enable highlightMouseDown to highlight when clicking on a slice. + this.highlightMouseOver = true; + // prop: highlightMouseDown + // True to highlight when a mouse button is pressed over a slice. + // This will be disabled if highlightMouseOver is true. + this.highlightMouseDown = false; + // prop: highlightColors + // an array of colors to use when highlighting a bar. + this.highlightColors = []; + + // if user has passed in highlightMouseDown option and not set highlightMouseOver, disable highlightMouseOver + if (options.highlightMouseDown && options.highlightMouseOver == null) { + options.highlightMouseOver = false; + } + + $.extend(true, this, options); + // fill is still needed to properly draw the legend. + // bars have to be filled. + this.fill = true; + + if (this.waterfall) { + this.fillToZero = false; + this.disableStack = true; + } + + if (this.barDirection == 'vertical' ) { + this._primaryAxis = '_xaxis'; + this._stackAxis = 'y'; + this.fillAxis = 'y'; + } + else { + this._primaryAxis = '_yaxis'; + this._stackAxis = 'x'; + this.fillAxis = 'x'; + } + // index of the currenty highlighted point, if any + this._highlightedPoint = null; + // total number of values for all bar series, total number of bar series, and position of this series + this._plotSeriesInfo = null; + // Array of actual data colors used for each data point. + this._dataColors = []; + this._barPoints = []; + + // set the shape renderer options + var opts = {lineJoin:'miter', lineCap:'round', fill:true, isarc:false, strokeStyle:this.color, fillStyle:this.color, closePath:this.fill}; + this.renderer.shapeRenderer.init(opts); + // set the shadow renderer options + var sopts = {lineJoin:'miter', lineCap:'round', fill:true, isarc:false, angle:this.shadowAngle, offset:this.shadowOffset, alpha:this.shadowAlpha, depth:this.shadowDepth, closePath:this.fill}; + this.renderer.shadowRenderer.init(sopts); + + plot.postInitHooks.addOnce(postInit); + plot.postDrawHooks.addOnce(postPlotDraw); + plot.eventListenerHooks.addOnce('jqplotMouseMove', handleMove); + plot.eventListenerHooks.addOnce('jqplotMouseDown', handleMouseDown); + plot.eventListenerHooks.addOnce('jqplotMouseUp', handleMouseUp); + plot.eventListenerHooks.addOnce('jqplotClick', handleClick); + plot.eventListenerHooks.addOnce('jqplotRightClick', handleRightClick); + }; + + // called with scope of series + function barPreInit(target, data, seriesDefaults, options) { + if (this.rendererOptions.barDirection == 'horizontal') { + this._stackAxis = 'x'; + this._primaryAxis = '_yaxis'; + } + if (this.rendererOptions.waterfall == true) { + this._data = $.extend(true, [], this.data); + var sum = 0; + var pos = (!this.rendererOptions.barDirection || this.rendererOptions.barDirection == 'vertical') ? 1 : 0; + for(var i=0; i<this.data.length; i++) { + sum += this.data[i][pos]; + if (i>0) { + this.data[i][pos] += this.data[i-1][pos]; + } + } + this.data[this.data.length] = (pos == 1) ? [this.data.length+1, sum] : [sum, this.data.length+1]; + this._data[this._data.length] = (pos == 1) ? [this._data.length+1, sum] : [sum, this._data.length+1]; + } + if (this.rendererOptions.groups > 1) { + this.breakOnNull = true; + var l = this.data.length; + var skip = parseInt(l/this.rendererOptions.groups, 10); + var count = 0; + for (var i=skip; i<l; i+=skip) { + this.data.splice(i+count, 0, [null, null]); + count++; + } + for (i=0; i<this.data.length; i++) { + if (this._primaryAxis == '_xaxis') { + this.data[i][0] = i+1; + } + else { + this.data[i][1] = i+1; + } + } + } + } + + $.jqplot.preSeriesInitHooks.push(barPreInit); + + // needs to be called with scope of series, not renderer. + $.jqplot.BarRenderer.prototype.calcSeriesNumbers = function() { + var nvals = 0; + var nseries = 0; + var paxis = this[this._primaryAxis]; + var s, series, pos; + // loop through all series on this axis + for (var i=0; i < paxis._series.length; i++) { + series = paxis._series[i]; + if (series === this) { + pos = i; + } + // is the series rendered as a bar? + if (series.renderer.constructor == $.jqplot.BarRenderer) { + // gridData may not be computed yet, use data length insted + nvals += series.data.length; + nseries += 1; + } + } + // return total number of values for all bar series, total number of bar series, and position of this series + return [nvals, nseries, pos]; + }; + + $.jqplot.BarRenderer.prototype.setBarWidth = function() { + // need to know how many data values we have on the approprate axis and figure it out. + var i; + var nvals = 0; + var nseries = 0; + var paxis = this[this._primaryAxis]; + var s, series, pos; + var temp = this._plotSeriesInfo = this.renderer.calcSeriesNumbers.call(this); + nvals = temp[0]; + nseries = temp[1]; + var nticks = paxis.numberTicks; + var nbins = (nticks-1)/2; + // so, now we have total number of axis values. + if (paxis.name == 'xaxis' || paxis.name == 'x2axis') { + if (this._stack) { + this.barWidth = (paxis._offsets.max - paxis._offsets.min) / nvals * nseries - this.barMargin; + } + else { + this.barWidth = ((paxis._offsets.max - paxis._offsets.min)/nbins - this.barPadding * (nseries-1) - this.barMargin*2)/nseries; + // this.barWidth = (paxis._offsets.max - paxis._offsets.min) / nvals - this.barPadding - this.barMargin/nseries; + } + } + else { + if (this._stack) { + this.barWidth = (paxis._offsets.min - paxis._offsets.max) / nvals * nseries - this.barMargin; + } + else { + this.barWidth = ((paxis._offsets.min - paxis._offsets.max)/nbins - this.barPadding * (nseries-1) - this.barMargin*2)/nseries; + // this.barWidth = (paxis._offsets.min - paxis._offsets.max) / nvals - this.barPadding - this.barMargin/nseries; + } + } + return [nvals, nseries]; + }; + + function computeHighlightColors (colors) { + var ret = []; + for (var i=0; i<colors.length; i++){ + var rgba = $.jqplot.getColorComponents(colors[i]); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + newrgb[j] = (sum > 570) ? newrgb[j] * 0.8 : newrgb[j] + 0.3 * (255 - newrgb[j]); + newrgb[j] = parseInt(newrgb[j], 10); + } + ret.push('rgb('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+')'); + } + return ret; + } + + $.jqplot.BarRenderer.prototype.draw = function(ctx, gridData, options) { + var i; + var opts = (options != undefined) ? options : {}; + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + var xaxis = this.xaxis; + var yaxis = this.yaxis; + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var pointx, pointy, nvals, nseries, pos; + // clear out data colors. + this._dataColors = []; + this._barPoints = []; + + if (this.barWidth == null) { + this.renderer.setBarWidth.call(this); + } + + var temp = this._plotSeriesInfo = this.renderer.calcSeriesNumbers.call(this); + nvals = temp[0]; + nseries = temp[1]; + pos = temp[2]; + + if (this._stack) { + this._barNudge = 0; + } + else { + this._barNudge = (-Math.abs(nseries/2 - 0.5) + pos) * (this.barWidth + this.barPadding); + } + if (showLine) { + var negativeColors = new $.jqplot.ColorGenerator(this.negativeSeriesColors); + var positiveColors = new $.jqplot.ColorGenerator(this.seriesColors); + var negativeColor = negativeColors.get(this.index); + if (! this.useNegativeColors) { + negativeColor = opts.fillStyle; + } + var positiveColor = opts.fillStyle; + + if (this.barDirection == 'vertical') { + for (var i=0; i<gridData.length; i++) { + if (this.data[i][1] == null) { + continue; + } + points = []; + var base = gridData[i][0] + this._barNudge; + var ystart; + + // stacked + if (this._stack && this._prevGridData.length) { + ystart = this._prevGridData[i][1]; + } + // not stacked and first series in stack + else { + if (this.fillToZero) { + ystart = this._yaxis.series_u2p(0); + } + else if (this.waterfall && i > 0 && i < this.gridData.length-1) { + ystart = this.gridData[i-1][1]; + } + else { + ystart = ctx.canvas.height; + } + } + if ((this.fillToZero && this._plotData[i][1] < 0) || (this.waterfall && this._data[i][1] < 0)) { + if (this.varyBarColor && !this._stack) { + if (this.useNegativeColors) { + opts.fillStyle = negativeColors.next(); + } + else { + opts.fillStyle = positiveColors.next(); + } + } + else { + opts.fillStyle = negativeColor; + } + } + else { + if (this.varyBarColor && !this._stack) { + opts.fillStyle = positiveColors.next(); + } + else { + opts.fillStyle = positiveColor; + } + } + + points.push([base-this.barWidth/2, ystart]); + points.push([base-this.barWidth/2, gridData[i][1]]); + points.push([base+this.barWidth/2, gridData[i][1]]); + points.push([base+this.barWidth/2, ystart]); + this._barPoints.push(points); + // now draw the shadows if not stacked. + // for stacked plots, they are predrawn by drawShadow + if (shadow && !this._stack) { + var sopts = $.extend(true, {}, opts); + // need to get rid of fillStyle on shadow. + delete sopts.fillStyle; + this.renderer.shadowRenderer.draw(ctx, points, sopts); + } + var clr = opts.fillStyle || this.color; + this._dataColors.push(clr); + this.renderer.shapeRenderer.draw(ctx, points, opts); + } + } + + else if (this.barDirection == 'horizontal'){ + for (var i=0; i<gridData.length; i++) { + if (this.data[i][0] == null) { + continue; + } + points = []; + var base = gridData[i][1] - this._barNudge; + var xstart; + + if (this._stack && this._prevGridData.length) { + xstart = this._prevGridData[i][0]; + } + // not stacked and first series in stack + else { + if (this.fillToZero) { + xstart = this._xaxis.series_u2p(0); + } + else if (this.waterfall && i > 0 && i < this.gridData.length-1) { + xstart = this.gridData[i-1][1]; + } + else { + xstart = 0; + } + } + if ((this.fillToZero && this._plotData[i][1] < 0) || (this.waterfall && this._data[i][1] < 0)) { + if (this.varyBarColor && !this._stack) { + if (this.useNegativeColors) { + opts.fillStyle = negativeColors.next(); + } + else { + opts.fillStyle = positiveColors.next(); + } + } + } + else { + if (this.varyBarColor && !this._stack) { + opts.fillStyle = positiveColors.next(); + } + else { + opts.fillStyle = positiveColor; + } + } + + points.push([xstart, base+this.barWidth/2]); + points.push([xstart, base-this.barWidth/2]); + points.push([gridData[i][0], base-this.barWidth/2]); + points.push([gridData[i][0], base+this.barWidth/2]); + this._barPoints.push(points); + // now draw the shadows if not stacked. + // for stacked plots, they are predrawn by drawShadow + if (shadow && !this._stack) { + var sopts = $.extend(true, {}, opts); + delete sopts.fillStyle; + this.renderer.shadowRenderer.draw(ctx, points, sopts); + } + var clr = opts.fillStyle || this.color; + this._dataColors.push(clr); + this.renderer.shapeRenderer.draw(ctx, points, opts); + } + } + } + + if (this.highlightColors.length == 0) { + this.highlightColors = computeHighlightColors(this._dataColors); + } + + else if (typeof(this.highlightColors) == 'string') { + var temp = this.highlightColors; + this.highlightColors = []; + for (var i=0; i<this._dataColors.length; i++) { + this.highlightColors.push(temp); + } + } + + }; + + + // for stacked plots, shadows will be pre drawn by drawShadow. + $.jqplot.BarRenderer.prototype.drawShadow = function(ctx, gridData, options) { + var i; + var opts = (options != undefined) ? options : {}; + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + var xaxis = this.xaxis; + var yaxis = this.yaxis; + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var pointx, pointy, nvals, nseries, pos; + + if (this._stack && this.shadow) { + if (this.barWidth == null) { + this.renderer.setBarWidth.call(this); + } + + var temp = this._plotSeriesInfo = this.renderer.calcSeriesNumbers.call(this); + nvals = temp[0]; + nseries = temp[1]; + pos = temp[2]; + + if (this._stack) { + this._barNudge = 0; + } + else { + this._barNudge = (-Math.abs(nseries/2 - 0.5) + pos) * (this.barWidth + this.barPadding); + } + if (showLine) { + + if (this.barDirection == 'vertical') { + for (var i=0; i<gridData.length; i++) { + if (this.data[i][1] == null) { + continue; + } + points = []; + var base = gridData[i][0] + this._barNudge; + var ystart; + + if (this._stack && this._prevGridData.length) { + ystart = this._prevGridData[i][1]; + } + else { + if (this.fillToZero) { + ystart = this._yaxis.series_u2p(0); + } + else { + ystart = ctx.canvas.height; + } + } + + points.push([base-this.barWidth/2, ystart]); + points.push([base-this.barWidth/2, gridData[i][1]]); + points.push([base+this.barWidth/2, gridData[i][1]]); + points.push([base+this.barWidth/2, ystart]); + this.renderer.shadowRenderer.draw(ctx, points, opts); + } + } + + else if (this.barDirection == 'horizontal'){ + for (var i=0; i<gridData.length; i++) { + if (this.data[i][0] == null) { + continue; + } + points = []; + var base = gridData[i][1] - this._barNudge; + var xstart; + + if (this._stack && this._prevGridData.length) { + xstart = this._prevGridData[i][0]; + } + else { + xstart = 0; + } + + points.push([xstart, base+this.barWidth/2]); + points.push([gridData[i][0], base+this.barWidth/2]); + points.push([gridData[i][0], base-this.barWidth/2]); + points.push([xstart, base-this.barWidth/2]); + this.renderer.shadowRenderer.draw(ctx, points, opts); + } + } + } + + } + }; + + function postInit(target, data, options) { + for (i=0; i<this.series.length; i++) { + if (this.series[i].renderer.constructor == $.jqplot.BarRenderer) { + // don't allow mouseover and mousedown at same time. + if (this.series[i].highlightMouseOver) { + this.series[i].highlightMouseDown = false; + } + } + } + this.target.bind('mouseout', {plot:this}, function (ev) { unhighlight(ev.data.plot); }); + } + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + function postPlotDraw() { + this.plugins.barRenderer = {highlightedSeriesIndex:null}; + this.plugins.barRenderer.highlightCanvas = new $.jqplot.GenericCanvas(); + + this.eventCanvas._elem.before(this.plugins.barRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-barRenderer-highlight-canvas', this._plotDimensions)); + var hctx = this.plugins.barRenderer.highlightCanvas.setContext(); + } + + function highlight (plot, sidx, pidx, points) { + var s = plot.series[sidx]; + var canvas = plot.plugins.barRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0,canvas._ctx.canvas.width, canvas._ctx.canvas.height); + s._highlightedPoint = pidx; + plot.plugins.barRenderer.highlightedSeriesIndex = sidx; + var opts = {fillStyle: s.highlightColors[pidx]}; + s.renderer.shapeRenderer.draw(canvas._ctx, points, opts); + } + + function unhighlight (plot) { + var canvas = plot.plugins.barRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0, canvas._ctx.canvas.width, canvas._ctx.canvas.height); + for (var i=0; i<plot.series.length; i++) { + plot.series[i]._highlightedPoint = null; + } + plot.plugins.barRenderer.highlightedSeriesIndex = null; + plot.target.trigger('jqplotDataUnhighlight'); + } + + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt1 = jQuery.Event('jqplotDataMouseOver'); + evt1.pageX = ev.pageX; + evt1.pageY = ev.pageY; + plot.target.trigger(evt1, ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.barRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, neighbor.seriesIndex, neighbor.pointIndex, neighbor.points); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseDown(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + if (plot.series[ins[0]].highlightMouseDown && !(ins[0] == plot.plugins.barRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, neighbor.seriesIndex, neighbor.pointIndex, neighbor.points); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseUp(ev, gridpos, datapos, neighbor, plot) { + var idx = plot.plugins.barRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + } + + function handleClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt = jQuery.Event('jqplotDataClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + function handleRightClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var idx = plot.plugins.barRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + var evt = jQuery.Event('jqplotDataRightClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.barRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.barRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.barRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.barRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(d){d.jqplot.BarRenderer=function(){d.jqplot.LineRenderer.call(this)};d.jqplot.BarRenderer.prototype=new d.jqplot.LineRenderer();d.jqplot.BarRenderer.prototype.constructor=d.jqplot.BarRenderer;d.jqplot.BarRenderer.prototype.init=function(o,q){this.barPadding=8;this.barMargin=10;this.barDirection="vertical";this.barWidth=null;this.shadowOffset=2;this.shadowDepth=5;this.shadowAlpha=0.08;this.waterfall=false;this.groups=1;this.varyBarColor=false;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];if(o.highlightMouseDown&&o.highlightMouseOver==null){o.highlightMouseOver=false}d.extend(true,this,o);this.fill=true;if(this.waterfall){this.fillToZero=false;this.disableStack=true}if(this.barDirection=="vertical"){this._primaryAxis="_xaxis";this._stackAxis="y";this.fillAxis="y"}else{this._primaryAxis="_yaxis";this._stackAxis="x";this.fillAxis="x"}this._highlightedPoint=null;this._plotSeriesInfo=null;this._dataColors=[];this._barPoints=[];var p={lineJoin:"miter",lineCap:"round",fill:true,isarc:false,strokeStyle:this.color,fillStyle:this.color,closePath:this.fill};this.renderer.shapeRenderer.init(p);var n={lineJoin:"miter",lineCap:"round",fill:true,isarc:false,angle:this.shadowAngle,offset:this.shadowOffset,alpha:this.shadowAlpha,depth:this.shadowDepth,closePath:this.fill};this.renderer.shadowRenderer.init(n);q.postInitHooks.addOnce(h);q.postDrawHooks.addOnce(j);q.eventListenerHooks.addOnce("jqplotMouseMove",b);q.eventListenerHooks.addOnce("jqplotMouseDown",a);q.eventListenerHooks.addOnce("jqplotMouseUp",l);q.eventListenerHooks.addOnce("jqplotClick",e);q.eventListenerHooks.addOnce("jqplotRightClick",m)};function g(t,p,o,w){if(this.rendererOptions.barDirection=="horizontal"){this._stackAxis="x";this._primaryAxis="_yaxis"}if(this.rendererOptions.waterfall==true){this._data=d.extend(true,[],this.data);var s=0;var u=(!this.rendererOptions.barDirection||this.rendererOptions.barDirection=="vertical")?1:0;for(var q=0;q<this.data.length;q++){s+=this.data[q][u];if(q>0){this.data[q][u]+=this.data[q-1][u]}}this.data[this.data.length]=(u==1)?[this.data.length+1,s]:[s,this.data.length+1];this._data[this._data.length]=(u==1)?[this._data.length+1,s]:[s,this._data.length+1]}if(this.rendererOptions.groups>1){this.breakOnNull=true;var n=this.data.length;var v=parseInt(n/this.rendererOptions.groups,10);var r=0;for(var q=v;q<n;q+=v){this.data.splice(q+r,0,[null,null]);r++}for(q=0;q<this.data.length;q++){if(this._primaryAxis=="_xaxis"){this.data[q][0]=q+1}else{this.data[q][1]=q+1}}}}d.jqplot.preSeriesInitHooks.push(g);d.jqplot.BarRenderer.prototype.calcSeriesNumbers=function(){var r=0;var t=0;var q=this[this._primaryAxis];var p,o,u;for(var n=0;n<q._series.length;n++){o=q._series[n];if(o===this){u=n}if(o.renderer.constructor==d.jqplot.BarRenderer){r+=o.data.length;t+=1}}return[r,t,u]};d.jqplot.BarRenderer.prototype.setBarWidth=function(){var q;var n=0;var o=0;var t=this[this._primaryAxis];var x,r,v;var w=this._plotSeriesInfo=this.renderer.calcSeriesNumbers.call(this);n=w[0];o=w[1];var u=t.numberTicks;var p=(u-1)/2;if(t.name=="xaxis"||t.name=="x2axis"){if(this._stack){this.barWidth=(t._offsets.max-t._offsets.min)/n*o-this.barMargin}else{this.barWidth=((t._offsets.max-t._offsets.min)/p-this.barPadding*(o-1)-this.barMargin*2)/o}}else{if(this._stack){this.barWidth=(t._offsets.min-t._offsets.max)/n*o-this.barMargin}else{this.barWidth=((t._offsets.min-t._offsets.max)/p-this.barPadding*(o-1)-this.barMargin*2)/o}}return[n,o]};function f(o){var q=[];for(var s=0;s<o.length;s++){var r=d.jqplot.getColorComponents(o[s]);var n=[r[0],r[1],r[2]];var t=n[0]+n[1]+n[2];for(var p=0;p<3;p++){n[p]=(t>570)?n[p]*0.8:n[p]+0.3*(255-n[p]);n[p]=parseInt(n[p],10)}q.push("rgb("+n[0]+","+n[1]+","+n[2]+")")}return q}d.jqplot.BarRenderer.prototype.draw=function(E,J,q){var G;var A=(q!=undefined)?q:{};var v=(A.shadow!=undefined)?A.shadow:this.shadow;var M=(A.showLine!=undefined)?A.showLine:this.showLine;var F=(A.fill!=undefined)?A.fill:this.fill;var p=this.xaxis;var H=this.yaxis;var y=this._xaxis.series_u2p;var I=this._yaxis.series_u2p;var D,C,x,w,s;this._dataColors=[];this._barPoints=[];if(this.barWidth==null){this.renderer.setBarWidth.call(this)}var L=this._plotSeriesInfo=this.renderer.calcSeriesNumbers.call(this);x=L[0];w=L[1];s=L[2];if(this._stack){this._barNudge=0}else{this._barNudge=(-Math.abs(w/2-0.5)+s)*(this.barWidth+this.barPadding)}if(M){var u=new d.jqplot.ColorGenerator(this.negativeSeriesColors);var B=new d.jqplot.ColorGenerator(this.seriesColors);var K=u.get(this.index);if(!this.useNegativeColors){K=A.fillStyle}var t=A.fillStyle;if(this.barDirection=="vertical"){for(var G=0;G<J.length;G++){if(this.data[G][1]==null){continue}points=[];var r=J[G][0]+this._barNudge;var o;if(this._stack&&this._prevGridData.length){o=this._prevGridData[G][1]}else{if(this.fillToZero){o=this._yaxis.series_u2p(0)}else{if(this.waterfall&&G>0&&G<this.gridData.length-1){o=this.gridData[G-1][1]}else{o=E.canvas.height}}}if((this.fillToZero&&this._plotData[G][1]<0)||(this.waterfall&&this._data[G][1]<0)){if(this.varyBarColor&&!this._stack){if(this.useNegativeColors){A.fillStyle=u.next()}else{A.fillStyle=B.next()}}else{A.fillStyle=K}}else{if(this.varyBarColor&&!this._stack){A.fillStyle=B.next()}else{A.fillStyle=t}}points.push([r-this.barWidth/2,o]);points.push([r-this.barWidth/2,J[G][1]]);points.push([r+this.barWidth/2,J[G][1]]);points.push([r+this.barWidth/2,o]);this._barPoints.push(points);if(v&&!this._stack){var z=d.extend(true,{},A);delete z.fillStyle;this.renderer.shadowRenderer.draw(E,points,z)}var n=A.fillStyle||this.color;this._dataColors.push(n);this.renderer.shapeRenderer.draw(E,points,A)}}else{if(this.barDirection=="horizontal"){for(var G=0;G<J.length;G++){if(this.data[G][0]==null){continue}points=[];var r=J[G][1]-this._barNudge;var N;if(this._stack&&this._prevGridData.length){N=this._prevGridData[G][0]}else{if(this.fillToZero){N=this._xaxis.series_u2p(0)}else{if(this.waterfall&&G>0&&G<this.gridData.length-1){N=this.gridData[G-1][1]}else{N=0}}}if((this.fillToZero&&this._plotData[G][1]<0)||(this.waterfall&&this._data[G][1]<0)){if(this.varyBarColor&&!this._stack){if(this.useNegativeColors){A.fillStyle=u.next()}else{A.fillStyle=B.next()}}}else{if(this.varyBarColor&&!this._stack){A.fillStyle=B.next()}else{A.fillStyle=t}}points.push([N,r+this.barWidth/2]);points.push([N,r-this.barWidth/2]);points.push([J[G][0],r-this.barWidth/2]);points.push([J[G][0],r+this.barWidth/2]);this._barPoints.push(points);if(v&&!this._stack){var z=d.extend(true,{},A);delete z.fillStyle;this.renderer.shadowRenderer.draw(E,points,z)}var n=A.fillStyle||this.color;this._dataColors.push(n);this.renderer.shapeRenderer.draw(E,points,A)}}}}if(this.highlightColors.length==0){this.highlightColors=f(this._dataColors)}else{if(typeof(this.highlightColors)=="string"){var L=this.highlightColors;this.highlightColors=[];for(var G=0;G<this._dataColors.length;G++){this.highlightColors.push(L)}}}};d.jqplot.BarRenderer.prototype.drawShadow=function(z,E,p){var B;var w=(p!=undefined)?p:{};var s=(w.shadow!=undefined)?w.shadow:this.shadow;var G=(w.showLine!=undefined)?w.showLine:this.showLine;var A=(w.fill!=undefined)?w.fill:this.fill;var o=this.xaxis;var C=this.yaxis;var v=this._xaxis.series_u2p;var D=this._yaxis.series_u2p;var y,x,u,t,r;if(this._stack&&this.shadow){if(this.barWidth==null){this.renderer.setBarWidth.call(this)}var F=this._plotSeriesInfo=this.renderer.calcSeriesNumbers.call(this);u=F[0];t=F[1];r=F[2];if(this._stack){this._barNudge=0}else{this._barNudge=(-Math.abs(t/2-0.5)+r)*(this.barWidth+this.barPadding)}if(G){if(this.barDirection=="vertical"){for(var B=0;B<E.length;B++){if(this.data[B][1]==null){continue}points=[];var q=E[B][0]+this._barNudge;var n;if(this._stack&&this._prevGridData.length){n=this._prevGridData[B][1]}else{if(this.fillToZero){n=this._yaxis.series_u2p(0)}else{n=z.canvas.height}}points.push([q-this.barWidth/2,n]);points.push([q-this.barWidth/2,E[B][1]]);points.push([q+this.barWidth/2,E[B][1]]);points.push([q+this.barWidth/2,n]);this.renderer.shadowRenderer.draw(z,points,w)}}else{if(this.barDirection=="horizontal"){for(var B=0;B<E.length;B++){if(this.data[B][0]==null){continue}points=[];var q=E[B][1]-this._barNudge;var H;if(this._stack&&this._prevGridData.length){H=this._prevGridData[B][0]}else{H=0}points.push([H,q+this.barWidth/2]);points.push([E[B][0],q+this.barWidth/2]);points.push([E[B][0],q-this.barWidth/2]);points.push([H,q-this.barWidth/2]);this.renderer.shadowRenderer.draw(z,points,w)}}}}}};function h(p,o,n){for(i=0;i<this.series.length;i++){if(this.series[i].renderer.constructor==d.jqplot.BarRenderer){if(this.series[i].highlightMouseOver){this.series[i].highlightMouseDown=false}}}this.target.bind("mouseout",{plot:this},function(q){k(q.data.plot)})}function j(){this.plugins.barRenderer={highlightedSeriesIndex:null};this.plugins.barRenderer.highlightCanvas=new d.jqplot.GenericCanvas();this.eventCanvas._elem.before(this.plugins.barRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-barRenderer-highlight-canvas",this._plotDimensions));var n=this.plugins.barRenderer.highlightCanvas.setContext()}function c(u,t,q,p){var o=u.series[t];var n=u.plugins.barRenderer.highlightCanvas;n._ctx.clearRect(0,0,n._ctx.canvas.width,n._ctx.canvas.height);o._highlightedPoint=q;u.plugins.barRenderer.highlightedSeriesIndex=t;var r={fillStyle:o.highlightColors[q]};o.renderer.shapeRenderer.draw(n._ctx,p,r)}function k(p){var n=p.plugins.barRenderer.highlightCanvas;n._ctx.clearRect(0,0,n._ctx.canvas.width,n._ctx.canvas.height);for(var o=0;o<p.series.length;o++){p.series[o]._highlightedPoint=null}p.plugins.barRenderer.highlightedSeriesIndex=null;p.target.trigger("jqplotDataUnhighlight")}function b(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];var o=jQuery.Event("jqplotDataMouseOver");o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p);if(s.series[p[0]].highlightMouseOver&&!(p[0]==s.plugins.barRenderer.highlightedSeriesIndex&&p[1]==s.series[p[0]]._highlightedPoint)){var n=jQuery.Event("jqplotDataHighlight");n.pageX=r.pageX;n.pageY=r.pageY;s.target.trigger(n,p);c(s,t.seriesIndex,t.pointIndex,t.points)}}else{if(t==null){k(s)}}}function a(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];if(r.series[o[0]].highlightMouseDown&&!(o[0]==r.plugins.barRenderer.highlightedSeriesIndex&&o[1]==r.series[o[0]]._highlightedPoint)){var n=jQuery.Event("jqplotDataHighlight");n.pageX=q.pageX;n.pageY=q.pageY;r.target.trigger(n,o);c(r,s.seriesIndex,s.pointIndex,s.points)}}else{if(s==null){k(r)}}}function l(p,o,s,r,q){var n=q.plugins.barRenderer.highlightedSeriesIndex;if(n!=null&&q.series[n].highlightMouseDown){k(q)}}function e(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];var n=jQuery.Event("jqplotDataClick");n.pageX=q.pageX;n.pageY=q.pageY;r.target.trigger(n,o)}}function m(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];var n=s.plugins.barRenderer.highlightedSeriesIndex;if(n!=null&&s.series[n].highlightMouseDown){k(s)}var o=jQuery.Event("jqplotDataRightClick");o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p)}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.blockRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.blockRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.blockRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.blockRenderer.js @@ -0,0 +1,221 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.BlockRenderer + * Plugin renderer to draw a x-y block chart. A Block chart has data points displayed as + * colored squares with a text label inside. Data must be supplied in the form: + * + * > [[x1, y1, "label 1", {css}], [x2, y2, "label 2", {css}], ...] + * + * The label and css object are optional. If the label is ommitted, the + * box will collapse unless a css height and/or width is specified. + * + * The css object is an object specifying css properties + * such as: + * + * > {background:'#4f98a5', border:'3px solid gray', padding:'1px'} + * + * Note that css properties specified with the data point override defaults + * specified with the series. + * + */ + $.jqplot.BlockRenderer = function(){ + $.jqplot.LineRenderer.call(this); + }; + + $.jqplot.BlockRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.BlockRenderer.prototype.constructor = $.jqplot.BlockRenderer; + + // called with scope of a series + $.jqplot.BlockRenderer.prototype.init = function(options) { + // Group: Properties + // + // prop: css + // default css styles that will be applied to all data blocks. + // these values will be overridden by css styles supplied with the + // individulal data points. + this.css = {padding:'2px', border:'1px solid #999', textAlign:'center'}; + // prop: escapeHtml + // true to escape html in the box label. + this.escapeHtml = false; + // prop: insertBreaks + // true to turn spaces in data block label into html breaks <br />. + this.insertBreaks = true; + // prop: varyBlockColors + // true to vary the color of each block in this series according to + // the seriesColors array. False to set each block to the color + // specified on this series. This has no effect if a css background color + // option is specified in the renderer css options. + this.varyBlockColors = false; + $.extend(true, this, options); + if (this.css.backgroundColor) { + this.color = this.css.backgroundColor; + } + else if (this.css.background) { + this.color = this.css.background; + } + else if (!this.varyBlockColors) { + this.css.background = this.color; + } + this.canvas = new $.jqplot.BlockCanvas(); + this.shadowCanvas = new $.jqplot.BlockCanvas(); + this.canvas._plotDimensions = this._plotDimensions; + this.shadowCanvas._plotDimensions = this._plotDimensions; + + // group: Methods + // + // Method: moveBlock + // Moves an individual block. More efficient than redrawing + // the whole series by calling plot.drawSeries(). + // Properties: + // idx - the 0 based index of the block or point in this series. + // x - the x coordinate in data units (value on x axis) to move the block to. + // y - the y coordinate in data units (value on the y axis) to move the block to. + // duration - optional parameter to create an animated movement. Can be a + // number (higher is slower animation) or 'fast', 'normal' or 'slow'. If not + // provided, the element is moved without any animation. + this.moveBlock = function (idx, x, y, duration) { + // update plotData, stackData, data and gridData + // x and y are in data coordinates. + var el = this.canvas._elem.children(':eq('+idx+')'); + this.data[idx][0] = x; + this.data[idx][1] = y; + this._plotData[idx][0] = x; + this._plotData[idx][1] = y; + this._stackData[idx][0] = x; + this._stackData[idx][1] = y; + this.gridData[idx][0] = this._xaxis.series_u2p(x); + this.gridData[idx][1] = this._yaxis.series_u2p(y); + var w = el.outerWidth(); + var h = el.outerHeight(); + var left = this.gridData[idx][0] - w/2 + 'px'; + var top = this.gridData[idx][1] - h/2 + 'px'; + if (duration) { + if (parseInt(duration, 10)) { + duration = parseInt(duration, 10); + } + el.animate({left:left, top:top}, duration); + } + else { + el.css({left:left, top:top}); + } + el = null; + }; + }; + + // called with scope of series + $.jqplot.BlockRenderer.prototype.draw = function (ctx, gd, options) { + if (this.plugins.pointLabels) { + this.plugins.pointLabels.show = false; + } + var i, el, d, gd, t, css, w, h, left, top; + var opts = (options != undefined) ? options : {}; + var colorGenerator = new $.jqplot.ColorGenerator(this.seriesColors); + this.canvas._elem.empty(); + for (i=0; i<this.gridData.length; i++) { + d = this.data[i]; + gd = this.gridData[i]; + t = ''; + css = {}; + if (typeof d[2] == 'string') { + t = d[2]; + } + else if (typeof d[2] == 'object') { + css = d[2]; + } + if (typeof d[3] == 'object') { + css = d[3]; + } + if (this.insertBreaks){ + t = t.replace(/ /g, '<br />'); + } + css = $.extend(true, {}, this.css, css); + // create a div + el = $('<div style="position:absolute;margin-left:auto;margin-right:auto;"></div>'); + this.canvas._elem.append(el); + // set text + this.escapeHtml ? el.text(t) : el.html(t); + // style it + // remove styles we don't want overridden. + delete css.position; + delete css.marginRight; + delete css.marginLeft; + if (!css.background && !css.backgroundColor && !css.backgroundImage){ + css.background = colorGenerator.next(); + } + el.css(css); + w = el.outerWidth(); + h = el.outerHeight(); + left = gd[0] - w/2 + 'px'; + top = gd[1] - h/2 + 'px'; + el.css({left:left, top:top}); + el = null; + } + }; + + $.jqplot.BlockCanvas = function() { + $.jqplot.ElemContainer.call(this); + this._ctx; + }; + + $.jqplot.BlockCanvas.prototype = new $.jqplot.ElemContainer(); + $.jqplot.BlockCanvas.prototype.constructor = $.jqplot.BlockCanvas; + + $.jqplot.BlockCanvas.prototype.createElement = function(offsets, clss, plotDimensions) { + this._offsets = offsets; + var klass = 'jqplot-blockCanvas'; + if (clss != undefined) { + klass = clss; + } + var elem; + // if this canvas already has a dom element, don't make a new one. + if (this._elem) { + elem = this._elem.get(0); + } + else { + elem = document.createElement('div'); + } + // if new plotDimensions supplied, use them. + if (plotDimensions != undefined) { + this._plotDimensions = plotDimensions; + } + + var w = this._plotDimensions.width - this._offsets.left - this._offsets.right + 'px'; + var h = this._plotDimensions.height - this._offsets.top - this._offsets.bottom + 'px'; + this._elem = $(elem); + this._elem.css({ position: 'absolute', width:w, height:h, left: this._offsets.left, top: this._offsets.top }); + + this._elem.addClass(klass); + return this._elem; + }; + + $.jqplot.BlockCanvas.prototype.setContext = function() { + this._ctx = { + canvas:{ + width:0, + height:0 + }, + clearRect:function(){return null;} + }; + return this._ctx; + }; + +})(jQuery); + + ADDED Site/Site_W/jpqplot/plugins/jqplot.blockRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.blockRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.blockRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.blockRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.BlockRenderer=function(){a.jqplot.LineRenderer.call(this)};a.jqplot.BlockRenderer.prototype=new a.jqplot.LineRenderer();a.jqplot.BlockRenderer.prototype.constructor=a.jqplot.BlockRenderer;a.jqplot.BlockRenderer.prototype.init=function(b){this.css={padding:"2px",border:"1px solid #999",textAlign:"center"};this.escapeHtml=false;this.insertBreaks=true;this.varyBlockColors=false;a.extend(true,this,b);if(this.css.backgroundColor){this.color=this.css.backgroundColor}else{if(this.css.background){this.color=this.css.background}else{if(!this.varyBlockColors){this.css.background=this.color}}}this.canvas=new a.jqplot.BlockCanvas();this.shadowCanvas=new a.jqplot.BlockCanvas();this.canvas._plotDimensions=this._plotDimensions;this.shadowCanvas._plotDimensions=this._plotDimensions;this.moveBlock=function(l,j,i,e){var c=this.canvas._elem.children(":eq("+l+")");this.data[l][0]=j;this.data[l][1]=i;this._plotData[l][0]=j;this._plotData[l][1]=i;this._stackData[l][0]=j;this._stackData[l][1]=i;this.gridData[l][0]=this._xaxis.series_u2p(j);this.gridData[l][1]=this._yaxis.series_u2p(i);var k=c.outerWidth();var f=c.outerHeight();var d=this.gridData[l][0]-k/2+"px";var g=this.gridData[l][1]-f/2+"px";if(e){if(parseInt(e,10)){e=parseInt(e,10)}c.animate({left:d,top:g},e)}else{c.css({left:d,top:g})}c=null}};a.jqplot.BlockRenderer.prototype.draw=function(q,o,r){if(this.plugins.pointLabels){this.plugins.pointLabels.show=false}var f,c,l,o,p,k,n,g,e,m;var b=(r!=undefined)?r:{};var j=new a.jqplot.ColorGenerator(this.seriesColors);this.canvas._elem.empty();for(f=0;f<this.gridData.length;f++){l=this.data[f];o=this.gridData[f];p="";k={};if(typeof l[2]=="string"){p=l[2]}else{if(typeof l[2]=="object"){k=l[2]}}if(typeof l[3]=="object"){k=l[3]}if(this.insertBreaks){p=p.replace(/ /g,"<br />")}k=a.extend(true,{},this.css,k);c=a('<div style="position:absolute;margin-left:auto;margin-right:auto;"></div>');this.canvas._elem.append(c);this.escapeHtml?c.text(p):c.html(p);delete k.position;delete k.marginRight;delete k.marginLeft;if(!k.background&&!k.backgroundColor&&!k.backgroundImage){k.background=j.next()}c.css(k);n=c.outerWidth();g=c.outerHeight();e=o[0]-n/2+"px";m=o[1]-g/2+"px";c.css({left:e,top:m});c=null}};a.jqplot.BlockCanvas=function(){a.jqplot.ElemContainer.call(this);this._ctx};a.jqplot.BlockCanvas.prototype=new a.jqplot.ElemContainer();a.jqplot.BlockCanvas.prototype.constructor=a.jqplot.BlockCanvas;a.jqplot.BlockCanvas.prototype.createElement=function(i,e,c){this._offsets=i;var b="jqplot-blockCanvas";if(e!=undefined){b=e}var g;if(this._elem){g=this._elem.get(0)}else{g=document.createElement("div")}if(c!=undefined){this._plotDimensions=c}var d=this._plotDimensions.width-this._offsets.left-this._offsets.right+"px";var f=this._plotDimensions.height-this._offsets.top-this._offsets.bottom+"px";this._elem=a(g);this._elem.css({position:"absolute",width:d,height:f,left:this._offsets.left,top:this._offsets.top});this._elem.addClass(b);return this._elem};a.jqplot.BlockCanvas.prototype.setContext=function(){this._ctx={canvas:{width:0,height:0},clearRect:function(){return null}};return this._ctx}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.bubbleRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.bubbleRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.bubbleRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.bubbleRenderer.js @@ -0,0 +1,724 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + var arrayMax = function( array ){ + return Math.max.apply( Math, array ); + }; + var arrayMin = function( array ){ + return Math.min.apply( Math, array ); + }; + + /** + * Class: $.jqplot.BubbleRenderer + * Plugin renderer to draw a bubble chart. A Bubble chart has data points displayed as + * colored circles with an optional text label inside. To use + * the bubble renderer, you must include the bubble renderer like: + * + * > <script language="javascript" type="text/javascript" src="../src/plugins/jqplot.bubbleRenderer.js"></script> + * + * Data must be supplied in + * the form: + * + * > [[x1, y1, r1, <label or {label:'text', color:color}>], ...] + * + * where the label or options + * object is optional. + * + * Note that all bubble colors will be the same + * unless the "varyBubbleColors" option is set to true. Colors can be specified in the data array + * or in the seriesColors array option on the series. If no colors are defined, the default jqPlot + * series of 16 colors are used. Colors are automatically cycled around again if there are more + * bubbles than colors. + * + * Bubbles are autoscaled by default to fit within the chart area while maintaining + * relative sizes. If the "autoscaleBubbles" option is set to false, the r(adius) values + * in the data array a treated as literal pixel values for the radii of the bubbles. + * + * Properties are passed into the bubble renderer in the rendererOptions object of + * the series options like: + * + * > seriesDefaults: { + * > renderer: $.jqplot.BubbleRenderer, + * > rendererOptions: { + * > bubbleAlpha: 0.7, + * > varyBubbleColors: false + * > } + * > } + * + */ + $.jqplot.BubbleRenderer = function(){ + $.jqplot.LineRenderer.call(this); + }; + + $.jqplot.BubbleRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.BubbleRenderer.prototype.constructor = $.jqplot.BubbleRenderer; + + // called with scope of a series + $.jqplot.BubbleRenderer.prototype.init = function(options, plot) { + // Group: Properties + // + // prop: varyBubbleColors + // True to vary the color of each bubble in this series according to + // the seriesColors array. False to set each bubble to the color + // specified on this series. This has no effect if a css background color + // option is specified in the renderer css options. + this.varyBubbleColors = true; + // prop: autoscaleBubbles + // True to scale the bubble radius based on plot size. + // False will use the radius value as provided as a raw pixel value for + // bubble radius. + this.autoscaleBubbles = true; + // prop: autoscaleMultiplier + // Multiplier the bubble size if autoscaleBubbles is true. + this.autoscaleMultiplier = 1.0; + // prop: autoscalePointsFactor + // Factor which decreases bubble size based on how many bubbles on on the chart. + // 0 means no adjustment for number of bubbles. Negative values will decrease + // size of bubbles as more bubbles are added. Values between 0 and -0.2 + // should work well. + this.autoscalePointsFactor = -0.07; + // prop: escapeHtml + // True to escape html in bubble label text. + this.escapeHtml = true; + // prop: highlightMouseOver + // True to highlight bubbles when moused over. + // This must be false to enable highlightMouseDown to highlight when clicking on a slice. + this.highlightMouseOver = true; + // prop: highlightMouseDown + // True to highlight when a mouse button is pressed over a bubble. + // This will be disabled if highlightMouseOver is true. + this.highlightMouseDown = false; + // prop: highlightColors + // An array of colors to use when highlighting a slice. Calculated automatically + // if not supplied. + this.highlightColors = []; + // prop: bubbleAlpha + // Alpha transparency to apply to all bubbles in this series. + this.bubbleAlpha = 1.0; + // prop: highlightAlpha + // Alpha transparency to apply when highlighting bubble. + // Set to value of bubbleAlpha by default. + this.highlightAlpha = null; + // prop: bubbleGradients + // True to color the bubbles with gradient fills instead of flat colors. + // NOT AVAILABLE IN IE due to lack of excanvas support for radial gradient fills. + // will be ignored in IE. + this.bubbleGradients = false; + // prop: showLabels + // True to show labels on bubbles (if any), false to not show. + this.showLabels = true; + // array of [point index, radius] which will be sorted in descending order to plot + // largest points below smaller points. + this.radii = []; + this.maxRadius = 0; + // index of the currenty highlighted point, if any + this._highlightedPoint = null; + // array of jQuery labels. + this.labels = []; + this.bubbleCanvases = []; + + // if user has passed in highlightMouseDown option and not set highlightMouseOver, disable highlightMouseOver + if (options.highlightMouseDown && options.highlightMouseOver == null) { + options.highlightMouseOver = false; + } + + $.extend(true, this, options); + + if (this.highlightAlpha == null) { + this.highlightAlpha = this.bubbleAlpha; + if (this.bubbleGradients) { + this.highlightAlpha = 0.35; + } + } + + this.autoscaleMultiplier = this.autoscaleMultiplier * Math.pow(this.data.length, this.autoscalePointsFactor); + + // index of the currenty highlighted point, if any + this._highlightedPoint = null; + + // adjust the series colors for options colors passed in with data or for alpha. + // note, this can leave undefined holes in the seriesColors array. + for (var i=0; i<this.data.length; i++) { + var color = null; + var d = this.data[i]; + this.maxRadius = Math.max(this.maxRadius, d[2]); + if (d[3]) { + if (typeof(d[3]) == 'object') { + color = d[3]['color']; + } + } + + if (color == null) { + if (this.seriesColors[i] != null) { + color = this.seriesColors[i]; + } + } + + if (color && this.bubbleAlpha < 1.0) { + comps = $.jqplot.getColorComponents(color); + color = 'rgba('+comps[0]+', '+comps[1]+', '+comps[2]+', '+this.bubbleAlpha+')'; + } + + if (color) { + this.seriesColors[i] = color; + } + } + + if (!this.varyBubbleColors) { + this.seriesColors = [this.color]; + } + + this.colorGenerator = new $.jqplot.ColorGenerator(this.seriesColors); + + // set highlight colors if none provided + if (this.highlightColors.length == 0) { + for (var i=0; i<this.seriesColors.length; i++){ + var rgba = $.jqplot.getColorComponents(this.seriesColors[i]); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + newrgb[j] = (sum > 570) ? newrgb[j] * 0.8 : newrgb[j] + 0.3 * (255 - newrgb[j]); + newrgb[j] = parseInt(newrgb[j], 10); + } + this.highlightColors.push('rgba('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+', '+this.highlightAlpha+')'); + } + } + + this.highlightColorGenerator = new $.jqplot.ColorGenerator(this.highlightColors); + + var sopts = {fill:true, isarc:true, angle:this.shadowAngle, alpha:this.shadowAlpha, closePath:true}; + + this.renderer.shadowRenderer.init(sopts); + + this.canvas = new $.jqplot.DivCanvas(); + this.canvas._plotDimensions = this._plotDimensions; + + plot.eventListenerHooks.addOnce('jqplotMouseMove', handleMove); + plot.eventListenerHooks.addOnce('jqplotMouseDown', handleMouseDown); + plot.eventListenerHooks.addOnce('jqplotMouseUp', handleMouseUp); + plot.eventListenerHooks.addOnce('jqplotClick', handleClick); + plot.eventListenerHooks.addOnce('jqplotRightClick', handleRightClick); + plot.postDrawHooks.addOnce(postPlotDraw); + + }; + + + // converts the user data values to grid coordinates and stores them + // in the gridData array. + // Called with scope of a series. + $.jqplot.BubbleRenderer.prototype.setGridData = function(plot) { + // recalculate the grid data + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var data = this._plotData; + this.gridData = []; + var radii = []; + this.radii = []; + var dim = Math.min(plot._height, plot._width); + for (var i=0; i<this.data.length; i++) { + if (data[i] != null) { + this.gridData.push([xp.call(this._xaxis, data[i][0]), yp.call(this._yaxis, data[i][1]), data[i][2]]); + this.radii.push([i, data[i][2]]); + radii.push(data[i][2]); + } + } + var r, val, maxr = this.maxRadius = arrayMax(radii); + var l = this.gridData.length; + if (this.autoscaleBubbles) { + for (var i=0; i<l; i++) { + val = radii[i]/maxr; + r = this.autoscaleMultiplier * dim / 6; + this.gridData[i][2] = r * val; + } + } + + this.radii.sort(function(a, b) { return b[1] - a[1]; }); + }; + + // converts any arbitrary data values to grid coordinates and + // returns them. This method exists so that plugins can use a series' + // linerenderer to generate grid data points without overwriting the + // grid data associated with that series. + // Called with scope of a series. + $.jqplot.BubbleRenderer.prototype.makeGridData = function(data, plot) { + // recalculate the grid data + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var gd = []; + var radii = []; + this.radii = []; + var dim = Math.min(plot._height, plot._width); + for (var i=0; i<data.length; i++) { + if (data[i] != null) { + gd.push([xp.call(this._xaxis, data[i][0]), yp.call(this._yaxis, data[i][1]), data[i][2]]); + radii.push(data[i][2]); + this.radii.push([i, data[i][2]]); + } + } + var r, val, maxr = this.maxRadius = arrayMax(radii); + var l = this.gridData.length; + if (this.autoscaleBubbles) { + for (var i=0; i<l; i++) { + val = radii[i]/maxr; + r = this.autoscaleMultiplier * dim / 6; + gd[i][2] = r * val; + } + } + this.radii.sort(function(a, b) { return b[1] - a[1]; }); + return gd; + }; + + // called with scope of series + $.jqplot.BubbleRenderer.prototype.draw = function (ctx, gd, options) { + if (this.plugins.pointLabels) { + this.plugins.pointLabels.show = false; + } + var opts = (options != undefined) ? options : {}; + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + this.canvas._elem.empty(); + for (var i=0; i<this.radii.length; i++) { + var idx = this.radii[i][0]; + var t=null; + var color = null; + var el = tel = null; + var d = this.data[idx]; + var gd = this.gridData[idx]; + if (d[3]) { + if (typeof(d[3]) == 'object') { + t = d[3]['label']; + } + else if (typeof(d[3]) == 'string') { + t = d[3]; + } + } + + // color = (this.varyBubbleColors) ? this.colorGenerator.get(idx) : this.color; + color = this.colorGenerator.get(idx); + + // If we're drawing a shadow, expand the canvas dimensions to accomodate. + var canvasRadius = gd[2]; + var offset, depth; + if (this.shadow) { + offset = (0.7 + gd[2]/40).toFixed(1); + depth = 1 + Math.ceil(gd[2]/15); + canvasRadius += offset*depth; + } + this.bubbleCanvases[idx] = new $.jqplot.BubbleCanvas(); + this.canvas._elem.append(this.bubbleCanvases[idx].createElement(gd[0], gd[1], canvasRadius)); + this.bubbleCanvases[idx].setContext(); + var ctx = this.bubbleCanvases[idx]._ctx; + var x = ctx.canvas.width/2; + var y = ctx.canvas.height/2; + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [x, y, gd[2], 0, 2*Math.PI], {offset: offset, depth: depth}); + } + this.bubbleCanvases[idx].draw(gd[2], color, this.bubbleGradients, this.shadowAngle/180*Math.PI); + + // now draw label. + if (t && this.showLabels) { + tel = $('<div style="position:absolute;" class="jqplot-bubble-label"></div>'); + if (this.escapeHtml) { + tel.text(t); + } + else { + tel.html(t); + } + this.canvas._elem.append(tel); + var h = $(tel).outerHeight(); + var w = $(tel).outerWidth(); + var top = gd[1] - 0.5*h; + var left = gd[0] - 0.5*w; + tel.css({top: top, left: left}); + this.labels[idx] = $(tel); + } + } + }; + + + $.jqplot.DivCanvas = function() { + $.jqplot.ElemContainer.call(this); + this._ctx; + }; + + $.jqplot.DivCanvas.prototype = new $.jqplot.ElemContainer(); + $.jqplot.DivCanvas.prototype.constructor = $.jqplot.DivCanvas; + + $.jqplot.DivCanvas.prototype.createElement = function(offsets, clss, plotDimensions) { + this._offsets = offsets; + var klass = 'jqplot-DivCanvas'; + if (clss != undefined) { + klass = clss; + } + var elem; + // if this canvas already has a dom element, don't make a new one. + if (this._elem) { + elem = this._elem.get(0); + } + else { + elem = document.createElement('div'); + } + // if new plotDimensions supplied, use them. + if (plotDimensions != undefined) { + this._plotDimensions = plotDimensions; + } + + var w = this._plotDimensions.width - this._offsets.left - this._offsets.right + 'px'; + var h = this._plotDimensions.height - this._offsets.top - this._offsets.bottom + 'px'; + this._elem = $(elem); + this._elem.css({ position: 'absolute', width:w, height:h, left: this._offsets.left, top: this._offsets.top }); + + this._elem.addClass(klass); + return this._elem; + }; + + $.jqplot.DivCanvas.prototype.setContext = function() { + this._ctx = { + canvas:{ + width:0, + height:0 + }, + clearRect:function(){return null;} + }; + return this._ctx; + }; + + $.jqplot.BubbleCanvas = function() { + $.jqplot.ElemContainer.call(this); + this._ctx; + }; + + $.jqplot.BubbleCanvas.prototype = new $.jqplot.ElemContainer(); + $.jqplot.BubbleCanvas.prototype.constructor = $.jqplot.BubbleCanvas; + + // initialize with the x,y pont of bubble center and the bubble radius. + $.jqplot.BubbleCanvas.prototype.createElement = function(x, y, r) { + var klass = 'jqplot-bubble-point'; + + var elem; + // if this canvas already has a dom element, don't make a new one. + if (this._elem) { + elem = this._elem.get(0); + } + else { + elem = document.createElement('canvas'); + } + + elem.width = (r != null) ? 2*r : elem.width; + elem.height = (r != null) ? 2*r : elem.height; + this._elem = $(elem); + var l = (x != null && r != null) ? x - r : this._elem.css('left'); + var t = (y != null && r != null) ? y - r : this._elem.css('top'); + this._elem.css({ position: 'absolute', left: l, top: t }); + + this._elem.addClass(klass); + if ($.jqplot.use_excanvas) { + window.G_vmlCanvasManager.init_(document); + elem = window.G_vmlCanvasManager.initElement(elem); + } + + return this._elem; + }; + + $.jqplot.BubbleCanvas.prototype.draw = function(r, color, gradients, angle) { + var ctx = this._ctx; + // r = Math.floor(r*1.04); + // var x = Math.round(ctx.canvas.width/2); + // var y = Math.round(ctx.canvas.height/2); + var x = ctx.canvas.width/2; + var y = ctx.canvas.height/2; + ctx.save(); + if (gradients && !$.browser.msie) { + r = r*1.04; + var comps = $.jqplot.getColorComponents(color); + var colorinner = 'rgba('+Math.round(comps[0]+0.8*(255-comps[0]))+', '+Math.round(comps[1]+0.8*(255-comps[1]))+', '+Math.round(comps[2]+0.8*(255-comps[2]))+', '+comps[3]+')'; + var colorend = 'rgba('+comps[0]+', '+comps[1]+', '+comps[2]+', 0)'; + // var rinner = Math.round(0.35 * r); + // var xinner = Math.round(x - Math.cos(angle) * 0.33 * r); + // var yinner = Math.round(y - Math.sin(angle) * 0.33 * r); + var rinner = 0.35 * r; + var xinner = x - Math.cos(angle) * 0.33 * r; + var yinner = y - Math.sin(angle) * 0.33 * r; + var radgrad = ctx.createRadialGradient(xinner, yinner, rinner, x, y, r); + radgrad.addColorStop(0, colorinner); + radgrad.addColorStop(0.93, color); + radgrad.addColorStop(0.96, colorend); + radgrad.addColorStop(1, colorend); + // radgrad.addColorStop(.98, colorend); + ctx.fillStyle = radgrad; + ctx.fillRect(0,0, ctx.canvas.width, ctx.canvas.height); + } + else { + ctx.fillStyle = color; + ctx.strokeStyle = color; + ctx.lineWidth = 1; + ctx.beginPath(); + var ang = 2*Math.PI; + ctx.arc(x, y, r, 0, ang, 0); + ctx.closePath(); + ctx.fill(); + } + ctx.restore(); + }; + + $.jqplot.BubbleCanvas.prototype.setContext = function() { + this._ctx = this._elem.get(0).getContext("2d"); + return this._ctx; + }; + + $.jqplot.BubbleAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + }; + + $.jqplot.BubbleAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.BubbleAxisRenderer.prototype.constructor = $.jqplot.BubbleAxisRenderer; + + // called with scope of axis object. + $.jqplot.BubbleAxisRenderer.prototype.init = function(options){ + $.extend(true, this, options); + var db = this._dataBounds; + var minsidx=minpidx=maxsids=maxpidx=maxr=minr=minMaxRadius=maxMaxRadius=maxMult=minMult=0; + // Go through all the series attached to this axis and find + // the min/max bounds for this axis. + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + var d = s._plotData; + + for (var j=0; j<d.length; j++) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + if (d[j][0] < db.min || db.min == null) { + db.min = d[j][0]; + minsidx=i; + minpidx=j; + minr = d[j][2]; + minMaxRadius = s.maxRadius; + minMult = s.autoscaleMultiplier; + } + if (d[j][0] > db.max || db.max == null) { + db.max = d[j][0]; + maxsidx=i; + maxpidx=j; + maxr = d[j][2]; + maxMaxRadius = s.maxRadius; + maxMult = s.autoscaleMultiplier; + } + } + else { + if (d[j][1] < db.min || db.min == null) { + db.min = d[j][1]; + minsidx=i; + minpidx=j; + minr = d[j][2]; + minMaxRadius = s.maxRadius; + minMult = s.autoscaleMultiplier; + } + if (d[j][1] > db.max || db.max == null) { + db.max = d[j][1]; + maxsidx=i; + maxpidx=j; + maxr = d[j][2]; + maxMaxRadius = s.maxRadius; + maxMult = s.autoscaleMultiplier; + } + } + } + } + + var minRatio = minr/minMaxRadius; + var maxRatio = maxr/maxMaxRadius; + + // need to estimate the effect of the radius on total axis span and adjust axis accordingly. + var span = db.max - db.min; + // var dim = (this.name == 'xaxis' || this.name == 'x2axis') ? this._plotDimensions.width : this._plotDimensions.height; + var dim = Math.min(this._plotDimensions.width, this._plotDimensions.height); + + var minfact = minRatio * minMult/3 * span; + var maxfact = maxRatio * maxMult/3 * span; + db.max += maxfact; + db.min -= minfact; + }; + + function highlight (plot, sidx, pidx) { + plot.plugins.bubbleRenderer.highlightLabelCanvas.empty(); + var s = plot.series[sidx]; + var canvas = plot.plugins.bubbleRenderer.highlightCanvas; + var ctx = canvas._ctx; + ctx.clearRect(0,0,ctx.canvas.width, ctx.canvas.height); + s._highlightedPoint = pidx; + plot.plugins.bubbleRenderer.highlightedSeriesIndex = sidx; + + var color = s.highlightColorGenerator.get(pidx); + var x = s.gridData[pidx][0], + y = s.gridData[pidx][1], + r = s.gridData[pidx][2]; + ctx.save(); + ctx.fillStyle = color; + ctx.strokeStyle = color; + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.arc(x, y, r, 0, 2*Math.PI, 0); + ctx.closePath(); + ctx.fill(); + ctx.restore(); + // bring label to front + if (s.labels[pidx]) { + plot.plugins.bubbleRenderer.highlightLabel = s.labels[pidx].clone(); + plot.plugins.bubbleRenderer.highlightLabel.appendTo(plot.plugins.bubbleRenderer.highlightLabelCanvas); + plot.plugins.bubbleRenderer.highlightLabel.addClass('jqplot-bubble-label-highlight'); + } + } + + function unhighlight (plot) { + var canvas = plot.plugins.bubbleRenderer.highlightCanvas; + var sidx = plot.plugins.bubbleRenderer.highlightedSeriesIndex; + plot.plugins.bubbleRenderer.highlightLabelCanvas.empty(); + canvas._ctx.clearRect(0,0, canvas._ctx.canvas.width, canvas._ctx.canvas.height); + for (var i=0; i<plot.series.length; i++) { + plot.series[i]._highlightedPoint = null; + } + plot.plugins.bubbleRenderer.highlightedSeriesIndex = null; + plot.target.trigger('jqplotDataUnhighlight'); + } + + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var si = neighbor.seriesIndex; + var pi = neighbor.pointIndex; + var ins = [si, pi, neighbor.data, plot.series[si].gridData[pi][2]]; + var evt1 = jQuery.Event('jqplotDataMouseOver'); + evt1.pageX = ev.pageX; + evt1.pageY = ev.pageY; + plot.target.trigger(evt1, ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.bubbleRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseDown(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var si = neighbor.seriesIndex; + var pi = neighbor.pointIndex; + var ins = [si, pi, neighbor.data, plot.series[si].gridData[pi][2]]; + if (plot.series[ins[0]].highlightMouseDown && !(ins[0] == plot.plugins.bubbleRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseUp(ev, gridpos, datapos, neighbor, plot) { + var idx = plot.plugins.bubbleRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + } + + function handleClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var si = neighbor.seriesIndex; + var pi = neighbor.pointIndex; + var ins = [si, pi, neighbor.data, plot.series[si].gridData[pi][2]]; + var evt = jQuery.Event('jqplotDataClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + function handleRightClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var si = neighbor.seriesIndex; + var pi = neighbor.pointIndex; + var ins = [si, pi, neighbor.data, plot.series[si].gridData[pi][2]]; + var idx = plot.plugins.bubbleRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + var evt = jQuery.Event('jqplotDataRightClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + function postPlotDraw() { + this.plugins.bubbleRenderer = {highlightedSeriesIndex:null}; + this.plugins.bubbleRenderer.highlightCanvas = new $.jqplot.GenericCanvas(); + this.plugins.bubbleRenderer.highlightLabel = null; + this.plugins.bubbleRenderer.highlightLabelCanvas = $('<div style="position:absolute;"></div>'); + var top = this._gridPadding.top; + var left = this._gridPadding.left; + var width = this._plotDimensions.width - this._gridPadding.left - this._gridPadding.right; + var height = this._plotDimensions.height - this._gridPadding.top - this._gridPadding.bottom; + this.plugins.bubbleRenderer.highlightLabelCanvas.css({top:top, left:left, width:width+'px', height:height+'px'}); + + this.eventCanvas._elem.before(this.plugins.bubbleRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-bubbleRenderer-highlight-canvas', this._plotDimensions)); + this.eventCanvas._elem.before(this.plugins.bubbleRenderer.highlightLabelCanvas); + + var hctx = this.plugins.bubbleRenderer.highlightCanvas.setContext(); + } + + + // setup default renderers for axes and legend so user doesn't have to + // called with scope of plot + function preInit(target, data, options) { + options = options || {}; + options.axesDefaults = options.axesDefaults || {}; + options.seriesDefaults = options.seriesDefaults || {}; + // only set these if there is a Bubble series + var setopts = false; + if (options.seriesDefaults.renderer == $.jqplot.BubbleRenderer) { + setopts = true; + } + else if (options.series) { + for (var i=0; i < options.series.length; i++) { + if (options.series[i].renderer == $.jqplot.BubbleRenderer) { + setopts = true; + } + } + } + + if (setopts) { + options.axesDefaults.renderer = $.jqplot.BubbleAxisRenderer; + options.sortData = false; + } + } + + $.jqplot.preInitHooks.push(preInit); + +})(jQuery); + + ADDED Site/Site_W/jpqplot/plugins/jqplot.bubbleRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.bubbleRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.bubbleRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.bubbleRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(f){var d=function(m){return Math.max.apply(Math,m)};var j=function(m){return Math.min.apply(Math,m)};f.jqplot.BubbleRenderer=function(){f.jqplot.LineRenderer.call(this)};f.jqplot.BubbleRenderer.prototype=new f.jqplot.LineRenderer();f.jqplot.BubbleRenderer.prototype.constructor=f.jqplot.BubbleRenderer;f.jqplot.BubbleRenderer.prototype.init=function(v,s){this.varyBubbleColors=true;this.autoscaleBubbles=true;this.autoscaleMultiplier=1;this.autoscalePointsFactor=-0.07;this.escapeHtml=true;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.bubbleAlpha=1;this.highlightAlpha=null;this.bubbleGradients=false;this.showLabels=true;this.radii=[];this.maxRadius=0;this._highlightedPoint=null;this.labels=[];this.bubbleCanvases=[];if(v.highlightMouseDown&&v.highlightMouseOver==null){v.highlightMouseOver=false}f.extend(true,this,v);if(this.highlightAlpha==null){this.highlightAlpha=this.bubbleAlpha;if(this.bubbleGradients){this.highlightAlpha=0.35}}this.autoscaleMultiplier=this.autoscaleMultiplier*Math.pow(this.data.length,this.autoscalePointsFactor);this._highlightedPoint=null;for(var q=0;q<this.data.length;q++){var o=null;var u=this.data[q];this.maxRadius=Math.max(this.maxRadius,u[2]);if(u[3]){if(typeof(u[3])=="object"){o=u[3]["color"]}}if(o==null){if(this.seriesColors[q]!=null){o=this.seriesColors[q]}}if(o&&this.bubbleAlpha<1){comps=f.jqplot.getColorComponents(o);o="rgba("+comps[0]+", "+comps[1]+", "+comps[2]+", "+this.bubbleAlpha+")"}if(o){this.seriesColors[q]=o}}if(!this.varyBubbleColors){this.seriesColors=[this.color]}this.colorGenerator=new f.jqplot.ColorGenerator(this.seriesColors);if(this.highlightColors.length==0){for(var q=0;q<this.seriesColors.length;q++){var n=f.jqplot.getColorComponents(this.seriesColors[q]);var t=[n[0],n[1],n[2]];var r=t[0]+t[1]+t[2];for(var p=0;p<3;p++){t[p]=(r>570)?t[p]*0.8:t[p]+0.3*(255-t[p]);t[p]=parseInt(t[p],10)}this.highlightColors.push("rgba("+t[0]+","+t[1]+","+t[2]+", "+this.highlightAlpha+")")}}this.highlightColorGenerator=new f.jqplot.ColorGenerator(this.highlightColors);var m={fill:true,isarc:true,angle:this.shadowAngle,alpha:this.shadowAlpha,closePath:true};this.renderer.shadowRenderer.init(m);this.canvas=new f.jqplot.DivCanvas();this.canvas._plotDimensions=this._plotDimensions;s.eventListenerHooks.addOnce("jqplotMouseMove",a);s.eventListenerHooks.addOnce("jqplotMouseDown",b);s.eventListenerHooks.addOnce("jqplotMouseUp",k);s.eventListenerHooks.addOnce("jqplotClick",g);s.eventListenerHooks.addOnce("jqplotRightClick",l);s.postDrawHooks.addOnce(h)};f.jqplot.BubbleRenderer.prototype.setGridData=function(w){var q=this._xaxis.series_u2p;var m=this._yaxis.series_u2p;var t=this._plotData;this.gridData=[];var s=[];this.radii=[];var v=Math.min(w._height,w._width);for(var u=0;u<this.data.length;u++){if(t[u]!=null){this.gridData.push([q.call(this._xaxis,t[u][0]),m.call(this._yaxis,t[u][1]),t[u][2]]);this.radii.push([u,t[u][2]]);s.push(t[u][2])}}var n,o,x=this.maxRadius=d(s);var p=this.gridData.length;if(this.autoscaleBubbles){for(var u=0;u<p;u++){o=s[u]/x;n=this.autoscaleMultiplier*v/6;this.gridData[u][2]=n*o}}this.radii.sort(function(y,r){return r[1]-y[1]})};f.jqplot.BubbleRenderer.prototype.makeGridData=function(t,w){var q=this._xaxis.series_u2p;var n=this._yaxis.series_u2p;var x=[];var s=[];this.radii=[];var v=Math.min(w._height,w._width);for(var u=0;u<t.length;u++){if(t[u]!=null){x.push([q.call(this._xaxis,t[u][0]),n.call(this._yaxis,t[u][1]),t[u][2]]);s.push(t[u][2]);this.radii.push([u,t[u][2]])}}var m,o,y=this.maxRadius=d(s);var p=this.gridData.length;if(this.autoscaleBubbles){for(var u=0;u<p;u++){o=s[u]/y;m=this.autoscaleMultiplier*v/6;x[u][2]=m*o}}this.radii.sort(function(z,r){return r[1]-z[1]});return x};f.jqplot.BubbleRenderer.prototype.draw=function(C,I,n){if(this.plugins.pointLabels){this.plugins.pointLabels.show=false}var z=(n!=undefined)?n:{};var q=(z.shadow!=undefined)?z.shadow:this.shadow;this.canvas._elem.empty();for(var F=0;F<this.radii.length;F++){var B=this.radii[F][0];var v=null;var E=null;var m=tel=null;var H=this.data[B];var I=this.gridData[B];if(H[3]){if(typeof(H[3])=="object"){v=H[3]["label"]}else{if(typeof(H[3])=="string"){v=H[3]}}}E=this.colorGenerator.get(B);var D=I[2];var p,J;if(this.shadow){p=(0.7+I[2]/40).toFixed(1);J=1+Math.ceil(I[2]/15);D+=p*J}this.bubbleCanvases[B]=new f.jqplot.BubbleCanvas();this.canvas._elem.append(this.bubbleCanvases[B].createElement(I[0],I[1],D));this.bubbleCanvases[B].setContext();var C=this.bubbleCanvases[B]._ctx;var s=C.canvas.width/2;var r=C.canvas.height/2;if(this.shadow){this.renderer.shadowRenderer.draw(C,[s,r,I[2],0,2*Math.PI],{offset:p,depth:J})}this.bubbleCanvases[B].draw(I[2],E,this.bubbleGradients,this.shadowAngle/180*Math.PI);if(v&&this.showLabels){tel=f('<div style="position:absolute;" class="jqplot-bubble-label"></div>');if(this.escapeHtml){tel.text(v)}else{tel.html(v)}this.canvas._elem.append(tel);var G=f(tel).outerHeight();var u=f(tel).outerWidth();var A=I[1]-0.5*G;var o=I[0]-0.5*u;tel.css({top:A,left:o});this.labels[B]=f(tel)}}};f.jqplot.DivCanvas=function(){f.jqplot.ElemContainer.call(this);this._ctx};f.jqplot.DivCanvas.prototype=new f.jqplot.ElemContainer();f.jqplot.DivCanvas.prototype.constructor=f.jqplot.DivCanvas;f.jqplot.DivCanvas.prototype.createElement=function(s,p,n){this._offsets=s;var m="jqplot-DivCanvas";if(p!=undefined){m=p}var r;if(this._elem){r=this._elem.get(0)}else{r=document.createElement("div")}if(n!=undefined){this._plotDimensions=n}var o=this._plotDimensions.width-this._offsets.left-this._offsets.right+"px";var q=this._plotDimensions.height-this._offsets.top-this._offsets.bottom+"px";this._elem=f(r);this._elem.css({position:"absolute",width:o,height:q,left:this._offsets.left,top:this._offsets.top});this._elem.addClass(m);return this._elem};f.jqplot.DivCanvas.prototype.setContext=function(){this._ctx={canvas:{width:0,height:0},clearRect:function(){return null}};return this._ctx};f.jqplot.BubbleCanvas=function(){f.jqplot.ElemContainer.call(this);this._ctx};f.jqplot.BubbleCanvas.prototype=new f.jqplot.ElemContainer();f.jqplot.BubbleCanvas.prototype.constructor=f.jqplot.BubbleCanvas;f.jqplot.BubbleCanvas.prototype.createElement=function(n,u,s){var m="jqplot-bubble-point";var q;if(this._elem){q=this._elem.get(0)}else{q=document.createElement("canvas")}q.width=(s!=null)?2*s:q.width;q.height=(s!=null)?2*s:q.height;this._elem=f(q);var o=(n!=null&&s!=null)?n-s:this._elem.css("left");var p=(u!=null&&s!=null)?u-s:this._elem.css("top");this._elem.css({position:"absolute",left:o,top:p});this._elem.addClass(m);if(f.jqplot.use_excanvas){window.G_vmlCanvasManager.init_(document);q=window.G_vmlCanvasManager.initElement(q)}return this._elem};f.jqplot.BubbleCanvas.prototype.draw=function(m,s,v,p){var D=this._ctx;var B=D.canvas.width/2;var z=D.canvas.height/2;D.save();if(v&&!f.browser.msie){m=m*1.04;var o=f.jqplot.getColorComponents(s);var u="rgba("+Math.round(o[0]+0.8*(255-o[0]))+", "+Math.round(o[1]+0.8*(255-o[1]))+", "+Math.round(o[2]+0.8*(255-o[2]))+", "+o[3]+")";var t="rgba("+o[0]+", "+o[1]+", "+o[2]+", 0)";var C=0.35*m;var A=B-Math.cos(p)*0.33*m;var n=z-Math.sin(p)*0.33*m;var w=D.createRadialGradient(A,n,C,B,z,m);w.addColorStop(0,u);w.addColorStop(0.93,s);w.addColorStop(0.96,t);w.addColorStop(1,t);D.fillStyle=w;D.fillRect(0,0,D.canvas.width,D.canvas.height)}else{D.fillStyle=s;D.strokeStyle=s;D.lineWidth=1;D.beginPath();var q=2*Math.PI;D.arc(B,z,m,0,q,0);D.closePath();D.fill()}D.restore()};f.jqplot.BubbleCanvas.prototype.setContext=function(){this._ctx=this._elem.get(0).getContext("2d");return this._ctx};f.jqplot.BubbleAxisRenderer=function(){f.jqplot.LinearAxisRenderer.call(this)};f.jqplot.BubbleAxisRenderer.prototype=new f.jqplot.LinearAxisRenderer();f.jqplot.BubbleAxisRenderer.prototype.constructor=f.jqplot.BubbleAxisRenderer;f.jqplot.BubbleAxisRenderer.prototype.init=function(z){f.extend(true,this,z);var x=this._dataBounds;var t=minpidx=maxsids=maxpidx=maxr=minr=minMaxRadius=maxMaxRadius=maxMult=minMult=0;for(var o=0;o<this._series.length;o++){var y=this._series[o];var u=y._plotData;for(var n=0;n<u.length;n++){if(this.name=="xaxis"||this.name=="x2axis"){if(u[n][0]<x.min||x.min==null){x.min=u[n][0];t=o;minpidx=n;minr=u[n][2];minMaxRadius=y.maxRadius;minMult=y.autoscaleMultiplier}if(u[n][0]>x.max||x.max==null){x.max=u[n][0];maxsidx=o;maxpidx=n;maxr=u[n][2];maxMaxRadius=y.maxRadius;maxMult=y.autoscaleMultiplier}}else{if(u[n][1]<x.min||x.min==null){x.min=u[n][1];t=o;minpidx=n;minr=u[n][2];minMaxRadius=y.maxRadius;minMult=y.autoscaleMultiplier}if(u[n][1]>x.max||x.max==null){x.max=u[n][1];maxsidx=o;maxpidx=n;maxr=u[n][2];maxMaxRadius=y.maxRadius;maxMult=y.autoscaleMultiplier}}}}var r=minr/minMaxRadius;var m=maxr/maxMaxRadius;var w=x.max-x.min;var q=Math.min(this._plotDimensions.width,this._plotDimensions.height);var v=r*minMult/3*w;var p=m*maxMult/3*w;x.max+=p;x.min-=v};function e(p,v,q){p.plugins.bubbleRenderer.highlightLabelCanvas.empty();var z=p.series[v];var n=p.plugins.bubbleRenderer.highlightCanvas;var w=n._ctx;w.clearRect(0,0,w.canvas.width,w.canvas.height);z._highlightedPoint=q;p.plugins.bubbleRenderer.highlightedSeriesIndex=v;var o=z.highlightColorGenerator.get(q);var u=z.gridData[q][0],t=z.gridData[q][1],m=z.gridData[q][2];w.save();w.fillStyle=o;w.strokeStyle=o;w.lineWidth=1;w.beginPath();w.arc(u,t,m,0,2*Math.PI,0);w.closePath();w.fill();w.restore();if(z.labels[q]){p.plugins.bubbleRenderer.highlightLabel=z.labels[q].clone();p.plugins.bubbleRenderer.highlightLabel.appendTo(p.plugins.bubbleRenderer.highlightLabelCanvas);p.plugins.bubbleRenderer.highlightLabel.addClass("jqplot-bubble-label-highlight")}}function i(p){var m=p.plugins.bubbleRenderer.highlightCanvas;var o=p.plugins.bubbleRenderer.highlightedSeriesIndex;p.plugins.bubbleRenderer.highlightLabelCanvas.empty();m._ctx.clearRect(0,0,m._ctx.canvas.width,m._ctx.canvas.height);for(var n=0;n<p.series.length;n++){p.series[n]._highlightedPoint=null}p.plugins.bubbleRenderer.highlightedSeriesIndex=null;p.target.trigger("jqplotDataUnhighlight")}function a(s,p,m,v,r){if(v){var n=v.seriesIndex;var o=v.pointIndex;var q=[n,o,v.data,r.series[n].gridData[o][2]];var t=jQuery.Event("jqplotDataMouseOver");t.pageX=s.pageX;t.pageY=s.pageY;r.target.trigger(t,q);if(r.series[q[0]].highlightMouseOver&&!(q[0]==r.plugins.bubbleRenderer.highlightedSeriesIndex&&q[1]==r.series[q[0]]._highlightedPoint)){var u=jQuery.Event("jqplotDataHighlight");u.pageX=s.pageX;u.pageY=s.pageY;r.target.trigger(u,q);e(r,q[0],q[1])}}else{if(v==null){i(r)}}}function b(s,p,m,u,r){if(u){var n=u.seriesIndex;var o=u.pointIndex;var q=[n,o,u.data,r.series[n].gridData[o][2]];if(r.series[q[0]].highlightMouseDown&&!(q[0]==r.plugins.bubbleRenderer.highlightedSeriesIndex&&q[1]==r.series[q[0]]._highlightedPoint)){var t=jQuery.Event("jqplotDataHighlight");t.pageX=s.pageX;t.pageY=s.pageY;r.target.trigger(t,q);e(r,q[0],q[1])}}else{if(u==null){i(r)}}}function k(o,n,r,q,p){var m=p.plugins.bubbleRenderer.highlightedSeriesIndex;if(m!=null&&p.series[m].highlightMouseDown){i(p)}}function g(s,p,m,u,r){if(u){var n=u.seriesIndex;var o=u.pointIndex;var q=[n,o,u.data,r.series[n].gridData[o][2]];var t=jQuery.Event("jqplotDataClick");t.pageX=s.pageX;t.pageY=s.pageY;r.target.trigger(t,q)}}function l(s,p,m,v,r){if(v){var n=v.seriesIndex;var o=v.pointIndex;var q=[n,o,v.data,r.series[n].gridData[o][2]];var t=r.plugins.bubbleRenderer.highlightedSeriesIndex;if(t!=null&&r.series[t].highlightMouseDown){i(r)}var u=jQuery.Event("jqplotDataRightClick");u.pageX=s.pageX;u.pageY=s.pageY;r.target.trigger(u,q)}}function h(){this.plugins.bubbleRenderer={highlightedSeriesIndex:null};this.plugins.bubbleRenderer.highlightCanvas=new f.jqplot.GenericCanvas();this.plugins.bubbleRenderer.highlightLabel=null;this.plugins.bubbleRenderer.highlightLabelCanvas=f('<div style="position:absolute;"></div>');var q=this._gridPadding.top;var p=this._gridPadding.left;var n=this._plotDimensions.width-this._gridPadding.left-this._gridPadding.right;var m=this._plotDimensions.height-this._gridPadding.top-this._gridPadding.bottom;this.plugins.bubbleRenderer.highlightLabelCanvas.css({top:q,left:p,width:n+"px",height:m+"px"});this.eventCanvas._elem.before(this.plugins.bubbleRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-bubbleRenderer-highlight-canvas",this._plotDimensions));this.eventCanvas._elem.before(this.plugins.bubbleRenderer.highlightLabelCanvas);var o=this.plugins.bubbleRenderer.highlightCanvas.setContext()}function c(q,p,n){n=n||{};n.axesDefaults=n.axesDefaults||{};n.seriesDefaults=n.seriesDefaults||{};var m=false;if(n.seriesDefaults.renderer==f.jqplot.BubbleRenderer){m=true}else{if(n.series){for(var o=0;o<n.series.length;o++){if(n.series[o].renderer==f.jqplot.BubbleRenderer){m=true}}}}if(m){n.axesDefaults.renderer=f.jqplot.BubbleAxisRenderer;n.sortData=false}}f.jqplot.preInitHooks.push(c)})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.canvasAxisLabelRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.canvasAxisLabelRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.canvasAxisLabelRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.canvasAxisLabelRenderer.js @@ -0,0 +1,187 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.CanvasAxisLabelRenderer + * Renderer to draw axis labels with a canvas element to support advanced + * featrues such as rotated text. This renderer uses a separate rendering engine + * to draw the text on the canvas. Two modes of rendering the text are available. + * If the browser has native font support for canvas fonts (currently Mozila 3.5 + * and Safari 4), you can enable text rendering with the canvas fillText method. + * You do so by setting the "enableFontSupport" option to true. + * + * Browsers lacking native font support will have the text drawn on the canvas + * using the Hershey font metrics. Even if the "enableFontSupport" option is true + * non-supporting browsers will still render with the Hershey font. + * + */ + $.jqplot.CanvasAxisLabelRenderer = function(options) { + // Group: Properties + + // prop: angle + // angle of text, measured clockwise from x axis. + this.angle = 0; + // name of the axis associated with this tick + this.axis; + // prop: show + // wether or not to show the tick (mark and label). + this.show = true; + // prop: showLabel + // wether or not to show the label. + this.showLabel = true; + // prop: label + // label for the axis. + this.label = ''; + // prop: fontFamily + // CSS spec for the font-family css attribute. + // Applies only to browsers supporting native font rendering in the + // canvas tag. Currently Mozilla 3.5 and Safari 4. + this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'; + // prop: fontSize + // CSS spec for font size. + this.fontSize = '11pt'; + // prop: fontWeight + // CSS spec for fontWeight: normal, bold, bolder, lighter or a number 100 - 900 + this.fontWeight = 'normal'; + // prop: fontStretch + // Multiplier to condense or expand font width. + // Applies only to browsers which don't support canvas native font rendering. + this.fontStretch = 1.0; + // prop: textColor + // css spec for the color attribute. + this.textColor = '#666666'; + // prop: enableFontSupport + // true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+. + // If true, label will be drawn with canvas tag native support for fonts. + // If false, label will be drawn with Hershey font metrics. + this.enableFontSupport = true; + // prop: pt2px + // Point to pixel scaling factor, used for computing height of bounding box + // around a label. The labels text renderer has a default setting of 1.4, which + // should be suitable for most fonts. Leave as null to use default. If tops of + // letters appear clipped, increase this. If bounding box seems too big, decrease. + // This is an issue only with the native font renderering capabilities of Mozilla + // 3.5 and Safari 4 since they do not provide a method to determine the font height. + this.pt2px = null; + + this._elem; + this._ctx; + this._plotWidth; + this._plotHeight; + this._plotDimensions = {height:null, width:null}; + + $.extend(true, this, options); + + if (options.angle == null && this.axis != 'xaxis' && this.axis != 'x2axis') { + this.angle = -90; + } + + var ropts = {fontSize:this.fontSize, fontWeight:this.fontWeight, fontStretch:this.fontStretch, fillStyle:this.textColor, angle:this.getAngleRad(), fontFamily:this.fontFamily}; + if (this.pt2px) { + ropts.pt2px = this.pt2px; + } + + if (this.enableFontSupport) { + + function support_canvas_text() { + return !!(document.createElement('canvas').getContext && typeof document.createElement('canvas').getContext('2d').fillText == 'function'); + } + + if (support_canvas_text()) { + this._textRenderer = new $.jqplot.CanvasFontRenderer(ropts); + } + + else { + this._textRenderer = new $.jqplot.CanvasTextRenderer(ropts); + } + } + else { + this._textRenderer = new $.jqplot.CanvasTextRenderer(ropts); + } + }; + + $.jqplot.CanvasAxisLabelRenderer.prototype.init = function(options) { + $.extend(true, this, options); + this._textRenderer.init({fontSize:this.fontSize, fontWeight:this.fontWeight, fontStretch:this.fontStretch, fillStyle:this.textColor, angle:this.getAngleRad(), fontFamily:this.fontFamily}); + }; + + // return width along the x axis + // will check first to see if an element exists. + // if not, will return the computed text box width. + $.jqplot.CanvasAxisLabelRenderer.prototype.getWidth = function(ctx) { + if (this._elem) { + return this._elem.outerWidth(true); + } + else { + var tr = this._textRenderer; + var l = tr.getWidth(ctx); + var h = tr.getHeight(ctx); + var w = Math.abs(Math.sin(tr.angle)*h) + Math.abs(Math.cos(tr.angle)*l); + return w; + } + }; + + // return height along the y axis. + $.jqplot.CanvasAxisLabelRenderer.prototype.getHeight = function(ctx) { + if (this._elem) { + return this._elem.outerHeight(true); + } + else { + var tr = this._textRenderer; + var l = tr.getWidth(ctx); + var h = tr.getHeight(ctx); + var w = Math.abs(Math.cos(tr.angle)*h) + Math.abs(Math.sin(tr.angle)*l); + return w; + } + }; + + $.jqplot.CanvasAxisLabelRenderer.prototype.getAngleRad = function() { + var a = this.angle * Math.PI/180; + return a; + }; + + $.jqplot.CanvasAxisLabelRenderer.prototype.draw = function(ctx) { + // create a canvas here, but can't draw on it untill it is appended + // to dom for IE compatability. + var domelem = document.createElement('canvas'); + this._textRenderer.setText(this.label, ctx); + var w = this.getWidth(ctx); + var h = this.getHeight(ctx); + domelem.width = w; + domelem.height = h; + domelem.style.width = w; + domelem.style.height = h; + // domelem.style.textAlign = 'center'; + domelem.style.position = 'absolute'; + this._domelem = domelem; + this._elem = $(domelem); + this._elem.addClass('jqplot-'+this.axis+'-label'); + + return this._elem; + }; + + $.jqplot.CanvasAxisLabelRenderer.prototype.pack = function() { + if ($.jqplot.use_excanvas) { + window.G_vmlCanvasManager.init_(document); + this._domelem = window.G_vmlCanvasManager.initElement(this._domelem); + } + var ctx = this._elem.get(0).getContext("2d"); + this._textRenderer.draw(ctx, this.label); + }; + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.CanvasAxisLabelRenderer=function(b){this.angle=0;this.axis;this.show=true;this.showLabel=true;this.label="";this.fontFamily='"Trebuchet MS", Arial, Helvetica, sans-serif';this.fontSize="11pt";this.fontWeight="normal";this.fontStretch=1;this.textColor="#666666";this.enableFontSupport=true;this.pt2px=null;this._elem;this._ctx;this._plotWidth;this._plotHeight;this._plotDimensions={height:null,width:null};a.extend(true,this,b);if(b.angle==null&&this.axis!="xaxis"&&this.axis!="x2axis"){this.angle=-90}var c={fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily};if(this.pt2px){c.pt2px=this.pt2px}if(this.enableFontSupport){function d(){return !!(document.createElement("canvas").getContext&&typeof document.createElement("canvas").getContext("2d").fillText=="function")}if(d()){this._textRenderer=new a.jqplot.CanvasFontRenderer(c)}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}};a.jqplot.CanvasAxisLabelRenderer.prototype.init=function(b){a.extend(true,this,b);this._textRenderer.init({fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily})};a.jqplot.CanvasAxisLabelRenderer.prototype.getWidth=function(d){if(this._elem){return this._elem.outerWidth(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.sin(f.angle)*e)+Math.abs(Math.cos(f.angle)*c);return b}};a.jqplot.CanvasAxisLabelRenderer.prototype.getHeight=function(d){if(this._elem){return this._elem.outerHeight(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.cos(f.angle)*e)+Math.abs(Math.sin(f.angle)*c);return b}};a.jqplot.CanvasAxisLabelRenderer.prototype.getAngleRad=function(){var b=this.angle*Math.PI/180;return b};a.jqplot.CanvasAxisLabelRenderer.prototype.draw=function(c){var e=document.createElement("canvas");this._textRenderer.setText(this.label,c);var b=this.getWidth(c);var d=this.getHeight(c);e.width=b;e.height=d;e.style.width=b;e.style.height=d;e.style.position="absolute";this._domelem=e;this._elem=a(e);this._elem.addClass("jqplot-"+this.axis+"-label");return this._elem};a.jqplot.CanvasAxisLabelRenderer.prototype.pack=function(){if(a.jqplot.use_excanvas){window.G_vmlCanvasManager.init_(document);this._domelem=window.G_vmlCanvasManager.initElement(this._domelem)}var b=this._elem.get(0).getContext("2d");this._textRenderer.draw(b,this.label)}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.canvasAxisTickRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.canvasAxisTickRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.canvasAxisTickRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.canvasAxisTickRenderer.js @@ -0,0 +1,226 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.CanvasAxisTickRenderer + * Renderer to draw axis ticks with a canvas element to support advanced + * featrues such as rotated text. This renderer uses a separate rendering engine + * to draw the text on the canvas. Two modes of rendering the text are available. + * If the browser has native font support for canvas fonts (currently Mozila 3.5 + * and Safari 4), you can enable text rendering with the canvas fillText method. + * You do so by setting the "enableFontSupport" option to true. + * + * Browsers lacking native font support will have the text drawn on the canvas + * using the Hershey font metrics. Even if the "enableFontSupport" option is true + * non-supporting browsers will still render with the Hershey font. + */ + $.jqplot.CanvasAxisTickRenderer = function(options) { + // Group: Properties + + // prop: mark + // tick mark on the axis. One of 'inside', 'outside', 'cross', '' or null. + this.mark = 'outside'; + // prop: showMark + // wether or not to show the mark on the axis. + this.showMark = true; + // prop: showGridline + // wether or not to draw the gridline on the grid at this tick. + this.showGridline = true; + // prop: isMinorTick + // if this is a minor tick. + this.isMinorTick = false; + // prop: angle + // angle of text, measured clockwise from x axis. + this.angle = 0; + // prop: markSize + // Length of the tick marks in pixels. For 'cross' style, length + // will be stoked above and below axis, so total length will be twice this. + this.markSize = 4; + // prop: show + // wether or not to show the tick (mark and label). + this.show = true; + // prop: showLabel + // wether or not to show the label. + this.showLabel = true; + // prop: labelPosition + // 'auto', 'start', 'middle' or 'end'. + // Whether tick label should be positioned so the start, middle, or end + // of the tick mark. + this.labelPosition = 'auto'; + this.label = ''; + this.value = null; + this._styles = {}; + // prop: formatter + // A class of a formatter for the tick text. + // The default $.jqplot.DefaultTickFormatter uses sprintf. + this.formatter = $.jqplot.DefaultTickFormatter; + // prop: formatString + // string passed to the formatter. + this.formatString = ''; + // prop: prefix + // string appended to the tick label if no formatString is specified. + this.prefix = ''; + // prop: fontFamily + // css spec for the font-family css attribute. + this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'; + // prop: fontSize + // CSS spec for font size. + this.fontSize = '10pt'; + // prop: fontWeight + // CSS spec for fontWeight + this.fontWeight = 'normal'; + // prop: fontStretch + // Multiplier to condense or expand font width. + // Applies only to browsers which don't support canvas native font rendering. + this.fontStretch = 1.0; + // prop: textColor + // css spec for the color attribute. + this.textColor = '#666666'; + // prop: enableFontSupport + // true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+. + // If true, tick label will be drawn with canvas tag native support for fonts. + // If false, tick label will be drawn with Hershey font metrics. + this.enableFontSupport = true; + // prop: pt2px + // Point to pixel scaling factor, used for computing height of bounding box + // around a label. The labels text renderer has a default setting of 1.4, which + // should be suitable for most fonts. Leave as null to use default. If tops of + // letters appear clipped, increase this. If bounding box seems too big, decrease. + // This is an issue only with the native font renderering capabilities of Mozilla + // 3.5 and Safari 4 since they do not provide a method to determine the font height. + this.pt2px = null; + + this._elem; + this._ctx; + this._plotWidth; + this._plotHeight; + this._plotDimensions = {height:null, width:null}; + + $.extend(true, this, options); + + var ropts = {fontSize:this.fontSize, fontWeight:this.fontWeight, fontStretch:this.fontStretch, fillStyle:this.textColor, angle:this.getAngleRad(), fontFamily:this.fontFamily}; + if (this.pt2px) { + ropts.pt2px = this.pt2px; + } + + if (this.enableFontSupport) { + + function support_canvas_text() { + return !!(document.createElement('canvas').getContext && typeof document.createElement('canvas').getContext('2d').fillText == 'function'); + } + + if (support_canvas_text()) { + this._textRenderer = new $.jqplot.CanvasFontRenderer(ropts); + } + + else { + this._textRenderer = new $.jqplot.CanvasTextRenderer(ropts); + } + } + else { + this._textRenderer = new $.jqplot.CanvasTextRenderer(ropts); + } + }; + + $.jqplot.CanvasAxisTickRenderer.prototype.init = function(options) { + $.extend(true, this, options); + this._textRenderer.init({fontSize:this.fontSize, fontWeight:this.fontWeight, fontStretch:this.fontStretch, fillStyle:this.textColor, angle:this.getAngleRad(), fontFamily:this.fontFamily}); + }; + + // return width along the x axis + // will check first to see if an element exists. + // if not, will return the computed text box width. + $.jqplot.CanvasAxisTickRenderer.prototype.getWidth = function(ctx) { + if (this._elem) { + return this._elem.outerWidth(true); + } + else { + var tr = this._textRenderer; + var l = tr.getWidth(ctx); + var h = tr.getHeight(ctx); + var w = Math.abs(Math.sin(tr.angle)*h) + Math.abs(Math.cos(tr.angle)*l); + return w; + } + }; + + // return height along the y axis. + $.jqplot.CanvasAxisTickRenderer.prototype.getHeight = function(ctx) { + if (this._elem) { + return this._elem.outerHeight(true); + } + else { + var tr = this._textRenderer; + var l = tr.getWidth(ctx); + var h = tr.getHeight(ctx); + var w = Math.abs(Math.cos(tr.angle)*h) + Math.abs(Math.sin(tr.angle)*l); + return w; + } + }; + + $.jqplot.CanvasAxisTickRenderer.prototype.getAngleRad = function() { + var a = this.angle * Math.PI/180; + return a; + }; + + + $.jqplot.CanvasAxisTickRenderer.prototype.setTick = function(value, axisName, isMinor) { + this.value = value; + if (isMinor) { + this.isMinorTick = true; + } + return this; + }; + + $.jqplot.CanvasAxisTickRenderer.prototype.draw = function(ctx) { + if (!this.label) { + this.label = this.formatter(this.formatString, this.value); + } + // add prefix if needed + if (this.prefix && !this.formatString) { + this.label = this.prefix + this.label; + } + // create a canvas here, but can't draw on it untill it is appended + // to dom for IE compatability. + var domelem = document.createElement('canvas'); + this._textRenderer.setText(this.label, ctx); + var w = this.getWidth(ctx); + var h = this.getHeight(ctx); + domelem.width = w; + domelem.height = h; + domelem.style.width = w; + domelem.style.height = h; + domelem.style.textAlign = 'left'; + domelem.style.position = 'absolute'; + this._domelem = domelem; + this._elem = $(domelem); + this._elem.css(this._styles); + this._elem.addClass('jqplot-'+this.axis+'-tick'); + + return this._elem; + }; + + $.jqplot.CanvasAxisTickRenderer.prototype.pack = function() { + if ($.jqplot.use_excanvas) { + window.G_vmlCanvasManager.init_(document); + this._domelem = window.G_vmlCanvasManager.initElement(this._domelem); + } + var ctx = this._elem.get(0).getContext("2d"); + this._textRenderer.draw(ctx, this.label); + }; + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.canvasAxisTickRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.canvasAxisTickRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.canvasAxisTickRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.canvasAxisTickRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.CanvasAxisTickRenderer=function(b){this.mark="outside";this.showMark=true;this.showGridline=true;this.isMinorTick=false;this.angle=0;this.markSize=4;this.show=true;this.showLabel=true;this.labelPosition="auto";this.label="";this.value=null;this._styles={};this.formatter=a.jqplot.DefaultTickFormatter;this.formatString="";this.prefix="";this.fontFamily='"Trebuchet MS", Arial, Helvetica, sans-serif';this.fontSize="10pt";this.fontWeight="normal";this.fontStretch=1;this.textColor="#666666";this.enableFontSupport=true;this.pt2px=null;this._elem;this._ctx;this._plotWidth;this._plotHeight;this._plotDimensions={height:null,width:null};a.extend(true,this,b);var c={fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily};if(this.pt2px){c.pt2px=this.pt2px}if(this.enableFontSupport){function d(){return !!(document.createElement("canvas").getContext&&typeof document.createElement("canvas").getContext("2d").fillText=="function")}if(d()){this._textRenderer=new a.jqplot.CanvasFontRenderer(c)}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}}else{this._textRenderer=new a.jqplot.CanvasTextRenderer(c)}};a.jqplot.CanvasAxisTickRenderer.prototype.init=function(b){a.extend(true,this,b);this._textRenderer.init({fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily})};a.jqplot.CanvasAxisTickRenderer.prototype.getWidth=function(d){if(this._elem){return this._elem.outerWidth(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.sin(f.angle)*e)+Math.abs(Math.cos(f.angle)*c);return b}};a.jqplot.CanvasAxisTickRenderer.prototype.getHeight=function(d){if(this._elem){return this._elem.outerHeight(true)}else{var f=this._textRenderer;var c=f.getWidth(d);var e=f.getHeight(d);var b=Math.abs(Math.cos(f.angle)*e)+Math.abs(Math.sin(f.angle)*c);return b}};a.jqplot.CanvasAxisTickRenderer.prototype.getAngleRad=function(){var b=this.angle*Math.PI/180;return b};a.jqplot.CanvasAxisTickRenderer.prototype.setTick=function(b,d,c){this.value=b;if(c){this.isMinorTick=true}return this};a.jqplot.CanvasAxisTickRenderer.prototype.draw=function(c){if(!this.label){this.label=this.formatter(this.formatString,this.value)}if(this.prefix&&!this.formatString){this.label=this.prefix+this.label}var e=document.createElement("canvas");this._textRenderer.setText(this.label,c);var b=this.getWidth(c);var d=this.getHeight(c);e.width=b;e.height=d;e.style.width=b;e.style.height=d;e.style.textAlign="left";e.style.position="absolute";this._domelem=e;this._elem=a(e);this._elem.css(this._styles);this._elem.addClass("jqplot-"+this.axis+"-tick");return this._elem};a.jqplot.CanvasAxisTickRenderer.prototype.pack=function(){if(a.jqplot.use_excanvas){window.G_vmlCanvasManager.init_(document);this._domelem=window.G_vmlCanvasManager.initElement(this._domelem)}var b=this._elem.get(0).getContext("2d");this._textRenderer.draw(b,this.label)}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.canvasTextRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.canvasTextRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.canvasTextRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.canvasTextRenderer.js @@ -0,0 +1,408 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + // This code is a modified version of the canvastext.js code, copyright below: + // + // This code is released to the public domain by Jim Studt, 2007. + // He may keep some sort of up to date copy at http://www.federated.com/~jim/canvastext/ + // + $.jqplot.CanvasTextRenderer = function(options){ + this.fontStyle = 'normal'; // normal, italic, oblique [not implemented] + this.fontVariant = 'normal'; // normal, small caps [not implemented] + this.fontWeight = 'normal'; // normal, bold, bolder, lighter, 100 - 900 + this.fontSize = '10px'; + this.fontFamily = 'sans-serif'; + this.fontStretch = 1.0; + this.fillStyle = '#666666'; + this.angle = 0; + this.textAlign = 'start'; + this.textBaseline = 'alphabetic'; + this.text; + this.width; + this.height; + this.pt2px = 1.28; + + $.extend(true, this, options); + this.normalizedFontSize = this.normalizeFontSize(this.fontSize); + this.setHeight(); + }; + + $.jqplot.CanvasTextRenderer.prototype.init = function(options) { + $.extend(true, this, options); + this.normalizedFontSize = this.normalizeFontSize(this.fontSize); + this.setHeight(); + }; + + // convert css spec into point size + // returns float + $.jqplot.CanvasTextRenderer.prototype.normalizeFontSize = function(sz) { + sz = String(sz); + n = parseFloat(sz); + if (sz.indexOf('px') > -1) { + return n/this.pt2px; + } + else if (sz.indexOf('pt') > -1) { + return n; + } + else if (sz.indexOf('em') > -1) { + return n*12; + } + else if (sz.indexOf('%') > -1) { + return n*12/100; + } + // default to pixels; + else { + return n/this.pt2px; + } + }; + + + $.jqplot.CanvasTextRenderer.prototype.fontWeight2Float = function(w) { + // w = normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 + // return values adjusted for Hershey font. + if (Number(w)) { + return w/400; + } + else { + switch (w) { + case 'normal': + return 1; + break; + case 'bold': + return 1.75; + break; + case 'bolder': + return 2.25; + break; + case 'lighter': + return 0.75; + break; + default: + return 1; + break; + } + } + }; + + $.jqplot.CanvasTextRenderer.prototype.getText = function() { + return this.text; + }; + + $.jqplot.CanvasTextRenderer.prototype.setText = function(t, ctx) { + this.text = t; + this.setWidth(ctx); + return this; + }; + + $.jqplot.CanvasTextRenderer.prototype.getWidth = function(ctx) { + return this.width; + }; + + $.jqplot.CanvasTextRenderer.prototype.setWidth = function(ctx, w) { + if (!w) { + this.width = this.measure(ctx, this.text); + } + else { + this.width = w; + } + return this; + }; + + // return height in pixels. + $.jqplot.CanvasTextRenderer.prototype.getHeight = function(ctx) { + return this.height; + }; + + // w - height in pt + // set heigh in px + $.jqplot.CanvasTextRenderer.prototype.setHeight = function(w) { + if (!w) { + //height = this.fontSize /0.75; + this.height = this.normalizedFontSize * this.pt2px; + } + else { + this.height = w; + } + return this; + }; + + $.jqplot.CanvasTextRenderer.prototype.letter = function (ch) + { + return this.letters[ch]; + }; + + $.jqplot.CanvasTextRenderer.prototype.ascent = function() + { + return this.normalizedFontSize; + }; + + $.jqplot.CanvasTextRenderer.prototype.descent = function() + { + return 7.0*this.normalizedFontSize/25.0; + }; + + $.jqplot.CanvasTextRenderer.prototype.measure = function(ctx, str) + { + var total = 0; + var len = str.length; + + for ( i = 0; i < len; i++) { + var c = this.letter(str.charAt(i)); + if (c) { + total += c.width * this.normalizedFontSize / 25.0 * this.fontStretch; + } + } + return total; + }; + + $.jqplot.CanvasTextRenderer.prototype.draw = function(ctx,str) + { + var x = 0; + // leave room at bottom for descenders. + var y = this.height*0.72; + var total = 0; + var len = str.length; + var mag = this.normalizedFontSize / 25.0; + + ctx.save(); + var tx, ty; + + // 1st quadrant + if ((-Math.PI/2 <= this.angle && this.angle <= 0) || (Math.PI*3/2 <= this.angle && this.angle <= Math.PI*2)) { + tx = 0; + ty = -Math.sin(this.angle) * this.width; + } + // 4th quadrant + else if ((0 < this.angle && this.angle <= Math.PI/2) || (-Math.PI*2 <= this.angle && this.angle <= -Math.PI*3/2)) { + tx = Math.sin(this.angle) * this.height; + ty = 0; + } + // 2nd quadrant + else if ((-Math.PI < this.angle && this.angle < -Math.PI/2) || (Math.PI <= this.angle && this.angle <= Math.PI*3/2)) { + tx = -Math.cos(this.angle) * this.width; + ty = -Math.sin(this.angle) * this.width - Math.cos(this.angle) * this.height; + } + // 3rd quadrant + else if ((-Math.PI*3/2 < this.angle && this.angle < Math.PI) || (Math.PI/2 < this.angle && this.angle < Math.PI)) { + tx = Math.sin(this.angle) * this.height - Math.cos(this.angle)*this.width; + ty = -Math.cos(this.angle) * this.height; + } + + ctx.strokeStyle = this.fillStyle; + ctx.fillStyle = this.fillStyle; + ctx.translate(tx, ty); + ctx.rotate(this.angle); + ctx.lineCap = "round"; + // multiplier was 2.0 + var fact = (this.normalizedFontSize > 30) ? 2.0 : 2 + (30 - this.normalizedFontSize)/20; + ctx.lineWidth = fact * mag * this.fontWeight2Float(this.fontWeight); + + for ( var i = 0; i < len; i++) { + var c = this.letter( str.charAt(i)); + if ( !c) { + continue; + } + + ctx.beginPath(); + + var penUp = 1; + var needStroke = 0; + for ( var j = 0; j < c.points.length; j++) { + var a = c.points[j]; + if ( a[0] == -1 && a[1] == -1) { + penUp = 1; + continue; + } + if ( penUp) { + ctx.moveTo( x + a[0]*mag*this.fontStretch, y - a[1]*mag); + penUp = false; + } else { + ctx.lineTo( x + a[0]*mag*this.fontStretch, y - a[1]*mag); + } + } + ctx.stroke(); + x += c.width*mag*this.fontStretch; + } + ctx.restore(); + return total; + }; + + $.jqplot.CanvasTextRenderer.prototype.letters = { + ' ': { width: 16, points: [] }, + '!': { width: 10, points: [[5,21],[5,7],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]] }, + '"': { width: 16, points: [[4,21],[4,14],[-1,-1],[12,21],[12,14]] }, + '#': { width: 21, points: [[11,25],[4,-7],[-1,-1],[17,25],[10,-7],[-1,-1],[4,12],[18,12],[-1,-1],[3,6],[17,6]] }, + '$': { width: 20, points: [[8,25],[8,-4],[-1,-1],[12,25],[12,-4],[-1,-1],[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] }, + '%': { width: 24, points: [[21,21],[3,0],[-1,-1],[8,21],[10,19],[10,17],[9,15],[7,14],[5,14],[3,16],[3,18],[4,20],[6,21],[8,21],[10,20],[13,19],[16,19],[19,20],[21,21],[-1,-1],[17,7],[15,6],[14,4],[14,2],[16,0],[18,0],[20,1],[21,3],[21,5],[19,7],[17,7]] }, + '&': { width: 26, points: [[23,12],[23,13],[22,14],[21,14],[20,13],[19,11],[17,6],[15,3],[13,1],[11,0],[7,0],[5,1],[4,2],[3,4],[3,6],[4,8],[5,9],[12,13],[13,14],[14,16],[14,18],[13,20],[11,21],[9,20],[8,18],[8,16],[9,13],[11,10],[16,3],[18,1],[20,0],[22,0],[23,1],[23,2]] }, + '\'': { width: 10, points: [[5,19],[4,20],[5,21],[6,20],[6,18],[5,16],[4,15]] }, + '(': { width: 14, points: [[11,25],[9,23],[7,20],[5,16],[4,11],[4,7],[5,2],[7,-2],[9,-5],[11,-7]] }, + ')': { width: 14, points: [[3,25],[5,23],[7,20],[9,16],[10,11],[10,7],[9,2],[7,-2],[5,-5],[3,-7]] }, + '*': { width: 16, points: [[8,21],[8,9],[-1,-1],[3,18],[13,12],[-1,-1],[13,18],[3,12]] }, + '+': { width: 26, points: [[13,18],[13,0],[-1,-1],[4,9],[22,9]] }, + ',': { width: 10, points: [[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] }, + '-': { width: 18, points: [[6,9],[12,9]] }, + '.': { width: 10, points: [[5,2],[4,1],[5,0],[6,1],[5,2]] }, + '/': { width: 22, points: [[20,25],[2,-7]] }, + '0': { width: 20, points: [[9,21],[6,20],[4,17],[3,12],[3,9],[4,4],[6,1],[9,0],[11,0],[14,1],[16,4],[17,9],[17,12],[16,17],[14,20],[11,21],[9,21]] }, + '1': { width: 20, points: [[6,17],[8,18],[11,21],[11,0]] }, + '2': { width: 20, points: [[4,16],[4,17],[5,19],[6,20],[8,21],[12,21],[14,20],[15,19],[16,17],[16,15],[15,13],[13,10],[3,0],[17,0]] }, + '3': { width: 20, points: [[5,21],[16,21],[10,13],[13,13],[15,12],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] }, + '4': { width: 20, points: [[13,21],[3,7],[18,7],[-1,-1],[13,21],[13,0]] }, + '5': { width: 20, points: [[15,21],[5,21],[4,12],[5,13],[8,14],[11,14],[14,13],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] }, + '6': { width: 20, points: [[16,18],[15,20],[12,21],[10,21],[7,20],[5,17],[4,12],[4,7],[5,3],[7,1],[10,0],[11,0],[14,1],[16,3],[17,6],[17,7],[16,10],[14,12],[11,13],[10,13],[7,12],[5,10],[4,7]] }, + '7': { width: 20, points: [[17,21],[7,0],[-1,-1],[3,21],[17,21]] }, + '8': { width: 20, points: [[8,21],[5,20],[4,18],[4,16],[5,14],[7,13],[11,12],[14,11],[16,9],[17,7],[17,4],[16,2],[15,1],[12,0],[8,0],[5,1],[4,2],[3,4],[3,7],[4,9],[6,11],[9,12],[13,13],[15,14],[16,16],[16,18],[15,20],[12,21],[8,21]] }, + '9': { width: 20, points: [[16,14],[15,11],[13,9],[10,8],[9,8],[6,9],[4,11],[3,14],[3,15],[4,18],[6,20],[9,21],[10,21],[13,20],[15,18],[16,14],[16,9],[15,4],[13,1],[10,0],[8,0],[5,1],[4,3]] }, + ':': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]] }, + ';': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] }, + '<': { width: 24, points: [[20,18],[4,9],[20,0]] }, + '=': { width: 26, points: [[4,12],[22,12],[-1,-1],[4,6],[22,6]] }, + '>': { width: 24, points: [[4,18],[20,9],[4,0]] }, + '?': { width: 18, points: [[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]] }, + '@': { width: 27, points: [[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]] }, + 'A': { width: 18, points: [[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]] }, + 'B': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]] }, + 'C': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]] }, + 'D': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]] }, + 'E': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]] }, + 'F': { width: 18, points: [[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]] }, + 'G': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]] }, + 'H': { width: 22, points: [[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]] }, + 'I': { width: 8, points: [[4,21],[4,0]] }, + 'J': { width: 16, points: [[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]] }, + 'K': { width: 21, points: [[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]] }, + 'L': { width: 17, points: [[4,21],[4,0],[-1,-1],[4,0],[16,0]] }, + 'M': { width: 24, points: [[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]] }, + 'N': { width: 22, points: [[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]] }, + 'O': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]] }, + 'P': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]] }, + 'Q': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]] }, + 'R': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]] }, + 'S': { width: 20, points: [[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] }, + 'T': { width: 16, points: [[8,21],[8,0],[-1,-1],[1,21],[15,21]] }, + 'U': { width: 22, points: [[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]] }, + 'V': { width: 18, points: [[1,21],[9,0],[-1,-1],[17,21],[9,0]] }, + 'W': { width: 24, points: [[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]] }, + 'X': { width: 20, points: [[3,21],[17,0],[-1,-1],[17,21],[3,0]] }, + 'Y': { width: 18, points: [[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]] }, + 'Z': { width: 20, points: [[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]] }, + '[': { width: 14, points: [[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]] }, + '\\': { width: 14, points: [[0,21],[14,-3]] }, + ']': { width: 14, points: [[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]] }, + '^': { width: 16, points: [[6,15],[8,18],[10,15],[-1,-1],[3,12],[8,17],[13,12],[-1,-1],[8,17],[8,0]] }, + '_': { width: 16, points: [[0,-2],[16,-2]] }, + '`': { width: 10, points: [[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]] }, + 'a': { width: 19, points: [[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'b': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] }, + 'c': { width: 18, points: [[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'd': { width: 19, points: [[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'e': { width: 18, points: [[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'f': { width: 12, points: [[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]] }, + 'g': { width: 19, points: [[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'h': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] }, + 'i': { width: 8, points: [[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]] }, + 'j': { width: 10, points: [[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]] }, + 'k': { width: 17, points: [[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]] }, + 'l': { width: 8, points: [[4,21],[4,0]] }, + 'm': { width: 30, points: [[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]] }, + 'n': { width: 19, points: [[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] }, + 'o': { width: 19, points: [[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]] }, + 'p': { width: 19, points: [[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] }, + 'q': { width: 19, points: [[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'r': { width: 13, points: [[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]] }, + 's': { width: 17, points: [[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]] }, + 't': { width: 12, points: [[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]] }, + 'u': { width: 19, points: [[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]] }, + 'v': { width: 16, points: [[2,14],[8,0],[-1,-1],[14,14],[8,0]] }, + 'w': { width: 22, points: [[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]] }, + 'x': { width: 17, points: [[3,14],[14,0],[-1,-1],[14,14],[3,0]] }, + 'y': { width: 16, points: [[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]] }, + 'z': { width: 17, points: [[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]] }, + '{': { width: 14, points: [[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]] }, + '|': { width: 8, points: [[4,25],[4,-7]] }, + '}': { width: 14, points: [[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]] }, + '~': { width: 24, points: [[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]] } + }; + + $.jqplot.CanvasFontRenderer = function(options) { + options = options || {}; + if (!options.pt2px) { + options.pt2px = 1.5; + } + $.jqplot.CanvasTextRenderer.call(this, options); + }; + + $.jqplot.CanvasFontRenderer.prototype = new $.jqplot.CanvasTextRenderer({}); + $.jqplot.CanvasFontRenderer.prototype.constructor = $.jqplot.CanvasFontRenderer; + + $.jqplot.CanvasFontRenderer.prototype.measure = function(ctx, str) + { + // var fstyle = this.fontStyle+' '+this.fontVariant+' '+this.fontWeight+' '+this.fontSize+' '+this.fontFamily; + var fstyle = this.fontSize+' '+this.fontFamily; + ctx.save(); + ctx.font = fstyle; + var w = ctx.measureText(str).width; + ctx.restore(); + return w; + }; + + $.jqplot.CanvasFontRenderer.prototype.draw = function(ctx, str) + { + var x = 0; + // leave room at bottom for descenders. + var y = this.height*0.72; + //var y = 12; + + ctx.save(); + var tx, ty; + + // 1st quadrant + if ((-Math.PI/2 <= this.angle && this.angle <= 0) || (Math.PI*3/2 <= this.angle && this.angle <= Math.PI*2)) { + tx = 0; + ty = -Math.sin(this.angle) * this.width; + } + // 4th quadrant + else if ((0 < this.angle && this.angle <= Math.PI/2) || (-Math.PI*2 <= this.angle && this.angle <= -Math.PI*3/2)) { + tx = Math.sin(this.angle) * this.height; + ty = 0; + } + // 2nd quadrant + else if ((-Math.PI < this.angle && this.angle < -Math.PI/2) || (Math.PI <= this.angle && this.angle <= Math.PI*3/2)) { + tx = -Math.cos(this.angle) * this.width; + ty = -Math.sin(this.angle) * this.width - Math.cos(this.angle) * this.height; + } + // 3rd quadrant + else if ((-Math.PI*3/2 < this.angle && this.angle < Math.PI) || (Math.PI/2 < this.angle && this.angle < Math.PI)) { + tx = Math.sin(this.angle) * this.height - Math.cos(this.angle)*this.width; + ty = -Math.cos(this.angle) * this.height; + } + ctx.strokeStyle = this.fillStyle; + ctx.fillStyle = this.fillStyle; + // var fstyle = this.fontStyle+' '+this.fontVariant+' '+this.fontWeight+' '+this.fontSize+' '+this.fontFamily; + var fstyle = this.fontSize+' '+this.fontFamily; + ctx.font = fstyle; + ctx.translate(tx, ty); + ctx.rotate(this.angle); + ctx.fillText(str, x, y); + // ctx.strokeText(str, x, y); + + ctx.restore(); + }; + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.canvasTextRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.canvasTextRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.canvasTextRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.canvasTextRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.CanvasTextRenderer=function(b){this.fontStyle="normal";this.fontVariant="normal";this.fontWeight="normal";this.fontSize="10px";this.fontFamily="sans-serif";this.fontStretch=1;this.fillStyle="#666666";this.angle=0;this.textAlign="start";this.textBaseline="alphabetic";this.text;this.width;this.height;this.pt2px=1.28;a.extend(true,this,b);this.normalizedFontSize=this.normalizeFontSize(this.fontSize);this.setHeight()};a.jqplot.CanvasTextRenderer.prototype.init=function(b){a.extend(true,this,b);this.normalizedFontSize=this.normalizeFontSize(this.fontSize);this.setHeight()};a.jqplot.CanvasTextRenderer.prototype.normalizeFontSize=function(b){b=String(b);n=parseFloat(b);if(b.indexOf("px")>-1){return n/this.pt2px}else{if(b.indexOf("pt")>-1){return n}else{if(b.indexOf("em")>-1){return n*12}else{if(b.indexOf("%")>-1){return n*12/100}else{return n/this.pt2px}}}}};a.jqplot.CanvasTextRenderer.prototype.fontWeight2Float=function(b){if(Number(b)){return b/400}else{switch(b){case"normal":return 1;break;case"bold":return 1.75;break;case"bolder":return 2.25;break;case"lighter":return 0.75;break;default:return 1;break}}};a.jqplot.CanvasTextRenderer.prototype.getText=function(){return this.text};a.jqplot.CanvasTextRenderer.prototype.setText=function(c,b){this.text=c;this.setWidth(b);return this};a.jqplot.CanvasTextRenderer.prototype.getWidth=function(b){return this.width};a.jqplot.CanvasTextRenderer.prototype.setWidth=function(c,b){if(!b){this.width=this.measure(c,this.text)}else{this.width=b}return this};a.jqplot.CanvasTextRenderer.prototype.getHeight=function(b){return this.height};a.jqplot.CanvasTextRenderer.prototype.setHeight=function(b){if(!b){this.height=this.normalizedFontSize*this.pt2px}else{this.height=b}return this};a.jqplot.CanvasTextRenderer.prototype.letter=function(b){return this.letters[b]};a.jqplot.CanvasTextRenderer.prototype.ascent=function(){return this.normalizedFontSize};a.jqplot.CanvasTextRenderer.prototype.descent=function(){return 7*this.normalizedFontSize/25};a.jqplot.CanvasTextRenderer.prototype.measure=function(d,f){var e=0;var b=f.length;for(i=0;i<b;i++){var g=this.letter(f.charAt(i));if(g){e+=g.width*this.normalizedFontSize/25*this.fontStretch}}return e};a.jqplot.CanvasTextRenderer.prototype.draw=function(t,o){var s=0;var p=this.height*0.72;var q=0;var l=o.length;var k=this.normalizedFontSize/25;t.save();var h,f;if((-Math.PI/2<=this.angle&&this.angle<=0)||(Math.PI*3/2<=this.angle&&this.angle<=Math.PI*2)){h=0;f=-Math.sin(this.angle)*this.width}else{if((0<this.angle&&this.angle<=Math.PI/2)||(-Math.PI*2<=this.angle&&this.angle<=-Math.PI*3/2)){h=Math.sin(this.angle)*this.height;f=0}else{if((-Math.PI<this.angle&&this.angle<-Math.PI/2)||(Math.PI<=this.angle&&this.angle<=Math.PI*3/2)){h=-Math.cos(this.angle)*this.width;f=-Math.sin(this.angle)*this.width-Math.cos(this.angle)*this.height}else{if((-Math.PI*3/2<this.angle&&this.angle<Math.PI)||(Math.PI/2<this.angle&&this.angle<Math.PI)){h=Math.sin(this.angle)*this.height-Math.cos(this.angle)*this.width;f=-Math.cos(this.angle)*this.height}}}}t.strokeStyle=this.fillStyle;t.fillStyle=this.fillStyle;t.translate(h,f);t.rotate(this.angle);t.lineCap="round";var u=(this.normalizedFontSize>30)?2:2+(30-this.normalizedFontSize)/20;t.lineWidth=u*k*this.fontWeight2Float(this.fontWeight);for(var g=0;g<l;g++){var m=this.letter(o.charAt(g));if(!m){continue}t.beginPath();var e=1;var b=0;for(var d=0;d<m.points.length;d++){var r=m.points[d];if(r[0]==-1&&r[1]==-1){e=1;continue}if(e){t.moveTo(s+r[0]*k*this.fontStretch,p-r[1]*k);e=false}else{t.lineTo(s+r[0]*k*this.fontStretch,p-r[1]*k)}}t.stroke();s+=m.width*k*this.fontStretch}t.restore();return q};a.jqplot.CanvasTextRenderer.prototype.letters={" ":{width:16,points:[]},"!":{width:10,points:[[5,21],[5,7],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]]},'"':{width:16,points:[[4,21],[4,14],[-1,-1],[12,21],[12,14]]},"#":{width:21,points:[[11,25],[4,-7],[-1,-1],[17,25],[10,-7],[-1,-1],[4,12],[18,12],[-1,-1],[3,6],[17,6]]},"$":{width:20,points:[[8,25],[8,-4],[-1,-1],[12,25],[12,-4],[-1,-1],[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},"%":{width:24,points:[[21,21],[3,0],[-1,-1],[8,21],[10,19],[10,17],[9,15],[7,14],[5,14],[3,16],[3,18],[4,20],[6,21],[8,21],[10,20],[13,19],[16,19],[19,20],[21,21],[-1,-1],[17,7],[15,6],[14,4],[14,2],[16,0],[18,0],[20,1],[21,3],[21,5],[19,7],[17,7]]},"&":{width:26,points:[[23,12],[23,13],[22,14],[21,14],[20,13],[19,11],[17,6],[15,3],[13,1],[11,0],[7,0],[5,1],[4,2],[3,4],[3,6],[4,8],[5,9],[12,13],[13,14],[14,16],[14,18],[13,20],[11,21],[9,20],[8,18],[8,16],[9,13],[11,10],[16,3],[18,1],[20,0],[22,0],[23,1],[23,2]]},"'":{width:10,points:[[5,19],[4,20],[5,21],[6,20],[6,18],[5,16],[4,15]]},"(":{width:14,points:[[11,25],[9,23],[7,20],[5,16],[4,11],[4,7],[5,2],[7,-2],[9,-5],[11,-7]]},")":{width:14,points:[[3,25],[5,23],[7,20],[9,16],[10,11],[10,7],[9,2],[7,-2],[5,-5],[3,-7]]},"*":{width:16,points:[[8,21],[8,9],[-1,-1],[3,18],[13,12],[-1,-1],[13,18],[3,12]]},"+":{width:26,points:[[13,18],[13,0],[-1,-1],[4,9],[22,9]]},",":{width:10,points:[[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]]},"-":{width:18,points:[[6,9],[12,9]]},".":{width:10,points:[[5,2],[4,1],[5,0],[6,1],[5,2]]},"/":{width:22,points:[[20,25],[2,-7]]},"0":{width:20,points:[[9,21],[6,20],[4,17],[3,12],[3,9],[4,4],[6,1],[9,0],[11,0],[14,1],[16,4],[17,9],[17,12],[16,17],[14,20],[11,21],[9,21]]},"1":{width:20,points:[[6,17],[8,18],[11,21],[11,0]]},"2":{width:20,points:[[4,16],[4,17],[5,19],[6,20],[8,21],[12,21],[14,20],[15,19],[16,17],[16,15],[15,13],[13,10],[3,0],[17,0]]},"3":{width:20,points:[[5,21],[16,21],[10,13],[13,13],[15,12],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]]},"4":{width:20,points:[[13,21],[3,7],[18,7],[-1,-1],[13,21],[13,0]]},"5":{width:20,points:[[15,21],[5,21],[4,12],[5,13],[8,14],[11,14],[14,13],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]]},"6":{width:20,points:[[16,18],[15,20],[12,21],[10,21],[7,20],[5,17],[4,12],[4,7],[5,3],[7,1],[10,0],[11,0],[14,1],[16,3],[17,6],[17,7],[16,10],[14,12],[11,13],[10,13],[7,12],[5,10],[4,7]]},"7":{width:20,points:[[17,21],[7,0],[-1,-1],[3,21],[17,21]]},"8":{width:20,points:[[8,21],[5,20],[4,18],[4,16],[5,14],[7,13],[11,12],[14,11],[16,9],[17,7],[17,4],[16,2],[15,1],[12,0],[8,0],[5,1],[4,2],[3,4],[3,7],[4,9],[6,11],[9,12],[13,13],[15,14],[16,16],[16,18],[15,20],[12,21],[8,21]]},"9":{width:20,points:[[16,14],[15,11],[13,9],[10,8],[9,8],[6,9],[4,11],[3,14],[3,15],[4,18],[6,20],[9,21],[10,21],[13,20],[15,18],[16,14],[16,9],[15,4],[13,1],[10,0],[8,0],[5,1],[4,3]]},":":{width:10,points:[[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]]},";":{width:10,points:[[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]]},"<":{width:24,points:[[20,18],[4,9],[20,0]]},"=":{width:26,points:[[4,12],[22,12],[-1,-1],[4,6],[22,6]]},">":{width:24,points:[[4,18],[20,9],[4,0]]},"?":{width:18,points:[[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]]},"@":{width:27,points:[[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]]},A:{width:18,points:[[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]]},B:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]]},C:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]]},D:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]]},E:{width:19,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]]},F:{width:18,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]]},G:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]]},H:{width:22,points:[[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]]},I:{width:8,points:[[4,21],[4,0]]},J:{width:16,points:[[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]]},K:{width:21,points:[[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]]},L:{width:17,points:[[4,21],[4,0],[-1,-1],[4,0],[16,0]]},M:{width:24,points:[[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]]},N:{width:22,points:[[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]]},O:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]]},P:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]]},Q:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]]},R:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]]},S:{width:20,points:[[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},T:{width:16,points:[[8,21],[8,0],[-1,-1],[1,21],[15,21]]},U:{width:22,points:[[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]]},V:{width:18,points:[[1,21],[9,0],[-1,-1],[17,21],[9,0]]},W:{width:24,points:[[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]]},X:{width:20,points:[[3,21],[17,0],[-1,-1],[17,21],[3,0]]},Y:{width:18,points:[[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]]},Z:{width:20,points:[[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]]},"[":{width:14,points:[[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]]},"\\":{width:14,points:[[0,21],[14,-3]]},"]":{width:14,points:[[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]]},"^":{width:16,points:[[6,15],[8,18],[10,15],[-1,-1],[3,12],[8,17],[13,12],[-1,-1],[8,17],[8,0]]},_:{width:16,points:[[0,-2],[16,-2]]},"`":{width:10,points:[[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]]},a:{width:19,points:[[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},b:{width:19,points:[[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},c:{width:18,points:[[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},d:{width:19,points:[[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},e:{width:18,points:[[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},f:{width:12,points:[[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]]},g:{width:19,points:[[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},h:{width:19,points:[[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},i:{width:8,points:[[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]]},j:{width:10,points:[[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]]},k:{width:17,points:[[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]]},l:{width:8,points:[[4,21],[4,0]]},m:{width:30,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]]},n:{width:19,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},o:{width:19,points:[[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]]},p:{width:19,points:[[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},q:{width:19,points:[[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},r:{width:13,points:[[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]]},s:{width:17,points:[[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]]},t:{width:12,points:[[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]]},u:{width:19,points:[[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]]},v:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0]]},w:{width:22,points:[[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]]},x:{width:17,points:[[3,14],[14,0],[-1,-1],[14,14],[3,0]]},y:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]]},z:{width:17,points:[[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]]},"{":{width:14,points:[[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]]},"|":{width:8,points:[[4,25],[4,-7]]},"}":{width:14,points:[[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]]},"~":{width:24,points:[[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]]}};a.jqplot.CanvasFontRenderer=function(b){b=b||{};if(!b.pt2px){b.pt2px=1.5}a.jqplot.CanvasTextRenderer.call(this,b)};a.jqplot.CanvasFontRenderer.prototype=new a.jqplot.CanvasTextRenderer({});a.jqplot.CanvasFontRenderer.prototype.constructor=a.jqplot.CanvasFontRenderer;a.jqplot.CanvasFontRenderer.prototype.measure=function(c,e){var d=this.fontSize+" "+this.fontFamily;c.save();c.font=d;var b=c.measureText(e).width;c.restore();return b};a.jqplot.CanvasFontRenderer.prototype.draw=function(e,g){var c=0;var h=this.height*0.72;e.save();var d,b;if((-Math.PI/2<=this.angle&&this.angle<=0)||(Math.PI*3/2<=this.angle&&this.angle<=Math.PI*2)){d=0;b=-Math.sin(this.angle)*this.width}else{if((0<this.angle&&this.angle<=Math.PI/2)||(-Math.PI*2<=this.angle&&this.angle<=-Math.PI*3/2)){d=Math.sin(this.angle)*this.height;b=0}else{if((-Math.PI<this.angle&&this.angle<-Math.PI/2)||(Math.PI<=this.angle&&this.angle<=Math.PI*3/2)){d=-Math.cos(this.angle)*this.width;b=-Math.sin(this.angle)*this.width-Math.cos(this.angle)*this.height}else{if((-Math.PI*3/2<this.angle&&this.angle<Math.PI)||(Math.PI/2<this.angle&&this.angle<Math.PI)){d=Math.sin(this.angle)*this.height-Math.cos(this.angle)*this.width;b=-Math.cos(this.angle)*this.height}}}}e.strokeStyle=this.fillStyle;e.fillStyle=this.fillStyle;var f=this.fontSize+" "+this.fontFamily;e.font=f;e.translate(d,b);e.rotate(this.angle);e.fillText(g,c,h);e.restore()}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.categoryAxisRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.categoryAxisRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.categoryAxisRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.categoryAxisRenderer.js @@ -0,0 +1,621 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * class: $.jqplot.CategoryAxisRenderer + * A plugin for jqPlot to render a category style axis, with equal pixel spacing between y data values of a series. + * + * To use this renderer, include the plugin in your source + * > <script type="text/javascript" language="javascript" src="plugins/jqplot.categoryAxisRenderer.js"></script> + * + * and supply the appropriate options to your plot + * + * > {axes:{xaxis:{renderer:$.jqplot.CategoryAxisRenderer}}} + **/ + $.jqplot.CategoryAxisRenderer = function(options) { + $.jqplot.LinearAxisRenderer.call(this); + // prop: sortMergedLabels + // True to sort tick labels when labels are created by merging + // x axis values from multiple series. That is, say you have + // two series like: + // > line1 = [[2006, 4], [2008, 9], [2009, 16]]; + // > line2 = [[2006, 3], [2007, 7], [2008, 6]]; + // If no label array is specified, tick labels will be collected + // from the x values of the series. With sortMergedLabels + // set to true, tick labels will be: + // > [2006, 2007, 2008, 2009] + // With sortMergedLabels set to false, tick labels will be: + // > [2006, 2008, 2009, 2007] + // + // Note, this property is specified on the renderOptions for the + // axes when creating a plot: + // > axes:{xaxis:{renderer:$.jqplot.CategoryAxisRenderer, rendererOptions:{sortMergedLabels:true}}} + this.sortMergedLabels = false; + }; + + $.jqplot.CategoryAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.CategoryAxisRenderer.prototype.constructor = $.jqplot.CategoryAxisRenderer; + + $.jqplot.CategoryAxisRenderer.prototype.init = function(options){ + this.groups = 1; + this.groupLabels = []; + this._groupLabels = []; + this._grouped = false; + this._barsPerGroup = null; + // prop: tickRenderer + // A class of a rendering engine for creating the ticks labels displayed on the plot, + // See <$.jqplot.AxisTickRenderer>. + // this.tickRenderer = $.jqplot.AxisTickRenderer; + // this.labelRenderer = $.jqplot.AxisLabelRenderer; + $.extend(true, this, {tickOptions:{formatString:'%d'}}, options); + var db = this._dataBounds; + // Go through all the series attached to this axis and find + // the min/max bounds for this axis. + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + if (s.groups) { + this.groups = s.groups; + } + var d = s.data; + + for (var j=0; j<d.length; j++) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + if (d[j][0] < db.min || db.min == null) { + db.min = d[j][0]; + } + if (d[j][0] > db.max || db.max == null) { + db.max = d[j][0]; + } + } + else { + if (d[j][1] < db.min || db.min == null) { + db.min = d[j][1]; + } + if (d[j][1] > db.max || db.max == null) { + db.max = d[j][1]; + } + } + } + } + + if (this.groupLabels.length) { + this.groups = this.groupLabels.length; + } + }; + + + $.jqplot.CategoryAxisRenderer.prototype.createTicks = function() { + // we're are operating on an axis here + var ticks = this._ticks; + var userTicks = this.ticks; + var name = this.name; + // databounds were set on axis initialization. + var db = this._dataBounds; + var dim, interval; + var min, max; + var pos1, pos2; + var tt, i; + + // if we already have ticks, use them. + if (userTicks.length) { + // adjust with blanks if we have groups + if (this.groups > 1 && !this._grouped) { + var l = userTicks.length; + var skip = parseInt(l/this.groups, 10); + var count = 0; + for (var i=skip; i<l; i+=skip) { + userTicks.splice(i+count, 0, ' '); + count++; + } + this._grouped = true; + } + this.min = 0.5; + this.max = userTicks.length + 0.5; + var range = this.max - this.min; + this.numberTicks = 2*userTicks.length + 1; + for (i=0; i<userTicks.length; i++){ + tt = this.min + 2 * i * range / (this.numberTicks-1); + // need a marker before and after the tick + var t = new this.tickRenderer(this.tickOptions); + t.showLabel = false; + // t.showMark = true; + t.setTick(tt, this.name); + this._ticks.push(t); + var t = new this.tickRenderer(this.tickOptions); + t.label = userTicks[i]; + // t.showLabel = true; + t.showMark = false; + t.showGridline = false; + t.setTick(tt+0.5, this.name); + this._ticks.push(t); + } + // now add the last tick at the end + var t = new this.tickRenderer(this.tickOptions); + t.showLabel = false; + // t.showMark = true; + t.setTick(tt+1, this.name); + this._ticks.push(t); + } + + // we don't have any ticks yet, let's make some! + else { + if (name == 'xaxis' || name == 'x2axis') { + dim = this._plotDimensions.width; + } + else { + dim = this._plotDimensions.height; + } + + // if min, max and number of ticks specified, user can't specify interval. + if (this.min != null && this.max != null && this.numberTicks != null) { + this.tickInterval = null; + } + + // if max, min, and interval specified and interval won't fit, ignore interval. + if (this.min != null && this.max != null && this.tickInterval != null) { + if (parseInt((this.max-this.min)/this.tickInterval, 10) != (this.max-this.min)/this.tickInterval) { + this.tickInterval = null; + } + } + + // find out how many categories are in the lines and collect labels + var labels = []; + var numcats = 0; + var min = 0.5; + var max, val; + var isMerged = false; + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + for (var j=0; j<s.data.length; j++) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + val = s.data[j][0]; + } + else { + val = s.data[j][1]; + } + if ($.inArray(val, labels) == -1) { + isMerged = true; + numcats += 1; + labels.push(val); + } + } + } + + if (isMerged && this.sortMergedLabels) { + labels.sort(function(a,b) { return a - b; }); + } + + // keep a reference to these tick labels to use for redrawing plot (see bug #57) + this.ticks = labels; + + // now bin the data values to the right lables. + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + for (var j=0; j<s.data.length; j++) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + val = s.data[j][0]; + } + else { + val = s.data[j][1]; + } + // for category axis, force the values into category bins. + // we should have the value in the label array now. + var idx = $.inArray(val, labels)+1; + if (this.name == 'xaxis' || this.name == 'x2axis') { + s.data[j][0] = idx; + } + else { + s.data[j][1] = idx; + } + } + } + + // adjust with blanks if we have groups + if (this.groups > 1 && !this._grouped) { + var l = labels.length; + var skip = parseInt(l/this.groups, 10); + var count = 0; + for (var i=skip; i<l; i+=skip+1) { + labels[i] = ' '; + } + this._grouped = true; + } + + max = numcats + 0.5; + if (this.numberTicks == null) { + this.numberTicks = 2*numcats + 1; + } + + var range = max - min; + this.min = min; + this.max = max; + var track = 0; + + // todo: adjust this so more ticks displayed. + var maxVisibleTicks = parseInt(3+dim/20, 10); + var skip = parseInt(numcats/maxVisibleTicks, 10); + + if (this.tickInterval == null) { + + this.tickInterval = range / (this.numberTicks-1); + + } + // if tickInterval is specified, we will ignore any computed maximum. + for (var i=0; i<this.numberTicks; i++){ + tt = this.min + i * this.tickInterval; + var t = new this.tickRenderer(this.tickOptions); + // if even tick, it isn't a category, it's a divider + if (i/2 == parseInt(i/2, 10)) { + t.showLabel = false; + t.showMark = true; + } + else { + if (skip>0 && track<skip) { + t.showLabel = false; + track += 1; + } + else { + t.showLabel = true; + track = 0; + } + t.label = t.formatter(t.formatString, labels[(i-1)/2]); + t.showMark = false; + t.showGridline = false; + } + t.setTick(tt, this.name); + this._ticks.push(t); + } + } + + }; + + // called with scope of axis + $.jqplot.CategoryAxisRenderer.prototype.draw = function(ctx) { + if (this.show) { + // populate the axis label and value properties. + // createTicks is a method on the renderer, but + // call it within the scope of the axis. + this.renderer.createTicks.call(this); + // fill a div with axes labels in the right direction. + // Need to pregenerate each axis to get it's bounds and + // position it and the labels correctly on the plot. + var dim=0; + var temp; + // Added for theming. + if (this._elem) { + this._elem.empty(); + } + + this._elem = this._elem || $('<div class="jqplot-axis jqplot-'+this.name+'" style="position:absolute;"></div>'); + + if (this.name == 'xaxis' || this.name == 'x2axis') { + this._elem.width(this._plotDimensions.width); + } + else { + this._elem.height(this._plotDimensions.height); + } + + // create a _label object. + this.labelOptions.axis = this.name; + this._label = new this.labelRenderer(this.labelOptions); + if (this._label.show) { + var elem = this._label.draw(ctx); + elem.appendTo(this._elem); + } + + var t = this._ticks; + for (var i=0; i<t.length; i++) { + var tick = t[i]; + if (tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { + var elem = tick.draw(ctx); + elem.appendTo(this._elem); + } + } + + this._groupLabels = []; + // now make group labels + for (var i=0; i<this.groupLabels.length; i++) + { + var elem = $('<div style="position:absolute;" class="jqplot-'+this.name+'-groupLabel"></div>'); + elem.html(this.groupLabels[i]); + this._groupLabels.push(elem); + elem.appendTo(this._elem); + } + } + return this._elem; + }; + + // called with scope of axis + $.jqplot.CategoryAxisRenderer.prototype.set = function() { + var dim = 0; + var temp; + var w = 0; + var h = 0; + var lshow = (this._label == null) ? false : this._label.show; + if (this.show) { + var t = this._ticks; + for (var i=0; i<t.length; i++) { + var tick = t[i]; + if (tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + temp = tick._elem.outerHeight(true); + } + else { + temp = tick._elem.outerWidth(true); + } + if (temp > dim) { + dim = temp; + } + } + } + + var dim2 = 0; + for (var i=0; i<this._groupLabels.length; i++) { + var l = this._groupLabels[i]; + if (this.name == 'xaxis' || this.name == 'x2axis') { + temp = l.outerHeight(true); + } + else { + temp = l.outerWidth(true); + } + if (temp > dim2) { + dim2 = temp; + } + } + + if (lshow) { + w = this._label._elem.outerWidth(true); + h = this._label._elem.outerHeight(true); + } + if (this.name == 'xaxis') { + dim += dim2 + h; + this._elem.css({'height':dim+'px', left:'0px', bottom:'0px'}); + } + else if (this.name == 'x2axis') { + dim += dim2 + h; + this._elem.css({'height':dim+'px', left:'0px', top:'0px'}); + } + else if (this.name == 'yaxis') { + dim += dim2 + w; + this._elem.css({'width':dim+'px', left:'0px', top:'0px'}); + if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { + this._label._elem.css('width', w+'px'); + } + } + else { + dim += dim2 + w; + this._elem.css({'width':dim+'px', right:'0px', top:'0px'}); + if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { + this._label._elem.css('width', w+'px'); + } + } + } + }; + + // called with scope of axis + $.jqplot.CategoryAxisRenderer.prototype.pack = function(pos, offsets) { + var ticks = this._ticks; + var max = this.max; + var min = this.min; + var offmax = offsets.max; + var offmin = offsets.min; + var lshow = (this._label == null) ? false : this._label.show; + + for (var p in pos) { + this._elem.css(p, pos[p]); + } + + this._offsets = offsets; + // pixellength will be + for x axes and - for y axes becasue pixels always measured from top left. + var pixellength = offmax - offmin; + var unitlength = max - min; + + // point to unit and unit to point conversions references to Plot DOM element top left corner. + this.p2u = function(p){ + return (p - offmin) * unitlength / pixellength + min; + }; + + this.u2p = function(u){ + return (u - min) * pixellength / unitlength + offmin; + }; + + if (this.name == 'xaxis' || this.name == 'x2axis'){ + this.series_u2p = function(u){ + return (u - min) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + min; + }; + } + + else { + this.series_u2p = function(u){ + return (u - max) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + max; + }; + } + + if (this.show) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + for (i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + // will need to adjust auto positioning based on which axis this is. + var temp = (this.name == 'xaxis') ? 1 : -1; + switch (t.labelPosition) { + case 'auto': + // position at end + if (temp * t.angle < 0) { + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + } + // position at start + else { + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + } + break; + case 'end': + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + case 'start': + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + break; + case 'middle': + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + default: + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + } + } + else { + shim = -t.getWidth()/2; + } + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('left', val); + t.pack(); + } + } + + var labeledge=['bottom', 0]; + if (lshow) { + var w = this._label._elem.outerWidth(true); + this._label._elem.css('left', offmin + pixellength/2 - w/2 + 'px'); + if (this.name == 'xaxis') { + this._label._elem.css('bottom', '0px'); + labeledge = ['bottom', this._label._elem.outerHeight(true)]; + } + else { + this._label._elem.css('top', '0px'); + labeledge = ['top', this._label._elem.outerHeight(true)]; + } + this._label.pack(); + } + + // draw the group labels + var step = parseInt(this._ticks.length/this.groups, 10); + for (i=0; i<this._groupLabels.length; i++) { + var mid = 0; + var count = 0; + for (var j=i*step; j<=(i+1)*step; j++) { + if (this._ticks[j]._elem && this._ticks[j].label != " ") { + var t = this._ticks[j]._elem; + var p = t.position(); + mid += p.left + t.outerWidth(true)/2; + count++; + } + } + mid = mid/count; + this._groupLabels[i].css({'left':(mid - this._groupLabels[i].outerWidth(true)/2)}); + this._groupLabels[i].css(labeledge[0], labeledge[1]); + } + } + else { + for (i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + // will need to adjust auto positioning based on which axis this is. + var temp = (this.name == 'yaxis') ? 1 : -1; + switch (t.labelPosition) { + case 'auto': + // position at end + case 'end': + if (temp * t.angle < 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'start': + if (t.angle > 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'middle': + // if (t.angle > 0) { + // shim = -t.getHeight()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + // } + // else { + // shim = -t.getHeight()/2 - t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + // } + shim = -t.getHeight()/2; + break; + default: + shim = -t.getHeight()/2; + break; + } + } + else { + shim = -t.getHeight()/2; + } + + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('top', val); + t.pack(); + } + } + + var labeledge=['left', 0]; + if (lshow) { + var h = this._label._elem.outerHeight(true); + this._label._elem.css('top', offmax - pixellength/2 - h/2 + 'px'); + if (this.name == 'yaxis') { + this._label._elem.css('left', '0px'); + labeledge = ['left', this._label._elem.outerWidth(true)]; + } + else { + this._label._elem.css('right', '0px'); + labeledge = ['right', this._label._elem.outerWidth(true)]; + } + this._label.pack(); + } + + // draw the group labels, position top here, do left after label position. + var step = parseInt(this._ticks.length/this.groups, 10); + for (i=0; i<this._groupLabels.length; i++) { + var mid = 0; + var count = 0; + for (var j=i*step; j<=(i+1)*step; j++) { + if (this._ticks[j]._elem && this._ticks[j].label != " ") { + var t = this._ticks[j]._elem; + var p = t.position(); + mid += p.top + t.outerHeight()/2; + count++; + } + } + mid = mid/count; + this._groupLabels[i].css({'top':mid - this._groupLabels[i].outerHeight()/2}); + this._groupLabels[i].css(labeledge[0], labeledge[1]); + + } + } + } + }; + + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.categoryAxisRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.categoryAxisRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.categoryAxisRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.categoryAxisRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.CategoryAxisRenderer=function(b){a.jqplot.LinearAxisRenderer.call(this);this.sortMergedLabels=false};a.jqplot.CategoryAxisRenderer.prototype=new a.jqplot.LinearAxisRenderer();a.jqplot.CategoryAxisRenderer.prototype.constructor=a.jqplot.CategoryAxisRenderer;a.jqplot.CategoryAxisRenderer.prototype.init=function(e){this.groups=1;this.groupLabels=[];this._groupLabels=[];this._grouped=false;this._barsPerGroup=null;a.extend(true,this,{tickOptions:{formatString:"%d"}},e);var b=this._dataBounds;for(var f=0;f<this._series.length;f++){var g=this._series[f];if(g.groups){this.groups=g.groups}var h=g.data;for(var c=0;c<h.length;c++){if(this.name=="xaxis"||this.name=="x2axis"){if(h[c][0]<b.min||b.min==null){b.min=h[c][0]}if(h[c][0]>b.max||b.max==null){b.max=h[c][0]}}else{if(h[c][1]<b.min||b.min==null){b.min=h[c][1]}if(h[c][1]>b.max||b.max==null){b.max=h[c][1]}}}}if(this.groupLabels.length){this.groups=this.groupLabels.length}};a.jqplot.CategoryAxisRenderer.prototype.createTicks=function(){var D=this._ticks;var z=this.ticks;var F=this.name;var C=this._dataBounds;var v,A;var q,w;var d,c;var b,x;if(z.length){if(this.groups>1&&!this._grouped){var r=z.length;var p=parseInt(r/this.groups,10);var e=0;for(var x=p;x<r;x+=p){z.splice(x+e,0," ");e++}this._grouped=true}this.min=0.5;this.max=z.length+0.5;var m=this.max-this.min;this.numberTicks=2*z.length+1;for(x=0;x<z.length;x++){b=this.min+2*x*m/(this.numberTicks-1);var h=new this.tickRenderer(this.tickOptions);h.showLabel=false;h.setTick(b,this.name);this._ticks.push(h);var h=new this.tickRenderer(this.tickOptions);h.label=z[x];h.showMark=false;h.showGridline=false;h.setTick(b+0.5,this.name);this._ticks.push(h)}var h=new this.tickRenderer(this.tickOptions);h.showLabel=false;h.setTick(b+1,this.name);this._ticks.push(h)}else{if(F=="xaxis"||F=="x2axis"){v=this._plotDimensions.width}else{v=this._plotDimensions.height}if(this.min!=null&&this.max!=null&&this.numberTicks!=null){this.tickInterval=null}if(this.min!=null&&this.max!=null&&this.tickInterval!=null){if(parseInt((this.max-this.min)/this.tickInterval,10)!=(this.max-this.min)/this.tickInterval){this.tickInterval=null}}var y=[];var B=0;var q=0.5;var w,E;var f=false;for(var x=0;x<this._series.length;x++){var k=this._series[x];for(var u=0;u<k.data.length;u++){if(this.name=="xaxis"||this.name=="x2axis"){E=k.data[u][0]}else{E=k.data[u][1]}if(a.inArray(E,y)==-1){f=true;B+=1;y.push(E)}}}if(f&&this.sortMergedLabels){y.sort(function(l,j){return l-j})}this.ticks=y;for(var x=0;x<this._series.length;x++){var k=this._series[x];for(var u=0;u<k.data.length;u++){if(this.name=="xaxis"||this.name=="x2axis"){E=k.data[u][0]}else{E=k.data[u][1]}var n=a.inArray(E,y)+1;if(this.name=="xaxis"||this.name=="x2axis"){k.data[u][0]=n}else{k.data[u][1]=n}}}if(this.groups>1&&!this._grouped){var r=y.length;var p=parseInt(r/this.groups,10);var e=0;for(var x=p;x<r;x+=p+1){y[x]=" "}this._grouped=true}w=B+0.5;if(this.numberTicks==null){this.numberTicks=2*B+1}var m=w-q;this.min=q;this.max=w;var o=0;var g=parseInt(3+v/20,10);var p=parseInt(B/g,10);if(this.tickInterval==null){this.tickInterval=m/(this.numberTicks-1)}for(var x=0;x<this.numberTicks;x++){b=this.min+x*this.tickInterval;var h=new this.tickRenderer(this.tickOptions);if(x/2==parseInt(x/2,10)){h.showLabel=false;h.showMark=true}else{if(p>0&&o<p){h.showLabel=false;o+=1}else{h.showLabel=true;o=0}h.label=h.formatter(h.formatString,y[(x-1)/2]);h.showMark=false;h.showGridline=false}h.setTick(b,this.name);this._ticks.push(h)}}};a.jqplot.CategoryAxisRenderer.prototype.draw=function(b){if(this.show){this.renderer.createTicks.call(this);var h=0;var c;if(this._elem){this._elem.empty()}this._elem=this._elem||a('<div class="jqplot-axis jqplot-'+this.name+'" style="position:absolute;"></div>');if(this.name=="xaxis"||this.name=="x2axis"){this._elem.width(this._plotDimensions.width)}else{this._elem.height(this._plotDimensions.height)}this.labelOptions.axis=this.name;this._label=new this.labelRenderer(this.labelOptions);if(this._label.show){var g=this._label.draw(b);g.appendTo(this._elem)}var f=this._ticks;for(var e=0;e<f.length;e++){var d=f[e];if(d.showLabel&&(!d.isMinorTick||this.showMinorTicks)){var g=d.draw(b);g.appendTo(this._elem)}}this._groupLabels=[];for(var e=0;e<this.groupLabels.length;e++){var g=a('<div style="position:absolute;" class="jqplot-'+this.name+'-groupLabel"></div>');g.html(this.groupLabels[e]);this._groupLabels.push(g);g.appendTo(this._elem)}}return this._elem};a.jqplot.CategoryAxisRenderer.prototype.set=function(){var e=0;var m;var k=0;var f=0;var d=(this._label==null)?false:this._label.show;if(this.show){var n=this._ticks;for(var c=0;c<n.length;c++){var g=n[c];if(g.showLabel&&(!g.isMinorTick||this.showMinorTicks)){if(this.name=="xaxis"||this.name=="x2axis"){m=g._elem.outerHeight(true)}else{m=g._elem.outerWidth(true)}if(m>e){e=m}}}var j=0;for(var c=0;c<this._groupLabels.length;c++){var b=this._groupLabels[c];if(this.name=="xaxis"||this.name=="x2axis"){m=b.outerHeight(true)}else{m=b.outerWidth(true)}if(m>j){j=m}}if(d){k=this._label._elem.outerWidth(true);f=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){e+=j+f;this._elem.css({height:e+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){e+=j+f;this._elem.css({height:e+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){e+=j+k;this._elem.css({width:e+"px",left:"0px",top:"0px"});if(d&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",k+"px")}}else{e+=j+k;this._elem.css({width:e+"px",right:"0px",top:"0px"});if(d&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",k+"px")}}}}}};a.jqplot.CategoryAxisRenderer.prototype.pack=function(e,c){var B=this._ticks;var v=this.max;var s=this.min;var n=c.max;var l=c.min;var q=(this._label==null)?false:this._label.show;for(var r in e){this._elem.css(r,e[r])}this._offsets=c;var g=n-l;var k=v-s;this.p2u=function(h){return(h-l)*k/g+s};this.u2p=function(h){return(h-s)*g/k+l};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(h){return(h-s)*g/k};this.series_p2u=function(h){return h*k/g+s}}else{this.series_u2p=function(h){return(h-v)*g/k};this.series_p2u=function(h){return h*k/g+v}}if(this.show){if(this.name=="xaxis"||this.name=="x2axis"){for(i=0;i<B.length;i++){var o=B[i];if(o.show&&o.showLabel){var b;if(o.constructor==a.jqplot.CanvasAxisTickRenderer&&o.angle){var z=(this.name=="xaxis")?1:-1;switch(o.labelPosition){case"auto":if(z*o.angle<0){b=-o.getWidth()+o._textRenderer.height*Math.sin(-o._textRenderer.angle)/2}else{b=-o._textRenderer.height*Math.sin(o._textRenderer.angle)/2}break;case"end":b=-o.getWidth()+o._textRenderer.height*Math.sin(-o._textRenderer.angle)/2;break;case"start":b=-o._textRenderer.height*Math.sin(o._textRenderer.angle)/2;break;case"middle":b=-o.getWidth()/2+o._textRenderer.height*Math.sin(-o._textRenderer.angle)/2;break;default:b=-o.getWidth()/2+o._textRenderer.height*Math.sin(-o._textRenderer.angle)/2;break}}else{b=-o.getWidth()/2}var C=this.u2p(o.value)+b+"px";o._elem.css("left",C);o.pack()}}var y=["bottom",0];if(q){var m=this._label._elem.outerWidth(true);this._label._elem.css("left",l+g/2-m/2+"px");if(this.name=="xaxis"){this._label._elem.css("bottom","0px");y=["bottom",this._label._elem.outerHeight(true)]}else{this._label._elem.css("top","0px");y=["top",this._label._elem.outerHeight(true)]}this._label.pack()}var d=parseInt(this._ticks.length/this.groups,10);for(i=0;i<this._groupLabels.length;i++){var A=0;var f=0;for(var u=i*d;u<=(i+1)*d;u++){if(this._ticks[u]._elem&&this._ticks[u].label!=" "){var o=this._ticks[u]._elem;var r=o.position();A+=r.left+o.outerWidth(true)/2;f++}}A=A/f;this._groupLabels[i].css({left:(A-this._groupLabels[i].outerWidth(true)/2)});this._groupLabels[i].css(y[0],y[1])}}else{for(i=0;i<B.length;i++){var o=B[i];if(o.show&&o.showLabel){var b;if(o.constructor==a.jqplot.CanvasAxisTickRenderer&&o.angle){var z=(this.name=="yaxis")?1:-1;switch(o.labelPosition){case"auto":case"end":if(z*o.angle<0){b=-o._textRenderer.height*Math.cos(-o._textRenderer.angle)/2}else{b=-o.getHeight()+o._textRenderer.height*Math.cos(o._textRenderer.angle)/2}break;case"start":if(o.angle>0){b=-o._textRenderer.height*Math.cos(-o._textRenderer.angle)/2}else{b=-o.getHeight()+o._textRenderer.height*Math.cos(o._textRenderer.angle)/2}break;case"middle":b=-o.getHeight()/2;break;default:b=-o.getHeight()/2;break}}else{b=-o.getHeight()/2}var C=this.u2p(o.value)+b+"px";o._elem.css("top",C);o.pack()}}var y=["left",0];if(q){var x=this._label._elem.outerHeight(true);this._label._elem.css("top",n-g/2-x/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px");y=["left",this._label._elem.outerWidth(true)]}else{this._label._elem.css("right","0px");y=["right",this._label._elem.outerWidth(true)]}this._label.pack()}var d=parseInt(this._ticks.length/this.groups,10);for(i=0;i<this._groupLabels.length;i++){var A=0;var f=0;for(var u=i*d;u<=(i+1)*d;u++){if(this._ticks[u]._elem&&this._ticks[u].label!=" "){var o=this._ticks[u]._elem;var r=o.position();A+=r.top+o.outerHeight()/2;f++}}A=A/f;this._groupLabels[i].css({top:A-this._groupLabels[i].outerHeight()/2});this._groupLabels[i].css(y[0],y[1])}}}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.ciParser.js Index: Site/Site_W/jpqplot/plugins/jqplot.ciParser.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.ciParser.js +++ Site/Site_W/jpqplot/plugins/jqplot.ciParser.js @@ -0,0 +1,90 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.ciParser + * Data Renderer which converts a custom JSON data object into jqPlot data format. + * + * Parameters: + * data - JSON encoded string or object. + * plot - reference to jqPlot Plot object. + * + * Returns: + * data array in jqPlot format. + * + */ + $.jqplot.ciParser = function (data, plot) { + var ret = [], + line, + i, j, k, kk; + + if (typeof(data) == "string") { + data = $.jqplot.JSON.parse(data, handleStrings); + } + + else if (typeof(data) == "object") { + for (k in data) { + for (i=0; i<data[k].length; i++) { + for (kk in data[k][i]) { + data[k][i][kk] = handleStrings(kk, data[k][i][kk]); + } + } + } + } + + else return null; + + // function handleStrings + // Checks any JSON encoded strings to see if they are + // encoded dates. If so, pull out the timestamp. + // Expects dates to be represented by js timestamps. + + function handleStrings(key, value) { + var a; + if (value != null) { + if (value.toString().indexOf('Date') >= 0) { + //here we will try to extract the ticks from the Date string in the "value" fields of JSON returned data + a = /^\/Date\((-?[0-9]+)\)\/$/.exec(value); + if (a) { + return parseInt(a[1], 10); + } + } + return value; + } + } + + for (var prop in data) { + line = []; + temp = data[prop]; + switch (prop) { + case "PriceTicks": + for (i=0; i<temp.length; i++) { + line.push([temp[i]['TickDate'], temp[i]['Price']]); + } + break; + case "PriceBars": + for (i=0; i<temp.length; i++) { + line.push([temp[i]['BarDate'], temp[i]['Open'], temp[i]['High'], temp[i]['Low'], temp[i]['Close']]); + } + break; + } + ret.push(line); + } + return ret; + }; +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.ciParser.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.ciParser.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.ciParser.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.ciParser.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.ciParser=function(g,l){var m=[],n,h,f,e,c;if(typeof(g)=="string"){g=a.jqplot.JSON.parse(g,d)}else{if(typeof(g)=="object"){for(e in g){for(h=0;h<g[e].length;h++){for(c in g[e][h]){g[e][h][c]=d(c,g[e][h][c])}}}}else{return null}}function d(j,k){var i;if(k!=null){if(k.toString().indexOf("Date")>=0){i=/^\/Date\((-?[0-9]+)\)\/$/.exec(k);if(i){return parseInt(i[1],10)}}return k}}for(var b in g){n=[];temp=g[b];switch(b){case"PriceTicks":for(h=0;h<temp.length;h++){n.push([temp[h]["TickDate"],temp[h]["Price"]])}break;case"PriceBars":for(h=0;h<temp.length;h++){n.push([temp[h]["BarDate"],temp[h]["Open"],temp[h]["High"],temp[h]["Low"],temp[h]["Close"]])}break}m.push(n)}return m}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.cursor.js Index: Site/Site_W/jpqplot/plugins/jqplot.cursor.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.cursor.js +++ Site/Site_W/jpqplot/plugins/jqplot.cursor.js @@ -0,0 +1,952 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + + /** + * Class: $.jqplot.Cursor + * Plugin class representing the cursor as displayed on the plot. + */ + $.jqplot.Cursor = function(options) { + // Group: Properties + // + // prop: style + // CSS spec for cursor style + this.style = 'crosshair'; + this.previousCursor = 'auto'; + // prop: show + // wether to show the cursor or not. + this.show = $.jqplot.config.enablePlugins; + // prop: showTooltip + // show a cursor position tooltip. Location of the tooltip + // will be controlled by followMouse and tooltipLocation. + this.showTooltip = true; + // prop: followMouse + // Tooltip follows the mouse, it is not at a fixed location. + // Tooltip will show on the grid at the location given by + // tooltipLocation, offset from the grid edge by tooltipOffset. + this.followMouse = false; + // prop: tooltipLocation + // Where to position tooltip. If followMouse is true, this is + // relative to the cursor, otherwise, it is relative to the grid. + // One of 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw' + this.tooltipLocation = 'se'; + // prop: tooltipOffset + // Pixel offset of tooltip from the grid boudaries or cursor center. + this.tooltipOffset = 6; + // prop: showTooltipGridPosition + // show the grid pixel coordinates of the mouse. + this.showTooltipGridPosition = false; + // prop: showTooltipUnitPosition + // show the unit (data) coordinates of the mouse. + this.showTooltipUnitPosition = true; + // prop: showTooltipDataPosition + // Used with showVerticalLine to show intersecting data points in the tooltip. + this.showTooltipDataPosition = false; + // prop: tooltipFormatString + // sprintf format string for the tooltip. + // Uses Ash Searle's javascript sprintf implementation + // found here: http://hexmen.com/blog/2007/03/printf-sprintf/ + // See http://perldoc.perl.org/functions/sprintf.html for reference + // Note, if showTooltipDataPosition is true, the default tooltipFormatString + // will be set to the cursorLegendFormatString, not the default given here. + this.tooltipFormatString = '%.4P, %.4P'; + // prop: useAxesFormatters + // Use the x and y axes formatters to format the text in the tooltip. + this.useAxesFormatters = true; + // prop: tooltipAxisGroups + // Show position for the specified axes. + // This is an array like [['xaxis', 'yaxis'], ['xaxis', 'y2axis']] + // Default is to compute automatically for all visible axes. + this.tooltipAxisGroups = []; + // prop: zoom + // Enable plot zooming. + this.zoom = false; + // zoomProxy and zoomTarget properties are not directly set by user. + // They Will be set through call to zoomProxy method. + this.zoomProxy = false; + this.zoomTarget = false; + // prop: clickReset + // Will reset plot zoom if single click on plot without drag. + this.clickReset = false; + // prop: dblClickReset + // Will reset plot zoom if double click on plot without drag. + this.dblClickReset = true; + // prop: showVerticalLine + // draw a vertical line across the plot which follows the cursor. + // When the line is near a data point, a special legend and/or tooltip can + // be updated with the data values. + this.showVerticalLine = false; + // prop: showHorizontalLine + // draw a horizontal line across the plot which follows the cursor. + this.showHorizontalLine = false; + // prop: constrainZoomTo + // 'none', 'x' or 'y' + this.constrainZoomTo = 'none'; + // // prop: autoscaleConstraint + // // when a constrained axis is specified, true will + // // auatoscale the adjacent axis. + // this.autoscaleConstraint = true; + this.shapeRenderer = new $.jqplot.ShapeRenderer(); + this._zoom = {start:[], end:[], started: false, zooming:false, isZoomed:false, axes:{start:{}, end:{}}, gridpos:{}, datapos:{}}; + this._tooltipElem; + this.zoomCanvas; + this.cursorCanvas; + // prop: intersectionThreshold + // pixel distance from data point or marker to consider cursor lines intersecting with point. + // If data point markers are not shown, this should be >= 1 or will often miss point intersections. + this.intersectionThreshold = 2; + // prop: showCursorLegend + // Replace the plot legend with an enhanced legend displaying intersection information. + this.showCursorLegend = false; + // prop: cursorLegendFormatString + // Format string used in the cursor legend. If showTooltipDataPosition is true, + // this will also be the default format string used by tooltipFormatString. + this.cursorLegendFormatString = $.jqplot.Cursor.cursorLegendFormatString; + // whether the cursor is over the grid or not. + this._oldHandlers = {onselectstart: null, ondrag: null, onmousedown: null}; + // prop: constrainOutsideZoom + // True to limit actual zoom area to edges of grid, even when zooming + // outside of plot area. That is, can't zoom out by mousing outside plot. + this.constrainOutsideZoom = true; + // prop: showTooltipOutsideZoom + // True will keep updating the tooltip when zooming of the grid. + this.showTooltipOutsideZoom = false; + // true if mouse is over grid, false if not. + this.onGrid = false; + $.extend(true, this, options); + }; + + $.jqplot.Cursor.cursorLegendFormatString = '%s x:%s, y:%s'; + + // called with scope of plot + $.jqplot.Cursor.init = function (target, data, opts){ + // add a cursor attribute to the plot + var options = opts || {}; + this.plugins.cursor = new $.jqplot.Cursor(options.cursor); + var c = this.plugins.cursor; + + if (c.show) { + $.jqplot.eventListenerHooks.push(['jqplotMouseEnter', handleMouseEnter]); + $.jqplot.eventListenerHooks.push(['jqplotMouseLeave', handleMouseLeave]); + $.jqplot.eventListenerHooks.push(['jqplotMouseMove', handleMouseMove]); + + if (c.showCursorLegend) { + opts.legend = opts.legend || {}; + opts.legend.renderer = $.jqplot.CursorLegendRenderer; + opts.legend.formatString = this.plugins.cursor.cursorLegendFormatString; + opts.legend.show = true; + } + + if (c.zoom) { + $.jqplot.eventListenerHooks.push(['jqplotMouseDown', handleMouseDown]); + + if (c.clickReset) { + $.jqplot.eventListenerHooks.push(['jqplotClick', handleClick]); + } + + if (c.dblClickReset) { + $.jqplot.eventListenerHooks.push(['jqplotDblClick', handleDblClick]); + } + } + + this.resetZoom = function() { + var axes = this.axes; + if (!c.zoomProxy) { + for (var ax in axes) { + axes[ax].reset(); + } + this.redraw(); + } + else { + var ctx = this.plugins.cursor.zoomCanvas._ctx; + ctx.clearRect(0,0,ctx.canvas.width, ctx.canvas.height); + } + this.plugins.cursor._zoom.isZoomed = false; + this.target.trigger('jqplotResetZoom', [this, this.plugins.cursor]); + }; + + + if (c.showTooltipDataPosition) { + c.showTooltipUnitPosition = false; + c.showTooltipGridPosition = false; + if (options.cursor.tooltipFormatString == undefined) { + c.tooltipFormatString = $.jqplot.Cursor.cursorLegendFormatString; + } + } + } + }; + + // called with context of plot + $.jqplot.Cursor.postDraw = function() { + var c = this.plugins.cursor; + // if (c.zoom) { + c.zoomCanvas = new $.jqplot.GenericCanvas(); + this.eventCanvas._elem.before(c.zoomCanvas.createElement(this._gridPadding, 'jqplot-zoom-canvas', this._plotDimensions)); + var zctx = c.zoomCanvas.setContext(); + // } + c._tooltipElem = $('<div class="jqplot-cursor-tooltip" style="position:absolute;display:none"></div>'); + c.zoomCanvas._elem.before(c._tooltipElem); + if (c.showVerticalLine || c.showHorizontalLine) { + c.cursorCanvas = new $.jqplot.GenericCanvas(); + this.eventCanvas._elem.before(c.cursorCanvas.createElement(this._gridPadding, 'jqplot-cursor-canvas', this._plotDimensions)); + var zctx = c.cursorCanvas.setContext(); + } + + // if we are showing the positions in unit coordinates, and no axes groups + // were specified, create a default set. + if (c.showTooltipUnitPosition){ + if (c.tooltipAxisGroups.length === 0) { + var series = this.series; + var s; + var temp = []; + for (var i=0; i<series.length; i++) { + s = series[i]; + var ax = s.xaxis+','+s.yaxis; + if ($.inArray(ax, temp) == -1) { + temp.push(ax); + } + } + for (var i=0; i<temp.length; i++) { + c.tooltipAxisGroups.push(temp[i].split(',')); + } + } + } + }; + + // Group: methods + // + // method: $.jqplot.Cursor.zoomProxy + // links targetPlot to controllerPlot so that plot zooming of + // targetPlot will be controlled by zooming on the controllerPlot. + // controllerPlot will not actually zoom, but acts as an + // overview plot. Note, the zoom options must be set to true for + // zoomProxy to work. + $.jqplot.Cursor.zoomProxy = function(targetPlot, controllerPlot) { + var tc = targetPlot.plugins.cursor; + var cc = controllerPlot.plugins.cursor; + tc.zoomTarget = true; + tc.zoom = true; + tc.style = 'auto'; + tc.dblClickReset = false; + cc.zoom = true; + cc.zoomProxy = true; + + controllerPlot.target.bind('jqplotZoom', plotZoom); + controllerPlot.target.bind('jqplotResetZoom', plotReset); + + function plotZoom(ev, gridpos, datapos, plot, cursor) { + tc.doZoom(gridpos, datapos, targetPlot, cursor); + } + + function plotReset(ev, plot, cursor) { + targetPlot.resetZoom(); + } + }; + + $.jqplot.Cursor.prototype.resetZoom = function(plot, cursor) { + var axes = plot.axes; + var cax = cursor._zoom.axes; + if (!plot.plugins.cursor.zoomProxy && cursor._zoom.isZoomed) { + for (var ax in axes) { + axes[ax]._ticks = []; + axes[ax].min = cax[ax].min; + axes[ax].max = cax[ax].max; + axes[ax].numberTicks = cax[ax].numberTicks; + axes[ax].tickInterval = cax[ax].tickInterval; + // for date axes + axes[ax].daTickInterval = cax[ax].daTickInterval; + } + plot.redraw(); + cursor._zoom.isZoomed = false; + } + else { + var ctx = cursor.zoomCanvas._ctx; + ctx.clearRect(0,0,ctx.canvas.width, ctx.canvas.height); + } + plot.target.trigger('jqplotResetZoom', [plot, cursor]); + }; + + $.jqplot.Cursor.resetZoom = function(plot) { + plot.resetZoom(); + }; + + $.jqplot.Cursor.prototype.doZoom = function (gridpos, datapos, plot, cursor) { + var c = cursor; + var axes = plot.axes; + var zaxes = c._zoom.axes; + var start = zaxes.start; + var end = zaxes.end; + var min, max; + var ctx = plot.plugins.cursor.zoomCanvas._ctx; + // don't zoom is zoom area is too small (in pixels) + if ((c.constrainZoomTo == 'none' && Math.abs(gridpos.x - c._zoom.start[0]) > 6 && Math.abs(gridpos.y - c._zoom.start[1]) > 6) || (c.constrainZoomTo == 'x' && Math.abs(gridpos.x - c._zoom.start[0]) > 6) || (c.constrainZoomTo == 'y' && Math.abs(gridpos.y - c._zoom.start[1]) > 6)) { + if (!plot.plugins.cursor.zoomProxy) { + for (var ax in datapos) { + // make a copy of the original axes to revert back. + if (c._zoom.axes[ax] == undefined) { + c._zoom.axes[ax] = {}; + c._zoom.axes[ax].numberTicks = axes[ax].numberTicks; + c._zoom.axes[ax].tickInterval = axes[ax].tickInterval; + // for date axes... + c._zoom.axes[ax].daTickInterval = axes[ax].daTickInterval; + c._zoom.axes[ax].min = axes[ax].min; + c._zoom.axes[ax].max = axes[ax].max; + } + if ((c.constrainZoomTo == 'none') || (c.constrainZoomTo == 'x' && ax.charAt(0) == 'x') || (c.constrainZoomTo == 'y' && ax.charAt(0) == 'y')) { + dp = datapos[ax]; + if (dp != null) { + if (dp > start[ax]) { + axes[ax].min = start[ax]; + axes[ax].max = dp; + } + else { + span = start[ax] - dp; + axes[ax].max = start[ax]; + axes[ax].min = dp; + } + axes[ax].tickInterval = null; + // for date axes... + axes[ax].daTickInterval = null; + axes[ax]._ticks = []; + } + } + + // if ((c.constrainZoomTo == 'x' && ax.charAt(0) == 'y' && c.autoscaleConstraint) || (c.constrainZoomTo == 'y' && ax.charAt(0) == 'x' && c.autoscaleConstraint)) { + // dp = datapos[ax]; + // if (dp != null) { + // axes[ax].max == null; + // axes[ax].min = null; + // } + // } + } + ctx.clearRect(0,0,ctx.canvas.width, ctx.canvas.height); + plot.redraw(); + c._zoom.isZoomed = true; + } + plot.target.trigger('jqplotZoom', [gridpos, datapos, plot, cursor]); + } + }; + + $.jqplot.preInitHooks.push($.jqplot.Cursor.init); + $.jqplot.postDrawHooks.push($.jqplot.Cursor.postDraw); + + function updateTooltip(gridpos, datapos, plot) { + var c = plot.plugins.cursor; + var s = ''; + var addbr = false; + if (c.showTooltipGridPosition) { + s = gridpos.x+', '+gridpos.y; + addbr = true; + } + if (c.showTooltipUnitPosition) { + var g; + for (var i=0; i<c.tooltipAxisGroups.length; i++) { + g = c.tooltipAxisGroups[i]; + if (addbr) { + s += '<br />'; + } + if (c.useAxesFormatters) { + var xf = plot.axes[g[0]]._ticks[0].formatter; + var yf = plot.axes[g[1]]._ticks[0].formatter; + var xfstr = plot.axes[g[0]]._ticks[0].formatString; + var yfstr = plot.axes[g[1]]._ticks[0].formatString; + s += xf(xfstr, datapos[g[0]]) + ', '+ yf(yfstr, datapos[g[1]]); + } + else { + s += $.jqplot.sprintf(c.tooltipFormatString, datapos[g[0]], datapos[g[1]]); + } + addbr = true; + } + } + + if (c.showTooltipDataPosition) { + var series = plot.series; + var ret = getIntersectingPoints(plot, gridpos.x, gridpos.y); + var addbr = false; + + for (var i = 0; i< series.length; i++) { + if (series[i].show) { + var idx = series[i].index; + var label = series[i].label.toString(); + var cellid = $.inArray(idx, ret.indices); + var sx = undefined; + var sy = undefined; + if (cellid != -1) { + var data = ret.data[cellid].data; + if (c.useAxesFormatters) { + var xf = series[i]._xaxis._ticks[0].formatter; + var yf = series[i]._yaxis._ticks[0].formatter; + var xfstr = series[i]._xaxis._ticks[0].formatString; + var yfstr = series[i]._yaxis._ticks[0].formatString; + sx = xf(xfstr, data[0]); + sy = yf(yfstr, data[1]); + } + else { + sx = data[0]; + sy = data[1]; + } + if (addbr) { + s += '<br />'; + } + s += $.jqplot.sprintf(c.tooltipFormatString, label, sx, sy); + addbr = true; + } + } + } + + } + c._tooltipElem.html(s); + } + + function moveLine(gridpos, plot) { + var c = plot.plugins.cursor; + var ctx = c.cursorCanvas._ctx; + ctx.clearRect(0,0,ctx.canvas.width, ctx.canvas.height); + if (c.showVerticalLine) { + c.shapeRenderer.draw(ctx, [[gridpos.x, 0], [gridpos.x, ctx.canvas.height]]); + } + if (c.showHorizontalLine) { + c.shapeRenderer.draw(ctx, [[0, gridpos.y], [ctx.canvas.width, gridpos.y]]); + } + var ret = getIntersectingPoints(plot, gridpos.x, gridpos.y); + if (c.showCursorLegend) { + var cells = $(plot.targetId + ' td.jqplot-cursor-legend-label'); + for (var i=0; i<cells.length; i++) { + var idx = $(cells[i]).data('seriesIndex'); + var series = plot.series[idx]; + var label = series.label.toString(); + var cellid = $.inArray(idx, ret.indices); + var sx = undefined; + var sy = undefined; + if (cellid != -1) { + var data = ret.data[cellid].data; + if (c.useAxesFormatters) { + var xf = series._xaxis._ticks[0].formatter; + var yf = series._yaxis._ticks[0].formatter; + var xfstr = series._xaxis._ticks[0].formatString; + var yfstr = series._yaxis._ticks[0].formatString; + sx = xf(xfstr, data[0]); + sy = yf(yfstr, data[1]); + } + else { + sx = data[0]; + sy = data[1]; + } + } + if (plot.legend.escapeHtml) { + $(cells[i]).text($.jqplot.sprintf(c.cursorLegendFormatString, label, sx, sy)); + } + else { + $(cells[i]).html($.jqplot.sprintf(c.cursorLegendFormatString, label, sx, sy)); + } + } + } + } + + function getIntersectingPoints(plot, x, y) { + var ret = {indices:[], data:[]}; + var s, i, d0, d, j, r; + var threshold; + var c = plot.plugins.cursor; + for (var i=0; i<plot.series.length; i++) { + s = plot.series[i]; + r = s.renderer; + if (s.show) { + threshold = c.intersectionThreshold; + if (s.showMarker) { + threshold += s.markerRenderer.size/2; + } + for (var j=0; j<s.gridData.length; j++) { + p = s.gridData[j]; + // check vertical line + if (c.showVerticalLine) { + if (Math.abs(x-p[0]) <= threshold) { + ret.indices.push(i); + ret.data.push({seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}); + } + } + } + } + } + return ret; + } + + function moveTooltip(gridpos, plot) { + var c = plot.plugins.cursor; + var elem = c._tooltipElem; + switch (c.tooltipLocation) { + case 'nw': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - c.tooltipOffset; + var y = gridpos.y + plot._gridPadding.top - c.tooltipOffset - elem.outerHeight(true); + break; + case 'n': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true)/2; + var y = gridpos.y + plot._gridPadding.top - c.tooltipOffset - elem.outerHeight(true); + break; + case 'ne': + var x = gridpos.x + plot._gridPadding.left + c.tooltipOffset; + var y = gridpos.y + plot._gridPadding.top - c.tooltipOffset - elem.outerHeight(true); + break; + case 'e': + var x = gridpos.x + plot._gridPadding.left + c.tooltipOffset; + var y = gridpos.y + plot._gridPadding.top - elem.outerHeight(true)/2; + break; + case 'se': + var x = gridpos.x + plot._gridPadding.left + c.tooltipOffset; + var y = gridpos.y + plot._gridPadding.top + c.tooltipOffset; + break; + case 's': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true)/2; + var y = gridpos.y + plot._gridPadding.top + c.tooltipOffset; + break; + case 'sw': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - c.tooltipOffset; + var y = gridpos.y + plot._gridPadding.top + c.tooltipOffset; + break; + case 'w': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - c.tooltipOffset; + var y = gridpos.y + plot._gridPadding.top - elem.outerHeight(true)/2; + break; + default: + var x = gridpos.x + plot._gridPadding.left + c.tooltipOffset; + var y = gridpos.y + plot._gridPadding.top + c.tooltipOffset; + break; + } + + c._tooltipElem.css('left', x); + c._tooltipElem.css('top', y); + } + + function positionTooltip(plot) { + // fake a grid for positioning + var grid = plot._gridPadding; + var c = plot.plugins.cursor; + var elem = c._tooltipElem; + switch (c.tooltipLocation) { + case 'nw': + var a = grid.left + c.tooltipOffset; + var b = grid.top + c.tooltipOffset; + elem.css('left', a); + elem.css('top', b); + break; + case 'n': + var a = (grid.left + (plot._plotDimensions.width - grid.right))/2 - elem.outerWidth(true)/2; + var b = grid.top + c.tooltipOffset; + elem.css('left', a); + elem.css('top', b); + break; + case 'ne': + var a = grid.right + c.tooltipOffset; + var b = grid.top + c.tooltipOffset; + elem.css({right:a, top:b}); + break; + case 'e': + var a = grid.right + c.tooltipOffset; + var b = (grid.top + (plot._plotDimensions.height - grid.bottom))/2 - elem.outerHeight(true)/2; + elem.css({right:a, top:b}); + break; + case 'se': + var a = grid.right + c.tooltipOffset; + var b = grid.bottom + c.tooltipOffset; + elem.css({right:a, bottom:b}); + break; + case 's': + var a = (grid.left + (plot._plotDimensions.width - grid.right))/2 - elem.outerWidth(true)/2; + var b = grid.bottom + c.tooltipOffset; + elem.css({left:a, bottom:b}); + break; + case 'sw': + var a = grid.left + c.tooltipOffset; + var b = grid.bottom + c.tooltipOffset; + elem.css({left:a, bottom:b}); + break; + case 'w': + var a = grid.left + c.tooltipOffset; + var b = (grid.top + (plot._plotDimensions.height - grid.bottom))/2 - elem.outerHeight(true)/2; + elem.css({left:a, top:b}); + break; + default: // same as 'se' + var a = grid.right - c.tooltipOffset; + var b = grid.bottom + c.tooltipOffset; + elem.css({right:a, bottom:b}); + break; + } + } + + function handleClick (ev, gridpos, datapos, neighbor, plot) { + ev.preventDefault(); + ev.stopImmediatePropagation(); + var c = plot.plugins.cursor; + if (c.clickReset) { + c.resetZoom(plot, c); + } + var sel = window.getSelection; + if (document.selection && document.selection.empty) + { + document.selection.empty(); + } + else if (sel && !sel().isCollapsed) { + sel().collapse(); + } + return false; + } + + function handleDblClick (ev, gridpos, datapos, neighbor, plot) { + ev.preventDefault(); + ev.stopImmediatePropagation(); + var c = plot.plugins.cursor; + if (c.dblClickReset) { + c.resetZoom(plot, c); + } + var sel = window.getSelection; + if (document.selection && document.selection.empty) + { + document.selection.empty(); + } + else if (sel && !sel().isCollapsed) { + sel().collapse(); + } + return false; + } + + function handleMouseLeave(ev, gridpos, datapos, neighbor, plot) { + var c = plot.plugins.cursor; + c.onGrid = false; + if (c.show) { + $(ev.target).css('cursor', c.previousCursor); + if (c.showTooltip && !(c._zoom.zooming && c.showTooltipOutsideZoom && !c.constrainOutsideZoom)) { + c._tooltipElem.hide(); + } + if (c.zoom) { + c._zoom.gridpos = gridpos; + c._zoom.datapos = datapos; + } + if (c.showVerticalLine || c.showHorizontalLine) { + var ctx = c.cursorCanvas._ctx; + ctx.clearRect(0,0,ctx.canvas.width, ctx.canvas.height); + } + if (c.showCursorLegend) { + var cells = $(plot.targetId + ' td.jqplot-cursor-legend-label'); + for (var i=0; i<cells.length; i++) { + var idx = $(cells[i]).data('seriesIndex'); + var series = plot.series[idx]; + var label = series.label.toString(); + if (plot.legend.escapeHtml) { + $(cells[i]).text($.jqplot.sprintf(c.cursorLegendFormatString, label, undefined, undefined)); + } + else { + $(cells[i]).html($.jqplot.sprintf(c.cursorLegendFormatString, label, undefined, undefined)); + } + + } + } + } + } + + function handleMouseEnter(ev, gridpos, datapos, neighbor, plot) { + var c = plot.plugins.cursor; + c.onGrid = true; + if (c.show) { + c.previousCursor = ev.target.style.cursor; + ev.target.style.cursor = c.style; + if (c.showTooltip) { + updateTooltip(gridpos, datapos, plot); + if (c.followMouse) { + moveTooltip(gridpos, plot); + } + else { + positionTooltip(plot); + } + c._tooltipElem.show(); + } + if (c.showVerticalLine || c.showHorizontalLine) { + moveLine(gridpos, plot); + } + } + + } + + function handleMouseMove(ev, gridpos, datapos, neighbor, plot) { + var c = plot.plugins.cursor; + var ctx = c.zoomCanvas._ctx; + if (c.show) { + if (c.showTooltip) { + updateTooltip(gridpos, datapos, plot); + if (c.followMouse) { + moveTooltip(gridpos, plot); + } + } + if (c.showVerticalLine || c.showHorizontalLine) { + moveLine(gridpos, plot); + } + } + } + + function getEventPosition(ev) { + var plot = ev.data.plot; + var go = plot.eventCanvas._elem.offset(); + var gridPos = {x:ev.pageX - go.left, y:ev.pageY - go.top}; + var dataPos = {xaxis:null, yaxis:null, x2axis:null, y2axis:null, y3axis:null, y4axis:null, y5axis:null, y6axis:null, y7axis:null, y8axis:null, y9axis:null}; + var an = ['xaxis', 'yaxis', 'x2axis', 'y2axis', 'y3axis', 'y4axis', 'y5axis', 'y6axis', 'y7axis', 'y8axis', 'y9axis']; + var ax = plot.axes; + var n, axis; + for (n=11; n>0; n--) { + axis = an[n-1]; + if (ax[axis].show) { + dataPos[axis] = ax[axis].series_p2u(gridPos[axis.charAt(0)]); + } + } + + return {offsets:go, gridPos:gridPos, dataPos:dataPos}; + } + + function handleZoomMove(ev) { + var plot = ev.data.plot; + var c = plot.plugins.cursor; + // don't do anything if not on grid. + if (c.show && c.zoom && c._zoom.started && !c.zoomTarget) { + var ctx = c.zoomCanvas._ctx; + var positions = getEventPosition(ev); + var gridpos = positions.gridPos; + var datapos = positions.dataPos; + c._zoom.gridpos = gridpos; + c._zoom.datapos = datapos; + c._zoom.zooming = true; + var xpos = gridpos.x; + var ypos = gridpos.y; + var height = ctx.canvas.height; + var width = ctx.canvas.width; + if (c.showTooltip && !c.onGrid && c.showTooltipOutsideZoom) { + updateTooltip(gridpos, datapos, plot); + if (c.followMouse) { + moveTooltip(gridpos, plot); + } + } + if (c.constrainZoomTo == 'x') { + c._zoom.end = [xpos, height]; + } + else if (c.constrainZoomTo == 'y') { + c._zoom.end = [width, ypos]; + } + else { + c._zoom.end = [xpos, ypos]; + } + var sel = window.getSelection; + if (document.selection && document.selection.empty) + { + document.selection.empty(); + } + else if (sel && !sel().isCollapsed) { + sel().collapse(); + } + drawZoomBox.call(c); + } + } + + function handleMouseDown(ev, gridpos, datapos, neighbor, plot) { + var c = plot.plugins.cursor; + $(document).one('mouseup.jqplot_cursor', {plot:plot}, handleMouseUp); + var axes = plot.axes; + if (document.onselectstart != undefined) { + c._oldHandlers.onselectstart = document.onselectstart; + document.onselectstart = function () { return false; }; + } + if (document.ondrag != undefined) { + c._oldHandlers.ondrag = document.ondrag; + document.ondrag = function () { return false; }; + } + if (document.onmousedown != undefined) { + c._oldHandlers.onmousedown = document.onmousedown; + document.onmousedown = function () { return false; }; + } + if (c.zoom) { + if (!c.zoomProxy) { + var ctx = c.zoomCanvas._ctx; + ctx.clearRect(0,0,ctx.canvas.width, ctx.canvas.height); + } + if (c.constrainZoomTo == 'x') { + c._zoom.start = [gridpos.x, 0]; + } + else if (c.constrainZoomTo == 'y') { + c._zoom.start = [0, gridpos.y]; + } + else { + c._zoom.start = [gridpos.x, gridpos.y]; + } + c._zoom.started = true; + for (var ax in datapos) { + // get zoom starting position. + c._zoom.axes.start[ax] = datapos[ax]; + } + $(document).bind('mousemove.jqplotCursor', {plot:plot}, handleZoomMove); + } + } + + function handleMouseUp(ev) { + var plot = ev.data.plot; + var c = plot.plugins.cursor; + if (c.zoom && c._zoom.zooming && !c.zoomTarget) { + var xpos = c._zoom.gridpos.x; + var ypos = c._zoom.gridpos.y; + var datapos = c._zoom.datapos; + var height = c.zoomCanvas._ctx.canvas.height; + var width = c.zoomCanvas._ctx.canvas.width; + var axes = plot.axes; + + if (c.constrainOutsideZoom && !c.onGrid) { + if (xpos < 0) { xpos = 0; } + else if (xpos > width) { xpos = width; } + if (ypos < 0) { ypos = 0; } + else if (ypos > height) { ypos = height; } + + for (var axis in datapos) { + if (datapos[axis]) { + if (axis.charAt(0) == 'x') { + datapos[axis] = axes[axis].series_p2u(xpos); + } + else { + datapos[axis] = axes[axis].series_p2u(ypos); + } + } + } + } + + if (c.constrainZoomTo == 'x') { + ypos = height; + } + else if (c.constrainZoomTo == 'y') { + xpos = width; + } + c._zoom.end = [xpos, ypos]; + c._zoom.gridpos = {x:xpos, y:ypos}; + + c.doZoom(c._zoom.gridpos, datapos, plot, c); + } + c._zoom.started = false; + c._zoom.zooming = false; + + $(document).unbind('mousemove.jqplotCursor', handleZoomMove); + + if (document.onselectstart != undefined && c._oldHandlers.onselectstart != null){ + document.onselectstart = c._oldHandlers.onselectstart; + c._oldHandlers.onselectstart = null; + } + if (document.ondrag != undefined && c._oldHandlers.ondrag != null){ + document.ondrag = c._oldHandlers.ondrag; + c._oldHandlers.ondrag = null; + } + if (document.onmousedown != undefined && c._oldHandlers.onmousedown != null){ + document.onmousedown = c._oldHandlers.onmousedown; + c._oldHandlers.onmousedown = null; + } + + } + + function drawZoomBox() { + var start = this._zoom.start; + var end = this._zoom.end; + var ctx = this.zoomCanvas._ctx; + var l, t, h, w; + if (end[0] > start[0]) { + l = start[0]; + w = end[0] - start[0]; + } + else { + l = end[0]; + w = start[0] - end[0]; + } + if (end[1] > start[1]) { + t = start[1]; + h = end[1] - start[1]; + } + else { + t = end[1]; + h = start[1] - end[1]; + } + ctx.fillStyle = 'rgba(0,0,0,0.2)'; + ctx.strokeStyle = '#999999'; + ctx.lineWidth = 1.0; + ctx.clearRect(0,0,ctx.canvas.width, ctx.canvas.height); + ctx.fillRect(0,0,ctx.canvas.width, ctx.canvas.height); + ctx.clearRect(l, t, w, h); + // IE won't show transparent fill rect, so stroke a rect also. + ctx.strokeRect(l,t,w,h); + } + + $.jqplot.CursorLegendRenderer = function(options) { + $.jqplot.TableLegendRenderer.call(this, options); + this.formatString = '%s'; + }; + + $.jqplot.CursorLegendRenderer.prototype = new $.jqplot.TableLegendRenderer(); + $.jqplot.CursorLegendRenderer.prototype.constructor = $.jqplot.CursorLegendRenderer; + + // called in context of a Legend + $.jqplot.CursorLegendRenderer.prototype.draw = function() { + if (this.show) { + var series = this._series; + // make a table. one line label per row. + this._elem = $('<table class="jqplot-legend jqplot-cursor-legend" style="position:absolute"></table>'); + + var pad = false; + for (var i = 0; i< series.length; i++) { + s = series[i]; + if (s.show) { + var lt = $.jqplot.sprintf(this.formatString, s.label.toString()); + if (lt) { + var color = s.color; + if (s._stack && !s.fill) { + color = ''; + } + addrow.call(this, lt, color, pad, i); + pad = true; + } + // let plugins add more rows to legend. Used by trend line plugin. + for (var j=0; j<$.jqplot.addLegendRowHooks.length; j++) { + var item = $.jqplot.addLegendRowHooks[j].call(this, s); + if (item) { + addrow.call(this, item.label, item.color, pad); + pad = true; + } + } + } + } + } + + function addrow(label, color, pad, idx) { + var rs = (pad) ? this.rowSpacing : '0'; + var tr = $('<tr class="jqplot-legend jqplot-cursor-legend"></tr>').appendTo(this._elem); + tr.data('seriesIndex', idx); + $('<td class="jqplot-legend jqplot-cursor-legend-swatch" style="padding-top:'+rs+';">'+ + '<div style="border:1px solid #cccccc;padding:0.2em;">'+ + '<div class="jqplot-cursor-legend-swatch" style="background-color:'+color+';"></div>'+ + '</div></td>').appendTo(tr); + var td = $('<td class="jqplot-legend jqplot-cursor-legend-label" style="vertical-align:middle;padding-top:'+rs+';"></td>'); + td.appendTo(tr); + td.data('seriesIndex', idx); + if (this.escapeHtml) { + td.text(label); + } + else { + td.html(label); + } + } + return this._elem; + }; + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.cursor.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.cursor.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.cursor.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.cursor.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(j){j.jqplot.Cursor=function(r){this.style="crosshair";this.previousCursor="auto";this.show=j.jqplot.config.enablePlugins;this.showTooltip=true;this.followMouse=false;this.tooltipLocation="se";this.tooltipOffset=6;this.showTooltipGridPosition=false;this.showTooltipUnitPosition=true;this.showTooltipDataPosition=false;this.tooltipFormatString="%.4P, %.4P";this.useAxesFormatters=true;this.tooltipAxisGroups=[];this.zoom=false;this.zoomProxy=false;this.zoomTarget=false;this.clickReset=false;this.dblClickReset=true;this.showVerticalLine=false;this.showHorizontalLine=false;this.constrainZoomTo="none";this.shapeRenderer=new j.jqplot.ShapeRenderer();this._zoom={start:[],end:[],started:false,zooming:false,isZoomed:false,axes:{start:{},end:{}},gridpos:{},datapos:{}};this._tooltipElem;this.zoomCanvas;this.cursorCanvas;this.intersectionThreshold=2;this.showCursorLegend=false;this.cursorLegendFormatString=j.jqplot.Cursor.cursorLegendFormatString;this._oldHandlers={onselectstart:null,ondrag:null,onmousedown:null};this.constrainOutsideZoom=true;this.showTooltipOutsideZoom=false;this.onGrid=false;j.extend(true,this,r)};j.jqplot.Cursor.cursorLegendFormatString="%s x:%s, y:%s";j.jqplot.Cursor.init=function(v,u,t){var r=t||{};this.plugins.cursor=new j.jqplot.Cursor(r.cursor);var w=this.plugins.cursor;if(w.show){j.jqplot.eventListenerHooks.push(["jqplotMouseEnter",b]);j.jqplot.eventListenerHooks.push(["jqplotMouseLeave",f]);j.jqplot.eventListenerHooks.push(["jqplotMouseMove",i]);if(w.showCursorLegend){t.legend=t.legend||{};t.legend.renderer=j.jqplot.CursorLegendRenderer;t.legend.formatString=this.plugins.cursor.cursorLegendFormatString;t.legend.show=true}if(w.zoom){j.jqplot.eventListenerHooks.push(["jqplotMouseDown",a]);if(w.clickReset){j.jqplot.eventListenerHooks.push(["jqplotClick",k])}if(w.dblClickReset){j.jqplot.eventListenerHooks.push(["jqplotDblClick",c])}}this.resetZoom=function(){var z=this.axes;if(!w.zoomProxy){for(var y in z){z[y].reset()}this.redraw()}else{var x=this.plugins.cursor.zoomCanvas._ctx;x.clearRect(0,0,x.canvas.width,x.canvas.height)}this.plugins.cursor._zoom.isZoomed=false;this.target.trigger("jqplotResetZoom",[this,this.plugins.cursor])};if(w.showTooltipDataPosition){w.showTooltipUnitPosition=false;w.showTooltipGridPosition=false;if(r.cursor.tooltipFormatString==undefined){w.tooltipFormatString=j.jqplot.Cursor.cursorLegendFormatString}}}};j.jqplot.Cursor.postDraw=function(){var y=this.plugins.cursor;y.zoomCanvas=new j.jqplot.GenericCanvas();this.eventCanvas._elem.before(y.zoomCanvas.createElement(this._gridPadding,"jqplot-zoom-canvas",this._plotDimensions));var x=y.zoomCanvas.setContext();y._tooltipElem=j('<div class="jqplot-cursor-tooltip" style="position:absolute;display:none"></div>');y.zoomCanvas._elem.before(y._tooltipElem);if(y.showVerticalLine||y.showHorizontalLine){y.cursorCanvas=new j.jqplot.GenericCanvas();this.eventCanvas._elem.before(y.cursorCanvas.createElement(this._gridPadding,"jqplot-cursor-canvas",this._plotDimensions));var x=y.cursorCanvas.setContext()}if(y.showTooltipUnitPosition){if(y.tooltipAxisGroups.length===0){var u=this.series;var v;var r=[];for(var t=0;t<u.length;t++){v=u[t];var w=v.xaxis+","+v.yaxis;if(j.inArray(w,r)==-1){r.push(w)}}for(var t=0;t<r.length;t++){y.tooltipAxisGroups.push(r[t].split(","))}}}};j.jqplot.Cursor.zoomProxy=function(x,t){var r=x.plugins.cursor;var w=t.plugins.cursor;r.zoomTarget=true;r.zoom=true;r.style="auto";r.dblClickReset=false;w.zoom=true;w.zoomProxy=true;t.target.bind("jqplotZoom",v);t.target.bind("jqplotResetZoom",u);function v(z,y,B,A,C){r.doZoom(y,B,x,C)}function u(y,z,A){x.resetZoom()}};j.jqplot.Cursor.prototype.resetZoom=function(w,x){var v=w.axes;var u=x._zoom.axes;if(!w.plugins.cursor.zoomProxy&&x._zoom.isZoomed){for(var t in v){v[t]._ticks=[];v[t].min=u[t].min;v[t].max=u[t].max;v[t].numberTicks=u[t].numberTicks;v[t].tickInterval=u[t].tickInterval;v[t].daTickInterval=u[t].daTickInterval}w.redraw();x._zoom.isZoomed=false}else{var r=x.zoomCanvas._ctx;r.clearRect(0,0,r.canvas.width,r.canvas.height)}w.target.trigger("jqplotResetZoom",[w,x])};j.jqplot.Cursor.resetZoom=function(r){r.resetZoom()};j.jqplot.Cursor.prototype.doZoom=function(y,v,z,D){var B=D;var A=z.axes;var t=B._zoom.axes;var u=t.start;var w=t.end;var x,C;var E=z.plugins.cursor.zoomCanvas._ctx;if((B.constrainZoomTo=="none"&&Math.abs(y.x-B._zoom.start[0])>6&&Math.abs(y.y-B._zoom.start[1])>6)||(B.constrainZoomTo=="x"&&Math.abs(y.x-B._zoom.start[0])>6)||(B.constrainZoomTo=="y"&&Math.abs(y.y-B._zoom.start[1])>6)){if(!z.plugins.cursor.zoomProxy){for(var r in v){if(B._zoom.axes[r]==undefined){B._zoom.axes[r]={};B._zoom.axes[r].numberTicks=A[r].numberTicks;B._zoom.axes[r].tickInterval=A[r].tickInterval;B._zoom.axes[r].daTickInterval=A[r].daTickInterval;B._zoom.axes[r].min=A[r].min;B._zoom.axes[r].max=A[r].max}if((B.constrainZoomTo=="none")||(B.constrainZoomTo=="x"&&r.charAt(0)=="x")||(B.constrainZoomTo=="y"&&r.charAt(0)=="y")){dp=v[r];if(dp!=null){if(dp>u[r]){A[r].min=u[r];A[r].max=dp}else{span=u[r]-dp;A[r].max=u[r];A[r].min=dp}A[r].tickInterval=null;A[r].daTickInterval=null;A[r]._ticks=[]}}}E.clearRect(0,0,E.canvas.width,E.canvas.height);z.redraw();B._zoom.isZoomed=true}z.target.trigger("jqplotZoom",[y,v,z,D])}};j.jqplot.preInitHooks.push(j.jqplot.Cursor.init);j.jqplot.postDrawHooks.push(j.jqplot.Cursor.postDraw);function e(F,t,C){var H=C.plugins.cursor;var x="";var L=false;if(H.showTooltipGridPosition){x=F.x+", "+F.y;L=true}if(H.showTooltipUnitPosition){var E;for(var D=0;D<H.tooltipAxisGroups.length;D++){E=H.tooltipAxisGroups[D];if(L){x+="<br />"}if(H.useAxesFormatters){var B=C.axes[E[0]]._ticks[0].formatter;var r=C.axes[E[1]]._ticks[0].formatter;var I=C.axes[E[0]]._ticks[0].formatString;var w=C.axes[E[1]]._ticks[0].formatString;x+=B(I,t[E[0]])+", "+r(w,t[E[1]])}else{x+=j.jqplot.sprintf(H.tooltipFormatString,t[E[0]],t[E[1]])}L=true}}if(H.showTooltipDataPosition){var v=C.series;var K=d(C,F.x,F.y);var L=false;for(var D=0;D<v.length;D++){if(v[D].show){var z=v[D].index;var u=v[D].label.toString();var G=j.inArray(z,K.indices);var A=undefined;var y=undefined;if(G!=-1){var J=K.data[G].data;if(H.useAxesFormatters){var B=v[D]._xaxis._ticks[0].formatter;var r=v[D]._yaxis._ticks[0].formatter;var I=v[D]._xaxis._ticks[0].formatString;var w=v[D]._yaxis._ticks[0].formatString;A=B(I,J[0]);y=r(w,J[1])}else{A=J[0];y=J[1]}if(L){x+="<br />"}x+=j.jqplot.sprintf(H.tooltipFormatString,u,A,y);L=true}}}}H._tooltipElem.html(x)}function g(E,C){var G=C.plugins.cursor;var B=G.cursorCanvas._ctx;B.clearRect(0,0,B.canvas.width,B.canvas.height);if(G.showVerticalLine){G.shapeRenderer.draw(B,[[E.x,0],[E.x,B.canvas.height]])}if(G.showHorizontalLine){G.shapeRenderer.draw(B,[[0,E.y],[B.canvas.width,E.y]])}var I=d(C,E.x,E.y);if(G.showCursorLegend){var t=j(C.targetId+" td.jqplot-cursor-legend-label");for(var D=0;D<t.length;D++){var x=j(t[D]).data("seriesIndex");var v=C.series[x];var u=v.label.toString();var F=j.inArray(x,I.indices);var z=undefined;var y=undefined;if(F!=-1){var J=I.data[F].data;if(G.useAxesFormatters){var A=v._xaxis._ticks[0].formatter;var r=v._yaxis._ticks[0].formatter;var H=v._xaxis._ticks[0].formatString;var w=v._yaxis._ticks[0].formatString;z=A(H,J[0]);y=r(w,J[1])}else{z=J[0];y=J[1]}}if(C.legend.escapeHtml){j(t[D]).text(j.jqplot.sprintf(G.cursorLegendFormatString,u,z,y))}else{j(t[D]).html(j.jqplot.sprintf(G.cursorLegendFormatString,u,z,y))}}}}function d(A,F,E){var B={indices:[],data:[]};var G,w,u,C,v,t;var z;var D=A.plugins.cursor;for(var w=0;w<A.series.length;w++){G=A.series[w];t=G.renderer;if(G.show){z=D.intersectionThreshold;if(G.showMarker){z+=G.markerRenderer.size/2}for(var v=0;v<G.gridData.length;v++){p=G.gridData[v];if(D.showVerticalLine){if(Math.abs(F-p[0])<=z){B.indices.push(w);B.data.push({seriesIndex:w,pointIndex:v,gridData:p,data:G.data[v]})}}}}}return B}function n(t,v){var z=v.plugins.cursor;var u=z._tooltipElem;switch(z.tooltipLocation){case"nw":var r=t.x+v._gridPadding.left-u.outerWidth(true)-z.tooltipOffset;var w=t.y+v._gridPadding.top-z.tooltipOffset-u.outerHeight(true);break;case"n":var r=t.x+v._gridPadding.left-u.outerWidth(true)/2;var w=t.y+v._gridPadding.top-z.tooltipOffset-u.outerHeight(true);break;case"ne":var r=t.x+v._gridPadding.left+z.tooltipOffset;var w=t.y+v._gridPadding.top-z.tooltipOffset-u.outerHeight(true);break;case"e":var r=t.x+v._gridPadding.left+z.tooltipOffset;var w=t.y+v._gridPadding.top-u.outerHeight(true)/2;break;case"se":var r=t.x+v._gridPadding.left+z.tooltipOffset;var w=t.y+v._gridPadding.top+z.tooltipOffset;break;case"s":var r=t.x+v._gridPadding.left-u.outerWidth(true)/2;var w=t.y+v._gridPadding.top+z.tooltipOffset;break;case"sw":var r=t.x+v._gridPadding.left-u.outerWidth(true)-z.tooltipOffset;var w=t.y+v._gridPadding.top+z.tooltipOffset;break;case"w":var r=t.x+v._gridPadding.left-u.outerWidth(true)-z.tooltipOffset;var w=t.y+v._gridPadding.top-u.outerHeight(true)/2;break;default:var r=t.x+v._gridPadding.left+z.tooltipOffset;var w=t.y+v._gridPadding.top+z.tooltipOffset;break}z._tooltipElem.css("left",r);z._tooltipElem.css("top",w)}function m(w){var u=w._gridPadding;var x=w.plugins.cursor;var v=x._tooltipElem;switch(x.tooltipLocation){case"nw":var t=u.left+x.tooltipOffset;var r=u.top+x.tooltipOffset;v.css("left",t);v.css("top",r);break;case"n":var t=(u.left+(w._plotDimensions.width-u.right))/2-v.outerWidth(true)/2;var r=u.top+x.tooltipOffset;v.css("left",t);v.css("top",r);break;case"ne":var t=u.right+x.tooltipOffset;var r=u.top+x.tooltipOffset;v.css({right:t,top:r});break;case"e":var t=u.right+x.tooltipOffset;var r=(u.top+(w._plotDimensions.height-u.bottom))/2-v.outerHeight(true)/2;v.css({right:t,top:r});break;case"se":var t=u.right+x.tooltipOffset;var r=u.bottom+x.tooltipOffset;v.css({right:t,bottom:r});break;case"s":var t=(u.left+(w._plotDimensions.width-u.right))/2-v.outerWidth(true)/2;var r=u.bottom+x.tooltipOffset;v.css({left:t,bottom:r});break;case"sw":var t=u.left+x.tooltipOffset;var r=u.bottom+x.tooltipOffset;v.css({left:t,bottom:r});break;case"w":var t=u.left+x.tooltipOffset;var r=(u.top+(w._plotDimensions.height-u.bottom))/2-v.outerHeight(true)/2;v.css({left:t,top:r});break;default:var t=u.right-x.tooltipOffset;var r=u.bottom+x.tooltipOffset;v.css({right:t,bottom:r});break}}function k(t,r,x,w,v){t.preventDefault();t.stopImmediatePropagation();var y=v.plugins.cursor;if(y.clickReset){y.resetZoom(v,y)}var u=window.getSelection;if(document.selection&&document.selection.empty){document.selection.empty()}else{if(u&&!u().isCollapsed){u().collapse()}}return false}function c(t,r,x,w,v){t.preventDefault();t.stopImmediatePropagation();var y=v.plugins.cursor;if(y.dblClickReset){y.resetZoom(v,y)}var u=window.getSelection;if(document.selection&&document.selection.empty){document.selection.empty()}else{if(u&&!u().isCollapsed){u().collapse()}}return false}function f(y,v,r,B,w){var x=w.plugins.cursor;x.onGrid=false;if(x.show){j(y.target).css("cursor",x.previousCursor);if(x.showTooltip&&!(x._zoom.zooming&&x.showTooltipOutsideZoom&&!x.constrainOutsideZoom)){x._tooltipElem.hide()}if(x.zoom){x._zoom.gridpos=v;x._zoom.datapos=r}if(x.showVerticalLine||x.showHorizontalLine){var D=x.cursorCanvas._ctx;D.clearRect(0,0,D.canvas.width,D.canvas.height)}if(x.showCursorLegend){var C=j(w.targetId+" td.jqplot-cursor-legend-label");for(var u=0;u<C.length;u++){var A=j(C[u]).data("seriesIndex");var t=w.series[A];var z=t.label.toString();if(w.legend.escapeHtml){j(C[u]).text(j.jqplot.sprintf(x.cursorLegendFormatString,z,undefined,undefined))}else{j(C[u]).html(j.jqplot.sprintf(x.cursorLegendFormatString,z,undefined,undefined))}}}}}function b(t,r,w,v,u){var x=u.plugins.cursor;x.onGrid=true;if(x.show){x.previousCursor=t.target.style.cursor;t.target.style.cursor=x.style;if(x.showTooltip){e(r,w,u);if(x.followMouse){n(r,u)}else{m(u)}x._tooltipElem.show()}if(x.showVerticalLine||x.showHorizontalLine){g(r,u)}}}function i(u,t,x,w,v){var y=v.plugins.cursor;var r=y.zoomCanvas._ctx;if(y.show){if(y.showTooltip){e(t,x,v);if(y.followMouse){n(t,v)}}if(y.showVerticalLine||y.showHorizontalLine){g(t,v)}}}function o(A){var z=A.data.plot;var v=z.eventCanvas._elem.offset();var y={x:A.pageX-v.left,y:A.pageY-v.top};var w={xaxis:null,yaxis:null,x2axis:null,y2axis:null,y3axis:null,y4axis:null,y5axis:null,y6axis:null,y7axis:null,y8axis:null,y9axis:null};var x=["xaxis","yaxis","x2axis","y2axis","y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis"];var r=z.axes;var t,u;for(t=11;t>0;t--){u=x[t-1];if(r[u].show){w[u]=r[u].series_p2u(y[u.charAt(0)])}}return{offsets:v,gridPos:y,dataPos:w}}function h(B){var z=B.data.plot;var A=z.plugins.cursor;if(A.show&&A.zoom&&A._zoom.started&&!A.zoomTarget){var D=A.zoomCanvas._ctx;var x=o(B);var y=x.gridPos;var v=x.dataPos;A._zoom.gridpos=y;A._zoom.datapos=v;A._zoom.zooming=true;var w=y.x;var u=y.y;var C=D.canvas.height;var r=D.canvas.width;if(A.showTooltip&&!A.onGrid&&A.showTooltipOutsideZoom){e(y,v,z);if(A.followMouse){n(y,z)}}if(A.constrainZoomTo=="x"){A._zoom.end=[w,C]}else{if(A.constrainZoomTo=="y"){A._zoom.end=[r,u]}else{A._zoom.end=[w,u]}}var t=window.getSelection;if(document.selection&&document.selection.empty){document.selection.empty()}else{if(t&&!t().isCollapsed){t().collapse()}}l.call(A)}}function a(y,u,t,z,v){var x=v.plugins.cursor;j(document).one("mouseup.jqplot_cursor",{plot:v},q);var w=v.axes;if(document.onselectstart!=undefined){x._oldHandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!=undefined){x._oldHandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}if(document.onmousedown!=undefined){x._oldHandlers.onmousedown=document.onmousedown;document.onmousedown=function(){return false}}if(x.zoom){if(!x.zoomProxy){var A=x.zoomCanvas._ctx;A.clearRect(0,0,A.canvas.width,A.canvas.height)}if(x.constrainZoomTo=="x"){x._zoom.start=[u.x,0]}else{if(x.constrainZoomTo=="y"){x._zoom.start=[0,u.y]}else{x._zoom.start=[u.x,u.y]}}x._zoom.started=true;for(var r in t){x._zoom.axes.start[r]=t[r]}j(document).bind("mousemove.jqplotCursor",{plot:v},h)}}function q(A){var x=A.data.plot;var z=x.plugins.cursor;if(z.zoom&&z._zoom.zooming&&!z.zoomTarget){var w=z._zoom.gridpos.x;var t=z._zoom.gridpos.y;var v=z._zoom.datapos;var B=z.zoomCanvas._ctx.canvas.height;var r=z.zoomCanvas._ctx.canvas.width;var y=x.axes;if(z.constrainOutsideZoom&&!z.onGrid){if(w<0){w=0}else{if(w>r){w=r}}if(t<0){t=0}else{if(t>B){t=B}}for(var u in v){if(v[u]){if(u.charAt(0)=="x"){v[u]=y[u].series_p2u(w)}else{v[u]=y[u].series_p2u(t)}}}}if(z.constrainZoomTo=="x"){t=B}else{if(z.constrainZoomTo=="y"){w=r}}z._zoom.end=[w,t];z._zoom.gridpos={x:w,y:t};z.doZoom(z._zoom.gridpos,v,x,z)}z._zoom.started=false;z._zoom.zooming=false;j(document).unbind("mousemove.jqplotCursor",h);if(document.onselectstart!=undefined&&z._oldHandlers.onselectstart!=null){document.onselectstart=z._oldHandlers.onselectstart;z._oldHandlers.onselectstart=null}if(document.ondrag!=undefined&&z._oldHandlers.ondrag!=null){document.ondrag=z._oldHandlers.ondrag;z._oldHandlers.ondrag=null}if(document.onmousedown!=undefined&&z._oldHandlers.onmousedown!=null){document.onmousedown=z._oldHandlers.onmousedown;z._oldHandlers.onmousedown=null}}function l(){var A=this._zoom.start;var x=this._zoom.end;var v=this.zoomCanvas._ctx;var u,y,z,r;if(x[0]>A[0]){u=A[0];r=x[0]-A[0]}else{u=x[0];r=A[0]-x[0]}if(x[1]>A[1]){y=A[1];z=x[1]-A[1]}else{y=x[1];z=A[1]-x[1]}v.fillStyle="rgba(0,0,0,0.2)";v.strokeStyle="#999999";v.lineWidth=1;v.clearRect(0,0,v.canvas.width,v.canvas.height);v.fillRect(0,0,v.canvas.width,v.canvas.height);v.clearRect(u,y,r,z);v.strokeRect(u,y,r,z)}j.jqplot.CursorLegendRenderer=function(r){j.jqplot.TableLegendRenderer.call(this,r);this.formatString="%s"};j.jqplot.CursorLegendRenderer.prototype=new j.jqplot.TableLegendRenderer();j.jqplot.CursorLegendRenderer.prototype.constructor=j.jqplot.CursorLegendRenderer;j.jqplot.CursorLegendRenderer.prototype.draw=function(){if(this.show){var w=this._series;this._elem=j('<table class="jqplot-legend jqplot-cursor-legend" style="position:absolute"></table>');var z=false;for(var v=0;v<w.length;v++){s=w[v];if(s.show){var r=j.jqplot.sprintf(this.formatString,s.label.toString());if(r){var t=s.color;if(s._stack&&!s.fill){t=""}x.call(this,r,t,z,v);z=true}for(var u=0;u<j.jqplot.addLegendRowHooks.length;u++){var y=j.jqplot.addLegendRowHooks[u].call(this,s);if(y){x.call(this,y.label,y.color,z);z=true}}}}}function x(D,C,F,A){var B=(F)?this.rowSpacing:"0";var E=j('<tr class="jqplot-legend jqplot-cursor-legend"></tr>').appendTo(this._elem);E.data("seriesIndex",A);j('<td class="jqplot-legend jqplot-cursor-legend-swatch" style="padding-top:'+B+';"><div style="border:1px solid #cccccc;padding:0.2em;"><div class="jqplot-cursor-legend-swatch" style="background-color:'+C+';"></div></div></td>').appendTo(E);var G=j('<td class="jqplot-legend jqplot-cursor-legend-label" style="vertical-align:middle;padding-top:'+B+';"></td>');G.appendTo(E);G.data("seriesIndex",A);if(this.escapeHtml){G.text(D)}else{G.html(D)}}return this._elem}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.dateAxisRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.dateAxisRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.dateAxisRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.dateAxisRenderer.js @@ -0,0 +1,313 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.DateAxisRenderer + * A plugin for a jqPlot to render an axis as a series of date values. + * This renderer has no options beyond those supplied by the <Axis> class. + * It supplies it's own tick formatter, so the tickOptions.formatter option + * should not be overridden. + * + * Thanks to Ken Synder for his enhanced Date instance methods which are + * included with this code <http://kendsnyder.com/sandbox/date/>. + * + * To use this renderer, include the plugin in your source + * > <script type="text/javascript" language="javascript" src="plugins/jqplot.dateAxisRenderer.js"></script> + * + * and supply the appropriate options to your plot + * + * > {axes:{xaxis:{renderer:$.jqplot.DateAxisRenderer}}} + * + * Dates can be passed into the axis in almost any recognizable value and + * will be parsed. They will be rendered on the axis in the format + * specified by tickOptions.formatString. e.g. tickOptions.formatString = '%Y-%m-%d'. + * + * Accecptable format codes + * are: + * + * > Code Result Description + * > == Years == + * > %Y 2008 Four-digit year + * > %y 08 Two-digit year + * > == Months == + * > %m 09 Two-digit month + * > %#m 9 One or two-digit month + * > %B September Full month name + * > %b Sep Abbreviated month name + * > == Days == + * > %d 05 Two-digit day of month + * > %#d 5 One or two-digit day of month + * > %e 5 One or two-digit day of month + * > %A Sunday Full name of the day of the week + * > %a Sun Abbreviated name of the day of the week + * > %w 0 Number of the day of the week (0 = Sunday, 6 = Saturday) + * > %o th The ordinal suffix string following the day of the month + * > == Hours == + * > %H 23 Hours in 24-hour format (two digits) + * > %#H 3 Hours in 24-hour integer format (one or two digits) + * > %I 11 Hours in 12-hour format (two digits) + * > %#I 3 Hours in 12-hour integer format (one or two digits) + * > %p PM AM or PM + * > == Minutes == + * > %M 09 Minutes (two digits) + * > %#M 9 Minutes (one or two digits) + * > == Seconds == + * > %S 02 Seconds (two digits) + * > %#S 2 Seconds (one or two digits) + * > %s 1206567625723 Unix timestamp (Seconds past 1970-01-01 00:00:00) + * > == Milliseconds == + * > %N 008 Milliseconds (three digits) + * > %#N 8 Milliseconds (one to three digits) + * > == Timezone == + * > %O 360 difference in minutes between local time and GMT + * > %Z Mountain Standard Time Name of timezone as reported by browser + * > %G -06:00 Hours and minutes between GMT + * > == Shortcuts == + * > %F 2008-03-26 %Y-%m-%d + * > %T 05:06:30 %H:%M:%S + * > %X 05:06:30 %H:%M:%S + * > %x 03/26/08 %m/%d/%y + * > %D 03/26/08 %m/%d/%y + * > %#c Wed Mar 26 15:31:00 2008 %a %b %e %H:%M:%S %Y + * > %v 3-Sep-2008 %e-%b-%Y + * > %R 15:31 %H:%M + * > %r 3:31:00 PM %I:%M:%S %p + * > == Characters == + * > %n \n Newline + * > %t \t Tab + * > %% % Percent Symbol + */ + $.jqplot.DateAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + }; + + $.jqplot.DateAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.DateAxisRenderer.prototype.constructor = $.jqplot.DateAxisRenderer; + + $.jqplot.DateTickFormatter = function(format, val) { + if (!format) { + format = '%Y/%m/%d'; + } + return Date.create(val).strftime(format); + }; + + $.jqplot.DateAxisRenderer.prototype.init = function(options){ + // prop: tickRenderer + // A class of a rendering engine for creating the ticks labels displayed on the plot, + // See <$.jqplot.AxisTickRenderer>. + // this.tickRenderer = $.jqplot.AxisTickRenderer; + // this.labelRenderer = $.jqplot.AxisLabelRenderer; + this.tickOptions.formatter = $.jqplot.DateTickFormatter; + this.daTickInterval = null; + this._daTickInterval = null; + $.extend(true, this, options); + var db = this._dataBounds; + // Go through all the series attached to this axis and find + // the min/max bounds for this axis. + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + var d = s.data; + var pd = s._plotData; + var sd = s._stackData; + + for (var j=0; j<d.length; j++) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + d[j][0] = Date.create(d[j][0]).getTime(); + pd[j][0] = Date.create(d[j][0]).getTime(); + sd[j][0] = Date.create(d[j][0]).getTime(); + if (d[j][0] < db.min || db.min == null) { + db.min = d[j][0]; + } + if (d[j][0] > db.max || db.max == null) { + db.max = d[j][0]; + } + } + else { + d[j][1] = Date.create(d[j][1]).getTime(); + pd[j][1] = Date.create(d[j][1]).getTime(); + sd[j][1] = Date.create(d[j][1]).getTime(); + if (d[j][1] < db.min || db.min == null) { + db.min = d[j][1]; + } + if (d[j][1] > db.max || db.max == null) { + db.max = d[j][1]; + } + } + } + } + }; + + // called with scope of an axis + $.jqplot.DateAxisRenderer.prototype.reset = function() { + this.min = this._min; + this.max = this._max; + this.tickInterval = this._tickInterval; + this.numberTicks = this._numberTicks; + this.daTickInterval = this._daTickInterval; + // this._ticks = this.__ticks; + }; + + $.jqplot.DateAxisRenderer.prototype.createTicks = function() { + // we're are operating on an axis here + var ticks = this._ticks; + var userTicks = this.ticks; + var name = this.name; + // databounds were set on axis initialization. + var db = this._dataBounds; + var dim, interval; + var min, max; + var pos1, pos2; + var tt, i; + + // if we already have ticks, use them. + // ticks must be in order of increasing value. + + if (userTicks.length) { + // ticks could be 1D or 2D array of [val, val, ,,,] or [[val, label], [val, label], ...] or mixed + for (i=0; i<userTicks.length; i++){ + var ut = userTicks[i]; + var t = new this.tickRenderer(this.tickOptions); + if (ut.constructor == Array) { + t.value = Date.create(ut[0]).getTime(); + t.label = ut[1]; + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(t.value, this.name); + this._ticks.push(t); + } + + else { + t.value = Date.create(ut).getTime(); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(t.value, this.name); + this._ticks.push(t); + } + } + this.numberTicks = userTicks.length; + this.min = this._ticks[0].value; + this.max = this._ticks[this.numberTicks-1].value; + this.daTickInterval = [(this.max - this.min) / (this.numberTicks - 1)/1000, 'seconds']; + } + + // we don't have any ticks yet, let's make some! + else { + if (name == 'xaxis' || name == 'x2axis') { + dim = this._plotDimensions.width; + } + else { + dim = this._plotDimensions.height; + } + + // if min, max and number of ticks specified, user can't specify interval. + if (this.min != null && this.max != null && this.numberTicks != null) { + this.tickInterval = null; + } + + // if user specified a tick interval, convert to usable. + if (this.tickInterval != null) + { + // if interval is a number or can be converted to one, use it. + // Assume it is in SECONDS!!! + if (Number(this.tickInterval)) { + this.daTickInterval = [Number(this.tickInterval), 'seconds']; + } + // else, parse out something we can build from. + else if (typeof this.tickInterval == "string") { + var parts = this.tickInterval.split(' '); + if (parts.length == 1) { + this.daTickInterval = [1, parts[0]]; + } + else if (parts.length == 2) { + this.daTickInterval = [parts[0], parts[1]]; + } + } + } + + min = ((this.min != null) ? Date.create(this.min).getTime() : db.min); + max = ((this.max != null) ? Date.create(this.max).getTime() : db.max); + + // if min and max are same, space them out a bit + if (min == max) { + var adj = 24*60*60*500; // 1/2 day + min -= adj; + max += adj; + } + + var range = max - min; + var rmin, rmax; + + rmin = (this.min != null) ? Date.create(this.min).getTime() : min - range/2*(this.padMin - 1); + rmax = (this.max != null) ? Date.create(this.max).getTime() : max + range/2*(this.padMax - 1); + this.min = rmin; + this.max = rmax; + range = this.max - this.min; + + if (this.numberTicks == null){ + // if tickInterval is specified by user, we will ignore computed maximum. + // max will be equal or greater to fit even # of ticks. + if (this.daTickInterval != null) { + var nc = Date.create(this.max).diff(this.min, this.daTickInterval[1], true); + this.numberTicks = Math.ceil(nc/this.daTickInterval[0]) +1; + // this.max = Date.create(this.min).add(this.numberTicks-1, this.daTickInterval[1]).getTime(); + this.max = Date.create(this.min).add((this.numberTicks-1) * this.daTickInterval[0], this.daTickInterval[1]).getTime(); + } + else if (dim > 200) { + this.numberTicks = parseInt(3+(dim-200)/100, 10); + } + else { + this.numberTicks = 2; + } + } + + if (this.daTickInterval == null) { + this.daTickInterval = [range / (this.numberTicks-1)/1000, 'seconds']; + } + for (var i=0; i<this.numberTicks; i++){ + var min = Date.create(this.min); + tt = min.add(i*this.daTickInterval[0], this.daTickInterval[1]).getTime(); + var t = new this.tickRenderer(this.tickOptions); + // var t = new $.jqplot.AxisTickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(tt, this.name); + this._ticks.push(t); + } + } + if (this._daTickInterval == null) { + this._daTickInterval = this.daTickInterval; + } + }; + +})(jQuery); + ADDED Site/Site_W/jpqplot/plugins/jqplot.dateAxisRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.dateAxisRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.dateAxisRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.dateAxisRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.DateAxisRenderer=function(){a.jqplot.LinearAxisRenderer.call(this)};a.jqplot.DateAxisRenderer.prototype=new a.jqplot.LinearAxisRenderer();a.jqplot.DateAxisRenderer.prototype.constructor=a.jqplot.DateAxisRenderer;a.jqplot.DateTickFormatter=function(b,c){if(!b){b="%Y/%m/%d"}return Date.create(c).strftime(b)};a.jqplot.DateAxisRenderer.prototype.init=function(f){this.tickOptions.formatter=a.jqplot.DateTickFormatter;this.daTickInterval=null;this._daTickInterval=null;a.extend(true,this,f);var c=this._dataBounds;for(var g=0;g<this._series.length;g++){var h=this._series[g];var l=h.data;var b=h._plotData;var k=h._stackData;for(var e=0;e<l.length;e++){if(this.name=="xaxis"||this.name=="x2axis"){l[e][0]=Date.create(l[e][0]).getTime();b[e][0]=Date.create(l[e][0]).getTime();k[e][0]=Date.create(l[e][0]).getTime();if(l[e][0]<c.min||c.min==null){c.min=l[e][0]}if(l[e][0]>c.max||c.max==null){c.max=l[e][0]}}else{l[e][1]=Date.create(l[e][1]).getTime();b[e][1]=Date.create(l[e][1]).getTime();k[e][1]=Date.create(l[e][1]).getTime();if(l[e][1]<c.min||c.min==null){c.min=l[e][1]}if(l[e][1]>c.max||c.max==null){c.max=l[e][1]}}}}};a.jqplot.DateAxisRenderer.prototype.reset=function(){this.min=this._min;this.max=this._max;this.tickInterval=this._tickInterval;this.numberTicks=this._numberTicks;this.daTickInterval=this._daTickInterval};a.jqplot.DateAxisRenderer.prototype.createTicks=function(){var v=this._ticks;var r=this.ticks;var w=this.name;var u=this._dataBounds;var o,s;var m,p;var d,c;var b,q;if(r.length){for(q=0;q<r.length;q++){var f=r[q];var h=new this.tickRenderer(this.tickOptions);if(f.constructor==Array){h.value=Date.create(f[0]).getTime();h.label=f[1];if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(h.value,this.name);this._ticks.push(h)}else{h.value=Date.create(f).getTime();if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(h.value,this.name);this._ticks.push(h)}}this.numberTicks=r.length;this.min=this._ticks[0].value;this.max=this._ticks[this.numberTicks-1].value;this.daTickInterval=[(this.max-this.min)/(this.numberTicks-1)/1000,"seconds"]}else{if(w=="xaxis"||w=="x2axis"){o=this._plotDimensions.width}else{o=this._plotDimensions.height}if(this.min!=null&&this.max!=null&&this.numberTicks!=null){this.tickInterval=null}if(this.tickInterval!=null){if(Number(this.tickInterval)){this.daTickInterval=[Number(this.tickInterval),"seconds"]}else{if(typeof this.tickInterval=="string"){var k=this.tickInterval.split(" ");if(k.length==1){this.daTickInterval=[1,k[0]]}else{if(k.length==2){this.daTickInterval=[k[0],k[1]]}}}}}m=((this.min!=null)?Date.create(this.min).getTime():u.min);p=((this.max!=null)?Date.create(this.max).getTime():u.max);if(m==p){var g=24*60*60*500;m-=g;p+=g}var j=p-m;var l,n;l=(this.min!=null)?Date.create(this.min).getTime():m-j/2*(this.padMin-1);n=(this.max!=null)?Date.create(this.max).getTime():p+j/2*(this.padMax-1);this.min=l;this.max=n;j=this.max-this.min;if(this.numberTicks==null){if(this.daTickInterval!=null){var e=Date.create(this.max).diff(this.min,this.daTickInterval[1],true);this.numberTicks=Math.ceil(e/this.daTickInterval[0])+1;this.max=Date.create(this.min).add((this.numberTicks-1)*this.daTickInterval[0],this.daTickInterval[1]).getTime()}else{if(o>200){this.numberTicks=parseInt(3+(o-200)/100,10)}else{this.numberTicks=2}}}if(this.daTickInterval==null){this.daTickInterval=[j/(this.numberTicks-1)/1000,"seconds"]}for(var q=0;q<this.numberTicks;q++){var m=Date.create(this.min);b=m.add(q*this.daTickInterval[0],this.daTickInterval[1]).getTime();var h=new this.tickRenderer(this.tickOptions);if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(b,this.name);this._ticks.push(h)}}if(this._daTickInterval==null){this._daTickInterval=this.daTickInterval}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.donutRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.donutRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.donutRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.donutRenderer.js @@ -0,0 +1,891 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.DonutRenderer + * Plugin renderer to draw a donut chart. + * x values, if present, will be used as slice labels. + * y values give slice size. + * + * To use this renderer, you need to include the + * donut renderer plugin, for example: + * + * > <script type="text/javascript" src="plugins/jqplot.donutRenderer.js"></script> + * + * Properties described here are passed into the $.jqplot function + * as options on the series renderer. For example: + * + * > plot2 = $.jqplot('chart2', [s1, s2], { + * > seriesDefaults: { + * > renderer:$.jqplot.DonutRenderer, + * > rendererOptions:{ + * > sliceMargin: 2, + * > innerDiameter: 110, + * > startAngle: -90 + * > } + * > } + * > }); + * + * A donut plot will trigger events on the plot target + * according to user interaction. All events return the event object, + * the series index, the point (slice) index, and the point data for + * the appropriate slice. + * + * 'jqplotDataMouseOver' - triggered when user mouseing over a slice. + * 'jqplotDataHighlight' - triggered the first time user mouses over a slice, + * if highlighting is enabled. + * 'jqplotDataUnhighlight' - triggered when a user moves the mouse out of + * a highlighted slice. + * 'jqplotDataClick' - triggered when the user clicks on a slice. + * 'jqplotDataRightClick' - tiggered when the user right clicks on a slice if + * the "captureRightClick" option is set to true on the plot. + */ + $.jqplot.DonutRenderer = function(){ + $.jqplot.LineRenderer.call(this); + }; + + $.jqplot.DonutRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.DonutRenderer.prototype.constructor = $.jqplot.DonutRenderer; + + // called with scope of a series + $.jqplot.DonutRenderer.prototype.init = function(options, plot) { + // Group: Properties + // + // prop: diameter + // Outer diameter of the donut, auto computed by default + this.diameter = null; + // prop: innerDiameter + // Inner diameter of teh donut, auto calculated by default. + // If specified will override thickness value. + this.innerDiameter = null; + // prop: thickness + // thickness of the donut, auto computed by default + // Overridden by if innerDiameter is specified. + this.thickness = null; + // prop: padding + // padding between the donut and plot edges, legend, etc. + this.padding = 20; + // prop: sliceMargin + // angular spacing between donut slices in degrees. + this.sliceMargin = 0; + // prop: ringMargin + // pixel distance between rings, or multiple series in a donut plot. + // null will compute ringMargin based on sliceMargin. + this.ringMargin = null; + // prop: fill + // true or false, wether to fil the slices. + this.fill = true; + // prop: shadowOffset + // offset of the shadow from the slice and offset of + // each succesive stroke of the shadow from the last. + this.shadowOffset = 2; + // prop: shadowAlpha + // transparency of the shadow (0 = transparent, 1 = opaque) + this.shadowAlpha = 0.07; + // prop: shadowDepth + // number of strokes to apply to the shadow, + // each stroke offset shadowOffset from the last. + this.shadowDepth = 5; + // prop: highlightMouseOver + // True to highlight slice when moused over. + // This must be false to enable highlightMouseDown to highlight when clicking on a slice. + this.highlightMouseOver = true; + // prop: highlightMouseDown + // True to highlight when a mouse button is pressed over a slice. + // This will be disabled if highlightMouseOver is true. + this.highlightMouseDown = false; + // prop: highlightColors + // an array of colors to use when highlighting a slice. + this.highlightColors = []; + // prop: dataLabels + // Either 'label', 'value', 'percent' or an array of labels to place on the pie slices. + // Defaults to percentage of each pie slice. + this.dataLabels = 'percent'; + // prop: showDataLabels + // true to show data labels on slices. + this.showDataLabels = false; + // prop: dataLabelFormatString + // Format string for data labels. If none, '%s' is used for "label" and for arrays, '%d' for value and '%d%%' for percentage. + this.dataLabelFormatString = null; + // prop: dataLabelThreshold + // Threshhold in percentage (0 - 100) of pie area, below which no label will be displayed. + // This applies to all label types, not just to percentage labels. + this.dataLabelThreshold = 3; + // prop: dataLabelPositionFactor + // A Multiplier (0-1) of the pie radius which controls position of label on slice. + // Increasing will slide label toward edge of pie, decreasing will slide label toward center of pie. + this.dataLabelPositionFactor = 0.5; + // prop: dataLabelNudge + // Number of pixels to slide the label away from (+) or toward (-) the center of the pie. + this.dataLabelNudge = 0; + // prop: startAngle + // Angle to start drawing donut in degrees. + // According to orientation of canvas coordinate system: + // 0 = on the positive x axis + // -90 = on the positive y axis. + // 90 = on the negaive y axis. + // 180 or - 180 = on the negative x axis. + this.startAngle = 0; + this.tickRenderer = $.jqplot.DonutTickRenderer; + // Used as check for conditions where donut shouldn't be drawn. + this._drawData = true; + + // if user has passed in highlightMouseDown option and not set highlightMouseOver, disable highlightMouseOver + if (options.highlightMouseDown && options.highlightMouseOver == null) { + options.highlightMouseOver = false; + } + + $.extend(true, this, options); + if (this.diameter != null) { + this.diameter = this.diameter - this.sliceMargin; + } + this._diameter = null; + this._innerDiameter = null; + this._radius = null; + this._innerRadius = null; + this._thickness = null; + // references to the previous series in the plot to properly calculate diameters + // and thicknesses of nested rings. + this._previousSeries = []; + this._numberSeries = 1; + // array of [start,end] angles arrays, one for each slice. In radians. + this._sliceAngles = []; + // index of the currenty highlighted point, if any + this._highlightedPoint = null; + + // set highlight colors if none provided + if (this.highlightColors.length == 0) { + for (var i=0; i<this.seriesColors.length; i++){ + var rgba = $.jqplot.getColorComponents(this.seriesColors[i]); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + newrgb[j] = (sum > 570) ? newrgb[j] * 0.8 : newrgb[j] + 0.3 * (255 - newrgb[j]); + newrgb[j] = parseInt(newrgb[j], 10); + } + this.highlightColors.push('rgb('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+')'); + } + } + + plot.postParseOptionsHooks.addOnce(postParseOptions); + plot.postInitHooks.addOnce(postInit); + plot.eventListenerHooks.addOnce('jqplotMouseMove', handleMove); + plot.eventListenerHooks.addOnce('jqplotMouseDown', handleMouseDown); + plot.eventListenerHooks.addOnce('jqplotMouseUp', handleMouseUp); + plot.eventListenerHooks.addOnce('jqplotClick', handleClick); + plot.eventListenerHooks.addOnce('jqplotRightClick', handleRightClick); + plot.postDrawHooks.addOnce(postPlotDraw); + + + }; + + $.jqplot.DonutRenderer.prototype.setGridData = function(plot) { + // set gridData property. This will hold angle in radians of each data point. + var stack = []; + var td = []; + var sa = this.startAngle/180*Math.PI; + var tot = 0; + // don't know if we have any valid data yet, so set plot to not draw. + this._drawData = false; + for (var i=0; i<this.data.length; i++){ + if (this.data[i][1] != 0) { + // we have data, O.K. to draw. + this._drawData = true; + } + stack.push(this.data[i][1]); + td.push([this.data[i][0]]); + if (i>0) { + stack[i] += stack[i-1]; + } + tot += this.data[i][1]; + } + var fact = Math.PI*2/stack[stack.length - 1]; + + for (var i=0; i<stack.length; i++) { + td[i][1] = stack[i] * fact; + td[i][2] = this.data[i][1]/tot; + } + this.gridData = td; + }; + + $.jqplot.DonutRenderer.prototype.makeGridData = function(data, plot) { + var stack = []; + var td = []; + var tot = 0; + var sa = this.startAngle/180*Math.PI; + // don't know if we have any valid data yet, so set plot to not draw. + this._drawData = false; + for (var i=0; i<data.length; i++){ + if (this.data[i][1] != 0) { + // we have data, O.K. to draw. + this._drawData = true; + } + stack.push(data[i][1]); + td.push([data[i][0]]); + if (i>0) { + stack[i] += stack[i-1]; + } + tot += data[i][1]; + } + var fact = Math.PI*2/stack[stack.length - 1]; + + for (var i=0; i<stack.length; i++) { + td[i][1] = stack[i] * fact; + td[i][2] = data[i][1]/tot; + } + return td; + }; + + $.jqplot.DonutRenderer.prototype.drawSlice = function (ctx, ang1, ang2, color, isShadow) { + var r = this._diameter / 2; + var ri = r - this._thickness; + var fill = this.fill; + // var lineWidth = this.lineWidth; + ctx.save(); + ctx.translate(this._center[0], this._center[1]); + // ctx.translate(this.sliceMargin*Math.cos((ang1+ang2)/2), this.sliceMargin*Math.sin((ang1+ang2)/2)); + + if (isShadow) { + for (var i=0; i<this.shadowDepth; i++) { + ctx.save(); + ctx.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI), this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI)); + doDraw(); + } + } + + else { + doDraw(); + } + + function doDraw () { + // Fix for IE and Chrome that can't seem to draw circles correctly. + // ang2 should always be <= 2 pi since that is the way the data is converted. + if (ang2 > 6.282 + this.startAngle) { + ang2 = 6.282 + this.startAngle; + if (ang1 > ang2) { + ang1 = 6.281 + this.startAngle; + } + } + // Fix for IE, where it can't seem to handle 0 degree angles. Also avoids + // ugly line on unfilled donuts. + if (ang1 >= ang2) { + return; + } + ctx.beginPath(); + ctx.fillStyle = color; + ctx.strokeStyle = color; + // ctx.lineWidth = lineWidth; + ctx.arc(0, 0, r, ang1, ang2, false); + ctx.lineTo(ri*Math.cos(ang2), ri*Math.sin(ang2)); + ctx.arc(0,0, ri, ang2, ang1, true); + ctx.closePath(); + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + } + + if (isShadow) { + for (var i=0; i<this.shadowDepth; i++) { + ctx.restore(); + } + } + + ctx.restore(); + }; + + // called with scope of series + $.jqplot.DonutRenderer.prototype.draw = function (ctx, gd, options, plot) { + var i; + var opts = (options != undefined) ? options : {}; + // offset and direction of offset due to legend placement + var offx = 0; + var offy = 0; + var trans = 1; + // var colorGenerator = new this.colorGenerator(this.seriesColors); + if (options.legendInfo && options.legendInfo.placement == 'insideGrid') { + var li = options.legendInfo; + switch (li.location) { + case 'nw': + offx = li.width + li.xoffset; + break; + case 'w': + offx = li.width + li.xoffset; + break; + case 'sw': + offx = li.width + li.xoffset; + break; + case 'ne': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'e': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'se': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'n': + offy = li.height + li.yoffset; + break; + case 's': + offy = li.height + li.yoffset; + trans = -1; + break; + default: + break; + } + } + + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + var cw = ctx.canvas.width; + var ch = ctx.canvas.height; + var w = cw - offx - 2 * this.padding; + var h = ch - offy - 2 * this.padding; + var mindim = Math.min(w,h); + var d = mindim; + var ringmargin = (this.ringMargin == null) ? this.sliceMargin * 2.0 : this.ringMargin; + + for (var i=0; i<this._previousSeries.length; i++) { + d -= 2.0 * this._previousSeries[i]._thickness + 2.0 * ringmargin; + } + this._diameter = this.diameter || d; + if (this.innerDiameter != null) { + var od = (this._numberSeries > 1 && this.index > 0) ? this._previousSeries[0]._diameter : this._diameter; + this._thickness = this.thickness || (od - this.innerDiameter - 2.0*ringmargin*this._numberSeries) / this._numberSeries/2.0; + } + else { + this._thickness = this.thickness || mindim / 2 / (this._numberSeries + 1) * 0.85; + } + + var r = this._radius = this._diameter/2; + this._innerRadius = this._radius - this._thickness; + var sa = this.startAngle / 180 * Math.PI; + this._center = [(cw - trans * offx)/2 + trans * offx, (ch - trans*offy)/2 + trans * offy]; + + if (this.shadow) { + var shadowColor = 'rgba(0,0,0,'+this.shadowAlpha+')'; + for (var i=0; i<gd.length; i++) { + var ang1 = (i == 0) ? sa : gd[i-1][1] + sa; + // Adjust ang1 and ang2 for sliceMargin + ang1 += this.sliceMargin/180*Math.PI; + this.renderer.drawSlice.call (this, ctx, ang1, gd[i][1]+sa, shadowColor, true); + } + + } + for (var i=0; i<gd.length; i++) { + var ang1 = (i == 0) ? sa : gd[i-1][1] + sa; + // Adjust ang1 and ang2 for sliceMargin + ang1 += this.sliceMargin/180*Math.PI; + var ang2 = gd[i][1] + sa; + this._sliceAngles.push([ang1, ang2]); + this.renderer.drawSlice.call (this, ctx, ang1, ang2, this.seriesColors[i], false); + + if (this.showDataLabels && gd[i][2]*100 >= this.dataLabelThreshold) { + var fstr, avgang = (ang1+ang2)/2, label; + + if (this.dataLabels == 'label') { + fstr = this.dataLabelFormatString || '%s'; + label = $.jqplot.sprintf(fstr, gd[i][0]); + } + else if (this.dataLabels == 'value') { + fstr = this.dataLabelFormatString || '%d'; + label = $.jqplot.sprintf(fstr, gd[i][1]); + } + else if (this.dataLabels == 'percent') { + fstr = this.dataLabelFormatString || '%d%%'; + label = $.jqplot.sprintf(fstr, gd[i][2]*100); + } + else if (this.dataLabels.constructor == Array) { + fstr = this.dataLabelFormatString || '%s'; + label = $.jqplot.sprintf(fstr, this.dataLabels[i]); + } + + var fact = this._innerRadius + this._thickness * this.dataLabelPositionFactor + this.sliceMargin + this.dataLabelNudge; + + var x = this._center[0] + Math.cos(avgang) * fact + this.canvas._offsets.left; + var y = this._center[1] + Math.sin(avgang) * fact + this.canvas._offsets.top; + + var labelelem = $('<span class="jqplot-donut-series jqplot-data-label" style="position:absolute;">' + label + '</span>').insertBefore(plot.eventCanvas._elem); + x -= labelelem.width()/2; + y -= labelelem.height()/2; + x = Math.round(x); + y = Math.round(y); + labelelem.css({left: x, top: y}); + } + } + + }; + + $.jqplot.DonutAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + }; + + $.jqplot.DonutAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.DonutAxisRenderer.prototype.constructor = $.jqplot.DonutAxisRenderer; + + + // There are no traditional axes on a donut chart. We just need to provide + // dummy objects with properties so the plot will render. + // called with scope of axis object. + $.jqplot.DonutAxisRenderer.prototype.init = function(options){ + // + this.tickRenderer = $.jqplot.DonutTickRenderer; + $.extend(true, this, options); + // I don't think I'm going to need _dataBounds here. + // have to go Axis scaling in a way to fit chart onto plot area + // and provide u2p and p2u functionality for mouse cursor, etc. + // for convienence set _dataBounds to 0 and 100 and + // set min/max to 0 and 100. + this._dataBounds = {min:0, max:100}; + this.min = 0; + this.max = 100; + this.showTicks = false; + this.ticks = []; + this.showMark = false; + this.show = false; + }; + + + + + $.jqplot.DonutLegendRenderer = function(){ + $.jqplot.TableLegendRenderer.call(this); + }; + + $.jqplot.DonutLegendRenderer.prototype = new $.jqplot.TableLegendRenderer(); + $.jqplot.DonutLegendRenderer.prototype.constructor = $.jqplot.DonutLegendRenderer; + + /** + * Class: $.jqplot.DonutLegendRenderer + * Legend Renderer specific to donut plots. Set by default + * when user creates a donut plot. + */ + $.jqplot.DonutLegendRenderer.prototype.init = function(options) { + // Group: Properties + // + // prop: numberRows + // Maximum number of rows in the legend. 0 or null for unlimited. + this.numberRows = null; + // prop: numberColumns + // Maximum number of columns in the legend. 0 or null for unlimited. + this.numberColumns = null; + $.extend(true, this, options); + }; + + // called with context of legend + $.jqplot.DonutLegendRenderer.prototype.draw = function() { + var legend = this; + if (this.show) { + var series = this._series; + var ss = 'position:absolute;'; + ss += (this.background) ? 'background:'+this.background+';' : ''; + ss += (this.border) ? 'border:'+this.border+';' : ''; + ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : ''; + ss += (this.textColor) ? 'color:'+this.textColor+';' : ''; + ss += (this.marginTop != null) ? 'margin-top:'+this.marginTop+';' : ''; + ss += (this.marginBottom != null) ? 'margin-bottom:'+this.marginBottom+';' : ''; + ss += (this.marginLeft != null) ? 'margin-left:'+this.marginLeft+';' : ''; + ss += (this.marginRight != null) ? 'margin-right:'+this.marginRight+';' : ''; + this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>'); + // Donut charts legends don't go by number of series, but by number of data points + // in the series. Refactor things here for that. + + var pad = false, + reverse = false, + nr, nc; + var s = series[0]; + var colorGenerator = new $.jqplot.ColorGenerator(s.seriesColors); + + if (s.show) { + var pd = s.data; + if (this.numberRows) { + nr = this.numberRows; + if (!this.numberColumns){ + nc = Math.ceil(pd.length/nr); + } + else{ + nc = this.numberColumns; + } + } + else if (this.numberColumns) { + nc = this.numberColumns; + nr = Math.ceil(pd.length/this.numberColumns); + } + else { + nr = pd.length; + nc = 1; + } + + var i, j, tr, td1, td2, lt, rs, color; + var idx = 0; + + for (i=0; i<nr; i++) { + if (reverse){ + tr = $('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem); + } + else{ + tr = $('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem); + } + for (j=0; j<nc; j++) { + if (idx < pd.length){ + lt = this.labels[idx] || pd[idx][0].toString(); + color = colorGenerator.next(); + if (!reverse){ + if (i>0){ + pad = true; + } + else{ + pad = false; + } + } + else{ + if (i == nr -1){ + pad = false; + } + else{ + pad = true; + } + } + rs = (pad) ? this.rowSpacing : '0'; + + td1 = $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+ + '<div><div class="jqplot-table-legend-swatch" style="border-color:'+color+';"></div>'+ + '</div></td>'); + td2 = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>'); + if (this.escapeHtml){ + td2.text(lt); + } + else { + td2.html(lt); + } + if (reverse) { + td2.prependTo(tr); + td1.prependTo(tr); + } + else { + td1.appendTo(tr); + td2.appendTo(tr); + } + pad = true; + } + idx++; + } + } + } + } + return this._elem; + }; + + // $.jqplot.DonutLegendRenderer.prototype.pack = function(offsets) { + // if (this.show) { + // // fake a grid for positioning + // var grid = {_top:offsets.top, _left:offsets.left, _right:offsets.right, _bottom:this._plotDimensions.height - offsets.bottom}; + // if (this.placement == 'insideGrid') { + // switch (this.location) { + // case 'nw': + // var a = grid._left + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css('left', a); + // this._elem.css('top', b); + // break; + // case 'n': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = grid._top + this.yoffset; + // this._elem.css('left', a); + // this._elem.css('top', b); + // break; + // case 'ne': + // var a = offsets.right + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css({right:a, top:b}); + // break; + // case 'e': + // var a = offsets.right + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({right:a, top:b}); + // break; + // case 'se': + // var a = offsets.right + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // case 's': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({left:a, bottom:b}); + // break; + // case 'sw': + // var a = grid._left + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({left:a, bottom:b}); + // break; + // case 'w': + // var a = grid._left + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({left:a, top:b}); + // break; + // default: // same as 'se' + // var a = grid._right - this.xoffset; + // var b = grid._bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // } + // + // } + // else { + // switch (this.location) { + // case 'nw': + // var a = this._plotDimensions.width - grid._left + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css('right', a); + // this._elem.css('top', b); + // break; + // case 'n': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = this._plotDimensions.height - grid._top + this.yoffset; + // this._elem.css('left', a); + // this._elem.css('bottom', b); + // break; + // case 'ne': + // var a = this._plotDimensions.width - offsets.right + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css({left:a, top:b}); + // break; + // case 'e': + // var a = this._plotDimensions.width - offsets.right + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({left:a, top:b}); + // break; + // case 'se': + // var a = this._plotDimensions.width - offsets.right + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({left:a, bottom:b}); + // break; + // case 's': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = this._plotDimensions.height - offsets.bottom + this.yoffset; + // this._elem.css({left:a, top:b}); + // break; + // case 'sw': + // var a = this._plotDimensions.width - grid._left + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // case 'w': + // var a = this._plotDimensions.width - grid._left + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({right:a, top:b}); + // break; + // default: // same as 'se' + // var a = grid._right - this.xoffset; + // var b = grid._bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // } + // } + // } + // }; + + // setup default renderers for axes and legend so user doesn't have to + // called with scope of plot + function preInit(target, data, options) { + options = options || {}; + options.axesDefaults = options.axesDefaults || {}; + options.legend = options.legend || {}; + options.seriesDefaults = options.seriesDefaults || {}; + // only set these if there is a donut series + var setopts = false; + if (options.seriesDefaults.renderer == $.jqplot.DonutRenderer) { + setopts = true; + } + else if (options.series) { + for (var i=0; i < options.series.length; i++) { + if (options.series[i].renderer == $.jqplot.DonutRenderer) { + setopts = true; + } + } + } + + if (setopts) { + options.axesDefaults.renderer = $.jqplot.DonutAxisRenderer; + options.legend.renderer = $.jqplot.DonutLegendRenderer; + options.legend.preDraw = true; + options.seriesDefaults.pointLabels = {show: false}; + } + } + + // called with scope of plot. + function postInit(target, data, options) { + // if multiple series, add a reference to the previous one so that + // donut rings can nest. + for (var i=1; i<this.series.length; i++) { + if (!this.series[i]._previousSeries.length){ + for (var j=0; j<i; j++) { + if (this.series[i].renderer.constructor == $.jqplot.DonutRenderer && this.series[j].renderer.constructor == $.jqplot.DonutRenderer) { + this.series[i]._previousSeries.push(this.series[j]); + } + } + } + } + for (i=0; i<this.series.length; i++) { + if (this.series[i].renderer.constructor == $.jqplot.DonutRenderer) { + this.series[i]._numberSeries = this.series.length; + // don't allow mouseover and mousedown at same time. + if (this.series[i].highlightMouseOver) { + this.series[i].highlightMouseDown = false; + } + } + } + this.target.bind('mouseout', {plot:this}, function (ev) { unhighlight(ev.data.plot); }); + } + + var postParseOptionsRun = false; + // called with scope of plot + function postParseOptions(options) { + for (var i=0; i<this.series.length; i++) { + this.series[i].seriesColors = this.seriesColors; + this.series[i].colorGenerator = this.colorGenerator; + } + } + + function highlight (plot, sidx, pidx) { + var s = plot.series[sidx]; + var canvas = plot.plugins.donutRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0,canvas._ctx.canvas.width, canvas._ctx.canvas.height); + s._highlightedPoint = pidx; + plot.plugins.donutRenderer.highlightedSeriesIndex = sidx; + s.renderer.drawSlice.call(s, canvas._ctx, s._sliceAngles[pidx][0], s._sliceAngles[pidx][1], s.highlightColors[pidx], false); + } + + function unhighlight (plot) { + var canvas = plot.plugins.donutRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0, canvas._ctx.canvas.width, canvas._ctx.canvas.height); + for (var i=0; i<plot.series.length; i++) { + plot.series[i]._highlightedPoint = null; + } + plot.plugins.donutRenderer.highlightedSeriesIndex = null; + plot.target.trigger('jqplotDataUnhighlight'); + } + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt1 = jQuery.Event('jqplotDataMouseOver'); + evt1.pageX = ev.pageX; + evt1.pageY = ev.pageY; + plot.target.trigger(evt1, ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.donutRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseDown(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + if (plot.series[ins[0]].highlightMouseDown && !(ins[0] == plot.plugins.donutRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseUp(ev, gridpos, datapos, neighbor, plot) { + var idx = plot.plugins.donutRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + } + + function handleClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt = jQuery.Event('jqplotDataClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + function handleRightClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var idx = plot.plugins.donutRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + var evt = jQuery.Event('jqplotDataRightClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + function postPlotDraw() { + this.plugins.donutRenderer = {highlightedSeriesIndex:null}; + this.plugins.donutRenderer.highlightCanvas = new $.jqplot.GenericCanvas(); + // do we have any data labels? if so, put highlight canvas before those + // Fix for broken jquery :first selector with canvas (VML) elements. + var labels = $(this.targetId+' .jqplot-data-label'); + if (labels.length) { + $(labels[0]).before(this.plugins.donutRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-donutRenderer-highlight-canvas', this._plotDimensions)); + } + // else put highlight canvas before event canvas. + else { + this.eventCanvas._elem.before(this.plugins.donutRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-donutRenderer-highlight-canvas', this._plotDimensions)); + } + var hctx = this.plugins.donutRenderer.highlightCanvas.setContext(); + } + + $.jqplot.preInitHooks.push(preInit); + + $.jqplot.DonutTickRenderer = function() { + $.jqplot.AxisTickRenderer.call(this); + }; + + $.jqplot.DonutTickRenderer.prototype = new $.jqplot.AxisTickRenderer(); + $.jqplot.DonutTickRenderer.prototype.constructor = $.jqplot.DonutTickRenderer; + +})(jQuery); + + ADDED Site/Site_W/jpqplot/plugins/jqplot.donutRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.donutRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.donutRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.donutRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(e){e.jqplot.DonutRenderer=function(){e.jqplot.LineRenderer.call(this)};e.jqplot.DonutRenderer.prototype=new e.jqplot.LineRenderer();e.jqplot.DonutRenderer.prototype.constructor=e.jqplot.DonutRenderer;e.jqplot.DonutRenderer.prototype.init=function(p,t){this.diameter=null;this.innerDiameter=null;this.thickness=null;this.padding=20;this.sliceMargin=0;this.ringMargin=null;this.fill=true;this.shadowOffset=2;this.shadowAlpha=0.07;this.shadowDepth=5;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.dataLabels="percent";this.showDataLabels=false;this.dataLabelFormatString=null;this.dataLabelThreshold=3;this.dataLabelPositionFactor=0.5;this.dataLabelNudge=0;this.startAngle=0;this.tickRenderer=e.jqplot.DonutTickRenderer;this._drawData=true;if(p.highlightMouseDown&&p.highlightMouseOver==null){p.highlightMouseOver=false}e.extend(true,this,p);if(this.diameter!=null){this.diameter=this.diameter-this.sliceMargin}this._diameter=null;this._innerDiameter=null;this._radius=null;this._innerRadius=null;this._thickness=null;this._previousSeries=[];this._numberSeries=1;this._sliceAngles=[];this._highlightedPoint=null;if(this.highlightColors.length==0){for(var r=0;r<this.seriesColors.length;r++){var q=e.jqplot.getColorComponents(this.seriesColors[r]);var n=[q[0],q[1],q[2]];var s=n[0]+n[1]+n[2];for(var o=0;o<3;o++){n[o]=(s>570)?n[o]*0.8:n[o]+0.3*(255-n[o]);n[o]=parseInt(n[o],10)}this.highlightColors.push("rgb("+n[0]+","+n[1]+","+n[2]+")")}}t.postParseOptionsHooks.addOnce(l);t.postInitHooks.addOnce(g);t.eventListenerHooks.addOnce("jqplotMouseMove",b);t.eventListenerHooks.addOnce("jqplotMouseDown",a);t.eventListenerHooks.addOnce("jqplotMouseUp",j);t.eventListenerHooks.addOnce("jqplotClick",f);t.eventListenerHooks.addOnce("jqplotRightClick",m);t.postDrawHooks.addOnce(h)};e.jqplot.DonutRenderer.prototype.setGridData=function(s){var o=[];var t=[];var n=this.startAngle/180*Math.PI;var r=0;this._drawData=false;for(var q=0;q<this.data.length;q++){if(this.data[q][1]!=0){this._drawData=true}o.push(this.data[q][1]);t.push([this.data[q][0]]);if(q>0){o[q]+=o[q-1]}r+=this.data[q][1]}var p=Math.PI*2/o[o.length-1];for(var q=0;q<o.length;q++){t[q][1]=o[q]*p;t[q][2]=this.data[q][1]/r}this.gridData=t};e.jqplot.DonutRenderer.prototype.makeGridData=function(s,t){var o=[];var u=[];var r=0;var n=this.startAngle/180*Math.PI;this._drawData=false;for(var q=0;q<s.length;q++){if(this.data[q][1]!=0){this._drawData=true}o.push(s[q][1]);u.push([s[q][0]]);if(q>0){o[q]+=o[q-1]}r+=s[q][1]}var p=Math.PI*2/o[o.length-1];for(var q=0;q<o.length;q++){u[q][1]=o[q]*p;u[q][2]=s[q][1]/r}return u};e.jqplot.DonutRenderer.prototype.drawSlice=function(x,u,t,p,s){var n=this._diameter/2;var v=n-this._thickness;var w=this.fill;x.save();x.translate(this._center[0],this._center[1]);if(s){for(var q=0;q<this.shadowDepth;q++){x.save();x.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI),this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI));o()}}else{o()}function o(){if(t>6.282+this.startAngle){t=6.282+this.startAngle;if(u>t){u=6.281+this.startAngle}}if(u>=t){return}x.beginPath();x.fillStyle=p;x.strokeStyle=p;x.arc(0,0,n,u,t,false);x.lineTo(v*Math.cos(t),v*Math.sin(t));x.arc(0,0,v,t,u,true);x.closePath();if(w){x.fill()}else{x.stroke()}}if(s){for(var q=0;q<this.shadowDepth;q++){x.restore()}}x.restore()};e.jqplot.DonutRenderer.prototype.draw=function(N,V,t,P){var Q;var J=(t!=undefined)?t:{};var q=0;var p=0;var u=1;if(t.legendInfo&&t.legendInfo.placement=="insideGrid"){var I=t.legendInfo;switch(I.location){case"nw":q=I.width+I.xoffset;break;case"w":q=I.width+I.xoffset;break;case"sw":q=I.width+I.xoffset;break;case"ne":q=I.width+I.xoffset;u=-1;break;case"e":q=I.width+I.xoffset;u=-1;break;case"se":q=I.width+I.xoffset;u=-1;break;case"n":p=I.height+I.yoffset;break;case"s":p=I.height+I.yoffset;u=-1;break;default:break}}var B=(J.shadow!=undefined)?J.shadow:this.shadow;var W=(J.showLine!=undefined)?J.showLine:this.showLine;var O=(J.fill!=undefined)?J.fill:this.fill;var s=N.canvas.width;var H=N.canvas.height;var G=s-q-2*this.padding;var R=H-p-2*this.padding;var v=Math.min(G,R);var T=v;var X=(this.ringMargin==null)?this.sliceMargin*2:this.ringMargin;for(var Q=0;Q<this._previousSeries.length;Q++){T-=2*this._previousSeries[Q]._thickness+2*X}this._diameter=this.diameter||T;if(this.innerDiameter!=null){var M=(this._numberSeries>1&&this.index>0)?this._previousSeries[0]._diameter:this._diameter;this._thickness=this.thickness||(M-this.innerDiameter-2*X*this._numberSeries)/this._numberSeries/2}else{this._thickness=this.thickness||v/2/(this._numberSeries+1)*0.85}var K=this._radius=this._diameter/2;this._innerRadius=this._radius-this._thickness;var o=this.startAngle/180*Math.PI;this._center=[(s-u*q)/2+u*q,(H-u*p)/2+u*p];if(this.shadow){var L="rgba(0,0,0,"+this.shadowAlpha+")";for(var Q=0;Q<V.length;Q++){var A=(Q==0)?o:V[Q-1][1]+o;A+=this.sliceMargin/180*Math.PI;this.renderer.drawSlice.call(this,N,A,V[Q][1]+o,L,true)}}for(var Q=0;Q<V.length;Q++){var A=(Q==0)?o:V[Q-1][1]+o;A+=this.sliceMargin/180*Math.PI;var z=V[Q][1]+o;this._sliceAngles.push([A,z]);this.renderer.drawSlice.call(this,N,A,z,this.seriesColors[Q],false);if(this.showDataLabels&&V[Q][2]*100>=this.dataLabelThreshold){var S,U=(A+z)/2,C;if(this.dataLabels=="label"){S=this.dataLabelFormatString||"%s";C=e.jqplot.sprintf(S,V[Q][0])}else{if(this.dataLabels=="value"){S=this.dataLabelFormatString||"%d";C=e.jqplot.sprintf(S,V[Q][1])}else{if(this.dataLabels=="percent"){S=this.dataLabelFormatString||"%d%%";C=e.jqplot.sprintf(S,V[Q][2]*100)}else{if(this.dataLabels.constructor==Array){S=this.dataLabelFormatString||"%s";C=e.jqplot.sprintf(S,this.dataLabels[Q])}}}}var n=this._innerRadius+this._thickness*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var F=this._center[0]+Math.cos(U)*n+this.canvas._offsets.left;var E=this._center[1]+Math.sin(U)*n+this.canvas._offsets.top;var D=e('<span class="jqplot-donut-series jqplot-data-label" style="position:absolute;">'+C+"</span>").insertBefore(P.eventCanvas._elem);F-=D.width()/2;E-=D.height()/2;F=Math.round(F);E=Math.round(E);D.css({left:F,top:E})}}};e.jqplot.DonutAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.DonutAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.DonutAxisRenderer.prototype.constructor=e.jqplot.DonutAxisRenderer;e.jqplot.DonutAxisRenderer.prototype.init=function(n){this.tickRenderer=e.jqplot.DonutTickRenderer;e.extend(true,this,n);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.DonutLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.DonutLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.DonutLegendRenderer.prototype.constructor=e.jqplot.DonutLegendRenderer;e.jqplot.DonutLegendRenderer.prototype.init=function(n){this.numberRows=null;this.numberColumns=null;e.extend(true,this,n)};e.jqplot.DonutLegendRenderer.prototype.draw=function(){var q=this;if(this.show){var y=this._series;var B="position:absolute;";B+=(this.background)?"background:"+this.background+";":"";B+=(this.border)?"border:"+this.border+";":"";B+=(this.fontSize)?"font-size:"+this.fontSize+";":"";B+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";B+=(this.textColor)?"color:"+this.textColor+";":"";B+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";B+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";B+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";B+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=e('<table class="jqplot-table-legend" style="'+B+'"></table>');var F=false,x=false,n,v;var z=y[0];var o=new e.jqplot.ColorGenerator(z.seriesColors);if(z.show){var G=z.data;if(this.numberRows){n=this.numberRows;if(!this.numberColumns){v=Math.ceil(G.length/n)}else{v=this.numberColumns}}else{if(this.numberColumns){v=this.numberColumns;n=Math.ceil(G.length/this.numberColumns)}else{n=G.length;v=1}}var E,D,p,t,r,u,w,C;var A=0;for(E=0;E<n;E++){if(x){p=e('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem)}else{p=e('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem)}for(D=0;D<v;D++){if(A<G.length){u=this.labels[A]||G[A][0].toString();C=o.next();if(!x){if(E>0){F=true}else{F=false}}else{if(E==n-1){F=false}else{F=true}}w=(F)?this.rowSpacing:"0";t=e('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+w+';"><div><div class="jqplot-table-legend-swatch" style="border-color:'+C+';"></div></div></td>');r=e('<td class="jqplot-table-legend" style="padding-top:'+w+';"></td>');if(this.escapeHtml){r.text(u)}else{r.html(u)}if(x){r.prependTo(p);t.prependTo(p)}else{t.appendTo(p);r.appendTo(p)}F=true}A++}}}}return this._elem};function c(r,q,o){o=o||{};o.axesDefaults=o.axesDefaults||{};o.legend=o.legend||{};o.seriesDefaults=o.seriesDefaults||{};var n=false;if(o.seriesDefaults.renderer==e.jqplot.DonutRenderer){n=true}else{if(o.series){for(var p=0;p<o.series.length;p++){if(o.series[p].renderer==e.jqplot.DonutRenderer){n=true}}}}if(n){o.axesDefaults.renderer=e.jqplot.DonutAxisRenderer;o.legend.renderer=e.jqplot.DonutLegendRenderer;o.legend.preDraw=true;o.seriesDefaults.pointLabels={show:false}}}function g(r,q,o){for(var p=1;p<this.series.length;p++){if(!this.series[p]._previousSeries.length){for(var n=0;n<p;n++){if(this.series[p].renderer.constructor==e.jqplot.DonutRenderer&&this.series[n].renderer.constructor==e.jqplot.DonutRenderer){this.series[p]._previousSeries.push(this.series[n])}}}}for(p=0;p<this.series.length;p++){if(this.series[p].renderer.constructor==e.jqplot.DonutRenderer){this.series[p]._numberSeries=this.series.length;if(this.series[p].highlightMouseOver){this.series[p].highlightMouseDown=false}}}this.target.bind("mouseout",{plot:this},function(s){i(s.data.plot)})}var k=false;function l(n){for(var o=0;o<this.series.length;o++){this.series[o].seriesColors=this.seriesColors;this.series[o].colorGenerator=this.colorGenerator}}function d(r,q,p){var o=r.series[q];var n=r.plugins.donutRenderer.highlightCanvas;n._ctx.clearRect(0,0,n._ctx.canvas.width,n._ctx.canvas.height);o._highlightedPoint=p;r.plugins.donutRenderer.highlightedSeriesIndex=q;o.renderer.drawSlice.call(o,n._ctx,o._sliceAngles[p][0],o._sliceAngles[p][1],o.highlightColors[p],false)}function i(p){var n=p.plugins.donutRenderer.highlightCanvas;n._ctx.clearRect(0,0,n._ctx.canvas.width,n._ctx.canvas.height);for(var o=0;o<p.series.length;o++){p.series[o]._highlightedPoint=null}p.plugins.donutRenderer.highlightedSeriesIndex=null;p.target.trigger("jqplotDataUnhighlight")}function b(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];var o=jQuery.Event("jqplotDataMouseOver");o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p);if(s.series[p[0]].highlightMouseOver&&!(p[0]==s.plugins.donutRenderer.highlightedSeriesIndex&&p[1]==s.series[p[0]]._highlightedPoint)){var n=jQuery.Event("jqplotDataHighlight");n.pageX=r.pageX;n.pageY=r.pageY;s.target.trigger(n,p);d(s,p[0],p[1])}}else{if(t==null){i(s)}}}function a(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];if(r.series[o[0]].highlightMouseDown&&!(o[0]==r.plugins.donutRenderer.highlightedSeriesIndex&&o[1]==r.series[o[0]]._highlightedPoint)){var n=jQuery.Event("jqplotDataHighlight");n.pageX=q.pageX;n.pageY=q.pageY;r.target.trigger(n,o);d(r,o[0],o[1])}}else{if(s==null){i(r)}}}function j(p,o,s,r,q){var n=q.plugins.donutRenderer.highlightedSeriesIndex;if(n!=null&&q.series[n].highlightMouseDown){i(q)}}function f(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];var n=jQuery.Event("jqplotDataClick");n.pageX=q.pageX;n.pageY=q.pageY;r.target.trigger(n,o)}}function m(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];var n=s.plugins.donutRenderer.highlightedSeriesIndex;if(n!=null&&s.series[n].highlightMouseDown){i(s)}var o=jQuery.Event("jqplotDataRightClick");o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p)}}function h(){this.plugins.donutRenderer={highlightedSeriesIndex:null};this.plugins.donutRenderer.highlightCanvas=new e.jqplot.GenericCanvas();var o=e(this.targetId+" .jqplot-data-label");if(o.length){e(o[0]).before(this.plugins.donutRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-donutRenderer-highlight-canvas",this._plotDimensions))}else{this.eventCanvas._elem.before(this.plugins.donutRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-donutRenderer-highlight-canvas",this._plotDimensions))}var n=this.plugins.donutRenderer.highlightCanvas.setContext()}e.jqplot.preInitHooks.push(c);e.jqplot.DonutTickRenderer=function(){e.jqplot.AxisTickRenderer.call(this)};e.jqplot.DonutTickRenderer.prototype=new e.jqplot.AxisTickRenderer();e.jqplot.DonutTickRenderer.prototype.constructor=e.jqplot.DonutTickRenderer})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.dragable.js Index: Site/Site_W/jpqplot/plugins/jqplot.dragable.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.dragable.js +++ Site/Site_W/jpqplot/plugins/jqplot.dragable.js @@ -0,0 +1,206 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + + /** + * Class: $.jqplot.Dragable + * Plugin to make plotted points dragable by the user. + */ + $.jqplot.Dragable = function(options) { + // Group: Properties + this.markerRenderer = new $.jqplot.MarkerRenderer({shadow:false}); + this.shapeRenderer = new $.jqplot.ShapeRenderer(); + this.isDragging = false; + this.isOver = false; + this._ctx; + this._elem; + this._point; + this._gridData; + // prop: color + // CSS color spec for the dragged point (and adjacent line segment or bar). + this.color; + // prop: constrainTo + // Constrain dragging motion to an axis or to none. + // Allowable values are 'none', 'x', 'y' + this.constrainTo = 'none'; // 'x', 'y', or 'none'; + $.extend(true, this, options); + }; + + function DragCanvas() { + $.jqplot.GenericCanvas.call(this); + this.isDragging = false; + this.isOver = false; + this._neighbor; + this._cursors = []; + } + + DragCanvas.prototype = new $.jqplot.GenericCanvas(); + DragCanvas.prototype.constructor = DragCanvas; + + + // called within scope of series + $.jqplot.Dragable.parseOptions = function (defaults, opts) { + var options = opts || {}; + this.plugins.dragable = new $.jqplot.Dragable(options.dragable); + // since this function is called before series options are parsed, + // we can set this here and it will be overridden if needed. + this.isDragable = $.jqplot.config.enablePlugins; + }; + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + // add a new DragCanvas object to the plot plugins to handle drawing on this new canvas. + $.jqplot.Dragable.postPlotDraw = function() { + this.plugins.dragable = {previousCursor:'auto', isOver:false}; + this.plugins.dragable.dragCanvas = new DragCanvas(); + + this.eventCanvas._elem.before(this.plugins.dragable.dragCanvas.createElement(this._gridPadding, 'jqplot-dragable-canvas', this._plotDimensions)); + var dctx = this.plugins.dragable.dragCanvas.setContext(); + }; + + //$.jqplot.preInitHooks.push($.jqplot.Dragable.init); + $.jqplot.preParseSeriesOptionsHooks.push($.jqplot.Dragable.parseOptions); + $.jqplot.postDrawHooks.push($.jqplot.Dragable.postPlotDraw); + $.jqplot.eventListenerHooks.push(['jqplotMouseMove', handleMove]); + $.jqplot.eventListenerHooks.push(['jqplotMouseDown', handleDown]); + $.jqplot.eventListenerHooks.push(['jqplotMouseUp', handleUp]); + + + function initDragPoint(plot, neighbor) { + var s = plot.series[neighbor.seriesIndex]; + var drag = s.plugins.dragable; + + // first, init the mark renderer for the dragged point + var smr = s.markerRenderer; + var mr = drag.markerRenderer; + mr.style = smr.style; + mr.lineWidth = smr.lineWidth + 2.5; + mr.size = smr.size + 5; + if (!drag.color) { + var rgba = $.jqplot.getColorComponents(smr.color); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var alpha = (rgba[3] >= 0.6) ? rgba[3]*0.6 : rgba[3]*(2-rgba[3]); + drag.color = 'rgba('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+','+alpha+')'; + } + mr.color = drag.color; + mr.init(); + + var start = (neighbor.pointIndex > 0) ? neighbor.pointIndex - 1 : 0; + var end = neighbor.pointIndex+2; + drag._gridData = s.gridData.slice(start, end); + } + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + if (plot.plugins.dragable.dragCanvas.isDragging) { + var dc = plot.plugins.dragable.dragCanvas; + var dp = dc._neighbor; + var s = plot.series[dp.seriesIndex]; + var drag = s.plugins.dragable; + var gd = s.gridData; + + // compute the new grid position with any constraints. + var x = (drag.constrainTo == 'y') ? dp.gridData[0] : gridpos.x; + var y = (drag.constrainTo == 'x') ? dp.gridData[1] : gridpos.y; + + // compute data values for any listeners. + var xu = s._xaxis.series_p2u(x); + var yu = s._yaxis.series_p2u(y); + + // clear the canvas then redraw effect at new position. + var ctx = dc._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + + // adjust our gridData for the new mouse position + if (dp.pointIndex > 0) { + drag._gridData[1] = [x, y]; + } + else { + drag._gridData[0] = [x, y]; + } + plot.series[dp.seriesIndex].draw(dc._ctx, {gridData:drag._gridData, shadow:false, preventJqPlotSeriesDrawTrigger:true, color:drag.color, markerOptions:{color:drag.color, shadow:false}, trendline:{show:false}}); + plot.target.trigger('jqplotSeriesPointChange', [dp.seriesIndex, dp.pointIndex, [xu,yu], [x,y]]); + } + else if (neighbor != null) { + var series = plot.series[neighbor.seriesIndex]; + if (series.isDragable) { + var dc = plot.plugins.dragable.dragCanvas; + if (!dc.isOver) { + dc._cursors.push(ev.target.style.cursor); + ev.target.style.cursor = "pointer"; + } + dc.isOver = true; + } + } + else if (neighbor == null) { + var dc = plot.plugins.dragable.dragCanvas; + if (dc.isOver) { + ev.target.style.cursor = dc._cursors.pop(); + dc.isOver = false; + } + } + } + + function handleDown(ev, gridpos, datapos, neighbor, plot) { + var dc = plot.plugins.dragable.dragCanvas; + dc._cursors.push(ev.target.style.cursor); + if (neighbor != null) { + var s = plot.series[neighbor.seriesIndex]; + var drag = s.plugins.dragable; + if (s.isDragable && !dc.isDragging) { + dc._neighbor = neighbor; + dc.isDragging = true; + initDragPoint(plot, neighbor); + drag.markerRenderer.draw(s.gridData[neighbor.pointIndex][0], s.gridData[neighbor.pointIndex][1], dc._ctx); + ev.target.style.cursor = "move"; + plot.target.trigger('jqlotDragStart', [neighbor.seriesIndex, neighbor.pointIndex, gridpos, datapos]); + } + } + // Just in case of a hickup, we'll clear the drag canvas and reset. + else { + var ctx = dc._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + dc.isDragging = false; + } + } + + function handleUp(ev, gridpos, datapos, neighbor, plot) { + if (plot.plugins.dragable.dragCanvas.isDragging) { + var dc = plot.plugins.dragable.dragCanvas; + // clear the canvas + var ctx = dc._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + dc.isDragging = false; + // redraw the series canvas at the new point. + var dp = dc._neighbor; + var s = plot.series[dp.seriesIndex]; + var drag = s.plugins.dragable; + // compute the new grid position with any constraints. + var x = (drag.constrainTo == 'y') ? dp.data[0] : datapos[s.xaxis]; + var y = (drag.constrainTo == 'x') ? dp.data[1] : datapos[s.yaxis]; + // var x = datapos[s.xaxis]; + // var y = datapos[s.yaxis]; + s.data[dp.pointIndex][0] = x; + s.data[dp.pointIndex][1] = y; + plot.drawSeries({preventJqPlotSeriesDrawTrigger:true}, dp.seriesIndex); + dc._neighbor = null; + ev.target.style.cursor = dc._cursors.pop(); + plot.target.trigger('jqlotDragStop', [gridpos, datapos]); + } + } +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.dragable.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.dragable.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.dragable.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.dragable.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(d){d.jqplot.Dragable=function(g){this.markerRenderer=new d.jqplot.MarkerRenderer({shadow:false});this.shapeRenderer=new d.jqplot.ShapeRenderer();this.isDragging=false;this.isOver=false;this._ctx;this._elem;this._point;this._gridData;this.color;this.constrainTo="none";d.extend(true,this,g)};function b(){d.jqplot.GenericCanvas.call(this);this.isDragging=false;this.isOver=false;this._neighbor;this._cursors=[]}b.prototype=new d.jqplot.GenericCanvas();b.prototype.constructor=b;d.jqplot.Dragable.parseOptions=function(i,h){var g=h||{};this.plugins.dragable=new d.jqplot.Dragable(g.dragable);this.isDragable=d.jqplot.config.enablePlugins};d.jqplot.Dragable.postPlotDraw=function(){this.plugins.dragable={previousCursor:"auto",isOver:false};this.plugins.dragable.dragCanvas=new b();this.eventCanvas._elem.before(this.plugins.dragable.dragCanvas.createElement(this._gridPadding,"jqplot-dragable-canvas",this._plotDimensions));var g=this.plugins.dragable.dragCanvas.setContext()};d.jqplot.preParseSeriesOptionsHooks.push(d.jqplot.Dragable.parseOptions);d.jqplot.postDrawHooks.push(d.jqplot.Dragable.postPlotDraw);d.jqplot.eventListenerHooks.push(["jqplotMouseMove",e]);d.jqplot.eventListenerHooks.push(["jqplotMouseDown",c]);d.jqplot.eventListenerHooks.push(["jqplotMouseUp",a]);function f(n,p){var q=n.series[p.seriesIndex];var m=q.plugins.dragable;var h=q.markerRenderer;var i=m.markerRenderer;i.style=h.style;i.lineWidth=h.lineWidth+2.5;i.size=h.size+5;if(!m.color){var l=d.jqplot.getColorComponents(h.color);var o=[l[0],l[1],l[2]];var k=(l[3]>=0.6)?l[3]*0.6:l[3]*(2-l[3]);m.color="rgba("+o[0]+","+o[1]+","+o[2]+","+k+")"}i.color=m.color;i.init();var g=(p.pointIndex>0)?p.pointIndex-1:0;var j=p.pointIndex+2;m._gridData=q.gridData.slice(g,j)}function e(o,l,h,t,m){if(m.plugins.dragable.dragCanvas.isDragging){var u=m.plugins.dragable.dragCanvas;var i=u._neighbor;var w=m.series[i.seriesIndex];var k=w.plugins.dragable;var r=w.gridData;var p=(k.constrainTo=="y")?i.gridData[0]:l.x;var n=(k.constrainTo=="x")?i.gridData[1]:l.y;var g=w._xaxis.series_p2u(p);var q=w._yaxis.series_p2u(n);var v=u._ctx;v.clearRect(0,0,v.canvas.width,v.canvas.height);if(i.pointIndex>0){k._gridData[1]=[p,n]}else{k._gridData[0]=[p,n]}m.series[i.seriesIndex].draw(u._ctx,{gridData:k._gridData,shadow:false,preventJqPlotSeriesDrawTrigger:true,color:k.color,markerOptions:{color:k.color,shadow:false},trendline:{show:false}});m.target.trigger("jqplotSeriesPointChange",[i.seriesIndex,i.pointIndex,[g,q],[p,n]])}else{if(t!=null){var j=m.series[t.seriesIndex];if(j.isDragable){var u=m.plugins.dragable.dragCanvas;if(!u.isOver){u._cursors.push(o.target.style.cursor);o.target.style.cursor="pointer"}u.isOver=true}}else{if(t==null){var u=m.plugins.dragable.dragCanvas;if(u.isOver){o.target.style.cursor=u._cursors.pop();u.isOver=false}}}}}function c(k,i,g,l,j){var m=j.plugins.dragable.dragCanvas;m._cursors.push(k.target.style.cursor);if(l!=null){var o=j.series[l.seriesIndex];var h=o.plugins.dragable;if(o.isDragable&&!m.isDragging){m._neighbor=l;m.isDragging=true;f(j,l);h.markerRenderer.draw(o.gridData[l.pointIndex][0],o.gridData[l.pointIndex][1],m._ctx);k.target.style.cursor="move";j.target.trigger("jqlotDragStart",[l.seriesIndex,l.pointIndex,i,g])}}else{var n=m._ctx;n.clearRect(0,0,n.canvas.width,n.canvas.height);m.isDragging=false}}function a(m,j,g,o,k){if(k.plugins.dragable.dragCanvas.isDragging){var p=k.plugins.dragable.dragCanvas;var q=p._ctx;q.clearRect(0,0,q.canvas.width,q.canvas.height);p.isDragging=false;var h=p._neighbor;var r=k.series[h.seriesIndex];var i=r.plugins.dragable;var n=(i.constrainTo=="y")?h.data[0]:g[r.xaxis];var l=(i.constrainTo=="x")?h.data[1]:g[r.yaxis];r.data[h.pointIndex][0]=n;r.data[h.pointIndex][1]=l;k.drawSeries({preventJqPlotSeriesDrawTrigger:true},h.seriesIndex);p._neighbor=null;m.target.style.cursor=p._cursors.pop();k.target.trigger("jqlotDragStop",[j,g])}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.enhancedLegendRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.enhancedLegendRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.enhancedLegendRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.enhancedLegendRenderer.js @@ -0,0 +1,186 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + // class $.jqplot.EnhancedLegendRenderer + // Legend renderer which can specify the number of rows and/or columns in the legend. + $.jqplot.EnhancedLegendRenderer = function(){ + $.jqplot.TableLegendRenderer.call(this); + }; + + $.jqplot.EnhancedLegendRenderer.prototype = new $.jqplot.TableLegendRenderer(); + $.jqplot.EnhancedLegendRenderer.prototype.constructor = $.jqplot.EnhancedLegendRenderer; + + // called with scope of legend. + $.jqplot.EnhancedLegendRenderer.prototype.init = function(options) { + // prop: numberRows + // Maximum number of rows in the legend. 0 or null for unlimited. + this.numberRows = null; + // prop: numberColumns + // Maximum number of columns in the legend. 0 or null for unlimited. + this.numberColumns = null; + // prop: seriesToggle + // false to not enable series on/off toggling on the legend. + // true or a fadein/fadeout speed (number of milliseconds or 'fast', 'normal', 'slow') + // to enable show/hide of series on click of legend item. + this.seriesToggle = 'normal'; + // prop: disableIEFading + // true to toggle series with a show/hide method only and not allow fading in/out. + // This is to overcome poor performance of fade in some versions of IE. + this.disableIEFading = true; + $.extend(true, this, options); + + if (this.seriesToggle) { + $.jqplot.postDrawHooks.push(postDraw); + } + }; + + // called with scope of legend + $.jqplot.EnhancedLegendRenderer.prototype.draw = function() { + var legend = this; + if (this.show) { + var series = this._series; + var ss = 'position:absolute;'; + ss += (this.background) ? 'background:'+this.background+';' : ''; + ss += (this.border) ? 'border:'+this.border+';' : ''; + ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : ''; + ss += (this.textColor) ? 'color:'+this.textColor+';' : ''; + ss += (this.marginTop != null) ? 'margin-top:'+this.marginTop+';' : ''; + ss += (this.marginBottom != null) ? 'margin-bottom:'+this.marginBottom+';' : ''; + ss += (this.marginLeft != null) ? 'margin-left:'+this.marginLeft+';' : ''; + ss += (this.marginRight != null) ? 'margin-right:'+this.marginRight+';' : ''; + this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>'); + if (this.seriesToggle) { + this._elem.css('z-index', '3'); + } + + var pad = false, + reverse = false, + nr, nc; + if (this.numberRows) { + nr = this.numberRows; + if (!this.numberColumns){ + nc = Math.ceil(series.length/nr); + } + else{ + nc = this.numberColumns; + } + } + else if (this.numberColumns) { + nc = this.numberColumns; + nr = Math.ceil(series.length/this.numberColumns); + } + else { + nr = series.length; + nc = 1; + } + + var i, j, tr, td1, td2, lt, rs; + var idx = 0; + // check to see if we need to reverse + for (i=series.length-1; i>=0; i--) { + if (series[i]._stack || series[i].renderer.constructor == $.jqplot.BezierCurveRenderer){ + reverse = true; + } + } + + for (i=0; i<nr; i++) { + if (reverse){ + tr = $('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem); + } + else{ + tr = $('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem); + } + for (j=0; j<nc; j++) { + if (idx < series.length && series[idx].show && series[idx].showLabel){ + s = series[idx]; + lt = this.labels[idx] || s.label.toString(); + if (lt) { + var color = s.color; + if (!reverse){ + if (i>0){ + pad = true; + } + else{ + pad = false; + } + } + else{ + if (i == nr -1){ + pad = false; + } + else{ + pad = true; + } + } + rs = (pad) ? this.rowSpacing : '0'; + + td1 = $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+ + '<div><div class="jqplot-table-legend-swatch" style="background-color:'+color+';border-color:'+color+';"></div>'+ + '</div></td>'); + td2 = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>'); + if (this.escapeHtml){ + td2.text(lt); + } + else { + td2.html(lt); + } + if (reverse) { + if (this.showLabels) {td2.prependTo(tr);} + if (this.showSwatches) {td1.prependTo(tr);} + } + else { + if (this.showSwatches) {td1.appendTo(tr);} + if (this.showLabels) {td2.appendTo(tr);} + } + + if (this.seriesToggle) { + var speed; + if (typeof(this.seriesToggle) == 'string' || typeof(this.seriesToggle) == 'number') { + if (!$.browser.msie || !this.disableIEFading) { + speed = this.seriesToggle; + } + } + if (this.showSwatches) { + td1.bind('click', {series:s, speed:speed}, s.toggleDisplay); + td1.addClass('jqplot-seriesToggle'); + } + if (this.showLabels) { + td2.bind('click', {series:s, speed:speed}, s.toggleDisplay); + td2.addClass('jqplot-seriesToggle'); + } + } + + pad = true; + } + } + idx++; + } + } + } + return this._elem; + }; + + // called with scope of plot. + postDraw = function () { + if (this.legend.renderer.constructor == $.jqplot.EnhancedLegendRenderer && this.legend.seriesToggle){ + var e = this.legend._elem.detach(); + this.eventCanvas._elem.after(e); + } + }; +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.enhancedLegendRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.enhancedLegendRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.enhancedLegendRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.enhancedLegendRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.EnhancedLegendRenderer=function(){a.jqplot.TableLegendRenderer.call(this)};a.jqplot.EnhancedLegendRenderer.prototype=new a.jqplot.TableLegendRenderer();a.jqplot.EnhancedLegendRenderer.prototype.constructor=a.jqplot.EnhancedLegendRenderer;a.jqplot.EnhancedLegendRenderer.prototype.init=function(b){this.numberRows=null;this.numberColumns=null;this.seriesToggle="normal";this.disableIEFading=true;a.extend(true,this,b);if(this.seriesToggle){a.jqplot.postDrawHooks.push(postDraw)}};a.jqplot.EnhancedLegendRenderer.prototype.draw=function(){var t=this;if(this.show){var m=this._series;var u="position:absolute;";u+=(this.background)?"background:"+this.background+";":"";u+=(this.border)?"border:"+this.border+";":"";u+=(this.fontSize)?"font-size:"+this.fontSize+";":"";u+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";u+=(this.textColor)?"color:"+this.textColor+";":"";u+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";u+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";u+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";u+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=a('<table class="jqplot-table-legend" style="'+u+'"></table>');if(this.seriesToggle){this._elem.css("z-index","3")}var d=false,o=false,q,l;if(this.numberRows){q=this.numberRows;if(!this.numberColumns){l=Math.ceil(m.length/q)}else{l=this.numberColumns}}else{if(this.numberColumns){l=this.numberColumns;q=Math.ceil(m.length/this.numberColumns)}else{q=m.length;l=1}}var n,k,p,e,c,h,g;var r=0;for(n=m.length-1;n>=0;n--){if(m[n]._stack||m[n].renderer.constructor==a.jqplot.BezierCurveRenderer){o=true}}for(n=0;n<q;n++){if(o){p=a('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem)}else{p=a('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem)}for(k=0;k<l;k++){if(r<m.length&&m[r].show&&m[r].showLabel){s=m[r];h=this.labels[r]||s.label.toString();if(h){var f=s.color;if(!o){if(n>0){d=true}else{d=false}}else{if(n==q-1){d=false}else{d=true}}g=(d)?this.rowSpacing:"0";e=a('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+g+';"><div><div class="jqplot-table-legend-swatch" style="background-color:'+f+";border-color:"+f+';"></div></div></td>');c=a('<td class="jqplot-table-legend" style="padding-top:'+g+';"></td>');if(this.escapeHtml){c.text(h)}else{c.html(h)}if(o){if(this.showLabels){c.prependTo(p)}if(this.showSwatches){e.prependTo(p)}}else{if(this.showSwatches){e.appendTo(p)}if(this.showLabels){c.appendTo(p)}}if(this.seriesToggle){var b;if(typeof(this.seriesToggle)=="string"||typeof(this.seriesToggle)=="number"){if(!a.browser.msie||!this.disableIEFading){b=this.seriesToggle}}if(this.showSwatches){e.bind("click",{series:s,speed:b},s.toggleDisplay);e.addClass("jqplot-seriesToggle")}if(this.showLabels){c.bind("click",{series:s,speed:b},s.toggleDisplay);c.addClass("jqplot-seriesToggle")}}d=true}}r++}}}return this._elem};postDraw=function(){if(this.legend.renderer.constructor==a.jqplot.EnhancedLegendRenderer&&this.legend.seriesToggle){var b=this.legend._elem.detach();this.eventCanvas._elem.after(b)}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.funnelRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.funnelRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.funnelRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.funnelRenderer.js @@ -0,0 +1,919 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.FunnelRenderer + * Plugin renderer to draw a funnel chart. + * x values, if present, will be used as labels. + * y values give area size. + * + * Funnel charts will draw a single series + * only. + * + * To use this renderer, you need to include the + * funnel renderer plugin, for example: + * + * > <script type="text/javascript" src="plugins/jqplot.funnelRenderer.js"></script> + * + * Properties described here are passed into the $.jqplot function + * as options on the series renderer. For example: + * + * > plot2 = $.jqplot('chart2', [s1, s2], { + * > seriesDefaults: { + * > renderer:$.jqplot.FunnelRenderer, + * > rendererOptions:{ + * > sectionMargin: 12, + * > widthRatio: 0.3 + * > } + * > } + * > }); + * + * IMPORTANT + * + * *The funnel renderer will reorder data in descending order* so the largest value in + * the data set is first and displayed on top of the funnel. Data will then + * be displayed in descending order down the funnel. The area of each funnel + * section will correspond to the value of each data point relative to the sum + * of all values. That is section area is proportional to section value divided by + * sum of all section values. + * + * If your data is not in descending order when passed into the plot, *it will be + * reordered* when stored in the series.data property. A copy of the unordered + * data is kept in the series._unorderedData property. + * + * A funnel plot will trigger events on the plot target + * according to user interaction. All events return the event object, + * the series index, the point (section) index, and the point data for + * the appropriate section. *Note* the point index will referr to the ordered + * data, not the original unordered data. + * + * 'jqplotDataMouseOver' - triggered when mousing over a section. + * 'jqplotDataHighlight' - triggered the first time user mouses over a section, + * if highlighting is enabled. + * 'jqplotDataUnhighlight' - triggered when a user moves the mouse out of + * a highlighted section. + * 'jqplotDataClick' - triggered when the user clicks on a section. + * 'jqplotDataRightClick' - tiggered when the user right clicks on a section if + * the "captureRightClick" option is set to true on the plot. + */ + $.jqplot.FunnelRenderer = function(){ + $.jqplot.LineRenderer.call(this); + }; + + $.jqplot.FunnelRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.FunnelRenderer.prototype.constructor = $.jqplot.FunnelRenderer; + + // called with scope of a series + $.jqplot.FunnelRenderer.prototype.init = function(options, plot) { + // Group: Properties + // + // prop: padding + // padding between the funnel and plot edges, legend, etc. + this.padding = {top: 20, right: 20, bottom: 20, left: 20}; + // prop: sectionMargin + // spacing between funnel sections in pixels. + this.sectionMargin = 6; + // prop: fill + // true or false, wether to fill the areas. + this.fill = true; + // prop: shadowOffset + // offset of the shadow from the area and offset of + // each succesive stroke of the shadow from the last. + this.shadowOffset = 2; + // prop: shadowAlpha + // transparency of the shadow (0 = transparent, 1 = opaque) + this.shadowAlpha = 0.07; + // prop: shadowDepth + // number of strokes to apply to the shadow, + // each stroke offset shadowOffset from the last. + this.shadowDepth = 5; + // prop: highlightMouseOver + // True to highlight area when moused over. + // This must be false to enable highlightMouseDown to highlight when clicking on a area. + this.highlightMouseOver = true; + // prop: highlightMouseDown + // True to highlight when a mouse button is pressed over a area. + // This will be disabled if highlightMouseOver is true. + this.highlightMouseDown = false; + // prop: highlightColors + // array of colors to use when highlighting an area. + this.highlightColors = []; + // prop: widthRatio + // The ratio of the width of the top of the funnel to the bottom. + // a ratio of 0 will make an upside down pyramid. + this.widthRatio = 0.2; + // prop: lineWidth + // width of line if areas are stroked and not filled. + this.lineWidth = 2; + // prop: dataLabels + // Either 'label', 'value', 'percent' or an array of labels to place on the pie slices. + // Defaults to percentage of each pie slice. + this.dataLabels = 'percent'; + // prop: showDataLabels + // true to show data labels on slices. + this.showDataLabels = false; + // prop: dataLabelFormatString + // Format string for data labels. If none, '%s' is used for "label" and for arrays, '%d' for value and '%d%%' for percentage. + this.dataLabelFormatString = null; + // prop: dataLabelThreshold + // Threshhold in percentage (0 - 100) of pie area, below which no label will be displayed. + // This applies to all label types, not just to percentage labels. + this.dataLabelThreshold = 3; + + this.tickRenderer = $.jqplot.FunnelTickRenderer; + + // if user has passed in highlightMouseDown option and not set highlightMouseOver, disable highlightMouseOver + if (options.highlightMouseDown && options.highlightMouseOver == null) { + options.highlightMouseOver = false; + } + + $.extend(true, this, options); + + // index of the currenty highlighted point, if any + this._highlightedPoint = null; + + // lengths of bases, or horizontal sides of areas of trapezoid. + this._bases = []; + // total area + this._atot; + // areas of segments. + this._areas = []; + // vertical lengths of segments. + this._lengths = []; + // angle of the funnel to vertical. + this._angle; + this._dataIndices = []; + + // sort data + this._unorderedData = $.extend(true, [], this.data); + var idxs = $.extend(true, [], this.data); + for (var i=0; i<idxs.length; i++) { + idxs[i].push(i); + } + this.data.sort( function (a, b) { return b[1] - a[1]; } ); + idxs.sort( function (a, b) { return b[1] - a[1]; }); + for (var i=0; i<idxs.length; i++) { + this._dataIndices.push(idxs[i][2]); + } + + // set highlight colors if none provided + if (this.highlightColors.length == 0) { + for (var i=0; i<this.seriesColors.length; i++){ + var rgba = $.jqplot.getColorComponents(this.seriesColors[i]); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + newrgb[j] = (sum > 570) ? newrgb[j] * 0.8 : newrgb[j] + 0.4 * (255 - newrgb[j]); + newrgb[j] = parseInt(newrgb[j], 10); + } + this.highlightColors.push('rgb('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+')'); + } + } + + plot.postParseOptionsHooks.addOnce(postParseOptions); + plot.postInitHooks.addOnce(postInit); + plot.eventListenerHooks.addOnce('jqplotMouseMove', handleMove); + plot.eventListenerHooks.addOnce('jqplotMouseDown', handleMouseDown); + plot.eventListenerHooks.addOnce('jqplotMouseUp', handleMouseUp); + plot.eventListenerHooks.addOnce('jqplotClick', handleClick); + plot.eventListenerHooks.addOnce('jqplotRightClick', handleRightClick); + plot.postDrawHooks.addOnce(postPlotDraw); + + }; + + // gridData will be of form [label, percentage of total] + $.jqplot.FunnelRenderer.prototype.setGridData = function(plot) { + // set gridData property. This will hold angle in radians of each data point. + var sum = 0; + var td = []; + for (var i=0; i<this.data.length; i++){ + sum += this.data[i][1]; + td.push([this.data[i][0], this.data[i][1]]); + } + + // normalize y values, so areas are proportional. + for (var i=0; i<td.length; i++) { + td[i][1] = td[i][1]/sum; + } + + this._bases = new Array(td.length + 1); + this._lengths = new Array(td.length); + + this.gridData = td; + }; + + $.jqplot.FunnelRenderer.prototype.makeGridData = function(data, plot) { + // set gridData property. This will hold angle in radians of each data point. + var sum = 0; + var td = []; + for (var i=0; i<this.data.length; i++){ + sum += this.data[i][1]; + td.push([this.data[i][0], this.data[i][1]]); + } + + // normalize y values, so areas are proportional. + for (var i=0; i<td.length; i++) { + td[i][1] = td[i][1]/sum; + } + + this._bases = new Array(td.length + 1); + this._lengths = new Array(td.length); + + return td; + }; + + $.jqplot.FunnelRenderer.prototype.drawSection = function (ctx, vertices, color, isShadow) { + var fill = this.fill; + var lineWidth = this.lineWidth; + ctx.save(); + + if (isShadow) { + for (var i=0; i<this.shadowDepth; i++) { + ctx.save(); + ctx.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI), this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI)); + doDraw(); + } + } + + else { + doDraw(); + } + + function doDraw () { + ctx.beginPath(); + ctx.fillStyle = color; + ctx.strokeStyle = color; + ctx.lineWidth = lineWidth; + ctx.moveTo(vertices[0][0], vertices[0][1]); + for (var i=1; i<4; i++) { + ctx.lineTo(vertices[i][0], vertices[i][1]); + } + ctx.closePath(); + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + } + + if (isShadow) { + for (var i=0; i<this.shadowDepth; i++) { + ctx.restore(); + } + } + + ctx.restore(); + }; + + // called with scope of series + $.jqplot.FunnelRenderer.prototype.draw = function (ctx, gd, options, plot) { + var i; + var opts = (options != undefined) ? options : {}; + // offset and direction of offset due to legend placement + var offx = 0; + var offy = 0; + var trans = 1; + this._areas = []; + // var colorGenerator = new this.colorGenerator(this.seriesColors); + if (options.legendInfo && options.legendInfo.placement == 'insideGrid') { + var li = options.legendInfo; + switch (li.location) { + case 'nw': + offx = li.width + li.xoffset; + break; + case 'w': + offx = li.width + li.xoffset; + break; + case 'sw': + offx = li.width + li.xoffset; + break; + case 'ne': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'e': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'se': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'n': + offy = li.height + li.yoffset; + break; + case 's': + offy = li.height + li.yoffset; + trans = -1; + break; + default: + break; + } + } + + var loff = (trans==1) ? this.padding.left + offx : this.padding.left; + var toff = (trans==1) ? this.padding.top + offy : this.padding.top; + var roff = (trans==-1) ? this.padding.right + offx : this.padding.right; + var boff = (trans==-1) ? this.padding.bottom + offy : this.padding.bottom; + + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + var cw = ctx.canvas.width; + var ch = ctx.canvas.height; + this._bases[0] = cw - loff - roff; + var ltot = this._length = ch - toff - boff; + + var hend = this._bases[0]*this.widthRatio; + this._atot = ltot/2 * (this._bases[0] + this._bases[0]*this.widthRatio); + + this._angle = Math.atan((this._bases[0] - hend)/2/ltot); + + for (i=0; i<gd.length; i++) { + this._areas.push(gd[i][1] * this._atot); + } + + + var guess, err, count, lsum=0; + var tolerance = 0.0001; + + for (i=0; i<this._areas.length; i++) { + guess = this._areas[i]/this._bases[i]; + err = 999999; + this._lengths[i] = guess; + count = 0; + while (err > this._lengths[i]*tolerance && count < 100) { + this._lengths[i] = this._areas[i]/(this._bases[i] - this._lengths[i] * Math.tan(this._angle)); + err = Math.abs(this._lengths[i] - guess); + this._bases[i+1] = this._bases[i] - (2*this._lengths[i]*Math.tan(this._angle)); + guess = this._lengths[i]; + count++; + } + lsum += this._lengths[i]; + } + + // figure out vertices of each section + this._vertices = new Array(gd.length); + + // these are 4 coners of entire trapezoid + var p0 = [loff, toff], + p1 = [loff+this._bases[0], toff], + p2 = [loff + (this._bases[0] - this._bases[this._bases.length-1])/2, toff + this._length], + p3 = [p2[0] + this._bases[this._bases.length-1], p2[1]]; + + // equations of right and left sides, returns x, y values given height of section (y value) + function findleft (l) { + var m = (p0[1] - p2[1])/(p0[0] - p2[0]); + var b = p0[1] - m*p0[0]; + var y = l + p0[1]; + + return [(y - b)/m, y]; + } + + function findright (l) { + var m = (p1[1] - p3[1])/(p1[0] - p3[0]); + var b = p1[1] - m*p1[0]; + var y = l + p1[1]; + + return [(y - b)/m, y]; + } + + var x = offx, y = offy; + var h=0, adj=0; + + for (i=0; i<gd.length; i++) { + this._vertices[i] = new Array(); + var v = this._vertices[i]; + var sm = this.sectionMargin; + if (i == 0) { + adj = 0; + } + if (i == 1) { + adj = sm/3; + } + else if (i > 0 && i < gd.length-1) { + adj = sm/2; + } + else if (i == gd.length -1) { + adj = 2*sm/3; + } + v.push(findleft(h+adj)); + v.push(findright(h+adj)); + h += this._lengths[i]; + if (i == 0) { + adj = -2*sm/3; + } + else if (i > 0 && i < gd.length-1) { + adj = -sm/2; + } + else if (i == gd.length - 1) { + adj = 0; + } + v.push(findright(h+adj)); + v.push(findleft(h+adj)); + + } + + if (this.shadow) { + var shadowColor = 'rgba(0,0,0,'+this.shadowAlpha+')'; + for (var i=0; i<gd.length; i++) { + this.renderer.drawSection.call (this, ctx, this._vertices[i], shadowColor, true); + } + + } + for (var i=0; i<gd.length; i++) { + var v = this._vertices[i]; + this.renderer.drawSection.call (this, ctx, v, this.seriesColors[i]); + + if (this.showDataLabels && gd[i][1]*100 >= this.dataLabelThreshold) { + var fstr, label; + + if (this.dataLabels == 'label') { + fstr = this.dataLabelFormatString || '%s'; + label = $.jqplot.sprintf(fstr, gd[i][0]); + } + else if (this.dataLabels == 'value') { + fstr = this.dataLabelFormatString || '%d'; + label = $.jqplot.sprintf(fstr, this.data[i][1]); + } + else if (this.dataLabels == 'percent') { + fstr = this.dataLabelFormatString || '%d%%'; + label = $.jqplot.sprintf(fstr, gd[i][1]*100); + } + else if (this.dataLabels.constructor == Array) { + fstr = this.dataLabelFormatString || '%s'; + label = $.jqplot.sprintf(fstr, this.dataLabels[this._dataIndices[i]]); + } + + var fact = (this._radius ) * this.dataLabelPositionFactor + this.sliceMargin + this.dataLabelNudge; + + var x = (v[0][0] + v[1][0])/2 + this.canvas._offsets.left; + var y = (v[1][1] + v[2][1])/2 + this.canvas._offsets.top; + + var labelelem = $('<span class="jqplot-funnel-series jqplot-data-label" style="position:absolute;">' + label + '</span>').insertBefore(plot.eventCanvas._elem); + x -= labelelem.width()/2; + y -= labelelem.height()/2; + x = Math.round(x); + y = Math.round(y); + labelelem.css({left: x, top: y}); + } + + } + + }; + + $.jqplot.FunnelAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + }; + + $.jqplot.FunnelAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.FunnelAxisRenderer.prototype.constructor = $.jqplot.FunnelAxisRenderer; + + + // There are no traditional axes on a funnel chart. We just need to provide + // dummy objects with properties so the plot will render. + // called with scope of axis object. + $.jqplot.FunnelAxisRenderer.prototype.init = function(options){ + // + this.tickRenderer = $.jqplot.FunnelTickRenderer; + $.extend(true, this, options); + // I don't think I'm going to need _dataBounds here. + // have to go Axis scaling in a way to fit chart onto plot area + // and provide u2p and p2u functionality for mouse cursor, etc. + // for convienence set _dataBounds to 0 and 100 and + // set min/max to 0 and 100. + this._dataBounds = {min:0, max:100}; + this.min = 0; + this.max = 100; + this.showTicks = false; + this.ticks = []; + this.showMark = false; + this.show = false; + }; + + + + /** + * Class: $.jqplot.FunnelLegendRenderer + * Legend Renderer specific to funnel plots. Set by default + * when the user creates a funnel plot. + */ + $.jqplot.FunnelLegendRenderer = function(){ + $.jqplot.TableLegendRenderer.call(this); + }; + + $.jqplot.FunnelLegendRenderer.prototype = new $.jqplot.TableLegendRenderer(); + $.jqplot.FunnelLegendRenderer.prototype.constructor = $.jqplot.FunnelLegendRenderer; + + $.jqplot.FunnelLegendRenderer.prototype.init = function(options) { + // Group: Properties + // + // prop: numberRows + // Maximum number of rows in the legend. 0 or null for unlimited. + this.numberRows = null; + // prop: numberColumns + // Maximum number of columns in the legend. 0 or null for unlimited. + this.numberColumns = null; + $.extend(true, this, options); + }; + + // called with context of legend + $.jqplot.FunnelLegendRenderer.prototype.draw = function() { + var legend = this; + if (this.show) { + var series = this._series; + var ss = 'position:absolute;'; + ss += (this.background) ? 'background:'+this.background+';' : ''; + ss += (this.border) ? 'border:'+this.border+';' : ''; + ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : ''; + ss += (this.textColor) ? 'color:'+this.textColor+';' : ''; + ss += (this.marginTop != null) ? 'margin-top:'+this.marginTop+';' : ''; + ss += (this.marginBottom != null) ? 'margin-bottom:'+this.marginBottom+';' : ''; + ss += (this.marginLeft != null) ? 'margin-left:'+this.marginLeft+';' : ''; + ss += (this.marginRight != null) ? 'margin-right:'+this.marginRight+';' : ''; + this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>'); + // Funnel charts legends don't go by number of series, but by number of data points + // in the series. Refactor things here for that. + + var pad = false, + reverse = false, + nr, nc; + var s = series[0]; + var colorGenerator = new $.jqplot.ColorGenerator(s.seriesColors); + + if (s.show) { + var pd = s.data; + if (this.numberRows) { + nr = this.numberRows; + if (!this.numberColumns){ + nc = Math.ceil(pd.length/nr); + } + else{ + nc = this.numberColumns; + } + } + else if (this.numberColumns) { + nc = this.numberColumns; + nr = Math.ceil(pd.length/this.numberColumns); + } + else { + nr = pd.length; + nc = 1; + } + + var i, j, tr, td1, td2, lt, rs, color; + var idx = 0; + + for (i=0; i<nr; i++) { + if (reverse){ + tr = $('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem); + } + else{ + tr = $('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem); + } + for (j=0; j<nc; j++) { + if (idx < pd.length){ + lt = this.labels[idx] || pd[idx][0].toString(); + color = colorGenerator.next(); + if (!reverse){ + if (i>0){ + pad = true; + } + else{ + pad = false; + } + } + else{ + if (i == nr -1){ + pad = false; + } + else{ + pad = true; + } + } + rs = (pad) ? this.rowSpacing : '0'; + + td1 = $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+ + '<div><div class="jqplot-table-legend-swatch" style="border-color:'+color+';"></div>'+ + '</div></td>'); + td2 = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>'); + if (this.escapeHtml){ + td2.text(lt); + } + else { + td2.html(lt); + } + if (reverse) { + td2.prependTo(tr); + td1.prependTo(tr); + } + else { + td1.appendTo(tr); + td2.appendTo(tr); + } + pad = true; + } + idx++; + } + } + } + } + return this._elem; + }; + + // $.jqplot.FunnelLegendRenderer.prototype.pack = function(offsets) { + // if (this.show) { + // // fake a grid for positioning + // var grid = {_top:offsets.top, _left:offsets.left, _right:offsets.right, _bottom:this._plotDimensions.height - offsets.bottom}; + // if (this.placement == 'insideGrid') { + // switch (this.location) { + // case 'nw': + // var a = grid._left + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css('left', a); + // this._elem.css('top', b); + // break; + // case 'n': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = grid._top + this.yoffset; + // this._elem.css('left', a); + // this._elem.css('top', b); + // break; + // case 'ne': + // var a = offsets.right + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css({right:a, top:b}); + // break; + // case 'e': + // var a = offsets.right + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({right:a, top:b}); + // break; + // case 'se': + // var a = offsets.right + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // case 's': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({left:a, bottom:b}); + // break; + // case 'sw': + // var a = grid._left + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({left:a, bottom:b}); + // break; + // case 'w': + // var a = grid._left + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({left:a, top:b}); + // break; + // default: // same as 'se' + // var a = grid._right - this.xoffset; + // var b = grid._bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // } + // + // } + // else { + // switch (this.location) { + // case 'nw': + // var a = this._plotDimensions.width - grid._left + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css('right', a); + // this._elem.css('top', b); + // break; + // case 'n': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = this._plotDimensions.height - grid._top + this.yoffset; + // this._elem.css('left', a); + // this._elem.css('bottom', b); + // break; + // case 'ne': + // var a = this._plotDimensions.width - offsets.right + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css({left:a, top:b}); + // break; + // case 'e': + // var a = this._plotDimensions.width - offsets.right + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({left:a, top:b}); + // break; + // case 'se': + // var a = this._plotDimensions.width - offsets.right + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({left:a, bottom:b}); + // break; + // case 's': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = this._plotDimensions.height - offsets.bottom + this.yoffset; + // this._elem.css({left:a, top:b}); + // break; + // case 'sw': + // var a = this._plotDimensions.width - grid._left + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // case 'w': + // var a = this._plotDimensions.width - grid._left + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({right:a, top:b}); + // break; + // default: // same as 'se' + // var a = grid._right - this.xoffset; + // var b = grid._bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // } + // } + // } + // }; + + // setup default renderers for axes and legend so user doesn't have to + // called with scope of plot + function preInit(target, data, options) { + options = options || {}; + options.axesDefaults = options.axesDefaults || {}; + options.legend = options.legend || {}; + options.seriesDefaults = options.seriesDefaults || {}; + // only set these if there is a funnel series + var setopts = false; + if (options.seriesDefaults.renderer == $.jqplot.FunnelRenderer) { + setopts = true; + } + else if (options.series) { + for (var i=0; i < options.series.length; i++) { + if (options.series[i].renderer == $.jqplot.FunnelRenderer) { + setopts = true; + } + } + } + + if (setopts) { + options.axesDefaults.renderer = $.jqplot.FunnelAxisRenderer; + options.legend.renderer = $.jqplot.FunnelLegendRenderer; + options.legend.preDraw = true; + options.sortData = false; + options.seriesDefaults.pointLabels = {show: false}; + } + } + + function postInit(target, data, options) { + // if multiple series, add a reference to the previous one so that + // funnel rings can nest. + for (i=0; i<this.series.length; i++) { + if (this.series[i].renderer.constructor == $.jqplot.FunnelRenderer) { + // don't allow mouseover and mousedown at same time. + if (this.series[i].highlightMouseOver) { + this.series[i].highlightMouseDown = false; + } + } + } + this.target.bind('mouseout', {plot:this}, function (ev) { unhighlight(ev.data.plot); }); + } + + // called with scope of plot + function postParseOptions(options) { + for (var i=0; i<this.series.length; i++) { + this.series[i].seriesColors = this.seriesColors; + this.series[i].colorGenerator = this.colorGenerator; + } + } + + function highlight (plot, sidx, pidx) { + var s = plot.series[sidx]; + var canvas = plot.plugins.funnelRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0,canvas._ctx.canvas.width, canvas._ctx.canvas.height); + s._highlightedPoint = pidx; + plot.plugins.funnelRenderer.highlightedSeriesIndex = sidx; + s.renderer.drawSection.call(s, canvas._ctx, s._vertices[pidx], s.highlightColors[pidx], false); + } + + function unhighlight (plot) { + var canvas = plot.plugins.funnelRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0, canvas._ctx.canvas.width, canvas._ctx.canvas.height); + for (var i=0; i<plot.series.length; i++) { + plot.series[i]._highlightedPoint = null; + } + plot.plugins.funnelRenderer.highlightedSeriesIndex = null; + plot.target.trigger('jqplotDataUnhighlight'); + } + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt1 = jQuery.Event('jqplotDataMouseOver'); + evt1.pageX = ev.pageX; + evt1.pageY = ev.pageY; + plot.target.trigger(evt1, ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.funnelRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseDown(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + if (plot.series[ins[0]].highlightMouseDown && !(ins[0] == plot.plugins.funnelRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseUp(ev, gridpos, datapos, neighbor, plot) { + var idx = plot.plugins.funnelRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + } + + function handleClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt = jQuery.Event('jqplotDataClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + function handleRightClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var idx = plot.plugins.funnelRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + var evt = jQuery.Event('jqplotDataRightClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + function postPlotDraw() { + this.plugins.funnelRenderer = {}; + this.plugins.funnelRenderer.highlightCanvas = new $.jqplot.GenericCanvas(); + + // do we have any data labels? if so, put highlight canvas before those + var labels = $(this.targetId+' .jqplot-data-label'); + if (labels.length) { + $(labels[0]).before(this.plugins.funnelRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-funnelRenderer-highlight-canvas', this._plotDimensions)); + } + // else put highlight canvas before event canvas. + else { + this.eventCanvas._elem.before(this.plugins.funnelRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-funnelRenderer-highlight-canvas', this._plotDimensions)); + } + var hctx = this.plugins.funnelRenderer.highlightCanvas.setContext(); + } + + $.jqplot.preInitHooks.push(preInit); + + $.jqplot.FunnelTickRenderer = function() { + $.jqplot.AxisTickRenderer.call(this); + }; + + $.jqplot.FunnelTickRenderer.prototype = new $.jqplot.AxisTickRenderer(); + $.jqplot.FunnelTickRenderer.prototype.constructor = $.jqplot.FunnelTickRenderer; + +})(jQuery); + + ADDED Site/Site_W/jpqplot/plugins/jqplot.funnelRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.funnelRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.funnelRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.funnelRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(e){e.jqplot.FunnelRenderer=function(){e.jqplot.LineRenderer.call(this)};e.jqplot.FunnelRenderer.prototype=new e.jqplot.LineRenderer();e.jqplot.FunnelRenderer.prototype.constructor=e.jqplot.FunnelRenderer;e.jqplot.FunnelRenderer.prototype.init=function(q,u){this.padding={top:20,right:20,bottom:20,left:20};this.sectionMargin=6;this.fill=true;this.shadowOffset=2;this.shadowAlpha=0.07;this.shadowDepth=5;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.widthRatio=0.2;this.lineWidth=2;this.dataLabels="percent";this.showDataLabels=false;this.dataLabelFormatString=null;this.dataLabelThreshold=3;this.tickRenderer=e.jqplot.FunnelTickRenderer;if(q.highlightMouseDown&&q.highlightMouseOver==null){q.highlightMouseOver=false}e.extend(true,this,q);this._highlightedPoint=null;this._bases=[];this._atot;this._areas=[];this._lengths=[];this._angle;this._dataIndices=[];this._unorderedData=e.extend(true,[],this.data);var p=e.extend(true,[],this.data);for(var s=0;s<p.length;s++){p[s].push(s)}this.data.sort(function(w,v){return v[1]-w[1]});p.sort(function(w,v){return v[1]-w[1]});for(var s=0;s<p.length;s++){this._dataIndices.push(p[s][2])}if(this.highlightColors.length==0){for(var s=0;s<this.seriesColors.length;s++){var r=e.jqplot.getColorComponents(this.seriesColors[s]);var n=[r[0],r[1],r[2]];var t=n[0]+n[1]+n[2];for(var o=0;o<3;o++){n[o]=(t>570)?n[o]*0.8:n[o]+0.4*(255-n[o]);n[o]=parseInt(n[o],10)}this.highlightColors.push("rgb("+n[0]+","+n[1]+","+n[2]+")")}}u.postParseOptionsHooks.addOnce(l);u.postInitHooks.addOnce(g);u.eventListenerHooks.addOnce("jqplotMouseMove",a);u.eventListenerHooks.addOnce("jqplotMouseDown",b);u.eventListenerHooks.addOnce("jqplotMouseUp",k);u.eventListenerHooks.addOnce("jqplotClick",f);u.eventListenerHooks.addOnce("jqplotRightClick",m);u.postDrawHooks.addOnce(h)};e.jqplot.FunnelRenderer.prototype.setGridData=function(p){var o=0;var q=[];for(var n=0;n<this.data.length;n++){o+=this.data[n][1];q.push([this.data[n][0],this.data[n][1]])}for(var n=0;n<q.length;n++){q[n][1]=q[n][1]/o}this._bases=new Array(q.length+1);this._lengths=new Array(q.length);this.gridData=q};e.jqplot.FunnelRenderer.prototype.makeGridData=function(p,q){var o=0;var r=[];for(var n=0;n<this.data.length;n++){o+=this.data[n][1];r.push([this.data[n][0],this.data[n][1]])}for(var n=0;n<r.length;n++){r[n][1]=r[n][1]/o}this._bases=new Array(r.length+1);this._lengths=new Array(r.length);return r};e.jqplot.FunnelRenderer.prototype.drawSection=function(o,q,p,t){var u=this.fill;var n=this.lineWidth;o.save();if(t){for(var s=0;s<this.shadowDepth;s++){o.save();o.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI),this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI));r()}}else{r()}function r(){o.beginPath();o.fillStyle=p;o.strokeStyle=p;o.lineWidth=n;o.moveTo(q[0][0],q[0][1]);for(var v=1;v<4;v++){o.lineTo(q[v][0],q[v][1])}o.closePath();if(u){o.fill()}else{o.stroke()}}if(t){for(var s=0;s<this.shadowDepth;s++){o.restore()}}o.restore()};e.jqplot.FunnelRenderer.prototype.draw=function(H,C,K,q){var Z;var M=(K!=undefined)?K:{};var z=0;var w=0;var S=1;this._areas=[];if(K.legendInfo&&K.legendInfo.placement=="insideGrid"){var P=K.legendInfo;switch(P.location){case"nw":z=P.width+P.xoffset;break;case"w":z=P.width+P.xoffset;break;case"sw":z=P.width+P.xoffset;break;case"ne":z=P.width+P.xoffset;S=-1;break;case"e":z=P.width+P.xoffset;S=-1;break;case"se":z=P.width+P.xoffset;S=-1;break;case"n":w=P.height+P.yoffset;break;case"s":w=P.height+P.yoffset;S=-1;break;default:break}}var u=(S==1)?this.padding.left+z:this.padding.left;var G=(S==1)?this.padding.top+w:this.padding.top;var N=(S==-1)?this.padding.right+z:this.padding.right;var p=(S==-1)?this.padding.bottom+w:this.padding.bottom;var Q=(M.shadow!=undefined)?M.shadow:this.shadow;var r=(M.showLine!=undefined)?M.showLine:this.showLine;var D=(M.fill!=undefined)?M.fill:this.fill;var I=H.canvas.width;var O=H.canvas.height;this._bases[0]=I-u-N;var J=this._length=O-G-p;var s=this._bases[0]*this.widthRatio;this._atot=J/2*(this._bases[0]+this._bases[0]*this.widthRatio);this._angle=Math.atan((this._bases[0]-s)/2/J);for(Z=0;Z<C.length;Z++){this._areas.push(C[Z][1]*this._atot)}var F,ab,X,R=0;var o=0.0001;for(Z=0;Z<this._areas.length;Z++){F=this._areas[Z]/this._bases[Z];ab=999999;this._lengths[Z]=F;X=0;while(ab>this._lengths[Z]*o&&X<100){this._lengths[Z]=this._areas[Z]/(this._bases[Z]-this._lengths[Z]*Math.tan(this._angle));ab=Math.abs(this._lengths[Z]-F);this._bases[Z+1]=this._bases[Z]-(2*this._lengths[Z]*Math.tan(this._angle));F=this._lengths[Z];X++}R+=this._lengths[Z]}this._vertices=new Array(C.length);var af=[u,G],ae=[u+this._bases[0],G],ad=[u+(this._bases[0]-this._bases[this._bases.length-1])/2,G+this._length],ac=[ad[0]+this._bases[this._bases.length-1],ad[1]];function W(ah){var x=(af[1]-ad[1])/(af[0]-ad[0]);var v=af[1]-x*af[0];var ai=ah+af[1];return[(ai-v)/x,ai]}function E(ah){var x=(ae[1]-ac[1])/(ae[0]-ac[0]);var v=ae[1]-x*ae[0];var ai=ah+ae[1];return[(ai-v)/x,ai]}var U=z,T=w;var aa=0,n=0;for(Z=0;Z<C.length;Z++){this._vertices[Z]=new Array();var V=this._vertices[Z];var B=this.sectionMargin;if(Z==0){n=0}if(Z==1){n=B/3}else{if(Z>0&&Z<C.length-1){n=B/2}else{if(Z==C.length-1){n=2*B/3}}}V.push(W(aa+n));V.push(E(aa+n));aa+=this._lengths[Z];if(Z==0){n=-2*B/3}else{if(Z>0&&Z<C.length-1){n=-B/2}else{if(Z==C.length-1){n=0}}}V.push(E(aa+n));V.push(W(aa+n))}if(this.shadow){var ag="rgba(0,0,0,"+this.shadowAlpha+")";for(var Z=0;Z<C.length;Z++){this.renderer.drawSection.call(this,H,this._vertices[Z],ag,true)}}for(var Z=0;Z<C.length;Z++){var V=this._vertices[Z];this.renderer.drawSection.call(this,H,V,this.seriesColors[Z]);if(this.showDataLabels&&C[Z][1]*100>=this.dataLabelThreshold){var L,Y;if(this.dataLabels=="label"){L=this.dataLabelFormatString||"%s";Y=e.jqplot.sprintf(L,C[Z][0])}else{if(this.dataLabels=="value"){L=this.dataLabelFormatString||"%d";Y=e.jqplot.sprintf(L,this.data[Z][1])}else{if(this.dataLabels=="percent"){L=this.dataLabelFormatString||"%d%%";Y=e.jqplot.sprintf(L,C[Z][1]*100)}else{if(this.dataLabels.constructor==Array){L=this.dataLabelFormatString||"%s";Y=e.jqplot.sprintf(L,this.dataLabels[this._dataIndices[Z]])}}}}var t=(this._radius)*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var U=(V[0][0]+V[1][0])/2+this.canvas._offsets.left;var T=(V[1][1]+V[2][1])/2+this.canvas._offsets.top;var A=e('<span class="jqplot-funnel-series jqplot-data-label" style="position:absolute;">'+Y+"</span>").insertBefore(q.eventCanvas._elem);U-=A.width()/2;T-=A.height()/2;U=Math.round(U);T=Math.round(T);A.css({left:U,top:T})}}};e.jqplot.FunnelAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.FunnelAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.FunnelAxisRenderer.prototype.constructor=e.jqplot.FunnelAxisRenderer;e.jqplot.FunnelAxisRenderer.prototype.init=function(n){this.tickRenderer=e.jqplot.FunnelTickRenderer;e.extend(true,this,n);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.FunnelLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.FunnelLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.FunnelLegendRenderer.prototype.constructor=e.jqplot.FunnelLegendRenderer;e.jqplot.FunnelLegendRenderer.prototype.init=function(n){this.numberRows=null;this.numberColumns=null;e.extend(true,this,n)};e.jqplot.FunnelLegendRenderer.prototype.draw=function(){var q=this;if(this.show){var y=this._series;var B="position:absolute;";B+=(this.background)?"background:"+this.background+";":"";B+=(this.border)?"border:"+this.border+";":"";B+=(this.fontSize)?"font-size:"+this.fontSize+";":"";B+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";B+=(this.textColor)?"color:"+this.textColor+";":"";B+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";B+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";B+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";B+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=e('<table class="jqplot-table-legend" style="'+B+'"></table>');var F=false,x=false,n,v;var z=y[0];var o=new e.jqplot.ColorGenerator(z.seriesColors);if(z.show){var G=z.data;if(this.numberRows){n=this.numberRows;if(!this.numberColumns){v=Math.ceil(G.length/n)}else{v=this.numberColumns}}else{if(this.numberColumns){v=this.numberColumns;n=Math.ceil(G.length/this.numberColumns)}else{n=G.length;v=1}}var E,D,p,t,r,u,w,C;var A=0;for(E=0;E<n;E++){if(x){p=e('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem)}else{p=e('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem)}for(D=0;D<v;D++){if(A<G.length){u=this.labels[A]||G[A][0].toString();C=o.next();if(!x){if(E>0){F=true}else{F=false}}else{if(E==n-1){F=false}else{F=true}}w=(F)?this.rowSpacing:"0";t=e('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+w+';"><div><div class="jqplot-table-legend-swatch" style="border-color:'+C+';"></div></div></td>');r=e('<td class="jqplot-table-legend" style="padding-top:'+w+';"></td>');if(this.escapeHtml){r.text(u)}else{r.html(u)}if(x){r.prependTo(p);t.prependTo(p)}else{t.appendTo(p);r.appendTo(p)}F=true}A++}}}}return this._elem};function c(r,q,o){o=o||{};o.axesDefaults=o.axesDefaults||{};o.legend=o.legend||{};o.seriesDefaults=o.seriesDefaults||{};var n=false;if(o.seriesDefaults.renderer==e.jqplot.FunnelRenderer){n=true}else{if(o.series){for(var p=0;p<o.series.length;p++){if(o.series[p].renderer==e.jqplot.FunnelRenderer){n=true}}}}if(n){o.axesDefaults.renderer=e.jqplot.FunnelAxisRenderer;o.legend.renderer=e.jqplot.FunnelLegendRenderer;o.legend.preDraw=true;o.sortData=false;o.seriesDefaults.pointLabels={show:false}}}function g(p,o,n){for(i=0;i<this.series.length;i++){if(this.series[i].renderer.constructor==e.jqplot.FunnelRenderer){if(this.series[i].highlightMouseOver){this.series[i].highlightMouseDown=false}}}this.target.bind("mouseout",{plot:this},function(q){j(q.data.plot)})}function l(n){for(var o=0;o<this.series.length;o++){this.series[o].seriesColors=this.seriesColors;this.series[o].colorGenerator=this.colorGenerator}}function d(r,q,p){var o=r.series[q];var n=r.plugins.funnelRenderer.highlightCanvas;n._ctx.clearRect(0,0,n._ctx.canvas.width,n._ctx.canvas.height);o._highlightedPoint=p;r.plugins.funnelRenderer.highlightedSeriesIndex=q;o.renderer.drawSection.call(o,n._ctx,o._vertices[p],o.highlightColors[p],false)}function j(p){var n=p.plugins.funnelRenderer.highlightCanvas;n._ctx.clearRect(0,0,n._ctx.canvas.width,n._ctx.canvas.height);for(var o=0;o<p.series.length;o++){p.series[o]._highlightedPoint=null}p.plugins.funnelRenderer.highlightedSeriesIndex=null;p.target.trigger("jqplotDataUnhighlight")}function a(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];var o=jQuery.Event("jqplotDataMouseOver");o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p);if(s.series[p[0]].highlightMouseOver&&!(p[0]==s.plugins.funnelRenderer.highlightedSeriesIndex&&p[1]==s.series[p[0]]._highlightedPoint)){var n=jQuery.Event("jqplotDataHighlight");n.pageX=r.pageX;n.pageY=r.pageY;s.target.trigger(n,p);d(s,p[0],p[1])}}else{if(t==null){j(s)}}}function b(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];if(r.series[o[0]].highlightMouseDown&&!(o[0]==r.plugins.funnelRenderer.highlightedSeriesIndex&&o[1]==r.series[o[0]]._highlightedPoint)){var n=jQuery.Event("jqplotDataHighlight");n.pageX=q.pageX;n.pageY=q.pageY;r.target.trigger(n,o);d(r,o[0],o[1])}}else{if(s==null){j(r)}}}function k(p,o,s,r,q){var n=q.plugins.funnelRenderer.highlightedSeriesIndex;if(n!=null&&q.series[n].highlightMouseDown){j(q)}}function f(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];var n=jQuery.Event("jqplotDataClick");n.pageX=q.pageX;n.pageY=q.pageY;r.target.trigger(n,o)}}function m(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];var n=s.plugins.funnelRenderer.highlightedSeriesIndex;if(n!=null&&s.series[n].highlightMouseDown){j(s)}var o=jQuery.Event("jqplotDataRightClick");o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p)}}function h(){this.plugins.funnelRenderer={};this.plugins.funnelRenderer.highlightCanvas=new e.jqplot.GenericCanvas();var o=e(this.targetId+" .jqplot-data-label");if(o.length){e(o[0]).before(this.plugins.funnelRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-funnelRenderer-highlight-canvas",this._plotDimensions))}else{this.eventCanvas._elem.before(this.plugins.funnelRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-funnelRenderer-highlight-canvas",this._plotDimensions))}var n=this.plugins.funnelRenderer.highlightCanvas.setContext()}e.jqplot.preInitHooks.push(c);e.jqplot.FunnelTickRenderer=function(){e.jqplot.AxisTickRenderer.call(this)};e.jqplot.FunnelTickRenderer.prototype=new e.jqplot.AxisTickRenderer();e.jqplot.FunnelTickRenderer.prototype.constructor=e.jqplot.FunnelTickRenderer})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.highlighter.js Index: Site/Site_W/jpqplot/plugins/jqplot.highlighter.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.highlighter.js +++ Site/Site_W/jpqplot/plugins/jqplot.highlighter.js @@ -0,0 +1,374 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + $.jqplot.eventListenerHooks.push(['jqplotMouseMove', handleMove]); + + /** + * Class: $.jqplot.Highlighter + * Plugin which will highlight data points when they are moused over. + * + * To use this plugin, include the js + * file in your source: + * + * > <script type="text/javascript" src="plugins/jqplot.highlighter.js"></script> + * + * A tooltip providing information about the data point is enabled by default. + * To disable the tooltip, set "showTooltip" to false. + * + * You can control what data is displayed in the tooltip with various + * options. The "tooltipAxes" option controls wether the x, y or both + * data values are displayed. + * + * Some chart types (e.g. hi-low-close) have more than one y value per + * data point. To display the additional values in the tooltip, set the + * "yvalues" option to the desired number of y values present (3 for a hlc chart). + * + * By default, data values will be formatted with the same formatting + * specifiers as used to format the axis ticks. A custom format code + * can be supplied with the tooltipFormatString option. This will apply + * to all values in the tooltip. + * + * For more complete control, the "formatString" option can be set. This + * Allows conplete control over tooltip formatting. Values are passed to + * the format string in an order determined by the "tooltipAxes" and "yvalues" + * options. So, if you have a hi-low-close chart and you just want to display + * the hi-low-close values in the tooltip, you could set a formatString like: + * + * > highlighter: { + * > tooltipAxes: 'y', + * > yvalues: 3, + * > formatString:'<table class="jqplot-highlighter"> + * > <tr><td>hi:</td><td>%s</td></tr> + * > <tr><td>low:</td><td>%s</td></tr> + * > <tr><td>close:</td><td>%s</td></tr></table>' + * > } + * + */ + $.jqplot.Highlighter = function(options) { + // Group: Properties + // + //prop: show + // true to show the highlight. + this.show = $.jqplot.config.enablePlugins; + // prop: markerRenderer + // Renderer used to draw the marker of the highlighted point. + // Renderer will assimilate attributes from the data point being highlighted, + // so no attributes need set on the renderer directly. + // Default is to turn off shadow drawing on the highlighted point. + this.markerRenderer = new $.jqplot.MarkerRenderer({shadow:false}); + // prop: showMarker + // true to show the marker + this.showMarker = true; + // prop: lineWidthAdjust + // Pixels to add to the lineWidth of the highlight. + this.lineWidthAdjust = 2.5; + // prop: sizeAdjust + // Pixels to add to the overall size of the highlight. + this.sizeAdjust = 5; + // prop: showTooltip + // Show a tooltip with data point values. + this.showTooltip = true; + // prop: tooltipLocation + // Where to position tooltip, 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw' + this.tooltipLocation = 'nw'; + // prop: fadeTooltip + // true = fade in/out tooltip, flase = show/hide tooltip + this.fadeTooltip = true; + // prop: tooltipFadeSpeed + // 'slow', 'def', 'fast', or number of milliseconds. + this.tooltipFadeSpeed = "fast"; + // prop: tooltipOffset + // Pixel offset of tooltip from the highlight. + this.tooltipOffset = 2; + // prop: tooltipAxes + // Which axes to display in tooltip, 'x', 'y' or 'both', 'xy' or 'yx' + // 'both' and 'xy' are equivalent, 'yx' reverses order of labels. + this.tooltipAxes = 'both'; + // prop; tooltipSeparator + // String to use to separate x and y axes in tooltip. + this.tooltipSeparator = ', '; + // prop: useAxesFormatters + // Use the x and y axes formatters to format the text in the tooltip. + this.useAxesFormatters = true; + // prop: tooltipFormatString + // sprintf format string for the tooltip. + // Uses Ash Searle's javascript sprintf implementation + // found here: http://hexmen.com/blog/2007/03/printf-sprintf/ + // See http://perldoc.perl.org/functions/sprintf.html for reference. + // Additional "p" and "P" format specifiers added by Chris Leonello. + this.tooltipFormatString = '%.5P'; + // prop: formatString + // alternative to tooltipFormatString + // will format the whole tooltip text, populating with x, y values as + // indicated by tooltipAxes option. So, you could have a tooltip like: + // 'Date: %s, number of cats: %d' to format the whole tooltip at one go. + // If useAxesFormatters is true, values will be formatted according to + // Axes formatters and you can populate your tooltip string with + // %s placeholders. + this.formatString = null; + // prop: yvalues + // Number of y values to expect in the data point array. + // Typically this is 1. Certain plots, like OHLC, will + // have more y values in each data point array. + this.yvalues = 1; + // prop: bringSeriesToFront + // This option requires jQuery 1.4+ + // True to bring the series of the highlighted point to the front + // of other series. + this.bringSeriesToFront = false; + this._tooltipElem; + this.isHighlighting = false; + + $.extend(true, this, options); + }; + + // axis.renderer.tickrenderer.formatter + + // called with scope of plot + $.jqplot.Highlighter.init = function (target, data, opts){ + var options = opts || {}; + // add a highlighter attribute to the plot + this.plugins.highlighter = new $.jqplot.Highlighter(options.highlighter); + }; + + // called within scope of series + $.jqplot.Highlighter.parseOptions = function (defaults, options) { + // Add a showHighlight option to the series + // and set it to true by default. + this.showHighlight = true; + }; + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + $.jqplot.Highlighter.postPlotDraw = function() { + this.plugins.highlighter.highlightCanvas = new $.jqplot.GenericCanvas(); + + this.eventCanvas._elem.before(this.plugins.highlighter.highlightCanvas.createElement(this._gridPadding, 'jqplot-highlight-canvas', this._plotDimensions)); + var hctx = this.plugins.highlighter.highlightCanvas.setContext(); + + var p = this.plugins.highlighter; + p._tooltipElem = $('<div class="jqplot-highlighter-tooltip" style="position:absolute;display:none"></div>'); + this.eventCanvas._elem.before(p._tooltipElem); + }; + + $.jqplot.preInitHooks.push($.jqplot.Highlighter.init); + $.jqplot.preParseSeriesOptionsHooks.push($.jqplot.Highlighter.parseOptions); + $.jqplot.postDrawHooks.push($.jqplot.Highlighter.postPlotDraw); + + function draw(plot, neighbor) { + var hl = plot.plugins.highlighter; + var s = plot.series[neighbor.seriesIndex]; + var smr = s.markerRenderer; + var mr = hl.markerRenderer; + mr.style = smr.style; + mr.lineWidth = smr.lineWidth + hl.lineWidthAdjust; + mr.size = smr.size + hl.sizeAdjust; + var rgba = $.jqplot.getColorComponents(smr.color); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var alpha = (rgba[3] >= 0.6) ? rgba[3]*0.6 : rgba[3]*(2-rgba[3]); + mr.color = 'rgba('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+','+alpha+')'; + mr.init(); + mr.draw(s.gridData[neighbor.pointIndex][0], s.gridData[neighbor.pointIndex][1], hl.highlightCanvas._ctx); + } + + function showTooltip(plot, series, neighbor) { + // neighbor looks like: {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]} + // gridData should be x,y pixel coords on the grid. + // add the plot._gridPadding to that to get x,y in the target. + var hl = plot.plugins.highlighter; + var elem = hl._tooltipElem; + if (hl.useAxesFormatters) { + var xf = series._xaxis._ticks[0].formatter; + var yf = series._yaxis._ticks[0].formatter; + var xfstr = series._xaxis._ticks[0].formatString; + var yfstr = series._yaxis._ticks[0].formatString; + var str; + var xstr = xf(xfstr, neighbor.data[0]); + var ystrs = []; + for (var i=1; i<hl.yvalues+1; i++) { + ystrs.push(yf(yfstr, neighbor.data[i])); + } + if (hl.formatString) { + switch (hl.tooltipAxes) { + case 'both': + case 'xy': + ystrs.unshift(xstr); + ystrs.unshift(hl.formatString); + str = $.jqplot.sprintf.apply($.jqplot.sprintf, ystrs); + break; + case 'yx': + ystrs.push(xstr); + ystrs.unshift(hl.formatString); + str = $.jqplot.sprintf.apply($.jqplot.sprintf, ystrs); + break; + case 'x': + str = $.jqplot.sprintf.apply($.jqplot.sprintf, [hl.formatString, xstr]); + break; + case 'y': + ystrs.unshift(hl.formatString); + str = $.jqplot.sprintf.apply($.jqplot.sprintf, ystrs); + break; + default: // same as xy + ystrs.unshift(xstr); + ystrs.unshift(hl.formatString); + str = $.jqplot.sprintf.apply($.jqplot.sprintf, ystrs); + break; + } + } + else { + switch (hl.tooltipAxes) { + case 'both': + case 'xy': + str = xstr; + for (var i=0; i<ystrs.length; i++) { + str += hl.tooltipSeparator + ystrs[i]; + } + break; + case 'yx': + str = ''; + for (var i=0; i<ystrs.length; i++) { + str += ystrs[i] + hl.tooltipSeparator; + } + str += xstr; + break; + case 'x': + str = xstr; + break; + case 'y': + str = ''; + for (var i=0; i<ystrs.length; i++) { + str += ystrs[i] + hl.tooltipSeparator; + } + break; + default: // same as 'xy' + str = xstr; + for (var i=0; i<ystrs.length; i++) { + str += hl.tooltipSeparator + ystrs[i]; + } + break; + + } + } + } + else { + var str; + if (hl.tooltipAxes == 'both' || hl.tooltipAxes == 'xy') { + str = $.jqplot.sprintf(hl.tooltipFormatString, neighbor.data[0]) + hl.tooltipSeparator + $.jqplot.sprintf(hl.tooltipFormatString, neighbor.data[1]); + } + else if (hl.tooltipAxes == 'yx') { + str = $.jqplot.sprintf(hl.tooltipFormatString, neighbor.data[1]) + hl.tooltipSeparator + $.jqplot.sprintf(hl.tooltipFormatString, neighbor.data[0]); + } + else if (hl.tooltipAxes == 'x') { + str = $.jqplot.sprintf(hl.tooltipFormatString, neighbor.data[0]); + } + else if (hl.tooltipAxes == 'y') { + str = $.jqplot.sprintf(hl.tooltipFormatString, neighbor.data[1]); + } + } + elem.html(str); + var gridpos = {x:neighbor.gridData[0], y:neighbor.gridData[1]}; + var ms = 0; + var fact = 0.707; + if (series.markerRenderer.show == true) { + ms = (series.markerRenderer.size + hl.sizeAdjust)/2; + } + switch (hl.tooltipLocation) { + case 'nw': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - hl.tooltipOffset - fact * ms; + var y = gridpos.y + plot._gridPadding.top - hl.tooltipOffset - elem.outerHeight(true) - fact * ms; + break; + case 'n': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true)/2; + var y = gridpos.y + plot._gridPadding.top - hl.tooltipOffset - elem.outerHeight(true) - ms; + break; + case 'ne': + var x = gridpos.x + plot._gridPadding.left + hl.tooltipOffset + fact * ms; + var y = gridpos.y + plot._gridPadding.top - hl.tooltipOffset - elem.outerHeight(true) - fact * ms; + break; + case 'e': + var x = gridpos.x + plot._gridPadding.left + hl.tooltipOffset + ms; + var y = gridpos.y + plot._gridPadding.top - elem.outerHeight(true)/2; + break; + case 'se': + var x = gridpos.x + plot._gridPadding.left + hl.tooltipOffset + fact * ms; + var y = gridpos.y + plot._gridPadding.top + hl.tooltipOffset + fact * ms; + break; + case 's': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true)/2; + var y = gridpos.y + plot._gridPadding.top + hl.tooltipOffset + ms; + break; + case 'sw': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - hl.tooltipOffset - fact * ms; + var y = gridpos.y + plot._gridPadding.top + hl.tooltipOffset + fact * ms; + break; + case 'w': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - hl.tooltipOffset - ms; + var y = gridpos.y + plot._gridPadding.top - elem.outerHeight(true)/2; + break; + default: // same as 'nw' + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - hl.tooltipOffset - fact * ms; + var y = gridpos.y + plot._gridPadding.top - hl.tooltipOffset - elem.outerHeight(true) - fact * ms; + break; + } + elem.css('left', x); + elem.css('top', y); + if (hl.fadeTooltip) { + // Fix for stacked up animations. Thnanks Trevor! + elem.stop(true,true).fadeIn(hl.tooltipFadeSpeed); + } + else { + elem.show(); + } + + } + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + var hl = plot.plugins.highlighter; + var c = plot.plugins.cursor; + if (hl.show) { + if (neighbor == null && hl.isHighlighting) { + var ctx = hl.highlightCanvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + if (hl.fadeTooltip) { + hl._tooltipElem.fadeOut(hl.tooltipFadeSpeed); + } + else { + hl._tooltipElem.hide(); + } + if (hl.bringSeriesToFront) { + plot.restorePreviousSeriesOrder(); + } + hl.isHighlighting = false; + + } + if (neighbor != null && plot.series[neighbor.seriesIndex].showHighlight && !hl.isHighlighting) { + hl.isHighlighting = true; + if (hl.showMarker) { + draw(plot, neighbor); + } + if (hl.showTooltip && (!c || !c._zoom.started)) { + showTooltip(plot, plot.series[neighbor.seriesIndex], neighbor); + } + if (hl.bringSeriesToFront) { + plot.moveSeriesToFront(neighbor.seriesIndex); + } + } + } + } +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.highlighter.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.highlighter.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.highlighter.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.highlighter.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(b){b.jqplot.eventListenerHooks.push(["jqplotMouseMove",c]);b.jqplot.Highlighter=function(e){this.show=b.jqplot.config.enablePlugins;this.markerRenderer=new b.jqplot.MarkerRenderer({shadow:false});this.showMarker=true;this.lineWidthAdjust=2.5;this.sizeAdjust=5;this.showTooltip=true;this.tooltipLocation="nw";this.fadeTooltip=true;this.tooltipFadeSpeed="fast";this.tooltipOffset=2;this.tooltipAxes="both";this.tooltipSeparator=", ";this.useAxesFormatters=true;this.tooltipFormatString="%.5P";this.formatString=null;this.yvalues=1;this.bringSeriesToFront=false;this._tooltipElem;this.isHighlighting=false;b.extend(true,this,e)};b.jqplot.Highlighter.init=function(h,g,f){var e=f||{};this.plugins.highlighter=new b.jqplot.Highlighter(e.highlighter)};b.jqplot.Highlighter.parseOptions=function(f,e){this.showHighlight=true};b.jqplot.Highlighter.postPlotDraw=function(){this.plugins.highlighter.highlightCanvas=new b.jqplot.GenericCanvas();this.eventCanvas._elem.before(this.plugins.highlighter.highlightCanvas.createElement(this._gridPadding,"jqplot-highlight-canvas",this._plotDimensions));var f=this.plugins.highlighter.highlightCanvas.setContext();var e=this.plugins.highlighter;e._tooltipElem=b('<div class="jqplot-highlighter-tooltip" style="position:absolute;display:none"></div>');this.eventCanvas._elem.before(e._tooltipElem)};b.jqplot.preInitHooks.push(b.jqplot.Highlighter.init);b.jqplot.preParseSeriesOptionsHooks.push(b.jqplot.Highlighter.parseOptions);b.jqplot.postDrawHooks.push(b.jqplot.Highlighter.postPlotDraw);function a(j,l){var g=j.plugins.highlighter;var m=j.series[l.seriesIndex];var e=m.markerRenderer;var f=g.markerRenderer;f.style=e.style;f.lineWidth=e.lineWidth+g.lineWidthAdjust;f.size=e.size+g.sizeAdjust;var i=b.jqplot.getColorComponents(e.color);var k=[i[0],i[1],i[2]];var h=(i[3]>=0.6)?i[3]*0.6:i[3]*(2-i[3]);f.color="rgba("+k[0]+","+k[1]+","+k[2]+","+h+")";f.init();f.draw(m.gridData[l.pointIndex][0],m.gridData[l.pointIndex][1],g.highlightCanvas._ctx)}function d(s,m,j){var g=s.plugins.highlighter;var v=g._tooltipElem;if(g.useAxesFormatters){var q=m._xaxis._ticks[0].formatter;var e=m._yaxis._ticks[0].formatter;var w=m._xaxis._ticks[0].formatString;var n=m._yaxis._ticks[0].formatString;var r;var o=q(w,j.data[0]);var h=[];for(var t=1;t<g.yvalues+1;t++){h.push(e(n,j.data[t]))}if(g.formatString){switch(g.tooltipAxes){case"both":case"xy":h.unshift(o);h.unshift(g.formatString);r=b.jqplot.sprintf.apply(b.jqplot.sprintf,h);break;case"yx":h.push(o);h.unshift(g.formatString);r=b.jqplot.sprintf.apply(b.jqplot.sprintf,h);break;case"x":r=b.jqplot.sprintf.apply(b.jqplot.sprintf,[g.formatString,o]);break;case"y":h.unshift(g.formatString);r=b.jqplot.sprintf.apply(b.jqplot.sprintf,h);break;default:h.unshift(o);h.unshift(g.formatString);r=b.jqplot.sprintf.apply(b.jqplot.sprintf,h);break}}else{switch(g.tooltipAxes){case"both":case"xy":r=o;for(var t=0;t<h.length;t++){r+=g.tooltipSeparator+h[t]}break;case"yx":r="";for(var t=0;t<h.length;t++){r+=h[t]+g.tooltipSeparator}r+=o;break;case"x":r=o;break;case"y":r="";for(var t=0;t<h.length;t++){r+=h[t]+g.tooltipSeparator}break;default:r=o;for(var t=0;t<h.length;t++){r+=g.tooltipSeparator+h[t]}break}}}else{var r;if(g.tooltipAxes=="both"||g.tooltipAxes=="xy"){r=b.jqplot.sprintf(g.tooltipFormatString,j.data[0])+g.tooltipSeparator+b.jqplot.sprintf(g.tooltipFormatString,j.data[1])}else{if(g.tooltipAxes=="yx"){r=b.jqplot.sprintf(g.tooltipFormatString,j.data[1])+g.tooltipSeparator+b.jqplot.sprintf(g.tooltipFormatString,j.data[0])}else{if(g.tooltipAxes=="x"){r=b.jqplot.sprintf(g.tooltipFormatString,j.data[0])}else{if(g.tooltipAxes=="y"){r=b.jqplot.sprintf(g.tooltipFormatString,j.data[1])}}}}}v.html(r);var u={x:j.gridData[0],y:j.gridData[1]};var p=0;var f=0.707;if(m.markerRenderer.show==true){p=(m.markerRenderer.size+g.sizeAdjust)/2}switch(g.tooltipLocation){case"nw":var l=u.x+s._gridPadding.left-v.outerWidth(true)-g.tooltipOffset-f*p;var k=u.y+s._gridPadding.top-g.tooltipOffset-v.outerHeight(true)-f*p;break;case"n":var l=u.x+s._gridPadding.left-v.outerWidth(true)/2;var k=u.y+s._gridPadding.top-g.tooltipOffset-v.outerHeight(true)-p;break;case"ne":var l=u.x+s._gridPadding.left+g.tooltipOffset+f*p;var k=u.y+s._gridPadding.top-g.tooltipOffset-v.outerHeight(true)-f*p;break;case"e":var l=u.x+s._gridPadding.left+g.tooltipOffset+p;var k=u.y+s._gridPadding.top-v.outerHeight(true)/2;break;case"se":var l=u.x+s._gridPadding.left+g.tooltipOffset+f*p;var k=u.y+s._gridPadding.top+g.tooltipOffset+f*p;break;case"s":var l=u.x+s._gridPadding.left-v.outerWidth(true)/2;var k=u.y+s._gridPadding.top+g.tooltipOffset+p;break;case"sw":var l=u.x+s._gridPadding.left-v.outerWidth(true)-g.tooltipOffset-f*p;var k=u.y+s._gridPadding.top+g.tooltipOffset+f*p;break;case"w":var l=u.x+s._gridPadding.left-v.outerWidth(true)-g.tooltipOffset-p;var k=u.y+s._gridPadding.top-v.outerHeight(true)/2;break;default:var l=u.x+s._gridPadding.left-v.outerWidth(true)-g.tooltipOffset-f*p;var k=u.y+s._gridPadding.top-g.tooltipOffset-v.outerHeight(true)-f*p;break}v.css("left",l);v.css("top",k);if(g.fadeTooltip){v.stop(true,true).fadeIn(g.tooltipFadeSpeed)}else{v.show()}}function c(h,g,k,j,i){var e=i.plugins.highlighter;var l=i.plugins.cursor;if(e.show){if(j==null&&e.isHighlighting){var f=e.highlightCanvas._ctx;f.clearRect(0,0,f.canvas.width,f.canvas.height);if(e.fadeTooltip){e._tooltipElem.fadeOut(e.tooltipFadeSpeed)}else{e._tooltipElem.hide()}if(e.bringSeriesToFront){i.restorePreviousSeriesOrder()}e.isHighlighting=false}if(j!=null&&i.series[j.seriesIndex].showHighlight&&!e.isHighlighting){e.isHighlighting=true;if(e.showMarker){a(i,j)}if(e.showTooltip&&(!l||!l._zoom.started)){d(i,i.series[j.seriesIndex],j)}if(e.bringSeriesToFront){i.moveSeriesToFront(j.seriesIndex)}}}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.json2.js Index: Site/Site_W/jpqplot/plugins/jqplot.json2.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.json2.js +++ Site/Site_W/jpqplot/plugins/jqplot.json2.js @@ -0,0 +1,475 @@ +/* + 2010-11-01 Chris Leonello + + Slightly modified version of the original json2.js to put JSON + functions under the $.jqplot namespace. + + licensing and orignal comments follow: + + http://www.JSON.org/json2.js + 2010-08-25 + + Public Domain. + + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + + See http://www.JSON.org/js.html + + + This code should be minified before deployment. + See http://javascript.crockford.com/jsmin.html + + USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO + NOT CONTROL. + + + This file creates a global JSON object containing two methods: stringify + and parse. + + $.jqplot.JSON.stringify(value, replacer, space) + value any JavaScript value, usually an object or array. + + replacer an optional parameter that determines how object + values are stringified for objects. It can be a + function or an array of strings. + + space an optional parameter that specifies the indentation + of nested structures. If it is omitted, the text will + be packed without extra whitespace. If it is a number, + it will specify the number of spaces to indent at each + level. If it is a string (such as '\t' or ' '), + it contains the characters used to indent at each level. + + This method produces a JSON text from a JavaScript value. + + When an object value is found, if the object contains a toJSON + method, its toJSON method will be called and the result will be + stringified. A toJSON method does not serialize: it returns the + value represented by the name/value pair that should be serialized, + or undefined if nothing should be serialized. The toJSON method + will be passed the key associated with the value, and this will be + bound to the value + + For example, this would serialize Dates as ISO strings. + + Date.prototype.toJSON = function (key) { + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + return this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z'; + }; + + You can provide an optional replacer method. It will be passed the + key and value of each member, with this bound to the containing + object. The value that is returned from your method will be + serialized. If your method returns undefined, then the member will + be excluded from the serialization. + + If the replacer parameter is an array of strings, then it will be + used to select the members to be serialized. It filters the results + such that only members with keys listed in the replacer array are + stringified. + + Values that do not have JSON representations, such as undefined or + functions, will not be serialized. Such values in objects will be + dropped; in arrays they will be replaced with null. You can use + a replacer function to replace those with JSON values. + $.jqplot.JSON.stringify(undefined) returns undefined. + + The optional space parameter produces a stringification of the + value that is filled with line breaks and indentation to make it + easier to read. + + If the space parameter is a non-empty string, then that string will + be used for indentation. If the space parameter is a number, then + the indentation will be that many spaces. + + Example: + + text = $.jqplot.JSON.stringify(['e', {pluribus: 'unum'}]); + // text is '["e",{"pluribus":"unum"}]' + + + text = $.jqplot.JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); + // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' + + text = $.jqplot.JSON.stringify([new Date()], function (key, value) { + return this[key] instanceof Date ? + 'Date(' + this[key] + ')' : value; + }); + // text is '["Date(---current time---)"]' + + + $.jqplot.JSON.parse(text, reviver) + This method parses a JSON text to produce an object or array. + It can throw a SyntaxError exception. + + The optional reviver parameter is a function that can filter and + transform the results. It receives each of the keys and values, + and its return value is used instead of the original value. + If it returns what it received, then the structure is not modified. + If it returns undefined then the member is deleted. + + Example: + + // Parse the text. Values that look like ISO date strings will + // be converted to Date objects. + + myData = $.jqplot.JSON.parse(text, function (key, value) { + var a; + if (typeof value === 'string') { + a = +/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); + if (a) { + return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], + +a[5], +a[6])); + } + } + return value; + }); + + myData = $.jqplot.JSON.parse('["Date(09/09/2001)"]', function (key, value) { + var d; + if (typeof value === 'string' && + value.slice(0, 5) === 'Date(' && + value.slice(-1) === ')') { + d = new Date(value.slice(5, -1)); + if (d) { + return d; + } + } + return value; + }); + + + This is a reference implementation. You are free to copy, modify, or + redistribute. +*/ + +(function($) { + + $.jqplot.JSON = window.JSON; + + if (!window.JSON) { + $.jqplot.JSON = {}; + } + + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + if (typeof Date.prototype.toJSON !== 'function') { + + Date.prototype.toJSON = function (key) { + + return isFinite(this.valueOf()) ? + this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z' : null; + }; + + String.prototype.toJSON = + Number.prototype.toJSON = + Boolean.prototype.toJSON = function (key) { + return this.valueOf(); + }; + } + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + + function quote(string) { + +// If the string contains no control characters, no quote characters, and no +// backslash characters, then we can safely slap some quotes around it. +// Otherwise we must also replace the offending characters with safe escape +// sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? + '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : + '"' + string + '"'; + } + + + function str(key, holder) { + +// Produce a string from holder[key]. + + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + +// If the value has a toJSON method, call it to obtain a replacement value. + + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + +// If we were called with a replacer function, then call the replacer to +// obtain a replacement value. + + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + +// What happens next depends on the value's type. + + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + +// JSON numbers must be finite. Encode non-finite numbers as null. + + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + +// If the value is a boolean or null, convert it to a string. Note: +// typeof null does not produce 'null'. The case is included here in +// the remote chance that this gets fixed someday. + + return String(value); + +// If the type is 'object', we might be dealing with an object or an array or +// null. + + case 'object': + +// Due to a specification blunder in ECMAScript, typeof null is 'object', +// so watch out for that case. + + if (!value) { + return 'null'; + } + +// Make an array to hold the partial results of stringifying this object value. + + gap += indent; + partial = []; + +// Is the value an array? + + if (Object.prototype.toString.apply(value) === '[object Array]') { + +// The value is an array. Stringify every element. Use null as a placeholder +// for non-JSON values. + + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + +// Join all of the elements together, separated with commas, and wrap them in +// brackets. + + v = partial.length === 0 ? '[]' : + gap ? '[\n' + gap + + partial.join(',\n' + gap) + '\n' + + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + +// If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + k = rep[i]; + if (typeof k === 'string') { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + +// Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + +// Join all of the member texts together, separated with commas, +// and wrap them in braces. + + v = partial.length === 0 ? '{}' : + gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + + mind + '}' : '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + +// If the JSON object does not yet have a stringify method, give it one. + + if (typeof $.jqplot.JSON.stringify !== 'function') { + $.jqplot.JSON.stringify = function (value, replacer, space) { + +// The stringify method takes a value and an optional replacer, and an optional +// space parameter, and returns a JSON text. The replacer can be a function +// that can replace values, or an array of strings that will select the keys. +// A default replacer method can be provided. Use of the space parameter can +// produce text that is more easily readable. + + var i; + gap = ''; + indent = ''; + +// If the space parameter is a number, make an indent string containing that +// many spaces. + + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + +// If the space parameter is a string, it will be used as the indent string. + + } else if (typeof space === 'string') { + indent = space; + } + +// If there is a replacer, it must be a function or an array. +// Otherwise, throw an error. + + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('$.jqplot.JSON.stringify'); + } + +// Make a fake root object containing our value under the key of ''. +// Return the result of stringifying the value. + + return str('', {'': value}); + }; + } + + +// If the JSON object does not yet have a parse method, give it one. + + if (typeof $.jqplot.JSON.parse !== 'function') { + $.jqplot.JSON.parse = function (text, reviver) { + +// The parse method takes a text and an optional reviver function, and returns +// a JavaScript value if the text is a valid JSON text. + + var j; + + function walk(holder, key) { + +// The walk method is used to recursively walk the resulting structure so +// that modifications can be made. + + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + + +// Parsing happens in four stages. In the first stage, we replace certain +// Unicode characters with escape sequences. JavaScript handles many characters +// incorrectly, either silently deleting them, or treating them as line endings. + + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + +// In the second stage, we run the text against regular expressions that look +// for non-JSON patterns. We are especially concerned with '()' and 'new' +// because they can cause invocation, and '=' because it can cause mutation. +// But just to be safe, we want to reject all unexpected forms. + +// We split the second stage into 4 regexp operations in order to work around +// crippling inefficiencies in IE's and Safari's regexp engines. First we +// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we +// replace all simple value tokens with ']' characters. Third, we delete all +// open brackets that follow a colon or comma or that begin the text. Finally, +// we look to see that the remaining characters are only whitespace or ']' or +// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if (/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + +// In the third stage we use the eval function to compile the text into a +// JavaScript structure. The '{' operator is subject to a syntactic ambiguity +// in JavaScript: it can begin a block or an object literal. We wrap the text +// in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + +// In the optional fourth stage, we recursively walk the new structure, passing +// each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' ? + walk({'': j}, '') : j; + } + +// If the text is not JSON parseable, then a SyntaxError is thrown. + + throw new SyntaxError('$.jqplot.JSON.parse'); + }; + } +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.json2.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.json2.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.json2.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.json2.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function($){$.jqplot.JSON=window.JSON;if(!window.JSON){$.jqplot.JSON={}}function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof $.jqplot.JSON.stringify!=="function"){$.jqplot.JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("$.jqplot.JSON.stringify")}return str("",{"":value})}}if(typeof $.jqplot.JSON.parse!=="function"){$.jqplot.JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("$.jqplot.JSON.parse")}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.logAxisRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.logAxisRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.logAxisRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.logAxisRenderer.js @@ -0,0 +1,434 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * class: $.jqplot.LogAxisRenderer + * A plugin for a jqPlot to render a logarithmic axis. + * + * To use this renderer, include the plugin in your source + * > <script type="text/javascript" language="javascript" src="plugins/jqplot.logAxisRenderer.js"></script> + * + * and supply the appropriate options to your plot + * + * > {axes:{xaxis:{renderer:$.jqplot.LogAxisRenderer}}} + **/ + $.jqplot.LogAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + // prop: axisDefaults + // Default properties which will be applied directly to the series. + // + // Group: Properties + // + // Properties + // + /// base - the logarithmic base, commonly 2, 10 or Math.E + // tickDistribution - 'even' or 'power'. 'even' gives equal pixel + // spacing of the ticks on the plot. 'power' gives ticks in powers + // of 10. + this.axisDefaults = { + base : 10, + tickDistribution :'even' + }; + }; + + $.jqplot.LogAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.LogAxisRenderer.prototype.constructor = $.jqplot.LogAxisRenderer; + + $.jqplot.LogAxisRenderer.prototype.init = function(options) { + // prop: tickRenderer + // A class of a rendering engine for creating the ticks labels displayed on the plot, + // See <$.jqplot.AxisTickRenderer>. + // this.tickRenderer = $.jqplot.AxisTickRenderer; + // this.labelRenderer = $.jqplot.AxisLabelRenderer; + $.extend(true, this.renderer, options); + for (var d in this.renderer.axisDefaults) { + if (this[d] == null) { + this[d] = this.renderer.axisDefaults[d]; + } + } + var db = this._dataBounds; + // Go through all the series attached to this axis and find + // the min/max bounds for this axis. + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + var d = s.data; + + for (var j=0; j<d.length; j++) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + if (d[j][0] > db.max || db.max == null) { + db.max = d[j][0]; + } + if (d[j][0] > db.max || db.max == null) { + db.max = d[j][0]; + } + } + else { + if (d[j][1] < db.min || db.min == null) { + db.min = d[j][1]; + } + if (d[j][1] > db.max || db.max == null) { + db.max = d[j][1]; + } + } + } + } + }; + + $.jqplot.LogAxisRenderer.prototype.createTicks = function() { + // we're are operating on an axis here + var ticks = this._ticks; + var userTicks = this.ticks; + var name = this.name; + var db = this._dataBounds; + var dim, interval; + var min, max; + var pos1, pos2; + var tt, i; + + // if we already have ticks, use them. + // ticks must be in order of increasing value. + if (userTicks.length) { + // ticks could be 1D or 2D array of [val, val, ,,,] or [[val, label], [val, label], ...] or mixed + for (i=0; i<userTicks.length; i++){ + var ut = userTicks[i]; + var t = new this.tickRenderer(this.tickOptions); + if (ut.constructor == Array) { + t.value = ut[0]; + t.label = ut[1]; + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(ut[0], this.name); + this._ticks.push(t); + } + + else { + t.value = ut; + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(ut, this.name); + this._ticks.push(t); + } + } + this.numberTicks = userTicks.length; + this.min = this._ticks[0].value; + this.max = this._ticks[this.numberTicks-1].value; + } + + // we don't have any ticks yet, let's make some! + else { + if (name == 'xaxis' || name == 'x2axis') { + dim = this._plotDimensions.width; + } + else { + dim = this._plotDimensions.height; + } + + min = ((this.min != null) ? this.min : db.min); + max = ((this.max != null) ? this.max : db.max); + + // if min and max are same, space them out a bit + if (min == max) { + var adj = 0.05; + min = min*(1-adj); + max = max*(1+adj); + } + + // perform some checks + if (this.min != null && this.min <= 0) { + throw('log axis minimum must be greater than 0'); + } + if (this.max != null && this.max <= 0) { + throw('log axis maximum must be greater than 0'); + } + // if (this.pad >1.99) this.pad = 1.99; + var range = max - min; + var rmin, rmax; + + if (this.tickDistribution == 'even') { + rmin = (this.min != null) ? this.min : min - min*((this.padMin-1)/2); + rmax = (this.max != null) ? this.max : max + max*((this.padMax-1)/2); + this.min = rmin; + this.max = rmax; + range = this.max - this.min; + + if (this.numberTicks == null){ + if (dim > 100) { + this.numberTicks = parseInt(3+(dim-100)/75, 10); + } + else { + this.numberTicks = 2; + } + } + + var u = Math.pow(this.base, (1/(this.numberTicks-1)*Math.log(this.max/this.min)/Math.log(this.base))); + for (var i=0; i<this.numberTicks; i++){ + tt = this.min * Math.pow(u, i); + var t = new this.tickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(tt, this.name); + this._ticks.push(t); + } + + } + + else if (this.tickDistribution == 'power'){ + // for power distribution, open up range to get a nice power of axis.renderer.base. + // power distribution won't respect the user's min/max settings. + rmin = Math.pow(this.base, Math.ceil(Math.log(min*(2-this.padMin))/Math.log(this.base))-1); + rmax = Math.pow(this.base, Math.floor(Math.log(max*this.padMax)/Math.log(this.base))+1); + this.min = rmin; + this.max = rmax; + range = this.max - this.min; + + var fittedTicks = 0; + var minorTicks = 0; + if (this.numberTicks == null){ + if (dim > 100) { + this.numberTicks = Math.round(Math.log(this.max/this.min)/Math.log(this.base) + 1); + if (this.numberTicks < 2) { + this.numberTicks = 2; + } + fittedTicks = parseInt(3+(dim-100)/75, 10); + } + else { + this.numberTicks = 2; + fittedTicks = 2; + } + // if we don't have enough ticks, add some intermediate ticks + // how many to have between major ticks. + if (this.numberTicks < fittedTicks-1) { + minorTicks = Math.floor(fittedTicks/this.numberTicks); + } + } + + for (var i=0; i<this.numberTicks; i++){ + tt = Math.pow(this.base, i - this.numberTicks + 1) * this.max; + var t = new this.tickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(tt, this.name); + this._ticks.push(t); + + if (minorTicks && i<this.numberTicks-1) { + var tt1 = Math.pow(this.base, i - this.numberTicks + 2) * this.max; + var spread = tt1 - tt; + var interval = tt1 / (minorTicks+1); + for (var j=minorTicks-1; j>=0; j--) { + var val = tt1-interval*(j+1); + var t = new this.tickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(val, this.name); + this._ticks.push(t); + } + } + } + } + } + }; + + $.jqplot.LogAxisRenderer.prototype.pack = function(pos, offsets) { + var lb = parseInt(this.base, 10); + var ticks = this._ticks; + var trans = function (v) { return Math.log(v)/Math.log(lb); }; + var invtrans = function (v) { return Math.pow(Math.E, (Math.log(lb)*v)); }; + max = trans(this.max); + min = trans(this.min); + var offmax = offsets.max; + var offmin = offsets.min; + var lshow = (this._label == null) ? false : this._label.show; + + for (var p in pos) { + this._elem.css(p, pos[p]); + } + + this._offsets = offsets; + // pixellength will be + for x axes and - for y axes becasue pixels always measured from top left. + var pixellength = offmax - offmin; + var unitlength = max - min; + + // point to unit and unit to point conversions references to Plot DOM element top left corner. + this.p2u = function(p){ + return invtrans((p - offmin) * unitlength / pixellength + min); + }; + + this.u2p = function(u){ + return (trans(u) - min) * pixellength / unitlength + offmin; + }; + + if (this.name == 'xaxis' || this.name == 'x2axis'){ + this.series_u2p = function(u){ + return (trans(u) - min) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return invtrans(p * unitlength / pixellength + min); + }; + } + // yaxis is max at top of canvas. + else { + this.series_u2p = function(u){ + return (trans(u) - max) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return invtrans(p * unitlength / pixellength + max); + }; + } + + if (this.show) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + for (i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + switch (t.labelPosition) { + case 'auto': + // position at end + if (t.angle < 0) { + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + } + // position at start + else { + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + } + break; + case 'end': + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + case 'start': + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + break; + case 'middle': + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + default: + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + } + } + else { + shim = -t.getWidth()/2; + } + // var shim = t.getWidth()/2; + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('left', val); + t.pack(); + } + } + if (lshow) { + var w = this._label._elem.outerWidth(true); + this._label._elem.css('left', offmin + pixellength/2 - w/2 + 'px'); + if (this.name == 'xaxis') { + this._label._elem.css('bottom', '0px'); + } + else { + this._label._elem.css('top', '0px'); + } + this._label.pack(); + } + } + else { + for (i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + switch (t.labelPosition) { + case 'auto': + // position at end + case 'end': + if (t.angle < 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'start': + if (t.angle > 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'middle': + // if (t.angle > 0) { + // shim = -t.getHeight()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + // } + // else { + // shim = -t.getHeight()/2 - t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + // } + shim = -t.getHeight()/2; + break; + default: + shim = -t.getHeight()/2; + break; + } + } + else { + shim = -t.getHeight()/2; + } + + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('top', val); + t.pack(); + } + } + if (lshow) { + var h = this._label._elem.outerHeight(true); + this._label._elem.css('top', offmax - pixellength/2 - h/2 + 'px'); + if (this.name == 'yaxis') { + this._label._elem.css('left', '0px'); + } + else { + this._label._elem.css('right', '0px'); + } + this._label.pack(); + } + } + } + }; +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.logAxisRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.logAxisRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.logAxisRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.logAxisRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.LogAxisRenderer=function(){a.jqplot.LinearAxisRenderer.call(this);this.axisDefaults={base:10,tickDistribution:"even"}};a.jqplot.LogAxisRenderer.prototype=new a.jqplot.LinearAxisRenderer();a.jqplot.LogAxisRenderer.prototype.constructor=a.jqplot.LogAxisRenderer;a.jqplot.LogAxisRenderer.prototype.init=function(e){a.extend(true,this.renderer,e);for(var h in this.renderer.axisDefaults){if(this[h]==null){this[h]=this.renderer.axisDefaults[h]}}var b=this._dataBounds;for(var f=0;f<this._series.length;f++){var g=this._series[f];var h=g.data;for(var c=0;c<h.length;c++){if(this.name=="xaxis"||this.name=="x2axis"){if(h[c][0]>b.max||b.max==null){b.max=h[c][0]}if(h[c][0]>b.max||b.max==null){b.max=h[c][0]}}else{if(h[c][1]<b.min||b.min==null){b.min=h[c][1]}if(h[c][1]>b.max||b.max==null){b.max=h[c][1]}}}}};a.jqplot.LogAxisRenderer.prototype.createTicks=function(){var A=this._ticks;var x=this.ticks;var D=this.name;var z=this._dataBounds;var s,y;var o,v;var e,d;var b,w;if(x.length){for(w=0;w<x.length;w++){var f=x[w];var k=new this.tickRenderer(this.tickOptions);if(f.constructor==Array){k.value=f[0];k.label=f[1];if(!this.showTicks){k.showLabel=false;k.showMark=false}else{if(!this.showTickMarks){k.showMark=false}}k.setTick(f[0],this.name);this._ticks.push(k)}else{k.value=f;if(!this.showTicks){k.showLabel=false;k.showMark=false}else{if(!this.showTickMarks){k.showMark=false}}k.setTick(f,this.name);this._ticks.push(k)}}this.numberTicks=x.length;this.min=this._ticks[0].value;this.max=this._ticks[this.numberTicks-1].value}else{if(D=="xaxis"||D=="x2axis"){s=this._plotDimensions.width}else{s=this._plotDimensions.height}o=((this.min!=null)?this.min:z.min);v=((this.max!=null)?this.max:z.max);if(o==v){var g=0.05;o=o*(1-g);v=v*(1+g)}if(this.min!=null&&this.min<=0){throw ("log axis minimum must be greater than 0")}if(this.max!=null&&this.max<=0){throw ("log axis maximum must be greater than 0")}var l=v-o;var n,r;if(this.tickDistribution=="even"){n=(this.min!=null)?this.min:o-o*((this.padMin-1)/2);r=(this.max!=null)?this.max:v+v*((this.padMax-1)/2);this.min=n;this.max=r;l=this.max-this.min;if(this.numberTicks==null){if(s>100){this.numberTicks=parseInt(3+(s-100)/75,10)}else{this.numberTicks=2}}var h=Math.pow(this.base,(1/(this.numberTicks-1)*Math.log(this.max/this.min)/Math.log(this.base)));for(var w=0;w<this.numberTicks;w++){b=this.min*Math.pow(h,w);var k=new this.tickRenderer(this.tickOptions);if(!this.showTicks){k.showLabel=false;k.showMark=false}else{if(!this.showTickMarks){k.showMark=false}}k.setTick(b,this.name);this._ticks.push(k)}}else{if(this.tickDistribution=="power"){n=Math.pow(this.base,Math.ceil(Math.log(o*(2-this.padMin))/Math.log(this.base))-1);r=Math.pow(this.base,Math.floor(Math.log(v*this.padMax)/Math.log(this.base))+1);this.min=n;this.max=r;l=this.max-this.min;var q=0;var c=0;if(this.numberTicks==null){if(s>100){this.numberTicks=Math.round(Math.log(this.max/this.min)/Math.log(this.base)+1);if(this.numberTicks<2){this.numberTicks=2}q=parseInt(3+(s-100)/75,10)}else{this.numberTicks=2;q=2}if(this.numberTicks<q-1){c=Math.floor(q/this.numberTicks)}}for(var w=0;w<this.numberTicks;w++){b=Math.pow(this.base,w-this.numberTicks+1)*this.max;var k=new this.tickRenderer(this.tickOptions);if(!this.showTicks){k.showLabel=false;k.showMark=false}else{if(!this.showTickMarks){k.showMark=false}}k.setTick(b,this.name);this._ticks.push(k);if(c&&w<this.numberTicks-1){var m=Math.pow(this.base,w-this.numberTicks+2)*this.max;var B=m-b;var y=m/(c+1);for(var p=c-1;p>=0;p--){var C=m-y*(p+1);var k=new this.tickRenderer(this.tickOptions);if(!this.showTicks){k.showLabel=false;k.showMark=false}else{if(!this.showTickMarks){k.showMark=false}}k.setTick(C,this.name);this._ticks.push(k)}}}}}}};a.jqplot.LogAxisRenderer.prototype.pack=function(n,j){var d=parseInt(this.base,10);var q=this._ticks;var v=function(h){return Math.log(h)/Math.log(d)};var b=function(h){return Math.pow(Math.E,(Math.log(d)*h))};max=v(this.max);min=v(this.min);var g=j.max;var u=j.min;var l=(this._label==null)?false:this._label.show;for(var c in n){this._elem.css(c,n[c])}this._offsets=j;var f=g-u;var s=max-min;this.p2u=function(h){return b((h-u)*s/f+min)};this.u2p=function(h){return(v(h)-min)*f/s+u};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(h){return(v(h)-min)*f/s};this.series_p2u=function(h){return b(h*s/f+min)}}else{this.series_u2p=function(h){return(v(h)-max)*f/s};this.series_p2u=function(h){return b(h*s/f+max)}}if(this.show){if(this.name=="xaxis"||this.name=="x2axis"){for(i=0;i<q.length;i++){var r=q[i];if(r.show&&r.showLabel){var k;if(r.constructor==a.jqplot.CanvasAxisTickRenderer&&r.angle){switch(r.labelPosition){case"auto":if(r.angle<0){k=-r.getWidth()+r._textRenderer.height*Math.sin(-r._textRenderer.angle)/2}else{k=-r._textRenderer.height*Math.sin(r._textRenderer.angle)/2}break;case"end":k=-r.getWidth()+r._textRenderer.height*Math.sin(-r._textRenderer.angle)/2;break;case"start":k=-r._textRenderer.height*Math.sin(r._textRenderer.angle)/2;break;case"middle":k=-r.getWidth()/2+r._textRenderer.height*Math.sin(-r._textRenderer.angle)/2;break;default:k=-r.getWidth()/2+r._textRenderer.height*Math.sin(-r._textRenderer.angle)/2;break}}else{k=-r.getWidth()/2}var e=this.u2p(r.value)+k+"px";r._elem.css("left",e);r.pack()}}if(l){var o=this._label._elem.outerWidth(true);this._label._elem.css("left",u+f/2-o/2+"px");if(this.name=="xaxis"){this._label._elem.css("bottom","0px")}else{this._label._elem.css("top","0px")}this._label.pack()}}else{for(i=0;i<q.length;i++){var r=q[i];if(r.show&&r.showLabel){var k;if(r.constructor==a.jqplot.CanvasAxisTickRenderer&&r.angle){switch(r.labelPosition){case"auto":case"end":if(r.angle<0){k=-r._textRenderer.height*Math.cos(-r._textRenderer.angle)/2}else{k=-r.getHeight()+r._textRenderer.height*Math.cos(r._textRenderer.angle)/2}break;case"start":if(r.angle>0){k=-r._textRenderer.height*Math.cos(-r._textRenderer.angle)/2}else{k=-r.getHeight()+r._textRenderer.height*Math.cos(r._textRenderer.angle)/2}break;case"middle":k=-r.getHeight()/2;break;default:k=-r.getHeight()/2;break}}else{k=-r.getHeight()/2}var e=this.u2p(r.value)+k+"px";r._elem.css("top",e);r.pack()}}if(l){var m=this._label._elem.outerHeight(true);this._label._elem.css("top",g-f/2-m/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{this._label._elem.css("right","0px")}this._label.pack()}}}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.mekkoAxisRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.mekkoAxisRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.mekkoAxisRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.mekkoAxisRenderer.js @@ -0,0 +1,595 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + // class: $.jqplot.MekkoAxisRenderer + // An axis renderer for a Mekko chart. + // Should be used with a Mekko chart where the mekkoRenderer is used on the series. + // Displays the Y axis as a range from 0 to 1 (0 to 100%) and the x axis with a tick + // for each series scaled to the sum of all the y values. + $.jqplot.MekkoAxisRenderer = function() { + }; + + // called with scope of axis object. + $.jqplot.MekkoAxisRenderer.prototype.init = function(options){ + // prop: tickMode + // How to space the ticks on the axis. + // 'bar' will place a tick at the width of each bar. + // This is the default for the x axis. + // 'even' will place ticks at even intervals. This is + // the default for x2 axis and y axis. y axis cannot be changed. + this.tickMode; + // prop: barLabelRenderer + // renderer to use to draw labels under each bar. + this.barLabelRenderer = $.jqplot.AxisLabelRenderer; + // prop: barLabels + // array of labels to put under each bar. + this.barLabels = this.barLabels || []; + // prop: barLabelOptions + // options object to pass to the bar label renderer. + this.barLabelOptions = {}; + this.tickOptions = $.extend(true, {showGridline:false}, this.tickOptions); + this._barLabels = []; + $.extend(true, this, options); + if (this.name == 'yaxis') { + this.tickOptions.formatString = this.tickOptions.formatString || "%d\%"; + } + var db = this._dataBounds; + db.min = 0; + // for y axes, scale always go from 0 to 1 (0 to 100%) + if (this.name == 'yaxis' || this.name == 'y2axis') { + db.max = 100; + this.tickMode = 'even'; + } + // For x axes, scale goes from 0 to sum of all y values. + else if (this.name == 'xaxis'){ + this.tickMode = (this.tickMode == null) ? 'bar' : this.tickMode; + for (var i=0; i<this._series.length; i++) { + db.max += this._series[i]._sumy; + } + } + else if (this.name == 'x2axis'){ + this.tickMode = (this.tickMode == null) ? 'even' : this.tickMode; + for (var i=0; i<this._series.length; i++) { + db.max += this._series[i]._sumy; + } + } + }; + + // called with scope of axis + $.jqplot.MekkoAxisRenderer.prototype.draw = function(ctx) { + if (this.show) { + // populate the axis label and value properties. + // createTicks is a method on the renderer, but + // call it within the scope of the axis. + this.renderer.createTicks.call(this); + // fill a div with axes labels in the right direction. + // Need to pregenerate each axis to get it's bounds and + // position it and the labels correctly on the plot. + var dim=0; + var temp; + + this._elem = $('<div class="jqplot-axis jqplot-'+this.name+'" style="position:absolute;"></div>'); + + if (this.name == 'xaxis' || this.name == 'x2axis') { + this._elem.width(this._plotDimensions.width); + } + else { + this._elem.height(this._plotDimensions.height); + } + + // draw the axis label + // create a _label object. + this.labelOptions.axis = this.name; + this._label = new this.labelRenderer(this.labelOptions); + if (this._label.show) { + var elem = this._label.draw(ctx); + elem.appendTo(this._elem); + } + + var t, tick, elem; + if (this.showTicks) { + t = this._ticks; + for (var i=0; i<t.length; i++) { + tick = t[i]; + if (tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { + elem = tick.draw(ctx); + elem.appendTo(this._elem); + } + } + } + + // draw the series labels + for (i=0; i<this.barLabels.length; i++) { + this.barLabelOptions.axis = this.name; + this.barLabelOptions.label = this.barLabels[i]; + this._barLabels.push(new this.barLabelRenderer(this.barLabelOptions)); + if (this.tickMode != 'bar') { + this._barLabels[i].show = false; + } + if (this._barLabels[i].show) { + var elem = this._barLabels[i].draw(ctx); + elem.removeClass('jqplot-'+this.name+'-label'); + elem.addClass('jqplot-'+this.name+'-tick'); + elem.addClass('jqplot-mekko-barLabel'); + elem.appendTo(this._elem); + } + } + + } + return this._elem; + }; + + // called with scope of an axis + $.jqplot.MekkoAxisRenderer.prototype.reset = function() { + this.min = this._min; + this.max = this._max; + this.tickInterval = this._tickInterval; + this.numberTicks = this._numberTicks; + // this._ticks = this.__ticks; + }; + + // called with scope of axis + $.jqplot.MekkoAxisRenderer.prototype.set = function() { + var dim = 0; + var temp; + var w = 0; + var h = 0; + var lshow = (this._label == null) ? false : this._label.show; + if (this.show && this.showTicks) { + var t = this._ticks; + for (var i=0; i<t.length; i++) { + var tick = t[i]; + if (tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + temp = tick._elem.outerHeight(true); + } + else { + temp = tick._elem.outerWidth(true); + } + if (temp > dim) { + dim = temp; + } + } + } + + if (lshow) { + w = this._label._elem.outerWidth(true); + h = this._label._elem.outerHeight(true); + } + if (this.name == 'xaxis') { + dim = dim + h; + this._elem.css({'height':dim+'px', left:'0px', bottom:'0px'}); + } + else if (this.name == 'x2axis') { + dim = dim + h; + this._elem.css({'height':dim+'px', left:'0px', top:'0px'}); + } + else if (this.name == 'yaxis') { + dim = dim + w; + this._elem.css({'width':dim+'px', left:'0px', top:'0px'}); + if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { + this._label._elem.css('width', w+'px'); + } + } + else { + dim = dim + w; + this._elem.css({'width':dim+'px', right:'0px', top:'0px'}); + if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { + this._label._elem.css('width', w+'px'); + } + } + } + }; + + // called with scope of axis + $.jqplot.MekkoAxisRenderer.prototype.createTicks = function() { + // we're are operating on an axis here + var ticks = this._ticks; + var userTicks = this.ticks; + var name = this.name; + // databounds were set on axis initialization. + var db = this._dataBounds; + var dim, interval; + var min, max; + var pos1, pos2; + var t, tt, i, j; + + // if we already have ticks, use them. + // ticks must be in order of increasing value. + + if (userTicks.length) { + // ticks could be 1D or 2D array of [val, val, ,,,] or [[val, label], [val, label], ...] or mixed + for (i=0; i<userTicks.length; i++){ + var ut = userTicks[i]; + var t = new this.tickRenderer(this.tickOptions); + if (ut.constructor == Array) { + t.value = ut[0]; + t.label = ut[1]; + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(ut[0], this.name); + this._ticks.push(t); + } + + else { + t.value = ut; + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(ut, this.name); + this._ticks.push(t); + } + } + this.numberTicks = userTicks.length; + this.min = this._ticks[0].value; + this.max = this._ticks[this.numberTicks-1].value; + this.tickInterval = (this.max - this.min) / (this.numberTicks - 1); + } + + // we don't have any ticks yet, let's make some! + else { + if (name == 'xaxis' || name == 'x2axis') { + dim = this._plotDimensions.width; + } + else { + dim = this._plotDimensions.height; + } + + // if min, max and number of ticks specified, user can't specify interval. + if (this.min != null && this.max != null && this.numberTicks != null) { + this.tickInterval = null; + } + + min = (this.min != null) ? this.min : db.min; + max = (this.max != null) ? this.max : db.max; + + // if min and max are same, space them out a bit.+ + if (min == max) { + var adj = 0.05; + if (min > 0) { + adj = Math.max(Math.log(min)/Math.LN10, 0.05); + } + min -= adj; + max += adj; + } + + var range = max - min; + var rmin, rmax; + var temp, prev, curr; + var ynumticks = [3,5,6,11,21]; + + // yaxis divide ticks in nice intervals from 0 to 1. + if (this.name == 'yaxis' || this.name == 'y2axis') { + this.min = 0; + this.max = 100; + // user didn't specify number of ticks. + if (!this.numberTicks){ + if (this.tickInterval) { + this.numberTicks = 3 + Math.ceil(range / this.tickInterval); + } + else { + temp = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); + for (i=0; i<ynumticks.length; i++) { + curr = temp/ynumticks[i]; + if (curr == 1) { + this.numberTicks = ynumticks[i]; + break; + } + else if (curr > 1) { + prev = curr; + continue; + } + else if (curr < 1) { + // was prev or is curr closer to one? + if (Math.abs(prev - 1) < Math.abs(curr - 1)) { + this.numberTicks = ynumticks[i-1]; + break; + } + else { + this.numberTicks = ynumticks[i]; + break; + } + } + else if (i == ynumticks.length -1) { + this.numberTicks = ynumticks[i]; + } + } + this.tickInterval = range / (this.numberTicks - 1); + } + } + + // user did specify number of ticks. + else { + this.tickInterval = range / (this.numberTicks - 1); + } + + for (var i=0; i<this.numberTicks; i++){ + tt = this.min + i * this.tickInterval; + t = new this.tickRenderer(this.tickOptions); + // var t = new $.jqplot.AxisTickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(tt, this.name); + this._ticks.push(t); + } + } + + // for x axes, have number ot ticks equal to number of series and ticks placed + // at sum of y values for each series. + else if (this.tickMode == 'bar') { + this.min = 0; + this.numberTicks = this._series.length + 1; + t = new this.tickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(0, this.name); + this._ticks.push(t); + + temp = 0; + + for (i=1; i<this.numberTicks; i++){ + temp += this._series[i-1]._sumy; + t = new this.tickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(temp, this.name); + this._ticks.push(t); + } + this.max = this.max || temp; + + // if user specified a max and it is greater than sum, add a tick + if (this.max > temp) { + t = new this.tickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(this.max, this.name); + this._ticks.push(t); + + } + } + + else if (this.tickMode == 'even') { + this.min = 0; + this.max = this.max || db.max; + // get a desired number of ticks + var nt = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); + range = this.max - this.min; + this.numberTicks = nt; + this.tickInterval = range / (this.numberTicks - 1); + + for (i=0; i<this.numberTicks; i++){ + tt = this.min + i * this.tickInterval; + t = new this.tickRenderer(this.tickOptions); + // var t = new $.jqplot.AxisTickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(tt, this.name); + this._ticks.push(t); + } + + } + } + }; + + // called with scope of axis + $.jqplot.MekkoAxisRenderer.prototype.pack = function(pos, offsets) { + var ticks = this._ticks; + var max = this.max; + var min = this.min; + var offmax = offsets.max; + var offmin = offsets.min; + var lshow = (this._label == null) ? false : this._label.show; + + for (var p in pos) { + this._elem.css(p, pos[p]); + } + + this._offsets = offsets; + // pixellength will be + for x axes and - for y axes becasue pixels always measured from top left. + var pixellength = offmax - offmin; + var unitlength = max - min; + + // point to unit and unit to point conversions references to Plot DOM element top left corner. + this.p2u = function(p){ + return (p - offmin) * unitlength / pixellength + min; + }; + + this.u2p = function(u){ + return (u - min) * pixellength / unitlength + offmin; + }; + + if (this.name == 'xaxis' || this.name == 'x2axis'){ + this.series_u2p = function(u){ + return (u - min) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + min; + }; + } + + else { + this.series_u2p = function(u){ + return (u - max) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + max; + }; + } + + if (this.show) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + for (i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + // will need to adjust auto positioning based on which axis this is. + var temp = (this.name == 'xaxis') ? 1 : -1; + switch (t.labelPosition) { + case 'auto': + // position at end + if (temp * t.angle < 0) { + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + } + // position at start + else { + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + } + break; + case 'end': + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + case 'start': + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + break; + case 'middle': + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + default: + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + } + } + else { + shim = -t.getWidth()/2; + } + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('left', val); + t.pack(); + } + } + var w; + if (lshow) { + w = this._label._elem.outerWidth(true); + this._label._elem.css('left', offmin + pixellength/2 - w/2 + 'px'); + if (this.name == 'xaxis') { + this._label._elem.css('bottom', '0px'); + } + else { + this._label._elem.css('top', '0px'); + } + this._label.pack(); + } + // now show the labels under the bars. + var b, l, r; + for (i=0; i<this.barLabels.length; i++) { + b = this._barLabels[i]; + if (b.show) { + w = b.getWidth(); + l = this._ticks[i].getLeft() + this._ticks[i].getWidth(); + r = this._ticks[i+1].getLeft(); + b._elem.css('left', (r+l-w)/2+'px'); + b._elem.css('top', this._ticks[i]._elem.css('top')); + b.pack(); + } + } + } + else { + for (i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + // will need to adjust auto positioning based on which axis this is. + var temp = (this.name == 'yaxis') ? 1 : -1; + switch (t.labelPosition) { + case 'auto': + // position at end + case 'end': + if (temp * t.angle < 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'start': + if (t.angle > 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'middle': + shim = -t.getHeight()/2; + break; + default: + shim = -t.getHeight()/2; + break; + } + } + else { + shim = -t.getHeight()/2; + } + + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('top', val); + t.pack(); + } + } + if (lshow) { + var h = this._label._elem.outerHeight(true); + this._label._elem.css('top', offmax - pixellength/2 - h/2 + 'px'); + if (this.name == 'yaxis') { + this._label._elem.css('left', '0px'); + } + else { + this._label._elem.css('right', '0px'); + } + this._label.pack(); + } + } + } + }; +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.mekkoAxisRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.mekkoAxisRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.mekkoAxisRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.mekkoAxisRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.MekkoAxisRenderer=function(){};a.jqplot.MekkoAxisRenderer.prototype.init=function(c){this.tickMode;this.barLabelRenderer=a.jqplot.AxisLabelRenderer;this.barLabels=this.barLabels||[];this.barLabelOptions={};this.tickOptions=a.extend(true,{showGridline:false},this.tickOptions);this._barLabels=[];a.extend(true,this,c);if(this.name=="yaxis"){this.tickOptions.formatString=this.tickOptions.formatString||"%d%"}var b=this._dataBounds;b.min=0;if(this.name=="yaxis"||this.name=="y2axis"){b.max=100;this.tickMode="even"}else{if(this.name=="xaxis"){this.tickMode=(this.tickMode==null)?"bar":this.tickMode;for(var d=0;d<this._series.length;d++){b.max+=this._series[d]._sumy}}else{if(this.name=="x2axis"){this.tickMode=(this.tickMode==null)?"even":this.tickMode;for(var d=0;d<this._series.length;d++){b.max+=this._series[d]._sumy}}}}};a.jqplot.MekkoAxisRenderer.prototype.draw=function(b){if(this.show){this.renderer.createTicks.call(this);var h=0;var c;this._elem=a('<div class="jqplot-axis jqplot-'+this.name+'" style="position:absolute;"></div>');if(this.name=="xaxis"||this.name=="x2axis"){this._elem.width(this._plotDimensions.width)}else{this._elem.height(this._plotDimensions.height)}this.labelOptions.axis=this.name;this._label=new this.labelRenderer(this.labelOptions);if(this._label.show){var g=this._label.draw(b);g.appendTo(this._elem)}var f,e,g;if(this.showTicks){f=this._ticks;for(var d=0;d<f.length;d++){e=f[d];if(e.showLabel&&(!e.isMinorTick||this.showMinorTicks)){g=e.draw(b);g.appendTo(this._elem)}}}for(d=0;d<this.barLabels.length;d++){this.barLabelOptions.axis=this.name;this.barLabelOptions.label=this.barLabels[d];this._barLabels.push(new this.barLabelRenderer(this.barLabelOptions));if(this.tickMode!="bar"){this._barLabels[d].show=false}if(this._barLabels[d].show){var g=this._barLabels[d].draw(b);g.removeClass("jqplot-"+this.name+"-label");g.addClass("jqplot-"+this.name+"-tick");g.addClass("jqplot-mekko-barLabel");g.appendTo(this._elem)}}}return this._elem};a.jqplot.MekkoAxisRenderer.prototype.reset=function(){this.min=this._min;this.max=this._max;this.tickInterval=this._tickInterval;this.numberTicks=this._numberTicks};a.jqplot.MekkoAxisRenderer.prototype.set=function(){var k=0;var d;var c=0;var j=0;var b=(this._label==null)?false:this._label.show;if(this.show&&this.showTicks){var g=this._ticks;for(var f=0;f<g.length;f++){var e=g[f];if(e.showLabel&&(!e.isMinorTick||this.showMinorTicks)){if(this.name=="xaxis"||this.name=="x2axis"){d=e._elem.outerHeight(true)}else{d=e._elem.outerWidth(true)}if(d>k){k=d}}}if(b){c=this._label._elem.outerWidth(true);j=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){k=k+j;this._elem.css({height:k+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){k=k+j;this._elem.css({height:k+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){k=k+c;this._elem.css({width:k+"px",left:"0px",top:"0px"});if(b&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",c+"px")}}else{k=k+c;this._elem.css({width:k+"px",right:"0px",top:"0px"});if(b&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",c+"px")}}}}}};a.jqplot.MekkoAxisRenderer.prototype.createTicks=function(){var z=this._ticks;var w=this.ticks;var B=this.name;var y=this._dataBounds;var p,x;var n,r;var d,c;var h,b,s,q;if(w.length){for(s=0;s<w.length;s++){var e=w[s];var h=new this.tickRenderer(this.tickOptions);if(e.constructor==Array){h.value=e[0];h.label=e[1];if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(e[0],this.name);this._ticks.push(h)}else{h.value=e;if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(e,this.name);this._ticks.push(h)}}this.numberTicks=w.length;this.min=this._ticks[0].value;this.max=this._ticks[this.numberTicks-1].value;this.tickInterval=(this.max-this.min)/(this.numberTicks-1)}else{if(B=="xaxis"||B=="x2axis"){p=this._plotDimensions.width}else{p=this._plotDimensions.height}if(this.min!=null&&this.max!=null&&this.numberTicks!=null){this.tickInterval=null}n=(this.min!=null)?this.min:y.min;r=(this.max!=null)?this.max:y.max;if(n==r){var g=0.05;if(n>0){g=Math.max(Math.log(n)/Math.LN10,0.05)}n-=g;r+=g}var k=r-n;var m,o;var v,l,u;var f=[3,5,6,11,21];if(this.name=="yaxis"||this.name=="y2axis"){this.min=0;this.max=100;if(!this.numberTicks){if(this.tickInterval){this.numberTicks=3+Math.ceil(k/this.tickInterval)}else{v=2+Math.ceil((p-(this.tickSpacing-1))/this.tickSpacing);for(s=0;s<f.length;s++){u=v/f[s];if(u==1){this.numberTicks=f[s];break}else{if(u>1){l=u;continue}else{if(u<1){if(Math.abs(l-1)<Math.abs(u-1)){this.numberTicks=f[s-1];break}else{this.numberTicks=f[s];break}}else{if(s==f.length-1){this.numberTicks=f[s]}}}}}this.tickInterval=k/(this.numberTicks-1)}}else{this.tickInterval=k/(this.numberTicks-1)}for(var s=0;s<this.numberTicks;s++){b=this.min+s*this.tickInterval;h=new this.tickRenderer(this.tickOptions);if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(b,this.name);this._ticks.push(h)}}else{if(this.tickMode=="bar"){this.min=0;this.numberTicks=this._series.length+1;h=new this.tickRenderer(this.tickOptions);if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(0,this.name);this._ticks.push(h);v=0;for(s=1;s<this.numberTicks;s++){v+=this._series[s-1]._sumy;h=new this.tickRenderer(this.tickOptions);if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(v,this.name);this._ticks.push(h)}this.max=this.max||v;if(this.max>v){h=new this.tickRenderer(this.tickOptions);if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(this.max,this.name);this._ticks.push(h)}}else{if(this.tickMode=="even"){this.min=0;this.max=this.max||y.max;var A=2+Math.ceil((p-(this.tickSpacing-1))/this.tickSpacing);k=this.max-this.min;this.numberTicks=A;this.tickInterval=k/(this.numberTicks-1);for(s=0;s<this.numberTicks;s++){b=this.min+s*this.tickInterval;h=new this.tickRenderer(this.tickOptions);if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(b,this.name);this._ticks.push(h)}}}}}};a.jqplot.MekkoAxisRenderer.prototype.pack=function(e,d){var B=this._ticks;var x=this.max;var v=this.min;var m=d.max;var j=d.min;var o=(this._label==null)?false:this._label.show;for(var s in e){this._elem.css(s,e[s])}this._offsets=d;var f=m-j;var g=x-v;this.p2u=function(b){return(b-j)*g/f+v};this.u2p=function(b){return(b-v)*f/g+j};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(b){return(b-v)*f/g};this.series_p2u=function(b){return b*g/f+v}}else{this.series_u2p=function(b){return(b-x)*f/g};this.series_p2u=function(b){return b*g/f+x}}if(this.show){if(this.name=="xaxis"||this.name=="x2axis"){for(i=0;i<B.length;i++){var n=B[i];if(n.show&&n.showLabel){var c;if(n.constructor==a.jqplot.CanvasAxisTickRenderer&&n.angle){var z=(this.name=="xaxis")?1:-1;switch(n.labelPosition){case"auto":if(z*n.angle<0){c=-n.getWidth()+n._textRenderer.height*Math.sin(-n._textRenderer.angle)/2}else{c=-n._textRenderer.height*Math.sin(n._textRenderer.angle)/2}break;case"end":c=-n.getWidth()+n._textRenderer.height*Math.sin(-n._textRenderer.angle)/2;break;case"start":c=-n._textRenderer.height*Math.sin(n._textRenderer.angle)/2;break;case"middle":c=-n.getWidth()/2+n._textRenderer.height*Math.sin(-n._textRenderer.angle)/2;break;default:c=-n.getWidth()/2+n._textRenderer.height*Math.sin(-n._textRenderer.angle)/2;break}}else{c=-n.getWidth()/2}var C=this.u2p(n.value)+c+"px";n._elem.css("left",C);n.pack()}}var k;if(o){k=this._label._elem.outerWidth(true);this._label._elem.css("left",j+f/2-k/2+"px");if(this.name=="xaxis"){this._label._elem.css("bottom","0px")}else{this._label._elem.css("top","0px")}this._label.pack()}var A,u,q;for(i=0;i<this.barLabels.length;i++){A=this._barLabels[i];if(A.show){k=A.getWidth();u=this._ticks[i].getLeft()+this._ticks[i].getWidth();q=this._ticks[i+1].getLeft();A._elem.css("left",(q+u-k)/2+"px");A._elem.css("top",this._ticks[i]._elem.css("top"));A.pack()}}}else{for(i=0;i<B.length;i++){var n=B[i];if(n.show&&n.showLabel){var c;if(n.constructor==a.jqplot.CanvasAxisTickRenderer&&n.angle){var z=(this.name=="yaxis")?1:-1;switch(n.labelPosition){case"auto":case"end":if(z*n.angle<0){c=-n._textRenderer.height*Math.cos(-n._textRenderer.angle)/2}else{c=-n.getHeight()+n._textRenderer.height*Math.cos(n._textRenderer.angle)/2}break;case"start":if(n.angle>0){c=-n._textRenderer.height*Math.cos(-n._textRenderer.angle)/2}else{c=-n.getHeight()+n._textRenderer.height*Math.cos(n._textRenderer.angle)/2}break;case"middle":c=-n.getHeight()/2;break;default:c=-n.getHeight()/2;break}}else{c=-n.getHeight()/2}var C=this.u2p(n.value)+c+"px";n._elem.css("top",C);n.pack()}}if(o){var y=this._label._elem.outerHeight(true);this._label._elem.css("top",m-f/2-y/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{this._label._elem.css("right","0px")}this._label.pack()}}}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.mekkoRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.mekkoRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.mekkoRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.mekkoRenderer.js @@ -0,0 +1,419 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.MekkoRenderer + * Draws a Mekko style chart which shows 3 dimensional data on a 2 dimensional graph. + * the <$.jqplot.MekkoAxisRenderer> should be used with mekko charts. The mekko renderer + * overrides the default legend renderer with it's own $.jqplot.MekkoLegendRenderer + * which allows more flexibility to specify number of rows and columns in the legend. + * + * Data is specified per bar in the chart. You can specify data as an array of y values, or as + * an array of [label, value] pairs. Note that labels are used only on the first series. + * Labels on subsequent series are ignored: + * + * > bar1 = [['shirts', 8],['hats', 14],['shoes', 6],['gloves', 16],['dolls', 12]]; + * > bar2 = [15,6,9,13,6]; + * > bar3 = [['grumpy',4],['sneezy',2],['happy',7],['sleepy',9],['doc',7]]; + * + * If you want to place labels for each bar under the axis, you use the barLabels option on + * the axes. The bar labels can be styled with the ".jqplot-mekko-barLabel" css class. + * + * > barLabels = ['Mickey Mouse', 'Donald Duck', 'Goofy']; + * > axes:{xaxis:{barLabels:barLabels}} + * + */ + + + $.jqplot.MekkoRenderer = function(){ + this.shapeRenderer = new $.jqplot.ShapeRenderer(); + // prop: borderColor + // color of the borders between areas on the chart + this.borderColor = null; + // prop: showBorders + // True to draw borders lines between areas on the chart. + // False will draw borders lines with the same color as the area. + this.showBorders = true; + }; + + // called with scope of series. + $.jqplot.MekkoRenderer.prototype.init = function(options, plot) { + this.fill = false; + this.fillRect = true; + this.strokeRect = true; + this.shadow = false; + // width of bar on x axis. + this._xwidth = 0; + this._xstart = 0; + $.extend(true, this.renderer, options); + // set the shape renderer options + var opts = {lineJoin:'miter', lineCap:'butt', isarc:false, fillRect:this.fillRect, strokeRect:this.strokeRect}; + this.renderer.shapeRenderer.init(opts); + plot.axes.x2axis._series.push(this); + }; + + // Method: setGridData + // converts the user data values to grid coordinates and stores them + // in the gridData array. Will convert user data into appropriate + // rectangles. + // Called with scope of a series. + $.jqplot.MekkoRenderer.prototype.setGridData = function(plot) { + // recalculate the grid data + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var data = this._plotData; + this.gridData = []; + // figure out width on x axis. + // this._xwidth = this._sumy / plot._sumy * this.canvas.getWidth(); + this._xwidth = xp(this._sumy) - xp(0); + if (this.index>0) { + this._xstart = plot.series[this.index-1]._xstart + plot.series[this.index-1]._xwidth; + } + var totheight = this.canvas.getHeight(); + var sumy = 0; + var cury; + var curheight; + for (var i=0; i<data.length; i++) { + if (data[i] != null) { + sumy += data[i][1]; + cury = totheight - (sumy / this._sumy * totheight); + curheight = data[i][1] / this._sumy * totheight; + this.gridData.push([this._xstart, cury, this._xwidth, curheight]); + } + } + }; + + // Method: makeGridData + // converts any arbitrary data values to grid coordinates and + // returns them. This method exists so that plugins can use a series' + // linerenderer to generate grid data points without overwriting the + // grid data associated with that series. + // Called with scope of a series. + $.jqplot.MekkoRenderer.prototype.makeGridData = function(data, plot) { + // recalculate the grid data + // figure out width on x axis. + var xp = this._xaxis.series_u2p; + var totheight = this.canvas.getHeight(); + var sumy = 0; + var cury; + var curheight; + var gd = []; + for (var i=0; i<data.length; i++) { + if (data[i] != null) { + sumy += data[i][1]; + cury = totheight - (sumy / this._sumy * totheight); + curheight = data[i][1] / this._sumy * totheight; + gd.push([this._xstart, cury, this._xwidth, curheight]); + } + } + return gd; + }; + + + // called within scope of series. + $.jqplot.MekkoRenderer.prototype.draw = function(ctx, gd, options) { + var i; + var opts = (options != undefined) ? options : {}; + var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine; + var colorGenerator = new $.jqplot.ColorGenerator(this.seriesColors); + ctx.save(); + if (gd.length) { + if (showLine) { + for (i=0; i<gd.length; i++){ + opts.fillStyle = colorGenerator.next(); + if (this.renderer.showBorders) { + opts.strokeStyle = this.renderer.borderColor; + } + else { + opts.strokeStyle = opts.fillStyle; + } + this.renderer.shapeRenderer.draw(ctx, gd[i], opts); + } + } + } + + ctx.restore(); + }; + + $.jqplot.MekkoRenderer.prototype.drawShadow = function(ctx, gd, options) { + // This is a no-op, no shadows on mekko charts. + }; + + /** + * Class: $.jqplot.MekkoLegendRenderer + * Legend renderer used by mekko charts with options for + * controlling number or rows and columns as well as placement + * outside of plot area. + * + */ + $.jqplot.MekkoLegendRenderer = function(){ + // + }; + + $.jqplot.MekkoLegendRenderer.prototype.init = function(options) { + // prop: numberRows + // Maximum number of rows in the legend. 0 or null for unlimited. + this.numberRows = null; + // prop: numberColumns + // Maximum number of columns in the legend. 0 or null for unlimited. + this.numberColumns = null; + // this will override the placement option on the Legend object + this.placement = "outside"; + $.extend(true, this, options); + }; + + // called with scope of legend + $.jqplot.MekkoLegendRenderer.prototype.draw = function() { + var legend = this; + if (this.show) { + var series = this._series; + var ss = 'position:absolute;'; + ss += (this.background) ? 'background:'+this.background+';' : ''; + ss += (this.border) ? 'border:'+this.border+';' : ''; + ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : ''; + ss += (this.textColor) ? 'color:'+this.textColor+';' : ''; + this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>'); + // Mekko charts legends don't go by number of series, but by number of data points + // in the series. Refactor things here for that. + + var pad = false, + reverse = true, // mekko charts are always stacked, so reverse + nr, nc; + var s = series[0]; + var colorGenerator = new $.jqplot.ColorGenerator(s.seriesColors); + + if (s.show) { + var pd = s.data; + if (this.numberRows) { + nr = this.numberRows; + if (!this.numberColumns){ + nc = Math.ceil(pd.length/nr); + } + else{ + nc = this.numberColumns; + } + } + else if (this.numberColumns) { + nc = this.numberColumns; + nr = Math.ceil(pd.length/this.numberColumns); + } + else { + nr = pd.length; + nc = 1; + } + + var i, j, tr, td1, td2, lt, rs, color; + var idx = 0; + + for (i=0; i<nr; i++) { + if (reverse){ + tr = $('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem); + } + else{ + tr = $('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem); + } + for (j=0; j<nc; j++) { + if (idx < pd.length) { + lt = this.labels[idx] || pd[idx][0].toString(); + color = colorGenerator.next(); + if (!reverse){ + if (i>0){ + pad = true; + } + else{ + pad = false; + } + } + else{ + if (i == nr -1){ + pad = false; + } + else{ + pad = true; + } + } + rs = (pad) ? this.rowSpacing : '0'; + + td1 = $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+ + '<div><div class="jqplot-table-legend-swatch" style="border-color:'+color+';"></div>'+ + '</div></td>'); + td2 = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>'); + if (this.escapeHtml){ + td2.text(lt); + } + else { + td2.html(lt); + } + if (reverse) { + td2.prependTo(tr); + td1.prependTo(tr); + } + else { + td1.appendTo(tr); + td2.appendTo(tr); + } + pad = true; + } + idx++; + } + } + } + } + return this._elem; + }; + + $.jqplot.MekkoLegendRenderer.prototype.pack = function(offsets) { + if (this.show) { + // fake a grid for positioning + var grid = {_top:offsets.top, _left:offsets.left, _right:offsets.right, _bottom:this._plotDimensions.height - offsets.bottom}; + if (this.placement == 'insideGrid') { + switch (this.location) { + case 'nw': + var a = grid._left + this.xoffset; + var b = grid._top + this.yoffset; + this._elem.css('left', a); + this._elem.css('top', b); + break; + case 'n': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = grid._top + this.yoffset; + this._elem.css('left', a); + this._elem.css('top', b); + break; + case 'ne': + var a = offsets.right + this.xoffset; + var b = grid._top + this.yoffset; + this._elem.css({right:a, top:b}); + break; + case 'e': + var a = offsets.right + this.xoffset; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({right:a, top:b}); + break; + case 'se': + var a = offsets.right + this.xoffset; + var b = offsets.bottom + this.yoffset; + this._elem.css({right:a, bottom:b}); + break; + case 's': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = offsets.bottom + this.yoffset; + this._elem.css({left:a, bottom:b}); + break; + case 'sw': + var a = grid._left + this.xoffset; + var b = offsets.bottom + this.yoffset; + this._elem.css({left:a, bottom:b}); + break; + case 'w': + var a = grid._left + this.xoffset; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({left:a, top:b}); + break; + default: // same as 'se' + var a = grid._right - this.xoffset; + var b = grid._bottom + this.yoffset; + this._elem.css({right:a, bottom:b}); + break; + } + + } + else { + switch (this.location) { + case 'nw': + var a = this._plotDimensions.width - grid._left + this.xoffset; + var b = grid._top + this.yoffset; + this._elem.css('right', a); + this._elem.css('top', b); + break; + case 'n': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = this._plotDimensions.height - grid._top + this.yoffset; + this._elem.css('left', a); + this._elem.css('bottom', b); + break; + case 'ne': + var a = this._plotDimensions.width - offsets.right + this.xoffset; + var b = grid._top + this.yoffset; + this._elem.css({left:a, top:b}); + break; + case 'e': + var a = this._plotDimensions.width - offsets.right + this.xoffset; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({left:a, top:b}); + break; + case 'se': + var a = this._plotDimensions.width - offsets.right + this.xoffset; + var b = offsets.bottom + this.yoffset; + this._elem.css({left:a, bottom:b}); + break; + case 's': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = this._plotDimensions.height - offsets.bottom + this.yoffset; + this._elem.css({left:a, top:b}); + break; + case 'sw': + var a = this._plotDimensions.width - grid._left + this.xoffset; + var b = offsets.bottom + this.yoffset; + this._elem.css({right:a, bottom:b}); + break; + case 'w': + var a = this._plotDimensions.width - grid._left + this.xoffset; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({right:a, top:b}); + break; + default: // same as 'se' + var a = grid._right - this.xoffset; + var b = grid._bottom + this.yoffset; + this._elem.css({right:a, bottom:b}); + break; + } + } + } + }; + + // setup default renderers for axes and legend so user doesn't have to + // called with scope of plot + function preInit(target, data, options) { + options = options || {}; + options.axesDefaults = options.axesDefaults || {}; + options.legend = options.legend || {}; + options.seriesDefaults = options.seriesDefaults || {}; + var setopts = false; + if (options.seriesDefaults.renderer == $.jqplot.MekkoRenderer) { + setopts = true; + } + else if (options.series) { + for (var i=0; i < options.series.length; i++) { + if (options.series[i].renderer == $.jqplot.MekkoRenderer) { + setopts = true; + } + } + } + + if (setopts) { + options.axesDefaults.renderer = $.jqplot.MekkoAxisRenderer; + options.legend.renderer = $.jqplot.MekkoLegendRenderer; + options.legend.preDraw = true; + } + } + + $.jqplot.preInitHooks.push(preInit); + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.mekkoRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.mekkoRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.mekkoRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.mekkoRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(b){b.jqplot.MekkoRenderer=function(){this.shapeRenderer=new b.jqplot.ShapeRenderer();this.borderColor=null;this.showBorders=true};b.jqplot.MekkoRenderer.prototype.init=function(c,e){this.fill=false;this.fillRect=true;this.strokeRect=true;this.shadow=false;this._xwidth=0;this._xstart=0;b.extend(true,this.renderer,c);var d={lineJoin:"miter",lineCap:"butt",isarc:false,fillRect:this.fillRect,strokeRect:this.strokeRect};this.renderer.shapeRenderer.init(d);e.axes.x2axis._series.push(this)};b.jqplot.MekkoRenderer.prototype.setGridData=function(h){var e=this._xaxis.series_u2p;var c=this._yaxis.series_u2p;var g=this._plotData;this.gridData=[];this._xwidth=e(this._sumy)-e(0);if(this.index>0){this._xstart=h.series[this.index-1]._xstart+h.series[this.index-1]._xwidth}var l=this.canvas.getHeight();var d=0;var k;var j;for(var f=0;f<g.length;f++){if(g[f]!=null){d+=g[f][1];k=l-(d/this._sumy*l);j=g[f][1]/this._sumy*l;this.gridData.push([this._xstart,k,this._xwidth,j])}}};b.jqplot.MekkoRenderer.prototype.makeGridData=function(f,g){var d=this._xaxis.series_u2p;var l=this.canvas.getHeight();var c=0;var j;var h;var k=[];for(var e=0;e<f.length;e++){if(f[e]!=null){c+=f[e][1];j=l-(c/this._sumy*l);h=f[e][1]/this._sumy*l;k.push([this._xstart,j,this._xwidth,h])}}return k};b.jqplot.MekkoRenderer.prototype.draw=function(c,h,d){var e;var g=(d!=undefined)?d:{};var f=(g.showLine!=undefined)?g.showLine:this.showLine;var j=new b.jqplot.ColorGenerator(this.seriesColors);c.save();if(h.length){if(f){for(e=0;e<h.length;e++){g.fillStyle=j.next();if(this.renderer.showBorders){g.strokeStyle=this.renderer.borderColor}else{g.strokeStyle=g.fillStyle}this.renderer.shapeRenderer.draw(c,h[e],g)}}}c.restore()};b.jqplot.MekkoRenderer.prototype.drawShadow=function(c,e,d){};b.jqplot.MekkoLegendRenderer=function(){};b.jqplot.MekkoLegendRenderer.prototype.init=function(c){this.numberRows=null;this.numberColumns=null;this.placement="outside";b.extend(true,this,c)};b.jqplot.MekkoLegendRenderer.prototype.draw=function(){var f=this;if(this.show){var o=this._series;var r="position:absolute;";r+=(this.background)?"background:"+this.background+";":"";r+=(this.border)?"border:"+this.border+";":"";r+=(this.fontSize)?"font-size:"+this.fontSize+";":"";r+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";r+=(this.textColor)?"color:"+this.textColor+";":"";this._elem=b('<table class="jqplot-table-legend" style="'+r+'"></table>');var w=false,n=true,c,l;var p=o[0];var d=new b.jqplot.ColorGenerator(p.seriesColors);if(p.show){var x=p.data;if(this.numberRows){c=this.numberRows;if(!this.numberColumns){l=Math.ceil(x.length/c)}else{l=this.numberColumns}}else{if(this.numberColumns){l=this.numberColumns;c=Math.ceil(x.length/this.numberColumns)}else{c=x.length;l=1}}var v,u,e,h,g,k,m,t;var q=0;for(v=0;v<c;v++){if(n){e=b('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem)}else{e=b('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem)}for(u=0;u<l;u++){if(q<x.length){k=this.labels[q]||x[q][0].toString();t=d.next();if(!n){if(v>0){w=true}else{w=false}}else{if(v==c-1){w=false}else{w=true}}m=(w)?this.rowSpacing:"0";h=b('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+m+';"><div><div class="jqplot-table-legend-swatch" style="border-color:'+t+';"></div></div></td>');g=b('<td class="jqplot-table-legend" style="padding-top:'+m+';"></td>');if(this.escapeHtml){g.text(k)}else{g.html(k)}if(n){g.prependTo(e);h.prependTo(e)}else{h.appendTo(e);g.appendTo(e)}w=true}q++}}}}return this._elem};b.jqplot.MekkoLegendRenderer.prototype.pack=function(f){if(this.show){var e={_top:f.top,_left:f.left,_right:f.right,_bottom:this._plotDimensions.height-f.bottom};if(this.placement=="insideGrid"){switch(this.location){case"nw":var d=e._left+this.xoffset;var c=e._top+this.yoffset;this._elem.css("left",d);this._elem.css("top",c);break;case"n":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=e._top+this.yoffset;this._elem.css("left",d);this._elem.css("top",c);break;case"ne":var d=f.right+this.xoffset;var c=e._top+this.yoffset;this._elem.css({right:d,top:c});break;case"e":var d=f.right+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({right:d,top:c});break;case"se":var d=f.right+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({right:d,bottom:c});break;case"s":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=f.bottom+this.yoffset;this._elem.css({left:d,bottom:c});break;case"sw":var d=e._left+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({left:d,bottom:c});break;case"w":var d=e._left+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({left:d,top:c});break;default:var d=e._right-this.xoffset;var c=e._bottom+this.yoffset;this._elem.css({right:d,bottom:c});break}}else{switch(this.location){case"nw":var d=this._plotDimensions.width-e._left+this.xoffset;var c=e._top+this.yoffset;this._elem.css("right",d);this._elem.css("top",c);break;case"n":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=this._plotDimensions.height-e._top+this.yoffset;this._elem.css("left",d);this._elem.css("bottom",c);break;case"ne":var d=this._plotDimensions.width-f.right+this.xoffset;var c=e._top+this.yoffset;this._elem.css({left:d,top:c});break;case"e":var d=this._plotDimensions.width-f.right+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({left:d,top:c});break;case"se":var d=this._plotDimensions.width-f.right+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({left:d,bottom:c});break;case"s":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=this._plotDimensions.height-f.bottom+this.yoffset;this._elem.css({left:d,top:c});break;case"sw":var d=this._plotDimensions.width-e._left+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({right:d,bottom:c});break;case"w":var d=this._plotDimensions.width-e._left+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({right:d,top:c});break;default:var d=e._right-this.xoffset;var c=e._bottom+this.yoffset;this._elem.css({right:d,bottom:c});break}}}};function a(g,f,d){d=d||{};d.axesDefaults=d.axesDefaults||{};d.legend=d.legend||{};d.seriesDefaults=d.seriesDefaults||{};var c=false;if(d.seriesDefaults.renderer==b.jqplot.MekkoRenderer){c=true}else{if(d.series){for(var e=0;e<d.series.length;e++){if(d.series[e].renderer==b.jqplot.MekkoRenderer){c=true}}}}if(c){d.axesDefaults.renderer=b.jqplot.MekkoAxisRenderer;d.legend.renderer=b.jqplot.MekkoLegendRenderer;d.legend.preDraw=true}}b.jqplot.preInitHooks.push(a)})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.meterGaugeRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.meterGaugeRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.meterGaugeRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.meterGaugeRenderer.js @@ -0,0 +1,1129 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.MeterGaugeRenderer + * Plugin renderer to draw a meter gauge chart. + * + * Data consists of a single series with 1 data point to position the gauge needle. + * + * To use this renderer, you need to include the + * meter gauge renderer plugin, for example: + * + * > <script type="text/javascript" src="plugins/jqplot.meterGaugeRenderer.js"></script> + * + * Properties described here are passed into the $.jqplot function + * as options on the series renderer. For example: + * + * > plot0 = $.jqplot('chart0',[[18]],{ + * > title: 'Network Speed', + * > seriesDefaults: { + * > renderer: $.jqplot.MeterGaugeRenderer, + * > rendererOptions: { + * > label: 'MB/s' + * > } + * > } + * > }); + * + * A meterGauge plot does not support events. + */ + $.jqplot.MeterGaugeRenderer = function(){ + $.jqplot.LineRenderer.call(this); + }; + + $.jqplot.MeterGaugeRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.MeterGaugeRenderer.prototype.constructor = $.jqplot.MeterGaugeRenderer; + + // called with scope of a series + $.jqplot.MeterGaugeRenderer.prototype.init = function(options) { + // Group: Properties + // + // prop: diameter + // Outer diameter of the meterGauge, auto computed by default + this.diameter = null; + // prop: padding + // padding between the meterGauge and plot edges, auto + // calculated by default. + this.padding = null; + // prop: shadowOffset + // offset of the shadow from the gauge ring and offset of + // each succesive stroke of the shadow from the last. + this.shadowOffset = 2; + // prop: shadowAlpha + // transparency of the shadow (0 = transparent, 1 = opaque) + this.shadowAlpha = 0.07; + // prop: shadowDepth + // number of strokes to apply to the shadow, + // each stroke offset shadowOffset from the last. + this.shadowDepth = 4; + // prop: background + // background color of the inside of the gauge. + this.background = "#efefef"; + // prop: ringColor + // color of the outer ring, hub, and needle of the gauge. + this.ringColor = "#BBC6D0"; + // needle color not implemented yet. + this.needleColor = "#C3D3E5"; + // prop: tickColor + // color of the tick marks around the gauge. + this.tickColor = "989898"; + // prop: ringWidth + // width of the ring around the gauge. Auto computed by default. + this.ringWidth = null; + // prop: min + // Minimum value on the gauge. Auto computed by default + this.min; + // prop: max + // Maximum value on the gauge. Auto computed by default + this.max; + // prop: ticks + // Array of tick values. Auto computed by default. + this.ticks = []; + // prop: showTicks + // true to show ticks around gauge. + this.showTicks = true; + // prop: showTickLabels + // true to show tick labels next to ticks. + this.showTickLabels = true; + // prop: label + // A gauge label like 'kph' or 'Volts' + this.label = null; + // prop: labelHeightAdjust + // Number of Pixels to offset the label up (-) or down (+) from its default position. + this.labelHeightAdjust = 0; + // prop: labelPosition + // Where to position the label, either 'inside' or 'bottom'. + this.labelPosition = 'inside'; + // prop: intervals + // Array of ranges to be drawn around the gauge. + // Array of form: + // > [value1, value2, ...] + // indicating the values for the first, second, ... intervals. + this.intervals = []; + // prop: intervalColors + // Array of colors to use for the intervals. + this.intervalColors = [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"]; + // prop: intervalInnerRadius + // Radius of the inner circle of the interval ring. + this.intervalInnerRadius = null; + // prop: intervalOuterRadius + // Radius of the outer circle of the interval ring. + this.intervalOuterRadius = null; + this.tickRenderer = $.jqplot.MeterGaugeTickRenderer; + // ticks spaced every 1, 2, 2.5, 5, 10, 20, .1, .2, .25, .5, etc. + this.tickPositions = [1, 2, 2.5, 5, 10]; + // prop: tickSpacing + // Degrees between ticks. This is a target number, if + // incompatible span and ticks are supplied, a suitable + // spacing close to this value will be computed. + this.tickSpacing = 30; + this.numberMinorTicks = null; + // prop: hubRadius + // Radius of the hub at the bottom center of gauge which the needle attaches to. + // Auto computed by default + this.hubRadius = null; + // prop: tickPadding + // padding of the tick marks to the outer ring and the tick labels to marks. + // Auto computed by default. + this.tickPadding = null; + // prop: needleThickness + // Maximum thickness the needle. Auto computed by default. + this.needleThickness = null; + // prop: needlePad + // Padding between needle and inner edge of the ring when the needle is at the min or max gauge value. + this.needlePad = 6; + // prop: pegNeedle + // True will stop needle just below/above the min/max values if data is below/above min/max, + // as if the meter is "pegged". + this.pegNeedle = true; + + $.extend(true, this, options); + this.type = null; + this.numberTicks = null; + this.tickInterval = null; + // span, the sweep (in degrees) from min to max. This gauge is + // a semi-circle. + this.span = 180; + // get rid of this nonsense + // this.innerSpan = this.span; + if (this.type == 'circular') { + this.semiCircular = false; + } + else if (this.type != 'circular') { + this.semiCircular = true; + } + else { + this.semiCircular = (this.span <= 180) ? true : false; + } + this._tickPoints = []; + // reference to label element. + this._labelElm = null; + + // start the gauge at the beginning of the span + this.startAngle = (90 + (360 - this.span)/2) * Math.PI/180; + this.endAngle = (90 - (360 - this.span)/2) * Math.PI/180; + + this.setmin = !!(this.min == null); + this.setmax = !!(this.max == null); + + // if given intervals and is an array of values, create labels and colors. + if (this.intervals.length) { + if (this.intervals[0].length == null || this.intervals.length == 1) { + for (var i=0; i<this.intervals.length; i++) { + this.intervals[i] = [this.intervals[i], this.intervals[i], this.intervalColors[i]]; + } + } + else if (this.intervals[0].length == 2) { + for (i=0; i<this.intervals.length; i++) { + this.intervals[i] = [this.intervals[i][0], this.intervals[i][1], this.intervalColors[i]]; + } + } + } + + // compute min, max and ticks if not supplied: + if (this.ticks.length) { + if (this.ticks[0].length == null || this.ticks[0].length == 1) { + for (var i=0; i<this.ticks.length; i++) { + this.ticks[i] = [this.ticks[i], this.ticks[i]]; + } + } + this.min = (this.min == null) ? this.ticks[0][0] : this.min; + this.max = (this.max == null) ? this.ticks[this.ticks.length-1][0] : this.max; + this.setmin = false; + this.setmax = false; + this.numberTicks = this.ticks.length; + this.tickInterval = this.ticks[1][0] - this.ticks[0][0]; + this.tickFactor = Math.floor(parseFloat((Math.log(this.tickInterval)/Math.log(10)).toFixed(11))); + // use the first interal to calculate minor ticks; + this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor); + if (!this.numberMinorTicks) { + this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor-1); + } + if (!this.numberMinorTicks) { + this.numberMinorTicks = 1; + } + } + + else if (this.intervals.length) { + this.min = (this.min == null) ? 0 : this.min; + this.setmin = false; + if (this.max == null) { + if (this.intervals[this.intervals.length-1][0] >= this.data[0][1]) { + this.max = this.intervals[this.intervals.length-1][0]; + this.setmax = false; + } + } + else { + this.setmax = false; + } + } + + else { + // no ticks and no intervals supplied, put needle in middle + this.min = (this.min == null) ? 0 : this.min; + this.setmin = false; + if (this.max == null) { + this.max = this.data[0][1] * 1.25; + this.setmax = true; + } + else { + this.setmax = false; + } + } + }; + + $.jqplot.MeterGaugeRenderer.prototype.setGridData = function(plot) { + // set gridData property. This will hold angle in radians of each data point. + var stack = []; + var td = []; + var sa = this.startAngle; + for (var i=0; i<this.data.length; i++){ + stack.push(this.data[i][1]); + td.push([this.data[i][0]]); + if (i>0) { + stack[i] += stack[i-1]; + } + } + var fact = Math.PI*2/stack[stack.length - 1]; + + for (var i=0; i<stack.length; i++) { + td[i][1] = stack[i] * fact; + } + this.gridData = td; + }; + + $.jqplot.MeterGaugeRenderer.prototype.makeGridData = function(data, plot) { + var stack = []; + var td = []; + var sa = this.startAngle; + for (var i=0; i<data.length; i++){ + stack.push(data[i][1]); + td.push([data[i][0]]); + if (i>0) { + stack[i] += stack[i-1]; + } + } + var fact = Math.PI*2/stack[stack.length - 1]; + + for (var i=0; i<stack.length; i++) { + td[i][1] = stack[i] * fact; + } + return td; + }; + + + function getnmt(pos, interval, fact) { + var temp; + for (i=pos.length-1; i>=0; i--) { + temp = interval/(pos[i] * Math.pow(10, fact)); + if (temp == 4 || temp == 5) { + return temp - 1; + } + } + return null; + } + + // called with scope of series + $.jqplot.MeterGaugeRenderer.prototype.draw = function (ctx, gd, options) { + var i; + var opts = (options != undefined) ? options : {}; + // offset and direction of offset due to legend placement + var offx = 0; + var offy = 0; + var trans = 1; + if (options.legendInfo && options.legendInfo.placement == 'inside') { + var li = options.legendInfo; + switch (li.location) { + case 'nw': + offx = li.width + li.xoffset; + break; + case 'w': + offx = li.width + li.xoffset; + break; + case 'sw': + offx = li.width + li.xoffset; + break; + case 'ne': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'e': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'se': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'n': + offy = li.height + li.yoffset; + break; + case 's': + offy = li.height + li.yoffset; + trans = -1; + break; + default: + break; + } + } + + + + // pre-draw so can get it's dimensions. + if (this.label) { + this._labelElem = $('<div class="jqplot-meterGauge-label" style="position:absolute;">'+this.label+'</div>'); + this.canvas._elem.after(this._labelElem); + } + + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + var cw = ctx.canvas.width; + var ch = ctx.canvas.height; + if (this.padding == null) { + this.padding = Math.round(Math.min(cw, ch)/30); + } + var w = cw - offx - 2 * this.padding; + var h = ch - offy - 2 * this.padding; + if (this.labelPosition == 'bottom' && this.label) { + h -= this._labelElem.outerHeight(true); + } + var mindim = Math.min(w,h); + var d = mindim; + + if (!this.diameter) { + if (this.semiCircular) { + if ( w >= 2*h) { + if (!this.ringWidth) { + this.ringWidth = 2*h/35; + } + this.needleThickness = this.needleThickness || 2+Math.pow(this.ringWidth, 0.8); + this.innerPad = this.ringWidth/2 + this.needleThickness/2 + this.needlePad; + this.diameter = 2 * (h - 2*this.innerPad); + } + else { + if (!this.ringWidth) { + this.ringWidth = w/35; + } + this.needleThickness = this.needleThickness || 2+Math.pow(this.ringWidth, 0.8); + this.innerPad = this.ringWidth/2 + this.needleThickness/2 + this.needlePad; + this.diameter = w - 2*this.innerPad; + } + // center taking into account legend and over draw for gauge bottom below hub. + // this will be center of hub. + this._center = [(cw - trans * offx)/2 + trans * offx, (ch + trans*offy - this.padding - this.ringWidth - this.innerPad)]; + } + else { + if (!this.ringWidth) { + this.ringWidth = d/35; + } + this.needleThickness = this.needleThickness || 2+Math.pow(this.ringWidth, 0.8); + this.innerPad = 0; + this.diameter = d - this.ringWidth; + // center in middle of canvas taking into account legend. + // will be center of hub. + this._center = [(cw-trans*offx)/2 + trans * offx, (ch-trans*offy)/2 + trans * offy]; + } + } + + if (this._labelElem && this.labelPosition == 'bottom') { + this._center[1] -= this._labelElem.outerHeight(true); + } + + this._radius = this.diameter/2; + + this.tickSpacing = 6000/this.diameter; + + if (!this.hubRadius) { + this.hubRadius = this.diameter/18; + } + + this.shadowOffset = 0.5 + this.ringWidth/9; + this.shadowWidth = this.ringWidth*1; + + this.tickPadding = 3 + Math.pow(this.diameter/20, 0.7); + this.tickOuterRadius = this._radius - this.ringWidth/2 - this.tickPadding; + this.tickLength = (this.showTicks) ? this._radius/13 : 0; + + if (this.ticks.length == 0) { + // no ticks, lets make some. + var max = this.max, + min = this.min, + setmax = this.setmax, + setmin = this.setmin, + ti = (max - min) * this.tickSpacing / this.span; + var tf = Math.floor(parseFloat((Math.log(ti)/Math.log(10)).toFixed(11))); + var tp = (ti/Math.pow(10, tf)); + (tp > 2 && tp <= 2.5) ? tp = 2.5 : tp = Math.ceil(tp); + var t = this.tickPositions; + var tpindex, nt; + + for (i=0; i<t.length; i++) { + if (tp == t[i] || i && t[i-1] < tp && tp < t[i]) { + ti = t[i]*Math.pow(10, tf); + tpindex = i; + } + } + + for (i=0; i<t.length; i++) { + if (tp == t[i] || i && t[i-1] < tp && tp < t[i]) { + ti = t[i]*Math.pow(10, tf); + nt = Math.ceil((max - min) / ti); + } + } + + // both max and min are free + if (setmax && setmin) { + var tmin = (min > 0) ? min - min % ti : min - min % ti - ti; + if (!this.forceZero) { + var diff = Math.min(min - tmin, 0.8*ti); + var ntp = Math.floor(diff/t[tpindex]); + if (ntp > 1) { + tmin = tmin + t[tpindex] * (ntp-1); + if (parseInt(tmin, 10) != tmin && parseInt(tmin-t[tpindex], 10) == tmin-t[tpindex]) { + tmin = tmin - t[tpindex]; + } + } + } + if (min == tmin) { + min -= ti; + } + else { + // tmin should always be lower than dataMin + if (min - tmin > 0.23*ti) { + min = tmin; + } + else { + min = tmin -ti; + nt += 1; + } + } + nt += 1; + var tmax = min + (nt - 1) * ti; + if (max >= tmax) { + tmax += ti; + nt += 1; + } + // now tmax should always be mroe than dataMax + if (tmax - max < 0.23*ti) { + tmax += ti; + nt += 1; + } + this.max = max = tmax; + this.min = min; + + this.tickInterval = ti; + this.numberTicks = nt; + var it; + for (i=0; i<nt; i++) { + it = parseFloat((min+i*ti).toFixed(11)); + this.ticks.push([it, it]); + } + this.max = this.ticks[nt-1][1]; + + this.tickFactor = tf; + // determine number of minor ticks + + this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor); + + if (!this.numberMinorTicks) { + this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor-1); + } + } + // max is free, min is fixed + else if (setmax) { + var tmax = min + (nt - 1) * ti; + if (max >= tmax) { + max = tmax + ti; + nt += 1; + } + else { + max = tmax; + } + + this.tickInterval = this.tickInterval || ti; + this.numberTicks = this.numberTicks || nt; + var it; + for (i=0; i<this.numberTicks; i++) { + it = parseFloat((min+i*this.tickInterval).toFixed(11)); + this.ticks.push([it, it]); + } + this.max = this.ticks[this.numberTicks-1][1]; + + this.tickFactor = tf; + // determine number of minor ticks + this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor); + + if (!this.numberMinorTicks) { + this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor-1); + } + } + + // not setting max or min + if (!setmax && !setmin) { + var range = this.max - this.min; + tf = Math.floor(parseFloat((Math.log(range)/Math.log(10)).toFixed(11))) - 1; + var nticks = [5,6,4,7,3,8,9,10,2], res, numticks, nonSigDigits=0, sigRange; + // check to see how many zeros are at the end of the range + if (range > 1) { + var rstr = String(range); + if (rstr.search(/\./) == -1) { + var pos = rstr.search(/0+$/); + nonSigDigits = (pos > 0) ? rstr.length - pos - 1 : 0; + } + } + sigRange = range/Math.pow(10, nonSigDigits); + for (i=0; i<nticks.length; i++) { + res = sigRange/(nticks[i]-1); + if (res == parseInt(res, 10)) { + this.numberTicks = nticks[i]; + this.tickInterval = range/(this.numberTicks-1); + this.tickFactor = tf+1; + break; + } + } + var it; + for (i=0; i<this.numberTicks; i++) { + it = parseFloat((this.min+i*this.tickInterval).toFixed(11)); + this.ticks.push([it, it]); + } + // determine number of minor ticks + this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor); + + if (!this.numberMinorTicks) { + this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor-1); + } + + if (!this.numberMinorTicks) { + this.numberMinorTicks = 1; + var nums = [4, 5, 3, 6, 2]; + for (i=0; i<5; i++) { + temp = this.tickInterval/nums[i]; + if (temp == parseInt(temp)) { + this.numberMinorTicks = nums[i]-1; + break; + } + } + } + } + } + + + var r = this._radius, + sa = this.startAngle, + ea = this.endAngle, + pi = Math.PI, + hpi = Math.PI/2; + + if (this.semiCircular) { + var overAngle = Math.atan(this.innerPad/r), + outersa = this.outerStartAngle = sa - overAngle, + outerea = this.outerEndAngle = ea + overAngle, + hubsa = this.hubStartAngle = sa - Math.atan(this.innerPad/this.hubRadius*2), + hubea = this.hubEndAngle = ea + Math.atan(this.innerPad/this.hubRadius*2); + + ctx.save(); + + ctx.translate(this._center[0], this._center[1]); + ctx.lineJoin = "round"; + ctx.lineCap = "round"; + + // draw the innerbackground + ctx.save(); + ctx.beginPath(); + ctx.fillStyle = this.background; + ctx.arc(0, 0, r, outersa, outerea, false); + ctx.closePath(); + ctx.fill(); + ctx.restore(); + + // draw the shadow + // the outer ring. + var shadowColor = 'rgba(0,0,0,'+this.shadowAlpha+')'; + ctx.save(); + for (var i=0; i<this.shadowDepth; i++) { + ctx.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI), this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI)); + ctx.beginPath(); + ctx.strokeStyle = shadowColor; + ctx.lineWidth = this.shadowWidth; + ctx.arc(0 ,0, r, outersa, outerea, false); + ctx.closePath(); + ctx.stroke(); + } + ctx.restore(); + + // the inner hub. + ctx.save(); + var tempd = parseInt((this.shadowDepth+1)/2, 10); + for (var i=0; i<tempd; i++) { + ctx.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI), this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI)); + ctx.beginPath(); + ctx.fillStyle = shadowColor; + ctx.arc(0 ,0, this.hubRadius, hubsa, hubea, false); + ctx.closePath(); + ctx.fill(); + } + ctx.restore(); + + // draw the outer ring. + ctx.save(); + ctx.beginPath(); + ctx.strokeStyle = this.ringColor; + ctx.lineWidth = this.ringWidth; + ctx.arc(0 ,0, r, outersa, outerea, false); + ctx.closePath(); + ctx.stroke(); + ctx.restore(); + + // draw the hub + + ctx.save(); + ctx.beginPath(); + ctx.fillStyle = this.ringColor; + ctx.arc(0 ,0, this.hubRadius,hubsa, hubea, false); + ctx.closePath(); + ctx.fill(); + ctx.restore(); + + // draw the ticks + if (this.showTicks) { + ctx.save(); + var orad = this.tickOuterRadius, + tl = this.tickLength, + mtl = tl/2, + nmt = this.numberMinorTicks, + ts = this.span * Math.PI / 180 / (this.ticks.length-1), + mts = ts/(nmt + 1); + + for (i = 0; i<this.ticks.length; i++) { + ctx.beginPath(); + ctx.lineWidth = 1.5 + this.diameter/360; + ctx.strokeStyle = this.ringColor; + var wps = ts*i+sa; + ctx.moveTo(-orad * Math.cos(ts*i+sa), orad * Math.sin(ts*i+sa)); + ctx.lineTo(-(orad-tl) * Math.cos(ts*i+sa), (orad - tl) * Math.sin(ts*i+sa)); + this._tickPoints.push([(orad-tl) * Math.cos(ts*i+sa) + this._center[0] + this.canvas._offsets.left, (orad - tl) * Math.sin(ts*i+sa) + this._center[1] + this.canvas._offsets.top, ts*i+sa]); + ctx.stroke(); + ctx.lineWidth = 1.0 + this.diameter/440; + if (i<this.ticks.length-1) { + for (var j=1; j<=nmt; j++) { + ctx.beginPath(); + ctx.moveTo(-orad * Math.cos(ts*i+mts*j+sa), orad * Math.sin(ts*i+mts*j+sa)); + ctx.lineTo(-(orad-mtl) * Math.cos(ts*i+mts*j+sa), (orad-mtl) * Math.sin(ts*i+mts*j+sa)); + ctx.stroke(); + } + } + } + ctx.restore(); + } + + // draw the tick labels + if (this.showTickLabels) { + var elem, l, t, ew, dim, maxdim=0; + var tp = this.tickPadding * (1 - 1/(this.diameter/80+1)); + for (i=0; i<this.ticks.length; i++) { + elem = $('<div class="jqplot-meterGauge-tick" style="position:absolute;">'+this.ticks[i][1]+'</div>'); + this.canvas._elem.after(elem); + ew = elem.outerWidth(true); + eh = elem.outerHeight(true); + l = this._tickPoints[i][0] - ew * (this._tickPoints[i][2]-Math.PI)/Math.PI - tp * Math.cos(this._tickPoints[i][2]); + t = this._tickPoints[i][1] - eh/2 + eh/2 * Math.pow(Math.abs((Math.sin(this._tickPoints[i][2]))), 0.5) + tp/3 * Math.pow(Math.abs((Math.sin(this._tickPoints[i][2]))), 0.5) ; + // t = this._tickPoints[i][1] - eh/2 - eh/2 * Math.sin(this._tickPoints[i][2]) - tp/2 * Math.sin(this._tickPoints[i][2]); + elem.css({left:l, top:t}); + dim = ew*Math.cos(this._tickPoints[i][2]) + eh*Math.sin(Math.PI/2+this._tickPoints[i][2]/2); + maxdim = (dim > maxdim) ? dim : maxdim; + } + } + + // draw the gauge label + if (this.label && this.labelPosition == 'inside') { + var l = this._center[0] + this.canvas._offsets.left; + var tp = this.tickPadding * (1 - 1/(this.diameter/80+1)); + var t = 0.5*(this._center[1] + this.canvas._offsets.top - this.hubRadius) + 0.5*(this._center[1] + this.canvas._offsets.top - this.tickOuterRadius + this.tickLength + tp) + this.labelHeightAdjust; + // this._labelElem = $('<div class="jqplot-meterGauge-label" style="position:absolute;">'+this.label+'</div>'); + // this.canvas._elem.after(this._labelElem); + l -= this._labelElem.outerWidth(true)/2; + t -= this._labelElem.outerHeight(true)/2; + this._labelElem.css({left:l, top:t}); + } + + else if (this.label && this.labelPosition == 'bottom') { + var l = this._center[0] + this.canvas._offsets.left - this._labelElem.outerWidth(true)/2; + var t = this._center[1] + this.canvas._offsets.top + this.innerPad + + this.ringWidth + this.padding + this.labelHeightAdjust; + this._labelElem.css({left:l, top:t}); + + } + + // draw the intervals + + ctx.save(); + var inner = this.intervalInnerRadius || this.hubRadius * 1.5; + if (this.intervalOuterRadius == null) { + if (this.showTickLabels) { + var outer = (this.tickOuterRadius - this.tickLength - this.tickPadding - this.diameter/8); + } + else { + var outer = (this.tickOuterRadius - this.tickLength - this.diameter/16); + } + } + else { + var outer = this.intervalOuterRadius; + } + var range = this.max - this.min; + var intrange = this.intervals[this.intervals.length-1] - this.min; + var start, end, span = this.span*Math.PI/180; + for (i=0; i<this.intervals.length; i++) { + start = (i == 0) ? sa : sa + (this.intervals[i-1][0] - this.min)*span/range; + if (start < 0) { + start = 0; + } + end = sa + (this.intervals[i][0] - this.min)*span/range; + if (end < 0) { + end = 0; + } + ctx.beginPath(); + ctx.fillStyle = this.intervals[i][2]; + ctx.arc(0, 0, inner, start, end, false); + ctx.lineTo(outer*Math.cos(end), outer*Math.sin(end)); + ctx.arc(0, 0, outer, end, start, true); + ctx.lineTo(inner*Math.cos(start), inner*Math.sin(start)); + ctx.closePath(); + ctx.fill(); + } + ctx.restore(); + + // draw the needle + var datapoint = this.data[0][1]; + var dataspan = this.max - this.min; + if (this.pegNeedle) { + if (this.data[0][1] > this.max + dataspan*3/this.span) { + datapoint = this.max + dataspan*3/this.span; + } + if (this.data[0][1] < this.min - dataspan*3/this.span) { + datapoint = this.min - dataspan*3/this.span; + } + } + var dataang = (datapoint - this.min)/dataspan * this.span * Math.PI/180 + this.startAngle; + + + ctx.save(); + ctx.beginPath(); + ctx.fillStyle = this.ringColor; + ctx.strokeStyle = this.ringColor; + this.needleLength = (this.tickOuterRadius - this.tickLength) * 0.85; + this.needleThickness = (this.needleThickness < 2) ? 2 : this.needleThickness; + var endwidth = this.needleThickness * 0.4; + + + var dl = this.needleLength/10; + var dt = (this.needleThickness - endwidth)/10; + var templ; + for (var i=0; i<10; i++) { + templ = this.needleThickness - i*dt; + ctx.moveTo(dl*i*Math.cos(dataang), dl*i*Math.sin(dataang)); + ctx.lineWidth = templ; + ctx.lineTo(dl*(i+1)*Math.cos(dataang), dl*(i+1)*Math.sin(dataang)); + ctx.stroke(); + } + + ctx.restore(); + } + else { + this._center = [(cw - trans * offx)/2 + trans * offx, (ch - trans*offy)/2 + trans * offy]; + } + }; + + $.jqplot.MeterGaugeAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + }; + + $.jqplot.MeterGaugeAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.MeterGaugeAxisRenderer.prototype.constructor = $.jqplot.MeterGaugeAxisRenderer; + + + // There are no traditional axes on a gauge chart. We just need to provide + // dummy objects with properties so the plot will render. + // called with scope of axis object. + $.jqplot.MeterGaugeAxisRenderer.prototype.init = function(options){ + // + this.tickRenderer = $.jqplot.MeterGaugeTickRenderer; + $.extend(true, this, options); + // I don't think I'm going to need _dataBounds here. + // have to go Axis scaling in a way to fit chart onto plot area + // and provide u2p and p2u functionality for mouse cursor, etc. + // for convienence set _dataBounds to 0 and 100 and + // set min/max to 0 and 100. + this._dataBounds = {min:0, max:100}; + this.min = 0; + this.max = 100; + this.showTicks = false; + this.ticks = []; + this.showMark = false; + this.show = false; + }; + + $.jqplot.MeterGaugeLegendRenderer = function(){ + $.jqplot.TableLegendRenderer.call(this); + }; + + $.jqplot.MeterGaugeLegendRenderer.prototype = new $.jqplot.TableLegendRenderer(); + $.jqplot.MeterGaugeLegendRenderer.prototype.constructor = $.jqplot.MeterGaugeLegendRenderer; + + /** + * Class: $.jqplot.MeterGaugeLegendRenderer + *Meter gauges don't typically have a legend, this overrides the default legend renderer. + */ + $.jqplot.MeterGaugeLegendRenderer.prototype.init = function(options) { + + // Maximum number of rows in the legend. 0 or null for unlimited. + this.numberRows = null; + // Maximum number of columns in the legend. 0 or null for unlimited. + this.numberColumns = null; + $.extend(true, this, options); + }; + + // called with context of legend + $.jqplot.MeterGaugeLegendRenderer.prototype.draw = function() { + var legend = this; + if (this.show) { + var series = this._series; + var ss = 'position:absolute;'; + ss += (this.background) ? 'background:'+this.background+';' : ''; + ss += (this.border) ? 'border:'+this.border+';' : ''; + ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : ''; + ss += (this.textColor) ? 'color:'+this.textColor+';' : ''; + ss += (this.marginTop != null) ? 'margin-top:'+this.marginTop+';' : ''; + ss += (this.marginBottom != null) ? 'margin-bottom:'+this.marginBottom+';' : ''; + ss += (this.marginLeft != null) ? 'margin-left:'+this.marginLeft+';' : ''; + ss += (this.marginRight != null) ? 'margin-right:'+this.marginRight+';' : ''; + this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>'); + // MeterGauge charts legends don't go by number of series, but by number of data points + // in the series. Refactor things here for that. + + var pad = false, + reverse = false, + nr, nc; + var s = series[0]; + + if (s.show) { + var pd = s.data; + if (this.numberRows) { + nr = this.numberRows; + if (!this.numberColumns){ + nc = Math.ceil(pd.length/nr); + } + else{ + nc = this.numberColumns; + } + } + else if (this.numberColumns) { + nc = this.numberColumns; + nr = Math.ceil(pd.length/this.numberColumns); + } + else { + nr = pd.length; + nc = 1; + } + + var i, j, tr, td1, td2, lt, rs, color; + var idx = 0; + + for (i=0; i<nr; i++) { + if (reverse){ + tr = $('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem); + } + else{ + tr = $('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem); + } + for (j=0; j<nc; j++) { + if (idx < pd.length){ + lt = this.labels[idx] || pd[idx][0].toString(); + color = colorGenerator.next(); + if (!reverse){ + if (i>0){ + pad = true; + } + else{ + pad = false; + } + } + else{ + if (i == nr -1){ + pad = false; + } + else{ + pad = true; + } + } + rs = (pad) ? this.rowSpacing : '0'; + + td1 = $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+ + '<div><div class="jqplot-table-legend-swatch" style="border-color:'+color+';"></div>'+ + '</div></td>'); + td2 = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>'); + if (this.escapeHtml){ + td2.text(lt); + } + else { + td2.html(lt); + } + if (reverse) { + td2.prependTo(tr); + td1.prependTo(tr); + } + else { + td1.appendTo(tr); + td2.appendTo(tr); + } + pad = true; + } + idx++; + } + } + } + } + return this._elem; + }; + + // $.jqplot.MeterGaugeLegendRenderer.prototype.pack = function(offsets) { + // if (this.show) { + // // fake a grid for positioning + // var grid = {_top:offsets.top, _left:offsets.left, _right:offsets.right, _bottom:this._plotDimensions.height - offsets.bottom}; + // if (this.placement == 'insideGrid') { + // switch (this.location) { + // case 'nw': + // var a = grid._left + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css('left', a); + // this._elem.css('top', b); + // break; + // case 'n': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = grid._top + this.yoffset; + // this._elem.css('left', a); + // this._elem.css('top', b); + // break; + // case 'ne': + // var a = offsets.right + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css({right:a, top:b}); + // break; + // case 'e': + // var a = offsets.right + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({right:a, top:b}); + // break; + // case 'se': + // var a = offsets.right + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // case 's': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({left:a, bottom:b}); + // break; + // case 'sw': + // var a = grid._left + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({left:a, bottom:b}); + // break; + // case 'w': + // var a = grid._left + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({left:a, top:b}); + // break; + // default: // same as 'se' + // var a = grid._right - this.xoffset; + // var b = grid._bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // } + // + // } + // else { + // switch (this.location) { + // case 'nw': + // var a = this._plotDimensions.width - grid._left + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css('right', a); + // this._elem.css('top', b); + // break; + // case 'n': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = this._plotDimensions.height - grid._top + this.yoffset; + // this._elem.css('left', a); + // this._elem.css('bottom', b); + // break; + // case 'ne': + // var a = this._plotDimensions.width - offsets.right + this.xoffset; + // var b = grid._top + this.yoffset; + // this._elem.css({left:a, top:b}); + // break; + // case 'e': + // var a = this._plotDimensions.width - offsets.right + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({left:a, top:b}); + // break; + // case 'se': + // var a = this._plotDimensions.width - offsets.right + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({left:a, bottom:b}); + // break; + // case 's': + // var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + // var b = this._plotDimensions.height - offsets.bottom + this.yoffset; + // this._elem.css({left:a, top:b}); + // break; + // case 'sw': + // var a = this._plotDimensions.width - grid._left + this.xoffset; + // var b = offsets.bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // case 'w': + // var a = this._plotDimensions.width - grid._left + this.xoffset; + // var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + // this._elem.css({right:a, top:b}); + // break; + // default: // same as 'se' + // var a = grid._right - this.xoffset; + // var b = grid._bottom + this.yoffset; + // this._elem.css({right:a, bottom:b}); + // break; + // } + // } + // } + // }; + + // setup default renderers for axes and legend so user doesn't have to + // called with scope of plot + function preInit(target, data, options) { + options = options || {}; + options.axesDefaults = options.axesDefaults || {}; + options.legend = options.legend || {}; + options.seriesDefaults = options.seriesDefaults || {}; + options.grid = options.grid || {}; + options.gridPadding = options.gridPadding || {}; + + // only set these if there is a gauge series + var setopts = false; + if (options.seriesDefaults.renderer == $.jqplot.MeterGaugeRenderer) { + setopts = true; + } + else if (options.series) { + for (var i=0; i < options.series.length; i++) { + if (options.series[i].renderer == $.jqplot.MeterGaugeRenderer) { + setopts = true; + } + } + } + + if (setopts) { + options.axesDefaults.renderer = $.jqplot.MeterGaugeAxisRenderer; + options.legend.renderer = $.jqplot.MeterGaugeLegendRenderer; + options.legend.preDraw = true; + options.grid.background = options.grid.background || 'white'; + options.grid.drawGridlines = false; + options.grid.borderWidth = (options.grid.borderWidth != null) ? options.grid.borderWidth : 0; + options.grid.shadow = (options.grid.shadow != null) ? options.grid.shadow : false; + options.gridPadding.top = (options.gridPadding.top != null) ? options.gridPadding.top : 0; + options.gridPadding.bottom = (options.gridPadding.bottom != null) ? options.gridPadding.bottom : 0; + options.gridPadding.left = (options.gridPadding.left != null) ? options.gridPadding.left : 0; + options.gridPadding.right = (options.gridPadding.right != null) ? options.gridPadding.right : 0; + } + } + + // called with scope of plot + function postParseOptions(options) { + // + } + + $.jqplot.preInitHooks.push(preInit); + $.jqplot.postParseOptionsHooks.push(postParseOptions); + + $.jqplot.MeterGaugeTickRenderer = function() { + $.jqplot.AxisTickRenderer.call(this); + }; + + $.jqplot.MeterGaugeTickRenderer.prototype = new $.jqplot.AxisTickRenderer(); + $.jqplot.MeterGaugeTickRenderer.prototype.constructor = $.jqplot.MeterGaugeTickRenderer; + +})(jQuery); + + ADDED Site/Site_W/jpqplot/plugins/jqplot.meterGaugeRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.meterGaugeRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.meterGaugeRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.meterGaugeRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(c){c.jqplot.MeterGaugeRenderer=function(){c.jqplot.LineRenderer.call(this)};c.jqplot.MeterGaugeRenderer.prototype=new c.jqplot.LineRenderer();c.jqplot.MeterGaugeRenderer.prototype.constructor=c.jqplot.MeterGaugeRenderer;c.jqplot.MeterGaugeRenderer.prototype.init=function(e){this.diameter=null;this.padding=null;this.shadowOffset=2;this.shadowAlpha=0.07;this.shadowDepth=4;this.background="#efefef";this.ringColor="#BBC6D0";this.needleColor="#C3D3E5";this.tickColor="989898";this.ringWidth=null;this.min;this.max;this.ticks=[];this.showTicks=true;this.showTickLabels=true;this.label=null;this.labelHeightAdjust=0;this.labelPosition="inside";this.intervals=[];this.intervalColors=["#4bb2c5","#EAA228","#c5b47f","#579575","#839557","#958c12","#953579","#4b5de4","#d8b83f","#ff5800","#0085cc","#c747a3","#cddf54","#FBD178","#26B4E3","#bd70c7"];this.intervalInnerRadius=null;this.intervalOuterRadius=null;this.tickRenderer=c.jqplot.MeterGaugeTickRenderer;this.tickPositions=[1,2,2.5,5,10];this.tickSpacing=30;this.numberMinorTicks=null;this.hubRadius=null;this.tickPadding=null;this.needleThickness=null;this.needlePad=6;this.pegNeedle=true;c.extend(true,this,e);this.type=null;this.numberTicks=null;this.tickInterval=null;this.span=180;if(this.type=="circular"){this.semiCircular=false}else{if(this.type!="circular"){this.semiCircular=true}else{this.semiCircular=(this.span<=180)?true:false}}this._tickPoints=[];this._labelElm=null;this.startAngle=(90+(360-this.span)/2)*Math.PI/180;this.endAngle=(90-(360-this.span)/2)*Math.PI/180;this.setmin=!!(this.min==null);this.setmax=!!(this.max==null);if(this.intervals.length){if(this.intervals[0].length==null||this.intervals.length==1){for(var f=0;f<this.intervals.length;f++){this.intervals[f]=[this.intervals[f],this.intervals[f],this.intervalColors[f]]}}else{if(this.intervals[0].length==2){for(f=0;f<this.intervals.length;f++){this.intervals[f]=[this.intervals[f][0],this.intervals[f][1],this.intervalColors[f]]}}}}if(this.ticks.length){if(this.ticks[0].length==null||this.ticks[0].length==1){for(var f=0;f<this.ticks.length;f++){this.ticks[f]=[this.ticks[f],this.ticks[f]]}}this.min=(this.min==null)?this.ticks[0][0]:this.min;this.max=(this.max==null)?this.ticks[this.ticks.length-1][0]:this.max;this.setmin=false;this.setmax=false;this.numberTicks=this.ticks.length;this.tickInterval=this.ticks[1][0]-this.ticks[0][0];this.tickFactor=Math.floor(parseFloat((Math.log(this.tickInterval)/Math.log(10)).toFixed(11)));this.numberMinorTicks=b(this.tickPositions,this.tickInterval,this.tickFactor);if(!this.numberMinorTicks){this.numberMinorTicks=b(this.tickPositions,this.tickInterval,this.tickFactor-1)}if(!this.numberMinorTicks){this.numberMinorTicks=1}}else{if(this.intervals.length){this.min=(this.min==null)?0:this.min;this.setmin=false;if(this.max==null){if(this.intervals[this.intervals.length-1][0]>=this.data[0][1]){this.max=this.intervals[this.intervals.length-1][0];this.setmax=false}}else{this.setmax=false}}else{this.min=(this.min==null)?0:this.min;this.setmin=false;if(this.max==null){this.max=this.data[0][1]*1.25;this.setmax=true}else{this.setmax=false}}}};c.jqplot.MeterGaugeRenderer.prototype.setGridData=function(j){var f=[];var k=[];var e=this.startAngle;for(var h=0;h<this.data.length;h++){f.push(this.data[h][1]);k.push([this.data[h][0]]);if(h>0){f[h]+=f[h-1]}}var g=Math.PI*2/f[f.length-1];for(var h=0;h<f.length;h++){k[h][1]=f[h]*g}this.gridData=k};c.jqplot.MeterGaugeRenderer.prototype.makeGridData=function(j,k){var f=[];var l=[];var e=this.startAngle;for(var h=0;h<j.length;h++){f.push(j[h][1]);l.push([j[h][0]]);if(h>0){f[h]+=f[h-1]}}var g=Math.PI*2/f[f.length-1];for(var h=0;h<f.length;h++){l[h][1]=f[h]*g}return l};function b(h,f,g){var e;for(i=h.length-1;i>=0;i--){e=f/(h[i]*Math.pow(10,g));if(e==4||e==5){return e-1}}return null}c.jqplot.MeterGaugeRenderer.prototype.draw=function(W,aA,an){var Z;var aK=(an!=undefined)?an:{};var ah=0;var ag=0;var aq=1;if(an.legendInfo&&an.legendInfo.placement=="inside"){var aG=an.legendInfo;switch(aG.location){case"nw":ah=aG.width+aG.xoffset;break;case"w":ah=aG.width+aG.xoffset;break;case"sw":ah=aG.width+aG.xoffset;break;case"ne":ah=aG.width+aG.xoffset;aq=-1;break;case"e":ah=aG.width+aG.xoffset;aq=-1;break;case"se":ah=aG.width+aG.xoffset;aq=-1;break;case"n":ag=aG.height+aG.yoffset;break;case"s":ag=aG.height+aG.yoffset;aq=-1;break;default:break}}if(this.label){this._labelElem=c('<div class="jqplot-meterGauge-label" style="position:absolute;">'+this.label+"</div>");this.canvas._elem.after(this._labelElem)}var k=(aK.shadow!=undefined)?aK.shadow:this.shadow;var M=(aK.showLine!=undefined)?aK.showLine:this.showLine;var H=(aK.fill!=undefined)?aK.fill:this.fill;var J=W.canvas.width;var R=W.canvas.height;if(this.padding==null){this.padding=Math.round(Math.min(J,R)/30)}var P=J-ah-2*this.padding;var aa=R-ag-2*this.padding;if(this.labelPosition=="bottom"&&this.label){aa-=this._labelElem.outerHeight(true)}var K=Math.min(P,aa);var ac=K;if(!this.diameter){if(this.semiCircular){if(P>=2*aa){if(!this.ringWidth){this.ringWidth=2*aa/35}this.needleThickness=this.needleThickness||2+Math.pow(this.ringWidth,0.8);this.innerPad=this.ringWidth/2+this.needleThickness/2+this.needlePad;this.diameter=2*(aa-2*this.innerPad)}else{if(!this.ringWidth){this.ringWidth=P/35}this.needleThickness=this.needleThickness||2+Math.pow(this.ringWidth,0.8);this.innerPad=this.ringWidth/2+this.needleThickness/2+this.needlePad;this.diameter=P-2*this.innerPad}this._center=[(J-aq*ah)/2+aq*ah,(R+aq*ag-this.padding-this.ringWidth-this.innerPad)]}else{if(!this.ringWidth){this.ringWidth=ac/35}this.needleThickness=this.needleThickness||2+Math.pow(this.ringWidth,0.8);this.innerPad=0;this.diameter=ac-this.ringWidth;this._center=[(J-aq*ah)/2+aq*ah,(R-aq*ag)/2+aq*ag]}}if(this._labelElem&&this.labelPosition=="bottom"){this._center[1]-=this._labelElem.outerHeight(true)}this._radius=this.diameter/2;this.tickSpacing=6000/this.diameter;if(!this.hubRadius){this.hubRadius=this.diameter/18}this.shadowOffset=0.5+this.ringWidth/9;this.shadowWidth=this.ringWidth*1;this.tickPadding=3+Math.pow(this.diameter/20,0.7);this.tickOuterRadius=this._radius-this.ringWidth/2-this.tickPadding;this.tickLength=(this.showTicks)?this._radius/13:0;if(this.ticks.length==0){var z=this.max,aJ=this.min,p=this.setmax,aE=this.setmin,ar=(z-aJ)*this.tickSpacing/this.span;var au=Math.floor(parseFloat((Math.log(ar)/Math.log(10)).toFixed(11)));var am=(ar/Math.pow(10,au));(am>2&&am<=2.5)?am=2.5:am=Math.ceil(am);var S=this.tickPositions;var ay,aj;for(Z=0;Z<S.length;Z++){if(am==S[Z]||Z&&S[Z-1]<am&&am<S[Z]){ar=S[Z]*Math.pow(10,au);ay=Z}}for(Z=0;Z<S.length;Z++){if(am==S[Z]||Z&&S[Z-1]<am&&am<S[Z]){ar=S[Z]*Math.pow(10,au);aj=Math.ceil((z-aJ)/ar)}}if(p&&aE){var aN=(aJ>0)?aJ-aJ%ar:aJ-aJ%ar-ar;if(!this.forceZero){var C=Math.min(aJ-aN,0.8*ar);var n=Math.floor(C/S[ay]);if(n>1){aN=aN+S[ay]*(n-1);if(parseInt(aN,10)!=aN&&parseInt(aN-S[ay],10)==aN-S[ay]){aN=aN-S[ay]}}}if(aJ==aN){aJ-=ar}else{if(aJ-aN>0.23*ar){aJ=aN}else{aJ=aN-ar;aj+=1}}aj+=1;var D=aJ+(aj-1)*ar;if(z>=D){D+=ar;aj+=1}if(D-z<0.23*ar){D+=ar;aj+=1}this.max=z=D;this.min=aJ;this.tickInterval=ar;this.numberTicks=aj;var N;for(Z=0;Z<aj;Z++){N=parseFloat((aJ+Z*ar).toFixed(11));this.ticks.push([N,N])}this.max=this.ticks[aj-1][1];this.tickFactor=au;this.numberMinorTicks=b(this.tickPositions,this.tickInterval,this.tickFactor);if(!this.numberMinorTicks){this.numberMinorTicks=b(this.tickPositions,this.tickInterval,this.tickFactor-1)}}else{if(p){var D=aJ+(aj-1)*ar;if(z>=D){z=D+ar;aj+=1}else{z=D}this.tickInterval=this.tickInterval||ar;this.numberTicks=this.numberTicks||aj;var N;for(Z=0;Z<this.numberTicks;Z++){N=parseFloat((aJ+Z*this.tickInterval).toFixed(11));this.ticks.push([N,N])}this.max=this.ticks[this.numberTicks-1][1];this.tickFactor=au;this.numberMinorTicks=b(this.tickPositions,this.tickInterval,this.tickFactor);if(!this.numberMinorTicks){this.numberMinorTicks=b(this.tickPositions,this.tickInterval,this.tickFactor-1)}}}if(!p&&!aE){var O=this.max-this.min;au=Math.floor(parseFloat((Math.log(O)/Math.log(10)).toFixed(11)))-1;var aL=[5,6,4,7,3,8,9,10,2],U,B,at=0,L;if(O>1){var aH=String(O);if(aH.search(/\./)==-1){var aD=aH.search(/0+$/);at=(aD>0)?aH.length-aD-1:0}}L=O/Math.pow(10,at);for(Z=0;Z<aL.length;Z++){U=L/(aL[Z]-1);if(U==parseInt(U,10)){this.numberTicks=aL[Z];this.tickInterval=O/(this.numberTicks-1);this.tickFactor=au+1;break}}var N;for(Z=0;Z<this.numberTicks;Z++){N=parseFloat((this.min+Z*this.tickInterval).toFixed(11));this.ticks.push([N,N])}this.numberMinorTicks=b(this.tickPositions,this.tickInterval,this.tickFactor);if(!this.numberMinorTicks){this.numberMinorTicks=b(this.tickPositions,this.tickInterval,this.tickFactor-1)}if(!this.numberMinorTicks){this.numberMinorTicks=1;var aF=[4,5,3,6,2];for(Z=0;Z<5;Z++){temp=this.tickInterval/aF[Z];if(temp==parseInt(temp)){this.numberMinorTicks=aF[Z]-1;break}}}}}var T=this._radius,aC=this.startAngle,g=this.endAngle,G=Math.PI,e=Math.PI/2;if(this.semiCircular){var x=Math.atan(this.innerPad/T),ab=this.outerStartAngle=aC-x,az=this.outerEndAngle=g+x,A=this.hubStartAngle=aC-Math.atan(this.innerPad/this.hubRadius*2),ae=this.hubEndAngle=g+Math.atan(this.innerPad/this.hubRadius*2);W.save();W.translate(this._center[0],this._center[1]);W.lineJoin="round";W.lineCap="round";W.save();W.beginPath();W.fillStyle=this.background;W.arc(0,0,T,ab,az,false);W.closePath();W.fill();W.restore();var ai="rgba(0,0,0,"+this.shadowAlpha+")";W.save();for(var Z=0;Z<this.shadowDepth;Z++){W.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI),this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI));W.beginPath();W.strokeStyle=ai;W.lineWidth=this.shadowWidth;W.arc(0,0,T,ab,az,false);W.closePath();W.stroke()}W.restore();W.save();var ax=parseInt((this.shadowDepth+1)/2,10);for(var Z=0;Z<ax;Z++){W.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI),this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI));W.beginPath();W.fillStyle=ai;W.arc(0,0,this.hubRadius,A,ae,false);W.closePath();W.fill()}W.restore();W.save();W.beginPath();W.strokeStyle=this.ringColor;W.lineWidth=this.ringWidth;W.arc(0,0,T,ab,az,false);W.closePath();W.stroke();W.restore();W.save();W.beginPath();W.fillStyle=this.ringColor;W.arc(0,0,this.hubRadius,A,ae,false);W.closePath();W.fill();W.restore();if(this.showTicks){W.save();var f=this.tickOuterRadius,ao=this.tickLength,u=ao/2,E=this.numberMinorTicks,al=this.span*Math.PI/180/(this.ticks.length-1),o=al/(E+1);for(Z=0;Z<this.ticks.length;Z++){W.beginPath();W.lineWidth=1.5+this.diameter/360;W.strokeStyle=this.ringColor;var ad=al*Z+aC;W.moveTo(-f*Math.cos(al*Z+aC),f*Math.sin(al*Z+aC));W.lineTo(-(f-ao)*Math.cos(al*Z+aC),(f-ao)*Math.sin(al*Z+aC));this._tickPoints.push([(f-ao)*Math.cos(al*Z+aC)+this._center[0]+this.canvas._offsets.left,(f-ao)*Math.sin(al*Z+aC)+this._center[1]+this.canvas._offsets.top,al*Z+aC]);W.stroke();W.lineWidth=1+this.diameter/440;if(Z<this.ticks.length-1){for(var X=1;X<=E;X++){W.beginPath();W.moveTo(-f*Math.cos(al*Z+o*X+aC),f*Math.sin(al*Z+o*X+aC));W.lineTo(-(f-u)*Math.cos(al*Z+o*X+aC),(f-u)*Math.sin(al*Z+o*X+aC));W.stroke()}}}W.restore()}if(this.showTickLabels){var I,V,S,aM,F,m=0;var am=this.tickPadding*(1-1/(this.diameter/80+1));for(Z=0;Z<this.ticks.length;Z++){I=c('<div class="jqplot-meterGauge-tick" style="position:absolute;">'+this.ticks[Z][1]+"</div>");this.canvas._elem.after(I);aM=I.outerWidth(true);eh=I.outerHeight(true);V=this._tickPoints[Z][0]-aM*(this._tickPoints[Z][2]-Math.PI)/Math.PI-am*Math.cos(this._tickPoints[Z][2]);S=this._tickPoints[Z][1]-eh/2+eh/2*Math.pow(Math.abs((Math.sin(this._tickPoints[Z][2]))),0.5)+am/3*Math.pow(Math.abs((Math.sin(this._tickPoints[Z][2]))),0.5);I.css({left:V,top:S});F=aM*Math.cos(this._tickPoints[Z][2])+eh*Math.sin(Math.PI/2+this._tickPoints[Z][2]/2);m=(F>m)?F:m}}if(this.label&&this.labelPosition=="inside"){var V=this._center[0]+this.canvas._offsets.left;var am=this.tickPadding*(1-1/(this.diameter/80+1));var S=0.5*(this._center[1]+this.canvas._offsets.top-this.hubRadius)+0.5*(this._center[1]+this.canvas._offsets.top-this.tickOuterRadius+this.tickLength+am)+this.labelHeightAdjust;V-=this._labelElem.outerWidth(true)/2;S-=this._labelElem.outerHeight(true)/2;this._labelElem.css({left:V,top:S})}else{if(this.label&&this.labelPosition=="bottom"){var V=this._center[0]+this.canvas._offsets.left-this._labelElem.outerWidth(true)/2;var S=this._center[1]+this.canvas._offsets.top+this.innerPad+ +this.ringWidth+this.padding+this.labelHeightAdjust;this._labelElem.css({left:V,top:S})}}W.save();var av=this.intervalInnerRadius||this.hubRadius*1.5;if(this.intervalOuterRadius==null){if(this.showTickLabels){var af=(this.tickOuterRadius-this.tickLength-this.tickPadding-this.diameter/8)}else{var af=(this.tickOuterRadius-this.tickLength-this.diameter/16)}}else{var af=this.intervalOuterRadius}var O=this.max-this.min;var aB=this.intervals[this.intervals.length-1]-this.min;var y,Y,s=this.span*Math.PI/180;for(Z=0;Z<this.intervals.length;Z++){y=(Z==0)?aC:aC+(this.intervals[Z-1][0]-this.min)*s/O;if(y<0){y=0}Y=aC+(this.intervals[Z][0]-this.min)*s/O;if(Y<0){Y=0}W.beginPath();W.fillStyle=this.intervals[Z][2];W.arc(0,0,av,y,Y,false);W.lineTo(af*Math.cos(Y),af*Math.sin(Y));W.arc(0,0,af,Y,y,true);W.lineTo(av*Math.cos(y),av*Math.sin(y));W.closePath();W.fill()}W.restore();var aw=this.data[0][1];var Q=this.max-this.min;if(this.pegNeedle){if(this.data[0][1]>this.max+Q*3/this.span){aw=this.max+Q*3/this.span}if(this.data[0][1]<this.min-Q*3/this.span){aw=this.min-Q*3/this.span}}var ak=(aw-this.min)/Q*this.span*Math.PI/180+this.startAngle;W.save();W.beginPath();W.fillStyle=this.ringColor;W.strokeStyle=this.ringColor;this.needleLength=(this.tickOuterRadius-this.tickLength)*0.85;this.needleThickness=(this.needleThickness<2)?2:this.needleThickness;var aI=this.needleThickness*0.4;var v=this.needleLength/10;var q=(this.needleThickness-aI)/10;var ap;for(var Z=0;Z<10;Z++){ap=this.needleThickness-Z*q;W.moveTo(v*Z*Math.cos(ak),v*Z*Math.sin(ak));W.lineWidth=ap;W.lineTo(v*(Z+1)*Math.cos(ak),v*(Z+1)*Math.sin(ak));W.stroke()}W.restore()}else{this._center=[(J-aq*ah)/2+aq*ah,(R-aq*ag)/2+aq*ag]}};c.jqplot.MeterGaugeAxisRenderer=function(){c.jqplot.LinearAxisRenderer.call(this)};c.jqplot.MeterGaugeAxisRenderer.prototype=new c.jqplot.LinearAxisRenderer();c.jqplot.MeterGaugeAxisRenderer.prototype.constructor=c.jqplot.MeterGaugeAxisRenderer;c.jqplot.MeterGaugeAxisRenderer.prototype.init=function(e){this.tickRenderer=c.jqplot.MeterGaugeTickRenderer;c.extend(true,this,e);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};c.jqplot.MeterGaugeLegendRenderer=function(){c.jqplot.TableLegendRenderer.call(this)};c.jqplot.MeterGaugeLegendRenderer.prototype=new c.jqplot.TableLegendRenderer();c.jqplot.MeterGaugeLegendRenderer.prototype.constructor=c.jqplot.MeterGaugeLegendRenderer;c.jqplot.MeterGaugeLegendRenderer.prototype.init=function(e){this.numberRows=null;this.numberColumns=null;c.extend(true,this,e)};c.jqplot.MeterGaugeLegendRenderer.prototype.draw=function(){var g=this;if(this.show){var p=this._series;var t="position:absolute;";t+=(this.background)?"background:"+this.background+";":"";t+=(this.border)?"border:"+this.border+";":"";t+=(this.fontSize)?"font-size:"+this.fontSize+";":"";t+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";t+=(this.textColor)?"color:"+this.textColor+";":"";t+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";t+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";t+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";t+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=c('<table class="jqplot-table-legend" style="'+t+'"></table>');var x=false,o=false,e,m;var q=p[0];if(q.show){var y=q.data;if(this.numberRows){e=this.numberRows;if(!this.numberColumns){m=Math.ceil(y.length/e)}else{m=this.numberColumns}}else{if(this.numberColumns){m=this.numberColumns;e=Math.ceil(y.length/this.numberColumns)}else{e=y.length;m=1}}var w,v,f,k,h,l,n,u;var r=0;for(w=0;w<e;w++){if(o){f=c('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem)}else{f=c('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem)}for(v=0;v<m;v++){if(r<y.length){l=this.labels[r]||y[r][0].toString();u=colorGenerator.next();if(!o){if(w>0){x=true}else{x=false}}else{if(w==e-1){x=false}else{x=true}}n=(x)?this.rowSpacing:"0";k=c('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+n+';"><div><div class="jqplot-table-legend-swatch" style="border-color:'+u+';"></div></div></td>');h=c('<td class="jqplot-table-legend" style="padding-top:'+n+';"></td>');if(this.escapeHtml){h.text(l)}else{h.html(l)}if(o){h.prependTo(f);k.prependTo(f)}else{k.appendTo(f);h.appendTo(f)}x=true}r++}}}}return this._elem};function a(j,h,f){f=f||{};f.axesDefaults=f.axesDefaults||{};f.legend=f.legend||{};f.seriesDefaults=f.seriesDefaults||{};f.grid=f.grid||{};f.gridPadding=f.gridPadding||{};var e=false;if(f.seriesDefaults.renderer==c.jqplot.MeterGaugeRenderer){e=true}else{if(f.series){for(var g=0;g<f.series.length;g++){if(f.series[g].renderer==c.jqplot.MeterGaugeRenderer){e=true}}}}if(e){f.axesDefaults.renderer=c.jqplot.MeterGaugeAxisRenderer;f.legend.renderer=c.jqplot.MeterGaugeLegendRenderer;f.legend.preDraw=true;f.grid.background=f.grid.background||"white";f.grid.drawGridlines=false;f.grid.borderWidth=(f.grid.borderWidth!=null)?f.grid.borderWidth:0;f.grid.shadow=(f.grid.shadow!=null)?f.grid.shadow:false;f.gridPadding.top=(f.gridPadding.top!=null)?f.gridPadding.top:0;f.gridPadding.bottom=(f.gridPadding.bottom!=null)?f.gridPadding.bottom:0;f.gridPadding.left=(f.gridPadding.left!=null)?f.gridPadding.left:0;f.gridPadding.right=(f.gridPadding.right!=null)?f.gridPadding.right:0}}function d(e){}c.jqplot.preInitHooks.push(a);c.jqplot.postParseOptionsHooks.push(d);c.jqplot.MeterGaugeTickRenderer=function(){c.jqplot.AxisTickRenderer.call(this)};c.jqplot.MeterGaugeTickRenderer.prototype=new c.jqplot.AxisTickRenderer();c.jqplot.MeterGaugeTickRenderer.prototype.constructor=c.jqplot.MeterGaugeTickRenderer})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.ohlcRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.ohlcRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.ohlcRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.ohlcRenderer.js @@ -0,0 +1,343 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.OHLCRenderer + * jqPlot Plugin to draw Open Hi Low Close, Candlestick and Hi Low Close charts. + * + * To use this plugin, include the renderer js file in + * your source: + * + * > <script type="text/javascript" src="plugins/jqplot.ohlcRenderer.js"></script> + * + * You will most likely want to use a date axis renderer + * for the x axis also, so include the date axis render js file also: + * + * > <script type="text/javascript" src="plugins/jqplot.dateAxisRenderer.js"></script> + * + * Then you set the renderer in the series options on your plot: + * + * > series: [{renderer:$.jqplot.OHLCRenderer}] + * + * For OHLC and candlestick charts, data should be specified + * like so: + * + * > dat = [['07/06/2009',138.7,139.68,135.18,135.4], ['06/29/2009',143.46,144.66,139.79,140.02], ...] + * + * If the data array has only 4 values per point instead of 5, + * the renderer will create a Hi Low Close chart instead. In that case, + * data should be supplied like: + * + * > dat = [['07/06/2009',139.68,135.18,135.4], ['06/29/2009',144.66,139.79,140.02], ...] + * + * To generate a candlestick chart instead of an OHLC chart, + * set the "candlestick" option to true: + * + * > series: [{renderer:$.jqplot.OHLCRenderer, rendererOptions:{candleStick:true}}], + * + */ + $.jqplot.OHLCRenderer = function(){ + // subclass line renderer to make use of some of it's methods. + $.jqplot.LineRenderer.call(this); + // prop: candleStick + // true to render chart as candleStick. + // Must have an open price, cannot be a hlc chart. + this.candleStick = false; + // prop: tickLength + // length of the line in pixels indicating open and close price. + // Default will auto calculate based on plot width and + // number of points displayed. + this.tickLength = 'auto'; + // prop: bodyWidth + // width of the candlestick body in pixels. Default will auto calculate + // based on plot width and number of candlesticks displayed. + this.bodyWidth = 'auto'; + // prop: openColor + // color of the open price tick mark. Default is series color. + this.openColor = null; + // prop: closeColor + // color of the close price tick mark. Default is series color. + this.closeColor = null; + // prop: wickColor + // color of the hi-lo line thorugh the candlestick body. + // Default is the series color. + this.wickColor = null; + // prop: fillUpBody + // true to render an "up" day (close price greater than open price) + // with a filled candlestick body. + this.fillUpBody = false; + // prop: fillDownBody + // true to render a "down" day (close price lower than open price) + // with a filled candlestick body. + this.fillDownBody = true; + // prop: upBodyColor + // Color of candlestick body of an "up" day. Default is series color. + this.upBodyColor = null; + // prop: downBodyColor + // Color of candlestick body on a "down" day. Default is series color. + this.downBodyColor = null; + // prop: hlc + // true if is a hi-low-close chart (no open price). + // This is determined automatically from the series data. + this.hlc = false; + this._tickLength; + this._bodyWidth; + }; + + $.jqplot.OHLCRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.OHLCRenderer.prototype.constructor = $.jqplot.OHLCRenderer; + + // called with scope of series. + $.jqplot.OHLCRenderer.prototype.init = function(options) { + // prop: lineWidth + // Width of the hi-low line and open/close ticks. + this.lineWidth = 1.5; + $.jqplot.LineRenderer.prototype.init.call(this, options); + // set the yaxis data bounds here to account for hi and low values + var db = this._yaxis._dataBounds; + var d = this._plotData; + // if data points have less than 5 values, force a hlc chart. + if (d[0].length < 5) { + this.renderer.hlc = true; + + for (var j=0; j<d.length; j++) { + if (d[j][2] < db.min || db.min == null) { + db.min = d[j][2]; + } + if (d[j][1] > db.max || db.max == null) { + db.max = d[j][1]; + } + } + } + else { + for (var j=0; j<d.length; j++) { + if (d[j][3] < db.min || db.min == null) { + db.min = d[j][3]; + } + if (d[j][2] > db.max || db.max == null) { + db.max = d[j][2]; + } + } + } + + }; + + // called within scope of series. + $.jqplot.OHLCRenderer.prototype.draw = function(ctx, gd, options) { + var d = this.data; + var xmin = this._xaxis.min; + var xmax = this._xaxis.max; + // index of last value below range of plot. + var xminidx = 0; + // index of first value above range of plot. + var xmaxidx = d.length; + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var i, prevColor, ops, b, h, w, a, points; + var o; + var r = this.renderer; + var opts = (options != undefined) ? options : {}; + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + var fillAndStroke = (opts.fillAndStroke != undefined) ? opts.fillAndStroke : this.fillAndStroke; + r.bodyWidth = (opts.bodyWidth != undefined) ? opts.bodyWidth : r.bodyWidth; + r.tickLength = (opts.tickLength != undefined) ? opts.tickLength : r.tickLength; + ctx.save(); + if (this.show) { + var x, open, hi, low, close; + // need to get widths based on number of points shown, + // not on total number of points. Use the results + // to speed up drawing in next step. + for (var i=0; i<d.length; i++) { + if (d[i][0] < xmin) { + xminidx = i; + } + else if (d[i][0] < xmax) { + xmaxidx = i+1; + } + } + + if (r.candleStick) { + if (typeof(r.bodyWidth) == 'number') { + r._bodyWidth = r.bodyWidth; + } + else { + r._bodyWidth = Math.min(20, ctx.canvas.width/(xmaxidx - xminidx)/2); + } + } + else { + if (typeof(r.tickLength) == 'number') { + r._tickLength = r.tickLength; + } + else { + r._tickLength = Math.min(10, ctx.canvas.width/(xmaxidx - xminidx)/4); + } + } + + for (var i=xminidx; i<xmaxidx; i++) { + x = xp(d[i][0]); + if (r.hlc) { + open = null; + hi = yp(d[i][1]); + low = yp(d[i][2]); + close = yp(d[i][3]); + } + else { + open = yp(d[i][1]); + hi = yp(d[i][2]); + low = yp(d[i][3]); + close = yp(d[i][4]); + } + o = {}; + if (r.candleStick && !r.hlc) { + w = r._bodyWidth; + a = x - w/2; + // draw candle + // determine if candle up or down + // up, remember grid coordinates increase downward + if (close < open) { + // draw wick + if (r.wickColor) { + o.color = r.wickColor; + } + else if (r.downBodyColor) { + o.color = r.upBodyColor; + } + ops = $.extend(true, {}, opts, o); + r.shapeRenderer.draw(ctx, [[x, hi], [x, close]], ops); + r.shapeRenderer.draw(ctx, [[x, open], [x, low]], ops); + o = {}; + b = close; + h = open - close; + // if color specified, use it + if (r.fillUpBody) { + o.fillRect = true; + } + else { + o.strokeRect = true; + w = w - this.lineWidth; + a = x - w/2; + } + if (r.upBodyColor) { + o.color = r.upBodyColor; + o.fillStyle = r.upBodyColor; + } + points = [a, b, w, h]; + } + // down + else if (close > open) { + // draw wick + if (r.wickColor) { + o.color = r.wickColor; + } + else if (r.downBodyColor) { + o.color = r.downBodyColor; + } + ops = $.extend(true, {}, opts, o); + r.shapeRenderer.draw(ctx, [[x, hi], [x, open]], ops); + r.shapeRenderer.draw(ctx, [[x, close], [x, low]], ops); + + o = {}; + + b = open; + h = close - open; + // if color specified, use it + if (r.fillDownBody) { + o.fillRect = true; + } + else { + o.strokeRect = true; + w = w - this.lineWidth; + a = x - w/2; + } + if (r.downBodyColor) { + o.color = r.downBodyColor; + o.fillStyle = r.downBodyColor; + } + points = [a, b, w, h]; + } + // even, open = close + else { + // draw wick + if (r.wickColor) { + o.color = r.wickColor; + } + ops = $.extend(true, {}, opts, o); + r.shapeRenderer.draw(ctx, [[x, hi], [x, low]], ops); + o = {}; + o.fillRect = false; + o.strokeRect = false; + a = [x - w/2, open]; + b = [x + w/2, close]; + w = null; + h = null; + points = [a, b]; + } + ops = $.extend(true, {}, opts, o); + r.shapeRenderer.draw(ctx, points, ops); + } + else { + prevColor = opts.color; + if (r.openColor) { + opts.color = r.openColor; + } + // draw open tick + if (!r.hlc) { + r.shapeRenderer.draw(ctx, [[x-r._tickLength, open], [x, open]], opts); + } + opts.color = prevColor; + // draw wick + if (r.wickColor) { + opts.color = r.wickColor; + } + r.shapeRenderer.draw(ctx, [[x, hi], [x, low]], opts); + opts.color = prevColor; + // draw close tick + if (r.closeColor) { + opts.color = r.closeColor; + } + r.shapeRenderer.draw(ctx, [[x, close], [x+r._tickLength, close]], opts); + opts.color = prevColor; + } + } + } + + ctx.restore(); + }; + + $.jqplot.OHLCRenderer.prototype.drawShadow = function(ctx, gd, options) { + // This is a no-op, shadows drawn with lines. + }; + + // called with scope of plot. + $.jqplot.OHLCRenderer.checkOptions = function(target, data, options) { + // provide some sensible highlighter options by default + // These aren't good for hlc, only for ohlc or candlestick + if (!options.highlighter) { + options.highlighter = { + showMarker:false, + tooltipAxes: 'y', + yvalues: 4, + formatString:'<table class="jqplot-highlighter"><tr><td>date:</td><td>%s</td></tr><tr><td>open:</td><td>%s</td></tr><tr><td>hi:</td><td>%s</td></tr><tr><td>low:</td><td>%s</td></tr><tr><td>close:</td><td>%s</td></tr></table>' + }; + } + }; + + //$.jqplot.preInitHooks.push($.jqplot.OHLCRenderer.checkOptions); + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.ohlcRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.ohlcRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.ohlcRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.ohlcRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(a){a.jqplot.OHLCRenderer=function(){a.jqplot.LineRenderer.call(this);this.candleStick=false;this.tickLength="auto";this.bodyWidth="auto";this.openColor=null;this.closeColor=null;this.wickColor=null;this.fillUpBody=false;this.fillDownBody=true;this.upBodyColor=null;this.downBodyColor=null;this.hlc=false;this._tickLength;this._bodyWidth};a.jqplot.OHLCRenderer.prototype=new a.jqplot.LineRenderer();a.jqplot.OHLCRenderer.prototype.constructor=a.jqplot.OHLCRenderer;a.jqplot.OHLCRenderer.prototype.init=function(e){this.lineWidth=1.5;a.jqplot.LineRenderer.prototype.init.call(this,e);var b=this._yaxis._dataBounds;var f=this._plotData;if(f[0].length<5){this.renderer.hlc=true;for(var c=0;c<f.length;c++){if(f[c][2]<b.min||b.min==null){b.min=f[c][2]}if(f[c][1]>b.max||b.max==null){b.max=f[c][1]}}}else{for(var c=0;c<f.length;c++){if(f[c][3]<b.min||b.min==null){b.min=f[c][3]}if(f[c][2]>b.max||b.max==null){b.max=f[c][2]}}}};a.jqplot.OHLCRenderer.prototype.draw=function(z,J,g){var G=this.data;var u=this._xaxis.min;var y=this._xaxis.max;var k=0;var H=G.length;var n=this._xaxis.series_u2p;var F=this._yaxis.series_u2p;var C,D,e,I,E,m,K,B;var v;var t=this.renderer;var q=(g!=undefined)?g:{};var j=(q.shadow!=undefined)?q.shadow:this.shadow;var A=(q.fill!=undefined)?q.fill:this.fill;var c=(q.fillAndStroke!=undefined)?q.fillAndStroke:this.fillAndStroke;t.bodyWidth=(q.bodyWidth!=undefined)?q.bodyWidth:t.bodyWidth;t.tickLength=(q.tickLength!=undefined)?q.tickLength:t.tickLength;z.save();if(this.show){var l,p,f,L,s;for(var C=0;C<G.length;C++){if(G[C][0]<u){k=C}else{if(G[C][0]<y){H=C+1}}}if(t.candleStick){if(typeof(t.bodyWidth)=="number"){t._bodyWidth=t.bodyWidth}else{t._bodyWidth=Math.min(20,z.canvas.width/(H-k)/2)}}else{if(typeof(t.tickLength)=="number"){t._tickLength=t.tickLength}else{t._tickLength=Math.min(10,z.canvas.width/(H-k)/4)}}for(var C=k;C<H;C++){l=n(G[C][0]);if(t.hlc){p=null;f=F(G[C][1]);L=F(G[C][2]);s=F(G[C][3])}else{p=F(G[C][1]);f=F(G[C][2]);L=F(G[C][3]);s=F(G[C][4])}v={};if(t.candleStick&&!t.hlc){m=t._bodyWidth;K=l-m/2;if(s<p){if(t.wickColor){v.color=t.wickColor}else{if(t.downBodyColor){v.color=t.upBodyColor}}e=a.extend(true,{},q,v);t.shapeRenderer.draw(z,[[l,f],[l,s]],e);t.shapeRenderer.draw(z,[[l,p],[l,L]],e);v={};I=s;E=p-s;if(t.fillUpBody){v.fillRect=true}else{v.strokeRect=true;m=m-this.lineWidth;K=l-m/2}if(t.upBodyColor){v.color=t.upBodyColor;v.fillStyle=t.upBodyColor}B=[K,I,m,E]}else{if(s>p){if(t.wickColor){v.color=t.wickColor}else{if(t.downBodyColor){v.color=t.downBodyColor}}e=a.extend(true,{},q,v);t.shapeRenderer.draw(z,[[l,f],[l,p]],e);t.shapeRenderer.draw(z,[[l,s],[l,L]],e);v={};I=p;E=s-p;if(t.fillDownBody){v.fillRect=true}else{v.strokeRect=true;m=m-this.lineWidth;K=l-m/2}if(t.downBodyColor){v.color=t.downBodyColor;v.fillStyle=t.downBodyColor}B=[K,I,m,E]}else{if(t.wickColor){v.color=t.wickColor}e=a.extend(true,{},q,v);t.shapeRenderer.draw(z,[[l,f],[l,L]],e);v={};v.fillRect=false;v.strokeRect=false;K=[l-m/2,p];I=[l+m/2,s];m=null;E=null;B=[K,I]}}e=a.extend(true,{},q,v);t.shapeRenderer.draw(z,B,e)}else{D=q.color;if(t.openColor){q.color=t.openColor}if(!t.hlc){t.shapeRenderer.draw(z,[[l-t._tickLength,p],[l,p]],q)}q.color=D;if(t.wickColor){q.color=t.wickColor}t.shapeRenderer.draw(z,[[l,f],[l,L]],q);q.color=D;if(t.closeColor){q.color=t.closeColor}t.shapeRenderer.draw(z,[[l,s],[l+t._tickLength,s]],q);q.color=D}}}z.restore()};a.jqplot.OHLCRenderer.prototype.drawShadow=function(b,d,c){};a.jqplot.OHLCRenderer.checkOptions=function(d,c,b){if(!b.highlighter){b.highlighter={showMarker:false,tooltipAxes:"y",yvalues:4,formatString:'<table class="jqplot-highlighter"><tr><td>date:</td><td>%s</td></tr><tr><td>open:</td><td>%s</td></tr><tr><td>hi:</td><td>%s</td></tr><tr><td>low:</td><td>%s</td></tr><tr><td>close:</td><td>%s</td></tr></table>'}}}})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.pieRenderer.js Index: Site/Site_W/jpqplot/plugins/jqplot.pieRenderer.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.pieRenderer.js +++ Site/Site_W/jpqplot/plugins/jqplot.pieRenderer.js @@ -0,0 +1,766 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + /** + * Class: $.jqplot.PieRenderer + * Plugin renderer to draw a pie chart. + * x values, if present, will be used as slice labels. + * y values give slice size. + * + * To use this renderer, you need to include the + * pie renderer plugin, for example: + * + * > <script type="text/javascript" src="plugins/jqplot.pieRenderer.js"></script> + * + * Properties described here are passed into the $.jqplot function + * as options on the series renderer. For example: + * + * > plot2 = $.jqplot('chart2', [s1, s2], { + * > seriesDefaults: { + * > renderer:$.jqplot.PieRenderer, + * > rendererOptions:{ + * > sliceMargin: 2, + * > startAngle: -90 + * > } + * > } + * > }); + * + * A pie plot will trigger events on the plot target + * according to user interaction. All events return the event object, + * the series index, the point (slice) index, and the point data for + * the appropriate slice. + * + * 'jqplotDataMouseOver' - triggered when user mouseing over a slice. + * 'jqplotDataHighlight' - triggered the first time user mouses over a slice, + * if highlighting is enabled. + * 'jqplotDataUnhighlight' - triggered when a user moves the mouse out of + * a highlighted slice. + * 'jqplotDataClick' - triggered when the user clicks on a slice. + * 'jqplotDataRightClick' - tiggered when the user right clicks on a slice if + * the "captureRightClick" option is set to true on the plot. + */ + $.jqplot.PieRenderer = function(){ + $.jqplot.LineRenderer.call(this); + }; + + $.jqplot.PieRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.PieRenderer.prototype.constructor = $.jqplot.PieRenderer; + + // called with scope of a series + $.jqplot.PieRenderer.prototype.init = function(options, plot) { + // Group: Properties + // + // prop: diameter + // Outer diameter of the pie, auto computed by default + this.diameter = null; + // prop: padding + // padding between the pie and plot edges, legend, etc. + this.padding = 20; + // prop: sliceMargin + // angular spacing between pie slices in degrees. + this.sliceMargin = 0; + // prop: fill + // true or false, wether to fil the slices. + this.fill = true; + // prop: shadowOffset + // offset of the shadow from the slice and offset of + // each succesive stroke of the shadow from the last. + this.shadowOffset = 2; + // prop: shadowAlpha + // transparency of the shadow (0 = transparent, 1 = opaque) + this.shadowAlpha = 0.07; + // prop: shadowDepth + // number of strokes to apply to the shadow, + // each stroke offset shadowOffset from the last. + this.shadowDepth = 5; + // prop: highlightMouseOver + // True to highlight slice when moused over. + // This must be false to enable highlightMouseDown to highlight when clicking on a slice. + this.highlightMouseOver = true; + // prop: highlightMouseDown + // True to highlight when a mouse button is pressed over a slice. + // This will be disabled if highlightMouseOver is true. + this.highlightMouseDown = false; + // prop: highlightColors + // an array of colors to use when highlighting a slice. + this.highlightColors = []; + // prop: dataLabels + // Either 'label', 'value', 'percent' or an array of labels to place on the pie slices. + // Defaults to percentage of each pie slice. + this.dataLabels = 'percent'; + // prop: showDataLabels + // true to show data labels on slices. + this.showDataLabels = false; + // prop: dataLabelFormatString + // Format string for data labels. If none, '%s' is used for "label" and for arrays, '%d' for value and '%d%%' for percentage. + this.dataLabelFormatString = null; + // prop: dataLabelThreshold + // Threshhold in percentage (0 - 100) of pie area, below which no label will be displayed. + // This applies to all label types, not just to percentage labels. + this.dataLabelThreshold = 3; + // prop: dataLabelPositionFactor + // A Multiplier (0-1) of the pie radius which controls position of label on slice. + // Increasing will slide label toward edge of pie, decreasing will slide label toward center of pie. + this.dataLabelPositionFactor = 0.52; + // prop: dataLabelNudge + // Number of pixels to slide the label away from (+) or toward (-) the center of the pie. + this.dataLabelNudge = 2; + // prop: dataLabelCenterOn + // True to center the data label at its position. + // False to set the inside facing edge of the label at its position. + this.dataLabelCenterOn = true; + // prop: startAngle + // Angle to start drawing pie in degrees. + // According to orientation of canvas coordinate system: + // 0 = on the positive x axis + // -90 = on the positive y axis. + // 90 = on the negaive y axis. + // 180 or - 180 = on the negative x axis. + this.startAngle = 0; + this.tickRenderer = $.jqplot.PieTickRenderer; + // Used as check for conditions where pie shouldn't be drawn. + this._drawData = true; + + // if user has passed in highlightMouseDown option and not set highlightMouseOver, disable highlightMouseOver + if (options.highlightMouseDown && options.highlightMouseOver == null) { + options.highlightMouseOver = false; + } + + $.extend(true, this, options); + if (this.diameter != null) { + this.diameter = this.diameter - this.sliceMargin; + } + this._diameter = null; + this._radius = null; + // array of [start,end] angles arrays, one for each slice. In radians. + this._sliceAngles = []; + // index of the currenty highlighted point, if any + this._highlightedPoint = null; + + // set highlight colors if none provided + if (this.highlightColors.length == 0) { + for (var i=0; i<this.seriesColors.length; i++){ + var rgba = $.jqplot.getColorComponents(this.seriesColors[i]); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + newrgb[j] = (sum > 570) ? newrgb[j] * 0.8 : newrgb[j] + 0.3 * (255 - newrgb[j]); + newrgb[j] = parseInt(newrgb[j], 10); + } + this.highlightColors.push('rgb('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+')'); + } + } + + this.highlightColorGenerator = new $.jqplot.ColorGenerator(this.highlightColors); + + plot.postParseOptionsHooks.addOnce(postParseOptions); + plot.postInitHooks.addOnce(postInit); + plot.eventListenerHooks.addOnce('jqplotMouseMove', handleMove); + plot.eventListenerHooks.addOnce('jqplotMouseDown', handleMouseDown); + plot.eventListenerHooks.addOnce('jqplotMouseUp', handleMouseUp); + plot.eventListenerHooks.addOnce('jqplotClick', handleClick); + plot.eventListenerHooks.addOnce('jqplotRightClick', handleRightClick); + plot.postDrawHooks.addOnce(postPlotDraw); + }; + + $.jqplot.PieRenderer.prototype.setGridData = function(plot) { + // set gridData property. This will hold angle in radians of each data point. + var stack = []; + var td = []; + var sa = this.startAngle/180*Math.PI; + var tot = 0; + // don't know if we have any valid data yet, so set plot to not draw. + this._drawData = false; + for (var i=0; i<this.data.length; i++){ + if (this.data[i][1] != 0) { + // we have data, O.K. to draw. + this._drawData = true; + } + stack.push(this.data[i][1]); + td.push([this.data[i][0]]); + if (i>0) { + stack[i] += stack[i-1]; + } + tot += this.data[i][1]; + } + var fact = Math.PI*2/stack[stack.length - 1]; + + for (var i=0; i<stack.length; i++) { + td[i][1] = stack[i] * fact; + td[i][2] = this.data[i][1]/tot; + } + this.gridData = td; + }; + + $.jqplot.PieRenderer.prototype.makeGridData = function(data, plot) { + var stack = []; + var td = []; + var tot = 0; + var sa = this.startAngle/180*Math.PI; + // don't know if we have any valid data yet, so set plot to not draw. + this._drawData = false; + for (var i=0; i<data.length; i++){ + if (this.data[i][1] != 0) { + // we have data, O.K. to draw. + this._drawData = true; + } + stack.push(data[i][1]); + td.push([data[i][0]]); + if (i>0) { + stack[i] += stack[i-1]; + } + tot += data[i][1]; + } + var fact = Math.PI*2/stack[stack.length - 1]; + + for (var i=0; i<stack.length; i++) { + td[i][1] = stack[i] * fact; + td[i][2] = data[i][1]/tot; + } + return td; + }; + + $.jqplot.PieRenderer.prototype.drawSlice = function (ctx, ang1, ang2, color, isShadow) { + if (this._drawData) { + var r = this._diameter / 2; + var fill = this.fill; + var lineWidth = this.lineWidth; + ctx.save(); + ctx.translate(this._center[0], this._center[1]); + ctx.translate(this.sliceMargin*Math.cos((ang1+ang2)/2), this.sliceMargin*Math.sin((ang1+ang2)/2)); + + if (isShadow) { + for (var i=0; i<this.shadowDepth; i++) { + ctx.save(); + ctx.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI), this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI)); + doDraw(); + } + } + + else { + doDraw(); + } + } + + function doDraw () { + // Fix for IE and Chrome that can't seem to draw circles correctly. + // ang2 should always be <= 2 pi since that is the way the data is converted. + if (ang2 > 6.282 + this.startAngle) { + ang2 = 6.282 + this.startAngle; + if (ang1 > ang2) { + ang1 = 6.281 + this.startAngle; + } + } + // Fix for IE, where it can't seem to handle 0 degree angles. Also avoids + // ugly line on unfilled pies. + if (ang1 >= ang2) { + return; + } + + ctx.beginPath(); + ctx.fillStyle = color; + ctx.strokeStyle = color; + ctx.lineWidth = lineWidth; + ctx.arc(0, 0, r, ang1, ang2, false); + ctx.lineTo(0,0); + ctx.closePath(); + + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + } + + if (isShadow) { + for (var i=0; i<this.shadowDepth; i++) { + ctx.restore(); + } + } + + ctx.restore(); + }; + + // called with scope of series + $.jqplot.PieRenderer.prototype.draw = function (ctx, gd, options, plot) { + var i; + var opts = (options != undefined) ? options : {}; + // offset and direction of offset due to legend placement + var offx = 0; + var offy = 0; + var trans = 1; + var colorGenerator = new $.jqplot.ColorGenerator(this.seriesColors); + if (options.legendInfo && options.legendInfo.placement == 'insideGrid') { + var li = options.legendInfo; + switch (li.location) { + case 'nw': + offx = li.width + li.xoffset; + break; + case 'w': + offx = li.width + li.xoffset; + break; + case 'sw': + offx = li.width + li.xoffset; + break; + case 'ne': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'e': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'se': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'n': + offy = li.height + li.yoffset; + break; + case 's': + offy = li.height + li.yoffset; + trans = -1; + break; + default: + break; + } + } + + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + var cw = ctx.canvas.width; + var ch = ctx.canvas.height; + var w = cw - offx - 2 * this.padding; + var h = ch - offy - 2 * this.padding; + var mindim = Math.min(w,h); + var d = mindim; + // this._diameter = this.diameter || d; + this._diameter = this.diameter || d - this.sliceMargin; + + var r = this._radius = this._diameter/2; + var sa = this.startAngle / 180 * Math.PI; + this._center = [(cw - trans * offx)/2 + trans * offx, (ch - trans*offy)/2 + trans * offy]; + + if (this.shadow) { + var shadowColor = 'rgba(0,0,0,'+this.shadowAlpha+')'; + for (var i=0; i<gd.length; i++) { + var ang1 = (i == 0) ? sa : gd[i-1][1] + sa; + // Adjust ang1 and ang2 for sliceMargin + ang1 += this.sliceMargin/180*Math.PI; + this.renderer.drawSlice.call (this, ctx, ang1, gd[i][1]+sa, shadowColor, true); + } + + } + for (var i=0; i<gd.length; i++) { + var ang1 = (i == 0) ? sa : gd[i-1][1] + sa; + // Adjust ang1 and ang2 for sliceMargin + ang1 += this.sliceMargin/180*Math.PI; + var ang2 = gd[i][1] + sa; + this._sliceAngles.push([ang1, ang2]); + + this.renderer.drawSlice.call (this, ctx, ang1, ang2, colorGenerator.next(), false); + + if (this.showDataLabels && gd[i][2]*100 >= this.dataLabelThreshold) { + var fstr, avgang = (ang1+ang2)/2, label; + + if (this.dataLabels == 'label') { + fstr = this.dataLabelFormatString || '%s'; + label = $.jqplot.sprintf(fstr, gd[i][0]); + } + else if (this.dataLabels == 'value') { + fstr = this.dataLabelFormatString || '%d'; + label = $.jqplot.sprintf(fstr, this.data[i][1]); + } + else if (this.dataLabels == 'percent') { + fstr = this.dataLabelFormatString || '%d%%'; + label = $.jqplot.sprintf(fstr, gd[i][2]*100); + } + else if (this.dataLabels.constructor == Array) { + fstr = this.dataLabelFormatString || '%s'; + label = $.jqplot.sprintf(fstr, this.dataLabels[i]); + } + + var fact = (this._radius ) * this.dataLabelPositionFactor + this.sliceMargin + this.dataLabelNudge; + + var x = this._center[0] + Math.cos(avgang) * fact + this.canvas._offsets.left; + var y = this._center[1] + Math.sin(avgang) * fact + this.canvas._offsets.top; + + var labelelem = $('<div class="jqplot-pie-series jqplot-data-label" style="position:absolute;">' + label + '</div>').insertBefore(plot.eventCanvas._elem); + if (this.dataLabelCenterOn) { + x -= labelelem.width()/2; + y -= labelelem.height()/2; + } + else { + x -= labelelem.width() * Math.sin(avgang/2); + y -= labelelem.height()/2; + } + x = Math.round(x); + y = Math.round(y); + labelelem.css({left: x, top: y}); + } + } + + }; + + $.jqplot.PieAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + }; + + $.jqplot.PieAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.PieAxisRenderer.prototype.constructor = $.jqplot.PieAxisRenderer; + + + // There are no traditional axes on a pie chart. We just need to provide + // dummy objects with properties so the plot will render. + // called with scope of axis object. + $.jqplot.PieAxisRenderer.prototype.init = function(options){ + // + this.tickRenderer = $.jqplot.PieTickRenderer; + $.extend(true, this, options); + // I don't think I'm going to need _dataBounds here. + // have to go Axis scaling in a way to fit chart onto plot area + // and provide u2p and p2u functionality for mouse cursor, etc. + // for convienence set _dataBounds to 0 and 100 and + // set min/max to 0 and 100. + this._dataBounds = {min:0, max:100}; + this.min = 0; + this.max = 100; + this.showTicks = false; + this.ticks = []; + this.showMark = false; + this.show = false; + }; + + + + + $.jqplot.PieLegendRenderer = function(){ + $.jqplot.TableLegendRenderer.call(this); + }; + + $.jqplot.PieLegendRenderer.prototype = new $.jqplot.TableLegendRenderer(); + $.jqplot.PieLegendRenderer.prototype.constructor = $.jqplot.PieLegendRenderer; + + /** + * Class: $.jqplot.PieLegendRenderer + * Legend Renderer specific to pie plots. Set by default + * when user creates a pie plot. + */ + $.jqplot.PieLegendRenderer.prototype.init = function(options) { + // Group: Properties + // + // prop: numberRows + // Maximum number of rows in the legend. 0 or null for unlimited. + this.numberRows = null; + // prop: numberColumns + // Maximum number of columns in the legend. 0 or null for unlimited. + this.numberColumns = null; + $.extend(true, this, options); + }; + + // called with context of legend + $.jqplot.PieLegendRenderer.prototype.draw = function() { + var legend = this; + if (this.show) { + var series = this._series; + var ss = 'position:absolute;'; + ss += (this.background) ? 'background:'+this.background+';' : ''; + ss += (this.border) ? 'border:'+this.border+';' : ''; + ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : ''; + ss += (this.textColor) ? 'color:'+this.textColor+';' : ''; + ss += (this.marginTop != null) ? 'margin-top:'+this.marginTop+';' : ''; + ss += (this.marginBottom != null) ? 'margin-bottom:'+this.marginBottom+';' : ''; + ss += (this.marginLeft != null) ? 'margin-left:'+this.marginLeft+';' : ''; + ss += (this.marginRight != null) ? 'margin-right:'+this.marginRight+';' : ''; + this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>'); + // Pie charts legends don't go by number of series, but by number of data points + // in the series. Refactor things here for that. + + var pad = false, + reverse = false, + nr, nc; + var s = series[0]; + var colorGenerator = new $.jqplot.ColorGenerator(s.seriesColors); + + if (s.show) { + var pd = s.data; + if (this.numberRows) { + nr = this.numberRows; + if (!this.numberColumns){ + nc = Math.ceil(pd.length/nr); + } + else{ + nc = this.numberColumns; + } + } + else if (this.numberColumns) { + nc = this.numberColumns; + nr = Math.ceil(pd.length/this.numberColumns); + } + else { + nr = pd.length; + nc = 1; + } + + var i, j, tr, td1, td2, lt, rs, color; + var idx = 0; + + for (i=0; i<nr; i++) { + if (reverse){ + tr = $('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem); + } + else{ + tr = $('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem); + } + for (j=0; j<nc; j++) { + if (idx < pd.length){ + lt = this.labels[idx] || pd[idx][0].toString(); + color = colorGenerator.next(); + if (!reverse){ + if (i>0){ + pad = true; + } + else{ + pad = false; + } + } + else{ + if (i == nr -1){ + pad = false; + } + else{ + pad = true; + } + } + rs = (pad) ? this.rowSpacing : '0'; + + td1 = $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+ + '<div><div class="jqplot-table-legend-swatch" style="border-color:'+color+';"></div>'+ + '</div></td>'); + td2 = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>'); + if (this.escapeHtml){ + td2.text(lt); + } + else { + td2.html(lt); + } + if (reverse) { + td2.prependTo(tr); + td1.prependTo(tr); + } + else { + td1.appendTo(tr); + td2.appendTo(tr); + } + pad = true; + } + idx++; + } + } + } + } + return this._elem; + }; + + $.jqplot.PieRenderer.prototype.handleMove = function(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + plot.target.trigger('jqplotDataMouseOver', ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.pieRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + plot.target.trigger('jqplotDataHighlight', ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + }; + + + // this.eventCanvas._elem.bind($.jqplot.eventListenerHooks[i][0], {plot:this}, $.jqplot.eventListenerHooks[i][1]); + + // setup default renderers for axes and legend so user doesn't have to + // called with scope of plot + function preInit(target, data, options) { + options = options || {}; + options.axesDefaults = options.axesDefaults || {}; + options.legend = options.legend || {}; + options.seriesDefaults = options.seriesDefaults || {}; + // only set these if there is a pie series + var setopts = false; + if (options.seriesDefaults.renderer == $.jqplot.PieRenderer) { + setopts = true; + } + else if (options.series) { + for (var i=0; i < options.series.length; i++) { + if (options.series[i].renderer == $.jqplot.PieRenderer) { + setopts = true; + } + } + } + + if (setopts) { + options.axesDefaults.renderer = $.jqplot.PieAxisRenderer; + options.legend.renderer = $.jqplot.PieLegendRenderer; + options.legend.preDraw = true; + options.seriesDefaults.pointLabels = {show: false}; + } + } + + function postInit(target, data, options) { + for (i=0; i<this.series.length; i++) { + if (this.series[i].renderer.constructor == $.jqplot.PieRenderer) { + // don't allow mouseover and mousedown at same time. + if (this.series[i].highlightMouseOver) { + this.series[i].highlightMouseDown = false; + } + } + } + this.target.bind('mouseout', {plot:this}, function (ev) { unhighlight(ev.data.plot); }); + } + + // called with scope of plot + function postParseOptions(options) { + for (var i=0; i<this.series.length; i++) { + this.series[i].seriesColors = this.seriesColors; + this.series[i].colorGenerator = this.colorGenerator; + } + } + + function highlight (plot, sidx, pidx) { + var s = plot.series[sidx]; + var canvas = plot.plugins.pieRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0,canvas._ctx.canvas.width, canvas._ctx.canvas.height); + s._highlightedPoint = pidx; + plot.plugins.pieRenderer.highlightedSeriesIndex = sidx; + s.renderer.drawSlice.call(s, canvas._ctx, s._sliceAngles[pidx][0], s._sliceAngles[pidx][1], s.highlightColorGenerator.get(pidx), false); + } + + function unhighlight (plot) { + var canvas = plot.plugins.pieRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0, canvas._ctx.canvas.width, canvas._ctx.canvas.height); + for (var i=0; i<plot.series.length; i++) { + plot.series[i]._highlightedPoint = null; + } + plot.plugins.pieRenderer.highlightedSeriesIndex = null; + plot.target.trigger('jqplotDataUnhighlight'); + } + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt1 = jQuery.Event('jqplotDataMouseOver'); + evt1.pageX = ev.pageX; + evt1.pageY = ev.pageY; + plot.target.trigger(evt1, ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.pieRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseDown(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + if (plot.series[ins[0]].highlightMouseDown && !(ins[0] == plot.plugins.pieRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseUp(ev, gridpos, datapos, neighbor, plot) { + var idx = plot.plugins.pieRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + } + + function handleClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt = jQuery.Event('jqplotDataClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + function handleRightClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var idx = plot.plugins.pieRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + var evt = jQuery.Event('jqplotDataRightClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + function postPlotDraw() { + this.plugins.pieRenderer = {highlightedSeriesIndex:null}; + this.plugins.pieRenderer.highlightCanvas = new $.jqplot.GenericCanvas(); + + // do we have any data labels? if so, put highlight canvas before those + var labels = $(this.targetId+' .jqplot-data-label'); + if (labels.length) { + $(labels[0]).before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-pieRenderer-highlight-canvas', this._plotDimensions)); + } + // else put highlight canvas before event canvas. + else { + this.eventCanvas._elem.before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-pieRenderer-highlight-canvas', this._plotDimensions)); + } + + var hctx = this.plugins.pieRenderer.highlightCanvas.setContext(); + } + + $.jqplot.preInitHooks.push(preInit); + + $.jqplot.PieTickRenderer = function() { + $.jqplot.AxisTickRenderer.call(this); + }; + + $.jqplot.PieTickRenderer.prototype = new $.jqplot.AxisTickRenderer(); + $.jqplot.PieTickRenderer.prototype.constructor = $.jqplot.PieTickRenderer; + +})(jQuery); + + ADDED Site/Site_W/jpqplot/plugins/jqplot.pieRenderer.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.pieRenderer.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.pieRenderer.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.pieRenderer.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(e){e.jqplot.PieRenderer=function(){e.jqplot.LineRenderer.call(this)};e.jqplot.PieRenderer.prototype=new e.jqplot.LineRenderer();e.jqplot.PieRenderer.prototype.constructor=e.jqplot.PieRenderer;e.jqplot.PieRenderer.prototype.init=function(p,t){this.diameter=null;this.padding=20;this.sliceMargin=0;this.fill=true;this.shadowOffset=2;this.shadowAlpha=0.07;this.shadowDepth=5;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.dataLabels="percent";this.showDataLabels=false;this.dataLabelFormatString=null;this.dataLabelThreshold=3;this.dataLabelPositionFactor=0.52;this.dataLabelNudge=2;this.dataLabelCenterOn=true;this.startAngle=0;this.tickRenderer=e.jqplot.PieTickRenderer;this._drawData=true;if(p.highlightMouseDown&&p.highlightMouseOver==null){p.highlightMouseOver=false}e.extend(true,this,p);if(this.diameter!=null){this.diameter=this.diameter-this.sliceMargin}this._diameter=null;this._radius=null;this._sliceAngles=[];this._highlightedPoint=null;if(this.highlightColors.length==0){for(var r=0;r<this.seriesColors.length;r++){var q=e.jqplot.getColorComponents(this.seriesColors[r]);var n=[q[0],q[1],q[2]];var s=n[0]+n[1]+n[2];for(var o=0;o<3;o++){n[o]=(s>570)?n[o]*0.8:n[o]+0.3*(255-n[o]);n[o]=parseInt(n[o],10)}this.highlightColors.push("rgb("+n[0]+","+n[1]+","+n[2]+")")}}this.highlightColorGenerator=new e.jqplot.ColorGenerator(this.highlightColors);t.postParseOptionsHooks.addOnce(l);t.postInitHooks.addOnce(g);t.eventListenerHooks.addOnce("jqplotMouseMove",a);t.eventListenerHooks.addOnce("jqplotMouseDown",b);t.eventListenerHooks.addOnce("jqplotMouseUp",k);t.eventListenerHooks.addOnce("jqplotClick",f);t.eventListenerHooks.addOnce("jqplotRightClick",m);t.postDrawHooks.addOnce(h)};e.jqplot.PieRenderer.prototype.setGridData=function(s){var o=[];var t=[];var n=this.startAngle/180*Math.PI;var r=0;this._drawData=false;for(var q=0;q<this.data.length;q++){if(this.data[q][1]!=0){this._drawData=true}o.push(this.data[q][1]);t.push([this.data[q][0]]);if(q>0){o[q]+=o[q-1]}r+=this.data[q][1]}var p=Math.PI*2/o[o.length-1];for(var q=0;q<o.length;q++){t[q][1]=o[q]*p;t[q][2]=this.data[q][1]/r}this.gridData=t};e.jqplot.PieRenderer.prototype.makeGridData=function(s,t){var o=[];var u=[];var r=0;var n=this.startAngle/180*Math.PI;this._drawData=false;for(var q=0;q<s.length;q++){if(this.data[q][1]!=0){this._drawData=true}o.push(s[q][1]);u.push([s[q][0]]);if(q>0){o[q]+=o[q-1]}r+=s[q][1]}var p=Math.PI*2/o[o.length-1];for(var q=0;q<o.length;q++){u[q][1]=o[q]*p;u[q][2]=s[q][1]/r}return u};e.jqplot.PieRenderer.prototype.drawSlice=function(x,v,u,p,s){if(this._drawData){var n=this._diameter/2;var w=this.fill;var t=this.lineWidth;x.save();x.translate(this._center[0],this._center[1]);x.translate(this.sliceMargin*Math.cos((v+u)/2),this.sliceMargin*Math.sin((v+u)/2));if(s){for(var q=0;q<this.shadowDepth;q++){x.save();x.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI),this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI));o()}}else{o()}}function o(){if(u>6.282+this.startAngle){u=6.282+this.startAngle;if(v>u){v=6.281+this.startAngle}}if(v>=u){return}x.beginPath();x.fillStyle=p;x.strokeStyle=p;x.lineWidth=t;x.arc(0,0,n,v,u,false);x.lineTo(0,0);x.closePath();if(w){x.fill()}else{x.stroke()}}if(s){for(var q=0;q<this.shadowDepth;q++){x.restore()}}x.restore()};e.jqplot.PieRenderer.prototype.draw=function(N,V,u,P){var Q;var K=(u!=undefined)?u:{};var s=0;var q=0;var v=1;var n=new e.jqplot.ColorGenerator(this.seriesColors);if(u.legendInfo&&u.legendInfo.placement=="insideGrid"){var J=u.legendInfo;switch(J.location){case"nw":s=J.width+J.xoffset;break;case"w":s=J.width+J.xoffset;break;case"sw":s=J.width+J.xoffset;break;case"ne":s=J.width+J.xoffset;v=-1;break;case"e":s=J.width+J.xoffset;v=-1;break;case"se":s=J.width+J.xoffset;v=-1;break;case"n":q=J.height+J.yoffset;break;case"s":q=J.height+J.yoffset;v=-1;break;default:break}}var C=(K.shadow!=undefined)?K.shadow:this.shadow;var W=(K.showLine!=undefined)?K.showLine:this.showLine;var O=(K.fill!=undefined)?K.fill:this.fill;var t=N.canvas.width;var I=N.canvas.height;var H=t-s-2*this.padding;var R=I-q-2*this.padding;var z=Math.min(H,R);var T=z;this._diameter=this.diameter||T-this.sliceMargin;var L=this._radius=this._diameter/2;var p=this.startAngle/180*Math.PI;this._center=[(t-v*s)/2+v*s,(I-v*q)/2+v*q];if(this.shadow){var M="rgba(0,0,0,"+this.shadowAlpha+")";for(var Q=0;Q<V.length;Q++){var B=(Q==0)?p:V[Q-1][1]+p;B+=this.sliceMargin/180*Math.PI;this.renderer.drawSlice.call(this,N,B,V[Q][1]+p,M,true)}}for(var Q=0;Q<V.length;Q++){var B=(Q==0)?p:V[Q-1][1]+p;B+=this.sliceMargin/180*Math.PI;var A=V[Q][1]+p;this._sliceAngles.push([B,A]);this.renderer.drawSlice.call(this,N,B,A,n.next(),false);if(this.showDataLabels&&V[Q][2]*100>=this.dataLabelThreshold){var S,U=(B+A)/2,D;if(this.dataLabels=="label"){S=this.dataLabelFormatString||"%s";D=e.jqplot.sprintf(S,V[Q][0])}else{if(this.dataLabels=="value"){S=this.dataLabelFormatString||"%d";D=e.jqplot.sprintf(S,this.data[Q][1])}else{if(this.dataLabels=="percent"){S=this.dataLabelFormatString||"%d%%";D=e.jqplot.sprintf(S,V[Q][2]*100)}else{if(this.dataLabels.constructor==Array){S=this.dataLabelFormatString||"%s";D=e.jqplot.sprintf(S,this.dataLabels[Q])}}}}var o=(this._radius)*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var G=this._center[0]+Math.cos(U)*o+this.canvas._offsets.left;var F=this._center[1]+Math.sin(U)*o+this.canvas._offsets.top;var E=e('<div class="jqplot-pie-series jqplot-data-label" style="position:absolute;">'+D+"</div>").insertBefore(P.eventCanvas._elem);if(this.dataLabelCenterOn){G-=E.width()/2;F-=E.height()/2}else{G-=E.width()*Math.sin(U/2);F-=E.height()/2}G=Math.round(G);F=Math.round(F);E.css({left:G,top:F})}}};e.jqplot.PieAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.PieAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.PieAxisRenderer.prototype.constructor=e.jqplot.PieAxisRenderer;e.jqplot.PieAxisRenderer.prototype.init=function(n){this.tickRenderer=e.jqplot.PieTickRenderer;e.extend(true,this,n);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.PieLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.PieLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.PieLegendRenderer.prototype.constructor=e.jqplot.PieLegendRenderer;e.jqplot.PieLegendRenderer.prototype.init=function(n){this.numberRows=null;this.numberColumns=null;e.extend(true,this,n)};e.jqplot.PieLegendRenderer.prototype.draw=function(){var q=this;if(this.show){var y=this._series;var B="position:absolute;";B+=(this.background)?"background:"+this.background+";":"";B+=(this.border)?"border:"+this.border+";":"";B+=(this.fontSize)?"font-size:"+this.fontSize+";":"";B+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";B+=(this.textColor)?"color:"+this.textColor+";":"";B+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";B+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";B+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";B+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=e('<table class="jqplot-table-legend" style="'+B+'"></table>');var F=false,x=false,n,v;var z=y[0];var o=new e.jqplot.ColorGenerator(z.seriesColors);if(z.show){var G=z.data;if(this.numberRows){n=this.numberRows;if(!this.numberColumns){v=Math.ceil(G.length/n)}else{v=this.numberColumns}}else{if(this.numberColumns){v=this.numberColumns;n=Math.ceil(G.length/this.numberColumns)}else{n=G.length;v=1}}var E,D,p,t,r,u,w,C;var A=0;for(E=0;E<n;E++){if(x){p=e('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem)}else{p=e('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem)}for(D=0;D<v;D++){if(A<G.length){u=this.labels[A]||G[A][0].toString();C=o.next();if(!x){if(E>0){F=true}else{F=false}}else{if(E==n-1){F=false}else{F=true}}w=(F)?this.rowSpacing:"0";t=e('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+w+';"><div><div class="jqplot-table-legend-swatch" style="border-color:'+C+';"></div></div></td>');r=e('<td class="jqplot-table-legend" style="padding-top:'+w+';"></td>');if(this.escapeHtml){r.text(u)}else{r.html(u)}if(x){r.prependTo(p);t.prependTo(p)}else{t.appendTo(p);r.appendTo(p)}F=true}A++}}}}return this._elem};e.jqplot.PieRenderer.prototype.handleMove=function(p,o,s,r,q){if(r){var n=[r.seriesIndex,r.pointIndex,r.data];q.target.trigger("jqplotDataMouseOver",n);if(q.series[n[0]].highlightMouseOver&&!(n[0]==q.plugins.pieRenderer.highlightedSeriesIndex&&n[1]==q.series[n[0]]._highlightedPoint)){q.target.trigger("jqplotDataHighlight",n);d(q,n[0],n[1])}}else{if(r==null){j(q)}}};function c(r,q,o){o=o||{};o.axesDefaults=o.axesDefaults||{};o.legend=o.legend||{};o.seriesDefaults=o.seriesDefaults||{};var n=false;if(o.seriesDefaults.renderer==e.jqplot.PieRenderer){n=true}else{if(o.series){for(var p=0;p<o.series.length;p++){if(o.series[p].renderer==e.jqplot.PieRenderer){n=true}}}}if(n){o.axesDefaults.renderer=e.jqplot.PieAxisRenderer;o.legend.renderer=e.jqplot.PieLegendRenderer;o.legend.preDraw=true;o.seriesDefaults.pointLabels={show:false}}}function g(p,o,n){for(i=0;i<this.series.length;i++){if(this.series[i].renderer.constructor==e.jqplot.PieRenderer){if(this.series[i].highlightMouseOver){this.series[i].highlightMouseDown=false}}}this.target.bind("mouseout",{plot:this},function(q){j(q.data.plot)})}function l(n){for(var o=0;o<this.series.length;o++){this.series[o].seriesColors=this.seriesColors;this.series[o].colorGenerator=this.colorGenerator}}function d(r,q,p){var o=r.series[q];var n=r.plugins.pieRenderer.highlightCanvas;n._ctx.clearRect(0,0,n._ctx.canvas.width,n._ctx.canvas.height);o._highlightedPoint=p;r.plugins.pieRenderer.highlightedSeriesIndex=q;o.renderer.drawSlice.call(o,n._ctx,o._sliceAngles[p][0],o._sliceAngles[p][1],o.highlightColorGenerator.get(p),false)}function j(p){var n=p.plugins.pieRenderer.highlightCanvas;n._ctx.clearRect(0,0,n._ctx.canvas.width,n._ctx.canvas.height);for(var o=0;o<p.series.length;o++){p.series[o]._highlightedPoint=null}p.plugins.pieRenderer.highlightedSeriesIndex=null;p.target.trigger("jqplotDataUnhighlight")}function a(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];var o=jQuery.Event("jqplotDataMouseOver");o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p);if(s.series[p[0]].highlightMouseOver&&!(p[0]==s.plugins.pieRenderer.highlightedSeriesIndex&&p[1]==s.series[p[0]]._highlightedPoint)){var n=jQuery.Event("jqplotDataHighlight");n.pageX=r.pageX;n.pageY=r.pageY;s.target.trigger(n,p);d(s,p[0],p[1])}}else{if(t==null){j(s)}}}function b(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];if(r.series[o[0]].highlightMouseDown&&!(o[0]==r.plugins.pieRenderer.highlightedSeriesIndex&&o[1]==r.series[o[0]]._highlightedPoint)){var n=jQuery.Event("jqplotDataHighlight");n.pageX=q.pageX;n.pageY=q.pageY;r.target.trigger(n,o);d(r,o[0],o[1])}}else{if(s==null){j(r)}}}function k(p,o,s,r,q){var n=q.plugins.pieRenderer.highlightedSeriesIndex;if(n!=null&&q.series[n].highlightMouseDown){j(q)}}function f(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];var n=jQuery.Event("jqplotDataClick");n.pageX=q.pageX;n.pageY=q.pageY;r.target.trigger(n,o)}}function m(r,q,u,t,s){if(t){var p=[t.seriesIndex,t.pointIndex,t.data];var n=s.plugins.pieRenderer.highlightedSeriesIndex;if(n!=null&&s.series[n].highlightMouseDown){j(s)}var o=jQuery.Event("jqplotDataRightClick");o.pageX=r.pageX;o.pageY=r.pageY;s.target.trigger(o,p)}}function h(){this.plugins.pieRenderer={highlightedSeriesIndex:null};this.plugins.pieRenderer.highlightCanvas=new e.jqplot.GenericCanvas();var o=e(this.targetId+" .jqplot-data-label");if(o.length){e(o[0]).before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-pieRenderer-highlight-canvas",this._plotDimensions))}else{this.eventCanvas._elem.before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-pieRenderer-highlight-canvas",this._plotDimensions))}var n=this.plugins.pieRenderer.highlightCanvas.setContext()}e.jqplot.preInitHooks.push(c);e.jqplot.PieTickRenderer=function(){e.jqplot.AxisTickRenderer.call(this)};e.jqplot.PieTickRenderer.prototype=new e.jqplot.AxisTickRenderer();e.jqplot.PieTickRenderer.prototype.constructor=e.jqplot.PieTickRenderer})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.pointLabels.js Index: Site/Site_W/jpqplot/plugins/jqplot.pointLabels.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.pointLabels.js +++ Site/Site_W/jpqplot/plugins/jqplot.pointLabels.js @@ -0,0 +1,325 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + + /** + * Class: $.jqplot.PointLabels + * Plugin for putting labels at the data points. + * + * To use this plugin, include the js + * file in your source: + * + * > <script type="text/javascript" src="plugins/jqplot.pointLabels.js"></script> + * + * By default, the last value in the data ponit array in the data series is used + * for the label. For most series renderers, extra data can be added to the + * data point arrays and the last value will be used as the label. + * + * For instance, + * this series: + * + * > [[1,4], [3,5], [7,2]] + * + * Would, by default, use the y values in the labels. + * Extra data can be added to the series like so: + * + * > [[1,4,'mid'], [3 5,'hi'], [7,2,'low']] + * + * And now the point labels would be 'mid', 'low', and 'hi'. + * + * Options to the point labels and a custom labels array can be passed into the + * "pointLabels" option on the series option like so: + * + * > series:[{pointLabels:{ + * > labels:['mid', 'hi', 'low'], + * > location:'se', + * > ypadding: 12 + * > } + * > }] + * + * A custom labels array in the options takes precendence over any labels + * in the series data. If you have a custom labels array in the options, + * but still want to use values from the series array as labels, set the + * "labelsFromSeries" option to true. + * + * By default, html entities (<, >, etc.) are escaped in point labels. + * If you want to include actual html markup in the labels, + * set the "escapeHTML" option to false. + * + */ + $.jqplot.PointLabels = function(options) { + // Group: Properties + // + // prop: show + // show the labels or not. + this.show = $.jqplot.config.enablePlugins; + // prop: location + // compass location where to position the label around the point. + // 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw' + this.location = 'n'; + // prop: labelsFromSeries + // true to use labels within data point arrays. + this.labelsFromSeries = false; + // prop: seriesLabelIndex + // array index for location of labels within data point arrays. + // if null, will use the last element of the data point array. + this.seriesLabelIndex = null; + // prop: labels + // array of arrays of labels, one array for each series. + this.labels = []; + // actual labels that will get displayed. + // needed to preserve user specified labels in labels array. + this._labels = []; + // prop: stackedValue + // true to display value as stacked in a stacked plot. + // no effect if labels is specified. + this.stackedValue = false; + // prop: ypadding + // vertical padding in pixels between point and label + this.ypadding = 6; + // prop: xpadding + // horizontal padding in pixels between point and label + this.xpadding = 6; + // prop: escapeHTML + // true to escape html entities in the labels. + // If you want to include markup in the labels, set to false. + this.escapeHTML = true; + // prop: edgeTolerance + // Number of pixels that the label must be away from an axis + // boundary in order to be drawn. Negative values will allow overlap + // with the grid boundaries. + this.edgeTolerance = -5; + // prop: formatter + // A class of a formatter for the tick text. sprintf by default. + this.formatter = $.jqplot.DefaultTickFormatter; + // prop: formatString + // string passed to the formatter. + this.formatString = ''; + // prop: hideZeros + // true to not show a label for a value which is 0. + this.hideZeros = false; + this._elems = []; + + $.extend(true, this, options); + }; + + var locations = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w']; + var locationIndicies = {'nw':0, 'n':1, 'ne':2, 'e':3, 'se':4, 's':5, 'sw':6, 'w':7}; + var oppositeLocations = ['se', 's', 'sw', 'w', 'nw', 'n', 'ne', 'e']; + + // called with scope of a series + $.jqplot.PointLabels.init = function (target, data, seriesDefaults, opts){ + var options = $.extend(true, {}, seriesDefaults, opts); + options.pointLabels = options.pointLabels || {}; + if (this.renderer.constructor == $.jqplot.BarRenderer && this.barDirection == 'horizontal' && !options.pointLabels.location) { + options.pointLabels.location = 'e'; + } + // add a pointLabels attribute to the series plugins + this.plugins.pointLabels = new $.jqplot.PointLabels(options.pointLabels); + this.plugins.pointLabels.setLabels.call(this); + }; + + // called with scope of series + $.jqplot.PointLabels.prototype.setLabels = function() { + var p = this.plugins.pointLabels; + var labelIdx; + if (p.seriesLabelIndex != null) { + labelIdx = p.seriesLabelIndex; + } + else if (this.renderer.constructor == $.jqplot.BarRenderer && this.barDirection == 'horizontal') { + labelIdx = 0; + } + else { + labelIdx = this._plotData[0].length -1; + } + p._labels = []; + if (p.labels.length == 0 || p.labelsFromSeries) { + if (p.stackedValue) { + if (this._plotData.length && this._plotData[0].length){ + // var idx = p.seriesLabelIndex || this._plotData[0].length -1; + for (var i=0; i<this._plotData.length; i++) { + p._labels.push(this._plotData[i][labelIdx]); + } + } + } + else { + var d = this.data; + if (this.renderer.constructor == $.jqplot.BarRenderer && this.waterfall) { + d = this._data; + } + if (d.length && d[0].length) { + // var idx = p.seriesLabelIndex || d[0].length -1; + for (var i=0; i<d.length; i++) { + p._labels.push(d[i][labelIdx]); + } + } + } + } + else if (p.labels.length){ + p._labels = p.labels; + } + }; + + $.jqplot.PointLabels.prototype.xOffset = function(elem, location, padding) { + location = location || this.location; + padding = padding || this.xpadding; + var offset; + + switch (location) { + case 'nw': + offset = -elem.outerWidth(true) - this.xpadding; + break; + case 'n': + offset = -elem.outerWidth(true)/2; + break; + case 'ne': + offset = this.xpadding; + break; + case 'e': + offset = this.xpadding; + break; + case 'se': + offset = this.xpadding; + break; + case 's': + offset = -elem.outerWidth(true)/2; + break; + case 'sw': + offset = -elem.outerWidth(true) - this.xpadding; + break; + case 'w': + offset = -elem.outerWidth(true) - this.xpadding; + break; + default: // same as 'nw' + offset = -elem.outerWidth(true) - this.xpadding; + break; + } + return offset; + }; + + $.jqplot.PointLabels.prototype.yOffset = function(elem, location, padding) { + location = location || this.location; + padding = padding || this.xpadding; + var offset; + + switch (location) { + case 'nw': + offset = -elem.outerHeight(true) - this.ypadding; + break; + case 'n': + offset = -elem.outerHeight(true) - this.ypadding; + break; + case 'ne': + offset = -elem.outerHeight(true) - this.ypadding; + break; + case 'e': + offset = -elem.outerHeight(true)/2; + break; + case 'se': + offset = this.ypadding; + break; + case 's': + offset = this.ypadding; + break; + case 'sw': + offset = this.ypadding; + break; + case 'w': + offset = -elem.outerHeight(true)/2; + break; + default: // same as 'nw' + offset = -elem.outerHeight(true) - this.ypadding; + break; + } + return offset; + }; + + // called with scope of series + $.jqplot.PointLabels.draw = function (sctx, options) { + var p = this.plugins.pointLabels; + // set labels again in case they have changed. + p.setLabels.call(this); + // remove any previous labels + for (var i=0; i<p._elems.length; i++) { + p._elems[i].remove(); + } + if (p.show) { + var ax = '_'+this._stackAxis+'axis'; + + if (!p.formatString) { + p.formatString = this[ax]._ticks[0].formatString; + p.formatter = this[ax]._ticks[0].formatter; + } + + var pd = this._plotData; + var xax = this._xaxis; + var yax = this._yaxis; + + for (var i=p._labels.length-1; i>=0; i--) { + var label = p._labels[i]; + + if (p.hideZeros && parseInt(p._labels[i], 10) == 0) { + label = ''; + } + + if (label != null) { + label = p.formatter(p.formatString, label); + } + var elem = $('<div class="jqplot-point-label jqplot-series-'+this.index+' jqplot-point-'+i+'" style="position:absolute"></div>'); + elem.insertAfter(sctx.canvas); + p._elems.push(elem); + if (p.escapeHTML) { + elem.text(label); + } + else { + elem.html(label); + } + var location = p.location; + if (this.waterfall && parseInt(label, 10) < 0) { + location = oppositeLocations[locationIndicies[location]]; + } + var ell = xax.u2p(pd[i][0]) + p.xOffset(elem, location); + var elt = yax.u2p(pd[i][1]) + p.yOffset(elem, location); + if (this.renderer.constructor == $.jqplot.BarRenderer) { + if (this.barDirection == "vertical") { + ell += this._barNudge; + } + else { + elt -= this._barNudge; + } + } + elem.css('left', ell); + elem.css('top', elt); + var elr = ell + $(elem).width(); + var elb = elt + $(elem).height(); + var et = p.edgeTolerance; + var scl = $(sctx.canvas).position().left; + var sct = $(sctx.canvas).position().top; + var scr = sctx.canvas.width + scl; + var scb = sctx.canvas.height + sct; + // if label is outside of allowed area, remove it + if (ell - et < scl || elt - et < sct || elr + et > scr || elb + et > scb) { + $(elem).detach(); + } + } + } + }; + + $.jqplot.postSeriesInitHooks.push($.jqplot.PointLabels.init); + $.jqplot.postDrawSeriesHooks.push($.jqplot.PointLabels.draw); +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.pointLabels.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.pointLabels.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.pointLabels.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.pointLabels.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(c){c.jqplot.PointLabels=function(e){this.show=c.jqplot.config.enablePlugins;this.location="n";this.labelsFromSeries=false;this.seriesLabelIndex=null;this.labels=[];this._labels=[];this.stackedValue=false;this.ypadding=6;this.xpadding=6;this.escapeHTML=true;this.edgeTolerance=-5;this.formatter=c.jqplot.DefaultTickFormatter;this.formatString="";this.hideZeros=false;this._elems=[];c.extend(true,this,e)};var a=["nw","n","ne","e","se","s","sw","w"];var d={nw:0,n:1,ne:2,e:3,se:4,s:5,sw:6,w:7};var b=["se","s","sw","w","nw","n","ne","e"];c.jqplot.PointLabels.init=function(i,h,f,g){var e=c.extend(true,{},f,g);e.pointLabels=e.pointLabels||{};if(this.renderer.constructor==c.jqplot.BarRenderer&&this.barDirection=="horizontal"&&!e.pointLabels.location){e.pointLabels.location="e"}this.plugins.pointLabels=new c.jqplot.PointLabels(e.pointLabels);this.plugins.pointLabels.setLabels.call(this)};c.jqplot.PointLabels.prototype.setLabels=function(){var f=this.plugins.pointLabels;var h;if(f.seriesLabelIndex!=null){h=f.seriesLabelIndex}else{if(this.renderer.constructor==c.jqplot.BarRenderer&&this.barDirection=="horizontal"){h=0}else{h=this._plotData[0].length-1}}f._labels=[];if(f.labels.length==0||f.labelsFromSeries){if(f.stackedValue){if(this._plotData.length&&this._plotData[0].length){for(var e=0;e<this._plotData.length;e++){f._labels.push(this._plotData[e][h])}}}else{var g=this.data;if(this.renderer.constructor==c.jqplot.BarRenderer&&this.waterfall){g=this._data}if(g.length&&g[0].length){for(var e=0;e<g.length;e++){f._labels.push(g[e][h])}}}}else{if(f.labels.length){f._labels=f.labels}}};c.jqplot.PointLabels.prototype.xOffset=function(f,e,g){e=e||this.location;g=g||this.xpadding;var h;switch(e){case"nw":h=-f.outerWidth(true)-this.xpadding;break;case"n":h=-f.outerWidth(true)/2;break;case"ne":h=this.xpadding;break;case"e":h=this.xpadding;break;case"se":h=this.xpadding;break;case"s":h=-f.outerWidth(true)/2;break;case"sw":h=-f.outerWidth(true)-this.xpadding;break;case"w":h=-f.outerWidth(true)-this.xpadding;break;default:h=-f.outerWidth(true)-this.xpadding;break}return h};c.jqplot.PointLabels.prototype.yOffset=function(f,e,g){e=e||this.location;g=g||this.xpadding;var h;switch(e){case"nw":h=-f.outerHeight(true)-this.ypadding;break;case"n":h=-f.outerHeight(true)-this.ypadding;break;case"ne":h=-f.outerHeight(true)-this.ypadding;break;case"e":h=-f.outerHeight(true)/2;break;case"se":h=this.ypadding;break;case"s":h=this.ypadding;break;case"sw":h=this.ypadding;break;case"w":h=-f.outerHeight(true)/2;break;default:h=-f.outerHeight(true)-this.ypadding;break}return h};c.jqplot.PointLabels.draw=function(t,h){var r=this.plugins.pointLabels;r.setLabels.call(this);for(var s=0;s<r._elems.length;s++){r._elems[s].remove()}if(r.show){var o="_"+this._stackAxis+"axis";if(!r.formatString){r.formatString=this[o]._ticks[0].formatString;r.formatter=this[o]._ticks[0].formatter}var z=this._plotData;var w=this._xaxis;var n=this._yaxis;for(var s=r._labels.length-1;s>=0;s--){var m=r._labels[s];if(r.hideZeros&&parseInt(r._labels[s],10)==0){m=""}if(m!=null){m=r.formatter(r.formatString,m)}var v=c('<div class="jqplot-point-label jqplot-series-'+this.index+" jqplot-point-"+s+'" style="position:absolute"></div>');v.insertAfter(t.canvas);r._elems.push(v);if(r.escapeHTML){v.text(m)}else{v.html(m)}var f=r.location;if(this.waterfall&&parseInt(m,10)<0){f=b[d[f]]}var l=w.u2p(z[s][0])+r.xOffset(v,f);var g=n.u2p(z[s][1])+r.yOffset(v,f);if(this.renderer.constructor==c.jqplot.BarRenderer){if(this.barDirection=="vertical"){l+=this._barNudge}else{g-=this._barNudge}}v.css("left",l);v.css("top",g);var j=l+c(v).width();var q=g+c(v).height();var y=r.edgeTolerance;var e=c(t.canvas).position().left;var u=c(t.canvas).position().top;var x=t.canvas.width+e;var k=t.canvas.height+u;if(l-y<e||g-y<u||j+y>x||q+y>k){c(v).detach()}}}};c.jqplot.postSeriesInitHooks.push(c.jqplot.PointLabels.init);c.jqplot.postDrawSeriesHooks.push(c.jqplot.PointLabels.draw)})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.trendline.js Index: Site/Site_W/jpqplot/plugins/jqplot.trendline.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.trendline.js +++ Site/Site_W/jpqplot/plugins/jqplot.trendline.js @@ -0,0 +1,208 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php . This is, of course, + * not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * Thanks for using jqPlot! + * + */ +(function($) { + + /** + * Class: $.jqplot.Trendline + * Plugin which will automatically compute and draw trendlines for plotted data. + */ + $.jqplot.Trendline = function() { + // Group: Properties + + // prop: show + // Wether or not to show the trend line. + this.show = $.jqplot.config.enablePlugins; + // prop: color + // CSS color spec for the trend line. + // By default this wil be the same color as the primary line. + this.color = '#666666'; + // prop: renderer + // Renderer to use to draw the trend line. + // The data series that is plotted may not be rendered as a line. + // Therefore, we use our own line renderer here to draw a trend line. + this.renderer = new $.jqplot.LineRenderer(); + // prop: rendererOptions + // Options to pass to the line renderer. + // By default, markers are not shown on trend lines. + this.rendererOptions = {marker:{show:false}}; + // prop: label + // Label for the trend line to use in the legend. + this.label = ''; + // prop: type + // Either 'exponential', 'exp', or 'linear'. + this.type = 'linear'; + // prop: shadow + // true or false, wether or not to show the shadow. + this.shadow = true; + // prop: markerRenderer + // Renderer to use to draw markers on the line. + // I think this is wrong. + this.markerRenderer = {show:false}; + // prop: lineWidth + // Width of the trend line. + this.lineWidth = 1.5; + // prop: shadowAngle + // Angle of the shadow on the trend line. + this.shadowAngle = 45; + // prop: shadowOffset + // pixel offset for each stroke of the shadow. + this.shadowOffset = 1.0; + // prop: shadowAlpha + // Alpha transparency of the shadow. + this.shadowAlpha = 0.07; + // prop: shadowDepth + // number of strokes to make of the shadow. + this.shadowDepth = 3; + this.isTrendline = true; + + }; + + $.jqplot.postSeriesInitHooks.push(parseTrendLineOptions); + $.jqplot.postDrawSeriesHooks.push(drawTrendline); + $.jqplot.addLegendRowHooks.push(addTrendlineLegend); + + // called witin scope of the legend object + // current series passed in + // must return null or an object {label:label, color:color} + function addTrendlineLegend(series) { + var lt = series.trendline.label.toString(); + var ret = null; + if (this.renderer.constructor != $.jqplot.PieRenderer && series.trendline.show && lt) { + ret = {label:lt, color:series.trendline.color}; + } + return ret; + } + + // called within scope of a series + function parseTrendLineOptions (target, data, seriesDefaults, options, plot) { + if (this.renderer.constructor == $.jqplot.LineRenderer) { + this.trendline = new $.jqplot.Trendline(); + options = options || {}; + $.extend(true, this.trendline, {color:this.color}, seriesDefaults.trendline, options.trendline); + this.trendline.renderer.init.call(this.trendline, null); + } + } + + // called within scope of series object + function drawTrendline(sctx, options) { + // if we have options, merge trendline options in with precedence + options = $.extend(true, {}, this.trendline, options); + + if (options.show && this.renderer.constructor != $.jqplot.PieRenderer) { + var fit; + // this.renderer.setGridData.call(this); + var data = options.data || this.data; + fit = fitData(data, this.trendline.type); + var gridData = options.gridData || this.renderer.makeGridData.call(this, fit.data); + this.trendline.renderer.draw.call(this.trendline, sctx, gridData, {showLine:true, shadow:this.trendline.shadow}); + } + } + + function regression(x, y, typ) { + var type = (typ == null) ? 'linear' : typ; + var N = x.length; + var slope; + var intercept; + var SX = 0; + var SY = 0; + var SXX = 0; + var SXY = 0; + var SYY = 0; + var Y = []; + var X = []; + + if (type == 'linear') { + X = x; + Y = y; + } + else if (type == 'exp' || type == 'exponential') { + for ( var i=0; i<y.length; i++) { + // ignore points <= 0, log undefined. + if (y[i] <= 0) { + N--; + } + else { + X.push(x[i]); + Y.push(Math.log(y[i])); + } + } + } + + for ( var i = 0; i < N; i++) { + SX = SX + X[i]; + SY = SY + Y[i]; + SXY = SXY + X[i]* Y[i]; + SXX = SXX + X[i]* X[i]; + SYY = SYY + Y[i]* Y[i]; + } + + slope = (N*SXY - SX*SY)/(N*SXX - SX*SX); + intercept = (SY - slope*SX)/N; + + return [slope, intercept]; + } + + function linearRegression(X,Y) { + var ret; + ret = regression(X,Y,'linear'); + return [ret[0],ret[1]]; + } + + function expRegression(X,Y) { + var ret; + var x = X; + var y = Y; + ret = regression(x, y,'exp'); + var base = Math.exp(ret[0]); + var coeff = Math.exp(ret[1]); + return [base, coeff]; + } + + function fitData(data, typ) { + var type = (typ == null) ? 'linear' : typ; + var ret; + var res; + var x = []; + var y = []; + var ypred = []; + + for (i=0; i<data.length; i++){ + if (data[i] != null && data[i][0] != null && data[i][1] != null) { + x.push(data[i][0]); + y.push(data[i][1]); + } + } + + if (type == 'linear') { + ret = linearRegression(x,y); + for ( var i=0; i<x.length; i++){ + res = ret[0]*x[i] + ret[1]; + ypred.push([x[i], res]); + } + } + else if (type == 'exp' || type == 'exponential') { + ret = expRegression(x,y); + for ( var i=0; i<x.length; i++){ + res = ret[1]*Math.pow(ret[0],x[i]); + ypred.push([x[i], res]); + } + } + return {data: ypred, slope: ret[0], intercept: ret[1]}; + } + +})(jQuery); ADDED Site/Site_W/jpqplot/plugins/jqplot.trendline.min.js Index: Site/Site_W/jpqplot/plugins/jqplot.trendline.min.js ================================================================== --- Site/Site_W/jpqplot/plugins/jqplot.trendline.min.js +++ Site/Site_W/jpqplot/plugins/jqplot.trendline.min.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2009 - 2010 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * jqPlot includes date instance methods and printf/sprintf functions by other authors: + * + * Date instance methods contained in jqplot.dateMethods.js: + * + * author Ken Snyder (ken d snyder at gmail dot com) + * date 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * license Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * JavaScript printf/sprintf functions contained in jqplot.sprintf.js: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function(f){f.jqplot.Trendline=function(){this.show=f.jqplot.config.enablePlugins;this.color="#666666";this.renderer=new f.jqplot.LineRenderer();this.rendererOptions={marker:{show:false}};this.label="";this.type="linear";this.shadow=true;this.markerRenderer={show:false};this.lineWidth=1.5;this.shadowAngle=45;this.shadowOffset=1;this.shadowAlpha=0.07;this.shadowDepth=3;this.isTrendline=true};f.jqplot.postSeriesInitHooks.push(e);f.jqplot.postDrawSeriesHooks.push(g);f.jqplot.addLegendRowHooks.push(a);function a(k){var i=k.trendline.label.toString();var j=null;if(this.renderer.constructor!=f.jqplot.PieRenderer&&k.trendline.show&&i){j={label:i,color:k.trendline.color}}return j}function e(m,k,j,i,l){if(this.renderer.constructor==f.jqplot.LineRenderer){this.trendline=new f.jqplot.Trendline();i=i||{};f.extend(true,this.trendline,{color:this.color},j.trendline,i.trendline);this.trendline.renderer.init.call(this.trendline,null)}}function g(m,i){i=f.extend(true,{},this.trendline,i);if(i.show&&this.renderer.constructor!=f.jqplot.PieRenderer){var k;var l=i.data||this.data;k=c(l,this.trendline.type);var j=i.gridData||this.renderer.makeGridData.call(this,k.data);this.trendline.renderer.draw.call(this.trendline,m,j,{showLine:true,shadow:this.trendline.shadow})}}function b(w,v,n){var u=(n==null)?"linear":n;var s=w.length;var t;var z;var o=0;var m=0;var r=0;var q=0;var l=0;var j=[];var k=[];if(u=="linear"){k=w;j=v}else{if(u=="exp"||u=="exponential"){for(var p=0;p<v.length;p++){if(v[p]<=0){s--}else{k.push(w[p]);j.push(Math.log(v[p]))}}}}for(var p=0;p<s;p++){o=o+k[p];m=m+j[p];q=q+k[p]*j[p];r=r+k[p]*k[p];l=l+j[p]*j[p]}t=(s*q-o*m)/(s*r-o*o);z=(m-t*o)/s;return[t,z]}function h(k,j){var i;i=b(k,j,"linear");return[i[0],i[1]]}function d(o,m){var k;var i=o;var n=m;k=b(i,n,"exp");var l=Math.exp(k[0]);var j=Math.exp(k[1]);return[l,j]}function c(l,j){var p=(j==null)?"linear":j;var n;var o;var r=[];var q=[];var m=[];for(k=0;k<l.length;k++){if(l[k]!=null&&l[k][0]!=null&&l[k][1]!=null){r.push(l[k][0]);q.push(l[k][1])}}if(p=="linear"){n=h(r,q);for(var k=0;k<r.length;k++){o=n[0]*r[k]+n[1];m.push([r[k],o])}}else{if(p=="exp"||p=="exponential"){n=d(r,q);for(var k=0;k<r.length;k++){o=n[1]*Math.pow(n[0],r[k]);m.push([r[k],o])}}}return{data:m,slope:n[0],intercept:n[1]}}})(jQuery); ADDED Site/Site_W/jpqplot/usage.txt Index: Site/Site_W/jpqplot/usage.txt ================================================================== --- Site/Site_W/jpqplot/usage.txt +++ Site/Site_W/jpqplot/usage.txt @@ -0,0 +1,125 @@ +Title: jqPlot Usage + +Usage Documentation: + +Introduction: + +jqPlot is a jQuery plugin to generate pure client-side javascript charts in your web pages. + +The jqPlot home page is at <http://www.jqplot.com/>. + +The project page and downloads are at <http://www.bitbucket.org/cleonello/jqplot/>. + +Below are a few examples to demonstrate jqPlot usage. These plots are shown as static images. +Many more examples of dynamically rendered plots can be seen on the test and examples pages here: <../../tests/>. + +Include the Files: + +jqPlot requires jQuery (1.4+ required for certain features). jQuery 1.4.1 is included in the distribution. +To use jqPlot include jquery, the jqPlot jQuery plugin, jqPlot css file and optionally the excanvas +script for IE support in your web page: + +> <!--[if IE]><script language="javascript" type="text/javascript" src="excanvas.js"></script><![endif]--> +> <script language="javascript" type="text/javascript" src="jquery-1.4.2.min.js"></script> +> <script language="javascript" type="text/javascript" src="jquery.jqplot.min.js"></script> +> <link rel="stylesheet" type="text/css" href="jquery.jqplot.css" /> + +Add a plot container: + +Add a container (target) to your web page where you want your plot to show up. +Be sure to give your target a width and a height: + +> <div id="chartdiv" style="height:400px;width:300px; "></div> + +Create a plot: + +Then, create the actual plot by calling the +$.jqplot plugin with the id of your target and some data: + +> $.jqplot('chartdiv', [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]]); + +Which will produce a +chart like: + +(see images/basicline.png) + +Plot Options: + +You can customize the plot by passing options to the $.jqplot function. Options are described in +<jqPlot Options> in the jqPlotOptions.txt file. An example of options usage: + +> $.jqplot('chartdiv', [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]], +> { title:'Exponential Line', +> axes:{yaxis:{min:-10, max:240}}, +> series:[{color:'#5FAB78'}] +> }); + +Which will produce +a plot like: + +(see images/basicoptions.png) + +Using Plugins: + +You can use jqPlot plugins (that is, plugins to the jqPlot plugin) by including them in your html +after you include the jqPlot plugin. Here is how to include the log axis plugin: + +> <link rel="stylesheet" type="text/css" href="jquery.jqplot.css" /> +> <!--[if IE]><script language="javascript" type="text/javascript" src="excanvas.js"></script><![endif]--> +> <script language="javascript" type="text/javascript" src="jquery-1.4.2.min.js"></script> +> <script language="javascript" type="text/javascript" src="jquery.jqplot.min.js"></script> +> <script language="javascript" type="text/javascript" src="jqplot.logAxisRenderer.js"></script> + +Important note: For jqplot builds r529 and above (0.9.7r529 and higher), you must explicitly +enable plugins via either the { show: true } plugin option to the plot or by using +the $.jqplot.config.enablePlugins = true; config options set on the page before plot creation. +Only plugins that can be immediately active upon loading are affected. This includes +non-renderer plugins like cursor, dragable, highlighter, and trendline. + +Here is a the same $.jqplot call +but with a log y axis: + +> $.jqplot('chartdiv', [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]], +> { title:'Exponential Line', +> axes:{yaxis:{renderer: $.jqplot.LogAxisRenderer}}, +> series:[{color:'#5FAB78'}] +> }); + +Which produces +a plot like: + +(see images/basiclogaxis.png) + +You can further customize with options specific +to the log axis plugin: + +> $.jqplot('chartdiv', [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]], +> { title:'Exponential Line', +> axes:{yaxis:{renderer: $.jqplot.LogAxisRenderer, tickDistribution:'power'}}, +> series:[{color:'#5FAB78'}] +> }); + +Which makes a +plot like: + +(see images/basiclogoptions.png) + +For a full list of options, see <jqPlot Options> in the jqPlotOptions.txt file. + +You can add as many plugins as you wish. Order is generally not important. +Some plugins, like the highlighter plugin which highlights data points near the +mouse, don't need any extra options or setup to function. Highlighter does have +additional options which the user can set. + +Other plugins, the barRenderer for example, provide functionality the must be specified +in the chart options object. To render a series as a bar graph with the bar renderer, +you would first include the plugin after jqPlot: + +> <script language="javascript" type="text/javascript" src="plugins/jqplot.barRenderer.min.js"></script> + +Then you would create +a chart like: + +> $.jqplot('chartdiv', [[34.53, 56.32, 25.1, 18.6]], {series:[{renderer:$.jqplot.BarRenderer}]}); + +Here the default LineRenderer is replaced by a BarRenderer to generate a bar graph for the first (an only) series. ADDED Site/Site_W/jquery.flot.js Index: Site/Site_W/jquery.flot.js ================================================================== --- Site/Site_W/jquery.flot.js +++ Site/Site_W/jquery.flot.js @@ -0,0 +1,2119 @@ +/* Javascript plotting library for jQuery, v. 0.6. + * + * Released under the MIT license by IOLA, December 2007. + * + */ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.0. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() work in-place instead of returning + * new objects. + */ +(function(){jQuery.color={};jQuery.color.make=function(E,D,B,C){var F={};F.r=E||0;F.g=D||0;F.b=B||0;F.a=C!=null?C:1;F.add=function(I,H){for(var G=0;G<I.length;++G){F[I.charAt(G)]+=H}return F.normalize()};F.scale=function(I,H){for(var G=0;G<I.length;++G){F[I.charAt(G)]*=H}return F.normalize()};F.toString=function(){if(F.a>=1){return"rgb("+[F.r,F.g,F.b].join(",")+")"}else{return"rgba("+[F.r,F.g,F.b,F.a].join(",")+")"}};F.normalize=function(){function G(I,J,H){return J<I?I:(J>H?H:J)}F.r=G(0,parseInt(F.r),255);F.g=G(0,parseInt(F.g),255);F.b=G(0,parseInt(F.b),255);F.a=G(0,F.a,1);return F};F.clone=function(){return jQuery.color.make(F.r,F.b,F.g,F.a)};return F.normalize()};jQuery.color.extract=function(C,B){var D;do{D=C.css(B).toLowerCase();if(D!=""&&D!="transparent"){break}C=C.parent()}while(!jQuery.nodeName(C.get(0),"body"));if(D=="rgba(0, 0, 0, 0)"){D="transparent"}return jQuery.color.parse(D)};jQuery.color.parse=function(E){var D,B=jQuery.color.make;if(D=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(E)){return B(parseInt(D[1],10),parseInt(D[2],10),parseInt(D[3],10))}if(D=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E)){return B(parseInt(D[1],10),parseInt(D[2],10),parseInt(D[3],10),parseFloat(D[4]))}if(D=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(E)){return B(parseFloat(D[1])*2.55,parseFloat(D[2])*2.55,parseFloat(D[3])*2.55)}if(D=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E)){return B(parseFloat(D[1])*2.55,parseFloat(D[2])*2.55,parseFloat(D[3])*2.55,parseFloat(D[4]))}if(D=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(E)){return B(parseInt(D[1],16),parseInt(D[2],16),parseInt(D[3],16))}if(D=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(E)){return B(parseInt(D[1]+D[1],16),parseInt(D[2]+D[2],16),parseInt(D[3]+D[3],16))}var C=jQuery.trim(E).toLowerCase();if(C=="transparent"){return B(255,255,255,0)}else{D=A[C];return B(D[0],D[1],D[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(); + +// the actual Flot code +(function($) { + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#FF0000", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85 // set to 0 to avoid background + }, + xaxis: { + mode: null, // null or "time" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + + // mode specific options + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null, // number or [number, "unit"] + monthNames: null, // list of names of months + timeformat: null, // format string to use + twelveHourClock: false // 12 or 24 time in time mode + }, + yaxis: { + autoscaleMargin: 0.02 + }, + x2axis: { + autoscaleMargin: null + }, + y2axis: { + autoscaleMargin: 0.02 + }, + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff" + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // or "center" + horizontal: false // when horizontal, left is now top + }, + shadowSize: 3 + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + tickColor: "rgba(0,0,0,0.15)", // color used for the ticks + labelMargin: 5, // in pixels + borderWidth: 2, // in pixels + borderColor: null, // set if different from the grid color + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + hooks: {} + }, + canvas = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + axes = { xaxis: {}, yaxis: {}, x2axis: {}, y2axis: {} }, + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + canvasWidth = 0, canvasHeight = 0, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + draw: [], + bindEvents: [], + drawOverlay: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return canvas; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function() { return series; }; + plot.getAxes = function() { return axes; }; + plot.getOptions = function() { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { left: parseInt(axisSpecToRealAxis(point, "xaxis").p2c(+point.x) + plotOffset.left), + top: parseInt(axisSpecToRealAxis(point, "yaxis").p2c(+point.y) + plotOffset.top) }; + }; + + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + constructCanvas(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + $.extend(true, options, opts); + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize) + options.series.shadowSize = options.shadowSize; + + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisSpecToRealAxis(obj, attr) { + var a = obj[attr]; + if (!a || a == 1) + return axes[attr]; + if (typeof a == "number") + return axes[attr.charAt(0) + a + attr.slice(1)]; + return a; // assume it's OK + } + + function fillInSeriesOptions() { + var i; + + // collect what we already got of colors + var neededColors = series.length, + usedColors = [], + assignedColors = []; + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + --neededColors; + if (typeof sc == "number") + assignedColors.push(sc); + else + usedColors.push($.color.parse(series[i].color)); + } + } + + // we might need to generate more colors if higher indices + // are assigned + for (i = 0; i < assignedColors.length; ++i) { + neededColors = Math.max(neededColors, assignedColors[i] + 1); + } + + // produce colors as needed + var colors = [], variation = 0; + i = 0; + while (colors.length < neededColors) { + var c; + if (options.colors.length == i) // check degenerate case + c = $.color.make(100, 100, 100); + else + c = $.color.parse(options.colors[i]); + + // vary color if needed + var sign = variation % 2 == 1 ? -1 : 1; + c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2) + + // FIXME: if we're getting to close to something else, + // we should probably skip this one + colors.push(c); + + ++i; + if (i >= options.colors.length) { + i = 0; + ++variation; + } + } + + // fill in the options + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // setup axes + s.xaxis = axisSpecToRealAxis(s, "xaxis"); + s.yaxis = axisSpecToRealAxis(s, "yaxis"); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p; + + for (axis in axes) { + axes[axis].datamin = topSentry; + axes[axis].datamax = bottomSentry; + axes[axis].used = false; + } + + function updateAxis(axis, min, max) { + if (min < axis.datamin) + axis.datamin = min; + if (max > axis.datamax) + axis.datamax = max; + } + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + var data = s.data, format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show) + format.push({ y: true, number: true, required: false, defaultValue: 0 }); + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + if (s.datapoints.pointsize == null) + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.x) + updateAxis(s.xaxis, val, val); + if (f.y) + updateAxis(s.yaxis, val, val); + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points, + ps = s.datapoints.pointsize; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta = s.bars.align == "left" ? 0 : -s.bars.barWidth/2; + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + for (axis in axes) { + if (axes[axis].datamin == topSentry) + axes[axis].datamin = null; + if (axes[axis].datamax == bottomSentry) + axes[axis].datamax = null; + } + } + + function constructCanvas() { + function makeCanvas(width, height) { + var c = document.createElement('canvas'); + c.width = width; + c.height = height; + if ($.browser.msie) // excanvas hack + c = window.G_vmlCanvasManager.initElement(c); + return c; + } + + canvasWidth = placeholder.width(); + canvasHeight = placeholder.height(); + placeholder.html(""); // clear placeholder + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + if (canvasWidth <= 0 || canvasHeight <= 0) + throw "Invalid dimensions for plot, width = " + canvasWidth + ", height = " + canvasHeight; + + if ($.browser.msie) // excanvas hack + window.G_vmlCanvasManager.init_(document); // make sure everything is setup + + // the canvas + canvas = $(makeCanvas(canvasWidth, canvasHeight)).appendTo(placeholder).get(0); + ctx = canvas.getContext("2d"); + + // overlay canvas for interactive features + overlay = $(makeCanvas(canvasWidth, canvasHeight)).css({ position: 'absolute', left: 0, top: 0 }).appendTo(placeholder).get(0); + octx = overlay.getContext("2d"); + octx.stroke(); + } + + function bindEvents() { + // we include the canvas in the event holder too, because IE 7 + // sometimes has trouble with the stacking order + eventHolder = $([overlay, canvas]); + + // bind events + if (options.grid.hoverable) + eventHolder.mousemove(onMouseMove); + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function setupGrid() { + function setTransformationHelpers(axis, o) { + function identity(x) { return x; } + + var s, m, t = o.transform || identity, + it = o.inverseTransform; + + // add transformation helpers + if (axis == axes.xaxis || axis == axes.x2axis) { + // precompute how much the axis is scaling a point + // in canvas space + s = axis.scale = plotWidth / (t(axis.max) - t(axis.min)); + m = t(axis.min); + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + else { + s = axis.scale = plotHeight / (t(axis.max) - t(axis.min)); + m = t(axis.max); + + if (t == identity) + axis.p2c = function (p) { return (m - p) * s; }; + else + axis.p2c = function (p) { return (m - t(p)) * s; }; + if (!it) + axis.c2p = function (c) { return m - c / s; }; + else + axis.c2p = function (c) { return it(m - c / s); }; + } + } + + function measureLabels(axis, axisOptions) { + var i, labels = [], l; + + axis.labelWidth = axisOptions.labelWidth; + axis.labelHeight = axisOptions.labelHeight; + + if (axis == axes.xaxis || axis == axes.x2axis) { + // to avoid measuring the widths of the labels, we + // construct fixed-size boxes and put the labels inside + // them, we don't need the exact figures and the + // fixed-size box content is easy to center + if (axis.labelWidth == null) + axis.labelWidth = canvasWidth / (axis.ticks.length > 0 ? axis.ticks.length : 1); + + // measure x label heights + if (axis.labelHeight == null) { + labels = []; + for (i = 0; i < axis.ticks.length; ++i) { + l = axis.ticks[i].label; + if (l) + labels.push('<div class="tickLabel" style="float:left;width:' + axis.labelWidth + 'px">' + l + '</div>'); + } + + if (labels.length > 0) { + var dummyDiv = $('<div style="position:absolute;top:-10000px;width:10000px;font-size:smaller">' + + labels.join("") + '<div style="clear:left"></div></div>').appendTo(placeholder); + axis.labelHeight = dummyDiv.height(); + dummyDiv.remove(); + } + } + } + else if (axis.labelWidth == null || axis.labelHeight == null) { + // calculate y label dimensions + for (i = 0; i < axis.ticks.length; ++i) { + l = axis.ticks[i].label; + if (l) + labels.push('<div class="tickLabel">' + l + '</div>'); + } + + if (labels.length > 0) { + var dummyDiv = $('<div style="position:absolute;top:-10000px;font-size:smaller">' + + labels.join("") + '</div>').appendTo(placeholder); + if (axis.labelWidth == null) + axis.labelWidth = dummyDiv.width(); + if (axis.labelHeight == null) + axis.labelHeight = dummyDiv.find("div").height(); + dummyDiv.remove(); + } + + } + + if (axis.labelWidth == null) + axis.labelWidth = 0; + if (axis.labelHeight == null) + axis.labelHeight = 0; + } + + function setGridSpacing() { + // get the most space needed around the grid for things + // that may stick out + var maxOutset = options.grid.borderWidth; + for (i = 0; i < series.length; ++i) + maxOutset = Math.max(maxOutset, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + + plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = maxOutset; + + var margin = options.grid.labelMargin + options.grid.borderWidth; + + if (axes.xaxis.labelHeight > 0) + plotOffset.bottom = Math.max(maxOutset, axes.xaxis.labelHeight + margin); + if (axes.yaxis.labelWidth > 0) + plotOffset.left = Math.max(maxOutset, axes.yaxis.labelWidth + margin); + if (axes.x2axis.labelHeight > 0) + plotOffset.top = Math.max(maxOutset, axes.x2axis.labelHeight + margin); + if (axes.y2axis.labelWidth > 0) + plotOffset.right = Math.max(maxOutset, axes.y2axis.labelWidth + margin); + + plotWidth = canvasWidth - plotOffset.left - plotOffset.right; + plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top; + } + + var axis; + for (axis in axes) + setRange(axes[axis], options[axis]); + + if (options.grid.show) { + for (axis in axes) { + prepareTickGeneration(axes[axis], options[axis]); + setTicks(axes[axis], options[axis]); + measureLabels(axes[axis], options[axis]); + } + + setGridSpacing(); + } + else { + plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0; + plotWidth = canvasWidth; + plotHeight = canvasHeight; + } + + for (axis in axes) + setTransformationHelpers(axes[axis], options[axis]); + + if (options.grid.show) + insertLabels(); + + insertLegend(); + } + + function setRange(axis, axisOptions) { + var min = +(axisOptions.min != null ? axisOptions.min : axis.datamin), + max = +(axisOptions.max != null ? axisOptions.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (axisOptions.min == null) + min -= widen; + // alway widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (axisOptions.max == null || axisOptions.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = axisOptions.autoscaleMargin; + if (margin != null) { + if (axisOptions.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (axisOptions.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function prepareTickGeneration(axis, axisOptions) { + // estimate number of ticks + var noTicks; + if (typeof axisOptions.ticks == "number" && axisOptions.ticks > 0) + noTicks = axisOptions.ticks; + else if (axis == axes.xaxis || axis == axes.x2axis) + // heuristic based on the model a*sqrt(x) fitted to + // some reasonable data points + noTicks = 0.3 * Math.sqrt(canvasWidth); + else + noTicks = 0.3 * Math.sqrt(canvasHeight); + + var delta = (axis.max - axis.min) / noTicks, + size, generator, unit, formatter, i, magn, norm; + + if (axisOptions.mode == "time") { + // pretty handling of time + + // map of app. size of time units in milliseconds + var timeUnitSize = { + "second": 1000, + "minute": 60 * 1000, + "hour": 60 * 60 * 1000, + "day": 24 * 60 * 60 * 1000, + "month": 30 * 24 * 60 * 60 * 1000, + "year": 365.2425 * 24 * 60 * 60 * 1000 + }; + + + // the allowed tick sizes, after 1 year we use + // an integer algorithm + var spec = [ + [1, "second"], [2, "second"], [5, "second"], [10, "second"], + [30, "second"], + [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], + [30, "minute"], + [1, "hour"], [2, "hour"], [4, "hour"], + [8, "hour"], [12, "hour"], + [1, "day"], [2, "day"], [3, "day"], + [0.25, "month"], [0.5, "month"], [1, "month"], + [2, "month"], [3, "month"], [6, "month"], + [1, "year"] + ]; + + var minSize = 0; + if (axisOptions.minTickSize != null) { + if (typeof axisOptions.tickSize == "number") + minSize = axisOptions.tickSize; + else + minSize = axisOptions.minTickSize[0] * timeUnitSize[axisOptions.minTickSize[1]]; + } + + for (i = 0; i < spec.length - 1; ++i) + if (delta < (spec[i][0] * timeUnitSize[spec[i][1]] + + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 + && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) + break; + size = spec[i][0]; + unit = spec[i][1]; + + // special-case the possibility of several years + if (unit == "year") { + magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10)); + norm = (delta / timeUnitSize.year) / magn; + if (norm < 1.5) + size = 1; + else if (norm < 3) + size = 2; + else if (norm < 7.5) + size = 5; + else + size = 10; + + size *= magn; + } + + if (axisOptions.tickSize) { + size = axisOptions.tickSize[0]; + unit = axisOptions.tickSize[1]; + } + + generator = function(axis) { + var ticks = [], + tickSize = axis.tickSize[0], unit = axis.tickSize[1], + d = new Date(axis.min); + + var step = tickSize * timeUnitSize[unit]; + + if (unit == "second") + d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize)); + if (unit == "minute") + d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize)); + if (unit == "hour") + d.setUTCHours(floorInBase(d.getUTCHours(), tickSize)); + if (unit == "month") + d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize)); + if (unit == "year") + d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize)); + + // reset smaller components + d.setUTCMilliseconds(0); + if (step >= timeUnitSize.minute) + d.setUTCSeconds(0); + if (step >= timeUnitSize.hour) + d.setUTCMinutes(0); + if (step >= timeUnitSize.day) + d.setUTCHours(0); + if (step >= timeUnitSize.day * 4) + d.setUTCDate(1); + if (step >= timeUnitSize.year) + d.setUTCMonth(0); + + + var carry = 0, v = Number.NaN, prev; + do { + prev = v; + v = d.getTime(); + ticks.push({ v: v, label: axis.tickFormatter(v, axis) }); + if (unit == "month") { + if (tickSize < 1) { + // a bit complicated - we'll divide the month + // up but we need to take care of fractions + // so we don't end up in the middle of a day + d.setUTCDate(1); + var start = d.getTime(); + d.setUTCMonth(d.getUTCMonth() + 1); + var end = d.getTime(); + d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); + carry = d.getUTCHours(); + d.setUTCHours(0); + } + else + d.setUTCMonth(d.getUTCMonth() + tickSize); + } + else if (unit == "year") { + d.setUTCFullYear(d.getUTCFullYear() + tickSize); + } + else + d.setTime(v + step); + } while (v < axis.max && v != prev); + + return ticks; + }; + + formatter = function (v, axis) { + var d = new Date(v); + + // first check global format + if (axisOptions.timeformat != null) + return $.plot.formatDate(d, axisOptions.timeformat, axisOptions.monthNames); + + var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; + var span = axis.max - axis.min; + var suffix = (axisOptions.twelveHourClock) ? " %p" : ""; + + if (t < timeUnitSize.minute) + fmt = "%h:%M:%S" + suffix; + else if (t < timeUnitSize.day) { + if (span < 2 * timeUnitSize.day) + fmt = "%h:%M" + suffix; + else + fmt = "%b %d %h:%M" + suffix; + } + else if (t < timeUnitSize.month) + fmt = "%b %d"; + else if (t < timeUnitSize.year) { + if (span < timeUnitSize.year) + fmt = "%b"; + else + fmt = "%b %y"; + } + else + fmt = "%y"; + + return $.plot.formatDate(d, fmt, axisOptions.monthNames); + }; + } + else { + // pretty rounding of base-10 numbers + var maxDec = axisOptions.tickDecimals; + var dec = -Math.floor(Math.log(delta) / Math.LN10); + if (maxDec != null && dec > maxDec) + dec = maxDec; + + magn = Math.pow(10, -dec); + norm = delta / magn; // norm is between 1.0 and 10.0 + + if (norm < 1.5) + size = 1; + else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } + else if (norm < 7.5) + size = 5; + else + size = 10; + + size *= magn; + + if (axisOptions.minTickSize != null && size < axisOptions.minTickSize) + size = axisOptions.minTickSize; + + if (axisOptions.tickSize != null) + size = axisOptions.tickSize; + + axis.tickDecimals = Math.max(0, (maxDec != null) ? maxDec : dec); + + generator = function (axis) { + var ticks = []; + + // spew out all possible ticks + var start = floorInBase(axis.min, axis.tickSize), + i = 0, v = Number.NaN, prev; + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push({ v: v, label: axis.tickFormatter(v, axis) }); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + formatter = function (v, axis) { + return v.toFixed(axis.tickDecimals); + }; + } + + axis.tickSize = unit ? [size, unit] : size; + axis.tickGenerator = generator; + if ($.isFunction(axisOptions.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + axisOptions.tickFormatter(v, axis); }; + else + axis.tickFormatter = formatter; + } + + function setTicks(axis, axisOptions) { + axis.ticks = []; + + if (!axis.used) + return; + + if (axisOptions.ticks == null) + axis.ticks = axis.tickGenerator(axis); + else if (typeof axisOptions.ticks == "number") { + if (axisOptions.ticks > 0) + axis.ticks = axis.tickGenerator(axis); + } + else if (axisOptions.ticks) { + var ticks = axisOptions.ticks; + + if ($.isFunction(ticks)) + // generate the ticks + ticks = ticks({ min: axis.min, max: axis.max }); + + // clean up the user-supplied ticks, copy them over + var i, v; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = t; + if (label == null) + label = axis.tickFormatter(v, axis); + axis.ticks[i] = { v: v, label: label }; + } + } + + if (axisOptions.autoscaleMargin != null && axis.ticks.length > 0) { + // snap to ticks + if (axisOptions.min == null) + axis.min = Math.min(axis.min, axis.ticks[0].v); + if (axisOptions.max == null && axis.ticks.length > 1) + axis.max = Math.max(axis.max, axis.ticks[axis.ticks.length - 1].v); + } + } + + function draw() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + + var grid = options.grid; + + if (grid.show && !grid.aboveData) + drawGrid(); + + for (var i = 0; i < series.length; ++i) + drawSeries(series[i]); + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) + drawGrid(); + } + + function extractRange(ranges, coord) { + var firstAxis = coord + "axis", + secondaryAxis = coord + "2axis", + axis, from, to, reverse; + + if (ranges[firstAxis]) { + axis = axes[firstAxis]; + from = ranges[firstAxis].from; + to = ranges[firstAxis].to; + } + else if (ranges[secondaryAxis]) { + axis = axes[secondaryAxis]; + from = ranges[secondaryAxis].from; + to = ranges[secondaryAxis].to; + } + else { + // backwards-compat stuff - to be removed in future + axis = axes[firstAxis]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) + return { from: to, to: from, axis: axis }; + + return { from: from, to: to, axis: axis }; + } + + function drawGrid() { + var i; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw background, if any + if (options.grid.backgroundColor) { + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + } + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) + // xmin etc. are backwards-compatible, to be removed in future + markings = markings({ xmin: axes.xaxis.min, xmax: axes.xaxis.max, ymin: axes.yaxis.min, ymax: axes.yaxis.max, xaxis: axes.xaxis, yaxis: axes.yaxis, x2axis: axes.x2axis, y2axis: axes.y2axis }); + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + if (xrange.from == xrange.to && yrange.from == yrange.to) + continue; + + // then draw + xrange.from = xrange.axis.p2c(xrange.from); + xrange.to = xrange.axis.p2c(xrange.to); + yrange.from = yrange.axis.p2c(yrange.from); + yrange.to = yrange.axis.p2c(yrange.to); + + if (xrange.from == xrange.to || yrange.from == yrange.to) { + // draw line + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; + //ctx.moveTo(Math.floor(xrange.from), yrange.from); + //ctx.lineTo(Math.floor(xrange.to), yrange.to); + ctx.moveTo(xrange.from, yrange.from); + ctx.lineTo(xrange.to, yrange.to); + ctx.stroke(); + } + else { + // fill area + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the inner grid + ctx.lineWidth = 1; + ctx.strokeStyle = options.grid.tickColor; + ctx.beginPath(); + var v, axis = axes.xaxis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axes.xaxis.max) + continue; // skip those lying on the axes + + ctx.moveTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, 0); + ctx.lineTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, plotHeight); + } + + axis = axes.yaxis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axis.max) + continue; + + ctx.moveTo(0, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + ctx.lineTo(plotWidth, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + } + + axis = axes.x2axis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axis.max) + continue; + + ctx.moveTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, -5); + ctx.lineTo(Math.floor(axis.p2c(v)) + ctx.lineWidth/2, 5); + } + + axis = axes.y2axis; + for (i = 0; i < axis.ticks.length; ++i) { + v = axis.ticks[i].v; + if (v <= axis.min || v >= axis.max) + continue; + + ctx.moveTo(plotWidth-5, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + ctx.lineTo(plotWidth+5, Math.floor(axis.p2c(v)) + ctx.lineWidth/2); + } + + ctx.stroke(); + + if (options.grid.borderWidth) { + // draw border + var bw = options.grid.borderWidth; + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + + ctx.restore(); + } + + function insertLabels() { + placeholder.find(".tickLabels").remove(); + + var html = ['<div class="tickLabels" style="font-size:smaller;color:' + options.grid.color + '">']; + + function addLabels(axis, labelGenerator) { + for (var i = 0; i < axis.ticks.length; ++i) { + var tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + html.push(labelGenerator(tick, axis)); + } + } + + var margin = options.grid.labelMargin + options.grid.borderWidth; + + addLabels(axes.xaxis, function (tick, axis) { + return '<div style="position:absolute;top:' + (plotOffset.top + plotHeight + margin) + 'px;left:' + Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2) + 'px;width:' + axis.labelWidth + 'px;text-align:center" class="tickLabel">' + tick.label + "</div>"; + }); + + + addLabels(axes.yaxis, function (tick, axis) { + return '<div style="position:absolute;top:' + Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2) + 'px;right:' + (plotOffset.right + plotWidth + margin) + 'px;width:' + axis.labelWidth + 'px;text-align:right" class="tickLabel">' + tick.label + "</div>"; + }); + + addLabels(axes.x2axis, function (tick, axis) { + return '<div style="position:absolute;bottom:' + (plotOffset.bottom + plotHeight + margin) + 'px;left:' + Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2) + 'px;width:' + axis.labelWidth + 'px;text-align:center" class="tickLabel">' + tick.label + "</div>"; + }); + + addLabels(axes.y2axis, function (tick, axis) { + return '<div style="position:absolute;top:' + Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2) + 'px;left:' + (plotOffset.left + plotWidth + margin) +'px;width:' + axis.labelWidth + 'px;text-align:left" class="tickLabel">' + tick.label + "</div>"; + }); + + html.push('</div>'); + + placeholder.append(html.join("")); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + top, lastX = 0, areaOpen = false; + + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (areaOpen && x1 != null && x2 == null) { + // close area + ctx.lineTo(axisx.p2c(lastX), axisy.p2c(bottom)); + ctx.fill(); + areaOpen = false; + continue; + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + lastX = x2; + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + lastX = x2; + continue; + } + + // else it's a bit more complicated, there might + // be two rectangles and two triangles we need to fill + // in; to find these keep track of the current x values + var x1old = x1, x2old = x2; + + // and clip the y values, without shortcutting + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + if (y1 <= axisy.min) + top = axisy.min; + else + top = axisy.max; + + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(top)); + ctx.lineTo(axisx.p2c(x1), axisy.p2c(top)); + } + + // fill the triangles + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + if (y2 <= axisy.min) + top = axisy.min; + else + top = axisy.max; + + ctx.lineTo(axisx.p2c(x2), axisy.p2c(top)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(top)); + } + + lastX = Math.max(x2, x2old); + } + + if (areaOpen) { + ctx.lineTo(axisx.p2c(lastX), axisy.p2c(bottom)); + ctx.fill(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, circumference, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + ctx.arc(axisx.p2c(x), axisy.p2c(y) + offset, radius, 0, circumference, false); + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.lines.lineWidth, + sw = series.shadowSize, + radius = series.points.radius; + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, Math.PI, + series.xaxis, series.yaxis); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, Math.PI, + series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, 2 * Math.PI, + series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.beginPath(); + c.moveTo(left, bottom); + c.lineTo(left, top); + c.lineTo(right, top); + c.lineTo(right, bottom); + c.fillStyle = fillStyleCallback(bottom, top); + c.fill(); + } + + // draw outline + if (drawLeft || drawRight || drawTop || drawBottom) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom + offset); + if (drawLeft) + c.lineTo(left, top + offset); + else + c.moveTo(left, top + offset); + if (drawTop) + c.lineTo(right, top + offset); + else + c.moveTo(right, top + offset); + if (drawRight) + c.lineTo(right, bottom + offset); + else + c.moveTo(right, bottom + offset); + if (drawBottom) + c.lineTo(left, bottom + offset); + else + c.moveTo(left, bottom + offset); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + placeholder.find(".legend").remove(); + + if (!options.legend.show) + return; + + var fragments = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + for (i = 0; i < series.length; ++i) { + s = series[i]; + label = s.label; + if (!label) + continue; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push('</tr>'); + fragments.push('<tr>'); + rowStarted = true; + } + + if (lf) + label = lf(label, s); + + fragments.push( + '<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden"></div></div></td>' + + '<td class="legendLabel">' + label + '</td>'); + } + if (rowStarted) + fragments.push('</tr>'); + + if (fragments.length == 0) + return; + + var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>'; + if (options.legend.container != null) + $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('<div class="legend">' + table.replace('style="', 'style="position:absolute;' + pos +';') + '</div>').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('<div style="position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + } + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j; + + for (i = 0; i < series.length; ++i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + ps = s.datapoints.pointsize, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist <= smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + var barLeft = s.bars.align == "left" ? 0 : -s.bars.barWidth/2, + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + pos = { pageX: event.pageX, pageY: event.pageY }, + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top; + + if (axes.xaxis.used) + pos.x = axes.xaxis.c2p(canvasX); + if (axes.yaxis.used) + pos.y = axes.yaxis.c2p(canvasY); + if (axes.x2axis.used) + pos.x2 = axes.x2axis.c2p(canvasX); + if (axes.y2axis.used) + pos.y2 = axes.y2axis.c2p(canvasY); + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && h.point == item.datapoint)) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, 30); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + octx.clearRect(0, 0, canvasWidth, canvasHeight); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") + point = s.data[point]; + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") + point = s.data[point]; + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis; + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var radius = 1.5 * pointRadius; + octx.beginPath(); + octx.arc(axisx.p2c(x), axisy.p2c(y), radius, 0, 2 * Math.PI, false); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var fillStyle = $.color.parse(series.color).scale('a', 0.5).toString(); + var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + 0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + c = $.color.parse(defaultColor).scale('rgb', c.brightness); + c.a *= c.opacity; + c = c.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + $.plot = function(placeholder, data, options) { + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + /*var t0 = new Date(); + var t1 = new Date(); + var tstr = "time used (msecs): " + (t1.getTime() - t0.getTime()) + if (window.console) + console.log(tstr); + else + alert(tstr);*/ + return plot; + }; + + $.plot.plugins = []; + + // returns a string with the date d formatted according to fmt + $.plot.formatDate = function(d, fmt, monthNames) { + var leftPad = function(n) { + n = "" + n; + return n.length == 1 ? "0" + n : n; + }; + + var r = []; + var escape = false; + var hours = d.getUTCHours(); + var isAM = hours < 12; + if (monthNames == null) + monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + + if (fmt.search(/%p|%P/) != -1) { + if (hours > 12) { + hours = hours - 12; + } else if (hours == 0) { + hours = 12; + } + } + for (var i = 0; i < fmt.length; ++i) { + var c = fmt.charAt(i); + + if (escape) { + switch (c) { + case 'h': c = "" + hours; break; + case 'H': c = leftPad(hours); break; + case 'M': c = leftPad(d.getUTCMinutes()); break; + case 'S': c = leftPad(d.getUTCSeconds()); break; + case 'd': c = "" + d.getUTCDate(); break; + case 'm': c = "" + (d.getUTCMonth() + 1); break; + case 'y': c = "" + d.getUTCFullYear(); break; + case 'b': c = "" + monthNames[d.getUTCMonth()]; break; + case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; + case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; + } + r.push(c); + escape = false; + } + else { + if (c == "%") + escape = true; + else + r.push(c); + } + } + return r.join(""); + }; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); ADDED Site/Site_W/jquery.js Index: Site/Site_W/jquery.js ================================================================== --- Site/Site_W/jquery.js +++ Site/Site_W/jquery.js cannot compute difference between binary files ADDED Site/Site_W/json2.js Index: Site/Site_W/json2.js ================================================================== --- Site/Site_W/json2.js +++ Site/Site_W/json2.js @@ -0,0 +1,480 @@ +/* + http://www.JSON.org/json2.js + 2011-02-23 + + Public Domain. + + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + + See http://www.JSON.org/js.html + + + This code should be minified before deployment. + See http://javascript.crockford.com/jsmin.html + + USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO + NOT CONTROL. + + + This file creates a global JSON object containing two methods: stringify + and parse. + + JSON.stringify(value, replacer, space) + value any JavaScript value, usually an object or array. + + replacer an optional parameter that determines how object + values are stringified for objects. It can be a + function or an array of strings. + + space an optional parameter that specifies the indentation + of nested structures. If it is omitted, the text will + be packed without extra whitespace. If it is a number, + it will specify the number of spaces to indent at each + level. If it is a string (such as '\t' or ' '), + it contains the characters used to indent at each level. + + This method produces a JSON text from a JavaScript value. + + When an object value is found, if the object contains a toJSON + method, its toJSON method will be called and the result will be + stringified. A toJSON method does not serialize: it returns the + value represented by the name/value pair that should be serialized, + or undefined if nothing should be serialized. The toJSON method + will be passed the key associated with the value, and this will be + bound to the value + + For example, this would serialize Dates as ISO strings. + + Date.prototype.toJSON = function (key) { + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + return this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z'; + }; + + You can provide an optional replacer method. It will be passed the + key and value of each member, with this bound to the containing + object. The value that is returned from your method will be + serialized. If your method returns undefined, then the member will + be excluded from the serialization. + + If the replacer parameter is an array of strings, then it will be + used to select the members to be serialized. It filters the results + such that only members with keys listed in the replacer array are + stringified. + + Values that do not have JSON representations, such as undefined or + functions, will not be serialized. Such values in objects will be + dropped; in arrays they will be replaced with null. You can use + a replacer function to replace those with JSON values. + JSON.stringify(undefined) returns undefined. + + The optional space parameter produces a stringification of the + value that is filled with line breaks and indentation to make it + easier to read. + + If the space parameter is a non-empty string, then that string will + be used for indentation. If the space parameter is a number, then + the indentation will be that many spaces. + + Example: + + text = JSON.stringify(['e', {pluribus: 'unum'}]); + // text is '["e",{"pluribus":"unum"}]' + + + text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); + // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' + + text = JSON.stringify([new Date()], function (key, value) { + return this[key] instanceof Date ? + 'Date(' + this[key] + ')' : value; + }); + // text is '["Date(---current time---)"]' + + + JSON.parse(text, reviver) + This method parses a JSON text to produce an object or array. + It can throw a SyntaxError exception. + + The optional reviver parameter is a function that can filter and + transform the results. It receives each of the keys and values, + and its return value is used instead of the original value. + If it returns what it received, then the structure is not modified. + If it returns undefined then the member is deleted. + + Example: + + // Parse the text. Values that look like ISO date strings will + // be converted to Date objects. + + myData = JSON.parse(text, function (key, value) { + var a; + if (typeof value === 'string') { + a = +/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); + if (a) { + return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], + +a[5], +a[6])); + } + } + return value; + }); + + myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { + var d; + if (typeof value === 'string' && + value.slice(0, 5) === 'Date(' && + value.slice(-1) === ')') { + d = new Date(value.slice(5, -1)); + if (d) { + return d; + } + } + return value; + }); + + + This is a reference implementation. You are free to copy, modify, or + redistribute. +*/ + +/*jslint evil: true, strict: false, regexp: false */ + +/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, + call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, + getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, + lastIndex, length, parse, prototype, push, replace, slice, stringify, + test, toJSON, toString, valueOf +*/ + + +// Create a JSON object only if one does not already exist. We create the +// methods in a closure to avoid creating global variables. + +var JSON; +if (!JSON) { + JSON = {}; +} + +(function () { + "use strict"; + + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + if (typeof Date.prototype.toJSON !== 'function') { + + Date.prototype.toJSON = function (key) { + + return isFinite(this.valueOf()) ? + this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z' : null; + }; + + String.prototype.toJSON = + Number.prototype.toJSON = + Boolean.prototype.toJSON = function (key) { + return this.valueOf(); + }; + } + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + + function quote(string) { + +// If the string contains no control characters, no quote characters, and no +// backslash characters, then we can safely slap some quotes around it. +// Otherwise we must also replace the offending characters with safe escape +// sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + + + function str(key, holder) { + +// Produce a string from holder[key]. + + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + +// If the value has a toJSON method, call it to obtain a replacement value. + + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + +// If we were called with a replacer function, then call the replacer to +// obtain a replacement value. + + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + +// What happens next depends on the value's type. + + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + +// JSON numbers must be finite. Encode non-finite numbers as null. + + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + +// If the value is a boolean or null, convert it to a string. Note: +// typeof null does not produce 'null'. The case is included here in +// the remote chance that this gets fixed someday. + + return String(value); + +// If the type is 'object', we might be dealing with an object or an array or +// null. + + case 'object': + +// Due to a specification blunder in ECMAScript, typeof null is 'object', +// so watch out for that case. + + if (!value) { + return 'null'; + } + +// Make an array to hold the partial results of stringifying this object value. + + gap += indent; + partial = []; + +// Is the value an array? + + if (Object.prototype.toString.apply(value) === '[object Array]') { + +// The value is an array. Stringify every element. Use null as a placeholder +// for non-JSON values. + + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + +// Join all of the elements together, separated with commas, and wrap them in +// brackets. + + v = partial.length === 0 ? '[]' : gap ? + '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + +// If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + if (typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + +// Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + +// Join all of the member texts together, separated with commas, +// and wrap them in braces. + + v = partial.length === 0 ? '{}' : gap ? + '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : + '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + +// If the JSON object does not yet have a stringify method, give it one. + + if (typeof JSON.stringify !== 'function') { + JSON.stringify = function (value, replacer, space) { + +// The stringify method takes a value and an optional replacer, and an optional +// space parameter, and returns a JSON text. The replacer can be a function +// that can replace values, or an array of strings that will select the keys. +// A default replacer method can be provided. Use of the space parameter can +// produce text that is more easily readable. + + var i; + gap = ''; + indent = ''; + +// If the space parameter is a number, make an indent string containing that +// many spaces. + + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + +// If the space parameter is a string, it will be used as the indent string. + + } else if (typeof space === 'string') { + indent = space; + } + +// If there is a replacer, it must be a function or an array. +// Otherwise, throw an error. + + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + +// Make a fake root object containing our value under the key of ''. +// Return the result of stringifying the value. + + return str('', {'': value}); + }; + } + + +// If the JSON object does not yet have a parse method, give it one. + + if (typeof JSON.parse !== 'function') { + JSON.parse = function (text, reviver) { + +// The parse method takes a text and an optional reviver function, and returns +// a JavaScript value if the text is a valid JSON text. + + var j; + + function walk(holder, key) { + +// The walk method is used to recursively walk the resulting structure so +// that modifications can be made. + + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + + +// Parsing happens in four stages. In the first stage, we replace certain +// Unicode characters with escape sequences. JavaScript handles many characters +// incorrectly, either silently deleting them, or treating them as line endings. + + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + +// In the second stage, we run the text against regular expressions that look +// for non-JSON patterns. We are especially concerned with '()' and 'new' +// because they can cause invocation, and '=' because it can cause mutation. +// But just to be safe, we want to reject all unexpected forms. + +// We split the second stage into 4 regexp operations in order to work around +// crippling inefficiencies in IE's and Safari's regexp engines. First we +// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we +// replace all simple value tokens with ']' characters. Third, we delete all +// open brackets that follow a colon or comma or that begin the text. Finally, +// we look to see that the remaining characters are only whitespace or ']' or +// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if (/^[\],:{}\s]*$/ + .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + +// In the third stage we use the eval function to compile the text into a +// JavaScript structure. The '{' operator is subject to a syntactic ambiguity +// in JavaScript: it can begin a block or an object literal. We wrap the text +// in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + +// In the optional fourth stage, we recursively walk the new structure, passing +// each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' ? + walk({'': j}, '') : j; + } + +// If the text is not JSON parseable, then a SyntaxError is thrown. + + throw new SyntaxError('JSON.parse'); + }; + } +}()); ADDED Site/Site_W/script.js Index: Site/Site_W/script.js ================================================================== --- Site/Site_W/script.js +++ Site/Site_W/script.js @@ -0,0 +1,50 @@ +/* + JAVA SCRIPT TEST FILE +*/ + +var c=0; +var t; +var timer_is_on=0; +var img; +var section; + +function timedCount() +{ + document.getElementById('txt').value=c; + c=c+1; + if( timer_is_on == 1 ) + { + // This is the time in ms --- + // | + // V + t=setTimeout("timedCount()",100); + + // Build string here that is the next image file + + img = c % 10; // Mod 10 + d = new Date(); + section = "images/" + img + ".jpg?" +d.getTime(); + $("#NUMBER").attr('src',section); + } +} + +// Called in button press to stop start + +function doTimer() +{ + if (!timer_is_on == 1) + { + // Start timer + + timer_is_on=1; + timedCount(); + } + else + { + // Reset timer when button is pressed + + timer_is_on = 0; + c = 0; + } +} + ADDED Site/Site_W/scriptgraph.js Index: Site/Site_W/scriptgraph.js ================================================================== --- Site/Site_W/scriptgraph.js +++ Site/Site_W/scriptgraph.js @@ -0,0 +1,119 @@ +/* + JAVA SCRIPT TEST FILE + + 4-Mar-2011 Convert to use async AJAX call + 5-Mar-2011 Convert to use PUT call [35b17f8dc3] + 7-Mar-2011 Send data request as part of the URI + NOTE: Value is all in CAPS on receipt +*/ + +var c=0; +var t; +var timer_is_on=0; +var section; +var val; +var path; +var w; +var result; + +var lcnURI; + +// Get location for REST TARGETS + +lcnURI = window.location.protocol + "//" + window.location.hostname + ":" + + window.location.port + "/rest/"; + +// Response function to handle the GET request +// result = { LINE1: "###", LINE2: "###", LINE3:"###",LINE4:"###" } +// +function rest_response(result,status,x ) +{ + val = result.LINE1 + 0; + line1 = [[1,val]]; + + val = result.LINE2 + 0; + line2 = [[val,2]]; + + val = result.LINE3 + 0; + line3 = [[val,3]]; + + val = result.LINE4 + 0; + line4 = [[val,4]]; +/* + $.plot( $('#PLOT'), [ + { label: "P1", data:line1, bars:{show:true, horizontal:true} }, + { label: "P2", data:line2, bars:{show:true, horizontal:true} }, + { label: "P3", data:line3, bars:{show:true, horizontal:true} }, + { label: "P4", data:line4, bars:{show:true, horizontal:true} }], + { xaxis:{max:50.0, min:0 }, + yaxis:{ max:5,min:1, ticks:[[1.5, "P-1"], [2.5, "P-2"], [3.5, "P-3"],[4.5,"P-4"]] }, + legend: {show: false} + } +*/ + $.plot( $('#PLOT'), [ + { label: "P1", data:line1, bars:{show:true} } + ], + { yaxis:{max:50.0, min:0 }, + xaxis:{ max:2,min:1,ticks:[[1.5, "SHOW"]] }, + legend: {show: false} + } + + ); +} + +// Called at timer intervals sends off a GET request +function timedCount() +{ + // Now turn on or off depending on button + if( timer_is_on == 1 ) + { + // This is the time in ms --- + // | + // V + t=setTimeout("timedCount()",100); + + // Generate a plot data request + // NOTE: Send the JSON request as part of the URI + + w = "{ \"W\" : \"" + c + "\" } "; + path = lcnURI + "plot" + "/" + w; + + + $.ajax({ + type: "POST", + url: path, + contentType: "text/plain", + success: rest_response, + dataType : "json", + data : "" + }); + + // Update counter + document.getElementById('txt').value=c; + c=c+1; + + + } +} + +// Called in button press to stop start + +function doTimer() +{ + if (!timer_is_on == 1) + { + // Start timer + + timer_is_on=1; + timedCount(); + // Disable caching for IE + $.ajaxSetup ({ cache: false }); + } + else + { + // Reset timer when button is pressed + + timer_is_on = 0; + c = 0; + } +} ADDED Site/Site_W/wtest.html Index: Site/Site_W/wtest.html ================================================================== --- Site/Site_W/wtest.html +++ Site/Site_W/wtest.html @@ -0,0 +1,26 @@ +<html> + <head> + <script type="text/javascript" src="jquery.js"></script> + <script type="text/javascript" src="jquery.sparkline.min.js"></script> + <script type="text/javascript" src="script.js"> </script> + </head> + + <body> + <div id="BUTTON"> + <form> + <input type="button" value="Start count!" onClick="doTimer()"> + <input type="text" id="txt"> + </form> + <p>Click on the button above. The input field will count forever, starting at 0.</p> + </div> + <div id="DATA"> + <center><h1>Data</h1></center> + <center> + <a> + <img id="NUMBER" src="images/0.jpg" /> + </a> + + </div> + + </body> +</html> ADDED Site/Site_Z/AppController.j Index: Site/Site_Z/AppController.j ================================================================== --- Site/Site_Z/AppController.j +++ Site/Site_Z/AppController.j @@ -0,0 +1,32 @@ +/* + * AppController.j + * Site + * + * Created by You on November 17, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import <Foundation/CPObject.j> + + +@implementation AppController : CPObject +{ + CPWindow theWindow; //this "outlet" is connected automatically by the Cib +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullBridge:YES]; +} + +@end ADDED Site/Site_Z/Frameworks/AppKit/Browser.environment/AppKit.sj Index: Site/Site_Z/Frameworks/AppKit/Browser.environment/AppKit.sj ================================================================== --- Site/Site_Z/Frameworks/AppKit/Browser.environment/AppKit.sj +++ Site/Site_Z/Frameworks/AppKit/Browser.environment/AppKit.sj @@ -0,0 +1,34692 @@ +@STATIC;1.0;p;15;_CPCornerView.jt;1340;@STATIC;1.0;i;8;CPView.jt;1309; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPCornerView"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("layoutSubviews"),function(_3,_4){ +with(_3){ +objj_msgSend(_3,"setBackgroundColor:",objj_msgSend(_3,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("_init"),function(_5,_6){ +with(_5){ +objj_msgSend(_5,"setBackgroundColor:",objj_msgSend(_5,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPCornerView").super_class},"initWithFrame:",_9); +if(_7){ +objj_msgSend(_7,"_init"); +} +return _7; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("_CPCornerView").super_class},"initWithCoder:",_c); +if(_a){ +objj_msgSend(_a,"_init"); +} +return _a; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_d,_e){ +with(_d){ +return "cornerview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_f,_10){ +with(_f){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null")],["background-color"]); +} +})]); +p;18;_CPDisplayServer.jt;1144;@STATIC;1.0;t;1125; +var _1=[],_2={},_3=[],_4={},_5=objj_msgSend(CPRunLoop,"mainRunLoop"); +_CPDisplayServerAddDisplayObject=function(_6){ +var _7=objj_msgSend(_6,"UID"); +if(typeof _2[_7]!=="undefined"){ +return; +} +var _8=_1.length; +_2[_7]=_8; +_1[_8]=_6; +}; +_CPDisplayServerAddLayoutObject=function(_9){ +var _a=objj_msgSend(_9,"UID"); +if(typeof _4[_a]!=="undefined"){ +return; +} +var _b=_3.length; +_4[_a]=_b; +_3[_b]=_9; +}; +var _c=objj_allocateClassPair(CPObject,"_CPDisplayServer"),_d=_c.isa; +objj_registerClassPair(_c); +class_addMethods(_d,[new objj_method(sel_getUid("run"),function(_e,_f){ +with(_e){ +while(_3.length||_1.length){ +var _10=0; +for(;_10<_3.length;++_10){ +var _11=_3[_10]; +delete _4[objj_msgSend(_11,"UID")]; +objj_msgSend(_11,"layoutIfNeeded"); +} +_3=[]; +_4={}; +_10=0; +for(;_10<_1.length;++_10){ +if(_3.length){ +break; +} +var _11=_1[_10]; +delete _2[objj_msgSend(_11,"UID")]; +objj_msgSend(_11,"displayIfNeeded"); +} +if(_10===_1.length){ +_1=[]; +_2={}; +}else{ +_1.splice(0,_10); +} +} +objj_msgSend(_5,"performSelector:target:argument:order:modes:",sel_getUid("run"),_e,nil,0,[CPDefaultRunLoopMode]); +} +})]); +objj_msgSend(_CPDisplayServer,"run"); +p;21;_CPImageAndTextView.jt;13539;@STATIC;1.0;I;21;Foundation/CPString.ji;9;CPColor.ji;8;CPFont.ji;9;CPImage.ji;8;CPView.ji;11;CPControl.jt;13427; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPControl.j",YES); +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5,_7=1<<6,_8=1<<7,_9=1<<8,_a=1<<9,_b=1<<10; +var _c=objj_allocateClassPair(CPView,"_CPImageAndTextView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_alignment"),new objj_ivar("_verticalAlignment"),new objj_ivar("_lineBreakMode"),new objj_ivar("_textColor"),new objj_ivar("_font"),new objj_ivar("_textShadowColor"),new objj_ivar("_textShadowOffset"),new objj_ivar("_imagePosition"),new objj_ivar("_imageScaling"),new objj_ivar("_imageOffset"),new objj_ivar("_shouldDimImage"),new objj_ivar("_image"),new objj_ivar("_text"),new objj_ivar("_textSize"),new objj_ivar("_flags"),new objj_ivar("_DOMImageElement"),new objj_ivar("_DOMTextElement"),new objj_ivar("_DOMTextShadowElement")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:control:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPImageAndTextView").super_class},"initWithFrame:",_10); +if(_e){ +_textShadowOffset={width:0,height:0}; +objj_msgSend(_e,"setVerticalAlignment:",CPTopVerticalTextAlignment); +if(_11){ +objj_msgSend(_e,"setLineBreakMode:",objj_msgSend(_11,"lineBreakMode")); +objj_msgSend(_e,"setTextColor:",objj_msgSend(_11,"textColor")); +objj_msgSend(_e,"setAlignment:",objj_msgSend(_11,"alignment")); +objj_msgSend(_e,"setVerticalAlignment:",objj_msgSend(_11,"verticalAlignment")); +objj_msgSend(_e,"setFont:",objj_msgSend(_11,"font")); +objj_msgSend(_e,"setImagePosition:",objj_msgSend(_11,"imagePosition")); +objj_msgSend(_e,"setImageScaling:",objj_msgSend(_11,"imageScaling")); +objj_msgSend(_e,"setImageOffset:",objj_msgSend(_11,"imageOffset")); +}else{ +objj_msgSend(_e,"setLineBreakMode:",CPLineBreakByClipping); +objj_msgSend(_e,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_e,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",12)); +objj_msgSend(_e,"setImagePosition:",CPNoImage); +objj_msgSend(_e,"setImageScaling:",CPScaleNone); +} +_textSize=NULL; +} +return _e; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_12,_13,_14){ +with(_12){ +return objj_msgSend(_12,"initWithFrame:control:",_14,nil); +} +}),new objj_method(sel_getUid("setAlignment:"),function(_15,_16,_17){ +with(_15){ +if(_alignment===_17){ +return; +} +_alignment=_17; +switch(_alignment){ +case CPLeftTextAlignment: +_DOMElement.style.textAlign="left"; +break; +case CPRightTextAlignment: +_DOMElement.style.textAlign="right"; +break; +case CPCenterTextAlignment: +_DOMElement.style.textAlign="center"; +break; +case CPJustifiedTextAlignment: +_DOMElement.style.textAlign="justify"; +break; +case CPNaturalTextAlignment: +_DOMElement.style.textAlign=""; +break; +} +} +}),new objj_method(sel_getUid("alignment"),function(_18,_19){ +with(_18){ +return _alignment; +} +}),new objj_method(sel_getUid("setVerticalAlignment:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_verticalAlignment===_1c){ +return; +} +_verticalAlignment=_1c; +_flags|=_5; +objj_msgSend(_1a,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("verticalAlignment"),function(_1d,_1e){ +with(_1d){ +return _verticalAlignment; +} +}),new objj_method(sel_getUid("setLineBreakMode:"),function(_1f,_20,_21){ +with(_1f){ +if(_lineBreakMode===_21){ +return; +} +_lineBreakMode=_21; +_flags|=_6; +objj_msgSend(_1f,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("lineBreakMode"),function(_22,_23){ +with(_22){ +return _lineBreakMode; +} +}),new objj_method(sel_getUid("setImagePosition:"),function(_24,_25,_26){ +with(_24){ +if(_imagePosition==_26){ +return; +} +if(_imagePosition==CPNoImage){ +_flags|=_2; +} +_imagePosition=_26; +_flags|=_a; +objj_msgSend(_24,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imagePosition"),function(_27,_28){ +with(_27){ +return _imagePosition; +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_29,_2a,_2b){ +with(_29){ +if(_imageScaling==_2b){ +return; +} +_imageScaling=_2b; +_flags|=_b; +objj_msgSend(_29,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imageScaling"),function(_2c,_2d){ +with(_2c){ +return _imageScaling; +} +}),new objj_method(sel_getUid("setDimsImage:"),function(_2e,_2f,_30){ +with(_2e){ +_30=!!_30; +if(_shouldDimImage!==_30){ +_shouldDimImage=_30; +objj_msgSend(_2e,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("setTextColor:"),function(_31,_32,_33){ +with(_31){ +if(_textColor===_33){ +return; +} +_textColor=_33; +_DOMElement.style.color=objj_msgSend(_textColor,"cssString"); +} +}),new objj_method(sel_getUid("textColor"),function(_34,_35){ +with(_34){ +return _textColor; +} +}),new objj_method(sel_getUid("setFont:"),function(_36,_37,_38){ +with(_36){ +if(_font===_38){ +return; +} +_font=_38; +_flags|=_8; +_textSize=NULL; +objj_msgSend(_36,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("font"),function(_39,_3a){ +with(_39){ +return _font; +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_textShadowColor===_3d){ +return; +} +_textShadowColor=_3d; +_flags|=_9; +objj_msgSend(_3b,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_3e,_3f){ +with(_3e){ +return _textShadowColor; +} +}),new objj_method(sel_getUid("setTextShadowOffset:"),function(_40,_41,_42){ +with(_40){ +if((_textShadowOffset.width==_42.width&&_textShadowOffset.height==_42.height)){ +return; +} +_textShadowOffset={width:_42.width,height:_42.height}; +objj_msgSend(_40,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("textShadowOffset"),function(_43,_44){ +with(_43){ +return _textShadowOffset; +} +}),new objj_method(sel_getUid("setImage:"),function(_45,_46,_47){ +with(_45){ +if(_image==_47){ +return; +} +if(objj_msgSend(_image,"delegate")===_45){ +objj_msgSend(_image,"setDelegate:",nil); +} +_image=_47; +_flags|=_2; +if(objj_msgSend(_image,"loadStatus")!==CPImageLoadStatusCompleted){ +objj_msgSend(_image,"setDelegate:",_45); +} +objj_msgSend(_45,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setImageOffset:"),function(_48,_49,_4a){ +with(_48){ +if(_imageOffset===_4a){ +return; +} +_imageOffset=_4a; +objj_msgSend(_48,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imageOffset"),function(_4b,_4c){ +with(_4b){ +return _imageOffset; +} +}),new objj_method(sel_getUid("imageDidLoad:"),function(_4d,_4e,_4f){ +with(_4d){ +if(_4f===_image){ +_flags|=_2; +objj_msgSend(_4d,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("image"),function(_50,_51){ +with(_50){ +return _image; +} +}),new objj_method(sel_getUid("setText:"),function(_52,_53,_54){ +with(_52){ +if(_text===_54){ +return; +} +_text=_54; +_flags|=_3; +_textSize=NULL; +objj_msgSend(_52,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("text"),function(_55,_56){ +with(_55){ +return _text; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_57,_58){ +with(_57){ +var _59=_imagePosition!==CPImageOnly&&(objj_msgSend(_text,"length")>0),_5a=!!_DOMTextElement; +if(_59!==_5a){ +if(_5a){ +_DOMElement.removeChild(_DOMTextElement); +_DOMTextElement=NULL; +_5a=NO; +}else{ +_DOMTextElement=document.createElement("div"); +var _5b=_DOMTextElement.style; +_5b.position="absolute"; +_5b.whiteSpace="pre"; +_5b.zIndex=200; +_5b.overflow="hidden"; +_DOMElement.appendChild(_DOMTextElement); +_5a=YES; +_flags|=_3|_8|_6; +} +} +var _5b=_5a?_DOMTextElement.style:nil; +var _5c=_5a&&!!_textShadowColor,_5d=!!_DOMTextShadowElement; +if(_5c!==_5d){ +if(_5d){ +_DOMElement.removeChild(_DOMTextShadowElement); +_DOMTextShadowElement=NULL; +_5d=NO; +}else{ +_DOMTextShadowElement=document.createElement("div"); +var _5e=_DOMTextShadowElement.style; +_5e.font=objj_msgSend(_font?_font:objj_msgSend(CPFont,"systemFontOfSize:",12),"cssString"); +_5e.position="absolute"; +_5e.whiteSpace=_5b.whiteSpace; +_5e.wordWrap=_5b.wordWrap; +_5e.color=objj_msgSend(_textShadowColor,"cssString"); +_5e.zIndex=150; +_5e.textOverflow=_5b.textOverflow; +if(document.attachEvent){ +_5e.overflow=_5b.overflow; +}else{ +_5e.overflowX=_5b.overflowX; +_5e.overflowY=_5b.overflowY; +} +_DOMElement.appendChild(_DOMTextShadowElement); +_5d=YES; +_flags|=_3; +} +} +var _5e=_5d?_DOMTextShadowElement.style:nil; +if(_5a){ +if(_flags&_3){ +if(CPFeatureIsCompatible(CPJavascriptInnerTextFeature)){ +_DOMTextElement.innerText=_text; +if(_DOMTextShadowElement){ +_DOMTextShadowElement.innerText=_text; +} +}else{ +if(CPFeatureIsCompatible(CPJavascriptTextContentFeature)){ +_DOMTextElement.textContent=_text; +if(_DOMTextShadowElement){ +_DOMTextShadowElement.textContent=_text; +} +} +} +} +if(_flags&_8){ +var _5f=objj_msgSend(_font?_font:objj_msgSend(CPFont,"systemFontOfSize:",12),"cssString"); +_5b.font=_5f; +if(_5e){ +_5e.font=_5f; +} +} +if(_flags&_6){ +switch(_lineBreakMode){ +case CPLineBreakByClipping: +_5b.overflow="hidden"; +_5b.textOverflow="clip"; +_5b.whiteSpace="pre"; +_5b.wordWrap="normal"; +break; +case CPLineBreakByTruncatingHead: +case CPLineBreakByTruncatingMiddle: +case CPLineBreakByTruncatingTail: +_5b.textOverflow="ellipsis"; +_5b.whiteSpace="nowrap"; +_5b.overflow="hidden"; +_5b.wordWrap="normal"; +break; +case CPLineBreakByCharWrapping: +case CPLineBreakByWordWrapping: +_5b.wordWrap="break-word"; +try{ +_5b.whiteSpace="pre"; +_5b.whiteSpace="-o-pre-wrap"; +_5b.whiteSpace="-pre-wrap"; +_5b.whiteSpace="-moz-pre-wrap"; +_5b.whiteSpace="pre-wrap"; +} +catch(e){ +_5b.whiteSpace="pre"; +} +_5b.overflow="hidden"; +_5b.textOverflow="clip"; +break; +} +if(_5e){ +if(document.attachEvent){ +_5e.overflow=_5b.overflow; +}else{ +_5e.overflowX=_5b.overflowX; +_5e.overflowY=_5b.overflowY; +} +_5e.wordWrap=_5b.wordWrap; +_5e.whiteSpace=_5b.whiteSpace; +_5e.textOverflow=_5b.textOverflow; +} +} +} +var _60=_image!==nil&&_imagePosition!==CPNoImage,_61=!!_DOMImageElement; +if(_60!==_61){ +if(_61){ +_DOMElement.removeChild(_DOMImageElement); +_DOMImageElement=NULL; +_61=NO; +}else{ +_DOMImageElement=document.createElement("img"); +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMImageElement.setAttribute("draggable","true"); +_DOMImageElement.style["-khtml-user-drag"]="element"; +} +var _62=_DOMImageElement.style; +_62.top="0px"; +_62.left="0px"; +_62.position="absolute"; +_62.zIndex=100; +_DOMElement.appendChild(_DOMImageElement); +_61=YES; +} +} +var _63=objj_msgSend(_57,"bounds").size,_64={origin:{x:0,y:0},size:{width:_63.width,height:_63.height}}; +if(_61){ +if(!_62){ +var _62=_DOMImageElement.style; +} +if(_flags&_2){ +_DOMImageElement.src=objj_msgSend(_image,"filename"); +} +var _65=_63.width/2,_66=_63.height/2,_67=objj_msgSend(_image,"size"),_68=_67.width,_69=_67.height; +if(_imageScaling===CPScaleToFit){ +_68=_63.width; +_69=_63.height; +}else{ +if(_imageScaling===CPScaleProportionally){ +var _6a=MIN(MIN(_63.width,_68)/_68,MIN(_63.height,_69)/_69); +_68*=_6a; +_69*=_6a; +} +} +if(CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)){ +_62.filter="alpha(opacity="+_shouldDimImage?35:100+")"; +}else{ +_62.opacity=_shouldDimImage?0.35:1; +} +_DOMImageElement.width=_68; +_DOMImageElement.height=_69; +_62.width=MAX(_68,0)+"px"; +_62.height=MAX(_69,0)+"px"; +if(_imagePosition===CPImageBelow){ +_62.left=FLOOR(_65-_68/2)+"px"; +_62.top=FLOOR(_63.height-_69)+"px"; +_64.size.height=_63.height-_69-_imageOffset; +}else{ +if(_imagePosition===CPImageAbove){ +_62.left=FLOOR(_65-_68/2)+"px"; +_62.top=0+"px"; +_64.origin.y+=_69+_imageOffset; +_64.size.height=_63.height-_69-_imageOffset; +}else{ +if(_imagePosition===CPImageLeft){ +_62.top=FLOOR(_66-_69/2)+"px"; +_62.left="0px"; +_64.origin.x=_68+_imageOffset; +_64.size.width-=_68+_imageOffset; +}else{ +if(_imagePosition===CPImageRight){ +_62.top=FLOOR(_66-_69/2)+"px"; +_62.left=FLOOR(_63.width-_68)+"px"; +_64.size.width-=_68+_imageOffset; +}else{ +if(_imagePosition===CPImageOnly||_imagePosition==CPImageOverlaps){ +_62.top=FLOOR(_66-_69/2)+"px"; +_62.left=FLOOR(_65-_68/2)+"px"; +} +} +} +} +} +} +if(_5a){ +var _6b=(_64.origin.x),_6c=(_64.origin.y),_6d=(_64.size.width),_6e=(_64.size.height); +if(_verticalAlignment!==CPTopVerticalTextAlignment){ +if(!_textSize){ +if(_lineBreakMode===CPLineBreakByCharWrapping||_lineBreakMode===CPLineBreakByWordWrapping){ +_textSize=objj_msgSend(_text,"sizeWithFont:inWidth:",_font,_6d); +}else{ +_textSize=objj_msgSend(_text,"sizeWithFont:",_font); +} +} +if(_verticalAlignment===CPCenterVerticalTextAlignment){ +_6c=_6c+(_6e-_textSize.height)/2; +_6e=_textSize.height; +}else{ +_6c=_6c+_6e-_textSize.height; +_6e=_textSize.height; +} +} +_5b.top=ROUND(_6c)+"px"; +_5b.left=ROUND(_6b)+"px"; +_5b.width=MAX(ROUND(_6d),0)+"px"; +_5b.height=MAX(ROUND(_6e),0)+"px"; +if(_5e){ +if(_flags&_9){ +_5e.color=objj_msgSend(_textShadowColor,"cssString"); +} +_5e.top=ROUND(_6c+_textShadowOffset.height)+"px"; +_5e.left=ROUND(_6b+_textShadowOffset.width)+"px"; +_5e.width=MAX(ROUND(_6d),0)+"px"; +_5e.height=MAX(ROUND(_6e),0)+"px"; +} +} +_flags=0; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_6f,_70){ +with(_6f){ +var _71=CGSizeMakeZero(); +if((_imagePosition!==CPNoImage)&&_image){ +var _72=objj_msgSend(_image,"size"); +_71.width+=_72.width; +_71.height+=_72.height; +} +if((_imagePosition!==CPImageOnly)&&objj_msgSend(_text,"length")>0){ +if(!_textSize){ +_textSize=objj_msgSend(_text,"sizeWithFont:",_font?_font:objj_msgSend(CPFont,"systemFontOfSize:",12)); +} +if(_imagePosition===CPImageLeft||_imagePosition===CPImageRight){ +_71.width+=_textSize.width+_imageOffset; +_71.height=MAX(_71.height,_textSize.height); +}else{ +if(_imagePosition===CPImageAbove||_imagePosition===CPImageBelow){ +_71.width=MAX(_71.width,_textSize.width); +_71.height+=_textSize.height+_imageOffset; +}else{ +_71.width=MAX(_71.width,_textSize.width); +_71.height=MAX(_71.height,_textSize.height); +} +} +} +objj_msgSend(_6f,"setFrameSize:",_71); +} +})]); +p;29;_CPToolbarFlexibleSpaceItem.jt;794;@STATIC;1.0;i;15;CPToolbarItem.jt;756; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarFlexibleSpaceItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarFlexibleSpaceItem").super_class},"initWithItemIdentifier:",CPToolbarFlexibleSpaceItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(10000,32)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;25;_CPToolbarSeparatorItem.jt;780;@STATIC;1.0;i;15;CPToolbarItem.jt;742; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarSeparatorItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarSeparatorItem").super_class},"initWithItemIdentifier:",CPToolbarSeparatorItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(2,0)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(2,100000)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;26;_CPToolbarShowColorsItem.jt;1230;@STATIC;1.0;i;15;CPToolbarItem.jt;1191; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarShowColorsItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarShowColorsItem").super_class},"initWithItemIdentifier:",CPToolbarShowColorsItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setLabel:","Colors"); +objj_msgSend(_3,"setPaletteLabel:","Show Colors"); +objj_msgSend(_3,"setTarget:",CPApp); +objj_msgSend(_3,"setAction:",sel_getUid("orderFrontColorPanel:")); +objj_msgSend(_3,"setImage:",objj_msgSend(CPImage,"imageNamed:",CPImageNameColorPanel)); +objj_msgSend(_3,"setAlternateImage:",objj_msgSend(CPImage,"imageNamed:",CPImageNameColorPanelHighlighted)); +objj_msgSend(_3,"setToolTip:","Show the Colors panel."); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;21;_CPToolbarSpaceItem.jt;767;@STATIC;1.0;i;15;CPToolbarItem.jt;729; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarSpaceItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarSpaceItem").super_class},"initWithItemIdentifier:",CPToolbarSpaceItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(32,32)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;8;AppKit.jt;4031;@STATIC;1.0;i;9;CALayer.ji;9;CPAlert.ji;13;CPAnimation.ji;15;CPApplication.ji;14;CPBezierPath.ji;7;CPBox.ji;11;CPBrowser.ji;10;CPButton.ji;13;CPButtonBar.ji;12;CPCheckBox.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;14;CPCibLoading.ji;22;CPCibOutletConnector.ji;12;CPClipView.ji;18;CPCollectionView.ji;22;CPCollectionViewItem.ji;9;CPColor.ji;14;CPColorPanel.ji;13;CPColorWell.ji;17;CPCompatibility.ji;11;CPControl.ji;10;CPCookie.ji;10;CPCursor.ji;12;CPDocument.ji;22;CPDocumentController.ji;9;CPEvent.ji;14;CPFlashMovie.ji;13;CPFlashView.ji;8;CPFont.ji;15;CPFontManager.ji;12;CPGeometry.ji;12;CPGraphics.ji;9;CPImage.ji;13;CPImageView.ji;14;CPKeyBinding.ji;8;CPMenu.ji;12;CPMenuItem.ji;13;CPOpenPanel.ji;15;CPOutlineView.ji;9;CPPanel.ji;14;CPPasteboard.ji;15;CPPopUpButton.ji;21;CPProgressIndicator.ji;9;CPRadio.ji;13;CPResponder.ji;12;CPScroller.ji;14;CPScrollView.ji;15;CPSearchField.ji;19;CPSecureTextField.ji;20;CPSegmentedControl.ji;10;CPShadow.ji;10;CPSlider.ji;13;CPSplitView.ji;15;CPTableColumn.ji;13;CPTableView.ji;11;CPTabView.ji;8;CPText.ji;13;CPTextField.ji;11;CPToolbar.ji;15;CPToolbarItem.ji;12;CPTreeNode.ji;8;CPView.ji;17;CPViewAnimation.ji;18;CPViewController.ji;11;CPWebView.ji;10;CPWindow.ji;20;CPWindowController.ji;19;CPArrayController.jt;2748; +objj_executeFile("CALayer.j",YES); +objj_executeFile("CPAlert.j",YES); +objj_executeFile("CPAnimation.j",YES); +objj_executeFile("CPApplication.j",YES); +objj_executeFile("CPBezierPath.j",YES); +objj_executeFile("CPBox.j",YES); +objj_executeFile("CPBrowser.j",YES); +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPButtonBar.j",YES); +objj_executeFile("CPCheckBox.j",YES); +objj_executeFile("CPCib.j",YES); +objj_executeFile("CPCibConnector.j",YES); +objj_executeFile("CPCibControlConnector.j",YES); +objj_executeFile("CPCibLoading.j",YES); +objj_executeFile("CPCibOutletConnector.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPCollectionView.j",YES); +objj_executeFile("CPCollectionViewItem.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPColorPanel.j",YES); +objj_executeFile("CPColorWell.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPCookie.j",YES); +objj_executeFile("CPCursor.j",YES); +objj_executeFile("CPDocument.j",YES); +objj_executeFile("CPDocumentController.j",YES); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPFlashMovie.j",YES); +objj_executeFile("CPFlashView.j",YES); +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPFontManager.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPGraphics.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPKeyBinding.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPMenuItem.j",YES); +objj_executeFile("CPOpenPanel.j",YES); +objj_executeFile("CPOutlineView.j",YES); +objj_executeFile("CPPanel.j",YES); +objj_executeFile("CPPasteboard.j",YES); +objj_executeFile("CPPopUpButton.j",YES); +objj_executeFile("CPProgressIndicator.j",YES); +objj_executeFile("CPRadio.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPScroller.j",YES); +objj_executeFile("CPScrollView.j",YES); +objj_executeFile("CPSearchField.j",YES); +objj_executeFile("CPSecureTextField.j",YES); +objj_executeFile("CPSegmentedControl.j",YES); +objj_executeFile("CPShadow.j",YES); +objj_executeFile("CPSlider.j",YES); +objj_executeFile("CPSplitView.j",YES); +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPTabView.j",YES); +objj_executeFile("CPText.j",YES); +objj_executeFile("CPTextField.j",YES); +objj_executeFile("CPToolbar.j",YES); +objj_executeFile("CPToolbarItem.j",YES); +objj_executeFile("CPTreeNode.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPViewAnimation.j",YES); +objj_executeFile("CPViewController.j",YES); +objj_executeFile("CPWebView.j",YES); +objj_executeFile("CPWindow.j",YES); +objj_executeFile("CPWindowController.j",YES); +objj_executeFile("CPArrayController.j",YES); +p;17;CPAccordionView.jt;10946;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;32;Foundation/CPKeyValueObserving.jI;23;Foundation/CPIndexSet.jI;21;Foundation/CPString.jI;15;AppKit/CPView.jt;10764; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPKeyValueObserving.j",NO); +objj_executeFile("Foundation/CPIndexSet.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPAccordionViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier"),new objj_ivar("_view"),new objj_ivar("_label")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("identifier"),function(_3,_4){ +with(_3){ +return _identifier; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_5,_6,_7){ +with(_5){ +_identifier=_7; +} +}),new objj_method(sel_getUid("view"),function(_8,_9){ +with(_8){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_a,_b,_c){ +with(_a){ +_view=_c; +} +}),new objj_method(sel_getUid("label"),function(_d,_e){ +with(_d){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_f,_10,_11){ +with(_f){ +_label=_11; +} +}),new objj_method(sel_getUid("init"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_14,_15,_16){ +with(_14){ +_14=objj_msgSendSuper({receiver:_14,super_class:objj_getClass("CPAccordionViewItem").super_class},"init"); +if(_14){ +objj_msgSend(_14,"setIdentifier:",_16); +} +return _14; +} +})]); +var _1=objj_allocateClassPair(CPView,"CPAccordionView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_dirtyItemIndex"),new objj_ivar("_itemHeaderPrototype"),new objj_ivar("_items"),new objj_ivar("_itemViews"),new objj_ivar("_expandedItemIndexes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_17,_18,_19){ +with(_17){ +_17=objj_msgSendSuper({receiver:_17,super_class:objj_getClass("CPAccordionView").super_class},"initWithFrame:",_19); +if(_17){ +_items=[]; +_itemViews=[]; +_expandedItemIndexes=objj_msgSend(CPIndexSet,"indexSet"); +objj_msgSend(_17,"setItemHeaderPrototype:",objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:100,height:24}})); +} +return _17; +} +}),new objj_method(sel_getUid("setItemHeaderPrototype:"),function(_1a,_1b,_1c){ +with(_1a){ +_itemHeaderPrototype=_1c; +} +}),new objj_method(sel_getUid("itemHeaderPrototype"),function(_1d,_1e){ +with(_1d){ +return _itemHeaderPrototype; +} +}),new objj_method(sel_getUid("items"),function(_1f,_20){ +with(_1f){ +return _items; +} +}),new objj_method(sel_getUid("addItem:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(_21,"insertItem:atIndex:",_23,_items.length); +} +}),new objj_method(sel_getUid("insertItem:atIndex:"),function(_24,_25,_26,_27){ +with(_24){ +objj_msgSend(_expandedItemIndexes,"addIndex:",_27); +var _28=objj_msgSend(objj_msgSend(_CPAccordionItemView,"alloc"),"initWithAccordionView:",_24); +objj_msgSend(_28,"setIndex:",_27); +objj_msgSend(_28,"setLabel:",objj_msgSend(_26,"label")); +objj_msgSend(_28,"setContentView:",objj_msgSend(_26,"view")); +objj_msgSend(_24,"addSubview:",_28); +objj_msgSend(_items,"insertObject:atIndex:",_26,_27); +objj_msgSend(_itemViews,"insertObject:atIndex:",_28,_27); +objj_msgSend(_24,"_invalidateItemsStartingAtIndex:",_27); +objj_msgSend(_24,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeItem:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_29,"removeItemAtIndex:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_2b)); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_expandedItemIndexes,"removeIndex:",_2e); +objj_msgSend(_itemViews[_2e],"removeFromSuperview"); +objj_msgSend(_items,"removeObjectAtIndex:",_2e); +objj_msgSend(_itemViews,"removeObjectAtIndex:",_2e); +objj_msgSend(_2c,"_invalidateItemsStartingAtIndex:",_2e); +objj_msgSend(_2c,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeAllItems"),function(_2f,_30){ +with(_2f){ +var _31=_items.length; +while(_31--){ +objj_msgSend(_2f,"removeItemAtIndex:",_31); +} +} +}),new objj_method(sel_getUid("expandItemAtIndex:"),function(_32,_33,_34){ +with(_32){ +if(!objj_msgSend(_itemViews[_34],"isCollapsed")){ +return; +} +objj_msgSend(_expandedItemIndexes,"addIndex:",_34); +objj_msgSend(_itemViews[_34],"setCollapsed:",NO); +objj_msgSend(_32,"_invalidateItemsStartingAtIndex:",_34); +} +}),new objj_method(sel_getUid("collapseItemAtIndex:"),function(_35,_36,_37){ +with(_35){ +if(objj_msgSend(_itemViews[_37],"isCollapsed")){ +return; +} +objj_msgSend(_expandedItemIndexes,"removeIndex:",_37); +objj_msgSend(_itemViews[_37],"setCollapsed:",YES); +objj_msgSend(_35,"_invalidateItemsStartingAtIndex:",_37); +} +}),new objj_method(sel_getUid("toggleItemAtIndex:"),function(_38,_39,_3a){ +with(_38){ +var _3b=_itemViews[_3a]; +if(objj_msgSend(_3b,"isCollapsed")){ +objj_msgSend(_38,"expandItemAtIndex:",_3a); +}else{ +objj_msgSend(_38,"collapseItemAtIndex:",_3a); +} +} +}),new objj_method(sel_getUid("expandedItemIndexes"),function(_3c,_3d){ +with(_3c){ +return _expandedItemIndexes; +} +}),new objj_method(sel_getUid("collapsedItemIndexes"),function(_3e,_3f){ +with(_3e){ +var _40=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,_items.length)); +objj_msgSend(_40,"removeIndexes:",_expandedIndexes); +return _40; +} +}),new objj_method(sel_getUid("setEnabled:forItemAtIndex:"),function(_41,_42,_43,_44){ +with(_41){ +var _45=_itemViews[_44]; +if(!_45){ +return; +} +if(!_43){ +objj_msgSend(_41,"collapseItemAtIndex:",_44); +}else{ +objj_msgSend(_41,"expandItemAtIndex:",_44); +} +objj_msgSend(_45,"setEnabled:",_43); +} +}),new objj_method(sel_getUid("_invalidateItemsStartingAtIndex:"),function(_46,_47,_48){ +with(_46){ +if(_dirtyItemIndex===CPNotFound){ +_dirtyItemIndex=_48; +} +_dirtyItemIndex=MIN(_dirtyItemIndex,_48); +objj_msgSend(_46,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_49,_4a,_4b){ +with(_49){ +var _4c=(objj_msgSend(_49,"frame").size.width); +objj_msgSendSuper({receiver:_49,super_class:objj_getClass("CPAccordionView").super_class},"setFrameSize:",_4b); +if(_4c!==(objj_msgSend(_49,"frame").size.width)){ +objj_msgSend(_49,"_invalidateItemsStartingAtIndex:",0); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_4d,_4e){ +with(_4d){ +if(_items.length<=0){ +return objj_msgSend(_4d,"setFrameSize:",{width:(objj_msgSend(_4d,"frame").size.width),height:0}); +} +if(_dirtyItemIndex===CPNotFound){ +return; +} +_dirtyItemIndex=MIN(_dirtyItemIndex,_items.length-1); +var _4f=_dirtyItemIndex,_50=_itemViews.length,_51=(objj_msgSend(_4d,"bounds").size.width),y=_4f>0?CGRectGetMaxY(objj_msgSend(_itemViews[_4f-1],"frame")):0; +_dirtyItemIndex=CPNotFound; +for(;_4f<_50;++_4f){ +var _52=_itemViews[_4f]; +objj_msgSend(_52,"setFrameY:width:",y,_51); +y=CGRectGetMaxY(objj_msgSend(_52,"frame")); +} +objj_msgSend(_4d,"setFrameSize:",{width:(objj_msgSend(_4d,"frame").size.width),height:y}); +} +})]); +var _1=objj_allocateClassPair(CPView,"_CPAccordionItemView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_accordionView"),new objj_ivar("_isCollapsed"),new objj_ivar("_index"),new objj_ivar("_headerView"),new objj_ivar("_contentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isCollapsed"),function(_53,_54){ +with(_53){ +return _isCollapsed; +} +}),new objj_method(sel_getUid("setCollapsed:"),function(_55,_56,_57){ +with(_55){ +_isCollapsed=_57; +} +}),new objj_method(sel_getUid("index"),function(_58,_59){ +with(_58){ +return _index; +} +}),new objj_method(sel_getUid("setIndex:"),function(_5a,_5b,_5c){ +with(_5a){ +_index=_5c; +} +}),new objj_method(sel_getUid("initWithAccordionView:"),function(_5d,_5e,_5f){ +with(_5d){ +_5d=objj_msgSendSuper({receiver:_5d,super_class:objj_getClass("_CPAccordionItemView").super_class},"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +if(_5d){ +_accordionView=_5f; +_isCollapsed=NO; +var _60=objj_msgSend(_5d,"bounds"); +_headerView=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",objj_msgSend(_accordionView,"itemHeaderPrototype"))); +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setTarget:"))&&objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_headerView,"setTarget:",_5d); +objj_msgSend(_headerView,"setAction:",sel_getUid("toggle:")); +} +objj_msgSend(_5d,"addSubview:",_headerView); +} +return _5d; +} +}),new objj_method(sel_getUid("toggle:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_accordionView,"toggleItemAtIndex:",objj_msgSend(_61,"index")); +} +}),new objj_method(sel_getUid("setLabel:"),function(_64,_65,_66){ +with(_64){ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setTitle:"))){ +objj_msgSend(_headerView,"setTitle:",_66); +}else{ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setLabel:"))){ +objj_msgSend(_headerView,"setLabel:",_66); +}else{ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setStringValue:"))){ +objj_msgSend(_headerView,"setStringValue:",_66); +} +} +} +} +}),new objj_method(sel_getUid("setEnabled:"),function(_67,_68,_69){ +with(_67){ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_headerView,"setEnabled:",_69); +} +} +}),new objj_method(sel_getUid("setContentView:"),function(_6a,_6b,_6c){ +with(_6a){ +if(_contentView===_6c){ +return; +} +objj_msgSend(_contentView,"removeObserver:forKeyPath:",_6a,"frame"); +objj_msgSend(_contentView,"removeFromSuperview"); +_contentView=_6c; +objj_msgSend(_contentView,"addObserver:forKeyPath:options:context:",_6a,"frame",CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew,NULL); +objj_msgSend(_6a,"addSubview:",_contentView); +objj_msgSend(_accordionView,"_invalidateItemsStartingAtIndex:",objj_msgSend(_6a,"index")); +} +}),new objj_method(sel_getUid("setFrameY:width:"),function(_6d,_6e,aY,_6f){ +with(_6d){ +var _70=(objj_msgSend(_headerView,"frame").size.height); +objj_msgSend(_headerView,"setFrameSize:",{width:_6f,height:_70}); +objj_msgSend(_contentView,"setFrameOrigin:",{x:0,y:_70}); +if(objj_msgSend(_6d,"isCollapsed")){ +objj_msgSend(_6d,"setFrame:",{origin:{x:0,y:aY},size:{width:_6f,height:_70}}); +}else{ +var _71=(objj_msgSend(_contentView,"frame").size.height); +objj_msgSend(_contentView,"setFrameSize:",{width:_6f,height:_71}); +objj_msgSend(_6d,"setFrame:",{origin:{x:0,y:aY},size:{width:_6f,height:_71+_70}}); +} +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_72,_73,_74){ +with(_72){ +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_75,_76,_77,_78,_79,_7a){ +with(_75){ +if(_77==="frame"&&!CGRectEqualToRect(objj_msgSend(_79,"objectForKey:",CPKeyValueChangeOldKey),objj_msgSend(_79,"objectForKey:",CPKeyValueChangeNewKey))){ +objj_msgSend(_accordionView,"_invalidateItemsStartingAtIndex:",objj_msgSend(_75,"index")); +} +} +})]); +p;9;CPAlert.jt;11741;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;22;AppKit/CPApplication.jI;17;AppKit/CPButton.jI;16;AppKit/CPColor.jI;15;AppKit/CPFont.jI;16;AppKit/CPImage.jI;20;AppKit/CPImageView.jI;16;AppKit/CPPanel.jI;20;AppKit/CPTextField.jt;11487; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPApplication.j",NO); +objj_executeFile("AppKit/CPButton.j",NO); +objj_executeFile("AppKit/CPColor.j",NO); +objj_executeFile("AppKit/CPFont.j",NO); +objj_executeFile("AppKit/CPImage.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +objj_executeFile("AppKit/CPPanel.j",NO); +objj_executeFile("AppKit/CPTextField.j",NO); +CPWarningAlertStyle=0; +CPInformationalAlertStyle=1; +CPCriticalAlertStyle=2; +var _1=objj_allocateClassPair(CPView,"CPAlert"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_alertPanel"),new objj_ivar("_messageLabel"),new objj_ivar("_informativeLabel"),new objj_ivar("_alertImageView"),new objj_ivar("_alertStyle"),new objj_ivar("_windowTitle"),new objj_ivar("_windowStyle"),new objj_ivar("_buttons"),new objj_ivar("_delegate"),new objj_ivar("_didEndSelector"),new objj_ivar("_modalDelegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPAlert").super_class},"init")){ +_buttons=objj_msgSend(CPArray,"array"); +_alertStyle=CPWarningAlertStyle; +_alertPanel=nil; +_windowStyle=nil; +_didEndSelector=nil; +_messageLabel=objj_msgSend(CPTextField,"labelWithTitle:","Alert"); +_alertImageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +_informativeLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return _3; +} +}),new objj_method(sel_getUid("setWindowStyle:"),function(_5,_6,_7){ +with(_5){ +_windowStyle=_7; +objj_msgSend(_5,"setTheme:",(_windowStyle&CPHUDBackgroundWindowMask)?objj_msgSend(CPTheme,"defaultHudTheme"):objj_msgSend(CPTheme,"defaultTheme")); +_alertPanel=nil; +} +}),new objj_method(sel_getUid("_createPanel"),function(_8,_9){ +with(_8){ +var _a=CGRectMakeZero(); +_a.size=objj_msgSend(_8,"currentValueForThemeAttribute:","size"); +_alertPanel=objj_msgSend(objj_msgSend(CPPanel,"alloc"),"initWithContentRect:styleMask:",_a,_windowStyle?_windowStyle|CPTitledWindowMask:CPTitledWindowMask); +var _b=objj_msgSend(_alertPanel,"contentView"),_c=objj_msgSend(_buttons,"count"); +if(_c){ +while(_c--){ +objj_msgSend(_b,"addSubview:",_buttons[_c]); +} +}else{ +objj_msgSend(_8,"addButtonWithTitle:","OK"); +} +objj_msgSend(_b,"addSubview:",_messageLabel); +objj_msgSend(_b,"addSubview:",_alertImageView); +objj_msgSend(_b,"addSubview:",_informativeLabel); +} +}),new objj_method(sel_getUid("setTitle:"),function(_d,_e,_f){ +with(_d){ +_windowTitle=_f; +} +}),new objj_method(sel_getUid("title"),function(_10,_11){ +with(_10){ +return _windowTitle; +} +}),new objj_method(sel_getUid("windowStyle"),function(_12,_13){ +with(_12){ +return _windowStyle; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_14,_15,_16){ +with(_14){ +_delegate=_16; +} +}),new objj_method(sel_getUid("delegate"),function(_17,_18){ +with(_17){ +return _delegate; +} +}),new objj_method(sel_getUid("setAlertStyle:"),function(_19,_1a,_1b){ +with(_19){ +_alertStyle=_1b; +} +}),new objj_method(sel_getUid("alertStyle"),function(_1c,_1d){ +with(_1c){ +return _alertStyle; +} +}),new objj_method(sel_getUid("setMessageText:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_messageLabel,"setStringValue:",_20); +} +}),new objj_method(sel_getUid("messageText"),function(_21,_22){ +with(_21){ +return objj_msgSend(_messageLabel,"stringValue"); +} +}),new objj_method(sel_getUid("setInformativeText:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(_informativeLabel,"setStringValue:",_25); +} +}),new objj_method(sel_getUid("informativeText"),function(_26,_27){ +with(_26){ +return objj_msgSend(_informativeLabel,"stringValue"); +} +}),new objj_method(sel_getUid("addButtonWithTitle:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"bounds"),_2c=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMakeZero()),_2d=objj_msgSend(_buttons,"count"); +objj_msgSend(_2c,"setTitle:",_2a); +objj_msgSend(_2c,"setTarget:",_28); +objj_msgSend(_2c,"setTag:",_2d); +objj_msgSend(_2c,"setAction:",sel_getUid("_dismissAlert:")); +objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"addSubview:",_2c); +if(_2d==0){ +objj_msgSend(_2c,"setKeyEquivalent:",CPCarriageReturnCharacter); +}else{ +if(objj_msgSend(_2a,"lowercaseString")==="cancel"){ +objj_msgSend(_2c,"setKeyEquivalent:",CPEscapeFunctionKey); +}else{ +objj_msgSend(_2c,"setKeyEquivalent:",nil); +} +} +objj_msgSend(_buttons,"insertObject:atIndex:",_2c,0); +} +}),new objj_method(sel_getUid("layoutPanel"),function(_2e,_2f){ +with(_2e){ +if(!_alertPanel){ +objj_msgSend(_2e,"_createPanel"); +} +var _30=objj_msgSend(_2e,"currentValueForThemeAttribute:","content-inset"),_31=objj_msgSend(_2e,"currentValueForThemeAttribute:","image-offset"),_32,_33; +switch(_alertStyle){ +case CPWarningAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","warning-image"); +_32="Warning"; +break; +case CPInformationalAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","information-image"); +_32="Information"; +break; +case CPCriticalAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","error-image"); +_32="Error"; +break; +} +objj_msgSend(_alertImageView,"setImage:",_33); +var _34=_33?objj_msgSend(_33,"size"):CGSizeMakeZero(); +objj_msgSend(_alertImageView,"setFrame:",CGRectMake(_31.x,_31.y,_34.width,_34.height)); +objj_msgSend(_alertPanel,"setTitle:",_windowTitle?_windowTitle:_32); +objj_msgSend(_alertPanel,"setFloatingPanel:",YES); +objj_msgSend(_alertPanel,"center"); +objj_msgSend(_messageLabel,"setTextColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-color")); +objj_msgSend(_messageLabel,"setFont:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-font")); +objj_msgSend(_messageLabel,"setTextShadowColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-shadow-color")); +objj_msgSend(_messageLabel,"setTextShadowOffset:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-shadow-offset")); +objj_msgSend(_messageLabel,"setAlignment:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-alignment")); +objj_msgSend(_messageLabel,"setLineBreakMode:",CPLineBreakByWordWrapping); +objj_msgSend(_informativeLabel,"setTextColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-color")); +objj_msgSend(_informativeLabel,"setFont:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-font")); +objj_msgSend(_informativeLabel,"setTextShadowColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-shadow-color")); +objj_msgSend(_informativeLabel,"setTextShadowOffset:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-shadow-offset")); +objj_msgSend(_informativeLabel,"setLineBreakMode:",CPLineBreakByWordWrapping); +var _35=objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"bounds"),_36=CGRectGetWidth(_35)-_30.right,_37=objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-offset"),_38=objj_msgSend(_2e,"currentValueForThemeAttribute:","button-offset"),_39=_36-_30.left,_3a=objj_msgSend((objj_msgSend(_messageLabel,"stringValue")||" "),"sizeWithFont:inWidth:",objj_msgSend(_messageLabel,"font"),_39),_3b=objj_msgSend(_informativeLabel,"stringValue"),_3c=objj_msgSend((_3b||" "),"sizeWithFont:inWidth:",objj_msgSend(_informativeLabel,"font"),_39),_3d=6; +objj_msgSend(_messageLabel,"setFrame:",CGRectMake(_30.left,_30.top,_39,_3a.height+_3d)); +objj_msgSend(_informativeLabel,"setFrame:",CGRectMake(_30.left,CGRectGetMaxY(objj_msgSend(_messageLabel,"frame"))+_37,_39,_3c.height+_3d)); +objj_msgSend(_informativeLabel,"setHidden:",!_3b); +var _3e=_buttons[0],_3f=MAX(CGRectGetMaxY(objj_msgSend(_alertImageView,"frame")),CGRectGetMaxY(_3b?objj_msgSend(_informativeLabel,"frame"):objj_msgSend(_messageLabel,"frame")))+_38; +objj_msgSend(_3e,"setTheme:",objj_msgSend(_2e,"theme")); +objj_msgSend(_3e,"sizeToFit"); +var _40=objj_msgSend(_2e,"currentValueForThemeAttribute:","size"),_41=MAX(_40.height,_3f+CGRectGetHeight(objj_msgSend(_3e,"bounds"))+_30.bottom),_42=_41-CGRectGetHeight(_35),_43=CGSizeMakeCopy(objj_msgSend(_alertPanel,"frame").size); +_43.height+=_42; +objj_msgSend(_alertPanel,"setFrameSize:",_43); +var _44=objj_msgSend(_buttons,"count"); +while(_44--){ +var _45=_buttons[_44]; +objj_msgSend(_45,"setTheme:",objj_msgSend(_2e,"theme")); +objj_msgSend(_45,"sizeToFit"); +var _46=objj_msgSend(_45,"bounds"),_47=MAX(80,CGRectGetWidth(_46)),_48=CGRectGetHeight(_46); +_36-=_47; +objj_msgSend(_45,"setFrame:",CGRectMake(_36,_3f,_47,_48)); +_36-=10; +} +} +}),new objj_method(sel_getUid("runModal"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"layoutPanel"); +objj_msgSend(CPApp,"runModalForWindow:",_alertPanel); +} +}),new objj_method(sel_getUid("beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:"),function(_4b,_4c,_4d,_4e,_4f,_50){ +with(_4b){ +if(!(_windowStyle&CPDocModalWindowMask)){ +objj_msgSend(_4b,"setWindowStyle:",CPDocModalWindowMask); +} +objj_msgSend(_4b,"layoutPanel"); +_didEndSelector=_4f; +_modalDelegate=_4e; +objj_msgSend(CPApp,"beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",_alertPanel,_4d,_4b,sel_getUid("_alertDidEnd:returnCode:contextInfo:"),_50); +} +}),new objj_method(sel_getUid("beginSheetModalForWindow:"),function(_51,_52,_53){ +with(_51){ +if(!(_windowStyle&CPDocModalWindowMask)){ +objj_msgSend(_51,"setWindowStyle:",CPDocModalWindowMask); +} +objj_msgSend(_51,"layoutPanel"); +objj_msgSend(CPApp,"beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",_alertPanel,_53,_51,sel_getUid("_alertDidEnd:returnCode:contextInfo:"),nil); +} +}),new objj_method(sel_getUid("_alertDidEnd:returnCode:contextInfo:"),function(_54,_55,_56,_57,_58){ +with(_54){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("alertDidEnd:returnCode:"))){ +objj_msgSend(_delegate,"alertDidEnd:returnCode:",_54,_57); +} +if(_didEndSelector){ +objj_msgSend(_modalDelegate,_didEndSelector,_54,_57,_58); +} +_didEndSelector=nil; +_modalDelegate=nil; +} +}),new objj_method(sel_getUid("_dismissAlert:"),function(_59,_5a,_5b){ +with(_59){ +if(objj_msgSend(_alertPanel,"isSheet")){ +objj_msgSend(CPApp,"endSheet:returnCode:",_alertPanel,objj_msgSend(_5b,"tag")); +}else{ +objj_msgSend(CPApp,"abortModal"); +objj_msgSend(_alertPanel,"close"); +objj_msgSend(_59,"_alertDidEnd:returnCode:contextInfo:",nil,objj_msgSend(_5b,"tag"),nil); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_5c,_5d){ +with(_5c){ +return "alert"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_5e,_5f){ +with(_5e){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CGSizeMake(400,110),CGInsetMake(15,15,15,50),6,10,CPJustifiedTextAlignment,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"boldSystemFontOfSize:",13),objj_msgSend(CPNull,"null"),CGSizeMakeZero(),CPJustifiedTextAlignment,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"systemFontOfSize:",12),objj_msgSend(CPNull,"null"),CGSizeMakeZero(),CGPointMake(15,12),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["size","content-inset","informative-offset","button-offset","message-text-alignment","message-text-color","message-text-font","message-text-shadow-color","message-text-shadow-offset","informative-text-alignment","informative-text-color","informative-text-font","informative-text-shadow-color","informative-text-shadow-offset","image-offset","information-image","warning-image","error-image"]); +} +})]); +p;13;CPAnimation.jt;5490;@STATIC;1.0;I;21;Foundation/CPObject.ji;23;CAMediaTimingFunction.jt;5417; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CAMediaTimingFunction.j",YES); +CPAnimationEaseInOut=0; +CPAnimationEaseIn=1; +CPAnimationEaseOut=2; +CPAnimationLinear=3; +ACTUAL_FRAME_RATE=0; +var _1=objj_allocateClassPair(CPObject,"CPAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_lastTime"),new objj_ivar("_duration"),new objj_ivar("_animationCurve"),new objj_ivar("_timingFunction"),new objj_ivar("_frameRate"),new objj_ivar("_progress"),new objj_ivar("_delegate"),new objj_ivar("_timer")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithDuration:animationCurve:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPAnimation").super_class},"init"); +if(_3){ +_progress=0; +_duration=MAX(0,_5); +_frameRate=60; +objj_msgSend(_3,"setAnimationCurve:",_6); +} +return _3; +} +}),new objj_method(sel_getUid("setAnimationCurve:"),function(_7,_8,_9){ +with(_7){ +switch(_9){ +case CPAnimationEaseInOut: +timingFunctionName=kCAMediaTimingFunctionEaseInEaseOut; +break; +case CPAnimationEaseIn: +timingFunctionName=kCAMediaTimingFunctionEaseIn; +break; +case CPAnimationEaseOut: +timingFunctionName=kCAMediaTimingFunctionEaseOut; +break; +case CPAnimationLinear: +timingFunctionName=kCAMediaTimingFunctionLinear; +break; +default: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid value provided for animation curve"); +break; +} +_animationCurve=_9; +_timingFunction=objj_msgSend(CAMediaTimingFunction,"functionWithName:",timingFunctionName); +} +}),new objj_method(sel_getUid("animationCurve"),function(_a,_b){ +with(_a){ +return _animationCurve; +} +}),new objj_method(sel_getUid("setDuration:"),function(_c,_d,_e){ +with(_c){ +if(_e<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"aDuration can't be negative"); +} +_duration=_e; +} +}),new objj_method(sel_getUid("duration"),function(_f,_10){ +with(_f){ +return _duration; +} +}),new objj_method(sel_getUid("setFrameRate:"),function(_11,_12,_13){ +with(_11){ +if(_13<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"frameRate can't be negative"); +} +_frameRate=_13; +} +}),new objj_method(sel_getUid("frameRate"),function(_14,_15){ +with(_14){ +return _frameRate; +} +}),new objj_method(sel_getUid("delegate"),function(_16,_17){ +with(_16){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_18,_19,_1a){ +with(_18){ +_delegate=_1a; +} +}),new objj_method(sel_getUid("startAnimation"),function(_1b,_1c){ +with(_1b){ +if(_timer||_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationShouldStart:"))&&!objj_msgSend(_delegate,"animationShouldStart:",_1b)){ +return; +} +if(_progress===1){ +_progress=0; +} +ACTUAL_FRAME_RATE=0; +_lastTime=new Date(); +_timer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0,_1b,sel_getUid("animationTimerDidFire:"),nil,YES); +} +}),new objj_method(sel_getUid("animationTimerDidFire:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=new Date(),_21=MIN(1,objj_msgSend(_1d,"currentProgress")+(_20-_lastTime)/(_duration*1000)); +_lastTime=_20; +++ACTUAL_FRAME_RATE; +objj_msgSend(_1d,"setCurrentProgress:",_21); +if(_21===1){ +objj_msgSend(_timer,"invalidate"); +_timer=nil; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationDidEnd:"))){ +objj_msgSend(_delegate,"animationDidEnd:",_1d); +} +} +} +}),new objj_method(sel_getUid("stopAnimation"),function(_22,_23){ +with(_22){ +if(!_timer){ +return; +} +objj_msgSend(_timer,"invalidate"); +_timer=nil; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationDidStop:"))){ +objj_msgSend(_delegate,"animationDidStop:",_22); +} +} +}),new objj_method(sel_getUid("isAnimating"),function(_24,_25){ +with(_24){ +return _timer; +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(_26,_27,_28){ +with(_26){ +_progress=_28; +} +}),new objj_method(sel_getUid("currentProgress"),function(_29,_2a){ +with(_29){ +return _progress; +} +}),new objj_method(sel_getUid("currentValue"),function(_2b,_2c){ +with(_2b){ +var t=objj_msgSend(_2b,"currentProgress"); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animation:valueForProgress:"))){ +return objj_msgSend(_delegate,"animation:valueForProgress:",_2b,t); +} +var c1=[],c2=[]; +objj_msgSend(_timingFunction,"getControlPointAtIndex:values:",1,c1); +objj_msgSend(_timingFunction,"getControlPointAtIndex:values:",2,c2); +return _2d(t,c1[0],c1[1],c2[0],c2[1],_duration); +} +})]); +var _2d=_2d=function(t,p1x,p1y,p2x,p2y,_2e){ +var ax=0,bx=0,cx=0,ay=0,by=0,cy=0; +sampleCurveX=function(t){ +return ((ax*t+bx)*t+cx)*t; +}; +sampleCurveY=function(t){ +return ((ay*t+by)*t+cy)*t; +}; +sampleCurveDerivativeX=function(t){ +return (3*ax*t+2*bx)*t+cx; +}; +solveEpsilon=function(_2f){ +return 1/(200*_2f); +}; +solve=function(x,_30){ +return sampleCurveY(solveCurveX(x,_30)); +}; +solveCurveX=function(x,_31){ +var t0,t1,t2,x2,d2,i; +fabs=function(n){ +if(n>=0){ +return n; +}else{ +return 0-n; +} +}; +for(t2=x,i=0;i<8;i++){ +x2=sampleCurveX(t2)-x; +if(fabs(x2)<_31){ +return t2; +} +d2=sampleCurveDerivativeX(t2); +if(fabs(d2)<0.000001){ +break; +} +t2=t2-x2/d2; +} +t0=0; +t1=1; +t2=x; +if(t2<t0){ +return t0; +} +if(t2>t1){ +return t1; +} +while(t0<t1){ +x2=sampleCurveX(t2); +if(fabs(x2-x)<_31){ +return t2; +} +if(x>x2){ +t0=t2; +}else{ +t1=t2; +} +t2=(t1-t0)*0.5+t0; +} +return t2; +}; +cx=3*p1x; +bx=3*(p2x-p1x)-cx; +ax=1-cx-bx; +cy=3*p1y; +by=3*(p2y-p1y)-cy; +ay=1-cy-by; +return solve(t,solveEpsilon(_2e)); +}; +p;15;CPApplication.jt;29757;@STATIC;1.0;I;21;Foundation/CPBundle.ji;17;CPCompatibility.ji;9;CPEvent.ji;8;CPMenu.ji;13;CPResponder.ji;22;CPDocumentController.ji;14;CPThemeBlend.ji;14;CPCibLoading.ji;12;CPPlatform.jt;29564; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPDocumentController.j",YES); +objj_executeFile("CPThemeBlend.j",YES); +objj_executeFile("CPCibLoading.j",YES); +objj_executeFile("CPPlatform.j",YES); +var _1="CPMainCibFile",_2="Main cib file base name"; +CPApp=nil; +CPApplicationWillFinishLaunchingNotification="CPApplicationWillFinishLaunchingNotification"; +CPApplicationDidFinishLaunchingNotification="CPApplicationDidFinishLaunchingNotification"; +CPApplicationWillTerminateNotification="CPApplicationWillTerminateNotification"; +CPApplicationWillBecomeActiveNotification="CPApplicationWillBecomeActiveNotification"; +CPApplicationDidBecomeActiveNotification="CPApplicationDidBecomeActiveNotification"; +CPApplicationWillResignActiveNotification="CPApplicationWillResignActiveNotification"; +CPApplicationDidResignActiveNotification="CPApplicationDidResignActiveNotification"; +CPTerminateNow=YES; +CPTerminateCancel=NO; +CPTerminateLater=-1; +CPRunStoppedResponse=-1000; +CPRunAbortedResponse=-1001; +CPRunContinuesResponse=-1002; +var _3=objj_allocateClassPair(CPResponder,"CPApplication"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_eventListeners"),new objj_ivar("_currentEvent"),new objj_ivar("_windows"),new objj_ivar("_keyWindow"),new objj_ivar("_mainWindow"),new objj_ivar("_previousKeyWindow"),new objj_ivar("_previousMainWindow"),new objj_ivar("_mainMenu"),new objj_ivar("_documentController"),new objj_ivar("_currentSession"),new objj_ivar("_delegate"),new objj_ivar("_finishedLaunching"),new objj_ivar("_isActive"),new objj_ivar("_namedArgs"),new objj_ivar("_args"),new objj_ivar("_fullArgsString"),new objj_ivar("_applicationIconImage"),new objj_ivar("_aboutPanel"),new objj_ivar("_themeBlend")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("themeBlend"),function(_5,_6){ +with(_5){ +return _themeBlend; +} +}),new objj_method(sel_getUid("setThemeBlend:"),function(_7,_8,_9){ +with(_7){ +_themeBlend=_9; +} +}),new objj_method(sel_getUid("init"),function(_a,_b){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPApplication").super_class},"init"); +CPApp=_a; +if(_a){ +_eventListeners=[]; +_windows=[]; +objj_msgSend(_windows,"addObject:",nil); +} +return _a; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_c,_d,_e){ +with(_c){ +if(_delegate==_e){ +return; +} +var _f=objj_msgSend(CPNotificationCenter,"defaultCenter"),_10=[CPApplicationWillFinishLaunchingNotification,sel_getUid("applicationWillFinishLaunching:"),CPApplicationDidFinishLaunchingNotification,sel_getUid("applicationDidFinishLaunching:"),CPApplicationWillBecomeActiveNotification,sel_getUid("applicationWillBecomeActive:"),CPApplicationDidBecomeActiveNotification,sel_getUid("applicationDidBecomeActive:"),CPApplicationWillResignActiveNotification,sel_getUid("applicationWillResignActive:"),CPApplicationDidResignActiveNotification,sel_getUid("applicationDidResignActive:"),CPApplicationWillTerminateNotification,sel_getUid("applicationWillTerminate:")],_11=objj_msgSend(_10,"count"); +if(_delegate){ +var _12=0; +for(;_12<_11;_12+=2){ +var _13=_10[_12],_14=_10[_12+1]; +if(objj_msgSend(_delegate,"respondsToSelector:",_14)){ +objj_msgSend(_f,"removeObserver:name:object:",_delegate,_13,_c); +} +} +} +_delegate=_e; +var _12=0; +for(;_12<_11;_12+=2){ +var _13=_10[_12],_14=_10[_12+1]; +if(objj_msgSend(_delegate,"respondsToSelector:",_14)){ +objj_msgSend(_f,"addObserver:selector:name:object:",_delegate,_14,_13,_c); +} +} +} +}),new objj_method(sel_getUid("delegate"),function(_15,_16){ +with(_15){ +return _delegate; +} +}),new objj_method(sel_getUid("finishLaunching"),function(_17,_18){ +with(_17){ +window.status=" "; +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +var _19=objj_msgSend(CPBundle,"mainBundle"),_1a=objj_msgSend(_19,"objectForInfoDictionaryKey:","CPBundleDocumentTypes"); +if(objj_msgSend(_1a,"count")>0){ +_documentController=objj_msgSend(CPDocumentController,"sharedDocumentController"); +} +var _1b=objj_msgSend(_19,"objectForInfoDictionaryKey:","CPApplicationDelegateClass"); +if(_1b){ +var _1c=objj_getClass(_1b); +if(_1c){ +if(objj_msgSend(_documentController,"class")==_1c){ +objj_msgSend(_17,"setDelegate:",_documentController); +}else{ +objj_msgSend(_17,"setDelegate:",objj_msgSend(objj_msgSend(_1c,"alloc"),"init")); +} +} +} +var _1d=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_1d,"postNotificationName:object:",CPApplicationWillFinishLaunchingNotification,_17); +var _1e=!!_documentController,_1f=window.cpOpeningURLStrings&&window.cpOpeningURLStrings(),_20=0,_21=objj_msgSend(_1f,"count"); +for(;_20<_21;++_20){ +_1e=!objj_msgSend(_17,"_openURL:",objj_msgSend(CPURL,"URLWithString:",_1f[_20]))||_1e; +} +if(_1e&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("applicationShouldOpenUntitledFile:"))){ +_1e=objj_msgSend(_delegate,"applicationShouldOpenUntitledFile:",_17); +} +if(_1e){ +objj_msgSend(_documentController,"newDocument:",_17); +} +objj_msgSend(_documentController,"_updateRecentDocumentsMenu"); +objj_msgSend(_1d,"postNotificationName:object:",CPApplicationDidFinishLaunchingNotification,_17); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +_finishedLaunching=YES; +} +}),new objj_method(sel_getUid("terminate:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPApplicationWillTerminateNotification,_22); +if(!objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(objj_msgSend(CPDocumentController,"sharedDocumentController"),"closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:",_22,sel_getUid("_documentController:didCloseAll:context:"),nil); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_22,"keyWindow"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +}),new objj_method(sel_getUid("setApplicationIconImage:"),function(_25,_26,_27){ +with(_25){ +_applicationIconImage=_27; +} +}),new objj_method(sel_getUid("applicationIconImage"),function(_28,_29){ +with(_28){ +if(_applicationIconImage){ +return _applicationIconImage; +} +var _2a=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPApplicationIcon"); +if(_2a){ +_applicationIconImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",_2a); +} +return _applicationIconImage; +} +}),new objj_method(sel_getUid("orderFrontStandardAboutPanel:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"orderFrontStandardAboutPanelWithOptions:",nil); +} +}),new objj_method(sel_getUid("orderFrontStandardAboutPanelWithOptions:"),function(_2e,_2f,_30){ +with(_2e){ +if(!_aboutPanel){ +var _31=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),_32=objj_msgSend(_30,"objectForKey:","ApplicationName")||objj_msgSend(_31,"objectForKey:","CPBundleName"),_33=objj_msgSend(_30,"objectForKey:","ApplicationIcon")||objj_msgSend(_2e,"applicationIconImage"),_34=objj_msgSend(_30,"objectForKey:","Version")||objj_msgSend(_31,"objectForKey:","CPBundleVersion"),_35=objj_msgSend(_30,"objectForKey:","ApplicationVersion")||objj_msgSend(_31,"objectForKey:","CPBundleShortVersionString"),_36=objj_msgSend(_30,"objectForKey:","Copyright")||objj_msgSend(_31,"objectForKey:","CPHumanReadableCopyright"); +var _37=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindowController,"class")),"pathForResource:","AboutPanel.cib"),_38=objj_msgSend(CPWindowController,"alloc"),_38=objj_msgSend(_38,"initWithWindowCibPath:owner:",_37,_38),_39=objj_msgSend(_38,"window"),_3a=objj_msgSend(_39,"contentView"),_3b=objj_msgSend(_3a,"viewWithTag:",1),_3c=objj_msgSend(_3a,"viewWithTag:",2),_3d=objj_msgSend(_3a,"viewWithTag:",3),_3e=objj_msgSend(_3a,"viewWithTag:",4),_3f=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_2e,"class")),"pathForResource:","standardApplicationIcon.png"); +objj_msgSend(_3c,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",14)); +objj_msgSend(_3c,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3d,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3e,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3b,"setImage:",_33||objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",_3f,CGSizeMake(256,256))); +objj_msgSend(_3c,"setStringValue:",_32||""); +if(_35&&_34){ +objj_msgSend(_3d,"setStringValue:","Version "+_35+" ("+_34+")"); +}else{ +if(_35||_34){ +objj_msgSend(_3d,"setStringValue:","Version "+(_35||_34)); +}else{ +objj_msgSend(_3d,"setStringValue:",""); +} +} +objj_msgSend(_3e,"setStringValue:",_36||""); +objj_msgSend(_39,"center"); +_aboutPanel=_39; +} +objj_msgSend(_aboutPanel,"orderFront:",_2e); +} +}),new objj_method(sel_getUid("_documentController:didCloseAll:context:"),function(_40,_41,_42,_43,_44){ +with(_40){ +if(_43){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("applicationShouldTerminate:"))){ +objj_msgSend(_40,"replyToApplicationShouldTerminate:",objj_msgSend(_delegate,"applicationShouldTerminate:",_40)); +}else{ +objj_msgSend(_40,"replyToApplicationShouldTerminate:",YES); +} +} +} +}),new objj_method(sel_getUid("replyToApplicationShouldTerminate:"),function(_45,_46,_47){ +with(_45){ +if(_47==CPTerminateNow){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPApplicationWillTerminateNotification,_45); +objj_msgSend(CPPlatform,"terminateApplication"); +} +} +}),new objj_method(sel_getUid("activateIgnoringOtherApps:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(_48,"_willBecomeActive"); +objj_msgSend(CPPlatform,"activateIgnoringOtherApps:",_4a); +_isActive=YES; +objj_msgSend(_48,"_willResignActive"); +} +}),new objj_method(sel_getUid("deactivate"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_4b,"_willResignActive"); +objj_msgSend(CPPlatform,"deactivate"); +_isActive=NO; +objj_msgSend(_4b,"_didResignActive"); +} +}),new objj_method(sel_getUid("isActive"),function(_4d,_4e){ +with(_4d){ +return _isActive; +} +}),new objj_method(sel_getUid("hideOtherApplications:"),function(_4f,_50,_51){ +with(_4f){ +objj_msgSend(CPPlatform,"hideOtherApplications:",_4f); +} +}),new objj_method(sel_getUid("run"),function(_52,_53){ +with(_52){ +objj_msgSend(_52,"finishLaunching"); +} +}),new objj_method(sel_getUid("runModalForWindow:"),function(_54,_55,_56){ +with(_54){ +objj_msgSend(_54,"runModalSession:",objj_msgSend(_54,"beginModalSessionForWindow:",_56)); +} +}),new objj_method(sel_getUid("stopModalWithCode:"),function(_57,_58,_59){ +with(_57){ +if(!_currentSession){ +return; +} +_currentSession._state=_59; +_currentSession=_currentSession._previous; +objj_msgSend(_57,"_removeRunModalLoop"); +} +}),new objj_method(sel_getUid("_removeRunModalLoop"),function(_5a,_5b){ +with(_5a){ +var _5c=_eventListeners.length; +while(_5c--){ +if(_eventListeners[_5c]._callback===_CPRunModalLoop){ +_eventListeners.splice(_5c,1); +return; +} +} +} +}),new objj_method(sel_getUid("stopModal"),function(_5d,_5e){ +with(_5d){ +objj_msgSend(_5d,"stopModalWithCode:",CPRunStoppedResponse); +} +}),new objj_method(sel_getUid("abortModal"),function(_5f,_60){ +with(_5f){ +objj_msgSend(_5f,"stopModalWithCode:",CPRunAbortedResponse); +} +}),new objj_method(sel_getUid("beginModalSessionForWindow:"),function(_61,_62,_63){ +with(_61){ +return _64(_63,0); +} +}),new objj_method(sel_getUid("runModalSession:"),function(_65,_66,_67){ +with(_65){ +_67._previous=_currentSession; +_currentSession=_67; +var _68=_67._window; +objj_msgSend(_68,"center"); +objj_msgSend(_68,"makeKeyAndOrderFront:",_65); +objj_msgSend(CPApp,"setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:",_CPRunModalLoop,CPAnyEventMask,nil,0,NO); +} +}),new objj_method(sel_getUid("modalWindow"),function(_69,_6a){ +with(_69){ +if(!_currentSession){ +return nil; +} +return _currentSession._window; +} +}),new objj_method(sel_getUid("_handleKeyEquivalent:"),function(_6b,_6c,_6d){ +with(_6b){ +return objj_msgSend(objj_msgSend(_6b,"keyWindow"),"performKeyEquivalent:",_6d)||objj_msgSend(_mainMenu,"performKeyEquivalent:",_6d); +} +}),new objj_method(sel_getUid("sendEvent:"),function(_6e,_6f,_70){ +with(_6e){ +_currentEvent=_70; +var _71=objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_willPropagateCurrentDOMEvent"); +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +if(objj_msgSend(_70,"_couldBeKeyEquivalent")&&objj_msgSend(_6e,"_handleKeyEquivalent:",_70)){ +var _72=objj_msgSend(_70,"characters"),_73=objj_msgSend(_70,"modifierFlags"); +if((_72=="c"||_72=="x"||_72=="v")&&(_73&CPPlatformActionKeyMask)){ +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +return; +} +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",_71); +if(_eventListeners.length){ +if(_eventListeners[_eventListeners.length-1]._mask&(1<<objj_msgSend(_70,"type"))){ +_eventListeners.pop()._callback(_70); +} +return; +} +objj_msgSend(objj_msgSend(_70,"window"),"sendEvent:",_70); +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_74,_75,_76){ +with(_74){ +if(objj_msgSend(_delegate,"respondsToSelector:",_76)){ +objj_msgSend(_delegate,"performSelector:",_76); +}else{ +objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPApplication").super_class},"doCommandBySelector:",_76); +} +} +}),new objj_method(sel_getUid("keyWindow"),function(_77,_78){ +with(_77){ +return _keyWindow; +} +}),new objj_method(sel_getUid("mainWindow"),function(_79,_7a){ +with(_79){ +return _mainWindow; +} +}),new objj_method(sel_getUid("windowWithWindowNumber:"),function(_7b,_7c,_7d){ +with(_7b){ +return _windows[_7d]; +} +}),new objj_method(sel_getUid("windows"),function(_7e,_7f){ +with(_7e){ +return _windows; +} +}),new objj_method(sel_getUid("orderedWindows"),function(_80,_81){ +with(_80){ +return CPWindowObjectList(); +} +}),new objj_method(sel_getUid("hide:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(CPPlatform,"hide:",_82); +} +}),new objj_method(sel_getUid("mainMenu"),function(_85,_86){ +with(_85){ +return _mainMenu; +} +}),new objj_method(sel_getUid("setMainMenu:"),function(_87,_88,_89){ +with(_87){ +if(objj_msgSend(_89,"_menuName")==="CPMainMenu"){ +if(_mainMenu===_89){ +return; +} +_mainMenu=_89; +if(objj_msgSend(CPPlatform,"supportsNativeMainMenu")){ +window.cpSetMainMenu(_mainMenu); +} +}else{ +objj_msgSend(_89,"_setMenuName:","CPMainMenu"); +} +} +}),new objj_method(sel_getUid("orderFrontColorPanel:"),function(_8a,_8b,_8c){ +with(_8a){ +objj_msgSend(objj_msgSend(CPColorPanel,"sharedColorPanel"),"orderFront:",_8a); +} +}),new objj_method(sel_getUid("tryToPerform:with:"),function(_8d,_8e,_8f,_90){ +with(_8d){ +if(!_8f){ +return NO; +} +if(objj_msgSendSuper({receiver:_8d,super_class:objj_getClass("CPApplication").super_class},"tryToPerform:with:",_8f,_90)){ +return YES; +} +if(objj_msgSend(_delegate,"respondsToSelector:",_8f)){ +objj_msgSend(_delegate,"performSelector:withObject:",_8f,_90); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("sendAction:to:from:"),function(_91,_92,_93,_94,_95){ +with(_91){ +var _96=objj_msgSend(_91,"targetForAction:to:from:",_93,_94,_95); +if(!_96){ +return NO; +} +objj_msgSend(_96,"performSelector:withObject:",_93,_95); +return YES; +} +}),new objj_method(sel_getUid("targetForAction:to:from:"),function(_97,_98,_99,_9a,_9b){ +with(_97){ +if(!_99){ +return nil; +} +if(_9a){ +return _9a; +} +return objj_msgSend(_97,"targetForAction:",_99); +} +}),new objj_method(sel_getUid("_targetForWindow:action:"),function(_9c,_9d,_9e,_9f){ +with(_9c){ +var _a0=objj_msgSend(_9e,"firstResponder"),_a1=YES; +while(_a0){ +if(objj_msgSend(_a0,"respondsToSelector:",_9f)){ +return _a0; +} +if(_a0==_9e){ +_a1=NO; +} +_a0=objj_msgSend(_a0,"nextResponder"); +} +if(_a1&&objj_msgSend(_9e,"respondsToSelector:",_9f)){ +return _9e; +} +var _a2=objj_msgSend(_9e,"delegate"); +if(objj_msgSend(_a2,"respondsToSelector:",_9f)){ +return _a2; +} +var _a3=objj_msgSend(_9e,"windowController"); +if(objj_msgSend(_a3,"respondsToSelector:",_9f)){ +return _a3; +} +var _a4=objj_msgSend(_a3,"document"); +if(_a4!==_a2&&objj_msgSend(_a4,"respondsToSelector:",_9f)){ +return _a4; +} +return nil; +} +}),new objj_method(sel_getUid("targetForAction:"),function(_a5,_a6,_a7){ +with(_a5){ +if(!_a7){ +return nil; +} +var _a8=objj_msgSend(_a5,"_targetForWindow:action:",objj_msgSend(_a5,"keyWindow"),_a7); +if(_a8){ +return _a8; +} +_a8=objj_msgSend(_a5,"_targetForWindow:action:",objj_msgSend(_a5,"mainWindow"),_a7); +if(_a8){ +return _a8; +} +if(objj_msgSend(_a5,"respondsToSelector:",_a7)){ +return _a5; +} +if(objj_msgSend(_delegate,"respondsToSelector:",_a7)){ +return _delegate; +} +if(objj_msgSend(_documentController,"respondsToSelector:",_a7)){ +return _documentController; +} +return nil; +} +}),new objj_method(sel_getUid("setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:"),function(_a9,_aa,_ab,_ac,_ad,_ae,_af){ +with(_a9){ +_eventListeners.push(_b0(_ac,_ab)); +} +}),new objj_method(sel_getUid("setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:"),function(_b1,_b2,_b3,_b4,_b5,_b6,_b7,_b8){ +with(_b1){ +_eventListeners.push(_b0(_b5,function(_b9){ +objj_msgSend(_b3,_b4,_b9); +})); +} +}),new objj_method(sel_getUid("currentEvent"),function(_ba,_bb){ +with(_ba){ +return _currentEvent; +} +}),new objj_method(sel_getUid("beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:"),function(_bc,_bd,_be,_bf,_c0,_c1,_c2){ +with(_bc){ +var _c3=objj_msgSend(_be,"styleMask"); +if(!(_c3&CPDocModalWindowMask)){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Currently only CPDocModalWindowMask style mask is supported for attached sheets"); +return; +} +objj_msgSend(_bf,"orderFront:",_bc); +objj_msgSend(_be,"setPlatformWindow:",objj_msgSend(_bf,"platformWindow")); +objj_msgSend(_bf,"_attachSheet:modalDelegate:didEndSelector:contextInfo:",_be,_c0,_c1,_c2); +} +}),new objj_method(sel_getUid("endSheet:returnCode:"),function(_c4,_c5,_c6,_c7){ +with(_c4){ +var _c8=objj_msgSend(_windows,"count"); +while(--_c8>=0){ +var _c9=objj_msgSend(_windows,"objectAtIndex:",_c8); +var _ca=_c9._sheetContext; +if(_ca!=nil&&_ca["sheet"]===_c6){ +_ca["returnCode"]=_c7; +objj_msgSend(_c9,"_detachSheetWindow"); +return; +} +} +} +}),new objj_method(sel_getUid("endSheet:"),function(_cb,_cc,_cd){ +with(_cb){ +objj_msgSend(_cb,"endSheet:returnCode:",_cd,0); +} +}),new objj_method(sel_getUid("arguments"),function(_ce,_cf){ +with(_ce){ +if(_fullArgsString!==window.location.hash){ +objj_msgSend(_ce,"_reloadArguments"); +} +return _args; +} +}),new objj_method(sel_getUid("setArguments:"),function(_d0,_d1,_d2){ +with(_d0){ +if(!_d2||_d2.length==0){ +_args=[]; +window.location.hash="#"; +return; +} +if(objj_msgSend(_d2,"class")!=CPArray){ +_d2=objj_msgSend(CPArray,"arrayWithObject:",_d2); +} +_args=_d2; +var _d3=objj_msgSend(_args,"copy"); +for(var i=0,_d4=_d3.length;i<_d4;i++){ +_d3[i]=encodeURIComponent(_d3[i]); +} +var _d5=objj_msgSend(_d3,"componentsJoinedByString:","/"); +window.location.hash="#"+_d5; +} +}),new objj_method(sel_getUid("_reloadArguments"),function(_d6,_d7){ +with(_d6){ +_fullArgsString=window.location.hash; +if(_fullArgsString.length){ +var _d8=_fullArgsString.substring(1).split("/"); +for(var i=0,_d9=_d8.length;i<_d9;i++){ +_d8[i]=decodeURIComponent(_d8[i]); +} +_args=_d8; +}else{ +_args=[]; +} +} +}),new objj_method(sel_getUid("namedArguments"),function(_da,_db){ +with(_da){ +return _namedArgs; +} +}),new objj_method(sel_getUid("_openURL:"),function(_dc,_dd,_de){ +with(_dc){ +if(_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("application:openFile:"))){ +CPLog.warn("application:openFile: is deprecated, use application:openURL: instead."); +return objj_msgSend(_delegate,"application:openFile:",_dc,objj_msgSend(_de,"absoluteString")); +} +if(_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("application:openURL:"))){ +return objj_msgSend(_delegate,"application:openURL:",_dc,_de); +} +return !!objj_msgSend(_documentController,"openDocumentWithContentsOfURL:display:error:",_de,YES,NULL); +} +}),new objj_method(sel_getUid("_willBecomeActive"),function(_df,_e0){ +with(_df){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationWillBecomeActiveNotification,_df,nil); +} +}),new objj_method(sel_getUid("_didBecomeActive"),function(_e1,_e2){ +with(_e1){ +if(!objj_msgSend(_e1,"keyWindow")&&_previousKeyWindow&&objj_msgSend(objj_msgSend(_e1,"windows"),"indexOfObjectIdenticalTo:",_previousKeyWindow)!==CPNotFound){ +objj_msgSend(_previousKeyWindow,"makeKeyWindow"); +} +if(!objj_msgSend(_e1,"mainWindow")&&_previousMainWindow&&objj_msgSend(objj_msgSend(_e1,"windows"),"indexOfObjectIdenticalTo:",_previousMainWindow)!==CPNotFound){ +objj_msgSend(_previousMainWindow,"makeMainWindow"); +} +if(objj_msgSend(_e1,"keyWindow")){ +objj_msgSend(objj_msgSend(_e1,"keyWindow"),"orderFront:",_e1); +}else{ +if(objj_msgSend(_e1,"mainWindow")){ +objj_msgSend(objj_msgSend(_e1,"mainWindow"),"makeKeyAndOrderFront:",_e1); +}else{ +objj_msgSend(objj_msgSend(_e1,"mainMenu")._menuWindow,"makeKeyWindow"); +} +} +_previousKeyWindow=nil; +_previousMainWindow=nil; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationDidBecomeActiveNotification,_e1,nil); +} +}),new objj_method(sel_getUid("_willResignActive"),function(_e3,_e4){ +with(_e3){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationWillResignActiveNotification,_e3,nil); +} +}),new objj_method(sel_getUid("_didResignActive"),function(_e5,_e6){ +with(_e5){ +if(_e5._activeMenu){ +objj_msgSend(_e5._activeMenu,"cancelTracking"); +} +if(objj_msgSend(_e5,"keyWindow")){ +_previousKeyWindow=objj_msgSend(_e5,"keyWindow"); +objj_msgSend(_previousKeyWindow,"resignKeyWindow"); +} +if(objj_msgSend(_e5,"mainWindow")){ +_previousMainWindow=objj_msgSend(_e5,"mainWindow"); +objj_msgSend(_previousMainWindow,"resignMainWindow"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationDidResignActiveNotification,_e5,nil); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedApplication"),function(_e7,_e8){ +with(_e7){ +if(!CPApp){ +CPApp=objj_msgSend(objj_msgSend(CPApplication,"alloc"),"init"); +} +return CPApp; +} +}),new objj_method(sel_getUid("defaultThemeName"),function(_e9,_ea){ +with(_e9){ +return (objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPDefaultTheme")||"Aristo"); +} +})]); +var _64=function(_eb,_ec){ +return {_window:_eb,_state:CPRunContinuesResponse,_previous:nil}; +}; +var _b0=function(_ed,_ee){ +return {_mask:_ed,_callback:_ee}; +}; +_CPRunModalLoop=function(_ef){ +objj_msgSend(CPApp,"setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:",_CPRunModalLoop,CPAnyEventMask,nil,0,NO); +var _f0=objj_msgSend(_ef,"window"),_f1=CPApp._currentSession; +if(_f0==_f1._window||objj_msgSend(_f0,"worksWhenModal")){ +objj_msgSend(_f0,"sendEvent:",_ef); +} +}; +CPApplicationMain=function(_f2,_f3){ +if(window.parent!==window&&typeof window.parent._childAppIsStarting==="function"){ +window.parent._childAppIsStarting(window); +} +var _f4=objj_msgSend(CPBundle,"mainBundle"),_f5=objj_msgSend(_f4,"principalClass"); +if(!_f5){ +_f5=objj_msgSend(CPApplication,"class"); +} +objj_msgSend(_f5,"sharedApplication"); +if(objj_msgSend(_f2,"containsObject:","debug")){ +CPLogRegister(CPLogPopup); +} +CPApp._args=_f2; +CPApp._namedArgs=_f3; +objj_msgSend(_CPAppBootstrapper,"performActions"); +}; +var _f6=nil; +var _3=objj_allocateClassPair(CPObject,"_CPAppBootstrapper"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_4,[new objj_method(sel_getUid("actions"),function(_f7,_f8){ +with(_f7){ +return [sel_getUid("bootstrapPlatform"),sel_getUid("loadDefaultTheme"),sel_getUid("loadMainCibFile")]; +} +}),new objj_method(sel_getUid("performActions"),function(_f9,_fa){ +with(_f9){ +if(!_f6){ +_f6=objj_msgSend(_f9,"actions"); +} +while(_f6.length){ +var _fb=_f6.shift(); +if(objj_msgSend(_f9,_fb)){ +return; +} +} +objj_msgSend(CPApp,"run"); +} +}),new objj_method(sel_getUid("bootstrapPlatform"),function(_fc,_fd){ +with(_fc){ +return objj_msgSend(CPPlatform,"bootstrap"); +} +}),new objj_method(sel_getUid("loadDefaultTheme"),function(_fe,_ff){ +with(_fe){ +var _100=objj_msgSend(CPApplication,"defaultThemeName"),_101=nil; +if(_100==="Aristo"){ +_101=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPApplication,"class")),"pathForResource:",_100+".blend"); +}else{ +_101=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_100+".blend"); +} +var _102=objj_msgSend(objj_msgSend(CPThemeBlend,"alloc"),"initWithContentsOfURL:",_101); +objj_msgSend(_102,"loadWithDelegate:",_fe); +return YES; +} +}),new objj_method(sel_getUid("blendDidFinishLoading:"),function(self,_103,_104){ +with(self){ +objj_msgSend(objj_msgSend(CPApplication,"sharedApplication"),"setThemeBlend:",_104); +objj_msgSend(CPTheme,"setDefaultTheme:",objj_msgSend(CPTheme,"themeNamed:",objj_msgSend(CPApplication,"defaultThemeName"))); +objj_msgSend(self,"performActions"); +} +}),new objj_method(sel_getUid("loadMainCibFile"),function(self,_105){ +with(self){ +var _106=objj_msgSend(CPBundle,"mainBundle"),_107=objj_msgSend(_106,"objectForInfoDictionaryKey:",_1)||objj_msgSend(_106,"objectForInfoDictionaryKey:",_2); +if(_107){ +objj_msgSend(_106,"loadCibFile:externalNameTable:loadDelegate:",_107,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",CPApp,CPCibOwner),self); +return YES; +}else{ +objj_msgSend(self,"loadCiblessBrowserMainMenu"); +} +return NO; +} +}),new objj_method(sel_getUid("loadCiblessBrowserMainMenu"),function(self,_108){ +with(self){ +var _109=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","MainMenu"); +objj_msgSend(_109,"setAutoenablesItems:",NO); +var _10a=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPApplication,"class")),_10b=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","New",sel_getUid("newDocument:"),"n"); +objj_msgSend(_10b,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/New.png"),CGSizeMake(16,16))); +objj_msgSend(_10b,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/NewHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_109,"addItem:",_10b); +var _10c=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Open",sel_getUid("openDocument:"),"o"); +objj_msgSend(_10c,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/Open.png"),CGSizeMake(16,16))); +objj_msgSend(_10c,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/OpenHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_109,"addItem:",_10c); +var _10d=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","Save"),_10e=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save",sel_getUid("saveDocument:"),nil); +objj_msgSend(_10e,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/Save.png"),CGSizeMake(16,16))); +objj_msgSend(_10e,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/SaveHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_10d,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save",sel_getUid("saveDocument:"),"s")); +objj_msgSend(_10d,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save As",sel_getUid("saveDocumentAs:"),nil)); +objj_msgSend(_10e,"setSubmenu:",_10d); +objj_msgSend(_109,"addItem:",_10e); +var _10f=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Edit",nil,nil),_110=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","Edit"),_111=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Undo",sel_getUid("undo:"),CPUndoKeyEquivalent),_112=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Redo",sel_getUid("redo:"),CPRedoKeyEquivalent); +objj_msgSend(_111,"setKeyEquivalentModifierMask:",CPUndoKeyEquivalentModifierMask); +objj_msgSend(_112,"setKeyEquivalentModifierMask:",CPRedoKeyEquivalentModifierMask); +objj_msgSend(_110,"addItem:",_111); +objj_msgSend(_110,"addItem:",_112); +objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Cut",sel_getUid("cut:"),"x")),objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Copy",sel_getUid("copy:"),"c")),objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Paste",sel_getUid("paste:"),"v")); +objj_msgSend(_10f,"setSubmenu:",_110); +objj_msgSend(_10f,"setHidden:",YES); +objj_msgSend(_109,"addItem:",_10f); +objj_msgSend(_109,"addItem:",objj_msgSend(CPMenuItem,"separatorItem")); +objj_msgSend(CPApp,"setMainMenu:",_109); +} +}),new objj_method(sel_getUid("cibDidFinishLoading:"),function(self,_113,aCib){ +with(self){ +objj_msgSend(self,"performActions"); +} +}),new objj_method(sel_getUid("cibDidFailToLoad:"),function(self,_114,aCib){ +with(self){ +throw new Error("Could not load main cib file (Did you forget to nib2cib it?)."); +} +}),new objj_method(sel_getUid("reset"),function(self,_115){ +with(self){ +_f6=nil; +} +})]); +p;19;CPArrayController.jt;17322;@STATIC;1.0;I;27;AppKit/CPObjectController.jI;26;AppKit/CPKeyValueBinding.jt;17239; +objj_executeFile("AppKit/CPObjectController.j",NO); +objj_executeFile("AppKit/CPKeyValueBinding.j",NO); +var _1=objj_allocateClassPair(CPObjectController,"CPArrayController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_avoidsEmptySelection"),new objj_ivar("_clearsFilterPredicateOnInsertion"),new objj_ivar("_filterRestrictsInsertion"),new objj_ivar("_preservesSelection"),new objj_ivar("_selectsInsertedObjects"),new objj_ivar("_alwaysUsesMultipleValuesMarker"),new objj_ivar("_selectionIndexes"),new objj_ivar("_sortDescriptors"),new objj_ivar("_filterPredicate"),new objj_ivar("_arrangedObjects")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPArrayController").super_class},"init"); +if(_3){ +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +} +return _3; +} +}),new objj_method(sel_getUid("prepareContent"),function(_5,_6){ +with(_5){ +objj_msgSend(_5,"_setContentArray:",[objj_msgSend(_5,"newObject")]); +} +}),new objj_method(sel_getUid("preservesSelection"),function(_7,_8){ +with(_7){ +return _preservesSelection; +} +}),new objj_method(sel_getUid("setPreservesSelection:"),function(_9,_a,_b){ +with(_9){ +_preservesSelection=_b; +} +}),new objj_method(sel_getUid("selectsInsertedObjects"),function(_c,_d){ +with(_c){ +return _selectsInsertedObjects; +} +}),new objj_method(sel_getUid("setSelectsInsertedObjects:"),function(_e,_f,_10){ +with(_e){ +_selectsInsertedObjects=_10; +} +}),new objj_method(sel_getUid("avoidsEmptySelection"),function(_11,_12){ +with(_11){ +return _avoidsEmptySelection; +} +}),new objj_method(sel_getUid("setAvoidsEmptySelection:"),function(_13,_14,_15){ +with(_13){ +_avoidsEmptySelection=_15; +} +}),new objj_method(sel_getUid("setContent:"),function(_16,_17,_18){ +with(_16){ +if(!objj_msgSend(_18,"isKindOfClass:",objj_msgSend(CPArray,"class"))){ +_18=[_18]; +} +var _19=nil,_1a=nil; +if(objj_msgSend(_16,"preservesSelection")){ +_19=objj_msgSend(_16,"selectedObjects"); +}else{ +_1a=objj_msgSend(_16,"selectionIndexes"); +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"willChangeValueForKey:","filterPredicate"); +} +_contentObject=_18; +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"__setFilterPredicate:",nil); +}else{ +objj_msgSend(_16,"_rearrangeObjects"); +} +if(objj_msgSend(_16,"preservesSelection")){ +objj_msgSend(_16,"__setSelectedObjects:",_19); +}else{ +objj_msgSend(_16,"__setSelectionIndexes:",_1a); +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("_setContentArray:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"setContent:",_1d); +} +}),new objj_method(sel_getUid("_setContentSet:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_1e,"setContent:",_20); +} +}),new objj_method(sel_getUid("contentArray"),function(_21,_22){ +with(_21){ +return objj_msgSend(_21,"content"); +} +}),new objj_method(sel_getUid("contentSet"),function(_23,_24){ +with(_23){ +return objj_msgSend(_23,"content"); +} +}),new objj_method(sel_getUid("arrangeObjects:"),function(_25,_26,_27){ +with(_25){ +var _28=objj_msgSend(_25,"filterPredicate"),_29=objj_msgSend(_25,"sortDescriptors"); +if(_28&&_29){ +var _2a=objj_msgSend(_27,"filteredArrayUsingPredicate:",_28); +objj_msgSend(_2a,"sortUsingDescriptors:",_29); +return _2a; +}else{ +if(_28){ +return objj_msgSend(_27,"filteredArrayUsingPredicate:",_28); +}else{ +if(_29){ +return objj_msgSend(_27,"sortedArrayUsingDescriptors:",_29); +} +} +} +return objj_msgSend(_27,"copy"); +} +}),new objj_method(sel_getUid("rearrangeObjects"),function(_2b,_2c){ +with(_2b){ +objj_msgSend(_2b,"willChangeValueForKey:","arrangedObjects"); +objj_msgSend(_2b,"_rearrangeObjects"); +objj_msgSend(_2b,"didChangeValueForKey:","arrangedObjects"); +} +}),new objj_method(sel_getUid("_rearrangeObjects"),function(_2d,_2e){ +with(_2d){ +var _2f=nil,_30=nil; +if(objj_msgSend(_2d,"preservesSelection")){ +_2f=objj_msgSend(_2d,"selectedObjects"); +}else{ +_30=objj_msgSend(_2d,"selectionIndexes"); +} +objj_msgSend(_2d,"__setArrangedObjects:",objj_msgSend(_2d,"arrangeObjects:",objj_msgSend(_2d,"contentArray"))); +if(objj_msgSend(_2d,"preservesSelection")){ +objj_msgSend(_2d,"__setSelectedObjects:",_2f); +}else{ +objj_msgSend(_2d,"__setSelectionIndexes:",_30); +} +} +}),new objj_method(sel_getUid("__setArrangedObjects:"),function(_31,_32,_33){ +with(_31){ +if(_arrangedObjects===_33){ +return; +} +_arrangedObjects=objj_msgSend(objj_msgSend(_CPObservableArray,"alloc"),"initWithArray:",_33); +} +}),new objj_method(sel_getUid("arrangedObjects"),function(_34,_35){ +with(_34){ +return _arrangedObjects; +} +}),new objj_method(sel_getUid("sortDescriptors"),function(_36,_37){ +with(_36){ +return _sortDescriptors; +} +}),new objj_method(sel_getUid("setSortDescriptors:"),function(_38,_39,_3a){ +with(_38){ +if(_sortDescriptors===_3a){ +return; +} +_sortDescriptors=objj_msgSend(_3a,"copy"); +objj_msgSend(_38,"_rearrangeObjects"); +} +}),new objj_method(sel_getUid("filterPredicate"),function(_3b,_3c){ +with(_3b){ +return _filterPredicate; +} +}),new objj_method(sel_getUid("setFilterPredicate:"),function(_3d,_3e,_3f){ +with(_3d){ +objj_msgSend(_3d,"__setFilterPredicate:",_3f); +} +}),new objj_method(sel_getUid("__setFilterPredicate:"),function(_40,_41,_42){ +with(_40){ +if(_filterPredicate===_42){ +return; +} +_filterPredicate=_42; +objj_msgSend(_40,"_rearrangeObjects"); +} +}),new objj_method(sel_getUid("alwaysUsesMultipleValuesMarker"),function(_43,_44){ +with(_43){ +return _alwaysUsesMultipleValuesMarker; +} +}),new objj_method(sel_getUid("selectionIndex"),function(_45,_46){ +with(_45){ +return objj_msgSend(_selectionIndexes,"firstIndex"); +} +}),new objj_method(sel_getUid("setSelectionIndex:"),function(_47,_48,_49){ +with(_47){ +return objj_msgSend(_47,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_49)); +} +}),new objj_method(sel_getUid("selectionIndexes"),function(_4a,_4b){ +with(_4a){ +return _selectionIndexes; +} +}),new objj_method(sel_getUid("setSelectionIndexes:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"__setSelectionIndexes:",_4e); +} +}),new objj_method(sel_getUid("__setSelectionIndex:"),function(_4f,_50,_51){ +with(_4f){ +objj_msgSend(_4f,"__setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_51)); +} +}),new objj_method(sel_getUid("__setSelectionIndexes:"),function(_52,_53,_54){ +with(_52){ +if(!_54){ +_54=objj_msgSend(CPIndexSet,"indexSet"); +} +if(!objj_msgSend(_54,"count")){ +if(_avoidsEmptySelection&&objj_msgSend(objj_msgSend(_52,"arrangedObjects"),"count")){ +_54=objj_msgSend(CPIndexSet,"indexSetWithIndex:",0); +} +}else{ +var _55=objj_msgSend(objj_msgSend(_52,"arrangedObjects"),"count"); +objj_msgSend(_54,"removeIndexesInRange:",CPMakeRange(_55,objj_msgSend(_54,"lastIndex")+1)); +if(!objj_msgSend(_54,"count")&&_avoidsEmptySelection&&_55){ +_54=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_55-1); +} +} +if(objj_msgSend(_selectionIndexes,"isEqualToIndexSet:",_54)){ +return NO; +} +_selectionIndexes=objj_msgSend(_54,"copy"); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_52),"reverseSetValueFor:","selectionIndexes"); +return YES; +} +}),new objj_method(sel_getUid("selectedObjects"),function(_56,_57){ +with(_56){ +var _58=objj_msgSend(objj_msgSend(_56,"arrangedObjects"),"objectsAtIndexes:",objj_msgSend(_56,"selectionIndexes")); +return objj_msgSend(_CPObservableArray,"arrayWithArray:",(_58||[])); +} +}),new objj_method(sel_getUid("setSelectedObjects:"),function(_59,_5a,_5b){ +with(_59){ +objj_msgSend(_59,"willChangeValueForKey:","selectionIndexes"); +objj_msgSend(_59,"_selectionWillChange"); +objj_msgSend(_59,"__setSelectedObjects:",_5b); +objj_msgSend(_59,"didChangeValueForKey:","selectionIndexes"); +objj_msgSend(_59,"_selectionDidChange"); +} +}),new objj_method(sel_getUid("__setSelectedObjects:"),function(_5c,_5d,_5e){ +with(_5c){ +var set=objj_msgSend(CPIndexSet,"indexSet"),_5f=objj_msgSend(_5e,"count"),_60=objj_msgSend(_5c,"arrangedObjects"); +for(var i=0;i<_5f;i++){ +var _61=objj_msgSend(_60,"indexOfObject:",objj_msgSend(_5e,"objectAtIndex:",i)); +if(_61!==CPNotFound){ +objj_msgSend(set,"addIndex:",_61); +} +} +objj_msgSend(_5c,"__setSelectionIndexes:",set); +return YES; +} +}),new objj_method(sel_getUid("canSelectPrevious"),function(_62,_63){ +with(_62){ +return objj_msgSend(objj_msgSend(_62,"selectionIndexes"),"firstIndex")>0; +} +}),new objj_method(sel_getUid("selectPrevious:"),function(_64,_65,_66){ +with(_64){ +var _67=objj_msgSend(objj_msgSend(_64,"selectionIndexes"),"firstIndex")-1; +if(_67>=0){ +objj_msgSend(_64,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_67)); +} +} +}),new objj_method(sel_getUid("canSelectNext"),function(_68,_69){ +with(_68){ +return objj_msgSend(objj_msgSend(_68,"selectionIndexes"),"firstIndex")<objj_msgSend(objj_msgSend(_68,"arrangedObjects"),"count")-1; +} +}),new objj_method(sel_getUid("selectNext:"),function(_6a,_6b,_6c){ +with(_6a){ +var _6d=objj_msgSend(objj_msgSend(_6a,"selectionIndexes"),"firstIndex")+1; +if(_6d<objj_msgSend(objj_msgSend(_6a,"arrangedObjects"),"count")){ +objj_msgSend(_6a,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_6d)); +} +} +}),new objj_method(sel_getUid("addObject:"),function(_6e,_6f,_70){ +with(_6e){ +if(!objj_msgSend(_6e,"canAdd")){ +return; +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_6e,"willChangeValueForKey:","filterPredicate"); +} +objj_msgSend(_6e,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"addObject:",_70); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_6e,"__setFilterPredicate:",nil); +} +if(_filterPredicate===nil||objj_msgSend(_filterPredicate,"evaluateWithObject:",_70)){ +var pos=objj_msgSend(_arrangedObjects,"insertObject:inArraySortedByDescriptors:",_70,_sortDescriptors); +if(_selectsInsertedObjects){ +objj_msgSend(_6e,"__setSelectionIndex:",pos); +}else{ +objj_msgSend(_selectionIndexes,"shiftIndexesStartingAtIndex:by:",pos,1); +} +}else{ +objj_msgSend(_6e,"_rearrangeObjects"); +} +objj_msgSend(_6e,"didChangeValueForKey:","content"); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_6e,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("insertObject:atArrangedObjectIndex:"),function(_71,_72,_73,_74){ +with(_71){ +if(!objj_msgSend(_71,"canAdd")){ +return; +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_71,"willChangeValueForKey:","filterPredicate"); +} +objj_msgSend(_71,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"insertObject:atIndex:",_73,_74); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_71,"__setFilterPredicate:",nil); +} +objj_msgSend(objj_msgSend(_71,"arrangedObjects"),"insertObject:atIndex:",_73,_74); +if(objj_msgSend(_71,"selectsInsertedObjects")){ +objj_msgSend(_71,"__setSelectionIndex:",_74); +}else{ +objj_msgSend(objj_msgSend(_71,"selectionIndexes"),"shiftIndexesStartingAtIndex:by:",_74,1); +} +if(objj_msgSend(_71,"avoidsEmptySelection")&&objj_msgSend(objj_msgSend(_71,"selectionIndexes"),"count")<=0&&objj_msgSend(_contentObject,"count")>0){ +objj_msgSend(_71,"__setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",0)); +} +objj_msgSend(_71,"didChangeValueForKey:","content"); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_71,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("removeObject:"),function(_75,_76,_77){ +with(_75){ +if(!objj_msgSend(_75,"canRemove")){ +return; +} +objj_msgSend(_75,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"removeObject:",_77); +if(_filterPredicate===nil||objj_msgSend(_filterPredicate,"evaluateWithObject:",_77)){ +var pos=objj_msgSend(_arrangedObjects,"indexOfObject:",_77); +objj_msgSend(_arrangedObjects,"removeObjectAtIndex:",pos); +objj_msgSend(_selectionIndexes,"shiftIndexesStartingAtIndex:by:",pos,-1); +} +objj_msgSend(_75,"didChangeValueForKey:","content"); +} +}),new objj_method(sel_getUid("add:"),function(_78,_79,_7a){ +with(_78){ +if(!objj_msgSend(_78,"canAdd")){ +return; +} +objj_msgSend(_78,"insert:",_7a); +} +}),new objj_method(sel_getUid("insert:"),function(_7b,_7c,_7d){ +with(_7b){ +if(!objj_msgSend(_7b,"canInsert")){ +return; +} +var _7e=objj_msgSend(_7b,"automaticallyPreparesContent")?objj_msgSend(_7b,"newObject"):objj_msgSend(_7b,"_defaultNewObject"); +objj_msgSend(_7b,"addObject:",_7e); +} +}),new objj_method(sel_getUid("remove:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSend(_7f,"removeObjects:",objj_msgSend(objj_msgSend(_7f,"arrangedObjects"),"objectsAtIndexes:",objj_msgSend(_7f,"selectionIndexes"))); +} +}),new objj_method(sel_getUid("removeObjectsAtArrangedObjectIndexes:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(_82,"_removeObjects:",objj_msgSend(objj_msgSend(_82,"arrangedObjects"),"objectsAtIndexes:",_84)); +} +}),new objj_method(sel_getUid("addObjects:"),function(_85,_86,_87){ +with(_85){ +if(!objj_msgSend(_85,"canAdd")){ +return; +} +var _88=objj_msgSend(_85,"contentArray"),_89=objj_msgSend(_87,"count"); +for(var i=0;i<_89;i++){ +objj_msgSend(_88,"addObject:",objj_msgSend(_87,"objectAtIndex:",i)); +} +objj_msgSend(_85,"setContent:",_88); +} +}),new objj_method(sel_getUid("removeObjects:"),function(_8a,_8b,_8c){ +with(_8a){ +if(!objj_msgSend(_8a,"canRemove")){ +return; +} +objj_msgSend(_8a,"_removeObjects:",_8c); +} +}),new objj_method(sel_getUid("_removeObjects:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8d,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"removeObjectsInArray:",_8f); +var _90=objj_msgSend(_8d,"arrangedObjects"),_91=objj_msgSend(_90,"indexOfObject:",objj_msgSend(_8f,"objectAtIndex:",0)); +objj_msgSend(_90,"removeObjectsInArray:",_8f); +var _92=objj_msgSend(_90,"count"),_93=objj_msgSend(CPIndexSet,"indexSet"); +if(objj_msgSend(_8d,"preservesSelection")||objj_msgSend(_8d,"avoidsEmptySelection")){ +_93=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_91); +if(_92<=0){ +_93=objj_msgSend(CPIndexSet,"indexSet"); +}else{ +if(_91>=_92){ +_93=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_92-1); +} +} +} +_selectionIndexes=_93; +objj_msgSend(_8d,"didChangeValueForKey:","content"); +} +}),new objj_method(sel_getUid("canInsert"),function(_94,_95){ +with(_94){ +return objj_msgSend(_94,"isEditable"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("initialize"),function(_96,_97){ +with(_96){ +if(_96!==objj_msgSend(CPArrayController,"class")){ +return; +} +objj_msgSend(_96,"exposeBinding:","contentArray"); +objj_msgSend(_96,"exposeBinding:","contentSet"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingContentArray"),function(_98,_99){ +with(_98){ +return objj_msgSend(CPSet,"setWithObjects:","content"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingArrangedObjects"),function(_9a,_9b){ +with(_9a){ +return objj_msgSend(CPSet,"setWithObjects:","content","filterPredicate","sortDescriptors"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelection"),function(_9c,_9d){ +with(_9c){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndex"),function(_9e,_9f){ +with(_9e){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndexes"),function(_a0,_a1){ +with(_a0){ +return objj_msgSend(CPSet,"setWithObjects:","arrangedObjects"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedObjects"),function(_a2,_a3){ +with(_a2){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"),function(_a4,_a5){ +with(_a4){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectNext"),function(_a6,_a7){ +with(_a6){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectPrevious"),function(_a8,_a9){ +with(_a8){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +})]); +var _1=objj_getClass("CPArrayController"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArrayController\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_aa,_ab,_ac){ +with(_aa){ +_aa=objj_msgSendSuper({receiver:_aa,super_class:objj_getClass("CPArrayController").super_class},"initWithCoder:",coder); +if(_aa){ +_avoidsEmptySelection=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerAvoidsEmptySelection"); +_clearsFilterPredicateOnInsertion=objj_msgSend(coder,"decodeBoolForKey:","CPClearsFilterPredicateOnInsertion"); +_filterRestrictsInsertion=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerFilterRestrictsInsertion"); +_preservesSelection=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerPreservesSelection"); +_selectsInsertedObjects=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerSelectsInsertedObjects"); +_alwaysUsesMultipleValuesMarker=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerAlwaysUsesMultipleValuesMarker"); +if(objj_msgSend(_aa,"automaticallyPreparesContent")){ +objj_msgSend(_aa,"prepareContent"); +}else{ +objj_msgSend(_aa,"_setContentArray:",[]); +} +} +return _aa; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(_ad,"_selectionWillChange"); +objj_msgSend(_ad,"_selectionDidChange"); +} +})]); +p;14;CPBezierPath.jt;4477;@STATIC;1.0;I;26;AppKit/CPGraphicsContext.jI;21;Foundation/CPObject.jt;4401; +objj_executeFile("AppKit/CPGraphicsContext.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +var _1=1; +var _2=objj_allocateClassPair(CPObject,"CPBezierPath"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_path"),new objj_ivar("_lineWidth")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +if(_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPBezierPath").super_class},"init")){ +_path=CGPathCreateMutable(); +_lineWidth=objj_msgSend(objj_msgSend(_4,"class"),"defaultLineWidth"); +} +return _4; +} +}),new objj_method(sel_getUid("moveToPoint:"),function(_6,_7,_8){ +with(_6){ +CGPathMoveToPoint(_path,nil,_8.x,_8.y); +} +}),new objj_method(sel_getUid("lineToPoint:"),function(_9,_a,_b){ +with(_9){ +CGPathAddLineToPoint(_path,nil,_b.x,_b.y); +} +}),new objj_method(sel_getUid("curveToPoint:controlPoint1:controlPoint2:"),function(_c,_d,_e,_f,_10){ +with(_c){ +CGPathAddCurveToPoint(_path,nil,_f.x,_f.y,_10.x,_10.y,_e.x,_e.y); +} +}),new objj_method(sel_getUid("closePath"),function(_11,_12){ +with(_11){ +CGPathCloseSubpath(_path); +} +}),new objj_method(sel_getUid("stroke"),function(_13,_14){ +with(_13){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(ctx); +CGContextAddPath(ctx,_path); +CGContextSetLineWidth(ctx,objj_msgSend(_13,"lineWidth")); +CGContextClosePath(ctx); +CGContextStrokePath(ctx); +} +}),new objj_method(sel_getUid("fill"),function(_15,_16){ +with(_15){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(ctx); +CGContextAddPath(ctx,_path); +CGContextSetLineWidth(ctx,objj_msgSend(_15,"lineWidth")); +CGContextClosePath(ctx); +CGContextFillPath(ctx); +} +}),new objj_method(sel_getUid("lineWidth"),function(_17,_18){ +with(_17){ +return _lineWidth; +} +}),new objj_method(sel_getUid("setLineWidth:"),function(_19,_1a,_1b){ +with(_19){ +_lineWidth=_1b; +} +}),new objj_method(sel_getUid("elementCount"),function(_1c,_1d){ +with(_1c){ +return _path.count; +} +}),new objj_method(sel_getUid("isEmpty"),function(_1e,_1f){ +with(_1e){ +return CGPathIsEmpty(_path); +} +}),new objj_method(sel_getUid("currentPoint"),function(_20,_21){ +with(_20){ +return CGPathGetCurrentPoint(_path); +} +}),new objj_method(sel_getUid("appendBezierPathWithPoints:count:"),function(_22,_23,_24,_25){ +with(_22){ +CGPathAddLines(_path,nil,_24,_25); +} +}),new objj_method(sel_getUid("appendBezierPathWithRect:"),function(_26,_27,_28){ +with(_26){ +CGPathAddRect(_path,nil,_28); +} +}),new objj_method(sel_getUid("appendBezierPathWithOvalInRect:"),function(_29,_2a,_2b){ +with(_29){ +CGPathAddPath(_path,nil,CGPathWithEllipseInRect(_2b)); +} +}),new objj_method(sel_getUid("appendBezierPathWithRoundedRect:xRadius:yRadius:"),function(_2c,_2d,_2e,_2f,_30){ +with(_2c){ +CGPathAddPath(_path,nil,CGPathWithRoundedRectangleInRect(_2e,_2f,_30,YES,YES,YES,YES)); +} +}),new objj_method(sel_getUid("appendBezierPath:"),function(_31,_32,_33){ +with(_31){ +CGPathAddPath(_path,nil,_33._path); +} +}),new objj_method(sel_getUid("removeAllPoints"),function(_34,_35){ +with(_34){ +_path=CGPathCreateMutable(); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("bezierPath"),function(_36,_37){ +with(_36){ +return objj_msgSend(objj_msgSend(_36,"alloc"),"init"); +} +}),new objj_method(sel_getUid("bezierPathWithOvalInRect:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(_38,"bezierPath"); +objj_msgSend(_3b,"appendBezierPathWithOvalInRect:",_3a); +return _3b; +} +}),new objj_method(sel_getUid("bezierPathWithRect:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=objj_msgSend(_3c,"bezierPath"); +objj_msgSend(_3f,"appendBezierPathWithRect:",_3e); +return _3f; +} +}),new objj_method(sel_getUid("defaultLineWidth"),function(_40,_41){ +with(_40){ +return _1; +} +}),new objj_method(sel_getUid("setDefaultLineWidth:"),function(_42,_43,_44){ +with(_42){ +_1=_44; +} +}),new objj_method(sel_getUid("fillRect:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(objj_msgSend(_45,"bezierPathWithRect:",_47),"fill"); +} +}),new objj_method(sel_getUid("strokeRect:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(objj_msgSend(_48,"bezierPathWithRect:",_4a),"stroke"); +} +}),new objj_method(sel_getUid("strokeLineFromPoint:toPoint:"),function(_4b,_4c,_4d,_4e){ +with(_4b){ +var _4f=objj_msgSend(_4b,"bezierPath"); +objj_msgSend(_4f,"moveToPoint:",_4d); +objj_msgSend(_4f,"lineToPoint:",_4e); +objj_msgSend(_4f,"stroke"); +} +})]); +p;7;CPBox.jt;6994;@STATIC;1.0;i;8;CPView.jt;6963; +objj_executeFile("CPView.j",YES); +CPNoBorder=0; +CPLineBorder=1; +CPBezelBorder=2; +CPGrooveBorder=3; +var _1=objj_allocateClassPair(CPView,"CPBox"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_borderType"),new objj_ivar("_borderColor"),new objj_ivar("_fillColor"),new objj_ivar("_cornerRadius"),new objj_ivar("_borderWidth"),new objj_ivar("_contentMargin"),new objj_ivar("_contentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPBox").super_class},"initWithFrame:",_5); +if(_3){ +_borderType=CPBezelBorder; +_fillColor=objj_msgSend(CPColor,"clearColor"); +_borderColor=objj_msgSend(CPColor,"blackColor"); +_borderWidth=1; +_contentMargin=CGSizeMake(0,0); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",objj_msgSend(_3,"bounds")); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_3,"setAutoresizesSubviews:",YES); +objj_msgSend(_3,"addSubview:",_contentView); +} +return _3; +} +}),new objj_method(sel_getUid("borderRect"),function(_6,_7){ +with(_6){ +return objj_msgSend(_6,"bounds"); +} +}),new objj_method(sel_getUid("borderType"),function(_8,_9){ +with(_8){ +return _borderType; +} +}),new objj_method(sel_getUid("setBorderType:"),function(_a,_b,_c){ +with(_a){ +_borderType=_c; +objj_msgSend(_a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderColor"),function(_d,_e){ +with(_d){ +return _borderColor; +} +}),new objj_method(sel_getUid("setBorderColor:"),function(_f,_10,_11){ +with(_f){ +if(objj_msgSend(_11,"isEqual:",_borderColor)){ +return; +} +_borderColor=_11; +objj_msgSend(_f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderWidth"),function(_12,_13){ +with(_12){ +return _borderWidth; +} +}),new objj_method(sel_getUid("setBorderWidth:"),function(_14,_15,_16){ +with(_14){ +if(_16===_borderWidth){ +return; +} +_borderWidth=_16; +objj_msgSend(_14,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("cornerRadius"),function(_17,_18){ +with(_17){ +return _cornerRadius; +} +}),new objj_method(sel_getUid("setCornerRadius:"),function(_19,_1a,_1b){ +with(_19){ +if(_1b===_cornerRadius){ +return; +} +_cornerRadius=_1b; +objj_msgSend(_19,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("fillColor"),function(_1c,_1d){ +with(_1c){ +return _fillColor; +} +}),new objj_method(sel_getUid("setFillColor:"),function(_1e,_1f,_20){ +with(_1e){ +if(objj_msgSend(_20,"isEqual:",_fillColor)){ +return; +} +_fillColor=_20; +objj_msgSend(_1e,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("contentView"),function(_21,_22){ +with(_21){ +return _contentView; +} +}),new objj_method(sel_getUid("setContentView:"),function(_23,_24,_25){ +with(_23){ +if(_25===_contentView){ +return; +} +objj_msgSend(_25,"setFrame:",CGRectInset(objj_msgSend(_23,"bounds"),_contentMargin.width+_borderWidth,_contentMargin.height+_borderWidth)); +objj_msgSend(_25,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_23,"replaceSubview:with:",_contentView,_25); +_contentView=_25; +} +}),new objj_method(sel_getUid("contentViewMargins"),function(_26,_27){ +with(_26){ +return _contentMargin; +} +}),new objj_method(sel_getUid("setContentViewMargins:"),function(_28,_29,_2a){ +with(_28){ +if(_2a.width<0||_2a.height<0){ +objj_msgSend(CPException,"raise:reason:",CPGenericException,"Margins must be positive"); +} +_contentMargin=CGSizeMakeCopy(_2a); +objj_msgSend(_28,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setFrameFromContentFrame:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"setFrame:",CGRectInset(_2d,-(_contentMargin.width+_borderWidth),-(_contentMargin.height+_borderWidth))); +objj_msgSend(_2b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("sizeToFit"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_contentView,"frame"); +objj_msgSend(_2e,"setFrameSize:",CGSizeMake(_30.size.width+_contentMargin.width*2,_30.size.height+_contentMargin.height*2)); +objj_msgSend(_contentView,"setFrameOrigin:",CGPointMake(_contentMargin.width,_contentMargin.height)); +} +}),new objj_method(sel_getUid("drawRect:"),function(_31,_32,_33){ +with(_31){ +if(_borderType===CPNoBorder){ +return; +} +var _34=objj_msgSend(_31,"bounds"),_35=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetFillColor(_35,objj_msgSend(_31,"fillColor")); +switch(_borderType){ +case CPBezelBorder: +var _36=[CPMinYEdge,CPMaxXEdge,CPMaxYEdge,CPMinXEdge],_37=190/255,_38=[142/255,_37,_37,_37],_39=_borderWidth; +while(_39--){ +_34=CPDrawTiledRects(_34,_34,_36,_38); +} +CGContextFillRect(_35,_34); +break; +default: +_34=CGRectInset(_34,_borderWidth/2,_borderWidth/2); +CGContextSetStrokeColor(_35,objj_msgSend(_31,"borderColor")); +CGContextSetLineWidth(_35,_borderWidth); +CGContextFillRoundedRectangleInRect(_35,_34,_cornerRadius,YES,YES,YES,YES); +CGContextStrokeRoundedRectangleInRect(_35,_34,_cornerRadius,YES,YES,YES,YES); +break; +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("boxEnclosingView:"),function(_3a,_3b,_3c){ +with(_3a){ +var box=objj_msgSend(objj_msgSend(_3a,"alloc"),"initWithFrame:",CGRectMakeZero()),_3d=objj_msgSend(_3c,"superview"); +objj_msgSend(box,"setFrameFromContentFrame:",objj_msgSend(_3c,"frame")); +objj_msgSend(_3d,"replaceSubview:with:",_3c,box); +objj_msgSend(box,"setContentView:",_3c); +return box; +} +})]); +var _3e="CPBoxBorderTypeKey",_3f="CPBoxBorderColorKey",_40="CPBoxFillColorKey",_41="CPBoxCornerRadiusKey",_42="CPBoxBorderWidthKey",_43="CPBoxContentMarginKey"; +var _1=objj_getClass("CPBox"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPBox\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_44,_45,_46){ +with(_44){ +_44=objj_msgSendSuper({receiver:_44,super_class:objj_getClass("CPBox").super_class},"initWithCoder:",_46); +if(_44){ +_borderType=objj_msgSend(_46,"decodeIntForKey:",_3e); +_borderColor=objj_msgSend(_46,"decodeObjectForKey:",_3f); +_fillColor=objj_msgSend(_46,"decodeObjectForKey:",_40); +_cornerRadius=objj_msgSend(_46,"decodeFloatForKey:",_41); +_borderWidth=objj_msgSend(_46,"decodeFloatForKey:",_42); +_contentMargin=objj_msgSend(_46,"decodeSizeForKey:",_43); +_contentView=objj_msgSend(_44,"subviews")[0]; +objj_msgSend(_44,"setAutoresizesSubviews:",YES); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +} +return _44; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_47,_48,_49){ +with(_47){ +objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPBox").super_class},"encodeWithCoder:",_49); +objj_msgSend(_49,"encodeInt:forKey:",_borderType,_3e); +objj_msgSend(_49,"encodeObject:forKey:",_borderColor,_3f); +objj_msgSend(_49,"encodeObject:forKey:",_fillColor,_40); +objj_msgSend(_49,"encodeFloat:forKey:",_cornerRadius,_41); +objj_msgSend(_49,"encodeFloat:forKey:",_borderWidth,_42); +objj_msgSend(_49,"encodeSize:forKey:",_contentMargin,_43); +} +})]); +p;11;CPBrowser.jt;33588;@STATIC;1.0;i;11;CPControl.ji;9;CPImage.ji;13;CPTableView.ji;14;CPScrollView.jt;33502; +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPScrollView.j",YES); +var _1=objj_allocateClassPair(CPControl,"CPBrowser"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_delegate"),new objj_ivar("_pathSeparator"),new objj_ivar("_contentView"),new objj_ivar("_horizontalScrollView"),new objj_ivar("_prototypeView"),new objj_ivar("_tableViews"),new objj_ivar("_tableDelegates"),new objj_ivar("_rootItem"),new objj_ivar("_delegateSupportsImages"),new objj_ivar("_doubleAction"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_tableViewClass"),new objj_ivar("_rowHeight"),new objj_ivar("_imageWidth"),new objj_ivar("_leafWidth"),new objj_ivar("_minColumnWidth"),new objj_ivar("_defaultColumnWidth"),new objj_ivar("_columnWidths")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("doubleAction"),function(_3,_4){ +with(_3){ +return _doubleAction; +} +}),new objj_method(sel_getUid("setDoubleAction:"),function(_5,_6,_7){ +with(_5){ +_doubleAction=_7; +} +}),new objj_method(sel_getUid("tableViewClass"),function(_8,_9){ +with(_8){ +return _tableViewClass; +} +}),new objj_method(sel_getUid("setTableViewClass:"),function(_a,_b,_c){ +with(_a){ +_tableViewClass=_c; +} +}),new objj_method(sel_getUid("defaultColumnWidth"),function(_d,_e){ +with(_d){ +return _defaultColumnWidth; +} +}),new objj_method(sel_getUid("setDefaultColumnWidth:"),function(_f,_10,_11){ +with(_f){ +_defaultColumnWidth=_11; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_12,_13,_14){ +with(_12){ +if(_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPBrowser").super_class},"initWithFrame:",_14)){ +_rowHeight=23; +_defaultColumnWidth=140; +_minColumnWidth=80; +_imageWidth=23; +_leafWidth=13; +_columnWidths=[]; +_pathSeparator="/"; +_tableViews=[]; +_tableDelegates=[]; +_allowsMultipleSelection=YES; +_allowsEmptySelection=YES; +_tableViewClass=objj_msgSend(_CPBrowserTableView,"class"); +_prototypeView=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_prototypeView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_prototypeView,"setValue:forThemeAttribute:inState:",objj_msgSend(CPColor,"whiteColor"),"text-color",CPThemeStateSelectedDataView); +objj_msgSend(_prototypeView,"setLineBreakMode:",CPLineBreakByTruncatingTail); +_horizontalScrollView=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",objj_msgSend(_12,"bounds")); +objj_msgSend(_horizontalScrollView,"setHasVerticalScroller:",NO); +objj_msgSend(_horizontalScrollView,"setAutohidesScrollers:",YES); +objj_msgSend(_horizontalScrollView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,CGRectGetHeight(objj_msgSend(_12,"bounds")))); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewHeightSizable); +objj_msgSend(_horizontalScrollView,"setDocumentView:",_contentView); +objj_msgSend(_12,"addSubview:",_horizontalScrollView); +} +return _12; +} +}),new objj_method(sel_getUid("setPrototypeView:"),function(_15,_16,_17){ +with(_15){ +_prototypeView=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_17)); +} +}),new objj_method(sel_getUid("prototypeView"),function(_18,_19){ +with(_18){ +return objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_prototypeView)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_1a,_1b,_1c){ +with(_1a){ +_delegate=_1c; +_delegateSupportsImages=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:imageValueForItem:")); +objj_msgSend(_1a,"loadColumnZero"); +} +}),new objj_method(sel_getUid("delegate"),function(_1d,_1e){ +with(_1d){ +return _delegate; +} +}),new objj_method(sel_getUid("tableViewInColumn:"),function(_1f,_20,_21){ +with(_1f){ +return _tableViews[_21]; +} +}),new objj_method(sel_getUid("columnOfTableView:"),function(_22,_23,_24){ +with(_22){ +return objj_msgSend(_tableViews,"indexOfObject:",_24); +} +}),new objj_method(sel_getUid("loadColumnZero"),function(_25,_26){ +with(_25){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("rootItemForBrowser:"))){ +_rootItem=objj_msgSend(_delegate,"rootItemForBrowser:",_25); +}else{ +_rootItem=nil; +} +objj_msgSend(_25,"setLastColumn:",-1); +objj_msgSend(_25,"addColumn"); +} +}),new objj_method(sel_getUid("setLastColumn:"),function(_27,_28,_29){ +with(_27){ +if(_29>=_tableViews.length){ +return; +} +var _2a=_tableViews.length-1; +var _2b=_29+1; +objj_msgSend(objj_msgSend(_tableViews.slice(_2b),"valueForKey:","enclosingScrollView"),"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +_tableViews=_tableViews.slice(0,_2b); +_tableDelegates=_tableDelegates.slice(0,_2b); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:didChangeLastColumn:toColumn:"))){ +objj_msgSend(_delegate,"browser:didChangeLastColumn:toColumn:",_27,_2a,_29); +} +objj_msgSend(_27,"tile"); +} +}),new objj_method(sel_getUid("lastColumn"),function(_2c,_2d){ +with(_2c){ +return _tableViews.length-1; +} +}),new objj_method(sel_getUid("addColumn"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_2e,"lastColumn"),_31=_tableViews[_30],_32=objj_msgSend(_31,"selectedRowIndexes"); +if(_30>=0&&objj_msgSend(_32,"count")>1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Can't add column, column "+_30+" has invalid selection."); +} +var _33=_30+1,_34=_33===0?_rootItem:objj_msgSend(_tableDelegates[_30],"childAtIndex:",objj_msgSend(_32,"firstIndex")); +if(_33>0&&_34&&objj_msgSend(_2e,"isLeafItem:",_34)){ +return; +} +var _35=objj_msgSend(objj_msgSend(_tableViewClass,"alloc"),"initWithFrame:browser:",CGRectMakeZero(),_2e); +objj_msgSend(_35,"setHeaderView:",nil); +objj_msgSend(_35,"setCornerView:",nil); +objj_msgSend(_35,"setAllowsMultipleSelection:",_allowsMultipleSelection); +objj_msgSend(_35,"setAllowsEmptySelection:",_allowsEmptySelection); +objj_msgSend(_35,"registerForDraggedTypes:",objj_msgSend(_2e,"registeredDraggedTypes")); +objj_msgSend(_2e,"_addTableColumnsToTableView:forColumnIndex:",_35,_33); +var _36=objj_msgSend(objj_msgSend(_CPBrowserTableDelegate,"alloc"),"init"); +objj_msgSend(_36,"_setDelegate:",_delegate); +objj_msgSend(_36,"_setBrowser:",_2e); +objj_msgSend(_36,"_setIndex:",_33); +objj_msgSend(_36,"_setItem:",_34); +_tableViews[_33]=_35; +_tableDelegates[_33]=_36; +objj_msgSend(_35,"setDelegate:",_36); +objj_msgSend(_35,"setDataSource:",_36); +objj_msgSend(_35,"setTarget:",_36); +objj_msgSend(_35,"setAction:",sel_getUid("_tableViewClicked:")); +objj_msgSend(_35,"setDoubleAction:",sel_getUid("_tableViewDoubleClicked:")); +objj_msgSend(_35,"setDraggingDestinationFeedbackStyle:",CPTableViewDraggingDestinationFeedbackStyleRegular); +var _37=objj_msgSend(objj_msgSend(_CPBrowserScrollView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_37,"_setBrowser:",_2e); +objj_msgSend(_37,"setDocumentView:",_35); +objj_msgSend(_37,"setHasHorizontalScroller:",NO); +objj_msgSend(_37,"setAutoresizingMask:",CPViewHeightSizable); +objj_msgSend(_contentView,"addSubview:",_37); +objj_msgSend(_2e,"tile"); +objj_msgSend(_2e,"scrollColumnToVisible:",_33); +} +}),new objj_method(sel_getUid("_addTableColumnsToTableView:forColumnIndex:"),function(_38,_39,_3a,_3b){ +with(_38){ +if(_delegateSupportsImages){ +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Image"),_3d=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_3d,"setImageScaling:",CPScaleProportionally); +objj_msgSend(_3c,"setDataView:",_3d); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +} +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Content"); +objj_msgSend(_3c,"setDataView:",_prototypeView); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Leaf"),_3d=objj_msgSend(objj_msgSend(_CPBrowserLeafView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_3d,"setBranchImage:",objj_msgSend(objj_msgSend(_38,"class"),"branchImage")); +objj_msgSend(_3d,"setHighlightedBranchImage:",objj_msgSend(objj_msgSend(_38,"class"),"highlightedBranchImage")); +objj_msgSend(_3c,"setDataView:",_3d); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +} +}),new objj_method(sel_getUid("reloadColumn:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(objj_msgSend(_3e,"tableViewInColumn:",_40),"reloadData"); +} +}),new objj_method(sel_getUid("tile"),function(_41,_42){ +with(_41){ +var _43=0,_44=objj_msgSend(CPScroller,"scrollerWidth"),_45=CGRectGetHeight(objj_msgSend(_contentView,"bounds")); +for(var i=0,_46=_tableViews.length;i<_46;i++){ +var _47=_tableViews[i],_48=objj_msgSend(_47,"enclosingScrollView"),_49=objj_msgSend(_41,"widthOfColumn:",i),_4a=CGRectGetHeight(objj_msgSend(_47,"bounds")); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Image"),"setWidth:",_imageWidth); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Content"),"setWidth:",_49-(_leafWidth+_delegateSupportsImages?_imageWidth:0)-_44-_44); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Leaf"),"setWidth:",_leafWidth); +objj_msgSend(_47,"setRowHeight:",_rowHeight); +objj_msgSend(_47,"setFrameSize:",CGSizeMake(_49-_44,_4a)); +objj_msgSend(_48,"setFrameOrigin:",CGPointMake(_43,0)); +objj_msgSend(_48,"setFrameSize:",CGSizeMake(_49,_45)); +_43+=_49; +} +objj_msgSend(_contentView,"setFrameSize:",CGSizeMake(_43,_45)); +} +}),new objj_method(sel_getUid("rowAtPoint:"),function(_4b,_4c,_4d){ +with(_4b){ +var _4e=objj_msgSend(_4b,"columnAtPoint:",_4d); +if(_4e===-1){ +return -1; +} +var _4f=_tableViews[_4e]; +return objj_msgSend(_4f,"rowAtPoint:",objj_msgSend(_4f,"convertPoint:fromView:",_4d,_4b)); +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(_50,_51,_52){ +with(_50){ +var _53=objj_msgSend(_contentView,"convertPoint:fromView:",_52,_50); +for(var i=0,_54=_tableViews.length;i<_54;i++){ +var _55=objj_msgSend(objj_msgSend(_tableViews[i],"enclosingScrollView"),"frame"); +if(CGRectContainsPoint(_55,_53)){ +return i; +} +} +return -1; +} +}),new objj_method(sel_getUid("rectOfRow:inColumn:"),function(_56,_57,_58,_59){ +with(_56){ +var _5a=_tableViews[_59],_5b=objj_msgSend(_5a,"rectOfRow:",_58); +_5b.origin=objj_msgSend(_56,"convertPoint:fromView:",_5b.origin,_5a); +return _5b; +} +}),new objj_method(sel_getUid("itemAtRow:inColumn:"),function(_5c,_5d,row,_5e){ +with(_5c){ +return objj_msgSend(_tableDelegates[_5e],"childAtIndex:",row); +} +}),new objj_method(sel_getUid("isLeafItem:"),function(_5f,_60,_61){ +with(_5f){ +return objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:isLeafItem:"))&&objj_msgSend(_delegate,"browser:isLeafItem:",_5f,_61); +} +}),new objj_method(sel_getUid("parentForItemsInColumn:"),function(_62,_63,_64){ +with(_62){ +return objj_msgSend(_tableDelegates[_64],"_item"); +} +}),new objj_method(sel_getUid("selectedItems"),function(_65,_66){ +with(_65){ +var _67=objj_msgSend(_65,"selectedColumn"),_68=objj_msgSend(_65,"selectedRowIndexesInColumn:",_67),set=objj_msgSend(CPSet,"set"),_69=objj_msgSend(_68,"firstIndex"); +while(_69!==CPNotFound){ +objj_msgSend(set,"addObject:",objj_msgSend(_65,"itemAtRow:inColumn:",_69,_67)); +_69=objj_msgSend(_68,"indexGreaterThanIndex:",_69); +} +return set; +} +}),new objj_method(sel_getUid("selectedItem"),function(_6a,_6b){ +with(_6a){ +var _6c=objj_msgSend(_6a,"selectedColumn"),_6d=objj_msgSend(_6a,"selectedRowInColumn:",_6c); +return objj_msgSend(_6a,"itemAtRow:inColumn:",_6d,_6c); +} +}),new objj_method(sel_getUid("trackMouse:"),function(_6e,_6f,_70){ +with(_6e){ +} +}),new objj_method(sel_getUid("_column:clickedRow:"),function(_71,_72,_73,_74){ +with(_71){ +objj_msgSend(_71,"setLastColumn:",_73); +if(_74>=0){ +objj_msgSend(_71,"addColumn"); +} +objj_msgSend(_71,"doClick:",_71); +} +}),new objj_method(sel_getUid("sendAction"),function(_75,_76){ +with(_75){ +objj_msgSend(_75,"sendAction:to:",_action,_target); +} +}),new objj_method(sel_getUid("doClick:"),function(_77,_78,_79){ +with(_77){ +objj_msgSend(_77,"sendAction:to:",_action,_target); +} +}),new objj_method(sel_getUid("doDoubleClick:"),function(_7a,_7b,_7c){ +with(_7a){ +objj_msgSend(_7a,"sendAction:to:",_doubleAction,_target); +} +}),new objj_method(sel_getUid("keyDown:"),function(_7d,_7e,_7f){ +with(_7d){ +var _80=objj_msgSend(_7d,"selectedColumn"); +if(_80===-1){ +return; +} +objj_msgSend(_tableViews[_80],"keyDown:",_7f); +} +}),new objj_method(sel_getUid("columnContentWidthForColumnWidth:"),function(_81,_82,_83){ +with(_81){ +return _83-(_leafWidth+_delegateSupportsImages?_imageWidth:0)-objj_msgSend(CPScroller,"scrollerWidth"); +} +}),new objj_method(sel_getUid("columnWidthForColumnContentWidth:"),function(_84,_85,_86){ +with(_84){ +return _86+(_leafWidth+_delegateSupportsImages?_imageWidth:0)+objj_msgSend(CPScroller,"scrollerWidth"); +} +}),new objj_method(sel_getUid("setImageWidth:"),function(_87,_88,_89){ +with(_87){ +_imageWidth=_89; +objj_msgSend(_87,"tile"); +} +}),new objj_method(sel_getUid("imageWidth"),function(_8a,_8b){ +with(_8a){ +return _imageWidth; +} +}),new objj_method(sel_getUid("setMinColumnWidth:"),function(_8c,_8d,_8e){ +with(_8c){ +_minColumnWidth=_8e; +objj_msgSend(_8c,"tile"); +} +}),new objj_method(sel_getUid("minColumnWidth"),function(_8f,_90){ +with(_8f){ +return _minColumnWidth; +} +}),new objj_method(sel_getUid("setWidth:ofColumn:"),function(_91,_92,_93,_94){ +with(_91){ +_columnWidths[_94]=_93; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:didResizeColumn:"))){ +objj_msgSend(_delegate,"browser:didResizeColumn:",_91,_94); +} +objj_msgSend(_91,"tile"); +} +}),new objj_method(sel_getUid("widthOfColumn:"),function(_95,_96,_97){ +with(_95){ +var _98=_columnWidths[_97]; +if(_98==null){ +_98=_defaultColumnWidth; +} +return MAX(objj_msgSend(CPScroller,"scrollerWidth"),MAX(_minColumnWidth,_98)); +} +}),new objj_method(sel_getUid("setRowHeight:"),function(_99,_9a,_9b){ +with(_99){ +_rowHeight=_9b; +} +}),new objj_method(sel_getUid("rowHeight"),function(_9c,_9d){ +with(_9c){ +return _rowHeight; +} +}),new objj_method(sel_getUid("scrollColumnToVisible:"),function(_9e,_9f,_a0){ +with(_9e){ +objj_msgSend(_contentView,"scrollRectToVisible:",objj_msgSend(objj_msgSend(objj_msgSend(_9e,"tableViewInColumn:",_a0),"enclosingScrollView"),"frame")); +} +}),new objj_method(sel_getUid("autohidesScroller"),function(_a1,_a2){ +with(_a1){ +return objj_msgSend(_horizontalScrollView,"autohidesScrollers"); +} +}),new objj_method(sel_getUid("setAutohidesScroller:"),function(_a3,_a4,_a5){ +with(_a3){ +objj_msgSend(_horizontalScrollView,"setAutohidesScrollers:",_a5); +} +}),new objj_method(sel_getUid("selectedRowInColumn:"),function(_a6,_a7,_a8){ +with(_a6){ +if(_a8>objj_msgSend(_a6,"lastColumn")||_a8<0){ +return -1; +} +return objj_msgSend(_tableViews[_a8],"selectedRow"); +} +}),new objj_method(sel_getUid("selectedColumn"),function(_a9,_aa){ +with(_a9){ +var _ab=objj_msgSend(_a9,"lastColumn"),row=objj_msgSend(_a9,"selectedRowInColumn:",_ab); +if(row>=0){ +return _ab; +}else{ +return _ab-1; +} +} +}),new objj_method(sel_getUid("selectRow:inColumn:"),function(_ac,_ad,row,_ae){ +with(_ac){ +var _af=row===-1?objj_msgSend(CPIndexSet,"indexSet"):objj_msgSend(CPIndexSet,"indexSetWithIndex:",row); +objj_msgSend(_ac,"selectRowIndexes:inColumn:",_af,_ae); +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_b0,_b1){ +with(_b0){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_b2,_b3,_b4){ +with(_b2){ +if(_allowsMultipleSelection===_b4){ +return; +} +_allowsMultipleSelection=_b4; +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setAllowsMultipleSelection:"),_b4); +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_b5,_b6){ +with(_b5){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_b7,_b8,_b9){ +with(_b7){ +if(_allowsEmptySelection===_b9){ +return; +} +_allowsEmptySelection=_b9; +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setAllowsEmptySelection:"),_b9); +} +}),new objj_method(sel_getUid("selectedRowIndexesInColumn:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_bc<0||_bc>objj_msgSend(_ba,"lastColumn")+1){ +return objj_msgSend(CPIndexSet,"indexSet"); +} +return objj_msgSend(objj_msgSend(_ba,"tableViewInColumn:",_bc),"selectedRowIndexes"); +} +}),new objj_method(sel_getUid("selectRowIndexes:inColumn:"),function(_bd,_be,_bf,_c0){ +with(_bd){ +if(_c0<0||_c0>objj_msgSend(_bd,"lastColumn")+1){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:selectionIndexesForProposedSelection:inColumn:"))){ +_bf=objj_msgSend(_delegate,"browser:selectionIndexesForProposedSelection:inColumn:",_bd,_bf,_c0); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:shouldSelectRowIndexes:inColumn:"))&&!objj_msgSend(_delegate,"browser:shouldSelectRowIndexes:inColumn:",_bd,_bf,_c0)){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browserSelectionIsChanging:"))){ +objj_msgSend(_delegate,"browserSelectionIsChanging:",_bd); +} +if(_c0>objj_msgSend(_bd,"lastColumn")){ +objj_msgSend(_bd,"addColumn"); +} +objj_msgSend(_bd,"setLastColumn:",_c0); +objj_msgSend(objj_msgSend(_bd,"tableViewInColumn:",_c0),"selectRowIndexes:byExtendingSelection:",_bf,NO); +objj_msgSend(_bd,"scrollColumnToVisible:",_c0); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browserSelectionDidChange:"))){ +objj_msgSend(_delegate,"browserSelectionDidChange:",_bd); +} +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSendSuper({receiver:_c1,super_class:objj_getClass("CPBrowser").super_class},"setBackgroundColor:",_c3); +objj_msgSend(_contentView,"setBackgroundColor:",_c3); +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_c4,_c5){ +with(_c4){ +return YES; +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(_c6,_c7,_c8){ +with(_c6){ +objj_msgSendSuper({receiver:_c6,super_class:objj_getClass("CPBrowser").super_class},"registerForDraggedTypes:",_c8); +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("registerForDraggedTypes:"),_c8); +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:inColumn:withEvent:"),function(_c9,_ca,_cb,_cc,_cd){ +with(_c9){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:canDragRowsWithIndexes:inColumn:withEvent:"))){ +return objj_msgSend(_delegate,"browser:canDragRowsWithIndexes:inColumn:withEvent:",_c9,_cb,_cc,_cd); +} +return YES; +} +}),new objj_method(sel_getUid("draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"),function(_ce,_cf,_d0,_d1,_d2,_d3){ +with(_ce){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"))){ +return objj_msgSend(_delegate,"browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",_ce,_d0,_d1,_d2,_d3); +} +return nil; +} +}),new objj_method(sel_getUid("draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"),function(_d4,_d5,_d6,_d7,_d8,_d9){ +with(_d4){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"))){ +return objj_msgSend(_delegate,"browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:",_d4,_d6,_d7,_d8,_d9); +} +return nil; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("branchImage"),function(_da,_db){ +with(_da){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPBrowser,"class")),"pathForResource:","browser-leaf.png"),CGSizeMake(9,9)); +} +}),new objj_method(sel_getUid("highlightedBranchImage"),function(_dc,_dd){ +with(_dc){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPBrowser,"class")),"pathForResource:","browser-leaf-highlighted.png"),CGSizeMake(9,9)); +} +})]); +var _de=nil; +var _1=objj_allocateClassPair(CPView,"_CPBrowserResizeControl"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_mouseDownX"),new objj_ivar("_browser"),new objj_ivar("_index"),new objj_ivar("_width")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_df,_e0,_e1){ +with(_df){ +if(_df=objj_msgSendSuper({receiver:_df,super_class:objj_getClass("_CPBrowserResizeControl").super_class},"initWithFrame:",_e1)){ +objj_msgSend(_df,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(_df,"class"),"backgroundImage"))); +} +return _df; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_e2,_e3,_e4){ +with(_e2){ +_mouseDownX=objj_msgSend(_e4,"locationInWindow").x; +_browser=objj_msgSend(objj_msgSend(_e2,"superview"),"_browser"); +_index=objj_msgSend(_browser,"columnOfTableView:",objj_msgSend(objj_msgSend(_e2,"superview"),"documentView")); +_width=objj_msgSend(_browser,"widthOfColumn:",_index); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_e5,_e6,_e7){ +with(_e5){ +var _e8=objj_msgSend(_e7,"locationInWindow").x-_mouseDownX; +objj_msgSend(_browser,"setWidth:ofColumn:",_width+_e8,_index); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_e9,_ea,_eb){ +with(_e9){ +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("backgroundImage"),function(_ec,_ed){ +with(_ec){ +if(!_de){ +var _ee=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_ec,"class")),"pathForResource:","browser-resize-control.png"); +_de=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",_ee,CGSizeMake(15,14)); +} +return _de; +} +})]); +var _1=objj_allocateClassPair(CPScrollView,"_CPBrowserScrollView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_resizeControl"),new objj_ivar("_browser")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_browser"),function(_ef,_f0){ +with(_ef){ +return _browser; +} +}),new objj_method(sel_getUid("_setBrowser:"),function(_f1,_f2,_f3){ +with(_f1){ +_browser=_f3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f4,_f5,_f6){ +with(_f4){ +if(_f4=objj_msgSendSuper({receiver:_f4,super_class:objj_getClass("_CPBrowserScrollView").super_class},"initWithFrame:",_f6)){ +_resizeControl=objj_msgSend(objj_msgSend(_CPBrowserResizeControl,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_f4,"addSubview:",_resizeControl); +} +return _f4; +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(_f7,_f8,_f9){ +with(_f7){ +objj_msgSendSuper({receiver:_f7,super_class:objj_getClass("_CPBrowserScrollView").super_class},"reflectScrolledClipView:",_f9); +var _fa=objj_msgSend(_verticalScroller,"frame"); +_fa.size.height=CGRectGetHeight(objj_msgSend(_f7,"bounds"))-14-_fa.origin.y; +objj_msgSend(_verticalScroller,"setFrameSize:",_fa.size); +var _fb=CGRectMake(CGRectGetMinX(_fa),CGRectGetMaxY(_fa),objj_msgSend(CPScroller,"scrollerWidth"),14); +objj_msgSend(_resizeControl,"setFrame:",_fb); +} +})]); +var _1=objj_allocateClassPair(CPTableView,"_CPBrowserTableView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_browser")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:browser:"),function(_fc,_fd,_fe,_ff){ +with(_fc){ +if(_fc=objj_msgSendSuper({receiver:_fc,super_class:objj_getClass("_CPBrowserTableView").super_class},"initWithFrame:",_fe)){ +_browser=_ff; +} +return _fc; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(self,_100){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("mouseDown:"),function(self,_101,_102){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"mouseDown:",_102); +objj_msgSend(objj_msgSend(self,"window"),"makeFirstResponder:",_browser); +} +}),new objj_method(sel_getUid("browserView"),function(self,_103){ +with(self){ +return _browser; +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"),function(self,_104,_105,_106){ +with(self){ +return objj_msgSend(_browser,"canDragRowsWithIndexes:inColumn:withEvent:",_105,objj_msgSend(_browser,"columnOfTableView:",self),objj_msgSend(CPApp,"currentEvent")); +} +}),new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"),function(self,_107,_108,_109,_10a,_10b){ +with(self){ +return objj_msgSend(_browser,"draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",_108,objj_msgSend(_browser,"columnOfTableView:",self),_10a,_10b)||objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"dragImageForRowsWithIndexes:tableColumns:event:offset:",_108,_109,_10a,_10b); +} +}),new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"),function(self,_10c,_10d,_10e,_10f,_110){ +with(self){ +var _111=_10e.length; +while(_111--){ +if(objj_msgSend(_10e[_111],"identifier")==="Leaf"){ +objj_msgSend(_10e,"removeObject:",_10e[_111]); +} +} +return objj_msgSend(_browser,"draggingViewForRowsWithIndexes:inColumn:withEvent:offset:",_10d,objj_msgSend(_browser,"columnOfTableView:",self),_10f,_110)||objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"dragViewForRowsWithIndexes:tableColumns:event:offset:",_10d,_10e,_10f,_110); +} +}),new objj_method(sel_getUid("moveUp:"),function(self,_112,_113){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"moveUp:",_113); +objj_msgSend(_browser,"selectRow:inColumn:",objj_msgSend(self,"selectedRow"),objj_msgSend(_browser,"selectedColumn")); +} +}),new objj_method(sel_getUid("moveDown:"),function(self,_114,_115){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"moveDown:",_115); +objj_msgSend(_browser,"selectRow:inColumn:",objj_msgSend(self,"selectedRow"),objj_msgSend(_browser,"selectedColumn")); +} +}),new objj_method(sel_getUid("moveLeft:"),function(self,_116,_117){ +with(self){ +var _118=objj_msgSend(_browser,"selectedColumn")-1,_119=objj_msgSend(_browser,"selectedRowInColumn:",_118); +objj_msgSend(_browser,"selectRow:inColumn:",_119,_118); +} +}),new objj_method(sel_getUid("moveRight:"),function(self,_11a,_11b){ +with(self){ +objj_msgSend(_browser,"selectRow:inColumn:",0,objj_msgSend(_browser,"selectedColumn")+1); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPBrowserTableDelegate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_browser"),new objj_ivar("_index"),new objj_ivar("_delegate"),new objj_ivar("_item")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_browser"),function(self,_11c){ +with(self){ +return _browser; +} +}),new objj_method(sel_getUid("_setBrowser:"),function(self,_11d,_11e){ +with(self){ +_browser=_11e; +} +}),new objj_method(sel_getUid("_index"),function(self,_11f){ +with(self){ +return _index; +} +}),new objj_method(sel_getUid("_setIndex:"),function(self,_120,_121){ +with(self){ +_index=_121; +} +}),new objj_method(sel_getUid("_delegate"),function(self,_122){ +with(self){ +return _delegate; +} +}),new objj_method(sel_getUid("_setDelegate:"),function(self,_123,_124){ +with(self){ +_delegate=_124; +} +}),new objj_method(sel_getUid("_item"),function(self,_125){ +with(self){ +return _item; +} +}),new objj_method(sel_getUid("_setItem:"),function(self,_126,_127){ +with(self){ +_item=_127; +} +}),new objj_method(sel_getUid("numberOfRowsInTableView:"),function(self,_128,_129){ +with(self){ +return objj_msgSend(_delegate,"browser:numberOfChildrenOfItem:",_browser,_item); +} +}),new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"),function(self,_12a,_12b,_12c,row){ +with(self){ +if(objj_msgSend(_12c,"identifier")==="Image"){ +return objj_msgSend(_delegate,"browser:imageValueForItem:",_browser,objj_msgSend(self,"childAtIndex:",row)); +}else{ +if(objj_msgSend(_12c,"identifier")==="Leaf"){ +return !objj_msgSend(_browser,"isLeafItem:",objj_msgSend(self,"childAtIndex:",row)); +}else{ +return objj_msgSend(_delegate,"browser:objectValueForItem:",_browser,objj_msgSend(self,"childAtIndex:",row)); +} +} +} +}),new objj_method(sel_getUid("_tableViewDoubleClicked:"),function(self,_12d,_12e){ +with(self){ +objj_msgSend(_browser,"doDoubleClick:",self); +} +}),new objj_method(sel_getUid("_tableViewClicked:"),function(self,_12f,_130){ +with(self){ +var _131=objj_msgSend(_130,"selectedRowIndexes"); +objj_msgSend(_browser,"_column:clickedRow:",_index,objj_msgSend(_131,"count")===1?objj_msgSend(_131,"firstIndex"):-1); +} +}),new objj_method(sel_getUid("childAtIndex:"),function(self,_132,_133){ +with(self){ +return objj_msgSend(_delegate,"browser:child:ofItem:",_browser,_133,_item); +} +}),new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"),function(self,_134,_135,info,row,_136){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:acceptDrop:atRow:column:dropOperation:"))){ +return objj_msgSend(_delegate,"browser:acceptDrop:atRow:column:dropOperation:",_browser,info,row,_index,_136); +}else{ +return NO; +} +} +}),new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"),function(self,_137,_138,info,row,_139){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:validateDrop:proposedRow:column:dropOperation:"))){ +return objj_msgSend(_delegate,"browser:validateDrop:proposedRow:column:dropOperation:",_browser,info,row,_index,_139); +}else{ +return CPDragOperationNone; +} +} +}),new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"),function(self,_13a,_13b,_13c,_13d){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:"))){ +return objj_msgSend(_delegate,"browser:writeRowsWithIndexes:inColumn:toPasteboard:",_browser,_13c,_index,_13d); +}else{ +return NO; +} +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(self,_13e,_13f){ +with(self){ +if(_13f===sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")){ +return objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")); +}else{ +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableDelegate").super_class},"respondsToSelector:",_13f); +} +} +})]); +var _1=objj_allocateClassPair(CPView,"_CPBrowserLeafView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isLeaf"),new objj_ivar("_branchImage"),new objj_ivar("_highlightedBranchImage")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isLeaf"),function(self,_140){ +with(self){ +return _isLeaf; +} +}),new objj_method(sel_getUid("branchImage"),function(self,_141){ +with(self){ +return _branchImage; +} +}),new objj_method(sel_getUid("setBranchImage:"),function(self,_142,_143){ +with(self){ +_branchImage=_143; +} +}),new objj_method(sel_getUid("highlightedBranchImage"),function(self,_144){ +with(self){ +return _highlightedBranchImage; +} +}),new objj_method(sel_getUid("setHighlightedBranchImage:"),function(self,_145,_146){ +with(self){ +_highlightedBranchImage=_146; +} +}),new objj_method(sel_getUid("objectValue"),function(self,_147){ +with(self){ +return _isLeaf; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(self,_148,_149){ +with(self){ +_isLeaf=!!_149; +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(self,_14a,_14b){ +with(self){ +if(_14b==="image-view"){ +return CGRectInset(objj_msgSend(self,"bounds"),1,1); +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"rectForEphemeralSubviewNamed:",_14b); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(self,_14c,_14d){ +with(self){ +if(_14d==="image-view"){ +return objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"createEphemeralSubviewNamed:",_14d); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_14e){ +with(self){ +var _14f=objj_msgSend(self,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","image-view",CPWindowAbove,nil); +var _150=objj_msgSend(self,"themeState")&CPThemeStateSelectedDataView; +objj_msgSend(_14f,"setImage:",_isLeaf?(_150?_highlightedBranchImage:_branchImage):nil); +objj_msgSend(_14f,"setImageScaling:",CPScaleNone); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_151,_152){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"encodeWithCoder:",_152); +objj_msgSend(_152,"encodeBool:forKey:",_isLeaf,"_CPBrowserLeafViewIsLeafKey"); +objj_msgSend(_152,"encodeObject:forKey:",_branchImage,"_CPBrowserLeafViewBranchImageKey"); +objj_msgSend(_152,"encodeObject:forKey:",_highlightedBranchImage,"_CPBrowserLeafViewHighlightedBranchImageKey"); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(self,_153,_154){ +with(self){ +if(self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"initWithCoder:",_154)){ +_isLeaf=objj_msgSend(_154,"decodeBoolForKey:","_CPBrowserLeafViewIsLeafKey"); +_branchImage=objj_msgSend(_154,"decodeObjectForKey:","_CPBrowserLeafViewBranchImageKey"); +_highlightedBranchImage=objj_msgSend(_154,"decodeObjectForKey:","_CPBrowserLeafViewHighlightedBranchImageKey"); +} +return self; +} +})]); +p;10;CPButton.jt;18863;@STATIC;1.0;i;21;_CPImageAndTextView.ji;12;CGGeometry.ji;11;CPControl.ji;17;CPStringDrawing.ji;12;CPCheckBox.ji;9;CPRadio.jt;18732; +objj_executeFile("_CPImageAndTextView.j",YES); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPStringDrawing.j",YES); +CPRoundedBezelStyle=1; +CPRegularSquareBezelStyle=2; +CPThickSquareBezelStyle=3; +CPThickerSquareBezelStyle=4; +CPDisclosureBezelStyle=5; +CPShadowlessSquareBezelStyle=6; +CPCircularBezelStyle=7; +CPTexturedSquareBezelStyle=8; +CPHelpButtonBezelStyle=9; +CPSmallSquareBezelStyle=10; +CPTexturedRoundedBezelStyle=11; +CPRoundRectBezelStyle=12; +CPRecessedBezelStyle=13; +CPRoundedDisclosureBezelStyle=14; +CPHUDBezelStyle=-1; +CPMomentaryLightButton=0; +CPPushOnPushOffButton=1; +CPToggleButton=2; +CPSwitchButton=3; +CPRadioButton=4; +CPMomentaryChangeButton=5; +CPOnOffButton=6; +CPMomentaryPushInButton=7; +CPMomentaryPushButton=0; +CPMomentaryLight=7; +CPNoButtonMask=0; +CPContentsButtonMask=1; +CPPushInButtonMask=2; +CPGrayButtonMask=4; +CPBackgroundButtonMask=8; +CPNoCellMask=CPNoButtonMask; +CPContentsCellMask=CPContentsButtonMask; +CPPushInCellMask=CPPushInButtonMask; +CPChangeGrayCellMask=CPGrayButtonMask; +CPChangeBackgroundCellMask=CPBackgroundButtonMask; +CPButtonStateMixed=CPThemeState("mixed"); +CPButtonDefaultHeight=24; +CPButtonImageOffset=3; +var _1=objj_allocateClassPair(CPControl,"CPButton"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_allowsMixedState"),new objj_ivar("_title"),new objj_ivar("_alternateTitle"),new objj_ivar("_showsStateBy"),new objj_ivar("_highlightsBy"),new objj_ivar("_imageDimsWhenDisabled"),new objj_ivar("_bezelStyle"),new objj_ivar("_controlSize"),new objj_ivar("_keyEquivalent"),new objj_ivar("_keyEquivalentModifierMask")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPButton").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setValue:forThemeAttribute:",CPCenterTextAlignment,"alignment"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPCenterVerticalTextAlignment,"vertical-alignment"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPImageLeft,"image-position"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPScaleNone,"image-scaling"); +_controlSize=CPRegularControlSize; +_keyEquivalent=""; +_keyEquivalentModifierMask=0; +objj_msgSend(_3,"setBordered:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("allowsMixedState"),function(_6,_7){ +with(_6){ +return _allowsMixedState; +} +}),new objj_method(sel_getUid("setAllowsMixedState:"),function(_8,_9,_a){ +with(_8){ +_a=!!_a; +if(_allowsMixedState===_a){ +return; +} +_allowsMixedState=_a; +if(!_allowsMixedState&&objj_msgSend(_8,"state")===CPMixedState){ +objj_msgSend(_8,"setState:",CPOnState); +} +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_b,_c,_d){ +with(_b){ +if(!_d||_d===""||(objj_msgSend(_d,"intValue")===0)){ +_d=CPOffState; +}else{ +if(!objj_msgSend(_d,"isKindOfClass:",objj_msgSend(CPNumber,"class"))){ +_d=CPOnState; +}else{ +if(_d>CPOnState){ +_d=CPOnState; +}else{ +if(_d<CPOffState){ +if(objj_msgSend(_b,"allowsMixedState")){ +_d=CPMixedState; +}else{ +_d=CPOnState; +} +} +} +} +} +objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPButton").super_class},"setObjectValue:",_d); +switch(objj_msgSend(_b,"objectValue")){ +case CPMixedState: +objj_msgSend(_b,"unsetThemeState:",CPThemeStateSelected); +objj_msgSend(_b,"setThemeState:",CPButtonStateMixed); +break; +case CPOnState: +objj_msgSend(_b,"unsetThemeState:",CPButtonStateMixed); +objj_msgSend(_b,"setThemeState:",CPThemeStateSelected); +break; +case CPOffState: +objj_msgSend(_b,"unsetThemeState:",CPThemeStateSelected|CPButtonStateMixed); +} +} +}),new objj_method(sel_getUid("nextState"),function(_e,_f){ +with(_e){ +if(objj_msgSend(_e,"allowsMixedState")){ +var _10=objj_msgSend(_e,"state"); +return _10-((_10===-1)?-2:1); +} +return 1-objj_msgSend(_e,"state"); +} +}),new objj_method(sel_getUid("setNextState"),function(_11,_12){ +with(_11){ +objj_msgSend(_11,"setState:",objj_msgSend(_11,"nextState")); +} +}),new objj_method(sel_getUid("setState:"),function(_13,_14,_15){ +with(_13){ +objj_msgSend(_13,"setIntValue:",_15); +} +}),new objj_method(sel_getUid("state"),function(_16,_17){ +with(_16){ +return objj_msgSend(_16,"intValue"); +} +}),new objj_method(sel_getUid("setTitle:"),function(_18,_19,_1a){ +with(_18){ +if(_title===_1a){ +return; +} +_title=_1a; +objj_msgSend(_18,"setNeedsLayout"); +objj_msgSend(_18,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("title"),function(_1b,_1c){ +with(_1b){ +return _title; +} +}),new objj_method(sel_getUid("setAlternateTitle:"),function(_1d,_1e,_1f){ +with(_1d){ +if(_alternateTitle===_1f){ +return; +} +_alternateTitle=_1f; +objj_msgSend(_1d,"setNeedsLayout"); +objj_msgSend(_1d,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("alternateTitle"),function(_20,_21){ +with(_20){ +return _alternateTitle; +} +}),new objj_method(sel_getUid("setImage:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_22,"setValue:forThemeAttribute:",_24,"image"); +} +}),new objj_method(sel_getUid("image"),function(_25,_26){ +with(_25){ +return objj_msgSend(_25,"valueForThemeAttribute:inState:","image",CPThemeStateNormal); +} +}),new objj_method(sel_getUid("setAlternateImage:"),function(_27,_28,_29){ +with(_27){ +objj_msgSend(_27,"setValue:forThemeAttribute:inState:",_29,"image",CPThemeStateHighlighted); +} +}),new objj_method(sel_getUid("alternateImage"),function(_2a,_2b){ +with(_2a){ +return objj_msgSend(_2a,"valueForThemeAttribute:inState:","image",CPThemeStateHighlighted); +} +}),new objj_method(sel_getUid("setImageOffset:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_2c,"setValue:forThemeAttribute:",_2e,"image-offset"); +} +}),new objj_method(sel_getUid("imageOffset"),function(_2f,_30){ +with(_2f){ +return objj_msgSend(_2f,"valueForThemeAttribute:","image-offset"); +} +}),new objj_method(sel_getUid("setShowsStateBy:"),function(_31,_32,_33){ +with(_31){ +if(_showsStateBy===_33){ +return; +} +_showsStateBy=_33; +objj_msgSend(_31,"setNeedsDisplay:",YES); +objj_msgSend(_31,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("showsStateBy"),function(_34,_35){ +with(_34){ +return _showsStateBy; +} +}),new objj_method(sel_getUid("setHighlightsBy:"),function(_36,_37,_38){ +with(_36){ +if(_highlightsBy===_38){ +return; +} +_highlightsBy=_38; +if(objj_msgSend(_36,"hasThemeState:",CPThemeStateHighlighted)){ +objj_msgSend(_36,"setNeedsDisplay:",YES); +objj_msgSend(_36,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("setButtonType:"),function(_39,_3a,_3b){ +with(_39){ +switch(_3b){ +case CPMomentaryLightButton: +objj_msgSend(_39,"setHighlightsBy:",CPChangeBackgroundCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPNoCellMask); +break; +case CPMomentaryPushInButton: +objj_msgSend(_39,"setHighlightsBy:",CPPushInCellMask|CPChangeGrayCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPNoCellMask); +break; +case CPMomentaryChangeButton: +objj_msgSend(_39,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPNoCellMask); +break; +case CPPushOnPushOffButton: +objj_msgSend(_39,"setHighlightsBy:",CPPushInCellMask|CPChangeGrayCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPChangeBackgroundCellMask); +break; +case CPOnOffButton: +objj_msgSend(_39,"setHighlightsBy:",CPChangeBackgroundCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPChangeBackgroundCellMask); +break; +case CPToggleButton: +objj_msgSend(_39,"setHighlightsBy:",CPPushInCellMask|CPContentsCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPContentsCellMask); +break; +case CPSwitchButton: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The CPSwitchButton type is not supported in Cappuccino, use the CPCheckBox class instead."); +case CPRadioButton: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The CPRadioButton type is not supported in Cappuccino, use the CPRadio class instead."); +default: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unknown button type."); +} +objj_msgSend(_39,"setImageDimsWhenDisabled:",YES); +} +}),new objj_method(sel_getUid("setImageDimsWhenDisabled:"),function(_3c,_3d,_3e){ +with(_3c){ +_3e=!!_3e; +if(_imageDimsWhenDisabled===_3e){ +return; +} +_imageDimsWhenDisabled=_3e; +if(objj_msgSend(_3c,"hasThemeState:",CPThemeStateDisabled)){ +objj_msgSend(_3c,"setNeedsDisplay:",YES); +objj_msgSend(_3c,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("imageDimsWhenDisabled"),function(_3f,_40){ +with(_3f){ +return _imageDimsWhenDisabled; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_41,_42,_43){ +with(_41){ +objj_msgSend(_41,"highlight:",YES); +return objj_msgSendSuper({receiver:_41,super_class:objj_getClass("CPButton").super_class},"startTrackingAt:",_43); +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_44,_45,_46,_47,_48){ +with(_44){ +objj_msgSend(_44,"highlight:",NO); +objj_msgSendSuper({receiver:_44,super_class:objj_getClass("CPButton").super_class},"stopTracking:at:mouseIsUp:",_46,_47,_48); +if(_48&&CGRectContainsPoint(objj_msgSend(_44,"bounds"),_47)){ +objj_msgSend(_44,"setNextState"); +} +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_49,_4a,_4b){ +with(_49){ +var _4c=objj_msgSend(_49,"currentValueForThemeAttribute:","content-inset"); +if(((_4c).top===0&&(_4c).right===0&&(_4c).bottom===0&&(_4c).left===0)){ +return _4b; +} +_4b.origin.x+=_4c.left; +_4b.origin.y+=_4c.top; +_4b.size.width-=_4c.left+_4c.right; +_4b.size.height-=_4c.top+_4c.bottom; +return _4b; +} +}),new objj_method(sel_getUid("bezelRectForBounds:"),function(_4d,_4e,_4f){ +with(_4d){ +if(!objj_msgSend(_4d,"isBordered")){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _50=objj_msgSend(_4d,"currentValueForThemeAttribute:","bezel-inset"); +if(((_50).top===0&&(_50).right===0&&(_50).bottom===0&&(_50).left===0)){ +return _4f; +} +_4f.origin.x+=_50.left; +_4f.origin.y+=_50.top; +_4f.size.width-=_50.left+_50.right; +_4f.size.height-=_50.top+_50.bottom; +return _4f; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_51,_52){ +with(_51){ +objj_msgSend(_51,"layoutSubviews"); +var _53,_54=objj_msgSend(_51,"ephemeralSubviewNamed:","content-view"); +if(_54){ +objj_msgSend(_54,"sizeToFit"); +_53=objj_msgSend(_54,"frameSize"); +}else{ +_53=objj_msgSend((objj_msgSend(_51,"title")||" "),"sizeWithFont:",objj_msgSend(_51,"currentValueForThemeAttribute:","font")); +} +var _55=objj_msgSend(_51,"currentValueForThemeAttribute:","content-inset"),_56=objj_msgSend(_51,"currentValueForThemeAttribute:","min-size"),_57=objj_msgSend(_51,"currentValueForThemeAttribute:","max-size"); +_53.width=MAX(_53.width+_55.left+_55.right,_56.width); +_53.height=MAX(_53.height+_55.top+_55.bottom,_56.height); +if(_57.width>=0){ +_53.width=MIN(_53.width,_57.width); +} +if(_57.height>=0){ +_53.height=MIN(_53.height,_57.height); +} +objj_msgSend(_51,"setFrameSize:",_53); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_58,_59,_5a){ +with(_58){ +if(_5a==="bezel-view"){ +return objj_msgSend(_58,"bezelRectForBounds:",objj_msgSend(_58,"bounds")); +}else{ +if(_5a==="content-view"){ +return objj_msgSend(_58,"contentRectForBounds:",objj_msgSend(_58,"bounds")); +} +} +return objj_msgSendSuper({receiver:_58,super_class:objj_getClass("CPButton").super_class},"rectForEphemeralSubviewNamed:",_5a); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d==="bezel-view"){ +var _5e=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_5e,"setHitTests:",NO); +return _5e; +}else{ +return objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_5f,_60){ +with(_5f){ +var _61=objj_msgSend(_5f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","bezel-view",CPWindowBelow,"content-view"); +objj_msgSend(_61,"setBackgroundColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","bezel-color")); +var _62=objj_msgSend(_5f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","content-view",CPWindowAbove,"bezel-view"); +if(_62){ +objj_msgSend(_62,"setText:",(objj_msgSend(_5f,"hasThemeState:",CPThemeStateHighlighted)&&_alternateTitle)?_alternateTitle:_title); +objj_msgSend(_62,"setImage:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image")); +objj_msgSend(_62,"setImageOffset:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-offset")); +objj_msgSend(_62,"setFont:",objj_msgSend(_5f,"currentValueForThemeAttribute:","font")); +objj_msgSend(_62,"setTextColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_62,"setAlignment:",objj_msgSend(_5f,"currentValueForThemeAttribute:","alignment")); +objj_msgSend(_62,"setVerticalAlignment:",objj_msgSend(_5f,"currentValueForThemeAttribute:","vertical-alignment")); +objj_msgSend(_62,"setLineBreakMode:",objj_msgSend(_5f,"currentValueForThemeAttribute:","line-break-mode")); +objj_msgSend(_62,"setTextShadowColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_62,"setTextShadowOffset:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-shadow-offset")); +objj_msgSend(_62,"setImagePosition:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-position")); +objj_msgSend(_62,"setImageScaling:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-scaling")); +objj_msgSend(_62,"setDimsImage:",objj_msgSend(_5f,"hasThemeState:",CPThemeStateDisabled)&&_imageDimsWhenDisabled); +} +} +}),new objj_method(sel_getUid("setBordered:"),function(_63,_64,_65){ +with(_63){ +if(_65){ +objj_msgSend(_63,"setThemeState:",CPThemeStateBordered); +}else{ +objj_msgSend(_63,"unsetThemeState:",CPThemeStateBordered); +} +} +}),new objj_method(sel_getUid("isBordered"),function(_66,_67){ +with(_66){ +return objj_msgSend(_66,"hasThemeState:",CPThemeStateBordered); +} +}),new objj_method(sel_getUid("setKeyEquivalent:"),function(_68,_69,_6a){ +with(_68){ +_keyEquivalent=_6a||""; +if(_6a===CPNewlineCharacter||_6a===CPCarriageReturnCharacter){ +objj_msgSend(_68,"setThemeState:",CPThemeStateDefault); +}else{ +objj_msgSend(_68,"unsetThemeState:",CPThemeStateDefault); +} +} +}),new objj_method(sel_getUid("viewWillMoveToWindow:"),function(_6b,_6c,_6d){ +with(_6b){ +var _6e=objj_msgSend(_6b,"window"); +if(_6e===_6d||_6d===nil){ +return; +} +if(objj_msgSend(_6e,"defaultButton")===_6b){ +objj_msgSend(_6e,"setDefaultButton:",nil); +} +if(objj_msgSend(_6b,"keyEquivalent")===CPNewlineCharacter||objj_msgSend(_6b,"keyEquivalent")===CPCarriageReturnCharacter){ +objj_msgSend(_6d,"setDefaultButton:",_6b); +} +} +}),new objj_method(sel_getUid("keyEquivalent"),function(_6f,_70){ +with(_6f){ +return _keyEquivalent; +} +}),new objj_method(sel_getUid("setKeyEquivalentModifierMask:"),function(_71,_72,_73){ +with(_71){ +_keyEquivalentModifierMask=_73; +} +}),new objj_method(sel_getUid("keyEquivalentModifierMask"),function(_74,_75){ +with(_74){ +return _keyEquivalentModifierMask; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_76,_77,_78){ +with(_76){ +if(objj_msgSend(objj_msgSend(_76,"window"),"defaultButton")===_76){ +return NO; +} +if(!objj_msgSend(_78,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(_76,"keyEquivalent"),objj_msgSend(_76,"keyEquivalentModifierMask"))){ +return NO; +} +objj_msgSend(_76,"performClick:",nil); +return YES; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("buttonWithTitle:"),function(_79,_7a,_7b){ +with(_79){ +return objj_msgSend(_79,"buttonWithTitle:theme:",_7b,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("buttonWithTitle:theme:"),function(_7c,_7d,_7e,_7f){ +with(_7c){ +var _80=objj_msgSend(objj_msgSend(_7c,"alloc"),"init"); +objj_msgSend(_80,"setTheme:",_7f); +objj_msgSend(_80,"setTitle:",_7e); +objj_msgSend(_80,"sizeToFit"); +return _80; +} +}),new objj_method(sel_getUid("themeClass"),function(_81,_82){ +with(_81){ +return "button"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_83,_84){ +with(_83){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),0,{top:(0),right:(0),bottom:(0),left:(0)},{top:(0),right:(0),bottom:(0),left:(0)},objj_msgSend(CPNull,"null")],["image","image-offset","bezel-inset","content-inset","bezel-color"]); +} +})]); +var _1=objj_getClass("CPButton"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setBezelStyle:"),function(_85,_86,_87){ +with(_85){ +} +}),new objj_method(sel_getUid("bezelStyle"),function(_88,_89){ +with(_88){ +} +})]); +var _8a="CPButtonImageKey",_8b="CPButtonAlternateImageKey",_8c="CPButtonTitleKey",_8d="CPButtonAlternateTitleKey",_8e="CPButtonIsBorderedKey",_8f="CPButtonAllowsMixedStateKey",_90="CPButtonImageDimsWhenDisabledKey",_91="CPButtonImagePositionKey",_92="CPButtonKeyEquivalentKey",_93="CPButtonKeyEquivalentMaskKey"; +var _1=objj_getClass("CPButton"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_94,_95,_96){ +with(_94){ +_94=objj_msgSendSuper({receiver:_94,super_class:objj_getClass("CPButton").super_class},"initWithCoder:",_96); +if(_94){ +_controlSize=CPRegularControlSize; +_title=objj_msgSend(_96,"decodeObjectForKey:",_8c); +_alternateTitle=objj_msgSend(_96,"decodeObjectForKey:",_8d); +if(objj_msgSend(_96,"containsValueForKey:",_8f)){ +_allowsMixedState=objj_msgSend(_96,"decodeBoolForKey:",_8f); +} +objj_msgSend(_94,"setImageDimsWhenDisabled:",objj_msgSend(_96,"decodeObjectForKey:",_90)); +if(objj_msgSend(_96,"containsValueForKey:",_91)){ +objj_msgSend(_94,"setImagePosition:",objj_msgSend(_96,"decodeIntForKey:",_91)); +} +if(objj_msgSend(_96,"containsValueForKey:",_92)){ +objj_msgSend(_94,"setKeyEquivalent:",CFData.decodeBase64ToUtf16String(objj_msgSend(_96,"decodeObjectForKey:",_92))); +} +_keyEquivalentModifierMask=objj_msgSend(_96,"decodeIntForKey:",_93); +objj_msgSend(_94,"setNeedsLayout"); +objj_msgSend(_94,"setNeedsDisplay:",YES); +} +return _94; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_97,_98,_99){ +with(_97){ +objj_msgSendSuper({receiver:_97,super_class:objj_getClass("CPButton").super_class},"encodeWithCoder:",_99); +objj_msgSend(_99,"encodeObject:forKey:",_title,_8c); +objj_msgSend(_99,"encodeObject:forKey:",_alternateTitle,_8d); +objj_msgSend(_99,"encodeBool:forKey:",_allowsMixedState,_8f); +objj_msgSend(_99,"encodeBool:forKey:",objj_msgSend(_97,"imageDimsWhenDisabled"),_90); +objj_msgSend(_99,"encodeInt:forKey:",objj_msgSend(_97,"imagePosition"),_91); +if(_keyEquivalent){ +objj_msgSend(_99,"encodeObject:forKey:",CFData.encodeBase64Utf16String(_keyEquivalent),_92); +} +objj_msgSend(_99,"encodeInt:forKey:",_keyEquivalentModifierMask,_93); +} +})]); +objj_executeFile("CPCheckBox.j",YES); +objj_executeFile("CPRadio.j",YES); +p;13;CPButtonBar.jt;9767;@STATIC;1.0;I;15;AppKit/CPView.jt;9728; +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPView,"CPButtonBar"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_hasResizeControl"),new objj_ivar("_resizeControlIsLeftAligned"),new objj_ivar("_buttons")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPButtonBar").super_class},"initWithFrame:",_5); +if(_3){ +_buttons=[]; +objj_msgSend(_3,"setNeedsLayout"); +} +return _3; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_6,"superview"),_9=_6; +while(_8){ +if(objj_msgSend(_8,"isKindOfClass:",objj_msgSend(CPSplitView,"class"))){ +var _a=objj_msgSend(objj_msgSend(_8,"subviews"),"indexOfObject:",_9); +objj_msgSend(_8,"setButtonBar:forDividerAtIndex:",_6,_a); +break; +} +_9=_8; +_8=objj_msgSend(_8,"superview"); +} +} +}),new objj_method(sel_getUid("setButtons:"),function(_b,_c,_d){ +with(_b){ +_buttons=objj_msgSend(CPArray,"arrayWithArray:",_d); +for(var i=0,_e=objj_msgSend(_buttons,"count");i<_e;i++){ +objj_msgSend(_buttons[i],"setBordered:",YES); +} +objj_msgSend(_b,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("buttons"),function(_f,_10){ +with(_f){ +return objj_msgSend(CPArray,"arrayWithArray:",_buttons); +} +}),new objj_method(sel_getUid("setHasResizeControl:"),function(_11,_12,_13){ +with(_11){ +if(_hasResizeControl===_13){ +return; +} +_hasResizeControl=!!_13; +objj_msgSend(_11,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("hasResizeControl"),function(_14,_15){ +with(_14){ +return _hasResizeControl; +} +}),new objj_method(sel_getUid("setResizeControlIsLeftAligned:"),function(_16,_17,_18){ +with(_16){ +if(_resizeControlIsLeftAligned===_18){ +return; +} +_resizeControlIsLeftAligned=!!_18; +objj_msgSend(_16,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("resizeControlIsLeftAligned"),function(_19,_1a){ +with(_19){ +return _resizeControlIsLeftAligned; +} +}),new objj_method(sel_getUid("resizeControlFrame"),function(_1b,_1c){ +with(_1b){ +var _1d=objj_msgSend(_1b,"currentValueForThemeAttribute:","resize-control-inset"),_1e=objj_msgSend(_1b,"currentValueForThemeAttribute:","resize-control-size"),_1f=objj_msgSend(_1b,"bounds"),_20=_resizeControlIsLeftAligned?0:_1f.size.width-_1e.width-_1d.right-_1d.left; +return CGRectMake(_20,0,_1e.width+_1d.left+_1d.right,_1e.height+_1d.top+_1d.bottom); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_21,_22,_23){ +with(_21){ +if(_23==="resize-control-view"){ +var _24=objj_msgSend(_21,"currentValueForThemeAttribute:","resize-control-inset"),_25=objj_msgSend(_21,"currentValueForThemeAttribute:","resize-control-size"),_26=objj_msgSend(_21,"bounds"); +if(_resizeControlIsLeftAligned){ +return CGRectMake(_24.left,_24.top,_25.width,_25.height); +}else{ +return CGRectMake(_26.size.width-_25.width-_24.right,_24.top,_25.width,_25.height); +} +} +return objj_msgSendSuper({receiver:_21,super_class:objj_getClass("CPButtonBar").super_class},"rectForEphemeralSubviewNamed:",_23); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_27,_28,_29){ +with(_27){ +if(_29==="resize-control-view"){ +return objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPButtonBar").super_class},"createEphemeralSubviewNamed:",_29); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_2a,_2b){ +with(_2a){ +objj_msgSend(_2a,"setBackgroundColor:",objj_msgSend(_2a,"currentValueForThemeAttribute:","bezel-color")); +var _2c=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateNormal),_2d=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateHighlighted),_2e=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateDisabled),_2f=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-text-color",CPThemeStateNormal); +var _30=objj_msgSend(CPArray,"arrayWithArray:",_buttons),_31=objj_msgSend(_30,"count"); +while(_31--){ +if(objj_msgSend(_30[_31],"isHidden")){ +objj_msgSend(_30,"removeObject:",_30[_31]); +} +} +var _32=_resizeControlIsLeftAligned?CGRectGetMaxX(objj_msgSend(_2a,"bounds"))+1:-1,_33=objj_msgSend(_2a,"bounds"),_34=CGRectGetHeight(_33)-1,_35=CGRectGetWidth(_33),_36=_hasResizeControl?objj_msgSend(_2a,"rectForEphemeralSubviewNamed:","resize-control-view"):CGRectMakeZero(),_37=CGRectGetWidth(_36),_38=_35-_37-1; +for(var i=0,_31=objj_msgSend(_30,"count");i<_31;i++){ +var _39=_30[i],_3a=CGRectGetWidth(objj_msgSend(_39,"frame")); +if(_38>_3a){ +_38-=_3a; +}else{ +break; +} +if(_resizeControlIsLeftAligned){ +objj_msgSend(_39,"setFrame:",CGRectMake(_32-_3a,1,_3a,_34)); +_32-=_3a-1; +}else{ +objj_msgSend(_39,"setFrame:",CGRectMake(_32,1,_3a,_34)); +_32+=_3a-1; +} +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2c,"bezel-color",CPThemeStateNormal|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2d,"bezel-color",CPThemeStateHighlighted|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2e,"bezel-color",CPThemeStateDisabled|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2f,"text-color",CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2c,"bezel-color",CPThemeStateNormal|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2d,"bezel-color",CPThemeStateHighlighted|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2e,"bezel-color",CPThemeStateDisabled|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_2a,"addSubview:",_39); +} +if(_hasResizeControl){ +var _3b=objj_msgSend(_2a,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","resize-control-view",CPWindowAbove,nil); +objj_msgSend(_3b,"setAutoresizingMask:",_resizeControlIsLeftAligned?CPViewMaxXMargin:CPViewMinXMargin); +objj_msgSend(_3b,"setBackgroundColor:",objj_msgSend(_2a,"currentValueForThemeAttribute:","resize-control-color")); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_3c,_3d,_3e){ +with(_3c){ +objj_msgSendSuper({receiver:_3c,super_class:objj_getClass("CPButtonBar").super_class},"setFrameSize:",_3e); +objj_msgSend(_3c,"setNeedsLayout"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("plusButton"),function(_3f,_40){ +with(_3f){ +var _41=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_42=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","plus_button.png"),CGSizeMake(11,12)); +objj_msgSend(_41,"setBordered:",NO); +objj_msgSend(_41,"setImage:",_42); +objj_msgSend(_41,"setImagePosition:",CPImageOnly); +return _41; +} +}),new objj_method(sel_getUid("minusButton"),function(_43,_44){ +with(_43){ +var _45=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_46=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","minus_button.png"),CGSizeMake(11,4)); +objj_msgSend(_45,"setBordered:",NO); +objj_msgSend(_45,"setImage:",_46); +objj_msgSend(_45,"setImagePosition:",CPImageOnly); +return _45; +} +}),new objj_method(sel_getUid("actionPopupButton"),function(_47,_48){ +with(_47){ +var _49=objj_msgSend(objj_msgSend(CPPopUpButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_4a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","action_button.png"),CGSizeMake(22,14)); +objj_msgSend(_49,"addItemWithTitle:",nil); +objj_msgSend(objj_msgSend(_49,"lastItem"),"setImage:",_4a); +objj_msgSend(_49,"setImagePosition:",CPImageOnly); +objj_msgSend(_49,"setValue:forThemeAttribute:",CGInsetMake(0,0,0,0),"content-inset"); +objj_msgSend(_49,"setPullsDown:",YES); +return _49; +} +}),new objj_method(sel_getUid("themeClass"),function(_4b,_4c){ +with(_4b){ +return "button-bar"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_4d,_4e){ +with(_4d){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CGInsetMake(0,0,0,0),CGSizeMakeZero(),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["resize-control-inset","resize-control-size","resize-control-color","bezel-color","button-bezel-color","button-text-color"]); +} +})]); +var _4f="CPButtonBarHasResizeControlKey",_50="CPButtonBarResizeControlIsLeftAlignedKey",_51="CPButtonBarButtonsKey"; +var _1=objj_getClass("CPButtonBar"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButtonBar\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("encodeWithCoder:"),function(_52,_53,_54){ +with(_52){ +objj_msgSendSuper({receiver:_52,super_class:objj_getClass("CPButtonBar").super_class},"encodeWithCoder:",_54); +objj_msgSend(_54,"encodeBool:forKey:",_hasResizeControl,_4f); +objj_msgSend(_54,"encodeBool:forKey:",_resizeControlIsLeftAligned,_50); +objj_msgSend(_54,"encodeObject:forKey:",_buttons,_51); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_55,_56,_57){ +with(_55){ +if(_55=objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPButtonBar").super_class},"initWithCoder:",_57)){ +_buttons=objj_msgSend(_57,"decodeObjectForKey:",_51)||[]; +_hasResizeControl=objj_msgSend(_57,"decodeBoolForKey:",_4f); +_resizeControlIsLeftAligned=objj_msgSend(_57,"decodeBoolForKey:",_50); +} +return _55; +} +})]); +p;12;CPCheckBox.jt;1690;@STATIC;1.0;i;10;CPButton.jt;1656; +objj_executeFile("CPButton.j",YES); +CPCheckBoxImageOffset=4; +var _1=objj_allocateClassPair(CPButton,"CPCheckBox"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCheckBox").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_3,"setShowsStateBy:",CPContentsCellMask); +objj_msgSend(_3,"setImagePosition:",CPImageLeft); +objj_msgSend(_3,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_3,"setBordered:",NO); +} +return _3; +} +}),new objj_method(sel_getUid("takeStateFromKeyPath:ofObjects:"),function(_6,_7,_8,_9){ +with(_6){ +var _a=_9.length,_b=objj_msgSend(_9[0],"valueForKeyPath:",_8)?CPOnState:CPOffState; +objj_msgSend(_6,"setAllowsMixedState:",NO); +objj_msgSend(_6,"setState:",_b); +while(_a-->1){ +if(_b!==(objj_msgSend(_9[_a],"valueForKeyPath:",_8)?CPOnState:CPOffState)){ +objj_msgSend(_6,"setAllowsMixedState:",YES); +objj_msgSend(_6,"setState:",CPMixedState); +} +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_c,_d,_e,_f){ +with(_c){ +objj_msgSend(_c,"takeStateFromKeyPath:ofObjects:",_e,_f); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("checkBoxWithTitle:theme:"),function(_10,_11,_12,_13){ +with(_10){ +return objj_msgSend(_10,"buttonWithTitle:theme:",_12,_13); +} +}),new objj_method(sel_getUid("checkBoxWithTitle:"),function(_14,_15,_16){ +with(_14){ +return objj_msgSend(_14,"buttonWithTitle:",_16); +} +}),new objj_method(sel_getUid("themeClass"),function(_17,_18){ +with(_17){ +return "check-box"; +} +})]); +p;12;CPClipView.jt;4951;@STATIC;1.0;i;8;CPView.jt;4920; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"CPClipView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_documentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setDocumentView:"),function(_3,_4,_5){ +with(_3){ +if(_documentView==_5){ +return; +} +var _6=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_documentView){ +objj_msgSend(_6,"removeObserver:name:object:",_3,CPViewFrameDidChangeNotification,_documentView); +objj_msgSend(_6,"removeObserver:name:object:",_3,CPViewBoundsDidChangeNotification,_documentView); +objj_msgSend(_documentView,"removeFromSuperview"); +} +_documentView=_5; +if(_documentView){ +objj_msgSend(_3,"addSubview:",_documentView); +objj_msgSend(_documentView,"setPostsFrameChangedNotifications:",YES); +objj_msgSend(_documentView,"setPostsBoundsChangedNotifications:",YES); +objj_msgSend(_6,"addObserver:selector:name:object:",_3,sel_getUid("viewFrameChanged:"),CPViewFrameDidChangeNotification,_documentView); +objj_msgSend(_6,"addObserver:selector:name:object:",_3,sel_getUid("viewBoundsChanged:"),CPViewBoundsDidChangeNotification,_documentView); +} +} +}),new objj_method(sel_getUid("documentView"),function(_7,_8){ +with(_7){ +return _documentView; +} +}),new objj_method(sel_getUid("constrainScrollPoint:"),function(_9,_a,_b){ +with(_9){ +if(!_documentView){ +return {x:0,y:0}; +} +var _c=objj_msgSend(_documentView,"frame"); +_b.x=MAX(0,MIN(_b.x,MAX((_c.size.width)-(_bounds.size.width),0))); +_b.y=MAX(0,MIN(_b.y,MAX((_c.size.height)-(_bounds.size.height),0))); +return _b; +} +}),new objj_method(sel_getUid("setBoundsOrigin:"),function(_d,_e,_f){ +with(_d){ +if((_bounds.origin.x==_f.x&&_bounds.origin.y==_f.y)){ +return; +} +objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPClipView").super_class},"setBoundsOrigin:",_f); +var _10=objj_msgSend(_d,"superview"),_11=objj_getClass("CPScrollView"); +if(objj_msgSend(_10,"isKindOfClass:",_11)){ +objj_msgSend(_10,"reflectScrolledClipView:",_d); +} +} +}),new objj_method(sel_getUid("scrollToPoint:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_12,"setBoundsOrigin:",objj_msgSend(_12,"constrainScrollPoint:",_14)); +} +}),new objj_method(sel_getUid("viewBoundsChanged:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("viewFrameChanged:"),function(_18,_19,_1a){ +with(_18){ +objj_msgSend(_18,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSendSuper({receiver:_1b,super_class:objj_getClass("CPClipView").super_class},"resizeSubviewsWithOldSize:",_1d); +objj_msgSend(_1b,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("_constrainScrollPoint"),function(_1e,_1f){ +with(_1e){ +var _20=objj_msgSend(_1e,"bounds").origin; +objj_msgSend(_1e,"scrollToPoint:",_20); +if(!CGPointEqualToPoint(_20,objj_msgSend(_1e,"bounds").origin)){ +return; +} +var _21=objj_msgSend(_1e,"superview"),_22=objj_getClass("CPScrollView"); +if(objj_msgSend(_21,"isKindOfClass:",_22)){ +objj_msgSend(_21,"reflectScrolledClipView:",_1e); +} +} +}),new objj_method(sel_getUid("autoscroll:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_23,"bounds"),_27=objj_msgSend(_23,"convertPoint:fromView:",objj_msgSend(_25,"locationInWindow"),nil),_28=objj_msgSend(_23,"superview"),_29=0,_2a=0; +if(CGRectContainsPoint(_26,_27)){ +return NO; +} +if(!objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))||objj_msgSend(_28,"hasVerticalScroller")){ +if(_27.y<CGRectGetMinY(_26)){ +_2a=CGRectGetMinY(_26)-_27.y; +}else{ +if(_27.y>CGRectGetMaxY(_26)){ +_2a=CGRectGetMaxY(_26)-_27.y; +} +} +if(_2a<-_26.size.height){ +_2a=-_26.size.height; +} +if(_2a>_26.size.height){ +_2a=_26.size.height; +} +} +if(!objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))||objj_msgSend(_28,"hasHorizontalScroller")){ +if(_27.x<CGRectGetMinX(_26)){ +_29=CGRectGetMinX(_26)-_27.x; +}else{ +if(_27.x>CGRectGetMaxX(_26)){ +_29=CGRectGetMaxX(_26)-_27.x; +} +} +if(_29<-_26.size.width){ +_29=-_26.size.width; +} +if(_29>_26.size.width){ +_29=_26.size.width; +} +} +return objj_msgSend(_23,"scrollToPoint:",CGPointMake(_26.origin.x-_29,_26.origin.y-_2a)); +} +})]); +var _2b="CPScrollViewDocumentView"; +var _1=objj_getClass("CPClipView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPClipView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_2c,_2d,_2e){ +with(_2c){ +if(_2c=objj_msgSendSuper({receiver:_2c,super_class:objj_getClass("CPClipView").super_class},"initWithCoder:",_2e)){ +objj_msgSend(_2c,"setDocumentView:",objj_msgSend(_2e,"decodeObjectForKey:",_2b)); +} +return _2c; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2f,_30,_31){ +with(_2f){ +objj_msgSendSuper({receiver:_2f,super_class:objj_getClass("CPClipView").super_class},"encodeWithCoder:",_31); +objj_msgSend(_31,"encodeObject:forKey:",_documentView,_2b); +} +})]); +p;18;CPCollectionView.jt;20492;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;Foundation/CPData.jI;23;Foundation/CPIndexSet.jI;28;Foundation/CPKeyedArchiver.jI;30;Foundation/CPKeyedUnarchiver.ji;8;CPView.ji;22;CPCollectionViewItem.jt;20288; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPData.j",NO); +objj_executeFile("Foundation/CPIndexSet.j",NO); +objj_executeFile("Foundation/CPKeyedArchiver.j",NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPCollectionViewItem.j",YES); +var _1=objj_allocateClassPair(CPView,"CPCollectionView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_content"),new objj_ivar("_items"),new objj_ivar("_itemData"),new objj_ivar("_itemPrototype"),new objj_ivar("_itemForDragging"),new objj_ivar("_cachedItems"),new objj_ivar("_maxNumberOfRows"),new objj_ivar("_maxNumberOfColumns"),new objj_ivar("_minItemSize"),new objj_ivar("_maxItemSize"),new objj_ivar("_backgroundColors"),new objj_ivar("_tileWidth"),new objj_ivar("_isSelectable"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_selectionIndexes"),new objj_ivar("_itemSize"),new objj_ivar("_horizontalMargin"),new objj_ivar("_verticalMargin"),new objj_ivar("_numberOfRows"),new objj_ivar("_numberOfColumns"),new objj_ivar("_delegate"),new objj_ivar("_mouseDownEvent")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCollectionView").super_class},"initWithFrame:",_5); +if(_3){ +_items=[]; +_content=[]; +_cachedItems=[]; +_itemSize=CGSizeMakeZero(); +_minItemSize=CGSizeMakeZero(); +_maxItemSize=CGSizeMakeZero(); +objj_msgSend(_3,"setBackgroundColors:",nil); +_verticalMargin=5; +_tileWidth=-1; +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_allowsEmptySelection=YES; +_isSelectable=YES; +} +return _3; +} +}),new objj_method(sel_getUid("setItemPrototype:"),function(_6,_7,_8){ +with(_6){ +_cachedItems=[]; +_itemData=nil; +_itemForDragging=nil; +_itemPrototype=_8; +objj_msgSend(_6,"reloadContent"); +} +}),new objj_method(sel_getUid("itemPrototype"),function(_9,_a){ +with(_9){ +return _itemPrototype; +} +}),new objj_method(sel_getUid("newItemForRepresentedObject:"),function(_b,_c,_d){ +with(_b){ +var _e=nil; +if(_cachedItems.length){ +_e=_cachedItems.pop(); +}else{ +if(!_itemData){ +if(_itemPrototype){ +_itemData=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_itemPrototype); +} +} +_e=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_itemData); +} +objj_msgSend(_e,"setRepresentedObject:",_d); +objj_msgSend(objj_msgSend(_e,"view"),"setFrameSize:",_itemSize); +return _e; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_f,_10){ +with(_f){ +return YES; +} +}),new objj_method(sel_getUid("isFirstResponder"),function(_11,_12){ +with(_11){ +return objj_msgSend(objj_msgSend(_11,"window"),"firstResponder")===_11; +} +}),new objj_method(sel_getUid("setContent:"),function(_13,_14,_15){ +with(_13){ +if(_content==_15){ +return; +} +_content=_15; +objj_msgSend(_13,"reloadContent"); +} +}),new objj_method(sel_getUid("content"),function(_16,_17){ +with(_16){ +return _content; +} +}),new objj_method(sel_getUid("items"),function(_18,_19){ +with(_18){ +return _items; +} +}),new objj_method(sel_getUid("setSelectable:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_isSelectable==_1c){ +return; +} +_isSelectable=_1c; +if(!_isSelectable){ +var _1d=CPNotFound; +while((_1d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_1d))!=CPNotFound){ +objj_msgSend(_items[_1d],"setSelected:",NO); +} +} +} +}),new objj_method(sel_getUid("isSelectable"),function(_1e,_1f){ +with(_1e){ +return _isSelectable; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_20,_21,_22){ +with(_20){ +_allowsEmptySelection=_22; +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_23,_24){ +with(_23){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_25,_26,_27){ +with(_25){ +_allowsMultipleSelection=_27; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_28,_29){ +with(_28){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setSelectionIndexes:"),function(_2a,_2b,_2c){ +with(_2a){ +if(objj_msgSend(_selectionIndexes,"isEqual:",_2c)||!_isSelectable){ +return; +} +var _2d=CPNotFound; +while((_2d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_2d))!=CPNotFound){ +objj_msgSend(_items[_2d],"setSelected:",NO); +} +_selectionIndexes=_2c; +var _2d=CPNotFound; +while((_2d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_2d))!=CPNotFound){ +objj_msgSend(_items[_2d],"setSelected:",YES); +} +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_2a),"reverseSetValueFor:","selectionIndexes"); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionViewDidChangeSelection:"))){ +objj_msgSend(_delegate,"collectionViewDidChangeSelection:",_2a); +} +} +}),new objj_method(sel_getUid("selectionIndexes"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_selectionIndexes,"copy"); +} +}),new objj_method(sel_getUid("reloadContent"),function(_30,_31){ +with(_30){ +var _32=_items.length; +while(_32--){ +objj_msgSend(objj_msgSend(_items[_32],"view"),"removeFromSuperview"); +objj_msgSend(_items[_32],"setSelected:",NO); +_cachedItems.push(_items[_32]); +} +_items=[]; +if(!_itemPrototype||!_content){ +return; +} +var _33=0; +_32=_content.length; +for(;_33<_32;++_33){ +_items.push(objj_msgSend(_30,"newItemForRepresentedObject:",_content[_33])); +objj_msgSend(_30,"addSubview:",objj_msgSend(_items[_33],"view")); +} +_33=CPNotFound; +while((_33=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_33))!=CPNotFound){ +objj_msgSend(_items[_33],"setSelected:",YES); +} +objj_msgSend(_30,"tile"); +} +}),new objj_method(sel_getUid("tile"),function(_34,_35){ +with(_34){ +var _36=CGRectGetWidth(objj_msgSend(_34,"bounds")); +if(!objj_msgSend(_content,"count")||_36==_tileWidth){ +return; +} +var _37=CGSizeMakeCopy(_minItemSize); +_numberOfColumns=MAX(1,FLOOR(_36/_37.width)); +if(_maxNumberOfColumns>0){ +_numberOfColumns=MIN(_maxNumberOfColumns,_numberOfColumns); +} +var _38=_36-_numberOfColumns*_37.width,_39=NO; +if(_38>0&&_37.width<_maxItemSize.width){ +_37.width=MIN(_maxItemSize.width,_37.width+FLOOR(_38/_numberOfColumns)); +} +if(_maxNumberOfColumns==1&&_37.width<_maxItemSize.width&&_37.width<_36){ +_37.width=MIN(_maxItemSize.width,_36); +} +if(!CGSizeEqualToSize(_itemSize,_37)){ +_itemSize=_37; +_39=YES; +} +var _3a=0,_3b=_items.length; +if(_maxNumberOfColumns>0&&_maxNumberOfRows>0){ +_3b=MIN(_3b,_maxNumberOfColumns*_maxNumberOfRows); +} +_numberOfRows=CEIL(_3b/_numberOfColumns); +_horizontalMargin=FLOOR((_36-_numberOfColumns*_37.width)/(_numberOfColumns+1)); +var x=_horizontalMargin,y=-_37.height; +for(;_3a<_3b;++_3a){ +if(_3a%_numberOfColumns==0){ +x=_horizontalMargin; +y+=_verticalMargin+_37.height; +} +var _3c=objj_msgSend(_items[_3a],"view"); +objj_msgSend(_3c,"setFrameOrigin:",CGPointMake(x,y)); +if(_39){ +objj_msgSend(_3c,"setFrameSize:",_itemSize); +} +x+=_37.width+_horizontalMargin; +} +var _3d=objj_msgSend(_34,"superview"),_3e=y+_37.height+_verticalMargin; +if(objj_msgSend(_3d,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _3f=objj_msgSend(_3d,"bounds").size; +_3e=MAX(_3f.height,_3e); +} +_tileWidth=_36; +objj_msgSend(_34,"setFrameSize:",CGSizeMake(_36,_3e)); +_tileWidth=-1; +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"tile"); +} +}),new objj_method(sel_getUid("setMaxNumberOfRows:"),function(_43,_44,_45){ +with(_43){ +if(_maxNumberOfRows==_45){ +return; +} +_maxNumberOfRows=_45; +objj_msgSend(_43,"tile"); +} +}),new objj_method(sel_getUid("maxNumberOfRows"),function(_46,_47){ +with(_46){ +return _maxNumberOfRows; +} +}),new objj_method(sel_getUid("setMaxNumberOfColumns:"),function(_48,_49,_4a){ +with(_48){ +if(_maxNumberOfColumns==_4a){ +return; +} +_maxNumberOfColumns=_4a; +objj_msgSend(_48,"tile"); +} +}),new objj_method(sel_getUid("maxNumberOfColumns"),function(_4b,_4c){ +with(_4b){ +return _maxNumberOfColumns; +} +}),new objj_method(sel_getUid("numberOfRows"),function(_4d,_4e){ +with(_4d){ +return _numberOfRows; +} +}),new objj_method(sel_getUid("numberOfColumns"),function(_4f,_50){ +with(_4f){ +return _numberOfColumns; +} +}),new objj_method(sel_getUid("setMinItemSize:"),function(_51,_52,_53){ +with(_51){ +if(CGSizeEqualToSize(_minItemSize,_53)){ +return; +} +_minItemSize=CGSizeMakeCopy(_53); +objj_msgSend(_51,"tile"); +} +}),new objj_method(sel_getUid("minItemSize"),function(_54,_55){ +with(_54){ +return _minItemSize; +} +}),new objj_method(sel_getUid("setMaxItemSize:"),function(_56,_57,_58){ +with(_56){ +if(CGSizeEqualToSize(_maxItemSize,_58)){ +return; +} +_maxItemSize=CGSizeMakeCopy(_58); +objj_msgSend(_56,"tile"); +} +}),new objj_method(sel_getUid("maxItemSize"),function(_59,_5a){ +with(_59){ +return _maxItemSize; +} +}),new objj_method(sel_getUid("setBackgroundColors:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_backgroundColors===_5d){ +return; +} +_backgroundColors=_5d; +if(!_backgroundColors){ +_backgroundColors=objj_msgSend(CPColor,"whiteColor"); +} +if(objj_msgSend(_backgroundColors,"count")===1){ +objj_msgSend(_5b,"setBackgroundColor:",_backgroundColors[0]); +}else{ +objj_msgSend(_5b,"setBackgroundColor:",nil); +} +objj_msgSend(_5b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("backgroundColors"),function(_5e,_5f){ +with(_5e){ +return _backgroundColors; +} +}),new objj_method(sel_getUid("mouseUp:"),function(_60,_61,_62){ +with(_60){ +if(objj_msgSend(_selectionIndexes,"count")&&objj_msgSend(_62,"clickCount")==2&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:didDoubleClickOnItemAtIndex:"))){ +objj_msgSend(_delegate,"collectionView:didDoubleClickOnItemAtIndex:",_60,objj_msgSend(_selectionIndexes,"firstIndex")); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_63,_64,_65){ +with(_63){ +_mouseDownEvent=_65; +var _66=objj_msgSend(_63,"convertPoint:fromView:",objj_msgSend(_65,"locationInWindow"),nil),row=FLOOR(_66.y/(_itemSize.height+_verticalMargin)),_67=FLOOR(_66.x/(_itemSize.width+_horizontalMargin)),_68=row*_numberOfColumns+_67; +if(_68>=0&&_68<_items.length){ +if(_allowsMultipleSelection&&(objj_msgSend(_65,"modifierFlags")&CPCommandKeyMask||objj_msgSend(_65,"modifierFlags")&CPShiftKeyMask)){ +var _69=objj_msgSend(_selectionIndexes,"copy"); +if(objj_msgSend(_69,"containsIndex:",_68)){ +objj_msgSend(_69,"removeIndex:",_68); +}else{ +objj_msgSend(_69,"addIndex:",_68); +} +}else{ +_69=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_68); +} +objj_msgSend(_63,"setSelectionIndexes:",_69); +}else{ +if(_allowsEmptySelection){ +objj_msgSend(_63,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSet")); +} +} +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_6a,_6b,_6c){ +with(_6a){ +var _6d=objj_msgSend(_6c,"locationInWindow"),_6e=objj_msgSend(_mouseDownEvent,"locationInWindow"); +if((ABS(_6d.x-_6e.x)<3)&&(ABS(_6d.y-_6e.y)<3)){ +return; +} +if(!objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:dragTypesForItemsAtIndexes:"))){ +return; +} +if(!objj_msgSend(_selectionIndexes,"count")){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:canDragItemsAtIndexes:withEvent:"))&&!objj_msgSend(_delegate,"collectionView:canDragItemsAtIndexes:withEvent:",_6a,_selectionIndexes,_mouseDownEvent)){ +return; +} +var _6f=objj_msgSend(_delegate,"collectionView:dragTypesForItemsAtIndexes:",_6a,_selectionIndexes); +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",_6f,_6a); +if(!_itemForDragging){ +_itemForDragging=objj_msgSend(_6a,"newItemForRepresentedObject:",_content[objj_msgSend(_selectionIndexes,"firstIndex")]); +}else{ +objj_msgSend(_itemForDragging,"setRepresentedObject:",_content[objj_msgSend(_selectionIndexes,"firstIndex")]); +} +var _70=objj_msgSend(_itemForDragging,"view"); +objj_msgSend(_70,"setFrameSize:",_itemSize); +objj_msgSend(_70,"setAlphaValue:",0.7); +objj_msgSend(_6a,"dragView:at:offset:event:pasteboard:source:slideBack:",_70,objj_msgSend(objj_msgSend(_items[objj_msgSend(_selectionIndexes,"firstIndex")],"view"),"frame").origin,CGSizeMakeZero(),_mouseDownEvent,nil,_6a,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_71,_72,_73,_74){ +with(_71){ +objj_msgSend(_73,"setData:forType:",objj_msgSend(_delegate,"collectionView:dataForItemsAtIndexes:forType:",_71,_selectionIndexes,_74),_74); +} +}),new objj_method(sel_getUid("setVerticalMargin:"),function(_75,_76,_77){ +with(_75){ +if(_verticalMargin==_77){ +return; +} +_verticalMargin=_77; +objj_msgSend(_75,"tile"); +} +}),new objj_method(sel_getUid("verticalMargin"),function(_78,_79){ +with(_78){ +return _verticalMargin; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_7a,_7b,_7c){ +with(_7a){ +_delegate=_7c; +} +}),new objj_method(sel_getUid("delegate"),function(_7d,_7e){ +with(_7d){ +return _delegate; +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_7f,_80,_81){ +with(_7f){ +return objj_msgSend(_items,"objectAtIndex:",_81); +} +}),new objj_method(sel_getUid("frameForItemAtIndex:"),function(_82,_83,_84){ +with(_82){ +return objj_msgSend(objj_msgSend(objj_msgSend(_82,"itemAtIndex:",_84),"view"),"frame"); +} +}),new objj_method(sel_getUid("frameForItemsAtIndexes:"),function(_85,_86,_87){ +with(_85){ +var _88=[],_89=CGRectNull; +objj_msgSend(_87,"getIndexes:maxCount:inIndexRange:",_88,-1,nil); +var _8a=0,_8b=objj_msgSend(_88,"count"); +for(;_8a<_8b;++_8a){ +_89=CGRectUnion(_89,objj_msgSend(_85,"frameForItemAtIndex:",_88[_8a])); +} +return _89; +} +})]); +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("_modifySelectionWithNewIndex:direction:expand:"),function(_8c,_8d,_8e,_8f,_90){ +with(_8c){ +_8e=MIN(MAX(_8e,0),objj_msgSend(objj_msgSend(_8c,"items"),"count")-1); +if(_allowsMultipleSelection&&_90){ +var _91=objj_msgSend(_selectionIndexes,"copy"),_92=objj_msgSend(_91,"firstIndex"),_93=objj_msgSend(_91,"lastIndex"); +if(_8f===-1){ +objj_msgSend(_91,"addIndexesInRange:",CPMakeRange(_8e,_92-_8e+1)); +}else{ +objj_msgSend(_91,"addIndexesInRange:",CPMakeRange(_93,_8e-_93+1)); +} +}else{ +_91=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_8e); +} +objj_msgSend(_8c,"setSelectionIndexes:",_91); +objj_msgSend(_8c,"_scrollToSelection"); +} +}),new objj_method(sel_getUid("_scrollToSelection"),function(_94,_95){ +with(_94){ +var _96=objj_msgSend(_94,"frameForItemsAtIndexes:",objj_msgSend(_94,"selectionIndexes")); +if(!CGRectIsNull(_96)){ +objj_msgSend(_94,"scrollRectToVisible:",_96); +} +} +}),new objj_method(sel_getUid("moveLeft:"),function(_97,_98,_99){ +with(_97){ +var _9a=objj_msgSend(objj_msgSend(_97,"selectionIndexes"),"firstIndex"); +if(_9a===CPNotFound){ +_9a=objj_msgSend(objj_msgSend(_97,"items"),"count"); +} +objj_msgSend(_97,"_modifySelectionWithNewIndex:direction:expand:",_9a-1,-1,NO); +} +}),new objj_method(sel_getUid("moveLeftAndModifySelection:"),function(_9b,_9c,_9d){ +with(_9b){ +var _9e=objj_msgSend(objj_msgSend(_9b,"selectionIndexes"),"firstIndex"); +if(_9e===CPNotFound){ +_9e=objj_msgSend(objj_msgSend(_9b,"items"),"count"); +} +objj_msgSend(_9b,"_modifySelectionWithNewIndex:direction:expand:",_9e-1,-1,YES); +} +}),new objj_method(sel_getUid("moveRight:"),function(_9f,_a0,_a1){ +with(_9f){ +objj_msgSend(_9f,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_9f,"selectionIndexes"),"lastIndex")+1,1,NO); +} +}),new objj_method(sel_getUid("moveRightAndModifySelection:"),function(_a2,_a3,_a4){ +with(_a2){ +objj_msgSend(_a2,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a2,"selectionIndexes"),"lastIndex")+1,1,YES); +} +}),new objj_method(sel_getUid("moveDown:"),function(_a5,_a6,_a7){ +with(_a5){ +objj_msgSend(_a5,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a5,"selectionIndexes"),"lastIndex")+objj_msgSend(_a5,"numberOfColumns"),1,NO); +} +}),new objj_method(sel_getUid("moveDownAndModifySelection:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a8,"selectionIndexes"),"lastIndex")+objj_msgSend(_a8,"numberOfColumns"),1,YES); +} +}),new objj_method(sel_getUid("moveUp:"),function(_ab,_ac,_ad){ +with(_ab){ +var _ae=objj_msgSend(objj_msgSend(_ab,"selectionIndexes"),"firstIndex"); +if(_ae==CPNotFound){ +_ae=objj_msgSend(objj_msgSend(_ab,"items"),"count"); +} +objj_msgSend(_ab,"_modifySelectionWithNewIndex:direction:expand:",_ae-objj_msgSend(_ab,"numberOfColumns"),-1,NO); +} +}),new objj_method(sel_getUid("moveUpAndModifySelection:"),function(_af,_b0,_b1){ +with(_af){ +var _b2=objj_msgSend(objj_msgSend(_af,"selectionIndexes"),"firstIndex"); +if(_b2==CPNotFound){ +_b2=objj_msgSend(objj_msgSend(_af,"items"),"count"); +} +objj_msgSend(_af,"_modifySelectionWithNewIndex:direction:expand:",_b2-objj_msgSend(_af,"numberOfColumns"),-1,YES); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(_b3,_b4,_b5){ +with(_b3){ +if(objj_msgSend(objj_msgSend(_b3,"delegate"),"respondsToSelector:",sel_getUid("collectionView:shouldDeleteItemsAtIndexes:"))){ +objj_msgSend(objj_msgSend(_b3,"delegate"),"collectionView:shouldDeleteItemsAtIndexes:",_b3,objj_msgSend(_b3,"selectionIndexes")); +var _b6=objj_msgSend(objj_msgSend(_b3,"selectionIndexes"),"firstIndex"); +if(_b6>objj_msgSend(objj_msgSend(_b3,"content"),"count")-1){ +objj_msgSend(_b3,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",objj_msgSend(objj_msgSend(_b3,"content"),"count")-1)); +} +objj_msgSend(_b3,"_scrollToSelection"); +objj_msgSend(_b3,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("keyDown:"),function(_b7,_b8,_b9){ +with(_b7){ +objj_msgSend(_b7,"interpretKeyEvents:",[_b9]); +} +})]); +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("rectForItemAtIndex:"),function(_ba,_bb,_bc){ +with(_ba){ +_CPReportLenientDeprecation(objj_msgSend(_ba,"class"),_bb,sel_getUid("frameForItemAtIndex:")); +return objj_msgSend(_ba,"frameForItemAtIndex:",_bc); +} +}),new objj_method(sel_getUid("rectForItemsAtIndexes:"),function(_bd,_be,_bf){ +with(_bd){ +_CPReportLenientDeprecation(objj_msgSend(_bd,"class"),_be,sel_getUid("frameForItemsAtIndexes:")); +return objj_msgSend(_bd,"frameForItemsAtIndexes:",_bf); +} +})]); +var _c0="CPCollectionViewMinItemSizeKey",_c1="CPCollectionViewMaxItemSizeKey",_c2="CPCollectionViewVerticalMarginKey",_c3="CPCollectionViewMaxNumberOfRowsKey",_c4="CPCollectionViewMaxNumberOfColumnsKey",_c5="CPCollectionViewSelectableKey",_c6="CPCollectionViewBackgroundColorsKey"; +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_c7,_c8,_c9){ +with(_c7){ +_c7=objj_msgSendSuper({receiver:_c7,super_class:objj_getClass("CPCollectionView").super_class},"initWithCoder:",_c9); +if(_c7){ +_items=[]; +_content=[]; +_cachedItems=[]; +_itemSize=CGSizeMakeZero(); +_minItemSize=objj_msgSend(_c9,"decodeSizeForKey:",_c0)||CGSizeMakeZero(); +_maxItemSize=objj_msgSend(_c9,"decodeSizeForKey:",_c1)||CGSizeMakeZero(); +_maxNumberOfRows=objj_msgSend(_c9,"decodeIntForKey:",_c3)||0; +_maxNumberOfColumns=objj_msgSend(_c9,"decodeIntForKey:",_c4)||0; +_verticalMargin=objj_msgSend(_c9,"decodeFloatForKey:",_c2); +_isSelectable=objj_msgSend(_c9,"decodeBoolForKey:",_c5); +objj_msgSend(_c7,"setBackgroundColors:",objj_msgSend(_c9,"decodeObjectForKey:",_c6)); +_tileWidth=-1; +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_allowsEmptySelection=YES; +} +return _c7; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_ca,_cb,_cc){ +with(_ca){ +objj_msgSendSuper({receiver:_ca,super_class:objj_getClass("CPCollectionView").super_class},"encodeWithCoder:",_cc); +if(!CGSizeEqualToSize(_minItemSize,CGSizeMakeZero())){ +objj_msgSend(_cc,"encodeSize:forKey:",_minItemSize,_c0); +} +if(!CGSizeEqualToSize(_maxItemSize,CGSizeMakeZero())){ +objj_msgSend(_cc,"encodeSize:forKey:",_maxItemSize,_c1); +} +objj_msgSend(_cc,"encodeInt:forKey:",_maxNumberOfRows,_c3); +objj_msgSend(_cc,"encodeInt:forKey:",_maxNumberOfColumns,_c4); +objj_msgSend(_cc,"encodeBool:forKey:",_isSelectable,_c5); +objj_msgSend(_cc,"encodeFloat:forKey:",_verticalMargin,_c2); +objj_msgSend(_cc,"encodeObject:forKey:",_backgroundColors,_c6); +} +})]); +p;22;CPCollectionViewItem.jt;1188;@STATIC;1.0;i;18;CPViewController.jt;1146; +objj_executeFile("CPViewController.j",YES); +var _1=objj_allocateClassPair(CPViewController,"CPCollectionViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isSelected")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setRepresentedObject:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCollectionViewItem").super_class},"setRepresentedObject:",_5); +var _6=objj_msgSend(_3,"view"); +if(objj_msgSend(_6,"respondsToSelector:",sel_getUid("setRepresentedObject:"))){ +objj_msgSend(_6,"setRepresentedObject:",objj_msgSend(_3,"representedObject")); +} +} +}),new objj_method(sel_getUid("setSelected:"),function(_7,_8,_9){ +with(_7){ +_9=!!_9; +if(_isSelected===_9){ +return; +} +_isSelected=_9; +var _a=objj_msgSend(_7,"view"); +if(objj_msgSend(_a,"respondsToSelector:",sel_getUid("setSelected:"))){ +objj_msgSend(_a,"setSelected:",objj_msgSend(_7,"isSelected")); +} +} +}),new objj_method(sel_getUid("isSelected"),function(_b,_c){ +with(_b){ +return _isSelected; +} +}),new objj_method(sel_getUid("collectionView"),function(_d,_e){ +with(_d){ +return objj_msgSend(_view,"superview"); +} +})]); +p;9;CPColor.jt;11992;@STATIC;1.0;I;21;Foundation/CPObject.ji;9;CGColor.ji;17;CPCompatibility.ji;9;CPImage.jt;11898; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CGColor.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPImage.j",YES); +var _1=0,_2=1,_3=2,_4=3; +var _5=0,_6=1,_7=2; +var _8,_9,_a,_b,_c,_d,_e,_f,_10,_11,_12,_13,_14,_15,_16,_17; +var _18=objj_allocateClassPair(CPObject,"CPColor"),_19=_18.isa; +class_addIvars(_18,[new objj_ivar("_components"),new objj_ivar("_patternImage"),new objj_ivar("_cssString")]); +objj_registerClassPair(_18); +class_addMethods(_18,[new objj_method(sel_getUid("_initWithCSSString:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_1c.indexOf("rgb")==CPNotFound){ +return nil; +} +_1a=objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("CPColor").super_class},"init"); +var _1d=_1c.indexOf("("); +var _1e=_1c.substring(_1d+1).split(","); +_components=[parseInt(_1e[0],10)/255,parseInt(_1e[1],10)/255,parseInt(_1e[2],10)/255,_1e[3]?parseInt(_1e[3],10)/255:1]; +_cssString=_1c; +return _1a; +} +}),new objj_method(sel_getUid("_initWithRGBA:"),function(_1f,_20,_21){ +with(_1f){ +_1f=objj_msgSendSuper({receiver:_1f,super_class:objj_getClass("CPColor").super_class},"init"); +if(_1f){ +_components=_21; +var _22=CPFeatureIsCompatible(CPCSSRGBAFeature)&&_components[3]!=1; +_cssString=(_22?"rgba(":"rgb(")+parseInt(_components[0]*255)+", "+parseInt(_components[1]*255)+", "+parseInt(_components[2]*255)+(_22?(", "+_components[3]):"")+")"; +} +return _1f; +} +}),new objj_method(sel_getUid("_initWithPatternImage:"),function(_23,_24,_25){ +with(_23){ +_23=objj_msgSendSuper({receiver:_23,super_class:objj_getClass("CPColor").super_class},"init"); +if(_23){ +_patternImage=_25; +_cssString="url(\""+objj_msgSend(_patternImage,"filename")+"\")"; +_components=[0,0,0,1]; +} +return _23; +} +}),new objj_method(sel_getUid("patternImage"),function(_26,_27){ +with(_26){ +return _patternImage; +} +}),new objj_method(sel_getUid("alphaComponent"),function(_28,_29){ +with(_28){ +return _components[3]; +} +}),new objj_method(sel_getUid("blueComponent"),function(_2a,_2b){ +with(_2a){ +return _components[2]; +} +}),new objj_method(sel_getUid("greenComponent"),function(_2c,_2d){ +with(_2c){ +return _components[1]; +} +}),new objj_method(sel_getUid("redComponent"),function(_2e,_2f){ +with(_2e){ +return _components[0]; +} +}),new objj_method(sel_getUid("components"),function(_30,_31){ +with(_30){ +return _components; +} +}),new objj_method(sel_getUid("colorWithAlphaComponent:"),function(_32,_33,_34){ +with(_32){ +var _35=_components.slice(); +_35[_35.length-1]=_34; +return objj_msgSend(objj_msgSend(objj_msgSend(_32,"class"),"alloc"),"_initWithRGBA:",_35); +} +}),new objj_method(sel_getUid("hsbComponents"),function(_36,_37){ +with(_36){ +var red=ROUND(_components[_1]*255),_38=ROUND(_components[_2]*255),_39=ROUND(_components[_3]*255); +var max=MAX(red,_38,_39),min=MIN(red,_38,_39),_3a=max-min; +var _3b=max/255,_3c=(max!=0)?_3a/max:0; +var hue; +if(_3c==0){ +hue=0; +}else{ +var rr=(max-red)/_3a; +var gr=(max-_38)/_3a; +var br=(max-_39)/_3a; +if(red==max){ +hue=br-gr; +}else{ +if(_38==max){ +hue=2+rr-br; +}else{ +hue=4+gr-rr; +} +} +hue/=6; +if(hue<0){ +hue++; +} +} +return [ROUND(hue*360),ROUND(_3c*100),ROUND(_3b*100)]; +} +}),new objj_method(sel_getUid("cssString"),function(_3d,_3e){ +with(_3d){ +return _cssString; +} +}),new objj_method(sel_getUid("hexString"),function(_3f,_40){ +with(_3f){ +return _41(objj_msgSend(_3f,"redComponent"),objj_msgSend(_3f,"greenComponent"),objj_msgSend(_3f,"blueComponent")); +} +}),new objj_method(sel_getUid("isEqual:"),function(_42,_43,_44){ +with(_42){ +if(!_44){ +return NO; +} +if(_44===_42){ +return YES; +} +return objj_msgSend(_44,"isKindOfClass:",CPColor)&&objj_msgSend(_44,"cssString")===objj_msgSend(_42,"cssString"); +} +}),new objj_method(sel_getUid("description"),function(_45,_46){ +with(_45){ +return objj_msgSendSuper({receiver:_45,super_class:objj_getClass("CPColor").super_class},"description")+" "+objj_msgSend(_45,"cssString"); +} +})]); +class_addMethods(_19,[new objj_method(sel_getUid("colorWithRed:green:blue:alpha:"),function(_47,_48,red,_49,_4a,_4b){ +with(_47){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[red,_49,_4a,_4b]); +} +}),new objj_method(sel_getUid("colorWithCalibratedRed:green:blue:alpha:"),function(_4c,_4d,red,_4e,_4f,_50){ +with(_4c){ +return objj_msgSend(_4c,"colorWithRed:green:blue:alpha:",red,_4e,_4f,_50); +} +}),new objj_method(sel_getUid("colorWithWhite:alpha:"),function(_51,_52,_53,_54){ +with(_51){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[_53,_53,_53,_54]); +} +}),new objj_method(sel_getUid("colorWithCalibratedWhite:alpha:"),function(_55,_56,_57,_58){ +with(_55){ +return objj_msgSend(_55,"colorWithWhite:alpha:",_57,_58); +} +}),new objj_method(sel_getUid("colorWithHue:saturation:brightness:"),function(_59,_5a,hue,_5b,_5c){ +with(_59){ +return objj_msgSend(_59,"colorWithHue:saturation:brightness:alpha:",hue,_5b,_5c,1); +} +}),new objj_method(sel_getUid("colorWithHue:saturation:brightness:alpha:"),function(_5d,_5e,hue,_5f,_60,_61){ +with(_5d){ +if(_5f===0){ +return objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",_60/100,_61); +} +var f=hue%60,p=(_60*(100-_5f))/10000,q=(_60*(6000-_5f*f))/600000,t=(_60*(6000-_5f*(60-f)))/600000,b=_60/100; +switch(FLOOR(hue/60)){ +case 0: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",b,t,p,_61); +case 1: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",q,b,p,_61); +case 2: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",p,b,t,_61); +case 3: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",p,q,b,_61); +case 4: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",t,p,b,_61); +case 5: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",b,p,q,_61); +} +} +}),new objj_method(sel_getUid("colorWithHexString:"),function(_62,_63,hex){ +with(_62){ +var _64=_65(hex); +return _64?objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",_64):null; +} +}),new objj_method(sel_getUid("blackColor"),function(_66,_67){ +with(_66){ +if(!_8){ +_8=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,0,1]); +} +return _8; +} +}),new objj_method(sel_getUid("blueColor"),function(_68,_69){ +with(_68){ +if(!_b){ +_b=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,1,1]); +} +return _b; +} +}),new objj_method(sel_getUid("darkGrayColor"),function(_6a,_6b){ +with(_6a){ +if(!_f){ +_f=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1/3,1); +} +return _f; +} +}),new objj_method(sel_getUid("grayColor"),function(_6c,_6d){ +with(_6c){ +if(!_d){ +_d=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.5,1); +} +return _d; +} +}),new objj_method(sel_getUid("greenColor"),function(_6e,_6f){ +with(_6e){ +if(!_a){ +_a=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,1,0,1]); +} +return _a; +} +}),new objj_method(sel_getUid("lightGrayColor"),function(_70,_71){ +with(_70){ +if(!_e){ +_e=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",2/3,1); +} +return _e; +} +}),new objj_method(sel_getUid("redColor"),function(_72,_73){ +with(_72){ +if(!_9){ +_9=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0,0,1]); +} +return _9; +} +}),new objj_method(sel_getUid("whiteColor"),function(_74,_75){ +with(_74){ +if(!_10){ +_10=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,1,1,1]); +} +return _10; +} +}),new objj_method(sel_getUid("yellowColor"),function(_76,_77){ +with(_76){ +if(!_c){ +_c=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,1,0,1]); +} +return _c; +} +}),new objj_method(sel_getUid("brownColor"),function(_78,_79){ +with(_78){ +if(!_11){ +_11=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.6,0.4,0.2,1]); +} +return _11; +} +}),new objj_method(sel_getUid("cyanColor"),function(_7a,_7b){ +with(_7a){ +if(!_12){ +_12=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,1,1,1]); +} +return _12; +} +}),new objj_method(sel_getUid("magentaColor"),function(_7c,_7d){ +with(_7c){ +if(!_13){ +_13=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0,1,1]); +} +return _13; +} +}),new objj_method(sel_getUid("orangeColor"),function(_7e,_7f){ +with(_7e){ +if(!_14){ +_14=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0.5,0,1]); +} +return _14; +} +}),new objj_method(sel_getUid("purpleColor"),function(_80,_81){ +with(_80){ +if(!_15){ +_15=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.5,0,0.5,1]); +} +return _15; +} +}),new objj_method(sel_getUid("shadowColor"),function(_82,_83){ +with(_82){ +if(!_16){ +_16=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,0,1/3]); +} +return _16; +} +}),new objj_method(sel_getUid("clearColor"),function(_84,_85){ +with(_84){ +if(!_17){ +_17=objj_msgSend(_84,"colorWithCalibratedWhite:alpha:",0,0); +} +return _17; +} +}),new objj_method(sel_getUid("alternateSelectedControlColor"),function(_86,_87){ +with(_86){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.22,0.46,0.84,1]); +} +}),new objj_method(sel_getUid("secondarySelectedControlColor"),function(_88,_89){ +with(_88){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.83,0.83,0.83,1]); +} +}),new objj_method(sel_getUid("colorWithPatternImage:"),function(_8a,_8b,_8c){ +with(_8a){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithPatternImage:",_8c); +} +}),new objj_method(sel_getUid("colorWithCSSString:"),function(_8d,_8e,_8f){ +with(_8d){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithCSSString:",_8f); +} +})]); +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_18,[new objj_method(sel_getUid("set"),function(_90,_91){ +with(_90){ +objj_msgSend(_90,"setFill"); +objj_msgSend(_90,"setStroke"); +} +}),new objj_method(sel_getUid("setFill"),function(_92,_93){ +with(_92){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetFillColor(ctx,_92); +} +}),new objj_method(sel_getUid("setStroke"),function(_94,_95){ +with(_94){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(ctx,_94); +} +})]); +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_19,[new objj_method(sel_getUid("randomColor"),function(_96,_97){ +with(_96){ +return objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",RAND(),RAND(),RAND(),1); +} +})]); +var _98="CPColorComponentsKey",_99="CPColorPatternImageKey"; +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_18,[new objj_method(sel_getUid("initWithCoder:"),function(_9a,_9b,_9c){ +with(_9a){ +if(objj_msgSend(_9c,"containsValueForKey:",_99)){ +return objj_msgSend(_9a,"_initWithPatternImage:",objj_msgSend(_9c,"decodeObjectForKey:",_99)); +} +return objj_msgSend(_9a,"_initWithRGBA:",objj_msgSend(_9c,"decodeObjectForKey:",_98)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9d,_9e,_9f){ +with(_9d){ +if(_patternImage){ +objj_msgSend(_9f,"encodeObject:forKey:",_patternImage,_99); +}else{ +objj_msgSend(_9f,"encodeObject:forKey:",_components,_98); +} +} +})]); +var _a0="0123456789ABCDEF"; +var _65=function(hex){ +if(hex.length==3){ +hex=hex.charAt(0)+hex.charAt(0)+hex.charAt(1)+hex.charAt(1)+hex.charAt(2)+hex.charAt(2); +} +if(hex.length!=6){ +return null; +} +hex=hex.toUpperCase(); +for(var i=0;i<hex.length;i++){ +if(_a0.indexOf(hex.charAt(i))==-1){ +return null; +} +} +var red=(_a0.indexOf(hex.charAt(0))*16+_a0.indexOf(hex.charAt(1)))/255; +var _a1=(_a0.indexOf(hex.charAt(2))*16+_a0.indexOf(hex.charAt(3)))/255; +var _a2=(_a0.indexOf(hex.charAt(4))*16+_a0.indexOf(hex.charAt(5)))/255; +return [red,_a1,_a2,1]; +}; +var _41=function(r,g,b){ +return _a3(r)+_a3(g)+_a3(b); +}; +var _a3=function(n){ +if(!n||isNaN(n)){ +return "00"; +} +n=FLOOR(MIN(255,MAX(0,256*n))); +return _a0.charAt((n-n%16)/16)+_a0.charAt(n%16); +}; +p;14;CPColorPanel.jt;16794;@STATIC;1.0;i;10;CPButton.ji;10;CPCookie.ji;9;CPPanel.ji;8;CPView.ji;15;CPColorPicker.ji;21;CPSliderColorPicker.jt;16673; +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPCookie.j",YES); +objj_executeFile("CPPanel.j",YES); +objj_executeFile("CPView.j",YES); +CPColorPanelColorDidChangeNotification="CPColorPanelColorDidChangeNotification"; +var _1=20,_2=32,_3=14,_4=32,_5=12; +var _6=nil,_7=[]; +CPWheelColorPickerMode=1; +CPSliderColorPickerMode=2; +CPColorPickerViewWidth=265,CPColorPickerViewHeight=370; +var _8=objj_allocateClassPair(CPPanel,"CPColorPanel"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_toolbar"),new objj_ivar("_swatchView"),new objj_ivar("_previewView"),new objj_ivar("_opacitySlider"),new objj_ivar("_colorPickers"),new objj_ivar("_currentView"),new objj_ivar("_activePicker"),new objj_ivar("_color"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_mode")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("init"),function(_a,_b){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPColorPanel").super_class},"initWithContentRect:styleMask:",CGRectMake(500,50,219,370),(CPTitledWindowMask|CPClosableWindowMask|CPResizableWindowMask)); +if(_a){ +objj_msgSend(objj_msgSend(_a,"contentView"),"setBackgroundColor:",objj_msgSend(CPColor,"colorWithWhite:alpha:",0.95,1)); +objj_msgSend(_a,"setTitle:","Color Panel"); +objj_msgSend(_a,"setLevel:",CPFloatingWindowLevel); +objj_msgSend(_a,"setFloatingPanel:",YES); +objj_msgSend(_a,"setBecomesKeyOnlyIfNeeded:",YES); +objj_msgSend(_a,"setMinSize:",CGSizeMake(219,342)); +objj_msgSend(_a,"setMaxSize:",CGSizeMake(323,537)); +} +return _a; +} +}),new objj_method(sel_getUid("setColor:"),function(_c,_d,_e){ +with(_c){ +_color=_e; +objj_msgSend(_previewView,"setBackgroundColor:",_color); +objj_msgSend(CPApp,"sendAction:to:from:",sel_getUid("changeColor:"),nil,_c); +if(_target&&_action){ +objj_msgSend(CPApp,"sendAction:to:from:",_action,_target,_c); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPColorPanelColorDidChangeNotification,_c); +objj_msgSend(_activePicker,"setColor:",_color); +objj_msgSend(_opacitySlider,"setFloatValue:",objj_msgSend(_color,"alphaComponent")); +} +}),new objj_method(sel_getUid("setColor:updatePicker:"),function(_f,_10,_11,_12){ +with(_f){ +objj_msgSend(_f,"setColor:",_11); +if(_12){ +objj_msgSend(_activePicker,"setColor:",_color); +} +} +}),new objj_method(sel_getUid("color"),function(_13,_14){ +with(_13){ +return _color; +} +}),new objj_method(sel_getUid("opacity"),function(_15,_16){ +with(_15){ +return objj_msgSend(_opacitySlider,"floatValue"); +} +}),new objj_method(sel_getUid("setTarget:"),function(_17,_18,_19){ +with(_17){ +_target=_19; +} +}),new objj_method(sel_getUid("target"),function(_1a,_1b){ +with(_1a){ +return _target; +} +}),new objj_method(sel_getUid("setAction:"),function(_1c,_1d,_1e){ +with(_1c){ +_action=_1e; +} +}),new objj_method(sel_getUid("action"),function(_1f,_20){ +with(_1f){ +return _action; +} +}),new objj_method(sel_getUid("setMode:"),function(_21,_22,_23){ +with(_21){ +_mode=_23; +} +}),new objj_method(sel_getUid("_setPicker:"),function(_24,_25,_26){ +with(_24){ +var _27=_colorPickers[objj_msgSend(_26,"tag")],_28=objj_msgSend(_27,"provideNewView:",NO); +if(!_28){ +_28=objj_msgSend(_27,"provideNewView:",YES); +} +if(_28==_currentView){ +return; +} +if(_currentView){ +objj_msgSend(_28,"setFrame:",objj_msgSend(_currentView,"frame")); +}else{ +var _29=(_2+10+_1+5+_3+32),_2a=objj_msgSend(objj_msgSend(_24,"contentView"),"bounds"); +objj_msgSend(_28,"setFrameSize:",CPSizeMake(_2a.size.width-10,_2a.size.height-_29)); +objj_msgSend(_28,"setFrameOrigin:",CPPointMake(5,_29)); +} +objj_msgSend(_currentView,"removeFromSuperview"); +objj_msgSend(objj_msgSend(_24,"contentView"),"addSubview:",_28); +_currentView=_28; +_activePicker=_27; +objj_msgSend(_27,"setColor:",objj_msgSend(_24,"color")); +} +}),new objj_method(sel_getUid("mode"),function(_2b,_2c){ +with(_2b){ +return _mode; +} +}),new objj_method(sel_getUid("orderFront:"),function(_2d,_2e,_2f){ +with(_2d){ +objj_msgSend(_2d,"_loadContentsIfNecessary"); +objj_msgSendSuper({receiver:_2d,super_class:objj_getClass("CPColorPanel").super_class},"orderFront:",_2f); +} +}),new objj_method(sel_getUid("_loadContentsIfNecessary"),function(_30,_31){ +with(_30){ +if(_toolbar){ +return; +} +if(!_color){ +_color=objj_msgSend(CPColor,"whiteColor"); +} +_colorPickers=[]; +var _32=objj_msgSend(_7,"count"); +for(var i=0;i<_32;i++){ +var _33=_7[i],_34=objj_msgSend(objj_msgSend(_33,"alloc"),"initWithPickerMask:colorPanel:",0,_30); +_colorPickers.push(_34); +} +var _35=objj_msgSend(_30,"contentView"),_36=objj_msgSend(_35,"bounds"); +_toolbar=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,6,CGRectGetWidth(_36),_2)); +objj_msgSend(_toolbar,"setAutoresizingMask:",CPViewWidthSizable); +var _37=_32*_4+(_32-1)*_5,_38=(CGRectGetWidth(_36)-_37)/2,_39=nil; +for(var i=0;i<_32;i++){ +var _3a=objj_msgSend(_colorPickers[i],"provideNewButtonImage"),_3b=objj_msgSend(_colorPickers[i],"provideNewAlternateButtonImage"),_3c=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(_38+i*(_4+_5),0,_4,_4)); +objj_msgSend(_3c,"setTag:",i); +objj_msgSend(_3c,"setTarget:",_30); +objj_msgSend(_3c,"setAction:",sel_getUid("_setPicker:")); +objj_msgSend(_3c,"setBordered:",NO); +objj_msgSend(_3c,"setAutoresizingMask:",CPViewMinXMargin|CPViewMaxXMargin); +objj_msgSend(_3c,"setImage:",_3a); +objj_msgSend(_3c,"setAlternateImage:",_3b); +objj_msgSend(_toolbar,"addSubview:",_3c); +if(!_39){ +_39=_3c; +} +} +var _3d=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(76,_2+10,CGRectGetWidth(_36)-86,_1)); +_previewView=objj_msgSend(objj_msgSend(_CPColorPanelPreview,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_3d,"bounds"),2,2)); +objj_msgSend(_previewView,"setColorPanel:",_30); +objj_msgSend(_previewView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_3d,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithWhite:alpha:",0.8,1)); +objj_msgSend(_3d,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_3d,"addSubview:",_previewView); +var _3e=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(10,_2+10,60,15)); +objj_msgSend(_3e,"setStringValue:","Preview:"); +objj_msgSend(_3e,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_3e,"setAlignment:",CPRightTextAlignment); +var _3f=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(76,_2+10+_1+5,CGRectGetWidth(_36)-86,_3+2)); +objj_msgSend(_3f,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithWhite:alpha:",0.8,1)); +objj_msgSend(_3f,"setAutoresizingMask:",CPViewWidthSizable); +_swatchView=objj_msgSend(objj_msgSend(_CPColorPanelSwatches,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_3f,"bounds"),1,1)); +objj_msgSend(_swatchView,"setColorPanel:",_30); +objj_msgSend(_swatchView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_3f,"addSubview:",_swatchView); +var _40=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(10,_2+8+_1+6,60,15)); +objj_msgSend(_40,"setStringValue:","Swatches:"); +objj_msgSend(_40,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_40,"setAlignment:",CPRightTextAlignment); +var _41=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(10,_2+_1+35,60,20)); +objj_msgSend(_41,"setStringValue:","Opacity:"); +objj_msgSend(_41,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_41,"setAlignment:",CPRightTextAlignment); +_opacitySlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CGRectMake(76,_2+_1+34,CGRectGetWidth(_36)-86,20)); +objj_msgSend(_opacitySlider,"setMinValue:",0); +objj_msgSend(_opacitySlider,"setMaxValue:",1); +objj_msgSend(_opacitySlider,"setTarget:",_30); +objj_msgSend(_opacitySlider,"setAction:",sel_getUid("setOpacity:")); +objj_msgSend(_35,"addSubview:",_toolbar); +objj_msgSend(_35,"addSubview:",_3d); +objj_msgSend(_35,"addSubview:",_3e); +objj_msgSend(_35,"addSubview:",_3f); +objj_msgSend(_35,"addSubview:",_40); +objj_msgSend(_35,"addSubview:",_41); +objj_msgSend(_35,"addSubview:",_opacitySlider); +_target=nil; +_action=nil; +_activePicker=nil; +objj_msgSend(_previewView,"setBackgroundColor:",_color); +if(_39){ +objj_msgSend(_30,"_setPicker:",_39); +} +} +}),new objj_method(sel_getUid("setOpacity:"),function(_42,_43,_44){ +with(_42){ +var _45=objj_msgSend(objj_msgSend(_42,"color"),"components"),_46=objj_msgSend(_44,"floatValue"); +objj_msgSend(_42,"setColor:updatePicker:",objj_msgSend(_color,"colorWithAlphaComponent:",_46),YES); +} +})]); +class_addMethods(_9,[new objj_method(sel_getUid("provideColorPickerClass:"),function(_47,_48,_49){ +with(_47){ +_7.push(_49); +} +}),new objj_method(sel_getUid("sharedColorPanel"),function(_4a,_4b){ +with(_4a){ +if(!_6){ +_6=objj_msgSend(objj_msgSend(CPColorPanel,"alloc"),"init"); +} +return _6; +} +}),new objj_method(sel_getUid("setPickerMode:"),function(_4c,_4d,_4e){ +with(_4c){ +var _4f=objj_msgSend(CPColorPanel,"sharedColorPanel"); +objj_msgSend(_4f,"setMode:",_4e); +} +})]); +CPColorDragType="CPColorDragType"; +var _50="CPColorPanelSwatchesCookie"; +var _8=objj_allocateClassPair(CPView,"_CPColorPanelSwatches"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_swatches"),new objj_ivar("_dragColor"),new objj_ivar("_colorPanel"),new objj_ivar("_swatchCookie")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithFrame:"),function(_51,_52,_53){ +with(_51){ +_51=objj_msgSendSuper({receiver:_51,super_class:objj_getClass("_CPColorPanelSwatches").super_class},"initWithFrame:",_53); +objj_msgSend(_51,"setBackgroundColor:",objj_msgSend(CPColor,"grayColor")); +objj_msgSend(_51,"registerForDraggedTypes:",objj_msgSend(CPArray,"arrayWithObjects:",CPColorDragType)); +var _54=objj_msgSend(CPColor,"whiteColor"); +_swatchCookie=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_50); +var _55=objj_msgSend(_51,"startingColorList"); +_swatches=[]; +for(var i=0;i<50;i++){ +var _56=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CPRectMake(13*i+1,1,12,12)),_57=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_56,"bounds"),1,1)); +objj_msgSend(_56,"setBackgroundColor:",_54); +objj_msgSend(_57,"setBackgroundColor:",(i<_55.length)?_55[i]:_54); +objj_msgSend(_56,"addSubview:",_57); +objj_msgSend(_51,"addSubview:",_56); +_swatches.push(_56); +} +return _51; +} +}),new objj_method(sel_getUid("isOpaque"),function(_58,_59){ +with(_58){ +return YES; +} +}),new objj_method(sel_getUid("startingColorList"),function(_5a,_5b){ +with(_5a){ +var _5c=objj_msgSend(_swatchCookie,"value"); +if(_5c==""){ +return [objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPColor,"darkGrayColor"),objj_msgSend(CPColor,"grayColor"),objj_msgSend(CPColor,"lightGrayColor"),objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"redColor"),objj_msgSend(CPColor,"greenColor"),objj_msgSend(CPColor,"blueColor"),objj_msgSend(CPColor,"yellowColor")]; +} +var _5c=eval(_5c); +var _5d=[]; +for(var i=0;i<_5c.length;i++){ +_5d.push(objj_msgSend(CPColor,"colorWithHexString:",_5c[i])); +} +return _5d; +} +}),new objj_method(sel_getUid("saveColorList"),function(_5e,_5f){ +with(_5e){ +var _60=[]; +for(var i=0;i<_swatches.length;i++){ +_60.push(objj_msgSend(objj_msgSend(objj_msgSend(_swatches[i],"subviews")[0],"backgroundColor"),"hexString")); +} +var _61=new Date(); +_61.setYear(2019); +objj_msgSend(_swatchCookie,"setValue:expires:domain:",JSON.stringify(_60),_61,nil); +} +}),new objj_method(sel_getUid("setColorPanel:"),function(_62,_63,_64){ +with(_62){ +_colorPanel=_64; +} +}),new objj_method(sel_getUid("colorPanel"),function(_65,_66){ +with(_65){ +return _colorPanel; +} +}),new objj_method(sel_getUid("colorAtIndex:"),function(_67,_68,_69){ +with(_67){ +return objj_msgSend(objj_msgSend(_swatches[_69],"subviews")[0],"backgroundColor"); +} +}),new objj_method(sel_getUid("setColor:atIndex:"),function(_6a,_6b,_6c,_6d){ +with(_6a){ +objj_msgSend(objj_msgSend(_swatches[_6d],"subviews")[0],"setBackgroundColor:",_6c); +objj_msgSend(_6a,"saveColorList"); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_6e,_6f,_70){ +with(_6e){ +var _71=objj_msgSend(_6e,"convertPoint:fromView:",objj_msgSend(_70,"locationInWindow"),nil),_72=objj_msgSend(_6e,"bounds"); +if(!CGRectContainsPoint(_72,_71)||_71.x>objj_msgSend(_6e,"bounds").size.width-1||_71.x<1){ +return NO; +} +objj_msgSend(_colorPanel,"setColor:updatePicker:",objj_msgSend(_6e,"colorAtIndex:",FLOOR(_71.x/13)),YES); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_73,_74,_75){ +with(_73){ +var _76=objj_msgSend(_73,"convertPoint:fromView:",objj_msgSend(_75,"locationInWindow"),nil); +if(_76.x>objj_msgSend(_73,"bounds").size.width-1||_76.x<1){ +return NO; +} +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",objj_msgSend(CPArray,"arrayWithObject:",CPColorDragType),_73); +var _77=_swatches[FLOOR(_76.x/13)]; +_dragColor=objj_msgSend(objj_msgSend(_77,"subviews")[0],"backgroundColor"); +var _78=CPRectCreateCopy(objj_msgSend(_77,"bounds")); +var _79=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_78),_7a=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(_78,1,1)); +objj_msgSend(_79,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_7a,"setBackgroundColor:",_dragColor); +objj_msgSend(_79,"addSubview:",_7a); +objj_msgSend(_73,"dragView:at:offset:event:pasteboard:source:slideBack:",_79,CPPointMake(_76.x-_78.size.width/2,_76.y-_78.size.height/2),CPPointMake(0,0),_75,nil,_73,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +if(_7e==CPColorDragType){ +objj_msgSend(_7d,"setData:forType:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_dragColor),_7e); +} +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(_7f,"convertPoint:fromView:",objj_msgSend(_81,"draggingLocation"),nil),_83=objj_msgSend(_81,"draggingPasteboard"),_84=nil; +if(!objj_msgSend(_83,"availableTypeFromArray:",[CPColorDragType])||_82.x>objj_msgSend(_7f,"bounds").size.width-1||_82.x<1){ +return NO; +} +objj_msgSend(_7f,"setColor:atIndex:",objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(_83,"dataForType:",CPColorDragType)),FLOOR(_82.x/13)); +} +})]); +var _8=objj_allocateClassPair(CPView,"_CPColorPanelPreview"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_colorPanel")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithFrame:"),function(_85,_86,_87){ +with(_85){ +_85=objj_msgSendSuper({receiver:_85,super_class:objj_getClass("_CPColorPanelPreview").super_class},"initWithFrame:",_87); +objj_msgSend(_85,"registerForDraggedTypes:",objj_msgSend(CPArray,"arrayWithObjects:",CPColorDragType)); +return _85; +} +}),new objj_method(sel_getUid("setColorPanel:"),function(_88,_89,_8a){ +with(_88){ +_colorPanel=_8a; +} +}),new objj_method(sel_getUid("colorPanel"),function(_8b,_8c){ +with(_8b){ +return _colorPanel; +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_8d,_8e,_8f){ +with(_8d){ +var _90=objj_msgSend(_8f,"draggingPasteboard"); +if(!objj_msgSend(_90,"availableTypeFromArray:",[CPColorDragType])){ +return NO; +} +var _91=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(_90,"dataForType:",CPColorDragType)); +objj_msgSend(_colorPanel,"setColor:updatePicker:",_91,YES); +} +}),new objj_method(sel_getUid("isOpaque"),function(_92,_93){ +with(_92){ +return YES; +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_94,_95,_96){ +with(_94){ +var _97=objj_msgSend(_94,"convertPoint:fromView:",objj_msgSend(_96,"locationInWindow"),nil); +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",[CPColorDragType],_94); +var _98=CPRectMake(0,0,15,15); +var _99=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_98),_9a=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(_98,1,1)); +objj_msgSend(_99,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_9a,"setBackgroundColor:",objj_msgSend(_94,"backgroundColor")); +objj_msgSend(_99,"addSubview:",_9a); +objj_msgSend(_94,"dragView:at:offset:event:pasteboard:source:slideBack:",_99,CPPointMake(_97.x-_98.size.width/2,_97.y-_98.size.height/2),CPPointMake(0,0),_96,nil,_94,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_9b,_9c,_9d,_9e){ +with(_9b){ +if(_9e==CPColorDragType){ +objj_msgSend(_9d,"setData:forType:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",objj_msgSend(_9b,"backgroundColor")),_9e); +} +} +})]); +objj_executeFile("CPColorPicker.j",YES); +objj_executeFile("CPSliderColorPicker.j",YES); +objj_msgSend(CPColorPanel,"provideColorPickerClass:",CPColorWheelColorPicker); +objj_msgSend(CPColorPanel,"provideColorPickerClass:",CPSliderColorPicker); +p;15;CPColorPicker.jt;10195;@STATIC;1.0;I;21;Foundation/CPObject.ji;14;CPColorPanel.jt;10130; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPColorPanel.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_panel"),new objj_ivar("_mask")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPColorPicker").super_class},"init"); +_panel=_6; +_mask=_5; +return _3; +} +}),new objj_method(sel_getUid("colorPanel"),function(_7,_8){ +with(_7){ +return _panel; +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_9,_a){ +with(_9){ +return nil; +} +}),new objj_method(sel_getUid("setMode:"),function(_b,_c,_d){ +with(_b){ +return; +} +}),new objj_method(sel_getUid("setColor:"),function(_e,_f,_10){ +with(_e){ +return; +} +})]); +var _1=objj_allocateClassPair(CPColorPicker,"CPColorWheelColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_pickerView"),new objj_ivar("_brightnessSlider"),new objj_ivar("_hueSaturationView"),new objj_ivar("_cachedColor")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_11,_12,_13,_14){ +with(_11){ +return objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPColorWheelColorPicker").super_class},"initWithPickerMask:colorPanel:",_13,_14); +} +}),new objj_method(sel_getUid("initView"),function(_15,_16){ +with(_15){ +aFrame=CPRectMake(0,0,CPColorPickerViewWidth,CPColorPickerViewHeight); +_pickerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",aFrame); +objj_msgSend(_pickerView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_brightnessSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CGRectMake(0,(aFrame.size.height-34),aFrame.size.width,15)); +objj_msgSend(_brightnessSlider,"setValue:forThemeAttribute:",15,"track-width"); +objj_msgSend(_brightnessSlider,"setValue:forThemeAttribute:",objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPColorPicker,"class")),"pathForResource:","brightness_bar.png"))),"track-color"); +objj_msgSend(_brightnessSlider,"setMinValue:",0); +objj_msgSend(_brightnessSlider,"setMaxValue:",100); +objj_msgSend(_brightnessSlider,"setFloatValue:",100); +objj_msgSend(_brightnessSlider,"setTarget:",_15); +objj_msgSend(_brightnessSlider,"setAction:",sel_getUid("brightnessSliderDidChange:")); +objj_msgSend(_brightnessSlider,"setAutoresizingMask:",CPViewWidthSizable|CPViewMinYMargin); +_hueSaturationView=objj_msgSend(objj_msgSend(__CPColorWheel,"alloc"),"initWithFrame:",CPRectMake(0,0,aFrame.size.width,aFrame.size.height-38)); +objj_msgSend(_hueSaturationView,"setDelegate:",_15); +objj_msgSend(_hueSaturationView,"setAutoresizingMask:",(CPViewWidthSizable|CPViewHeightSizable)); +objj_msgSend(_pickerView,"addSubview:",_hueSaturationView); +objj_msgSend(_pickerView,"addSubview:",_brightnessSlider); +} +}),new objj_method(sel_getUid("brightnessSliderDidChange:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"updateColor"); +} +}),new objj_method(sel_getUid("colorWheelDidChange:"),function(_1a,_1b,_1c){ +with(_1a){ +objj_msgSend(_1a,"updateColor"); +} +}),new objj_method(sel_getUid("updateColor"),function(_1d,_1e){ +with(_1d){ +var hue=objj_msgSend(_hueSaturationView,"angle"),_1f=objj_msgSend(_hueSaturationView,"distance"),_20=objj_msgSend(_brightnessSlider,"floatValue"); +objj_msgSend(_hueSaturationView,"setWheelBrightness:",_20/100); +objj_msgSend(_brightnessSlider,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithHue:saturation:brightness:",hue,_1f,100)); +var _21=objj_msgSend(_1d,"colorPanel"),_22=objj_msgSend(_21,"opacity"); +_cachedColor=objj_msgSend(CPColor,"colorWithHue:saturation:brightness:alpha:",hue,_1f,_20,_22); +objj_msgSend(objj_msgSend(_1d,"colorPanel"),"setColor:",_cachedColor); +} +}),new objj_method(sel_getUid("supportsMode:"),function(_23,_24,_25){ +with(_23){ +return (_25==CPWheelColorPickerMode)?YES:NO; +} +}),new objj_method(sel_getUid("currentMode"),function(_26,_27){ +with(_26){ +return CPWheelColorPickerMode; +} +}),new objj_method(sel_getUid("provideNewView:"),function(_28,_29,_2a){ +with(_28){ +if(_2a){ +objj_msgSend(_28,"initView"); +} +return _pickerView; +} +}),new objj_method(sel_getUid("setColor:"),function(_2b,_2c,_2d){ +with(_2b){ +if(objj_msgSend(_2d,"isEqual:",_cachedColor)){ +return; +} +var hsb=objj_msgSend(_2d,"hsbComponents"); +objj_msgSend(_hueSaturationView,"setPositionToColor:",_2d); +objj_msgSend(_brightnessSlider,"setFloatValue:",hsb[2]); +objj_msgSend(_hueSaturationView,"setWheelBrightness:",hsb[2]/100); +objj_msgSend(_brightnessSlider,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithHue:saturation:brightness:",hsb[0],hsb[1],100)); +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_button.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("provideNewAlternateButtonImage"),function(_30,_31){ +with(_30){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_button_h.png"),CGSizeMake(32,32)); +} +})]); +var _1=objj_allocateClassPair(CPView,"__CPColorWheel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_wheelImage"),new objj_ivar("_blackWheelImage"),new objj_ivar("_crosshair"),new objj_ivar("_delegate"),new objj_ivar("_angle"),new objj_ivar("_distance"),new objj_ivar("_radius")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_32,_33,_34){ +with(_32){ +_32=objj_msgSendSuper({receiver:_32,super_class:objj_getClass("__CPColorWheel").super_class},"initWithFrame:",_34); +var _35=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel.png"); +_wheelImage=new Image(); +_wheelImage.src=_35; +_wheelImage.style.position="absolute"; +_35=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_black.png"); +_blackWheelImage=new Image(); +_blackWheelImage.src=_35; +_blackWheelImage.style.opacity="0"; +_blackWheelImage.style.filter="alpha(opacity=0)"; +_blackWheelImage.style.position="absolute"; +_DOMElement.appendChild(_wheelImage); +_DOMElement.appendChild(_blackWheelImage); +objj_msgSend(_32,"setWheelSize:",_34.size); +_crosshair=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CPRectMake(_radius-2,_radius-2,4,4)); +objj_msgSend(_crosshair,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +var _36=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_crosshair,"bounds"),1,1)); +objj_msgSend(_36,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_crosshair,"addSubview:",_36); +objj_msgSend(_32,"addSubview:",_crosshair); +return _32; +} +}),new objj_method(sel_getUid("setWheelBrightness:"),function(_37,_38,_39){ +with(_37){ +_blackWheelImage.style.opacity=1-_39; +_blackWheelImage.style.filter="alpha(opacity="+(1-_39)*100+")"; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSendSuper({receiver:_3a,super_class:objj_getClass("__CPColorWheel").super_class},"setFrameSize:",_3c); +objj_msgSend(_3a,"setWheelSize:",_3c); +} +}),new objj_method(sel_getUid("setWheelSize:"),function(_3d,_3e,_3f){ +with(_3d){ +var min=MIN(_3f.width,_3f.height); +_blackWheelImage.style.width=min; +_blackWheelImage.style.height=min; +_blackWheelImage.width=min; +_blackWheelImage.height=min; +_blackWheelImage.style.top=(_3f.height-min)/2+"px"; +_blackWheelImage.style.left=(_3f.width-min)/2+"px"; +_wheelImage.style.width=min; +_wheelImage.style.height=min; +_wheelImage.width=min; +_wheelImage.height=min; +_wheelImage.style.top=(_3f.height-min)/2+"px"; +_wheelImage.style.left=(_3f.width-min)/2+"px"; +_radius=min/2; +objj_msgSend(_3d,"setAngle:distance:",objj_msgSend(_3d,"degreesToRadians:",_angle),(_distance/100)*_radius); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_40,_41,_42){ +with(_40){ +_delegate=_42; +} +}),new objj_method(sel_getUid("delegate"),function(_43,_44){ +with(_43){ +return _delegate; +} +}),new objj_method(sel_getUid("angle"),function(_45,_46){ +with(_45){ +return _angle; +} +}),new objj_method(sel_getUid("distance"),function(_47,_48){ +with(_47){ +return _distance; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_49,_4a,_4b){ +with(_49){ +objj_msgSend(_49,"reposition:",_4b); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"reposition:",_4e); +} +}),new objj_method(sel_getUid("reposition:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSend(_4f,"bounds"),_53=objj_msgSend(_4f,"convertPoint:fromView:",objj_msgSend(_51,"locationInWindow"),nil); +var _54=CGRectGetMidX(_52); +var _55=CGRectGetMidY(_52); +var _56=MIN(SQRT((_53.x-_54)*(_53.x-_54)+(_53.y-_55)*(_53.y-_55)),_radius); +var _57=ATAN2(_53.y-_55,_53.x-_54); +objj_msgSend(_4f,"setAngle:distance:",_57,_56); +objj_msgSend(_delegate,"colorWheelDidChange:",_4f); +} +}),new objj_method(sel_getUid("setAngle:distance:"),function(_58,_59,_5a,_5b){ +with(_58){ +var _5c=objj_msgSend(_58,"bounds"); +var _5d=CGRectGetMidX(_5c); +var _5e=CGRectGetMidY(_5c); +_angle=objj_msgSend(_58,"radiansToDegrees:",_5a); +_distance=(_5b/_radius)*100; +objj_msgSend(_crosshair,"setFrameOrigin:",CPPointMake(COS(_5a)*_5b+_5d-2,SIN(_5a)*_5b+_5e-2)); +} +}),new objj_method(sel_getUid("setPositionToColor:"),function(_5f,_60,_61){ +with(_5f){ +var hsb=objj_msgSend(_61,"hsbComponents"),_62=objj_msgSend(_5f,"bounds"); +var _63=objj_msgSend(_5f,"degreesToRadians:",hsb[0]),_64=(hsb[1]/100)*_radius; +objj_msgSend(_5f,"setAngle:distance:",_63,_64); +} +}),new objj_method(sel_getUid("radiansToDegrees:"),function(_65,_66,_67){ +with(_65){ +return ((-_67/PI)*180+360)%360; +} +}),new objj_method(sel_getUid("degreesToRadians:"),function(_68,_69,_6a){ +with(_68){ +return -(((_6a-360)/180)*PI); +} +})]); +p;13;CPColorWell.jt;6201;@STATIC;1.0;I;21;Foundation/CPString.ji;8;CPView.ji;9;CPColor.ji;14;CPColorPanel.jt;6112; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPColorPanel.j",YES); +var _1="_CPColorWellDidBecomeExclusiveNotification"; +var _2=objj_allocateClassPair(CPControl,"CPColorWell"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_active"),new objj_ivar("_bordered"),new objj_ivar("_color"),new objj_ivar("_wellView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPColorWell").super_class},"initWithFrame:",_6); +if(_4){ +_active=NO; +_bordered=YES; +_color=objj_msgSend(CPColor,"whiteColor"); +objj_msgSend(_4,"drawBezelWithHighlight:",NO); +objj_msgSend(_4,"drawWellInside:",CGRectInset(objj_msgSend(_4,"bounds"),3,3)); +objj_msgSend(_4,"_registerForNotifications"); +} +return _4; +} +}),new objj_method(sel_getUid("_registerForNotifications"),function(_7,_8){ +with(_7){ +var _9=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_9,"addObserver:selector:name:object:",_7,sel_getUid("colorWellDidBecomeExclusive:"),_1,nil); +objj_msgSend(_9,"addObserver:selector:name:object:",_7,sel_getUid("colorPanelWillClose:"),CPWindowWillCloseNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("isBordered"),function(_a,_b){ +with(_a){ +return _bordered; +} +}),new objj_method(sel_getUid("setBordered:"),function(_c,_d,_e){ +with(_c){ +if(_bordered==_e){ +return; +} +_bordered=_e; +objj_msgSend(_c,"drawWellInside:",CGRectInset(objj_msgSend(_c,"bounds"),3,3)); +} +}),new objj_method(sel_getUid("color"),function(_f,_10){ +with(_f){ +return _color; +} +}),new objj_method(sel_getUid("setColor:"),function(_11,_12,_13){ +with(_11){ +if(_color==_13){ +return; +} +_color=_13; +objj_msgSend(_11,"drawWellInside:",CGRectInset(objj_msgSend(_11,"bounds"),3,3)); +} +}),new objj_method(sel_getUid("takeColorFrom:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_14,"setColor:",objj_msgSend(_16,"color")); +} +}),new objj_method(sel_getUid("activate:"),function(_17,_18,_19){ +with(_17){ +if(_19){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",_1,_17); +} +if(objj_msgSend(_17,"isActive")){ +return; +} +_active=YES; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_17,sel_getUid("colorPanelDidChangeColor:"),CPColorPanelColorDidChangeNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("deactivate"),function(_1a,_1b){ +with(_1a){ +if(!objj_msgSend(_1a,"isActive")){ +return; +} +_active=NO; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_1a,CPColorPanelColorDidChangeNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("isActive"),function(_1c,_1d){ +with(_1c){ +return _active; +} +}),new objj_method(sel_getUid("drawBezelWithHighlight:"),function(_1e,_1f,_20){ +with(_1e){ +} +}),new objj_method(sel_getUid("drawWellInside:"),function(_21,_22,_23){ +with(_21){ +if(!_wellView){ +_wellView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_23); +objj_msgSend(_wellView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_21,"addSubview:",_wellView); +}else{ +objj_msgSend(_wellView,"setFrame:",_23); +} +objj_msgSend(_wellView,"setBackgroundColor:",_color); +} +}),new objj_method(sel_getUid("colorPanelDidChangeColor:"),function(_24,_25,_26){ +with(_24){ +objj_msgSend(_24,"takeColorFrom:",objj_msgSend(_26,"object")); +objj_msgSend(_24,"sendAction:to:",objj_msgSend(_24,"action"),objj_msgSend(_24,"target")); +} +}),new objj_method(sel_getUid("colorWellDidBecomeExclusive:"),function(_27,_28,_29){ +with(_27){ +if(_27!=objj_msgSend(_29,"object")){ +objj_msgSend(_27,"deactivate"); +} +} +}),new objj_method(sel_getUid("colorPanelWillClose:"),function(_2a,_2b,_2c){ +with(_2a){ +objj_msgSend(_2a,"deactivate"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_2d,_2e,_2f){ +with(_2d){ +if(!objj_msgSend(_2d,"isEnabled")){ +return; +} +objj_msgSend(_2d,"drawBezelWithHighlight:",YES); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_30,_31,_32){ +with(_30){ +if(!objj_msgSend(_30,"isEnabled")){ +return; +} +objj_msgSend(_30,"drawBezelWithHighlight:",CGRectContainsPoint(objj_msgSend(_30,"bounds"),objj_msgSend(_30,"convertPoint:fromView:",objj_msgSend(_32,"locationInWindow"),nil))); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_33,_34,_35){ +with(_33){ +objj_msgSend(_33,"drawBezelWithHighlight:",NO); +if(!CGRectContainsPoint(objj_msgSend(_33,"bounds"),objj_msgSend(_33,"convertPoint:fromView:",objj_msgSend(_35,"locationInWindow"),nil))||!objj_msgSend(_33,"isEnabled")){ +return; +} +objj_msgSend(_33,"activate:",YES); +var _36=objj_msgSend(CPColorPanel,"sharedColorPanel"); +objj_msgSend(_36,"setColor:",_color); +objj_msgSend(_36,"orderFront:",_33); +} +})]); +var _37="CPColorWellColorKey",_38="CPColorWellBorderedKey"; +var _2=objj_getClass("CPColorWell"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPColorWell\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_39,_3a,_3b){ +with(_39){ +_39=objj_msgSendSuper({receiver:_39,super_class:objj_getClass("CPColorWell").super_class},"initWithCoder:",_3b); +if(_39){ +_active=NO; +_bordered=objj_msgSend(_3b,"decodeBoolForKey:",_38); +_color=objj_msgSend(_3b,"decodeObjectForKey:",_37); +objj_msgSend(_39,"drawBezelWithHighlight:",NO); +objj_msgSend(_39,"drawWellInside:",CGRectInset(objj_msgSend(_39,"bounds"),3,3)); +objj_msgSend(_39,"_registerForNotifications"); +} +return _39; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=_subviews; +_subviews=objj_msgSend(_subviews,"copy"); +objj_msgSend(_subviews,"removeObjectIdenticalTo:",_wellView); +objj_msgSendSuper({receiver:_3c,super_class:objj_getClass("CPColorWell").super_class},"encodeWithCoder:",_3e); +_subviews=_3f; +objj_msgSend(_3e,"encodeObject:forKey:",_color,_37); +objj_msgSend(_3e,"encodeObject:forKey:",_bordered,_38); +} +})]); +p;17;CPCompatibility.jt;3813;@STATIC;1.0;i;9;CPEvent.ji;12;CPPlatform.jt;3764; +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPPlatform.j",YES); +CPUnknownBrowserEngine=0; +CPGeckoBrowserEngine=1; +CPInternetExplorerBrowserEngine=2; +CPKHTMLBrowserEngine=3; +CPOperaBrowserEngine=4; +CPWebKitBrowserEngine=5; +CPMacOperatingSystem=0; +CPWindowsOperatingSystem=1; +CPOtherOperatingSystem=2; +CPCSSRGBAFeature=1<<5; +CPHTMLCanvasFeature=1<<6; +CPHTMLContentEditableFeature=1<<7; +CPHTMLDragAndDropFeature=1<<8; +CPJavascriptInnerTextFeature=1<<9; +CPJavascriptTextContentFeature=1<<10; +CPJavascriptClipboardEventsFeature=1<<11; +CPJavascriptClipboardAccessFeature=1<<12; +CPJavaScriptCanvasDrawFeature=1<<13; +CPJavaScriptCanvasTransformFeature=1<<14; +CPVMLFeature=1<<15; +CPJavascriptRemedialKeySupport=1<<16; +CPJavaScriptShadowFeature=1<<20; +CPJavaScriptNegativeMouseWheelValues=1<<22; +CPJavaScriptMouseWheelValues_8_15=1<<23; +CPOpacityRequiresFilterFeature=1<<24; +CPInputTypeCanBeChangedFeature=1<<25; +CPHTML5DragAndDropSourceYOffBy1=1<<26; +var _1="",_2=CPUnknownBrowserEngine,_3=0; +_3|=CPInputTypeCanBeChangedFeature; +if(typeof window!=="undefined"&&typeof window.navigator!=="undefined"){ +_1=window.navigator.userAgent; +} +if(window.opera){ +_2=CPOperaBrowserEngine; +_3|=CPJavaScriptCanvasDrawFeature; +}else{ +if(window.attachEvent){ +_2=CPInternetExplorerBrowserEngine; +_3|=CPVMLFeature; +_3|=CPJavascriptRemedialKeySupport; +_3|=CPJavaScriptShadowFeature; +_3|=CPOpacityRequiresFilterFeature; +_3&=~CPInputTypeCanBeChangedFeature; +}else{ +if(_1.indexOf("AppleWebKit/")!=-1){ +_2=CPWebKitBrowserEngine; +_3|=CPCSSRGBAFeature; +_3|=CPHTMLContentEditableFeature; +if(_1.indexOf("Chrome")===-1){ +_3|=CPHTMLDragAndDropFeature; +} +_3|=CPJavascriptClipboardEventsFeature; +_3|=CPJavascriptClipboardAccessFeature; +_3|=CPJavaScriptShadowFeature; +var _4=_1.indexOf("AppleWebKit/")+"AppleWebKit/".length,_5=_1.indexOf(" ",_4),_6=_1.substring(_4,_5),_7=_6.indexOf("."),_8=parseInt(_6.substring(0,_7)),_9=parseInt(_6.substr(_7+1)); +if((_1.indexOf("Safari")!==CPNotFound&&(_8>525||(_8===525&&_9>14)))||_1.indexOf("Chrome")!==CPNotFound){ +_3|=CPJavascriptRemedialKeySupport; +} +if(!objj_msgSend(CPPlatform,"isBrowser")){ +_3|=CPJavascriptRemedialKeySupport; +} +if(_8<532||(_8===532&&_9<6)){ +_3|=CPHTML5DragAndDropSourceYOffBy1; +} +}else{ +if(_1.indexOf("KHTML")!=-1){ +_2=CPKHTMLBrowserEngine; +}else{ +if(_1.indexOf("Gecko")!==-1){ +_2=CPGeckoBrowserEngine; +_3|=CPJavaScriptCanvasDrawFeature; +var _a=_1.indexOf("Firefox"),_b=(_a===-1)?2:parseFloat(_1.substring(_a+"Firefox".length+1)); +if(_b>=3){ +_3|=CPCSSRGBAFeature; +} +if(_b<3){ +_3|=CPJavaScriptMouseWheelValues_8_15; +} +} +} +} +} +} +if(typeof document!="undefined"){ +var _c=document.createElement("canvas"); +if(_c&&_c.getContext){ +_3|=CPHTMLCanvasFeature; +var _d=document.createElement("canvas").getContext("2d"); +if(_d&&_d.setTransform&&_d.transform){ +_3|=CPJavaScriptCanvasTransformFeature; +} +} +var _e=document.createElement("div"); +if(_e.innerText!=undefined){ +_3|=CPJavascriptInnerTextFeature; +}else{ +if(_e.textContent!=undefined){ +_3|=CPJavascriptTextContentFeature; +} +} +} +CPFeatureIsCompatible=function(_f){ +return _3&_f; +}; +CPBrowserIsEngine=function(_10){ +return _2===_10; +}; +CPBrowserIsOperatingSystem=function(_11){ +return OPERATING_SYSTEM===_11; +}; +OPERATING_SYSTEM=CPOtherOperatingSystem; +if(_1.indexOf("Mac")!==-1){ +OPERATING_SYSTEM=CPMacOperatingSystem; +CPPlatformActionKeyMask=CPCommandKeyMask; +CPUndoKeyEquivalent="z"; +CPRedoKeyEquivalent="Z"; +CPUndoKeyEquivalentModifierMask=CPCommandKeyMask; +CPRedoKeyEquivalentModifierMask=CPCommandKeyMask; +}else{ +if(_1.indexOf("Windows")!==-1){ +OPERATING_SYSTEM=CPWindowsOperatingSystem; +} +CPPlatformActionKeyMask=CPControlKeyMask; +CPUndoKeyEquivalent="z"; +CPRedoKeyEquivalent="y"; +CPUndoKeyEquivalentModifierMask=CPControlKeyMask; +CPRedoKeyEquivalentModifierMask=CPControlKeyMask; +} +p;11;CPControl.jt;18804;@STATIC;1.0;i;8;CPFont.ji;10;CPShadow.ji;8;CPView.ji;19;CPKeyValueBinding.jt;18721; +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPShadow.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPKeyValueBinding.j",YES); +CPLeftTextAlignment=0; +CPRightTextAlignment=1; +CPCenterTextAlignment=2; +CPJustifiedTextAlignment=3; +CPNaturalTextAlignment=4; +CPRegularControlSize=0; +CPSmallControlSize=1; +CPMiniControlSize=2; +CPLineBreakByWordWrapping=0; +CPLineBreakByCharWrapping=1; +CPLineBreakByClipping=2; +CPLineBreakByTruncatingHead=3; +CPLineBreakByTruncatingTail=4; +CPLineBreakByTruncatingMiddle=5; +CPTopVerticalTextAlignment=1,CPCenterVerticalTextAlignment=2,CPBottomVerticalTextAlignment=3; +CPScaleProportionally=0; +CPScaleToFit=1; +CPScaleNone=2; +CPNoImage=0; +CPImageOnly=1; +CPImageLeft=2; +CPImageRight=3; +CPImageBelow=4; +CPImageAbove=5; +CPImageOverlaps=6; +CPOnState=1; +CPOffState=0; +CPMixedState=-1; +CPControlNormalBackgroundColor="CPControlNormalBackgroundColor"; +CPControlSelectedBackgroundColor="CPControlSelectedBackgroundColor"; +CPControlHighlightedBackgroundColor="CPControlHighlightedBackgroundColor"; +CPControlDisabledBackgroundColor="CPControlDisabledBackgroundColor"; +CPControlTextDidBeginEditingNotification="CPControlTextDidBeginEditingNotification"; +CPControlTextDidChangeNotification="CPControlTextDidChangeNotification"; +CPControlTextDidEndEditingNotification="CPControlTextDidEndEditingNotification"; +var _1=objj_msgSend(CPColor,"blackColor"); +var _2=objj_allocateClassPair(CPView,"CPControl"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_value"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_sendActionOn"),new objj_ivar("_sendsActionOnEndEditing"),new objj_ivar("_continuousTracking"),new objj_ivar("_trackingWasWithinFrame"),new objj_ivar("_trackingMouseDownFlags"),new objj_ivar("_previousTrackingLocation"),new objj_ivar("_toolTip")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("sendsActionOnEndEditing"),function(_4,_5){ +with(_4){ +return _sendsActionOnEndEditing; +} +}),new objj_method(sel_getUid("setSendsActionOnEndEditing:"),function(_6,_7,_8){ +with(_6){ +_sendsActionOnEndEditing=_8; +} +}),new objj_method(sel_getUid("_reverseSetBinding"),function(_9,_a){ +with(_9){ +var _b=objj_msgSend(CPKeyValueBinding,"getBinding:forObject:",CPValueBinding,_9); +objj_msgSend(_b,"reverseSetValueFor:","objectValue"); +} +}),new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(_c,_d,_e){ +with(_c){ +if(_e==="value"){ +return "objectValue"; +} +return objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPControl").super_class},"_replacementKeyPathForBinding:",_e); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f,_10,_11){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPControl").super_class},"initWithFrame:",_11); +if(_f){ +_sendActionOn=CPLeftMouseUpMask; +_trackingMouseDownFlags=0; +} +return _f; +} +}),new objj_method(sel_getUid("setAction:"),function(_12,_13,_14){ +with(_12){ +_action=_14; +} +}),new objj_method(sel_getUid("action"),function(_15,_16){ +with(_15){ +return _action; +} +}),new objj_method(sel_getUid("setTarget:"),function(_17,_18,_19){ +with(_17){ +_target=_19; +} +}),new objj_method(sel_getUid("target"),function(_1a,_1b){ +with(_1a){ +return _target; +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_1c,_1d,_1e,_1f){ +with(_1c){ +objj_msgSend(_1c,"_reverseSetBinding"); +objj_msgSend(CPApp,"sendAction:to:from:",_1e,_1f,_1c); +} +}),new objj_method(sel_getUid("sendActionOn:"),function(_20,_21,_22){ +with(_20){ +var _23=_sendActionOn; +_sendActionOn=_22; +return _23; +} +}),new objj_method(sel_getUid("isContinuous"),function(_24,_25){ +with(_24){ +return (_sendActionOn&CPPeriodicMask)!==0; +} +}),new objj_method(sel_getUid("setContinuous:"),function(_26,_27,_28){ +with(_26){ +if(_28){ +_sendActionOn|=CPPeriodicMask; +}else{ +_sendActionOn&=~CPPeriodicMask; +} +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(_29,_2a){ +with(_29){ +return NO; +} +}),new objj_method(sel_getUid("trackMouse:"),function(_2b,_2c,_2d){ +with(_2b){ +var _2e=objj_msgSend(_2d,"type"),_2f=objj_msgSend(_2b,"convertPoint:fromView:",objj_msgSend(_2d,"locationInWindow"),nil),_30=objj_msgSend(_2b,"tracksMouseOutsideOfFrame")||CGRectContainsPoint(objj_msgSend(_2b,"bounds"),_2f); +if(_2e===CPLeftMouseUp){ +objj_msgSend(_2b,"stopTracking:at:mouseIsUp:",_previousTrackingLocation,_2f,YES); +_trackingMouseDownFlags=0; +}else{ +if(_2e===CPLeftMouseDown){ +_trackingMouseDownFlags=objj_msgSend(_2d,"modifierFlags"); +_continuousTracking=objj_msgSend(_2b,"startTrackingAt:",_2f); +}else{ +if(_2e===CPLeftMouseDragged){ +if(_30){ +if(!_trackingWasWithinFrame){ +_continuousTracking=objj_msgSend(_2b,"startTrackingAt:",_2f); +}else{ +if(_continuousTracking){ +_continuousTracking=objj_msgSend(_2b,"continueTracking:at:",_previousTrackingLocation,_2f); +} +} +}else{ +objj_msgSend(_2b,"stopTracking:at:mouseIsUp:",_previousTrackingLocation,_2f,NO); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_2b,sel_getUid("trackMouse:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +if((_sendActionOn&(1<<_2e))&&_30){ +objj_msgSend(_2b,"sendAction:to:",_action,_target); +} +_trackingWasWithinFrame=_30; +_previousTrackingLocation=_2f; +} +}),new objj_method(sel_getUid("setState:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("nextState"),function(_34,_35){ +with(_34){ +return 0; +} +}),new objj_method(sel_getUid("performClick:"),function(_36,_37,_38){ +with(_36){ +if(!objj_msgSend(_36,"isEnabled")){ +return; +} +objj_msgSend(_36,"highlight:",YES); +objj_msgSend(_36,"setState:",objj_msgSend(_36,"nextState")); +try{ +objj_msgSend(_36,"sendAction:to:",objj_msgSend(_36,"action"),objj_msgSend(_36,"target")); +} +catch(e){ +throw e; +} +finally{ +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0.1,_36,sel_getUid("unhighlightButtonTimerDidFinish:"),nil,NO); +} +} +}),new objj_method(sel_getUid("unhighlightButtonTimerDidFinish:"),function(_39,_3a,_3b){ +with(_39){ +objj_msgSend(_39,"highlight:",NO); +} +}),new objj_method(sel_getUid("mouseDownFlags"),function(_3c,_3d){ +with(_3c){ +return _trackingMouseDownFlags; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(_3e,"highlight:",YES); +return (_sendActionOn&CPPeriodicMask)||(_sendActionOn&CPLeftMouseDraggedMask); +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(_41,_42,_43,_44){ +with(_41){ +return (_sendActionOn&CPPeriodicMask)||(_sendActionOn&CPLeftMouseDraggedMask); +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_45,_46,_47,_48,_49){ +with(_45){ +objj_msgSend(_45,"highlight:",NO); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_4a,_4b,_4c){ +with(_4a){ +if(!objj_msgSend(_4a,"isEnabled")){ +return; +} +objj_msgSend(_4a,"trackMouse:",_4c); +} +}),new objj_method(sel_getUid("objectValue"),function(_4d,_4e){ +with(_4d){ +return _value; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_4f,_50,_51){ +with(_4f){ +_value=_51; +objj_msgSend(_4f,"setNeedsLayout"); +objj_msgSend(_4f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("floatValue"),function(_52,_53){ +with(_52){ +var _54=parseFloat(_value,10); +return isNaN(_54)?0:_54; +} +}),new objj_method(sel_getUid("setFloatValue:"),function(_55,_56,_57){ +with(_55){ +objj_msgSend(_55,"setObjectValue:",_57); +} +}),new objj_method(sel_getUid("doubleValue"),function(_58,_59){ +with(_58){ +var _5a=parseFloat(_value,10); +return isNaN(_5a)?0:_5a; +} +}),new objj_method(sel_getUid("setDoubleValue:"),function(_5b,_5c,_5d){ +with(_5b){ +objj_msgSend(_5b,"setObjectValue:",_5d); +} +}),new objj_method(sel_getUid("intValue"),function(_5e,_5f){ +with(_5e){ +var _60=parseInt(_value,10); +return isNaN(_60)?0:_60; +} +}),new objj_method(sel_getUid("setIntValue:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_61,"setObjectValue:",_63); +} +}),new objj_method(sel_getUid("integerValue"),function(_64,_65){ +with(_64){ +var _66=parseInt(_value,10); +return isNaN(_66)?0:_66; +} +}),new objj_method(sel_getUid("setIntegerValue:"),function(_67,_68,_69){ +with(_67){ +objj_msgSend(_67,"setObjectValue:",_69); +} +}),new objj_method(sel_getUid("stringValue"),function(_6a,_6b){ +with(_6a){ +return (_value===undefined||_value===nil)?"":String(_value); +} +}),new objj_method(sel_getUid("setStringValue:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(_6c,"setObjectValue:",_6e); +} +}),new objj_method(sel_getUid("takeDoubleValueFrom:"),function(_6f,_70,_71){ +with(_6f){ +if(objj_msgSend(_71,"respondsToSelector:",sel_getUid("doubleValue"))){ +objj_msgSend(_6f,"setDoubleValue:",objj_msgSend(_71,"doubleValue")); +} +} +}),new objj_method(sel_getUid("takeFloatValueFrom:"),function(_72,_73,_74){ +with(_72){ +if(objj_msgSend(_74,"respondsToSelector:",sel_getUid("floatValue"))){ +objj_msgSend(_72,"setFloatValue:",objj_msgSend(_74,"floatValue")); +} +} +}),new objj_method(sel_getUid("takeIntegerValueFrom:"),function(_75,_76,_77){ +with(_75){ +if(objj_msgSend(_77,"respondsToSelector:",sel_getUid("integerValue"))){ +objj_msgSend(_75,"setIntegerValue:",objj_msgSend(_77,"integerValue")); +} +} +}),new objj_method(sel_getUid("takeIntValueFrom:"),function(_78,_79,_7a){ +with(_78){ +if(objj_msgSend(_7a,"respondsToSelector:",sel_getUid("intValue"))){ +objj_msgSend(_78,"setIntValue:",objj_msgSend(_7a,"intValue")); +} +} +}),new objj_method(sel_getUid("takeObjectValueFrom:"),function(_7b,_7c,_7d){ +with(_7b){ +if(objj_msgSend(_7d,"respondsToSelector:",sel_getUid("objectValue"))){ +objj_msgSend(_7b,"setObjectValue:",objj_msgSend(_7d,"objectValue")); +} +} +}),new objj_method(sel_getUid("takeStringValueFrom:"),function(_7e,_7f,_80){ +with(_7e){ +if(objj_msgSend(_80,"respondsToSelector:",sel_getUid("stringValue"))){ +objj_msgSend(_7e,"setStringValue:",objj_msgSend(_80,"stringValue")); +} +} +}),new objj_method(sel_getUid("textDidBeginEditing:"),function(_81,_82,_83){ +with(_81){ +if(objj_msgSend(_83,"object")!=_81){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidBeginEditingNotification,_81,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_83,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("textDidChange:"),function(_84,_85,_86){ +with(_84){ +if(objj_msgSend(_86,"object")!=_84){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidChangeNotification,_84,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_86,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("textDidEndEditing:"),function(_87,_88,_89){ +with(_87){ +if(objj_msgSend(_89,"object")!=_87){ +return; +} +objj_msgSend(_87,"_reverseSetBinding"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidEndEditingNotification,_87,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_89,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("setAlignment:"),function(_8a,_8b,_8c){ +with(_8a){ +objj_msgSend(_8a,"setValue:forThemeAttribute:",_8c,"alignment"); +} +}),new objj_method(sel_getUid("alignment"),function(_8d,_8e){ +with(_8d){ +return objj_msgSend(_8d,"valueForThemeAttribute:","alignment"); +} +}),new objj_method(sel_getUid("setVerticalAlignment:"),function(_8f,_90,_91){ +with(_8f){ +objj_msgSend(_8f,"setValue:forThemeAttribute:",_91,"vertical-alignment"); +} +}),new objj_method(sel_getUid("verticalAlignment"),function(_92,_93){ +with(_92){ +return objj_msgSend(_92,"valueForThemeAttribute:","vertical-alignment"); +} +}),new objj_method(sel_getUid("setLineBreakMode:"),function(_94,_95,_96){ +with(_94){ +objj_msgSend(_94,"setValue:forThemeAttribute:",_96,"line-break-mode"); +} +}),new objj_method(sel_getUid("lineBreakMode"),function(_97,_98){ +with(_97){ +return objj_msgSend(_97,"valueForThemeAttribute:","line-break-mode"); +} +}),new objj_method(sel_getUid("setTextColor:"),function(_99,_9a,_9b){ +with(_99){ +objj_msgSend(_99,"setValue:forThemeAttribute:",_9b,"text-color"); +} +}),new objj_method(sel_getUid("textColor"),function(_9c,_9d){ +with(_9c){ +return objj_msgSend(_9c,"valueForThemeAttribute:","text-color"); +} +}),new objj_method(sel_getUid("setFont:"),function(_9e,_9f,_a0){ +with(_9e){ +objj_msgSend(_9e,"setValue:forThemeAttribute:",_a0,"font"); +} +}),new objj_method(sel_getUid("font"),function(_a1,_a2){ +with(_a1){ +return objj_msgSend(_a1,"valueForThemeAttribute:","font"); +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_a3,_a4,_a5){ +with(_a3){ +objj_msgSend(_a3,"setValue:forThemeAttribute:",_a5,"text-shadow-color"); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_a6,_a7){ +with(_a6){ +return objj_msgSend(_a6,"valueForThemeAttribute:","text-shadow-color"); +} +}),new objj_method(sel_getUid("setTextShadowOffset:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"setValue:forThemeAttribute:",_aa,"text-shadow-offset"); +} +}),new objj_method(sel_getUid("textShadowOffset"),function(_ab,_ac){ +with(_ab){ +return objj_msgSend(_ab,"valueForThemeAttribute:","text-shadow-offset"); +} +}),new objj_method(sel_getUid("setImagePosition:"),function(_ad,_ae,_af){ +with(_ad){ +objj_msgSend(_ad,"setValue:forThemeAttribute:",_af,"image-position"); +} +}),new objj_method(sel_getUid("imagePosition"),function(_b0,_b1){ +with(_b0){ +return objj_msgSend(_b0,"valueForThemeAttribute:","image-position"); +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_b2,_b3,_b4){ +with(_b2){ +objj_msgSend(_b2,"setValue:forThemeAttribute:",_b4,"image-scaling"); +} +}),new objj_method(sel_getUid("imageScaling"),function(_b5,_b6){ +with(_b5){ +return objj_msgSend(_b5,"valueForThemeAttribute:","image-scaling"); +} +}),new objj_method(sel_getUid("setEnabled:"),function(_b7,_b8,_b9){ +with(_b7){ +if(_b9){ +objj_msgSend(_b7,"unsetThemeState:",CPThemeStateDisabled); +}else{ +objj_msgSend(_b7,"setThemeState:",CPThemeStateDisabled); +} +} +}),new objj_method(sel_getUid("isEnabled"),function(_ba,_bb){ +with(_ba){ +return !objj_msgSend(_ba,"hasThemeState:",CPThemeStateDisabled); +} +}),new objj_method(sel_getUid("highlight:"),function(_bc,_bd,_be){ +with(_bc){ +objj_msgSend(_bc,"setHighlighted:",_be); +} +}),new objj_method(sel_getUid("setHighlighted:"),function(_bf,_c0,_c1){ +with(_bf){ +if(_c1){ +objj_msgSend(_bf,"setThemeState:",CPThemeStateHighlighted); +}else{ +objj_msgSend(_bf,"unsetThemeState:",CPThemeStateHighlighted); +} +} +}),new objj_method(sel_getUid("isHighlighted"),function(_c2,_c3){ +with(_c2){ +return objj_msgSend(_c2,"hasThemeState:",CPThemeStateHighlighted); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("themeAttributes"),function(_c4,_c5){ +with(_c4){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CPLeftTextAlignment,CPTopVerticalTextAlignment,CPLineBreakByClipping,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"systemFontOfSize:",12),objj_msgSend(CPNull,"null"),{width:0,height:0},CPImageLeft,CPScaleToFit,{width:0,height:0},{width:-1,height:-1}],["alignment","vertical-alignment","line-break-mode","text-color","font","text-shadow-color","text-shadow-offset","image-position","image-scaling","min-size","max-size"]); +} +}),new objj_method(sel_getUid("initialize"),function(_c6,_c7){ +with(_c6){ +if(_c6===objj_msgSend(CPControl,"class")){ +objj_msgSend(_c6,"exposeBinding:","value"); +objj_msgSend(_c6,"exposeBinding:","objectValue"); +objj_msgSend(_c6,"exposeBinding:","stringValue"); +objj_msgSend(_c6,"exposeBinding:","integerValue"); +objj_msgSend(_c6,"exposeBinding:","intValue"); +objj_msgSend(_c6,"exposeBinding:","doubleValue"); +objj_msgSend(_c6,"exposeBinding:","floatValue"); +objj_msgSend(_c6,"exposeBinding:","enabled"); +} +} +})]); +var _c8="CPControlValueKey",_c9="CPControlControlStateKey",_ca="CPControlIsEnabledKey",_cb="CPControlTargetKey",_cc="CPControlActionKey",_cd="CPControlSendActionOnKey",_ce="CPControlSendsActionOnEndEditingKey"; +var _cf="CPImageViewImageKey"; +var _2=objj_getClass("CPControl"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPControl\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_d0,_d1,_d2){ +with(_d0){ +_d0=objj_msgSendSuper({receiver:_d0,super_class:objj_getClass("CPControl").super_class},"initWithCoder:",_d2); +if(_d0){ +objj_msgSend(_d0,"setObjectValue:",objj_msgSend(_d2,"decodeObjectForKey:",_c8)); +objj_msgSend(_d0,"setTarget:",objj_msgSend(_d2,"decodeObjectForKey:",_cb)); +objj_msgSend(_d0,"setAction:",objj_msgSend(_d2,"decodeObjectForKey:",_cc)); +objj_msgSend(_d0,"sendActionOn:",objj_msgSend(_d2,"decodeIntForKey:",_cd)); +objj_msgSend(_d0,"setSendsActionOnEndEditing:",objj_msgSend(_d2,"decodeBoolForKey:",_ce)); +} +return _d0; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_d3,_d4,_d5){ +with(_d3){ +objj_msgSendSuper({receiver:_d3,super_class:objj_getClass("CPControl").super_class},"encodeWithCoder:",_d5); +if(_sendsActionOnEndEditing){ +objj_msgSend(_d5,"encodeBool:forKey:",_sendsActionOnEndEditing,_ce); +} +if(_value!==nil){ +objj_msgSend(_d5,"encodeObject:forKey:",_value,_c8); +} +if(_target!==nil){ +objj_msgSend(_d5,"encodeConditionalObject:forKey:",_target,_cb); +} +if(_action!==NULL){ +objj_msgSend(_d5,"encodeObject:forKey:",_action,_cc); +} +objj_msgSend(_d5,"encodeInt:forKey:",_sendActionOn,_cd); +} +})]); +var _d6=[],_d7={},_d8={}; +_d6[CPRegularControlSize]="Regular"; +_d6[CPSmallControlSize]="Small"; +_d6[CPMiniControlSize]="Mini"; +_CPControlIdentifierForControlSize=function(_d9){ +return _d6[_d9]; +}; +_CPControlColorWithPatternImage=function(_da,_db){ +var _dc=1,_dd=arguments.length,_de=""; +for(;_dc<_dd;++_dc){ +_de+=arguments[_dc]; +} +var _df=_d7[_de]; +if(!_df){ +var _e0=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPControl,"class")); +_df=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e0,"pathForResource:",_db+"/"+_de+".png"),_da[_de])); +_d7[_de]=_df; +} +return _df; +}; +_CPControlThreePartImagePattern=function(_e1,_e2,_e3){ +var _e4=2,_e5=arguments.length,_e6=""; +for(;_e4<_e5;++_e4){ +_e6+=arguments[_e4]; +} +var _e7=_d8[_e6]; +if(!_e7){ +var _e8=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPControl,"class")),_e9=_e3+"/"+_e6; +_e2=_e2[_e6]; +_e7=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"0.png"),_e2[0]),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"1.png"),_e2[1]),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"2.png"),_e2[2])],_e1)); +_d8[_e6]=_e7; +} +return _e7; +}; +p;14;CPController.jt;1707;@STATIC;1.0;t;1688; +var _1="CPControllerDeclaredKeysKey"; +var _2=objj_allocateClassPair(CPObject,"CPController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_editors"),new objj_ivar("_declaredKeys")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPController").super_class},"init"); +if(_4){ +_editors=[]; +_declaredKeys=[]; +} +return _4; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6,_7,_8){ +with(_6){ +if(objj_msgSend(_declaredKeys,"count")>0){ +objj_msgSend(_8,"encodeObject:forKey:",_declaredKeys,_1); +} +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_9,_a,_b){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("CPController").super_class},"init"); +if(_9){ +_editors=[]; +_declaredKeys=objj_msgSend(_b,"decodeObjectForKey:",_1)||[]; +} +return nil; +} +}),new objj_method(sel_getUid("isEditing"),function(_c,_d){ +with(_c){ +return objj_msgSend(_editors,"count")>0; +} +}),new objj_method(sel_getUid("commitEditing"),function(_e,_f){ +with(_e){ +var _10=0,_11=_editors.length; +for(;_10<_11;++_10){ +if(!objj_msgSend(objj_msgSend(_editors,"objectAtIndex:",i),"commitEditing")){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("discardEditing"),function(_12,_13){ +with(_12){ +objj_msgSend(_editors,"makeObjectsPerformSelector:",sel_getUid("discardEditing")); +} +}),new objj_method(sel_getUid("objectDidBeginEditing:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_editors,"addObject:",_16); +} +}),new objj_method(sel_getUid("objectDidEndEditing:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_editors,"removeObject:",_19); +} +})]); +p;10;CPCookie.jt;1234;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1163; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPCookie"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_cookieName"),new objj_ivar("_cookieValue"),new objj_ivar("_expires")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithName:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCookie").super_class},"init"); +_cookieName=_5; +_cookieValue=objj_msgSend(_3,"_readCookieValue"); +return _3; +} +}),new objj_method(sel_getUid("value"),function(_6,_7){ +with(_6){ +return _cookieValue; +} +}),new objj_method(sel_getUid("name"),function(_8,_9){ +with(_8){ +return _cookieName; +} +}),new objj_method(sel_getUid("expires"),function(_a,_b){ +with(_a){ +return _expires; +} +}),new objj_method(sel_getUid("setValue:expires:domain:"),function(_c,_d,_e,_f,_10){ +with(_c){ +if(_f){ +var _11="; expires="+_f.toGMTString(); +}else{ +var _11=""; +} +if(_10){ +_10="; domain="+_10; +}else{ +_10=""; +} +_cookieValue=_e; +_expires=_11; +} +}),new objj_method(sel_getUid("_readCookieValue"),function(_12,_13){ +with(_12){ +return ""; +} +})]); +p;10;CPCursor.jt;7851;@STATIC;1.0;t;7832; +var _1=nil,_2=[],_3={},_4=nil; +var _5=objj_allocateClassPair(CPObject,"CPCursor"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_cssString"),new objj_ivar("_isSetOnMouseEntered"),new objj_ivar("_isSetOnMouseExited")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("isSetOnMouseEntered"),function(_7,_8){ +with(_7){ +return _isSetOnMouseEntered; +} +}),new objj_method(sel_getUid("setOnMouseEntered:"),function(_9,_a,_b){ +with(_9){ +_isSetOnMouseEntered=_b; +} +}),new objj_method(sel_getUid("isSetOnMouseExited"),function(_c,_d){ +with(_c){ +return _isSetOnMouseExited; +} +}),new objj_method(sel_getUid("setOnMouseExited:"),function(_e,_f,_10){ +with(_e){ +_isSetOnMouseExited=_10; +} +}),new objj_method(sel_getUid("initWithCSSString:"),function(_11,_12,_13){ +with(_11){ +if(_11=objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPCursor").super_class},"init")){ +_cssString=_13; +} +return _11; +} +}),new objj_method(sel_getUid("_cssString"),function(_14,_15){ +with(_14){ +return _cssString; +} +}),new objj_method(sel_getUid("initWithImage:hotSpot:"),function(_16,_17,_18,_19){ +with(_16){ +return objj_msgSend(_16,"initWithCSSString:","url("+objj_msgSend(_18,"filename")+")"); +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_1a,_1b,_1c){ +with(_1a){ +} +}),new objj_method(sel_getUid("mouseExited:"),function(_1d,_1e,_1f){ +with(_1d){ +} +}),new objj_method(sel_getUid("set"),function(_20,_21){ +with(_20){ +_1=_20; +objj_msgSend(objj_msgSend(_20,"class"),"_setCursorCSS:",_cssString); +} +}),new objj_method(sel_getUid("push"),function(_22,_23){ +with(_22){ +_1=_2.push(_22); +} +}),new objj_method(sel_getUid("pop"),function(_24,_25){ +with(_24){ +objj_msgSend(CPCursor,"pop"); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_26,_27,_28){ +with(_26){ +if(_26=objj_msgSendSuper({receiver:_26,super_class:objj_getClass("CPCursor").super_class},"init")){ +_cssString=objj_msgSend(_28,"decodeObjectForKey:","CPCursorNameKey"); +} +return _26; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"encodeObject:forKey:",_cssString,"CPCursorNameKey"); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("currentCursor"),function(_2c,_2d){ +with(_2c){ +return _1; +} +}),new objj_method(sel_getUid("cursorWithCSSString:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=_3[_30]; +if(typeof _31=="undefined"){ +_31=objj_msgSend(objj_msgSend(CPCursor,"alloc"),"initWithCSSString:",_30); +_3[_30]=_31; +} +return _31; +} +}),new objj_method(sel_getUid("cursorWithImageNamed:"),function(_32,_33,_34){ +with(_32){ +if(!_4){ +_4="url("+objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",_32),"resourcePath")+"/CPCursor/%@.cur)"; +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +_4+=", default"; +} +} +var url=objj_msgSend(CPString,"stringWithFormat:",_4,_34); +return objj_msgSend(objj_msgSend(CPCursor,"alloc"),"initWithCSSString:",url); +} +}),new objj_method(sel_getUid("arrowCursor"),function(_35,_36){ +with(_35){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","default"); +} +}),new objj_method(sel_getUid("crosshairCursor"),function(_37,_38){ +with(_37){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","crosshair"); +} +}),new objj_method(sel_getUid("IBeamCursor"),function(_39,_3a){ +with(_39){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","text"); +} +}),new objj_method(sel_getUid("pointingHandCursor"),function(_3b,_3c){ +with(_3b){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","pointer"); +} +}),new objj_method(sel_getUid("resizeDownCursor"),function(_3d,_3e){ +with(_3d){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_3e)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","s-resize"); +} +}),new objj_method(sel_getUid("resizeUpCursor"),function(_3f,_40){ +with(_3f){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_40)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","n-resize"); +} +}),new objj_method(sel_getUid("resizeLeftCursor"),function(_41,_42){ +with(_41){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_42)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","w-resize"); +} +}),new objj_method(sel_getUid("resizeRightCursor"),function(_43,_44){ +with(_43){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_44)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","e-resize"); +} +}),new objj_method(sel_getUid("resizeLeftRightCursor"),function(_45,_46){ +with(_45){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","col-resize"); +} +}),new objj_method(sel_getUid("resizeUpDownCursor"),function(_47,_48){ +with(_47){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","row-resize"); +} +}),new objj_method(sel_getUid("operationNotAllowedCursor"),function(_49,_4a){ +with(_49){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","not-allowed"); +} +}),new objj_method(sel_getUid("dragCopyCursor"),function(_4b,_4c){ +with(_4b){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_4c)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","copy"); +} +}),new objj_method(sel_getUid("dragLinkCursor"),function(_4d,_4e){ +with(_4d){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_4e)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","alias"); +} +}),new objj_method(sel_getUid("contextualMenuCursor"),function(_4f,_50){ +with(_4f){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_50)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","context-menu"); +} +}),new objj_method(sel_getUid("openHandCursor"),function(_51,_52){ +with(_51){ +if(CPBrowserIsEngine(CPWebKitBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-webkit-grab"); +}else{ +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-moz-grab"); +}else{ +if(CPBrowserIsEngine(CPOperaBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","move"); +} +} +} +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_52)); +} +}),new objj_method(sel_getUid("closedHandCursor"),function(_53,_54){ +with(_53){ +if(CPBrowserIsEngine(CPWebKitBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-webkit-grabbing"); +}else{ +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-moz-grabbing"); +} +} +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_54)); +} +}),new objj_method(sel_getUid("disappearingItemCursor"),function(_55,_56){ +with(_55){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_56)); +} +}),new objj_method(sel_getUid("hide"),function(_57,_58){ +with(_57){ +objj_msgSend(_57,"_setCursorCSS:","none"); +} +}),new objj_method(sel_getUid("unhide"),function(_59,_5a){ +with(_59){ +objj_msgSend(_59,"_setCursorCSS:",objj_msgSend(_1,"_cssString")); +} +}),new objj_method(sel_getUid("setHiddenUntilMouseMoves:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d){ +objj_msgSend(CPCursor,"hide"); +}else{ +objj_msgSend(CPCursor,"unhide"); +} +} +}),new objj_method(sel_getUid("_setCursorCSS:"),function(_5e,_5f,_60){ +with(_5e){ +var _61=objj_msgSend(objj_msgSend(CPPlatformWindow,"visiblePlatformWindows"),"allObjects"); +for(var i=0,_62=objj_msgSend(_61,"count");i<_62;i++){ +_61[i]._DOMBodyElement.style.cursor=_60; +} +} +}),new objj_method(sel_getUid("pop"),function(_63,_64){ +with(_63){ +if(_2.length>1){ +_2.pop(); +_1=_2[_2.length-1]; +} +} +})]); +p;12;CPDocument.jt;18918;@STATIC;1.0;I;21;Foundation/CPString.jI;20;Foundation/CPArray.ji;13;CPResponder.ji;13;CPSavePanel.ji;18;CPViewController.ji;20;CPWindowController.jt;18763; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPSavePanel.j",YES); +objj_executeFile("CPViewController.j",YES); +objj_executeFile("CPWindowController.j",YES); +CPSaveOperation=0; +CPSaveAsOperation=1; +CPSaveToOperation=2; +CPAutosaveOperation=3; +CPChangeDone=0; +CPChangeUndone=1; +CPChangeCleared=2; +CPChangeReadOtherContents=3; +CPChangeAutosaved=4; +CPDocumentWillSaveNotification="CPDocumentWillSaveNotification"; +CPDocumentDidSaveNotification="CPDocumentDidSaveNotification"; +CPDocumentDidFailToSaveNotification="CPDocumentDidFailToSaveNotification"; +var _1=0; +var _2=objj_allocateClassPair(CPResponder,"CPDocument"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_window"),new objj_ivar("_view"),new objj_ivar("_viewControllersForWindowControllers"),new objj_ivar("_fileURL"),new objj_ivar("_fileType"),new objj_ivar("_windowControllers"),new objj_ivar("_untitledDocumentIndex"),new objj_ivar("_hasUndoManager"),new objj_ivar("_undoManager"),new objj_ivar("_changeCount"),new objj_ivar("_readConnection"),new objj_ivar("_writeRequest"),new objj_ivar("_canCloseAlert")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPDocument").super_class},"init"); +if(_4){ +_windowControllers=[]; +_viewControllersForWindowControllers=objj_msgSend(CPDictionary,"dictionary"); +_hasUndoManager=YES; +_changeCount=0; +objj_msgSend(_4,"setNextResponder:",CPApp); +} +return _4; +} +}),new objj_method(sel_getUid("initWithType:error:"),function(_6,_7,_8,_9){ +with(_6){ +_6=objj_msgSend(_6,"init"); +if(_6){ +objj_msgSend(_6,"setFileType:",_8); +} +return _6; +} +}),new objj_method(sel_getUid("initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_a,_b,_c,_d,_e,_f,_10){ +with(_a){ +_a=objj_msgSend(_a,"init"); +if(_a){ +objj_msgSend(_a,"setFileURL:",_c); +objj_msgSend(_a,"setFileType:",_d); +objj_msgSend(_a,"readFromURL:ofType:delegate:didReadSelector:contextInfo:",_c,_d,_e,_f,_10); +} +return _a; +} +}),new objj_method(sel_getUid("initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_11,_12,_13,_14,_15,_16,_17,_18){ +with(_11){ +_11=objj_msgSend(_11,"init"); +if(_11){ +objj_msgSend(_11,"setFileURL:",_13); +objj_msgSend(_11,"setFileType:",_15); +objj_msgSend(_11,"readFromURL:ofType:delegate:didReadSelector:contextInfo:",_14,_15,_16,_17,_18); +} +return _11; +} +}),new objj_method(sel_getUid("dataOfType:error:"),function(_19,_1a,_1b,_1c){ +with(_19){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataOfType:error: must be overridden by the document subclass."); +} +}),new objj_method(sel_getUid("readFromData:ofType:error:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"readFromData:ofType: must be overridden by the document subclass."); +} +}),new objj_method(sel_getUid("viewControllerWillLoadCib:"),function(_22,_23,_24){ +with(_22){ +} +}),new objj_method(sel_getUid("viewControllerDidLoadCib:"),function(_25,_26,_27){ +with(_25){ +} +}),new objj_method(sel_getUid("firstEligibleExistingWindowController"),function(_28,_29){ +with(_28){ +return nil; +} +}),new objj_method(sel_getUid("makeWindowControllers"),function(_2a,_2b){ +with(_2a){ +objj_msgSend(_2a,"makeViewAndWindowControllers"); +} +}),new objj_method(sel_getUid("makeViewAndWindowControllers"),function(_2c,_2d){ +with(_2c){ +var _2e=objj_msgSend(_2c,"viewCibName"),_2f=nil,_30=nil; +if(objj_msgSend(_2e,"length")){ +_2f=objj_msgSend(objj_msgSend(CPViewController,"alloc"),"initWithCibName:bundle:owner:",_2e,nil,_2c); +} +if(_2f){ +_30=objj_msgSend(_2c,"firstEligibleExistingWindowController"); +} +if(!_30){ +var _31=objj_msgSend(_2c,"windowCibName"); +if(objj_msgSend(_31,"length")){ +_30=objj_msgSend(objj_msgSend(CPWindowController,"alloc"),"initWithWindowCibName:owner:",_31,_2c); +}else{ +if(_2f){ +var _32=objj_msgSend(_2f,"view"),_33=objj_msgSend(_32,"frame"); +_33.origin=CGPointMake(50,50); +var _34=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",_33,CPTitledWindowMask|CPClosableWindowMask|CPMiniaturizableWindowMask|CPResizableWindowMask); +_30=objj_msgSend(objj_msgSend(CPWindowController,"alloc"),"initWithWindow:",_34); +} +} +} +if(_30&&_2f){ +objj_msgSend(_30,"setSupportsMultipleDocuments:",YES); +} +if(_30){ +objj_msgSend(_2c,"addWindowController:",_30); +} +if(_2f){ +objj_msgSend(_2c,"addViewController:forWindowController:",_2f,_30); +} +} +}),new objj_method(sel_getUid("windowControllers"),function(_35,_36){ +with(_35){ +return _windowControllers; +} +}),new objj_method(sel_getUid("addWindowController:"),function(_37,_38,_39){ +with(_37){ +objj_msgSend(_windowControllers,"addObject:",_39); +if(objj_msgSend(_39,"document")!==_37){ +objj_msgSend(_39,"setDocument:",_37); +} +} +}),new objj_method(sel_getUid("removeWindowController:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_3c){ +objj_msgSend(_windowControllers,"removeObject:",_3c); +} +if(objj_msgSend(_3c,"document")===_3a){ +objj_msgSend(_3c,"setDocument:",nil); +} +} +}),new objj_method(sel_getUid("view"),function(_3d,_3e){ +with(_3d){ +return _view; +} +}),new objj_method(sel_getUid("viewControllers"),function(_3f,_40){ +with(_3f){ +return objj_msgSend(_viewControllersForWindowControllers,"allValues"); +} +}),new objj_method(sel_getUid("addViewController:forWindowController:"),function(_41,_42,_43,_44){ +with(_41){ +objj_msgSend(_viewControllersForWindowControllers,"setObject:forKey:",_43,objj_msgSend(_44,"UID")); +if(objj_msgSend(_44,"document")===_41){ +objj_msgSend(_44,"setViewController:",_43); +} +} +}),new objj_method(sel_getUid("removeViewController:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_viewControllersForWindowControllers,"removeObject:",_47); +} +}),new objj_method(sel_getUid("viewControllerForWindowController:"),function(_48,_49,_4a){ +with(_48){ +return objj_msgSend(_viewControllersForWindowControllers,"objectForKey:",objj_msgSend(_4a,"UID")); +} +}),new objj_method(sel_getUid("showWindows"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocument:"),_4b); +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("showWindow:"),_4b); +} +}),new objj_method(sel_getUid("displayName"),function(_4d,_4e){ +with(_4d){ +if(_fileURL){ +return objj_msgSend(_fileURL,"lastPathComponent"); +} +if(!_untitledDocumentIndex){ +_untitledDocumentIndex=++_1; +} +if(_untitledDocumentIndex==1){ +return "Untitled"; +} +return "Untitled "+_untitledDocumentIndex; +} +}),new objj_method(sel_getUid("viewCibName"),function(_4f,_50){ +with(_4f){ +return nil; +} +}),new objj_method(sel_getUid("windowCibName"),function(_51,_52){ +with(_51){ +return nil; +} +}),new objj_method(sel_getUid("windowControllerDidLoadCib:"),function(_53,_54,_55){ +with(_53){ +} +}),new objj_method(sel_getUid("windowControllerWillLoadCib:"),function(_56,_57,_58){ +with(_56){ +} +}),new objj_method(sel_getUid("readFromURL:ofType:delegate:didReadSelector:contextInfo:"),function(_59,_5a,_5b,_5c,_5d,_5e,_5f){ +with(_59){ +objj_msgSend(_readConnection,"cancel"); +_readConnection=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",objj_msgSend(CPURLRequest,"requestWithURL:",_5b),_59); +_readConnection.session=_60(_5c,_5d,_5e,_5f); +} +}),new objj_method(sel_getUid("fileURL"),function(_61,_62){ +with(_61){ +return _fileURL; +} +}),new objj_method(sel_getUid("setFileURL:"),function(_63,_64,_65){ +with(_63){ +if(_fileURL===_65){ +return; +} +_fileURL=_65; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:",sel_getUid("synchronizeWindowTitleWithDocumentName")); +} +}),new objj_method(sel_getUid("saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:"),function(_66,_67,_68,_69,_6a,_6b,_6c,_6d){ +with(_66){ +var _6e=objj_msgSend(_66,"dataOfType:error:",objj_msgSend(_66,"fileType"),nil),_6f=_changeCount; +_writeRequest=objj_msgSend(CPURLRequest,"requestWithURL:",_68); +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_writeRequest,"setHTTPMethod:","POST"); +}else{ +objj_msgSend(_writeRequest,"setHTTPMethod:","PUT"); +} +objj_msgSend(_writeRequest,"setHTTPBody:",objj_msgSend(_6e,"rawString")); +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","close","Connection"); +if(_6a===CPSaveOperation){ +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","true","x-cappuccino-overwrite"); +} +if(_6a!==CPSaveToOperation){ +objj_msgSend(_66,"updateChangeCount:",CPChangeCleared); +} +var _70=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",_writeRequest,_66); +_70.session=_71(_68,_6a,_6f,_6b,_6c,_6d,_70); +} +}),new objj_method(sel_getUid("connection:didReceiveResponse:"),function(_72,_73,_74,_75){ +with(_72){ +if(!objj_msgSend(_75,"isKindOfClass:",objj_msgSend(CPHTTPURLResponse,"class"))){ +return; +} +var _76=objj_msgSend(_75,"statusCode"); +if(_76===200){ +return; +} +var _77=_74.session; +if(_74==_readConnection){ +objj_msgSend(_74,"cancel"); +alert("There was an error retrieving the document."); +objj_msgSend(_77.delegate,_77.didReadSelector,_72,NO,_77.contextInfo); +}else{ +if(_76==409){ +objj_msgSend(_74,"cancel"); +if(confirm("There already exists a file with that name, would you like to overwrite it?")){ +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","true","x-cappuccino-overwrite"); +objj_msgSend(_74,"start"); +}else{ +if(_77.saveOperation!=CPSaveToOperation){ +_changeCount+=_77.changeCount; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_72,"isDocumentEdited")); +} +_writeRequest=nil; +objj_msgSend(_77.delegate,_77.didSaveSelector,_72,NO,_77.contextInfo); +objj_msgSend(_72,"_sendDocumentSavedNotification:",NO); +} +} +} +} +}),new objj_method(sel_getUid("connection:didReceiveData:"),function(_78,_79,_7a,_7b){ +with(_78){ +var _7c=_7a.session; +if(_7a==_readConnection){ +objj_msgSend(_78,"readFromData:ofType:error:",objj_msgSend(CPData,"dataWithRawString:",_7b),_7c.fileType,nil); +objj_msgSend(_7c.delegate,_7c.didReadSelector,_78,YES,_7c.contextInfo); +}else{ +if(_7c.saveOperation!=CPSaveToOperation){ +objj_msgSend(_78,"setFileURL:",_7c.absoluteURL); +} +_writeRequest=nil; +objj_msgSend(_7c.delegate,_7c.didSaveSelector,_78,YES,_7c.contextInfo); +objj_msgSend(_78,"_sendDocumentSavedNotification:",YES); +} +} +}),new objj_method(sel_getUid("connection:didFailWithError:"),function(_7d,_7e,_7f,_80){ +with(_7d){ +var _81=_7f.session; +if(_readConnection==_7f){ +objj_msgSend(_81.delegate,_81.didReadSelector,_7d,NO,_81.contextInfo); +}else{ +if(_81.saveOperation!=CPSaveToOperation){ +_changeCount+=_81.changeCount; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_7d,"isDocumentEdited")); +} +_writeRequest=nil; +alert("There was an error saving the document."); +objj_msgSend(_81.delegate,_81.didSaveSelector,_7d,NO,_81.contextInfo); +objj_msgSend(_7d,"_sendDocumentSavedNotification:",NO); +} +} +}),new objj_method(sel_getUid("connectionDidFinishLoading:"),function(_82,_83,_84){ +with(_82){ +if(_readConnection==_84){ +_readConnection=nil; +} +} +}),new objj_method(sel_getUid("isDocumentEdited"),function(_85,_86){ +with(_85){ +return _changeCount!=0; +} +}),new objj_method(sel_getUid("updateChangeCount:"),function(_87,_88,_89){ +with(_87){ +if(_89==CPChangeDone){ +++_changeCount; +}else{ +if(_89==CPChangeUndone){ +--_changeCount; +}else{ +if(_89==CPChangeCleared){ +_changeCount=0; +} +} +} +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_87,"isDocumentEdited")); +} +}),new objj_method(sel_getUid("setFileType:"),function(_8a,_8b,_8c){ +with(_8a){ +_fileType=_8c; +} +}),new objj_method(sel_getUid("fileType"),function(_8d,_8e){ +with(_8d){ +return _fileType; +} +}),new objj_method(sel_getUid("hasUndoManager"),function(_8f,_90){ +with(_8f){ +return _hasUndoManager; +} +}),new objj_method(sel_getUid("setHasUndoManager:"),function(_91,_92,_93){ +with(_91){ +if(_hasUndoManager==_93){ +return; +} +_hasUndoManager=_93; +if(!_hasUndoManager){ +objj_msgSend(_91,"setUndoManager:",nil); +} +} +}),new objj_method(sel_getUid("_undoManagerWillCloseGroup:"),function(_94,_95,_96){ +with(_94){ +var _97=objj_msgSend(_96,"object"); +if(objj_msgSend(_97,"isUndoing")||objj_msgSend(_97,"isRedoing")){ +return; +} +objj_msgSend(_94,"updateChangeCount:",CPChangeDone); +} +}),new objj_method(sel_getUid("_undoManagerDidUndoChange:"),function(_98,_99,_9a){ +with(_98){ +objj_msgSend(_98,"updateChangeCount:",CPChangeUndone); +} +}),new objj_method(sel_getUid("_undoManagerDidRedoChange:"),function(_9b,_9c,_9d){ +with(_9b){ +objj_msgSend(_9b,"updateChangeCount:",CPChangeDone); +} +}),new objj_method(sel_getUid("setUndoManager:"),function(_9e,_9f,_a0){ +with(_9e){ +var _a1=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_undoManager){ +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerDidUndoChangeNotification,_undoManager); +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerDidRedoChangeNotification,_undoManager); +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerWillCloseUndoGroupNotification,_undoManager); +} +_undoManager=_a0; +if(_undoManager){ +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerDidUndoChange:"),CPUndoManagerDidUndoChangeNotification,_undoManager); +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerDidRedoChange:"),CPUndoManagerDidRedoChangeNotification,_undoManager); +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerWillCloseGroup:"),CPUndoManagerWillCloseUndoGroupNotification,_undoManager); +} +} +}),new objj_method(sel_getUid("undoManager"),function(_a2,_a3){ +with(_a2){ +if(_hasUndoManager&&!_undoManager){ +objj_msgSend(_a2,"setUndoManager:",objj_msgSend(objj_msgSend(CPUndoManager,"alloc"),"init")); +} +return _undoManager; +} +}),new objj_method(sel_getUid("windowWillReturnUndoManager:"),function(_a4,_a5,_a6){ +with(_a4){ +return objj_msgSend(_a4,"undoManager"); +} +}),new objj_method(sel_getUid("saveDocument:"),function(_a7,_a8,_a9){ +with(_a7){ +objj_msgSend(_a7,"saveDocumentWithDelegate:didSaveSelector:contextInfo:",nil,nil,nil); +} +}),new objj_method(sel_getUid("saveDocumentWithDelegate:didSaveSelector:contextInfo:"),function(_aa,_ab,_ac,_ad,_ae){ +with(_aa){ +if(_fileURL){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentWillSaveNotification,_aa); +objj_msgSend(_aa,"saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",_fileURL,objj_msgSend(_aa,"fileType"),CPSaveOperation,_ac,_ad,_ae); +}else{ +objj_msgSend(_aa,"_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:",_ac,_ad,_ae); +} +} +}),new objj_method(sel_getUid("saveDocumentAs:"),function(_af,_b0,_b1){ +with(_af){ +objj_msgSend(_af,"_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:",nil,nil,nil); +} +}),new objj_method(sel_getUid("_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:"),function(_b2,_b3,_b4,_b5,_b6){ +with(_b2){ +var _b7=objj_msgSend(CPSavePanel,"savePanel"),_b8=objj_msgSend(_b7,"runModal"); +if(!_b8){ +return; +} +var _b9=objj_msgSend(_b7,"URL"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentWillSaveNotification,_b2); +objj_msgSend(_b2,"saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",_b9,objj_msgSend(_b2,"fileType"),CPSaveAsOperation,_b4,_b5,_b6); +} +}),new objj_method(sel_getUid("_sendDocumentSavedNotification:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_bc){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentDidSaveNotification,_ba); +}else{ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentDidFailToSaveNotification,_ba); +} +} +})]); +var _2=objj_getClass("CPDocument"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocument\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("close"),function(_bd,_be){ +with(_bd){ +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("removeDocumentAndCloseIfNecessary:"),_bd); +objj_msgSend(objj_msgSend(CPDocumentController,"sharedDocumentController"),"removeDocument:",_bd); +} +}),new objj_method(sel_getUid("shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:"),function(_bf,_c0,_c1,_c2,_c3,_c4){ +with(_bf){ +if(objj_msgSend(_c1,"shouldCloseDocument")||(objj_msgSend(_windowControllers,"count")<2&&objj_msgSend(_windowControllers,"indexOfObject:",_c1)!==CPNotFound)){ +objj_msgSend(_bf,"canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",_bf,sel_getUid("_document:shouldClose:context:"),{delegate:_c2,selector:_c3,context:_c4}); +}else{ +if(objj_msgSend(_c2,"respondsToSelector:",_c3)){ +objj_msgSend(_c2,_c3,_bf,YES,_c4); +} +} +} +}),new objj_method(sel_getUid("_document:shouldClose:context:"),function(_c5,_c6,_c7,_c8,_c9){ +with(_c5){ +if(_c7===_c5&&_c8){ +objj_msgSend(_c5,"close"); +} +objj_msgSend(_c9.delegate,_c9.selector,_c7,_c8,_c9.context); +} +}),new objj_method(sel_getUid("canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:"),function(_ca,_cb,_cc,_cd,_ce){ +with(_ca){ +if(!objj_msgSend(_ca,"isDocumentEdited")){ +return objj_msgSend(_cc,"respondsToSelector:",_cd)&&objj_msgSend(_cc,_cd,_ca,YES,_ce); +} +_canCloseAlert=objj_msgSend(objj_msgSend(CPAlert,"alloc"),"init"); +objj_msgSend(_canCloseAlert,"setDelegate:",_ca); +objj_msgSend(_canCloseAlert,"setAlertStyle:",CPWarningAlertStyle); +objj_msgSend(_canCloseAlert,"setTitle:","Unsaved Document"); +objj_msgSend(_canCloseAlert,"setMessageText:","Do you want to save the changes you've made to the document \""+(objj_msgSend(_ca,"displayName")||objj_msgSend(_ca,"fileName"))+"\"?"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Save"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Cancel"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Don't Save"); +_canCloseAlert._context={delegate:_cc,selector:_cd,context:_ce}; +objj_msgSend(_canCloseAlert,"runModal"); +} +}),new objj_method(sel_getUid("alertDidEnd:returnCode:"),function(_cf,_d0,_d1,_d2){ +with(_cf){ +if(_d1!==_canCloseAlert){ +return; +} +var _d3=_d1._context.delegate,_d4=_d1._context.selector,_d5=_d1._context.context; +if(_d2===0){ +objj_msgSend(_cf,"saveDocumentWithDelegate:didSaveSelector:contextInfo:",_d3,_d4,_d5); +}else{ +objj_msgSend(_d3,_d4,_cf,_d2===2,_d5); +} +_canCloseAlert=nil; +} +})]); +var _60=function(_d6,_d7,_d8,_d9){ +return {fileType:_d6,delegate:_d7,didReadSelector:_d8,contextInfo:_d9}; +}; +var _71=function(_da,_db,_dc,_dd,_de,_df,_e0){ +return {absoluteURL:_da,saveOperation:_db,changeCount:_dc,delegate:_dd,didSaveSelector:_de,contextInfo:_df,connection:_e0}; +}; +p;22;CPDocumentController.jt;9691;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPBundle.ji;12;CPDocument.ji;13;CPOpenPanel.jt;9585; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CPDocument.j",YES); +objj_executeFile("CPOpenPanel.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPDocumentController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_documents"),new objj_ivar("_documentTypes")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPDocumentController").super_class},"init"); +if(_4){ +_documents=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"); +if(!_1){ +_1=_4; +} +_documentTypes=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleDocumentTypes"); +} +return _4; +} +}),new objj_method(sel_getUid("documentForURL:"),function(_6,_7,_8){ +with(_6){ +var _9=0,_a=objj_msgSend(_documents,"count"); +for(;_9<_a;++_9){ +var _b=_documents[_9]; +if(objj_msgSend(objj_msgSend(_b,"fileURL"),"isEqual:",_8)){ +return _b; +} +} +return nil; +} +}),new objj_method(sel_getUid("openUntitledDocumentOfType:display:"),function(_c,_d,_e,_f){ +with(_c){ +var _10=objj_msgSend(_c,"makeUntitledDocumentOfType:error:",_e,nil); +if(_10){ +objj_msgSend(_c,"addDocument:",_10); +} +if(_f){ +objj_msgSend(_10,"makeWindowControllers"); +objj_msgSend(_10,"showWindows"); +} +return _10; +} +}),new objj_method(sel_getUid("makeUntitledDocumentOfType:error:"),function(_11,_12,_13,_14){ +with(_11){ +return objj_msgSend(objj_msgSend(objj_msgSend(_11,"documentClassForType:",_13),"alloc"),"initWithType:error:",_13,_14); +} +}),new objj_method(sel_getUid("openDocumentWithContentsOfURL:display:error:"),function(_15,_16,_17,_18,_19){ +with(_15){ +var _1a=objj_msgSend(_15,"documentForURL:",_17); +if(!_1a){ +var _1b=objj_msgSend(_15,"typeForContentsOfURL:error:",_17,_19); +_1a=objj_msgSend(_15,"makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_17,_1b,_15,sel_getUid("document:didRead:contextInfo:"),objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_18,"shouldDisplay")); +objj_msgSend(_15,"addDocument:",_1a); +if(_1a){ +objj_msgSend(_15,"noteNewRecentDocument:",_1a); +} +}else{ +if(_18){ +objj_msgSend(_1a,"showWindows"); +} +} +return _1a; +} +}),new objj_method(sel_getUid("reopenDocumentForURL:withContentsOfURL:error:"),function(_1c,_1d,_1e,_1f,_20){ +with(_1c){ +return objj_msgSend(_1c,"makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_1e,_1f,objj_msgSend(objj_msgSend(_documentTypes,"objectAtIndex:",0),"objectForKey:","CPBundleTypeName"),_1c,sel_getUid("document:didRead:contextInfo:"),nil); +} +}),new objj_method(sel_getUid("makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_21,_22,_23,_24,_25,_26,_27){ +with(_21){ +return objj_msgSend(objj_msgSend(objj_msgSend(_21,"documentClassForType:",_24),"alloc"),"initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_23,_24,_25,_26,_27); +} +}),new objj_method(sel_getUid("makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_28,_29,_2a,_2b,_2c,_2d,_2e,_2f){ +with(_28){ +return objj_msgSend(objj_msgSend(objj_msgSend(_28,"documentClassForType:",_2c),"alloc"),"initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_2a,_2b,_2c,_2d,_2e,_2f); +} +}),new objj_method(sel_getUid("document:didRead:contextInfo:"),function(_30,_31,_32,_33,_34){ +with(_30){ +if(!_33){ +return; +} +objj_msgSend(_32,"makeWindowControllers"); +if(objj_msgSend(_34,"objectForKey:","shouldDisplay")){ +objj_msgSend(_32,"showWindows"); +} +} +}),new objj_method(sel_getUid("newDocument:"),function(_35,_36,_37){ +with(_35){ +objj_msgSend(_35,"openUntitledDocumentOfType:display:",objj_msgSend(objj_msgSend(_documentTypes,"objectAtIndex:",0),"objectForKey:","CPBundleTypeName"),YES); +} +}),new objj_method(sel_getUid("openDocument:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(CPOpenPanel,"openPanel"); +objj_msgSend(_3b,"runModal"); +var _3c=objj_msgSend(_3b,"URLs"),_3d=0,_3e=objj_msgSend(_3c,"count"); +for(;_3d<_3e;++_3d){ +objj_msgSend(_38,"openDocumentWithContentsOfURL:display:error:",objj_msgSend(CPURL,"URLWithString:",_3c[_3d]),YES,nil); +} +} +}),new objj_method(sel_getUid("documents"),function(_3f,_40){ +with(_3f){ +return _documents; +} +}),new objj_method(sel_getUid("addDocument:"),function(_41,_42,_43){ +with(_41){ +objj_msgSend(_documents,"addObject:",_43); +} +}),new objj_method(sel_getUid("removeDocument:"),function(_44,_45,_46){ +with(_44){ +objj_msgSend(_documents,"removeObjectIdenticalTo:",_46); +} +}),new objj_method(sel_getUid("defaultType"),function(_47,_48){ +with(_47){ +return objj_msgSend(_documentTypes[0],"objectForKey:","CPBundleTypeName"); +} +}),new objj_method(sel_getUid("typeForContentsOfURL:error:"),function(_49,_4a,_4b,_4c){ +with(_49){ +var _4d=0,_4e=_documentTypes.length,_4f=objj_msgSend(objj_msgSend(_4b,"pathExtension"),"lowercaseString"),_50=nil; +for(;_4d<_4e;++_4d){ +var _51=_documentTypes[_4d],_52=objj_msgSend(_51,"objectForKey:","CFBundleTypeExtensions"),_53=0,_54=_52.length; +for(;_53<_54;++_53){ +var _55=objj_msgSend(_52[_53],"lowercaseString"); +if(_55===_4f){ +return objj_msgSend(_51,"objectForKey:","CPBundleTypeName"); +} +if(_55==="****"){ +_50=objj_msgSend(_51,"objectForKey:","CPBundleTypeName"); +} +} +} +return _50||objj_msgSend(_49,"defaultType"); +} +}),new objj_method(sel_getUid("_infoForType:"),function(_56,_57,_58){ +with(_56){ +var i=0,_59=objj_msgSend(_documentTypes,"count"); +for(;i<_59;++i){ +var _5a=_documentTypes[i]; +if(objj_msgSend(_5a,"objectForKey:","CPBundleTypeName")==_58){ +return _5a; +} +} +return nil; +} +}),new objj_method(sel_getUid("documentClassForType:"),function(_5b,_5c,_5d){ +with(_5b){ +var _5e=objj_msgSend(objj_msgSend(_5b,"_infoForType:",_5d),"objectForKey:","CPDocumentClass"); +return _5e?CPClassFromString(_5e):nil; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("sharedDocumentController"),function(_5f,_60){ +with(_5f){ +if(!_1){ +objj_msgSend(objj_msgSend(_5f,"alloc"),"init"); +} +return _1; +} +})]); +var _2=objj_getClass("CPDocumentController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:"),function(_61,_62,_63,_64,_65){ +with(_61){ +var _66={delegate:_63,selector:_64,context:_65}; +objj_msgSend(_61,"_closeDocumentsStartingWith:shouldClose:context:",nil,YES,_66); +} +}),new objj_method(sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"),function(_67,_68,_69,_6a,_6b){ +with(_67){ +if(_6a){ +objj_msgSend(_69,"close"); +if(objj_msgSend(objj_msgSend(_67,"documents"),"count")>0){ +objj_msgSend(objj_msgSend(objj_msgSend(_67,"documents"),"lastObject"),"canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",_67,sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"),_6b); +return; +} +} +if(objj_msgSend(_6b.delegate,"respondsToSelector:",_6b.selector)){ +objj_msgSend(_6b.delegate,_6b.selector,_67,objj_msgSend(objj_msgSend(_67,"documents"),"count")===0,_6b.context); +} +} +})]); +var _2=objj_getClass("CPDocumentController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("recentDocumentURLs"),function(_6c,_6d){ +with(_6c){ +if(typeof window["cpRecentDocumentURLs"]==="function"){ +return window.cpRecentDocumentURLs(); +} +return []; +} +}),new objj_method(sel_getUid("clearRecentDocuments:"),function(_6e,_6f,_70){ +with(_6e){ +if(typeof window["cpClearRecentDocuments"]==="function"){ +window.cpClearRecentDocuments(); +} +objj_msgSend(_6e,"_updateRecentDocumentsMenu"); +} +}),new objj_method(sel_getUid("noteNewRecentDocument:"),function(_71,_72,_73){ +with(_71){ +objj_msgSend(_71,"noteNewRecentDocumentURL:",objj_msgSend(objj_msgSend(_73,"fileURL"),"absoluteString")); +} +}),new objj_method(sel_getUid("noteNewRecentDocumentURL:"),function(_74,_75,_76){ +with(_74){ +if(typeof window["cpNoteNewRecentDocumentPath"]==="function"){ +window.cpNoteNewRecentDocumentPath(_76); +} +objj_msgSend(_74,"_updateRecentDocumentsMenu"); +} +}),new objj_method(sel_getUid("_removeAllRecentDocumentsFromMenu:"),function(_77,_78,_79){ +with(_77){ +var _7a=objj_msgSend(_79,"itemArray"),_7b=objj_msgSend(_7a,"count"); +while(_7b--){ +var _7c=_7a[_7b]; +if(objj_msgSend(_7c,"action")===sel_getUid("_openRecentDocument:")){ +objj_msgSend(_79,"removeItemAtIndex:",_7b); +} +} +} +}),new objj_method(sel_getUid("_updateRecentDocumentsMenu"),function(_7d,_7e){ +with(_7d){ +var _7f=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"_menuWithName:","_CPRecentDocumentsMenu"),_80=objj_msgSend(_7d,"recentDocumentURLs"),_81=objj_msgSend(_7f,"itemArray"),_82=objj_msgSend(_80,"count"),_83=objj_msgSend(_81,"count"); +objj_msgSend(_7d,"_removeAllRecentDocumentsFromMenu:",_7f); +if(_83){ +if(!_82){ +if(objj_msgSend(_81[0],"isSeparatorItem")){ +objj_msgSend(_7f,"removeItemAtIndex:",0); +} +}else{ +if(!objj_msgSend(_81[0],"isSeparatorItem")){ +objj_msgSend(_7f,"insertItem:atIndex:",objj_msgSend(CPMenuItem,"separatorItem"),0); +} +} +} +while(_82--){ +var _84=_80[_82],_85=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",objj_msgSend(_84,"lastPathComponent"),sel_getUid("_openRecentDocument:"),nil); +objj_msgSend(_85,"setTag:",_84); +objj_msgSend(_7f,"insertItem:atIndex:",_85,0); +} +} +}),new objj_method(sel_getUid("_openRecentDocument:"),function(_86,_87,_88){ +with(_86){ +objj_msgSend(_86,"openDocumentWithContentsOfURL:display:error:",objj_msgSend(_88,"tag"),YES,nil); +} +})]); +p;14;CPDragServer.jt;14787;@STATIC;1.0;I;15;AppKit/CPView.jI;16;AppKit/CPEvent.jI;21;AppKit/CPPasteboard.jI;20;AppKit/CPImageView.jt;14675; +objj_executeFile("AppKit/CPView.j",NO); +objj_executeFile("AppKit/CPEvent.j",NO); +objj_executeFile("AppKit/CPPasteboard.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +CPDragOperationNone=0,CPDragOperationCopy=1<<1,CPDragOperationLink=1<<1,CPDragOperationGeneric=1<<2,CPDragOperationPrivate=1<<3,CPDragOperationMove=1<<4,CPDragOperationDelete=1<<5,CPDragOperationEvery=-1; +var _1=nil,_2=0.05; +var _3=nil; +var _4=nil; +var _5=nil; +var _6=objj_allocateClassPair(CPObject,"CPDraggingInfo"),_7=_6.isa; +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("draggingPasteboard"),function(_8,_9){ +with(_8){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +return objj_msgSend(_CPDOMDataTransferPasteboard,"DOMDataTransferPasteboard"); +} +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingPasteboard"); +} +}),new objj_method(sel_getUid("draggingSource"),function(_a,_b){ +with(_a){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingSource"); +} +}),new objj_method(sel_getUid("draggingLocation"),function(_c,_d){ +with(_c){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingLocation"); +} +}),new objj_method(sel_getUid("draggingDestinationWindow"),function(_e,_f){ +with(_e){ +return (objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"),"isKindOfClass:",objj_msgSend(CPWindow,"class"))?objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"):objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"),"window")); +} +}),new objj_method(sel_getUid("draggedImage"),function(_10,_11){ +with(_10){ +return objj_msgSend(objj_msgSend(_10,"draggedView"),"image"); +} +}),new objj_method(sel_getUid("draggedImageLocation"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"draggedViewLocation"); +} +}),new objj_method(sel_getUid("draggedView"),function(_14,_15){ +with(_14){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggedView"); +} +}),new objj_method(sel_getUid("draggedViewLocation"),function(_16,_17){ +with(_16){ +var _18=objj_msgSend(CPDragServer,"sharedDragServer"); +return objj_msgSend((objj_msgSend(objj_msgSend(_18,"draggingDestination"),"isKindOfClass:",objj_msgSend(CPWindow,"class"))?objj_msgSend(_18,"draggingDestination"):objj_msgSend(objj_msgSend(_18,"draggingDestination"),"window")),"convertPlatformWindowToBase:",objj_msgSend(objj_msgSend(_18,"draggedView"),"frame").origin); +} +})]); +var _19=1<<0,_1a=1<<1,_1b=1<<2,_1c=1<<3; +var _6=objj_allocateClassPair(CPObject,"CPDragServer"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_isDragging"),new objj_ivar("_draggedWindow"),new objj_ivar("_draggedView"),new objj_ivar("_imageView"),new objj_ivar("_isDraggingImage"),new objj_ivar("_draggingOffset"),new objj_ivar("_draggingPasteboard"),new objj_ivar("_draggingSource"),new objj_ivar("_implementedDraggingSourceMethods"),new objj_ivar("_draggingLocation"),new objj_ivar("_draggingDestination"),new objj_ivar("_draggingDestinationWantsPeriodicUpdates"),new objj_ivar("_startDragLocation"),new objj_ivar("_shouldSlideBack"),new objj_ivar("_dragOperation"),new objj_ivar("_draggingUpdateTimer")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("isDragging"),function(_1d,_1e){ +with(_1d){ +return _isDragging; +} +}),new objj_method(sel_getUid("draggedWindow"),function(_1f,_20){ +with(_1f){ +return _draggedWindow; +} +}),new objj_method(sel_getUid("draggedView"),function(_21,_22){ +with(_21){ +return _draggedView; +} +}),new objj_method(sel_getUid("draggingOffset"),function(_23,_24){ +with(_23){ +return _draggingOffset; +} +}),new objj_method(sel_getUid("draggingPasteboard"),function(_25,_26){ +with(_25){ +return _draggingPasteboard; +} +}),new objj_method(sel_getUid("draggingSource"),function(_27,_28){ +with(_27){ +return _draggingSource; +} +}),new objj_method(sel_getUid("init"),function(_29,_2a){ +with(_29){ +_29=objj_msgSendSuper({receiver:_29,super_class:objj_getClass("CPDragServer").super_class},"init"); +if(_29){ +_draggedWindow=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",{origin:{x:0,y:0},size:{width:0,height:0}},CPBorderlessWindowMask); +objj_msgSend(_draggedWindow,"setLevel:",CPDraggingWindowLevel); +} +return _29; +} +}),new objj_method(sel_getUid("draggingDestination"),function(_2b,_2c){ +with(_2b){ +return _draggingDestination; +} +}),new objj_method(sel_getUid("draggingLocation"),function(_2d,_2e){ +with(_2d){ +return _draggingLocation; +} +}),new objj_method(sel_getUid("draggingStartedInPlatformWindow:globalLocation:"),function(_2f,_30,_31,_32){ +with(_2f){ +if(_isDraggingImage){ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:beganAt:"))){ +objj_msgSend(_draggingSource,"draggedImage:beganAt:",objj_msgSend(_draggedView,"image"),_32); +} +}else{ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:beganAt:"))){ +objj_msgSend(_draggingSource,"draggedView:beganAt:",_draggedView,_32); +} +} +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"orderFront:",_2f); +} +} +}),new objj_method(sel_getUid("draggingSourceUpdatedWithGlobalLocation:"),function(_33,_34,_35){ +with(_33){ +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"setFrameOrigin:",{x:_35.x-_draggingOffset.width,y:_35.y-_draggingOffset.height}); +} +if(_implementedDraggingSourceMethods&_19){ +objj_msgSend(_draggingSource,"draggedImage:movedTo:",objj_msgSend(_draggedView,"image"),_35); +}else{ +if(_implementedDraggingSourceMethods&_1b){ +objj_msgSend(_draggingSource,"draggedView:movedTo:",_draggedView,_35); +} +} +} +}),new objj_method(sel_getUid("draggingUpdatedInPlatformWindow:location:"),function(_36,_37,_38,_39){ +with(_36){ +objj_msgSend(_draggingUpdateTimer,"invalidate"); +_draggingUpdateTimer=nil; +var _3a=CPDragOperationCopy; +var _3b=objj_msgSend(_38,"_dragHitTest:pasteboard:",_39,objj_msgSend(_5,"draggingPasteboard")); +if(_3b){ +_draggingLocation=objj_msgSend((objj_msgSend(_3b,"isKindOfClass:",objj_msgSend(CPWindow,"class"))?_3b:objj_msgSend(_3b,"window")),"convertPlatformWindowToBase:",_39); +} +if(_3b!==_draggingDestination){ +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingExited:"))){ +objj_msgSend(_draggingDestination,"draggingExited:",_5); +} +_draggingDestination=_3b; +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("wantsPeriodicDraggingUpdates"))){ +_draggingDestinationWantsPeriodicUpdates=objj_msgSend(_draggingDestination,"wantsPeriodicDraggingUpdates"); +}else{ +_draggingDestinationWantsPeriodicUpdates=YES; +} +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingEntered:"))){ +_3a=objj_msgSend(_draggingDestination,"draggingEntered:",_5); +} +}else{ +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingUpdated:"))){ +_3a=objj_msgSend(_draggingDestination,"draggingUpdated:",_5); +} +} +if(!_draggingDestination){ +_3a=CPDragOperationNone; +}else{ +if(_draggingDestinationWantsPeriodicUpdates){ +_draggingUpdateTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",_2,_36,sel_getUid("_sendPeriodicDraggingUpdate:"),objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{platformWindow:_38,location:_39}),NO); +} +var _3c=objj_msgSend(_draggingDestination,"isKindOfClass:",objj_msgSend(CPView,"class"))?objj_msgSend(_draggingDestination,"enclosingScrollView"):nil; +if(_3c){ +var _3d=objj_msgSend(_3c,"contentView"),_3e=objj_msgSend(_3d,"bounds"),_3f=CGRectInset(_3e,10,10),_40=objj_msgSend(_3d,"convertPoint:fromView:",_draggingLocation,nil),_41=0,_42=0; +if(!CGRectContainsPoint(_3f,_40)){ +if(objj_msgSend(_3c,"hasVerticalScroller")){ +if(_40.y<CGRectGetMinY(_3f)){ +_42=CGRectGetMinY(_3f)-_40.y; +}else{ +if(_40.y>CGRectGetMaxY(_3f)){ +_42=CGRectGetMaxY(_3f)-_40.y; +} +} +if(_42<-_3f.size.height){ +_42=-_3f.size.height; +} +if(_42>_3f.size.height){ +_42=_3f.size.height; +} +} +if(objj_msgSend(_3c,"hasHorizontalScroller")){ +if(_40.x<CGRectGetMinX(_3f)){ +_41=CGRectGetMinX(_3f)-_40.x; +}else{ +if(_40.x>CGRectGetMaxX(_3f)){ +_41=CGRectGetMaxX(_3f)-_40.x; +} +} +if(_41<-_3f.size.width){ +_41=-_3f.size.width; +} +if(_41>_3f.size.width){ +_41=_3f.size.width; +} +} +objj_msgSend(_3d,"scrollToPoint:",CGPointMake(_3e.origin.x-_41,_3e.origin.y-_42)); +} +} +} +return _3a; +} +}),new objj_method(sel_getUid("_sendPeriodicDraggingUpdate:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_45,"userInfo"); +_dragOperation=objj_msgSend(_43,"draggingUpdatedInPlatformWindow:location:",objj_msgSend(_46,"objectForKey:","platformWindow"),objj_msgSend(_46,"objectForKey:","location")); +} +}),new objj_method(sel_getUid("draggingEndedInPlatformWindow:globalLocation:operation:"),function(_47,_48,_49,_4a,_4b){ +with(_47){ +objj_msgSend(_draggingUpdateTimer,"invalidate"); +_draggingUpdateTimer=nil; +objj_msgSend(_draggedView,"removeFromSuperview"); +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"orderOut:",_47); +} +if(_implementedDraggingSourceMethods&_1a){ +objj_msgSend(_draggingSource,"draggedImage:endedAt:operation:",objj_msgSend(_draggedView,"image"),_4a,_4b); +}else{ +if(_implementedDraggingSourceMethods&_1c){ +objj_msgSend(_draggingSource,"draggedView:endedAt:operation:",_draggedView,_4a,_4b); +} +} +_isDragging=NO; +} +}),new objj_method(sel_getUid("performDragOperationInPlatformWindow:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_draggingDestination&&(!objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("prepareForDragOperation:"))||objj_msgSend(_draggingDestination,"prepareForDragOperation:",_5))&&(!objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("performDragOperation:"))||objj_msgSend(_draggingDestination,"performDragOperation:",_5))&&objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("concludeDragOperation:"))){ +objj_msgSend(_draggingDestination,"concludeDragOperation:",_5); +} +} +}),new objj_method(sel_getUid("dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:"),function(_4f,_50,_51,_52,_53,_54,_55,_56,_57,_58){ +with(_4f){ +_isDragging=YES; +_draggedView=_51; +_draggingPasteboard=_56||objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard); +_draggingSource=_57; +_draggingDestination=nil; +_shouldSlideBack=_58; +var _59=objj_msgSend(_55,"window"),_5a=objj_msgSend(_55,"locationInWindow"); +if(_5a){ +if(_59){ +_5a=objj_msgSend(_59,"convertBaseToGlobal:",_5a); +} +_draggingOffset={width:_5a.x-_53.x,height:_5a.y-_53.y}; +}else{ +_draggingOffset={width:0,height:0}; +} +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_draggedWindow,"setPlatformWindow:",objj_msgSend(_52,"platformWindow")); +} +objj_msgSend(_51,"setFrameOrigin:",{x:0,y:0}); +var _5b=objj_msgSend(CPEvent,"mouseLocation"); +_startDragLocation={x:_5b.x-_draggingOffset.width,y:_5b.y-_draggingOffset.height}; +objj_msgSend(_draggedWindow,"setFrameOrigin:",_startDragLocation); +objj_msgSend(_draggedWindow,"setFrameSize:",objj_msgSend(_51,"frame").size); +objj_msgSend(objj_msgSend(_draggedWindow,"contentView"),"addSubview:",_51); +_implementedDraggingSourceMethods=0; +if(_draggedView===_imageView){ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:movedTo:"))){ +_implementedDraggingSourceMethods|=_19; +} +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:endedAt:operation:"))){ +_implementedDraggingSourceMethods|=_1a; +} +}else{ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:movedTo:"))){ +_implementedDraggingSourceMethods|=_1b; +} +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:endedAt:operation:"))){ +_implementedDraggingSourceMethods|=_1c; +} +} +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_4f,"draggingStartedInPlatformWindow:globalLocation:",objj_msgSend(_52,"platformWindow"),_5b); +objj_msgSend(_4f,"trackDragging:",_55); +} +} +}),new objj_method(sel_getUid("dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:"),function(_5c,_5d,_5e,_5f,_60,_61,_62,_63,_64,_65){ +with(_5c){ +_isDraggingImage=YES; +var _66=objj_msgSend(_5e,"size"); +if(!_imageView){ +_imageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:_66.width,height:_66.height}}); +} +objj_msgSend(_imageView,"setImage:",_5e); +objj_msgSend(_5c,"dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:",_imageView,_5f,_60,_61,_62,_63,_64,_65); +} +}),new objj_method(sel_getUid("trackDragging:"),function(_67,_68,_69){ +with(_67){ +var _6a=objj_msgSend(_69,"type"),_6b=objj_msgSend(_draggedWindow,"platformWindow"),_6c=objj_msgSend(objj_msgSend(_69,"window"),"convertBaseToPlatformWindow:",objj_msgSend(_69,"locationInWindow")); +if(_6a===CPLeftMouseUp){ +if(_dragOperation!==CPDragOperationNone){ +objj_msgSend(_67,"performDragOperationInPlatformWindow:",_6b); +} +objj_msgSend(_67,"draggingEndedInPlatformWindow:globalLocation:operation:",_6b,_6c,_dragOperation); +return; +}else{ +if(_6a===CPKeyDown){ +var _6d=objj_msgSend(_69,"keyCode"); +if(_6d===CPEscapeKeyCode){ +_dragOperation=CPDragOperationNone; +objj_msgSend(_67,"draggingEndedInPlatformWindow:globalLocation:operation:",_6b,CGPointMakeZero(),_dragOperation); +return; +} +}else{ +objj_msgSend(_67,"draggingSourceUpdatedWithGlobalLocation:",_6c); +_dragOperation=objj_msgSend(_67,"draggingUpdatedInPlatformWindow:location:",_6b,_6c); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_67,sel_getUid("trackDragging:"),CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPKeyDownMask,nil,0,NO); +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("initialize"),function(_6e,_6f){ +with(_6e){ +if(_6e!==objj_msgSend(CPDragServer,"class")){ +return; +} +_5=objj_msgSend(objj_msgSend(CPDraggingInfo,"alloc"),"init"); +} +}),new objj_method(sel_getUid("sharedDragServer"),function(_70,_71){ +with(_70){ +if(!_3){ +_3=objj_msgSend(objj_msgSend(CPDragServer,"alloc"),"init"); +} +return _3; +} +})]); +var _6=objj_getClass("CPWindow"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("_dragHitTest:pasteboard:"),function(_72,_73,_74,_75){ +with(_72){ +if(!_inclusiveRegisteredDraggedTypes){ +return nil; +} +var _76=objj_msgSend(_72,"convertPlatformWindowToBase:",_74),_77=objj_msgSend(_windowView,"hitTest:",_76); +while(_77&&!objj_msgSend(_75,"availableTypeFromArray:",objj_msgSend(_77,"registeredDraggedTypes"))){ +_77=objj_msgSend(_77,"superview"); +} +if(_77){ +return _77; +} +if(objj_msgSend(_75,"availableTypeFromArray:",objj_msgSend(_72,"registeredDraggedTypes"))){ +return _72; +} +return nil; +} +})]); +p;9;CPEvent.jt;11899;@STATIC;1.0;I;21;Foundation/CPObject.ji;8;CPText.jt;11841; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPText.j",YES); +CPLeftMouseDown=1; +CPLeftMouseUp=2; +CPRightMouseDown=3; +CPRightMouseUp=4; +CPMouseMoved=5; +CPLeftMouseDragged=6; +CPRightMouseDragged=7; +CPMouseEntered=8; +CPMouseExited=9; +CPKeyDown=10; +CPKeyUp=11; +CPFlagsChanged=12; +CPAppKitDefined=13; +CPSystemDefined=14; +CPApplicationDefined=15; +CPPeriodic=16; +CPCursorUpdate=17; +CPScrollWheel=22; +CPOtherMouseDown=25; +CPOtherMouseUp=26; +CPOtherMouseDragged=27; +CPTouchStart=28; +CPTouchMove=29; +CPTouchEnd=30; +CPTouchCancel=31; +CPAlphaShiftKeyMask=1<<16; +CPShiftKeyMask=1<<17; +CPControlKeyMask=1<<18; +CPAlternateKeyMask=1<<19; +CPCommandKeyMask=1<<20; +CPNumericPadKeyMask=1<<21; +CPHelpKeyMask=1<<22; +CPFunctionKeyMask=1<<23; +CPDeviceIndependentModifierFlagsMask=4294901760; +CPLeftMouseDownMask=1<<CPLeftMouseDown; +CPLeftMouseUpMask=1<<CPLeftMouseUp; +CPRightMouseDownMask=1<<CPRightMouseDown; +CPRightMouseUpMask=1<<CPRightMouseUp; +CPOtherMouseDownMask=1<<CPOtherMouseDown; +CPOtherMouseUpMask=1<<CPOtherMouseUp; +CPMouseMovedMask=1<<CPMouseMoved; +CPLeftMouseDraggedMask=1<<CPLeftMouseDragged; +CPRightMouseDraggedMask=1<<CPRightMouseDragged; +CPOtherMouseDragged=1<<CPOtherMouseDragged; +CPMouseEnteredMask=1<<CPMouseEntered; +CPMouseExitedMask=1<<CPMouseExited; +CPCursorUpdateMask=1<<CPCursorUpdate; +CPKeyDownMask=1<<CPKeyDown; +CPKeyUpMask=1<<CPKeyUp; +CPFlagsChangedMask=1<<CPFlagsChanged; +CPAppKitDefinedMask=1<<CPAppKitDefined; +CPSystemDefinedMask=1<<CPSystemDefined; +CPApplicationDefinedMask=1<<CPApplicationDefined; +CPPeriodicMask=1<<CPPeriodic; +CPScrollWheelMask=1<<CPScrollWheel; +CPAnyEventMask=4294967295; +CPUpArrowFunctionKey=""; +CPDownArrowFunctionKey=""; +CPLeftArrowFunctionKey=""; +CPRightArrowFunctionKey=""; +CPF1FunctionKey=""; +CPF2FunctionKey=""; +CPF3FunctionKey=""; +CPF4FunctionKey=""; +CPF5FunctionKey=""; +CPF6FunctionKey=""; +CPF7FunctionKey=""; +CPF8FunctionKey=""; +CPF9FunctionKey=""; +CPF10FunctionKey=""; +CPF11FunctionKey=""; +CPF12FunctionKey=""; +CPF13FunctionKey=""; +CPF14FunctionKey=""; +CPF15FunctionKey=""; +CPF16FunctionKey=""; +CPF17FunctionKey=""; +CPF18FunctionKey=""; +CPF19FunctionKey=""; +CPF20FunctionKey=""; +CPF21FunctionKey=""; +CPF22FunctionKey=""; +CPF23FunctionKey=""; +CPF24FunctionKey=""; +CPF25FunctionKey=""; +CPF26FunctionKey=""; +CPF27FunctionKey=""; +CPF28FunctionKey=""; +CPF29FunctionKey=""; +CPF30FunctionKey=""; +CPF31FunctionKey=""; +CPF32FunctionKey=""; +CPF33FunctionKey=""; +CPF34FunctionKey=""; +CPF35FunctionKey=""; +CPInsertFunctionKey=""; +CPDeleteFunctionKey=""; +CPHomeFunctionKey=""; +CPBeginFunctionKey=""; +CPEndFunctionKey=""; +CPPageUpFunctionKey=""; +CPPageDownFunctionKey=""; +CPPrintScreenFunctionKey=""; +CPScrollLockFunctionKey=""; +CPPauseFunctionKey=""; +CPSysReqFunctionKey=""; +CPBreakFunctionKey=""; +CPResetFunctionKey=""; +CPStopFunctionKey=""; +CPMenuFunctionKey=""; +CPUserFunctionKey=""; +CPSystemFunctionKey=""; +CPPrintFunctionKey=""; +CPClearLineFunctionKey=""; +CPClearDisplayFunctionKey=""; +CPInsertLineFunctionKey=""; +CPDeleteLineFunctionKey=""; +CPInsertCharFunctionKey=""; +CPDeleteCharFunctionKey=""; +CPPrevFunctionKey=""; +CPNextFunctionKey=""; +CPSelectFunctionKey=""; +CPExecuteFunctionKey=""; +CPUndoFunctionKey=""; +CPRedoFunctionKey=""; +CPFindFunctionKey=""; +CPHelpFunctionKey=""; +CPModeSwitchFunctionKey=""; +CPEscapeFunctionKey=""; +CPDOMEventDoubleClick="dblclick",CPDOMEventMouseDown="mousedown",CPDOMEventMouseUp="mouseup",CPDOMEventMouseMoved="mousemove",CPDOMEventMouseDragged="mousedrag",CPDOMEventKeyUp="keyup",CPDOMEventKeyDown="keydown",CPDOMEventKeyPress="keypress"; +CPDOMEventCopy="copy"; +CPDOMEventPaste="paste"; +CPDOMEventScrollWheel="mousewheel"; +CPDOMEventTouchStart="touchstart"; +CPDOMEventTouchMove="touchmove"; +CPDOMEventTouchEnd="touchend"; +CPDOMEventTouchCancel="touchcancel"; +var _1=0,_2=nil,_3=new RegExp("[A-Z]"); +var _4=objj_allocateClassPair(CPObject,"CPEvent"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_type"),new objj_ivar("_location"),new objj_ivar("_modifierFlags"),new objj_ivar("_timestamp"),new objj_ivar("_context"),new objj_ivar("_eventNumber"),new objj_ivar("_clickCount"),new objj_ivar("_pressure"),new objj_ivar("_window"),new objj_ivar("_windowNumber"),new objj_ivar("_characters"),new objj_ivar("_isARepeat"),new objj_ivar("_keyCode"),new objj_ivar("_DOMEvent"),new objj_ivar("_deltaX"),new objj_ivar("_deltaY"),new objj_ivar("_deltaZ")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("_initMouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:"),function(_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPEvent").super_class},"init"); +if(_6){ +_type=_8; +_location=CPPointCreateCopy(_9); +_modifierFlags=_a; +_timestamp=_b; +_context=_d; +_eventNumber=_e; +_clickCount=_f; +_pressure=_10; +_window=objj_msgSend(CPApp,"windowWithWindowNumber:",_c); +} +return _6; +} +}),new objj_method(sel_getUid("_initKeyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:"),function(_11,_12,_13,_14,_15,_16,_17,_18,_19,_1a,_1b,_1c){ +with(_11){ +_11=objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPEvent").super_class},"init"); +if(_11){ +_type=_13; +_location=CPPointCreateCopy(_14); +_modifierFlags=_15; +_timestamp=_16; +_context=_18; +_characters=_19; +_charactersIgnoringModifiers=_1a; +_isARepeat=_1b; +_keyCode=_1c; +_windowNumber=_17; +} +return _11; +} +}),new objj_method(sel_getUid("_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:"),function(_1d,_1e,_1f,_20,_21,_22,_23,_24,_25,_26,_27){ +with(_1d){ +_1d=objj_msgSendSuper({receiver:_1d,super_class:objj_getClass("CPEvent").super_class},"init"); +if(_1d){ +_type=_1f; +_location=CPPointCreateCopy(_20); +_modifierFlags=_21; +_timestamp=_22; +_context=_24; +_subtype=_25; +_data1=_26; +_data2=_27; +} +return _1d; +} +}),new objj_method(sel_getUid("locationInWindow"),function(_28,_29){ +with(_28){ +return {x:_location.x,y:_location.y}; +} +}),new objj_method(sel_getUid("globalLocation"),function(_2a,_2b){ +with(_2a){ +var _2c=objj_msgSend(_2a,"window"),_2d=objj_msgSend(_2a,"locationInWindow"); +if(_2c){ +return objj_msgSend(_2c,"convertBaseToGlobal:",_2d); +} +return _2d; +} +}),new objj_method(sel_getUid("modifierFlags"),function(_2e,_2f){ +with(_2e){ +return _modifierFlags; +} +}),new objj_method(sel_getUid("timestamp"),function(_30,_31){ +with(_30){ +return _timestamp; +} +}),new objj_method(sel_getUid("type"),function(_32,_33){ +with(_32){ +return _type; +} +}),new objj_method(sel_getUid("window"),function(_34,_35){ +with(_34){ +if(!_window){ +_window=objj_msgSend(CPApp,"windowWithWindowNumber:",_windowNumber); +} +return _window; +} +}),new objj_method(sel_getUid("windowNumber"),function(_36,_37){ +with(_36){ +return _windowNumber; +} +}),new objj_method(sel_getUid("buttonNumber"),function(_38,_39){ +with(_38){ +if(_type===CPRightMouseDown||_type===CPRightMouseUp||_type===CPRightMouseDragged){ +return 1; +} +return 0; +} +}),new objj_method(sel_getUid("clickCount"),function(_3a,_3b){ +with(_3a){ +return _clickCount; +} +}),new objj_method(sel_getUid("characters"),function(_3c,_3d){ +with(_3c){ +return _characters; +} +}),new objj_method(sel_getUid("charactersIgnoringModifiers"),function(_3e,_3f){ +with(_3e){ +return _charactersIgnoringModifiers; +} +}),new objj_method(sel_getUid("isARepeat"),function(_40,_41){ +with(_40){ +return _isARepeat; +} +}),new objj_method(sel_getUid("keyCode"),function(_42,_43){ +with(_42){ +return _keyCode; +} +}),new objj_method(sel_getUid("pressure"),function(_44,_45){ +with(_44){ +return _pressure; +} +}),new objj_method(sel_getUid("_DOMEvent"),function(_46,_47){ +with(_46){ +return _DOMEvent; +} +}),new objj_method(sel_getUid("deltaX"),function(_48,_49){ +with(_48){ +return _deltaX; +} +}),new objj_method(sel_getUid("deltaY"),function(_4a,_4b){ +with(_4a){ +return _deltaY; +} +}),new objj_method(sel_getUid("deltaZ"),function(_4c,_4d){ +with(_4c){ +return _deltaZ; +} +}),new objj_method(sel_getUid("_triggersKeyEquivalent:withModifierMask:"),function(_4e,_4f,_50,_51){ +with(_4e){ +if(!_50){ +return NO; +} +if(_3.test(_50)){ +_51|=CPShiftKeyMask; +} +if(CPBrowserIsOperatingSystem(CPWindowsOperatingSystem)&&(_51&CPCommandKeyMask)){ +_51|=CPControlKeyMask; +_51&=~CPCommandKeyMask; +} +if((_modifierFlags&(CPShiftKeyMask|CPAlternateKeyMask|CPCommandKeyMask|CPControlKeyMask))!==_51){ +return NO; +} +if(_characters===CPNewlineCharacter||_characters===CPCarriageReturnCharacter){ +return CPNewlineCharacter===_50||CPCarriageReturnCharacter===_50; +} +return objj_msgSend(_characters,"caseInsensitiveCompare:",_50)===CPOrderedSame; +} +}),new objj_method(sel_getUid("_couldBeKeyEquivalent"),function(_52,_53){ +with(_52){ +if(_type!==CPKeyDown){ +return NO; +} +var _54=_characters.length; +if(!_54){ +return NO; +} +if(_modifierFlags&(CPCommandKeyMask|CPControlKeyMask)){ +return YES; +} +for(var i=0;i<_54;i++){ +switch(_characters.charAt(i)){ +case CPBackspaceCharacter: +case CPDeleteCharacter: +case CPDeleteFunctionKey: +case CPTabCharacter: +case CPCarriageReturnCharacter: +case CPNewlineCharacter: +case CPEscapeFunctionKey: +case CPPageUpFunctionKey: +case CPPageDownFunctionKey: +case CPLeftArrowFunctionKey: +case CPUpArrowFunctionKey: +case CPRightArrowFunctionKey: +case CPDownArrowFunctionKey: +return YES; +} +} +return NO; +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:"),function(_55,_56,_57,_58,_59,_5a,_5b,_5c,_5d,_5e,_5f,_60){ +with(_55){ +return objj_msgSend(objj_msgSend(_55,"alloc"),"_initKeyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",_57,_58,_59,_5a,_5b,_5c,_5d,_5e,_5f,_60); +} +}),new objj_method(sel_getUid("mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:"),function(_61,_62,_63,_64,_65,_66,_67,_68,_69,_6a,_6b){ +with(_61){ +return objj_msgSend(objj_msgSend(_61,"alloc"),"_initMouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_63,_64,_65,_66,_67,_68,_69,_6a,_6b); +} +}),new objj_method(sel_getUid("otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:"),function(_6c,_6d,_6e,_6f,_70,_71,_72,_73,_74,_75,_76){ +with(_6c){ +return objj_msgSend(objj_msgSend(_6c,"alloc"),"_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",_6e,_6f,_70,_71,_72,_73,_74,_75,_76); +} +}),new objj_method(sel_getUid("mouseLocation"),function(_77,_78){ +with(_77){ +var _79=objj_msgSend(CPApp,"currentEvent"),_7a=objj_msgSend(_79,"window"); +if(_7a){ +return objj_msgSend(_7a,"convertBaseToGlobal:",objj_msgSend(_79,"locationInWindow")); +} +return objj_msgSend(_79,"locationInWindow"); +} +}),new objj_method(sel_getUid("startPeriodicEventsAfterDelay:withPeriod:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +_1=_7e; +_2=window.setTimeout(function(){ +_2=window.setInterval(_CPEventFirePeriodEvent,_7e*1000); +},_7d*1000); +} +}),new objj_method(sel_getUid("stopPeriodicEvents"),function(_7f,_80){ +with(_7f){ +if(_2===nil){ +return; +} +window.clearTimeout(_2); +_2=nil; +} +})]); +_CPEventFirePeriodEvent=function(){ +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",CPPeriodic,{x:0,y:0},0,0,0,nil,0,0,0)); +}; +var _81=objj_msgSend(CPEvent,"class"); +_CPEventFromNativeMouseEvent=function(_82,_83,_84,_85,_86,_87,_88,_89,_8a,_8b){ +_82.isa=_81; +_82._type=_83; +_82._location=_84; +_82._modifierFlags=_85; +_82._timestamp=_86; +_82._windowNumber=_87; +_82._window=nil; +_82._context=_88; +_82._eventNumber=_89; +_82._clickCount=_8a; +_82._pressure=_8b; +return _82; +}; +p;14;CPFlashMovie.jt;1223;@STATIC;1.0;I;21;Foundation/CPObject.jt;1178; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPFlashMovie"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_filename")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFile:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPFlashMovie").super_class},"init"); +if(_3){ +_filename=_5; +} +return _3; +} +}),new objj_method(sel_getUid("filename"),function(_6,_7){ +with(_6){ +return _filename; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("flashMovieWithFile:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(objj_msgSend(_8,"alloc"),"initWithFile:",_a); +} +})]); +var _b="CPFlashMovieFilenameKey"; +var _1=objj_getClass("CPFlashMovie"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPFlashMovie\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_c,_d,_e){ +with(_c){ +_filename=objj_msgSend(_e,"decodeObjectForKey:",_b); +return _c; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_11,"encodeObject:forKey:",_filename,_b); +} +})]); +p;13;CPFlashView.jt;4784;@STATIC;1.0;i;14;CPFlashMovie.ji;8;CPView.jt;4734; +objj_executeFile("CPFlashMovie.j",YES); +objj_executeFile("CPView.j",YES); +var _1="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; +var _2=objj_allocateClassPair(CPView,"CPFlashView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_flashMovie"),new objj_ivar("_params"),new objj_ivar("_paramElements"),new objj_ivar("_DOMParamElement"),new objj_ivar("_DOMObjectElement"),new objj_ivar("_DOMInnerObjectElement")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPFlashView").super_class},"initWithFrame:",_6); +if(_4){ +if(!CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +_DOMObjectElement=document.createElement("object"); +_DOMObjectElement.width="100%"; +_DOMObjectElement.height="100%"; +_DOMObjectElement.style.top="0px"; +_DOMObjectElement.style.left="0px"; +_DOMObjectElement.type="application/x-shockwave-flash"; +_DOMObjectElement.setAttribute("classid",_1); +_DOMParamElement=document.createElement("param"); +_DOMParamElement.name="movie"; +_DOMInnerObjectElement=document.createElement("object"); +_DOMInnerObjectElement.width="100%"; +_DOMInnerObjectElement.height="100%"; +_DOMObjectElement.appendChild(_DOMParamElement); +_DOMObjectElement.appendChild(_DOMInnerObjectElement); +_DOMElement.appendChild(_DOMObjectElement); +}else{ +objj_msgSend(_4,"_rebuildIEObjects"); +} +} +return _4; +} +}),new objj_method(sel_getUid("setFlashMovie:"),function(_7,_8,_9){ +with(_7){ +if(_flashMovie==_9){ +return; +} +_flashMovie=_9; +if(!CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +_DOMParamElement.value=objj_msgSend(_9,"filename"); +_DOMInnerObjectElement.data=objj_msgSend(_9,"filename"); +}else{ +objj_msgSend(_7,"_rebuildIEObjects"); +} +} +}),new objj_method(sel_getUid("flashMovie"),function(_a,_b){ +with(_a){ +return _flashMovie; +} +}),new objj_method(sel_getUid("setFlashVars:"),function(_c,_d,_e){ +with(_c){ +var _f="",_10=objj_msgSend(_e,"keyEnumerator"); +var key; +while(key=objj_msgSend(_10,"nextObject")){ +_f=objj_msgSend(_f,"stringByAppendingFormat:","&%@=%@",key,objj_msgSend(_e,"objectForKey:",key)); +} +if(!_params){ +_params=objj_msgSend(CPDictionary,"dictionary"); +} +objj_msgSend(_params,"setObject:forKey:",_f,"flashvars"); +objj_msgSend(_c,"setParameters:",_params); +} +}),new objj_method(sel_getUid("flashVars"),function(_11,_12){ +with(_11){ +return objj_msgSend(_params,"objectForKey:","flashvars"); +} +}),new objj_method(sel_getUid("setParameters:"),function(_13,_14,_15){ +with(_13){ +if(_paramElements&&!CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +var _16=objj_msgSend(_paramElements,"allValues"),_17=objj_msgSend(_16,"count"); +for(var i=0;i<_17;i++){ +_DOMObjectElement.removeChild(objj_msgSend(_16,"objectAtIndex:",i)); +} +} +_params=_15; +if(!CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +_paramElements=objj_msgSend(CPDictionary,"dictionary"); +var _18=objj_msgSend(_params,"keyEnumerator"),key; +while(key=objj_msgSend(_18,"nextObject")&&_DOMObjectElement){ +var _19=document.createElement("param"); +_19.name=key; +_19.value=objj_msgSend(_params,"objectForKey:",key); +_DOMObjectElement.appendChild(_19); +objj_msgSend(_paramElements,"setObject:forKey:",_19,key); +} +}else{ +objj_msgSend(_13,"_rebuildIEObjects"); +} +} +}),new objj_method(sel_getUid("parameters"),function(_1a,_1b){ +with(_1a){ +return _params; +} +}),new objj_method(sel_getUid("_rebuildIEObjects"),function(_1c,_1d){ +with(_1c){ +_DOMElement.innerHTML=""; +if(!objj_msgSend(_flashMovie,"filename")){ +return; +} +var _1e=objj_msgSend(CPString,"stringWithFormat:","<param name='movie' value='%@' />",objj_msgSend(_flashMovie,"filename")),_1f=objj_msgSend(_params,"keyEnumerator"),key; +while(key=objj_msgSend(_1f,"nextObject")){ +_1e=objj_msgSend(_1e,"stringByAppendingFormat:","<param name='%@' value='%@' />",key,objj_msgSend(_params,"objectForKey:",key)); +} +_DOMObjectElement=document.createElement("object"); +_DOMElement.appendChild(_DOMObjectElement); +_DOMObjectElement.outerHTML=objj_msgSend(CPString,"stringWithFormat:","<object classid=%@ width=%@ height=%@>%@</object>",_1,CGRectGetWidth(objj_msgSend(_1c,"bounds")),CGRectGetHeight(objj_msgSend(_1c,"bounds")),_1e); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(objj_msgSend(objj_msgSend(_20,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(objj_msgSend(objj_msgSend(_23,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(objj_msgSend(objj_msgSend(_26,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +})]); +p;8;CPFont.jt;4442;@STATIC;1.0;t;4423; +var _1={},_2="Arial, sans-serif",_3=new RegExp("\\s*,\\s*","g"); +var _4=objj_allocateClassPair(CPObject,"CPFont"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_size"),new objj_ivar("_ascender"),new objj_ivar("_descender"),new objj_ivar("_lineHeight"),new objj_ivar("_isBold"),new objj_ivar("_cssString")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("_initWithName:size:bold:"),function(_6,_7,_8,_9,_a){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPFont").super_class},"init"); +if(_6){ +_name=_8; +_size=_9; +_ascender=0; +_descender=0; +_lineHeight=0; +_isBold=_a; +_cssString=(_isBold?"bold ":"")+ROUND(_size)+"px "+((_name===_2)?_name:("\""+_name.replace(_3,"\", \"")+"\", "+_2)); +_1[_cssString]=_6; +} +return _6; +} +}),new objj_method(sel_getUid("ascender"),function(_b,_c){ +with(_b){ +if(!_ascender){ +objj_msgSend(_b,"_getMetrics"); +} +return _ascender; +} +}),new objj_method(sel_getUid("descender"),function(_d,_e){ +with(_d){ +if(!_descender){ +objj_msgSend(_d,"_getMetrics"); +} +return _descender; +} +}),new objj_method(sel_getUid("defaultLineHeightForFont"),function(_f,_10){ +with(_f){ +if(!_lineHeight){ +objj_msgSend(_f,"_getMetrics"); +} +return _lineHeight; +} +}),new objj_method(sel_getUid("size"),function(_11,_12){ +with(_11){ +return _size; +} +}),new objj_method(sel_getUid("cssString"),function(_13,_14){ +with(_13){ +return _cssString; +} +}),new objj_method(sel_getUid("familyName"),function(_15,_16){ +with(_15){ +return _name; +} +}),new objj_method(sel_getUid("isEqual:"),function(_17,_18,_19){ +with(_17){ +return objj_msgSend(_19,"isKindOfClass:",objj_msgSend(CPFont,"class"))&&objj_msgSend(_19,"cssString")===objj_msgSend(_17,"cssString"); +} +}),new objj_method(sel_getUid("description"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(CPString,"stringWithFormat:","%@ %@ %f pt.",objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("CPFont").super_class},"description"),objj_msgSend(_1a,"familyName"),objj_msgSend(_1a,"size")); +} +}),new objj_method(sel_getUid("_getMetrics"),function(_1c,_1d){ +with(_1c){ +var _1e=objj_msgSend(CPString,"metricsOfFont:",_1c); +_ascender=objj_msgSend(_1e,"objectForKey:","ascender"); +_descender=objj_msgSend(_1e,"objectForKey:","descender"); +_lineHeight=objj_msgSend(_1e,"objectForKey:","lineHeight"); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("initialize"),function(_1f,_20){ +with(_1f){ +var _21=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class")),"objectForInfoDictionaryKey:","CPSystemFontFace"); +if(_21){ +_2=_21; +} +} +}),new objj_method(sel_getUid("fontWithName:size:"),function(_22,_23,_24,_25){ +with(_22){ +return _1[(NO?"bold ":"")+ROUND(_25)+"px "+((_24===_2)?_24:("\""+_24.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_24,_25,NO); +} +}),new objj_method(sel_getUid("boldFontWithName:size:"),function(_26,_27,_28,_29){ +with(_26){ +return _1[(YES?"bold ":"")+ROUND(_29)+"px "+((_28===_2)?_28:("\""+_28.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_28,_29,YES); +} +}),new objj_method(sel_getUid("systemFontOfSize:"),function(_2a,_2b,_2c){ +with(_2a){ +return _1[(NO?"bold ":"")+ROUND(_2c)+"px "+((_2===_2)?_2:("\""+_2.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_2,_2c,NO); +} +}),new objj_method(sel_getUid("boldSystemFontOfSize:"),function(_2d,_2e,_2f){ +with(_2d){ +return _1[(YES?"bold ":"")+ROUND(_2f)+"px "+((_2===_2)?_2:("\""+_2.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_2,_2f,YES); +} +})]); +var _30="CPFontNameKey",_31="CPFontSizeKey",_32="CPFontIsBoldKey"; +var _4=objj_getClass("CPFont"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPFont\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_33,_34,_35){ +with(_33){ +return objj_msgSend(_33,"_initWithName:size:bold:",objj_msgSend(_35,"decodeObjectForKey:",_30),objj_msgSend(_35,"decodeFloatForKey:",_31),objj_msgSend(_35,"decodeBoolForKey:",_32)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_36,_37,_38){ +with(_36){ +objj_msgSend(_38,"encodeObject:forKey:",_name,_30); +objj_msgSend(_38,"encodeFloat:forKey:",_size,_31); +objj_msgSend(_38,"encodeBool:forKey:",_isBold,_32); +} +})]); +p;15;CPFontManager.jt;3322;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPFont.jt;3257; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPFont.j",NO); +var _1=nil,_2=Nil; +var _3=objj_allocateClassPair(CPObject,"CPFontManager"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_availableFonts")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("availableFonts"),function(_5,_6){ +with(_5){ +if(!_availableFonts){ +_7=document.createElement("span"); +_7.fontSize="24px"; +_7.appendChild(document.createTextNode("mmmmmmmmmml")); +var _8=document.createElement("div"); +_8.style.position="absolute"; +_8.style.top="-1000px"; +_8.appendChild(_7); +document.getElementsByTagName("body")[0].appendChild(_8); +_9=_a(["monospace","serif","sans-serif","cursive"]); +_availableFonts=[]; +for(var i=0;i<_b.length;i++){ +var _c=_d(_b[i]); +if(_c){ +_availableFonts.push(_b[i]); +} +} +} +return _availableFonts; +} +}),new objj_method(sel_getUid("fontWithNameIsAvailable:"),function(_e,_f,_10){ +with(_e){ +return _d(_10); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedFontManager"),function(_11,_12){ +with(_11){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(_2,"alloc"),"init"); +} +return _1; +} +}),new objj_method(sel_getUid("setFontManagerFactory:"),function(_13,_14,_15){ +with(_13){ +_2=_15; +} +})]); +var _7,_9,_b=["American Typewriter","Apple Chancery","Arial","Arial Black","Arial Narrow","Arial Rounded MT Bold","Arial Unicode MS","Big Caslon","Bitstream Vera Sans","Bitstream Vera Sans Mono","Bitstream Vera Serif","Brush Script MT","Cambria","Caslon","Castellar","Cataneo BT","Centaur","Century Gothic","Century Schoolbook","Century Schoolbook L","Comic Sans","Comic Sans MS","Consolas","Constantia","Cooper Black","Copperplate","Copperplate Gothic Bold","Copperplate Gothic Light","Corbel","Courier","Courier New","Futura","Geneva","Georgia","Georgia Ref","Geeza Pro","Gigi","Gill Sans","Gill Sans MT","Gill Sans MT Condensed","Gill Sans MT Ext Condensed Bold","Gill Sans Ultra Bold","Gill Sans Ultra Bold Condensed","Helvetica","Helvetica Narrow","Helvetica Neue","Herculanum","High Tower Text","Highlight LET","Hoefler Text","Impact","Imprint MT Shadow","Lucida","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","Lucida Grande","Lucida Handwriting","Lucida Sans","Lucida Sans Typewriter","Lucida Sans Unicode","Marker Felt","Microsoft Sans Serif","Milano LET","Minion Web","MisterEarl BT","Mistral","Monaco","Monotype Corsiva","Monotype.com","New Century Schoolbook","New York","News Gothic MT","Papyrus","Tahoma","Techno","Tempus Sans ITC","Terminal","Textile","Times","Times New Roman","Tiranti Solid LET","Trebuchet MS","Verdana","Verdana Ref","Zapfino"]; +var _d=function(_16){ +for(var i=0;i<_9.length;i++){ +if(_17(_9[i],_16)){ +return true; +} +} +return false; +}; +var _18={}; +var _17=function(_19,_1a){ +var a; +if(_18[_19]){ +a=_18[_19]; +}else{ +_7.style.fontFamily="\""+_19+"\""; +_18[_19]=a={w:_7.offsetWidth,h:_7.offsetHeight}; +} +_7.style.fontFamily="\""+_1a+"\", \""+_19+"\""; +var _1b=_7.offsetWidth; +var _1c=_7.offsetHeight; +return (a.w!=_1b||a.h!=_1c); +}; +var _a=function(_1d){ +for(var i=0;i<_1d.length;i++){ +for(var j=0;j<i;j++){ +if(_17(_1d[i],_1d[j])){ +return [_1d[i],_1d[j]]; +} +} +} +return [_1d[0]]; +}; +objj_msgSend(CPFontManager,"setFontManagerFactory:",objj_msgSend(CPFontManager,"class")); +p;12;CPGeometry.jt;4219;@STATIC;1.0;i;12;CGGeometry.jt;4183; +objj_executeFile("CGGeometry.j",YES); +CPMinXEdge=0; +CPMinYEdge=1; +CPMaxXEdge=2; +CPMaxYEdge=3; +CPMakePoint=CGPointMake; +CPMakeSize=CGSizeMake; +CPMakeRect=CGRectMake; +CPPointCreateCopy=function(_1){ +return {x:_1.x,y:_1.y}; +}; +CPPointMake=function(x,y){ +return {x:x,y:y}; +}; +CPRectInset=function(_2,dX,dY){ +return CPRectMake(_2.origin.x+dX,_2.origin.y+dY,_2.size.width-2*dX,_2.size.height-2*dY); +}; +CPRectIntegral=function(_3){ +alert("CPRectIntegral unimplemented"); +}; +CPRectIntersection=function(_4,_5){ +var _6=CPRectMake(Math.max(CPRectGetMinX(_4),CPRectGetMinX(_5)),Math.max(CPRectGetMinY(_4),CPRectGetMinY(_5)),0,0); +_6.size.width=Math.min(CPRectGetMaxX(_4),CPRectGetMaxX(_5))-CPRectGetMinX(_6); +_6.size.height=Math.min(CPRectGetMaxY(_4),CPRectGetMaxY(_5))-CPRectGetMinY(_6); +return CPRectIsEmpty(_6)?CPRectMakeZero():_6; +}; +CPRectCreateCopy=function(_7){ +return {origin:CPPointCreateCopy(_7.origin),size:CPSizeCreateCopy(_7.size)}; +}; +CPRectMake=function(x,y,_8,_9){ +return {origin:CPPointMake(x,y),size:CPSizeMake(_8,_9)}; +}; +CPRectOffset=function(_a,dX,dY){ +return CPRectMake(_a.origin.x+dX,_a.origin.y+dY,_a.size.width,_a.size.height); +}; +CPRectStandardize=function(_b){ +var _c=CPRectGetWidth(_b),_d=CPRectGetHeight(_b),_e=CPRectCreateCopy(_b); +if(_c<0){ +_e.origin.x+=_c; +_e.size.width=-_c; +} +if(_d<0){ +_e.origin.y+=_d; +_e.size.height=-_d; +} +return _e; +}; +CPRectUnion=function(_f,_10){ +var _11=Math.min(CPRectGetMinX(_f),CPRectGetMinX(_10)),_12=Math.min(CPRectGetMinY(_f),CPRectGetMinY(_10)),_13=Math.max(CPRectGetMaxX(_f),CPRectGetMaxX(_10)),_14=Math.max(CPRectGetMaxY(_f),CPRectGetMaxY(_10)); +return CPRectMake(_11,_12,_13-_11,_14-_12); +}; +CPSizeCreateCopy=function(_15){ +return {width:_15.width,height:_15.height}; +}; +CPSizeMake=function(_16,_17){ +return {width:_16,height:_17}; +}; +CPRectContainsPoint=function(_18,_19){ +return _19.x>=CPRectGetMinX(_18)&&_19.y>=CPRectGetMinY(_18)&&_19.x<CPRectGetMaxX(_18)&&_19.y<CPRectGetMaxY(_18); +}; +CPRectContainsRect=function(_1a,_1b){ +return CGRectContainsRect(_1a,_1b); +}; +CPPointEqualToPoint=function(_1c,_1d){ +return _1c.x==_1d.x&&_1c.y==_1d.y; +}; +CPRectEqualToRect=function(_1e,_1f){ +return CPPointEqualToPoint(_1e.origin,_1f.origin)&&CPSizeEqualToSize(_1e.size,_1f.size); +}; +CPRectGetHeight=function(_20){ +return _20.size.height; +}; +CPRectGetMaxX=function(_21){ +return _21.origin.x+_21.size.width; +}; +CPRectGetMaxY=function(_22){ +return _22.origin.y+_22.size.height; +}; +CPRectGetMidX=function(_23){ +return _23.origin.x+(_23.size.width)/2; +}; +CPRectGetMidY=function(_24){ +return _24.origin.y+(_24.size.height)/2; +}; +CPRectGetMinX=function(_25){ +return _25.origin.x; +}; +CPRectGetMinY=function(_26){ +return _26.origin.y; +}; +CPRectGetWidth=function(_27){ +return _27.size.width; +}; +CPRectIntersectsRect=function(_28,_29){ +return !CPRectIsEmpty(CPRectIntersection(_28,_29)); +}; +CPRectIsEmpty=function(_2a){ +return _2a.size.width<=0||_2a.size.height<=0; +}; +CPRectIsNull=function(_2b){ +return _2b.size.width<=0||_2b.size.height<=0; +}; +CPDivideRect=function(_2c,_2d,rem,_2e,_2f){ +CGRectDivide(_2c,_2d,rem,_2e,_2f); +}; +CPSizeEqualToSize=function(_30,_31){ +return _30.width==_31.width&&_30.height==_31.height; +}; +CPStringFromPoint=function(_32){ +return "{"+_32.x+", "+_32.y+"}"; +}; +CPStringFromSize=function(_33){ +return "{"+_33.width+", "+_33.height+"}"; +}; +CPStringFromRect=function(_34){ +return "{"+CPStringFromPoint(_34.origin)+", "+CPStringFromSize(_34.size)+"}"; +}; +CPPointFromString=function(_35){ +var _36=_35.indexOf(","); +return {x:parseFloat(_35.substr(1,_36-1),10),y:parseFloat(_35.substring(_36+1,_35.length),10)}; +}; +CPSizeFromString=function(_37){ +var _38=_37.indexOf(","); +return {width:parseFloat(_37.substr(1,_38-1),10),height:parseFloat(_37.substring(_38+1,_37.length),10)}; +}; +CPRectFromString=function(_39){ +var _3a=_39.indexOf(",",_39.indexOf(",")+1); +return {origin:CPPointFromString(_39.substr(1,_3a-1)),size:CPSizeFromString(_39.substring(_3a+2,_39.length))}; +}; +CPPointFromEvent=function(_3b){ +return CPPointMake(_3b.clientX,_3b.clientY,0); +}; +CPSizeMakeZero=function(){ +return CPSizeMake(0,0); +}; +CPRectMakeZero=function(){ +return CPRectMake(0,0,0,0); +}; +CPPointMakeZero=function(){ +return CPPointMake(0,0,0); +}; +p;12;CPGraphics.jt;1766;@STATIC;1.0;i;9;CPColor.ji;19;CPGraphicsContext.jt;1710; +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPGraphicsContext.j",YES); +CPDrawTiledRects=function(_1,_2,_3,_4){ +if(_3.length!=_4.length){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"sides (length: "+_3.length+") and grays (length: "+_4.length+") must have the same length."); +} +var _5=[]; +for(var i=0;i<_4.length;++i){ +_5.push(objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",_4[i],1)); +} +return CPDrawColorTiledRects(_1,_2,_3,_5); +}; +CPDrawColorTiledRects=function(_6,_7,_8,_9){ +if(_8.length!=_9.length){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"sides (length: "+_8.length+") and colors (length: "+_9.length+") must have the same length."); +} +var _a={origin:{x:_6.origin.x,y:_6.origin.y},size:{width:_6.size.width,height:_6.size.height}},_b={origin:{x:0,y:0},size:{width:0,height:0}},_c={origin:{x:0,y:0},size:{width:0,height:0}},_d=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSaveGState(_d); +CGContextSetLineWidth(_d,1); +for(var _e=0;_e<_8.length;++_e){ +var _f=_8[_e]; +CGRectDivide(_a,_b,_c,1,_f); +_a=_c; +_b=CGRectIntersection(_b,_7); +if((_b.size.width<=0||_b.size.height<=0)){ +continue; +} +var _10,_11,_12,_13; +if(_f==CPMinXEdge||_f==CPMaxXEdge){ +if((_b.size.width)<1){ +continue; +} +_10=(_b.origin.x)+0.5; +_11=_10; +_12=(_b.origin.y); +_13=(_b.origin.y+_b.size.height); +}else{ +if((_b.size.height)<1){ +continue; +} +_10=(_b.origin.x); +_11=(_b.origin.x+_b.size.width); +_12=(_b.origin.y)+0.5; +_13=_12; +} +CGContextBeginPath(_d); +CGContextMoveToPoint(_d,_10,_12); +CGContextAddLineToPoint(_d,_11,_13); +CGContextSetStrokeColor(_d,_9[_e]); +CGContextStrokePath(_d); +} +CGContextRestoreGState(_d); +return _a; +}; +p;19;CPGraphicsContext.jt;922;@STATIC;1.0;t;904; +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPGraphicsContext"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_graphicsPort")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithGraphicsPort:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPGraphicsContext").super_class},"init"); +if(_4){ +_graphicsPort=_6; +} +return _4; +} +}),new objj_method(sel_getUid("graphicsPort"),function(_7,_8){ +with(_7){ +return _graphicsPort; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("currentContext"),function(_9,_a){ +with(_9){ +return _1; +} +}),new objj_method(sel_getUid("setCurrentContext:"),function(_b,_c,_d){ +with(_b){ +_1=_d; +} +}),new objj_method(sel_getUid("graphicsContextWithGraphicsPort:flipped:"),function(_e,_f,_10,_11){ +with(_e){ +return objj_msgSend(objj_msgSend(_e,"alloc"),"initWithGraphicsPort:",_10); +} +})]); +p;9;CPImage.jt;9921;@STATIC;1.0;I;21;Foundation/CPBundle.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.jI;21;Foundation/CPString.ji;12;CPGeometry.jt;9742; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPRunLoop.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPGeometry.j",YES); +CPImageLoadStatusInitialized=0; +CPImageLoadStatusLoading=1; +CPImageLoadStatusCompleted=2; +CPImageLoadStatusCancelled=3; +CPImageLoadStatusInvalidData=4; +CPImageLoadStatusUnexpectedEOF=5; +CPImageLoadStatusReadError=6; +CPImageDidLoadNotification="CPImageDidLoadNotification"; +CPImageNameColorPanel="CPImageNameColorPanel"; +CPImageNameColorPanelHighlighted="CPImageNameColorPanelHighlighted"; +var _1={},_2={}; +_2[CPImageNameColorPanel]=CGSizeMake(26,29); +_2[CPImageNameColorPanelHighlighted]=CGSizeMake(26,29); +CPImageInBundle=function(_3,_4,_5){ +if(!_5){ +_5=objj_msgSend(CPBundle,"mainBundle"); +} +if(_4){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5,"pathForResource:",_3),_4); +} +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(_5,"pathForResource:",_3)); +}; +CPAppKitImage=function(_6,_7){ +return CPImageInBundle(_6,_7,objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class"))); +}; +var _8=objj_allocateClassPair(CPObject,"CPImage"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_size"),new objj_ivar("_filename"),new objj_ivar("_name"),new objj_ivar("_delegate"),new objj_ivar("_loadStatus"),new objj_ivar("_image")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("init"),function(_a,_b){ +with(_a){ +return objj_msgSend(_a,"initByReferencingFile:size:","",CGSizeMake(-1,-1)); +} +}),new objj_method(sel_getUid("initByReferencingFile:size:"),function(_c,_d,_e,_f){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPImage").super_class},"init"); +if(_c){ +_size=CPSizeCreateCopy(_f); +_filename=_e; +_loadStatus=CPImageLoadStatusInitialized; +} +return _c; +} +}),new objj_method(sel_getUid("initWithContentsOfFile:size:"),function(_10,_11,_12,_13){ +with(_10){ +_10=objj_msgSend(_10,"initByReferencingFile:size:",_12,_13); +if(_10){ +objj_msgSend(_10,"load"); +} +return _10; +} +}),new objj_method(sel_getUid("initWithContentsOfFile:"),function(_14,_15,_16){ +with(_14){ +_14=objj_msgSend(_14,"initByReferencingFile:size:",_16,CGSizeMake(-1,-1)); +if(_14){ +objj_msgSend(_14,"load"); +} +return _14; +} +}),new objj_method(sel_getUid("filename"),function(_17,_18){ +with(_17){ +return _filename; +} +}),new objj_method(sel_getUid("setSize:"),function(_19,_1a,_1b){ +with(_19){ +_size=CGSizeMakeCopy(_1b); +} +}),new objj_method(sel_getUid("size"),function(_1c,_1d){ +with(_1c){ +return _size; +} +}),new objj_method(sel_getUid("setName:"),function(_1e,_1f,_20){ +with(_1e){ +if(_name===_20){ +return YES; +} +if(_1[_20]){ +return NO; +} +_name=_20; +_1[_20]=_1e; +return YES; +} +}),new objj_method(sel_getUid("name"),function(_21,_22){ +with(_21){ +return _name; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_23,_24,_25){ +with(_23){ +_delegate=_25; +} +}),new objj_method(sel_getUid("delegate"),function(_26,_27){ +with(_26){ +return _delegate; +} +}),new objj_method(sel_getUid("loadStatus"),function(_28,_29){ +with(_28){ +return _loadStatus; +} +}),new objj_method(sel_getUid("load"),function(_2a,_2b){ +with(_2a){ +if(_loadStatus==CPImageLoadStatusLoading||_loadStatus==CPImageLoadStatusCompleted){ +return; +} +_loadStatus=CPImageLoadStatusLoading; +_image=new Image(); +var _2c=YES; +_image.onload=function(){ +if(_2c){ +window.setTimeout(function(){ +objj_msgSend(_2a,"_imageDidLoad"); +},0); +}else{ +objj_msgSend(_2a,"_imageDidLoad"); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +objj_msgSend(_2a,"_derefFromImage"); +}; +_image.onerror=function(){ +if(_2c){ +window.setTimeout(function(){ +objj_msgSend(_2a,"_imageDidError"); +},0); +}else{ +objj_msgSend(_2a,"_imageDidError"); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +objj_msgSend(_2a,"_derefFromImage"); +}; +_image.onabort=function(){ +if(_2c){ +window.setTimeout(function(){ +objj_msgSend(_2a,"_imageDidAbort"); +},0); +}else{ +objj_msgSend(_2a,"_imageDidAbort"); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +objj_msgSend(_2a,"_derefFromImage"); +}; +_image.src=_filename; +window.setTimeout(function(){ +_2c=NO; +},0); +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_2d,_2e){ +with(_2d){ +return NO; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_2f,_30){ +with(_2f){ +return NO; +} +}),new objj_method(sel_getUid("_derefFromImage"),function(_31,_32){ +with(_31){ +_image.onload=null; +_image.onerror=null; +_image.onabort=null; +} +}),new objj_method(sel_getUid("_imageDidLoad"),function(_33,_34){ +with(_33){ +_loadStatus=CPImageLoadStatusCompleted; +if(!_size||(_size.width==-1&&_size.height==-1)){ +_size=CGSizeMake(_image.width,_image.height); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPImageDidLoadNotification,_33); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("imageDidLoad:"))){ +objj_msgSend(_delegate,"imageDidLoad:",_33); +} +} +}),new objj_method(sel_getUid("_imageDidError"),function(_35,_36){ +with(_35){ +_loadStatus=CPImageLoadStatusReadError; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("imageDidError:"))){ +objj_msgSend(_delegate,"imageDidError:",_35); +} +} +}),new objj_method(sel_getUid("_imageDidAbort"),function(_37,_38){ +with(_37){ +_loadStatus=CPImageLoadStatusCancelled; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("imageDidAbort:"))){ +objj_msgSend(_delegate,"imageDidAbort:",_37); +} +} +})]); +class_addMethods(_9,[new objj_method(sel_getUid("imageNamed:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=_1[_3b]; +if(_3c){ +return _3c; +} +var _3d=_2[_3b]; +if(!_3d){ +return nil; +} +if(!_3d.isa){ +_3d=CPAppKitImage("CPImage/"+_3b+".png",_3d); +objj_msgSend(_3d,"setName:",_3b); +_2[_3b]=_3d; +} +return _3d; +} +})]); +var _8=objj_getClass("CPImage"); +if(!_8){ +throw new SyntaxError("*** Could not find definition for class \"CPImage\""); +} +var _9=_8.isa; +class_addMethods(_8,[new objj_method(sel_getUid("initWithCoder:"),function(_3e,_3f,_40){ +with(_3e){ +return objj_msgSend(_3e,"initWithContentsOfFile:size:",objj_msgSend(_40,"decodeObjectForKey:","CPFilename"),objj_msgSend(_40,"decodeSizeForKey:","CPSize")); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_41,_42,_43){ +with(_41){ +objj_msgSend(_43,"encodeObject:forKey:",_filename,"CPFilename"); +objj_msgSend(_43,"encodeSize:forKey:",_size,"CPSize"); +} +})]); +var _8=objj_allocateClassPair(CPObject,"CPThreePartImage"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_imageSlices"),new objj_ivar("_isVertical")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithImageSlices:isVertical:"),function(_44,_45,_46,_47){ +with(_44){ +_44=objj_msgSendSuper({receiver:_44,super_class:objj_getClass("CPThreePartImage").super_class},"init"); +if(_44){ +_imageSlices=_46; +_isVertical=_47; +} +return _44; +} +}),new objj_method(sel_getUid("filename"),function(_48,_49){ +with(_48){ +return ""; +} +}),new objj_method(sel_getUid("imageSlices"),function(_4a,_4b){ +with(_4a){ +return _imageSlices; +} +}),new objj_method(sel_getUid("isVertical"),function(_4c,_4d){ +with(_4c){ +return _isVertical; +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_4e,_4f){ +with(_4e){ +return YES; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_50,_51){ +with(_50){ +return NO; +} +})]); +var _52="CPThreePartImageImageSlicesKey",_53="CPThreePartImageIsVerticalKey"; +var _8=objj_getClass("CPThreePartImage"); +if(!_8){ +throw new SyntaxError("*** Could not find definition for class \"CPThreePartImage\""); +} +var _9=_8.isa; +class_addMethods(_8,[new objj_method(sel_getUid("initWithCoder:"),function(_54,_55,_56){ +with(_54){ +_54=objj_msgSendSuper({receiver:_54,super_class:objj_getClass("CPThreePartImage").super_class},"init"); +if(_54){ +_imageSlices=objj_msgSend(_56,"decodeObjectForKey:",_52); +_isVertical=objj_msgSend(_56,"decodeBoolForKey:",_53); +} +return _54; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_57,_58,_59){ +with(_57){ +objj_msgSend(_59,"encodeObject:forKey:",_imageSlices,_52); +objj_msgSend(_59,"encodeBool:forKey:",_isVertical,_53); +} +})]); +var _8=objj_allocateClassPair(CPObject,"CPNinePartImage"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_imageSlices")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithImageSlices:"),function(_5a,_5b,_5c){ +with(_5a){ +_5a=objj_msgSendSuper({receiver:_5a,super_class:objj_getClass("CPNinePartImage").super_class},"init"); +if(_5a){ +_imageSlices=_5c; +} +return _5a; +} +}),new objj_method(sel_getUid("filename"),function(_5d,_5e){ +with(_5d){ +return ""; +} +}),new objj_method(sel_getUid("imageSlices"),function(_5f,_60){ +with(_5f){ +return _imageSlices; +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_61,_62){ +with(_61){ +return NO; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_63,_64){ +with(_63){ +return YES; +} +})]); +var _65="CPNinePartImageImageSlicesKey"; +var _8=objj_getClass("CPNinePartImage"); +if(!_8){ +throw new SyntaxError("*** Could not find definition for class \"CPNinePartImage\""); +} +var _9=_8.isa; +class_addMethods(_8,[new objj_method(sel_getUid("initWithCoder:"),function(_66,_67,_68){ +with(_66){ +_66=objj_msgSendSuper({receiver:_66,super_class:objj_getClass("CPNinePartImage").super_class},"init"); +if(_66){ +_imageSlices=objj_msgSend(_68,"decodeObjectForKey:",_65); +} +return _66; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_69,_6a,_6b){ +with(_69){ +objj_msgSend(_6b,"encodeObject:forKey:",_imageSlices,_65); +} +})]); +p;13;CPImageView.jt;10090;@STATIC;1.0;I;33;Foundation/CPNotificationCenter.ji;11;CPControl.ji;9;CPImage.ji;14;CPShadowView.jt;9985; +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPShadowView.j",YES); +CPScaleProportionally=0; +CPScaleToFit=1; +CPScaleNone=2; +CPImageAlignCenter=0; +CPImageAlignTop=1; +CPImageAlignTopLeft=2; +CPImageAlignTopRight=3; +CPImageAlignLeft=4; +CPImageAlignBottom=5; +CPImageAlignBottomLeft=6; +CPImageAlignBottomRight=7; +CPImageAlignRight=8; +var _1=nil,_2=nil; +var _3=3,_4=3,_5=3,_6=5,_7=_5+_6,_8=_3+_4; +var _9=objj_allocateClassPair(CPControl,"CPImageView"),_a=_9.isa; +class_addIvars(_9,[new objj_ivar("_DOMImageElement"),new objj_ivar("_hasShadow"),new objj_ivar("_shadowView"),new objj_ivar("_isEditable"),new objj_ivar("_imageRect"),new objj_ivar("_imageAlignment")]); +objj_registerClassPair(_9); +class_addMethods(_9,[new objj_method(sel_getUid("initWithFrame:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPImageView").super_class},"initWithFrame:",_d); +if(_b){ +_DOMImageElement=document.createElement("img"); +_DOMImageElement.style.position="absolute"; +_DOMImageElement.style.left="0px"; +_DOMImageElement.style.top="0px"; +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMImageElement.setAttribute("draggable","true"); +_DOMImageElement.style["-khtml-user-drag"]="element"; +} +_DOMElement.appendChild(_DOMImageElement); +_DOMImageElement.style.visibility="hidden"; +} +return _b; +} +}),new objj_method(sel_getUid("image"),function(_e,_f){ +with(_e){ +return objj_msgSend(_e,"objectValue"); +} +}),new objj_method(sel_getUid("setImage:"),function(_10,_11,_12){ +with(_10){ +objj_msgSend(_10,"setObjectValue:",_12); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_13,_14,_15){ +with(_13){ +var _16=objj_msgSend(_13,"objectValue"); +if(_16===_15){ +return; +} +objj_msgSendSuper({receiver:_13,super_class:objj_getClass("CPImageView").super_class},"setObjectValue:",_15); +var _17=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_16){ +objj_msgSend(_17,"removeObserver:name:object:",_13,CPImageDidLoadNotification,_16); +} +var _18=objj_msgSend(_13,"objectValue"); +_DOMImageElement.src=_18?objj_msgSend(_18,"filename"):objj_msgSend(_2,"filename"); +var _19=objj_msgSend(_18,"size"); +if(_19&&_19.width===-1&&_19.height===-1){ +objj_msgSend(_17,"addObserver:selector:name:object:",_13,sel_getUid("imageDidLoad:"),CPImageDidLoadNotification,_18); +_DOMImageElement.width=0; +_DOMImageElement.height=0; +objj_msgSend(_shadowView,"setHidden:",YES); +}else{ +objj_msgSend(_13,"hideOrDisplayContents"); +objj_msgSend(_13,"setNeedsLayout"); +objj_msgSend(_13,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("imageDidLoad:"),function(_1a,_1b,_1c){ +with(_1a){ +objj_msgSend(_1a,"hideOrDisplayContents"); +objj_msgSend(_1a,"setNeedsLayout"); +objj_msgSend(_1a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("hasShadow"),function(_1d,_1e){ +with(_1d){ +return _hasShadow; +} +}),new objj_method(sel_getUid("setHasShadow:"),function(_1f,_20,_21){ +with(_1f){ +if(_hasShadow==_21){ +return; +} +_hasShadow=_21; +if(_hasShadow){ +_shadowView=objj_msgSend(objj_msgSend(CPShadowView,"alloc"),"initWithFrame:",objj_msgSend(_1f,"bounds")); +objj_msgSend(_1f,"addSubview:",_shadowView); +objj_msgSend(_1f,"setNeedsLayout"); +objj_msgSend(_1f,"setNeedsDisplay:",YES); +}else{ +objj_msgSend(_shadowView,"removeFromSuperview"); +_shadowView=nil; +} +objj_msgSend(_1f,"hideOrDisplayContents"); +} +}),new objj_method(sel_getUid("setImageAlignment:"),function(_22,_23,_24){ +with(_22){ +if(_imageAlignment==_24){ +return; +} +_imageAlignment=_24; +if(!objj_msgSend(_22,"image")){ +return; +} +objj_msgSend(_22,"setNeedsLayout"); +objj_msgSend(_22,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("imageAlignment"),function(_25,_26){ +with(_25){ +return _imageAlignment; +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_27,_28,_29){ +with(_27){ +objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPImageView").super_class},"setImageScaling:",_29); +if(objj_msgSend(_27,"currentValueForThemeAttribute:","image-scaling")===CPScaleToFit){ +if(NULL){ +var _2a=_CGPointApplyAffineTransform(CGPointMake(0,0),NULL); +}else{ +var _2a={x:0,y:0}; +} +_DOMImageElement.style.left=ROUND(_2a.x)+"px"; +_DOMImageElement.style.top=ROUND(_2a.y)+"px"; +} +objj_msgSend(_27,"setNeedsLayout"); +objj_msgSend(_27,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("imageScaling"),function(_2b,_2c){ +with(_2b){ +return objj_msgSend(_2b,"currentValueForThemeAttribute:","image-scaling"); +} +}),new objj_method(sel_getUid("hideOrDisplayContents"),function(_2d,_2e){ +with(_2d){ +if(!objj_msgSend(_2d,"image")){ +_DOMImageElement.style.visibility="hidden"; +objj_msgSend(_shadowView,"setHidden:",YES); +}else{ +_DOMImageElement.style.visibility="visible"; +objj_msgSend(_shadowView,"setHidden:",NO); +} +} +}),new objj_method(sel_getUid("imageRect"),function(_2f,_30){ +with(_2f){ +return _imageRect; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_31,_32){ +with(_31){ +if(!objj_msgSend(_31,"image")){ +return; +} +var _33=objj_msgSend(_31,"bounds"),_34=objj_msgSend(_31,"image"),_35=objj_msgSend(_31,"currentValueForThemeAttribute:","image-scaling"),x=0,y=0,_36=(_hasShadow?_8:0),_37=(_hasShadow?_7:0),_38=(_33.size.width),_39=(_33.size.height),_3a=_38-_36,_3b=_39-_37; +if(_35===CPScaleToFit){ +_DOMImageElement.width=ROUND(_3a); +_DOMImageElement.height=ROUND(_3b); +}else{ +var _3c=objj_msgSend(_34,"size"); +if(_3c.width==-1&&_3c.height==-1){ +return; +} +if(_35===CPScaleProportionally){ +if(_3a>=_3c.width&&_3b>=_3c.height){ +_3a=_3c.width; +_3b=_3c.height; +}else{ +var _3d=_3c.width/_3c.height,_3e=_3a/_3b; +if(_3e>_3d){ +_3a=_3b*_3d; +}else{ +_3b=_3a/_3d; +} +} +_DOMImageElement.width=ROUND(_3a); +_DOMImageElement.height=ROUND(_3b); +}else{ +_3a=_3c.width; +_3b=_3c.height; +} +if(_35==CPScaleNone){ +_DOMImageElement.width=ROUND(_3c.width); +_DOMImageElement.height=ROUND(_3c.height); +} +var x,y; +switch(_imageAlignment){ +case CPImageAlignLeft: +case CPImageAlignTopLeft: +case CPImageAlignBottomLeft: +x=0; +break; +case CPImageAlignRight: +case CPImageAlignTopRight: +case CPImageAlignBottomRight: +x=_38-_3a; +break; +default: +x=(_38-_3a)/2; +break; +} +switch(_imageAlignment){ +case CPImageAlignTop: +case CPImageAlignTopLeft: +case CPImageAlignTopRight: +y=0; +break; +case CPImageAlignBottom: +case CPImageAlignBottomLeft: +case CPImageAlignBottomRight: +y=_39-_3b; +break; +default: +y=(_39-_3b)/2; +break; +} +if(NULL){ +var _3f=_CGPointApplyAffineTransform(CGPointMake(x,y),NULL); +}else{ +var _3f={x:x,y:y}; +} +_DOMImageElement.style.left=ROUND(_3f.x)+"px"; +_DOMImageElement.style.top=ROUND(_3f.y)+"px"; +} +_imageRect={origin:{x:x,y:y},size:{width:_3a,height:_3b}}; +if(_hasShadow){ +objj_msgSend(_shadowView,"setFrame:",{origin:{x:x-_3,y:y-_5},size:{width:_3a+_36,height:_3b+_37}}); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(objj_msgSend(_40,"nextResponder"),"mouseDown:",_42); +} +}),new objj_method(sel_getUid("setEditable:"),function(_43,_44,_45){ +with(_43){ +if(_isEditable===_45){ +return; +} +_isEditable=_45; +if(_isEditable){ +objj_msgSend(_43,"registerForDraggedTypes:",[CPImagesPboardType]); +}else{ +var _46=objj_msgSend(_43,"registeredDraggedTypes"); +objj_msgSend(_43,"unregisterDraggedTypes"); +objj_msgSend(_46,"removeObjectIdenticalTo:",CPImagesPboardType); +objj_msgSend(_43,"registerForDraggedTypes:",_46); +} +} +}),new objj_method(sel_getUid("isEditable"),function(_47,_48){ +with(_47){ +return _isEditable; +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_49,_4a,_4b){ +with(_49){ +var _4c=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(objj_msgSend(_4b,"draggingPasteboard"),"dataForType:",CPImagesPboardType)); +if(objj_msgSend(_4c,"count")){ +objj_msgSend(_49,"setImage:",_4c[0]); +objj_msgSend(_49,"sendAction:to:",objj_msgSend(_49,"action"),objj_msgSend(_49,"target")); +} +return YES; +} +})]); +class_addMethods(_a,[new objj_method(sel_getUid("initialize"),function(_4d,_4e){ +with(_4d){ +var _4f=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class")); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(_4f,"pathForResource:","empty.png")); +} +})]); +var _50="CPImageViewImageKey",_51="CPImageViewImageScalingKey",_52="CPImageViewImageAlignmentKey",_53="CPImageViewHasShadowKey",_54="CPImageViewIsEditableKey"; +var _9=objj_getClass("CPImageView"); +if(!_9){ +throw new SyntaxError("*** Could not find definition for class \"CPImageView\""); +} +var _a=_9.isa; +class_addMethods(_9,[new objj_method(sel_getUid("initWithCoder:"),function(_55,_56,_57){ +with(_55){ +_DOMImageElement=document.createElement("img"); +_DOMImageElement.style.position="absolute"; +_DOMImageElement.style.left="0px"; +_DOMImageElement.style.top="0px"; +_DOMImageElement.style.visibility="hidden"; +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMImageElement.setAttribute("draggable","true"); +_DOMImageElement.style["-khtml-user-drag"]="element"; +} +_55=objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPImageView").super_class},"initWithCoder:",_57); +if(_55){ +_DOMElement.appendChild(_DOMImageElement); +objj_msgSend(_55,"setHasShadow:",objj_msgSend(_57,"decodeBoolForKey:",_53)); +objj_msgSend(_55,"setImageAlignment:",objj_msgSend(_57,"decodeIntForKey:",_52)); +if(objj_msgSend(_57,"decodeBoolForKey:",_54)||NO){ +objj_msgSend(_55,"setEditable:",YES); +} +objj_msgSend(_55,"setNeedsLayout"); +objj_msgSend(_55,"setNeedsDisplay:",YES); +} +return _55; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_58,_59,_5a){ +with(_58){ +if(_shadowView){ +var _5b=_subviews; +_subviews=objj_msgSend(_subviews,"copy"); +objj_msgSend(_subviews,"removeObjectIdenticalTo:",_shadowView); +} +objj_msgSendSuper({receiver:_58,super_class:objj_getClass("CPImageView").super_class},"encodeWithCoder:",_5a); +if(_shadowView){ +_subviews=_5b; +} +objj_msgSend(_5a,"encodeBool:forKey:",_hasShadow,_53); +objj_msgSend(_5a,"encodeInt:forKey:",_imageAlignment,_52); +if(_isEditable){ +objj_msgSend(_5a,"encodeBool:forKey:",_isEditable,_54); +} +} +})]); +p;14;CPKeyBinding.jt;9144;@STATIC;1.0;I;21;Foundation/CPObject.jt;9099; +objj_executeFile("Foundation/CPObject.j",NO); +CPStandardKeyBindings={"@.":"cancelOperation:","^a":"moveToBeginningOfParagraph:","^$a":"moveToBeginningOfParagraphAndModifySelection:","^b":"moveBackward:","^$b":"moveBackwardAndModifySelection:","^~b":"moveWordBackward:","^~$b":"moveWordBackwardAndModifySelection:","^d":"deleteForward:","^e":"moveToEndOfParagraph:","^$e":"moveToEndOfParagraphAndModifySelection:","^f":"moveForward:","^$f":"moveForwardAndModifySelection:","^~f":"moveWordForward:","^~$f":"moveWordForwardAndModifySelection:","^h":"deleteBackward:","^k":"deleteToEndOfParagraph:","^l":"centerSelectionInVisibleArea:","^n":"moveDown:","^$n":"moveDownAndModifySelection:","^o":["insertNewlineIgnoringFieldEditor:","moveBackward:"],"^p":"moveUp:","^$p":"moveUpAndModifySelection:","^t":"transpose:","^v":"pageDown:","^$v":"pageDownAndModifySelection:","^y":"yank:"}; +CPStandardKeyBindings[CPNewlineCharacter]="insertNewline:"; +CPStandardKeyBindings[CPCarriageReturnCharacter]="insertNewline:"; +CPStandardKeyBindings[CPEnterCharacter]="insertNewline:"; +CPStandardKeyBindings["~"+CPNewlineCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~"+CPCarriageReturnCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~"+CPEnterCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["^"+CPNewlineCharacter]="insertLineBreak:"; +CPStandardKeyBindings["^"+CPCarriageReturnCharacter]="insertLineBreak:"; +CPStandardKeyBindings["^"+CPEnterCharacter]="insertLineBreak:"; +CPStandardKeyBindings[CPBackspaceCharacter]="deleteBackward:"; +CPStandardKeyBindings["~"+CPBackspaceCharacter]="deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteCharacter]="deleteBackward:"; +CPStandardKeyBindings["@"+CPDeleteCharacter]="deleteToBeginningOfLine:"; +CPStandardKeyBindings["~"+CPDeleteCharacter]="deleteWordBackward:"; +CPStandardKeyBindings["^"+CPDeleteCharacter]="deleteBackwardByDecomposingPreviousCharacter:"; +CPStandardKeyBindings["^~"+CPDeleteCharacter]="deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteFunctionKey]="deleteForward:"; +CPStandardKeyBindings["~"+CPDeleteFunctionKey]="deleteWordForward:"; +CPStandardKeyBindings[CPTabCharacter]="insertTab:"; +CPStandardKeyBindings["~"+CPTabCharacter]="insertTabIgnoringFieldEditor:"; +CPStandardKeyBindings["^"+CPTabCharacter]="selectNextKeyView:"; +CPStandardKeyBindings[CPBackTabCharacter]="insertBacktab:"; +CPStandardKeyBindings["^"+CPBackTabCharacter]="selectPreviousKeyView:"; +CPStandardKeyBindings[CPEscapeFunctionKey]="cancelOperation:"; +CPStandardKeyBindings["~"+CPEscapeFunctionKey]="complete:"; +CPStandardKeyBindings[CPF5FunctionKey]="complete:"; +CPStandardKeyBindings[CPLeftArrowFunctionKey]="moveLeft:"; +CPStandardKeyBindings["~"+CPLeftArrowFunctionKey]="moveWordLeft:"; +CPStandardKeyBindings["^"+CPLeftArrowFunctionKey]="moveToLeftEndOfLine:"; +CPStandardKeyBindings["@"+CPLeftArrowFunctionKey]="moveToLeftEndOfLine:"; +CPStandardKeyBindings["$"+CPLeftArrowFunctionKey]="moveLeftAndModifySelection:"; +CPStandardKeyBindings["$~"+CPLeftArrowFunctionKey]="moveWordLeftAndModifySelection:"; +CPStandardKeyBindings["$^"+CPLeftArrowFunctionKey]="moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@"+CPLeftArrowFunctionKey]="moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^"+CPLeftArrowFunctionKey]="makeBaseWritingDirectionRightToLeft:"; +CPStandardKeyBindings["@^~"+CPLeftArrowFunctionKey]="makeTextWritingDirectionRightToLeft:"; +CPStandardKeyBindings[CPRightArrowFunctionKey]="moveRight:"; +CPStandardKeyBindings["~"+CPRightArrowFunctionKey]="moveWordRight:"; +CPStandardKeyBindings["^"+CPRightArrowFunctionKey]="moveToRightEndOfLine:"; +CPStandardKeyBindings["@"+CPRightArrowFunctionKey]="moveToRightEndOfLine:"; +CPStandardKeyBindings["$"+CPRightArrowFunctionKey]="moveRightAndModifySelection:"; +CPStandardKeyBindings["$~"+CPRightArrowFunctionKey]="moveWordRightAndModifySelection:"; +CPStandardKeyBindings["$^"+CPRightArrowFunctionKey]="moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@"+CPRightArrowFunctionKey]="moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^"+CPRightArrowFunctionKey]="makeBaseWritingDirectionLeftToRight:"; +CPStandardKeyBindings["@^~"+CPRightArrowFunctionKey]="makeTextWritingDirectionLeftToRight:"; +CPStandardKeyBindings[CPUpArrowFunctionKey]="moveUp:"; +CPStandardKeyBindings["~"+CPUpArrowFunctionKey]=["moveBackward:","moveToBeginningOfParagraph:"]; +CPStandardKeyBindings["^"+CPUpArrowFunctionKey]="scrollPageUp:"; +CPStandardKeyBindings["@"+CPUpArrowFunctionKey]="moveToBeginningOfDocument:"; +CPStandardKeyBindings["$"+CPUpArrowFunctionKey]="moveUpAndModifySelection:"; +CPStandardKeyBindings["$~"+CPUpArrowFunctionKey]="moveParagraphBackwardAndModifySelection:"; +CPStandardKeyBindings["$@"+CPUpArrowFunctionKey]="moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPDownArrowFunctionKey]="moveDown:"; +CPStandardKeyBindings["~"+CPDownArrowFunctionKey]=["moveForward:","moveToEndOfParagraph:"]; +CPStandardKeyBindings["^"+CPDownArrowFunctionKey]="scrollPageDown:"; +CPStandardKeyBindings["@"+CPDownArrowFunctionKey]="moveToEndOfDocument:"; +CPStandardKeyBindings["$"+CPDownArrowFunctionKey]="moveDownAndModifySelection:"; +CPStandardKeyBindings["$~"+CPDownArrowFunctionKey]="moveParagraphForwardAndModifySelection:"; +CPStandardKeyBindings["$@"+CPDownArrowFunctionKey]="moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings["@^"+CPDownArrowFunctionKey]="makeBaseWritingDirectionNatural:"; +CPStandardKeyBindings["@^~"+CPDownArrowFunctionKey]="makeTextWritingDirectionNatural:"; +CPStandardKeyBindings[CPHomeFunctionKey]="scrollToBeginningOfDocument:"; +CPStandardKeyBindings["$"+CPHomeFunctionKey]="moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPEndFunctionKey]="scrollToEndOfDocument:"; +CPStandardKeyBindings["$"+CPEndFunctionKey]="moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPPageUpFunctionKey]="scrollPageUp:"; +CPStandardKeyBindings["~"+CPPageUpFunctionKey]="pageUp:"; +CPStandardKeyBindings["$"+CPPageUpFunctionKey]="pageUpAndModifySelection:"; +CPStandardKeyBindings[CPPageDownFunctionKey]="scrollPageDown:"; +CPStandardKeyBindings["~"+CPPageDownFunctionKey]="pageDown:"; +CPStandardKeyBindings["$"+CPPageDownFunctionKey]="pageDownAndModifySelection:"; +var _1={}; +var _2=objj_allocateClassPair(CPObject,"CPKeyBinding"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_key"),new objj_ivar("_modifierFlags"),new objj_ivar("_selectors"),new objj_ivar("_cacheName")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithKey:modifierFlags:selectors:"),function(_4,_5,_6,_7,_8){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPKeyBinding").super_class},"init"); +if(_4){ +_key=_6; +_modifierFlags=_7; +_selectors=_8; +var _9=[]; +if(_modifierFlags&CPCommandKeyMask){ +_9.push("@"); +} +if(_modifierFlags&CPControlKeyMask){ +_9.push("^"); +} +if(_modifierFlags&CPAlternateKeyMask){ +_9.push("~"); +} +if(_modifierFlags&CPShiftKeyMask){ +_9.push("$"); +} +_9.push(_key); +_cacheName=_9.join(""); +} +return _4; +} +}),new objj_method(sel_getUid("key"),function(_a,_b){ +with(_a){ +return _key; +} +}),new objj_method(sel_getUid("modifierFlags"),function(_c,_d){ +with(_c){ +return _modifierFlags; +} +}),new objj_method(sel_getUid("selectors"),function(_e,_f){ +with(_e){ +return _selectors; +} +}),new objj_method(sel_getUid("_cacheName"),function(_10,_11){ +with(_10){ +return _cacheName; +} +}),new objj_method(sel_getUid("isEqual:"),function(_12,_13,rhs){ +with(_12){ +return _key===objj_msgSend(rhs,"key")&&_modifierFlags===objj_msgSend(rhs,"modifierFlags"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_14,_15){ +with(_14){ +if(objj_msgSend(_14,"class")!==CPKeyBinding){ +return; +} +objj_msgSend(_14,"createKeyBindingsFromJSObject:",CPStandardKeyBindings); +} +}),new objj_method(sel_getUid("createKeyBindingsFromJSObject:"),function(_16,_17,_18){ +with(_16){ +var _19; +for(_19 in _18){ +var _1a=_19.split(""),_1b=(objj_msgSend(_1a,"containsObject:","$")?CPShiftKeyMask:0)|(objj_msgSend(_1a,"containsObject:","^")?CPControlKeyMask:0)|(objj_msgSend(_1a,"containsObject:","~")?CPAlternateKeyMask:0)|(objj_msgSend(_1a,"containsObject:","@")?CPCommandKeyMask:0); +var _1c=_18[_19]; +if(!objj_msgSend(_1c,"isKindOfClass:",CPArray)){ +_1c=[_1c]; +} +var _1d=objj_msgSend(objj_msgSend(_16,"alloc"),"initWithKey:modifierFlags:selectors:",objj_msgSend(_1a,"lastObject"),_1b,_1c); +objj_msgSend(_16,"cacheKeyBinding:",_1d); +} +} +}),new objj_method(sel_getUid("cacheKeyBinding:"),function(_1e,_1f,_20){ +with(_1e){ +if(!_20){ +return; +} +_1[objj_msgSend(_20,"_cacheName")]=_20; +} +}),new objj_method(sel_getUid("keyBindingForKey:modifierFlags:"),function(_21,_22,_23,_24){ +with(_21){ +var _25=objj_msgSend(objj_msgSend(_21,"alloc"),"initWithKey:modifierFlags:selectors:",_23,_24,nil); +return _1[objj_msgSend(_25,"_cacheName")]; +} +}),new objj_method(sel_getUid("selectorsForKey:modifierFlags:"),function(_26,_27,_28,_29){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"keyBindingForKey:modifierFlags:",_28,_29),"selectors"); +} +})]); +p;19;CPKeyValueBinding.jt;12807;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;31;Foundation/CPValueTransformer.jt;12670; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPValueTransformer.j",NO); +var _1=objj_msgSend(CPDictionary,"new"),_2=objj_msgSend(CPDictionary,"new"); +var _3=0,_4=1; +var _5=objj_allocateClassPair(CPObject,"CPKeyValueBinding"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_info"),new objj_ivar("_source")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithBinding:name:to:keyPath:options:from:"),function(_7,_8,_9,_a,_b,_c,_d,_e){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPKeyValueBinding").super_class},"init"); +if(_7){ +_source=_e; +_info=objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_b,_c],[CPObservedObjectKey,CPObservedKeyPathKey]); +if(_d){ +objj_msgSend(_info,"setObject:forKey:",_d,CPOptionsKey); +} +objj_msgSend(_b,"addObserver:forKeyPath:options:context:",_7,_c,CPKeyValueObservingOptionNew,_9); +var _f=objj_msgSend(_2,"objectForKey:",objj_msgSend(_source,"hash")); +if(!_f){ +_f=objj_msgSend(CPDictionary,"new"); +objj_msgSend(_2,"setObject:forKey:",_f,objj_msgSend(_source,"hash")); +} +objj_msgSend(_f,"setObject:forKey:",_7,_a); +objj_msgSend(_7,"setValueFor:",_9); +} +return _7; +} +}),new objj_method(sel_getUid("setValueFor:"),function(_10,_11,_12){ +with(_10){ +var _13=objj_msgSend(_info,"objectForKey:",CPObservedObjectKey),_14=objj_msgSend(_info,"objectForKey:",CPObservedKeyPathKey),_15=objj_msgSend(_info,"objectForKey:",CPOptionsKey),_16=objj_msgSend(_13,"valueForKeyPath:",_14); +_16=objj_msgSend(_10,"transformValue:withOptions:",_16,_15); +objj_msgSend(_source,"setValue:forKey:",_16,_12); +} +}),new objj_method(sel_getUid("reverseSetValueFor:"),function(_17,_18,_19){ +with(_17){ +var _1a=objj_msgSend(_info,"objectForKey:",CPObservedObjectKey),_1b=objj_msgSend(_info,"objectForKey:",CPObservedKeyPathKey),_1c=objj_msgSend(_info,"objectForKey:",CPOptionsKey),_1d=objj_msgSend(_source,"valueForKeyPath:",_19); +_1d=objj_msgSend(_17,"reverseTransformValue:withOptions:",_1d,_1c); +objj_msgSend(_1a,"setValue:forKeyPath:",_1d,_1b); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_1e,_1f,_20,_21,_22,_23){ +with(_1e){ +if(!_22){ +return; +} +objj_msgSend(_1e,"setValueFor:",_23); +} +}),new objj_method(sel_getUid("transformValue:withOptions:"),function(_24,_25,_26,_27){ +with(_24){ +var _28,_29,_2a; +var _28=objj_msgSend(_27,"objectForKey:",CPValueTransformerNameBindingOption),_29; +if(_28){ +_29=objj_msgSend(CPValueTransformer,"valueTransformerForName:",_28); +if(!_29){ +var _2b=CPClassFromString(_28); +if(_2b){ +_29=objj_msgSend(objj_msgSend(_2b,"alloc"),"init"); +objj_msgSend(_2b,"setValueTransformer:forName:",_29,_28); +} +} +}else{ +_29=objj_msgSend(_27,"objectForKey:",CPValueTransformerBindingOption); +} +if(_29){ +_26=objj_msgSend(_29,"transformedValue:",_26); +} +switch(_26){ +case CPMultipleValuesMarker: +return objj_msgSend(_27,"objectForKey:",CPMultipleValuesPlaceholderBindingOption)||"Multiple Values"; +case CPNoSelectionMarker: +return objj_msgSend(_27,"objectForKey:",CPNoSelectionPlaceholderBindingOption)||"No Selection"; +case CPNotApplicableMarker: +if(objj_msgSend(_27,"objectForKey:",CPRaisesForNotApplicableKeysBindingOption)){ +objj_msgSend(CPException,"raise:reason:",CPGenericException,"can't transform non applicable key on: "+_source+" value: "+_26); +} +return objj_msgSend(_27,"objectForKey:",CPNotApplicablePlaceholderBindingOption)||"Not Applicable"; +case nil: +case undefined: +return objj_msgSend(_27,"objectForKey:",CPNullPlaceholderBindingOption)||nil; +} +return _26; +} +}),new objj_method(sel_getUid("reverseTransformValue:withOptions:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +var _30=objj_msgSend(_2f,"objectForKey:",CPValueTransformerNameBindingOption),_31; +if(_30){ +_31=objj_msgSend(CPValueTransformer,"valueTransformerForName:",_30); +}else{ +_31=objj_msgSend(_2f,"objectForKey:",CPValueTransformerBindingOption); +} +if(_31&&objj_msgSend(objj_msgSend(_31,"class"),"allowsReverseTransformation")){ +_2e=objj_msgSend(_31,"transformedValue:",_2e); +} +return _2e; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("exposeBinding:forClass:"),function(_32,_33,_34,_35){ +with(_32){ +var _36=objj_msgSend(_1,"objectForKey:",objj_msgSend(_35,"hash")); +if(!_36){ +_36=[]; +objj_msgSend(_1,"setObject:forKey:",_36,objj_msgSend(_35,"hash")); +} +_36.push(_34); +} +}),new objj_method(sel_getUid("exposedBindingsForClass:"),function(_37,_38,_39){ +with(_37){ +return objj_msgSend(objj_msgSend(_1,"objectForKey:",objj_msgSend(_39,"hash")),"copy"); +} +}),new objj_method(sel_getUid("getBinding:forObject:"),function(_3a,_3b,_3c,_3d){ +with(_3a){ +return objj_msgSend(objj_msgSend(_2,"objectForKey:",objj_msgSend(_3d,"hash")),"objectForKey:",_3c); +} +}),new objj_method(sel_getUid("infoForBinding:forObject:"),function(_3e,_3f,_40,_41){ +with(_3e){ +var _42=objj_msgSend(_3e,"getBinding:forObject:",_40,_41); +if(_42){ +return _42._info; +} +return nil; +} +}),new objj_method(sel_getUid("allBindingsForObject:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_2,"objectForKey:",objj_msgSend(_45,"hash")); +} +}),new objj_method(sel_getUid("unbind:forObject:"),function(_46,_47,_48,_49){ +with(_46){ +var _4a=objj_msgSend(_2,"objectForKey:",objj_msgSend(_49,"hash")); +if(!_4a){ +return; +} +var _4b=objj_msgSend(_4a,"objectForKey:",_48); +if(!_4b){ +return; +} +var _4c=_4b._info,_4d=objj_msgSend(_4c,"objectForKey:",CPObservedObjectKey),_4e=objj_msgSend(_4c,"objectForKey:",CPObservedKeyPathKey); +objj_msgSend(_4d,"removeObserver:forKeyPath:",_4b,_4e); +objj_msgSend(_4a,"removeObjectForKey:",_48); +} +}),new objj_method(sel_getUid("unbindAllForObject:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSend(_2,"objectForKey:",objj_msgSend(_51,"hash")); +if(!_52){ +return; +} +var _53=objj_msgSend(_52,"allKeys"),_54=_53.length; +while(_54--){ +objj_msgSend(_51,"unbind:",objj_msgSend(_52,"objectForKey:",_53[_54])); +} +objj_msgSend(_2,"removeObjectForKey:",objj_msgSend(_51,"hash")); +} +})]); +var _5=objj_getClass("CPObject"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("exposedBindings"),function(_55,_56){ +with(_55){ +var _57=[],_58=objj_msgSend(_55,"class"); +while(_58){ +var _59=objj_msgSend(CPKeyValueBinding,"exposedBindingsForClass:",_58); +if(_59){ +objj_msgSend(_57,"addObjectsFromArray:",_59); +} +_58=objj_msgSend(_58,"superclass"); +} +return _57; +} +}),new objj_method(sel_getUid("valueClassForBinding:"),function(_5a,_5b,_5c){ +with(_5a){ +return objj_msgSend(CPString,"class"); +} +}),new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"),function(_5d,_5e,_5f,_60,_61,_62){ +with(_5d){ +if(!_60||!_61){ +return CPLog.error("Invalid object or path on "+_5d+" for "+_5f); +} +objj_msgSend(_5d,"unbind:",_5f); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"alloc"),"initWithBinding:name:to:keyPath:options:from:",objj_msgSend(_5d,"_replacementKeyPathForBinding:",_5f),_5f,_60,_61,_62,_5d); +} +}),new objj_method(sel_getUid("infoForBinding:"),function(_63,_64,_65){ +with(_63){ +return objj_msgSend(CPKeyValueBinding,"infoForBinding:forObject:",_65,_63); +} +}),new objj_method(sel_getUid("unbind:"),function(_66,_67,_68){ +with(_66){ +objj_msgSend(CPKeyValueBinding,"unbind:forObject:",_68,_66); +} +}),new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(_69,_6a,_6b){ +with(_69){ +return _6b; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("exposeBinding:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(CPKeyValueBinding,"exposeBinding:forClass:",_6e,objj_msgSend(_6c,"class")); +} +})]); +var _5=objj_allocateClassPair(CPKeyValueBinding,"_CPKeyValueOrBinding"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setValueFor:"),function(_6f,_70,_71){ +with(_6f){ +var _72=objj_msgSend(_2,"valueForKey:",objj_msgSend(_source,"hash")); +if(!_72){ +return; +} +objj_msgSend(_source,"setValue:forKey:",_73(_71,_72,_4),_71); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_74,_75,_76,_77,_78,_79){ +with(_74){ +objj_msgSend(_74,"setValueFor:",_79); +} +})]); +var _5=objj_allocateClassPair(CPKeyValueBinding,"_CPKeyValueAndBinding"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setValueFor:"),function(_7a,_7b,_7c){ +with(_7a){ +var _7d=objj_msgSend(_2,"objectForKey:",objj_msgSend(_source,"hash")); +if(!_7d){ +return; +} +objj_msgSend(_source,"setValue:forKey:",_73(_7c,_7d,_3),_7c); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_7e,_7f,_80,_81,_82,_83){ +with(_7e){ +objj_msgSend(_7e,"setValueFor:",_83); +} +})]); +var _73=_73=function(key,_84,_85){ +var _86=key,_87,_88=1; +while(_87=objj_msgSend(_84,"objectForKey:",_86)){ +var _89=_87._info,_8a=objj_msgSend(_89,"objectForKey:",CPObservedObjectKey),_8b=objj_msgSend(_89,"objectForKey:",CPObservedKeyPathKey),_8c=objj_msgSend(_89,"objectForKey:",CPOptionsKey); +var _8d=objj_msgSend(_87,"transformValue:withOptions:",objj_msgSend(_8a,"valueForKeyPath:",_8b),_8c); +if(_8d==_85){ +return _85; +} +_86=objj_msgSend(CPString,"stringWithFormat:","%@%i",key,++_88); +} +return !_85; +}; +var _8e=_8e=function(_8f,_90,_91){ +var _92=objj_msgSend(_91,"objectForKey:",_8f),_93=_92._info,_94=objj_msgSend(_93,"objectForKey:",CPObservedObjectKey),_95=objj_msgSend(_93,"objectForKey:",CPObservedKeyPathKey),_96=objj_msgSend(_93,"objectForKey:",CPOptionsKey),_97=objj_msgSend(_94,"valueForKeyPath:",_95),_98=objj_msgSend(_96,"objectForKey:",CPSelectorNameBindingOption); +if(!_97||!_98){ +return; +} +var _99=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",objj_msgSend(_97,"methodSignatureForSelector:",_98)); +objj_msgSend(_99,"setSelector:",_98); +var _9a=_90; +count=1; +while(_92=objj_msgSend(_91,"objectForKey:",_9a)){ +_93=_92._info; +_95=objj_msgSend(_93,"objectForKey:",CPObserverKeyPathKey); +_94=objj_msgSend(objj_msgSend(_93,"objectForKey:",CPObservedObjectKey),"valueForKeyPath:",_95); +if(_94){ +objj_msgSend(_99,"setArgument:atIndex:",_94,++count); +} +_9a=objj_msgSend(CPString,"stringWithFormat:","%@%i",_90,count); +} +objj_msgSend(_99,"invoke"); +}; +CPObservedObjectKey="CPObservedObjectKey"; +CPObservedKeyPathKey="CPObservedKeyPathKey"; +CPOptionsKey="CPOptionsKey"; +CPMultipleValuesMarker="CPMultipleValuesMarker"; +CPNoSelectionMarker="CPNoSelectionMarker"; +CPNotApplicableMarker="CPNotApplicableMarker"; +CPAlignmentBinding="CPAlignmentBinding"; +CPEditableBinding="CPEditableBinding"; +CPEnabledBinding="CPEnabledBinding"; +CPFontBinding="CPFontBinding"; +CPHiddenBinding="CPHiddenBinding"; +CPSelectedIndexBinding="CPSelectedIndexBinding"; +CPTextColorBinding="CPTextColorBinding"; +CPToolTipBinding="CPToolTipBinding"; +CPValueBinding="value"; +CPAllowsEditingMultipleValuesSelectionBindingOption="CPAllowsEditingMultipleValuesSelectionBindingOption"; +CPAllowsNullArgumentBindingOption="CPAllowsNullArgumentBindingOption"; +CPConditionallySetsEditableBindingOption="CPConditionallySetsEditableBindingOption"; +CPConditionallySetsEnabledBindingOption="CPConditionallySetsEnabledBindingOption"; +CPConditionallySetsHiddenBindingOption="CPConditionallySetsHiddenBindingOption"; +CPContinuouslyUpdatesValueBindingOption="CPContinuouslyUpdatesValueBindingOption"; +CPCreatesSortDescriptorBindingOption="CPCreatesSortDescriptorBindingOption"; +CPDeletesObjectsOnRemoveBindingsOption="CPDeletesObjectsOnRemoveBindingsOption"; +CPDisplayNameBindingOption="CPDisplayNameBindingOption"; +CPDisplayPatternBindingOption="CPDisplayPatternBindingOption"; +CPHandlesContentAsCompoundValueBindingOption="CPHandlesContentAsCompoundValueBindingOption"; +CPInsertsNullPlaceholderBindingOption="CPInsertsNullPlaceholderBindingOption"; +CPInvokesSeparatelyWithArrayObjectsBindingOption="CPInvokesSeparatelyWithArrayObjectsBindingOption"; +CPMultipleValuesPlaceholderBindingOption="CPMultipleValuesPlaceholderBindingOption"; +CPNoSelectionPlaceholderBindingOption="CPNoSelectionPlaceholderBindingOption"; +CPNotApplicablePlaceholderBindingOption="CPNotApplicablePlaceholderBindingOption"; +CPNullPlaceholderBindingOption="CPNullPlaceholderBindingOption"; +CPPredicateFormatBindingOption="CPPredicateFormatBindingOption"; +CPRaisesForNotApplicableKeysBindingOption="CPRaisesForNotApplicableKeysBindingOption"; +CPSelectorNameBindingOption="CPSelectorNameBindingOption"; +CPSelectsAllWhenSettingContentBindingOption="CPSelectsAllWhenSettingContentBindingOption"; +CPValidatesImmediatelyBindingOption="CPValidatesImmediatelyBindingOption"; +CPValueTransformerNameBindingOption="CPValueTransformerNameBindingOption"; +CPValueTransformerBindingOption="CPValueTransformerBindingOption"; +p;20;CPObjectController.jt;18248;@STATIC;1.0;I;25;Foundation/CPDictionary.ji;14;CPController.jt;18179; +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("CPController.j",YES); +var _1=objj_allocateClassPair(CPController,"CPObjectController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentObject"),new objj_ivar("_selection"),new objj_ivar("_objectClass"),new objj_ivar("_isEditable"),new objj_ivar("_automaticallyPreparesContent"),new objj_ivar("_observedKeys")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithContent:",nil); +} +}),new objj_method(sel_getUid("initWithContent:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPObjectController").super_class},"init")){ +objj_msgSend(_5,"setContent:",_7); +objj_msgSend(_5,"setEditable:",YES); +objj_msgSend(_5,"setObjectClass:",objj_msgSend(CPMutableDictionary,"class")); +_observedKeys=objj_msgSend(objj_msgSend(CPCountedSet,"alloc"),"init"); +} +return _5; +} +}),new objj_method(sel_getUid("content"),function(_8,_9){ +with(_8){ +return _contentObject; +} +}),new objj_method(sel_getUid("setContent:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_a,"willChangeValueForKey:","contentObject"); +objj_msgSend(_a,"_selectionWillChange"); +_contentObject=_c; +objj_msgSend(_a,"didChangeValueForKey:","contentObject"); +objj_msgSend(_a,"_selectionDidChange"); +} +}),new objj_method(sel_getUid("_setContentObject:"),function(_d,_e,_f){ +with(_d){ +objj_msgSend(_d,"setContent:",_f); +} +}),new objj_method(sel_getUid("_contentObject"),function(_10,_11){ +with(_10){ +return objj_msgSend(_10,"content"); +} +}),new objj_method(sel_getUid("setAutomaticallyPreparesContent:"),function(_12,_13,_14){ +with(_12){ +_automaticallyPreparesContent=_14; +} +}),new objj_method(sel_getUid("automaticallyPreparesContent"),function(_15,_16){ +with(_15){ +return _automaticallyPreparesContent; +} +}),new objj_method(sel_getUid("prepareContent"),function(_17,_18){ +with(_17){ +objj_msgSend(_17,"setContent:",objj_msgSend(_17,"newObject")); +} +}),new objj_method(sel_getUid("setObjectClass:"),function(_19,_1a,_1b){ +with(_19){ +_objectClass=_1b; +} +}),new objj_method(sel_getUid("objectClass"),function(_1c,_1d){ +with(_1c){ +return _objectClass; +} +}),new objj_method(sel_getUid("newObject"),function(_1e,_1f){ +with(_1e){ +return objj_msgSend(objj_msgSend(objj_msgSend(_1e,"objectClass"),"alloc"),"init"); +} +}),new objj_method(sel_getUid("addObject:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(_20,"setContent:",_22); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","contentObject",_20),"reverseSetValueFor:","contentObject"); +} +}),new objj_method(sel_getUid("removeObject:"),function(_23,_24,_25){ +with(_23){ +if(objj_msgSend(_23,"content")===_25){ +objj_msgSend(_23,"setContent:",nil); +} +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","contentObject",_23),"reverseSetValueFor:","contentObject"); +} +}),new objj_method(sel_getUid("add:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(_26,"addObject:",objj_msgSend(_26,"newObject")); +} +}),new objj_method(sel_getUid("canAdd"),function(_29,_2a){ +with(_29){ +return objj_msgSend(_29,"isEditable"); +} +}),new objj_method(sel_getUid("remove:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"removeObject:",objj_msgSend(_2b,"content")); +} +}),new objj_method(sel_getUid("canRemove"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_2e,"isEditable")&&objj_msgSend(objj_msgSend(_2e,"selectedObjects"),"count"); +} +}),new objj_method(sel_getUid("setEditable:"),function(_30,_31,_32){ +with(_30){ +_isEditable=_32; +} +}),new objj_method(sel_getUid("isEditable"),function(_33,_34){ +with(_33){ +return _isEditable; +} +}),new objj_method(sel_getUid("selectedObjects"),function(_35,_36){ +with(_35){ +return objj_msgSend(objj_msgSend(_CPObservableArray,"alloc"),"initWithObjects:count:",[_contentObject],1); +} +}),new objj_method(sel_getUid("selection"),function(_37,_38){ +with(_37){ +return _selection; +} +}),new objj_method(sel_getUid("_selectionWillChange"),function(_39,_3a){ +with(_39){ +objj_msgSend(_selection,"controllerWillChange"); +objj_msgSend(_39,"willChangeValueForKey:","selection"); +} +}),new objj_method(sel_getUid("_selectionDidChange"),function(_3b,_3c){ +with(_3b){ +if(_selection===undefined||_selection===nil){ +_selection=objj_msgSend(objj_msgSend(CPControllerSelectionProxy,"alloc"),"initWithController:",_3b); +} +objj_msgSend(_selection,"controllerDidChange"); +objj_msgSend(_3b,"didChangeValueForKey:","selection"); +} +}),new objj_method(sel_getUid("observedKeys"),function(_3d,_3e){ +with(_3d){ +return _observedKeys; +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_3f,_40,_41,_42,_43,_44){ +with(_3f){ +objj_msgSend(_observedKeys,"addObject:",_42); +objj_msgSendSuper({receiver:_3f,super_class:objj_getClass("CPObjectController").super_class},"addObserver:forKeyPath:options:context:",_41,_42,_43,_44); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_45,_46,_47,_48){ +with(_45){ +objj_msgSend(_observedKeys,"removeObject:",_48); +objj_msgSendSuper({receiver:_45,super_class:objj_getClass("CPObjectController").super_class},"removeObserver:forKeyPath:",_47,_48); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("initialize"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"exposeBinding:","editable"); +objj_msgSend(_49,"exposeBinding:","contentObject"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingContentObject"),function(_4b,_4c){ +with(_4b){ +return objj_msgSend(CPSet,"setWithObjects:","content"); +} +}),new objj_method(sel_getUid("automaticallyNotifiesObserversForKey:"),function(_4d,_4e,_4f){ +with(_4d){ +if(_4f==="contentObject"){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanAdd"),function(_50,_51){ +with(_50){ +return objj_msgSend(CPSet,"setWithObject:","editable"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsert"),function(_52,_53){ +with(_52){ +return objj_msgSend(CPSet,"setWithObject:","editable"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"),function(_54,_55){ +with(_54){ +return objj_msgSend(CPSet,"setWithObjects:","editable","selection"); +} +})]); +var _56="CPObjectControllerObjectClassNameKey",_57="CPObjectControllerIsEditableKey",_58="CPObjectControllerAutomaticallyPreparesContentKey"; +var _1=objj_getClass("CPObjectController"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObjectController\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_59,_5a,_5b){ +with(_59){ +_59=objj_msgSendSuper({receiver:_59,super_class:objj_getClass("CPObjectController").super_class},"init"); +if(_59){ +var _5c=objj_msgSend(_5b,"decodeObjectForKey:",_56),_5d=CPClassFromString(_5c); +objj_msgSend(_59,"setObjectClass:",_5d); +objj_msgSend(_59,"setEditable:",objj_msgSend(_5b,"decodeBoolForKey:",_57)); +objj_msgSend(_59,"setAutomaticallyPreparesContent:",objj_msgSend(_5b,"decodeBoolForKey:",_58)||NO); +_observedKeys=objj_msgSend(objj_msgSend(CPCountedSet,"alloc"),"init"); +} +return _59; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_5e,_5f,_60){ +with(_5e){ +objj_msgSend(_60,"encodeObject:forKey:",CPStringFromClass(objectClass),_56); +objj_msgSend(_60,"encodeObject:forKey:",objj_msgSend(_5e,"isEditable"),_57); +if(!objj_msgSend(_5e,"automaticallyPreparesContent")){ +objj_msgSend(_60,"encodeBOOL:forKey:",YES,_58); +} +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPObservationProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath"),new objj_ivar("_observer"),new objj_ivar("_object"),new objj_ivar("_notifyObject"),new objj_ivar("_context"),new objj_ivar("_options")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKeyPath:observer:object:"),function(_61,_62,_63,_64,_65){ +with(_61){ +if(_61=objj_msgSendSuper({receiver:_61,super_class:objj_getClass("_CPObservationProxy").super_class},"init")){ +_keyPath=_63; +_observer=_64; +_object=_65; +} +return _61; +} +}),new objj_method(sel_getUid("observer"),function(_66,_67){ +with(_66){ +return _observer; +} +}),new objj_method(sel_getUid("keyPath"),function(_68,_69){ +with(_68){ +return _keyPath; +} +}),new objj_method(sel_getUid("context"),function(_6a,_6b){ +with(_6a){ +return _context; +} +}),new objj_method(sel_getUid("options"),function(_6c,_6d){ +with(_6c){ +return _options; +} +}),new objj_method(sel_getUid("setNotifyObject:"),function(_6e,_6f,_70){ +with(_6e){ +_notifyObject=_70; +} +}),new objj_method(sel_getUid("isEqual:"),function(_71,_72,_73){ +with(_71){ +if(objj_msgSend(_73,"class")===objj_msgSend(_71,"class")){ +if(_73._observer===_observer&&objj_msgSend(_73._keyPath,"isEqual:",_keyPath)&&objj_msgSend(_73._object,"isEqual:",_object)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_74,_75,_76,_77,_78,_79){ +with(_74){ +if(_notifyObject){ +objj_msgSend(_object,"observeValueForKeyPath:ofObject:change:context:",_keyPath,_object,_78,_79); +} +objj_msgSend(_observer,"observeValueForKeyPath:ofObject:change:context:",_keyPath,_object,_78,_79); +} +}),new objj_method(sel_getUid("description"),function(_7a,_7b){ +with(_7a){ +return objj_msgSendSuper({receiver:_7a,super_class:objj_getClass("_CPObservationProxy").super_class},"description")+objj_msgSend(CPString,"stringWithFormat:","observation proxy for %@ on key path %@",_observer,_keyPath); +} +})]); +var _1=objj_allocateClassPair(CPMutableArray,"_CPObservableArray"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_observationProxies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("description"),function(_7c,_7d){ +with(_7c){ +return "<_CPObservableArray: "+objj_msgSendSuper({receiver:_7c,super_class:objj_getClass("_CPObservableArray").super_class},"description")+" >"; +} +}),new objj_method(sel_getUid("initWithArray:"),function(_7e,_7f,_80){ +with(_7e){ +if(_7e=objj_msgSendSuper({receiver:_7e,super_class:objj_getClass("_CPObservableArray").super_class},"initWithArray:",_80)){ +_observationProxies=[]; +} +return _7e; +} +}),new objj_method(sel_getUid("initWithObjects:count:"),function(_81,_82,_83,_84){ +with(_81){ +if(_81=objj_msgSendSuper({receiver:_81,super_class:objj_getClass("_CPObservableArray").super_class},"initWithObjects:count:",_83,_84)){ +_observationProxies=[]; +} +return _81; +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_85,_86,_87,_88,_89,_8a){ +with(_85){ +if(_88.indexOf("@")===0){ +var _8b=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_88,_87,_85); +_8b._options=_89; +_8b._context=_8a; +objj_msgSend(_observationProxies,"addObject:",_8b); +var _8c=_88.indexOf("."),_8d=_88.substring(_8c+1),_8e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_85,"count"))); +objj_msgSend(_85,"addObserver:toObjectsAtIndexes:forKeyPath:options:context:",_8b,_8e,_8d,_89,_8a); +}else{ +var _8e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_85,"count"))); +objj_msgSend(_85,"addObserver:toObjectsAtIndexes:forKeyPath:options:context:",_87,_8e,_88,_89,_8a); +} +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_92.indexOf("@")===0){ +var _93=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_92,_91,_8f),_94=objj_msgSend(_observationProxies,"indexOfObject:",_93); +_93=objj_msgSend(_observationProxies,"objectAtIndex:",_94); +var _95=_92.indexOf("."),_96=_92.substring(_95+1),_97=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_8f,"count"))); +objj_msgSend(_8f,"removeObserver:fromObjectsAtIndexes:forKeyPath:",_93,_97,_96); +}else{ +var _97=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_8f,"count"))); +objj_msgSend(_8f,"removeObserver:fromObjectsAtIndexes:forKeyPath:",_91,_97,_92); +} +} +}),new objj_method(sel_getUid("insertObject:atIndex:"),function(_98,_99,_9a,_9b){ +with(_98){ +for(var i=0,_9c=objj_msgSend(_observationProxies,"count");i<_9c;i++){ +var _9d=objj_msgSend(_observationProxies,"objectAtIndex:",i),_9e=objj_msgSend(_9d,"keyPath"),_9f=_9e.indexOf(".")===0; +if(_9f){ +objj_msgSend(_98,"willChangeValueForKey:",_9e); +} +objj_msgSend(_9a,"addObserver:forKeyPath:options:context:",_9d,_9e,objj_msgSend(_9d,"options"),objj_msgSend(_9d,"context")); +if(_9f){ +objj_msgSend(_98,"didChangeValueForKey:",_9e); +} +} +objj_msgSendSuper({receiver:_98,super_class:objj_getClass("_CPObservableArray").super_class},"insertObject:atIndex:",_9a,_9b); +} +}),new objj_method(sel_getUid("removeObjectAtIndex:"),function(_a0,_a1,_a2){ +with(_a0){ +for(var i=0,_a3=objj_msgSend(_observationProxies,"count");i<_a3;i++){ +var _a4=objj_msgSend(_observationProxies,"objectAtIndex:",i),_a5=objj_msgSend(_a4,"keyPath"),_a6=_a5.indexOf(".")===0; +if(_a6){ +objj_msgSend(_a0,"willChangeValueForKey:",_a5); +} +objj_msgSend(anObject,"removeObserver:forKeyPath:",_a4,_a5); +if(_a6){ +objj_msgSend(_a0,"didChangeValueForKey:",_a5); +} +} +objj_msgSendSuper({receiver:_a0,super_class:objj_getClass("_CPObservableArray").super_class},"removeObjectAtIndex:",_a2); +} +}),new objj_method(sel_getUid("objectsAtIndexes:"),function(_a7,_a8,_a9){ +with(_a7){ +return objj_msgSend(_CPObservableArray,"arrayWithArray:",objj_msgSendSuper({receiver:_a7,super_class:objj_getClass("_CPObservableArray").super_class},"objectsAtIndexes:",_a9)); +} +}),new objj_method(sel_getUid("addObject:"),function(_aa,_ab,_ac){ +with(_aa){ +objj_msgSend(_aa,"insertObject:atIndex:",_ac,objj_msgSend(_aa,"count")); +} +}),new objj_method(sel_getUid("removeLastObject"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(_ad,"removeObjectAtIndex:",objj_msgSend(_ad,"count")); +} +}),new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"),function(_af,_b0,_b1,_b2){ +with(_af){ +var _b3=objj_msgSend(_af,"objectAtIndex:",_b1); +for(var i=0,_b4=objj_msgSend(_observationProxies,"count");i<_b4;i++){ +var _b5=objj_msgSend(_observationProxies,"objectAtIndex:",i),_b6=objj_msgSend(_b5,"keyPath"),_b7=_b6.indexOf(".")===0; +if(_b7){ +objj_msgSend(_af,"willChangeValueForKey:",_b6); +} +objj_msgSend(_b3,"removeObserver:forKeyPath:",_b5,_b6); +objj_msgSend(_b2,"addObserver:forKeyPath:options:context:",_b5,_b6,objj_msgSend(_b5,"options"),objj_msgSend(_b5,"context")); +if(_b7){ +objj_msgSend(_af,"didChangeValueForKey:",_b6); +} +} +objj_msgSend(_af,"replaceObjectAtIndex:withObject:",_b1,_b2); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_b8,_b9){ +with(_b8){ +var a=[]; +a.isa=_b8; +var _ba=class_copyIvarList(_b8),_bb=_ba.length; +while(_bb--){ +a[ivar_getName(_ba[_bb])]=nil; +} +return a; +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPControllerSelectionProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_controller"),new objj_ivar("_keys"),new objj_ivar("_cachedValues"),new objj_ivar("_observationProxies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithController:"),function(_bc,_bd,_be){ +with(_bc){ +if(_bc=objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPControllerSelectionProxy").super_class},"init")){ +_cachedValues=objj_msgSend(CPDictionary,"dictionary"); +_observationProxies=objj_msgSend(CPArray,"array"); +_controller=_be; +} +return _bc; +} +}),new objj_method(sel_getUid("valueForKey:"),function(_bf,_c0,_c1){ +with(_bf){ +var _c2=objj_msgSend(_cachedValues,"objectForKey:",_c1); +if(_c2!==undefined&&_c2!==nil){ +return _c2; +} +var _c3=objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"valueForKeyPath:",_c1),_c4=objj_msgSend(_c3,"count"); +if(!_c4){ +_c2=CPNoSelectionMarker; +}else{ +if(_c4===1){ +_c2=objj_msgSend(_c3,"objectAtIndex:",0); +}else{ +if(objj_msgSend(_controller,"alwaysUsesMultipleValuesMarker")){ +_c2=CPMultipleValuesMarker; +}else{ +_c2=objj_msgSend(_c3,"objectAtIndex:",0); +for(var i=0,_c4=objj_msgSend(_c3,"count");i<_c4&&_c2!=CPMultipleValuesMarker;i++){ +if(!objj_msgSend(_c2,"isEqual:",objj_msgSend(_c3,"objectAtIndex:",i))){ +_c2=CPMultipleValuesMarker; +} +} +} +} +} +objj_msgSend(_cachedValues,"setValue:forKey:",_c2,_c1); +return _c2; +} +}),new objj_method(sel_getUid("count"),function(_c5,_c6){ +with(_c5){ +return objj_msgSend(_cachedValues,"count"); +} +}),new objj_method(sel_getUid("keyEnumerator"),function(_c7,_c8){ +with(_c7){ +return objj_msgSend(_cachedValues,"keyEnumerator"); +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_c9,_ca,_cb,_cc){ +with(_c9){ +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"setValue:forKey:",_cb,_cc); +} +}),new objj_method(sel_getUid("controllerWillChange"),function(_cd,_ce){ +with(_cd){ +_keys=objj_msgSend(_cachedValues,"allKeys"); +if(!_keys){ +return; +} +for(var i=0,_cf=_keys.length;i<_cf;i++){ +objj_msgSend(_cd,"willChangeValueForKey:",_keys[i]); +} +objj_msgSend(_cachedValues,"removeAllObjects"); +} +}),new objj_method(sel_getUid("controllerDidChange"),function(_d0,_d1){ +with(_d0){ +objj_msgSend(_cachedValues,"removeAllObjects"); +if(!_keys){ +return; +} +for(var i=0,_d2=_keys.length;i<_d2;i++){ +objj_msgSend(_d0,"didChangeValueForKey:",_keys[i]); +} +_keys=nil; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_d3,_d4,_d5,_d6,_d7,_d8){ +with(_d3){ +objj_msgSend(_cachedValues,"removeObjectForKey:",_d5); +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_d9,_da,_db,_dc,_dd,_de){ +with(_d9){ +var _df=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_dc,_db,_d9); +objj_msgSend(_df,"setNotifyObject:",YES); +objj_msgSend(_observationProxies,"addObject:",_df); +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"addObserver:forKeyPath:options:context:",_df,_dc,_dd,_de); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_e0,_e1,_e2,_e3){ +with(_e0){ +var _e4=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_e3,_e2,_e0),_e5=objj_msgSend(_observationProxies,"indexOfObject:",_e4); +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"removeObserver:forKeyPath:",objj_msgSend(_observationProxies,"objectAtIndex:",_e5),_e3); +objj_msgSend(_observationProxies,"removeObjectAtIndex:",_e5); +} +})]); +p;13;CPOpenPanel.jt;2079;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2039; +objj_executeFile("AppKit/CPPanel.j",NO); +var _1=objj_allocateClassPair(CPPanel,"CPOpenPanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_canChooseFiles"),new objj_ivar("_canChooseDirectories"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_directoryURL"),new objj_ivar("_URLs")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("canChooseFiles"),function(_3,_4){ +with(_3){ +return _canChooseFiles; +} +}),new objj_method(sel_getUid("setCanChooseFiles:"),function(_5,_6,_7){ +with(_5){ +_canChooseFiles=_7; +} +}),new objj_method(sel_getUid("canChooseDirectories"),function(_8,_9){ +with(_8){ +return _canChooseDirectories; +} +}),new objj_method(sel_getUid("setCanChooseDirectories:"),function(_a,_b,_c){ +with(_a){ +_canChooseDirectories=_c; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_d,_e){ +with(_d){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_f,_10,_11){ +with(_f){ +_allowsMultipleSelection=_11; +} +}),new objj_method(sel_getUid("directoryURL"),function(_12,_13){ +with(_12){ +return _directoryURL; +} +}),new objj_method(sel_getUid("setDirectoryURL:"),function(_14,_15,_16){ +with(_14){ +_directoryURL=_16; +} +}),new objj_method(sel_getUid("runModal"),function(_17,_18){ +with(_17){ +if(typeof window["cpOpenPanel"]==="function"){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +var _19={directoryURL:objj_msgSend(_17,"directoryURL"),canChooseFiles:objj_msgSend(_17,"canChooseFiles"),canChooseDirectories:objj_msgSend(_17,"canChooseDirectories"),allowsMultipleSelection:objj_msgSend(_17,"allowsMultipleSelection")}; +var _1a=window.cpOpenPanel(_19); +_URLs=_1a.URLs; +return _1a.button; +} +throw "-runModal is unimplemented."; +} +}),new objj_method(sel_getUid("URLs"),function(_1b,_1c){ +with(_1b){ +return _URLs; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("openPanel"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(objj_msgSend(CPOpenPanel,"alloc"),"init"); +} +})]); +p;15;CPOutlineView.jt;38503;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.jt;38445; +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +CPOutlineViewColumnDidMoveNotification="CPOutlineViewColumnDidMoveNotification"; +CPOutlineViewColumnDidResizeNotification="CPOutlineViewColumnDidResizeNotification"; +CPOutlineViewItemDidCollapseNotification="CPOutlineViewItemDidCollapseNotification"; +CPOutlineViewItemDidExpandNotification="CPOutlineViewItemDidExpandNotification"; +CPOutlineViewItemWillCollapseNotification="CPOutlineViewItemWillCollapseNotification"; +CPOutlineViewItemWillExpandNotification="CPOutlineViewItemWillExpandNotification"; +CPOutlineViewSelectionDidChangeNotification="CPOutlineViewSelectionDidChangeNotification"; +CPOutlineViewSelectionIsChangingNotification="CPOutlineViewSelectionIsChangingNotification"; +var _1=1<<1,_2=1<<2,_3=1<<3,_4=1<<4,_5=1<<5,_6=1<<6,_7=1<<7,_8=1<<8,_9=1<<9,_a=1<<10; +var _b=1<<1,_c=1<<2,_d=1<<3,_e=1<<4,_f=1<<5,_10=1<<6,_11=1<<7,_12=1<<8,_13=1<<9,_14=1<<10,_15=1<<11,_16=1<<12,_17=1<<13,_18=1<<14,_19=1<<15,_1a=1<<16,_1b=1<<17,_1c=1<<18,_1d=1<<19,_1e=1<<20,_1f=1<<21,_20=1<<22,_21=1<<23,_22=1<<24; +CPOutlineViewDropOnItemIndex=-1; +var _23=objj_allocateClassPair(CPTableView,"CPOutlineView"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineViewDataSource"),new objj_ivar("_outlineViewDelegate"),new objj_ivar("_outlineTableColumn"),new objj_ivar("_indentationPerLevel"),new objj_ivar("_indentationMarkerFollowsDataView"),new objj_ivar("_implementedOutlineViewDataSourceMethods"),new objj_ivar("_implementedOutlineViewDelegateMethods"),new objj_ivar("_rootItemInfo"),new objj_ivar("_itemsForRows"),new objj_ivar("_itemInfosForItems"),new objj_ivar("_disclosureControlPrototype"),new objj_ivar("_disclosureControlsForRows"),new objj_ivar("_disclosureControlData"),new objj_ivar("_disclosureControlQueue"),new objj_ivar("_shouldRetargetItem"),new objj_ivar("_retargetedItem"),new objj_ivar("_shouldRetargetChildIndex"),new objj_ivar("_retargedChildIndex"),new objj_ivar("_dragHoverTimer"),new objj_ivar("_dropItem")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithFrame:"),function(_25,_26,_27){ +with(_25){ +_25=objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"initWithFrame:",_27); +if(_25){ +_selectionHighlightStyle=CPTableViewSelectionHighlightStyleSourceList; +_rootItemInfo={isExpanded:YES,isExpandable:NO,level:-1,row:-1,children:[],weight:0}; +_itemsForRows=[]; +_itemInfosForItems={}; +_disclosureControlsForRows=[]; +_retargetedItem=nil; +_shouldRetargetItem=NO; +_retargedChildIndex=nil; +_shouldRetargetChildIndex=NO; +_startHoverTime=nil; +objj_msgSend(_25,"setIndentationPerLevel:",16); +objj_msgSend(_25,"setIndentationMarkerFollowsDataView:",YES); +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"setDataSource:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource,"alloc"),"initWithOutlineView:",_25)); +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"setDelegate:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDelegate,"alloc"),"initWithOutlineView:",_25)); +objj_msgSend(_25,"setDisclosureControlPrototype:",objj_msgSend(objj_msgSend(CPDisclosureButton,"alloc"),"initWithFrame:",CGRectMake(0,0,10,10))); +} +return _25; +} +}),new objj_method(sel_getUid("setDataSource:"),function(_28,_29,_2a){ +with(_28){ +if(_outlineViewDataSource===_2a){ +return; +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:child:ofItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:child:ofItem:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:isItemExpandable:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:isItemExpandable:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:numberOfChildrenOfItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:numberOfChildrenOfItem:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:objectValueForTableColumn:byItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:objectValueForTableColumn:byItem:'"); +} +_outlineViewDataSource=_2a; +_implementedOutlineViewDataSourceMethods=0; +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:setObjectValue:forTableColumn:byItem:"))){ +_implementedOutlineViewDataSourceMethods|=_1; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:shouldDeferDisplayingChildrenOfItem:"))){ +_implementedOutlineViewDataSourceMethods|=_2; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:acceptDrop:item:childIndex:"))){ +_implementedOutlineViewDataSourceMethods|=_3; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:validateDrop:proposedItem:proposedChildIndex:"))){ +_implementedOutlineViewDataSourceMethods|=_4; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:validateDrop:proposedRow:proposedDropOperation:"))){ +_implementedOutlineViewDataSourceMethods|=_5; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:"))){ +_implementedOutlineViewDataSourceMethods|=_6; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:itemForPersistentObject:"))){ +_implementedOutlineViewDataSourceMethods|=_7; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:persistentObjectForItem:"))){ +_implementedOutlineViewDataSourceMethods|=_8; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:writeItems:toPasteboard:"))){ +_implementedOutlineViewDataSourceMethods|=_9; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:sortDescriptorsDidChange:"))){ +_implementedOutlineViewDataSourceMethods|=_a; +} +objj_msgSend(_28,"reloadData"); +} +}),new objj_method(sel_getUid("dataSource"),function(_2b,_2c){ +with(_2b){ +return _outlineViewDataSource; +} +}),new objj_method(sel_getUid("isExpandable:"),function(_2d,_2e,_2f){ +with(_2d){ +if(!_2f){ +return YES; +} +var _30=_itemInfosForItems[objj_msgSend(_2f,"UID")]; +if(!_30){ +return NO; +} +return _30.isExpandable; +} +}),new objj_method(sel_getUid("isItemExpanded:"),function(_31,_32,_33){ +with(_31){ +if(!_33){ +return YES; +} +var _34=_itemInfosForItems[objj_msgSend(_33,"UID")]; +if(!_34){ +return NO; +} +return _34.isExpanded; +} +}),new objj_method(sel_getUid("expandItem:"),function(_35,_36,_37){ +with(_35){ +objj_msgSend(_35,"expandItem:expandChildren:",_37,NO); +} +}),new objj_method(sel_getUid("expandItem:expandChildren:"),function(_38,_39,_3a,_3b){ +with(_38){ +var _3c=null; +if(!_3a){ +_3c=_rootItemInfo; +}else{ +_3c=_itemInfosForItems[objj_msgSend(_3a,"UID")]; +} +if(!_3c){ +return; +} +if(!_3c.isExpanded){ +objj_msgSend(_38,"_noteItemWillExpand:",_3a); +_3c.isExpanded=YES; +objj_msgSend(_38,"_noteItemDidExpand:",_3a); +objj_msgSend(_38,"reloadItem:reloadChildren:",_3a,YES); +} +if(_3b){ +var _3d=_3c.children,_3e=_3d.length; +while(_3e--){ +objj_msgSend(_38,"expandItem:expandChildren:",_3d[_3e],YES); +} +} +} +}),new objj_method(sel_getUid("collapseItem:"),function(_3f,_40,_41){ +with(_3f){ +if(!_41){ +return; +} +var _42=_itemInfosForItems[objj_msgSend(_41,"UID")]; +if(!_42){ +return; +} +if(!_42.isExpanded){ +return; +} +objj_msgSend(_3f,"_noteItemWillCollapse:",_41); +_42.isExpanded=NO; +objj_msgSend(_3f,"_noteItemDidCollapse:",_41); +objj_msgSend(_3f,"reloadItem:reloadChildren:",_41,YES); +} +}),new objj_method(sel_getUid("reloadItem:"),function(_43,_44,_45){ +with(_43){ +objj_msgSend(_43,"reloadItem:reloadChildren:",_45,NO); +} +}),new objj_method(sel_getUid("reloadItem:reloadChildren:"),function(_46,_47,_48,_49){ +with(_46){ +if(!!_49||!_48){ +_4a(_46,_48); +}else{ +_4b(_46,_48); +} +objj_msgSendSuper({receiver:_46,super_class:objj_getClass("CPOutlineView").super_class},"reloadData"); +} +}),new objj_method(sel_getUid("itemAtRow:"),function(_4c,_4d,_4e){ +with(_4c){ +return _itemsForRows[_4e]||nil; +} +}),new objj_method(sel_getUid("rowForItem:"),function(_4f,_50,_51){ +with(_4f){ +if(!_51){ +return _rootItemInfo.row; +} +var _52=_itemInfosForItems[objj_msgSend(_51,"UID")]; +if(!_52){ +return CPNotFound; +} +return _52.row; +} +}),new objj_method(sel_getUid("setOutlineTableColumn:"),function(_53,_54,_55){ +with(_53){ +if(_outlineTableColumn===_55){ +return; +} +_outlineTableColumn=_55; +objj_msgSend(_53,"reloadData"); +} +}),new objj_method(sel_getUid("outlineTableColumn"),function(_56,_57){ +with(_56){ +return _outlineTableColumn; +} +}),new objj_method(sel_getUid("levelForItem:"),function(_58,_59,_5a){ +with(_58){ +if(!_5a){ +return _rootItemInfo.level; +} +var _5b=_itemInfosForItems[objj_msgSend(_5a,"UID")]; +if(!_5b){ +return CPNotFound; +} +return _5b.level; +} +}),new objj_method(sel_getUid("levelForRow:"),function(_5c,_5d,_5e){ +with(_5c){ +return objj_msgSend(_5c,"levelForItem:",objj_msgSend(_5c,"itemAtRow:",_5e)); +} +}),new objj_method(sel_getUid("setIndentationPerLevel:"),function(_5f,_60,_61){ +with(_5f){ +if(_indentationPerLevel===_61){ +return; +} +_indentationPerLevel=_61; +objj_msgSend(_5f,"reloadData"); +} +}),new objj_method(sel_getUid("indentationPerLevel"),function(_62,_63){ +with(_62){ +return _indentationPerLevel; +} +}),new objj_method(sel_getUid("setIndentationMarkerFollowsDataView:"),function(_64,_65,_66){ +with(_64){ +if(_indentationMarkerFollowsDataView===_66){ +return; +} +_indentationMarkerFollowsDataView=_66; +objj_msgSend(_64,"reloadData"); +} +}),new objj_method(sel_getUid("indentationMarkerFollowsDataView"),function(_67,_68){ +with(_67){ +return _indentationMarkerFollowsDataView; +} +}),new objj_method(sel_getUid("parentForItem:"),function(_69,_6a,_6b){ +with(_69){ +if(!_6b){ +return nil; +} +var _6c=_itemInfosForItems[objj_msgSend(_6b,"UID")]; +if(!_6c){ +return nil; +} +var _6d=_6c.parent; +if(_6c[objj_msgSend(_6d,"UID")]===_rootItemInfo){ +_6d=nil; +} +return _6d; +} +}),new objj_method(sel_getUid("frameOfOutlineDataViewAtColumn:row:"),function(_6e,_6f,_70,_71){ +with(_6e){ +var _72=objj_msgSendSuper({receiver:_6e,super_class:objj_getClass("CPOutlineView").super_class},"frameOfDataViewAtColumn:row:",_70,_71),_73=(objj_msgSend(_6e,"levelForRow:",_71)+1)*objj_msgSend(_6e,"indentationPerLevel"); +_72.origin.x+=_73; +_72.size.width-=_73; +return _72; +} +}),new objj_method(sel_getUid("_performSelection:forRow:context:"),function(_74,_75,_76,_77,_78){ +with(_74){ +objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPOutlineView").super_class},"_performSelection:forRow:context:",_76,_77,_78); +var _79=_disclosureControlsForRows[_77],_7a=_76?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_79,"performSelector:withObject:",CPSelectorFromString(_7a),CPThemeStateSelected); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_outlineViewDelegate===_7d){ +return; +} +var _7e=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_outlineViewDelegate){ +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidMove:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewColumnDidMoveNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidResize:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewColumnDidResizeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionDidChange:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewSelectionDidChangeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionIsChanging:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewSelectionIsChangingNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillExpand:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemWillExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidExpand:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemDidExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillCollapse:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemWillCollapseNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidCollapse:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemDidCollapseNotification,_7b); +} +} +_outlineViewDelegate=_7d; +_implementedOutlineViewDelegateMethods=0; +var _7f=[_b,sel_getUid("outlineView:dataViewForTableColumn:item:"),_c,sel_getUid("outlineView:didClickTableColumn:"),_d,sel_getUid("outlineView:didDragTableColumn:"),_e,sel_getUid("outlineView:heightOfRowByItem:"),_f,sel_getUid("outlineView:isGroupItem:"),_10,sel_getUid("outlineView:mouseDownInHeaderOfTableColumn:"),_11,sel_getUid("outlineView:nextTypeSelectMatchFromItem:toItem:forString:"),_12,sel_getUid("outlineView:selectionIndexesForProposedSelection:"),_13,sel_getUid("outlineView:shouldCollapseItem:"),_14,sel_getUid("outlineView:shouldEditTableColumn:item:"),_15,sel_getUid("outlineView:shouldExpandItem:"),_16,sel_getUid("outlineView:shouldReorderColumn:toColumn:"),_17,sel_getUid("outlineView:shouldSelectItem:"),_18,sel_getUid("outlineView:shouldSelectTableColumn:"),_19,sel_getUid("outlineView:shouldShowOutlineViewForItem:"),_1a,sel_getUid("outlineView:shouldShowViewExpansionForTableColumn:item:"),_1b,sel_getUid("outlineView:shouldTrackView:forTableColumn:item:"),_1c,sel_getUid("outlineView:shouldTypeSelectForEvent:withCurrentSearchString:"),_1d,sel_getUid("outlineView:sizeToFitWidthOfColumn:"),_1e,sel_getUid("outlineView:toolTipForView:rect:tableColumn:item:mouseLocation:"),_1f,sel_getUid("outlineView:typeSelectStringForTableColumn:item:"),_20,sel_getUid("outlineView:willDisplayOutlineView:forTableColumn:item:"),_21,sel_getUid("outlineView:willDisplayView:forTableColumn:item:"),_22,sel_getUid("selectionShouldChangeInOutlineView:")],_80=objj_msgSend(_7f,"count"); +for(var i=0;i<_80;i+=2){ +var _81=_7f[i],_82=_7f[i+1]; +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",_82)){ +_implementedOutlineViewDelegateMethods|=_81; +} +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidMove:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewColumnDidMove:"),CPOutlineViewColumnDidMoveNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidResize:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewColumnDidMove:"),CPOutlineViewColumnDidResizeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionDidChange:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewSelectionDidChange:"),CPOutlineViewSelectionDidChangeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionIsChanging:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewSelectionIsChanging:"),CPOutlineViewSelectionIsChangingNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillExpand:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemWillExpand:"),CPOutlineViewItemWillExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidExpand:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemDidExpand:"),CPOutlineViewItemDidExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillCollapse:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemWillCollapse:"),CPOutlineViewItemWillCollapseNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidCollapse:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemDidCollapse:"),CPOutlineViewItemDidCollapseNotification,_7b); +} +} +}),new objj_method(sel_getUid("delegate"),function(_83,_84){ +with(_83){ +return _outlineViewDelegate; +} +}),new objj_method(sel_getUid("setDisclosureControlPrototype:"),function(_85,_86,_87){ +with(_85){ +_disclosureControlPrototype=_87; +_disclosureControlData=nil; +_disclosureControlQueue=[]; +objj_msgSend(_85,"reloadData"); +} +}),new objj_method(sel_getUid("reloadData"),function(_88,_89){ +with(_88){ +objj_msgSend(_88,"reloadItem:reloadChildren:",nil,YES); +} +}),new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"),function(_8a,_8b,_8c,_8d){ +with(_8a){ +var _8e=objj_msgSend(_8a,"tableColumns")[_8c]; +if(_8e===_outlineTableColumn){ +return objj_msgSend(_8a,"frameOfOutlineDataViewAtColumn:row:",_8c,_8d); +} +return objj_msgSendSuper({receiver:_8a,super_class:objj_getClass("CPOutlineView").super_class},"frameOfDataViewAtColumn:row:",_8c,_8d); +} +}),new objj_method(sel_getUid("setDropItem:dropChildIndex:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_dropItem!==_91&&_92<0&&objj_msgSend(_8f,"isExpandable:",_91)&&!objj_msgSend(_8f,"isItemExpanded:",_91)){ +if(_dragHoverTimer){ +objj_msgSend(_dragHoverTimer,"invalidate"); +} +var _93=function(){ +if(_dropItem){ +objj_msgSend(_dropOperationFeedbackView,"blink"); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.3,objj_msgSend(_8f,"expandItem:",_dropItem),NO); +} +}; +_dragHoverTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.8,_93,NO); +} +if(_92>=0){ +objj_msgSend(_dragHoverTimer,"invalidate"); +_dragHoverTimer=nil; +} +_dropItem=_91; +_retargetedItem=_91; +_shouldRetargetItem=YES; +_retargedChildIndex=_92; +_shouldRetargetChildIndex=YES; +var _94=(_retargetedItem!==nil)?_itemInfosForItems[objj_msgSend(_retargetedItem,"UID")]:_rootItemInfo; +if(_retargedChildIndex===objj_msgSend(_94.children,"count")){ +var _95=objj_msgSend(_94.children,"lastObject"); +_retargetedDropRow=objj_msgSend(_8f,"rowForItem:",_95)+1; +}else{ +var _95=(_retargedChildIndex!==CPOutlineViewDropOnItemIndex)?_94.children[_retargedChildIndex]:_retargetedItem; +_retargetedDropRow=objj_msgSend(_8f,"rowForItem:",_95); +} +} +}),new objj_method(sel_getUid("_draggingEnded"),function(_96,_97){ +with(_96){ +objj_msgSendSuper({receiver:_96,super_class:objj_getClass("CPOutlineView").super_class},"_draggingEnded"); +_dropItem=nil; +objj_msgSend(_dragHoverTimer,"invalidate"); +_dragHoverTimer=nil; +} +}),new objj_method(sel_getUid("_parentItemForUpperRow:andLowerRow:atMouseOffset:"),function(_98,_99,_9a,_9b,_9c){ +with(_98){ +if(_shouldRetargetItem){ +return _retargetedItem; +} +var _9d=objj_msgSend(_98,"levelForRow:",_9b); +upperItem=objj_msgSend(_98,"itemAtRow:",_9a); +upperLevel=objj_msgSend(_98,"levelForItem:",upperItem); +while(upperLevel>_9d){ +upperLevel=objj_msgSend(_98,"levelForItem:",upperItem); +if(_9c.x>(upperLevel+1)*objj_msgSend(_98,"indentationPerLevel")){ +return objj_msgSend(_98,"parentForItem:",upperItem); +} +upperItem=objj_msgSend(_98,"parentForItem:",upperItem); +} +return objj_msgSend(_98,"parentForItem:",objj_msgSend(_98,"itemAtRow:",_9b)); +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"),function(_9e,_9f,_a0,_a1,_a2){ +with(_9e){ +var _a3=objj_msgSendSuper({receiver:_9e,super_class:objj_getClass("CPOutlineView").super_class},"_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:",_a0,_a1,_a2),_a4=objj_msgSend(_9e,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_a0,_a1,_a2),_a5=objj_msgSend(_9e,"levelForItem:",_a4); +_a3.origin.x=(_a5+1)*objj_msgSend(_9e,"indentationPerLevel"); +_a3.size.width-=_a3.origin.x; +return _a3; +} +}),new objj_method(sel_getUid("_loadDataViewsInRows:columns:"),function(_a6,_a7,_a8,_a9){ +with(_a6){ +objj_msgSendSuper({receiver:_a6,super_class:objj_getClass("CPOutlineView").super_class},"_loadDataViewsInRows:columns:",_a8,_a9); +var _aa=objj_msgSend(objj_msgSend(_a6,"tableColumns"),"indexOfObjectIdenticalTo:",objj_msgSend(_a6,"outlineTableColumn")); +if(!objj_msgSend(_a9,"containsIndex:",_aa)){ +return; +} +var _ab=[]; +objj_msgSend(_a8,"getIndexes:maxCount:inIndexRange:",_ab,-1,nil); +var _ac=0,_ad=_ab.length; +for(;_ac<_ad;++_ac){ +var row=_ab[_ac],_ae=_itemsForRows[row],_af=objj_msgSend(_a6,"isExpandable:",_ae); +if(!_af){ +continue; +} +var _b0=objj_msgSend(_a6,"_dequeueDisclosureControl"),_b1=objj_msgSend(_b0,"frame"),_b2=objj_msgSend(_a6,"frameOfDataViewAtColumn:row:",_aa,row); +_b1.origin.x=_indentationMarkerFollowsDataView?(_b2.origin.x)-(_b1.size.width):0; +_b1.origin.y=(_b2.origin.y); +_b1.size.height=(_b2.size.height); +_disclosureControlsForRows[row]=_b0; +objj_msgSend(_b0,"setState:",objj_msgSend(_a6,"isItemExpanded:",_ae)?CPOnState:CPOffState); +var _b3=objj_msgSend(_a6,"isRowSelected:",row)?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_b0,"performSelector:withObject:",CPSelectorFromString(_b3),CPThemeStateSelected); +objj_msgSend(_b0,"setFrame:",_b1); +objj_msgSend(_a6,"addSubview:",_b0); +} +} +}),new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"),function(_b4,_b5,_b6,_b7){ +with(_b4){ +objj_msgSendSuper({receiver:_b4,super_class:objj_getClass("CPOutlineView").super_class},"_unloadDataViewsInRows:columns:",_b6,_b7); +var _b8=objj_msgSend(objj_msgSend(_b4,"tableColumns"),"indexOfObjectIdenticalTo:",objj_msgSend(_b4,"outlineTableColumn")); +if(!objj_msgSend(_b7,"containsIndex:",_b8)){ +return; +} +var _b9=[]; +objj_msgSend(_b6,"getIndexes:maxCount:inIndexRange:",_b9,-1,nil); +var _ba=0,_bb=_b9.length; +for(;_ba<_bb;++_ba){ +var row=_b9[_ba],_bc=_disclosureControlsForRows[row]; +if(!_bc){ +continue; +} +objj_msgSend(_bc,"removeFromSuperview"); +objj_msgSend(_b4,"_enqueueDisclosureControl:",_bc); +_disclosureControlsForRows[row]=nil; +} +} +}),new objj_method(sel_getUid("_toggleFromDisclosureControl:"),function(_bd,_be,_bf){ +with(_bd){ +var _c0=objj_msgSend(_bf,"frame"),_c1=objj_msgSend(_bd,"itemAtRow:",objj_msgSend(_bd,"rowAtPoint:",{x:(_c0.origin.x),y:(_c0.origin.y+(_c0.size.height)/2)})); +if(objj_msgSend(_bd,"isItemExpanded:",_c1)){ +objj_msgSend(_bd,"collapseItem:",_c1); +}else{ +objj_msgSend(_bd,"expandItem:",_c1); +} +} +}),new objj_method(sel_getUid("_enqueueDisclosureControl:"),function(_c2,_c3,_c4){ +with(_c2){ +_disclosureControlQueue.push(_c4); +} +}),new objj_method(sel_getUid("_dequeueDisclosureControl"),function(_c5,_c6){ +with(_c5){ +if(_disclosureControlQueue.length){ +return _disclosureControlQueue.pop(); +} +if(!_disclosureControlData){ +if(!_disclosureControlPrototype){ +return nil; +}else{ +_disclosureControlData=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_disclosureControlPrototype); +} +} +var _c7=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_disclosureControlData); +objj_msgSend(_c7,"setTarget:",_c5); +objj_msgSend(_c7,"setAction:",sel_getUid("_toggleFromDisclosureControl:")); +return _c7; +} +}),new objj_method(sel_getUid("_noteSelectionIsChanging"),function(_c8,_c9){ +with(_c8){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewSelectionIsChangingNotification,_c8,nil); +} +}),new objj_method(sel_getUid("_noteSelectionDidChange"),function(_ca,_cb){ +with(_ca){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewSelectionDidChangeNotification,_ca,nil); +} +}),new objj_method(sel_getUid("_noteItemWillExpand:"),function(_cc,_cd,_ce){ +with(_cc){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemWillExpandNotification,_cc,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_ce,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemDidExpand:"),function(_cf,_d0,_d1){ +with(_cf){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemDidExpandNotification,_cf,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d1,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemWillCollapse:"),function(_d2,_d3,_d4){ +with(_d2){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemWillCollapseNotification,_d2,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d4,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemDidCollapse:"),function(_d5,_d6,_d7){ +with(_d5){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemDidCollapseNotification,_d5,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d7,"CPObject")); +} +})]); +var _4b=function(_d8,_d9){ +if(!_d9){ +return; +} +with(_d8){ +var _da=_itemInfosForItems,_db=_outlineViewDataSource,_dc=objj_msgSend(_d9,"UID"),_dd=_da[_dc]; +if(!_dd){ +return []; +} +var _de=_dd.parent,_df=_de?_da[objj_msgSend(_de,"UID")]:_rootItemInfo,_e0=_df.children,_e1=objj_msgSend(_e0,"indexOfObjectIdenticalTo:",_d9),_e2=objj_msgSend(_db,"outlineView:child:ofItem:",_d8,_e1,_de); +if(_d9!==_e2){ +_da[objj_msgSend(_d9,"UID")]=nil; +_da[objj_msgSend(_e2,"UID")]=_dd; +_e0[_e1]=_e2; +_itemsForRows[_dd.row]=_e2; +} +_dd.isExpandable=objj_msgSend(_db,"outlineView:isItemExpandable:",_d8,_e2); +_dd.isExpanded=_dd.isExpandable&&_dd.isExpanded; +} +}; +var _4a=function(_e3,_e4,_e5){ +with(_e3){ +var _e6=_itemInfosForItems,_e7=_outlineViewDataSource; +if(!_e4){ +var _e8=_rootItemInfo; +}else{ +var _e9=objj_msgSend(_e4,"UID"),_e8=_e6[_e9]; +if(!_e8){ +return []; +} +_e8.isExpandable=objj_msgSend(_e7,"outlineView:isItemExpandable:",_e3,_e4); +if(!_e8.isExpandable&&_e8.isExpanded){ +_e8.isExpanded=NO; +_e8.children=[]; +} +} +var _ea=_e8.weight,_eb=_e4?[_e4]:[]; +if(_e8.isExpanded&&(!(_implementedOutlineViewDataSourceMethods&_2)||!objj_msgSend(_e7,"outlineView:shouldDeferDisplayingChildrenOfItem:",_e3,_e4))){ +var _ec=0,_ed=objj_msgSend(_e7,"outlineView:numberOfChildrenOfItem:",_e3,_e4),_ee=_e8.level+1; +_e8.children=[]; +for(;_ec<_ed;++_ec){ +var _ef=objj_msgSend(_e7,"outlineView:child:ofItem:",_e3,_ec,_e4),_f0=_e6[objj_msgSend(_ef,"UID")]; +if(!_f0){ +_f0={isExpanded:NO,isExpandable:NO,children:[],weight:1}; +_e6[objj_msgSend(_ef,"UID")]=_f0; +} +_e8.children[_ec]=_ef; +var _f1=_4a(_e3,_ef,YES); +_f0.parent=_e4; +_f0.level=_ee; +_eb=_eb.concat(_f1); +} +} +_e8.weight=_eb.length; +if(!_e5){ +var _ec=MAX(_e8.row,0),_f2=_itemsForRows; +_eb.unshift(_ec,_ea); +_f2.splice.apply(_f2,_eb); +var _ed=_f2.length; +for(;_ec<_ed;++_ec){ +_e6[objj_msgSend(_f2[_ec],"UID")].row=_ec; +} +var _f3=_e8.weight-_ea; +if(_f3!==0){ +var _f4=_e8.parent; +while(_f4){ +var _f5=_e6[objj_msgSend(_f4,"UID")]; +_f5.weight+=_f3; +_f4=_f5.parent; +} +if(_e4){ +_rootItemInfo.weight+=_f3; +} +} +} +} +return _eb; +}; +var _23=objj_allocateClassPair(CPObject,"_CPOutlineViewTableViewDataSource"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineView")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithOutlineView:"),function(_f6,_f7,_f8){ +with(_f6){ +_f6=objj_msgSendSuper({receiver:_f6,super_class:objj_getClass("_CPOutlineViewTableViewDataSource").super_class},"init"); +if(_f6){ +_outlineView=_f8; +} +return _f6; +} +}),new objj_method(sel_getUid("numberOfRowsInTableView:"),function(_f9,_fa,_fb){ +with(_f9){ +return _outlineView._itemsForRows.length; +} +}),new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"),function(_fc,_fd,_fe,_ff,aRow){ +with(_fc){ +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:objectValueForTableColumn:byItem:",_outlineView,_ff,_outlineView._itemsForRows[aRow]); +} +}),new objj_method(sel_getUid("tableView:setObjectValue:forTableColumn:row:"),function(self,_100,_101,_102,_103,aRow){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_1)){ +return; +} +objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:setObjectValue:forTableColumn:byItem:",_outlineView,_102,_103,_outlineView._itemsForRows[aRow]); +} +}),new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"),function(self,_104,_105,_106,_107){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_9)){ +return NO; +} +var _108=[]; +objj_msgSend(_106,"getIndexes:maxCount:inIndexRange:",_108,objj_msgSend(_106,"count"),nil); +var _109=objj_msgSend(_108,"count"),_10a=[]; +while(_109--){ +objj_msgSend(_10a,"addObject:",objj_msgSend(_outlineView,"itemAtRow:",objj_msgSend(_108,"objectAtIndex:",_109))); +} +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:writeItems:toPasteboard:",_outlineView,_10a,_107); +} +}),new objj_method(sel_getUid("_childIndexForDropOperation:row:offset:"),function(self,_10b,_10c,_10d,_10e){ +with(self){ +if(_outlineView._shouldRetargetChildIndex){ +return _outlineView._retargedChildIndex; +} +var _10f=CPNotFound; +if(_10c===CPTableViewDropAbove){ +var _110=objj_msgSend(_outlineView,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_10d-1,_10d,_10e),_111=(_110!==nil)?_outlineView._itemInfosForItems[objj_msgSend(_110,"UID")]:_outlineView._rootItemInfo,_112=_111.children; +_10f=objj_msgSend(_112,"indexOfObject:",objj_msgSend(_outlineView,"itemAtRow:",_10d)); +if(_10f===CPNotFound){ +_10f=_112.length; +} +}else{ +if(_10c===CPTableViewDropOn){ +_10f=-1; +} +} +return _10f; +} +}),new objj_method(sel_getUid("_parentItemForDropOperation:row:offset:"),function(self,_113,_114,_115,_116){ +with(self){ +if(_114===CPTableViewDropAbove){ +return objj_msgSend(_outlineView,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_115-1,_115,_116); +} +return objj_msgSend(_outlineView,"itemAtRow:",_115); +} +}),new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"),function(self,_117,_118,_119,_11a,_11b){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_4)){ +return CPDragOperationNone; +} +_outlineView._retargetedItem=nil; +_outlineView._shouldRetargetItem=NO; +_outlineView._retargedChildIndex=nil; +_outlineView._shouldRetargetChildIndex=NO; +var _11c=objj_msgSend(_outlineView,"convertPoint:fromView:",objj_msgSend(_119,"draggingLocation"),nil),_11d=objj_msgSend(self,"_parentItemForDropOperation:row:offset:",_11b,_11a,_11c),_11e=objj_msgSend(self,"_childIndexForDropOperation:row:offset:",_11b,_11a,_11c); +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:validateDrop:proposedItem:proposedChildIndex:",_outlineView,_119,_11d,_11e); +} +}),new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"),function(self,_11f,_120,_121,_122,_123){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_3)){ +return NO; +} +var _124=objj_msgSend(_outlineView,"convertPoint:fromView:",objj_msgSend(_121,"draggingLocation"),nil),_125=objj_msgSend(self,"_parentItemForDropOperation:row:offset:",_123,_122,_124); +childIndex=objj_msgSend(self,"_childIndexForDropOperation:row:offset:",_123,_122,_124); +_outlineView._retargetedItem=nil; +_outlineView._shouldRetargetItem=NO; +_outlineView._retargedChildIndex=nil; +_outlineView._shouldRetargetChildIndex=NO; +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:acceptDrop:item:childIndex:",_outlineView,_121,_125,childIndex); +} +})]); +var _23=objj_allocateClassPair(CPObject,"_CPOutlineViewTableViewDelegate"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineView")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithOutlineView:"),function(self,_126,_127){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPOutlineViewTableViewDelegate").super_class},"init"); +if(self){ +_outlineView=_127; +} +return self; +} +}),new objj_method(sel_getUid("tableView:dataViewForTableColumn:row:"),function(self,_128,_129,_12a,_12b){ +with(self){ +var _12c=nil; +if((_outlineView._implementedOutlineViewDelegateMethods&_b)){ +_12c=objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:dataViewForTableColumn:item:",_outlineView,_12a,objj_msgSend(_outlineView,"itemAtRow:",_12b)); +} +if(!_12c){ +_12c=objj_msgSend(_12a,"dataViewForRow:",_12b); +} +return _12c; +} +}),new objj_method(sel_getUid("tableView:shouldSelectRow:"),function(self,_12d,_12e,_12f){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_17)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:shouldSelectItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",_12f)); +} +return YES; +} +}),new objj_method(sel_getUid("tableView:shouldEditTableColumn:row:"),function(self,_130,_131,_132,aRow){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_14)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:shouldEditTableColumn:item:",_outlineView,_132,objj_msgSend(_outlineView,"itemAtRow:",aRow)); +} +return NO; +} +}),new objj_method(sel_getUid("tableView:heightOfRow:"),function(self,_133,_134,_135){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_e)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:heightOfRowByItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",_135)); +} +return objj_msgSend(_134,"rowHeight"); +} +}),new objj_method(sel_getUid("tableView:willDisplayView:forTableColumn:row:"),function(self,_136,_137,_138,_139,_13a){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_21)){ +var item=objj_msgSend(_outlineView,"itemAtRow:",_13a); +objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:willDisplayView:forTableColumn:item:",_outlineView,_138,_139,item); +} +} +}),new objj_method(sel_getUid("tableView:isGroupRow:"),function(self,_13b,_13c,row){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_f)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:isGroupItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",theRow)); +} +return NO; +} +})]); +var _23=objj_allocateClassPair(CPButton,"CPDisclosureButton"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_angle")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithFrame:"),function(self,_13d,_13e){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPDisclosureButton").super_class},"initWithFrame:",_13e); +if(self){ +objj_msgSend(self,"setBordered:",NO); +} +return self; +} +}),new objj_method(sel_getUid("setState:"),function(self,_13f,_140){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPDisclosureButton").super_class},"setState:",_140); +if(objj_msgSend(self,"state")===CPOnState){ +_angle=0; +}else{ +_angle=-PI_2; +} +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_141,_142){ +with(self){ +var _143=objj_msgSend(self,"bounds"),_144=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(_144); +CGContextTranslateCTM(_144,(_143.size.width)/2,(_143.size.height)/2); +CGContextRotateCTM(_144,_angle); +CGContextTranslateCTM(_144,-(_143.size.width)/2,-(_143.size.height)/2); +CGContextTranslateCTM(_144,FLOOR(((_143.size.width)-9)/2),FLOOR(((_143.size.height)-8)/2)); +CGContextMoveToPoint(_144,0,0); +CGContextAddLineToPoint(_144,9,0); +CGContextAddLineToPoint(_144,4.5,8); +CGContextAddLineToPoint(_144,0,0); +CGContextClosePath(_144); +CGContextSetFillColor(_144,_145(objj_msgSend(self,"hasThemeState:",CPThemeStateSelected),objj_msgSend(self,"hasThemeState:",CPThemeStateHighlighted))); +CGContextFillPath(_144); +CGContextBeginPath(_144); +CGContextMoveToPoint(_144,0,0); +if(_angle===0){ +CGContextAddLineToPoint(_144,4.5,8); +CGContextAddLineToPoint(_144,9,0); +}else{ +CGContextAddLineToPoint(_144,4.5,8); +} +CGContextSetStrokeColor(_144,objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1,0.8)); +CGContextStrokePath(_144); +} +})]); +var _146="CPOutlineViewIndentationPerLevelKey",_147="CPOutlineViewOutlineTableColumnKey",_148="CPOutlineViewDataSourceKey",_149="CPOutlineViewDelegateKey"; +var _23=objj_getClass("CPOutlineView"); +if(!_23){ +throw new SyntaxError("*** Could not find definition for class \"CPOutlineView\""); +} +var _24=_23.isa; +class_addMethods(_23,[new objj_method(sel_getUid("initWithCoder:"),function(self,_14a,_14b){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"initWithCoder:",_14b); +if(self){ +_rootItemInfo={isExpanded:YES,isExpandable:NO,level:-1,row:-1,children:[],weight:0}; +_itemsForRows=[]; +_itemInfosForItems={}; +_disclosureControlsForRows=[]; +objj_msgSend(self,"setIndentationMarkerFollowsDataView:",YES); +objj_msgSend(self,"setDisclosureControlPrototype:",objj_msgSend(objj_msgSend(CPDisclosureButton,"alloc"),"initWithFrame:",CGRectMake(0,0,10,10))); +_outlineTableColumn=objj_msgSend(_14b,"decodeObjectForKey:",_147); +_indentationPerLevel=objj_msgSend(_14b,"decodeFloatForKey:",_146); +_outlineViewDataSource=objj_msgSend(_14b,"decodeObjectForKey:",_148); +_outlineViewDelegate=objj_msgSend(_14b,"decodeObjectForKey:",_149); +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"setDataSource:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource,"alloc"),"initWithOutlineView:",self)); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_14c,_14d){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"encodeWithCoder:",_14d); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineTableColumn,_147); +objj_msgSend(_14d,"encodeFloat:forKey:",_indentationPerLevel,_146); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineViewDataSource,_148); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineViewDelegate,_149); +} +})]); +var _145=function(_14e,_14f){ +return _14e?(_14f?objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.9,1):objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1,1)):(_14f?objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.4,1):objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.5,1)); +}; +p;9;CPPanel.jt;1172;@STATIC;1.0;i;10;CPWindow.jt;1138; +objj_executeFile("CPWindow.j",YES); +CPOKButton=1; +CPCancelButton=0; +CPDocModalWindowMask=1<<6; +var _1=objj_allocateClassPair(CPWindow,"CPPanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_becomesKeyOnlyIfNeeded"),new objj_ivar("_worksWhenModal")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isFloatingPanel"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"level")==CPFloatingWindowLevel; +} +}),new objj_method(sel_getUid("setFloatingPanel:"),function(_5,_6,_7){ +with(_5){ +objj_msgSend(_5,"setLevel:",_7?CPFloatingWindowLevel:CPNormalWindowLevel); +} +}),new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"),function(_8,_9){ +with(_8){ +return _becomesKeyOnlyIfNeeded; +} +}),new objj_method(sel_getUid("setBecomesKeyOnlyIfNeeded:"),function(_a,_b,_c){ +with(_a){ +_becomesKeyOnlyIfNeeded=_c; +} +}),new objj_method(sel_getUid("worksWhenModal"),function(_d,_e){ +with(_d){ +return _worksWhenModal; +} +}),new objj_method(sel_getUid("setWorksWhenModal:"),function(_f,_10,_11){ +with(_f){ +_worksWhenModal=_11; +} +}),new objj_method(sel_getUid("canBecomeMainWindow"),function(_12,_13){ +with(_12){ +return NO; +} +})]); +p;14;CPPasteboard.jt;8393;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;40;Foundation/CPPropertyListSerialization.jt;8248; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPPropertyListSerialization.j",NO); +CPGeneralPboard="CPGeneralPboard"; +CPFontPboard="CPFontPboard"; +CPRulerPboard="CPRulerPboard"; +CPFindPboard="CPFindPboard"; +CPDragPboard="CPDragPboard"; +CPColorPboardType="CPColorPboardType"; +CPFilenamesPboardType="CPFilenamesPboardType"; +CPFontPboardType="CPFontPboardType"; +CPHTMLPboardType="CPHTMLPboardType"; +CPStringPboardType="CPStringPboardType"; +CPURLPboardType="CPURLPboardType"; +CPImagesPboardType="CPImagesPboardType"; +CPVideosPboardType="CPVideosPboardType"; +UTF8PboardType="public.utf8-plain-text"; +CPImagePboardType="CPImagePboardType"; +var _1=nil,_2=NO; +var _3=objj_allocateClassPair(CPObject,"CPPasteboard"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_types"),new objj_ivar("_owners"),new objj_ivar("_provided"),new objj_ivar("_changeCount"),new objj_ivar("_stateUID"),new objj_ivar("_nativePasteboard")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("_initWithName:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPPasteboard").super_class},"init"); +if(_5){ +_name=_7; +_types=[]; +_owners=objj_msgSend(CPDictionary,"dictionary"); +_provided=objj_msgSend(CPDictionary,"dictionary"); +_changeCount=0; +if(_2){ +_nativePasteboard=window.cpPasteboardWithName(_7); +objj_msgSend(_5,"_synchronizePasteboard"); +} +} +return _5; +} +}),new objj_method(sel_getUid("addTypes:owner:"),function(_8,_9,_a,_b){ +with(_8){ +var i=0,_c=_a.length; +for(;i<_c;++i){ +var _d=_a[i]; +if(!objj_msgSend(_owners,"objectForKey:",_d)){ +objj_msgSend(_types,"addObject:",_d); +objj_msgSend(_provided,"removeObjectForKey:",_d); +} +objj_msgSend(_owners,"setObject:forKey:",_b,_d); +} +if(_nativePasteboard){ +var _e=objj_msgSend(_a,"copy"); +if(objj_msgSend(_a,"containsObject:",CPStringPboardType)){ +_e.push(UTF8PboardType); +} +_nativePasteboard.addTypes_(_e); +} +return ++_changeCount; +} +}),new objj_method(sel_getUid("declareTypes:owner:"),function(_f,_10,_11,_12){ +with(_f){ +objj_msgSend(_f,"_declareTypes:owner:updateNativePasteboard:",_11,_12,YES); +} +}),new objj_method(sel_getUid("_declareTypes:owner:updateNativePasteboard:"),function(_13,_14,_15,_16,_17){ +with(_13){ +objj_msgSend(_types,"setArray:",_15); +_owners=objj_msgSend(CPDictionary,"dictionary"); +_provided=objj_msgSend(CPDictionary,"dictionary"); +var _18=_types.length; +while(_18--){ +objj_msgSend(_owners,"setObject:forKey:",_16,_types[_18]); +} +if(_nativePasteboard&&_17){ +var _19=objj_msgSend(_15,"copy"); +if(objj_msgSend(_15,"containsObject:",CPStringPboardType)){ +_19.push(UTF8PboardType); +} +_nativePasteboard.declareTypes_(_19); +_changeCount=_nativePasteboard.changeCount(); +} +return ++_changeCount; +} +}),new objj_method(sel_getUid("setData:forType:"),function(_1a,_1b,_1c,_1d){ +with(_1a){ +objj_msgSend(_provided,"setObject:forKey:",_1c,_1d); +if(_1d===CPStringPboardType){ +objj_msgSend(_1a,"setData:forType:",_1c,UTF8PboardType); +} +return YES; +} +}),new objj_method(sel_getUid("setPropertyList:forType:"),function(_1e,_1f,_20,_21){ +with(_1e){ +return objj_msgSend(_1e,"setData:forType:",objj_msgSend(CPPropertyListSerialization,"dataFromPropertyList:format:",_20,CPPropertyList280NorthFormat_v1_0),_21); +} +}),new objj_method(sel_getUid("setString:forType:"),function(_22,_23,_24,_25){ +with(_22){ +objj_msgSend(_22,"setPropertyList:forType:",_24,_25); +} +}),new objj_method(sel_getUid("availableTypeFromArray:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"types"),"firstObjectCommonWithArray:",_28); +} +}),new objj_method(sel_getUid("types"),function(_29,_2a){ +with(_29){ +objj_msgSend(_29,"_synchronizePasteboard"); +return _types; +} +}),new objj_method(sel_getUid("changeCount"),function(_2b,_2c){ +with(_2b){ +return _changeCount; +} +}),new objj_method(sel_getUid("dataForType:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_provided,"objectForKey:",_2f); +if(_30){ +return _30; +} +var _31=objj_msgSend(_owners,"objectForKey:",_2f); +if(_31){ +objj_msgSend(_31,"pasteboard:provideDataForType:",_2d,_2f); +return objj_msgSend(_provided,"objectForKey:",_2f); +} +if(_2f===CPStringPboardType){ +return objj_msgSend(_2d,"dataForType:",UTF8PboardType); +} +return nil; +} +}),new objj_method(sel_getUid("_synchronizePasteboard"),function(_32,_33){ +with(_32){ +if(_nativePasteboard&&_nativePasteboard.changeCount()>_changeCount){ +var _34=objj_msgSend(_nativePasteboard.types(),"copy"); +if(objj_msgSend(_34,"containsObject:",UTF8PboardType)){ +_34.push(CPStringPboardType); +} +objj_msgSend(_32,"_declareTypes:owner:updateNativePasteboard:",_34,_32,NO); +_changeCount=_nativePasteboard.changeCount(); +} +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_35,_36,_37,_38){ +with(_35){ +if(_38===CPStringPboardType){ +var _39=_nativePasteboard.stringForType_(UTF8PboardType); +objj_msgSend(_35,"setString:forType:",_39,CPStringPboardType); +objj_msgSend(_35,"setString:forType:",_39,UTF8PboardType); +}else{ +objj_msgSend(_35,"setString:forType:",_nativePasteboard.stringForType_(_38),_38); +} +} +}),new objj_method(sel_getUid("propertyListForType:"),function(_3a,_3b,_3c){ +with(_3a){ +var _3d=objj_msgSend(_3a,"dataForType:",_3c); +if(_3d){ +return objj_msgSend(CPPropertyListSerialization,"propertyListFromData:format:",_3d,CPPropertyList280NorthFormat_v1_0); +} +return nil; +} +}),new objj_method(sel_getUid("stringForType:"),function(_3e,_3f,_40){ +with(_3e){ +return objj_msgSend(_3e,"propertyListForType:",_40); +} +}),new objj_method(sel_getUid("_generateStateUID"),function(_41,_42){ +with(_41){ +var _43=32; +_stateUID=""; +while(_43--){ +_stateUID+=FLOOR(RAND()*16).toString(16).toUpperCase(); +} +return _stateUID; +} +}),new objj_method(sel_getUid("_stateUID"),function(_44,_45){ +with(_44){ +return _stateUID; +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_46,_47){ +with(_46){ +if(_46!=objj_msgSend(CPPasteboard,"class")){ +return; +} +objj_msgSend(_46,"setVersion:",1); +_1=objj_msgSend(CPDictionary,"dictionary"); +if(typeof window.cpPasteboardWithName!=="undefined"){ +_2=YES; +} +} +}),new objj_method(sel_getUid("generalPasteboard"),function(_48,_49){ +with(_48){ +return objj_msgSend(CPPasteboard,"pasteboardWithName:",CPGeneralPboard); +} +}),new objj_method(sel_getUid("pasteboardWithName:"),function(_4a,_4b,_4c){ +with(_4a){ +var _4d=objj_msgSend(_1,"objectForKey:",_4c); +if(_4d){ +return _4d; +} +_4d=objj_msgSend(objj_msgSend(CPPasteboard,"alloc"),"_initWithName:",_4c); +objj_msgSend(_1,"setObject:forKey:",_4d,_4c); +return _4d; +} +})]); +var _4e=nil; +var _3=objj_allocateClassPair(CPPasteboard,"_CPDOMDataTransferPasteboard"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_dataTransfer")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("_setDataTransfer:"),function(_4f,_50,_51){ +with(_4f){ +_dataTransfer=_51; +} +}),new objj_method(sel_getUid("_setPasteboard:"),function(_52,_53,_54){ +with(_52){ +_dataTransfer.clearData(); +var _55=objj_msgSend(_54,"types"),_56=_55.length; +while(_56--){ +var _57=_55[_56]; +if(_57===CPStringPboardType){ +_dataTransfer.setData(_57,objj_msgSend(_54,"stringForType:",_57)); +}else{ +_dataTransfer.setData(_57,objj_msgSend(objj_msgSend(_54,"dataForType:",_57),"rawString")); +} +} +} +}),new objj_method(sel_getUid("types"),function(_58,_59){ +with(_58){ +return Array.prototype.slice.apply(_dataTransfer.types); +} +}),new objj_method(sel_getUid("dataForType:"),function(_5a,_5b,_5c){ +with(_5a){ +var _5d=_dataTransfer.getData(_5c); +if(_5c===CPStringPboardType){ +return objj_msgSend(CPData,"dataFromPropertyList:format:",_5d,kCFPropertyList280NorthFormat_v1_0); +} +return objj_msgSend(CPData,"dataWithRawString:",_5d); +} +}),new objj_method(sel_getUid("propertyListForType:"),function(_5e,_5f,_60){ +with(_5e){ +if(_60===CPStringPboardType){ +return _dataTransfer.getData(_60); +} +return objj_msgSend(CPPropertyListSerialization,"propertyListFromData:format:",objj_msgSend(_5e,"dataForType:",_60),CPPropertyListUnknownFormat); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("DOMDataTransferPasteboard"),function(_61,_62){ +with(_61){ +if(!_4e){ +_4e=objj_msgSend(objj_msgSend(_CPDOMDataTransferPasteboard,"alloc"),"init"); +} +return _4e; +} +})]); +p;15;CPPopUpButton.jt;13484;@STATIC;1.0;i;10;CPButton.ji;12;CPGeometry.ji;8;CPMenu.ji;12;CPMenuItem.jt;13403; +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPMenuItem.j",YES); +var _1=7; +CPPopUpButtonStatePullsDown=CPThemeState("pulls-down"); +var _2=objj_allocateClassPair(CPButton,"CPPopUpButton"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_selectedIndex"),new objj_ivar("_preferredEdge"),new objj_ivar("_menu")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:pullsDown:"),function(_4,_5,_6,_7){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPPopUpButton").super_class},"initWithFrame:",_6); +if(_4){ +_selectedIndex=CPNotFound; +_preferredEdge=CPMaxYEdge; +objj_msgSend(_4,"setValue:forThemeAttribute:",CPImageLeft,"image-position"); +objj_msgSend(_4,"setValue:forThemeAttribute:",CPLeftTextAlignment,"alignment"); +objj_msgSend(_4,"setValue:forThemeAttribute:",CPLineBreakByTruncatingTail,"line-break-mode"); +objj_msgSend(_4,"setMenu:",objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","")); +objj_msgSend(_4,"setPullsDown:",_7); +} +return _4; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(_8,"initWithFrame:pullsDown:",_a,NO); +} +}),new objj_method(sel_getUid("setPullsDown:"),function(_b,_c,_d){ +with(_b){ +if(_d){ +var _e=objj_msgSend(_b,"setThemeState:",CPPopUpButtonStatePullsDown); +}else{ +var _e=objj_msgSend(_b,"unsetThemeState:",CPPopUpButtonStatePullsDown); +} +if(!_e){ +return; +} +var _f=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_f,"count")<=0){ +return; +} +objj_msgSend(_f[0],"setHidden:",objj_msgSend(_b,"pullsDown")); +objj_msgSend(_b,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("pullsDown"),function(_10,_11){ +with(_10){ +return objj_msgSend(_10,"hasThemeState:",CPPopUpButtonStatePullsDown); +} +}),new objj_method(sel_getUid("addItem:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_menu,"addItem:",_14); +} +}),new objj_method(sel_getUid("addItemWithTitle:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_menu,"addItemWithTitle:action:keyEquivalent:",_17,NULL,nil); +} +}),new objj_method(sel_getUid("addItemsWithTitles:"),function(_18,_19,_1a){ +with(_18){ +var _1b=0,_1c=objj_msgSend(_1a,"count"); +for(;_1b<_1c;++_1b){ +objj_msgSend(_18,"addItemWithTitle:",_1a[_1b]); +} +} +}),new objj_method(sel_getUid("insertItemWithTitle:atIndex:"),function(_1d,_1e,_1f,_20){ +with(_1d){ +var _21=objj_msgSend(_1d,"itemArray"),_22=objj_msgSend(_21,"count"); +while(_22--){ +if(objj_msgSend(_21[_22],"title")==_1f){ +objj_msgSend(_1d,"removeItemAtIndex:",_22); +} +} +objj_msgSend(_menu,"insertItemWithTitle:action:keyEquivalent:atIndex:",_1f,NULL,nil,_20); +} +}),new objj_method(sel_getUid("removeAllItems"),function(_23,_24){ +with(_23){ +var _25=objj_msgSend(_menu,"numberOfItems"); +while(_25--){ +objj_msgSend(_menu,"removeItemAtIndex:",0); +} +} +}),new objj_method(sel_getUid("removeItemWithTitle:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(_26,"removeItemAtIndex:",objj_msgSend(_26,"indexOfItemWithTitle:",_28)); +objj_msgSend(_26,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_menu,"removeItemAtIndex:",_2b); +objj_msgSend(_29,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("selectedItem"),function(_2c,_2d){ +with(_2c){ +if(_selectedIndex<0||_selectedIndex>objj_msgSend(_2c,"numberOfItems")-1){ +return nil; +} +return objj_msgSend(_menu,"itemAtIndex:",_selectedIndex); +} +}),new objj_method(sel_getUid("titleOfSelectedItem"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(objj_msgSend(_2e,"selectedItem"),"title"); +} +}),new objj_method(sel_getUid("indexOfSelectedItem"),function(_30,_31){ +with(_30){ +return _selectedIndex; +} +}),new objj_method(sel_getUid("objectValue"),function(_32,_33){ +with(_32){ +return _selectedIndex; +} +}),new objj_method(sel_getUid("selectItem:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_34,"selectItemAtIndex:",objj_msgSend(_34,"indexOfItem:",_36)); +} +}),new objj_method(sel_getUid("selectItemAtIndex:"),function(_37,_38,_39){ +with(_37){ +if(_selectedIndex==_39){ +return; +} +if(_selectedIndex>=0&&!objj_msgSend(_37,"pullsDown")){ +objj_msgSend(objj_msgSend(_37,"selectedItem"),"setState:",CPOffState); +} +_selectedIndex=_39; +if(_selectedIndex>=0&&!objj_msgSend(_37,"pullsDown")){ +objj_msgSend(objj_msgSend(_37,"selectedItem"),"setState:",CPOnState); +} +objj_msgSend(_37,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("selectItemWithTag:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSend(_3a,"selectItemAtIndex:",objj_msgSend(_3a,"indexOfItemWithTag:",_3c)); +} +}),new objj_method(sel_getUid("selectItemWithTitle:"),function(_3d,_3e,_3f){ +with(_3d){ +objj_msgSend(_3d,"selectItemAtIndex:",objj_msgSend(_3d,"indexOfItemWithTitle:",_3f)); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"selectItemAtIndex:",objj_msgSend(_42,"intValue")); +} +}),new objj_method(sel_getUid("menu"),function(_43,_44){ +with(_43){ +return _menu; +} +}),new objj_method(sel_getUid("setMenu:"),function(_45,_46,_47){ +with(_45){ +if(_menu===_47){ +return; +} +var _48=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_menu){ +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidAddItemNotification,_menu); +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidRemoveItemNotification,_menu); +} +_menu=_47; +if(_menu){ +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidAddItem:"),CPMenuDidAddItemNotification,_menu); +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidChangeItem:"),CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidRemoveItem:"),CPMenuDidRemoveItemNotification,_menu); +} +objj_msgSend(_45,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("numberOfItems"),function(_49,_4a){ +with(_49){ +return objj_msgSend(_menu,"numberOfItems"); +} +}),new objj_method(sel_getUid("itemArray"),function(_4b,_4c){ +with(_4b){ +return objj_msgSend(_menu,"itemArray"); +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_4d,_4e,_4f){ +with(_4d){ +return objj_msgSend(_menu,"itemAtIndex:",_4f); +} +}),new objj_method(sel_getUid("itemTitleAtIndex:"),function(_50,_51,_52){ +with(_50){ +return objj_msgSend(objj_msgSend(_menu,"itemAtIndex:",_52),"title"); +} +}),new objj_method(sel_getUid("itemTitles"),function(_53,_54){ +with(_53){ +var _55=[],_56=objj_msgSend(_53,"itemArray"),_57=0,_58=objj_msgSend(_56,"count"); +for(;_57<_58;++_57){ +_55.push(objj_msgSend(_56[_57],"title")); +} +return _55; +} +}),new objj_method(sel_getUid("itemWithTitle:"),function(_59,_5a,_5b){ +with(_59){ +return objj_msgSend(_menu,"itemAtIndex:",objj_msgSend(_menu,"indexOfItemWithTitle:",_5b)); +} +}),new objj_method(sel_getUid("lastItem"),function(_5c,_5d){ +with(_5c){ +return objj_msgSend(objj_msgSend(_menu,"itemArray"),"lastObject"); +} +}),new objj_method(sel_getUid("indexOfItem:"),function(_5e,_5f,_60){ +with(_5e){ +return objj_msgSend(_menu,"indexOfItem:",_60); +} +}),new objj_method(sel_getUid("indexOfItemWithTag:"),function(_61,_62,_63){ +with(_61){ +return objj_msgSend(_menu,"indexOfItemWithTag:",_63); +} +}),new objj_method(sel_getUid("indexOfItemWithTitle:"),function(_64,_65,_66){ +with(_64){ +return objj_msgSend(_menu,"indexOfItemWithTitle:",_66); +} +}),new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"),function(_67,_68,_69){ +with(_67){ +return objj_msgSend(_menu,"indexOfItemWithRepresentedObject:",_69); +} +}),new objj_method(sel_getUid("indexOfItemWithTarget:action:"),function(_6a,_6b,_6c,_6d){ +with(_6a){ +return objj_msgSend(_menu,"indexOfItemWithTarget:action:",_6c,_6d); +} +}),new objj_method(sel_getUid("preferredEdge"),function(_6e,_6f){ +with(_6e){ +return _preferredEdge; +} +}),new objj_method(sel_getUid("setPreferredEdge:"),function(_70,_71,_72){ +with(_70){ +_preferredEdge=_72; +} +}),new objj_method(sel_getUid("setTitle:"),function(_73,_74,_75){ +with(_73){ +if(objj_msgSend(_73,"title")===_75){ +return; +} +if(objj_msgSend(_73,"pullsDown")){ +var _76=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_76,"count")<=0){ +objj_msgSend(_73,"addItemWithTitle:",_75); +}else{ +objj_msgSend(_76[0],"setTitle:",_75); +objj_msgSend(_73,"synchronizeTitleAndSelectedItem"); +} +}else{ +var _77=objj_msgSend(_73,"indexOfItemWithTitle:",_75); +if(_77<0){ +objj_msgSend(_73,"addItemWithTitle:",_75); +_77=objj_msgSend(_73,"numberOfItems")-1; +} +objj_msgSend(_73,"selectItemAtIndex:",_77); +} +} +}),new objj_method(sel_getUid("setImage:"),function(_78,_79,_7a){ +with(_78){ +} +}),new objj_method(sel_getUid("synchronizeTitleAndSelectedItem"),function(_7b,_7c){ +with(_7b){ +var _7d=nil; +if(objj_msgSend(_7b,"pullsDown")){ +var _7e=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_7e,"count")>0){ +_7d=_7e[0]; +} +}else{ +_7d=objj_msgSend(_7b,"selectedItem"); +} +objj_msgSendSuper({receiver:_7b,super_class:objj_getClass("CPPopUpButton").super_class},"setImage:",objj_msgSend(_7d,"image")); +objj_msgSendSuper({receiver:_7b,super_class:objj_getClass("CPPopUpButton").super_class},"setTitle:",objj_msgSend(_7d,"title")); +} +}),new objj_method(sel_getUid("menuDidAddItem:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(objj_msgSend(_81,"userInfo"),"objectForKey:","CPMenuItemIndex"); +if(_selectedIndex<0){ +objj_msgSend(_7f,"selectItemAtIndex:",0); +}else{ +if(_82==_selectedIndex){ +objj_msgSend(_7f,"synchronizeTitleAndSelectedItem"); +}else{ +if(_82<_selectedIndex){ +++_selectedIndex; +} +} +} +if(_82==0&&objj_msgSend(_7f,"pullsDown")){ +var _83=objj_msgSend(_menu,"itemArray"); +objj_msgSend(_83[0],"setHidden:",YES); +if(_83.length>0){ +objj_msgSend(_83[1],"setHidden:",NO); +} +} +var _84=objj_msgSend(_menu,"itemArray")[_82],_85=objj_msgSend(_84,"action"); +if(!_85||(_85===sel_getUid("_popUpItemAction:"))){ +objj_msgSend(_84,"setTarget:",_7f); +objj_msgSend(_84,"setAction:",sel_getUid("_popUpItemAction:")); +} +} +}),new objj_method(sel_getUid("menuDidChangeItem:"),function(_86,_87,_88){ +with(_86){ +var _89=objj_msgSend(objj_msgSend(_88,"userInfo"),"objectForKey:","CPMenuItemIndex"); +if(objj_msgSend(_86,"pullsDown")&&_89!=0){ +return; +} +if(!objj_msgSend(_86,"pullsDown")&&_89!=_selectedIndex){ +return; +} +objj_msgSend(_86,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("menuDidRemoveItem:"),function(_8a,_8b,_8c){ +with(_8a){ +var _8d=objj_msgSend(_8a,"numberOfItems"); +if(_8d<=_selectedIndex&&_8d>0){ +objj_msgSend(_8a,"selectItemAtIndex:",_8d-1); +}else{ +objj_msgSend(_8a,"synchronizeTitleAndSelectedItem"); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_8e,_8f,_90){ +with(_8e){ +if(!objj_msgSend(_8e,"isEnabled")||!objj_msgSend(_8e,"numberOfItems")){ +return; +} +objj_msgSend(_8e,"highlight:",YES); +var _91=objj_msgSend(_8e,"menu"),_92=objj_msgSend(_8e,"bounds"),_93=CGRectGetWidth(_92); +objj_msgSend(_91,"setFont:",objj_msgSend(_8e,"font")); +if(objj_msgSend(_8e,"pullsDown")){ +var _94=nil,_95=CGPointMake(0,CGRectGetMaxY(_92)); +}else{ +var _96=objj_msgSend(_8e,"contentRectForBounds:",_92),_94=objj_msgSend(_8e,"selectedItem"),_97=objj_msgSend(_CPMenuWindow,"_standardLeftMargin")+objj_msgSend(_CPMenuItemStandardView,"_standardLeftMargin"),_95=CGPointMake(CGRectGetMinX(_96)-_97,0); +_93+=_97; +objj_msgSend(_91,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(_91,"setMinimumWidth:",_93); +objj_msgSend(_91,"_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:",_94,_95,CGRectGetMinY(_92),CGRectGetMaxY(_92),_8e,function(_98){ +objj_msgSend(_8e,"highlight:",NO); +var _99=objj_msgSend(_98,"highlightedItem"); +if(objj_msgSend(_99,"_isSelectable")){ +objj_msgSend(_8e,"selectItem:",_99); +} +}); +} +}),new objj_method(sel_getUid("_popUpItemAction:"),function(_9a,_9b,_9c){ +with(_9a){ +objj_msgSend(_9a,"sendAction:to:",objj_msgSend(_9a,"action"),objj_msgSend(_9a,"target")); +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_9d,_9e,_9f,_a0){ +with(_9d){ +var _a1=_a0.length,_a2=objj_msgSend(_a0[0],"valueForKeyPath:",_9f); +objj_msgSend(_9d,"selectItemWithTag:",_a2); +objj_msgSend(_9d,"setEnabled:",YES); +while(_a1-->1){ +if(_a2!==objj_msgSend(_a0[_a1],"valueForKeyPath:",_9f)){ +objj_msgSend(objj_msgSend(_9d,"selectedItem"),"setState:",CPOffState); +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("themeClass"),function(_a3,_a4){ +with(_a3){ +return "popup-button"; +} +})]); +var _a5="CPPopUpButtonMenuKey",_a6="CPPopUpButtonSelectedIndexKey",_a7="CPPopUpButtonPullsDownKey"; +var _2=objj_getClass("CPPopUpButton"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPPopUpButton\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_a8,_a9,_aa){ +with(_a8){ +_a8=objj_msgSendSuper({receiver:_a8,super_class:objj_getClass("CPPopUpButton").super_class},"initWithCoder:",_aa); +if(_a8){ +_selectedIndex=-1; +objj_msgSend(_a8,"setMenu:",objj_msgSend(_aa,"decodeObjectForKey:",_a5)); +objj_msgSend(_a8,"selectItemAtIndex:",objj_msgSend(_aa,"decodeObjectForKey:",_a6)); +} +return _a8; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_ab,_ac,_ad){ +with(_ab){ +objj_msgSendSuper({receiver:_ab,super_class:objj_getClass("CPPopUpButton").super_class},"encodeWithCoder:",_ad); +objj_msgSend(_ad,"encodeObject:forKey:",_menu,_a5); +objj_msgSend(_ad,"encodeInt:forKey:",_selectedIndex,_a6); +} +})]); +p;21;CPProgressIndicator.jt;8302;@STATIC;1.0;I;19;AppKit/CGGeometry.jI;20;AppKit/CPImageView.jI;15;AppKit/CPView.jt;8214; +objj_executeFile("AppKit/CGGeometry.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPProgressIndicatorBarStyle=0; +CPProgressIndicatorSpinningStyle=1; +CPProgressIndicatorHUDBarStyle=2; +var _1=nil,_2=nil,_3=nil,_4=nil; +var _5=objj_allocateClassPair(CPView,"CPProgressIndicator"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_minValue"),new objj_ivar("_maxValue"),new objj_ivar("_doubleValue"),new objj_ivar("_controlSize"),new objj_ivar("_isIndeterminate"),new objj_ivar("_style"),new objj_ivar("_isAnimating"),new objj_ivar("_isDisplayedWhenStoppedSet"),new objj_ivar("_isDisplayedWhenStopped"),new objj_ivar("_barView")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPProgressIndicator").super_class},"initWithFrame:",_9); +if(_7){ +_minValue=0; +_maxValue=100; +_doubleValue=0; +_style=CPProgressIndicatorBarStyle; +_isDisplayedWhenStoppedSet=NO; +_controlSize=CPRegularControlSize; +objj_msgSend(_7,"updateBackgroundColor"); +objj_msgSend(_7,"drawBar"); +} +return _7; +} +}),new objj_method(sel_getUid("setUsesThreadedAnimation:"),function(_a,_b,_c){ +with(_a){ +} +}),new objj_method(sel_getUid("startAnimation:"),function(_d,_e,_f){ +with(_d){ +_isAnimating=YES; +objj_msgSend(_d,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("stopAnimation:"),function(_10,_11,_12){ +with(_10){ +_isAnimating=NO; +objj_msgSend(_10,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("usesThreadedAnimation"),function(_13,_14){ +with(_13){ +return NO; +} +}),new objj_method(sel_getUid("incrementBy:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"setDoubleValue:",_doubleValue+_17); +} +}),new objj_method(sel_getUid("setDoubleValue:"),function(_18,_19,_1a){ +with(_18){ +_doubleValue=MIN(MAX(_1a,_minValue),_maxValue); +objj_msgSend(_18,"drawBar"); +} +}),new objj_method(sel_getUid("doubleValue"),function(_1b,_1c){ +with(_1b){ +return _doubleValue; +} +}),new objj_method(sel_getUid("setMinValue:"),function(_1d,_1e,_1f){ +with(_1d){ +_minValue=_1f; +} +}),new objj_method(sel_getUid("minValue"),function(_20,_21){ +with(_20){ +return _minValue; +} +}),new objj_method(sel_getUid("setMaxValue:"),function(_22,_23,_24){ +with(_22){ +_maxValue=_24; +} +}),new objj_method(sel_getUid("maxValue"),function(_25,_26){ +with(_25){ +return _maxValue; +} +}),new objj_method(sel_getUid("setControlSize:"),function(_27,_28,_29){ +with(_27){ +if(_controlSize==_29){ +return; +} +_controlSize=_29; +objj_msgSend(_27,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("controlSize"),function(_2a,_2b){ +with(_2a){ +return _controlSize; +} +}),new objj_method(sel_getUid("setControlTint:"),function(_2c,_2d,_2e){ +with(_2c){ +} +}),new objj_method(sel_getUid("controlTint"),function(_2f,_30){ +with(_2f){ +return 0; +} +}),new objj_method(sel_getUid("setBezeled:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("isBezeled"),function(_34,_35){ +with(_34){ +return YES; +} +}),new objj_method(sel_getUid("setIndeterminate:"),function(_36,_37,_38){ +with(_36){ +if(_isIndeterminate==_38){ +return; +} +_isIndeterminate=_38; +objj_msgSend(_36,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("isIndeterminate"),function(_39,_3a){ +with(_39){ +return _isIndeterminate; +} +}),new objj_method(sel_getUid("setStyle:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_style==_3d){ +return; +} +_style=_3d; +objj_msgSend(_3b,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("sizeToFit"),function(_3e,_3f){ +with(_3e){ +if(_style==CPProgressIndicatorSpinningStyle){ +objj_msgSend(_3e,"setFrameSize:",objj_msgSend(objj_msgSend(_1[_controlSize],"patternImage"),"size")); +}else{ +objj_msgSend(_3e,"setFrameSize:",CGSizeMake(CGRectGetWidth(objj_msgSend(_3e,"frame")),_4[_2+"BezelBorder"+_3[CPProgressIndicatorBarStyle]+_CPControlIdentifierForControlSize(_controlSize)][0].height)); +} +} +}),new objj_method(sel_getUid("setDisplayedWhenStopped:"),function(_40,_41,_42){ +with(_40){ +if(_isDisplayedWhenStoppedSet&&_isDisplayedWhenStopped==_42){ +return; +} +_isDisplayedWhenStoppedSet=YES; +_isDisplayedWhenStopped=_42; +objj_msgSend(_40,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("isDisplayedWhenStopped"),function(_43,_44){ +with(_43){ +if(_isDisplayedWhenStoppedSet){ +return _isDisplayedWhenStopped; +} +if(_style==CPProgressIndicatorBarStyle||_style==CPProgressIndicatorHUDBarStyle){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("_hideOrDisplay"),function(_45,_46){ +with(_45){ +objj_msgSend(_45,"setHidden:",!_isAnimating&&!objj_msgSend(_45,"isDisplayedWhenStopped")); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_47,_48,_49){ +with(_47){ +objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPProgressIndicator").super_class},"setFrameSize:",_49); +objj_msgSend(_47,"drawBar"); +} +}),new objj_method(sel_getUid("drawBar"),function(_4a,_4b){ +with(_4a){ +if(_style==CPProgressIndicatorSpinningStyle){ +return; +} +if(!_barView){ +_barView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,16)); +objj_msgSend(_4a,"addSubview:",_barView); +} +objj_msgSend(_barView,"setBackgroundColor:",_CPControlThreePartImagePattern(NO,_4,_2,"Bar",_3[_style],_CPControlIdentifierForControlSize(_controlSize))); +var _4c=CGRectGetWidth(objj_msgSend(_4a,"bounds")),_4d=_4c*((_doubleValue-_minValue)/(_maxValue-_minValue)); +if(_4d>0&&_4d<4){ +_4d=4; +} +objj_msgSend(_barView,"setFrameSize:",CGSizeMake(_4d,16)); +} +}),new objj_method(sel_getUid("updateBackgroundColor"),function(_4e,_4f){ +with(_4e){ +if(YES){ +if(_style==CPProgressIndicatorSpinningStyle){ +objj_msgSend(_barView,"removeFromSuperview"); +_barView=nil; +objj_msgSend(_4e,"setBackgroundColor:",_1[_controlSize]); +}else{ +objj_msgSend(_4e,"setBackgroundColor:",_CPControlThreePartImagePattern(NO,_4,_2,"BezelBorder",_3[_style],_CPControlIdentifierForControlSize(_controlSize))); +objj_msgSend(_4e,"drawBar"); +} +}else{ +objj_msgSend(_4e,"setBackgroundColor:",nil); +} +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("initialize"),function(_50,_51){ +with(_50){ +if(_50!=objj_msgSend(CPProgressIndicator,"class")){ +return; +} +var _52=objj_msgSend(CPBundle,"bundleForClass:",_50); +_1=[]; +_1[CPMiniControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +_1[CPSmallControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +_1[CPRegularControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +CPProgressIndicatorBezelBorderViewPool=[]; +var _53=CPProgressIndicatorBarStyle,end=CPProgressIndicatorHUDBarStyle; +for(;_53<=end;++_53){ +CPProgressIndicatorBezelBorderViewPool[_53]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPMiniControlSize]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPSmallControlSize]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPRegularControlSize]=[]; +} +_2=objj_msgSend(_50,"className"); +_3=[]; +_3[CPProgressIndicatorBarStyle]="Bar"; +_3[CPProgressIndicatorSpinningStyle]="Spinny"; +_3[CPProgressIndicatorHUDBarStyle]="HUDBar"; +var _54=_CPControlIdentifierForControlSize(CPRegularControlSize),_55=_CPControlIdentifierForControlSize(CPSmallControlSize),_56=_CPControlIdentifierForControlSize(CPMiniControlSize); +_4=[]; +var _57=[_2+"BezelBorder"+_3[CPProgressIndicatorBarStyle],_2+"Bar"+_3[CPProgressIndicatorBarStyle],_2+"BezelBorder"+_3[CPProgressIndicatorHUDBarStyle],_2+"Bar"+_3[CPProgressIndicatorHUDBarStyle]]; +for(var i=0,_58=_57.length;i<_58;i++){ +var _59=_57[i]; +_4[_59+_54]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +_4[_59+_55]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +_4[_59+_56]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +} +} +})]); +p;9;CPRadio.jt;5564;@STATIC;1.0;I;21;Foundation/CPObject.jI;18;Foundation/CPSet.ji;10;CPButton.jt;5481; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPSet.j",NO); +objj_executeFile("CPButton.j",YES); +CPRadioImageOffset=4; +var _1=objj_allocateClassPair(CPButton,"CPRadio"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_radioGroup")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:radioGroup:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPRadio").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setRadioGroup:",_6); +objj_msgSend(_3,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_3,"setShowsStateBy:",CPContentsCellMask); +objj_msgSend(_3,"setImagePosition:",CPImageLeft); +objj_msgSend(_3,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_3,"setBordered:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(_7,"initWithFrame:radioGroup:",_9,objj_msgSend(CPRadioGroup,"new")); +} +}),new objj_method(sel_getUid("nextState"),function(_a,_b){ +with(_a){ +return CPOnState; +} +}),new objj_method(sel_getUid("setRadioGroup:"),function(_c,_d,_e){ +with(_c){ +if(_radioGroup===_e){ +return; +} +objj_msgSend(_radioGroup,"_removeRadio:",_c); +_radioGroup=_e; +objj_msgSend(_radioGroup,"_addRadio:",_c); +} +}),new objj_method(sel_getUid("radioGroup"),function(_f,_10){ +with(_f){ +return _radioGroup; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_11,_12,_13){ +with(_11){ +objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPRadio").super_class},"setObjectValue:",_13); +if(objj_msgSend(_11,"state")===CPOnState){ +objj_msgSend(_radioGroup,"_setSelectedRadio:",_11); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("radioWithTitle:theme:"),function(_14,_15,_16,_17){ +with(_14){ +return objj_msgSend(_14,"buttonWithTitle:theme:",_16,_17); +} +}),new objj_method(sel_getUid("radioWithTitle:"),function(_18,_19,_1a){ +with(_18){ +return objj_msgSend(_18,"buttonWithTitle:",_1a); +} +}),new objj_method(sel_getUid("standardButtonWithTitle:"),function(_1b,_1c,_1d){ +with(_1b){ +var _1e=objj_msgSend(objj_msgSend(CPRadio,"alloc"),"init"); +objj_msgSend(_1e,"setTitle:",_1d); +return _1e; +} +}),new objj_method(sel_getUid("themeClass"),function(_1f,_20){ +with(_1f){ +return "radio"; +} +})]); +var _21="CPRadioRadioGroupKey"; +var _1=objj_getClass("CPRadio"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPRadio\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("CPRadio").super_class},"initWithCoder:",_24); +if(_22){ +_radioGroup=objj_msgSend(_24,"decodeObjectForKey:",_21); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPRadio").super_class},"encodeWithCoder:",_27); +objj_msgSend(_27,"encodeObject:forKey:",_radioGroup,_21); +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPRadioGroup"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_radios"),new objj_ivar("_selectedRadio"),new objj_ivar("_target"),new objj_ivar("_action")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("target"),function(_28,_29){ +with(_28){ +return _target; +} +}),new objj_method(sel_getUid("setTarget:"),function(_2a,_2b,_2c){ +with(_2a){ +_target=_2c; +} +}),new objj_method(sel_getUid("action"),function(_2d,_2e){ +with(_2d){ +return _action; +} +}),new objj_method(sel_getUid("setAction:"),function(_2f,_30,_31){ +with(_2f){ +_action=_31; +} +}),new objj_method(sel_getUid("init"),function(_32,_33){ +with(_32){ +_32=objj_msgSendSuper({receiver:_32,super_class:objj_getClass("CPRadioGroup").super_class},"init"); +if(_32){ +_radios=objj_msgSend(CPSet,"set"); +_selectedRadio=nil; +} +return _32; +} +}),new objj_method(sel_getUid("_addRadio:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_radios,"addObject:",_36); +if(objj_msgSend(_36,"state")===CPOnState){ +objj_msgSend(_34,"_setSelectedRadio:",_36); +} +} +}),new objj_method(sel_getUid("_removeRadio:"),function(_37,_38,_39){ +with(_37){ +if(_selectedRadio===_39){ +_selectedRadio=nil; +} +objj_msgSend(_radios,"removeObject:",_39); +} +}),new objj_method(sel_getUid("_setSelectedRadio:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_selectedRadio===_3c){ +return; +} +objj_msgSend(_selectedRadio,"setState:",CPOffState); +_selectedRadio=_3c; +objj_msgSend(CPApp,"sendAction:to:from:",_action,_target,_3a); +} +}),new objj_method(sel_getUid("selectedRadio"),function(_3d,_3e){ +with(_3d){ +return _selectedRadio; +} +}),new objj_method(sel_getUid("radios"),function(_3f,_40){ +with(_3f){ +return objj_msgSend(_radios,"allObjects"); +} +})]); +var _41="CPRadioGroupRadiosKey",_42="CPRadioGroupSelectedRadioKey"; +var _1=objj_getClass("CPRadioGroup"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPRadioGroup\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_43,_44,_45){ +with(_43){ +_43=objj_msgSendSuper({receiver:_43,super_class:objj_getClass("CPRadioGroup").super_class},"init"); +if(_43){ +_radios=objj_msgSend(_45,"decodeObjectForKey:",_41); +_selectedRadio=objj_msgSend(_45,"decodeObjectForKey:",_42); +} +return _43; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_46,_47,_48){ +with(_46){ +objj_msgSend(_48,"encodeObject:forKey:",_radios,_41); +objj_msgSend(_48,"encodeObject:forKey:",_selectedRadio,_42); +} +})]); +p;13;CPResponder.jt;5773;@STATIC;1.0;I;21;Foundation/CPObject.jt;5728; +objj_executeFile("Foundation/CPObject.j",NO); +CPDeleteKeyCode=8; +CPTabKeyCode=9; +CPReturnKeyCode=13; +CPEscapeKeyCode=27; +CPSpaceKeyCode=32; +CPPageUpKeyCode=33; +CPPageDownKeyCode=34; +CPLeftArrowKeyCode=37; +CPUpArrowKeyCode=38; +CPRightArrowKeyCode=39; +CPDownArrowKeyCode=40; +CPDeleteForwardKeyCode=46; +var _1=objj_allocateClassPair(CPObject,"CPResponder"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_menu"),new objj_ivar("_nextResponder")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("acceptsFirstResponder"),function(_3,_4){ +with(_3){ +return NO; +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(_5,_6){ +with(_5){ +return YES; +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_7,_8){ +with(_7){ +return YES; +} +}),new objj_method(sel_getUid("setNextResponder:"),function(_9,_a,_b){ +with(_9){ +_nextResponder=_b; +} +}),new objj_method(sel_getUid("nextResponder"),function(_c,_d){ +with(_c){ +return _nextResponder; +} +}),new objj_method(sel_getUid("interpretKeyEvents:"),function(_e,_f,_10){ +with(_e){ +var _11=0,_12=objj_msgSend(_10,"count"); +for(;_11<_12;++_11){ +var _13=_10[_11],_14=objj_msgSend(_13,"modifierFlags"),_15=objj_msgSend(_13,"charactersIgnoringModifiers"),_16=objj_msgSend(CPKeyBinding,"selectorsForKey:modifierFlags:",_15,_14); +if(_16){ +for(var s=0,_17=_16.length;s<_17;s++){ +var _18=_16[s]; +if(!_18){ +continue; +} +objj_msgSend(_e,"doCommandBySelector:",CPSelectorFromString(_18)); +} +}else{ +if(!(_14&(CPCommandKeyMask|CPControlKeyMask))&&objj_msgSend(_e,"respondsToSelector:",sel_getUid("insertText:"))){ +objj_msgSend(_e,"insertText:",objj_msgSend(_13,"characters")); +} +} +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_19,_1a,_1b){ +with(_19){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_1a,_1b); +} +}),new objj_method(sel_getUid("rightMouseDown:"),function(_1c,_1d,_1e){ +with(_1c){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_1d,_1e); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_1f,_20,_21){ +with(_1f){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_20,_21); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_23,_24); +} +}),new objj_method(sel_getUid("rightMouseUp:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_26,_27); +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_28,_29,_2a){ +with(_28){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_29,_2a); +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_2c,_2d); +} +}),new objj_method(sel_getUid("mouseExited:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_2f,_30); +} +}),new objj_method(sel_getUid("scrollWheel:"),function(_31,_32,_33){ +with(_31){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_32,_33); +} +}),new objj_method(sel_getUid("keyDown:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_35,_36); +} +}),new objj_method(sel_getUid("keyUp:"),function(_37,_38,_39){ +with(_37){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_38,_39); +} +}),new objj_method(sel_getUid("flagsChanged:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_3b,_3c); +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_3d,_3e,_3f){ +with(_3d){ +return NO; +} +}),new objj_method(sel_getUid("insertLineBreak:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"insertNewline:",_42); +} +}),new objj_method(sel_getUid("insertNewline:"),function(_43,_44,_45){ +with(_43){ +objj_msgSend(objj_msgSend(_43,"nextResponder"),"insertNewline:",_45); +} +}),new objj_method(sel_getUid("cancel:"),function(_46,_47,_48){ +with(_46){ +} +}),new objj_method(sel_getUid("insertTab:"),function(_49,_4a,_4b){ +with(_49){ +} +}),new objj_method(sel_getUid("insertBackTab:"),function(_4c,_4d,_4e){ +with(_4c){ +} +}),new objj_method(sel_getUid("insertText:"),function(_4f,_50,_51){ +with(_4f){ +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_52,_53,_54){ +with(_52){ +if(objj_msgSend(_52,"respondsToSelector:",_54)){ +objj_msgSend(_52,"performSelector:",_54); +}else{ +objj_msgSend(_nextResponder,"doCommandBySelector:",_54); +} +} +}),new objj_method(sel_getUid("tryToPerform:with:"),function(_55,_56,_57,_58){ +with(_55){ +if(objj_msgSend(_55,"respondsToSelector:",_57)){ +objj_msgSend(_55,"performSelector:withObject:",_57,_58); +return YES; +} +return objj_msgSend(_nextResponder,"tryToPerform:with:",_57,_58); +} +}),new objj_method(sel_getUid("setMenu:"),function(_59,_5a,_5b){ +with(_59){ +_menu=_5b; +} +}),new objj_method(sel_getUid("menu"),function(_5c,_5d){ +with(_5c){ +return _menu; +} +}),new objj_method(sel_getUid("undoManager"),function(_5e,_5f){ +with(_5e){ +return objj_msgSend(_nextResponder,"performSelector:",_5f); +} +}),new objj_method(sel_getUid("noResponderFor:"),function(_60,_61,_62){ +with(_60){ +} +})]); +var _63="CPResponderNextResponderKey"; +var _1=objj_getClass("CPResponder"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPResponder\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_64,_65,_66){ +with(_64){ +_64=objj_msgSendSuper({receiver:_64,super_class:objj_getClass("CPResponder").super_class},"init"); +if(_64){ +_nextResponder=objj_msgSend(_66,"decodeObjectForKey:",_63); +} +return _64; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_67,_68,_69){ +with(_67){ +if(_nextResponder!==nil){ +objj_msgSend(_69,"encodeConditionalObject:forKey:",_nextResponder,_63); +} +} +})]); +p;13;CPSavePanel.jt;2744;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2704; +objj_executeFile("AppKit/CPPanel.j",NO); +var _1=objj_allocateClassPair(CPPanel,"CPSavePanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_URL"),new objj_ivar("_isExtensionHidden"),new objj_ivar("_canSelectHiddenExtension"),new objj_ivar("_allowsOtherFileTypes"),new objj_ivar("_canCreateDirectories"),new objj_ivar("_allowedFileTypes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isExtensionHidden"),function(_3,_4){ +with(_3){ +return _isExtensionHidden; +} +}),new objj_method(sel_getUid("setExtensionHidden:"),function(_5,_6,_7){ +with(_5){ +_isExtensionHidden=_7; +} +}),new objj_method(sel_getUid("canSelectHiddenExtension"),function(_8,_9){ +with(_8){ +return _canSelectHiddenExtension; +} +}),new objj_method(sel_getUid("setCanSelectHiddenExtension:"),function(_a,_b,_c){ +with(_a){ +_canSelectHiddenExtension=_c; +} +}),new objj_method(sel_getUid("allowsOtherFileTypes"),function(_d,_e){ +with(_d){ +return _allowsOtherFileTypes; +} +}),new objj_method(sel_getUid("setAllowsOtherFileTypes:"),function(_f,_10,_11){ +with(_f){ +_allowsOtherFileTypes=_11; +} +}),new objj_method(sel_getUid("canCreateDirectories"),function(_12,_13){ +with(_12){ +return _canCreateDirectories; +} +}),new objj_method(sel_getUid("setCanCreateDirectories:"),function(_14,_15,_16){ +with(_14){ +_canCreateDirectories=_16; +} +}),new objj_method(sel_getUid("allowedFileTypes"),function(_17,_18){ +with(_17){ +return _allowedFileTypes; +} +}),new objj_method(sel_getUid("setAllowedFileTypes:"),function(_19,_1a,_1b){ +with(_19){ +_allowedFileTypes=_1b; +} +}),new objj_method(sel_getUid("init"),function(_1c,_1d){ +with(_1c){ +if(_1c=objj_msgSendSuper({receiver:_1c,super_class:objj_getClass("CPSavePanel").super_class},"init")){ +_canCreateDirectories=YES; +} +return _1c; +} +}),new objj_method(sel_getUid("runModal"),function(_1e,_1f){ +with(_1e){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +if(typeof window["cpSavePanel"]==="function"){ +var _20=window.cpSavePanel({isExtensionHidden:_isExtensionHidden,canSelectHiddenExtension:_canSelectHiddenExtension,allowsOtherFileTypes:_allowsOtherFileTypes,canCreateDirectories:_canCreateDirectories,allowedFileTypes:_allowedFileTypes}),_21=_20.button; +_URL=_21?objj_msgSend(CPURL,"URLWithString:",_20.URL):nil; +}else{ +var _22=window.prompt("Document Name:"),_21=_22!==null; +_URL=_21?objj_msgSend(objj_msgSend(_1e,"class"),"proposedFileURLWithDocumentName:",_22):nil; +} +return _21; +} +}),new objj_method(sel_getUid("URL"),function(_23,_24){ +with(_23){ +return _URL; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("savePanel"),function(_25,_26){ +with(_25){ +return objj_msgSend(objj_msgSend(CPSavePanel,"alloc"),"init"); +} +})]); +p;10;CPScreen.jt;421;@STATIC;1.0;I;21;Foundation/CPObject.jt;377; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPScreen"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("visibleFrame"),function(_3,_4){ +with(_3){ +return {origin:{x:window.screen.availLeft,y:window.screen.availTop},size:{width:window.screen.availWidth,height:window.screen.availHeight}}; +} +})]); +p;12;CPScroller.jt;16772;@STATIC;1.0;i;11;CPControl.jt;16736; +objj_executeFile("CPControl.j",YES); +CPScrollerNoPart=0; +CPScrollerDecrementPage=1; +CPScrollerKnob=2; +CPScrollerIncrementPage=3; +CPScrollerDecrementLine=4; +CPScrollerIncrementLine=5; +CPScrollerKnobSlot=6; +CPScrollerIncrementArrow=0; +CPScrollerDecrementArrow=1; +CPNoScrollerParts=0; +CPOnlyScrollerArrows=1; +CPAllScrollerParts=2; +var _1=[CPScrollerKnobSlot,CPScrollerDecrementLine,CPScrollerIncrementLine,CPScrollerKnob],_2={},_3={}; +_2[CPScrollerDecrementLine]="decrement-line"; +_2[CPScrollerIncrementLine]="increment-line"; +_2[CPScrollerKnobSlot]="knob-slot"; +_2[CPScrollerKnob]="knob"; +var _4=objj_allocateClassPair(CPControl,"CPScroller"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_controlSize"),new objj_ivar("_usableParts"),new objj_ivar("_partRects"),new objj_ivar("_isVertical"),new objj_ivar("_knobProportion"),new objj_ivar("_hitPart"),new objj_ivar("_trackingPart"),new objj_ivar("_trackingFloatValue"),new objj_ivar("_trackingStartPoint")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("isVertical"),function(_6,_7){ +with(_6){ +return _isVertical; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPScroller").super_class},"initWithFrame:",_a); +if(_8){ +_controlSize=CPRegularControlSize; +_partRects=[]; +objj_msgSend(_8,"setFloatValue:",0); +objj_msgSend(_8,"setKnobProportion:",1); +_hitPart=CPScrollerNoPart; +objj_msgSend(_8,"_calculateIsVertical"); +} +return _8; +} +}),new objj_method(sel_getUid("setControlSize:"),function(_b,_c,_d){ +with(_b){ +if(_controlSize==_d){ +return; +} +_controlSize=_d; +objj_msgSend(_b,"setNeedsLayout"); +objj_msgSend(_b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("controlSize"),function(_e,_f){ +with(_e){ +return _controlSize; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_10,_11,_12){ +with(_10){ +objj_msgSendSuper({receiver:_10,super_class:objj_getClass("CPScroller").super_class},"setObjectValue:",MIN(1,MAX(0,+_12))); +} +}),new objj_method(sel_getUid("setKnobProportion:"),function(_13,_14,_15){ +with(_13){ +_knobProportion=MIN(1,MAX(0.0001,_15)); +objj_msgSend(_13,"setNeedsDisplay:",YES); +objj_msgSend(_13,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("knobProportion"),function(_16,_17){ +with(_16){ +return _knobProportion; +} +}),new objj_method(sel_getUid("currentValueForThemeAttribute:"),function(_18,_19,_1a){ +with(_18){ +var _1b=_themeState; +if(_2[_hitPart]+"-color"!==_1a){ +_1b&=~CPThemeStateHighlighted; +} +return objj_msgSend(_18,"valueForThemeAttribute:inState:",_1a,_1b); +} +}),new objj_method(sel_getUid("rectForPart:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_1e==CPScrollerNoPart){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +return _partRects[_1e]; +} +}),new objj_method(sel_getUid("testPart:"),function(_1f,_20,_21){ +with(_1f){ +_21=objj_msgSend(_1f,"convertPoint:fromView:",_21,nil); +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerKnob),_21)){ +return CPScrollerKnob; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerDecrementPage),_21)){ +return CPScrollerDecrementPage; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerIncrementPage),_21)){ +return CPScrollerIncrementPage; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerDecrementLine),_21)){ +return CPScrollerDecrementLine; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerIncrementLine),_21)){ +return CPScrollerIncrementLine; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerKnobSlot),_21)){ +return CPScrollerKnobSlot; +} +return CPScrollerNoPart; +} +}),new objj_method(sel_getUid("checkSpaceForParts"),function(_22,_23){ +with(_22){ +var _24=objj_msgSend(_22,"bounds"); +if(_knobProportion===1){ +_usableParts=CPNoScrollerParts; +_partRects[CPScrollerDecrementPage]=CGRectMakeZero(); +_partRects[CPScrollerKnob]=CGRectMakeZero(); +_partRects[CPScrollerIncrementPage]=CGRectMakeZero(); +_partRects[CPScrollerDecrementLine]=CGRectMakeZero(); +_partRects[CPScrollerIncrementLine]=CGRectMakeZero(); +_partRects[CPScrollerKnobSlot]=CGRectMakeCopy(_24); +return; +} +_usableParts=CPAllScrollerParts; +var _25=objj_msgSend(_22,"currentValueForThemeAttribute:","knob-inset"),_26=objj_msgSend(_22,"currentValueForThemeAttribute:","track-inset"),_27=(_24.size.width),_28=(_24.size.height); +if(objj_msgSend(_22,"isVertical")){ +var _29=objj_msgSend(_22,"currentValueForThemeAttribute:","decrement-line-size"),_2a=objj_msgSend(_22,"currentValueForThemeAttribute:","increment-line-size"),_2b=_29.height+_26.top,_2c=_2a.height+_26.bottom,_2d=_28-_2b-_2c,_2e=objj_msgSend(_22,"currentValueForThemeAttribute:","minimum-knob-length"),_2f=_27-_25.left-_25.right,_30=MAX(_2e,(_2d*_knobProportion)),_31=_2b+(_2d-_30)*objj_msgSend(_22,"floatValue"); +_partRects[CPScrollerDecrementPage]={origin:{x:0,y:_2b},size:{width:_27,height:_31-_2b}}; +_partRects[CPScrollerKnob]={origin:{x:_25.left,y:_31},size:{width:_2f,height:_30}}; +_partRects[CPScrollerIncrementPage]={origin:{x:0,y:_31+_30},size:{width:_27,height:_28-(_31+_30)-_2c}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_26.left,y:_2b},size:{width:_27-_26.left-_26.right,height:_2d}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:_29.width,height:_29.height}}; +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:_28-_2a.height},size:{width:_2a.width,height:_2a.height}}; +if(_28<_30+_29.height+_2a.height+_26.top+_26.bottom){ +_partRects[CPScrollerKnob]={origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_28<_29.height+_2a.height-2){ +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_26.left,y:0},size:{width:_27-_26.left-_26.right,height:_28}}; +} +}else{ +var _29=objj_msgSend(_22,"currentValueForThemeAttribute:","decrement-line-size"),_2a=objj_msgSend(_22,"currentValueForThemeAttribute:","increment-line-size"),_32=_29.width+_26.left,_33=_2a.width+_26.right; +slotWidth=_27-_32-_33,_2e=objj_msgSend(_22,"currentValueForThemeAttribute:","minimum-knob-length"),_2f=MAX(_2e,(slotWidth*_knobProportion)),_30=_28-_25.top-_25.bottom,_31=_32+(slotWidth-_2f)*objj_msgSend(_22,"floatValue"); +_partRects[CPScrollerDecrementPage]={origin:{x:_32,y:0},size:{width:_31-_32,height:_28}}; +_partRects[CPScrollerKnob]={origin:{x:_31,y:_25.top},size:{width:_2f,height:_30}}; +_partRects[CPScrollerIncrementPage]={origin:{x:_31+_2f,y:0},size:{width:_27-(_31+_2f)-_33,height:_28}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_32,y:_26.top},size:{width:slotWidth,height:_28-_26.top-_26.bottom}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:_29.width,height:_29.height}}; +_partRects[CPScrollerIncrementLine]={origin:{x:_27-_2a.width,y:0},size:{width:_2a.width,height:_2a.height}}; +if(_27<_2f+_29.width+_2a.width+_26.left+_26.right){ +_partRects[CPScrollerKnob]={origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_27<_29.width+_2a.width-2){ +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerKnobSlot]={origin:{x:0,y:0},size:{width:_27,height:_2d}}; +} +} +} +}),new objj_method(sel_getUid("usableParts"),function(_34,_35){ +with(_34){ +return _usableParts; +} +}),new objj_method(sel_getUid("drawArrow:highlight:"),function(_36,_37,_38,_39){ +with(_36){ +} +}),new objj_method(sel_getUid("drawKnob"),function(_3a,_3b){ +with(_3a){ +} +}),new objj_method(sel_getUid("drawKnobSlot"),function(_3c,_3d){ +with(_3c){ +} +}),new objj_method(sel_getUid("createViewForPart:"),function(_3e,_3f,_40){ +with(_3e){ +var _41=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_41,"setHitTests:",NO); +return _41; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_42,_43,_44){ +with(_42){ +return _partRects[_44]; +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_45,_46,_47){ +with(_45){ +var _48=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_48,"setHitTests:",NO); +return _48; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"checkSpaceForParts"); +var _4b=0,_4c=_1.length; +for(;_4b<_4c;++_4b){ +var _4d=_1[_4b]; +if(_4b===0){ +view=objj_msgSend(_49,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:",_4d,CPWindowBelow,_1[_4b+1]); +}else{ +view=objj_msgSend(_49,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:",_4d,CPWindowAbove,_1[_4b-1]); +} +if(view){ +objj_msgSend(view,"setBackgroundColor:",objj_msgSend(_49,"currentValueForThemeAttribute:",_2[_4d]+"-color")); +} +} +} +}),new objj_method(sel_getUid("drawParts"),function(_4e,_4f){ +with(_4e){ +objj_msgSend(_4e,"drawKnobSlot"); +objj_msgSend(_4e,"drawKnob"); +objj_msgSend(_4e,"drawArrow:highlight:",CPScrollerDecrementArrow,NO); +objj_msgSend(_4e,"drawArrow:highlight:",CPScrollerIncrementArrow,NO); +} +}),new objj_method(sel_getUid("hitPart"),function(_50,_51){ +with(_50){ +return _hitPart; +} +}),new objj_method(sel_getUid("trackKnob:"),function(_52,_53,_54){ +with(_52){ +var _55=objj_msgSend(_54,"type"); +if(_55===CPLeftMouseUp){ +_hitPart=CPScrollerNoPart; +return; +} +if(_55===CPLeftMouseDown){ +_trackingFloatValue=objj_msgSend(_52,"floatValue"); +_trackingStartPoint=objj_msgSend(_52,"convertPoint:fromView:",objj_msgSend(_54,"locationInWindow"),nil); +}else{ +if(_55===CPLeftMouseDragged){ +var _56=objj_msgSend(_52,"rectForPart:",CPScrollerKnob),_57=objj_msgSend(_52,"rectForPart:",CPScrollerKnobSlot),_58=!objj_msgSend(_52,"isVertical")?((_57.size.width)-(_56.size.width)):((_57.size.height)-(_56.size.height)); +if(_58<=0){ +objj_msgSend(_52,"setFloatValue:",0); +}else{ +var _59=objj_msgSend(_52,"convertPoint:fromView:",objj_msgSend(_54,"locationInWindow"),nil),_5a=!objj_msgSend(_52,"isVertical")?_59.x-_trackingStartPoint.x:_59.y-_trackingStartPoint.y; +objj_msgSend(_52,"setFloatValue:",_trackingFloatValue+_5a/_58); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_52,sel_getUid("trackKnob:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +objj_msgSend(_52,"sendAction:to:",objj_msgSend(_52,"action"),objj_msgSend(_52,"target")); +} +}),new objj_method(sel_getUid("trackScrollButtons:"),function(_5b,_5c,_5d){ +with(_5b){ +var _5e=objj_msgSend(_5d,"type"); +if(_5e===CPLeftMouseUp){ +objj_msgSend(_5b,"highlight:",NO); +objj_msgSend(CPEvent,"stopPeriodicEvents"); +_hitPart=CPScrollerNoPart; +return; +} +if(_5e===CPLeftMouseDown){ +_trackingPart=objj_msgSend(_5b,"hitPart"); +_trackingStartPoint=objj_msgSend(_5b,"convertPoint:fromView:",objj_msgSend(_5d,"locationInWindow"),nil); +if(objj_msgSend(_5d,"modifierFlags")&CPAlternateKeyMask){ +if(_trackingPart==CPScrollerDecrementLine){ +_hitPart=CPScrollerDecrementPage; +}else{ +if(_trackingPart==CPScrollerIncrementLine){ +_hitPart=CPScrollerIncrementPage; +}else{ +if(_trackingPart==CPScrollerDecrementPage||_trackingPart==CPScrollerIncrementPage){ +var _5f=objj_msgSend(_5b,"rectForPart:",CPScrollerKnob),_60=!objj_msgSend(_5b,"isVertical")?(_5f.size.width):(_5f.size.height),_61=objj_msgSend(_5b,"rectForPart:",CPScrollerKnobSlot),_62=(!objj_msgSend(_5b,"isVertical")?(_61.size.width):(_61.size.height))-_60; +objj_msgSend(_5b,"setFloatValue:",((!objj_msgSend(_5b,"isVertical")?_trackingStartPoint.x-(_61.origin.x):_trackingStartPoint.y-(_61.origin.y))-_60/2)/_62); +_hitPart=CPScrollerKnob; +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +return objj_msgSend(_5b,"trackKnob:",_5d); +} +} +} +} +objj_msgSend(_5b,"highlight:",YES); +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +objj_msgSend(CPEvent,"startPeriodicEventsAfterDelay:withPeriod:",0.5,0.04); +}else{ +if(_5e===CPLeftMouseDragged){ +_trackingStartPoint=objj_msgSend(_5b,"convertPoint:fromView:",objj_msgSend(_5d,"locationInWindow"),nil); +if(_trackingPart==CPScrollerDecrementPage||_trackingPart==CPScrollerIncrementPage){ +var _63=objj_msgSend(_5b,"testPart:",objj_msgSend(_5d,"locationInWindow")); +if(_63==CPScrollerDecrementPage||_63==CPScrollerIncrementPage){ +_trackingPart=_63; +_hitPart=_63; +} +} +objj_msgSend(_5b,"highlight:",CGRectContainsPoint(objj_msgSend(_5b,"rectForPart:",_trackingPart),_trackingStartPoint)); +}else{ +if(_5e==CPPeriodic&&CGRectContainsPoint(objj_msgSend(_5b,"rectForPart:",_trackingPart),_trackingStartPoint)){ +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_5b,sel_getUid("trackScrollButtons:"),CPPeriodicMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("_calculateIsVertical"),function(_64,_65){ +with(_64){ +var _66=objj_msgSend(_64,"bounds"),_67=(_66.size.width),_68=(_66.size.height); +_isVertical=_67<_68?1:(_67>_68?0:-1); +if(_isVertical===1){ +objj_msgSend(_64,"setThemeState:",CPThemeStateVertical); +}else{ +if(_isVertical===0){ +objj_msgSend(_64,"unsetThemeState:",CPThemeStateVertical); +} +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_69,_6a,_6b){ +with(_69){ +objj_msgSendSuper({receiver:_69,super_class:objj_getClass("CPScroller").super_class},"setFrameSize:",_6b); +objj_msgSend(_69,"checkSpaceForParts"); +objj_msgSend(_69,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_6c,_6d,_6e){ +with(_6c){ +if(!objj_msgSend(_6c,"isEnabled")){ +return; +} +_hitPart=objj_msgSend(_6c,"testPart:",objj_msgSend(_6e,"locationInWindow")); +switch(_hitPart){ +case CPScrollerKnob: +return objj_msgSend(_6c,"trackKnob:",_6e); +case CPScrollerDecrementLine: +case CPScrollerIncrementLine: +case CPScrollerDecrementPage: +case CPScrollerIncrementPage: +return objj_msgSend(_6c,"trackScrollButtons:",_6e); +} +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("themeClass"),function(_6f,_70){ +with(_6f){ +return "scroller"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_71,_72){ +with(_71){ +return objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{"scroller-width":15,"knob-slot-color":objj_msgSend(CPColor,"lightGrayColor"),"decrement-line-color":objj_msgSend(CPNull,"null"),"increment-line-color":objj_msgSend(CPNull,"null"),"knob-color":objj_msgSend(CPColor,"grayColor"),"decrement-line-size":{width:0,height:0},"increment-line-size":{width:0,height:0},"track-inset":{top:(0),right:(0),bottom:(0),left:(0)},"knob-inset":{top:(0),right:(0),bottom:(0),left:(0)},"minimum-knob-length":21}); +} +}),new objj_method(sel_getUid("scrollerWidth"),function(_73,_74){ +with(_73){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPScroller,"alloc"),"init"),"currentValueForThemeAttribute:","scroller-width"); +} +}),new objj_method(sel_getUid("scrollerWidthForControlSize:"),function(_75,_76,_77){ +with(_75){ +return objj_msgSend(_75,"scrollerWidth"); +} +})]); +var _78="CPScrollerControlSize",_79="CPScrollerKnobProportion"; +var _4=objj_getClass("CPScroller"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_7a,_7b,_7c){ +with(_7a){ +if(_7a=objj_msgSendSuper({receiver:_7a,super_class:objj_getClass("CPScroller").super_class},"initWithCoder:",_7c)){ +_controlSize=CPRegularControlSize; +if(objj_msgSend(_7c,"containsValueForKey:",_78)){ +_controlSize=objj_msgSend(_7c,"decodeIntForKey:",_78); +} +_knobProportion=1; +if(objj_msgSend(_7c,"containsValueForKey:",_79)){ +_knobProportion=objj_msgSend(_7c,"decodeFloatForKey:",_79); +} +_partRects=[]; +_hitPart=CPScrollerNoPart; +objj_msgSend(_7a,"_calculateIsVertical"); +var _7d=objj_msgSend(_7a,"frame"),_7e=objj_msgSend(CPScroller,"scrollerWidth"); +if(objj_msgSend(_7a,"isVertical")&&CGRectGetWidth(_7d)!==_7e){ +_7d.size.width=_7e; +} +if(!objj_msgSend(_7a,"isVertical")&&CGRectGetHeight(_7d)!==_7e){ +_7d.size.height=_7e; +} +objj_msgSend(_7a,"setFrame:",_7d); +} +return _7a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSendSuper({receiver:_7f,super_class:objj_getClass("CPScroller").super_class},"encodeWithCoder:",_81); +objj_msgSend(_81,"encodeInt:forKey:",_controlSize,_78); +objj_msgSend(_81,"encodeFloat:forKey:",_knobProportion,_79); +} +})]); +var _4=objj_getClass("CPScroller"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("setFloatValue:knobProportion:"),function(_82,_83,_84,_85){ +with(_82){ +objj_msgSend(_82,"setFloatValue:",_84); +objj_msgSend(_82,"setKnobProportion:",_85); +} +})]); +p;14;CPScrollView.jt;26736;@STATIC;1.0;i;8;CPView.ji;12;CPClipView.ji;12;CPScroller.jt;26670; +objj_executeFile("CPView.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPScroller.j",YES); +var _1=objj_allocateClassPair(CPView,"CPScrollView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentView"),new objj_ivar("_headerClipView"),new objj_ivar("_cornerView"),new objj_ivar("_bottomCornerView"),new objj_ivar("_hasVerticalScroller"),new objj_ivar("_hasHorizontalScroller"),new objj_ivar("_autohidesScrollers"),new objj_ivar("_verticalScroller"),new objj_ivar("_horizontalScroller"),new objj_ivar("_recursionCount"),new objj_ivar("_verticalLineScroll"),new objj_ivar("_verticalPageScroll"),new objj_ivar("_horizontalLineScroll"),new objj_ivar("_horizontalPageScroll"),new objj_ivar("_borderType")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPScrollView").super_class},"initWithFrame:",_5); +if(_3){ +_verticalLineScroll=10; +_verticalPageScroll=10; +_horizontalLineScroll=10; +_horizontalPageScroll=10; +_borderType=CPNoBorder; +_contentView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"initWithFrame:",objj_msgSend(_3,"_insetBounds")); +objj_msgSend(_3,"addSubview:",_contentView); +_headerClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"init"); +objj_msgSend(_3,"addSubview:",_headerClipView); +_bottomCornerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_3,"addSubview:",_bottomCornerView); +objj_msgSend(_3,"setHasVerticalScroller:",YES); +objj_msgSend(_3,"setHasHorizontalScroller:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("_insetBounds"),function(_6,_7){ +with(_6){ +return objj_msgSend(objj_msgSend(_6,"class"),"_insetBounds:borderType:",objj_msgSend(_6,"bounds"),_borderType); +} +}),new objj_method(sel_getUid("contentSize"),function(_8,_9){ +with(_8){ +return objj_msgSend(_contentView,"frame").size; +} +}),new objj_method(sel_getUid("documentView"),function(_a,_b){ +with(_a){ +return objj_msgSend(_contentView,"documentView"); +} +}),new objj_method(sel_getUid("setContentView:"),function(_c,_d,_e){ +with(_c){ +if(_contentView!==_e||!_e){ +return; +} +var _f=objj_msgSend(_e,"documentView"); +if(_f){ +objj_msgSend(_f,"removeFromSuperview"); +} +objj_msgSend(_contentView,"removeFromSuperview"); +_contentView=_e; +objj_msgSend(_contentView,"setDocumentView:",_f); +objj_msgSend(_c,"addSubview:",_contentView); +objj_msgSend(_c,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("contentView"),function(_10,_11){ +with(_10){ +return _contentView; +} +}),new objj_method(sel_getUid("setDocumentView:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_contentView,"setDocumentView:",_14); +objj_msgSend(_12,"_updateCornerAndHeaderView"); +objj_msgSend(_12,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(_15,_16,_17){ +with(_15){ +if(_contentView!==_17){ +return; +} +if(_recursionCount>5){ +return; +} +++_recursionCount; +var _18=objj_msgSend(_15,"documentView"); +if(!_18){ +if(_autohidesScrollers){ +objj_msgSend(_verticalScroller,"setHidden:",YES); +objj_msgSend(_horizontalScroller,"setHidden:",YES); +}else{ +} +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_15,"_insetBounds")); +objj_msgSend(_headerClipView,"setFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +--_recursionCount; +return; +} +var _19=objj_msgSend(_18,"frame"),_1a=objj_msgSend(_15,"_insetBounds"),_1b=objj_msgSend(_15,"_headerClipViewFrame"),_1c=(_1b.size.height); +_1a.origin.y+=_1c; +_1a.size.height-=_1c; +var _1d={width:(_19.size.width)-(_1a.size.width),height:(_19.size.height)-(_1a.size.height)},_1e=(objj_msgSend(_verticalScroller,"frame").size.width),_1f=(objj_msgSend(_horizontalScroller,"frame").size.height),_20=_1d.height>0,_21=_1d.width>0,_22=_hasVerticalScroller&&(!_autohidesScrollers||_20),_23=_hasHorizontalScroller&&(!_autohidesScrollers||_21); +if(_22){ +_1d.width+=_1e; +_21=_1d.width>0; +_23=_hasHorizontalScroller&&(!_autohidesScrollers||_21); +} +if(_23){ +_1d.height+=_1f; +_20=_1d.height>0; +_22=_hasVerticalScroller&&(!_autohidesScrollers||_20); +} +objj_msgSend(_verticalScroller,"setHidden:",!_22); +objj_msgSend(_verticalScroller,"setEnabled:",_20); +objj_msgSend(_horizontalScroller,"setHidden:",!_23); +objj_msgSend(_horizontalScroller,"setEnabled:",_21); +if(_22){ +_1a.size.width-=_1e; +} +if(_23){ +_1a.size.height-=_1f; +} +var _24=objj_msgSend(_contentView,"bounds").origin,_25=!objj_msgSend(_verticalScroller,"isHidden"),_26=!objj_msgSend(_horizontalScroller,"isHidden"); +if(_22){ +var _27=MAX((_1a.origin.y),MAX((objj_msgSend(_15,"_cornerViewFrame").origin.y+objj_msgSend(_15,"_cornerViewFrame").size.height),(_1b.origin.y+_1b.size.height))); +var _28=(_1a.origin.y+_1a.size.height)-_27; +objj_msgSend(_verticalScroller,"setFloatValue:",(_1d.height<=0)?0:_24.y/_1d.height); +objj_msgSend(_verticalScroller,"setKnobProportion:",(_1a.size.height)/(_19.size.height)); +objj_msgSend(_verticalScroller,"setFrame:",{origin:{x:(_1a.origin.x+_1a.size.width),y:_27},size:{width:_1e,height:_28}}); +}else{ +if(_25){ +objj_msgSend(_verticalScroller,"setFloatValue:",0); +objj_msgSend(_verticalScroller,"setKnobProportion:",1); +} +} +if(_23){ +objj_msgSend(_horizontalScroller,"setFloatValue:",(_1d.width<=0)?0:_24.x/_1d.width); +objj_msgSend(_horizontalScroller,"setKnobProportion:",(_1a.size.width)/(_19.size.width)); +objj_msgSend(_horizontalScroller,"setFrame:",{origin:{x:(_1a.origin.x),y:(_1a.origin.y+_1a.size.height)},size:{width:(_1a.size.width),height:_1f}}); +}else{ +if(_26){ +objj_msgSend(_horizontalScroller,"setFloatValue:",0); +objj_msgSend(_horizontalScroller,"setKnobProportion:",1); +} +} +objj_msgSend(_contentView,"setFrame:",_1a); +objj_msgSend(_headerClipView,"setFrame:",_1b); +objj_msgSend(_cornerView,"setFrame:",objj_msgSend(_15,"_cornerViewFrame")); +objj_msgSend(objj_msgSend(_15,"bottomCornerView"),"setFrame:",objj_msgSend(_15,"_bottomCornerViewFrame")); +objj_msgSend(objj_msgSend(_15,"bottomCornerView"),"setBackgroundColor:",objj_msgSend(_15,"currentValueForThemeAttribute:","bottom-corner-color")); +--_recursionCount; +} +}),new objj_method(sel_getUid("setBorderType:"),function(_29,_2a,_2b){ +with(_29){ +if(_borderType==_2b){ +return; +} +_borderType=_2b; +objj_msgSend(_29,"reflectScrolledClipView:",_contentView); +objj_msgSend(_29,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderType"),function(_2c,_2d){ +with(_2c){ +return _borderType; +} +}),new objj_method(sel_getUid("setHorizontalScroller:"),function(_2e,_2f,_30){ +with(_2e){ +if(_horizontalScroller===_30){ +return; +} +objj_msgSend(_horizontalScroller,"removeFromSuperview"); +objj_msgSend(_horizontalScroller,"setTarget:",nil); +objj_msgSend(_horizontalScroller,"setAction:",nil); +_horizontalScroller=_30; +objj_msgSend(_horizontalScroller,"setTarget:",_2e); +objj_msgSend(_horizontalScroller,"setAction:",sel_getUid("_horizontalScrollerDidScroll:")); +objj_msgSend(_2e,"addSubview:",_horizontalScroller); +objj_msgSend(_2e,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("horizontalScroller"),function(_31,_32){ +with(_31){ +return _horizontalScroller; +} +}),new objj_method(sel_getUid("setHasHorizontalScroller:"),function(_33,_34,_35){ +with(_33){ +if(_hasHorizontalScroller===_35){ +return; +} +_hasHorizontalScroller=_35; +if(_hasHorizontalScroller&&!_horizontalScroller){ +var _36=objj_msgSend(_33,"_insetBounds"); +objj_msgSend(_33,"setHorizontalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",CGRectMake(0,0,MAX((_36.size.width),objj_msgSend(CPScroller,"scrollerWidth")+1),objj_msgSend(CPScroller,"scrollerWidth")))); +objj_msgSend(objj_msgSend(_33,"horizontalScroller"),"setFrameSize:",CGSizeMake((_36.size.width),objj_msgSend(CPScroller,"scrollerWidth"))); +} +objj_msgSend(_33,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("hasHorizontalScroller"),function(_37,_38){ +with(_37){ +return _hasHorizontalScroller; +} +}),new objj_method(sel_getUid("setVerticalScroller:"),function(_39,_3a,_3b){ +with(_39){ +if(_verticalScroller===_3b){ +return; +} +objj_msgSend(_verticalScroller,"removeFromSuperview"); +objj_msgSend(_verticalScroller,"setTarget:",nil); +objj_msgSend(_verticalScroller,"setAction:",nil); +_verticalScroller=_3b; +objj_msgSend(_verticalScroller,"setTarget:",_39); +objj_msgSend(_verticalScroller,"setAction:",sel_getUid("_verticalScrollerDidScroll:")); +objj_msgSend(_39,"addSubview:",_verticalScroller); +objj_msgSend(_39,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("verticalScroller"),function(_3c,_3d){ +with(_3c){ +return _verticalScroller; +} +}),new objj_method(sel_getUid("setHasVerticalScroller:"),function(_3e,_3f,_40){ +with(_3e){ +if(_hasVerticalScroller===_40){ +return; +} +_hasVerticalScroller=_40; +if(_hasVerticalScroller&&!_verticalScroller){ +var _41=objj_msgSend(_3e,"_insetBounds"); +objj_msgSend(_3e,"setVerticalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:objj_msgSend(CPScroller,"scrollerWidth"),height:MAX((_41.size.height),objj_msgSend(CPScroller,"scrollerWidth")+1)}})); +objj_msgSend(objj_msgSend(_3e,"verticalScroller"),"setFrameSize:",CGSizeMake(objj_msgSend(CPScroller,"scrollerWidth"),(_41.size.height))); +} +objj_msgSend(_3e,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("hasVerticalScroller"),function(_42,_43){ +with(_42){ +return _hasVerticalScroller; +} +}),new objj_method(sel_getUid("setAutohidesScrollers:"),function(_44,_45,_46){ +with(_44){ +if(_autohidesScrollers==_46){ +return; +} +_autohidesScrollers=_46; +objj_msgSend(_44,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("autohidesScrollers"),function(_47,_48){ +with(_47){ +return _autohidesScrollers; +} +}),new objj_method(sel_getUid("_updateCornerAndHeaderView"),function(_49,_4a){ +with(_49){ +var _4b=objj_msgSend(_49,"documentView"),_4c=objj_msgSend(_49,"_headerView"),_4d=objj_msgSend(_4b,"respondsToSelector:",sel_getUid("headerView"))?objj_msgSend(_4b,"headerView"):nil; +if(_4c!==_4d){ +objj_msgSend(_4c,"removeFromSuperview"); +objj_msgSend(_headerClipView,"setDocumentView:",_4d); +} +var _4e=objj_msgSend(_4b,"respondsToSelector:",sel_getUid("cornerView"))?objj_msgSend(_4b,"cornerView"):nil; +if(_cornerView!==_4e){ +objj_msgSend(_cornerView,"removeFromSuperview"); +_cornerView=_4e; +if(_cornerView){ +objj_msgSend(_49,"addSubview:",_cornerView); +} +} +objj_msgSend(_49,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("_headerView"),function(_4f,_50){ +with(_4f){ +return objj_msgSend(_headerClipView,"documentView"); +} +}),new objj_method(sel_getUid("_cornerViewFrame"),function(_51,_52){ +with(_51){ +if(!_cornerView){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _53=objj_msgSend(_51,"_insetBounds"),_54=objj_msgSend(_cornerView,"frame"); +_54.origin.x=(_53.origin.x+_53.size.width)-(_54.size.width); +_54.origin.y=(_53.origin.y); +return _54; +} +}),new objj_method(sel_getUid("_headerClipViewFrame"),function(_55,_56){ +with(_55){ +var _57=objj_msgSend(_55,"_headerView"); +if(!_57){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _58=objj_msgSend(_55,"_insetBounds"); +_58.size.height=(objj_msgSend(_57,"frame").size.height); +_58.size.width-=(objj_msgSend(_55,"_cornerViewFrame").size.width); +return _58; +} +}),new objj_method(sel_getUid("_bottomCornerViewFrame"),function(_59,_5a){ +with(_59){ +if(objj_msgSend(objj_msgSend(_59,"horizontalScroller"),"isHidden")||objj_msgSend(objj_msgSend(_59,"verticalScroller"),"isHidden")){ +return CGRectMakeZero(); +} +var _5b=objj_msgSend(objj_msgSend(_59,"verticalScroller"),"frame"),_5c=CGRectMakeZero(); +_5c.origin.x=CGRectGetMinX(_5b); +_5c.origin.y=CGRectGetMaxY(_5b); +_5c.size.width=objj_msgSend(CPScroller,"scrollerWidth"); +_5c.size.height=objj_msgSend(CPScroller,"scrollerWidth"); +return _5c; +} +}),new objj_method(sel_getUid("setBottomCornerView:"),function(_5d,_5e,_5f){ +with(_5d){ +if(_bottomCornerView===_5f){ +return; +} +objj_msgSend(_bottomCornerView,"removeFromSuperview"); +objj_msgSend(_5f,"setFrame:",objj_msgSend(_5d,"_bottomCornerViewFrame")); +objj_msgSend(_5d,"addSubview:",_5f); +_bottomCornerView=_5f; +objj_msgSend(_5d,"_updateCornerAndHeaderView"); +} +}),new objj_method(sel_getUid("bottomCornerView"),function(_60,_61){ +with(_60){ +return _bottomCornerView; +} +}),new objj_method(sel_getUid("_verticalScrollerDidScroll:"),function(_62,_63,_64){ +with(_62){ +var _65=objj_msgSend(_64,"floatValue"),_66=objj_msgSend(objj_msgSend(_contentView,"documentView"),"frame"),_67=objj_msgSend(_contentView,"bounds"); +switch(objj_msgSend(_verticalScroller,"hitPart")){ +case CPScrollerDecrementLine: +_67.origin.y-=_verticalLineScroll; +break; +case CPScrollerIncrementLine: +_67.origin.y+=_verticalLineScroll; +break; +case CPScrollerDecrementPage: +_67.origin.y-=(_67.size.height)-_verticalPageScroll; +break; +case CPScrollerIncrementPage: +_67.origin.y+=(_67.size.height)-_verticalPageScroll; +break; +case CPScrollerKnobSlot: +case CPScrollerKnob: +default: +_67.origin.y=ROUND(_65*((_66.size.height)-(_67.size.height))); +} +objj_msgSend(_contentView,"scrollToPoint:",_67.origin); +} +}),new objj_method(sel_getUid("_horizontalScrollerDidScroll:"),function(_68,_69,_6a){ +with(_68){ +var _6b=objj_msgSend(_6a,"floatValue"),_6c=objj_msgSend(objj_msgSend(_68,"documentView"),"frame"),_6d=objj_msgSend(_contentView,"bounds"); +switch(objj_msgSend(_horizontalScroller,"hitPart")){ +case CPScrollerDecrementLine: +_6d.origin.x-=_horizontalLineScroll; +break; +case CPScrollerIncrementLine: +_6d.origin.x+=_horizontalLineScroll; +break; +case CPScrollerDecrementPage: +_6d.origin.x-=(_6d.size.width)-_horizontalPageScroll; +break; +case CPScrollerIncrementPage: +_6d.origin.x+=(_6d.size.width)-_horizontalPageScroll; +break; +case CPScrollerKnobSlot: +case CPScrollerKnob: +default: +_6d.origin.x=ROUND(_6b*((_6c.size.width)-(_6d.size.width))); +} +objj_msgSend(_contentView,"scrollToPoint:",_6d.origin); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_6d.origin.x,0)); +} +}),new objj_method(sel_getUid("tile"),function(_6e,_6f){ +with(_6e){ +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_70,_71,_72){ +with(_70){ +objj_msgSend(_70,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("setLineScroll:"),function(_73,_74,_75){ +with(_73){ +objj_msgSend(_73,"setHorizonalLineScroll:",_75); +objj_msgSend(_73,"setVerticalLineScroll:",_75); +} +}),new objj_method(sel_getUid("lineScroll"),function(_76,_77){ +with(_76){ +return objj_msgSend(_76,"horizontalLineScroll"); +} +}),new objj_method(sel_getUid("setHorizontalLineScroll:"),function(_78,_79,_7a){ +with(_78){ +_horizontalLineScroll=_7a; +} +}),new objj_method(sel_getUid("horizontalLineScroll"),function(_7b,_7c){ +with(_7b){ +return _horizontalLineScroll; +} +}),new objj_method(sel_getUid("setVerticalLineScroll:"),function(_7d,_7e,_7f){ +with(_7d){ +_verticalLineScroll=_7f; +} +}),new objj_method(sel_getUid("verticalLineScroll"),function(_80,_81){ +with(_80){ +return _verticalLineScroll; +} +}),new objj_method(sel_getUid("setPageScroll:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(_82,"setHorizontalPageScroll:",_84); +objj_msgSend(_82,"setVerticalPageScroll:",_84); +} +}),new objj_method(sel_getUid("pageScroll"),function(_85,_86){ +with(_85){ +return objj_msgSend(_85,"horizontalPageScroll"); +} +}),new objj_method(sel_getUid("setHorizontalPageScroll:"),function(_87,_88,_89){ +with(_87){ +_horizontalPageScroll=_89; +} +}),new objj_method(sel_getUid("horizontalPageScroll"),function(_8a,_8b){ +with(_8a){ +return _horizontalPageScroll; +} +}),new objj_method(sel_getUid("setVerticalPageScroll:"),function(_8c,_8d,_8e){ +with(_8c){ +_verticalPageScroll=_8e; +} +}),new objj_method(sel_getUid("verticalPageScroll"),function(_8f,_90){ +with(_8f){ +return _verticalPageScroll; +} +}),new objj_method(sel_getUid("drawRect:"),function(_91,_92,_93){ +with(_91){ +objj_msgSendSuper({receiver:_91,super_class:objj_getClass("CPScrollView").super_class},"drawRect:",_93); +if(_borderType==CPNoBorder){ +return; +} +var _94=objj_msgSend(_91,"bounds"),_95=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetLineWidth(_95,1); +switch(_borderType){ +case CPLineBorder: +CGContextSetStrokeColor(_95,objj_msgSend(_91,"currentValueForThemeAttribute:","border-color")); +CGContextStrokeRect(_95,{origin:{x:_94.origin.x+0.5,y:_94.origin.y+0.5},size:{width:_94.size.width-2*0.5,height:_94.size.height-2*0.5}}); +break; +case CPBezelBorder: +objj_msgSend(_91,"_drawGrayBezelInContext:bounds:",_95,_94); +break; +case CPGrooveBorder: +objj_msgSend(_91,"_drawGrooveInContext:bounds:",_95,_94); +break; +default: +break; +} +} +}),new objj_method(sel_getUid("_drawGrayBezelInContext:bounds:"),function(_96,_97,_98,_99){ +with(_96){ +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",142/255,1)); +var y=(_99.origin.y)+0.5; +CGContextMoveToPoint(_98,(_99.origin.x),y); +CGContextAddLineToPoint(_98,(_99.origin.x)+1,y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",192/255,1)); +CGContextMoveToPoint(_98,(_99.origin.x)+1,y); +CGContextAddLineToPoint(_98,(_99.origin.x+_99.size.width)-1,y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",142/255,1)); +CGContextMoveToPoint(_98,(_99.origin.x+_99.size.width)-1,y); +CGContextAddLineToPoint(_98,(_99.origin.x+_99.size.width),y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",190/255,1)); +var x=(_99.origin.x+_99.size.width)-0.5; +CGContextMoveToPoint(_98,x,(_99.origin.y)+1); +CGContextAddLineToPoint(_98,x,(_99.origin.y+_99.size.height)); +CGContextMoveToPoint(_98,x-0.5,(_99.origin.y+_99.size.height)-0.5); +CGContextAddLineToPoint(_98,(_99.origin.x),(_99.origin.y+_99.size.height)-0.5); +x=(_99.origin.x)+0.5; +CGContextMoveToPoint(_98,x,(_99.origin.y+_99.size.height)); +CGContextAddLineToPoint(_98,x,(_99.origin.y)+1); +CGContextStrokePath(_98); +} +}),new objj_method(sel_getUid("_drawGrooveInContext:bounds:"),function(_9a,_9b,_9c,_9d){ +with(_9a){ +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"colorWithWhite:alpha:",159/255,1)); +var y=(_9d.origin.y)+0.5; +CGContextMoveToPoint(_9c,(_9d.origin.x),y); +CGContextAddLineToPoint(_9c,(_9d.origin.x+_9d.size.width),y); +var x=(_9d.origin.x+_9d.size.width)-1.5; +CGContextMoveToPoint(_9c,x,(_9d.origin.y)+2); +CGContextAddLineToPoint(_9c,x,(_9d.origin.y+_9d.size.height)-1); +y=(_9d.origin.y+_9d.size.height)-1.5; +CGContextMoveToPoint(_9c,(_9d.origin.x+_9d.size.width)-1,y); +CGContextAddLineToPoint(_9c,(_9d.origin.x)+2,y); +x=(_9d.origin.x)+0.5; +CGContextMoveToPoint(_9c,x,(_9d.origin.y+_9d.size.height)); +CGContextAddLineToPoint(_9c,x,(_9d.origin.y)); +CGContextStrokePath(_9c); +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"whiteColor")); +var _9e={origin:{x:_9d.origin.x+1,y:_9d.origin.y+1},size:{width:_9d.size.width,height:_9d.size.height}}; +_9e.size.width-=1; +_9e.size.height-=1; +CGContextStrokeRect(_9c,{origin:{x:_9e.origin.x+0.5,y:_9e.origin.y+0.5},size:{width:_9e.size.width-2*0.5,height:_9e.size.height-2*0.5}}); +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"colorWithWhite:alpha:",192/255,1)); +y=(_9d.origin.y)+2.5; +CGContextMoveToPoint(_9c,(_9d.origin.x)+2,y); +CGContextAddLineToPoint(_9c,(_9d.origin.x+_9d.size.width)-2,y); +CGContextStrokePath(_9c); +} +}),new objj_method(sel_getUid("scrollWheel:"),function(_9f,_a0,_a1){ +with(_9f){ +objj_msgSend(_9f,"_respondToScrollWheelEventWithDeltaX:deltaY:",objj_msgSend(_a1,"deltaX"),objj_msgSend(_a1,"deltaY")); +} +}),new objj_method(sel_getUid("_respondToScrollWheelEventWithDeltaX:deltaY:"),function(_a2,_a3,_a4,_a5){ +with(_a2){ +var _a6=objj_msgSend(objj_msgSend(_a2,"documentView"),"frame"),_a7=objj_msgSend(_contentView,"bounds"),_a8=objj_msgSend(_contentView,"frame"),_a9=objj_msgSend(_a2,"enclosingScrollView"); +_a7.origin.x=ROUND(_a7.origin.x+_a4); +_a7.origin.y=ROUND(_a7.origin.y+_a5); +var _aa=objj_msgSend(_contentView,"constrainScrollPoint:",CGPointCreateCopy(_a7.origin)),_ab=_a7.origin.x-_aa.x,_ac=_a7.origin.y-_aa.y; +objj_msgSend(_contentView,"scrollToPoint:",_aa); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_aa.x,0)); +if(_ab||_ac){ +objj_msgSend(_a9,"_respondToScrollWheelEventWithDeltaX:deltaY:",_ab,_ac); +} +} +}),new objj_method(sel_getUid("keyDown:"),function(_ad,_ae,_af){ +with(_ad){ +objj_msgSend(_ad,"interpretKeyEvents:",[_af]); +} +}),new objj_method(sel_getUid("pageUp:"),function(_b0,_b1,_b2){ +with(_b0){ +var _b3=objj_msgSend(_contentView,"bounds"); +objj_msgSend(_b0,"moveByOffset:",CGSizeMake(0,-((_b3.size.height)-_verticalPageScroll))); +} +}),new objj_method(sel_getUid("pageDown:"),function(_b4,_b5,_b6){ +with(_b4){ +var _b7=objj_msgSend(_contentView,"bounds"); +objj_msgSend(_b4,"moveByOffset:",CGSizeMake(0,(_b7.size.height)-_verticalPageScroll)); +} +}),new objj_method(sel_getUid("moveLeft:"),function(_b8,_b9,_ba){ +with(_b8){ +objj_msgSend(_b8,"moveByOffset:",CGSizeMake(-_horizontalLineScroll,0)); +} +}),new objj_method(sel_getUid("moveRight:"),function(_bb,_bc,_bd){ +with(_bb){ +objj_msgSend(_bb,"moveByOffset:",CGSizeMake(_horizontalLineScroll,0)); +} +}),new objj_method(sel_getUid("moveUp:"),function(_be,_bf,_c0){ +with(_be){ +objj_msgSend(_be,"moveByOffset:",CGSizeMake(0,-_verticalLineScroll)); +} +}),new objj_method(sel_getUid("moveDown:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSend(_c1,"moveByOffset:",CGSizeMake(0,_verticalLineScroll)); +} +}),new objj_method(sel_getUid("moveByOffset:"),function(_c4,_c5,_c6){ +with(_c4){ +var _c7=objj_msgSend(objj_msgSend(_c4,"documentView"),"frame"),_c8=objj_msgSend(_contentView,"bounds"); +_c8.origin.x+=_c6.width; +_c8.origin.y+=_c6.height; +objj_msgSend(_contentView,"scrollToPoint:",_c8.origin); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_c8.origin,0)); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_c9,_ca){ +with(_c9){ +return "scrollview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_cb,_cc){ +with(_cb){ +return objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{"bottom-corner-color":objj_msgSend(CPColor,"whiteColor"),"border-color":objj_msgSend(CPColor,"blackColor")}); +} +}),new objj_method(sel_getUid("contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:"),function(_cd,_ce,_cf,_d0,_d1,_d2){ +with(_cd){ +var _d3=objj_msgSend(_cd,"_insetBounds:borderType:",{origin:{x:0,y:0},size:{width:_cf.width,height:_cf.height}},_d2),_d4=objj_msgSend(CPScroller,"scrollerWidth"); +if(_d0){ +_d3.size.height-=_d4; +} +if(_d1){ +_d3.size.width-=_d4; +} +return _d3.size; +} +}),new objj_method(sel_getUid("frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:"),function(_d5,_d6,_d7,_d8,_d9,_da){ +with(_d5){ +var _db=objj_msgSend(_d5,"_insetBounds:borderType:",{origin:{x:0,y:0},size:{width:_d7.width,height:_d7.height}},_da),_dc=_d7.width-_db.size.width,_dd=_d7.height-_db.size.height,_de={width:_d7.width+_dc,height:_d7.height+_dd},_df=objj_msgSend(CPScroller,"scrollerWidth"); +if(_d8){ +_de.height-=_df; +} +if(_d9){ +_de.width-=_df; +} +return _de; +} +}),new objj_method(sel_getUid("_insetBounds:borderType:"),function(_e0,_e1,_e2,_e3){ +with(_e0){ +switch(_e3){ +case CPLineBorder: +case CPBezelBorder: +return {origin:{x:_e2.origin.x+1,y:_e2.origin.y+1},size:{width:_e2.size.width-2*1,height:_e2.size.height-2*1}}; +case CPGrooveBorder: +_e2={origin:{x:_e2.origin.x+2,y:_e2.origin.y+2},size:{width:_e2.size.width-2*2,height:_e2.size.height-2*2}}; +++_e2.origin.y; +--_e2.size.height; +return _e2; +case CPNoBorder: +default: +return _e2; +} +} +})]); +var _e4="CPScrollViewContentView",_e5="CPScrollViewHeaderClipViewKey",_e6="CPScrollViewVLineScroll",_e7="CPScrollViewHLineScroll",_e8="CPScrollViewVPageScroll",_e9="CPScrollViewHPageScroll",_ea="CPScrollViewHasVScroller",_eb="CPScrollViewHasHScroller",_ec="CPScrollViewVScroller",_ed="CPScrollViewHScroller",_ee="CPScrollViewAutohidesScroller",_ef="CPScrollViewCornerViewKey",_f0="CPScrollViewBorderTypeKey"; +var _1=objj_getClass("CPScrollView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPScrollView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_f1,_f2,_f3){ +with(_f1){ +if(_f1=objj_msgSendSuper({receiver:_f1,super_class:objj_getClass("CPScrollView").super_class},"initWithCoder:",_f3)){ +_verticalLineScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e6); +_verticalPageScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e8); +_horizontalLineScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e7); +_horizontalPageScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e9); +_contentView=objj_msgSend(_f3,"decodeObjectForKey:",_e4); +_headerClipView=objj_msgSend(_f3,"decodeObjectForKey:",_e5); +if(!_headerClipView){ +_headerClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"init"); +objj_msgSend(_f1,"addSubview:",_headerClipView); +} +_bottomCornerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_f1,"addSubview:",_bottomCornerView); +_verticalScroller=objj_msgSend(_f3,"decodeObjectForKey:",_ec); +_horizontalScroller=objj_msgSend(_f3,"decodeObjectForKey:",_ed); +_hasVerticalScroller=objj_msgSend(_f3,"decodeBoolForKey:",_ea); +_hasHorizontalScroller=objj_msgSend(_f3,"decodeBoolForKey:",_eb); +_autohidesScrollers=objj_msgSend(_f3,"decodeBoolForKey:",_ee); +_borderType=objj_msgSend(_f3,"decodeIntForKey:",_f0); +_cornerView=objj_msgSend(_f3,"decodeObjectForKey:",_ef); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("reflectScrolledClipView:"),_f1,_contentView,0,[CPDefaultRunLoopMode]); +} +return _f1; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_f4,_f5,_f6){ +with(_f4){ +objj_msgSendSuper({receiver:_f4,super_class:objj_getClass("CPScrollView").super_class},"encodeWithCoder:",_f6); +objj_msgSend(_f6,"encodeObject:forKey:",_contentView,_e4); +objj_msgSend(_f6,"encodeObject:forKey:",_headerClipView,_e5); +objj_msgSend(_f6,"encodeObject:forKey:",_verticalScroller,_ec); +objj_msgSend(_f6,"encodeObject:forKey:",_horizontalScroller,_ed); +objj_msgSend(_f6,"encodeFloat:forKey:",_verticalLineScroll,_e6); +objj_msgSend(_f6,"encodeFloat:forKey:",_verticalPageScroll,_e8); +objj_msgSend(_f6,"encodeFloat:forKey:",_horizontalLineScroll,_e7); +objj_msgSend(_f6,"encodeFloat:forKey:",_horizontalPageScroll,_e9); +objj_msgSend(_f6,"encodeBool:forKey:",_hasVerticalScroller,_ea); +objj_msgSend(_f6,"encodeBool:forKey:",_hasHorizontalScroller,_eb); +objj_msgSend(_f6,"encodeBool:forKey:",_autohidesScrollers,_ee); +objj_msgSend(_f6,"encodeObject:forKey:",_cornerView,_ef); +objj_msgSend(_f6,"encodeInt:forKey:",_borderType,_f0); +} +})]); +p;15;CPSearchField.jt;21870;@STATIC;1.0;i;13;CPTextField.jt;21832; +objj_executeFile("CPTextField.j",YES); +CPSearchFieldRecentsTitleMenuItemTag=1000; +CPSearchFieldRecentsMenuItemTag=1001; +CPSearchFieldClearRecentsMenuItemTag=1002; +CPSearchFieldNoRecentsMenuItemTag=1003; +CPSearchFieldSeparatorMenuItemTag=1004; +var _1=nil,_2=nil,_3=nil,_4=nil; +var _5=25,_6=22,_7=22; +var _8=" "; +var _9=objj_allocateClassPair(CPTextField,"CPSearchField"),_a=_9.isa; +class_addIvars(_9,[new objj_ivar("_searchButton"),new objj_ivar("_cancelButton"),new objj_ivar("_searchMenuTemplate"),new objj_ivar("_searchMenu"),new objj_ivar("_recentsAutosaveName"),new objj_ivar("_recentSearches"),new objj_ivar("_maximumRecents"),new objj_ivar("_sendsWholeSearchString"),new objj_ivar("_sendsSearchStringImmediately"),new objj_ivar("_canResignFirstResponder"),new objj_ivar("_partialStringTimer")]); +objj_registerClassPair(_9); +class_addMethods(_9,[new objj_method(sel_getUid("initWithFrame:"),function(_b,_c,_d){ +with(_b){ +if(_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPSearchField").super_class},"initWithFrame:",_d)){ +_maximumRecents=10; +_sendsWholeSearchString=NO; +_sendsSearchStringImmediately=NO; +_recentsAutosaveName=nil; +objj_msgSend(_b,"_init"); +_cancelButton._DOMElement.style.cursor="default"; +_searchButton._DOMElement.style.cursor="default"; +} +return _b; +} +}),new objj_method(sel_getUid("_init"),function(_e,_f){ +with(_e){ +_recentSearches=objj_msgSend(CPArray,"array"); +objj_msgSend(_e,"setBezeled:",YES); +objj_msgSend(_e,"setBezelStyle:",CPTextFieldRoundedBezel); +objj_msgSend(_e,"setBordered:",YES); +objj_msgSend(_e,"setEditable:",YES); +objj_msgSend(_e,"setDelegate:",_e); +objj_msgSend(_e,"setContinuous:",YES); +var _10=objj_msgSend(_e,"bounds"),_11=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",objj_msgSend(_e,"cancelButtonRectForBounds:",_10)),_12=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",objj_msgSend(_e,"searchButtonRectForBounds:",_10)); +objj_msgSend(_e,"setCancelButton:",_11); +objj_msgSend(_e,"resetCancelButton"); +objj_msgSend(_e,"setSearchButton:",_12); +objj_msgSend(_e,"resetSearchButton"); +_canResignFirstResponder=YES; +} +}),new objj_method(sel_getUid("setSearchButton:"),function(_13,_14,_15){ +with(_13){ +if(_15!=_searchButton){ +objj_msgSend(_searchButton,"removeFromSuperview"); +_searchButton=_15; +objj_msgSend(_searchButton,"setFrame:",objj_msgSend(_13,"searchButtonRectForBounds:",objj_msgSend(_13,"bounds"))); +objj_msgSend(_searchButton,"setAutoresizingMask:",CPViewMaxXMargin); +objj_msgSend(_13,"addSubview:",_searchButton); +} +} +}),new objj_method(sel_getUid("searchButton"),function(_16,_17){ +with(_16){ +return _searchButton; +} +}),new objj_method(sel_getUid("resetSearchButton"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_18,"searchButton"),_1b=(_searchMenuTemplate===nil)?_1:_2; +objj_msgSend(_1a,"setBordered:",NO); +objj_msgSend(_1a,"setImageScaling:",CPScaleToFit); +objj_msgSend(_1a,"setImage:",_1b); +objj_msgSend(_1a,"setAutoresizingMask:",CPViewMaxXMargin); +} +}),new objj_method(sel_getUid("setCancelButton:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_1e!=_cancelButton){ +objj_msgSend(_cancelButton,"removeFromSuperview"); +_cancelButton=_1e; +objj_msgSend(_cancelButton,"setFrame:",objj_msgSend(_1c,"cancelButtonRectForBounds:",objj_msgSend(_1c,"bounds"))); +objj_msgSend(_cancelButton,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_cancelButton,"setTarget:",_1c); +objj_msgSend(_cancelButton,"setAction:",sel_getUid("_searchFieldCancel:")); +objj_msgSend(_1c,"_updateCancelButtonVisibility"); +objj_msgSend(_1c,"addSubview:",_cancelButton); +} +} +}),new objj_method(sel_getUid("cancelButton"),function(_1f,_20){ +with(_1f){ +return _cancelButton; +} +}),new objj_method(sel_getUid("resetCancelButton"),function(_21,_22){ +with(_21){ +var _23=objj_msgSend(_21,"cancelButton"); +objj_msgSend(_23,"setBordered:",NO); +objj_msgSend(_23,"setImageScaling:",CPScaleToFit); +objj_msgSend(_23,"setImage:",_3); +objj_msgSend(_23,"setAlternateImage:",_4); +objj_msgSend(_23,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_23,"setTarget:",_21); +objj_msgSend(_23,"setAction:",sel_getUid("_searchFieldCancel:")); +} +}),new objj_method(sel_getUid("searchTextRectForBounds:"),function(_24,_25,_26){ +with(_24){ +var _27=0,_28=(_26.size.width),_29=objj_msgSend(_24,"bounds"); +if(_searchButton){ +var _2a=objj_msgSend(_24,"searchButtonRectForBounds:",_29); +_27=(_2a.origin.x+_2a.size.width)+2; +} +if(_cancelButton){ +var _2b=objj_msgSend(_24,"cancelButtonRectForBounds:",_29); +_28=(_2b.origin.x)-_27; +} +return {origin:{x:_27,y:(_26.origin.y)},size:{width:_28,height:(_26.size.height)}}; +} +}),new objj_method(sel_getUid("searchButtonRectForBounds:"),function(_2c,_2d,_2e){ +with(_2c){ +return {origin:{x:5,y:((_2e.size.height)-_7)/2},size:{width:_5,height:_7}}; +} +}),new objj_method(sel_getUid("cancelButtonRectForBounds:"),function(_2f,_30,_31){ +with(_2f){ +return {origin:{x:(_31.size.width)-_6-5,y:((_31.size.height)-_6)/2},size:{width:_7,height:_7}}; +} +}),new objj_method(sel_getUid("searchMenuTemplate"),function(_32,_33){ +with(_32){ +return _searchMenuTemplate; +} +}),new objj_method(sel_getUid("setSearchMenuTemplate:"),function(_34,_35,_36){ +with(_34){ +_searchMenuTemplate=_36; +objj_msgSend(_34,"resetSearchButton"); +objj_msgSend(_34,"_loadRecentSearchList"); +objj_msgSend(_34,"_updateSearchMenu"); +} +}),new objj_method(sel_getUid("sendsWholeSearchString"),function(_37,_38){ +with(_37){ +return _sendsWholeSearchString; +} +}),new objj_method(sel_getUid("setSendsWholeSearchString:"),function(_39,_3a,_3b){ +with(_39){ +_sendsWholeSearchString=_3b; +} +}),new objj_method(sel_getUid("sendsSearchStringImmediately"),function(_3c,_3d){ +with(_3c){ +return _sendsSearchStringImmediately; +} +}),new objj_method(sel_getUid("setSendsSearchStringImmediately:"),function(_3e,_3f,_40){ +with(_3e){ +_sendsSearchStringImmediately=_40; +} +}),new objj_method(sel_getUid("maximumRecents"),function(_41,_42){ +with(_41){ +return _maximumRecents; +} +}),new objj_method(sel_getUid("setMaximumRecents:"),function(_43,_44,max){ +with(_43){ +if(max>254){ +max=254; +}else{ +if(max<0){ +max=10; +} +} +_maximumRecents=max; +} +}),new objj_method(sel_getUid("recentSearches"),function(_45,_46){ +with(_45){ +return _recentSearches; +} +}),new objj_method(sel_getUid("setRecentSearches:"),function(_47,_48,_49){ +with(_47){ +var max=MIN(objj_msgSend(_47,"maximumRecents"),objj_msgSend(_49,"count")),_49=objj_msgSend(_49,"subarrayWithRange:",CPMakeRange(0,max)); +_recentSearches=_49; +objj_msgSend(_47,"_autosaveRecentSearchList"); +} +}),new objj_method(sel_getUid("recentsAutosaveName"),function(_4a,_4b){ +with(_4a){ +return _recentsAutosaveName; +} +}),new objj_method(sel_getUid("setRecentsAutosaveName:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_recentsAutosaveName!=nil){ +objj_msgSend(_4c,"_deregisterForAutosaveNotification"); +} +_recentsAutosaveName=_4e; +if(_recentsAutosaveName!=nil){ +objj_msgSend(_4c,"_registerForAutosaveNotification"); +} +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSendSuper({receiver:_4f,super_class:objj_getClass("CPSearchField").super_class},"contentRectForBounds:",_51); +return objj_msgSend(_4f,"searchTextRectForBounds:",_52); +} +}),new objj_method(sel_getUid("menu"),function(_53,_54){ +with(_53){ +return _searchMenu; +} +}),new objj_method(sel_getUid("isOpaque"),function(_55,_56){ +with(_55){ +return objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPSearchField").super_class},"isOpaque")&&objj_msgSend(_cancelButton,"isOpaque")&&objj_msgSend(_searchButton,"isOpaque"); +} +}),new objj_method(sel_getUid("_updateCancelButtonVisibility"),function(_57,_58){ +with(_57){ +objj_msgSend(_cancelButton,"setHidden:",(objj_msgSend(objj_msgSend(_57,"stringValue"),"length")===0)); +} +}),new objj_method(sel_getUid("controlTextDidChange:"),function(_59,_5a,_5b){ +with(_59){ +if(!objj_msgSend(_59,"sendsWholeSearchString")){ +if(objj_msgSend(_59,"sendsSearchStringImmediately")){ +objj_msgSend(_59,"_sendPartialString"); +}else{ +objj_msgSend(_partialStringTimer,"invalidate"); +var _5c=objj_msgSend(CPSearchField,"_keyboardDelayForPartialSearchString:",objj_msgSend(_59,"stringValue")); +_partialStringTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",_5c,_59,sel_getUid("_sendPartialString"),nil,NO); +} +} +objj_msgSend(_59,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_sendAction:"),function(_5d,_5e,_5f){ +with(_5d){ +objj_msgSend(_5d,"sendAction:to:",objj_msgSend(_5d,"action"),objj_msgSend(_5d,"target")); +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_60,_61,_62,_63){ +with(_60){ +objj_msgSendSuper({receiver:_60,super_class:objj_getClass("CPSearchField").super_class},"sendAction:to:",_62,_63); +objj_msgSend(_partialStringTimer,"invalidate"); +objj_msgSend(_60,"_addStringToRecentSearches:",objj_msgSend(_60,"stringValue")); +objj_msgSend(_60,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_addStringToRecentSearches:"),function(_64,_65,_66){ +with(_64){ +if(_66===nil||_66===""||objj_msgSend(_recentSearches,"containsObject:",_66)){ +return; +} +var _67=objj_msgSend(CPMutableArray,"arrayWithArray:",_recentSearches); +objj_msgSend(_67,"addObject:",_66); +objj_msgSend(_64,"setRecentSearches:",_67); +objj_msgSend(_64,"_updateSearchMenu"); +} +}),new objj_method(sel_getUid("hitTest:"),function(_68,_69,_6a){ +with(_68){ +if((_6a.x>=(objj_msgSend(_68,"frame").origin.x)&&_6a.y>=(objj_msgSend(_68,"frame").origin.y)&&_6a.x<(objj_msgSend(_68,"frame").origin.x+objj_msgSend(_68,"frame").size.width)&&_6a.y<(objj_msgSend(_68,"frame").origin.y+objj_msgSend(_68,"frame").size.height))){ +return _68; +}else{ +return nil; +} +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_6b,_6c){ +with(_6b){ +return _canResignFirstResponder&&objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPSearchField").super_class},"resignFirstResponder"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_6d,_6e,_6f){ +with(_6d){ +var _70=objj_msgSend(_6f,"locationInWindow"),_71=objj_msgSend(_6d,"convertPoint:fromView:",_70,nil); +if((_71.x>=(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x)&&_71.y>=(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y)&&_71.x<(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x+objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.width)&&_71.y<(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y+objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.height))){ +if(_searchMenuTemplate==nil){ +objj_msgSend(_6d,"_sendAction:",_6d); +}else{ +objj_msgSend(_6d,"_showMenu"); +} +}else{ +if((_71.x>=(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x)&&_71.y>=(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y)&&_71.x<(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x+objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.width)&&_71.y<(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y+objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.height))){ +objj_msgSend(_cancelButton,"mouseDown:",_6f); +}else{ +objj_msgSendSuper({receiver:_6d,super_class:objj_getClass("CPSearchField").super_class},"mouseDown:",_6f); +} +} +} +}),new objj_method(sel_getUid("defaultSearchMenuTemplate"),function(_72,_73){ +with(_72){ +var _74=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"init"),_75; +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Recent Searches",nil,""); +objj_msgSend(_75,"setTag:",CPSearchFieldRecentsTitleMenuItemTag); +objj_msgSend(_75,"setEnabled:",NO); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Recent search item",sel_getUid("_searchFieldSearch:"),""); +objj_msgSend(_75,"setTag:",CPSearchFieldRecentsMenuItemTag); +objj_msgSend(_75,"setTarget:",_72); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Clear Recent Searches",sel_getUid("_searchFieldClearRecents:"),""); +objj_msgSend(_75,"setTag:",CPSearchFieldClearRecentsMenuItemTag); +objj_msgSend(_75,"setTarget:",_72); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","No Recent Searches",nil,""); +objj_msgSend(_75,"setTag:",CPSearchFieldNoRecentsMenuItemTag); +objj_msgSend(_75,"setEnabled:",NO); +objj_msgSend(_74,"addItem:",_75); +return _74; +} +}),new objj_method(sel_getUid("_updateSearchMenu"),function(_76,_77){ +with(_76){ +if(_searchMenuTemplate===nil){ +return; +} +var _78=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"init"),_79=objj_msgSend(_recentSearches,"count"),_7a=objj_msgSend(_searchMenuTemplate,"numberOfItems"); +for(var i=0;i<_7a;i++){ +var _7b=objj_msgSend(objj_msgSend(_searchMenuTemplate,"itemAtIndex:",i),"copy"); +switch(objj_msgSend(_7b,"tag")){ +case CPSearchFieldRecentsTitleMenuItemTag: +if(_79===0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +break; +case CPSearchFieldRecentsMenuItemTag: +var _7c=sel_getUid("_searchFieldSearch:"); +for(var _7d=0;_7d<_79;++_7d){ +var _7e=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",_8+objj_msgSend(_recentSearches,"objectAtIndex:",_7d),_7c,objj_msgSend(_7b,"keyEquivalent")); +objj_msgSend(_7b,"setTarget:",_76); +objj_msgSend(_78,"addItem:",_7e); +} +continue; +case CPSearchFieldClearRecentsMenuItemTag: +if(_79===0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +objj_msgSend(_7b,"setAction:",sel_getUid("_searchFieldClearRecents:")); +objj_msgSend(_7b,"setTarget:",_76); +break; +case CPSearchFieldNoRecentsMenuItemTag: +if(_79!==0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +break; +case CPSearchFieldSeparatorMenuItemTag: +_7b=objj_msgSend(CPMenuItem,"separatorItem"); +objj_msgSend(_7b,"setEnabled:",NO); +objj_msgSend(_78,"addItem:",_7b); +continue; +} +objj_msgSend(_7b,"setEnabled:",(objj_msgSend(_7b,"isEnabled")&&objj_msgSend(_7b,"action")!=nil&&objj_msgSend(_7b,"target")!=nil)); +objj_msgSend(_78,"addItem:",_7b); +} +objj_msgSend(_78,"setDelegate:",_76); +_searchMenu=_78; +} +}),new objj_method(sel_getUid("_addSeparatorToMenu:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(CPMenuItem,"separatorItem"); +objj_msgSend(_82,"setEnabled:",NO); +objj_msgSend(_81,"addItem:",_82); +} +}),new objj_method(sel_getUid("menuWillOpen:"),function(_83,_84,_85){ +with(_83){ +_canResignFirstResponder=NO; +} +}),new objj_method(sel_getUid("menuDidClose:"),function(_86,_87,_88){ +with(_86){ +_canResignFirstResponder=YES; +objj_msgSend(_86,"becomeFirstResponder"); +} +}),new objj_method(sel_getUid("_showMenu"),function(_89,_8a){ +with(_89){ +if(_searchMenu===nil||objj_msgSend(_searchMenu,"numberOfItems")===0||!objj_msgSend(_89,"isEnabled")){ +return; +} +var _8b=objj_msgSend(objj_msgSend(_89,"superview"),"convertRect:toView:",objj_msgSend(_89,"frame"),nil),_8c=CPMakePoint(_8b.origin.x+10,_8b.origin.y+_8b.size.height-4); +var _8d=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPRightMouseDown,_8c,0,objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"timestamp"),objj_msgSend(objj_msgSend(_89,"window"),"windowNumber"),nil,1,1,0); +objj_msgSend(_89,"selectAll:",nil); +objj_msgSend(CPMenu,"popUpContextMenu:withEvent:forView:",_searchMenu,_8d,_89); +} +}),new objj_method(sel_getUid("_sendPartialString"),function(_8e,_8f){ +with(_8e){ +objj_msgSendSuper({receiver:_8e,super_class:objj_getClass("CPSearchField").super_class},"sendAction:to:",objj_msgSend(_8e,"action"),objj_msgSend(_8e,"target")); +objj_msgSend(_partialStringTimer,"invalidate"); +} +}),new objj_method(sel_getUid("_searchFieldCancel:"),function(_90,_91,_92){ +with(_90){ +objj_msgSend(_90,"setObjectValue:",""); +objj_msgSend(_90,"_sendPartialString"); +objj_msgSend(_90,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_searchFieldSearch:"),function(_93,_94,_95){ +with(_93){ +var _96=objj_msgSend(objj_msgSend(_95,"title"),"substringFromIndex:",objj_msgSend(_8,"length")); +if(objj_msgSend(_95,"tag")!=CPSearchFieldRecentsMenuItemTag){ +objj_msgSend(_93,"_addStringToRecentSearches:",_96); +} +objj_msgSend(_93,"setObjectValue:",_96); +objj_msgSend(_93,"_sendPartialString"); +objj_msgSend(_93,"selectAll:",nil); +objj_msgSend(_93,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_searchFieldClearRecents:"),function(_97,_98,_99){ +with(_97){ +objj_msgSend(_97,"setRecentSearches:",objj_msgSend(CPArray,"array")); +objj_msgSend(_97,"_updateSearchMenu"); +objj_msgSend(_97,"setStringValue:",""); +objj_msgSend(_97,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_registerForAutosaveNotification"),function(_9a,_9b){ +with(_9a){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_9a,sel_getUid("_updateAutosavedRecents:"),"CPAutosavedRecentsChangedNotification",nil); +} +}),new objj_method(sel_getUid("_deregisterForAutosaveNotification"),function(_9c,_9d){ +with(_9c){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_9c,"CPAutosavedRecentsChangedNotification",nil); +} +}),new objj_method(sel_getUid("_autosaveRecentSearchList"),function(_9e,_9f){ +with(_9e){ +if(_recentsAutosaveName!=nil){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:","CPAutosavedRecentsChangedNotification",_recentsAutosaveName); +} +} +}),new objj_method(sel_getUid("_updateAutosavedRecents:"),function(_a0,_a1,_a2){ +with(_a0){ +var _a3=objj_msgSend(_a0,"recentSearches"),_a4=objj_msgSend(_a2,"object"),_a5=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleName"),_a6=objj_msgSend(_a5,"lowercaseString")+"."+objj_msgSend(_a2,"object"),_a7=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_a6),_a8=objj_msgSend(_a3,"componentsJoinedByString:",","); +objj_msgSend(_a7,"setValue:expires:domain:",_a8,objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSinceNow:",3600*24*365),(window.location.href.hostname)); +} +}),new objj_method(sel_getUid("_loadRecentSearchList"),function(_a9,_aa){ +with(_a9){ +var _ab,_ac=objj_msgSend(_a9,"recentsAutosaveName"); +if(_ac===nil){ +return; +} +var _ad=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleName"),_ae=objj_msgSend(_ad,"lowercaseString")+"."+_ac,_af=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_ae); +if(_af!=nil){ +var _b0=objj_msgSend(_af,"value"); +_ab=(_b0!="")?objj_msgSend(_b0,"componentsSeparatedByString:",","):objj_msgSend(CPArray,"array"); +_recentSearches=_ab; +} +} +})]); +class_addMethods(_a,[new objj_method(sel_getUid("initialize"),function(_b1,_b2){ +with(_b1){ +if(_b1!=objj_msgSend(CPSearchField,"class")){ +return; +} +var _b3=objj_msgSend(CPBundle,"bundleForClass:",_b1); +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldSearch.png"),{width:_5,height:_7}); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldFind.png"),{width:_5,height:_7}); +_3=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldCancel.png"),{width:_6,height:_7}); +_4=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldCancelPressed.png"),{width:_6,height:_7}); +} +}),new objj_method(sel_getUid("_keyboardDelayForPartialSearchString:"),function(_b4,_b5,_b6){ +with(_b4){ +return (6-MIN(objj_msgSend(_b6,"length"),4))/10; +} +})]); +var _b7="CPRecentsAutosaveNameKey",_b8="CPSendsWholeSearchStringKey",_b9="CPSendsSearchStringImmediatelyKey",_ba="CPMaximumRecentsKey",_bb="CPSearchMenuTemplateKey"; +var _9=objj_getClass("CPSearchField"); +if(!_9){ +throw new SyntaxError("*** Could not find definition for class \"CPSearchField\""); +} +var _a=_9.isa; +class_addMethods(_9,[new objj_method(sel_getUid("encodeWithCoder:"),function(_bc,_bd,_be){ +with(_bc){ +objj_msgSend(_searchButton,"removeFromSuperview"); +objj_msgSend(_cancelButton,"removeFromSuperview"); +objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPSearchField").super_class},"encodeWithCoder:",_be); +if(_searchButton){ +objj_msgSend(_bc,"addSubview:",_searchButton); +} +if(_cancelButton){ +objj_msgSend(_bc,"addSubview:",_cancelButton); +} +objj_msgSend(_be,"encodeBool:forKey:",_sendsWholeSearchString,_b8); +objj_msgSend(_be,"encodeBool:forKey:",_sendsSearchStringImmediately,_b9); +objj_msgSend(_be,"encodeInt:forKey:",_maximumRecents,_ba); +if(_recentsAutosaveName){ +objj_msgSend(_be,"encodeObject:forKey:",_recentsAutosaveName,_b7); +} +if(_searchMenuTemplate){ +objj_msgSend(_be,"encodeObject:forKey:",_searchMenuTemplate,_bb); +} +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_bf,_c0,_c1){ +with(_bf){ +if(_bf=objj_msgSendSuper({receiver:_bf,super_class:objj_getClass("CPSearchField").super_class},"initWithCoder:",_c1)){ +_recentsAutosaveName=objj_msgSend(_c1,"decodeObjectForKey:",_b7); +_sendsWholeSearchString=objj_msgSend(_c1,"decodeBoolForKey:",_b8); +_sendsSearchStringImmediately=objj_msgSend(_c1,"decodeBoolForKey:",_b9); +_maximumRecents=objj_msgSend(_c1,"decodeIntForKey:",_ba); +var _c2=objj_msgSend(_c1,"decodeObjectForKey:",_bb); +if(_c2){ +objj_msgSend(_bf,"setSearchMenuTemplate:",_c2); +} +objj_msgSend(_bf,"_init"); +} +return _bf; +} +})]); +p;19;CPSecureTextField.jt;285;@STATIC;1.0;i;13;CPTextField.jt;249; +objj_executeFile("CPTextField.j",YES); +var _1=objj_allocateClassPair(CPTextField,"CPSecureTextField"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isSecure"),function(_3,_4){ +with(_3){ +return YES; +} +})]); +p;20;CPSegmentedControl.jt;23162;@STATIC;1.0;I;20;Foundation/CPArray.ji;11;CPControl.jt;23101; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("CPControl.j",YES); +CPSegmentSwitchTrackingSelectOne=0; +CPSegmentSwitchTrackingSelectAny=1; +CPSegmentSwitchTrackingMomentary=2; +var _1=objj_allocateClassPair(CPControl,"CPSegmentedControl"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_segments"),new objj_ivar("_themeStates"),new objj_ivar("_selectedSegment"),new objj_ivar("_segmentStyle"),new objj_ivar("_trackingMode"),new objj_ivar("_trackingSegment"),new objj_ivar("_trackingHighlighted")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_segments=[]; +_themeStates=[]; +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSegmentedControl").super_class},"initWithFrame:",_5); +if(_3){ +_selectedSegment=-1; +_trackingMode=CPSegmentSwitchTrackingSelectOne; +} +return _3; +} +}),new objj_method(sel_getUid("selectedTag"),function(_6,_7){ +with(_6){ +return objj_msgSend(_segments[_selectedSegment],"tag"); +} +}),new objj_method(sel_getUid("setSegmentCount:"),function(_8,_9,_a){ +with(_8){ +if(_segments.length==_a){ +return; +} +var _b=CGRectGetHeight(objj_msgSend(_8,"bounds")); +if(_segments.length<_a){ +for(var _c=_segments.length;_c<_a;++_c){ +_segments[_c]=objj_msgSend(objj_msgSend(_CPSegmentItem,"alloc"),"init"); +_themeStates[_c]=CPThemeStateNormal; +} +}else{ +if(_a<_segments.length){ +_segments.length=_a; +_themeStates.length=_a; +} +} +if(_selectedSegment>=_segments.length){ +_selectedSegment=-1; +} +objj_msgSend(_8,"tileWithChangedSegment:",0); +} +}),new objj_method(sel_getUid("segmentCount"),function(_d,_e){ +with(_d){ +return _segments.length; +} +}),new objj_method(sel_getUid("setSelectedSegment:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_f,"setSelected:forSegment:",YES,_11); +} +}),new objj_method(sel_getUid("selectedSegment"),function(_12,_13){ +with(_12){ +return _selectedSegment; +} +}),new objj_method(sel_getUid("selectSegmentWithTag:"),function(_14,_15,_16){ +with(_14){ +var _17=0; +for(;_17<_segments.length;++_17){ +if(_segments[_17].tag==_16){ +objj_msgSend(_14,"setSelectedSegment:",_17); +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("isTracking"),function(_18,_19){ +with(_18){ +} +}),new objj_method(sel_getUid("setTrackingMode:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_trackingMode==_1c){ +return; +} +_trackingMode=_1c; +if(_trackingMode==CPSegmentSwitchTrackingSelectOne){ +var _1d=0,_1e=NO; +for(;_1d<_segments.length;++_1d){ +if(objj_msgSend(_segments[_1d],"selected")){ +if(_1e){ +objj_msgSend(_1a,"setSelected:forSegment:",NO,_1d); +}else{ +_1e=YES; +} +} +} +}else{ +if(_trackingMode==CPSegmentSwitchTrackingMomentary){ +var _1d=0; +for(;_1d<_segments.length;++_1d){ +if(objj_msgSend(_segments[_1d],"selected")){ +objj_msgSend(_1a,"setSelected:forSegment:",NO,_1d); +} +} +} +} +} +}),new objj_method(sel_getUid("trackingMode"),function(_1f,_20){ +with(_1f){ +return _trackingMode; +} +}),new objj_method(sel_getUid("setWidth:forSegment:"),function(_21,_22,_23,_24){ +with(_21){ +objj_msgSend(_segments[_24],"setWidth:",_23); +objj_msgSend(_21,"tileWithChangedSegment:",_24); +} +}),new objj_method(sel_getUid("widthForSegment:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_segments[_27],"width"); +} +}),new objj_method(sel_getUid("setImage:forSegment:"),function(_28,_29,_2a,_2b){ +with(_28){ +objj_msgSend(_segments[_2b],"setImage:",_2a); +objj_msgSend(_28,"tileWithChangedSegment:",_2b); +} +}),new objj_method(sel_getUid("imageForSegment:"),function(_2c,_2d,_2e){ +with(_2c){ +return objj_msgSend(_segments[_2e],"image"); +} +}),new objj_method(sel_getUid("setLabel:forSegment:"),function(_2f,_30,_31,_32){ +with(_2f){ +objj_msgSend(_segments[_32],"setLabel:",_31); +objj_msgSend(_2f,"tileWithChangedSegment:",_32); +} +}),new objj_method(sel_getUid("labelForSegment:"),function(_33,_34,_35){ +with(_33){ +return objj_msgSend(_segments[_35],"label"); +} +}),new objj_method(sel_getUid("setMenu:forSegment:"),function(_36,_37,_38,_39){ +with(_36){ +objj_msgSend(_segments[_39],"setMenu:",_38); +} +}),new objj_method(sel_getUid("menuForSegment:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(_segments[_3c],"menu"); +} +}),new objj_method(sel_getUid("setSelected:forSegment:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +var _41=_segments[_40]; +if(objj_msgSend(_41,"selected")==_3f){ +return; +} +objj_msgSend(_41,"setSelected:",_3f); +_themeStates[_40]=_3f?CPThemeStateSelected:CPThemeStateNormal; +if(_3f){ +var _42=_selectedSegment; +_selectedSegment=_40; +if(_trackingMode==CPSegmentSwitchTrackingSelectOne&&_42!=_40&&_42!=-1){ +objj_msgSend(_segments[_42],"setSelected:",NO); +_themeStates[_42]=CPThemeStateNormal; +objj_msgSend(_3d,"drawSegmentBezel:highlight:",_42,NO); +} +} +if(_trackingMode!=CPSegmentSwitchTrackingMomentary){ +objj_msgSend(_3d,"drawSegmentBezel:highlight:",_40,NO); +} +objj_msgSend(_3d,"setNeedsLayout"); +objj_msgSend(_3d,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("isSelectedForSegment:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_segments[_45],"selected"); +} +}),new objj_method(sel_getUid("setEnabled:forSegment:"),function(_46,_47,_48,_49){ +with(_46){ +objj_msgSend(_segments[_49],"setEnabled:",_48); +if(_48){ +_themeStates[_49]&=~CPThemeStateDisabled; +}else{ +_themeStates[_49]|=CPThemeStateDisabled; +} +objj_msgSend(_46,"setNeedsLayout"); +objj_msgSend(_46,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("isEnabledForSegment:"),function(_4a,_4b,_4c){ +with(_4a){ +return objj_msgSend(_segments[_4c],"enabled"); +} +}),new objj_method(sel_getUid("setTag:forSegment:"),function(_4d,_4e,_4f,_50){ +with(_4d){ +objj_msgSend(_segments[_50],"setTag:",_4f); +} +}),new objj_method(sel_getUid("tagForSegment:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_segments[_53],"tag"); +} +}),new objj_method(sel_getUid("drawSegmentBezel:highlight:"),function(_54,_55,_56,_57){ +with(_54){ +if(_57){ +_themeStates[_56]|=CPThemeStateHighlighted; +}else{ +_themeStates[_56]&=~CPThemeStateHighlighted; +} +objj_msgSend(_54,"setNeedsLayout"); +objj_msgSend(_54,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("_leftOffsetForSegment:"),function(_58,_59,_5a){ +with(_58){ +var _5b=objj_msgSend(_58,"currentValueForThemeAttribute:","bezel-inset"); +if(_5a==0){ +return _5b.left; +} +var _5c=objj_msgSend(_58,"currentValueForThemeAttribute:","divider-thickness"); +return objj_msgSend(_58,"_leftOffsetForSegment:",_5a-1)+objj_msgSend(_58,"widthForSegment:",_5a-1)+_5c; +} +}),new objj_method(sel_getUid("_indexOfLastSegment"),function(_5d,_5e){ +with(_5d){ +var _5f=objj_msgSend(_segments,"count")-1; +if(_5f<0){ +_5f=0; +} +return _5f; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_60,_61,_62){ +with(_60){ +var _63=objj_msgSend(_60,"currentValueForThemeAttribute:","default-height"),_64=objj_msgSend(_60,"currentValueForThemeAttribute:","content-inset"),_65=objj_msgSend(_60,"currentValueForThemeAttribute:","bezel-inset"),_66=objj_msgSend(_60,"bounds"); +if(_62==="left-segment-bezel"){ +return CGRectMake(_65.left,_65.top,_64.left,_63); +}else{ +if(_62==="right-segment-bezel"){ +return CPRectMake(CGRectGetWidth(objj_msgSend(_60,"bounds"))-_64.right,_65.top,_64.right,_63); +}else{ +if(_62.indexOf("segment-bezel")===0){ +var _67=parseInt(_62.substring("segment-bezel-".length),10),_68=CGRectCreateCopy(objj_msgSend(_segments[_67],"frame")); +if(_67===0){ +_68.origin.x+=_64.left; +_68.size.width-=_64.left; +} +if(_67===_segments.length-1){ +_68.size.width=CGRectGetWidth(objj_msgSend(_60,"bounds"))-_64.right-_68.origin.x; +} +return _68; +}else{ +if(_62.indexOf("divider-bezel")===0){ +var _67=parseInt(_62.substring("divider-bezel-".length),10),_69=objj_msgSend(_60,"widthForSegment:",_67),_6a=objj_msgSend(_60,"_leftOffsetForSegment:",_67),_6b=objj_msgSend(_60,"currentValueForThemeAttribute:","divider-thickness"); +return CGRectMake(_6a+_69,_65.top,_6b,_63); +}else{ +if(_62.indexOf("segment-content")===0){ +var _67=parseInt(_62.substring("segment-content-".length),10); +return objj_msgSend(_60,"contentFrameForSegment:",_67); +} +} +} +} +} +return objj_msgSendSuper({receiver:_60,super_class:objj_getClass("CPSegmentedControl").super_class},"rectForEphemeralSubviewNamed:",_62); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_6e.substring(0,"segment-content".length)=="segment-content"){ +return objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +return objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_6f,_70){ +with(_6f){ +if(_segments.length<=0){ +return; +} +var _71=_themeStates[0]; +_71|=_themeState&CPThemeStateDisabled; +var _72=objj_msgSend(_6f,"valueForThemeAttribute:inState:","left-segment-bezel-color",_71); +var _73=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","left-segment-bezel",CPWindowBelow,nil); +objj_msgSend(_73,"setBackgroundColor:",_72); +var _71=_themeStates[_themeStates.length-1]; +_71|=_themeState&CPThemeStateDisabled; +var _74=objj_msgSend(_6f,"valueForThemeAttribute:inState:","right-segment-bezel-color",_71); +var _75=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","right-segment-bezel",CPWindowBelow,nil); +objj_msgSend(_75,"setBackgroundColor:",_74); +for(var i=0,_76=_themeStates.length;i<_76;i++){ +var _71=_themeStates[i]; +_71|=_themeState&CPThemeStateDisabled; +var _77=objj_msgSend(_6f,"valueForThemeAttribute:inState:","center-segment-bezel-color",_71); +var _78=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","segment-bezel-"+i,CPWindowBelow,nil); +objj_msgSend(_78,"setBackgroundColor:",_77); +var _79=_segments[i]; +var _7a=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","segment-content-"+i,CPWindowAbove,"segment-bezel-"+i); +objj_msgSend(_7a,"setText:",objj_msgSend(_79,"label")); +objj_msgSend(_7a,"setImage:",objj_msgSend(_79,"image")); +objj_msgSend(_7a,"setFont:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","font",_71)); +objj_msgSend(_7a,"setTextColor:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-color",_71)); +objj_msgSend(_7a,"setAlignment:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","alignment",_71)); +objj_msgSend(_7a,"setVerticalAlignment:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","vertical-alignment",_71)); +objj_msgSend(_7a,"setLineBreakMode:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","line-break-mode",_71)); +objj_msgSend(_7a,"setTextShadowColor:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-shadow-color",_71)); +objj_msgSend(_7a,"setTextShadowOffset:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-shadow-offset",_71)); +objj_msgSend(_7a,"setImageScaling:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","image-scaling",_71)); +if(objj_msgSend(_79,"image")&&objj_msgSend(_79,"label")){ +objj_msgSend(_7a,"setImagePosition:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","image-position",_71)); +}else{ +if(objj_msgSend(_79,"image")){ +objj_msgSend(_7a,"setImagePosition:",CPImageOnly); +} +} +if(i==_76-1){ +continue; +} +var _7b=_themeStates[i]|_themeStates[i+1]; +_7b=(_7b&CPThemeStateSelected&~CPThemeStateHighlighted)?CPThemeStateSelected:CPThemeStateNormal; +_7b|=_themeState&CPThemeStateDisabled; +var _7c=objj_msgSend(_6f,"valueForThemeAttribute:inState:","divider-bezel-color",_7b); +var _7d=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","divider-bezel-"+i,CPWindowBelow,nil); +objj_msgSend(_7d,"setBackgroundColor:",_7c); +} +} +}),new objj_method(sel_getUid("drawSegment:highlight:"),function(_7e,_7f,_80,_81){ +with(_7e){ +} +}),new objj_method(sel_getUid("tileWithChangedSegment:"),function(_82,_83,_84){ +with(_82){ +if(_84>=_segments.length){ +return; +} +var _85=_segments[_84],_86=objj_msgSend(_85,"width"),_87=_themeStates[_84]|(_themeState&CPThemeStateDisabled),_88=objj_msgSend(_82,"valueForThemeAttribute:inState:","content-inset",_87),_89=objj_msgSend(_82,"valueForThemeAttribute:inState:","font",_87); +if(!_86){ +if(objj_msgSend(_85,"image")&&objj_msgSend(_85,"label")){ +_86=objj_msgSend(objj_msgSend(_85,"label"),"sizeWithFont:",_89).width+objj_msgSend(objj_msgSend(_85,"image"),"size").width+_88.left+_88.right; +}else{ +if(_85.image){ +_86=objj_msgSend(objj_msgSend(_85,"image"),"size").width+_88.left+_88.right; +}else{ +if(_85.label){ +_86=objj_msgSend(objj_msgSend(_85,"label"),"sizeWithFont:",_89).width+_88.left+_88.right; +}else{ +_86=0; +} +} +} +} +var _8a=_86-CGRectGetWidth(objj_msgSend(_85,"frame")); +if(!_8a){ +objj_msgSend(_82,"setNeedsLayout"); +objj_msgSend(_82,"setNeedsDisplay:",YES); +return; +} +var _8b=objj_msgSend(_82,"frame"); +objj_msgSend(_82,"setFrameSize:",CGSizeMake(CGRectGetWidth(_8b)+_8a,CGRectGetHeight(_8b))); +objj_msgSend(_85,"setWidth:",_86); +objj_msgSend(_85,"setFrame:",objj_msgSend(_82,"frameForSegment:",_84)); +var _8c=_84+1; +for(;_8c<_segments.length;++_8c){ +objj_msgSend(_segments[_8c],"frame").origin.x+=_8a; +objj_msgSend(_82,"drawSegmentBezel:highlight:",_8c,NO); +objj_msgSend(_82,"drawSegment:highlight:",_8c,NO); +} +objj_msgSend(_82,"drawSegmentBezel:highlight:",_84,NO); +objj_msgSend(_82,"drawSegment:highlight:",_84,NO); +objj_msgSend(_82,"setNeedsLayout"); +objj_msgSend(_82,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("frameForSegment:"),function(_8d,_8e,_8f){ +with(_8d){ +return objj_msgSend(_8d,"bezelFrameForSegment:",_8f); +} +}),new objj_method(sel_getUid("bezelFrameForSegment:"),function(_90,_91,_92){ +with(_90){ +var _93=objj_msgSend(_90,"currentValueForThemeAttribute:","default-height"),_94=objj_msgSend(_90,"currentValueForThemeAttribute:","bezel-inset"),_95=objj_msgSend(_90,"widthForSegment:",_92),_96=objj_msgSend(_90,"_leftOffsetForSegment:",_92); +return CGRectMake(_96,_94.top,_95,_93); +} +}),new objj_method(sel_getUid("contentFrameForSegment:"),function(_97,_98,_99){ +with(_97){ +var _9a=objj_msgSend(_97,"currentValueForThemeAttribute:","default-height"),_9b=objj_msgSend(_97,"currentValueForThemeAttribute:","content-inset"),_9c=objj_msgSend(_97,"widthForSegment:",_99),_9d=objj_msgSend(_97,"_leftOffsetForSegment:",_99); +return CGRectMake(_9d+_9b.left,_9b.top,_9c-_9b.left-_9b.right,_9a-_9b.top-_9b.bottom); +} +}),new objj_method(sel_getUid("testSegment:"),function(_9e,_9f,_a0){ +with(_9e){ +var _a1=objj_msgSend(_9e,"convertPoint:fromView:",_a0,nil),_a2=_segments.length; +while(_a2--){ +if(CGRectContainsPoint(objj_msgSend(_segments[_a2],"frame"),_a0)){ +return _a2; +} +} +if(_segments.length){ +var _a3=CGRectCreateCopy(objj_msgSend(_segments[_segments.length-1],"frame")); +_a3.size.width=CGRectGetWidth(objj_msgSend(_9e,"bounds"))-_a3.origin.x; +if(CGRectContainsPoint(_a3,_a0)){ +return _segments.length-1; +} +} +return -1; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_a4,_a5,_a6){ +with(_a4){ +if(!objj_msgSend(_a4,"isEnabled")){ +return; +} +objj_msgSend(_a4,"trackSegment:",_a6); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_a7,_a8,_a9){ +with(_a7){ +} +}),new objj_method(sel_getUid("trackSegment:"),function(_aa,_ab,_ac){ +with(_aa){ +var _ad=objj_msgSend(_ac,"type"),_ae=objj_msgSend(_aa,"convertPoint:fromView:",objj_msgSend(_ac,"locationInWindow"),nil); +if(_ad==CPLeftMouseUp){ +if(_trackingSegment==-1){ +return; +} +if(_trackingSegment===objj_msgSend(_aa,"testSegment:",_ae)){ +if(_trackingMode==CPSegmentSwitchTrackingSelectAny){ +objj_msgSend(_aa,"setSelected:forSegment:",!objj_msgSend(_aa,"isSelectedForSegment:",_trackingSegment),_trackingSegment); +_selectedSegment=_trackingSegment; +}else{ +objj_msgSend(_aa,"setSelected:forSegment:",YES,_trackingSegment); +} +objj_msgSend(_aa,"sendAction:to:",objj_msgSend(_aa,"action"),objj_msgSend(_aa,"target")); +if(_trackingMode==CPSegmentSwitchTrackingMomentary){ +objj_msgSend(_aa,"setSelected:forSegment:",NO,_trackingSegment); +_selectedSegment=-1; +} +} +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,NO); +_trackingSegment=-1; +return; +} +if(_ad==CPLeftMouseDown){ +var _af=objj_msgSend(_aa,"testSegment:",_ae); +if(_af>-1&&objj_msgSend(_aa,"isEnabledForSegment:",_af)){ +_trackingHighlighted=YES; +_trackingSegment=_af; +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,YES); +} +}else{ +if(_ad==CPLeftMouseDragged){ +if(_trackingSegment==-1){ +return; +} +var _b0=objj_msgSend(_aa,"testSegment:",_ae)===_trackingSegment; +if(_b0!=_trackingHighlighted){ +_trackingHighlighted=_b0; +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,_trackingHighlighted); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_aa,sel_getUid("trackSegment:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("setFont:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSendSuper({receiver:_b1,super_class:objj_getClass("CPSegmentedControl").super_class},"setFont:",_b3); +objj_msgSend(_b1,"tileWithChangedSegment:",0); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_b4,_b5){ +with(_b4){ +return "segmented-control"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_b6,_b7){ +with(_b6){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CPCenterTextAlignment,CPCenterVerticalTextAlignment,CPImageLeft,CPScaleNone,{top:(0),right:(0),bottom:(0),left:(0)},{top:(0),right:(0),bottom:(0),left:(0)},objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),1,24],["alignment","vertical-alignment","image-position","image-scaling","bezel-inset","content-inset","left-segment-bezel-color","right-segment-bezel-color","center-segment-bezel-color","divider-bezel-color","divider-thickness","default-height"]); +} +})]); +var _b8="CPSegmentedControlSegmentsKey",_b9="CPSegmentedControlSelectedKey",_ba="CPSegmentedControlSegmentStyleKey",_bb="CPSegmentedControlTrackingModeKey"; +var _1=objj_getClass("CPSegmentedControl"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSegmentedControl\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_bc,_bd,_be){ +with(_bc){ +_bc=objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPSegmentedControl").super_class},"initWithCoder:",_be); +if(_bc){ +var _bf=objj_msgSend(_bc,"frame"),_c0=_bf.size.width; +_bf.size.width=0; +objj_msgSend(_bc,"setFrame:",_bf); +_segments=objj_msgSend(_be,"decodeObjectForKey:",_b8); +_segmentStyle=objj_msgSend(_be,"decodeIntForKey:",_ba); +_themeStates=[]; +if(objj_msgSend(_be,"containsValueForKey:",_b9)){ +_selectedSegment=objj_msgSend(_be,"decodeIntForKey:",_b9); +}else{ +_selectedSegment=-1; +} +if(objj_msgSend(_be,"containsValueForKey:",_bb)){ +_trackingMode=objj_msgSend(_be,"decodeIntForKey:",_bb); +}else{ +_trackingMode=CPSegmentSwitchTrackingSelectOne; +} +for(var i=0;i<_segments.length;i++){ +_themeStates[i]=objj_msgSend(_segments[i],"selected")?CPThemeStateSelected:CPThemeStateNormal; +objj_msgSend(_bc,"tileWithChangedSegment:",i); +} +var _c1=MAX(_c0-objj_msgSend(_bc,"frame").size.width,0),_c2=FLOOR(_c1/_segments.length); +for(var i=0;i<_segments.length;i++){ +objj_msgSend(_bc,"setWidth:forSegment:",objj_msgSend(_segments[i],"width")+_c2,i); +} +objj_msgSend(_bc,"tileWithChangedSegment:",0); +} +return _bc; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c3,_c4,_c5){ +with(_c3){ +objj_msgSendSuper({receiver:_c3,super_class:objj_getClass("CPSegmentedControl").super_class},"encodeWithCoder:",_c5); +objj_msgSend(_c5,"encodeObject:forKey:",_segments,_b8); +objj_msgSend(_c5,"encodeInt:forKey:",_selectedSegment,_b9); +objj_msgSend(_c5,"encodeInt:forKey:",_segmentStyle,_ba); +objj_msgSend(_c5,"encodeInt:forKey:",_trackingMode,_bb); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPSegmentItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("image"),new objj_ivar("label"),new objj_ivar("menu"),new objj_ivar("selected"),new objj_ivar("enabled"),new objj_ivar("tag"),new objj_ivar("width"),new objj_ivar("frame")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("image"),function(_c6,_c7){ +with(_c6){ +return image; +} +}),new objj_method(sel_getUid("setImage:"),function(_c8,_c9,_ca){ +with(_c8){ +image=_ca; +} +}),new objj_method(sel_getUid("label"),function(_cb,_cc){ +with(_cb){ +return label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_cd,_ce,_cf){ +with(_cd){ +label=_cf; +} +}),new objj_method(sel_getUid("menu"),function(_d0,_d1){ +with(_d0){ +return menu; +} +}),new objj_method(sel_getUid("setMenu:"),function(_d2,_d3,_d4){ +with(_d2){ +menu=_d4; +} +}),new objj_method(sel_getUid("selected"),function(_d5,_d6){ +with(_d5){ +return selected; +} +}),new objj_method(sel_getUid("setSelected:"),function(_d7,_d8,_d9){ +with(_d7){ +selected=_d9; +} +}),new objj_method(sel_getUid("enabled"),function(_da,_db){ +with(_da){ +return enabled; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_dc,_dd,_de){ +with(_dc){ +enabled=_de; +} +}),new objj_method(sel_getUid("tag"),function(_df,_e0){ +with(_df){ +return tag; +} +}),new objj_method(sel_getUid("setTag:"),function(_e1,_e2,_e3){ +with(_e1){ +tag=_e3; +} +}),new objj_method(sel_getUid("width"),function(_e4,_e5){ +with(_e4){ +return width; +} +}),new objj_method(sel_getUid("setWidth:"),function(_e6,_e7,_e8){ +with(_e6){ +width=_e8; +} +}),new objj_method(sel_getUid("frame"),function(_e9,_ea){ +with(_e9){ +return frame; +} +}),new objj_method(sel_getUid("setFrame:"),function(_eb,_ec,_ed){ +with(_eb){ +frame=_ed; +} +}),new objj_method(sel_getUid("init"),function(_ee,_ef){ +with(_ee){ +if(_ee=objj_msgSendSuper({receiver:_ee,super_class:objj_getClass("_CPSegmentItem").super_class},"init")){ +image=nil; +label=""; +menu=nil; +selected=NO; +enabled=YES; +tag=-1; +width=0; +frame=CGRectMakeZero(); +} +return _ee; +} +})]); +var _f0="CPSegmentItemImageKey",_f1="CPSegmentItemLabelKey",_f2="CPSegmentItemMenuKey",_f3="CPSegmentItemSelectedKey",_f4="CPSegmentItemEnabledKey",_f5="CPSegmentItemTagKey",_f6="CPSegmentItemWidthKey"; +var _1=objj_getClass("_CPSegmentItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPSegmentItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_f7,_f8,_f9){ +with(_f7){ +_f7=objj_msgSendSuper({receiver:_f7,super_class:objj_getClass("_CPSegmentItem").super_class},"init"); +if(_f7){ +image=objj_msgSend(_f9,"decodeObjectForKey:",_f0); +label=objj_msgSend(_f9,"decodeObjectForKey:",_f1); +menu=objj_msgSend(_f9,"decodeObjectForKey:",_f2); +selected=objj_msgSend(_f9,"decodeBoolForKey:",_f3); +enabled=objj_msgSend(_f9,"decodeBoolForKey:",_f4); +tag=objj_msgSend(_f9,"decodeIntForKey:",_f5); +width=objj_msgSend(_f9,"decodeFloatForKey:",_f6); +frame=CGRectMakeZero(); +} +return _f7; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_fa,_fb,_fc){ +with(_fa){ +objj_msgSend(_fc,"encodeObject:forKey:",image,_f0); +objj_msgSend(_fc,"encodeObject:forKey:",label,_f1); +objj_msgSend(_fc,"encodeObject:forKey:",menu,_f2); +objj_msgSend(_fc,"encodeBool:forKey:",selected,_f3); +objj_msgSend(_fc,"encodeBool:forKey:",enabled,_f4); +objj_msgSend(_fc,"encodeInt:forKey:",tag,_f5); +objj_msgSend(_fc,"encodeFloat:forKey:",width,_f6); +} +})]); +p;10;CPShadow.jt;1333;@STATIC;1.0;I;21;Foundation/CPObject.jt;1288; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPShadow"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_offset"),new objj_ivar("_blurRadius"),new objj_ivar("_color"),new objj_ivar("_cssString")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_initWithOffset:blurRadius:color:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPShadow").super_class},"init"); +if(_3){ +_offset=_5; +_blurRadius=_6; +_color=_7; +_cssString=objj_msgSend(_color,"cssString")+" "+Math.round(_5.width)+"px "+Math.round(_5.height)+"px "+Math.round(_blurRadius)+"px"; +} +return _3; +} +}),new objj_method(sel_getUid("shadowOffset"),function(_8,_9){ +with(_8){ +return _offset; +} +}),new objj_method(sel_getUid("shadowBlurRadius"),function(_a,_b){ +with(_a){ +return _blurRadius; +} +}),new objj_method(sel_getUid("shadowColor"),function(_c,_d){ +with(_c){ +return _color; +} +}),new objj_method(sel_getUid("cssString"),function(_e,_f){ +with(_e){ +return _cssString; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("shadowWithOffset:blurRadius:color:"),function(_10,_11,_12,_13,_14){ +with(_10){ +return objj_msgSend(objj_msgSend(CPShadow,"alloc"),"_initWithOffset:blurRadius:color:",_12,_13,_14); +} +})]); +p;14;CPShadowView.jt;6828;@STATIC;1.0;I;21;Foundation/CPBundle.ji;12;CGGeometry.ji;9;CPImage.ji;13;CPImageView.ji;8;CPView.jt;6723; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPView.j",YES); +CPLightShadow=0; +CPHeavyShadow=1; +var _1=nil,_2=nil; +var _3=3,_4=3,_5=3,_6=5,_7=7,_8=7,_9=5,_a=5; +var _b=objj_allocateClassPair(CPView,"CPShadowView"),_c=_b.isa; +class_addIvars(_b,[new objj_ivar("_weight")]); +objj_registerClassPair(_b); +class_addMethods(_b,[new objj_method(sel_getUid("initWithFrame:"),function(_d,_e,_f){ +with(_d){ +_d=objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPShadowView").super_class},"initWithFrame:",_f); +if(_d){ +_weight=CPLightShadow; +objj_msgSend(_d,"setBackgroundColor:",_1); +objj_msgSend(_d,"setHitTests:",NO); +} +return _d; +} +}),new objj_method(sel_getUid("setWeight:"),function(_10,_11,_12){ +with(_10){ +if(_weight==_12){ +return; +} +_weight=_12; +if(_weight==CPLightShadow){ +objj_msgSend(_10,"setBackgroundColor:",_1); +}else{ +objj_msgSend(_10,"setBackgroundColor:",_2); +} +} +}),new objj_method(sel_getUid("leftInset"),function(_13,_14){ +with(_13){ +return _weight==CPLightShadow?_3:_7; +} +}),new objj_method(sel_getUid("rightInset"),function(_15,_16){ +with(_15){ +return _weight==CPLightShadow?_4:_8; +} +}),new objj_method(sel_getUid("topInset"),function(_17,_18){ +with(_17){ +return _weight==CPLightShadow?_5:_9; +} +}),new objj_method(sel_getUid("bottomInset"),function(_19,_1a){ +with(_19){ +return _weight==CPLightShadow?_6:_a; +} +}),new objj_method(sel_getUid("horizontalInset"),function(_1b,_1c){ +with(_1b){ +if(_weight==CPLightShadow){ +return _3+_4; +} +return _7+_8; +} +}),new objj_method(sel_getUid("verticalInset"),function(_1d,_1e){ +with(_1d){ +if(_weight==CPLightShadow){ +return _5+_6; +} +return _9+_a; +} +}),new objj_method(sel_getUid("frameForContentFrame:"),function(_1f,_20,_21){ +with(_1f){ +return objj_msgSend(objj_msgSend(_1f,"class"),"frameForContentFrame:withWeight:",_21,_weight); +} +}),new objj_method(sel_getUid("setFrameForContentFrame:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_22,"setFrame:",objj_msgSend(_22,"frameForContentFrame:",_24)); +} +})]); +class_addMethods(_c,[new objj_method(sel_getUid("initialize"),function(_25,_26){ +with(_25){ +if(_25!=objj_msgSend(CPShadowView,"class")){ +return; +} +var _27=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_25,"class")); +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTopLeft.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTop.png"),CGSizeMake(1,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTopRight.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightLeft.png"),CGSizeMake(9,1)),nil,objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightRight.png"),CGSizeMake(9,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottomLeft.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottom.png"),CGSizeMake(1,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottomRight.png"),CGSizeMake(9,9))])); +_2=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTopLeft.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTop.png"),CGSizeMake(1,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTopRight.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyLeft.png"),CGSizeMake(17,1)),nil,objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyRight.png"),CGSizeMake(17,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottomLeft.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottom.png"),CGSizeMake(1,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottomRight.png"),CGSizeMake(17,17))])); +} +}),new objj_method(sel_getUid("shadowViewEnclosingView:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(_28,"shadowViewEnclosingView:withWeight:",_2a,CPLightShadow); +} +}),new objj_method(sel_getUid("shadowViewEnclosingView:withWeight:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +var _2f=objj_msgSend(objj_msgSend(CPShadowView,"alloc"),"initWithFrame:",objj_msgSend(_2d,"frame")); +objj_msgSend(_2f,"setWeight:",_2e); +var _30=objj_msgSend(_2f,"frame").size,_31=_30.width-objj_msgSend(_2f,"leftInset")-objj_msgSend(_2f,"rightInset"),_32=_30.height-objj_msgSend(_2f,"topInset")-objj_msgSend(_2f,"bottomInset"),_33=objj_msgSend(_2d,"superview"); +objj_msgSend(_2f,"setHitTests:",objj_msgSend(_2d,"hitTests")); +objj_msgSend(_2f,"setAutoresizingMask:",objj_msgSend(_2d,"autoresizingMask")); +objj_msgSend(_2d,"removeFromSuperview"); +objj_msgSend(_2f,"addSubview:",_2d); +objj_msgSend(_2d,"setFrame:",CGRectMake(objj_msgSend(_2f,"leftInset"),objj_msgSend(_2f,"topInset"),_31,_32)); +objj_msgSend(_33,"addSubview:",_2f); +return _2f; +} +}),new objj_method(sel_getUid("frameForContentFrame:withWeight:"),function(_34,_35,_36,_37){ +with(_34){ +if(_37==CPLightShadow){ +return CGRectMake((_36.origin.x)-_3,(_36.origin.y)-_5,(_36.size.width)+_3+_4,(_36.size.height)+_5+_6); +}else{ +return CGRectMake((_36.origin.x)-_7,(_36.origin.y)-_9,(_36.size.width)+_7+_8,(_36.size.height)+_9+_a); +} +} +})]); +p;10;CPSlider.jt;11751;@STATIC;1.0;i;11;CPControl.jt;11715; +objj_executeFile("CPControl.j",YES); +CPLinearSlider=0; +CPCircularSlider=1; +var _1=objj_allocateClassPair(CPControl,"CPSlider"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_minValue"),new objj_ivar("_maxValue"),new objj_ivar("_altIncrementValue"),new objj_ivar("_isVertical")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSlider").super_class},"initWithFrame:",_5); +if(_3){ +_minValue=0; +_maxValue=100; +objj_msgSend(_3,"setObjectValue:",50); +objj_msgSend(_3,"setContinuous:",YES); +objj_msgSend(_3,"_recalculateIsVertical"); +} +return _3; +} +}),new objj_method(sel_getUid("setMinValue:"),function(_6,_7,_8){ +with(_6){ +if(_minValue===_8){ +return; +} +_minValue=_8; +var _9=objj_msgSend(_6,"doubleValue"); +if(_9<_minValue){ +objj_msgSend(_6,"setDoubleValue:",_minValue); +} +objj_msgSend(_6,"setNeedsLayout"); +objj_msgSend(_6,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("minValue"),function(_a,_b){ +with(_a){ +return _minValue; +} +}),new objj_method(sel_getUid("setMaxValue:"),function(_c,_d,_e){ +with(_c){ +if(_maxValue===_e){ +return; +} +_maxValue=_e; +var _f=objj_msgSend(_c,"doubleValue"); +if(_f>_maxValue){ +objj_msgSend(_c,"setDoubleValue:",_maxValue); +} +objj_msgSend(_c,"setNeedsLayout"); +objj_msgSend(_c,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("maxValue"),function(_10,_11){ +with(_10){ +return _maxValue; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_12,_13,_14){ +with(_12){ +objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPSlider").super_class},"setObjectValue:",MIN(MAX(_14,_minValue),_maxValue)); +objj_msgSend(_12,"setNeedsLayout"); +objj_msgSend(_12,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setSliderType:"),function(_15,_16,_17){ +with(_15){ +if(_17===CPCircularSlider){ +objj_msgSend(_15,"setThemeState:",CPThemeStateCircular); +}else{ +objj_msgSend(_15,"unsetThemeState:",CPThemeStateCircular); +} +} +}),new objj_method(sel_getUid("sliderType"),function(_18,_19){ +with(_18){ +return objj_msgSend(_18,"hasThemeState:",CPThemeStateCircular)?CPCircularSlider:CPLinearSlider; +} +}),new objj_method(sel_getUid("trackRectForBounds:"),function(_1a,_1b,_1c){ +with(_1a){ +if(objj_msgSend(_1a,"hasThemeState:",CPThemeStateCircular)){ +var _1d=CGRectCreateCopy(_1c); +_1c.size.width=MIN(_1c.size.width,_1c.size.height); +_1c.size.height=_1c.size.width; +if(_1c.size.width<_1d.size.width){ +_1c.origin.x+=(_1d.size.width-_1c.size.width)/2; +}else{ +_1c.origin.y+=(_1d.size.height-_1c.size.height)/2; +} +}else{ +var _1e=objj_msgSend(_1a,"currentValueForThemeAttribute:","track-width"); +if(_1e<=0){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(objj_msgSend(_1a,"isVertical")){ +_1c.origin.x=((_1c.size.width)-_1e)/2; +_1c.size.width=_1e; +}else{ +_1c.origin.y=((_1c.size.height)-_1e)/2; +_1c.size.height=_1e; +} +} +return _1c; +} +}),new objj_method(sel_getUid("knobRectForBounds:"),function(_1f,_20,_21){ +with(_1f){ +var _22=objj_msgSend(_1f,"currentValueForThemeAttribute:","knob-size"); +if(_22.width<=0||_22.height<=0){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _23={origin:{x:0,y:0},size:{width:_22.width,height:_22.height}},_24=objj_msgSend(_1f,"trackRectForBounds:",_21); +if(!_24||(_24.size.width<=0||_24.size.height<=0)){ +_24=_21; +} +if(objj_msgSend(_1f,"hasThemeState:",CPThemeStateCircular)){ +var _25=3*PI_2-(1-objj_msgSend(_1f,"doubleValue")-_minValue)/(_maxValue-_minValue)*PI2,_26=CGRectGetWidth(_24)/2-8; +_23.origin.x=_26*COS(_25)+CGRectGetMidX(_24)-3; +_23.origin.y=_26*SIN(_25)+CGRectGetMidY(_24)-2; +}else{ +if(objj_msgSend(_1f,"isVertical")){ +_23.origin.x=(_24.origin.x+(_24.size.width)/2)-_22.width/2; +_23.origin.y=((_maxValue-objj_msgSend(_1f,"doubleValue"))/(_maxValue-_minValue))*((_24.size.height)-_22.height); +}else{ +_23.origin.x=((objj_msgSend(_1f,"doubleValue")-_minValue)/(_maxValue-_minValue))*((_24.size.width)-_22.width); +_23.origin.y=(_24.origin.y+(_24.size.height)/2)-_22.height/2; +} +} +return _23; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_27,_28,_29){ +with(_27){ +if(_29==="track-view"){ +return objj_msgSend(_27,"trackRectForBounds:",objj_msgSend(_27,"bounds")); +}else{ +if(_29==="knob-view"){ +return objj_msgSend(_27,"knobRectForBounds:",objj_msgSend(_27,"bounds")); +} +} +return objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPSlider").super_class},"rectForEphemeralSubviewNamed:",_29); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_2c==="track-view"||_2c==="knob-view"){ +var _2d=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_2d,"setHitTests:",NO); +return _2d; +} +return objj_msgSendSuper({receiver:_2a,super_class:objj_getClass("CPSlider").super_class},"createEphemeralSubviewNamed:",_2c); +} +}),new objj_method(sel_getUid("setAltIncrementValue:"),function(_2e,_2f,_30){ +with(_2e){ +_altIncrementValue=_30; +} +}),new objj_method(sel_getUid("altIncrementValue"),function(_31,_32){ +with(_31){ +return _altIncrementValue; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_33,_34,_35){ +with(_33){ +objj_msgSendSuper({receiver:_33,super_class:objj_getClass("CPSlider").super_class},"setFrameSize:",_35); +objj_msgSend(_33,"_recalculateIsVertical"); +} +}),new objj_method(sel_getUid("_recalculateIsVertical"),function(_36,_37){ +with(_36){ +var _38=objj_msgSend(_36,"bounds"),_39=(_38.size.width),_3a=(_38.size.height); +_isVertical=_39<_3a?1:(_39>_3a?0:-1); +if(_isVertical===1){ +objj_msgSend(_36,"setThemeState:",CPThemeStateVertical); +}else{ +if(_isVertical===0){ +objj_msgSend(_36,"unsetThemeState:",CPThemeStateVertical); +} +} +} +}),new objj_method(sel_getUid("isVertical"),function(_3b,_3c){ +with(_3b){ +return _isVertical; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_3d,_3e){ +with(_3d){ +var _3f=objj_msgSend(_3d,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","track-view",CPWindowBelow,"knob-view"); +if(_3f){ +objj_msgSend(_3f,"setBackgroundColor:",objj_msgSend(_3d,"currentValueForThemeAttribute:","track-color")); +} +var _40=objj_msgSend(_3d,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","knob-view",CPWindowAbove,"track-view"); +if(_40){ +objj_msgSend(_40,"setBackgroundColor:",objj_msgSend(_3d,"currentValueForThemeAttribute:","knob-color")); +} +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(_41,_42){ +with(_41){ +return YES; +} +}),new objj_method(sel_getUid("_valueAtPoint:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_43,"bounds"),_47=objj_msgSend(_43,"knobRectForBounds:",_46),_48=objj_msgSend(_43,"trackRectForBounds:",_46); +if(objj_msgSend(_43,"hasThemeState:",CPThemeStateCircular)){ +var _49=(_47.size.width); +_48.origin.x+=_49/2; +_48.size.width-=_49; +var _4a=objj_msgSend(_43,"minValue"),dx=_45.x-(_48.origin.x+(_48.size.width)/2),dy=_45.y-(_48.origin.y+(_48.size.height)/2); +return MAX(0,MIN(1,1-(3*PI_2-ATAN2(dy,dx))%PI2/PI2))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +}else{ +if(objj_msgSend(_43,"isVertical")){ +var _4b=(_47.size.height); +_48.origin.y+=_4b/2; +_48.size.height-=_4b; +var _4a=objj_msgSend(_43,"minValue"); +return MAX(0,MIN(1,((_48.origin.y+_48.size.height)-_45.y)/(_48.size.height)))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +}else{ +var _49=(_47.size.width); +_48.origin.x+=_49/2; +_48.size.width-=_49; +var _4a=objj_msgSend(_43,"minValue"); +return MAX(0,MIN(1,(_45.x-(_48.origin.x))/(_48.size.width)))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +} +} +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_4c,_4d,_4e){ +with(_4c){ +var _4f=objj_msgSend(_4c,"bounds"),_50=objj_msgSend(_4c,"knobRectForBounds:",{origin:{x:_4f.origin.x,y:_4f.origin.y},size:{width:_4f.size.width,height:_4f.size.height}}); +if((_4e.x>=(_50.origin.x)&&_4e.y>=(_50.origin.y)&&_4e.x<(_50.origin.x+_50.size.width)&&_4e.y<(_50.origin.y+_50.size.height))){ +_dragOffset={width:(_50.origin.x+(_50.size.width)/2)-_4e.x,height:(_50.origin.y+(_50.size.height)/2)-_4e.y}; +}else{ +var _51=objj_msgSend(_4c,"trackRectForBounds:",_4f); +if(_51&&(_4e.x>=(_51.origin.x)&&_4e.y>=(_51.origin.y)&&_4e.x<(_51.origin.x+_51.size.width)&&_4e.y<(_51.origin.y+_51.size.height))){ +_dragOffset={width:0,height:0}; +objj_msgSend(_4c,"setObjectValue:",objj_msgSend(_4c,"_valueAtPoint:",_4e)); +}else{ +return NO; +} +} +objj_msgSend(_4c,"setHighlighted:",YES); +objj_msgSend(_4c,"setNeedsLayout"); +objj_msgSend(_4c,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(_52,_53,_54,_55){ +with(_52){ +objj_msgSend(_52,"setObjectValue:",objj_msgSend(_52,"_valueAtPoint:",{x:_55.x+_dragOffset.width,y:_55.y+_dragOffset.height})); +return YES; +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_56,_57,_58,_59,_5a){ +with(_56){ +objj_msgSend(_56,"setHighlighted:",NO); +if(objj_msgSend(_target,"respondsToSelector:",sel_getUid("sliderDidFinish:"))){ +objj_msgSend(_target,"sliderDidFinish:",_56); +} +objj_msgSend(_56,"setNeedsLayout"); +objj_msgSend(_56,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setContinuous:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d){ +_sendActionOn|=CPLeftMouseDraggedMask; +}else{ +_sendActionOn&=~CPLeftMouseDraggedMask; +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_5e,_5f,_60,_61){ +with(_5e){ +var _62=_61.length,_63=objj_msgSend(_61[0],"valueForKeyPath:",_60); +objj_msgSend(_5e,"setObjectValue:",_63); +while(_62-->1){ +if(_63!==(objj_msgSend(_61[_62],"valueForKeyPath:",_60))){ +return objj_msgSend(_5e,"setFloatValue:",1); +} +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_64,_65){ +with(_64){ +return "slider"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_66,_67){ +with(_66){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),{width:0,height:0},0,objj_msgSend(CPNull,"null")],["knob-color","knob-size","track-width","track-color"]); +} +})]); +var _68="CPSliderMinValueKey",_69="CPSliderMaxValueKey",_6a="CPSliderAltIncrValueKey"; +var _1=objj_getClass("CPSlider"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_6b,_6c,_6d){ +with(_6b){ +_minValue=objj_msgSend(_6d,"decodeDoubleForKey:",_68); +_maxValue=objj_msgSend(_6d,"decodeDoubleForKey:",_69); +_6b=objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPSlider").super_class},"initWithCoder:",_6d); +if(_6b){ +_altIncrementValue=objj_msgSend(_6d,"decodeDoubleForKey:",_6a); +objj_msgSend(_6b,"setContinuous:",YES); +objj_msgSend(_6b,"_recalculateIsVertical"); +objj_msgSend(_6b,"setNeedsLayout"); +objj_msgSend(_6b,"setNeedsDisplay:",YES); +} +return _6b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6e,_6f,_70){ +with(_6e){ +objj_msgSendSuper({receiver:_6e,super_class:objj_getClass("CPSlider").super_class},"encodeWithCoder:",_70); +objj_msgSend(_70,"encodeDouble:forKey:",_minValue,_68); +objj_msgSend(_70,"encodeDouble:forKey:",_maxValue,_69); +objj_msgSend(_70,"encodeDouble:forKey:",_altIncrementValue,_6a); +} +})]); +var _1=objj_getClass("CPSlider"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("value"),function(_71,_72){ +with(_71){ +CPLog.warn("[CPSlider value] is deprecated, use doubleValue or objectValue instead."); +return objj_msgSend(_71,"doubleValue"); +} +}),new objj_method(sel_getUid("setValue:"),function(_73,_74,_75){ +with(_73){ +CPLog.warn("[CPSlider setValue:] is deprecated, use setDoubleValue: or setObjectValue: instead."); +objj_msgSend(_73,"setObjectValue:",_75); +} +})]); +p;21;CPSliderColorPicker.jt;14189;@STATIC;1.0;i;15;CPColorPicker.jt;14149; +objj_executeFile("CPColorPicker.j",YES); +var _1=objj_allocateClassPair(CPColorPicker,"CPSliderColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentView"),new objj_ivar("_redSlider"),new objj_ivar("_greenSlider"),new objj_ivar("_blueSlider"),new objj_ivar("_hueSlider"),new objj_ivar("_saturationSlider"),new objj_ivar("_brightnessSlider"),new objj_ivar("_rgbLabel"),new objj_ivar("_hsbLabel"),new objj_ivar("_redLabel"),new objj_ivar("_greenLabel"),new objj_ivar("_blueLabel"),new objj_ivar("_hueLabel"),new objj_ivar("_saturationLabel"),new objj_ivar("_brightnessLabel"),new objj_ivar("_hexLabel"),new objj_ivar("_hexValue"),new objj_ivar("_hexValue"),new objj_ivar("_redValue"),new objj_ivar("_greenValue"),new objj_ivar("_blueValue"),new objj_ivar("_hueValue"),new objj_ivar("_saturationValue"),new objj_ivar("_brightnessValue")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_3,_4,_5,_6){ +with(_3){ +return objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSliderColorPicker").super_class},"initWithPickerMask:colorPanel:",_5,_6); +} +}),new objj_method(sel_getUid("initView"),function(_7,_8){ +with(_7){ +aFrame=CPRectMake(0,0,CPColorPickerViewWidth,CPColorPickerViewHeight); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",aFrame); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_rgbLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,10,100,20)); +objj_msgSend(_rgbLabel,"setStringValue:","Red, Green, Blue"); +objj_msgSend(_rgbLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_redLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,35,15,20)); +objj_msgSend(_redLabel,"setStringValue:","R"); +objj_msgSend(_redLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_redSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,35,aFrame.size.width-70,20)); +objj_msgSend(_redSlider,"setMaxValue:",1); +objj_msgSend(_redSlider,"setMinValue:",0); +objj_msgSend(_redSlider,"setTarget:",_7); +objj_msgSend(_redSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_redSlider,"setAutoresizingMask:",CPViewWidthSizable); +_redValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,30,45,29)); +objj_msgSend(_redValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_redValue,"setEditable:",YES); +objj_msgSend(_redValue,"setBezeled:",YES); +objj_msgSend(_redValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_redValue); +_greenLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,58,15,20)); +objj_msgSend(_greenLabel,"setStringValue:","G"); +objj_msgSend(_greenLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_greenSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,58,aFrame.size.width-70,20)); +objj_msgSend(_greenSlider,"setMaxValue:",1); +objj_msgSend(_greenSlider,"setMinValue:",0); +objj_msgSend(_greenSlider,"setTarget:",_7); +objj_msgSend(_greenSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_greenSlider,"setAutoresizingMask:",CPViewWidthSizable); +_greenValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,53,45,29)); +objj_msgSend(_greenValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_greenValue,"setEditable:",YES); +objj_msgSend(_greenValue,"setBezeled:",YES); +objj_msgSend(_greenValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_greenValue); +_blueLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,81,15,20)); +objj_msgSend(_blueLabel,"setStringValue:","B"); +objj_msgSend(_blueLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_blueSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,81,aFrame.size.width-70,20)); +objj_msgSend(_blueSlider,"setMaxValue:",1); +objj_msgSend(_blueSlider,"setMinValue:",0); +objj_msgSend(_blueSlider,"setTarget:",_7); +objj_msgSend(_blueSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_blueSlider,"setAutoresizingMask:",CPViewWidthSizable); +_blueValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,76,45,29)); +objj_msgSend(_blueValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_blueValue,"setEditable:",YES); +objj_msgSend(_blueValue,"setBezeled:",YES); +objj_msgSend(_blueValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_blueValue); +_hsbLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,120,190,20)); +objj_msgSend(_hsbLabel,"setStringValue:","Hue, Saturation, Brightness"); +objj_msgSend(_hsbLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hueLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,145,15,20)); +objj_msgSend(_hueLabel,"setStringValue:","H"); +objj_msgSend(_hueLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hueSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,145,aFrame.size.width-70,20)); +objj_msgSend(_hueSlider,"setMaxValue:",359); +objj_msgSend(_hueSlider,"setMinValue:",0); +objj_msgSend(_hueSlider,"setTarget:",_7); +objj_msgSend(_hueSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_hueSlider,"setAutoresizingMask:",CPViewWidthSizable); +_hueValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,140,45,29)); +objj_msgSend(_hueValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_hueValue,"setEditable:",YES); +objj_msgSend(_hueValue,"setBezeled:",YES); +objj_msgSend(_hueValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_hueValue); +_saturationLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,168,15,20)); +objj_msgSend(_saturationLabel,"setStringValue:","S"); +objj_msgSend(_saturationLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_saturationSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,168,aFrame.size.width-70,20)); +objj_msgSend(_saturationSlider,"setMaxValue:",100); +objj_msgSend(_saturationSlider,"setMinValue:",0); +objj_msgSend(_saturationSlider,"setTarget:",_7); +objj_msgSend(_saturationSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_saturationSlider,"setAutoresizingMask:",CPViewWidthSizable); +_saturationValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,163,45,29)); +objj_msgSend(_saturationValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_saturationValue,"setEditable:",YES); +objj_msgSend(_saturationValue,"setBezeled:",YES); +objj_msgSend(_saturationValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_saturationValue); +_brightnessLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,191,15,20)); +objj_msgSend(_brightnessLabel,"setStringValue:","B"); +objj_msgSend(_brightnessLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_brightnessSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,191,aFrame.size.width-70,20)); +objj_msgSend(_brightnessSlider,"setMaxValue:",100); +objj_msgSend(_brightnessSlider,"setMinValue:",0); +objj_msgSend(_brightnessSlider,"setTarget:",_7); +objj_msgSend(_brightnessSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_brightnessSlider,"setAutoresizingMask:",CPViewWidthSizable); +_brightnessValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,186,45,29)); +objj_msgSend(_brightnessValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_brightnessValue,"setEditable:",YES); +objj_msgSend(_brightnessValue,"setBezeled:",YES); +objj_msgSend(_brightnessValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_brightnessValue); +_hexLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,230,30,20)); +objj_msgSend(_hexLabel,"setStringValue:","Hex"); +objj_msgSend(_hexLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hexValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(32,225,80,29)); +objj_msgSend(_hexValue,"setEditable:",YES); +objj_msgSend(_hexValue,"setBezeled:",YES); +objj_msgSend(_hexValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_hexValue); +objj_msgSend(_contentView,"addSubview:",_rgbLabel); +objj_msgSend(_contentView,"addSubview:",_redLabel); +objj_msgSend(_contentView,"addSubview:",_greenLabel); +objj_msgSend(_contentView,"addSubview:",_blueLabel); +objj_msgSend(_contentView,"addSubview:",_redSlider); +objj_msgSend(_contentView,"addSubview:",_greenSlider); +objj_msgSend(_contentView,"addSubview:",_blueSlider); +objj_msgSend(_contentView,"addSubview:",_hsbLabel); +objj_msgSend(_contentView,"addSubview:",_hueLabel); +objj_msgSend(_contentView,"addSubview:",_saturationLabel); +objj_msgSend(_contentView,"addSubview:",_brightnessLabel); +objj_msgSend(_contentView,"addSubview:",_hueSlider); +objj_msgSend(_contentView,"addSubview:",_saturationSlider); +objj_msgSend(_contentView,"addSubview:",_brightnessSlider); +objj_msgSend(_contentView,"addSubview:",_hexLabel); +} +}),new objj_method(sel_getUid("provideNewView:"),function(_9,_a,_b){ +with(_9){ +if(_b){ +objj_msgSend(_9,"initView"); +} +return _contentView; +} +}),new objj_method(sel_getUid("currentMode"),function(_c,_d){ +with(_c){ +return CPSliderColorPickerMode; +} +}),new objj_method(sel_getUid("supportsMode:"),function(_e,_f,_10){ +with(_e){ +return (_10==CPSliderColorPickerMode)?YES:NO; +} +}),new objj_method(sel_getUid("sliderChanged:"),function(_11,_12,_13){ +with(_11){ +var _14,_15=objj_msgSend(_11,"colorPanel"),_16=objj_msgSend(_15,"opacity"); +switch(_13){ +case _hueSlider: +case _saturationSlider: +case _brightnessSlider: +_14=objj_msgSend(CPColor,"colorWithHue:saturation:brightness:alpha:",objj_msgSend(_hueSlider,"floatValue"),objj_msgSend(_saturationSlider,"floatValue"),objj_msgSend(_brightnessSlider,"floatValue"),_16); +objj_msgSend(_11,"updateRGBSliders:",_14); +break; +case _redSlider: +case _greenSlider: +case _blueSlider: +_14=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",objj_msgSend(_redSlider,"floatValue"),objj_msgSend(_greenSlider,"floatValue"),objj_msgSend(_blueSlider,"floatValue"),_16); +objj_msgSend(_11,"updateHSBSliders:",_14); +break; +} +objj_msgSend(_11,"updateLabels"); +objj_msgSend(_11,"updateHex:",_14); +objj_msgSend(_15,"setColor:",_14); +} +}),new objj_method(sel_getUid("setColor:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"updateRGBSliders:",_19); +objj_msgSend(_17,"updateHSBSliders:",_19); +objj_msgSend(_17,"updateHex:",_19); +objj_msgSend(_17,"updateLabels"); +} +}),new objj_method(sel_getUid("updateHSBSliders:"),function(_1a,_1b,_1c){ +with(_1a){ +var hsb=objj_msgSend(_1c,"hsbComponents"); +objj_msgSend(_hueSlider,"setFloatValue:",hsb[0]); +objj_msgSend(_saturationSlider,"setFloatValue:",hsb[1]); +objj_msgSend(_brightnessSlider,"setFloatValue:",hsb[2]); +} +}),new objj_method(sel_getUid("updateHex:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_hexValue,"setStringValue:",objj_msgSend(_1f,"hexString")); +} +}),new objj_method(sel_getUid("updateRGBSliders:"),function(_20,_21,_22){ +with(_20){ +var rgb=objj_msgSend(_22,"components"); +objj_msgSend(_redSlider,"setFloatValue:",rgb[0]); +objj_msgSend(_greenSlider,"setFloatValue:",rgb[1]); +objj_msgSend(_blueSlider,"setFloatValue:",rgb[2]); +} +}),new objj_method(sel_getUid("updateLabels"),function(_23,_24){ +with(_23){ +objj_msgSend(_hueValue,"setStringValue:",ROUND(objj_msgSend(_hueSlider,"floatValue"))); +objj_msgSend(_saturationValue,"setStringValue:",ROUND(objj_msgSend(_saturationSlider,"floatValue"))); +objj_msgSend(_brightnessValue,"setStringValue:",ROUND(objj_msgSend(_brightnessSlider,"floatValue"))); +objj_msgSend(_redValue,"setStringValue:",ROUND(objj_msgSend(_redSlider,"floatValue")*255)); +objj_msgSend(_greenValue,"setStringValue:",ROUND(objj_msgSend(_greenSlider,"floatValue")*255)); +objj_msgSend(_blueValue,"setStringValue:",ROUND(objj_msgSend(_blueSlider,"floatValue")*255)); +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_25,_26){ +with(_25){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","slider_button.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("provideNewAlternateButtonImage"),function(_27,_28){ +with(_27){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","slider_button_h.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("controlTextDidEndEditing:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=objj_msgSend(_2b,"object"),_2d=objj_msgSend(objj_msgSend(_2c,"stringValue"),"stringByTrimmingWhitespace"); +if(_2c===_hexValue){ +var _2e=objj_msgSend(CPColor,"colorWithHexString:",_2d); +if(_2e){ +objj_msgSend(_29,"setColor:",_2e); +objj_msgSend(objj_msgSend(_29,"colorPanel"),"setColor:",_2e); +} +}else{ +switch(_2c){ +case _redValue: +objj_msgSend(_redSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_redSlider); +break; +case _greenValue: +objj_msgSend(_greenSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_greenSlider); +break; +case _blueValue: +objj_msgSend(_blueSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_blueSlider); +break; +case _hueValue: +objj_msgSend(_hueSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),360),0)); +objj_msgSend(_29,"sliderChanged:",_hueSlider); +break; +case _saturationValue: +objj_msgSend(_saturationSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),100),0)); +objj_msgSend(_29,"sliderChanged:",_saturationSlider); +break; +case _brightnessValue: +objj_msgSend(_brightnessSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),100),0)); +objj_msgSend(_29,"sliderChanged:",_brightnessSlider); +break; +} +} +} +})]); +p;13;CPSplitView.jt;21905;@STATIC;1.0;i;13;CPButtonBar.ji;9;CPImage.ji;8;CPView.jt;21842; +objj_executeFile("CPButtonBar.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPView.j",YES); +CPSplitViewDidResizeSubviewsNotification="CPSplitViewDidResizeSubviewsNotification"; +CPSplitViewWillResizeSubviewsNotification="CPSplitViewWillResizeSubviewsNotification"; +var _1=nil,_2=nil; +var _3=objj_allocateClassPair(CPView,"CPSplitView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_delegate"),new objj_ivar("_isVertical"),new objj_ivar("_isPaneSplitter"),new objj_ivar("_currentDivider"),new objj_ivar("_initialOffset"),new objj_ivar("_preCollapsePosition"),new objj_ivar("_originComponent"),new objj_ivar("_sizeComponent"),new objj_ivar("_DOMDividerElements"),new objj_ivar("_dividerImagePath"),new objj_ivar("_drawingDivider"),new objj_ivar("_needsResizeSubviews"),new objj_ivar("_buttonBars")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("initWithFrame:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPSplitView").super_class},"initWithFrame:",_7)){ +_currentDivider=CPNotFound; +_DOMDividerElements=[]; +_buttonBars=[]; +objj_msgSend(_5,"_setVertical:",YES); +} +return _5; +} +}),new objj_method(sel_getUid("dividerThickness"),function(_8,_9){ +with(_8){ +return objj_msgSend(_8,"currentValueForThemeAttribute:",objj_msgSend(_8,"isPaneSplitter")?"pane-divider-thickness":"divider-thickness"); +} +}),new objj_method(sel_getUid("isVertical"),function(_a,_b){ +with(_a){ +return _isVertical; +} +}),new objj_method(sel_getUid("setVertical:"),function(_c,_d,_e){ +with(_c){ +if(!objj_msgSend(_c,"_setVertical:",_e)){ +return; +} +var _f=objj_msgSend(_c,"frame"),_10=objj_msgSend(_c,"dividerThickness"); +objj_msgSend(_c,"_postNotificationWillResize"); +var _11=ROUND((_f.size[_sizeComponent]-_10*(_subviews.length-1))/_subviews.length),_12=0,_13=_subviews.length; +if(objj_msgSend(_c,"isVertical")){ +for(;_12<_13;++_12){ +objj_msgSend(_subviews[_12],"setFrame:",CGRectMake(ROUND((_11+_10)*_12),0,_11,_f.size.height)); +} +}else{ +for(;_12<_13;++_12){ +objj_msgSend(_subviews[_12],"setFrame:",CGRectMake(0,ROUND((_11+_10)*_12),_f.size.width,_11)); +} +} +objj_msgSend(_c,"setNeedsDisplay:",YES); +objj_msgSend(_c,"_postNotificationDidResize"); +} +}),new objj_method(sel_getUid("_setVertical:"),function(_14,_15,_16){ +with(_14){ +var _17=(_isVertical!=_16); +_isVertical=_16; +_originComponent=objj_msgSend(_14,"isVertical")?"x":"y"; +_sizeComponent=objj_msgSend(_14,"isVertical")?"width":"height"; +_dividerImagePath=objj_msgSend(_14,"isVertical")?objj_msgSend(_2,"filename"):objj_msgSend(_1,"filename"); +return _17; +} +}),new objj_method(sel_getUid("isPaneSplitter"),function(_18,_19){ +with(_18){ +return _isPaneSplitter; +} +}),new objj_method(sel_getUid("setIsPaneSplitter:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_isPaneSplitter==_1c){ +return; +} +_isPaneSplitter=_1c; +if(_DOMDividerElements[_drawingDivider]){ +objj_msgSend(_1a,"_setupDOMDivider"); +} +_needsResizeSubviews=YES; +objj_msgSend(_1a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_1d,_1e,_1f){ +with(_1d){ +_needsResizeSubviews=YES; +} +}),new objj_method(sel_getUid("isSubviewCollapsed:"),function(_20,_21,_22){ +with(_20){ +return objj_msgSend(_22,"frame").size[_sizeComponent]<1?YES:NO; +} +}),new objj_method(sel_getUid("rectOfDividerAtIndex:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_subviews[_25],"frame"),_27=CGRectMakeZero(); +_27.size=objj_msgSend(_23,"frame").size; +_27.size[_sizeComponent]=objj_msgSend(_23,"dividerThickness"); +_27.origin[_originComponent]=_26.origin[_originComponent]+_26.size[_sizeComponent]; +return _27; +} +}),new objj_method(sel_getUid("effectiveRectOfDividerAtIndex:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(_28,"rectOfDividerAtIndex:",_2a); +var _2c=2; +_2b.size[_sizeComponent]+=_2c*2; +_2b.origin[_originComponent]-=_2c; +return _2b; +} +}),new objj_method(sel_getUid("drawRect:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_subviews,"count")-1; +while((_30--)>0){ +_drawingDivider=_30; +objj_msgSend(_2d,"drawDividerInRect:",objj_msgSend(_2d,"rectOfDividerAtIndex:",_30)); +} +} +}),new objj_method(sel_getUid("drawDividerInRect:"),function(_31,_32,_33){ +with(_31){ +if(!_DOMDividerElements[_drawingDivider]){ +_DOMDividerElements[_drawingDivider]=document.createElement("div"); +_DOMDividerElements[_drawingDivider].style.position="absolute"; +_DOMDividerElements[_drawingDivider].style.backgroundRepeat="repeat"; +_DOMElement.appendChild(_DOMDividerElements[_drawingDivider]); +} +objj_msgSend(_31,"_setupDOMDivider"); +if(NULL){ +var _34=_CGPointApplyAffineTransform(CGPointMake((_33.origin.x),(_33.origin.y)),NULL); +}else{ +var _34={x:(_33.origin.x),y:(_33.origin.y)}; +} +_DOMDividerElements[_drawingDivider].style.left=ROUND(_34.x)+"px"; +_DOMDividerElements[_drawingDivider].style.top=ROUND(_34.y)+"px"; +_DOMDividerElements[_drawingDivider].style.width=MAX(0,ROUND((_33.size.width)))+"px"; +_DOMDividerElements[_drawingDivider].style.height=MAX(0,ROUND((_33.size.height)))+"px"; +} +}),new objj_method(sel_getUid("_setupDOMDivider"),function(_35,_36){ +with(_35){ +if(_isPaneSplitter){ +_DOMDividerElements[_drawingDivider].style.backgroundColor="#A5A5A5"; +_DOMDividerElements[_drawingDivider].style.backgroundImage=""; +}else{ +_DOMDividerElements[_drawingDivider].style.backgroundColor=""; +_DOMDividerElements[_drawingDivider].style.backgroundImage="url('"+_dividerImagePath+"')"; +} +} +}),new objj_method(sel_getUid("viewWillDraw"),function(_37,_38){ +with(_37){ +objj_msgSend(_37,"_adjustSubviewsWithCalculatedSize"); +} +}),new objj_method(sel_getUid("_adjustSubviewsWithCalculatedSize"),function(_39,_3a){ +with(_39){ +if(!_needsResizeSubviews){ +return; +} +_needsResizeSubviews=NO; +var _3b=objj_msgSend(_39,"subviews"),_3c=_3b.length,_3d=CGSizeMakeZero(); +if(objj_msgSend(_39,"isVertical")){ +_3d.width+=objj_msgSend(_39,"dividerThickness")*(_3c-1); +_3d.height=CGRectGetHeight(objj_msgSend(_39,"frame")); +}else{ +_3d.width=CGRectGetWidth(objj_msgSend(_39,"frame")); +_3d.height+=objj_msgSend(_39,"dividerThickness")*(_3c-1); +} +while(_3c--){ +_3d[_sizeComponent]+=objj_msgSend(_3b[_3c],"frame").size[_sizeComponent]; +} +objj_msgSend(_39,"resizeSubviewsWithOldSize:",_3d); +} +}),new objj_method(sel_getUid("cursorAtPoint:hitDividerAtIndex:"),function(_3e,_3f,_40,_41){ +with(_3e){ +var _42=objj_msgSend(_subviews[_41],"frame"),_43=_42.origin[_originComponent]+_42.size[_sizeComponent],_44=objj_msgSend(_3e,"effectiveRectOfDividerAtIndex:",_41),_45=_buttonBars[_41],_46=null,_47=null; +if(_45!=null){ +_46=objj_msgSend(_45,"resizeControlFrame"); +_46.origin=objj_msgSend(_3e,"convertPoint:fromView:",_46.origin,_45); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:"))){ +_44=objj_msgSend(_delegate,"splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:",_3e,_44,_44,_41); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:additionalEffectiveRectOfDividerAtIndex:"))){ +_47=objj_msgSend(_delegate,"splitView:additionalEffectiveRectOfDividerAtIndex:",_3e,_41); +} +return CGRectContainsPoint(_44,_40)||(_47&&CGRectContainsPoint(_47,_40))||(_46&&CGRectContainsPoint(_46,_40)); +} +}),new objj_method(sel_getUid("hitTest:"),function(_48,_49,_4a){ +with(_48){ +if(objj_msgSend(_48,"isHidden")||!objj_msgSend(_48,"hitTests")||!CGRectContainsPoint(objj_msgSend(_48,"frame"),_4a)){ +return nil; +} +var _4b=objj_msgSend(_48,"convertPoint:fromView:",_4a,objj_msgSend(_48,"superview")); +var _4c=objj_msgSend(_subviews,"count")-1; +for(var i=0;i<_4c;i++){ +if(objj_msgSend(_48,"cursorAtPoint:hitDividerAtIndex:",_4b,i)){ +return _48; +} +} +return objj_msgSendSuper({receiver:_48,super_class:objj_getClass("CPSplitView").super_class},"hitTest:",_4a); +} +}),new objj_method(sel_getUid("trackDivider:"),function(_4d,_4e,_4f){ +with(_4d){ +var _50=objj_msgSend(_4f,"type"); +if(_50==CPLeftMouseUp){ +if(_currentDivider!=CPNotFound){ +_currentDivider=CPNotFound; +objj_msgSend(_4d,"_updateResizeCursor:",_4f); +objj_msgSend(_4d,"_postNotificationDidResize"); +} +return; +} +if(_50==CPLeftMouseDown){ +var _51=objj_msgSend(_4d,"convertPoint:fromView:",objj_msgSend(_4f,"locationInWindow"),nil); +_currentDivider=CPNotFound; +var _52=objj_msgSend(_subviews,"count")-1; +for(var i=0;i<_52;i++){ +var _53=objj_msgSend(_subviews[i],"frame"),_54=_53.origin[_originComponent]+_53.size[_sizeComponent]; +if(objj_msgSend(_4d,"cursorAtPoint:hitDividerAtIndex:",_51,i)){ +if(objj_msgSend(_4f,"clickCount")==2&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:"))){ +var _55=objj_msgSend(_4d,"minPossiblePositionOfDividerAtIndex:",i),_56=objj_msgSend(_4d,"maxPossiblePositionOfDividerAtIndex:",i); +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_4d,_subviews[i])&&objj_msgSend(_delegate,"splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:",_4d,_subviews[i],i)){ +if(objj_msgSend(_4d,"isSubviewCollapsed:",_subviews[i])){ +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",_preCollapsePosition?_preCollapsePosition:(_55+(_56-_55)/2),i); +}else{ +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",_55,i); +} +}else{ +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_4d,_subviews[i+1])&&objj_msgSend(_delegate,"splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:",_4d,_subviews[i+1],i)){ +if(objj_msgSend(_4d,"isSubviewCollapsed:",_subviews[i+1])){ +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",_preCollapsePosition?_preCollapsePosition:(_55+(_56-_55)/2),i); +}else{ +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",_56,i); +} +} +} +}else{ +_currentDivider=i; +_initialOffset=_54-_51[_originComponent]; +objj_msgSend(_4d,"_postNotificationWillResize"); +} +} +} +if(_currentDivider===CPNotFound){ +return; +} +}else{ +if(_50==CPLeftMouseDragged&&_currentDivider!=CPNotFound){ +var _51=objj_msgSend(_4d,"convertPoint:fromView:",objj_msgSend(_4f,"locationInWindow"),nil); +objj_msgSend(_4d,"setPosition:ofDividerAtIndex:",(_51[_originComponent]+_initialOffset),_currentDivider); +objj_msgSend(_4d,"_updateResizeCursor:",_4f); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_4d,sel_getUid("trackDivider:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_57,_58,_59){ +with(_57){ +objj_msgSend(_57,"trackDivider:",_59); +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_5a,_5b){ +with(_5a){ +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_5c,_5d,_5e){ +with(_5c){ +if(_currentDivider==CPNotFound){ +objj_msgSend(_5c,"_updateResizeCursor:",_5e); +} +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_5f,_60,_61){ +with(_5f){ +if(_currentDivider==CPNotFound){ +objj_msgSend(_5f,"_updateResizeCursor:",_61); +} +} +}),new objj_method(sel_getUid("mouseExited:"),function(_62,_63,_64){ +with(_62){ +if(_currentDivider==CPNotFound){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +} +}),new objj_method(sel_getUid("_updateResizeCursor:"),function(_65,_66,_67){ +with(_65){ +var _68=objj_msgSend(_65,"convertPoint:fromView:",objj_msgSend(_67,"locationInWindow"),nil); +if(objj_msgSend(_67,"type")===CPLeftMouseUp&&!objj_msgSend(objj_msgSend(_65,"window"),"acceptsMouseMovedEvents")){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +return; +} +for(var i=0,_69=objj_msgSend(_subviews,"count")-1;i<_69;i++){ +if(_currentDivider===i||(_currentDivider==CPNotFound&&objj_msgSend(_65,"cursorAtPoint:hitDividerAtIndex:",_68,i))){ +var _6a=objj_msgSend(_subviews[i],"frame"),_6b=_6a.size[_sizeComponent],_6c=_6a.origin[_originComponent]+_6b,_6d=objj_msgSend(_65,"_realPositionForPosition:ofDividerAtIndex:",_6c-1,i)<_6c,_6e=objj_msgSend(_65,"_realPositionForPosition:ofDividerAtIndex:",_6c+1,i)>_6c,_6f=objj_msgSend(CPCursor,"arrowCursor"); +if(_6b===0){ +_6e=YES; +}else{ +if(!_6d&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))&&objj_msgSend(_delegate,"splitView:canCollapseSubview:",_65,_subviews[i])){ +_6d=YES; +} +} +if(_isVertical&&_6d&&_6e){ +_6f=objj_msgSend(CPCursor,"resizeLeftRightCursor"); +}else{ +if(_isVertical&&_6d){ +_6f=objj_msgSend(CPCursor,"resizeLeftCursor"); +}else{ +if(_isVertical&&_6e){ +_6f=objj_msgSend(CPCursor,"resizeRightCursor"); +}else{ +if(_6d&&_6e){ +_6f=objj_msgSend(CPCursor,"resizeUpDownCursor"); +}else{ +if(_6d){ +_6f=objj_msgSend(CPCursor,"resizeUpCursor"); +}else{ +if(_6e){ +_6f=objj_msgSend(CPCursor,"resizeDownCursor"); +} +} +} +} +} +} +objj_msgSend(_6f,"set"); +return; +} +} +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +}),new objj_method(sel_getUid("maxPossiblePositionOfDividerAtIndex:"),function(_70,_71,_72){ +with(_70){ +var _73=objj_msgSend(_subviews[_72+1],"frame"); +if(_72+1<objj_msgSend(_subviews,"count")-1){ +return _73.origin[_originComponent]+_73.size[_sizeComponent]-objj_msgSend(_70,"dividerThickness"); +}else{ +return objj_msgSend(_70,"frame").size[_sizeComponent]-objj_msgSend(_70,"dividerThickness"); +} +} +}),new objj_method(sel_getUid("minPossiblePositionOfDividerAtIndex:"),function(_74,_75,_76){ +with(_74){ +if(_76>0){ +var _77=objj_msgSend(_subviews[_76-1],"frame"); +return _77.origin[_originComponent]+_77.size[_sizeComponent]+objj_msgSend(_74,"dividerThickness"); +}else{ +return 0; +} +} +}),new objj_method(sel_getUid("_realPositionForPosition:ofDividerAtIndex:"),function(_78,_79,_7a,_7b){ +with(_78){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainSplitPosition:ofSubviewAt:"))){ +_7a=objj_msgSend(_delegate,"splitView:constrainSplitPosition:ofSubviewAt:",_78,_7a,_7b); +} +var _7c=objj_msgSend(_78,"maxPossiblePositionOfDividerAtIndex:",_7b),_7d=objj_msgSend(_78,"minPossiblePositionOfDividerAtIndex:",_7b),_7e=_7c,_7f=_7d; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainMinCoordinate:ofSubviewAt:"))){ +_7f=objj_msgSend(_delegate,"splitView:constrainMinCoordinate:ofSubviewAt:",_78,_7d,_7b); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainMaxCoordinate:ofSubviewAt:"))){ +_7e=objj_msgSend(_delegate,"splitView:constrainMaxCoordinate:ofSubviewAt:",_78,_7c,_7b); +} +var _80=_subviews[_7b],_81=MAX(MIN(_7a,_7e),_7f); +if(_7a<_7d+(_7f-_7d)/2){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))){ +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_78,_80)){ +_81=_7d; +} +} +} +return _81; +} +}),new objj_method(sel_getUid("setPosition:ofDividerAtIndex:"),function(_82,_83,_84,_85){ +with(_82){ +objj_msgSend(_82,"_adjustSubviewsWithCalculatedSize"); +var _86=objj_msgSend(_82,"_realPositionForPosition:ofDividerAtIndex:",_84,_85); +var _87=_subviews[_85],_88=objj_msgSend(_87,"frame"),_89=_subviews[_85+1],_8a=objj_msgSend(_89,"frame"); +_preCollapsePosition=0; +var _8b=_88.size[_sizeComponent]; +_88.size[_sizeComponent]=_86-_88.origin[_originComponent]; +if(_8b!==0&&_88.size[_sizeComponent]===0){ +_preCollapsePosition=_8b; +} +objj_msgSend(_subviews[_85],"setFrame:",_88); +_8b=_8a.size[_sizeComponent]; +_8a.size[_sizeComponent]=_8a.origin[_originComponent]+_8a.size[_sizeComponent]-_86-objj_msgSend(_82,"dividerThickness"); +if(_8b!==0&&_8a.size[_sizeComponent]===0){ +_preCollapsePosition=_8b; +} +_8a.origin[_originComponent]=_86+objj_msgSend(_82,"dividerThickness"); +objj_msgSend(_subviews[_85+1],"setFrame:",_8a); +objj_msgSend(_82,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_8c,_8d,_8e){ +with(_8c){ +objj_msgSend(_8c,"_adjustSubviewsWithCalculatedSize"); +objj_msgSendSuper({receiver:_8c,super_class:objj_getClass("CPSplitView").super_class},"setFrameSize:",_8e); +objj_msgSend(_8c,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_8f,_90,_91){ +with(_8f){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:resizeSubviewsWithOldSize:"))){ +objj_msgSend(_delegate,"splitView:resizeSubviewsWithOldSize:",_8f,_91); +return; +} +objj_msgSend(_8f,"_postNotificationWillResize"); +var _92=0,_93=objj_msgSend(_subviews,"count"),_94=objj_msgSend(_8f,"bounds"),_95=objj_msgSend(_8f,"dividerThickness"),_96=_93-1,_97=0,_98=0,_99=-1,_9a=0,_9b=objj_msgSend(_8f,"isVertical"); +for(_92=0;_92<_93;++_92){ +var _9c=_subviews[_92],_9d=_9b?objj_msgSend(_9c,"autoresizingMask")&CPViewWidthSizable:objj_msgSend(_9c,"autoresizingMask")&CPViewHeightSizable; +if(_9d){ +_97+=objj_msgSend(_9c,"frame").size[_sizeComponent]; +_99=_92; +_9a++; +} +} +if(_9a===_93){ +_97=0; +} +var _98=_97?_94.size[_sizeComponent]-_97:0,_9e=_94.size[_sizeComponent]-_91[_sizeComponent],_9f=(_91[_sizeComponent]-_96*_95-_98),_a0=_9f<=0?0:(_94.size[_sizeComponent]-_96*_95-_98)/_9f; +for(_92=0;_92<_93;++_92){ +var _9c=_subviews[_92],_a1=CGRectMakeCopy(_94),_9d=_9b?objj_msgSend(_9c,"autoresizingMask")&CPViewWidthSizable:objj_msgSend(_9c,"autoresizingMask")&CPViewHeightSizable; +if(_92+1==_93){ +_a1.size[_sizeComponent]=_94.size[_sizeComponent]-_a1.origin[_originComponent]; +}else{ +if(_97&&_9d&&_99===_92){ +_a1.size[_sizeComponent]=MAX(0,ROUND(objj_msgSend(_9c,"frame").size[_sizeComponent]+_9e)); +}else{ +if(_9d||!_97){ +_a1.size[_sizeComponent]=MAX(0,ROUND(_a0*objj_msgSend(_9c,"frame").size[_sizeComponent])); +_9e-=(_a1.size[_sizeComponent]-objj_msgSend(_9c,"frame").size[_sizeComponent]); +}else{ +if(_97&&!_9d){ +_a1.size[_sizeComponent]=objj_msgSend(_9c,"frame").size[_sizeComponent]; +} +} +} +} +_94.origin[_originComponent]+=_a1.size[_sizeComponent]+_95; +objj_msgSend(_9c,"setFrame:",_a1); +} +objj_msgSend(_8f,"_postNotificationDidResize"); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_a2,_a3,_a4){ +with(_a2){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewDidResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_delegate,CPSplitViewDidResizeSubviewsNotification,_a2); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewWillResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_delegate,CPSplitViewWillResizeSubviewsNotification,_a2); +} +_delegate=_a4; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewDidResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_delegate,sel_getUid("splitViewDidResizeSubviews:"),CPSplitViewDidResizeSubviewsNotification,_a2); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewWillResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_delegate,sel_getUid("splitViewWillResizeSubviews:"),CPSplitViewWillResizeSubviewsNotification,_a2); +} +} +}),new objj_method(sel_getUid("setButtonBar:forDividerAtIndex:"),function(_a5,_a6,_a7,_a8){ +with(_a5){ +if(!_a7){ +_buttonBars[_a8]=nil; +return; +} +var _a9=objj_msgSend(_a7,"superview"),_aa=_a7; +while(_a9&&_a9!==_a5){ +_aa=_a9; +_a9=objj_msgSend(_a9,"superview"); +} +if(_a9!==_a5){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"CPSplitView button bar must be a subview of the split view."); +} +var _ab=objj_msgSend(objj_msgSend(_a5,"subviews"),"indexOfObject:",_aa); +objj_msgSend(_a7,"setHasResizeControl:",YES); +objj_msgSend(_a7,"setResizeControlIsLeftAligned:",_a8<_ab); +_buttonBars[_a8]=_a7; +} +}),new objj_method(sel_getUid("_postNotificationWillResize"),function(_ac,_ad){ +with(_ac){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPSplitViewWillResizeSubviewsNotification,_ac); +} +}),new objj_method(sel_getUid("_postNotificationDidResize"),function(_ae,_af){ +with(_ae){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPSplitViewDidResizeSubviewsNotification,_ae); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("themeClass"),function(_b0,_b1){ +with(_b0){ +return "splitview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_b2,_b3){ +with(_b2){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[10,1],["divider-thickness","pane-divider-thickness"]); +} +}),new objj_method(sel_getUid("initialize"),function(_b4,_b5){ +with(_b4){ +if(_b4!=objj_msgSend(CPSplitView,"class")){ +return; +} +var _b6=objj_msgSend(CPBundle,"bundleForClass:",_b4); +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b6,"pathForResource:","CPSplitView/CPSplitViewHorizontal.png"),CPSizeMake(5,10)); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b6,"pathForResource:","CPSplitView/CPSplitViewVertical.png"),CPSizeMake(10,5)); +} +})]); +var _b7="CPSplitViewDelegateKey",_b8="CPSplitViewIsVerticalKey",_b9="CPSplitViewIsPaneSplitterKey",_ba="CPSplitViewButtonBarsKey"; +var _3=objj_getClass("CPSplitView"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPSplitView\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_bb,_bc,_bd){ +with(_bb){ +_bb=objj_msgSendSuper({receiver:_bb,super_class:objj_getClass("CPSplitView").super_class},"initWithCoder:",_bd); +if(_bb){ +_currentDivider=CPNotFound; +_DOMDividerElements=[]; +_buttonBars=objj_msgSend(_bd,"decodeObjectForKey:",_ba)||[]; +_delegate=objj_msgSend(_bd,"decodeObjectForKey:",_b7); +_isPaneSplitter=objj_msgSend(_bd,"decodeBoolForKey:",_b9); +objj_msgSend(_bb,"_setVertical:",objj_msgSend(_bd,"decodeBoolForKey:",_b8)); +} +return _bb; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_be,_bf,_c0){ +with(_be){ +objj_msgSendSuper({receiver:_be,super_class:objj_getClass("CPSplitView").super_class},"encodeWithCoder:",_c0); +objj_msgSend(_c0,"encodeConditionalObject:forKey:",_delegate,_b7); +objj_msgSend(_c0,"encodeBool:forKey:",_isVertical,_b8); +objj_msgSend(_c0,"encodeBool:forKey:",_isPaneSplitter,_b9); +} +})]); +p;17;CPStringDrawing.jt;875;@STATIC;1.0;I;21;Foundation/CPString.ji;18;CPPlatformString.jt;808; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPPlatformString.j",YES); +var _1=objj_getClass("CPString"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPString\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("cssString"),function(_3,_4){ +with(_3){ +return _3; +} +}),new objj_method(sel_getUid("sizeWithFont:"),function(_5,_6,_7){ +with(_5){ +return objj_msgSend(_5,"sizeWithFont:inWidth:",_7,NULL); +} +}),new objj_method(sel_getUid("sizeWithFont:inWidth:"),function(_8,_9,_a,_b){ +with(_8){ +return objj_msgSend(CPPlatformString,"sizeOfString:withFont:forWidth:",_8,_a,_b); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("metricsOfFont:"),function(_c,_d,_e){ +with(_c){ +return objj_msgSend(CPPlatformString,"metricsOfFont:",_e); +} +})]); +p;15;CPTableColumn.jt;12873;@STATIC;1.0;I;25;Foundation/CPDictionary.jI;21;Foundation/CPObject.jI;29;Foundation/CPSortDescriptor.jI;21;Foundation/CPString.ji;19;CPTableHeaderView.jt;12713; +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPSortDescriptor.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPTableHeaderView.j",YES); +CPTableColumnNoResizing=0; +CPTableColumnAutoresizingMask=1<<0; +CPTableColumnUserResizingMask=1<<1; +var _1=objj_allocateClassPair(CPObject,"CPTableColumn"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_tableView"),new objj_ivar("_headerView"),new objj_ivar("_dataView"),new objj_ivar("_dataViewData"),new objj_ivar("_width"),new objj_ivar("_minWidth"),new objj_ivar("_maxWidth"),new objj_ivar("_resizingMask"),new objj_ivar("_identifier"),new objj_ivar("_isEditable"),new objj_ivar("_sortDescriptorPrototype"),new objj_ivar("_isHidden"),new objj_ivar("_headerToolTip"),new objj_ivar("_disableResizingPosting")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("disableResizingPosting"),function(_3,_4){ +with(_3){ +return _disableResizingPosting; +} +}),new objj_method(sel_getUid("setDisableResizingPosting:"),function(_5,_6,_7){ +with(_5){ +_disableResizingPosting=_7; +} +}),new objj_method(sel_getUid("init"),function(_8,_9){ +with(_8){ +return objj_msgSend(_8,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPTableColumn").super_class},"init"); +if(_a){ +_dataViewData={}; +_width=100; +_minWidth=10; +_maxWidth=1000000; +_resizingMask=CPTableColumnAutoresizingMask|CPTableColumnUserResizingMask; +_disableResizingPosting=NO; +objj_msgSend(_a,"setIdentifier:",_c); +var _d=objj_msgSend(objj_msgSend(_CPTableColumnHeaderView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_a,"setHeaderView:",_d); +objj_msgSend(_a,"setDataView:",objj_msgSend(CPTextField,"new")); +} +return _a; +} +}),new objj_method(sel_getUid("setTableView:"),function(_e,_f,_10){ +with(_e){ +_tableView=_10; +} +}),new objj_method(sel_getUid("tableView"),function(_11,_12){ +with(_11){ +return _tableView; +} +}),new objj_method(sel_getUid("setWidth:"),function(_13,_14,_15){ +with(_13){ +_15=+_15; +if(_width===_15){ +return; +} +var _16=MIN(MAX(_15,objj_msgSend(_13,"minWidth")),objj_msgSend(_13,"maxWidth")); +if(_width===_16){ +return; +} +var _17=_width; +_width=_16; +var _18=objj_msgSend(_13,"tableView"); +if(_18){ +var _19=objj_msgSend(objj_msgSend(_18,"tableColumns"),"indexOfObjectIdenticalTo:",_13),_1a=_18._dirtyTableColumnRangeIndex; +if(_1a<0){ +_18._dirtyTableColumnRangeIndex=_19; +}else{ +_18._dirtyTableColumnRangeIndex=MIN(_19,_18._dirtyTableColumnRangeIndex); +} +var _1b=_18._exposedRows,_1c=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_19,objj_msgSend(_18._exposedColumns,"lastIndex")-_19+1)); +objj_msgSend(_18,"_layoutDataViewsInRows:columns:",_1b,_1c); +objj_msgSend(_18,"tile"); +if(!_disableResizingPosting){ +objj_msgSend(_13,"_postDidResizeNotificationWithOldWidth:",_17); +} +} +} +}),new objj_method(sel_getUid("width"),function(_1d,_1e){ +with(_1d){ +return _width; +} +}),new objj_method(sel_getUid("setMinWidth:"),function(_1f,_20,_21){ +with(_1f){ +_21=+_21; +if(_minWidth===_21){ +return; +} +_minWidth=_21; +var _22=objj_msgSend(_1f,"width"),_23=MAX(_22,objj_msgSend(_1f,"minWidth")); +if(_22!==_23){ +objj_msgSend(_1f,"setWidth:",_23); +} +} +}),new objj_method(sel_getUid("minWidth"),function(_24,_25){ +with(_24){ +return _minWidth; +} +}),new objj_method(sel_getUid("setMaxWidth:"),function(_26,_27,_28){ +with(_26){ +_28=+_28; +if(_maxWidth===_28){ +return; +} +_maxWidth=_28; +var _29=objj_msgSend(_26,"width"),_2a=MIN(_29,objj_msgSend(_26,"maxWidth")); +if(_29!==_2a){ +objj_msgSend(_26,"setWidth:",_2a); +} +} +}),new objj_method(sel_getUid("maxWidth"),function(_2b,_2c){ +with(_2b){ +return _maxWidth; +} +}),new objj_method(sel_getUid("setResizingMask:"),function(_2d,_2e,_2f){ +with(_2d){ +_resizingMask=_2f; +} +}),new objj_method(sel_getUid("resizingMask"),function(_30,_31){ +with(_30){ +return _resizingMask; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_32,_33){ +with(_32){ +var _34=(objj_msgSend(_headerView,"frame").size.width); +if(_34<objj_msgSend(_32,"minWidth")){ +objj_msgSend(_32,"setMinWidth:",_34); +}else{ +if(_34>objj_msgSend(_32,"maxWidth")){ +objj_msgSend(_32,"setMaxWidth:",_34); +} +} +if(_width!==_34){ +objj_msgSend(_32,"setWidth:",_34); +} +} +}),new objj_method(sel_getUid("setHeaderView:"),function(_35,_36,_37){ +with(_35){ +if(!_37){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Attempt to set nil header view on "+objj_msgSend(_35,"description")); +} +_headerView=_37; +var _38=objj_msgSend(_tableView,"headerView"); +objj_msgSend(_38,"setNeedsLayout"); +objj_msgSend(_38,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("headerView"),function(_39,_3a){ +with(_39){ +return _headerView; +} +}),new objj_method(sel_getUid("setDataView:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_dataView===_3d){ +return; +} +if(_dataView){ +_dataViewData[objj_msgSend(_dataView,"UID")]=nil; +} +objj_msgSend(_3d,"setThemeState:",CPThemeStateTableDataView); +_dataView=_3d; +_dataViewData[objj_msgSend(_3d,"UID")]=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_3d); +} +}),new objj_method(sel_getUid("dataView"),function(_3e,_3f){ +with(_3e){ +return _dataView; +} +}),new objj_method(sel_getUid("dataViewForRow:"),function(_40,_41,_42){ +with(_40){ +return objj_msgSend(_40,"dataView"); +} +}),new objj_method(sel_getUid("_newDataViewForRow:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_43,"dataViewForRow:",_45),_47=objj_msgSend(_46,"UID"); +var x=objj_msgSend(_43,"tableView")._cachedDataViews[_47]; +if(x&&x.length){ +return x.pop(); +} +if(!_dataViewData[_47]){ +_dataViewData[_47]=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_46); +} +var _48=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_dataViewData[_47]); +_48.identifier=_47; +objj_msgSend(_48,"setAutoresizingMask:",CPViewNotSizable); +return _48; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_49,_4a,_4b){ +with(_49){ +_identifier=_4b; +} +}),new objj_method(sel_getUid("identifier"),function(_4c,_4d){ +with(_4c){ +return _identifier; +} +}),new objj_method(sel_getUid("setEditable:"),function(_4e,_4f,_50){ +with(_4e){ +_isEditable=_50; +} +}),new objj_method(sel_getUid("isEditable"),function(_51,_52){ +with(_51){ +return _isEditable; +} +}),new objj_method(sel_getUid("setSortDescriptorPrototype:"),function(_53,_54,_55){ +with(_53){ +_sortDescriptorPrototype=_55; +} +}),new objj_method(sel_getUid("sortDescriptorPrototype"),function(_56,_57){ +with(_56){ +return _sortDescriptorPrototype; +} +}),new objj_method(sel_getUid("setHidden:"),function(_58,_59,_5a){ +with(_58){ +_5a=!!_5a; +if(_isHidden===_5a){ +return; +} +_isHidden=_5a; +objj_msgSend(objj_msgSend(_58,"headerView"),"setHidden:",_5a); +objj_msgSend(objj_msgSend(_58,"tableView"),"_tableColumnVisibilityDidChange:",_58); +} +}),new objj_method(sel_getUid("isHidden"),function(_5b,_5c){ +with(_5b){ +return _isHidden; +} +}),new objj_method(sel_getUid("setHeaderToolTip:"),function(_5d,_5e,_5f){ +with(_5d){ +_headerToolTip=_5f; +} +}),new objj_method(sel_getUid("headerToolTip"),function(_60,_61){ +with(_60){ +return _headerToolTip; +} +}),new objj_method(sel_getUid("_postDidResizeNotificationWithOldWidth:"),function(_62,_63,_64){ +with(_62){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewColumnDidResizeNotification,objj_msgSend(_62,"tableView"),objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_62,_64],["CPTableColumn","CPOldWidth"])); +} +})]); +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"),function(_65,_66,_67,_68,_69,_6a){ +with(_65){ +objj_msgSendSuper({receiver:_65,super_class:objj_getClass("CPTableColumn").super_class},"bind:toObject:withKeyPath:options:",_67,_68,_69,_6a); +if(!objj_msgSend(_67,"isEqual:","someListOfExceptedBindings(notAcceptedBindings)")){ +objj_msgSend(objj_msgSend(_65,"tableView"),"_establishBindingsIfUnbound:",_68); +} +} +}),new objj_method(sel_getUid("prepareDataView:forRow:"),function(_6b,_6c,_6d,_6e){ +with(_6b){ +var _6f=objj_msgSend(CPKeyValueBinding,"allBindingsForObject:",_6b),_70=objj_msgSend(_6f,"allKeys"); +for(var i=0,_71=objj_msgSend(_70,"count");i<_71;i++){ +var _72=_70[i],_73=objj_msgSend(_6d,"_replacementKeyPathForBinding:",_72),_74=objj_msgSend(_6f,"objectForKey:",_72),_75=_74._info,_76=objj_msgSend(_75,"objectForKey:",CPObservedObjectKey),_77=objj_msgSend(_75,"objectForKey:",CPObservedKeyPathKey),_78=_77.lastIndexOf("."),_79; +if(_78===CPNotFound){ +_79=objj_msgSend(objj_msgSend(_76,"valueForKeyPath:",_77),"objectAtIndex:",_6e); +}else{ +var _7a=_77.substring(0,_78),_7b=_77.substring(_78+1),_7c=objj_msgSend(_76,"valueForKeyPath:",_7a); +if(objj_msgSend(_7c,"isKindOfClass:",CPArray)){ +_79=objj_msgSend(objj_msgSend(_7c,"objectAtIndex:",_6e),"valueForKeyPath:",_7b); +}else{ +_79=objj_msgSend(objj_msgSend(_7c,"valueForKeyPath:",_7b),"objectAtIndex:",_6e); +} +} +_79=objj_msgSend(_74,"transformValue:withOptions:",_79,objj_msgSend(_75,"objectForKey:",CPOptionsKey)); +objj_msgSend(_6d,"setValue:forKey:",_79,_73); +} +} +}),new objj_method(sel_getUid("setValue:"),function(_7d,_7e,_7f){ +with(_7d){ +objj_msgSend(objj_msgSend(_7d,"tableView"),"reloadData"); +} +})]); +var _80="CPTableColumnIdentifierKey",_81="CPTableColumnHeaderViewKey",_82="CPTableColumnDataViewKey",_83="CPTableColumnWidthKey",_84="CPTableColumnMinWidthKey",_85="CPTableColumnMaxWidthKey",_86="CPTableColumnResizingMaskKey",_87="CPTableColumnIsHiddenKey",_88="CPSortDescriptorPrototypeKey",_89="CPTableColumnIsEditableKey"; +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_8a,_8b,_8c){ +with(_8a){ +_8a=objj_msgSendSuper({receiver:_8a,super_class:objj_getClass("CPTableColumn").super_class},"init"); +if(_8a){ +_dataViewData={}; +_width=objj_msgSend(_8c,"decodeFloatForKey:",_83); +_minWidth=objj_msgSend(_8c,"decodeFloatForKey:",_84); +_maxWidth=objj_msgSend(_8c,"decodeFloatForKey:",_85); +objj_msgSend(_8a,"setIdentifier:",objj_msgSend(_8c,"decodeObjectForKey:",_80)); +objj_msgSend(_8a,"setHeaderView:",objj_msgSend(_8c,"decodeObjectForKey:",_81)); +objj_msgSend(_8a,"setDataView:",objj_msgSend(_8c,"decodeObjectForKey:",_82)); +objj_msgSend(_8a,"setHeaderView:",objj_msgSend(_8c,"decodeObjectForKey:",_81)); +_resizingMask=objj_msgSend(_8c,"decodeIntForKey:",_86); +_isHidden=objj_msgSend(_8c,"decodeBoolForKey:",_87); +_isEditable=objj_msgSend(_8c,"decodeBoolForKey:",_89); +_sortDescriptorPrototype=objj_msgSend(_8c,"decodeObjectForKey:",_88); +} +return _8a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8f,"encodeObject:forKey:",_identifier,_80); +objj_msgSend(_8f,"encodeObject:forKey:",_width,_83); +objj_msgSend(_8f,"encodeObject:forKey:",_minWidth,_84); +objj_msgSend(_8f,"encodeObject:forKey:",_maxWidth,_85); +objj_msgSend(_8f,"encodeObject:forKey:",_headerView,_81); +objj_msgSend(_8f,"encodeObject:forKey:",_dataView,_82); +objj_msgSend(_8f,"encodeObject:forKey:",_resizingMask,_86); +objj_msgSend(_8f,"encodeBool:forKey:",_isHidden,_87); +objj_msgSend(_8f,"encodeBool:forKey:",_isEditable,_89); +objj_msgSend(_8f,"encodeObject:forKey:",_sortDescriptorPrototype,_88); +} +})]); +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setHeaderCell:"),function(_90,_91,_92){ +with(_90){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"setHeaderCell: is not supported. -setHeaderCell:aView instead."); +} +}),new objj_method(sel_getUid("headerCell"),function(_93,_94){ +with(_93){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"headCell is not supported. -headerView instead."); +} +}),new objj_method(sel_getUid("setDataCell:"),function(_95,_96,_97){ +with(_95){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"setDataCell: is not supported. Use -setHeaderCell:aView instead."); +} +}),new objj_method(sel_getUid("dataCell"),function(_98,_99){ +with(_98){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataCell is not supported. Use -dataCell instead."); +} +}),new objj_method(sel_getUid("dataCellForRow:"),function(_9a,_9b,row){ +with(_9a){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataCellForRow: is not supported. Use -dataViewForRow:row instead."); +} +})]); +p;19;CPTableHeaderView.jt;21454;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.ji;8;CPView.jt;21384; +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPTableColumnHeaderView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_textField")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"_init"); +} +return _3; +} +}),new objj_method(sel_getUid("_init"),function(_6,_7){ +with(_6){ +_textField=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_textField,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_textField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_textField,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_textField,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_6,"addSubview:",_textField); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_8,_9){ +with(_8){ +objj_msgSend(_8,"setBackgroundColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","background-color")); +var _a=objj_msgSend(_8,"currentValueForThemeAttribute:","text-inset"),_b=objj_msgSend(_8,"bounds"); +objj_msgSend(_textField,"setFrame:",{origin:{x:_a.right,y:_a.top},size:{width:_b.size.width-_a.right-_a.left,height:_b.size.height-_a.top-_a.bottom}}); +objj_msgSend(_textField,"setTextColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_textField,"setFont:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-font")); +objj_msgSend(_textField,"setTextShadowColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_textField,"setTextShadowOffset:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-shadow-offset")); +objj_msgSend(_textField,"setAlignment:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-alignment")); +} +}),new objj_method(sel_getUid("setStringValue:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_textField,"setText:",_e); +} +}),new objj_method(sel_getUid("stringValue"),function(_f,_10){ +with(_f){ +return objj_msgSend(_textField,"text"); +} +}),new objj_method(sel_getUid("textField"),function(_11,_12){ +with(_11){ +return _textField; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_13,_14){ +with(_13){ +objj_msgSend(_textField,"sizeToFit"); +} +}),new objj_method(sel_getUid("setFont:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_textField,"setFont:",_17); +} +}),new objj_method(sel_getUid("_setIndicatorImage:"),function(_18,_19,_1a){ +with(_18){ +if(_1a){ +objj_msgSend(_textField,"setImage:",_1a); +objj_msgSend(_textField,"setImagePosition:",CPImageRight); +}else{ +objj_msgSend(_textField,"setImagePosition:",CPNoImage); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_1b,_1c){ +with(_1b){ +return "columnHeader"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),CGInsetMakeZero(),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),CGSizeMakeZero()],["background-color","text-alignment","text-inset","text-color","text-font","text-shadow-color","text-shadow-offset"]); +} +})]); +var _1f="_CPTableColumnHeaderViewStringValueKey",_20="_CPTableColumnHeaderViewFontKey",_21="_CPTableColumnHeaderViewImageKey"; +var _1=objj_getClass("_CPTableColumnHeaderView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPTableColumnHeaderView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +if(_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"initWithCoder:",_24)){ +objj_msgSend(_22,"_init"); +objj_msgSend(_22,"_setIndicatorImage:",objj_msgSend(_24,"decodeObjectForKey:",_21)); +objj_msgSend(_22,"setStringValue:",objj_msgSend(_24,"decodeObjectForKey:",_1f)); +objj_msgSend(_22,"setFont:",objj_msgSend(_24,"decodeObjectForKey:",_20)); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"encodeWithCoder:",_27); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"text"),_1f); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"image"),_21); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"font"),_20); +} +})]); +var _1=objj_allocateClassPair(CPView,"CPTableHeaderView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_mouseDownLocation"),new objj_ivar("_previousTrackingLocation"),new objj_ivar("_activeColumn"),new objj_ivar("_pressedColumn"),new objj_ivar("_isResizing"),new objj_ivar("_isDragging"),new objj_ivar("_isTrackingColumn"),new objj_ivar("_drawsColumnLines"),new objj_ivar("_columnOldWidth"),new objj_ivar("_tableView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("tableView"),function(_28,_29){ +with(_28){ +return _tableView; +} +}),new objj_method(sel_getUid("setTableView:"),function(_2a,_2b,_2c){ +with(_2a){ +_tableView=_2c; +} +}),new objj_method(sel_getUid("_init"),function(_2d,_2e){ +with(_2d){ +_mouseDownLocation={x:0,y:0}; +_previousTrackingLocation={x:0,y:0}; +_activeColumn=-1; +_pressedColumn=-1; +_isResizing=NO; +_isDragging=NO; +_isTrackingColumn=NO; +_drawsColumnLines=YES; +_columnOldWidth=0; +objj_msgSend(_2d,"setBackgroundColor:",objj_msgSend(_2d,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_2f,_30,_31){ +with(_2f){ +_2f=objj_msgSendSuper({receiver:_2f,super_class:objj_getClass("CPTableHeaderView").super_class},"initWithFrame:",_31); +if(_2f){ +objj_msgSend(_2f,"_init"); +} +return _2f; +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(_32,_33,_34){ +with(_32){ +return objj_msgSend(_tableView,"columnAtPoint:",CGPointMake(_34.x,_34.y)); +} +}),new objj_method(sel_getUid("headerRectOfColumn:"),function(_35,_36,_37){ +with(_35){ +var _38=objj_msgSend(_35,"bounds"),_39=objj_msgSend(_tableView,"rectOfColumn:",_37); +_38.origin.x=(_39.origin.x); +_38.size.width=(_39.size.width); +return _38; +} +}),new objj_method(sel_getUid("setDrawsColumnLines:"),function(_3a,_3b,_3c){ +with(_3a){ +_drawsColumnLines=_3c; +} +}),new objj_method(sel_getUid("drawsColumnLines"),function(_3d,_3e){ +with(_3d){ +return _drawsColumnLines; +} +}),new objj_method(sel_getUid("_cursorRectForColumn:"),function(_3f,_40,_41){ +with(_3f){ +if(_41==-1||!(objj_msgSend(_tableView._tableColumns[_41],"resizingMask")&CPTableColumnUserResizingMask)){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _42=objj_msgSend(_3f,"headerRectOfColumn:",_41); +_42.origin.x=(_42.origin.x+_42.size.width)-5; +_42.size.width=20; +return _42; +} +}),new objj_method(sel_getUid("_setPressedColumn:"),function(_43,_44,_45){ +with(_43){ +if(_pressedColumn!=-1){ +var _46=objj_msgSend(_tableView._tableColumns[_pressedColumn],"headerView"); +objj_msgSend(_46,"unsetThemeState:",CPThemeStateHighlighted); +} +if(_45!=-1){ +var _46=objj_msgSend(_tableView._tableColumns[_45],"headerView"); +objj_msgSend(_46,"setThemeState:",CPThemeStateHighlighted); +} +_pressedColumn=_45; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_47,_48,_49){ +with(_47){ +objj_msgSend(_47,"trackMouse:",_49); +} +}),new objj_method(sel_getUid("trackMouse:"),function(_4a,_4b,_4c){ +with(_4a){ +var _4d=objj_msgSend(_4c,"type"),_4e=objj_msgSend(_4a,"convertPoint:fromView:",objj_msgSend(_4c,"locationInWindow"),nil); +_4e.x-=5; +var _4f=objj_msgSend(_4a,"columnAtPoint:",_4e),_50=objj_msgSend(_4a,"shouldResizeTableColumn:at:",_4f,{x:_4e.x+5,y:_4e.y}); +if(_4d===CPLeftMouseUp){ +if(_50){ +objj_msgSend(_4a,"stopResizingTableColumn:at:",_activeColumn,_4e); +}else{ +if(objj_msgSend(_4a,"_shouldStopTrackingTableColumn:at:",_4f,_4e)){ +objj_msgSend(_tableView,"_didClickTableColumn:modifierFlags:",_4f,objj_msgSend(_4c,"modifierFlags")); +objj_msgSend(_4a,"stopTrackingTableColumn:at:",_4f,_4e); +_isTrackingColumn=NO; +} +} +objj_msgSend(_4a,"_updateResizeCursor:",objj_msgSend(CPApp,"currentEvent")); +_activeColumn=CPNotFound; +return; +} +if(_4d===CPLeftMouseDown){ +if(_4f===-1){ +return; +} +_mouseDownLocation=_4e; +_activeColumn=_4f; +objj_msgSend(_tableView,"_sendDelegateDidMouseDownInHeader:",_4f); +if(_50){ +objj_msgSend(_4a,"startResizingTableColumn:at:",_4f,_4e); +}else{ +objj_msgSend(_4a,"startTrackingTableColumn:at:",_4f,_4e); +_isTrackingColumn=YES; +} +}else{ +if(_4d===CPLeftMouseDragged){ +if(_50){ +objj_msgSend(_4a,"continueResizingTableColumn:at:",_activeColumn,_4e); +}else{ +if(_activeColumn===_4f&&(_4e.x>=(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.x)&&_4e.y>=(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.y)&&_4e.x<(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.x+objj_msgSend(_4a,"headerRectOfColumn:",_4f).size.width)&&_4e.y<(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.y+objj_msgSend(_4a,"headerRectOfColumn:",_4f).size.height))){ +if(_isTrackingColumn&&_pressedColumn!==-1){ +if(!objj_msgSend(_4a,"continueTrackingTableColumn:at:",_4f,_4e)){ +return; +} +}else{ +objj_msgSend(_4a,"startTrackingTableColumn:at:",_4f,_4e); +} +}else{ +if(_isTrackingColumn&&_pressedColumn!==-1){ +objj_msgSend(_4a,"stopTrackingTableColumn:at:",_activeColumn,_4e); +} +} +} +} +} +_previousTrackingLocation=_4e; +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_4a,sel_getUid("trackMouse:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("startTrackingTableColumn:at:"),function(_51,_52,_53,_54){ +with(_51){ +objj_msgSend(_51,"_setPressedColumn:",_53); +} +}),new objj_method(sel_getUid("continueTrackingTableColumn:at:"),function(_55,_56,_57,_58){ +with(_55){ +if(objj_msgSend(_55,"_shouldDragTableColumn:at:",_57,_58)){ +var _59=objj_msgSend(_55,"headerRectOfColumn:",_57),_5a={x:0,y:0},_5b=objj_msgSend(_tableView,"_dragViewForColumn:event:offset:",_57,objj_msgSend(CPApp,"currentEvent"),_5a),_5c={x:0,y:0}; +_5c.x=((_59.origin.x)+_5a.x)+(_58.x-_mouseDownLocation.x); +_5c.y=(_59.origin.y)+_5a.y; +objj_msgSend(_55,"dragView:at:offset:event:pasteboard:source:slideBack:",_5b,_5c,{width:0,height:0},objj_msgSend(CPApp,"currentEvent"),objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),_55,YES); +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("_shouldStopTrackingTableColumn:at:"),function(_5d,_5e,_5f,_60){ +with(_5d){ +return _isTrackingColumn&&_activeColumn===_5f&&(_60.x>=(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.x)&&_60.y>=(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.y)&&_60.x<(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.x+objj_msgSend(_5d,"headerRectOfColumn:",_5f).size.width)&&_60.y<(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.y+objj_msgSend(_5d,"headerRectOfColumn:",_5f).size.height)); +} +}),new objj_method(sel_getUid("stopTrackingTableColumn:at:"),function(_61,_62,_63,_64){ +with(_61){ +objj_msgSend(_61,"_setPressedColumn:",CPNotFound); +objj_msgSend(_61,"_updateResizeCursor:",objj_msgSend(CPApp,"currentEvent")); +} +}),new objj_method(sel_getUid("_shouldDragTableColumn:at:"),function(_65,_66,_67,_68){ +with(_65){ +return objj_msgSend(_tableView,"allowsColumnReordering")&&ABS(_68.x-_mouseDownLocation.x)>=10; +} +}),new objj_method(sel_getUid("_headerRectOfLastVisibleColumn"),function(_69,_6a){ +with(_69){ +var _6b=objj_msgSend(_tableView,"tableColumns"),_6c=objj_msgSend(_6b,"count"); +while(_6c--){ +var _6d=objj_msgSend(_6b,"objectAtIndex:",_6c); +if(!objj_msgSend(_6d,"isHidden")){ +return objj_msgSend(_69,"headerRectOfColumn:",_6c); +} +} +return nil; +} +}),new objj_method(sel_getUid("_constrainDragView:at:"),function(_6e,_6f,_70,_71){ +with(_6e){ +var _72=objj_msgSend(_tableView,"tableColumns"),_73=objj_msgSend(_6e,"_headerRectOfLastVisibleColumn"),_74=objj_msgSend(_6e,"headerRectOfColumn:",_activeColumn),_75=objj_msgSend(_70,"window"),_76=objj_msgSend(_75,"frame"); +_76.origin=objj_msgSend(objj_msgSend(_6e,"window"),"convertGlobalToBase:",_76.origin); +_76.origin=objj_msgSend(_6e,"convertPoint:fromView:",_76.origin,nil); +_76.origin.x=MAX(0,MIN((_76.origin.x),(_73.origin.x+_73.size.width)-(_74.size.width))); +_76.origin.y=(_73.origin.y); +_76.origin=objj_msgSend(_6e,"convertPoint:toView:",_76.origin,nil); +_76.origin=objj_msgSend(objj_msgSend(_6e,"window"),"convertBaseToGlobal:",_76.origin); +objj_msgSend(_75,"setFrame:",_76); +} +}),new objj_method(sel_getUid("_moveColumn:toColumn:"),function(_77,_78,_79,_7a){ +with(_77){ +objj_msgSend(_tableView,"moveColumn:toColumn:",_79,_7a); +_activeColumn=_7a; +_pressedColumn=_activeColumn; +} +}),new objj_method(sel_getUid("draggedView:beganAt:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +_isDragging=YES; +var _7f=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_activeColumn); +objj_msgSend(objj_msgSend(_7f,"headerView"),"setHidden:",YES); +objj_msgSend(_tableView,"_setDraggedColumn:",_7f); +objj_msgSend(_7b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("draggedView:movedTo:"),function(_80,_81,_82,_83){ +with(_80){ +objj_msgSend(_80,"_constrainDragView:at:",_82,_83); +var _84=objj_msgSend(_82,"window"),_85=objj_msgSend(_84,"frame"); +var _86=CGPointCreateCopy(_83); +if(_83.x<_previousTrackingLocation.x){ +_86={x:(_85.origin.x),y:(_85.origin.y)}; +}else{ +if(_83.x>_previousTrackingLocation.x){ +_86={x:(_85.origin.x+_85.size.width),y:(_85.origin.y)}; +} +} +_86=objj_msgSend(objj_msgSend(_80,"window"),"convertGlobalToBase:",_86); +_86=objj_msgSend(_80,"convertPoint:fromView:",_86,nil); +var _87=objj_msgSend(_80,"columnAtPoint:",_86); +if(_87!==-1){ +var _88=objj_msgSend(_80,"headerRectOfColumn:",_87),_89=objj_msgSend(_80,"convertPoint:fromView:",CGPointMake((_88.origin.x+(_88.size.width)/2),(_88.origin.y+(_88.size.height)/2)),_80); +if(_87<_activeColumn&&_86.x<_89.x){ +objj_msgSend(_80,"_moveColumn:toColumn:",_activeColumn,_87); +}else{ +if(_87>_activeColumn&&_86.x>_89.x){ +objj_msgSend(_80,"_moveColumn:toColumn:",_activeColumn,_87); +} +} +} +_previousTrackingLocation=_83; +} +}),new objj_method(sel_getUid("draggedView:endedAt:operation:"),function(_8a,_8b,_8c,_8d,_8e){ +with(_8a){ +_isDragging=NO; +_isTrackingColumn=NO; +objj_msgSend(_tableView,"_setDraggedColumn:",nil); +objj_msgSend(objj_msgSend(objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_activeColumn),"headerView"),"setHidden:",NO); +objj_msgSend(_8a,"stopTrackingTableColumn:at:",_activeColumn,_8d); +objj_msgSend(_8a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("shouldResizeTableColumn:at:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_isResizing){ +return YES; +} +if(_isTrackingColumn){ +return NO; +} +return objj_msgSend(_tableView,"allowsColumnResizing")&&(_92.x>=(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.x)&&_92.y>=(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.y)&&_92.x<(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.x+objj_msgSend(_8f,"_cursorRectForColumn:",_91).size.width)&&_92.y<(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.y+objj_msgSend(_8f,"_cursorRectForColumn:",_91).size.height)); +} +}),new objj_method(sel_getUid("startResizingTableColumn:at:"),function(_93,_94,_95,_96){ +with(_93){ +_isResizing=YES; +var _97=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_95); +objj_msgSend(_97,"setDisableResizingPosting:",YES); +objj_msgSend(_tableView,"setDisableAutomaticResizing:",YES); +} +}),new objj_method(sel_getUid("continueResizingTableColumn:at:"),function(_98,_99,_9a,_9b){ +with(_98){ +var _9c=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_9a),_9d=objj_msgSend(_9c,"width")+_9b.x-_previousTrackingLocation.x; +if(_9d<objj_msgSend(_9c,"minWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeRightCursor"),"set"); +}else{ +if(_9d>objj_msgSend(_9c,"maxWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftCursor"),"set"); +}else{ +_tableView._lastColumnShouldSnap=NO; +objj_msgSend(_9c,"setWidth:",_9d); +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftRightCursor"),"set"); +objj_msgSend(_98,"setNeedsLayout"); +objj_msgSend(_98,"setNeedsDisplay:",YES); +} +} +} +}),new objj_method(sel_getUid("stopResizingTableColumn:at:"),function(_9e,_9f,_a0,_a1){ +with(_9e){ +var _a2=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_a0); +objj_msgSend(_a2,"_postDidResizeNotificationWithOldWidth:",_columnOldWidth); +objj_msgSend(_a2,"setDisableResizingPosting:",NO); +objj_msgSend(_tableView,"setDisableAutomaticResizing:",NO); +_isResizing=NO; +} +}),new objj_method(sel_getUid("_updateResizeCursor:"),function(_a3,_a4,_a5){ +with(_a3){ +if(!objj_msgSend(_tableView,"allowsColumnResizing")||(objj_msgSend(_a5,"type")===CPLeftMouseUp&&!objj_msgSend(objj_msgSend(_a3,"window"),"acceptsMouseMovedEvents"))){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +return; +} +var _a6=objj_msgSend(_a3,"convertPoint:fromView:",objj_msgSend(_a5,"locationInWindow"),nil),_a7=CGPointMake(_a6.x-5,_a6.y),_a8=objj_msgSend(_a3,"columnAtPoint:",_a7); +if(_a8>=0&&(_a6.x>=(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.x)&&_a6.y>=(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.y)&&_a6.x<(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.x+objj_msgSend(_a3,"_cursorRectForColumn:",_a8).size.width)&&_a6.y<(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.y+objj_msgSend(_a3,"_cursorRectForColumn:",_a8).size.height))){ +var _a9=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_a8),_aa=objj_msgSend(_a9,"width"); +if(_aa==objj_msgSend(_a9,"minWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeRightCursor"),"set"); +}else{ +if(_aa==objj_msgSend(_a9,"maxWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftCursor"),"set"); +}else{ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftRightCursor"),"set"); +} +} +}else{ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_ab,_ac,_ad){ +with(_ab){ +objj_msgSend(_ab,"_updateResizeCursor:",_ad); +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_ae,_af,_b0){ +with(_ae){ +objj_msgSend(_ae,"_updateResizeCursor:",_b0); +} +}),new objj_method(sel_getUid("mouseExited:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_b4,_b5){ +with(_b4){ +var _b6=objj_msgSend(_tableView,"tableColumns"),_b7=objj_msgSend(_b6,"count"); +for(var i=0;i<_b7;i++){ +var _b8=objj_msgSend(_b6,"objectAtIndex:",i),_b9=objj_msgSend(_b8,"headerView"); +var _ba=objj_msgSend(_b4,"headerRectOfColumn:",i); +_ba.size.height-=0.5; +if(i>0){ +_ba.origin.x+=0.5; +_ba.size.width-=1; +} +objj_msgSend(_b9,"setFrame:",_ba); +if(objj_msgSend(_b9,"superview")!=_b4){ +objj_msgSend(_b4,"addSubview:",_b9); +} +} +objj_msgSend(_b4,"setBackgroundColor:",objj_msgSend(_b4,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("drawRect:"),function(_bb,_bc,_bd){ +with(_bb){ +if(!_tableView||!objj_msgSend(_bb,"drawsColumnLines")){ +return; +} +var _be=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_bf=objj_msgSend(_tableView,"columnIndexesInRect:",_bd),_c0=[],_c1=objj_msgSend(_tableView,"tableColumns"),_c2=_tableView._exposedColumns,_c3=objj_msgSend(_c2,"firstIndex"),_c4=CPMakeRange(_c3,objj_msgSend(_c2,"lastIndex")-_c3+1); +CGContextSetLineWidth(_be,1); +CGContextSetStrokeColor(_be,objj_msgSend(_bb,"currentValueForThemeAttribute:","divider-color")); +objj_msgSend(_bf,"getIndexes:maxCount:inIndexRange:",_c0,-1,_c4); +var _c5=0,_c6=_c0.length,_c7; +CGContextBeginPath(_be); +for(;_c5<_c6;_c5++){ +var _c8=_c0[_c5],_c9=objj_msgSend(_bb,"headerRectOfColumn:",_c8); +_c7=(_c9.origin.x+_c9.size.width); +CGContextMoveToPoint(_be,ROUND(_c7)+0.5,ROUND((_c9.origin.y))); +CGContextAddLineToPoint(_be,ROUND(_c7)+0.5,ROUND((_c9.origin.y+_c9.size.height))); +} +CGContextClosePath(_be); +CGContextStrokePath(_be); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_ca,_cb){ +with(_ca){ +return "tableHeaderRow"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_cc,_cd){ +with(_cc){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPColor,"grayColor")],["background-color","divider-color"]); +} +})]); +var _ce="CPTableHeaderViewTableViewKey",_cf="CPTableHeaderViewDrawsColumnLines"; +var _1=objj_getClass("CPTableHeaderView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableHeaderView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_d0,_d1,_d2){ +with(_d0){ +if(_d0=objj_msgSendSuper({receiver:_d0,super_class:objj_getClass("CPTableHeaderView").super_class},"initWithCoder:",_d2)){ +objj_msgSend(_d0,"_init"); +_tableView=objj_msgSend(_d2,"decodeObjectForKey:",_ce); +_drawsColumnLines=objj_msgSend(_d2,"decodeBoolForKey:",_cf); +} +return _d0; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_d3,_d4,_d5){ +with(_d3){ +objj_msgSendSuper({receiver:_d3,super_class:objj_getClass("CPTableHeaderView").super_class},"encodeWithCoder:",_d5); +objj_msgSend(_d5,"encodeObject:forKey:",_tableView,_ce); +objj_msgSend(_d5,"encodeBool:forKey:",_drawsColumnLines,_cf); +} +})]); +p;13;CPTableView.jt;95837;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;AppKit/CGGradient.ji;11;CPControl.ji;15;CPTableColumn.ji;15;_CPCornerView.ji;12;CPScroller.jt;95695; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("AppKit/CGGradient.j",NO); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("_CPCornerView.j",YES); +objj_executeFile("CPScroller.j",YES); +CPTableViewColumnDidMoveNotification="CPTableViewColumnDidMoveNotification"; +CPTableViewColumnDidResizeNotification="CPTableViewColumnDidResizeNotification"; +CPTableViewSelectionDidChangeNotification="CPTableViewSelectionDidChangeNotification"; +CPTableViewSelectionIsChangingNotification="CPTableViewSelectionIsChangingNotification"; +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5,_7=1<<6,_8=1<<7; +var _9=1<<0,_a=1<<1,_b=1<<2,_c=1<<3,_d=1<<4,_e=1<<5,_f=1<<6,_10=1<<7,_11=1<<8,_12=1<<9,_13=1<<10,_14=1<<11,_15=1<<12,_16=1<<13,_17=1<<14,_18=1<<15,_19=1<<16,_1a=1<<17,_1b=1<<18,_1c=1<<19; +CPTableViewDraggingDestinationFeedbackStyleNone=-1; +CPTableViewDraggingDestinationFeedbackStyleRegular=0; +CPTableViewDraggingDestinationFeedbackStyleSourceList=1; +CPTableViewDropOn=0; +CPTableViewDropAbove=1; +CPSourceListGradient="CPSourceListGradient"; +CPSourceListTopLineColor="CPSourceListTopLineColor"; +CPSourceListBottomLineColor="CPSourceListBottomLineColor"; +CPTableViewSelectionHighlightStyleNone=-1; +CPTableViewSelectionHighlightStyleRegular=0; +CPTableViewSelectionHighlightStyleSourceList=1; +CPTableViewGridNone=0; +CPTableViewSolidVerticalGridLineMask=1<<0; +CPTableViewSolidHorizontalGridLineMask=1<<1; +CPTableViewNoColumnAutoresizing=0; +CPTableViewUniformColumnAutoresizingStyle=1; +CPTableViewSequentialColumnAutoresizingStyle=2; +CPTableViewReverseSequentialColumnAutoresizingStyle=3; +CPTableViewLastColumnOnlyAutoresizingStyle=4; +CPTableViewFirstColumnOnlyAutoresizingStyle=5; +var _1d=objj_allocateClassPair(CPView,"_CPTableDrawView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_tableView")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("initWithTableView:"),function(_1f,_20,_21){ +with(_1f){ +_1f=objj_msgSendSuper({receiver:_1f,super_class:objj_getClass("_CPTableDrawView").super_class},"init"); +if(_1f){ +_tableView=_21; +} +return _1f; +} +}),new objj_method(sel_getUid("drawRect:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_22,"frame"),_26=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextTranslateCTM(_26,-(_25.origin.x),-(_25.origin.y)); +objj_msgSend(_tableView,"_drawRect:",_24); +} +})]); +var _1d=objj_allocateClassPair(CPControl,"CPTableView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_dataSource"),new objj_ivar("_implementedDataSourceMethods"),new objj_ivar("_delegate"),new objj_ivar("_implementedDelegateMethods"),new objj_ivar("_tableColumns"),new objj_ivar("_tableColumnRanges"),new objj_ivar("_dirtyTableColumnRangeIndex"),new objj_ivar("_numberOfHiddenColumns"),new objj_ivar("_reloadAllRows"),new objj_ivar("_objectValues"),new objj_ivar("_exposedRows"),new objj_ivar("_exposedColumns"),new objj_ivar("_dataViewsForTableColumns"),new objj_ivar("_cachedDataViews"),new objj_ivar("_allowsColumnReordering"),new objj_ivar("_allowsColumnResizing"),new objj_ivar("_allowsColumnSelection"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_sortDescriptors"),new objj_ivar("_intercellSpacing"),new objj_ivar("_rowHeight"),new objj_ivar("_usesAlternatingRowBackgroundColors"),new objj_ivar("_alternatingRowBackgroundColors"),new objj_ivar("_selectionHighlightStyle"),new objj_ivar("_currentHighlightedTableColumn"),new objj_ivar("_gridStyleMask"),new objj_ivar("_numberOfRows"),new objj_ivar("_headerView"),new objj_ivar("_cornerView"),new objj_ivar("_selectedColumnIndexes"),new objj_ivar("_selectedRowIndexes"),new objj_ivar("_selectionAnchorRow"),new objj_ivar("_lastSelectedRow"),new objj_ivar("_previouslySelectedRowIndexes"),new objj_ivar("_startTrackingPoint"),new objj_ivar("_startTrackingTimestamp"),new objj_ivar("_trackingPointMovedOutOfClickSlop"),new objj_ivar("_editingCellIndex"),new objj_ivar("_tableDrawView"),new objj_ivar("_doubleAction"),new objj_ivar("_clickedRow"),new objj_ivar("_columnAutoResizingStyle"),new objj_ivar("_lastTrackedRowIndex"),new objj_ivar("_originalMouseDownPoint"),new objj_ivar("_verticalMotionCanDrag"),new objj_ivar("_destinationDragStyle"),new objj_ivar("_isSelectingSession"),new objj_ivar("_draggedRowIndexes"),new objj_ivar("_dropOperationFeedbackView"),new objj_ivar("_dragOperationDefaultMask"),new objj_ivar("_retargetedDropRow"),new objj_ivar("_retargetedDropOperation"),new objj_ivar("_disableAutomaticResizing"),new objj_ivar("_lastColumnShouldSnap"),new objj_ivar("_implementsCustomDrawRow"),new objj_ivar("_draggedColumn"),new objj_ivar("_differedColumnDataToRemove")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("disableAutomaticResizing"),function(_27,_28){ +with(_27){ +return _disableAutomaticResizing; +} +}),new objj_method(sel_getUid("setDisableAutomaticResizing:"),function(_29,_2a,_2b){ +with(_29){ +_disableAutomaticResizing=_2b; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_2c,_2d,_2e){ +with(_2c){ +_2c=objj_msgSendSuper({receiver:_2c,super_class:objj_getClass("CPTableView").super_class},"initWithFrame:",_2e); +if(_2c){ +_allowsColumnReordering=YES; +_allowsColumnResizing=YES; +_allowsMultipleSelection=NO; +_allowsEmptySelection=YES; +_allowsColumnSelection=NO; +_disableAutomaticResizing=NO; +_selectionHighlightStyle=CPTableViewSelectionHighlightStyleRegular; +objj_msgSend(_2c,"setUsesAlternatingRowBackgroundColors:",NO); +objj_msgSend(_2c,"setAlternatingRowBackgroundColors:",[objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",245/255,249/255,252/255,1)]); +_tableColumns=[]; +_tableColumnRanges=[]; +_dirtyTableColumnRangeIndex=CPNotFound; +_numberOfHiddenColumns=0; +_intercellSpacing={width:3,height:2}; +_rowHeight=23; +objj_msgSend(_2c,"setGridColor:",objj_msgSend(CPColor,"colorWithHexString:","dce0e2")); +objj_msgSend(_2c,"setGridStyleMask:",CPTableViewGridNone); +_headerView=objj_msgSend(objj_msgSend(CPTableHeaderView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(_2c,"bounds").size.width,_rowHeight)); +objj_msgSend(_headerView,"setTableView:",_2c); +_cornerView=nil; +_lastSelectedRow=-1; +_currentHighlightedTableColumn=nil; +_sortDescriptors=objj_msgSend(CPArray,"array"); +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_verticalMotionCanDrag=YES; +_isSelectingSession=NO; +_retargetedDropRow=nil; +_retargetedDropOperation=nil; +_dragOperationDefaultMask=nil; +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleRegular; +objj_msgSend(_2c,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_2c,"_init"); +} +return _2c; +} +}),new objj_method(sel_getUid("_init"),function(_2f,_30){ +with(_2f){ +_tableViewFlags=0; +_selectedColumnIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_selectedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_dropOperationFeedbackView=objj_msgSend(objj_msgSend(_CPDropOperationDrawingView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_dropOperationFeedbackView,"setTableView:",_2f); +_lastColumnShouldSnap=NO; +if(!_alternatingRowBackgroundColors){ +_alternatingRowBackgroundColors=[objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"colorWithHexString:","e4e7ff")]; +} +_selectionHighlightColor=objj_msgSend(CPColor,"colorWithHexString:","5f83b9"); +_tableColumnRanges=[]; +_dirtyTableColumnRangeIndex=0; +_numberOfHiddenColumns=0; +_objectValues={}; +_dataViewsForTableColumns={}; +_dataViews=[]; +_numberOfRows=0; +_exposedRows=objj_msgSend(CPIndexSet,"indexSet"); +_exposedColumns=objj_msgSend(CPIndexSet,"indexSet"); +_cachedDataViews={}; +_tableDrawView=objj_msgSend(objj_msgSend(_CPTableDrawView,"alloc"),"initWithTableView:",_2f); +objj_msgSend(_tableDrawView,"setBackgroundColor:",objj_msgSend(CPColor,"clearColor")); +objj_msgSend(_2f,"addSubview:",_tableDrawView); +if(!_headerView){ +_headerView=objj_msgSend(objj_msgSend(CPTableHeaderView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(_2f,"bounds").size.width,_rowHeight)); +} +objj_msgSend(_headerView,"setTableView:",_2f); +if(!_cornerView){ +_cornerView=objj_msgSend(objj_msgSend(_CPCornerView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(CPScroller,"scrollerWidth"),CGRectGetHeight(objj_msgSend(_headerView,"frame")))); +} +_draggedColumn=nil; +_differedColumnDataToRemove=[]; +_implementsCustomDrawRow=objj_msgSend(_2f,"implementsSelector:",sel_getUid("drawRow:clipRect:")); +} +}),new objj_method(sel_getUid("setDataSource:"),function(_31,_32,_33){ +with(_31){ +if(_dataSource===_33){ +return; +} +_dataSource=_33; +_implementedDataSourceMethods=0; +if(!_dataSource){ +return; +} +var _34=!!objj_msgSend(_31,"infoForBinding:","content"); +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("numberOfRowsInTableView:"))){ +_implementedDataSourceMethods|=_1; +}else{ +if(!_34){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(_33,"description")+" does not implement numberOfRowsInTableView:."); +} +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:objectValueForTableColumn:row:"))){ +_implementedDataSourceMethods|=_2; +}else{ +if(!_34){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(_33,"description")+" does not implement tableView:objectValueForTableColumn:row:"); +} +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:setObjectValue:forTableColumn:row:"))){ +_implementedDataSourceMethods|=_3; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:acceptDrop:row:dropOperation:"))){ +_implementedDataSourceMethods|=_4; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:"))){ +_implementedDataSourceMethods|=_5; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"))){ +_implementedDataSourceMethods|=_6; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"))){ +_implementedDataSourceMethods|=_7; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:sortDescriptorsDidChange:"))){ +_implementedDataSourceMethods|=_8; +} +objj_msgSend(_31,"reloadData"); +} +}),new objj_method(sel_getUid("dataSource"),function(_35,_36){ +with(_35){ +return _dataSource; +} +}),new objj_method(sel_getUid("reloadDataForRowIndexes:columnIndexes:"),function(_37,_38,_39,_3a){ +with(_37){ +objj_msgSend(_37,"reloadData"); +} +}),new objj_method(sel_getUid("reloadData"),function(_3b,_3c){ +with(_3b){ +_reloadAllRows=YES; +_objectValues={}; +objj_msgSend(_3b,"noteNumberOfRowsChanged"); +objj_msgSend(_3b,"setNeedsLayout"); +objj_msgSend(_3b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setDoubleAction:"),function(_3d,_3e,_3f){ +with(_3d){ +_doubleAction=_3f; +} +}),new objj_method(sel_getUid("doubleAction"),function(_40,_41){ +with(_40){ +return _doubleAction; +} +}),new objj_method(sel_getUid("clickedRow"),function(_42,_43){ +with(_42){ +return _clickedRow; +} +}),new objj_method(sel_getUid("setAllowsColumnReordering:"),function(_44,_45,_46){ +with(_44){ +_allowsColumnReordering=!!_46; +} +}),new objj_method(sel_getUid("allowsColumnReordering"),function(_47,_48){ +with(_47){ +return _allowsColumnReordering; +} +}),new objj_method(sel_getUid("setAllowsColumnResizing:"),function(_49,_4a,_4b){ +with(_49){ +_allowsColumnResizing=!!_4b; +} +}),new objj_method(sel_getUid("allowsColumnResizing"),function(_4c,_4d){ +with(_4c){ +return _allowsColumnResizing; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_4e,_4f,_50){ +with(_4e){ +_allowsMultipleSelection=!!_50; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_51,_52){ +with(_51){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_53,_54,_55){ +with(_53){ +_allowsEmptySelection=!!_55; +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_56,_57){ +with(_56){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsColumnSelection:"),function(_58,_59,_5a){ +with(_58){ +_allowsColumnSelection=!!_5a; +} +}),new objj_method(sel_getUid("allowsColumnSelection"),function(_5b,_5c){ +with(_5b){ +return _allowsColumnSelection; +} +}),new objj_method(sel_getUid("setIntercellSpacing:"),function(_5d,_5e,_5f){ +with(_5d){ +if((_intercellSpacing.width==_5f.width&&_intercellSpacing.height==_5f.height)){ +return; +} +_intercellSpacing={width:_5f.width,height:_5f.height}; +_dirtyTableColumnRangeIndex=0; +objj_msgSend(_5d,"_recalculateTableColumnRanges"); +objj_msgSend(_5d,"setNeedsLayout"); +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +objj_msgSend(_headerView,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setThemeState:"),function(_60,_61,_62){ +with(_60){ +} +}),new objj_method(sel_getUid("intercellSpacing"),function(_63,_64){ +with(_63){ +return {width:_intercellSpacing.width,height:_intercellSpacing.height}; +} +}),new objj_method(sel_getUid("setRowHeight:"),function(_65,_66,_67){ +with(_65){ +_67=+_67; +if(_rowHeight===_67){ +return; +} +_rowHeight=MAX(0,_67); +objj_msgSend(_65,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("rowHeight"),function(_68,_69){ +with(_68){ +return _rowHeight; +} +}),new objj_method(sel_getUid("setUsesAlternatingRowBackgroundColors:"),function(_6a,_6b,_6c){ +with(_6a){ +_usesAlternatingRowBackgroundColors=_6c; +} +}),new objj_method(sel_getUid("usesAlternatingRowBackgroundColors"),function(_6d,_6e){ +with(_6d){ +return _usesAlternatingRowBackgroundColors; +} +}),new objj_method(sel_getUid("setAlternatingRowBackgroundColors:"),function(_6f,_70,_71){ +with(_6f){ +objj_msgSend(_6f,"setValue:forThemeAttribute:",_71,"alternating-row-colors"); +objj_msgSend(_6f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("alternatingRowBackgroundColors"),function(_72,_73){ +with(_72){ +return objj_msgSend(_72,"currentValueForThemeAttribute:","alternating-row-colors"); +} +}),new objj_method(sel_getUid("selectionHighlightStyle"),function(_74,_75){ +with(_74){ +return _selectionHighlightStyle; +} +}),new objj_method(sel_getUid("setSelectionHighlightStyle:"),function(_76,_77,_78){ +with(_76){ +if(_78==CPTableViewSelectionHighlightStyleSourceList&&!CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +return; +} +_selectionHighlightStyle=_78; +objj_msgSend(_76,"setNeedsDisplay:",YES); +if(_78===CPTableViewSelectionHighlightStyleSourceList){ +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleSourceList; +}else{ +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleRegular; +} +} +}),new objj_method(sel_getUid("setSelectionHighlightColor:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"setValue:forThemeAttribute:",_7b,"selection-color"); +objj_msgSend(_79,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("selectionHighlightColor"),function(_7c,_7d){ +with(_7c){ +return objj_msgSend(_7c,"currentValueForThemeAttribute:","selection-color"); +} +}),new objj_method(sel_getUid("setSelectionGradientColors:"),function(_7e,_7f,_80){ +with(_7e){ +objj_msgSend(_7e,"setValue:forThemeAttribute:",_80,"sourcelist-selection-color"); +objj_msgSend(_7e,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("selectionGradientColors"),function(_81,_82){ +with(_81){ +return objj_msgSend(_81,"currentValueForThemeAttribute:","sourcelist-selection-color"); +} +}),new objj_method(sel_getUid("setGridColor:"),function(_83,_84,_85){ +with(_83){ +objj_msgSend(_83,"setValue:forThemeAttribute:",_85,"grid-color"); +objj_msgSend(_83,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("gridColor"),function(_86,_87){ +with(_86){ +return objj_msgSend(_86,"currentValueForThemeAttribute:","grid-color"); +} +}),new objj_method(sel_getUid("setGridStyleMask:"),function(_88,_89,_8a){ +with(_88){ +if(_gridStyleMask===_8a){ +return; +} +_gridStyleMask=_8a; +objj_msgSend(_88,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("gridStyleMask"),function(_8b,_8c){ +with(_8b){ +return _gridStyleMask; +} +}),new objj_method(sel_getUid("addTableColumn:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_tableColumns,"addObject:",_8f); +objj_msgSend(_8f,"setTableView:",_8d); +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=(_tableColumns.length)-1; +}else{ +_dirtyTableColumnRangeIndex=MIN((_tableColumns.length)-1,_dirtyTableColumnRangeIndex); +} +objj_msgSend(_8d,"tile"); +objj_msgSend(_8d,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeTableColumn:"),function(_90,_91,_92){ +with(_90){ +if(objj_msgSend(_92,"tableView")!==_90){ +return; +} +var _93=objj_msgSend(_tableColumns,"indexOfObjectIdenticalTo:",_92); +if(_93===CPNotFound){ +return; +} +objj_msgSend(_differedColumnDataToRemove,"addObject:",{"column":_92,"shouldBeHidden":objj_msgSend(_92,"isHidden")}); +objj_msgSend(_92,"setHidden:",YES); +objj_msgSend(_92,"setTableView:",nil); +var _94=objj_msgSend(_92,"UID"); +if(_objectValues[_94]){ +_objectValues[_94]=nil; +} +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=_93; +}else{ +_dirtyTableColumnRangeIndex=MIN(_93,_dirtyTableColumnRangeIndex); +} +objj_msgSend(_90,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("_setDraggedColumn:"),function(_95,_96,_97){ +with(_95){ +if(_draggedColumn===_97){ +return; +} +_draggedColumn=_97; +objj_msgSend(_95,"reloadDataForRowIndexes:columnIndexes:",_exposedRows,objj_msgSend(CPIndexSet,"indexSetWithIndex:",objj_msgSend(_tableColumns,"indexOfObject:",_97))); +} +}),new objj_method(sel_getUid("moveColumn:toColumn:"),function(_98,_99,_9a,_9b){ +with(_98){ +_9a=+_9a; +_9b=+_9b; +if(_9a===_9b){ +return; +} +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=MIN(_9a,_9b); +}else{ +_dirtyTableColumnRangeIndex=MIN(_9a,_9b,_dirtyTableColumnRangeIndex); +} +var _9c=_tableColumns[_9a]; +objj_msgSend(_tableColumns,"removeObjectAtIndex:",_9a); +objj_msgSend(_tableColumns,"insertObject:atIndex:",_9c,_9b); +objj_msgSend(objj_msgSend(_98,"headerView"),"setNeedsLayout"); +objj_msgSend(objj_msgSend(_98,"headerView"),"setNeedsDisplay:",YES); +var _9d=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_98,"numberOfRows"))),_9e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_9a,_9b)); +objj_msgSend(_98,"reloadDataForRowIndexes:columnIndexes:",_9d,_9e); +} +}),new objj_method(sel_getUid("_tableColumnVisibilityDidChange:"),function(_9f,_a0,_a1){ +with(_9f){ +var _a2=objj_msgSend(objj_msgSend(_9f,"tableColumns"),"indexOfObjectIdenticalTo:",_a1); +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=_a2; +}else{ +_dirtyTableColumnRangeIndex=MIN(_a2,_dirtyTableColumnRangeIndex); +} +objj_msgSend(objj_msgSend(_9f,"headerView"),"setNeedsLayout"); +objj_msgSend(objj_msgSend(_9f,"headerView"),"setNeedsDisplay:",YES); +var _a3=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_9f,"numberOfRows"))); +objj_msgSend(_9f,"reloadDataForRowIndexes:columnIndexes:",_a3,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_a2)); +} +}),new objj_method(sel_getUid("tableColumns"),function(_a4,_a5){ +with(_a4){ +return _tableColumns; +} +}),new objj_method(sel_getUid("columnWithIdentifier:"),function(_a6,_a7,_a8){ +with(_a6){ +var _a9=0,_aa=(_tableColumns.length); +for(;_a9<_aa;++_a9){ +if(objj_msgSend(_tableColumns[_a9],"identifier")===_a8){ +return _a9; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tableColumnWithIdentifier:"),function(_ab,_ac,_ad){ +with(_ab){ +var _ae=objj_msgSend(_ab,"columnWithIdentifier:",_ad); +if(_ae===CPNotFound){ +return nil; +} +return _tableColumns[_ae]; +} +}),new objj_method(sel_getUid("selectColumnIndexes:byExtendingSelection:"),function(_af,_b0,_b1,_b2){ +with(_af){ +if((objj_msgSend(_b1,"firstIndex")!=CPNotFound&&objj_msgSend(_b1,"firstIndex")<0)||objj_msgSend(_b1,"lastIndex")>=objj_msgSend(_af,"numberOfColumns")){ +return; +} +if(objj_msgSend(_selectedRowIndexes,"count")>0){ +objj_msgSend(_af,"_updateHighlightWithOldRows:newRows:",_selectedRowIndexes,objj_msgSend(CPIndexSet,"indexSet")); +_selectedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +} +var _b3=objj_msgSend(_selectedColumnIndexes,"copy"); +if(_b2){ +objj_msgSend(_selectedColumnIndexes,"addIndexes:",_b1); +}else{ +_selectedColumnIndexes=objj_msgSend(_b1,"copy"); +} +objj_msgSend(_af,"_updateHighlightWithOldColumns:newColumns:",_b3,_selectedColumnIndexes); +objj_msgSend(_af,"setNeedsDisplay:",YES); +if(_headerView){ +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +} +objj_msgSend(_af,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("_setSelectedRowIndexes:"),function(_b4,_b5,_b6){ +with(_b4){ +if(objj_msgSend(_selectedRowIndexes,"isEqualToIndexSet:",_b6)){ +return; +} +var _b7=_selectedRowIndexes; +_lastSelectedRow=(objj_msgSend(_b6,"count")>0)?objj_msgSend(_b6,"lastIndex"):-1; +_selectedRowIndexes=objj_msgSend(_b6,"copy"); +objj_msgSend(_b4,"_updateHighlightWithOldRows:newRows:",_b7,_selectedRowIndexes); +objj_msgSend(_b4,"setNeedsDisplay:",YES); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_b4),"reverseSetValueFor:","selectedRowIndexes"); +objj_msgSend(_b4,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("selectRowIndexes:byExtendingSelection:"),function(_b8,_b9,_ba,_bb){ +with(_b8){ +if(objj_msgSend(_ba,"isEqualToIndexSet:",_selectedRowIndexes)||((objj_msgSend(_ba,"firstIndex")!=CPNotFound&&objj_msgSend(_ba,"firstIndex")<0)||objj_msgSend(_ba,"lastIndex")>=objj_msgSend(_b8,"numberOfRows"))){ +return; +} +if(objj_msgSend(_selectedColumnIndexes,"count")>0){ +objj_msgSend(_b8,"_updateHighlightWithOldColumns:newColumns:",_selectedColumnIndexes,objj_msgSend(CPIndexSet,"indexSet")); +_selectedColumnIndexes=objj_msgSend(CPIndexSet,"indexSet"); +if(_headerView){ +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +} +} +var _bc; +if(_bb){ +_bc=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_bc,"addIndexes:",_ba); +}else{ +_bc=objj_msgSend(_ba,"copy"); +} +objj_msgSend(_b8,"_setSelectedRowIndexes:",_bc); +} +}),new objj_method(sel_getUid("_updateHighlightWithOldRows:newRows:"),function(_bd,_be,_bf,_c0){ +with(_bd){ +var _c1=objj_msgSend(_exposedRows,"firstIndex"),_c2=objj_msgSend(_exposedRows,"lastIndex")-_c1+1,_c3=[],_c4=[],_c5=objj_msgSend(_bf,"copy"),_c6=objj_msgSend(_c0,"copy"); +objj_msgSend(_c5,"removeMatches:",_c6); +objj_msgSend(_c5,"getIndexes:maxCount:inIndexRange:",_c3,-1,CPMakeRange(_c1,_c2)); +objj_msgSend(_c6,"getIndexes:maxCount:inIndexRange:",_c4,-1,CPMakeRange(_c1,_c2)); +for(var _c7 in _dataViewsForTableColumns){ +var _c8=_dataViewsForTableColumns[_c7],_c9=_c3.length; +while(_c9--){ +objj_msgSend(_bd,"_performSelection:forRow:context:",NO,_c3[_c9],_c8); +} +_c9=_c4.length; +while(_c9--){ +objj_msgSend(_bd,"_performSelection:forRow:context:",YES,_c4[_c9],_c8); +} +} +} +}),new objj_method(sel_getUid("_performSelection:forRow:context:"),function(_ca,_cb,_cc,_cd,_ce){ +with(_ca){ +var _cf=_ce[_cd],_d0=_cc?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_cf,"performSelector:withObject:",CPSelectorFromString(_d0),CPThemeStateSelectedDataView); +} +}),new objj_method(sel_getUid("_updateHighlightWithOldColumns:newColumns:"),function(_d1,_d2,_d3,_d4){ +with(_d1){ +var _d5=objj_msgSend(_exposedColumns,"firstIndex"),_d6=objj_msgSend(_exposedColumns,"lastIndex")-_d5+1,_d7=[],_d8=[],_d9=objj_msgSend(_d3,"copy"),_da=objj_msgSend(_d4,"copy"),_db=[]; +objj_msgSend(_d9,"removeMatches:",_da); +objj_msgSend(_d9,"getIndexes:maxCount:inIndexRange:",_d7,-1,CPMakeRange(_d5,_d6)); +objj_msgSend(_da,"getIndexes:maxCount:inIndexRange:",_d8,-1,CPMakeRange(_d5,_d6)); +objj_msgSend(_exposedRows,"getIndexes:maxCount:inIndexRange:",_db,-1,nil); +var _dc=_db.length,_dd=_d7.length; +while(_dd--){ +var _de=_d7[_dd],_df=objj_msgSend(_tableColumns[_de],"UID"),_e0=_dataViewsForTableColumns[_df]; +for(var i=0;i<_dc;i++){ +var _e1=_db[i],_e2=_e0[_e1]; +objj_msgSend(_e2,"unsetThemeState:",CPThemeStateSelectedDataView); +} +if(_headerView){ +var _e3=objj_msgSend(_tableColumns[_de],"headerView"); +objj_msgSend(_e3,"unsetThemeState:",CPThemeStateSelected); +} +} +_dd=_d8.length; +while(_dd--){ +var _de=_d8[_dd],_df=objj_msgSend(_tableColumns[_de],"UID"),_e0=_dataViewsForTableColumns[_df]; +for(var i=0;i<_dc;i++){ +var _e1=_db[i],_e2=_e0[_e1]; +objj_msgSend(_e2,"setThemeState:",CPThemeStateSelectedDataView); +} +if(_headerView){ +var _e3=objj_msgSend(_tableColumns[_de],"headerView"); +objj_msgSend(_e3,"setThemeState:",CPThemeStateSelected); +} +} +} +}),new objj_method(sel_getUid("selectedColumn"),function(_e4,_e5){ +with(_e4){ +objj_msgSend(_selectedColumnIndexes,"lastIndex"); +} +}),new objj_method(sel_getUid("selectedColumnIndexes"),function(_e6,_e7){ +with(_e6){ +return _selectedColumnIndexes; +} +}),new objj_method(sel_getUid("selectedRow"),function(_e8,_e9){ +with(_e8){ +return _lastSelectedRow; +} +}),new objj_method(sel_getUid("selectedRowIndexes"),function(_ea,_eb){ +with(_ea){ +return objj_msgSend(_selectedRowIndexes,"copy"); +} +}),new objj_method(sel_getUid("deselectColumn:"),function(_ec,_ed,_ee){ +with(_ec){ +var _ef=objj_msgSend(_selectedColumnIndexes,"copy"); +objj_msgSend(_ef,"removeIndex:",_ee); +objj_msgSend(_ec,"selectColumnIndexes:byExtendingSelection:",_ef,NO); +objj_msgSend(_ec,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("deselectRow:"),function(_f0,_f1,_f2){ +with(_f0){ +var _f3=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_f3,"removeIndex:",_f2); +objj_msgSend(_f0,"selectRowIndexes:byExtendingSelection:",_f3,NO); +objj_msgSend(_f0,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("numberOfSelectedColumns"),function(_f4,_f5){ +with(_f4){ +return objj_msgSend(_selectedColumnIndexes,"count"); +} +}),new objj_method(sel_getUid("numberOfSelectedRows"),function(_f6,_f7){ +with(_f6){ +return objj_msgSend(_selectedRowIndexes,"count"); +} +}),new objj_method(sel_getUid("isColumnSelected:"),function(_f8,_f9,_fa){ +with(_f8){ +return objj_msgSend(_selectedColumnIndexes,"containsIndex:",_fa); +} +}),new objj_method(sel_getUid("isRowSelected:"),function(_fb,_fc,_fd){ +with(_fb){ +return objj_msgSend(_selectedRowIndexes,"containsIndex:",_fd); +} +}),new objj_method(sel_getUid("deselectAll"),function(_fe,_ff){ +with(_fe){ +objj_msgSend(_fe,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +objj_msgSend(_fe,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +} +}),new objj_method(sel_getUid("numberOfColumns"),function(self,_100){ +with(self){ +return (_tableColumns.length); +} +}),new objj_method(sel_getUid("numberOfRows"),function(self,_101){ +with(self){ +if(_numberOfRows){ +return _numberOfRows; +} +var _102=objj_msgSend(self,"infoForBinding:","content"); +if(_102){ +var _103=objj_msgSend(_102,"objectForKey:",CPObservedObjectKey),_104=objj_msgSend(_102,"objectForKey:",CPObservedKeyPathKey); +return objj_msgSend(objj_msgSend(_103,"valueForKeyPath:",_104),"count"); +}else{ +if(_dataSource){ +return objj_msgSend(_dataSource,"numberOfRowsInTableView:",self); +} +} +return 0; +} +}),new objj_method(sel_getUid("editColumn:row:withEvent:select:"),function(self,_105,_106,_107,_108,flag){ +with(self){ +if(!objj_msgSend(self,"isRowSelected:",_107)){ +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:","Error","Attempt to edit row="+_107+" when not selected.",nil),"raise"); +} +_editingCellIndex=CGPointMake(_106,_107); +objj_msgSend(self,"reloadDataForRowIndexes:columnIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_107),objj_msgSend(CPIndexSet,"indexSetWithIndex:",_106)); +} +}),new objj_method(sel_getUid("editedColumn"),function(self,_109){ +with(self){ +if(!_editingCellIndex){ +return CPNotFound; +} +return _editingCellIndex.x; +} +}),new objj_method(sel_getUid("editedRow"),function(self,_10a){ +with(self){ +if(!_editingCellIndex){ +return CPNotFound; +} +return _editingCellIndex.y; +} +}),new objj_method(sel_getUid("cornerView"),function(self,_10b){ +with(self){ +return _cornerView; +} +}),new objj_method(sel_getUid("setCornerView:"),function(self,_10c,_10d){ +with(self){ +if(_cornerView===_10d){ +return; +} +_cornerView=_10d; +var _10e=objj_msgSend(objj_msgSend(self,"superview"),"superview"); +if(objj_msgSend(_10e,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))&&objj_msgSend(_10e,"documentView")===self){ +objj_msgSend(_10e,"_updateCornerAndHeaderView"); +} +} +}),new objj_method(sel_getUid("headerView"),function(self,_10f){ +with(self){ +return _headerView; +} +}),new objj_method(sel_getUid("setHeaderView:"),function(self,_110,_111){ +with(self){ +if(_headerView===_111){ +return; +} +objj_msgSend(_headerView,"setTableView:",nil); +_headerView=_111; +if(_headerView){ +objj_msgSend(_headerView,"setTableView:",self); +objj_msgSend(_headerView,"setFrameSize:",{width:(objj_msgSend(self,"frame").size.width),height:(objj_msgSend(_headerView,"frame").size.height)}); +} +var _112=objj_msgSend(objj_msgSend(self,"superview"),"superview"); +if(objj_msgSend(_112,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))&&objj_msgSend(_112,"documentView")===self){ +objj_msgSend(_112,"_updateCornerAndHeaderView"); +} +} +}),new objj_method(sel_getUid("_recalculateTableColumnRanges"),function(self,_113){ +with(self){ +if(_dirtyTableColumnRangeIndex<0){ +return; +} +_numberOfHiddenColumns=0; +var _114=_dirtyTableColumnRangeIndex,_115=(_tableColumns.length),x=_114===0?0:CPMaxRange(_tableColumnRanges[_114-1]); +for(;_114<_115;++_114){ +var _116=_tableColumns[_114]; +if(objj_msgSend(_116,"isHidden")){ +_numberOfHiddenColumns+=1; +_tableColumnRanges[_114]=CPMakeRange(x,0); +}else{ +var _117=objj_msgSend(_tableColumns[_114],"width")+_intercellSpacing.width; +_tableColumnRanges[_114]=CPMakeRange(x,_117); +x+=_117; +} +} +_tableColumnRanges.length=_115; +_dirtyTableColumnRangeIndex=CPNotFound; +} +}),new objj_method(sel_getUid("rectOfColumn:"),function(self,_118,_119){ +with(self){ +_119=+_119; +var _11a=objj_msgSend(objj_msgSend(self,"tableColumns"),"objectAtIndex:",_119); +if(objj_msgSend(_11a,"isHidden")||_119<0||_119>=(_tableColumns.length)){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _11b=_tableColumnRanges[_119]; +return {origin:{x:_11b.location,y:0},size:{width:_11b.length,height:CGRectGetHeight(objj_msgSend(self,"bounds"))}}; +} +}),new objj_method(sel_getUid("rectOfRow:"),function(self,_11c,_11d){ +with(self){ +var _11e=_rowHeight+_intercellSpacing.height; +return {origin:{x:0,y:_11d*_11e},size:{width:(objj_msgSend(self,"bounds").size.width),height:_11e}}; +} +}),new objj_method(sel_getUid("rowsInRect:"),function(self,_11f,_120){ +with(self){ +if(_numberOfRows<=0){ +return CPMakeRange(0,0); +} +var _121=objj_msgSend(self,"bounds"); +if(!CGRectIntersectsRect(_120,_121)){ +return CPMakeRange(0,0); +} +var _122=objj_msgSend(self,"rowAtPoint:",_120.origin); +if(_122<0){ +_122=0; +} +var _123=objj_msgSend(self,"rowAtPoint:",{x:0,y:(_120.origin.y+_120.size.height)}); +if(_123<0){ +_123=_numberOfRows-1; +} +return CPMakeRange(_122,_123-_122+1); +} +}),new objj_method(sel_getUid("columnIndexesInRect:"),function(self,_124,_125){ +with(self){ +var _126=MAX(0,objj_msgSend(self,"columnAtPoint:",{x:_125.origin.x,y:0})),_127=objj_msgSend(self,"columnAtPoint:",{x:(_125.origin.x+_125.size.width),y:0}); +if(_127===CPNotFound){ +_127=(_tableColumns.length)-1; +} +if(_numberOfHiddenColumns<=0){ +return objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_126,_127-_126+1)); +} +var _128=objj_msgSend(CPIndexSet,"indexSet"); +for(;_126<=_127;++_126){ +var _129=_tableColumns[_126]; +if(!objj_msgSend(_129,"isHidden")){ +objj_msgSend(_128,"addIndex:",_126); +} +} +return _128; +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(self,_12a,_12b){ +with(self){ +var _12c=objj_msgSend(self,"bounds"); +if(!(_12b.x>=(_12c.origin.x)&&_12b.y>=(_12c.origin.y)&&_12b.x<(_12c.origin.x+_12c.size.width)&&_12b.y<(_12c.origin.y+_12c.size.height))){ +return CPNotFound; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var x=_12b.x,low=0,high=_tableColumnRanges.length-1; +while(low<=high){ +var _12d=FLOOR(low+(high-low)/2),_12e=_tableColumnRanges[_12d]; +if(x<_12e.location){ +high=_12d-1; +}else{ +if(x>=CPMaxRange(_12e)){ +low=_12d+1; +}else{ +var _12f=_tableColumnRanges.length; +while(_12d<_12f&&objj_msgSend(_tableColumns[_12d],"isHidden")){ +++_12d; +} +if(_12d<_12f){ +return _12d; +} +return CPNotFound; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("rowAtPoint:"),function(self,_130,_131){ +with(self){ +var y=_131.y,row=FLOOR(y/(_rowHeight+_intercellSpacing.height)); +if(row>=_numberOfRows){ +return -1; +} +return row; +} +}),new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"),function(self,_132,_133,aRow){ +with(self){ +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _134=_tableColumnRanges[_133],_135=objj_msgSend(self,"rectOfRow:",aRow),_136=FLOOR(_intercellSpacing.width/2),_137=FLOOR(_intercellSpacing.height/2); +return {origin:{x:_134.location+_136,y:(_135.origin.y)+_137},size:{width:_134.length-_intercellSpacing.width,height:(_135.size.height)-_intercellSpacing.height}}; +} +}),new objj_method(sel_getUid("resizeWithOldSuperviewSize:"),function(self,_138,_139){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"resizeWithOldSuperviewSize:",_139); +if(_disableAutomaticResizing){ +return; +} +var mask=_columnAutoResizingStyle; +if(mask===CPTableViewUniformColumnAutoresizingStyle){ +objj_msgSend(self,"_resizeAllColumnUniformlyWithOldSize:",_139); +}else{ +if(mask===CPTableViewLastColumnOnlyAutoresizingStyle){ +objj_msgSend(self,"sizeLastColumnToFit"); +}else{ +if(mask===CPTableViewFirstColumnOnlyAutoresizingStyle){ +objj_msgSend(self,"_autoResizeFirstColumn"); +} +} +} +} +}),new objj_method(sel_getUid("_autoResizeFirstColumn"),function(self,_13a){ +with(self){ +var _13b=objj_msgSend(self,"superview"); +if(!_13b){ +return; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _13c=(_tableColumns.length),_13d=nil,_13e=0,i=0; +for(;i<_13c;i++){ +var _13f=_tableColumns[i]; +if(!objj_msgSend(_13f,"isHidden")){ +if(!_13d){ +_13d=_13f; +} +_13e+=objj_msgSend(_13f,"width")+_intercellSpacing.width; +} +} +if(_13d){ +var _140=objj_msgSend(_13b,"bounds").size,_141=_140.width-_13e; +_141+=objj_msgSend(_13d,"width"); +_141=MAX(objj_msgSend(_13d,"minWidth"),_141); +_141=MIN(objj_msgSend(_13d,"maxWidth"),_141); +objj_msgSend(_13d,"setWidth:",FLOOR(_141)); +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("_resizeAllColumnUniformlyWithOldSize:"),function(self,_142,_143){ +with(self){ +var _144=objj_msgSend(self,"superview"); +if(!_144){ +return; +} +var _145=objj_msgSend(_144,"bounds").size; +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _146=(_tableColumns.length),_147=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"),_148=0; +for(var i=0;i<_146;i++){ +var _149=_tableColumns[i]; +if(!objj_msgSend(_149,"isHidden")&&(objj_msgSend(_149,"resizingMask")&CPTableColumnAutoresizingMask)){ +objj_msgSend(_147,"addObject:",i); +} +} +_146=objj_msgSend(_147,"count"); +if(_146>0){ +var _14a=CGRectGetMaxX(objj_msgSend(self,"rectOfColumn:",_147[_146-1])); +if(!_lastColumnShouldSnap&&(_14a>=_145.width&&_14a<=_143.width||_14a<=_145.width&&_14a>=_143.width)){ +_lastColumnShouldSnap=YES; +objj_msgSend(self,"_resizeAllColumnUniformlyWithOldSize:",CGSizeMake(_14a,0)); +} +if(!_lastColumnShouldSnap){ +return; +} +for(var i=0;i<_146;i++){ +var _14b=_147[i],_14c=_tableColumns[_14b],_14d=_148/(_146-i),_14e=(objj_msgSend(_14c,"width")/_143.width*objj_msgSend(_144,"bounds").size.width)+_14d,_14f=_14e; +_14f=MAX(objj_msgSend(_14c,"minWidth"),_14f); +_14f=MIN(objj_msgSend(_14c,"maxWidth"),_14f); +_148-=_14d; +_148+=_14e-_14f; +objj_msgSend(_14c,"setWidth:",_14f); +} +if(_148!==0){ +_lastColumnShouldSnap=NO; +} +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setColumnAutoresizingStyle:"),function(self,_150,_151){ +with(self){ +_columnAutoResizingStyle=_151; +} +}),new objj_method(sel_getUid("columnAutoresizingStyle"),function(self,_152){ +with(self){ +return _columnAutoResizingStyle; +} +}),new objj_method(sel_getUid("sizeLastColumnToFit"),function(self,_153){ +with(self){ +var _154=objj_msgSend(self,"superview"); +if(!_154){ +return; +} +var _155=objj_msgSend(_154,"bounds").size; +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _156=(_tableColumns.length); +while(_156--&&objj_msgSend(_tableColumns[_156],"isHidden")){ +} +if(_156>=0){ +var _157=_tableColumns[_156],_158=MAX(0,_155.width-CGRectGetMinX(objj_msgSend(self,"rectOfColumn:",_156))-_intercellSpacing.width); +if(_158>0){ +_158=MAX(objj_msgSend(_157,"minWidth"),_158); +_158=MIN(objj_msgSend(_157,"maxWidth"),_158); +objj_msgSend(_157,"setWidth:",_158); +} +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("noteNumberOfRowsChanged"),function(self,_159){ +with(self){ +var _15a=_numberOfRows; +_numberOfRows=nil; +_numberOfRows=objj_msgSend(self,"numberOfRows"); +var _15b=_15a-_numberOfRows; +if(_15b>0){ +objj_msgSend(_selectedRowIndexes,"removeIndexesInRange:",CPMakeRange(_numberOfRows,_15b)); +objj_msgSend(self,"_noteSelectionDidChange"); +} +objj_msgSend(self,"tile"); +} +}),new objj_method(sel_getUid("tile"),function(self,_15c){ +with(self){ +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _15d=_tableColumnRanges.length>0?CPMaxRange(objj_msgSend(_tableColumnRanges,"lastObject")):0,_15e=(_rowHeight+_intercellSpacing.height)*_numberOfRows,_15f=objj_msgSend(self,"superview"); +if(objj_msgSend(_15f,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _160=objj_msgSend(_15f,"bounds").size; +_15d=MAX(_160.width,_15d); +_15e=MAX(_160.height,_15e); +} +objj_msgSend(self,"setFrameSize:",{width:_15d,height:_15e}); +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("scrollRowToVisible:"),function(self,_161,_162){ +with(self){ +objj_msgSend(self,"scrollRectToVisible:",objj_msgSend(self,"rectOfRow:",_162)); +} +}),new objj_method(sel_getUid("scrollColumnToVisible:"),function(self,_163,_164){ +with(self){ +objj_msgSend(self,"scrollRectToVisible:",objj_msgSend(self,"rectOfColumn:",_164)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(self,_165,_166){ +with(self){ +if(_delegate===_166){ +return; +} +var _167=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_delegate){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidMove:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewColumnDidMoveNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidResize:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewColumnDidResizeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionDidChange:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewSelectionDidChangeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionIsChanging:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewSelectionIsChangingNotification,self); +} +} +_delegate=_166; +_implementedDelegateMethods=0; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("selectionShouldChangeInTableView:"))){ +_implementedDelegateMethods|=_9; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:dataViewForTableColumn:row:"))){ +_implementedDelegateMethods|=_a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:didClickTableColumn:"))){ +_implementedDelegateMethods|=_b; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:didDragTableColumn:"))){ +_implementedDelegateMethods|=_c; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:heightOfRow:"))){ +_implementedDelegateMethods|=_d; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:isGroupRow:"))){ +_implementedDelegateMethods|=_e; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:mouseDownInHeaderOfTableColumn:"))){ +_implementedDelegateMethods|=_f; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:nextTypeSelectMatchFromRow:toRow:forString:"))){ +_implementedDelegateMethods|=_10; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:selectionIndexesForProposedSelection:"))){ +_implementedDelegateMethods|=_11; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldEditTableColumn:row:"))){ +_implementedDelegateMethods|=_12; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldSelectRow:"))){ +_implementedDelegateMethods|=_13; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldSelectTableColumn:"))){ +_implementedDelegateMethods|=_14; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldShowViewExpansionForTableColumn:row:"))){ +_implementedDelegateMethods|=_15; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldTrackView:forTableColumn:row:"))){ +_implementedDelegateMethods|=_16; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldTypeSelectForEvent:withCurrentSearchString:"))){ +_implementedDelegateMethods|=_17; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:toolTipForView:rect:tableColumn:row:mouseLocation:"))){ +_implementedDelegateMethods|=_18; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:typeSelectStringForTableColumn:row:"))){ +_implementedDelegateMethods|=_19; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:willDisplayView:forTableColumn:row:"))){ +_implementedDelegateMethods|=_1a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidMove:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewColumnDidMove:"),CPTableViewColumnDidMoveNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidResize:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewColumnDidResize:"),CPTableViewColumnDidResizeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionDidChange:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewSelectionDidChange:"),CPTableViewSelectionDidChangeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionIsChanging:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewSelectionIsChanging:"),CPTableViewSelectionIsChangingNotification,self); +} +} +}),new objj_method(sel_getUid("delegate"),function(self,_168){ +with(self){ +return _delegate; +} +}),new objj_method(sel_getUid("_sendDelegateDidClickColumn:"),function(self,_169,_16a){ +with(self){ +if(_implementedDelegateMethods&_b){ +objj_msgSend(_delegate,"tableView:didClickTableColumn:",self,_tableColumns[_16a]); +} +} +}),new objj_method(sel_getUid("_sendDelegateDidDragColumn:"),function(self,_16b,_16c){ +with(self){ +if(_implementedDelegateMethods&_c){ +objj_msgSend(_delegate,"tableView:didDragTableColumn:",self,_tableColumns[_16c]); +} +} +}),new objj_method(sel_getUid("_sendDelegateDidMouseDownInHeader:"),function(self,_16d,_16e){ +with(self){ +if(_implementedDelegateMethods&_f){ +objj_msgSend(_delegate,"tableView:mouseDownInHeaderOfTableColumn:",self,_tableColumns[_16e]); +} +} +}),new objj_method(sel_getUid("_sendDataSourceSortDescriptorsDidChange:"),function(self,_16f,_170){ +with(self){ +if(_implementedDataSourceMethods&_8){ +objj_msgSend(_dataSource,"tableView:sortDescriptorsDidChange:",self,_170); +} +} +}),new objj_method(sel_getUid("_didClickTableColumn:modifierFlags:"),function(self,_171,_172,_173){ +with(self){ +objj_msgSend(self,"_sendDelegateDidClickColumn:",_172); +if(_allowsColumnSelection){ +objj_msgSend(self,"_noteSelectionIsChanging"); +if(_173&CPCommandKeyMask){ +if(objj_msgSend(self,"isColumnSelected:",_172)){ +objj_msgSend(self,"deselectColumn:",_172); +}else{ +if(objj_msgSend(self,"allowsMultipleSelection")==YES){ +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_172),YES); +} +} +return; +}else{ +if(_173&CPShiftKeyMask){ +var _174=MIN(_172,objj_msgSend(_selectedColumnIndexes,"lastIndex")),_175=MAX(_172,objj_msgSend(_selectedColumnIndexes,"firstIndex")); +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_174,_175-_174+1)),YES); +return; +}else{ +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_172),NO); +} +} +} +objj_msgSend(self,"_changeSortDescriptorsForClickOnColumn:",_172); +} +}),new objj_method(sel_getUid("_changeSortDescriptorsForClickOnColumn:"),function(self,_176,_177){ +with(self){ +var _178=objj_msgSend(_tableColumns,"objectAtIndex:",_177),_179=objj_msgSend(_178,"sortDescriptorPrototype"); +if(!_179){ +return; +} +var _17a=nil,_17b=objj_msgSend(self,"sortDescriptors"),_17c=objj_msgSend(CPArray,"arrayWithArray:",_17b),e=objj_msgSend(_17c,"objectEnumerator"),_17d=nil,_17e=objj_msgSend(CPArray,"array"); +if(objj_msgSend(_sortDescriptors,"count")>0){ +_17a=objj_msgSend(objj_msgSend(self,"sortDescriptors"),"objectAtIndex:",0); +} +while((_17d=objj_msgSend(e,"nextObject"))!=nil){ +if(objj_msgSend(objj_msgSend(_17d,"key"),"isEqual:",objj_msgSend(_179,"key"))){ +objj_msgSend(_17e,"addObject:",_17d); +} +} +if(objj_msgSend(objj_msgSend(_179,"key"),"isEqual:",objj_msgSend(_17a,"key"))){ +_179=objj_msgSend(_17a,"reversedSortDescriptor"); +} +objj_msgSend(_17c,"removeObjectsInArray:",_17e); +objj_msgSend(_17c,"insertObject:atIndex:",_179,0); +var _17f=objj_msgSend(_179,"ascending")?objj_msgSend(self,"_tableHeaderSortImage"):objj_msgSend(self,"_tableHeaderReverseSortImage"); +objj_msgSend(self,"setIndicatorImage:inTableColumn:",nil,_currentHighlightedTableColumn); +objj_msgSend(self,"setIndicatorImage:inTableColumn:",_17f,_178); +objj_msgSend(self,"setHighlightedTableColumn:",_178); +objj_msgSend(self,"setSortDescriptors:",_17c); +} +}),new objj_method(sel_getUid("setIndicatorImage:inTableColumn:"),function(self,_180,_181,_182){ +with(self){ +if(_182){ +var _183=objj_msgSend(_182,"headerView"); +if(objj_msgSend(_183,"respondsToSelector:",sel_getUid("_setIndicatorImage:"))){ +objj_msgSend(_183,"_setIndicatorImage:",_181); +} +} +} +}),new objj_method(sel_getUid("_tableHeaderSortImage"),function(self,_184){ +with(self){ +return objj_msgSend(self,"currentValueForThemeAttribute:","sort-image"); +} +}),new objj_method(sel_getUid("_tableHeaderReverseSortImage"),function(self,_185){ +with(self){ +return objj_msgSend(self,"currentValueForThemeAttribute:","sort-image-reversed"); +} +}),new objj_method(sel_getUid("highlightedTableColumn"),function(self,_186){ +with(self){ +return _currentHighlightedTableColumn; +} +}),new objj_method(sel_getUid("setHighlightedTableColumn:"),function(self,_187,_188){ +with(self){ +if(_currentHighlightedTableColumn==_188){ +return; +} +if(_headerView){ +if(_currentHighlightedTableColumn!=nil){ +objj_msgSend(objj_msgSend(_currentHighlightedTableColumn,"headerView"),"unsetThemeState:",CPThemeStateSelected); +} +if(_188!=nil){ +objj_msgSend(objj_msgSend(_188,"headerView"),"setThemeState:",CPThemeStateSelected); +} +} +_currentHighlightedTableColumn=_188; +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"),function(self,_189,_18a,_18b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"),function(self,_18c,_18d,_18e,_18f,_190){ +with(self){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:","Frameworks/AppKit/Resources/GenericFile.png",CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"),function(self,_191,_192,_193,_194,_195){ +with(self){ +var _196=objj_msgSend(self,"bounds"),view=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_196); +objj_msgSend(view,"setAlphaValue:",0.7); +var _197=objj_msgSend(_193,"count"); +while(_197--){ +var _198=objj_msgSend(_193,"objectAtIndex:",_197),row=objj_msgSend(_192,"firstIndex"); +while(row!==CPNotFound){ +var _199=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_198); +objj_msgSend(_199,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_197,row)); +objj_msgSend(_199,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_198,row)); +objj_msgSend(_198,"prepareDataView:forRow:",_199,row); +objj_msgSend(view,"addSubview:",_199); +row=objj_msgSend(_192,"indexGreaterThanIndex:",row); +} +} +var _19a=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_194,"locationInWindow"),nil); +_195.x=CGRectGetWidth(_196)/2-_19a.x; +_195.y=CGRectGetHeight(_196)/2-_19a.y; +return view; +} +}),new objj_method(sel_getUid("_dragViewForColumn:event:offset:"),function(self,_19b,_19c,_19d,_19e){ +with(self){ +var _19f=objj_msgSend(objj_msgSend(_CPColumnDragView,"alloc"),"initWithLineColor:",objj_msgSend(self,"gridColor")),_1a0=objj_msgSend(objj_msgSend(self,"tableColumns"),"objectAtIndex:",_19c),_1a1=CPRectMake(0,0,objj_msgSend(_1a0,"width"),(objj_msgSend(self,"visibleRect").size.height)+23),_1a2=objj_msgSend(self,"rectOfColumn:",_19c),_1a3=objj_msgSend(_1a0,"headerView"),row=objj_msgSend(_exposedRows,"firstIndex"); +while(row!==CPNotFound){ +var _1a4=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_1a0),_1a5=objj_msgSend(self,"frameOfDataViewAtColumn:row:",_19c,row); +_1a5.origin.x=0; +_1a5.origin.y=((_1a5.origin.y)-(objj_msgSend(self,"visibleRect").origin.y))+23; +objj_msgSend(_1a4,"setFrame:",_1a5); +objj_msgSend(_1a4,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_1a0,row)); +objj_msgSend(_19f,"addSubview:",_1a4); +row=objj_msgSend(_exposedRows,"indexGreaterThanIndex:",row); +} +var _1a6=objj_msgSend(_1a3,"frame"); +_1a6.origin={x:0,y:0}; +var _1a7=objj_msgSend(objj_msgSend(_CPTableColumnHeaderView,"alloc"),"initWithFrame:",_1a6); +objj_msgSend(_1a7,"setStringValue:",objj_msgSend(_1a3,"stringValue")); +objj_msgSend(_1a7,"setThemeState:",objj_msgSend(_1a3,"themeState")); +objj_msgSend(_19f,"addSubview:",_1a7); +objj_msgSend(_19f,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_19f,"setAlphaValue:",0.7); +objj_msgSend(_19f,"setFrame:",_1a1); +return _19f; +} +}),new objj_method(sel_getUid("setDraggingSourceOperationMask:forLocal:"),function(self,_1a8,mask,_1a9){ +with(self){ +_dragOperationDefaultMask=mask; +} +}),new objj_method(sel_getUid("setDropRow:dropOperation:"),function(self,_1aa,row,_1ab){ +with(self){ +if(row>objj_msgSend(self,"numberOfRows")&&_1ab===CPTableViewDropOn){ +var _1ac=objj_msgSend(self,"numberOfRows")+1,_1ad="Attempt to set dropRow="+row+" dropOperation=CPTableViewDropOn when [0 - "+_1ac+"] is valid range of rows."; +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:","Error",_1ad,nil),"raise"); +} +_retargetedDropRow=row; +_retargetedDropOperation=_1ab; +} +}),new objj_method(sel_getUid("setDraggingDestinationFeedbackStyle:"),function(self,_1ae,_1af){ +with(self){ +_destinationDragStyle=_1af; +} +}),new objj_method(sel_getUid("draggingDestinationFeedbackStyle"),function(self,_1b0){ +with(self){ +return _destinationDragStyle; +} +}),new objj_method(sel_getUid("setVerticalMotionCanBeginDrag:"),function(self,_1b1,_1b2){ +with(self){ +_verticalMotionCanDrag=_1b2; +} +}),new objj_method(sel_getUid("verticalMotionCanBeginDrag"),function(self,_1b3){ +with(self){ +return _verticalMotionCanDrag; +} +}),new objj_method(sel_getUid("setSortDescriptors:"),function(self,_1b4,_1b5){ +with(self){ +var _1b6=objj_msgSend(self,"sortDescriptors"),_1b7=nil; +if(_1b5==nil){ +_1b7=objj_msgSend(CPArray,"array"); +}else{ +_1b7=objj_msgSend(CPArray,"arrayWithArray:",_1b5); +} +if(objj_msgSend(_1b7,"isEqual:",_1b6)){ +return; +} +_sortDescriptors=_1b7; +objj_msgSend(self,"_sendDataSourceSortDescriptorsDidChange:",_1b6); +} +}),new objj_method(sel_getUid("sortDescriptors"),function(self,_1b8){ +with(self){ +return _sortDescriptors; +} +}),new objj_method(sel_getUid("_objectValueForTableColumn:row:"),function(self,_1b9,_1ba,_1bb){ +with(self){ +var _1bc=objj_msgSend(_1ba,"UID"),_1bd=_objectValues[_1bc]; +if(!_1bd){ +_1bd=[]; +_objectValues[_1bc]=_1bd; +} +var _1be=_1bd[_1bb]; +if(_1be===undefined&&(_implementedDataSourceMethods&_2)){ +_1be=objj_msgSend(_dataSource,"tableView:objectValueForTableColumn:row:",self,_1ba,_1bb); +_1bd[_1bb]=_1be; +} +return _1be; +} +}),new objj_method(sel_getUid("load"),function(self,_1bf){ +with(self){ +if(_reloadAllRows){ +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_exposedRows,_exposedColumns); +_exposedRows=objj_msgSend(CPIndexSet,"indexSet"); +_exposedColumns=objj_msgSend(CPIndexSet,"indexSet"); +_reloadAllRows=NO; +} +var _1c0=objj_msgSend(self,"visibleRect"),_1c1=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",objj_msgSend(self,"rowsInRect:",_1c0)),_1c2=objj_msgSend(self,"columnIndexesInRect:",_1c0),_1c3=objj_msgSend(_exposedRows,"copy"),_1c4=objj_msgSend(_exposedColumns,"copy"); +objj_msgSend(_1c3,"removeIndexes:",_1c1); +objj_msgSend(_1c4,"removeIndexes:",_1c2); +var _1c5=objj_msgSend(_1c1,"copy"),_1c6=objj_msgSend(_1c2,"copy"); +objj_msgSend(_1c5,"removeIndexes:",_exposedRows); +objj_msgSend(_1c6,"removeIndexes:",_exposedColumns); +var _1c7=objj_msgSend(_1c1,"copy"),_1c8=objj_msgSend(_1c2,"copy"); +objj_msgSend(_1c7,"removeIndexes:",_1c5); +objj_msgSend(_1c8,"removeIndexes:",_1c6); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c7,_1c4); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c3,_1c8); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c3,_1c4); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c5,_1c6); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c7,_1c6); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c5,_1c8); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c5,_1c6); +_exposedRows=_1c1; +_exposedColumns=_1c2; +objj_msgSend(_tableDrawView,"setFrame:",_1c0); +objj_msgSend(self,"setNeedsDisplay:",YES); +for(var _1c9 in _cachedDataViews){ +var _1ca=_cachedDataViews[_1c9],_1cb=_1ca.length; +while(_1cb--){ +objj_msgSend(_1ca[_1cb],"removeFromSuperview"); +} +} +if(objj_msgSend(_differedColumnDataToRemove,"count")){ +for(var i=0;i<_differedColumnDataToRemove.length;i++){ +var data=_differedColumnDataToRemove[i],_1cc=data.column; +objj_msgSend(_1cc,"setHidden:",data.shouldBeHidden); +objj_msgSend(_tableColumns,"removeObject:",_1cc); +} +objj_msgSend(_differedColumnDataToRemove,"removeAllObjects"); +} +} +}),new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"),function(self,_1cd,rows,_1ce){ +with(self){ +if(!objj_msgSend(rows,"count")||!objj_msgSend(_1ce,"count")){ +return; +} +var _1cf=[],_1d0=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1cf,-1,nil); +objj_msgSend(_1ce,"getIndexes:maxCount:inIndexRange:",_1d0,-1,nil); +var _1d1=0,_1d2=_1d0.length; +for(;_1d1<_1d2;++_1d1){ +var _1d3=_1d0[_1d1],_1d4=_tableColumns[_1d3],_1d5=objj_msgSend(_1d4,"UID"),_1d6=0,_1d7=_1cf.length; +for(;_1d6<_1d7;++_1d6){ +var row=_1cf[_1d6],_1d8=_dataViewsForTableColumns[_1d5]; +if(!_1d8||row>=_1d8.length){ +continue; +} +var _1d9=objj_msgSend(_1d8,"objectAtIndex:",row); +objj_msgSend(_1d8,"replaceObjectAtIndex:withObject:",row,nil); +objj_msgSend(self,"_enqueueReusableDataView:",_1d9); +} +} +} +}),new objj_method(sel_getUid("_loadDataViewsInRows:columns:"),function(self,_1da,rows,_1db){ +with(self){ +if(!objj_msgSend(rows,"count")||!objj_msgSend(_1db,"count")){ +return; +} +var _1dc=[],_1dd=[],_1de=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1dc,-1,nil); +objj_msgSend(_1db,"getIndexes:maxCount:inIndexRange:",_1de,-1,nil); +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _1df=0,_1e0=_1de.length; +for(;_1df<_1e0;++_1df){ +var _1e1=_1de[_1df],_1e2=_tableColumns[_1e1]; +if(objj_msgSend(_1e2,"isHidden")||_1e2===_draggedColumn){ +continue; +} +var _1e3=objj_msgSend(_1e2,"UID"); +if(!_dataViewsForTableColumns[_1e3]){ +_dataViewsForTableColumns[_1e3]=[]; +} +var _1e4=0,_1e5=_1dc.length,_1e6=objj_msgSend(_selectedColumnIndexes,"containsIndex:",_1e1); +for(;_1e4<_1e5;++_1e4){ +var row=_1dc[_1e4],_1e7=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_1e2),_1e8=objj_msgSend(_1e7,"isKindOfClass:",objj_msgSend(CPButton,"class")),_1e9=objj_msgSend(_1e7,"isKindOfClass:",objj_msgSend(CPTextField,"class")); +objj_msgSend(_1e7,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_1e1,row)); +objj_msgSend(_1e7,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_1e2,row)); +objj_msgSend(_1e2,"prepareDataView:forRow:",_1e7,row); +if(_1e6||objj_msgSend(self,"isRowSelected:",row)){ +objj_msgSend(_1e7,"setThemeState:",CPThemeStateSelectedDataView); +}else{ +objj_msgSend(_1e7,"unsetThemeState:",CPThemeStateSelectedDataView); +} +if(_implementedDelegateMethods&_1a){ +objj_msgSend(_delegate,"tableView:willDisplayView:forTableColumn:row:",self,_1e7,_1e2,row); +} +if(objj_msgSend(_1e7,"superview")!==self){ +objj_msgSend(self,"addSubview:",_1e7); +} +_dataViewsForTableColumns[_1e3][row]=_1e7; +if(_1e8||(_editingCellIndex&&_editingCellIndex.x===_1e1&&_editingCellIndex.y===row)){ +if(!_1e8){ +_editingCellIndex=undefined; +} +if(_1e9){ +objj_msgSend(_1e7,"setEditable:",YES); +objj_msgSend(_1e7,"setSendsActionOnEndEditing:",YES); +objj_msgSend(_1e7,"setSelectable:",YES); +objj_msgSend(_1e7,"selectText:",nil); +} +objj_msgSend(_1e7,"setTarget:",self); +objj_msgSend(_1e7,"setAction:",sel_getUid("_commitDataViewObjectValue:")); +_1e7.tableViewEditedColumnObj=_1e2; +_1e7.tableViewEditedRowIndex=row; +}else{ +if(_1e9){ +objj_msgSend(_1e7,"setEditable:",NO); +objj_msgSend(_1e7,"setSelectable:",NO); +} +} +} +} +} +}),new objj_method(sel_getUid("_layoutDataViewsInRows:columns:"),function(self,_1ea,rows,_1eb){ +with(self){ +var _1ec=[],_1ed=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1ec,-1,nil); +objj_msgSend(_1eb,"getIndexes:maxCount:inIndexRange:",_1ed,-1,nil); +var _1ee=0,_1ef=_1ed.length; +for(;_1ee<_1ef;++_1ee){ +var _1f0=_1ed[_1ee],_1f1=_tableColumns[_1f0],_1f2=objj_msgSend(_1f1,"UID"),_1f3=_dataViewsForTableColumns[_1f2],_1f4=_tableColumnRanges[_1f0],_1f5=0,_1f6=_1ec.length; +for(;_1f5<_1f6;++_1f5){ +var row=_1ec[_1f5],_1f7=_1f3[row]; +objj_msgSend(_1f7,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_1f0,row)); +} +} +} +}),new objj_method(sel_getUid("_commitDataViewObjectValue:"),function(self,_1f8,_1f9){ +with(self){ +objj_msgSend(_dataSource,"tableView:setObjectValue:forTableColumn:row:",self,objj_msgSend(_1f9,"objectValue"),_1f9.tableViewEditedColumnObj,_1f9.tableViewEditedRowIndex); +if(objj_msgSend(_1f9,"respondsToSelector:",sel_getUid("setEditable:"))){ +objj_msgSend(_1f9,"setEditable:",NO); +} +} +}),new objj_method(sel_getUid("_newDataViewForRow:tableColumn:"),function(self,_1fa,aRow,_1fb){ +with(self){ +if((_implementedDelegateMethods&_a)){ +var _1fc=objj_msgSend(_delegate,"tableView:dataViewForTableColumn:row:",self,_1fb,aRow); +objj_msgSend(_1fb,"setDataView:",_1fc); +} +return objj_msgSend(_1fb,"_newDataViewForRow:",aRow); +} +}),new objj_method(sel_getUid("_enqueueReusableDataView:"),function(self,_1fd,_1fe){ +with(self){ +if(!_1fe){ +return; +} +var _1ff=_1fe.identifier; +if(!_cachedDataViews[_1ff]){ +_cachedDataViews[_1ff]=[_1fe]; +}else{ +_cachedDataViews[_1ff].push(_1fe); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(self,_200,_201){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"setFrameSize:",_201); +if(_headerView){ +objj_msgSend(_headerView,"setFrameSize:",{width:(objj_msgSend(self,"frame").size.width),height:(objj_msgSend(_headerView,"frame").size.height)}); +} +} +}),new objj_method(sel_getUid("setNeedsDisplay:"),function(self,_202,_203){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"setNeedsDisplay:",_203); +objj_msgSend(_tableDrawView,"setNeedsDisplay:",_203); +} +}),new objj_method(sel_getUid("_drawRect:"),function(self,_204,_205){ +with(self){ +var _206=objj_msgSend(self,"visibleRect"); +objj_msgSend(self,"drawBackgroundInClipRect:",_206); +objj_msgSend(self,"drawGridInClipRect:",_206); +objj_msgSend(self,"highlightSelectionInClipRect:",_206); +if(_implementsCustomDrawRow){ +objj_msgSend(self,"_drawRows:clipRect:",_exposedRows,_206); +} +} +}),new objj_method(sel_getUid("drawBackgroundInClipRect:"),function(self,_207,_208){ +with(self){ +if(!_usesAlternatingRowBackgroundColors){ +return; +} +var _209=objj_msgSend(self,"alternatingRowBackgroundColors"),_20a=objj_msgSend(_209,"count"); +if(_20a===0){ +return; +} +var _20b=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +if(_20a===1){ +CGContextSetFillColor(_20b,_209[0]); +CGContextFillRect(_20b,_208); +return; +} +var _20c=objj_msgSend(self,"rowsInRect:",_208),_20d=_20c.location,_20e=CPMaxRange(_20c)-1,_20f=MIN(_20c.length,_20a),_210=0; +while(_20f--){ +var row=_20d-_20d%_20a+_20f,_211=nil; +CGContextBeginPath(_20b); +for(;row<=_20e;row+=_20a){ +if(row>=_20d){ +CGContextAddRect(_20b,CGRectIntersection(_208,_211=objj_msgSend(self,"rectOfRow:",row))); +} +} +if(row-_20a===_20e){ +_210=(_211.origin.y+_211.size.height); +} +CGContextClosePath(_20b); +CGContextSetFillColor(_20b,_209[_20f]); +CGContextFillPath(_20b); +} +var _212=(_208.origin.y+_208.size.height); +if(_210>=_212||_rowHeight<=0){ +return; +} +var _213=_rowHeight+_intercellSpacing.height,_211={origin:{x:(_208.origin.x),y:(_208.origin.y)+_210},size:{width:(_208.size.width),height:_213}}; +for(row=_20e+1;_210<_212;++row){ +CGContextSetFillColor(_20b,_209[row%_20a]); +CGContextFillRect(_20b,_211); +_210+=_213; +_211.origin.y+=_213; +} +} +}),new objj_method(sel_getUid("drawGridInClipRect:"),function(self,_214,_215){ +with(self){ +var _216=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_217=objj_msgSend(self,"gridStyleMask"); +if(!(_217&(CPTableViewSolidHorizontalGridLineMask|CPTableViewSolidVerticalGridLineMask))){ +return; +} +CGContextBeginPath(_216); +if(_217&CPTableViewSolidHorizontalGridLineMask){ +var _218=objj_msgSend(self,"rowsInRect:",_215),row=_218.location,_219=CPMaxRange(_218)-1,rowY=-0.5,minX=(_215.origin.x),maxX=(_215.origin.x+_215.size.width); +for(;row<=_219;++row){ +var _21a=objj_msgSend(self,"rectOfRow:",row),rowY=(_21a.origin.y+_21a.size.height)-0.5; +CGContextMoveToPoint(_216,minX,rowY); +CGContextAddLineToPoint(_216,maxX,rowY); +} +if(_rowHeight>0){ +var _21b=_rowHeight+_intercellSpacing.height,_21c=(_215.origin.y+_215.size.height); +while(rowY<_21c){ +rowY+=_21b; +CGContextMoveToPoint(_216,minX,rowY); +CGContextAddLineToPoint(_216,maxX,rowY); +} +} +} +if(_217&CPTableViewSolidVerticalGridLineMask){ +var _21d=objj_msgSend(self,"columnIndexesInRect:",_215),_21e=[]; +objj_msgSend(_21d,"getIndexes:maxCount:inIndexRange:",_21e,-1,nil); +var _21f=0,_220=_21e.length,minY=(_215.origin.y),maxY=(_215.origin.y+_215.size.height); +for(;_21f<_220;++_21f){ +var _221=objj_msgSend(self,"rectOfColumn:",_21e[_21f]),_222=(_221.origin.x+_221.size.width)+0.5; +CGContextMoveToPoint(_216,_222,minY); +CGContextAddLineToPoint(_216,_222,maxY); +} +} +CGContextClosePath(_216); +CGContextSetStrokeColor(_216,objj_msgSend(self,"gridColor")); +CGContextStrokePath(_216); +} +}),new objj_method(sel_getUid("highlightSelectionInClipRect:"),function(self,_223,_224){ +with(self){ +if(_selectionHighlightStyle===CPTableViewSelectionHighlightStyleNone){ +return; +} +var _225=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_226=[],_227=sel_getUid("rectOfRow:"); +if(objj_msgSend(_selectedRowIndexes,"count")>=1){ +var _228=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",objj_msgSend(self,"rowsInRect:",_224)),_229=objj_msgSend(_228,"firstIndex"),_22a=CPMakeRange(_229,objj_msgSend(_228,"lastIndex")-_229+1); +objj_msgSend(_selectedRowIndexes,"getIndexes:maxCount:inIndexRange:",_226,-1,_22a); +}else{ +if(objj_msgSend(_selectedColumnIndexes,"count")>=1){ +_227=sel_getUid("rectOfColumn:"); +var _22b=objj_msgSend(self,"columnIndexesInRect:",_224),_22c=objj_msgSend(_22b,"firstIndex"),_22a=CPMakeRange(_22c,objj_msgSend(_22b,"lastIndex")-_22c+1); +objj_msgSend(_selectedColumnIndexes,"getIndexes:maxCount:inIndexRange:",_226,-1,_22a); +} +} +var _22d=count2=objj_msgSend(_226,"count"); +if(!_22d){ +return; +} +var _22e=(_selectionHighlightStyle===CPTableViewSelectionHighlightStyleSourceList&&objj_msgSend(_selectedRowIndexes,"count")>=1),_22f=0.5*(_gridStyleMask&CPTableViewSolidHorizontalGridLineMask); +CGContextBeginPath(_225); +var _230=objj_msgSend(self,"selectionGradientColors"),_231=objj_msgSend(_230,"objectForKey:",CPSourceListTopLineColor),_232=objj_msgSend(_230,"objectForKey:",CPSourceListBottomLineColor),_233=objj_msgSend(_230,"objectForKey:",CPSourceListGradient); +while(_22d--){ +var _234=CGRectIntersection(objj_msgSend(self,_227,_226[_22d]),_224); +CGContextAddRect(_225,_234); +if(_22e){ +var minX=(_234.origin.x),minY=(_234.origin.y),maxX=(_234.origin.x+_234.size.width),maxY=(_234.origin.y+_234.size.height)-_22f; +CGContextDrawLinearGradient(_225,_233,_234.origin,CGPointMake(minX,maxY),0); +CGContextClosePath(_225); +CGContextBeginPath(_225); +CGContextMoveToPoint(_225,minX,minY); +CGContextAddLineToPoint(_225,maxX,minY); +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,_231); +CGContextStrokePath(_225); +CGContextBeginPath(_225); +CGContextMoveToPoint(_225,minX,maxY); +CGContextAddLineToPoint(_225,maxX,maxY-1); +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,_232); +CGContextStrokePath(_225); +} +} +CGContextClosePath(_225); +if(!_22e){ +objj_msgSend(objj_msgSend(self,"selectionHighlightColor"),"setFill"); +CGContextFillPath(_225); +} +CGContextBeginPath(_225); +var _235=objj_msgSend(self,"gridStyleMask"); +for(var i=0;i<count2;i++){ +var rect=objj_msgSend(self,_227,_226[i]),minX=CGRectGetMinX(rect)-0.5,maxX=CGRectGetMaxX(rect)-0.5,minY=CGRectGetMinY(rect)-0.5,maxY=CGRectGetMaxY(rect)-0.5; +if(objj_msgSend(_selectedRowIndexes,"count")>=1&&_235&CPTableViewSolidVerticalGridLineMask){ +var _22b=objj_msgSend(self,"columnIndexesInRect:",_224),_236=[],_237=objj_msgSend(_22b,"firstIndex"),_22a=CPMakeRange(_237,objj_msgSend(_22b,"lastIndex")-_237+1); +objj_msgSend(_22b,"getIndexes:maxCount:inIndexRange:",_236,-1,_22a); +var _238=objj_msgSend(_236,"count"); +for(var c=_237;c<_238;c++){ +var _239=objj_msgSend(self,"rectOfColumn:",_236[c]),colX=CGRectGetMaxX(_239)+0.5; +CGContextMoveToPoint(_225,colX,minY); +CGContextAddLineToPoint(_225,colX,maxY); +} +} +if(objj_msgSend(_226,"containsObject:",_226[i]+1)){ +CGContextMoveToPoint(_225,minX,maxY); +CGContextAddLineToPoint(_225,maxX,maxY); +} +} +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,objj_msgSend(self,"currentValueForThemeAttribute:","highlighted-grid-color")); +CGContextStrokePath(_225); +} +}),new objj_method(sel_getUid("_drawRows:clipRect:"),function(self,_23a,_23b,_23c){ +with(self){ +var row=objj_msgSend(_23b,"firstIndex"); +while(row!==CPNotFound){ +objj_msgSend(self,"drawRow:clipRect:",row,CGRectIntersection(_23c,objj_msgSend(self,"rectOfRow:",row))); +row=objj_msgSend(_23b,"indexGreaterThanIndex:",row); +} +} +}),new objj_method(sel_getUid("drawRow:clipRect:"),function(self,_23d,row,rect){ +with(self){ +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_23e){ +with(self){ +objj_msgSend(self,"load"); +} +}),new objj_method(sel_getUid("viewWillMoveToSuperview:"),function(self,_23f,_240){ +with(self){ +var _241=objj_msgSend(self,"superview"),_242=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_241){ +objj_msgSend(_242,"removeObserver:name:object:",self,CPViewFrameDidChangeNotification,_241); +objj_msgSend(_242,"removeObserver:name:object:",self,CPViewBoundsDidChangeNotification,_241); +} +if(_240){ +objj_msgSend(_240,"setPostsFrameChangedNotifications:",YES); +objj_msgSend(_240,"setPostsBoundsChangedNotifications:",YES); +objj_msgSend(_242,"addObserver:selector:name:object:",self,sel_getUid("superviewFrameChanged:"),CPViewFrameDidChangeNotification,_240); +objj_msgSend(_242,"addObserver:selector:name:object:",self,sel_getUid("superviewBoundsChanged:"),CPViewBoundsDidChangeNotification,_240); +} +} +}),new objj_method(sel_getUid("superviewBoundsChanged:"),function(self,_243,_244){ +with(self){ +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("superviewFrameChanged:"),function(self,_245,_246){ +with(self){ +objj_msgSend(self,"tile"); +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(self,_247){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(self,_248,_249){ +with(self){ +var row=objj_msgSend(self,"rowAtPoint:",_249); +if(row<0&&_allowsEmptySelection){ +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +} +objj_msgSend(self,"_noteSelectionIsChanging"); +if(objj_msgSend(self,"mouseDownFlags")&CPShiftKeyMask){ +_selectionAnchorRow=(ABS(objj_msgSend(_selectedRowIndexes,"firstIndex")-row)<ABS(objj_msgSend(_selectedRowIndexes,"lastIndex")-row))?objj_msgSend(_selectedRowIndexes,"firstIndex"):objj_msgSend(_selectedRowIndexes,"lastIndex"); +}else{ +_selectionAnchorRow=row; +} +_startTrackingPoint=_249; +_startTrackingTimestamp=new Date(); +if(_implementedDataSourceMethods&_3){ +_trackingPointMovedOutOfClickSlop=NO; +} +if(row>=0&&!(_implementedDataSourceMethods&_7)){ +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",row); +} +objj_msgSend(objj_msgSend(self,"window"),"makeFirstResponder:",self); +return YES; +} +}),new objj_method(sel_getUid("trackMouse:"),function(self,_24a,_24b){ +with(self){ +if(!objj_msgSend(_draggedRowIndexes,"count")){ +objj_msgSend(self,"autoscroll:",_24b); +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"trackMouse:",_24b); +}else{ +objj_msgSend(CPApp,"sendEvent:",_24b); +} +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(self,_24c,_24d,_24e){ +with(self){ +var row=objj_msgSend(self,"rowAtPoint:",_24e); +if(!_isSelectingSession&&_implementedDataSourceMethods&_7){ +if(row>=0&&(ABS(_startTrackingPoint.x-_24e.x)>3||(_verticalMotionCanDrag&&ABS(_startTrackingPoint.y-_24e.y)>3))||(objj_msgSend(_selectedRowIndexes,"containsIndex:",row))){ +if(objj_msgSend(_selectedRowIndexes,"containsIndex:",row)){ +_draggedRowIndexes=objj_msgSend(objj_msgSend(CPIndexSet,"alloc"),"initWithIndexSet:",_selectedRowIndexes); +}else{ +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSetWithIndex:",row); +} +var _24f=objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard); +if(objj_msgSend(self,"canDragRowsWithIndexes:atPoint:",_draggedRowIndexes,_24e)&&objj_msgSend(_dataSource,"tableView:writeRowsWithIndexes:toPasteboard:",self,_draggedRowIndexes,_24f)){ +var _250=objj_msgSend(CPApp,"currentEvent"),_251=CPPointMakeZero(),_252=objj_msgSend(_tableColumns,"objectsAtIndexes:",_exposedColumns); +var view=objj_msgSend(self,"dragViewForRowsWithIndexes:tableColumns:event:offset:",_draggedRowIndexes,_252,_250,_251); +if(!view){ +var _253=objj_msgSend(self,"dragImageForRowsWithIndexes:tableColumns:event:offset:",_draggedRowIndexes,_252,_250,_251); +view=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CPMakeRect(0,0,objj_msgSend(_253,"size").width,objj_msgSend(_253,"size").height)); +objj_msgSend(view,"setImage:",_253); +} +var _254=objj_msgSend(view,"bounds"),_255=CPPointMake(_24e.x-CGRectGetWidth(_254)/2+_251.x,_24e.y-CGRectGetHeight(_254)/2+_251.y); +objj_msgSend(self,"dragView:at:offset:event:pasteboard:source:slideBack:",view,_255,CPPointMakeZero(),objj_msgSend(CPApp,"currentEvent"),_24f,self,YES); +_startTrackingPoint=nil; +return NO; +} +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +}else{ +if(ABS(_startTrackingPoint.x-_24e.x)<5&&ABS(_startTrackingPoint.y-_24e.y)<5){ +return YES; +} +} +} +_isSelectingSession=YES; +if(row>=0&&row!==_lastTrackedRowIndex){ +_lastTrackedRowIndex=row; +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",row); +} +if((_implementedDataSourceMethods&_3)&&!_trackingPointMovedOutOfClickSlop){ +var _256=5; +if(ABS(_24e.x-_startTrackingPoint.x)>_256||ABS(_24e.y-_startTrackingPoint.y)>_256){ +_trackingPointMovedOutOfClickSlop=YES; +} +} +return YES; +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(self,_257,_258,_259,_25a){ +with(self){ +_isSelectingSession=NO; +var _25b=1000,_25c,_25d,_25e,_25f=YES; +if(_implementedDataSourceMethods&_7){ +_25e=objj_msgSend(self,"rowAtPoint:",_259); +if(_25e!==-1){ +if(objj_msgSend(_draggedRowIndexes,"count")>0){ +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +return; +} +_previouslySelectedRowIndexes=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",_25e); +} +} +if(_25a&&(_implementedDataSourceMethods&_3)&&!_trackingPointMovedOutOfClickSlop&&(objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"clickCount")>1)){ +_25c=objj_msgSend(self,"columnAtPoint:",_258); +if(_25c!==-1){ +_25d=_tableColumns[_25c]; +if(objj_msgSend(_25d,"isEditable")){ +_25e=objj_msgSend(self,"rowAtPoint:",_259); +if(_25e!==-1){ +if(_implementedDelegateMethods&_12){ +_25f=objj_msgSend(_delegate,"tableView:shouldEditTableColumn:row:",self,_25d,_25e); +} +if(_25f){ +objj_msgSend(self,"editColumn:row:withEvent:select:",_25c,_25e,nil,YES); +return; +} +} +} +} +} +if(objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"clickCount")===2&&_doubleAction){ +_clickedRow=objj_msgSend(self,"rowAtPoint:",_259); +objj_msgSend(self,"sendAction:to:",_doubleAction,_target); +} +} +}),new objj_method(sel_getUid("draggingEntered:"),function(self,_260,_261){ +with(self){ +var _262=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_261,"draggingLocation"),nil),_263=objj_msgSend(self,"_proposedDropOperationAtPoint:",_262),row=objj_msgSend(self,"_proposedRowAtPoint:",_262); +if(_retargetedDropRow!==nil){ +row=_retargetedDropRow; +} +var _264=objj_msgSend(self,"registeredDraggedTypes"),_265=objj_msgSend(_264,"count"),i=0; +for(;i<_265;i++){ +if(objj_msgSend(objj_msgSend(objj_msgSend(_261,"draggingPasteboard"),"types"),"containsObject:",objj_msgSend(_264,"objectAtIndex:",i))){ +return objj_msgSend(self,"_validateDrop:proposedRow:proposedDropOperation:",_261,row,_263); +} +} +return CPDragOperationNone; +} +}),new objj_method(sel_getUid("draggingExited:"),function(self,_266,_267){ +with(self){ +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +} +}),new objj_method(sel_getUid("draggingEnded:"),function(self,_268,_269){ +with(self){ +objj_msgSend(self,"_draggingEnded"); +} +}),new objj_method(sel_getUid("_draggingEnded"),function(self,_26a){ +with(self){ +_retargetedDropOperation=nil; +_retargetedDropRow=nil; +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +} +}),new objj_method(sel_getUid("wantsPeriodicDraggingUpdates"),function(self,_26b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("_proposedDropOperationAtPoint:"),function(self,_26c,_26d){ +with(self){ +if(_retargetedDropOperation!==nil){ +return _retargetedDropOperation; +} +var row=objj_msgSend(self,"_proposedRowAtPoint:",_26d),_26e=objj_msgSend(self,"rectOfRow:",row); +if(objj_msgSend(self,"intercellSpacing").height<5){ +_26e=CPRectInset(_26e,0,5-objj_msgSend(self,"intercellSpacing").height); +} +if(CGRectContainsPoint(_26e,_26d)&&row<_numberOfRows){ +return CPTableViewDropOn; +} +return CPTableViewDropAbove; +} +}),new objj_method(sel_getUid("_proposedRowAtPoint:"),function(self,_26f,_270){ +with(self){ +var row=FLOOR(_270.y/(_rowHeight+_intercellSpacing.height)),_271=row+1,rect=objj_msgSend(self,"rectOfRow:",row),_272=CGRectGetMaxY(rect),_273=_272-((_272-CGRectGetMinY(rect))*0.3); +if(_270.y>MAX(_273,_272-6)){ +row=_271; +} +if(row>=objj_msgSend(self,"numberOfRows")){ +row=objj_msgSend(self,"numberOfRows"); +} +return row; +} +}),new objj_method(sel_getUid("_validateDrop:proposedRow:proposedDropOperation:"),function(self,_274,info,row,_275){ +with(self){ +if(_implementedDataSourceMethods&_6){ +return objj_msgSend(_dataSource,"tableView:validateDrop:proposedRow:proposedDropOperation:",self,info,row,_275); +} +return CPDragOperationNone; +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewOnRow:"),function(self,_276,_277){ +with(self){ +if(_277>=objj_msgSend(self,"numberOfRows")){ +_277=objj_msgSend(self,"numberOfRows")-1; +} +return objj_msgSend(self,"rectOfRow:",_277); +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"),function(self,_278,_279,_27a,_27b){ +with(self){ +if(_27a>objj_msgSend(self,"numberOfRows")){ +_27a=objj_msgSend(self,"numberOfRows"); +} +return objj_msgSend(self,"rectOfRow:",_27a); +} +}),new objj_method(sel_getUid("draggingUpdated:"),function(self,_27c,_27d){ +with(self){ +var _27e=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_27d,"draggingLocation"),nil),_27f=objj_msgSend(self,"_proposedDropOperationAtPoint:",_27e),_280=objj_msgSend(self,"numberOfRows"),row=objj_msgSend(self,"_proposedRowAtPoint:",_27e),_281=objj_msgSend(self,"_validateDrop:proposedRow:proposedDropOperation:",_27d,row,_27f),_282=objj_msgSend(self,"visibleRect"); +if(_retargetedDropRow!==nil){ +row=_retargetedDropRow; +} +if(_27f===CPTableViewDropOn&&row>=objj_msgSend(self,"numberOfRows")){ +row=objj_msgSend(self,"numberOfRows")-1; +} +var rect={origin:{x:0,y:0},size:{width:0,height:0}}; +if(row===-1){ +rect=_282; +}else{ +if(_27f===CPTableViewDropAbove){ +rect=objj_msgSend(self,"_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:",row-1,row,_27e); +}else{ +rect=objj_msgSend(self,"_rectForDropHighlightViewOnRow:",row); +} +} +objj_msgSend(_dropOperationFeedbackView,"setDropOperation:",row!==-1?_27f:CPDragOperationNone); +objj_msgSend(_dropOperationFeedbackView,"setHidden:",(_281==CPDragOperationNone)); +objj_msgSend(_dropOperationFeedbackView,"setFrame:",rect); +objj_msgSend(_dropOperationFeedbackView,"setCurrentRow:",row); +objj_msgSend(self,"addSubview:",_dropOperationFeedbackView); +return _281; +} +}),new objj_method(sel_getUid("prepareForDragOperation:"),function(self,_283,_284){ +with(self){ +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +return (_implementedDataSourceMethods&_6); +} +}),new objj_method(sel_getUid("performDragOperation:"),function(self,_285,_286){ +with(self){ +var _287=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_286,"draggingLocation"),nil),_288=objj_msgSend(self,"_proposedDropOperationAtPoint:",_287),row=_retargetedDropRow; +if(row===nil){ +var row=objj_msgSend(self,"_proposedRowAtPoint:",_287); +} +return objj_msgSend(_dataSource,"tableView:acceptDrop:row:dropOperation:",self,_286,row,_288); +} +}),new objj_method(sel_getUid("concludeDragOperation:"),function(self,_289,_28a){ +with(self){ +objj_msgSend(self,"reloadData"); +} +}),new objj_method(sel_getUid("draggedImage:endedAt:operation:"),function(self,_28b,_28c,_28d,_28e){ +with(self){ +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:didEndDraggedImage:atPosition:operation:"))){ +objj_msgSend(_dataSource,"tableView:didEndDraggedImage:atPosition:operation:",self,_28c,_28d,_28e); +} +} +}),new objj_method(sel_getUid("draggedView:endedAt:operation:"),function(self,_28f,_290,_291,_292){ +with(self){ +objj_msgSend(self,"_draggingEnded"); +objj_msgSend(self,"draggedImage:endedAt:operation:",_290,_291,_292); +} +}),new objj_method(sel_getUid("_updateSelectionWithMouseAtRow:"),function(self,_293,aRow){ +with(self){ +if(aRow<0){ +return; +} +var _294,_295=NO; +if(objj_msgSend(self,"mouseDownFlags")&(CPCommandKeyMask|CPControlKeyMask|CPAlternateKeyMask)){ +if(objj_msgSend(_selectedRowIndexes,"containsIndex:",aRow)){ +_294=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_294,"removeIndex:",aRow); +}else{ +if(_allowsMultipleSelection){ +_294=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_294,"addIndex:",aRow); +}else{ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndex:",aRow); +} +} +}else{ +if(_allowsMultipleSelection){ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(MIN(aRow,_selectionAnchorRow),ABS(aRow-_selectionAnchorRow)+1)); +_295=objj_msgSend(self,"mouseDownFlags")&CPShiftKeyMask&&((_lastSelectedRow==objj_msgSend(_selectedRowIndexes,"lastIndex")&&aRow>_lastSelectedRow)||(_lastSelectedRow==objj_msgSend(_selectedRowIndexes,"firstIndex")&&aRow<_lastSelectedRow)); +}else{ +if(aRow>=0&&aRow<_numberOfRows){ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndex:",aRow); +}else{ +_294=objj_msgSend(CPIndexSet,"indexSet"); +} +} +} +if(objj_msgSend(_294,"isEqualToIndexSet:",_selectedRowIndexes)){ +return; +} +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +if(_implementedDelegateMethods&_11){ +_294=objj_msgSend(_delegate,"tableView:selectionIndexesForProposedSelection:",self,_294); +} +if(_implementedDelegateMethods&_13){ +var _296=[]; +objj_msgSend(_294,"getIndexes:maxCount:inIndexRange:",_296,-1,nil); +var _297=_296.length; +while(_297--){ +var _298=_296[_297]; +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,_298)){ +objj_msgSend(_294,"removeIndex:",_298); +} +} +if(objj_msgSend(_294,"count")===0){ +return; +} +} +if(!_allowsEmptySelection&&objj_msgSend(_294,"count")===0){ +return; +} +if(objj_msgSend(_294,"isEqualToIndexSet:",_selectedRowIndexes)){ +return; +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",_294,_295); +} +}),new objj_method(sel_getUid("_noteSelectionIsChanging"),function(self,_299){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewSelectionIsChangingNotification,self,nil); +} +}),new objj_method(sel_getUid("_noteSelectionDidChange"),function(self,_29a){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewSelectionDidChangeNotification,self,nil); +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(self,_29b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(self,_29c){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("keyDown:"),function(self,_29d,_29e){ +with(self){ +objj_msgSend(self,"interpretKeyEvents:",[_29e]); +} +}),new objj_method(sel_getUid("moveDown:"),function(self,_29f,_2a0){ +with(self){ +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +var _2a1=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"count")>0){ +var _2a2=NO; +if((objj_msgSend(_2a1,"modifierFlags")&CPShiftKeyMask)&&_allowsMultipleSelection){ +_2a2=YES; +} +var i=objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"lastIndex"); +if(i<objj_msgSend(self,"numberOfRows")-1){ +i++; +} +}else{ +var _2a2=NO; +if(objj_msgSend(self,"numberOfRows")>0){ +var i=0; +} +} +if(_implementedDelegateMethods&_13){ +while((!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i))&&i<objj_msgSend(self,"numberOfRows")){ +i++; +} +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i)){ +return; +} +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",i),_2a2); +if(i>=0){ +objj_msgSend(self,"scrollRowToVisible:",i); +} +} +}),new objj_method(sel_getUid("moveDownAndModifySelection:"),function(self,_2a3,_2a4){ +with(self){ +objj_msgSend(self,"moveDown:",_2a4); +} +}),new objj_method(sel_getUid("moveUp:"),function(self,_2a5,_2a6){ +with(self){ +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +var _2a7=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"count")>0){ +var _2a8=NO; +if((objj_msgSend(_2a7,"modifierFlags")&CPShiftKeyMask)&&_allowsMultipleSelection){ +_2a8=YES; +} +var i=objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"firstIndex"); +if(i>0){ +i--; +} +}else{ +var _2a8=NO; +if(objj_msgSend(self,"numberOfRows")>0){ +var i=objj_msgSend(self,"numberOfRows")-1; +} +} +if(_implementedDelegateMethods&_13){ +while((!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i))&&i>0){ +i--; +} +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i)){ +return; +} +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",i),_2a8); +if(i>=0){ +objj_msgSend(self,"scrollRowToVisible:",i); +} +} +}),new objj_method(sel_getUid("moveUpAndModifySelection:"),function(self,_2a9,_2aa){ +with(self){ +objj_msgSend(self,"moveUp:",_2aa); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(self,_2ab,_2ac){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewDeleteKeyPressed:"))){ +objj_msgSend(_delegate,"tableViewDeleteKeyPressed:",self); +} +} +})]); +class_addMethods(_1e,[new objj_method(sel_getUid("themeClass"),function(self,_2ad){ +with(self){ +return "tableview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(self,_2ae){ +with(self){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["alternating-row-colors","grid-color","highlighted-grid-color","selection-color","sourcelist-selection-color","sort-image","sort-image-reversed"]); +} +})]); +var _1d=objj_getClass("CPTableView"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(self,_2af,_2b0){ +with(self){ +if(_2b0==="selectionIndexes"){ +return "selectedRowIndexes"; +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"_replacementKeyPathForBinding:",_2b0); +} +}),new objj_method(sel_getUid("_establishBindingsIfUnbound:"),function(self,_2b1,_2b2){ +with(self){ +if(objj_msgSend(objj_msgSend(self,"infoForBinding:","content"),"objectForKey:",CPObservedObjectKey)!==_2b2){ +objj_msgSend(self,"bind:toObject:withKeyPath:options:","content",_2b2,"arrangedObjects",nil); +} +if(objj_msgSend(objj_msgSend(self,"infoForBinding:","selectionIndexes"),"objectForKey:",CPObservedObjectKey)!==_2b2){ +objj_msgSend(self,"bind:toObject:withKeyPath:options:","selectionIndexes",_2b2,"selectionIndexes",nil); +} +} +}),new objj_method(sel_getUid("setContent:"),function(self,_2b3,_2b4){ +with(self){ +objj_msgSend(self,"reloadData"); +} +})]); +var _2b5="CPTableViewDataSourceKey",_2b6="CPTableViewDelegateKey",_2b7="CPTableViewHeaderViewKey",_2b8="CPTableViewTableColumnsKey",_2b9="CPTableViewRowHeightKey",_2ba="CPTableViewIntercellSpacingKey",_2bb="CPTableViewSelectionHighlightStyleKey",_2bc="CPTableViewMultipleSelectionKey",_2bd="CPTableViewEmptySelectionKey",_2be="CPTableViewColumnReorderingKey",_2bf="CPTableViewColumnResizingKey",_2c0="CPTableViewColumnSelectionKey",_2c1="CPTableViewColumnAutoresizingStyleKey",_2c2="CPTableViewGridColorKey",_2c3="CPTableViewGridStyleMaskKey",_2c4="CPTableViewUsesAlternatingBackgroundKey",_2c5="CPTableViewAlternatingRowColorsKey",_2b7="CPTableViewHeaderViewKey",_2c6="CPTableViewCornerViewKey"; +var _1d=objj_getClass("CPTableView"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("initWithCoder:"),function(self,_2c7,_2c8){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"initWithCoder:",_2c8); +if(self){ +_allowsColumnReordering=objj_msgSend(_2c8,"decodeBoolForKey:",_2be); +_allowsColumnResizing=objj_msgSend(_2c8,"decodeBoolForKey:",_2bf); +_allowsMultipleSelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2bc); +_allowsEmptySelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2bd); +_allowsColumnSelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2c0); +_selectionHighlightStyle=objj_msgSend(_2c8,"decodeIntForKey:",_2bb); +_columnAutoResizingStyle=objj_msgSend(_2c8,"decodeIntForKey:",_2c1); +_tableColumns=objj_msgSend(_2c8,"decodeObjectForKey:",_2b8)||[]; +objj_msgSend(_tableColumns,"makeObjectsPerformSelector:withObject:",sel_getUid("setTableView:"),self); +if(objj_msgSend(_2c8,"containsValueForKey:",_2b9)){ +_rowHeight=objj_msgSend(_2c8,"decodeFloatForKey:",_2b9); +}else{ +_rowHeight=23; +} +_intercellSpacing=objj_msgSend(_2c8,"decodeSizeForKey:",_2ba)||{width:3,height:2}; +objj_msgSend(self,"setGridColor:",objj_msgSend(_2c8,"decodeObjectForKey:",_2c2)); +_gridStyleMask=objj_msgSend(_2c8,"decodeIntForKey:",_2c3)||CPTableViewGridNone; +_usesAlternatingRowBackgroundColors=objj_msgSend(_2c8,"decodeObjectForKey:",_2c4); +objj_msgSend(self,"setAlternatingRowBackgroundColors:",objj_msgSend(_2c8,"decodeObjectForKey:",_2c5)); +_headerView=objj_msgSend(_2c8,"decodeObjectForKey:",_2b7); +_cornerView=objj_msgSend(_2c8,"decodeObjectForKey:",_2c6); +if(_cornerView){ +objj_msgSend(_cornerView,"setHidden:",NO); +} +_dataSource=objj_msgSend(_2c8,"decodeObjectForKey:",_2b5); +_delegate=objj_msgSend(_2c8,"decodeObjectForKey:",_2b6); +objj_msgSend(self,"_init"); +objj_msgSend(self,"viewWillMoveToSuperview:",objj_msgSend(self,"superview")); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_2c9,_2ca){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"encodeWithCoder:",_2ca); +objj_msgSend(_2ca,"encodeObject:forKey:",_dataSource,_2b5); +objj_msgSend(_2ca,"encodeObject:forKey:",_delegate,_2b6); +objj_msgSend(_2ca,"encodeFloat:forKey:",_rowHeight,_2b9); +objj_msgSend(_2ca,"encodeSize:forKey:",_intercellSpacing,_2ba); +objj_msgSend(_2ca,"encodeInt:forKey:",_selectionHighlightStyle,_2bb); +objj_msgSend(_2ca,"encodeInt:forKey:",_columnAutoResizingStyle,_2c1); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsMultipleSelection,_2bc); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsEmptySelection,_2bd); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnReordering,_2be); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnResizing,_2bf); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnSelection,_2c0); +objj_msgSend(_2ca,"encodeObject:forKey:",_tableColumns,_2b8); +objj_msgSend(_2ca,"encodeObject:forKey:",objj_msgSend(self,"gridColor"),_2c2); +objj_msgSend(_2ca,"encodeInt:forKey:",_gridStyleMask,_2c3); +objj_msgSend(_2ca,"encodeBool:forKey:",_usesAlternatingRowBackgroundColors,_2c4); +objj_msgSend(_2ca,"encodeObject:forKey:",objj_msgSend(self,"alternatingRowBackgroundColors"),_2c5); +objj_msgSend(_2ca,"encodeObject:forKey:",_cornerView,_2c6); +objj_msgSend(_2ca,"encodeObject:forKey:",_headerView,_2b7); +} +})]); +var _1d=objj_getClass("CPIndexSet"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("removeMatches:"),function(self,_2cb,_2cc){ +with(self){ +var _2cd=objj_msgSend(self,"firstIndex"); +var _2ce=MIN(_2cd,objj_msgSend(_2cc,"firstIndex")); +var _2cf=(_2ce==_2cd); +while(_2ce!=CPNotFound){ +var _2d0=(_2cf)?_2cc:self; +otherIndex=objj_msgSend(_2d0,"indexGreaterThanOrEqualToIndex:",_2ce); +if(otherIndex==_2ce){ +objj_msgSend(self,"removeIndex:",_2ce); +objj_msgSend(_2cc,"removeIndex:",_2ce); +} +_2ce=otherIndex; +_2cf=!_2cf; +} +} +})]); +var _1d=objj_allocateClassPair(CPView,"_CPDropOperationDrawingView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("dropOperation"),new objj_ivar("tableView"),new objj_ivar("currentRow"),new objj_ivar("isBlinking")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("dropOperation"),function(self,_2d1){ +with(self){ +return dropOperation; +} +}),new objj_method(sel_getUid("setDropOperation:"),function(self,_2d2,_2d3){ +with(self){ +dropOperation=_2d3; +} +}),new objj_method(sel_getUid("tableView"),function(self,_2d4){ +with(self){ +return tableView; +} +}),new objj_method(sel_getUid("setTableView:"),function(self,_2d5,_2d6){ +with(self){ +tableView=_2d6; +} +}),new objj_method(sel_getUid("currentRow"),function(self,_2d7){ +with(self){ +return currentRow; +} +}),new objj_method(sel_getUid("setCurrentRow:"),function(self,_2d8,_2d9){ +with(self){ +currentRow=_2d9; +} +}),new objj_method(sel_getUid("isBlinking"),function(self,_2da){ +with(self){ +return isBlinking; +} +}),new objj_method(sel_getUid("setIsBlinking:"),function(self,_2db,_2dc){ +with(self){ +isBlinking=_2dc; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_2dd,_2de){ +with(self){ +if(tableView._destinationDragStyle===CPTableViewDraggingDestinationFeedbackStyleNone||isBlinking){ +return; +} +var _2df=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"colorWithHexString:","4886ca")); +CGContextSetLineWidth(_2df,3); +if(currentRow===-1){ +CGContextStrokeRect(_2df,objj_msgSend(self,"bounds")); +}else{ +if(dropOperation===CPTableViewDropOn){ +var _2e0=objj_msgSend(tableView,"selectedRowIndexes"),_2e1={origin:{x:_2de.origin.x+2,y:_2de.origin.y+2},size:{width:_2de.size.width-4,height:_2de.size.height-5}}; +if(objj_msgSend(_2e0,"containsIndex:",currentRow)){ +CGContextSetLineWidth(_2df,2); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"whiteColor")); +}else{ +CGContextSetFillColor(_2df,objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",72/255,134/255,202/255,0.25)); +CGContextFillRoundedRectangleInRect(_2df,_2e1,8,YES,YES,YES,YES); +} +CGContextStrokeRoundedRectangleInRect(_2df,_2e1,8,YES,YES,YES,YES); +}else{ +if(dropOperation===CPTableViewDropAbove){ +objj_msgSend(self,"setFrameOrigin:",CGPointMake(_frame.origin.x,_frame.origin.y-8)); +var _2e0=objj_msgSend(tableView,"selectedRowIndexes"); +if(objj_msgSend(_2e0,"containsIndex:",currentRow-1)||objj_msgSend(_2e0,"containsIndex:",currentRow)){ +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"whiteColor")); +CGContextSetLineWidth(_2df,4); +CGContextStrokeEllipseInRect(_2df,{origin:{x:_2de.origin.x+4,y:_2de.origin.y+4},size:{width:8,height:8}}); +CGContextBeginPath(_2df); +CGContextMoveToPoint(_2df,10,_2de.origin.y+8); +CGContextAddLineToPoint(_2df,_2de.size.width-_2de.origin.y-8,_2de.origin.y+8); +CGContextClosePath(_2df); +CGContextStrokePath(_2df); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"colorWithHexString:","4886ca")); +CGContextSetLineWidth(_2df,3); +} +CGContextStrokeEllipseInRect(_2df,{origin:{x:_2de.origin.x+4,y:_2de.origin.y+4},size:{width:8,height:8}}); +CGContextBeginPath(_2df); +CGContextMoveToPoint(_2df,10,_2de.origin.y+8); +CGContextAddLineToPoint(_2df,_2de.size.width-_2de.origin.y-8,_2de.origin.y+8); +CGContextClosePath(_2df); +CGContextStrokePath(_2df); +} +} +} +} +}),new objj_method(sel_getUid("blink"),function(self,_2e2){ +with(self){ +if(dropOperation!==CPTableViewDropOn){ +return; +} +isBlinking=YES; +var _2e3=function(){ +objj_msgSend(self,"setHidden:",NO); +isBlinking=NO; +}; +var _2e4=function(){ +objj_msgSend(self,"setHidden:",YES); +isBlinking=YES; +}; +objj_msgSend(self,"setHidden:",YES); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.1,_2e3,NO); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.19,_2e4,NO); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.27,_2e3,NO); +} +})]); +var _1d=objj_allocateClassPair(CPView,"_CPColumnDragView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_lineColor")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("initWithLineColor:"),function(self,_2e5,_2e6){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPColumnDragView").super_class},"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +if(self){ +_lineColor=_2e6; +} +return self; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_2e7,_2e8){ +with(self){ +var _2e9=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(_2e9,_lineColor); +var _2ea=[{x:0.5,y:0},{x:0.5,y:_2e8.size.height}]; +CGContextStrokeLineSegments(_2e9,_2ea,2); +_2ea=[{x:_2e8.size.width-0.5,y:0},{x:_2e8.size.width-0.5,y:_2e8.size.height}]; +CGContextStrokeLineSegments(_2e9,_2ea,2); +} +})]); +p;11;CPTabView.jt;18841;@STATIC;1.0;i;13;CPImageView.ji;15;CPTabViewItem.ji;8;CPView.jt;18771; +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPTabViewItem.j",YES); +objj_executeFile("CPView.j",YES); +CPTopTabsBezelBorder=0; +CPNoTabsBezelBorder=4; +CPNoTabsLineBorder=5; +CPNoTabsNoBorder=6; +var _1=nil,_2=nil,_3=nil,_4=nil,_5=nil; +var _6=7,_7=7; +var _8=1,_9=2,_a=4,_b=8; +var _c=objj_allocateClassPair(CPView,"CPTabView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_labelsView"),new objj_ivar("_backgroundView"),new objj_ivar("_separatorView"),new objj_ivar("_auxiliaryView"),new objj_ivar("_contentView"),new objj_ivar("_tabViewItems"),new objj_ivar("_selectedTabViewItem"),new objj_ivar("_tabViewType"),new objj_ivar("_delegate"),new objj_ivar("_delegateSelectors")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_e,_f,_10){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPTabView").super_class},"initWithFrame:",_10); +if(_e){ +_tabViewType=CPTopTabsBezelBorder; +_tabViewItems=[]; +} +return _e; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_11,_12){ +with(_11){ +if(_tabViewType!=CPTopTabsBezelBorder||_labelsView){ +return; +} +objj_msgSend(_11,"_createBezelBorder"); +objj_msgSend(_11,"layoutSubviews"); +} +}),new objj_method(sel_getUid("_createBezelBorder"),function(_13,_14){ +with(_13){ +var _15=objj_msgSend(_13,"bounds"); +_labelsView=objj_msgSend(objj_msgSend(_CPTabLabelsView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_15),0)); +objj_msgSend(_labelsView,"setTabView:",_13); +objj_msgSend(_labelsView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_13,"addSubview:",_labelsView); +_backgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_backgroundView,"setBackgroundColor:",_5); +objj_msgSend(_backgroundView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_13,"addSubview:",_backgroundView); +_separatorView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_separatorView,"setBackgroundColor:",objj_msgSend(objj_msgSend(_13,"class"),"bezelBorderColor")); +objj_msgSend(_separatorView,"setAutoresizingMask:",CPViewWidthSizable|CPViewMaxYMargin); +objj_msgSend(_13,"addSubview:",_separatorView); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_16,_17){ +with(_16){ +if(_tabViewType==CPTopTabsBezelBorder){ +var _18=objj_msgSend(_16,"bounds"),_19=objj_msgSend(_CPTabLabelsView,"height"); +_18.origin.y+=_19; +_18.size.height-=_19; +objj_msgSend(_backgroundView,"setFrame:",_18); +var _1a=5; +if(_auxiliaryView){ +_1a=CGRectGetHeight(objj_msgSend(_auxiliaryView,"frame")); +objj_msgSend(_auxiliaryView,"setFrame:",CGRectMake(_6,_19,CGRectGetWidth(_18)-_6-_7,_1a)); +} +objj_msgSend(_separatorView,"setFrame:",CGRectMake(_6,_19+_1a,CGRectGetWidth(_18)-_6-_7,1)); +} +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_16,"contentRect")); +} +}),new objj_method(sel_getUid("addTabViewItem:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"insertTabViewItem:atIndex:",_1d,objj_msgSend(_tabViewItems,"count")); +} +}),new objj_method(sel_getUid("insertTabViewItem:atIndex:"),function(_1e,_1f,_20,_21){ +with(_1e){ +if(!_labelsView){ +objj_msgSend(_1e,"_createBezelBorder"); +} +objj_msgSend(_tabViewItems,"insertObject:atIndex:",_20,_21); +objj_msgSend(_labelsView,"tabView:didAddTabViewItem:",_1e,_20); +objj_msgSend(_20,"_setTabView:",_1e); +if(objj_msgSend(_tabViewItems,"count")==1){ +objj_msgSend(_1e,"selectFirstTabViewItem:",_1e); +} +if(_delegateSelectors&_b){ +objj_msgSend(_delegate,"tabViewDidChangeNumberOfTabViewItems:",_1e); +} +} +}),new objj_method(sel_getUid("removeTabViewItem:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_22,"indexOfTabViewItem:",_24); +objj_msgSend(_tabViewItems,"removeObjectIdenticalTo:",_24); +objj_msgSend(_labelsView,"tabView:didRemoveTabViewItemAtIndex:",_22,_25); +objj_msgSend(_24,"_setTabView:",nil); +if(_delegateSelectors&_b){ +objj_msgSend(_delegate,"tabViewDidChangeNumberOfTabViewItems:",_22); +} +} +}),new objj_method(sel_getUid("indexOfTabViewItem:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(_tabViewItems,"indexOfObjectIdenticalTo:",_28); +} +}),new objj_method(sel_getUid("indexOfTabViewItemWithIdentifier:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=0,_2d=objj_msgSend(_tabViewItems,"count"); +for(;_2c<_2d;++_2c){ +if(objj_msgSend(objj_msgSend(_tabViewItems[_2c],"identifier"),"isEqual:",_2b)){ +return _2c; +} +} +return _2c; +} +}),new objj_method(sel_getUid("numberOfTabViewItems"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_tabViewItems,"count"); +} +}),new objj_method(sel_getUid("tabViewItemAtIndex:"),function(_30,_31,_32){ +with(_30){ +return _tabViewItems[_32]; +} +}),new objj_method(sel_getUid("tabViewItems"),function(_33,_34){ +with(_33){ +return _tabViewItems; +} +}),new objj_method(sel_getUid("selectFirstTabViewItem:"),function(_35,_36,_37){ +with(_35){ +var _38=objj_msgSend(_tabViewItems,"count"); +if(_38){ +objj_msgSend(_35,"selectTabViewItemAtIndex:",0); +} +} +}),new objj_method(sel_getUid("selectLastTabViewItem:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=objj_msgSend(_tabViewItems,"count"); +if(_3c){ +objj_msgSend(_39,"selectTabViewItemAtIndex:",_3c-1); +} +} +}),new objj_method(sel_getUid("selectNextTabViewItem:"),function(_3d,_3e,_3f){ +with(_3d){ +if(!_selectedTabViewItem){ +return; +} +var _40=objj_msgSend(_3d,"indexOfTabViewItem:",_selectedTabViewItem),_41=objj_msgSend(_tabViewItems,"count"); +objj_msgSend(_3d,"selectTabViewItemAtIndex:",_40+1%_41); +} +}),new objj_method(sel_getUid("selectPreviousTabViewItem:"),function(_42,_43,_44){ +with(_42){ +if(!_selectedTabViewItem){ +return; +} +var _45=objj_msgSend(_42,"indexOfTabViewItem:",_selectedTabViewItem),_46=objj_msgSend(_tabViewItems,"count"); +objj_msgSend(_42,"selectTabViewItemAtIndex:",_45==0?_46:_45-1); +} +}),new objj_method(sel_getUid("selectTabViewItem:"),function(_47,_48,_49){ +with(_47){ +if((_delegateSelectors&_9)&&!objj_msgSend(_delegate,"tabView:shouldSelectTabViewItem:",_47,_49)){ +return; +} +if(_delegateSelectors&_a){ +objj_msgSend(_delegate,"tabView:willSelectTabViewItem:",_47,_49); +} +if(_selectedTabViewItem){ +_selectedTabViewItem._tabState=CPBackgroundTab; +objj_msgSend(_labelsView,"tabView:didChangeStateOfTabViewItem:",_47,_selectedTabViewItem); +} +_selectedTabViewItem=_49; +_selectedTabViewItem._tabState=CPSelectedTab; +var _4a=_contentView; +_contentView=objj_msgSend(_selectedTabViewItem,"view"); +if(_4a!==_contentView){ +objj_msgSend(_4a,"removeFromSuperview"); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_47,"addSubview:",_contentView); +} +var _4b=_auxiliaryView; +_auxiliaryView=objj_msgSend(_selectedTabViewItem,"auxiliaryView"); +if(_4b!==_auxiliaryView){ +objj_msgSend(_4b,"removeFromSuperview"); +objj_msgSend(_auxiliaryView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_47,"addSubview:",_auxiliaryView); +} +objj_msgSend(_labelsView,"tabView:didChangeStateOfTabViewItem:",_47,_selectedTabViewItem); +objj_msgSend(_47,"layoutSubviews"); +if(_delegateSelectors&_8){ +objj_msgSend(_delegate,"tabView:didSelectTabViewItem:",_47,_49); +} +} +}),new objj_method(sel_getUid("selectTabViewItemAtIndex:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"selectTabViewItem:",_tabViewItems[_4e]); +} +}),new objj_method(sel_getUid("selectedTabViewItem"),function(_4f,_50){ +with(_4f){ +return _selectedTabViewItem; +} +}),new objj_method(sel_getUid("setTabViewType:"),function(_51,_52,_53){ +with(_51){ +if(_tabViewType==_53){ +return; +} +_tabViewType=_53; +if(_tabViewType==CPNoTabsBezelBorder||_tabViewType==CPNoTabsLineBorder||_tabViewType==CPNoTabsNoBorder){ +objj_msgSend(_labelsView,"removeFromSuperview"); +}else{ +if(_labelsView&&!objj_msgSend(_labelsView,"superview")){ +objj_msgSend(_51,"addSubview:",_labelsView); +} +} +if(_tabViewType==CPNoTabsLineBorder||_tabViewType==CPNoTabsNoBorder){ +objj_msgSend(_backgroundView,"removeFromSuperview"); +}else{ +if(_backgroundView&&!objj_msgSend(_backgroundView,"superview")){ +objj_msgSend(_51,"addSubview:",_backgroundView); +} +} +objj_msgSend(_51,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabViewType"),function(_54,_55){ +with(_54){ +return _tabViewType; +} +}),new objj_method(sel_getUid("contentRect"),function(_56,_57){ +with(_56){ +var _58=CGRectMakeCopy(objj_msgSend(_56,"bounds")); +if(_tabViewType==CPTopTabsBezelBorder){ +var _59=objj_msgSend(_CPTabLabelsView,"height"),_5a=_auxiliaryView?CGRectGetHeight(objj_msgSend(_auxiliaryView,"frame")):5,_5b=1; +_58.origin.y+=_59+_5a+_5b; +_58.size.height-=_59+_5a+_5b*2; +_58.origin.x+=_6; +_58.size.width-=_6+_7; +} +return _58; +} +}),new objj_method(sel_getUid("delegate"),function(_5c,_5d){ +with(_5c){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_5e,_5f,_60){ +with(_5e){ +if(_delegate==_60){ +return; +} +_delegate=_60; +_delegateSelectors=0; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:shouldSelectTabViewItem:"))){ +_delegateSelectors|=_9; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:willSelectTabViewItem:"))){ +_delegateSelectors|=_a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:didSelectTabViewItem:"))){ +_delegateSelectors|=_8; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabViewDidChangeNumberOfTabViewItems:"))){ +_delegateSelectors|=_b; +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_61,_62,_63){ +with(_61){ +var _64=objj_msgSend(_labelsView,"convertPoint:fromView:",objj_msgSend(_63,"locationInWindow"),nil),_65=objj_msgSend(_labelsView,"representedTabViewItemAtPoint:",_64); +if(_65){ +objj_msgSend(_61,"selectTabViewItem:",_65); +} +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_66,_67){ +with(_66){ +if(_66!=CPTabView){ +return; +} +var _68=objj_msgSend(CPBundle,"bundleForClass:",_66),_69=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initByReferencingFile:size:","",CGSizeMake(7,0)),_6a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBackgroundCenter.png"),CGSizeMake(1,1)),_6b=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorderLeft.png"),CGSizeMake(7,1)),_6c=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorder.png"),CGSizeMake(1,1)),_6d=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorderRight.png"),CGSizeMake(7,1)); +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[_69,_69,_69,_6b,_6a,_6d,_6b,_6c,_6d])); +_4=objj_msgSend(CPColor,"colorWithPatternImage:",_6c); +} +}),new objj_method(sel_getUid("bezelBorderColor"),function(_6e,_6f){ +with(_6e){ +return _4; +} +})]); +var _70="CPTabViewItemsKey",_71="CPTabViewSelectedItemKey",_72="CPTabViewTypeKey",_73="CPTabViewDelegateKey"; +var _c=objj_getClass("CPTabView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPTabView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("initWithCoder:"),function(_74,_75,_76){ +with(_74){ +if(_74=objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPTabView").super_class},"initWithCoder:",_76)){ +_tabViewType=objj_msgSend(_76,"decodeIntForKey:",_72); +_tabViewItems=[]; +objj_msgSend(_74,"_createBezelBorder"); +var _77=objj_msgSend(_76,"decodeObjectForKey:",_70); +for(var i=0;_77&&i<_77.length;i++){ +objj_msgSend(_74,"insertTabViewItem:atIndex:",_77[i],i); +} +var _78=objj_msgSend(_76,"decodeObjectForKey:",_71); +if(_78){ +objj_msgSend(_74,"selectTabViewItem:",_78); +} +objj_msgSend(_74,"setDelegate:",objj_msgSend(_76,"decodeObjectForKey:",_73)); +} +return _74; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_79,_7a,_7b){ +with(_79){ +var _7c=_subviews; +_subviews=[]; +objj_msgSendSuper({receiver:_79,super_class:objj_getClass("CPTabView").super_class},"encodeWithCoder:",_7b); +_subviews=_7c; +objj_msgSend(_7b,"encodeObject:forKey:",_tabViewItems,_70); +objj_msgSend(_7b,"encodeObject:forKey:",_selectedTabViewItem,_71); +objj_msgSend(_7b,"encodeInt:forKey:",_tabViewType,_72); +objj_msgSend(_7b,"encodeConditionalObject:forKey:",_delegate,_73); +} +})]); +var _7d=nil,_7e=10,_7f=15; +var _c=objj_allocateClassPair(CPView,"_CPTabLabelsView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_tabView"),new objj_ivar("_tabLabels")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_80,_81,_82){ +with(_80){ +_80=objj_msgSendSuper({receiver:_80,super_class:objj_getClass("_CPTabLabelsView").super_class},"initWithFrame:",_82); +if(_80){ +_tabLabels=[]; +objj_msgSend(_80,"setBackgroundColor:",_7d); +objj_msgSend(_80,"setFrameSize:",CGSizeMake(CGRectGetWidth(_82),26)); +} +return _80; +} +}),new objj_method(sel_getUid("setTabView:"),function(_83,_84,_85){ +with(_83){ +_tabView=_85; +} +}),new objj_method(sel_getUid("tabView"),function(_86,_87){ +with(_86){ +return _tabView; +} +}),new objj_method(sel_getUid("tabView:didAddTabViewItem:"),function(_88,_89,_8a,_8b){ +with(_88){ +var _8c=objj_msgSend(objj_msgSend(_CPTabLabel,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_8c,"setTabViewItem:",_8b); +_tabLabels.push(_8c); +objj_msgSend(_88,"addSubview:",_8c); +objj_msgSend(_88,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabView:didRemoveTabViewItemAtIndex:"),function(_8d,_8e,_8f,_90){ +with(_8d){ +var _91=_tabLabels[_90]; +objj_msgSend(_tabLabels,"removeObjectAtIndex:",_90); +objj_msgSend(_91,"removeFromSuperview"); +objj_msgSend(_8d,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabView:didChangeStateOfTabViewItem:"),function(_92,_93,_94,_95){ +with(_92){ +objj_msgSend(_tabLabels[objj_msgSend(_94,"indexOfTabViewItem:",_95)],"setTabState:",objj_msgSend(_95,"tabState")); +} +}),new objj_method(sel_getUid("representedTabViewItemAtPoint:"),function(_96,_97,_98){ +with(_96){ +var _99=0,_9a=_tabLabels.length; +for(;_99<_9a;++_99){ +var _9b=_tabLabels[_99]; +if(CGRectContainsPoint(objj_msgSend(_9b,"frame"),_98)){ +return objj_msgSend(_9b,"tabViewItem"); +} +} +return nil; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_9c,_9d){ +with(_9c){ +var _9e=0,_9f=_tabLabels.length,_a0=((objj_msgSend(_9c,"bounds").size.width)-(_9f-1)*_7e-2*_7f)/_9f,x=_7f; +for(;_9e<_9f;++_9e){ +var _a1=_tabLabels[_9e],_a2={origin:{x:x,y:8},size:{width:_a0,height:18}}; +objj_msgSend(_a1,"setFrame:",_a2); +x=(_a2.origin.x+_a2.size.width)+_7e; +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_a3,_a4,_a5){ +with(_a3){ +if(CGSizeEqualToSize(objj_msgSend(_a3,"frame").size,_a5)){ +return; +} +objj_msgSendSuper({receiver:_a3,super_class:objj_getClass("_CPTabLabelsView").super_class},"setFrameSize:",_a5); +objj_msgSend(_a3,"layoutSubviews"); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_a6,_a7){ +with(_a6){ +if(_a6!=objj_msgSend(_CPTabLabelsView,"class")){ +return; +} +var _a8=objj_msgSend(CPBundle,"bundleForClass:",_a6); +_7d=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewLeft.png"),CGSizeMake(12,26)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewCenter.png"),CGSizeMake(1,26)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewRight.png"),CGSizeMake(12,26))],NO)); +} +}),new objj_method(sel_getUid("height"),function(_a9,_aa){ +with(_a9){ +return 26; +} +})]); +var _ab=nil,_ac=nil; +var _c=objj_allocateClassPair(CPView,"_CPTabLabel"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_tabViewItem"),new objj_ivar("_labelField")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_ad,_ae,_af){ +with(_ad){ +_ad=objj_msgSendSuper({receiver:_ad,super_class:objj_getClass("_CPTabLabel").super_class},"initWithFrame:",_af); +if(_ad){ +_labelField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_labelField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_labelField,"setFrame:",CGRectMake(5,0,CGRectGetWidth(_af)-10,20)); +objj_msgSend(_labelField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_labelField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",11)); +objj_msgSend(_ad,"addSubview:",_labelField); +objj_msgSend(_ad,"setTabState:",CPBackgroundTab); +} +return _ad; +} +}),new objj_method(sel_getUid("setTabState:"),function(_b0,_b1,_b2){ +with(_b0){ +objj_msgSend(_b0,"setBackgroundColor:",_b2==CPSelectedTab?_ac:_ab); +} +}),new objj_method(sel_getUid("setTabViewItem:"),function(_b3,_b4,_b5){ +with(_b3){ +_tabViewItem=_b5; +objj_msgSend(_b3,"update"); +} +}),new objj_method(sel_getUid("tabViewItem"),function(_b6,_b7){ +with(_b6){ +return _tabViewItem; +} +}),new objj_method(sel_getUid("update"),function(_b8,_b9){ +with(_b8){ +objj_msgSend(_labelField,"setStringValue:",objj_msgSend(_tabViewItem,"label")); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_ba,_bb){ +with(_ba){ +if(_ba!=objj_msgSend(_CPTabLabel,"class")){ +return; +} +var _bc=objj_msgSend(CPBundle,"bundleForClass:",_ba); +_ab=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundLeft.png"),CGSizeMake(6,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundCenter.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundRight.png"),CGSizeMake(6,18))],NO)); +_ac=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedLeft.png"),CGSizeMake(3,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedCenter.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedRight.png"),CGSizeMake(3,18))],NO)); +} +})]); +p;15;CPTabViewItem.jt;2872;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPView.jt;2807; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPSelectedTab=0; +CPBackgroundTab=1; +CPPressedTab=2; +var _1=objj_allocateClassPair(CPObject,"CPTabViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier"),new objj_ivar("_label"),new objj_ivar("_view"),new objj_ivar("_auxiliaryView"),new objj_ivar("_tabView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPTabViewItem").super_class},"init"); +if(_5){ +_identifier=_7; +} +return _5; +} +}),new objj_method(sel_getUid("setLabel:"),function(_8,_9,_a){ +with(_8){ +_label=_a; +} +}),new objj_method(sel_getUid("label"),function(_b,_c){ +with(_b){ +return _label; +} +}),new objj_method(sel_getUid("tabState"),function(_d,_e){ +with(_d){ +return _tabState; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_f,_10,_11){ +with(_f){ +_identifier=_11; +} +}),new objj_method(sel_getUid("identifier"),function(_12,_13){ +with(_12){ +return _identifier; +} +}),new objj_method(sel_getUid("setView:"),function(_14,_15,_16){ +with(_14){ +_view=_16; +} +}),new objj_method(sel_getUid("view"),function(_17,_18){ +with(_17){ +return _view; +} +}),new objj_method(sel_getUid("setAuxiliaryView:"),function(_19,_1a,_1b){ +with(_19){ +_auxiliaryView=_1b; +} +}),new objj_method(sel_getUid("auxiliaryView"),function(_1c,_1d){ +with(_1c){ +return _auxiliaryView; +} +}),new objj_method(sel_getUid("tabView"),function(_1e,_1f){ +with(_1e){ +return _tabView; +} +}),new objj_method(sel_getUid("_setTabView:"),function(_20,_21,_22){ +with(_20){ +_tabView=_22; +} +})]); +var _23="CPTabViewItemIdentifierKey",_24="CPTabViewItemLabelKey",_25="CPTabViewItemViewKey",_26="CPTabViewItemAuxViewKey"; +var _1=objj_getClass("CPTabViewItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTabViewItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_27,_28,_29){ +with(_27){ +_27=objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPTabViewItem").super_class},"init"); +if(_27){ +_identifier=objj_msgSend(_29,"decodeObjectForKey:",_23); +_label=objj_msgSend(_29,"decodeObjectForKey:",_24); +_view=objj_msgSend(_29,"decodeObjectForKey:",_25); +_auxiliaryView=objj_msgSend(_29,"decodeObjectForKey:",_26); +} +return _27; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2a,_2b,_2c){ +with(_2a){ +objj_msgSend(_2c,"encodeObject:forKey:",_identifier,_23); +objj_msgSend(_2c,"encodeObject:forKey:",_label,_24); +objj_msgSend(_2c,"encodeObject:forKey:",_view,_25); +objj_msgSend(_2c,"encodeObject:forKey:",_auxiliaryView,_26); +} +})]); +p;8;CPText.jt;265;@STATIC;1.0;i;8;CPView.jt;235; +objj_executeFile("CPView.j",YES); +CPEnterCharacter=""; +CPBackspaceCharacter="\b"; +CPTabCharacter="\t"; +CPNewlineCharacter="\n"; +CPFormFeedCharacter="\f"; +CPCarriageReturnCharacter="\r"; +CPBackTabCharacter=""; +CPDeleteCharacter=""; +p;13;CPTextField.jt;29823;@STATIC;1.0;i;11;CPControl.ji;17;CPStringDrawing.ji;17;CPCompatibility.ji;21;_CPImageAndTextView.jt;29717; +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPStringDrawing.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("_CPImageAndTextView.j",YES); +CPTextFieldSquareBezel=0; +CPTextFieldRoundedBezel=1; +CPTextFieldDidFocusNotification="CPTextFieldDidFocusNotification"; +CPTextFieldDidBlurNotification="CPTextFieldDidBlurNotification"; +var _1=nil,_2=nil,_3=nil,_4=nil,_5=nil,_6=NO,_7=NO,_8=NO,_9=nil,_a=nil,_b=nil; +var _c="•"; +var _d=objj_getClass("CPString"); +if(!_d){ +throw new SyntaxError("*** Could not find definition for class \"CPString\""); +} +var _e=_d.isa; +class_addMethods(_d,[new objj_method(sel_getUid("string"),function(_f,_10){ +with(_f){ +return _f; +} +})]); +CPTextFieldStateRounded=CPThemeState("rounded"); +CPTextFieldStatePlaceholder=CPThemeState("placeholder"); +var _d=objj_allocateClassPair(CPControl,"CPTextField"),_e=_d.isa; +class_addIvars(_d,[new objj_ivar("_isEditing"),new objj_ivar("_isEditable"),new objj_ivar("_isSelectable"),new objj_ivar("_isSecure"),new objj_ivar("_drawsBackground"),new objj_ivar("_textFieldBackgroundColor"),new objj_ivar("_placeholderString"),new objj_ivar("_delegate"),new objj_ivar("_textDidChangeValue"),new objj_ivar("_bezelStyle"),new objj_ivar("_isBordered"),new objj_ivar("_controlSize")]); +objj_registerClassPair(_d); +class_addMethods(_d,[new objj_method(sel_getUid("_inputElement"),function(_11,_12){ +with(_11){ +if(!_1){ +_1=document.createElement("input"); +_1.style.position="absolute"; +_1.style.border="0px"; +_1.style.padding="0px"; +_1.style.margin="0px"; +_1.style.whiteSpace="pre"; +_1.style.background="transparent"; +_1.style.outline="none"; +_b=function(_13){ +if(_4&&_4._DOMElement!=_1.parentNode){ +return; +} +if(!_6){ +objj_msgSend(objj_msgSend(_4,"window"),"makeFirstResponder:",nil); +return; +} +CPTextFieldHandleBlur(_13,_1); +_7=YES; +return true; +}; +CPTextFieldHandleBlur=function(_14){ +_4=nil; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +}; +_1.onblur=_b; +_3=_1; +} +if(CPFeatureIsCompatible(CPInputTypeCanBeChangedFeature)){ +if(objj_msgSend(_11,"isSecure")){ +_1.type="password"; +}else{ +_1.type="text"; +} +return _1; +} +if(objj_msgSend(_11,"isSecure")){ +if(!_2){ +_2=document.createElement("input"); +_2.style.position="absolute"; +_2.style.border="0px"; +_2.style.padding="0px"; +_2.style.margin="0px"; +_2.style.whiteSpace="pre"; +_2.style.background="transparent"; +_2.style.outline="none"; +_2.type="password"; +_2.onblur=_b; +} +_1=_2; +}else{ +_1=_3; +} +return _1; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_15,_16,_17){ +with(_15){ +_15=objj_msgSendSuper({receiver:_15,super_class:objj_getClass("CPTextField").super_class},"initWithFrame:",_17); +if(_15){ +objj_msgSend(_15,"setStringValue:",""); +objj_msgSend(_15,"setPlaceholderString:",""); +_sendActionOn=CPKeyUpMask|CPKeyDownMask; +objj_msgSend(_15,"setValue:forThemeAttribute:",CPLeftTextAlignment,"alignment"); +} +return _15; +} +}),new objj_method(sel_getUid("setEditable:"),function(_18,_19,_1a){ +with(_18){ +if(_isEditable===_1a){ +return; +} +_isEditable=_1a; +if(_1a){ +_isSelectable=YES; +} +if(!_1a&&objj_msgSend(objj_msgSend(_18,"window"),"firstResponder")===_18){ +objj_msgSend(objj_msgSend(_18,"window"),"makeFirstResponder:",nil); +} +} +}),new objj_method(sel_getUid("isEditable"),function(_1b,_1c){ +with(_1b){ +return _isEditable; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSendSuper({receiver:_1d,super_class:objj_getClass("CPTextField").super_class},"setEnabled:",_1f); +if(!_1f&&objj_msgSend(objj_msgSend(_1d,"window"),"firstResponder")===_1d){ +objj_msgSend(objj_msgSend(_1d,"window"),"makeFirstResponder:",nil); +} +} +}),new objj_method(sel_getUid("setSelectable:"),function(_20,_21,_22){ +with(_20){ +_isSelectable=_22; +} +}),new objj_method(sel_getUid("isSelectable"),function(_23,_24){ +with(_23){ +return _isSelectable; +} +}),new objj_method(sel_getUid("setSecure:"),function(_25,_26,_27){ +with(_25){ +_isSecure=_27; +} +}),new objj_method(sel_getUid("isSecure"),function(_28,_29){ +with(_28){ +return _isSecure; +} +}),new objj_method(sel_getUid("setBezeled:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_2c){ +objj_msgSend(_2a,"setThemeState:",CPThemeStateBezeled); +}else{ +objj_msgSend(_2a,"unsetThemeState:",CPThemeStateBezeled); +} +} +}),new objj_method(sel_getUid("isBezeled"),function(_2d,_2e){ +with(_2d){ +return objj_msgSend(_2d,"hasThemeState:",CPThemeStateBezeled); +} +}),new objj_method(sel_getUid("setBezelStyle:"),function(_2f,_30,_31){ +with(_2f){ +var _32=_31===CPTextFieldRoundedBezel; +if(_32){ +objj_msgSend(_2f,"setThemeState:",CPTextFieldStateRounded); +}else{ +objj_msgSend(_2f,"unsetThemeState:",CPTextFieldStateRounded); +} +} +}),new objj_method(sel_getUid("bezelStyle"),function(_33,_34){ +with(_33){ +if(objj_msgSend(_33,"hasThemeState:",CPTextFieldStateRounded)){ +return CPTextFieldRoundedBezel; +} +return CPTextFieldSquareBezel; +} +}),new objj_method(sel_getUid("setBordered:"),function(_35,_36,_37){ +with(_35){ +if(_37){ +objj_msgSend(_35,"setThemeState:",CPThemeStateBordered); +}else{ +objj_msgSend(_35,"unsetThemeState:",CPThemeStateBordered); +} +} +}),new objj_method(sel_getUid("isBordered"),function(_38,_39){ +with(_38){ +return objj_msgSend(_38,"hasThemeState:",CPThemeStateBordered); +} +}),new objj_method(sel_getUid("setDrawsBackground:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_drawsBackground==_3c){ +return; +} +_drawsBackground=_3c; +objj_msgSend(_3a,"setNeedsLayout"); +objj_msgSend(_3a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawsBackground"),function(_3d,_3e){ +with(_3d){ +return _drawsBackground; +} +}),new objj_method(sel_getUid("setTextFieldBackgroundColor:"),function(_3f,_40,_41){ +with(_3f){ +if(_textFieldBackgroundColor==_41){ +return; +} +_textFieldBackgroundColor=_41; +objj_msgSend(_3f,"setNeedsLayout"); +objj_msgSend(_3f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("textFieldBackgroundColor"),function(_42,_43){ +with(_42){ +return _textFieldBackgroundColor; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_44,_45){ +with(_44){ +return objj_msgSend(_44,"isEditable")&&objj_msgSend(_44,"isEnabled"); +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(_46,_47){ +with(_46){ +if(_4&&objj_msgSend(_4,"window")!==objj_msgSend(_46,"window")){ +objj_msgSend(objj_msgSend(_4,"window"),"makeFirstResponder:",nil); +} +objj_msgSend(_46,"setThemeState:",CPThemeStateEditing); +objj_msgSend(_46,"_updatePlaceholderState"); +objj_msgSend(_46,"setNeedsLayout"); +_isEditing=NO; +var _48=objj_msgSend(_46,"stringValue"),_49=objj_msgSend(_46,"_inputElement"); +_49.value=_48; +_49.style.color=objj_msgSend(objj_msgSend(_46,"currentValueForThemeAttribute:","text-color"),"cssString"); +_49.style.font=objj_msgSend(objj_msgSend(_46,"currentValueForThemeAttribute:","font"),"cssString"); +_49.style.zIndex=1000; +switch(objj_msgSend(_46,"alignment")){ +case CPCenterTextAlignment: +_49.style.textAlign="center"; +break; +case CPRightTextAlignment: +_49.style.textAlign="right"; +break; +default: +_49.style.textAlign="left"; +} +var _4a=objj_msgSend(_46,"contentRectForBounds:",objj_msgSend(_46,"bounds")); +_49.style.top=(_4a.origin.y)+"px"; +_49.style.left=((_4a.origin.x)-1)+"px"; +_49.style.width=(_4a.size.width)+"px"; +_49.style.height=(_4a.size.height)+"px"; +_DOMElement.appendChild(_49); +window.setTimeout(function(){ +_49.focus(); +objj_msgSend(_46,"textDidFocus:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPTextFieldDidFocusNotification,_46,nil)); +_4=_46; +},0); +_49.value=objj_msgSend(_46,"stringValue"); +objj_msgSend(objj_msgSend(objj_msgSend(_46,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +_8=YES; +if(document.attachEvent){ +_9=objj_msgSend(objj_msgSend(_46,"window"),"platformWindow")._DOMBodyElement.onselectstart; +_a=objj_msgSend(objj_msgSend(_46,"window"),"platformWindow")._DOMBodyElement.ondrag; +objj_msgSend(objj_msgSend(_46,"window"),"platformWindow")._DOMBodyElement.ondrag=function(){ +}; +objj_msgSend(objj_msgSend(_46,"window"),"platformWindow")._DOMBodyElement.onselectstart=function(){ +}; +} +return YES; +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_4b,"unsetThemeState:",CPThemeStateEditing); +objj_msgSend(_4b,"_updatePlaceholderState"); +objj_msgSend(_4b,"setNeedsLayout"); +var _4d=objj_msgSend(_4b,"_inputElement"); +objj_msgSend(_4b,"setObjectValue:",_4d.value); +_6=YES; +_4d.blur(); +if(!_7){ +_b(); +} +_7=NO; +_6=NO; +if(_4d.parentNode==_DOMElement){ +_4d.parentNode.removeChild(_4d); +} +_8=NO; +if(document.attachEvent){ +objj_msgSend(objj_msgSend(_4b,"window"),"platformWindow")._DOMBodyElement.ondrag=_a; +objj_msgSend(objj_msgSend(_4b,"window"),"platformWindow")._DOMBodyElement.onselectstart=_9; +_9=nil; +_a=nil; +} +if(_isEditing){ +_isEditing=NO; +objj_msgSend(_4b,"textDidEndEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidEndEditingNotification,_4b,nil)); +if(objj_msgSend(_4b,"sendsActionOnEndEditing")){ +objj_msgSend(_4b,"sendAction:to:",objj_msgSend(_4b,"action"),objj_msgSend(_4b,"target")); +} +} +objj_msgSend(_4b,"textDidBlur:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPTextFieldDidBlurNotification,_4b,nil)); +return YES; +} +}),new objj_method(sel_getUid("needsPanelToBecomeKey"),function(_4e,_4f){ +with(_4e){ +return YES; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_50,_51,_52){ +with(_50){ +if(objj_msgSend(_50,"isEditable")&&objj_msgSend(_50,"isEnabled")){ +return objj_msgSend(objj_msgSend(_50,"window"),"makeFirstResponder:",_50); +}else{ +if(objj_msgSend(_50,"isSelectable")){ +if(document.attachEvent){ +_9=objj_msgSend(objj_msgSend(_50,"window"),"platformWindow")._DOMBodyElement.onselectstart; +_a=objj_msgSend(objj_msgSend(_50,"window"),"platformWindow")._DOMBodyElement.ondrag; +objj_msgSend(objj_msgSend(_50,"window"),"platformWindow")._DOMBodyElement.ondrag=function(){ +}; +objj_msgSend(objj_msgSend(_50,"window"),"platformWindow")._DOMBodyElement.onselectstart=function(){ +}; +} +return objj_msgSend(objj_msgSend(objj_msgSend(_52,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +}else{ +return objj_msgSend(objj_msgSend(_50,"nextResponder"),"mouseDown:",_52); +} +} +} +}),new objj_method(sel_getUid("mouseUp:"),function(_53,_54,_55){ +with(_53){ +if(!objj_msgSend(_53,"isSelectable")&&(!objj_msgSend(_53,"isEditable")||!objj_msgSend(_53,"isEnabled"))){ +objj_msgSend(objj_msgSend(_53,"nextResponder"),"mouseUp:",_55); +}else{ +if(objj_msgSend(_53,"isSelectable")){ +if(document.attachEvent){ +objj_msgSend(objj_msgSend(_53,"window"),"platformWindow")._DOMBodyElement.ondrag=_a; +objj_msgSend(objj_msgSend(_53,"window"),"platformWindow")._DOMBodyElement.onselectstart=_9; +_9=nil; +_a=nil; +} +return objj_msgSend(objj_msgSend(objj_msgSend(_55,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_56,_57,_58){ +with(_56){ +if(!objj_msgSend(_56,"isSelectable")&&(!objj_msgSend(_56,"isEditable")||!objj_msgSend(_56,"isEnabled"))){ +objj_msgSend(objj_msgSend(_56,"nextResponder"),"mouseDragged:",_58); +}else{ +if(objj_msgSend(_56,"isSelectable")){ +return objj_msgSend(objj_msgSend(objj_msgSend(_58,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("keyUp:"),function(_59,_5a,_5b){ +with(_59){ +var _5c=objj_msgSend(_59,"stringValue"); +objj_msgSend(_59,"_setStringValue:",objj_msgSend(_59,"_inputElement").value); +if(_5c!==objj_msgSend(_59,"stringValue")){ +if(!_isEditing){ +_isEditing=YES; +objj_msgSend(_59,"textDidBeginEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidBeginEditingNotification,_59,nil)); +} +objj_msgSend(_59,"textDidChange:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidChangeNotification,_59,nil)); +} +objj_msgSend(objj_msgSend(objj_msgSend(_59,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("keyDown:"),function(_5d,_5e,_5f){ +with(_5d){ +if(objj_msgSend(_5f,"keyCode")===CPReturnKeyCode){ +if(_isEditing){ +_isEditing=NO; +objj_msgSend(_5d,"textDidEndEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidEndEditingNotification,_5d,nil)); +} +objj_msgSend(_5d,"sendAction:to:",objj_msgSend(_5d,"action"),objj_msgSend(_5d,"target")); +objj_msgSend(_5d,"selectText:",nil); +objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +}else{ +if(objj_msgSend(_5f,"keyCode")===CPTabKeyCode){ +if(objj_msgSend(_5f,"modifierFlags")&CPShiftKeyMask){ +objj_msgSend(objj_msgSend(_5d,"window"),"selectPreviousKeyView:",_5d); +}else{ +objj_msgSend(objj_msgSend(_5d,"window"),"selectNextKeyView:",_5d); +} +if(objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"firstResponder"),"respondsToSelector:",sel_getUid("selectText:"))){ +objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"firstResponder"),"selectText:",_5d); +} +objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_5d,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("textDidBlur:"),function(_60,_61,_62){ +with(_60){ +if(objj_msgSend(_62,"object")!=_60){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotification:",_62); +} +}),new objj_method(sel_getUid("textDidFocus:"),function(_63,_64,_65){ +with(_63){ +if(objj_msgSend(_65,"object")!=_63){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotification:",_65); +} +}),new objj_method(sel_getUid("objectValue"),function(_66,_67){ +with(_66){ +return objj_msgSendSuper({receiver:_66,super_class:objj_getClass("CPTextField").super_class},"objectValue"); +} +}),new objj_method(sel_getUid("_setStringValue:"),function(_68,_69,_6a){ +with(_68){ +objj_msgSend(_68,"willChangeValueForKey:","objectValue"); +objj_msgSendSuper({receiver:_68,super_class:objj_getClass("CPTextField").super_class},"setObjectValue:",String(_6a)); +objj_msgSend(_68,"_updatePlaceholderState"); +objj_msgSend(_68,"didChangeValueForKey:","objectValue"); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_6b,_6c,_6d){ +with(_6b){ +objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPTextField").super_class},"setObjectValue:",_6d); +if(_4===_6b||objj_msgSend(objj_msgSend(_6b,"window"),"firstResponder")===_6b){ +objj_msgSend(_6b,"_inputElement").value=_6d; +} +objj_msgSend(_6b,"_updatePlaceholderState"); +} +}),new objj_method(sel_getUid("_updatePlaceholderState"),function(_6e,_6f){ +with(_6e){ +var _70=objj_msgSend(_6e,"stringValue"); +if((!_70||_70.length===0)&&!objj_msgSend(_6e,"hasThemeState:",CPThemeStateEditing)){ +objj_msgSend(_6e,"setThemeState:",CPTextFieldStatePlaceholder); +}else{ +objj_msgSend(_6e,"unsetThemeState:",CPTextFieldStatePlaceholder); +} +} +}),new objj_method(sel_getUid("setPlaceholderString:"),function(_71,_72,_73){ +with(_71){ +if(_placeholderString===_73){ +return; +} +_placeholderString=_73; +if(objj_msgSend(_71,"hasThemeState:",CPTextFieldStatePlaceholder)){ +objj_msgSend(_71,"setNeedsLayout"); +objj_msgSend(_71,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("placeholderString"),function(_74,_75){ +with(_74){ +return _placeholderString; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_76,_77){ +with(_76){ +var _78=objj_msgSend((objj_msgSend(_76,"stringValue")||" "),"sizeWithFont:",objj_msgSend(_76,"currentValueForThemeAttribute:","font")),_79=objj_msgSend(_76,"currentValueForThemeAttribute:","content-inset"),_7a=objj_msgSend(_76,"currentValueForThemeAttribute:","min-size"),_7b=objj_msgSend(_76,"currentValueForThemeAttribute:","max-size"); +_78.width=MAX(_78.width+_79.left+_79.right,_7a.width); +_78.height=MAX(_78.height+_79.top+_79.bottom,_7a.height); +if(_7b.width>=0){ +_78.width=MIN(_78.width,_7b.width); +} +if(_7b.height>=0){ +_78.height=MIN(_78.height,_7b.height); +} +if(objj_msgSend(_76,"isEditable")){ +_78.width=CGRectGetWidth(objj_msgSend(_76,"frame")); +} +objj_msgSend(_76,"setFrameSize:",_78); +} +}),new objj_method(sel_getUid("selectText:"),function(_7c,_7d,_7e){ +with(_7c){ +var _7f=objj_msgSend(_7c,"_inputElement"); +if((objj_msgSend(_7c,"isEditable")||objj_msgSend(_7c,"isSelectable"))){ +if(objj_msgSend(objj_msgSend(_7c,"window"),"firstResponder")===_7c){ +window.setTimeout(function(){ +_7f.select(); +},0); +}else{ +if(objj_msgSend(_7c,"window")!==nil&&objj_msgSend(objj_msgSend(_7c,"window"),"makeFirstResponder:",_7c)){ +window.setTimeout(function(){ +objj_msgSend(_7c,"selectText:",_7e); +},0); +} +} +} +} +}),new objj_method(sel_getUid("copy:"),function(_80,_81,_82){ +with(_80){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +var _83=objj_msgSend(_80,"selectedRange"); +if(_83.length<1){ +return; +} +var _84=objj_msgSend(CPPasteboard,"generalPasteboard"),_85=objj_msgSend(_80,"stringValue"),_86=objj_msgSend(_85,"substringWithRange:",_83); +objj_msgSend(_84,"declareTypes:owner:",[CPStringPboardType],nil); +objj_msgSend(_84,"setString:forType:",_86,CPStringPboardType); +} +} +}),new objj_method(sel_getUid("cut:"),function(_87,_88,_89){ +with(_87){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_87,"copy:",_89); +objj_msgSend(_87,"deleteBackward:",_89); +} +} +}),new objj_method(sel_getUid("paste:"),function(_8a,_8b,_8c){ +with(_8a){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +var _8d=objj_msgSend(CPPasteboard,"generalPasteboard"); +if(!objj_msgSend(objj_msgSend(_8d,"types"),"containsObject:",CPStringPboardType)){ +return; +} +objj_msgSend(_8a,"deleteBackward:",_8c); +var _8e=objj_msgSend(_8a,"selectedRange"),_8f=objj_msgSend(_8a,"stringValue"),_90=objj_msgSend(_8d,"stringForType:",CPStringPboardType),_91=objj_msgSend(_8f,"stringByReplacingCharactersInRange:withString:",_8e,_90); +objj_msgSend(_8a,"setStringValue:",_91); +objj_msgSend(_8a,"setSelectedRange:",CPMakeRange(_8e.location+_90.length,0)); +} +} +}),new objj_method(sel_getUid("selectedRange"),function(_92,_93){ +with(_92){ +if(objj_msgSend(objj_msgSend(_92,"window"),"firstResponder")!==_92){ +return CPMakeRange(0,0); +} +try{ +var _94=objj_msgSend(_92,"_inputElement"),_95=_94.selectionStart,_96=_94.selectionEnd; +if(objj_msgSend(_95,"isKindOfClass:",CPNumber)){ +return CPMakeRange(_95,_96-_95); +} +var _97=_94.ownerDocument||_94.document,_98=_97.selection.createRange(),_99=_94.createTextRange(); +if(_99.inRange(_98)){ +_99.setEndPoint("EndToStart",_98); +return CPMakeRange(_99.text.length,_98.text.length); +} +} +catch(e){ +} +return CGMakeRange(0,0); +} +}),new objj_method(sel_getUid("setSelectedRange:"),function(_9a,_9b,_9c){ +with(_9a){ +if(!objj_msgSend(objj_msgSend(_9a,"window"),"firstResponder")===_9a){ +return; +} +var _9d=objj_msgSend(_9a,"_inputElement"); +try{ +if(objj_msgSend(_9d.selectionStart,"isKindOfClass:",CPNumber)){ +_9d.selectionStart=_9c.location; +_9d.selectionEnd=CPMaxRange(_9c); +}else{ +var _9e=_9d.ownerDocument||_9d.document,_9f=_9e.selection.createRange(),_a0=_9d.createTextRange(); +if(_a0.inRange(_9f)){ +_a0.collapse(true); +_a0.move("character",_9c.location); +_a0.moveEnd("character",_9c.length); +_a0.select(); +} +} +} +catch(e){ +} +} +}),new objj_method(sel_getUid("selectAll:"),function(_a1,_a2,_a3){ +with(_a1){ +objj_msgSend(_a1,"selectText:",_a3); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(_a4,_a5,_a6){ +with(_a4){ +var _a7=objj_msgSend(_a4,"selectedRange"),_a8=objj_msgSend(_a4,"stringValue"),_a9=objj_msgSend(_a8,"stringByReplacingCharactersInRange:withString:",_a7,""); +objj_msgSend(_a4,"setStringValue:",_a9); +objj_msgSend(_a4,"setSelectedRange:",CPMakeRange(_a7.location,0)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_aa,_ab,_ac){ +with(_aa){ +var _ad=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_delegate){ +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPControlTextDidBeginEditingNotification,_aa); +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPControlTextDidChangeNotification,_aa); +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPControlTextDidEndEditingNotification,_aa); +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPTextFieldDidFocusNotification,_aa); +objj_msgSend(_ad,"removeObserver:name:object:",_delegate,CPTextFieldDidBlurNotification,_aa); +} +_delegate=_ac; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidBeginEditing:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidBeginEditing:"),CPControlTextDidBeginEditingNotification,_aa); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidChange:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidChange:"),CPControlTextDidChangeNotification,_aa); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidEndEditing:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidEndEditing:"),CPControlTextDidEndEditingNotification,_aa); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidFocus:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidFocus:"),CPTextFieldDidFocusNotification,_aa); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidBlur:"))){ +objj_msgSend(_ad,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidBlur:"),CPTextFieldDidBlurNotification,_aa); +} +} +}),new objj_method(sel_getUid("delegate"),function(_ae,_af){ +with(_ae){ +return _delegate; +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_b0,_b1,_b2){ +with(_b0){ +var _b3=objj_msgSend(_b0,"currentValueForThemeAttribute:","content-inset"); +if(!_b3){ +return _b2; +} +_b2.origin.x+=_b3.left; +_b2.origin.y+=_b3.top; +_b2.size.width-=_b3.left+_b3.right; +_b2.size.height-=_b3.top+_b3.bottom; +return _b2; +} +}),new objj_method(sel_getUid("bezelRectForBounds:"),function(_b4,_b5,_b6){ +with(_b4){ +var _b7=objj_msgSend(_b4,"currentValueForThemeAttribute:","bezel-inset"); +if(((_b7).top===0&&(_b7).right===0&&(_b7).bottom===0&&(_b7).left===0)){ +return _b6; +} +_b6.origin.x+=_b7.left; +_b6.origin.y+=_b7.top; +_b6.size.width-=_b7.left+_b7.right; +_b6.size.height-=_b7.top+_b7.bottom; +return _b6; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_b8,_b9,_ba){ +with(_b8){ +if(_ba==="bezel-view"){ +return objj_msgSend(_b8,"bezelRectForBounds:",objj_msgSend(_b8,"bounds")); +}else{ +if(_ba==="content-view"){ +return objj_msgSend(_b8,"contentRectForBounds:",objj_msgSend(_b8,"bounds")); +} +} +return objj_msgSendSuper({receiver:_b8,super_class:objj_getClass("CPTextField").super_class},"rectForEphemeralSubviewNamed:",_ba); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_bb,_bc,_bd){ +with(_bb){ +if(_bd==="bezel-view"){ +var _be=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_be,"setHitTests:",NO); +return _be; +}else{ +var _be=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_be,"setHitTests:",NO); +return _be; +} +return objj_msgSendSuper({receiver:_bb,super_class:objj_getClass("CPTextField").super_class},"createEphemeralSubviewNamed:",_bd); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_bf,_c0){ +with(_bf){ +var _c1=objj_msgSend(_bf,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","bezel-view",CPWindowBelow,"content-view"); +if(_c1){ +objj_msgSend(_c1,"setBackgroundColor:",objj_msgSend(_bf,"currentValueForThemeAttribute:","bezel-color")); +} +var _c2=objj_msgSend(_bf,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","content-view",CPWindowAbove,"bezel-view"); +if(_c2){ +objj_msgSend(_c2,"setHidden:",objj_msgSend(_bf,"hasThemeState:",CPThemeStateEditing)); +var _c3=""; +if(objj_msgSend(_bf,"hasThemeState:",CPTextFieldStatePlaceholder)){ +_c3=objj_msgSend(_bf,"placeholderString"); +}else{ +_c3=objj_msgSend(_bf,"stringValue"); +if(objj_msgSend(_bf,"isSecure")){ +_c3=_c4(_c3); +} +} +objj_msgSend(_c2,"setText:",_c3); +objj_msgSend(_c2,"setTextColor:",objj_msgSend(_bf,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_c2,"setFont:",objj_msgSend(_bf,"currentValueForThemeAttribute:","font")); +objj_msgSend(_c2,"setAlignment:",objj_msgSend(_bf,"currentValueForThemeAttribute:","alignment")); +objj_msgSend(_c2,"setVerticalAlignment:",objj_msgSend(_bf,"currentValueForThemeAttribute:","vertical-alignment")); +objj_msgSend(_c2,"setLineBreakMode:",objj_msgSend(_bf,"currentValueForThemeAttribute:","line-break-mode")); +objj_msgSend(_c2,"setTextShadowColor:",objj_msgSend(_bf,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_c2,"setTextShadowOffset:",objj_msgSend(_bf,"currentValueForThemeAttribute:","text-shadow-offset")); +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_c5,_c6,_c7,_c8){ +with(_c5){ +var _c9=_c8.length,_ca=objj_msgSend(_c8[0],"valueForKeyPath:",_c7); +objj_msgSend(_c5,"setStringValue:",_ca); +objj_msgSend(_c5,"setPlaceholderString:",""); +while(_c9-->1){ +if(_ca!==objj_msgSend(_c8[_c9],"valueForKeyPath:",_c7)){ +objj_msgSend(_c5,"setPlaceholderString:","Multiple Values"); +objj_msgSend(_c5,"setStringValue:",""); +} +} +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:"),function(_cb,_cc,_cd,_ce,_cf){ +with(_cb){ +return objj_msgSend(_cb,"textFieldWithStringValue:placeholder:width:theme:",_cd,_ce,_cf,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:theme:"),function(_d0,_d1,_d2,_d3,_d4,_d5){ +with(_d0){ +var _d6=objj_msgSend(objj_msgSend(_d0,"alloc"),"initWithFrame:",CGRectMake(0,0,_d4,29)); +objj_msgSend(_d6,"setTheme:",_d5); +objj_msgSend(_d6,"setStringValue:",_d2); +objj_msgSend(_d6,"setPlaceholderString:",_d3); +objj_msgSend(_d6,"setBordered:",YES); +objj_msgSend(_d6,"setBezeled:",YES); +objj_msgSend(_d6,"setEditable:",YES); +objj_msgSend(_d6,"sizeToFit"); +return _d6; +} +}),new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:"),function(_d7,_d8,_d9,_da,_db){ +with(_d7){ +return objj_msgSend(_d7,"roundedTextFieldWithStringValue:placeholder:width:theme:",_d9,_da,_db,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:theme:"),function(_dc,_dd,_de,_df,_e0,_e1){ +with(_dc){ +var _e2=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(0,0,_e0,29)); +objj_msgSend(_e2,"setTheme:",_e1); +objj_msgSend(_e2,"setStringValue:",_de); +objj_msgSend(_e2,"setPlaceholderString:",_df); +objj_msgSend(_e2,"setBezelStyle:",CPTextFieldRoundedBezel); +objj_msgSend(_e2,"setBordered:",YES); +objj_msgSend(_e2,"setBezeled:",YES); +objj_msgSend(_e2,"setEditable:",YES); +objj_msgSend(_e2,"sizeToFit"); +return _e2; +} +}),new objj_method(sel_getUid("labelWithTitle:"),function(_e3,_e4,_e5){ +with(_e3){ +return objj_msgSend(_e3,"labelWithTitle:theme:",_e5,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("labelWithTitle:theme:"),function(_e6,_e7,_e8,_e9){ +with(_e6){ +var _ea=objj_msgSend(objj_msgSend(_e6,"alloc"),"init"); +objj_msgSend(_ea,"setStringValue:",_e8); +objj_msgSend(_ea,"sizeToFit"); +return _ea; +} +}),new objj_method(sel_getUid("themeClass"),function(_eb,_ec){ +with(_eb){ +return "textfield"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_ed,_ee){ +with(_ed){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[{top:(0),right:(0),bottom:(0),left:(0)},{top:(2),right:(2),bottom:(2),left:(2)},objj_msgSend(CPNull,"null")],["bezel-inset","content-inset","bezel-color"]); +} +})]); +var _c4=function(_ef){ +if(!_ef){ +return ""; +} +return Array(_ef.length+1).join(_c); +}; +var _f0="CPTextFieldIsEditableKey",_f1="CPTextFieldIsSelectableKey",_f2="CPTextFieldIsBorderedKey",_f3="CPTextFieldIsBezeledKey",_f4="CPTextFieldBezelStyleKey",_f5="CPTextFieldDrawsBackgroundKey",_f6="CPTextFieldLineBreakModeKey",_f7="CPTextFieldAlignmentKey",_f8="CPTextFieldBackgroundColorKey",_f9="CPTextFieldPlaceholderStringKey"; +var _d=objj_getClass("CPTextField"); +if(!_d){ +throw new SyntaxError("*** Could not find definition for class \"CPTextField\""); +} +var _e=_d.isa; +class_addMethods(_d,[new objj_method(sel_getUid("initWithCoder:"),function(_fa,_fb,_fc){ +with(_fa){ +_fa=objj_msgSendSuper({receiver:_fa,super_class:objj_getClass("CPTextField").super_class},"initWithCoder:",_fc); +if(_fa){ +objj_msgSend(_fa,"setEditable:",objj_msgSend(_fc,"decodeBoolForKey:",_f0)); +objj_msgSend(_fa,"setSelectable:",objj_msgSend(_fc,"decodeBoolForKey:",_f1)); +objj_msgSend(_fa,"setDrawsBackground:",objj_msgSend(_fc,"decodeBoolForKey:",_f5)); +objj_msgSend(_fa,"setTextFieldBackgroundColor:",objj_msgSend(_fc,"decodeObjectForKey:",_f8)); +objj_msgSend(_fa,"setLineBreakMode:",objj_msgSend(_fc,"decodeIntForKey:",_f6)); +objj_msgSend(_fa,"setAlignment:",objj_msgSend(_fc,"decodeIntForKey:",_f7)); +objj_msgSend(_fa,"setPlaceholderString:",objj_msgSend(_fc,"decodeObjectForKey:",_f9)); +} +return _fa; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_fd,_fe,_ff){ +with(_fd){ +objj_msgSendSuper({receiver:_fd,super_class:objj_getClass("CPTextField").super_class},"encodeWithCoder:",_ff); +objj_msgSend(_ff,"encodeBool:forKey:",_isEditable,_f0); +objj_msgSend(_ff,"encodeBool:forKey:",_isSelectable,_f1); +objj_msgSend(_ff,"encodeBool:forKey:",_drawsBackground,_f5); +objj_msgSend(_ff,"encodeObject:forKey:",_textFieldBackgroundColor,_f8); +objj_msgSend(_ff,"encodeInt:forKey:",objj_msgSend(_fd,"lineBreakMode"),_f6); +objj_msgSend(_ff,"encodeInt:forKey:",objj_msgSend(_fd,"alignment"),_f7); +objj_msgSend(_ff,"encodeObject:forKey:",_placeholderString,_f9); +} +})]); +p;9;CPTheme.jt;12925;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;30;Foundation/CPKeyedUnarchiver.jt;12818; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +var _1={},_2=nil,_3=nil; +var _4=objj_allocateClassPair(CPObject,"CPTheme"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_attributes")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithName:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPTheme").super_class},"init"); +if(_6){ +_name=_8; +_attributes=objj_msgSend(CPDictionary,"dictionary"); +_1[_name]=_6; +} +return _6; +} +}),new objj_method(sel_getUid("name"),function(_9,_a){ +with(_9){ +return _name; +} +}),new objj_method(sel_getUid("classNames"),function(_b,_c){ +with(_b){ +return objj_msgSend(_attributes,"allKeys"); +} +}),new objj_method(sel_getUid("attributesForClass:"),function(_d,_e,_f){ +with(_d){ +if(!_f){ +return nil; +} +var _10=nil; +if(objj_msgSend(_f,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +var _11=CPClassFromString(_f); +if(_11){ +_f=_11; +}else{ +_10=_f; +} +} +if(!_10){ +if(objj_msgSend(_f,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +if(objj_msgSend(_f,"respondsToSelector:",sel_getUid("themeClass"))){ +_10=objj_msgSend(_f,"themeClass"); +}else{ +return nil; +} +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"aClass must be a class object or a string."); +} +} +return objj_msgSend(_attributes,"objectForKey:",_10); +} +}),new objj_method(sel_getUid("attributeNamesForClass:"),function(_12,_13,_14){ +with(_12){ +var _15=objj_msgSend(_12,"attributesForClass:",_14); +if(_15){ +return objj_msgSend(_15,"allKeys"); +}else{ +return objj_msgSend(CPArray,"array"); +} +} +}),new objj_method(sel_getUid("attributeWithName:forClass:"),function(_16,_17,_18,_19){ +with(_16){ +var _1a=objj_msgSend(_16,"attributesForClass:",_19); +if(!_1a){ +return nil; +} +return objj_msgSend(_1a,"objectForKey:",_18); +} +}),new objj_method(sel_getUid("valueForAttributeWithName:forClass:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +return objj_msgSend(_1b,"valueForAttributeWithName:inState:forClass:",_1d,CPThemeStateNormal,_1e); +} +}),new objj_method(sel_getUid("valueForAttributeWithName:inState:forClass:"),function(_1f,_20,_21,_22,_23){ +with(_1f){ +var _24=objj_msgSend(_1f,"attributeWithName:forClass:",_21,_23); +if(!_24){ +return nil; +} +return objj_msgSend(_24,"valueForState:",_22); +} +}),new objj_method(sel_getUid("takeThemeFromObject:"),function(_25,_26,_27){ +with(_25){ +var _28=objj_msgSend(_27,"_themeAttributeDictionary"),_29=nil,_2a=objj_msgSend(_28,"keyEnumerator"),_2b=objj_msgSend(objj_msgSend(_27,"class"),"themeClass"); +while(_29=objj_msgSend(_2a,"nextObject")){ +objj_msgSend(_25,"_recordAttribute:forClass:",objj_msgSend(_28,"objectForKey:",_29),_2b); +} +} +}),new objj_method(sel_getUid("_recordAttribute:forClass:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +if(!objj_msgSend(_2e,"hasValues")){ +return; +} +var _30=objj_msgSend(_attributes,"objectForKey:",_2f); +if(!_30){ +_30=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_attributes,"setObject:forKey:",_30,_2f); +} +var _31=objj_msgSend(_2e,"name"),_32=objj_msgSend(_30,"objectForKey:",_31); +if(_32){ +objj_msgSend(_30,"setObject:forKey:",objj_msgSend(_32,"attributeMergedWithAttribute:",_2e),_31); +}else{ +objj_msgSend(_30,"setObject:forKey:",_2e,_31); +} +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("setDefaultTheme:"),function(_33,_34,_35){ +with(_33){ +_2=_35; +} +}),new objj_method(sel_getUid("defaultTheme"),function(_36,_37){ +with(_36){ +return _2; +} +}),new objj_method(sel_getUid("setDefaultHudTheme:"),function(_38,_39,_3a){ +with(_38){ +_3=_3a; +} +}),new objj_method(sel_getUid("defaultHudTheme"),function(_3b,_3c){ +with(_3b){ +if(!_3){ +_3=objj_msgSend(CPTheme,"themeNamed:",objj_msgSend(objj_msgSend(_3b,"defaultTheme"),"name")+"-HUD"); +} +return _3; +} +}),new objj_method(sel_getUid("themeNamed:"),function(_3d,_3e,_3f){ +with(_3d){ +return _1[_3f]; +} +})]); +var _40="CPThemeNameKey",_41="CPThemeAttributesKey"; +var _4=objj_getClass("CPTheme"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPTheme\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_42,_43,_44){ +with(_42){ +_42=objj_msgSendSuper({receiver:_42,super_class:objj_getClass("CPTheme").super_class},"init"); +if(_42){ +_name=objj_msgSend(_44,"decodeObjectForKey:",_40); +_attributes=objj_msgSend(_44,"decodeObjectForKey:",_41); +_1[_name]=_42; +} +return _42; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_47,"encodeObject:forKey:",_name,_40); +objj_msgSend(_47,"encodeObject:forKey:",_attributes,_41); +} +})]); +var _4=objj_allocateClassPair(CPKeyedUnarchiver,"_CPThemeKeyedUnarchiver"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_bundle")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initForReadingWithData:bundle:"),function(_48,_49,_4a,_4b){ +with(_48){ +_48=objj_msgSendSuper({receiver:_48,super_class:objj_getClass("_CPThemeKeyedUnarchiver").super_class},"initForReadingWithData:",_4a); +if(_48){ +_bundle=_4b; +} +return _48; +} +}),new objj_method(sel_getUid("bundle"),function(_4c,_4d){ +with(_4c){ +return _bundle; +} +}),new objj_method(sel_getUid("awakenCustomResources"),function(_4e,_4f){ +with(_4e){ +return YES; +} +})]); +var _50={},_51={},_52=0; +CPThemeState=function(_53){ +var _54=_50[_53]; +if(_54===undefined){ +if(_53.indexOf("+")===-1){ +_54=1<<_52++; +}else{ +var _54=0,_55=_53.split("+"),_56=_55.length; +while(_56--){ +var _57=_55[_56],_58=_50[_57]; +if(_58===undefined){ +_58=1<<_52++; +_50[_57]=_58; +_51[_58]=_57; +} +_54|=_58; +} +} +_50[_53]=_54; +_51[_54]=_53; +} +return _54; +}; +CPThemeStateName=function(_59){ +var _5a=_51[_59]; +if(_5a!==undefined){ +return _5a; +} +if(!(_59&(_59-1))){ +return ""; +} +var _5b=1,_5a=""; +for(;_5b<_59;_5b<<=1){ +if(_59&_5b){ +_5a+=(_5a.length===0?"":"+")+_51[_5b]; +} +} +_51[_59]=_5a; +return _5a; +}; +_51[0]="normal"; +CPThemeStateNormal=_50["normal"]=0; +CPThemeStateDisabled=CPThemeState("disabled"); +CPThemeStateHighlighted=CPThemeState("highlighted"); +CPThemeStateSelected=CPThemeState("selected"); +CPThemeStateTableDataView=CPThemeState("tableDataView"); +CPThemeStateSelectedDataView=CPThemeStateSelectedTableDataView=CPThemeState("selectedTableDataView"); +CPThemeStateBezeled=CPThemeState("bezeled"); +CPThemeStateBordered=CPThemeState("bordered"); +CPThemeStateEditable=CPThemeState("editable"); +CPThemeStateEditing=CPThemeState("editing"); +CPThemeStateVertical=CPThemeState("vertical"); +CPThemeStateDefault=CPThemeState("default"); +CPThemeStateCircular=CPThemeState("circular"); +var _4=objj_allocateClassPair(CPObject,"_CPThemeAttribute"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_defaultValue"),new objj_ivar("_values"),new objj_ivar("_cache"),new objj_ivar("_parentAttribute")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("values"),function(_5c,_5d){ +with(_5c){ +return _values; +} +}),new objj_method(sel_getUid("initWithName:defaultValue:"),function(_5e,_5f,_60,_61){ +with(_5e){ +_5e=objj_msgSendSuper({receiver:_5e,super_class:objj_getClass("_CPThemeAttribute").super_class},"init"); +if(_5e){ +_cache={}; +_name=_60; +_defaultValue=_61; +_values=objj_msgSend(CPDictionary,"dictionary"); +} +return _5e; +} +}),new objj_method(sel_getUid("name"),function(_62,_63){ +with(_62){ +return _name; +} +}),new objj_method(sel_getUid("defaultValue"),function(_64,_65){ +with(_64){ +return _defaultValue; +} +}),new objj_method(sel_getUid("hasValues"),function(_66,_67){ +with(_66){ +return objj_msgSend(_values,"count")>0; +} +}),new objj_method(sel_getUid("isTrivial"),function(_68,_69){ +with(_68){ +return (objj_msgSend(_values,"count")===1)&&(Number(objj_msgSend(_values,"allKeys")[0])===CPThemeStateNormal); +} +}),new objj_method(sel_getUid("setValue:"),function(_6a,_6b,_6c){ +with(_6a){ +_cache={}; +if(_6c===undefined||_6c===nil){ +_values=objj_msgSend(CPDictionary,"dictionary"); +}else{ +_values=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_6c,String(CPThemeStateNormal)); +} +} +}),new objj_method(sel_getUid("setValue:forState:"),function(_6d,_6e,_6f,_70){ +with(_6d){ +_cache={}; +if((_6f===undefined)||(_6f===nil)){ +objj_msgSend(_values,"removeObjectForKey:",String(_70)); +}else{ +objj_msgSend(_values,"setObject:forKey:",_6f,String(_70)); +} +} +}),new objj_method(sel_getUid("value"),function(_71,_72){ +with(_71){ +return objj_msgSend(_71,"valueForState:",CPThemeStateNormal); +} +}),new objj_method(sel_getUid("valueForState:"),function(_73,_74,_75){ +with(_73){ +var _76=_cache[_75]; +if(_76!==undefined){ +return _76; +} +_76=objj_msgSend(_values,"objectForKey:",String(_75)); +if((_76===undefined||_76===nil)&&_75!==CPThemeStateNormal){ +if(_75&(_75-1)){ +var _77=0,_78=objj_msgSend(_values,"allKeys"),_79=_78.length; +while(_79--){ +var _7a=Number(_78[_79]); +if((_7a&_75)===_7a){ +var _7b=_7c[_7a]; +if(_7b===undefined){ +_7b=_7d(_7a); +} +if(_7b>_77){ +_77=_7b; +_76=objj_msgSend(_values,"objectForKey:",String(_7a)); +} +} +} +} +if(_76===undefined||_76===nil){ +_76=objj_msgSend(_values,"objectForKey:",String(CPThemeStateNormal)); +} +} +if(_76===undefined||_76===nil){ +_76=objj_msgSend(_parentAttribute,"valueForState:",_75); +} +if(_76===undefined||_76===nil){ +_76=_defaultValue; +} +_cache[_75]=_76; +return _76; +} +}),new objj_method(sel_getUid("setParentAttribute:"),function(_7e,_7f,_80){ +with(_7e){ +if(_parentAttribute===_80){ +return; +} +_cache={}; +_parentAttribute=_80; +} +}),new objj_method(sel_getUid("attributeMergedWithAttribute:"),function(_81,_82,_83){ +with(_81){ +var _84=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_name,_defaultValue); +_84._values=objj_msgSend(_values,"copy"); +objj_msgSend(_84._values,"addEntriesFromDictionary:",_83._values); +return _84; +} +})]); +var _4=objj_getClass("_CPThemeAttribute"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"_CPThemeAttribute\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_85,_86,_87){ +with(_85){ +_85=objj_msgSendSuper({receiver:_85,super_class:objj_getClass("_CPThemeAttribute").super_class},"init"); +if(_85){ +_cache={}; +_name=objj_msgSend(_87,"decodeObjectForKey:","name"); +_values=objj_msgSend(CPDictionary,"dictionary"); +if(objj_msgSend(_87,"containsValueForKey:","value")){ +var _88=CPThemeStateNormal; +if(objj_msgSend(_87,"containsValueForKey:","state")){ +_88=CPThemeState(objj_msgSend(_87,"decodeObjectForKey:","state")); +} +objj_msgSend(_values,"setObject:forKey:",objj_msgSend(_87,"decodeObjectForKey:","value"),_88); +}else{ +var _89=objj_msgSend(_87,"decodeObjectForKey:","values"),_8a=objj_msgSend(_89,"allKeys"),_8b=_8a.length; +while(_8b--){ +var key=_8a[_8b]; +objj_msgSend(_values,"setObject:forKey:",objj_msgSend(_89,"objectForKey:",key),CPThemeState(key)); +} +} +} +return _85; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8c,_8d,_8e){ +with(_8c){ +objj_msgSend(_8e,"encodeObject:forKey:",_name,"name"); +var _8f=objj_msgSend(_values,"allKeys"),_90=_8f.length; +if(_90===1){ +var _91=_8f[0]; +if(Number(_91)!==CPThemeStateNormal){ +objj_msgSend(_8e,"encodeObject:forKey:",CPThemeStateName(Number(_91)),"state"); +} +objj_msgSend(_8e,"encodeObject:forKey:",objj_msgSend(_values,"objectForKey:",_91),"value"); +}else{ +var _92=objj_msgSend(CPDictionary,"dictionary"); +while(_90--){ +var key=_8f[_90]; +objj_msgSend(_92,"setObject:forKey:",objj_msgSend(_values,"objectForKey:",key),CPThemeStateName(Number(key))); +} +objj_msgSend(_8e,"encodeObject:forKey:",_92,"values"); +} +} +})]); +var _7c=[0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6]; +var _7d=function(_93){ +var _94=0,_95=_93; +while(_93){ +++_94; +_93&=(_93-1); +} +_7c[_95]=_94; +return _94; +}; +_7d.displayName="numberOfOnes"; +CPThemeAttributeEncode=function(_96,_97){ +var _98=_97._values,_99=objj_msgSend(_98,"count"),key="$a"+objj_msgSend(_97,"name"); +if(_99===1){ +var _9a=objj_msgSend(_98,"allKeys")[0]; +if(Number(_9a)===0){ +objj_msgSend(_96,"encodeObject:forKey:",objj_msgSend(_98,"objectForKey:",_9a),key); +return YES; +} +} +if(_99>=1){ +objj_msgSend(_96,"encodeObject:forKey:",_97,key); +return YES; +} +return NO; +}; +CPThemeAttributeDecode=function(_9b,_9c,_9d,_9e,_9f){ +var key="$a"+_9c; +if(!objj_msgSend(_9b,"containsValueForKey:",key)){ +var _a0=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_9c,_9d); +}else{ +var _a0=objj_msgSend(_9b,"decodeObjectForKey:",key); +if(!_a0.isa||!objj_msgSend(_a0,"isKindOfClass:",objj_msgSend(_CPThemeAttribute,"class"))){ +var _a1=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_9c,_9d); +objj_msgSend(_a1,"setValue:",_a0); +_a0=_a1; +} +} +if(_9e&&_9f){ +objj_msgSend(_a0,"setParentAttribute:",objj_msgSend(_9e,"attributeWithName:forClass:",_9c,_9f)); +} +return _a0; +}; +p;14;CPThemeBlend.jt;1853;@STATIC;1.0;I;21;Foundation/CPObject.jI;16;AppKit/CPTheme.jI;29;AppKit/_CPCibCustomResource.jI;30;AppKit/_CPCibKeyedUnarchiver.jt;1718; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPTheme.j",NO); +objj_executeFile("AppKit/_CPCibCustomResource.j",NO); +objj_executeFile("AppKit/_CPCibKeyedUnarchiver.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPThemeBlend"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_bundle"),new objj_ivar("_themes"),new objj_ivar("_loadDelegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithContentsOfURL:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPThemeBlend").super_class},"init"); +if(_3){ +_bundle=objj_msgSend(objj_msgSend(CPBundle,"alloc"),"initWithPath:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("themes"),function(_6,_7){ +with(_6){ +return _themes; +} +}),new objj_method(sel_getUid("themeNames"),function(_8,_9){ +with(_8){ +var _a=[]; +for(var i=0;i<_themes.length;++i){ +_a.push(_themes[i].substring(0,_themes[i].indexOf(".keyedtheme"))); +} +return _a; +} +}),new objj_method(sel_getUid("loadWithDelegate:"),function(_b,_c,_d){ +with(_b){ +_loadDelegate=_d; +objj_msgSend(_bundle,"loadWithDelegate:",_b); +} +}),new objj_method(sel_getUid("bundleDidFinishLoading:"),function(_e,_f,_10){ +with(_e){ +_themes=objj_msgSend(_bundle,"objectForInfoDictionaryKey:","CPKeyedThemes"); +var _11=_themes.length; +while(_11--){ +var _12=objj_msgSend(_10,"pathForResource:",_themes[_11]),_13=objj_msgSend(objj_msgSend(_CPThemeKeyedUnarchiver,"alloc"),"initForReadingWithData:bundle:",objj_msgSend(objj_msgSend(CPURL,"URLWithString:",_12),"staticResourceData"),_bundle); +objj_msgSend(_13,"decodeObjectForKey:","root"); +objj_msgSend(_13,"finishDecoding"); +} +objj_msgSend(_loadDelegate,"blendDidFinishLoading:",_e); +} +})]); +p;11;CPToolbar.jt;24452;@STATIC;1.0;I;21;Foundation/CPObject.ji;15;CPPopUpButton.ji;15;CPToolbarItem.jt;24366; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPPopUpButton.j",YES); +objj_executeFile("CPToolbarItem.j",YES); +CPToolbarDisplayModeDefault=0; +CPToolbarDisplayModeIconAndLabel=1; +CPToolbarDisplayModeIconOnly=2; +CPToolbarDisplayModeLabelOnly=3; +var _1=nil; +var _2=nil; +var _3=objj_allocateClassPair(CPObject,"CPToolbar"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_identifier"),new objj_ivar("_displayMode"),new objj_ivar("_showsBaselineSeparator"),new objj_ivar("_allowsUserCustomization"),new objj_ivar("_isVisible"),new objj_ivar("_delegate"),new objj_ivar("_itemIdentifiers"),new objj_ivar("_identifiedItems"),new objj_ivar("_defaultItems"),new objj_ivar("_allowedItems"),new objj_ivar("_selectableItems"),new objj_ivar("_items"),new objj_ivar("_itemsSortedByVisibilityPriority"),new objj_ivar("_toolbarView"),new objj_ivar("_window")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +return objj_msgSend(_5,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPToolbar").super_class},"init"); +if(_7){ +_items=[]; +_identifier=_9; +_isVisible=YES; +objj_msgSend(CPToolbar,"_addToolbar:forIdentifier:",_7,_identifier); +} +return _7; +} +}),new objj_method(sel_getUid("setDisplayMode:"),function(_a,_b,_c){ +with(_a){ +} +}),new objj_method(sel_getUid("identifier"),function(_d,_e){ +with(_d){ +return _identifier; +} +}),new objj_method(sel_getUid("delegate"),function(_f,_10){ +with(_f){ +return _delegate; +} +}),new objj_method(sel_getUid("isVisible"),function(_11,_12){ +with(_11){ +return _isVisible; +} +}),new objj_method(sel_getUid("setVisible:"),function(_13,_14,_15){ +with(_13){ +if(_isVisible===_15){ +return; +} +_isVisible=_15; +objj_msgSend(_window,"_noteToolbarChanged"); +} +}),new objj_method(sel_getUid("_window"),function(_16,_17){ +with(_16){ +return _window; +} +}),new objj_method(sel_getUid("_setWindow:"),function(_18,_19,_1a){ +with(_18){ +_window=_1a; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_1b,_1c,_1d){ +with(_1b){ +if(_delegate===_1d){ +return; +} +_delegate=_1d; +objj_msgSend(_1b,"_reloadToolbarItems"); +} +}),new objj_method(sel_getUid("_loadConfiguration"),function(_1e,_1f){ +with(_1e){ +} +}),new objj_method(sel_getUid("_toolbarView"),function(_20,_21){ +with(_20){ +if(!_toolbarView){ +_toolbarView=objj_msgSend(objj_msgSend(_CPToolbarView,"alloc"),"initWithFrame:",CPRectMake(0,0,1200,59)); +objj_msgSend(_toolbarView,"setToolbar:",_20); +objj_msgSend(_toolbarView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +return _toolbarView; +} +}),new objj_method(sel_getUid("_reloadToolbarItems"),function(_22,_23){ +with(_22){ +_itemIdentifiers=objj_msgSend(_defaultItems,"valueForKey:","itemIdentifier")||[]; +if(_delegate){ +var _24=objj_msgSend(objj_msgSend(_delegate,"toolbarDefaultItemIdentifiers:",_22),"mutableCopy"); +if(_24){ +_itemIdentifiers=objj_msgSend(_itemIdentifiers,"arrayByAddingObjectsFromArray:",_24); +} +} +var _25=0,_26=objj_msgSend(_itemIdentifiers,"count"); +_items=[]; +for(;_25<_26;++_25){ +var _27=_itemIdentifiers[_25],_28=objj_msgSend(CPToolbarItem,"_standardItemWithItemIdentifier:",_27); +if(!_28){ +_28=objj_msgSend(_identifiedItems,"objectForKey:",_27); +} +if(!_28&&_delegate){ +_28=objj_msgSend(_delegate,"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",_22,_27,YES); +} +_28=objj_msgSend(_28,"copy"); +if(_28===nil){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Toolbar delegate "+_delegate+" returned nil toolbar item for identifier \""+_27+"\""); +} +_28._toolbar=_22; +objj_msgSend(_items,"addObject:",_28); +} +_itemsSortedByVisibilityPriority=objj_msgSend(_items,"sortedArrayUsingFunction:context:",_29,NULL); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +}),new objj_method(sel_getUid("items"),function(_2a,_2b){ +with(_2a){ +return _items; +} +}),new objj_method(sel_getUid("visibleItems"),function(_2c,_2d){ +with(_2c){ +return objj_msgSend(_toolbarView,"visibleItems"); +} +}),new objj_method(sel_getUid("itemsSortedByVisibilityPriority"),function(_2e,_2f){ +with(_2e){ +return _itemsSortedByVisibilityPriority; +} +}),new objj_method(sel_getUid("validateVisibleItems"),function(_30,_31){ +with(_30){ +var _32=objj_msgSend(_30,"visibleItems"),_33=objj_msgSend(_32,"count"); +while(_33--){ +objj_msgSend(_32[_33],"validate"); +} +} +}),new objj_method(sel_getUid("_itemForItemIdentifier:willBeInsertedIntoToolbar:"),function(_34,_35,_36,_37){ +with(_34){ +var _38=objj_msgSend(_identifiedItems,"objectForKey:",_36); +if(!_38){ +_38=objj_msgSend(CPToolbarItem,"_standardItemWithItemIdentifier:",_36); +if(_delegate&&!_38){ +_38=objj_msgSend(objj_msgSend(_delegate,"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",_34,_36,_37),"copy"); +if(!_38){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Toolbar delegate "+_delegate+" returned nil toolbar item for identifier "+_36); +} +} +objj_msgSend(_identifiedItems,"setObject:forKey:",_38,_36); +} +return _38; +} +}),new objj_method(sel_getUid("_itemsWithIdentifiers:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=[]; +for(var i=0;i<_3b.length;i++){ +objj_msgSend(_3c,"addObject:",objj_msgSend(_39,"_itemForItemIdentifier:willBeInsertedIntoToolbar:",_3b[i],NO)); +} +return _3c; +} +}),new objj_method(sel_getUid("_defaultToolbarItems"),function(_3d,_3e){ +with(_3d){ +if(!_defaultItems&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("toolbarDefaultItemIdentifiers:"))){ +_defaultItems=[]; +var _3f=objj_msgSend(_delegate,"toolbarDefaultItemIdentifiers:",_3d),_40=0,_41=objj_msgSend(_3f,"count"); +for(;_40<_41;++_40){ +objj_msgSend(_defaultItems,"addObject:",objj_msgSend(_3d,"_itemForItemIdentifier:willBeInsertedIntoToolbar:",_3f[_40],NO)); +} +} +return _defaultItems; +} +}),new objj_method(sel_getUid("toolbarItemDidChange:"),function(_42,_43,_44){ +with(_42){ +if(objj_msgSend(_identifiedItems,"objectForKey:",objj_msgSend(_44,"itemIdentifier"))){ +objj_msgSend(_identifiedItems,"setObject:forKey:",_44,objj_msgSend(_44,"itemIdentifier")); +} +var _45=0,_46=objj_msgSend(_items,"count"); +for(;_45<=_46;++_45){ +var _47=_items[_45]; +if(objj_msgSend(_47,"itemIdentifier")===objj_msgSend(_44,"itemIdentifier")){ +_items[_45]=_44; +_itemsSortedByVisibilityPriority=objj_msgSend(_items,"sortedArrayUsingFunction:context:",_29,NULL); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +} +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_48,_49){ +with(_48){ +if(_48!=objj_msgSend(CPToolbar,"class")){ +return; +} +_1=objj_msgSend(CPDictionary,"dictionary"); +_2=objj_msgSend(CPDictionary,"dictionary"); +} +}),new objj_method(sel_getUid("_addToolbar:forIdentifier:"),function(_4a,_4b,_4c,_4d){ +with(_4a){ +var _4e=objj_msgSend(_1,"objectForKey:",_4d); +if(!_4e){ +_4e=[]; +objj_msgSend(_1,"setObject:forKey:",_4e,_4d); +} +objj_msgSend(_4e,"addObject:",_4c); +} +})]); +var _4f="CPToolbarIdentifierKey",_50="CPToolbarDisplayModeKey",_51="CPToolbarShowsBaselineSeparatorKey",_52="CPToolbarAllowsUserCustomizationKey",_53="CPToolbarIsVisibleKey",_54="CPToolbarDelegateKey",_55="CPToolbarIdentifiedItemsKey",_56="CPToolbarDefaultItemsKey",_57="CPToolbarAllowedItemsKey",_58="CPToolbarSelectableItemsKey"; +var _3=objj_getClass("CPToolbar"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbar\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_59,_5a,_5b){ +with(_59){ +_59=objj_msgSendSuper({receiver:_59,super_class:objj_getClass("CPToolbar").super_class},"init"); +if(_59){ +_identifier=objj_msgSend(_5b,"decodeObjectForKey:",_4f); +_displayMode=objj_msgSend(_5b,"decodeIntForKey:",_50); +_showsBaselineSeparator=objj_msgSend(_5b,"decodeBoolForKey:",_51); +_allowsUserCustomization=objj_msgSend(_5b,"decodeBoolForKey:",_52); +_isVisible=objj_msgSend(_5b,"decodeBoolForKey:",_53); +_identifiedItems=objj_msgSend(_5b,"decodeObjectForKey:",_55); +_defaultItems=objj_msgSend(_5b,"decodeObjectForKey:",_56); +_allowedItems=objj_msgSend(_5b,"decodeObjectForKey:",_57); +_selectableItems=objj_msgSend(_5b,"decodeObjectForKey:",_58); +objj_msgSend(objj_msgSend(_identifiedItems,"allValues"),"makeObjectsPerformSelector:withObject:",sel_getUid("_setToolbar:"),_59); +_items=[]; +objj_msgSend(CPToolbar,"_addToolbar:forIdentifier:",_59,_identifier); +objj_msgSend(_59,"setDelegate:",objj_msgSend(_5b,"decodeObjectForKey:",_54)); +objj_msgSend(_59,"_reloadToolbarItems"); +} +return _59; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_5c,_5d,_5e){ +with(_5c){ +objj_msgSend(_5e,"encodeObject:forKey:",_identifier,_4f); +objj_msgSend(_5e,"encodeInt:forKey:",_displayMode,_50); +objj_msgSend(_5e,"encodeBool:forKey:",_showsBaselineSeparator,_51); +objj_msgSend(_5e,"encodeBool:forKey:",_allowsUserCustomization,_52); +objj_msgSend(_5e,"encodeBool:forKey:",_isVisible,_53); +objj_msgSend(_5e,"encodeObject:forKey:",_identifiedItems,_55); +objj_msgSend(_5e,"encodeObject:forKey:",_defaultItems,_56); +objj_msgSend(_5e,"encodeObject:forKey:",_allowedItems,_57); +objj_msgSend(_5e,"encodeObject:forKey:",_selectableItems,_58); +objj_msgSend(_5e,"encodeConditionalObject:forKey:",_delegate,_54); +} +})]); +var _5f=nil,_60=nil,_61=nil; +var _62=5,_63=10,_64=20; +var _65=function(_66,_67,_68,_69){ +return {index:_66,view:_67,label:_68,minWidth:_69}; +}; +var _3=objj_allocateClassPair(CPView,"_CPToolbarView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_toolbar"),new objj_ivar("_flexibleWidthIndexes"),new objj_ivar("_visibleFlexibleWidthIndexes"),new objj_ivar("_itemInfos"),new objj_ivar("_viewsForToolbarItems"),new objj_ivar("_visibleItems"),new objj_ivar("_invisibleItems"),new objj_ivar("_additionalItemsButton"),new objj_ivar("_labelColor"),new objj_ivar("_labelShadowColor"),new objj_ivar("_minWidth"),new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("visibleItems"),function(_6a,_6b){ +with(_6a){ +return _visibleItems; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_6c,_6d,_6e){ +with(_6c){ +_6c=objj_msgSendSuper({receiver:_6c,super_class:objj_getClass("_CPToolbarView").super_class},"initWithFrame:",_6e); +if(_6c){ +_minWidth=0; +_labelColor=objj_msgSend(CPColor,"blackColor"); +_labelShadowColor=objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.75); +_additionalItemsButton=objj_msgSend(objj_msgSend(CPPopUpButton,"alloc"),"initWithFrame:pullsDown:",CGRectMake(0,0,10,15),YES); +objj_msgSend(_additionalItemsButton,"setBordered:",NO); +objj_msgSend(_additionalItemsButton,"setImagePosition:",CPImageOnly); +objj_msgSend(objj_msgSend(_additionalItemsButton,"menu"),"setShowsStateColumn:",NO); +objj_msgSend(objj_msgSend(_additionalItemsButton,"menu"),"setAutoenablesItems:",NO); +objj_msgSend(_additionalItemsButton,"setAlternateImage:",_61); +} +return _6c; +} +}),new objj_method(sel_getUid("setToolbar:"),function(_6f,_70,_71){ +with(_6f){ +_toolbar=_71; +} +}),new objj_method(sel_getUid("toolbar"),function(_72,_73){ +with(_72){ +return _toolbar; +} +}),new objj_method(sel_getUid("FIXME_setIsHUD:"),function(_74,_75,_76){ +with(_74){ +if(_FIXME_isHUD===_76){ +return; +} +_FIXME_isHUD=_76; +var _77=objj_msgSend(_toolbar,"items"),_78=objj_msgSend(_77,"count"); +while(_78--){ +objj_msgSend(objj_msgSend(_74,"viewForItem:",_77[_78]),"FIXME_setIsHUD:",_76); +} +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"tile"); +} +}),new objj_method(sel_getUid("viewForItem:"),function(_7c,_7d,_7e){ +with(_7c){ +return _viewsForToolbarItems[objj_msgSend(_7e,"UID")]||nil; +} +}),new objj_method(sel_getUid("tile"),function(_7f,_80){ +with(_7f){ +var _81=objj_msgSend(_toolbar,"items"),_82=CGRectGetWidth(objj_msgSend(_7f,"bounds")),_83=_minWidth,_84=[]; +_visibleItems=_81; +if(_82<_83){ +_82-=_64; +_visibleItems=objj_msgSend(_visibleItems,"copy"); +var _85=objj_msgSend(_toolbar,"itemsSortedByVisibilityPriority"),_86=_85.length; +while(_83>_82&&_86){ +var _87=_85[--_86],_88=objj_msgSend(_7f,"viewForItem:",_87); +_83-=objj_msgSend(_88,"minSize").width+_63; +objj_msgSend(_visibleItems,"removeObjectIdenticalTo:",_87); +objj_msgSend(_84,"addObject:",_87); +objj_msgSend(_88,"setHidden:",YES); +objj_msgSend(_88,"FIXME_setIsHUD:",_FIXME_isHUD); +} +} +var _86=objj_msgSend(_81,"count"),_89=0; +while(_86--){ +var _88=objj_msgSend(_7f,"viewForItem:",_81[_86]),_8a=objj_msgSend(_88,"minSize"); +if(_89<_8a.height){ +_89=_8a.height; +} +} +var _86=_visibleItems.length; +flexibleItemIndexes=objj_msgSend(CPIndexSet,"indexSet"); +while(_86--){ +var _87=_visibleItems[_86],_88=objj_msgSend(_7f,"viewForItem:",_87),_8a=objj_msgSend(_88,"minSize"); +if(_8a.width!==objj_msgSend(_88,"maxSize").width){ +objj_msgSend(flexibleItemIndexes,"addIndex:",_86); +}else{ +objj_msgSend(_88,"setFrameSize:",CGSizeMake(_8a.width,_89)); +} +objj_msgSend(_88,"setHidden:",NO); +} +var _8b=_82-_83,_8c=0; +while(_8b&&objj_msgSend(flexibleItemIndexes,"count")){ +_8c+=_8b/objj_msgSend(flexibleItemIndexes,"count"); +_8b=0; +var _8d=CPNotFound; +while((_8d=objj_msgSend(flexibleItemIndexes,"indexGreaterThanIndex:",_8d))!==CPNotFound){ +var _87=_visibleItems[_8d],_88=objj_msgSend(_7f,"viewForItem:",_87),_8e=objj_msgSend(_88,"minSize").width+_8c,_8f=MIN(_8e,objj_msgSend(_88,"maxSize").width); +if(_8f<_8e){ +objj_msgSend(flexibleItemIndexes,"removeIndex:",_8d); +_8b+=_8e-_8f; +} +objj_msgSend(_88,"setFrameSize:",CGSizeMake(_8f,_89)); +} +} +var _8d=0,_86=_visibleItems.length,x=_63; +for(;_8d<_86;++_8d){ +var _88=objj_msgSend(_7f,"viewForItem:",_visibleItems[_8d]),_90=CGRectGetWidth(objj_msgSend(_88,"frame")); +objj_msgSend(_88,"setFrame:",CGRectMake(x,0,_90,_89)); +x+=_90+_63; +} +var _91=NO; +if(objj_msgSend(_84,"count")){ +var _8d=0,_86=objj_msgSend(_81,"count"); +_invisibleItems=[]; +for(;_8d<_86;++_8d){ +var _87=_81[_8d]; +if(objj_msgSend(_84,"indexOfObjectIdenticalTo:",_87)!==CPNotFound){ +objj_msgSend(_invisibleItems,"addObject:",_87); +var _92=objj_msgSend(_87,"itemIdentifier"); +if(_92!==CPToolbarSpaceItemIdentifier&&_92!==CPToolbarFlexibleSpaceItemIdentifier&&_92!==CPToolbarSeparatorItemIdentifier){ +_91=YES; +} +} +} +} +if(_91){ +objj_msgSend(_additionalItemsButton,"setFrameOrigin:",CGPointMake(_82+5,(CGRectGetHeight(objj_msgSend(_7f,"bounds"))-CGRectGetHeight(objj_msgSend(_additionalItemsButton,"frame")))/2)); +objj_msgSend(_7f,"addSubview:",_additionalItemsButton); +objj_msgSend(_additionalItemsButton,"removeAllItems"); +objj_msgSend(_additionalItemsButton,"addItemWithTitle:","Additional Items"); +objj_msgSend(objj_msgSend(_additionalItemsButton,"itemArray")[0],"setImage:",_60); +var _8d=0,_86=objj_msgSend(_invisibleItems,"count"),_93=NO; +for(;_8d<_86;++_8d){ +var _87=_invisibleItems[_8d],_92=objj_msgSend(_87,"itemIdentifier"); +if(_92===CPToolbarSpaceItemIdentifier||_92===CPToolbarFlexibleSpaceItemIdentifier){ +continue; +} +if(_92===CPToolbarSeparatorItemIdentifier){ +if(_93){ +objj_msgSend(_additionalItemsButton,"addItem:",objj_msgSend(CPMenuItem,"separatorItem")); +} +continue; +} +_93=YES; +var _94=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",objj_msgSend(_87,"label"),objj_msgSend(_87,"action"),nil); +objj_msgSend(_94,"setImage:",objj_msgSend(_87,"image")); +objj_msgSend(_94,"setTarget:",objj_msgSend(_87,"target")); +objj_msgSend(_94,"setEnabled:",objj_msgSend(_87,"isEnabled")); +objj_msgSend(_additionalItemsButton,"addItem:",_94); +} +}else{ +objj_msgSend(_additionalItemsButton,"removeFromSuperview"); +} +} +}),new objj_method(sel_getUid("reloadToolbarItems"),function(_95,_96){ +with(_95){ +var _97=objj_msgSend(_95,"subviews"),_98=_97.length; +while(_98--){ +objj_msgSend(_97[_98],"removeFromSuperview"); +} +var _99=objj_msgSend(_toolbar,"items"),_9a=0; +_98=_99.length; +_minWidth=_63; +_viewsForToolbarItems={}; +for(;_9a<_98;++_9a){ +var _9b=_99[_9a],_9c=objj_msgSend(objj_msgSend(_CPToolbarItemView,"alloc"),"initWithToolbarItem:toolbar:",_9b,_95); +_viewsForToolbarItems[objj_msgSend(_9b,"UID")]=_9c; +objj_msgSend(_95,"addSubview:",_9c); +_minWidth+=objj_msgSend(_9c,"minSize").width+_63; +} +objj_msgSend(_95,"tile"); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_9d,_9e){ +with(_9d){ +if(_9d!==objj_msgSend(_CPToolbarView,"class")){ +return; +} +var _9f=objj_msgSend(CPBundle,"bundleForClass:",_9d); +_60=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_9f,"pathForResource:","_CPToolbarView/_CPToolbarViewExtraItemsImage.png"),CPSizeMake(10,15)); +_61=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_9f,"pathForResource:","_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png"),CGSizeMake(10,15)); +} +})]); +var _29=function(lhs,rhs){ +var _a0=objj_msgSend(lhs,"visibilityPriority"),_a1=objj_msgSend(rhs,"visibilityPriority"); +if(_a0==_a1){ +return CPOrderedSame; +} +if(_a0>_a1){ +return CPOrderedAscending; +} +return CPOrderedDescending; +}; +var _a2=5,_a3=2; +var _3=objj_allocateClassPair(CPControl,"_CPToolbarItemView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_labelSize"),new objj_ivar("_toolbarItem"),new objj_ivar("_toolbar"),new objj_ivar("_imageView"),new objj_ivar("_view"),new objj_ivar("_labelField"),new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("minSize"),function(_a4,_a5){ +with(_a4){ +return _minSize; +} +}),new objj_method(sel_getUid("maxSize"),function(_a6,_a7){ +with(_a6){ +return _maxSize; +} +}),new objj_method(sel_getUid("initWithToolbarItem:toolbar:"),function(_a8,_a9,_aa,_ab){ +with(_a8){ +_a8=objj_msgSendSuper({receiver:_a8,super_class:objj_getClass("_CPToolbarItemView").super_class},"init"); +if(_a8){ +_toolbarItem=_aa; +_labelField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_labelField,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_labelField,"setTextColor:",objj_msgSend(_a8,"FIXME_labelColor")); +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_a8,"FIXME_labelShadowColor")); +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_labelField,"setAutoresizingMask:",CPViewWidthSizable|CPViewMinXMargin); +objj_msgSend(_a8,"addSubview:",_labelField); +objj_msgSend(_a8,"updateFromItem"); +_toolbar=_ab; +var _ac=["label","image","alternateImage","minSize","maxSize","target","action","enabled"],_ad=0,_ae=objj_msgSend(_ac,"count"); +for(;_ad<_ae;++_ad){ +objj_msgSend(_toolbarItem,"addObserver:forKeyPath:options:context:",_a8,_ac[_ad],0,NULL); +} +} +return _a8; +} +}),new objj_method(sel_getUid("FIXME_setIsHUD:"),function(_af,_b0,_b1){ +with(_af){ +_FIXME_isHUD=_b1; +objj_msgSend(_labelField,"setTextColor:",objj_msgSend(_af,"FIXME_labelColor")); +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_af,"FIXME_labelShadowColor")); +} +}),new objj_method(sel_getUid("updateFromItem"),function(_b2,_b3){ +with(_b2){ +var _b4=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_b4===CPToolbarSpaceItemIdentifier||_b4===CPToolbarFlexibleSpaceItemIdentifier||_b4===CPToolbarSeparatorItemIdentifier){ +objj_msgSend(_view,"removeFromSuperview"); +objj_msgSend(_imageView,"removeFromSuperview"); +_minSize=objj_msgSend(_toolbarItem,"minSize"); +_maxSize=objj_msgSend(_toolbarItem,"maxSize"); +if(_b4===CPToolbarSeparatorItemIdentifier){ +_view=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,2,32)); +sizes={}; +sizes["CPToolbarItemSeparator"]=[CGSizeMake(2,26),CGSizeMake(2,1),CGSizeMake(2,26)]; +objj_msgSend(_view,"setBackgroundColor:",_CPControlThreePartImagePattern(YES,sizes,"CPToolbarItem","Separator")); +objj_msgSend(_b2,"addSubview:",_view); +} +return; +} +objj_msgSend(_b2,"setTarget:",objj_msgSend(_toolbarItem,"target")); +objj_msgSend(_b2,"setAction:",objj_msgSend(_toolbarItem,"action")); +var _b5=objj_msgSend(_toolbarItem,"view")||nil; +if(_b5!==_view){ +if(!_b5){ +objj_msgSend(_view,"removeFromSuperview"); +}else{ +objj_msgSend(_b2,"addSubview:",_b5); +objj_msgSend(_imageView,"removeFromSuperview"); +} +_view=_b5; +} +if(!_view){ +if(!_imageView){ +_imageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",objj_msgSend(_b2,"bounds")); +objj_msgSend(_imageView,"setImageScaling:",CPScaleNone); +objj_msgSend(_b2,"addSubview:",_imageView); +} +objj_msgSend(_imageView,"setImage:",objj_msgSend(_toolbarItem,"image")); +} +var _b6=objj_msgSend(_toolbarItem,"minSize"),_b7=objj_msgSend(_toolbarItem,"maxSize"); +objj_msgSend(_labelField,"setStringValue:",objj_msgSend(_toolbarItem,"label")); +objj_msgSend(_labelField,"sizeToFit"); +objj_msgSend(_b2,"setEnabled:",objj_msgSend(_toolbarItem,"isEnabled")); +_labelSize=objj_msgSend(_labelField,"frame").size; +_minSize=CGSizeMake(MAX(_labelSize.width,_b6.width),_labelSize.height+_b6.height+_a3+_a2); +_maxSize=CGSizeMake(MAX(_labelSize.width,_b6.width),100000000); +objj_msgSend(_toolbar,"tile"); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_b8,_b9){ +with(_b8){ +var _ba=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_ba===CPToolbarSpaceItemIdentifier||_ba===CPToolbarFlexibleSpaceItemIdentifier){ +return; +} +var _bb=objj_msgSend(_b8,"bounds"),_bc=(_bb.size.width); +if(_ba===CPToolbarSeparatorItemIdentifier){ +return objj_msgSend(_view,"setFrame:",CGRectMake(ROUND((_bc-2)/2),0,2,(_bb.size.height))); +} +var _bd=_view||_imageView,_be=objj_msgSend(_toolbarItem,"maxSize"),_bf=(_bb.size.height)-_labelSize.height-_a3-_a2,_c0=MIN(_be.width,_bc),_c1=MIN(_be.height,_bf); +objj_msgSend(_bd,"setFrame:",CGRectMake(ROUND((_bc-_c0)/2),_a2+ROUND((_bf-_c1)/2),_c0,_c1)); +objj_msgSend(_labelField,"setFrameOrigin:",CGPointMake(ROUND((_bc-_labelSize.width)/2),_a2+_bf+_a3)); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_c2,_c3,_c4){ +with(_c2){ +if(objj_msgSend(_toolbarItem,"view")){ +return objj_msgSend(objj_msgSend(_c2,"nextResponder"),"mouseDown:",_c4); +} +var _c5=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_c5===CPToolbarSpaceItemIdentifier||_c5===CPToolbarFlexibleSpaceItemIdentifier||_c5===CPToolbarSeparatorItemIdentifier){ +return objj_msgSend(objj_msgSend(_c2,"nextResponder"),"mouseDown:",_c4); +} +objj_msgSendSuper({receiver:_c2,super_class:objj_getClass("_CPToolbarItemView").super_class},"mouseDown:",_c4); +} +}),new objj_method(sel_getUid("setEnabled:"),function(_c6,_c7,_c8){ +with(_c6){ +objj_msgSendSuper({receiver:_c6,super_class:objj_getClass("_CPToolbarItemView").super_class},"setEnabled:",_c8); +if(_c8){ +objj_msgSend(_imageView,"setAlphaValue:",1); +objj_msgSend(_labelField,"setAlphaValue:",1); +}else{ +objj_msgSend(_imageView,"setAlphaValue:",0.5); +objj_msgSend(_labelField,"setAlphaValue:",0.5); +} +objj_msgSend(_toolbar,"tile"); +} +}),new objj_method(sel_getUid("FIXME_labelColor"),function(_c9,_ca){ +with(_c9){ +if(_FIXME_isHUD){ +return objj_msgSend(CPColor,"whiteColor"); +} +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("FIXME_labelShadowColor"),function(_cb,_cc){ +with(_cb){ +if(_FIXME_isHUD){ +return objj_msgSend(_cb,"isHighlighted")?objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.5):objj_msgSend(CPColor,"clearColor"); +} +return objj_msgSend(_cb,"isHighlighted")?objj_msgSend(CPColor,"colorWithWhite:alpha:",0,0.3):objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.75); +} +}),new objj_method(sel_getUid("setHighlighted:"),function(_cd,_ce,_cf){ +with(_cd){ +objj_msgSendSuper({receiver:_cd,super_class:objj_getClass("_CPToolbarItemView").super_class},"setHighlighted:",_cf); +if(_cf){ +var _d0=objj_msgSend(_toolbarItem,"alternateImage"); +if(_d0){ +objj_msgSend(_imageView,"setImage:",_d0); +} +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMakeZero()); +}else{ +var _d1=objj_msgSend(_toolbarItem,"image"); +if(_d1){ +objj_msgSend(_imageView,"setImage:",_d1); +} +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMake(0,1)); +} +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_cd,"FIXME_labelShadowColor")); +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +objj_msgSend(CPApp,"sendAction:to:from:",_d4,_d5,_toolbarItem); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_d6,_d7,_d8,_d9,_da,_db){ +with(_d6){ +if(_d8==="enabled"){ +objj_msgSend(_d6,"setEnabled:",objj_msgSend(_d9,"isEnabled")); +}else{ +if(_d8==="target"){ +objj_msgSend(_d6,"setTarget:",objj_msgSend(_d9,"target")); +}else{ +if(_d8==="action"){ +objj_msgSend(_d6,"setAction:",objj_msgSend(_d9,"action")); +}else{ +objj_msgSend(_d6,"updateFromItem"); +} +} +} +} +})]); +p;15;CPToolbarItem.jt;13726;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;16;AppKit/CPImage.jI;15;AppKit/CPView.ji;29;_CPToolbarFlexibleSpaceItem.ji;26;_CPToolbarShowColorsItem.ji;25;_CPToolbarSeparatorItem.ji;21;_CPToolbarSpaceItem.jt;13492; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPImage.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPToolbarItemVisibilityPriorityStandard=0; +CPToolbarItemVisibilityPriorityLow=-1000; +CPToolbarItemVisibilityPriorityHigh=1000; +CPToolbarItemVisibilityPriorityUser=2000; +CPToolbarSeparatorItemIdentifier="CPToolbarSeparatorItem"; +CPToolbarSpaceItemIdentifier="CPToolbarSpaceItem"; +CPToolbarFlexibleSpaceItemIdentifier="CPToolbarFlexibleSpaceItem"; +CPToolbarShowColorsItemIdentifier="CPToolbarShowColorsItem"; +CPToolbarShowFontsItemIdentifier="CPToolbarShowFontsItem"; +CPToolbarCustomizeToolbarItemIdentifier="CPToolbarCustomizeToolbarItem"; +CPToolbarPrintItemIdentifier="CPToolbarPrintItem"; +var _1=objj_allocateClassPair(CPObject,"CPToolbarItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_itemIdentifier"),new objj_ivar("_toolbar"),new objj_ivar("_label"),new objj_ivar("_paletteLabel"),new objj_ivar("_toolTip"),new objj_ivar("_tag"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_isEnabled"),new objj_ivar("_image"),new objj_ivar("_alternateImage"),new objj_ivar("_view"),new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_visibilityPriority"),new objj_ivar("_autovalidates")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithItemIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithItemIdentifier:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPToolbarItem").super_class},"init"); +if(_5){ +_itemIdentifier=_7; +_tag=0; +_isEnabled=YES; +_minSize=CGSizeMakeZero(); +_maxSize=CGSizeMakeZero(); +_visibilityPriority=CPToolbarItemVisibilityPriorityStandard; +_autovalidates=YES; +} +return _5; +} +}),new objj_method(sel_getUid("itemIdentifier"),function(_8,_9){ +with(_8){ +return _itemIdentifier; +} +}),new objj_method(sel_getUid("toolbar"),function(_a,_b){ +with(_a){ +return _toolbar; +} +}),new objj_method(sel_getUid("_setToolbar:"),function(_c,_d,_e){ +with(_c){ +_toolbar=_e; +} +}),new objj_method(sel_getUid("label"),function(_f,_10){ +with(_f){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_11,_12,_13){ +with(_11){ +_label=_13; +} +}),new objj_method(sel_getUid("paletteLabel"),function(_14,_15){ +with(_14){ +return _paletteLabel; +} +}),new objj_method(sel_getUid("setPaletteLabel:"),function(_16,_17,_18){ +with(_16){ +_paletteLabel=_18; +} +}),new objj_method(sel_getUid("toolTip"),function(_19,_1a){ +with(_19){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("toolTip"))){ +return objj_msgSend(_view,"toolTip"); +} +return _toolTip; +} +}),new objj_method(sel_getUid("setToolTip:"),function(_1b,_1c,_1d){ +with(_1b){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setToolTip:"))){ +objj_msgSend(_view,"setToolTip:",_1d); +} +_toolTip=_1d; +} +}),new objj_method(sel_getUid("tag"),function(_1e,_1f){ +with(_1e){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("tag"))){ +return objj_msgSend(_view,"tag"); +} +return _tag; +} +}),new objj_method(sel_getUid("setTag:"),function(_20,_21,_22){ +with(_20){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTag:"))){ +objj_msgSend(_view,"setTag:",_22); +} +_tag=_22; +} +}),new objj_method(sel_getUid("target"),function(_23,_24){ +with(_23){ +if(_view){ +return objj_msgSend(_view,"respondsToSelector:",sel_getUid("target"))?objj_msgSend(_view,"target"):nil; +} +return _target; +} +}),new objj_method(sel_getUid("setTarget:"),function(_25,_26,_27){ +with(_25){ +if(!_view){ +_target=_27; +}else{ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTarget:"))){ +objj_msgSend(_view,"setTarget:",_27); +} +} +} +}),new objj_method(sel_getUid("action"),function(_28,_29){ +with(_28){ +if(_view){ +return objj_msgSend(_view,"respondsToSelector:",sel_getUid("action"))?objj_msgSend(_view,"action"):nil; +} +return _action; +} +}),new objj_method(sel_getUid("setAction:"),function(_2a,_2b,_2c){ +with(_2a){ +if(!_view){ +_action=_2c; +}else{ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_view,"setAction:",_2c); +} +} +} +}),new objj_method(sel_getUid("isEnabled"),function(_2d,_2e){ +with(_2d){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("isEnabled"))){ +return objj_msgSend(_view,"isEnabled"); +} +return _isEnabled; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_2f,_30,_31){ +with(_2f){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_view,"setEnabled:",_31); +} +_isEnabled=_31; +} +}),new objj_method(sel_getUid("image"),function(_32,_33){ +with(_32){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("image"))){ +return objj_msgSend(_view,"image"); +} +return _image; +} +}),new objj_method(sel_getUid("setImage:"),function(_34,_35,_36){ +with(_34){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setImage:"))){ +objj_msgSend(_view,"setImage:",_36); +} +_image=_36; +if(!_image){ +return; +} +if(_minSize.width===0&&_minSize.height===0&&_maxSize.width===0&&_maxSize.height===0){ +var _37=objj_msgSend(_image,"size"); +if(_37.width>0||_37.height>0){ +objj_msgSend(_34,"setMinSize:",_37); +objj_msgSend(_34,"setMaxSize:",_37); +} +} +} +}),new objj_method(sel_getUid("setAlternateImage:"),function(_38,_39,_3a){ +with(_38){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setAlternateImage:"))){ +objj_msgSend(_view,"setAlternateImage:",_3a); +} +_alternateImage=_3a; +} +}),new objj_method(sel_getUid("alternateImage"),function(_3b,_3c){ +with(_3b){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("alternateIamge"))){ +return objj_msgSend(_view,"alternateImage"); +} +return _alternateImage; +} +}),new objj_method(sel_getUid("view"),function(_3d,_3e){ +with(_3d){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_3f,_40,_41){ +with(_3f){ +if(_view==_41){ +return; +} +_view=_41; +if(_view){ +if(_tag!==0&&objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTag:"))){ +objj_msgSend(_view,"setTag:",_tag); +} +_target=nil; +_action=nil; +} +} +}),new objj_method(sel_getUid("minSize"),function(_42,_43){ +with(_42){ +return _minSize; +} +}),new objj_method(sel_getUid("setMinSize:"),function(_44,_45,_46){ +with(_44){ +if(!_46.height||!_46.width){ +return; +} +_minSize=CGSizeMakeCopy(_46); +_maxSize=CGSizeMake(MAX(_minSize.width,_maxSize.width),MAX(_minSize.height,_maxSize.height)); +} +}),new objj_method(sel_getUid("maxSize"),function(_47,_48){ +with(_47){ +return _maxSize; +} +}),new objj_method(sel_getUid("setMaxSize:"),function(_49,_4a,_4b){ +with(_49){ +if(!_4b.height||!_4b.width){ +return; +} +_maxSize=CGSizeMakeCopy(_4b); +_minSize=CGSizeMake(MIN(_minSize.width,_maxSize.width),MIN(_minSize.height,_maxSize.height)); +} +}),new objj_method(sel_getUid("visibilityPriority"),function(_4c,_4d){ +with(_4c){ +return _visibilityPriority; +} +}),new objj_method(sel_getUid("setVisibilityPriority:"),function(_4e,_4f,_50){ +with(_4e){ +_visibilityPriority=_50; +} +}),new objj_method(sel_getUid("validate"),function(_51,_52){ +with(_51){ +var _53=objj_msgSend(_51,"action"),_54=objj_msgSend(_51,"target"); +if(_view){ +if(objj_msgSend(_54,"respondsToSelector:",sel_getUid("validateToolbarItem:"))){ +objj_msgSend(_51,"setEnabled:",objj_msgSend(_54,"validateToolbarItem:",_51)); +} +return; +} +if(!_53){ +return objj_msgSend(_51,"setEnabled:",NO); +} +if(_54&&!objj_msgSend(_54,"respondsToSelector:",_53)){ +return objj_msgSend(_51,"setEnabled:",NO); +} +_54=objj_msgSend(CPApp,"targetForAction:to:from:",_53,_54,_51); +if(!_54){ +return objj_msgSend(_51,"setEnabled:",NO); +} +if(objj_msgSend(_54,"respondsToSelector:",sel_getUid("validateToolbarItem:"))){ +objj_msgSend(_51,"setEnabled:",objj_msgSend(_54,"validateToolbarItem:",_51)); +}else{ +objj_msgSend(_51,"setEnabled:",YES); +} +} +}),new objj_method(sel_getUid("autovalidates"),function(_55,_56){ +with(_55){ +return _autovalidates; +} +}),new objj_method(sel_getUid("setAutovalidates:"),function(_57,_58,_59){ +with(_57){ +_autovalidates=!!_59; +} +})]); +var _5a="CPToolbarItemItemIdentifierKey",_5b="CPToolbarItemLabelKey",_5c="CPToolbarItemPaletteLabelKey",_5d="CPToolbarItemToolTipKey",_5e="CPToolbarItemTagKey",_5f="CPToolbarItemTargetKey",_60="CPToolbarItemActionKey",_61="CPToolbarItemEnabledKey",_62="CPToolbarItemImageKey",_63="CPToolbarItemAlternateImageKey",_64="CPToolbarItemViewKey",_65="CPToolbarItemMinSizeKey",_66="CPToolbarItemMaxSizeKey",_67="CPToolbarItemVisibilityPriorityKey",_68="CPToolbarItemAutovalidatesKey"; +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_69,_6a,_6b){ +with(_69){ +_69=objj_msgSendSuper({receiver:_69,super_class:objj_getClass("CPToolbarItem").super_class},"init"); +if(_69){ +_itemIdentifier=objj_msgSend(_6b,"decodeObjectForKey:",_5a); +_minSize=objj_msgSend(_6b,"decodeSizeForKey:",_65); +_maxSize=objj_msgSend(_6b,"decodeSizeForKey:",_66); +objj_msgSend(_69,"setLabel:",objj_msgSend(_6b,"decodeObjectForKey:",_5b)); +objj_msgSend(_69,"setPaletteLabel:",objj_msgSend(_6b,"decodeObjectForKey:",_5c)); +objj_msgSend(_69,"setToolTip:",objj_msgSend(_6b,"decodeObjectForKey:",_5d)); +objj_msgSend(_69,"setTag:",objj_msgSend(_6b,"decodeObjectForKey:",_5e)); +objj_msgSend(_69,"setTarget:",objj_msgSend(_6b,"decodeObjectForKey:",_5f)); +objj_msgSend(_69,"setAction:",CPSelectorFromString(objj_msgSend(_6b,"decodeObjectForKey:",_60))); +objj_msgSend(_69,"setEnabled:",objj_msgSend(_6b,"decodeBoolForKey:",_61)); +objj_msgSend(_69,"setImage:",objj_msgSend(_6b,"decodeObjectForKey:",_62)); +objj_msgSend(_69,"setAlternateImage:",objj_msgSend(_6b,"decodeObjectForKey:",_63)); +objj_msgSend(_69,"setView:",objj_msgSend(_6b,"decodeObjectForKey:",_64)); +objj_msgSend(_69,"setVisibilityPriority:",objj_msgSend(_6b,"decodeIntForKey:",_67)); +objj_msgSend(_69,"setAutovalidates:",objj_msgSend(_6b,"decodeBoolForKey:",_68)); +} +return _69; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(_6e,"encodeObject:forKey:",_itemIdentifier,_5a); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"label"),_5b); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"paletteLabel"),_5c); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"toolTip"),_5d); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"tag"),_5e); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"target"),_5f); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"action"),_60); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"isEnabled"),_61); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"image"),_62); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"alternateImage"),_63); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"view"),_64); +objj_msgSend(_6e,"encodeSize:forKey:",objj_msgSend(_6c,"minSize"),_65); +objj_msgSend(_6e,"encodeSize:forKey:",objj_msgSend(_6c,"maxSize"),_66); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"visibilityPriority"),_67); +objj_msgSend(_6e,"encodeBool:forKey:",objj_msgSend(_6c,"autovalidates"),_68); +} +})]); +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_6f,_70){ +with(_6f){ +var _71=objj_msgSend(objj_msgSend(objj_msgSend(_6f,"class"),"alloc"),"initWithItemIdentifier:",_itemIdentifier); +if(_view){ +objj_msgSend(_71,"setView:",objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_view))); +} +objj_msgSend(_71,"_setToolbar:",_toolbar); +objj_msgSend(_71,"setLabel:",_label); +objj_msgSend(_71,"setPaletteLabel:",_paletteLabel); +objj_msgSend(_71,"setToolTip:",objj_msgSend(_6f,"toolTip")); +objj_msgSend(_71,"setTag:",objj_msgSend(_6f,"tag")); +objj_msgSend(_71,"setTarget:",objj_msgSend(_6f,"target")); +objj_msgSend(_71,"setAction:",objj_msgSend(_6f,"action")); +objj_msgSend(_71,"setEnabled:",objj_msgSend(_6f,"isEnabled")); +objj_msgSend(_71,"setImage:",objj_msgSend(_6f,"image")); +objj_msgSend(_71,"setAlternateImage:",objj_msgSend(_6f,"alternateImage")); +objj_msgSend(_71,"setMinSize:",_minSize); +objj_msgSend(_71,"setMaxSize:",_maxSize); +objj_msgSend(_71,"setVisibilityPriority:",objj_msgSend(_6f,"visibilityPriority")); +objj_msgSend(_71,"setAutovalidates:",objj_msgSend(_6f,"autovalidates")); +return _71; +} +})]); +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_2,[new objj_method(sel_getUid("_standardItemWithItemIdentifier:"),function(_72,_73,_74){ +with(_72){ +switch(_74){ +case CPToolbarSeparatorItemIdentifier: +return objj_msgSend(_CPToolbarSeparatorItem,"new"); +case CPToolbarSpaceItemIdentifier: +return objj_msgSend(_CPToolbarSpaceItem,"new"); +case CPToolbarFlexibleSpaceItemIdentifier: +return objj_msgSend(_CPToolbarFlexibleSpaceItem,"new"); +case CPToolbarShowColorsItemIdentifier: +return objj_msgSend(_CPToolbarShowColorsItem,"new"); +case CPToolbarShowFontsItemIdentifier: +return nil; +case CPToolbarCustomizeToolbarItemIdentifier: +return nil; +case CPToolbarPrintItemIdentifier: +return nil; +} +return nil; +} +})]); +objj_executeFile("_CPToolbarFlexibleSpaceItem.j",YES); +objj_executeFile("_CPToolbarShowColorsItem.j",YES); +objj_executeFile("_CPToolbarSeparatorItem.j",YES); +objj_executeFile("_CPToolbarSpaceItem.j",YES); +p;12;CPTreeNode.jt;3517;@STATIC;1.0;I;21;Foundation/CPObject.jt;3472; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPTreeNode"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_representedObject"),new objj_ivar("_parentNode"),new objj_ivar("_childNodes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("representedObject"),function(_3,_4){ +with(_3){ +return _representedObject; +} +}),new objj_method(sel_getUid("parentNode"),function(_5,_6){ +with(_5){ +return _parentNode; +} +}),new objj_method(sel_getUid("initWithRepresentedObject:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPTreeNode").super_class},"init"); +if(_7){ +_representedObject=_9; +_childNodes=[]; +} +return _7; +} +}),new objj_method(sel_getUid("isLeaf"),function(_a,_b){ +with(_a){ +return objj_msgSend(_childNodes,"count")<=0; +} +}),new objj_method(sel_getUid("childNodes"),function(_c,_d){ +with(_c){ +return objj_msgSend(_childNodes,"copy"); +} +}),new objj_method(sel_getUid("mutableChildNodes"),function(_e,_f){ +with(_e){ +return objj_msgSend(_e,"mutableArrayValueForKey:","childNodes"); +} +}),new objj_method(sel_getUid("insertObject:inChildNodesAtIndex:"),function(_10,_11,_12,_13){ +with(_10){ +objj_msgSend(objj_msgSend(_12._parentNode,"mutableChildNodes"),"removeObjectIdenticalTo:",_12); +_12._parentNode=_10; +objj_msgSend(_childNodes,"insertObject:atIndex:",_12,_13); +} +}),new objj_method(sel_getUid("removeObjectFromChildNodesAtIndex:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_childNodes,"objectAtIndex:",_16)._parentNode=nil; +objj_msgSend(_childNodes,"removeObjectAtIndex:",_16); +} +}),new objj_method(sel_getUid("replaceObjectFromChildNodesAtIndex:withObject:"),function(_17,_18,_19,_1a){ +with(_17){ +var _1b=objj_msgSend(_childNodes,"objectAtIndex:",_19); +_1b._parentNode=nil; +_1a._parentNode=_17; +objj_msgSend(_childNodes,"replaceObjectAtIndex:withObject:",_19,_1a); +} +}),new objj_method(sel_getUid("objectInChildNodesAtIndex:"),function(_1c,_1d,_1e){ +with(_1c){ +return _childNodes[_1e]; +} +}),new objj_method(sel_getUid("sortWithSortDescriptors:recursively:"),function(_1f,_20,_21,_22){ +with(_1f){ +objj_msgSend(_childNodes,"sortUsingDescriptors:",_21); +if(!_22){ +return; +} +var _23=objj_msgSend(_childNodes,"count"); +while(_23--){ +objj_msgSend(_childNodes[_23],"sortWithSortDescriptors:recursively:",_21,YES); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("treeNodeWithRepresentedObject:"),function(_24,_25,_26){ +with(_24){ +return objj_msgSend(objj_msgSend(_24,"alloc"),"initWithRepresentedObject:",_26); +} +})]); +var _27="CPTreeNodeRepresentedObjectKey",_28="CPTreeNodeParentNodeKey",_29="CPTreeNodeChildNodesKey"; +var _1=objj_getClass("CPTreeNode"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTreeNode\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_2a,_2b,_2c){ +with(_2a){ +_2a=objj_msgSendSuper({receiver:_2a,super_class:objj_getClass("CPTreeNode").super_class},"init"); +if(_2a){ +_representedObject=objj_msgSend(_2c,"decodeObjectForKey:",_27); +_parentNode=objj_msgSend(_2c,"decodeObjectForKey:",_28); +_childNodes=objj_msgSend(_2c,"decodeObjectForKey:",_29); +} +return _2a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2d,_2e,_2f){ +with(_2d){ +objj_msgSend(_2f,"encodeObject:forKey:",_representedObject,_27); +objj_msgSend(_2f,"encodeConditionalObject:forKey:",_parentNode,_28); +objj_msgSend(_2f,"encodeObject:forKey:",_childNodes,_29); +} +})]); +p;8;CPView.jt;61550;@STATIC;1.0;I;20;Foundation/CPArray.jI;26;Foundation/CPObjJRuntime.ji;19;CGAffineTransform.ji;12;CGGeometry.ji;9;CPColor.ji;12;CPGeometry.ji;19;CPGraphicsContext.ji;13;CPResponder.ji;9;CPTheme.ji;18;_CPDisplayServer.jt;61325; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObjJRuntime.j",NO); +objj_executeFile("CGAffineTransform.j",YES); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPGraphicsContext.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPTheme.j",YES); +objj_executeFile("_CPDisplayServer.j",YES); +CPViewNotSizable=0; +CPViewMinXMargin=1; +CPViewWidthSizable=2; +CPViewMaxXMargin=4; +CPViewMinYMargin=8; +CPViewHeightSizable=16; +CPViewMaxYMargin=32; +CPViewBoundsDidChangeNotification="CPViewBoundsDidChangeNotification"; +CPViewFrameDidChangeNotification="CPViewFrameDidChangeNotification"; +var _1=nil,_2=nil; +var _3=nil,_4=0,_5=1,_6=2,_7=3,_8=4; +var _9={},_a=1<<0,_b=1<<1; +var _c=objj_allocateClassPair(CPResponder,"CPView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_window"),new objj_ivar("_superview"),new objj_ivar("_subviews"),new objj_ivar("_graphicsContext"),new objj_ivar("_tag"),new objj_ivar("_frame"),new objj_ivar("_bounds"),new objj_ivar("_boundsTransform"),new objj_ivar("_inverseBoundsTransform"),new objj_ivar("_registeredDraggedTypes"),new objj_ivar("_registeredDraggedTypesArray"),new objj_ivar("_isHidden"),new objj_ivar("_hitTests"),new objj_ivar("_clipsToBounds"),new objj_ivar("_postsFrameChangedNotifications"),new objj_ivar("_postsBoundsChangedNotifications"),new objj_ivar("_inhibitFrameAndBoundsChangedNotifications"),new objj_ivar("_DOMElement"),new objj_ivar("_DOMContentsElement"),new objj_ivar("_DOMImageParts"),new objj_ivar("_DOMImageSizes"),new objj_ivar("_backgroundType"),new objj_ivar("_dirtyRect"),new objj_ivar("_opacity"),new objj_ivar("_backgroundColor"),new objj_ivar("_autoresizesSubviews"),new objj_ivar("_autoresizingMask"),new objj_ivar("_layer"),new objj_ivar("_wantsLayer"),new objj_ivar("_isInFullScreenMode"),new objj_ivar("_fullScreenModeState"),new objj_ivar("_needsLayout"),new objj_ivar("_ephemeralSubviews"),new objj_ivar("_theme"),new objj_ivar("_themeAttributes"),new objj_ivar("_themeState"),new objj_ivar("_ephemeralSubviewsForNames"),new objj_ivar("_ephereralSubviews"),new objj_ivar("_nextKeyView"),new objj_ivar("_previousKeyView"),new objj_ivar("_viewClassFlags")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("setupViewFlags"),function(_e,_f){ +with(_e){ +var _10=objj_msgSend(_e,"class"),_11=objj_msgSend(_10,"UID"); +if(_9[_11]===undefined){ +var _12=0; +if(objj_msgSend(_10,"instanceMethodForSelector:",sel_getUid("drawRect:"))!==objj_msgSend(CPView,"instanceMethodForSelector:",sel_getUid("drawRect:"))){ +_12|=_a; +} +if(objj_msgSend(_10,"instanceMethodForSelector:",sel_getUid("layoutSubviews"))!==objj_msgSend(CPView,"instanceMethodForSelector:",sel_getUid("layoutSubviews"))){ +_12|=_b; +} +_9[_11]=_12; +} +_viewClassFlags=_9[_11]; +} +}),new objj_method(sel_getUid("init"),function(_13,_14){ +with(_13){ +return objj_msgSend(_13,"initWithFrame:",CGRectMakeZero()); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_15,_16,_17){ +with(_15){ +_15=objj_msgSendSuper({receiver:_15,super_class:objj_getClass("CPView").super_class},"init"); +if(_15){ +var _18=(_17.size.width),_19=(_17.size.height); +_subviews=[]; +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_tag=-1; +_frame={origin:{x:_17.origin.x,y:_17.origin.y},size:{width:_17.size.width,height:_17.size.height}}; +_bounds={origin:{x:0,y:0},size:{width:_18,height:_19}}; +_autoresizingMask=CPViewNotSizable; +_autoresizesSubviews=YES; +_clipsToBounds=YES; +_opacity=1; +_isHidden=NO; +_hitTests=YES; +_DOMElement=_3.cloneNode(false); +if(NULL){ +var _1a={x:CGPointMake((_17.origin.x),(_17.origin.y)).x*NULL.a+CGPointMake((_17.origin.x),(_17.origin.y)).y*NULL.c+NULL.tx,y:CGPointMake((_17.origin.x),(_17.origin.y)).x*NULL.b+CGPointMake((_17.origin.x),(_17.origin.y)).y*NULL.d+NULL.ty}; +}else{ +var _1a={x:(_17.origin.x),y:(_17.origin.y)}; +} +_DOMElement.style.left=ROUND(_1a.x)+"px"; +_DOMElement.style.top=ROUND(_1a.y)+"px"; +_DOMElement.style.width=MAX(0,ROUND(_18))+"px"; +_DOMElement.style.height=MAX(0,ROUND(_19))+"px"; +_DOMImageParts=[]; +_DOMImageSizes=[]; +_theme=objj_msgSend(CPTheme,"defaultTheme"); +_themeState=CPThemeStateNormal; +objj_msgSend(_15,"setupViewFlags"); +objj_msgSend(_15,"_loadThemeAttributes"); +} +return _15; +} +}),new objj_method(sel_getUid("superview"),function(_1b,_1c){ +with(_1b){ +return _superview; +} +}),new objj_method(sel_getUid("subviews"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(_subviews,"copy"); +} +}),new objj_method(sel_getUid("window"),function(_1f,_20){ +with(_1f){ +return _window; +} +}),new objj_method(sel_getUid("addSubview:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(_21,"_insertSubview:atIndex:",_23,CPNotFound); +} +}),new objj_method(sel_getUid("addSubview:positioned:relativeTo:"),function(_24,_25,_26,_27,_28){ +with(_24){ +var _29=_28?objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_28):CPNotFound; +if(_29===CPNotFound){ +_29=(_27===CPWindowAbove)?objj_msgSend(_subviews,"count"):0; +}else{ +if(_27===CPWindowAbove){ +++_29; +} +} +objj_msgSend(_24,"_insertSubview:atIndex:",_26,_29); +} +}),new objj_method(sel_getUid("_insertSubview:atIndex:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +var _2e=_subviews.length; +objj_msgSend(objj_msgSend(_2a,"window"),"_dirtyKeyViewLoop"); +if(_2c._superview==_2a){ +var _2f=objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_2c); +if(_2f===_2d||_2f===_2e-1&&_2d===_2e){ +return; +} +objj_msgSend(_subviews,"removeObjectAtIndex:",_2f); +_DOMElement.removeChild(_2c._DOMElement); +if(_2d>_2f){ +--_2d; +} +--_2e; +}else{ +objj_msgSend(_2c,"removeFromSuperview"); +objj_msgSend(_2c,"_setWindow:",_window); +objj_msgSend(_2c,"viewWillMoveToSuperview:",_2a); +_2c._superview=_2a; +} +if(_2d===CPNotFound||_2d>=_2e){ +_subviews.push(_2c); +_DOMElement.appendChild(_2c._DOMElement); +}else{ +_subviews.splice(_2d,0,_2c); +_DOMElement.insertBefore(_2c._DOMElement,_subviews[_2d+1]._DOMElement); +} +objj_msgSend(_2c,"setNextResponder:",_2a); +objj_msgSend(_2c,"viewDidMoveToSuperview"); +objj_msgSend(_2a,"didAddSubview:",_2c); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_30,_31,_32){ +with(_30){ +} +}),new objj_method(sel_getUid("removeFromSuperview"),function(_33,_34){ +with(_33){ +if(!_superview){ +return; +} +objj_msgSend(objj_msgSend(_33,"window"),"_dirtyKeyViewLoop"); +objj_msgSend(_superview,"willRemoveSubview:",_33); +objj_msgSend(_superview._subviews,"removeObject:",_33); +_superview._DOMElement.removeChild(_DOMElement); +_superview=nil; +objj_msgSend(_33,"_setWindow:",nil); +} +}),new objj_method(sel_getUid("replaceSubview:with:"),function(_35,_36,_37,_38){ +with(_35){ +if(_37._superview!=_35){ +return; +} +var _39=objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_37); +objj_msgSend(_37,"removeFromSuperview"); +objj_msgSend(_35,"_insertSubview:atIndex:",_38,_39); +} +}),new objj_method(sel_getUid("setSubviews:"),function(_3a,_3b,_3c){ +with(_3a){ +if(!_3c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"newSubviews cannot be nil in -[CPView setSubviews:]"); +} +if(objj_msgSend(_subviews,"isEqual:",_3c)){ +return; +} +if(objj_msgSend(_subviews,"count")===0){ +var _3d=0,_3e=objj_msgSend(_3c,"count"); +for(;_3d<_3e;++_3d){ +objj_msgSend(_3a,"addSubview:",_3c[_3d]); +} +return; +} +if(objj_msgSend(_3c,"count")===0){ +var _3e=objj_msgSend(_subviews,"count"); +while(_3e--){ +objj_msgSend(_subviews[_3e],"removeFromSuperview"); +} +return; +} +var _3f=objj_msgSend(CPMutableSet,"setWithArray:",_subviews); +objj_msgSend(_3f,"removeObjectsInArray:",_3c); +objj_msgSend(_3f,"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +var _40=objj_msgSend(CPMutableSet,"setWithArray:",_3c); +objj_msgSend(_40,"removeObjectsInArray:",_subviews); +var _41=nil,_42=objj_msgSend(_40,"objectEnumerator"); +while(_41=objj_msgSend(_42,"nextObject")){ +objj_msgSend(_3a,"addSubview:",_41); +} +if(objj_msgSend(_subviews,"isEqual:",_3c)){ +return; +} +_subviews=objj_msgSend(_3c,"copy"); +var _3d=0,_3e=objj_msgSend(_subviews,"count"); +for(;_3d<_3e;++_3d){ +var _43=_subviews[_3d]; +_DOMElement.removeChild(_43._DOMElement); +_DOMElement.appendChild(_43._DOMElement); +} +} +}),new objj_method(sel_getUid("_setWindow:"),function(_44,_45,_46){ +with(_44){ +if(_window===_46){ +return; +} +objj_msgSend(objj_msgSend(_44,"window"),"_dirtyKeyViewLoop"); +if(objj_msgSend(_window,"firstResponder")===_44){ +objj_msgSend(_window,"makeFirstResponder:",nil); +} +objj_msgSend(_44,"viewWillMoveToWindow:",_46); +if(_registeredDraggedTypes){ +objj_msgSend(_window,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_46,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +} +_window=_46; +var _47=objj_msgSend(_subviews,"count"); +while(_47--){ +objj_msgSend(_subviews[_47],"_setWindow:",_46); +} +objj_msgSend(_44,"viewDidMoveToWindow"); +objj_msgSend(objj_msgSend(_44,"window"),"_dirtyKeyViewLoop"); +} +}),new objj_method(sel_getUid("isDescendantOf:"),function(_48,_49,_4a){ +with(_48){ +var _4b=_48; +do{ +if(_4b==_4a){ +return YES; +} +}while(_4b=objj_msgSend(_4b,"superview")); +return NO; +} +}),new objj_method(sel_getUid("viewDidMoveToSuperview"),function(_4c,_4d){ +with(_4c){ +objj_msgSend(_4c,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_4e,_4f){ +with(_4e){ +} +}),new objj_method(sel_getUid("viewWillMoveToSuperview:"),function(_50,_51,_52){ +with(_50){ +} +}),new objj_method(sel_getUid("viewWillMoveToWindow:"),function(_53,_54,_55){ +with(_53){ +} +}),new objj_method(sel_getUid("willRemoveSubview:"),function(_56,_57,_58){ +with(_56){ +} +}),new objj_method(sel_getUid("enclosingMenuItem"),function(_59,_5a){ +with(_59){ +var _5b=_59; +while(_5b&&!objj_msgSend(_5b,"isKindOfClass:",objj_msgSend(_CPMenuItemView,"class"))){ +_5b=objj_msgSend(_5b,"superview"); +} +if(_5b){ +return _5b._menuItem; +} +return nil; +} +}),new objj_method(sel_getUid("setTag:"),function(_5c,_5d,_5e){ +with(_5c){ +_tag=_5e; +} +}),new objj_method(sel_getUid("tag"),function(_5f,_60){ +with(_5f){ +return _tag; +} +}),new objj_method(sel_getUid("viewWithTag:"),function(_61,_62,_63){ +with(_61){ +if(objj_msgSend(_61,"tag")==_63){ +return _61; +} +var _64=0,_65=_subviews.length; +for(;_64<_65;++_64){ +var _66=objj_msgSend(_subviews[_64],"viewWithTag:",_63); +if(_66){ +return _66; +} +} +return nil; +} +}),new objj_method(sel_getUid("isFlipped"),function(_67,_68){ +with(_67){ +return YES; +} +}),new objj_method(sel_getUid("setFrame:"),function(_69,_6a,_6b){ +with(_69){ +if(((_frame.origin.x==_6b.origin.x&&_frame.origin.y==_6b.origin.y)&&(_frame.size.width==_6b.size.width&&_frame.size.height==_6b.size.height))){ +return; +} +_inhibitFrameAndBoundsChangedNotifications=YES; +objj_msgSend(_69,"setFrameOrigin:",_6b.origin); +objj_msgSend(_69,"setFrameSize:",_6b.size); +_inhibitFrameAndBoundsChangedNotifications=NO; +if(_postsFrameChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_69); +} +} +}),new objj_method(sel_getUid("frame"),function(_6c,_6d){ +with(_6c){ +return {origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}}; +} +}),new objj_method(sel_getUid("frameOrigin"),function(_6e,_6f){ +with(_6e){ +return {x:_frame.origin.x,y:_frame.origin.y}; +} +}),new objj_method(sel_getUid("frameSize"),function(_70,_71){ +with(_70){ +return {width:_frame.size.width,height:_frame.size.height}; +} +}),new objj_method(sel_getUid("setCenter:"),function(_72,_73,_74){ +with(_72){ +objj_msgSend(_72,"setFrameOrigin:",CGPointMake(_74.x-_frame.size.width/2,_74.y-_frame.size.height/2)); +} +}),new objj_method(sel_getUid("center"),function(_75,_76){ +with(_75){ +return CGPointMake(_frame.size.width/2+_frame.origin.x,_frame.size.height/2+_frame.origin.y); +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_77,_78,_79){ +with(_77){ +var _7a=_frame.origin; +if(!_79||(_7a.x==_79.x&&_7a.y==_79.y)){ +return; +} +_7a.x=_79.x; +_7a.y=_79.y; +if(_postsFrameChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_77); +} +var _7b=_superview?_superview._boundsTransform:NULL; +if(_7b){ +var _7c={x:CGPointMake(_7a.x,_7a.y).x*_7b.a+CGPointMake(_7a.x,_7a.y).y*_7b.c+_7b.tx,y:CGPointMake(_7a.x,_7a.y).x*_7b.b+CGPointMake(_7a.x,_7a.y).y*_7b.d+_7b.ty}; +}else{ +var _7c={x:_7a.x,y:_7a.y}; +} +_DOMElement.style.left=ROUND(_7c.x)+"px"; +_DOMElement.style.top=ROUND(_7c.y)+"px"; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_7d,_7e,_7f){ +with(_7d){ +var _80=_frame.size; +if(!_7f||(_80.width==_7f.width&&_80.height==_7f.height)){ +return; +} +var _81={width:_80.width,height:_80.height}; +_80.width=_7f.width; +_80.height=_7f.height; +if(YES){ +_bounds.size.width=_7f.width; +_bounds.size.height=_7f.height; +} +if(_layer){ +objj_msgSend(_layer,"_owningViewBoundsChanged"); +} +if(_autoresizesSubviews){ +objj_msgSend(_7d,"resizeSubviewsWithOldSize:",_81); +} +objj_msgSend(_7d,"setNeedsLayout"); +objj_msgSend(_7d,"setNeedsDisplay:",YES); +_DOMElement.style.width=MAX(0,ROUND(_80.width))+"px"; +_DOMElement.style.height=MAX(0,ROUND(_80.height))+"px"; +if(_DOMContentsElement){ +_DOMContentsElement.width=MAX(0,ROUND(_80.width)); +_DOMContentsElement.height=MAX(0,ROUND(_80.height)); +_DOMContentsElement.style.width=MAX(0,ROUND(_80.width))+"px"; +_DOMContentsElement.style.height=MAX(0,ROUND(_80.height))+"px"; +} +if(_backgroundType!==_4){ +if(_backgroundType===_8){ +_DOMImageParts[0].style.width=MAX(0,ROUND(_80.width))+"px"; +_DOMImageParts[0].style.height=MAX(0,ROUND(_80.height))+"px"; +}else{ +var _82=objj_msgSend(objj_msgSend(_backgroundColor,"patternImage"),"imageSlices"); +if(_backgroundType===_5){ +_DOMImageParts[1].style.width=MAX(0,ROUND(_80.width))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_80.height-_DOMImageSizes[0].height-_DOMImageSizes[2].height))+"px"; +}else{ +if(_backgroundType===_6){ +_DOMImageParts[1].style.width=MAX(0,ROUND(_80.width-_DOMImageSizes[0].width-_DOMImageSizes[2].width))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_80.height))+"px"; +}else{ +if(_backgroundType===_7){ +var _83=_80.width-_DOMImageSizes[0].width-_DOMImageSizes[2].width,_84=_80.height-_DOMImageSizes[0].height-_DOMImageSizes[6].height; +_DOMImageParts[1].style.width=MAX(0,ROUND(_83))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_DOMImageSizes[0].height))+"px"; +_DOMImageParts[3].style.width=MAX(0,ROUND(_DOMImageSizes[3].width))+"px"; +_DOMImageParts[3].style.height=MAX(0,ROUND(_84))+"px"; +_DOMImageParts[4].style.width=MAX(0,ROUND(_83))+"px"; +_DOMImageParts[4].style.height=MAX(0,ROUND(_84))+"px"; +_DOMImageParts[5].style.width=MAX(0,ROUND(_DOMImageSizes[5].width))+"px"; +_DOMImageParts[5].style.height=MAX(0,ROUND(_84))+"px"; +_DOMImageParts[7].style.width=MAX(0,ROUND(_83))+"px"; +_DOMImageParts[7].style.height=MAX(0,ROUND(_DOMImageSizes[7].height))+"px"; +} +} +} +} +} +if(_postsFrameChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_7d); +} +} +}),new objj_method(sel_getUid("setBounds:"),function(_85,_86,_87){ +with(_85){ +if(((_bounds.origin.x==_87.origin.x&&_bounds.origin.y==_87.origin.y)&&(_bounds.size.width==_87.size.width&&_bounds.size.height==_87.size.height))){ +return; +} +_inhibitFrameAndBoundsChangedNotifications=YES; +objj_msgSend(_85,"setBoundsOrigin:",_87.origin); +objj_msgSend(_85,"setBoundsSize:",_87.size); +_inhibitFrameAndBoundsChangedNotifications=NO; +if(_postsBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_85); +} +} +}),new objj_method(sel_getUid("bounds"),function(_88,_89){ +with(_88){ +return {origin:{x:_bounds.origin.x,y:_bounds.origin.y},size:{width:_bounds.size.width,height:_bounds.size.height}}; +} +}),new objj_method(sel_getUid("boundsOrigin"),function(_8a,_8b){ +with(_8a){ +return {x:_bounds.origin.x,y:_bounds.origin.y}; +} +}),new objj_method(sel_getUid("boundsSize"),function(_8c,_8d){ +with(_8c){ +return {width:_bounds.size.width,height:_bounds.size.height}; +} +}),new objj_method(sel_getUid("setBoundsOrigin:"),function(_8e,_8f,_90){ +with(_8e){ +var _91=_bounds.origin; +if((_91.x==_90.x&&_91.y==_90.y)){ +return; +} +_91.x=_90.x; +_91.y=_90.y; +if(_91.x!=0||_91.y!=0){ +_boundsTransform={a:1,b:0,c:0,d:1,tx:-_91.x,ty:-_91.y}; +_inverseBoundsTransform=CGAffineTransformInvert(_boundsTransform); +}else{ +_boundsTransform=nil; +_inverseBoundsTransform=nil; +} +var _92=_subviews.length; +while(_92--){ +var _93=_subviews[_92],_91=_93._frame.origin; +if(_boundsTransform){ +var _94={x:CGPointMake(_91.x,_91.y).x*_boundsTransform.a+CGPointMake(_91.x,_91.y).y*_boundsTransform.c+_boundsTransform.tx,y:CGPointMake(_91.x,_91.y).x*_boundsTransform.b+CGPointMake(_91.x,_91.y).y*_boundsTransform.d+_boundsTransform.ty}; +}else{ +var _94={x:_91.x,y:_91.y}; +} +_93._DOMElement.style.left=ROUND(_94.x)+"px"; +_93._DOMElement.style.top=ROUND(_94.y)+"px"; +} +if(_postsBoundsChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_8e); +} +} +}),new objj_method(sel_getUid("setBoundsSize:"),function(_95,_96,_97){ +with(_95){ +var _98=_bounds.size; +if((_98.width==_97.width&&_98.height==_97.height)){ +return; +} +var _99=_frame.size; +if(!(_98.width==_99.width&&_98.height==_99.height)){ +var _9a=_bounds.origin; +_9a.x/=_98.width/_99.width; +_9a.y/=_98.height/_99.height; +} +_98.width=_97.width; +_98.height=_97.height; +if(!(_98.width==_99.width&&_98.height==_99.height)){ +var _9a=_bounds.origin; +_9a.x*=_98.width/_99.width; +_9a.y*=_98.height/_99.height; +} +if(_postsBoundsChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_95); +} +} +}),new objj_method(sel_getUid("resizeWithOldSuperviewSize:"),function(_9b,_9c,_9d){ +with(_9b){ +var _9e=objj_msgSend(_9b,"autoresizingMask"); +if(_9e==CPViewNotSizable){ +return; +} +var _9f=_superview._frame,_a0={origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}},dX=((_9f.size.width)-_9d.width)/(((_9e&CPViewMinXMargin)?1:0)+(_9e&CPViewWidthSizable?1:0)+(_9e&CPViewMaxXMargin?1:0)),dY=((_9f.size.height)-_9d.height)/((_9e&CPViewMinYMargin?1:0)+(_9e&CPViewHeightSizable?1:0)+(_9e&CPViewMaxYMargin?1:0)); +if(_9e&CPViewMinXMargin){ +_a0.origin.x+=dX; +} +if(_9e&CPViewWidthSizable){ +_a0.size.width+=dX; +} +if(_9e&CPViewMinYMargin){ +_a0.origin.y+=dY; +} +if(_9e&CPViewHeightSizable){ +_a0.size.height+=dY; +} +objj_msgSend(_9b,"setFrame:",_a0); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_a1,_a2,_a3){ +with(_a1){ +var _a4=_subviews.length; +while(_a4--){ +objj_msgSend(_subviews[_a4],"resizeWithOldSuperviewSize:",_a3); +} +} +}),new objj_method(sel_getUid("setAutoresizesSubviews:"),function(_a5,_a6,_a7){ +with(_a5){ +_autoresizesSubviews=!!_a7; +} +}),new objj_method(sel_getUid("autoresizesSubviews"),function(_a8,_a9){ +with(_a8){ +return _autoresizesSubviews; +} +}),new objj_method(sel_getUid("setAutoresizingMask:"),function(_aa,_ab,_ac){ +with(_aa){ +_autoresizingMask=_ac; +} +}),new objj_method(sel_getUid("autoresizingMask"),function(_ad,_ae){ +with(_ad){ +return _autoresizingMask; +} +}),new objj_method(sel_getUid("enterFullScreenMode"),function(_af,_b0){ +with(_af){ +return objj_msgSend(_af,"enterFullScreenMode:withOptions:",nil,nil); +} +}),new objj_method(sel_getUid("enterFullScreenMode:withOptions:"),function(_b1,_b2,_b3,_b4){ +with(_b1){ +_fullScreenModeState=_b5(_b1); +var _b6=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"contentBounds"),CPBorderlessWindowMask); +objj_msgSend(_b6,"setLevel:",CPScreenSaverWindowLevel); +objj_msgSend(_b6,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +var _b7=objj_msgSend(_b6,"contentView"); +objj_msgSend(_b7,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_b7,"addSubview:",_b1); +objj_msgSend(_b1,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_b1,"setFrame:",CGRectMakeCopy(objj_msgSend(_b7,"bounds"))); +objj_msgSend(_b6,"makeKeyAndOrderFront:",_b1); +objj_msgSend(_b6,"makeFirstResponder:",_b1); +_isInFullScreenMode=YES; +return YES; +} +}),new objj_method(sel_getUid("exitFullScreenMode"),function(_b8,_b9){ +with(_b8){ +objj_msgSend(_b8,"exitFullScreenModeWithOptions:",nil); +} +}),new objj_method(sel_getUid("exitFullScreenModeWithOptions:"),function(_ba,_bb,_bc){ +with(_ba){ +if(!_isInFullScreenMode){ +return; +} +_isInFullScreenMode=NO; +objj_msgSend(_ba,"setFrame:",_fullScreenModeState.frame); +objj_msgSend(_ba,"setAutoresizingMask:",_fullScreenModeState.autoresizingMask); +objj_msgSend(_fullScreenModeState.superview,"_insertSubview:atIndex:",_ba,_fullScreenModeState.index); +objj_msgSend(objj_msgSend(_ba,"window"),"orderOut:",_ba); +} +}),new objj_method(sel_getUid("isInFullScreenMode"),function(_bd,_be){ +with(_bd){ +return _isInFullScreenMode; +} +}),new objj_method(sel_getUid("setHidden:"),function(_bf,_c0,_c1){ +with(_bf){ +_c1=!!_c1; +if(_isHidden===_c1){ +return; +} +_isHidden=_c1; +_DOMElement.style.display=_isHidden?"none":"block"; +if(_c1){ +var _c2=objj_msgSend(_window,"firstResponder"); +if(objj_msgSend(_c2,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +do{ +if(_bf==_c2){ +objj_msgSend(_window,"makeFirstResponder:",objj_msgSend(_bf,"nextValidKeyView")); +break; +} +}while(_c2=objj_msgSend(_c2,"superview")); +} +objj_msgSend(_bf,"_notifyViewDidHide"); +}else{ +objj_msgSend(_bf,"_notifyViewDidUnhide"); +} +} +}),new objj_method(sel_getUid("_notifyViewDidHide"),function(_c3,_c4){ +with(_c3){ +objj_msgSend(_c3,"viewDidHide"); +var _c5=objj_msgSend(_subviews,"count"); +while(_c5--){ +objj_msgSend(_subviews[_c5],"_notifyViewDidHide"); +} +} +}),new objj_method(sel_getUid("_notifyViewDidUnhide"),function(_c6,_c7){ +with(_c6){ +objj_msgSend(_c6,"viewDidUnhide"); +var _c8=objj_msgSend(_subviews,"count"); +while(_c8--){ +objj_msgSend(_subviews[_c8],"_notifyViewDidUnhide"); +} +} +}),new objj_method(sel_getUid("isHidden"),function(_c9,_ca){ +with(_c9){ +return _isHidden; +} +}),new objj_method(sel_getUid("setClipsToBounds:"),function(_cb,_cc,_cd){ +with(_cb){ +if(_clipsToBounds===_cd){ +return; +} +_clipsToBounds=_cd; +_DOMElement.style.overflow=_clipsToBounds?"hidden":"visible"; +} +}),new objj_method(sel_getUid("clipsToBounds"),function(_ce,_cf){ +with(_ce){ +return _clipsToBounds; +} +}),new objj_method(sel_getUid("setAlphaValue:"),function(_d0,_d1,_d2){ +with(_d0){ +if(_opacity==_d2){ +return; +} +_opacity=_d2; +if(CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)){ +if(_d2===1){ +try{ +_DOMElement.style.removeAttribute("filter"); +} +catch(anException){ +} +}else{ +_DOMElement.style.filter="alpha(opacity="+_d2*100+")"; +} +}else{ +_DOMElement.style.opacity=_d2; +} +} +}),new objj_method(sel_getUid("alphaValue"),function(_d3,_d4){ +with(_d3){ +return _opacity; +} +}),new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"),function(_d5,_d6){ +with(_d5){ +var _d7=_d5; +while(_d7&&!objj_msgSend(_d7,"isHidden")){ +_d7=objj_msgSend(_d7,"superview"); +} +return _d7!==nil; +} +}),new objj_method(sel_getUid("viewDidHide"),function(_d8,_d9){ +with(_d8){ +} +}),new objj_method(sel_getUid("viewDidUnhide"),function(_da,_db){ +with(_da){ +} +}),new objj_method(sel_getUid("acceptsFirstMouse:"),function(_dc,_dd,_de){ +with(_dc){ +return YES; +} +}),new objj_method(sel_getUid("hitTests"),function(_df,_e0){ +with(_df){ +return _hitTests; +} +}),new objj_method(sel_getUid("setHitTests:"),function(_e1,_e2,_e3){ +with(_e1){ +_hitTests=!!_e3; +} +}),new objj_method(sel_getUid("hitTest:"),function(_e4,_e5,_e6){ +with(_e4){ +if(_isHidden||!_hitTests||!CPRectContainsPoint(_frame,_e6)){ +return nil; +} +var _e7=nil,i=_subviews.length,_e8={x:_e6.x-(_frame.origin.x),y:_e6.y-(_frame.origin.y)}; +if(_inverseBoundsTransform){ +_e8={x:_e8.x*_inverseBoundsTransform.a+_e8.y*_inverseBoundsTransform.c+_inverseBoundsTransform.tx,y:_e8.x*_inverseBoundsTransform.b+_e8.y*_inverseBoundsTransform.d+_inverseBoundsTransform.ty}; +} +while(i--){ +if(_e7=objj_msgSend(_subviews[i],"hitTest:",_e8)){ +return _e7; +} +} +return _e4; +} +}),new objj_method(sel_getUid("needsPanelToBecomeKey"),function(_e9,_ea){ +with(_e9){ +return NO; +} +}),new objj_method(sel_getUid("mouseDownCanMoveWindow"),function(_eb,_ec){ +with(_eb){ +return !objj_msgSend(_eb,"isOpaque"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_ed,_ee,_ef){ +with(_ed){ +if(objj_msgSend(_ed,"mouseDownCanMoveWindow")){ +objj_msgSendSuper({receiver:_ed,super_class:objj_getClass("CPView").super_class},"mouseDown:",_ef); +} +} +}),new objj_method(sel_getUid("rightMouseDown:"),function(_f0,_f1,_f2){ +with(_f0){ +var _f3=objj_msgSend(_f0,"menuForEvent:",_f2); +if(_f3){ +objj_msgSend(CPMenu,"popUpContextMenu:withEvent:forView:",_f3,_f2,_f0); +}else{ +if(objj_msgSend(objj_msgSend(_f0,"nextResponder"),"isKindOfClass:",CPView)){ +objj_msgSendSuper({receiver:_f0,super_class:objj_getClass("CPView").super_class},"rightMouseDown:",_f2); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_f2,"window"),"platformWindow"),"_propagateContextMenuDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("menuForEvent:"),function(_f4,_f5,_f6){ +with(_f4){ +return objj_msgSend(_f4,"menu")||objj_msgSend(objj_msgSend(_f4,"class"),"defaultMenu"); +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_f7,_f8,_f9){ +with(_f7){ +if(_backgroundColor==_f9){ +return; +} +if(_f9==objj_msgSend(CPNull,"null")){ +_f9=nil; +} +_backgroundColor=_f9; +var _fa=objj_msgSend(_backgroundColor,"patternImage"),_fb=_backgroundColor&&(objj_msgSend(_backgroundColor,"patternImage")||objj_msgSend(_backgroundColor,"alphaComponent")>0),_fc=_fb&&objj_msgSend(_backgroundColor,"alphaComponent")<1,_fd=CPFeatureIsCompatible(CPCSSRGBAFeature),_fe=_fc&&!_fd,_ff=0; +if(objj_msgSend(_fa,"isThreePartImage")){ +_backgroundType=objj_msgSend(_fa,"isVertical")?_5:_6; +_ff=3-_DOMImageParts.length; +}else{ +if(objj_msgSend(_fa,"isNinePartImage")){ +_backgroundType=_7; +_ff=9-_DOMImageParts.length; +}else{ +_backgroundType=_fe?_8:_4; +_ff=(_fe?1:0)-_DOMImageParts.length; +} +} +if(_ff>0){ +while(_ff--){ +var _100=_3.cloneNode(false); +_100.style.zIndex=-1000; +_DOMImageParts.push(_100); +_DOMElement.appendChild(_100); +} +}else{ +_ff=-_ff; +while(_ff--){ +_DOMElement.removeChild(_DOMImageParts.pop()); +} +} +if(_backgroundType===_4||_backgroundType===_8){ +var _101=_fb?objj_msgSend(_backgroundColor,"cssString"):""; +if(_fe){ +_DOMElement.style.background=""; +_DOMImageParts[0].style.background=objj_msgSend(_backgroundColor,"cssString"); +if(CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)){ +_DOMImageParts[0].style.filter="alpha(opacity="+objj_msgSend(_backgroundColor,"alphaComponent")*100+")"; +}else{ +_DOMImageParts[0].style.opacity=objj_msgSend(_backgroundColor,"alphaComponent"); +} +var size=objj_msgSend(_f7,"bounds").size; +_DOMImageParts[0].style.width=MAX(0,ROUND(size.width))+"px"; +_DOMImageParts[0].style.height=MAX(0,ROUND(size.height))+"px"; +}else{ +_DOMElement.style.background=_101; +} +}else{ +var _102=objj_msgSend(_fa,"imageSlices"),_103=MIN(_DOMImageParts.length,_102.length),_104=_frame.size; +while(_103--){ +var _105=_102[_103],size=_DOMImageSizes[_103]=_105?objj_msgSend(_105,"size"):{width:0,height:0}; +_DOMImageParts[_103].style.width=MAX(0,ROUND(size.width))+"px"; +_DOMImageParts[_103].style.height=MAX(0,ROUND(size.height))+"px"; +_DOMImageParts[_103].style.background=_105?"url(\""+objj_msgSend(_105,"filename")+"\")":""; +if(!_fd){ +if(CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)){ +try{ +_DOMImageParts[_103].style.removeAttribute("filter"); +} +catch(anException){ +} +}else{ +_DOMImageParts[_103].style.opacity=1; +} +} +} +if(_backgroundType==_7){ +var _106=_104.width-_DOMImageSizes[0].width-_DOMImageSizes[2].width,_107=_104.height-_DOMImageSizes[0].height-_DOMImageSizes[6].height; +_DOMImageParts[1].style.width=MAX(0,ROUND(_106))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_DOMImageSizes[0].height))+"px"; +_DOMImageParts[3].style.width=MAX(0,ROUND(_DOMImageSizes[3].width))+"px"; +_DOMImageParts[3].style.height=MAX(0,ROUND(_107))+"px"; +_DOMImageParts[4].style.width=MAX(0,ROUND(_106))+"px"; +_DOMImageParts[4].style.height=MAX(0,ROUND(_107))+"px"; +_DOMImageParts[5].style.width=MAX(0,ROUND(_DOMImageSizes[5].width))+"px"; +_DOMImageParts[5].style.height=MAX(0,ROUND(_107))+"px"; +_DOMImageParts[7].style.width=MAX(0,ROUND(_106))+"px"; +_DOMImageParts[7].style.height=MAX(0,ROUND(_DOMImageSizes[7].height))+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[0].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[0].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(_DOMImageSizes[0].width,0).x*NULL.a+CGPointMake(_DOMImageSizes[0].width,0).y*NULL.c+NULL.tx,y:CGPointMake(_DOMImageSizes[0].width,0).x*NULL.b+CGPointMake(_DOMImageSizes[0].width,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:_DOMImageSizes[0].width,y:0}; +} +_DOMImageParts[1].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[1].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[2].style.right=ROUND(_108.x)+"px"; +_DOMImageParts[2].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,_DOMImageSizes[1].height).x*NULL.a+CGPointMake(0,_DOMImageSizes[1].height).y*NULL.c+NULL.tx,y:CGPointMake(0,_DOMImageSizes[1].height).x*NULL.b+CGPointMake(0,_DOMImageSizes[1].height).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:_DOMImageSizes[1].height}; +} +_DOMImageParts[3].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[3].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(_DOMImageSizes[0].width,_DOMImageSizes[0].height).x*NULL.a+CGPointMake(_DOMImageSizes[0].width,_DOMImageSizes[0].height).y*NULL.c+NULL.tx,y:CGPointMake(_DOMImageSizes[0].width,_DOMImageSizes[0].height).x*NULL.b+CGPointMake(_DOMImageSizes[0].width,_DOMImageSizes[0].height).y*NULL.d+NULL.ty}; +}else{ +var _108={x:_DOMImageSizes[0].width,y:_DOMImageSizes[0].height}; +} +_DOMImageParts[4].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[4].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,_DOMImageSizes[1].height).x*NULL.a+CGPointMake(0,_DOMImageSizes[1].height).y*NULL.c+NULL.tx,y:CGPointMake(0,_DOMImageSizes[1].height).x*NULL.b+CGPointMake(0,_DOMImageSizes[1].height).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:_DOMImageSizes[1].height}; +} +_DOMImageParts[5].style.right=ROUND(_108.x)+"px"; +_DOMImageParts[5].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[6].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[6].style.bottom=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(_DOMImageSizes[6].width,0).x*NULL.a+CGPointMake(_DOMImageSizes[6].width,0).y*NULL.c+NULL.tx,y:CGPointMake(_DOMImageSizes[6].width,0).x*NULL.b+CGPointMake(_DOMImageSizes[6].width,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:_DOMImageSizes[6].width,y:0}; +} +_DOMImageParts[7].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[7].style.bottom=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[8].style.right=ROUND(_108.x)+"px"; +_DOMImageParts[8].style.bottom=ROUND(_108.y)+"px"; +}else{ +if(_backgroundType==_5){ +_DOMImageParts[1].style.width=MAX(0,ROUND(_104.width))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_104.height-_DOMImageSizes[0].height-_DOMImageSizes[2].height))+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[0].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[0].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,_DOMImageSizes[0].height).x*NULL.a+CGPointMake(0,_DOMImageSizes[0].height).y*NULL.c+NULL.tx,y:CGPointMake(0,_DOMImageSizes[0].height).x*NULL.b+CGPointMake(0,_DOMImageSizes[0].height).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:_DOMImageSizes[0].height}; +} +_DOMImageParts[1].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[1].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[2].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[2].style.bottom=ROUND(_108.y)+"px"; +}else{ +if(_backgroundType==_6){ +_DOMImageParts[1].style.width=MAX(0,ROUND(_104.width-_DOMImageSizes[0].width-_DOMImageSizes[2].width))+"px"; +_DOMImageParts[1].style.height=MAX(0,ROUND(_104.height))+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[0].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[0].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(_DOMImageSizes[0].width,0).x*NULL.a+CGPointMake(_DOMImageSizes[0].width,0).y*NULL.c+NULL.tx,y:CGPointMake(_DOMImageSizes[0].width,0).x*NULL.b+CGPointMake(_DOMImageSizes[0].width,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:_DOMImageSizes[0].width,y:0}; +} +_DOMImageParts[1].style.left=ROUND(_108.x)+"px"; +_DOMImageParts[1].style.top=ROUND(_108.y)+"px"; +if(NULL){ +var _108={x:CGPointMake(0,0).x*NULL.a+CGPointMake(0,0).y*NULL.c+NULL.tx,y:CGPointMake(0,0).x*NULL.b+CGPointMake(0,0).y*NULL.d+NULL.ty}; +}else{ +var _108={x:0,y:0}; +} +_DOMImageParts[2].style.right=ROUND(_108.x)+"px"; +_DOMImageParts[2].style.top=ROUND(_108.y)+"px"; +} +} +} +} +} +}),new objj_method(sel_getUid("backgroundColor"),function(self,_109){ +with(self){ +return _backgroundColor; +} +}),new objj_method(sel_getUid("convertPoint:fromView:"),function(self,_10a,_10b,_10c){ +with(self){ +return CGPointApplyAffineTransform(_10b,_10d(_10c,self)); +} +}),new objj_method(sel_getUid("convertPoint:toView:"),function(self,_10e,_10f,_110){ +with(self){ +return CGPointApplyAffineTransform(_10f,_10d(self,_110)); +} +}),new objj_method(sel_getUid("convertSize:fromView:"),function(self,_111,_112,_113){ +with(self){ +return CGSizeApplyAffineTransform(_112,_10d(_113,self)); +} +}),new objj_method(sel_getUid("convertSize:toView:"),function(self,_114,_115,_116){ +with(self){ +return CGSizeApplyAffineTransform(_115,_10d(self,_116)); +} +}),new objj_method(sel_getUid("convertRect:fromView:"),function(self,_117,_118,_119){ +with(self){ +return CGRectApplyAffineTransform(_118,_10d(_119,self)); +} +}),new objj_method(sel_getUid("convertRect:toView:"),function(self,_11a,_11b,_11c){ +with(self){ +return CGRectApplyAffineTransform(_11b,_10d(self,_11c)); +} +}),new objj_method(sel_getUid("setPostsFrameChangedNotifications:"),function(self,_11d,_11e){ +with(self){ +_11e=!!_11e; +if(_postsFrameChangedNotifications===_11e){ +return; +} +_postsFrameChangedNotifications=_11e; +if(_postsFrameChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,self); +} +} +}),new objj_method(sel_getUid("postsFrameChangedNotifications"),function(self,_11f){ +with(self){ +return _postsFrameChangedNotifications; +} +}),new objj_method(sel_getUid("setPostsBoundsChangedNotifications:"),function(self,_120,_121){ +with(self){ +_121=!!_121; +if(_postsBoundsChangedNotifications===_121){ +return; +} +_postsBoundsChangedNotifications=_121; +if(_postsBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,self); +} +} +}),new objj_method(sel_getUid("postsBoundsChangedNotifications"),function(self,_122){ +with(self){ +return _postsBoundsChangedNotifications; +} +}),new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"),function(self,_123,_124,_125,_126,_127,_128,_129,_12a){ +with(self){ +objj_msgSend(_window,"dragImage:at:offset:event:pasteboard:source:slideBack:",_124,objj_msgSend(self,"convertPoint:toView:",_125,nil),_126,_127,_128,_129,_12a); +} +}),new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"),function(self,_12b,_12c,_12d,_12e,_12f,_130,_131,_132){ +with(self){ +objj_msgSend(_window,"dragView:at:offset:event:pasteboard:source:slideBack:",_12c,objj_msgSend(self,"convertPoint:toView:",_12d,nil),_12e,_12f,_130,_131,_132); +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(self,_133,_134){ +with(self){ +if(!_134||!objj_msgSend(_134,"count")){ +return; +} +var _135=objj_msgSend(self,"window"); +objj_msgSend(_135,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_registeredDraggedTypes,"addObjectsFromArray:",_134); +objj_msgSend(_135,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypesArray=nil; +} +}),new objj_method(sel_getUid("registeredDraggedTypes"),function(self,_136){ +with(self){ +if(!_registeredDraggedTypesArray){ +_registeredDraggedTypesArray=objj_msgSend(_registeredDraggedTypes,"allObjects"); +} +return _registeredDraggedTypesArray; +} +}),new objj_method(sel_getUid("unregisterDraggedTypes"),function(self,_137){ +with(self){ +objj_msgSend(objj_msgSend(self,"window"),"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_138,_139){ +with(self){ +} +}),new objj_method(sel_getUid("setNeedsDisplay:"),function(self,_13a,_13b){ +with(self){ +if(_13b){ +objj_msgSend(self,"setNeedsDisplayInRect:",objj_msgSend(self,"bounds")); +} +} +}),new objj_method(sel_getUid("setNeedsDisplayInRect:"),function(self,_13c,_13d){ +with(self){ +if(!(_viewClassFlags&_a)){ +return; +} +if((_13d.size.width<=0||_13d.size.height<=0)){ +return; +} +if(_dirtyRect&&!(_dirtyRect.size.width<=0||_dirtyRect.size.height<=0)){ +_dirtyRect=CGRectUnion(_13d,_dirtyRect); +}else{ +_dirtyRect={origin:{x:_13d.origin.x,y:_13d.origin.y},size:{width:_13d.size.width,height:_13d.size.height}}; +} +_CPDisplayServerAddDisplayObject(self); +} +}),new objj_method(sel_getUid("needsDisplay"),function(self,_13e){ +with(self){ +return _dirtyRect&&!(_dirtyRect.size.width<=0||_dirtyRect.size.height<=0); +} +}),new objj_method(sel_getUid("displayIfNeeded"),function(self,_13f){ +with(self){ +if(objj_msgSend(self,"needsDisplay")){ +objj_msgSend(self,"displayRect:",_dirtyRect); +} +} +}),new objj_method(sel_getUid("display"),function(self,_140){ +with(self){ +objj_msgSend(self,"displayRect:",objj_msgSend(self,"visibleRect")); +} +}),new objj_method(sel_getUid("displayIfNeededInRect:"),function(self,_141,_142){ +with(self){ +if(objj_msgSend(self,"needsDisplay")){ +objj_msgSend(self,"displayRect:",_142); +} +} +}),new objj_method(sel_getUid("displayRect:"),function(self,_143,_144){ +with(self){ +objj_msgSend(self,"viewWillDraw"); +objj_msgSend(self,"displayRectIgnoringOpacity:inContext:",_144,nil); +_dirtyRect=NULL; +} +}),new objj_method(sel_getUid("displayRectIgnoringOpacity:inContext:"),function(self,_145,_146,_147){ +with(self){ +if(objj_msgSend(self,"isHidden")){ +return; +} +objj_msgSend(self,"lockFocus"); +CGContextClearRect(objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_146); +objj_msgSend(self,"drawRect:",_146); +objj_msgSend(self,"unlockFocus"); +} +}),new objj_method(sel_getUid("viewWillDraw"),function(self,_148){ +with(self){ +} +}),new objj_method(sel_getUid("lockFocus"),function(self,_149){ +with(self){ +if(!_graphicsContext){ +var _14a=CGBitmapGraphicsContextCreate(); +_DOMContentsElement=_14a.DOMElement; +_DOMContentsElement.style.zIndex=-100; +_DOMContentsElement.style.overflow="hidden"; +_DOMContentsElement.style.position="absolute"; +_DOMContentsElement.style.visibility="visible"; +_DOMContentsElement.width=ROUND((_frame.size.width)); +_DOMContentsElement.height=ROUND((_frame.size.height)); +_DOMContentsElement.style.top="0px"; +_DOMContentsElement.style.left="0px"; +_DOMContentsElement.style.width=ROUND((_frame.size.width))+"px"; +_DOMContentsElement.style.height=ROUND((_frame.size.height))+"px"; +_DOMElement.appendChild(_DOMContentsElement); +_graphicsContext=objj_msgSend(CPGraphicsContext,"graphicsContextWithGraphicsPort:flipped:",_14a,YES); +} +objj_msgSend(CPGraphicsContext,"setCurrentContext:",_graphicsContext); +CGContextSaveGState(objj_msgSend(_graphicsContext,"graphicsPort")); +} +}),new objj_method(sel_getUid("unlockFocus"),function(self,_14b){ +with(self){ +CGContextRestoreGState(objj_msgSend(_graphicsContext,"graphicsPort")); +objj_msgSend(CPGraphicsContext,"setCurrentContext:",nil); +} +}),new objj_method(sel_getUid("setNeedsLayout"),function(self,_14c){ +with(self){ +if(!(_viewClassFlags&_b)){ +return; +} +_needsLayout=YES; +_CPDisplayServerAddLayoutObject(self); +} +}),new objj_method(sel_getUid("layoutIfNeeded"),function(self,_14d){ +with(self){ +if(_needsLayout){ +_needsLayout=NO; +objj_msgSend(self,"layoutSubviews"); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_14e){ +with(self){ +} +}),new objj_method(sel_getUid("isOpaque"),function(self,_14f){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("visibleRect"),function(self,_150){ +with(self){ +if(!_superview){ +return _bounds; +} +return CGRectIntersection(objj_msgSend(self,"convertRect:fromView:",objj_msgSend(_superview,"visibleRect"),_superview),_bounds); +} +}),new objj_method(sel_getUid("_enclosingClipView"),function(self,_151){ +with(self){ +var _152=_superview,_153=objj_msgSend(CPClipView,"class"); +while(_152&&!objj_msgSend(_152,"isKindOfClass:",_153)){ +_152=_152._superview; +} +return _152; +} +}),new objj_method(sel_getUid("scrollPoint:"),function(self,_154,_155){ +with(self){ +var _156=objj_msgSend(self,"_enclosingClipView"); +if(!_156){ +return; +} +objj_msgSend(_156,"scrollToPoint:",objj_msgSend(self,"convertPoint:toView:",_155,_156)); +} +}),new objj_method(sel_getUid("scrollRectToVisible:"),function(self,_157,_158){ +with(self){ +var _159=objj_msgSend(self,"visibleRect"); +_158=CGRectIntersection(_158,_bounds); +if((_158.size.width<=0||_158.size.height<=0)||CGRectContainsRect(_159,_158)){ +return NO; +} +var _15a=objj_msgSend(self,"_enclosingClipView"); +if(!_15a){ +return NO; +} +var _15b={x:_159.origin.x,y:_159.origin.y}; +if((_158.origin.x)<=(_159.origin.x)){ +_15b.x=(_158.origin.x); +}else{ +if((_158.origin.x+_158.size.width)>(_159.origin.x+_159.size.width)){ +_15b.x+=(_158.origin.x+_158.size.width)-(_159.origin.x+_159.size.width); +} +} +if((_158.origin.y)<=(_159.origin.y)){ +_15b.y=CGRectGetMinY(_158); +}else{ +if((_158.origin.y+_158.size.height)>(_159.origin.y+_159.size.height)){ +_15b.y+=(_158.origin.y+_158.size.height)-(_159.origin.y+_159.size.height); +} +} +objj_msgSend(_15a,"scrollToPoint:",CGPointMake(_15b.x,_15b.y)); +return YES; +} +}),new objj_method(sel_getUid("autoscroll:"),function(self,_15c,_15d){ +with(self){ +return objj_msgSend(objj_msgSend(self,"superview"),"autoscroll:",_15d); +} +}),new objj_method(sel_getUid("adjustScroll:"),function(self,_15e,_15f){ +with(self){ +return _15f; +} +}),new objj_method(sel_getUid("scrollRect:by:"),function(self,_160,_161,_162){ +with(self){ +} +}),new objj_method(sel_getUid("enclosingScrollView"),function(self,_163){ +with(self){ +var _164=_superview,_165=objj_msgSend(CPScrollView,"class"); +while(_164&&!objj_msgSend(_164,"isKindOfClass:",_165)){ +_164=_164._superview; +} +return _164; +} +}),new objj_method(sel_getUid("scrollClipView:toPoint:"),function(self,_166,_167,_168){ +with(self){ +objj_msgSend(_167,"scrollToPoint:",_168); +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(self,_169,_16a){ +with(self){ +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(self,_16b){ +with(self){ +if(self!==objj_msgSend(CPView,"class")){ +return; +} +_3=document.createElement("div"); +var _16c=_3.style; +_16c.overflow="hidden"; +_16c.position="absolute"; +_16c.visibility="visible"; +_16c.zIndex=0; +_1=objj_msgSend(CPNotificationCenter,"defaultCenter"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingFrame"),function(self,_16d){ +with(self){ +return objj_msgSend(CPSet,"setWithObjects:","frameOrigin","frameSize"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingBounds"),function(self,_16e){ +with(self){ +return objj_msgSend(CPSet,"setWithObjects:","boundsOrigin","boundsSize"); +} +}),new objj_method(sel_getUid("defaultMenu"),function(self,_16f){ +with(self){ +return nil; +} +})]); +var _c=objj_getClass("CPView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("performKeyEquivalent:"),function(self,_170,_171){ +with(self){ +var _172=objj_msgSend(_subviews,"count"); +while(_172--){ +if(objj_msgSend(_subviews[_172],"performKeyEquivalent:",_171)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("canBecomeKeyView"),function(self,_173){ +with(self){ +return objj_msgSend(self,"acceptsFirstResponder")&&!objj_msgSend(self,"isHiddenOrHasHiddenAncestor"); +} +}),new objj_method(sel_getUid("nextKeyView"),function(self,_174){ +with(self){ +return _nextKeyView; +} +}),new objj_method(sel_getUid("nextValidKeyView"),function(self,_175){ +with(self){ +var _176=objj_msgSend(self,"nextKeyView"); +while(_176&&!objj_msgSend(_176,"canBecomeKeyView")){ +_176=objj_msgSend(_176,"nextKeyView"); +} +return _176; +} +}),new objj_method(sel_getUid("previousKeyView"),function(self,_177){ +with(self){ +return _previousKeyView; +} +}),new objj_method(sel_getUid("previousValidKeyView"),function(self,_178){ +with(self){ +var _179=objj_msgSend(self,"previousKeyView"); +while(_179&&!objj_msgSend(_179,"canBecomeKeyView")){ +_179=objj_msgSend(_179,"previousKeyView"); +} +return _179; +} +}),new objj_method(sel_getUid("_setPreviousKeyView:"),function(self,_17a,_17b){ +with(self){ +_previousKeyView=_17b; +} +}),new objj_method(sel_getUid("setNextKeyView:"),function(self,_17c,next){ +with(self){ +_nextKeyView=next; +objj_msgSend(_nextKeyView,"_setPreviousKeyView:",self); +} +})]); +var _c=objj_getClass("CPView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("setLayer:"),function(self,_17d,_17e){ +with(self){ +if(_layer==_17e){ +return; +} +if(_layer){ +_layer._owningView=nil; +_DOMElement.removeChild(_layer._DOMElement); +} +_layer=_17e; +if(_layer){ +var _17f=CGRectMakeCopy(objj_msgSend(self,"bounds")); +objj_msgSend(_layer,"_setOwningView:",self); +_layer._DOMElement.style.zIndex=100; +_DOMElement.appendChild(_layer._DOMElement); +} +} +}),new objj_method(sel_getUid("layer"),function(self,_180){ +with(self){ +return _layer; +} +}),new objj_method(sel_getUid("setWantsLayer:"),function(self,_181,_182){ +with(self){ +_wantsLayer=!!_182; +} +}),new objj_method(sel_getUid("wantsLayer"),function(self,_183){ +with(self){ +return _wantsLayer; +} +})]); +var _c=objj_getClass("CPView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("themeState"),function(self,_184){ +with(self){ +return _themeState; +} +}),new objj_method(sel_getUid("hasThemeState:"),function(self,_185,_186){ +with(self){ +return !!(_themeState&((typeof _186==="string")?CPThemeState(_186):_186)); +} +}),new objj_method(sel_getUid("setThemeState:"),function(self,_187,_188){ +with(self){ +var _189=(typeof _188==="string")?CPThemeState(_188):_188; +if(_themeState&_189){ +return NO; +} +_themeState|=_189; +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("unsetThemeState:"),function(self,_18a,_18b){ +with(self){ +var _18c=((typeof _18b==="string")?CPThemeState(_18b):_18b); +if(!(_themeState&_18c)){ +return NO; +} +_themeState&=~_18c; +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("_loadThemeAttributes"),function(self,_18d){ +with(self){ +var _18e=objj_msgSend(self,"class"),_18f=objj_msgSend(_18e,"_themeAttributes"),_190=_18f.length; +if(!_190){ +return; +} +var _191=objj_msgSend(self,"theme"),_192=objj_msgSend(_18e,"themeClass"); +_themeAttributes={}; +while(_190--){ +var _193=_18f[_190--],_194=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_193,_18f[_190]); +objj_msgSend(_194,"setParentAttribute:",objj_msgSend(_191,"attributeWithName:forClass:",_193,_192)); +_themeAttributes[_193]=_194; +} +} +}),new objj_method(sel_getUid("setTheme:"),function(self,_195,_196){ +with(self){ +if(_theme===_196){ +return; +} +_theme=_196; +objj_msgSend(self,"viewDidChangeTheme"); +} +}),new objj_method(sel_getUid("theme"),function(self,_197){ +with(self){ +return _theme; +} +}),new objj_method(sel_getUid("viewDidChangeTheme"),function(self,_198){ +with(self){ +if(!_themeAttributes){ +return; +} +var _199=objj_msgSend(self,"theme"),_19a=objj_msgSend(objj_msgSend(self,"class"),"themeClass"); +for(var _19b in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_19b)){ +objj_msgSend(_themeAttributes[_19b],"setParentAttribute:",objj_msgSend(_199,"attributeWithName:forClass:",_19b,_19a)); +} +} +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("_themeAttributeDictionary"),function(self,_19c){ +with(self){ +var _19d=objj_msgSend(CPDictionary,"dictionary"); +if(_themeAttributes){ +var _19e=objj_msgSend(self,"theme"); +for(var _19f in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_19f)){ +objj_msgSend(_19d,"setObject:forKey:",_themeAttributes[_19f],_19f); +} +} +} +return _19d; +} +}),new objj_method(sel_getUid("setValue:forThemeAttribute:inState:"),function(self,_1a0,_1a1,_1a2,_1a3){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1a2]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1a2+"'"); +} +var _1a4=objj_msgSend(self,"currentValueForThemeAttribute:",_1a2); +objj_msgSend(_themeAttributes[_1a2],"setValue:forState:",_1a1,_1a3); +if(objj_msgSend(self,"currentValueForThemeAttribute:",_1a2)===_1a4){ +return; +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setValue:forThemeAttribute:"),function(self,_1a5,_1a6,_1a7){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1a7]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1a7+"'"); +} +var _1a8=objj_msgSend(self,"currentValueForThemeAttribute:",_1a7); +objj_msgSend(_themeAttributes[_1a7],"setValue:",_1a6); +if(objj_msgSend(self,"currentValueForThemeAttribute:",_1a7)===_1a8){ +return; +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("valueForThemeAttribute:inState:"),function(self,_1a9,_1aa,_1ab){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1aa]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1aa+"'"); +} +return objj_msgSend(_themeAttributes[_1aa],"valueForState:",_1ab); +} +}),new objj_method(sel_getUid("valueForThemeAttribute:"),function(self,_1ac,_1ad){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1ad]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1ad+"'"); +} +return objj_msgSend(_themeAttributes[_1ad],"value"); +} +}),new objj_method(sel_getUid("currentValueForThemeAttribute:"),function(self,_1ae,_1af){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_1af]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_1af+"'"); +} +return objj_msgSend(_themeAttributes[_1af],"valueForState:",_themeState); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(self,_1b0,_1b1){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(self,_1b2,_1b3){ +with(self){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +}),new objj_method(sel_getUid("layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:"),function(self,_1b4,_1b5,_1b6,_1b7){ +with(self){ +if(!_ephemeralSubviewsForNames){ +_ephemeralSubviewsForNames={}; +_ephemeralSubviews=objj_msgSend(CPSet,"set"); +} +var _1b8=objj_msgSend(self,"rectForEphemeralSubviewNamed:",_1b5); +if(_1b8&&!(_1b8.size.width<=0||_1b8.size.height<=0)){ +if(!_ephemeralSubviewsForNames[_1b5]){ +_ephemeralSubviewsForNames[_1b5]=objj_msgSend(self,"createEphemeralSubviewNamed:",_1b5); +objj_msgSend(_ephemeralSubviews,"addObject:",_ephemeralSubviewsForNames[_1b5]); +if(_ephemeralSubviewsForNames[_1b5]){ +objj_msgSend(self,"addSubview:positioned:relativeTo:",_ephemeralSubviewsForNames[_1b5],_1b6,_ephemeralSubviewsForNames[_1b7]); +} +} +if(_ephemeralSubviewsForNames[_1b5]){ +objj_msgSend(_ephemeralSubviewsForNames[_1b5],"setFrame:",_1b8); +} +}else{ +if(_ephemeralSubviewsForNames[_1b5]){ +objj_msgSend(_ephemeralSubviewsForNames[_1b5],"removeFromSuperview"); +objj_msgSend(_ephemeralSubviews,"removeObject:",_ephemeralSubviewsForNames[_1b5]); +delete _ephemeralSubviewsForNames[_1b5]; +} +} +return _ephemeralSubviewsForNames[_1b5]; +} +}),new objj_method(sel_getUid("ephemeralSubviewNamed:"),function(self,_1b9,_1ba){ +with(self){ +if(!_ephemeralSubviewsForNames){ +return nil; +} +return (_ephemeralSubviewsForNames[_1ba]||nil); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("themeClass"),function(self,_1bb){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("themeAttributes"),function(self,_1bc){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("_themeAttributes"),function(self,_1bd){ +with(self){ +if(!_2){ +_2={}; +} +var _1be=objj_msgSend(self,"class"),_1bf=objj_msgSend(CPView,"class"),_1c0=[],_1c1=objj_msgSend(CPNull,"null"); +for(;_1be&&_1be!==_1bf;_1be=objj_msgSend(_1be,"superclass")){ +var _1c2=_2[class_getName(_1be)]; +if(_1c2){ +_1c0=_1c0.length?_1c0.concat(_1c2):_1c0; +_2[objj_msgSend(self,"className")]=_1c0; +break; +} +var _1c3=objj_msgSend(_1be,"themeAttributes"); +if(!_1c3){ +continue; +} +var _1c4=objj_msgSend(_1c3,"allKeys"),_1c5=_1c4.length; +while(_1c5--){ +var _1c6=_1c4[_1c5],_1c7=objj_msgSend(_1c3,"objectForKey:",_1c6); +_1c0.push(_1c7===_1c1?nil:_1c7); +_1c0.push(_1c6); +} +} +return _1c0; +} +})]); +var _1c8="CPViewAutoresizingMask",_1c9="CPViewAutoresizesSubviews",_1ca="CPViewBackgroundColor",_1cb="CPViewBoundsKey",_1cc="CPViewFrameKey",_1cd="CPViewHitTestsKey",_1ce="CPViewIsHiddenKey",_1cf="CPViewOpacityKey",_1d0="CPViewSubviewsKey",_1d1="CPViewSuperviewKey",_1d2="CPViewTagKey",_1d3="CPViewThemeStateKey",_1d4="CPViewWindowKey",_1d5="CPViewNextKeyViewKey",_1d6="CPViewPreviousKeyViewKey"; +var _c=objj_getClass("CPView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("initWithCoder:"),function(self,_1d7,_1d8){ +with(self){ +_DOMElement=_3.cloneNode(false); +_frame=objj_msgSend(_1d8,"decodeRectForKey:",_1cc); +_bounds=objj_msgSend(_1d8,"decodeRectForKey:",_1cb); +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPView").super_class},"initWithCoder:",_1d8); +if(self){ +_tag=objj_msgSend(_1d8,"containsValueForKey:",_1d2)?objj_msgSend(_1d8,"decodeIntForKey:",_1d2):-1; +_window=objj_msgSend(_1d8,"decodeObjectForKey:",_1d4); +_subviews=objj_msgSend(_1d8,"decodeObjectForKey:",_1d0)||[]; +_superview=objj_msgSend(_1d8,"decodeObjectForKey:",_1d1); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_autoresizingMask=objj_msgSend(_1d8,"decodeIntForKey:",_1c8)||CPViewNotSizable; +_autoresizesSubviews=!objj_msgSend(_1d8,"containsValueForKey:",_1c9)||objj_msgSend(_1d8,"decodeBoolForKey:",_1c9); +_hitTests=!objj_msgSend(_1d8,"containsValueForKey:",_1cd)||objj_msgSend(_1d8,"decodeObjectForKey:",_1cd); +_DOMImageParts=[]; +_DOMImageSizes=[]; +if(NULL){ +var _1d9={x:CGPointMake((_frame.origin.x),(_frame.origin.y)).x*NULL.a+CGPointMake((_frame.origin.x),(_frame.origin.y)).y*NULL.c+NULL.tx,y:CGPointMake((_frame.origin.x),(_frame.origin.y)).x*NULL.b+CGPointMake((_frame.origin.x),(_frame.origin.y)).y*NULL.d+NULL.ty}; +}else{ +var _1d9={x:(_frame.origin.x),y:(_frame.origin.y)}; +} +_DOMElement.style.left=ROUND(_1d9.x)+"px"; +_DOMElement.style.top=ROUND(_1d9.y)+"px"; +_DOMElement.style.width=MAX(0,ROUND((_frame.size.width)))+"px"; +_DOMElement.style.height=MAX(0,ROUND((_frame.size.height)))+"px"; +var _1da=0,_1db=_subviews.length; +for(;_1da<_1db;++_1da){ +_DOMElement.appendChild(_subviews[_1da]._DOMElement); +} +if(objj_msgSend(_1d8,"containsValueForKey:",_1ce)){ +objj_msgSend(self,"setHidden:",objj_msgSend(_1d8,"decodeBoolForKey:",_1ce)); +}else{ +_isHidden=NO; +} +if(objj_msgSend(_1d8,"containsValueForKey:",_1cf)){ +objj_msgSend(self,"setAlphaValue:",objj_msgSend(_1d8,"decodeIntForKey:",_1cf)); +}else{ +_opacity=1; +} +objj_msgSend(self,"setBackgroundColor:",objj_msgSend(_1d8,"decodeObjectForKey:",_1ca)); +objj_msgSend(self,"setupViewFlags"); +_theme=objj_msgSend(CPTheme,"defaultTheme"); +_themeState=CPThemeState(objj_msgSend(_1d8,"decodeIntForKey:",_1d3)); +_themeAttributes={}; +var _1dc=objj_msgSend(self,"class"),_1dd=objj_msgSend(_1dc,"themeClass"),_1de=objj_msgSend(_1dc,"_themeAttributes"),_1db=_1de.length; +while(_1db--){ +var _1df=_1de[_1db--]; +_themeAttributes[_1df]=CPThemeAttributeDecode(_1d8,_1df,_1de[_1db],_theme,_1dd); +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_1e0,_1e1){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPView").super_class},"encodeWithCoder:",_1e1); +if(_tag!==-1){ +objj_msgSend(_1e1,"encodeInt:forKey:",_tag,_1d2); +} +objj_msgSend(_1e1,"encodeRect:forKey:",_frame,_1cc); +objj_msgSend(_1e1,"encodeRect:forKey:",_bounds,_1cb); +if(_window!==nil){ +objj_msgSend(_1e1,"encodeConditionalObject:forKey:",_window,_1d4); +} +var _1e2=objj_msgSend(_subviews,"count"),_1e3=_subviews; +if(_1e2>0&&objj_msgSend(_ephemeralSubviews,"count")>0){ +_1e3=objj_msgSend(_1e3,"copy"); +while(_1e2--){ +if(objj_msgSend(_ephemeralSubviews,"containsObject:",_1e3[_1e2])){ +_1e3.splice(_1e2,1); +} +} +} +if(_1e3.length>0){ +objj_msgSend(_1e1,"encodeObject:forKey:",_1e3,_1d0); +} +if(_superview!==nil){ +objj_msgSend(_1e1,"encodeConditionalObject:forKey:",_superview,_1d1); +} +if(_autoresizingMask!==CPViewNotSizable){ +objj_msgSend(_1e1,"encodeInt:forKey:",_autoresizingMask,_1c8); +} +if(!_autoresizesSubviews){ +objj_msgSend(_1e1,"encodeBool:forKey:",_autoresizesSubviews,_1c9); +} +if(_backgroundColor!==nil){ +objj_msgSend(_1e1,"encodeObject:forKey:",_backgroundColor,_1ca); +} +if(_hitTests!==YES){ +objj_msgSend(_1e1,"encodeBool:forKey:",_hitTests,_1cd); +} +if(_opacity!==1){ +objj_msgSend(_1e1,"encodeFloat:forKey:",_opacity,_1cf); +} +if(_isHidden){ +objj_msgSend(_1e1,"encodeBool:forKey:",_isHidden,_1ce); +} +var _1e4=objj_msgSend(self,"nextKeyView"); +if(_1e4!==nil){ +objj_msgSend(_1e1,"encodeConditionalObject:forKey:",_1e4,_1d5); +} +var _1e5=objj_msgSend(self,"previousKeyView"); +if(_1e5!==nil){ +objj_msgSend(_1e1,"encodeConditionalObject:forKey:",_1e5,_1d6); +} +objj_msgSend(_1e1,"encodeInt:forKey:",CPThemeStateName(_themeState),_1d3); +for(var _1e6 in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_1e6)){ +CPThemeAttributeEncode(_1e1,_themeAttributes[_1e6]); +} +} +} +})]); +var _b5=function(_1e7){ +var _1e8=_1e7._superview; +return {autoresizingMask:_1e7._autoresizingMask,frame:CGRectMakeCopy(_1e7._frame),index:(_1e8?objj_msgSend(_1e8._subviews,"indexOfObjectIdenticalTo:",_1e7):0),superview:_1e8}; +}; +var _10d=function(_1e9,_1ea){ +var _1eb=CGAffineTransformMakeIdentity(),_1ec=YES,_1ed=nil,_1ee=nil; +if(_1e9){ +var view=_1e9; +while(view&&view!=_1ea){ +var _1ef=view._frame; +_1eb.tx+=(_1ef.origin.x); +_1eb.ty+=(_1ef.origin.y); +if(view._boundsTransform){ +var tx=_1eb.tx*view._boundsTransform.a+_1eb.ty*view._boundsTransform.c+view._boundsTransform.tx; +_1eb.ty=_1eb.tx*view._boundsTransform.b+_1eb.ty*view._boundsTransform.d+view._boundsTransform.ty; +_1eb.tx=tx; +var a=_1eb.a*view._boundsTransform.a+_1eb.b*view._boundsTransform.c,b=_1eb.a*view._boundsTransform.b+_1eb.b*view._boundsTransform.d,c=_1eb.c*view._boundsTransform.a+_1eb.d*view._boundsTransform.c; +_1eb.d=_1eb.c*view._boundsTransform.b+_1eb.d*view._boundsTransform.d; +_1eb.a=a; +_1eb.b=b; +_1eb.c=c; +} +view=view._superview; +} +if(view===_1ea){ +return _1eb; +}else{ +if(_1e9&&_1ea){ +_1ed=objj_msgSend(_1e9,"window"); +_1ee=objj_msgSend(_1ea,"window"); +if(_1ed&&_1ee&&_1ed!==_1ee){ +_1ec=NO; +var _1ef=objj_msgSend(_1ed,"frame"); +_1eb.tx+=(_1ef.origin.x); +_1eb.ty+=(_1ef.origin.y); +} +} +} +} +var view=_1ea; +while(view){ +var _1ef=view._frame; +_1eb.tx-=(_1ef.origin.x); +_1eb.ty-=(_1ef.origin.y); +if(view._boundsTransform){ +var tx=_1eb.tx*view._inverseBoundsTransform.a+_1eb.ty*view._inverseBoundsTransform.c+view._inverseBoundsTransform.tx; +_1eb.ty=_1eb.tx*view._inverseBoundsTransform.b+_1eb.ty*view._inverseBoundsTransform.d+view._inverseBoundsTransform.ty; +_1eb.tx=tx; +var a=_1eb.a*view._inverseBoundsTransform.a+_1eb.b*view._inverseBoundsTransform.c,b=_1eb.a*view._inverseBoundsTransform.b+_1eb.b*view._inverseBoundsTransform.d,c=_1eb.c*view._inverseBoundsTransform.a+_1eb.d*view._inverseBoundsTransform.c; +_1eb.d=_1eb.c*view._inverseBoundsTransform.b+_1eb.d*view._inverseBoundsTransform.d; +_1eb.a=a; +_1eb.b=b; +_1eb.c=c; +} +view=view._superview; +} +if(!_1ec){ +var _1ef=objj_msgSend(_1ee,"frame"); +_1eb.tx-=(_1ef.origin.x); +_1eb.ty-=(_1ef.origin.y); +} +return _1eb; +}; +p;17;CPViewAnimation.jt;4854;@STATIC;1.0;I;20;AppKit/CPAnimation.jt;4810; +objj_executeFile("AppKit/CPAnimation.j",NO); +CPViewAnimationTargetKey="CPViewAnimationTarget"; +CPViewAnimationStartFrameKey="CPViewAnimationStartFrame"; +CPViewAnimationEndFrameKey="CPViewAnimationEndFrame"; +CPViewAnimationEffectKey="CPViewAnimationEffect"; +CPViewAnimationFadeInEffect="CPViewAnimationFadeIn"; +CPViewAnimationFadeOutEffect="CPViewAnimationFadeOut"; +var _1=objj_allocateClassPair(CPAnimation,"CPViewAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_viewAnimations")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithViewAnimations:"),function(_3,_4,_5){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPViewAnimation").super_class},"initWithDuration:animationCurve:",0.5,CPAnimationLinear)){ +objj_msgSend(_3,"setViewAnimations:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("startAnimation"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_viewAnimations,"count"); +while(_8--){ +var _9=objj_msgSend(_viewAnimations,"objectAtIndex:",_8),_a=objj_msgSend(_6,"_targetView:",_9),_b=objj_msgSend(_6,"_startFrame:",_9); +objj_msgSend(_a,"setFrame:",_b); +var _c=objj_msgSend(_6,"_effect:",_9); +if(_c===CPViewAnimationFadeInEffect){ +objj_msgSend(_a,"setAlphaValue:",0); +objj_msgSend(_a,"setHidden:",NO); +}else{ +if(_c===CPViewAnimationFadeOutEffect){ +objj_msgSend(_a,"setAlphaValue:",1); +} +} +} +objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPViewAnimation").super_class},"startAnimation"); +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(_d,_e,_f){ +with(_d){ +objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPViewAnimation").super_class},"setCurrentProgress:",_f); +var _10=objj_msgSend(_viewAnimations,"count"); +while(_10--){ +var _11=objj_msgSend(_viewAnimations,"objectAtIndex:",_10),_12=objj_msgSend(_d,"_targetView:",_11),_13=objj_msgSend(_d,"_startFrame:",_11),_14=objj_msgSend(_d,"_endFrame:",_11),_15={origin:{x:0,y:0},size:{width:0,height:0}}; +_15.origin.x=_14.origin.x-_13.origin.x; +_15.origin.y=_14.origin.y-_13.origin.y; +_15.size.width=_14.size.width-_13.size.width; +_15.size.height=_14.size.height-_13.size.height; +var _16={origin:{x:0,y:0},size:{width:0,height:0}}; +_16.origin.x=_13.origin.x+_15.origin.x*_f; +_16.origin.y=_13.origin.y+_15.origin.y*_f; +_16.size.width=_13.size.width+_15.size.width*_f; +_16.size.height=_13.size.height+_15.size.height*_f; +objj_msgSend(_12,"setFrame:",_16); +var _17=objj_msgSend(_d,"_effect:",_11); +if(_17===CPViewAnimationFadeInEffect){ +objj_msgSend(_12,"setAlphaValue:",1*_f); +}else{ +if(_17===CPViewAnimationFadeOutEffect){ +objj_msgSend(_12,"setAlphaValue:",1+(0-1)*_f); +} +} +if(_f===1){ +objj_msgSend(_12,"setHidden:",(_14.size.width<=0||_14.size.height<=0)||objj_msgSend(_12,"alphaValue")===0); +} +} +} +}),new objj_method(sel_getUid("stopAnimation"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_viewAnimations,"count"); +while(_1a--){ +var _1b=objj_msgSend(_viewAnimations,"objectAtIndex:",_1a),_1c=objj_msgSend(_18,"_targetView:",_1b),_1d=objj_msgSend(_18,"_endFrame:",_1b); +objj_msgSend(_1c,"setFrame:",_1d); +var _1e=objj_msgSend(_18,"_effect:",_1b); +if(_1e===CPViewAnimationFadeInEffect){ +objj_msgSend(_1c,"setAlphaValue:",1); +}else{ +if(_1e===CPViewAnimationFadeOutEffect){ +objj_msgSend(_1c,"setAlphaValue:",0); +} +} +objj_msgSend(_1c,"setHidden:",(_1d.size.width<=0||_1d.size.height<=0)||objj_msgSend(_1c,"alphaValue")===0); +} +objj_msgSendSuper({receiver:_18,super_class:objj_getClass("CPViewAnimation").super_class},"stopAnimation"); +} +}),new objj_method(sel_getUid("_targetView:"),function(_1f,_20,_21){ +with(_1f){ +var _22=objj_msgSend(_21,"valueForKey:",CPViewAnimationTargetKey); +if(!_22){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(CPString,"stringWithFormat:","view animation: %@ does not have a target view",objj_msgSend(_21,"description"))); +} +return _22; +} +}),new objj_method(sel_getUid("_startFrame:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_25,"valueForKey:",CPViewAnimationStartFrameKey); +if(!_26){ +return objj_msgSend(objj_msgSend(_23,"_targetView:",_25),"frame"); +} +return _26; +} +}),new objj_method(sel_getUid("_endFrame:"),function(_27,_28,_29){ +with(_27){ +var _2a=objj_msgSend(_29,"valueForKey:",CPViewAnimationEndFrameKey); +if(!_2a){ +return objj_msgSend(objj_msgSend(_27,"_targetView:",_29),"frame"); +} +return _2a; +} +}),new objj_method(sel_getUid("_effect:"),function(_2b,_2c,_2d){ +with(_2b){ +return objj_msgSend(_2d,"valueForKey:",CPViewAnimationEffectKey); +} +}),new objj_method(sel_getUid("viewAnimations"),function(_2e,_2f){ +with(_2e){ +return _viewAnimations; +} +}),new objj_method(sel_getUid("setViewAnimations:"),function(_30,_31,_32){ +with(_30){ +if(_32!=_viewAnimations){ +objj_msgSend(_30,"stopAnimation"); +_viewAnimations=objj_msgSend(_32,"copy"); +} +} +})]); +p;18;CPViewController.jt;5479;@STATIC;1.0;I;20;AppKit/CPResponder.jt;5435; +objj_executeFile("AppKit/CPResponder.j",NO); +var _1; +var _2=objj_allocateClassPair(CPResponder,"CPViewController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_view"),new objj_ivar("_isLoading"),new objj_ivar("_representedObject"),new objj_ivar("_title"),new objj_ivar("_cibName"),new objj_ivar("_cibBundle"),new objj_ivar("_cibExternalNameTable")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("view"),function(_4,_5){ +with(_4){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_6,_7,_8){ +with(_6){ +_view=_8; +} +}),new objj_method(sel_getUid("representedObject"),function(_9,_a){ +with(_9){ +return _representedObject; +} +}),new objj_method(sel_getUid("setRepresentedObject:"),function(_b,_c,_d){ +with(_b){ +_representedObject=_d; +} +}),new objj_method(sel_getUid("title"),function(_e,_f){ +with(_e){ +return _title; +} +}),new objj_method(sel_getUid("setTitle:"),function(_10,_11,_12){ +with(_10){ +_title=_12; +} +}),new objj_method(sel_getUid("cibName"),function(_13,_14){ +with(_13){ +return _cibName; +} +}),new objj_method(sel_getUid("cibBundle"),function(_15,_16){ +with(_15){ +return _cibBundle; +} +}),new objj_method(sel_getUid("cibExternalNameTable"),function(_17,_18){ +with(_17){ +return _cibExternalNameTable; +} +}),new objj_method(sel_getUid("init"),function(_19,_1a){ +with(_19){ +return objj_msgSend(_19,"initWithCibName:bundle:",nil,nil); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +return objj_msgSend(_1b,"initWithCibName:bundle:externalNameTable:",_1d,_1e,nil); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:owner:"),function(_1f,_20,_21,_22,_23){ +with(_1f){ +return objj_msgSend(_1f,"initWithCibName:bundle:externalNameTable:",_21,_22,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_23,CPCibOwner)); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:externalNameTable:"),function(_24,_25,_26,_27,_28){ +with(_24){ +_24=objj_msgSendSuper({receiver:_24,super_class:objj_getClass("CPViewController").super_class},"init"); +if(_24){ +_cibName=_26; +_cibBundle=_27||objj_msgSend(CPBundle,"mainBundle"); +_cibExternalNameTable=_28||objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_24,CPCibOwner); +_isLoading=NO; +} +return _24; +} +}),new objj_method(sel_getUid("loadView"),function(_29,_2a){ +with(_29){ +if(_view){ +return; +} +var cib=objj_msgSend(_1,"objectForKey:",_cibName); +if(!cib){ +cib=objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",objj_msgSend(_cibBundle,"pathForResource:",_cibName+".cib")); +objj_msgSend(_1,"setObject:forKey:",cib,_cibName); +} +objj_msgSend(cib,"instantiateCibWithExternalNameTable:",_cibExternalNameTable); +} +}),new objj_method(sel_getUid("view"),function(_2b,_2c){ +with(_2b){ +if(!_view){ +_isLoading=YES; +var _2d=objj_msgSend(_cibExternalNameTable,"objectForKey:",CPCibOwner); +if(objj_msgSend(_2d,"respondsToSelector:",sel_getUid("viewControllerWillLoadCib:"))){ +objj_msgSend(_2d,"viewControllerWillLoadCib:",_2b); +} +objj_msgSend(_2b,"loadView"); +if(_view===nil&&objj_msgSend(_2d,"isKindOfClass:",objj_msgSend(CPDocument,"class"))){ +objj_msgSend(_2b,"setView:",objj_msgSend(_2d,"valueForKey:","view")); +} +if(!_view){ +var _2e=objj_msgSend(CPString,"stringWithFormat:","View for %@ could not be loaded from Cib or no view specified. Override loadView to load the view manually.",_2b); +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,_2e); +} +if(objj_msgSend(_2d,"respondsToSelector:",sel_getUid("viewControllerDidLoadCib:"))){ +objj_msgSend(_2d,"viewControllerDidLoadCib:",_2b); +} +_isLoading=NO; +objj_msgSend(_2b,"viewDidLoad"); +} +return _view; +} +}),new objj_method(sel_getUid("viewDidLoad"),function(_2f,_30){ +with(_2f){ +} +}),new objj_method(sel_getUid("setView:"),function(_31,_32,_33){ +with(_31){ +var _34=!_view; +_view=_33; +if(!_isLoading&&_34){ +objj_msgSend(_31,"viewDidLoad"); +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_35,_36){ +with(_35){ +if(_35===CPViewController){ +_1=objj_msgSend(CPDictionary,"dictionary"); +} +} +})]); +var _37="CPViewControllerViewKey",_38="CPViewControllerTitleKey",_39="CPViewControllerCibNameKey",_3a="CPViewControllerBundleKey"; +var _2=objj_getClass("CPViewController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPViewController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_3b,_3c,_3d){ +with(_3b){ +_3b=objj_msgSendSuper({receiver:_3b,super_class:objj_getClass("CPViewController").super_class},"initWithCoder:",_3d); +if(_3b){ +_view=objj_msgSend(_3d,"decodeObjectForKey:",_37); +_title=objj_msgSend(_3d,"decodeObjectForKey:",_38); +_cibName=objj_msgSend(_3d,"decodeObjectForKey:",_39); +var _3e=objj_msgSend(_3d,"decodeObjectForKey:",_3a); +_cibBundle=_3e?objj_msgSend(CPBundle,"bundleWithPath:",_3e):objj_msgSend(CPBundle,"mainBundle"); +_cibExternalNameTable=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_3b,CPCibOwner); +} +return _3b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_3f,_40,_41){ +with(_3f){ +objj_msgSendSuper({receiver:_3f,super_class:objj_getClass("CPViewController").super_class},"encodeWithCoder:",_41); +objj_msgSend(_41,"encodeObject:forKey:",_view,_37); +objj_msgSend(_41,"encodeObject:forKey:",_title,_38); +objj_msgSend(_41,"encodeObject:forKey:",_cibName,_39); +objj_msgSend(_41,"encodeObject:forKey:",objj_msgSend(_cibBundle,"bundlePath"),_3a); +} +})]); +p;11;CPWebView.jt;14450;@STATIC;1.0;I;15;AppKit/CPView.jt;14410; +objj_executeFile("AppKit/CPView.j",NO); +CPWebViewProgressStartedNotification="CPWebViewProgressStartedNotification"; +CPWebViewProgressFinishedNotification="CPWebViewProgressFinishedNotification"; +CPWebViewScrollAppKit=1; +CPWebViewScrollNative=2; +var _1=objj_allocateClassPair(CPView,"CPWebView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_scrollView"),new objj_ivar("_frameView"),new objj_ivar("_iframe"),new objj_ivar("_mainFrameURL"),new objj_ivar("_backwardStack"),new objj_ivar("_forwardStack"),new objj_ivar("_ignoreLoadStart"),new objj_ivar("_ignoreLoadEnd"),new objj_ivar("_downloadDelegate"),new objj_ivar("_frameLoadDelegate"),new objj_ivar("_policyDelegate"),new objj_ivar("_resourceLoadDelegate"),new objj_ivar("_UIDelegate"),new objj_ivar("_wso"),new objj_ivar("_url"),new objj_ivar("_html"),new objj_ivar("_loadCallback"),new objj_ivar("_scrollMode"),new objj_ivar("_scrollSize"),new objj_ivar("_loadHTMLStringTimer")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:frameName:groupName:"),function(_3,_4,_5,_6,_7){ +with(_3){ +if(_3=objj_msgSend(_3,"initWithFrame:",_5)){ +_iframe.name=_6; +} +return _3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +if(_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPWebView").super_class},"initWithFrame:",_a)){ +_mainFrameURL=nil; +_backwardStack=[]; +_forwardStack=[]; +_scrollMode=CPWebViewScrollNative; +objj_msgSend(_8,"_initDOMWithFrame:",_a); +} +return _8; +} +}),new objj_method(sel_getUid("_initDOMWithFrame:"),function(_b,_c,_d){ +with(_b){ +_ignoreLoadStart=YES; +_ignoreLoadEnd=YES; +_iframe=document.createElement("iframe"); +_iframe.name="iframe_"+Math.floor(Math.random()*10000); +_iframe.style.width="100%"; +_iframe.style.height="100%"; +_iframe.style.borderWidth="0px"; +_iframe.frameBorder="0"; +objj_msgSend(_b,"setDrawsBackground:",YES); +_loadCallback=function(){ +if(!_ignoreLoadStart){ +objj_msgSend(_b,"_startedLoading"); +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=_iframe.src; +_mainFrameURL=_iframe.src; +objj_msgSend(_forwardStack,"removeAllObjects"); +}else{ +_ignoreLoadStart=NO; +} +if(!_ignoreLoadEnd){ +objj_msgSend(_b,"_finishedLoading"); +}else{ +_ignoreLoadEnd=NO; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +}; +if(_iframe.addEventListener){ +_iframe.addEventListener("load",_loadCallback,false); +}else{ +if(_iframe.attachEvent){ +_iframe.attachEvent("onload",_loadCallback); +} +} +_frameView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",objj_msgSend(_b,"bounds")); +objj_msgSend(_frameView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_scrollView=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",objj_msgSend(_b,"bounds")); +objj_msgSend(_scrollView,"setAutohidesScrollers:",YES); +objj_msgSend(_scrollView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_scrollView,"setDocumentView:",_frameView); +_frameView._DOMElement.appendChild(_iframe); +objj_msgSend(_b,"_setScrollMode:",_scrollMode); +objj_msgSend(_b,"addSubview:",_scrollView); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_e,_f,_10){ +with(_e){ +objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPWebView").super_class},"setFrameSize:",_10); +objj_msgSend(_e,"_resizeWebFrame"); +} +}),new objj_method(sel_getUid("_attachScrollEventIfNecessary"),function(_11,_12){ +with(_11){ +if(_scrollMode!==CPWebViewScrollAppKit){ +return; +} +var win=null; +try{ +win=objj_msgSend(_11,"DOMWindow"); +} +catch(e){ +} +if(win&&win.addEventListener){ +var _13=function(_14){ +var _15=objj_msgSend(_11,"bounds"),_16=CGPointMake(CGRectGetMidX(_15),CGRectGetMidY(_15)),_17=objj_msgSend(_11,"convertPoint:toView:",_16,nil),_18=objj_msgSend(objj_msgSend(_11,"window"),"convertBaseToBridge:",_17); +_14._overrideLocation=_18; +objj_msgSend(objj_msgSend(objj_msgSend(_11,"window"),"platformWindow"),"scrollEvent:",_14); +}; +win.addEventListener("DOMMouseScroll",_13,false); +} +} +}),new objj_method(sel_getUid("_resizeWebFrame"),function(_19,_1a){ +with(_19){ +if(_scrollMode===CPWebViewScrollAppKit){ +if(_scrollSize){ +objj_msgSend(_frameView,"setFrameSize:",_scrollSize); +}else{ +var _1b=objj_msgSend(_frameView,"visibleRect"); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(CGRectGetMaxX(_1b),CGRectGetMaxY(_1b))); +var win=null; +try{ +win=objj_msgSend(_19,"DOMWindow"); +} +catch(e){ +} +if(win&&win.document&&win.document.body){ +var _1c=win.document.body.scrollWidth,_1d=win.document.body.scrollHeight; +_iframe.setAttribute("width",_1c); +_iframe.setAttribute("height",_1d); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(_1c,_1d)); +}else{ +CPLog.warn("using default size 800*1600"); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(800,1600)); +} +objj_msgSend(_frameView,"scrollRectToVisible:",_1b); +} +} +} +}),new objj_method(sel_getUid("setScrollMode:"),function(_1e,_1f,_20){ +with(_1e){ +if(_scrollMode==_20){ +return; +} +objj_msgSend(_1e,"_setScrollMode:",_20); +} +}),new objj_method(sel_getUid("_setScrollMode:"),function(_21,_22,_23){ +with(_21){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +_scrollMode=CPWebViewScrollNative; +}else{ +_scrollMode=_23; +} +_ignoreLoadStart=YES; +_ignoreLoadEnd=YES; +var _24=_iframe.parentNode; +_24.removeChild(_iframe); +if(_scrollMode===CPWebViewScrollAppKit){ +objj_msgSend(_scrollView,"setHasHorizontalScroller:",YES); +objj_msgSend(_scrollView,"setHasVerticalScroller:",YES); +_iframe.setAttribute("scrolling","no"); +}else{ +objj_msgSend(_scrollView,"setHasHorizontalScroller:",NO); +objj_msgSend(_scrollView,"setHasVerticalScroller:",NO); +_iframe.setAttribute("scrolling","auto"); +objj_msgSend(_frameView,"setFrameSize:",objj_msgSend(_scrollView,"bounds").size); +} +_24.appendChild(_iframe); +} +}),new objj_method(sel_getUid("loadHTMLString:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_25,"loadHTMLString:baseURL:",_27,nil); +} +}),new objj_method(sel_getUid("loadHTMLString:baseURL:"),function(_28,_29,_2a,URL){ +with(_28){ +objj_msgSend(_28,"_setScrollMode:",CPWebViewScrollAppKit); +objj_msgSend(_frameView,"setFrameSize:",objj_msgSend(_scrollView,"contentSize")); +objj_msgSend(_28,"_startedLoading"); +_ignoreLoadStart=YES; +_ignoreLoadEnd=NO; +_url=null; +_html=_2a; +objj_msgSend(_28,"_load"); +} +}),new objj_method(sel_getUid("_loadMainFrameURL"),function(_2b,_2c){ +with(_2b){ +objj_msgSend(_2b,"_setScrollMode:",CPWebViewScrollNative); +objj_msgSend(_2b,"_startedLoading"); +_ignoreLoadStart=YES; +_ignoreLoadEnd=NO; +_url=_mainFrameURL; +_html=null; +objj_msgSend(_2b,"_load"); +} +}),new objj_method(sel_getUid("_load"),function(_2d,_2e){ +with(_2d){ +if(_url){ +_iframe.src=_url; +}else{ +if(_html){ +_iframe.src=""; +if(_loadHTMLStringTimer!==nil){ +window.clearTimeout(_loadHTMLStringTimer); +_loadHTMLStringTimer=nil; +} +_loadHTMLStringTimer=window.setTimeout(function(){ +var win=objj_msgSend(_2d,"DOMWindow"); +if(win){ +win.document.write(_html); +} +window.setTimeout(_loadCallback,1); +},0); +} +} +} +}),new objj_method(sel_getUid("_startedLoading"),function(_2f,_30){ +with(_2f){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWebViewProgressStartedNotification,_2f); +if(objj_msgSend(_frameLoadDelegate,"respondsToSelector:",sel_getUid("webView:didStartProvisionalLoadForFrame:"))){ +objj_msgSend(_frameLoadDelegate,"webView:didStartProvisionalLoadForFrame:",_2f,nil); +} +} +}),new objj_method(sel_getUid("_finishedLoading"),function(_31,_32){ +with(_31){ +objj_msgSend(_31,"_resizeWebFrame"); +objj_msgSend(_31,"_attachScrollEventIfNecessary"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWebViewProgressFinishedNotification,_31); +if(objj_msgSend(_frameLoadDelegate,"respondsToSelector:",sel_getUid("webView:didFinishLoadForFrame:"))){ +objj_msgSend(_frameLoadDelegate,"webView:didFinishLoadForFrame:",_31,nil); +} +} +}),new objj_method(sel_getUid("mainFrameURL"),function(_33,_34){ +with(_33){ +return _mainFrameURL; +} +}),new objj_method(sel_getUid("setMainFrameURL:"),function(_35,_36,_37){ +with(_35){ +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=_37; +objj_msgSend(_forwardStack,"removeAllObjects"); +objj_msgSend(_35,"_loadMainFrameURL"); +} +}),new objj_method(sel_getUid("goBack"),function(_38,_39){ +with(_38){ +if(_backwardStack.length>0){ +if(_mainFrameURL){ +objj_msgSend(_forwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=objj_msgSend(_backwardStack,"lastObject"); +objj_msgSend(_backwardStack,"removeLastObject"); +objj_msgSend(_38,"_loadMainFrameURL"); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("goForward"),function(_3a,_3b){ +with(_3a){ +if(_forwardStack.length>0){ +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=objj_msgSend(_forwardStack,"lastObject"); +objj_msgSend(_forwardStack,"removeLastObject"); +objj_msgSend(_3a,"_loadMainFrameURL"); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("canGoBack"),function(_3c,_3d){ +with(_3c){ +return (_backwardStack.length>0); +} +}),new objj_method(sel_getUid("canGoForward"),function(_3e,_3f){ +with(_3e){ +return (_forwardStack.length>0); +} +}),new objj_method(sel_getUid("backForwardList"),function(_40,_41){ +with(_40){ +return {back:_backwardStack,forward:_forwardStack}; +} +}),new objj_method(sel_getUid("close"),function(_42,_43){ +with(_42){ +_iframe.parentNode.removeChild(_iframe); +} +}),new objj_method(sel_getUid("DOMWindow"),function(_44,_45){ +with(_44){ +return (_iframe.contentDocument&&_iframe.contentDocument.defaultView)||_iframe.contentWindow; +} +}),new objj_method(sel_getUid("windowScriptObject"),function(_46,_47){ +with(_46){ +var win=objj_msgSend(_46,"DOMWindow"); +if(!_wso||win!=objj_msgSend(_wso,"window")){ +if(win){ +_wso=objj_msgSend(objj_msgSend(CPWebScriptObject,"alloc"),"initWithWindow:",win); +}else{ +_wso=nil; +} +} +return _wso; +} +}),new objj_method(sel_getUid("stringByEvaluatingJavaScriptFromString:"),function(_48,_49,_4a){ +with(_48){ +var _4b=objj_msgSend(_48,"objectByEvaluatingJavaScriptFromString:",_4a); +return _4b?String(_4b):nil; +} +}),new objj_method(sel_getUid("objectByEvaluatingJavaScriptFromString:"),function(_4c,_4d,_4e){ +with(_4c){ +return objj_msgSend(objj_msgSend(_4c,"windowScriptObject"),"evaluateWebScript:",_4e); +} +}),new objj_method(sel_getUid("computedStyleForElement:pseudoElement:"),function(_4f,_50,_51,_52){ +with(_4f){ +var win=objj_msgSend(objj_msgSend(_4f,"windowScriptObject"),"window"); +if(win){ +return win.document.defaultView.getComputedStyle(_51,_52); +} +return nil; +} +}),new objj_method(sel_getUid("drawsBackground"),function(_53,_54){ +with(_53){ +return _iframe.style.backgroundColor!=""; +} +}),new objj_method(sel_getUid("setDrawsBackground:"),function(_55,_56,_57){ +with(_55){ +_iframe.style.backgroundColor=_57?"white":""; +} +}),new objj_method(sel_getUid("takeStringURLFrom:"),function(_58,_59,_5a){ +with(_58){ +objj_msgSend(_58,"setMainFrameURL:",objj_msgSend(_5a,"stringValue")); +} +}),new objj_method(sel_getUid("goBack:"),function(_5b,_5c,_5d){ +with(_5b){ +objj_msgSend(_5b,"goBack"); +} +}),new objj_method(sel_getUid("goForward:"),function(_5e,_5f,_60){ +with(_5e){ +objj_msgSend(_5e,"goForward"); +} +}),new objj_method(sel_getUid("stopLoading:"),function(_61,_62,_63){ +with(_61){ +} +}),new objj_method(sel_getUid("reload:"),function(_64,_65,_66){ +with(_64){ +objj_msgSend(_64,"_loadMainFrameURL"); +} +}),new objj_method(sel_getUid("print:"),function(_67,_68,_69){ +with(_67){ +try{ +objj_msgSend(_67,"DOMWindow").print(); +} +catch(e){ +alert("Please click the webpage and select \"Print\" from the \"File\" menu"); +} +} +}),new objj_method(sel_getUid("downloadDelegate"),function(_6a,_6b){ +with(_6a){ +return _downloadDelegate; +} +}),new objj_method(sel_getUid("setDownloadDelegate:"),function(_6c,_6d,_6e){ +with(_6c){ +_downloadDelegate=_6e; +} +}),new objj_method(sel_getUid("frameLoadDelegate"),function(_6f,_70){ +with(_6f){ +return _frameLoadDelegate; +} +}),new objj_method(sel_getUid("setFrameLoadDelegate:"),function(_71,_72,_73){ +with(_71){ +_frameLoadDelegate=_73; +} +}),new objj_method(sel_getUid("policyDelegate"),function(_74,_75){ +with(_74){ +return _policyDelegate; +} +}),new objj_method(sel_getUid("setPolicyDelegate:"),function(_76,_77,_78){ +with(_76){ +_policyDelegate=_78; +} +}),new objj_method(sel_getUid("resourceLoadDelegate"),function(_79,_7a){ +with(_79){ +return _resourceLoadDelegate; +} +}),new objj_method(sel_getUid("setResourceLoadDelegate:"),function(_7b,_7c,_7d){ +with(_7b){ +_resourceLoadDelegate=_7d; +} +}),new objj_method(sel_getUid("UIDelegate"),function(_7e,_7f){ +with(_7e){ +return _UIDelegate; +} +}),new objj_method(sel_getUid("setUIDelegate:"),function(_80,_81,_82){ +with(_80){ +_UIDelegate=_82; +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPWebScriptObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_window")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithWindow:"),function(_83,_84,_85){ +with(_83){ +if(_83=objj_msgSendSuper({receiver:_83,super_class:objj_getClass("CPWebScriptObject").super_class},"init")){ +_window=_85; +} +return _83; +} +}),new objj_method(sel_getUid("callWebScriptMethod:withArguments:"),function(_86,_87,_88,_89){ +with(_86){ +if(typeof _window[_88]=="function"){ +try{ +return _window[_88].apply(_89); +} +catch(e){ +} +} +return undefined; +} +}),new objj_method(sel_getUid("evaluateWebScript:"),function(_8a,_8b,_8c){ +with(_8a){ +try{ +return _window.eval(_8c); +} +catch(e){ +} +return undefined; +} +}),new objj_method(sel_getUid("window"),function(_8d,_8e){ +with(_8d){ +return _window; +} +})]); +var _1=objj_getClass("CPWebView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPWebView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_8f,_90,_91){ +with(_8f){ +_8f=objj_msgSendSuper({receiver:_8f,super_class:objj_getClass("CPWebView").super_class},"initWithCoder:",_91); +if(_8f){ +_mainFrameURL=nil; +_backwardStack=[]; +_forwardStack=[]; +_scrollMode=CPWebViewScrollNative; +objj_msgSend(_8f,"_initDOMWithFrame:",objj_msgSend(_8f,"frame")); +objj_msgSend(_8f,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +} +return _8f; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_92,_93,_94){ +with(_92){ +var _95=_subviews; +_subviews=[]; +objj_msgSendSuper({receiver:_92,super_class:objj_getClass("CPWebView").super_class},"encodeWithCoder:",_94); +_subviews=_95; +} +})]); +p;20;CPWindowController.jt;9176;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;13;CPResponder.ji;10;CPWindow.ji;12;CPDocument.jt;9055; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPWindow.j",YES); +objj_executeFile("CPDocument.j",YES); +var _1=objj_allocateClassPair(CPResponder,"CPWindowController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_window"),new objj_ivar("_documents"),new objj_ivar("_document"),new objj_ivar("_shouldCloseDocument"),new objj_ivar("_supportsMultipleDocuments"),new objj_ivar("_cibOwner"),new objj_ivar("_windowCibName"),new objj_ivar("_windowCibPath"),new objj_ivar("_viewController"),new objj_ivar("_viewControllerContainerView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithWindow:",nil); +} +}),new objj_method(sel_getUid("initWithWindow:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPWindowController").super_class},"init"); +if(_5){ +objj_msgSend(_5,"setWindow:",_7); +objj_msgSend(_5,"setShouldCloseDocument:",NO); +objj_msgSend(_5,"setNextResponder:",CPApp); +_documents=[]; +} +return _5; +} +}),new objj_method(sel_getUid("initWithWindowCibName:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(_8,"initWithWindowCibName:owner:",_a,_8); +} +}),new objj_method(sel_getUid("initWithWindowCibName:owner:"),function(_b,_c,_d,_e){ +with(_b){ +_b=objj_msgSend(_b,"initWithWindow:",nil); +if(_b){ +_cibOwner=_e; +_windowCibName=_d; +} +return _b; +} +}),new objj_method(sel_getUid("initWithWindowCibPath:owner:"),function(_f,_10,_11,_12){ +with(_f){ +_f=objj_msgSend(_f,"initWithWindow:",nil); +if(_f){ +_cibOwner=_12; +_windowCibPath=_11; +} +return _f; +} +}),new objj_method(sel_getUid("loadWindow"),function(_13,_14){ +with(_13){ +if(_window){ +return; +} +objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"loadCibFile:externalNameTable:",objj_msgSend(_13,"windowCibPath"),objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_cibOwner,CPCibOwner)); +} +}),new objj_method(sel_getUid("showWindow:"),function(_15,_16,_17){ +with(_15){ +var _18=objj_msgSend(_15,"window"); +if(objj_msgSend(_18,"respondsToSelector:",sel_getUid("becomesKeyOnlyIfNeeded"))&&objj_msgSend(_18,"becomesKeyOnlyIfNeeded")){ +objj_msgSend(_18,"orderFront:",_17); +}else{ +objj_msgSend(_18,"makeKeyAndOrderFront:",_17); +} +} +}),new objj_method(sel_getUid("isWindowLoaded"),function(_19,_1a){ +with(_19){ +return _window!==nil; +} +}),new objj_method(sel_getUid("window"),function(_1b,_1c){ +with(_1b){ +if(!_window){ +objj_msgSend(_1b,"windowWillLoad"); +objj_msgSend(_document,"windowControllerWillLoadCib:",_1b); +objj_msgSend(_1b,"loadWindow"); +if(_window===nil&&objj_msgSend(_cibOwner,"isKindOfClass:",objj_msgSend(CPDocument,"class"))){ +objj_msgSend(_1b,"setWindow:",objj_msgSend(_cibOwner,"valueForKey:","window")); +} +if(!_window){ +var _1d=objj_msgSend(CPString,"stringWithFormat:","Window for %@ could not be loaded from Cib or no window specified. Override loadWindow to load the window manually.",_1b); +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,_1d); +} +objj_msgSend(_1b,"windowDidLoad"); +objj_msgSend(_document,"windowControllerDidLoadCib:",_1b); +objj_msgSend(_1b,"synchronizeWindowTitleWithDocumentName"); +} +return _window; +} +}),new objj_method(sel_getUid("setWindow:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_window,"setWindowController:",nil); +_window=_20; +objj_msgSend(_window,"setWindowController:",_1e); +objj_msgSend(_window,"setNextResponder:",_1e); +} +}),new objj_method(sel_getUid("windowDidLoad"),function(_21,_22){ +with(_21){ +} +}),new objj_method(sel_getUid("windowWillLoad"),function(_23,_24){ +with(_23){ +} +}),new objj_method(sel_getUid("setDocument:"),function(_25,_26,_27){ +with(_25){ +if(_document===_27){ +return; +} +var _28=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_document){ +if(!objj_msgSend(_25,"supportsMultipleDocuments")){ +objj_msgSend(_25,"removeDocument:",_document); +} +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentWillSaveNotification,_document); +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentDidSaveNotification,_document); +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentDidFailToSaveNotification,_document); +} +_document=_27; +if(_document){ +objj_msgSend(_25,"addDocument:",_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentWillSave:"),CPDocumentWillSaveNotification,_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentDidSave:"),CPDocumentDidSaveNotification,_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentDidFailToSave:"),CPDocumentDidFailToSaveNotification,_document); +objj_msgSend(_25,"setDocumentEdited:",objj_msgSend(_document,"isDocumentEdited")); +} +var _29=objj_msgSend(_document,"viewControllerForWindowController:",_25); +if(_29){ +objj_msgSend(_25,"setViewController:",_29); +} +objj_msgSend(_25,"synchronizeWindowTitleWithDocumentName"); +} +}),new objj_method(sel_getUid("setSupportsMultipleDocuments:"),function(_2a,_2b,_2c){ +with(_2a){ +_supportsMultipleDocuments=_2c; +} +}),new objj_method(sel_getUid("supportsMultipleDocuments"),function(_2d,_2e){ +with(_2d){ +return _supportsMultipleDocuments; +} +}),new objj_method(sel_getUid("addDocument:"),function(_2f,_30,_31){ +with(_2f){ +if(_31&&!objj_msgSend(_documents,"containsObject:",_31)){ +objj_msgSend(_documents,"addObject:",_31); +} +} +}),new objj_method(sel_getUid("removeDocument:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_documents,"indexOfObjectIdenticalTo:",_34); +if(_35===CPNotFound){ +return; +} +objj_msgSend(_documents,"removeObjectAtIndex:",_35); +if(_document===_34&&objj_msgSend(_documents,"count")){ +objj_msgSend(_32,"setDocument:",objj_msgSend(_documents,"objectAtIndex:",MIN(_35,objj_msgSend(_documents,"count")-1))); +} +} +}),new objj_method(sel_getUid("removeDocumentAndCloseIfNecessary:"),function(_36,_37,_38){ +with(_36){ +objj_msgSend(_36,"removeDocument:",_38); +if(!objj_msgSend(_documents,"count")){ +objj_msgSend(_36,"close"); +} +} +}),new objj_method(sel_getUid("documents"),function(_39,_3a){ +with(_39){ +return _documents; +} +}),new objj_method(sel_getUid("setViewControllerContainerView:"),function(_3b,_3c,_3d){ +with(_3b){ +_viewControllerContainerView=_3d; +} +}),new objj_method(sel_getUid("viewControllerContainerView"),function(_3e,_3f){ +with(_3e){ +return _viewControllerContainerView; +} +}),new objj_method(sel_getUid("setViewController:"),function(_40,_41,_42){ +with(_40){ +var _43=objj_msgSend(_40,"viewControllerContainerView")||objj_msgSend(objj_msgSend(_40,"window"),"contentView"),_44=objj_msgSend(_viewController,"view"),_45=_44?objj_msgSend(_44,"frame"):objj_msgSend(_43,"bounds"); +objj_msgSend(_44,"removeFromSuperview"); +_viewController=_42; +_44=objj_msgSend(_viewController,"view"); +if(_44){ +objj_msgSend(_44,"setFrame:",_45); +objj_msgSend(_43,"addSubview:",_44); +} +} +}),new objj_method(sel_getUid("viewController"),function(_46,_47){ +with(_46){ +return _viewController; +} +}),new objj_method(sel_getUid("_documentWillSave:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(objj_msgSend(_48,"window"),"setDocumentSaving:",YES); +} +}),new objj_method(sel_getUid("_documentDidSave:"),function(_4b,_4c,_4d){ +with(_4b){ +objj_msgSend(objj_msgSend(_4b,"window"),"setDocumentSaving:",NO); +} +}),new objj_method(sel_getUid("_documentDidFailToSave:"),function(_4e,_4f,_50){ +with(_4e){ +objj_msgSend(objj_msgSend(_4e,"window"),"setDocumentSaving:",NO); +} +}),new objj_method(sel_getUid("document"),function(_51,_52){ +with(_51){ +return _document; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_53,_54,_55){ +with(_53){ +objj_msgSend(objj_msgSend(_53,"window"),"setDocumentEdited:",_55); +} +}),new objj_method(sel_getUid("close"),function(_56,_57){ +with(_56){ +objj_msgSend(objj_msgSend(_56,"window"),"close"); +} +}),new objj_method(sel_getUid("setShouldCloseDocument:"),function(_58,_59,_5a){ +with(_58){ +_shouldCloseDocument=_5a; +} +}),new objj_method(sel_getUid("shouldCloseDocument"),function(_5b,_5c){ +with(_5b){ +return _shouldCloseDocument; +} +}),new objj_method(sel_getUid("owner"),function(_5d,_5e){ +with(_5d){ +return _cibOwner; +} +}),new objj_method(sel_getUid("windowCibName"),function(_5f,_60){ +with(_5f){ +if(_windowCibName){ +return _windowCibName; +} +return objj_msgSend(objj_msgSend(_windowCibPath,"lastPathComponent"),"stringByDeletingPathExtension"); +} +}),new objj_method(sel_getUid("windowCibPath"),function(_61,_62){ +with(_61){ +if(_windowCibPath){ +return _windowCibPath; +} +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_windowCibName+".cib"); +} +}),new objj_method(sel_getUid("synchronizeWindowTitleWithDocumentName"),function(_63,_64){ +with(_63){ +if(!_document||!_window){ +return; +} +objj_msgSend(_window,"setTitle:",objj_msgSend(_63,"windowTitleForDocumentDisplayName:",objj_msgSend(_document,"displayName"))); +} +}),new objj_method(sel_getUid("windowTitleForDocumentDisplayName:"),function(_65,_66,_67){ +with(_65){ +return _67; +} +})]); +p;20;_CPCibClassSwapper.jt;1345;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1274; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="_CPCibClassSwapperClassNameKey",_2="_CPCibClassSwapperOriginalClassNameKey"; +var _3=objj_allocateClassPair(CPObject,"_CPCibClassSwapper"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_4,[new objj_method(sel_getUid("allocObjectWithCoder:className:"),function(_5,_6,_7,_8){ +with(_5){ +var _9=objj_msgSend(_7,"classForClassName:",_8); +if(!_9){ +_9=objj_lookUpClass(_8); +if(!_9){ +return nil; +} +} +return objj_msgSend(_9,"alloc"); +} +}),new objj_method(sel_getUid("allocWithCoder:"),function(_a,_b,_c){ +with(_a){ +if(objj_msgSend(_c,"respondsToSelector:",sel_getUid("usesOriginalClasses"))&&objj_msgSend(_c,"usesOriginalClasses")){ +var _d=objj_msgSend(_c,"decodeObjectForKey:",_2),_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,_d); +}else{ +var _d=objj_msgSend(_c,"decodeObjectForKey:",_1),_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,_d); +if(!_e){ +CPLog.error("Unable to find class "+_d+" in cib file."); +_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,objj_msgSend(_c,"decodeObjectForKey:",_2)); +} +} +if(!_e){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unable to find class "+_d+" in cib file."); +} +return _e; +} +})]); +p;20;_CPCibCustomObject.jt;1717;@STATIC;1.0;I;21;Foundation/CPObject.jt;1672; +objj_executeFile("Foundation/CPObject.j",NO); +var _1="_CPCibCustomObjectClassName"; +var _2=objj_allocateClassPair(CPObject,"_CPCibCustomObject"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_className")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("customClassName"),function(_4,_5){ +with(_4){ +return _className; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_6,_7,_8){ +with(_6){ +_className=_8; +} +}),new objj_method(sel_getUid("description"),function(_9,_a){ +with(_9){ +return objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPCibCustomObject").super_class},"description")+" ("+objj_msgSend(_9,"customClassName")+")"; +} +})]); +var _2=objj_getClass("_CPCibCustomObject"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomObject\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("_CPCibCustomObject").super_class},"init"); +if(_b){ +_className=objj_msgSend(_d,"decodeObjectForKey:",_1); +} +return _b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e,_f,_10){ +with(_e){ +objj_msgSend(_10,"encodeObject:forKey:",_className,_1); +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_11,_12){ +with(_11){ +var _13=CPClassFromString(_className); +if(_13===objj_msgSend(_11,"class")){ +_className="CPObject"; +return _11; +} +if(!_13){ +_13=objj_msgSend(CPObject,"class"); +} +if(_13===objj_msgSend(CPApplication,"class")){ +return objj_msgSend(CPApplication,"sharedApplication"); +} +return objj_msgSend(objj_msgSend(_13,"alloc"),"init"); +} +})]); +p;22;_CPCibCustomResource.jt;3116;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;3045; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="_CPCibCustomResourceClassNameKey",_2="_CPCibCustomResourceResourceNameKey",_3="_CPCibCustomResourcePropertiesKey"; +var _4=objj_allocateClassPair(CPObject,"_CPCibCustomResource"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_className"),new objj_ivar("_resourceName"),new objj_ivar("_properties")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithClassName:resourceName:properties:"),function(_6,_7,_8,_9,_a){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("_CPCibCustomResource").super_class},"init"); +if(_6){ +_className=_8; +_resourceName=_9; +_properties=_a; +} +return _6; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("_CPCibCustomResource").super_class},"init"); +if(_b){ +_className=objj_msgSend(_d,"decodeObjectForKey:",_1); +_resourceName=objj_msgSend(_d,"decodeObjectForKey:",_2); +_properties=objj_msgSend(_d,"decodeObjectForKey:",_3); +} +return _b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e,_f,_10){ +with(_e){ +objj_msgSend(_10,"encodeObject:forKey:",_className,_1); +objj_msgSend(_10,"encodeObject:forKey:",_resourceName,_2); +objj_msgSend(_10,"encodeObject:forKey:",_properties,_3); +} +}),new objj_method(sel_getUid("awakeAfterUsingCoder:"),function(_11,_12,_13){ +with(_11){ +if(objj_msgSend(_13,"respondsToSelector:",sel_getUid("bundle"))&&(!objj_msgSend(_13,"respondsToSelector:",sel_getUid("awakenCustomResources"))||objj_msgSend(_13,"awakenCustomResources"))){ +if(_className==="CPImage"){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(_13,"bundle"),"pathForResource:",_resourceName),_properties.valueForKey("size")); +} +} +return _11; +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("imageResourceWithName:size:"),function(_14,_15,_16,_17){ +with(_14){ +return objj_msgSend(objj_msgSend(_14,"alloc"),"initWithClassName:resourceName:properties:","CPImage",_16,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_17,"size")); +} +})]); +var _4=objj_getClass("_CPCibCustomResource"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomResource\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("filename"),function(_18,_19){ +with(_18){ +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_resourceName); +} +}),new objj_method(sel_getUid("size"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_properties,"objectForKey:","size"); +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_1c,_1d){ +with(_1c){ +return NO; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_1e,_1f){ +with(_1e){ +return NO; +} +}),new objj_method(sel_getUid("loadStatus"),function(_20,_21){ +with(_20){ +return CPImageLoadStatusCompleted; +} +}),new objj_method(sel_getUid("delegate"),function(_22,_23){ +with(_22){ +return nil; +} +})]); +p;18;_CPCibCustomView.jt;2402;@STATIC;1.0;i;8;CPView.jt;2371; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPCibCustomView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_className")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("customClassName"),function(_3,_4){ +with(_3){ +return _className; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_5,_6,_7){ +with(_5){ +if(_className===_7){ +return; +} +_className=_7; +objj_msgSend(_5,"setNeedsDisplay:",YES); +objj_msgSend(_5,"setNeedsLayout"); +} +})]); +var _8="_CPCibCustomViewClassNameKey"; +var _1=objj_getClass("_CPCibCustomView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_9,_a,_b){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPCibCustomView").super_class},"initWithCoder:",_b); +if(_9){ +_className=objj_msgSend(_b,"decodeObjectForKey:",_8); +} +return _9; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPCibCustomView").super_class},"encodeWithCoder:",_e); +objj_msgSend(_e,"encodeObject:forKey:",_className,_8); +} +}),new objj_method(sel_getUid("customClassName"),function(_f,_10){ +with(_f){ +return _className; +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_11,_12){ +with(_11){ +var _13=CPClassFromString(_className); +if(!_13){ +_13=objj_msgSend(CPView,"class"); +} +if(_13===objj_msgSend(_11,"class")){ +_className="CPView"; +return _11; +} +var _14=objj_msgSend(objj_msgSend(_13,"alloc"),"initWithFrame:",objj_msgSend(_11,"frame")); +if(_14){ +objj_msgSend(_14,"setBounds:",objj_msgSend(_11,"bounds")); +var _15=objj_msgSend(_11,"subviews"),_16=0,_17=_15.length; +for(;_16<_17;++_16){ +objj_msgSend(_14,"addSubview:",_15[_16]); +} +objj_msgSend(_14,"setAutoresizingMask:",objj_msgSend(_11,"autoresizingMask")); +objj_msgSend(_14,"setAutoresizesSubviews:",objj_msgSend(_11,"autoresizesSubviews")); +objj_msgSend(_14,"setHitTests:",objj_msgSend(_11,"hitTests")); +objj_msgSend(_14,"setHidden:",objj_msgSend(_11,"isHidden")); +objj_msgSend(_14,"setAlphaValue:",objj_msgSend(_11,"alphaValue")); +objj_msgSend(_superview,"replaceSubview:with:",_11,_14); +objj_msgSend(_14,"setBackgroundColor:",objj_msgSend(_11,"backgroundColor")); +} +return _14; +} +})]); +p;23;_CPCibKeyedUnarchiver.jt;1485;@STATIC;1.0;I;30;Foundation/CPKeyedUnarchiver.jt;1431; +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +var _1=objj_allocateClassPair(CPKeyedUnarchiver,"_CPCibKeyedUnarchiver"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_bundle"),new objj_ivar("_awakenCustomResources"),new objj_ivar("_externalObjectsForProxyIdentifiers")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initForReadingWithData:bundle:awakenCustomResources:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPCibKeyedUnarchiver").super_class},"initForReadingWithData:",_5); +if(_3){ +_bundle=_6; +_awakenCustomResources=_7; +objj_msgSend(_3,"setDelegate:",_3); +} +return _3; +} +}),new objj_method(sel_getUid("bundle"),function(_8,_9){ +with(_8){ +return _bundle; +} +}),new objj_method(sel_getUid("awakenCustomResources"),function(_a,_b){ +with(_a){ +return _awakenCustomResources; +} +}),new objj_method(sel_getUid("setExternalObjectsForProxyIdentifiers:"),function(_c,_d,_e){ +with(_c){ +_externalObjectsForProxyIdentifiers=_e; +} +}),new objj_method(sel_getUid("externalObjectForProxyIdentifier:"),function(_f,_10,_11){ +with(_f){ +return objj_msgSend(_externalObjectsForProxyIdentifiers,"objectForKey:",_11); +} +}),new objj_method(sel_getUid("replaceObjectAtUID:withObject:"),function(_12,_13,_14,_15){ +with(_12){ +_objects[_14]=_15; +} +}),new objj_method(sel_getUid("objectAtUID:"),function(_16,_17,_18){ +with(_16){ +return _objects[_18]; +} +})]); +p;18;_CPCibObjectData.jt;6216;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;22;CPCibOutletConnector.jt;6033; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPCib.j",YES); +objj_executeFile("CPCibConnector.j",YES); +objj_executeFile("CPCibControlConnector.j",YES); +objj_executeFile("CPCibOutletConnector.j",YES); +var _1=objj_allocateClassPair(CPObject,"_CPCibObjectData"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_namesKeys"),new objj_ivar("_namesValues"),new objj_ivar("_accessibilityConnectors"),new objj_ivar("_accessibilityOidsKeys"),new objj_ivar("_accessibilityOidsValues"),new objj_ivar("_classesKeys"),new objj_ivar("_classesValues"),new objj_ivar("_connections"),new objj_ivar("_fontManager"),new objj_ivar("_framework"),new objj_ivar("_nextOid"),new objj_ivar("_objectsKeys"),new objj_ivar("_objectsValues"),new objj_ivar("_oidKeys"),new objj_ivar("_oidValues"),new objj_ivar("_fileOwner"),new objj_ivar("_visibleWindows"),new objj_ivar("_replacementObjects")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPCibObjectData").super_class},"init"); +if(_3){ +_namesKeys=[]; +_namesValues=[]; +_classesKeys=[]; +_classesValues=[]; +_connections=[]; +_framework=""; +_nextOid=[]; +_objectsKeys=[]; +_objectsValues=[]; +_oidKeys=[]; +_oidValues=[]; +_fileOwner=nil; +_visibleWindows=objj_msgSend(CPSet,"set"); +} +return _3; +} +}),new objj_method(sel_getUid("displayVisibleWindows"),function(_5,_6){ +with(_5){ +var _7=nil,_8=objj_msgSend(_visibleWindows,"objectEnumerator"); +while(_7=objj_msgSend(_8,"nextObject")){ +objj_msgSend(_replacementObjects[objj_msgSend(_7,"UID")],"makeKeyAndOrderFront:",_5); +} +} +})]); +var _9="_CPCibObjectDataNamesKeysKey",_a="_CPCibObjectDataNamesValuesKey",_b="_CPCibObjectDataAccessibilityConnectors",_c="_CPCibObjectDataAccessibilityOidsKeys",_d="_CPCibObjectDataAccessibilityOidsValues",_e="_CPCibObjectDataClassesKeysKey",_f="_CPCibObjectDataClassesValuesKey",_10="_CPCibObjectDataConnectionsKey",_11="_CPCibObjectDataFontManagerKey",_12="_CPCibObjectDataFrameworkKey",_13="_CPCibObjectDataNextOidKey",_14="_CPCibObjectDataObjectsKeysKey",_15="_CPCibObjectDataObjectsValuesKey",_16="_CPCibObjectDataOidKeysKey",_17="_CPCibObjectDataOidValuesKey",_18="_CPCibObjectDataFileOwnerKey",_19="_CPCibObjectDataVisibleWindowsKey"; +var _1=objj_getClass("_CPCibObjectData"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibObjectData\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_1a,_1b,_1c){ +with(_1a){ +_1a=objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("_CPCibObjectData").super_class},"init"); +if(_1a){ +_replacementObjects={}; +_namesKeys=objj_msgSend(_1c,"decodeObjectForKey:",_9); +_namesValues=objj_msgSend(_1c,"decodeObjectForKey:",_a); +_classesKeys=objj_msgSend(_1c,"decodeObjectForKey:",_e); +_classesValues=objj_msgSend(_1c,"decodeObjectForKey:",_f); +_connections=objj_msgSend(_1c,"decodeObjectForKey:",_10); +_framework=objj_msgSend(_1c,"decodeObjectForKey:",_12); +_nextOid=objj_msgSend(_1c,"decodeIntForKey:",_13); +_objectsKeys=objj_msgSend(_1c,"decodeObjectForKey:",_14); +_objectsValues=objj_msgSend(_1c,"decodeObjectForKey:",_15); +_oidKeys=objj_msgSend(_1c,"decodeObjectForKey:",_16); +_oidValues=objj_msgSend(_1c,"decodeObjectForKey:",_17); +_fileOwner=objj_msgSend(_1c,"decodeObjectForKey:",_18); +_visibleWindows=objj_msgSend(_1c,"decodeObjectForKey:",_19); +} +return _1a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_1f,"encodeObject:forKey:",_namesKeys,_9); +objj_msgSend(_1f,"encodeObject:forKey:",_namesValues,_a); +objj_msgSend(_1f,"encodeObject:forKey:",_classesKeys,_e); +objj_msgSend(_1f,"encodeObject:forKey:",_classesValues,_f); +objj_msgSend(_1f,"encodeObject:forKey:",_connections,_10); +objj_msgSend(_1f,"encodeObject:forKey:",_framework,_12); +objj_msgSend(_1f,"encodeInt:forKey:",_nextOid,_13); +objj_msgSend(_1f,"encodeObject:forKey:",_objectsKeys,_14); +objj_msgSend(_1f,"encodeObject:forKey:",_objectsValues,_15); +objj_msgSend(_1f,"encodeObject:forKey:",_oidKeys,_16); +objj_msgSend(_1f,"encodeObject:forKey:",_oidValues,_17); +objj_msgSend(_1f,"encodeObject:forKey:",_fileOwner,_18); +objj_msgSend(_1f,"encodeObject:forKey:",_visibleWindows,_19); +} +}),new objj_method(sel_getUid("instantiateWithOwner:topLevelObjects:"),function(_20,_21,_22,_23){ +with(_20){ +var _24=objj_msgSend(_objectsKeys,"count"); +while(_24--){ +var _25=_objectsKeys[_24],_26=_objectsValues[_24],_27=_25; +if(objj_msgSend(_25,"respondsToSelector:",sel_getUid("_cibInstantiate"))){ +var _27=objj_msgSend(_25,"_cibInstantiate"); +if(_27!==_25){ +_replacementObjects[objj_msgSend(_25,"UID")]=_27; +if(objj_msgSend(_27,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +var _28=objj_msgSend(_27,"superview"); +if(objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _29=objj_msgSend(_28,"superview"); +if(objj_msgSend(_29,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))){ +objj_msgSend(_29,"setDocumentView:",_27); +} +} +} +} +} +if(_23&&_26===_fileOwner&&_25!==_fileOwner){ +_23.push(_27); +} +} +} +}),new objj_method(sel_getUid("establishConnectionsWithOwner:topLevelObjects:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +_replacementObjects[objj_msgSend(_fileOwner,"UID")]=_2c; +var _2e=0,_2f=_connections.length; +for(;_2e<_2f;++_2e){ +var _30=_connections[_2e]; +objj_msgSend(_30,"replaceObjects:",_replacementObjects); +objj_msgSend(_30,"establishConnection"); +} +} +}),new objj_method(sel_getUid("awakeWithOwner:topLevelObjects:"),function(_31,_32,_33,_34){ +with(_31){ +var _35=objj_msgSend(_objectsKeys,"count"); +while(_35--){ +var _36=_objectsKeys[_35],_37=_replacementObjects[objj_msgSend(_36,"UID")]; +if(_37){ +_36=_37; +} +if(_36!==_33&&objj_msgSend(_36,"respondsToSelector:",sel_getUid("awakeFromCib"))){ +objj_msgSend(_36,"awakeFromCib"); +} +} +if(objj_msgSend(_33,"respondsToSelector:",sel_getUid("awakeFromCib"))){ +objj_msgSend(_33,"awakeFromCib"); +} +} +})]); +p;19;_CPCibProxyObject.jt;1009;@STATIC;1.0;I;21;Foundation/CPObject.jt;965; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"_CPCibProxyObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier")]); +objj_registerClassPair(_1); +var _3="CPIdentifier"; +var _1=objj_getClass("_CPCibProxyObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibProxyObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("_CPCibProxyObject").super_class},"init"); +if(_4){ +_identifier=objj_msgSend(_6,"decodeObjectForKey:",_3); +} +if(objj_msgSend(_6,"respondsToSelector:",sel_getUid("externalObjectForProxyIdentifier:"))){ +return objj_msgSend(_6,"externalObjectForProxyIdentifier:",_identifier); +} +return _4; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7,_8,_9){ +with(_7){ +objj_msgSend(_9,"encodeObject:forKey:",_identifier,_3); +} +})]); +p;22;_CPCibWindowTemplate.jt;4518;@STATIC;1.0;I;21;Foundation/CPObject.jt;4473; +objj_executeFile("Foundation/CPObject.j",NO); +var _1="_CPCibWindowTemplateMinSizeKey",_2="_CPCibWindowTemplateMaxSizeKey",_3="_CPCibWindowTemplateViewClassKey",_4="_CPCibWindowTemplateWindowClassKey",_5="_CPCibWindowTemplateWindowRectKey",_6="_CPCibWindowTempatStyleMaskKey",_7="_CPCibWindowTemplateWindowTitleKey",_8="_CPCibWindowTemplateWindowViewKey",_9="_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop"; +_CPCibWindowTemplateWindowIsFullPlatformWindowKey="_CPCibWindowTemplateWindowIsFullPlatformWindowKey"; +var _a=objj_allocateClassPair(CPObject,"_CPCibWindowTemplate"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_viewClass"),new objj_ivar("_windowClass"),new objj_ivar("_windowRect"),new objj_ivar("_windowStyleMask"),new objj_ivar("_windowTitle"),new objj_ivar("_windowView"),new objj_ivar("_windowAutorecalculatesKeyViewLoop"),new objj_ivar("_windowIsFullPlatformWindow")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("init"),function(_c,_d){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPCibWindowTemplate").super_class},"init"); +if(_c){ +_windowClass="CPWindow"; +_windowRect=CGRectMake(0,0,400,200); +_windowStyleMask=CPTitledWindowMask|CPClosableWindowMask|CPMiniaturizableWindowMask|CPResizableWindowMask; +_windowTitle="Window"; +_windowView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,400,200)); +_windowIsFullPlatformWindow=NO; +} +return _c; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_e,_f,_10){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPCibWindowTemplate").super_class},"init"); +if(_e){ +if(objj_msgSend(_10,"containsValueForKey:",_1)){ +_minSize=objj_msgSend(_10,"decodeSizeForKey:",_1); +} +if(objj_msgSend(_10,"containsValueForKey:",_2)){ +_maxSize=objj_msgSend(_10,"decodeSizeForKey:",_2); +} +_viewClass=objj_msgSend(_10,"decodeObjectForKey:",_3); +_windowClass=objj_msgSend(_10,"decodeObjectForKey:",_4); +_windowRect=objj_msgSend(_10,"decodeRectForKey:",_5); +_windowStyleMask=objj_msgSend(_10,"decodeIntForKey:",_6); +_windowTitle=objj_msgSend(_10,"decodeObjectForKey:",_7); +_windowView=objj_msgSend(_10,"decodeObjectForKey:",_8); +_windowAutorecalculatesKeyViewLoop=!!objj_msgSend(_10,"decodeObjectForKey:",_9); +_windowIsFullPlatformWindow=!!objj_msgSend(_10,"decodeObjectForKey:",_CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +return _e; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_11,_12,_13){ +with(_11){ +if(_minSize){ +objj_msgSend(_13,"encodeSize:forKey:",_minSize,_1); +} +if(_maxSize){ +objj_msgSend(_13,"encodeSize:forKey:",_maxSize,_2); +} +objj_msgSend(_13,"encodeObject:forKey:",_viewClass,_3); +objj_msgSend(_13,"encodeObject:forKey:",_windowClass,_4); +objj_msgSend(_13,"encodeRect:forKey:",_windowRect,_5); +objj_msgSend(_13,"encodeInt:forKey:",_windowStyleMask,_6); +objj_msgSend(_13,"encodeObject:forKey:",_windowTitle,_7); +objj_msgSend(_13,"encodeObject:forKey:",_windowView,_8); +if(_windowAutorecalculatesKeyViewLoop){ +objj_msgSend(_13,"encodeObject:forKey:",_windowAutorecalculatesKeyViewLoop,_9); +} +if(_windowIsFullPlatformWindow){ +objj_msgSend(_13,"encodeObject:forKey:",_windowIsFullPlatformWindow,_CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +} +}),new objj_method(sel_getUid("customClassName"),function(_14,_15){ +with(_14){ +return _windowClass; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_16,_17,_18){ +with(_16){ +_windowClass=_18; +} +}),new objj_method(sel_getUid("windowClass"),function(_19,_1a){ +with(_19){ +return _windowClass; +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_1b,_1c){ +with(_1b){ +var _1d=CPClassFromString(objj_msgSend(_1b,"windowClass")); +var _1e=objj_msgSend(objj_msgSend(_1d,"alloc"),"initWithContentRect:styleMask:",_windowRect,_windowStyleMask); +if(_minSize){ +objj_msgSend(_1e,"setMinSize:",_minSize); +} +if(_maxSize){ +objj_msgSend(_1e,"setMaxSize:",_maxSize); +} +objj_msgSend(_1e,"setTitle:",_windowTitle); +objj_msgSend(_windowView,"setAutoresizesSubviews:",NO); +objj_msgSend(_1e,"setContentView:",_windowView); +objj_msgSend(_windowView,"setAutoresizesSubviews:",YES); +if(objj_msgSend(_viewClass,"isKindOfClass:",objj_msgSend(CPToolbar,"class"))){ +objj_msgSend(_1e,"setToolbar:",_viewClass); +} +objj_msgSend(_1e,"setAutorecalculatesKeyViewLoop:",_windowAutorecalculatesKeyViewLoop); +objj_msgSend(_1e,"setFullBridge:",_windowIsFullPlatformWindow); +return _1e; +} +})]); +p;7;CPCib.jt;5447;@STATIC;1.0;I;21;Foundation/CPObject.jI;28;Foundation/CPURLConnection.jI;25;Foundation/CPURLRequest.ji;20;_CPCibClassSwapper.ji;20;_CPCibCustomObject.ji;22;_CPCibCustomResource.ji;18;_CPCibCustomView.ji;23;_CPCibKeyedUnarchiver.ji;18;_CPCibObjectData.ji;19;_CPCibProxyObject.ji;22;_CPCibWindowTemplate.jt;5137; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPURLConnection.j",NO); +objj_executeFile("Foundation/CPURLRequest.j",NO); +objj_executeFile("_CPCibClassSwapper.j",YES); +objj_executeFile("_CPCibCustomObject.j",YES); +objj_executeFile("_CPCibCustomResource.j",YES); +objj_executeFile("_CPCibCustomView.j",YES); +objj_executeFile("_CPCibKeyedUnarchiver.j",YES); +objj_executeFile("_CPCibObjectData.j",YES); +objj_executeFile("_CPCibProxyObject.j",YES); +objj_executeFile("_CPCibWindowTemplate.j",YES); +CPCibOwner="CPCibOwner",CPCibTopLevelObjects="CPCibTopLevelObjects",CPCibReplacementClasses="CPCibReplacementClasses",CPCibExternalObjects="CPCibExternalObjects"; +var _1="CPCibObjectDataKey"; +var _2=objj_allocateClassPair(CPObject,"CPCib"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_data"),new objj_ivar("_bundle"),new objj_ivar("_awakenCustomResources"),new objj_ivar("_loadDelegate")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithContentsOfURL:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPCib").super_class},"init"); +if(_4){ +_data=objj_msgSend(CPURLConnection,"sendSynchronousRequest:returningResponse:",objj_msgSend(CPURLRequest,"requestWithURL:",_6),nil); +_awakenCustomResources=YES; +} +return _4; +} +}),new objj_method(sel_getUid("initWithContentsOfURL:loadDelegate:"),function(_7,_8,_9,_a){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPCib").super_class},"init"); +if(_7){ +objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",objj_msgSend(CPURLRequest,"requestWithURL:",_9),_7); +_awakenCustomResources=YES; +_loadDelegate=_a; +} +return _7; +} +}),new objj_method(sel_getUid("initWithCibNamed:bundle:"),function(_b,_c,_d,_e){ +with(_b){ +if(!objj_msgSend(_d,"hasSuffix:",".cib")){ +_d=objj_msgSend(_d,"stringByAppendingString:",".cib"); +} +_b=objj_msgSend(_b,"initWithContentsOfURL:",objj_msgSend(_e||objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_d)); +if(_b){ +_bundle=_e; +} +return _b; +} +}),new objj_method(sel_getUid("initWithCibNamed:bundle:loadDelegate:"),function(_f,_10,_11,_12,_13){ +with(_f){ +if(!objj_msgSend(_11,"hasSuffix:",".cib")){ +_11=objj_msgSend(_11,"stringByAppendingString:",".cib"); +} +_f=objj_msgSend(_f,"initWithContentsOfURL:loadDelegate:",objj_msgSend(_12||objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_11),_13); +if(_f){ +_bundle=_12; +} +return _f; +} +}),new objj_method(sel_getUid("_setAwakenCustomResources:"),function(_14,_15,_16){ +with(_14){ +_awakenCustomResources=_16; +} +}),new objj_method(sel_getUid("_awakenCustomResources"),function(_17,_18){ +with(_17){ +return _awakenCustomResources; +} +}),new objj_method(sel_getUid("instantiateCibWithExternalNameTable:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=_bundle,_1d=objj_msgSend(_1b,"objectForKey:",CPCibOwner); +if(!_1c&&_1d){ +_1c=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_1d,"class")); +} +var _1e=objj_msgSend(objj_msgSend(_CPCibKeyedUnarchiver,"alloc"),"initForReadingWithData:bundle:awakenCustomResources:",_data,_1c,_awakenCustomResources),_1f=objj_msgSend(_1b,"objectForKey:",CPCibReplacementClasses); +if(_1f){ +var key=nil,_20=objj_msgSend(_1f,"keyEnumerator"); +while(key=objj_msgSend(_20,"nextObject")){ +objj_msgSend(_1e,"setClass:forClassName:",objj_msgSend(_1f,"objectForKey:",key),key); +} +} +objj_msgSend(_1e,"setExternalObjectsForProxyIdentifiers:",objj_msgSend(_1b,"objectForKey:",CPCibExternalObjects)); +var _21=objj_msgSend(_1e,"decodeObjectForKey:",_1); +if(!_21||!objj_msgSend(_21,"isKindOfClass:",objj_msgSend(_CPCibObjectData,"class"))){ +return NO; +} +var _22=objj_msgSend(_1b,"objectForKey:",CPCibTopLevelObjects); +objj_msgSend(_21,"instantiateWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"establishConnectionsWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"awakeWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"displayVisibleWindows"); +return YES; +} +}),new objj_method(sel_getUid("instantiateCibWithOwner:topLevelObjects:"),function(_23,_24,_25,_26){ +with(_23){ +return objj_msgSend(_23,"instantiateCibWithExternalNameTable:",objj_msgSend(CPDictionary,"dictionaryWithObjectsAndKeys:",_25,CPCibOwner,_26,CPCibTopLevelObjects)); +} +})]); +var _2=objj_getClass("CPCib"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPCib\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("connection:didReceiveData:"),function(_27,_28,_29,_2a){ +with(_27){ +if(!_2a){ +return objj_msgSend(_27,"connection:didFailWithError:",_29,nil); +} +_data=objj_msgSend(CPData,"dataWithRawString:",_2a); +} +}),new objj_method(sel_getUid("connection:didFailWithError:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +if(objj_msgSend(_loadDelegate,"respondsToSelector:",sel_getUid("cibDidFailToLoad:"))){ +objj_msgSend(_loadDelegate,"cibDidFailToLoad:",_2b); +} +_loadDelegate=nil; +} +}),new objj_method(sel_getUid("connectionDidFinishLoading:"),function(_2f,_30,_31){ +with(_2f){ +if(objj_msgSend(_loadDelegate,"respondsToSelector:",sel_getUid("cibDidFinishLoading:"))){ +objj_msgSend(_loadDelegate,"cibDidFinishLoading:",_2f); +} +_loadDelegate=nil; +} +})]); +p;16;CPCibConnector.jt;2363;@STATIC;1.0;I;21;Foundation/CPObject.jI;29;Foundation/CPKeyValueCoding.jt;2284; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPKeyValueCoding.j",NO); +var _1="_CPCibConnectorSourceKey",_2="_CPCibConnectorDestinationKey",_3="_CPCibConnectorLabelKey"; +var _4=objj_allocateClassPair(CPObject,"CPCibConnector"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_source"),new objj_ivar("_destination"),new objj_ivar("_label")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("source"),function(_6,_7){ +with(_6){ +return _source; +} +}),new objj_method(sel_getUid("setSource:"),function(_8,_9,_a){ +with(_8){ +_source=_a; +} +}),new objj_method(sel_getUid("destination"),function(_b,_c){ +with(_b){ +return _destination; +} +}),new objj_method(sel_getUid("setDestination:"),function(_d,_e,_f){ +with(_d){ +_destination=_f; +} +}),new objj_method(sel_getUid("label"),function(_10,_11){ +with(_10){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_12,_13,_14){ +with(_12){ +_label=_14; +} +}),new objj_method(sel_getUid("replaceObject:withObject:"),function(_15,_16,_17,_18){ +with(_15){ +if(_source===_17){ +_source=_18; +} +if(_destination===_17){ +_destination=_18; +} +} +}),new objj_method(sel_getUid("replaceObjects:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=_1b[objj_msgSend(_source,"UID")]; +if(_1c!==undefined){ +_source=_1c; +} +_1c=_1b[objj_msgSend(_destination,"UID")]; +if(_1c!==undefined){ +_destination=_1c; +} +} +})]); +var _4=objj_getClass("CPCibConnector"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPCibConnector\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +_1d=objj_msgSendSuper({receiver:_1d,super_class:objj_getClass("CPCibConnector").super_class},"init"); +if(_1d){ +_source=objj_msgSend(_1f,"decodeObjectForKey:",_1); +_destination=objj_msgSend(_1f,"decodeObjectForKey:",_2); +_label=objj_msgSend(_1f,"decodeObjectForKey:",_3); +} +return _1d; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(_22,"encodeObject:forKey:",_source,_1); +objj_msgSend(_22,"encodeObject:forKey:",_destination,_2); +objj_msgSend(_22,"encodeObject:forKey:",_label,_3); +} +})]); +var _4=objj_allocateClassPair(CPCibConnector,"_CPCibConnector"),_5=_4.isa; +objj_registerClassPair(_4); +p;23;CPCibControlConnector.jt;1534;@STATIC;1.0;i;16;CPCibConnector.jt;1494; +objj_executeFile("CPCibConnector.j",YES); +var _1=objj_allocateClassPair(CPCibConnector,"CPCibControlConnector"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("establishConnection"),function(_3,_4){ +with(_3){ +var _5=_label,_6=objj_msgSend(_5,"length"); +if(_6&&_5.charAt(_6-1)!==":"){ +_5+=":"; +} +var _7=CPSelectorFromString(_5); +if(!_7){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] selector "+_5+" does not exist."); +} +if(_destination&&!objj_msgSend(_destination,"respondsToSelector:",_7)){ +CPLog.warn("Could not connect the action "+_7+" to target of class "+objj_msgSend(_destination,"className")); +return; +} +if(objj_msgSend(_source,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_source,sel_getUid("setAction:"),_7); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] "+objj_msgSend(_source,"description")+" does not respond to setAction:"); +} +if(objj_msgSend(_source,"respondsToSelector:",sel_getUid("setTarget:"))){ +objj_msgSend(_source,sel_getUid("setTarget:"),_destination); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] "+objj_msgSend(_source,"description")+" does not respond to setTarget:"); +} +} +})]); +var _1=objj_allocateClassPair(CPCibControlConnector,"_CPCibControlConnector"),_2=_1.isa; +objj_registerClassPair(_1); +p;14;CPCibLoading.jt;3586;@STATIC;1.0;I;21;Foundation/CPBundle.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;3485; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="CPCibOwner"; +var _2=objj_getClass("CPObject"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("awakeFromCib"),function(_4,_5){ +with(_4){ +} +})]); +var _2=objj_getClass("CPBundle"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPBundle\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("loadCibFile:externalNameTable:"),function(_6,_7,_8,_9){ +with(_6){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",_8),"instantiateCibWithExternalNameTable:",_9); +} +}),new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"),function(_a,_b,_c,_d,_e){ +with(_a){ +return (objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithCibNamed:bundle:loadDelegate:",_c,_a,objj_msgSend(objj_msgSend(_CPCibLoadDelegate,"alloc"),"initWithLoadDelegate:externalNameTable:",_e,_d))); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("loadCibFile:externalNameTable:"),function(_f,_10,_11,_12){ +with(_f){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",_11),"instantiateCibWithExternalNameTable:",_12); +} +}),new objj_method(sel_getUid("loadCibNamed:owner:"),function(_13,_14,_15,_16){ +with(_13){ +if(!objj_msgSend(_15,"hasSuffix:",".cib")){ +_15=objj_msgSend(_15,"stringByAppendingString:",".cib"); +} +var _17=_16?objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_16,"class")):objj_msgSend(CPBundle,"mainBundle"),_18=objj_msgSend(_17,"pathForResource:",_15); +return objj_msgSend(_13,"loadCibFile:externalNameTable:",_18,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_16,_1)); +} +}),new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"),function(_19,_1a,_1b,_1c,_1d){ +with(_19){ +return (objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:loadDelegate:",_1b,objj_msgSend(objj_msgSend(_CPCibLoadDelegate,"alloc"),"initWithLoadDelegate:externalNameTable:",_1d,_1c))); +} +}),new objj_method(sel_getUid("loadCibNamed:owner:loadDelegate:"),function(_1e,_1f,_20,_21,_22){ +with(_1e){ +if(!objj_msgSend(_20,"hasSuffix:",".cib")){ +_20=objj_msgSend(_20,"stringByAppendingString:",".cib"); +} +var _23=_21?objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_21,"class")):objj_msgSend(CPBundle,"mainBundle"),_24=objj_msgSend(_23,"pathForResource:",_20); +return objj_msgSend(_1e,"loadCibFile:externalNameTable:loadDelegate:",_24,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_21,_1),_22); +} +})]); +var _2=objj_allocateClassPair(CPObject,"_CPCibLoadDelegate"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_loadDelegate"),new objj_ivar("_externalNameTable")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithLoadDelegate:externalNameTable:"),function(_25,_26,_27,_28){ +with(_25){ +_25=objj_msgSend(_25,"init"); +if(_25){ +_loadDelegate=_27; +_externalNameTable=_28; +} +return _25; +} +}),new objj_method(sel_getUid("cibDidFinishLoading:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"instantiateCibWithExternalNameTable:",_externalNameTable); +objj_msgSend(_loadDelegate,"cibDidFinishLoading:",_2b); +} +}),new objj_method(sel_getUid("cibDidFailToLoad:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_loadDelegate,"cibDidFailToLoad:",_2e); +} +})]); +p;22;CPCibOutletConnector.jt;703;@STATIC;1.0;i;16;CPCibConnector.jt;664; +objj_executeFile("CPCibConnector.j",YES); +var _1=objj_allocateClassPair(CPCibConnector,"CPCibOutletConnector"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("establishConnection"),function(_3,_4){ +with(_3){ +try{ +objj_msgSend(_source,"setValue:forKey:",_destination,_label); +} +catch(anException){ +if(objj_msgSend(anException,"name")===CPUndefinedKeyException){ +CPLog.warn("Could not connect the outlet "+_label+" of target of class "+objj_msgSend(_source,"className")); +}else{ +throw anException; +} +} +} +})]); +var _1=objj_allocateClassPair(CPCibOutletConnector,"_CPCibOutletConnector"),_2=_1.isa; +objj_registerClassPair(_1); +p;13;CAAnimation.jt;3814;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;23;CAMediaTimingFunction.jt;3715; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CAMediaTimingFunction.j",YES); +var _1=objj_allocateClassPair(CPObject,"CAAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isRemovedOnCompletion"),new objj_ivar("_delegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CAAnimation").super_class},"init"); +if(_3){ +_isRemovedOnCompletion=YES; +} +return _3; +} +}),new objj_method(sel_getUid("shouldArchiveValueForKey:"),function(_5,_6,_7){ +with(_5){ +return YES; +} +}),new objj_method(sel_getUid("setRemovedOnCompletion:"),function(_8,_9,_a){ +with(_8){ +_isRemovedOnCompletion=_a; +} +}),new objj_method(sel_getUid("removedOnCompletion"),function(_b,_c){ +with(_b){ +return _isRemovedOnCompletion; +} +}),new objj_method(sel_getUid("isRemovedOnCompletion"),function(_d,_e){ +with(_d){ +return _isRemovedOnCompletion; +} +}),new objj_method(sel_getUid("timingFunction"),function(_f,_10){ +with(_f){ +return nil; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_11,_12,_13){ +with(_11){ +_delegate=_13; +} +}),new objj_method(sel_getUid("delegate"),function(_14,_15){ +with(_14){ +return _delegate; +} +}),new objj_method(sel_getUid("runActionForKey:object:arguments:"),function(_16,_17,_18,_19,_1a){ +with(_16){ +objj_msgSend(_19,"addAnimation:forKey:",_16,_18); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("animation"),function(_1b,_1c){ +with(_1b){ +return objj_msgSend(objj_msgSend(_1b,"alloc"),"init"); +} +}),new objj_method(sel_getUid("defaultValueForKey:"),function(_1d,_1e,_1f){ +with(_1d){ +return nil; +} +})]); +var _1=objj_allocateClassPair(CAAnimation,"CAPropertyAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath"),new objj_ivar("_isCumulative"),new objj_ivar("_isAdditive")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setKeyPath:"),function(_20,_21,_22){ +with(_20){ +_keyPath=_22; +} +}),new objj_method(sel_getUid("keyPath"),function(_23,_24){ +with(_23){ +return _keyPath; +} +}),new objj_method(sel_getUid("setCumulative:"),function(_25,_26,_27){ +with(_25){ +_isCumulative=_27; +} +}),new objj_method(sel_getUid("cumulative"),function(_28,_29){ +with(_28){ +return _isCumulative; +} +}),new objj_method(sel_getUid("isCumulative"),function(_2a,_2b){ +with(_2a){ +return _isCumulative; +} +}),new objj_method(sel_getUid("setAdditive:"),function(_2c,_2d,_2e){ +with(_2c){ +_isAdditive=_2e; +} +}),new objj_method(sel_getUid("additive"),function(_2f,_30){ +with(_2f){ +return _isAdditive; +} +}),new objj_method(sel_getUid("isAdditive"),function(_31,_32){ +with(_31){ +return _isAdditive; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("animationWithKeyPath:"),function(_33,_34,_35){ +with(_33){ +var _36=objj_msgSend(_33,"animation"); +objj_msgSend(_36,"setKeyPath:",_35); +return _36; +} +})]); +var _1=objj_allocateClassPair(CAPropertyAnimation,"CABasicAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_fromValue"),new objj_ivar("_toValue"),new objj_ivar("_byValue")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setFromValue:"),function(_37,_38,_39){ +with(_37){ +_fromValue=_39; +} +}),new objj_method(sel_getUid("fromValue"),function(_3a,_3b){ +with(_3a){ +return _fromValue; +} +}),new objj_method(sel_getUid("setToValue:"),function(_3c,_3d,_3e){ +with(_3c){ +_toValue=_3e; +} +}),new objj_method(sel_getUid("toValue"),function(_3f,_40){ +with(_3f){ +return _toValue; +} +}),new objj_method(sel_getUid("setByValue:"),function(_41,_42,_43){ +with(_41){ +_byValue=_43; +} +}),new objj_method(sel_getUid("byValue"),function(_44,_45){ +with(_44){ +return _byValue; +} +})]); +p;16;CABackingStore.jt;737;@STATIC;1.0;i;12;CGGeometry.ji;17;CPCompatibility.jt;680; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPCompatibility.j",YES); +CABackingStoreGetContext=function(_1){ +return _1.context; +}; +if(CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +CABackingStoreCreate=function(){ +var _2=document.createElement("canvas"); +_2.style.position="absolute"; +return {context:_2.getContext("2d"),buffer:_2,_image:_2}; +}; +CABackingStoreSetSize=function(_3,_4){ +var _5=_3.buffer; +_5.width=_4.width; +_5.height=_4.height; +_5.style.width=_4.width+"px"; +_5.style.height=_4.height+"px"; +}; +}else{ +CABackingStoreCreate=function(){ +var _6=CGBitmapGraphicsContextCreate(); +_6.buffer=""; +return {context:_6}; +}; +CABackingStoreSetSize=function(_7,_8){ +}; +} +p;14;CAFlashLayer.jt;851;@STATIC;1.0;i;9;CALayer.ji;14;CPFlashMovie.jt;801; +objj_executeFile("CALayer.j",YES); +objj_executeFile("CPFlashMovie.j",YES); +var _1=objj_allocateClassPair(CALayer,"CAFlashLayer"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_flashMovie")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setFlashMovie:"),function(_3,_4,_5){ +with(_3){ +if(_flashMovie==_5){ +return; +} +_flashMovie=_5; +_DOMElement.innerHTML="<object width = \"100%\" height = \"100%\"><param name = \"movie\" value = \""+_5._fileName+"\"></param><param name = \"wmode\" value = \"transparent\"></param><embed src = \""+_5._fileName+"\" type = \"application/x-shockwave-flash\" wmode = \"transparent\" width = \"100%\" height = \"100%\"></embed></object>"; +} +}),new objj_method(sel_getUid("flashMovie"),function(_6,_7){ +with(_6){ +return _flashMovie; +} +})]); +p;9;CALayer.jt;24760;@STATIC;1.0;I;21;Foundation/CPObject.jI;23;AppKit/CABackingStore.jI;18;AppKit/CGContext.jI;19;AppKit/CGGeometry.ji;12;CGGeometry.jt;24622; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CABackingStore.j",NO); +objj_executeFile("AppKit/CGContext.j",NO); +objj_executeFile("AppKit/CGGeometry.j",NO); +objj_executeFile("CGGeometry.j",YES); +CGAffineTransformMake=function(a,b,c,d,tx,ty){ +return {a:a,b:b,c:c,d:d,tx:tx,ty:ty}; +}; +CGAffineTransformMakeIdentity=function(){ +return {a:1,b:0,c:0,d:1,tx:0,ty:0}; +}; +CGAffineTransformMakeCopy=function(_1){ +return {a:_1.a,b:_1.b,c:_1.c,d:_1.d,tx:_1.tx,ty:_1.ty}; +}; +CGAffineTransformMakeScale=function(sx,sy){ +return {a:sx,b:0,c:0,d:sy,tx:0,ty:0}; +}; +CGAffineTransformMakeTranslation=function(tx,ty){ +return {a:1,b:0,c:0,d:1,tx:tx,ty:ty}; +}; +CGAffineTransformTranslate=function(_2,tx,ty){ +return {a:_2.a,b:_2.b,c:_2.c,d:_2.d,tx:_2.tx+_2.a*tx+_2.c*ty,ty:_2.ty+_2.b*tx+_2.d*ty}; +}; +CGAffineTransformScale=function(_3,sx,sy){ +return {a:_3.a*sx,b:_3.b*sx,c:_3.c*sy,d:_3.d*sy,tx:_3.tx,ty:_3.ty}; +}; +CGAffineTransformConcat=function(_4,_5){ +return {a:_4.a*_5.a+_4.b*_5.c,b:_4.a*_5.b+_4.b*_5.d,c:_4.c*_5.a+_4.d*_5.c,d:_4.c*_5.b+_4.d*_5.d,tx:_4.tx*_5.a+_4.ty*_5.c+_5.tx,ty:_4.tx*_5.b+_4.ty*_5.d+_5.ty}; +}; +CGPointApplyAffineTransform=function(_6,_7){ +return {x:_6.x*_7.a+_6.y*_7.c+_7.tx,y:_6.x*_7.b+_6.y*_7.d+_7.ty}; +}; +CGSizeApplyAffineTransform=function(_8,_9){ +return {width:_8.width*_9.a+_8.height*_9.c,height:_8.width*_9.b+_8.height*_9.d}; +}; +CGAffineTransformIsIdentity=function(_a){ +return (_a.a==1&&_a.b==0&&_a.c==0&&_a.d==1&&_a.tx==0&&_a.ty==0); +}; +CGAffineTransformEqualToTransform=function(_b,_c){ +return (_b.a==_c.a&&_b.b==_c.b&&_b.c==_c.c&&_b.d==_c.d&&_b.tx==_c.tx&&_b.ty==_c.ty); +}; +CGStringCreateWithCGAffineTransform=function(_d){ +return (" [[ "+_d.a+", "+_d.b+", 0 ], [ "+_d.c+", "+_d.d+", 0 ], [ "+_d.tx+", "+_d.ty+", 1]]"); +}; +CGAffineTransformCreateCopy=function(_e){ +return {a:_e.a,b:_e.b,c:_e.c,d:_e.d,tx:_e.tx,ty:_e.ty}; +}; +CGAffineTransformMakeRotation=function(_f){ +var sin=SIN(_f),cos=COS(_f); +return {a:cos,b:sin,c:-sin,d:cos,tx:0,ty:0}; +}; +CGAffineTransformRotate=function(_10,_11){ +var sin=SIN(_11),cos=COS(_11); +return {a:_10.a*cos+_10.c*sin,b:_10.b*cos+_10.d*sin,c:_10.c*cos-_10.a*sin,d:_10.d*cos-_10.b*sin,tx:_10.tx,ty:_10.ty}; +}; +CGAffineTransformInvert=function(_12){ +var _13=1/(_12.a*_12.d-_12.b*_12.c); +return {a:_13*_12.d,b:-_13*_12.b,c:-_13*_12.c,d:_13*_12.a,tx:_13*(_12.c*_12.ty-_12.d*_12.tx),ty:_13*(_12.b*_12.tx-_12.a*_12.ty)}; +}; +CGRectApplyAffineTransform=function(_14,_15){ +var top=(_14.origin.y),_16=(_14.origin.x),_17=(_14.origin.x+_14.size.width),_18=(_14.origin.y+_14.size.height),_19=CGPointApplyAffineTransform({x:_16,y:top},_15),_1a=CGPointApplyAffineTransform({x:_17,y:top},_15),_1b=CGPointApplyAffineTransform({x:_16,y:_18},_15),_1c=CGPointApplyAffineTransform({x:_17,y:_18},_15),_1d=MIN(_19.x,_1a.x,_1b.x,_1c.x),_1e=MAX(_19.x,_1a.x,_1b.x,_1c.x),_1f=MIN(_19.y,_1a.y,_1b.y,_1c.y),_20=MAX(_19.y,_1a.y,_1b.y,_1c.y); +return {origin:{x:_1d,y:_1f},size:{width:(_1e-_1d),height:(_20-_1f)}}; +}; +CPStringFromCGAffineTransform=function(_21){ +return "{"+_21.a+", "+_21.b+", "+_21.c+", "+_21.d+", "+_21.tx+", "+_21.ty+"}"; +}; +var _22=1,_23=2,_24=4,_25=8,_26=16; +var _27=NO; +var _28=1,_29=2,_2a=4,_2b=8,_2c=16,_2d=_2a|_28|_29; +var _2e=nil; +var _2f=objj_allocateClassPair(CPObject,"CALayer"),_30=_2f.isa; +class_addIvars(_2f,[new objj_ivar("_frame"),new objj_ivar("_bounds"),new objj_ivar("_position"),new objj_ivar("_zPosition"),new objj_ivar("_anchorPoint"),new objj_ivar("_affineTransform"),new objj_ivar("_sublayerTransform"),new objj_ivar("_sublayerTransformForSublayers"),new objj_ivar("_backingStoreFrame"),new objj_ivar("_standardBackingStoreFrame"),new objj_ivar("_hasSublayerTransform"),new objj_ivar("_hasCustomBackingStoreFrame"),new objj_ivar("_opacity"),new objj_ivar("_isHidden"),new objj_ivar("_backgroundColor"),new objj_ivar("_superlayer"),new objj_ivar("_sublayers"),new objj_ivar("_runLoopUpdateMask"),new objj_ivar("_needsDisplayOnBoundsChange"),new objj_ivar("_delegate"),new objj_ivar("_delegateRespondsToDisplayLayerSelector"),new objj_ivar("_delegateRespondsToDrawLayerInContextSelector"),new objj_ivar("_DOMElement"),new objj_ivar("_DOMContentsElement"),new objj_ivar("_contents"),new objj_ivar("_context"),new objj_ivar("_owningView"),new objj_ivar("_transformToLayer"),new objj_ivar("_transformFromLayer")]); +objj_registerClassPair(_2f); +class_addMethods(_2f,[new objj_method(sel_getUid("init"),function(_31,_32){ +with(_31){ +_31=objj_msgSendSuper({receiver:_31,super_class:objj_getClass("CALayer").super_class},"init"); +if(_31){ +_frame=CGRectMakeZero(); +_backingStoreFrame=CGRectMakeZero(); +_standardBackingStoreFrame=CGRectMakeZero(); +_bounds=CGRectMakeZero(); +_position=CGPointMakeZero(); +_zPosition=0; +_anchorPoint=CGPointMake(0.5,0.5); +_affineTransform=CGAffineTransformMakeIdentity(); +_sublayerTransform=CGAffineTransformMakeIdentity(); +_transformToLayer=CGAffineTransformMakeIdentity(); +_transformFromLayer=CGAffineTransformMakeIdentity(); +_opacity=1; +_isHidden=NO; +_masksToBounds=NO; +_sublayers=[]; +_DOMElement=document.createElement("div"); +_DOMElement.style.overflow="visible"; +_DOMElement.style.position="absolute"; +_DOMElement.style.visibility="visible"; +_DOMElement.style.top="0px"; +_DOMElement.style.left="0px"; +_DOMElement.style.zIndex=0; +_DOMElement.style.width="0px"; +_DOMElement.style.height="0px"; +} +return _31; +} +}),new objj_method(sel_getUid("setBounds:"),function(_33,_34,_35){ +with(_33){ +if(CGRectEqualToRect(_bounds,_35)){ +return; +} +var _36=_bounds.origin; +_bounds={origin:{x:_35.origin.x,y:_35.origin.y},size:{width:_35.size.width,height:_35.size.height}}; +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_33); +} +_CALayerRecalculateGeometry(_33,_22); +} +}),new objj_method(sel_getUid("bounds"),function(_37,_38){ +with(_37){ +return _bounds; +} +}),new objj_method(sel_getUid("setPosition:"),function(_39,_3a,_3b){ +with(_39){ +if(CGPointEqualToPoint(_position,_3b)){ +return; +} +_position={x:_3b.x,y:_3b.y}; +_CALayerRecalculateGeometry(_39,_23); +} +}),new objj_method(sel_getUid("position"),function(_3c,_3d){ +with(_3c){ +return _position; +} +}),new objj_method(sel_getUid("setZPosition:"),function(_3e,_3f,_40){ +with(_3e){ +if(_zPosition==_40){ +return; +} +_zPosition=_40; +objj_msgSend(_3e,"registerRunLoopUpdateWithMask:",_2a); +} +}),new objj_method(sel_getUid("setAnchorPoint:"),function(_41,_42,_43){ +with(_41){ +_43={x:_43.x,y:_43.y}; +_43.x=MIN(1,MAX(0,_43.x)); +_43.y=MIN(1,MAX(0,_43.y)); +if(CGPointEqualToPoint(_anchorPoint,_43)){ +return; +} +_anchorPoint=_43; +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_41); +} +if(_owningView){ +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +} +_CALayerRecalculateGeometry(_41,_24); +} +}),new objj_method(sel_getUid("anchorPoint"),function(_44,_45){ +with(_44){ +return _anchorPoint; +} +}),new objj_method(sel_getUid("setAffineTransform:"),function(_46,_47,_48){ +with(_46){ +if(CGAffineTransformEqualToTransform(_affineTransform,_48)){ +return; +} +_affineTransform={a:_48.a,b:_48.b,c:_48.c,d:_48.d,tx:_48.tx,ty:_48.ty}; +_CALayerRecalculateGeometry(_46,_25); +} +}),new objj_method(sel_getUid("affineTransform"),function(_49,_4a){ +with(_49){ +return _affineTransform; +} +}),new objj_method(sel_getUid("setSublayerTransform:"),function(_4b,_4c,_4d){ +with(_4b){ +if(CGAffineTransformEqualToTransform(_sublayerTransform,_4d)){ +return; +} +var _4e=_hasSublayerTransform; +_sublayerTransform={a:_4d.a,b:_4d.b,c:_4d.c,d:_4d.d,tx:_4d.tx,ty:_4d.ty}; +_hasSublayerTransform=!(_sublayerTransform.a==1&&_sublayerTransform.b==0&&_sublayerTransform.c==0&&_sublayerTransform.d==1&&_sublayerTransform.tx==0&&_sublayerTransform.ty==0); +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_4b); +var _4f=_sublayers.length; +while(_4f--){ +_CALayerRecalculateGeometry(_sublayers[_4f],_26); +} +} +} +}),new objj_method(sel_getUid("sublayerTransform"),function(_50,_51){ +with(_50){ +return _sublayerTransform; +} +}),new objj_method(sel_getUid("transformToLayer"),function(_52,_53){ +with(_52){ +return _transformToLayer; +} +}),new objj_method(sel_getUid("setFrame:"),function(_54,_55,_56){ +with(_54){ +alert("FIXME IMPLEMENT"); +} +}),new objj_method(sel_getUid("frame"),function(_57,_58){ +with(_57){ +if(!_frame){ +_frame=objj_msgSend(_57,"convertRect:toLayer:",_bounds,_superlayer); +} +return _frame; +} +}),new objj_method(sel_getUid("backingStoreFrame"),function(_59,_5a){ +with(_59){ +return _backingStoreFrame; +} +}),new objj_method(sel_getUid("setBackingStoreFrame:"),function(_5b,_5c,_5d){ +with(_5b){ +_hasCustomBackingStoreFrame=(_5d!=nil); +if(_5d==nil){ +_5d=CGRectMakeCopy(_standardBackingStoreFrame); +}else{ +if(_superlayer){ +_5d=objj_msgSend(_superlayer,"convertRect:toLayer:",_5d,nil); +var _5e=objj_msgSend(_superlayer,"bounds"),_5f=objj_msgSend(_superlayer,"convertRect:toLayer:",_5e,nil); +_5d.origin.x-=(_5f.origin.x); +_5d.origin.y-=(_5f.origin.y); +}else{ +_5d=CGRectMakeCopy(_5d); +} +} +if(!CGPointEqualToPoint(_backingStoreFrame.origin,_5d.origin)){ +objj_msgSend(_5b,"registerRunLoopUpdateWithMask:",_28); +} +if(!CGSizeEqualToSize(_backingStoreFrame.size,_5d.size)){ +objj_msgSend(_5b,"registerRunLoopUpdateWithMask:",_29); +} +_backingStoreFrame=_5d; +} +}),new objj_method(sel_getUid("contents"),function(_60,_61){ +with(_60){ +return _contents; +} +}),new objj_method(sel_getUid("setContents:"),function(_62,_63,_64){ +with(_62){ +if(_contents==_64){ +return; +} +_contents=_64; +objj_msgSend(_62,"composite"); +} +}),new objj_method(sel_getUid("composite"),function(_65,_66){ +with(_65){ +if(_27&&!_contents||!_context){ +return; +} +CGContextClearRect(_context,{origin:{x:0,y:0},size:{width:(_backingStoreFrame.size.width),height:(_backingStoreFrame.size.height)}}); +var _67=_transformFromLayer; +if(_superlayer){ +var _68=_CALayerGetTransform(_superlayer,nil),_69=CGPointApplyAffineTransform(_superlayer._bounds.origin,_68); +_67=CGAffineTransformConcat(_67,_68); +_67.tx-=_69.x; +_67.ty-=_69.y; +} +_67.tx-=(_backingStoreFrame.origin.x); +_67.ty-=(_backingStoreFrame.origin.y); +CGContextSaveGState(_context); +CGContextConcatCTM(_context,_67); +if(_27){ +_context.drawImage(_contents.buffer,(_bounds.origin.x),(_bounds.origin.y)); +}else{ +objj_msgSend(_65,"drawInContext:",_context); +} +CGContextRestoreGState(_context); +} +}),new objj_method(sel_getUid("display"),function(_6a,_6b){ +with(_6a){ +if(!_context){ +_context=CGBitmapGraphicsContextCreate(); +_DOMContentsElement=_context.DOMElement; +_DOMContentsElement.style.zIndex=-100; +_DOMContentsElement.style.overflow="hidden"; +_DOMContentsElement.style.position="absolute"; +_DOMContentsElement.style.visibility="visible"; +_DOMContentsElement.width=ROUND((_backingStoreFrame.size.width)); +_DOMContentsElement.height=ROUND((_backingStoreFrame.size.height)); +_DOMContentsElement.style.top="0px"; +_DOMContentsElement.style.left="0px"; +_DOMContentsElement.style.width=ROUND((_backingStoreFrame.size.width))+"px"; +_DOMContentsElement.style.height=ROUND((_backingStoreFrame.size.height))+"px"; +_DOMElement.appendChild(_DOMContentsElement); +} +if(_27){ +if(_delegateRespondsToDisplayLayerSelector){ +return objj_msgSend(_delegate,"displayInLayer:",_6a); +} +if((_backingStoreFrame.size.width)==0||(_backingStoreFrame.size.height)==0){ +return; +} +if(!_contents){ +_contents=CABackingStoreCreate(); +} +CABackingStoreSetSize(_contents,_bounds.size); +objj_msgSend(_6a,"drawInContext:",CABackingStoreGetContext(_contents)); +} +objj_msgSend(_6a,"composite"); +} +}),new objj_method(sel_getUid("drawInContext:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_backgroundColor){ +CGContextSetFillColor(_6e,_backgroundColor); +CGContextFillRect(_6e,_bounds); +} +if(_delegateRespondsToDrawLayerInContextSelector){ +objj_msgSend(_delegate,"drawLayer:inContext:",_6c,_6e); +} +} +}),new objj_method(sel_getUid("opacity"),function(_6f,_70){ +with(_6f){ +return _opacity; +} +}),new objj_method(sel_getUid("setOpacity:"),function(_71,_72,_73){ +with(_71){ +if(_opacity==_73){ +return; +} +_opacity=_73; +_DOMElement.style.opacity=_73; +_DOMElement.style.filter="alpha(opacity="+_73*100+")"; +} +}),new objj_method(sel_getUid("setHidden:"),function(_74,_75,_76){ +with(_74){ +_isHidden=_76; +_DOMElement.style.display=_76?"none":"block"; +} +}),new objj_method(sel_getUid("hidden"),function(_77,_78){ +with(_77){ +return _isHidden; +} +}),new objj_method(sel_getUid("isHidden"),function(_79,_7a){ +with(_79){ +return _isHidden; +} +}),new objj_method(sel_getUid("setMasksToBounds:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_masksToBounds==_7d){ +return; +} +_masksToBounds=_7d; +_DOMElement.style.overflow=_masksToBounds?"hidden":"visible"; +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_7e,_7f,_80){ +with(_7e){ +_backgroundColor=_80; +objj_msgSend(_7e,"setNeedsDisplay"); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_81,_82){ +with(_81){ +return _backgroundColor; +} +}),new objj_method(sel_getUid("sublayers"),function(_83,_84){ +with(_83){ +return _sublayers; +} +}),new objj_method(sel_getUid("superlayer"),function(_85,_86){ +with(_85){ +return _superlayer; +} +}),new objj_method(sel_getUid("addSublayer:"),function(_87,_88,_89){ +with(_87){ +objj_msgSend(_87,"insertSublayer:atIndex:",_89,_sublayers.length); +return; +if(_DOMContentsElement&&_89._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"addObject:",_89); +_DOMElement.appendChild(_89._DOMElement); +} +}),new objj_method(sel_getUid("removeFromSuperlayer"),function(_8a,_8b){ +with(_8a){ +if(_owningView){ +objj_msgSend(_owningView,"setLayer:",nil); +} +if(!_superlayer){ +return; +} +_superlayer._DOMElement.removeChild(_DOMElement); +objj_msgSend(_superlayer._sublayers,"removeObject:",_8a); +_superlayer=nil; +} +}),new objj_method(sel_getUid("insertSublayer:atIndex:"),function(_8c,_8d,_8e,_8f){ +with(_8c){ +if(!_8e){ +return; +} +var _90=objj_msgSend(_8e,"superlayer"); +if(_90==_8c){ +var _91=objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_8e); +if(_91==_8f){ +return; +} +objj_msgSend(_sublayers,"removeObjectAtIndex:",_91); +if(_91<_8f){ +--_8f; +} +}else{ +if(_90!=nil){ +objj_msgSend(_8e,"removeFromSuperlayer"); +} +} +if(_DOMContentsElement&&_8e._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"insertObject:atIndex:",_8e,_8f); +if(_8f>=_sublayers.length-1){ +_DOMElement.appendChild(_8e._DOMElement); +}else{ +_DOMElement.insertBefore(_8e._DOMElement,_sublayers[_8f+1]._DOMElement); +} +_8e._superlayer=_8c; +if(_8c!=_90){ +_CALayerRecalculateGeometry(_8e,268435455); +} +} +}),new objj_method(sel_getUid("insertSublayer:below:"),function(_92,_93,_94,_95){ +with(_92){ +var _96=_95?objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_95):0; +objj_msgSend(_92,"insertSublayer:atIndex:",_94,_96==CPNotFound?_sublayers.length:_96); +} +}),new objj_method(sel_getUid("insertSublayer:above:"),function(_97,_98,_99,_9a){ +with(_97){ +var _9b=_9a?objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_9a):_sublayers.length; +if(_9b==CPNotFound){ +objj_msgSend(CPException,"raise:reason:","CALayerNotFoundException","aSublayer is not a sublayer of this layer"); +} +objj_msgSend(_sublayers,"insertObject:atIndex:",_99,_9b==CPNotFound?_sublayers.length:_9b+1); +} +}),new objj_method(sel_getUid("replaceSublayer:with:"),function(_9c,_9d,_9e,_9f){ +with(_9c){ +if(_9e==_9f){ +return; +} +if(_9e._superlayer!=_9c){ +alert("EXCEPTION"); +return; +} +if(_DOMContentsElement&&_9f._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"replaceObjectAtIndex:withObject:",objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_9e),_9f); +_DOMElement.replaceChild(_9e._DOMElement,_9f._DOMElement); +} +}),new objj_method(sel_getUid("registerRunLoopUpdateWithMask:"),function(_a0,_a1,_a2){ +with(_a0){ +if(_2e==nil){ +_2e={}; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("runLoopUpdateLayers"),CALayer,nil,0,[CPDefaultRunLoopMode]); +} +_runLoopUpdateMask|=_a2; +_2e[objj_msgSend(_a0,"UID")]=_a0; +} +}),new objj_method(sel_getUid("setNeedsComposite"),function(_a3,_a4){ +with(_a3){ +objj_msgSend(_a3,"registerRunLoopUpdateWithMask:",_2c); +} +}),new objj_method(sel_getUid("setNeedsDisplay"),function(_a5,_a6){ +with(_a5){ +objj_msgSend(_a5,"registerRunLoopUpdateWithMask:",_2b); +} +}),new objj_method(sel_getUid("setNeedsDisplayOnBoundsChange:"),function(_a7,_a8,_a9){ +with(_a7){ +_needsDisplayOnBoundsChange=_a9; +} +}),new objj_method(sel_getUid("needsDisplayOnBoundsChange"),function(_aa,_ab){ +with(_aa){ +return _needsDisplayOnBoundsChange; +} +}),new objj_method(sel_getUid("setNeedsDisplayInRect:"),function(_ac,_ad,_ae){ +with(_ac){ +_dirtyRect=_ae; +objj_msgSend(_ac,"display"); +} +}),new objj_method(sel_getUid("convertPoint:fromLayer:"),function(_af,_b0,_b1,_b2){ +with(_af){ +return CGPointApplyAffineTransform(_b1,_CALayerGetTransform(_b2,_af)); +} +}),new objj_method(sel_getUid("convertPoint:toLayer:"),function(_b3,_b4,_b5,_b6){ +with(_b3){ +return CGPointApplyAffineTransform(_b5,_CALayerGetTransform(_b3,_b6)); +} +}),new objj_method(sel_getUid("convertRect:fromLayer:"),function(_b7,_b8,_b9,_ba){ +with(_b7){ +return CGRectApplyAffineTransform(_b9,_CALayerGetTransform(_ba,_b7)); +} +}),new objj_method(sel_getUid("convertRect:toLayer:"),function(_bb,_bc,_bd,_be){ +with(_bb){ +return CGRectApplyAffineTransform(_bd,_CALayerGetTransform(_bb,_be)); +} +}),new objj_method(sel_getUid("containsPoint:"),function(_bf,_c0,_c1){ +with(_bf){ +return (_c1.x>=(_bounds.origin.x)&&_c1.y>=(_bounds.origin.y)&&_c1.x<(_bounds.origin.x+_bounds.size.width)&&_c1.y<(_bounds.origin.y+_bounds.size.height)); +} +}),new objj_method(sel_getUid("hitTest:"),function(_c2,_c3,_c4){ +with(_c2){ +if(_isHidden){ +return nil; +} +var _c5=CGPointApplyAffineTransform(_c4,_transformToLayer); +if(!(_c5.x>=(_bounds.origin.x)&&_c5.y>=(_bounds.origin.y)&&_c5.x<(_bounds.origin.x+_bounds.size.width)&&_c5.y<(_bounds.origin.y+_bounds.size.height))){ +return nil; +} +var _c6=nil,_c7=_sublayers.length; +while(_c7--){ +if(_c6=objj_msgSend(_sublayers[_c7],"hitTest:",_c5)){ +return _c6; +} +} +return _c2; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_c8,_c9,_ca){ +with(_c8){ +if(_delegate==_ca){ +return; +} +_delegate=_ca; +_delegateRespondsToDisplayLayerSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("displayLayer:")); +_delegateRespondsToDrawLayerInContextSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("drawLayer:inContext:")); +if(_delegateRespondsToDisplayLayerSelector||_delegateRespondsToDrawLayerInContextSelector){ +objj_msgSend(_c8,"setNeedsDisplay"); +} +} +}),new objj_method(sel_getUid("delegate"),function(_cb,_cc){ +with(_cb){ +return _delegate; +} +}),new objj_method(sel_getUid("_setOwningView:"),function(_cd,_ce,_cf){ +with(_cd){ +_owningView=_cf; +if(_owningView){ +_owningView=_cf; +_bounds.size=CGSizeMakeCopy(objj_msgSend(_owningView,"bounds").size); +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +} +_CALayerRecalculateGeometry(_cd,_23|_22); +} +}),new objj_method(sel_getUid("_owningViewBoundsChanged"),function(_d0,_d1){ +with(_d0){ +_bounds.size=CGSizeMakeCopy(objj_msgSend(_owningView,"bounds").size); +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +_CALayerRecalculateGeometry(_d0,_23|_22); +} +}),new objj_method(sel_getUid("_update"),function(_d2,_d3){ +with(_d2){ +window.loop=true; +var _d4=_runLoopUpdateMask; +if(_d4&_2d){ +_CALayerUpdateDOM(_d2,_d4); +} +if(_d4&_2b){ +objj_msgSend(_d2,"display"); +}else{ +if(_d4&_29||_d4&_2c){ +objj_msgSend(_d2,"composite"); +} +} +_runLoopUpdateMask=0; +window.loop=false; +} +})]); +class_addMethods(_30,[new objj_method(sel_getUid("layer"),function(_d5,_d6){ +with(_d5){ +return objj_msgSend(objj_msgSend(objj_msgSend(_d5,"class"),"alloc"),"init"); +} +}),new objj_method(sel_getUid("runLoopUpdateLayers"),function(_d7,_d8){ +with(_d7){ +for(UID in _2e){ +var _d9=_2e[UID],_da=_d9._runLoopUpdateMask; +if(_da&_2d){ +_CALayerUpdateDOM(_d9,_da); +} +if(_da&_2b){ +objj_msgSend(_d9,"display"); +}else{ +if(_da&_29||_da&_2c){ +objj_msgSend(_d9,"composite"); +} +} +_d9._runLoopUpdateMask=0; +} +window.loop=false; +_2e=nil; +} +})]); +_CALayerUpdateSublayerTransformForSublayers=function(_db){ +var _dc=_db._bounds,_dd=_db._anchorPoint,_de=(_dc.size.width)*_dd.x,_df=(_dc.size.height)*_dd.y; +_db._sublayerTransformForSublayers=CGAffineTransformConcat(CGAffineTransformMakeTranslation(-_de,-_df),CGAffineTransformConcat(_db._sublayerTransform,CGAffineTransformMakeTranslation(_de,_df))); +}; +_CALayerUpdateDOM=function(_e0,_e1){ +var _e2=_e0._DOMElement.style; +if(_e1&_2a){ +_e2.zIndex=_e0._zPosition; +} +var _e3=_e0._backingStoreFrame; +if(_e1&_28){ +_e2.top=ROUND((_e3.origin.y))+"px"; +_e2.left=ROUND((_e3.origin.x))+"px"; +} +if(_e1&_29){ +var _e4=MAX(0,ROUND((_e3.size.width))),_e5=MAX(0,ROUND((_e3.size.height))),_e6=_e0._DOMContentsElement; +_e2.width=_e4+"px"; +_e2.height=_e5+"px"; +if(_e6){ +_e6.width=_e4; +_e6.height=_e5; +_e6.style.width=_e4+"px"; +_e6.style.height=_e5+"px"; +} +} +}; +_CALayerRecalculateGeometry=function(_e7,_e8){ +var _e9=_e7._bounds,_ea=_e7._superlayer,_eb=(_e9.size.width),_ec=(_e9.size.height),_ed=_e7._position,_ee=_e7._anchorPoint,_ef=_e7._affineTransform,_f0={width:_e7._backingStoreFrame.width,height:_e7._backingStoreFrame.height},_f1=_e7._hasCustomBackingStoreFrame; +_e7._transformFromLayer=CGAffineTransformConcat(CGAffineTransformMakeTranslation(-_eb*_ee.x-(_e7._bounds.origin.x),-_ec*_ee.y-(_e7._bounds.origin.y)),CGAffineTransformConcat(_ef,CGAffineTransformMakeTranslation(_ed.x,_ed.y))); +if(_ea&&_ea._hasSublayerTransform){ +var tx=_e7._transformFromLayer.tx*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.ty*_ea._sublayerTransformForSublayers.c+_ea._sublayerTransformForSublayers.tx; +_e7._transformFromLayer.ty=_e7._transformFromLayer.tx*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.ty*_ea._sublayerTransformForSublayers.d+_ea._sublayerTransformForSublayers.ty; +_e7._transformFromLayer.tx=tx; +var a=_e7._transformFromLayer.a*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.b*_ea._sublayerTransformForSublayers.c,b=_e7._transformFromLayer.a*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.b*_ea._sublayerTransformForSublayers.d,c=_e7._transformFromLayer.c*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.d*_ea._sublayerTransformForSublayers.c; +_e7._transformFromLayer.d=_e7._transformFromLayer.c*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.d*_ea._sublayerTransformForSublayers.d; +_e7._transformFromLayer.a=a; +_e7._transformFromLayer.b=b; +_e7._transformFromLayer.c=c; +} +_e7._transformToLayer=CGAffineTransformInvert(_e7._transformFromLayer); +_e7._frame=nil; +_e7._standardBackingStoreFrame=objj_msgSend(_e7,"convertRect:toLayer:",_e9,nil); +if(_ea){ +var _e9=objj_msgSend(_ea,"bounds"),_f2=objj_msgSend(_ea,"convertRect:toLayer:",_e9,nil); +_e7._standardBackingStoreFrame.origin.x-=(_f2.origin.x); +_e7._standardBackingStoreFrame.origin.y-=(_f2.origin.y); +} +var _f3=_e7._standardBackingStoreFrame.origin,_f4=_e7._standardBackingStoreFrame.size; +_f3.x=FLOOR(_f3.x); +_f3.y=FLOOR(_f3.y); +_f4.width=CEIL(_f4.width)+1; +_f4.height=CEIL(_f4.height)+1; +if(!_f1){ +var _f5=CGRectMakeCopy(_e7._standardBackingStoreFrame); +if(ROUND((_f5.origin.x))!=ROUND((_e7._backingStoreFrame.origin.x))||ROUND((_f5.origin.y))!=ROUND((_e7._backingStoreFrame.origin.y))){ +objj_msgSend(_e7,"registerRunLoopUpdateWithMask:",_28); +} +if(((_f5.size.width)!=ROUND((_e7._backingStoreFrame.size.width))||(_f5.size.height)!=ROUND((_e7._backingStoreFrame.size.height)))){ +objj_msgSend(_e7,"registerRunLoopUpdateWithMask:",_29); +} +_e7._backingStoreFrame=_f5; +} +if(_e8&_22&&_e7._needsDisplayOnBoundsChange){ +objj_msgSend(_e7,"setNeedsDisplay"); +}else{ +if(_f1||(_e8&~(_23|_24))){ +objj_msgSend(_e7,"setNeedsComposite"); +} +} +var _f6=_e7._sublayers,_f7=0,_f8=_f6.length; +for(;_f7<_f8;++_f7){ +_CALayerRecalculateGeometry(_f6[_f7],_e8); +} +}; +_CALayerGetTransform=function(_f9,_fa){ +var _fb=CGAffineTransformMakeIdentity(); +if(_f9){ +var _fc=_f9; +while(_fc&&_fc!=_fa){ +var _fd=_fc._transformFromLayer; +var tx=_fb.tx*_fd.a+_fb.ty*_fd.c+_fd.tx; +_fb.ty=_fb.tx*_fd.b+_fb.ty*_fd.d+_fd.ty; +_fb.tx=tx; +var a=_fb.a*_fd.a+_fb.b*_fd.c,b=_fb.a*_fd.b+_fb.b*_fd.d,c=_fb.c*_fd.a+_fb.d*_fd.c; +_fb.d=_fb.c*_fd.b+_fb.d*_fd.d; +_fb.a=a; +_fb.b=b; +_fb.c=c; +_fc=_fc._superlayer; +} +if(_fc==_fa){ +return _fb; +} +} +var _fe=[],_fc=_fa; +while(_fc){ +_fe.push(_fc); +_fc=_fc._superlayer; +} +var _ff=_fe.length; +while(_ff--){ +var _100=_fe[_ff]._transformToLayer; +var tx=_fb.tx*_100.a+_fb.ty*_100.c+_100.tx; +_fb.ty=_fb.tx*_100.b+_fb.ty*_100.d+_100.ty; +_fb.tx=tx; +var a=_fb.a*_100.a+_fb.b*_100.c,b=_fb.a*_100.b+_fb.b*_100.d,c=_fb.c*_100.a+_fb.d*_100.c; +_fb.d=_fb.c*_100.b+_fb.d*_100.d; +_fb.a=a; +_fb.b=b; +_fb.c=c; +} +return _fb; +}; +p;23;CAMediaTimingFunction.jt;2263;@STATIC;1.0;I;21;Foundation/CPObject.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;2162; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +kCAMediaTimingFunctionLinear="kCAMediaTimingFunctionLinear"; +kCAMediaTimingFunctionEaseIn="kCAMediaTimingFunctionEaseIn"; +kCAMediaTimingFunctionEaseOut="kCAMediaTimingFunctionEaseOut"; +kCAMediaTimingFunctionEaseInEaseOut="kCAMediaTimingFunctionEaseInEaseOut"; +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CAMediaTimingFunction"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_c1x"),new objj_ivar("_c1y"),new objj_ivar("_c2x"),new objj_ivar("_c2y")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithControlPoints::::"),function(_4,_5,_6,_7,_8,_9){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CAMediaTimingFunction").super_class},"init"); +if(_4){ +_c1x=_6; +_c1y=_7; +_c2x=_8; +_c2y=_9; +} +return _4; +} +}),new objj_method(sel_getUid("getControlPointAtIndex:values:"),function(_a,_b,_c,_d){ +with(_a){ +if(_c==0){ +_d[0]=0; +_d[1]=0; +}else{ +if(_c==1){ +_d[0]=_c1x; +_d[1]=_c1y; +}else{ +if(_c==2){ +_d[0]=_c2x; +_d[1]=_c2y; +}else{ +_d[0]=1; +_d[1]=1; +} +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("functionWithName:"),function(_e,_f,_10){ +with(_e){ +if(!_1){ +_1=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0,0,1,1),kCAMediaTimingFunctionLinear); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0.42,0,1,1),kCAMediaTimingFunctionEaseIn); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0,0,0.58,1),kCAMediaTimingFunctionEaseOut); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0.42,0,0.58,1),kCAMediaTimingFunctionEaseInEaseOut); +} +return objj_msgSend(_1,"objectForKey:",_10); +} +}),new objj_method(sel_getUid("functionWithControlPoints::::"),function(_11,_12,c1x,c1y,c2x,c2y){ +with(_11){ +return objj_msgSend(objj_msgSend(_11,"alloc"),"initWithControlPoints::::",c1x,c1y,c2x,c2y); +} +})]); +p;19;CGAffineTransform.jt;2936;@STATIC;1.0;i;12;CGGeometry.jt;2900; +objj_executeFile("CGGeometry.j",YES); +CGAffineTransformMake=function(a,b,c,d,tx,ty){ +return {a:a,b:b,c:c,d:d,tx:tx,ty:ty}; +}; +CGAffineTransformMakeIdentity=function(){ +return {a:1,b:0,c:0,d:1,tx:0,ty:0}; +}; +CGAffineTransformMakeCopy=function(_1){ +return {a:_1.a,b:_1.b,c:_1.c,d:_1.d,tx:_1.tx,ty:_1.ty}; +}; +CGAffineTransformMakeScale=function(sx,sy){ +return {a:sx,b:0,c:0,d:sy,tx:0,ty:0}; +}; +CGAffineTransformMakeTranslation=function(tx,ty){ +return {a:1,b:0,c:0,d:1,tx:tx,ty:ty}; +}; +CGAffineTransformTranslate=function(_2,tx,ty){ +return {a:_2.a,b:_2.b,c:_2.c,d:_2.d,tx:_2.tx+_2.a*tx+_2.c*ty,ty:_2.ty+_2.b*tx+_2.d*ty}; +}; +CGAffineTransformScale=function(_3,sx,sy){ +return {a:_3.a*sx,b:_3.b*sx,c:_3.c*sy,d:_3.d*sy,tx:_3.tx,ty:_3.ty}; +}; +CGAffineTransformConcat=function(_4,_5){ +return {a:_4.a*_5.a+_4.b*_5.c,b:_4.a*_5.b+_4.b*_5.d,c:_4.c*_5.a+_4.d*_5.c,d:_4.c*_5.b+_4.d*_5.d,tx:_4.tx*_5.a+_4.ty*_5.c+_5.tx,ty:_4.tx*_5.b+_4.ty*_5.d+_5.ty}; +}; +CGPointApplyAffineTransform=function(_6,_7){ +return {x:_6.x*_7.a+_6.y*_7.c+_7.tx,y:_6.x*_7.b+_6.y*_7.d+_7.ty}; +}; +CGSizeApplyAffineTransform=function(_8,_9){ +return {width:_8.width*_9.a+_8.height*_9.c,height:_8.width*_9.b+_8.height*_9.d}; +}; +CGAffineTransformIsIdentity=function(_a){ +return (_a.a==1&&_a.b==0&&_a.c==0&&_a.d==1&&_a.tx==0&&_a.ty==0); +}; +CGAffineTransformEqualToTransform=function(_b,_c){ +return (_b.a==_c.a&&_b.b==_c.b&&_b.c==_c.c&&_b.d==_c.d&&_b.tx==_c.tx&&_b.ty==_c.ty); +}; +CGStringCreateWithCGAffineTransform=function(_d){ +return (" [[ "+_d.a+", "+_d.b+", 0 ], [ "+_d.c+", "+_d.d+", 0 ], [ "+_d.tx+", "+_d.ty+", 1]]"); +}; +CGAffineTransformCreateCopy=function(_e){ +return {a:_e.a,b:_e.b,c:_e.c,d:_e.d,tx:_e.tx,ty:_e.ty}; +}; +CGAffineTransformMakeRotation=function(_f){ +var sin=SIN(_f),cos=COS(_f); +return {a:cos,b:sin,c:-sin,d:cos,tx:0,ty:0}; +}; +CGAffineTransformRotate=function(_10,_11){ +var sin=SIN(_11),cos=COS(_11); +return {a:_10.a*cos+_10.c*sin,b:_10.b*cos+_10.d*sin,c:_10.c*cos-_10.a*sin,d:_10.d*cos-_10.b*sin,tx:_10.tx,ty:_10.ty}; +}; +CGAffineTransformInvert=function(_12){ +var _13=1/(_12.a*_12.d-_12.b*_12.c); +return {a:_13*_12.d,b:-_13*_12.b,c:-_13*_12.c,d:_13*_12.a,tx:_13*(_12.c*_12.ty-_12.d*_12.tx),ty:_13*(_12.b*_12.tx-_12.a*_12.ty)}; +}; +CGRectApplyAffineTransform=function(_14,_15){ +var top=(_14.origin.y),_16=(_14.origin.x),_17=(_14.origin.x+_14.size.width),_18=(_14.origin.y+_14.size.height),_19=CGPointApplyAffineTransform({x:_16,y:top},_15),_1a=CGPointApplyAffineTransform({x:_17,y:top},_15),_1b=CGPointApplyAffineTransform({x:_16,y:_18},_15),_1c=CGPointApplyAffineTransform({x:_17,y:_18},_15),_1d=MIN(_19.x,_1a.x,_1b.x,_1c.x),_1e=MAX(_19.x,_1a.x,_1b.x,_1c.x),_1f=MIN(_19.y,_1a.y,_1b.y,_1c.y),_20=MAX(_19.y,_1a.y,_1b.y,_1c.y); +return {origin:{x:_1d,y:_1f},size:{width:(_1e-_1d),height:(_20-_1f)}}; +}; +CPStringFromCGAffineTransform=function(_21){ +return "{"+_21.a+", "+_21.b+", "+_21.c+", "+_21.d+", "+_21.tx+", "+_21.ty+"}"; +}; +p;9;CGColor.jt;2143;@STATIC;1.0;i;14;CGColorSpace.jt;2105; +objj_executeFile("CGColorSpace.j",YES); +var _1=0; +CFHashCode=function(_2){ +if(!_2.hash){ +_2.hash=++_1; +} +return _2; +}; +kCGColorWhite="kCGColorWhite"; +kCGColorBlack="kCGColorBlack"; +kCGColorClear="kCGColorClear"; +var _3={}; +CGColorGetConstantColor=function(_4){ +alert("FIX ME"); +}; +CGColorRetain=function(_5){ +return _5; +}; +CGColorRelease=function(){ +}; +CGColorCreate=function(_6,_7){ +if(!_6||!_7){ +return NULL; +} +var _7=_7.slice(); +CGColorSpaceStandardizeComponents(_6,_7); +var _8=CFHashCode(_6)+_7.join(""); +if(_3[_8]){ +return _3[_8]; +} +return _3[_8]={colorspace:_6,pattern:NULL,components:_7}; +}; +CGColorCreateCopy=function(_9){ +return _9; +}; +CGColorCreateGenericGray=function(_a,_b){ +return CGColorCreate(0,[_a,_b]); +}; +CGColorCreateGenericRGB=function(_c,_d,_e,_f){ +return CGColorCreate(0,[_c,_d,_e,_f]); +}; +CGColorCreateGenericCMYK=function(_10,_11,_12,_13,_14){ +return CGColorCreate(0,[_10,_11,_12,_13,_14]); +}; +CGColorCreateCopyWithAlpha=function(_15,_16){ +var _17=_15.components; +if(!_15||_16==_17[_17.length-1]){ +return _15; +} +if(_15.pattern){ +var _18=CGColorCreateWithPattern(_15.colorspace,_15.pattern,_17); +}else{ +var _18=CGColorCreate(_15.colorspace,_17); +} +_18.components[_17.length-1]=_16; +return _18; +}; +CGColorCreateWithPattern=function(_19,_1a,_1b){ +if(!_19||!_1a||!_1b){ +return NULL; +} +return {colorspace:_19,pattern:_1a,components:_1b.slice()}; +}; +CGColorEqualToColor=function(lhs,rhs){ +if(lhs==rhs){ +return true; +} +if(!lhs||!rhs){ +return false; +} +var _1c=lhs.components,_1d=rhs.components,_1e=_1c.length; +if(_1e!=_1d.length){ +return false; +} +while(_1e--){ +if(_1c[_1e]!=_1d[_1e]){ +return false; +} +} +if(lhs.pattern!=rhs.pattern){ +return false; +} +if(CGColorSpaceEqualToColorSpace(lhs.colorspace,rhs.colorspace)){ +return false; +} +return true; +}; +CGColorGetAlpha=function(_1f){ +var _20=_1f.components; +return _20[_20.length-1]; +}; +CGColorGetColorSpace=function(_21){ +return _21.colorspace; +}; +CGColorGetComponents=function(_22){ +return _22.components; +}; +CGColorGetNumberOfComponents=function(_23){ +return _23.components.length; +}; +CGColorGetPattern=function(_24){ +return _24.pattern; +}; +p;14;CGColorSpace.jt;3521;@STATIC;1.0;t;3502; +kCGColorSpaceModelUnknown=-1; +kCGColorSpaceModelMonochrome=0; +kCGColorSpaceModelRGB=1; +kCGColorSpaceModelCMYK=2; +kCGColorSpaceModelLab=3; +kCGColorSpaceModelDeviceN=4; +kCGColorSpaceModelIndexed=5; +kCGColorSpaceModelPattern=6; +kCGColorSpaceGenericGray="CGColorSpaceGenericGray"; +kCGColorSpaceGenericRGB="CGColorSpaceGenericRGB"; +kCGColorSpaceGenericCMYK="CGColorSpaceGenericCMYK"; +kCGColorSpaceGenericRGBLinear="CGColorSpaceGenericRGBLinear"; +kCGColorSpaceGenericRGBHDR="CGColorSpaceGenericRGBHDR"; +kCGColorSpaceAdobeRGB1998="CGColorSpaceAdobeRGB1998"; +kCGColorSpaceSRGB="CGColorSpaceSRGB"; +var _1={}; +CGColorSpaceCreateCalibratedGray=function(_2,_3,_4){ +return {model:kCGColorSpaceModelMonochrome,count:1,base:NULL}; +}; +CGColorSpaceCreateCalibratedRGB=function(_5,_6,_7){ +return {model:kCGColorSpaceModelRGB,count:1,base:NULL}; +}; +CGColorSpaceCreateICCBased=function(_8,_9,_a,_b){ +return NULL; +}; +CGColorSpaceCreateLab=function(_c,_d,_e){ +return NULL; +}; +CGColorSpaceCreateDeviceCMYK=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericCMYK); +}; +CGColorSpaceCreateDeviceGray=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericGray); +}; +CGColorSpaceCreateDeviceRGB=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); +}; +CGColorSpaceCreateWithPlatformColorSpace=function(){ +return NULL; +}; +CGColorSpaceCreateIndexed=function(_f,_10,_11){ +return NULL; +}; +CGColorSpaceCreatePattern=function(_12){ +if(_12){ +return {model:kCGColorSpaceModelPattern,count:_12.count,base:_12}; +} +return {model:kCGColorSpaceModelPattern,count:0,base:NULL}; +}; +CGColorSpaceCreateWithName=function(_13){ +var _14=_1[_13]; +if(_14){ +return _14; +} +switch(_13){ +case kCGColorSpaceGenericGray: +return _1[_13]={model:kCGColorSpaceModelMonochrome,count:1,base:NULL}; +case kCGColorSpaceGenericRGB: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceGenericCMYK: +return _1[_13]={model:kCGColorSpaceModelCMYK,count:4,base:NULL}; +case kCGColorSpaceGenericRGBLinear: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceGenericRGBHDR: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceAdobeRGB1998: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceSRGB: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +} +return NULL; +}; +CGColorSpaceCopyICCProfile=function(_15){ +return NULL; +}; +CGColorSpaceGetNumberOfComponents=function(_16){ +return _16.count; +}; +CGColorSpaceGetTypeID=function(_17){ +}; +CGColorSpaceGetModel=function(_18){ +return _18.model; +}; +CGColorSpaceGetBaseColorSpace=function(_19){ +}; +CGColorSpaceGetColorTableCount=function(_1a){ +}; +CGColorSpaceGetColorTable=function(_1b){ +}; +CGColorSpaceRelease=function(_1c){ +}; +CGColorSpaceRetain=function(_1d){ +return _1d; +}; +CGColorSpaceStandardizeComponents=function(_1e,_1f){ +var _20=_1e.count; +if(_20>_1f.length){ +_1f[_20]=1; +return; +} +var _21=_1f[_20]; +if(_21<0){ +_1f[_20]=0; +}else{ +if(_21>1){ +_1f[_20]=1; +}else{ +_1f[_20]=ROUND(_21*1000)/1000; +} +} +if(_1e.base){ +_1e=_1e.base; +} +switch(_1e.model){ +case kCGColorSpaceModelMonochrome: +case kCGColorSpaceModelRGB: +case kCGColorSpaceModelCMYK: +case kCGColorSpaceModelDeviceN: +while(_20--){ +if(_20>_1f.length){ +_1f[_20]=1; +return; +} +var _21=_1f[_20]; +if(_21<0){ +_1f[_20]=0; +}else{ +if(_21>1){ +_1f[_20]=1; +}else{ +_1f[_20]=ROUND(_21*255)/255; +} +} +} +break; +case kCGColorSpaceModelIndexed: +case kCGColorSpaceModelLab: +case kCGColorSpaceModelPattern: +break; +} +}; +p;11;CGContext.jt;20418;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.ji;8;CGPath.jt;20345; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CGAffineTransform.j",YES); +objj_executeFile("CGPath.j",YES); +kCGLineCapButt=0; +kCGLineCapRound=1; +kCGLineCapSquare=2; +kCGLineJoinMiter=0; +kCGLineJoinRound=1; +kCGLineJoinBevel=2; +kCGPathFill=0; +kCGPathEOFill=1; +kCGPathStroke=2; +kCGPathFillStroke=3; +kCGPathEOFillStroke=4; +kCGBlendModeNormal=0; +kCGBlendModeMultiply=1; +kCGBlendModeScreen=2; +kCGBlendModeOverlay=3; +kCGBlendModeDarken=4; +kCGBlendModeLighten=5; +kCGBlendModeColorDodge=6; +kCGBlendModeColorBurn=7; +kCGBlendModeSoftLight=8; +kCGBlendModeHardLight=9; +kCGBlendModeDifference=10; +kCGBlendModeExclusion=11; +kCGBlendModeHue=12; +kCGBlendModeSaturation=13; +kCGBlendModeColor=14; +kCGBlendModeLuminosity=15; +kCGBlendModeClear=16; +kCGBlendModeCopy=17; +kCGBlendModeSourceIn=18; +kCGBlendModeSourceOut=19; +kCGBlendModeSourceAtop=20; +kCGBlendModeDestinationOver=21; +kCGBlendModeDestinationIn=22; +kCGBlendModeDestinationOut=23; +kCGBlendModeDestinationAtop=24; +kCGBlendModeXOR=25; +kCGBlendModePlusDarker=26; +kCGBlendModePlusLighter=27; +CGContextRelease=function(){ +}; +CGContextRetain=function(_1){ +return _1; +}; +if(!CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +CGGStateCreate=function(){ +return {alpha:1,strokeStyle:"#000",fillStyle:"#ccc",lineWidth:1,lineJoin:kCGLineJoinMiter,lineCap:kCGLineCapButt,miterLimit:10,globalAlpha:1,blendMode:kCGBlendModeNormal,shadowOffset:{width:0,height:0},shadowBlur:0,shadowColor:NULL,CTM:{a:1,b:0,c:0,d:1,tx:0,ty:0}}; +}; +CGGStateCreateCopy=function(_2){ +return {alpha:_2.alpha,strokeStyle:_2.strokeStyle,fillStyle:_2.fillStyle,lineWidth:_2.lineWidth,lineJoin:_2.lineJoin,lineCap:_2.lineCap,miterLimit:_2.miterLimit,globalAlpha:_2.globalAlpha,blendMode:_2.blendMode,shadowOffset:_2.shadowOffset,shadowBlur:_2.shadowBlur,shadowColor:_2.shadowColor,CTM:{a:_2.CTM.a,b:_2.CTM.b,c:_2.CTM.c,d:_2.CTM.d,tx:_2.CTM.tx,ty:_2.CTM.ty}}; +}; +CGBitmapGraphicsContextCreate=function(){ +return {DOMElement:document.createElement("div"),path:NULL,gState:CGGStateCreate(),gStateStack:[]}; +}; +CGContextSaveGState=function(_3){ +_3.gStateStack.push(CGGStateCreateCopy(_3.gState)); +}; +CGContextRestoreGState=function(_4){ +_4.gState=_4.gStateStack.pop(); +}; +CGContextSetLineCap=function(_5,_6){ +_5.gState.lineCap=_6; +}; +CGContextSetLineJoin=function(_7,_8){ +_7.gState.lineJoin=_8; +}; +CGContextSetLineWidth=function(_9,_a){ +_9.gState.lineWidth=_a; +}; +CGContextSetMiterLimit=function(_b,_c){ +_b.gState.miterLimit=_c; +}; +CGContextSetBlendMode=function(_d,_e){ +_d.gState.blendMode=_e; +}; +CGContextAddArc=function(_f,x,y,_10,_11,_12,_13){ +CGPathAddArc(_f.path,_f.gState.CTM,x,y,_10,_11,_12,_13); +}; +CGContextAddArcToPoint=function(_14,x1,y1,x2,y2,_15){ +CGPathAddArcToPoint(_14.path,_14.gState.CTM,x1,y1,x2,y2,_15); +}; +CGContextAddCurveToPoint=function(_16,_17,_18,_19,_1a,x,y){ +CGPathAddCurveToPoint(_16.path,_16.gState.CTM,_17,_18,_19,_1a,x,y); +}; +CGContextAddLines=function(_1b,_1c,_1d){ +CGPathAddLines(_1b.path,_1b.gState.CTM,_1c,_1d); +}; +CGContextAddLineToPoint=function(_1e,x,y){ +CGPathAddLineToPoint(_1e.path,_1e.gState.CTM,x,y); +}; +CGContextAddPath=function(_1f,_20){ +if(!_1f||CGPathIsEmpty(_20)){ +return; +} +if(!_1f.path){ +_1f.path=CGPathCreateMutable(); +} +CGPathAddPath(_1f.path,_1f.gState.CTM,_20); +}; +CGContextAddQuadCurveToPoint=function(_21,cpx,cpy,x,y){ +CGPathAddQuadCurveToPoint(_21.path,_21.gState.CTM,cpx,cpy,x,y); +}; +CGContextAddRect=function(_22,_23){ +CGPathAddRect(_22.path,_22.gState.CTM,_23); +}; +CGContextAddRects=function(_24,_25,_26){ +CGPathAddRects(_24.path,_24.gState.CTM,_25,_26); +}; +CGContextBeginPath=function(_27){ +_27.path=CGPathCreateMutable(); +}; +CGContextClosePath=function(_28){ +CGPathCloseSubpath(_28.path); +}; +CGContextMoveToPoint=function(_29,x,y){ +if(!_29.path){ +_29.path=CGPathCreateMutable(); +} +CGPathMoveToPoint(_29.path,_29.gState.CTM,x,y); +}; +CGContextFillRect=function(_2a,_2b){ +CGContextFillRects(_2a,[_2b],1); +}; +CGContextFillRects=function(_2c,_2d,_2e){ +if(arguments[2]===undefined){ +var _2e=_2d.length; +} +CGContextBeginPath(_2c); +CGContextAddRects(_2c,_2d,_2e); +CGContextClosePath(_2c); +CGContextDrawPath(_2c,kCGPathFill); +}; +CGContextStrokeRect=function(_2f,_30){ +CGContextBeginPath(_2f); +CGContextAddRect(_2f,_30); +CGContextClosePath(_2f); +CGContextDrawPath(_2f,kCGPathStroke); +}; +CGContextStrokeRectWithWidth=function(_31,_32,_33){ +CGContextSaveGState(_31); +CGContextSetLineWidth(_31,_33); +CGContextStrokeRect(_31,_32); +CGContextRestoreGState(_31); +}; +CGContextConcatCTM=function(_34,_35){ +var CTM=_34.gState.CTM; +var tx=CTM.tx*_35.a+CTM.ty*_35.c+_35.tx; +CTM.ty=CTM.tx*_35.b+CTM.ty*_35.d+_35.ty; +CTM.tx=tx; +var a=CTM.a*_35.a+CTM.b*_35.c,b=CTM.a*_35.b+CTM.b*_35.d,c=CTM.c*_35.a+CTM.d*_35.c; +CTM.d=CTM.c*_35.b+CTM.d*_35.d; +CTM.a=a; +CTM.b=b; +CTM.c=c; +}; +CGContextGetCTM=function(_36){ +return _36.gState.CTM; +}; +CGContextRotateCTM=function(_37,_38){ +var _39=_37.gState; +_39.CTM=CGAffineTransformRotate(_39.CTM,_38); +}; +CGContextScaleCTM=function(_3a,sx,sy){ +var _3b=_3a.gState; +_3b.CTM={a:_3b.CTM.a*sx,b:_3b.CTM.b*sx,c:_3b.CTM.c*sy,d:_3b.CTM.d*sy,tx:_3b.CTM.tx,ty:_3b.CTM.ty}; +}; +CGContextTranslateCTM=function(_3c,tx,ty){ +var _3d=_3c.gState; +_3d.CTM={a:_3d.CTM.a,b:_3d.CTM.b,c:_3d.CTM.c,d:_3d.CTM.d,tx:_3d.CTM.tx+_3d.CTM.a*tx+_3d.CTM.c*ty,ty:_3d.CTM.ty+_3d.CTM.b*tx+_3d.CTM.d*ty}; +}; +CGContextSetShadow=function(_3e,_3f,_40){ +var _41=_3e.gState; +_41.shadowOffset={width:_3f.width,height:_3f.height}; +_41.shadowBlur=_40; +_41.shadowColor=objj_msgSend(CPColor,"shadowColor"); +}; +CGContextSetShadowWithColor=function(_42,_43,_44,_45){ +var _46=_42.gState; +_46.shadowOffset={width:_43.width,height:_43.height}; +_46.shadowBlur=_44; +_46.shadowColor=_45; +}; +CGContextSetAlpha=function(_47,_48){ +_47.gState.alpha=MAX(MIN(_48,1),0); +}; +} +CGContextEOFillPath=function(_49){ +CGContextDrawPath(_49,kCGPathEOFill); +}; +CGContextFillPath=function(_4a){ +CGContextDrawPath(_4a,kCGPathFill); +}; +var _4b=4*((SQRT2-1)/3); +CGContextAddEllipseInRect=function(_4c,_4d){ +CGContextBeginPath(_4c); +CGContextAddPath(_4c,CGPathWithEllipseInRect(_4d)); +CGContextClosePath(_4c); +}; +CGContextFillEllipseInRect=function(_4e,_4f){ +CGContextBeginPath(_4e); +CGContextAddEllipseInRect(_4e,_4f); +CGContextClosePath(_4e); +CGContextFillPath(_4e); +}; +CGContextStrokeEllipseInRect=function(_50,_51){ +CGContextBeginPath(_50); +CGContextAddEllipseInRect(_50,_51); +CGContextClosePath(_50); +CGContextStrokePath(_50); +}; +CGContextStrokePath=function(_52){ +CGContextDrawPath(_52,kCGPathStroke); +}; +CGContextStrokeLineSegments=function(_53,_54,_55){ +var i=0; +if(arguments["count"]==NULL){ +var _55=_54.length; +} +CGContextBeginPath(_53); +for(;i<_55;i+=2){ +CGContextMoveToPoint(_53,_54[i].x,_54[i].y); +CGContextAddLineToPoint(_53,_54[i+1].x,_54[i+1].y); +} +CGContextStrokePath(_53); +}; +CGContextSetFillColor=function(_56,_57){ +if(_57){ +_56.gState.fillStyle=objj_msgSend(_57,"cssString"); +} +}; +CGContextSetStrokeColor=function(_58,_59){ +if(_59){ +_58.gState.strokeStyle=objj_msgSend(_59,"cssString"); +} +}; +CGContextFillRoundedRectangleInRect=function(_5a,_5b,_5c,ne,se,sw,nw){ +CGContextBeginPath(_5a); +CGContextAddPath(_5a,CGPathWithRoundedRectangleInRect(_5b,_5c,_5c,ne,se,sw,nw)); +CGContextClosePath(_5a); +CGContextFillPath(_5a); +}; +CGContextStrokeRoundedRectangleInRect=function(_5d,_5e,_5f,ne,se,sw,nw){ +CGContextBeginPath(_5d); +CGContextAddPath(_5d,CGPathWithRoundedRectangleInRect(_5e,_5f,_5f,ne,se,sw,nw)); +CGContextClosePath(_5d); +CGContextStrokePath(_5d); +}; +if(CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +var _60=["butt","round","square"],_61=["miter","round","bevel"],_62=["source-over","source-over","source-over","source-over","darker","lighter","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","copy","source-in","source-out","source-atop","destination-over","destination-in","destination-out","destination-atop","xor","source-over","source-over"]; +CGContextSaveGState=function(_63){ +_63.save(); +}; +CGContextRestoreGState=function(_64){ +_64.restore(); +}; +CGContextSetLineCap=function(_65,_66){ +_65.lineCap=_60[_66]; +}; +CGContextSetLineJoin=function(_67,_68){ +_67.lineJoin=_61[_68]; +}; +CGContextSetLineWidth=function(_69,_6a){ +_69.lineWidth=_6a; +}; +CGContextSetMiterLimit=function(_6b,_6c){ +_6b.miterLimit=_6c; +}; +CGContextSetBlendMode=function(_6d,_6e){ +_6d.globalCompositeOperation=_62[_6e]; +}; +CGContextAddArc=function(_6f,x,y,_70,_71,_72,_73){ +_6f.arc(x,y,_70,_71,_72,!_73); +}; +CGContextAddArcToPoint=function(_74,x1,y1,x2,y2,_75){ +_74.arcTo(x1,y1,x2,y2,_75); +}; +CGContextAddCurveToPoint=function(_76,_77,_78,_79,_7a,x,y){ +_76.bezierCurveTo(_77,_78,_79,_7a,x,y); +}; +CGContextAddLineToPoint=function(_7b,x,y){ +_7b.lineTo(x,y); +}; +CGContextAddPath=function(_7c,_7d){ +if(!_7c||CGPathIsEmpty(_7d)){ +return; +} +var _7e=_7d.elements,i=0,_7f=_7d.count; +for(;i<_7f;++i){ +var _80=_7e[i],_81=_80.type; +switch(_81){ +case kCGPathElementMoveToPoint: +_7c.moveTo(_80.x,_80.y); +break; +case kCGPathElementAddLineToPoint: +_7c.lineTo(_80.x,_80.y); +break; +case kCGPathElementAddQuadCurveToPoint: +_7c.quadraticCurveTo(_80.cpx,_80.cpy,_80.x,_80.y); +break; +case kCGPathElementAddCurveToPoint: +_7c.bezierCurveTo(_80.cp1x,_80.cp1y,_80.cp2x,_80.cp2y,_80.x,_80.y); +break; +case kCGPathElementCloseSubpath: +_7c.closePath(); +break; +case kCGPathElementAddArc: +_7c.arc(_80.x,_80.y,_80.radius,_80.startAngle,_80.endAngle,_80.clockwise); +break; +case kCGPathElementAddArcTo: +break; +} +} +}; +CGContextAddRect=function(_82,_83){ +_82.rect((_83.origin.x),(_83.origin.y),(_83.size.width),(_83.size.height)); +}; +CGContextAddRects=function(_84,_85,_86){ +var i=0; +if(arguments["count"]==NULL){ +var _86=_85.length; +} +for(;i<_86;++i){ +var _87=_85[i]; +_84.rect((_87.origin.x),(_87.origin.y),(_87.size.width),(_87.size.height)); +} +}; +CGContextBeginPath=function(_88){ +_88.beginPath(); +}; +CGContextClosePath=function(_89){ +_89.closePath(); +}; +CGContextMoveToPoint=function(_8a,x,y){ +_8a.moveTo(x,y); +}; +CGContextClearRect=function(_8b,_8c){ +_8b.clearRect((_8c.origin.x),(_8c.origin.y),(_8c.size.width),(_8c.size.height)); +}; +CGContextDrawPath=function(_8d,_8e){ +if(_8e==kCGPathFill||_8e==kCGPathFillStroke){ +_8d.fill(); +}else{ +if(_8e==kCGPathEOFill||_8e==kCGPathEOFillStroke){ +alert("not implemented!!!"); +} +} +if(_8e==kCGPathStroke||_8e==kCGPathFillStroke||_8e==kCGPathEOFillStroke){ +_8d.stroke(); +} +}; +CGContextFillRect=function(_8f,_90){ +_8f.fillRect((_90.origin.x),(_90.origin.y),(_90.size.width),(_90.size.height)); +}; +CGContextFillRects=function(_91,_92,_93){ +var i=0; +if(arguments["count"]==NULL){ +var _93=_92.length; +} +for(;i<_93;++i){ +var _94=_92[i]; +_91.fillRect((_94.origin.x),(_94.origin.y),(_94.size.width),(_94.size.height)); +} +}; +CGContextStrokeRect=function(_95,_96){ +_95.strokeRect((_96.origin.x),(_96.origin.y),(_96.size.width),(_96.size.height)); +}; +CGContextClip=function(_97){ +_97.clip(); +}; +CGContextClipToRect=function(_98,_99){ +_98.beginPath(); +_98.rect((_99.origin.x),(_99.origin.y),(_99.size.width),(_99.size.height)); +_98.closePath(); +_98.clip(); +}; +CGContextClipToRects=function(_9a,_9b,_9c){ +if(arguments["count"]==NULL){ +var _9c=_9b.length; +} +_9a.beginPath(); +CGContextAddRects(_9a,_9b,_9c); +_9a.clip(); +}; +CGContextSetAlpha=function(_9d,_9e){ +_9d.globalAlpha=_9e; +}; +CGContextSetFillColor=function(_9f,_a0){ +_9f.fillStyle=objj_msgSend(_a0,"cssString"); +}; +CGContextSetStrokeColor=function(_a1,_a2){ +_a1.strokeStyle=objj_msgSend(_a2,"cssString"); +}; +CGContextSetShadow=function(_a3,_a4,_a5){ +_a3.shadowOffsetX=_a4.width; +_a3.shadowOffsetY=_a4.height; +_a3.shadowBlur=_a5; +}; +CGContextSetShadowWithColor=function(_a6,_a7,_a8,_a9){ +_a6.shadowOffsetX=_a7.width; +_a6.shadowOffsetY=_a7.height; +_a6.shadowBlur=_a8; +_a6.shadowColor=objj_msgSend(_a9,"cssString"); +}; +CGContextRotateCTM=function(_aa,_ab){ +_aa.rotate(_ab); +}; +CGContextScaleCTM=function(_ac,sx,sy){ +_ac.scale(sx,sy); +}; +CGContextTranslateCTM=function(_ad,tx,ty){ +_ad.translate(tx,ty); +}; +eigen=function(_ae){ +alert("IMPLEMENT ME!"); +}; +if(CPFeatureIsCompatible(CPJavaScriptCanvasTransformFeature)){ +CGContextConcatCTM=function(_af,_b0){ +_af.transform(_b0.a,_b0.b,_b0.c,_b0.d,_b0.tx,_b0.ty); +}; +}else{ +CGContextConcatCTM=function(_b1,_b2){ +var a=_b2.a,b=_b2.b,c=_b2.c,d=_b2.d,tx=_b2.tx,ty=_b2.ty,sx=1,sy=1,a1=0,a2=0; +if(b==0&&c==0){ +sx=a; +sy=d; +}else{ +if(a*b==-c*d){ +var _b3=(a*d<0||b*c>0)?-1:1,a2=(ATAN2(b,d)+ATAN2(-_b3*c,_b3*a))/2,cos=COS(a2),sin=SIN(a2); +if(cos==0){ +sx=-c/sin; +sy=b/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +} +} +}else{ +if(a*c==-b*d){ +var _b3=(a*d<0||b*c>0)?-1:1; +a1=(Math.atan2(_b3*b,_b3*a)+Math.atan2(-c,d))/2,cos=COS(a1),sin=SIN(a1); +if(cos==0){ +sx=b/sin; +sy=-c/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +} +} +}else{ +var _b4=CGAffineTransformMake(a,c,b,d,0,0),u=eigen(CGAffineTransformConcat(_b2,_b4)),v=eigen(CGAffineTransformConcat(_b4,_b2)),U=CGAffineTransformMake(u.vector_1.x,u.vector_2.x,u.vector_1.y,u.vector_2.y,0,0),VT=CGAffineTransformMake(v.vector_1.x,v.vector_1.y,v.vector_2.x,v.vector_2.y,0,0),S=CGAffineTransformConcat(CGAffineTransformConcat(CGAffineTransformInvert(U),_b2),CGAffineTransformInvert(VT)); +a=VT.a; +b=VT.b; +c=VT.c; +d=VT.d; +var _b3=(a*d<0||b*c>0)?-1:1,a2=(ATAN2(b,d)+ATAN2(-_b3*c,_b3*a))/2,cos=COS(a2),sin=SIN(a2); +if(cos==0){ +sx=-c/sin; +sy=b/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +} +} +S.a*=sx; +S.d*=sy; +a=U.a; +b=U.b; +c=U.c; +d=U.d; +var _b3=(a*d<0||b*c>0)?-1:1; +a1=(Math.atan2(_b3*b,_b3*a)+Math.atan2(-c,d))/2,cos=COS(a1),sin=SIN(a1); +if(cos==0){ +sx=b/sin; +sy=-c/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +} +} +sx=S.a*sx; +sy=S.d*sy; +} +} +} +if(tx!=0||ty!=0){ +CGContextTranslateCTM(_b1,tx,ty); +} +if(a1!=0){ +CGContextRotateCTM(_b1,a1); +} +if(sx!=1||sy!=1){ +CGContextScaleCTM(_b1,sx,sy); +} +if(a2!=0){ +CGContextRotateCTM(_b1,a2); +} +}; +} +CGContextDrawImage=function(_b5,_b6,_b7){ +_b5.drawImage(_b7._image,(_b6.origin.x),(_b6.origin.y),(_b6.size.width),(_b6.size.height)); +}; +to_string=function(_b8){ +return "rgba("+ROUND(_b8.components[0]*255)+", "+ROUND(_b8.components[1]*255)+", "+ROUND(255*_b8.components[2])+", "+_b8.components[3]+")"; +}; +CGContextDrawLinearGradient=function(_b9,_ba,_bb,_bc,_bd){ +var _be=_ba.colors,_bf=_be.length,_c0=_b9.createLinearGradient(_bb.x,_bb.y,_bc.x,_bc.y); +while(_bf--){ +_c0.addColorStop(_ba.locations[_bf],to_string(_be[_bf])); +} +_b9.fillStyle=_c0; +_b9.fill(); +}; +CGBitmapGraphicsContextCreate=function(){ +var _c1=document.createElement("canvas"),_c2=_c1.getContext("2d"); +_c2.DOMElement=_c1; +return _c2; +}; +}else{ +if(CPFeatureIsCompatible(CPVMLFeature)){ +var _c3=["f","t"],_c4=["flat","round","square"],_c5=["miter","round","bevel"],_c6=[" m "," l ","qb"," c "," x ",[" at "," wa "]]; +var _c7=CGBitmapGraphicsContextCreate; +CGBitmapGraphicsContextCreate=function(){ +document.namespaces.add("cg_vml_","urn:schemas-microsoft-com:vml"); +document.createStyleSheet().cssText="cg_vml_\\:*{behavior:url(#default#VML)}"; +CGBitmapGraphicsContextCreate=_c7; +return _c7(); +}; +CGContextClearRect=function(_c8,_c9){ +if(_c8.buffer!=nil){ +_c8.buffer=""; +}else{ +_c8.DOMElement.innerHTML=""; +} +_c8.path=NULL; +}; +var W=10,H=10,Z=10,Z_2=Z/2; +CGContextDrawImage=function(_ca,_cb,_cc){ +var _cd=""; +if(_cc.buffer!=nil){ +_cd=_cc.buffer; +}else{ +var ctm=_ca.gState.CTM,_ce=CGPointApplyAffineTransform(_cb.origin,ctm),_cf=ctm.a==ctm.d&&ctm.b==-ctm.c,vml=["<cg_vml_:group coordsize=\"1,1\" coordorigin=\"0,0\" style=\"width:1;height:1;position:absolute"]; +var _d0=CGRectApplyAffineTransform(_cb,ctm); +vml.push(";padding:0 ",ROUND((_d0.origin.x+_d0.size.width)),"px ",ROUND((_d0.origin.y+_d0.size.height)),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(","M11='",ctm.a,"',M12='",ctm.c,"',M21='",ctm.b,"',M22='",ctm.d,"',","Dx='",ROUND(_ce.x),"', Dy='",ROUND(_ce.y),"', sizingmethod='clip');"); +vml.push("\"><cg_vml_:image src=\"",_cc._image.src,"\" style=\"width:",(_cb.size.width),"px;height:",(_cb.size.height),"px;\"/></g_vml_:group>"); +_cd=vml.join(""); +} +if(_ca.buffer!=nil){ +_ca.buffer+=_cd; +}else{ +_ca.DOMElement.insertAdjacentHTML("BeforeEnd",_cd); +} +}; +CGContextDrawPath=function(_d1,_d2){ +if(!_d1||CGPathIsEmpty(_d1.path)){ +return; +} +var _d3=_d1.path.elements,i=0,_d4=_d1.path.count,_d5=_d1.gState,_d6=(_d2==kCGPathFill||_d2==kCGPathFillStroke)?1:0,_d7=(_d2==kCGPathStroke||_d2==kCGPathFillStroke)?1:0,_d8=_d5.alpha,vml=["<cg_vml_:shape"," fillcolor=\"",_d5.fillStyle,"\" filled=\"",_c3[_d6],"\" style=\"position:absolute;width:",W,";height:",H,";\" coordorigin=\"0 0\" coordsize=\"",Z*W," ",Z*H,"\" stroked=\"",_c3[_d7],"\" strokeweight=\"",_d5.lineWidth,"\" strokecolor=\"",_d5.strokeStyle,"\" path=\""]; +for(;i<_d4;++i){ +var _d9=_d3[i],_da=_d9.type; +switch(_da){ +case kCGPathElementMoveToPoint: +case kCGPathElementAddLineToPoint: +vml.push(_c6[_da],(ROUND(Z*(_d9.x)-Z_2)),",",(ROUND(Z*(_d9.y)-Z_2))); +break; +case kCGPathElementAddQuadCurveToPoint: +vml.push(_c6[_da],(ROUND(Z*(_d9.cpx)-Z_2)),",",(ROUND(Z*(_d9.cpy)-Z_2)),",",(ROUND(Z*(_d9.x)-Z_2)),",",(ROUND(Z*(_d9.y)-Z_2))); +break; +case kCGPathElementAddCurveToPoint: +vml.push(_c6[_da],(ROUND(Z*(_d9.cp1x)-Z_2)),",",(ROUND(Z*(_d9.cp1y)-Z_2)),",",(ROUND(Z*(_d9.cp2x)-Z_2)),",",(ROUND(Z*(_d9.cp2y)-Z_2)),",",(ROUND(Z*(_d9.x)-Z_2)),",",(ROUND(Z*(_d9.y)-Z_2))); +break; +case kCGPathElementCloseSubpath: +vml.push(_c6[_da]); +break; +case kCGPathElementAddArc: +var x=_d9.x,y=_d9.y,_db=_d9.radius,_dc=_d9.clockwise?1:0,_dd=_d9.endAngle,_de=_d9.startAngle,_df={x:x+_db*COS(_de),y:y+_db*SIN(_de)}; +if(_de==_dd&&!_dc){ +vml.push(_c6[kCGPathElementMoveToPoint],(ROUND(Z*(_df.x)-Z_2)),",",(ROUND(Z*(_df.y)-Z_2))); +continue; +} +var end={x:x+_db*COS(_dd),y:y+_db*SIN(_dd)}; +if(_dc&&_de!=_dd&&(_df.x==end.x&&_df.y==end.y)){ +if(_df.x>=x){ +if(_df.y<y){ +_df.x+=0.125; +}else{ +_df.y+=0.125; +} +}else{ +if(end.y<=y){ +end.x+=0.125; +}else{ +end.y+=0.125; +} +} +} +vml.push(_c6[_da][_dc],(ROUND(Z*(x-_db)-Z_2)),",",(ROUND(Z*(y-_db)-Z_2))," ",(ROUND(Z*(x+_db)-Z_2)),",",(ROUND(Z*(y+_db)-Z_2))," ",(ROUND(Z*(_df.x)-Z_2)),",",(ROUND(Z*(_df.y)-Z_2))," ",(ROUND(Z*(end.x)-Z_2)),",",(ROUND(Z*(end.y)-Z_2))); +break; +case kCGPathElementAddArcTo: +break; +} +} +vml.push("\">"); +if(_d5.gradient){ +vml.push(_d5.gradient); +}else{ +if(_d6){ +vml.push("<cg_vml_:fill color=\"",_d5.fillStyle,"\" opacity=\"",_d8,"\" />"); +} +} +if(_d7){ +vml.push("<cg_vml_:stroke opacity=\"",_d8,"\" joinstyle=\"",_c5[_d5.lineJoin],"\" miterlimit=\"",_d5.miterLimit,"\" endcap=\"",_c4[_d5.lineCap],"\" weight=\"",_d5.lineWidth,"","px\" color=\"",_d5.strokeStyle,"\" />"); +} +var _e0=_d5.shadowColor; +if(_e0){ +var _e1=_d5.shadowOffset; +vml.push("<cg_vml_:shadow on=\"t\" offset=\"",_e1.width,"pt ",_e1.height,"pt\" opacity=\"",objj_msgSend(_e0,"alphaComponent"),"\" color=black />"); +} +vml.push("</cg_vml_:shape>"); +_d1.path=NULL; +if(_d1.buffer!=nil){ +_d1.buffer+=vml.join(""); +}else{ +_d1.DOMElement.insertAdjacentHTML("BeforeEnd",vml.join("")); +} +}; +to_string=function(_e2){ +return "rgb("+ROUND(_e2.components[0]*255)+", "+ROUND(_e2.components[1]*255)+", "+ROUND(255*_e2.components[2])+")"; +}; +CGContextDrawLinearGradient=function(_e3,_e4,_e5,_e6,_e7){ +if(!_e3||!_e4){ +return; +} +var vml=nil; +if(_e4.vml_gradient){ +var _e8=objj_msgSend(objj_msgSend(_e4.vml_gradient,"stops"),"sortedArrayUsingSelector:",sel_getUid("comparePosition:")),_e9=objj_msgSend(_e8,"count"); +vml=["<cg_vml_:fill type=\"gradient\" method=\"linear sigma\" "]; +vml.push("angle=\""+(objj_msgSend(_e4.vml_gradient,"angle")+90)+"\" "); +vml.push("colors=\""); +for(var i=0;i<_e9;i++){ +vml.push((objj_msgSend(_e8[i],"position")*100).toFixed(0)+"% "); +vml.push(objj_msgSend(objj_msgSend(objj_msgSend(_e8[i],"color"),"colorForSlideBase:",nil),"cssString")); +if(i<_e9-1){ +vml.push(","); +} +} +vml.push("\" />"); +}else{ +var _ea=_e4.colors,_e9=_ea.length; +vml=["<cg_vml_:fill type=\"gradient\" "]; +vml.push("colors=\""); +for(var i=0;i<_e9;i++){ +vml.push((_e4.locations[i]*100).toFixed(0)+"% "+to_string(_ea[i])+(i<_e9-1?",":"")); +} +vml.push("\" />"); +} +_e3.gState.gradient=vml.join(""); +}; +} +} +p;12;CGGeometry.jt;6756;@STATIC;1.0;t;6737; +CGPointMake=function(x,y){ +return {x:x,y:y}; +}; +CGPointMakeZero=function(){ +return {x:0,y:0}; +}; +CGPointMakeCopy=function(_1){ +return {x:_1.x,y:_1.y}; +}; +CGPointCreateCopy=function(_2){ +return {x:_2.x,y:_2.y}; +}; +CGPointEqualToPoint=function(_3,_4){ +return (_3.x==_4.x&&_3.y==_4.y); +}; +CGStringFromPoint=function(_5){ +return ("{"+_5.x+", "+_5.y+"}"); +}; +CGSizeMake=function(_6,_7){ +return {width:_6,height:_7}; +}; +CGSizeMakeZero=function(){ +return {width:0,height:0}; +}; +CGSizeMakeCopy=function(_8){ +return {width:_8.width,height:_8.height}; +}; +CGSizeCreateCopy=function(_9){ +return {width:_9.width,height:_9.height}; +}; +CGSizeEqualToSize=function(_a,_b){ +return (_a.width==_b.width&&_a.height==_b.height); +}; +CGStringFromSize=function(_c){ +return ("{"+_c.width+", "+_c.height+"}"); +}; +CGRectMake=function(x,y,_d,_e){ +return {origin:{x:x,y:y},size:{width:_d,height:_e}}; +}; +CGRectMakeZero=function(){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +}; +CGRectMakeCopy=function(_f){ +return {origin:{x:_f.origin.x,y:_f.origin.y},size:{width:_f.size.width,height:_f.size.height}}; +}; +CGRectCreateCopy=function(_10){ +return {origin:{x:_10.origin.x,y:_10.origin.y},size:{width:_10.size.width,height:_10.size.height}}; +}; +CGRectEqualToRect=function(_11,_12){ +return ((_11.origin.x==_12.origin.x&&_11.origin.y==_12.origin.y)&&(_11.size.width==_12.size.width&&_11.size.height==_12.size.height)); +}; +CGStringFromRect=function(_13){ +return ("{"+("{"+_13.origin.x+", "+_13.origin.y+"}")+", "+("{"+_13.size.width+", "+_13.size.height+"}")+"}"); +}; +CGRectOffset=function(_14,dX,dY){ +return {origin:{x:_14.origin.x+dX,y:_14.origin.y+dY},size:{width:_14.size.width,height:_14.size.height}}; +}; +CGRectInset=function(_15,dX,dY){ +return {origin:{x:_15.origin.x+dX,y:_15.origin.y+dY},size:{width:_15.size.width-2*dX,height:_15.size.height-2*dY}}; +}; +CGRectGetHeight=function(_16){ +return (_16.size.height); +}; +CGRectGetMaxX=function(_17){ +return (_17.origin.x+_17.size.width); +}; +CGRectGetMaxY=function(_18){ +return (_18.origin.y+_18.size.height); +}; +CGRectGetMidX=function(_19){ +return (_19.origin.x+(_19.size.width)/2); +}; +CGRectGetMidY=function(_1a){ +return (_1a.origin.y+(_1a.size.height)/2); +}; +CGRectGetMinX=function(_1b){ +return (_1b.origin.x); +}; +CGRectGetMinY=function(_1c){ +return (_1c.origin.y); +}; +CGRectGetWidth=function(_1d){ +return (_1d.size.width); +}; +CGRectIsEmpty=function(_1e){ +return (_1e.size.width<=0||_1e.size.height<=0); +}; +CGRectIsNull=function(_1f){ +return (_1f.size.width<=0||_1f.size.height<=0); +}; +CGRectContainsPoint=function(_20,_21){ +return (_21.x>=(_20.origin.x)&&_21.y>=(_20.origin.y)&&_21.x<(_20.origin.x+_20.size.width)&&_21.y<(_20.origin.y+_20.size.height)); +}; +CGInsetMake=function(top,_22,_23,_24){ +return {top:(top),right:(_22),bottom:(_23),left:(_24)}; +}; +CGInsetMakeZero=function(){ +return {top:(0),right:(0),bottom:(0),left:(0)}; +}; +CGInsetMakeCopy=function(_25){ +return {top:(_25.top),right:(_25.right),bottom:(_25.bottom),left:(_25.left)}; +}; +CGInsetIsEmpty=function(_26){ +return ((_26).top===0&&(_26).right===0&&(_26).bottom===0&&(_26).left===0); +}; +CGInsetEqualToInset=function(_27,_28){ +return ((_27).top===(_28).top&&(_27).right===(_28).right&&(_27).bottom===(_28).bottom&&(_27).left===(_28).left); +}; +CGMinXEdge=0; +CGMinYEdge=1; +CGMaxXEdge=2; +CGMaxYEdge=3; +CGRectNull={origin:{x:Infinity,y:Infinity},size:{width:0,height:0}}; +CGRectDivide=function(_29,_2a,rem,_2b,_2c){ +_2a.origin={x:_29.origin.x,y:_29.origin.y}; +_2a.size={width:_29.size.width,height:_29.size.height}; +rem.origin={x:_29.origin.x,y:_29.origin.y}; +rem.size={width:_29.size.width,height:_29.size.height}; +switch(_2c){ +case CGMinXEdge: +_2a.size.width=_2b; +rem.origin.x+=_2b; +rem.size.width-=_2b; +break; +case CGMaxXEdge: +_2a.origin.x=(_2a.origin.x+_2a.size.width)-_2b; +_2a.size.width=_2b; +rem.size.width-=_2b; +break; +case CGMinYEdge: +_2a.size.height=_2b; +rem.origin.y+=_2b; +rem.size.height-=_2b; +break; +case CGMaxYEdge: +_2a.origin.y=(_2a.origin.y+_2a.size.height)-_2b; +_2a.size.height=_2b; +rem.size.height-=_2b; +} +}; +CGRectContainsRect=function(_2d,_2e){ +var _2f=CGRectUnion(_2d,_2e); +return ((_2f.origin.x==_2d.origin.x&&_2f.origin.y==_2d.origin.y)&&(_2f.size.width==_2d.size.width&&_2f.size.height==_2d.size.height)); +}; +CGRectIntersectsRect=function(_30,_31){ +var _32=CGRectIntersection(_30,_31); +return !(_32.size.width<=0||_32.size.height<=0); +}; +CGRectIntegral=function(_33){ +_33=CGRectStandardize(_33); +var x=FLOOR((_33.origin.x)),y=FLOOR((_33.origin.y)); +_33.size.width=CEIL((_33.origin.x+_33.size.width))-x; +_33.size.height=CEIL((_33.origin.y+_33.size.height))-y; +_33.origin.x=x; +_33.origin.y=y; +return _33; +}; +CGRectIntersection=function(_34,_35){ +var _36={origin:{x:MAX((_34.origin.x),(_35.origin.x)),y:MAX((_34.origin.y),(_35.origin.y))},size:{width:0,height:0}}; +_36.size.width=MIN((_34.origin.x+_34.size.width),(_35.origin.x+_35.size.width))-(_36.origin.x); +_36.size.height=MIN((_34.origin.y+_34.size.height),(_35.origin.y+_35.size.height))-(_36.origin.y); +return (_36.size.width<=0||_36.size.height<=0)?{origin:{x:0,y:0},size:{width:0,height:0}}:_36; +}; +CGRectStandardize=function(_37){ +var _38=(_37.size.width),_39=(_37.size.height),_3a={origin:{x:_37.origin.x,y:_37.origin.y},size:{width:_37.size.width,height:_37.size.height}}; +if(_38<0){ +_3a.origin.x+=_38; +_3a.size.width=-_38; +} +if(_39<0){ +_3a.origin.y+=_39; +_3a.size.height=-_39; +} +return _3a; +}; +CGRectUnion=function(_3b,_3c){ +var _3d=!_3b||_3b===CGRectNull,_3e=!_3c||_3c===CGRectNull; +if(_3d){ +return _3e?CGRectNull:_3c; +} +if(_3e){ +return _3d?CGRectNull:_3b; +} +var _3f=MIN((_3b.origin.x),(_3c.origin.x)),_40=MIN((_3b.origin.y),(_3c.origin.y)),_41=MAX((_3b.origin.x+_3b.size.width),(_3c.origin.x+_3c.size.width)),_42=MAX((_3b.origin.y+_3b.size.height),(_3c.origin.y+_3c.size.height)); +return {origin:{x:_3f,y:_40},size:{width:_41-_3f,height:_42-_40}}; +}; +CGPointFromString=function(_43){ +var _44=_43.indexOf(","); +return {x:parseInt(_43.substr(1,_44-1)),y:parseInt(_43.substring(_44+1,_43.length))}; +}; +CGSizeFromString=function(_45){ +var _46=_45.indexOf(","); +return {width:parseInt(_45.substr(1,_46-1)),height:parseInt(_45.substring(_46+1,_45.length))}; +}; +CGRectFromString=function(_47){ +var _48=_47.indexOf(",",_47.indexOf(",")+1); +return {origin:CGPointFromString(_47.substr(1,_48-1)),size:CGSizeFromString(_47.substring(_48+2,_47.length))}; +}; +CGPointFromEvent=function(_49){ +return {x:_49.clientX,y:_49.clientY}; +}; +CGInsetFromString=function(_4a){ +var _4b=_4a.substr(1,_4a.length-2).split(","); +return {top:(parseFloat(_4b[0])),right:(parseFloat(_4b[1])),bottom:(parseFloat(_4b[2])),left:(parseFloat(_4b[3]))}; +}; +CGInsetFromCPString=CGInsetFromString; +CPStringFromCGInset=function(_4c){ +return "{"+_4c.top+", "+_4c.left+", "+_4c.bottom+", "+_4c.right+"}"; +}; +p;12;CGGradient.jt;622;@STATIC;1.0;i;9;CGColor.ji;14;CGColorSpace.jt;572; +objj_executeFile("CGColor.j",YES); +objj_executeFile("CGColorSpace.j",YES); +kCGGradientDrawsBeforeStartLocation=1<<0; +kCGGradientDrawsAfterEndLocation=1<<1; +CGGradientCreateWithColorComponents=function(_1,_2,_3,_4){ +if(arguments["count"]==NULL){ +var _4=_3.length; +} +var _5=[]; +while(_4--){ +var _6=_4*4; +_5[_4]=CGColorCreate(_1,_2.slice(_6,_6+4)); +} +return CGGradientCreateWithColors(_1,_5,_3); +}; +CGGradientCreateWithColors=function(_7,_8,_9){ +return {colorspace:_7,colors:_8,locations:_9}; +}; +CGGradientRelease=function(){ +}; +CGGradientRetain=function(_a){ +return _a; +}; +p;8;CGPath.jt;7466;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.jt;7406; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CGAffineTransform.j",YES); +kCGPathElementMoveToPoint=0; +kCGPathElementAddLineToPoint=1; +kCGPathElementAddQuadCurveToPoint=2; +kCGPathElementAddCurveToPoint=3; +kCGPathElementCloseSubpath=4; +kCGPathElementAddArc=5; +kCGPathElementAddArcToPoint=6; +CGPathCreateMutable=function(){ +return {count:0,start:NULL,current:NULL,elements:[]}; +}; +CGPathCreateMutableCopy=function(_1){ +var _2=CGPathCreateMutable(); +CGPathAddPath(_2,_1); +return _2; +}; +CGPathCreateCopy=function(_3){ +return CGPathCreateMutableCopy(_3); +}; +CGPathRelease=function(_4){ +}; +CGPathRetain=function(_5){ +return _5; +}; +CGPathAddArc=function(_6,_7,x,y,_8,_9,_a,_b){ +if(_7&&!(_7.a==1&&_7.b==0&&_7.c==0&&_7.d==1&&_7.tx==0&&_7.ty==0)){ +var _c={x:x,y:y},_d={x:COS(_a),y:SIN(_a)},_e={x:COS(_9),y:SIN(_9)}; +_d={x:_d.x*_7.a+_d.y*_7.c+_7.tx,y:_d.x*_7.b+_d.y*_7.d+_7.ty}; +_e={x:_e.x*_7.a+_e.y*_7.c+_7.tx,y:_e.x*_7.b+_e.y*_7.d+_7.ty}; +_c={x:_c.x*_7.a+_c.y*_7.c+_7.tx,y:_c.x*_7.b+_c.y*_7.d+_7.ty}; +x=_c.x; +y=_c.y; +var _f=_a,_10=_9; +_a=ATAN2(_d.y-_7.ty,_d.x-_7.tx); +_9=ATAN2(_e.y-_7.ty,_e.x-_7.tx); +if(_a==_9&&_f!=_10){ +if(_10>_f){ +_a=_a-PI2; +}else{ +_9=_9-PI2; +} +} +_8={width:_8,height:0}; +_8={width:_8.width*_7.a+_8.height*_7.c,height:_8.width*_7.b+_8.height*_7.d}; +_8=SQRT(_8.width*_8.width+_8.height*_8.height); +} +_6.current={x:x+_8*COS(_a),y:y+_8*SIN(_a)}; +_6.elements[_6.count++]={type:kCGPathElementAddArc,x:x,y:y,radius:_8,startAngle:_9,endAngle:_a}; +}; +CGPathAddArcToPoint=function(_11,_12,x1,y1,x2,y2,_13){ +}; +CGPathAddCurveToPoint=function(_14,_15,_16,_17,_18,_19,x,y){ +var cp1={x:_16,y:_17},cp2={x:_18,y:_19},end={x:x,y:y}; +if(_15){ +cp1={x:cp1.x*_15.a+cp1.y*_15.c+_15.tx,y:cp1.x*_15.b+cp1.y*_15.d+_15.ty}; +cp2={x:cp2.x*_15.a+cp2.y*_15.c+_15.tx,y:cp2.x*_15.b+cp2.y*_15.d+_15.ty}; +end={x:end.x*_15.a+end.y*_15.c+_15.tx,y:end.x*_15.b+end.y*_15.d+_15.ty}; +} +_14.current=end; +_14.elements[_14.count++]={type:kCGPathElementAddCurveToPoint,cp1x:cp1.x,cp1y:cp1.y,cp2x:cp2.x,cp2y:cp2.y,x:end.x,y:end.y}; +}; +CGPathAddLines=function(_1a,_1b,_1c,_1d){ +var i=1; +if(arguments["count"]==NULL){ +var _1d=_1c.length; +} +if(!_1a||_1d<2){ +return; +} +CGPathMoveToPoint(_1a,_1b,_1c[0].x,_1c[0].y); +for(;i<_1d;++i){ +CGPathAddLineToPoint(_1a,_1b,_1c[i].x,_1c[i].y); +} +}; +CGPathAddLineToPoint=function(_1e,_1f,x,y){ +var _20={x:x,y:y}; +if(_1f!=NULL){ +_20={x:_20.x*_1f.a+_20.y*_1f.c+_1f.tx,y:_20.x*_1f.b+_20.y*_1f.d+_1f.ty}; +} +_1e.elements[_1e.count++]={type:kCGPathElementAddLineToPoint,x:_20.x,y:_20.y}; +_1e.current=_20; +}; +CGPathAddPath=function(_21,_22,_23){ +for(var i=0,_24=_23.count;i<_24;++i){ +var _25=_23.elements[i]; +switch(_25.type){ +case kCGPathElementAddLineToPoint: +CGPathAddLineToPoint(_21,_22,_25.x,_25.y); +break; +case kCGPathElementAddCurveToPoint: +CGPathAddCurveToPoint(_21,_22,_25.cp1x,_25.cp1y,_25.cp2x,_25.cp2y,_25.x,_25.y); +break; +case kCGPathElementAddArc: +CGPathAddArc(_21,_22,_25.x,_25.y,_25.radius,_25.startAngle,_25.endAngle,_25.isClockwise); +break; +case kCGPathElementAddQuadCurveToPoint: +CGPathAddQuadCurveToPoint(_21,_22,_25.cpx,_25.cpy,_25.x,_25.y); +break; +case kCGPathElementMoveToPoint: +CGPathMoveToPoint(_21,_22,_25.x,_25.y); +break; +case kCGPathElementCloseSubpath: +CGPathCloseSubpath(_21); +break; +} +} +}; +CGPathAddQuadCurveToPoint=function(_26,_27,cpx,cpy,x,y){ +var cp={x:cpx,y:cpy},end={x:x,y:y}; +if(_27){ +cp={x:cp.x*_27.a+cp.y*_27.c+_27.tx,y:cp.x*_27.b+cp.y*_27.d+_27.ty}; +end={x:end.x*_27.a+end.y*_27.c+_27.tx,y:end.x*_27.b+end.y*_27.d+_27.ty}; +} +_26.elements[_26.count++]={type:kCGPathElementAddQuadCurveToPoint,cpx:cp.x,cpy:cp.y,x:end.x,y:end.y}; +_26.current=end; +}; +CGPathAddRect=function(_28,_29,_2a){ +CGPathAddRects(_28,_29,[_2a],1); +}; +CGPathAddRects=function(_2b,_2c,_2d,_2e){ +var i=0; +if(arguments["count"]==NULL){ +var _2e=_2d.length; +} +for(;i<_2e;++i){ +var _2f=_2d[i]; +CGPathMoveToPoint(_2b,_2c,(_2f.origin.x),(_2f.origin.y)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x+_2f.size.width),(_2f.origin.y)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x+_2f.size.width),(_2f.origin.y+_2f.size.height)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x),(_2f.origin.y+_2f.size.height)); +CGPathCloseSubpath(_2b); +} +}; +CGPathMoveToPoint=function(_30,_31,x,y){ +var _32={x:x,y:y},_33=_30.count; +if(_31!=NULL){ +_32={x:_32.x*_31.a+_32.y*_31.c+_31.tx,y:_32.x*_31.b+_32.y*_31.d+_31.ty}; +} +_30.start=_32; +_30.current=_32; +var _34=_30.elements[_33-1]; +if(_33!=0&&_34.type==kCGPathElementMoveToPoint){ +_34.x=_32.x; +_34.y=_32.y; +}else{ +_30.elements[_30.count++]={type:kCGPathElementMoveToPoint,x:_32.x,y:_32.y}; +} +}; +var _35=4*((SQRT2-1)/3); +CGPathWithEllipseInRect=function(_36){ +var _37=CGPathCreateMutable(); +if((_36.size.width)==(_36.size.height)){ +CGPathAddArc(_37,nil,(_36.origin.x+(_36.size.width)/2),(_36.origin.y+(_36.size.height)/2),(_36.size.width)/2,0,2*PI,YES); +}else{ +var _38={width:(_36.size.width)/2,height:(_36.size.height)/2},_39={x:(_36.origin.x)+_38.width,y:(_36.origin.y)+_38.height}; +CGPathMoveToPoint(_37,nil,_39.x,_39.y-_38.height); +CGPathAddCurveToPoint(_37,nil,_39.x+(_35*_38.width),_39.y-_38.height,_39.x+_38.width,_39.y-(_35*_38.height),_39.x+_38.width,_39.y); +CGPathAddCurveToPoint(_37,nil,_39.x+_38.width,_39.y+(_35*_38.height),_39.x+(_35*_38.width),_39.y+_38.height,_39.x,_39.y+_38.height); +CGPathAddCurveToPoint(_37,nil,_39.x-(_35*_38.width),_39.y+_38.height,_39.x-_38.width,_39.y+(_35*_38.height),_39.x-_38.width,_39.y); +CGPathAddCurveToPoint(_37,nil,_39.x-_38.width,_39.y-(_35*_38.height),_39.x-(_35*_38.width),_39.y-_38.height,_39.x,_39.y-_38.height); +} +CGPathCloseSubpath(_37); +return _37; +}; +CGPathWithRoundedRectangleInRect=function(_3a,_3b,_3c,ne,se,sw,nw){ +var _3d=CGPathCreateMutable(),_3e=(_3a.origin.x),_3f=(_3a.origin.x+_3a.size.width),_40=(_3a.origin.y),_41=(_3a.origin.y+_3a.size.height); +CGPathMoveToPoint(_3d,nil,_3e+_3b,_40); +if(ne){ +CGPathAddLineToPoint(_3d,nil,_3f-_3b,_40); +CGPathAddCurveToPoint(_3d,nil,_3f-_3b,_40,_3f,_40,_3f,_40+_3b); +}else{ +CGPathAddLineToPoint(_3d,nil,_3f,_40); +} +if(se){ +CGPathAddLineToPoint(_3d,nil,_3f,_41-_3b); +CGPathAddCurveToPoint(_3d,nil,_3f,_41-_3b,_3f,_41,_3f-_3b,_41); +}else{ +CGPathAddLineToPoint(_3d,nil,_3f,_41); +} +if(sw){ +CGPathAddLineToPoint(_3d,nil,_3e+_3b,_41); +CGPathAddCurveToPoint(_3d,nil,_3e+_3b,_41,_3e,_41,_3e,_41-_3b); +}else{ +CGPathAddLineToPoint(_3d,nil,_3e,_41); +} +if(nw){ +CGPathAddLineToPoint(_3d,nil,_3e,_40+_3b); +CGPathAddCurveToPoint(_3d,nil,_3e,_40+_3b,_3e,_40,_3e+_3b,_40); +}else{ +CGPathAddLineToPoint(_3d,nil,_3e,_40); +} +CGPathCloseSubpath(_3d); +return _3d; +}; +CGPathCloseSubpath=function(_42){ +var _43=_42.count; +if(_43==0||_42.elements[_43-1].type==kCGPathElementCloseSubpath){ +return; +} +_42.elements[_42.count++]={type:kCGPathElementCloseSubpath,points:[_42.start]}; +}; +CGPathEqualToPath=function(_44,_45){ +if(_44==_45){ +return YES; +} +if(_44.count!=_45.count||!(_44.start.x==_45.start.x&&_44.start.y==_45.start.y)||!(_44.current.x==_45.current.x&&_44.current.y==_45.current.y)){ +return NO; +} +var i=0,_46=_44.count; +for(;i<_46;++i){ +var _47=_44[i],_48=_45[i]; +if(_47.type!=_48.type){ +return NO; +} +if((_47.type==kCGPathElementAddArc||_47.type==kCGPathElementAddArcToPoint)&&_47.radius!=_48.radius){ +return NO; +} +var j=_47.points.length; +while(j--){ +if(!(_47.points[j].x==_48.points[j].x&&_47.points[j].y==_48.points[j].y)){ +return NO; +} +} +} +return YES; +}; +CGPathGetCurrentPoint=function(_49){ +return {x:_49.current.x,y:_49.current.y}; +}; +CGPathIsEmpty=function(_4a){ +return !_4a||_4a.count==0; +}; +p;18;_CPMenuBarWindow.jt;13231;@STATIC;1.0;i;15;_CPMenuWindow.jt;13191; +objj_executeFile("_CPMenuWindow.j",YES); +var _1=28,_2=10,_3=10,_4=10; +var _5=nil,_6=nil; +var _7=objj_allocateClassPair(CPPanel,"_CPMenuBarWindow"),_8=_7.isa; +class_addIvars(_7,[new objj_ivar("_menu"),new objj_ivar("_highlightView"),new objj_ivar("_menuItemViews"),new objj_ivar("_trackingMenuItem"),new objj_ivar("_iconImageView"),new objj_ivar("_titleField"),new objj_ivar("_textColor"),new objj_ivar("_titleColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_titleShadowColor"),new objj_ivar("_highlightColor"),new objj_ivar("_highlightTextColor"),new objj_ivar("_highlightTextShadowColor")]); +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("init"),function(_9,_a){ +with(_9){ +var _b=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"contentBounds"); +_b.size.height=_1; +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPMenuBarWindow").super_class},"initWithContentRect:styleMask:",_b,CPBorderlessWindowMask); +if(_9){ +objj_msgSend(_9,"setLevel:",CPMainMenuWindowLevel); +objj_msgSend(_9,"setAutoresizingMask:",CPWindowWidthSizable); +var _c=objj_msgSend(_9,"contentView"); +objj_msgSend(_c,"setAutoresizesSubviews:",NO); +objj_msgSend(_9,"setBecomesKeyOnlyIfNeeded:",YES); +_iconImageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(0,0,16,16)); +objj_msgSend(_c,"addSubview:",_iconImageView); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",13)); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_c,"addSubview:",_titleField); +} +return _9; +} +}),new objj_method(sel_getUid("setTitle:"),function(_d,_e,_f){ +with(_d){ +var _10=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPBundleName"); +if(!objj_msgSend(_10,"length")){ +document.title=_f; +}else{ +if(objj_msgSend(_f,"length")){ +document.title=_f+" - "+_10; +}else{ +document.title=_10; +} +} +objj_msgSend(_titleField,"setStringValue:",_f); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_d,"tile"); +} +}),new objj_method(sel_getUid("setIconImage:"),function(_11,_12,_13){ +with(_11){ +objj_msgSend(_iconImageView,"setImage:",_13); +objj_msgSend(_iconImageView,"setHidden:",_13==nil); +objj_msgSend(_11,"tile"); +} +}),new objj_method(sel_getUid("setIconImageAlphaValue:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_iconImageView,"setAlphaValue:",_16); +} +}),new objj_method(sel_getUid("setColor:"),function(_17,_18,_19){ +with(_17){ +if(!_19){ +if(!_5){ +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPMenuBarWindow,"class")),"pathForResource:","_CPMenuBarWindow/_CPMenuBarWindowBackground.png"),CGSizeMake(1,28))); +} +objj_msgSend(objj_msgSend(_17,"contentView"),"setBackgroundColor:",_5); +}else{ +objj_msgSend(objj_msgSend(_17,"contentView"),"setBackgroundColor:",_19); +} +} +}),new objj_method(sel_getUid("setTextColor:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_textColor==_1c){ +return; +} +_textColor=_1c; +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setTextColor:"),_textColor); +} +}),new objj_method(sel_getUid("setTitleColor:"),function(_1d,_1e,_1f){ +with(_1d){ +if(_titleColor==_1f){ +return; +} +_titleColor=_1f; +objj_msgSend(_titleField,"setTextColor:",_1f?_1f:objj_msgSend(CPColor,"blackColor")); +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_20,_21,_22){ +with(_20){ +if(_textShadowColor==_22){ +return; +} +_textShadowColor=_22; +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setTextShadowColor:"),_textShadowColor); +} +}),new objj_method(sel_getUid("setTitleShadowColor:"),function(_23,_24,_25){ +with(_23){ +if(_titleShadowColor==_25){ +return; +} +_titleShadowColor=_25; +objj_msgSend(_titleField,"setTextShadowColor:",_25?_25:objj_msgSend(CPColor,"whiteColor")); +} +}),new objj_method(sel_getUid("setHighlightColor:"),function(_26,_27,_28){ +with(_26){ +if(_highlightColor==_28){ +return; +} +_highlightColor=_28; +} +}),new objj_method(sel_getUid("setHighlightTextColor:"),function(_29,_2a,_2b){ +with(_29){ +if(_highlightTextColor==_2b){ +return; +} +_highlightTextColor=_2b; +} +}),new objj_method(sel_getUid("setHighlightTextShadowColor:"),function(_2c,_2d,_2e){ +with(_2c){ +if(_highlightTextShadowColor==_2e){ +return; +} +_highlightTextShadowColor=_2e; +} +}),new objj_method(sel_getUid("setMenu:"),function(_2f,_30,_31){ +with(_2f){ +if(_menu==_31){ +return; +} +var _32=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_menu){ +objj_msgSend(_32,"removeObserver:name:object:",_2f,CPMenuDidAddItemNotification,_menu); +objj_msgSend(_32,"removeObserver:name:object:",_2f,CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_32,"removeObserver:name:object:",_2f,CPMenuDidRemoveItemNotification,_menu); +var _33=objj_msgSend(_menu,"itemArray"),_34=_33.length; +while(_34--){ +objj_msgSend(objj_msgSend(_33[_34],"_menuItemView"),"removeFromSuperview"); +} +} +_menu=_31; +if(_menu){ +objj_msgSend(_32,"addObserver:selector:name:object:",_2f,sel_getUid("menuDidAddItem:"),CPMenuDidAddItemNotification,_menu); +objj_msgSend(_32,"addObserver:selector:name:object:",_2f,sel_getUid("menuDidChangeItem:"),CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_32,"addObserver:selector:name:object:",_2f,sel_getUid("menuDidRemoveItem:"),CPMenuDidRemoveItemNotification,_menu); +} +_menuItemViews=[]; +var _35=objj_msgSend(_2f,"contentView"),_33=objj_msgSend(_menu,"itemArray"),_34=_33.length; +for(index=0;index<_34;++index){ +var _36=_33[index],_37=objj_msgSend(_36,"_menuItemView"); +_menuItemViews.push(_37); +objj_msgSend(_37,"setTextColor:",_textColor); +objj_msgSend(_37,"setHidden:",objj_msgSend(_36,"isHidden")); +objj_msgSend(_37,"synchronizeWithMenuItem"); +objj_msgSend(_35,"addSubview:",_37); +} +objj_msgSend(_2f,"tile"); +} +}),new objj_method(sel_getUid("menuDidChangeItem:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(_menu,"itemAtIndex:",objj_msgSend(objj_msgSend(_3a,"userInfo"),"objectForKey:","CPMenuItemIndex")),_3c=objj_msgSend(_3b,"_menuItemView"); +objj_msgSend(_3c,"setHidden:",objj_msgSend(_3b,"isHidden")); +objj_msgSend(_3c,"synchronizeWithMenuItem"); +objj_msgSend(_38,"tile"); +} +}),new objj_method(sel_getUid("menuDidAddItem:"),function(_3d,_3e,_3f){ +with(_3d){ +var _40=objj_msgSend(objj_msgSend(_3f,"userInfo"),"objectForKey:","CPMenuItemIndex"),_41=objj_msgSend(_menu,"itemAtIndex:",_40),_42=objj_msgSend(_41,"_menuItemView"); +objj_msgSend(_menuItemViews,"insertObject:atIndex:",_42,_40); +objj_msgSend(_42,"setTextColor:",_textColor); +objj_msgSend(_42,"setHidden:",objj_msgSend(_41,"isHidden")); +objj_msgSend(_42,"synchronizeWithMenuItem"); +objj_msgSend(objj_msgSend(_3d,"contentView"),"addSubview:",_42); +objj_msgSend(_3d,"tile"); +} +}),new objj_method(sel_getUid("menuDidRemoveItem:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(objj_msgSend(_45,"userInfo"),"objectForKey:","CPMenuItemIndex"),_47=objj_msgSend(_menuItemViews,"objectAtIndex:",_46); +objj_msgSend(_menuItemViews,"removeObjectAtIndex:",_46); +objj_msgSend(_47,"removeFromSuperview"); +objj_msgSend(_43,"tile"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_48,_49,_4a){ +with(_48){ +var _4b=CGRectInset(objj_msgSend(objj_msgSend(_48,"platformWindow"),"visibleFrame"),5,0); +_4b.size.height-=5; +objj_msgSend(objj_msgSend(_CPMenuManager,"sharedMenuManager"),"beginTracking:menuContainer:constraintRect:callback:",_4a,_48,_4b,function(_4c,_4d){ +objj_msgSend(_4d,"_performActionOfHighlightedItemChain"); +objj_msgSend(_4d,"_highlightItemAtIndex:",CPNotFound); +}); +} +}),new objj_method(sel_getUid("font"),function(_4e,_4f){ +with(_4e){ +objj_msgSend(CPFont,"systemFontOfSize:",12); +} +}),new objj_method(sel_getUid("tile"),function(_50,_51){ +with(_50){ +var _52=objj_msgSend(_menu,"itemArray"),_53=0,_54=_52.length,x=_3,y=0,_55=YES; +for(;_53<_54;++_53){ +var _56=_52[_53]; +if(objj_msgSend(_56,"isSeparatorItem")){ +x=CGRectGetWidth(objj_msgSend(_50,"frame"))-_4; +_55=NO; +continue; +} +if(objj_msgSend(_56,"isHidden")){ +continue; +} +var _57=objj_msgSend(_56,"_menuItemView"),_58=objj_msgSend(_57,"frame"); +if(_55){ +objj_msgSend(_57,"setFrame:",CGRectMake(x,0,CGRectGetWidth(_58),_1)); +x+=CGRectGetWidth(objj_msgSend(_57,"frame")); +}else{ +objj_msgSend(_57,"setFrame:",CGRectMake(x-CGRectGetWidth(_58),0,CGRectGetWidth(_58),_1)); +x=CGRectGetMinX(objj_msgSend(_57,"frame")); +} +} +var _59=objj_msgSend(objj_msgSend(_50,"contentView"),"bounds"),_5a=objj_msgSend(_titleField,"frame"); +if(objj_msgSend(_iconImageView,"isHidden")){ +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_59)-CGRectGetWidth(_5a))/2,(CGRectGetHeight(_59)-CGRectGetHeight(_5a))/2)); +}else{ +var _5b=objj_msgSend(_iconImageView,"frame"),_5c=CGRectGetWidth(_5b),_5d=_5c+CGRectGetWidth(_5a); +objj_msgSend(_iconImageView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_59)-_5d)/2,(CGRectGetHeight(_59)-CGRectGetHeight(_5b))/2)); +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_59)-_5d)/2+_5c,(CGRectGetHeight(_59)-CGRectGetHeight(_5a))/2)); +} +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_5e,_5f,_60,_61,_62){ +with(_5e){ +var _63=objj_msgSend(_5e,"frame").size; +objj_msgSendSuper({receiver:_5e,super_class:objj_getClass("_CPMenuBarWindow").super_class},"setFrame:display:animate:",_60,_61,_62); +if(!(_63.width==_60.size.width&&_63.height==_60.size.height)){ +objj_msgSend(_5e,"tile"); +} +} +})]); +class_addMethods(_8,[new objj_method(sel_getUid("initialize"),function(_64,_65){ +with(_64){ +if(_64!=objj_msgSend(_CPMenuBarWindow,"class")){ +return; +} +var _66=objj_msgSend(CPBundle,"bundleForClass:",_64); +_6=objj_msgSend(CPFont,"boldSystemFontOfSize:",12); +} +}),new objj_method(sel_getUid("font"),function(_67,_68){ +with(_67){ +return _6; +} +})]); +var _7=objj_getClass("_CPMenuBarWindow"); +if(!_7){ +throw new SyntaxError("*** Could not find definition for class \"_CPMenuBarWindow\""); +} +var _8=_7.isa; +class_addMethods(_7,[new objj_method(sel_getUid("isMenuBar"),function(_69,_6a){ +with(_69){ +return YES; +} +}),new objj_method(sel_getUid("globalFrame"),function(_6b,_6c){ +with(_6b){ +return objj_msgSend(_6b,"frame"); +} +}),new objj_method(sel_getUid("scrollingStateForPoint:"),function(_6d,_6e,_6f){ +with(_6d){ +return _CPMenuManagerScrollingStateNone; +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_70,_71,_72){ +with(_70){ +var _73=objj_msgSend(_menu,"itemArray"),_74=_73.length; +while(_74--){ +var _75=_73[_74]; +if(objj_msgSend(_75,"isHidden")||objj_msgSend(_75,"isSeparatorItem")){ +continue; +} +if(CGRectContainsPoint(objj_msgSend(_70,"rectForItemAtIndex:",_74),_72)){ +return _74; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_76,_77,_78){ +with(_76){ +var _79=objj_msgSend(_menu,"itemAtIndex:",_78===CPNotFound?0:_78); +return objj_msgSend(objj_msgSend(_79,"_menuItemView"),"frame"); +} +})]); +var _7=objj_allocateClassPair(_CPMenuView,"_CPMenuBarView"),_8=_7.isa; +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("rectForItemAtIndex:"),function(_7a,_7b,_7c){ +with(_7a){ +return objj_msgSend(_menuItemViews[_7c===CPNotFound?0:_7c],"frame"); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_7d,_7e,_7f){ +with(_7d){ +var _80=objj_msgSend(_7d,"bounds"); +if(!CGRectContainsPoint(_80,_7f)){ +return CPNotFound; +} +var x=_7f.x,low=0,_81=_visibleMenuItemInfos.length-1; +while(low<=_81){ +var _82=FLOOR(low+(_81-low)/2),_83=_visibleMenuItemInfos[_82],_84=objj_msgSend(_83.view,"frame"); +if(x<CGRectGetMinX(_84)){ +_81=_82-1; +}else{ +if(x>CGRectGetMaxX(_84)){ +low=_82+1; +}else{ +return _83.index; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tile"),function(_85,_86){ +with(_85){ +var _87=objj_msgSend(_menu,"itemArray"),_88=0,_89=_87.length,x=_3,y=0,_8a=YES; +for(;_88<_89;++_88){ +var _8b=_87[_88]; +if(objj_msgSend(_8b,"isSeparatorItem")){ +x=CGRectGetWidth(objj_msgSend(_85,"frame"))-_4; +_8a=NO; +continue; +} +if(objj_msgSend(_8b,"isHidden")){ +continue; +} +var _8c=objj_msgSend(_8b,"_menuItemView"),_8d=objj_msgSend(_8c,"frame"); +if(_8a){ +objj_msgSend(_8c,"setFrameOrigin:",CGPointMake(x,(_1-1-CGRectGetHeight(_8d))/2)); +x+=CGRectGetWidth(objj_msgSend(_8c,"frame"))+_2; +}else{ +objj_msgSend(_8c,"setFrameOrigin:",CGPointMake(x-CGRectGetWidth(_8d),(_1-1-CGRectGetHeight(_8d))/2)); +x=CGRectGetMinX(objj_msgSend(_8c,"frame"))-_2; +} +} +var _8e=objj_msgSend(objj_msgSend(_85,"contentView"),"bounds"),_8f=objj_msgSend(_titleField,"frame"); +if(objj_msgSend(_iconImageView,"isHidden")){ +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8e)-CGRectGetWidth(_8f))/2,(CGRectGetHeight(_8e)-CGRectGetHeight(_8f))/2)); +}else{ +var _90=objj_msgSend(_iconImageView,"frame"),_91=CGRectGetWidth(_90),_92=_91+CGRectGetWidth(_8f); +objj_msgSend(_iconImageView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8e)-_92)/2,(CGRectGetHeight(_8e)-CGRectGetHeight(_90))/2)); +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8e)-_92)/2+_91,(CGRectGetHeight(_8e)-CGRectGetHeight(_8f))/2)); +} +} +})]); +p;16;_CPMenuManager.jt;8469;@STATIC;1.0;I;21;Foundation/CPObject.jt;8424; +objj_executeFile("Foundation/CPObject.j",NO); +_CPMenuManagerScrollingStateUp=-1,_CPMenuManagerScrollingStateDown=1,_CPMenuManagerScrollingStateNone=0; +var _1=500; +var _2=nil; +var _3=objj_allocateClassPair(CPObject,"_CPMenuManager"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_startTime"),new objj_ivar("_scrollingState"),new objj_ivar("_lastGlobalLocation"),new objj_ivar("_lastMouseOverMenuView"),new objj_ivar("_constraintRect"),new objj_ivar("_menuContainerStack"),new objj_ivar("_trackingCallback")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +if(_2){ +return _2; +} +return objj_msgSendSuper({receiver:_5,super_class:objj_getClass("_CPMenuManager").super_class},"init"); +} +}),new objj_method(sel_getUid("trackingMenuContainer"),function(_7,_8){ +with(_7){ +return _menuContainerStack[0]; +} +}),new objj_method(sel_getUid("trackingMenu"),function(_9,_a){ +with(_9){ +return objj_msgSend(objj_msgSend(_9,"trackingMenuContainer"),"menu"); +} +}),new objj_method(sel_getUid("beginTracking:menuContainer:constraintRect:callback:"),function(_b,_c,_d,_e,_f,_10){ +with(_b){ +var _11=objj_msgSend(_e,"menu"); +CPApp._activeMenu=_11; +_startTime=objj_msgSend(_d,"timestamp"); +_scrollingState=_CPMenuManagerScrollingStateNone; +_constraintRect=_f; +_menuContainerStack=[_e]; +_trackingCallback=_10; +if(_11===objj_msgSend(CPApp,"mainMenu")){ +var _12=objj_msgSend(_d,"globalLocation"); +var _13=objj_msgSend(_e,"convertGlobalToBase:",_12); +var _14=objj_msgSend(_e,"itemIndexAtPoint:",_13),_15=_14!==CPNotFound?objj_msgSend(_11,"itemAtIndex:",_14):nil; +_menuBarButtonItemIndex=_14; +_menuBarButtonMenuContainer=_e; +if(objj_msgSend(_15,"_isMenuBarButton")){ +return objj_msgSend(_b,"trackMenuBarButtonEvent:",_d); +} +} +objj_msgSend(_b,"trackEvent:",_d); +} +}),new objj_method(sel_getUid("trackEvent:"),function(_16,_17,_18){ +with(_16){ +var _19=objj_msgSend(_18,"type"),_1a=objj_msgSend(_16,"trackingMenu"); +if(_19===CPAppKitDefined){ +return objj_msgSend(_16,"completeTracking"); +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_16,sel_getUid("trackEvent:"),CPPeriodicMask|CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPAppKitDefinedMask,nil,nil,YES); +var _1b=_19===CPPeriodic?_lastGlobalLocation:objj_msgSend(_18,"globalLocation"); +_lastGlobalLocation=_1b; +var _1c=objj_msgSend(_16,"menuContainerForPoint:",_1b),_1d=objj_msgSend(_1c,"menu"),_1e=objj_msgSend(_1c,"convertGlobalToBase:",_1b); +var _1f=_1c?objj_msgSend(_1c,"itemIndexAtPoint:",_1e):CPNotFound,_20=_1f!==CPNotFound?objj_msgSend(_1d,"itemAtIndex:",_1f):nil; +if(!objj_msgSend(_20,"isEnabled")||objj_msgSend(_20,"_isMenuBarButton")){ +_1f=CPNotFound; +_20=nil; +} +var _21=objj_msgSend(_20,"view"); +if(_19===CPPeriodic){ +if(_scrollingState===_CPMenuManagerScrollingStateUp){ +objj_msgSend(_1c,"scrollUp"); +}else{ +if(_scrollingState===_CPMenuManagerScrollingStateDown){ +objj_msgSend(_1c,"scrollDown"); +} +} +} +if(_21){ +if(!_lastMouseOverMenuView){ +objj_msgSend(_1d,"_highlightItemAtIndex:",CPNotFound); +} +if(_lastMouseOverMenuView!=_21){ +objj_msgSend(_21,"mouseExited:",_18); +objj_msgSend(_lastMouseOverMenuView,"mouseEntered:",_18); +_lastMouseOverMenuView=_21; +} +var _22=_1c; +if(!objj_msgSend(_22,"isKindOfClass:",objj_msgSend(CPWindow,"class"))){ +_22=objj_msgSend(_22,"window"); +} +objj_msgSend(_22,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_19,_1e,objj_msgSend(_18,"modifierFlags"),objj_msgSend(_18,"timestamp"),_22,nil,0,objj_msgSend(_18,"clickCount"),objj_msgSend(_18,"pressure"))); +}else{ +if(_lastMouseOverMenuView){ +objj_msgSend(_lastMouseOverMenuView,"mouseExited:",_18); +_lastMouseOverMenuView=nil; +} +objj_msgSend(_1d,"_highlightItemAtIndex:",_1f); +if(_19===CPMouseMoved||_19===CPLeftMouseDragged||_19===CPLeftMouseDown){ +var _23=_scrollingState; +_scrollingState=objj_msgSend(_1c,"scrollingStateForPoint:",_1b); +if(_scrollingState!==_23){ +if(_scrollingState===_CPMenuManagerScrollingStateNone){ +objj_msgSend(CPEvent,"stopPeriodicEvents"); +}else{ +if(_23===_CPMenuManagerScrollingStateNone){ +objj_msgSend(CPEvent,"startPeriodicEventsAfterDelay:withPeriod:",0,0.04); +} +} +} +}else{ +if(_19===CPLeftMouseUp&&(objj_msgSend(_18,"timestamp")-_startTime>_1)){ +objj_msgSend(_1a,"cancelTracking"); +} +} +} +if(objj_msgSend(_20,"hasSubmenu")){ +var _24=objj_msgSend(_1c,"rectForItemAtIndex:",_1f); +if(objj_msgSend(_1c,"isMenuBar")){ +var _25=CGPointMake(CGRectGetMinX(_24),CGRectGetMaxY(_24)); +}else{ +var _25=CGPointMake(CGRectGetMaxX(_24),CGRectGetMinY(_24)); +} +_25=objj_msgSend(_1c,"convertBaseToGlobal:",_25); +objj_msgSend(_16,"showMenu:fromMenu:atPoint:",objj_msgSend(_20,"submenu"),objj_msgSend(_20,"menu"),_25); +}else{ +objj_msgSend(_16,"showMenu:fromMenu:atPoint:",nil,_1d,CGPointMakeZero()); +} +} +}),new objj_method(sel_getUid("trackMenuBarButtonEvent:"),function(_26,_27,_28){ +with(_26){ +var _29=objj_msgSend(_28,"type"); +if(_29===CPAppKitDefined){ +return objj_msgSend(_26,"completeTracking"); +} +var _2a=objj_msgSend(_28,"globalLocation"); +var _2b=objj_msgSend(_26,"trackingMenu"),_2c=objj_msgSend(_26,"trackingMenuContainer"),_2d=objj_msgSend(_2c,"convertGlobalToBase:",_2a); +if(objj_msgSend(_2c,"itemIndexAtPoint:",_2d)===_menuBarButtonItemIndex){ +objj_msgSend(_2b,"_highlightItemAtIndex:",_menuBarButtonItemIndex); +}else{ +objj_msgSend(_2b,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_26,sel_getUid("trackMenuBarButtonEvent:"),CPPeriodicMask|CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPAppKitDefinedMask,nil,nil,YES); +if(_29===CPLeftMouseUp){ +objj_msgSend(_2b,"cancelTracking"); +} +} +}),new objj_method(sel_getUid("completeTracking"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_2e,"trackingMenu"); +objj_msgSend(CPEvent,"stopPeriodicEvents"); +var _31=objj_msgSend(_30,"highlightedItem"); +objj_msgSend(_2e,"showMenu:fromMenu:atPoint:",nil,_30,nil); +var _32=objj_msgSend(_30,"delegate"); +if(objj_msgSend(_32,"respondsToSelector:",sel_getUid("menuDidClose:"))){ +objj_msgSend(_32,"menuDidClose:",_30); +} +if(_trackingCallback){ +_trackingCallback(objj_msgSend(_2e,"trackingMenuContainer"),_30); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPMenuDidEndTrackingNotification,_30); +CPApp._activeMenu=nil; +} +}),new objj_method(sel_getUid("menuContainerForPoint:"),function(_33,_34,_35){ +with(_33){ +var _36=objj_msgSend(_menuContainerStack,"count"),_37=_menuContainerStack[0]; +if(_36===1){ +return _37; +} +var _38=0,_39=_36-1; +if(objj_msgSend(_37,"isMenuBar")){ +if(CGRectContainsPoint(objj_msgSend(_37,"globalFrame"),_35)){ +return _37; +} +_38=1; +} +var _3a=_36,x=_35.x,_3b=Infinity,_3c=nil; +while(_3a-->_38){ +var _3d=_menuContainerStack[_3a],_3e=objj_msgSend(_3d,"globalFrame"),_3f=(_3e.origin.x),_40=(_3e.origin.x+_3e.size.width); +if(x<_40&&x>=_3f){ +return _3d; +} +if(_3a===_38||_3a===_39){ +var _41=ABS(x<_3f?_3f-x:_40-x); +if(_41<_3b){ +_3c=_3d; +_3b=_41; +} +} +} +return _3c; +} +}),new objj_method(sel_getUid("showMenu:fromMenu:atPoint:"),function(_42,_43,_44,_45,_46){ +with(_42){ +var _47=_menuContainerStack.length,_48=_47; +while(_48--){ +var _49=_menuContainerStack[_48],_4a=objj_msgSend(_49,"menu"); +if(_4a===_45){ +break; +} +if(_4a===_44){ +return objj_msgSend(_44,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(_49,"orderOut:",_42); +objj_msgSend(_49,"setMenu:",nil); +objj_msgSend(_CPMenuWindow,"poolMenuWindow:",_49); +objj_msgSend(_menuContainerStack,"removeObjectAtIndex:",_48); +} +if(!_44){ +return; +} +objj_msgSend(_44,"_highlightItemAtIndex:",CPNotFound); +var _4b=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_44,objj_msgSend(_menuContainerStack[0],"font")); +objj_msgSend(_menuContainerStack,"addObject:",_4b); +objj_msgSend(_4b,"setConstraintRect:",_constraintRect); +if(_45===objj_msgSend(_42,"trackingMenu")&&objj_msgSend(objj_msgSend(_42,"trackingMenuContainer"),"isMenuBar")){ +objj_msgSend(_4b,"setBackgroundStyle:",_CPMenuWindowMenuBarBackgroundStyle); +}else{ +objj_msgSend(_4b,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +} +objj_msgSend(_4b,"setFrameOrigin:",_46); +objj_msgSend(_4b,"orderFront:",_42); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedMenuManager"),function(_4c,_4d){ +with(_4c){ +if(!_2){ +_2=objj_msgSend(objj_msgSend(_CPMenuManager,"alloc"),"init"); +} +return _2; +} +})]); +p;15;_CPMenuWindow.jt;17126;@STATIC;1.0;t;17106; +var _1=[],_2=5,_3=[]; +_CPMenuWindowMenuBarBackgroundStyle=0; +_CPMenuWindowPopUpBackgroundStyle=1; +_CPMenuWindowAttachedMenuBackgroundStyle=2; +var _4=500,_5=5,_6=1,_7=1,_8=5,_9=16; +var _a=objj_allocateClassPair(CPWindow,"_CPMenuWindow"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuView"),new objj_ivar("_menuClipView"),new objj_ivar("_moreAboveView"),new objj_ivar("_moreBelowView"),new objj_ivar("_unconstrainedFrame"),new objj_ivar("_constraintRect")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("initWithContentRect:styleMask:"),function(_c,_d,_e,_f){ +with(_c){ +_constraintRect={origin:{x:0,y:0},size:{width:0,height:0}}; +_unconstrainedFrame={origin:{x:0,y:0},size:{width:0,height:0}}; +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPMenuWindow").super_class},"initWithContentRect:styleMask:",_e,CPBorderlessWindowMask); +if(_c){ +objj_msgSend(_c,"setLevel:",CPPopUpMenuWindowLevel); +objj_msgSend(_c,"setHasShadow:",YES); +objj_msgSend(_c,"setShadowStyle:",CPMenuWindowShadowStyle); +objj_msgSend(_c,"setAcceptsMouseMovedEvents:",YES); +var _10=objj_msgSend(_c,"contentView"); +_menuView=objj_msgSend(objj_msgSend(_CPMenuView,"alloc"),"initWithFrame:",CGRectMakeZero()); +_menuClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"initWithFrame:",CGRectMake(_6,_5,0,0)); +objj_msgSend(_menuClipView,"setDocumentView:",_menuView); +objj_msgSend(_10,"addSubview:",_menuClipView); +_moreAboveView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_moreAboveView,"setImage:",_CPMenuWindowMoreAboveImage); +objj_msgSend(_moreAboveView,"setFrameSize:",objj_msgSend(_CPMenuWindowMoreAboveImage,"size")); +objj_msgSend(_10,"addSubview:",_moreAboveView); +_moreBelowView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_moreBelowView,"setImage:",_CPMenuWindowMoreBelowImage); +objj_msgSend(_moreBelowView,"setFrameSize:",objj_msgSend(_CPMenuWindowMoreBelowImage,"size")); +objj_msgSend(_10,"addSubview:",_moreBelowView); +objj_msgSend(_c,"setShadowStyle:",CPWindowShadowStyleMenu); +} +return _c; +} +}),new objj_method(sel_getUid("setFont:"),function(_11,_12,_13){ +with(_11){ +objj_msgSend(_menuView,"setFont:",_13); +} +}),new objj_method(sel_getUid("font"),function(_14,_15){ +with(_14){ +return objj_msgSend(_menuView,"font"); +} +}),new objj_method(sel_getUid("setBackgroundStyle:"),function(_16,_17,_18){ +with(_16){ +objj_msgSend(_16,"setBackgroundColor:",objj_msgSend(objj_msgSend(_16,"class"),"backgroundColorForBackgroundStyle:",_18)); +} +}),new objj_method(sel_getUid("setMenu:"),function(_19,_1a,_1b){ +with(_19){ +objj_msgSend(_1b,"_setMenuWindow:",_19); +objj_msgSend(_menuView,"setMenu:",_1b); +var _1c=objj_msgSend(_menuView,"frame").size; +objj_msgSend(_19,"setFrameSize:",CGSizeMake(_6+_1c.width+_7,_5+_1c.height+_8)); +objj_msgSend(_menuView,"scrollPoint:",CGPointMake(0,0)); +objj_msgSend(_menuClipView,"setFrame:",CGRectMake(_6,_5,_1c.width,_1c.height)); +} +}),new objj_method(sel_getUid("setMinWidth:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=objj_msgSend(_1d,"unconstrainedFrame").size; +objj_msgSend(_1d,"setFrameSize:",CGSizeMake(MAX(_20.width,_1f),_20.height)); +} +}),new objj_method(sel_getUid("menu"),function(_21,_22){ +with(_21){ +return objj_msgSend(_menuView,"menu"); +} +}),new objj_method(sel_getUid("orderFront:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(_23,"setFrame:",_unconstrainedFrame); +objj_msgSendSuper({receiver:_23,super_class:objj_getClass("_CPMenuWindow").super_class},"orderFront:",_25); +} +}),new objj_method(sel_getUid("setConstraintRect:"),function(_26,_27,_28){ +with(_26){ +_constraintRect=_28; +objj_msgSend(_26,"setFrame:",_unconstrainedFrame); +} +}),new objj_method(sel_getUid("unconstrainedFrame"),function(_29,_2a){ +with(_29){ +return {origin:{x:_unconstrainedFrame.origin.x,y:_unconstrainedFrame.origin.y},size:{width:_unconstrainedFrame.size.width,height:_unconstrainedFrame.size.height}}; +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:",{origin:{x:_2d.x,y:_2d.y},size:{width:(_unconstrainedFrame.size.width),height:(_unconstrainedFrame.size.height)}}); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSendSuper({receiver:_2e,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:",{origin:{x:(_unconstrainedFrame.origin.x),y:(_unconstrainedFrame.origin.y)},size:{width:_30.width,height:_30.height}}); +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_31,_32,_33,_34,_35){ +with(_31){ +_unconstrainedFrame={origin:{x:_33.origin.x,y:_33.origin.y},size:{width:_33.size.width,height:_33.size.height}}; +var _36=CGRectIntersection(_unconstrainedFrame,_constraintRect); +_36.origin.x=CGRectGetMinX(_unconstrainedFrame); +_36.size.width=CGRectGetWidth(_unconstrainedFrame); +if(CGRectGetWidth(_36)>CGRectGetWidth(_constraintRect)){ +_36.size.width=CGRectGetWidth(_constraintRect); +} +if(CGRectGetMaxX(_36)>CGRectGetMaxX(_constraintRect)){ +_36.origin.x-=CGRectGetMaxX(_36)-CGRectGetMaxX(_constraintRect); +} +if(CGRectGetMinX(_36)<CGRectGetMinX(_constraintRect)){ +_36.origin.x=CGRectGetMinX(_constraintRect); +} +objj_msgSendSuper({receiver:_31,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:display:animate:",_36,_34,_35); +var _37=CGPointMake(CGRectGetMinX(_33)+_6,CGRectGetMinY(_33)+_5),_38=_37.y<CGRectGetMinY(_36)+_5,_39=_37.y+CGRectGetHeight(objj_msgSend(_menuView,"frame"))>CGRectGetMaxY(_36)-_8,_3a=_5,_3b=_8,_3c=objj_msgSend(_31,"contentView"),_3d=objj_msgSend(_3c,"bounds"); +if(_38){ +_3a+=_9; +var _3e=objj_msgSend(_moreAboveView,"frame"); +objj_msgSend(_moreAboveView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_3d)-CGRectGetWidth(_3e))/2,(_5+_9-CGRectGetHeight(_3e))/2)); +} +objj_msgSend(_moreAboveView,"setHidden:",!_38); +if(_39){ +_3b+=_9; +objj_msgSend(_moreBelowView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_3d)-CGRectGetWidth(objj_msgSend(_moreBelowView,"frame")))/2,CGRectGetHeight(_3d)-_9-_8)); +} +objj_msgSend(_moreBelowView,"setHidden:",!_39); +var _3f=CGRectMake(_6,_3a,CGRectGetWidth(_36)-_6-_7,CGRectGetHeight(_36)-_3a-_3b); +objj_msgSend(_menuClipView,"setFrame:",_3f); +objj_msgSend(_menuView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_3f),CGRectGetHeight(objj_msgSend(_menuView,"frame")))); +objj_msgSend(_menuView,"scrollPoint:",CGPointMake(0,objj_msgSend(_31,"convertBaseToGlobal:",_3f.origin).y-_37.y)); +} +}),new objj_method(sel_getUid("hasMinimumNumberOfVisibleItems"),function(_40,_41){ +with(_40){ +var _42=objj_msgSend(_menuView,"visibleRect"); +if(CGRectIsEmpty(_42)){ +return NO; +} +var _43=objj_msgSend(_menuView,"numberOfUnhiddenItems"),_44=MIN(_43,3),_45=0,_46=objj_msgSend(_menuView,"itemIndexAtPoint:",objj_msgSend(_menuView,"convertPoint:fromView:",objj_msgSend(_menuClipView,"frame").origin,nil)); +for(;_46<_43&&_45<_44;++_46){ +var _47=objj_msgSend(_menuView,"rectForUnhiddenItemAtIndex:",_46),_48=CGRectIntersection(_42,_47); +if(CGRectIsEmpty(_48)){ +break; +} +if(CGRectEqualToRect(_48,_47)){ +++_45; +} +} +return _45>=_44; +} +}),new objj_method(sel_getUid("canScrollUp"),function(_49,_4a){ +with(_49){ +return !objj_msgSend(_moreAboveView,"isHidden"); +} +}),new objj_method(sel_getUid("canScrollDown"),function(_4b,_4c){ +with(_4b){ +return !objj_msgSend(_moreBelowView,"isHidden"); +} +}),new objj_method(sel_getUid("canScroll"),function(_4d,_4e){ +with(_4d){ +return objj_msgSend(_4d,"canScrollUp")||objj_msgSend(_4d,"canScrollDown"); +} +}),new objj_method(sel_getUid("scrollUp"),function(_4f,_50){ +with(_4f){ +if(CGRectGetMinY(_unconstrainedFrame)>=CGRectGetMinY(_constraintRect)){ +return; +} +_unconstrainedFrame.origin.y+=10; +objj_msgSend(_4f,"setFrame:",_unconstrainedFrame); +} +}),new objj_method(sel_getUid("scrollDown"),function(_51,_52){ +with(_51){ +if(CGRectGetMaxY(_unconstrainedFrame)<=CGRectGetHeight(_constraintRect)){ +return; +} +_unconstrainedFrame.origin.y-=10; +objj_msgSend(_51,"setFrame:",_unconstrainedFrame); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("menuWindowWithMenu:font:"),function(_53,_54,_55,_56){ +with(_53){ +var _57=nil; +if(_1.length){ +_57=_1.pop(); +objj_msgSend(_57,"setFrameOrigin:",CGPointMakeZero()); +}else{ +_57=objj_msgSend(objj_msgSend(_CPMenuWindow,"alloc"),"init"); +} +objj_msgSend(_57,"setFont:",_56); +objj_msgSend(_57,"setMenu:",_55); +objj_msgSend(_57,"setMinWidth:",objj_msgSend(_55,"minimumWidth")); +return _57; +} +}),new objj_method(sel_getUid("poolMenuWindow:"),function(_58,_59,_5a){ +with(_58){ +if(!_5a||_1.length>=_2){ +return; +} +_1.push(_5a); +} +}),new objj_method(sel_getUid("initialize"),function(_5b,_5c){ +with(_5b){ +if(_5b!=objj_msgSend(_CPMenuWindow,"class")){ +return; +} +var _5d=objj_msgSend(CPBundle,"bundleForClass:",_5b); +_CPMenuWindowMoreAboveImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5d,"pathForResource:","_CPMenuWindow/_CPMenuWindowMoreAbove.png"),CGSizeMake(38,18)); +_CPMenuWindowMoreBelowImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5d,"pathForResource:","_CPMenuWindow/_CPMenuWindowMoreBelow.png"),CGSizeMake(38,18)); +} +}),new objj_method(sel_getUid("_standardLeftMargin"),function(_5e,_5f){ +with(_5e){ +return _6; +} +}),new objj_method(sel_getUid("backgroundColorForBackgroundStyle:"),function(_60,_61,_62){ +with(_60){ +var _63=_3[_62]; +if(!_63){ +var _64=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_60,"class")); +if(_62==_CPMenuWindowPopUpBackgroundStyle){ +_63=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded0.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow1.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded2.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded6.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow7.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded8.png"),CGSizeMake(4,4))])); +}else{ +if(_62==_CPMenuWindowMenuBarBackgroundStyle){ +_63=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded6.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow7.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded8.png"),CGSizeMake(4,4))])); +} +} +_3[_62]=_63; +} +return _63; +} +})]); +var _a=objj_getClass("_CPMenuWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"_CPMenuWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("globalFrame"),function(_65,_66){ +with(_65){ +return objj_msgSend(_65,"frame"); +} +}),new objj_method(sel_getUid("isMenuBar"),function(_67,_68){ +with(_67){ +return NO; +} +}),new objj_method(sel_getUid("scrollingStateForPoint:"),function(_69,_6a,_6b){ +with(_69){ +var _6c=objj_msgSend(_69,"frame"); +if(!objj_msgSend(_69,"canScroll")){ +return _CPMenuManagerScrollingStateNone; +} +if(_6b.y<CGRectGetMinY(_6c)+_5+_9){ +return _CPMenuManagerScrollingStateUp; +} +if(_6b.y>CGRectGetMaxY(_6c)-_8-_9){ +return _CPMenuManagerScrollingStateDown; +} +return _CPMenuManagerScrollingStateNone; +} +}),new objj_method(sel_getUid("deltaYForItemAtIndex:"),function(_6d,_6e,_6f){ +with(_6d){ +return _5+CGRectGetMinY(objj_msgSend(_menuView,"rectForItemAtIndex:",_6f)); +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_70,_71,_72){ +with(_70){ +return objj_msgSend(_menuView,"convertRect:toView:",objj_msgSend(_menuView,"rectForItemAtIndex:",_72),nil); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_73,_74,_75){ +with(_73){ +if(!CGRectContainsPoint(objj_msgSend(_menuClipView,"bounds"),objj_msgSend(_menuClipView,"convertPoint:fromView:",_75,nil))){ +return NO; +} +return objj_msgSend(_menuView,"itemIndexAtPoint:",objj_msgSend(_menuView,"convertPoint:fromView:",_75,nil)); +} +})]); +var _a=objj_allocateClassPair(CPView,"_CPMenuView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuItemViews"),new objj_ivar("_visibleMenuItemInfos"),new objj_ivar("_font")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("font"),function(_76,_77){ +with(_76){ +return _font; +} +}),new objj_method(sel_getUid("setFont:"),function(_78,_79,_7a){ +with(_78){ +_font=_7a; +} +}),new objj_method(sel_getUid("numberOfUnhiddenItems"),function(_7b,_7c){ +with(_7b){ +return _visibleMenuItemInfos.length; +} +}),new objj_method(sel_getUid("rectForUnhiddenItemAtIndex:"),function(_7d,_7e,_7f){ +with(_7d){ +return objj_msgSend(_7d,"rectForItemAtIndex:",_visibleMenuItemInfos[_7f].index); +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_80,_81,_82){ +with(_80){ +return objj_msgSend(_menuItemViews[_82===CPNotFound?0:_82],"frame"); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_83,_84,_85){ +with(_83){ +var x=_85.x,_86=objj_msgSend(_83,"bounds"); +if(x<CGRectGetMinX(_86)||x>CGRectGetMaxX(_86)){ +return CPNotFound; +} +var y=_85.y,low=0,_87=_visibleMenuItemInfos.length-1; +while(low<=_87){ +var _88=FLOOR(low+(_87-low)/2),_89=_visibleMenuItemInfos[_88]; +frame=objj_msgSend(_89.view,"frame"); +if(y<CGRectGetMinY(frame)){ +_87=_88-1; +}else{ +if(y>CGRectGetMaxY(frame)){ +low=_88+1; +}else{ +return _89.index; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tile"),function(_8a,_8b){ +with(_8a){ +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +_menuItemViews=[]; +_visibleMenuItemInfos=[]; +var _8c=objj_msgSend(_8a,"menu"); +if(!_8c){ +return; +} +var _8d=objj_msgSend(_8c,"itemArray"),_8e=0,_8f=objj_msgSend(_8d,"count"),_90=0,y=0,_91=objj_msgSend(_8c,"showsStateColumn"); +for(;_8e<_8f;++_8e){ +var _92=_8d[_8e],_93=objj_msgSend(_92,"_menuItemView"); +_menuItemViews.push(_93); +if(objj_msgSend(_92,"isHidden")){ +continue; +} +_visibleMenuItemInfos.push({view:_93,index:_8e}); +objj_msgSend(_93,"setFont:",_font); +objj_msgSend(_93,"setShowsStateColumn:",_91); +objj_msgSend(_93,"synchronizeWithMenuItem"); +objj_msgSend(_93,"setFrameOrigin:",CGPointMake(0,y)); +objj_msgSend(_8a,"addSubview:",_93); +var _94=objj_msgSend(_93,"minSize"),_95=_94.width; +if(_90<_95){ +_90=_95; +} +y+=_94.height; +} +for(_8e=0;_8e<_8f;++_8e){ +var _93=_menuItemViews[_8e]; +objj_msgSend(_93,"setFrameSize:",CGSizeMake(_90,CGRectGetHeight(objj_msgSend(_93,"frame")))); +} +objj_msgSend(_8a,"setAutoresizesSubviews:",NO); +objj_msgSend(_8a,"setFrameSize:",CGSizeMake(_90,y)); +objj_msgSend(_8a,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("setMenu:"),function(_96,_97,_98){ +with(_96){ +objj_msgSendSuper({receiver:_96,super_class:objj_getClass("_CPMenuView").super_class},"setMenu:",_98); +objj_msgSend(_96,"tile"); +} +})]); +p;8;CPMenu.jt;23316;@STATIC;1.0;I;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPString.ji;16;_CPMenuManager.ji;15;CPApplication.ji;12;CPClipView.ji;12;CPMenuItem.ji;9;CPPanel.ji;18;_CPMenuBarWindow.ji;15;_CPMenuWindow.jt;23046; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("_CPMenuManager.j",YES); +objj_executeFile("CPApplication.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPMenuItem.j",YES); +objj_executeFile("CPPanel.j",YES); +CPMenuDidAddItemNotification="CPMenuDidAddItemNotification"; +CPMenuDidChangeItemNotification="CPMenuDidChangeItemNotification"; +CPMenuDidRemoveItemNotification="CPMenuDidRemoveItemNotification"; +CPMenuDidEndTrackingNotification="CPMenuDidEndTrackingNotification"; +var _1=28; +var _2=NO,_3="",_4=nil,_5=1,_6=nil,_7=nil; +var _8=objj_allocateClassPair(CPObject,"CPMenu"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_supermenu"),new objj_ivar("_title"),new objj_ivar("_name"),new objj_ivar("_font"),new objj_ivar("_minimumWidth"),new objj_ivar("_items"),new objj_ivar("_autoenablesItems"),new objj_ivar("_showsStateColumn"),new objj_ivar("_delegate"),new objj_ivar("_highlightedIndex"),new objj_ivar("_menuWindow")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("menuBarHeight"),function(_a,_b){ +with(_a){ +if(_a===objj_msgSend(CPApp,"mainMenu")){ +return _1; +} +return 0; +} +}),new objj_method(sel_getUid("initWithTitle:"),function(_c,_d,_e){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPMenu").super_class},"init"); +if(_c){ +_title=_e; +_items=[]; +_autoenablesItems=YES; +_showsStateColumn=YES; +objj_msgSend(_c,"setMinimumWidth:",0); +} +return _c; +} +}),new objj_method(sel_getUid("init"),function(_f,_10){ +with(_f){ +return objj_msgSend(_f,"initWithTitle:",""); +} +}),new objj_method(sel_getUid("insertItem:atIndex:"),function(_11,_12,_13,_14){ +with(_11){ +var _15=objj_msgSend(_13,"menu"); +if(_15){ +if(_15!==_11){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Attempted to insert item into menu that was already in another menu."); +}else{ +return; +} +} +objj_msgSend(_13,"setMenu:",_11); +objj_msgSend(_items,"insertObject:atIndex:",_13,_14); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidAddItemNotification,_11,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_14,"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("insertItemWithTitle:action:keyEquivalent:atIndex:"),function(_16,_17,_18,_19,_1a,_1b){ +with(_16){ +var _1c=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",_18,_19,_1a); +objj_msgSend(_16,"insertItem:atIndex:",_1c,_1b); +return _1c; +} +}),new objj_method(sel_getUid("addItem:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_1d,"insertItem:atIndex:",_1f,objj_msgSend(_items,"count")); +} +}),new objj_method(sel_getUid("addItemWithTitle:action:keyEquivalent:"),function(_20,_21,_22,_23,_24){ +with(_20){ +return objj_msgSend(_20,"insertItemWithTitle:action:keyEquivalent:atIndex:",_22,_23,_24,objj_msgSend(_items,"count")); +} +}),new objj_method(sel_getUid("removeItem:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_25,"removeItemAtIndex:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_27)); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_28,_29,_2a){ +with(_28){ +if(_2a<0||_2a>=_items.length){ +return; +} +objj_msgSend(_items[_2a],"setMenu:",nil); +objj_msgSend(_items,"removeObjectAtIndex:",_2a); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidRemoveItemNotification,_28,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_2a,"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("itemChanged:"),function(_2b,_2c,_2d){ +with(_2b){ +if(objj_msgSend(_2d,"menu")!=_2b){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidChangeItemNotification,_2b,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_2d),"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("itemWithTag:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=objj_msgSend(_2e,"indexOfItemWithTag:",_30); +if(_31==CPNotFound){ +return nil; +} +return _items[_31]; +} +}),new objj_method(sel_getUid("itemWithTitle:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"indexOfItemWithTitle:",_34); +if(_35==CPNotFound){ +return nil; +} +return _items[_35]; +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_36,_37,_38){ +with(_36){ +return objj_msgSend(_items,"objectAtIndex:",_38); +} +}),new objj_method(sel_getUid("numberOfItems"),function(_39,_3a){ +with(_39){ +return objj_msgSend(_items,"count"); +} +}),new objj_method(sel_getUid("itemArray"),function(_3b,_3c){ +with(_3b){ +return _items; +} +}),new objj_method(sel_getUid("indexOfItem:"),function(_3d,_3e,_3f){ +with(_3d){ +if(objj_msgSend(_3f,"menu")!==_3d){ +return CPNotFound; +} +return objj_msgSend(_items,"indexOfObjectIdenticalTo:",_3f); +} +}),new objj_method(sel_getUid("indexOfItemWithTitle:"),function(_40,_41,_42){ +with(_40){ +var _43=0,_44=_items.length; +for(;_43<_44;++_43){ +if(objj_msgSend(_items[_43],"title")===_42){ +return _43; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithTag:"),function(_45,_46,_47){ +with(_45){ +var _48=0,_49=_items.length; +for(;_48<_49;++_48){ +if(objj_msgSend(_items[_48],"tag")==_47){ +return _48; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithTarget:andAction:"),function(_4a,_4b,_4c,_4d){ +with(_4a){ +var _4e=0,_4f=_items.length; +for(;_4e<_4f;++_4e){ +var _50=_items[_4e]; +if(objj_msgSend(_50,"target")==_4c&&(!_4d||objj_msgSend(_50,"action")==_4d)){ +return _4e; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"),function(_51,_52,_53){ +with(_51){ +var _54=0,_55=_items.length; +for(;_54<_55;++_54){ +if(objj_msgSend(objj_msgSend(_items[_54],"representedObject"),"isEqual:",_53)){ +return _54; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithSubmenu:"),function(_56,_57,_58){ +with(_56){ +var _59=0,_5a=_items.length; +for(;_59<_5a;++_59){ +if(objj_msgSend(_items[_59],"submenu")==_58){ +return _59; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("setSubmenu:forItem:"),function(_5b,_5c,_5d,_5e){ +with(_5b){ +objj_msgSend(_5e,"setTarget:",_5e); +objj_msgSend(_5e,"setAction:",sel_getUid("submenuAction:")); +objj_msgSend(_5e,"setSubmenu:",_5d); +} +}),new objj_method(sel_getUid("submenuAction:"),function(_5f,_60,_61){ +with(_5f){ +} +}),new objj_method(sel_getUid("supermenu"),function(_62,_63){ +with(_62){ +return _supermenu; +} +}),new objj_method(sel_getUid("setSupermenu:"),function(_64,_65,_66){ +with(_64){ +_supermenu=_66; +} +}),new objj_method(sel_getUid("isTornOff"),function(_67,_68){ +with(_67){ +return !_supermenu||_67==objj_msgSend(CPApp,"mainMenu"); +} +}),new objj_method(sel_getUid("setAutoenablesItems:"),function(_69,_6a,_6b){ +with(_69){ +_autoenablesItems=_6b; +} +}),new objj_method(sel_getUid("autoenablesItems"),function(_6c,_6d){ +with(_6c){ +return _autoenablesItems; +} +}),new objj_method(sel_getUid("update"),function(_6e,_6f){ +with(_6e){ +} +}),new objj_method(sel_getUid("setTitle:"),function(_70,_71,_72){ +with(_70){ +_title=_72; +} +}),new objj_method(sel_getUid("title"),function(_73,_74){ +with(_73){ +return _title; +} +}),new objj_method(sel_getUid("setMinimumWidth:"),function(_75,_76,_77){ +with(_75){ +_minimumWidth=_77; +} +}),new objj_method(sel_getUid("minimumWidth"),function(_78,_79){ +with(_78){ +return _minimumWidth; +} +}),new objj_method(sel_getUid("_performActionOfHighlightedItemChain"),function(_7a,_7b){ +with(_7a){ +var _7c=objj_msgSend(_7a,"highlightedItem"); +while(objj_msgSend(_7c,"submenu")&&objj_msgSend(_7c,"action")===sel_getUid("submenuAction:")){ +_7c=objj_msgSend(objj_msgSend(_7c,"submenu"),"highlightedItem"); +} +if(_7c&&objj_msgSend(_7c,"isEnabled")){ +objj_msgSend(CPApp,"sendAction:to:from:",objj_msgSend(_7c,"action"),objj_msgSend(_7c,"target"),_7c); +} +} +}),new objj_method(sel_getUid("popUpMenuPositioningItem:atLocation:inView:callback:"),function(_7d,_7e,_7f,_80,_81,_82){ +with(_7d){ +objj_msgSend(_7d,"_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:",_7f,_80,_80.y,_80.y,_81,_82); +} +}),new objj_method(sel_getUid("_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:"),function(_83,_84,_85,_86,_87,_88,_89,_8a){ +with(_83){ +var _8b=0; +if(_85){ +_8b=objj_msgSend(_83,"indexOfItem:",_85); +if(_8b===CPNotFound){ +throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, menu item "+_85+" is not present in menu "+_83; +} +} +var _8c=objj_msgSend(_89,"window"); +if(_89&&!_8c){ +throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, view is not in any window."; +} +var _8d=objj_msgSend(_83,"delegate"); +if(objj_msgSend(_8d,"respondsToSelector:",sel_getUid("menuWillOpen:"))){ +objj_msgSend(_8d,"menuWillOpen:",aMenu); +} +if(_89){ +_86=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",_86,nil)); +} +var _8e=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_83,objj_msgSend(_83,"font")); +objj_msgSend(_8e,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +if(_85){ +_86.y-=objj_msgSend(_8e,"deltaYForItemAtIndex:",_8b); +} +var _8f=objj_msgSend(CPMenu,"_constraintRectForView:",_89); +objj_msgSend(_8e,"setFrameOrigin:",_86); +objj_msgSend(_8e,"setConstraintRect:",_8f); +if(!objj_msgSend(_8e,"hasMinimumNumberOfVisibleItems")){ +var _90=objj_msgSend(_8e,"unconstrainedFrame"),_91=CGRectGetMinY(_90); +if(_91>=CGRectGetMaxY(_8f)||objj_msgSend(_8e,"canScrollDown")){ +if(_89){ +_87=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",CGPointMake(0,_87),nil)).y; +} +_90.origin.y=MIN(CGRectGetMaxY(_8f),_87)-CGRectGetHeight(_90); +}else{ +if(_91<CGRectGetMinY(_8f)||objj_msgSend(_8e,"canScrollUp")){ +if(_89){ +_88=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",CGPointMake(0,_88),nil)).y; +} +_90.origin.y=MAX(CGRectGetMinY(_8f),_88); +} +} +objj_msgSend(_8e,"setFrameOrigin:",CGRectIntersection(_90,_8f).origin); +} +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_8e,"setPlatformWindow:",objj_msgSend(objj_msgSend(_89,"window"),"platformWindow")); +} +objj_msgSend(_8e,"orderFront:",_83); +objj_msgSend(objj_msgSend(_CPMenuManager,"sharedMenuManager"),"beginTracking:menuContainer:constraintRect:callback:",objj_msgSend(CPApp,"currentEvent"),_8e,_8f,objj_msgSend(CPMenu,"trackingCallbackWithCallback:",_8a)); +} +}),new objj_method(sel_getUid("setShowsStateColumn:"),function(_92,_93,_94){ +with(_92){ +_showsStateColumn=_94; +} +}),new objj_method(sel_getUid("showsStateColumn"),function(_95,_96){ +with(_95){ +return _showsStateColumn; +} +}),new objj_method(sel_getUid("highlightedItem"),function(_97,_98){ +with(_97){ +return _highlightedIndex>=0?_items[_highlightedIndex]:nil; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_99,_9a,_9b){ +with(_99){ +_delegate=_9b; +} +}),new objj_method(sel_getUid("delegate"),function(_9c,_9d){ +with(_9c){ +return _delegate; +} +}),new objj_method(sel_getUid("cancelTracking"),function(_9e,_9f){ +with(_9e){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("_fireCancelTrackingEvent"),_9e,nil,0,[CPDefaultRunLoopMode]); +} +}),new objj_method(sel_getUid("_fireCancelTrackingEvent"),function(_a0,_a1){ +with(_a0){ +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",CPAppKitDefined,{x:0,y:0},0,0,0,0,0,0,0)); +objj_msgSend(_CPDisplayServer,"run"); +} +}),new objj_method(sel_getUid("_setMenuWindow:"),function(_a2,_a3,_a4){ +with(_a2){ +_menuWindow=_a4; +} +}),new objj_method(sel_getUid("setFont:"),function(_a5,_a6,_a7){ +with(_a5){ +_font=_a7; +} +}),new objj_method(sel_getUid("font"),function(_a8,_a9){ +with(_a8){ +return _font; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_aa,_ab,_ac){ +with(_aa){ +if(_autoenablesItems){ +objj_msgSend(_aa,"update"); +} +var _ad=0,_ae=_items.length,_af=objj_msgSend(_ac,"charactersIgnoringModifiers"),_b0=objj_msgSend(_ac,"modifierFlags"); +for(;_ad<_ae;++_ad){ +var _b1=_items[_ad],_b2=objj_msgSend(_b1,"keyEquivalentModifierMask"); +if(objj_msgSend(_ac,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(_b1,"keyEquivalent"),objj_msgSend(_b1,"keyEquivalentModifierMask"))){ +if(objj_msgSend(_b1,"isEnabled")){ +objj_msgSend(_aa,"performActionForItemAtIndex:",_ad); +}else{ +} +return YES; +} +if(objj_msgSend(objj_msgSend(_b1,"submenu"),"performKeyEquivalent:",_ac)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("performActionForItemAtIndex:"),function(_b3,_b4,_b5){ +with(_b3){ +var _b6=_items[_b5]; +objj_msgSend(CPApp,"sendAction:to:from:",objj_msgSend(_b6,"action"),objj_msgSend(_b6,"target"),_b6); +} +}),new objj_method(sel_getUid("_itemIsHighlighted:"),function(_b7,_b8,_b9){ +with(_b7){ +return _items[_highlightedIndex]==_b9; +} +}),new objj_method(sel_getUid("_highlightItemAtIndex:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_highlightedIndex===_bc){ +return; +} +if(_highlightedIndex!==CPNotFound){ +objj_msgSend(objj_msgSend(_items[_highlightedIndex],"_menuItemView"),"highlight:",NO); +} +_highlightedIndex=_bc; +if(_highlightedIndex!==CPNotFound){ +objj_msgSend(objj_msgSend(_items[_highlightedIndex],"_menuItemView"),"highlight:",YES); +} +} +}),new objj_method(sel_getUid("_setMenuName:"),function(_bd,_be,_bf){ +with(_bd){ +if(_name===_bf){ +return; +} +_name=_bf; +if(_name==="CPMainMenu"){ +objj_msgSend(CPApp,"setMainMenu:",_bd); +} +} +}),new objj_method(sel_getUid("_menuName"),function(_c0,_c1){ +with(_c0){ +return _name; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_c2,_c3){ +with(_c2){ +if(_name==="_CPMainMenu"){ +objj_msgSend(_c2,"_setMenuName:","CPMainMenu"); +objj_msgSend(CPMenu,"setMenuBarVisible:",YES); +} +} +}),new objj_method(sel_getUid("_menuWithName:"),function(_c4,_c5,_c6){ +with(_c4){ +if(_c6===_name){ +return _c4; +} +for(var i=0,_c7=objj_msgSend(_items,"count");i<_c7;i++){ +var _c8=objj_msgSend(objj_msgSend(_items[i],"submenu"),"_menuWithName:",_c6); +if(_c8){ +return _c8; +} +} +return nil; +} +})]); +class_addMethods(_9,[new objj_method(sel_getUid("initialize"),function(_c9,_ca){ +with(_c9){ +objj_msgSend(objj_msgSend(_c9,"class"),"setMenuBarAttributes:",objj_msgSend(CPDictionary,"dictionary")); +} +}),new objj_method(sel_getUid("menuBarVisible"),function(_cb,_cc){ +with(_cb){ +return _2; +} +}),new objj_method(sel_getUid("setMenuBarVisible:"),function(_cd,_ce,_cf){ +with(_cd){ +if(_2===_cf){ +return; +} +_2=_cf; +if(objj_msgSend(CPPlatform,"supportsNativeMainMenu")){ +return; +} +if(_cf){ +if(!_7){ +_7=objj_msgSend(objj_msgSend(_CPMenuBarWindow,"alloc"),"init"); +} +objj_msgSend(_7,"setMenu:",objj_msgSend(CPApp,"mainMenu")); +objj_msgSend(_7,"setTitle:",_3); +objj_msgSend(_7,"setIconImage:",_4); +objj_msgSend(_7,"setIconImageAlphaValue:",_5); +objj_msgSend(_7,"setColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarBackgroundColor")); +objj_msgSend(_7,"setTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextColor")); +objj_msgSend(_7,"setTitleColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleColor")); +objj_msgSend(_7,"setTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextShadowColor")); +objj_msgSend(_7,"setTitleShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleShadowColor")); +objj_msgSend(_7,"setHighlightColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightColor")); +objj_msgSend(_7,"setHighlightTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextColor")); +objj_msgSend(_7,"setHighlightTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextShadowColor")); +objj_msgSend(_7,"orderFront:",_cd); +}else{ +objj_msgSend(_7,"orderOut:",_cd); +} +objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"resizeEvent:",nil); +} +}),new objj_method(sel_getUid("setMenuBarTitle:"),function(_d0,_d1,_d2){ +with(_d0){ +_3=_d2; +objj_msgSend(_7,"setTitle:",_3); +} +}),new objj_method(sel_getUid("menuBarTitle"),function(_d3,_d4){ +with(_d3){ +return _3; +} +}),new objj_method(sel_getUid("setMenuBarIconImage:"),function(_d5,_d6,_d7){ +with(_d5){ +_CPMenuBarImage=_d7; +objj_msgSend(_7,"setIconImage:",_d7); +} +}),new objj_method(sel_getUid("menuBarIconImage"),function(_d8,_d9){ +with(_d8){ +return _CPMenuBarImage; +} +}),new objj_method(sel_getUid("setMenuBarAttributes:"),function(_da,_db,_dc){ +with(_da){ +if(_6==_dc){ +return; +} +_6=objj_msgSend(_dc,"copy"); +var _dd=objj_msgSend(_dc,"objectForKey:","CPMenuBarTextColor"),_de=objj_msgSend(_dc,"objectForKey:","CPMenuBarTitleColor"),_df=objj_msgSend(_dc,"objectForKey:","CPMenuBarTextShadowColor"),_e0=objj_msgSend(_dc,"objectForKey:","CPMenuBarTitleShadowColor"),_e1=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightColor"),_e2=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightTextColor"),_e3=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightTextShadowColor"); +if(!_dd&&_de){ +objj_msgSend(_6,"setObject:forKey:",_de,"CPMenuBarTextColor"); +}else{ +if(_dd&&!_de){ +objj_msgSend(_6,"setObject:forKey:",_dd,"CPMenuBarTitleColor"); +}else{ +if(!_dd&&!_de){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",0.051,0.2,0.275,1),"CPMenuBarTextColor"); +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",0.051,0.2,0.275,1),"CPMenuBarTitleColor"); +} +} +} +if(!_df&&_e0){ +objj_msgSend(_6,"setObject:forKey:",_e0,"CPMenuBarTextShadowColor"); +}else{ +if(_df&&!_e0){ +objj_msgSend(_6,"setObject:forKey:",_df,"CPMenuBarTitleShadowColor"); +}else{ +if(!_df&&!_e0){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarTextShadowColor"); +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarTitleShadowColor"); +} +} +} +if(!_e1){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",94/255,130/255,186/255,1),"CPMenuBarHighlightColor"); +} +if(!_e2){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarHighlightTextColor"); +} +if(!_e3){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"blackColor"),"CPMenuBarHighlightTextShadowColor"); +} +if(_7){ +objj_msgSend(_7,"setColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarBackgroundColor")); +objj_msgSend(_7,"setTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextColor")); +objj_msgSend(_7,"setTitleColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleColor")); +objj_msgSend(_7,"setTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextShadowColor")); +objj_msgSend(_7,"setTitleShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleShadowColor")); +objj_msgSend(_7,"setHighlightColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightColor")); +objj_msgSend(_7,"setHighlightTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextColor")); +objj_msgSend(_7,"setHighlightTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextShadowColor")); +} +} +}),new objj_method(sel_getUid("menuBarAttributes"),function(_e4,_e5){ +with(_e4){ +return _6; +} +}),new objj_method(sel_getUid("_setMenuBarIconImageAlphaValue:"),function(_e6,_e7,_e8){ +with(_e6){ +_5=_e8; +objj_msgSend(_7,"setIconImageAlphaValue:",_e8); +} +}),new objj_method(sel_getUid("menuBarHeight"),function(_e9,_ea){ +with(_e9){ +return _1; +} +}),new objj_method(sel_getUid("_constraintRectForView:"),function(_eb,_ec,_ed){ +with(_eb){ +if(objj_msgSend(CPPlatform,"isBrowser")){ +return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(_ed,"window"),"platformWindow"),"contentBounds"),5,5); +} +return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(_ed,"window"),"screen"),"visibleFrame"),5,5); +} +}),new objj_method(sel_getUid("trackingCallbackWithCallback:"),function(_ee,_ef,_f0){ +with(_ee){ +return function(_f1,_f2){ +objj_msgSend(_f1,"setMenu:",nil); +objj_msgSend(_f1,"orderOut:",_ee); +objj_msgSend(_CPMenuWindow,"poolMenuWindow:",_f1); +if(_f0){ +_f0(_f2); +} +objj_msgSend(_f2,"_performActionOfHighlightedItemChain"); +}; +} +}),new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:"),function(_f3,_f4,_f5,_f6,_f7){ +with(_f3){ +objj_msgSend(_f3,"popUpContextMenu:withEvent:forView:withFont:",_f5,_f6,_f7,nil); +} +}),new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:withFont:"),function(_f8,_f9,_fa,_fb,_fc,_fd){ +with(_f8){ +var _fe=objj_msgSend(_fa,"delegate"); +if(objj_msgSend(_fe,"respondsToSelector:",sel_getUid("menuWillOpen:"))){ +objj_msgSend(_fe,"menuWillOpen:",_fa); +} +if(!_fd){ +_fd=objj_msgSend(CPFont,"systemFontOfSize:",12); +} +var _ff=objj_msgSend(_fc,"window"),_100=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_fa,_fd); +objj_msgSend(_100,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +var _101=objj_msgSend(CPMenu,"_constraintRectForView:",_fc),_102=objj_msgSend(objj_msgSend(_fb,"window"),"convertBaseToGlobal:",objj_msgSend(_fb,"locationInWindow")); +objj_msgSend(_100,"setConstraintRect:",_101); +objj_msgSend(_100,"setFrameOrigin:",_102); +if(!objj_msgSend(_100,"hasMinimumNumberOfVisibleItems")){ +var _103=objj_msgSend(_100,"unconstrainedFrame"),_104=CGRectGetMinY(_103); +if(_104>=CGRectGetMaxY(_101)||objj_msgSend(_100,"canScrollDown")){ +_103.origin.y=MIN(CGRectGetMaxY(_101),_102.y)-CGRectGetHeight(_103); +}else{ +if(_104<CGRectGetMinY(_101)||objj_msgSend(_100,"canScrollUp")){ +_103.origin.y=MAX(CGRectGetMinY(_101),_102.y); +} +} +objj_msgSend(_100,"setFrameOrigin:",CGRectIntersection(_103,_101).origin); +} +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_100,"setPlatformWindow:",objj_msgSend(objj_msgSend(_fc,"window"),"platformWindow")); +} +objj_msgSend(_100,"orderFront:",_f8); +objj_msgSend(objj_msgSend(_CPMenuManager,"sharedMenuManager"),"beginTracking:menuContainer:constraintRect:callback:",_fb,_100,objj_msgSend(CPMenu,"_constraintRectForView:",_fc),objj_msgSend(CPMenu,"trackingCallbackWithCallback:",nil)); +} +})]); +var _105="CPMenuTitleKey",_106="CPMenuNameKey",_107="CPMenuItemsKey",_108="CPMenuShowsStateColumnKey"; +var _8=objj_getClass("CPMenu"); +if(!_8){ +throw new SyntaxError("*** Could not find definition for class \"CPMenu\""); +} +var _9=_8.isa; +class_addMethods(_8,[new objj_method(sel_getUid("initWithCoder:"),function(self,_109,_10a){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPMenu").super_class},"init"); +if(self){ +_title=objj_msgSend(_10a,"decodeObjectForKey:",_105); +_items=objj_msgSend(_10a,"decodeObjectForKey:",_107); +objj_msgSend(self,"_setMenuName:",objj_msgSend(_10a,"decodeObjectForKey:",_106)); +_showsStateColumn=!objj_msgSend(_10a,"containsValueForKey:",_108)||objj_msgSend(_10a,"decodeBoolForKey:",_108); +objj_msgSend(self,"setMinimumWidth:",0); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_10b,_10c){ +with(self){ +objj_msgSend(_10c,"encodeObject:forKey:",_title,_105); +if(_name){ +objj_msgSend(_10c,"encodeObject:forKey:",_name,_106); +} +objj_msgSend(_10c,"encodeObject:forKey:",_items,_107); +if(!_showsStateColumn){ +objj_msgSend(_10c,"encodeBool:forKey:",_showsStateColumn,_108); +} +} +})]); +objj_executeFile("_CPMenuBarWindow.j",YES); +objj_executeFile("_CPMenuWindow.j",YES); +p;24;_CPMenuItemMenuBarView.jt;7646;@STATIC;1.0;t;7627; +var _1=8,_2=3,_3=4; +var _4=nil,_5=nil,_6=nil,_7=nil,_8=[],_9=[]; +var _a=objj_allocateClassPair(CPView,"_CPMenuItemMenuBarView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuItem"),new objj_ivar("_font"),new objj_ivar("_textColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_isDirty"),new objj_ivar("_imageAndTextView"),new objj_ivar("_submenuIndicatorView")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("menuItem"),function(_c,_d){ +with(_c){ +return _menuItem; +} +}),new objj_method(sel_getUid("setMenuItem:"),function(_e,_f,_10){ +with(_e){ +_menuItem=_10; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_11,_12,_13){ +with(_11){ +_11=objj_msgSendSuper({receiver:_11,super_class:objj_getClass("_CPMenuItemMenuBarView").super_class},"initWithFrame:",_13); +if(_11){ +_imageAndTextView=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",CGRectMake(_1,0,0,0)); +objj_msgSend(_imageAndTextView,"setImagePosition:",CPImageLeft); +objj_msgSend(_imageAndTextView,"setImageOffset:",3); +objj_msgSend(_imageAndTextView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_imageAndTextView,"setAutoresizingMask:",CPViewMinYMargin|CPViewMaxYMargin); +objj_msgSend(_11,"addSubview:",_imageAndTextView); +_submenuIndicatorView=objj_msgSend(objj_msgSend(_CPMenuItemMenuBarSubmenuIndicatorView,"alloc"),"initWithFrame:",CGRectMake(0,0,9,6)); +objj_msgSend(_submenuIndicatorView,"setAutoresizingMask:",CPViewMinYMargin|CPViewMaxYMargin); +objj_msgSend(_11,"addSubview:",_submenuIndicatorView); +objj_msgSend(_11,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +} +return _11; +} +}),new objj_method(sel_getUid("textColor"),function(_14,_15){ +with(_14){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return objj_msgSend(CPColor,"lightGrayColor"); +} +return _textColor||objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",70/255,69/255,69/255,1); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_16,_17){ +with(_16){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return objj_msgSend(CPColor,"colorWithWhite:alpha:",0.8,0.8); +} +return _textShadowColor||objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.8); +} +}),new objj_method(sel_getUid("update"),function(_18,_19){ +with(_18){ +var x=_1,_1a=0; +objj_msgSend(_imageAndTextView,"setFont:",objj_msgSend(_menuItem,"font")||objj_msgSend(_CPMenuBarWindow,"font")); +objj_msgSend(_imageAndTextView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setText:",objj_msgSend(_menuItem,"title")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_18,"textColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_18,"textShadowColor")); +objj_msgSend(_imageAndTextView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_imageAndTextView,"sizeToFit"); +var _1b=objj_msgSend(_imageAndTextView,"frame"); +_1b.origin.x=x; +x+=CGRectGetWidth(_1b); +_1a=MAX(_1a,CGRectGetHeight(_1b)); +var _1c=objj_msgSend(_menuItem,"hasSubmenu")&&objj_msgSend(_menuItem,"action"); +if(_1c){ +objj_msgSend(_submenuIndicatorView,"setHidden:",NO); +objj_msgSend(_submenuIndicatorView,"setColor:",objj_msgSend(_18,"textColor")); +objj_msgSend(_submenuIndicatorView,"setShadowColor:",objj_msgSend(_18,"textShadowColor")); +var _1d=objj_msgSend(_submenuIndicatorView,"frame"); +_1d.origin.x=x+_2; +x=CGRectGetMaxX(_1d); +_1a=MAX(_1a,CGRectGetHeight(_1d)); +}else{ +objj_msgSend(_submenuIndicatorView,"setHidden:",YES); +} +_1a+=2*_3; +_1b.origin.y=FLOOR((_1a-CGRectGetHeight(_1b))/2); +objj_msgSend(_imageAndTextView,"setFrame:",_1b); +if(_1c){ +_1d.origin.y=FLOOR((_1a-CGRectGetHeight(_1d))/2)+1; +objj_msgSend(_submenuIndicatorView,"setFrame:",_1d); +} +_minSize=CGSizeMake(x+_1,_1a); +objj_msgSend(_18,"setAutoresizesSubviews:",NO); +objj_msgSend(_18,"setFrameSize:",_minSize); +objj_msgSend(_18,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("highlight:"),function(_1e,_1f,_20){ +with(_1e){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +_20=NO; +} +if(_20){ +if(!objj_msgSend(_menuItem,"_isMenuBarButton")){ +objj_msgSend(_1e,"setBackgroundColor:",_4); +} +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"alternateImage")||objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",_7); +objj_msgSend(_submenuIndicatorView,"setColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_submenuIndicatorView,"setShadowColor:",objj_msgSend(CPColor,"colorWithWhite:alpha:",0.1,0.7)); +}else{ +objj_msgSend(_1e,"setBackgroundColor:",nil); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_1e,"textColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_1e,"textShadowColor")); +objj_msgSend(_submenuIndicatorView,"setColor:",objj_msgSend(_1e,"textColor")); +objj_msgSend(_submenuIndicatorView,"setShadowColor:",objj_msgSend(_1e,"textShadowColor")); +} +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("initialize"),function(_21,_22){ +with(_21){ +if(_21!==objj_msgSend(_CPMenuItemMenuBarView,"class")){ +return; +} +var _23=objj_msgSend(CPBundle,"bundleForClass:",_21); +_4=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_23,"pathForResource:","_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png"),CGSizeMake(1,28))); +_5=objj_msgSend(CPColor,"grayColor"); +_6=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",95/255,131/255,185/255,1); +_7=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",26/255,73/255,109/255,1); +_8[CPOffState]=nil; +_9[CPOffState]=nil; +_8[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_23,"pathForResource:","CPMenuItem/CPMenuItemOnState.png"),CGSizeMake(14,14)); +_9[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_23,"pathForResource:","CPMenuItem/CPMenuItemOnStateHighlighted.png"),CGSizeMake(14,14)); +_8[CPMixedState]=nil; +_9[CPMixedState]=nil; +} +}),new objj_method(sel_getUid("view"),function(_24,_25){ +with(_24){ +return objj_msgSend(objj_msgSend(_24,"alloc"),"init"); +} +})]); +var _a=objj_allocateClassPair(CPView,"_CPMenuItemMenuBarSubmenuIndicatorView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_color"),new objj_ivar("_shadowColor")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("setColor:"),function(_26,_27,_28){ +with(_26){ +if(_color===_28){ +return; +} +_color=_28; +objj_msgSend(_26,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setShadowColor:"),function(_29,_2a,_2b){ +with(_29){ +if(_shadowColor===_2b){ +return; +} +_shadowColor=_2b; +objj_msgSend(_29,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawRect:"),function(_2c,_2d,_2e){ +with(_2c){ +var _2f=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_30=objj_msgSend(_2c,"bounds"); +_30.size.height-=1; +_30.size.width-=2; +_30.origin.x+=1; +CGContextBeginPath(_2f); +CGContextMoveToPoint(_2f,CGRectGetMinX(_30),CGRectGetMinY(_30)); +CGContextAddLineToPoint(_2f,CGRectGetMaxX(_30),CGRectGetMinY(_30)); +CGContextAddLineToPoint(_2f,CGRectGetMidX(_30),CGRectGetMaxY(_30)); +CGContextClosePath(_2f); +CGContextSetShadowWithColor(_2f,CGSizeMake(0,1),1.1,_shadowColor||objj_msgSend(CPColor,"whiteColor")); +CGContextSetFillColor(_2f,_color||objj_msgSend(CPColor,"blackColor")); +CGContextFillPath(_2f); +} +})]); +p;26;_CPMenuItemSeparatorView.jt;1124;@STATIC;1.0;I;15;AppKit/CPView.jt;1085; +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPView,"_CPMenuItemSeparatorView"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPMenuItemSeparatorView").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setAutoresizingMask:",CPViewWidthSizable); +} +return _3; +} +}),new objj_method(sel_getUid("drawRect:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_a=objj_msgSend(_6,"bounds"); +CGContextBeginPath(_9); +CGContextMoveToPoint(_9,CGRectGetMinX(_a),FLOOR(CGRectGetMidY(_a))-0.5); +CGContextAddLineToPoint(_9,CGRectGetMaxX(_a),FLOOR(CGRectGetMidY(_a))-0.5); +CGContextSetStrokeColor(_9,objj_msgSend(CPColor,"lightGrayColor")); +CGContextStrokePath(_9); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("view"),function(_b,_c){ +with(_b){ +return objj_msgSend(objj_msgSend(_b,"alloc"),"initWithFrame:",CGRectMake(0,0,0,10)); +} +})]); +p;25;_CPMenuItemStandardView.jt;9309;@STATIC;1.0;t;9290; +var _1=3,_2=14+3,_3=14,_4=17,_5=4,_6=30,_7=10; +var _8=nil,_9=nil,_a=nil,_b=[],_c=[]; +var _d=objj_allocateClassPair(CPView,"_CPMenuItemStandardView"),_e=_d.isa; +class_addIvars(_d,[new objj_ivar("_menuItem"),new objj_ivar("_font"),new objj_ivar("_textColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_minSize"),new objj_ivar("_isDirty"),new objj_ivar("_stateView"),new objj_ivar("_imageAndTextView"),new objj_ivar("_keyEquivalentView"),new objj_ivar("_submenuIndicatorView")]); +objj_registerClassPair(_d); +class_addMethods(_d,[new objj_method(sel_getUid("menuItem"),function(_f,_10){ +with(_f){ +return _menuItem; +} +}),new objj_method(sel_getUid("setMenuItem:"),function(_11,_12,_13){ +with(_11){ +_menuItem=_13; +} +}),new objj_method(sel_getUid("minSize"),function(_14,_15){ +with(_14){ +return _minSize; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_16,_17,_18){ +with(_16){ +_16=objj_msgSendSuper({receiver:_16,super_class:objj_getClass("_CPMenuItemStandardView").super_class},"initWithFrame:",_18); +if(_16){ +_stateView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,0)); +objj_msgSend(_stateView,"setImageScaling:",CPScaleNone); +objj_msgSend(_16,"addSubview:",_stateView); +_imageAndTextView=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,0)); +objj_msgSend(_imageAndTextView,"setImagePosition:",CPImageLeft); +objj_msgSend(_imageAndTextView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_16,"addSubview:",_imageAndTextView); +_keyEquivalentView=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,0)); +objj_msgSend(_keyEquivalentView,"setImagePosition:",CPNoImage); +objj_msgSend(_keyEquivalentView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_keyEquivalentView,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_16,"addSubview:",_keyEquivalentView); +_submenuIndicatorView=objj_msgSend(objj_msgSend(_CPMenuItemSubmenuIndicatorView,"alloc"),"initWithFrame:",CGRectMake(0,0,8,10)); +objj_msgSend(_submenuIndicatorView,"setColor:",_8); +objj_msgSend(_submenuIndicatorView,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_16,"addSubview:",_submenuIndicatorView); +objj_msgSend(_16,"setAutoresizingMask:",CPViewWidthSizable); +} +return _16; +} +}),new objj_method(sel_getUid("textColor"),function(_19,_1a){ +with(_19){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return objj_msgSend(CPColor,"lightGrayColor"); +} +return _textColor||objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",70/255,69/255,69/255,1); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_1b,_1c){ +with(_1b){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return nil; +} +return _textShadowColor||objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.8); +} +}),new objj_method(sel_getUid("setFont:"),function(_1d,_1e,_1f){ +with(_1d){ +_font=_1f; +} +}),new objj_method(sel_getUid("update"),function(_20,_21){ +with(_20){ +var x=_1+objj_msgSend(_menuItem,"indentationLevel")*_4,_22=0,_23=objj_msgSend(objj_msgSend(_menuItem,"menu"),"showsStateColumn"); +if(_23){ +objj_msgSend(_stateView,"setHidden:",NO); +objj_msgSend(_stateView,"setImage:",_b[objj_msgSend(_menuItem,"state")]||nil); +x+=_3; +}else{ +objj_msgSend(_stateView,"setHidden:",YES); +} +objj_msgSend(_imageAndTextView,"setFont:",objj_msgSend(_menuItem,"font")||_font); +objj_msgSend(_imageAndTextView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setText:",objj_msgSend(_menuItem,"title")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_20,"textColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_20,"textShadowColor")); +objj_msgSend(_imageAndTextView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_imageAndTextView,"sizeToFit"); +var _24=objj_msgSend(_imageAndTextView,"frame"); +_24.origin.x=x; +x+=CGRectGetWidth(_24); +_22=MAX(_22,CGRectGetHeight(_24)); +var _25=!!objj_msgSend(_menuItem,"keyEquivalent"),_26=objj_msgSend(_menuItem,"hasSubmenu"); +if(_25||_26){ +x+=_6; +} +if(_25){ +objj_msgSend(_keyEquivalentView,"setFont:",objj_msgSend(_menuItem,"font")||_font); +objj_msgSend(_keyEquivalentView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_keyEquivalentView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_keyEquivalentView,"setText:",objj_msgSend(_menuItem,"keyEquivalentStringRepresentation")); +objj_msgSend(_keyEquivalentView,"setTextColor:",objj_msgSend(_20,"textColor")); +objj_msgSend(_keyEquivalentView,"setTextShadowColor:",objj_msgSend(_20,"textShadowColor")); +objj_msgSend(_keyEquivalentView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_keyEquivalentView,"setFrameOrigin:",CGPointMake(x,_5)); +objj_msgSend(_keyEquivalentView,"sizeToFit"); +var _27=objj_msgSend(_keyEquivalentView,"frame"); +_27.origin.x=x; +x+=CGRectGetWidth(_27); +_22=MAX(_22,CGRectGetHeight(_27)); +if(_26){ +x+=_6; +} +}else{ +objj_msgSend(_keyEquivalentView,"setHidden:",YES); +} +if(_26){ +objj_msgSend(_submenuIndicatorView,"setHidden:",NO); +var _28=objj_msgSend(_submenuIndicatorView,"frame"); +_28.origin.x=x; +x+=CGRectGetWidth(_28); +_22=MAX(_22,CGRectGetHeight(_28)); +}else{ +objj_msgSend(_submenuIndicatorView,"setHidden:",YES); +} +_22+=2*_5; +_24.origin.y=FLOOR((_22-CGRectGetHeight(_24))/2); +objj_msgSend(_imageAndTextView,"setFrame:",_24); +if(_23){ +objj_msgSend(_stateView,"setFrameSize:",CGSizeMake(_3,_22)); +} +if(_25){ +_27.origin.y=FLOOR((_22-CGRectGetHeight(_27))/2); +objj_msgSend(_keyEquivalentView,"setFrame:",_27); +} +if(_26){ +_28.origin.y=FLOOR((_22-CGRectGetHeight(_28))/2); +objj_msgSend(_submenuIndicatorView,"setFrame:",_28); +} +_minSize=CGSizeMake(x+_2,_22); +objj_msgSend(_20,"setAutoresizesSubviews:",NO); +objj_msgSend(_20,"setFrameSize:",_minSize); +objj_msgSend(_20,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("highlight:"),function(_29,_2a,_2b){ +with(_29){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return; +} +if(_2b){ +objj_msgSend(_29,"setBackgroundColor:",_9); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"alternateImage")||objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_keyEquivalentView,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_submenuIndicatorView,"setColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",_a); +objj_msgSend(_keyEquivalentView,"setTextShadowColor:",_a); +}else{ +objj_msgSend(_29,"setBackgroundColor:",nil); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_29,"textColor")); +objj_msgSend(_keyEquivalentView,"setTextColor:",objj_msgSend(_29,"textColor")); +objj_msgSend(_submenuIndicatorView,"setColor:",_8); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_29,"textShadowColor")); +objj_msgSend(_keyEquivalentView,"setTextShadowColor:",objj_msgSend(_29,"textShadowColor")); +} +if(objj_msgSend(objj_msgSend(_menuItem,"menu"),"showsStateColumn")){ +if(_2b){ +objj_msgSend(_stateView,"setImage:",_c[objj_msgSend(_menuItem,"state")]||nil); +}else{ +objj_msgSend(_stateView,"setImage:",_b[objj_msgSend(_menuItem,"state")]||nil); +} +} +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("initialize"),function(_2c,_2d){ +with(_2c){ +if(_2c!==objj_msgSend(_CPMenuItemStandardView,"class")){ +return; +} +_8=objj_msgSend(CPColor,"grayColor"); +_9=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",95/255,131/255,185/255,1); +_a=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",26/255,73/255,109/255,1); +var _2e=objj_msgSend(CPBundle,"bundleForClass:",_2c); +_b[CPOffState]=nil; +_c[CPOffState]=nil; +_b[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPMenuItem/CPMenuItemOnState.png"),CGSizeMake(14,14)); +_c[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPMenuItem/CPMenuItemOnStateHighlighted.png"),CGSizeMake(14,14)); +_b[CPMixedState]=nil; +_c[CPMixedState]=nil; +} +}),new objj_method(sel_getUid("view"),function(_2f,_30){ +with(_2f){ +return objj_msgSend(objj_msgSend(_2f,"alloc"),"init"); +} +}),new objj_method(sel_getUid("_standardLeftMargin"),function(_31,_32){ +with(_31){ +return _1+_3; +} +})]); +var _d=objj_allocateClassPair(CPView,"_CPMenuItemSubmenuIndicatorView"),_e=_d.isa; +class_addIvars(_d,[new objj_ivar("_color")]); +objj_registerClassPair(_d); +class_addMethods(_d,[new objj_method(sel_getUid("setColor:"),function(_33,_34,_35){ +with(_33){ +if(_color===_35){ +return; +} +_color=_35; +objj_msgSend(_33,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawRect:"),function(_36,_37,_38){ +with(_36){ +var _39=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_3a=objj_msgSend(_36,"bounds"); +CGContextBeginPath(_39); +CGContextMoveToPoint(_39,CGRectGetMinX(_3a),CGRectGetMinY(_3a)); +CGContextAddLineToPoint(_39,CGRectGetMaxX(_3a),CGRectGetMidY(_3a)); +CGContextAddLineToPoint(_39,CGRectGetMinX(_3a),CGRectGetMaxY(_3a)); +CGContextClosePath(_39); +CGContextSetFillColor(_39,_color); +CGContextFillPath(_39); +} +})]); +p;17;_CPMenuItemView.jt;6328;@STATIC;1.0;i;26;_CPMenuItemSeparatorView.ji;25;_CPMenuItemStandardView.ji;24;_CPMenuItemMenuBarView.jt;6219; +objj_executeFile("_CPMenuItemSeparatorView.j",YES); +objj_executeFile("_CPMenuItemStandardView.j",YES); +objj_executeFile("_CPMenuItemMenuBarView.j",YES); +var _1=3,_2=16,_3=14,_4=17,_5=4; +var _6=nil,_7=nil,_8=[],_9=[]; +var _a=objj_allocateClassPair(CPView,"_CPMenuItemView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuItem"),new objj_ivar("_view"),new objj_ivar("_font"),new objj_ivar("_textColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_minSize"),new objj_ivar("_isDirty"),new objj_ivar("_showsStateColumn"),new objj_ivar("_stateView"),new objj_ivar("_imageAndTextView"),new objj_ivar("_submenuView")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("initWithFrame:forMenuItem:"),function(_c,_d,_e,_f){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPMenuItemView").super_class},"initWithFrame:",_e); +if(_c){ +_menuItem=_f; +_showsStateColumn=YES; +_isDirty=YES; +objj_msgSend(_c,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_c,"synchronizeWithMenuItem"); +} +return _c; +} +}),new objj_method(sel_getUid("minSize"),function(_10,_11){ +with(_10){ +return _minSize; +} +}),new objj_method(sel_getUid("setDirty"),function(_12,_13){ +with(_12){ +_isDirty=YES; +} +}),new objj_method(sel_getUid("synchronizeWithMenuItem"),function(_14,_15){ +with(_14){ +var _16=objj_msgSend(_menuItem,"view"); +if(objj_msgSend(_menuItem,"isSeparatorItem")){ +if(!objj_msgSend(_view,"isKindOfClass:",objj_msgSend(_CPMenuItemSeparatorView,"class"))){ +objj_msgSend(_view,"removeFromSuperview"); +_view=objj_msgSend(_CPMenuItemSeparatorView,"view"); +} +}else{ +if(_16){ +if(_view!==_16){ +objj_msgSend(_view,"removeFromSuperview"); +_view=_16; +} +}else{ +if(objj_msgSend(_menuItem,"menu")==objj_msgSend(CPApp,"mainMenu")){ +if(!objj_msgSend(_view,"isKindOfClass:",objj_msgSend(_CPMenuItemMenuBarView,"class"))){ +objj_msgSend(_view,"removeFromSuperview"); +_view=objj_msgSend(_CPMenuItemMenuBarView,"view"); +} +objj_msgSend(_view,"setMenuItem:",_menuItem); +}else{ +if(!objj_msgSend(_view,"isKindOfClass:",objj_msgSend(_CPMenuItemStandardView,"class"))){ +objj_msgSend(_view,"removeFromSuperview"); +_view=objj_msgSend(_CPMenuItemStandardView,"view"); +} +objj_msgSend(_view,"setMenuItem:",_menuItem); +} +} +} +if(objj_msgSend(_view,"superview")!==_14){ +objj_msgSend(_14,"addSubview:",_view); +} +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("update"))){ +objj_msgSend(_view,"update"); +} +_minSize=objj_msgSend(_view,"frame").size; +objj_msgSend(_14,"setAutoresizesSubviews:",NO); +objj_msgSend(_14,"setFrameSize:",_minSize); +objj_msgSend(_14,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("setShowsStateColumn:"),function(_17,_18,_19){ +with(_17){ +_showsStateColumn=_19; +} +}),new objj_method(sel_getUid("highlight:"),function(_1a,_1b,_1c){ +with(_1a){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("highlight:"))){ +objj_msgSend(_view,"highlight:",_1c); +} +} +}),new objj_method(sel_getUid("eventOnSubmenu:"),function(_1d,_1e,_1f){ +with(_1d){ +if(!objj_msgSend(_menuItem,"hasSubmenu")){ +return NO; +} +return CGRectContainsPoint(objj_msgSend(_submenuView,"frame"),objj_msgSend(_1d,"convertPoint:fromView:",objj_msgSend(_1f,"locationInWindow"),nil)); +} +}),new objj_method(sel_getUid("isHidden"),function(_20,_21){ +with(_20){ +return objj_msgSend(_menuItem,"isHidden"); +} +}),new objj_method(sel_getUid("menuItem"),function(_22,_23){ +with(_22){ +return _menuItem; +} +}),new objj_method(sel_getUid("setFont:"),function(_24,_25,_26){ +with(_24){ +if(_font===_26){ +return; +} +_font=_26; +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setFont:"))){ +objj_msgSend(_view,"setFont:",_26); +} +objj_msgSend(_24,"setDirty"); +} +}),new objj_method(sel_getUid("setTextColor:"),function(_27,_28,_29){ +with(_27){ +if(_textColor==_29){ +return; +} +_textColor=_29; +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_27,"textColor")); +objj_msgSend(_submenuView,"setColor:",objj_msgSend(_27,"textColor")); +} +}),new objj_method(sel_getUid("textColor"),function(_2a,_2b){ +with(_2a){ +return nil; +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_2c,_2d,_2e){ +with(_2c){ +if(_textShadowColor==_2e){ +return; +} +_textShadowColor=_2e; +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_2c,"textShadowColor")); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_2f,_30){ +with(_2f){ +return objj_msgSend(_menuItem,"isEnabled")?(_textShadowColor?_textShadowColor:objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.8)):objj_msgSend(CPColor,"colorWithWhite:alpha:",0.8,0.8); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("initialize"),function(_31,_32){ +with(_31){ +if(_31!=objj_msgSend(_CPMenuItemView,"class")){ +return; +} +_6=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",95/255,131/255,185/255,1); +_7=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",26/255,73/255,109/255,1); +var _33=objj_msgSend(CPBundle,"bundleForClass:",_31); +_8[CPOffState]=nil; +_9[CPOffState]=nil; +_8[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_33,"pathForResource:","CPMenuItem/CPMenuItemOnState.png"),CGSizeMake(14,14)); +_9[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_33,"pathForResource:","CPMenuItem/CPMenuItemOnStateHighlighted.png"),CGSizeMake(14,14)); +_8[CPMixedState]=nil; +_9[CPMixedState]=nil; +} +}),new objj_method(sel_getUid("leftMargin"),function(_34,_35){ +with(_34){ +return _1+_3; +} +})]); +var _a=objj_allocateClassPair(CPView,"_CPMenuItemArrowView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_color")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("setColor:"),function(_36,_37,_38){ +with(_36){ +if(_color==_38){ +return; +} +_color=_38; +objj_msgSend(_36,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawRect:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(_3c); +CGContextMoveToPoint(_3c,1,4); +CGContextAddLineToPoint(_3c,9,4); +CGContextAddLineToPoint(_3c,5,8); +CGContextAddLineToPoint(_3c,1,4); +CGContextClosePath(_3c); +CGContextSetFillColor(_3c,_color); +CGContextFillPath(_3c); +} +})]); +p;12;CPMenuItem.jt;16451;@STATIC;1.0;I;20;Foundation/CPCoder.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;9;CPImage.ji;8;CPMenu.ji;8;CPView.ji;17;_CPMenuItemView.jt;16295; +objj_executeFile("Foundation/CPCoder.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("_CPMenuItemView.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPMenuItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isSeparator"),new objj_ivar("_title"),new objj_ivar("_font"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_isEnabled"),new objj_ivar("_isHidden"),new objj_ivar("_tag"),new objj_ivar("_state"),new objj_ivar("_image"),new objj_ivar("_alternateImage"),new objj_ivar("_onStateImage"),new objj_ivar("_offStateImage"),new objj_ivar("_mixedStateImage"),new objj_ivar("_submenu"),new objj_ivar("_menu"),new objj_ivar("_keyEquivalent"),new objj_ivar("_keyEquivalentModifierMask"),new objj_ivar("_mnemonicLocation"),new objj_ivar("_isAlternate"),new objj_ivar("_indentationLevel"),new objj_ivar("_toolTip"),new objj_ivar("_representedObject"),new objj_ivar("_view"),new objj_ivar("_menuItemView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithTitle:action:keyEquivalent:","",nil,nil); +} +}),new objj_method(sel_getUid("initWithTitle:action:keyEquivalent:"),function(_5,_6,_7,_8,_9){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPMenuItem").super_class},"init"); +if(_5){ +_isSeparator=NO; +_title=_7; +_action=_8; +_isEnabled=YES; +_tag=0; +_state=CPOffState; +_keyEquivalent=_9||""; +_keyEquivalentModifierMask=CPPlatformActionKeyMask; +_indentationLevel=0; +_mnemonicLocation=CPNotFound; +} +return _5; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_a,_b,_c){ +with(_a){ +if(objj_msgSend(_menu,"autoenablesItems")){ +return; +} +_isEnabled=_c; +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_a); +} +}),new objj_method(sel_getUid("isEnabled"),function(_d,_e){ +with(_d){ +return _isEnabled; +} +}),new objj_method(sel_getUid("setHidden:"),function(_f,_10,_11){ +with(_f){ +if(_isHidden==_11){ +return; +} +_isHidden=_11; +objj_msgSend(_menu,"itemChanged:",_f); +} +}),new objj_method(sel_getUid("isHidden"),function(_12,_13){ +with(_12){ +return _isHidden; +} +}),new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"),function(_14,_15){ +with(_14){ +if(_isHidden){ +return YES; +} +var _16=objj_msgSend(_menu,"supermenu"); +if(objj_msgSend(objj_msgSend(_16,"itemAtIndex:",objj_msgSend(_16,"indexOfItemWithSubmenu:",_menu)),"isHiddenOrHasHiddenAncestor")){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("setTarget:"),function(_17,_18,_19){ +with(_17){ +_target=_19; +} +}),new objj_method(sel_getUid("target"),function(_1a,_1b){ +with(_1a){ +return _target; +} +}),new objj_method(sel_getUid("setAction:"),function(_1c,_1d,_1e){ +with(_1c){ +_action=_1e; +} +}),new objj_method(sel_getUid("action"),function(_1f,_20){ +with(_1f){ +return _action; +} +}),new objj_method(sel_getUid("setTitle:"),function(_21,_22,_23){ +with(_21){ +_mnemonicLocation=CPNotFound; +if(_title==_23){ +return; +} +_title=_23; +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_21); +} +}),new objj_method(sel_getUid("title"),function(_24,_25){ +with(_24){ +return _title; +} +}),new objj_method(sel_getUid("setTextColor:"),function(_26,_27,_28){ +with(_26){ +} +}),new objj_method(sel_getUid("setFont:"),function(_29,_2a,_2b){ +with(_29){ +if(_font==_2b){ +return; +} +_font=_2b; +objj_msgSend(_menu,"itemChanged:",_29); +objj_msgSend(_menuItemView,"setDirty"); +} +}),new objj_method(sel_getUid("font"),function(_2c,_2d){ +with(_2c){ +return _font; +} +}),new objj_method(sel_getUid("setTag:"),function(_2e,_2f,_30){ +with(_2e){ +_tag=_30; +} +}),new objj_method(sel_getUid("tag"),function(_31,_32){ +with(_31){ +return _tag; +} +}),new objj_method(sel_getUid("setState:"),function(_33,_34,_35){ +with(_33){ +if(_state==_35){ +return; +} +_state=_35; +objj_msgSend(_menu,"itemChanged:",_33); +objj_msgSend(_menuItemView,"setDirty"); +} +}),new objj_method(sel_getUid("state"),function(_36,_37){ +with(_36){ +return _state; +} +}),new objj_method(sel_getUid("setImage:"),function(_38,_39,_3a){ +with(_38){ +if(_image==_3a){ +return; +} +_image=_3a; +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_38); +} +}),new objj_method(sel_getUid("image"),function(_3b,_3c){ +with(_3b){ +return _image; +} +}),new objj_method(sel_getUid("setAlternateImage:"),function(_3d,_3e,_3f){ +with(_3d){ +_alternateImage=_3f; +} +}),new objj_method(sel_getUid("alternateImage"),function(_40,_41){ +with(_40){ +return _alternateImage; +} +}),new objj_method(sel_getUid("setOnStateImage:"),function(_42,_43,_44){ +with(_42){ +if(_onStateImage==_44){ +return; +} +_onStateImage=_44; +objj_msgSend(_menu,"itemChanged:",_42); +} +}),new objj_method(sel_getUid("onStateImage"),function(_45,_46){ +with(_45){ +return _onStateImage; +} +}),new objj_method(sel_getUid("setOffStateImage:"),function(_47,_48,_49){ +with(_47){ +if(_offStateImage==_49){ +return; +} +_offStateImage=_49; +objj_msgSend(_menu,"itemChanged:",_47); +} +}),new objj_method(sel_getUid("offStateImage"),function(_4a,_4b){ +with(_4a){ +return _offStateImage; +} +}),new objj_method(sel_getUid("setMixedStateImage:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_mixedStateImage==_4e){ +return; +} +_mixedStateImage=_4e; +objj_msgSend(_menu,"itemChanged:",_4c); +} +}),new objj_method(sel_getUid("mixedStateImage"),function(_4f,_50){ +with(_4f){ +return _mixedStateImage; +} +}),new objj_method(sel_getUid("setSubmenu:"),function(_51,_52,_53){ +with(_51){ +if(_submenu===_53){ +return; +} +var _54=objj_msgSend(_submenu,"supermenu"); +if(_54){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Can't add submenu \""+objj_msgSend(_53,"title")+"\" to item \""+objj_msgSend(_51,"title")+"\", because it is already submenu of \""+objj_msgSend(objj_msgSend(_53,"supermenu"),"title")+"\""); +} +_submenu=_53; +if(_submenu){ +objj_msgSend(_submenu,"setSupermenu:",_menu); +objj_msgSend(_51,"setTarget:",_menu); +objj_msgSend(_51,"setAction:",sel_getUid("submenuAction:")); +}else{ +objj_msgSend(_51,"setTarget:",nil); +objj_msgSend(_51,"setAction:",NULL); +} +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_51); +} +}),new objj_method(sel_getUid("submenu"),function(_55,_56){ +with(_55){ +return _submenu; +} +}),new objj_method(sel_getUid("hasSubmenu"),function(_57,_58){ +with(_57){ +return _submenu?YES:NO; +} +}),new objj_method(sel_getUid("isSeparatorItem"),function(_59,_5a){ +with(_59){ +return _isSeparator; +} +}),new objj_method(sel_getUid("setMenu:"),function(_5b,_5c,_5d){ +with(_5b){ +_menu=_5d; +} +}),new objj_method(sel_getUid("menu"),function(_5e,_5f){ +with(_5e){ +return _menu; +} +}),new objj_method(sel_getUid("setKeyEquivalent:"),function(_60,_61,_62){ +with(_60){ +_keyEquivalent=_62||""; +} +}),new objj_method(sel_getUid("keyEquivalent"),function(_63,_64){ +with(_63){ +return _keyEquivalent; +} +}),new objj_method(sel_getUid("setKeyEquivalentModifierMask:"),function(_65,_66,_67){ +with(_65){ +_keyEquivalentModifierMask=_67; +} +}),new objj_method(sel_getUid("keyEquivalentModifierMask"),function(_68,_69){ +with(_68){ +return _keyEquivalentModifierMask; +} +}),new objj_method(sel_getUid("keyEquivalentStringRepresentation"),function(_6a,_6b){ +with(_6a){ +if(!objj_msgSend(_keyEquivalent,"length")){ +return ""; +} +var _6c=_keyEquivalent.toUpperCase(),_6d=_keyEquivalentModifierMask&CPShiftKeyMask||(_6c===_keyEquivalent&&_keyEquivalent.toLowerCase()!==_keyEquivalent.toUpperCase()); +if(CPBrowserIsOperatingSystem(CPMacOperatingSystem)){ +if(_keyEquivalentModifierMask&CPCommandKeyMask){ +_6c="⌘"+_6c; +} +if(_6d){ +_6c="⇧"+_6c; +} +if(_keyEquivalentModifierMask&CPAlternateKeyMask){ +_6c="⌥"+_6c; +} +if(_keyEquivalentModifierMask&CPControlKeyMask){ +_6c="^"+_6c; +} +}else{ +if(_6d){ +_6c="Shift-"+_6c; +} +if(_keyEquivalentModifierMask&CPAlternateKeyMask){ +_6c="Alt-"+_6c; +} +if(_keyEquivalentModifierMask&CPControlKeyMask||_keyEquivalentModifierMask&CPCommandKeyMask){ +_6c="Ctrl-"+_6c; +} +} +return _6c; +} +}),new objj_method(sel_getUid("setMnemonicLocation:"),function(_6e,_6f,_70){ +with(_6e){ +_mnemonicLocation=_70; +} +}),new objj_method(sel_getUid("mnemonicLocation"),function(_71,_72){ +with(_71){ +return _mnemonicLocation; +} +}),new objj_method(sel_getUid("setTitleWithMnemonicLocation:"),function(_73,_74,_75){ +with(_73){ +var _76=objj_msgSend(_75,"rangeOfString:","&").location; +if(_76==CPNotFound){ +objj_msgSend(_73,"setTitle:",_75); +}else{ +objj_msgSend(_73,"setTitle:",objj_msgSend(_75,"substringToIndex:",_76)+objj_msgSend(_75,"substringFromIndex:",_76+1)); +objj_msgSend(_73,"setMnemonicLocation:",_76); +} +} +}),new objj_method(sel_getUid("mnemonic"),function(_77,_78){ +with(_77){ +return _mnemonicLocation==CPNotFound?"":objj_msgSend(_title,"characterAtIndex:",_mnemonicLocation); +} +}),new objj_method(sel_getUid("setAlternate:"),function(_79,_7a,_7b){ +with(_79){ +_isAlternate=_7b; +} +}),new objj_method(sel_getUid("isAlternate"),function(_7c,_7d){ +with(_7c){ +return _isAlternate; +} +}),new objj_method(sel_getUid("setIndentationLevel:"),function(_7e,_7f,_80){ +with(_7e){ +if(_80<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"setIndentationLevel: argument must be greater than or equal to 0."); +} +_indentationLevel=MIN(15,_80); +} +}),new objj_method(sel_getUid("indentationLevel"),function(_81,_82){ +with(_81){ +return _indentationLevel; +} +}),new objj_method(sel_getUid("setToolTip:"),function(_83,_84,_85){ +with(_83){ +_toolTip=_85; +} +}),new objj_method(sel_getUid("toolTip"),function(_86,_87){ +with(_86){ +return _toolTip; +} +}),new objj_method(sel_getUid("setRepresentedObject:"),function(_88,_89,_8a){ +with(_88){ +_representedObject=_8a; +} +}),new objj_method(sel_getUid("representedObject"),function(_8b,_8c){ +with(_8b){ +return _representedObject; +} +}),new objj_method(sel_getUid("setView:"),function(_8d,_8e,_8f){ +with(_8d){ +if(_view===_8f){ +return; +} +_view=_8f; +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_8d); +} +}),new objj_method(sel_getUid("view"),function(_90,_91){ +with(_90){ +return _view; +} +}),new objj_method(sel_getUid("isHighlighted"),function(_92,_93){ +with(_92){ +return objj_msgSend(objj_msgSend(_92,"menu"),"highlightedItem")==_92; +} +}),new objj_method(sel_getUid("copy"),function(_94,_95){ +with(_94){ +var _96=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"init"); +_96._isSeparator=_isSeparator; +objj_msgSend(_96,"setTitle:",_title); +objj_msgSend(_96,"setFont:",_font); +objj_msgSend(_96,"setTarget:",_target); +objj_msgSend(_96,"setAction:",_action); +objj_msgSend(_96,"setEnabled:",_isEnabled); +objj_msgSend(_96,"setHidden:",_isHidden); +objj_msgSend(_96,"setTag:",_tag); +objj_msgSend(_96,"setState:",_state); +objj_msgSend(_96,"setImage:",_image); +objj_msgSend(_96,"setAlternateImage:",_alternateImage); +objj_msgSend(_96,"setOnStateImage:",_onStateImage); +objj_msgSend(_96,"setOffStateImage:",_offStateImage); +objj_msgSend(_96,"setMixedStateImage:",_mixedStateImage); +objj_msgSend(_96,"setKeyEquivalent:",_keyEquivalent); +objj_msgSend(_96,"setKeyEquivalentModifierMask:",_keyEquivalentModifierMask); +objj_msgSend(_96,"setMnemonicLocation:",_mnemonicLocation); +objj_msgSend(_96,"setAlternate:",_isAlternate); +objj_msgSend(_96,"setIndentationLevel:",_indentationLevel); +objj_msgSend(_96,"setToolTip:",_toolTip); +objj_msgSend(_96,"setRepresentedObject:",_representedObject); +return _96; +} +}),new objj_method(sel_getUid("mutableCopy"),function(_97,_98){ +with(_97){ +return objj_msgSend(_97,"copy"); +} +}),new objj_method(sel_getUid("_menuItemView"),function(_99,_9a){ +with(_99){ +if(!_menuItemView){ +_menuItemView=objj_msgSend(objj_msgSend(_CPMenuItemView,"alloc"),"initWithFrame:forMenuItem:",CGRectMakeZero(),_99); +} +return _menuItemView; +} +}),new objj_method(sel_getUid("_isSelectable"),function(_9b,_9c){ +with(_9b){ +return !objj_msgSend(_9b,"submenu")||objj_msgSend(_9b,"action")!==sel_getUid("submenuAction:")||objj_msgSend(_9b,"target")!==objj_msgSend(_9b,"menu"); +} +}),new objj_method(sel_getUid("_isMenuBarButton"),function(_9d,_9e){ +with(_9d){ +return !objj_msgSend(_9d,"submenu")&&objj_msgSend(_9d,"menu")===objj_msgSend(CPApp,"mainMenu"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("separatorItem"),function(_9f,_a0){ +with(_9f){ +var _a1=objj_msgSend(objj_msgSend(_9f,"alloc"),"initWithTitle:action:keyEquivalent:","",nil,nil); +_a1._isSeparator=YES; +return _a1; +} +})]); +var _a2="CPMenuItemIsSeparatorKey",_a3="CPMenuItemTitleKey",_a4="CPMenuItemTargetKey",_a5="CPMenuItemActionKey",_a6="CPMenuItemIsEnabledKey",_a7="CPMenuItemIsHiddenKey",_a8="CPMenuItemTagKey",_a9="CPMenuItemStateKey",_aa="CPMenuItemImageKey",_ab="CPMenuItemAlternateImageKey",_ac="CPMenuItemSubmenuKey",_ad="CPMenuItemMenuKey",_ae="CPMenuItemKeyEquivalentKey",_af="CPMenuItemKeyEquivalentModifierMaskKey",_b0="CPMenuItemIndentationLevelKey",_b1="CPMenuItemRepresentedObjectKey",_b2="CPMenuItemViewKey"; +var _1=objj_getClass("CPMenuItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPMenuItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_b3,_b4,_b5){ +with(_b3){ +_b3=objj_msgSendSuper({receiver:_b3,super_class:objj_getClass("CPMenuItem").super_class},"init"); +if(_b3){ +_isSeparator=objj_msgSend(_b5,"containsValueForKey:",_a2)&&objj_msgSend(_b5,"decodeBoolForKey:",_a2); +_title=objj_msgSend(_b5,"decodeObjectForKey:",_a3); +_target=objj_msgSend(_b5,"decodeObjectForKey:",_a4); +_action=objj_msgSend(_b5,"decodeObjectForKey:",_a5); +_isEnabled=objj_msgSend(_b5,"containsValueForKey:",(_a6))?objj_msgSend(_b5,"decodeObjectForKey:",(_a6)):(YES); +_isHidden=objj_msgSend(_b5,"containsValueForKey:",(_a7))?objj_msgSend(_b5,"decodeObjectForKey:",(_a7)):(NO); +_tag=objj_msgSend(_b5,"containsValueForKey:",(_a8))?objj_msgSend(_b5,"decodeObjectForKey:",(_a8)):(0); +_state=objj_msgSend(_b5,"containsValueForKey:",(_a9))?objj_msgSend(_b5,"decodeObjectForKey:",(_a9)):(CPOffState); +_image=objj_msgSend(_b5,"containsValueForKey:",(_aa))?objj_msgSend(_b5,"decodeObjectForKey:",(_aa)):(nil); +_alternateImage=objj_msgSend(_b5,"containsValueForKey:",(_ab))?objj_msgSend(_b5,"decodeObjectForKey:",(_ab)):(nil); +_menu=objj_msgSend(_b5,"containsValueForKey:",(_ad))?objj_msgSend(_b5,"decodeObjectForKey:",(_ad)):(nil); +objj_msgSend(_b3,"setSubmenu:",objj_msgSend(_b5,"containsValueForKey:",(_ac))?objj_msgSend(_b5,"decodeObjectForKey:",(_ac)):(nil)); +_keyEquivalent=objj_msgSend(_b5,"decodeObjectForKey:",_ae)||""; +_keyEquivalentModifierMask=objj_msgSend(_b5,"decodeObjectForKey:",_af)||0; +objj_msgSend(_b3,"setIndentationLevel:",objj_msgSend(_b5,"decodeIntForKey:",_b0)||0); +_representedObject=objj_msgSend(_b5,"containsValueForKey:",(_b1))?objj_msgSend(_b5,"decodeObjectForKey:",(_b1)):(nil); +_view=objj_msgSend(_b5,"containsValueForKey:",(_b2))?objj_msgSend(_b5,"decodeObjectForKey:",(_b2)):(nil); +} +return _b3; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_b6,_b7,_b8){ +with(_b6){ +if(_isSeparator){ +objj_msgSend(_b8,"encodeBool:forKey:",_isSeparator,_a2); +} +objj_msgSend(_b8,"encodeObject:forKey:",_title,_a3); +objj_msgSend(_b8,"encodeObject:forKey:",_target,_a4); +objj_msgSend(_b8,"encodeObject:forKey:",_action,_a5); +if((_isEnabled)!==(YES)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_isEnabled),(_a6)); +} +if((_isHidden)!==(NO)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_isHidden),(_a7)); +} +if((_tag)!==(0)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_tag),(_a8)); +} +if((_state)!==(CPOffState)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_state),(_a9)); +} +if((_image)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_image),(_aa)); +} +if((_alternateImage)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_alternateImage),(_ab)); +} +if((_submenu)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_submenu),(_ac)); +} +if((_menu)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_menu),(_ad)); +} +if(_keyEquivalent&&_keyEquivalent.length){ +objj_msgSend(_b8,"encodeObject:forKey:",_keyEquivalent,_ae); +} +if(_keyEquivalentModifierMask){ +objj_msgSend(_b8,"encodeObject:forKey:",_keyEquivalentModifierMask,_af); +} +if(_indentationLevel>0){ +objj_msgSend(_b8,"encodeInt:forKey:",_indentationLevel,_b0); +} +if((_representedObject)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_representedObject),(_b1)); +} +if((_view)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_view),(_b2)); +} +} +})]); +p;31;_CPBorderlessBridgeWindowView.jt;2040;@STATIC;1.0;i;15;_CPWindowView.jt;2001; +objj_executeFile("_CPWindowView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(_CPWindowView,"_CPBorderlessBridgeWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_toolbarBackgroundView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_4,_5,_6){ +with(_4){ +} +}),new objj_method(sel_getUid("tile"),function(_7,_8){ +with(_7){ +objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPBorderlessBridgeWindowView").super_class},"tile"); +var _9=objj_msgSend(_7,"window"),_a=objj_msgSend(_7,"bounds"); +objj_msgSend(objj_msgSend(_9,"contentView"),"setFrame:",CGRectMake(0,objj_msgSend(_7,"toolbarMaxY"),CGRectGetWidth(_a),CGRectGetHeight(_a)-objj_msgSend(_7,"toolbarMaxY"))); +if(!objj_msgSend(objj_msgSend(_9,"toolbar"),"isVisible")){ +objj_msgSend(_toolbarBackgroundView,"removeFromSuperview"); +_toolbarBackgroundView=nil; +return; +} +if(!_toolbarBackgroundView){ +_toolbarBackgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_toolbarBackgroundView,"setBackgroundColor:",objj_msgSend(objj_msgSend(_7,"class"),"toolbarBackgroundColor")); +objj_msgSend(_toolbarBackgroundView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_7,"addSubview:positioned:relativeTo:",_toolbarBackgroundView,CPWindowBelow,nil); +} +var _b=CGRectMakeZero(),_c=objj_msgSend(_7,"toolbarOffset"); +_b.origin=CGPointMake(_c.width,_c.height); +_b.size=objj_msgSend(_toolbarView,"frame").size; +objj_msgSend(_toolbarBackgroundView,"setFrame:",_b); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("toolbarBackgroundColor"),function(_d,_e){ +with(_d){ +if(!_1){ +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPBorderlessBridgeWindowView,"class")),"pathForResource:","_CPToolbarView/_CPToolbarViewBackground.png"),CGSizeMake(1,59))); +} +return _1; +} +})]); +p;25;_CPBorderlessWindowView.jt;190;@STATIC;1.0;i;15;_CPWindowView.jt;152; +objj_executeFile("_CPWindowView.j",YES); +var _1=objj_allocateClassPair(_CPWindowView,"_CPBorderlessWindowView"),_2=_1.isa; +objj_registerClassPair(_1); +p;23;_CPDocModalWindowView.jt;1359;@STATIC;1.0;i;15;_CPWindowView.jt;1320; +objj_executeFile("_CPWindowView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(_CPWindowView,"_CPDocModalWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_bodyView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_4,_5,_6,_7){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("_CPDocModalWindowView").super_class},"initWithFrame:styleMask:",_6,_7); +if(_4){ +var _8=objj_msgSend(_4,"class"),_9=objj_msgSend(_4,"bounds"); +_bodyView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_9),CGRectGetHeight(_9))); +objj_msgSend(_bodyView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_bodyView,"setBackgroundColor:",objj_msgSend(_8,"bodyBackgroundColor")); +objj_msgSend(_bodyView,"setHitTests:",NO); +objj_msgSend(_4,"addSubview:",_bodyView); +} +return _4; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_a,_b,_c){ +with(_a){ +return _c; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_d,_e,_f){ +with(_d){ +return _f; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("bodyBackgroundColor"),function(_10,_11){ +with(_10){ +if(!_1){ +_1=objj_msgSend(CPColor,"colorWithWhite:alpha:",0.96,0.9); +} +return _1; +} +})]); +p;18;_CPHUDWindowView.jt;6961;@STATIC;1.0;t;6942; +var _1=nil,_2=nil; +var _3=26; +var _4=objj_allocateClassPair(_CPWindowView,"_CPHUDWindowView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_toolbarView"),new objj_ivar("_titleField"),new objj_ivar("_closeButton")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(objj_msgSend(_6,"class"),"contentRectForFrameRect:",_8); +if(objj_msgSend(objj_msgSend(objj_msgSend(_6,"window"),"toolbar"),"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_6,"toolbarView"),"frame")); +_9.origin.y+=toolbarHeight; +_9.size.height-=toolbarHeight; +} +return _9; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_a,_b,_c){ +with(_a){ +var _d=objj_msgSend(objj_msgSend(_a,"class"),"frameRectForContentRect:",_c); +if(objj_msgSend(objj_msgSend(objj_msgSend(_a,"window"),"toolbar"),"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_a,"toolbarView"),"frame")); +_d.origin.y-=toolbarHeight; +_d.size.height+=toolbarHeight; +} +return _d; +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPHUDWindowView").super_class},"initWithFrame:styleMask:",_10,_11); +if(_e){ +var _12=objj_msgSend(_e,"bounds"); +objj_msgSend(_e,"setBackgroundColor:",_1); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setHitTests:",NO); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_titleField,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_titleField,"setTextShadowColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setStringValue:","Untitled"); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setStringValue:",""); +objj_msgSend(_titleField,"setFrame:",CGRectMake(20,3,CGRectGetWidth(objj_msgSend(_e,"bounds"))-40,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +objj_msgSend(_e,"addSubview:",_titleField); +if(_styleMask&CPClosableWindowMask){ +var _13=objj_msgSend(_CPHUDWindowViewCloseImage,"size"); +_closeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(8,5,_13.width,_13.height)); +objj_msgSend(_closeButton,"setBordered:",NO); +objj_msgSend(_closeButton,"setImage:",_CPHUDWindowViewCloseImage); +objj_msgSend(_closeButton,"setAlternateImage:",_CPHUDWindowViewCloseActiveImage); +objj_msgSend(_e,"addSubview:",_closeButton); +} +objj_msgSend(_e,"setResizeIndicatorOffset:",CGSizeMake(5,5)); +} +return _e; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_14,_15){ +with(_14){ +objj_msgSend(_closeButton,"setTarget:",objj_msgSend(_14,"window")); +objj_msgSend(_closeButton,"setAction:",sel_getUid("performClose:")); +} +}),new objj_method(sel_getUid("setTitle:"),function(_16,_17,_18){ +with(_16){ +objj_msgSend(_titleField,"setStringValue:",_18); +} +}),new objj_method(sel_getUid("toolbarView"),function(_19,_1a){ +with(_19){ +return _toolbarView; +} +}),new objj_method(sel_getUid("toolbarLabelColor"),function(_1b,_1c){ +with(_1b){ +return objj_msgSend(CPColor,"whiteColor"); +} +}),new objj_method(sel_getUid("toolbarLabelShadowColor"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_1f,_20){ +with(_1f){ +return CGSizeMake(0,_3); +} +}),new objj_method(sel_getUid("tile"),function(_21,_22){ +with(_21){ +objj_msgSendSuper({receiver:_21,super_class:objj_getClass("_CPHUDWindowView").super_class},"tile"); +var _23=objj_msgSend(_21,"window"),_24=objj_msgSend(_21,"bounds"),_25=CGRectGetWidth(_24); +objj_msgSend(_titleField,"setFrame:",CGRectMake(20,3,_25-40,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +var _26=objj_msgSend(_21,"toolbarMaxY"); +objj_msgSend(objj_msgSend(_23,"contentView"),"setFrameOrigin:",CGPointMake(0,_26,_25,CGRectGetHeight(_24)-_26)); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("initialize"),function(_27,_28){ +with(_27){ +if(_27!=objj_msgSend(_CPHUDWindowView,"class")){ +return; +} +var _29=objj_msgSend(CPBundle,"bundleForClass:",_27); +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground0.png"),CPSizeMake(7,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground1.png"),CPSizeMake(1,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground2.png"),CPSizeMake(7,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground3.png"),CPSizeMake(7,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground4.png"),CPSizeMake(2,2)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground5.png"),CPSizeMake(7,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground6.png"),CPSizeMake(7,3)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground7.png"),CPSizeMake(1,3)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground8.png"),CPSizeMake(7,3))])); +_CPHUDWindowViewCloseImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","HUDTheme/WindowClose.png"),CPSizeMake(18,18)); +_CPHUDWindowViewCloseActiveImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","HUDTheme/WindowCloseActive.png"),CPSizeMake(18,18)); +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_2a,_2b,_2c){ +with(_2a){ +var _2d=CGRectMakeCopy(_2c),_2e=_3; +_2d.origin.y+=_2e; +_2d.size.height-=_2e; +return _2d; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_2f,_30,_31){ +with(_2f){ +var _32=CGRectMakeCopy(_31),_33=_3; +_32.origin.y-=_33; +_32.size.height+=_33; +return _32; +} +})]); +p;23;_CPStandardWindowView.jt;11862;@STATIC;1.0;i;15;_CPWindowView.jt;11822; +objj_executeFile("_CPWindowView.j",YES); +var _1=41; +var _2=nil,_3=nil; +var _4=objj_allocateClassPair(CPView,"_CPTexturedWindowHeadView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_gradientView"),new objj_ivar("_solidView"),new objj_ivar("_dividerView")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithFrame:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("_CPTexturedWindowHeadView").super_class},"initWithFrame:",_8); +if(_6){ +var _9=objj_msgSend(_6,"class"),_a=objj_msgSend(_6,"bounds"); +_gradientView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_a),_1)); +objj_msgSend(_gradientView,"setBackgroundColor:",objj_msgSend(_9,"gradientColor")); +objj_msgSend(_6,"addSubview:",_gradientView); +_solidView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,_1,CGRectGetWidth(_a),CGRectGetHeight(_a)-_1)); +objj_msgSend(_solidView,"setBackgroundColor:",objj_msgSend(_9,"solidColor")); +objj_msgSend(_6,"addSubview:",_solidView); +} +return _6; +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_b,_c,_d){ +with(_b){ +var _e=objj_msgSend(_b,"bounds"); +objj_msgSend(_gradientView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_e),_1)); +objj_msgSend(_solidView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_e),CGRectGetHeight(_e)-_1)); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("gradientColor"),function(_f,_10){ +with(_f){ +if(!_2){ +var _11=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPWindowView,"class")); +_2=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop0.png"),CGSizeMake(6,41)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop1.png"),CGSizeMake(1,41)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop2.png"),CGSizeMake(6,41))],NO)); +} +return _2; +} +}),new objj_method(sel_getUid("solidColor"),function(_12,_13){ +with(_12){ +if(!_3){ +_3=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",195/255,195/255,195/255,1); +} +return _3; +} +})]); +var _14=nil,_15=nil,_16=nil,_17=nil,_18=nil,_19=nil,_1a=nil,_1b=nil,_1c=nil; +var _1d=41; +STANDARD_TITLEBAR_HEIGHT=25; +var _4=objj_allocateClassPair(_CPWindowView,"_CPStandardWindowView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_headView"),new objj_ivar("_dividerView"),new objj_ivar("_bodyView"),new objj_ivar("_toolbarView"),new objj_ivar("_titleField"),new objj_ivar("_closeButton"),new objj_ivar("_minimizeButton"),new objj_ivar("_isDocumentEdited")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_1e,_1f,_20){ +with(_1e){ +var _21=objj_msgSend(objj_msgSend(_1e,"class"),"contentRectForFrameRect:",_20),_22=objj_msgSend(objj_msgSend(_1e,"window"),"toolbar"); +if(objj_msgSend(_22,"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_22,"_toolbarView"),"frame")); +_21.origin.y+=toolbarHeight; +_21.size.height-=toolbarHeight; +} +return _21; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(objj_msgSend(_23,"class"),"frameRectForContentRect:",_25),_27=objj_msgSend(objj_msgSend(_23,"window"),"toolbar"); +if(objj_msgSend(_27,"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_27,"_toolbarView"),"frame")); +_26.origin.y-=toolbarHeight; +_26.size.height+=toolbarHeight; +} +return _26; +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_28,_29,_2a,_2b){ +with(_28){ +_28=objj_msgSendSuper({receiver:_28,super_class:objj_getClass("_CPStandardWindowView").super_class},"initWithFrame:styleMask:",_2a,_2b); +if(_28){ +var _2c=objj_msgSend(_28,"class"),_2d=objj_msgSend(_28,"bounds"); +_headView=objj_msgSend(objj_msgSend(_CPTexturedWindowHeadView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_2d),objj_msgSend(objj_msgSend(_28,"class"),"titleBarHeight"))); +objj_msgSend(_headView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_headView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_headView); +_dividerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,CGRectGetMaxY(objj_msgSend(_headView,"frame")),CGRectGetWidth(_2d),1)); +objj_msgSend(_dividerView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_dividerView,"setBackgroundColor:",objj_msgSend(_2c,"dividerBackgroundColor")); +objj_msgSend(_dividerView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_dividerView); +var y=CGRectGetMaxY(objj_msgSend(_dividerView,"frame")); +_bodyView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,y,CGRectGetWidth(_2d),CGRectGetHeight(_2d)-y)); +objj_msgSend(_bodyView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_bodyView,"setBackgroundColor:",objj_msgSend(_2c,"bodyBackgroundColor")); +objj_msgSend(_bodyView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_bodyView); +objj_msgSend(_28,"setResizeIndicatorOffset:",CGSizeMake(2,2)); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",12)); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setTextShadowColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_titleField,"setStringValue:","Untitled"); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setStringValue:",""); +objj_msgSend(_28,"addSubview:",_titleField); +if(_styleMask&CPClosableWindowMask){ +if(!_17){ +var _2e=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_17=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButton.png"),CGSizeMake(16,16)); +_18=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png"),CGSizeMake(16,16)); +_19=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png"),CGSizeMake(16,16)); +_1a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png"),CGSizeMake(16,16)); +} +_closeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(8,7,16,16)); +objj_msgSend(_closeButton,"setBordered:",NO); +objj_msgSend(_28,"_updateCloseButton"); +objj_msgSend(_28,"addSubview:",_closeButton); +} +if(_styleMask&CPMiniaturizableWindowMask&&!objj_msgSend(CPPlatform,"isBrowser")){ +if(!_1b){ +var _2e=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_1b=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardMinimizeButton.png"),CGSizeMake(16,16)); +_1c=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png"),CGSizeMake(16,16)); +} +_minimizeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(27,7,16,16)); +objj_msgSend(_minimizeButton,"setBordered:",NO); +objj_msgSend(_minimizeButton,"setImage:",_1b); +objj_msgSend(_minimizeButton,"setAlternateImage:",_1c); +objj_msgSend(_28,"addSubview:",_minimizeButton); +} +objj_msgSend(_28,"tile"); +} +return _28; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_2f,_30){ +with(_2f){ +objj_msgSend(_closeButton,"setTarget:",objj_msgSend(_2f,"window")); +objj_msgSend(_closeButton,"setAction:",sel_getUid("performClose:")); +objj_msgSend(_minimizeButton,"setTarget:",objj_msgSend(_2f,"window")); +objj_msgSend(_minimizeButton,"setAction:",sel_getUid("performMiniaturize:")); +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_31,_32){ +with(_31){ +return CGSizeMake(0,objj_msgSend(objj_msgSend(_31,"class"),"titleBarHeight")); +} +}),new objj_method(sel_getUid("tile"),function(_33,_34){ +with(_33){ +objj_msgSendSuper({receiver:_33,super_class:objj_getClass("_CPStandardWindowView").super_class},"tile"); +var _35=objj_msgSend(_33,"window"),_36=objj_msgSend(_33,"bounds"),_37=CGRectGetWidth(_36); +objj_msgSend(_headView,"setFrameSize:",CGSizeMake(_37,objj_msgSend(_33,"toolbarMaxY"))); +objj_msgSend(_dividerView,"setFrame:",CGRectMake(0,CGRectGetMaxY(objj_msgSend(_headView,"frame")),_37,1)); +var _38=CGRectGetMaxY(objj_msgSend(_dividerView,"frame")); +objj_msgSend(_bodyView,"setFrame:",CGRectMake(0,_38,_37,CGRectGetHeight(_36)-_38)); +var _39=8; +if(_closeButton){ +_39+=19; +} +if(_minimizeButton){ +_39+=19; +} +objj_msgSend(_titleField,"setFrame:",CGRectMake(_39,5,_37-_39*2,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +objj_msgSend(objj_msgSend(_35,"contentView"),"setFrameOrigin:",CGPointMake(0,CGRectGetMaxY(objj_msgSend(_dividerView,"frame")))); +} +}),new objj_method(sel_getUid("_updateCloseButton"),function(_3a,_3b){ +with(_3a){ +if(_isDocumentEdited){ +objj_msgSend(_closeButton,"setImage:",_19); +objj_msgSend(_closeButton,"setAlternateImage:",_1a); +}else{ +objj_msgSend(_closeButton,"setImage:",_17); +objj_msgSend(_closeButton,"setAlternateImage:",_18); +} +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_3c,_3d,_3e){ +with(_3c){ +_isDocumentEdited=_3e; +objj_msgSend(_3c,"_updateCloseButton"); +} +}),new objj_method(sel_getUid("setTitle:"),function(_3f,_40,_41){ +with(_3f){ +objj_msgSend(_titleField,"setStringValue:",_41); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_42,_43,_44){ +with(_42){ +if(CGRectContainsPoint(objj_msgSend(_headView,"frame"),objj_msgSend(_42,"convertPoint:fromView:",objj_msgSend(_44,"locationInWindow"),nil))){ +return objj_msgSend(_42,"trackMoveWithEvent:",_44); +} +objj_msgSendSuper({receiver:_42,super_class:objj_getClass("_CPStandardWindowView").super_class},"mouseDown:",_44); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("bodyBackgroundColor"),function(_45,_46){ +with(_45){ +if(!_14){ +_14=objj_msgSend(CPColor,"colorWithWhite:alpha:",0.96,1); +} +return _14; +} +}),new objj_method(sel_getUid("dividerBackgroundColor"),function(_47,_48){ +with(_47){ +if(!_15){ +_15=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",125/255,125/255,125/255,1); +} +return _15; +} +}),new objj_method(sel_getUid("titleColor"),function(_49,_4a){ +with(_49){ +if(!_16){ +_16=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",44/255,44/255,44/255,1); +} +return _16; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_4b,_4c,_4d){ +with(_4b){ +var _4e=CGRectMakeCopy(_4d),_4f=objj_msgSend(_4b,"titleBarHeight")+1; +_4e.origin.y+=_4f; +_4e.size.height-=_4f; +return _4e; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_50,_51,_52){ +with(_50){ +var _53=CGRectMakeCopy(_52),_54=objj_msgSend(_50,"titleBarHeight")+1; +_53.origin.y-=_54; +_53.size.height+=_54; +return _53; +} +}),new objj_method(sel_getUid("titleBarHeight"),function(_55,_56){ +with(_55){ +return STANDARD_TITLEBAR_HEIGHT; +} +})]); +p;15;_CPWindowView.jt;9275;@STATIC;1.0;i;8;CPView.ji;13;CPImageView.jt;9226; +objj_executeFile("CPView.j",YES); +objj_executeFile("CPImageView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPView,"_CPWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_styleMask"),new objj_ivar("_resizeIndicator"),new objj_ivar("_resizeIndicatorOffset"),new objj_ivar("_toolbarView"),new objj_ivar("_toolbarOffset"),new objj_ivar("_resizeFrame"),new objj_ivar("_mouseDraggedPoint"),new objj_ivar("_cachedScreenFrame")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_4,_5,_6){ +with(_4){ +return objj_msgSend(objj_msgSend(_4,"class"),"contentRectForFrameRect:",_6); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(objj_msgSend(_7,"class"),"frameRectForContentRect:",_9); +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_a,_b,_c,_d){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("_CPWindowView").super_class},"initWithFrame:",_c); +if(_a){ +_styleMask=_d; +_resizeIndicatorOffset=CGSizeMakeZero(); +_toolbarOffset=CGSizeMakeZero(); +} +return _a; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_e,_f,_10){ +with(_e){ +} +}),new objj_method(sel_getUid("setTitle:"),function(_11,_12,_13){ +with(_11){ +} +}),new objj_method(sel_getUid("acceptsFirstMouse:"),function(_14,_15,_16){ +with(_14){ +return YES; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_17,_18,_19){ +with(_17){ +var _1a=objj_msgSend(_17,"window"); +if((_styleMask&CPResizableWindowMask)&&_resizeIndicator){ +var _1b=objj_msgSend(_resizeIndicator,"frame"); +if(CGRectContainsPoint(_1b,objj_msgSend(_17,"convertPoint:fromView:",objj_msgSend(_19,"locationInWindow"),nil))){ +return objj_msgSend(_17,"trackResizeWithEvent:",_19); +} +} +if(objj_msgSend(_1a,"isMovableByWindowBackground")){ +objj_msgSend(_17,"trackMoveWithEvent:",_19); +}else{ +objj_msgSendSuper({receiver:_17,super_class:objj_getClass("_CPWindowView").super_class},"mouseDown:",_19); +} +} +}),new objj_method(sel_getUid("trackResizeWithEvent:"),function(_1c,_1d,_1e){ +with(_1c){ +var _1f=objj_msgSend(_1e,"locationInWindow"),_20=objj_msgSend(_1e,"type"); +if(_20===CPLeftMouseUp){ +return; +} +var _21=objj_msgSend(_1c,"window"); +if(_20===CPLeftMouseDown){ +var _22=objj_msgSend(_21,"frame"); +_resizeFrame=CGRectMake(_1f.x,_1f.y,CGRectGetWidth(_22),CGRectGetHeight(_22)); +}else{ +if(_20===CPLeftMouseDragged){ +var _23=CGSizeMake(CGRectGetWidth(_resizeFrame)+_1f.x-CGRectGetMinX(_resizeFrame),CGRectGetHeight(_resizeFrame)+_1f.y-CGRectGetMinY(_resizeFrame)); +if(_21._isSheet&&_21._parentView&&(_21._frame.size.width!==_23.width)){ +objj_msgSend(_21._parentView,"_setAttachedSheetFrameOrigin"); +} +objj_msgSend(_21,"setFrameSize:",_23); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_1c,sel_getUid("trackResizeWithEvent:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("_pointWithinScreenFrame:"),function(_24,_25,_26){ +with(_24){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +return _26; +} +var _27=_cachedScreenFrame; +if(!_27){ +_27=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"visibleFrame"); +} +var _28=0; +if(objj_msgSend(CPMenu,"menuBarVisible")){ +_28=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"menuBarHeight"); +} +var _29=CGPointMake(0,0); +_29.x=MIN(MAX(_26.x,-_frame.size.width+4),CGRectGetMaxX(_27)-4); +_29.y=MIN(MAX(_26.y,_28),CGRectGetMaxY(_27)-8); +return _29; +} +}),new objj_method(sel_getUid("trackMoveWithEvent:"),function(_2a,_2b,_2c){ +with(_2a){ +var _2d=objj_msgSend(_2c,"type"); +if(_2d===CPLeftMouseUp){ +_cachedScreenFrame=nil; +return; +}else{ +if(_2d===CPLeftMouseDown){ +_mouseDraggedPoint=objj_msgSend(objj_msgSend(_2a,"window"),"convertBaseToGlobal:",objj_msgSend(_2c,"locationInWindow")); +_cachedScreenFrame=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"visibleFrame"); +}else{ +if(_2d===CPLeftMouseDragged){ +var _2e=objj_msgSend(_2a,"window"),_2f=objj_msgSend(_2e,"frame"),_30=objj_msgSend(_2e,"convertBaseToGlobal:",objj_msgSend(_2c,"locationInWindow")),_31=objj_msgSend(_2a,"_pointWithinScreenFrame:",CGPointMake((_2f.origin.x)+(_30.x-_mouseDraggedPoint.x),(_2f.origin.y)+(_30.y-_mouseDraggedPoint.y))); +objj_msgSend(_2e,"setFrameOrigin:",_31); +_mouseDraggedPoint=objj_msgSend(_2a,"_pointWithinScreenFrame:",_30); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_2a,sel_getUid("trackMoveWithEvent:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_32,_33,_34){ +with(_32){ +if(_34){ +var _35=objj_msgSend(_1,"size"),_36=objj_msgSend(_32,"frame").size; +_resizeIndicator=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(_36.width-_35.width-_resizeIndicatorOffset.width,_36.height-_35.height-_resizeIndicatorOffset.height,_35.width,_35.height)); +objj_msgSend(_resizeIndicator,"setImage:",_1); +objj_msgSend(_resizeIndicator,"setAutoresizingMask:",CPViewMinXMargin|CPViewMinYMargin); +objj_msgSend(_32,"addSubview:",_resizeIndicator); +}else{ +objj_msgSend(_resizeIndicator,"removeFromSuperview"); +_resizeIndicator=nil; +} +} +}),new objj_method(sel_getUid("showsResizeIndicator"),function(_37,_38){ +with(_37){ +return _resizeIndicator!==nil; +} +}),new objj_method(sel_getUid("setResizeIndicatorOffset:"),function(_39,_3a,_3b){ +with(_39){ +if(CGSizeEqualToSize(_resizeIndicatorOffset,_3b)){ +return; +} +_resizeIndicatorOffset=_3b; +if(!_resizeIndicator){ +return; +} +var _3c=objj_msgSend(_resizeIndicator,"frame").size,_3d=objj_msgSend(_39,"frame").size; +objj_msgSend(_resizeIndicator,"setFrameOrigin:",CGPointMake(_3d.width-_3c.width-_3b.width,_3d.height-_3c.height-_3b.height)); +} +}),new objj_method(sel_getUid("resizeIndicatorOffset"),function(_3e,_3f){ +with(_3e){ +return _resizeIndicatorOffset; +} +}),new objj_method(sel_getUid("windowDidChangeDocumentEdited"),function(_40,_41){ +with(_40){ +} +}),new objj_method(sel_getUid("windowDidChangeDocumentSaving"),function(_42,_43){ +with(_42){ +} +}),new objj_method(sel_getUid("showsToolbar"),function(_44,_45){ +with(_44){ +return YES; +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_46,_47){ +with(_46){ +return _toolbarOffset; +} +}),new objj_method(sel_getUid("toolbarLabelColor"),function(_48,_49){ +with(_48){ +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("toolbarMaxY"),function(_4a,_4b){ +with(_4a){ +if(!_toolbarView||objj_msgSend(_toolbarView,"isHidden")){ +return objj_msgSend(_4a,"toolbarOffset").height; +} +return CGRectGetMaxY(objj_msgSend(_toolbarView,"frame")); +} +}),new objj_method(sel_getUid("toolbarView"),function(_4c,_4d){ +with(_4c){ +return _toolbarView; +} +}),new objj_method(sel_getUid("tile"),function(_4e,_4f){ +with(_4e){ +var _50=objj_msgSend(_4e,"window"),_51=objj_msgSend(_4e,"bounds"),_52=CGRectGetWidth(_51); +if(objj_msgSend(objj_msgSend(_50,"toolbar"),"isVisible")){ +var _53=objj_msgSend(_4e,"toolbarView"),_54=objj_msgSend(_4e,"toolbarOffset"); +objj_msgSend(_53,"setFrame:",CGRectMake(_54.width,_54.height,_52,CGRectGetHeight(objj_msgSend(_53,"frame")))); +} +if(objj_msgSend(_4e,"showsResizeIndicator")){ +var _55=objj_msgSend(_resizeIndicator,"frame").size,_56=objj_msgSend(_4e,"bounds").size; +objj_msgSend(_resizeIndicator,"setFrameOrigin:",CGPointMake(_56.width-_55.width-_resizeIndicatorOffset.width,_56.height-_55.height-_resizeIndicatorOffset.height)); +} +} +}),new objj_method(sel_getUid("noteToolbarChanged"),function(_57,_58){ +with(_57){ +var _59=objj_msgSend(_57,"window"),_5a=objj_msgSend(_59,"toolbar"),_5b=objj_msgSend(_5a,"_toolbarView"); +if(_toolbarView!==_5b){ +objj_msgSend(_toolbarView,"removeFromSuperview"); +if(_5b){ +objj_msgSend(_5b,"removeFromSuperview"); +objj_msgSend(_5b,"FIXME_setIsHUD:",_styleMask&CPHUDBackgroundWindowMask); +objj_msgSend(_57,"addSubview:",_5b); +} +_toolbarView=_5b; +} +objj_msgSend(_5b,"setHidden:",!objj_msgSend(_57,"showsToolbar")||!objj_msgSend(_5a,"isVisible")); +if(_59){ +var _5c=objj_msgSend(_57,"convertRect:toView:",objj_msgSend(objj_msgSend(_59,"contentView"),"frame"),nil); +_5c.origin=objj_msgSend(_59,"convertBaseToGlobal:",_5c.origin); +objj_msgSend(_57,"setAutoresizesSubviews:",NO); +objj_msgSend(_59,"setFrame:",objj_msgSend(_59,"frameRectForContentRect:",_5c)); +objj_msgSend(_57,"setAutoresizesSubviews:",YES); +} +objj_msgSend(_57,"tile"); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_5d,_5e,_5f){ +with(_5d){ +if(!_resizeIndicator||_5f===_resizeIndicator){ +return; +} +objj_msgSend(_5d,"addSubview:",_resizeIndicator); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_60,_61){ +with(_60){ +if(_60!=objj_msgSend(_CPWindowView,"class")){ +return; +} +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")),"pathForResource:","_CPWindowView/_CPWindowViewResizeIndicator.png"),CGSizeMake(12,12)); +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_62,_63,_64){ +with(_62){ +return CGRectMakeCopy(_64); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_65,_66,_67){ +with(_65){ +return CGRectMakeCopy(_67); +} +})]); +p;10;CPWindow.jt;61693;@STATIC;1.0;I;25;Foundation/CPCountedSet.jI;33;Foundation/CPNotificationCenter.jI;26;Foundation/CPUndoManager.ji;12;CGGeometry.ji;13;CPAnimation.ji;13;CPResponder.ji;10;CPScreen.ji;18;CPPlatformWindow.ji;15;_CPWindowView.ji;23;_CPStandardWindowView.ji;23;_CPDocModalWindowView.ji;18;_CPHUDWindowView.ji;25;_CPBorderlessWindowView.ji;31;_CPBorderlessBridgeWindowView.ji;14;CPDragServer.ji;8;CPView.jt;61287; +objj_executeFile("Foundation/CPCountedSet.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPUndoManager.j",NO); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPAnimation.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPScreen.j",YES); +objj_executeFile("CPPlatformWindow.j",YES); +CPBorderlessWindowMask=0; +CPTitledWindowMask=1<<0; +CPClosableWindowMask=1<<1; +CPMiniaturizableWindowMask=1<<2; +CPResizableWindowMask=1<<3; +CPTexturedBackgroundWindowMask=1<<8; +CPBorderlessBridgeWindowMask=1<<20; +CPHUDBackgroundWindowMask=1<<21; +CPWindowNotSizable=0; +CPWindowMinXMargin=1; +CPWindowWidthSizable=2; +CPWindowMaxXMargin=4; +CPWindowMinYMargin=8; +CPWindowHeightSizable=16; +CPWindowMaxYMargin=32; +CPBackgroundWindowLevel=-1; +CPNormalWindowLevel=0; +CPFloatingWindowLevel=3; +CPSubmenuWindowLevel=3; +CPTornOffMenuWindowLevel=3; +CPMainMenuWindowLevel=24; +CPStatusWindowLevel=25; +CPModalPanelWindowLevel=8; +CPPopUpMenuWindowLevel=101; +CPDraggingWindowLevel=500; +CPScreenSaverWindowLevel=1000; +CPWindowOut=0; +CPWindowAbove=1; +CPWindowBelow=2; +CPWindowWillCloseNotification="CPWindowWillCloseNotification"; +CPWindowDidBecomeMainNotification="CPWindowDidBecomeMainNotification"; +CPWindowDidResignMainNotification="CPWindowDidResignMainNotification"; +CPWindowDidBecomeKeyNotification="CPWindowDidBecomeKeyNotification"; +CPWindowDidResignKeyNotification="CPWindowDidResignKeyNotification"; +CPWindowDidResizeNotification="CPWindowDidResizeNotification"; +CPWindowDidMoveNotification="CPWindowDidMoveNotification"; +CPWindowWillBeginSheetNotification="CPWindowWillBeginSheetNotification"; +CPWindowDidEndSheetNotification="CPWindowDidEndSheetNotification"; +CPWindowDidMiniaturizeNotification="CPWindowDidMiniaturizeNotification"; +CPWindowWillMiniaturizeNotification="CPWindowWillMiniaturizeNotification"; +CPWindowDidDeminiaturizeNotification="CPWindowDidDeminiaturizeNotification"; +CPWindowShadowStyleStandard=0; +CPWindowShadowStyleMenu=1; +CPWindowShadowStylePanel=2; +var _1=20,_2=19,_3=10,_4=10,_5=5,_6=nil; +var _7=nil,_8=nil; +var _9=0.2; +var _a=objj_allocateClassPair(CPResponder,"CPWindow"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_platformWindow"),new objj_ivar("_windowNumber"),new objj_ivar("_styleMask"),new objj_ivar("_frame"),new objj_ivar("_level"),new objj_ivar("_isVisible"),new objj_ivar("_isMiniaturized"),new objj_ivar("_isAnimating"),new objj_ivar("_hasShadow"),new objj_ivar("_isMovableByWindowBackground"),new objj_ivar("_shadowStyle"),new objj_ivar("_showsResizeIndicator"),new objj_ivar("_isDocumentEdited"),new objj_ivar("_isDocumentSaving"),new objj_ivar("_shadowView"),new objj_ivar("_windowView"),new objj_ivar("_contentView"),new objj_ivar("_toolbarView"),new objj_ivar("_mouseEnteredStack"),new objj_ivar("_leftMouseDownView"),new objj_ivar("_rightMouseDownView"),new objj_ivar("_toolbar"),new objj_ivar("_firstResponder"),new objj_ivar("_initialFirstResponder"),new objj_ivar("_delegate"),new objj_ivar("_title"),new objj_ivar("_acceptsMouseMovedEvents"),new objj_ivar("_ignoresMouseEvents"),new objj_ivar("_windowController"),new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_undoManager"),new objj_ivar("_representedURL"),new objj_ivar("_registeredDraggedTypes"),new objj_ivar("_registeredDraggedTypesArray"),new objj_ivar("_inclusiveRegisteredDraggedTypes"),new objj_ivar("_defaultButton"),new objj_ivar("_defaultButtonEnabled"),new objj_ivar("_autorecalculatesKeyViewLoop"),new objj_ivar("_keyViewLoopIsDirty"),new objj_ivar("_sharesChromeWithPlatformWindow"),new objj_ivar("_DOMElement"),new objj_ivar("_autoresizingMask"),new objj_ivar("_delegateRespondsToWindowWillReturnUndoManagerSelector"),new objj_ivar("_isFullPlatformWindow"),new objj_ivar("_fullPlatformWindowSession"),new objj_ivar("_sheetContext"),new objj_ivar("_parentView"),new objj_ivar("_isSheet"),new objj_ivar("_frameAnimation")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("init"),function(_c,_d){ +with(_c){ +return objj_msgSend(_c,"initWithContentRect:styleMask:",{origin:{x:0,y:0},size:{width:0,height:0}},CPTitledWindowMask); +} +}),new objj_method(sel_getUid("initWithContentRect:styleMask:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPWindow").super_class},"init"); +if(_e){ +var _12=objj_msgSend(objj_msgSend(_e,"class"),"_windowViewClassForStyleMask:",_11); +_frame=objj_msgSend(_12,"frameRectForContentRect:",_10); +objj_msgSend(_e,"_setSharesChromeWithPlatformWindow:",!objj_msgSend(CPPlatform,"isBrowser")); +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_e,"setPlatformWindow:",objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")); +}else{ +if((_11&CPBorderlessBridgeWindowMask)&&_10.size.width===0&&_10.size.height===0){ +var _13=objj_msgSend(objj_msgSend(objj_msgSend(CPScreen,"alloc"),"init"),"visibleFrame"); +_frame.size.height=MIN(768,_13.size.height); +_frame.size.width=MIN(1024,_13.size.width); +_frame.origin.x=(_13.size.width-_frame.size.width)/2; +_frame.origin.y=(_13.size.height-_frame.size.height)/2; +} +objj_msgSend(_e,"setPlatformWindow:",objj_msgSend(objj_msgSend(CPPlatformWindow,"alloc"),"initWithContentRect:",_frame)); +objj_msgSend(_e,"platformWindow")._only=_e; +} +_isFullPlatformWindow=NO; +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_isSheet=NO; +_windowNumber=objj_msgSend(CPApp._windows,"count"); +CPApp._windows[_windowNumber]=_e; +_styleMask=_11; +objj_msgSend(_e,"setLevel:",CPNormalWindowLevel); +_minSize=CGSizeMake(0,0); +_maxSize=CGSizeMake(1000000,1000000); +_windowView=objj_msgSend(objj_msgSend(_12,"alloc"),"initWithFrame:styleMask:",CGRectMake(0,0,CGRectGetWidth(_frame),CGRectGetHeight(_frame)),_11); +objj_msgSend(_windowView,"_setWindow:",_e); +objj_msgSend(_windowView,"setNextResponder:",_e); +objj_msgSend(_e,"setMovableByWindowBackground:",_11&CPHUDBackgroundWindowMask); +objj_msgSend(_e,"setContentView:",objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero())); +_firstResponder=_e; +_DOMElement=document.createElement("div"); +_DOMElement.style.position="absolute"; +_DOMElement.style.visibility="visible"; +_DOMElement.style.zIndex=0; +if(!objj_msgSend(_e,"_sharesChromeWithPlatformWindow")){ +if(NULL){ +var _14=_CGPointApplyAffineTransform(CGPointMake((_frame.origin.x),(_frame.origin.y)),NULL); +}else{ +var _14={x:(_frame.origin.x),y:(_frame.origin.y)}; +} +_DOMElement.style.left=ROUND(_14.x)+"px"; +_DOMElement.style.top=ROUND(_14.y)+"px"; +} +_DOMElement.style.width=MAX(0,ROUND(1))+"px"; +_DOMElement.style.height=MAX(0,ROUND(1))+"px"; +_DOMElement.appendChild(_windowView._DOMElement); +objj_msgSend(_e,"setNextResponder:",CPApp); +objj_msgSend(_e,"setHasShadow:",_11!==CPBorderlessWindowMask); +if(_11&CPBorderlessBridgeWindowMask){ +objj_msgSend(_e,"setFullPlatformWindow:",YES); +} +_defaultButtonEnabled=YES; +_keyViewLoopIsDirty=YES; +objj_msgSend(_e,"setShowsResizeIndicator:",_styleMask&CPResizableWindowMask); +} +return _e; +} +}),new objj_method(sel_getUid("platformWindow"),function(_15,_16){ +with(_15){ +return _platformWindow; +} +}),new objj_method(sel_getUid("setPlatformWindow:"),function(_17,_18,_19){ +with(_17){ +_platformWindow=_19; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_1a,_1b){ +with(_1a){ +_keyViewLoopIsDirty=!objj_msgSend(_1a,"_hasKeyViewLoop"); +} +}),new objj_method(sel_getUid("_setWindowView:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_windowView===_1e){ +return; +} +var _1f=_windowView; +_windowView=_1e; +if(_1f){ +objj_msgSend(_1f,"_setWindow:",nil); +objj_msgSend(_1f,"noteToolbarChanged"); +_DOMElement.removeChild(_1f._DOMElement); +} +if(_windowView){ +_DOMElement.appendChild(_windowView._DOMElement); +var _20=objj_msgSend(_contentView,"convertRect:toView:",objj_msgSend(_contentView,"bounds"),nil); +_20.origin=objj_msgSend(_1c,"convertBaseToGlobal:",_20.origin); +objj_msgSend(_windowView,"_setWindow:",_1c); +objj_msgSend(_windowView,"setNextResponder:",_1c); +objj_msgSend(_windowView,"addSubview:",_contentView); +objj_msgSend(_windowView,"setTitle:",_title); +objj_msgSend(_windowView,"noteToolbarChanged"); +objj_msgSend(_windowView,"setShowsResizeIndicator:",objj_msgSend(_1c,"showsResizeIndicator")); +objj_msgSend(_1c,"setFrame:",objj_msgSend(_1c,"frameRectForContentRect:",_20)); +} +} +}),new objj_method(sel_getUid("setFullPlatformWindow:"),function(_21,_22,_23){ +with(_21){ +if(!objj_msgSend(_platformWindow,"supportsFullPlatformWindows")){ +return; +} +_23=!!_23; +if(_isFullPlatformWindow===_23){ +return; +} +_isFullPlatformWindow=_23; +if(_isFullPlatformWindow){ +_fullPlatformWindowSession=_CPWindowFullPlatformWindowSessionMake(_windowView,objj_msgSend(_21,"contentRectForFrameRect:",objj_msgSend(_21,"frame")),objj_msgSend(_21,"hasShadow"),objj_msgSend(_21,"level")); +var _24=objj_msgSend(objj_msgSend(_21,"class"),"_windowViewClassForFullPlatformWindowStyleMask:",_styleMask),_25=objj_msgSend(objj_msgSend(_24,"alloc"),"initWithFrame:styleMask:",CGRectMakeZero(),_styleMask); +objj_msgSend(_21,"_setWindowView:",_25); +objj_msgSend(_21,"setLevel:",CPBackgroundWindowLevel); +objj_msgSend(_21,"setHasShadow:",NO); +objj_msgSend(_21,"setAutoresizingMask:",CPWindowWidthSizable|CPWindowHeightSizable); +objj_msgSend(_21,"setFrame:",objj_msgSend(_platformWindow,"visibleFrame")); +}else{ +var _25=_fullPlatformWindowSession.windowView; +objj_msgSend(_21,"_setWindowView:",_25); +objj_msgSend(_21,"setLevel:",_fullPlatformWindowSession.level); +objj_msgSend(_21,"setHasShadow:",_fullPlatformWindowSession.hasShadow); +objj_msgSend(_21,"setAutoresizingMask:",CPWindowNotSizable); +objj_msgSend(_21,"setFrame:",objj_msgSend(_25,"frameRectForContentRect:",_fullPlatformWindowSession.contentRect)); +} +} +}),new objj_method(sel_getUid("isFullPlatformWindow"),function(_26,_27){ +with(_26){ +return _isFullPlatformWindow; +} +}),new objj_method(sel_getUid("styleMask"),function(_28,_29){ +with(_28){ +return _styleMask; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_2a,_2b,_2c){ +with(_2a){ +return objj_msgSend(_windowView,"contentRectForFrameRect:",_2c); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_2d,_2e,_2f){ +with(_2d){ +return objj_msgSend(_windowView,"frameRectForContentRect:",_2f); +} +}),new objj_method(sel_getUid("frame"),function(_30,_31){ +with(_30){ +return {origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}}; +} +}),new objj_method(sel_getUid("_setClippedFrame:display:animate:"),function(_32,_33,_34,_35,_36){ +with(_32){ +_34.size.width=MIN(MAX(_34.size.width,_minSize.width),_maxSize.width); +_34.size.height=MIN(MAX(_34.size.height,_minSize.height),_maxSize.height); +objj_msgSend(_32,"setFrame:display:animate:",_34,_35,_36); +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_37,_38,_39,_3a,_3b){ +with(_37){ +_39={origin:{x:_39.origin.x,y:_39.origin.y},size:{width:_39.size.width,height:_39.size.height}}; +var _3c=_39.origin.x,_3d=_3c-FLOOR(_3c); +if(_3d){ +_39.origin.x=_3c>0.879?CEIL(_3c):FLOOR(_3c); +} +_3c=_39.origin.y; +_3d=_3c-FLOOR(_3c); +if(_3d){ +_39.origin.y=_3c>0.879?CEIL(_3c):FLOOR(_3c); +} +_3c=_39.size.width; +_3d=_3c-FLOOR(_3c); +if(_3d){ +_39.size.width=_3c>0.15?CEIL(_3c):FLOOR(_3c); +} +_3c=_39.size.height; +_3d=_3c-FLOOR(_3c); +if(_3d){ +_39.size.height=_3c>0.15?CEIL(_3c):FLOOR(_3c); +} +if(_3b){ +objj_msgSend(_frameAnimation,"stopAnimation"); +_frameAnimation=objj_msgSend(objj_msgSend(_CPWindowFrameAnimation,"alloc"),"initWithWindow:targetFrame:",_37,_39); +objj_msgSend(_frameAnimation,"startAnimation"); +}else{ +var _3e=_frame.origin,_3f=_39.origin; +if(!(_3e.x==_3f.x&&_3e.y==_3f.y)){ +_3e.x=_3f.x; +_3e.y=_3f.y; +if(!objj_msgSend(_37,"_sharesChromeWithPlatformWindow")){ +if(NULL){ +var _40=_CGPointApplyAffineTransform(CGPointMake(_3e.x,_3e.y),NULL); +}else{ +var _40={x:_3e.x,y:_3e.y}; +} +_DOMElement.style.left=ROUND(_40.x)+"px"; +_DOMElement.style.top=ROUND(_40.y)+"px"; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidMoveNotification,_37); +} +var _41=_frame.size,_42=_39.size; +if(!(_41.width==_42.width&&_41.height==_42.height)){ +_41.width=_42.width; +_41.height=_42.height; +objj_msgSend(_windowView,"setFrameSize:",_41); +if(_hasShadow){ +objj_msgSend(_shadowView,"setFrameSize:",{width:_1+_41.width+_2,height:_4+_41.height+_3+_5}); +} +if(!_isAnimating){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResizeNotification,_37); +} +} +if(objj_msgSend(_37,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"setContentRect:",_frame); +} +} +} +}),new objj_method(sel_getUid("setFrame:display:"),function(_43,_44,_45,_46){ +with(_43){ +objj_msgSend(_43,"_setClippedFrame:display:animate:",_45,_46,NO); +} +}),new objj_method(sel_getUid("setFrame:"),function(_47,_48,_49){ +with(_47){ +objj_msgSend(_47,"_setClippedFrame:display:animate:",_49,YES,NO); +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_4a,_4b,_4c){ +with(_4a){ +objj_msgSend(_4a,"_setClippedFrame:display:animate:",{origin:{x:_4c.x,y:_4c.y},size:{width:(_frame.size.width),height:(_frame.size.height)}},YES,NO); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_4d,_4e,_4f){ +with(_4d){ +objj_msgSend(_4d,"_setClippedFrame:display:animate:",{origin:{x:(_frame.origin.x),y:(_frame.origin.y)},size:{width:_4f.width,height:_4f.height}},YES,NO); +} +}),new objj_method(sel_getUid("orderFront:"),function(_50,_51,_52){ +with(_50){ +objj_msgSend(_platformWindow,"orderFront:",_50); +objj_msgSend(_platformWindow,"order:window:relativeTo:",CPWindowAbove,_50,nil); +if(_firstResponder===_50||!_firstResponder){ +objj_msgSend(_50,"makeFirstResponder:",objj_msgSend(_50,"initialFirstResponder")); +} +if(!CPApp._keyWindow){ +objj_msgSend(_50,"makeKeyWindow"); +} +if(!CPApp._mainWindow){ +objj_msgSend(_50,"makeMainWindow"); +} +} +}),new objj_method(sel_getUid("orderBack:"),function(_53,_54,_55){ +with(_53){ +} +}),new objj_method(sel_getUid("orderOut:"),function(_56,_57,_58){ +with(_56){ +if(objj_msgSend(_56,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"orderOut:",_56); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowWillClose:"))){ +objj_msgSend(_delegate,"windowWillClose:",_56); +} +objj_msgSend(_platformWindow,"order:window:relativeTo:",CPWindowOut,_56,nil); +objj_msgSend(_56,"_updateMainAndKeyWindows"); +} +}),new objj_method(sel_getUid("orderWindow:relativeTo:"),function(_59,_5a,_5b,_5c){ +with(_59){ +objj_msgSend(_platformWindow,"order:window:relativeTo:",_5b,_59,CPApp._windows[_5c]); +} +}),new objj_method(sel_getUid("setLevel:"),function(_5d,_5e,_5f){ +with(_5d){ +if(_5f===_level){ +return; +} +objj_msgSend(_platformWindow,"moveWindow:fromLevel:toLevel:",_5d,_level,_5f); +_level=_5f; +if(objj_msgSend(_5d,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"setLevel:",_5f); +} +} +}),new objj_method(sel_getUid("level"),function(_60,_61){ +with(_60){ +return _level; +} +}),new objj_method(sel_getUid("isVisible"),function(_62,_63){ +with(_62){ +return _isVisible; +} +}),new objj_method(sel_getUid("showsResizeIndicator"),function(_64,_65){ +with(_64){ +return _showsResizeIndicator; +} +}),new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_66,_67,_68){ +with(_66){ +_68=!!_68; +if(_showsResizeIndicator===_68){ +return; +} +_showsResizeIndicator=_68; +objj_msgSend(_windowView,"setShowsResizeIndicator:",objj_msgSend(_66,"showsResizeIndicator")); +} +}),new objj_method(sel_getUid("resizeIndicatorOffset"),function(_69,_6a){ +with(_69){ +return objj_msgSend(_windowView,"resizeIndicatorOffset"); +} +}),new objj_method(sel_getUid("setResizeIndicatorOffset:"),function(_6b,_6c,_6d){ +with(_6b){ +objj_msgSend(_windowView,"setResizeIndicatorOffset:",_6d); +} +}),new objj_method(sel_getUid("setContentView:"),function(_6e,_6f,_70){ +with(_6e){ +if(_contentView){ +objj_msgSend(_contentView,"removeFromSuperview"); +} +var _71=CGRectMake(0,0,CGRectGetWidth(_frame),CGRectGetHeight(_frame)); +_contentView=_70; +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_6e,"contentRectForFrameRect:",_71)); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_windowView,"addSubview:",_contentView); +} +}),new objj_method(sel_getUid("contentView"),function(_72,_73){ +with(_72){ +return _contentView; +} +}),new objj_method(sel_getUid("setAlphaValue:"),function(_74,_75,_76){ +with(_74){ +objj_msgSend(_windowView,"setAlphaValue:",_76); +} +}),new objj_method(sel_getUid("alphaValue"),function(_77,_78){ +with(_77){ +return objj_msgSend(_windowView,"alphaValue"); +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_windowView,"setBackgroundColor:",_7b); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_7c,_7d){ +with(_7c){ +return objj_msgSend(_windowView,"backgroundColor"); +} +}),new objj_method(sel_getUid("setMinSize:"),function(_7e,_7f,_80){ +with(_7e){ +if(CGSizeEqualToSize(_minSize,_80)){ +return; +} +_minSize=CGSizeCreateCopy(_80); +var _81=CGSizeMakeCopy(objj_msgSend(_7e,"frame").size),_82=NO; +if(_81.width<_minSize.width){ +_81.width=_minSize.width; +_82=YES; +} +if(_81.height<_minSize.height){ +_81.height=_minSize.height; +_82=YES; +} +if(_82){ +objj_msgSend(_7e,"setFrameSize:",_81); +} +} +}),new objj_method(sel_getUid("minSize"),function(_83,_84){ +with(_83){ +return _minSize; +} +}),new objj_method(sel_getUid("setMaxSize:"),function(_85,_86,_87){ +with(_85){ +if(CGSizeEqualToSize(_maxSize,_87)){ +return; +} +_maxSize=CGSizeCreateCopy(_87); +var _88=CGSizeMakeCopy(objj_msgSend(_85,"frame").size),_89=NO; +if(_88.width>_maxSize.width){ +_88.width=_maxSize.width; +_89=YES; +} +if(_88.height>_maxSize.height){ +_88.height=_maxSize.height; +_89=YES; +} +if(_89){ +objj_msgSend(_85,"setFrameSize:",_88); +} +} +}),new objj_method(sel_getUid("maxSize"),function(_8a,_8b){ +with(_8a){ +return _maxSize; +} +}),new objj_method(sel_getUid("hasShadow"),function(_8c,_8d){ +with(_8c){ +return _hasShadow; +} +}),new objj_method(sel_getUid("_updateShadow"),function(_8e,_8f){ +with(_8e){ +if(objj_msgSend(_8e,"_sharesChromeWithPlatformWindow")){ +if(_shadowView){ +_DOMElement.removeChild(_shadowView._DOMElement); +_shadowView=nil; +} +objj_msgSend(_platformWindow,"setHasShadow:",_hasShadow); +return; +} +if(_hasShadow&&!_shadowView){ +var _90=objj_msgSend(_windowView,"bounds"); +_shadowView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(-_1,-_3+_5,_1+CGRectGetWidth(_90)+_2,_3+CGRectGetHeight(_90)+_4)); +if(!_6){ +var _91=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_6=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow0.png"),CGSizeMake(20,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow1.png"),CGSizeMake(1,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow2.png"),CGSizeMake(19,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow3.png"),CGSizeMake(20,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow5.png"),CGSizeMake(19,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow6.png"),CGSizeMake(20,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow7.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_91,"pathForResource:","CPWindow/CPWindowShadow8.png"),CGSizeMake(19,18))])); +} +objj_msgSend(_shadowView,"setBackgroundColor:",_6); +objj_msgSend(_shadowView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_DOMElement.insertBefore(_shadowView._DOMElement,_windowView._DOMElement); +}else{ +if(!_hasShadow&&_shadowView){ +_DOMElement.removeChild(_shadowView._DOMElement); +_shadowView=nil; +} +} +} +}),new objj_method(sel_getUid("setHasShadow:"),function(_92,_93,_94){ +with(_92){ +if(_hasShadow===_94){ +return; +} +_hasShadow=_94; +objj_msgSend(_92,"_updateShadow"); +} +}),new objj_method(sel_getUid("setShadowStyle:"),function(_95,_96,_97){ +with(_95){ +_shadowStyle=_97; +objj_msgSend(objj_msgSend(_95,"platformWindow"),"setShadowStyle:",_shadowStyle); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_98,_99,_9a){ +with(_98){ +var _9b=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidResignKeyNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidBecomeKeyNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidBecomeMainNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidResignMainNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidMoveNotification,_98); +objj_msgSend(_9b,"removeObserver:name:object:",_delegate,CPWindowDidResizeNotification,_98); +_delegate=_9a; +_delegateRespondsToWindowWillReturnUndoManagerSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowWillReturnUndoManager:")); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResignKey:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResignKey:"),CPWindowDidResignKeyNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidBecomeKey:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidBecomeKey:"),CPWindowDidBecomeKeyNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidBecomeMain:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidBecomeMain:"),CPWindowDidBecomeMainNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResignMain:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResignMain:"),CPWindowDidResignMainNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidMove:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidMove:"),CPWindowDidMoveNotification,_98); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResize:"))){ +objj_msgSend(_9b,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResize:"),CPWindowDidResizeNotification,_98); +} +} +}),new objj_method(sel_getUid("delegate"),function(_9c,_9d){ +with(_9c){ +return _delegate; +} +}),new objj_method(sel_getUid("setWindowController:"),function(_9e,_9f,_a0){ +with(_9e){ +_windowController=_a0; +} +}),new objj_method(sel_getUid("windowController"),function(_a1,_a2){ +with(_a1){ +return _windowController; +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_a3,_a4,_a5){ +with(_a3){ +if(objj_msgSend(_delegate,"respondsToSelector:",_a5)){ +objj_msgSend(_delegate,"performSelector:",_a5); +}else{ +objj_msgSendSuper({receiver:_a3,super_class:objj_getClass("CPWindow").super_class},"doCommandBySelector:",_a5); +} +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_a6,_a7){ +with(_a6){ +return YES; +} +}),new objj_method(sel_getUid("initialFirstResponder"),function(_a8,_a9){ +with(_a8){ +return _initialFirstResponder; +} +}),new objj_method(sel_getUid("setInitialFirstResponder:"),function(_aa,_ab,_ac){ +with(_aa){ +_initialFirstResponder=_ac; +} +}),new objj_method(sel_getUid("makeFirstResponder:"),function(_ad,_ae,_af){ +with(_ad){ +if(_firstResponder===_af){ +return YES; +} +if(!objj_msgSend(_firstResponder,"resignFirstResponder")){ +return NO; +} +if(!_af||!objj_msgSend(_af,"acceptsFirstResponder")||!objj_msgSend(_af,"becomeFirstResponder")){ +_firstResponder=_ad; +return NO; +} +_firstResponder=_af; +return YES; +} +}),new objj_method(sel_getUid("firstResponder"),function(_b0,_b1){ +with(_b0){ +return _firstResponder; +} +}),new objj_method(sel_getUid("acceptsMouseMovedEvents"),function(_b2,_b3){ +with(_b2){ +return _acceptsMouseMovedEvents; +} +}),new objj_method(sel_getUid("setAcceptsMouseMovedEvents:"),function(_b4,_b5,_b6){ +with(_b4){ +_acceptsMouseMovedEvents=_b6; +} +}),new objj_method(sel_getUid("ignoresMouseEvents"),function(_b7,_b8){ +with(_b7){ +return _ignoresMouseEvents; +} +}),new objj_method(sel_getUid("setIgnoresMouseEvents:"),function(_b9,_ba,_bb){ +with(_b9){ +_ignoresMouseEvents=_bb; +} +}),new objj_method(sel_getUid("title"),function(_bc,_bd){ +with(_bc){ +return _title; +} +}),new objj_method(sel_getUid("setTitle:"),function(_be,_bf,_c0){ +with(_be){ +_title=_c0; +objj_msgSend(_windowView,"setTitle:",_c0); +objj_msgSend(_be,"_synchronizeMenuBarTitleWithWindowTitle"); +} +}),new objj_method(sel_getUid("setTitleWithRepresentedFilename:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSend(_c1,"setRepresentedFilename:",_c3); +objj_msgSend(_c1,"setTitle:",objj_msgSend(_c3,"lastPathComponent")); +} +}),new objj_method(sel_getUid("setRepresentedFilename:"),function(_c4,_c5,_c6){ +with(_c4){ +objj_msgSend(_c4,"setRepresentedURL:",_c6); +} +}),new objj_method(sel_getUid("representedFilename"),function(_c7,_c8){ +with(_c7){ +return _representedURL; +} +}),new objj_method(sel_getUid("setRepresentedURL:"),function(_c9,_ca,_cb){ +with(_c9){ +_representedURL=_cb; +} +}),new objj_method(sel_getUid("representedURL"),function(_cc,_cd){ +with(_cc){ +return _representedURL; +} +}),new objj_method(sel_getUid("screen"),function(_ce,_cf){ +with(_ce){ +return objj_msgSend(objj_msgSend(CPScreen,"alloc"),"init"); +} +}),new objj_method(sel_getUid("setMovableByWindowBackground:"),function(_d0,_d1,_d2){ +with(_d0){ +_isMovableByWindowBackground=_d2; +} +}),new objj_method(sel_getUid("isMovableByWindowBackground"),function(_d3,_d4){ +with(_d3){ +return _isMovableByWindowBackground; +} +}),new objj_method(sel_getUid("center"),function(_d5,_d6){ +with(_d5){ +if(_isFullPlatformWindow){ +return; +} +var _d7=objj_msgSend(_d5,"frame").size,_d8=objj_msgSend(CPPlatform,"isBrowser")?objj_msgSend(_platformWindow,"contentBounds").size:objj_msgSend(objj_msgSend(_d5,"screen"),"visibleFrame").size; +var _d9=CGPointMake((_d8.width-_d7.width)/2,(_d8.height-_d7.height)/2); +if(_d9.x<0){ +_d9.x=0; +} +if(_d9.y<0){ +_d9.y=0; +} +objj_msgSend(_d5,"setFrameOrigin:",_d9); +} +}),new objj_method(sel_getUid("sendEvent:"),function(_da,_db,_dc){ +with(_da){ +var _dd=objj_msgSend(_dc,"type"),_de=objj_msgSend(_dc,"locationInWindow"); +switch(_dd){ +case CPFlagsChanged: +return objj_msgSend(objj_msgSend(_da,"firstResponder"),"flagsChanged:",_dc); +case CPKeyUp: +return objj_msgSend(objj_msgSend(_da,"firstResponder"),"keyUp:",_dc); +case CPKeyDown: +objj_msgSend(objj_msgSend(_da,"firstResponder"),"keyDown:",_dc); +if(!objj_msgSend(_da,"disableKeyEquivalentForDefaultButton")){ +if(objj_msgSend(_dc,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(objj_msgSend(_da,"defaultButton"),"keyEquivalent"),objj_msgSend(objj_msgSend(_da,"defaultButton"),"keyEquivalentModifierMask"))){ +objj_msgSend(objj_msgSend(_da,"defaultButton"),"performClick:",_da); +} +} +return; +case CPScrollWheel: +return objj_msgSend(objj_msgSend(_windowView,"hitTest:",_de),"scrollWheel:",_dc); +case CPLeftMouseUp: +case CPRightMouseUp: +var _df=_leftMouseDownView,_e0=_dd==CPRightMouseUp?sel_getUid("rightMouseUp:"):sel_getUid("mouseUp:"); +if(!_df){ +_df=objj_msgSend(_windowView,"hitTest:",_de); +} +objj_msgSend(_df,"performSelector:withObject:",_e0,_dc); +_leftMouseDownView=nil; +return; +case CPLeftMouseDown: +case CPRightMouseDown: +_leftMouseDownView=objj_msgSend(_windowView,"hitTest:",_de); +if(_leftMouseDownView!=_firstResponder&&objj_msgSend(_leftMouseDownView,"acceptsFirstResponder")){ +objj_msgSend(_da,"makeFirstResponder:",_leftMouseDownView); +} +objj_msgSend(CPApp,"activateIgnoringOtherApps:",YES); +var _e1=objj_msgSend(_dc,"window"),_e0=_dd==CPRightMouseDown?sel_getUid("rightMouseDown:"):sel_getUid("mouseDown:"); +if(objj_msgSend(_e1,"isKeyWindow")||objj_msgSend(_e1,"becomesKeyOnlyIfNeeded")&&!objj_msgSend(_leftMouseDownView,"needsPanelToBecomeKey")){ +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_e0,_dc); +}else{ +objj_msgSend(_da,"makeKeyAndOrderFront:",_da); +if(objj_msgSend(_leftMouseDownView,"acceptsFirstMouse:",_dc)){ +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_e0,_dc); +} +} +break; +case CPLeftMouseDragged: +case CPRightMouseDragged: +if(!_leftMouseDownView){ +return objj_msgSend(objj_msgSend(_windowView,"hitTest:",_de),"mouseDragged:",_dc); +} +var _e0; +if(_dd==CPRightMouseDragged){ +_e0=sel_getUid("rightMouseDragged:"); +if(!objj_msgSend(_leftMouseDownView,"respondsToSelector:",_e0)){ +_e0=nil; +} +} +if(!_e0){ +_e0=sel_getUid("mouseDragged:"); +} +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_e0,_dc); +case CPMouseMoved: +if(!_acceptsMouseMovedEvents){ +return; +} +if(!_mouseEnteredStack){ +_mouseEnteredStack=[]; +} +var _e2=objj_msgSend(_windowView,"hitTest:",_de); +if(objj_msgSend(_mouseEnteredStack,"count")&&objj_msgSend(_mouseEnteredStack,"lastObject")===_e2){ +return objj_msgSend(_e2,"mouseMoved:",_dc); +} +var _e3=_e2,_e4=[]; +while(_e3){ +_e4.unshift(_e3); +_e3=objj_msgSend(_e3,"superview"); +} +var _e5=MIN(_mouseEnteredStack.length,_e4.length); +while(_e5--){ +if(_mouseEnteredStack[_e5]===_e4[_e5]){ +break; +} +} +var _e6=_e5+1,_e7=_mouseEnteredStack.length; +if(_e6<_e7){ +var _e8=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPMouseExited,_de,objj_msgSend(_dc,"modifierFlags"),objj_msgSend(_dc,"timestamp"),_windowNumber,nil,-1,1,0); +for(;_e6<_e7;++_e6){ +objj_msgSend(_mouseEnteredStack[_e6],"mouseExited:",_e8); +} +} +_e6=_e5+1; +_e7=_e4.length; +if(_e6<_e7){ +var _e8=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPMouseEntered,_de,objj_msgSend(_dc,"modifierFlags"),objj_msgSend(_dc,"timestamp"),_windowNumber,nil,-1,1,0); +for(;_e6<_e7;++_e6){ +objj_msgSend(_e4[_e6],"mouseEntered:",_e8); +} +} +_mouseEnteredStack=_e4; +objj_msgSend(_e2,"mouseMoved:",_dc); +} +} +}),new objj_method(sel_getUid("windowNumber"),function(_e9,_ea){ +with(_e9){ +return _windowNumber; +} +}),new objj_method(sel_getUid("becomeKeyWindow"),function(_eb,_ec){ +with(_eb){ +CPApp._keyWindow=_eb; +if(_firstResponder!==_eb&&objj_msgSend(_firstResponder,"respondsToSelector:",sel_getUid("becomeKeyWindow"))){ +objj_msgSend(_firstResponder,"becomeKeyWindow"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidBecomeKeyNotification,_eb); +} +}),new objj_method(sel_getUid("canBecomeKeyWindow"),function(_ed,_ee){ +with(_ed){ +return YES; +} +}),new objj_method(sel_getUid("isKeyWindow"),function(_ef,_f0){ +with(_ef){ +return objj_msgSend(CPApp,"keyWindow")==_ef; +} +}),new objj_method(sel_getUid("makeKeyAndOrderFront:"),function(_f1,_f2,_f3){ +with(_f1){ +objj_msgSend(_f1,"orderFront:",_f1); +objj_msgSend(_f1,"makeKeyWindow"); +objj_msgSend(_f1,"makeMainWindow"); +} +}),new objj_method(sel_getUid("makeKeyWindow"),function(_f4,_f5){ +with(_f4){ +if(objj_msgSend(CPApp,"keyWindow")===_f4||!objj_msgSend(_f4,"canBecomeKeyWindow")){ +return; +} +objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"resignKeyWindow"); +objj_msgSend(_f4,"becomeKeyWindow"); +} +}),new objj_method(sel_getUid("resignKeyWindow"),function(_f6,_f7){ +with(_f6){ +if(_firstResponder!==_f6&&objj_msgSend(_firstResponder,"respondsToSelector:",sel_getUid("resignKeyWindow"))){ +objj_msgSend(_firstResponder,"resignKeyWindow"); +} +if(CPApp._keyWindow===_f6){ +CPApp._keyWindow=nil; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResignKeyNotification,_f6); +} +}),new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"),function(_f8,_f9,_fa,_fb,_fc,_fd,_fe,_ff,_100){ +with(_f8){ +objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:",_fa,_f8,objj_msgSend(_f8,"convertBaseToGlobal:",_fb),_fc,_fd,_fe,_ff,_100); +} +}),new objj_method(sel_getUid("_noteRegisteredDraggedTypes:"),function(self,_101,_102){ +with(self){ +if(!_102){ +return; +} +if(!_inclusiveRegisteredDraggedTypes){ +_inclusiveRegisteredDraggedTypes=objj_msgSend(CPCountedSet,"set"); +} +objj_msgSend(_inclusiveRegisteredDraggedTypes,"unionSet:",_102); +} +}),new objj_method(sel_getUid("_noteUnregisteredDraggedTypes:"),function(self,_103,_104){ +with(self){ +if(!_104){ +return; +} +objj_msgSend(_inclusiveRegisteredDraggedTypes,"minusSet:",_104); +if(objj_msgSend(_inclusiveRegisteredDraggedTypes,"count")===0){ +_inclusiveRegisteredDraggedTypes=nil; +} +} +}),new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"),function(self,_105,_106,_107,_108,_109,_10a,_10b,_10c){ +with(self){ +objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:",_106,self,objj_msgSend(self,"convertBaseToGlobal:",_107),_108,_109,_10a,_10b,_10c); +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(self,_10d,_10e){ +with(self){ +if(!_10e){ +return; +} +objj_msgSend(self,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_registeredDraggedTypes,"addObjectsFromArray:",_10e); +objj_msgSend(self,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypesArray=nil; +} +}),new objj_method(sel_getUid("registeredDraggedTypes"),function(self,_10f){ +with(self){ +if(!_registeredDraggedTypesArray){ +_registeredDraggedTypesArray=objj_msgSend(_registeredDraggedTypes,"allObjects"); +} +return _registeredDraggedTypesArray; +} +}),new objj_method(sel_getUid("unregisterDraggedTypes"),function(self,_110){ +with(self){ +objj_msgSend(self,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(self,_111,_112){ +with(self){ +if(_isDocumentEdited==_112){ +return; +} +_isDocumentEdited=_112; +objj_msgSend(CPMenu,"_setMenuBarIconImageAlphaValue:",_isDocumentEdited?0.5:1); +objj_msgSend(_windowView,"setDocumentEdited:",_112); +} +}),new objj_method(sel_getUid("isDocumentEdited"),function(self,_113){ +with(self){ +return _isDocumentEdited; +} +}),new objj_method(sel_getUid("setDocumentSaving:"),function(self,_114,_115){ +with(self){ +if(_isDocumentSaving==_115){ +return; +} +_isDocumentSaving=_115; +objj_msgSend(self,"_synchronizeSaveMenuWithDocumentSaving"); +objj_msgSend(_windowView,"windowDidChangeDocumentSaving"); +} +}),new objj_method(sel_getUid("isDocumentSaving"),function(self,_116){ +with(self){ +return _isDocumentSaving; +} +}),new objj_method(sel_getUid("_synchronizeSaveMenuWithDocumentSaving"),function(self,_117){ +with(self){ +if(!objj_msgSend(self,"isMainWindow")){ +return; +} +var _118=objj_msgSend(CPApp,"mainMenu"),_119=objj_msgSend(_118,"indexOfItemWithTitle:",_isDocumentSaving?"Save":"Saving..."); +if(_119==CPNotFound){ +return; +} +var item=objj_msgSend(_118,"itemAtIndex:",_119); +if(_isDocumentSaving){ +_7=objj_msgSend(item,"image"); +objj_msgSend(item,"setTitle:","Saving..."); +objj_msgSend(item,"setImage:",_8); +objj_msgSend(item,"setEnabled:",NO); +}else{ +objj_msgSend(item,"setTitle:","Save"); +objj_msgSend(item,"setImage:",_7); +objj_msgSend(item,"setEnabled:",YES); +} +} +}),new objj_method(sel_getUid("performMiniaturize:"),function(self,_11a,_11b){ +with(self){ +objj_msgSend(self,"miniaturize:",_11b); +} +}),new objj_method(sel_getUid("miniaturize:"),function(self,_11c,_11d){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillMiniaturizeNotification,self); +objj_msgSend(objj_msgSend(self,"platformWindow"),"miniaturize:",_11d); +objj_msgSend(self,"_updateMainAndKeyWindows"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidMiniaturizeNotification,self); +_isMiniaturized=YES; +} +}),new objj_method(sel_getUid("deminiaturize:"),function(self,_11e,_11f){ +with(self){ +objj_msgSend(objj_msgSend(self,"platformWindow"),"deminiaturize:",_11f); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidDeminiaturizeNotification,self); +_isMiniaturized=NO; +} +}),new objj_method(sel_getUid("isMiniaturized"),function(self,_120){ +with(self){ +return _isMiniaturized; +} +}),new objj_method(sel_getUid("performClose:"),function(self,_121,_122){ +with(self){ +if(!(_styleMask&CPClosableWindowMask)){ +return; +} +if(objj_msgSend(self,"isFullBridge")){ +var _123=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(_123,"type")===CPKeyDown&&objj_msgSend(_123,"characters")==="w"&&(objj_msgSend(_123,"modifierFlags")&CPPlatformActionKeyMask)){ +objj_msgSend(objj_msgSend(self,"platformWindow"),"_propagateCurrentDOMEvent:",YES); +return; +} +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowShouldClose:"))){ +if(!objj_msgSend(_delegate,"windowShouldClose:",self)){ +return; +} +}else{ +if(objj_msgSend(self,"respondsToSelector:",sel_getUid("windowShouldClose:"))&&!objj_msgSend(self,"windowShouldClose:",self)){ +return; +} +} +var _124=objj_msgSend(_windowController,"documents"); +if(objj_msgSend(_124,"count")){ +var _125=objj_msgSend(_124,"indexOfObject:",objj_msgSend(_windowController,"document")); +objj_msgSend(_124[_125],"shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",_windowController,self,sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),{documents:objj_msgSend(_124,"copy"),visited:0,index:_125}); +}else{ +objj_msgSend(self,"close"); +} +} +}),new objj_method(sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),function(self,_126,_127,_128,_129){ +with(self){ +if(_128){ +var _12a=objj_msgSend(self,"windowController"),_12b=_129.documents,_12c=objj_msgSend(_12b,"count"),_12d=++_129.visited,_12e=++_129.index%_12c; +objj_msgSend(_127,"removeWindowController:",_12a); +if(_12d<_12c){ +objj_msgSend(_12a,"setDocument:",_12b[_12e]); +objj_msgSend(_12b[_12e],"shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",_windowController,self,sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),_129); +}else{ +objj_msgSend(self,"close"); +} +} +} +}),new objj_method(sel_getUid("close"),function(self,_12f){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillCloseNotification,self); +objj_msgSend(self,"orderOut:",nil); +} +}),new objj_method(sel_getUid("isMainWindow"),function(self,_130){ +with(self){ +return objj_msgSend(CPApp,"mainWindow")==self; +} +}),new objj_method(sel_getUid("canBecomeMainWindow"),function(self,_131){ +with(self){ +if(objj_msgSend(self,"isVisible")){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("makeMainWindow"),function(self,_132){ +with(self){ +if(objj_msgSend(CPApp,"mainWindow")===self||!objj_msgSend(self,"canBecomeMainWindow")){ +return; +} +objj_msgSend(objj_msgSend(CPApp,"mainWindow"),"resignMainWindow"); +objj_msgSend(self,"becomeMainWindow"); +} +}),new objj_method(sel_getUid("becomeMainWindow"),function(self,_133){ +with(self){ +CPApp._mainWindow=self; +objj_msgSend(self,"_synchronizeMenuBarTitleWithWindowTitle"); +objj_msgSend(self,"_synchronizeSaveMenuWithDocumentSaving"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidBecomeMainNotification,self); +} +}),new objj_method(sel_getUid("resignMainWindow"),function(self,_134){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResignMainNotification,self); +if(CPApp._mainWindow===self){ +CPApp._mainWindow=nil; +} +} +}),new objj_method(sel_getUid("_updateMainAndKeyWindows"),function(self,_135){ +with(self){ +var _136=objj_msgSend(CPApp,"orderedWindows"),_137=objj_msgSend(_136,"count"); +if(objj_msgSend(self,"isKeyWindow")){ +var _138=objj_msgSend(CPApp,"keyWindow"); +objj_msgSend(self,"resignKeyWindow"); +if(_138&&_138!==self&&objj_msgSend(_138,"canBecomeKeyWindow")){ +objj_msgSend(_138,"makeKeyWindow"); +}else{ +var _139=objj_msgSend(CPApp,"mainMenu"),_13a=objj_getClass("_CPMenuBarWindow"),_13b; +for(var i=0;i<_137;i++){ +var _13c=_136[i]; +if(objj_msgSend(_13c,"isKindOfClass:",_13a)){ +_13b=_13c; +} +if(_13c===self||_13c===_13b){ +continue; +} +if(objj_msgSend(_13c,"isVisible")&&objj_msgSend(_13c,"canBecomeKeyWindow")){ +objj_msgSend(_13c,"makeKeyWindow"); +break; +} +} +if(!objj_msgSend(CPApp,"keyWindow")){ +objj_msgSend(_13b,"makeKeyWindow"); +} +} +} +if(objj_msgSend(self,"isMainWindow")){ +var _13d=objj_msgSend(CPApp,"mainWindow"); +objj_msgSend(self,"resignMainWindow"); +if(_13d&&_13d!==self&&objj_msgSend(_13d,"canBecomeMainWindow")){ +objj_msgSend(_13d,"makeMainWindow"); +}else{ +var _139=objj_msgSend(CPApp,"mainMenu"),_13a=objj_getClass("_CPMenuBarWindow"),_13b; +for(var i=0;i<_137;i++){ +var _13c=_136[i]; +if(objj_msgSend(_13c,"isKindOfClass:",_13a)){ +_13b=_13c; +} +if(_13c===self||_13c===_13b){ +continue; +} +if(objj_msgSend(_13c,"isVisible")&&objj_msgSend(_13c,"canBecomeMainWindow")){ +objj_msgSend(_13c,"makeMainWindow"); +break; +} +} +} +} +} +}),new objj_method(sel_getUid("toolbar"),function(self,_13e){ +with(self){ +return _toolbar; +} +}),new objj_method(sel_getUid("setToolbar:"),function(self,_13f,_140){ +with(self){ +if(_toolbar===_140){ +return; +} +objj_msgSend(objj_msgSend(_140,"_window"),"setToolbar:",nil); +objj_msgSend(_toolbar,"_setWindow:",nil); +_toolbar=_140; +objj_msgSend(_toolbar,"_setWindow:",self); +objj_msgSend(self,"_noteToolbarChanged"); +} +}),new objj_method(sel_getUid("toggleToolbarShown:"),function(self,_141,_142){ +with(self){ +var _143=objj_msgSend(self,"toolbar"); +objj_msgSend(_143,"setVisible:",!objj_msgSend(_143,"isVisible")); +} +}),new objj_method(sel_getUid("_noteToolbarChanged"),function(self,_144){ +with(self){ +var _145=CGRectMakeCopy(objj_msgSend(self,"frame")),_146; +objj_msgSend(_windowView,"noteToolbarChanged"); +if(_isFullPlatformWindow){ +_146=objj_msgSend(_platformWindow,"visibleFrame"); +}else{ +_146=CGRectMakeCopy(objj_msgSend(self,"frame")); +_146.origin=_145.origin; +} +objj_msgSend(self,"setFrame:",_146); +} +}),new objj_method(sel_getUid("_setFrame:delegate:duration:curve:"),function(self,_147,_148,_149,_14a,_14b){ +with(self){ +objj_msgSend(_frameAnimation,"stopAnimation"); +_frameAnimation=objj_msgSend(objj_msgSend(_CPWindowFrameAnimation,"alloc"),"initWithWindow:targetFrame:",self,_148); +objj_msgSend(_frameAnimation,"setDelegate:",_149); +objj_msgSend(_frameAnimation,"setAnimationCurve:",_14b); +objj_msgSend(_frameAnimation,"setDuration:",_14a); +objj_msgSend(_frameAnimation,"startAnimation"); +} +}),new objj_method(sel_getUid("animationResizeTime:"),function(self,_14c,_14d){ +with(self){ +return _9; +} +}),new objj_method(sel_getUid("_setAttachedSheetFrameOrigin"),function(self,_14e){ +with(self){ +var _14f=objj_msgSend(self,"attachedSheet"); +var _150=objj_msgSend(objj_msgSend(self,"contentView"),"frame"),_151=CGRectMakeCopy(objj_msgSend(_14f,"frame")); +_151.origin.y=CGRectGetMinY(_frame)+CGRectGetMinY(_150); +_151.origin.x=CGRectGetMinX(_frame)+FLOOR((CGRectGetWidth(_frame)-CGRectGetWidth(_151))/2); +objj_msgSend(_14f,"setFrame:display:animate:",_151,YES,NO); +} +}),new objj_method(sel_getUid("_attachSheet:modalDelegate:didEndSelector:contextInfo:"),function(self,_152,_153,_154,_155,_156){ +with(self){ +var _157=objj_msgSend(_153,"frame"); +_sheetContext={"sheet":_153,"modalDelegate":_154,"endSelector":_155,"contextInfo":_156,"frame":CGRectMakeCopy(_157),"returnCode":-1,"opened":NO}; +objj_msgSend(self,"_attachSheetWindow:",_153); +} +}),new objj_method(sel_getUid("_attachSheetWindow:"),function(self,_158,_159){ +with(self){ +var _15a=objj_msgSend(_159,"frame"),_15b=objj_msgSend(self,"frame"),_15c=objj_msgSend(_159,"contentView"); +objj_msgSend(self,"_setUpMasksForView:",_15c); +_159._isSheet=YES; +_159._parentView=self; +var _15d=_15b.origin.x+FLOOR((_15b.size.width-_15a.size.width)/2),_15e=_15b.origin.y+objj_msgSend(objj_msgSend(self,"contentView"),"frame").origin.y,_15f=CGRectMake(_15d,_15e,_15a.size.width,0),_160=CGRectMake(_15d,_15e,_15a.size.width,_15a.size.height); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillBeginSheetNotification,self); +objj_msgSend(CPApp,"runModalForWindow:",_159); +objj_msgSend(_159,"orderFront:",self); +objj_msgSend(_159,"setFrame:display:animate:",_15f,YES,NO); +_sheetContext["opened"]=YES; +objj_msgSend(_159,"_setFrame:delegate:duration:curve:",_160,self,objj_msgSend(self,"animationResizeTime:",_160),CPAnimationEaseOut); +objj_msgSend(_159,"becomeKeyWindow"); +} +}),new objj_method(sel_getUid("_detachSheetWindow"),function(self,_161){ +with(self){ +var _162=objj_msgSend(self,"attachedSheet"),_163=objj_msgSend(_162,"frame"),_164=CGRectMakeCopy(_163); +_164.size.height=0; +_sheetContext["frame"]=_163; +var _165=objj_msgSend(_162,"contentView"); +objj_msgSend(self,"_setUpMasksForView:",_165); +_sheetContext["opened"]=NO; +objj_msgSend(_162,"_setFrame:delegate:duration:curve:",_164,self,objj_msgSend(self,"animationResizeTime:",_164),CPAnimationEaseIn); +} +}),new objj_method(sel_getUid("animationDidEnd:"),function(self,_166,anim){ +with(self){ +var _167=_sheetContext["sheet"]; +if(anim._window!=_167){ +return; +} +var _168=objj_msgSend(_167,"contentView"); +if(_sheetContext["opened"]===YES){ +objj_msgSend(self,"_restoreMasksForView:",_168); +return; +} +objj_msgSend(CPApp,"stopModal"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidEndSheetNotification,self); +objj_msgSend(_167,"orderOut:",self); +var _169=_sheetContext["frame"]; +objj_msgSend(_167,"setFrame:",_169); +objj_msgSend(self,"_restoreMasksForView:",_168); +var _16a=_sheetContext["modalDelegate"],_16b=_sheetContext["endSelector"],_16c=_sheetContext["returnCode"],_16d=_sheetContext["contextInfo"]; +_sheetContext=nil; +_167._parentView=nil; +if(_16a!=nil&&_16b!=nil){ +objj_msgSend(_16a,_16b,_167,_16c,_16d); +} +} +}),new objj_method(sel_getUid("_setUpMasksForView:"),function(self,_16e,_16f){ +with(self){ +var _170=objj_msgSend(_16f,"subviews"); +objj_msgSend(_170,"addObject:",_16f); +for(var i=0,_171=objj_msgSend(_170,"count");i<_171;i++){ +var view=objj_msgSend(_170,"objectAtIndex:",i),mask=objj_msgSend(view,"autoresizingMask"),_172=(mask&CPViewMinYMargin)?128:CPViewMinYMargin; +objj_msgSend(view,"setAutoresizingMask:",(mask|_172)); +} +} +}),new objj_method(sel_getUid("_restoreMasksForView:"),function(self,_173,_174){ +with(self){ +var _175=objj_msgSend(_174,"subviews"); +objj_msgSend(_175,"addObject:",_174); +for(var i=0,_176=objj_msgSend(_175,"count");i<_176;i++){ +var view=objj_msgSend(_175,"objectAtIndex:",i),mask=objj_msgSend(view,"autoresizingMask"),_177=(mask&128)?128:CPViewMinYMargin; +objj_msgSend(view,"setAutoresizingMask:",(mask&(~_177))); +} +} +}),new objj_method(sel_getUid("attachedSheet"),function(self,_178){ +with(self){ +if(_sheetContext===nil){ +return nil; +} +return _sheetContext["sheet"]; +} +}),new objj_method(sel_getUid("isSheet"),function(self,_179){ +with(self){ +return _isSheet; +} +}),new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"),function(self,_17a){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("worksWhenModal"),function(self,_17b){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(self,_17c,_17d){ +with(self){ +return objj_msgSend(objj_msgSend(self,"contentView"),"performKeyEquivalent:",_17d); +} +}),new objj_method(sel_getUid("keyDown:"),function(self,_17e,_17f){ +with(self){ +if(objj_msgSend(_17f,"_couldBeKeyEquivalent")&&objj_msgSend(self,"performKeyEquivalent:",_17f)){ +return; +} +objj_msgSend(self,"interpretKeyEvents:",[_17f]); +} +}),new objj_method(sel_getUid("insertTab:"),function(self,_180,_181){ +with(self){ +objj_msgSend(self,"selectNextKeyView:",nil); +} +}),new objj_method(sel_getUid("_dirtyKeyViewLoop"),function(self,_182){ +with(self){ +if(_autorecalculatesKeyViewLoop){ +_keyViewLoopIsDirty=YES; +} +} +}),new objj_method(sel_getUid("_hasKeyViewLoop"),function(self,_183){ +with(self){ +var _184=[]; +objj_msgSend(self,"_appendSubviewsOf:toArray:",_contentView,_184); +for(var i=0,_185=objj_msgSend(_184,"count");i<_185;i++){ +if(_184[i]._nextKeyView){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("recalculateKeyViewLoop"),function(self,_186){ +with(self){ +var _187=[]; +objj_msgSend(self,"_appendSubviewsOf:toArray:",_contentView,_187); +var _188=objj_msgSend(_187,"sortedArrayUsingFunction:context:",_189,_contentView),_18a=objj_msgSend(_188,"count"); +for(var i=0;i<_18a;i++){ +objj_msgSend(_188[i],"setNextKeyView:",_188[(i+1)%_18a]); +} +_keyViewLoopIsDirty=NO; +} +}),new objj_method(sel_getUid("_appendSubviewsOf:toArray:"),function(self,_18b,_18c,_18d){ +with(self){ +var _18e=objj_msgSend(_18c,"subviews"),_18f=objj_msgSend(_18e,"count"); +while(_18f--){ +objj_msgSend(self,"_appendSubviewsOf:toArray:",_18e[_18f],_18d); +} +objj_msgSend(_18d,"addObject:",_18c); +} +}),new objj_method(sel_getUid("setAutorecalculatesKeyViewLoop:"),function(self,_190,_191){ +with(self){ +if(_autorecalculatesKeyViewLoop===_191){ +return; +} +_autorecalculatesKeyViewLoop=_191; +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +}else{ +if(_autorecalculatesKeyViewLoop){ +objj_msgSend(self,"_dirtyKeyViewLoop"); +} +} +} +}),new objj_method(sel_getUid("autorecalculatesKeyViewLoop"),function(self,_192){ +with(self){ +return _autorecalculatesKeyViewLoop; +} +}),new objj_method(sel_getUid("selectNextKeyView:"),function(self,_193,_194){ +with(self){ +if(objj_msgSend(_firstResponder,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +objj_msgSend(self,"selectKeyViewFollowingView:",_firstResponder); +} +} +}),new objj_method(sel_getUid("selectPreviousKeyView:"),function(self,_195,_196){ +with(self){ +if(objj_msgSend(_firstResponder,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +objj_msgSend(self,"selectKeyViewPrecedingView:",_firstResponder); +} +} +}),new objj_method(sel_getUid("selectKeyViewFollowingView:"),function(self,_197,_198){ +with(self){ +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +} +objj_msgSend(self,"makeFirstResponder:",objj_msgSend(_198,"nextValidKeyView")); +} +}),new objj_method(sel_getUid("selectKeyViewPrecedingView:"),function(self,_199,_19a){ +with(self){ +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +} +objj_msgSend(self,"makeFirstResponder:",objj_msgSend(_19a,"previousValidKeyView")); +} +}),new objj_method(sel_getUid("setDefaultButtonCell:"),function(self,_19b,_19c){ +with(self){ +objj_msgSend(self,"setDefaultButton:",_19c); +} +}),new objj_method(sel_getUid("defaultButtonCell"),function(self,_19d){ +with(self){ +return objj_msgSend(self,"defaultButton"); +} +}),new objj_method(sel_getUid("setDefaultButton:"),function(self,_19e,_19f){ +with(self){ +if(_defaultButton===_19f){ +return; +} +if(objj_msgSend(_defaultButton,"keyEquivalent")===CPCarriageReturnCharacter){ +objj_msgSend(_defaultButton,"setKeyEquivalent:",nil); +} +_defaultButton=_19f; +if(objj_msgSend(_defaultButton,"keyEquivalent")!==CPCarriageReturnCharacter){ +objj_msgSend(_defaultButton,"setKeyEquivalent:",CPCarriageReturnCharacter); +} +} +}),new objj_method(sel_getUid("defaultButton"),function(self,_1a0){ +with(self){ +return _defaultButton; +} +}),new objj_method(sel_getUid("enableKeyEquivalentForDefaultButton"),function(self,_1a1){ +with(self){ +_defaultButtonEnabled=YES; +} +}),new objj_method(sel_getUid("enableKeyEquivalentForDefaultButtonCell"),function(self,_1a2){ +with(self){ +objj_msgSend(self,"enableKeyEquivalentForDefaultButton"); +} +}),new objj_method(sel_getUid("disableKeyEquivalentForDefaultButton"),function(self,_1a3){ +with(self){ +_defaultButtonEnabled=NO; +} +}),new objj_method(sel_getUid("disableKeyEquivalentForDefaultButtonCell"),function(self,_1a4){ +with(self){ +objj_msgSend(self,"disableKeyEquivalentForDefaultButton"); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("initialize"),function(self,_1a5){ +with(self){ +if(self!=objj_msgSend(CPWindow,"class")){ +return; +} +var _1a6=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_8=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_1a6,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(16,16)); +} +}),new objj_method(sel_getUid("_windowViewClassForStyleMask:"),function(self,_1a7,_1a8){ +with(self){ +if(_1a8&CPHUDBackgroundWindowMask){ +return _CPHUDWindowView; +}else{ +if(_1a8===CPBorderlessWindowMask){ +return _CPBorderlessWindowView; +}else{ +if(_1a8&CPDocModalWindowMask){ +return _CPDocModalWindowView; +} +} +} +return _CPStandardWindowView; +} +}),new objj_method(sel_getUid("_windowViewClassForFullPlatformWindowStyleMask:"),function(self,_1a9,_1aa){ +with(self){ +return _CPBorderlessBridgeWindowView; +} +}),new objj_method(sel_getUid("frameRectForContentRect:styleMask:"),function(self,_1ab,_1ac,_1ad){ +with(self){ +return objj_msgSend(objj_msgSend(objj_msgSend(self,"class"),"_windowViewClassForStyleMask:",_1ad),"frameRectForContentRect:",_1ac); +} +})]); +var _189=function(a,b,_1ae){ +var _1af=objj_msgSend(a,"convertRect:toView:",objj_msgSend(a,"bounds"),nil),_1b0=objj_msgSend(b,"convertRect:toView:",objj_msgSend(b,"bounds"),nil); +if(CGRectGetMinY(_1af)<CGRectGetMinY(_1b0)){ +return -1; +}else{ +if(CGRectGetMinY(_1af)==CGRectGetMinY(_1b0)&&CGRectGetMinX(_1af)<CGRectGetMinX(_1b0)){ +return -1; +}else{ +if(CGRectGetMinX(_1af)==CGRectGetMinX(_1b0)&&CGRectGetMinX(_1af)==CGRectGetMinX(_1b0)){ +return 0; +}else{ +return 1; +} +} +} +}; +var _a=objj_getClass("CPWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("_synchronizeMenuBarTitleWithWindowTitle"),function(self,_1b1){ +with(self){ +if(!objj_msgSend(_windowController,"document")||!objj_msgSend(self,"isMainWindow")){ +return; +} +objj_msgSend(CPMenu,"setMenuBarTitle:",_title); +} +})]); +var _a=objj_getClass("CPWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("resizeWithOldPlatformWindowSize:"),function(self,_1b2,_1b3){ +with(self){ +if(objj_msgSend(self,"isFullPlatformWindow")){ +return objj_msgSend(self,"setFrame:",objj_msgSend(_platformWindow,"visibleFrame")); +} +if(_autoresizingMask==CPWindowNotSizable){ +return; +} +var _1b4=objj_msgSend(_platformWindow,"contentBounds"),_1b5=CGRectMakeCopy(_frame),dX=(CGRectGetWidth(_1b4)-_1b3.width)/(((_autoresizingMask&CPWindowMinXMargin)?1:0)+(_autoresizingMask&CPWindowWidthSizable?1:0)+(_autoresizingMask&CPWindowMaxXMargin?1:0)),dY=(CGRectGetHeight(_1b4)-_1b3.height)/((_autoresizingMask&CPWindowMinYMargin?1:0)+(_autoresizingMask&CPWindowHeightSizable?1:0)+(_autoresizingMask&CPWindowMaxYMargin?1:0)); +if(_autoresizingMask&CPWindowMinXMargin){ +_1b5.origin.x+=dX; +} +if(_autoresizingMask&CPWindowWidthSizable){ +_1b5.size.width+=dX; +} +if(_autoresizingMask&CPWindowMinYMargin){ +_1b5.origin.y+=dY; +} +if(_autoresizingMask&CPWindowHeightSizable){ +_1b5.size.height+=dY; +} +objj_msgSend(self,"setFrame:",_1b5); +} +}),new objj_method(sel_getUid("setAutoresizingMask:"),function(self,_1b6,_1b7){ +with(self){ +_autoresizingMask=_1b7; +} +}),new objj_method(sel_getUid("autoresizingMask"),function(self,_1b8){ +with(self){ +return _autoresizingMask; +} +}),new objj_method(sel_getUid("convertBaseToGlobal:"),function(self,_1b9,_1ba){ +with(self){ +return objj_msgSend(CPPlatform,"isBrowser")?objj_msgSend(self,"convertBaseToPlatformWindow:",_1ba):objj_msgSend(self,"convertBaseToScreen:",_1ba); +} +}),new objj_method(sel_getUid("convertGlobalToBase:"),function(self,_1bb,_1bc){ +with(self){ +return objj_msgSend(CPPlatform,"isBrowser")?objj_msgSend(self,"convertPlatformWindowToBase:",_1bc):objj_msgSend(self,"convertScreenToBase:",_1bc); +} +}),new objj_method(sel_getUid("convertBaseToPlatformWindow:"),function(self,_1bd,_1be){ +with(self){ +if(objj_msgSend(self,"_sharesChromeWithPlatformWindow")){ +return _1be; +} +var _1bf=objj_msgSend(self,"frame").origin; +return {x:_1be.x+_1bf.x,y:_1be.y+_1bf.y}; +} +}),new objj_method(sel_getUid("convertPlatformWindowToBase:"),function(self,_1c0,_1c1){ +with(self){ +if(objj_msgSend(self,"_sharesChromeWithPlatformWindow")){ +return _1c1; +} +var _1c2=objj_msgSend(self,"frame").origin; +return {x:_1c1.x-_1c2.x,y:_1c1.y-_1c2.y}; +} +}),new objj_method(sel_getUid("convertScreenToBase:"),function(self,_1c3,_1c4){ +with(self){ +return objj_msgSend(self,"convertPlatformWindowToBase:",objj_msgSend(_platformWindow,"convertScreenToBase:",_1c4)); +} +}),new objj_method(sel_getUid("convertBaseToScreen:"),function(self,_1c5,_1c6){ +with(self){ +return objj_msgSend(_platformWindow,"convertBaseToScreen:",objj_msgSend(self,"convertBaseToPlatformWindow:",_1c6)); +} +}),new objj_method(sel_getUid("_setSharesChromeWithPlatformWindow:"),function(self,_1c7,_1c8){ +with(self){ +if(_1c8&&objj_msgSend(CPPlatform,"isBrowser")){ +return; +} +_sharesChromeWithPlatformWindow=_1c8; +objj_msgSend(self,"_updateShadow"); +} +}),new objj_method(sel_getUid("_sharesChromeWithPlatformWindow"),function(self,_1c9){ +with(self){ +return _sharesChromeWithPlatformWindow; +} +}),new objj_method(sel_getUid("undoManager"),function(self,_1ca){ +with(self){ +if(_undoManager){ +return _undoManager; +} +var _1cb=objj_msgSend(objj_msgSend(_windowController,"document"),"undoManager"); +if(_1cb){ +return _1cb; +} +if(_delegateRespondsToWindowWillReturnUndoManagerSelector){ +return objj_msgSend(_delegate,"windowWillReturnUndoManager:",self); +} +if(!_undoManager){ +_undoManager=objj_msgSend(objj_msgSend(CPUndoManager,"alloc"),"init"); +} +return _undoManager; +} +}),new objj_method(sel_getUid("undo:"),function(self,_1cc,_1cd){ +with(self){ +objj_msgSend(objj_msgSend(self,"undoManager"),"undo"); +} +}),new objj_method(sel_getUid("redo:"),function(self,_1ce,_1cf){ +with(self){ +objj_msgSend(objj_msgSend(self,"undoManager"),"redo"); +} +}),new objj_method(sel_getUid("containsPoint:"),function(self,_1d0,_1d1){ +with(self){ +return CGRectContainsPoint(_frame,_1d1); +} +})]); +var _a=objj_getClass("CPWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("setFullBridge:"),function(self,_1d2,_1d3){ +with(self){ +objj_msgSend(self,"setFullPlatformWindow:",_1d3); +} +}),new objj_method(sel_getUid("isFullBridge"),function(self,_1d4){ +with(self){ +return objj_msgSend(self,"isFullPlatformWindow"); +} +}),new objj_method(sel_getUid("convertBaseToBridge:"),function(self,_1d5,_1d6){ +with(self){ +return objj_msgSend(self,"convertBaseToPlatformWindow:",_1d6); +} +}),new objj_method(sel_getUid("convertBridgeToBase:"),function(self,_1d7,_1d8){ +with(self){ +return objj_msgSend(self,"convertPlatformWindowToBase:",_1d8); +} +})]); +var _1d9=function(_1da,_1db,_1dc){ +return _1da+(_1db-_1da)*_1dc; +}; +var _a=objj_allocateClassPair(CPAnimation,"_CPWindowFrameAnimation"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_window"),new objj_ivar("_startFrame"),new objj_ivar("_targetFrame")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("initWithWindow:targetFrame:"),function(self,_1dd,_1de,_1df){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPWindowFrameAnimation").super_class},"initWithDuration:animationCurve:",objj_msgSend(_1de,"animationResizeTime:",_1df),CPAnimationLinear); +if(self){ +_window=_1de; +_targetFrame=CGRectMakeCopy(_1df); +_startFrame=CGRectMakeCopy(objj_msgSend(_window,"frame")); +} +return self; +} +}),new objj_method(sel_getUid("startAnimation"),function(self,_1e0){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPWindowFrameAnimation").super_class},"startAnimation"); +_window._isAnimating=YES; +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(self,_1e1,_1e2){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPWindowFrameAnimation").super_class},"setCurrentProgress:",_1e2); +var _1e3=objj_msgSend(self,"currentValue"); +if(_1e3==1){ +_window._isAnimating=NO; +} +var _1e4=CGRectMake(_1d9(CGRectGetMinX(_startFrame),CGRectGetMinX(_targetFrame),_1e3),_1d9(CGRectGetMinY(_startFrame),CGRectGetMinY(_targetFrame),_1e3),_1d9(CGRectGetWidth(_startFrame),CGRectGetWidth(_targetFrame),_1e3),_1d9(CGRectGetHeight(_startFrame),CGRectGetHeight(_targetFrame),_1e3)); +objj_msgSend(_window,"setFrame:display:animate:",_1e4,YES,NO); +} +})]); +_CPWindowFullPlatformWindowSessionMake=function(_1e5,_1e6,_1e7,_1e8){ +return {windowView:_1e5,contentRect:_1e6,hasShadow:_1e7,level:_1e8}; +}; +CPStandardWindowShadowStyle=0; +CPMenuWindowShadowStyle=1; +CPPanelWindowShadowStyle=2; +CPCustomWindowShadowStyle=3; +objj_executeFile("_CPWindowView.j",YES); +objj_executeFile("_CPStandardWindowView.j",YES); +objj_executeFile("_CPDocModalWindowView.j",YES); +objj_executeFile("_CPHUDWindowView.j",YES); +objj_executeFile("_CPBorderlessWindowView.j",YES); +objj_executeFile("_CPBorderlessBridgeWindowView.j",YES); +objj_executeFile("CPDragServer.j",YES); +objj_executeFile("CPView.j",YES); +p;12;CPPlatform.jt;4077;@STATIC;1.0;I;21;Foundation/CPObject.jt;4032; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPBasePlatform"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_2,[new objj_method(sel_getUid("bootstrap"),function(_3,_4){ +with(_3){ +objj_msgSend(CPPlatformString,"bootstrap"); +objj_msgSend(CPPlatformWindow,"setPrimaryPlatformWindow:",objj_msgSend(objj_msgSend(CPPlatformWindow,"alloc"),"_init")); +} +}),new objj_method(sel_getUid("isBrowser"),function(_5,_6){ +with(_5){ +return NO; +} +}),new objj_method(sel_getUid("supportsDragAndDrop"),function(_7,_8){ +with(_7){ +return NO; +} +}),new objj_method(sel_getUid("supportsNativeMainMenu"),function(_9,_a){ +with(_9){ +return NO; +} +}),new objj_method(sel_getUid("terminateApplication"),function(_b,_c){ +with(_b){ +} +}),new objj_method(sel_getUid("activateIgnoringOtherApps:"),function(_d,_e,_f){ +with(_d){ +} +}),new objj_method(sel_getUid("deactivate"),function(_10,_11){ +with(_10){ +} +}),new objj_method(sel_getUid("hideOtherApplications:"),function(_12,_13,_14){ +with(_12){ +} +}),new objj_method(sel_getUid("hide:"),function(_15,_16,_17){ +with(_15){ +} +})]); +if(typeof window["CPPlatformEnableHTMLDragAndDrop"]==="undefined"){ +CPPlatformEnableHTMLDragAndDrop=NO; +} +CPPlatformDidClearBodyElementNotification="CPPlatformDidClearBodyElementNotification"; +CPPlatformWillClearBodyElementNotification="CPPlatformWillClearBodyElementNotification"; +var _18=NO,_19=nil,_1a=new RegExp("\\bcpdontremove\\b","g"); +var _1=objj_allocateClassPair(CPBasePlatform,"CPPlatform"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_2,[new objj_method(sel_getUid("initialize"),function(_1b,_1c){ +with(_1b){ +if(_1b!==objj_msgSend(CPPlatform,"class")){ +return; +} +_18=objj_msgSend(CPPlatform,"isBrowser"); +if(document.documentElement){ +document.documentElement.style.overflow="hidden"; +} +if(objj_msgSend(CPPlatform,"isBrowser")){ +window.onunload=function(){ +objj_msgSend(CPApp,"terminate:",nil); +}; +} +} +}),new objj_method(sel_getUid("isBrowser"),function(_1d,_1e){ +with(_1d){ +return typeof window.cpIsDesktop==="undefined"; +} +}),new objj_method(sel_getUid("supportsDragAndDrop"),function(_1f,_20){ +with(_1f){ +return CPFeatureIsCompatible(CPHTMLDragAndDropFeature)&&(CPPlatformEnableHTMLDragAndDrop||!objj_msgSend(_1f,"isBrowser")); +} +}),new objj_method(sel_getUid("supportsNativeMainMenu"),function(_21,_22){ +with(_21){ +return (typeof window["cpSetMainMenu"]==="function"); +} +}),new objj_method(sel_getUid("terminateApplication"),function(_23,_24){ +with(_23){ +if(typeof window["cpTerminate"]==="function"){ +window.cpTerminate(); +} +} +}),new objj_method(sel_getUid("activateIgnoringOtherApps:"),function(_25,_26,_27){ +with(_25){ +if(typeof window["cpActivateIgnoringOtherApps"]==="function"){ +window.cpActivateIgnoringOtherApps(!!_27); +} +} +}),new objj_method(sel_getUid("deactivate"),function(_28,_29){ +with(_28){ +if(typeof window["cpDeactivate"]==="function"){ +window.cpDeactivate(); +} +} +}),new objj_method(sel_getUid("hideOtherApplications:"),function(_2a,_2b,_2c){ +with(_2a){ +if(typeof window["cpHideOtherApplications"]==="function"){ +window.cpHideOtherApplications(); +} +} +}),new objj_method(sel_getUid("hide:"),function(_2d,_2e,_2f){ +with(_2d){ +if(typeof window["cpHide"]==="function"){ +window.cpHide(); +} +} +}),new objj_method(sel_getUid("mainBodyElement"),function(_30,_31){ +with(_30){ +if(!_19){ +_19=document.getElementById("cappuccino-body")||document.body; +} +return _19; +} +}),new objj_method(sel_getUid("initializeScreenIfNecessary"),function(_32,_33){ +with(_32){ +if(!_18){ +return; +} +_18=NO; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPPlatformWillClearBodyElementNotification,_32); +var _34=objj_msgSend(_32,"mainBodyElement"); +var _35=_34.childNodes,_36=_35.length; +while(_36--){ +var _37=_35[_36]; +if(!_37.className||_37.className.match(_1a)===null){ +_34.removeChild(_37); +} +} +_34.style.overflow="hidden"; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPPlatformDidClearBodyElementNotification,_32); +} +})]); +p;18;CPPlatformString.jt;4112;@STATIC;1.0;I;21;Foundation/CPObject.jt;4067; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPBasePlatformString"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_2,[new objj_method(sel_getUid("bootstrap"),function(_3,_4){ +with(_3){ +} +}),new objj_method(sel_getUid("sizeOfString:withFont:forWidth:"),function(_5,_6,_7,_8,_9){ +with(_5){ +return {width:0,height:0}; +} +})]); +var _a=nil,_b=nil,_c=nil,_d=nil,_e=nil,_f=nil,_10=nil,_11=nil; +var _1=objj_allocateClassPair(CPBasePlatformString,"CPPlatformString"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_2,[new objj_method(sel_getUid("bootstrap"),function(_12,_13){ +with(_12){ +objj_msgSend(_12,"createDOMElements"); +} +}),new objj_method(sel_getUid("createDOMElements"),function(_14,_15){ +with(_14){ +var _16; +_f=document.createElement("iframe"); +_f.name="iframe_"+FLOOR(RAND()*10000); +_f.className="cpdontremove"; +_16=_f.style; +_16.position="absolute"; +_16.left="-100px"; +_16.top="-100px"; +_16.width="1px"; +_16.height="1px"; +_16.borderWidth="0px"; +_16.overflow="hidden"; +_16.zIndex=100000000000; +var _17=objj_msgSend(CPPlatform,"mainBodyElement"); +_17.appendChild(_f); +_10=(_f.contentDocument||_f.contentWindow.document); +_10.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"+"<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\"><head></head><body></body></html>"); +_10.close(); +var _18=_10.createElement("div"); +_18.style.position="absolute"; +_18.style.width="100000px"; +_10.body.appendChild(_18); +_b=_10.createElement("span"); +_16=_b.style; +_16.position="absolute"; +_16.visibility="visible"; +_16.padding="0px"; +_16.margin="0px"; +_16.whiteSpace="pre"; +_a=_10.createElement("span"); +_16=_a.style; +_16.display="block"; +_16.position="absolute"; +_16.visibility="visible"; +_16.padding="0px"; +_16.margin="0px"; +_16.width="1px"; +_16.wordWrap="break-word"; +try{ +_16.whiteSpace="pre"; +_16.whiteSpace="-o-pre-wrap"; +_16.whiteSpace="-pre-wrap"; +_16.whiteSpace="-moz-pre-wrap"; +_16.whiteSpace="pre-wrap"; +} +catch(e){ +_16.whiteSpace="pre"; +} +_18.appendChild(_b); +_18.appendChild(_a); +} +}),new objj_method(sel_getUid("createDOMMetricsElements"),function(_19,_1a){ +with(_19){ +if(!_f){ +objj_msgSend(_19,"createDOMElements"); +} +var _1b; +_c=_10.createElement("div"); +_c.style.position="absolute"; +_c.style.width="100000px"; +_10.body.appendChild(_c); +_d=_10.createElement("span"); +_d.innerHTML="x"; +_1b=_d.style; +_1b.position="absolute"; +_1b.visibility="visible"; +_1b.padding="0px"; +_1b.margin="0px"; +_1b.whiteSpace="pre"; +var _1c=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class")),"pathForResource:","empty.png"); +_e=_10.createElement("img"); +_e.setAttribute("src",_1c); +_e.setAttribute("width","1"); +_e.setAttribute("height","1"); +_e.setAttribute("alt",""); +_1b=_e.style; +_1b.visibility="visible"; +_1b.padding="0px"; +_1b.margin="0px"; +_1b.border="none"; +_1b.verticalAlign="baseline"; +_c.appendChild(_d); +_c.appendChild(_e); +} +}),new objj_method(sel_getUid("sizeOfString:withFont:forWidth:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +if(!_20){ +if(!_11){ +_11=objj_msgSend(CPFont,"systemFontOfSize:",12); +} +_20=_11; +} +if(!_f){ +objj_msgSend(_1d,"createDOMElements"); +} +var _22; +if(!_21){ +_22=_b; +}else{ +_22=_a; +_22.style.width=ROUND(_21)+"px"; +} +_22.style.font=objj_msgSend(_20,"cssString"); +if(CPFeatureIsCompatible(CPJavascriptInnerTextFeature)){ +_22.innerText=_1f; +}else{ +if(CPFeatureIsCompatible(CPJavascriptTextContentFeature)){ +_22.textContent=_1f; +} +} +return {width:_22.clientWidth,height:_22.clientHeight}; +} +}),new objj_method(sel_getUid("metricsOfFont:"),function(_23,_24,_25){ +with(_23){ +if(!_25){ +if(!_11){ +_11=objj_msgSend(CPFont,"systemFontOfSize:",12); +} +_25=_11; +} +if(!_c){ +objj_msgSend(_23,"createDOMMetricsElements"); +} +_c.style.font=objj_msgSend(_25,"cssString"); +var _26=_e.offsetTop-_d.offsetTop+_e.offsetHeight,_27=_26-_d.offsetHeight,_28=_d.offsetHeight; +return objj_msgSend(CPDictionary,"dictionaryWithObjectsAndKeys:",_26,"ascender",_27,"descender",_28,"lineHeight"); +} +})]); +p;18;CPPlatformWindow.jt;5577;@STATIC;1.0;I;21;Foundation/CPObject.ji;22;CPPlatformWindow+DOM.jt;5505; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=NULL; +var _2=objj_allocateClassPair(CPObject,"CPPlatformWindow"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_contentRect"),new objj_ivar("_level"),new objj_ivar("_hasShadow"),new objj_ivar("_shadowStyle"),new objj_ivar("_DOMWindow"),new objj_ivar("_DOMBodyElement"),new objj_ivar("_DOMFocusElement"),new objj_ivar("_DOMEventGuard"),new objj_ivar("_DOMScrollingElement"),new objj_ivar("_hideDOMScrollingElementTimeout"),new objj_ivar("_windowLevels"),new objj_ivar("_windowLayers"),new objj_ivar("_mouseIsDown"),new objj_ivar("_mouseDownIsRightClick"),new objj_ivar("_mouseDownWindow"),new objj_ivar("_lastMouseUp"),new objj_ivar("_lastMouseDown"),new objj_ivar("_charCodes"),new objj_ivar("_keyCode"),new objj_ivar("_lastKey"),new objj_ivar("_capsLockActive"),new objj_ivar("_ignoreNativeCopyOrCutEvent"),new objj_ivar("_ignoreNativePastePreparation"),new objj_ivar("_DOMEventMode"),new objj_ivar("_DOMPasteboardElement"),new objj_ivar("_pasteboardKeyDownEvent"),new objj_ivar("_overriddenEventType")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithContentRect:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPPlatformWindow").super_class},"init"); +if(_4){ +_contentRect={origin:{x:_6.origin.x,y:_6.origin.y},size:{width:_6.size.width,height:_6.size.height}}; +_windowLevels=[]; +_windowLayers=objj_msgSend(CPDictionary,"dictionary"); +_charCodes={}; +} +return _4; +} +}),new objj_method(sel_getUid("init"),function(_7,_8){ +with(_7){ +return objj_msgSend(_7,"initWithContentRect:",{origin:{x:0,y:0},size:{width:400,height:500}}); +} +}),new objj_method(sel_getUid("contentRect"),function(_9,_a){ +with(_9){ +return {origin:{x:_contentRect.origin.x,y:_contentRect.origin.y},size:{width:_contentRect.size.width,height:_contentRect.size.height}}; +} +}),new objj_method(sel_getUid("contentBounds"),function(_b,_c){ +with(_b){ +var _d=objj_msgSend(_b,"contentRect"); +_d.origin={x:0,y:0}; +return _d; +} +}),new objj_method(sel_getUid("visibleFrame"),function(_e,_f){ +with(_e){ +var _10=objj_msgSend(_e,"contentBounds"); +_10.origin=CGPointMakeZero(); +if(objj_msgSend(CPMenu,"menuBarVisible")&&objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")===_e){ +var _11=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"menuBarHeight"); +_10.origin.y+=_11; +_10.size.height-=_11; +} +return _10; +} +}),new objj_method(sel_getUid("usableContentFrame"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"visibleFrame"); +} +}),new objj_method(sel_getUid("setContentRect:"),function(_14,_15,_16){ +with(_14){ +if(!_16||((_contentRect.origin.x==_16.origin.x&&_contentRect.origin.y==_16.origin.y)&&(_contentRect.size.width==_16.size.width&&_contentRect.size.height==_16.size.height))){ +return; +} +_contentRect={origin:{x:_16.origin.x,y:_16.origin.y},size:{width:_16.size.width,height:_16.size.height}}; +objj_msgSend(_14,"updateNativeContentRect"); +} +}),new objj_method(sel_getUid("updateFromNativeContentRect"),function(_17,_18){ +with(_17){ +objj_msgSend(_17,"setContentRect:",objj_msgSend(_17,"nativeContentRect")); +} +}),new objj_method(sel_getUid("convertBaseToScreen:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=objj_msgSend(_19,"contentRect"); +return {x:_1b.x+(_1c.origin.x),y:_1b.y+(_1c.origin.y)}; +} +}),new objj_method(sel_getUid("convertScreenToBase:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=objj_msgSend(_1d,"contentRect"); +return {x:_1f.x-(_20.origin.x),y:_1f.y-(_20.origin.y)}; +} +}),new objj_method(sel_getUid("isVisible"),function(_21,_22){ +with(_21){ +return _DOMWindow!==NULL; +} +}),new objj_method(sel_getUid("deminiaturize:"),function(_23,_24,_25){ +with(_23){ +if(_DOMWindow&&typeof _DOMWindow["cpDeminiaturize"]==="function"){ +_DOMWindow.cpDeminiaturize(); +} +} +}),new objj_method(sel_getUid("miniaturize:"),function(_26,_27,_28){ +with(_26){ +if(_DOMWindow&&typeof _DOMWindow["cpMiniaturize"]==="function"){ +_DOMWindow.cpMiniaturize(); +} +} +}),new objj_method(sel_getUid("moveWindow:fromLevel:toLevel:"),function(_29,_2a,_2b,_2c,_2d){ +with(_29){ +if(!_2b._isVisible){ +return; +} +var _2e=objj_msgSend(_29,"layerAtLevel:create:",_2c,NO),_2f=objj_msgSend(_29,"layerAtLevel:create:",_2d,YES); +objj_msgSend(_2e,"removeWindow:",_2b); +objj_msgSend(_2f,"insertWindow:atIndex:",_2b,CPNotFound); +} +}),new objj_method(sel_getUid("setLevel:"),function(_30,_31,_32){ +with(_30){ +_level=_32; +if(_DOMWindow&&_DOMWindow.cpSetLevel){ +_DOMWindow.cpSetLevel(_32); +} +} +}),new objj_method(sel_getUid("setHasShadow:"),function(_33,_34,_35){ +with(_33){ +_hasShadow=_35; +if(_DOMWindow&&_DOMWindow.cpSetHasShadow){ +_DOMWindow.cpSetHasShadow(_35); +} +} +}),new objj_method(sel_getUid("setShadowStyle:"),function(_36,_37,_38){ +with(_36){ +_shadowStyle=_38; +if(_DOMWindow&&_DOMWindow.cpSetShadowStyle){ +_shadowStyle.cpSetShadowStyle(_38); +} +} +}),new objj_method(sel_getUid("supportsFullPlatformWindows"),function(_39,_3a){ +with(_39){ +return objj_msgSend(CPPlatform,"isBrowser"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("visiblePlatformWindows"),function(_3b,_3c){ +with(_3b){ +return objj_msgSend(CPSet,"set"); +} +}),new objj_method(sel_getUid("supportsMultipleInstances"),function(_3d,_3e){ +with(_3d){ +return !CPBrowserIsEngine(CPInternetExplorerBrowserEngine); +} +}),new objj_method(sel_getUid("primaryPlatformWindow"),function(_3f,_40){ +with(_3f){ +return _1; +} +}),new objj_method(sel_getUid("setPrimaryPlatformWindow:"),function(_41,_42,_43){ +with(_41){ +_1=_43; +} +})]); +objj_executeFile("CPPlatformWindow+DOM.j",YES); +p;18;CPDOMWindowLayer.jt;2089;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jt;2019; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPDOMWindowLayer"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_level"),new objj_ivar("_windows"),new objj_ivar("_DOMElement")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithLevel:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPDOMWindowLayer").super_class},"init"); +if(_3){ +_level=_5; +_windows=[]; +_DOMElement=document.createElement("div"); +_DOMElement.style.position="absolute"; +_DOMElement.style.top="0px"; +_DOMElement.style.left="0px"; +_DOMElement.style.width="1px"; +_DOMElement.style.height="1px"; +} +return _3; +} +}),new objj_method(sel_getUid("level"),function(_6,_7){ +with(_6){ +return _level; +} +}),new objj_method(sel_getUid("removeWindow:"),function(_8,_9,_a){ +with(_8){ +if(!_a._isVisible){ +return; +} +var _b=_a._index,_c=_windows.length-1; +_DOMElement.removeChild(_a._DOMElement); +objj_msgSend(_windows,"removeObjectAtIndex:",_a._index); +for(;_b<_c;++_b){ +_windows[_b]._index=_b; +_windows[_b]._DOMElement.style.zIndex=_b; +} +_a._isVisible=NO; +} +}),new objj_method(sel_getUid("insertWindow:atIndex:"),function(_d,_e,_f,_10){ +with(_d){ +var _11=objj_msgSend(_windows,"count"),_12=(_10==CPNotFound?_11:_10),_13=_f._isVisible; +if(_13){ +_12=MIN(_12,_f._index); +objj_msgSend(_windows,"removeObjectAtIndex:",_f._index); +}else{ +++_11; +} +if(_10==CPNotFound||_10>=_11){ +objj_msgSend(_windows,"addObject:",_f); +}else{ +objj_msgSend(_windows,"insertObject:atIndex:",_f,_10); +} +for(;_12<_11;++_12){ +_windows[_12]._index=_12; +_windows[_12]._DOMElement.style.zIndex=_12; +} +if(_f._DOMElement.parentNode!==_DOMElement){ +_DOMElement.appendChild(_f._DOMElement); +_f._isVisible=YES; +if(objj_msgSend(_f,"isFullBridge")){ +objj_msgSend(_f,"setFrame:",objj_msgSend(_f._platformWindow,"usableContentFrame")); +} +} +} +}),new objj_method(sel_getUid("orderedWindows"),function(_14,_15){ +with(_14){ +return _windows; +} +})]); +p;22;CPPlatformWindow+DOM.jt;32978;@STATIC;1.0;I;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.ji;9;CPEvent.ji;8;CPText.ji;17;CPCompatibility.ji;18;CPDOMWindowLayer.ji;12;CPPlatform.ji;18;CPPlatformWindow.ji;26;CPPlatformWindow+DOMKeys.jt;32764; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPRunLoop.j",NO); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPText.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPDOMWindowLayer.j",YES); +objj_executeFile("CPPlatform.j",YES); +objj_executeFile("CPPlatformWindow.j",YES); +objj_executeFile("CPPlatformWindow+DOMKeys.j",YES); +var _1=objj_msgSend(CPSet,"set"); +var _2,_3,_4,_5; +var _6={},_7={},_8={},_9={61:187,59:186},_a={}; +_6[CPKeyCodes.A]=YES; +_8[CPKeyCodes.F1]=YES; +_8[CPKeyCodes.F2]=YES; +_8[CPKeyCodes.F3]=YES; +_8[CPKeyCodes.F4]=YES; +_8[CPKeyCodes.F5]=YES; +_8[CPKeyCodes.F6]=YES; +_8[CPKeyCodes.F7]=YES; +_8[CPKeyCodes.F8]=YES; +_8[CPKeyCodes.F9]=YES; +_8[CPKeyCodes.F10]=YES; +_8[CPKeyCodes.F11]=YES; +_8[CPKeyCodes.F12]=YES; +_a[CPKeyCodes.BACKSPACE]=CPDeleteCharacter; +_a[CPKeyCodes.DELETE]=CPDeleteFunctionKey; +_a[CPKeyCodes.TAB]=CPTabCharacter; +_a[CPKeyCodes.ENTER]=CPCarriageReturnCharacter; +_a[CPKeyCodes.ESC]=CPEscapeFunctionKey; +_a[CPKeyCodes.PAGE_UP]=CPPageUpFunctionKey; +_a[CPKeyCodes.PAGE_DOWN]=CPPageDownFunctionKey; +_a[CPKeyCodes.LEFT]=CPLeftArrowFunctionKey; +_a[CPKeyCodes.UP]=CPUpArrowFunctionKey; +_a[CPKeyCodes.RIGHT]=CPRightArrowFunctionKey; +_a[CPKeyCodes.DOWN]=CPDownArrowFunctionKey; +_a[CPKeyCodes.SEMICOLON]=";"; +_a[CPKeyCodes.DASH]="-"; +_a[CPKeyCodes.EQUALS]="="; +_a[CPKeyCodes.COMMA]=","; +_a[CPKeyCodes.PERIOD]="."; +_a[CPKeyCodes.SLASH]="/"; +_a[CPKeyCodes.APOSTROPHE]="`"; +_a[CPKeyCodes.SINGLE_QUOTE]="'"; +_a[CPKeyCodes.OPEN_SQUARE_BRACKET]="["; +_a[CPKeyCodes.BACKSLASH]="\\"; +_a[CPKeyCodes.CLOSE_SQUARE_BRACKET]="]"; +var _b=[CPKeyCodes.META,CPKeyCodes.MAC_FF_META,CPKeyCodes.CTRL,CPKeyCodes.ALT,CPKeyCodes.SHIFT]; +var _c=objj_msgSend(CPPlatform,"supportsDragAndDrop"); +var _d=objj_getClass("CPPlatformWindow"); +if(!_d){ +throw new SyntaxError("*** Could not find definition for class \"CPPlatformWindow\""); +} +var _e=_d.isa; +class_addMethods(_d,[new objj_method(sel_getUid("_init"),function(_f,_10){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPPlatformWindow").super_class},"init"); +if(_f){ +_DOMWindow=window; +_contentRect={origin:{x:0,y:0},size:{width:0,height:0}}; +_windowLevels=[]; +_windowLayers=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_f,"registerDOMWindow"); +objj_msgSend(_f,"updateFromNativeContentRect"); +_charCodes={}; +} +return _f; +} +}),new objj_method(sel_getUid("nativeContentRect"),function(_11,_12){ +with(_11){ +if(!_DOMWindow){ +return objj_msgSend(_11,"contentRect"); +} +if(_DOMWindow.cpFrame){ +return _DOMWindow.cpFrame(); +} +var _13={origin:{x:0,y:0},size:{width:0,height:0}}; +if(window.screenTop){ +_13.origin={x:_DOMWindow.screenLeft,y:_DOMWindow.screenTop}; +}else{ +if(window.screenX){ +_13.origin={x:_DOMWindow.screenX,y:_DOMWindow.screenY}; +} +} +if(_DOMWindow.innerWidth){ +_13.size={width:_DOMWindow.innerWidth,height:_DOMWindow.innerHeight}; +}else{ +if(document.documentElement&&document.documentElement.clientWidth){ +_13.size={width:_DOMWindow.document.documentElement.clientWidth,height:_DOMWindow.document.documentElement.clientHeight}; +}else{ +_13.size={width:_DOMWindow.document.body.clientWidth,height:_DOMWindow.document.body.clientHeight}; +} +} +return _13; +} +}),new objj_method(sel_getUid("updateNativeContentRect"),function(_14,_15){ +with(_14){ +if(!_DOMWindow){ +return; +} +if(typeof _DOMWindow["cpSetFrame"]==="function"){ +return _DOMWindow.cpSetFrame(objj_msgSend(_14,"contentRect")); +} +var _16=objj_msgSend(_14,"contentRect").origin,_17=objj_msgSend(_14,"nativeContentRect").origin; +if(_16.x!==_17.x||_16.y!==_17.y){ +_DOMWindow.moveBy(_16.x-_17.x,_16.y-_17.y); +} +var _18=objj_msgSend(_14,"contentRect").size,_19=objj_msgSend(_14,"nativeContentRect").size; +if(_18.width!==_19.width||_18.height!==_19.height){ +_DOMWindow.resizeBy(_18.width-_19.width,_18.height-_19.height); +} +} +}),new objj_method(sel_getUid("orderBack:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_DOMWindow){ +_DOMWindow.blur(); +} +} +}),new objj_method(sel_getUid("createDOMElements"),function(_1d,_1e){ +with(_1d){ +var _1f=_DOMWindow.document; +_DOMFocusElement=_1f.createElement("input"); +_DOMFocusElement.style.position="absolute"; +_DOMFocusElement.style.zIndex="-1000"; +_DOMFocusElement.style.opacity="0"; +_DOMFocusElement.style.filter="alpha(opacity=0)"; +_DOMFocusElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMFocusElement); +_DOMPasteboardElement=_1f.createElement("textarea"); +_DOMPasteboardElement.style.position="absolute"; +_DOMPasteboardElement.style.top="-10000px"; +_DOMPasteboardElement.style.zIndex="999"; +_DOMPasteboardElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMPasteboardElement); +_DOMPasteboardElement.blur(); +_DOMEventGuard=_1f.createElement("div"); +_DOMEventGuard.style.position="absolute"; +_DOMEventGuard.style.top="0px"; +_DOMEventGuard.style.left="0px"; +_DOMEventGuard.style.width="100%"; +_DOMEventGuard.style.height="100%"; +_DOMEventGuard.style.zIndex="999"; +_DOMEventGuard.style.display="none"; +_DOMEventGuard.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMEventGuard); +_DOMScrollingElement=_1f.createElement("div"); +_DOMScrollingElement.style.position="absolute"; +_DOMScrollingElement.style.visibility="hidden"; +_DOMScrollingElement.style.zIndex="998"; +_DOMScrollingElement.style.height="60px"; +_DOMScrollingElement.style.width="60px"; +_DOMScrollingElement.style.overflow="scroll"; +_DOMScrollingElement.style.opacity="0"; +_DOMScrollingElement.style.filter="alpha(opacity=0)"; +_DOMScrollingElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMScrollingElement); +var _20=_1f.createElement("div"); +_20.style.width="400px"; +_20.style.height="400px"; +_DOMScrollingElement.appendChild(_20); +_DOMScrollingElement.scrollTop=150; +_DOMScrollingElement.scrollLeft=150; +} +}),new objj_method(sel_getUid("registerDOMWindow"),function(_21,_22){ +with(_21){ +var _23=_DOMWindow.document; +_DOMBodyElement=_23.getElementById("cappuccino-body")||_23.body; +if(_c){ +_DOMBodyElement.style["-khtml-user-select"]="none"; +} +_DOMBodyElement.webkitTouchCallout="none"; +objj_msgSend(_21,"createDOMElements"); +objj_msgSend(_21,"_addLayers"); +var _24=objj_msgSend(_21,"class"),_25=class_getMethodImplementation(_24,sel_getUid("dragEvent:")),_26=function(_27){ +_25(_21,nil,_27); +},_28=sel_getUid("resizeEvent:"),_29=class_getMethodImplementation(_24,_28),_2a=function(_2b){ +_29(_21,nil,_2b); +},_2c=sel_getUid("copyEvent:"),_2d=class_getMethodImplementation(_24,_2c),_2e=function(_2f){ +_2d(_21,nil,_2f); +},_30=sel_getUid("pasteEvent:"),_31=class_getMethodImplementation(_24,_30),_32=function(_33){ +_31(_21,nil,_33); +},_34=sel_getUid("keyEvent:"),_35=class_getMethodImplementation(_24,_34),_36=function(_37){ +_35(_21,nil,_37); +},_38=sel_getUid("mouseEvent:"),_39=class_getMethodImplementation(_24,_38),_3a=function(_3b){ +_39(_21,nil,_3b); +},_3c=sel_getUid("contextMenuEvent:"),_3d=class_getMethodImplementation(_24,_3c),_3e=function(_3f){ +return _3d(_21,nil,_3f); +},_40=sel_getUid("scrollEvent:"),_41=class_getMethodImplementation(_24,_40),_42=function(_43){ +_41(_21,nil,_43); +},_44=sel_getUid("touchEvent:"),_45=class_getMethodImplementation(_24,_44),_46=function(_47){ +_45(_21,nil,_47); +}; +if(_23.addEventListener){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_23.addEventListener("dragstart",_26,NO); +_23.addEventListener("drag",_26,NO); +_23.addEventListener("dragend",_26,NO); +_23.addEventListener("dragover",_26,NO); +_23.addEventListener("dragleave",_26,NO); +_23.addEventListener("drop",_26,NO); +} +_23.addEventListener("mouseup",_3a,NO); +_23.addEventListener("mousedown",_3a,NO); +_23.addEventListener("mousemove",_3a,NO); +_23.addEventListener("contextmenu",_3e,NO); +_23.addEventListener("beforecopy",_2e,NO); +_23.addEventListener("beforecut",_2e,NO); +_23.addEventListener("beforepaste",_32,NO); +_23.addEventListener("keyup",_36,NO); +_23.addEventListener("keydown",_36,NO); +_23.addEventListener("keypress",_36,NO); +_23.addEventListener("touchstart",_46,NO); +_23.addEventListener("touchend",_46,NO); +_23.addEventListener("touchmove",_46,NO); +_23.addEventListener("touchcancel",_46,NO); +_DOMWindow.addEventListener("DOMMouseScroll",_42,NO); +_DOMWindow.addEventListener("mousewheel",_42,NO); +_DOMWindow.addEventListener("resize",_2a,NO); +_DOMWindow.addEventListener("unload",function(){ +objj_msgSend(_21,"updateFromNativeContentRect"); +objj_msgSend(_21,"_removeLayers"); +_23.removeEventListener("mouseup",_3a,NO); +_23.removeEventListener("mousedown",_3a,NO); +_23.removeEventListener("mousemove",_3a,NO); +_23.removeEventListener("contextmenu",_3e,NO); +_23.removeEventListener("keyup",_36,NO); +_23.removeEventListener("keydown",_36,NO); +_23.removeEventListener("keypress",_36,NO); +_23.removeEventListener("beforecopy",_2e,NO); +_23.removeEventListener("beforecut",_2e,NO); +_23.removeEventListener("beforepaste",_32,NO); +_23.removeEventListener("touchstart",_46,NO); +_23.removeEventListener("touchend",_46,NO); +_23.removeEventListener("touchmove",_46,NO); +_DOMWindow.removeEventListener("resize",_2a,NO); +_DOMWindow.removeEventListener("DOMMouseScroll",_42,NO); +_DOMWindow.removeEventListener("mousewheel",_42,NO); +objj_msgSend(_1,"removeObject:",_21); +_21._DOMWindow=nil; +},NO); +}else{ +_23.attachEvent("onmouseup",_3a); +_23.attachEvent("onmousedown",_3a); +_23.attachEvent("onmousemove",_3a); +_23.attachEvent("ondblclick",_3a); +_23.attachEvent("oncontextmenu",_3e); +_23.attachEvent("onkeyup",_36); +_23.attachEvent("onkeydown",_36); +_23.attachEvent("onkeypress",_36); +_DOMWindow.attachEvent("onresize",_2a); +_DOMWindow.onmousewheel=_42; +_23.onmousewheel=_42; +_DOMBodyElement.ondrag=function(){ +return NO; +}; +_DOMBodyElement.onselectstart=function(){ +return _DOMWindow.event.srcElement===_DOMPasteboardElement; +}; +_DOMWindow.attachEvent("onbeforeunload",function(){ +objj_msgSend(_21,"updateFromNativeContentRect"); +objj_msgSend(_21,"_removeLayers"); +_23.detachEvent("onmouseup",_3a); +_23.detachEvent("onmousedown",_3a); +_23.detachEvent("onmousemove",_3a); +_23.detachEvent("ondblclick",_3a); +_23.detachEvent("oncontextmenu",_3e); +_23.detachEvent("onkeyup",_36); +_23.detachEvent("onkeydown",_36); +_23.detachEvent("onkeypress",_36); +_DOMWindow.detachEvent("onresize",_2a); +_DOMWindow.onmousewheel=NULL; +_23.onmousewheel=NULL; +_DOMBodyElement.ondrag=NULL; +_DOMBodyElement.onselectstart=NULL; +objj_msgSend(_1,"removeObject:",_21); +_21._DOMWindow=nil; +},NO); +} +} +}),new objj_method(sel_getUid("orderFront:"),function(_48,_49,_4a){ +with(_48){ +if(_DOMWindow){ +return _DOMWindow.focus(); +} +_DOMWindow=window.open("","_blank","menubar=no,location=no,resizable=yes,scrollbars=no,status=no,left="+(_contentRect.origin.x)+",top="+(_contentRect.origin.y)+",width="+(_contentRect.size.width)+",height="+(_contentRect.size.height)); +objj_msgSend(_1,"addObject:",_48); +_DOMWindow.document.write("<!DOCTYPE html><html lang='en'><head></head><body style='background-color:transparent;'></body></html>"); +_DOMWindow.document.close(); +if(!objj_msgSend(CPPlatform,"isBrowser")){ +_DOMWindow.cpWindowNumber=objj_msgSend(_48._only,"windowNumber"); +_DOMWindow.cpSetFrame(_contentRect); +_DOMWindow.cpSetLevel(_level); +_DOMWindow.cpSetHasShadow(_hasShadow); +_DOMWindow.cpSetShadowStyle(_shadowStyle); +} +objj_msgSend(_48,"registerDOMWindow"); +_DOMBodyElement.style.cursor=objj_msgSend(objj_msgSend(CPCursor,"currentCursor"),"_cssString"); +} +}),new objj_method(sel_getUid("orderOut:"),function(_4b,_4c,_4d){ +with(_4b){ +if(!_DOMWindow){ +return; +} +_DOMWindow.close(); +} +}),new objj_method(sel_getUid("dragEvent:"),function(_4e,_4f,_50){ +with(_4e){ +var _51=_50.type,_52=objj_msgSend(CPDragServer,"sharedDragServer"),_53={x:_50.clientX,y:_50.clientY},_54=objj_msgSend(_CPDOMDataTransferPasteboard,"DOMDataTransferPasteboard"); +objj_msgSend(_54,"_setDataTransfer:",_50.dataTransfer); +if(_50.type==="dragstart"){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +objj_msgSend(_54,"_setPasteboard:",objj_msgSend(_52,"draggingPasteboard")); +var _55=objj_msgSend(_52,"draggedWindow"),_56=objj_msgSend(_55,"frame"),_57=_55._DOMElement; +_57.style.left=-(_56.size.width)+"px"; +_57.style.top=-(_56.size.height)+"px"; +var _58=_57.parentNode; +if(_58){ +_58.removeChild(_57); +} +_DOMBodyElement.appendChild(_57); +var _59=objj_msgSend(_52,"draggingOffset"); +_50.dataTransfer.setDragImage(_57,_59.width,_59.height); +_50.dataTransfer.effectAllowed="all"; +objj_msgSend(_52,"draggingStartedInPlatformWindow:globalLocation:",_4e,objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:_50.screenY}); +}else{ +if(_51==="drag"){ +var y=_50.screenY; +if(CPFeatureIsCompatible(CPHTML5DragAndDropSourceYOffBy1)){ +y-=1; +} +objj_msgSend(_52,"draggingSourceUpdatedWithGlobalLocation:",objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:y}); +}else{ +if(_51==="dragover"||_51==="dragleave"){ +if(_50.preventDefault){ +_50.preventDefault(); +} +var _5a="none",_5b=objj_msgSend(_52,"draggingUpdatedInPlatformWindow:location:",_4e,_53); +if(_5b===CPDragOperationMove||_5b===CPDragOperationGeneric||_5b===CPDragOperationPrivate){ +_5a="move"; +}else{ +if(_5b===CPDragOperationCopy){ +_5a="copy"; +}else{ +if(_5b===CPDragOperationLink){ +_5a="link"; +} +} +} +_50.dataTransfer.dropEffect=_5a; +}else{ +if(_51==="dragend"){ +var _5a=_50.dataTransfer.dropEffect; +if(_5a==="move"){ +_5b=CPDragOperationMove; +}else{ +if(_5a==="copy"){ +_5b=CPDragOperationCopy; +}else{ +if(_5a==="link"){ +_5b=CPDragOperationLink; +}else{ +_5b=CPDragOperationNone; +} +} +} +objj_msgSend(_52,"draggingEndedInPlatformWindow:globalLocation:operation:",_4e,objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:_50.screenY},_5b); +}else{ +objj_msgSend(_52,"performDragOperationInPlatformWindow:",_4e); +if(_50.preventDefault){ +_50.preventDefault(); +} +if(_50.stopPropagation){ +_50.stopPropagation(); +} +} +} +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("keyEvent:"),function(_5c,_5d,_5e){ +with(_5c){ +var _5f,_60=_5e.timeStamp||new Date(),_61=_5e.target||_5e.srcElement,_62=objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"windowNumber"),_63=(_5e.shiftKey?CPShiftKeyMask:0)|(_5e.ctrlKey?CPControlKeyMask:0)|(_5e.altKey?CPAlternateKeyMask:0)|(_5e.metaKey?CPCommandKeyMask:0); +_4=YES; +if(!(_7[String.fromCharCode(_5e.keyCode||_5e.charCode).toLowerCase()]||_6[_5e.keyCode])){ +if((_63&(CPControlKeyMask|CPCommandKeyMask))||_8[_5e.keyCode]){ +_4=NO; +} +} +var _64=NO,_65=NO,_66=nil; +switch(_5e.type){ +case "keydown": +if(_5e.keyCode in _9){ +_keyCode=_9[_5e.keyCode]; +}else{ +_keyCode=_5e.keyCode; +} +var _67; +if(_5e.which===0||_5e.charCode===0){ +_67=_a[_keyCode]; +} +if(!_67){ +_67=String.fromCharCode(_keyCode).toLowerCase(); +} +_66=(_63&CPShiftKeyMask||_capsLockActive)?_67.toUpperCase():_67; +if(_keyCode===CPKeyCodes.CAPS_LOCK){ +_capsLockActive=YES; +} +if(objj_msgSend(_b,"containsObject:",_keyCode)){ +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPFlagsChanged,location,_63,_60,_62,nil,nil,nil,NO,_keyCode); +break; +}else{ +if(_63&(CPControlKeyMask|CPCommandKeyMask)){ +var _68=objj_msgSend(_5c,"_validateCopyCutOrPasteEvent:flags:",_5e,_63); +if(_67==="v"&&_68){ +if(!_ignoreNativePastePreparation){ +_DOMPasteboardElement.select(); +_DOMPasteboardElement.value=""; +} +_64=YES; +}else{ +if((_67=="c"||_67=="x")&&_68){ +_65=YES; +if(_ignoreNativeCopyOrCutEvent){ +break; +} +} +} +}else{ +if(CPKeyCodes.firesKeyPressEvent(_keyCode,_lastKey,_5e.shiftKey,_5e.ctrlKey,_5e.altKey)){ +_4=NO; +break; +}else{ +} +} +} +case "keypress": +if(_5e.type==="keypress"&&(_63&(CPControlKeyMask|CPCommandKeyMask))){ +break; +} +var _69=_keyCode,_6a=_5e.keyCode||_5e.charCode,_6b=(_charCodes[_69]!=nil); +_lastKey=_69; +_charCodes[_69]=_6a; +var _67=_66; +if(!_67&&(_5e.which===0||_5e.charCode===0)){ +_67=_a[_6a]; +} +if(!_67){ +_67=String.fromCharCode(_6a); +} +_6c=_67.toLowerCase(); +if(!_66&&(_63&CPCommandKeyMask)&&((_63&CPShiftKeyMask)||_capsLockActive)){ +_67=_67.toUpperCase(); +} +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyDown,location,_63,_60,_62,nil,_67,_6c,_6b,_6a); +if(_64){ +_pasteboardKeyDownEvent=_5f; +window.setNativeTimeout(function(){ +objj_msgSend(_5c,"_checkPasteboardElement"); +},0); +} +break; +case "keyup": +var _69=_5e.keyCode,_6a=_charCodes[_69]; +_keyCode=-1; +_lastKey=-1; +_charCodes[_69]=nil; +_ignoreNativeCopyOrCutEvent=NO; +_ignoreNativePastePreparation=NO; +if(_69===CPKeyCodes.CAPS_LOCK){ +_capsLockActive=NO; +} +if(objj_msgSend(_b,"containsObject:",_69)){ +break; +} +var _67=_a[_6a]||String.fromCharCode(_6a),_6c=_67.toLowerCase(); +if(!(_63&CPShiftKeyMask)&&(_63&CPCommandKeyMask)&&!_capsLockActive){ +_67=_6c; +} +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyUp,location,_63,_60,_62,nil,_67,_6c,NO,_69); +break; +} +if(_5f&&!_64){ +_5f._DOMEvent=_5e; +objj_msgSend(CPApp,"sendEvent:",_5f); +if(_65){ +objj_msgSend(_5c,"_primePasteboardElement"); +} +} +if(_4){ +_3(_5e,_5c); +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("copyEvent:"),function(_6d,_6e,_6f){ +with(_6d){ +if(objj_msgSend(_6d,"_validateCopyCutOrPasteEvent:flags:",_6f,CPPlatformActionKeyMask)&&!_ignoreNativeCopyOrCutEvent){ +var cut=_6f.type==="beforecut",_70=cut?CPKeyCodes.X:CPKeyCodes.C,_71=cut?"x":"c",_72=_6f.timeStamp?_6f.timeStamp:new Date(),_73=objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"windowNumber"),_74=CPPlatformActionKeyMask; +event=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyDown,location,_74,_72,_73,nil,_71,_71,NO,_70); +event._DOMEvent=_6f; +objj_msgSend(CPApp,"sendEvent:",event); +objj_msgSend(_6d,"_primePasteboardElement"); +_ignoreNativeCopyOrCutEvent=YES; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("pasteEvent:"),function(_75,_76,_77){ +with(_75){ +if(objj_msgSend(_75,"_validateCopyCutOrPasteEvent:flags:",_77,CPPlatformActionKeyMask)){ +_DOMPasteboardElement.focus(); +_DOMPasteboardElement.select(); +_DOMPasteboardElement.value=""; +_ignoreNativePastePreparation=YES; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_validateCopyCutOrPasteEvent:flags:"),function(_78,_79,_7a,_7b){ +with(_78){ +return (((_7a.target||_7a.srcElement).nodeName.toUpperCase()!=="INPUT"&&(_7a.target||_7a.srcElement).nodeName.toUpperCase()!=="TEXTAREA")||_7a.target===_DOMPasteboardElement)&&(_7b&CPPlatformActionKeyMask); +} +}),new objj_method(sel_getUid("_primePasteboardElement"),function(_7c,_7d){ +with(_7c){ +var _7e=objj_msgSend(CPPasteboard,"generalPasteboard"),_7f=objj_msgSend(_7e,"types"); +if(_7f.length){ +if(objj_msgSend(_7f,"indexOfObjectIdenticalTo:",CPStringPboardType)!=CPNotFound){ +_DOMPasteboardElement.value=objj_msgSend(_7e,"stringForType:",CPStringPboardType); +}else{ +_DOMPasteboardElement.value=objj_msgSend(_7e,"_generateStateUID"); +} +_DOMPasteboardElement.focus(); +_DOMPasteboardElement.select(); +window.setNativeTimeout(function(){ +objj_msgSend(_7c,"_clearPasteboardElement"); +},0); +} +} +}),new objj_method(sel_getUid("_checkPasteboardElement"),function(_80,_81){ +with(_80){ +var _82=_DOMPasteboardElement.value; +if(objj_msgSend(_82,"length")){ +var _83=objj_msgSend(CPPasteboard,"generalPasteboard"); +if(objj_msgSend(_83,"_stateUID")!=_82){ +objj_msgSend(_83,"declareTypes:owner:",[CPStringPboardType],_80); +objj_msgSend(_83,"setString:forType:",_82,CPStringPboardType); +} +} +objj_msgSend(_80,"_clearPasteboardElement"); +objj_msgSend(CPApp,"sendEvent:",_pasteboardKeyDownEvent); +_pasteboardKeyDownEvent=nil; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_clearPasteboardElement"),function(_84,_85){ +with(_84){ +_DOMPasteboardElement.value=""; +_DOMPasteboardElement.blur(); +} +}),new objj_method(sel_getUid("scrollEvent:"),function(_86,_87,_88){ +with(_86){ +if(_hideDOMScrollingElementTimeout){ +clearTimeout(_hideDOMScrollingElementTimeout); +_hideDOMScrollingElementTimeout=nil; +} +if(!_88){ +_88=window.event; +} +var _89=nil; +if(CPFeatureIsCompatible(CPJavaScriptMouseWheelValues_8_15)){ +var x=_88._offsetX||0,y=_88._offsetY||0,_8a=_88.target; +while(_8a.nodeType!==1){ +_8a=_8a.parentNode; +} +if(_8a.offsetParent){ +do{ +x+=_8a.offsetLeft; +y+=_8a.offsetTop; +}while(_8a=_8a.offsetParent); +} +_89={x:(x+((_88.clientX-8)/15)),y:(y+((_88.clientY-8)/15))}; +}else{ +if(_88._overrideLocation){ +_89=_88._overrideLocation; +}else{ +_89={x:_88.clientX,y:_88.clientY}; +} +} +var _8b=0,_8c=0,_8d=0,_8e=_88.timeStamp?_88.timeStamp:new Date(),_8f=(_88.shiftKey?CPShiftKeyMask:0)|(_88.ctrlKey?CPControlKeyMask:0)|(_88.altKey?CPAlternateKeyMask:0)|(_88.metaKey?CPCommandKeyMask:0); +_DOMScrollingElement.style.visibility="visible"; +_DOMScrollingElement.style.top=(_89.y-15)+"px"; +_DOMScrollingElement.style.left=(_89.x-15)+"px"; +_4=NO; +var _90=objj_msgSend(_86,"hitTest:",_89); +if(!_90){ +return; +} +var _8d=objj_msgSend(_90,"windowNumber"); +_89=objj_msgSend(_90,"convertBridgeToBase:",_89); +var _91=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPScrollWheel,_89,_8f,_8e,_8d,nil,-1,1,0); +_91._DOMEvent=_88; +setTimeout(function(){ +var _92=_DOMScrollingElement.scrollLeft-150,_8c=_DOMScrollingElement.scrollTop-150; +if(_92||_8c){ +_91._deltaX=_92; +_91._deltaY=_8c; +objj_msgSend(CPApp,"sendEvent:",_91); +} +_DOMScrollingElement.scrollLeft=150; +_DOMScrollingElement.scrollTop=150; +},0); +_hideDOMScrollingElementTimeout=setTimeout(function(){ +_DOMScrollingElement.style.visibility="hidden"; +},300); +} +}),new objj_method(sel_getUid("resizeEvent:"),function(_93,_94,_95){ +with(_93){ +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(CPApp._activeMenu,"cancelTracking"); +} +var _96=objj_msgSend(_93,"contentRect").size; +objj_msgSend(_93,"updateFromNativeContentRect"); +var _97=_windowLevels,_98=_windowLayers,_99=_97.length; +while(_99--){ +var _9a=objj_msgSend(_98,"objectForKey:",_97[_99])._windows,_9b=_9a.length; +while(_9b--){ +objj_msgSend(_9a[_9b],"resizeWithOldPlatformWindowSize:",_96); +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("touchEvent:"),function(_9c,_9d,_9e){ +with(_9c){ +if(_9e.touches&&(_9e.touches.length==1||(_9e.touches.length==0&&_9e.changedTouches.length==1))){ +var _9f={}; +switch(_9e.type){ +case CPDOMEventTouchStart: +_9f.type=CPDOMEventMouseDown; +break; +case CPDOMEventTouchEnd: +_9f.type=CPDOMEventMouseUp; +break; +case CPDOMEventTouchMove: +_9f.type=CPDOMEventMouseMoved; +break; +case CPDOMEventTouchCancel: +_9f.type=CPDOMEventMouseUp; +break; +} +var _a0=_9e.touches.length?_9e.touches[0]:_9e.changedTouches[0]; +_9f.clientX=_a0.clientX; +_9f.clientY=_a0.clientY; +_9f.timestamp=_9e.timestamp; +_9f.target=_9e.target; +_9f.shiftKey=_9f.ctrlKey=_9f.altKey=_9f.metaKey=false; +_9f.preventDefault=function(){ +if(_9e.preventDefault){ +_9e.preventDefault(); +} +}; +_9f.stopPropagation=function(){ +if(_9e.stopPropagation){ +_9e.stopPropagation(); +} +}; +objj_msgSend(_9c,"mouseEvent:",_9f); +return; +}else{ +if(_9e.preventDefault){ +_9e.preventDefault(); +} +if(_9e.stopPropagation){ +_9e.stopPropagation(); +} +} +} +}),new objj_method(sel_getUid("mouseEvent:"),function(_a1,_a2,_a3){ +with(_a1){ +var _a4=_overriddenEventType||_a3.type; +if(_a4==="dblclick"){ +_overriddenEventType=CPDOMEventMouseDown; +objj_msgSend(_a1,"mouseEvent:",_a3); +_overriddenEventType=CPDOMEventMouseUp; +objj_msgSend(_a1,"mouseEvent:",_a3); +_overriddenEventType=nil; +return; +} +var _a5,_a6={x:_a3.clientX,y:_a3.clientY},_a7=_a3.timeStamp?_a3.timeStamp:new Date(),_a8=(_a3.target||_a3.srcElement),_a9=0,_aa=(_a3.shiftKey?CPShiftKeyMask:0)|(_a3.ctrlKey?CPControlKeyMask:0)|(_a3.altKey?CPAlternateKeyMask:0)|(_a3.metaKey?CPCommandKeyMask:0); +_4=YES; +if(_mouseDownWindow){ +_a9=objj_msgSend(_mouseDownWindow,"windowNumber"); +}else{ +var _ab=objj_msgSend(_a1,"hitTest:",_a6); +if((_a3.type===CPDOMEventMouseDown)&&_ab){ +_mouseDownWindow=_ab; +} +_a9=objj_msgSend(_ab,"windowNumber"); +} +if(_a9){ +_a6=objj_msgSend(CPApp._windows[_a9],"convertPlatformWindowToBase:",_a6); +} +if(_a4==="mouseup"){ +if(_mouseIsDown){ +_a5=_ac(_a3,_mouseDownIsRightClick?CPRightMouseUp:CPLeftMouseUp,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseUp,_a7,_a6),0); +_mouseIsDown=NO; +_lastMouseUp=_a5; +_mouseDownWindow=nil; +_mouseDownIsRightClick=NO; +} +if(_DOMEventMode){ +_DOMEventMode=NO; +return; +} +}else{ +if(_a4==="mousedown"){ +var _ad=_a3.button; +_mouseDownIsRightClick=_ad==2||(CPBrowserIsOperatingSystem(CPMacOperatingSystem)&&_ad==0&&_aa&CPControlKeyMask); +if(_a8.tagName==="INPUT"&&_a8!=_DOMFocusElement){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMBodyElement.setAttribute("draggable","false"); +_DOMBodyElement.style["-khtml-user-drag"]="none"; +} +_DOMEventMode=YES; +_mouseIsDown=YES; +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_mouseDownIsRightClick?CPRightMouseDown:CPLeftMouseDown,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0)); +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_mouseDownIsRightClick?CPRightMouseUp:CPLeftMouseUp,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0)); +return; +}else{ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMBodyElement.setAttribute("draggable","true"); +_DOMBodyElement.style["-khtml-user-drag"]="element"; +} +} +_5=YES; +_a5=_ac(_a3,_mouseDownIsRightClick?CPRightMouseDown:CPLeftMouseDown,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0); +_mouseIsDown=YES; +_lastMouseDown=_a5; +}else{ +if(_DOMEventMode){ +return; +} +_a5=_ac(_a3,_mouseIsDown?(_mouseDownIsRightClick?CPRightMouseDragged:CPLeftMouseDragged):CPMouseMoved,_a6,_aa,_a7,_a9,nil,-1,1,0); +} +} +var _ae=objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"isDragging"); +if(_a5&&(!_ae||!_c)){ +_a5._DOMEvent=_a3; +objj_msgSend(CPApp,"sendEvent:",_a5); +} +if(_4&&(!_c||_a4!=="mousedown"&&!_ae)){ +_3(_a3,_a1); +} +var _af=NO; +for(var i=0;i<CPApp._eventListeners.length;i++){ +if(CPApp._eventListeners[i]._callback!==_CPRunModalLoop){ +_af=YES; +break; +} +} +_DOMEventGuard.style.display=_af?"":"none"; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("contextMenuEvent:"),function(_b0,_b1,_b2){ +with(_b0){ +if(_5){ +_3(_b2,_b0); +} +return !_5; +} +}),new objj_method(sel_getUid("orderedWindowsAtLevel:"),function(_b3,_b4,_b5){ +with(_b3){ +var _b6=objj_msgSend(_b3,"layerAtLevel:create:",_b5,NO); +if(!_b6){ +return []; +} +return objj_msgSend(_b6,"orderedWindows"); +} +}),new objj_method(sel_getUid("layerAtLevel:create:"),function(_b7,_b8,_b9,_ba){ +with(_b7){ +var _bb=objj_msgSend(_windowLayers,"objectForKey:",_b9); +if(!_bb&&_ba){ +_bb=objj_msgSend(objj_msgSend(CPDOMWindowLayer,"alloc"),"initWithLevel:",_b9); +objj_msgSend(_windowLayers,"setObject:forKey:",_bb,_b9); +var low=0,_bc=_windowLevels.length-1,_bd; +while(low<=_bc){ +_bd=FLOOR((low+_bc)/2); +if(_windowLevels[_bd]>_b9){ +_bc=_bd-1; +}else{ +low=_bd+1; +} +} +var _be=0; +if(_bd!==undefined){ +_be=_windowLevels[_bd]>_b9?_bd:_bd+1; +} +objj_msgSend(_windowLevels,"insertObject:atIndex:",_b9,_be); +_bb._DOMElement.style.zIndex=_b9; +_DOMBodyElement.appendChild(_bb._DOMElement); +} +return _bb; +} +}),new objj_method(sel_getUid("order:window:relativeTo:"),function(_bf,_c0,_c1,_c2,_c3){ +with(_bf){ +objj_msgSend(CPPlatform,"initializeScreenIfNecessary"); +var _c4=objj_msgSend(_bf,"layerAtLevel:create:",objj_msgSend(_c2,"level"),_c1!==CPWindowOut); +if(_c1===CPWindowOut){ +return objj_msgSend(_c4,"removeWindow:",_c2); +} +var _c5=CPNotFound; +if(_c3){ +_c5=_c1===CPWindowAbove?_c3._index+1:_c3._index; +} +objj_msgSend(_c4,"insertWindow:atIndex:",_c2,_c5); +} +}),new objj_method(sel_getUid("_removeLayers"),function(_c6,_c7){ +with(_c6){ +var _c8=_windowLevels,_c9=_windowLayers,_ca=_c8.length; +while(_ca--){ +var _cb=objj_msgSend(_c9,"objectForKey:",_c8[_ca]); +_DOMBodyElement.removeChild(_cb._DOMElement); +} +} +}),new objj_method(sel_getUid("_addLayers"),function(_cc,_cd){ +with(_cc){ +var _ce=_windowLevels,_cf=_windowLayers,_d0=_ce.length; +while(_d0--){ +var _d1=objj_msgSend(_cf,"objectForKey:",_ce[_d0]); +_DOMBodyElement.appendChild(_d1._DOMElement); +} +} +}),new objj_method(sel_getUid("_dragHitTest:pasteboard:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +var _d6=_windowLevels,_d7=_windowLayers,_d8=_d6.length; +while(_d8--){ +if(_d6[_d8]>=CPDraggingWindowLevel){ +continue; +} +var _d9=objj_msgSend(_d7,"objectForKey:",_d6[_d8])._windows,_da=_d9.length; +while(_da--){ +var _db=_d9[_da]; +if(objj_msgSend(_db,"_sharesChromeWithPlatformWindow")){ +return objj_msgSend(_db,"_dragHitTest:pasteboard:",_d4,_d5); +} +if(objj_msgSend(_db,"containsPoint:",_d4)){ +return objj_msgSend(_db,"_dragHitTest:pasteboard:",_d4,_d5); +} +} +} +return nil; +} +}),new objj_method(sel_getUid("_propagateCurrentDOMEvent:"),function(_dc,_dd,_de){ +with(_dc){ +_4=!_de; +} +}),new objj_method(sel_getUid("_willPropagateCurrentDOMEvent"),function(_df,_e0){ +with(_df){ +return !_4; +} +}),new objj_method(sel_getUid("_propagateContextMenuDOMEvent:"),function(_e1,_e2,_e3){ +with(_e1){ +if(_e3&&CPBrowserIsEngine(CPGeckoBrowserEngine)){ +_4=!_e3; +} +_5=!_e3; +} +}),new objj_method(sel_getUid("_willPropagateContextMenuDOMEvent"),function(_e4,_e5){ +with(_e4){ +return _5; +} +}),new objj_method(sel_getUid("hitTest:"),function(_e6,_e7,_e8){ +with(_e6){ +if(_e6._only){ +return _e6._only; +} +var _e9=_windowLevels,_ea=_windowLayers,_eb=_e9.length,_ec=nil; +while(_eb--&&!_ec){ +var _ed=objj_msgSend(_ea,"objectForKey:",_e9[_eb])._windows,_ee=_ed.length; +while(_ee--&&!_ec){ +var _ef=_ed[_ee]; +if(!_ef._ignoresMouseEvents&&objj_msgSend(_ef,"containsPoint:",_e8)){ +_ec=_ef; +} +} +} +return _ec; +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("visiblePlatformWindows"),function(_f0,_f1){ +with(_f0){ +if(objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"isVisible")){ +var set=objj_msgSend(CPSet,"setWithSet:",_1); +objj_msgSend(set,"addObject:",objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")); +return set; +}else{ +return _1; +} +} +}),new objj_method(sel_getUid("preventCharacterKeysFromPropagating:"),function(_f2,_f3,_f4){ +with(_f2){ +for(var i=_f4.length;i>0;i--){ +_7[""+_f4[i-1].toLowerCase()]=YES; +} +} +}),new objj_method(sel_getUid("preventCharacterKeyFromPropagating:"),function(_f5,_f6,_f7){ +with(_f5){ +_7[_f7.toLowerCase()]=YES; +} +}),new objj_method(sel_getUid("clearCharacterKeysToPreventFromPropagating"),function(_f8,_f9){ +with(_f8){ +_7={}; +} +}),new objj_method(sel_getUid("preventKeyCodesFromPropagating:"),function(_fa,_fb,_fc){ +with(_fa){ +for(var i=_fc.length;i>0;i--){ +_6[_fc[i-1]]=YES; +} +} +}),new objj_method(sel_getUid("preventKeyCodeFromPropagating:"),function(_fd,_fe,_ff){ +with(_fd){ +_6[_ff]=YES; +} +}),new objj_method(sel_getUid("clearKeyCodesToPreventFromPropagating"),function(self,_100){ +with(self){ +_6={}; +} +})]); +var _101=objj_msgSend(CPEvent,"class"); +var _ac=function(_102,_103,_104,_105,_106,_107,_108,_109,_10a,_10b){ +_102.isa=_101; +_102._type=_103; +_102._location=_104; +_102._modifierFlags=_105; +_102._timestamp=_106; +_102._windowNumber=_107; +_102._window=nil; +_102._context=_108; +_102._eventNumber=_109; +_102._clickCount=_10a; +_102._pressure=_10b; +return _102; +}; +var _10c=5,_10d=(typeof document!="undefined"&&document.addEventListener)?350:1000; +var _2=function(_10e,_10f,_110){ +if(!_10e){ +return 1; +} +var _111=objj_msgSend(_10e,"locationInWindow"); +return (_10f-objj_msgSend(_10e,"timestamp")<_10d&&ABS(_111.x-_110.x)<_10c&&ABS(_111.y-_110.y)<_10c)?objj_msgSend(_10e,"clickCount")+1:1; +}; +var _3=function(_112,_113){ +_112.cancelBubble=true; +_112.returnValue=false; +if(_112.preventDefault){ +_112.preventDefault(); +} +if(_112.stopPropagation){ +_112.stopPropagation(); +} +if(_112.type===CPDOMEventMouseDown){ +_113._DOMFocusElement.focus(); +_113._DOMFocusElement.blur(); +} +}; +CPWindowObjectList=function(){ +var _114=objj_msgSend(CPPlatformWindow,"visiblePlatformWindows"),_115=objj_msgSend(_114,"objectEnumerator"),_116=nil,_117=[]; +while(_116=objj_msgSend(_115,"nextObject")){ +var _118=_116._windowLevels,_119=_116._windowLayers,_11a=_118.length; +while(_11a--){ +var _11b=objj_msgSend(_119,"objectForKey:",_118[_11a])._windows,_11c=_11b.length; +while(_11c--){ +_117.push(_11b[_11c]); +} +} +} +return _117; +}; +CPWindowList=function(){ +var _11d=CPWindowObjectList(),_11e=[]; +for(var i=0,_11f=objj_msgSend(_11d,"count");i<_11f;i++){ +_11e.push(objj_msgSend(_11d[i],"windowNumber")); +} +return _11e; +}; +p;26;CPPlatformWindow+DOMKeys.jt;2336;@STATIC;1.0;t;2317; +CPKeyCodes={BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229}; +CPKeyCodes.firesKeyPressEvent=function(_1,_2,_3,_4,_5){ +if(!CPFeatureIsCompatible(CPJavascriptRemedialKeySupport)){ +return true; +} +if(CPBrowserIsOperatingSystem(CPMacOperatingSystem)&&_5){ +return CPKeyCodes.isCharacterKey(_1); +} +if(_5&&!_4){ +return false; +} +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)&&!_3&&(_4||_5)){ +return false; +} +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)&&_4&&_2==_1){ +return false; +} +switch(_1){ +case CPKeyCodes.ENTER: +return true; +case CPKeyCodes.ESC: +return !CPBrowserIsEngine(CPWebKitBrowserEngine); +} +return CPKeyCodes.isCharacterKey(_1); +}; +CPKeyCodes.isCharacterKey=function(_6){ +if(_6>=CPKeyCodes.ZERO&&_6<=CPKeyCodes.NINE){ +return true; +} +if(_6>=CPKeyCodes.NUM_ZERO&&_6<=CPKeyCodes.NUM_MULTIPLY){ +return true; +} +if(_6>=CPKeyCodes.A&&_6<=CPKeyCodes.Z){ +return true; +} +switch(_6){ +case CPKeyCodes.SPACE: +case CPKeyCodes.QUESTION_MARK: +case CPKeyCodes.NUM_PLUS: +case CPKeyCodes.NUM_MINUS: +case CPKeyCodes.NUM_PERIOD: +case CPKeyCodes.NUM_DIVISION: +case CPKeyCodes.SEMICOLON: +case CPKeyCodes.DASH: +case CPKeyCodes.EQUALS: +case CPKeyCodes.COMMA: +case CPKeyCodes.PERIOD: +case CPKeyCodes.SLASH: +case CPKeyCodes.APOSTROPHE: +case CPKeyCodes.SINGLE_QUOTE: +case CPKeyCodes.OPEN_SQUARE_BRACKET: +case CPKeyCodes.BACKSLASH: +case CPKeyCodes.CLOSE_SQUARE_BRACKET: +return true; +default: +return false; +} +}; +e; ADDED Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLData.txt Index: Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLData.txt ================================================================== --- Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLData.txt +++ Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLData.txt @@ -0,0 +1,679 @@ +/* +Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR" + +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAIAAAAvP0KbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUeNpiunnvEdO7j5+Z/v//j4H/IbP/geh/EDEY+x+Sun//UNSj62f4z8B099YNgAADAA9PUNwzG//eAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAIAAAAvP0KbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADlJREFUeNpimL9qE9Pdh0+Y/v//D8T/mP79Q6chbBD9/x+MjwX/R7D/g9T/h9BgM/5D9BtqqgIEGAC2zE/UgDMaqgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAIAAADAusJtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCB1j2LNnD8P///8Zvnz5AsIAU6oK6qmqG6cAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAIAAAB2XpiaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1j2LNnzxcYAABDLQrJ2KbR7QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1j+PLlCwAFvALdifOWJQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAIAAAB2XpiaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1j+AIDe/bsAQBJFQrJwsQiEQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAIAAADAusJtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUCB1j+PLlCwMM79mzBwBaQArJvXzTegAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACYAAAASCAYAAAA31qwVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHpJREFUSMdj+P//P8NgxIPSUaMOG9kOi4+Px4WFoRhDbqAdtgSKB5XD8oH4PxTnDRaHOQDxHySH/YaKDajD5IH4KZKjYPgpVG5AHMYOxMexOAqGj0PV0N1hM/A4Coan0tthBUQ4CoYL6OUwJjxFBsOAFRejVdKow0jEAMbSS1vJwWj5AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACYAAAASCAYAAAA31qwVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH9JREFUSMdj+P//P8NgxAyjDht12KjDaIjj4+OZ6OIwoEUFQPyfSAxSy0Avh4HwVCIcNQOqlq4OYwfi43gcdRyqhu4OA2F5IH6KxVFPoXIMA+UwEHYA4t9IjvoDFWMYaIeBcB6Sw/KxyA+Yw0B4CRQzDDaHCUPxwDlstEoajBgAIvph233GDmUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUCB0FwbENgDAQwMCvmByJpbxIeipqR0pn7ga4gBt4gQZ41lqdc6oa4FPbe6c2QGpqaj/TuDbcxUWSYgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUCB0FwbENgDAQwMCvmByJpbxIeipqR0pn7gYIeIEbuKbqnNNaK+AZtb13asA3ampqQD8COzbceGNz5AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUCFtj2LNnz/8vX77AMQNQ4NX79+9RBNqvXLnyHyYIUsEGxL1A/BykHQCHWDaL8tTDxAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUCFtj+PLly38Y3rNnz38GGOf9+/cggVcMMM6VK1dAAl0MIGVA/ByIe4GYDQC0XjaO10uChwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPToolbarView/_CPToolbarViewBackground.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAA7CAIAAAA1lncVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUCB0FwQEBwEAMhDAO/1Je1YSUJX7fJyHDSkDKQMArBwZyJ5uVkWN254EDIQvvkiVhJWFDyuscs7KSsJJlYSXDLgErIwkJj6QErISEeZcOKwMBASMJ33s/zDJY0JkKjKMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAoAAAAPCAYAAADd/14OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUVJREFUKJFj0NDQWKGmpib1//9/BnyYwczM7L+RkdEuoAYdvApdXFz+u7q6/jc1NT2vqanphlOht7f3/+Dg4P8eHh7/LSwsnmhrayeoqqqyYCj08vI6FhER8T8kJOQ/kP3f2tr6k66ubhPQ3XwoCp2cnLiAJoIVh4WF/ff19f1vZ2f3V19ff7a6uroSXCGIALqTE6j4MEhxeHj4/4CAgP9AA/4bGxvvBrrbEegUQbjRQA/xABU/j4yM/A/SEBQUBPYkMFS2amlp2cAVWllZ9fr7+4MVwRQD+Wft7e1DgM6QASvS09PrdXR0BJsCUwQ0fZu7u7se3I0gRQ4ODmB3gRQA8a/AwMDpQHdLovja1tYWrAjkCSD+BLSuAmg6J0Y4enp6ghUBg+YeMGiigBqZccYMMLDPAQPbBm9cu7m57QE6Gm+CAGEA/dNCZSU2Z+AAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAoAAAAPCAYAAADd/14OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU1JREFUKM9jsLS0XGFmZib1//9/BnyYwdfX97+7u/suCwsLHbwKExMT/4Owt7f3eSsrKzecCrOysv6XlZX9T01N/e/v7//E1tY2wcTEhAVDYWZm5rGampr/FRUV/4Hs/yEhIZ8cHByaTE1N+VAUxsbGcpWWlh6rra39X1VV9T83N/d/RETEX2dn59nm5uZKcIUgAuhGTqDiwyDF1dXV/wsLC/8DDfjv4eGxG+huR6BTBOFGAxXzAN36vK6u7j/IKSUlJf+TkpL++/j4bLUBArjCoKCg3oKCgv8gU2GKgfyzkZGRIU5OTjJgRUBGb0xMzH+g9WBFIMVA07cBQ0IP7kaQoqioKLC7QKYA8a/i4uLpQKdIovg6PDwcrgjokU9A6yqApnNihGN6ejpYUWVl5T1g0EQBNTLjjBlgYJ/LyMiwwRvXycnJe4CO1iGUegAs+F709mxc3QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPWindowView/_CPWindowViewResizeIndicator.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF9JREFUKJFj+P//PwOx2NjYOJIkxUDalSTFQMxPkmIQnyTF0tLSASQpBtLOJCkGYlmSFGP4gZBiBQWFIJIUw+OBWMVALMkABHZAhg1MMQcHhxeQtoMp5uLi8obyJUF8ACitf5AUaj8yAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/action_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABYAAAAOCAYAAAArMezNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZxJREFUeNpi+P//PwMyBgJmKN0PxCBGP5TPja4WH0Y2UBKIGxgZGQ8AaVaooTDMx87O3guk15FsMAcHxy6YQVDD4QazsLBsRuLvIcng0tLSrWiuxMBAy/8YGRndJclgIPasra29DTJAR0fnY19f3/W3b98enjhx4jUQH2RoUVHRTaC6VqINRoooMK6rqwN51x2IuYDYFcRHc30/UtxMQ5OrQDYYxcu3b9/2R7b92rVrAehqYHI3b96s4uXl/QUSk5GR+fb+/fs4uMFxcXGPkTUBFaYgG8zPz5+KLA9SjyTPW19ffwkkPnv27P1APgtyGGcD8f6UlJSHwBTwV1hY+DpQYTQo7QJxPJT/39jY+P2PHz8OQNXDLf727VtgQkLCIyDbAls6PgZMZn+hye0frpQBlLuJJbKYgDgLa6owMTG5B9McHBz8DNkwWGrh5OT8Y2ho+IzU5Nbq7+//vLy8/A7Qa2VoERUCMtzFxeXZp0+f+kg1GITL3717FwOkmWERihRRIcuXL58FpFnJMZgBFquwCEWLKA1iywqAAAMA5oG1QG1/ejsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/brightness_bar.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAXUAAAAUCAYAAAByIq2DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrt1DEKgDAMQNEMvf+VdRC3QhNpUOS9pW0CDg5/RMQRl/uMxWy2z+w6zupuNeu6V3Yd747Zm/Onu93f+9q/2TnrfGd3u+/VWWbXcWZ30/0IAH5D1AFEHQBRB0DUARB1AFEHQNQBEHUARB0AUQcQdQBEHQBRB0DUARB1AFEHQNQBEHUA8k4Pbf5S2jTRYAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/browser-leaf-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANJJREFUeNp0kMEKgkAQhmd1PYh5C3wNfZkeomNPEQQdu3bo1i06duzURW8d8hJkUQgFYqLp7vYbJRU48DMw880/s0tBEAx83+8opahNLAxDZHUrimJSluXY87wr/QWL41gZhkFZltEdkef5tKqqoeu6xwZKkkRZlkVwIbh9YAF4htoI8PYF2bb9mpBSElwaOE3TNdTj37s1TaN6NfLFNM3IcZwNyo8GwvEwkmfGWMQ5X6I0h3Z1j6MpsOKE6b2u64t38/DzPCHECmAf6rb901OAAQCWtKL7r7moLgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/browser-leaf.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAONJREFUeNpiUFZWLlJSUuL5//8/Ay7MqKen95+BgeH9jx8/pv3586fv7t277xjQAKOtre1/VlZWhm/fvjF8//79K1DxfKDijjt37jyFK3JxcfnPxcXFAJRg+PnzJ1gxEP8Fshf//v27G6j4GgtIJRMTEwMbGxsDCwsLAwcHBwM3NzczUGECUKOyqqpqGAuy3SDFjIyMDCYmJi8DAgKeGBgYnAQK/2JBUvDP1NT0RUhIyBMVFZXNQKFVQHwLJMcCtOavnZ3ds/Dw8AdSUlIboZKPUbz3+vXr3cCwyAJiEVzhBBBgAKZHhoa/n4e4AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/browser-resize-control.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAOCAIAAAB/6NG4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeNpifP36NRMTEzMYMCEBRjBgAIP/YPDv3z8mBlIABaonTZr07ds3IKOvrw/C6O3thTAoNntUNRgwDpqYBwgwAFUPJZ6DFNTXAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/color_well.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACMAAAAPCAIAAADh1eFDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH1JREFUOI3t07EJgyEUBODHVbqAhXvY22cGXSAbpRFLC8loCiIkIfoyRHhW/7fAcXCHGONNXggBvfdSylNSrbW1hrUWgK+kvbfWGkT0kUdEIKK3PGY+lHS800veuU7XIv7BzFBKjTFEbzvnZGZYa3POD0kpJWMMnHN3ed77HwxWA6QUi5PsAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/New.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZNJREFUOI19kz9IAmEUwI8aaoqo1BaxWhoampMWazQS++PWEtTk1tIUOHbQkHZBTjY4eGpLKEE3JaLiDVficBwcSJSLTi4Owuu9jw8x79MHP+7ge+/3vXfffRIASBgzyByygCwjLsSLbCLbyAayhMxK48EFVOyCkeh0OmAYBnvHtTNkRyjhAtp5i5JrtRqjUChAIpEYCnH9WijhAmrbT4m6rjOKxSLIsjzalFjCBTRzgJKobULTNIjH4zAemHfOv828UNBsNhnlchnS6bRDwCW7yKJQYFkWo9FoQKlUAlVVIZlMgqIokEqlWHeYu4esCAWtVoth2zaYpskK6vU6VKtV9qTTwdx9xC0UtNvtqfARArzGKeh2uxM5ygQh8hIC3637a6Kg1+tN5Dh7AG+/lemCfr/v4CR3yLh4j8Kz/QpBNfyzdu+prD+sfjgEg8HAwWk+BE9WbohiZhijguGfKAqam7jUonDz+QjBbPh7vAN2F5AIcoXERHhjLpsEvjuPzmv+30Yu8fNjcuCT3QYV0+68RvoD0y0J9R+ff5MAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/NewHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYhJREFUOI19k71Lw0AUwIMOOrViGzcXFwcHwY+WfizVwcG9iFIpDmkkSyDQ1MFWyVJqKdRSQggdMnQJFEr/FgdBEEdB/Bue7x3P0jbXHvzIwb33u3fvcgoAKDjWkA0khiQQFdlF9pFDZA/ZRtaVxcECSlYnkwn8MxwOodvtijmulZCMVMIC2vmAgtvttqBer0OlUpkKcb0mlbCAys5SYKfTETQaDSiXyzBblVTCAjpzgYKobMJxHNA0bU7AkjvuzaZU0O/3Ba1WCyzLighYkke2pALP8wS9Xg+azSbYtg2GYYCu62CapqgOY8+QpFQwGAwEvu+D67oigXpCjaUv3Q7GniM7UkEQBCvhIxQ4JyqgHZaRqZ5A/iENyevY11JBGIZLydqn8BS8rBaMRqMIuVpKcOFcguk/wrGV/lVL8Xf1Nv4WEYzH4wg5LNvwalN0tyqYFUz/RBl0boIquHq9hyMr9bNYgXgLSBGxkGcZiWLsmwTJm/gH58y/RpZk+ZoiYPM+KZl25xzlDyJip/qGO0OBAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/Open.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgtJREFUOMulkz1rlFEQhZ+Ze3dDkGhcSZa4UYOFhU1iYaUWfiP+Bit/gVhYm970oj/DPyDEFBpEEPFziYKKySa7yO67eb/uHYvs5g22meZyYeacM2dmxMw4TCiHDAGOzDabd0+fWVgMIRQAu8Nh5/vGxnqa7nb+I1FgF/gJmJnhgeNXb9y+/+Dho1v9pB8xGCaD5O2b1+12++uOc17GVCqqIYZkbXX1xUb72zMgeEBbzZn62VNNer26AqjOTC2eP7eE7Ek8KHh6+hjLj5cbKytPngJ4IIpYabHEQglACBCKHGRcXhk9OVHHLCY2ct8D0u325M9mh16vV3EJmI0xKqA0KxgkwxowAWT+ZGv+2tzCuaX1D22KPENGrOPxighmRjRwqqhucfHKzUsfv7SfA/f87Nx86/L1Oyemjk4TQokA0cCrIk7I84IQDRGh7h1mMN1o+FerLxsAPsvScrOzbUlhkucFMmLda8GIZoQQERFq3mFm9LOS/iDJAXxRlrbzt08W65Sh3PfNzDAzVHX/P26vNCVNM6sAuj0bpiahLKu1GRkoIlis/IjRSIYpg2QYAbyKOkXUuQM3YYY6HamIiI5bijgnqIJzrgbgu9tb2+/X137PzrVqoSgjIghg2Gh8e281VkFU6z/an38BiHN+YWJy8gKIB4tV8qhwH6JaJxFqeZZ9yrP0nRz2nP8BeYUUSYTtIaYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/OpenHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeRJREFUOBGlwV1qE1EAhuH3O3MM1CiN/RFEBBFFULDWG92BV6IgrsD96CoEvVMXIS5AW1FBqJQmFWnaJs4kc+Z8Thtt9brPI9ucROCEBPTme70ny8vnb+Wca1qTqvo5GPTfp5QGQOCYgBL4BtS2icDyrZXVpw8ePb5bVSXYVGU5/frl88ZgsLUbQiH+kBSy8/jT2trb7X7/GZAioIXefHFhqcdoHAERQq9z5fKlq2COCQGnu6d59fLl/JvXb57TikCWnOyMc+ZAk6FJCQkw/+mcitgeGSdaEQj7o7F2hruMxyNmxIyZEX9NU0M1mUSgC4ziwuLS/YXzF2983ejTpBokBNi0DAIMBiQRNOTazdur3zf7L4CHsbewePHGyp2zc3Ndcs4gsE2hgIKoUyJnI4lYBDB0z54p1tc+nqMV67pOw909qgRNShySCIAxtmmykaAIBcaUqaEsqwmtmFLj/V8ltSM5Z2aMaRkkccAYcUBki2ldm1ZscuP9vRGTqck5c0QcEmBzSIJsmEynVNUk04oiFJIIgSO2CQoYY5sQBAKyKYIQEEI4RSvu7w1/fPuyvtM7t1jk3GRaAmyOiZYAIwQhdLa3NrdoKYRwPXY694QKcAYxY0DMGBD/6KSUPqR6+k62OYnfXED9QFof0dQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/Save.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVhJREFUeNqsUz1rwlAUvS8JAemUPZNZAiLonqGTPyV/oWPt2H+T2aUK/oAQyKDSzUFCSBarolF7z22faKWmYC8c7st995z78Yg6Ho90j1lhGMpBKXVS8n1f8NOiKIJ72e/3/cPh8CXwfdfvdru02+0gRM1mUwDLsoziOKZOp0PtdptWq9XzdDod8hVABqsRsNlsaLlcijdNkxzHETBB4vC4Q67neW/MfZQOqqqSSqgO2LYtVSeTicTX67XE4dEdzo1GA0IQGF4JYLbFYiHQBsJsNjvlWZZFmnchsN1uKc/z+s2fC4AIA7ksSwqC4CZ5PB6LgOZddIAF9Xq9mwKj0Uhyr0ZABxCoM+Qg92oE3cFfBPTC/6UDoygK+dBPWGfI0TsA10qShFqtFhmGIdsdDAa1T4hcvFiapqQ45jI813Wf2DuMB4b52wSMD0Y5n89f2b+re3/nTwEGACUKCdgz2++nAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/SaveHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXBJREFUOE+lk09qwlAQxscXCC7cBUGwJCErt0IJOYLF0Bt0I8FVD+Eduuo2i+57hB6gBLLLUhoiLlQUxP/G9w08iYjJogM/Xpz5vnkzkog8z+k/iOFwSLVajXq9Xq4IgiAfjUZ3oOb7/gf0YDAYkCAZrut+OY5DlmWRbdvUbrep1Wox9XqdJpMJn6g1m833fr//Ch9CnE4nHuVwONB2u6X9fk9CCGo0Gsxut+M8TtTO5zMZhvHted4bNzgej5zECTDacrmkNE0ZmJDHiRqecYG88AWXcwM8KNBssVhQkiRMlmWk6zqfqBW13Kw4AdZYrValQFP0CCTUj/V6TaZplgKNagDv3QrdbreUhyuoSaqiqL1ZQf2BVVHU3qygJqkKdfN1hfl8fk3ihaoKaNRl8Io4jmmz2fDLoWkaRVFUCjTQwgMvvoWn6XT6+StDJpIwDMeSvweMoYEWHniFHCmV/MhxnmezWUdiS8wHoNaBFh54L4mHAQ/Vw7dXAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImage/CPImageNameColorPanel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABoAAAAdCAYAAAC0T3x2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABxBJREFUeNqMlmtsHNUVx8+dufPetddrO07sRG1ik0SEQIwDJRSaAEn4QEQiA4oQoEgoUj+0qpDCN0BVVdQPqA++tFU/VVCpISIK0MhWFYQICBEeBVyqxjHgBIOx49jrXdv7mNfO7f/eGQcTXrV19s7dO3N+5/zPuXeWCSHou/72/P759bGRHIyN5p6mkbQ2ebIt0QTpWjTC9WDB0P2XYcdODT524bv8sG8D7f/VS7fA+ZPFNt6/6/qrqv2bf9iad7mx1jBMuT4ZheFSXI9GJkYXT4+/5ZWblz7kmv/4C/v+8Nr/BTr46JDZNMTv2gpi8P79t5jbe9s6Io2ohtsCjD5TT5FDgixKyCNGBq7/Vfmo9NybRxtlMfMio+jIsbv+Gn4r6MGfDxcTLk5s71/d89A9A70+1mfx4XOiGJYYRELmwxLSKILFxDE6IqEOZpGN5Wff+9v4Oxff+IKJaPDovmPzXwMdOjzsCE6n9+7Z2LP79r6eyQWihSYAcI7QSbMzk3MtwUeEfELkgkgoIBPQFmDXUJ5e/mRoamj0+CSJaNfRu082pH/tMjEST9+wdU3bj7b3dY+irNOzkKsKUIDFZupbR0w6rbQEwiVYjqhGDZqhEo3RZ3Rz30/W3NR9U5GJ8Oll/wr08H0nB9pz7MAdt/Vv+GQccgHSAKQptYvgUBpAXBpgUBEmlEmYDpRAdg2qU4Xm6TxNsDsH7l5f1IoHHnjh1oHLIBYmT+28fTubmCC9BIi/iHogYS1KTUdGPCYyADIBMpGHLJWhYClI1osB5lNVwb6gKX3vjYOMJdFTksEP7z2xrbCab3VbV3VMfCoobqKLUAsTYTPIpqM+HDAzg0jJZOMJpahQ0glcxRkoQb0C5BbQIq3tWtvRzju3Hnq+f5umReLeqwf6/KkLUKnKSMA5i1PJZDYqE2RkwizAbBBka9uqRwQyS5BZE5ktZxXjKgCySlP0Odvad2ugi+a9mhYmOxyn261MovCLqUxSIkOk12oOmAWzce0oEINRBpOgJKtVouSU4AT1WqJpyvcULUOIHVyPxCbuuzZH8Q0PD8epA2WooMVI1UNKZ2XyyWaI4VCDSeHSPKSI2ootGqMXG2S7rR52xCZuxKJzYZRrMfZNrofIA8xB5K6KHCNADp639RTiKJB0TKpSQlVNwz9TGE19AwcQL6CL1OC+aZPeyaX+NiC1CXTbEqJeA+c9adFNhOJIsMxGQnTZaanpcMwUIG1xPA33VWQxh9kUrqfx/TzllMw6cdBmvdj3uO4WZMQeTqgcZPSQjgvNbDPNxjFSsC43VOITt3AE6T5cNGCIEFuWYdRQGx042SgBZoYf1BwyqtwlfSz0y71dhltgyM6DJi7MQ8e5MAdgC2bKzSu7Ao6IY5NFMWlOgywDMBYiS2kSIC1GjWPVFtNlv+KSMc6R1plq/eOu61Ggei1zHmQG5xZ8cnl08zCFRLhJkzcisxg3OFXiZo10LjPz4TpQJoEe/kdHF+vI6Az3iB8XCwuH24qU8IrQ3ICRnQEs+NUs2eOBkoZiaGrKPYBFH98HgIcSukTMrpJl1omzBprFVxm2UiEJZoJ2hxvH1en93HXDp9f1/KDrx86WzUvwZbWh4DDWBkcFUFvgLIc6OEspiNXStsxhPQ+oh4dcfG9X8HCZhFFGvXL0/r+DsfFz8xfvOzi0S24JcomOzM5+fJKu3tLIL6JJlFRBGjnJ0xWAAK1pw5mBUaun0vnQOUAgAeYh7vGwHiO7vFTB8S+MlFoNS3/gK++jV7YN/4W38xt2du3tpzk/jT4PSB5jDs4dmIWIjSwjT6Qd04KAWhBQi2xV3FvAvLudTv298kEU1d+969A/fqoO1eV9jC5+RC/Fp99jr/53oPu2LXTpItq4jAgBCCqZLDAOZ6yavtvz6MIQjkMEFiErgUw6O+n1Zy6djar1iEztkW98lb993XCRRHyiWQwKN/fu2Ei1kiPKY8ScRaU9QfvLIDcDtUYk8gGxjUWiDs8f+uf5sWZSr2iOMbjvyKkvX+VX/lj50/pfWtc66/9YMyu7N3Tna30d7ZsoKWlU+wyr8zjdZzDWiRWxo1vxeE+OqI0n/5ma+Whketq1nOSVdz+v/uy3J87JVhUiy2QlaPkNLU8Y/ud1v9i1Tnee8PXFXrPYmNu82nAKTmh2dnid8uaZ8lypFDaCkdq0v9AsF3VbnJ8Mkt/8+tSnr6uDjtRxGMnXFljNlSB5SDtpE6I3IQysZafbe82NdsfuTiO5NqElz9P9VU0cO2UWzyUW1adEPPrBUvjq+3ONs7h/IW1TdSZV0x1ODYDC7wXBID6tykY597K3iJ85RIfQJdh8dv29oK9Il4FNWvF6yuacll9JqTRSpkZm4YrvLksn7WvN8A22/CNm5Xz5ZwNlY3LF/Eqj/wkwAC2fO4nxam4uAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImage/CPImageNameColorPanelHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABoAAAAdCAYAAAC0T3x2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABqhJREFUeNqMVkuMHEcZ/quqq7vntbO743jXm8WLs/YaOQ8nUswzQitMImJ8AokcLBHhK7cIWUHmAsGKZHzkgpAiBckckDghJQcc4TwIIg4iRBBZMrZje22v19nHPHr6VV3FV109m12CSWb0TVV3Vf3f/65h9Cmfx3/40wM5y48rli9qoZsF5fs0IxLSXBI8H0hfn5e+eunCyV9/8P/ksHstfO0Hp45kJv55s0b7H957f/zA7M5GzedeRwjPrq8WhYp1qq7eXRq+f+tiOGS9f8vQ/OTN53/3h89EtPi9F8OCq5fqYf7U1790wJufrrcL7EoMUc6B8pQhH4MkTQFEeGTo8vB2/42LbyRDr3eOC338T8+/mtyT6MnvnJ7OdfzK3gfGdy5+ec9MhvUufnJBVAAaIM8RMVJAQQLwjaYxJkHOzPmrr9+6tPHBihfSkXMnXlv+BNHTR880Uj288Niju+575KGpHatDokg7AqhOHCYwO1ZEBCINEEET2OnhqUacJqlO/7jzt9V3l/68Iuvs0B9PvBVZ+XxEpNLk5YXPT7T2zU91lu4QrXWJ0hhWWF+BkAHcuAMfwxIa2FRQQiltUJ9u0l36wtSByf2T+8eKJHl5JL8kenrxxcWmrw4//ODczO3bcBdIMni4sCQFMkw5EjECWZgSvBw1fhVsSykC2TKtsEf3HNrVKBqHnzx1cHGTCMxnHnpkL62sEO9bElhiUiyqCrBGgNAzFWgER8JLFGXcMtg2ANkqrfHHFr5KOknPWA7v24+/8ISsZ/N+fay9cgduQJF4vlOBwSJu47KFRGxJnqJynanILJFBvHJYtk5D2jG2o92k9vy3frbvCW5ydWz33pl8dZmYShiZyl0WrKgsgUUeRmnKvEBKu1GWVukSoiRyB22SKFi2Rh+xuZkHUe/FMU55fsj3J8JoFTEfOjeVgo2bj9wmMfoYfby3Bo8gt7nPVO60tqYUg6reaUlWmEMeU3pOZIEUCL4InLCRtj6SX7LqWTuLRu4rygQ3lePYJrY6tkDEpF/UhDZznlB6PLrBWYFsDztACALt3GM1DpiD5I7EL4mck1x8eFmO7jtKe12qESFSKc89afi4J6ymIElWUHbINjkJwZPugAfVg9AJLy3kLttEJZDhl23WUwbxCRTo4WkV83W871OIHT5mXkBio6ZVTQjZsBqHSIYQbgxBGkC69Jw1gXDE3BaSydC9C+I8g4gUWYbNZFtbDLFpmeqyzD8Q5CoNmDf0QuZdU9lgdlxMNGz1BxbwS4j6CQAfkIAHBVhmHYYCE2g7BerGRwwExDEFKxWsVSCwKMqGa9NiI8r6Ne4teTUmLyTZ7c6ecILS1AkPINSvICFT2NZtK9eSKGjO7ahd6/BjEl4CS611OUTbvpeXhCG+t5bipCbkBa/JgrNJNHim1WRGRJoFOdskkJDHbK7z3LlGA56tASxmeJ8r5+cALpMx3JySYFlJZi1ssKbJ1nvtelOeFW+vn7v+jfY3n9F+kc+hO1ilfRsP2xmYctobCDPIGJuaCkSZnaeOuFzDO2PjFOEMLOQxsrZB167nS2mU3Tr1wjsny9tyjAfPbXRv/p59bjarDY1f3nIid5qXlkCIgnA5dBYx62PsyaBIjn156hQo4hKsZr3gZ8uXB436mPw+VZlKr62f+/Do+FNfvFvcCe9rT3Uozp1wm01WWz1wRApjDqSVRVaw3WcqlK0FZ+stev+t6IrkxV9Pnnr79Lb7qMnDZ72+Vld7//qQJnx7QcETEDroE/V7RL2uQ9fOAXuX9Kp5z+7BXqugGKOL5/vXisFQBZw/+z+v8l/Nn56Oi+iVopW1FqYXdpuk55vBTaQxNJUQ5AHwP7HEuc66qIFGVMuJzbQQgyD7+3sr17VJ+/VWcOTEL99ZvtefE/6jXcdr9/udswPR/cquTj2eajV2G91HHd7Fch/dfaOMEWvB6jqOd1D7Tc/cWN+4cXltLQxr9Jera+mx375+LS6blDH6v4lG95ltc95zO797tM34jxMezfqtbGN23AvqQe61WsG43dyN+v2BSrMryXoa6UFb+OZmt6Bf/Obd5VerNlEVHimQqa1E6GrISYQLsMLawMTBcObgghw73BJ6QdMwDHg2rtHXIlZ0jaR0jfSVK7F681I3/Sf2rwE9qwcA03HZItIgSj6VCNgBTAOTthKqPUGlrRW0DuDvDH30WYm2ua4itvP6FvibFytt/teyhMNKaFq92+Y6i08kw5aRbYmh2FoK1Vxvu+U+fjYVRs/l+B8BBgCMykDM1OUJfQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewBottomLeftShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wUEOwUAUANA37S8JG7Fj5Qhu4KrOJyxEpJTpWHSW+l5ggwOOpZSzP8KkYDQjUJAxmBHIeOORUtphiQ6NKpDR44YT9thipQpkPHExuWONhSqQ0ZsMuKJDqwqM+CDjhRYNkipQkJHx9ccPCKMfJ5j/ZGcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewBottomRightShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wTsKAjEUAMAJvLt4LTsvayEeQAQbbRTEZd1PEgWLCLozUWv1T0ppjR2OYVlB9RaWDciokVJaaQomjHhgQA5sfFT0uOKMA3rkwFYzosMNF3SYA3tNxoQeHZ4ogZOmoiBjRkEJ3P2qvrwAKV0tKePvXOUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewBottomShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAJCAYAAADzRkbkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUCFtj+P//PwMDggACdRDRByKiQIQOiOAHEYwAbGEKQz1zHVUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewLeftShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAABCAYAAAAb4BS0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUCB1jYGBgEABiAyBOAAAB7QChuhy7UQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewRightShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCFtj+P//PwM2DAQJQGwAxAIAxNISj3z8C1sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewTopLeftShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUGBl1wbENwjAQAMD7f8sYlCoN+w9GyRxOgRuk+C78CzcCgUShoZAIS0OiY+CFgY6yNBQGTnyRSISloeHAe875cSNReOK0kUh0HDYSgcLDRvoJhI0L53oFmk+kBA4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewTopRightShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBJREFUGBl1wbEKwjAUAMB7aVAExUFw0f//vC6i1GASHYQuzV0gbOv+Ms5WHQ0VH1S0jLtVRcGCFxaUwMmqo6HhhhnP3Ht/2BARVxS8k7ELDpiSsSN2SMnYHhMiGQuEny/9fRhMYHBh/AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewTopShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAYAAABP2FU6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUCB1jYGBgYARiBgEQoQMieAEB6QBLHwsEZwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPMenuItem/CPMenuItemOnState.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAbElEQVQoFc2QQQ7AIAgESw98nW/4O55BdxNNkB6aEA8lGSXKiqxExNWJuyOi5idCEVFgwCfMdRuL5lRQYICuZSzXvUTTZS8iPuBZeNycgQ41xnaQ268cBTSCc/LLhLmue+7CpRPHZ/z8RLvjA8MnX72R/hSoAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZ0lEQVQoFc2QUQrAIAxDdR9e3Wvsdh6j6wOtWxkIxQ8DgRgNps0ikiK4IiEy5wSLtqnK1onGm2A5P6zqeeDZWxNvU3Xzqe7Z++3Luecwpr6eqziqFPWZicoQjTfuU+YQwfYZlyXCPz68ppV1+vunagAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpiZAiuZ2ZgYLAGYh0GhsA6h44tpzdfeP7lIxML038TCx11x1c/GflY/vz+w/35139uBoY/DCwM//4y//n7hwEEWBj+/2X+/QfG+fuX5ffvv1DOPyAHLvPvD1DZbySZ338QnD9/EHrgpjGxMzP++vr92w+QXUy6StLXjp+5cPnL12/fGe8+fSkXVjMh5Oq9JxqM////ZwQqlwZiIYAAAwAMX1XNMAlUgQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYAiuL2e48+H3f6Zb734yMP3985eB6c/fPwxMv/+AiN9/Yaw/v0FcIOvPH5gYWB2Iy7zvwWdVhv///xsDBBgAJJsuTOBf54IAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ5JREFUeNpiZAiuz2JgYLgCxEeZL+zbukdBXEhmz7mbT5le/WTks9BRd2Rh+m/C8vPXH4afDAzcf37/4Wb58/cPAxj8+8vM8vsPlPMfxPn9F8L5+5cFIfMPzPkN5fwBKUOS+fPnL7IyJKNB9vz89esHOzPjL5YvX799P3PxyhVdJelrzKde/ZbnZvl/YFVz/gaG////6wGxDBAzAgQYAO59XJBTIVY/AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJhJREFUeNpi1LewZWZgYLAGYh0GfXMbh5XrN21++fbDRxYmZiYTGxtbx39MLNwsf/784f7LwMj9988fBhaG//+Z//75ywACLP+BnN9//8A5IKUIzu/fCA4zqgyMw4Cmh/k31GgmVlbWX1+/fPkBspRJVUX52qED+y9//vz5O+Ojx4/l8ovKQm7fvavBCNTDCFQuDcRCAAEGADqxWcjpDiMNAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFRJREFUeNpi0LewLWf88uPXf8Zn7z7/Z3z0+sN/xvvP3/5nvPXk5X/Gaw+e/me8ePvhf6Y/f/4wMP0GEVDWXwamv2Du378MDKra+ksY////bwwQYAAEtTEizRGTJgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJZJREFUeNpi1LewzWJgYLgCxEeZL128tEdWVkbm8JGjT5n+MbHw2djYOjIxM5mw/P7zB6iCkfvPnz/cLH///GUAg///mVl+//0DZQM5f/7AOSwsv38jcZBkmKGmockwgPVAjQYr+wuU+QEErKysv5g+f/78/dCB/ZdVVZSvMegYmc0KDI0sevT4sRxIrR4QywAxI0CAAQBTdF49cw4ogQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIBJREFUeNpiZIAAISBWATGE9+7dO/Xr16+vGTg4OGyAjA+/f//+z/Tjxw8uFhYW/n///jGwAJUxgRggAOIw/v37F85BkWFClkFVhlMPXBkTDw/Pf6DFn0CyzN7e3mKsrKwcUlJSCgxv374VCA4Odufn5w9h/P//P0g5PxBLAwQYADkXPiP8F5MNAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNocxFEKgCAQRdF59dO+WkT7B0EEQRBhGERv1Pk4Zma31lpozokiArk7GmOg3jtqraFaKyqloJwzSilx7L3t7/OcwPUKMABbNDOyQBe/kwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpiYGBgMANiIQYQ+Pr16+u9e/dOBTKFGX7//v0fKPCBg4PDhunfv38MLCws/D9+/OBiAXGggInl79+/MA4jThk0ZSgy+E379evXJx4env9M3759+7B///71rq6ubxn4+flDgoOD3d++fSvA8P//fy0g5gdiBoAAAwDmKUtB/aWHewAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpiZIAAISBWYQQSwp6enk1iYmJhLBwcHJpARjQTExM/048fP7iAsvz//v1jYAEymEAMEABxGP/+/QvnoMjgUYZTDyOMw8TDw/P/z58/n0ACTK6urm9fvXq1/vfv3x8Y3r59KxAcHOzOz88fwvj//3+Qcn4glgYIMADyGjn6SjxcsAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC9JREFUeNpiYGBgcGZMSkr6z/T//38Gpn///kGJv3//YnDRxOAECIQzAw3gAAgwAGRwKZNd4WBbAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIBJREFUeNpiYGBgMANiISBmYI6Pj78gJSUlfufOnZNMQCAiJiYWzcHBocn0798/kAr+Hz9+cLFAOSDAxPL3718YhxFVBrcyJA4TTj2MYEv//PnziYeH5z/T79+/P7x69Wq9q6vrWwZ+fv6Q4OBg97dv3wow/P//XwuI+YGYASDAADufQ795H/vjAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif +Content-Transfer-Encoding:base64 + +R0lGODlhQABAAPcAAP///8zMzJmZmWZmZjMzM7u7u6qqqoiIiHd3d1VVVURERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBgAAACwAAAAAQABAAEAI/wABCBxIsKDBgwgTKlzIsKHDhxAbGphooCDFigQvRtwo8CJFgQUmFjAY0sBIAB4nckyYgIDLlzAVQEzp8eTKjAoUJMipAIFAAQkGBAVQAAGCkQIOKD1ZQIDTpzcfHkiQQEBBo0YtKsUYtavXr2DDih0YcuxXjR0/plVp9qFJhyFttkU4lafVhU2fyp1rEEHQAQMGYvX5U+mBu3wTK17MuLHjx5AZo42McDJKtWu5Jr4ol/NllSXZgrRsNqVD06UVuOSZk4ACxKdpiqZMe6CBATmp5hyQF2GBkQaePtUs1u8A2FMBBwYwWKDhA8SD721rPAFhgc0HJlUKu7Zzowe8i7cfT768+fPo06tfz34jae8lDb4XGdmzbcxE3zMOzXWyfcXxEcRfZpntRd9YKdmEFluT8TebWA6+1VCE082l30EXttdWSzB1KJNbsh0YlQGqucaaa90xFCJxZvl1HV4CsJgYULntlOJBwjmV2AE15maVXwmEp9VhP+UoQIUjssbbQMoFyRxWKD2XkXD7NXlXdgZISZkBfyXAVXZEPYdkYsotKRiUBGkJ2W99oamhUhrGKeecdNbpXUAAIfkEBQYAAAAsDAAVACUAHwBACP8AAQgcoECBAIEIEypcyLChw4cQGxoYkGCAxQQRBRrYyDFjAQQgERRAeKDkgYQCUh58aCABgZcwMWZ8WCCBzZs4Dcz0iBNBwpAIDpo8WUDlSoEFOOrcKXAoUwAGYMIc8LQqAqknqyYkWLCrV5laZx4YkDWjgZEOBVC0uLapxaMIiwpYqrQjRKBLnQKQm/IpUIV6ERoNq7DvUwFSEywl3PCqVAIKyjJeKEDBY8mTFxKkOrkmzs+LGXP1+jWzacJqK4KFqJQmgopsE/jcCDFpXbRIYa/NOjFk07IqE9ZdPBZBaLW+Aeg1ihthaIYH/v4uiTLlc4jRQUoODFXl9bQDfAIMNqlQbvOwAkrChRgQACH5BAUGAAAALAwADgAfACYAQAj/AAEIHEhQgAGCCBMmNKCgoYIBBQYqIEBxgMKLAzJq3BjxoseEBxCIFDngAIACHT+qBCDggEsBBQXIJFjAgM2PAihShLnyY4KGCX7y7Em0qEIBCA6kBGDApUuBMmcytXnQKEEDMqsa1UlAq1WFBrgi+HoA6E8FCWAmqPg1IYIEY62+3bgxgcW2YEcO8Gp0wEiRPAs45SmVKl+PLV8OjDrU8NKFLvkyXniY4ACKcfEinEgxgeaEaykqaDsX4WXRj1cCdRj3gM7RXweYbbj36ecDZxUM/cx7Lt2MdvH+3sj7KILdeAv8RbBX83K/BxNXtpkawF+TA50eiB5VoGGi2hd3F/dOdWV48VLJ3/R4Hj3y71YnFx+4/mJAACH5BAUGAAAALAwADAAWACgAQAj/AAEIHEiw4EADCRIYMEiwgAIFCRQcEKiAAAEFDAceGDAxo8cDIA8U8OjRgICTBA2oXJgx4sORAyteHChgQIIBOG8uHPAQQcEDCIIKHeqTpMCQIVkCOCngoFKGBU7CdKqS5NOBFi2SfPiQoEyMAAokTFhUYMSIPr8aNGATp82rBIESFWq0rl2BApCCbGrUwAG+A6MyFbgS7kGmTwvfLVh1cUyLYBkieNjx8cyMPCMO8AqZZGaIliNvRPB08lmBWQkIFOv2ZkcBXBMsfQg4LIKbrREIvlvzpmzHd+XOpUtS+NypwE0a/qgXOUO/ekUCMCnAucaQtZlWn77SqHaYij1qDU/ZPeN48o0dhwcOMyAAIfkEBQYAAAAsDAAMAB8AJQBACP8AAQgcSLDgwAIDBhQwyJBhwgEJBAhMoEBBAoEICGgkYKDhQAEIJHocabCAgJMiSao8aKBlx5UkHw4oSNEiQQMbCRBEwJPnAAQYEyQ4YHCAxosfDyhdypQoTIYoUS4U6PLlU4Ytr64sMJVgTaQ3U2JNkDCB1a8fc6bsicCpwIdDAaA1qlGBxwJsEczUCkBA06Vi+Qp+aiDqSat8TSKm6nJwQZddHZNEq/WA0MCUB2YksJchArIJgA7MLHejXY+fH46uCFbBRrB920a2rFoua4GuNXZ+mzcl6JkGhHbMTcBtwQN5BxhnqHSlgZ4DFkt27Pcv08HVrU9nuDAydcOOTRoTFlkgq9aoiKtuZ2x+u/r1768GBAAh+QQFBgAAACwMAAwAJgAfAEAI/wABCBxIsCBBBAgMKlyoECFCAwIHSBwg8ICCBAoUFGDI0IAAiBwHDlAwYGNIggZSgjzJsqHDghMpDiyQ8SJHAwdy6jyw8YBEAQYRZKRokYDRowk9CljKtGnLpypVPp06NabClS0LOERgEoDVgTUVhNwJdOBWoAMSJKAoFGOCgQYSHCVQtuDOnF0ZHphLQEFdgUqbLqVKuDDVAlFT5jVcECvjxwTTroUsUMCAhDAn2s2IueUBhwciaxZ5kSTVzy8jjgbg1vTNA38BWE79tXVn2UMJ3j0A0sBlhKo3YsxYdgBfAo4F7AaacuHSuMcTODa4c7HCvUgpGw4smKl2wN29fw8POX184vKPz6NPr9I65YAAIfkEBQYAAAAsDwAMACUAFgBACOgAAQgcSLAggAMHDCpcaBAhwoEIIiIQKCDBgIsMMwIooBFigokdBzpMSFAiyIEXMS4sIKClSwEUERpomOAjgIoKFNTMSTJkSAUEggodmsAnAJMGC3A0etBhSYkDDVgckGDmwpdWBY6cifTA1AEDCwzImTPrwJctQwrQmSBnUaZG1xIgmzOoArMaD0TsCZegAZkFkRKsmICvRgEOYUKE6pHqSbWJF0dEedEmQ5Z4/zo9yjhl4YKOz6JdWiBygckAqFKFSLatgoIG0AqYqTSjWLeuwV5+qba14b7Agy8EOrT4W+EUgdIlfjcgACH5BAUGAAAALAwADAAoACgAQAj/AAEIHEiwIEEBAgwqXMgQIcICAg9IPCDQAIKLCBhqFFjAwEaCBwZQ/EhS4wECKAlkLMmy5UaHCUFOLIhx5UYDOHN6BGDgoUEBA0QKHJAgKNEBMQF01Ml0Z8kECqJKnTrAJckBKVM6tcq168SRXX86lClxYIGaEG/mTCsQJsSvAATUJIgggd0EbA02fWq06FaCTXO6NHC38N28YRN3TZAVZYK/ihtGrRq5suXKAiQmjVzAJ1mwAxEgtdoT4Va4Aw9gBM2y9GbUAGqyZgi581gAqDGOHmhRaMG9A2/jHql7Z8iiQfEqXKoTsV6PdY0SReBcoU6+RTdfdsk8MGSNUKeKK6fs/btGwoYLV+86QAHl7QZPZlWgHf4BBY1Vwv/NOGX9/QAGKOCAra23UUAAIfkEBQYAAAAsFQAMAB8AJgBACP8AAQgcSNCAAYIIEyY0aHCggIcCBh6YeEChxYsIBSCIiLFjRgUgE1T02FEBgZMJMDI8SBAiR4kUSRZouHBiRAMIBiDYuZMkxgEJBggdKjQBAp8mT45EAFJBApA+FSI4OSCqQ4hWB65siRXmRJJbAbgEYIDiSIEHeB7NKtCATrUF2FokSreq3LsKJ7oN+VSB3awFkhL4KxDoWrYJThJQwNbAQ5ZZaXJ9iLDsAcgKGca9StkhxZcKZzLk/FLAZ7CjxXY1i7lAWtBaU3c2PXGzRrWEfRaIe+Atz7Ny3fLEjLd4R6B1ix62WiD5ULkIjBpv6bRvyrsDUIq13hc4yewnGQsYbN5UAXGPUxWfvytAMQHYeA24n14QPsGAACH5BAUGAAAALB4ADwAWACUAQAjzAAEIHDiwgAABBQgqXHhQwEADByJKXEgRgcWLGBEcUIhAgYIBAgckGEBypEOBCggQUECwgEcFCSjKFNjQwMyZBSRuvEnxwICdMlOuFHgApseEMw0kSGCTp1OBBmo+pdkQ6UABB5rexKrzwMmpYCtmvAiU4siSA7QOFMqyYwKYBBEsFYmULUGjCtQqVKmSot6pDb8CbhjWIGGwhg8S5BpRpmGbObtm5RlZomCnEP9OLTCWLM/OGMuG5bnUJGAAnM+WRGAVgACPDt/CJiqSJF2BfAkIfPsWAUEDCH6uVclyt1GQM+0OHGA0ZlDiCosq8P186OiAACH5BAUGAAAALBUADAAfACgAQAj/AAEIHEgQQIGCCBMqFGigoYGBDh8unLiwgICDFDNCHICgo8SECQiIVDAwgQIFCQYOWJkAgUaEEQvGfLmwIUYBOHNepJnwgM+fQA8IGHhAJAGSBhIkeDggQVOJAjpKdSlwgEiqJU+mJChA6QGeDB2CnTgzbMOxAGaWTasTrUCdQ932DPozrtyXPhcOPcBx6leECIwSEGgSZVWWfwUWOIDArgKjWwlrJYjAacuxhSPfhfhxs9nOYdGuLSB2bNmIGMGqLU3QwM6MZ9OytghXrmu4oMfqTO25N0K6Qe2CBe5TOM2oxu8a6IuAI2+EIQkM+K3UpYGpUhM+Fjk9M4ADTlcSKmTccTpBwVS9A+i60rxewXbVpw2vGeF2Ap3lHxavN7d+xc+9VMBKAWYUEAAh+QQFBgAAACwOABUAJgAfAEAI/wABCBxIsKDBgwUNIFzIsCFCAQoISJR4wGGBAxgzOhyooKMCggNCDhhYAIFJBAU2qjxYwIDLlylXyhRAs2ZNhQImEkigUGACBT8RABiQIMFIASeFDhSQsSLDngVFjpRJdePLl1WfYs260qZXmlAJFhigYKpDAwLCHkSgU6KCimQVKCUoIGTFi00xqj3Y8adTqQINJK36s2NMgYAJDuZa0CTjxwZbboWc8KpLypWvYka4d7PBrzc9g7bZ2TNDthOdMsSLsaGBBG13ohXAGWfeA7QJGog9FWJfAGOnnjRr4DbIjrk5/kyAWKTA4ckFMi09kOzy6s6fn1St0npZkNkFHhPYLhNBR+5Dww9EMCA6Y6JGqwYEADs= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldCancel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAB3WlDQ1BJQ0MgUHJvZmlsZQAAeAGtksFLG0EUxr9NEBWLlaKe9yBiIbZr1oBeJEZtkeYQYopVeomzaxJw12V3jQoe/Bs8CIVSKBXppfRo6SnQS3vwIGJr2/9CwYvI9psd0vTQ4MUHb/c3337zZubNAsl82fPWEgAcN/SLT3P6i6VlvfMnNPThPgbwuCwCb7pQyNPSJq6+0804HZW12pjayb0+FwS0FA39FcVZySuKS5I3Qy+kpypZVMsWeYec8kvFGfJ7cm9F8SfJK4q/Sq6Lipx7TjZcq+YCiS7yhGUHgpwlCysQDvmA/NJx1lk/ScSI8HzOTY6Qh2RfpAjUL4CpN/TvtbSlj8CHHDBw3dKGx7ndDPD5VUu7PI97pQ12BatmOi6n9RwBHftRdLkIdD4Ebn5E0fVRFN0ccu1fQONKbPj12MuDaMfc8C1jdWZVHTjhGRjxHf2fVV9ilwG8awDcCp7tAq+zwDAHD34DBXIpi4RpNlP1kFagOzdmpA0zIyfeaThrG7ynODr4vGe7zxf47mPmV/0nxSZb9uxck+1g7q+nFs6XmjpyGIOBNNNEBovqrvkV4xPs/RnhW+NL/a1U/o3Q3op7OLPubfu1SjXUp/mn2yl93hWPUnraMCbxB2AbgwprTB4MAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhUlEQVQ4Ee1US0rEQBCNHwYFUfzs/IGKXsAD6GJMwIuYla6SO2Sjh8gVIskBongEEUWEWQkKOpKIaHwvSfd00hnjZnbz4KUq1a+rO9VdMYwxRl2BiZYFFjC+DC6Bc6W2D/sKPoNvZUwzfyVehXoTZMIMpFa1XOAJ7IEaprRIEViD2QNnQDVZMVo8OzCL4Bf4XoQGz8mBK715eOsgF81c192hBSXKGN+nwQ2Qc1qxBUUXPHIc5yQDwjA8L2Nd+oxxTMRgt8FW7EPBxDlFIlrVF+Ol5ZxWHEAhE9MXCeu7V3SH8CtoqnFF8M+XyhlwDotfB68RTztHEATHpmmeRlF0wQD8M3yBYVnWZaHIn9qtUMaky4PIS4HTt+ufL8rCMaGD1Q6PV6qOHwTYcZ04jl/SNL22bftGiHzfv0uS5MrzvHvE2DQf4CP4CUoM6zx23S7YVCo5Gc43eAv21CD9ph0zzpqxo2ZBdlgdYqcPGNCSUjxsxyIRO2oFFD8h6rlo608ImjFGXIFfJ96OUFGBfFoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldCancelPressed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAABz2lDQ1BJQ0MgUHJvZmlsZQAAeAGtks9LG0EUx7+btBixSI2t5z2IpBDLmjUQLyU/oEXsIcQUa29x8hPcddlsogUP/g0eBEEKpUW8iEeLp4CX9uChiK2t/hUKXkTW7+wQ0kNDL30wzGfefOfNe28GCMdKjrMcAmDZnlt4ldXfLr7TB34hjBGMIoqZkmg6mXz+NSV97OYHNLl1Oilj9RH1cw+7vBDQ4hQ8qSlOS15SXJS86jkeNXXJol4qk9fJcbdYyJH3yMM1xV8kLyn+KrktavLsOdmwyw0bCEXIqXKlKchpsig3hUX+TE5Z1grjhy7JMeG4PBt+QB6XfeFMa18BLz5Qs9nzLR4A+1ng6W3PNzHNdJPA0XbPd30e9EobizSrZiIIpw0dAg+3fP96ARh4Btz99P3bQ9+/2+Xdv4HOjWi57UDLQrQTJvyPtapZRQe+swZa8EZ/Z9WXQGUAnzoAU8HcBrCTBia4iF4AeXIxjZBpdofqIaXAYHbKSBhmUh78r2Ytt/hOgclv+qhiv5nn/JgjVnVfFrqMLKZgIMFhIokF9Y7cxXSKfT0jfOsctz9Kz5/mVdaC/uRWnPduo1b39Ax/cSWuz9rieVxPGMYM7gG5lX3sSVNlhQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAadJREFUOBHtk7tKxFAQhrOKilvExgtoENRGUijEwsVKYSEPsG/gC8RXyVOk0idIYSexEFQWbUyhEfHWZBEvTfz/JCceyexupdUOfHvOzsyZTP7JMYyR/bUCjSEPWEB8FSyDOcD8J3ALYvAIRBtUeBMnHDArnjSMF/jPwLkUH5ec8G2AXWCCftZEwALvoNb5mHCKr78Fphhrt9uLXHXTfMxhLs/8MqljSrDOLBZwXffAtu00iqJ7+jzP23YcZz/Lsm4cxz242DnXBFQmFd5BdIYZPMiilmV1uLZaLWytTpIkh0EQXFdVik1X/y8V3kPCRJmUsVNV3DRNG0WPfN+PEM+AGv4k9qflmXyRNNbj6qDuY0GaFCsi+JU6XoGfUuQdUVP1+mmaXpWy9PAmSlPmPYChUrAoL0SDw+OgqClfX5dFGx47vwTqQdjKHX/BvwSaHB4L6INicfrCMMy/EuS9Aur7Birrp5O6IPm3XGUXG31on3Adg4si9PMracwob9IHoCzTgMYm9KK80iegVhS+wZNFnDdqDfDqzgPaM7gDN6B2leEb2T8p8A3yHYy8BAVcaAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldFind.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAABz2lDQ1BJQ0MgUHJvZmlsZQAAeAGtks9LG0EUx7+btBixSI2t5z2IpBDLmjUQLyU/oEXsIcQUa29x8hPcddlsogUP/g0eBEEKpUW8iEeLp4CX9uChiK2t/hUKXkTW7+wQ0kNDL30wzGfefOfNe28GCMdKjrMcAmDZnlt4ldXfLr7TB34hjBGMIoqZkmg6mXz+NSV97OYHNLl1Oilj9RH1cw+7vBDQ4hQ8qSlOS15SXJS86jkeNXXJol4qk9fJcbdYyJH3yMM1xV8kLyn+KrktavLsOdmwyw0bCEXIqXKlKchpsig3hUX+TE5Z1grjhy7JMeG4PBt+QB6XfeFMa18BLz5Qs9nzLR4A+1ng6W3PNzHNdJPA0XbPd30e9EobizSrZiIIpw0dAg+3fP96ARh4Btz99P3bQ9+/2+Xdv4HOjWi57UDLQrQTJvyPtapZRQe+swZa8EZ/Z9WXQGUAnzoAU8HcBrCTBia4iF4AeXIxjZBpdofqIaXAYHbKSBhmUh78r2Ytt/hOgclv+qhiv5nn/JgjVnVfFrqMLKZgIMFhIokF9Y7cxXSKfT0jfOsctz9Kz5/mVdaC/uRWnPduo1b39Ax/cSWuz9rieVxPGMYM7gG5lX3sSVNlhQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAZVJREFUSA3tk0srRVEUx69XRAxEMpYo8krKkAEjg/sFTEx9DwOfga8g+QZSHqXEQHkr8hh55f36/dxzdOice3WjFP/63b332uuutdfa+6RS//qTHSjIUrV7PdABjYHfJuMKLAbrLw1JSbQPQRqKoBDUMzzBFMzAC+SUAeLUi3EYrmEOpmEhWNcxtsMxHEBOFcd4WEU3uGdgT3wHnnoHrGYQ9LFtrrMqbEPUySRN4LgEl3ADt8FcW+jDNLeSKgmTW8FjJIz3YTKlj7TACHzWBIY1jWGwzw62RXWCp45Km9rODG+BDBj1m2T9lkCfuIs3cQX4dGuhBM6hEvqgH9yfhQ3wrk7hELrABKvwrmj20KjNgGkYANtlm5SHssX67MMYXECoNiYfErgRV4l2A+/BGRiwCkzkxzgP1VAPzbAM96BOMsPHXwMkyROXQymEp39g7gFMMgo1sAvj4CuMVVIlOvv+PaHPV66C0dfleh1awYq24Ai+VXagDBrAe7PibF1hOz8Z1FaaIOlTyC9yzL9+pIKYPL/A9AoeHk3/hvvtQQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldSearch.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAB3WlDQ1BJQ0MgUHJvZmlsZQAAeAGtksFLG0EUxr9NEBWLlaKe9yBiIbZr1oBeJEZtkeYQYopVeomzaxJw12V3jQoe/Bs8CIVSKBXppfRo6SnQS3vwIGJr2/9CwYvI9psd0vTQ4MUHb/c3337zZubNAsl82fPWEgAcN/SLT3P6i6VlvfMnNPThPgbwuCwCb7pQyNPSJq6+0804HZW12pjayb0+FwS0FA39FcVZySuKS5I3Qy+kpypZVMsWeYec8kvFGfJ7cm9F8SfJK4q/Sq6Lipx7TjZcq+YCiS7yhGUHgpwlCysQDvmA/NJx1lk/ScSI8HzOTY6Qh2RfpAjUL4CpN/TvtbSlj8CHHDBw3dKGx7ndDPD5VUu7PI97pQ12BatmOi6n9RwBHftRdLkIdD4Ebn5E0fVRFN0ccu1fQONKbPj12MuDaMfc8C1jdWZVHTjhGRjxHf2fVV9ilwG8awDcCp7tAq+zwDAHD34DBXIpi4RpNlP1kFagOzdmpA0zIyfeaThrG7ynODr4vGe7zxf47mPmV/0nxSZb9uxck+1g7q+nFs6XmjpyGIOBNNNEBovqrvkV4xPs/RnhW+NL/a1U/o3Q3op7OLPubfu1SjXUp/mn2yl93hWPUnraMCbxB2AbgwprTB4MAAAACXBIWXMAAAsTAAALEwEAmpwYAAABc0lEQVRIDe2TSytFURiGj0tyLxIxlaIUA8WUwkz5A36BPyI/RvgDBsqlTEwU4gzUGcstd8+Tteqotfc+nciAt57zrb3Wt7613m/vUyr96092oCHHtWvTMAEjIe+UeAwH8B7mCkPeIUvsXoYmaAyV3oivsAHbUNNBFkhphskVuIdd2IT98DxA1F0FrqBQzYkMbz0Frll4C55AXYBuFsGcw/BMyFZsQ3WGLRwFo72/hYeAY+diDsNipZxYIB6uA99B7P0L4+jKHHMLFYtVJ1rQtqjJz/DlN86ZU9MhqRfvxg6wWD/o9ga6YBbmwPUdOIPokmFaqZvorhP8fBfAFtky5aU81H1lWINryFXKiTezaBksYMFucM6b70EvDMEYHMEjZCrlJCZ7AdvSCo7NfQYP64FV6INLWAdbmlTKSUzUkUX9fP1T3oVx/JxPeB6HQTiHCnyrdKXDYZiHdsjrCsv1yaIt0Aapv0J9VTN2/YiDjLN+efoDgZRGxg70NQUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyBottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAARCAYAAAAcw8YSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCFtj+P//PwMDmQQQ2IAIDRAhASJ4QAQLAM+wJGk6yEDYAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKtJREFUOMu10r0OwjAMRtFrCIiBgYGBgYkn5mERtOmPWWwpShNEI7BkdfLR59QBCMABOAIn4AxcgKuq3vmiAj+ovyBqPVuvQrQAjC1JHJgMGNYgpQQD0Lesk6bogVcrMgIR6IBnyzqTrREtxWNtkjlBOmALbFof1teRlmNLEQdURG7A3jpYe0qpIenN+J/aZcMOSL4OH5CYDC+A2sX6VwySrKkhmmFkCKVhrzeOxUzF8ZZO7wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyBottomRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALFJREFUOMu9k8sOhCAMRSHhs/yo+ehZuHBhDKP4wE4nKZlaMFoWkpxgeJzcgjgAMHeatfaF3RtpkQ7pEY8Ed8tw0R6X7AQQVZKtIAKtZCVRZCJ1kpmJDok0kolEWRqNZEQCsrA0aomnNAuVFWvKGViaJNlrkoyFcsDhm2jYQqDJSAs32vTjw76zM+mEJIm4bDX/6y3eTi9iS1GSRTF2+E98QcJlXCrHTEoSTg4STsTZ/BcCN3bqE4blmQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAABCAYAAAA4u0VhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCB1jYGBgYAFiHiCWAGINILYB4hAgLvj//z8DMRgAsZ0fM9irjXgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAABCAYAAAA4u0VhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUCFtj+P//PwMxGAgKgDgEiG2AWAOIJYCYB4hZANHCHzOD2AJlAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyTop.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAARCAYAAAAcw8YSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUCB1jYGBgYAFiBh4QIQEiNECEDcP///8ZyCQAal8kaTS8tF4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyTopLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJVJREFUOMutkgEKgDAIRbdmbY3o/nfrMGuBhjODlIQPw/D1rEEYKyrn+PL8LlAGeCal94CBeMskkjC8FzVIFICE/SszBgRsAIGwSDi0YAo7g4C9QgAHck9trR3hQ8l1CFJ7ti8AbsJXKQjZLRAy4d9j9ZjIdcjGBaHfm9HGvA7dAbof2Wqi2cyedTQjs0lQQC6Iq36BnNGBBaWEiui/AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyTopRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALBJREFUOMulkWEOgjAMRjscgoYYf3gF738Jr2SCiqsbaUlTC7GzyQuD0MfXEgEggl1onK1ns6BfaUZFUvfL+0UyGBJuYt5EUiAnOW8ISuOUeRETwZVYclES2Vx4EiNdg/5oRMQb/FAhhKsQyMSrf8aqQQh4R0UaPJKTMeos8yZ5EK3YjyvJMXPP7GkNDe/IIzlkOurZ1Uo6GoNTNDXjtFYKb5KvBDXjaAHUJNmM+Hd9AEI6RFQh0+dCAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightBottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAJCAYAAADzRkbkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUCFtj+P//PwMDggACdRDRByKiQIQOiOAHEYwAbGEKQz1zHVUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightBottomLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wUEOwUAUANA37S8JG7Fj5Qhu4KrOJyxEpJTpWHSW+l5ggwOOpZSzP8KkYDQjUJAxmBHIeOORUtphiQ6NKpDR44YT9thipQpkPHExuWONhSqQ0ZsMuKJDqwqM+CDjhRYNkipQkJHx9ccPCKMfJ5j/ZGcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightBottomRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wTsKAjEUAMAJvLt4LTsvayEeQAQbbRTEZd1PEgWLCLozUWv1T0ppjR2OYVlB9RaWDciokVJaaQomjHhgQA5sfFT0uOKMA3rkwFYzosMNF3SYA3tNxoQeHZ4ogZOmoiBjRkEJ3P2qvrwAKV0tKePvXOUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCB1jYGBgEABiAyBO+P//PwM2DAD6GxKPgLbV2gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCFtj+P//PwM2DAQJQGwAxAIAxNISj3z8C1sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightTop.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAJCAYAAADzRkbkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1jYGBgYARiBgEQoQMieBn+///PgI0AAMt5Dzxv9Xo9AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightTopLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUGBl1wbENwjAQAMD7f8sYlCoN+w9GyRxOgRuk+C78CzcCgUShoZAIS0OiY+CFgY6yNBQGTnyRSISloeHAe875cSNReOK0kUh0HDYSgcLDRvoJhI0L53oFmk+kBA4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightTopRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBJREFUGBl1wbEKwjAUAMB7aVAExUFw0f//vC6i1GASHYQuzV0gbOv+Ms5WHQ0VH1S0jLtVRcGCFxaUwMmqo6HhhhnP3Ht/2BARVxS8k7ELDpiSsSN2SMnYHhMiGQuEny/9fRhMYHBh/AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSplitView/CPSplitViewHorizontal.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAKCAIAAAD+RXMgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCFtjWgoDTKEwwPQPBpj+wgDTHxhAYmGTRYgdggEAPLVN4i1E+ZUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSplitView/CPSplitViewVertical.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAoAAAADCAIAAAAlXwkiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCB1jXLp0qY2NDRMTEzMzMwsLC4SEMNauXctIkTQAwg4O0avWgU8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelBackgroundCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAYAAACaV7S8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUCB1jWr169X8mZ2dnBqZ///5Bif///zMw/f37F1kMLIsQA7MQXDQdRkZGjADPODEixZK7iAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelBackgroundLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAASCAYAAAB4i6/FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUGFdtUEsKQyEMTCBuBXe9gDvXPU+37xKFXkev6Oc5QoJtHYjiTDJJ5DEGlVJeRHTNeDIzgZOc8zuE8IkxkveeTGitXSklcs4tovdOgMzHQ0QWiQBQJchQArdZ4Zh2S9ghtdblq9kmgDwKsEGARIKKS9ARd5gV8DUumh+n2psDtgfIYwXI/TtM0Iq/PU5TAfxrobgByk2US+DqkeEAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelBackgroundRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAASCAYAAAB4i6/FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJNJREFUGFd9j8ENwyAMRe0qHLl3CNZhiEzRMXrtnU26AjOAxADg5KMa0QjlScGCh38MhxCEfojI9yxv7/2HU0rCzF2UUijGSDnn16O1RvhqrWStJecc9vt2tiNCo8gYg/ocQuM0YUMEDrFRupgPFFxeihEF9B+gd8xT/QksOpXWIa4MMd8Gy3FH1EosO8Ct4OsblAPXUJQLU51iKwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelSelectedCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAIAAAAVNSPrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUCFtjys/PZwoKCmJiZGRkAgFmZmY4jQ0jyyEBAK7qAuAYeB3qAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelSelectedLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAASCAYAAACeomSBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUCFuljbENwCAQAy27ov49aJnvB6FkrWcPmk9FFKQoTcrzST5mJsYY6e7J3nvOOVFrBSMCrTWYGbjWQikFJEGSkARJoKS9vpjfcF8f5ug86h9wATADFmAXDSbCAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelSelectedRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAASCAYAAACeomSBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFdJREFUCFuVjbENwCAQA637ipo9aJmPQShZC/ag+RSIAhFFSnk+y6aU4q01d3eRUtIYQ7VWJ8aonLN67wJQCEFzTmFmMjMBywArOMyGw/yB1+n7Z9e+4QHvjBZgBg89KgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelsViewCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAaCAIAAAD5ZqGGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUCFtjvnDhAnNmZiZzRkYGHOPio9MwNoyfnp7OnJaWxpyUlATGcXFxzLGxscxWVlYA/CwgVtHWuDgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelsViewLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAaCAYAAACD+r1hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAORJREFUOMuNUcENwzAItNv8K+WbAbJEv92s367Vf7JCvhkhdgpVziKY2EZCNvYdcNDt++60zfPs+N17P1D4ofuTzoFi1znDjiQjnV8C9QzkN3aTcNibvEfAJDaTcHy+UA0Vai09kFXqLFXI7pcaZBuadCkaJF25NKWsUpMGTSpN6UQG6bIluV3EVQ3NY5Wb1dMqarBI1ZZ0xaaWqlOyFpb2oNcPm6apSYO3hMO1Bi9PScAZY0wECf47fyIr7hCdgfEG4Em0Ab6xb9uWsjIRCbSGRAAwhJBIcg8nMPl9WRa3rmu20B+QCNBalqdZ1QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelsViewRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAaCAYAAACD+r1hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPVJREFUOMuVUrERgzAMtI3KVKHMELBAShZIk0FYIaNlAZowQbYAJzJn+WRjKeHvfBLwr5dkYJqmD8Ig3tbaJ8Yx5PGd6brOcAB9QFwwv2McUHjF8zIVAH9AUghnPA88t6ogkjKg02AEQCRQdcpPlIstcZEGqFRXxccdeMXS7a+1EvFQS9ocwNspXdS1Sq2JgpIkibIt8Q2JM2jbUWeotVSdQRpObYkTqEDf978dijl4+USCdV2zG2YulpEtiTaBcy4bNEbHKicReO93/1HTNGVLSQTLsmQOlCOCyseTRFtLwYXfdIRjlVOEeZ53q2vblhyI6GmGL+DHprPdSa8DAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBackgroundCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1jeP36NQAFhgLCPZRjjwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBorder.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1jmD59OgADjgHGSFRdpwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBorderLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCFtjZGBgYIZiVihmB+Hp06c/BAAH7ALGIwf97gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBorderRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUCFtjnD59+v/MzEx5BgaGn1D8G4r/AgCTpQkFeqUzkQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPToolbarItem/CPToolbarItemSeparator0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAaCAYAAACdM43SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEBJREFUCJl1j4EKADAEBRmb//9im9VTmim6TsIgInZ3GQEnL0QqYP5hRRFAMdabvpXj9pi6qxjFzXlq/SKCYXgDF+AD5ACr1RsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPToolbarItem/CPToolbarItemSeparator1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAYAAAD0In+KAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABFJREFUCB1jZGBgMP7//78vAApVA38fKzIUAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPToolbarItem/CPToolbarItemSeparator2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAaCAYAAACdM43SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUCFtjYmBgMP7//38DEwME/Acx/iMz/mJn/APi3wQYf4H4F0zkJ4rIX5gISVL/kNWgiqDY/gfm1D9wEQDwSTQ2I/IFQAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUOMut0ksOgCAMBFAHem1WHBwTVrXpDJ9o0gBKn4MRY4znzwunDb33ObbWcAvij4S47cFmA8QauxtZIxv1mxZANp9rHKRh9dmHBZaBReEMjFBJ5imMzSN6xFeEt74VwyJME0bMg9XdqxkKklKlqq6WYJaOYRGWYHZMDxhJKsFCQHOguWezT/1zKp0lKSWYJbQFOIO8L0oHneBhzz8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAATCAYAAABRC2cZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACVJREFUCJlj+P//PwMIMDKBSBDBxATjglnMqAQLnEDjsmBRzAgAI2YDUG/9aHsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUOMutklEOgCAMQ0fh2vxxb4yJmrG0QNQl/ZNnuw69d/tLSGRaa/ZGMDK11qRkk8GlJCR/pGDJQbfBDAoCggBJqIdlAlVgCfXOshOLrKCDu/OjEmBZuKSg6CwvgLMyBnfMGWweWTZ8w0qArmIacxeXvxuTwkFcqVPBxN0A+1KCbLMsIHRXamewdUR2b8/R7jyWbmKbO21JN34Oq/BktCvK5iYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUCFtjZGBgYGSAAEYoZkLDzGiYBQ0zI6llBAAGtQAx0/UgogAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA1JREFUCB1jYGBgMAAAADUAMcUHJsAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABMAAAABCAYAAAA8TpVcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUCFtjZGBg0Afif1D8F4r/oOG/SPgfGv4PwwB88RIDhNxONQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKRJREFUOMulklEOwyAMQ+O21+aLi0/t6JQZJ6QbUgRK8esDATODvQdGbVT7mI+xPlztrs49QAAEwXzwMRCBIQPv9f3tymXAlSXbpYbqLhk6HVcBTRhmUN//AK1gycfffgWubL9gEdAeQEHACeRh6m0iAIWGyjJ6UqokqHIFED80b8jACGoZLINUracMA6q98GQqnPWXmSxYgf+3+Ry992turcnsC77uBJ8gKQLbAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAYAAACaV7S8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCFtjYmBgMGACEv9BxF9U4g8qgSaGpvgf3BQwiwEAxvcQJujA9GgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABMAAAASCAYAAAC5DOVpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUOMuVk0kOxCAMBPvg98wn+XaMc4mRx/EWpBaLoFTEhAD8AAiADYCfXC5sovv0jGjITpIgGNv+NDL07eKBIcCukVOukhmfXmG6mQeA1JKeD+zN2IGlAb9gX66KDMYNbFLt0My+na6yYTUvs+gNBbVdek3gbddBznitJRls+he0ZhhC/qwsDAEMHSQy21l1JhC1Ulj1EFMLC6nMyhZBLOzTgardIdHIhbP7OXcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindowResizeIndicator.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF9JREFUKJFj+P//PwOx2NjYOJIkxUDalSTFQMxPkmIQnyTF0tLSASQpBtLOJCkGYlmSFGP4gZBiBQWFIJIUw+OBWMVALMkABHZAhg1MMQcHhxeQtoMp5uLi8obyJUF8ACitf5AUaj8yAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/empty.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABBJREFUeNpi+P//PwNAgAEACPwC/tuiTRYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/FIXME_ImageShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdNJREFUeNrt3EFPwkAQhuHdpYB403jx//89Y9SIiNAus8msTGtbjCFe5p3kS1tSDn0y3Wwv0+ScA/X3aiC4EmCMsZxvJGtJ0kQTr5VNOkkr+ZLs5O092g4seA+Se0VcShYa74CtgdtLniVPkncLuJLcSR4lt5Ibg5icItquO5Suk2z1t7fhGpj0eq14GwVsHL/G9dU9aiPV82rSA4x609Jkpfckc48nvKDdVp+/4i3GAGsX1nWvMfHcgRWvNTZpqgNr0sTR6xqYBjuTyX1gHNm6eN/KxJFj/O1GOl649rAGzj4/XyJ8ygEIIIAUgAACCCAFIIAAAkgBCCCAAFIAAggggBSAAAIIIAUggAACSAEIIIAAUgACCCCAFIAAAgggBSCAAAIIIAUggAACSAEIIIAAUgACCCCA1PUA84Vrb5UvAeZBwuDcI1ge4PU8mgm8LvRHv5Wj5wmWnUme68A6L7TkGM7DB5Pj17ZTi9bkG3LYgXXYaslCf28DAxjrBN+DwfwB2OkNewWzw1e9z1CtjfWpOYwBVuUP07Z24KrnNbAuaQVvp07tELCovugfVgbPY/fNdWHBe9XzHuBeAbeBMfBhZnvXmqXuDFjmwmubUnzK/V+dAO2XkLvQMyBAAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/GenericFile.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFW0lEQVR4Ae2bPUhsRxTHZ11X12/UKCpEiDba+dWksbFPLeneexYpgggvXUACNkEwsX+VH4UQsBBSCmktg00I8gKKnU8xUfzY1c353ezxLebtvWfXe90vB45z986ZmXP+5z9n5q53Yy64xEQlLtKQrYN7PE3jTrrfiFBHXuoNM2S2t7e/mpyc/P7i4qLOoG9WyWQyLp1Ou1QqlSvp09PT3/f29n5ZWVn5TQYDjMhKEABEP3F9fT3c29s70draGroh9/f3D87f3t66m5sb19XVNdXT0/P1yMjIu6WlpR8ODw/PQp84O2AQAKglz8/PkxiGRFHu7u4cQMAIZUV9fX3T8PDw/OLiYvPc3Nx3Mu95FHNbKB0XilqAKtq+eDzuEHHaJRIJTxgMRgwODs6tra39JB87ip7Ap6MFAJ/u4TWp89QIgMCGy8tLNzo6+np9fT0SEMwAxGIxF7XgtDIAEOrq6pzkHy9RTk1NRQKCGYDwYu0/Uu5SAADyw9XVlWtra3Pj4+Ohg2AGIOro6/g4rcuAmvsKQEdHhweC5ISfBcZQcoIJAIlKRg2MuoYfgKBMoAaA5uZmBwDIxMTEq7BAMAHgT9pwWxVgZQIAcFCi5hzS3t7uCSBsbGw8mQllBQDOa1EgWAZ6RgAUQIAFADE2NvZkEMwAqEFR1jjP+DiqovPBAAo1AHR3d7vOzk5ywqvNzc2it8hIDziexQX8wVktuY7DgP39fe9cwDZJaWho8EBqaWkhJ7ze2trKzM7OvpWmgk6MZgDUIG/2CP9w+NG5iDYO88C0s7Pj5EjuXaOTTCYdzsOG/v5+19fX90Zygpufn397dnZmBsG0BISOz7YLqPMsAQAg0k1NTTwgOXlA8mgP9dkV0OWgdHx87A4ODjgrvFleXv5R4tMi8pFOPgEzM8BnjFCbFACNPpHmEETUGxsbPQaoDjVAkSjRhykDAwPfrK6uvl9YWFgVw9IiGT8Dyw4AjMUxjT40JwfABB6OcpcIevpZ+7FkhoaGvp2Zmfl1d3f3D7n/dADEmIclwERRFpyiAAARpxBhgOBYjMO6Q9CmW2TuI7X0G5yenv5SAPgTFfTyFTMDMEyNyzdYWPdxUOfjmuhDby3aRg0gOE87wnXWzs9EHwQ/dtQBcuqyBEDtgwUAQJSVDdqWddL7CAicFgGAOssQ/Q4TSuVdBmYAdOLnqNU5jTAOPS7apvcBCwAUNMkFOP7/jtohW5sAwAAmVMMejRHJx9y5iPCnSq4O7WojOQPhFn/8igkABlAQ/AaLqu2xo/nmyVLfcz7LgHyqD/cDKYKmGPDpEDwMUz4XgMBWmGVAoGFmBii9AkcsAwWcFyAC6Y+pJgaUgU8FmUCwBAQTa00M0PVvXYsFWRuBctZOEwNMAGBjJS2BQgJlBkBBiCBgJR2yKnNAIYhWLQCSt8JNgqBKMqyUYrW1cjyKCPmXJBgRsCUfVrbC8HNAIftrqRF4yQHGCNR8DjABoHtqJS0BIwGq82nQ6jx6NX8OqHkArDnAY1Ul5YCa3wZDPQhpUqkkBqjNQXXN54CaB8CUBJVGL0tAkaiiuuaXwAsAVcTmolyxMIDXY0zfrhRlQYk7WQAosYnRTl+1AOh3GEHwmc4B+mBRSecAtTkIgKplQJDj2m4CQCJv0tNBy6G22mxZApkPUo6Ojv6SV9AS8sKS6f/upQKBHUtekUmdnJx8EBt8X5LExiBnaOfnop+LfCHCy4f/vbgvF2Va+M0xzr8XORK5EMm7jQcBIH0dL+i3ibSL8OZluS8Hos5PXP8W+UckJZK3WABAB6eJvEU/72TP2EDEYQJg5I3+M9pTvlP9C04LfFSu/LkzAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUDTheme/WindowClose.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzZENjA2MTc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzZENjA2MDc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0eKROgAAAlxJREFUeNq0lM2LUmEUxr3qpDg2w5hfGTONobaoUYkICZnBFiGtyiaImZ1/gZtcuInoD3Dvol07Wyu6ioRahUJtLJJyIePXojTN1NvzyLkiFcymLvy4556P5z3ve+69iqqqun9xKf9VKBQKrdfr9fvT6fQq2KHPaDR+Ae8CgcCLWq02PE1IcTqd4X6/n5zNZnz+Cn5IzAQ2DAaDzmazPWu321U8q38TUlwu100kHMM+AV3wDfyU+Bo4C+zgvMPheI7ciiam11Ti8fhWt9u9C/MT+Ag+g5aInohN3wfGe73evUQiYVvuhR0BPbZEkUfgAbhdrVbVYrH40mKx7JNSqfSKPsbAIXPtdvtD1lLDKHrG4XB4UVblllR0997tdu/n8/nHTMBCUfrkzJhjGo1GbtaCibY1A6Yzx70vBzw6Ojp60mw233o8nluENn2IjeXs+pPJZCpCy470iqJwpGS0GJHJ1MWEZtoR0KZPRHh9F/SrU1tH63c6nU4TdoeOSqWSt1qt4Uaj8YbPXq83MhgMqtFo9FCEMDjHNiZXgD3QtqYGg0GupgC2q1Ck1Wq9TiaTTwlt+iRn8Ur4/f4ebvPVqZ0pl8s7SDyA6xIbADdABASEiPh2GTebzQeFQmGXtYtdaeMHG5lM5hqS9sAFwQW2BNeKfy+dTl9HzaY2fk2IrAF7LpcL+3y+K1K4yfMTaLsYy2azYeQ6tG5+F+LBm8A5jNqXSqXCsVjsMoq3CW36GOOCkqto9X98tPJKmKULs3xjOjngsbwiYxmKetr/SC+CxpXvcS7F0+WkVq5fAgwAsK9LC3k6I+YAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUDTheme/WindowCloseActive.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzZENjA2OTc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzZENjA2ODc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ehr59QAAAxVJREFUeNqsVEtLG2EUnVdeJiYmJDG2kgS0TUkUobiToghCXdUSspAqdutj51ZXunUndluQ0oV2U7rISukPsCA2GGktMaYk1DTvSTLJzKTnykzQrh345pu5r7n3nPMN2+l0mIe4OOaBLoFup6en+jtLa2try3Z0dBRttVqRdrvtJ4fBYEgbjcbE9PT0p83NzRpMHW0xY2NjDEujaYVYi8UixGKx5+l0+i3P8xwSaxzHtcipqqoRhW2Koqh+v//9wcHBt0ajIVOxe4X6+vr42dnZF7lc7o3NZiu4XK4KbBI6UagQOuNLpZKpUCjYa7Wau7+//0M8Hv8Km0KFBH2mjY0NF4rM9fb2Xg8ODpYDgYDqdrt5s9lM4zLNZlPO5/PS1dVVNZPJiNlsdm57e/v72tran9txNNa4YDD4GsHhoaGhGyxmfX39XaVSSZ6fn3+mgHA4/AofCe3s7CxfXl52sLwY/Rdg+EiT6x0JoigGnE7njc/nq3k8Hifa/22325+NjIyYKcBqtQbJ5vV6KbaI7hiM6dMIa+n087IsqyaTqYhkEUs5OTn5gsQsFdCK5MiGrlT46xi5BPBlnXm9I5DDiWi1jiQFYNeRUGVZtqtWPKtkA+gUIwmCIMNW17XYFSQFwSmhWBN7IxKJxJDwCDhlaNEz2cinxUhgtXpPkKQFYJFPpVKMJEn1YrEoYsxAuVz+cXZ2FqeA0dHRlw6H4wn5AEMdOFmHh4f/EtB3WTMeHx8/Xl1dfQrnDajvgT2ALq0DAwMNCgDdlmq1KgKCFOhvJBIJz+7u7s+ZmZlrAlvvSJ6YmCguLi6WDw8PjShQAnsSdk4XJJ55gKtCaw1oybawsFCdnJwsUG63I1J2KBQy4t0F6fv39/cVJJahrTYUflsIVPMY3YCuHNFolF9aWroG2IVkMindUzbobOOLpfn5eWVqasq1t7fnuLi4aKIwMcOMj4/34GPmlZWVGsYt4uxVAHqry+qdQ0unmNUIIBFatd2gxbbppGCJ2i4jr3v6hbv/FM3RhoPGkbSiukRUDQ8qoP7/P/onwAD1HZ96Rg2qRQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/minus_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAECAIAAADXmFKkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUeNpiYKAHYPz//z9+FQABBgBgSgL/1o3U+QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/plus_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAMCAYAAAC0qUeeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpi/P//PwMyYGRkhAsA5RiR5ZgYSAC0Uwxy0/+BdwYLlqBjQAo6VMVQdyOD/2h+ooeb0QXQ3YkMAAIMAKADEhQiIamgAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUWMPtl1EKwCAMQ3OeHc+7+539TNC6QZWWfMxBYCjSh6YRQRJK4QDYgVIKe6UD2IJPUZLk21y00BdsRd/+M74BoAKswATQxqN1ACYAqQekXSDPgdUF0YDY2bbII8Kq0SJNOgBchEsWwLvO6gB8BpHEA9IukOdAVsJ5QZGZ856jQtaN5zHrAADEygLY+QOwHUQpHpB2gTwHfv84vQHcG1BmjzmkMgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider_button_h.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ5JREFUWMPtl1EKgCAQROci3cl79rcXtAwE3YysdpmPVngQSvjAcSLknMEEIaBHSim3wHvoDQsicjBaswbthnXT0bMHncC6x6GgBeq8NSFwEqBmgHoL6D3wtTdciugOyyPC06BZhrQTWARTaIHZ9zQhcFlElAxQbwG9B+iF5dnzM0cFry/eTFg7AcAWLaDXQ+B1EblkgHoL6D3w+5/TDQIL6kKVaIANAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/standardApplicationIcon.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAM31JREFUeNrsXQd4VFXaPpmZJNPLnTs1jRIUERtiaCoEWKQoJaEJJIqhBsVC1RWxrO6669pd3fq77q6666pr76hIh5BAQgglkAbpCSQZAqTMf8+dc29uJpGamTPle/N8j5MhJmfOPefrJcLtdiMAABCeiAAGAAAAAwAAAMAAAAAAMAAAAAAMAAAAAAMAAADAAAAAADAAAAAADOCC/0BEBOwyAOAD9MTdpc4AfvfRVniSgYVeHBXBNvgHq6YMo8oAZPAIABIYOcoh/wWEARSwBWEvgSIk2tgD/eIchkOl5Q9w7z8heR8cRSEK0AAAwjmQcyrl/GgDg79/4P7n/88M5wMYgB/gBqJERPrjM6B46p2v73FY2XhFZBSyW8wG1hGTQjREmefnYL98Q2FuAkAUkjrkHEVFKdWPmsxm/g0DY0ZRlVWPci/fIT9zFp4TaACAEMLqqcMjyOWPXPWHd6fZWCYuWqXmpZJKrUb4+5WvviNoAXLy8wBgAIBQk/5GszXTaGY7/QP+3mSxLeVeRpOfAwADAISQ9Ocdf8t+88fRNqtliEaj62Sa4u/x+9y/Jwu+ANACgAEAQkz6O3v3W8WybLc/wDAMssTEz8FmAmgBwAAAoSX9FamZa/vpDYYhar2xW/+01sggs8Wagn9O0AJgB4EB9DAgFEQh7ISfe9Q1w0eusbLmcz4du5VFVyeNwL6AqA4zAPYRwoA9df0hvORvYA1AMXP5o33NZkuqyWI75w9rjWak0hlnjJg049ebP3vvDPdWG/fM4KmBBgAINqyZNkJQ/6OuumnEwzYre14JJZfLUK84p3bktLmZxBcgI78HAAwAEIzSn5PmVqVae5vOZL6g/wknBmkNxpnIExJUkN8DAAYACELpH4mleUKsUyuXyS/ITFUoolCsw+5c+erbaaAFAAMABLH0Hzl1jlXPmDNMrOWiXFV8YpDVsRB5nIEQEgQG0FMAT7CvSSr9h02YlhbvtOtk8ovz/+I0YSvL9F/y9GtCYpDc83thfyEKcDnXH/zJ/gKf+KMzsQs5uqRfwJgtyJ7QdzH38juOWpAnIgAADQAQqFibcrNY9LPy1XfS45wOZ1R09CX9Lq3BiEyMeey0xSshMQgYACDIpH80Y3OuMPIlv5eusuLQ4TXDk9cQX4CMMBgAMABAgEp/Pu33/uffnGK3mmOilGre7LpUMpqtyGBiUoZNSLEiCAkCAwAEh+1vtscuNjJsj/xCu9WCklPTcHpwJGgBwY0AcAKCF8kXeDj1FlH6L3nm9dF2K5uk1up65HcbzBZcKJTBvXyGo7MctbvhQYIGAAhM6W+L673EbLH0nNRQKJDTZtU9+NI/0gUtgDAcADAAQAA9W0XKktX9GIYZq9H3bKt/nB5stsc8hCAxCBgAIGDV/6irh41cY7WwvKnVk6RUqZHDZnHe99zfphItQA5aADAAQGCAT/udcd8jfVnWkmpkrT75I9ipyDrjFoEWAAzgMgDpoD1JEukfeeWgoZmekl/fADsVWcaUdNcjzw4iDID4AuA5QCrwhV5/8B37RPoPnzjdptLqZ+CGHr4Ep2GguH5X45DgLo5aER8RgIcAGgDA73hk+q2i9L916p2ZCbExOplc7lP5pWPMiLVYUqYtWSWkB4MfABgAgKL0l98y5U6rzmTOMJotftFibVYLumrwzUJikJwwIgAwAAAF6R81ePSkKThOj6W/PzgA7h6s1htmcGYHpAcDA7hoLwBQzzmT+MQfxmZfoTcxfnuCco7RxMfYtcMnpc4jWoDMw5DguYAT8HzXHxxGl41fzhgplvw++PI/+ZJflVrj1zXoTSzSM5YF3MtXkJgeDN2DQQMA+E0Q89Lf6lxhYFi/y7HI6GgUF+NwcgxI7BtIGBMAGADAx9KfT/td/KvXklnGxJf80tBm9QYGawGzESQGAQMA+F/623slrjZdZsOPyyGlRoNLhZMWPvmKOFAUtIDABpQDBzEenTlKlP6Lnnp1NL58OoOR6prMLIts8X2kfQPb4RmDBgDwsfS34pJflqXu08aDRnH14eSFD0HfQGAAAD88P8XUxSv5kl+13hgQi7JaLWjg0FFi30CiqQCAAQB8oP5HXj3k1jX40gVKaFtnNCOlRjtuyG3TIDEIGMB5vQBAl5ZAwhf9pC5bm8ip/ql82m+ArA0PFE3gB4rOEfsGehgWPDdIBPK+/uAfumism5UsSv8+A2+cxxLbP5Bg5PsGmr36BkJiEGgAgJ6Ap+R30gy+6OdCp/z69WDJcd9Ai275838XE4MI4wIAAwD0hPQfcfvMZb3jYnQKPOcvALVbPceY8DASBIlBwADAB9Cjtj8/6UdnYjL0DBuwhwvXI1jMJmfG+hdGEy1A7mFg8BzBBwA+gIvGY7NHiyW/97/wVprDatFF8A0/AncTcd9AR58rVyIYKAoaAKBHwCf+GC32lXrGHPCL1RmNiDWbk+ateUbsG0gYGQAYAOAipT9f8stJ//T4GP+X/F4qLBYWxSYOWAq+AGAA4APogYYfBtayyIA9/0GydJwYxFrYlCkd6cHgBwgQHwB1BnA5k2rDhR6bPUYs+lnwxMvJFpbtH6lS8bZ/sHxxa0aJ1yfNFZyB+DPBswUNAHCRtr8toe9qhmWDbvFaTmPBiUFDx8NYcTABABeM9Xd2kv6jHTZrkjZAin4uBnigaKzDqh085vbJhAHIyGcD0HwugeEDAFyI9Dc7Y+eYGCZoQ6c6I4sYuxMPFP078qQHt8HzBx8A0LltRD7td8qilYlmsyVFY2CC9rAp1WqEG5be9/s3cXowHxFYf+fYCPABgAkA6AaPzxkrhv76Dx6x1m4LnIq/SyWd0YR0DAt9A0EDAFwAeOk/dclqvuRXb7YG/QdSarTIbrMmZTz+0ijBF0AYHQB8AIAO6f8LScnvDfMsFnPIpE0zDIOwP4N7uQGRvoFwDsAHANSN7T90QqoVh8+0RjZkDh32Y2B/xqR77hf7BoIPAEwAAMETczuk//BJ0z0lvwr/zPnzF2F/Bm5lRnwBMvKZAcAAAEhS8qvWGWfiJJpQS4BV476Bar5voAVBYlA4MwDIB5eSRPpH3fvc39JinXanXBEZch9VLpOj+LgY7Yg7ZmQi0jHI89mhFiCsnIBQG94tSNGPfaXRzIbshzSYWKTSGmci6BsIJgAAoSfnjRNUf8Wy5/6WHh/rcEYpVSEr/eSRCn6gaOZv/yr2DSR7AAAGENbSP1pvYmdrjaaQV4ANZjMyWR3QNxB8AOFNRPLh5yGfv/6FZJvNkqRUaUP+o0dFq5GFNTnvXvf7ZKIFyD17AT4A8AGEqe1vi+uz2swP+ggP4L6B9oTEVciTGMQXCcG5ABMgbPBU2m1iye/sFU8Nxj30VHpDUDX8uJwvrcGIDAZD0sT5yxOJUJKRPQGACRA2aiAf+otNvHIpnvIbbltgsVjQgKSbxcSg8DkboAEAPEkwkXcseDDRzFpSAnHSj8/NANaK9EYmZfDYO6zEFwAaQDgwgHDP+X8qbbxY8nvFjcPX2qw2arKota2NJ1p/326zouG3zxITg/DeQC0AaADhIP0VN42bYtUbTKk6PvHH/9evtbUFZe/Y1ooJv6bSK4Bhkc7IZOC9QJAeDD6AUKdfpY+XFP3MyHTghh+UllNdWYlyNn5Vhqm2uprKGvCMwxiHVXtj8sTJghbg2SPwAfgKEAYMAOk/5LZpVo2BydAxdEJ/bZzaX1Zc1PrT/94uVev0iuETp/ey2R1U1oL7BhqtnfsGQkgQTICQw9N3TRCl/9CJ0zN7x8fq5AoFFRlUU1ONjubnVJ9qPNlcc7y0MW/7xvKamhoqa4lWq5HTbnVmPPnqFKIFyMleAYABhBz4tF+VVj9La2SoqaFY5f/hvTcLuG/OYNr+5QeFtdVV1NZjYMzIbI9ZhCA9GHwAoUhEovGe/6XP/jktLoZeyW9tdQ3K37mptPpYcQ33ThOmkoLciqIDeTVNjY1U1qTS6Pi+gXc9yqcH84lBnj0DHwD4AEJM+uvNtpV6hqV2FGo46b/9yw/3cS8bODpN3lbm7/ipsP/1N7EarY7KuoycFsDYY3DfQGGseDv4AsAECHo8c/dEseR3yW/+nJ4Q63RGKdVU1nKivh4VH8qvKsrPKea+reWoGvMEjuq3fPLvPWVFR1xnzpymsjaNwYRwUtTE+cvFvoFwesAECBWVj5f+OhMzW2MwUstCwXb+1k//k4V5gYQBVBEm0JC3ZcM+3hdAaX04MajfDUOEseIyD/MEEyCkGEA4Xf1n7p4klvymPfpcss1mS4pWa6msxXXKhSrLy1z7tv1wiDAA4fILDKB+2xfv7z1WVtpCKztQZWCQSqufMfgXk8W+gXD9Q00DCL/2b56S39jeqzkVl9q2Y89/1ref7OZeNuLLTi69QFgbONF0oq627MC+ktqaajpOErkc9YqL0w6dMF1MD/41ZqLAAcAHEGz49XxR+ivGpy+7wmAwJql0BiprOXv2LML2/aaP3tlDnH8nCNURZoDpJP63H/775lY+M5AScGGUWmfAfQOjEaQHgw8gFEp++9908xqLleXMXDcVwnb94T07DhHpf5Jc/pOEGQiEv2+sKC6sOHb0YGV9XR2VtcoUuG+g3bnomTfEvoEeZgoqQGj4AMJs0s/E+ffzJb8GSnP+WltbUVlJccuP77+1S8IA8H9xDoCLUJOUCWz99L2dtMwADANjQXqzdSGSJAZBNSCYAEGD39xzu9jr/4pBQ9fabPSGfGJ1fv/2jfmcfV8nkfqYAZxCnjyA0+S1wAQasKOw6niZ65TLRWXNkUoVslks/eeufVZIDJKTPQVcJmA4qH/AS3/c7CJapb5NpWeocf+62hq0e8OneRLp30CkPr74Z8laT5P3BHOgift/smIS+twap9ZQWbeJxX0D++C+gUJiUBsMFA0FEyDE6Tf33CEW/SRNSM2Mj4/TyuUyKqupqixHBdnbjnB2fTm5/IL630wufxu2EsjrU+TfeA1hz8av91dWHGuh1StArTMgvcGYNC49U0wMwnsLHoBgNwFC3/fnKfkdn2LVGpgMo5lu6O/H997c7mX744t+hlx8zADaiYQ9I9UCGutr6wq2/7SPZkQA9w3sf6NX30DgABAFCFR6NqND+t+QPDEtIdahQzI5ldXU19ehY0cOVlWWHKmQOvgkDKBd8kBayXunpMwia8OnudiEoDZEhO8baEwZNHqSpG8gcABwAgY2+MQfrZFZqDWaqbmb6zjJve2L93dILn8DcfSdFqT/mr9+7MYk0QI6+QIqOdPhQPa2wnqOCdD6HA67DQ2dmComBj2bMRmcgUHtAwjRsB85mHzJ74KnX0+Pi3E6FVHRVPYYe+/Ljh4+kb/th8Ju1H/B9peGpgQtQGAA4v+zb8v3+XW1tdTOi9bEIo3BfA+SJAZBGBA0gECW/tFGi32FUPJLq+NP7ubvciUX+aRE+vNTeVf/5WPv49hGtIBm8rONPAPY9sOhY0cL610cU6HxWXDXpBi7TZfx5GtiYtBvF4AWAD6AACJyIPm037vXvzjFabXEREarqCwHS/9jRYWuLZ+8myNR/5sktn+b5yc7/qfVf/lIMAMEX0CTxGxozNvybS6txqGYcHqw0Wp/CHXqGAQ+ADABAkut421/o8Wx2DPog1a7ryq0e8Nn2ZKQnlT68402Vv35I/fPfIY2oiE0S5hA4+aP380p45jK2bNnqHymaJUKOe02513rXphKtAD5bxdMiQATAEwA6vjdwimi9J+z9tnRDrstSanVUbn+La2tqLL8eMven74p8LL9XZLQX7fHEDMFCQOQ+gJ452Hh3l0HcXowLbmp55iqyeaEvoFgAgRsw48oa1yvVQye80cJNVWVqGAHn/Zb6yX9mzuk///c5/ksAhOQJgY1bPrfP7M8jUPpADNVlmWSUu97dBDZb5mH+YIJABoANek/VZT+t6Vn9jMYDEOUWiO1s4Uv6KaP3s5CXdN+zxAGcM4T6GEOYkhQMAN4PwBmKoV7swqrKyqofT6WtSJHnyuXghYAPoBAsuf4op9+Nwxfgw8orZHbOO33MHdBifTvLu23/UL2XxISFLQAMYlo4wf/2FbDMRlan1FtZPi+gePSxPTgCPABgAlAU53j034nzF/e18yaUw2UO/5s/OCt7V6hP6HiD1/o9pV/+tB9vs/k+RmeWXg7AxsqSwrLjx89VNnY0EDtc+LKysTrbloqOAOfWzQ1AkwAMAH8jucWTRNLfnsPvDHTZrNRO1O40reoYG9ZVUfab4Mk9Ccm/lwEpCFBqS+gae9PX+/1NA6l81lxZSXuG0jSg6FjEJgAdBt+4IOoVGtnKvUmaqox9s5nf/+5NO4vOP8Ez3/7ij9+6L5INdVbC+AZy+4Nn+2rKC1xuVxNVD6rTC5DcbEx2kFj7phHtAAZZsZgAoAG4Df8frEo/SNvum1aZu8EXPJLxyeF1fGigryq/ds3HvYK/TWjjsSfiwJmFqhzZmCnXgHZP3y2m2bHIJxnoTWaFxBnIGgB4AOgYvvLbxo31aoxmDJ0Znqhv9qaKoTV8m48/0Lor23FHz9wX6Kt2l1IsDF307f7q8qPteApwzSAayziY53Oe558VUwP9jBl8AGABuBz6Z8i2v4DR4yZgvPUIyIU1NJ+Kzl1nFP/81HXkt9Lsf0lWsAHP1cleBJHGorydh+uo5gerDexSMdYIDEIfAD00n71ZtsKLaeO0rL9cUhu9/efZ0ttdOSV+PPQGx+4L+OzCqaA0CxE1AK2ffH+LpohQYVSiawWtv+slb8SB4pi5gw+ADABfEbPL0kRS37nP/FKeq84pzNaRWfOH+72W82p4ds++88e1Lnm3yvt99I/70NvvC/1BZyWMhoccSg+kFt6or6O2kkycaYXG5OwGAVVkRCYAMEOXvobLJz0N7LUzlFNZSUq2LU5H3Ut+ZVI//fdPcSxW1HXxqGNOT98kUPTDFDrjMjEMGPHzlkEA0XBBPAtPb8kVUz7nbXqmWSWYWIUShWVs49n9x0rKWrZ8tE7u7qR/mcF6d+DKqt3rwCeAeDIw7Eier0CMFktNtRv0HCxbyB+TmACgAngK9WNl/6WmITVBoaltpa6mip0rHB/SdNJsehHavvzab8Pvv5fd0/8Lc/v6ZQY5JI6HPdt/T4XRyJo7YXaaEKcGTbuupHjJYlBYAKACdCDeGHpdIn0f3q002FL0uppFv1Uo03/+9c21H2v/1bU0fCzJyHtFdDhDPzsPznYF9Ha0kplL+QyOUqIj9cmjU8R0oNl5HkBwAToec8/Y49bglt905IfOAHnYM6OI1Xdd/vt0u+vJ+iBP/zX2xnYKTGoYNeWfdVVlfR6BZhZpNabMlAQ9A0EDSA41X9e+o+du7ifiTGNVWr11NbCd/z57pMc1H3DD77P/wN/eM/tI9W1u/qAxi0fv72rtrqS2p5EcFpAjMOmS3/sRTEx6MXM6RFgAoAJcNl4MXOGmPabeP3QNXzRDyXgkFtpYUFVcX5OsZfzTzrpxyfwMJUuiUH833edrK89kre7sI5yerCBta1AkBgEDKCHwRf9jEtflmhm2VStyUJNfcS2/66vPtyFOjft7JT2Sy6qL9U3qTNQ0EKasr/7NLuGWx+tvYlSqnFikHP6g0+MJlqAnDBvAPgALo2k0r/X1YMyrRSlP077rS4/5irYuekw6tzww2e2vzfd/9p73fUK4H0BRZxWUna4oNLV1Ehtj3Ardmt835UogMeKgwYQhA0/rh81wabUaGeo9CZ6tn9NFdrz4xe7vTz/nbr93v/af9x+2JP2brQA3hdwOGdbAR4lRmuPtHoDspiZpMlL14p9A19aNiMCfABgAlw0Xlo2U5T+N/5iSmbv+DidDM/5oyA1zp45i44XH3Ft//y/3mm/0kGf/jxd7d2HBN/Lxus8ffo0NQnLWKzI0bsf9A0EE6BHGn7wk35wiEnL0Cz5rUZHcrMOdSP9xbTf5a/+x+2PfcF/p5uQoLimgh0/5dGcKKwxMIgxW1JG37k4IPsGggYQBKr/y/eK0j8Kh5ZiHTZdhExBZbdaW1vQ8ZKjLVs/eXcXOmevf7+rsUKVYKchIlnffry3oqyYWq8ADKvVgnpdfd1cwRnoeZ5gAoAJcHHgE390ZstKDcWSXxz3P5i1Jd91ki+7E8d1SWz/tuWv/tuvJ4v8PcEXIJ0lyIcEjxceKME+C1p7puS0AA2ntV03agL0DQQT4OLo5XtniSW/aeteTE+IjXVGK9XUBEZdTS3as/GrPPTzab9uSqpsd+3Deea0+eO3t9ZW0asSVMgVKCE+TnvdyAnzCAOQ4ecKJgCYABeqonmkv8m8SGtiqO1UNd/rf8eR6tKj5aj7Xv9ttPb0vlfelYYEpb0CGrn1VpQcpNsrAPsCuGeH+wZGo4DqFQAmQMDilftmi0U/0x96MpmzJfsrolUU1f9qtOWjt7d72f5Sz387uYi0IJgBp5HXEJG9P361h6YZII+KQgmxMc60dS+kCREB8nzBBACc3/ZnYxJW444ztATFybo6VF50qKq6rKi7op8zyDcVf5eC7iYKNxzYtelQTfkxF05gotYwBPsCjMxsBCFB8AGcj6TSP/XBJ0c7bLYklc5IbZ9w6C/rm493oM5x/yaJ7d9278vvumnuGf77XlpAp4nCezd+nUUzJBit0iC71ZbEPc9Rgi8AP2fwAYAP4Jy2v8nqmGNgzNRWgjvsHC86fIKTooXdqP9Ubf+LmSi844v/5lSXl7W0tLZQW53RbEb4eaKA6RsIJkCggk/7HT1ncSLDsim89KckJuqqq9D+7RtzUdd+f6fJRWu/9+V33IGwaWQd3bUP57WAQ7u37qvjR4nR2Uv8HPHzHDUzA/oGggnQPb26/E4x9Nf7msFr7TY7tf3BNvOx4iOunV++Lx311SSx/dsQpdDfBYQEu50liEOZNIGfZ9/rh4p9A/HzBhMATADkXfQzZu4SvuRXbWIpdvypQrk/fZUtuURS6c+n/S576W13IO2fZz1dEoN4zQWHBAv37ijERUK0Vhitx30DVeOuHTnegqj3DQQTIKDw2v1zxKKfuCsHzrNY6I34xmm/uL9e/tbvC9A5034DEm7CoIQqQTEv4MDOTfvq62rohXXkcpSQEK8dNOb2TEQ6BpHnDiYAwCP9rxs10YqLfvD4aVq6NO71z9nMOO231kv6N3eW/oEHiRbQpUrwwK5Nh0sO5Fe5Ghuo7a3WaEZKrX4mkvQNBAZAxQfgDhiSSv/rkycu65MQp5MrFPTU/+pKtP3z97JQ17TfM4QBuANp/7yJMADpKDExPbhwz479NM0AmSISxTmdzjsf/l2aVAugsEegAQSY9Cclv8YMbPvTAk77LdqXU0ikf3dpv+1BsqfdJQY1Yqcm7hXQcvYstYXh7sEG1hrWfQOBARD84YG5YsnvnF8+lxbrsFOb8ssX/VRXo62fvitN+z1JPOpir//MF//lDuQ9JevrbpYgb8oU78s+WMuHBOnssSJKjaws65y2/LFkogXIyTkIGyhoL8AdWEeYFP1YVqqNnpJfGsCVviUH8spqOtJ+hay/Lv3+glALEH0B2Lzpe/2wgazNHokdczSgY1hkjum1inu5QdjbINrXUNAA6IetXn9wrhj3v/OR59IT4mKoTfnF4EN/m76Rxv0F559Y9LP0hX+6A7+S0o086xQTg5qlvgBs3pQfLSip40eJ0YFGb0RGgz7p1hnzE4lAlHnOA4QBww289NcYTLPVBhO1RTQ1nEQlB/OrDmVtPow6h/6aUUfiT7DBu1dAhxbw6b+31VGsD8BgrTbU97ohYmIQ+ADCSP6//uA8sehn6vL1yXabLSlSqaHmOa/hbOL8rd/vRV09/2Kv/yWcVA2mXspLOrSALlWC1WVF5eXFhZWNHOOjtec6xoLMFkvKqNkLE4kvICI85H8gcLvAaMnCq/+sM241w9JL/MFpv5VlJa68n77OR+eY8xekAxW9ewWIQ0T2b92wl3cGUoSFZVHcFQPnEQYgewMLhjDIBQ5rE+CNh9JE6T9hwYrBLMsmRWsN1NaDbeG8Td9kS7zlXbr9Lnn+H8HsohIiAp2qBHN/+joPMz6+VwAl4L6BOPR7zS3jwqpvIPgASOjPlpC4lGGt1ARka2sbqi4/3pL19Yfevf6DIe33vCCMS1ol2KlIiGN8u3GVIK39l8sjUazTqR0wfPRkUQvwCIiQRgCEAameafyAI0fOWsCX/Hqcf3TW42pqQDXHiyv6DxlpilKpz6q1BrfWZFbrWZtdozc2K7W6szKZ3O0O4hjVwt/9X0R7a6vsVOPJ6Kb6Wm1DXTXjOlFrb25qtLacbm5obaPL49RGBunN1oe4l39HYkgwtGOCEb7+gBER52aii3//FpUP/scV6RGEAarvfur1vw64emAqzcw/jMYT9ehMYx0KS0TIkVJv4sd50URNWRHKzd614P3n1/2baCpt3Bl1+/AcUhWeChS+4BnAQM7m0xkMqSpS8ksTcU4bsut7heXDaG13o0NVDdSfgZY7B0aLfRH38n/EXGkL5X2nbwJQ+Jt/8kh/vujnuuRJmXa7IyCs63rXWZ4A9BCt1iK73Z405b51oz565akvMW/ipHT7Ih9qAWHNACiFQnjpf82tt1nVOkMGtv2C2L8G6GEYTQwyWOy4b+AGogW0oxD1BYRdFOBPK+/qkP6jJmb27ZWgkysig2pIOZDvOwaZzZYUaXpwqN6HcA0D8iW/So12VjTFtF9A4IIzA1DCgBuEseIyIjiAAfS8BeC/lE/yEPmsv5mrf5MWGxPjlMujQOQBdaEonQn7A2YMvPkXYt9AaAgSQtJfx7ArcSmoG77gq5svmVyGevdK0F7LmYmIJAb9edXdEaABBCnIw8OXX8FJ//Re8XFOPOcPAPg5qIwMUml1Id03MNw0AF7645JfJafigaoLdC7C5mFcbKxzxqpfp4WqFhAWqcB/WT1f8PzL71j2y2SbzZYUpdKAiAOcFzoTi7Qm80IUounB4aQB8A0/zA5PyS9YufB1QWPFo5XIZrX2v33pw8lEYMqJQAEGEAyQSH/FiJT0KwwGY1KU1oAAgAuF0WxBbEwC7hsYch2DQn42oORzRvW+5qY1rNUK9i3QRZGSExh6TnCMmJYuDhTFggVmA/YMC/AxedJ+b5k+H8/5S9EyVjjTQBdNWHD0vnawV99AaAoa0PjrmnvEXv8JVw9aa7Pb4SgDXRLhvoE6gyllwLDRVhIRCAk/QKj7AHjpf/WIsdYopeo2nN0FAFwqHA47ujZ5kpgYRARMUCNkw4B/W5shFv1cM3J8Jp4GK5PJkRuK/gCXCKXBjFQ6wz0DRox9LX/zt6XcW+3uII8JhrIGQEp+x1tVOmMGVuEAgMuSlgrcN9Ch6z9kpNg3kAga0AACCVLpf9Ww5LTe8XE6JJMjqPkHXC40RnOXvoGgAQQm+MQftd64UKVnwI8F1DNVgko1inE4nFOWr59CtAB5MGsBIecD+L+HF4glv6krnk6Pj411yqKiQfYDeloLwH0DP0Skb2CwugJCVQPgi360jGWFhnKnX0DoIVqjQ3iIzJj0e28kQlRGBA9oADRBHgKf9otVtBiHLUYRrQTbH9DjMFusyJaQuIR7uRMJfQNBAwgc259T0RZrDGxQjtEDCnxS6hnEsJaUESlienAEMIBL9AH0BEml/8Qla0fj1s7RGi2IKoDPYLPZUWz/63DfQN4ZiM8gtAQLAOnPOOJWmVgrnFCAT4EzS5Vq7Yyrho8J2oGiIcEA3nxkoSj9h09L72cwGIZEaXQI4lZAviS5XIZwhumA4WPEseLkLIITkBIzi0oYOGgNa7FByi/AL1DrGaQxmBZwL19BnsSgdhREXudQyQPg035vTp3fl2HMqVrKab/HS4sQHnUN8D0YixU5YhPOO4TWZzZnVDTCuSbTHnwq7cMX1v2Fe6uV0wLcdz39JzcwAD/g779cJJb8xl517cM2POePIpoaTqJDe3ad+PS1X+XA9fQ9bp5+T+KI22fEsjZ6zx3nmmiMDE4MegsFWXpwKPgAeOl/1bDR1qho1W2ROhNVy7C2pgod2PZ9MfLEhvFhOAPkE8J725K38YviWk7bovnM5dEqvm/g+IWrhL6BMiKYQAPwk/SPHHjr+MxevRK0cpmMWq+l5lMuVFVW3Hwoa3MZVgUJtaNAaf8SGoggxHd5PlFVfqbsYF6VzRlrNZgYaovCfQNN9tjF3MvvUBAlBgW7D8DT8OOWcValVp+hNdG1/euqK1H+5m8KsCXA0WlBShGVEBhAzzEAGTm7uD2Xcv+W7w72HjiIKgOI1hqQ0WQaO3Ty3H7bPv5XHvLUB7QBA/AR3np0sSj9EweNmBIb4yQlv3TQcvYMKi85eipv41f53LcNHDVydIqoq63AAHr83OLLr+ZIV7xvd2ttxbFBdmecWqWhN+/BarOjhIE3ruEYQAY+EtwZbU//1R/dwAB8Bz7xR8ewK9QGM9UbVltTjUr37ynkXtZzVIPf4ugkYQJBmyseoBoAjrnjuW56jrDYby3YumGPPb73sBhNH2oLU5tw30BjypVDRj18YPsPpcGg+QUlAyDSny/5nfrAk+m94uOdUSoVtb1ua2tDFaVFLXu++ySLMIAKjqrIaxcxBUAD6DlEEQZgIsxVfjhry/6BIycMtsXERuLOPbSA+wZeM3LCUo4BrCdagDuQtYBg9gHw0l9rYleoDAzV61VfXYXKDuQWnmo8gSV/HUfVHFWS1y5ySIEB9Bwiifp/VjDBub1XH927M98R1+s6qyOG2sJw30Dsj+JePkPWF9B9A4NOA/jHuiWiEwiHXSysOYb2lF+c9JO38cssovLXEaolGsAp8AH0uAmAmf9psqeYGeCqLz0ndfcOGJpMlQFg7SMuxqmbfN/69I9feeJP+NlzZ9ad9tQbbmAAPWz7m+yxq3GzT5o7W1NZjorys4/UHS8pJwwAX/oTyOMIxNEA7ARsD9QDEIzgLpSMXH58DpRkv434GXDPotDiiOlrNNNrBKPitACd2YL7Br6JAjwxSBZkD14q/Uc7nY4ktd5IXfpnf/3hdnLZT5KL7yIXvw0uv28sR2JWnSF73Uj2vfFozvb8E3U1dB0UKjWyWizOcRkPjSYaipycXWAAXZ/khX9Jpb/B6lhixDn/FLtCnKyrRVWlhVV15aUV5PKfRB3hP5Hzw4zdnv2a99Tr+DC0EyZwmjBfngEc2bP9UEXpkfpmVxPVs6FjWMQ441cSh6X8584BaAAXN0aNl/5Dp8ztZzQxYyM1errSv6YK7dv49U5y6U9K1P7T5HC2zXvydTdUzvqAPAyglWgBAgPwMIHdW3NxUhZNqHVGZGEtScnzlg0iDED2z3VLIwJsNGDwmAD/fGypmPgTP+CGNTjpgub5O+VyocqSIyeO7t1xmBy8bqU/wKdoI3vdLDHBGvd+/1lOdcXxlpbWFqpnhGGtiI3tvVSqBYAJcHneX8XwlLsSGbMlVU077bemEhVmb8v9GenPh3946Q/wCcjeCgzgtJcvoKk4L2tfPeWSbKWBQXgiNdZYUYB2DAqK8eBS6e/sd3WmzW6jumJsX1aUHHXl/vBZjoQBSFN/SQYY6Oq+tgMkTOCUhAE04JBgfW019dNtsVoRd2bnCs5Az1mG8eAd1/8CfCqC9L9yaLItSqWZEak1UXXwYPuSO2DZkst/0sv2b5/7xB/c0D3Xt4T3+OecgTgkWJyfU8j7Aiguku8bqNFncGdX7BvodbbBBDgX/rU+U5T+A0b8IrNP7146mVxOTeZguxLbl4ezNhd4SX8h9AdJP/5XIQVn4CnJM2kq2PJddh3tXgGKSNS7V4K2/9DkeYQByMiZBhPgImx/OXf5rSqdIUNtpDvpp7aqEhXn7spvbjxZK3H+NRFHlCj94V76BxItQOoM5M2A44fziyuKD1e6mhrp+gL0ZqTWG3HfwOhAcwYGNAOQSP+ovoOGUS/5FYt+NvBFP1LnnyD9IeefDtqJL8A7MaipND+74ARlX4A8KgolxMc771j+eBoiEYFA0QIC3Ano2T/EF/2Y+ZJfmqivqULVJYdLiPSXJv40o46OsOCco+sMlGoBfEiwsuSoC/droAmV3oTUOsNs1CkkCE7An/Wf/Gv9MrHk94771qdjDhqpVPXYJKFLIaz+Z3/z0XYv598p4oDi23/Nefw1cP75mfCeEwbg7QzkzbOyA7kH+b6BFM+OQqlGNrs9aVzGilEdvoBlEaABnEd7whxTbTAtoi39T9TWoJL9OUfqy0vLvWx/SPwJHAhmQLPEDGjgTLZd9ZQzAzFwC3ODxbEEBVBiUEAygLcfXyYW/XAcM9lms/WXUy75xQUmR/dsz0fdJ/6I0h/uIB2QvRfSgzuZAZzJVld2MK8Qm3A0EanWIyPDjL3p9tlCYpAMGMB5pL/RFrsad1yliZP1dejY4YKqor07D6HOab/NIP0DCkJI8KyXFtBYsHVDdiAMa8Ep7PEDBq0hWgC+fxFhzgA6O3Q6S/+HRjud9iTccZWu868S5W/6ahfqWvIrhP7a5jz+KmT+USbPM+gSEuSfV/nh/KKK4kOVrqYGqmcpWs+gKKVy3BVJtwbEQNGAcwJKpb/WbJujM7FUHUynmppQbcVxV1HuLmnRj8AAOkp+wRkXECQxA06jzunBTaX5OQX1NTVU1yeTyVFCr97aATePE8aKU9UCAtEE4NN+h0yem8iY2RSP9KcnVXDRz8EdP+5GP1/y237n+lfB9g88Z2CLty8g94fPsytLj7rOnmmmeqbUBgZFq3UzkScxSAEMgOCdJ+4VQ3+x/a9ba3fQnfOHY8eVpUWuvB+/2OMl/aHff4CCMON2CQNwoY5eAU1Fe3fm0fYFyBSRKD4u1jlp2bo02lpAoGkAvPQfOjUtkWHZVKWBbtpvXU01OnYg9zDqWvTTDNI/KLQAoUpQ7BWwf8u3e6uOlbTgrE6a0HKmLe5ojSiHBAPGCUikP1/0Y+9zxTxcRkkTra0tnPQ/2rL3+093oe5Lfon0B+dboNGd619xe/kCmgRfAM7irC4pLKEdEvQMFGWdY+c/kEy0ADkNLSAA5gJ0lv64bDJaY8jAJb80yyXrqqpQUd7ufEnab4OX9G+b/dgrAdzxPewhDQmekpgBjTnffbyVMzH7mq10TUytkUVGe9wq7uUGRCmcHBAmwLtP3idK//7DRi9L7NNbR3O6CwZuJnFo58Y89POJP3D1AxiYOaOOkGCnXgH15aUVNWVFlU0NJ6muEdcHGAyGpMGTZiWijsSgiLBjAKhj2EO0UmvIUPJpv/RUyJrK43jOn5D2213RDyT+BAe8Q4JiElfh7s17cISHtrlisdpR3IAbpIlB4aUBSKR/FPaKxsXEUC355dX/6iq057tORT/etn87kTCA4HEGduoVcHDHj/tqjpe6zp45TXVxGsaCzKwlJWny3ETiCwhLDYBP/NEYzSv5OX8UgdN+q8uOVtVXlFWgrt1+zyCY8huMZoCgBQi9AjA1FeXSDwliYIe3vU//eYhCSJA2AxDj/pOWPZreKyHOGalSU1XKcNrv/s3f7ECd4/5S279t9mMvg/c/+BuHNhZs+W5P1bFiPiRIc4WROhNS6XQZVySN9Ht6cCBoALz0V+lNi1R6M9Wz4mps4It+inN3FXaj/kPabxDSrHUvSxODhI5BPGPHEZ7jh/IP81oAxXOnkEeiWGestu+gEZP9rQXIKEt/vuhnzPwHk+2BUPJbW4NK9+ccQN13++U7/pADBQgueDcOFSMC+Zu/yaoLgF4BKqMZaRl+oKhf+wbS1gBIyW/MaoOZbuIP7vWP88T3bfwy+2ds/zYEob+ghJcW0Kk+AEd6Ko4eKD1ZX0t1jVFKNeqdEO+cmPmokB7sl8QgWgxAlP63zF58o4Vlk6K1ekS76OfQzo3ZqHM7KReSFP2A9A8ZLaBTfQD33Pd4MgPp+iuidUak0htn+1MLoKkB8KE/NrbXUsZio7r1uNd/bcXxFk7670HQ6z+U0d0swYbi3F2H6iqPu/C8R5rnUKHSIIfdnsSZxKOQnxKDaGoAkUl33Okp+dWbqJ6KuqoKVLIvK19yKLp0+5217iXw/AcxeZ5fp4nCLgmzx1pAVn0NfV+AwcwivdkyB/mpSEhG6fLzoT/nldeutVEu+RV6/ef+8HkWOkfJL1yhEAkIdtYCxMahR7K37q+pOEa9SjBKa0RGsyXlxokz/dI3kBYDUPS7aaRVqzOkRutZqqcCT5CtLjly/l7/cIOCnmY++pL3LEFxiAh+/uWH9x+qpxwSxOSwO1DMFdcIY8V9agbIKFx+T9HP8DGZTqeTusqFQ0C5Gz7Zhrq2+2om0r+dHBxAaDoDxZZh+zd/sysQQoIKrQlFa7TTOSFpQT5ODKLBABRXDBllVWr1GdEBMOmntGDPEUnar5D1d4pICSj6CTFItABprwD+2eMqQe48FOJ8EJqQy+Wob+8+WiwkkY8Tg2R+vvyk5HdMZj++5FdBVdfC3P7g9u9zUNeS3zMg/UNeCxAyAzs1Di3O3Zl/oq6aur0SbeC0ALXW530D/a0B8CW/USrNLIXeRHWLcdFPZfHhqorCgmIv9R9KfsNHC+iSGIRDglWlRfW0Q4IRctw3MM45YekjPu0b6C8GIHr+J2T+Mg03RJTJKTf8wEU/W749Z6//mY++CKG/0I0JeIcExXFvRXu35wZCSFBjYpHaYFqIfBgS9GdLMF76awzMyrLjxxHCRBFnTjW5SvKyDqPOnn+Y8xde6K5KsGHfxi9z+g8bPexEbXUk7QXKFZH9k9OXJ3//1stfkPX2aEp6hK+b2kVwEC4/R0aOcNJ/PEe9OYrjyMYRbv6vRL7PfxY8wJjj13GEO/4UcYTNgDKOashBkIz6BoQwIsi51HGEW1DHctSLEE5QwRlqGuSfEl03OXdYI8Uh6WOSs3mcnE0X0U75S9sTd1fhx42OJKqMipDUuSEMcvC15G2TbDLm9vUIev2HO6RVgvgcnCCkIec1AvmnXZdbIt1lkruiJK+FAqEePZ/+YgAyQgryIeSowxMrjGnxx1qwVD9NpHwt0QLqUEfiTwv5GWAA4YHunIEnyJlQkcvfQoSVzE/n8yzqqD5FkvsiRz5wBPrTBxDhpeo0E47bjjq8nP6w+aQMoBp11PyD9A9fJtAq0QwxA1CTuyGMGvfn8A7peHMpI4iQUFAyAEHin5bYOWfJhvurDZLAAFxE/a8hf1/q/AMGEJ5agOAMPEEEkptcRA3yb5OONq+1dHc2I3rqnPrLCRhJNhFzVj1xumiImuXzggcvFUvKhBpQt9N+AGGGCHIOleSM6sg5pXFGvf0SQpi6U4ia51w9cHf9GQVQECag7MaxEeFHBtCKOrLAmsl/W1CHdxUYQHgyAMFHFUXOqeCojpTY3/5Cm0QTkJ5TQRNoDzYGIN3gSC/HBvIjAxDUvTbCCARqR+D8AybgOaOCsFJIJL+/J/a4JWdSek7bpOc0WBiA9ILLJBsdQfFhuyUb2S55DwBMINDOqdvrvKJgZAAAAKCnuUMwMAAAABDAKg8wAAAAGAAAAAAGAAAAgAEAAABgAAAAABgAAAAABgAAAIABAAAAYAAAAAAYAAAACGL8vwADAE4ag0JarbF5AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/wheel_black.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAXUAAAF1CAYAAAAX/XrIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAIGNJREFUeNrt3XtclGXe+PF7mAMDDA46tiioJCQeUhfBA6kRmbaap/KQUiyiBSGiZpkaPY/bQVS0pBQF8/HcKoouJBhqHjZSyfVFaq2k9fx+2dbP51E8my/EcuZ3De2arScOc7jvez5/vLfcNcLvfc3nde0199xINptNApTo75WlPuVntrT67Fxex73nV/b45EJu7K6LWYO2X8wYVXLxzWdKLs1M/OjSa899dPnVFzb974sTS8Rft4lf7xD//a5Lb8bvFr/v0wtZT5SJf+6g+OcPia/z5dmiVsfF12W+UCqGAFn59MSHlhX7MmLeKByXMvbdR5f0m9xuZ5cRzb4K6el3NqC1rtrgr7FqDZKty0SvnyOFqElam11kmpetq/hrt3+SxNKuL/vX/xej+Pc1vV93Lfwhv7O9Rjb7apj4fqaI7+s98f1tEt/n5+L75bqBqMOjFXzxX2GzilPjn1vaN7vfa+Gl7YY3OuXf2uu63iTZ7BoSZFfTGX7h11hjDe1ivPh4QsvyKQseWfq++PPtEX9OrjeIOlTjE7GLnb1tYtzo93qt7p4WfPR33fVVOhFtncLC3dDg39dK+1P0E02+S3mj24ZVYh5fsLsHUYfclZ/+q98bWyfED8nsujl8dMBJg0Vj9ZR415VRzMVfzKePmNOLYl4rxdz+r5gf6whEHW6zrjwn/IU1Q2dFTWrxhX9br58IeMP4iPm1EHMcNbHFF/PFXPeULwlnnYGow2nyDy8PHbdq8JxOKc2OG4PELtwsWYmx8/iJ+f6upeb6CDHv+WLue8X8WYcg6miQGVuSx0bPCCvzDfP6WctO3O07+WBxHZ4X12PllqQk1ieIOu5pc8WakGeX989qNdx8yh5xduPyZBLXxR75viPMp+b91x+yDorrxvoFUUeNVeXZHQdmRa8zd9NXsRtX7i7+QXH9ZmY9tK5UXE/WNVGHh1ldnhPeN7PrZlOErpqQq4uvuJ5txXV9bX63/L3iOrPeiTpUaseJLZZhSx/LDuhpuOJFyD0m8F3E9Z4nrvtxcf15HRB1qMDEwsTUFqMDThJyAj9YrIMPChJTeV0QdSjMsvLsjl1ntt+lD9JYtbzZiZv422+VFOvipZnt9uzn/J2oQ96e2xA31TLQ7zy7ctR2995HrJeVYt3w+iHqkImyylKfmHldN+tbaq4Tc9SHn1g3zcX6eV2so//hscNEHe6x/HBu+wdnhB7QEHI4OPCTxLo6eCinPa8zog4XeH1P+oDm8U2+J+ZwdtxHinW2Xaw3XndEHc44L98UP8UUa7zsxRufcKFGYr31FutunVh/vA6JOhwgYUPcVO8IXTU7c7h7595JrMMPeFOVqKN+kgrHphqjDVUaduaQ2c69u1iXm8T65HVK1FELqUXJY316Gq6wM4fcd+7RYp0WivXK65ao4zYmb5sY5xtrvEzMoSQmsV5jxLrdKtYvr2OiDiH70KLO5mGNThNzKD3uT4p1/LlYz7yuibpH2l+53ztsRugBiZhDZXGfNj30QKVY37zOibrH6JPTJ1cTpOENUKhWkFjfOWKd83on6qr2wpaUsfpI/VV25/AERqNkixTrvUise17/RF1V1lb8OcQ8POCUZOSFDs+M+/Bh5lMVR9eG0AOirni9Fz6yWjJz1AKYzZL1vXd7r6YLRF2R5u6f38P7YZ8fJZOGFzRw0xupD/c2/li2N7MHnSDqitHxrYjtxBy4S9z9JNtbf+q4nV4QdVl7acf0kdoOhmsEHahd2Du0017b8dFLI+kHUZedkCkPfE7MgfrFfUpayOd0hKjLQsa+eTG6CGM1QQcaFvaIjrrqfZ9kxNAVou42PebH5BNzwLFxnz+rRz59IeoulX+sINA0qMlZgg44J+yDHjedPfb3/EB6Q9SdblRe4jSNxYv7zgEnszTWWPNWjZpGd4i60wSnhn3F7hxw7a49dVzwV/SHqDvU2oqNIYZoU5Vk8uKFBrgh7NGRhqqKQzxmgKg7QHLRi0kai5bjFkAGxzFFeclJdImo11vE7F7FkpHjFkAujN6SbXZ6RDF9Iup11viZFj9w3ALI8DjGV7I982TjH+gUUa+Vdz5bEqXt4HONoAPyDnuHB7TXDuxZEEW3iPodJRZMSiXmgLLiXrAmMZV+EfVbxCwavJygA8o8Z1+UEbOcjhH1Gx6YEVVG0AFl79jTU9vspWdEXbIkhH5H0AF1hD3hyabfEXUP/YOXVv7NzxhruUzQAXWFPba78XLl96V+RN2DLD28tr22re9PvAgAdWp7v/anw/uWtifqHmBu2eJemiADnxAFVC7oPo21bPvcXkRdxV7dNWeAZNYRdMBDmE2SdXdB+gCirkKTtv0pjqADHnjO7iPZtq2fFEfUVWRswcupkknLAgc8OOwFy8d6xIeUVP8HfHr9+HSCDsAe9nWLnk4n6gr2xIqEtwk6gJvDviLzibeJulKDbuQedAC/ZTSoO+zqPHJZl8qRC4C77tjXL1TnUYwK3xSdxpuiAGoV9oL31ffmqbpuWyx5M46gA6hL2Ld9oK7bHVXzB0nf/Q4fLAJQZ2Y/ybo7Xz0fUFLFH2LO/qW9JLOeoAOod9jLitXxSAHF/wGWHt7YXhNkJOgAGiTIorEe3qP8h4Ap+psvrTzkp23biKctAnCIti20P1V+q+zH9io66sbYoMssRACOFPt742Wi7gZNEx78TjLpWIQAHMpklGwJj1sU+xOUFPlNt0mP3UvQATgz7DP++EAZUXeBmEXPLifoAFwR9kUzYpYTdSdKLHgtlaADcGXY/5KdqKhPnSrmG13w2Zoogg7AHWH/rHhBFFF3MG2HxtdYYADcoUML7TWi7kCNn3nwB3bpANy5W38mtvEPRN0BImYPLSboAOQQ9tnJEcVEvQGSi95Mkow8dRGAPBj1kq1oSXISUa+HtRUfhWgsPNMFgLxYTBprxadrQ4h6HRmim1exgADIUXQbQxVRr4Pg1J5fcewCQM7HMKkDg78i6rUwKm/6NMmkZ+EAkDWTt2TLmztqGlG/i41f7QrkHB2AUtjP14/tzw8k6ndgGhR+loUCQEkGRZrOEvXb6D7/mXyOXQAo8Rhmfkr3fKJ+k4x9q2MIOgAlh33fxowYov5PuojAahYGACWLaKmrJupCyJQ+n7NLB6CG3fqUISGfe3TUX9qxcCRBB6CmsO9Y9tJIj426tkNTHqcLQFU6NHfvY3rd9i/u+NaI7ZLJwCIAoLrd+qz4TiUeFfXMsj/3IOgA1Bz2svzMHh4Tde+H7/+RCw9AzR5+wPijR0S998LnV7NLB+AJu/WFqb1Xqzrqayt2hkhmb57tAsAjmI2StWK3a5+97tKom4dHnOJCA/Ako7sHnFRl1FOK3h7LsQsAjzuGMUi2ogUpY1UXdX1k8FUuMABPFBmsv6qqqMcuTl3GLh2AJ+/Wc9L65Koi6vsrj3trghrx5igAjxbkr7FWHtvvrfioh04fcoALCgCSbfrA0AOKjvqCA5ujJKOOiwkAglEn2Q5sXBCl2Kj7D404w4UEgF8N6eR/RpFRn1iSHcebowDwW/Y3TUvemxinuKgbY8MvcwEB4FaxYcbLiop68pZ3x3KWDgB33q1vmZucpJioG3qGXeHCAcCd9WxluKKIqCdsypwsmby5aABwt926XrIVzhqbKvuo67vfX8UFA4B76xasr5J11EflZUxjlw4Atd+t56WPmibbqGs7NOcHSQNAHXRo6tgfVO2wLxS/ad4UyajnIgFAHdg/ZbppZvwU2UXdGNue+9IBoB5i73fcfesO+SLTd64axFk6ANSP/Wx9V/aMQbKJepP4mO+5MABQf/Fdmnwvi6jnHNrenl06ADR8t364ILe926PeetqIg1wQAGi4aY+1PujWqJdWfuPHLh0AHLdbr/yi1M9tUY+a+0IBFwIAHGfuiKgCt0VdE9SYnz0KAA4U5KexuiXqcRvmT5VMRi4CADiQ/Qhmw/S4qS6Pum//Lhe4AADgeP1b+15wadQXH9rRmV06ADhvt35o4+LOLot6u5lj9jB4AHCemX9ot8dlUddYTLxBCgBOFORbvzdM6/GTjd6bzNELADiXyf70xlcTJjs96gGjY08ycABwvtHtAk46Nepbvj1s4ZnpAOAaRq1kO1G6xeK0qPfJeS2XQQOA6+Qk9Ml1WtQN0e34odIA4EI9Aw1XnBL13MN72vMGKQC4lv0N08Mba/9I3lpHvWvmpM0MGABcL3NI180Oj7ouIrSa4QKA60U00VU7NOrZ5bs6SkYDwwUAN7DfBVO+Prujw6IenfXKOgYLAO6TNeKhdQ6Lur5bW+56AQA36tJEf9UhUV9x5NNQjl4AwL2MXpLtyF9WhjY46v2XZ2QxUABwv+WJ/bMaHHXziEdPMUwAcL/hrc2nGhx1yeTDMAFABkxae5YbEPWkLSuTiDoAyCfqW9KTkuod9bAZ48oYJADIx4yeYWX1jrpX6+bXGSIAyEdrX6/r9Yr6ii/2h3ErIwDIS82tjfkrQusc9cGr3p7DAAFAflYmDppT56g3e2HE1wwPAOTnhQ7Nvq5z1DVBTa0MDwDkJ8hbY61T1HPLPwnnVkYAkCf7rY3lH+SG1zrqQ1dnzWJwACBfa8YNnVXrqAenPXuUoQGAfKV1Cj5a66h7hbX4maEBgHyF+Xj9XKuoF33zpVky+TI0AJAx+7n6NzuLzPeM+oSt6+IZGADIX3H6hPh7Rj1q7owChgUA8pfZr+vme0Y9YPQTJxkWAMjf6FYBJ+8ZdY3FzIeOAEABLLpbP4T0m1/kHzsUKBm9GRYAKID94V7HivID7xj1CcXreZMUABSkeMZv3yz9TdR7vffmBwwJAJRjdr/u6+8Y9eC0MXySFAAUZHjIfd/eMer6yA5XGRIAKEcrb+1Pd4w6nyQFAGXRaez5vk3Ul5bvDyfqAKAsBhH18lVLw2+JekpR3lgGBADKs3Vq6phbov5Y7jvZDAcAlGfR4Edzbol6ePrkvQwHAJTnuXatPr8l6o2eGnCa4QCA8nQ3+1y8JeqalkHXGQ4AKI9Z++szYH69DYZnvgCAIt18W2PNf2w89iUP8gIApUZdOFb4y4O9aqKesW93DIMBAOXaNz8j5kbUxxXmpTAUAFCugvHjUm5EvW9O1iKGAgDK9e6AR5fciHqHl9N2MhQAUK5JndvtvhH1ZqOGHWMoAKBcI1oEHr8RddPDD51lKACgXL0C/M7eiLouNKSaoQCAct1v0F27EXXJ14ehAICC+Wt++VTpL1E3GBgKACiYQfrlU6VEHQDUFPXSylN+RB0AlB/1yr2lftKWM6daMRAAUL6zW4taSXnnKjsyDABQvnOb8jpKq86f6cEwAED5zq9d1UPKOX82lmEAgPJdeD/nMSnr4rlBDAMAlO/iwqxBUsbFc6MYBgCoIOpzM0ZJb1w6n8AwAED5Lr31RoI089LFRIYBACqI+uszE6XJXx+fwDAAQPm+mTJ5gvT8gQMvMwwAUL4vx49/UYrbvv0/GQYAKN8nf/xjOjt1AFDTTn3y19+MZxgAoHwnX5meLM34fyefYxgAoHyXZr6eKL1x7mI8wwAAFUT9zVnxUsa5i3yiFABU4GLG3FFS1tkLTzAMAFC2RC+97WLWwkFSztkLsQwEAJQedYPtQu6yWGnVmfPdGAgAKD/q51et7SblVZ7jJx8BgAqifi5vU0ep6PRZfkYpACg+6t62s8UlLaTSU5U+ksHAUABA0VE3/lxZutdHstnEr4k6ACg+6jU9J+oAoHwGSWO7EXWNyd/KUABAufw1GuuNqGtbtb7GUABAuUJ1huobUTdF9z7DUABAuR4xNa68EfXmw+MqGAoAKNezzUP+fiPq7VJf/JihAIByTe0Qsf1G1B/NfHcJQwEA5crpO2jRjaiPyytMYSgAoFyF41JTbkQ9Y/e+GIYCAMq1L2N+zI2of/jNCYuk5wNIAKBEJsnLduLDEsuNqNf8DVEHAMVG/UbL//U3GnNjPlUKAArU2stw/Zao+3TpcYHhAIDyDG8UeOqWqIc8+/xBhgMAyvNaeJfSW6L+6NyFuQwHAJRnad8ns2+JeurGrWMYDgAoz9bUqWNuifqyvx0J4w4YAFAW+50vR5atDbsl6tzWCADKjPpvOn7zL7QteK46AChJd71/1R2jHjwm7ShDAgDlSAtuf/SOUe/91sLVDAkAlGNh74Gr7xj1ifnb4hgSAChHycT0uDtG/cOKby2Sr4lBAYAC/PIgrx2WO0b9l2fAWHgGDAAogEWjs/57w2+JesATo08yLACQv9EBrU7eM+pdX83czLAAQP4yu/bdfM+oT1i3NZ5hAYD8bZ2QHn/PqP/1H5V+vFkKAPJmkrS2yr8e8Ltn1O28Qtr+xNAAQL7aevn+dLt+3zbqLeInfsHQAEC+Jrbo/EWtoz703TWzGBoAyNeaoeNm1TrquZ+Uh0smM/erA4AMmSWdtTzng/BaR73mQ0hNg4g6AMhQS43x+p3afceoN3s65TjDAwD5SWn24PE6R33w26vmMDwAkJ9Vg8fOqXPUV+w7Eir5cL86AMiJ/f70IyvyQ+sc9Zr71Zu3vs4QAUA+wrx8f75bt+8a9bBxM8oYIgDIx4ywnmX1jnryyqIkyY9bGwFADuy3MhYlpyfVO+o1v4FzdQCQBft5+j2bfa/fYH50+CmGCQDuN9zc+lSDo94/Y3kWwwQA91vePzGrwVFfU1YRwhEMALiXSdLZKtZsCWlw1O30bbtVMVQAcJ9uektVbXpdq6hHv5K1jqECgPtkPTRincOinr2rvKNk5AgGANzBfvRSnr2+o8OibqcLjahmuADgehG6JtW1bXWto97txfn5DBcAXG9+tyfzHR71nJ3l4RzBAIBr1Ry95GwId3jU7Qzte15hyADgOj0NgVfq0uk6Rf2x/1yazZABwHWWPjYm22lR//Dz/9OYIxgAcA370cuJLaUWp0XdLiB29EmGDQDONzqg3cm6NrrOUU/MLkiVfHkcLwA4k1nSWwsT/yPV6VG30zQOIuoA4ERBGl9rffpcr6i3GzNzD0MHAOeZ2e4Pe1wW9eztPDYAAJzFJOlt5dl5HV0WdTu/qIHnGT4AON5Av9Dz9W1zvaMeN3/DVMmHN0wBwJHMksG6IW76VJdHveYN0yYtr3MRAMBxWmpM1xvS5QZFvev4eZu5CADgOPO6jtzstqiXfn3aR/LmDVMAcAT7G6SnS4/4uC3qdqFPzzjAxQCAhpse2vdAQ5vc4Kjnbj/cnt06ADR8l344t6C926Nu1yQm/nsuCgDUX3yTLt87oscOiXr6mj0DuL0RAOrHfhvjnvQlA2QTdTtj+9jLXBwAqLtY4/2XHdVih0U9ft6mKZytA0Dd2M/SN8XPnCK7qNvpWkZUc5EAoPYidIHVjuywQ6MeN5tHBwBAbZklb2te3GtTZRv1mh9OHRpdxcUCgHuLNrSocnSDHR71se8UpnK2DgB3Z5IMtsJxs1JkH/Wa3XpYzytcNAC4s56GVlec0V+nRD353aKx7NYB4M679KLkzLGKiXrNfevh3LcOALfTz6fNRWe112lRn5hdEicZ2K0DwL/v0ksmvhenuKjbNeoy7DQXEQB+NaxR59PO7K5To75oy6HO7NYB4Ndd+qFFhZ0VG/Wa560P4XnrAGA3PXTgAWc31+lR33/stF7TKIhPmQLwaEEaf2vl/mN6xUfdrk9aTi7HMAA8+dglp09arit665Ko2+mDI69ycQF4okh98FVXtdZlUR+/YOsYdusAPHGXvnV81hjVRd0uIHL0SS4yAE8yOqD7SVd21qVRX7uzIkTy5tG8ADyDWTJaK9buDlFt1O0eTlq0nGMYAOo/dvG2LeydutrVjXV51GueCxPKc2EAqFusMfyyO/rqlqhn/rmsB7t1AGrepZdl5vfwmKjbdRqZUULYAagx6Bmd/ljirra6Leo1P6g6kB9UDUBdInQtqt3ZVbdG/eVFHw/jbhgAamGWfKwfv7xsmMdG3a51v2kHCTsANQR9WuunDrq7qW6Pes0xTDMeIQBA2SJ1ra7KoaeyiPqcNWW9JAO7dQDK3aWXzcnvRdRvEh2ftU7SczcMAGWx3+2SFZ22Ti4tlU3U7Uxth5xhkQBQkqH+Xc/IqaOyivqHe09YNEYLxzAAFMGiMVlPfPi5hajfxajpedM4hgGghGOXvNGZU+XWUNlF3S64V9pRwg5AzkFPCx58VI79lGXU7QzNo6tYPADkKNrQpkqu7ZRt1Nd+VBGi8eZ8HYC8BGkaW4+uKQ0h6vWQ/GZREscwAORz7GK0FSUvSZJzN2UddbuIobOLJR1hB+D+oM+OSC6WezNlH3W7Jh3jvyfsANwZ9Pgmfb5XQi8VEfWa58NYeEwvAPeI0LWuVkorFRP1BWsOREl6ng8DwLXMkq/1wILiKKLuBImvFaRyDAPAlccuBWOXpCipk4qKut0j8YuXEXYArgj64kdeXaa0Riou6nZtYtP3chQDwJlHLultxuxVYh8VGXW7pg8mfMeOHYAzdugJTR//TqltVGzU7Xxa9LvIIgTgSP18oi4quYuKjnrpodM+WnOHayxEAI7QQdvqWmXptz5E3Y1y1peHa3xaXmdBAmiIlpr7rpfn7ApXehMVH3W7ue+X9dIYePgXgPqxaBpZy+YWy+JnjBL1f0p/Z/cASccdMQDqxiz5WXen5w9QSwtVE3W7F2ftGEnYAdQl6NsmfRCnpg6qKup246YXpkhabnUEcHcmycdWOG6Zoj4t6pFRt3s6bf00duwA7rZDX//0wmlq7J8qo243IGHF2+zYAdxuh75q4LxMtbZPtVG3e8IednbsAG7aoa94IvNtNXdP1VGvOYoZv34aO3YA9h36+qcXq/LIxaOiXvPm6dTCFHbsgCfv0E3WwnErVPemqMdG3W7Sn7bFEXbAM4O+bdJ6Vd22SNT/6dU5uwZodHzyFPAUFo3Zuju9QDUfLCLqtzF3cVkvjTfPigHUrqUm8HrZ3O2q+Og/Ub+HnNXl4Vo/nu4IqFUHbei18pxSxT+ci6jXQenfKn187ut3UfLizhhALUySr62fT8+Lp0v/oejH5xL1BmgamvCdpOUNVEANQU9o+qRif2IRUXegNl3T97JjB5Qd9PQ2ExT5M0WJupM8MmTxMsIOKDPoix+Zs4yOEfVbJE4qSOUoBlAOs+RvLRi7xiM+VETU6+mdJZ9F6fwiqiUv4g7IOeYRuvbVBxbsiaJbRL1WGgc/8wPHMYA8j1ueaTz0BzpF1OssotfsYsIOyCvosyPSi+kTUa+35BeLkjS6II5iADcL0gRai5LzkugSUW+wtRsrQgym6Cp27YA7dud+tmhDZFXF2kMh9IioO1Rwm7SjkoawA64Melrw80fpD1F3mlGJedM0Wo5jAFcct+SNWqX6H2pB1GXgw4++tfhbhp5h1w44Z3c+1L//mRMf/reF3hB1l4qOzVrH/eyA45ilRtas6Lnr6AtRd5s5b5f10hkjr0oa4g40JOaRus5Xy+Z86nHPPyfqMtU6/JWDhB2oX9Bfaf3iQTpC1GXn5ekfD9MZIqo5awdqd3YeoetU/fHLJcPoB1GXtU5dMkoIO3D3oM/q9HoJvSDqipH5dlkPb5+HfyTuwM0xN9ke9u71Y1nm3h50gqgrUu9HFq7mrB2wn52brQt7v7uaLhB1xVvzQUVIQOPRJyWJXTs8c3c+OmDUyYq1R0PoAVFXlZTxxWP0+sirxB2eEvNIsd63inXP65+oq1ps7OJlGg2PGoB6BYn1vVisc17vRN1j7N9f6R0WOv2AJBmJAFTDKNbzNLGuK8X65nVO1D1S1oIDUWb/oWc0HMlA4Uctg/2HnPlMrGde10QdwsQJxfF+xtjLxB1Ki3mMWLdbxPrldUzUcRupyUVJRkN0FXGHnPmJ9Rlt6HmlUKxXXrdEHbXwfGJBqlHfjbhDdjGPEusyL2HTZF6nRB318MdRedMM2g7XiDvcHfO2Yh2uFeuR1yVRhwM8F79pisn48I/EHa6OeW9j7OV1Yv3xOiTqcIKZM3YNat4k/nviDmfHfKRYZyVivfG6I+pwgeW5h9t3aP3KQS/iDgfHPE2sq4NiffE6I+pwg7LSSr+Ho+YW6DRBVgKP+oY8UKyfP4l19D9iPfG6IuqQiXFxeVMtvv0vaPiUKmrBW6yTWLFeVsZtmMrrh6hDzkcziw917tZu5h49u3f8G1+xHgI0FutLYn2UiXXC64WoQ2FSEzZNbhEw+iS7d3blg8U6WMX95UQd6rBjywnLU31ycgMMPa+we/ecXfnvDdFVc8V1Py6uP68Dog6VWpt7uH3frpmbTbqIai928KpiENezrbiur4rrW8YdLEQdnmdVdnnHgQ9lrTPru1UReOWG/EFx/WaK61gqrifrmqgDNTasPBL6bP/lWa3Mw09pxf9113JMI0s+4rrY9RXXaZ64XvtXHA5l/YKo455eea4wJTpsRpmvV+vr7OLdvxtvLq7D8+J6rBDXhfUJoo4GyV9+JGzc4FVzOjZ74WujJsjKLt75u3GLmPMwMe/5Yu57xfxZhyDqcN5RzdLD7V8YumZWZHDaUZNX2M86It/giDcXcxwp5jl/6OpZnyzlTU4QdbjRnqJvzG9M2Bo/pGvm5vCA0ScNGovYzXNkczt6MRd/MZ8+Yk6To+YUrBRzOyzmxzoCUYesbc8/FvjWhOL4gZH/semBJv3/4acN/slLMtjsPCHeRrH7tgvVR159Mjj1q1d6vffBcjGPv238KpD1AaIO1di0tDx8VmrxmGdj3nk/qsWzhwONv79k0JitXpLOZqe0XbedRdPyenSjp04/G56+N73v0uz3xZ/vY/Hn5HqDqMOj7dx4LHBFxr6YN8YVpiQ++m5Ov3aTdnb+3ZNft/KLPmfW3X/NoPG3asVO/1+cEeqbv75R/Pss2vuvtRH//ujfPfX10LZpe159fNnC98T3t0l8n59tPN6c6waiDjjAl6WnfcqLzrb6LO9cx70rzvX4a86Fx3ZlXRy0LePCqJI3LiWUzLyU+NFrl5I2v/y/qcuSjrzyF/HXbeLXO8R/v1P877vF7/tU/P4y8c8dFP/8IfF1vhRf75j4uswXSvX/AXO4pNyLosLqAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/wheel_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB39JREFUWMPFl12MXVUVx39773P2Oefembnz0XamrW21DQIWBOHFoEEMDz4SYyQYSI2JD0WCiSSSqIkPhleNKIaYGOFBY/yIPvlAVEB40ED9ACJNLRTascyUTuncmbnna3/5cPbcmQFU8IWbrOyTe5P7/+21/nutfUQIgffyk2w+PLL6NEMx4rxaYkme5XV1jlkvWFSneJ+fEl4MDywweUMjl27RcuOaXJQHpwgzAxADWJ0LvcWB77844/c+2ZfrJ6b84Nwkb7iwcRCxehm/Pomv5nHhEEFOA47BR+/dAni7jw4pAq5akSufLdXS515Tq1dPA7vRZGgkCgUo/Fxg7UhQK7c4znxJ+Okzgr0/x6ufBdIXxDvJwFvESZKzyflji2rpvlItH52nYB+7mEYzQUIfRQ9BD+gR6OHoYSkw5HL9cC5Pfi0xc7c70u95MfkjoHxHAAHIg55eVK8/8HJy6rjGqFnmmSKnICMjpSAhJ6WAGIECR46JUZCFGmVWj6j2uQetPXhjK6+9H8KF/woQgImQTf8pO//Q6WTlzgHzDAjkGDQCTUGOJieJEIIcyAnk2BgtBQ2JyaDMoBqSlK8eC20+aNTNx7Fh+T8C9INOH9NnvvWXdPnOXSwwQNDHUWAocGRoMjJyUnIUBZJiB4ChoEWHGuoM6gRqCbUkXX3xNq/6w3rq0/cQ2HgLgA6KE/rcsT9mr909YA8DFBM4+ttqmyHIySNAQo6MGfBjgJwG2WioNsUF1EBtyS4/c5dbOPJcO3fTd4SzOwFOpGtXPZYvfSVhJpkhpY+nj2cyrgWWHhZNQha9kCHJdgC0pK6GWkOTQK2iONB4qGqZvfSHL4e19MmgJv8KkHxz/SlkkOqMLj+zqOTR/cyTE8bu3gTpYymwZECGpkBvK4Hv3E+DaDU0atvOPVQOKgNmDnVh8VAiz97V7rnuOcAlE2GQj4Td/bx2ny/YRYGiIESILibwTODHRy1Hjc2YAz1ct3vbQJVCuSkeoHRQ2Q6gbKGeJD39wh2mf/0PgVPJ/VPX1V8sn71hWRZXzNNDI6KpOnMV40wEJscAnhxNEY9ijiULLTRlTLuAalM8Cpc1lBrMFHLp/F617/xNwKkE4HSS3Aoz5EhSQEOsbQdSxEz0YzZ6uGjINIIalG2g2ky9f6vwSMNGCqMMNhLUP0/fCjySAFxUvaM5GQpBEp2ZAikh1pwxSB+YwMfGk1Ag0KGFuux6Xelg1MIoh1ENG50g6ymsa9hQUBaof618aHwKhmJwMCOg4hcJ7HjeBNIxKxNjCEGGQLZVrLuFsom7TbZiLYF11YkPFYwyxOWN+TGAF1MzCoGAcchtod4EoYFebMPa2m7no7oTWVPdui67WBOwJmEoYJVuXROI2ve3+kBdgBD/1zwXJjq8zqHJocm6LljlUGVd1G+OHJptnVCshaELYg7RzYNxBPCAi2GBFmhDZ/IUyESCrnvQGjAWrAPnwbsugt8WIf6pIZCXYhNgMPSLF5w8bMWWoN0eAVrRCTcBSg/CgU67454YjSwLqFto2whjOhi7DcpZ8B7aijA5d3GcgV0j9+LZKvmEE90OLWBEJ9bSrQ1QBlAeggEpYjYDaCvJ67xzf9lCY7pobQdkXQQyYD2UPfz795/c9BZXWvfEicvc3cidaW5jM9MB0iiOg+Ag192xzwDtIG1TVJnDqIkdr4XaQNNCYzsAYzsoO4H94JVPpJsAB5U9sbv0Z4e1PNRXnWgWhTWdsPBdaqwDJaPX4qzRDnQr6DUZlAWMYhOqzBZIbbpsrI/w0/suugMLT49L0G6Ic9eq9ie/W8m/UaVROEASIIniwoG34AP0dDfwdgAY0E1KslmKUbMFUhuoYlaGOebje39Fm700Bnjg5kl3z29Hv9jv3B0rb6gjWQqJA7WZdt+JWwNJ0p22KoFCQgVoD9pC1kK/zhBVvhNg1ELdg0sVfvfCBXdg7lFhaXfcB26YMs83e8SDP32l993LIKUEGWvuojhAP4Om7sZ9JTsPZB4y221QNwq92QdGbdeKywLWaijz0Hzq4EPmxtlnROV2XkiME3x4wfz45d3NR/78QvaFJP4SLDgDzoHWsfZpvG3FqZuFDkCbLgtJnSHrYmv3awYuZbTX7/+1uWbiYWH8uPHtuBOWRoxuPGS+vvaanD15Mr3Ni64ntC0IGRud7sSrBPLtAJs+MJDWkrzKug670cIbLfbI7O/tNeGrorKXQiHe/lIqgLIVy1fsNcer82L93OnkrrqF2RR6GbR13H26bewTTes6H2gDuoW01qjVAqoWt8/9xn5A3CeqjVcRb3Mt/8HjQ5TcgmiMWN6/xx6f9v7v504m964uyUNFHyb7XQaqBAoFlYgeCFs+0C2kI9AjQT6pl93h7OHQq78vGn85iHfxZmSsGB3cb7/dXBSP92fcsWpZ3T68IPclKaQpZBq07PpEGiA1kDZxnQgr2WH3yzSER90BnpHLcXC8m1czAGMEwN/mZv0/vAoP77uajzVL8pPZSB71tVhw0LcBbKD0vXCBGX9SLPinwlA+5af9K1yiEuZ/TNP3+vX830UX5/xBVNUfAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/wheel_button_h.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABu9JREFUWMPFV2lsFVUUvrO+ve+9lkJLAwVEKgo/TA1qNEBYGtqCQpBFNBiCaFAD/sHoDyRRYkgkRDAQNUgiNhgEI1tZ2hSrREiEgIpBoYCUrbSF9m0z783uPXPvLEWg4B9f8vXcuTO533e+c+7tDGtZFvo/wTIMg/rDvEIdM7FpTNWsQ+MW1e4b0TBjb/mJWXuKry7YlUy/uiuZWb47eX3VvrKTaxuHb9988InXt/8w5tHdzeP4/taFH4v6+Y1pGlN97vCFT27kO5v+Uk9vuWl1vCQjqRoxqILl2CKeY2Mcy5Sblvy4ZnbOlbQ/PrvZfb1FVVObmptHP93f+ncV8OzRWcLYA0+t6JRv7rxotC/Ls8rQICpCEVSCQiiBAnjcFzBXbMdYyChD5uUluWz3d/t3PvbB4W+fjD2QgPqmJaXXem983aZeXpNn9WFhvChARFEk4JGIZcA4YEcyJjGM70cw4kiwkogzlHJdurBSznR8c2jLpCH3JWDRwfdL/1Y6tl4zUvNCTIKNo1KccRzx+C9ZPOoSCragf48BnBFGSElghJGZ66wvpNsb9m2cXXlPAauOfSn+rl5a32bdmhZDSbxcEpHs43jRmJ29X0SAQvSJssVYmFyNYAQR0qIYMcSkr4w3U2c37tv0RuKuAk7dOv/2aat7LiFN4pyLENQdHAhhAbxrvyPEgzMHkdHClDxEokoFdZ6ts3rPv3NHAbMb11T/ot9YyjJRLooFBO3sYjZx2BaQsLP1l8Kz3bOfMzGZRqFiAVqQAjuhiox+6eTi/SvrJ/QR8ErjBv66Kb98k2WGxWmzOd0ddF0gAHLebT5qOc1cxE8wepgQqkEvKiKOAkJGDHG9qYFGz43Fjavm87aAZT9uCyM2OPy8lJ0rYgKoNYFTYxBAXAjbzsQoWditfcBtPGyzEiLQApgUQ6FRFYkQXJbCpYvTOYUZawvYMGGB3GXpz6TD0cFRO0PH0pgrhrgRpy7Efdn7doQVITW36x7qmzlEBSJOGjsU6M0mzZ6uyW4JrhhmDaJ15Ow6OzX1i4i6DQli/FsOSsCaYY8YslfEvsQFHPM8uS5wyGi/6glIW3wVLMiCjRQ8jd62I0KCPhcE6oKdPZArNOsCTyMlxYQoz5FxnrXvGd3pka4AyQqVEQHEAdY39oOnvRGiQgLUKbvxFKfOAiXGhAWWkMssIYZrGMP9W/mkK8AygzHInsFANPrB+lzhaYkCtGF5I+RlnWd9YEiUGUIq4SghEvGclbOC3jmgiUT9fwCj0kaDNXTocoFA9cE/p/ngCsgzORPUyQSWA4nApDAwdAo1R6CDxbDNYM/r2A34H2DiaPmi5cQInQ+D04orIFJgOnW8mIFh+kFJYd4mxlHDUDJYcxrzUiFWXqCOYCG6IyZIBBiOKECQiMD32FBxyhUQ15g2WAxIdUoOhBq91uhYwShgcjlNHaDzml1XZ9v5RNhCAlRE0Iv4Gaao9IIrYCjDtSBKBBlD1LOEHIi0LMnazhyjgK81XCI1S0TB86a9zejWs088kZwHtgiROAIC7BhE3JDKVldAeYA9EssVuuQMzThLM8wSACFknsemySkqSvJAnICuhy0IIuhBpIrekeyUBwtVI4k0Wzag2RWgSua5h6Kh7yE7p7mc7JzMbethnPVI+0AG96gLICTvFxLwekQSkTisssnShNOugIbl9frgsPBViWF0ZFK03tR2J3vZ13ha3ifUgUzKYsmOC/RAUqgIcCLLIyMeTwllxZ/X7fiw0Od9YNe7045VDxS+wLW3cikiAMjztOnAfnBEl53G87J3mlS1ewgOH8Hrhzw9lmU7WtzYyq21hz5queMb0eiK4LpHkmiv1EtIIfNCmmQOQjSapVd3j1ijZQB3LEdAnu4M2CFZAVkjSluFkSVr7vpKtm75lEzVYHbZkLj1U6YHoVwvsf72xrvd/j4iJLotJSpCIuSoPH4iNHLAW7Wb3+y451vxjo+ntw8pFRYOijAHZCwg3Y3XodvOOQFdyykUvyDaIyZYn8bkORGxxZHWUEViYU3j0jP39V3Q+nVde9nA+PwRFcIaEZldUBIog0aPYeW2HeDaL9M5eLaXQSbH93KVkU+jgxLzph5d/OcDfRkdbxyfOXO89r2SRPSFoRVcA88oPVKKlKWQIv1h7xQH0KS4bCqUzdIyVjm7I5yMzqk/O2fZxFNzuh7408z5nTs35UiiSFgyaGBi8qjRgRXJEma/KKI20zBvGaoh6QQ9lmCd54qZQ8EqYWW8NDFlUEnZopqLNS39fhvezyf0kZNTCz+fnfLrnlM1a5suT6/f3z1j1O7U8wO2pWdGN2Osz8wsWd393MMrrkyf9tpv01a/2Dbp+Pjj1VJ/68LvH9f5eR16/VvHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAAlCAYAAACONvPuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjA1QjI4QTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MkE1MjFGODc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2k7HQAAAAKVJREFUeNpiZEAAIyCOAWINIBYDCTBCJRLExcXrFBQUBAUEBNjY2dmZGRkZGVigOrK0tLTEQaq+f//+/9u3b39AbJBklr6+vuqvX78YgKr/I1kDllRhY2NjB9L//v9HkQNL8jAxMTGiS4AAE5TGlIHqhMhi0ckCk6CR5L9///7jlMTpWrySBL1CnrGUSdIg+AYwynBKgsFg8CcTAx5AIwfhtRMgwABg9KLwDJeKlwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAlCAYAAACDKIOpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjA1QjI4RTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjA1QjI4RDc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lugQ8wAAADlJREFUeNpiYGBgOMPg7+//nendu3d/mf7//8+ARABlGdDFwMS/f//+Y5XAVEesEuzmYXMBSAwgwAAGDGVWQ3ijRgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAAlCAYAAACONvPuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjA1QjI5Mjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjA1QjI5MTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yLs/YAAAAL5JREFUeNq8UTsOwjAMdawqQhE7F0AMXXKU3qPH4CQMHAchRsauZQgdSVpq7KIuVRQJQXiSFfk9f2I9BQAneOPGceU4EtFZCFVV1YMT8N4/u64LTdPc27bdM3conHPDVKUUGGN0WZYbFmvOLyhdEuM4Qt/3FEIAa+2W6+tChAVIa73idxcTAREVP2uEOKaOaOeMqDhzX4h8H2UY+/EpuUXxcQkxPsPO5NjfWJbcGfOT/u3nzCEkkOlDyZ0vAQYApzrDr3PIkEgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjEwNDgxMzc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjEwNDgxMjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0BG1dwAAABpJREFUeNpiZGBgOCMvL6/5+/fvvwxoACDAAGiOBUKTvH+gAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjEwNDgxNzc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjEwNDgxNjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aFUCMAAAABVJREFUeNpilJKS+sQABEwMUAAQYAASUgFE0B817AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjEwNDgxQjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjEwNDgxQTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vZzRAQAAABpJREFUeNpilJKS+sSABlhZWZkfPnx4HSDAAClOBM5s/AWUAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAADCAYAAABfwxXFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMTY1NDg1Mjc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMTY1NDg1MTc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Sc/CAgAAAClJREFUeNpiZGBgOCMvL6/5+/fvvwxogAVMsLAwMWABjCCdDDgAQIABALFWBiGZGU1kAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjE4MTIzMjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjE4MTIzMTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+paGDHwAAABhJREFUeNpikJKS+sTEysrKzAAEZwACDAAP1QIhnbQ19QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAADCAYAAABfwxXFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMTY1NDg1Njc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMTY1NDg1NTc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8Yt1RQAAACtJREFUeNpilJKS+sSABlhZWZkfPnx4nQXEQJdkYWFhAtGMQHyGAQcACDAAWtgFv4rp/QcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButton.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgJJREFUOE9dkzmPUlEYhmcSbbQ2sdBY2NpgqXZWdv4HLZyfYE/ClgkEQtjXAsMmS1gbKkJjKMYCGpZAQAts6AZH8vk9J/dOmDnJm3x5t3vOveeeicjZCc673e6TQCBw6fF4rpxO5xEww6HhOc2chh+kUqmPXq/3t8vlEg2JzgbMcGh48N4veJjNZr+43W7x+Xzi9/slGAxKKBQyYIZDw4OXjF1wPh6PX6l4jSkcDksikZB0Oo3RgBkOzSq6JkOWgsf5fP6bnlGi0ajoFoW1Wq2kXC4brNdrw6HhwUuGLAUv4vH4LwQlJZfLyXa7NYHlcmnAgkPDg5cMWQpeRyKRI1stlUpSLBYlmUzKfD43QRYzHBoevLFY7K9KDgreZjKZm0KhIPV6XZrNpjEtFovbAmY4NDx49b3cqPTGFFSr1b1taLfbstvtTHAymRiw4NDsB5CxCxzD4fBnpVKRVqsltVrNBGazmejRDJhZaHjwkiFrXuJ+v3ereLQLeNucmScBZji7AC8ZsuYzKj7oU36wPQycs9FoSKfTMWCGQ8ODlwxZc5EUzxQX+qmuBoPBsdfrSb/fvwM4tM1mw9YvrIy5SOYqK14qPh0Oh+p0Ov0zGo3+EQLMcKp9V89ny3t7lW3wgzxVvFd8VeQVfQvMcGh4TPh+gX2cR4rnCofinQVmOLQ7v/N/0NkPdZCIgQoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAe9JREFUOE9dk7vL0mEUx98Xaqk5aCgaWltsrLamtv4HRft5Q8Ur4v0+NLpLCIFQe4M4a4u/FBcXpwJpaZHoTU7nc/AJfR/4wuF7Ob9zHh+vROTqDNfj8fhBJpN573meHwwGj4AaDg3PeeY8fKfZbL5V849QKCThcPgCcGh48N5ucLfdbr/DFIlEJBqNSjwel0QiYaCGQ8ODl4xrcD2bzZ5p99+Yksmk6LiSy+WkUCgYqOHQ8OAlQ5YG97vd7sdYLCbpdFqy2axwVquV1Ot1w3q9Ng4ND14yZGnwpFQqfUcoFouG7XZrgeVyaeDAOR0vGbI0eJ5KpY6MWq1WpVKp2Mi+71uQQw2HhgevTvNHpQANXmrXm3K5LHrDXJA0Gg1bwR1qODQ8ePP5/I1KL6zBYDD4RWcMupvsdjsLLhYLAwcODQ9eMq5BYDKZfKvVatLpdOwLHHZnV+DuAQ0PXjJk7RL3+31fOx8RGZV9uXG+BKjh0PDgJUPWfkbFm/l8/pXx3BStVkt6vZ6B2n0dD14yZO0hKR4pvM1m4w+Hw2O/32fHC8Ch6ZtgdO+UsYdkT1nxVBE8HA6fptPpz9Fo9JcQoIZT7bN6Qifv/6fswB/koeK1oqT4oPhyAjUcGh4L327g1rmneKwIKF6dQA2HdvF3/gckQc2QEBVViQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApdJREFUeNp0Ul1LVFEU3efeuV/jOMM4Ew5qJgzlRAmOIxKTEP6A/oDRa0+B8ywiKCI++KD0C3zxByT0ZA+BYYw2DmKkWUaWY4JFaOrMvd572uvgiBQdWNxz91lr73X2PmJsbIzqa3R0VJSHh9s3pBz2qtUHvufdRFw3jG3Dtl/dFWKye3Jyd3x8XNY12hVxaGFk5HG5Wl09//37iR4EnaauawD2iOEMHHAvEwghIDaeT0wUDo+P55icNE2TLMsi27YVsEcMZ+CACw20QkopNufnc29KpdemlKZhGARomqaAFQSBgud5Cq4Q7r2envuZwcG3sBLeqlRGLCLT4mqqEn9v5HLU2tVFJCXtrq/T11KJQrUa6bpOolYzockQPUKCpHd6mq9bRvXrfX2UGRi4bG5XKkWCv/ucpO4KGmjxl5Cum0BlAISObJb+Xu3d3eqszhOeF+dwExw4lmlKIxRS1XFH2PzfAsf3ffJJmXKUHyceP1N3466iyuby8j/Cjysr6hwAN9zUdIY4HJzGW1q+He3sZCAOsZPPxSJ5rkvp3l7uoaRt/v++sUGxcPhyOlHWsPYMCX525nIvipXKLZ6VhgSN3My91VX6tLSkqjuOQ42RiEqOcUrbDqCBFlc4bOzoWORq6wH/wCImEovFKJlMKkSjURXDGTjgQgOteki8aWU8PCiXn35ZW8v4JyfqhV5duIre0BDwNLZS2ewzDi0w9vQIW8vn82jIYSSV2r/W1kbnmtbMVi23WhWSEzmJRBBPp3919vcvxtLpOea+ZFSmp6d9MTU1pewVCgX1qBh3GH2M24zmCwMHjPeMIuMd48fMzIxX45cZwkxd7vjs7Oz50NAQiEeMDxfJGi4SnMAhhOg8cyU00P4RYAAZ2RK8jm+p0AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApNJREFUeNpkUt9LU2EY/s7ZOcfNjUltYBmlGPkrNSOL0mCbE+xiXepNBBM0hY3RdXTdH2Db1aDhH9BVGPljwsQIyqWE1cy70FKsyGE7bDs7p/f53CeWBx7OOe95nud9v+e8UjgcZuJKpVLScix24U0+/6ik6z6jXL6EuqKqm5rDkbnldj+5PTX1dXR01BIa+ZhYeTYxcT+zu7tS3N9/IBlGqypJMoBn1PANHHD/MaCCmozFHm7t7U0T2auqKlMUheF+/BnfwAEXGmgly7KklWTy2qt0+rVqmprNZmMCkiTxLsRhlUrlCGVZLt0JBvt7x8ezGKU2u7HxWLMsTal2s9ntrCsQYO19fcw0Tba+vMw+ZTLMVioxwzAwiQZNL2P3YODV8/k+CDVN4wZdg4Osf3j4KNz6piZ+3yQTWT6MDRpo8eYxCgWPOC/G7hkYYP9fPX4/FwueVSyeovJpGDiosyXOzX+bopwwEHkIHpmh4ODz1Ho8erXIie9mZ08YvF9cPPxtxAHX6fXqvBmhcLa5eWt7ba1NdMiSQalcZld8Ph7iKolzFKSTMhLTQIMoYPDrZjD48nku10IRy+hQS2dcn5tjqzMzXIBwHfRnYA5DZreb0ECLI/zwtLQsXB8a+mCSswjK5XIxt9vN4XQ6uQk6gwMuNNDyRaKHc4S7m0tL0ez8fButrSxCExeWqaauzrwaDG60+v1PqfSCsG3b2dlhoVBI55M0Nn6/2NHBiqZZb1QqNfrBgWSRUV1Dg3m+u/t3YGRk4Uxn5zRx04Rvk5OTFWlsbIyPl0gk+FIRLhNuENqxQ9UBdgmfCW8JHwk/I5FIuUSbqSAUrGc0GjXi8TiIecKXqpmzavAHE0KI5IlrQQPtXwEGAI4lFJG9vogeAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmtJREFUeNp0UzuLmkEUne/zrati4ou1V4JrBAkpbARJsRYhvY1FmqSTsEUgKGhlYb9VBGH/QSBKMGLaECxiJJjOIuLqJoFofD9yzsRPtsnAYYY795y5586MUigUhDby+bxSr9fdvV7v5XK5fLRer88YNxgMX0wmUyMUCpXOz89visXiXuOot8j6SqXypNPpfJ7P5y8Qum80GlWCa8a4xxzmajwFaiKXyxmq1erT4XB4qdPphF6vF5wVRZFJ+/1ebLdbsdls5Oz3+59nMpnX2F8r2FTa7Xa42Wx+AtGEEwVBciqVkgK1Wk2KrFYrCQgtk8nkg1gs1mV51m63+wo+TRaLRdhsNgmKnJ6eSnCtxZnDXHLIpRf3YrFImM1mYbVaBWckiNlsdmwu7ZBIa6r6r23kkEuBu/DlOyiLRCIhvF6vuD3S6bScR6ORgFV5CG7JjdAdClgQ2LHb9E2P/xvcYw4t7XY7dtgir8PhcMxQhYPrRqMhJpMJTxAXFxeSWC6XBd6BsNvtsg+04XQ6pUcKzHw+Xx9XGKEybTBxOp0eT/Z4POLk5ET2gmAl5GBrToGfkUjk7Xg8DkNZ1a6Qo9/vy5lkivIq+RYgsiOHXLb0BhY+INCGr+Op7Hir1ZLgWhvMYS455MqHhEUAeDwYDJ7hH5yhRJWn4S+Iw1/QmrcLBoPdQCBwifAb4LuO5cXj8TnVUOY1NrcgewETylXpGQ3b4vn+ikaj71wu1xVy3wMDiG6VUqkkO5zNZuWjAsLAQ+Ae4DtUfg18BT4CXeAH/4G0ys9xuN8NTmXib+DbQcx2EPjDCklk55F7/M5/BRgAk6YORNXAcuoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnRJREFUeNpcU79rWlEYvc/fGiJaTVPTJYqLPKcQHGuGZtPVxcFIHcx/UJB0qAr9B0SX6tIsri0daouhS0BCpqrgEOzQxkDaQsUnjT7tORefpL1wvNf7fed83z33PuXo6EgYo9FoKKenp/7Ly8vn0+n06d3dXZT7Npvti9Pp/Li3t/cqnU7fZrPZpcFRDAGQLcViMXF9fV2dzWaPTCaTuD8Wi4WwWq2jQCBwfHJy8g4i87UAyNZyufxsOBxWzWazICigKIokL5dLKaDrusTu7u5xoVB4jfhMQVA5OztTm83mBTbsFotFECTn83kpUKvVpMh8PpfA+k8qldo/ODjosk/X+fl5ARXtGMLhcAicl+2KcDgswTX3GGMOc8kh14If/3g8jsMoGeTMI8DA9fn539g3vCGHXAr44Pg2yWw9k8mIUCj0j4GlUknOV1dX9EseB0b7sfWAAk60toC6lL5f+f9hxFiI3pFLAeH1erXJZOLmul6vC3TECtI8Dppp+EBwuN1ujTOrasFg8CtdZ9Lm5qbw+XzC4/GsK3PNPcaYw1xyEJqyg5+4jveDwUBFwESjjPvv9Xpypvsul0uene8AIgtyyOU72MDiSafTedlqtfaNN8DzwmkpwMq8BeMtHB4eXsRisRcIfVZWZjwGkv1+P99ut6MgmoxqxjVSFEKLeDzeVVW1iu23wDfzaDQSiURiij+3W1tbN9FoVMezfQjYNU0z8d7x/vVIJPIrmUx+2NnZeYPcT8B3iOpKLpeT7VUqFfmoABWIARFge+XjDdAHOkAX+MHvQF4pPxKeCxtztM3E38BgJbaxEpiwQxLpPHLXn/NfAQYAVxYSIuMwPrYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjdJREFUeNqEUzuLGlEYvTM+xvcj0ShYWkhYjSAhhRYBSWGXP5FeSRUICFpZWOgfGBDSpwuyGCFgFRaLNUMwXZrg4iYBIb5nzDk3juwuC7lwQL/vnPM97h2l0WgI+9TrdaXf78em0+mbzWbzYrfbZRl3uVxfNE0bZDKZVqVSuW42mwdbo94QO3VdfzmZTC5Xq9VrhJ643W6V4G/GmCOH3JOBoigUu3q93qv5fP4e/5Mej0d4vd5bYIw5csilhlrlcDgo4/H4bDgcXjidTg0VBeFwOISq/mvQsixhmqbYbrcS+/1+Uy6XnxYKBYMMn2EYbzGnxkp+v18iEAjcgh0nh1xqqOUssfV6/Zwt+nw+2SoI93aADk8xaqilwUMkE/acJJVKJRGPx8XNg9nFaDSSHBrilmIIP6CBF0HruPHTrHcPY9iX3A92QBOFWnkdoVBoCWHIbm8wGIjFYiHNeDgOOCISicgR2GU4HF4yR4NlIpH4PpvNcnaSRC6OFXl4XYyzOtsnjxqkVjT4lcvlPmDGM74LJrmP+w4NaYCOLGqoZc/XaO8TAmMm/3fIIZcaauUIwCSdTuuo7MZ3kMXC5Au9Wx0jWNls1kilUjo11Do4a7FYXNEtGAxeIWmC/AiVNFyVelyymUwmf+fz+fNoNPoOoY/Aj3a7bSqtVkvgSxO1Wk0+KoC7eAY8BhLHBq6Ar8BnwAB+djqdHQoIp33v3W53X61WSVwA345m/qPBH3ZIITcP7oEaav8KMADyzRBm/XofAgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAk1JREFUeNqEUj2LGlEUfTOOjhoVTDQrdpai2UKCrRax09YiIihYGPQHBFKKkB+gpNPCbGOzTUgREjSFCCHYJEMghRKL6MImAT9Gos6Yex4+GLbJg4POfefce+69TyqVSkycbrcrXV1dBSaTyfPdbvdkv9/HEXc4HF9dLtf7RCLxslAo3JbL5ZPQKBax0mg0sovF4tXhcAjJssxsNhu/MwzjcrVaXY5Go6fT6fQZcd9QkiPu5LPY3mw2K/P5/No0zRBVRFWmqiqH+MYdOOBCA610Op2k4XAY6/f7nyVJUhVFYQCqwwUOCeGCHY9HDtL8zefzj9PptAaGezwevyCyimpOp5NRvxz4f/cbHHChgRYzCKzX65SwjF9UB8gRd0AVuQOrK2igRYIHNPELq7hYLLJIJMKsZzabsV6vxzlISIMOUPg+ErjImklCGb2jX1ofu3sQgxAcuMHsoOVr9Pv9+na79Ql7nU6H6brOk/FVUdztdjOPx8PEen0+ny7egU52f2ia9gg9o4LX6+VDsx6xGbgADxoK71DyN63jrd1uN0U19ImKViAmHIILDbSI3AaDwY+ZTGaC7P874IALDbS8BcKXZDLZIeuOwWAQpxXJYoVWId2bqVRKi8ViHWigtS2XS5bNZndnJzfxeNyg4T2kSaubzYZ7DoVCRjQa/ZPL5d6Fw+HXFPpA+FmtVg2pUqnw/trtNn9UhBghSYgSLs4GbgjfCJ8IGuFXrVY7YLUKVoX3Xa/Xj61WC8QV4fs52b1zgi0cQojJE/cEDbT/BBgAoZsTVzzPeQgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardTop0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAApCAYAAAAWNlirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF1JREFUOI1jqa2tZQCB3NxceyBVBMTGQCzNAhLMycmp+P//fzsDEmABCoJUtjKgAZbv379P5uDgYMKQYGZm1kQXBEuAANB8TAlsgiND4t+/f6OW09/yISaBVZQsHQCsMHUPEsgdpgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardTop1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAApCAIAAAB7iNSFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCFtjevXqFdP///+ZGBgYUGhi8b9//8gWw4eR3AMAjT9unIbIdHUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardTop2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAApCAYAAAAWNlirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF5JREFUOI1jefXq1X8GBoanQHwWiPuA+CAQM7D8/w8SZ5CGYj8grgTiDhYGTNAKxEdgOpAB048fPyZj08HAzMysg00HAwsIYJNAdtXwlfj379+o5fS3fIhJYBUlSwcAax55fnDttN0AAAAASUVORK5CYII= +*/ ADDED Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLPaths.txt Index: Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLPaths.txt ================================================================== --- Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLPaths.txt +++ Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLPaths.txt @@ -0,0 +1,1 @@ +@STATIC;1.0;u;57;Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.pngu;65;Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png105;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow1.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow1.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow3.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow3.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow4.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow4.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow5.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow5.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow7.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow7.pngu;50;Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.pngu;50;Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded0.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded0.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded2.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded2.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded6.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded6.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded8.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded8.pngu;53;Resources/_CPToolbarView/_CPToolbarViewBackground.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPToolbarView/_CPToolbarViewBackground.pngu;67;Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.pngu;58;Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png98;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.pngu;56;Resources/_CPWindowView/_CPWindowViewResizeIndicator.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPWindowView/_CPWindowViewResizeIndicator.pngu;27;Resources/action_button.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/action_button.pngu;28;Resources/brightness_bar.png68;mhtml:Browser.environment/MHTMLData.txt!Resources/brightness_bar.pngu;38;Resources/browser-leaf-highlighted.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/browser-leaf-highlighted.pngu;26;Resources/browser-leaf.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/browser-leaf.pngu;36;Resources/browser-resize-control.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/browser-resize-control.pngu;24;Resources/color_well.png64;mhtml:Browser.environment/MHTMLData.txt!Resources/color_well.pngu;31;Resources/CPApplication/New.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/New.pngu;42;Resources/CPApplication/NewHighlighted.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/NewHighlighted.pngu;32;Resources/CPApplication/Open.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/Open.pngu;43;Resources/CPApplication/OpenHighlighted.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/OpenHighlighted.pngu;32;Resources/CPApplication/Save.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/Save.pngu;43;Resources/CPApplication/SaveHighlighted.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/SaveHighlighted.pngu;43;Resources/CPImage/CPImageNameColorPanel.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImage/CPImageNameColorPanel.pngu;54;Resources/CPImage/CPImageNameColorPanelHighlighted.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImage/CPImageNameColorPanelHighlighted.pngu;53;Resources/CPImageView/CPImageViewBottomLeftShadow.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewBottomLeftShadow.pngu;54;Resources/CPImageView/CPImageViewBottomRightShadow.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewBottomRightShadow.pngu;49;Resources/CPImageView/CPImageViewBottomShadow.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewBottomShadow.pngu;47;Resources/CPImageView/CPImageViewLeftShadow.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewLeftShadow.pngu;48;Resources/CPImageView/CPImageViewRightShadow.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewRightShadow.pngu;50;Resources/CPImageView/CPImageViewTopLeftShadow.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewTopLeftShadow.pngu;51;Resources/CPImageView/CPImageViewTopRightShadow.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewTopRightShadow.pngu;46;Resources/CPImageView/CPImageViewTopShadow.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewTopShadow.pngu;42;Resources/CPMenuItem/CPMenuItemOnState.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/CPMenuItem/CPMenuItemOnState.pngu;53;Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/CPMenuItem/CPMenuItemOnStateHighlighted.pngu;67;Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.pngu;67;Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.pngu;67;Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.pngu;70;Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.pngu;70;Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.pngu;70;Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.pngu;75;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png115;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.pngu;75;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png115;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.pngu;75;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png115;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.pngu;78;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png118;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.pngu;78;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png118;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.pngu;78;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png118;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.pngu;73;Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif113;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gifu;47;Resources/CPSearchField/CPSearchFieldCancel.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldCancel.pngu;54;Resources/CPSearchField/CPSearchFieldCancelPressed.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldCancelPressed.pngu;45;Resources/CPSearchField/CPSearchFieldFind.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldFind.pngu;47;Resources/CPSearchField/CPSearchFieldSearch.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldSearch.pngu;50;Resources/CPShadowView/CPShadowViewHeavyBottom.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyBottom.pngu;54;Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyBottomLeft.pngu;55;Resources/CPShadowView/CPShadowViewHeavyBottomRight.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyBottomRight.pngu;48;Resources/CPShadowView/CPShadowViewHeavyLeft.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyLeft.pngu;49;Resources/CPShadowView/CPShadowViewHeavyRight.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyRight.pngu;47;Resources/CPShadowView/CPShadowViewHeavyTop.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyTop.pngu;51;Resources/CPShadowView/CPShadowViewHeavyTopLeft.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyTopLeft.pngu;52;Resources/CPShadowView/CPShadowViewHeavyTopRight.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyTopRight.pngu;50;Resources/CPShadowView/CPShadowViewLightBottom.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightBottom.pngu;54;Resources/CPShadowView/CPShadowViewLightBottomLeft.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightBottomLeft.pngu;55;Resources/CPShadowView/CPShadowViewLightBottomRight.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightBottomRight.pngu;48;Resources/CPShadowView/CPShadowViewLightLeft.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightLeft.pngu;49;Resources/CPShadowView/CPShadowViewLightRight.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightRight.pngu;47;Resources/CPShadowView/CPShadowViewLightTop.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightTop.pngu;51;Resources/CPShadowView/CPShadowViewLightTopLeft.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightTopLeft.pngu;52;Resources/CPShadowView/CPShadowViewLightTopRight.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightTopRight.pngu;47;Resources/CPSplitView/CPSplitViewHorizontal.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSplitView/CPSplitViewHorizontal.pngu;45;Resources/CPSplitView/CPSplitViewVertical.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSplitView/CPSplitViewVertical.pngu;51;Resources/CPTabView/_CPTabLabelBackgroundCenter.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelBackgroundCenter.pngu;49;Resources/CPTabView/_CPTabLabelBackgroundLeft.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelBackgroundLeft.pngu;50;Resources/CPTabView/_CPTabLabelBackgroundRight.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelBackgroundRight.pngu;49;Resources/CPTabView/_CPTabLabelSelectedCenter.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelSelectedCenter.pngu;47;Resources/CPTabView/_CPTabLabelSelectedLeft.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelSelectedLeft.pngu;48;Resources/CPTabView/_CPTabLabelSelectedRight.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelSelectedRight.pngu;46;Resources/CPTabView/_CPTabLabelsViewCenter.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelsViewCenter.pngu;44;Resources/CPTabView/_CPTabLabelsViewLeft.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelsViewLeft.pngu;45;Resources/CPTabView/_CPTabLabelsViewRight.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelsViewRight.pngu;54;Resources/CPTabView/CPTabViewBezelBackgroundCenter.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBackgroundCenter.pngu;44;Resources/CPTabView/CPTabViewBezelBorder.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBorder.pngu;48;Resources/CPTabView/CPTabViewBezelBorderLeft.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBorderLeft.pngu;49;Resources/CPTabView/CPTabViewBezelBorderRight.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBorderRight.pngu;51;Resources/CPToolbarItem/CPToolbarItemSeparator0.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPToolbarItem/CPToolbarItemSeparator0.pngu;51;Resources/CPToolbarItem/CPToolbarItemSeparator1.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPToolbarItem/CPToolbarItemSeparator1.pngu;51;Resources/CPToolbarItem/CPToolbarItemSeparator2.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPToolbarItem/CPToolbarItemSeparator2.pngu;38;Resources/CPWindow/CPWindowShadow0.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow0.pngu;38;Resources/CPWindow/CPWindowShadow1.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow1.pngu;38;Resources/CPWindow/CPWindowShadow2.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow2.pngu;38;Resources/CPWindow/CPWindowShadow3.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow3.pngu;38;Resources/CPWindow/CPWindowShadow4.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow4.pngu;38;Resources/CPWindow/CPWindowShadow5.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow5.pngu;38;Resources/CPWindow/CPWindowShadow6.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow6.pngu;38;Resources/CPWindow/CPWindowShadow7.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow7.pngu;38;Resources/CPWindow/CPWindowShadow8.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow8.pngu;37;Resources/CPWindowResizeIndicator.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindowResizeIndicator.pngu;19;Resources/empty.png59;mhtml:Browser.environment/MHTMLData.txt!Resources/empty.pngu;31;Resources/FIXME_ImageShadow.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/FIXME_ImageShadow.pngu;25;Resources/GenericFile.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/GenericFile.pngu;34;Resources/HUDTheme/WindowClose.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/HUDTheme/WindowClose.pngu;40;Resources/HUDTheme/WindowCloseActive.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/HUDTheme/WindowCloseActive.pngu;26;Resources/minus_button.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/minus_button.pngu;25;Resources/plus_button.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/plus_button.pngu;27;Resources/slider_button.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/slider_button.pngu;29;Resources/slider_button_h.png69;mhtml:Browser.environment/MHTMLData.txt!Resources/slider_button_h.pngu;37;Resources/standardApplicationIcon.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/standardApplicationIcon.pngu;25;Resources/wheel_black.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/wheel_black.pngu;26;Resources/wheel_button.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/wheel_button.pngu;28;Resources/wheel_button_h.png68;mhtml:Browser.environment/MHTMLData.txt!Resources/wheel_button_h.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground0.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground0.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground1.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground1.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground2.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground2.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground3.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground3.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground4.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground4.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground5.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground5.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground6.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground6.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground7.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground7.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground8.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground8.pngu;59;Resources/CPWindow/Standard/CPWindowStandardCloseButton.png99;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButton.pngu;70;Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.pngu;66;Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png106;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.pngu;77;Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png117;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.pngu;62;Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png102;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.pngu;73;Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png113;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.pngu;62;Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png102;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.pngu;73;Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png113;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.pngu;52;Resources/CPWindow/Standard/CPWindowStandardTop0.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardTop0.pngu;52;Resources/CPWindow/Standard/CPWindowStandardTop1.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardTop1.pngu;52;Resources/CPWindow/Standard/CPWindowStandardTop2.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardTop2.png ADDED Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLTest.txt Index: Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLTest.txt ================================================================== --- Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLTest.txt +++ Site/Site_Z/Frameworks/AppKit/Browser.environment/MHTMLTest.txt @@ -0,0 +1,9 @@ +/* +Content-Type: multipart/related; boundary="_SEPARATOR_" + +--_SEPARATOR_ +Content-Location:test +Content-Transfer-Encoding:base64 + +R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== +*/ ADDED Site/Site_Z/Frameworks/AppKit/Browser.environment/dataURLs.txt Index: Site/Site_Z/Frameworks/AppKit/Browser.environment/dataURLs.txt ================================================================== --- Site/Site_Z/Frameworks/AppKit/Browser.environment/dataURLs.txt +++ Site/Site_Z/Frameworks/AppKit/Browser.environment/dataURLs.txt cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/CommonJS.environment/AppKit.sj Index: Site/Site_Z/Frameworks/AppKit/CommonJS.environment/AppKit.sj ================================================================== --- Site/Site_Z/Frameworks/AppKit/CommonJS.environment/AppKit.sj +++ Site/Site_Z/Frameworks/AppKit/CommonJS.environment/AppKit.sj @@ -0,0 +1,33476 @@ +@STATIC;1.0;p;15;_CPCornerView.jt;1340;@STATIC;1.0;i;8;CPView.jt;1309; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPCornerView"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("layoutSubviews"),function(_3,_4){ +with(_3){ +objj_msgSend(_3,"setBackgroundColor:",objj_msgSend(_3,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("_init"),function(_5,_6){ +with(_5){ +objj_msgSend(_5,"setBackgroundColor:",objj_msgSend(_5,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPCornerView").super_class},"initWithFrame:",_9); +if(_7){ +objj_msgSend(_7,"_init"); +} +return _7; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("_CPCornerView").super_class},"initWithCoder:",_c); +if(_a){ +objj_msgSend(_a,"_init"); +} +return _a; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_d,_e){ +with(_d){ +return "cornerview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_f,_10){ +with(_f){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null")],["background-color"]); +} +})]); +p;18;_CPDisplayServer.jt;1144;@STATIC;1.0;t;1125; +var _1=[],_2={},_3=[],_4={},_5=objj_msgSend(CPRunLoop,"mainRunLoop"); +_CPDisplayServerAddDisplayObject=function(_6){ +var _7=objj_msgSend(_6,"UID"); +if(typeof _2[_7]!=="undefined"){ +return; +} +var _8=_1.length; +_2[_7]=_8; +_1[_8]=_6; +}; +_CPDisplayServerAddLayoutObject=function(_9){ +var _a=objj_msgSend(_9,"UID"); +if(typeof _4[_a]!=="undefined"){ +return; +} +var _b=_3.length; +_4[_a]=_b; +_3[_b]=_9; +}; +var _c=objj_allocateClassPair(CPObject,"_CPDisplayServer"),_d=_c.isa; +objj_registerClassPair(_c); +class_addMethods(_d,[new objj_method(sel_getUid("run"),function(_e,_f){ +with(_e){ +while(_3.length||_1.length){ +var _10=0; +for(;_10<_3.length;++_10){ +var _11=_3[_10]; +delete _4[objj_msgSend(_11,"UID")]; +objj_msgSend(_11,"layoutIfNeeded"); +} +_3=[]; +_4={}; +_10=0; +for(;_10<_1.length;++_10){ +if(_3.length){ +break; +} +var _11=_1[_10]; +delete _2[objj_msgSend(_11,"UID")]; +objj_msgSend(_11,"displayIfNeeded"); +} +if(_10===_1.length){ +_1=[]; +_2={}; +}else{ +_1.splice(0,_10); +} +} +objj_msgSend(_5,"performSelector:target:argument:order:modes:",sel_getUid("run"),_e,nil,0,[CPDefaultRunLoopMode]); +} +})]); +objj_msgSend(_CPDisplayServer,"run"); +p;21;_CPImageAndTextView.jt;7255;@STATIC;1.0;I;21;Foundation/CPString.ji;9;CPColor.ji;8;CPFont.ji;9;CPImage.ji;8;CPView.ji;11;CPControl.jt;7144; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPControl.j",YES); +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5,_7=1<<6,_8=1<<7,_9=1<<8,_a=1<<9,_b=1<<10; +var _c=objj_allocateClassPair(CPView,"_CPImageAndTextView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_alignment"),new objj_ivar("_verticalAlignment"),new objj_ivar("_lineBreakMode"),new objj_ivar("_textColor"),new objj_ivar("_font"),new objj_ivar("_textShadowColor"),new objj_ivar("_textShadowOffset"),new objj_ivar("_imagePosition"),new objj_ivar("_imageScaling"),new objj_ivar("_imageOffset"),new objj_ivar("_shouldDimImage"),new objj_ivar("_image"),new objj_ivar("_text"),new objj_ivar("_textSize"),new objj_ivar("_flags")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:control:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPImageAndTextView").super_class},"initWithFrame:",_10); +if(_e){ +_textShadowOffset={width:0,height:0}; +objj_msgSend(_e,"setVerticalAlignment:",CPTopVerticalTextAlignment); +if(_11){ +objj_msgSend(_e,"setLineBreakMode:",objj_msgSend(_11,"lineBreakMode")); +objj_msgSend(_e,"setTextColor:",objj_msgSend(_11,"textColor")); +objj_msgSend(_e,"setAlignment:",objj_msgSend(_11,"alignment")); +objj_msgSend(_e,"setVerticalAlignment:",objj_msgSend(_11,"verticalAlignment")); +objj_msgSend(_e,"setFont:",objj_msgSend(_11,"font")); +objj_msgSend(_e,"setImagePosition:",objj_msgSend(_11,"imagePosition")); +objj_msgSend(_e,"setImageScaling:",objj_msgSend(_11,"imageScaling")); +objj_msgSend(_e,"setImageOffset:",objj_msgSend(_11,"imageOffset")); +}else{ +objj_msgSend(_e,"setLineBreakMode:",CPLineBreakByClipping); +objj_msgSend(_e,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_e,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",12)); +objj_msgSend(_e,"setImagePosition:",CPNoImage); +objj_msgSend(_e,"setImageScaling:",CPScaleNone); +} +_textSize=NULL; +} +return _e; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_12,_13,_14){ +with(_12){ +return objj_msgSend(_12,"initWithFrame:control:",_14,nil); +} +}),new objj_method(sel_getUid("setAlignment:"),function(_15,_16,_17){ +with(_15){ +if(_alignment===_17){ +return; +} +_alignment=_17; +} +}),new objj_method(sel_getUid("alignment"),function(_18,_19){ +with(_18){ +return _alignment; +} +}),new objj_method(sel_getUid("setVerticalAlignment:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_verticalAlignment===_1c){ +return; +} +_verticalAlignment=_1c; +_flags|=_5; +objj_msgSend(_1a,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("verticalAlignment"),function(_1d,_1e){ +with(_1d){ +return _verticalAlignment; +} +}),new objj_method(sel_getUid("setLineBreakMode:"),function(_1f,_20,_21){ +with(_1f){ +if(_lineBreakMode===_21){ +return; +} +_lineBreakMode=_21; +_flags|=_6; +objj_msgSend(_1f,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("lineBreakMode"),function(_22,_23){ +with(_22){ +return _lineBreakMode; +} +}),new objj_method(sel_getUid("setImagePosition:"),function(_24,_25,_26){ +with(_24){ +if(_imagePosition==_26){ +return; +} +if(_imagePosition==CPNoImage){ +_flags|=_2; +} +_imagePosition=_26; +_flags|=_a; +objj_msgSend(_24,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imagePosition"),function(_27,_28){ +with(_27){ +return _imagePosition; +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_29,_2a,_2b){ +with(_29){ +if(_imageScaling==_2b){ +return; +} +_imageScaling=_2b; +_flags|=_b; +objj_msgSend(_29,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imageScaling"),function(_2c,_2d){ +with(_2c){ +return _imageScaling; +} +}),new objj_method(sel_getUid("setDimsImage:"),function(_2e,_2f,_30){ +with(_2e){ +_30=!!_30; +if(_shouldDimImage!==_30){ +_shouldDimImage=_30; +objj_msgSend(_2e,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("setTextColor:"),function(_31,_32,_33){ +with(_31){ +if(_textColor===_33){ +return; +} +_textColor=_33; +} +}),new objj_method(sel_getUid("textColor"),function(_34,_35){ +with(_34){ +return _textColor; +} +}),new objj_method(sel_getUid("setFont:"),function(_36,_37,_38){ +with(_36){ +if(_font===_38){ +return; +} +_font=_38; +_flags|=_8; +_textSize=NULL; +objj_msgSend(_36,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("font"),function(_39,_3a){ +with(_39){ +return _font; +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_textShadowColor===_3d){ +return; +} +_textShadowColor=_3d; +_flags|=_9; +objj_msgSend(_3b,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_3e,_3f){ +with(_3e){ +return _textShadowColor; +} +}),new objj_method(sel_getUid("setTextShadowOffset:"),function(_40,_41,_42){ +with(_40){ +if((_textShadowOffset.width==_42.width&&_textShadowOffset.height==_42.height)){ +return; +} +_textShadowOffset={width:_42.width,height:_42.height}; +objj_msgSend(_40,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("textShadowOffset"),function(_43,_44){ +with(_43){ +return _textShadowOffset; +} +}),new objj_method(sel_getUid("setImage:"),function(_45,_46,_47){ +with(_45){ +if(_image==_47){ +return; +} +if(objj_msgSend(_image,"delegate")===_45){ +objj_msgSend(_image,"setDelegate:",nil); +} +_image=_47; +_flags|=_2; +if(objj_msgSend(_image,"loadStatus")!==CPImageLoadStatusCompleted){ +objj_msgSend(_image,"setDelegate:",_45); +} +objj_msgSend(_45,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setImageOffset:"),function(_48,_49,_4a){ +with(_48){ +if(_imageOffset===_4a){ +return; +} +_imageOffset=_4a; +objj_msgSend(_48,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("imageOffset"),function(_4b,_4c){ +with(_4b){ +return _imageOffset; +} +}),new objj_method(sel_getUid("imageDidLoad:"),function(_4d,_4e,_4f){ +with(_4d){ +if(_4f===_image){ +_flags|=_2; +objj_msgSend(_4d,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("image"),function(_50,_51){ +with(_50){ +return _image; +} +}),new objj_method(sel_getUid("setText:"),function(_52,_53,_54){ +with(_52){ +if(_text===_54){ +return; +} +_text=_54; +_flags|=_3; +_textSize=NULL; +objj_msgSend(_52,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("text"),function(_55,_56){ +with(_55){ +return _text; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_57,_58){ +with(_57){ +_flags=0; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_59,_5a){ +with(_59){ +var _5b=CGSizeMakeZero(); +if((_imagePosition!==CPNoImage)&&_image){ +var _5c=objj_msgSend(_image,"size"); +_5b.width+=_5c.width; +_5b.height+=_5c.height; +} +if((_imagePosition!==CPImageOnly)&&objj_msgSend(_text,"length")>0){ +if(!_textSize){ +_textSize=objj_msgSend(_text,"sizeWithFont:",_font?_font:objj_msgSend(CPFont,"systemFontOfSize:",12)); +} +if(_imagePosition===CPImageLeft||_imagePosition===CPImageRight){ +_5b.width+=_textSize.width+_imageOffset; +_5b.height=MAX(_5b.height,_textSize.height); +}else{ +if(_imagePosition===CPImageAbove||_imagePosition===CPImageBelow){ +_5b.width=MAX(_5b.width,_textSize.width); +_5b.height+=_textSize.height+_imageOffset; +}else{ +_5b.width=MAX(_5b.width,_textSize.width); +_5b.height=MAX(_5b.height,_textSize.height); +} +} +} +objj_msgSend(_59,"setFrameSize:",_5b); +} +})]); +p;29;_CPToolbarFlexibleSpaceItem.jt;794;@STATIC;1.0;i;15;CPToolbarItem.jt;756; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarFlexibleSpaceItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarFlexibleSpaceItem").super_class},"initWithItemIdentifier:",CPToolbarFlexibleSpaceItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(10000,32)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;25;_CPToolbarSeparatorItem.jt;780;@STATIC;1.0;i;15;CPToolbarItem.jt;742; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarSeparatorItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarSeparatorItem").super_class},"initWithItemIdentifier:",CPToolbarSeparatorItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(2,0)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(2,100000)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;26;_CPToolbarShowColorsItem.jt;1230;@STATIC;1.0;i;15;CPToolbarItem.jt;1191; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarShowColorsItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarShowColorsItem").super_class},"initWithItemIdentifier:",CPToolbarShowColorsItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setLabel:","Colors"); +objj_msgSend(_3,"setPaletteLabel:","Show Colors"); +objj_msgSend(_3,"setTarget:",CPApp); +objj_msgSend(_3,"setAction:",sel_getUid("orderFrontColorPanel:")); +objj_msgSend(_3,"setImage:",objj_msgSend(CPImage,"imageNamed:",CPImageNameColorPanel)); +objj_msgSend(_3,"setAlternateImage:",objj_msgSend(CPImage,"imageNamed:",CPImageNameColorPanelHighlighted)); +objj_msgSend(_3,"setToolTip:","Show the Colors panel."); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;21;_CPToolbarSpaceItem.jt;767;@STATIC;1.0;i;15;CPToolbarItem.jt;729; +objj_executeFile("CPToolbarItem.j",YES); +var _1=objj_allocateClassPair(CPToolbarItem,"_CPToolbarSpaceItem"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithItemIdentifier:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPToolbarSpaceItem").super_class},"initWithItemIdentifier:",CPToolbarSpaceItemIdentifier); +if(_3){ +objj_msgSend(_3,"setMinSize:",CGSizeMake(32,32)); +objj_msgSend(_3,"setMaxSize:",CGSizeMake(32,32)); +} +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9,_a,_b){ +with(_9){ +} +})]); +p;8;AppKit.jt;4031;@STATIC;1.0;i;9;CALayer.ji;9;CPAlert.ji;13;CPAnimation.ji;15;CPApplication.ji;14;CPBezierPath.ji;7;CPBox.ji;11;CPBrowser.ji;10;CPButton.ji;13;CPButtonBar.ji;12;CPCheckBox.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;14;CPCibLoading.ji;22;CPCibOutletConnector.ji;12;CPClipView.ji;18;CPCollectionView.ji;22;CPCollectionViewItem.ji;9;CPColor.ji;14;CPColorPanel.ji;13;CPColorWell.ji;17;CPCompatibility.ji;11;CPControl.ji;10;CPCookie.ji;10;CPCursor.ji;12;CPDocument.ji;22;CPDocumentController.ji;9;CPEvent.ji;14;CPFlashMovie.ji;13;CPFlashView.ji;8;CPFont.ji;15;CPFontManager.ji;12;CPGeometry.ji;12;CPGraphics.ji;9;CPImage.ji;13;CPImageView.ji;14;CPKeyBinding.ji;8;CPMenu.ji;12;CPMenuItem.ji;13;CPOpenPanel.ji;15;CPOutlineView.ji;9;CPPanel.ji;14;CPPasteboard.ji;15;CPPopUpButton.ji;21;CPProgressIndicator.ji;9;CPRadio.ji;13;CPResponder.ji;12;CPScroller.ji;14;CPScrollView.ji;15;CPSearchField.ji;19;CPSecureTextField.ji;20;CPSegmentedControl.ji;10;CPShadow.ji;10;CPSlider.ji;13;CPSplitView.ji;15;CPTableColumn.ji;13;CPTableView.ji;11;CPTabView.ji;8;CPText.ji;13;CPTextField.ji;11;CPToolbar.ji;15;CPToolbarItem.ji;12;CPTreeNode.ji;8;CPView.ji;17;CPViewAnimation.ji;18;CPViewController.ji;11;CPWebView.ji;10;CPWindow.ji;20;CPWindowController.ji;19;CPArrayController.jt;2748; +objj_executeFile("CALayer.j",YES); +objj_executeFile("CPAlert.j",YES); +objj_executeFile("CPAnimation.j",YES); +objj_executeFile("CPApplication.j",YES); +objj_executeFile("CPBezierPath.j",YES); +objj_executeFile("CPBox.j",YES); +objj_executeFile("CPBrowser.j",YES); +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPButtonBar.j",YES); +objj_executeFile("CPCheckBox.j",YES); +objj_executeFile("CPCib.j",YES); +objj_executeFile("CPCibConnector.j",YES); +objj_executeFile("CPCibControlConnector.j",YES); +objj_executeFile("CPCibLoading.j",YES); +objj_executeFile("CPCibOutletConnector.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPCollectionView.j",YES); +objj_executeFile("CPCollectionViewItem.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPColorPanel.j",YES); +objj_executeFile("CPColorWell.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPCookie.j",YES); +objj_executeFile("CPCursor.j",YES); +objj_executeFile("CPDocument.j",YES); +objj_executeFile("CPDocumentController.j",YES); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPFlashMovie.j",YES); +objj_executeFile("CPFlashView.j",YES); +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPFontManager.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPGraphics.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPKeyBinding.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPMenuItem.j",YES); +objj_executeFile("CPOpenPanel.j",YES); +objj_executeFile("CPOutlineView.j",YES); +objj_executeFile("CPPanel.j",YES); +objj_executeFile("CPPasteboard.j",YES); +objj_executeFile("CPPopUpButton.j",YES); +objj_executeFile("CPProgressIndicator.j",YES); +objj_executeFile("CPRadio.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPScroller.j",YES); +objj_executeFile("CPScrollView.j",YES); +objj_executeFile("CPSearchField.j",YES); +objj_executeFile("CPSecureTextField.j",YES); +objj_executeFile("CPSegmentedControl.j",YES); +objj_executeFile("CPShadow.j",YES); +objj_executeFile("CPSlider.j",YES); +objj_executeFile("CPSplitView.j",YES); +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPTabView.j",YES); +objj_executeFile("CPText.j",YES); +objj_executeFile("CPTextField.j",YES); +objj_executeFile("CPToolbar.j",YES); +objj_executeFile("CPToolbarItem.j",YES); +objj_executeFile("CPTreeNode.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPViewAnimation.j",YES); +objj_executeFile("CPViewController.j",YES); +objj_executeFile("CPWebView.j",YES); +objj_executeFile("CPWindow.j",YES); +objj_executeFile("CPWindowController.j",YES); +objj_executeFile("CPArrayController.j",YES); +p;17;CPAccordionView.jt;10946;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;32;Foundation/CPKeyValueObserving.jI;23;Foundation/CPIndexSet.jI;21;Foundation/CPString.jI;15;AppKit/CPView.jt;10764; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPKeyValueObserving.j",NO); +objj_executeFile("Foundation/CPIndexSet.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPAccordionViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier"),new objj_ivar("_view"),new objj_ivar("_label")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("identifier"),function(_3,_4){ +with(_3){ +return _identifier; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_5,_6,_7){ +with(_5){ +_identifier=_7; +} +}),new objj_method(sel_getUid("view"),function(_8,_9){ +with(_8){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_a,_b,_c){ +with(_a){ +_view=_c; +} +}),new objj_method(sel_getUid("label"),function(_d,_e){ +with(_d){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_f,_10,_11){ +with(_f){ +_label=_11; +} +}),new objj_method(sel_getUid("init"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_14,_15,_16){ +with(_14){ +_14=objj_msgSendSuper({receiver:_14,super_class:objj_getClass("CPAccordionViewItem").super_class},"init"); +if(_14){ +objj_msgSend(_14,"setIdentifier:",_16); +} +return _14; +} +})]); +var _1=objj_allocateClassPair(CPView,"CPAccordionView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_dirtyItemIndex"),new objj_ivar("_itemHeaderPrototype"),new objj_ivar("_items"),new objj_ivar("_itemViews"),new objj_ivar("_expandedItemIndexes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_17,_18,_19){ +with(_17){ +_17=objj_msgSendSuper({receiver:_17,super_class:objj_getClass("CPAccordionView").super_class},"initWithFrame:",_19); +if(_17){ +_items=[]; +_itemViews=[]; +_expandedItemIndexes=objj_msgSend(CPIndexSet,"indexSet"); +objj_msgSend(_17,"setItemHeaderPrototype:",objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:100,height:24}})); +} +return _17; +} +}),new objj_method(sel_getUid("setItemHeaderPrototype:"),function(_1a,_1b,_1c){ +with(_1a){ +_itemHeaderPrototype=_1c; +} +}),new objj_method(sel_getUid("itemHeaderPrototype"),function(_1d,_1e){ +with(_1d){ +return _itemHeaderPrototype; +} +}),new objj_method(sel_getUid("items"),function(_1f,_20){ +with(_1f){ +return _items; +} +}),new objj_method(sel_getUid("addItem:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(_21,"insertItem:atIndex:",_23,_items.length); +} +}),new objj_method(sel_getUid("insertItem:atIndex:"),function(_24,_25,_26,_27){ +with(_24){ +objj_msgSend(_expandedItemIndexes,"addIndex:",_27); +var _28=objj_msgSend(objj_msgSend(_CPAccordionItemView,"alloc"),"initWithAccordionView:",_24); +objj_msgSend(_28,"setIndex:",_27); +objj_msgSend(_28,"setLabel:",objj_msgSend(_26,"label")); +objj_msgSend(_28,"setContentView:",objj_msgSend(_26,"view")); +objj_msgSend(_24,"addSubview:",_28); +objj_msgSend(_items,"insertObject:atIndex:",_26,_27); +objj_msgSend(_itemViews,"insertObject:atIndex:",_28,_27); +objj_msgSend(_24,"_invalidateItemsStartingAtIndex:",_27); +objj_msgSend(_24,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeItem:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_29,"removeItemAtIndex:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_2b)); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_expandedItemIndexes,"removeIndex:",_2e); +objj_msgSend(_itemViews[_2e],"removeFromSuperview"); +objj_msgSend(_items,"removeObjectAtIndex:",_2e); +objj_msgSend(_itemViews,"removeObjectAtIndex:",_2e); +objj_msgSend(_2c,"_invalidateItemsStartingAtIndex:",_2e); +objj_msgSend(_2c,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeAllItems"),function(_2f,_30){ +with(_2f){ +var _31=_items.length; +while(_31--){ +objj_msgSend(_2f,"removeItemAtIndex:",_31); +} +} +}),new objj_method(sel_getUid("expandItemAtIndex:"),function(_32,_33,_34){ +with(_32){ +if(!objj_msgSend(_itemViews[_34],"isCollapsed")){ +return; +} +objj_msgSend(_expandedItemIndexes,"addIndex:",_34); +objj_msgSend(_itemViews[_34],"setCollapsed:",NO); +objj_msgSend(_32,"_invalidateItemsStartingAtIndex:",_34); +} +}),new objj_method(sel_getUid("collapseItemAtIndex:"),function(_35,_36,_37){ +with(_35){ +if(objj_msgSend(_itemViews[_37],"isCollapsed")){ +return; +} +objj_msgSend(_expandedItemIndexes,"removeIndex:",_37); +objj_msgSend(_itemViews[_37],"setCollapsed:",YES); +objj_msgSend(_35,"_invalidateItemsStartingAtIndex:",_37); +} +}),new objj_method(sel_getUid("toggleItemAtIndex:"),function(_38,_39,_3a){ +with(_38){ +var _3b=_itemViews[_3a]; +if(objj_msgSend(_3b,"isCollapsed")){ +objj_msgSend(_38,"expandItemAtIndex:",_3a); +}else{ +objj_msgSend(_38,"collapseItemAtIndex:",_3a); +} +} +}),new objj_method(sel_getUid("expandedItemIndexes"),function(_3c,_3d){ +with(_3c){ +return _expandedItemIndexes; +} +}),new objj_method(sel_getUid("collapsedItemIndexes"),function(_3e,_3f){ +with(_3e){ +var _40=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,_items.length)); +objj_msgSend(_40,"removeIndexes:",_expandedIndexes); +return _40; +} +}),new objj_method(sel_getUid("setEnabled:forItemAtIndex:"),function(_41,_42,_43,_44){ +with(_41){ +var _45=_itemViews[_44]; +if(!_45){ +return; +} +if(!_43){ +objj_msgSend(_41,"collapseItemAtIndex:",_44); +}else{ +objj_msgSend(_41,"expandItemAtIndex:",_44); +} +objj_msgSend(_45,"setEnabled:",_43); +} +}),new objj_method(sel_getUid("_invalidateItemsStartingAtIndex:"),function(_46,_47,_48){ +with(_46){ +if(_dirtyItemIndex===CPNotFound){ +_dirtyItemIndex=_48; +} +_dirtyItemIndex=MIN(_dirtyItemIndex,_48); +objj_msgSend(_46,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_49,_4a,_4b){ +with(_49){ +var _4c=(objj_msgSend(_49,"frame").size.width); +objj_msgSendSuper({receiver:_49,super_class:objj_getClass("CPAccordionView").super_class},"setFrameSize:",_4b); +if(_4c!==(objj_msgSend(_49,"frame").size.width)){ +objj_msgSend(_49,"_invalidateItemsStartingAtIndex:",0); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_4d,_4e){ +with(_4d){ +if(_items.length<=0){ +return objj_msgSend(_4d,"setFrameSize:",{width:(objj_msgSend(_4d,"frame").size.width),height:0}); +} +if(_dirtyItemIndex===CPNotFound){ +return; +} +_dirtyItemIndex=MIN(_dirtyItemIndex,_items.length-1); +var _4f=_dirtyItemIndex,_50=_itemViews.length,_51=(objj_msgSend(_4d,"bounds").size.width),y=_4f>0?CGRectGetMaxY(objj_msgSend(_itemViews[_4f-1],"frame")):0; +_dirtyItemIndex=CPNotFound; +for(;_4f<_50;++_4f){ +var _52=_itemViews[_4f]; +objj_msgSend(_52,"setFrameY:width:",y,_51); +y=CGRectGetMaxY(objj_msgSend(_52,"frame")); +} +objj_msgSend(_4d,"setFrameSize:",{width:(objj_msgSend(_4d,"frame").size.width),height:y}); +} +})]); +var _1=objj_allocateClassPair(CPView,"_CPAccordionItemView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_accordionView"),new objj_ivar("_isCollapsed"),new objj_ivar("_index"),new objj_ivar("_headerView"),new objj_ivar("_contentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isCollapsed"),function(_53,_54){ +with(_53){ +return _isCollapsed; +} +}),new objj_method(sel_getUid("setCollapsed:"),function(_55,_56,_57){ +with(_55){ +_isCollapsed=_57; +} +}),new objj_method(sel_getUid("index"),function(_58,_59){ +with(_58){ +return _index; +} +}),new objj_method(sel_getUid("setIndex:"),function(_5a,_5b,_5c){ +with(_5a){ +_index=_5c; +} +}),new objj_method(sel_getUid("initWithAccordionView:"),function(_5d,_5e,_5f){ +with(_5d){ +_5d=objj_msgSendSuper({receiver:_5d,super_class:objj_getClass("_CPAccordionItemView").super_class},"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +if(_5d){ +_accordionView=_5f; +_isCollapsed=NO; +var _60=objj_msgSend(_5d,"bounds"); +_headerView=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",objj_msgSend(_accordionView,"itemHeaderPrototype"))); +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setTarget:"))&&objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_headerView,"setTarget:",_5d); +objj_msgSend(_headerView,"setAction:",sel_getUid("toggle:")); +} +objj_msgSend(_5d,"addSubview:",_headerView); +} +return _5d; +} +}),new objj_method(sel_getUid("toggle:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_accordionView,"toggleItemAtIndex:",objj_msgSend(_61,"index")); +} +}),new objj_method(sel_getUid("setLabel:"),function(_64,_65,_66){ +with(_64){ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setTitle:"))){ +objj_msgSend(_headerView,"setTitle:",_66); +}else{ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setLabel:"))){ +objj_msgSend(_headerView,"setLabel:",_66); +}else{ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setStringValue:"))){ +objj_msgSend(_headerView,"setStringValue:",_66); +} +} +} +} +}),new objj_method(sel_getUid("setEnabled:"),function(_67,_68,_69){ +with(_67){ +if(objj_msgSend(_headerView,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_headerView,"setEnabled:",_69); +} +} +}),new objj_method(sel_getUid("setContentView:"),function(_6a,_6b,_6c){ +with(_6a){ +if(_contentView===_6c){ +return; +} +objj_msgSend(_contentView,"removeObserver:forKeyPath:",_6a,"frame"); +objj_msgSend(_contentView,"removeFromSuperview"); +_contentView=_6c; +objj_msgSend(_contentView,"addObserver:forKeyPath:options:context:",_6a,"frame",CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew,NULL); +objj_msgSend(_6a,"addSubview:",_contentView); +objj_msgSend(_accordionView,"_invalidateItemsStartingAtIndex:",objj_msgSend(_6a,"index")); +} +}),new objj_method(sel_getUid("setFrameY:width:"),function(_6d,_6e,aY,_6f){ +with(_6d){ +var _70=(objj_msgSend(_headerView,"frame").size.height); +objj_msgSend(_headerView,"setFrameSize:",{width:_6f,height:_70}); +objj_msgSend(_contentView,"setFrameOrigin:",{x:0,y:_70}); +if(objj_msgSend(_6d,"isCollapsed")){ +objj_msgSend(_6d,"setFrame:",{origin:{x:0,y:aY},size:{width:_6f,height:_70}}); +}else{ +var _71=(objj_msgSend(_contentView,"frame").size.height); +objj_msgSend(_contentView,"setFrameSize:",{width:_6f,height:_71}); +objj_msgSend(_6d,"setFrame:",{origin:{x:0,y:aY},size:{width:_6f,height:_71+_70}}); +} +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_72,_73,_74){ +with(_72){ +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_75,_76,_77,_78,_79,_7a){ +with(_75){ +if(_77==="frame"&&!CGRectEqualToRect(objj_msgSend(_79,"objectForKey:",CPKeyValueChangeOldKey),objj_msgSend(_79,"objectForKey:",CPKeyValueChangeNewKey))){ +objj_msgSend(_accordionView,"_invalidateItemsStartingAtIndex:",objj_msgSend(_75,"index")); +} +} +})]); +p;9;CPAlert.jt;11741;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;22;AppKit/CPApplication.jI;17;AppKit/CPButton.jI;16;AppKit/CPColor.jI;15;AppKit/CPFont.jI;16;AppKit/CPImage.jI;20;AppKit/CPImageView.jI;16;AppKit/CPPanel.jI;20;AppKit/CPTextField.jt;11487; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPApplication.j",NO); +objj_executeFile("AppKit/CPButton.j",NO); +objj_executeFile("AppKit/CPColor.j",NO); +objj_executeFile("AppKit/CPFont.j",NO); +objj_executeFile("AppKit/CPImage.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +objj_executeFile("AppKit/CPPanel.j",NO); +objj_executeFile("AppKit/CPTextField.j",NO); +CPWarningAlertStyle=0; +CPInformationalAlertStyle=1; +CPCriticalAlertStyle=2; +var _1=objj_allocateClassPair(CPView,"CPAlert"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_alertPanel"),new objj_ivar("_messageLabel"),new objj_ivar("_informativeLabel"),new objj_ivar("_alertImageView"),new objj_ivar("_alertStyle"),new objj_ivar("_windowTitle"),new objj_ivar("_windowStyle"),new objj_ivar("_buttons"),new objj_ivar("_delegate"),new objj_ivar("_didEndSelector"),new objj_ivar("_modalDelegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPAlert").super_class},"init")){ +_buttons=objj_msgSend(CPArray,"array"); +_alertStyle=CPWarningAlertStyle; +_alertPanel=nil; +_windowStyle=nil; +_didEndSelector=nil; +_messageLabel=objj_msgSend(CPTextField,"labelWithTitle:","Alert"); +_alertImageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +_informativeLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return _3; +} +}),new objj_method(sel_getUid("setWindowStyle:"),function(_5,_6,_7){ +with(_5){ +_windowStyle=_7; +objj_msgSend(_5,"setTheme:",(_windowStyle&CPHUDBackgroundWindowMask)?objj_msgSend(CPTheme,"defaultHudTheme"):objj_msgSend(CPTheme,"defaultTheme")); +_alertPanel=nil; +} +}),new objj_method(sel_getUid("_createPanel"),function(_8,_9){ +with(_8){ +var _a=CGRectMakeZero(); +_a.size=objj_msgSend(_8,"currentValueForThemeAttribute:","size"); +_alertPanel=objj_msgSend(objj_msgSend(CPPanel,"alloc"),"initWithContentRect:styleMask:",_a,_windowStyle?_windowStyle|CPTitledWindowMask:CPTitledWindowMask); +var _b=objj_msgSend(_alertPanel,"contentView"),_c=objj_msgSend(_buttons,"count"); +if(_c){ +while(_c--){ +objj_msgSend(_b,"addSubview:",_buttons[_c]); +} +}else{ +objj_msgSend(_8,"addButtonWithTitle:","OK"); +} +objj_msgSend(_b,"addSubview:",_messageLabel); +objj_msgSend(_b,"addSubview:",_alertImageView); +objj_msgSend(_b,"addSubview:",_informativeLabel); +} +}),new objj_method(sel_getUid("setTitle:"),function(_d,_e,_f){ +with(_d){ +_windowTitle=_f; +} +}),new objj_method(sel_getUid("title"),function(_10,_11){ +with(_10){ +return _windowTitle; +} +}),new objj_method(sel_getUid("windowStyle"),function(_12,_13){ +with(_12){ +return _windowStyle; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_14,_15,_16){ +with(_14){ +_delegate=_16; +} +}),new objj_method(sel_getUid("delegate"),function(_17,_18){ +with(_17){ +return _delegate; +} +}),new objj_method(sel_getUid("setAlertStyle:"),function(_19,_1a,_1b){ +with(_19){ +_alertStyle=_1b; +} +}),new objj_method(sel_getUid("alertStyle"),function(_1c,_1d){ +with(_1c){ +return _alertStyle; +} +}),new objj_method(sel_getUid("setMessageText:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_messageLabel,"setStringValue:",_20); +} +}),new objj_method(sel_getUid("messageText"),function(_21,_22){ +with(_21){ +return objj_msgSend(_messageLabel,"stringValue"); +} +}),new objj_method(sel_getUid("setInformativeText:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(_informativeLabel,"setStringValue:",_25); +} +}),new objj_method(sel_getUid("informativeText"),function(_26,_27){ +with(_26){ +return objj_msgSend(_informativeLabel,"stringValue"); +} +}),new objj_method(sel_getUid("addButtonWithTitle:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"bounds"),_2c=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMakeZero()),_2d=objj_msgSend(_buttons,"count"); +objj_msgSend(_2c,"setTitle:",_2a); +objj_msgSend(_2c,"setTarget:",_28); +objj_msgSend(_2c,"setTag:",_2d); +objj_msgSend(_2c,"setAction:",sel_getUid("_dismissAlert:")); +objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"addSubview:",_2c); +if(_2d==0){ +objj_msgSend(_2c,"setKeyEquivalent:",CPCarriageReturnCharacter); +}else{ +if(objj_msgSend(_2a,"lowercaseString")==="cancel"){ +objj_msgSend(_2c,"setKeyEquivalent:",CPEscapeFunctionKey); +}else{ +objj_msgSend(_2c,"setKeyEquivalent:",nil); +} +} +objj_msgSend(_buttons,"insertObject:atIndex:",_2c,0); +} +}),new objj_method(sel_getUid("layoutPanel"),function(_2e,_2f){ +with(_2e){ +if(!_alertPanel){ +objj_msgSend(_2e,"_createPanel"); +} +var _30=objj_msgSend(_2e,"currentValueForThemeAttribute:","content-inset"),_31=objj_msgSend(_2e,"currentValueForThemeAttribute:","image-offset"),_32,_33; +switch(_alertStyle){ +case CPWarningAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","warning-image"); +_32="Warning"; +break; +case CPInformationalAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","information-image"); +_32="Information"; +break; +case CPCriticalAlertStyle: +_33=objj_msgSend(_2e,"currentValueForThemeAttribute:","error-image"); +_32="Error"; +break; +} +objj_msgSend(_alertImageView,"setImage:",_33); +var _34=_33?objj_msgSend(_33,"size"):CGSizeMakeZero(); +objj_msgSend(_alertImageView,"setFrame:",CGRectMake(_31.x,_31.y,_34.width,_34.height)); +objj_msgSend(_alertPanel,"setTitle:",_windowTitle?_windowTitle:_32); +objj_msgSend(_alertPanel,"setFloatingPanel:",YES); +objj_msgSend(_alertPanel,"center"); +objj_msgSend(_messageLabel,"setTextColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-color")); +objj_msgSend(_messageLabel,"setFont:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-font")); +objj_msgSend(_messageLabel,"setTextShadowColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-shadow-color")); +objj_msgSend(_messageLabel,"setTextShadowOffset:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-shadow-offset")); +objj_msgSend(_messageLabel,"setAlignment:",objj_msgSend(_2e,"currentValueForThemeAttribute:","message-text-alignment")); +objj_msgSend(_messageLabel,"setLineBreakMode:",CPLineBreakByWordWrapping); +objj_msgSend(_informativeLabel,"setTextColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-color")); +objj_msgSend(_informativeLabel,"setFont:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-font")); +objj_msgSend(_informativeLabel,"setTextShadowColor:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-shadow-color")); +objj_msgSend(_informativeLabel,"setTextShadowOffset:",objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-text-shadow-offset")); +objj_msgSend(_informativeLabel,"setLineBreakMode:",CPLineBreakByWordWrapping); +var _35=objj_msgSend(objj_msgSend(_alertPanel,"contentView"),"bounds"),_36=CGRectGetWidth(_35)-_30.right,_37=objj_msgSend(_2e,"currentValueForThemeAttribute:","informative-offset"),_38=objj_msgSend(_2e,"currentValueForThemeAttribute:","button-offset"),_39=_36-_30.left,_3a=objj_msgSend((objj_msgSend(_messageLabel,"stringValue")||" "),"sizeWithFont:inWidth:",objj_msgSend(_messageLabel,"font"),_39),_3b=objj_msgSend(_informativeLabel,"stringValue"),_3c=objj_msgSend((_3b||" "),"sizeWithFont:inWidth:",objj_msgSend(_informativeLabel,"font"),_39),_3d=6; +objj_msgSend(_messageLabel,"setFrame:",CGRectMake(_30.left,_30.top,_39,_3a.height+_3d)); +objj_msgSend(_informativeLabel,"setFrame:",CGRectMake(_30.left,CGRectGetMaxY(objj_msgSend(_messageLabel,"frame"))+_37,_39,_3c.height+_3d)); +objj_msgSend(_informativeLabel,"setHidden:",!_3b); +var _3e=_buttons[0],_3f=MAX(CGRectGetMaxY(objj_msgSend(_alertImageView,"frame")),CGRectGetMaxY(_3b?objj_msgSend(_informativeLabel,"frame"):objj_msgSend(_messageLabel,"frame")))+_38; +objj_msgSend(_3e,"setTheme:",objj_msgSend(_2e,"theme")); +objj_msgSend(_3e,"sizeToFit"); +var _40=objj_msgSend(_2e,"currentValueForThemeAttribute:","size"),_41=MAX(_40.height,_3f+CGRectGetHeight(objj_msgSend(_3e,"bounds"))+_30.bottom),_42=_41-CGRectGetHeight(_35),_43=CGSizeMakeCopy(objj_msgSend(_alertPanel,"frame").size); +_43.height+=_42; +objj_msgSend(_alertPanel,"setFrameSize:",_43); +var _44=objj_msgSend(_buttons,"count"); +while(_44--){ +var _45=_buttons[_44]; +objj_msgSend(_45,"setTheme:",objj_msgSend(_2e,"theme")); +objj_msgSend(_45,"sizeToFit"); +var _46=objj_msgSend(_45,"bounds"),_47=MAX(80,CGRectGetWidth(_46)),_48=CGRectGetHeight(_46); +_36-=_47; +objj_msgSend(_45,"setFrame:",CGRectMake(_36,_3f,_47,_48)); +_36-=10; +} +} +}),new objj_method(sel_getUid("runModal"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"layoutPanel"); +objj_msgSend(CPApp,"runModalForWindow:",_alertPanel); +} +}),new objj_method(sel_getUid("beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:"),function(_4b,_4c,_4d,_4e,_4f,_50){ +with(_4b){ +if(!(_windowStyle&CPDocModalWindowMask)){ +objj_msgSend(_4b,"setWindowStyle:",CPDocModalWindowMask); +} +objj_msgSend(_4b,"layoutPanel"); +_didEndSelector=_4f; +_modalDelegate=_4e; +objj_msgSend(CPApp,"beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",_alertPanel,_4d,_4b,sel_getUid("_alertDidEnd:returnCode:contextInfo:"),_50); +} +}),new objj_method(sel_getUid("beginSheetModalForWindow:"),function(_51,_52,_53){ +with(_51){ +if(!(_windowStyle&CPDocModalWindowMask)){ +objj_msgSend(_51,"setWindowStyle:",CPDocModalWindowMask); +} +objj_msgSend(_51,"layoutPanel"); +objj_msgSend(CPApp,"beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",_alertPanel,_53,_51,sel_getUid("_alertDidEnd:returnCode:contextInfo:"),nil); +} +}),new objj_method(sel_getUid("_alertDidEnd:returnCode:contextInfo:"),function(_54,_55,_56,_57,_58){ +with(_54){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("alertDidEnd:returnCode:"))){ +objj_msgSend(_delegate,"alertDidEnd:returnCode:",_54,_57); +} +if(_didEndSelector){ +objj_msgSend(_modalDelegate,_didEndSelector,_54,_57,_58); +} +_didEndSelector=nil; +_modalDelegate=nil; +} +}),new objj_method(sel_getUid("_dismissAlert:"),function(_59,_5a,_5b){ +with(_59){ +if(objj_msgSend(_alertPanel,"isSheet")){ +objj_msgSend(CPApp,"endSheet:returnCode:",_alertPanel,objj_msgSend(_5b,"tag")); +}else{ +objj_msgSend(CPApp,"abortModal"); +objj_msgSend(_alertPanel,"close"); +objj_msgSend(_59,"_alertDidEnd:returnCode:contextInfo:",nil,objj_msgSend(_5b,"tag"),nil); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_5c,_5d){ +with(_5c){ +return "alert"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_5e,_5f){ +with(_5e){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CGSizeMake(400,110),CGInsetMake(15,15,15,50),6,10,CPJustifiedTextAlignment,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"boldSystemFontOfSize:",13),objj_msgSend(CPNull,"null"),CGSizeMakeZero(),CPJustifiedTextAlignment,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"systemFontOfSize:",12),objj_msgSend(CPNull,"null"),CGSizeMakeZero(),CGPointMake(15,12),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["size","content-inset","informative-offset","button-offset","message-text-alignment","message-text-color","message-text-font","message-text-shadow-color","message-text-shadow-offset","informative-text-alignment","informative-text-color","informative-text-font","informative-text-shadow-color","informative-text-shadow-offset","image-offset","information-image","warning-image","error-image"]); +} +})]); +p;13;CPAnimation.jt;5490;@STATIC;1.0;I;21;Foundation/CPObject.ji;23;CAMediaTimingFunction.jt;5417; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CAMediaTimingFunction.j",YES); +CPAnimationEaseInOut=0; +CPAnimationEaseIn=1; +CPAnimationEaseOut=2; +CPAnimationLinear=3; +ACTUAL_FRAME_RATE=0; +var _1=objj_allocateClassPair(CPObject,"CPAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_lastTime"),new objj_ivar("_duration"),new objj_ivar("_animationCurve"),new objj_ivar("_timingFunction"),new objj_ivar("_frameRate"),new objj_ivar("_progress"),new objj_ivar("_delegate"),new objj_ivar("_timer")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithDuration:animationCurve:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPAnimation").super_class},"init"); +if(_3){ +_progress=0; +_duration=MAX(0,_5); +_frameRate=60; +objj_msgSend(_3,"setAnimationCurve:",_6); +} +return _3; +} +}),new objj_method(sel_getUid("setAnimationCurve:"),function(_7,_8,_9){ +with(_7){ +switch(_9){ +case CPAnimationEaseInOut: +timingFunctionName=kCAMediaTimingFunctionEaseInEaseOut; +break; +case CPAnimationEaseIn: +timingFunctionName=kCAMediaTimingFunctionEaseIn; +break; +case CPAnimationEaseOut: +timingFunctionName=kCAMediaTimingFunctionEaseOut; +break; +case CPAnimationLinear: +timingFunctionName=kCAMediaTimingFunctionLinear; +break; +default: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid value provided for animation curve"); +break; +} +_animationCurve=_9; +_timingFunction=objj_msgSend(CAMediaTimingFunction,"functionWithName:",timingFunctionName); +} +}),new objj_method(sel_getUid("animationCurve"),function(_a,_b){ +with(_a){ +return _animationCurve; +} +}),new objj_method(sel_getUid("setDuration:"),function(_c,_d,_e){ +with(_c){ +if(_e<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"aDuration can't be negative"); +} +_duration=_e; +} +}),new objj_method(sel_getUid("duration"),function(_f,_10){ +with(_f){ +return _duration; +} +}),new objj_method(sel_getUid("setFrameRate:"),function(_11,_12,_13){ +with(_11){ +if(_13<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"frameRate can't be negative"); +} +_frameRate=_13; +} +}),new objj_method(sel_getUid("frameRate"),function(_14,_15){ +with(_14){ +return _frameRate; +} +}),new objj_method(sel_getUid("delegate"),function(_16,_17){ +with(_16){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_18,_19,_1a){ +with(_18){ +_delegate=_1a; +} +}),new objj_method(sel_getUid("startAnimation"),function(_1b,_1c){ +with(_1b){ +if(_timer||_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationShouldStart:"))&&!objj_msgSend(_delegate,"animationShouldStart:",_1b)){ +return; +} +if(_progress===1){ +_progress=0; +} +ACTUAL_FRAME_RATE=0; +_lastTime=new Date(); +_timer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0,_1b,sel_getUid("animationTimerDidFire:"),nil,YES); +} +}),new objj_method(sel_getUid("animationTimerDidFire:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=new Date(),_21=MIN(1,objj_msgSend(_1d,"currentProgress")+(_20-_lastTime)/(_duration*1000)); +_lastTime=_20; +++ACTUAL_FRAME_RATE; +objj_msgSend(_1d,"setCurrentProgress:",_21); +if(_21===1){ +objj_msgSend(_timer,"invalidate"); +_timer=nil; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationDidEnd:"))){ +objj_msgSend(_delegate,"animationDidEnd:",_1d); +} +} +} +}),new objj_method(sel_getUid("stopAnimation"),function(_22,_23){ +with(_22){ +if(!_timer){ +return; +} +objj_msgSend(_timer,"invalidate"); +_timer=nil; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animationDidStop:"))){ +objj_msgSend(_delegate,"animationDidStop:",_22); +} +} +}),new objj_method(sel_getUid("isAnimating"),function(_24,_25){ +with(_24){ +return _timer; +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(_26,_27,_28){ +with(_26){ +_progress=_28; +} +}),new objj_method(sel_getUid("currentProgress"),function(_29,_2a){ +with(_29){ +return _progress; +} +}),new objj_method(sel_getUid("currentValue"),function(_2b,_2c){ +with(_2b){ +var t=objj_msgSend(_2b,"currentProgress"); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("animation:valueForProgress:"))){ +return objj_msgSend(_delegate,"animation:valueForProgress:",_2b,t); +} +var c1=[],c2=[]; +objj_msgSend(_timingFunction,"getControlPointAtIndex:values:",1,c1); +objj_msgSend(_timingFunction,"getControlPointAtIndex:values:",2,c2); +return _2d(t,c1[0],c1[1],c2[0],c2[1],_duration); +} +})]); +var _2d=_2d=function(t,p1x,p1y,p2x,p2y,_2e){ +var ax=0,bx=0,cx=0,ay=0,by=0,cy=0; +sampleCurveX=function(t){ +return ((ax*t+bx)*t+cx)*t; +}; +sampleCurveY=function(t){ +return ((ay*t+by)*t+cy)*t; +}; +sampleCurveDerivativeX=function(t){ +return (3*ax*t+2*bx)*t+cx; +}; +solveEpsilon=function(_2f){ +return 1/(200*_2f); +}; +solve=function(x,_30){ +return sampleCurveY(solveCurveX(x,_30)); +}; +solveCurveX=function(x,_31){ +var t0,t1,t2,x2,d2,i; +fabs=function(n){ +if(n>=0){ +return n; +}else{ +return 0-n; +} +}; +for(t2=x,i=0;i<8;i++){ +x2=sampleCurveX(t2)-x; +if(fabs(x2)<_31){ +return t2; +} +d2=sampleCurveDerivativeX(t2); +if(fabs(d2)<0.000001){ +break; +} +t2=t2-x2/d2; +} +t0=0; +t1=1; +t2=x; +if(t2<t0){ +return t0; +} +if(t2>t1){ +return t1; +} +while(t0<t1){ +x2=sampleCurveX(t2); +if(fabs(x2-x)<_31){ +return t2; +} +if(x>x2){ +t0=t2; +}else{ +t1=t2; +} +t2=(t1-t0)*0.5+t0; +} +return t2; +}; +cx=3*p1x; +bx=3*(p2x-p1x)-cx; +ax=1-cx-bx; +cy=3*p1y; +by=3*(p2y-p1y)-cy; +ay=1-cy-by; +return solve(t,solveEpsilon(_2e)); +}; +p;15;CPApplication.jt;29611;@STATIC;1.0;I;21;Foundation/CPBundle.ji;17;CPCompatibility.ji;9;CPEvent.ji;8;CPMenu.ji;13;CPResponder.ji;22;CPDocumentController.ji;14;CPThemeBlend.ji;14;CPCibLoading.ji;12;CPPlatform.jt;29418; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPDocumentController.j",YES); +objj_executeFile("CPThemeBlend.j",YES); +objj_executeFile("CPCibLoading.j",YES); +objj_executeFile("CPPlatform.j",YES); +var _1="CPMainCibFile",_2="Main cib file base name"; +CPApp=nil; +CPApplicationWillFinishLaunchingNotification="CPApplicationWillFinishLaunchingNotification"; +CPApplicationDidFinishLaunchingNotification="CPApplicationDidFinishLaunchingNotification"; +CPApplicationWillTerminateNotification="CPApplicationWillTerminateNotification"; +CPApplicationWillBecomeActiveNotification="CPApplicationWillBecomeActiveNotification"; +CPApplicationDidBecomeActiveNotification="CPApplicationDidBecomeActiveNotification"; +CPApplicationWillResignActiveNotification="CPApplicationWillResignActiveNotification"; +CPApplicationDidResignActiveNotification="CPApplicationDidResignActiveNotification"; +CPTerminateNow=YES; +CPTerminateCancel=NO; +CPTerminateLater=-1; +CPRunStoppedResponse=-1000; +CPRunAbortedResponse=-1001; +CPRunContinuesResponse=-1002; +var _3=objj_allocateClassPair(CPResponder,"CPApplication"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_eventListeners"),new objj_ivar("_currentEvent"),new objj_ivar("_windows"),new objj_ivar("_keyWindow"),new objj_ivar("_mainWindow"),new objj_ivar("_previousKeyWindow"),new objj_ivar("_previousMainWindow"),new objj_ivar("_mainMenu"),new objj_ivar("_documentController"),new objj_ivar("_currentSession"),new objj_ivar("_delegate"),new objj_ivar("_finishedLaunching"),new objj_ivar("_isActive"),new objj_ivar("_namedArgs"),new objj_ivar("_args"),new objj_ivar("_fullArgsString"),new objj_ivar("_applicationIconImage"),new objj_ivar("_aboutPanel"),new objj_ivar("_themeBlend")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("themeBlend"),function(_5,_6){ +with(_5){ +return _themeBlend; +} +}),new objj_method(sel_getUid("setThemeBlend:"),function(_7,_8,_9){ +with(_7){ +_themeBlend=_9; +} +}),new objj_method(sel_getUid("init"),function(_a,_b){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPApplication").super_class},"init"); +CPApp=_a; +if(_a){ +_eventListeners=[]; +_windows=[]; +objj_msgSend(_windows,"addObject:",nil); +} +return _a; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_c,_d,_e){ +with(_c){ +if(_delegate==_e){ +return; +} +var _f=objj_msgSend(CPNotificationCenter,"defaultCenter"),_10=[CPApplicationWillFinishLaunchingNotification,sel_getUid("applicationWillFinishLaunching:"),CPApplicationDidFinishLaunchingNotification,sel_getUid("applicationDidFinishLaunching:"),CPApplicationWillBecomeActiveNotification,sel_getUid("applicationWillBecomeActive:"),CPApplicationDidBecomeActiveNotification,sel_getUid("applicationDidBecomeActive:"),CPApplicationWillResignActiveNotification,sel_getUid("applicationWillResignActive:"),CPApplicationDidResignActiveNotification,sel_getUid("applicationDidResignActive:"),CPApplicationWillTerminateNotification,sel_getUid("applicationWillTerminate:")],_11=objj_msgSend(_10,"count"); +if(_delegate){ +var _12=0; +for(;_12<_11;_12+=2){ +var _13=_10[_12],_14=_10[_12+1]; +if(objj_msgSend(_delegate,"respondsToSelector:",_14)){ +objj_msgSend(_f,"removeObserver:name:object:",_delegate,_13,_c); +} +} +} +_delegate=_e; +var _12=0; +for(;_12<_11;_12+=2){ +var _13=_10[_12],_14=_10[_12+1]; +if(objj_msgSend(_delegate,"respondsToSelector:",_14)){ +objj_msgSend(_f,"addObserver:selector:name:object:",_delegate,_14,_13,_c); +} +} +} +}),new objj_method(sel_getUid("delegate"),function(_15,_16){ +with(_15){ +return _delegate; +} +}),new objj_method(sel_getUid("finishLaunching"),function(_17,_18){ +with(_17){ +window.status=" "; +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +var _19=objj_msgSend(CPBundle,"mainBundle"),_1a=objj_msgSend(_19,"objectForInfoDictionaryKey:","CPBundleDocumentTypes"); +if(objj_msgSend(_1a,"count")>0){ +_documentController=objj_msgSend(CPDocumentController,"sharedDocumentController"); +} +var _1b=objj_msgSend(_19,"objectForInfoDictionaryKey:","CPApplicationDelegateClass"); +if(_1b){ +var _1c=objj_getClass(_1b); +if(_1c){ +if(objj_msgSend(_documentController,"class")==_1c){ +objj_msgSend(_17,"setDelegate:",_documentController); +}else{ +objj_msgSend(_17,"setDelegate:",objj_msgSend(objj_msgSend(_1c,"alloc"),"init")); +} +} +} +var _1d=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_1d,"postNotificationName:object:",CPApplicationWillFinishLaunchingNotification,_17); +var _1e=!!_documentController,_1f=window.cpOpeningURLStrings&&window.cpOpeningURLStrings(),_20=0,_21=objj_msgSend(_1f,"count"); +for(;_20<_21;++_20){ +_1e=!objj_msgSend(_17,"_openURL:",objj_msgSend(CPURL,"URLWithString:",_1f[_20]))||_1e; +} +if(_1e&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("applicationShouldOpenUntitledFile:"))){ +_1e=objj_msgSend(_delegate,"applicationShouldOpenUntitledFile:",_17); +} +if(_1e){ +objj_msgSend(_documentController,"newDocument:",_17); +} +objj_msgSend(_documentController,"_updateRecentDocumentsMenu"); +objj_msgSend(_1d,"postNotificationName:object:",CPApplicationDidFinishLaunchingNotification,_17); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +_finishedLaunching=YES; +} +}),new objj_method(sel_getUid("terminate:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPApplicationWillTerminateNotification,_22); +if(!objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(objj_msgSend(CPDocumentController,"sharedDocumentController"),"closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:",_22,sel_getUid("_documentController:didCloseAll:context:"),nil); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_22,"keyWindow"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +}),new objj_method(sel_getUid("setApplicationIconImage:"),function(_25,_26,_27){ +with(_25){ +_applicationIconImage=_27; +} +}),new objj_method(sel_getUid("applicationIconImage"),function(_28,_29){ +with(_28){ +if(_applicationIconImage){ +return _applicationIconImage; +} +var _2a=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPApplicationIcon"); +if(_2a){ +_applicationIconImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",_2a); +} +return _applicationIconImage; +} +}),new objj_method(sel_getUid("orderFrontStandardAboutPanel:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"orderFrontStandardAboutPanelWithOptions:",nil); +} +}),new objj_method(sel_getUid("orderFrontStandardAboutPanelWithOptions:"),function(_2e,_2f,_30){ +with(_2e){ +if(!_aboutPanel){ +var _31=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),_32=objj_msgSend(_30,"objectForKey:","ApplicationName")||objj_msgSend(_31,"objectForKey:","CPBundleName"),_33=objj_msgSend(_30,"objectForKey:","ApplicationIcon")||objj_msgSend(_2e,"applicationIconImage"),_34=objj_msgSend(_30,"objectForKey:","Version")||objj_msgSend(_31,"objectForKey:","CPBundleVersion"),_35=objj_msgSend(_30,"objectForKey:","ApplicationVersion")||objj_msgSend(_31,"objectForKey:","CPBundleShortVersionString"),_36=objj_msgSend(_30,"objectForKey:","Copyright")||objj_msgSend(_31,"objectForKey:","CPHumanReadableCopyright"); +var _37=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindowController,"class")),"pathForResource:","AboutPanel.cib"),_38=objj_msgSend(CPWindowController,"alloc"),_38=objj_msgSend(_38,"initWithWindowCibPath:owner:",_37,_38),_39=objj_msgSend(_38,"window"),_3a=objj_msgSend(_39,"contentView"),_3b=objj_msgSend(_3a,"viewWithTag:",1),_3c=objj_msgSend(_3a,"viewWithTag:",2),_3d=objj_msgSend(_3a,"viewWithTag:",3),_3e=objj_msgSend(_3a,"viewWithTag:",4),_3f=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_2e,"class")),"pathForResource:","standardApplicationIcon.png"); +objj_msgSend(_3c,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",14)); +objj_msgSend(_3c,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3d,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3e,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_3b,"setImage:",_33||objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",_3f,CGSizeMake(256,256))); +objj_msgSend(_3c,"setStringValue:",_32||""); +if(_35&&_34){ +objj_msgSend(_3d,"setStringValue:","Version "+_35+" ("+_34+")"); +}else{ +if(_35||_34){ +objj_msgSend(_3d,"setStringValue:","Version "+(_35||_34)); +}else{ +objj_msgSend(_3d,"setStringValue:",""); +} +} +objj_msgSend(_3e,"setStringValue:",_36||""); +objj_msgSend(_39,"center"); +_aboutPanel=_39; +} +objj_msgSend(_aboutPanel,"orderFront:",_2e); +} +}),new objj_method(sel_getUid("_documentController:didCloseAll:context:"),function(_40,_41,_42,_43,_44){ +with(_40){ +if(_43){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("applicationShouldTerminate:"))){ +objj_msgSend(_40,"replyToApplicationShouldTerminate:",objj_msgSend(_delegate,"applicationShouldTerminate:",_40)); +}else{ +objj_msgSend(_40,"replyToApplicationShouldTerminate:",YES); +} +} +} +}),new objj_method(sel_getUid("replyToApplicationShouldTerminate:"),function(_45,_46,_47){ +with(_45){ +if(_47==CPTerminateNow){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPApplicationWillTerminateNotification,_45); +objj_msgSend(CPPlatform,"terminateApplication"); +} +} +}),new objj_method(sel_getUid("activateIgnoringOtherApps:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(_48,"_willBecomeActive"); +objj_msgSend(CPPlatform,"activateIgnoringOtherApps:",_4a); +_isActive=YES; +objj_msgSend(_48,"_willResignActive"); +} +}),new objj_method(sel_getUid("deactivate"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_4b,"_willResignActive"); +objj_msgSend(CPPlatform,"deactivate"); +_isActive=NO; +objj_msgSend(_4b,"_didResignActive"); +} +}),new objj_method(sel_getUid("isActive"),function(_4d,_4e){ +with(_4d){ +return _isActive; +} +}),new objj_method(sel_getUid("hideOtherApplications:"),function(_4f,_50,_51){ +with(_4f){ +objj_msgSend(CPPlatform,"hideOtherApplications:",_4f); +} +}),new objj_method(sel_getUid("run"),function(_52,_53){ +with(_52){ +objj_msgSend(_52,"finishLaunching"); +} +}),new objj_method(sel_getUid("runModalForWindow:"),function(_54,_55,_56){ +with(_54){ +objj_msgSend(_54,"runModalSession:",objj_msgSend(_54,"beginModalSessionForWindow:",_56)); +} +}),new objj_method(sel_getUid("stopModalWithCode:"),function(_57,_58,_59){ +with(_57){ +if(!_currentSession){ +return; +} +_currentSession._state=_59; +_currentSession=_currentSession._previous; +objj_msgSend(_57,"_removeRunModalLoop"); +} +}),new objj_method(sel_getUid("_removeRunModalLoop"),function(_5a,_5b){ +with(_5a){ +var _5c=_eventListeners.length; +while(_5c--){ +if(_eventListeners[_5c]._callback===_CPRunModalLoop){ +_eventListeners.splice(_5c,1); +return; +} +} +} +}),new objj_method(sel_getUid("stopModal"),function(_5d,_5e){ +with(_5d){ +objj_msgSend(_5d,"stopModalWithCode:",CPRunStoppedResponse); +} +}),new objj_method(sel_getUid("abortModal"),function(_5f,_60){ +with(_5f){ +objj_msgSend(_5f,"stopModalWithCode:",CPRunAbortedResponse); +} +}),new objj_method(sel_getUid("beginModalSessionForWindow:"),function(_61,_62,_63){ +with(_61){ +return _64(_63,0); +} +}),new objj_method(sel_getUid("runModalSession:"),function(_65,_66,_67){ +with(_65){ +_67._previous=_currentSession; +_currentSession=_67; +var _68=_67._window; +objj_msgSend(_68,"center"); +objj_msgSend(_68,"makeKeyAndOrderFront:",_65); +objj_msgSend(CPApp,"setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:",_CPRunModalLoop,CPAnyEventMask,nil,0,NO); +} +}),new objj_method(sel_getUid("modalWindow"),function(_69,_6a){ +with(_69){ +if(!_currentSession){ +return nil; +} +return _currentSession._window; +} +}),new objj_method(sel_getUid("_handleKeyEquivalent:"),function(_6b,_6c,_6d){ +with(_6b){ +return objj_msgSend(objj_msgSend(_6b,"keyWindow"),"performKeyEquivalent:",_6d)||objj_msgSend(_mainMenu,"performKeyEquivalent:",_6d); +} +}),new objj_method(sel_getUid("sendEvent:"),function(_6e,_6f,_70){ +with(_6e){ +_currentEvent=_70; +var _71=objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_willPropagateCurrentDOMEvent"); +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +if(objj_msgSend(_70,"_couldBeKeyEquivalent")&&objj_msgSend(_6e,"_handleKeyEquivalent:",_70)){ +var _72=objj_msgSend(_70,"characters"),_73=objj_msgSend(_70,"modifierFlags"); +if((_72=="c"||_72=="x"||_72=="v")&&(_73&CPPlatformActionKeyMask)){ +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +return; +} +objj_msgSend(objj_msgSend(objj_msgSend(_70,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",_71); +if(_eventListeners.length){ +if(_eventListeners[_eventListeners.length-1]._mask&(1<<objj_msgSend(_70,"type"))){ +_eventListeners.pop()._callback(_70); +} +return; +} +objj_msgSend(objj_msgSend(_70,"window"),"sendEvent:",_70); +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_74,_75,_76){ +with(_74){ +if(objj_msgSend(_delegate,"respondsToSelector:",_76)){ +objj_msgSend(_delegate,"performSelector:",_76); +}else{ +objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPApplication").super_class},"doCommandBySelector:",_76); +} +} +}),new objj_method(sel_getUid("keyWindow"),function(_77,_78){ +with(_77){ +return _keyWindow; +} +}),new objj_method(sel_getUid("mainWindow"),function(_79,_7a){ +with(_79){ +return _mainWindow; +} +}),new objj_method(sel_getUid("windowWithWindowNumber:"),function(_7b,_7c,_7d){ +with(_7b){ +return _windows[_7d]; +} +}),new objj_method(sel_getUid("windows"),function(_7e,_7f){ +with(_7e){ +return _windows; +} +}),new objj_method(sel_getUid("orderedWindows"),function(_80,_81){ +with(_80){ +return []; +} +}),new objj_method(sel_getUid("hide:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(CPPlatform,"hide:",_82); +} +}),new objj_method(sel_getUid("mainMenu"),function(_85,_86){ +with(_85){ +return _mainMenu; +} +}),new objj_method(sel_getUid("setMainMenu:"),function(_87,_88,_89){ +with(_87){ +if(objj_msgSend(_89,"_menuName")==="CPMainMenu"){ +if(_mainMenu===_89){ +return; +} +_mainMenu=_89; +if(objj_msgSend(CPPlatform,"supportsNativeMainMenu")){ +window.cpSetMainMenu(_mainMenu); +} +}else{ +objj_msgSend(_89,"_setMenuName:","CPMainMenu"); +} +} +}),new objj_method(sel_getUid("orderFrontColorPanel:"),function(_8a,_8b,_8c){ +with(_8a){ +objj_msgSend(objj_msgSend(CPColorPanel,"sharedColorPanel"),"orderFront:",_8a); +} +}),new objj_method(sel_getUid("tryToPerform:with:"),function(_8d,_8e,_8f,_90){ +with(_8d){ +if(!_8f){ +return NO; +} +if(objj_msgSendSuper({receiver:_8d,super_class:objj_getClass("CPApplication").super_class},"tryToPerform:with:",_8f,_90)){ +return YES; +} +if(objj_msgSend(_delegate,"respondsToSelector:",_8f)){ +objj_msgSend(_delegate,"performSelector:withObject:",_8f,_90); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("sendAction:to:from:"),function(_91,_92,_93,_94,_95){ +with(_91){ +var _96=objj_msgSend(_91,"targetForAction:to:from:",_93,_94,_95); +if(!_96){ +return NO; +} +objj_msgSend(_96,"performSelector:withObject:",_93,_95); +return YES; +} +}),new objj_method(sel_getUid("targetForAction:to:from:"),function(_97,_98,_99,_9a,_9b){ +with(_97){ +if(!_99){ +return nil; +} +if(_9a){ +return _9a; +} +return objj_msgSend(_97,"targetForAction:",_99); +} +}),new objj_method(sel_getUid("_targetForWindow:action:"),function(_9c,_9d,_9e,_9f){ +with(_9c){ +var _a0=objj_msgSend(_9e,"firstResponder"),_a1=YES; +while(_a0){ +if(objj_msgSend(_a0,"respondsToSelector:",_9f)){ +return _a0; +} +if(_a0==_9e){ +_a1=NO; +} +_a0=objj_msgSend(_a0,"nextResponder"); +} +if(_a1&&objj_msgSend(_9e,"respondsToSelector:",_9f)){ +return _9e; +} +var _a2=objj_msgSend(_9e,"delegate"); +if(objj_msgSend(_a2,"respondsToSelector:",_9f)){ +return _a2; +} +var _a3=objj_msgSend(_9e,"windowController"); +if(objj_msgSend(_a3,"respondsToSelector:",_9f)){ +return _a3; +} +var _a4=objj_msgSend(_a3,"document"); +if(_a4!==_a2&&objj_msgSend(_a4,"respondsToSelector:",_9f)){ +return _a4; +} +return nil; +} +}),new objj_method(sel_getUid("targetForAction:"),function(_a5,_a6,_a7){ +with(_a5){ +if(!_a7){ +return nil; +} +var _a8=objj_msgSend(_a5,"_targetForWindow:action:",objj_msgSend(_a5,"keyWindow"),_a7); +if(_a8){ +return _a8; +} +_a8=objj_msgSend(_a5,"_targetForWindow:action:",objj_msgSend(_a5,"mainWindow"),_a7); +if(_a8){ +return _a8; +} +if(objj_msgSend(_a5,"respondsToSelector:",_a7)){ +return _a5; +} +if(objj_msgSend(_delegate,"respondsToSelector:",_a7)){ +return _delegate; +} +if(objj_msgSend(_documentController,"respondsToSelector:",_a7)){ +return _documentController; +} +return nil; +} +}),new objj_method(sel_getUid("setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:"),function(_a9,_aa,_ab,_ac,_ad,_ae,_af){ +with(_a9){ +_eventListeners.push(_b0(_ac,_ab)); +} +}),new objj_method(sel_getUid("setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:"),function(_b1,_b2,_b3,_b4,_b5,_b6,_b7,_b8){ +with(_b1){ +_eventListeners.push(_b0(_b5,function(_b9){ +objj_msgSend(_b3,_b4,_b9); +})); +} +}),new objj_method(sel_getUid("currentEvent"),function(_ba,_bb){ +with(_ba){ +return _currentEvent; +} +}),new objj_method(sel_getUid("beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:"),function(_bc,_bd,_be,_bf,_c0,_c1,_c2){ +with(_bc){ +var _c3=objj_msgSend(_be,"styleMask"); +if(!(_c3&CPDocModalWindowMask)){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Currently only CPDocModalWindowMask style mask is supported for attached sheets"); +return; +} +objj_msgSend(_bf,"orderFront:",_bc); +objj_msgSend(_be,"setPlatformWindow:",objj_msgSend(_bf,"platformWindow")); +objj_msgSend(_bf,"_attachSheet:modalDelegate:didEndSelector:contextInfo:",_be,_c0,_c1,_c2); +} +}),new objj_method(sel_getUid("endSheet:returnCode:"),function(_c4,_c5,_c6,_c7){ +with(_c4){ +var _c8=objj_msgSend(_windows,"count"); +while(--_c8>=0){ +var _c9=objj_msgSend(_windows,"objectAtIndex:",_c8); +var _ca=_c9._sheetContext; +if(_ca!=nil&&_ca["sheet"]===_c6){ +_ca["returnCode"]=_c7; +objj_msgSend(_c9,"_detachSheetWindow"); +return; +} +} +} +}),new objj_method(sel_getUid("endSheet:"),function(_cb,_cc,_cd){ +with(_cb){ +objj_msgSend(_cb,"endSheet:returnCode:",_cd,0); +} +}),new objj_method(sel_getUid("arguments"),function(_ce,_cf){ +with(_ce){ +if(_fullArgsString!==window.location.hash){ +objj_msgSend(_ce,"_reloadArguments"); +} +return _args; +} +}),new objj_method(sel_getUid("setArguments:"),function(_d0,_d1,_d2){ +with(_d0){ +if(!_d2||_d2.length==0){ +_args=[]; +window.location.hash="#"; +return; +} +if(objj_msgSend(_d2,"class")!=CPArray){ +_d2=objj_msgSend(CPArray,"arrayWithObject:",_d2); +} +_args=_d2; +var _d3=objj_msgSend(_args,"copy"); +for(var i=0,_d4=_d3.length;i<_d4;i++){ +_d3[i]=encodeURIComponent(_d3[i]); +} +var _d5=objj_msgSend(_d3,"componentsJoinedByString:","/"); +window.location.hash="#"+_d5; +} +}),new objj_method(sel_getUid("_reloadArguments"),function(_d6,_d7){ +with(_d6){ +_fullArgsString=window.location.hash; +if(_fullArgsString.length){ +var _d8=_fullArgsString.substring(1).split("/"); +for(var i=0,_d9=_d8.length;i<_d9;i++){ +_d8[i]=decodeURIComponent(_d8[i]); +} +_args=_d8; +}else{ +_args=[]; +} +} +}),new objj_method(sel_getUid("namedArguments"),function(_da,_db){ +with(_da){ +return _namedArgs; +} +}),new objj_method(sel_getUid("_openURL:"),function(_dc,_dd,_de){ +with(_dc){ +if(_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("application:openFile:"))){ +CPLog.warn("application:openFile: is deprecated, use application:openURL: instead."); +return objj_msgSend(_delegate,"application:openFile:",_dc,objj_msgSend(_de,"absoluteString")); +} +if(_delegate&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("application:openURL:"))){ +return objj_msgSend(_delegate,"application:openURL:",_dc,_de); +} +return !!objj_msgSend(_documentController,"openDocumentWithContentsOfURL:display:error:",_de,YES,NULL); +} +}),new objj_method(sel_getUid("_willBecomeActive"),function(_df,_e0){ +with(_df){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationWillBecomeActiveNotification,_df,nil); +} +}),new objj_method(sel_getUid("_didBecomeActive"),function(_e1,_e2){ +with(_e1){ +if(!objj_msgSend(_e1,"keyWindow")&&_previousKeyWindow&&objj_msgSend(objj_msgSend(_e1,"windows"),"indexOfObjectIdenticalTo:",_previousKeyWindow)!==CPNotFound){ +objj_msgSend(_previousKeyWindow,"makeKeyWindow"); +} +if(!objj_msgSend(_e1,"mainWindow")&&_previousMainWindow&&objj_msgSend(objj_msgSend(_e1,"windows"),"indexOfObjectIdenticalTo:",_previousMainWindow)!==CPNotFound){ +objj_msgSend(_previousMainWindow,"makeMainWindow"); +} +if(objj_msgSend(_e1,"keyWindow")){ +objj_msgSend(objj_msgSend(_e1,"keyWindow"),"orderFront:",_e1); +}else{ +if(objj_msgSend(_e1,"mainWindow")){ +objj_msgSend(objj_msgSend(_e1,"mainWindow"),"makeKeyAndOrderFront:",_e1); +}else{ +objj_msgSend(objj_msgSend(_e1,"mainMenu")._menuWindow,"makeKeyWindow"); +} +} +_previousKeyWindow=nil; +_previousMainWindow=nil; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationDidBecomeActiveNotification,_e1,nil); +} +}),new objj_method(sel_getUid("_willResignActive"),function(_e3,_e4){ +with(_e3){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationWillResignActiveNotification,_e3,nil); +} +}),new objj_method(sel_getUid("_didResignActive"),function(_e5,_e6){ +with(_e5){ +if(_e5._activeMenu){ +objj_msgSend(_e5._activeMenu,"cancelTracking"); +} +if(objj_msgSend(_e5,"keyWindow")){ +_previousKeyWindow=objj_msgSend(_e5,"keyWindow"); +objj_msgSend(_previousKeyWindow,"resignKeyWindow"); +} +if(objj_msgSend(_e5,"mainWindow")){ +_previousMainWindow=objj_msgSend(_e5,"mainWindow"); +objj_msgSend(_previousMainWindow,"resignMainWindow"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPApplicationDidResignActiveNotification,_e5,nil); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedApplication"),function(_e7,_e8){ +with(_e7){ +if(!CPApp){ +CPApp=objj_msgSend(objj_msgSend(CPApplication,"alloc"),"init"); +} +return CPApp; +} +}),new objj_method(sel_getUid("defaultThemeName"),function(_e9,_ea){ +with(_e9){ +return (objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"objectForInfoDictionaryKey:","CPDefaultTheme")||"Aristo"); +} +})]); +var _64=function(_eb,_ec){ +return {_window:_eb,_state:CPRunContinuesResponse,_previous:nil}; +}; +var _b0=function(_ed,_ee){ +return {_mask:_ed,_callback:_ee}; +}; +_CPRunModalLoop=function(_ef){ +objj_msgSend(CPApp,"setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:",_CPRunModalLoop,CPAnyEventMask,nil,0,NO); +var _f0=objj_msgSend(_ef,"window"),_f1=CPApp._currentSession; +if(_f0==_f1._window||objj_msgSend(_f0,"worksWhenModal")){ +objj_msgSend(_f0,"sendEvent:",_ef); +} +}; +CPApplicationMain=function(_f2,_f3){ +var _f4=objj_msgSend(CPBundle,"mainBundle"),_f5=objj_msgSend(_f4,"principalClass"); +if(!_f5){ +_f5=objj_msgSend(CPApplication,"class"); +} +objj_msgSend(_f5,"sharedApplication"); +if(objj_msgSend(_f2,"containsObject:","debug")){ +CPLogRegister(CPLogPopup); +} +CPApp._args=_f2; +CPApp._namedArgs=_f3; +objj_msgSend(_CPAppBootstrapper,"performActions"); +}; +var _f6=nil; +var _3=objj_allocateClassPair(CPObject,"_CPAppBootstrapper"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_4,[new objj_method(sel_getUid("actions"),function(_f7,_f8){ +with(_f7){ +return [sel_getUid("bootstrapPlatform"),sel_getUid("loadDefaultTheme"),sel_getUid("loadMainCibFile")]; +} +}),new objj_method(sel_getUid("performActions"),function(_f9,_fa){ +with(_f9){ +if(!_f6){ +_f6=objj_msgSend(_f9,"actions"); +} +while(_f6.length){ +var _fb=_f6.shift(); +if(objj_msgSend(_f9,_fb)){ +return; +} +} +objj_msgSend(CPApp,"run"); +} +}),new objj_method(sel_getUid("bootstrapPlatform"),function(_fc,_fd){ +with(_fc){ +return objj_msgSend(CPPlatform,"bootstrap"); +} +}),new objj_method(sel_getUid("loadDefaultTheme"),function(_fe,_ff){ +with(_fe){ +var _100=objj_msgSend(CPApplication,"defaultThemeName"),_101=nil; +if(_100==="Aristo"){ +_101=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPApplication,"class")),"pathForResource:",_100+".blend"); +}else{ +_101=objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_100+".blend"); +} +var _102=objj_msgSend(objj_msgSend(CPThemeBlend,"alloc"),"initWithContentsOfURL:",_101); +objj_msgSend(_102,"loadWithDelegate:",_fe); +return YES; +} +}),new objj_method(sel_getUid("blendDidFinishLoading:"),function(self,_103,_104){ +with(self){ +objj_msgSend(objj_msgSend(CPApplication,"sharedApplication"),"setThemeBlend:",_104); +objj_msgSend(CPTheme,"setDefaultTheme:",objj_msgSend(CPTheme,"themeNamed:",objj_msgSend(CPApplication,"defaultThemeName"))); +objj_msgSend(self,"performActions"); +} +}),new objj_method(sel_getUid("loadMainCibFile"),function(self,_105){ +with(self){ +var _106=objj_msgSend(CPBundle,"mainBundle"),_107=objj_msgSend(_106,"objectForInfoDictionaryKey:",_1)||objj_msgSend(_106,"objectForInfoDictionaryKey:",_2); +if(_107){ +objj_msgSend(_106,"loadCibFile:externalNameTable:loadDelegate:",_107,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",CPApp,CPCibOwner),self); +return YES; +}else{ +objj_msgSend(self,"loadCiblessBrowserMainMenu"); +} +return NO; +} +}),new objj_method(sel_getUid("loadCiblessBrowserMainMenu"),function(self,_108){ +with(self){ +var _109=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","MainMenu"); +objj_msgSend(_109,"setAutoenablesItems:",NO); +var _10a=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPApplication,"class")),_10b=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","New",sel_getUid("newDocument:"),"n"); +objj_msgSend(_10b,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/New.png"),CGSizeMake(16,16))); +objj_msgSend(_10b,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/NewHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_109,"addItem:",_10b); +var _10c=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Open",sel_getUid("openDocument:"),"o"); +objj_msgSend(_10c,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/Open.png"),CGSizeMake(16,16))); +objj_msgSend(_10c,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/OpenHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_109,"addItem:",_10c); +var _10d=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","Save"),_10e=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save",sel_getUid("saveDocument:"),nil); +objj_msgSend(_10e,"setImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/Save.png"),CGSizeMake(16,16))); +objj_msgSend(_10e,"setAlternateImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_10a,"pathForResource:","CPApplication/SaveHighlighted.png"),CGSizeMake(16,16))); +objj_msgSend(_10d,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save",sel_getUid("saveDocument:"),"s")); +objj_msgSend(_10d,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Save As",sel_getUid("saveDocumentAs:"),nil)); +objj_msgSend(_10e,"setSubmenu:",_10d); +objj_msgSend(_109,"addItem:",_10e); +var _10f=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Edit",nil,nil),_110=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","Edit"),_111=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Undo",sel_getUid("undo:"),CPUndoKeyEquivalent),_112=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Redo",sel_getUid("redo:"),CPRedoKeyEquivalent); +objj_msgSend(_111,"setKeyEquivalentModifierMask:",CPUndoKeyEquivalentModifierMask); +objj_msgSend(_112,"setKeyEquivalentModifierMask:",CPRedoKeyEquivalentModifierMask); +objj_msgSend(_110,"addItem:",_111); +objj_msgSend(_110,"addItem:",_112); +objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Cut",sel_getUid("cut:"),"x")),objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Copy",sel_getUid("copy:"),"c")),objj_msgSend(_110,"addItem:",objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Paste",sel_getUid("paste:"),"v")); +objj_msgSend(_10f,"setSubmenu:",_110); +objj_msgSend(_10f,"setHidden:",YES); +objj_msgSend(_109,"addItem:",_10f); +objj_msgSend(_109,"addItem:",objj_msgSend(CPMenuItem,"separatorItem")); +objj_msgSend(CPApp,"setMainMenu:",_109); +} +}),new objj_method(sel_getUid("cibDidFinishLoading:"),function(self,_113,aCib){ +with(self){ +objj_msgSend(self,"performActions"); +} +}),new objj_method(sel_getUid("cibDidFailToLoad:"),function(self,_114,aCib){ +with(self){ +throw new Error("Could not load main cib file (Did you forget to nib2cib it?)."); +} +}),new objj_method(sel_getUid("reset"),function(self,_115){ +with(self){ +_f6=nil; +} +})]); +p;19;CPArrayController.jt;17322;@STATIC;1.0;I;27;AppKit/CPObjectController.jI;26;AppKit/CPKeyValueBinding.jt;17239; +objj_executeFile("AppKit/CPObjectController.j",NO); +objj_executeFile("AppKit/CPKeyValueBinding.j",NO); +var _1=objj_allocateClassPair(CPObjectController,"CPArrayController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_avoidsEmptySelection"),new objj_ivar("_clearsFilterPredicateOnInsertion"),new objj_ivar("_filterRestrictsInsertion"),new objj_ivar("_preservesSelection"),new objj_ivar("_selectsInsertedObjects"),new objj_ivar("_alwaysUsesMultipleValuesMarker"),new objj_ivar("_selectionIndexes"),new objj_ivar("_sortDescriptors"),new objj_ivar("_filterPredicate"),new objj_ivar("_arrangedObjects")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPArrayController").super_class},"init"); +if(_3){ +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +} +return _3; +} +}),new objj_method(sel_getUid("prepareContent"),function(_5,_6){ +with(_5){ +objj_msgSend(_5,"_setContentArray:",[objj_msgSend(_5,"newObject")]); +} +}),new objj_method(sel_getUid("preservesSelection"),function(_7,_8){ +with(_7){ +return _preservesSelection; +} +}),new objj_method(sel_getUid("setPreservesSelection:"),function(_9,_a,_b){ +with(_9){ +_preservesSelection=_b; +} +}),new objj_method(sel_getUid("selectsInsertedObjects"),function(_c,_d){ +with(_c){ +return _selectsInsertedObjects; +} +}),new objj_method(sel_getUid("setSelectsInsertedObjects:"),function(_e,_f,_10){ +with(_e){ +_selectsInsertedObjects=_10; +} +}),new objj_method(sel_getUid("avoidsEmptySelection"),function(_11,_12){ +with(_11){ +return _avoidsEmptySelection; +} +}),new objj_method(sel_getUid("setAvoidsEmptySelection:"),function(_13,_14,_15){ +with(_13){ +_avoidsEmptySelection=_15; +} +}),new objj_method(sel_getUid("setContent:"),function(_16,_17,_18){ +with(_16){ +if(!objj_msgSend(_18,"isKindOfClass:",objj_msgSend(CPArray,"class"))){ +_18=[_18]; +} +var _19=nil,_1a=nil; +if(objj_msgSend(_16,"preservesSelection")){ +_19=objj_msgSend(_16,"selectedObjects"); +}else{ +_1a=objj_msgSend(_16,"selectionIndexes"); +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"willChangeValueForKey:","filterPredicate"); +} +_contentObject=_18; +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"__setFilterPredicate:",nil); +}else{ +objj_msgSend(_16,"_rearrangeObjects"); +} +if(objj_msgSend(_16,"preservesSelection")){ +objj_msgSend(_16,"__setSelectedObjects:",_19); +}else{ +objj_msgSend(_16,"__setSelectionIndexes:",_1a); +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_16,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("_setContentArray:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"setContent:",_1d); +} +}),new objj_method(sel_getUid("_setContentSet:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_1e,"setContent:",_20); +} +}),new objj_method(sel_getUid("contentArray"),function(_21,_22){ +with(_21){ +return objj_msgSend(_21,"content"); +} +}),new objj_method(sel_getUid("contentSet"),function(_23,_24){ +with(_23){ +return objj_msgSend(_23,"content"); +} +}),new objj_method(sel_getUid("arrangeObjects:"),function(_25,_26,_27){ +with(_25){ +var _28=objj_msgSend(_25,"filterPredicate"),_29=objj_msgSend(_25,"sortDescriptors"); +if(_28&&_29){ +var _2a=objj_msgSend(_27,"filteredArrayUsingPredicate:",_28); +objj_msgSend(_2a,"sortUsingDescriptors:",_29); +return _2a; +}else{ +if(_28){ +return objj_msgSend(_27,"filteredArrayUsingPredicate:",_28); +}else{ +if(_29){ +return objj_msgSend(_27,"sortedArrayUsingDescriptors:",_29); +} +} +} +return objj_msgSend(_27,"copy"); +} +}),new objj_method(sel_getUid("rearrangeObjects"),function(_2b,_2c){ +with(_2b){ +objj_msgSend(_2b,"willChangeValueForKey:","arrangedObjects"); +objj_msgSend(_2b,"_rearrangeObjects"); +objj_msgSend(_2b,"didChangeValueForKey:","arrangedObjects"); +} +}),new objj_method(sel_getUid("_rearrangeObjects"),function(_2d,_2e){ +with(_2d){ +var _2f=nil,_30=nil; +if(objj_msgSend(_2d,"preservesSelection")){ +_2f=objj_msgSend(_2d,"selectedObjects"); +}else{ +_30=objj_msgSend(_2d,"selectionIndexes"); +} +objj_msgSend(_2d,"__setArrangedObjects:",objj_msgSend(_2d,"arrangeObjects:",objj_msgSend(_2d,"contentArray"))); +if(objj_msgSend(_2d,"preservesSelection")){ +objj_msgSend(_2d,"__setSelectedObjects:",_2f); +}else{ +objj_msgSend(_2d,"__setSelectionIndexes:",_30); +} +} +}),new objj_method(sel_getUid("__setArrangedObjects:"),function(_31,_32,_33){ +with(_31){ +if(_arrangedObjects===_33){ +return; +} +_arrangedObjects=objj_msgSend(objj_msgSend(_CPObservableArray,"alloc"),"initWithArray:",_33); +} +}),new objj_method(sel_getUid("arrangedObjects"),function(_34,_35){ +with(_34){ +return _arrangedObjects; +} +}),new objj_method(sel_getUid("sortDescriptors"),function(_36,_37){ +with(_36){ +return _sortDescriptors; +} +}),new objj_method(sel_getUid("setSortDescriptors:"),function(_38,_39,_3a){ +with(_38){ +if(_sortDescriptors===_3a){ +return; +} +_sortDescriptors=objj_msgSend(_3a,"copy"); +objj_msgSend(_38,"_rearrangeObjects"); +} +}),new objj_method(sel_getUid("filterPredicate"),function(_3b,_3c){ +with(_3b){ +return _filterPredicate; +} +}),new objj_method(sel_getUid("setFilterPredicate:"),function(_3d,_3e,_3f){ +with(_3d){ +objj_msgSend(_3d,"__setFilterPredicate:",_3f); +} +}),new objj_method(sel_getUid("__setFilterPredicate:"),function(_40,_41,_42){ +with(_40){ +if(_filterPredicate===_42){ +return; +} +_filterPredicate=_42; +objj_msgSend(_40,"_rearrangeObjects"); +} +}),new objj_method(sel_getUid("alwaysUsesMultipleValuesMarker"),function(_43,_44){ +with(_43){ +return _alwaysUsesMultipleValuesMarker; +} +}),new objj_method(sel_getUid("selectionIndex"),function(_45,_46){ +with(_45){ +return objj_msgSend(_selectionIndexes,"firstIndex"); +} +}),new objj_method(sel_getUid("setSelectionIndex:"),function(_47,_48,_49){ +with(_47){ +return objj_msgSend(_47,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_49)); +} +}),new objj_method(sel_getUid("selectionIndexes"),function(_4a,_4b){ +with(_4a){ +return _selectionIndexes; +} +}),new objj_method(sel_getUid("setSelectionIndexes:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"__setSelectionIndexes:",_4e); +} +}),new objj_method(sel_getUid("__setSelectionIndex:"),function(_4f,_50,_51){ +with(_4f){ +objj_msgSend(_4f,"__setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_51)); +} +}),new objj_method(sel_getUid("__setSelectionIndexes:"),function(_52,_53,_54){ +with(_52){ +if(!_54){ +_54=objj_msgSend(CPIndexSet,"indexSet"); +} +if(!objj_msgSend(_54,"count")){ +if(_avoidsEmptySelection&&objj_msgSend(objj_msgSend(_52,"arrangedObjects"),"count")){ +_54=objj_msgSend(CPIndexSet,"indexSetWithIndex:",0); +} +}else{ +var _55=objj_msgSend(objj_msgSend(_52,"arrangedObjects"),"count"); +objj_msgSend(_54,"removeIndexesInRange:",CPMakeRange(_55,objj_msgSend(_54,"lastIndex")+1)); +if(!objj_msgSend(_54,"count")&&_avoidsEmptySelection&&_55){ +_54=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_55-1); +} +} +if(objj_msgSend(_selectionIndexes,"isEqualToIndexSet:",_54)){ +return NO; +} +_selectionIndexes=objj_msgSend(_54,"copy"); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_52),"reverseSetValueFor:","selectionIndexes"); +return YES; +} +}),new objj_method(sel_getUid("selectedObjects"),function(_56,_57){ +with(_56){ +var _58=objj_msgSend(objj_msgSend(_56,"arrangedObjects"),"objectsAtIndexes:",objj_msgSend(_56,"selectionIndexes")); +return objj_msgSend(_CPObservableArray,"arrayWithArray:",(_58||[])); +} +}),new objj_method(sel_getUid("setSelectedObjects:"),function(_59,_5a,_5b){ +with(_59){ +objj_msgSend(_59,"willChangeValueForKey:","selectionIndexes"); +objj_msgSend(_59,"_selectionWillChange"); +objj_msgSend(_59,"__setSelectedObjects:",_5b); +objj_msgSend(_59,"didChangeValueForKey:","selectionIndexes"); +objj_msgSend(_59,"_selectionDidChange"); +} +}),new objj_method(sel_getUid("__setSelectedObjects:"),function(_5c,_5d,_5e){ +with(_5c){ +var set=objj_msgSend(CPIndexSet,"indexSet"),_5f=objj_msgSend(_5e,"count"),_60=objj_msgSend(_5c,"arrangedObjects"); +for(var i=0;i<_5f;i++){ +var _61=objj_msgSend(_60,"indexOfObject:",objj_msgSend(_5e,"objectAtIndex:",i)); +if(_61!==CPNotFound){ +objj_msgSend(set,"addIndex:",_61); +} +} +objj_msgSend(_5c,"__setSelectionIndexes:",set); +return YES; +} +}),new objj_method(sel_getUid("canSelectPrevious"),function(_62,_63){ +with(_62){ +return objj_msgSend(objj_msgSend(_62,"selectionIndexes"),"firstIndex")>0; +} +}),new objj_method(sel_getUid("selectPrevious:"),function(_64,_65,_66){ +with(_64){ +var _67=objj_msgSend(objj_msgSend(_64,"selectionIndexes"),"firstIndex")-1; +if(_67>=0){ +objj_msgSend(_64,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_67)); +} +} +}),new objj_method(sel_getUid("canSelectNext"),function(_68,_69){ +with(_68){ +return objj_msgSend(objj_msgSend(_68,"selectionIndexes"),"firstIndex")<objj_msgSend(objj_msgSend(_68,"arrangedObjects"),"count")-1; +} +}),new objj_method(sel_getUid("selectNext:"),function(_6a,_6b,_6c){ +with(_6a){ +var _6d=objj_msgSend(objj_msgSend(_6a,"selectionIndexes"),"firstIndex")+1; +if(_6d<objj_msgSend(objj_msgSend(_6a,"arrangedObjects"),"count")){ +objj_msgSend(_6a,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_6d)); +} +} +}),new objj_method(sel_getUid("addObject:"),function(_6e,_6f,_70){ +with(_6e){ +if(!objj_msgSend(_6e,"canAdd")){ +return; +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_6e,"willChangeValueForKey:","filterPredicate"); +} +objj_msgSend(_6e,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"addObject:",_70); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_6e,"__setFilterPredicate:",nil); +} +if(_filterPredicate===nil||objj_msgSend(_filterPredicate,"evaluateWithObject:",_70)){ +var pos=objj_msgSend(_arrangedObjects,"insertObject:inArraySortedByDescriptors:",_70,_sortDescriptors); +if(_selectsInsertedObjects){ +objj_msgSend(_6e,"__setSelectionIndex:",pos); +}else{ +objj_msgSend(_selectionIndexes,"shiftIndexesStartingAtIndex:by:",pos,1); +} +}else{ +objj_msgSend(_6e,"_rearrangeObjects"); +} +objj_msgSend(_6e,"didChangeValueForKey:","content"); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_6e,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("insertObject:atArrangedObjectIndex:"),function(_71,_72,_73,_74){ +with(_71){ +if(!objj_msgSend(_71,"canAdd")){ +return; +} +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_71,"willChangeValueForKey:","filterPredicate"); +} +objj_msgSend(_71,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"insertObject:atIndex:",_73,_74); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_71,"__setFilterPredicate:",nil); +} +objj_msgSend(objj_msgSend(_71,"arrangedObjects"),"insertObject:atIndex:",_73,_74); +if(objj_msgSend(_71,"selectsInsertedObjects")){ +objj_msgSend(_71,"__setSelectionIndex:",_74); +}else{ +objj_msgSend(objj_msgSend(_71,"selectionIndexes"),"shiftIndexesStartingAtIndex:by:",_74,1); +} +if(objj_msgSend(_71,"avoidsEmptySelection")&&objj_msgSend(objj_msgSend(_71,"selectionIndexes"),"count")<=0&&objj_msgSend(_contentObject,"count")>0){ +objj_msgSend(_71,"__setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",0)); +} +objj_msgSend(_71,"didChangeValueForKey:","content"); +if(_clearsFilterPredicateOnInsertion){ +objj_msgSend(_71,"didChangeValueForKey:","filterPredicate"); +} +} +}),new objj_method(sel_getUid("removeObject:"),function(_75,_76,_77){ +with(_75){ +if(!objj_msgSend(_75,"canRemove")){ +return; +} +objj_msgSend(_75,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"removeObject:",_77); +if(_filterPredicate===nil||objj_msgSend(_filterPredicate,"evaluateWithObject:",_77)){ +var pos=objj_msgSend(_arrangedObjects,"indexOfObject:",_77); +objj_msgSend(_arrangedObjects,"removeObjectAtIndex:",pos); +objj_msgSend(_selectionIndexes,"shiftIndexesStartingAtIndex:by:",pos,-1); +} +objj_msgSend(_75,"didChangeValueForKey:","content"); +} +}),new objj_method(sel_getUid("add:"),function(_78,_79,_7a){ +with(_78){ +if(!objj_msgSend(_78,"canAdd")){ +return; +} +objj_msgSend(_78,"insert:",_7a); +} +}),new objj_method(sel_getUid("insert:"),function(_7b,_7c,_7d){ +with(_7b){ +if(!objj_msgSend(_7b,"canInsert")){ +return; +} +var _7e=objj_msgSend(_7b,"automaticallyPreparesContent")?objj_msgSend(_7b,"newObject"):objj_msgSend(_7b,"_defaultNewObject"); +objj_msgSend(_7b,"addObject:",_7e); +} +}),new objj_method(sel_getUid("remove:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSend(_7f,"removeObjects:",objj_msgSend(objj_msgSend(_7f,"arrangedObjects"),"objectsAtIndexes:",objj_msgSend(_7f,"selectionIndexes"))); +} +}),new objj_method(sel_getUid("removeObjectsAtArrangedObjectIndexes:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(_82,"_removeObjects:",objj_msgSend(objj_msgSend(_82,"arrangedObjects"),"objectsAtIndexes:",_84)); +} +}),new objj_method(sel_getUid("addObjects:"),function(_85,_86,_87){ +with(_85){ +if(!objj_msgSend(_85,"canAdd")){ +return; +} +var _88=objj_msgSend(_85,"contentArray"),_89=objj_msgSend(_87,"count"); +for(var i=0;i<_89;i++){ +objj_msgSend(_88,"addObject:",objj_msgSend(_87,"objectAtIndex:",i)); +} +objj_msgSend(_85,"setContent:",_88); +} +}),new objj_method(sel_getUid("removeObjects:"),function(_8a,_8b,_8c){ +with(_8a){ +if(!objj_msgSend(_8a,"canRemove")){ +return; +} +objj_msgSend(_8a,"_removeObjects:",_8c); +} +}),new objj_method(sel_getUid("_removeObjects:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8d,"willChangeValueForKey:","content"); +objj_msgSend(_contentObject,"removeObjectsInArray:",_8f); +var _90=objj_msgSend(_8d,"arrangedObjects"),_91=objj_msgSend(_90,"indexOfObject:",objj_msgSend(_8f,"objectAtIndex:",0)); +objj_msgSend(_90,"removeObjectsInArray:",_8f); +var _92=objj_msgSend(_90,"count"),_93=objj_msgSend(CPIndexSet,"indexSet"); +if(objj_msgSend(_8d,"preservesSelection")||objj_msgSend(_8d,"avoidsEmptySelection")){ +_93=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_91); +if(_92<=0){ +_93=objj_msgSend(CPIndexSet,"indexSet"); +}else{ +if(_91>=_92){ +_93=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_92-1); +} +} +} +_selectionIndexes=_93; +objj_msgSend(_8d,"didChangeValueForKey:","content"); +} +}),new objj_method(sel_getUid("canInsert"),function(_94,_95){ +with(_94){ +return objj_msgSend(_94,"isEditable"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("initialize"),function(_96,_97){ +with(_96){ +if(_96!==objj_msgSend(CPArrayController,"class")){ +return; +} +objj_msgSend(_96,"exposeBinding:","contentArray"); +objj_msgSend(_96,"exposeBinding:","contentSet"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingContentArray"),function(_98,_99){ +with(_98){ +return objj_msgSend(CPSet,"setWithObjects:","content"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingArrangedObjects"),function(_9a,_9b){ +with(_9a){ +return objj_msgSend(CPSet,"setWithObjects:","content","filterPredicate","sortDescriptors"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelection"),function(_9c,_9d){ +with(_9c){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndex"),function(_9e,_9f){ +with(_9e){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndexes"),function(_a0,_a1){ +with(_a0){ +return objj_msgSend(CPSet,"setWithObjects:","arrangedObjects"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedObjects"),function(_a2,_a3){ +with(_a2){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"),function(_a4,_a5){ +with(_a4){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectNext"),function(_a6,_a7){ +with(_a6){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectPrevious"),function(_a8,_a9){ +with(_a8){ +return objj_msgSend(CPSet,"setWithObjects:","selectionIndexes"); +} +})]); +var _1=objj_getClass("CPArrayController"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArrayController\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_aa,_ab,_ac){ +with(_aa){ +_aa=objj_msgSendSuper({receiver:_aa,super_class:objj_getClass("CPArrayController").super_class},"initWithCoder:",coder); +if(_aa){ +_avoidsEmptySelection=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerAvoidsEmptySelection"); +_clearsFilterPredicateOnInsertion=objj_msgSend(coder,"decodeBoolForKey:","CPClearsFilterPredicateOnInsertion"); +_filterRestrictsInsertion=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerFilterRestrictsInsertion"); +_preservesSelection=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerPreservesSelection"); +_selectsInsertedObjects=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerSelectsInsertedObjects"); +_alwaysUsesMultipleValuesMarker=objj_msgSend(coder,"decodeBoolForKey:","CPArrayControllerAlwaysUsesMultipleValuesMarker"); +if(objj_msgSend(_aa,"automaticallyPreparesContent")){ +objj_msgSend(_aa,"prepareContent"); +}else{ +objj_msgSend(_aa,"_setContentArray:",[]); +} +} +return _aa; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(_ad,"_selectionWillChange"); +objj_msgSend(_ad,"_selectionDidChange"); +} +})]); +p;14;CPBezierPath.jt;4477;@STATIC;1.0;I;26;AppKit/CPGraphicsContext.jI;21;Foundation/CPObject.jt;4401; +objj_executeFile("AppKit/CPGraphicsContext.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +var _1=1; +var _2=objj_allocateClassPair(CPObject,"CPBezierPath"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_path"),new objj_ivar("_lineWidth")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +if(_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPBezierPath").super_class},"init")){ +_path=CGPathCreateMutable(); +_lineWidth=objj_msgSend(objj_msgSend(_4,"class"),"defaultLineWidth"); +} +return _4; +} +}),new objj_method(sel_getUid("moveToPoint:"),function(_6,_7,_8){ +with(_6){ +CGPathMoveToPoint(_path,nil,_8.x,_8.y); +} +}),new objj_method(sel_getUid("lineToPoint:"),function(_9,_a,_b){ +with(_9){ +CGPathAddLineToPoint(_path,nil,_b.x,_b.y); +} +}),new objj_method(sel_getUid("curveToPoint:controlPoint1:controlPoint2:"),function(_c,_d,_e,_f,_10){ +with(_c){ +CGPathAddCurveToPoint(_path,nil,_f.x,_f.y,_10.x,_10.y,_e.x,_e.y); +} +}),new objj_method(sel_getUid("closePath"),function(_11,_12){ +with(_11){ +CGPathCloseSubpath(_path); +} +}),new objj_method(sel_getUid("stroke"),function(_13,_14){ +with(_13){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(ctx); +CGContextAddPath(ctx,_path); +CGContextSetLineWidth(ctx,objj_msgSend(_13,"lineWidth")); +CGContextClosePath(ctx); +CGContextStrokePath(ctx); +} +}),new objj_method(sel_getUid("fill"),function(_15,_16){ +with(_15){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(ctx); +CGContextAddPath(ctx,_path); +CGContextSetLineWidth(ctx,objj_msgSend(_15,"lineWidth")); +CGContextClosePath(ctx); +CGContextFillPath(ctx); +} +}),new objj_method(sel_getUid("lineWidth"),function(_17,_18){ +with(_17){ +return _lineWidth; +} +}),new objj_method(sel_getUid("setLineWidth:"),function(_19,_1a,_1b){ +with(_19){ +_lineWidth=_1b; +} +}),new objj_method(sel_getUid("elementCount"),function(_1c,_1d){ +with(_1c){ +return _path.count; +} +}),new objj_method(sel_getUid("isEmpty"),function(_1e,_1f){ +with(_1e){ +return CGPathIsEmpty(_path); +} +}),new objj_method(sel_getUid("currentPoint"),function(_20,_21){ +with(_20){ +return CGPathGetCurrentPoint(_path); +} +}),new objj_method(sel_getUid("appendBezierPathWithPoints:count:"),function(_22,_23,_24,_25){ +with(_22){ +CGPathAddLines(_path,nil,_24,_25); +} +}),new objj_method(sel_getUid("appendBezierPathWithRect:"),function(_26,_27,_28){ +with(_26){ +CGPathAddRect(_path,nil,_28); +} +}),new objj_method(sel_getUid("appendBezierPathWithOvalInRect:"),function(_29,_2a,_2b){ +with(_29){ +CGPathAddPath(_path,nil,CGPathWithEllipseInRect(_2b)); +} +}),new objj_method(sel_getUid("appendBezierPathWithRoundedRect:xRadius:yRadius:"),function(_2c,_2d,_2e,_2f,_30){ +with(_2c){ +CGPathAddPath(_path,nil,CGPathWithRoundedRectangleInRect(_2e,_2f,_30,YES,YES,YES,YES)); +} +}),new objj_method(sel_getUid("appendBezierPath:"),function(_31,_32,_33){ +with(_31){ +CGPathAddPath(_path,nil,_33._path); +} +}),new objj_method(sel_getUid("removeAllPoints"),function(_34,_35){ +with(_34){ +_path=CGPathCreateMutable(); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("bezierPath"),function(_36,_37){ +with(_36){ +return objj_msgSend(objj_msgSend(_36,"alloc"),"init"); +} +}),new objj_method(sel_getUid("bezierPathWithOvalInRect:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(_38,"bezierPath"); +objj_msgSend(_3b,"appendBezierPathWithOvalInRect:",_3a); +return _3b; +} +}),new objj_method(sel_getUid("bezierPathWithRect:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=objj_msgSend(_3c,"bezierPath"); +objj_msgSend(_3f,"appendBezierPathWithRect:",_3e); +return _3f; +} +}),new objj_method(sel_getUid("defaultLineWidth"),function(_40,_41){ +with(_40){ +return _1; +} +}),new objj_method(sel_getUid("setDefaultLineWidth:"),function(_42,_43,_44){ +with(_42){ +_1=_44; +} +}),new objj_method(sel_getUid("fillRect:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(objj_msgSend(_45,"bezierPathWithRect:",_47),"fill"); +} +}),new objj_method(sel_getUid("strokeRect:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(objj_msgSend(_48,"bezierPathWithRect:",_4a),"stroke"); +} +}),new objj_method(sel_getUid("strokeLineFromPoint:toPoint:"),function(_4b,_4c,_4d,_4e){ +with(_4b){ +var _4f=objj_msgSend(_4b,"bezierPath"); +objj_msgSend(_4f,"moveToPoint:",_4d); +objj_msgSend(_4f,"lineToPoint:",_4e); +objj_msgSend(_4f,"stroke"); +} +})]); +p;7;CPBox.jt;6994;@STATIC;1.0;i;8;CPView.jt;6963; +objj_executeFile("CPView.j",YES); +CPNoBorder=0; +CPLineBorder=1; +CPBezelBorder=2; +CPGrooveBorder=3; +var _1=objj_allocateClassPair(CPView,"CPBox"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_borderType"),new objj_ivar("_borderColor"),new objj_ivar("_fillColor"),new objj_ivar("_cornerRadius"),new objj_ivar("_borderWidth"),new objj_ivar("_contentMargin"),new objj_ivar("_contentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPBox").super_class},"initWithFrame:",_5); +if(_3){ +_borderType=CPBezelBorder; +_fillColor=objj_msgSend(CPColor,"clearColor"); +_borderColor=objj_msgSend(CPColor,"blackColor"); +_borderWidth=1; +_contentMargin=CGSizeMake(0,0); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",objj_msgSend(_3,"bounds")); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_3,"setAutoresizesSubviews:",YES); +objj_msgSend(_3,"addSubview:",_contentView); +} +return _3; +} +}),new objj_method(sel_getUid("borderRect"),function(_6,_7){ +with(_6){ +return objj_msgSend(_6,"bounds"); +} +}),new objj_method(sel_getUid("borderType"),function(_8,_9){ +with(_8){ +return _borderType; +} +}),new objj_method(sel_getUid("setBorderType:"),function(_a,_b,_c){ +with(_a){ +_borderType=_c; +objj_msgSend(_a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderColor"),function(_d,_e){ +with(_d){ +return _borderColor; +} +}),new objj_method(sel_getUid("setBorderColor:"),function(_f,_10,_11){ +with(_f){ +if(objj_msgSend(_11,"isEqual:",_borderColor)){ +return; +} +_borderColor=_11; +objj_msgSend(_f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderWidth"),function(_12,_13){ +with(_12){ +return _borderWidth; +} +}),new objj_method(sel_getUid("setBorderWidth:"),function(_14,_15,_16){ +with(_14){ +if(_16===_borderWidth){ +return; +} +_borderWidth=_16; +objj_msgSend(_14,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("cornerRadius"),function(_17,_18){ +with(_17){ +return _cornerRadius; +} +}),new objj_method(sel_getUid("setCornerRadius:"),function(_19,_1a,_1b){ +with(_19){ +if(_1b===_cornerRadius){ +return; +} +_cornerRadius=_1b; +objj_msgSend(_19,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("fillColor"),function(_1c,_1d){ +with(_1c){ +return _fillColor; +} +}),new objj_method(sel_getUid("setFillColor:"),function(_1e,_1f,_20){ +with(_1e){ +if(objj_msgSend(_20,"isEqual:",_fillColor)){ +return; +} +_fillColor=_20; +objj_msgSend(_1e,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("contentView"),function(_21,_22){ +with(_21){ +return _contentView; +} +}),new objj_method(sel_getUid("setContentView:"),function(_23,_24,_25){ +with(_23){ +if(_25===_contentView){ +return; +} +objj_msgSend(_25,"setFrame:",CGRectInset(objj_msgSend(_23,"bounds"),_contentMargin.width+_borderWidth,_contentMargin.height+_borderWidth)); +objj_msgSend(_25,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_23,"replaceSubview:with:",_contentView,_25); +_contentView=_25; +} +}),new objj_method(sel_getUid("contentViewMargins"),function(_26,_27){ +with(_26){ +return _contentMargin; +} +}),new objj_method(sel_getUid("setContentViewMargins:"),function(_28,_29,_2a){ +with(_28){ +if(_2a.width<0||_2a.height<0){ +objj_msgSend(CPException,"raise:reason:",CPGenericException,"Margins must be positive"); +} +_contentMargin=CGSizeMakeCopy(_2a); +objj_msgSend(_28,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setFrameFromContentFrame:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"setFrame:",CGRectInset(_2d,-(_contentMargin.width+_borderWidth),-(_contentMargin.height+_borderWidth))); +objj_msgSend(_2b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("sizeToFit"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_contentView,"frame"); +objj_msgSend(_2e,"setFrameSize:",CGSizeMake(_30.size.width+_contentMargin.width*2,_30.size.height+_contentMargin.height*2)); +objj_msgSend(_contentView,"setFrameOrigin:",CGPointMake(_contentMargin.width,_contentMargin.height)); +} +}),new objj_method(sel_getUid("drawRect:"),function(_31,_32,_33){ +with(_31){ +if(_borderType===CPNoBorder){ +return; +} +var _34=objj_msgSend(_31,"bounds"),_35=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetFillColor(_35,objj_msgSend(_31,"fillColor")); +switch(_borderType){ +case CPBezelBorder: +var _36=[CPMinYEdge,CPMaxXEdge,CPMaxYEdge,CPMinXEdge],_37=190/255,_38=[142/255,_37,_37,_37],_39=_borderWidth; +while(_39--){ +_34=CPDrawTiledRects(_34,_34,_36,_38); +} +CGContextFillRect(_35,_34); +break; +default: +_34=CGRectInset(_34,_borderWidth/2,_borderWidth/2); +CGContextSetStrokeColor(_35,objj_msgSend(_31,"borderColor")); +CGContextSetLineWidth(_35,_borderWidth); +CGContextFillRoundedRectangleInRect(_35,_34,_cornerRadius,YES,YES,YES,YES); +CGContextStrokeRoundedRectangleInRect(_35,_34,_cornerRadius,YES,YES,YES,YES); +break; +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("boxEnclosingView:"),function(_3a,_3b,_3c){ +with(_3a){ +var box=objj_msgSend(objj_msgSend(_3a,"alloc"),"initWithFrame:",CGRectMakeZero()),_3d=objj_msgSend(_3c,"superview"); +objj_msgSend(box,"setFrameFromContentFrame:",objj_msgSend(_3c,"frame")); +objj_msgSend(_3d,"replaceSubview:with:",_3c,box); +objj_msgSend(box,"setContentView:",_3c); +return box; +} +})]); +var _3e="CPBoxBorderTypeKey",_3f="CPBoxBorderColorKey",_40="CPBoxFillColorKey",_41="CPBoxCornerRadiusKey",_42="CPBoxBorderWidthKey",_43="CPBoxContentMarginKey"; +var _1=objj_getClass("CPBox"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPBox\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_44,_45,_46){ +with(_44){ +_44=objj_msgSendSuper({receiver:_44,super_class:objj_getClass("CPBox").super_class},"initWithCoder:",_46); +if(_44){ +_borderType=objj_msgSend(_46,"decodeIntForKey:",_3e); +_borderColor=objj_msgSend(_46,"decodeObjectForKey:",_3f); +_fillColor=objj_msgSend(_46,"decodeObjectForKey:",_40); +_cornerRadius=objj_msgSend(_46,"decodeFloatForKey:",_41); +_borderWidth=objj_msgSend(_46,"decodeFloatForKey:",_42); +_contentMargin=objj_msgSend(_46,"decodeSizeForKey:",_43); +_contentView=objj_msgSend(_44,"subviews")[0]; +objj_msgSend(_44,"setAutoresizesSubviews:",YES); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +} +return _44; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_47,_48,_49){ +with(_47){ +objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPBox").super_class},"encodeWithCoder:",_49); +objj_msgSend(_49,"encodeInt:forKey:",_borderType,_3e); +objj_msgSend(_49,"encodeObject:forKey:",_borderColor,_3f); +objj_msgSend(_49,"encodeObject:forKey:",_fillColor,_40); +objj_msgSend(_49,"encodeFloat:forKey:",_cornerRadius,_41); +objj_msgSend(_49,"encodeFloat:forKey:",_borderWidth,_42); +objj_msgSend(_49,"encodeSize:forKey:",_contentMargin,_43); +} +})]); +p;11;CPBrowser.jt;33588;@STATIC;1.0;i;11;CPControl.ji;9;CPImage.ji;13;CPTableView.ji;14;CPScrollView.jt;33502; +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPScrollView.j",YES); +var _1=objj_allocateClassPair(CPControl,"CPBrowser"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_delegate"),new objj_ivar("_pathSeparator"),new objj_ivar("_contentView"),new objj_ivar("_horizontalScrollView"),new objj_ivar("_prototypeView"),new objj_ivar("_tableViews"),new objj_ivar("_tableDelegates"),new objj_ivar("_rootItem"),new objj_ivar("_delegateSupportsImages"),new objj_ivar("_doubleAction"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_tableViewClass"),new objj_ivar("_rowHeight"),new objj_ivar("_imageWidth"),new objj_ivar("_leafWidth"),new objj_ivar("_minColumnWidth"),new objj_ivar("_defaultColumnWidth"),new objj_ivar("_columnWidths")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("doubleAction"),function(_3,_4){ +with(_3){ +return _doubleAction; +} +}),new objj_method(sel_getUid("setDoubleAction:"),function(_5,_6,_7){ +with(_5){ +_doubleAction=_7; +} +}),new objj_method(sel_getUid("tableViewClass"),function(_8,_9){ +with(_8){ +return _tableViewClass; +} +}),new objj_method(sel_getUid("setTableViewClass:"),function(_a,_b,_c){ +with(_a){ +_tableViewClass=_c; +} +}),new objj_method(sel_getUid("defaultColumnWidth"),function(_d,_e){ +with(_d){ +return _defaultColumnWidth; +} +}),new objj_method(sel_getUid("setDefaultColumnWidth:"),function(_f,_10,_11){ +with(_f){ +_defaultColumnWidth=_11; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_12,_13,_14){ +with(_12){ +if(_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPBrowser").super_class},"initWithFrame:",_14)){ +_rowHeight=23; +_defaultColumnWidth=140; +_minColumnWidth=80; +_imageWidth=23; +_leafWidth=13; +_columnWidths=[]; +_pathSeparator="/"; +_tableViews=[]; +_tableDelegates=[]; +_allowsMultipleSelection=YES; +_allowsEmptySelection=YES; +_tableViewClass=objj_msgSend(_CPBrowserTableView,"class"); +_prototypeView=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_prototypeView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_prototypeView,"setValue:forThemeAttribute:inState:",objj_msgSend(CPColor,"whiteColor"),"text-color",CPThemeStateSelectedDataView); +objj_msgSend(_prototypeView,"setLineBreakMode:",CPLineBreakByTruncatingTail); +_horizontalScrollView=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",objj_msgSend(_12,"bounds")); +objj_msgSend(_horizontalScrollView,"setHasVerticalScroller:",NO); +objj_msgSend(_horizontalScrollView,"setAutohidesScrollers:",YES); +objj_msgSend(_horizontalScrollView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,CGRectGetHeight(objj_msgSend(_12,"bounds")))); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewHeightSizable); +objj_msgSend(_horizontalScrollView,"setDocumentView:",_contentView); +objj_msgSend(_12,"addSubview:",_horizontalScrollView); +} +return _12; +} +}),new objj_method(sel_getUid("setPrototypeView:"),function(_15,_16,_17){ +with(_15){ +_prototypeView=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_17)); +} +}),new objj_method(sel_getUid("prototypeView"),function(_18,_19){ +with(_18){ +return objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_prototypeView)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_1a,_1b,_1c){ +with(_1a){ +_delegate=_1c; +_delegateSupportsImages=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:imageValueForItem:")); +objj_msgSend(_1a,"loadColumnZero"); +} +}),new objj_method(sel_getUid("delegate"),function(_1d,_1e){ +with(_1d){ +return _delegate; +} +}),new objj_method(sel_getUid("tableViewInColumn:"),function(_1f,_20,_21){ +with(_1f){ +return _tableViews[_21]; +} +}),new objj_method(sel_getUid("columnOfTableView:"),function(_22,_23,_24){ +with(_22){ +return objj_msgSend(_tableViews,"indexOfObject:",_24); +} +}),new objj_method(sel_getUid("loadColumnZero"),function(_25,_26){ +with(_25){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("rootItemForBrowser:"))){ +_rootItem=objj_msgSend(_delegate,"rootItemForBrowser:",_25); +}else{ +_rootItem=nil; +} +objj_msgSend(_25,"setLastColumn:",-1); +objj_msgSend(_25,"addColumn"); +} +}),new objj_method(sel_getUid("setLastColumn:"),function(_27,_28,_29){ +with(_27){ +if(_29>=_tableViews.length){ +return; +} +var _2a=_tableViews.length-1; +var _2b=_29+1; +objj_msgSend(objj_msgSend(_tableViews.slice(_2b),"valueForKey:","enclosingScrollView"),"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +_tableViews=_tableViews.slice(0,_2b); +_tableDelegates=_tableDelegates.slice(0,_2b); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:didChangeLastColumn:toColumn:"))){ +objj_msgSend(_delegate,"browser:didChangeLastColumn:toColumn:",_27,_2a,_29); +} +objj_msgSend(_27,"tile"); +} +}),new objj_method(sel_getUid("lastColumn"),function(_2c,_2d){ +with(_2c){ +return _tableViews.length-1; +} +}),new objj_method(sel_getUid("addColumn"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_2e,"lastColumn"),_31=_tableViews[_30],_32=objj_msgSend(_31,"selectedRowIndexes"); +if(_30>=0&&objj_msgSend(_32,"count")>1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Can't add column, column "+_30+" has invalid selection."); +} +var _33=_30+1,_34=_33===0?_rootItem:objj_msgSend(_tableDelegates[_30],"childAtIndex:",objj_msgSend(_32,"firstIndex")); +if(_33>0&&_34&&objj_msgSend(_2e,"isLeafItem:",_34)){ +return; +} +var _35=objj_msgSend(objj_msgSend(_tableViewClass,"alloc"),"initWithFrame:browser:",CGRectMakeZero(),_2e); +objj_msgSend(_35,"setHeaderView:",nil); +objj_msgSend(_35,"setCornerView:",nil); +objj_msgSend(_35,"setAllowsMultipleSelection:",_allowsMultipleSelection); +objj_msgSend(_35,"setAllowsEmptySelection:",_allowsEmptySelection); +objj_msgSend(_35,"registerForDraggedTypes:",objj_msgSend(_2e,"registeredDraggedTypes")); +objj_msgSend(_2e,"_addTableColumnsToTableView:forColumnIndex:",_35,_33); +var _36=objj_msgSend(objj_msgSend(_CPBrowserTableDelegate,"alloc"),"init"); +objj_msgSend(_36,"_setDelegate:",_delegate); +objj_msgSend(_36,"_setBrowser:",_2e); +objj_msgSend(_36,"_setIndex:",_33); +objj_msgSend(_36,"_setItem:",_34); +_tableViews[_33]=_35; +_tableDelegates[_33]=_36; +objj_msgSend(_35,"setDelegate:",_36); +objj_msgSend(_35,"setDataSource:",_36); +objj_msgSend(_35,"setTarget:",_36); +objj_msgSend(_35,"setAction:",sel_getUid("_tableViewClicked:")); +objj_msgSend(_35,"setDoubleAction:",sel_getUid("_tableViewDoubleClicked:")); +objj_msgSend(_35,"setDraggingDestinationFeedbackStyle:",CPTableViewDraggingDestinationFeedbackStyleRegular); +var _37=objj_msgSend(objj_msgSend(_CPBrowserScrollView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_37,"_setBrowser:",_2e); +objj_msgSend(_37,"setDocumentView:",_35); +objj_msgSend(_37,"setHasHorizontalScroller:",NO); +objj_msgSend(_37,"setAutoresizingMask:",CPViewHeightSizable); +objj_msgSend(_contentView,"addSubview:",_37); +objj_msgSend(_2e,"tile"); +objj_msgSend(_2e,"scrollColumnToVisible:",_33); +} +}),new objj_method(sel_getUid("_addTableColumnsToTableView:forColumnIndex:"),function(_38,_39,_3a,_3b){ +with(_38){ +if(_delegateSupportsImages){ +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Image"),_3d=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_3d,"setImageScaling:",CPScaleProportionally); +objj_msgSend(_3c,"setDataView:",_3d); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +} +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Content"); +objj_msgSend(_3c,"setDataView:",_prototypeView); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +var _3c=objj_msgSend(objj_msgSend(CPTableColumn,"alloc"),"initWithIdentifier:","Leaf"),_3d=objj_msgSend(objj_msgSend(_CPBrowserLeafView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_3d,"setBranchImage:",objj_msgSend(objj_msgSend(_38,"class"),"branchImage")); +objj_msgSend(_3d,"setHighlightedBranchImage:",objj_msgSend(objj_msgSend(_38,"class"),"highlightedBranchImage")); +objj_msgSend(_3c,"setDataView:",_3d); +objj_msgSend(_3c,"setResizingMask:",CPTableColumnNoResizing); +objj_msgSend(_3a,"addTableColumn:",_3c); +} +}),new objj_method(sel_getUid("reloadColumn:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(objj_msgSend(_3e,"tableViewInColumn:",_40),"reloadData"); +} +}),new objj_method(sel_getUid("tile"),function(_41,_42){ +with(_41){ +var _43=0,_44=objj_msgSend(CPScroller,"scrollerWidth"),_45=CGRectGetHeight(objj_msgSend(_contentView,"bounds")); +for(var i=0,_46=_tableViews.length;i<_46;i++){ +var _47=_tableViews[i],_48=objj_msgSend(_47,"enclosingScrollView"),_49=objj_msgSend(_41,"widthOfColumn:",i),_4a=CGRectGetHeight(objj_msgSend(_47,"bounds")); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Image"),"setWidth:",_imageWidth); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Content"),"setWidth:",_49-(_leafWidth+_delegateSupportsImages?_imageWidth:0)-_44-_44); +objj_msgSend(objj_msgSend(_47,"tableColumnWithIdentifier:","Leaf"),"setWidth:",_leafWidth); +objj_msgSend(_47,"setRowHeight:",_rowHeight); +objj_msgSend(_47,"setFrameSize:",CGSizeMake(_49-_44,_4a)); +objj_msgSend(_48,"setFrameOrigin:",CGPointMake(_43,0)); +objj_msgSend(_48,"setFrameSize:",CGSizeMake(_49,_45)); +_43+=_49; +} +objj_msgSend(_contentView,"setFrameSize:",CGSizeMake(_43,_45)); +} +}),new objj_method(sel_getUid("rowAtPoint:"),function(_4b,_4c,_4d){ +with(_4b){ +var _4e=objj_msgSend(_4b,"columnAtPoint:",_4d); +if(_4e===-1){ +return -1; +} +var _4f=_tableViews[_4e]; +return objj_msgSend(_4f,"rowAtPoint:",objj_msgSend(_4f,"convertPoint:fromView:",_4d,_4b)); +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(_50,_51,_52){ +with(_50){ +var _53=objj_msgSend(_contentView,"convertPoint:fromView:",_52,_50); +for(var i=0,_54=_tableViews.length;i<_54;i++){ +var _55=objj_msgSend(objj_msgSend(_tableViews[i],"enclosingScrollView"),"frame"); +if(CGRectContainsPoint(_55,_53)){ +return i; +} +} +return -1; +} +}),new objj_method(sel_getUid("rectOfRow:inColumn:"),function(_56,_57,_58,_59){ +with(_56){ +var _5a=_tableViews[_59],_5b=objj_msgSend(_5a,"rectOfRow:",_58); +_5b.origin=objj_msgSend(_56,"convertPoint:fromView:",_5b.origin,_5a); +return _5b; +} +}),new objj_method(sel_getUid("itemAtRow:inColumn:"),function(_5c,_5d,row,_5e){ +with(_5c){ +return objj_msgSend(_tableDelegates[_5e],"childAtIndex:",row); +} +}),new objj_method(sel_getUid("isLeafItem:"),function(_5f,_60,_61){ +with(_5f){ +return objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:isLeafItem:"))&&objj_msgSend(_delegate,"browser:isLeafItem:",_5f,_61); +} +}),new objj_method(sel_getUid("parentForItemsInColumn:"),function(_62,_63,_64){ +with(_62){ +return objj_msgSend(_tableDelegates[_64],"_item"); +} +}),new objj_method(sel_getUid("selectedItems"),function(_65,_66){ +with(_65){ +var _67=objj_msgSend(_65,"selectedColumn"),_68=objj_msgSend(_65,"selectedRowIndexesInColumn:",_67),set=objj_msgSend(CPSet,"set"),_69=objj_msgSend(_68,"firstIndex"); +while(_69!==CPNotFound){ +objj_msgSend(set,"addObject:",objj_msgSend(_65,"itemAtRow:inColumn:",_69,_67)); +_69=objj_msgSend(_68,"indexGreaterThanIndex:",_69); +} +return set; +} +}),new objj_method(sel_getUid("selectedItem"),function(_6a,_6b){ +with(_6a){ +var _6c=objj_msgSend(_6a,"selectedColumn"),_6d=objj_msgSend(_6a,"selectedRowInColumn:",_6c); +return objj_msgSend(_6a,"itemAtRow:inColumn:",_6d,_6c); +} +}),new objj_method(sel_getUid("trackMouse:"),function(_6e,_6f,_70){ +with(_6e){ +} +}),new objj_method(sel_getUid("_column:clickedRow:"),function(_71,_72,_73,_74){ +with(_71){ +objj_msgSend(_71,"setLastColumn:",_73); +if(_74>=0){ +objj_msgSend(_71,"addColumn"); +} +objj_msgSend(_71,"doClick:",_71); +} +}),new objj_method(sel_getUid("sendAction"),function(_75,_76){ +with(_75){ +objj_msgSend(_75,"sendAction:to:",_action,_target); +} +}),new objj_method(sel_getUid("doClick:"),function(_77,_78,_79){ +with(_77){ +objj_msgSend(_77,"sendAction:to:",_action,_target); +} +}),new objj_method(sel_getUid("doDoubleClick:"),function(_7a,_7b,_7c){ +with(_7a){ +objj_msgSend(_7a,"sendAction:to:",_doubleAction,_target); +} +}),new objj_method(sel_getUid("keyDown:"),function(_7d,_7e,_7f){ +with(_7d){ +var _80=objj_msgSend(_7d,"selectedColumn"); +if(_80===-1){ +return; +} +objj_msgSend(_tableViews[_80],"keyDown:",_7f); +} +}),new objj_method(sel_getUid("columnContentWidthForColumnWidth:"),function(_81,_82,_83){ +with(_81){ +return _83-(_leafWidth+_delegateSupportsImages?_imageWidth:0)-objj_msgSend(CPScroller,"scrollerWidth"); +} +}),new objj_method(sel_getUid("columnWidthForColumnContentWidth:"),function(_84,_85,_86){ +with(_84){ +return _86+(_leafWidth+_delegateSupportsImages?_imageWidth:0)+objj_msgSend(CPScroller,"scrollerWidth"); +} +}),new objj_method(sel_getUid("setImageWidth:"),function(_87,_88,_89){ +with(_87){ +_imageWidth=_89; +objj_msgSend(_87,"tile"); +} +}),new objj_method(sel_getUid("imageWidth"),function(_8a,_8b){ +with(_8a){ +return _imageWidth; +} +}),new objj_method(sel_getUid("setMinColumnWidth:"),function(_8c,_8d,_8e){ +with(_8c){ +_minColumnWidth=_8e; +objj_msgSend(_8c,"tile"); +} +}),new objj_method(sel_getUid("minColumnWidth"),function(_8f,_90){ +with(_8f){ +return _minColumnWidth; +} +}),new objj_method(sel_getUid("setWidth:ofColumn:"),function(_91,_92,_93,_94){ +with(_91){ +_columnWidths[_94]=_93; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:didResizeColumn:"))){ +objj_msgSend(_delegate,"browser:didResizeColumn:",_91,_94); +} +objj_msgSend(_91,"tile"); +} +}),new objj_method(sel_getUid("widthOfColumn:"),function(_95,_96,_97){ +with(_95){ +var _98=_columnWidths[_97]; +if(_98==null){ +_98=_defaultColumnWidth; +} +return MAX(objj_msgSend(CPScroller,"scrollerWidth"),MAX(_minColumnWidth,_98)); +} +}),new objj_method(sel_getUid("setRowHeight:"),function(_99,_9a,_9b){ +with(_99){ +_rowHeight=_9b; +} +}),new objj_method(sel_getUid("rowHeight"),function(_9c,_9d){ +with(_9c){ +return _rowHeight; +} +}),new objj_method(sel_getUid("scrollColumnToVisible:"),function(_9e,_9f,_a0){ +with(_9e){ +objj_msgSend(_contentView,"scrollRectToVisible:",objj_msgSend(objj_msgSend(objj_msgSend(_9e,"tableViewInColumn:",_a0),"enclosingScrollView"),"frame")); +} +}),new objj_method(sel_getUid("autohidesScroller"),function(_a1,_a2){ +with(_a1){ +return objj_msgSend(_horizontalScrollView,"autohidesScrollers"); +} +}),new objj_method(sel_getUid("setAutohidesScroller:"),function(_a3,_a4,_a5){ +with(_a3){ +objj_msgSend(_horizontalScrollView,"setAutohidesScrollers:",_a5); +} +}),new objj_method(sel_getUid("selectedRowInColumn:"),function(_a6,_a7,_a8){ +with(_a6){ +if(_a8>objj_msgSend(_a6,"lastColumn")||_a8<0){ +return -1; +} +return objj_msgSend(_tableViews[_a8],"selectedRow"); +} +}),new objj_method(sel_getUid("selectedColumn"),function(_a9,_aa){ +with(_a9){ +var _ab=objj_msgSend(_a9,"lastColumn"),row=objj_msgSend(_a9,"selectedRowInColumn:",_ab); +if(row>=0){ +return _ab; +}else{ +return _ab-1; +} +} +}),new objj_method(sel_getUid("selectRow:inColumn:"),function(_ac,_ad,row,_ae){ +with(_ac){ +var _af=row===-1?objj_msgSend(CPIndexSet,"indexSet"):objj_msgSend(CPIndexSet,"indexSetWithIndex:",row); +objj_msgSend(_ac,"selectRowIndexes:inColumn:",_af,_ae); +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_b0,_b1){ +with(_b0){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_b2,_b3,_b4){ +with(_b2){ +if(_allowsMultipleSelection===_b4){ +return; +} +_allowsMultipleSelection=_b4; +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setAllowsMultipleSelection:"),_b4); +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_b5,_b6){ +with(_b5){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_b7,_b8,_b9){ +with(_b7){ +if(_allowsEmptySelection===_b9){ +return; +} +_allowsEmptySelection=_b9; +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setAllowsEmptySelection:"),_b9); +} +}),new objj_method(sel_getUid("selectedRowIndexesInColumn:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_bc<0||_bc>objj_msgSend(_ba,"lastColumn")+1){ +return objj_msgSend(CPIndexSet,"indexSet"); +} +return objj_msgSend(objj_msgSend(_ba,"tableViewInColumn:",_bc),"selectedRowIndexes"); +} +}),new objj_method(sel_getUid("selectRowIndexes:inColumn:"),function(_bd,_be,_bf,_c0){ +with(_bd){ +if(_c0<0||_c0>objj_msgSend(_bd,"lastColumn")+1){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:selectionIndexesForProposedSelection:inColumn:"))){ +_bf=objj_msgSend(_delegate,"browser:selectionIndexesForProposedSelection:inColumn:",_bd,_bf,_c0); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:shouldSelectRowIndexes:inColumn:"))&&!objj_msgSend(_delegate,"browser:shouldSelectRowIndexes:inColumn:",_bd,_bf,_c0)){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browserSelectionIsChanging:"))){ +objj_msgSend(_delegate,"browserSelectionIsChanging:",_bd); +} +if(_c0>objj_msgSend(_bd,"lastColumn")){ +objj_msgSend(_bd,"addColumn"); +} +objj_msgSend(_bd,"setLastColumn:",_c0); +objj_msgSend(objj_msgSend(_bd,"tableViewInColumn:",_c0),"selectRowIndexes:byExtendingSelection:",_bf,NO); +objj_msgSend(_bd,"scrollColumnToVisible:",_c0); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browserSelectionDidChange:"))){ +objj_msgSend(_delegate,"browserSelectionDidChange:",_bd); +} +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSendSuper({receiver:_c1,super_class:objj_getClass("CPBrowser").super_class},"setBackgroundColor:",_c3); +objj_msgSend(_contentView,"setBackgroundColor:",_c3); +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_c4,_c5){ +with(_c4){ +return YES; +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(_c6,_c7,_c8){ +with(_c6){ +objj_msgSendSuper({receiver:_c6,super_class:objj_getClass("CPBrowser").super_class},"registerForDraggedTypes:",_c8); +objj_msgSend(_tableViews,"makeObjectsPerformSelector:withObject:",sel_getUid("registerForDraggedTypes:"),_c8); +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:inColumn:withEvent:"),function(_c9,_ca,_cb,_cc,_cd){ +with(_c9){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:canDragRowsWithIndexes:inColumn:withEvent:"))){ +return objj_msgSend(_delegate,"browser:canDragRowsWithIndexes:inColumn:withEvent:",_c9,_cb,_cc,_cd); +} +return YES; +} +}),new objj_method(sel_getUid("draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"),function(_ce,_cf,_d0,_d1,_d2,_d3){ +with(_ce){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"))){ +return objj_msgSend(_delegate,"browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",_ce,_d0,_d1,_d2,_d3); +} +return nil; +} +}),new objj_method(sel_getUid("draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"),function(_d4,_d5,_d6,_d7,_d8,_d9){ +with(_d4){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"))){ +return objj_msgSend(_delegate,"browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:",_d4,_d6,_d7,_d8,_d9); +} +return nil; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("branchImage"),function(_da,_db){ +with(_da){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPBrowser,"class")),"pathForResource:","browser-leaf.png"),CGSizeMake(9,9)); +} +}),new objj_method(sel_getUid("highlightedBranchImage"),function(_dc,_dd){ +with(_dc){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPBrowser,"class")),"pathForResource:","browser-leaf-highlighted.png"),CGSizeMake(9,9)); +} +})]); +var _de=nil; +var _1=objj_allocateClassPair(CPView,"_CPBrowserResizeControl"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_mouseDownX"),new objj_ivar("_browser"),new objj_ivar("_index"),new objj_ivar("_width")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_df,_e0,_e1){ +with(_df){ +if(_df=objj_msgSendSuper({receiver:_df,super_class:objj_getClass("_CPBrowserResizeControl").super_class},"initWithFrame:",_e1)){ +objj_msgSend(_df,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(_df,"class"),"backgroundImage"))); +} +return _df; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_e2,_e3,_e4){ +with(_e2){ +_mouseDownX=objj_msgSend(_e4,"locationInWindow").x; +_browser=objj_msgSend(objj_msgSend(_e2,"superview"),"_browser"); +_index=objj_msgSend(_browser,"columnOfTableView:",objj_msgSend(objj_msgSend(_e2,"superview"),"documentView")); +_width=objj_msgSend(_browser,"widthOfColumn:",_index); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_e5,_e6,_e7){ +with(_e5){ +var _e8=objj_msgSend(_e7,"locationInWindow").x-_mouseDownX; +objj_msgSend(_browser,"setWidth:ofColumn:",_width+_e8,_index); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_e9,_ea,_eb){ +with(_e9){ +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("backgroundImage"),function(_ec,_ed){ +with(_ec){ +if(!_de){ +var _ee=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_ec,"class")),"pathForResource:","browser-resize-control.png"); +_de=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",_ee,CGSizeMake(15,14)); +} +return _de; +} +})]); +var _1=objj_allocateClassPair(CPScrollView,"_CPBrowserScrollView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_resizeControl"),new objj_ivar("_browser")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_browser"),function(_ef,_f0){ +with(_ef){ +return _browser; +} +}),new objj_method(sel_getUid("_setBrowser:"),function(_f1,_f2,_f3){ +with(_f1){ +_browser=_f3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f4,_f5,_f6){ +with(_f4){ +if(_f4=objj_msgSendSuper({receiver:_f4,super_class:objj_getClass("_CPBrowserScrollView").super_class},"initWithFrame:",_f6)){ +_resizeControl=objj_msgSend(objj_msgSend(_CPBrowserResizeControl,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_f4,"addSubview:",_resizeControl); +} +return _f4; +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(_f7,_f8,_f9){ +with(_f7){ +objj_msgSendSuper({receiver:_f7,super_class:objj_getClass("_CPBrowserScrollView").super_class},"reflectScrolledClipView:",_f9); +var _fa=objj_msgSend(_verticalScroller,"frame"); +_fa.size.height=CGRectGetHeight(objj_msgSend(_f7,"bounds"))-14-_fa.origin.y; +objj_msgSend(_verticalScroller,"setFrameSize:",_fa.size); +var _fb=CGRectMake(CGRectGetMinX(_fa),CGRectGetMaxY(_fa),objj_msgSend(CPScroller,"scrollerWidth"),14); +objj_msgSend(_resizeControl,"setFrame:",_fb); +} +})]); +var _1=objj_allocateClassPair(CPTableView,"_CPBrowserTableView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_browser")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:browser:"),function(_fc,_fd,_fe,_ff){ +with(_fc){ +if(_fc=objj_msgSendSuper({receiver:_fc,super_class:objj_getClass("_CPBrowserTableView").super_class},"initWithFrame:",_fe)){ +_browser=_ff; +} +return _fc; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(self,_100){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("mouseDown:"),function(self,_101,_102){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"mouseDown:",_102); +objj_msgSend(objj_msgSend(self,"window"),"makeFirstResponder:",_browser); +} +}),new objj_method(sel_getUid("browserView"),function(self,_103){ +with(self){ +return _browser; +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"),function(self,_104,_105,_106){ +with(self){ +return objj_msgSend(_browser,"canDragRowsWithIndexes:inColumn:withEvent:",_105,objj_msgSend(_browser,"columnOfTableView:",self),objj_msgSend(CPApp,"currentEvent")); +} +}),new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"),function(self,_107,_108,_109,_10a,_10b){ +with(self){ +return objj_msgSend(_browser,"draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",_108,objj_msgSend(_browser,"columnOfTableView:",self),_10a,_10b)||objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"dragImageForRowsWithIndexes:tableColumns:event:offset:",_108,_109,_10a,_10b); +} +}),new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"),function(self,_10c,_10d,_10e,_10f,_110){ +with(self){ +var _111=_10e.length; +while(_111--){ +if(objj_msgSend(_10e[_111],"identifier")==="Leaf"){ +objj_msgSend(_10e,"removeObject:",_10e[_111]); +} +} +return objj_msgSend(_browser,"draggingViewForRowsWithIndexes:inColumn:withEvent:offset:",_10d,objj_msgSend(_browser,"columnOfTableView:",self),_10f,_110)||objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"dragViewForRowsWithIndexes:tableColumns:event:offset:",_10d,_10e,_10f,_110); +} +}),new objj_method(sel_getUid("moveUp:"),function(self,_112,_113){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"moveUp:",_113); +objj_msgSend(_browser,"selectRow:inColumn:",objj_msgSend(self,"selectedRow"),objj_msgSend(_browser,"selectedColumn")); +} +}),new objj_method(sel_getUid("moveDown:"),function(self,_114,_115){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableView").super_class},"moveDown:",_115); +objj_msgSend(_browser,"selectRow:inColumn:",objj_msgSend(self,"selectedRow"),objj_msgSend(_browser,"selectedColumn")); +} +}),new objj_method(sel_getUid("moveLeft:"),function(self,_116,_117){ +with(self){ +var _118=objj_msgSend(_browser,"selectedColumn")-1,_119=objj_msgSend(_browser,"selectedRowInColumn:",_118); +objj_msgSend(_browser,"selectRow:inColumn:",_119,_118); +} +}),new objj_method(sel_getUid("moveRight:"),function(self,_11a,_11b){ +with(self){ +objj_msgSend(_browser,"selectRow:inColumn:",0,objj_msgSend(_browser,"selectedColumn")+1); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPBrowserTableDelegate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_browser"),new objj_ivar("_index"),new objj_ivar("_delegate"),new objj_ivar("_item")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_browser"),function(self,_11c){ +with(self){ +return _browser; +} +}),new objj_method(sel_getUid("_setBrowser:"),function(self,_11d,_11e){ +with(self){ +_browser=_11e; +} +}),new objj_method(sel_getUid("_index"),function(self,_11f){ +with(self){ +return _index; +} +}),new objj_method(sel_getUid("_setIndex:"),function(self,_120,_121){ +with(self){ +_index=_121; +} +}),new objj_method(sel_getUid("_delegate"),function(self,_122){ +with(self){ +return _delegate; +} +}),new objj_method(sel_getUid("_setDelegate:"),function(self,_123,_124){ +with(self){ +_delegate=_124; +} +}),new objj_method(sel_getUid("_item"),function(self,_125){ +with(self){ +return _item; +} +}),new objj_method(sel_getUid("_setItem:"),function(self,_126,_127){ +with(self){ +_item=_127; +} +}),new objj_method(sel_getUid("numberOfRowsInTableView:"),function(self,_128,_129){ +with(self){ +return objj_msgSend(_delegate,"browser:numberOfChildrenOfItem:",_browser,_item); +} +}),new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"),function(self,_12a,_12b,_12c,row){ +with(self){ +if(objj_msgSend(_12c,"identifier")==="Image"){ +return objj_msgSend(_delegate,"browser:imageValueForItem:",_browser,objj_msgSend(self,"childAtIndex:",row)); +}else{ +if(objj_msgSend(_12c,"identifier")==="Leaf"){ +return !objj_msgSend(_browser,"isLeafItem:",objj_msgSend(self,"childAtIndex:",row)); +}else{ +return objj_msgSend(_delegate,"browser:objectValueForItem:",_browser,objj_msgSend(self,"childAtIndex:",row)); +} +} +} +}),new objj_method(sel_getUid("_tableViewDoubleClicked:"),function(self,_12d,_12e){ +with(self){ +objj_msgSend(_browser,"doDoubleClick:",self); +} +}),new objj_method(sel_getUid("_tableViewClicked:"),function(self,_12f,_130){ +with(self){ +var _131=objj_msgSend(_130,"selectedRowIndexes"); +objj_msgSend(_browser,"_column:clickedRow:",_index,objj_msgSend(_131,"count")===1?objj_msgSend(_131,"firstIndex"):-1); +} +}),new objj_method(sel_getUid("childAtIndex:"),function(self,_132,_133){ +with(self){ +return objj_msgSend(_delegate,"browser:child:ofItem:",_browser,_133,_item); +} +}),new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"),function(self,_134,_135,info,row,_136){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:acceptDrop:atRow:column:dropOperation:"))){ +return objj_msgSend(_delegate,"browser:acceptDrop:atRow:column:dropOperation:",_browser,info,row,_index,_136); +}else{ +return NO; +} +} +}),new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"),function(self,_137,_138,info,row,_139){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:validateDrop:proposedRow:column:dropOperation:"))){ +return objj_msgSend(_delegate,"browser:validateDrop:proposedRow:column:dropOperation:",_browser,info,row,_index,_139); +}else{ +return CPDragOperationNone; +} +} +}),new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"),function(self,_13a,_13b,_13c,_13d){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:"))){ +return objj_msgSend(_delegate,"browser:writeRowsWithIndexes:inColumn:toPasteboard:",_browser,_13c,_index,_13d); +}else{ +return NO; +} +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(self,_13e,_13f){ +with(self){ +if(_13f===sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")){ +return objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")); +}else{ +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserTableDelegate").super_class},"respondsToSelector:",_13f); +} +} +})]); +var _1=objj_allocateClassPair(CPView,"_CPBrowserLeafView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isLeaf"),new objj_ivar("_branchImage"),new objj_ivar("_highlightedBranchImage")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isLeaf"),function(self,_140){ +with(self){ +return _isLeaf; +} +}),new objj_method(sel_getUid("branchImage"),function(self,_141){ +with(self){ +return _branchImage; +} +}),new objj_method(sel_getUid("setBranchImage:"),function(self,_142,_143){ +with(self){ +_branchImage=_143; +} +}),new objj_method(sel_getUid("highlightedBranchImage"),function(self,_144){ +with(self){ +return _highlightedBranchImage; +} +}),new objj_method(sel_getUid("setHighlightedBranchImage:"),function(self,_145,_146){ +with(self){ +_highlightedBranchImage=_146; +} +}),new objj_method(sel_getUid("objectValue"),function(self,_147){ +with(self){ +return _isLeaf; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(self,_148,_149){ +with(self){ +_isLeaf=!!_149; +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(self,_14a,_14b){ +with(self){ +if(_14b==="image-view"){ +return CGRectInset(objj_msgSend(self,"bounds"),1,1); +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"rectForEphemeralSubviewNamed:",_14b); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(self,_14c,_14d){ +with(self){ +if(_14d==="image-view"){ +return objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"createEphemeralSubviewNamed:",_14d); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_14e){ +with(self){ +var _14f=objj_msgSend(self,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","image-view",CPWindowAbove,nil); +var _150=objj_msgSend(self,"themeState")&CPThemeStateSelectedDataView; +objj_msgSend(_14f,"setImage:",_isLeaf?(_150?_highlightedBranchImage:_branchImage):nil); +objj_msgSend(_14f,"setImageScaling:",CPScaleNone); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_151,_152){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"encodeWithCoder:",_152); +objj_msgSend(_152,"encodeBool:forKey:",_isLeaf,"_CPBrowserLeafViewIsLeafKey"); +objj_msgSend(_152,"encodeObject:forKey:",_branchImage,"_CPBrowserLeafViewBranchImageKey"); +objj_msgSend(_152,"encodeObject:forKey:",_highlightedBranchImage,"_CPBrowserLeafViewHighlightedBranchImageKey"); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(self,_153,_154){ +with(self){ +if(self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPBrowserLeafView").super_class},"initWithCoder:",_154)){ +_isLeaf=objj_msgSend(_154,"decodeBoolForKey:","_CPBrowserLeafViewIsLeafKey"); +_branchImage=objj_msgSend(_154,"decodeObjectForKey:","_CPBrowserLeafViewBranchImageKey"); +_highlightedBranchImage=objj_msgSend(_154,"decodeObjectForKey:","_CPBrowserLeafViewHighlightedBranchImageKey"); +} +return self; +} +})]); +p;10;CPButton.jt;18863;@STATIC;1.0;i;21;_CPImageAndTextView.ji;12;CGGeometry.ji;11;CPControl.ji;17;CPStringDrawing.ji;12;CPCheckBox.ji;9;CPRadio.jt;18732; +objj_executeFile("_CPImageAndTextView.j",YES); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPStringDrawing.j",YES); +CPRoundedBezelStyle=1; +CPRegularSquareBezelStyle=2; +CPThickSquareBezelStyle=3; +CPThickerSquareBezelStyle=4; +CPDisclosureBezelStyle=5; +CPShadowlessSquareBezelStyle=6; +CPCircularBezelStyle=7; +CPTexturedSquareBezelStyle=8; +CPHelpButtonBezelStyle=9; +CPSmallSquareBezelStyle=10; +CPTexturedRoundedBezelStyle=11; +CPRoundRectBezelStyle=12; +CPRecessedBezelStyle=13; +CPRoundedDisclosureBezelStyle=14; +CPHUDBezelStyle=-1; +CPMomentaryLightButton=0; +CPPushOnPushOffButton=1; +CPToggleButton=2; +CPSwitchButton=3; +CPRadioButton=4; +CPMomentaryChangeButton=5; +CPOnOffButton=6; +CPMomentaryPushInButton=7; +CPMomentaryPushButton=0; +CPMomentaryLight=7; +CPNoButtonMask=0; +CPContentsButtonMask=1; +CPPushInButtonMask=2; +CPGrayButtonMask=4; +CPBackgroundButtonMask=8; +CPNoCellMask=CPNoButtonMask; +CPContentsCellMask=CPContentsButtonMask; +CPPushInCellMask=CPPushInButtonMask; +CPChangeGrayCellMask=CPGrayButtonMask; +CPChangeBackgroundCellMask=CPBackgroundButtonMask; +CPButtonStateMixed=CPThemeState("mixed"); +CPButtonDefaultHeight=24; +CPButtonImageOffset=3; +var _1=objj_allocateClassPair(CPControl,"CPButton"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_allowsMixedState"),new objj_ivar("_title"),new objj_ivar("_alternateTitle"),new objj_ivar("_showsStateBy"),new objj_ivar("_highlightsBy"),new objj_ivar("_imageDimsWhenDisabled"),new objj_ivar("_bezelStyle"),new objj_ivar("_controlSize"),new objj_ivar("_keyEquivalent"),new objj_ivar("_keyEquivalentModifierMask")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPButton").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setValue:forThemeAttribute:",CPCenterTextAlignment,"alignment"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPCenterVerticalTextAlignment,"vertical-alignment"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPImageLeft,"image-position"); +objj_msgSend(_3,"setValue:forThemeAttribute:",CPScaleNone,"image-scaling"); +_controlSize=CPRegularControlSize; +_keyEquivalent=""; +_keyEquivalentModifierMask=0; +objj_msgSend(_3,"setBordered:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("allowsMixedState"),function(_6,_7){ +with(_6){ +return _allowsMixedState; +} +}),new objj_method(sel_getUid("setAllowsMixedState:"),function(_8,_9,_a){ +with(_8){ +_a=!!_a; +if(_allowsMixedState===_a){ +return; +} +_allowsMixedState=_a; +if(!_allowsMixedState&&objj_msgSend(_8,"state")===CPMixedState){ +objj_msgSend(_8,"setState:",CPOnState); +} +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_b,_c,_d){ +with(_b){ +if(!_d||_d===""||(objj_msgSend(_d,"intValue")===0)){ +_d=CPOffState; +}else{ +if(!objj_msgSend(_d,"isKindOfClass:",objj_msgSend(CPNumber,"class"))){ +_d=CPOnState; +}else{ +if(_d>CPOnState){ +_d=CPOnState; +}else{ +if(_d<CPOffState){ +if(objj_msgSend(_b,"allowsMixedState")){ +_d=CPMixedState; +}else{ +_d=CPOnState; +} +} +} +} +} +objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPButton").super_class},"setObjectValue:",_d); +switch(objj_msgSend(_b,"objectValue")){ +case CPMixedState: +objj_msgSend(_b,"unsetThemeState:",CPThemeStateSelected); +objj_msgSend(_b,"setThemeState:",CPButtonStateMixed); +break; +case CPOnState: +objj_msgSend(_b,"unsetThemeState:",CPButtonStateMixed); +objj_msgSend(_b,"setThemeState:",CPThemeStateSelected); +break; +case CPOffState: +objj_msgSend(_b,"unsetThemeState:",CPThemeStateSelected|CPButtonStateMixed); +} +} +}),new objj_method(sel_getUid("nextState"),function(_e,_f){ +with(_e){ +if(objj_msgSend(_e,"allowsMixedState")){ +var _10=objj_msgSend(_e,"state"); +return _10-((_10===-1)?-2:1); +} +return 1-objj_msgSend(_e,"state"); +} +}),new objj_method(sel_getUid("setNextState"),function(_11,_12){ +with(_11){ +objj_msgSend(_11,"setState:",objj_msgSend(_11,"nextState")); +} +}),new objj_method(sel_getUid("setState:"),function(_13,_14,_15){ +with(_13){ +objj_msgSend(_13,"setIntValue:",_15); +} +}),new objj_method(sel_getUid("state"),function(_16,_17){ +with(_16){ +return objj_msgSend(_16,"intValue"); +} +}),new objj_method(sel_getUid("setTitle:"),function(_18,_19,_1a){ +with(_18){ +if(_title===_1a){ +return; +} +_title=_1a; +objj_msgSend(_18,"setNeedsLayout"); +objj_msgSend(_18,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("title"),function(_1b,_1c){ +with(_1b){ +return _title; +} +}),new objj_method(sel_getUid("setAlternateTitle:"),function(_1d,_1e,_1f){ +with(_1d){ +if(_alternateTitle===_1f){ +return; +} +_alternateTitle=_1f; +objj_msgSend(_1d,"setNeedsLayout"); +objj_msgSend(_1d,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("alternateTitle"),function(_20,_21){ +with(_20){ +return _alternateTitle; +} +}),new objj_method(sel_getUid("setImage:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_22,"setValue:forThemeAttribute:",_24,"image"); +} +}),new objj_method(sel_getUid("image"),function(_25,_26){ +with(_25){ +return objj_msgSend(_25,"valueForThemeAttribute:inState:","image",CPThemeStateNormal); +} +}),new objj_method(sel_getUid("setAlternateImage:"),function(_27,_28,_29){ +with(_27){ +objj_msgSend(_27,"setValue:forThemeAttribute:inState:",_29,"image",CPThemeStateHighlighted); +} +}),new objj_method(sel_getUid("alternateImage"),function(_2a,_2b){ +with(_2a){ +return objj_msgSend(_2a,"valueForThemeAttribute:inState:","image",CPThemeStateHighlighted); +} +}),new objj_method(sel_getUid("setImageOffset:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_2c,"setValue:forThemeAttribute:",_2e,"image-offset"); +} +}),new objj_method(sel_getUid("imageOffset"),function(_2f,_30){ +with(_2f){ +return objj_msgSend(_2f,"valueForThemeAttribute:","image-offset"); +} +}),new objj_method(sel_getUid("setShowsStateBy:"),function(_31,_32,_33){ +with(_31){ +if(_showsStateBy===_33){ +return; +} +_showsStateBy=_33; +objj_msgSend(_31,"setNeedsDisplay:",YES); +objj_msgSend(_31,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("showsStateBy"),function(_34,_35){ +with(_34){ +return _showsStateBy; +} +}),new objj_method(sel_getUid("setHighlightsBy:"),function(_36,_37,_38){ +with(_36){ +if(_highlightsBy===_38){ +return; +} +_highlightsBy=_38; +if(objj_msgSend(_36,"hasThemeState:",CPThemeStateHighlighted)){ +objj_msgSend(_36,"setNeedsDisplay:",YES); +objj_msgSend(_36,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("setButtonType:"),function(_39,_3a,_3b){ +with(_39){ +switch(_3b){ +case CPMomentaryLightButton: +objj_msgSend(_39,"setHighlightsBy:",CPChangeBackgroundCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPNoCellMask); +break; +case CPMomentaryPushInButton: +objj_msgSend(_39,"setHighlightsBy:",CPPushInCellMask|CPChangeGrayCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPNoCellMask); +break; +case CPMomentaryChangeButton: +objj_msgSend(_39,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPNoCellMask); +break; +case CPPushOnPushOffButton: +objj_msgSend(_39,"setHighlightsBy:",CPPushInCellMask|CPChangeGrayCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPChangeBackgroundCellMask); +break; +case CPOnOffButton: +objj_msgSend(_39,"setHighlightsBy:",CPChangeBackgroundCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPChangeBackgroundCellMask); +break; +case CPToggleButton: +objj_msgSend(_39,"setHighlightsBy:",CPPushInCellMask|CPContentsCellMask); +objj_msgSend(_39,"setShowsStateBy:",CPContentsCellMask); +break; +case CPSwitchButton: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The CPSwitchButton type is not supported in Cappuccino, use the CPCheckBox class instead."); +case CPRadioButton: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The CPRadioButton type is not supported in Cappuccino, use the CPRadio class instead."); +default: +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unknown button type."); +} +objj_msgSend(_39,"setImageDimsWhenDisabled:",YES); +} +}),new objj_method(sel_getUid("setImageDimsWhenDisabled:"),function(_3c,_3d,_3e){ +with(_3c){ +_3e=!!_3e; +if(_imageDimsWhenDisabled===_3e){ +return; +} +_imageDimsWhenDisabled=_3e; +if(objj_msgSend(_3c,"hasThemeState:",CPThemeStateDisabled)){ +objj_msgSend(_3c,"setNeedsDisplay:",YES); +objj_msgSend(_3c,"setNeedsLayout"); +} +} +}),new objj_method(sel_getUid("imageDimsWhenDisabled"),function(_3f,_40){ +with(_3f){ +return _imageDimsWhenDisabled; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_41,_42,_43){ +with(_41){ +objj_msgSend(_41,"highlight:",YES); +return objj_msgSendSuper({receiver:_41,super_class:objj_getClass("CPButton").super_class},"startTrackingAt:",_43); +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_44,_45,_46,_47,_48){ +with(_44){ +objj_msgSend(_44,"highlight:",NO); +objj_msgSendSuper({receiver:_44,super_class:objj_getClass("CPButton").super_class},"stopTracking:at:mouseIsUp:",_46,_47,_48); +if(_48&&CGRectContainsPoint(objj_msgSend(_44,"bounds"),_47)){ +objj_msgSend(_44,"setNextState"); +} +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_49,_4a,_4b){ +with(_49){ +var _4c=objj_msgSend(_49,"currentValueForThemeAttribute:","content-inset"); +if(((_4c).top===0&&(_4c).right===0&&(_4c).bottom===0&&(_4c).left===0)){ +return _4b; +} +_4b.origin.x+=_4c.left; +_4b.origin.y+=_4c.top; +_4b.size.width-=_4c.left+_4c.right; +_4b.size.height-=_4c.top+_4c.bottom; +return _4b; +} +}),new objj_method(sel_getUid("bezelRectForBounds:"),function(_4d,_4e,_4f){ +with(_4d){ +if(!objj_msgSend(_4d,"isBordered")){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _50=objj_msgSend(_4d,"currentValueForThemeAttribute:","bezel-inset"); +if(((_50).top===0&&(_50).right===0&&(_50).bottom===0&&(_50).left===0)){ +return _4f; +} +_4f.origin.x+=_50.left; +_4f.origin.y+=_50.top; +_4f.size.width-=_50.left+_50.right; +_4f.size.height-=_50.top+_50.bottom; +return _4f; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_51,_52){ +with(_51){ +objj_msgSend(_51,"layoutSubviews"); +var _53,_54=objj_msgSend(_51,"ephemeralSubviewNamed:","content-view"); +if(_54){ +objj_msgSend(_54,"sizeToFit"); +_53=objj_msgSend(_54,"frameSize"); +}else{ +_53=objj_msgSend((objj_msgSend(_51,"title")||" "),"sizeWithFont:",objj_msgSend(_51,"currentValueForThemeAttribute:","font")); +} +var _55=objj_msgSend(_51,"currentValueForThemeAttribute:","content-inset"),_56=objj_msgSend(_51,"currentValueForThemeAttribute:","min-size"),_57=objj_msgSend(_51,"currentValueForThemeAttribute:","max-size"); +_53.width=MAX(_53.width+_55.left+_55.right,_56.width); +_53.height=MAX(_53.height+_55.top+_55.bottom,_56.height); +if(_57.width>=0){ +_53.width=MIN(_53.width,_57.width); +} +if(_57.height>=0){ +_53.height=MIN(_53.height,_57.height); +} +objj_msgSend(_51,"setFrameSize:",_53); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_58,_59,_5a){ +with(_58){ +if(_5a==="bezel-view"){ +return objj_msgSend(_58,"bezelRectForBounds:",objj_msgSend(_58,"bounds")); +}else{ +if(_5a==="content-view"){ +return objj_msgSend(_58,"contentRectForBounds:",objj_msgSend(_58,"bounds")); +} +} +return objj_msgSendSuper({receiver:_58,super_class:objj_getClass("CPButton").super_class},"rectForEphemeralSubviewNamed:",_5a); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d==="bezel-view"){ +var _5e=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_5e,"setHitTests:",NO); +return _5e; +}else{ +return objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_5f,_60){ +with(_5f){ +var _61=objj_msgSend(_5f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","bezel-view",CPWindowBelow,"content-view"); +objj_msgSend(_61,"setBackgroundColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","bezel-color")); +var _62=objj_msgSend(_5f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","content-view",CPWindowAbove,"bezel-view"); +if(_62){ +objj_msgSend(_62,"setText:",(objj_msgSend(_5f,"hasThemeState:",CPThemeStateHighlighted)&&_alternateTitle)?_alternateTitle:_title); +objj_msgSend(_62,"setImage:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image")); +objj_msgSend(_62,"setImageOffset:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-offset")); +objj_msgSend(_62,"setFont:",objj_msgSend(_5f,"currentValueForThemeAttribute:","font")); +objj_msgSend(_62,"setTextColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_62,"setAlignment:",objj_msgSend(_5f,"currentValueForThemeAttribute:","alignment")); +objj_msgSend(_62,"setVerticalAlignment:",objj_msgSend(_5f,"currentValueForThemeAttribute:","vertical-alignment")); +objj_msgSend(_62,"setLineBreakMode:",objj_msgSend(_5f,"currentValueForThemeAttribute:","line-break-mode")); +objj_msgSend(_62,"setTextShadowColor:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_62,"setTextShadowOffset:",objj_msgSend(_5f,"currentValueForThemeAttribute:","text-shadow-offset")); +objj_msgSend(_62,"setImagePosition:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-position")); +objj_msgSend(_62,"setImageScaling:",objj_msgSend(_5f,"currentValueForThemeAttribute:","image-scaling")); +objj_msgSend(_62,"setDimsImage:",objj_msgSend(_5f,"hasThemeState:",CPThemeStateDisabled)&&_imageDimsWhenDisabled); +} +} +}),new objj_method(sel_getUid("setBordered:"),function(_63,_64,_65){ +with(_63){ +if(_65){ +objj_msgSend(_63,"setThemeState:",CPThemeStateBordered); +}else{ +objj_msgSend(_63,"unsetThemeState:",CPThemeStateBordered); +} +} +}),new objj_method(sel_getUid("isBordered"),function(_66,_67){ +with(_66){ +return objj_msgSend(_66,"hasThemeState:",CPThemeStateBordered); +} +}),new objj_method(sel_getUid("setKeyEquivalent:"),function(_68,_69,_6a){ +with(_68){ +_keyEquivalent=_6a||""; +if(_6a===CPNewlineCharacter||_6a===CPCarriageReturnCharacter){ +objj_msgSend(_68,"setThemeState:",CPThemeStateDefault); +}else{ +objj_msgSend(_68,"unsetThemeState:",CPThemeStateDefault); +} +} +}),new objj_method(sel_getUid("viewWillMoveToWindow:"),function(_6b,_6c,_6d){ +with(_6b){ +var _6e=objj_msgSend(_6b,"window"); +if(_6e===_6d||_6d===nil){ +return; +} +if(objj_msgSend(_6e,"defaultButton")===_6b){ +objj_msgSend(_6e,"setDefaultButton:",nil); +} +if(objj_msgSend(_6b,"keyEquivalent")===CPNewlineCharacter||objj_msgSend(_6b,"keyEquivalent")===CPCarriageReturnCharacter){ +objj_msgSend(_6d,"setDefaultButton:",_6b); +} +} +}),new objj_method(sel_getUid("keyEquivalent"),function(_6f,_70){ +with(_6f){ +return _keyEquivalent; +} +}),new objj_method(sel_getUid("setKeyEquivalentModifierMask:"),function(_71,_72,_73){ +with(_71){ +_keyEquivalentModifierMask=_73; +} +}),new objj_method(sel_getUid("keyEquivalentModifierMask"),function(_74,_75){ +with(_74){ +return _keyEquivalentModifierMask; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_76,_77,_78){ +with(_76){ +if(objj_msgSend(objj_msgSend(_76,"window"),"defaultButton")===_76){ +return NO; +} +if(!objj_msgSend(_78,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(_76,"keyEquivalent"),objj_msgSend(_76,"keyEquivalentModifierMask"))){ +return NO; +} +objj_msgSend(_76,"performClick:",nil); +return YES; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("buttonWithTitle:"),function(_79,_7a,_7b){ +with(_79){ +return objj_msgSend(_79,"buttonWithTitle:theme:",_7b,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("buttonWithTitle:theme:"),function(_7c,_7d,_7e,_7f){ +with(_7c){ +var _80=objj_msgSend(objj_msgSend(_7c,"alloc"),"init"); +objj_msgSend(_80,"setTheme:",_7f); +objj_msgSend(_80,"setTitle:",_7e); +objj_msgSend(_80,"sizeToFit"); +return _80; +} +}),new objj_method(sel_getUid("themeClass"),function(_81,_82){ +with(_81){ +return "button"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_83,_84){ +with(_83){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),0,{top:(0),right:(0),bottom:(0),left:(0)},{top:(0),right:(0),bottom:(0),left:(0)},objj_msgSend(CPNull,"null")],["image","image-offset","bezel-inset","content-inset","bezel-color"]); +} +})]); +var _1=objj_getClass("CPButton"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setBezelStyle:"),function(_85,_86,_87){ +with(_85){ +} +}),new objj_method(sel_getUid("bezelStyle"),function(_88,_89){ +with(_88){ +} +})]); +var _8a="CPButtonImageKey",_8b="CPButtonAlternateImageKey",_8c="CPButtonTitleKey",_8d="CPButtonAlternateTitleKey",_8e="CPButtonIsBorderedKey",_8f="CPButtonAllowsMixedStateKey",_90="CPButtonImageDimsWhenDisabledKey",_91="CPButtonImagePositionKey",_92="CPButtonKeyEquivalentKey",_93="CPButtonKeyEquivalentMaskKey"; +var _1=objj_getClass("CPButton"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_94,_95,_96){ +with(_94){ +_94=objj_msgSendSuper({receiver:_94,super_class:objj_getClass("CPButton").super_class},"initWithCoder:",_96); +if(_94){ +_controlSize=CPRegularControlSize; +_title=objj_msgSend(_96,"decodeObjectForKey:",_8c); +_alternateTitle=objj_msgSend(_96,"decodeObjectForKey:",_8d); +if(objj_msgSend(_96,"containsValueForKey:",_8f)){ +_allowsMixedState=objj_msgSend(_96,"decodeBoolForKey:",_8f); +} +objj_msgSend(_94,"setImageDimsWhenDisabled:",objj_msgSend(_96,"decodeObjectForKey:",_90)); +if(objj_msgSend(_96,"containsValueForKey:",_91)){ +objj_msgSend(_94,"setImagePosition:",objj_msgSend(_96,"decodeIntForKey:",_91)); +} +if(objj_msgSend(_96,"containsValueForKey:",_92)){ +objj_msgSend(_94,"setKeyEquivalent:",CFData.decodeBase64ToUtf16String(objj_msgSend(_96,"decodeObjectForKey:",_92))); +} +_keyEquivalentModifierMask=objj_msgSend(_96,"decodeIntForKey:",_93); +objj_msgSend(_94,"setNeedsLayout"); +objj_msgSend(_94,"setNeedsDisplay:",YES); +} +return _94; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_97,_98,_99){ +with(_97){ +objj_msgSendSuper({receiver:_97,super_class:objj_getClass("CPButton").super_class},"encodeWithCoder:",_99); +objj_msgSend(_99,"encodeObject:forKey:",_title,_8c); +objj_msgSend(_99,"encodeObject:forKey:",_alternateTitle,_8d); +objj_msgSend(_99,"encodeBool:forKey:",_allowsMixedState,_8f); +objj_msgSend(_99,"encodeBool:forKey:",objj_msgSend(_97,"imageDimsWhenDisabled"),_90); +objj_msgSend(_99,"encodeInt:forKey:",objj_msgSend(_97,"imagePosition"),_91); +if(_keyEquivalent){ +objj_msgSend(_99,"encodeObject:forKey:",CFData.encodeBase64Utf16String(_keyEquivalent),_92); +} +objj_msgSend(_99,"encodeInt:forKey:",_keyEquivalentModifierMask,_93); +} +})]); +objj_executeFile("CPCheckBox.j",YES); +objj_executeFile("CPRadio.j",YES); +p;13;CPButtonBar.jt;9767;@STATIC;1.0;I;15;AppKit/CPView.jt;9728; +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPView,"CPButtonBar"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_hasResizeControl"),new objj_ivar("_resizeControlIsLeftAligned"),new objj_ivar("_buttons")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPButtonBar").super_class},"initWithFrame:",_5); +if(_3){ +_buttons=[]; +objj_msgSend(_3,"setNeedsLayout"); +} +return _3; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_6,"superview"),_9=_6; +while(_8){ +if(objj_msgSend(_8,"isKindOfClass:",objj_msgSend(CPSplitView,"class"))){ +var _a=objj_msgSend(objj_msgSend(_8,"subviews"),"indexOfObject:",_9); +objj_msgSend(_8,"setButtonBar:forDividerAtIndex:",_6,_a); +break; +} +_9=_8; +_8=objj_msgSend(_8,"superview"); +} +} +}),new objj_method(sel_getUid("setButtons:"),function(_b,_c,_d){ +with(_b){ +_buttons=objj_msgSend(CPArray,"arrayWithArray:",_d); +for(var i=0,_e=objj_msgSend(_buttons,"count");i<_e;i++){ +objj_msgSend(_buttons[i],"setBordered:",YES); +} +objj_msgSend(_b,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("buttons"),function(_f,_10){ +with(_f){ +return objj_msgSend(CPArray,"arrayWithArray:",_buttons); +} +}),new objj_method(sel_getUid("setHasResizeControl:"),function(_11,_12,_13){ +with(_11){ +if(_hasResizeControl===_13){ +return; +} +_hasResizeControl=!!_13; +objj_msgSend(_11,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("hasResizeControl"),function(_14,_15){ +with(_14){ +return _hasResizeControl; +} +}),new objj_method(sel_getUid("setResizeControlIsLeftAligned:"),function(_16,_17,_18){ +with(_16){ +if(_resizeControlIsLeftAligned===_18){ +return; +} +_resizeControlIsLeftAligned=!!_18; +objj_msgSend(_16,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("resizeControlIsLeftAligned"),function(_19,_1a){ +with(_19){ +return _resizeControlIsLeftAligned; +} +}),new objj_method(sel_getUid("resizeControlFrame"),function(_1b,_1c){ +with(_1b){ +var _1d=objj_msgSend(_1b,"currentValueForThemeAttribute:","resize-control-inset"),_1e=objj_msgSend(_1b,"currentValueForThemeAttribute:","resize-control-size"),_1f=objj_msgSend(_1b,"bounds"),_20=_resizeControlIsLeftAligned?0:_1f.size.width-_1e.width-_1d.right-_1d.left; +return CGRectMake(_20,0,_1e.width+_1d.left+_1d.right,_1e.height+_1d.top+_1d.bottom); +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_21,_22,_23){ +with(_21){ +if(_23==="resize-control-view"){ +var _24=objj_msgSend(_21,"currentValueForThemeAttribute:","resize-control-inset"),_25=objj_msgSend(_21,"currentValueForThemeAttribute:","resize-control-size"),_26=objj_msgSend(_21,"bounds"); +if(_resizeControlIsLeftAligned){ +return CGRectMake(_24.left,_24.top,_25.width,_25.height); +}else{ +return CGRectMake(_26.size.width-_25.width-_24.right,_24.top,_25.width,_25.height); +} +} +return objj_msgSendSuper({receiver:_21,super_class:objj_getClass("CPButtonBar").super_class},"rectForEphemeralSubviewNamed:",_23); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_27,_28,_29){ +with(_27){ +if(_29==="resize-control-view"){ +return objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +} +return objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPButtonBar").super_class},"createEphemeralSubviewNamed:",_29); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_2a,_2b){ +with(_2a){ +objj_msgSend(_2a,"setBackgroundColor:",objj_msgSend(_2a,"currentValueForThemeAttribute:","bezel-color")); +var _2c=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateNormal),_2d=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateHighlighted),_2e=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-bezel-color",CPThemeStateDisabled),_2f=objj_msgSend(_2a,"valueForThemeAttribute:inState:","button-text-color",CPThemeStateNormal); +var _30=objj_msgSend(CPArray,"arrayWithArray:",_buttons),_31=objj_msgSend(_30,"count"); +while(_31--){ +if(objj_msgSend(_30[_31],"isHidden")){ +objj_msgSend(_30,"removeObject:",_30[_31]); +} +} +var _32=_resizeControlIsLeftAligned?CGRectGetMaxX(objj_msgSend(_2a,"bounds"))+1:-1,_33=objj_msgSend(_2a,"bounds"),_34=CGRectGetHeight(_33)-1,_35=CGRectGetWidth(_33),_36=_hasResizeControl?objj_msgSend(_2a,"rectForEphemeralSubviewNamed:","resize-control-view"):CGRectMakeZero(),_37=CGRectGetWidth(_36),_38=_35-_37-1; +for(var i=0,_31=objj_msgSend(_30,"count");i<_31;i++){ +var _39=_30[i],_3a=CGRectGetWidth(objj_msgSend(_39,"frame")); +if(_38>_3a){ +_38-=_3a; +}else{ +break; +} +if(_resizeControlIsLeftAligned){ +objj_msgSend(_39,"setFrame:",CGRectMake(_32-_3a,1,_3a,_34)); +_32-=_3a-1; +}else{ +objj_msgSend(_39,"setFrame:",CGRectMake(_32,1,_3a,_34)); +_32+=_3a-1; +} +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2c,"bezel-color",CPThemeStateNormal|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2d,"bezel-color",CPThemeStateHighlighted|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2e,"bezel-color",CPThemeStateDisabled|CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2f,"text-color",CPThemeStateBordered); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2c,"bezel-color",CPThemeStateNormal|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2d,"bezel-color",CPThemeStateHighlighted|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_39,"setValue:forThemeAttribute:inState:",_2e,"bezel-color",CPThemeStateDisabled|CPThemeStateBordered|CPPopUpButtonStatePullsDown); +objj_msgSend(_2a,"addSubview:",_39); +} +if(_hasResizeControl){ +var _3b=objj_msgSend(_2a,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","resize-control-view",CPWindowAbove,nil); +objj_msgSend(_3b,"setAutoresizingMask:",_resizeControlIsLeftAligned?CPViewMaxXMargin:CPViewMinXMargin); +objj_msgSend(_3b,"setBackgroundColor:",objj_msgSend(_2a,"currentValueForThemeAttribute:","resize-control-color")); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_3c,_3d,_3e){ +with(_3c){ +objj_msgSendSuper({receiver:_3c,super_class:objj_getClass("CPButtonBar").super_class},"setFrameSize:",_3e); +objj_msgSend(_3c,"setNeedsLayout"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("plusButton"),function(_3f,_40){ +with(_3f){ +var _41=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_42=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","plus_button.png"),CGSizeMake(11,12)); +objj_msgSend(_41,"setBordered:",NO); +objj_msgSend(_41,"setImage:",_42); +objj_msgSend(_41,"setImagePosition:",CPImageOnly); +return _41; +} +}),new objj_method(sel_getUid("minusButton"),function(_43,_44){ +with(_43){ +var _45=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_46=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","minus_button.png"),CGSizeMake(11,4)); +objj_msgSend(_45,"setBordered:",NO); +objj_msgSend(_45,"setImage:",_46); +objj_msgSend(_45,"setImagePosition:",CPImageOnly); +return _45; +} +}),new objj_method(sel_getUid("actionPopupButton"),function(_47,_48){ +with(_47){ +var _49=objj_msgSend(objj_msgSend(CPPopUpButton,"alloc"),"initWithFrame:",CGRectMake(0,0,35,25)),_4a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPButtonBar,"class")),"pathForResource:","action_button.png"),CGSizeMake(22,14)); +objj_msgSend(_49,"addItemWithTitle:",nil); +objj_msgSend(objj_msgSend(_49,"lastItem"),"setImage:",_4a); +objj_msgSend(_49,"setImagePosition:",CPImageOnly); +objj_msgSend(_49,"setValue:forThemeAttribute:",CGInsetMake(0,0,0,0),"content-inset"); +objj_msgSend(_49,"setPullsDown:",YES); +return _49; +} +}),new objj_method(sel_getUid("themeClass"),function(_4b,_4c){ +with(_4b){ +return "button-bar"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_4d,_4e){ +with(_4d){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CGInsetMake(0,0,0,0),CGSizeMakeZero(),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["resize-control-inset","resize-control-size","resize-control-color","bezel-color","button-bezel-color","button-text-color"]); +} +})]); +var _4f="CPButtonBarHasResizeControlKey",_50="CPButtonBarResizeControlIsLeftAlignedKey",_51="CPButtonBarButtonsKey"; +var _1=objj_getClass("CPButtonBar"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPButtonBar\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("encodeWithCoder:"),function(_52,_53,_54){ +with(_52){ +objj_msgSendSuper({receiver:_52,super_class:objj_getClass("CPButtonBar").super_class},"encodeWithCoder:",_54); +objj_msgSend(_54,"encodeBool:forKey:",_hasResizeControl,_4f); +objj_msgSend(_54,"encodeBool:forKey:",_resizeControlIsLeftAligned,_50); +objj_msgSend(_54,"encodeObject:forKey:",_buttons,_51); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_55,_56,_57){ +with(_55){ +if(_55=objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPButtonBar").super_class},"initWithCoder:",_57)){ +_buttons=objj_msgSend(_57,"decodeObjectForKey:",_51)||[]; +_hasResizeControl=objj_msgSend(_57,"decodeBoolForKey:",_4f); +_resizeControlIsLeftAligned=objj_msgSend(_57,"decodeBoolForKey:",_50); +} +return _55; +} +})]); +p;12;CPCheckBox.jt;1690;@STATIC;1.0;i;10;CPButton.jt;1656; +objj_executeFile("CPButton.j",YES); +CPCheckBoxImageOffset=4; +var _1=objj_allocateClassPair(CPButton,"CPCheckBox"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCheckBox").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_3,"setShowsStateBy:",CPContentsCellMask); +objj_msgSend(_3,"setImagePosition:",CPImageLeft); +objj_msgSend(_3,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_3,"setBordered:",NO); +} +return _3; +} +}),new objj_method(sel_getUid("takeStateFromKeyPath:ofObjects:"),function(_6,_7,_8,_9){ +with(_6){ +var _a=_9.length,_b=objj_msgSend(_9[0],"valueForKeyPath:",_8)?CPOnState:CPOffState; +objj_msgSend(_6,"setAllowsMixedState:",NO); +objj_msgSend(_6,"setState:",_b); +while(_a-->1){ +if(_b!==(objj_msgSend(_9[_a],"valueForKeyPath:",_8)?CPOnState:CPOffState)){ +objj_msgSend(_6,"setAllowsMixedState:",YES); +objj_msgSend(_6,"setState:",CPMixedState); +} +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_c,_d,_e,_f){ +with(_c){ +objj_msgSend(_c,"takeStateFromKeyPath:ofObjects:",_e,_f); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("checkBoxWithTitle:theme:"),function(_10,_11,_12,_13){ +with(_10){ +return objj_msgSend(_10,"buttonWithTitle:theme:",_12,_13); +} +}),new objj_method(sel_getUid("checkBoxWithTitle:"),function(_14,_15,_16){ +with(_14){ +return objj_msgSend(_14,"buttonWithTitle:",_16); +} +}),new objj_method(sel_getUid("themeClass"),function(_17,_18){ +with(_17){ +return "check-box"; +} +})]); +p;12;CPClipView.jt;4951;@STATIC;1.0;i;8;CPView.jt;4920; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"CPClipView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_documentView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setDocumentView:"),function(_3,_4,_5){ +with(_3){ +if(_documentView==_5){ +return; +} +var _6=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_documentView){ +objj_msgSend(_6,"removeObserver:name:object:",_3,CPViewFrameDidChangeNotification,_documentView); +objj_msgSend(_6,"removeObserver:name:object:",_3,CPViewBoundsDidChangeNotification,_documentView); +objj_msgSend(_documentView,"removeFromSuperview"); +} +_documentView=_5; +if(_documentView){ +objj_msgSend(_3,"addSubview:",_documentView); +objj_msgSend(_documentView,"setPostsFrameChangedNotifications:",YES); +objj_msgSend(_documentView,"setPostsBoundsChangedNotifications:",YES); +objj_msgSend(_6,"addObserver:selector:name:object:",_3,sel_getUid("viewFrameChanged:"),CPViewFrameDidChangeNotification,_documentView); +objj_msgSend(_6,"addObserver:selector:name:object:",_3,sel_getUid("viewBoundsChanged:"),CPViewBoundsDidChangeNotification,_documentView); +} +} +}),new objj_method(sel_getUid("documentView"),function(_7,_8){ +with(_7){ +return _documentView; +} +}),new objj_method(sel_getUid("constrainScrollPoint:"),function(_9,_a,_b){ +with(_9){ +if(!_documentView){ +return {x:0,y:0}; +} +var _c=objj_msgSend(_documentView,"frame"); +_b.x=MAX(0,MIN(_b.x,MAX((_c.size.width)-(_bounds.size.width),0))); +_b.y=MAX(0,MIN(_b.y,MAX((_c.size.height)-(_bounds.size.height),0))); +return _b; +} +}),new objj_method(sel_getUid("setBoundsOrigin:"),function(_d,_e,_f){ +with(_d){ +if((_bounds.origin.x==_f.x&&_bounds.origin.y==_f.y)){ +return; +} +objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPClipView").super_class},"setBoundsOrigin:",_f); +var _10=objj_msgSend(_d,"superview"),_11=objj_getClass("CPScrollView"); +if(objj_msgSend(_10,"isKindOfClass:",_11)){ +objj_msgSend(_10,"reflectScrolledClipView:",_d); +} +} +}),new objj_method(sel_getUid("scrollToPoint:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_12,"setBoundsOrigin:",objj_msgSend(_12,"constrainScrollPoint:",_14)); +} +}),new objj_method(sel_getUid("viewBoundsChanged:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("viewFrameChanged:"),function(_18,_19,_1a){ +with(_18){ +objj_msgSend(_18,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSendSuper({receiver:_1b,super_class:objj_getClass("CPClipView").super_class},"resizeSubviewsWithOldSize:",_1d); +objj_msgSend(_1b,"_constrainScrollPoint"); +} +}),new objj_method(sel_getUid("_constrainScrollPoint"),function(_1e,_1f){ +with(_1e){ +var _20=objj_msgSend(_1e,"bounds").origin; +objj_msgSend(_1e,"scrollToPoint:",_20); +if(!CGPointEqualToPoint(_20,objj_msgSend(_1e,"bounds").origin)){ +return; +} +var _21=objj_msgSend(_1e,"superview"),_22=objj_getClass("CPScrollView"); +if(objj_msgSend(_21,"isKindOfClass:",_22)){ +objj_msgSend(_21,"reflectScrolledClipView:",_1e); +} +} +}),new objj_method(sel_getUid("autoscroll:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_23,"bounds"),_27=objj_msgSend(_23,"convertPoint:fromView:",objj_msgSend(_25,"locationInWindow"),nil),_28=objj_msgSend(_23,"superview"),_29=0,_2a=0; +if(CGRectContainsPoint(_26,_27)){ +return NO; +} +if(!objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))||objj_msgSend(_28,"hasVerticalScroller")){ +if(_27.y<CGRectGetMinY(_26)){ +_2a=CGRectGetMinY(_26)-_27.y; +}else{ +if(_27.y>CGRectGetMaxY(_26)){ +_2a=CGRectGetMaxY(_26)-_27.y; +} +} +if(_2a<-_26.size.height){ +_2a=-_26.size.height; +} +if(_2a>_26.size.height){ +_2a=_26.size.height; +} +} +if(!objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))||objj_msgSend(_28,"hasHorizontalScroller")){ +if(_27.x<CGRectGetMinX(_26)){ +_29=CGRectGetMinX(_26)-_27.x; +}else{ +if(_27.x>CGRectGetMaxX(_26)){ +_29=CGRectGetMaxX(_26)-_27.x; +} +} +if(_29<-_26.size.width){ +_29=-_26.size.width; +} +if(_29>_26.size.width){ +_29=_26.size.width; +} +} +return objj_msgSend(_23,"scrollToPoint:",CGPointMake(_26.origin.x-_29,_26.origin.y-_2a)); +} +})]); +var _2b="CPScrollViewDocumentView"; +var _1=objj_getClass("CPClipView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPClipView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_2c,_2d,_2e){ +with(_2c){ +if(_2c=objj_msgSendSuper({receiver:_2c,super_class:objj_getClass("CPClipView").super_class},"initWithCoder:",_2e)){ +objj_msgSend(_2c,"setDocumentView:",objj_msgSend(_2e,"decodeObjectForKey:",_2b)); +} +return _2c; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2f,_30,_31){ +with(_2f){ +objj_msgSendSuper({receiver:_2f,super_class:objj_getClass("CPClipView").super_class},"encodeWithCoder:",_31); +objj_msgSend(_31,"encodeObject:forKey:",_documentView,_2b); +} +})]); +p;18;CPCollectionView.jt;20492;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;Foundation/CPData.jI;23;Foundation/CPIndexSet.jI;28;Foundation/CPKeyedArchiver.jI;30;Foundation/CPKeyedUnarchiver.ji;8;CPView.ji;22;CPCollectionViewItem.jt;20288; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPData.j",NO); +objj_executeFile("Foundation/CPIndexSet.j",NO); +objj_executeFile("Foundation/CPKeyedArchiver.j",NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPCollectionViewItem.j",YES); +var _1=objj_allocateClassPair(CPView,"CPCollectionView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_content"),new objj_ivar("_items"),new objj_ivar("_itemData"),new objj_ivar("_itemPrototype"),new objj_ivar("_itemForDragging"),new objj_ivar("_cachedItems"),new objj_ivar("_maxNumberOfRows"),new objj_ivar("_maxNumberOfColumns"),new objj_ivar("_minItemSize"),new objj_ivar("_maxItemSize"),new objj_ivar("_backgroundColors"),new objj_ivar("_tileWidth"),new objj_ivar("_isSelectable"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_selectionIndexes"),new objj_ivar("_itemSize"),new objj_ivar("_horizontalMargin"),new objj_ivar("_verticalMargin"),new objj_ivar("_numberOfRows"),new objj_ivar("_numberOfColumns"),new objj_ivar("_delegate"),new objj_ivar("_mouseDownEvent")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCollectionView").super_class},"initWithFrame:",_5); +if(_3){ +_items=[]; +_content=[]; +_cachedItems=[]; +_itemSize=CGSizeMakeZero(); +_minItemSize=CGSizeMakeZero(); +_maxItemSize=CGSizeMakeZero(); +objj_msgSend(_3,"setBackgroundColors:",nil); +_verticalMargin=5; +_tileWidth=-1; +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_allowsEmptySelection=YES; +_isSelectable=YES; +} +return _3; +} +}),new objj_method(sel_getUid("setItemPrototype:"),function(_6,_7,_8){ +with(_6){ +_cachedItems=[]; +_itemData=nil; +_itemForDragging=nil; +_itemPrototype=_8; +objj_msgSend(_6,"reloadContent"); +} +}),new objj_method(sel_getUid("itemPrototype"),function(_9,_a){ +with(_9){ +return _itemPrototype; +} +}),new objj_method(sel_getUid("newItemForRepresentedObject:"),function(_b,_c,_d){ +with(_b){ +var _e=nil; +if(_cachedItems.length){ +_e=_cachedItems.pop(); +}else{ +if(!_itemData){ +if(_itemPrototype){ +_itemData=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_itemPrototype); +} +} +_e=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_itemData); +} +objj_msgSend(_e,"setRepresentedObject:",_d); +objj_msgSend(objj_msgSend(_e,"view"),"setFrameSize:",_itemSize); +return _e; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_f,_10){ +with(_f){ +return YES; +} +}),new objj_method(sel_getUid("isFirstResponder"),function(_11,_12){ +with(_11){ +return objj_msgSend(objj_msgSend(_11,"window"),"firstResponder")===_11; +} +}),new objj_method(sel_getUid("setContent:"),function(_13,_14,_15){ +with(_13){ +if(_content==_15){ +return; +} +_content=_15; +objj_msgSend(_13,"reloadContent"); +} +}),new objj_method(sel_getUid("content"),function(_16,_17){ +with(_16){ +return _content; +} +}),new objj_method(sel_getUid("items"),function(_18,_19){ +with(_18){ +return _items; +} +}),new objj_method(sel_getUid("setSelectable:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_isSelectable==_1c){ +return; +} +_isSelectable=_1c; +if(!_isSelectable){ +var _1d=CPNotFound; +while((_1d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_1d))!=CPNotFound){ +objj_msgSend(_items[_1d],"setSelected:",NO); +} +} +} +}),new objj_method(sel_getUid("isSelectable"),function(_1e,_1f){ +with(_1e){ +return _isSelectable; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_20,_21,_22){ +with(_20){ +_allowsEmptySelection=_22; +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_23,_24){ +with(_23){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_25,_26,_27){ +with(_25){ +_allowsMultipleSelection=_27; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_28,_29){ +with(_28){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setSelectionIndexes:"),function(_2a,_2b,_2c){ +with(_2a){ +if(objj_msgSend(_selectionIndexes,"isEqual:",_2c)||!_isSelectable){ +return; +} +var _2d=CPNotFound; +while((_2d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_2d))!=CPNotFound){ +objj_msgSend(_items[_2d],"setSelected:",NO); +} +_selectionIndexes=_2c; +var _2d=CPNotFound; +while((_2d=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_2d))!=CPNotFound){ +objj_msgSend(_items[_2d],"setSelected:",YES); +} +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_2a),"reverseSetValueFor:","selectionIndexes"); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionViewDidChangeSelection:"))){ +objj_msgSend(_delegate,"collectionViewDidChangeSelection:",_2a); +} +} +}),new objj_method(sel_getUid("selectionIndexes"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_selectionIndexes,"copy"); +} +}),new objj_method(sel_getUid("reloadContent"),function(_30,_31){ +with(_30){ +var _32=_items.length; +while(_32--){ +objj_msgSend(objj_msgSend(_items[_32],"view"),"removeFromSuperview"); +objj_msgSend(_items[_32],"setSelected:",NO); +_cachedItems.push(_items[_32]); +} +_items=[]; +if(!_itemPrototype||!_content){ +return; +} +var _33=0; +_32=_content.length; +for(;_33<_32;++_33){ +_items.push(objj_msgSend(_30,"newItemForRepresentedObject:",_content[_33])); +objj_msgSend(_30,"addSubview:",objj_msgSend(_items[_33],"view")); +} +_33=CPNotFound; +while((_33=objj_msgSend(_selectionIndexes,"indexGreaterThanIndex:",_33))!=CPNotFound){ +objj_msgSend(_items[_33],"setSelected:",YES); +} +objj_msgSend(_30,"tile"); +} +}),new objj_method(sel_getUid("tile"),function(_34,_35){ +with(_34){ +var _36=CGRectGetWidth(objj_msgSend(_34,"bounds")); +if(!objj_msgSend(_content,"count")||_36==_tileWidth){ +return; +} +var _37=CGSizeMakeCopy(_minItemSize); +_numberOfColumns=MAX(1,FLOOR(_36/_37.width)); +if(_maxNumberOfColumns>0){ +_numberOfColumns=MIN(_maxNumberOfColumns,_numberOfColumns); +} +var _38=_36-_numberOfColumns*_37.width,_39=NO; +if(_38>0&&_37.width<_maxItemSize.width){ +_37.width=MIN(_maxItemSize.width,_37.width+FLOOR(_38/_numberOfColumns)); +} +if(_maxNumberOfColumns==1&&_37.width<_maxItemSize.width&&_37.width<_36){ +_37.width=MIN(_maxItemSize.width,_36); +} +if(!CGSizeEqualToSize(_itemSize,_37)){ +_itemSize=_37; +_39=YES; +} +var _3a=0,_3b=_items.length; +if(_maxNumberOfColumns>0&&_maxNumberOfRows>0){ +_3b=MIN(_3b,_maxNumberOfColumns*_maxNumberOfRows); +} +_numberOfRows=CEIL(_3b/_numberOfColumns); +_horizontalMargin=FLOOR((_36-_numberOfColumns*_37.width)/(_numberOfColumns+1)); +var x=_horizontalMargin,y=-_37.height; +for(;_3a<_3b;++_3a){ +if(_3a%_numberOfColumns==0){ +x=_horizontalMargin; +y+=_verticalMargin+_37.height; +} +var _3c=objj_msgSend(_items[_3a],"view"); +objj_msgSend(_3c,"setFrameOrigin:",CGPointMake(x,y)); +if(_39){ +objj_msgSend(_3c,"setFrameSize:",_itemSize); +} +x+=_37.width+_horizontalMargin; +} +var _3d=objj_msgSend(_34,"superview"),_3e=y+_37.height+_verticalMargin; +if(objj_msgSend(_3d,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _3f=objj_msgSend(_3d,"bounds").size; +_3e=MAX(_3f.height,_3e); +} +_tileWidth=_36; +objj_msgSend(_34,"setFrameSize:",CGSizeMake(_36,_3e)); +_tileWidth=-1; +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"tile"); +} +}),new objj_method(sel_getUid("setMaxNumberOfRows:"),function(_43,_44,_45){ +with(_43){ +if(_maxNumberOfRows==_45){ +return; +} +_maxNumberOfRows=_45; +objj_msgSend(_43,"tile"); +} +}),new objj_method(sel_getUid("maxNumberOfRows"),function(_46,_47){ +with(_46){ +return _maxNumberOfRows; +} +}),new objj_method(sel_getUid("setMaxNumberOfColumns:"),function(_48,_49,_4a){ +with(_48){ +if(_maxNumberOfColumns==_4a){ +return; +} +_maxNumberOfColumns=_4a; +objj_msgSend(_48,"tile"); +} +}),new objj_method(sel_getUid("maxNumberOfColumns"),function(_4b,_4c){ +with(_4b){ +return _maxNumberOfColumns; +} +}),new objj_method(sel_getUid("numberOfRows"),function(_4d,_4e){ +with(_4d){ +return _numberOfRows; +} +}),new objj_method(sel_getUid("numberOfColumns"),function(_4f,_50){ +with(_4f){ +return _numberOfColumns; +} +}),new objj_method(sel_getUid("setMinItemSize:"),function(_51,_52,_53){ +with(_51){ +if(CGSizeEqualToSize(_minItemSize,_53)){ +return; +} +_minItemSize=CGSizeMakeCopy(_53); +objj_msgSend(_51,"tile"); +} +}),new objj_method(sel_getUid("minItemSize"),function(_54,_55){ +with(_54){ +return _minItemSize; +} +}),new objj_method(sel_getUid("setMaxItemSize:"),function(_56,_57,_58){ +with(_56){ +if(CGSizeEqualToSize(_maxItemSize,_58)){ +return; +} +_maxItemSize=CGSizeMakeCopy(_58); +objj_msgSend(_56,"tile"); +} +}),new objj_method(sel_getUid("maxItemSize"),function(_59,_5a){ +with(_59){ +return _maxItemSize; +} +}),new objj_method(sel_getUid("setBackgroundColors:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_backgroundColors===_5d){ +return; +} +_backgroundColors=_5d; +if(!_backgroundColors){ +_backgroundColors=objj_msgSend(CPColor,"whiteColor"); +} +if(objj_msgSend(_backgroundColors,"count")===1){ +objj_msgSend(_5b,"setBackgroundColor:",_backgroundColors[0]); +}else{ +objj_msgSend(_5b,"setBackgroundColor:",nil); +} +objj_msgSend(_5b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("backgroundColors"),function(_5e,_5f){ +with(_5e){ +return _backgroundColors; +} +}),new objj_method(sel_getUid("mouseUp:"),function(_60,_61,_62){ +with(_60){ +if(objj_msgSend(_selectionIndexes,"count")&&objj_msgSend(_62,"clickCount")==2&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:didDoubleClickOnItemAtIndex:"))){ +objj_msgSend(_delegate,"collectionView:didDoubleClickOnItemAtIndex:",_60,objj_msgSend(_selectionIndexes,"firstIndex")); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_63,_64,_65){ +with(_63){ +_mouseDownEvent=_65; +var _66=objj_msgSend(_63,"convertPoint:fromView:",objj_msgSend(_65,"locationInWindow"),nil),row=FLOOR(_66.y/(_itemSize.height+_verticalMargin)),_67=FLOOR(_66.x/(_itemSize.width+_horizontalMargin)),_68=row*_numberOfColumns+_67; +if(_68>=0&&_68<_items.length){ +if(_allowsMultipleSelection&&(objj_msgSend(_65,"modifierFlags")&CPCommandKeyMask||objj_msgSend(_65,"modifierFlags")&CPShiftKeyMask)){ +var _69=objj_msgSend(_selectionIndexes,"copy"); +if(objj_msgSend(_69,"containsIndex:",_68)){ +objj_msgSend(_69,"removeIndex:",_68); +}else{ +objj_msgSend(_69,"addIndex:",_68); +} +}else{ +_69=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_68); +} +objj_msgSend(_63,"setSelectionIndexes:",_69); +}else{ +if(_allowsEmptySelection){ +objj_msgSend(_63,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSet")); +} +} +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_6a,_6b,_6c){ +with(_6a){ +var _6d=objj_msgSend(_6c,"locationInWindow"),_6e=objj_msgSend(_mouseDownEvent,"locationInWindow"); +if((ABS(_6d.x-_6e.x)<3)&&(ABS(_6d.y-_6e.y)<3)){ +return; +} +if(!objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:dragTypesForItemsAtIndexes:"))){ +return; +} +if(!objj_msgSend(_selectionIndexes,"count")){ +return; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("collectionView:canDragItemsAtIndexes:withEvent:"))&&!objj_msgSend(_delegate,"collectionView:canDragItemsAtIndexes:withEvent:",_6a,_selectionIndexes,_mouseDownEvent)){ +return; +} +var _6f=objj_msgSend(_delegate,"collectionView:dragTypesForItemsAtIndexes:",_6a,_selectionIndexes); +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",_6f,_6a); +if(!_itemForDragging){ +_itemForDragging=objj_msgSend(_6a,"newItemForRepresentedObject:",_content[objj_msgSend(_selectionIndexes,"firstIndex")]); +}else{ +objj_msgSend(_itemForDragging,"setRepresentedObject:",_content[objj_msgSend(_selectionIndexes,"firstIndex")]); +} +var _70=objj_msgSend(_itemForDragging,"view"); +objj_msgSend(_70,"setFrameSize:",_itemSize); +objj_msgSend(_70,"setAlphaValue:",0.7); +objj_msgSend(_6a,"dragView:at:offset:event:pasteboard:source:slideBack:",_70,objj_msgSend(objj_msgSend(_items[objj_msgSend(_selectionIndexes,"firstIndex")],"view"),"frame").origin,CGSizeMakeZero(),_mouseDownEvent,nil,_6a,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_71,_72,_73,_74){ +with(_71){ +objj_msgSend(_73,"setData:forType:",objj_msgSend(_delegate,"collectionView:dataForItemsAtIndexes:forType:",_71,_selectionIndexes,_74),_74); +} +}),new objj_method(sel_getUid("setVerticalMargin:"),function(_75,_76,_77){ +with(_75){ +if(_verticalMargin==_77){ +return; +} +_verticalMargin=_77; +objj_msgSend(_75,"tile"); +} +}),new objj_method(sel_getUid("verticalMargin"),function(_78,_79){ +with(_78){ +return _verticalMargin; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_7a,_7b,_7c){ +with(_7a){ +_delegate=_7c; +} +}),new objj_method(sel_getUid("delegate"),function(_7d,_7e){ +with(_7d){ +return _delegate; +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_7f,_80,_81){ +with(_7f){ +return objj_msgSend(_items,"objectAtIndex:",_81); +} +}),new objj_method(sel_getUid("frameForItemAtIndex:"),function(_82,_83,_84){ +with(_82){ +return objj_msgSend(objj_msgSend(objj_msgSend(_82,"itemAtIndex:",_84),"view"),"frame"); +} +}),new objj_method(sel_getUid("frameForItemsAtIndexes:"),function(_85,_86,_87){ +with(_85){ +var _88=[],_89=CGRectNull; +objj_msgSend(_87,"getIndexes:maxCount:inIndexRange:",_88,-1,nil); +var _8a=0,_8b=objj_msgSend(_88,"count"); +for(;_8a<_8b;++_8a){ +_89=CGRectUnion(_89,objj_msgSend(_85,"frameForItemAtIndex:",_88[_8a])); +} +return _89; +} +})]); +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("_modifySelectionWithNewIndex:direction:expand:"),function(_8c,_8d,_8e,_8f,_90){ +with(_8c){ +_8e=MIN(MAX(_8e,0),objj_msgSend(objj_msgSend(_8c,"items"),"count")-1); +if(_allowsMultipleSelection&&_90){ +var _91=objj_msgSend(_selectionIndexes,"copy"),_92=objj_msgSend(_91,"firstIndex"),_93=objj_msgSend(_91,"lastIndex"); +if(_8f===-1){ +objj_msgSend(_91,"addIndexesInRange:",CPMakeRange(_8e,_92-_8e+1)); +}else{ +objj_msgSend(_91,"addIndexesInRange:",CPMakeRange(_93,_8e-_93+1)); +} +}else{ +_91=objj_msgSend(CPIndexSet,"indexSetWithIndex:",_8e); +} +objj_msgSend(_8c,"setSelectionIndexes:",_91); +objj_msgSend(_8c,"_scrollToSelection"); +} +}),new objj_method(sel_getUid("_scrollToSelection"),function(_94,_95){ +with(_94){ +var _96=objj_msgSend(_94,"frameForItemsAtIndexes:",objj_msgSend(_94,"selectionIndexes")); +if(!CGRectIsNull(_96)){ +objj_msgSend(_94,"scrollRectToVisible:",_96); +} +} +}),new objj_method(sel_getUid("moveLeft:"),function(_97,_98,_99){ +with(_97){ +var _9a=objj_msgSend(objj_msgSend(_97,"selectionIndexes"),"firstIndex"); +if(_9a===CPNotFound){ +_9a=objj_msgSend(objj_msgSend(_97,"items"),"count"); +} +objj_msgSend(_97,"_modifySelectionWithNewIndex:direction:expand:",_9a-1,-1,NO); +} +}),new objj_method(sel_getUid("moveLeftAndModifySelection:"),function(_9b,_9c,_9d){ +with(_9b){ +var _9e=objj_msgSend(objj_msgSend(_9b,"selectionIndexes"),"firstIndex"); +if(_9e===CPNotFound){ +_9e=objj_msgSend(objj_msgSend(_9b,"items"),"count"); +} +objj_msgSend(_9b,"_modifySelectionWithNewIndex:direction:expand:",_9e-1,-1,YES); +} +}),new objj_method(sel_getUid("moveRight:"),function(_9f,_a0,_a1){ +with(_9f){ +objj_msgSend(_9f,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_9f,"selectionIndexes"),"lastIndex")+1,1,NO); +} +}),new objj_method(sel_getUid("moveRightAndModifySelection:"),function(_a2,_a3,_a4){ +with(_a2){ +objj_msgSend(_a2,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a2,"selectionIndexes"),"lastIndex")+1,1,YES); +} +}),new objj_method(sel_getUid("moveDown:"),function(_a5,_a6,_a7){ +with(_a5){ +objj_msgSend(_a5,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a5,"selectionIndexes"),"lastIndex")+objj_msgSend(_a5,"numberOfColumns"),1,NO); +} +}),new objj_method(sel_getUid("moveDownAndModifySelection:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"_modifySelectionWithNewIndex:direction:expand:",objj_msgSend(objj_msgSend(_a8,"selectionIndexes"),"lastIndex")+objj_msgSend(_a8,"numberOfColumns"),1,YES); +} +}),new objj_method(sel_getUid("moveUp:"),function(_ab,_ac,_ad){ +with(_ab){ +var _ae=objj_msgSend(objj_msgSend(_ab,"selectionIndexes"),"firstIndex"); +if(_ae==CPNotFound){ +_ae=objj_msgSend(objj_msgSend(_ab,"items"),"count"); +} +objj_msgSend(_ab,"_modifySelectionWithNewIndex:direction:expand:",_ae-objj_msgSend(_ab,"numberOfColumns"),-1,NO); +} +}),new objj_method(sel_getUid("moveUpAndModifySelection:"),function(_af,_b0,_b1){ +with(_af){ +var _b2=objj_msgSend(objj_msgSend(_af,"selectionIndexes"),"firstIndex"); +if(_b2==CPNotFound){ +_b2=objj_msgSend(objj_msgSend(_af,"items"),"count"); +} +objj_msgSend(_af,"_modifySelectionWithNewIndex:direction:expand:",_b2-objj_msgSend(_af,"numberOfColumns"),-1,YES); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(_b3,_b4,_b5){ +with(_b3){ +if(objj_msgSend(objj_msgSend(_b3,"delegate"),"respondsToSelector:",sel_getUid("collectionView:shouldDeleteItemsAtIndexes:"))){ +objj_msgSend(objj_msgSend(_b3,"delegate"),"collectionView:shouldDeleteItemsAtIndexes:",_b3,objj_msgSend(_b3,"selectionIndexes")); +var _b6=objj_msgSend(objj_msgSend(_b3,"selectionIndexes"),"firstIndex"); +if(_b6>objj_msgSend(objj_msgSend(_b3,"content"),"count")-1){ +objj_msgSend(_b3,"setSelectionIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",objj_msgSend(objj_msgSend(_b3,"content"),"count")-1)); +} +objj_msgSend(_b3,"_scrollToSelection"); +objj_msgSend(_b3,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("keyDown:"),function(_b7,_b8,_b9){ +with(_b7){ +objj_msgSend(_b7,"interpretKeyEvents:",[_b9]); +} +})]); +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("rectForItemAtIndex:"),function(_ba,_bb,_bc){ +with(_ba){ +_CPReportLenientDeprecation(objj_msgSend(_ba,"class"),_bb,sel_getUid("frameForItemAtIndex:")); +return objj_msgSend(_ba,"frameForItemAtIndex:",_bc); +} +}),new objj_method(sel_getUid("rectForItemsAtIndexes:"),function(_bd,_be,_bf){ +with(_bd){ +_CPReportLenientDeprecation(objj_msgSend(_bd,"class"),_be,sel_getUid("frameForItemsAtIndexes:")); +return objj_msgSend(_bd,"frameForItemsAtIndexes:",_bf); +} +})]); +var _c0="CPCollectionViewMinItemSizeKey",_c1="CPCollectionViewMaxItemSizeKey",_c2="CPCollectionViewVerticalMarginKey",_c3="CPCollectionViewMaxNumberOfRowsKey",_c4="CPCollectionViewMaxNumberOfColumnsKey",_c5="CPCollectionViewSelectableKey",_c6="CPCollectionViewBackgroundColorsKey"; +var _1=objj_getClass("CPCollectionView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_c7,_c8,_c9){ +with(_c7){ +_c7=objj_msgSendSuper({receiver:_c7,super_class:objj_getClass("CPCollectionView").super_class},"initWithCoder:",_c9); +if(_c7){ +_items=[]; +_content=[]; +_cachedItems=[]; +_itemSize=CGSizeMakeZero(); +_minItemSize=objj_msgSend(_c9,"decodeSizeForKey:",_c0)||CGSizeMakeZero(); +_maxItemSize=objj_msgSend(_c9,"decodeSizeForKey:",_c1)||CGSizeMakeZero(); +_maxNumberOfRows=objj_msgSend(_c9,"decodeIntForKey:",_c3)||0; +_maxNumberOfColumns=objj_msgSend(_c9,"decodeIntForKey:",_c4)||0; +_verticalMargin=objj_msgSend(_c9,"decodeFloatForKey:",_c2); +_isSelectable=objj_msgSend(_c9,"decodeBoolForKey:",_c5); +objj_msgSend(_c7,"setBackgroundColors:",objj_msgSend(_c9,"decodeObjectForKey:",_c6)); +_tileWidth=-1; +_selectionIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_allowsEmptySelection=YES; +} +return _c7; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_ca,_cb,_cc){ +with(_ca){ +objj_msgSendSuper({receiver:_ca,super_class:objj_getClass("CPCollectionView").super_class},"encodeWithCoder:",_cc); +if(!CGSizeEqualToSize(_minItemSize,CGSizeMakeZero())){ +objj_msgSend(_cc,"encodeSize:forKey:",_minItemSize,_c0); +} +if(!CGSizeEqualToSize(_maxItemSize,CGSizeMakeZero())){ +objj_msgSend(_cc,"encodeSize:forKey:",_maxItemSize,_c1); +} +objj_msgSend(_cc,"encodeInt:forKey:",_maxNumberOfRows,_c3); +objj_msgSend(_cc,"encodeInt:forKey:",_maxNumberOfColumns,_c4); +objj_msgSend(_cc,"encodeBool:forKey:",_isSelectable,_c5); +objj_msgSend(_cc,"encodeFloat:forKey:",_verticalMargin,_c2); +objj_msgSend(_cc,"encodeObject:forKey:",_backgroundColors,_c6); +} +})]); +p;22;CPCollectionViewItem.jt;1188;@STATIC;1.0;i;18;CPViewController.jt;1146; +objj_executeFile("CPViewController.j",YES); +var _1=objj_allocateClassPair(CPViewController,"CPCollectionViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isSelected")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setRepresentedObject:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCollectionViewItem").super_class},"setRepresentedObject:",_5); +var _6=objj_msgSend(_3,"view"); +if(objj_msgSend(_6,"respondsToSelector:",sel_getUid("setRepresentedObject:"))){ +objj_msgSend(_6,"setRepresentedObject:",objj_msgSend(_3,"representedObject")); +} +} +}),new objj_method(sel_getUid("setSelected:"),function(_7,_8,_9){ +with(_7){ +_9=!!_9; +if(_isSelected===_9){ +return; +} +_isSelected=_9; +var _a=objj_msgSend(_7,"view"); +if(objj_msgSend(_a,"respondsToSelector:",sel_getUid("setSelected:"))){ +objj_msgSend(_a,"setSelected:",objj_msgSend(_7,"isSelected")); +} +} +}),new objj_method(sel_getUid("isSelected"),function(_b,_c){ +with(_b){ +return _isSelected; +} +}),new objj_method(sel_getUid("collectionView"),function(_d,_e){ +with(_d){ +return objj_msgSend(_view,"superview"); +} +})]); +p;9;CPColor.jt;11992;@STATIC;1.0;I;21;Foundation/CPObject.ji;9;CGColor.ji;17;CPCompatibility.ji;9;CPImage.jt;11898; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CGColor.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPImage.j",YES); +var _1=0,_2=1,_3=2,_4=3; +var _5=0,_6=1,_7=2; +var _8,_9,_a,_b,_c,_d,_e,_f,_10,_11,_12,_13,_14,_15,_16,_17; +var _18=objj_allocateClassPair(CPObject,"CPColor"),_19=_18.isa; +class_addIvars(_18,[new objj_ivar("_components"),new objj_ivar("_patternImage"),new objj_ivar("_cssString")]); +objj_registerClassPair(_18); +class_addMethods(_18,[new objj_method(sel_getUid("_initWithCSSString:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_1c.indexOf("rgb")==CPNotFound){ +return nil; +} +_1a=objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("CPColor").super_class},"init"); +var _1d=_1c.indexOf("("); +var _1e=_1c.substring(_1d+1).split(","); +_components=[parseInt(_1e[0],10)/255,parseInt(_1e[1],10)/255,parseInt(_1e[2],10)/255,_1e[3]?parseInt(_1e[3],10)/255:1]; +_cssString=_1c; +return _1a; +} +}),new objj_method(sel_getUid("_initWithRGBA:"),function(_1f,_20,_21){ +with(_1f){ +_1f=objj_msgSendSuper({receiver:_1f,super_class:objj_getClass("CPColor").super_class},"init"); +if(_1f){ +_components=_21; +var _22=CPFeatureIsCompatible(CPCSSRGBAFeature)&&_components[3]!=1; +_cssString=(_22?"rgba(":"rgb(")+parseInt(_components[0]*255)+", "+parseInt(_components[1]*255)+", "+parseInt(_components[2]*255)+(_22?(", "+_components[3]):"")+")"; +} +return _1f; +} +}),new objj_method(sel_getUid("_initWithPatternImage:"),function(_23,_24,_25){ +with(_23){ +_23=objj_msgSendSuper({receiver:_23,super_class:objj_getClass("CPColor").super_class},"init"); +if(_23){ +_patternImage=_25; +_cssString="url(\""+objj_msgSend(_patternImage,"filename")+"\")"; +_components=[0,0,0,1]; +} +return _23; +} +}),new objj_method(sel_getUid("patternImage"),function(_26,_27){ +with(_26){ +return _patternImage; +} +}),new objj_method(sel_getUid("alphaComponent"),function(_28,_29){ +with(_28){ +return _components[3]; +} +}),new objj_method(sel_getUid("blueComponent"),function(_2a,_2b){ +with(_2a){ +return _components[2]; +} +}),new objj_method(sel_getUid("greenComponent"),function(_2c,_2d){ +with(_2c){ +return _components[1]; +} +}),new objj_method(sel_getUid("redComponent"),function(_2e,_2f){ +with(_2e){ +return _components[0]; +} +}),new objj_method(sel_getUid("components"),function(_30,_31){ +with(_30){ +return _components; +} +}),new objj_method(sel_getUid("colorWithAlphaComponent:"),function(_32,_33,_34){ +with(_32){ +var _35=_components.slice(); +_35[_35.length-1]=_34; +return objj_msgSend(objj_msgSend(objj_msgSend(_32,"class"),"alloc"),"_initWithRGBA:",_35); +} +}),new objj_method(sel_getUid("hsbComponents"),function(_36,_37){ +with(_36){ +var red=ROUND(_components[_1]*255),_38=ROUND(_components[_2]*255),_39=ROUND(_components[_3]*255); +var max=MAX(red,_38,_39),min=MIN(red,_38,_39),_3a=max-min; +var _3b=max/255,_3c=(max!=0)?_3a/max:0; +var hue; +if(_3c==0){ +hue=0; +}else{ +var rr=(max-red)/_3a; +var gr=(max-_38)/_3a; +var br=(max-_39)/_3a; +if(red==max){ +hue=br-gr; +}else{ +if(_38==max){ +hue=2+rr-br; +}else{ +hue=4+gr-rr; +} +} +hue/=6; +if(hue<0){ +hue++; +} +} +return [ROUND(hue*360),ROUND(_3c*100),ROUND(_3b*100)]; +} +}),new objj_method(sel_getUid("cssString"),function(_3d,_3e){ +with(_3d){ +return _cssString; +} +}),new objj_method(sel_getUid("hexString"),function(_3f,_40){ +with(_3f){ +return _41(objj_msgSend(_3f,"redComponent"),objj_msgSend(_3f,"greenComponent"),objj_msgSend(_3f,"blueComponent")); +} +}),new objj_method(sel_getUid("isEqual:"),function(_42,_43,_44){ +with(_42){ +if(!_44){ +return NO; +} +if(_44===_42){ +return YES; +} +return objj_msgSend(_44,"isKindOfClass:",CPColor)&&objj_msgSend(_44,"cssString")===objj_msgSend(_42,"cssString"); +} +}),new objj_method(sel_getUid("description"),function(_45,_46){ +with(_45){ +return objj_msgSendSuper({receiver:_45,super_class:objj_getClass("CPColor").super_class},"description")+" "+objj_msgSend(_45,"cssString"); +} +})]); +class_addMethods(_19,[new objj_method(sel_getUid("colorWithRed:green:blue:alpha:"),function(_47,_48,red,_49,_4a,_4b){ +with(_47){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[red,_49,_4a,_4b]); +} +}),new objj_method(sel_getUid("colorWithCalibratedRed:green:blue:alpha:"),function(_4c,_4d,red,_4e,_4f,_50){ +with(_4c){ +return objj_msgSend(_4c,"colorWithRed:green:blue:alpha:",red,_4e,_4f,_50); +} +}),new objj_method(sel_getUid("colorWithWhite:alpha:"),function(_51,_52,_53,_54){ +with(_51){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[_53,_53,_53,_54]); +} +}),new objj_method(sel_getUid("colorWithCalibratedWhite:alpha:"),function(_55,_56,_57,_58){ +with(_55){ +return objj_msgSend(_55,"colorWithWhite:alpha:",_57,_58); +} +}),new objj_method(sel_getUid("colorWithHue:saturation:brightness:"),function(_59,_5a,hue,_5b,_5c){ +with(_59){ +return objj_msgSend(_59,"colorWithHue:saturation:brightness:alpha:",hue,_5b,_5c,1); +} +}),new objj_method(sel_getUid("colorWithHue:saturation:brightness:alpha:"),function(_5d,_5e,hue,_5f,_60,_61){ +with(_5d){ +if(_5f===0){ +return objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",_60/100,_61); +} +var f=hue%60,p=(_60*(100-_5f))/10000,q=(_60*(6000-_5f*f))/600000,t=(_60*(6000-_5f*(60-f)))/600000,b=_60/100; +switch(FLOOR(hue/60)){ +case 0: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",b,t,p,_61); +case 1: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",q,b,p,_61); +case 2: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",p,b,t,_61); +case 3: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",p,q,b,_61); +case 4: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",t,p,b,_61); +case 5: +return objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",b,p,q,_61); +} +} +}),new objj_method(sel_getUid("colorWithHexString:"),function(_62,_63,hex){ +with(_62){ +var _64=_65(hex); +return _64?objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",_64):null; +} +}),new objj_method(sel_getUid("blackColor"),function(_66,_67){ +with(_66){ +if(!_8){ +_8=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,0,1]); +} +return _8; +} +}),new objj_method(sel_getUid("blueColor"),function(_68,_69){ +with(_68){ +if(!_b){ +_b=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,1,1]); +} +return _b; +} +}),new objj_method(sel_getUid("darkGrayColor"),function(_6a,_6b){ +with(_6a){ +if(!_f){ +_f=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1/3,1); +} +return _f; +} +}),new objj_method(sel_getUid("grayColor"),function(_6c,_6d){ +with(_6c){ +if(!_d){ +_d=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.5,1); +} +return _d; +} +}),new objj_method(sel_getUid("greenColor"),function(_6e,_6f){ +with(_6e){ +if(!_a){ +_a=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,1,0,1]); +} +return _a; +} +}),new objj_method(sel_getUid("lightGrayColor"),function(_70,_71){ +with(_70){ +if(!_e){ +_e=objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",2/3,1); +} +return _e; +} +}),new objj_method(sel_getUid("redColor"),function(_72,_73){ +with(_72){ +if(!_9){ +_9=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0,0,1]); +} +return _9; +} +}),new objj_method(sel_getUid("whiteColor"),function(_74,_75){ +with(_74){ +if(!_10){ +_10=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,1,1,1]); +} +return _10; +} +}),new objj_method(sel_getUid("yellowColor"),function(_76,_77){ +with(_76){ +if(!_c){ +_c=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,1,0,1]); +} +return _c; +} +}),new objj_method(sel_getUid("brownColor"),function(_78,_79){ +with(_78){ +if(!_11){ +_11=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.6,0.4,0.2,1]); +} +return _11; +} +}),new objj_method(sel_getUid("cyanColor"),function(_7a,_7b){ +with(_7a){ +if(!_12){ +_12=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,1,1,1]); +} +return _12; +} +}),new objj_method(sel_getUid("magentaColor"),function(_7c,_7d){ +with(_7c){ +if(!_13){ +_13=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0,1,1]); +} +return _13; +} +}),new objj_method(sel_getUid("orangeColor"),function(_7e,_7f){ +with(_7e){ +if(!_14){ +_14=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[1,0.5,0,1]); +} +return _14; +} +}),new objj_method(sel_getUid("purpleColor"),function(_80,_81){ +with(_80){ +if(!_15){ +_15=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.5,0,0.5,1]); +} +return _15; +} +}),new objj_method(sel_getUid("shadowColor"),function(_82,_83){ +with(_82){ +if(!_16){ +_16=objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0,0,0,1/3]); +} +return _16; +} +}),new objj_method(sel_getUid("clearColor"),function(_84,_85){ +with(_84){ +if(!_17){ +_17=objj_msgSend(_84,"colorWithCalibratedWhite:alpha:",0,0); +} +return _17; +} +}),new objj_method(sel_getUid("alternateSelectedControlColor"),function(_86,_87){ +with(_86){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.22,0.46,0.84,1]); +} +}),new objj_method(sel_getUid("secondarySelectedControlColor"),function(_88,_89){ +with(_88){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithRGBA:",[0.83,0.83,0.83,1]); +} +}),new objj_method(sel_getUid("colorWithPatternImage:"),function(_8a,_8b,_8c){ +with(_8a){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithPatternImage:",_8c); +} +}),new objj_method(sel_getUid("colorWithCSSString:"),function(_8d,_8e,_8f){ +with(_8d){ +return objj_msgSend(objj_msgSend(CPColor,"alloc"),"_initWithCSSString:",_8f); +} +})]); +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_18,[new objj_method(sel_getUid("set"),function(_90,_91){ +with(_90){ +objj_msgSend(_90,"setFill"); +objj_msgSend(_90,"setStroke"); +} +}),new objj_method(sel_getUid("setFill"),function(_92,_93){ +with(_92){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetFillColor(ctx,_92); +} +}),new objj_method(sel_getUid("setStroke"),function(_94,_95){ +with(_94){ +var ctx=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(ctx,_94); +} +})]); +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_19,[new objj_method(sel_getUid("randomColor"),function(_96,_97){ +with(_96){ +return objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",RAND(),RAND(),RAND(),1); +} +})]); +var _98="CPColorComponentsKey",_99="CPColorPatternImageKey"; +var _18=objj_getClass("CPColor"); +if(!_18){ +throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +} +var _19=_18.isa; +class_addMethods(_18,[new objj_method(sel_getUid("initWithCoder:"),function(_9a,_9b,_9c){ +with(_9a){ +if(objj_msgSend(_9c,"containsValueForKey:",_99)){ +return objj_msgSend(_9a,"_initWithPatternImage:",objj_msgSend(_9c,"decodeObjectForKey:",_99)); +} +return objj_msgSend(_9a,"_initWithRGBA:",objj_msgSend(_9c,"decodeObjectForKey:",_98)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9d,_9e,_9f){ +with(_9d){ +if(_patternImage){ +objj_msgSend(_9f,"encodeObject:forKey:",_patternImage,_99); +}else{ +objj_msgSend(_9f,"encodeObject:forKey:",_components,_98); +} +} +})]); +var _a0="0123456789ABCDEF"; +var _65=function(hex){ +if(hex.length==3){ +hex=hex.charAt(0)+hex.charAt(0)+hex.charAt(1)+hex.charAt(1)+hex.charAt(2)+hex.charAt(2); +} +if(hex.length!=6){ +return null; +} +hex=hex.toUpperCase(); +for(var i=0;i<hex.length;i++){ +if(_a0.indexOf(hex.charAt(i))==-1){ +return null; +} +} +var red=(_a0.indexOf(hex.charAt(0))*16+_a0.indexOf(hex.charAt(1)))/255; +var _a1=(_a0.indexOf(hex.charAt(2))*16+_a0.indexOf(hex.charAt(3)))/255; +var _a2=(_a0.indexOf(hex.charAt(4))*16+_a0.indexOf(hex.charAt(5)))/255; +return [red,_a1,_a2,1]; +}; +var _41=function(r,g,b){ +return _a3(r)+_a3(g)+_a3(b); +}; +var _a3=function(n){ +if(!n||isNaN(n)){ +return "00"; +} +n=FLOOR(MIN(255,MAX(0,256*n))); +return _a0.charAt((n-n%16)/16)+_a0.charAt(n%16); +}; +p;14;CPColorPanel.jt;16794;@STATIC;1.0;i;10;CPButton.ji;10;CPCookie.ji;9;CPPanel.ji;8;CPView.ji;15;CPColorPicker.ji;21;CPSliderColorPicker.jt;16673; +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPCookie.j",YES); +objj_executeFile("CPPanel.j",YES); +objj_executeFile("CPView.j",YES); +CPColorPanelColorDidChangeNotification="CPColorPanelColorDidChangeNotification"; +var _1=20,_2=32,_3=14,_4=32,_5=12; +var _6=nil,_7=[]; +CPWheelColorPickerMode=1; +CPSliderColorPickerMode=2; +CPColorPickerViewWidth=265,CPColorPickerViewHeight=370; +var _8=objj_allocateClassPair(CPPanel,"CPColorPanel"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_toolbar"),new objj_ivar("_swatchView"),new objj_ivar("_previewView"),new objj_ivar("_opacitySlider"),new objj_ivar("_colorPickers"),new objj_ivar("_currentView"),new objj_ivar("_activePicker"),new objj_ivar("_color"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_mode")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("init"),function(_a,_b){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPColorPanel").super_class},"initWithContentRect:styleMask:",CGRectMake(500,50,219,370),(CPTitledWindowMask|CPClosableWindowMask|CPResizableWindowMask)); +if(_a){ +objj_msgSend(objj_msgSend(_a,"contentView"),"setBackgroundColor:",objj_msgSend(CPColor,"colorWithWhite:alpha:",0.95,1)); +objj_msgSend(_a,"setTitle:","Color Panel"); +objj_msgSend(_a,"setLevel:",CPFloatingWindowLevel); +objj_msgSend(_a,"setFloatingPanel:",YES); +objj_msgSend(_a,"setBecomesKeyOnlyIfNeeded:",YES); +objj_msgSend(_a,"setMinSize:",CGSizeMake(219,342)); +objj_msgSend(_a,"setMaxSize:",CGSizeMake(323,537)); +} +return _a; +} +}),new objj_method(sel_getUid("setColor:"),function(_c,_d,_e){ +with(_c){ +_color=_e; +objj_msgSend(_previewView,"setBackgroundColor:",_color); +objj_msgSend(CPApp,"sendAction:to:from:",sel_getUid("changeColor:"),nil,_c); +if(_target&&_action){ +objj_msgSend(CPApp,"sendAction:to:from:",_action,_target,_c); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPColorPanelColorDidChangeNotification,_c); +objj_msgSend(_activePicker,"setColor:",_color); +objj_msgSend(_opacitySlider,"setFloatValue:",objj_msgSend(_color,"alphaComponent")); +} +}),new objj_method(sel_getUid("setColor:updatePicker:"),function(_f,_10,_11,_12){ +with(_f){ +objj_msgSend(_f,"setColor:",_11); +if(_12){ +objj_msgSend(_activePicker,"setColor:",_color); +} +} +}),new objj_method(sel_getUid("color"),function(_13,_14){ +with(_13){ +return _color; +} +}),new objj_method(sel_getUid("opacity"),function(_15,_16){ +with(_15){ +return objj_msgSend(_opacitySlider,"floatValue"); +} +}),new objj_method(sel_getUid("setTarget:"),function(_17,_18,_19){ +with(_17){ +_target=_19; +} +}),new objj_method(sel_getUid("target"),function(_1a,_1b){ +with(_1a){ +return _target; +} +}),new objj_method(sel_getUid("setAction:"),function(_1c,_1d,_1e){ +with(_1c){ +_action=_1e; +} +}),new objj_method(sel_getUid("action"),function(_1f,_20){ +with(_1f){ +return _action; +} +}),new objj_method(sel_getUid("setMode:"),function(_21,_22,_23){ +with(_21){ +_mode=_23; +} +}),new objj_method(sel_getUid("_setPicker:"),function(_24,_25,_26){ +with(_24){ +var _27=_colorPickers[objj_msgSend(_26,"tag")],_28=objj_msgSend(_27,"provideNewView:",NO); +if(!_28){ +_28=objj_msgSend(_27,"provideNewView:",YES); +} +if(_28==_currentView){ +return; +} +if(_currentView){ +objj_msgSend(_28,"setFrame:",objj_msgSend(_currentView,"frame")); +}else{ +var _29=(_2+10+_1+5+_3+32),_2a=objj_msgSend(objj_msgSend(_24,"contentView"),"bounds"); +objj_msgSend(_28,"setFrameSize:",CPSizeMake(_2a.size.width-10,_2a.size.height-_29)); +objj_msgSend(_28,"setFrameOrigin:",CPPointMake(5,_29)); +} +objj_msgSend(_currentView,"removeFromSuperview"); +objj_msgSend(objj_msgSend(_24,"contentView"),"addSubview:",_28); +_currentView=_28; +_activePicker=_27; +objj_msgSend(_27,"setColor:",objj_msgSend(_24,"color")); +} +}),new objj_method(sel_getUid("mode"),function(_2b,_2c){ +with(_2b){ +return _mode; +} +}),new objj_method(sel_getUid("orderFront:"),function(_2d,_2e,_2f){ +with(_2d){ +objj_msgSend(_2d,"_loadContentsIfNecessary"); +objj_msgSendSuper({receiver:_2d,super_class:objj_getClass("CPColorPanel").super_class},"orderFront:",_2f); +} +}),new objj_method(sel_getUid("_loadContentsIfNecessary"),function(_30,_31){ +with(_30){ +if(_toolbar){ +return; +} +if(!_color){ +_color=objj_msgSend(CPColor,"whiteColor"); +} +_colorPickers=[]; +var _32=objj_msgSend(_7,"count"); +for(var i=0;i<_32;i++){ +var _33=_7[i],_34=objj_msgSend(objj_msgSend(_33,"alloc"),"initWithPickerMask:colorPanel:",0,_30); +_colorPickers.push(_34); +} +var _35=objj_msgSend(_30,"contentView"),_36=objj_msgSend(_35,"bounds"); +_toolbar=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,6,CGRectGetWidth(_36),_2)); +objj_msgSend(_toolbar,"setAutoresizingMask:",CPViewWidthSizable); +var _37=_32*_4+(_32-1)*_5,_38=(CGRectGetWidth(_36)-_37)/2,_39=nil; +for(var i=0;i<_32;i++){ +var _3a=objj_msgSend(_colorPickers[i],"provideNewButtonImage"),_3b=objj_msgSend(_colorPickers[i],"provideNewAlternateButtonImage"),_3c=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(_38+i*(_4+_5),0,_4,_4)); +objj_msgSend(_3c,"setTag:",i); +objj_msgSend(_3c,"setTarget:",_30); +objj_msgSend(_3c,"setAction:",sel_getUid("_setPicker:")); +objj_msgSend(_3c,"setBordered:",NO); +objj_msgSend(_3c,"setAutoresizingMask:",CPViewMinXMargin|CPViewMaxXMargin); +objj_msgSend(_3c,"setImage:",_3a); +objj_msgSend(_3c,"setAlternateImage:",_3b); +objj_msgSend(_toolbar,"addSubview:",_3c); +if(!_39){ +_39=_3c; +} +} +var _3d=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(76,_2+10,CGRectGetWidth(_36)-86,_1)); +_previewView=objj_msgSend(objj_msgSend(_CPColorPanelPreview,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_3d,"bounds"),2,2)); +objj_msgSend(_previewView,"setColorPanel:",_30); +objj_msgSend(_previewView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_3d,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithWhite:alpha:",0.8,1)); +objj_msgSend(_3d,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_3d,"addSubview:",_previewView); +var _3e=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(10,_2+10,60,15)); +objj_msgSend(_3e,"setStringValue:","Preview:"); +objj_msgSend(_3e,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_3e,"setAlignment:",CPRightTextAlignment); +var _3f=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(76,_2+10+_1+5,CGRectGetWidth(_36)-86,_3+2)); +objj_msgSend(_3f,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithWhite:alpha:",0.8,1)); +objj_msgSend(_3f,"setAutoresizingMask:",CPViewWidthSizable); +_swatchView=objj_msgSend(objj_msgSend(_CPColorPanelSwatches,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_3f,"bounds"),1,1)); +objj_msgSend(_swatchView,"setColorPanel:",_30); +objj_msgSend(_swatchView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_3f,"addSubview:",_swatchView); +var _40=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(10,_2+8+_1+6,60,15)); +objj_msgSend(_40,"setStringValue:","Swatches:"); +objj_msgSend(_40,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_40,"setAlignment:",CPRightTextAlignment); +var _41=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(10,_2+_1+35,60,20)); +objj_msgSend(_41,"setStringValue:","Opacity:"); +objj_msgSend(_41,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_41,"setAlignment:",CPRightTextAlignment); +_opacitySlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CGRectMake(76,_2+_1+34,CGRectGetWidth(_36)-86,20)); +objj_msgSend(_opacitySlider,"setMinValue:",0); +objj_msgSend(_opacitySlider,"setMaxValue:",1); +objj_msgSend(_opacitySlider,"setTarget:",_30); +objj_msgSend(_opacitySlider,"setAction:",sel_getUid("setOpacity:")); +objj_msgSend(_35,"addSubview:",_toolbar); +objj_msgSend(_35,"addSubview:",_3d); +objj_msgSend(_35,"addSubview:",_3e); +objj_msgSend(_35,"addSubview:",_3f); +objj_msgSend(_35,"addSubview:",_40); +objj_msgSend(_35,"addSubview:",_41); +objj_msgSend(_35,"addSubview:",_opacitySlider); +_target=nil; +_action=nil; +_activePicker=nil; +objj_msgSend(_previewView,"setBackgroundColor:",_color); +if(_39){ +objj_msgSend(_30,"_setPicker:",_39); +} +} +}),new objj_method(sel_getUid("setOpacity:"),function(_42,_43,_44){ +with(_42){ +var _45=objj_msgSend(objj_msgSend(_42,"color"),"components"),_46=objj_msgSend(_44,"floatValue"); +objj_msgSend(_42,"setColor:updatePicker:",objj_msgSend(_color,"colorWithAlphaComponent:",_46),YES); +} +})]); +class_addMethods(_9,[new objj_method(sel_getUid("provideColorPickerClass:"),function(_47,_48,_49){ +with(_47){ +_7.push(_49); +} +}),new objj_method(sel_getUid("sharedColorPanel"),function(_4a,_4b){ +with(_4a){ +if(!_6){ +_6=objj_msgSend(objj_msgSend(CPColorPanel,"alloc"),"init"); +} +return _6; +} +}),new objj_method(sel_getUid("setPickerMode:"),function(_4c,_4d,_4e){ +with(_4c){ +var _4f=objj_msgSend(CPColorPanel,"sharedColorPanel"); +objj_msgSend(_4f,"setMode:",_4e); +} +})]); +CPColorDragType="CPColorDragType"; +var _50="CPColorPanelSwatchesCookie"; +var _8=objj_allocateClassPair(CPView,"_CPColorPanelSwatches"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_swatches"),new objj_ivar("_dragColor"),new objj_ivar("_colorPanel"),new objj_ivar("_swatchCookie")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithFrame:"),function(_51,_52,_53){ +with(_51){ +_51=objj_msgSendSuper({receiver:_51,super_class:objj_getClass("_CPColorPanelSwatches").super_class},"initWithFrame:",_53); +objj_msgSend(_51,"setBackgroundColor:",objj_msgSend(CPColor,"grayColor")); +objj_msgSend(_51,"registerForDraggedTypes:",objj_msgSend(CPArray,"arrayWithObjects:",CPColorDragType)); +var _54=objj_msgSend(CPColor,"whiteColor"); +_swatchCookie=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_50); +var _55=objj_msgSend(_51,"startingColorList"); +_swatches=[]; +for(var i=0;i<50;i++){ +var _56=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CPRectMake(13*i+1,1,12,12)),_57=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_56,"bounds"),1,1)); +objj_msgSend(_56,"setBackgroundColor:",_54); +objj_msgSend(_57,"setBackgroundColor:",(i<_55.length)?_55[i]:_54); +objj_msgSend(_56,"addSubview:",_57); +objj_msgSend(_51,"addSubview:",_56); +_swatches.push(_56); +} +return _51; +} +}),new objj_method(sel_getUid("isOpaque"),function(_58,_59){ +with(_58){ +return YES; +} +}),new objj_method(sel_getUid("startingColorList"),function(_5a,_5b){ +with(_5a){ +var _5c=objj_msgSend(_swatchCookie,"value"); +if(_5c==""){ +return [objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPColor,"darkGrayColor"),objj_msgSend(CPColor,"grayColor"),objj_msgSend(CPColor,"lightGrayColor"),objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"redColor"),objj_msgSend(CPColor,"greenColor"),objj_msgSend(CPColor,"blueColor"),objj_msgSend(CPColor,"yellowColor")]; +} +var _5c=eval(_5c); +var _5d=[]; +for(var i=0;i<_5c.length;i++){ +_5d.push(objj_msgSend(CPColor,"colorWithHexString:",_5c[i])); +} +return _5d; +} +}),new objj_method(sel_getUid("saveColorList"),function(_5e,_5f){ +with(_5e){ +var _60=[]; +for(var i=0;i<_swatches.length;i++){ +_60.push(objj_msgSend(objj_msgSend(objj_msgSend(_swatches[i],"subviews")[0],"backgroundColor"),"hexString")); +} +var _61=new Date(); +_61.setYear(2019); +objj_msgSend(_swatchCookie,"setValue:expires:domain:",JSON.stringify(_60),_61,nil); +} +}),new objj_method(sel_getUid("setColorPanel:"),function(_62,_63,_64){ +with(_62){ +_colorPanel=_64; +} +}),new objj_method(sel_getUid("colorPanel"),function(_65,_66){ +with(_65){ +return _colorPanel; +} +}),new objj_method(sel_getUid("colorAtIndex:"),function(_67,_68,_69){ +with(_67){ +return objj_msgSend(objj_msgSend(_swatches[_69],"subviews")[0],"backgroundColor"); +} +}),new objj_method(sel_getUid("setColor:atIndex:"),function(_6a,_6b,_6c,_6d){ +with(_6a){ +objj_msgSend(objj_msgSend(_swatches[_6d],"subviews")[0],"setBackgroundColor:",_6c); +objj_msgSend(_6a,"saveColorList"); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_6e,_6f,_70){ +with(_6e){ +var _71=objj_msgSend(_6e,"convertPoint:fromView:",objj_msgSend(_70,"locationInWindow"),nil),_72=objj_msgSend(_6e,"bounds"); +if(!CGRectContainsPoint(_72,_71)||_71.x>objj_msgSend(_6e,"bounds").size.width-1||_71.x<1){ +return NO; +} +objj_msgSend(_colorPanel,"setColor:updatePicker:",objj_msgSend(_6e,"colorAtIndex:",FLOOR(_71.x/13)),YES); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_73,_74,_75){ +with(_73){ +var _76=objj_msgSend(_73,"convertPoint:fromView:",objj_msgSend(_75,"locationInWindow"),nil); +if(_76.x>objj_msgSend(_73,"bounds").size.width-1||_76.x<1){ +return NO; +} +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",objj_msgSend(CPArray,"arrayWithObject:",CPColorDragType),_73); +var _77=_swatches[FLOOR(_76.x/13)]; +_dragColor=objj_msgSend(objj_msgSend(_77,"subviews")[0],"backgroundColor"); +var _78=CPRectCreateCopy(objj_msgSend(_77,"bounds")); +var _79=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_78),_7a=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(_78,1,1)); +objj_msgSend(_79,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_7a,"setBackgroundColor:",_dragColor); +objj_msgSend(_79,"addSubview:",_7a); +objj_msgSend(_73,"dragView:at:offset:event:pasteboard:source:slideBack:",_79,CPPointMake(_76.x-_78.size.width/2,_76.y-_78.size.height/2),CPPointMake(0,0),_75,nil,_73,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +if(_7e==CPColorDragType){ +objj_msgSend(_7d,"setData:forType:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_dragColor),_7e); +} +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(_7f,"convertPoint:fromView:",objj_msgSend(_81,"draggingLocation"),nil),_83=objj_msgSend(_81,"draggingPasteboard"),_84=nil; +if(!objj_msgSend(_83,"availableTypeFromArray:",[CPColorDragType])||_82.x>objj_msgSend(_7f,"bounds").size.width-1||_82.x<1){ +return NO; +} +objj_msgSend(_7f,"setColor:atIndex:",objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(_83,"dataForType:",CPColorDragType)),FLOOR(_82.x/13)); +} +})]); +var _8=objj_allocateClassPair(CPView,"_CPColorPanelPreview"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_colorPanel")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithFrame:"),function(_85,_86,_87){ +with(_85){ +_85=objj_msgSendSuper({receiver:_85,super_class:objj_getClass("_CPColorPanelPreview").super_class},"initWithFrame:",_87); +objj_msgSend(_85,"registerForDraggedTypes:",objj_msgSend(CPArray,"arrayWithObjects:",CPColorDragType)); +return _85; +} +}),new objj_method(sel_getUid("setColorPanel:"),function(_88,_89,_8a){ +with(_88){ +_colorPanel=_8a; +} +}),new objj_method(sel_getUid("colorPanel"),function(_8b,_8c){ +with(_8b){ +return _colorPanel; +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_8d,_8e,_8f){ +with(_8d){ +var _90=objj_msgSend(_8f,"draggingPasteboard"); +if(!objj_msgSend(_90,"availableTypeFromArray:",[CPColorDragType])){ +return NO; +} +var _91=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(_90,"dataForType:",CPColorDragType)); +objj_msgSend(_colorPanel,"setColor:updatePicker:",_91,YES); +} +}),new objj_method(sel_getUid("isOpaque"),function(_92,_93){ +with(_92){ +return YES; +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_94,_95,_96){ +with(_94){ +var _97=objj_msgSend(_94,"convertPoint:fromView:",objj_msgSend(_96,"locationInWindow"),nil); +objj_msgSend(objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),"declareTypes:owner:",[CPColorDragType],_94); +var _98=CPRectMake(0,0,15,15); +var _99=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_98),_9a=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(_98,1,1)); +objj_msgSend(_99,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_9a,"setBackgroundColor:",objj_msgSend(_94,"backgroundColor")); +objj_msgSend(_99,"addSubview:",_9a); +objj_msgSend(_94,"dragView:at:offset:event:pasteboard:source:slideBack:",_99,CPPointMake(_97.x-_98.size.width/2,_97.y-_98.size.height/2),CPPointMake(0,0),_96,nil,_94,YES); +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_9b,_9c,_9d,_9e){ +with(_9b){ +if(_9e==CPColorDragType){ +objj_msgSend(_9d,"setData:forType:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",objj_msgSend(_9b,"backgroundColor")),_9e); +} +} +})]); +objj_executeFile("CPColorPicker.j",YES); +objj_executeFile("CPSliderColorPicker.j",YES); +objj_msgSend(CPColorPanel,"provideColorPickerClass:",CPColorWheelColorPicker); +objj_msgSend(CPColorPanel,"provideColorPickerClass:",CPSliderColorPicker); +p;15;CPColorPicker.jt;10114;@STATIC;1.0;I;21;Foundation/CPObject.ji;14;CPColorPanel.jt;10049; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPColorPanel.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_panel"),new objj_ivar("_mask")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPColorPicker").super_class},"init"); +_panel=_6; +_mask=_5; +return _3; +} +}),new objj_method(sel_getUid("colorPanel"),function(_7,_8){ +with(_7){ +return _panel; +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_9,_a){ +with(_9){ +return nil; +} +}),new objj_method(sel_getUid("setMode:"),function(_b,_c,_d){ +with(_b){ +return; +} +}),new objj_method(sel_getUid("setColor:"),function(_e,_f,_10){ +with(_e){ +return; +} +})]); +var _1=objj_allocateClassPair(CPColorPicker,"CPColorWheelColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_pickerView"),new objj_ivar("_brightnessSlider"),new objj_ivar("_hueSaturationView"),new objj_ivar("_cachedColor")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_11,_12,_13,_14){ +with(_11){ +return objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPColorWheelColorPicker").super_class},"initWithPickerMask:colorPanel:",_13,_14); +} +}),new objj_method(sel_getUid("initView"),function(_15,_16){ +with(_15){ +aFrame=CPRectMake(0,0,CPColorPickerViewWidth,CPColorPickerViewHeight); +_pickerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",aFrame); +objj_msgSend(_pickerView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_brightnessSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CGRectMake(0,(aFrame.size.height-34),aFrame.size.width,15)); +objj_msgSend(_brightnessSlider,"setValue:forThemeAttribute:",15,"track-width"); +objj_msgSend(_brightnessSlider,"setValue:forThemeAttribute:",objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPColorPicker,"class")),"pathForResource:","brightness_bar.png"))),"track-color"); +objj_msgSend(_brightnessSlider,"setMinValue:",0); +objj_msgSend(_brightnessSlider,"setMaxValue:",100); +objj_msgSend(_brightnessSlider,"setFloatValue:",100); +objj_msgSend(_brightnessSlider,"setTarget:",_15); +objj_msgSend(_brightnessSlider,"setAction:",sel_getUid("brightnessSliderDidChange:")); +objj_msgSend(_brightnessSlider,"setAutoresizingMask:",CPViewWidthSizable|CPViewMinYMargin); +_hueSaturationView=objj_msgSend(objj_msgSend(__CPColorWheel,"alloc"),"initWithFrame:",CPRectMake(0,0,aFrame.size.width,aFrame.size.height-38)); +objj_msgSend(_hueSaturationView,"setDelegate:",_15); +objj_msgSend(_hueSaturationView,"setAutoresizingMask:",(CPViewWidthSizable|CPViewHeightSizable)); +objj_msgSend(_pickerView,"addSubview:",_hueSaturationView); +objj_msgSend(_pickerView,"addSubview:",_brightnessSlider); +} +}),new objj_method(sel_getUid("brightnessSliderDidChange:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"updateColor"); +} +}),new objj_method(sel_getUid("colorWheelDidChange:"),function(_1a,_1b,_1c){ +with(_1a){ +objj_msgSend(_1a,"updateColor"); +} +}),new objj_method(sel_getUid("updateColor"),function(_1d,_1e){ +with(_1d){ +var hue=objj_msgSend(_hueSaturationView,"angle"),_1f=objj_msgSend(_hueSaturationView,"distance"),_20=objj_msgSend(_brightnessSlider,"floatValue"); +objj_msgSend(_hueSaturationView,"setWheelBrightness:",_20/100); +objj_msgSend(_brightnessSlider,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithHue:saturation:brightness:",hue,_1f,100)); +var _21=objj_msgSend(_1d,"colorPanel"),_22=objj_msgSend(_21,"opacity"); +_cachedColor=objj_msgSend(CPColor,"colorWithHue:saturation:brightness:alpha:",hue,_1f,_20,_22); +objj_msgSend(objj_msgSend(_1d,"colorPanel"),"setColor:",_cachedColor); +} +}),new objj_method(sel_getUid("supportsMode:"),function(_23,_24,_25){ +with(_23){ +return (_25==CPWheelColorPickerMode)?YES:NO; +} +}),new objj_method(sel_getUid("currentMode"),function(_26,_27){ +with(_26){ +return CPWheelColorPickerMode; +} +}),new objj_method(sel_getUid("provideNewView:"),function(_28,_29,_2a){ +with(_28){ +if(_2a){ +objj_msgSend(_28,"initView"); +} +return _pickerView; +} +}),new objj_method(sel_getUid("setColor:"),function(_2b,_2c,_2d){ +with(_2b){ +if(objj_msgSend(_2d,"isEqual:",_cachedColor)){ +return; +} +var hsb=objj_msgSend(_2d,"hsbComponents"); +objj_msgSend(_hueSaturationView,"setPositionToColor:",_2d); +objj_msgSend(_brightnessSlider,"setFloatValue:",hsb[2]); +objj_msgSend(_hueSaturationView,"setWheelBrightness:",hsb[2]/100); +objj_msgSend(_brightnessSlider,"setBackgroundColor:",objj_msgSend(CPColor,"colorWithHue:saturation:brightness:",hsb[0],hsb[1],100)); +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_button.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("provideNewAlternateButtonImage"),function(_30,_31){ +with(_30){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_button_h.png"),CGSizeMake(32,32)); +} +})]); +var _1=objj_allocateClassPair(CPView,"__CPColorWheel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_wheelImage"),new objj_ivar("_blackWheelImage"),new objj_ivar("_crosshair"),new objj_ivar("_delegate"),new objj_ivar("_angle"),new objj_ivar("_distance"),new objj_ivar("_radius")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_32,_33,_34){ +with(_32){ +_32=objj_msgSendSuper({receiver:_32,super_class:objj_getClass("__CPColorWheel").super_class},"initWithFrame:",_34); +var _35=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel.png"); +_wheelImage=new Image(); +_wheelImage.src=_35; +_wheelImage.style.position="absolute"; +_35=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","wheel_black.png"); +_blackWheelImage=new Image(); +_blackWheelImage.src=_35; +_blackWheelImage.style.opacity="0"; +_blackWheelImage.style.filter="alpha(opacity=0)"; +_blackWheelImage.style.position="absolute"; +objj_msgSend(_32,"setWheelSize:",_34.size); +_crosshair=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CPRectMake(_radius-2,_radius-2,4,4)); +objj_msgSend(_crosshair,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +var _36=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectInset(objj_msgSend(_crosshair,"bounds"),1,1)); +objj_msgSend(_36,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_crosshair,"addSubview:",_36); +objj_msgSend(_32,"addSubview:",_crosshair); +return _32; +} +}),new objj_method(sel_getUid("setWheelBrightness:"),function(_37,_38,_39){ +with(_37){ +_blackWheelImage.style.opacity=1-_39; +_blackWheelImage.style.filter="alpha(opacity="+(1-_39)*100+")"; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSendSuper({receiver:_3a,super_class:objj_getClass("__CPColorWheel").super_class},"setFrameSize:",_3c); +objj_msgSend(_3a,"setWheelSize:",_3c); +} +}),new objj_method(sel_getUid("setWheelSize:"),function(_3d,_3e,_3f){ +with(_3d){ +var min=MIN(_3f.width,_3f.height); +_blackWheelImage.style.width=min; +_blackWheelImage.style.height=min; +_blackWheelImage.width=min; +_blackWheelImage.height=min; +_blackWheelImage.style.top=(_3f.height-min)/2+"px"; +_blackWheelImage.style.left=(_3f.width-min)/2+"px"; +_wheelImage.style.width=min; +_wheelImage.style.height=min; +_wheelImage.width=min; +_wheelImage.height=min; +_wheelImage.style.top=(_3f.height-min)/2+"px"; +_wheelImage.style.left=(_3f.width-min)/2+"px"; +_radius=min/2; +objj_msgSend(_3d,"setAngle:distance:",objj_msgSend(_3d,"degreesToRadians:",_angle),(_distance/100)*_radius); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_40,_41,_42){ +with(_40){ +_delegate=_42; +} +}),new objj_method(sel_getUid("delegate"),function(_43,_44){ +with(_43){ +return _delegate; +} +}),new objj_method(sel_getUid("angle"),function(_45,_46){ +with(_45){ +return _angle; +} +}),new objj_method(sel_getUid("distance"),function(_47,_48){ +with(_47){ +return _distance; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_49,_4a,_4b){ +with(_49){ +objj_msgSend(_49,"reposition:",_4b); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"reposition:",_4e); +} +}),new objj_method(sel_getUid("reposition:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSend(_4f,"bounds"),_53=objj_msgSend(_4f,"convertPoint:fromView:",objj_msgSend(_51,"locationInWindow"),nil); +var _54=CGRectGetMidX(_52); +var _55=CGRectGetMidY(_52); +var _56=MIN(SQRT((_53.x-_54)*(_53.x-_54)+(_53.y-_55)*(_53.y-_55)),_radius); +var _57=ATAN2(_53.y-_55,_53.x-_54); +objj_msgSend(_4f,"setAngle:distance:",_57,_56); +objj_msgSend(_delegate,"colorWheelDidChange:",_4f); +} +}),new objj_method(sel_getUid("setAngle:distance:"),function(_58,_59,_5a,_5b){ +with(_58){ +var _5c=objj_msgSend(_58,"bounds"); +var _5d=CGRectGetMidX(_5c); +var _5e=CGRectGetMidY(_5c); +_angle=objj_msgSend(_58,"radiansToDegrees:",_5a); +_distance=(_5b/_radius)*100; +objj_msgSend(_crosshair,"setFrameOrigin:",CPPointMake(COS(_5a)*_5b+_5d-2,SIN(_5a)*_5b+_5e-2)); +} +}),new objj_method(sel_getUid("setPositionToColor:"),function(_5f,_60,_61){ +with(_5f){ +var hsb=objj_msgSend(_61,"hsbComponents"),_62=objj_msgSend(_5f,"bounds"); +var _63=objj_msgSend(_5f,"degreesToRadians:",hsb[0]),_64=(hsb[1]/100)*_radius; +objj_msgSend(_5f,"setAngle:distance:",_63,_64); +} +}),new objj_method(sel_getUid("radiansToDegrees:"),function(_65,_66,_67){ +with(_65){ +return ((-_67/PI)*180+360)%360; +} +}),new objj_method(sel_getUid("degreesToRadians:"),function(_68,_69,_6a){ +with(_68){ +return -(((_6a-360)/180)*PI); +} +})]); +p;13;CPColorWell.jt;6201;@STATIC;1.0;I;21;Foundation/CPString.ji;8;CPView.ji;9;CPColor.ji;14;CPColorPanel.jt;6112; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPColorPanel.j",YES); +var _1="_CPColorWellDidBecomeExclusiveNotification"; +var _2=objj_allocateClassPair(CPControl,"CPColorWell"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_active"),new objj_ivar("_bordered"),new objj_ivar("_color"),new objj_ivar("_wellView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPColorWell").super_class},"initWithFrame:",_6); +if(_4){ +_active=NO; +_bordered=YES; +_color=objj_msgSend(CPColor,"whiteColor"); +objj_msgSend(_4,"drawBezelWithHighlight:",NO); +objj_msgSend(_4,"drawWellInside:",CGRectInset(objj_msgSend(_4,"bounds"),3,3)); +objj_msgSend(_4,"_registerForNotifications"); +} +return _4; +} +}),new objj_method(sel_getUid("_registerForNotifications"),function(_7,_8){ +with(_7){ +var _9=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_9,"addObserver:selector:name:object:",_7,sel_getUid("colorWellDidBecomeExclusive:"),_1,nil); +objj_msgSend(_9,"addObserver:selector:name:object:",_7,sel_getUid("colorPanelWillClose:"),CPWindowWillCloseNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("isBordered"),function(_a,_b){ +with(_a){ +return _bordered; +} +}),new objj_method(sel_getUid("setBordered:"),function(_c,_d,_e){ +with(_c){ +if(_bordered==_e){ +return; +} +_bordered=_e; +objj_msgSend(_c,"drawWellInside:",CGRectInset(objj_msgSend(_c,"bounds"),3,3)); +} +}),new objj_method(sel_getUid("color"),function(_f,_10){ +with(_f){ +return _color; +} +}),new objj_method(sel_getUid("setColor:"),function(_11,_12,_13){ +with(_11){ +if(_color==_13){ +return; +} +_color=_13; +objj_msgSend(_11,"drawWellInside:",CGRectInset(objj_msgSend(_11,"bounds"),3,3)); +} +}),new objj_method(sel_getUid("takeColorFrom:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_14,"setColor:",objj_msgSend(_16,"color")); +} +}),new objj_method(sel_getUid("activate:"),function(_17,_18,_19){ +with(_17){ +if(_19){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",_1,_17); +} +if(objj_msgSend(_17,"isActive")){ +return; +} +_active=YES; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_17,sel_getUid("colorPanelDidChangeColor:"),CPColorPanelColorDidChangeNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("deactivate"),function(_1a,_1b){ +with(_1a){ +if(!objj_msgSend(_1a,"isActive")){ +return; +} +_active=NO; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_1a,CPColorPanelColorDidChangeNotification,objj_msgSend(CPColorPanel,"sharedColorPanel")); +} +}),new objj_method(sel_getUid("isActive"),function(_1c,_1d){ +with(_1c){ +return _active; +} +}),new objj_method(sel_getUid("drawBezelWithHighlight:"),function(_1e,_1f,_20){ +with(_1e){ +} +}),new objj_method(sel_getUid("drawWellInside:"),function(_21,_22,_23){ +with(_21){ +if(!_wellView){ +_wellView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_23); +objj_msgSend(_wellView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_21,"addSubview:",_wellView); +}else{ +objj_msgSend(_wellView,"setFrame:",_23); +} +objj_msgSend(_wellView,"setBackgroundColor:",_color); +} +}),new objj_method(sel_getUid("colorPanelDidChangeColor:"),function(_24,_25,_26){ +with(_24){ +objj_msgSend(_24,"takeColorFrom:",objj_msgSend(_26,"object")); +objj_msgSend(_24,"sendAction:to:",objj_msgSend(_24,"action"),objj_msgSend(_24,"target")); +} +}),new objj_method(sel_getUid("colorWellDidBecomeExclusive:"),function(_27,_28,_29){ +with(_27){ +if(_27!=objj_msgSend(_29,"object")){ +objj_msgSend(_27,"deactivate"); +} +} +}),new objj_method(sel_getUid("colorPanelWillClose:"),function(_2a,_2b,_2c){ +with(_2a){ +objj_msgSend(_2a,"deactivate"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_2d,_2e,_2f){ +with(_2d){ +if(!objj_msgSend(_2d,"isEnabled")){ +return; +} +objj_msgSend(_2d,"drawBezelWithHighlight:",YES); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_30,_31,_32){ +with(_30){ +if(!objj_msgSend(_30,"isEnabled")){ +return; +} +objj_msgSend(_30,"drawBezelWithHighlight:",CGRectContainsPoint(objj_msgSend(_30,"bounds"),objj_msgSend(_30,"convertPoint:fromView:",objj_msgSend(_32,"locationInWindow"),nil))); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_33,_34,_35){ +with(_33){ +objj_msgSend(_33,"drawBezelWithHighlight:",NO); +if(!CGRectContainsPoint(objj_msgSend(_33,"bounds"),objj_msgSend(_33,"convertPoint:fromView:",objj_msgSend(_35,"locationInWindow"),nil))||!objj_msgSend(_33,"isEnabled")){ +return; +} +objj_msgSend(_33,"activate:",YES); +var _36=objj_msgSend(CPColorPanel,"sharedColorPanel"); +objj_msgSend(_36,"setColor:",_color); +objj_msgSend(_36,"orderFront:",_33); +} +})]); +var _37="CPColorWellColorKey",_38="CPColorWellBorderedKey"; +var _2=objj_getClass("CPColorWell"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPColorWell\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_39,_3a,_3b){ +with(_39){ +_39=objj_msgSendSuper({receiver:_39,super_class:objj_getClass("CPColorWell").super_class},"initWithCoder:",_3b); +if(_39){ +_active=NO; +_bordered=objj_msgSend(_3b,"decodeBoolForKey:",_38); +_color=objj_msgSend(_3b,"decodeObjectForKey:",_37); +objj_msgSend(_39,"drawBezelWithHighlight:",NO); +objj_msgSend(_39,"drawWellInside:",CGRectInset(objj_msgSend(_39,"bounds"),3,3)); +objj_msgSend(_39,"_registerForNotifications"); +} +return _39; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=_subviews; +_subviews=objj_msgSend(_subviews,"copy"); +objj_msgSend(_subviews,"removeObjectIdenticalTo:",_wellView); +objj_msgSendSuper({receiver:_3c,super_class:objj_getClass("CPColorWell").super_class},"encodeWithCoder:",_3e); +_subviews=_3f; +objj_msgSend(_3e,"encodeObject:forKey:",_color,_37); +objj_msgSend(_3e,"encodeObject:forKey:",_bordered,_38); +} +})]); +p;17;CPCompatibility.jt;3813;@STATIC;1.0;i;9;CPEvent.ji;12;CPPlatform.jt;3764; +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPPlatform.j",YES); +CPUnknownBrowserEngine=0; +CPGeckoBrowserEngine=1; +CPInternetExplorerBrowserEngine=2; +CPKHTMLBrowserEngine=3; +CPOperaBrowserEngine=4; +CPWebKitBrowserEngine=5; +CPMacOperatingSystem=0; +CPWindowsOperatingSystem=1; +CPOtherOperatingSystem=2; +CPCSSRGBAFeature=1<<5; +CPHTMLCanvasFeature=1<<6; +CPHTMLContentEditableFeature=1<<7; +CPHTMLDragAndDropFeature=1<<8; +CPJavascriptInnerTextFeature=1<<9; +CPJavascriptTextContentFeature=1<<10; +CPJavascriptClipboardEventsFeature=1<<11; +CPJavascriptClipboardAccessFeature=1<<12; +CPJavaScriptCanvasDrawFeature=1<<13; +CPJavaScriptCanvasTransformFeature=1<<14; +CPVMLFeature=1<<15; +CPJavascriptRemedialKeySupport=1<<16; +CPJavaScriptShadowFeature=1<<20; +CPJavaScriptNegativeMouseWheelValues=1<<22; +CPJavaScriptMouseWheelValues_8_15=1<<23; +CPOpacityRequiresFilterFeature=1<<24; +CPInputTypeCanBeChangedFeature=1<<25; +CPHTML5DragAndDropSourceYOffBy1=1<<26; +var _1="",_2=CPUnknownBrowserEngine,_3=0; +_3|=CPInputTypeCanBeChangedFeature; +if(typeof window!=="undefined"&&typeof window.navigator!=="undefined"){ +_1=window.navigator.userAgent; +} +if(window.opera){ +_2=CPOperaBrowserEngine; +_3|=CPJavaScriptCanvasDrawFeature; +}else{ +if(window.attachEvent){ +_2=CPInternetExplorerBrowserEngine; +_3|=CPVMLFeature; +_3|=CPJavascriptRemedialKeySupport; +_3|=CPJavaScriptShadowFeature; +_3|=CPOpacityRequiresFilterFeature; +_3&=~CPInputTypeCanBeChangedFeature; +}else{ +if(_1.indexOf("AppleWebKit/")!=-1){ +_2=CPWebKitBrowserEngine; +_3|=CPCSSRGBAFeature; +_3|=CPHTMLContentEditableFeature; +if(_1.indexOf("Chrome")===-1){ +_3|=CPHTMLDragAndDropFeature; +} +_3|=CPJavascriptClipboardEventsFeature; +_3|=CPJavascriptClipboardAccessFeature; +_3|=CPJavaScriptShadowFeature; +var _4=_1.indexOf("AppleWebKit/")+"AppleWebKit/".length,_5=_1.indexOf(" ",_4),_6=_1.substring(_4,_5),_7=_6.indexOf("."),_8=parseInt(_6.substring(0,_7)),_9=parseInt(_6.substr(_7+1)); +if((_1.indexOf("Safari")!==CPNotFound&&(_8>525||(_8===525&&_9>14)))||_1.indexOf("Chrome")!==CPNotFound){ +_3|=CPJavascriptRemedialKeySupport; +} +if(!objj_msgSend(CPPlatform,"isBrowser")){ +_3|=CPJavascriptRemedialKeySupport; +} +if(_8<532||(_8===532&&_9<6)){ +_3|=CPHTML5DragAndDropSourceYOffBy1; +} +}else{ +if(_1.indexOf("KHTML")!=-1){ +_2=CPKHTMLBrowserEngine; +}else{ +if(_1.indexOf("Gecko")!==-1){ +_2=CPGeckoBrowserEngine; +_3|=CPJavaScriptCanvasDrawFeature; +var _a=_1.indexOf("Firefox"),_b=(_a===-1)?2:parseFloat(_1.substring(_a+"Firefox".length+1)); +if(_b>=3){ +_3|=CPCSSRGBAFeature; +} +if(_b<3){ +_3|=CPJavaScriptMouseWheelValues_8_15; +} +} +} +} +} +} +if(typeof document!="undefined"){ +var _c=document.createElement("canvas"); +if(_c&&_c.getContext){ +_3|=CPHTMLCanvasFeature; +var _d=document.createElement("canvas").getContext("2d"); +if(_d&&_d.setTransform&&_d.transform){ +_3|=CPJavaScriptCanvasTransformFeature; +} +} +var _e=document.createElement("div"); +if(_e.innerText!=undefined){ +_3|=CPJavascriptInnerTextFeature; +}else{ +if(_e.textContent!=undefined){ +_3|=CPJavascriptTextContentFeature; +} +} +} +CPFeatureIsCompatible=function(_f){ +return _3&_f; +}; +CPBrowserIsEngine=function(_10){ +return _2===_10; +}; +CPBrowserIsOperatingSystem=function(_11){ +return OPERATING_SYSTEM===_11; +}; +OPERATING_SYSTEM=CPOtherOperatingSystem; +if(_1.indexOf("Mac")!==-1){ +OPERATING_SYSTEM=CPMacOperatingSystem; +CPPlatformActionKeyMask=CPCommandKeyMask; +CPUndoKeyEquivalent="z"; +CPRedoKeyEquivalent="Z"; +CPUndoKeyEquivalentModifierMask=CPCommandKeyMask; +CPRedoKeyEquivalentModifierMask=CPCommandKeyMask; +}else{ +if(_1.indexOf("Windows")!==-1){ +OPERATING_SYSTEM=CPWindowsOperatingSystem; +} +CPPlatformActionKeyMask=CPControlKeyMask; +CPUndoKeyEquivalent="z"; +CPRedoKeyEquivalent="y"; +CPUndoKeyEquivalentModifierMask=CPControlKeyMask; +CPRedoKeyEquivalentModifierMask=CPControlKeyMask; +} +p;11;CPControl.jt;18804;@STATIC;1.0;i;8;CPFont.ji;10;CPShadow.ji;8;CPView.ji;19;CPKeyValueBinding.jt;18721; +objj_executeFile("CPFont.j",YES); +objj_executeFile("CPShadow.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("CPKeyValueBinding.j",YES); +CPLeftTextAlignment=0; +CPRightTextAlignment=1; +CPCenterTextAlignment=2; +CPJustifiedTextAlignment=3; +CPNaturalTextAlignment=4; +CPRegularControlSize=0; +CPSmallControlSize=1; +CPMiniControlSize=2; +CPLineBreakByWordWrapping=0; +CPLineBreakByCharWrapping=1; +CPLineBreakByClipping=2; +CPLineBreakByTruncatingHead=3; +CPLineBreakByTruncatingTail=4; +CPLineBreakByTruncatingMiddle=5; +CPTopVerticalTextAlignment=1,CPCenterVerticalTextAlignment=2,CPBottomVerticalTextAlignment=3; +CPScaleProportionally=0; +CPScaleToFit=1; +CPScaleNone=2; +CPNoImage=0; +CPImageOnly=1; +CPImageLeft=2; +CPImageRight=3; +CPImageBelow=4; +CPImageAbove=5; +CPImageOverlaps=6; +CPOnState=1; +CPOffState=0; +CPMixedState=-1; +CPControlNormalBackgroundColor="CPControlNormalBackgroundColor"; +CPControlSelectedBackgroundColor="CPControlSelectedBackgroundColor"; +CPControlHighlightedBackgroundColor="CPControlHighlightedBackgroundColor"; +CPControlDisabledBackgroundColor="CPControlDisabledBackgroundColor"; +CPControlTextDidBeginEditingNotification="CPControlTextDidBeginEditingNotification"; +CPControlTextDidChangeNotification="CPControlTextDidChangeNotification"; +CPControlTextDidEndEditingNotification="CPControlTextDidEndEditingNotification"; +var _1=objj_msgSend(CPColor,"blackColor"); +var _2=objj_allocateClassPair(CPView,"CPControl"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_value"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_sendActionOn"),new objj_ivar("_sendsActionOnEndEditing"),new objj_ivar("_continuousTracking"),new objj_ivar("_trackingWasWithinFrame"),new objj_ivar("_trackingMouseDownFlags"),new objj_ivar("_previousTrackingLocation"),new objj_ivar("_toolTip")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("sendsActionOnEndEditing"),function(_4,_5){ +with(_4){ +return _sendsActionOnEndEditing; +} +}),new objj_method(sel_getUid("setSendsActionOnEndEditing:"),function(_6,_7,_8){ +with(_6){ +_sendsActionOnEndEditing=_8; +} +}),new objj_method(sel_getUid("_reverseSetBinding"),function(_9,_a){ +with(_9){ +var _b=objj_msgSend(CPKeyValueBinding,"getBinding:forObject:",CPValueBinding,_9); +objj_msgSend(_b,"reverseSetValueFor:","objectValue"); +} +}),new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(_c,_d,_e){ +with(_c){ +if(_e==="value"){ +return "objectValue"; +} +return objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPControl").super_class},"_replacementKeyPathForBinding:",_e); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f,_10,_11){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPControl").super_class},"initWithFrame:",_11); +if(_f){ +_sendActionOn=CPLeftMouseUpMask; +_trackingMouseDownFlags=0; +} +return _f; +} +}),new objj_method(sel_getUid("setAction:"),function(_12,_13,_14){ +with(_12){ +_action=_14; +} +}),new objj_method(sel_getUid("action"),function(_15,_16){ +with(_15){ +return _action; +} +}),new objj_method(sel_getUid("setTarget:"),function(_17,_18,_19){ +with(_17){ +_target=_19; +} +}),new objj_method(sel_getUid("target"),function(_1a,_1b){ +with(_1a){ +return _target; +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_1c,_1d,_1e,_1f){ +with(_1c){ +objj_msgSend(_1c,"_reverseSetBinding"); +objj_msgSend(CPApp,"sendAction:to:from:",_1e,_1f,_1c); +} +}),new objj_method(sel_getUid("sendActionOn:"),function(_20,_21,_22){ +with(_20){ +var _23=_sendActionOn; +_sendActionOn=_22; +return _23; +} +}),new objj_method(sel_getUid("isContinuous"),function(_24,_25){ +with(_24){ +return (_sendActionOn&CPPeriodicMask)!==0; +} +}),new objj_method(sel_getUid("setContinuous:"),function(_26,_27,_28){ +with(_26){ +if(_28){ +_sendActionOn|=CPPeriodicMask; +}else{ +_sendActionOn&=~CPPeriodicMask; +} +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(_29,_2a){ +with(_29){ +return NO; +} +}),new objj_method(sel_getUid("trackMouse:"),function(_2b,_2c,_2d){ +with(_2b){ +var _2e=objj_msgSend(_2d,"type"),_2f=objj_msgSend(_2b,"convertPoint:fromView:",objj_msgSend(_2d,"locationInWindow"),nil),_30=objj_msgSend(_2b,"tracksMouseOutsideOfFrame")||CGRectContainsPoint(objj_msgSend(_2b,"bounds"),_2f); +if(_2e===CPLeftMouseUp){ +objj_msgSend(_2b,"stopTracking:at:mouseIsUp:",_previousTrackingLocation,_2f,YES); +_trackingMouseDownFlags=0; +}else{ +if(_2e===CPLeftMouseDown){ +_trackingMouseDownFlags=objj_msgSend(_2d,"modifierFlags"); +_continuousTracking=objj_msgSend(_2b,"startTrackingAt:",_2f); +}else{ +if(_2e===CPLeftMouseDragged){ +if(_30){ +if(!_trackingWasWithinFrame){ +_continuousTracking=objj_msgSend(_2b,"startTrackingAt:",_2f); +}else{ +if(_continuousTracking){ +_continuousTracking=objj_msgSend(_2b,"continueTracking:at:",_previousTrackingLocation,_2f); +} +} +}else{ +objj_msgSend(_2b,"stopTracking:at:mouseIsUp:",_previousTrackingLocation,_2f,NO); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_2b,sel_getUid("trackMouse:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +if((_sendActionOn&(1<<_2e))&&_30){ +objj_msgSend(_2b,"sendAction:to:",_action,_target); +} +_trackingWasWithinFrame=_30; +_previousTrackingLocation=_2f; +} +}),new objj_method(sel_getUid("setState:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("nextState"),function(_34,_35){ +with(_34){ +return 0; +} +}),new objj_method(sel_getUid("performClick:"),function(_36,_37,_38){ +with(_36){ +if(!objj_msgSend(_36,"isEnabled")){ +return; +} +objj_msgSend(_36,"highlight:",YES); +objj_msgSend(_36,"setState:",objj_msgSend(_36,"nextState")); +try{ +objj_msgSend(_36,"sendAction:to:",objj_msgSend(_36,"action"),objj_msgSend(_36,"target")); +} +catch(e){ +throw e; +} +finally{ +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0.1,_36,sel_getUid("unhighlightButtonTimerDidFinish:"),nil,NO); +} +} +}),new objj_method(sel_getUid("unhighlightButtonTimerDidFinish:"),function(_39,_3a,_3b){ +with(_39){ +objj_msgSend(_39,"highlight:",NO); +} +}),new objj_method(sel_getUid("mouseDownFlags"),function(_3c,_3d){ +with(_3c){ +return _trackingMouseDownFlags; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(_3e,"highlight:",YES); +return (_sendActionOn&CPPeriodicMask)||(_sendActionOn&CPLeftMouseDraggedMask); +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(_41,_42,_43,_44){ +with(_41){ +return (_sendActionOn&CPPeriodicMask)||(_sendActionOn&CPLeftMouseDraggedMask); +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_45,_46,_47,_48,_49){ +with(_45){ +objj_msgSend(_45,"highlight:",NO); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_4a,_4b,_4c){ +with(_4a){ +if(!objj_msgSend(_4a,"isEnabled")){ +return; +} +objj_msgSend(_4a,"trackMouse:",_4c); +} +}),new objj_method(sel_getUid("objectValue"),function(_4d,_4e){ +with(_4d){ +return _value; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_4f,_50,_51){ +with(_4f){ +_value=_51; +objj_msgSend(_4f,"setNeedsLayout"); +objj_msgSend(_4f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("floatValue"),function(_52,_53){ +with(_52){ +var _54=parseFloat(_value,10); +return isNaN(_54)?0:_54; +} +}),new objj_method(sel_getUid("setFloatValue:"),function(_55,_56,_57){ +with(_55){ +objj_msgSend(_55,"setObjectValue:",_57); +} +}),new objj_method(sel_getUid("doubleValue"),function(_58,_59){ +with(_58){ +var _5a=parseFloat(_value,10); +return isNaN(_5a)?0:_5a; +} +}),new objj_method(sel_getUid("setDoubleValue:"),function(_5b,_5c,_5d){ +with(_5b){ +objj_msgSend(_5b,"setObjectValue:",_5d); +} +}),new objj_method(sel_getUid("intValue"),function(_5e,_5f){ +with(_5e){ +var _60=parseInt(_value,10); +return isNaN(_60)?0:_60; +} +}),new objj_method(sel_getUid("setIntValue:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_61,"setObjectValue:",_63); +} +}),new objj_method(sel_getUid("integerValue"),function(_64,_65){ +with(_64){ +var _66=parseInt(_value,10); +return isNaN(_66)?0:_66; +} +}),new objj_method(sel_getUid("setIntegerValue:"),function(_67,_68,_69){ +with(_67){ +objj_msgSend(_67,"setObjectValue:",_69); +} +}),new objj_method(sel_getUid("stringValue"),function(_6a,_6b){ +with(_6a){ +return (_value===undefined||_value===nil)?"":String(_value); +} +}),new objj_method(sel_getUid("setStringValue:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(_6c,"setObjectValue:",_6e); +} +}),new objj_method(sel_getUid("takeDoubleValueFrom:"),function(_6f,_70,_71){ +with(_6f){ +if(objj_msgSend(_71,"respondsToSelector:",sel_getUid("doubleValue"))){ +objj_msgSend(_6f,"setDoubleValue:",objj_msgSend(_71,"doubleValue")); +} +} +}),new objj_method(sel_getUid("takeFloatValueFrom:"),function(_72,_73,_74){ +with(_72){ +if(objj_msgSend(_74,"respondsToSelector:",sel_getUid("floatValue"))){ +objj_msgSend(_72,"setFloatValue:",objj_msgSend(_74,"floatValue")); +} +} +}),new objj_method(sel_getUid("takeIntegerValueFrom:"),function(_75,_76,_77){ +with(_75){ +if(objj_msgSend(_77,"respondsToSelector:",sel_getUid("integerValue"))){ +objj_msgSend(_75,"setIntegerValue:",objj_msgSend(_77,"integerValue")); +} +} +}),new objj_method(sel_getUid("takeIntValueFrom:"),function(_78,_79,_7a){ +with(_78){ +if(objj_msgSend(_7a,"respondsToSelector:",sel_getUid("intValue"))){ +objj_msgSend(_78,"setIntValue:",objj_msgSend(_7a,"intValue")); +} +} +}),new objj_method(sel_getUid("takeObjectValueFrom:"),function(_7b,_7c,_7d){ +with(_7b){ +if(objj_msgSend(_7d,"respondsToSelector:",sel_getUid("objectValue"))){ +objj_msgSend(_7b,"setObjectValue:",objj_msgSend(_7d,"objectValue")); +} +} +}),new objj_method(sel_getUid("takeStringValueFrom:"),function(_7e,_7f,_80){ +with(_7e){ +if(objj_msgSend(_80,"respondsToSelector:",sel_getUid("stringValue"))){ +objj_msgSend(_7e,"setStringValue:",objj_msgSend(_80,"stringValue")); +} +} +}),new objj_method(sel_getUid("textDidBeginEditing:"),function(_81,_82,_83){ +with(_81){ +if(objj_msgSend(_83,"object")!=_81){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidBeginEditingNotification,_81,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_83,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("textDidChange:"),function(_84,_85,_86){ +with(_84){ +if(objj_msgSend(_86,"object")!=_84){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidChangeNotification,_84,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_86,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("textDidEndEditing:"),function(_87,_88,_89){ +with(_87){ +if(objj_msgSend(_89,"object")!=_87){ +return; +} +objj_msgSend(_87,"_reverseSetBinding"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPControlTextDidEndEditingNotification,_87,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_89,"object"),"CPFieldEditor")); +} +}),new objj_method(sel_getUid("setAlignment:"),function(_8a,_8b,_8c){ +with(_8a){ +objj_msgSend(_8a,"setValue:forThemeAttribute:",_8c,"alignment"); +} +}),new objj_method(sel_getUid("alignment"),function(_8d,_8e){ +with(_8d){ +return objj_msgSend(_8d,"valueForThemeAttribute:","alignment"); +} +}),new objj_method(sel_getUid("setVerticalAlignment:"),function(_8f,_90,_91){ +with(_8f){ +objj_msgSend(_8f,"setValue:forThemeAttribute:",_91,"vertical-alignment"); +} +}),new objj_method(sel_getUid("verticalAlignment"),function(_92,_93){ +with(_92){ +return objj_msgSend(_92,"valueForThemeAttribute:","vertical-alignment"); +} +}),new objj_method(sel_getUid("setLineBreakMode:"),function(_94,_95,_96){ +with(_94){ +objj_msgSend(_94,"setValue:forThemeAttribute:",_96,"line-break-mode"); +} +}),new objj_method(sel_getUid("lineBreakMode"),function(_97,_98){ +with(_97){ +return objj_msgSend(_97,"valueForThemeAttribute:","line-break-mode"); +} +}),new objj_method(sel_getUid("setTextColor:"),function(_99,_9a,_9b){ +with(_99){ +objj_msgSend(_99,"setValue:forThemeAttribute:",_9b,"text-color"); +} +}),new objj_method(sel_getUid("textColor"),function(_9c,_9d){ +with(_9c){ +return objj_msgSend(_9c,"valueForThemeAttribute:","text-color"); +} +}),new objj_method(sel_getUid("setFont:"),function(_9e,_9f,_a0){ +with(_9e){ +objj_msgSend(_9e,"setValue:forThemeAttribute:",_a0,"font"); +} +}),new objj_method(sel_getUid("font"),function(_a1,_a2){ +with(_a1){ +return objj_msgSend(_a1,"valueForThemeAttribute:","font"); +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_a3,_a4,_a5){ +with(_a3){ +objj_msgSend(_a3,"setValue:forThemeAttribute:",_a5,"text-shadow-color"); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_a6,_a7){ +with(_a6){ +return objj_msgSend(_a6,"valueForThemeAttribute:","text-shadow-color"); +} +}),new objj_method(sel_getUid("setTextShadowOffset:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"setValue:forThemeAttribute:",_aa,"text-shadow-offset"); +} +}),new objj_method(sel_getUid("textShadowOffset"),function(_ab,_ac){ +with(_ab){ +return objj_msgSend(_ab,"valueForThemeAttribute:","text-shadow-offset"); +} +}),new objj_method(sel_getUid("setImagePosition:"),function(_ad,_ae,_af){ +with(_ad){ +objj_msgSend(_ad,"setValue:forThemeAttribute:",_af,"image-position"); +} +}),new objj_method(sel_getUid("imagePosition"),function(_b0,_b1){ +with(_b0){ +return objj_msgSend(_b0,"valueForThemeAttribute:","image-position"); +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_b2,_b3,_b4){ +with(_b2){ +objj_msgSend(_b2,"setValue:forThemeAttribute:",_b4,"image-scaling"); +} +}),new objj_method(sel_getUid("imageScaling"),function(_b5,_b6){ +with(_b5){ +return objj_msgSend(_b5,"valueForThemeAttribute:","image-scaling"); +} +}),new objj_method(sel_getUid("setEnabled:"),function(_b7,_b8,_b9){ +with(_b7){ +if(_b9){ +objj_msgSend(_b7,"unsetThemeState:",CPThemeStateDisabled); +}else{ +objj_msgSend(_b7,"setThemeState:",CPThemeStateDisabled); +} +} +}),new objj_method(sel_getUid("isEnabled"),function(_ba,_bb){ +with(_ba){ +return !objj_msgSend(_ba,"hasThemeState:",CPThemeStateDisabled); +} +}),new objj_method(sel_getUid("highlight:"),function(_bc,_bd,_be){ +with(_bc){ +objj_msgSend(_bc,"setHighlighted:",_be); +} +}),new objj_method(sel_getUid("setHighlighted:"),function(_bf,_c0,_c1){ +with(_bf){ +if(_c1){ +objj_msgSend(_bf,"setThemeState:",CPThemeStateHighlighted); +}else{ +objj_msgSend(_bf,"unsetThemeState:",CPThemeStateHighlighted); +} +} +}),new objj_method(sel_getUid("isHighlighted"),function(_c2,_c3){ +with(_c2){ +return objj_msgSend(_c2,"hasThemeState:",CPThemeStateHighlighted); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("themeAttributes"),function(_c4,_c5){ +with(_c4){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CPLeftTextAlignment,CPTopVerticalTextAlignment,CPLineBreakByClipping,objj_msgSend(CPColor,"blackColor"),objj_msgSend(CPFont,"systemFontOfSize:",12),objj_msgSend(CPNull,"null"),{width:0,height:0},CPImageLeft,CPScaleToFit,{width:0,height:0},{width:-1,height:-1}],["alignment","vertical-alignment","line-break-mode","text-color","font","text-shadow-color","text-shadow-offset","image-position","image-scaling","min-size","max-size"]); +} +}),new objj_method(sel_getUid("initialize"),function(_c6,_c7){ +with(_c6){ +if(_c6===objj_msgSend(CPControl,"class")){ +objj_msgSend(_c6,"exposeBinding:","value"); +objj_msgSend(_c6,"exposeBinding:","objectValue"); +objj_msgSend(_c6,"exposeBinding:","stringValue"); +objj_msgSend(_c6,"exposeBinding:","integerValue"); +objj_msgSend(_c6,"exposeBinding:","intValue"); +objj_msgSend(_c6,"exposeBinding:","doubleValue"); +objj_msgSend(_c6,"exposeBinding:","floatValue"); +objj_msgSend(_c6,"exposeBinding:","enabled"); +} +} +})]); +var _c8="CPControlValueKey",_c9="CPControlControlStateKey",_ca="CPControlIsEnabledKey",_cb="CPControlTargetKey",_cc="CPControlActionKey",_cd="CPControlSendActionOnKey",_ce="CPControlSendsActionOnEndEditingKey"; +var _cf="CPImageViewImageKey"; +var _2=objj_getClass("CPControl"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPControl\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_d0,_d1,_d2){ +with(_d0){ +_d0=objj_msgSendSuper({receiver:_d0,super_class:objj_getClass("CPControl").super_class},"initWithCoder:",_d2); +if(_d0){ +objj_msgSend(_d0,"setObjectValue:",objj_msgSend(_d2,"decodeObjectForKey:",_c8)); +objj_msgSend(_d0,"setTarget:",objj_msgSend(_d2,"decodeObjectForKey:",_cb)); +objj_msgSend(_d0,"setAction:",objj_msgSend(_d2,"decodeObjectForKey:",_cc)); +objj_msgSend(_d0,"sendActionOn:",objj_msgSend(_d2,"decodeIntForKey:",_cd)); +objj_msgSend(_d0,"setSendsActionOnEndEditing:",objj_msgSend(_d2,"decodeBoolForKey:",_ce)); +} +return _d0; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_d3,_d4,_d5){ +with(_d3){ +objj_msgSendSuper({receiver:_d3,super_class:objj_getClass("CPControl").super_class},"encodeWithCoder:",_d5); +if(_sendsActionOnEndEditing){ +objj_msgSend(_d5,"encodeBool:forKey:",_sendsActionOnEndEditing,_ce); +} +if(_value!==nil){ +objj_msgSend(_d5,"encodeObject:forKey:",_value,_c8); +} +if(_target!==nil){ +objj_msgSend(_d5,"encodeConditionalObject:forKey:",_target,_cb); +} +if(_action!==NULL){ +objj_msgSend(_d5,"encodeObject:forKey:",_action,_cc); +} +objj_msgSend(_d5,"encodeInt:forKey:",_sendActionOn,_cd); +} +})]); +var _d6=[],_d7={},_d8={}; +_d6[CPRegularControlSize]="Regular"; +_d6[CPSmallControlSize]="Small"; +_d6[CPMiniControlSize]="Mini"; +_CPControlIdentifierForControlSize=function(_d9){ +return _d6[_d9]; +}; +_CPControlColorWithPatternImage=function(_da,_db){ +var _dc=1,_dd=arguments.length,_de=""; +for(;_dc<_dd;++_dc){ +_de+=arguments[_dc]; +} +var _df=_d7[_de]; +if(!_df){ +var _e0=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPControl,"class")); +_df=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e0,"pathForResource:",_db+"/"+_de+".png"),_da[_de])); +_d7[_de]=_df; +} +return _df; +}; +_CPControlThreePartImagePattern=function(_e1,_e2,_e3){ +var _e4=2,_e5=arguments.length,_e6=""; +for(;_e4<_e5;++_e4){ +_e6+=arguments[_e4]; +} +var _e7=_d8[_e6]; +if(!_e7){ +var _e8=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPControl,"class")),_e9=_e3+"/"+_e6; +_e2=_e2[_e6]; +_e7=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"0.png"),_e2[0]),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"1.png"),_e2[1]),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_e8,"pathForResource:",_e9+"2.png"),_e2[2])],_e1)); +_d8[_e6]=_e7; +} +return _e7; +}; +p;14;CPController.jt;1707;@STATIC;1.0;t;1688; +var _1="CPControllerDeclaredKeysKey"; +var _2=objj_allocateClassPair(CPObject,"CPController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_editors"),new objj_ivar("_declaredKeys")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPController").super_class},"init"); +if(_4){ +_editors=[]; +_declaredKeys=[]; +} +return _4; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6,_7,_8){ +with(_6){ +if(objj_msgSend(_declaredKeys,"count")>0){ +objj_msgSend(_8,"encodeObject:forKey:",_declaredKeys,_1); +} +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_9,_a,_b){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("CPController").super_class},"init"); +if(_9){ +_editors=[]; +_declaredKeys=objj_msgSend(_b,"decodeObjectForKey:",_1)||[]; +} +return nil; +} +}),new objj_method(sel_getUid("isEditing"),function(_c,_d){ +with(_c){ +return objj_msgSend(_editors,"count")>0; +} +}),new objj_method(sel_getUid("commitEditing"),function(_e,_f){ +with(_e){ +var _10=0,_11=_editors.length; +for(;_10<_11;++_10){ +if(!objj_msgSend(objj_msgSend(_editors,"objectAtIndex:",i),"commitEditing")){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("discardEditing"),function(_12,_13){ +with(_12){ +objj_msgSend(_editors,"makeObjectsPerformSelector:",sel_getUid("discardEditing")); +} +}),new objj_method(sel_getUid("objectDidBeginEditing:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_editors,"addObject:",_16); +} +}),new objj_method(sel_getUid("objectDidEndEditing:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_editors,"removeObject:",_19); +} +})]); +p;10;CPCookie.jt;1234;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1163; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPCookie"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_cookieName"),new objj_ivar("_cookieValue"),new objj_ivar("_expires")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithName:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCookie").super_class},"init"); +_cookieName=_5; +_cookieValue=objj_msgSend(_3,"_readCookieValue"); +return _3; +} +}),new objj_method(sel_getUid("value"),function(_6,_7){ +with(_6){ +return _cookieValue; +} +}),new objj_method(sel_getUid("name"),function(_8,_9){ +with(_8){ +return _cookieName; +} +}),new objj_method(sel_getUid("expires"),function(_a,_b){ +with(_a){ +return _expires; +} +}),new objj_method(sel_getUid("setValue:expires:domain:"),function(_c,_d,_e,_f,_10){ +with(_c){ +if(_f){ +var _11="; expires="+_f.toGMTString(); +}else{ +var _11=""; +} +if(_10){ +_10="; domain="+_10; +}else{ +_10=""; +} +_cookieValue=_e; +_expires=_11; +} +}),new objj_method(sel_getUid("_readCookieValue"),function(_12,_13){ +with(_12){ +return ""; +} +})]); +p;10;CPCursor.jt;7593;@STATIC;1.0;t;7574; +var _1=nil,_2=[],_3={},_4=nil; +var _5=objj_allocateClassPair(CPObject,"CPCursor"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_cssString"),new objj_ivar("_isSetOnMouseEntered"),new objj_ivar("_isSetOnMouseExited")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("isSetOnMouseEntered"),function(_7,_8){ +with(_7){ +return _isSetOnMouseEntered; +} +}),new objj_method(sel_getUid("setOnMouseEntered:"),function(_9,_a,_b){ +with(_9){ +_isSetOnMouseEntered=_b; +} +}),new objj_method(sel_getUid("isSetOnMouseExited"),function(_c,_d){ +with(_c){ +return _isSetOnMouseExited; +} +}),new objj_method(sel_getUid("setOnMouseExited:"),function(_e,_f,_10){ +with(_e){ +_isSetOnMouseExited=_10; +} +}),new objj_method(sel_getUid("initWithCSSString:"),function(_11,_12,_13){ +with(_11){ +if(_11=objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPCursor").super_class},"init")){ +_cssString=_13; +} +return _11; +} +}),new objj_method(sel_getUid("_cssString"),function(_14,_15){ +with(_14){ +return _cssString; +} +}),new objj_method(sel_getUid("initWithImage:hotSpot:"),function(_16,_17,_18,_19){ +with(_16){ +return objj_msgSend(_16,"initWithCSSString:","url("+objj_msgSend(_18,"filename")+")"); +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_1a,_1b,_1c){ +with(_1a){ +} +}),new objj_method(sel_getUid("mouseExited:"),function(_1d,_1e,_1f){ +with(_1d){ +} +}),new objj_method(sel_getUid("set"),function(_20,_21){ +with(_20){ +_1=_20; +} +}),new objj_method(sel_getUid("push"),function(_22,_23){ +with(_22){ +_1=_2.push(_22); +} +}),new objj_method(sel_getUid("pop"),function(_24,_25){ +with(_24){ +objj_msgSend(CPCursor,"pop"); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_26,_27,_28){ +with(_26){ +if(_26=objj_msgSendSuper({receiver:_26,super_class:objj_getClass("CPCursor").super_class},"init")){ +_cssString=objj_msgSend(_28,"decodeObjectForKey:","CPCursorNameKey"); +} +return _26; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"encodeObject:forKey:",_cssString,"CPCursorNameKey"); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("currentCursor"),function(_2c,_2d){ +with(_2c){ +return _1; +} +}),new objj_method(sel_getUid("cursorWithCSSString:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=_3[_30]; +if(typeof _31=="undefined"){ +_31=objj_msgSend(objj_msgSend(CPCursor,"alloc"),"initWithCSSString:",_30); +_3[_30]=_31; +} +return _31; +} +}),new objj_method(sel_getUid("cursorWithImageNamed:"),function(_32,_33,_34){ +with(_32){ +if(!_4){ +_4="url("+objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",_32),"resourcePath")+"/CPCursor/%@.cur)"; +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +_4+=", default"; +} +} +var url=objj_msgSend(CPString,"stringWithFormat:",_4,_34); +return objj_msgSend(objj_msgSend(CPCursor,"alloc"),"initWithCSSString:",url); +} +}),new objj_method(sel_getUid("arrowCursor"),function(_35,_36){ +with(_35){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","default"); +} +}),new objj_method(sel_getUid("crosshairCursor"),function(_37,_38){ +with(_37){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","crosshair"); +} +}),new objj_method(sel_getUid("IBeamCursor"),function(_39,_3a){ +with(_39){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","text"); +} +}),new objj_method(sel_getUid("pointingHandCursor"),function(_3b,_3c){ +with(_3b){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","pointer"); +} +}),new objj_method(sel_getUid("resizeDownCursor"),function(_3d,_3e){ +with(_3d){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_3e)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","s-resize"); +} +}),new objj_method(sel_getUid("resizeUpCursor"),function(_3f,_40){ +with(_3f){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_40)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","n-resize"); +} +}),new objj_method(sel_getUid("resizeLeftCursor"),function(_41,_42){ +with(_41){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_42)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","w-resize"); +} +}),new objj_method(sel_getUid("resizeRightCursor"),function(_43,_44){ +with(_43){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_44)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","e-resize"); +} +}),new objj_method(sel_getUid("resizeLeftRightCursor"),function(_45,_46){ +with(_45){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","col-resize"); +} +}),new objj_method(sel_getUid("resizeUpDownCursor"),function(_47,_48){ +with(_47){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","row-resize"); +} +}),new objj_method(sel_getUid("operationNotAllowedCursor"),function(_49,_4a){ +with(_49){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","not-allowed"); +} +}),new objj_method(sel_getUid("dragCopyCursor"),function(_4b,_4c){ +with(_4b){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_4c)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","copy"); +} +}),new objj_method(sel_getUid("dragLinkCursor"),function(_4d,_4e){ +with(_4d){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_4e)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","alias"); +} +}),new objj_method(sel_getUid("contextualMenuCursor"),function(_4f,_50){ +with(_4f){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_50)); +} +return objj_msgSend(CPCursor,"cursorWithCSSString:","context-menu"); +} +}),new objj_method(sel_getUid("openHandCursor"),function(_51,_52){ +with(_51){ +if(CPBrowserIsEngine(CPWebKitBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-webkit-grab"); +}else{ +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-moz-grab"); +}else{ +if(CPBrowserIsEngine(CPOperaBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","move"); +} +} +} +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_52)); +} +}),new objj_method(sel_getUid("closedHandCursor"),function(_53,_54){ +with(_53){ +if(CPBrowserIsEngine(CPWebKitBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-webkit-grabbing"); +}else{ +if(CPBrowserIsEngine(CPGeckoBrowserEngine)){ +return objj_msgSend(CPCursor,"cursorWithCSSString:","-moz-grabbing"); +} +} +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_54)); +} +}),new objj_method(sel_getUid("disappearingItemCursor"),function(_55,_56){ +with(_55){ +return objj_msgSend(CPCursor,"cursorWithImageNamed:",CPStringFromSelector(_56)); +} +}),new objj_method(sel_getUid("hide"),function(_57,_58){ +with(_57){ +objj_msgSend(_57,"_setCursorCSS:","none"); +} +}),new objj_method(sel_getUid("unhide"),function(_59,_5a){ +with(_59){ +objj_msgSend(_59,"_setCursorCSS:",objj_msgSend(_1,"_cssString")); +} +}),new objj_method(sel_getUid("setHiddenUntilMouseMoves:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d){ +objj_msgSend(CPCursor,"hide"); +}else{ +objj_msgSend(CPCursor,"unhide"); +} +} +}),new objj_method(sel_getUid("_setCursorCSS:"),function(_5e,_5f,_60){ +with(_5e){ +} +}),new objj_method(sel_getUid("pop"),function(_61,_62){ +with(_61){ +if(_2.length>1){ +_2.pop(); +_1=_2[_2.length-1]; +} +} +})]); +p;12;CPDocument.jt;18918;@STATIC;1.0;I;21;Foundation/CPString.jI;20;Foundation/CPArray.ji;13;CPResponder.ji;13;CPSavePanel.ji;18;CPViewController.ji;20;CPWindowController.jt;18763; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPSavePanel.j",YES); +objj_executeFile("CPViewController.j",YES); +objj_executeFile("CPWindowController.j",YES); +CPSaveOperation=0; +CPSaveAsOperation=1; +CPSaveToOperation=2; +CPAutosaveOperation=3; +CPChangeDone=0; +CPChangeUndone=1; +CPChangeCleared=2; +CPChangeReadOtherContents=3; +CPChangeAutosaved=4; +CPDocumentWillSaveNotification="CPDocumentWillSaveNotification"; +CPDocumentDidSaveNotification="CPDocumentDidSaveNotification"; +CPDocumentDidFailToSaveNotification="CPDocumentDidFailToSaveNotification"; +var _1=0; +var _2=objj_allocateClassPair(CPResponder,"CPDocument"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_window"),new objj_ivar("_view"),new objj_ivar("_viewControllersForWindowControllers"),new objj_ivar("_fileURL"),new objj_ivar("_fileType"),new objj_ivar("_windowControllers"),new objj_ivar("_untitledDocumentIndex"),new objj_ivar("_hasUndoManager"),new objj_ivar("_undoManager"),new objj_ivar("_changeCount"),new objj_ivar("_readConnection"),new objj_ivar("_writeRequest"),new objj_ivar("_canCloseAlert")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPDocument").super_class},"init"); +if(_4){ +_windowControllers=[]; +_viewControllersForWindowControllers=objj_msgSend(CPDictionary,"dictionary"); +_hasUndoManager=YES; +_changeCount=0; +objj_msgSend(_4,"setNextResponder:",CPApp); +} +return _4; +} +}),new objj_method(sel_getUid("initWithType:error:"),function(_6,_7,_8,_9){ +with(_6){ +_6=objj_msgSend(_6,"init"); +if(_6){ +objj_msgSend(_6,"setFileType:",_8); +} +return _6; +} +}),new objj_method(sel_getUid("initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_a,_b,_c,_d,_e,_f,_10){ +with(_a){ +_a=objj_msgSend(_a,"init"); +if(_a){ +objj_msgSend(_a,"setFileURL:",_c); +objj_msgSend(_a,"setFileType:",_d); +objj_msgSend(_a,"readFromURL:ofType:delegate:didReadSelector:contextInfo:",_c,_d,_e,_f,_10); +} +return _a; +} +}),new objj_method(sel_getUid("initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_11,_12,_13,_14,_15,_16,_17,_18){ +with(_11){ +_11=objj_msgSend(_11,"init"); +if(_11){ +objj_msgSend(_11,"setFileURL:",_13); +objj_msgSend(_11,"setFileType:",_15); +objj_msgSend(_11,"readFromURL:ofType:delegate:didReadSelector:contextInfo:",_14,_15,_16,_17,_18); +} +return _11; +} +}),new objj_method(sel_getUid("dataOfType:error:"),function(_19,_1a,_1b,_1c){ +with(_19){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataOfType:error: must be overridden by the document subclass."); +} +}),new objj_method(sel_getUid("readFromData:ofType:error:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"readFromData:ofType: must be overridden by the document subclass."); +} +}),new objj_method(sel_getUid("viewControllerWillLoadCib:"),function(_22,_23,_24){ +with(_22){ +} +}),new objj_method(sel_getUid("viewControllerDidLoadCib:"),function(_25,_26,_27){ +with(_25){ +} +}),new objj_method(sel_getUid("firstEligibleExistingWindowController"),function(_28,_29){ +with(_28){ +return nil; +} +}),new objj_method(sel_getUid("makeWindowControllers"),function(_2a,_2b){ +with(_2a){ +objj_msgSend(_2a,"makeViewAndWindowControllers"); +} +}),new objj_method(sel_getUid("makeViewAndWindowControllers"),function(_2c,_2d){ +with(_2c){ +var _2e=objj_msgSend(_2c,"viewCibName"),_2f=nil,_30=nil; +if(objj_msgSend(_2e,"length")){ +_2f=objj_msgSend(objj_msgSend(CPViewController,"alloc"),"initWithCibName:bundle:owner:",_2e,nil,_2c); +} +if(_2f){ +_30=objj_msgSend(_2c,"firstEligibleExistingWindowController"); +} +if(!_30){ +var _31=objj_msgSend(_2c,"windowCibName"); +if(objj_msgSend(_31,"length")){ +_30=objj_msgSend(objj_msgSend(CPWindowController,"alloc"),"initWithWindowCibName:owner:",_31,_2c); +}else{ +if(_2f){ +var _32=objj_msgSend(_2f,"view"),_33=objj_msgSend(_32,"frame"); +_33.origin=CGPointMake(50,50); +var _34=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",_33,CPTitledWindowMask|CPClosableWindowMask|CPMiniaturizableWindowMask|CPResizableWindowMask); +_30=objj_msgSend(objj_msgSend(CPWindowController,"alloc"),"initWithWindow:",_34); +} +} +} +if(_30&&_2f){ +objj_msgSend(_30,"setSupportsMultipleDocuments:",YES); +} +if(_30){ +objj_msgSend(_2c,"addWindowController:",_30); +} +if(_2f){ +objj_msgSend(_2c,"addViewController:forWindowController:",_2f,_30); +} +} +}),new objj_method(sel_getUid("windowControllers"),function(_35,_36){ +with(_35){ +return _windowControllers; +} +}),new objj_method(sel_getUid("addWindowController:"),function(_37,_38,_39){ +with(_37){ +objj_msgSend(_windowControllers,"addObject:",_39); +if(objj_msgSend(_39,"document")!==_37){ +objj_msgSend(_39,"setDocument:",_37); +} +} +}),new objj_method(sel_getUid("removeWindowController:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_3c){ +objj_msgSend(_windowControllers,"removeObject:",_3c); +} +if(objj_msgSend(_3c,"document")===_3a){ +objj_msgSend(_3c,"setDocument:",nil); +} +} +}),new objj_method(sel_getUid("view"),function(_3d,_3e){ +with(_3d){ +return _view; +} +}),new objj_method(sel_getUid("viewControllers"),function(_3f,_40){ +with(_3f){ +return objj_msgSend(_viewControllersForWindowControllers,"allValues"); +} +}),new objj_method(sel_getUid("addViewController:forWindowController:"),function(_41,_42,_43,_44){ +with(_41){ +objj_msgSend(_viewControllersForWindowControllers,"setObject:forKey:",_43,objj_msgSend(_44,"UID")); +if(objj_msgSend(_44,"document")===_41){ +objj_msgSend(_44,"setViewController:",_43); +} +} +}),new objj_method(sel_getUid("removeViewController:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_viewControllersForWindowControllers,"removeObject:",_47); +} +}),new objj_method(sel_getUid("viewControllerForWindowController:"),function(_48,_49,_4a){ +with(_48){ +return objj_msgSend(_viewControllersForWindowControllers,"objectForKey:",objj_msgSend(_4a,"UID")); +} +}),new objj_method(sel_getUid("showWindows"),function(_4b,_4c){ +with(_4b){ +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocument:"),_4b); +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("showWindow:"),_4b); +} +}),new objj_method(sel_getUid("displayName"),function(_4d,_4e){ +with(_4d){ +if(_fileURL){ +return objj_msgSend(_fileURL,"lastPathComponent"); +} +if(!_untitledDocumentIndex){ +_untitledDocumentIndex=++_1; +} +if(_untitledDocumentIndex==1){ +return "Untitled"; +} +return "Untitled "+_untitledDocumentIndex; +} +}),new objj_method(sel_getUid("viewCibName"),function(_4f,_50){ +with(_4f){ +return nil; +} +}),new objj_method(sel_getUid("windowCibName"),function(_51,_52){ +with(_51){ +return nil; +} +}),new objj_method(sel_getUid("windowControllerDidLoadCib:"),function(_53,_54,_55){ +with(_53){ +} +}),new objj_method(sel_getUid("windowControllerWillLoadCib:"),function(_56,_57,_58){ +with(_56){ +} +}),new objj_method(sel_getUid("readFromURL:ofType:delegate:didReadSelector:contextInfo:"),function(_59,_5a,_5b,_5c,_5d,_5e,_5f){ +with(_59){ +objj_msgSend(_readConnection,"cancel"); +_readConnection=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",objj_msgSend(CPURLRequest,"requestWithURL:",_5b),_59); +_readConnection.session=_60(_5c,_5d,_5e,_5f); +} +}),new objj_method(sel_getUid("fileURL"),function(_61,_62){ +with(_61){ +return _fileURL; +} +}),new objj_method(sel_getUid("setFileURL:"),function(_63,_64,_65){ +with(_63){ +if(_fileURL===_65){ +return; +} +_fileURL=_65; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:",sel_getUid("synchronizeWindowTitleWithDocumentName")); +} +}),new objj_method(sel_getUid("saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:"),function(_66,_67,_68,_69,_6a,_6b,_6c,_6d){ +with(_66){ +var _6e=objj_msgSend(_66,"dataOfType:error:",objj_msgSend(_66,"fileType"),nil),_6f=_changeCount; +_writeRequest=objj_msgSend(CPURLRequest,"requestWithURL:",_68); +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_writeRequest,"setHTTPMethod:","POST"); +}else{ +objj_msgSend(_writeRequest,"setHTTPMethod:","PUT"); +} +objj_msgSend(_writeRequest,"setHTTPBody:",objj_msgSend(_6e,"rawString")); +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","close","Connection"); +if(_6a===CPSaveOperation){ +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","true","x-cappuccino-overwrite"); +} +if(_6a!==CPSaveToOperation){ +objj_msgSend(_66,"updateChangeCount:",CPChangeCleared); +} +var _70=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",_writeRequest,_66); +_70.session=_71(_68,_6a,_6f,_6b,_6c,_6d,_70); +} +}),new objj_method(sel_getUid("connection:didReceiveResponse:"),function(_72,_73,_74,_75){ +with(_72){ +if(!objj_msgSend(_75,"isKindOfClass:",objj_msgSend(CPHTTPURLResponse,"class"))){ +return; +} +var _76=objj_msgSend(_75,"statusCode"); +if(_76===200){ +return; +} +var _77=_74.session; +if(_74==_readConnection){ +objj_msgSend(_74,"cancel"); +alert("There was an error retrieving the document."); +objj_msgSend(_77.delegate,_77.didReadSelector,_72,NO,_77.contextInfo); +}else{ +if(_76==409){ +objj_msgSend(_74,"cancel"); +if(confirm("There already exists a file with that name, would you like to overwrite it?")){ +objj_msgSend(_writeRequest,"setValue:forHTTPHeaderField:","true","x-cappuccino-overwrite"); +objj_msgSend(_74,"start"); +}else{ +if(_77.saveOperation!=CPSaveToOperation){ +_changeCount+=_77.changeCount; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_72,"isDocumentEdited")); +} +_writeRequest=nil; +objj_msgSend(_77.delegate,_77.didSaveSelector,_72,NO,_77.contextInfo); +objj_msgSend(_72,"_sendDocumentSavedNotification:",NO); +} +} +} +} +}),new objj_method(sel_getUid("connection:didReceiveData:"),function(_78,_79,_7a,_7b){ +with(_78){ +var _7c=_7a.session; +if(_7a==_readConnection){ +objj_msgSend(_78,"readFromData:ofType:error:",objj_msgSend(CPData,"dataWithRawString:",_7b),_7c.fileType,nil); +objj_msgSend(_7c.delegate,_7c.didReadSelector,_78,YES,_7c.contextInfo); +}else{ +if(_7c.saveOperation!=CPSaveToOperation){ +objj_msgSend(_78,"setFileURL:",_7c.absoluteURL); +} +_writeRequest=nil; +objj_msgSend(_7c.delegate,_7c.didSaveSelector,_78,YES,_7c.contextInfo); +objj_msgSend(_78,"_sendDocumentSavedNotification:",YES); +} +} +}),new objj_method(sel_getUid("connection:didFailWithError:"),function(_7d,_7e,_7f,_80){ +with(_7d){ +var _81=_7f.session; +if(_readConnection==_7f){ +objj_msgSend(_81.delegate,_81.didReadSelector,_7d,NO,_81.contextInfo); +}else{ +if(_81.saveOperation!=CPSaveToOperation){ +_changeCount+=_81.changeCount; +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_7d,"isDocumentEdited")); +} +_writeRequest=nil; +alert("There was an error saving the document."); +objj_msgSend(_81.delegate,_81.didSaveSelector,_7d,NO,_81.contextInfo); +objj_msgSend(_7d,"_sendDocumentSavedNotification:",NO); +} +} +}),new objj_method(sel_getUid("connectionDidFinishLoading:"),function(_82,_83,_84){ +with(_82){ +if(_readConnection==_84){ +_readConnection=nil; +} +} +}),new objj_method(sel_getUid("isDocumentEdited"),function(_85,_86){ +with(_85){ +return _changeCount!=0; +} +}),new objj_method(sel_getUid("updateChangeCount:"),function(_87,_88,_89){ +with(_87){ +if(_89==CPChangeDone){ +++_changeCount; +}else{ +if(_89==CPChangeUndone){ +--_changeCount; +}else{ +if(_89==CPChangeCleared){ +_changeCount=0; +} +} +} +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("setDocumentEdited:"),objj_msgSend(_87,"isDocumentEdited")); +} +}),new objj_method(sel_getUid("setFileType:"),function(_8a,_8b,_8c){ +with(_8a){ +_fileType=_8c; +} +}),new objj_method(sel_getUid("fileType"),function(_8d,_8e){ +with(_8d){ +return _fileType; +} +}),new objj_method(sel_getUid("hasUndoManager"),function(_8f,_90){ +with(_8f){ +return _hasUndoManager; +} +}),new objj_method(sel_getUid("setHasUndoManager:"),function(_91,_92,_93){ +with(_91){ +if(_hasUndoManager==_93){ +return; +} +_hasUndoManager=_93; +if(!_hasUndoManager){ +objj_msgSend(_91,"setUndoManager:",nil); +} +} +}),new objj_method(sel_getUid("_undoManagerWillCloseGroup:"),function(_94,_95,_96){ +with(_94){ +var _97=objj_msgSend(_96,"object"); +if(objj_msgSend(_97,"isUndoing")||objj_msgSend(_97,"isRedoing")){ +return; +} +objj_msgSend(_94,"updateChangeCount:",CPChangeDone); +} +}),new objj_method(sel_getUid("_undoManagerDidUndoChange:"),function(_98,_99,_9a){ +with(_98){ +objj_msgSend(_98,"updateChangeCount:",CPChangeUndone); +} +}),new objj_method(sel_getUid("_undoManagerDidRedoChange:"),function(_9b,_9c,_9d){ +with(_9b){ +objj_msgSend(_9b,"updateChangeCount:",CPChangeDone); +} +}),new objj_method(sel_getUid("setUndoManager:"),function(_9e,_9f,_a0){ +with(_9e){ +var _a1=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_undoManager){ +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerDidUndoChangeNotification,_undoManager); +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerDidRedoChangeNotification,_undoManager); +objj_msgSend(_a1,"removeObserver:name:object:",_9e,CPUndoManagerWillCloseUndoGroupNotification,_undoManager); +} +_undoManager=_a0; +if(_undoManager){ +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerDidUndoChange:"),CPUndoManagerDidUndoChangeNotification,_undoManager); +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerDidRedoChange:"),CPUndoManagerDidRedoChangeNotification,_undoManager); +objj_msgSend(_a1,"addObserver:selector:name:object:",_9e,sel_getUid("_undoManagerWillCloseGroup:"),CPUndoManagerWillCloseUndoGroupNotification,_undoManager); +} +} +}),new objj_method(sel_getUid("undoManager"),function(_a2,_a3){ +with(_a2){ +if(_hasUndoManager&&!_undoManager){ +objj_msgSend(_a2,"setUndoManager:",objj_msgSend(objj_msgSend(CPUndoManager,"alloc"),"init")); +} +return _undoManager; +} +}),new objj_method(sel_getUid("windowWillReturnUndoManager:"),function(_a4,_a5,_a6){ +with(_a4){ +return objj_msgSend(_a4,"undoManager"); +} +}),new objj_method(sel_getUid("saveDocument:"),function(_a7,_a8,_a9){ +with(_a7){ +objj_msgSend(_a7,"saveDocumentWithDelegate:didSaveSelector:contextInfo:",nil,nil,nil); +} +}),new objj_method(sel_getUid("saveDocumentWithDelegate:didSaveSelector:contextInfo:"),function(_aa,_ab,_ac,_ad,_ae){ +with(_aa){ +if(_fileURL){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentWillSaveNotification,_aa); +objj_msgSend(_aa,"saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",_fileURL,objj_msgSend(_aa,"fileType"),CPSaveOperation,_ac,_ad,_ae); +}else{ +objj_msgSend(_aa,"_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:",_ac,_ad,_ae); +} +} +}),new objj_method(sel_getUid("saveDocumentAs:"),function(_af,_b0,_b1){ +with(_af){ +objj_msgSend(_af,"_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:",nil,nil,nil); +} +}),new objj_method(sel_getUid("_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:"),function(_b2,_b3,_b4,_b5,_b6){ +with(_b2){ +var _b7=objj_msgSend(CPSavePanel,"savePanel"),_b8=objj_msgSend(_b7,"runModal"); +if(!_b8){ +return; +} +var _b9=objj_msgSend(_b7,"URL"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentWillSaveNotification,_b2); +objj_msgSend(_b2,"saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",_b9,objj_msgSend(_b2,"fileType"),CPSaveAsOperation,_b4,_b5,_b6); +} +}),new objj_method(sel_getUid("_sendDocumentSavedNotification:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_bc){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentDidSaveNotification,_ba); +}else{ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPDocumentDidFailToSaveNotification,_ba); +} +} +})]); +var _2=objj_getClass("CPDocument"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocument\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("close"),function(_bd,_be){ +with(_bd){ +objj_msgSend(_windowControllers,"makeObjectsPerformSelector:withObject:",sel_getUid("removeDocumentAndCloseIfNecessary:"),_bd); +objj_msgSend(objj_msgSend(CPDocumentController,"sharedDocumentController"),"removeDocument:",_bd); +} +}),new objj_method(sel_getUid("shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:"),function(_bf,_c0,_c1,_c2,_c3,_c4){ +with(_bf){ +if(objj_msgSend(_c1,"shouldCloseDocument")||(objj_msgSend(_windowControllers,"count")<2&&objj_msgSend(_windowControllers,"indexOfObject:",_c1)!==CPNotFound)){ +objj_msgSend(_bf,"canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",_bf,sel_getUid("_document:shouldClose:context:"),{delegate:_c2,selector:_c3,context:_c4}); +}else{ +if(objj_msgSend(_c2,"respondsToSelector:",_c3)){ +objj_msgSend(_c2,_c3,_bf,YES,_c4); +} +} +} +}),new objj_method(sel_getUid("_document:shouldClose:context:"),function(_c5,_c6,_c7,_c8,_c9){ +with(_c5){ +if(_c7===_c5&&_c8){ +objj_msgSend(_c5,"close"); +} +objj_msgSend(_c9.delegate,_c9.selector,_c7,_c8,_c9.context); +} +}),new objj_method(sel_getUid("canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:"),function(_ca,_cb,_cc,_cd,_ce){ +with(_ca){ +if(!objj_msgSend(_ca,"isDocumentEdited")){ +return objj_msgSend(_cc,"respondsToSelector:",_cd)&&objj_msgSend(_cc,_cd,_ca,YES,_ce); +} +_canCloseAlert=objj_msgSend(objj_msgSend(CPAlert,"alloc"),"init"); +objj_msgSend(_canCloseAlert,"setDelegate:",_ca); +objj_msgSend(_canCloseAlert,"setAlertStyle:",CPWarningAlertStyle); +objj_msgSend(_canCloseAlert,"setTitle:","Unsaved Document"); +objj_msgSend(_canCloseAlert,"setMessageText:","Do you want to save the changes you've made to the document \""+(objj_msgSend(_ca,"displayName")||objj_msgSend(_ca,"fileName"))+"\"?"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Save"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Cancel"); +objj_msgSend(_canCloseAlert,"addButtonWithTitle:","Don't Save"); +_canCloseAlert._context={delegate:_cc,selector:_cd,context:_ce}; +objj_msgSend(_canCloseAlert,"runModal"); +} +}),new objj_method(sel_getUid("alertDidEnd:returnCode:"),function(_cf,_d0,_d1,_d2){ +with(_cf){ +if(_d1!==_canCloseAlert){ +return; +} +var _d3=_d1._context.delegate,_d4=_d1._context.selector,_d5=_d1._context.context; +if(_d2===0){ +objj_msgSend(_cf,"saveDocumentWithDelegate:didSaveSelector:contextInfo:",_d3,_d4,_d5); +}else{ +objj_msgSend(_d3,_d4,_cf,_d2===2,_d5); +} +_canCloseAlert=nil; +} +})]); +var _60=function(_d6,_d7,_d8,_d9){ +return {fileType:_d6,delegate:_d7,didReadSelector:_d8,contextInfo:_d9}; +}; +var _71=function(_da,_db,_dc,_dd,_de,_df,_e0){ +return {absoluteURL:_da,saveOperation:_db,changeCount:_dc,delegate:_dd,didSaveSelector:_de,contextInfo:_df,connection:_e0}; +}; +p;22;CPDocumentController.jt;9691;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPBundle.ji;12;CPDocument.ji;13;CPOpenPanel.jt;9585; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CPDocument.j",YES); +objj_executeFile("CPOpenPanel.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPDocumentController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_documents"),new objj_ivar("_documentTypes")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPDocumentController").super_class},"init"); +if(_4){ +_documents=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"); +if(!_1){ +_1=_4; +} +_documentTypes=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleDocumentTypes"); +} +return _4; +} +}),new objj_method(sel_getUid("documentForURL:"),function(_6,_7,_8){ +with(_6){ +var _9=0,_a=objj_msgSend(_documents,"count"); +for(;_9<_a;++_9){ +var _b=_documents[_9]; +if(objj_msgSend(objj_msgSend(_b,"fileURL"),"isEqual:",_8)){ +return _b; +} +} +return nil; +} +}),new objj_method(sel_getUid("openUntitledDocumentOfType:display:"),function(_c,_d,_e,_f){ +with(_c){ +var _10=objj_msgSend(_c,"makeUntitledDocumentOfType:error:",_e,nil); +if(_10){ +objj_msgSend(_c,"addDocument:",_10); +} +if(_f){ +objj_msgSend(_10,"makeWindowControllers"); +objj_msgSend(_10,"showWindows"); +} +return _10; +} +}),new objj_method(sel_getUid("makeUntitledDocumentOfType:error:"),function(_11,_12,_13,_14){ +with(_11){ +return objj_msgSend(objj_msgSend(objj_msgSend(_11,"documentClassForType:",_13),"alloc"),"initWithType:error:",_13,_14); +} +}),new objj_method(sel_getUid("openDocumentWithContentsOfURL:display:error:"),function(_15,_16,_17,_18,_19){ +with(_15){ +var _1a=objj_msgSend(_15,"documentForURL:",_17); +if(!_1a){ +var _1b=objj_msgSend(_15,"typeForContentsOfURL:error:",_17,_19); +_1a=objj_msgSend(_15,"makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_17,_1b,_15,sel_getUid("document:didRead:contextInfo:"),objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_18,"shouldDisplay")); +objj_msgSend(_15,"addDocument:",_1a); +if(_1a){ +objj_msgSend(_15,"noteNewRecentDocument:",_1a); +} +}else{ +if(_18){ +objj_msgSend(_1a,"showWindows"); +} +} +return _1a; +} +}),new objj_method(sel_getUid("reopenDocumentForURL:withContentsOfURL:error:"),function(_1c,_1d,_1e,_1f,_20){ +with(_1c){ +return objj_msgSend(_1c,"makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_1e,_1f,objj_msgSend(objj_msgSend(_documentTypes,"objectAtIndex:",0),"objectForKey:","CPBundleTypeName"),_1c,sel_getUid("document:didRead:contextInfo:"),nil); +} +}),new objj_method(sel_getUid("makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_21,_22,_23,_24,_25,_26,_27){ +with(_21){ +return objj_msgSend(objj_msgSend(objj_msgSend(_21,"documentClassForType:",_24),"alloc"),"initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_23,_24,_25,_26,_27); +} +}),new objj_method(sel_getUid("makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"),function(_28,_29,_2a,_2b,_2c,_2d,_2e,_2f){ +with(_28){ +return objj_msgSend(objj_msgSend(objj_msgSend(_28,"documentClassForType:",_2c),"alloc"),"initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:",_2a,_2b,_2c,_2d,_2e,_2f); +} +}),new objj_method(sel_getUid("document:didRead:contextInfo:"),function(_30,_31,_32,_33,_34){ +with(_30){ +if(!_33){ +return; +} +objj_msgSend(_32,"makeWindowControllers"); +if(objj_msgSend(_34,"objectForKey:","shouldDisplay")){ +objj_msgSend(_32,"showWindows"); +} +} +}),new objj_method(sel_getUid("newDocument:"),function(_35,_36,_37){ +with(_35){ +objj_msgSend(_35,"openUntitledDocumentOfType:display:",objj_msgSend(objj_msgSend(_documentTypes,"objectAtIndex:",0),"objectForKey:","CPBundleTypeName"),YES); +} +}),new objj_method(sel_getUid("openDocument:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(CPOpenPanel,"openPanel"); +objj_msgSend(_3b,"runModal"); +var _3c=objj_msgSend(_3b,"URLs"),_3d=0,_3e=objj_msgSend(_3c,"count"); +for(;_3d<_3e;++_3d){ +objj_msgSend(_38,"openDocumentWithContentsOfURL:display:error:",objj_msgSend(CPURL,"URLWithString:",_3c[_3d]),YES,nil); +} +} +}),new objj_method(sel_getUid("documents"),function(_3f,_40){ +with(_3f){ +return _documents; +} +}),new objj_method(sel_getUid("addDocument:"),function(_41,_42,_43){ +with(_41){ +objj_msgSend(_documents,"addObject:",_43); +} +}),new objj_method(sel_getUid("removeDocument:"),function(_44,_45,_46){ +with(_44){ +objj_msgSend(_documents,"removeObjectIdenticalTo:",_46); +} +}),new objj_method(sel_getUid("defaultType"),function(_47,_48){ +with(_47){ +return objj_msgSend(_documentTypes[0],"objectForKey:","CPBundleTypeName"); +} +}),new objj_method(sel_getUid("typeForContentsOfURL:error:"),function(_49,_4a,_4b,_4c){ +with(_49){ +var _4d=0,_4e=_documentTypes.length,_4f=objj_msgSend(objj_msgSend(_4b,"pathExtension"),"lowercaseString"),_50=nil; +for(;_4d<_4e;++_4d){ +var _51=_documentTypes[_4d],_52=objj_msgSend(_51,"objectForKey:","CFBundleTypeExtensions"),_53=0,_54=_52.length; +for(;_53<_54;++_53){ +var _55=objj_msgSend(_52[_53],"lowercaseString"); +if(_55===_4f){ +return objj_msgSend(_51,"objectForKey:","CPBundleTypeName"); +} +if(_55==="****"){ +_50=objj_msgSend(_51,"objectForKey:","CPBundleTypeName"); +} +} +} +return _50||objj_msgSend(_49,"defaultType"); +} +}),new objj_method(sel_getUid("_infoForType:"),function(_56,_57,_58){ +with(_56){ +var i=0,_59=objj_msgSend(_documentTypes,"count"); +for(;i<_59;++i){ +var _5a=_documentTypes[i]; +if(objj_msgSend(_5a,"objectForKey:","CPBundleTypeName")==_58){ +return _5a; +} +} +return nil; +} +}),new objj_method(sel_getUid("documentClassForType:"),function(_5b,_5c,_5d){ +with(_5b){ +var _5e=objj_msgSend(objj_msgSend(_5b,"_infoForType:",_5d),"objectForKey:","CPDocumentClass"); +return _5e?CPClassFromString(_5e):nil; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("sharedDocumentController"),function(_5f,_60){ +with(_5f){ +if(!_1){ +objj_msgSend(objj_msgSend(_5f,"alloc"),"init"); +} +return _1; +} +})]); +var _2=objj_getClass("CPDocumentController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:"),function(_61,_62,_63,_64,_65){ +with(_61){ +var _66={delegate:_63,selector:_64,context:_65}; +objj_msgSend(_61,"_closeDocumentsStartingWith:shouldClose:context:",nil,YES,_66); +} +}),new objj_method(sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"),function(_67,_68,_69,_6a,_6b){ +with(_67){ +if(_6a){ +objj_msgSend(_69,"close"); +if(objj_msgSend(objj_msgSend(_67,"documents"),"count")>0){ +objj_msgSend(objj_msgSend(objj_msgSend(_67,"documents"),"lastObject"),"canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",_67,sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"),_6b); +return; +} +} +if(objj_msgSend(_6b.delegate,"respondsToSelector:",_6b.selector)){ +objj_msgSend(_6b.delegate,_6b.selector,_67,objj_msgSend(objj_msgSend(_67,"documents"),"count")===0,_6b.context); +} +} +})]); +var _2=objj_getClass("CPDocumentController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("recentDocumentURLs"),function(_6c,_6d){ +with(_6c){ +if(typeof window["cpRecentDocumentURLs"]==="function"){ +return window.cpRecentDocumentURLs(); +} +return []; +} +}),new objj_method(sel_getUid("clearRecentDocuments:"),function(_6e,_6f,_70){ +with(_6e){ +if(typeof window["cpClearRecentDocuments"]==="function"){ +window.cpClearRecentDocuments(); +} +objj_msgSend(_6e,"_updateRecentDocumentsMenu"); +} +}),new objj_method(sel_getUid("noteNewRecentDocument:"),function(_71,_72,_73){ +with(_71){ +objj_msgSend(_71,"noteNewRecentDocumentURL:",objj_msgSend(objj_msgSend(_73,"fileURL"),"absoluteString")); +} +}),new objj_method(sel_getUid("noteNewRecentDocumentURL:"),function(_74,_75,_76){ +with(_74){ +if(typeof window["cpNoteNewRecentDocumentPath"]==="function"){ +window.cpNoteNewRecentDocumentPath(_76); +} +objj_msgSend(_74,"_updateRecentDocumentsMenu"); +} +}),new objj_method(sel_getUid("_removeAllRecentDocumentsFromMenu:"),function(_77,_78,_79){ +with(_77){ +var _7a=objj_msgSend(_79,"itemArray"),_7b=objj_msgSend(_7a,"count"); +while(_7b--){ +var _7c=_7a[_7b]; +if(objj_msgSend(_7c,"action")===sel_getUid("_openRecentDocument:")){ +objj_msgSend(_79,"removeItemAtIndex:",_7b); +} +} +} +}),new objj_method(sel_getUid("_updateRecentDocumentsMenu"),function(_7d,_7e){ +with(_7d){ +var _7f=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"_menuWithName:","_CPRecentDocumentsMenu"),_80=objj_msgSend(_7d,"recentDocumentURLs"),_81=objj_msgSend(_7f,"itemArray"),_82=objj_msgSend(_80,"count"),_83=objj_msgSend(_81,"count"); +objj_msgSend(_7d,"_removeAllRecentDocumentsFromMenu:",_7f); +if(_83){ +if(!_82){ +if(objj_msgSend(_81[0],"isSeparatorItem")){ +objj_msgSend(_7f,"removeItemAtIndex:",0); +} +}else{ +if(!objj_msgSend(_81[0],"isSeparatorItem")){ +objj_msgSend(_7f,"insertItem:atIndex:",objj_msgSend(CPMenuItem,"separatorItem"),0); +} +} +} +while(_82--){ +var _84=_80[_82],_85=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",objj_msgSend(_84,"lastPathComponent"),sel_getUid("_openRecentDocument:"),nil); +objj_msgSend(_85,"setTag:",_84); +objj_msgSend(_7f,"insertItem:atIndex:",_85,0); +} +} +}),new objj_method(sel_getUid("_openRecentDocument:"),function(_86,_87,_88){ +with(_86){ +objj_msgSend(_86,"openDocumentWithContentsOfURL:display:error:",objj_msgSend(_88,"tag"),YES,nil); +} +})]); +p;14;CPDragServer.jt;14787;@STATIC;1.0;I;15;AppKit/CPView.jI;16;AppKit/CPEvent.jI;21;AppKit/CPPasteboard.jI;20;AppKit/CPImageView.jt;14675; +objj_executeFile("AppKit/CPView.j",NO); +objj_executeFile("AppKit/CPEvent.j",NO); +objj_executeFile("AppKit/CPPasteboard.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +CPDragOperationNone=0,CPDragOperationCopy=1<<1,CPDragOperationLink=1<<1,CPDragOperationGeneric=1<<2,CPDragOperationPrivate=1<<3,CPDragOperationMove=1<<4,CPDragOperationDelete=1<<5,CPDragOperationEvery=-1; +var _1=nil,_2=0.05; +var _3=nil; +var _4=nil; +var _5=nil; +var _6=objj_allocateClassPair(CPObject,"CPDraggingInfo"),_7=_6.isa; +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("draggingPasteboard"),function(_8,_9){ +with(_8){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +return objj_msgSend(_CPDOMDataTransferPasteboard,"DOMDataTransferPasteboard"); +} +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingPasteboard"); +} +}),new objj_method(sel_getUid("draggingSource"),function(_a,_b){ +with(_a){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingSource"); +} +}),new objj_method(sel_getUid("draggingLocation"),function(_c,_d){ +with(_c){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingLocation"); +} +}),new objj_method(sel_getUid("draggingDestinationWindow"),function(_e,_f){ +with(_e){ +return (objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"),"isKindOfClass:",objj_msgSend(CPWindow,"class"))?objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"):objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggingDestination"),"window")); +} +}),new objj_method(sel_getUid("draggedImage"),function(_10,_11){ +with(_10){ +return objj_msgSend(objj_msgSend(_10,"draggedView"),"image"); +} +}),new objj_method(sel_getUid("draggedImageLocation"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"draggedViewLocation"); +} +}),new objj_method(sel_getUid("draggedView"),function(_14,_15){ +with(_14){ +return objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"draggedView"); +} +}),new objj_method(sel_getUid("draggedViewLocation"),function(_16,_17){ +with(_16){ +var _18=objj_msgSend(CPDragServer,"sharedDragServer"); +return objj_msgSend((objj_msgSend(objj_msgSend(_18,"draggingDestination"),"isKindOfClass:",objj_msgSend(CPWindow,"class"))?objj_msgSend(_18,"draggingDestination"):objj_msgSend(objj_msgSend(_18,"draggingDestination"),"window")),"convertPlatformWindowToBase:",objj_msgSend(objj_msgSend(_18,"draggedView"),"frame").origin); +} +})]); +var _19=1<<0,_1a=1<<1,_1b=1<<2,_1c=1<<3; +var _6=objj_allocateClassPair(CPObject,"CPDragServer"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_isDragging"),new objj_ivar("_draggedWindow"),new objj_ivar("_draggedView"),new objj_ivar("_imageView"),new objj_ivar("_isDraggingImage"),new objj_ivar("_draggingOffset"),new objj_ivar("_draggingPasteboard"),new objj_ivar("_draggingSource"),new objj_ivar("_implementedDraggingSourceMethods"),new objj_ivar("_draggingLocation"),new objj_ivar("_draggingDestination"),new objj_ivar("_draggingDestinationWantsPeriodicUpdates"),new objj_ivar("_startDragLocation"),new objj_ivar("_shouldSlideBack"),new objj_ivar("_dragOperation"),new objj_ivar("_draggingUpdateTimer")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("isDragging"),function(_1d,_1e){ +with(_1d){ +return _isDragging; +} +}),new objj_method(sel_getUid("draggedWindow"),function(_1f,_20){ +with(_1f){ +return _draggedWindow; +} +}),new objj_method(sel_getUid("draggedView"),function(_21,_22){ +with(_21){ +return _draggedView; +} +}),new objj_method(sel_getUid("draggingOffset"),function(_23,_24){ +with(_23){ +return _draggingOffset; +} +}),new objj_method(sel_getUid("draggingPasteboard"),function(_25,_26){ +with(_25){ +return _draggingPasteboard; +} +}),new objj_method(sel_getUid("draggingSource"),function(_27,_28){ +with(_27){ +return _draggingSource; +} +}),new objj_method(sel_getUid("init"),function(_29,_2a){ +with(_29){ +_29=objj_msgSendSuper({receiver:_29,super_class:objj_getClass("CPDragServer").super_class},"init"); +if(_29){ +_draggedWindow=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",{origin:{x:0,y:0},size:{width:0,height:0}},CPBorderlessWindowMask); +objj_msgSend(_draggedWindow,"setLevel:",CPDraggingWindowLevel); +} +return _29; +} +}),new objj_method(sel_getUid("draggingDestination"),function(_2b,_2c){ +with(_2b){ +return _draggingDestination; +} +}),new objj_method(sel_getUid("draggingLocation"),function(_2d,_2e){ +with(_2d){ +return _draggingLocation; +} +}),new objj_method(sel_getUid("draggingStartedInPlatformWindow:globalLocation:"),function(_2f,_30,_31,_32){ +with(_2f){ +if(_isDraggingImage){ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:beganAt:"))){ +objj_msgSend(_draggingSource,"draggedImage:beganAt:",objj_msgSend(_draggedView,"image"),_32); +} +}else{ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:beganAt:"))){ +objj_msgSend(_draggingSource,"draggedView:beganAt:",_draggedView,_32); +} +} +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"orderFront:",_2f); +} +} +}),new objj_method(sel_getUid("draggingSourceUpdatedWithGlobalLocation:"),function(_33,_34,_35){ +with(_33){ +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"setFrameOrigin:",{x:_35.x-_draggingOffset.width,y:_35.y-_draggingOffset.height}); +} +if(_implementedDraggingSourceMethods&_19){ +objj_msgSend(_draggingSource,"draggedImage:movedTo:",objj_msgSend(_draggedView,"image"),_35); +}else{ +if(_implementedDraggingSourceMethods&_1b){ +objj_msgSend(_draggingSource,"draggedView:movedTo:",_draggedView,_35); +} +} +} +}),new objj_method(sel_getUid("draggingUpdatedInPlatformWindow:location:"),function(_36,_37,_38,_39){ +with(_36){ +objj_msgSend(_draggingUpdateTimer,"invalidate"); +_draggingUpdateTimer=nil; +var _3a=CPDragOperationCopy; +var _3b=objj_msgSend(_38,"_dragHitTest:pasteboard:",_39,objj_msgSend(_5,"draggingPasteboard")); +if(_3b){ +_draggingLocation=objj_msgSend((objj_msgSend(_3b,"isKindOfClass:",objj_msgSend(CPWindow,"class"))?_3b:objj_msgSend(_3b,"window")),"convertPlatformWindowToBase:",_39); +} +if(_3b!==_draggingDestination){ +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingExited:"))){ +objj_msgSend(_draggingDestination,"draggingExited:",_5); +} +_draggingDestination=_3b; +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("wantsPeriodicDraggingUpdates"))){ +_draggingDestinationWantsPeriodicUpdates=objj_msgSend(_draggingDestination,"wantsPeriodicDraggingUpdates"); +}else{ +_draggingDestinationWantsPeriodicUpdates=YES; +} +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingEntered:"))){ +_3a=objj_msgSend(_draggingDestination,"draggingEntered:",_5); +} +}else{ +if(objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("draggingUpdated:"))){ +_3a=objj_msgSend(_draggingDestination,"draggingUpdated:",_5); +} +} +if(!_draggingDestination){ +_3a=CPDragOperationNone; +}else{ +if(_draggingDestinationWantsPeriodicUpdates){ +_draggingUpdateTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",_2,_36,sel_getUid("_sendPeriodicDraggingUpdate:"),objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{platformWindow:_38,location:_39}),NO); +} +var _3c=objj_msgSend(_draggingDestination,"isKindOfClass:",objj_msgSend(CPView,"class"))?objj_msgSend(_draggingDestination,"enclosingScrollView"):nil; +if(_3c){ +var _3d=objj_msgSend(_3c,"contentView"),_3e=objj_msgSend(_3d,"bounds"),_3f=CGRectInset(_3e,10,10),_40=objj_msgSend(_3d,"convertPoint:fromView:",_draggingLocation,nil),_41=0,_42=0; +if(!CGRectContainsPoint(_3f,_40)){ +if(objj_msgSend(_3c,"hasVerticalScroller")){ +if(_40.y<CGRectGetMinY(_3f)){ +_42=CGRectGetMinY(_3f)-_40.y; +}else{ +if(_40.y>CGRectGetMaxY(_3f)){ +_42=CGRectGetMaxY(_3f)-_40.y; +} +} +if(_42<-_3f.size.height){ +_42=-_3f.size.height; +} +if(_42>_3f.size.height){ +_42=_3f.size.height; +} +} +if(objj_msgSend(_3c,"hasHorizontalScroller")){ +if(_40.x<CGRectGetMinX(_3f)){ +_41=CGRectGetMinX(_3f)-_40.x; +}else{ +if(_40.x>CGRectGetMaxX(_3f)){ +_41=CGRectGetMaxX(_3f)-_40.x; +} +} +if(_41<-_3f.size.width){ +_41=-_3f.size.width; +} +if(_41>_3f.size.width){ +_41=_3f.size.width; +} +} +objj_msgSend(_3d,"scrollToPoint:",CGPointMake(_3e.origin.x-_41,_3e.origin.y-_42)); +} +} +} +return _3a; +} +}),new objj_method(sel_getUid("_sendPeriodicDraggingUpdate:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_45,"userInfo"); +_dragOperation=objj_msgSend(_43,"draggingUpdatedInPlatformWindow:location:",objj_msgSend(_46,"objectForKey:","platformWindow"),objj_msgSend(_46,"objectForKey:","location")); +} +}),new objj_method(sel_getUid("draggingEndedInPlatformWindow:globalLocation:operation:"),function(_47,_48,_49,_4a,_4b){ +with(_47){ +objj_msgSend(_draggingUpdateTimer,"invalidate"); +_draggingUpdateTimer=nil; +objj_msgSend(_draggedView,"removeFromSuperview"); +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_draggedWindow,"orderOut:",_47); +} +if(_implementedDraggingSourceMethods&_1a){ +objj_msgSend(_draggingSource,"draggedImage:endedAt:operation:",objj_msgSend(_draggedView,"image"),_4a,_4b); +}else{ +if(_implementedDraggingSourceMethods&_1c){ +objj_msgSend(_draggingSource,"draggedView:endedAt:operation:",_draggedView,_4a,_4b); +} +} +_isDragging=NO; +} +}),new objj_method(sel_getUid("performDragOperationInPlatformWindow:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_draggingDestination&&(!objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("prepareForDragOperation:"))||objj_msgSend(_draggingDestination,"prepareForDragOperation:",_5))&&(!objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("performDragOperation:"))||objj_msgSend(_draggingDestination,"performDragOperation:",_5))&&objj_msgSend(_draggingDestination,"respondsToSelector:",sel_getUid("concludeDragOperation:"))){ +objj_msgSend(_draggingDestination,"concludeDragOperation:",_5); +} +} +}),new objj_method(sel_getUid("dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:"),function(_4f,_50,_51,_52,_53,_54,_55,_56,_57,_58){ +with(_4f){ +_isDragging=YES; +_draggedView=_51; +_draggingPasteboard=_56||objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard); +_draggingSource=_57; +_draggingDestination=nil; +_shouldSlideBack=_58; +var _59=objj_msgSend(_55,"window"),_5a=objj_msgSend(_55,"locationInWindow"); +if(_5a){ +if(_59){ +_5a=objj_msgSend(_59,"convertBaseToGlobal:",_5a); +} +_draggingOffset={width:_5a.x-_53.x,height:_5a.y-_53.y}; +}else{ +_draggingOffset={width:0,height:0}; +} +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_draggedWindow,"setPlatformWindow:",objj_msgSend(_52,"platformWindow")); +} +objj_msgSend(_51,"setFrameOrigin:",{x:0,y:0}); +var _5b=objj_msgSend(CPEvent,"mouseLocation"); +_startDragLocation={x:_5b.x-_draggingOffset.width,y:_5b.y-_draggingOffset.height}; +objj_msgSend(_draggedWindow,"setFrameOrigin:",_startDragLocation); +objj_msgSend(_draggedWindow,"setFrameSize:",objj_msgSend(_51,"frame").size); +objj_msgSend(objj_msgSend(_draggedWindow,"contentView"),"addSubview:",_51); +_implementedDraggingSourceMethods=0; +if(_draggedView===_imageView){ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:movedTo:"))){ +_implementedDraggingSourceMethods|=_19; +} +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedImage:endedAt:operation:"))){ +_implementedDraggingSourceMethods|=_1a; +} +}else{ +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:movedTo:"))){ +_implementedDraggingSourceMethods|=_1b; +} +if(objj_msgSend(_draggingSource,"respondsToSelector:",sel_getUid("draggedView:endedAt:operation:"))){ +_implementedDraggingSourceMethods|=_1c; +} +} +if(!objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +objj_msgSend(_4f,"draggingStartedInPlatformWindow:globalLocation:",objj_msgSend(_52,"platformWindow"),_5b); +objj_msgSend(_4f,"trackDragging:",_55); +} +} +}),new objj_method(sel_getUid("dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:"),function(_5c,_5d,_5e,_5f,_60,_61,_62,_63,_64,_65){ +with(_5c){ +_isDraggingImage=YES; +var _66=objj_msgSend(_5e,"size"); +if(!_imageView){ +_imageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:_66.width,height:_66.height}}); +} +objj_msgSend(_imageView,"setImage:",_5e); +objj_msgSend(_5c,"dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:",_imageView,_5f,_60,_61,_62,_63,_64,_65); +} +}),new objj_method(sel_getUid("trackDragging:"),function(_67,_68,_69){ +with(_67){ +var _6a=objj_msgSend(_69,"type"),_6b=objj_msgSend(_draggedWindow,"platformWindow"),_6c=objj_msgSend(objj_msgSend(_69,"window"),"convertBaseToPlatformWindow:",objj_msgSend(_69,"locationInWindow")); +if(_6a===CPLeftMouseUp){ +if(_dragOperation!==CPDragOperationNone){ +objj_msgSend(_67,"performDragOperationInPlatformWindow:",_6b); +} +objj_msgSend(_67,"draggingEndedInPlatformWindow:globalLocation:operation:",_6b,_6c,_dragOperation); +return; +}else{ +if(_6a===CPKeyDown){ +var _6d=objj_msgSend(_69,"keyCode"); +if(_6d===CPEscapeKeyCode){ +_dragOperation=CPDragOperationNone; +objj_msgSend(_67,"draggingEndedInPlatformWindow:globalLocation:operation:",_6b,CGPointMakeZero(),_dragOperation); +return; +} +}else{ +objj_msgSend(_67,"draggingSourceUpdatedWithGlobalLocation:",_6c); +_dragOperation=objj_msgSend(_67,"draggingUpdatedInPlatformWindow:location:",_6b,_6c); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_67,sel_getUid("trackDragging:"),CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPKeyDownMask,nil,0,NO); +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("initialize"),function(_6e,_6f){ +with(_6e){ +if(_6e!==objj_msgSend(CPDragServer,"class")){ +return; +} +_5=objj_msgSend(objj_msgSend(CPDraggingInfo,"alloc"),"init"); +} +}),new objj_method(sel_getUid("sharedDragServer"),function(_70,_71){ +with(_70){ +if(!_3){ +_3=objj_msgSend(objj_msgSend(CPDragServer,"alloc"),"init"); +} +return _3; +} +})]); +var _6=objj_getClass("CPWindow"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("_dragHitTest:pasteboard:"),function(_72,_73,_74,_75){ +with(_72){ +if(!_inclusiveRegisteredDraggedTypes){ +return nil; +} +var _76=objj_msgSend(_72,"convertPlatformWindowToBase:",_74),_77=objj_msgSend(_windowView,"hitTest:",_76); +while(_77&&!objj_msgSend(_75,"availableTypeFromArray:",objj_msgSend(_77,"registeredDraggedTypes"))){ +_77=objj_msgSend(_77,"superview"); +} +if(_77){ +return _77; +} +if(objj_msgSend(_75,"availableTypeFromArray:",objj_msgSend(_72,"registeredDraggedTypes"))){ +return _72; +} +return nil; +} +})]); +p;9;CPEvent.jt;11899;@STATIC;1.0;I;21;Foundation/CPObject.ji;8;CPText.jt;11841; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPText.j",YES); +CPLeftMouseDown=1; +CPLeftMouseUp=2; +CPRightMouseDown=3; +CPRightMouseUp=4; +CPMouseMoved=5; +CPLeftMouseDragged=6; +CPRightMouseDragged=7; +CPMouseEntered=8; +CPMouseExited=9; +CPKeyDown=10; +CPKeyUp=11; +CPFlagsChanged=12; +CPAppKitDefined=13; +CPSystemDefined=14; +CPApplicationDefined=15; +CPPeriodic=16; +CPCursorUpdate=17; +CPScrollWheel=22; +CPOtherMouseDown=25; +CPOtherMouseUp=26; +CPOtherMouseDragged=27; +CPTouchStart=28; +CPTouchMove=29; +CPTouchEnd=30; +CPTouchCancel=31; +CPAlphaShiftKeyMask=1<<16; +CPShiftKeyMask=1<<17; +CPControlKeyMask=1<<18; +CPAlternateKeyMask=1<<19; +CPCommandKeyMask=1<<20; +CPNumericPadKeyMask=1<<21; +CPHelpKeyMask=1<<22; +CPFunctionKeyMask=1<<23; +CPDeviceIndependentModifierFlagsMask=4294901760; +CPLeftMouseDownMask=1<<CPLeftMouseDown; +CPLeftMouseUpMask=1<<CPLeftMouseUp; +CPRightMouseDownMask=1<<CPRightMouseDown; +CPRightMouseUpMask=1<<CPRightMouseUp; +CPOtherMouseDownMask=1<<CPOtherMouseDown; +CPOtherMouseUpMask=1<<CPOtherMouseUp; +CPMouseMovedMask=1<<CPMouseMoved; +CPLeftMouseDraggedMask=1<<CPLeftMouseDragged; +CPRightMouseDraggedMask=1<<CPRightMouseDragged; +CPOtherMouseDragged=1<<CPOtherMouseDragged; +CPMouseEnteredMask=1<<CPMouseEntered; +CPMouseExitedMask=1<<CPMouseExited; +CPCursorUpdateMask=1<<CPCursorUpdate; +CPKeyDownMask=1<<CPKeyDown; +CPKeyUpMask=1<<CPKeyUp; +CPFlagsChangedMask=1<<CPFlagsChanged; +CPAppKitDefinedMask=1<<CPAppKitDefined; +CPSystemDefinedMask=1<<CPSystemDefined; +CPApplicationDefinedMask=1<<CPApplicationDefined; +CPPeriodicMask=1<<CPPeriodic; +CPScrollWheelMask=1<<CPScrollWheel; +CPAnyEventMask=4294967295; +CPUpArrowFunctionKey=""; +CPDownArrowFunctionKey=""; +CPLeftArrowFunctionKey=""; +CPRightArrowFunctionKey=""; +CPF1FunctionKey=""; +CPF2FunctionKey=""; +CPF3FunctionKey=""; +CPF4FunctionKey=""; +CPF5FunctionKey=""; +CPF6FunctionKey=""; +CPF7FunctionKey=""; +CPF8FunctionKey=""; +CPF9FunctionKey=""; +CPF10FunctionKey=""; +CPF11FunctionKey=""; +CPF12FunctionKey=""; +CPF13FunctionKey=""; +CPF14FunctionKey=""; +CPF15FunctionKey=""; +CPF16FunctionKey=""; +CPF17FunctionKey=""; +CPF18FunctionKey=""; +CPF19FunctionKey=""; +CPF20FunctionKey=""; +CPF21FunctionKey=""; +CPF22FunctionKey=""; +CPF23FunctionKey=""; +CPF24FunctionKey=""; +CPF25FunctionKey=""; +CPF26FunctionKey=""; +CPF27FunctionKey=""; +CPF28FunctionKey=""; +CPF29FunctionKey=""; +CPF30FunctionKey=""; +CPF31FunctionKey=""; +CPF32FunctionKey=""; +CPF33FunctionKey=""; +CPF34FunctionKey=""; +CPF35FunctionKey=""; +CPInsertFunctionKey=""; +CPDeleteFunctionKey=""; +CPHomeFunctionKey=""; +CPBeginFunctionKey=""; +CPEndFunctionKey=""; +CPPageUpFunctionKey=""; +CPPageDownFunctionKey=""; +CPPrintScreenFunctionKey=""; +CPScrollLockFunctionKey=""; +CPPauseFunctionKey=""; +CPSysReqFunctionKey=""; +CPBreakFunctionKey=""; +CPResetFunctionKey=""; +CPStopFunctionKey=""; +CPMenuFunctionKey=""; +CPUserFunctionKey=""; +CPSystemFunctionKey=""; +CPPrintFunctionKey=""; +CPClearLineFunctionKey=""; +CPClearDisplayFunctionKey=""; +CPInsertLineFunctionKey=""; +CPDeleteLineFunctionKey=""; +CPInsertCharFunctionKey=""; +CPDeleteCharFunctionKey=""; +CPPrevFunctionKey=""; +CPNextFunctionKey=""; +CPSelectFunctionKey=""; +CPExecuteFunctionKey=""; +CPUndoFunctionKey=""; +CPRedoFunctionKey=""; +CPFindFunctionKey=""; +CPHelpFunctionKey=""; +CPModeSwitchFunctionKey=""; +CPEscapeFunctionKey=""; +CPDOMEventDoubleClick="dblclick",CPDOMEventMouseDown="mousedown",CPDOMEventMouseUp="mouseup",CPDOMEventMouseMoved="mousemove",CPDOMEventMouseDragged="mousedrag",CPDOMEventKeyUp="keyup",CPDOMEventKeyDown="keydown",CPDOMEventKeyPress="keypress"; +CPDOMEventCopy="copy"; +CPDOMEventPaste="paste"; +CPDOMEventScrollWheel="mousewheel"; +CPDOMEventTouchStart="touchstart"; +CPDOMEventTouchMove="touchmove"; +CPDOMEventTouchEnd="touchend"; +CPDOMEventTouchCancel="touchcancel"; +var _1=0,_2=nil,_3=new RegExp("[A-Z]"); +var _4=objj_allocateClassPair(CPObject,"CPEvent"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_type"),new objj_ivar("_location"),new objj_ivar("_modifierFlags"),new objj_ivar("_timestamp"),new objj_ivar("_context"),new objj_ivar("_eventNumber"),new objj_ivar("_clickCount"),new objj_ivar("_pressure"),new objj_ivar("_window"),new objj_ivar("_windowNumber"),new objj_ivar("_characters"),new objj_ivar("_isARepeat"),new objj_ivar("_keyCode"),new objj_ivar("_DOMEvent"),new objj_ivar("_deltaX"),new objj_ivar("_deltaY"),new objj_ivar("_deltaZ")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("_initMouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:"),function(_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPEvent").super_class},"init"); +if(_6){ +_type=_8; +_location=CPPointCreateCopy(_9); +_modifierFlags=_a; +_timestamp=_b; +_context=_d; +_eventNumber=_e; +_clickCount=_f; +_pressure=_10; +_window=objj_msgSend(CPApp,"windowWithWindowNumber:",_c); +} +return _6; +} +}),new objj_method(sel_getUid("_initKeyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:"),function(_11,_12,_13,_14,_15,_16,_17,_18,_19,_1a,_1b,_1c){ +with(_11){ +_11=objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPEvent").super_class},"init"); +if(_11){ +_type=_13; +_location=CPPointCreateCopy(_14); +_modifierFlags=_15; +_timestamp=_16; +_context=_18; +_characters=_19; +_charactersIgnoringModifiers=_1a; +_isARepeat=_1b; +_keyCode=_1c; +_windowNumber=_17; +} +return _11; +} +}),new objj_method(sel_getUid("_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:"),function(_1d,_1e,_1f,_20,_21,_22,_23,_24,_25,_26,_27){ +with(_1d){ +_1d=objj_msgSendSuper({receiver:_1d,super_class:objj_getClass("CPEvent").super_class},"init"); +if(_1d){ +_type=_1f; +_location=CPPointCreateCopy(_20); +_modifierFlags=_21; +_timestamp=_22; +_context=_24; +_subtype=_25; +_data1=_26; +_data2=_27; +} +return _1d; +} +}),new objj_method(sel_getUid("locationInWindow"),function(_28,_29){ +with(_28){ +return {x:_location.x,y:_location.y}; +} +}),new objj_method(sel_getUid("globalLocation"),function(_2a,_2b){ +with(_2a){ +var _2c=objj_msgSend(_2a,"window"),_2d=objj_msgSend(_2a,"locationInWindow"); +if(_2c){ +return objj_msgSend(_2c,"convertBaseToGlobal:",_2d); +} +return _2d; +} +}),new objj_method(sel_getUid("modifierFlags"),function(_2e,_2f){ +with(_2e){ +return _modifierFlags; +} +}),new objj_method(sel_getUid("timestamp"),function(_30,_31){ +with(_30){ +return _timestamp; +} +}),new objj_method(sel_getUid("type"),function(_32,_33){ +with(_32){ +return _type; +} +}),new objj_method(sel_getUid("window"),function(_34,_35){ +with(_34){ +if(!_window){ +_window=objj_msgSend(CPApp,"windowWithWindowNumber:",_windowNumber); +} +return _window; +} +}),new objj_method(sel_getUid("windowNumber"),function(_36,_37){ +with(_36){ +return _windowNumber; +} +}),new objj_method(sel_getUid("buttonNumber"),function(_38,_39){ +with(_38){ +if(_type===CPRightMouseDown||_type===CPRightMouseUp||_type===CPRightMouseDragged){ +return 1; +} +return 0; +} +}),new objj_method(sel_getUid("clickCount"),function(_3a,_3b){ +with(_3a){ +return _clickCount; +} +}),new objj_method(sel_getUid("characters"),function(_3c,_3d){ +with(_3c){ +return _characters; +} +}),new objj_method(sel_getUid("charactersIgnoringModifiers"),function(_3e,_3f){ +with(_3e){ +return _charactersIgnoringModifiers; +} +}),new objj_method(sel_getUid("isARepeat"),function(_40,_41){ +with(_40){ +return _isARepeat; +} +}),new objj_method(sel_getUid("keyCode"),function(_42,_43){ +with(_42){ +return _keyCode; +} +}),new objj_method(sel_getUid("pressure"),function(_44,_45){ +with(_44){ +return _pressure; +} +}),new objj_method(sel_getUid("_DOMEvent"),function(_46,_47){ +with(_46){ +return _DOMEvent; +} +}),new objj_method(sel_getUid("deltaX"),function(_48,_49){ +with(_48){ +return _deltaX; +} +}),new objj_method(sel_getUid("deltaY"),function(_4a,_4b){ +with(_4a){ +return _deltaY; +} +}),new objj_method(sel_getUid("deltaZ"),function(_4c,_4d){ +with(_4c){ +return _deltaZ; +} +}),new objj_method(sel_getUid("_triggersKeyEquivalent:withModifierMask:"),function(_4e,_4f,_50,_51){ +with(_4e){ +if(!_50){ +return NO; +} +if(_3.test(_50)){ +_51|=CPShiftKeyMask; +} +if(CPBrowserIsOperatingSystem(CPWindowsOperatingSystem)&&(_51&CPCommandKeyMask)){ +_51|=CPControlKeyMask; +_51&=~CPCommandKeyMask; +} +if((_modifierFlags&(CPShiftKeyMask|CPAlternateKeyMask|CPCommandKeyMask|CPControlKeyMask))!==_51){ +return NO; +} +if(_characters===CPNewlineCharacter||_characters===CPCarriageReturnCharacter){ +return CPNewlineCharacter===_50||CPCarriageReturnCharacter===_50; +} +return objj_msgSend(_characters,"caseInsensitiveCompare:",_50)===CPOrderedSame; +} +}),new objj_method(sel_getUid("_couldBeKeyEquivalent"),function(_52,_53){ +with(_52){ +if(_type!==CPKeyDown){ +return NO; +} +var _54=_characters.length; +if(!_54){ +return NO; +} +if(_modifierFlags&(CPCommandKeyMask|CPControlKeyMask)){ +return YES; +} +for(var i=0;i<_54;i++){ +switch(_characters.charAt(i)){ +case CPBackspaceCharacter: +case CPDeleteCharacter: +case CPDeleteFunctionKey: +case CPTabCharacter: +case CPCarriageReturnCharacter: +case CPNewlineCharacter: +case CPEscapeFunctionKey: +case CPPageUpFunctionKey: +case CPPageDownFunctionKey: +case CPLeftArrowFunctionKey: +case CPUpArrowFunctionKey: +case CPRightArrowFunctionKey: +case CPDownArrowFunctionKey: +return YES; +} +} +return NO; +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:"),function(_55,_56,_57,_58,_59,_5a,_5b,_5c,_5d,_5e,_5f,_60){ +with(_55){ +return objj_msgSend(objj_msgSend(_55,"alloc"),"_initKeyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",_57,_58,_59,_5a,_5b,_5c,_5d,_5e,_5f,_60); +} +}),new objj_method(sel_getUid("mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:"),function(_61,_62,_63,_64,_65,_66,_67,_68,_69,_6a,_6b){ +with(_61){ +return objj_msgSend(objj_msgSend(_61,"alloc"),"_initMouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_63,_64,_65,_66,_67,_68,_69,_6a,_6b); +} +}),new objj_method(sel_getUid("otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:"),function(_6c,_6d,_6e,_6f,_70,_71,_72,_73,_74,_75,_76){ +with(_6c){ +return objj_msgSend(objj_msgSend(_6c,"alloc"),"_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",_6e,_6f,_70,_71,_72,_73,_74,_75,_76); +} +}),new objj_method(sel_getUid("mouseLocation"),function(_77,_78){ +with(_77){ +var _79=objj_msgSend(CPApp,"currentEvent"),_7a=objj_msgSend(_79,"window"); +if(_7a){ +return objj_msgSend(_7a,"convertBaseToGlobal:",objj_msgSend(_79,"locationInWindow")); +} +return objj_msgSend(_79,"locationInWindow"); +} +}),new objj_method(sel_getUid("startPeriodicEventsAfterDelay:withPeriod:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +_1=_7e; +_2=window.setTimeout(function(){ +_2=window.setInterval(_CPEventFirePeriodEvent,_7e*1000); +},_7d*1000); +} +}),new objj_method(sel_getUid("stopPeriodicEvents"),function(_7f,_80){ +with(_7f){ +if(_2===nil){ +return; +} +window.clearTimeout(_2); +_2=nil; +} +})]); +_CPEventFirePeriodEvent=function(){ +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",CPPeriodic,{x:0,y:0},0,0,0,nil,0,0,0)); +}; +var _81=objj_msgSend(CPEvent,"class"); +_CPEventFromNativeMouseEvent=function(_82,_83,_84,_85,_86,_87,_88,_89,_8a,_8b){ +_82.isa=_81; +_82._type=_83; +_82._location=_84; +_82._modifierFlags=_85; +_82._timestamp=_86; +_82._windowNumber=_87; +_82._window=nil; +_82._context=_88; +_82._eventNumber=_89; +_82._clickCount=_8a; +_82._pressure=_8b; +return _82; +}; +p;14;CPFlashMovie.jt;1223;@STATIC;1.0;I;21;Foundation/CPObject.jt;1178; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPFlashMovie"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_filename")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFile:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPFlashMovie").super_class},"init"); +if(_3){ +_filename=_5; +} +return _3; +} +}),new objj_method(sel_getUid("filename"),function(_6,_7){ +with(_6){ +return _filename; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("flashMovieWithFile:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(objj_msgSend(_8,"alloc"),"initWithFile:",_a); +} +})]); +var _b="CPFlashMovieFilenameKey"; +var _1=objj_getClass("CPFlashMovie"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPFlashMovie\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_c,_d,_e){ +with(_c){ +_filename=objj_msgSend(_e,"decodeObjectForKey:",_b); +return _c; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_11,"encodeObject:forKey:",_filename,_b); +} +})]); +p;13;CPFlashView.jt;2158;@STATIC;1.0;i;14;CPFlashMovie.ji;8;CPView.jt;2108; +objj_executeFile("CPFlashMovie.j",YES); +objj_executeFile("CPView.j",YES); +var _1="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; +var _2=objj_allocateClassPair(CPView,"CPFlashView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_flashMovie"),new objj_ivar("_params"),new objj_ivar("_paramElements")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPFlashView").super_class},"initWithFrame:",_6); +if(_4){ +} +return _4; +} +}),new objj_method(sel_getUid("setFlashMovie:"),function(_7,_8,_9){ +with(_7){ +if(_flashMovie==_9){ +return; +} +_flashMovie=_9; +} +}),new objj_method(sel_getUid("flashMovie"),function(_a,_b){ +with(_a){ +return _flashMovie; +} +}),new objj_method(sel_getUid("setFlashVars:"),function(_c,_d,_e){ +with(_c){ +var _f="",_10=objj_msgSend(_e,"keyEnumerator"); +var key; +while(key=objj_msgSend(_10,"nextObject")){ +_f=objj_msgSend(_f,"stringByAppendingFormat:","&%@=%@",key,objj_msgSend(_e,"objectForKey:",key)); +} +if(!_params){ +_params=objj_msgSend(CPDictionary,"dictionary"); +} +objj_msgSend(_params,"setObject:forKey:",_f,"flashvars"); +objj_msgSend(_c,"setParameters:",_params); +} +}),new objj_method(sel_getUid("flashVars"),function(_11,_12){ +with(_11){ +return objj_msgSend(_params,"objectForKey:","flashvars"); +} +}),new objj_method(sel_getUid("setParameters:"),function(_13,_14,_15){ +with(_13){ +_params=_15; +} +}),new objj_method(sel_getUid("parameters"),function(_16,_17){ +with(_16){ +return _params; +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_18,_19,_1a){ +with(_18){ +objj_msgSend(objj_msgSend(objj_msgSend(_18,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(objj_msgSend(objj_msgSend(_1b,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(objj_msgSend(objj_msgSend(_1e,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +})]); +p;8;CPFont.jt;4442;@STATIC;1.0;t;4423; +var _1={},_2="Arial, sans-serif",_3=new RegExp("\\s*,\\s*","g"); +var _4=objj_allocateClassPair(CPObject,"CPFont"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_size"),new objj_ivar("_ascender"),new objj_ivar("_descender"),new objj_ivar("_lineHeight"),new objj_ivar("_isBold"),new objj_ivar("_cssString")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("_initWithName:size:bold:"),function(_6,_7,_8,_9,_a){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPFont").super_class},"init"); +if(_6){ +_name=_8; +_size=_9; +_ascender=0; +_descender=0; +_lineHeight=0; +_isBold=_a; +_cssString=(_isBold?"bold ":"")+ROUND(_size)+"px "+((_name===_2)?_name:("\""+_name.replace(_3,"\", \"")+"\", "+_2)); +_1[_cssString]=_6; +} +return _6; +} +}),new objj_method(sel_getUid("ascender"),function(_b,_c){ +with(_b){ +if(!_ascender){ +objj_msgSend(_b,"_getMetrics"); +} +return _ascender; +} +}),new objj_method(sel_getUid("descender"),function(_d,_e){ +with(_d){ +if(!_descender){ +objj_msgSend(_d,"_getMetrics"); +} +return _descender; +} +}),new objj_method(sel_getUid("defaultLineHeightForFont"),function(_f,_10){ +with(_f){ +if(!_lineHeight){ +objj_msgSend(_f,"_getMetrics"); +} +return _lineHeight; +} +}),new objj_method(sel_getUid("size"),function(_11,_12){ +with(_11){ +return _size; +} +}),new objj_method(sel_getUid("cssString"),function(_13,_14){ +with(_13){ +return _cssString; +} +}),new objj_method(sel_getUid("familyName"),function(_15,_16){ +with(_15){ +return _name; +} +}),new objj_method(sel_getUid("isEqual:"),function(_17,_18,_19){ +with(_17){ +return objj_msgSend(_19,"isKindOfClass:",objj_msgSend(CPFont,"class"))&&objj_msgSend(_19,"cssString")===objj_msgSend(_17,"cssString"); +} +}),new objj_method(sel_getUid("description"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(CPString,"stringWithFormat:","%@ %@ %f pt.",objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("CPFont").super_class},"description"),objj_msgSend(_1a,"familyName"),objj_msgSend(_1a,"size")); +} +}),new objj_method(sel_getUid("_getMetrics"),function(_1c,_1d){ +with(_1c){ +var _1e=objj_msgSend(CPString,"metricsOfFont:",_1c); +_ascender=objj_msgSend(_1e,"objectForKey:","ascender"); +_descender=objj_msgSend(_1e,"objectForKey:","descender"); +_lineHeight=objj_msgSend(_1e,"objectForKey:","lineHeight"); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("initialize"),function(_1f,_20){ +with(_1f){ +var _21=objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class")),"objectForInfoDictionaryKey:","CPSystemFontFace"); +if(_21){ +_2=_21; +} +} +}),new objj_method(sel_getUid("fontWithName:size:"),function(_22,_23,_24,_25){ +with(_22){ +return _1[(NO?"bold ":"")+ROUND(_25)+"px "+((_24===_2)?_24:("\""+_24.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_24,_25,NO); +} +}),new objj_method(sel_getUid("boldFontWithName:size:"),function(_26,_27,_28,_29){ +with(_26){ +return _1[(YES?"bold ":"")+ROUND(_29)+"px "+((_28===_2)?_28:("\""+_28.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_28,_29,YES); +} +}),new objj_method(sel_getUid("systemFontOfSize:"),function(_2a,_2b,_2c){ +with(_2a){ +return _1[(NO?"bold ":"")+ROUND(_2c)+"px "+((_2===_2)?_2:("\""+_2.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_2,_2c,NO); +} +}),new objj_method(sel_getUid("boldSystemFontOfSize:"),function(_2d,_2e,_2f){ +with(_2d){ +return _1[(YES?"bold ":"")+ROUND(_2f)+"px "+((_2===_2)?_2:("\""+_2.replace(_3,"\", \"")+"\", "+_2))]||objj_msgSend(objj_msgSend(CPFont,"alloc"),"_initWithName:size:bold:",_2,_2f,YES); +} +})]); +var _30="CPFontNameKey",_31="CPFontSizeKey",_32="CPFontIsBoldKey"; +var _4=objj_getClass("CPFont"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPFont\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_33,_34,_35){ +with(_33){ +return objj_msgSend(_33,"_initWithName:size:bold:",objj_msgSend(_35,"decodeObjectForKey:",_30),objj_msgSend(_35,"decodeFloatForKey:",_31),objj_msgSend(_35,"decodeBoolForKey:",_32)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_36,_37,_38){ +with(_36){ +objj_msgSend(_38,"encodeObject:forKey:",_name,_30); +objj_msgSend(_38,"encodeFloat:forKey:",_size,_31); +objj_msgSend(_38,"encodeBool:forKey:",_isBold,_32); +} +})]); +p;15;CPFontManager.jt;3322;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPFont.jt;3257; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPFont.j",NO); +var _1=nil,_2=Nil; +var _3=objj_allocateClassPair(CPObject,"CPFontManager"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_availableFonts")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("availableFonts"),function(_5,_6){ +with(_5){ +if(!_availableFonts){ +_7=document.createElement("span"); +_7.fontSize="24px"; +_7.appendChild(document.createTextNode("mmmmmmmmmml")); +var _8=document.createElement("div"); +_8.style.position="absolute"; +_8.style.top="-1000px"; +_8.appendChild(_7); +document.getElementsByTagName("body")[0].appendChild(_8); +_9=_a(["monospace","serif","sans-serif","cursive"]); +_availableFonts=[]; +for(var i=0;i<_b.length;i++){ +var _c=_d(_b[i]); +if(_c){ +_availableFonts.push(_b[i]); +} +} +} +return _availableFonts; +} +}),new objj_method(sel_getUid("fontWithNameIsAvailable:"),function(_e,_f,_10){ +with(_e){ +return _d(_10); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedFontManager"),function(_11,_12){ +with(_11){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(_2,"alloc"),"init"); +} +return _1; +} +}),new objj_method(sel_getUid("setFontManagerFactory:"),function(_13,_14,_15){ +with(_13){ +_2=_15; +} +})]); +var _7,_9,_b=["American Typewriter","Apple Chancery","Arial","Arial Black","Arial Narrow","Arial Rounded MT Bold","Arial Unicode MS","Big Caslon","Bitstream Vera Sans","Bitstream Vera Sans Mono","Bitstream Vera Serif","Brush Script MT","Cambria","Caslon","Castellar","Cataneo BT","Centaur","Century Gothic","Century Schoolbook","Century Schoolbook L","Comic Sans","Comic Sans MS","Consolas","Constantia","Cooper Black","Copperplate","Copperplate Gothic Bold","Copperplate Gothic Light","Corbel","Courier","Courier New","Futura","Geneva","Georgia","Georgia Ref","Geeza Pro","Gigi","Gill Sans","Gill Sans MT","Gill Sans MT Condensed","Gill Sans MT Ext Condensed Bold","Gill Sans Ultra Bold","Gill Sans Ultra Bold Condensed","Helvetica","Helvetica Narrow","Helvetica Neue","Herculanum","High Tower Text","Highlight LET","Hoefler Text","Impact","Imprint MT Shadow","Lucida","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","Lucida Grande","Lucida Handwriting","Lucida Sans","Lucida Sans Typewriter","Lucida Sans Unicode","Marker Felt","Microsoft Sans Serif","Milano LET","Minion Web","MisterEarl BT","Mistral","Monaco","Monotype Corsiva","Monotype.com","New Century Schoolbook","New York","News Gothic MT","Papyrus","Tahoma","Techno","Tempus Sans ITC","Terminal","Textile","Times","Times New Roman","Tiranti Solid LET","Trebuchet MS","Verdana","Verdana Ref","Zapfino"]; +var _d=function(_16){ +for(var i=0;i<_9.length;i++){ +if(_17(_9[i],_16)){ +return true; +} +} +return false; +}; +var _18={}; +var _17=function(_19,_1a){ +var a; +if(_18[_19]){ +a=_18[_19]; +}else{ +_7.style.fontFamily="\""+_19+"\""; +_18[_19]=a={w:_7.offsetWidth,h:_7.offsetHeight}; +} +_7.style.fontFamily="\""+_1a+"\", \""+_19+"\""; +var _1b=_7.offsetWidth; +var _1c=_7.offsetHeight; +return (a.w!=_1b||a.h!=_1c); +}; +var _a=function(_1d){ +for(var i=0;i<_1d.length;i++){ +for(var j=0;j<i;j++){ +if(_17(_1d[i],_1d[j])){ +return [_1d[i],_1d[j]]; +} +} +} +return [_1d[0]]; +}; +objj_msgSend(CPFontManager,"setFontManagerFactory:",objj_msgSend(CPFontManager,"class")); +p;12;CPGeometry.jt;4219;@STATIC;1.0;i;12;CGGeometry.jt;4183; +objj_executeFile("CGGeometry.j",YES); +CPMinXEdge=0; +CPMinYEdge=1; +CPMaxXEdge=2; +CPMaxYEdge=3; +CPMakePoint=CGPointMake; +CPMakeSize=CGSizeMake; +CPMakeRect=CGRectMake; +CPPointCreateCopy=function(_1){ +return {x:_1.x,y:_1.y}; +}; +CPPointMake=function(x,y){ +return {x:x,y:y}; +}; +CPRectInset=function(_2,dX,dY){ +return CPRectMake(_2.origin.x+dX,_2.origin.y+dY,_2.size.width-2*dX,_2.size.height-2*dY); +}; +CPRectIntegral=function(_3){ +alert("CPRectIntegral unimplemented"); +}; +CPRectIntersection=function(_4,_5){ +var _6=CPRectMake(Math.max(CPRectGetMinX(_4),CPRectGetMinX(_5)),Math.max(CPRectGetMinY(_4),CPRectGetMinY(_5)),0,0); +_6.size.width=Math.min(CPRectGetMaxX(_4),CPRectGetMaxX(_5))-CPRectGetMinX(_6); +_6.size.height=Math.min(CPRectGetMaxY(_4),CPRectGetMaxY(_5))-CPRectGetMinY(_6); +return CPRectIsEmpty(_6)?CPRectMakeZero():_6; +}; +CPRectCreateCopy=function(_7){ +return {origin:CPPointCreateCopy(_7.origin),size:CPSizeCreateCopy(_7.size)}; +}; +CPRectMake=function(x,y,_8,_9){ +return {origin:CPPointMake(x,y),size:CPSizeMake(_8,_9)}; +}; +CPRectOffset=function(_a,dX,dY){ +return CPRectMake(_a.origin.x+dX,_a.origin.y+dY,_a.size.width,_a.size.height); +}; +CPRectStandardize=function(_b){ +var _c=CPRectGetWidth(_b),_d=CPRectGetHeight(_b),_e=CPRectCreateCopy(_b); +if(_c<0){ +_e.origin.x+=_c; +_e.size.width=-_c; +} +if(_d<0){ +_e.origin.y+=_d; +_e.size.height=-_d; +} +return _e; +}; +CPRectUnion=function(_f,_10){ +var _11=Math.min(CPRectGetMinX(_f),CPRectGetMinX(_10)),_12=Math.min(CPRectGetMinY(_f),CPRectGetMinY(_10)),_13=Math.max(CPRectGetMaxX(_f),CPRectGetMaxX(_10)),_14=Math.max(CPRectGetMaxY(_f),CPRectGetMaxY(_10)); +return CPRectMake(_11,_12,_13-_11,_14-_12); +}; +CPSizeCreateCopy=function(_15){ +return {width:_15.width,height:_15.height}; +}; +CPSizeMake=function(_16,_17){ +return {width:_16,height:_17}; +}; +CPRectContainsPoint=function(_18,_19){ +return _19.x>=CPRectGetMinX(_18)&&_19.y>=CPRectGetMinY(_18)&&_19.x<CPRectGetMaxX(_18)&&_19.y<CPRectGetMaxY(_18); +}; +CPRectContainsRect=function(_1a,_1b){ +return CGRectContainsRect(_1a,_1b); +}; +CPPointEqualToPoint=function(_1c,_1d){ +return _1c.x==_1d.x&&_1c.y==_1d.y; +}; +CPRectEqualToRect=function(_1e,_1f){ +return CPPointEqualToPoint(_1e.origin,_1f.origin)&&CPSizeEqualToSize(_1e.size,_1f.size); +}; +CPRectGetHeight=function(_20){ +return _20.size.height; +}; +CPRectGetMaxX=function(_21){ +return _21.origin.x+_21.size.width; +}; +CPRectGetMaxY=function(_22){ +return _22.origin.y+_22.size.height; +}; +CPRectGetMidX=function(_23){ +return _23.origin.x+(_23.size.width)/2; +}; +CPRectGetMidY=function(_24){ +return _24.origin.y+(_24.size.height)/2; +}; +CPRectGetMinX=function(_25){ +return _25.origin.x; +}; +CPRectGetMinY=function(_26){ +return _26.origin.y; +}; +CPRectGetWidth=function(_27){ +return _27.size.width; +}; +CPRectIntersectsRect=function(_28,_29){ +return !CPRectIsEmpty(CPRectIntersection(_28,_29)); +}; +CPRectIsEmpty=function(_2a){ +return _2a.size.width<=0||_2a.size.height<=0; +}; +CPRectIsNull=function(_2b){ +return _2b.size.width<=0||_2b.size.height<=0; +}; +CPDivideRect=function(_2c,_2d,rem,_2e,_2f){ +CGRectDivide(_2c,_2d,rem,_2e,_2f); +}; +CPSizeEqualToSize=function(_30,_31){ +return _30.width==_31.width&&_30.height==_31.height; +}; +CPStringFromPoint=function(_32){ +return "{"+_32.x+", "+_32.y+"}"; +}; +CPStringFromSize=function(_33){ +return "{"+_33.width+", "+_33.height+"}"; +}; +CPStringFromRect=function(_34){ +return "{"+CPStringFromPoint(_34.origin)+", "+CPStringFromSize(_34.size)+"}"; +}; +CPPointFromString=function(_35){ +var _36=_35.indexOf(","); +return {x:parseFloat(_35.substr(1,_36-1),10),y:parseFloat(_35.substring(_36+1,_35.length),10)}; +}; +CPSizeFromString=function(_37){ +var _38=_37.indexOf(","); +return {width:parseFloat(_37.substr(1,_38-1),10),height:parseFloat(_37.substring(_38+1,_37.length),10)}; +}; +CPRectFromString=function(_39){ +var _3a=_39.indexOf(",",_39.indexOf(",")+1); +return {origin:CPPointFromString(_39.substr(1,_3a-1)),size:CPSizeFromString(_39.substring(_3a+2,_39.length))}; +}; +CPPointFromEvent=function(_3b){ +return CPPointMake(_3b.clientX,_3b.clientY,0); +}; +CPSizeMakeZero=function(){ +return CPSizeMake(0,0); +}; +CPRectMakeZero=function(){ +return CPRectMake(0,0,0,0); +}; +CPPointMakeZero=function(){ +return CPPointMake(0,0,0); +}; +p;12;CPGraphics.jt;1766;@STATIC;1.0;i;9;CPColor.ji;19;CPGraphicsContext.jt;1710; +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPGraphicsContext.j",YES); +CPDrawTiledRects=function(_1,_2,_3,_4){ +if(_3.length!=_4.length){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"sides (length: "+_3.length+") and grays (length: "+_4.length+") must have the same length."); +} +var _5=[]; +for(var i=0;i<_4.length;++i){ +_5.push(objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",_4[i],1)); +} +return CPDrawColorTiledRects(_1,_2,_3,_5); +}; +CPDrawColorTiledRects=function(_6,_7,_8,_9){ +if(_8.length!=_9.length){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"sides (length: "+_8.length+") and colors (length: "+_9.length+") must have the same length."); +} +var _a={origin:{x:_6.origin.x,y:_6.origin.y},size:{width:_6.size.width,height:_6.size.height}},_b={origin:{x:0,y:0},size:{width:0,height:0}},_c={origin:{x:0,y:0},size:{width:0,height:0}},_d=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSaveGState(_d); +CGContextSetLineWidth(_d,1); +for(var _e=0;_e<_8.length;++_e){ +var _f=_8[_e]; +CGRectDivide(_a,_b,_c,1,_f); +_a=_c; +_b=CGRectIntersection(_b,_7); +if((_b.size.width<=0||_b.size.height<=0)){ +continue; +} +var _10,_11,_12,_13; +if(_f==CPMinXEdge||_f==CPMaxXEdge){ +if((_b.size.width)<1){ +continue; +} +_10=(_b.origin.x)+0.5; +_11=_10; +_12=(_b.origin.y); +_13=(_b.origin.y+_b.size.height); +}else{ +if((_b.size.height)<1){ +continue; +} +_10=(_b.origin.x); +_11=(_b.origin.x+_b.size.width); +_12=(_b.origin.y)+0.5; +_13=_12; +} +CGContextBeginPath(_d); +CGContextMoveToPoint(_d,_10,_12); +CGContextAddLineToPoint(_d,_11,_13); +CGContextSetStrokeColor(_d,_9[_e]); +CGContextStrokePath(_d); +} +CGContextRestoreGState(_d); +return _a; +}; +p;19;CPGraphicsContext.jt;922;@STATIC;1.0;t;904; +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPGraphicsContext"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_graphicsPort")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithGraphicsPort:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPGraphicsContext").super_class},"init"); +if(_4){ +_graphicsPort=_6; +} +return _4; +} +}),new objj_method(sel_getUid("graphicsPort"),function(_7,_8){ +with(_7){ +return _graphicsPort; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("currentContext"),function(_9,_a){ +with(_9){ +return _1; +} +}),new objj_method(sel_getUid("setCurrentContext:"),function(_b,_c,_d){ +with(_b){ +_1=_d; +} +}),new objj_method(sel_getUid("graphicsContextWithGraphicsPort:flipped:"),function(_e,_f,_10,_11){ +with(_e){ +return objj_msgSend(objj_msgSend(_e,"alloc"),"initWithGraphicsPort:",_10); +} +})]); +p;9;CPImage.jt;8955;@STATIC;1.0;I;21;Foundation/CPBundle.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.jI;21;Foundation/CPString.ji;12;CPGeometry.jt;8776; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPRunLoop.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPGeometry.j",YES); +CPImageLoadStatusInitialized=0; +CPImageLoadStatusLoading=1; +CPImageLoadStatusCompleted=2; +CPImageLoadStatusCancelled=3; +CPImageLoadStatusInvalidData=4; +CPImageLoadStatusUnexpectedEOF=5; +CPImageLoadStatusReadError=6; +CPImageDidLoadNotification="CPImageDidLoadNotification"; +CPImageNameColorPanel="CPImageNameColorPanel"; +CPImageNameColorPanelHighlighted="CPImageNameColorPanelHighlighted"; +var _1={},_2={}; +_2[CPImageNameColorPanel]=CGSizeMake(26,29); +_2[CPImageNameColorPanelHighlighted]=CGSizeMake(26,29); +CPImageInBundle=function(_3,_4,_5){ +if(!_5){ +_5=objj_msgSend(CPBundle,"mainBundle"); +} +if(_4){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5,"pathForResource:",_3),_4); +} +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(_5,"pathForResource:",_3)); +}; +CPAppKitImage=function(_6,_7){ +return CPImageInBundle(_6,_7,objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class"))); +}; +var _8=objj_allocateClassPair(CPObject,"CPImage"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_size"),new objj_ivar("_filename"),new objj_ivar("_name"),new objj_ivar("_delegate"),new objj_ivar("_loadStatus"),new objj_ivar("_image")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("init"),function(_a,_b){ +with(_a){ +return objj_msgSend(_a,"initByReferencingFile:size:","",CGSizeMake(-1,-1)); +} +}),new objj_method(sel_getUid("initByReferencingFile:size:"),function(_c,_d,_e,_f){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPImage").super_class},"init"); +if(_c){ +_size=CPSizeCreateCopy(_f); +_filename=_e; +_loadStatus=CPImageLoadStatusInitialized; +} +return _c; +} +}),new objj_method(sel_getUid("initWithContentsOfFile:size:"),function(_10,_11,_12,_13){ +with(_10){ +_10=objj_msgSend(_10,"initByReferencingFile:size:",_12,_13); +if(_10){ +objj_msgSend(_10,"load"); +} +return _10; +} +}),new objj_method(sel_getUid("initWithContentsOfFile:"),function(_14,_15,_16){ +with(_14){ +_14=objj_msgSend(_14,"initByReferencingFile:size:",_16,CGSizeMake(-1,-1)); +if(_14){ +objj_msgSend(_14,"load"); +} +return _14; +} +}),new objj_method(sel_getUid("filename"),function(_17,_18){ +with(_17){ +return _filename; +} +}),new objj_method(sel_getUid("setSize:"),function(_19,_1a,_1b){ +with(_19){ +_size=CGSizeMakeCopy(_1b); +} +}),new objj_method(sel_getUid("size"),function(_1c,_1d){ +with(_1c){ +return _size; +} +}),new objj_method(sel_getUid("setName:"),function(_1e,_1f,_20){ +with(_1e){ +if(_name===_20){ +return YES; +} +if(_1[_20]){ +return NO; +} +_name=_20; +_1[_20]=_1e; +return YES; +} +}),new objj_method(sel_getUid("name"),function(_21,_22){ +with(_21){ +return _name; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_23,_24,_25){ +with(_23){ +_delegate=_25; +} +}),new objj_method(sel_getUid("delegate"),function(_26,_27){ +with(_26){ +return _delegate; +} +}),new objj_method(sel_getUid("loadStatus"),function(_28,_29){ +with(_28){ +return _loadStatus; +} +}),new objj_method(sel_getUid("load"),function(_2a,_2b){ +with(_2a){ +if(_loadStatus==CPImageLoadStatusLoading||_loadStatus==CPImageLoadStatusCompleted){ +return; +} +_loadStatus=CPImageLoadStatusLoading; +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_2c,_2d){ +with(_2c){ +return NO; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_2e,_2f){ +with(_2e){ +return NO; +} +}),new objj_method(sel_getUid("_derefFromImage"),function(_30,_31){ +with(_30){ +_image.onload=null; +_image.onerror=null; +_image.onabort=null; +} +}),new objj_method(sel_getUid("_imageDidLoad"),function(_32,_33){ +with(_32){ +_loadStatus=CPImageLoadStatusCompleted; +if(!_size||(_size.width==-1&&_size.height==-1)){ +_size=CGSizeMake(_image.width,_image.height); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPImageDidLoadNotification,_32); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("imageDidLoad:"))){ +objj_msgSend(_delegate,"imageDidLoad:",_32); +} +} +}),new objj_method(sel_getUid("_imageDidError"),function(_34,_35){ +with(_34){ +_loadStatus=CPImageLoadStatusReadError; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("imageDidError:"))){ +objj_msgSend(_delegate,"imageDidError:",_34); +} +} +}),new objj_method(sel_getUid("_imageDidAbort"),function(_36,_37){ +with(_36){ +_loadStatus=CPImageLoadStatusCancelled; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("imageDidAbort:"))){ +objj_msgSend(_delegate,"imageDidAbort:",_36); +} +} +})]); +class_addMethods(_9,[new objj_method(sel_getUid("imageNamed:"),function(_38,_39,_3a){ +with(_38){ +var _3b=_1[_3a]; +if(_3b){ +return _3b; +} +var _3c=_2[_3a]; +if(!_3c){ +return nil; +} +if(!_3c.isa){ +_3c=CPAppKitImage("CPImage/"+_3a+".png",_3c); +objj_msgSend(_3c,"setName:",_3a); +_2[_3a]=_3c; +} +return _3c; +} +})]); +var _8=objj_getClass("CPImage"); +if(!_8){ +throw new SyntaxError("*** Could not find definition for class \"CPImage\""); +} +var _9=_8.isa; +class_addMethods(_8,[new objj_method(sel_getUid("initWithCoder:"),function(_3d,_3e,_3f){ +with(_3d){ +return objj_msgSend(_3d,"initWithContentsOfFile:size:",objj_msgSend(_3f,"decodeObjectForKey:","CPFilename"),objj_msgSend(_3f,"decodeSizeForKey:","CPSize")); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_42,"encodeObject:forKey:",_filename,"CPFilename"); +objj_msgSend(_42,"encodeSize:forKey:",_size,"CPSize"); +} +})]); +var _8=objj_allocateClassPair(CPObject,"CPThreePartImage"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_imageSlices"),new objj_ivar("_isVertical")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithImageSlices:isVertical:"),function(_43,_44,_45,_46){ +with(_43){ +_43=objj_msgSendSuper({receiver:_43,super_class:objj_getClass("CPThreePartImage").super_class},"init"); +if(_43){ +_imageSlices=_45; +_isVertical=_46; +} +return _43; +} +}),new objj_method(sel_getUid("filename"),function(_47,_48){ +with(_47){ +return ""; +} +}),new objj_method(sel_getUid("imageSlices"),function(_49,_4a){ +with(_49){ +return _imageSlices; +} +}),new objj_method(sel_getUid("isVertical"),function(_4b,_4c){ +with(_4b){ +return _isVertical; +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_4d,_4e){ +with(_4d){ +return YES; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_4f,_50){ +with(_4f){ +return NO; +} +})]); +var _51="CPThreePartImageImageSlicesKey",_52="CPThreePartImageIsVerticalKey"; +var _8=objj_getClass("CPThreePartImage"); +if(!_8){ +throw new SyntaxError("*** Could not find definition for class \"CPThreePartImage\""); +} +var _9=_8.isa; +class_addMethods(_8,[new objj_method(sel_getUid("initWithCoder:"),function(_53,_54,_55){ +with(_53){ +_53=objj_msgSendSuper({receiver:_53,super_class:objj_getClass("CPThreePartImage").super_class},"init"); +if(_53){ +_imageSlices=objj_msgSend(_55,"decodeObjectForKey:",_51); +_isVertical=objj_msgSend(_55,"decodeBoolForKey:",_52); +} +return _53; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_56,_57,_58){ +with(_56){ +objj_msgSend(_58,"encodeObject:forKey:",_imageSlices,_51); +objj_msgSend(_58,"encodeBool:forKey:",_isVertical,_52); +} +})]); +var _8=objj_allocateClassPair(CPObject,"CPNinePartImage"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_imageSlices")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("initWithImageSlices:"),function(_59,_5a,_5b){ +with(_59){ +_59=objj_msgSendSuper({receiver:_59,super_class:objj_getClass("CPNinePartImage").super_class},"init"); +if(_59){ +_imageSlices=_5b; +} +return _59; +} +}),new objj_method(sel_getUid("filename"),function(_5c,_5d){ +with(_5c){ +return ""; +} +}),new objj_method(sel_getUid("imageSlices"),function(_5e,_5f){ +with(_5e){ +return _imageSlices; +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_60,_61){ +with(_60){ +return NO; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_62,_63){ +with(_62){ +return YES; +} +})]); +var _64="CPNinePartImageImageSlicesKey"; +var _8=objj_getClass("CPNinePartImage"); +if(!_8){ +throw new SyntaxError("*** Could not find definition for class \"CPNinePartImage\""); +} +var _9=_8.isa; +class_addMethods(_8,[new objj_method(sel_getUid("initWithCoder:"),function(_65,_66,_67){ +with(_65){ +_65=objj_msgSendSuper({receiver:_65,super_class:objj_getClass("CPNinePartImage").super_class},"init"); +if(_65){ +_imageSlices=objj_msgSend(_67,"decodeObjectForKey:",_64); +} +return _65; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_68,_69,_6a){ +with(_68){ +objj_msgSend(_6a,"encodeObject:forKey:",_imageSlices,_64); +} +})]); +p;13;CPImageView.jt;8352;@STATIC;1.0;I;33;Foundation/CPNotificationCenter.ji;11;CPControl.ji;9;CPImage.ji;14;CPShadowView.jt;8247; +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPShadowView.j",YES); +CPScaleProportionally=0; +CPScaleToFit=1; +CPScaleNone=2; +CPImageAlignCenter=0; +CPImageAlignTop=1; +CPImageAlignTopLeft=2; +CPImageAlignTopRight=3; +CPImageAlignLeft=4; +CPImageAlignBottom=5; +CPImageAlignBottomLeft=6; +CPImageAlignBottomRight=7; +CPImageAlignRight=8; +var _1=nil,_2=nil; +var _3=3,_4=3,_5=3,_6=5,_7=_5+_6,_8=_3+_4; +var _9=objj_allocateClassPair(CPControl,"CPImageView"),_a=_9.isa; +class_addIvars(_9,[new objj_ivar("_DOMImageElement"),new objj_ivar("_hasShadow"),new objj_ivar("_shadowView"),new objj_ivar("_isEditable"),new objj_ivar("_imageRect"),new objj_ivar("_imageAlignment")]); +objj_registerClassPair(_9); +class_addMethods(_9,[new objj_method(sel_getUid("initWithFrame:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPImageView").super_class},"initWithFrame:",_d); +if(_b){ +} +return _b; +} +}),new objj_method(sel_getUid("image"),function(_e,_f){ +with(_e){ +return objj_msgSend(_e,"objectValue"); +} +}),new objj_method(sel_getUid("setImage:"),function(_10,_11,_12){ +with(_10){ +objj_msgSend(_10,"setObjectValue:",_12); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_13,_14,_15){ +with(_13){ +var _16=objj_msgSend(_13,"objectValue"); +if(_16===_15){ +return; +} +objj_msgSendSuper({receiver:_13,super_class:objj_getClass("CPImageView").super_class},"setObjectValue:",_15); +var _17=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_16){ +objj_msgSend(_17,"removeObserver:name:object:",_13,CPImageDidLoadNotification,_16); +} +var _18=objj_msgSend(_13,"objectValue"); +var _19=objj_msgSend(_18,"size"); +if(_19&&_19.width===-1&&_19.height===-1){ +objj_msgSend(_17,"addObserver:selector:name:object:",_13,sel_getUid("imageDidLoad:"),CPImageDidLoadNotification,_18); +objj_msgSend(_shadowView,"setHidden:",YES); +}else{ +objj_msgSend(_13,"hideOrDisplayContents"); +objj_msgSend(_13,"setNeedsLayout"); +objj_msgSend(_13,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("imageDidLoad:"),function(_1a,_1b,_1c){ +with(_1a){ +objj_msgSend(_1a,"hideOrDisplayContents"); +objj_msgSend(_1a,"setNeedsLayout"); +objj_msgSend(_1a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("hasShadow"),function(_1d,_1e){ +with(_1d){ +return _hasShadow; +} +}),new objj_method(sel_getUid("setHasShadow:"),function(_1f,_20,_21){ +with(_1f){ +if(_hasShadow==_21){ +return; +} +_hasShadow=_21; +if(_hasShadow){ +_shadowView=objj_msgSend(objj_msgSend(CPShadowView,"alloc"),"initWithFrame:",objj_msgSend(_1f,"bounds")); +objj_msgSend(_1f,"addSubview:",_shadowView); +objj_msgSend(_1f,"setNeedsLayout"); +objj_msgSend(_1f,"setNeedsDisplay:",YES); +}else{ +objj_msgSend(_shadowView,"removeFromSuperview"); +_shadowView=nil; +} +objj_msgSend(_1f,"hideOrDisplayContents"); +} +}),new objj_method(sel_getUid("setImageAlignment:"),function(_22,_23,_24){ +with(_22){ +if(_imageAlignment==_24){ +return; +} +_imageAlignment=_24; +if(!objj_msgSend(_22,"image")){ +return; +} +objj_msgSend(_22,"setNeedsLayout"); +objj_msgSend(_22,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("imageAlignment"),function(_25,_26){ +with(_25){ +return _imageAlignment; +} +}),new objj_method(sel_getUid("setImageScaling:"),function(_27,_28,_29){ +with(_27){ +objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPImageView").super_class},"setImageScaling:",_29); +objj_msgSend(_27,"setNeedsLayout"); +objj_msgSend(_27,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("imageScaling"),function(_2a,_2b){ +with(_2a){ +return objj_msgSend(_2a,"currentValueForThemeAttribute:","image-scaling"); +} +}),new objj_method(sel_getUid("hideOrDisplayContents"),function(_2c,_2d){ +with(_2c){ +if(!objj_msgSend(_2c,"image")){ +objj_msgSend(_shadowView,"setHidden:",YES); +}else{ +objj_msgSend(_shadowView,"setHidden:",NO); +} +} +}),new objj_method(sel_getUid("imageRect"),function(_2e,_2f){ +with(_2e){ +return _imageRect; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_30,_31){ +with(_30){ +if(!objj_msgSend(_30,"image")){ +return; +} +var _32=objj_msgSend(_30,"bounds"),_33=objj_msgSend(_30,"image"),_34=objj_msgSend(_30,"currentValueForThemeAttribute:","image-scaling"),x=0,y=0,_35=(_hasShadow?_8:0),_36=(_hasShadow?_7:0),_37=(_32.size.width),_38=(_32.size.height),_39=_37-_35,_3a=_38-_36; +if(_34===CPScaleToFit){ +}else{ +var _3b=objj_msgSend(_33,"size"); +if(_3b.width==-1&&_3b.height==-1){ +return; +} +if(_34===CPScaleProportionally){ +if(_39>=_3b.width&&_3a>=_3b.height){ +_39=_3b.width; +_3a=_3b.height; +}else{ +var _3c=_3b.width/_3b.height,_3d=_39/_3a; +if(_3d>_3c){ +_39=_3a*_3c; +}else{ +_3a=_39/_3c; +} +} +}else{ +_39=_3b.width; +_3a=_3b.height; +} +if(_34==CPScaleNone){ +} +var x,y; +switch(_imageAlignment){ +case CPImageAlignLeft: +case CPImageAlignTopLeft: +case CPImageAlignBottomLeft: +x=0; +break; +case CPImageAlignRight: +case CPImageAlignTopRight: +case CPImageAlignBottomRight: +x=_37-_39; +break; +default: +x=(_37-_39)/2; +break; +} +switch(_imageAlignment){ +case CPImageAlignTop: +case CPImageAlignTopLeft: +case CPImageAlignTopRight: +y=0; +break; +case CPImageAlignBottom: +case CPImageAlignBottomLeft: +case CPImageAlignBottomRight: +y=_38-_3a; +break; +default: +y=(_38-_3a)/2; +break; +} +} +_imageRect={origin:{x:x,y:y},size:{width:_39,height:_3a}}; +if(_hasShadow){ +objj_msgSend(_shadowView,"setFrame:",{origin:{x:x-_3,y:y-_5},size:{width:_39+_35,height:_3a+_36}}); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_3e,_3f,_40){ +with(_3e){ +objj_msgSend(objj_msgSend(_3e,"nextResponder"),"mouseDown:",_40); +} +}),new objj_method(sel_getUid("setEditable:"),function(_41,_42,_43){ +with(_41){ +if(_isEditable===_43){ +return; +} +_isEditable=_43; +if(_isEditable){ +objj_msgSend(_41,"registerForDraggedTypes:",[CPImagesPboardType]); +}else{ +var _44=objj_msgSend(_41,"registeredDraggedTypes"); +objj_msgSend(_41,"unregisterDraggedTypes"); +objj_msgSend(_44,"removeObjectIdenticalTo:",CPImagesPboardType); +objj_msgSend(_41,"registerForDraggedTypes:",_44); +} +} +}),new objj_method(sel_getUid("isEditable"),function(_45,_46){ +with(_45){ +return _isEditable; +} +}),new objj_method(sel_getUid("performDragOperation:"),function(_47,_48,_49){ +with(_47){ +var _4a=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(objj_msgSend(_49,"draggingPasteboard"),"dataForType:",CPImagesPboardType)); +if(objj_msgSend(_4a,"count")){ +objj_msgSend(_47,"setImage:",_4a[0]); +objj_msgSend(_47,"sendAction:to:",objj_msgSend(_47,"action"),objj_msgSend(_47,"target")); +} +return YES; +} +})]); +class_addMethods(_a,[new objj_method(sel_getUid("initialize"),function(_4b,_4c){ +with(_4b){ +var _4d=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPView,"class")); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:",objj_msgSend(_4d,"pathForResource:","empty.png")); +} +})]); +var _4e="CPImageViewImageKey",_4f="CPImageViewImageScalingKey",_50="CPImageViewImageAlignmentKey",_51="CPImageViewHasShadowKey",_52="CPImageViewIsEditableKey"; +var _9=objj_getClass("CPImageView"); +if(!_9){ +throw new SyntaxError("*** Could not find definition for class \"CPImageView\""); +} +var _a=_9.isa; +class_addMethods(_9,[new objj_method(sel_getUid("initWithCoder:"),function(_53,_54,_55){ +with(_53){ +_53=objj_msgSendSuper({receiver:_53,super_class:objj_getClass("CPImageView").super_class},"initWithCoder:",_55); +if(_53){ +objj_msgSend(_53,"setHasShadow:",objj_msgSend(_55,"decodeBoolForKey:",_51)); +objj_msgSend(_53,"setImageAlignment:",objj_msgSend(_55,"decodeIntForKey:",_50)); +if(objj_msgSend(_55,"decodeBoolForKey:",_52)||NO){ +objj_msgSend(_53,"setEditable:",YES); +} +objj_msgSend(_53,"setNeedsLayout"); +objj_msgSend(_53,"setNeedsDisplay:",YES); +} +return _53; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_56,_57,_58){ +with(_56){ +if(_shadowView){ +var _59=_subviews; +_subviews=objj_msgSend(_subviews,"copy"); +objj_msgSend(_subviews,"removeObjectIdenticalTo:",_shadowView); +} +objj_msgSendSuper({receiver:_56,super_class:objj_getClass("CPImageView").super_class},"encodeWithCoder:",_58); +if(_shadowView){ +_subviews=_59; +} +objj_msgSend(_58,"encodeBool:forKey:",_hasShadow,_51); +objj_msgSend(_58,"encodeInt:forKey:",_imageAlignment,_50); +if(_isEditable){ +objj_msgSend(_58,"encodeBool:forKey:",_isEditable,_52); +} +} +})]); +p;14;CPKeyBinding.jt;9144;@STATIC;1.0;I;21;Foundation/CPObject.jt;9099; +objj_executeFile("Foundation/CPObject.j",NO); +CPStandardKeyBindings={"@.":"cancelOperation:","^a":"moveToBeginningOfParagraph:","^$a":"moveToBeginningOfParagraphAndModifySelection:","^b":"moveBackward:","^$b":"moveBackwardAndModifySelection:","^~b":"moveWordBackward:","^~$b":"moveWordBackwardAndModifySelection:","^d":"deleteForward:","^e":"moveToEndOfParagraph:","^$e":"moveToEndOfParagraphAndModifySelection:","^f":"moveForward:","^$f":"moveForwardAndModifySelection:","^~f":"moveWordForward:","^~$f":"moveWordForwardAndModifySelection:","^h":"deleteBackward:","^k":"deleteToEndOfParagraph:","^l":"centerSelectionInVisibleArea:","^n":"moveDown:","^$n":"moveDownAndModifySelection:","^o":["insertNewlineIgnoringFieldEditor:","moveBackward:"],"^p":"moveUp:","^$p":"moveUpAndModifySelection:","^t":"transpose:","^v":"pageDown:","^$v":"pageDownAndModifySelection:","^y":"yank:"}; +CPStandardKeyBindings[CPNewlineCharacter]="insertNewline:"; +CPStandardKeyBindings[CPCarriageReturnCharacter]="insertNewline:"; +CPStandardKeyBindings[CPEnterCharacter]="insertNewline:"; +CPStandardKeyBindings["~"+CPNewlineCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~"+CPCarriageReturnCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~"+CPEnterCharacter]="insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["^"+CPNewlineCharacter]="insertLineBreak:"; +CPStandardKeyBindings["^"+CPCarriageReturnCharacter]="insertLineBreak:"; +CPStandardKeyBindings["^"+CPEnterCharacter]="insertLineBreak:"; +CPStandardKeyBindings[CPBackspaceCharacter]="deleteBackward:"; +CPStandardKeyBindings["~"+CPBackspaceCharacter]="deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteCharacter]="deleteBackward:"; +CPStandardKeyBindings["@"+CPDeleteCharacter]="deleteToBeginningOfLine:"; +CPStandardKeyBindings["~"+CPDeleteCharacter]="deleteWordBackward:"; +CPStandardKeyBindings["^"+CPDeleteCharacter]="deleteBackwardByDecomposingPreviousCharacter:"; +CPStandardKeyBindings["^~"+CPDeleteCharacter]="deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteFunctionKey]="deleteForward:"; +CPStandardKeyBindings["~"+CPDeleteFunctionKey]="deleteWordForward:"; +CPStandardKeyBindings[CPTabCharacter]="insertTab:"; +CPStandardKeyBindings["~"+CPTabCharacter]="insertTabIgnoringFieldEditor:"; +CPStandardKeyBindings["^"+CPTabCharacter]="selectNextKeyView:"; +CPStandardKeyBindings[CPBackTabCharacter]="insertBacktab:"; +CPStandardKeyBindings["^"+CPBackTabCharacter]="selectPreviousKeyView:"; +CPStandardKeyBindings[CPEscapeFunctionKey]="cancelOperation:"; +CPStandardKeyBindings["~"+CPEscapeFunctionKey]="complete:"; +CPStandardKeyBindings[CPF5FunctionKey]="complete:"; +CPStandardKeyBindings[CPLeftArrowFunctionKey]="moveLeft:"; +CPStandardKeyBindings["~"+CPLeftArrowFunctionKey]="moveWordLeft:"; +CPStandardKeyBindings["^"+CPLeftArrowFunctionKey]="moveToLeftEndOfLine:"; +CPStandardKeyBindings["@"+CPLeftArrowFunctionKey]="moveToLeftEndOfLine:"; +CPStandardKeyBindings["$"+CPLeftArrowFunctionKey]="moveLeftAndModifySelection:"; +CPStandardKeyBindings["$~"+CPLeftArrowFunctionKey]="moveWordLeftAndModifySelection:"; +CPStandardKeyBindings["$^"+CPLeftArrowFunctionKey]="moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@"+CPLeftArrowFunctionKey]="moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^"+CPLeftArrowFunctionKey]="makeBaseWritingDirectionRightToLeft:"; +CPStandardKeyBindings["@^~"+CPLeftArrowFunctionKey]="makeTextWritingDirectionRightToLeft:"; +CPStandardKeyBindings[CPRightArrowFunctionKey]="moveRight:"; +CPStandardKeyBindings["~"+CPRightArrowFunctionKey]="moveWordRight:"; +CPStandardKeyBindings["^"+CPRightArrowFunctionKey]="moveToRightEndOfLine:"; +CPStandardKeyBindings["@"+CPRightArrowFunctionKey]="moveToRightEndOfLine:"; +CPStandardKeyBindings["$"+CPRightArrowFunctionKey]="moveRightAndModifySelection:"; +CPStandardKeyBindings["$~"+CPRightArrowFunctionKey]="moveWordRightAndModifySelection:"; +CPStandardKeyBindings["$^"+CPRightArrowFunctionKey]="moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@"+CPRightArrowFunctionKey]="moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^"+CPRightArrowFunctionKey]="makeBaseWritingDirectionLeftToRight:"; +CPStandardKeyBindings["@^~"+CPRightArrowFunctionKey]="makeTextWritingDirectionLeftToRight:"; +CPStandardKeyBindings[CPUpArrowFunctionKey]="moveUp:"; +CPStandardKeyBindings["~"+CPUpArrowFunctionKey]=["moveBackward:","moveToBeginningOfParagraph:"]; +CPStandardKeyBindings["^"+CPUpArrowFunctionKey]="scrollPageUp:"; +CPStandardKeyBindings["@"+CPUpArrowFunctionKey]="moveToBeginningOfDocument:"; +CPStandardKeyBindings["$"+CPUpArrowFunctionKey]="moveUpAndModifySelection:"; +CPStandardKeyBindings["$~"+CPUpArrowFunctionKey]="moveParagraphBackwardAndModifySelection:"; +CPStandardKeyBindings["$@"+CPUpArrowFunctionKey]="moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPDownArrowFunctionKey]="moveDown:"; +CPStandardKeyBindings["~"+CPDownArrowFunctionKey]=["moveForward:","moveToEndOfParagraph:"]; +CPStandardKeyBindings["^"+CPDownArrowFunctionKey]="scrollPageDown:"; +CPStandardKeyBindings["@"+CPDownArrowFunctionKey]="moveToEndOfDocument:"; +CPStandardKeyBindings["$"+CPDownArrowFunctionKey]="moveDownAndModifySelection:"; +CPStandardKeyBindings["$~"+CPDownArrowFunctionKey]="moveParagraphForwardAndModifySelection:"; +CPStandardKeyBindings["$@"+CPDownArrowFunctionKey]="moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings["@^"+CPDownArrowFunctionKey]="makeBaseWritingDirectionNatural:"; +CPStandardKeyBindings["@^~"+CPDownArrowFunctionKey]="makeTextWritingDirectionNatural:"; +CPStandardKeyBindings[CPHomeFunctionKey]="scrollToBeginningOfDocument:"; +CPStandardKeyBindings["$"+CPHomeFunctionKey]="moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPEndFunctionKey]="scrollToEndOfDocument:"; +CPStandardKeyBindings["$"+CPEndFunctionKey]="moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPPageUpFunctionKey]="scrollPageUp:"; +CPStandardKeyBindings["~"+CPPageUpFunctionKey]="pageUp:"; +CPStandardKeyBindings["$"+CPPageUpFunctionKey]="pageUpAndModifySelection:"; +CPStandardKeyBindings[CPPageDownFunctionKey]="scrollPageDown:"; +CPStandardKeyBindings["~"+CPPageDownFunctionKey]="pageDown:"; +CPStandardKeyBindings["$"+CPPageDownFunctionKey]="pageDownAndModifySelection:"; +var _1={}; +var _2=objj_allocateClassPair(CPObject,"CPKeyBinding"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_key"),new objj_ivar("_modifierFlags"),new objj_ivar("_selectors"),new objj_ivar("_cacheName")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithKey:modifierFlags:selectors:"),function(_4,_5,_6,_7,_8){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPKeyBinding").super_class},"init"); +if(_4){ +_key=_6; +_modifierFlags=_7; +_selectors=_8; +var _9=[]; +if(_modifierFlags&CPCommandKeyMask){ +_9.push("@"); +} +if(_modifierFlags&CPControlKeyMask){ +_9.push("^"); +} +if(_modifierFlags&CPAlternateKeyMask){ +_9.push("~"); +} +if(_modifierFlags&CPShiftKeyMask){ +_9.push("$"); +} +_9.push(_key); +_cacheName=_9.join(""); +} +return _4; +} +}),new objj_method(sel_getUid("key"),function(_a,_b){ +with(_a){ +return _key; +} +}),new objj_method(sel_getUid("modifierFlags"),function(_c,_d){ +with(_c){ +return _modifierFlags; +} +}),new objj_method(sel_getUid("selectors"),function(_e,_f){ +with(_e){ +return _selectors; +} +}),new objj_method(sel_getUid("_cacheName"),function(_10,_11){ +with(_10){ +return _cacheName; +} +}),new objj_method(sel_getUid("isEqual:"),function(_12,_13,rhs){ +with(_12){ +return _key===objj_msgSend(rhs,"key")&&_modifierFlags===objj_msgSend(rhs,"modifierFlags"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_14,_15){ +with(_14){ +if(objj_msgSend(_14,"class")!==CPKeyBinding){ +return; +} +objj_msgSend(_14,"createKeyBindingsFromJSObject:",CPStandardKeyBindings); +} +}),new objj_method(sel_getUid("createKeyBindingsFromJSObject:"),function(_16,_17,_18){ +with(_16){ +var _19; +for(_19 in _18){ +var _1a=_19.split(""),_1b=(objj_msgSend(_1a,"containsObject:","$")?CPShiftKeyMask:0)|(objj_msgSend(_1a,"containsObject:","^")?CPControlKeyMask:0)|(objj_msgSend(_1a,"containsObject:","~")?CPAlternateKeyMask:0)|(objj_msgSend(_1a,"containsObject:","@")?CPCommandKeyMask:0); +var _1c=_18[_19]; +if(!objj_msgSend(_1c,"isKindOfClass:",CPArray)){ +_1c=[_1c]; +} +var _1d=objj_msgSend(objj_msgSend(_16,"alloc"),"initWithKey:modifierFlags:selectors:",objj_msgSend(_1a,"lastObject"),_1b,_1c); +objj_msgSend(_16,"cacheKeyBinding:",_1d); +} +} +}),new objj_method(sel_getUid("cacheKeyBinding:"),function(_1e,_1f,_20){ +with(_1e){ +if(!_20){ +return; +} +_1[objj_msgSend(_20,"_cacheName")]=_20; +} +}),new objj_method(sel_getUid("keyBindingForKey:modifierFlags:"),function(_21,_22,_23,_24){ +with(_21){ +var _25=objj_msgSend(objj_msgSend(_21,"alloc"),"initWithKey:modifierFlags:selectors:",_23,_24,nil); +return _1[objj_msgSend(_25,"_cacheName")]; +} +}),new objj_method(sel_getUid("selectorsForKey:modifierFlags:"),function(_26,_27,_28,_29){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"keyBindingForKey:modifierFlags:",_28,_29),"selectors"); +} +})]); +p;19;CPKeyValueBinding.jt;12807;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;31;Foundation/CPValueTransformer.jt;12670; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPValueTransformer.j",NO); +var _1=objj_msgSend(CPDictionary,"new"),_2=objj_msgSend(CPDictionary,"new"); +var _3=0,_4=1; +var _5=objj_allocateClassPair(CPObject,"CPKeyValueBinding"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_info"),new objj_ivar("_source")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithBinding:name:to:keyPath:options:from:"),function(_7,_8,_9,_a,_b,_c,_d,_e){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPKeyValueBinding").super_class},"init"); +if(_7){ +_source=_e; +_info=objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_b,_c],[CPObservedObjectKey,CPObservedKeyPathKey]); +if(_d){ +objj_msgSend(_info,"setObject:forKey:",_d,CPOptionsKey); +} +objj_msgSend(_b,"addObserver:forKeyPath:options:context:",_7,_c,CPKeyValueObservingOptionNew,_9); +var _f=objj_msgSend(_2,"objectForKey:",objj_msgSend(_source,"hash")); +if(!_f){ +_f=objj_msgSend(CPDictionary,"new"); +objj_msgSend(_2,"setObject:forKey:",_f,objj_msgSend(_source,"hash")); +} +objj_msgSend(_f,"setObject:forKey:",_7,_a); +objj_msgSend(_7,"setValueFor:",_9); +} +return _7; +} +}),new objj_method(sel_getUid("setValueFor:"),function(_10,_11,_12){ +with(_10){ +var _13=objj_msgSend(_info,"objectForKey:",CPObservedObjectKey),_14=objj_msgSend(_info,"objectForKey:",CPObservedKeyPathKey),_15=objj_msgSend(_info,"objectForKey:",CPOptionsKey),_16=objj_msgSend(_13,"valueForKeyPath:",_14); +_16=objj_msgSend(_10,"transformValue:withOptions:",_16,_15); +objj_msgSend(_source,"setValue:forKey:",_16,_12); +} +}),new objj_method(sel_getUid("reverseSetValueFor:"),function(_17,_18,_19){ +with(_17){ +var _1a=objj_msgSend(_info,"objectForKey:",CPObservedObjectKey),_1b=objj_msgSend(_info,"objectForKey:",CPObservedKeyPathKey),_1c=objj_msgSend(_info,"objectForKey:",CPOptionsKey),_1d=objj_msgSend(_source,"valueForKeyPath:",_19); +_1d=objj_msgSend(_17,"reverseTransformValue:withOptions:",_1d,_1c); +objj_msgSend(_1a,"setValue:forKeyPath:",_1d,_1b); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_1e,_1f,_20,_21,_22,_23){ +with(_1e){ +if(!_22){ +return; +} +objj_msgSend(_1e,"setValueFor:",_23); +} +}),new objj_method(sel_getUid("transformValue:withOptions:"),function(_24,_25,_26,_27){ +with(_24){ +var _28,_29,_2a; +var _28=objj_msgSend(_27,"objectForKey:",CPValueTransformerNameBindingOption),_29; +if(_28){ +_29=objj_msgSend(CPValueTransformer,"valueTransformerForName:",_28); +if(!_29){ +var _2b=CPClassFromString(_28); +if(_2b){ +_29=objj_msgSend(objj_msgSend(_2b,"alloc"),"init"); +objj_msgSend(_2b,"setValueTransformer:forName:",_29,_28); +} +} +}else{ +_29=objj_msgSend(_27,"objectForKey:",CPValueTransformerBindingOption); +} +if(_29){ +_26=objj_msgSend(_29,"transformedValue:",_26); +} +switch(_26){ +case CPMultipleValuesMarker: +return objj_msgSend(_27,"objectForKey:",CPMultipleValuesPlaceholderBindingOption)||"Multiple Values"; +case CPNoSelectionMarker: +return objj_msgSend(_27,"objectForKey:",CPNoSelectionPlaceholderBindingOption)||"No Selection"; +case CPNotApplicableMarker: +if(objj_msgSend(_27,"objectForKey:",CPRaisesForNotApplicableKeysBindingOption)){ +objj_msgSend(CPException,"raise:reason:",CPGenericException,"can't transform non applicable key on: "+_source+" value: "+_26); +} +return objj_msgSend(_27,"objectForKey:",CPNotApplicablePlaceholderBindingOption)||"Not Applicable"; +case nil: +case undefined: +return objj_msgSend(_27,"objectForKey:",CPNullPlaceholderBindingOption)||nil; +} +return _26; +} +}),new objj_method(sel_getUid("reverseTransformValue:withOptions:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +var _30=objj_msgSend(_2f,"objectForKey:",CPValueTransformerNameBindingOption),_31; +if(_30){ +_31=objj_msgSend(CPValueTransformer,"valueTransformerForName:",_30); +}else{ +_31=objj_msgSend(_2f,"objectForKey:",CPValueTransformerBindingOption); +} +if(_31&&objj_msgSend(objj_msgSend(_31,"class"),"allowsReverseTransformation")){ +_2e=objj_msgSend(_31,"transformedValue:",_2e); +} +return _2e; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("exposeBinding:forClass:"),function(_32,_33,_34,_35){ +with(_32){ +var _36=objj_msgSend(_1,"objectForKey:",objj_msgSend(_35,"hash")); +if(!_36){ +_36=[]; +objj_msgSend(_1,"setObject:forKey:",_36,objj_msgSend(_35,"hash")); +} +_36.push(_34); +} +}),new objj_method(sel_getUid("exposedBindingsForClass:"),function(_37,_38,_39){ +with(_37){ +return objj_msgSend(objj_msgSend(_1,"objectForKey:",objj_msgSend(_39,"hash")),"copy"); +} +}),new objj_method(sel_getUid("getBinding:forObject:"),function(_3a,_3b,_3c,_3d){ +with(_3a){ +return objj_msgSend(objj_msgSend(_2,"objectForKey:",objj_msgSend(_3d,"hash")),"objectForKey:",_3c); +} +}),new objj_method(sel_getUid("infoForBinding:forObject:"),function(_3e,_3f,_40,_41){ +with(_3e){ +var _42=objj_msgSend(_3e,"getBinding:forObject:",_40,_41); +if(_42){ +return _42._info; +} +return nil; +} +}),new objj_method(sel_getUid("allBindingsForObject:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_2,"objectForKey:",objj_msgSend(_45,"hash")); +} +}),new objj_method(sel_getUid("unbind:forObject:"),function(_46,_47,_48,_49){ +with(_46){ +var _4a=objj_msgSend(_2,"objectForKey:",objj_msgSend(_49,"hash")); +if(!_4a){ +return; +} +var _4b=objj_msgSend(_4a,"objectForKey:",_48); +if(!_4b){ +return; +} +var _4c=_4b._info,_4d=objj_msgSend(_4c,"objectForKey:",CPObservedObjectKey),_4e=objj_msgSend(_4c,"objectForKey:",CPObservedKeyPathKey); +objj_msgSend(_4d,"removeObserver:forKeyPath:",_4b,_4e); +objj_msgSend(_4a,"removeObjectForKey:",_48); +} +}),new objj_method(sel_getUid("unbindAllForObject:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSend(_2,"objectForKey:",objj_msgSend(_51,"hash")); +if(!_52){ +return; +} +var _53=objj_msgSend(_52,"allKeys"),_54=_53.length; +while(_54--){ +objj_msgSend(_51,"unbind:",objj_msgSend(_52,"objectForKey:",_53[_54])); +} +objj_msgSend(_2,"removeObjectForKey:",objj_msgSend(_51,"hash")); +} +})]); +var _5=objj_getClass("CPObject"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("exposedBindings"),function(_55,_56){ +with(_55){ +var _57=[],_58=objj_msgSend(_55,"class"); +while(_58){ +var _59=objj_msgSend(CPKeyValueBinding,"exposedBindingsForClass:",_58); +if(_59){ +objj_msgSend(_57,"addObjectsFromArray:",_59); +} +_58=objj_msgSend(_58,"superclass"); +} +return _57; +} +}),new objj_method(sel_getUid("valueClassForBinding:"),function(_5a,_5b,_5c){ +with(_5a){ +return objj_msgSend(CPString,"class"); +} +}),new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"),function(_5d,_5e,_5f,_60,_61,_62){ +with(_5d){ +if(!_60||!_61){ +return CPLog.error("Invalid object or path on "+_5d+" for "+_5f); +} +objj_msgSend(_5d,"unbind:",_5f); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"alloc"),"initWithBinding:name:to:keyPath:options:from:",objj_msgSend(_5d,"_replacementKeyPathForBinding:",_5f),_5f,_60,_61,_62,_5d); +} +}),new objj_method(sel_getUid("infoForBinding:"),function(_63,_64,_65){ +with(_63){ +return objj_msgSend(CPKeyValueBinding,"infoForBinding:forObject:",_65,_63); +} +}),new objj_method(sel_getUid("unbind:"),function(_66,_67,_68){ +with(_66){ +objj_msgSend(CPKeyValueBinding,"unbind:forObject:",_68,_66); +} +}),new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(_69,_6a,_6b){ +with(_69){ +return _6b; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("exposeBinding:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(CPKeyValueBinding,"exposeBinding:forClass:",_6e,objj_msgSend(_6c,"class")); +} +})]); +var _5=objj_allocateClassPair(CPKeyValueBinding,"_CPKeyValueOrBinding"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setValueFor:"),function(_6f,_70,_71){ +with(_6f){ +var _72=objj_msgSend(_2,"valueForKey:",objj_msgSend(_source,"hash")); +if(!_72){ +return; +} +objj_msgSend(_source,"setValue:forKey:",_73(_71,_72,_4),_71); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_74,_75,_76,_77,_78,_79){ +with(_74){ +objj_msgSend(_74,"setValueFor:",_79); +} +})]); +var _5=objj_allocateClassPair(CPKeyValueBinding,"_CPKeyValueAndBinding"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("setValueFor:"),function(_7a,_7b,_7c){ +with(_7a){ +var _7d=objj_msgSend(_2,"objectForKey:",objj_msgSend(_source,"hash")); +if(!_7d){ +return; +} +objj_msgSend(_source,"setValue:forKey:",_73(_7c,_7d,_3),_7c); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_7e,_7f,_80,_81,_82,_83){ +with(_7e){ +objj_msgSend(_7e,"setValueFor:",_83); +} +})]); +var _73=_73=function(key,_84,_85){ +var _86=key,_87,_88=1; +while(_87=objj_msgSend(_84,"objectForKey:",_86)){ +var _89=_87._info,_8a=objj_msgSend(_89,"objectForKey:",CPObservedObjectKey),_8b=objj_msgSend(_89,"objectForKey:",CPObservedKeyPathKey),_8c=objj_msgSend(_89,"objectForKey:",CPOptionsKey); +var _8d=objj_msgSend(_87,"transformValue:withOptions:",objj_msgSend(_8a,"valueForKeyPath:",_8b),_8c); +if(_8d==_85){ +return _85; +} +_86=objj_msgSend(CPString,"stringWithFormat:","%@%i",key,++_88); +} +return !_85; +}; +var _8e=_8e=function(_8f,_90,_91){ +var _92=objj_msgSend(_91,"objectForKey:",_8f),_93=_92._info,_94=objj_msgSend(_93,"objectForKey:",CPObservedObjectKey),_95=objj_msgSend(_93,"objectForKey:",CPObservedKeyPathKey),_96=objj_msgSend(_93,"objectForKey:",CPOptionsKey),_97=objj_msgSend(_94,"valueForKeyPath:",_95),_98=objj_msgSend(_96,"objectForKey:",CPSelectorNameBindingOption); +if(!_97||!_98){ +return; +} +var _99=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",objj_msgSend(_97,"methodSignatureForSelector:",_98)); +objj_msgSend(_99,"setSelector:",_98); +var _9a=_90; +count=1; +while(_92=objj_msgSend(_91,"objectForKey:",_9a)){ +_93=_92._info; +_95=objj_msgSend(_93,"objectForKey:",CPObserverKeyPathKey); +_94=objj_msgSend(objj_msgSend(_93,"objectForKey:",CPObservedObjectKey),"valueForKeyPath:",_95); +if(_94){ +objj_msgSend(_99,"setArgument:atIndex:",_94,++count); +} +_9a=objj_msgSend(CPString,"stringWithFormat:","%@%i",_90,count); +} +objj_msgSend(_99,"invoke"); +}; +CPObservedObjectKey="CPObservedObjectKey"; +CPObservedKeyPathKey="CPObservedKeyPathKey"; +CPOptionsKey="CPOptionsKey"; +CPMultipleValuesMarker="CPMultipleValuesMarker"; +CPNoSelectionMarker="CPNoSelectionMarker"; +CPNotApplicableMarker="CPNotApplicableMarker"; +CPAlignmentBinding="CPAlignmentBinding"; +CPEditableBinding="CPEditableBinding"; +CPEnabledBinding="CPEnabledBinding"; +CPFontBinding="CPFontBinding"; +CPHiddenBinding="CPHiddenBinding"; +CPSelectedIndexBinding="CPSelectedIndexBinding"; +CPTextColorBinding="CPTextColorBinding"; +CPToolTipBinding="CPToolTipBinding"; +CPValueBinding="value"; +CPAllowsEditingMultipleValuesSelectionBindingOption="CPAllowsEditingMultipleValuesSelectionBindingOption"; +CPAllowsNullArgumentBindingOption="CPAllowsNullArgumentBindingOption"; +CPConditionallySetsEditableBindingOption="CPConditionallySetsEditableBindingOption"; +CPConditionallySetsEnabledBindingOption="CPConditionallySetsEnabledBindingOption"; +CPConditionallySetsHiddenBindingOption="CPConditionallySetsHiddenBindingOption"; +CPContinuouslyUpdatesValueBindingOption="CPContinuouslyUpdatesValueBindingOption"; +CPCreatesSortDescriptorBindingOption="CPCreatesSortDescriptorBindingOption"; +CPDeletesObjectsOnRemoveBindingsOption="CPDeletesObjectsOnRemoveBindingsOption"; +CPDisplayNameBindingOption="CPDisplayNameBindingOption"; +CPDisplayPatternBindingOption="CPDisplayPatternBindingOption"; +CPHandlesContentAsCompoundValueBindingOption="CPHandlesContentAsCompoundValueBindingOption"; +CPInsertsNullPlaceholderBindingOption="CPInsertsNullPlaceholderBindingOption"; +CPInvokesSeparatelyWithArrayObjectsBindingOption="CPInvokesSeparatelyWithArrayObjectsBindingOption"; +CPMultipleValuesPlaceholderBindingOption="CPMultipleValuesPlaceholderBindingOption"; +CPNoSelectionPlaceholderBindingOption="CPNoSelectionPlaceholderBindingOption"; +CPNotApplicablePlaceholderBindingOption="CPNotApplicablePlaceholderBindingOption"; +CPNullPlaceholderBindingOption="CPNullPlaceholderBindingOption"; +CPPredicateFormatBindingOption="CPPredicateFormatBindingOption"; +CPRaisesForNotApplicableKeysBindingOption="CPRaisesForNotApplicableKeysBindingOption"; +CPSelectorNameBindingOption="CPSelectorNameBindingOption"; +CPSelectsAllWhenSettingContentBindingOption="CPSelectsAllWhenSettingContentBindingOption"; +CPValidatesImmediatelyBindingOption="CPValidatesImmediatelyBindingOption"; +CPValueTransformerNameBindingOption="CPValueTransformerNameBindingOption"; +CPValueTransformerBindingOption="CPValueTransformerBindingOption"; +p;20;CPObjectController.jt;18248;@STATIC;1.0;I;25;Foundation/CPDictionary.ji;14;CPController.jt;18179; +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("CPController.j",YES); +var _1=objj_allocateClassPair(CPController,"CPObjectController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentObject"),new objj_ivar("_selection"),new objj_ivar("_objectClass"),new objj_ivar("_isEditable"),new objj_ivar("_automaticallyPreparesContent"),new objj_ivar("_observedKeys")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithContent:",nil); +} +}),new objj_method(sel_getUid("initWithContent:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPObjectController").super_class},"init")){ +objj_msgSend(_5,"setContent:",_7); +objj_msgSend(_5,"setEditable:",YES); +objj_msgSend(_5,"setObjectClass:",objj_msgSend(CPMutableDictionary,"class")); +_observedKeys=objj_msgSend(objj_msgSend(CPCountedSet,"alloc"),"init"); +} +return _5; +} +}),new objj_method(sel_getUid("content"),function(_8,_9){ +with(_8){ +return _contentObject; +} +}),new objj_method(sel_getUid("setContent:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_a,"willChangeValueForKey:","contentObject"); +objj_msgSend(_a,"_selectionWillChange"); +_contentObject=_c; +objj_msgSend(_a,"didChangeValueForKey:","contentObject"); +objj_msgSend(_a,"_selectionDidChange"); +} +}),new objj_method(sel_getUid("_setContentObject:"),function(_d,_e,_f){ +with(_d){ +objj_msgSend(_d,"setContent:",_f); +} +}),new objj_method(sel_getUid("_contentObject"),function(_10,_11){ +with(_10){ +return objj_msgSend(_10,"content"); +} +}),new objj_method(sel_getUid("setAutomaticallyPreparesContent:"),function(_12,_13,_14){ +with(_12){ +_automaticallyPreparesContent=_14; +} +}),new objj_method(sel_getUid("automaticallyPreparesContent"),function(_15,_16){ +with(_15){ +return _automaticallyPreparesContent; +} +}),new objj_method(sel_getUid("prepareContent"),function(_17,_18){ +with(_17){ +objj_msgSend(_17,"setContent:",objj_msgSend(_17,"newObject")); +} +}),new objj_method(sel_getUid("setObjectClass:"),function(_19,_1a,_1b){ +with(_19){ +_objectClass=_1b; +} +}),new objj_method(sel_getUid("objectClass"),function(_1c,_1d){ +with(_1c){ +return _objectClass; +} +}),new objj_method(sel_getUid("newObject"),function(_1e,_1f){ +with(_1e){ +return objj_msgSend(objj_msgSend(objj_msgSend(_1e,"objectClass"),"alloc"),"init"); +} +}),new objj_method(sel_getUid("addObject:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(_20,"setContent:",_22); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","contentObject",_20),"reverseSetValueFor:","contentObject"); +} +}),new objj_method(sel_getUid("removeObject:"),function(_23,_24,_25){ +with(_23){ +if(objj_msgSend(_23,"content")===_25){ +objj_msgSend(_23,"setContent:",nil); +} +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","contentObject",_23),"reverseSetValueFor:","contentObject"); +} +}),new objj_method(sel_getUid("add:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(_26,"addObject:",objj_msgSend(_26,"newObject")); +} +}),new objj_method(sel_getUid("canAdd"),function(_29,_2a){ +with(_29){ +return objj_msgSend(_29,"isEditable"); +} +}),new objj_method(sel_getUid("remove:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_2b,"removeObject:",objj_msgSend(_2b,"content")); +} +}),new objj_method(sel_getUid("canRemove"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_2e,"isEditable")&&objj_msgSend(objj_msgSend(_2e,"selectedObjects"),"count"); +} +}),new objj_method(sel_getUid("setEditable:"),function(_30,_31,_32){ +with(_30){ +_isEditable=_32; +} +}),new objj_method(sel_getUid("isEditable"),function(_33,_34){ +with(_33){ +return _isEditable; +} +}),new objj_method(sel_getUid("selectedObjects"),function(_35,_36){ +with(_35){ +return objj_msgSend(objj_msgSend(_CPObservableArray,"alloc"),"initWithObjects:count:",[_contentObject],1); +} +}),new objj_method(sel_getUid("selection"),function(_37,_38){ +with(_37){ +return _selection; +} +}),new objj_method(sel_getUid("_selectionWillChange"),function(_39,_3a){ +with(_39){ +objj_msgSend(_selection,"controllerWillChange"); +objj_msgSend(_39,"willChangeValueForKey:","selection"); +} +}),new objj_method(sel_getUid("_selectionDidChange"),function(_3b,_3c){ +with(_3b){ +if(_selection===undefined||_selection===nil){ +_selection=objj_msgSend(objj_msgSend(CPControllerSelectionProxy,"alloc"),"initWithController:",_3b); +} +objj_msgSend(_selection,"controllerDidChange"); +objj_msgSend(_3b,"didChangeValueForKey:","selection"); +} +}),new objj_method(sel_getUid("observedKeys"),function(_3d,_3e){ +with(_3d){ +return _observedKeys; +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_3f,_40,_41,_42,_43,_44){ +with(_3f){ +objj_msgSend(_observedKeys,"addObject:",_42); +objj_msgSendSuper({receiver:_3f,super_class:objj_getClass("CPObjectController").super_class},"addObserver:forKeyPath:options:context:",_41,_42,_43,_44); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_45,_46,_47,_48){ +with(_45){ +objj_msgSend(_observedKeys,"removeObject:",_48); +objj_msgSendSuper({receiver:_45,super_class:objj_getClass("CPObjectController").super_class},"removeObserver:forKeyPath:",_47,_48); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("initialize"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"exposeBinding:","editable"); +objj_msgSend(_49,"exposeBinding:","contentObject"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingContentObject"),function(_4b,_4c){ +with(_4b){ +return objj_msgSend(CPSet,"setWithObjects:","content"); +} +}),new objj_method(sel_getUid("automaticallyNotifiesObserversForKey:"),function(_4d,_4e,_4f){ +with(_4d){ +if(_4f==="contentObject"){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanAdd"),function(_50,_51){ +with(_50){ +return objj_msgSend(CPSet,"setWithObject:","editable"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsert"),function(_52,_53){ +with(_52){ +return objj_msgSend(CPSet,"setWithObject:","editable"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"),function(_54,_55){ +with(_54){ +return objj_msgSend(CPSet,"setWithObjects:","editable","selection"); +} +})]); +var _56="CPObjectControllerObjectClassNameKey",_57="CPObjectControllerIsEditableKey",_58="CPObjectControllerAutomaticallyPreparesContentKey"; +var _1=objj_getClass("CPObjectController"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObjectController\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_59,_5a,_5b){ +with(_59){ +_59=objj_msgSendSuper({receiver:_59,super_class:objj_getClass("CPObjectController").super_class},"init"); +if(_59){ +var _5c=objj_msgSend(_5b,"decodeObjectForKey:",_56),_5d=CPClassFromString(_5c); +objj_msgSend(_59,"setObjectClass:",_5d); +objj_msgSend(_59,"setEditable:",objj_msgSend(_5b,"decodeBoolForKey:",_57)); +objj_msgSend(_59,"setAutomaticallyPreparesContent:",objj_msgSend(_5b,"decodeBoolForKey:",_58)||NO); +_observedKeys=objj_msgSend(objj_msgSend(CPCountedSet,"alloc"),"init"); +} +return _59; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_5e,_5f,_60){ +with(_5e){ +objj_msgSend(_60,"encodeObject:forKey:",CPStringFromClass(objectClass),_56); +objj_msgSend(_60,"encodeObject:forKey:",objj_msgSend(_5e,"isEditable"),_57); +if(!objj_msgSend(_5e,"automaticallyPreparesContent")){ +objj_msgSend(_60,"encodeBOOL:forKey:",YES,_58); +} +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPObservationProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath"),new objj_ivar("_observer"),new objj_ivar("_object"),new objj_ivar("_notifyObject"),new objj_ivar("_context"),new objj_ivar("_options")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKeyPath:observer:object:"),function(_61,_62,_63,_64,_65){ +with(_61){ +if(_61=objj_msgSendSuper({receiver:_61,super_class:objj_getClass("_CPObservationProxy").super_class},"init")){ +_keyPath=_63; +_observer=_64; +_object=_65; +} +return _61; +} +}),new objj_method(sel_getUid("observer"),function(_66,_67){ +with(_66){ +return _observer; +} +}),new objj_method(sel_getUid("keyPath"),function(_68,_69){ +with(_68){ +return _keyPath; +} +}),new objj_method(sel_getUid("context"),function(_6a,_6b){ +with(_6a){ +return _context; +} +}),new objj_method(sel_getUid("options"),function(_6c,_6d){ +with(_6c){ +return _options; +} +}),new objj_method(sel_getUid("setNotifyObject:"),function(_6e,_6f,_70){ +with(_6e){ +_notifyObject=_70; +} +}),new objj_method(sel_getUid("isEqual:"),function(_71,_72,_73){ +with(_71){ +if(objj_msgSend(_73,"class")===objj_msgSend(_71,"class")){ +if(_73._observer===_observer&&objj_msgSend(_73._keyPath,"isEqual:",_keyPath)&&objj_msgSend(_73._object,"isEqual:",_object)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_74,_75,_76,_77,_78,_79){ +with(_74){ +if(_notifyObject){ +objj_msgSend(_object,"observeValueForKeyPath:ofObject:change:context:",_keyPath,_object,_78,_79); +} +objj_msgSend(_observer,"observeValueForKeyPath:ofObject:change:context:",_keyPath,_object,_78,_79); +} +}),new objj_method(sel_getUid("description"),function(_7a,_7b){ +with(_7a){ +return objj_msgSendSuper({receiver:_7a,super_class:objj_getClass("_CPObservationProxy").super_class},"description")+objj_msgSend(CPString,"stringWithFormat:","observation proxy for %@ on key path %@",_observer,_keyPath); +} +})]); +var _1=objj_allocateClassPair(CPMutableArray,"_CPObservableArray"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_observationProxies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("description"),function(_7c,_7d){ +with(_7c){ +return "<_CPObservableArray: "+objj_msgSendSuper({receiver:_7c,super_class:objj_getClass("_CPObservableArray").super_class},"description")+" >"; +} +}),new objj_method(sel_getUid("initWithArray:"),function(_7e,_7f,_80){ +with(_7e){ +if(_7e=objj_msgSendSuper({receiver:_7e,super_class:objj_getClass("_CPObservableArray").super_class},"initWithArray:",_80)){ +_observationProxies=[]; +} +return _7e; +} +}),new objj_method(sel_getUid("initWithObjects:count:"),function(_81,_82,_83,_84){ +with(_81){ +if(_81=objj_msgSendSuper({receiver:_81,super_class:objj_getClass("_CPObservableArray").super_class},"initWithObjects:count:",_83,_84)){ +_observationProxies=[]; +} +return _81; +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_85,_86,_87,_88,_89,_8a){ +with(_85){ +if(_88.indexOf("@")===0){ +var _8b=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_88,_87,_85); +_8b._options=_89; +_8b._context=_8a; +objj_msgSend(_observationProxies,"addObject:",_8b); +var _8c=_88.indexOf("."),_8d=_88.substring(_8c+1),_8e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_85,"count"))); +objj_msgSend(_85,"addObserver:toObjectsAtIndexes:forKeyPath:options:context:",_8b,_8e,_8d,_89,_8a); +}else{ +var _8e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_85,"count"))); +objj_msgSend(_85,"addObserver:toObjectsAtIndexes:forKeyPath:options:context:",_87,_8e,_88,_89,_8a); +} +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_92.indexOf("@")===0){ +var _93=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_92,_91,_8f),_94=objj_msgSend(_observationProxies,"indexOfObject:",_93); +_93=objj_msgSend(_observationProxies,"objectAtIndex:",_94); +var _95=_92.indexOf("."),_96=_92.substring(_95+1),_97=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_8f,"count"))); +objj_msgSend(_8f,"removeObserver:fromObjectsAtIndexes:forKeyPath:",_93,_97,_96); +}else{ +var _97=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_8f,"count"))); +objj_msgSend(_8f,"removeObserver:fromObjectsAtIndexes:forKeyPath:",_91,_97,_92); +} +} +}),new objj_method(sel_getUid("insertObject:atIndex:"),function(_98,_99,_9a,_9b){ +with(_98){ +for(var i=0,_9c=objj_msgSend(_observationProxies,"count");i<_9c;i++){ +var _9d=objj_msgSend(_observationProxies,"objectAtIndex:",i),_9e=objj_msgSend(_9d,"keyPath"),_9f=_9e.indexOf(".")===0; +if(_9f){ +objj_msgSend(_98,"willChangeValueForKey:",_9e); +} +objj_msgSend(_9a,"addObserver:forKeyPath:options:context:",_9d,_9e,objj_msgSend(_9d,"options"),objj_msgSend(_9d,"context")); +if(_9f){ +objj_msgSend(_98,"didChangeValueForKey:",_9e); +} +} +objj_msgSendSuper({receiver:_98,super_class:objj_getClass("_CPObservableArray").super_class},"insertObject:atIndex:",_9a,_9b); +} +}),new objj_method(sel_getUid("removeObjectAtIndex:"),function(_a0,_a1,_a2){ +with(_a0){ +for(var i=0,_a3=objj_msgSend(_observationProxies,"count");i<_a3;i++){ +var _a4=objj_msgSend(_observationProxies,"objectAtIndex:",i),_a5=objj_msgSend(_a4,"keyPath"),_a6=_a5.indexOf(".")===0; +if(_a6){ +objj_msgSend(_a0,"willChangeValueForKey:",_a5); +} +objj_msgSend(anObject,"removeObserver:forKeyPath:",_a4,_a5); +if(_a6){ +objj_msgSend(_a0,"didChangeValueForKey:",_a5); +} +} +objj_msgSendSuper({receiver:_a0,super_class:objj_getClass("_CPObservableArray").super_class},"removeObjectAtIndex:",_a2); +} +}),new objj_method(sel_getUid("objectsAtIndexes:"),function(_a7,_a8,_a9){ +with(_a7){ +return objj_msgSend(_CPObservableArray,"arrayWithArray:",objj_msgSendSuper({receiver:_a7,super_class:objj_getClass("_CPObservableArray").super_class},"objectsAtIndexes:",_a9)); +} +}),new objj_method(sel_getUid("addObject:"),function(_aa,_ab,_ac){ +with(_aa){ +objj_msgSend(_aa,"insertObject:atIndex:",_ac,objj_msgSend(_aa,"count")); +} +}),new objj_method(sel_getUid("removeLastObject"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(_ad,"removeObjectAtIndex:",objj_msgSend(_ad,"count")); +} +}),new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"),function(_af,_b0,_b1,_b2){ +with(_af){ +var _b3=objj_msgSend(_af,"objectAtIndex:",_b1); +for(var i=0,_b4=objj_msgSend(_observationProxies,"count");i<_b4;i++){ +var _b5=objj_msgSend(_observationProxies,"objectAtIndex:",i),_b6=objj_msgSend(_b5,"keyPath"),_b7=_b6.indexOf(".")===0; +if(_b7){ +objj_msgSend(_af,"willChangeValueForKey:",_b6); +} +objj_msgSend(_b3,"removeObserver:forKeyPath:",_b5,_b6); +objj_msgSend(_b2,"addObserver:forKeyPath:options:context:",_b5,_b6,objj_msgSend(_b5,"options"),objj_msgSend(_b5,"context")); +if(_b7){ +objj_msgSend(_af,"didChangeValueForKey:",_b6); +} +} +objj_msgSend(_af,"replaceObjectAtIndex:withObject:",_b1,_b2); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_b8,_b9){ +with(_b8){ +var a=[]; +a.isa=_b8; +var _ba=class_copyIvarList(_b8),_bb=_ba.length; +while(_bb--){ +a[ivar_getName(_ba[_bb])]=nil; +} +return a; +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPControllerSelectionProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_controller"),new objj_ivar("_keys"),new objj_ivar("_cachedValues"),new objj_ivar("_observationProxies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithController:"),function(_bc,_bd,_be){ +with(_bc){ +if(_bc=objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPControllerSelectionProxy").super_class},"init")){ +_cachedValues=objj_msgSend(CPDictionary,"dictionary"); +_observationProxies=objj_msgSend(CPArray,"array"); +_controller=_be; +} +return _bc; +} +}),new objj_method(sel_getUid("valueForKey:"),function(_bf,_c0,_c1){ +with(_bf){ +var _c2=objj_msgSend(_cachedValues,"objectForKey:",_c1); +if(_c2!==undefined&&_c2!==nil){ +return _c2; +} +var _c3=objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"valueForKeyPath:",_c1),_c4=objj_msgSend(_c3,"count"); +if(!_c4){ +_c2=CPNoSelectionMarker; +}else{ +if(_c4===1){ +_c2=objj_msgSend(_c3,"objectAtIndex:",0); +}else{ +if(objj_msgSend(_controller,"alwaysUsesMultipleValuesMarker")){ +_c2=CPMultipleValuesMarker; +}else{ +_c2=objj_msgSend(_c3,"objectAtIndex:",0); +for(var i=0,_c4=objj_msgSend(_c3,"count");i<_c4&&_c2!=CPMultipleValuesMarker;i++){ +if(!objj_msgSend(_c2,"isEqual:",objj_msgSend(_c3,"objectAtIndex:",i))){ +_c2=CPMultipleValuesMarker; +} +} +} +} +} +objj_msgSend(_cachedValues,"setValue:forKey:",_c2,_c1); +return _c2; +} +}),new objj_method(sel_getUid("count"),function(_c5,_c6){ +with(_c5){ +return objj_msgSend(_cachedValues,"count"); +} +}),new objj_method(sel_getUid("keyEnumerator"),function(_c7,_c8){ +with(_c7){ +return objj_msgSend(_cachedValues,"keyEnumerator"); +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_c9,_ca,_cb,_cc){ +with(_c9){ +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"setValue:forKey:",_cb,_cc); +} +}),new objj_method(sel_getUid("controllerWillChange"),function(_cd,_ce){ +with(_cd){ +_keys=objj_msgSend(_cachedValues,"allKeys"); +if(!_keys){ +return; +} +for(var i=0,_cf=_keys.length;i<_cf;i++){ +objj_msgSend(_cd,"willChangeValueForKey:",_keys[i]); +} +objj_msgSend(_cachedValues,"removeAllObjects"); +} +}),new objj_method(sel_getUid("controllerDidChange"),function(_d0,_d1){ +with(_d0){ +objj_msgSend(_cachedValues,"removeAllObjects"); +if(!_keys){ +return; +} +for(var i=0,_d2=_keys.length;i<_d2;i++){ +objj_msgSend(_d0,"didChangeValueForKey:",_keys[i]); +} +_keys=nil; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_d3,_d4,_d5,_d6,_d7,_d8){ +with(_d3){ +objj_msgSend(_cachedValues,"removeObjectForKey:",_d5); +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_d9,_da,_db,_dc,_dd,_de){ +with(_d9){ +var _df=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_dc,_db,_d9); +objj_msgSend(_df,"setNotifyObject:",YES); +objj_msgSend(_observationProxies,"addObject:",_df); +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"addObserver:forKeyPath:options:context:",_df,_dc,_dd,_de); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_e0,_e1,_e2,_e3){ +with(_e0){ +var _e4=objj_msgSend(objj_msgSend(_CPObservationProxy,"alloc"),"initWithKeyPath:observer:object:",_e3,_e2,_e0),_e5=objj_msgSend(_observationProxies,"indexOfObject:",_e4); +objj_msgSend(objj_msgSend(_controller,"selectedObjects"),"removeObserver:forKeyPath:",objj_msgSend(_observationProxies,"objectAtIndex:",_e5),_e3); +objj_msgSend(_observationProxies,"removeObjectAtIndex:",_e5); +} +})]); +p;13;CPOpenPanel.jt;2079;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2039; +objj_executeFile("AppKit/CPPanel.j",NO); +var _1=objj_allocateClassPair(CPPanel,"CPOpenPanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_canChooseFiles"),new objj_ivar("_canChooseDirectories"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_directoryURL"),new objj_ivar("_URLs")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("canChooseFiles"),function(_3,_4){ +with(_3){ +return _canChooseFiles; +} +}),new objj_method(sel_getUid("setCanChooseFiles:"),function(_5,_6,_7){ +with(_5){ +_canChooseFiles=_7; +} +}),new objj_method(sel_getUid("canChooseDirectories"),function(_8,_9){ +with(_8){ +return _canChooseDirectories; +} +}),new objj_method(sel_getUid("setCanChooseDirectories:"),function(_a,_b,_c){ +with(_a){ +_canChooseDirectories=_c; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_d,_e){ +with(_d){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_f,_10,_11){ +with(_f){ +_allowsMultipleSelection=_11; +} +}),new objj_method(sel_getUid("directoryURL"),function(_12,_13){ +with(_12){ +return _directoryURL; +} +}),new objj_method(sel_getUid("setDirectoryURL:"),function(_14,_15,_16){ +with(_14){ +_directoryURL=_16; +} +}),new objj_method(sel_getUid("runModal"),function(_17,_18){ +with(_17){ +if(typeof window["cpOpenPanel"]==="function"){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +var _19={directoryURL:objj_msgSend(_17,"directoryURL"),canChooseFiles:objj_msgSend(_17,"canChooseFiles"),canChooseDirectories:objj_msgSend(_17,"canChooseDirectories"),allowsMultipleSelection:objj_msgSend(_17,"allowsMultipleSelection")}; +var _1a=window.cpOpenPanel(_19); +_URLs=_1a.URLs; +return _1a.button; +} +throw "-runModal is unimplemented."; +} +}),new objj_method(sel_getUid("URLs"),function(_1b,_1c){ +with(_1b){ +return _URLs; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("openPanel"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(objj_msgSend(CPOpenPanel,"alloc"),"init"); +} +})]); +p;15;CPOutlineView.jt;38503;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.jt;38445; +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +CPOutlineViewColumnDidMoveNotification="CPOutlineViewColumnDidMoveNotification"; +CPOutlineViewColumnDidResizeNotification="CPOutlineViewColumnDidResizeNotification"; +CPOutlineViewItemDidCollapseNotification="CPOutlineViewItemDidCollapseNotification"; +CPOutlineViewItemDidExpandNotification="CPOutlineViewItemDidExpandNotification"; +CPOutlineViewItemWillCollapseNotification="CPOutlineViewItemWillCollapseNotification"; +CPOutlineViewItemWillExpandNotification="CPOutlineViewItemWillExpandNotification"; +CPOutlineViewSelectionDidChangeNotification="CPOutlineViewSelectionDidChangeNotification"; +CPOutlineViewSelectionIsChangingNotification="CPOutlineViewSelectionIsChangingNotification"; +var _1=1<<1,_2=1<<2,_3=1<<3,_4=1<<4,_5=1<<5,_6=1<<6,_7=1<<7,_8=1<<8,_9=1<<9,_a=1<<10; +var _b=1<<1,_c=1<<2,_d=1<<3,_e=1<<4,_f=1<<5,_10=1<<6,_11=1<<7,_12=1<<8,_13=1<<9,_14=1<<10,_15=1<<11,_16=1<<12,_17=1<<13,_18=1<<14,_19=1<<15,_1a=1<<16,_1b=1<<17,_1c=1<<18,_1d=1<<19,_1e=1<<20,_1f=1<<21,_20=1<<22,_21=1<<23,_22=1<<24; +CPOutlineViewDropOnItemIndex=-1; +var _23=objj_allocateClassPair(CPTableView,"CPOutlineView"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineViewDataSource"),new objj_ivar("_outlineViewDelegate"),new objj_ivar("_outlineTableColumn"),new objj_ivar("_indentationPerLevel"),new objj_ivar("_indentationMarkerFollowsDataView"),new objj_ivar("_implementedOutlineViewDataSourceMethods"),new objj_ivar("_implementedOutlineViewDelegateMethods"),new objj_ivar("_rootItemInfo"),new objj_ivar("_itemsForRows"),new objj_ivar("_itemInfosForItems"),new objj_ivar("_disclosureControlPrototype"),new objj_ivar("_disclosureControlsForRows"),new objj_ivar("_disclosureControlData"),new objj_ivar("_disclosureControlQueue"),new objj_ivar("_shouldRetargetItem"),new objj_ivar("_retargetedItem"),new objj_ivar("_shouldRetargetChildIndex"),new objj_ivar("_retargedChildIndex"),new objj_ivar("_dragHoverTimer"),new objj_ivar("_dropItem")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithFrame:"),function(_25,_26,_27){ +with(_25){ +_25=objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"initWithFrame:",_27); +if(_25){ +_selectionHighlightStyle=CPTableViewSelectionHighlightStyleSourceList; +_rootItemInfo={isExpanded:YES,isExpandable:NO,level:-1,row:-1,children:[],weight:0}; +_itemsForRows=[]; +_itemInfosForItems={}; +_disclosureControlsForRows=[]; +_retargetedItem=nil; +_shouldRetargetItem=NO; +_retargedChildIndex=nil; +_shouldRetargetChildIndex=NO; +_startHoverTime=nil; +objj_msgSend(_25,"setIndentationPerLevel:",16); +objj_msgSend(_25,"setIndentationMarkerFollowsDataView:",YES); +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"setDataSource:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource,"alloc"),"initWithOutlineView:",_25)); +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPOutlineView").super_class},"setDelegate:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDelegate,"alloc"),"initWithOutlineView:",_25)); +objj_msgSend(_25,"setDisclosureControlPrototype:",objj_msgSend(objj_msgSend(CPDisclosureButton,"alloc"),"initWithFrame:",CGRectMake(0,0,10,10))); +} +return _25; +} +}),new objj_method(sel_getUid("setDataSource:"),function(_28,_29,_2a){ +with(_28){ +if(_outlineViewDataSource===_2a){ +return; +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:child:ofItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:child:ofItem:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:isItemExpandable:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:isItemExpandable:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:numberOfChildrenOfItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:numberOfChildrenOfItem:'"); +} +if(!objj_msgSend(_2a,"respondsToSelector:",sel_getUid("outlineView:objectValueForTableColumn:byItem:"))){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Data source must implement 'outlineView:objectValueForTableColumn:byItem:'"); +} +_outlineViewDataSource=_2a; +_implementedOutlineViewDataSourceMethods=0; +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:setObjectValue:forTableColumn:byItem:"))){ +_implementedOutlineViewDataSourceMethods|=_1; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:shouldDeferDisplayingChildrenOfItem:"))){ +_implementedOutlineViewDataSourceMethods|=_2; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:acceptDrop:item:childIndex:"))){ +_implementedOutlineViewDataSourceMethods|=_3; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:validateDrop:proposedItem:proposedChildIndex:"))){ +_implementedOutlineViewDataSourceMethods|=_4; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:validateDrop:proposedRow:proposedDropOperation:"))){ +_implementedOutlineViewDataSourceMethods|=_5; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:"))){ +_implementedOutlineViewDataSourceMethods|=_6; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:itemForPersistentObject:"))){ +_implementedOutlineViewDataSourceMethods|=_7; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:persistentObjectForItem:"))){ +_implementedOutlineViewDataSourceMethods|=_8; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:writeItems:toPasteboard:"))){ +_implementedOutlineViewDataSourceMethods|=_9; +} +if(objj_msgSend(_outlineViewDataSource,"respondsToSelector:",sel_getUid("outlineView:sortDescriptorsDidChange:"))){ +_implementedOutlineViewDataSourceMethods|=_a; +} +objj_msgSend(_28,"reloadData"); +} +}),new objj_method(sel_getUid("dataSource"),function(_2b,_2c){ +with(_2b){ +return _outlineViewDataSource; +} +}),new objj_method(sel_getUid("isExpandable:"),function(_2d,_2e,_2f){ +with(_2d){ +if(!_2f){ +return YES; +} +var _30=_itemInfosForItems[objj_msgSend(_2f,"UID")]; +if(!_30){ +return NO; +} +return _30.isExpandable; +} +}),new objj_method(sel_getUid("isItemExpanded:"),function(_31,_32,_33){ +with(_31){ +if(!_33){ +return YES; +} +var _34=_itemInfosForItems[objj_msgSend(_33,"UID")]; +if(!_34){ +return NO; +} +return _34.isExpanded; +} +}),new objj_method(sel_getUid("expandItem:"),function(_35,_36,_37){ +with(_35){ +objj_msgSend(_35,"expandItem:expandChildren:",_37,NO); +} +}),new objj_method(sel_getUid("expandItem:expandChildren:"),function(_38,_39,_3a,_3b){ +with(_38){ +var _3c=null; +if(!_3a){ +_3c=_rootItemInfo; +}else{ +_3c=_itemInfosForItems[objj_msgSend(_3a,"UID")]; +} +if(!_3c){ +return; +} +if(!_3c.isExpanded){ +objj_msgSend(_38,"_noteItemWillExpand:",_3a); +_3c.isExpanded=YES; +objj_msgSend(_38,"_noteItemDidExpand:",_3a); +objj_msgSend(_38,"reloadItem:reloadChildren:",_3a,YES); +} +if(_3b){ +var _3d=_3c.children,_3e=_3d.length; +while(_3e--){ +objj_msgSend(_38,"expandItem:expandChildren:",_3d[_3e],YES); +} +} +} +}),new objj_method(sel_getUid("collapseItem:"),function(_3f,_40,_41){ +with(_3f){ +if(!_41){ +return; +} +var _42=_itemInfosForItems[objj_msgSend(_41,"UID")]; +if(!_42){ +return; +} +if(!_42.isExpanded){ +return; +} +objj_msgSend(_3f,"_noteItemWillCollapse:",_41); +_42.isExpanded=NO; +objj_msgSend(_3f,"_noteItemDidCollapse:",_41); +objj_msgSend(_3f,"reloadItem:reloadChildren:",_41,YES); +} +}),new objj_method(sel_getUid("reloadItem:"),function(_43,_44,_45){ +with(_43){ +objj_msgSend(_43,"reloadItem:reloadChildren:",_45,NO); +} +}),new objj_method(sel_getUid("reloadItem:reloadChildren:"),function(_46,_47,_48,_49){ +with(_46){ +if(!!_49||!_48){ +_4a(_46,_48); +}else{ +_4b(_46,_48); +} +objj_msgSendSuper({receiver:_46,super_class:objj_getClass("CPOutlineView").super_class},"reloadData"); +} +}),new objj_method(sel_getUid("itemAtRow:"),function(_4c,_4d,_4e){ +with(_4c){ +return _itemsForRows[_4e]||nil; +} +}),new objj_method(sel_getUid("rowForItem:"),function(_4f,_50,_51){ +with(_4f){ +if(!_51){ +return _rootItemInfo.row; +} +var _52=_itemInfosForItems[objj_msgSend(_51,"UID")]; +if(!_52){ +return CPNotFound; +} +return _52.row; +} +}),new objj_method(sel_getUid("setOutlineTableColumn:"),function(_53,_54,_55){ +with(_53){ +if(_outlineTableColumn===_55){ +return; +} +_outlineTableColumn=_55; +objj_msgSend(_53,"reloadData"); +} +}),new objj_method(sel_getUid("outlineTableColumn"),function(_56,_57){ +with(_56){ +return _outlineTableColumn; +} +}),new objj_method(sel_getUid("levelForItem:"),function(_58,_59,_5a){ +with(_58){ +if(!_5a){ +return _rootItemInfo.level; +} +var _5b=_itemInfosForItems[objj_msgSend(_5a,"UID")]; +if(!_5b){ +return CPNotFound; +} +return _5b.level; +} +}),new objj_method(sel_getUid("levelForRow:"),function(_5c,_5d,_5e){ +with(_5c){ +return objj_msgSend(_5c,"levelForItem:",objj_msgSend(_5c,"itemAtRow:",_5e)); +} +}),new objj_method(sel_getUid("setIndentationPerLevel:"),function(_5f,_60,_61){ +with(_5f){ +if(_indentationPerLevel===_61){ +return; +} +_indentationPerLevel=_61; +objj_msgSend(_5f,"reloadData"); +} +}),new objj_method(sel_getUid("indentationPerLevel"),function(_62,_63){ +with(_62){ +return _indentationPerLevel; +} +}),new objj_method(sel_getUid("setIndentationMarkerFollowsDataView:"),function(_64,_65,_66){ +with(_64){ +if(_indentationMarkerFollowsDataView===_66){ +return; +} +_indentationMarkerFollowsDataView=_66; +objj_msgSend(_64,"reloadData"); +} +}),new objj_method(sel_getUid("indentationMarkerFollowsDataView"),function(_67,_68){ +with(_67){ +return _indentationMarkerFollowsDataView; +} +}),new objj_method(sel_getUid("parentForItem:"),function(_69,_6a,_6b){ +with(_69){ +if(!_6b){ +return nil; +} +var _6c=_itemInfosForItems[objj_msgSend(_6b,"UID")]; +if(!_6c){ +return nil; +} +var _6d=_6c.parent; +if(_6c[objj_msgSend(_6d,"UID")]===_rootItemInfo){ +_6d=nil; +} +return _6d; +} +}),new objj_method(sel_getUid("frameOfOutlineDataViewAtColumn:row:"),function(_6e,_6f,_70,_71){ +with(_6e){ +var _72=objj_msgSendSuper({receiver:_6e,super_class:objj_getClass("CPOutlineView").super_class},"frameOfDataViewAtColumn:row:",_70,_71),_73=(objj_msgSend(_6e,"levelForRow:",_71)+1)*objj_msgSend(_6e,"indentationPerLevel"); +_72.origin.x+=_73; +_72.size.width-=_73; +return _72; +} +}),new objj_method(sel_getUid("_performSelection:forRow:context:"),function(_74,_75,_76,_77,_78){ +with(_74){ +objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPOutlineView").super_class},"_performSelection:forRow:context:",_76,_77,_78); +var _79=_disclosureControlsForRows[_77],_7a=_76?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_79,"performSelector:withObject:",CPSelectorFromString(_7a),CPThemeStateSelected); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_outlineViewDelegate===_7d){ +return; +} +var _7e=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_outlineViewDelegate){ +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidMove:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewColumnDidMoveNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidResize:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewColumnDidResizeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionDidChange:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewSelectionDidChangeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionIsChanging:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewSelectionIsChangingNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillExpand:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemWillExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidExpand:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemDidExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillCollapse:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemWillCollapseNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidCollapse:"))){ +objj_msgSend(_7e,"removeObserver:name:object:",_outlineViewDelegate,CPOutlineViewItemDidCollapseNotification,_7b); +} +} +_outlineViewDelegate=_7d; +_implementedOutlineViewDelegateMethods=0; +var _7f=[_b,sel_getUid("outlineView:dataViewForTableColumn:item:"),_c,sel_getUid("outlineView:didClickTableColumn:"),_d,sel_getUid("outlineView:didDragTableColumn:"),_e,sel_getUid("outlineView:heightOfRowByItem:"),_f,sel_getUid("outlineView:isGroupItem:"),_10,sel_getUid("outlineView:mouseDownInHeaderOfTableColumn:"),_11,sel_getUid("outlineView:nextTypeSelectMatchFromItem:toItem:forString:"),_12,sel_getUid("outlineView:selectionIndexesForProposedSelection:"),_13,sel_getUid("outlineView:shouldCollapseItem:"),_14,sel_getUid("outlineView:shouldEditTableColumn:item:"),_15,sel_getUid("outlineView:shouldExpandItem:"),_16,sel_getUid("outlineView:shouldReorderColumn:toColumn:"),_17,sel_getUid("outlineView:shouldSelectItem:"),_18,sel_getUid("outlineView:shouldSelectTableColumn:"),_19,sel_getUid("outlineView:shouldShowOutlineViewForItem:"),_1a,sel_getUid("outlineView:shouldShowViewExpansionForTableColumn:item:"),_1b,sel_getUid("outlineView:shouldTrackView:forTableColumn:item:"),_1c,sel_getUid("outlineView:shouldTypeSelectForEvent:withCurrentSearchString:"),_1d,sel_getUid("outlineView:sizeToFitWidthOfColumn:"),_1e,sel_getUid("outlineView:toolTipForView:rect:tableColumn:item:mouseLocation:"),_1f,sel_getUid("outlineView:typeSelectStringForTableColumn:item:"),_20,sel_getUid("outlineView:willDisplayOutlineView:forTableColumn:item:"),_21,sel_getUid("outlineView:willDisplayView:forTableColumn:item:"),_22,sel_getUid("selectionShouldChangeInOutlineView:")],_80=objj_msgSend(_7f,"count"); +for(var i=0;i<_80;i+=2){ +var _81=_7f[i],_82=_7f[i+1]; +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",_82)){ +_implementedOutlineViewDelegateMethods|=_81; +} +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidMove:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewColumnDidMove:"),CPOutlineViewColumnDidMoveNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewColumnDidResize:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewColumnDidMove:"),CPOutlineViewColumnDidResizeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionDidChange:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewSelectionDidChange:"),CPOutlineViewSelectionDidChangeNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewSelectionIsChanging:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewSelectionIsChanging:"),CPOutlineViewSelectionIsChangingNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillExpand:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemWillExpand:"),CPOutlineViewItemWillExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidExpand:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemDidExpand:"),CPOutlineViewItemDidExpandNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemWillCollapse:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemWillCollapse:"),CPOutlineViewItemWillCollapseNotification,_7b); +} +if(objj_msgSend(_outlineViewDelegate,"respondsToSelector:",sel_getUid("outlineViewItemDidCollapse:"))){ +objj_msgSend(_7e,"addObserver:selector:name:object:",_outlineViewDelegate,sel_getUid("outlineViewItemDidCollapse:"),CPOutlineViewItemDidCollapseNotification,_7b); +} +} +}),new objj_method(sel_getUid("delegate"),function(_83,_84){ +with(_83){ +return _outlineViewDelegate; +} +}),new objj_method(sel_getUid("setDisclosureControlPrototype:"),function(_85,_86,_87){ +with(_85){ +_disclosureControlPrototype=_87; +_disclosureControlData=nil; +_disclosureControlQueue=[]; +objj_msgSend(_85,"reloadData"); +} +}),new objj_method(sel_getUid("reloadData"),function(_88,_89){ +with(_88){ +objj_msgSend(_88,"reloadItem:reloadChildren:",nil,YES); +} +}),new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"),function(_8a,_8b,_8c,_8d){ +with(_8a){ +var _8e=objj_msgSend(_8a,"tableColumns")[_8c]; +if(_8e===_outlineTableColumn){ +return objj_msgSend(_8a,"frameOfOutlineDataViewAtColumn:row:",_8c,_8d); +} +return objj_msgSendSuper({receiver:_8a,super_class:objj_getClass("CPOutlineView").super_class},"frameOfDataViewAtColumn:row:",_8c,_8d); +} +}),new objj_method(sel_getUid("setDropItem:dropChildIndex:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_dropItem!==_91&&_92<0&&objj_msgSend(_8f,"isExpandable:",_91)&&!objj_msgSend(_8f,"isItemExpanded:",_91)){ +if(_dragHoverTimer){ +objj_msgSend(_dragHoverTimer,"invalidate"); +} +var _93=function(){ +if(_dropItem){ +objj_msgSend(_dropOperationFeedbackView,"blink"); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.3,objj_msgSend(_8f,"expandItem:",_dropItem),NO); +} +}; +_dragHoverTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.8,_93,NO); +} +if(_92>=0){ +objj_msgSend(_dragHoverTimer,"invalidate"); +_dragHoverTimer=nil; +} +_dropItem=_91; +_retargetedItem=_91; +_shouldRetargetItem=YES; +_retargedChildIndex=_92; +_shouldRetargetChildIndex=YES; +var _94=(_retargetedItem!==nil)?_itemInfosForItems[objj_msgSend(_retargetedItem,"UID")]:_rootItemInfo; +if(_retargedChildIndex===objj_msgSend(_94.children,"count")){ +var _95=objj_msgSend(_94.children,"lastObject"); +_retargetedDropRow=objj_msgSend(_8f,"rowForItem:",_95)+1; +}else{ +var _95=(_retargedChildIndex!==CPOutlineViewDropOnItemIndex)?_94.children[_retargedChildIndex]:_retargetedItem; +_retargetedDropRow=objj_msgSend(_8f,"rowForItem:",_95); +} +} +}),new objj_method(sel_getUid("_draggingEnded"),function(_96,_97){ +with(_96){ +objj_msgSendSuper({receiver:_96,super_class:objj_getClass("CPOutlineView").super_class},"_draggingEnded"); +_dropItem=nil; +objj_msgSend(_dragHoverTimer,"invalidate"); +_dragHoverTimer=nil; +} +}),new objj_method(sel_getUid("_parentItemForUpperRow:andLowerRow:atMouseOffset:"),function(_98,_99,_9a,_9b,_9c){ +with(_98){ +if(_shouldRetargetItem){ +return _retargetedItem; +} +var _9d=objj_msgSend(_98,"levelForRow:",_9b); +upperItem=objj_msgSend(_98,"itemAtRow:",_9a); +upperLevel=objj_msgSend(_98,"levelForItem:",upperItem); +while(upperLevel>_9d){ +upperLevel=objj_msgSend(_98,"levelForItem:",upperItem); +if(_9c.x>(upperLevel+1)*objj_msgSend(_98,"indentationPerLevel")){ +return objj_msgSend(_98,"parentForItem:",upperItem); +} +upperItem=objj_msgSend(_98,"parentForItem:",upperItem); +} +return objj_msgSend(_98,"parentForItem:",objj_msgSend(_98,"itemAtRow:",_9b)); +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"),function(_9e,_9f,_a0,_a1,_a2){ +with(_9e){ +var _a3=objj_msgSendSuper({receiver:_9e,super_class:objj_getClass("CPOutlineView").super_class},"_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:",_a0,_a1,_a2),_a4=objj_msgSend(_9e,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_a0,_a1,_a2),_a5=objj_msgSend(_9e,"levelForItem:",_a4); +_a3.origin.x=(_a5+1)*objj_msgSend(_9e,"indentationPerLevel"); +_a3.size.width-=_a3.origin.x; +return _a3; +} +}),new objj_method(sel_getUid("_loadDataViewsInRows:columns:"),function(_a6,_a7,_a8,_a9){ +with(_a6){ +objj_msgSendSuper({receiver:_a6,super_class:objj_getClass("CPOutlineView").super_class},"_loadDataViewsInRows:columns:",_a8,_a9); +var _aa=objj_msgSend(objj_msgSend(_a6,"tableColumns"),"indexOfObjectIdenticalTo:",objj_msgSend(_a6,"outlineTableColumn")); +if(!objj_msgSend(_a9,"containsIndex:",_aa)){ +return; +} +var _ab=[]; +objj_msgSend(_a8,"getIndexes:maxCount:inIndexRange:",_ab,-1,nil); +var _ac=0,_ad=_ab.length; +for(;_ac<_ad;++_ac){ +var row=_ab[_ac],_ae=_itemsForRows[row],_af=objj_msgSend(_a6,"isExpandable:",_ae); +if(!_af){ +continue; +} +var _b0=objj_msgSend(_a6,"_dequeueDisclosureControl"),_b1=objj_msgSend(_b0,"frame"),_b2=objj_msgSend(_a6,"frameOfDataViewAtColumn:row:",_aa,row); +_b1.origin.x=_indentationMarkerFollowsDataView?(_b2.origin.x)-(_b1.size.width):0; +_b1.origin.y=(_b2.origin.y); +_b1.size.height=(_b2.size.height); +_disclosureControlsForRows[row]=_b0; +objj_msgSend(_b0,"setState:",objj_msgSend(_a6,"isItemExpanded:",_ae)?CPOnState:CPOffState); +var _b3=objj_msgSend(_a6,"isRowSelected:",row)?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_b0,"performSelector:withObject:",CPSelectorFromString(_b3),CPThemeStateSelected); +objj_msgSend(_b0,"setFrame:",_b1); +objj_msgSend(_a6,"addSubview:",_b0); +} +} +}),new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"),function(_b4,_b5,_b6,_b7){ +with(_b4){ +objj_msgSendSuper({receiver:_b4,super_class:objj_getClass("CPOutlineView").super_class},"_unloadDataViewsInRows:columns:",_b6,_b7); +var _b8=objj_msgSend(objj_msgSend(_b4,"tableColumns"),"indexOfObjectIdenticalTo:",objj_msgSend(_b4,"outlineTableColumn")); +if(!objj_msgSend(_b7,"containsIndex:",_b8)){ +return; +} +var _b9=[]; +objj_msgSend(_b6,"getIndexes:maxCount:inIndexRange:",_b9,-1,nil); +var _ba=0,_bb=_b9.length; +for(;_ba<_bb;++_ba){ +var row=_b9[_ba],_bc=_disclosureControlsForRows[row]; +if(!_bc){ +continue; +} +objj_msgSend(_bc,"removeFromSuperview"); +objj_msgSend(_b4,"_enqueueDisclosureControl:",_bc); +_disclosureControlsForRows[row]=nil; +} +} +}),new objj_method(sel_getUid("_toggleFromDisclosureControl:"),function(_bd,_be,_bf){ +with(_bd){ +var _c0=objj_msgSend(_bf,"frame"),_c1=objj_msgSend(_bd,"itemAtRow:",objj_msgSend(_bd,"rowAtPoint:",{x:(_c0.origin.x),y:(_c0.origin.y+(_c0.size.height)/2)})); +if(objj_msgSend(_bd,"isItemExpanded:",_c1)){ +objj_msgSend(_bd,"collapseItem:",_c1); +}else{ +objj_msgSend(_bd,"expandItem:",_c1); +} +} +}),new objj_method(sel_getUid("_enqueueDisclosureControl:"),function(_c2,_c3,_c4){ +with(_c2){ +_disclosureControlQueue.push(_c4); +} +}),new objj_method(sel_getUid("_dequeueDisclosureControl"),function(_c5,_c6){ +with(_c5){ +if(_disclosureControlQueue.length){ +return _disclosureControlQueue.pop(); +} +if(!_disclosureControlData){ +if(!_disclosureControlPrototype){ +return nil; +}else{ +_disclosureControlData=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_disclosureControlPrototype); +} +} +var _c7=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_disclosureControlData); +objj_msgSend(_c7,"setTarget:",_c5); +objj_msgSend(_c7,"setAction:",sel_getUid("_toggleFromDisclosureControl:")); +return _c7; +} +}),new objj_method(sel_getUid("_noteSelectionIsChanging"),function(_c8,_c9){ +with(_c8){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewSelectionIsChangingNotification,_c8,nil); +} +}),new objj_method(sel_getUid("_noteSelectionDidChange"),function(_ca,_cb){ +with(_ca){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewSelectionDidChangeNotification,_ca,nil); +} +}),new objj_method(sel_getUid("_noteItemWillExpand:"),function(_cc,_cd,_ce){ +with(_cc){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemWillExpandNotification,_cc,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_ce,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemDidExpand:"),function(_cf,_d0,_d1){ +with(_cf){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemDidExpandNotification,_cf,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d1,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemWillCollapse:"),function(_d2,_d3,_d4){ +with(_d2){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemWillCollapseNotification,_d2,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d4,"CPObject")); +} +}),new objj_method(sel_getUid("_noteItemDidCollapse:"),function(_d5,_d6,_d7){ +with(_d5){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPOutlineViewItemDidCollapseNotification,_d5,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_d7,"CPObject")); +} +})]); +var _4b=function(_d8,_d9){ +if(!_d9){ +return; +} +with(_d8){ +var _da=_itemInfosForItems,_db=_outlineViewDataSource,_dc=objj_msgSend(_d9,"UID"),_dd=_da[_dc]; +if(!_dd){ +return []; +} +var _de=_dd.parent,_df=_de?_da[objj_msgSend(_de,"UID")]:_rootItemInfo,_e0=_df.children,_e1=objj_msgSend(_e0,"indexOfObjectIdenticalTo:",_d9),_e2=objj_msgSend(_db,"outlineView:child:ofItem:",_d8,_e1,_de); +if(_d9!==_e2){ +_da[objj_msgSend(_d9,"UID")]=nil; +_da[objj_msgSend(_e2,"UID")]=_dd; +_e0[_e1]=_e2; +_itemsForRows[_dd.row]=_e2; +} +_dd.isExpandable=objj_msgSend(_db,"outlineView:isItemExpandable:",_d8,_e2); +_dd.isExpanded=_dd.isExpandable&&_dd.isExpanded; +} +}; +var _4a=function(_e3,_e4,_e5){ +with(_e3){ +var _e6=_itemInfosForItems,_e7=_outlineViewDataSource; +if(!_e4){ +var _e8=_rootItemInfo; +}else{ +var _e9=objj_msgSend(_e4,"UID"),_e8=_e6[_e9]; +if(!_e8){ +return []; +} +_e8.isExpandable=objj_msgSend(_e7,"outlineView:isItemExpandable:",_e3,_e4); +if(!_e8.isExpandable&&_e8.isExpanded){ +_e8.isExpanded=NO; +_e8.children=[]; +} +} +var _ea=_e8.weight,_eb=_e4?[_e4]:[]; +if(_e8.isExpanded&&(!(_implementedOutlineViewDataSourceMethods&_2)||!objj_msgSend(_e7,"outlineView:shouldDeferDisplayingChildrenOfItem:",_e3,_e4))){ +var _ec=0,_ed=objj_msgSend(_e7,"outlineView:numberOfChildrenOfItem:",_e3,_e4),_ee=_e8.level+1; +_e8.children=[]; +for(;_ec<_ed;++_ec){ +var _ef=objj_msgSend(_e7,"outlineView:child:ofItem:",_e3,_ec,_e4),_f0=_e6[objj_msgSend(_ef,"UID")]; +if(!_f0){ +_f0={isExpanded:NO,isExpandable:NO,children:[],weight:1}; +_e6[objj_msgSend(_ef,"UID")]=_f0; +} +_e8.children[_ec]=_ef; +var _f1=_4a(_e3,_ef,YES); +_f0.parent=_e4; +_f0.level=_ee; +_eb=_eb.concat(_f1); +} +} +_e8.weight=_eb.length; +if(!_e5){ +var _ec=MAX(_e8.row,0),_f2=_itemsForRows; +_eb.unshift(_ec,_ea); +_f2.splice.apply(_f2,_eb); +var _ed=_f2.length; +for(;_ec<_ed;++_ec){ +_e6[objj_msgSend(_f2[_ec],"UID")].row=_ec; +} +var _f3=_e8.weight-_ea; +if(_f3!==0){ +var _f4=_e8.parent; +while(_f4){ +var _f5=_e6[objj_msgSend(_f4,"UID")]; +_f5.weight+=_f3; +_f4=_f5.parent; +} +if(_e4){ +_rootItemInfo.weight+=_f3; +} +} +} +} +return _eb; +}; +var _23=objj_allocateClassPair(CPObject,"_CPOutlineViewTableViewDataSource"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineView")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithOutlineView:"),function(_f6,_f7,_f8){ +with(_f6){ +_f6=objj_msgSendSuper({receiver:_f6,super_class:objj_getClass("_CPOutlineViewTableViewDataSource").super_class},"init"); +if(_f6){ +_outlineView=_f8; +} +return _f6; +} +}),new objj_method(sel_getUid("numberOfRowsInTableView:"),function(_f9,_fa,_fb){ +with(_f9){ +return _outlineView._itemsForRows.length; +} +}),new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"),function(_fc,_fd,_fe,_ff,aRow){ +with(_fc){ +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:objectValueForTableColumn:byItem:",_outlineView,_ff,_outlineView._itemsForRows[aRow]); +} +}),new objj_method(sel_getUid("tableView:setObjectValue:forTableColumn:row:"),function(self,_100,_101,_102,_103,aRow){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_1)){ +return; +} +objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:setObjectValue:forTableColumn:byItem:",_outlineView,_102,_103,_outlineView._itemsForRows[aRow]); +} +}),new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"),function(self,_104,_105,_106,_107){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_9)){ +return NO; +} +var _108=[]; +objj_msgSend(_106,"getIndexes:maxCount:inIndexRange:",_108,objj_msgSend(_106,"count"),nil); +var _109=objj_msgSend(_108,"count"),_10a=[]; +while(_109--){ +objj_msgSend(_10a,"addObject:",objj_msgSend(_outlineView,"itemAtRow:",objj_msgSend(_108,"objectAtIndex:",_109))); +} +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:writeItems:toPasteboard:",_outlineView,_10a,_107); +} +}),new objj_method(sel_getUid("_childIndexForDropOperation:row:offset:"),function(self,_10b,_10c,_10d,_10e){ +with(self){ +if(_outlineView._shouldRetargetChildIndex){ +return _outlineView._retargedChildIndex; +} +var _10f=CPNotFound; +if(_10c===CPTableViewDropAbove){ +var _110=objj_msgSend(_outlineView,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_10d-1,_10d,_10e),_111=(_110!==nil)?_outlineView._itemInfosForItems[objj_msgSend(_110,"UID")]:_outlineView._rootItemInfo,_112=_111.children; +_10f=objj_msgSend(_112,"indexOfObject:",objj_msgSend(_outlineView,"itemAtRow:",_10d)); +if(_10f===CPNotFound){ +_10f=_112.length; +} +}else{ +if(_10c===CPTableViewDropOn){ +_10f=-1; +} +} +return _10f; +} +}),new objj_method(sel_getUid("_parentItemForDropOperation:row:offset:"),function(self,_113,_114,_115,_116){ +with(self){ +if(_114===CPTableViewDropAbove){ +return objj_msgSend(_outlineView,"_parentItemForUpperRow:andLowerRow:atMouseOffset:",_115-1,_115,_116); +} +return objj_msgSend(_outlineView,"itemAtRow:",_115); +} +}),new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"),function(self,_117,_118,_119,_11a,_11b){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_4)){ +return CPDragOperationNone; +} +_outlineView._retargetedItem=nil; +_outlineView._shouldRetargetItem=NO; +_outlineView._retargedChildIndex=nil; +_outlineView._shouldRetargetChildIndex=NO; +var _11c=objj_msgSend(_outlineView,"convertPoint:fromView:",objj_msgSend(_119,"draggingLocation"),nil),_11d=objj_msgSend(self,"_parentItemForDropOperation:row:offset:",_11b,_11a,_11c),_11e=objj_msgSend(self,"_childIndexForDropOperation:row:offset:",_11b,_11a,_11c); +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:validateDrop:proposedItem:proposedChildIndex:",_outlineView,_119,_11d,_11e); +} +}),new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"),function(self,_11f,_120,_121,_122,_123){ +with(self){ +if(!(_outlineView._implementedOutlineViewDataSourceMethods&_3)){ +return NO; +} +var _124=objj_msgSend(_outlineView,"convertPoint:fromView:",objj_msgSend(_121,"draggingLocation"),nil),_125=objj_msgSend(self,"_parentItemForDropOperation:row:offset:",_123,_122,_124); +childIndex=objj_msgSend(self,"_childIndexForDropOperation:row:offset:",_123,_122,_124); +_outlineView._retargetedItem=nil; +_outlineView._shouldRetargetItem=NO; +_outlineView._retargedChildIndex=nil; +_outlineView._shouldRetargetChildIndex=NO; +return objj_msgSend(_outlineView._outlineViewDataSource,"outlineView:acceptDrop:item:childIndex:",_outlineView,_121,_125,childIndex); +} +})]); +var _23=objj_allocateClassPair(CPObject,"_CPOutlineViewTableViewDelegate"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_outlineView")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithOutlineView:"),function(self,_126,_127){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPOutlineViewTableViewDelegate").super_class},"init"); +if(self){ +_outlineView=_127; +} +return self; +} +}),new objj_method(sel_getUid("tableView:dataViewForTableColumn:row:"),function(self,_128,_129,_12a,_12b){ +with(self){ +var _12c=nil; +if((_outlineView._implementedOutlineViewDelegateMethods&_b)){ +_12c=objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:dataViewForTableColumn:item:",_outlineView,_12a,objj_msgSend(_outlineView,"itemAtRow:",_12b)); +} +if(!_12c){ +_12c=objj_msgSend(_12a,"dataViewForRow:",_12b); +} +return _12c; +} +}),new objj_method(sel_getUid("tableView:shouldSelectRow:"),function(self,_12d,_12e,_12f){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_17)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:shouldSelectItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",_12f)); +} +return YES; +} +}),new objj_method(sel_getUid("tableView:shouldEditTableColumn:row:"),function(self,_130,_131,_132,aRow){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_14)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:shouldEditTableColumn:item:",_outlineView,_132,objj_msgSend(_outlineView,"itemAtRow:",aRow)); +} +return NO; +} +}),new objj_method(sel_getUid("tableView:heightOfRow:"),function(self,_133,_134,_135){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_e)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:heightOfRowByItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",_135)); +} +return objj_msgSend(_134,"rowHeight"); +} +}),new objj_method(sel_getUid("tableView:willDisplayView:forTableColumn:row:"),function(self,_136,_137,_138,_139,_13a){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_21)){ +var item=objj_msgSend(_outlineView,"itemAtRow:",_13a); +objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:willDisplayView:forTableColumn:item:",_outlineView,_138,_139,item); +} +} +}),new objj_method(sel_getUid("tableView:isGroupRow:"),function(self,_13b,_13c,row){ +with(self){ +if((_outlineView._implementedOutlineViewDelegateMethods&_f)){ +return objj_msgSend(_outlineView._outlineViewDelegate,"outlineView:isGroupItem:",_outlineView,objj_msgSend(_outlineView,"itemAtRow:",theRow)); +} +return NO; +} +})]); +var _23=objj_allocateClassPair(CPButton,"CPDisclosureButton"),_24=_23.isa; +class_addIvars(_23,[new objj_ivar("_angle")]); +objj_registerClassPair(_23); +class_addMethods(_23,[new objj_method(sel_getUid("initWithFrame:"),function(self,_13d,_13e){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPDisclosureButton").super_class},"initWithFrame:",_13e); +if(self){ +objj_msgSend(self,"setBordered:",NO); +} +return self; +} +}),new objj_method(sel_getUid("setState:"),function(self,_13f,_140){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPDisclosureButton").super_class},"setState:",_140); +if(objj_msgSend(self,"state")===CPOnState){ +_angle=0; +}else{ +_angle=-PI_2; +} +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_141,_142){ +with(self){ +var _143=objj_msgSend(self,"bounds"),_144=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(_144); +CGContextTranslateCTM(_144,(_143.size.width)/2,(_143.size.height)/2); +CGContextRotateCTM(_144,_angle); +CGContextTranslateCTM(_144,-(_143.size.width)/2,-(_143.size.height)/2); +CGContextTranslateCTM(_144,FLOOR(((_143.size.width)-9)/2),FLOOR(((_143.size.height)-8)/2)); +CGContextMoveToPoint(_144,0,0); +CGContextAddLineToPoint(_144,9,0); +CGContextAddLineToPoint(_144,4.5,8); +CGContextAddLineToPoint(_144,0,0); +CGContextClosePath(_144); +CGContextSetFillColor(_144,_145(objj_msgSend(self,"hasThemeState:",CPThemeStateSelected),objj_msgSend(self,"hasThemeState:",CPThemeStateHighlighted))); +CGContextFillPath(_144); +CGContextBeginPath(_144); +CGContextMoveToPoint(_144,0,0); +if(_angle===0){ +CGContextAddLineToPoint(_144,4.5,8); +CGContextAddLineToPoint(_144,9,0); +}else{ +CGContextAddLineToPoint(_144,4.5,8); +} +CGContextSetStrokeColor(_144,objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1,0.8)); +CGContextStrokePath(_144); +} +})]); +var _146="CPOutlineViewIndentationPerLevelKey",_147="CPOutlineViewOutlineTableColumnKey",_148="CPOutlineViewDataSourceKey",_149="CPOutlineViewDelegateKey"; +var _23=objj_getClass("CPOutlineView"); +if(!_23){ +throw new SyntaxError("*** Could not find definition for class \"CPOutlineView\""); +} +var _24=_23.isa; +class_addMethods(_23,[new objj_method(sel_getUid("initWithCoder:"),function(self,_14a,_14b){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"initWithCoder:",_14b); +if(self){ +_rootItemInfo={isExpanded:YES,isExpandable:NO,level:-1,row:-1,children:[],weight:0}; +_itemsForRows=[]; +_itemInfosForItems={}; +_disclosureControlsForRows=[]; +objj_msgSend(self,"setIndentationMarkerFollowsDataView:",YES); +objj_msgSend(self,"setDisclosureControlPrototype:",objj_msgSend(objj_msgSend(CPDisclosureButton,"alloc"),"initWithFrame:",CGRectMake(0,0,10,10))); +_outlineTableColumn=objj_msgSend(_14b,"decodeObjectForKey:",_147); +_indentationPerLevel=objj_msgSend(_14b,"decodeFloatForKey:",_146); +_outlineViewDataSource=objj_msgSend(_14b,"decodeObjectForKey:",_148); +_outlineViewDelegate=objj_msgSend(_14b,"decodeObjectForKey:",_149); +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"setDataSource:",objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource,"alloc"),"initWithOutlineView:",self)); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_14c,_14d){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPOutlineView").super_class},"encodeWithCoder:",_14d); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineTableColumn,_147); +objj_msgSend(_14d,"encodeFloat:forKey:",_indentationPerLevel,_146); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineViewDataSource,_148); +objj_msgSend(_14d,"encodeObject:forKey:",_outlineViewDelegate,_149); +} +})]); +var _145=function(_14e,_14f){ +return _14e?(_14f?objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.9,1):objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",1,1)):(_14f?objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.4,1):objj_msgSend(CPColor,"colorWithCalibratedWhite:alpha:",0.5,1)); +}; +p;9;CPPanel.jt;1172;@STATIC;1.0;i;10;CPWindow.jt;1138; +objj_executeFile("CPWindow.j",YES); +CPOKButton=1; +CPCancelButton=0; +CPDocModalWindowMask=1<<6; +var _1=objj_allocateClassPair(CPWindow,"CPPanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_becomesKeyOnlyIfNeeded"),new objj_ivar("_worksWhenModal")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isFloatingPanel"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"level")==CPFloatingWindowLevel; +} +}),new objj_method(sel_getUid("setFloatingPanel:"),function(_5,_6,_7){ +with(_5){ +objj_msgSend(_5,"setLevel:",_7?CPFloatingWindowLevel:CPNormalWindowLevel); +} +}),new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"),function(_8,_9){ +with(_8){ +return _becomesKeyOnlyIfNeeded; +} +}),new objj_method(sel_getUid("setBecomesKeyOnlyIfNeeded:"),function(_a,_b,_c){ +with(_a){ +_becomesKeyOnlyIfNeeded=_c; +} +}),new objj_method(sel_getUid("worksWhenModal"),function(_d,_e){ +with(_d){ +return _worksWhenModal; +} +}),new objj_method(sel_getUid("setWorksWhenModal:"),function(_f,_10,_11){ +with(_f){ +_worksWhenModal=_11; +} +}),new objj_method(sel_getUid("canBecomeMainWindow"),function(_12,_13){ +with(_12){ +return NO; +} +})]); +p;14;CPPasteboard.jt;6740;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;40;Foundation/CPPropertyListSerialization.jt;6595; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPPropertyListSerialization.j",NO); +CPGeneralPboard="CPGeneralPboard"; +CPFontPboard="CPFontPboard"; +CPRulerPboard="CPRulerPboard"; +CPFindPboard="CPFindPboard"; +CPDragPboard="CPDragPboard"; +CPColorPboardType="CPColorPboardType"; +CPFilenamesPboardType="CPFilenamesPboardType"; +CPFontPboardType="CPFontPboardType"; +CPHTMLPboardType="CPHTMLPboardType"; +CPStringPboardType="CPStringPboardType"; +CPURLPboardType="CPURLPboardType"; +CPImagesPboardType="CPImagesPboardType"; +CPVideosPboardType="CPVideosPboardType"; +UTF8PboardType="public.utf8-plain-text"; +CPImagePboardType="CPImagePboardType"; +var _1=nil,_2=NO; +var _3=objj_allocateClassPair(CPObject,"CPPasteboard"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_types"),new objj_ivar("_owners"),new objj_ivar("_provided"),new objj_ivar("_changeCount"),new objj_ivar("_stateUID"),new objj_ivar("_nativePasteboard")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("_initWithName:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPPasteboard").super_class},"init"); +if(_5){ +_name=_7; +_types=[]; +_owners=objj_msgSend(CPDictionary,"dictionary"); +_provided=objj_msgSend(CPDictionary,"dictionary"); +_changeCount=0; +if(_2){ +_nativePasteboard=window.cpPasteboardWithName(_7); +objj_msgSend(_5,"_synchronizePasteboard"); +} +} +return _5; +} +}),new objj_method(sel_getUid("addTypes:owner:"),function(_8,_9,_a,_b){ +with(_8){ +var i=0,_c=_a.length; +for(;i<_c;++i){ +var _d=_a[i]; +if(!objj_msgSend(_owners,"objectForKey:",_d)){ +objj_msgSend(_types,"addObject:",_d); +objj_msgSend(_provided,"removeObjectForKey:",_d); +} +objj_msgSend(_owners,"setObject:forKey:",_b,_d); +} +if(_nativePasteboard){ +var _e=objj_msgSend(_a,"copy"); +if(objj_msgSend(_a,"containsObject:",CPStringPboardType)){ +_e.push(UTF8PboardType); +} +_nativePasteboard.addTypes_(_e); +} +return ++_changeCount; +} +}),new objj_method(sel_getUid("declareTypes:owner:"),function(_f,_10,_11,_12){ +with(_f){ +objj_msgSend(_f,"_declareTypes:owner:updateNativePasteboard:",_11,_12,YES); +} +}),new objj_method(sel_getUid("_declareTypes:owner:updateNativePasteboard:"),function(_13,_14,_15,_16,_17){ +with(_13){ +objj_msgSend(_types,"setArray:",_15); +_owners=objj_msgSend(CPDictionary,"dictionary"); +_provided=objj_msgSend(CPDictionary,"dictionary"); +var _18=_types.length; +while(_18--){ +objj_msgSend(_owners,"setObject:forKey:",_16,_types[_18]); +} +if(_nativePasteboard&&_17){ +var _19=objj_msgSend(_15,"copy"); +if(objj_msgSend(_15,"containsObject:",CPStringPboardType)){ +_19.push(UTF8PboardType); +} +_nativePasteboard.declareTypes_(_19); +_changeCount=_nativePasteboard.changeCount(); +} +return ++_changeCount; +} +}),new objj_method(sel_getUid("setData:forType:"),function(_1a,_1b,_1c,_1d){ +with(_1a){ +objj_msgSend(_provided,"setObject:forKey:",_1c,_1d); +if(_1d===CPStringPboardType){ +objj_msgSend(_1a,"setData:forType:",_1c,UTF8PboardType); +} +return YES; +} +}),new objj_method(sel_getUid("setPropertyList:forType:"),function(_1e,_1f,_20,_21){ +with(_1e){ +return objj_msgSend(_1e,"setData:forType:",objj_msgSend(CPPropertyListSerialization,"dataFromPropertyList:format:",_20,CPPropertyList280NorthFormat_v1_0),_21); +} +}),new objj_method(sel_getUid("setString:forType:"),function(_22,_23,_24,_25){ +with(_22){ +objj_msgSend(_22,"setPropertyList:forType:",_24,_25); +} +}),new objj_method(sel_getUid("availableTypeFromArray:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"types"),"firstObjectCommonWithArray:",_28); +} +}),new objj_method(sel_getUid("types"),function(_29,_2a){ +with(_29){ +objj_msgSend(_29,"_synchronizePasteboard"); +return _types; +} +}),new objj_method(sel_getUid("changeCount"),function(_2b,_2c){ +with(_2b){ +return _changeCount; +} +}),new objj_method(sel_getUid("dataForType:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_provided,"objectForKey:",_2f); +if(_30){ +return _30; +} +var _31=objj_msgSend(_owners,"objectForKey:",_2f); +if(_31){ +objj_msgSend(_31,"pasteboard:provideDataForType:",_2d,_2f); +return objj_msgSend(_provided,"objectForKey:",_2f); +} +if(_2f===CPStringPboardType){ +return objj_msgSend(_2d,"dataForType:",UTF8PboardType); +} +return nil; +} +}),new objj_method(sel_getUid("_synchronizePasteboard"),function(_32,_33){ +with(_32){ +if(_nativePasteboard&&_nativePasteboard.changeCount()>_changeCount){ +var _34=objj_msgSend(_nativePasteboard.types(),"copy"); +if(objj_msgSend(_34,"containsObject:",UTF8PboardType)){ +_34.push(CPStringPboardType); +} +objj_msgSend(_32,"_declareTypes:owner:updateNativePasteboard:",_34,_32,NO); +_changeCount=_nativePasteboard.changeCount(); +} +} +}),new objj_method(sel_getUid("pasteboard:provideDataForType:"),function(_35,_36,_37,_38){ +with(_35){ +if(_38===CPStringPboardType){ +var _39=_nativePasteboard.stringForType_(UTF8PboardType); +objj_msgSend(_35,"setString:forType:",_39,CPStringPboardType); +objj_msgSend(_35,"setString:forType:",_39,UTF8PboardType); +}else{ +objj_msgSend(_35,"setString:forType:",_nativePasteboard.stringForType_(_38),_38); +} +} +}),new objj_method(sel_getUid("propertyListForType:"),function(_3a,_3b,_3c){ +with(_3a){ +var _3d=objj_msgSend(_3a,"dataForType:",_3c); +if(_3d){ +return objj_msgSend(CPPropertyListSerialization,"propertyListFromData:format:",_3d,CPPropertyList280NorthFormat_v1_0); +} +return nil; +} +}),new objj_method(sel_getUid("stringForType:"),function(_3e,_3f,_40){ +with(_3e){ +return objj_msgSend(_3e,"propertyListForType:",_40); +} +}),new objj_method(sel_getUid("_generateStateUID"),function(_41,_42){ +with(_41){ +var _43=32; +_stateUID=""; +while(_43--){ +_stateUID+=FLOOR(RAND()*16).toString(16).toUpperCase(); +} +return _stateUID; +} +}),new objj_method(sel_getUid("_stateUID"),function(_44,_45){ +with(_44){ +return _stateUID; +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_46,_47){ +with(_46){ +if(_46!=objj_msgSend(CPPasteboard,"class")){ +return; +} +objj_msgSend(_46,"setVersion:",1); +_1=objj_msgSend(CPDictionary,"dictionary"); +if(typeof window.cpPasteboardWithName!=="undefined"){ +_2=YES; +} +} +}),new objj_method(sel_getUid("generalPasteboard"),function(_48,_49){ +with(_48){ +return objj_msgSend(CPPasteboard,"pasteboardWithName:",CPGeneralPboard); +} +}),new objj_method(sel_getUid("pasteboardWithName:"),function(_4a,_4b,_4c){ +with(_4a){ +var _4d=objj_msgSend(_1,"objectForKey:",_4c); +if(_4d){ +return _4d; +} +_4d=objj_msgSend(objj_msgSend(CPPasteboard,"alloc"),"_initWithName:",_4c); +objj_msgSend(_1,"setObject:forKey:",_4d,_4c); +return _4d; +} +})]); +p;15;CPPopUpButton.jt;13484;@STATIC;1.0;i;10;CPButton.ji;12;CPGeometry.ji;8;CPMenu.ji;12;CPMenuItem.jt;13403; +objj_executeFile("CPButton.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPMenuItem.j",YES); +var _1=7; +CPPopUpButtonStatePullsDown=CPThemeState("pulls-down"); +var _2=objj_allocateClassPair(CPButton,"CPPopUpButton"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_selectedIndex"),new objj_ivar("_preferredEdge"),new objj_ivar("_menu")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:pullsDown:"),function(_4,_5,_6,_7){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPPopUpButton").super_class},"initWithFrame:",_6); +if(_4){ +_selectedIndex=CPNotFound; +_preferredEdge=CPMaxYEdge; +objj_msgSend(_4,"setValue:forThemeAttribute:",CPImageLeft,"image-position"); +objj_msgSend(_4,"setValue:forThemeAttribute:",CPLeftTextAlignment,"alignment"); +objj_msgSend(_4,"setValue:forThemeAttribute:",CPLineBreakByTruncatingTail,"line-break-mode"); +objj_msgSend(_4,"setMenu:",objj_msgSend(objj_msgSend(CPMenu,"alloc"),"initWithTitle:","")); +objj_msgSend(_4,"setPullsDown:",_7); +} +return _4; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(_8,"initWithFrame:pullsDown:",_a,NO); +} +}),new objj_method(sel_getUid("setPullsDown:"),function(_b,_c,_d){ +with(_b){ +if(_d){ +var _e=objj_msgSend(_b,"setThemeState:",CPPopUpButtonStatePullsDown); +}else{ +var _e=objj_msgSend(_b,"unsetThemeState:",CPPopUpButtonStatePullsDown); +} +if(!_e){ +return; +} +var _f=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_f,"count")<=0){ +return; +} +objj_msgSend(_f[0],"setHidden:",objj_msgSend(_b,"pullsDown")); +objj_msgSend(_b,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("pullsDown"),function(_10,_11){ +with(_10){ +return objj_msgSend(_10,"hasThemeState:",CPPopUpButtonStatePullsDown); +} +}),new objj_method(sel_getUid("addItem:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_menu,"addItem:",_14); +} +}),new objj_method(sel_getUid("addItemWithTitle:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_menu,"addItemWithTitle:action:keyEquivalent:",_17,NULL,nil); +} +}),new objj_method(sel_getUid("addItemsWithTitles:"),function(_18,_19,_1a){ +with(_18){ +var _1b=0,_1c=objj_msgSend(_1a,"count"); +for(;_1b<_1c;++_1b){ +objj_msgSend(_18,"addItemWithTitle:",_1a[_1b]); +} +} +}),new objj_method(sel_getUid("insertItemWithTitle:atIndex:"),function(_1d,_1e,_1f,_20){ +with(_1d){ +var _21=objj_msgSend(_1d,"itemArray"),_22=objj_msgSend(_21,"count"); +while(_22--){ +if(objj_msgSend(_21[_22],"title")==_1f){ +objj_msgSend(_1d,"removeItemAtIndex:",_22); +} +} +objj_msgSend(_menu,"insertItemWithTitle:action:keyEquivalent:atIndex:",_1f,NULL,nil,_20); +} +}),new objj_method(sel_getUid("removeAllItems"),function(_23,_24){ +with(_23){ +var _25=objj_msgSend(_menu,"numberOfItems"); +while(_25--){ +objj_msgSend(_menu,"removeItemAtIndex:",0); +} +} +}),new objj_method(sel_getUid("removeItemWithTitle:"),function(_26,_27,_28){ +with(_26){ +objj_msgSend(_26,"removeItemAtIndex:",objj_msgSend(_26,"indexOfItemWithTitle:",_28)); +objj_msgSend(_26,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_menu,"removeItemAtIndex:",_2b); +objj_msgSend(_29,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("selectedItem"),function(_2c,_2d){ +with(_2c){ +if(_selectedIndex<0||_selectedIndex>objj_msgSend(_2c,"numberOfItems")-1){ +return nil; +} +return objj_msgSend(_menu,"itemAtIndex:",_selectedIndex); +} +}),new objj_method(sel_getUid("titleOfSelectedItem"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(objj_msgSend(_2e,"selectedItem"),"title"); +} +}),new objj_method(sel_getUid("indexOfSelectedItem"),function(_30,_31){ +with(_30){ +return _selectedIndex; +} +}),new objj_method(sel_getUid("objectValue"),function(_32,_33){ +with(_32){ +return _selectedIndex; +} +}),new objj_method(sel_getUid("selectItem:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_34,"selectItemAtIndex:",objj_msgSend(_34,"indexOfItem:",_36)); +} +}),new objj_method(sel_getUid("selectItemAtIndex:"),function(_37,_38,_39){ +with(_37){ +if(_selectedIndex==_39){ +return; +} +if(_selectedIndex>=0&&!objj_msgSend(_37,"pullsDown")){ +objj_msgSend(objj_msgSend(_37,"selectedItem"),"setState:",CPOffState); +} +_selectedIndex=_39; +if(_selectedIndex>=0&&!objj_msgSend(_37,"pullsDown")){ +objj_msgSend(objj_msgSend(_37,"selectedItem"),"setState:",CPOnState); +} +objj_msgSend(_37,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("selectItemWithTag:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSend(_3a,"selectItemAtIndex:",objj_msgSend(_3a,"indexOfItemWithTag:",_3c)); +} +}),new objj_method(sel_getUid("selectItemWithTitle:"),function(_3d,_3e,_3f){ +with(_3d){ +objj_msgSend(_3d,"selectItemAtIndex:",objj_msgSend(_3d,"indexOfItemWithTitle:",_3f)); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"selectItemAtIndex:",objj_msgSend(_42,"intValue")); +} +}),new objj_method(sel_getUid("menu"),function(_43,_44){ +with(_43){ +return _menu; +} +}),new objj_method(sel_getUid("setMenu:"),function(_45,_46,_47){ +with(_45){ +if(_menu===_47){ +return; +} +var _48=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_menu){ +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidAddItemNotification,_menu); +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_48,"removeObserver:name:object:",_45,CPMenuDidRemoveItemNotification,_menu); +} +_menu=_47; +if(_menu){ +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidAddItem:"),CPMenuDidAddItemNotification,_menu); +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidChangeItem:"),CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_48,"addObserver:selector:name:object:",_45,sel_getUid("menuDidRemoveItem:"),CPMenuDidRemoveItemNotification,_menu); +} +objj_msgSend(_45,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("numberOfItems"),function(_49,_4a){ +with(_49){ +return objj_msgSend(_menu,"numberOfItems"); +} +}),new objj_method(sel_getUid("itemArray"),function(_4b,_4c){ +with(_4b){ +return objj_msgSend(_menu,"itemArray"); +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_4d,_4e,_4f){ +with(_4d){ +return objj_msgSend(_menu,"itemAtIndex:",_4f); +} +}),new objj_method(sel_getUid("itemTitleAtIndex:"),function(_50,_51,_52){ +with(_50){ +return objj_msgSend(objj_msgSend(_menu,"itemAtIndex:",_52),"title"); +} +}),new objj_method(sel_getUid("itemTitles"),function(_53,_54){ +with(_53){ +var _55=[],_56=objj_msgSend(_53,"itemArray"),_57=0,_58=objj_msgSend(_56,"count"); +for(;_57<_58;++_57){ +_55.push(objj_msgSend(_56[_57],"title")); +} +return _55; +} +}),new objj_method(sel_getUid("itemWithTitle:"),function(_59,_5a,_5b){ +with(_59){ +return objj_msgSend(_menu,"itemAtIndex:",objj_msgSend(_menu,"indexOfItemWithTitle:",_5b)); +} +}),new objj_method(sel_getUid("lastItem"),function(_5c,_5d){ +with(_5c){ +return objj_msgSend(objj_msgSend(_menu,"itemArray"),"lastObject"); +} +}),new objj_method(sel_getUid("indexOfItem:"),function(_5e,_5f,_60){ +with(_5e){ +return objj_msgSend(_menu,"indexOfItem:",_60); +} +}),new objj_method(sel_getUid("indexOfItemWithTag:"),function(_61,_62,_63){ +with(_61){ +return objj_msgSend(_menu,"indexOfItemWithTag:",_63); +} +}),new objj_method(sel_getUid("indexOfItemWithTitle:"),function(_64,_65,_66){ +with(_64){ +return objj_msgSend(_menu,"indexOfItemWithTitle:",_66); +} +}),new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"),function(_67,_68,_69){ +with(_67){ +return objj_msgSend(_menu,"indexOfItemWithRepresentedObject:",_69); +} +}),new objj_method(sel_getUid("indexOfItemWithTarget:action:"),function(_6a,_6b,_6c,_6d){ +with(_6a){ +return objj_msgSend(_menu,"indexOfItemWithTarget:action:",_6c,_6d); +} +}),new objj_method(sel_getUid("preferredEdge"),function(_6e,_6f){ +with(_6e){ +return _preferredEdge; +} +}),new objj_method(sel_getUid("setPreferredEdge:"),function(_70,_71,_72){ +with(_70){ +_preferredEdge=_72; +} +}),new objj_method(sel_getUid("setTitle:"),function(_73,_74,_75){ +with(_73){ +if(objj_msgSend(_73,"title")===_75){ +return; +} +if(objj_msgSend(_73,"pullsDown")){ +var _76=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_76,"count")<=0){ +objj_msgSend(_73,"addItemWithTitle:",_75); +}else{ +objj_msgSend(_76[0],"setTitle:",_75); +objj_msgSend(_73,"synchronizeTitleAndSelectedItem"); +} +}else{ +var _77=objj_msgSend(_73,"indexOfItemWithTitle:",_75); +if(_77<0){ +objj_msgSend(_73,"addItemWithTitle:",_75); +_77=objj_msgSend(_73,"numberOfItems")-1; +} +objj_msgSend(_73,"selectItemAtIndex:",_77); +} +} +}),new objj_method(sel_getUid("setImage:"),function(_78,_79,_7a){ +with(_78){ +} +}),new objj_method(sel_getUid("synchronizeTitleAndSelectedItem"),function(_7b,_7c){ +with(_7b){ +var _7d=nil; +if(objj_msgSend(_7b,"pullsDown")){ +var _7e=objj_msgSend(_menu,"itemArray"); +if(objj_msgSend(_7e,"count")>0){ +_7d=_7e[0]; +} +}else{ +_7d=objj_msgSend(_7b,"selectedItem"); +} +objj_msgSendSuper({receiver:_7b,super_class:objj_getClass("CPPopUpButton").super_class},"setImage:",objj_msgSend(_7d,"image")); +objj_msgSendSuper({receiver:_7b,super_class:objj_getClass("CPPopUpButton").super_class},"setTitle:",objj_msgSend(_7d,"title")); +} +}),new objj_method(sel_getUid("menuDidAddItem:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(objj_msgSend(_81,"userInfo"),"objectForKey:","CPMenuItemIndex"); +if(_selectedIndex<0){ +objj_msgSend(_7f,"selectItemAtIndex:",0); +}else{ +if(_82==_selectedIndex){ +objj_msgSend(_7f,"synchronizeTitleAndSelectedItem"); +}else{ +if(_82<_selectedIndex){ +++_selectedIndex; +} +} +} +if(_82==0&&objj_msgSend(_7f,"pullsDown")){ +var _83=objj_msgSend(_menu,"itemArray"); +objj_msgSend(_83[0],"setHidden:",YES); +if(_83.length>0){ +objj_msgSend(_83[1],"setHidden:",NO); +} +} +var _84=objj_msgSend(_menu,"itemArray")[_82],_85=objj_msgSend(_84,"action"); +if(!_85||(_85===sel_getUid("_popUpItemAction:"))){ +objj_msgSend(_84,"setTarget:",_7f); +objj_msgSend(_84,"setAction:",sel_getUid("_popUpItemAction:")); +} +} +}),new objj_method(sel_getUid("menuDidChangeItem:"),function(_86,_87,_88){ +with(_86){ +var _89=objj_msgSend(objj_msgSend(_88,"userInfo"),"objectForKey:","CPMenuItemIndex"); +if(objj_msgSend(_86,"pullsDown")&&_89!=0){ +return; +} +if(!objj_msgSend(_86,"pullsDown")&&_89!=_selectedIndex){ +return; +} +objj_msgSend(_86,"synchronizeTitleAndSelectedItem"); +} +}),new objj_method(sel_getUid("menuDidRemoveItem:"),function(_8a,_8b,_8c){ +with(_8a){ +var _8d=objj_msgSend(_8a,"numberOfItems"); +if(_8d<=_selectedIndex&&_8d>0){ +objj_msgSend(_8a,"selectItemAtIndex:",_8d-1); +}else{ +objj_msgSend(_8a,"synchronizeTitleAndSelectedItem"); +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_8e,_8f,_90){ +with(_8e){ +if(!objj_msgSend(_8e,"isEnabled")||!objj_msgSend(_8e,"numberOfItems")){ +return; +} +objj_msgSend(_8e,"highlight:",YES); +var _91=objj_msgSend(_8e,"menu"),_92=objj_msgSend(_8e,"bounds"),_93=CGRectGetWidth(_92); +objj_msgSend(_91,"setFont:",objj_msgSend(_8e,"font")); +if(objj_msgSend(_8e,"pullsDown")){ +var _94=nil,_95=CGPointMake(0,CGRectGetMaxY(_92)); +}else{ +var _96=objj_msgSend(_8e,"contentRectForBounds:",_92),_94=objj_msgSend(_8e,"selectedItem"),_97=objj_msgSend(_CPMenuWindow,"_standardLeftMargin")+objj_msgSend(_CPMenuItemStandardView,"_standardLeftMargin"),_95=CGPointMake(CGRectGetMinX(_96)-_97,0); +_93+=_97; +objj_msgSend(_91,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(_91,"setMinimumWidth:",_93); +objj_msgSend(_91,"_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:",_94,_95,CGRectGetMinY(_92),CGRectGetMaxY(_92),_8e,function(_98){ +objj_msgSend(_8e,"highlight:",NO); +var _99=objj_msgSend(_98,"highlightedItem"); +if(objj_msgSend(_99,"_isSelectable")){ +objj_msgSend(_8e,"selectItem:",_99); +} +}); +} +}),new objj_method(sel_getUid("_popUpItemAction:"),function(_9a,_9b,_9c){ +with(_9a){ +objj_msgSend(_9a,"sendAction:to:",objj_msgSend(_9a,"action"),objj_msgSend(_9a,"target")); +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_9d,_9e,_9f,_a0){ +with(_9d){ +var _a1=_a0.length,_a2=objj_msgSend(_a0[0],"valueForKeyPath:",_9f); +objj_msgSend(_9d,"selectItemWithTag:",_a2); +objj_msgSend(_9d,"setEnabled:",YES); +while(_a1-->1){ +if(_a2!==objj_msgSend(_a0[_a1],"valueForKeyPath:",_9f)){ +objj_msgSend(objj_msgSend(_9d,"selectedItem"),"setState:",CPOffState); +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("themeClass"),function(_a3,_a4){ +with(_a3){ +return "popup-button"; +} +})]); +var _a5="CPPopUpButtonMenuKey",_a6="CPPopUpButtonSelectedIndexKey",_a7="CPPopUpButtonPullsDownKey"; +var _2=objj_getClass("CPPopUpButton"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPPopUpButton\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_a8,_a9,_aa){ +with(_a8){ +_a8=objj_msgSendSuper({receiver:_a8,super_class:objj_getClass("CPPopUpButton").super_class},"initWithCoder:",_aa); +if(_a8){ +_selectedIndex=-1; +objj_msgSend(_a8,"setMenu:",objj_msgSend(_aa,"decodeObjectForKey:",_a5)); +objj_msgSend(_a8,"selectItemAtIndex:",objj_msgSend(_aa,"decodeObjectForKey:",_a6)); +} +return _a8; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_ab,_ac,_ad){ +with(_ab){ +objj_msgSendSuper({receiver:_ab,super_class:objj_getClass("CPPopUpButton").super_class},"encodeWithCoder:",_ad); +objj_msgSend(_ad,"encodeObject:forKey:",_menu,_a5); +objj_msgSend(_ad,"encodeInt:forKey:",_selectedIndex,_a6); +} +})]); +p;21;CPProgressIndicator.jt;8302;@STATIC;1.0;I;19;AppKit/CGGeometry.jI;20;AppKit/CPImageView.jI;15;AppKit/CPView.jt;8214; +objj_executeFile("AppKit/CGGeometry.j",NO); +objj_executeFile("AppKit/CPImageView.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPProgressIndicatorBarStyle=0; +CPProgressIndicatorSpinningStyle=1; +CPProgressIndicatorHUDBarStyle=2; +var _1=nil,_2=nil,_3=nil,_4=nil; +var _5=objj_allocateClassPair(CPView,"CPProgressIndicator"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_minValue"),new objj_ivar("_maxValue"),new objj_ivar("_doubleValue"),new objj_ivar("_controlSize"),new objj_ivar("_isIndeterminate"),new objj_ivar("_style"),new objj_ivar("_isAnimating"),new objj_ivar("_isDisplayedWhenStoppedSet"),new objj_ivar("_isDisplayedWhenStopped"),new objj_ivar("_barView")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPProgressIndicator").super_class},"initWithFrame:",_9); +if(_7){ +_minValue=0; +_maxValue=100; +_doubleValue=0; +_style=CPProgressIndicatorBarStyle; +_isDisplayedWhenStoppedSet=NO; +_controlSize=CPRegularControlSize; +objj_msgSend(_7,"updateBackgroundColor"); +objj_msgSend(_7,"drawBar"); +} +return _7; +} +}),new objj_method(sel_getUid("setUsesThreadedAnimation:"),function(_a,_b,_c){ +with(_a){ +} +}),new objj_method(sel_getUid("startAnimation:"),function(_d,_e,_f){ +with(_d){ +_isAnimating=YES; +objj_msgSend(_d,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("stopAnimation:"),function(_10,_11,_12){ +with(_10){ +_isAnimating=NO; +objj_msgSend(_10,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("usesThreadedAnimation"),function(_13,_14){ +with(_13){ +return NO; +} +}),new objj_method(sel_getUid("incrementBy:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"setDoubleValue:",_doubleValue+_17); +} +}),new objj_method(sel_getUid("setDoubleValue:"),function(_18,_19,_1a){ +with(_18){ +_doubleValue=MIN(MAX(_1a,_minValue),_maxValue); +objj_msgSend(_18,"drawBar"); +} +}),new objj_method(sel_getUid("doubleValue"),function(_1b,_1c){ +with(_1b){ +return _doubleValue; +} +}),new objj_method(sel_getUid("setMinValue:"),function(_1d,_1e,_1f){ +with(_1d){ +_minValue=_1f; +} +}),new objj_method(sel_getUid("minValue"),function(_20,_21){ +with(_20){ +return _minValue; +} +}),new objj_method(sel_getUid("setMaxValue:"),function(_22,_23,_24){ +with(_22){ +_maxValue=_24; +} +}),new objj_method(sel_getUid("maxValue"),function(_25,_26){ +with(_25){ +return _maxValue; +} +}),new objj_method(sel_getUid("setControlSize:"),function(_27,_28,_29){ +with(_27){ +if(_controlSize==_29){ +return; +} +_controlSize=_29; +objj_msgSend(_27,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("controlSize"),function(_2a,_2b){ +with(_2a){ +return _controlSize; +} +}),new objj_method(sel_getUid("setControlTint:"),function(_2c,_2d,_2e){ +with(_2c){ +} +}),new objj_method(sel_getUid("controlTint"),function(_2f,_30){ +with(_2f){ +return 0; +} +}),new objj_method(sel_getUid("setBezeled:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("isBezeled"),function(_34,_35){ +with(_34){ +return YES; +} +}),new objj_method(sel_getUid("setIndeterminate:"),function(_36,_37,_38){ +with(_36){ +if(_isIndeterminate==_38){ +return; +} +_isIndeterminate=_38; +objj_msgSend(_36,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("isIndeterminate"),function(_39,_3a){ +with(_39){ +return _isIndeterminate; +} +}),new objj_method(sel_getUid("setStyle:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_style==_3d){ +return; +} +_style=_3d; +objj_msgSend(_3b,"updateBackgroundColor"); +} +}),new objj_method(sel_getUid("sizeToFit"),function(_3e,_3f){ +with(_3e){ +if(_style==CPProgressIndicatorSpinningStyle){ +objj_msgSend(_3e,"setFrameSize:",objj_msgSend(objj_msgSend(_1[_controlSize],"patternImage"),"size")); +}else{ +objj_msgSend(_3e,"setFrameSize:",CGSizeMake(CGRectGetWidth(objj_msgSend(_3e,"frame")),_4[_2+"BezelBorder"+_3[CPProgressIndicatorBarStyle]+_CPControlIdentifierForControlSize(_controlSize)][0].height)); +} +} +}),new objj_method(sel_getUid("setDisplayedWhenStopped:"),function(_40,_41,_42){ +with(_40){ +if(_isDisplayedWhenStoppedSet&&_isDisplayedWhenStopped==_42){ +return; +} +_isDisplayedWhenStoppedSet=YES; +_isDisplayedWhenStopped=_42; +objj_msgSend(_40,"_hideOrDisplay"); +} +}),new objj_method(sel_getUid("isDisplayedWhenStopped"),function(_43,_44){ +with(_43){ +if(_isDisplayedWhenStoppedSet){ +return _isDisplayedWhenStopped; +} +if(_style==CPProgressIndicatorBarStyle||_style==CPProgressIndicatorHUDBarStyle){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("_hideOrDisplay"),function(_45,_46){ +with(_45){ +objj_msgSend(_45,"setHidden:",!_isAnimating&&!objj_msgSend(_45,"isDisplayedWhenStopped")); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_47,_48,_49){ +with(_47){ +objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPProgressIndicator").super_class},"setFrameSize:",_49); +objj_msgSend(_47,"drawBar"); +} +}),new objj_method(sel_getUid("drawBar"),function(_4a,_4b){ +with(_4a){ +if(_style==CPProgressIndicatorSpinningStyle){ +return; +} +if(!_barView){ +_barView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,16)); +objj_msgSend(_4a,"addSubview:",_barView); +} +objj_msgSend(_barView,"setBackgroundColor:",_CPControlThreePartImagePattern(NO,_4,_2,"Bar",_3[_style],_CPControlIdentifierForControlSize(_controlSize))); +var _4c=CGRectGetWidth(objj_msgSend(_4a,"bounds")),_4d=_4c*((_doubleValue-_minValue)/(_maxValue-_minValue)); +if(_4d>0&&_4d<4){ +_4d=4; +} +objj_msgSend(_barView,"setFrameSize:",CGSizeMake(_4d,16)); +} +}),new objj_method(sel_getUid("updateBackgroundColor"),function(_4e,_4f){ +with(_4e){ +if(YES){ +if(_style==CPProgressIndicatorSpinningStyle){ +objj_msgSend(_barView,"removeFromSuperview"); +_barView=nil; +objj_msgSend(_4e,"setBackgroundColor:",_1[_controlSize]); +}else{ +objj_msgSend(_4e,"setBackgroundColor:",_CPControlThreePartImagePattern(NO,_4,_2,"BezelBorder",_3[_style],_CPControlIdentifierForControlSize(_controlSize))); +objj_msgSend(_4e,"drawBar"); +} +}else{ +objj_msgSend(_4e,"setBackgroundColor:",nil); +} +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("initialize"),function(_50,_51){ +with(_50){ +if(_50!=objj_msgSend(CPProgressIndicator,"class")){ +return; +} +var _52=objj_msgSend(CPBundle,"bundleForClass:",_50); +_1=[]; +_1[CPMiniControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +_1[CPSmallControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +_1[CPRegularControlSize]=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_52,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(64,64))); +CPProgressIndicatorBezelBorderViewPool=[]; +var _53=CPProgressIndicatorBarStyle,end=CPProgressIndicatorHUDBarStyle; +for(;_53<=end;++_53){ +CPProgressIndicatorBezelBorderViewPool[_53]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPMiniControlSize]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPSmallControlSize]=[]; +CPProgressIndicatorBezelBorderViewPool[_53][CPRegularControlSize]=[]; +} +_2=objj_msgSend(_50,"className"); +_3=[]; +_3[CPProgressIndicatorBarStyle]="Bar"; +_3[CPProgressIndicatorSpinningStyle]="Spinny"; +_3[CPProgressIndicatorHUDBarStyle]="HUDBar"; +var _54=_CPControlIdentifierForControlSize(CPRegularControlSize),_55=_CPControlIdentifierForControlSize(CPSmallControlSize),_56=_CPControlIdentifierForControlSize(CPMiniControlSize); +_4=[]; +var _57=[_2+"BezelBorder"+_3[CPProgressIndicatorBarStyle],_2+"Bar"+_3[CPProgressIndicatorBarStyle],_2+"BezelBorder"+_3[CPProgressIndicatorHUDBarStyle],_2+"Bar"+_3[CPProgressIndicatorHUDBarStyle]]; +for(var i=0,_58=_57.length;i<_58;i++){ +var _59=_57[i]; +_4[_59+_54]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +_4[_59+_55]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +_4[_59+_56]=[{width:3,height:16},{width:1,height:16},{width:3,height:16}]; +} +} +})]); +p;9;CPRadio.jt;5564;@STATIC;1.0;I;21;Foundation/CPObject.jI;18;Foundation/CPSet.ji;10;CPButton.jt;5481; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPSet.j",NO); +objj_executeFile("CPButton.j",YES); +CPRadioImageOffset=4; +var _1=objj_allocateClassPair(CPButton,"CPRadio"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_radioGroup")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:radioGroup:"),function(_3,_4,_5,_6){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPRadio").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setRadioGroup:",_6); +objj_msgSend(_3,"setHighlightsBy:",CPContentsCellMask); +objj_msgSend(_3,"setShowsStateBy:",CPContentsCellMask); +objj_msgSend(_3,"setImagePosition:",CPImageLeft); +objj_msgSend(_3,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_3,"setBordered:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(_7,"initWithFrame:radioGroup:",_9,objj_msgSend(CPRadioGroup,"new")); +} +}),new objj_method(sel_getUid("nextState"),function(_a,_b){ +with(_a){ +return CPOnState; +} +}),new objj_method(sel_getUid("setRadioGroup:"),function(_c,_d,_e){ +with(_c){ +if(_radioGroup===_e){ +return; +} +objj_msgSend(_radioGroup,"_removeRadio:",_c); +_radioGroup=_e; +objj_msgSend(_radioGroup,"_addRadio:",_c); +} +}),new objj_method(sel_getUid("radioGroup"),function(_f,_10){ +with(_f){ +return _radioGroup; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_11,_12,_13){ +with(_11){ +objj_msgSendSuper({receiver:_11,super_class:objj_getClass("CPRadio").super_class},"setObjectValue:",_13); +if(objj_msgSend(_11,"state")===CPOnState){ +objj_msgSend(_radioGroup,"_setSelectedRadio:",_11); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("radioWithTitle:theme:"),function(_14,_15,_16,_17){ +with(_14){ +return objj_msgSend(_14,"buttonWithTitle:theme:",_16,_17); +} +}),new objj_method(sel_getUid("radioWithTitle:"),function(_18,_19,_1a){ +with(_18){ +return objj_msgSend(_18,"buttonWithTitle:",_1a); +} +}),new objj_method(sel_getUid("standardButtonWithTitle:"),function(_1b,_1c,_1d){ +with(_1b){ +var _1e=objj_msgSend(objj_msgSend(CPRadio,"alloc"),"init"); +objj_msgSend(_1e,"setTitle:",_1d); +return _1e; +} +}),new objj_method(sel_getUid("themeClass"),function(_1f,_20){ +with(_1f){ +return "radio"; +} +})]); +var _21="CPRadioRadioGroupKey"; +var _1=objj_getClass("CPRadio"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPRadio\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("CPRadio").super_class},"initWithCoder:",_24); +if(_22){ +_radioGroup=objj_msgSend(_24,"decodeObjectForKey:",_21); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("CPRadio").super_class},"encodeWithCoder:",_27); +objj_msgSend(_27,"encodeObject:forKey:",_radioGroup,_21); +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPRadioGroup"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_radios"),new objj_ivar("_selectedRadio"),new objj_ivar("_target"),new objj_ivar("_action")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("target"),function(_28,_29){ +with(_28){ +return _target; +} +}),new objj_method(sel_getUid("setTarget:"),function(_2a,_2b,_2c){ +with(_2a){ +_target=_2c; +} +}),new objj_method(sel_getUid("action"),function(_2d,_2e){ +with(_2d){ +return _action; +} +}),new objj_method(sel_getUid("setAction:"),function(_2f,_30,_31){ +with(_2f){ +_action=_31; +} +}),new objj_method(sel_getUid("init"),function(_32,_33){ +with(_32){ +_32=objj_msgSendSuper({receiver:_32,super_class:objj_getClass("CPRadioGroup").super_class},"init"); +if(_32){ +_radios=objj_msgSend(CPSet,"set"); +_selectedRadio=nil; +} +return _32; +} +}),new objj_method(sel_getUid("_addRadio:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_radios,"addObject:",_36); +if(objj_msgSend(_36,"state")===CPOnState){ +objj_msgSend(_34,"_setSelectedRadio:",_36); +} +} +}),new objj_method(sel_getUid("_removeRadio:"),function(_37,_38,_39){ +with(_37){ +if(_selectedRadio===_39){ +_selectedRadio=nil; +} +objj_msgSend(_radios,"removeObject:",_39); +} +}),new objj_method(sel_getUid("_setSelectedRadio:"),function(_3a,_3b,_3c){ +with(_3a){ +if(_selectedRadio===_3c){ +return; +} +objj_msgSend(_selectedRadio,"setState:",CPOffState); +_selectedRadio=_3c; +objj_msgSend(CPApp,"sendAction:to:from:",_action,_target,_3a); +} +}),new objj_method(sel_getUid("selectedRadio"),function(_3d,_3e){ +with(_3d){ +return _selectedRadio; +} +}),new objj_method(sel_getUid("radios"),function(_3f,_40){ +with(_3f){ +return objj_msgSend(_radios,"allObjects"); +} +})]); +var _41="CPRadioGroupRadiosKey",_42="CPRadioGroupSelectedRadioKey"; +var _1=objj_getClass("CPRadioGroup"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPRadioGroup\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_43,_44,_45){ +with(_43){ +_43=objj_msgSendSuper({receiver:_43,super_class:objj_getClass("CPRadioGroup").super_class},"init"); +if(_43){ +_radios=objj_msgSend(_45,"decodeObjectForKey:",_41); +_selectedRadio=objj_msgSend(_45,"decodeObjectForKey:",_42); +} +return _43; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_46,_47,_48){ +with(_46){ +objj_msgSend(_48,"encodeObject:forKey:",_radios,_41); +objj_msgSend(_48,"encodeObject:forKey:",_selectedRadio,_42); +} +})]); +p;13;CPResponder.jt;5773;@STATIC;1.0;I;21;Foundation/CPObject.jt;5728; +objj_executeFile("Foundation/CPObject.j",NO); +CPDeleteKeyCode=8; +CPTabKeyCode=9; +CPReturnKeyCode=13; +CPEscapeKeyCode=27; +CPSpaceKeyCode=32; +CPPageUpKeyCode=33; +CPPageDownKeyCode=34; +CPLeftArrowKeyCode=37; +CPUpArrowKeyCode=38; +CPRightArrowKeyCode=39; +CPDownArrowKeyCode=40; +CPDeleteForwardKeyCode=46; +var _1=objj_allocateClassPair(CPObject,"CPResponder"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_menu"),new objj_ivar("_nextResponder")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("acceptsFirstResponder"),function(_3,_4){ +with(_3){ +return NO; +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(_5,_6){ +with(_5){ +return YES; +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_7,_8){ +with(_7){ +return YES; +} +}),new objj_method(sel_getUid("setNextResponder:"),function(_9,_a,_b){ +with(_9){ +_nextResponder=_b; +} +}),new objj_method(sel_getUid("nextResponder"),function(_c,_d){ +with(_c){ +return _nextResponder; +} +}),new objj_method(sel_getUid("interpretKeyEvents:"),function(_e,_f,_10){ +with(_e){ +var _11=0,_12=objj_msgSend(_10,"count"); +for(;_11<_12;++_11){ +var _13=_10[_11],_14=objj_msgSend(_13,"modifierFlags"),_15=objj_msgSend(_13,"charactersIgnoringModifiers"),_16=objj_msgSend(CPKeyBinding,"selectorsForKey:modifierFlags:",_15,_14); +if(_16){ +for(var s=0,_17=_16.length;s<_17;s++){ +var _18=_16[s]; +if(!_18){ +continue; +} +objj_msgSend(_e,"doCommandBySelector:",CPSelectorFromString(_18)); +} +}else{ +if(!(_14&(CPCommandKeyMask|CPControlKeyMask))&&objj_msgSend(_e,"respondsToSelector:",sel_getUid("insertText:"))){ +objj_msgSend(_e,"insertText:",objj_msgSend(_13,"characters")); +} +} +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_19,_1a,_1b){ +with(_19){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_1a,_1b); +} +}),new objj_method(sel_getUid("rightMouseDown:"),function(_1c,_1d,_1e){ +with(_1c){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_1d,_1e); +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_1f,_20,_21){ +with(_1f){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_20,_21); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_23,_24); +} +}),new objj_method(sel_getUid("rightMouseUp:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_26,_27); +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_28,_29,_2a){ +with(_28){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_29,_2a); +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_2c,_2d); +} +}),new objj_method(sel_getUid("mouseExited:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_2f,_30); +} +}),new objj_method(sel_getUid("scrollWheel:"),function(_31,_32,_33){ +with(_31){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_32,_33); +} +}),new objj_method(sel_getUid("keyDown:"),function(_34,_35,_36){ +with(_34){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_35,_36); +} +}),new objj_method(sel_getUid("keyUp:"),function(_37,_38,_39){ +with(_37){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_38,_39); +} +}),new objj_method(sel_getUid("flagsChanged:"),function(_3a,_3b,_3c){ +with(_3a){ +objj_msgSend(_nextResponder,"performSelector:withObject:",_3b,_3c); +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_3d,_3e,_3f){ +with(_3d){ +return NO; +} +}),new objj_method(sel_getUid("insertLineBreak:"),function(_40,_41,_42){ +with(_40){ +objj_msgSend(_40,"insertNewline:",_42); +} +}),new objj_method(sel_getUid("insertNewline:"),function(_43,_44,_45){ +with(_43){ +objj_msgSend(objj_msgSend(_43,"nextResponder"),"insertNewline:",_45); +} +}),new objj_method(sel_getUid("cancel:"),function(_46,_47,_48){ +with(_46){ +} +}),new objj_method(sel_getUid("insertTab:"),function(_49,_4a,_4b){ +with(_49){ +} +}),new objj_method(sel_getUid("insertBackTab:"),function(_4c,_4d,_4e){ +with(_4c){ +} +}),new objj_method(sel_getUid("insertText:"),function(_4f,_50,_51){ +with(_4f){ +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_52,_53,_54){ +with(_52){ +if(objj_msgSend(_52,"respondsToSelector:",_54)){ +objj_msgSend(_52,"performSelector:",_54); +}else{ +objj_msgSend(_nextResponder,"doCommandBySelector:",_54); +} +} +}),new objj_method(sel_getUid("tryToPerform:with:"),function(_55,_56,_57,_58){ +with(_55){ +if(objj_msgSend(_55,"respondsToSelector:",_57)){ +objj_msgSend(_55,"performSelector:withObject:",_57,_58); +return YES; +} +return objj_msgSend(_nextResponder,"tryToPerform:with:",_57,_58); +} +}),new objj_method(sel_getUid("setMenu:"),function(_59,_5a,_5b){ +with(_59){ +_menu=_5b; +} +}),new objj_method(sel_getUid("menu"),function(_5c,_5d){ +with(_5c){ +return _menu; +} +}),new objj_method(sel_getUid("undoManager"),function(_5e,_5f){ +with(_5e){ +return objj_msgSend(_nextResponder,"performSelector:",_5f); +} +}),new objj_method(sel_getUid("noResponderFor:"),function(_60,_61,_62){ +with(_60){ +} +})]); +var _63="CPResponderNextResponderKey"; +var _1=objj_getClass("CPResponder"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPResponder\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_64,_65,_66){ +with(_64){ +_64=objj_msgSendSuper({receiver:_64,super_class:objj_getClass("CPResponder").super_class},"init"); +if(_64){ +_nextResponder=objj_msgSend(_66,"decodeObjectForKey:",_63); +} +return _64; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_67,_68,_69){ +with(_67){ +if(_nextResponder!==nil){ +objj_msgSend(_69,"encodeConditionalObject:forKey:",_nextResponder,_63); +} +} +})]); +p;13;CPSavePanel.jt;2744;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2704; +objj_executeFile("AppKit/CPPanel.j",NO); +var _1=objj_allocateClassPair(CPPanel,"CPSavePanel"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_URL"),new objj_ivar("_isExtensionHidden"),new objj_ivar("_canSelectHiddenExtension"),new objj_ivar("_allowsOtherFileTypes"),new objj_ivar("_canCreateDirectories"),new objj_ivar("_allowedFileTypes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isExtensionHidden"),function(_3,_4){ +with(_3){ +return _isExtensionHidden; +} +}),new objj_method(sel_getUid("setExtensionHidden:"),function(_5,_6,_7){ +with(_5){ +_isExtensionHidden=_7; +} +}),new objj_method(sel_getUid("canSelectHiddenExtension"),function(_8,_9){ +with(_8){ +return _canSelectHiddenExtension; +} +}),new objj_method(sel_getUid("setCanSelectHiddenExtension:"),function(_a,_b,_c){ +with(_a){ +_canSelectHiddenExtension=_c; +} +}),new objj_method(sel_getUid("allowsOtherFileTypes"),function(_d,_e){ +with(_d){ +return _allowsOtherFileTypes; +} +}),new objj_method(sel_getUid("setAllowsOtherFileTypes:"),function(_f,_10,_11){ +with(_f){ +_allowsOtherFileTypes=_11; +} +}),new objj_method(sel_getUid("canCreateDirectories"),function(_12,_13){ +with(_12){ +return _canCreateDirectories; +} +}),new objj_method(sel_getUid("setCanCreateDirectories:"),function(_14,_15,_16){ +with(_14){ +_canCreateDirectories=_16; +} +}),new objj_method(sel_getUid("allowedFileTypes"),function(_17,_18){ +with(_17){ +return _allowedFileTypes; +} +}),new objj_method(sel_getUid("setAllowedFileTypes:"),function(_19,_1a,_1b){ +with(_19){ +_allowedFileTypes=_1b; +} +}),new objj_method(sel_getUid("init"),function(_1c,_1d){ +with(_1c){ +if(_1c=objj_msgSendSuper({receiver:_1c,super_class:objj_getClass("CPSavePanel").super_class},"init")){ +_canCreateDirectories=YES; +} +return _1c; +} +}),new objj_method(sel_getUid("runModal"),function(_1e,_1f){ +with(_1e){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +if(typeof window["cpSavePanel"]==="function"){ +var _20=window.cpSavePanel({isExtensionHidden:_isExtensionHidden,canSelectHiddenExtension:_canSelectHiddenExtension,allowsOtherFileTypes:_allowsOtherFileTypes,canCreateDirectories:_canCreateDirectories,allowedFileTypes:_allowedFileTypes}),_21=_20.button; +_URL=_21?objj_msgSend(CPURL,"URLWithString:",_20.URL):nil; +}else{ +var _22=window.prompt("Document Name:"),_21=_22!==null; +_URL=_21?objj_msgSend(objj_msgSend(_1e,"class"),"proposedFileURLWithDocumentName:",_22):nil; +} +return _21; +} +}),new objj_method(sel_getUid("URL"),function(_23,_24){ +with(_23){ +return _URL; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("savePanel"),function(_25,_26){ +with(_25){ +return objj_msgSend(objj_msgSend(CPSavePanel,"alloc"),"init"); +} +})]); +p;10;CPScreen.jt;331;@STATIC;1.0;I;21;Foundation/CPObject.jt;287; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPScreen"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("visibleFrame"),function(_3,_4){ +with(_3){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +})]); +p;12;CPScroller.jt;16772;@STATIC;1.0;i;11;CPControl.jt;16736; +objj_executeFile("CPControl.j",YES); +CPScrollerNoPart=0; +CPScrollerDecrementPage=1; +CPScrollerKnob=2; +CPScrollerIncrementPage=3; +CPScrollerDecrementLine=4; +CPScrollerIncrementLine=5; +CPScrollerKnobSlot=6; +CPScrollerIncrementArrow=0; +CPScrollerDecrementArrow=1; +CPNoScrollerParts=0; +CPOnlyScrollerArrows=1; +CPAllScrollerParts=2; +var _1=[CPScrollerKnobSlot,CPScrollerDecrementLine,CPScrollerIncrementLine,CPScrollerKnob],_2={},_3={}; +_2[CPScrollerDecrementLine]="decrement-line"; +_2[CPScrollerIncrementLine]="increment-line"; +_2[CPScrollerKnobSlot]="knob-slot"; +_2[CPScrollerKnob]="knob"; +var _4=objj_allocateClassPair(CPControl,"CPScroller"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_controlSize"),new objj_ivar("_usableParts"),new objj_ivar("_partRects"),new objj_ivar("_isVertical"),new objj_ivar("_knobProportion"),new objj_ivar("_hitPart"),new objj_ivar("_trackingPart"),new objj_ivar("_trackingFloatValue"),new objj_ivar("_trackingStartPoint")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("isVertical"),function(_6,_7){ +with(_6){ +return _isVertical; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPScroller").super_class},"initWithFrame:",_a); +if(_8){ +_controlSize=CPRegularControlSize; +_partRects=[]; +objj_msgSend(_8,"setFloatValue:",0); +objj_msgSend(_8,"setKnobProportion:",1); +_hitPart=CPScrollerNoPart; +objj_msgSend(_8,"_calculateIsVertical"); +} +return _8; +} +}),new objj_method(sel_getUid("setControlSize:"),function(_b,_c,_d){ +with(_b){ +if(_controlSize==_d){ +return; +} +_controlSize=_d; +objj_msgSend(_b,"setNeedsLayout"); +objj_msgSend(_b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("controlSize"),function(_e,_f){ +with(_e){ +return _controlSize; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_10,_11,_12){ +with(_10){ +objj_msgSendSuper({receiver:_10,super_class:objj_getClass("CPScroller").super_class},"setObjectValue:",MIN(1,MAX(0,+_12))); +} +}),new objj_method(sel_getUid("setKnobProportion:"),function(_13,_14,_15){ +with(_13){ +_knobProportion=MIN(1,MAX(0.0001,_15)); +objj_msgSend(_13,"setNeedsDisplay:",YES); +objj_msgSend(_13,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("knobProportion"),function(_16,_17){ +with(_16){ +return _knobProportion; +} +}),new objj_method(sel_getUid("currentValueForThemeAttribute:"),function(_18,_19,_1a){ +with(_18){ +var _1b=_themeState; +if(_2[_hitPart]+"-color"!==_1a){ +_1b&=~CPThemeStateHighlighted; +} +return objj_msgSend(_18,"valueForThemeAttribute:inState:",_1a,_1b); +} +}),new objj_method(sel_getUid("rectForPart:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_1e==CPScrollerNoPart){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +return _partRects[_1e]; +} +}),new objj_method(sel_getUid("testPart:"),function(_1f,_20,_21){ +with(_1f){ +_21=objj_msgSend(_1f,"convertPoint:fromView:",_21,nil); +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerKnob),_21)){ +return CPScrollerKnob; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerDecrementPage),_21)){ +return CPScrollerDecrementPage; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerIncrementPage),_21)){ +return CPScrollerIncrementPage; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerDecrementLine),_21)){ +return CPScrollerDecrementLine; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerIncrementLine),_21)){ +return CPScrollerIncrementLine; +} +if(CGRectContainsPoint(objj_msgSend(_1f,"rectForPart:",CPScrollerKnobSlot),_21)){ +return CPScrollerKnobSlot; +} +return CPScrollerNoPart; +} +}),new objj_method(sel_getUid("checkSpaceForParts"),function(_22,_23){ +with(_22){ +var _24=objj_msgSend(_22,"bounds"); +if(_knobProportion===1){ +_usableParts=CPNoScrollerParts; +_partRects[CPScrollerDecrementPage]=CGRectMakeZero(); +_partRects[CPScrollerKnob]=CGRectMakeZero(); +_partRects[CPScrollerIncrementPage]=CGRectMakeZero(); +_partRects[CPScrollerDecrementLine]=CGRectMakeZero(); +_partRects[CPScrollerIncrementLine]=CGRectMakeZero(); +_partRects[CPScrollerKnobSlot]=CGRectMakeCopy(_24); +return; +} +_usableParts=CPAllScrollerParts; +var _25=objj_msgSend(_22,"currentValueForThemeAttribute:","knob-inset"),_26=objj_msgSend(_22,"currentValueForThemeAttribute:","track-inset"),_27=(_24.size.width),_28=(_24.size.height); +if(objj_msgSend(_22,"isVertical")){ +var _29=objj_msgSend(_22,"currentValueForThemeAttribute:","decrement-line-size"),_2a=objj_msgSend(_22,"currentValueForThemeAttribute:","increment-line-size"),_2b=_29.height+_26.top,_2c=_2a.height+_26.bottom,_2d=_28-_2b-_2c,_2e=objj_msgSend(_22,"currentValueForThemeAttribute:","minimum-knob-length"),_2f=_27-_25.left-_25.right,_30=MAX(_2e,(_2d*_knobProportion)),_31=_2b+(_2d-_30)*objj_msgSend(_22,"floatValue"); +_partRects[CPScrollerDecrementPage]={origin:{x:0,y:_2b},size:{width:_27,height:_31-_2b}}; +_partRects[CPScrollerKnob]={origin:{x:_25.left,y:_31},size:{width:_2f,height:_30}}; +_partRects[CPScrollerIncrementPage]={origin:{x:0,y:_31+_30},size:{width:_27,height:_28-(_31+_30)-_2c}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_26.left,y:_2b},size:{width:_27-_26.left-_26.right,height:_2d}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:_29.width,height:_29.height}}; +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:_28-_2a.height},size:{width:_2a.width,height:_2a.height}}; +if(_28<_30+_29.height+_2a.height+_26.top+_26.bottom){ +_partRects[CPScrollerKnob]={origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_28<_29.height+_2a.height-2){ +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_26.left,y:0},size:{width:_27-_26.left-_26.right,height:_28}}; +} +}else{ +var _29=objj_msgSend(_22,"currentValueForThemeAttribute:","decrement-line-size"),_2a=objj_msgSend(_22,"currentValueForThemeAttribute:","increment-line-size"),_32=_29.width+_26.left,_33=_2a.width+_26.right; +slotWidth=_27-_32-_33,_2e=objj_msgSend(_22,"currentValueForThemeAttribute:","minimum-knob-length"),_2f=MAX(_2e,(slotWidth*_knobProportion)),_30=_28-_25.top-_25.bottom,_31=_32+(slotWidth-_2f)*objj_msgSend(_22,"floatValue"); +_partRects[CPScrollerDecrementPage]={origin:{x:_32,y:0},size:{width:_31-_32,height:_28}}; +_partRects[CPScrollerKnob]={origin:{x:_31,y:_25.top},size:{width:_2f,height:_30}}; +_partRects[CPScrollerIncrementPage]={origin:{x:_31+_2f,y:0},size:{width:_27-(_31+_2f)-_33,height:_28}}; +_partRects[CPScrollerKnobSlot]={origin:{x:_32,y:_26.top},size:{width:slotWidth,height:_28-_26.top-_26.bottom}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:_29.width,height:_29.height}}; +_partRects[CPScrollerIncrementLine]={origin:{x:_27-_2a.width,y:0},size:{width:_2a.width,height:_2a.height}}; +if(_27<_2f+_29.width+_2a.width+_26.left+_26.right){ +_partRects[CPScrollerKnob]={origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_27<_29.width+_2a.width-2){ +_partRects[CPScrollerIncrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerDecrementLine]={origin:{x:0,y:0},size:{width:0,height:0}}; +_partRects[CPScrollerKnobSlot]={origin:{x:0,y:0},size:{width:_27,height:_2d}}; +} +} +} +}),new objj_method(sel_getUid("usableParts"),function(_34,_35){ +with(_34){ +return _usableParts; +} +}),new objj_method(sel_getUid("drawArrow:highlight:"),function(_36,_37,_38,_39){ +with(_36){ +} +}),new objj_method(sel_getUid("drawKnob"),function(_3a,_3b){ +with(_3a){ +} +}),new objj_method(sel_getUid("drawKnobSlot"),function(_3c,_3d){ +with(_3c){ +} +}),new objj_method(sel_getUid("createViewForPart:"),function(_3e,_3f,_40){ +with(_3e){ +var _41=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_41,"setHitTests:",NO); +return _41; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_42,_43,_44){ +with(_42){ +return _partRects[_44]; +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_45,_46,_47){ +with(_45){ +var _48=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_48,"setHitTests:",NO); +return _48; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_49,_4a){ +with(_49){ +objj_msgSend(_49,"checkSpaceForParts"); +var _4b=0,_4c=_1.length; +for(;_4b<_4c;++_4b){ +var _4d=_1[_4b]; +if(_4b===0){ +view=objj_msgSend(_49,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:",_4d,CPWindowBelow,_1[_4b+1]); +}else{ +view=objj_msgSend(_49,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:",_4d,CPWindowAbove,_1[_4b-1]); +} +if(view){ +objj_msgSend(view,"setBackgroundColor:",objj_msgSend(_49,"currentValueForThemeAttribute:",_2[_4d]+"-color")); +} +} +} +}),new objj_method(sel_getUid("drawParts"),function(_4e,_4f){ +with(_4e){ +objj_msgSend(_4e,"drawKnobSlot"); +objj_msgSend(_4e,"drawKnob"); +objj_msgSend(_4e,"drawArrow:highlight:",CPScrollerDecrementArrow,NO); +objj_msgSend(_4e,"drawArrow:highlight:",CPScrollerIncrementArrow,NO); +} +}),new objj_method(sel_getUid("hitPart"),function(_50,_51){ +with(_50){ +return _hitPart; +} +}),new objj_method(sel_getUid("trackKnob:"),function(_52,_53,_54){ +with(_52){ +var _55=objj_msgSend(_54,"type"); +if(_55===CPLeftMouseUp){ +_hitPart=CPScrollerNoPart; +return; +} +if(_55===CPLeftMouseDown){ +_trackingFloatValue=objj_msgSend(_52,"floatValue"); +_trackingStartPoint=objj_msgSend(_52,"convertPoint:fromView:",objj_msgSend(_54,"locationInWindow"),nil); +}else{ +if(_55===CPLeftMouseDragged){ +var _56=objj_msgSend(_52,"rectForPart:",CPScrollerKnob),_57=objj_msgSend(_52,"rectForPart:",CPScrollerKnobSlot),_58=!objj_msgSend(_52,"isVertical")?((_57.size.width)-(_56.size.width)):((_57.size.height)-(_56.size.height)); +if(_58<=0){ +objj_msgSend(_52,"setFloatValue:",0); +}else{ +var _59=objj_msgSend(_52,"convertPoint:fromView:",objj_msgSend(_54,"locationInWindow"),nil),_5a=!objj_msgSend(_52,"isVertical")?_59.x-_trackingStartPoint.x:_59.y-_trackingStartPoint.y; +objj_msgSend(_52,"setFloatValue:",_trackingFloatValue+_5a/_58); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_52,sel_getUid("trackKnob:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +objj_msgSend(_52,"sendAction:to:",objj_msgSend(_52,"action"),objj_msgSend(_52,"target")); +} +}),new objj_method(sel_getUid("trackScrollButtons:"),function(_5b,_5c,_5d){ +with(_5b){ +var _5e=objj_msgSend(_5d,"type"); +if(_5e===CPLeftMouseUp){ +objj_msgSend(_5b,"highlight:",NO); +objj_msgSend(CPEvent,"stopPeriodicEvents"); +_hitPart=CPScrollerNoPart; +return; +} +if(_5e===CPLeftMouseDown){ +_trackingPart=objj_msgSend(_5b,"hitPart"); +_trackingStartPoint=objj_msgSend(_5b,"convertPoint:fromView:",objj_msgSend(_5d,"locationInWindow"),nil); +if(objj_msgSend(_5d,"modifierFlags")&CPAlternateKeyMask){ +if(_trackingPart==CPScrollerDecrementLine){ +_hitPart=CPScrollerDecrementPage; +}else{ +if(_trackingPart==CPScrollerIncrementLine){ +_hitPart=CPScrollerIncrementPage; +}else{ +if(_trackingPart==CPScrollerDecrementPage||_trackingPart==CPScrollerIncrementPage){ +var _5f=objj_msgSend(_5b,"rectForPart:",CPScrollerKnob),_60=!objj_msgSend(_5b,"isVertical")?(_5f.size.width):(_5f.size.height),_61=objj_msgSend(_5b,"rectForPart:",CPScrollerKnobSlot),_62=(!objj_msgSend(_5b,"isVertical")?(_61.size.width):(_61.size.height))-_60; +objj_msgSend(_5b,"setFloatValue:",((!objj_msgSend(_5b,"isVertical")?_trackingStartPoint.x-(_61.origin.x):_trackingStartPoint.y-(_61.origin.y))-_60/2)/_62); +_hitPart=CPScrollerKnob; +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +return objj_msgSend(_5b,"trackKnob:",_5d); +} +} +} +} +objj_msgSend(_5b,"highlight:",YES); +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +objj_msgSend(CPEvent,"startPeriodicEventsAfterDelay:withPeriod:",0.5,0.04); +}else{ +if(_5e===CPLeftMouseDragged){ +_trackingStartPoint=objj_msgSend(_5b,"convertPoint:fromView:",objj_msgSend(_5d,"locationInWindow"),nil); +if(_trackingPart==CPScrollerDecrementPage||_trackingPart==CPScrollerIncrementPage){ +var _63=objj_msgSend(_5b,"testPart:",objj_msgSend(_5d,"locationInWindow")); +if(_63==CPScrollerDecrementPage||_63==CPScrollerIncrementPage){ +_trackingPart=_63; +_hitPart=_63; +} +} +objj_msgSend(_5b,"highlight:",CGRectContainsPoint(objj_msgSend(_5b,"rectForPart:",_trackingPart),_trackingStartPoint)); +}else{ +if(_5e==CPPeriodic&&CGRectContainsPoint(objj_msgSend(_5b,"rectForPart:",_trackingPart),_trackingStartPoint)){ +objj_msgSend(_5b,"sendAction:to:",objj_msgSend(_5b,"action"),objj_msgSend(_5b,"target")); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_5b,sel_getUid("trackScrollButtons:"),CPPeriodicMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("_calculateIsVertical"),function(_64,_65){ +with(_64){ +var _66=objj_msgSend(_64,"bounds"),_67=(_66.size.width),_68=(_66.size.height); +_isVertical=_67<_68?1:(_67>_68?0:-1); +if(_isVertical===1){ +objj_msgSend(_64,"setThemeState:",CPThemeStateVertical); +}else{ +if(_isVertical===0){ +objj_msgSend(_64,"unsetThemeState:",CPThemeStateVertical); +} +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_69,_6a,_6b){ +with(_69){ +objj_msgSendSuper({receiver:_69,super_class:objj_getClass("CPScroller").super_class},"setFrameSize:",_6b); +objj_msgSend(_69,"checkSpaceForParts"); +objj_msgSend(_69,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_6c,_6d,_6e){ +with(_6c){ +if(!objj_msgSend(_6c,"isEnabled")){ +return; +} +_hitPart=objj_msgSend(_6c,"testPart:",objj_msgSend(_6e,"locationInWindow")); +switch(_hitPart){ +case CPScrollerKnob: +return objj_msgSend(_6c,"trackKnob:",_6e); +case CPScrollerDecrementLine: +case CPScrollerIncrementLine: +case CPScrollerDecrementPage: +case CPScrollerIncrementPage: +return objj_msgSend(_6c,"trackScrollButtons:",_6e); +} +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("themeClass"),function(_6f,_70){ +with(_6f){ +return "scroller"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_71,_72){ +with(_71){ +return objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{"scroller-width":15,"knob-slot-color":objj_msgSend(CPColor,"lightGrayColor"),"decrement-line-color":objj_msgSend(CPNull,"null"),"increment-line-color":objj_msgSend(CPNull,"null"),"knob-color":objj_msgSend(CPColor,"grayColor"),"decrement-line-size":{width:0,height:0},"increment-line-size":{width:0,height:0},"track-inset":{top:(0),right:(0),bottom:(0),left:(0)},"knob-inset":{top:(0),right:(0),bottom:(0),left:(0)},"minimum-knob-length":21}); +} +}),new objj_method(sel_getUid("scrollerWidth"),function(_73,_74){ +with(_73){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPScroller,"alloc"),"init"),"currentValueForThemeAttribute:","scroller-width"); +} +}),new objj_method(sel_getUid("scrollerWidthForControlSize:"),function(_75,_76,_77){ +with(_75){ +return objj_msgSend(_75,"scrollerWidth"); +} +})]); +var _78="CPScrollerControlSize",_79="CPScrollerKnobProportion"; +var _4=objj_getClass("CPScroller"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_7a,_7b,_7c){ +with(_7a){ +if(_7a=objj_msgSendSuper({receiver:_7a,super_class:objj_getClass("CPScroller").super_class},"initWithCoder:",_7c)){ +_controlSize=CPRegularControlSize; +if(objj_msgSend(_7c,"containsValueForKey:",_78)){ +_controlSize=objj_msgSend(_7c,"decodeIntForKey:",_78); +} +_knobProportion=1; +if(objj_msgSend(_7c,"containsValueForKey:",_79)){ +_knobProportion=objj_msgSend(_7c,"decodeFloatForKey:",_79); +} +_partRects=[]; +_hitPart=CPScrollerNoPart; +objj_msgSend(_7a,"_calculateIsVertical"); +var _7d=objj_msgSend(_7a,"frame"),_7e=objj_msgSend(CPScroller,"scrollerWidth"); +if(objj_msgSend(_7a,"isVertical")&&CGRectGetWidth(_7d)!==_7e){ +_7d.size.width=_7e; +} +if(!objj_msgSend(_7a,"isVertical")&&CGRectGetHeight(_7d)!==_7e){ +_7d.size.height=_7e; +} +objj_msgSend(_7a,"setFrame:",_7d); +} +return _7a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSendSuper({receiver:_7f,super_class:objj_getClass("CPScroller").super_class},"encodeWithCoder:",_81); +objj_msgSend(_81,"encodeInt:forKey:",_controlSize,_78); +objj_msgSend(_81,"encodeFloat:forKey:",_knobProportion,_79); +} +})]); +var _4=objj_getClass("CPScroller"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("setFloatValue:knobProportion:"),function(_82,_83,_84,_85){ +with(_82){ +objj_msgSend(_82,"setFloatValue:",_84); +objj_msgSend(_82,"setKnobProportion:",_85); +} +})]); +p;14;CPScrollView.jt;26736;@STATIC;1.0;i;8;CPView.ji;12;CPClipView.ji;12;CPScroller.jt;26670; +objj_executeFile("CPView.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPScroller.j",YES); +var _1=objj_allocateClassPair(CPView,"CPScrollView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentView"),new objj_ivar("_headerClipView"),new objj_ivar("_cornerView"),new objj_ivar("_bottomCornerView"),new objj_ivar("_hasVerticalScroller"),new objj_ivar("_hasHorizontalScroller"),new objj_ivar("_autohidesScrollers"),new objj_ivar("_verticalScroller"),new objj_ivar("_horizontalScroller"),new objj_ivar("_recursionCount"),new objj_ivar("_verticalLineScroll"),new objj_ivar("_verticalPageScroll"),new objj_ivar("_horizontalLineScroll"),new objj_ivar("_horizontalPageScroll"),new objj_ivar("_borderType")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPScrollView").super_class},"initWithFrame:",_5); +if(_3){ +_verticalLineScroll=10; +_verticalPageScroll=10; +_horizontalLineScroll=10; +_horizontalPageScroll=10; +_borderType=CPNoBorder; +_contentView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"initWithFrame:",objj_msgSend(_3,"_insetBounds")); +objj_msgSend(_3,"addSubview:",_contentView); +_headerClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"init"); +objj_msgSend(_3,"addSubview:",_headerClipView); +_bottomCornerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_3,"addSubview:",_bottomCornerView); +objj_msgSend(_3,"setHasVerticalScroller:",YES); +objj_msgSend(_3,"setHasHorizontalScroller:",YES); +} +return _3; +} +}),new objj_method(sel_getUid("_insetBounds"),function(_6,_7){ +with(_6){ +return objj_msgSend(objj_msgSend(_6,"class"),"_insetBounds:borderType:",objj_msgSend(_6,"bounds"),_borderType); +} +}),new objj_method(sel_getUid("contentSize"),function(_8,_9){ +with(_8){ +return objj_msgSend(_contentView,"frame").size; +} +}),new objj_method(sel_getUid("documentView"),function(_a,_b){ +with(_a){ +return objj_msgSend(_contentView,"documentView"); +} +}),new objj_method(sel_getUid("setContentView:"),function(_c,_d,_e){ +with(_c){ +if(_contentView!==_e||!_e){ +return; +} +var _f=objj_msgSend(_e,"documentView"); +if(_f){ +objj_msgSend(_f,"removeFromSuperview"); +} +objj_msgSend(_contentView,"removeFromSuperview"); +_contentView=_e; +objj_msgSend(_contentView,"setDocumentView:",_f); +objj_msgSend(_c,"addSubview:",_contentView); +objj_msgSend(_c,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("contentView"),function(_10,_11){ +with(_10){ +return _contentView; +} +}),new objj_method(sel_getUid("setDocumentView:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_contentView,"setDocumentView:",_14); +objj_msgSend(_12,"_updateCornerAndHeaderView"); +objj_msgSend(_12,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(_15,_16,_17){ +with(_15){ +if(_contentView!==_17){ +return; +} +if(_recursionCount>5){ +return; +} +++_recursionCount; +var _18=objj_msgSend(_15,"documentView"); +if(!_18){ +if(_autohidesScrollers){ +objj_msgSend(_verticalScroller,"setHidden:",YES); +objj_msgSend(_horizontalScroller,"setHidden:",YES); +}else{ +} +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_15,"_insetBounds")); +objj_msgSend(_headerClipView,"setFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +--_recursionCount; +return; +} +var _19=objj_msgSend(_18,"frame"),_1a=objj_msgSend(_15,"_insetBounds"),_1b=objj_msgSend(_15,"_headerClipViewFrame"),_1c=(_1b.size.height); +_1a.origin.y+=_1c; +_1a.size.height-=_1c; +var _1d={width:(_19.size.width)-(_1a.size.width),height:(_19.size.height)-(_1a.size.height)},_1e=(objj_msgSend(_verticalScroller,"frame").size.width),_1f=(objj_msgSend(_horizontalScroller,"frame").size.height),_20=_1d.height>0,_21=_1d.width>0,_22=_hasVerticalScroller&&(!_autohidesScrollers||_20),_23=_hasHorizontalScroller&&(!_autohidesScrollers||_21); +if(_22){ +_1d.width+=_1e; +_21=_1d.width>0; +_23=_hasHorizontalScroller&&(!_autohidesScrollers||_21); +} +if(_23){ +_1d.height+=_1f; +_20=_1d.height>0; +_22=_hasVerticalScroller&&(!_autohidesScrollers||_20); +} +objj_msgSend(_verticalScroller,"setHidden:",!_22); +objj_msgSend(_verticalScroller,"setEnabled:",_20); +objj_msgSend(_horizontalScroller,"setHidden:",!_23); +objj_msgSend(_horizontalScroller,"setEnabled:",_21); +if(_22){ +_1a.size.width-=_1e; +} +if(_23){ +_1a.size.height-=_1f; +} +var _24=objj_msgSend(_contentView,"bounds").origin,_25=!objj_msgSend(_verticalScroller,"isHidden"),_26=!objj_msgSend(_horizontalScroller,"isHidden"); +if(_22){ +var _27=MAX((_1a.origin.y),MAX((objj_msgSend(_15,"_cornerViewFrame").origin.y+objj_msgSend(_15,"_cornerViewFrame").size.height),(_1b.origin.y+_1b.size.height))); +var _28=(_1a.origin.y+_1a.size.height)-_27; +objj_msgSend(_verticalScroller,"setFloatValue:",(_1d.height<=0)?0:_24.y/_1d.height); +objj_msgSend(_verticalScroller,"setKnobProportion:",(_1a.size.height)/(_19.size.height)); +objj_msgSend(_verticalScroller,"setFrame:",{origin:{x:(_1a.origin.x+_1a.size.width),y:_27},size:{width:_1e,height:_28}}); +}else{ +if(_25){ +objj_msgSend(_verticalScroller,"setFloatValue:",0); +objj_msgSend(_verticalScroller,"setKnobProportion:",1); +} +} +if(_23){ +objj_msgSend(_horizontalScroller,"setFloatValue:",(_1d.width<=0)?0:_24.x/_1d.width); +objj_msgSend(_horizontalScroller,"setKnobProportion:",(_1a.size.width)/(_19.size.width)); +objj_msgSend(_horizontalScroller,"setFrame:",{origin:{x:(_1a.origin.x),y:(_1a.origin.y+_1a.size.height)},size:{width:(_1a.size.width),height:_1f}}); +}else{ +if(_26){ +objj_msgSend(_horizontalScroller,"setFloatValue:",0); +objj_msgSend(_horizontalScroller,"setKnobProportion:",1); +} +} +objj_msgSend(_contentView,"setFrame:",_1a); +objj_msgSend(_headerClipView,"setFrame:",_1b); +objj_msgSend(_cornerView,"setFrame:",objj_msgSend(_15,"_cornerViewFrame")); +objj_msgSend(objj_msgSend(_15,"bottomCornerView"),"setFrame:",objj_msgSend(_15,"_bottomCornerViewFrame")); +objj_msgSend(objj_msgSend(_15,"bottomCornerView"),"setBackgroundColor:",objj_msgSend(_15,"currentValueForThemeAttribute:","bottom-corner-color")); +--_recursionCount; +} +}),new objj_method(sel_getUid("setBorderType:"),function(_29,_2a,_2b){ +with(_29){ +if(_borderType==_2b){ +return; +} +_borderType=_2b; +objj_msgSend(_29,"reflectScrolledClipView:",_contentView); +objj_msgSend(_29,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("borderType"),function(_2c,_2d){ +with(_2c){ +return _borderType; +} +}),new objj_method(sel_getUid("setHorizontalScroller:"),function(_2e,_2f,_30){ +with(_2e){ +if(_horizontalScroller===_30){ +return; +} +objj_msgSend(_horizontalScroller,"removeFromSuperview"); +objj_msgSend(_horizontalScroller,"setTarget:",nil); +objj_msgSend(_horizontalScroller,"setAction:",nil); +_horizontalScroller=_30; +objj_msgSend(_horizontalScroller,"setTarget:",_2e); +objj_msgSend(_horizontalScroller,"setAction:",sel_getUid("_horizontalScrollerDidScroll:")); +objj_msgSend(_2e,"addSubview:",_horizontalScroller); +objj_msgSend(_2e,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("horizontalScroller"),function(_31,_32){ +with(_31){ +return _horizontalScroller; +} +}),new objj_method(sel_getUid("setHasHorizontalScroller:"),function(_33,_34,_35){ +with(_33){ +if(_hasHorizontalScroller===_35){ +return; +} +_hasHorizontalScroller=_35; +if(_hasHorizontalScroller&&!_horizontalScroller){ +var _36=objj_msgSend(_33,"_insetBounds"); +objj_msgSend(_33,"setHorizontalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",CGRectMake(0,0,MAX((_36.size.width),objj_msgSend(CPScroller,"scrollerWidth")+1),objj_msgSend(CPScroller,"scrollerWidth")))); +objj_msgSend(objj_msgSend(_33,"horizontalScroller"),"setFrameSize:",CGSizeMake((_36.size.width),objj_msgSend(CPScroller,"scrollerWidth"))); +} +objj_msgSend(_33,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("hasHorizontalScroller"),function(_37,_38){ +with(_37){ +return _hasHorizontalScroller; +} +}),new objj_method(sel_getUid("setVerticalScroller:"),function(_39,_3a,_3b){ +with(_39){ +if(_verticalScroller===_3b){ +return; +} +objj_msgSend(_verticalScroller,"removeFromSuperview"); +objj_msgSend(_verticalScroller,"setTarget:",nil); +objj_msgSend(_verticalScroller,"setAction:",nil); +_verticalScroller=_3b; +objj_msgSend(_verticalScroller,"setTarget:",_39); +objj_msgSend(_verticalScroller,"setAction:",sel_getUid("_verticalScrollerDidScroll:")); +objj_msgSend(_39,"addSubview:",_verticalScroller); +objj_msgSend(_39,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("verticalScroller"),function(_3c,_3d){ +with(_3c){ +return _verticalScroller; +} +}),new objj_method(sel_getUid("setHasVerticalScroller:"),function(_3e,_3f,_40){ +with(_3e){ +if(_hasVerticalScroller===_40){ +return; +} +_hasVerticalScroller=_40; +if(_hasVerticalScroller&&!_verticalScroller){ +var _41=objj_msgSend(_3e,"_insetBounds"); +objj_msgSend(_3e,"setVerticalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:objj_msgSend(CPScroller,"scrollerWidth"),height:MAX((_41.size.height),objj_msgSend(CPScroller,"scrollerWidth")+1)}})); +objj_msgSend(objj_msgSend(_3e,"verticalScroller"),"setFrameSize:",CGSizeMake(objj_msgSend(CPScroller,"scrollerWidth"),(_41.size.height))); +} +objj_msgSend(_3e,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("hasVerticalScroller"),function(_42,_43){ +with(_42){ +return _hasVerticalScroller; +} +}),new objj_method(sel_getUid("setAutohidesScrollers:"),function(_44,_45,_46){ +with(_44){ +if(_autohidesScrollers==_46){ +return; +} +_autohidesScrollers=_46; +objj_msgSend(_44,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("autohidesScrollers"),function(_47,_48){ +with(_47){ +return _autohidesScrollers; +} +}),new objj_method(sel_getUid("_updateCornerAndHeaderView"),function(_49,_4a){ +with(_49){ +var _4b=objj_msgSend(_49,"documentView"),_4c=objj_msgSend(_49,"_headerView"),_4d=objj_msgSend(_4b,"respondsToSelector:",sel_getUid("headerView"))?objj_msgSend(_4b,"headerView"):nil; +if(_4c!==_4d){ +objj_msgSend(_4c,"removeFromSuperview"); +objj_msgSend(_headerClipView,"setDocumentView:",_4d); +} +var _4e=objj_msgSend(_4b,"respondsToSelector:",sel_getUid("cornerView"))?objj_msgSend(_4b,"cornerView"):nil; +if(_cornerView!==_4e){ +objj_msgSend(_cornerView,"removeFromSuperview"); +_cornerView=_4e; +if(_cornerView){ +objj_msgSend(_49,"addSubview:",_cornerView); +} +} +objj_msgSend(_49,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("_headerView"),function(_4f,_50){ +with(_4f){ +return objj_msgSend(_headerClipView,"documentView"); +} +}),new objj_method(sel_getUid("_cornerViewFrame"),function(_51,_52){ +with(_51){ +if(!_cornerView){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _53=objj_msgSend(_51,"_insetBounds"),_54=objj_msgSend(_cornerView,"frame"); +_54.origin.x=(_53.origin.x+_53.size.width)-(_54.size.width); +_54.origin.y=(_53.origin.y); +return _54; +} +}),new objj_method(sel_getUid("_headerClipViewFrame"),function(_55,_56){ +with(_55){ +var _57=objj_msgSend(_55,"_headerView"); +if(!_57){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _58=objj_msgSend(_55,"_insetBounds"); +_58.size.height=(objj_msgSend(_57,"frame").size.height); +_58.size.width-=(objj_msgSend(_55,"_cornerViewFrame").size.width); +return _58; +} +}),new objj_method(sel_getUid("_bottomCornerViewFrame"),function(_59,_5a){ +with(_59){ +if(objj_msgSend(objj_msgSend(_59,"horizontalScroller"),"isHidden")||objj_msgSend(objj_msgSend(_59,"verticalScroller"),"isHidden")){ +return CGRectMakeZero(); +} +var _5b=objj_msgSend(objj_msgSend(_59,"verticalScroller"),"frame"),_5c=CGRectMakeZero(); +_5c.origin.x=CGRectGetMinX(_5b); +_5c.origin.y=CGRectGetMaxY(_5b); +_5c.size.width=objj_msgSend(CPScroller,"scrollerWidth"); +_5c.size.height=objj_msgSend(CPScroller,"scrollerWidth"); +return _5c; +} +}),new objj_method(sel_getUid("setBottomCornerView:"),function(_5d,_5e,_5f){ +with(_5d){ +if(_bottomCornerView===_5f){ +return; +} +objj_msgSend(_bottomCornerView,"removeFromSuperview"); +objj_msgSend(_5f,"setFrame:",objj_msgSend(_5d,"_bottomCornerViewFrame")); +objj_msgSend(_5d,"addSubview:",_5f); +_bottomCornerView=_5f; +objj_msgSend(_5d,"_updateCornerAndHeaderView"); +} +}),new objj_method(sel_getUid("bottomCornerView"),function(_60,_61){ +with(_60){ +return _bottomCornerView; +} +}),new objj_method(sel_getUid("_verticalScrollerDidScroll:"),function(_62,_63,_64){ +with(_62){ +var _65=objj_msgSend(_64,"floatValue"),_66=objj_msgSend(objj_msgSend(_contentView,"documentView"),"frame"),_67=objj_msgSend(_contentView,"bounds"); +switch(objj_msgSend(_verticalScroller,"hitPart")){ +case CPScrollerDecrementLine: +_67.origin.y-=_verticalLineScroll; +break; +case CPScrollerIncrementLine: +_67.origin.y+=_verticalLineScroll; +break; +case CPScrollerDecrementPage: +_67.origin.y-=(_67.size.height)-_verticalPageScroll; +break; +case CPScrollerIncrementPage: +_67.origin.y+=(_67.size.height)-_verticalPageScroll; +break; +case CPScrollerKnobSlot: +case CPScrollerKnob: +default: +_67.origin.y=ROUND(_65*((_66.size.height)-(_67.size.height))); +} +objj_msgSend(_contentView,"scrollToPoint:",_67.origin); +} +}),new objj_method(sel_getUid("_horizontalScrollerDidScroll:"),function(_68,_69,_6a){ +with(_68){ +var _6b=objj_msgSend(_6a,"floatValue"),_6c=objj_msgSend(objj_msgSend(_68,"documentView"),"frame"),_6d=objj_msgSend(_contentView,"bounds"); +switch(objj_msgSend(_horizontalScroller,"hitPart")){ +case CPScrollerDecrementLine: +_6d.origin.x-=_horizontalLineScroll; +break; +case CPScrollerIncrementLine: +_6d.origin.x+=_horizontalLineScroll; +break; +case CPScrollerDecrementPage: +_6d.origin.x-=(_6d.size.width)-_horizontalPageScroll; +break; +case CPScrollerIncrementPage: +_6d.origin.x+=(_6d.size.width)-_horizontalPageScroll; +break; +case CPScrollerKnobSlot: +case CPScrollerKnob: +default: +_6d.origin.x=ROUND(_6b*((_6c.size.width)-(_6d.size.width))); +} +objj_msgSend(_contentView,"scrollToPoint:",_6d.origin); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_6d.origin.x,0)); +} +}),new objj_method(sel_getUid("tile"),function(_6e,_6f){ +with(_6e){ +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_70,_71,_72){ +with(_70){ +objj_msgSend(_70,"reflectScrolledClipView:",_contentView); +} +}),new objj_method(sel_getUid("setLineScroll:"),function(_73,_74,_75){ +with(_73){ +objj_msgSend(_73,"setHorizonalLineScroll:",_75); +objj_msgSend(_73,"setVerticalLineScroll:",_75); +} +}),new objj_method(sel_getUid("lineScroll"),function(_76,_77){ +with(_76){ +return objj_msgSend(_76,"horizontalLineScroll"); +} +}),new objj_method(sel_getUid("setHorizontalLineScroll:"),function(_78,_79,_7a){ +with(_78){ +_horizontalLineScroll=_7a; +} +}),new objj_method(sel_getUid("horizontalLineScroll"),function(_7b,_7c){ +with(_7b){ +return _horizontalLineScroll; +} +}),new objj_method(sel_getUid("setVerticalLineScroll:"),function(_7d,_7e,_7f){ +with(_7d){ +_verticalLineScroll=_7f; +} +}),new objj_method(sel_getUid("verticalLineScroll"),function(_80,_81){ +with(_80){ +return _verticalLineScroll; +} +}),new objj_method(sel_getUid("setPageScroll:"),function(_82,_83,_84){ +with(_82){ +objj_msgSend(_82,"setHorizontalPageScroll:",_84); +objj_msgSend(_82,"setVerticalPageScroll:",_84); +} +}),new objj_method(sel_getUid("pageScroll"),function(_85,_86){ +with(_85){ +return objj_msgSend(_85,"horizontalPageScroll"); +} +}),new objj_method(sel_getUid("setHorizontalPageScroll:"),function(_87,_88,_89){ +with(_87){ +_horizontalPageScroll=_89; +} +}),new objj_method(sel_getUid("horizontalPageScroll"),function(_8a,_8b){ +with(_8a){ +return _horizontalPageScroll; +} +}),new objj_method(sel_getUid("setVerticalPageScroll:"),function(_8c,_8d,_8e){ +with(_8c){ +_verticalPageScroll=_8e; +} +}),new objj_method(sel_getUid("verticalPageScroll"),function(_8f,_90){ +with(_8f){ +return _verticalPageScroll; +} +}),new objj_method(sel_getUid("drawRect:"),function(_91,_92,_93){ +with(_91){ +objj_msgSendSuper({receiver:_91,super_class:objj_getClass("CPScrollView").super_class},"drawRect:",_93); +if(_borderType==CPNoBorder){ +return; +} +var _94=objj_msgSend(_91,"bounds"),_95=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetLineWidth(_95,1); +switch(_borderType){ +case CPLineBorder: +CGContextSetStrokeColor(_95,objj_msgSend(_91,"currentValueForThemeAttribute:","border-color")); +CGContextStrokeRect(_95,{origin:{x:_94.origin.x+0.5,y:_94.origin.y+0.5},size:{width:_94.size.width-2*0.5,height:_94.size.height-2*0.5}}); +break; +case CPBezelBorder: +objj_msgSend(_91,"_drawGrayBezelInContext:bounds:",_95,_94); +break; +case CPGrooveBorder: +objj_msgSend(_91,"_drawGrooveInContext:bounds:",_95,_94); +break; +default: +break; +} +} +}),new objj_method(sel_getUid("_drawGrayBezelInContext:bounds:"),function(_96,_97,_98,_99){ +with(_96){ +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",142/255,1)); +var y=(_99.origin.y)+0.5; +CGContextMoveToPoint(_98,(_99.origin.x),y); +CGContextAddLineToPoint(_98,(_99.origin.x)+1,y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",192/255,1)); +CGContextMoveToPoint(_98,(_99.origin.x)+1,y); +CGContextAddLineToPoint(_98,(_99.origin.x+_99.size.width)-1,y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",142/255,1)); +CGContextMoveToPoint(_98,(_99.origin.x+_99.size.width)-1,y); +CGContextAddLineToPoint(_98,(_99.origin.x+_99.size.width),y); +CGContextStrokePath(_98); +CGContextBeginPath(_98); +CGContextSetStrokeColor(_98,objj_msgSend(CPColor,"colorWithWhite:alpha:",190/255,1)); +var x=(_99.origin.x+_99.size.width)-0.5; +CGContextMoveToPoint(_98,x,(_99.origin.y)+1); +CGContextAddLineToPoint(_98,x,(_99.origin.y+_99.size.height)); +CGContextMoveToPoint(_98,x-0.5,(_99.origin.y+_99.size.height)-0.5); +CGContextAddLineToPoint(_98,(_99.origin.x),(_99.origin.y+_99.size.height)-0.5); +x=(_99.origin.x)+0.5; +CGContextMoveToPoint(_98,x,(_99.origin.y+_99.size.height)); +CGContextAddLineToPoint(_98,x,(_99.origin.y)+1); +CGContextStrokePath(_98); +} +}),new objj_method(sel_getUid("_drawGrooveInContext:bounds:"),function(_9a,_9b,_9c,_9d){ +with(_9a){ +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"colorWithWhite:alpha:",159/255,1)); +var y=(_9d.origin.y)+0.5; +CGContextMoveToPoint(_9c,(_9d.origin.x),y); +CGContextAddLineToPoint(_9c,(_9d.origin.x+_9d.size.width),y); +var x=(_9d.origin.x+_9d.size.width)-1.5; +CGContextMoveToPoint(_9c,x,(_9d.origin.y)+2); +CGContextAddLineToPoint(_9c,x,(_9d.origin.y+_9d.size.height)-1); +y=(_9d.origin.y+_9d.size.height)-1.5; +CGContextMoveToPoint(_9c,(_9d.origin.x+_9d.size.width)-1,y); +CGContextAddLineToPoint(_9c,(_9d.origin.x)+2,y); +x=(_9d.origin.x)+0.5; +CGContextMoveToPoint(_9c,x,(_9d.origin.y+_9d.size.height)); +CGContextAddLineToPoint(_9c,x,(_9d.origin.y)); +CGContextStrokePath(_9c); +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"whiteColor")); +var _9e={origin:{x:_9d.origin.x+1,y:_9d.origin.y+1},size:{width:_9d.size.width,height:_9d.size.height}}; +_9e.size.width-=1; +_9e.size.height-=1; +CGContextStrokeRect(_9c,{origin:{x:_9e.origin.x+0.5,y:_9e.origin.y+0.5},size:{width:_9e.size.width-2*0.5,height:_9e.size.height-2*0.5}}); +CGContextBeginPath(_9c); +CGContextSetStrokeColor(_9c,objj_msgSend(CPColor,"colorWithWhite:alpha:",192/255,1)); +y=(_9d.origin.y)+2.5; +CGContextMoveToPoint(_9c,(_9d.origin.x)+2,y); +CGContextAddLineToPoint(_9c,(_9d.origin.x+_9d.size.width)-2,y); +CGContextStrokePath(_9c); +} +}),new objj_method(sel_getUid("scrollWheel:"),function(_9f,_a0,_a1){ +with(_9f){ +objj_msgSend(_9f,"_respondToScrollWheelEventWithDeltaX:deltaY:",objj_msgSend(_a1,"deltaX"),objj_msgSend(_a1,"deltaY")); +} +}),new objj_method(sel_getUid("_respondToScrollWheelEventWithDeltaX:deltaY:"),function(_a2,_a3,_a4,_a5){ +with(_a2){ +var _a6=objj_msgSend(objj_msgSend(_a2,"documentView"),"frame"),_a7=objj_msgSend(_contentView,"bounds"),_a8=objj_msgSend(_contentView,"frame"),_a9=objj_msgSend(_a2,"enclosingScrollView"); +_a7.origin.x=ROUND(_a7.origin.x+_a4); +_a7.origin.y=ROUND(_a7.origin.y+_a5); +var _aa=objj_msgSend(_contentView,"constrainScrollPoint:",CGPointCreateCopy(_a7.origin)),_ab=_a7.origin.x-_aa.x,_ac=_a7.origin.y-_aa.y; +objj_msgSend(_contentView,"scrollToPoint:",_aa); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_aa.x,0)); +if(_ab||_ac){ +objj_msgSend(_a9,"_respondToScrollWheelEventWithDeltaX:deltaY:",_ab,_ac); +} +} +}),new objj_method(sel_getUid("keyDown:"),function(_ad,_ae,_af){ +with(_ad){ +objj_msgSend(_ad,"interpretKeyEvents:",[_af]); +} +}),new objj_method(sel_getUid("pageUp:"),function(_b0,_b1,_b2){ +with(_b0){ +var _b3=objj_msgSend(_contentView,"bounds"); +objj_msgSend(_b0,"moveByOffset:",CGSizeMake(0,-((_b3.size.height)-_verticalPageScroll))); +} +}),new objj_method(sel_getUid("pageDown:"),function(_b4,_b5,_b6){ +with(_b4){ +var _b7=objj_msgSend(_contentView,"bounds"); +objj_msgSend(_b4,"moveByOffset:",CGSizeMake(0,(_b7.size.height)-_verticalPageScroll)); +} +}),new objj_method(sel_getUid("moveLeft:"),function(_b8,_b9,_ba){ +with(_b8){ +objj_msgSend(_b8,"moveByOffset:",CGSizeMake(-_horizontalLineScroll,0)); +} +}),new objj_method(sel_getUid("moveRight:"),function(_bb,_bc,_bd){ +with(_bb){ +objj_msgSend(_bb,"moveByOffset:",CGSizeMake(_horizontalLineScroll,0)); +} +}),new objj_method(sel_getUid("moveUp:"),function(_be,_bf,_c0){ +with(_be){ +objj_msgSend(_be,"moveByOffset:",CGSizeMake(0,-_verticalLineScroll)); +} +}),new objj_method(sel_getUid("moveDown:"),function(_c1,_c2,_c3){ +with(_c1){ +objj_msgSend(_c1,"moveByOffset:",CGSizeMake(0,_verticalLineScroll)); +} +}),new objj_method(sel_getUid("moveByOffset:"),function(_c4,_c5,_c6){ +with(_c4){ +var _c7=objj_msgSend(objj_msgSend(_c4,"documentView"),"frame"),_c8=objj_msgSend(_contentView,"bounds"); +_c8.origin.x+=_c6.width; +_c8.origin.y+=_c6.height; +objj_msgSend(_contentView,"scrollToPoint:",_c8.origin); +objj_msgSend(_headerClipView,"scrollToPoint:",CGPointMake(_c8.origin,0)); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_c9,_ca){ +with(_c9){ +return "scrollview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_cb,_cc){ +with(_cb){ +return objj_msgSend(CPDictionary,"dictionaryWithJSObject:",{"bottom-corner-color":objj_msgSend(CPColor,"whiteColor"),"border-color":objj_msgSend(CPColor,"blackColor")}); +} +}),new objj_method(sel_getUid("contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:"),function(_cd,_ce,_cf,_d0,_d1,_d2){ +with(_cd){ +var _d3=objj_msgSend(_cd,"_insetBounds:borderType:",{origin:{x:0,y:0},size:{width:_cf.width,height:_cf.height}},_d2),_d4=objj_msgSend(CPScroller,"scrollerWidth"); +if(_d0){ +_d3.size.height-=_d4; +} +if(_d1){ +_d3.size.width-=_d4; +} +return _d3.size; +} +}),new objj_method(sel_getUid("frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:"),function(_d5,_d6,_d7,_d8,_d9,_da){ +with(_d5){ +var _db=objj_msgSend(_d5,"_insetBounds:borderType:",{origin:{x:0,y:0},size:{width:_d7.width,height:_d7.height}},_da),_dc=_d7.width-_db.size.width,_dd=_d7.height-_db.size.height,_de={width:_d7.width+_dc,height:_d7.height+_dd},_df=objj_msgSend(CPScroller,"scrollerWidth"); +if(_d8){ +_de.height-=_df; +} +if(_d9){ +_de.width-=_df; +} +return _de; +} +}),new objj_method(sel_getUid("_insetBounds:borderType:"),function(_e0,_e1,_e2,_e3){ +with(_e0){ +switch(_e3){ +case CPLineBorder: +case CPBezelBorder: +return {origin:{x:_e2.origin.x+1,y:_e2.origin.y+1},size:{width:_e2.size.width-2*1,height:_e2.size.height-2*1}}; +case CPGrooveBorder: +_e2={origin:{x:_e2.origin.x+2,y:_e2.origin.y+2},size:{width:_e2.size.width-2*2,height:_e2.size.height-2*2}}; +++_e2.origin.y; +--_e2.size.height; +return _e2; +case CPNoBorder: +default: +return _e2; +} +} +})]); +var _e4="CPScrollViewContentView",_e5="CPScrollViewHeaderClipViewKey",_e6="CPScrollViewVLineScroll",_e7="CPScrollViewHLineScroll",_e8="CPScrollViewVPageScroll",_e9="CPScrollViewHPageScroll",_ea="CPScrollViewHasVScroller",_eb="CPScrollViewHasHScroller",_ec="CPScrollViewVScroller",_ed="CPScrollViewHScroller",_ee="CPScrollViewAutohidesScroller",_ef="CPScrollViewCornerViewKey",_f0="CPScrollViewBorderTypeKey"; +var _1=objj_getClass("CPScrollView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPScrollView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_f1,_f2,_f3){ +with(_f1){ +if(_f1=objj_msgSendSuper({receiver:_f1,super_class:objj_getClass("CPScrollView").super_class},"initWithCoder:",_f3)){ +_verticalLineScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e6); +_verticalPageScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e8); +_horizontalLineScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e7); +_horizontalPageScroll=objj_msgSend(_f3,"decodeFloatForKey:",_e9); +_contentView=objj_msgSend(_f3,"decodeObjectForKey:",_e4); +_headerClipView=objj_msgSend(_f3,"decodeObjectForKey:",_e5); +if(!_headerClipView){ +_headerClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"init"); +objj_msgSend(_f1,"addSubview:",_headerClipView); +} +_bottomCornerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_f1,"addSubview:",_bottomCornerView); +_verticalScroller=objj_msgSend(_f3,"decodeObjectForKey:",_ec); +_horizontalScroller=objj_msgSend(_f3,"decodeObjectForKey:",_ed); +_hasVerticalScroller=objj_msgSend(_f3,"decodeBoolForKey:",_ea); +_hasHorizontalScroller=objj_msgSend(_f3,"decodeBoolForKey:",_eb); +_autohidesScrollers=objj_msgSend(_f3,"decodeBoolForKey:",_ee); +_borderType=objj_msgSend(_f3,"decodeIntForKey:",_f0); +_cornerView=objj_msgSend(_f3,"decodeObjectForKey:",_ef); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("reflectScrolledClipView:"),_f1,_contentView,0,[CPDefaultRunLoopMode]); +} +return _f1; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_f4,_f5,_f6){ +with(_f4){ +objj_msgSendSuper({receiver:_f4,super_class:objj_getClass("CPScrollView").super_class},"encodeWithCoder:",_f6); +objj_msgSend(_f6,"encodeObject:forKey:",_contentView,_e4); +objj_msgSend(_f6,"encodeObject:forKey:",_headerClipView,_e5); +objj_msgSend(_f6,"encodeObject:forKey:",_verticalScroller,_ec); +objj_msgSend(_f6,"encodeObject:forKey:",_horizontalScroller,_ed); +objj_msgSend(_f6,"encodeFloat:forKey:",_verticalLineScroll,_e6); +objj_msgSend(_f6,"encodeFloat:forKey:",_verticalPageScroll,_e8); +objj_msgSend(_f6,"encodeFloat:forKey:",_horizontalLineScroll,_e7); +objj_msgSend(_f6,"encodeFloat:forKey:",_horizontalPageScroll,_e9); +objj_msgSend(_f6,"encodeBool:forKey:",_hasVerticalScroller,_ea); +objj_msgSend(_f6,"encodeBool:forKey:",_hasHorizontalScroller,_eb); +objj_msgSend(_f6,"encodeBool:forKey:",_autohidesScrollers,_ee); +objj_msgSend(_f6,"encodeObject:forKey:",_cornerView,_ef); +objj_msgSend(_f6,"encodeInt:forKey:",_borderType,_f0); +} +})]); +p;15;CPSearchField.jt;21770;@STATIC;1.0;i;13;CPTextField.jt;21732; +objj_executeFile("CPTextField.j",YES); +CPSearchFieldRecentsTitleMenuItemTag=1000; +CPSearchFieldRecentsMenuItemTag=1001; +CPSearchFieldClearRecentsMenuItemTag=1002; +CPSearchFieldNoRecentsMenuItemTag=1003; +CPSearchFieldSeparatorMenuItemTag=1004; +var _1=nil,_2=nil,_3=nil,_4=nil; +var _5=25,_6=22,_7=22; +var _8=" "; +var _9=objj_allocateClassPair(CPTextField,"CPSearchField"),_a=_9.isa; +class_addIvars(_9,[new objj_ivar("_searchButton"),new objj_ivar("_cancelButton"),new objj_ivar("_searchMenuTemplate"),new objj_ivar("_searchMenu"),new objj_ivar("_recentsAutosaveName"),new objj_ivar("_recentSearches"),new objj_ivar("_maximumRecents"),new objj_ivar("_sendsWholeSearchString"),new objj_ivar("_sendsSearchStringImmediately"),new objj_ivar("_canResignFirstResponder"),new objj_ivar("_partialStringTimer")]); +objj_registerClassPair(_9); +class_addMethods(_9,[new objj_method(sel_getUid("initWithFrame:"),function(_b,_c,_d){ +with(_b){ +if(_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPSearchField").super_class},"initWithFrame:",_d)){ +_maximumRecents=10; +_sendsWholeSearchString=NO; +_sendsSearchStringImmediately=NO; +_recentsAutosaveName=nil; +objj_msgSend(_b,"_init"); +} +return _b; +} +}),new objj_method(sel_getUid("_init"),function(_e,_f){ +with(_e){ +_recentSearches=objj_msgSend(CPArray,"array"); +objj_msgSend(_e,"setBezeled:",YES); +objj_msgSend(_e,"setBezelStyle:",CPTextFieldRoundedBezel); +objj_msgSend(_e,"setBordered:",YES); +objj_msgSend(_e,"setEditable:",YES); +objj_msgSend(_e,"setDelegate:",_e); +objj_msgSend(_e,"setContinuous:",YES); +var _10=objj_msgSend(_e,"bounds"),_11=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",objj_msgSend(_e,"cancelButtonRectForBounds:",_10)),_12=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",objj_msgSend(_e,"searchButtonRectForBounds:",_10)); +objj_msgSend(_e,"setCancelButton:",_11); +objj_msgSend(_e,"resetCancelButton"); +objj_msgSend(_e,"setSearchButton:",_12); +objj_msgSend(_e,"resetSearchButton"); +_canResignFirstResponder=YES; +} +}),new objj_method(sel_getUid("setSearchButton:"),function(_13,_14,_15){ +with(_13){ +if(_15!=_searchButton){ +objj_msgSend(_searchButton,"removeFromSuperview"); +_searchButton=_15; +objj_msgSend(_searchButton,"setFrame:",objj_msgSend(_13,"searchButtonRectForBounds:",objj_msgSend(_13,"bounds"))); +objj_msgSend(_searchButton,"setAutoresizingMask:",CPViewMaxXMargin); +objj_msgSend(_13,"addSubview:",_searchButton); +} +} +}),new objj_method(sel_getUid("searchButton"),function(_16,_17){ +with(_16){ +return _searchButton; +} +}),new objj_method(sel_getUid("resetSearchButton"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_18,"searchButton"),_1b=(_searchMenuTemplate===nil)?_1:_2; +objj_msgSend(_1a,"setBordered:",NO); +objj_msgSend(_1a,"setImageScaling:",CPScaleToFit); +objj_msgSend(_1a,"setImage:",_1b); +objj_msgSend(_1a,"setAutoresizingMask:",CPViewMaxXMargin); +} +}),new objj_method(sel_getUid("setCancelButton:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_1e!=_cancelButton){ +objj_msgSend(_cancelButton,"removeFromSuperview"); +_cancelButton=_1e; +objj_msgSend(_cancelButton,"setFrame:",objj_msgSend(_1c,"cancelButtonRectForBounds:",objj_msgSend(_1c,"bounds"))); +objj_msgSend(_cancelButton,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_cancelButton,"setTarget:",_1c); +objj_msgSend(_cancelButton,"setAction:",sel_getUid("_searchFieldCancel:")); +objj_msgSend(_1c,"_updateCancelButtonVisibility"); +objj_msgSend(_1c,"addSubview:",_cancelButton); +} +} +}),new objj_method(sel_getUid("cancelButton"),function(_1f,_20){ +with(_1f){ +return _cancelButton; +} +}),new objj_method(sel_getUid("resetCancelButton"),function(_21,_22){ +with(_21){ +var _23=objj_msgSend(_21,"cancelButton"); +objj_msgSend(_23,"setBordered:",NO); +objj_msgSend(_23,"setImageScaling:",CPScaleToFit); +objj_msgSend(_23,"setImage:",_3); +objj_msgSend(_23,"setAlternateImage:",_4); +objj_msgSend(_23,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_23,"setTarget:",_21); +objj_msgSend(_23,"setAction:",sel_getUid("_searchFieldCancel:")); +} +}),new objj_method(sel_getUid("searchTextRectForBounds:"),function(_24,_25,_26){ +with(_24){ +var _27=0,_28=(_26.size.width),_29=objj_msgSend(_24,"bounds"); +if(_searchButton){ +var _2a=objj_msgSend(_24,"searchButtonRectForBounds:",_29); +_27=(_2a.origin.x+_2a.size.width)+2; +} +if(_cancelButton){ +var _2b=objj_msgSend(_24,"cancelButtonRectForBounds:",_29); +_28=(_2b.origin.x)-_27; +} +return {origin:{x:_27,y:(_26.origin.y)},size:{width:_28,height:(_26.size.height)}}; +} +}),new objj_method(sel_getUid("searchButtonRectForBounds:"),function(_2c,_2d,_2e){ +with(_2c){ +return {origin:{x:5,y:((_2e.size.height)-_7)/2},size:{width:_5,height:_7}}; +} +}),new objj_method(sel_getUid("cancelButtonRectForBounds:"),function(_2f,_30,_31){ +with(_2f){ +return {origin:{x:(_31.size.width)-_6-5,y:((_31.size.height)-_6)/2},size:{width:_7,height:_7}}; +} +}),new objj_method(sel_getUid("searchMenuTemplate"),function(_32,_33){ +with(_32){ +return _searchMenuTemplate; +} +}),new objj_method(sel_getUid("setSearchMenuTemplate:"),function(_34,_35,_36){ +with(_34){ +_searchMenuTemplate=_36; +objj_msgSend(_34,"resetSearchButton"); +objj_msgSend(_34,"_loadRecentSearchList"); +objj_msgSend(_34,"_updateSearchMenu"); +} +}),new objj_method(sel_getUid("sendsWholeSearchString"),function(_37,_38){ +with(_37){ +return _sendsWholeSearchString; +} +}),new objj_method(sel_getUid("setSendsWholeSearchString:"),function(_39,_3a,_3b){ +with(_39){ +_sendsWholeSearchString=_3b; +} +}),new objj_method(sel_getUid("sendsSearchStringImmediately"),function(_3c,_3d){ +with(_3c){ +return _sendsSearchStringImmediately; +} +}),new objj_method(sel_getUid("setSendsSearchStringImmediately:"),function(_3e,_3f,_40){ +with(_3e){ +_sendsSearchStringImmediately=_40; +} +}),new objj_method(sel_getUid("maximumRecents"),function(_41,_42){ +with(_41){ +return _maximumRecents; +} +}),new objj_method(sel_getUid("setMaximumRecents:"),function(_43,_44,max){ +with(_43){ +if(max>254){ +max=254; +}else{ +if(max<0){ +max=10; +} +} +_maximumRecents=max; +} +}),new objj_method(sel_getUid("recentSearches"),function(_45,_46){ +with(_45){ +return _recentSearches; +} +}),new objj_method(sel_getUid("setRecentSearches:"),function(_47,_48,_49){ +with(_47){ +var max=MIN(objj_msgSend(_47,"maximumRecents"),objj_msgSend(_49,"count")),_49=objj_msgSend(_49,"subarrayWithRange:",CPMakeRange(0,max)); +_recentSearches=_49; +objj_msgSend(_47,"_autosaveRecentSearchList"); +} +}),new objj_method(sel_getUid("recentsAutosaveName"),function(_4a,_4b){ +with(_4a){ +return _recentsAutosaveName; +} +}),new objj_method(sel_getUid("setRecentsAutosaveName:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_recentsAutosaveName!=nil){ +objj_msgSend(_4c,"_deregisterForAutosaveNotification"); +} +_recentsAutosaveName=_4e; +if(_recentsAutosaveName!=nil){ +objj_msgSend(_4c,"_registerForAutosaveNotification"); +} +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_4f,_50,_51){ +with(_4f){ +var _52=objj_msgSendSuper({receiver:_4f,super_class:objj_getClass("CPSearchField").super_class},"contentRectForBounds:",_51); +return objj_msgSend(_4f,"searchTextRectForBounds:",_52); +} +}),new objj_method(sel_getUid("menu"),function(_53,_54){ +with(_53){ +return _searchMenu; +} +}),new objj_method(sel_getUid("isOpaque"),function(_55,_56){ +with(_55){ +return objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPSearchField").super_class},"isOpaque")&&objj_msgSend(_cancelButton,"isOpaque")&&objj_msgSend(_searchButton,"isOpaque"); +} +}),new objj_method(sel_getUid("_updateCancelButtonVisibility"),function(_57,_58){ +with(_57){ +objj_msgSend(_cancelButton,"setHidden:",(objj_msgSend(objj_msgSend(_57,"stringValue"),"length")===0)); +} +}),new objj_method(sel_getUid("controlTextDidChange:"),function(_59,_5a,_5b){ +with(_59){ +if(!objj_msgSend(_59,"sendsWholeSearchString")){ +if(objj_msgSend(_59,"sendsSearchStringImmediately")){ +objj_msgSend(_59,"_sendPartialString"); +}else{ +objj_msgSend(_partialStringTimer,"invalidate"); +var _5c=objj_msgSend(CPSearchField,"_keyboardDelayForPartialSearchString:",objj_msgSend(_59,"stringValue")); +_partialStringTimer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",_5c,_59,sel_getUid("_sendPartialString"),nil,NO); +} +} +objj_msgSend(_59,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_sendAction:"),function(_5d,_5e,_5f){ +with(_5d){ +objj_msgSend(_5d,"sendAction:to:",objj_msgSend(_5d,"action"),objj_msgSend(_5d,"target")); +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_60,_61,_62,_63){ +with(_60){ +objj_msgSendSuper({receiver:_60,super_class:objj_getClass("CPSearchField").super_class},"sendAction:to:",_62,_63); +objj_msgSend(_partialStringTimer,"invalidate"); +objj_msgSend(_60,"_addStringToRecentSearches:",objj_msgSend(_60,"stringValue")); +objj_msgSend(_60,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_addStringToRecentSearches:"),function(_64,_65,_66){ +with(_64){ +if(_66===nil||_66===""||objj_msgSend(_recentSearches,"containsObject:",_66)){ +return; +} +var _67=objj_msgSend(CPMutableArray,"arrayWithArray:",_recentSearches); +objj_msgSend(_67,"addObject:",_66); +objj_msgSend(_64,"setRecentSearches:",_67); +objj_msgSend(_64,"_updateSearchMenu"); +} +}),new objj_method(sel_getUid("hitTest:"),function(_68,_69,_6a){ +with(_68){ +if((_6a.x>=(objj_msgSend(_68,"frame").origin.x)&&_6a.y>=(objj_msgSend(_68,"frame").origin.y)&&_6a.x<(objj_msgSend(_68,"frame").origin.x+objj_msgSend(_68,"frame").size.width)&&_6a.y<(objj_msgSend(_68,"frame").origin.y+objj_msgSend(_68,"frame").size.height))){ +return _68; +}else{ +return nil; +} +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_6b,_6c){ +with(_6b){ +return _canResignFirstResponder&&objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPSearchField").super_class},"resignFirstResponder"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_6d,_6e,_6f){ +with(_6d){ +var _70=objj_msgSend(_6f,"locationInWindow"),_71=objj_msgSend(_6d,"convertPoint:fromView:",_70,nil); +if((_71.x>=(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x)&&_71.y>=(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y)&&_71.x<(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x+objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.width)&&_71.y<(objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y+objj_msgSend(_6d,"searchButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.height))){ +if(_searchMenuTemplate==nil){ +objj_msgSend(_6d,"_sendAction:",_6d); +}else{ +objj_msgSend(_6d,"_showMenu"); +} +}else{ +if((_71.x>=(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x)&&_71.y>=(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y)&&_71.x<(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.x+objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.width)&&_71.y<(objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).origin.y+objj_msgSend(_6d,"cancelButtonRectForBounds:",objj_msgSend(_6d,"bounds")).size.height))){ +objj_msgSend(_cancelButton,"mouseDown:",_6f); +}else{ +objj_msgSendSuper({receiver:_6d,super_class:objj_getClass("CPSearchField").super_class},"mouseDown:",_6f); +} +} +} +}),new objj_method(sel_getUid("defaultSearchMenuTemplate"),function(_72,_73){ +with(_72){ +var _74=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"init"),_75; +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Recent Searches",nil,""); +objj_msgSend(_75,"setTag:",CPSearchFieldRecentsTitleMenuItemTag); +objj_msgSend(_75,"setEnabled:",NO); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Recent search item",sel_getUid("_searchFieldSearch:"),""); +objj_msgSend(_75,"setTag:",CPSearchFieldRecentsMenuItemTag); +objj_msgSend(_75,"setTarget:",_72); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","Clear Recent Searches",sel_getUid("_searchFieldClearRecents:"),""); +objj_msgSend(_75,"setTag:",CPSearchFieldClearRecentsMenuItemTag); +objj_msgSend(_75,"setTarget:",_72); +objj_msgSend(_74,"addItem:",_75); +_75=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:","No Recent Searches",nil,""); +objj_msgSend(_75,"setTag:",CPSearchFieldNoRecentsMenuItemTag); +objj_msgSend(_75,"setEnabled:",NO); +objj_msgSend(_74,"addItem:",_75); +return _74; +} +}),new objj_method(sel_getUid("_updateSearchMenu"),function(_76,_77){ +with(_76){ +if(_searchMenuTemplate===nil){ +return; +} +var _78=objj_msgSend(objj_msgSend(CPMenu,"alloc"),"init"),_79=objj_msgSend(_recentSearches,"count"),_7a=objj_msgSend(_searchMenuTemplate,"numberOfItems"); +for(var i=0;i<_7a;i++){ +var _7b=objj_msgSend(objj_msgSend(_searchMenuTemplate,"itemAtIndex:",i),"copy"); +switch(objj_msgSend(_7b,"tag")){ +case CPSearchFieldRecentsTitleMenuItemTag: +if(_79===0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +break; +case CPSearchFieldRecentsMenuItemTag: +var _7c=sel_getUid("_searchFieldSearch:"); +for(var _7d=0;_7d<_79;++_7d){ +var _7e=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",_8+objj_msgSend(_recentSearches,"objectAtIndex:",_7d),_7c,objj_msgSend(_7b,"keyEquivalent")); +objj_msgSend(_7b,"setTarget:",_76); +objj_msgSend(_78,"addItem:",_7e); +} +continue; +case CPSearchFieldClearRecentsMenuItemTag: +if(_79===0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +objj_msgSend(_7b,"setAction:",sel_getUid("_searchFieldClearRecents:")); +objj_msgSend(_7b,"setTarget:",_76); +break; +case CPSearchFieldNoRecentsMenuItemTag: +if(_79!==0){ +continue; +} +if(objj_msgSend(_78,"numberOfItems")>0){ +objj_msgSend(_76,"_addSeparatorToMenu:",_78); +} +break; +case CPSearchFieldSeparatorMenuItemTag: +_7b=objj_msgSend(CPMenuItem,"separatorItem"); +objj_msgSend(_7b,"setEnabled:",NO); +objj_msgSend(_78,"addItem:",_7b); +continue; +} +objj_msgSend(_7b,"setEnabled:",(objj_msgSend(_7b,"isEnabled")&&objj_msgSend(_7b,"action")!=nil&&objj_msgSend(_7b,"target")!=nil)); +objj_msgSend(_78,"addItem:",_7b); +} +objj_msgSend(_78,"setDelegate:",_76); +_searchMenu=_78; +} +}),new objj_method(sel_getUid("_addSeparatorToMenu:"),function(_7f,_80,_81){ +with(_7f){ +var _82=objj_msgSend(CPMenuItem,"separatorItem"); +objj_msgSend(_82,"setEnabled:",NO); +objj_msgSend(_81,"addItem:",_82); +} +}),new objj_method(sel_getUid("menuWillOpen:"),function(_83,_84,_85){ +with(_83){ +_canResignFirstResponder=NO; +} +}),new objj_method(sel_getUid("menuDidClose:"),function(_86,_87,_88){ +with(_86){ +_canResignFirstResponder=YES; +objj_msgSend(_86,"becomeFirstResponder"); +} +}),new objj_method(sel_getUid("_showMenu"),function(_89,_8a){ +with(_89){ +if(_searchMenu===nil||objj_msgSend(_searchMenu,"numberOfItems")===0||!objj_msgSend(_89,"isEnabled")){ +return; +} +var _8b=objj_msgSend(objj_msgSend(_89,"superview"),"convertRect:toView:",objj_msgSend(_89,"frame"),nil),_8c=CPMakePoint(_8b.origin.x+10,_8b.origin.y+_8b.size.height-4); +var _8d=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPRightMouseDown,_8c,0,objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"timestamp"),objj_msgSend(objj_msgSend(_89,"window"),"windowNumber"),nil,1,1,0); +objj_msgSend(_89,"selectAll:",nil); +objj_msgSend(CPMenu,"popUpContextMenu:withEvent:forView:",_searchMenu,_8d,_89); +} +}),new objj_method(sel_getUid("_sendPartialString"),function(_8e,_8f){ +with(_8e){ +objj_msgSendSuper({receiver:_8e,super_class:objj_getClass("CPSearchField").super_class},"sendAction:to:",objj_msgSend(_8e,"action"),objj_msgSend(_8e,"target")); +objj_msgSend(_partialStringTimer,"invalidate"); +} +}),new objj_method(sel_getUid("_searchFieldCancel:"),function(_90,_91,_92){ +with(_90){ +objj_msgSend(_90,"setObjectValue:",""); +objj_msgSend(_90,"_sendPartialString"); +objj_msgSend(_90,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_searchFieldSearch:"),function(_93,_94,_95){ +with(_93){ +var _96=objj_msgSend(objj_msgSend(_95,"title"),"substringFromIndex:",objj_msgSend(_8,"length")); +if(objj_msgSend(_95,"tag")!=CPSearchFieldRecentsMenuItemTag){ +objj_msgSend(_93,"_addStringToRecentSearches:",_96); +} +objj_msgSend(_93,"setObjectValue:",_96); +objj_msgSend(_93,"_sendPartialString"); +objj_msgSend(_93,"selectAll:",nil); +objj_msgSend(_93,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_searchFieldClearRecents:"),function(_97,_98,_99){ +with(_97){ +objj_msgSend(_97,"setRecentSearches:",objj_msgSend(CPArray,"array")); +objj_msgSend(_97,"_updateSearchMenu"); +objj_msgSend(_97,"setStringValue:",""); +objj_msgSend(_97,"_updateCancelButtonVisibility"); +} +}),new objj_method(sel_getUid("_registerForAutosaveNotification"),function(_9a,_9b){ +with(_9a){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_9a,sel_getUid("_updateAutosavedRecents:"),"CPAutosavedRecentsChangedNotification",nil); +} +}),new objj_method(sel_getUid("_deregisterForAutosaveNotification"),function(_9c,_9d){ +with(_9c){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_9c,"CPAutosavedRecentsChangedNotification",nil); +} +}),new objj_method(sel_getUid("_autosaveRecentSearchList"),function(_9e,_9f){ +with(_9e){ +if(_recentsAutosaveName!=nil){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:","CPAutosavedRecentsChangedNotification",_recentsAutosaveName); +} +} +}),new objj_method(sel_getUid("_updateAutosavedRecents:"),function(_a0,_a1,_a2){ +with(_a0){ +var _a3=objj_msgSend(_a0,"recentSearches"),_a4=objj_msgSend(_a2,"object"),_a5=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleName"),_a6=objj_msgSend(_a5,"lowercaseString")+"."+objj_msgSend(_a2,"object"),_a7=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_a6),_a8=objj_msgSend(_a3,"componentsJoinedByString:",","); +objj_msgSend(_a7,"setValue:expires:domain:",_a8,objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSinceNow:",3600*24*365),(window.location.href.hostname)); +} +}),new objj_method(sel_getUid("_loadRecentSearchList"),function(_a9,_aa){ +with(_a9){ +var _ab,_ac=objj_msgSend(_a9,"recentsAutosaveName"); +if(_ac===nil){ +return; +} +var _ad=objj_msgSend(objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"infoDictionary"),"objectForKey:","CPBundleName"),_ae=objj_msgSend(_ad,"lowercaseString")+"."+_ac,_af=objj_msgSend(objj_msgSend(CPCookie,"alloc"),"initWithName:",_ae); +if(_af!=nil){ +var _b0=objj_msgSend(_af,"value"); +_ab=(_b0!="")?objj_msgSend(_b0,"componentsSeparatedByString:",","):objj_msgSend(CPArray,"array"); +_recentSearches=_ab; +} +} +})]); +class_addMethods(_a,[new objj_method(sel_getUid("initialize"),function(_b1,_b2){ +with(_b1){ +if(_b1!=objj_msgSend(CPSearchField,"class")){ +return; +} +var _b3=objj_msgSend(CPBundle,"bundleForClass:",_b1); +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldSearch.png"),{width:_5,height:_7}); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldFind.png"),{width:_5,height:_7}); +_3=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldCancel.png"),{width:_6,height:_7}); +_4=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b3,"pathForResource:","CPSearchField/CPSearchFieldCancelPressed.png"),{width:_6,height:_7}); +} +}),new objj_method(sel_getUid("_keyboardDelayForPartialSearchString:"),function(_b4,_b5,_b6){ +with(_b4){ +return (6-MIN(objj_msgSend(_b6,"length"),4))/10; +} +})]); +var _b7="CPRecentsAutosaveNameKey",_b8="CPSendsWholeSearchStringKey",_b9="CPSendsSearchStringImmediatelyKey",_ba="CPMaximumRecentsKey",_bb="CPSearchMenuTemplateKey"; +var _9=objj_getClass("CPSearchField"); +if(!_9){ +throw new SyntaxError("*** Could not find definition for class \"CPSearchField\""); +} +var _a=_9.isa; +class_addMethods(_9,[new objj_method(sel_getUid("encodeWithCoder:"),function(_bc,_bd,_be){ +with(_bc){ +objj_msgSend(_searchButton,"removeFromSuperview"); +objj_msgSend(_cancelButton,"removeFromSuperview"); +objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPSearchField").super_class},"encodeWithCoder:",_be); +if(_searchButton){ +objj_msgSend(_bc,"addSubview:",_searchButton); +} +if(_cancelButton){ +objj_msgSend(_bc,"addSubview:",_cancelButton); +} +objj_msgSend(_be,"encodeBool:forKey:",_sendsWholeSearchString,_b8); +objj_msgSend(_be,"encodeBool:forKey:",_sendsSearchStringImmediately,_b9); +objj_msgSend(_be,"encodeInt:forKey:",_maximumRecents,_ba); +if(_recentsAutosaveName){ +objj_msgSend(_be,"encodeObject:forKey:",_recentsAutosaveName,_b7); +} +if(_searchMenuTemplate){ +objj_msgSend(_be,"encodeObject:forKey:",_searchMenuTemplate,_bb); +} +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_bf,_c0,_c1){ +with(_bf){ +if(_bf=objj_msgSendSuper({receiver:_bf,super_class:objj_getClass("CPSearchField").super_class},"initWithCoder:",_c1)){ +_recentsAutosaveName=objj_msgSend(_c1,"decodeObjectForKey:",_b7); +_sendsWholeSearchString=objj_msgSend(_c1,"decodeBoolForKey:",_b8); +_sendsSearchStringImmediately=objj_msgSend(_c1,"decodeBoolForKey:",_b9); +_maximumRecents=objj_msgSend(_c1,"decodeIntForKey:",_ba); +var _c2=objj_msgSend(_c1,"decodeObjectForKey:",_bb); +if(_c2){ +objj_msgSend(_bf,"setSearchMenuTemplate:",_c2); +} +objj_msgSend(_bf,"_init"); +} +return _bf; +} +})]); +p;19;CPSecureTextField.jt;285;@STATIC;1.0;i;13;CPTextField.jt;249; +objj_executeFile("CPTextField.j",YES); +var _1=objj_allocateClassPair(CPTextField,"CPSecureTextField"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("isSecure"),function(_3,_4){ +with(_3){ +return YES; +} +})]); +p;20;CPSegmentedControl.jt;23162;@STATIC;1.0;I;20;Foundation/CPArray.ji;11;CPControl.jt;23101; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("CPControl.j",YES); +CPSegmentSwitchTrackingSelectOne=0; +CPSegmentSwitchTrackingSelectAny=1; +CPSegmentSwitchTrackingMomentary=2; +var _1=objj_allocateClassPair(CPControl,"CPSegmentedControl"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_segments"),new objj_ivar("_themeStates"),new objj_ivar("_selectedSegment"),new objj_ivar("_segmentStyle"),new objj_ivar("_trackingMode"),new objj_ivar("_trackingSegment"),new objj_ivar("_trackingHighlighted")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_segments=[]; +_themeStates=[]; +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSegmentedControl").super_class},"initWithFrame:",_5); +if(_3){ +_selectedSegment=-1; +_trackingMode=CPSegmentSwitchTrackingSelectOne; +} +return _3; +} +}),new objj_method(sel_getUid("selectedTag"),function(_6,_7){ +with(_6){ +return objj_msgSend(_segments[_selectedSegment],"tag"); +} +}),new objj_method(sel_getUid("setSegmentCount:"),function(_8,_9,_a){ +with(_8){ +if(_segments.length==_a){ +return; +} +var _b=CGRectGetHeight(objj_msgSend(_8,"bounds")); +if(_segments.length<_a){ +for(var _c=_segments.length;_c<_a;++_c){ +_segments[_c]=objj_msgSend(objj_msgSend(_CPSegmentItem,"alloc"),"init"); +_themeStates[_c]=CPThemeStateNormal; +} +}else{ +if(_a<_segments.length){ +_segments.length=_a; +_themeStates.length=_a; +} +} +if(_selectedSegment>=_segments.length){ +_selectedSegment=-1; +} +objj_msgSend(_8,"tileWithChangedSegment:",0); +} +}),new objj_method(sel_getUid("segmentCount"),function(_d,_e){ +with(_d){ +return _segments.length; +} +}),new objj_method(sel_getUid("setSelectedSegment:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_f,"setSelected:forSegment:",YES,_11); +} +}),new objj_method(sel_getUid("selectedSegment"),function(_12,_13){ +with(_12){ +return _selectedSegment; +} +}),new objj_method(sel_getUid("selectSegmentWithTag:"),function(_14,_15,_16){ +with(_14){ +var _17=0; +for(;_17<_segments.length;++_17){ +if(_segments[_17].tag==_16){ +objj_msgSend(_14,"setSelectedSegment:",_17); +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("isTracking"),function(_18,_19){ +with(_18){ +} +}),new objj_method(sel_getUid("setTrackingMode:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_trackingMode==_1c){ +return; +} +_trackingMode=_1c; +if(_trackingMode==CPSegmentSwitchTrackingSelectOne){ +var _1d=0,_1e=NO; +for(;_1d<_segments.length;++_1d){ +if(objj_msgSend(_segments[_1d],"selected")){ +if(_1e){ +objj_msgSend(_1a,"setSelected:forSegment:",NO,_1d); +}else{ +_1e=YES; +} +} +} +}else{ +if(_trackingMode==CPSegmentSwitchTrackingMomentary){ +var _1d=0; +for(;_1d<_segments.length;++_1d){ +if(objj_msgSend(_segments[_1d],"selected")){ +objj_msgSend(_1a,"setSelected:forSegment:",NO,_1d); +} +} +} +} +} +}),new objj_method(sel_getUid("trackingMode"),function(_1f,_20){ +with(_1f){ +return _trackingMode; +} +}),new objj_method(sel_getUid("setWidth:forSegment:"),function(_21,_22,_23,_24){ +with(_21){ +objj_msgSend(_segments[_24],"setWidth:",_23); +objj_msgSend(_21,"tileWithChangedSegment:",_24); +} +}),new objj_method(sel_getUid("widthForSegment:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_segments[_27],"width"); +} +}),new objj_method(sel_getUid("setImage:forSegment:"),function(_28,_29,_2a,_2b){ +with(_28){ +objj_msgSend(_segments[_2b],"setImage:",_2a); +objj_msgSend(_28,"tileWithChangedSegment:",_2b); +} +}),new objj_method(sel_getUid("imageForSegment:"),function(_2c,_2d,_2e){ +with(_2c){ +return objj_msgSend(_segments[_2e],"image"); +} +}),new objj_method(sel_getUid("setLabel:forSegment:"),function(_2f,_30,_31,_32){ +with(_2f){ +objj_msgSend(_segments[_32],"setLabel:",_31); +objj_msgSend(_2f,"tileWithChangedSegment:",_32); +} +}),new objj_method(sel_getUid("labelForSegment:"),function(_33,_34,_35){ +with(_33){ +return objj_msgSend(_segments[_35],"label"); +} +}),new objj_method(sel_getUid("setMenu:forSegment:"),function(_36,_37,_38,_39){ +with(_36){ +objj_msgSend(_segments[_39],"setMenu:",_38); +} +}),new objj_method(sel_getUid("menuForSegment:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(_segments[_3c],"menu"); +} +}),new objj_method(sel_getUid("setSelected:forSegment:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +var _41=_segments[_40]; +if(objj_msgSend(_41,"selected")==_3f){ +return; +} +objj_msgSend(_41,"setSelected:",_3f); +_themeStates[_40]=_3f?CPThemeStateSelected:CPThemeStateNormal; +if(_3f){ +var _42=_selectedSegment; +_selectedSegment=_40; +if(_trackingMode==CPSegmentSwitchTrackingSelectOne&&_42!=_40&&_42!=-1){ +objj_msgSend(_segments[_42],"setSelected:",NO); +_themeStates[_42]=CPThemeStateNormal; +objj_msgSend(_3d,"drawSegmentBezel:highlight:",_42,NO); +} +} +if(_trackingMode!=CPSegmentSwitchTrackingMomentary){ +objj_msgSend(_3d,"drawSegmentBezel:highlight:",_40,NO); +} +objj_msgSend(_3d,"setNeedsLayout"); +objj_msgSend(_3d,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("isSelectedForSegment:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_segments[_45],"selected"); +} +}),new objj_method(sel_getUid("setEnabled:forSegment:"),function(_46,_47,_48,_49){ +with(_46){ +objj_msgSend(_segments[_49],"setEnabled:",_48); +if(_48){ +_themeStates[_49]&=~CPThemeStateDisabled; +}else{ +_themeStates[_49]|=CPThemeStateDisabled; +} +objj_msgSend(_46,"setNeedsLayout"); +objj_msgSend(_46,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("isEnabledForSegment:"),function(_4a,_4b,_4c){ +with(_4a){ +return objj_msgSend(_segments[_4c],"enabled"); +} +}),new objj_method(sel_getUid("setTag:forSegment:"),function(_4d,_4e,_4f,_50){ +with(_4d){ +objj_msgSend(_segments[_50],"setTag:",_4f); +} +}),new objj_method(sel_getUid("tagForSegment:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_segments[_53],"tag"); +} +}),new objj_method(sel_getUid("drawSegmentBezel:highlight:"),function(_54,_55,_56,_57){ +with(_54){ +if(_57){ +_themeStates[_56]|=CPThemeStateHighlighted; +}else{ +_themeStates[_56]&=~CPThemeStateHighlighted; +} +objj_msgSend(_54,"setNeedsLayout"); +objj_msgSend(_54,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("_leftOffsetForSegment:"),function(_58,_59,_5a){ +with(_58){ +var _5b=objj_msgSend(_58,"currentValueForThemeAttribute:","bezel-inset"); +if(_5a==0){ +return _5b.left; +} +var _5c=objj_msgSend(_58,"currentValueForThemeAttribute:","divider-thickness"); +return objj_msgSend(_58,"_leftOffsetForSegment:",_5a-1)+objj_msgSend(_58,"widthForSegment:",_5a-1)+_5c; +} +}),new objj_method(sel_getUid("_indexOfLastSegment"),function(_5d,_5e){ +with(_5d){ +var _5f=objj_msgSend(_segments,"count")-1; +if(_5f<0){ +_5f=0; +} +return _5f; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_60,_61,_62){ +with(_60){ +var _63=objj_msgSend(_60,"currentValueForThemeAttribute:","default-height"),_64=objj_msgSend(_60,"currentValueForThemeAttribute:","content-inset"),_65=objj_msgSend(_60,"currentValueForThemeAttribute:","bezel-inset"),_66=objj_msgSend(_60,"bounds"); +if(_62==="left-segment-bezel"){ +return CGRectMake(_65.left,_65.top,_64.left,_63); +}else{ +if(_62==="right-segment-bezel"){ +return CPRectMake(CGRectGetWidth(objj_msgSend(_60,"bounds"))-_64.right,_65.top,_64.right,_63); +}else{ +if(_62.indexOf("segment-bezel")===0){ +var _67=parseInt(_62.substring("segment-bezel-".length),10),_68=CGRectCreateCopy(objj_msgSend(_segments[_67],"frame")); +if(_67===0){ +_68.origin.x+=_64.left; +_68.size.width-=_64.left; +} +if(_67===_segments.length-1){ +_68.size.width=CGRectGetWidth(objj_msgSend(_60,"bounds"))-_64.right-_68.origin.x; +} +return _68; +}else{ +if(_62.indexOf("divider-bezel")===0){ +var _67=parseInt(_62.substring("divider-bezel-".length),10),_69=objj_msgSend(_60,"widthForSegment:",_67),_6a=objj_msgSend(_60,"_leftOffsetForSegment:",_67),_6b=objj_msgSend(_60,"currentValueForThemeAttribute:","divider-thickness"); +return CGRectMake(_6a+_69,_65.top,_6b,_63); +}else{ +if(_62.indexOf("segment-content")===0){ +var _67=parseInt(_62.substring("segment-content-".length),10); +return objj_msgSend(_60,"contentFrameForSegment:",_67); +} +} +} +} +} +return objj_msgSendSuper({receiver:_60,super_class:objj_getClass("CPSegmentedControl").super_class},"rectForEphemeralSubviewNamed:",_62); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_6e.substring(0,"segment-content".length)=="segment-content"){ +return objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +return objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_6f,_70){ +with(_6f){ +if(_segments.length<=0){ +return; +} +var _71=_themeStates[0]; +_71|=_themeState&CPThemeStateDisabled; +var _72=objj_msgSend(_6f,"valueForThemeAttribute:inState:","left-segment-bezel-color",_71); +var _73=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","left-segment-bezel",CPWindowBelow,nil); +objj_msgSend(_73,"setBackgroundColor:",_72); +var _71=_themeStates[_themeStates.length-1]; +_71|=_themeState&CPThemeStateDisabled; +var _74=objj_msgSend(_6f,"valueForThemeAttribute:inState:","right-segment-bezel-color",_71); +var _75=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","right-segment-bezel",CPWindowBelow,nil); +objj_msgSend(_75,"setBackgroundColor:",_74); +for(var i=0,_76=_themeStates.length;i<_76;i++){ +var _71=_themeStates[i]; +_71|=_themeState&CPThemeStateDisabled; +var _77=objj_msgSend(_6f,"valueForThemeAttribute:inState:","center-segment-bezel-color",_71); +var _78=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","segment-bezel-"+i,CPWindowBelow,nil); +objj_msgSend(_78,"setBackgroundColor:",_77); +var _79=_segments[i]; +var _7a=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","segment-content-"+i,CPWindowAbove,"segment-bezel-"+i); +objj_msgSend(_7a,"setText:",objj_msgSend(_79,"label")); +objj_msgSend(_7a,"setImage:",objj_msgSend(_79,"image")); +objj_msgSend(_7a,"setFont:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","font",_71)); +objj_msgSend(_7a,"setTextColor:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-color",_71)); +objj_msgSend(_7a,"setAlignment:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","alignment",_71)); +objj_msgSend(_7a,"setVerticalAlignment:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","vertical-alignment",_71)); +objj_msgSend(_7a,"setLineBreakMode:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","line-break-mode",_71)); +objj_msgSend(_7a,"setTextShadowColor:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-shadow-color",_71)); +objj_msgSend(_7a,"setTextShadowOffset:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","text-shadow-offset",_71)); +objj_msgSend(_7a,"setImageScaling:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","image-scaling",_71)); +if(objj_msgSend(_79,"image")&&objj_msgSend(_79,"label")){ +objj_msgSend(_7a,"setImagePosition:",objj_msgSend(_6f,"valueForThemeAttribute:inState:","image-position",_71)); +}else{ +if(objj_msgSend(_79,"image")){ +objj_msgSend(_7a,"setImagePosition:",CPImageOnly); +} +} +if(i==_76-1){ +continue; +} +var _7b=_themeStates[i]|_themeStates[i+1]; +_7b=(_7b&CPThemeStateSelected&~CPThemeStateHighlighted)?CPThemeStateSelected:CPThemeStateNormal; +_7b|=_themeState&CPThemeStateDisabled; +var _7c=objj_msgSend(_6f,"valueForThemeAttribute:inState:","divider-bezel-color",_7b); +var _7d=objj_msgSend(_6f,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","divider-bezel-"+i,CPWindowBelow,nil); +objj_msgSend(_7d,"setBackgroundColor:",_7c); +} +} +}),new objj_method(sel_getUid("drawSegment:highlight:"),function(_7e,_7f,_80,_81){ +with(_7e){ +} +}),new objj_method(sel_getUid("tileWithChangedSegment:"),function(_82,_83,_84){ +with(_82){ +if(_84>=_segments.length){ +return; +} +var _85=_segments[_84],_86=objj_msgSend(_85,"width"),_87=_themeStates[_84]|(_themeState&CPThemeStateDisabled),_88=objj_msgSend(_82,"valueForThemeAttribute:inState:","content-inset",_87),_89=objj_msgSend(_82,"valueForThemeAttribute:inState:","font",_87); +if(!_86){ +if(objj_msgSend(_85,"image")&&objj_msgSend(_85,"label")){ +_86=objj_msgSend(objj_msgSend(_85,"label"),"sizeWithFont:",_89).width+objj_msgSend(objj_msgSend(_85,"image"),"size").width+_88.left+_88.right; +}else{ +if(_85.image){ +_86=objj_msgSend(objj_msgSend(_85,"image"),"size").width+_88.left+_88.right; +}else{ +if(_85.label){ +_86=objj_msgSend(objj_msgSend(_85,"label"),"sizeWithFont:",_89).width+_88.left+_88.right; +}else{ +_86=0; +} +} +} +} +var _8a=_86-CGRectGetWidth(objj_msgSend(_85,"frame")); +if(!_8a){ +objj_msgSend(_82,"setNeedsLayout"); +objj_msgSend(_82,"setNeedsDisplay:",YES); +return; +} +var _8b=objj_msgSend(_82,"frame"); +objj_msgSend(_82,"setFrameSize:",CGSizeMake(CGRectGetWidth(_8b)+_8a,CGRectGetHeight(_8b))); +objj_msgSend(_85,"setWidth:",_86); +objj_msgSend(_85,"setFrame:",objj_msgSend(_82,"frameForSegment:",_84)); +var _8c=_84+1; +for(;_8c<_segments.length;++_8c){ +objj_msgSend(_segments[_8c],"frame").origin.x+=_8a; +objj_msgSend(_82,"drawSegmentBezel:highlight:",_8c,NO); +objj_msgSend(_82,"drawSegment:highlight:",_8c,NO); +} +objj_msgSend(_82,"drawSegmentBezel:highlight:",_84,NO); +objj_msgSend(_82,"drawSegment:highlight:",_84,NO); +objj_msgSend(_82,"setNeedsLayout"); +objj_msgSend(_82,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("frameForSegment:"),function(_8d,_8e,_8f){ +with(_8d){ +return objj_msgSend(_8d,"bezelFrameForSegment:",_8f); +} +}),new objj_method(sel_getUid("bezelFrameForSegment:"),function(_90,_91,_92){ +with(_90){ +var _93=objj_msgSend(_90,"currentValueForThemeAttribute:","default-height"),_94=objj_msgSend(_90,"currentValueForThemeAttribute:","bezel-inset"),_95=objj_msgSend(_90,"widthForSegment:",_92),_96=objj_msgSend(_90,"_leftOffsetForSegment:",_92); +return CGRectMake(_96,_94.top,_95,_93); +} +}),new objj_method(sel_getUid("contentFrameForSegment:"),function(_97,_98,_99){ +with(_97){ +var _9a=objj_msgSend(_97,"currentValueForThemeAttribute:","default-height"),_9b=objj_msgSend(_97,"currentValueForThemeAttribute:","content-inset"),_9c=objj_msgSend(_97,"widthForSegment:",_99),_9d=objj_msgSend(_97,"_leftOffsetForSegment:",_99); +return CGRectMake(_9d+_9b.left,_9b.top,_9c-_9b.left-_9b.right,_9a-_9b.top-_9b.bottom); +} +}),new objj_method(sel_getUid("testSegment:"),function(_9e,_9f,_a0){ +with(_9e){ +var _a1=objj_msgSend(_9e,"convertPoint:fromView:",_a0,nil),_a2=_segments.length; +while(_a2--){ +if(CGRectContainsPoint(objj_msgSend(_segments[_a2],"frame"),_a0)){ +return _a2; +} +} +if(_segments.length){ +var _a3=CGRectCreateCopy(objj_msgSend(_segments[_segments.length-1],"frame")); +_a3.size.width=CGRectGetWidth(objj_msgSend(_9e,"bounds"))-_a3.origin.x; +if(CGRectContainsPoint(_a3,_a0)){ +return _segments.length-1; +} +} +return -1; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_a4,_a5,_a6){ +with(_a4){ +if(!objj_msgSend(_a4,"isEnabled")){ +return; +} +objj_msgSend(_a4,"trackSegment:",_a6); +} +}),new objj_method(sel_getUid("mouseUp:"),function(_a7,_a8,_a9){ +with(_a7){ +} +}),new objj_method(sel_getUid("trackSegment:"),function(_aa,_ab,_ac){ +with(_aa){ +var _ad=objj_msgSend(_ac,"type"),_ae=objj_msgSend(_aa,"convertPoint:fromView:",objj_msgSend(_ac,"locationInWindow"),nil); +if(_ad==CPLeftMouseUp){ +if(_trackingSegment==-1){ +return; +} +if(_trackingSegment===objj_msgSend(_aa,"testSegment:",_ae)){ +if(_trackingMode==CPSegmentSwitchTrackingSelectAny){ +objj_msgSend(_aa,"setSelected:forSegment:",!objj_msgSend(_aa,"isSelectedForSegment:",_trackingSegment),_trackingSegment); +_selectedSegment=_trackingSegment; +}else{ +objj_msgSend(_aa,"setSelected:forSegment:",YES,_trackingSegment); +} +objj_msgSend(_aa,"sendAction:to:",objj_msgSend(_aa,"action"),objj_msgSend(_aa,"target")); +if(_trackingMode==CPSegmentSwitchTrackingMomentary){ +objj_msgSend(_aa,"setSelected:forSegment:",NO,_trackingSegment); +_selectedSegment=-1; +} +} +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,NO); +_trackingSegment=-1; +return; +} +if(_ad==CPLeftMouseDown){ +var _af=objj_msgSend(_aa,"testSegment:",_ae); +if(_af>-1&&objj_msgSend(_aa,"isEnabledForSegment:",_af)){ +_trackingHighlighted=YES; +_trackingSegment=_af; +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,YES); +} +}else{ +if(_ad==CPLeftMouseDragged){ +if(_trackingSegment==-1){ +return; +} +var _b0=objj_msgSend(_aa,"testSegment:",_ae)===_trackingSegment; +if(_b0!=_trackingHighlighted){ +_trackingHighlighted=_b0; +objj_msgSend(_aa,"drawSegmentBezel:highlight:",_trackingSegment,_trackingHighlighted); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_aa,sel_getUid("trackSegment:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("setFont:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSendSuper({receiver:_b1,super_class:objj_getClass("CPSegmentedControl").super_class},"setFont:",_b3); +objj_msgSend(_b1,"tileWithChangedSegment:",0); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_b4,_b5){ +with(_b4){ +return "segmented-control"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_b6,_b7){ +with(_b6){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[CPCenterTextAlignment,CPCenterVerticalTextAlignment,CPImageLeft,CPScaleNone,{top:(0),right:(0),bottom:(0),left:(0)},{top:(0),right:(0),bottom:(0),left:(0)},objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),1,24],["alignment","vertical-alignment","image-position","image-scaling","bezel-inset","content-inset","left-segment-bezel-color","right-segment-bezel-color","center-segment-bezel-color","divider-bezel-color","divider-thickness","default-height"]); +} +})]); +var _b8="CPSegmentedControlSegmentsKey",_b9="CPSegmentedControlSelectedKey",_ba="CPSegmentedControlSegmentStyleKey",_bb="CPSegmentedControlTrackingModeKey"; +var _1=objj_getClass("CPSegmentedControl"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSegmentedControl\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_bc,_bd,_be){ +with(_bc){ +_bc=objj_msgSendSuper({receiver:_bc,super_class:objj_getClass("CPSegmentedControl").super_class},"initWithCoder:",_be); +if(_bc){ +var _bf=objj_msgSend(_bc,"frame"),_c0=_bf.size.width; +_bf.size.width=0; +objj_msgSend(_bc,"setFrame:",_bf); +_segments=objj_msgSend(_be,"decodeObjectForKey:",_b8); +_segmentStyle=objj_msgSend(_be,"decodeIntForKey:",_ba); +_themeStates=[]; +if(objj_msgSend(_be,"containsValueForKey:",_b9)){ +_selectedSegment=objj_msgSend(_be,"decodeIntForKey:",_b9); +}else{ +_selectedSegment=-1; +} +if(objj_msgSend(_be,"containsValueForKey:",_bb)){ +_trackingMode=objj_msgSend(_be,"decodeIntForKey:",_bb); +}else{ +_trackingMode=CPSegmentSwitchTrackingSelectOne; +} +for(var i=0;i<_segments.length;i++){ +_themeStates[i]=objj_msgSend(_segments[i],"selected")?CPThemeStateSelected:CPThemeStateNormal; +objj_msgSend(_bc,"tileWithChangedSegment:",i); +} +var _c1=MAX(_c0-objj_msgSend(_bc,"frame").size.width,0),_c2=FLOOR(_c1/_segments.length); +for(var i=0;i<_segments.length;i++){ +objj_msgSend(_bc,"setWidth:forSegment:",objj_msgSend(_segments[i],"width")+_c2,i); +} +objj_msgSend(_bc,"tileWithChangedSegment:",0); +} +return _bc; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c3,_c4,_c5){ +with(_c3){ +objj_msgSendSuper({receiver:_c3,super_class:objj_getClass("CPSegmentedControl").super_class},"encodeWithCoder:",_c5); +objj_msgSend(_c5,"encodeObject:forKey:",_segments,_b8); +objj_msgSend(_c5,"encodeInt:forKey:",_selectedSegment,_b9); +objj_msgSend(_c5,"encodeInt:forKey:",_segmentStyle,_ba); +objj_msgSend(_c5,"encodeInt:forKey:",_trackingMode,_bb); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPSegmentItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("image"),new objj_ivar("label"),new objj_ivar("menu"),new objj_ivar("selected"),new objj_ivar("enabled"),new objj_ivar("tag"),new objj_ivar("width"),new objj_ivar("frame")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("image"),function(_c6,_c7){ +with(_c6){ +return image; +} +}),new objj_method(sel_getUid("setImage:"),function(_c8,_c9,_ca){ +with(_c8){ +image=_ca; +} +}),new objj_method(sel_getUid("label"),function(_cb,_cc){ +with(_cb){ +return label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_cd,_ce,_cf){ +with(_cd){ +label=_cf; +} +}),new objj_method(sel_getUid("menu"),function(_d0,_d1){ +with(_d0){ +return menu; +} +}),new objj_method(sel_getUid("setMenu:"),function(_d2,_d3,_d4){ +with(_d2){ +menu=_d4; +} +}),new objj_method(sel_getUid("selected"),function(_d5,_d6){ +with(_d5){ +return selected; +} +}),new objj_method(sel_getUid("setSelected:"),function(_d7,_d8,_d9){ +with(_d7){ +selected=_d9; +} +}),new objj_method(sel_getUid("enabled"),function(_da,_db){ +with(_da){ +return enabled; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_dc,_dd,_de){ +with(_dc){ +enabled=_de; +} +}),new objj_method(sel_getUid("tag"),function(_df,_e0){ +with(_df){ +return tag; +} +}),new objj_method(sel_getUid("setTag:"),function(_e1,_e2,_e3){ +with(_e1){ +tag=_e3; +} +}),new objj_method(sel_getUid("width"),function(_e4,_e5){ +with(_e4){ +return width; +} +}),new objj_method(sel_getUid("setWidth:"),function(_e6,_e7,_e8){ +with(_e6){ +width=_e8; +} +}),new objj_method(sel_getUid("frame"),function(_e9,_ea){ +with(_e9){ +return frame; +} +}),new objj_method(sel_getUid("setFrame:"),function(_eb,_ec,_ed){ +with(_eb){ +frame=_ed; +} +}),new objj_method(sel_getUid("init"),function(_ee,_ef){ +with(_ee){ +if(_ee=objj_msgSendSuper({receiver:_ee,super_class:objj_getClass("_CPSegmentItem").super_class},"init")){ +image=nil; +label=""; +menu=nil; +selected=NO; +enabled=YES; +tag=-1; +width=0; +frame=CGRectMakeZero(); +} +return _ee; +} +})]); +var _f0="CPSegmentItemImageKey",_f1="CPSegmentItemLabelKey",_f2="CPSegmentItemMenuKey",_f3="CPSegmentItemSelectedKey",_f4="CPSegmentItemEnabledKey",_f5="CPSegmentItemTagKey",_f6="CPSegmentItemWidthKey"; +var _1=objj_getClass("_CPSegmentItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPSegmentItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_f7,_f8,_f9){ +with(_f7){ +_f7=objj_msgSendSuper({receiver:_f7,super_class:objj_getClass("_CPSegmentItem").super_class},"init"); +if(_f7){ +image=objj_msgSend(_f9,"decodeObjectForKey:",_f0); +label=objj_msgSend(_f9,"decodeObjectForKey:",_f1); +menu=objj_msgSend(_f9,"decodeObjectForKey:",_f2); +selected=objj_msgSend(_f9,"decodeBoolForKey:",_f3); +enabled=objj_msgSend(_f9,"decodeBoolForKey:",_f4); +tag=objj_msgSend(_f9,"decodeIntForKey:",_f5); +width=objj_msgSend(_f9,"decodeFloatForKey:",_f6); +frame=CGRectMakeZero(); +} +return _f7; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_fa,_fb,_fc){ +with(_fa){ +objj_msgSend(_fc,"encodeObject:forKey:",image,_f0); +objj_msgSend(_fc,"encodeObject:forKey:",label,_f1); +objj_msgSend(_fc,"encodeObject:forKey:",menu,_f2); +objj_msgSend(_fc,"encodeBool:forKey:",selected,_f3); +objj_msgSend(_fc,"encodeBool:forKey:",enabled,_f4); +objj_msgSend(_fc,"encodeInt:forKey:",tag,_f5); +objj_msgSend(_fc,"encodeFloat:forKey:",width,_f6); +} +})]); +p;10;CPShadow.jt;1333;@STATIC;1.0;I;21;Foundation/CPObject.jt;1288; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPShadow"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_offset"),new objj_ivar("_blurRadius"),new objj_ivar("_color"),new objj_ivar("_cssString")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_initWithOffset:blurRadius:color:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPShadow").super_class},"init"); +if(_3){ +_offset=_5; +_blurRadius=_6; +_color=_7; +_cssString=objj_msgSend(_color,"cssString")+" "+Math.round(_5.width)+"px "+Math.round(_5.height)+"px "+Math.round(_blurRadius)+"px"; +} +return _3; +} +}),new objj_method(sel_getUid("shadowOffset"),function(_8,_9){ +with(_8){ +return _offset; +} +}),new objj_method(sel_getUid("shadowBlurRadius"),function(_a,_b){ +with(_a){ +return _blurRadius; +} +}),new objj_method(sel_getUid("shadowColor"),function(_c,_d){ +with(_c){ +return _color; +} +}),new objj_method(sel_getUid("cssString"),function(_e,_f){ +with(_e){ +return _cssString; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("shadowWithOffset:blurRadius:color:"),function(_10,_11,_12,_13,_14){ +with(_10){ +return objj_msgSend(objj_msgSend(CPShadow,"alloc"),"_initWithOffset:blurRadius:color:",_12,_13,_14); +} +})]); +p;14;CPShadowView.jt;6828;@STATIC;1.0;I;21;Foundation/CPBundle.ji;12;CGGeometry.ji;9;CPImage.ji;13;CPImageView.ji;8;CPView.jt;6723; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPView.j",YES); +CPLightShadow=0; +CPHeavyShadow=1; +var _1=nil,_2=nil; +var _3=3,_4=3,_5=3,_6=5,_7=7,_8=7,_9=5,_a=5; +var _b=objj_allocateClassPair(CPView,"CPShadowView"),_c=_b.isa; +class_addIvars(_b,[new objj_ivar("_weight")]); +objj_registerClassPair(_b); +class_addMethods(_b,[new objj_method(sel_getUid("initWithFrame:"),function(_d,_e,_f){ +with(_d){ +_d=objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPShadowView").super_class},"initWithFrame:",_f); +if(_d){ +_weight=CPLightShadow; +objj_msgSend(_d,"setBackgroundColor:",_1); +objj_msgSend(_d,"setHitTests:",NO); +} +return _d; +} +}),new objj_method(sel_getUid("setWeight:"),function(_10,_11,_12){ +with(_10){ +if(_weight==_12){ +return; +} +_weight=_12; +if(_weight==CPLightShadow){ +objj_msgSend(_10,"setBackgroundColor:",_1); +}else{ +objj_msgSend(_10,"setBackgroundColor:",_2); +} +} +}),new objj_method(sel_getUid("leftInset"),function(_13,_14){ +with(_13){ +return _weight==CPLightShadow?_3:_7; +} +}),new objj_method(sel_getUid("rightInset"),function(_15,_16){ +with(_15){ +return _weight==CPLightShadow?_4:_8; +} +}),new objj_method(sel_getUid("topInset"),function(_17,_18){ +with(_17){ +return _weight==CPLightShadow?_5:_9; +} +}),new objj_method(sel_getUid("bottomInset"),function(_19,_1a){ +with(_19){ +return _weight==CPLightShadow?_6:_a; +} +}),new objj_method(sel_getUid("horizontalInset"),function(_1b,_1c){ +with(_1b){ +if(_weight==CPLightShadow){ +return _3+_4; +} +return _7+_8; +} +}),new objj_method(sel_getUid("verticalInset"),function(_1d,_1e){ +with(_1d){ +if(_weight==CPLightShadow){ +return _5+_6; +} +return _9+_a; +} +}),new objj_method(sel_getUid("frameForContentFrame:"),function(_1f,_20,_21){ +with(_1f){ +return objj_msgSend(objj_msgSend(_1f,"class"),"frameForContentFrame:withWeight:",_21,_weight); +} +}),new objj_method(sel_getUid("setFrameForContentFrame:"),function(_22,_23,_24){ +with(_22){ +objj_msgSend(_22,"setFrame:",objj_msgSend(_22,"frameForContentFrame:",_24)); +} +})]); +class_addMethods(_c,[new objj_method(sel_getUid("initialize"),function(_25,_26){ +with(_25){ +if(_25!=objj_msgSend(CPShadowView,"class")){ +return; +} +var _27=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_25,"class")); +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTopLeft.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTop.png"),CGSizeMake(1,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightTopRight.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightLeft.png"),CGSizeMake(9,1)),nil,objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightRight.png"),CGSizeMake(9,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottomLeft.png"),CGSizeMake(9,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottom.png"),CGSizeMake(1,9)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewLightBottomRight.png"),CGSizeMake(9,9))])); +_2=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTopLeft.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTop.png"),CGSizeMake(1,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyTopRight.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyLeft.png"),CGSizeMake(17,1)),nil,objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyRight.png"),CGSizeMake(17,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottomLeft.png"),CGSizeMake(17,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottom.png"),CGSizeMake(1,17)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_27,"pathForResource:","CPShadowView/CPShadowViewHeavyBottomRight.png"),CGSizeMake(17,17))])); +} +}),new objj_method(sel_getUid("shadowViewEnclosingView:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(_28,"shadowViewEnclosingView:withWeight:",_2a,CPLightShadow); +} +}),new objj_method(sel_getUid("shadowViewEnclosingView:withWeight:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +var _2f=objj_msgSend(objj_msgSend(CPShadowView,"alloc"),"initWithFrame:",objj_msgSend(_2d,"frame")); +objj_msgSend(_2f,"setWeight:",_2e); +var _30=objj_msgSend(_2f,"frame").size,_31=_30.width-objj_msgSend(_2f,"leftInset")-objj_msgSend(_2f,"rightInset"),_32=_30.height-objj_msgSend(_2f,"topInset")-objj_msgSend(_2f,"bottomInset"),_33=objj_msgSend(_2d,"superview"); +objj_msgSend(_2f,"setHitTests:",objj_msgSend(_2d,"hitTests")); +objj_msgSend(_2f,"setAutoresizingMask:",objj_msgSend(_2d,"autoresizingMask")); +objj_msgSend(_2d,"removeFromSuperview"); +objj_msgSend(_2f,"addSubview:",_2d); +objj_msgSend(_2d,"setFrame:",CGRectMake(objj_msgSend(_2f,"leftInset"),objj_msgSend(_2f,"topInset"),_31,_32)); +objj_msgSend(_33,"addSubview:",_2f); +return _2f; +} +}),new objj_method(sel_getUid("frameForContentFrame:withWeight:"),function(_34,_35,_36,_37){ +with(_34){ +if(_37==CPLightShadow){ +return CGRectMake((_36.origin.x)-_3,(_36.origin.y)-_5,(_36.size.width)+_3+_4,(_36.size.height)+_5+_6); +}else{ +return CGRectMake((_36.origin.x)-_7,(_36.origin.y)-_9,(_36.size.width)+_7+_8,(_36.size.height)+_9+_a); +} +} +})]); +p;10;CPSlider.jt;11751;@STATIC;1.0;i;11;CPControl.jt;11715; +objj_executeFile("CPControl.j",YES); +CPLinearSlider=0; +CPCircularSlider=1; +var _1=objj_allocateClassPair(CPControl,"CPSlider"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_minValue"),new objj_ivar("_maxValue"),new objj_ivar("_altIncrementValue"),new objj_ivar("_isVertical")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSlider").super_class},"initWithFrame:",_5); +if(_3){ +_minValue=0; +_maxValue=100; +objj_msgSend(_3,"setObjectValue:",50); +objj_msgSend(_3,"setContinuous:",YES); +objj_msgSend(_3,"_recalculateIsVertical"); +} +return _3; +} +}),new objj_method(sel_getUid("setMinValue:"),function(_6,_7,_8){ +with(_6){ +if(_minValue===_8){ +return; +} +_minValue=_8; +var _9=objj_msgSend(_6,"doubleValue"); +if(_9<_minValue){ +objj_msgSend(_6,"setDoubleValue:",_minValue); +} +objj_msgSend(_6,"setNeedsLayout"); +objj_msgSend(_6,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("minValue"),function(_a,_b){ +with(_a){ +return _minValue; +} +}),new objj_method(sel_getUid("setMaxValue:"),function(_c,_d,_e){ +with(_c){ +if(_maxValue===_e){ +return; +} +_maxValue=_e; +var _f=objj_msgSend(_c,"doubleValue"); +if(_f>_maxValue){ +objj_msgSend(_c,"setDoubleValue:",_maxValue); +} +objj_msgSend(_c,"setNeedsLayout"); +objj_msgSend(_c,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("maxValue"),function(_10,_11){ +with(_10){ +return _maxValue; +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_12,_13,_14){ +with(_12){ +objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPSlider").super_class},"setObjectValue:",MIN(MAX(_14,_minValue),_maxValue)); +objj_msgSend(_12,"setNeedsLayout"); +objj_msgSend(_12,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setSliderType:"),function(_15,_16,_17){ +with(_15){ +if(_17===CPCircularSlider){ +objj_msgSend(_15,"setThemeState:",CPThemeStateCircular); +}else{ +objj_msgSend(_15,"unsetThemeState:",CPThemeStateCircular); +} +} +}),new objj_method(sel_getUid("sliderType"),function(_18,_19){ +with(_18){ +return objj_msgSend(_18,"hasThemeState:",CPThemeStateCircular)?CPCircularSlider:CPLinearSlider; +} +}),new objj_method(sel_getUid("trackRectForBounds:"),function(_1a,_1b,_1c){ +with(_1a){ +if(objj_msgSend(_1a,"hasThemeState:",CPThemeStateCircular)){ +var _1d=CGRectCreateCopy(_1c); +_1c.size.width=MIN(_1c.size.width,_1c.size.height); +_1c.size.height=_1c.size.width; +if(_1c.size.width<_1d.size.width){ +_1c.origin.x+=(_1d.size.width-_1c.size.width)/2; +}else{ +_1c.origin.y+=(_1d.size.height-_1c.size.height)/2; +} +}else{ +var _1e=objj_msgSend(_1a,"currentValueForThemeAttribute:","track-width"); +if(_1e<=0){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(objj_msgSend(_1a,"isVertical")){ +_1c.origin.x=((_1c.size.width)-_1e)/2; +_1c.size.width=_1e; +}else{ +_1c.origin.y=((_1c.size.height)-_1e)/2; +_1c.size.height=_1e; +} +} +return _1c; +} +}),new objj_method(sel_getUid("knobRectForBounds:"),function(_1f,_20,_21){ +with(_1f){ +var _22=objj_msgSend(_1f,"currentValueForThemeAttribute:","knob-size"); +if(_22.width<=0||_22.height<=0){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _23={origin:{x:0,y:0},size:{width:_22.width,height:_22.height}},_24=objj_msgSend(_1f,"trackRectForBounds:",_21); +if(!_24||(_24.size.width<=0||_24.size.height<=0)){ +_24=_21; +} +if(objj_msgSend(_1f,"hasThemeState:",CPThemeStateCircular)){ +var _25=3*PI_2-(1-objj_msgSend(_1f,"doubleValue")-_minValue)/(_maxValue-_minValue)*PI2,_26=CGRectGetWidth(_24)/2-8; +_23.origin.x=_26*COS(_25)+CGRectGetMidX(_24)-3; +_23.origin.y=_26*SIN(_25)+CGRectGetMidY(_24)-2; +}else{ +if(objj_msgSend(_1f,"isVertical")){ +_23.origin.x=(_24.origin.x+(_24.size.width)/2)-_22.width/2; +_23.origin.y=((_maxValue-objj_msgSend(_1f,"doubleValue"))/(_maxValue-_minValue))*((_24.size.height)-_22.height); +}else{ +_23.origin.x=((objj_msgSend(_1f,"doubleValue")-_minValue)/(_maxValue-_minValue))*((_24.size.width)-_22.width); +_23.origin.y=(_24.origin.y+(_24.size.height)/2)-_22.height/2; +} +} +return _23; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_27,_28,_29){ +with(_27){ +if(_29==="track-view"){ +return objj_msgSend(_27,"trackRectForBounds:",objj_msgSend(_27,"bounds")); +}else{ +if(_29==="knob-view"){ +return objj_msgSend(_27,"knobRectForBounds:",objj_msgSend(_27,"bounds")); +} +} +return objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPSlider").super_class},"rectForEphemeralSubviewNamed:",_29); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_2c==="track-view"||_2c==="knob-view"){ +var _2d=objj_msgSend(objj_msgSend(CPView,"alloc"),"init"); +objj_msgSend(_2d,"setHitTests:",NO); +return _2d; +} +return objj_msgSendSuper({receiver:_2a,super_class:objj_getClass("CPSlider").super_class},"createEphemeralSubviewNamed:",_2c); +} +}),new objj_method(sel_getUid("setAltIncrementValue:"),function(_2e,_2f,_30){ +with(_2e){ +_altIncrementValue=_30; +} +}),new objj_method(sel_getUid("altIncrementValue"),function(_31,_32){ +with(_31){ +return _altIncrementValue; +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_33,_34,_35){ +with(_33){ +objj_msgSendSuper({receiver:_33,super_class:objj_getClass("CPSlider").super_class},"setFrameSize:",_35); +objj_msgSend(_33,"_recalculateIsVertical"); +} +}),new objj_method(sel_getUid("_recalculateIsVertical"),function(_36,_37){ +with(_36){ +var _38=objj_msgSend(_36,"bounds"),_39=(_38.size.width),_3a=(_38.size.height); +_isVertical=_39<_3a?1:(_39>_3a?0:-1); +if(_isVertical===1){ +objj_msgSend(_36,"setThemeState:",CPThemeStateVertical); +}else{ +if(_isVertical===0){ +objj_msgSend(_36,"unsetThemeState:",CPThemeStateVertical); +} +} +} +}),new objj_method(sel_getUid("isVertical"),function(_3b,_3c){ +with(_3b){ +return _isVertical; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_3d,_3e){ +with(_3d){ +var _3f=objj_msgSend(_3d,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","track-view",CPWindowBelow,"knob-view"); +if(_3f){ +objj_msgSend(_3f,"setBackgroundColor:",objj_msgSend(_3d,"currentValueForThemeAttribute:","track-color")); +} +var _40=objj_msgSend(_3d,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","knob-view",CPWindowAbove,"track-view"); +if(_40){ +objj_msgSend(_40,"setBackgroundColor:",objj_msgSend(_3d,"currentValueForThemeAttribute:","knob-color")); +} +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(_41,_42){ +with(_41){ +return YES; +} +}),new objj_method(sel_getUid("_valueAtPoint:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_43,"bounds"),_47=objj_msgSend(_43,"knobRectForBounds:",_46),_48=objj_msgSend(_43,"trackRectForBounds:",_46); +if(objj_msgSend(_43,"hasThemeState:",CPThemeStateCircular)){ +var _49=(_47.size.width); +_48.origin.x+=_49/2; +_48.size.width-=_49; +var _4a=objj_msgSend(_43,"minValue"),dx=_45.x-(_48.origin.x+(_48.size.width)/2),dy=_45.y-(_48.origin.y+(_48.size.height)/2); +return MAX(0,MIN(1,1-(3*PI_2-ATAN2(dy,dx))%PI2/PI2))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +}else{ +if(objj_msgSend(_43,"isVertical")){ +var _4b=(_47.size.height); +_48.origin.y+=_4b/2; +_48.size.height-=_4b; +var _4a=objj_msgSend(_43,"minValue"); +return MAX(0,MIN(1,((_48.origin.y+_48.size.height)-_45.y)/(_48.size.height)))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +}else{ +var _49=(_47.size.width); +_48.origin.x+=_49/2; +_48.size.width-=_49; +var _4a=objj_msgSend(_43,"minValue"); +return MAX(0,MIN(1,(_45.x-(_48.origin.x))/(_48.size.width)))*(objj_msgSend(_43,"maxValue")-_4a)+_4a; +} +} +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(_4c,_4d,_4e){ +with(_4c){ +var _4f=objj_msgSend(_4c,"bounds"),_50=objj_msgSend(_4c,"knobRectForBounds:",{origin:{x:_4f.origin.x,y:_4f.origin.y},size:{width:_4f.size.width,height:_4f.size.height}}); +if((_4e.x>=(_50.origin.x)&&_4e.y>=(_50.origin.y)&&_4e.x<(_50.origin.x+_50.size.width)&&_4e.y<(_50.origin.y+_50.size.height))){ +_dragOffset={width:(_50.origin.x+(_50.size.width)/2)-_4e.x,height:(_50.origin.y+(_50.size.height)/2)-_4e.y}; +}else{ +var _51=objj_msgSend(_4c,"trackRectForBounds:",_4f); +if(_51&&(_4e.x>=(_51.origin.x)&&_4e.y>=(_51.origin.y)&&_4e.x<(_51.origin.x+_51.size.width)&&_4e.y<(_51.origin.y+_51.size.height))){ +_dragOffset={width:0,height:0}; +objj_msgSend(_4c,"setObjectValue:",objj_msgSend(_4c,"_valueAtPoint:",_4e)); +}else{ +return NO; +} +} +objj_msgSend(_4c,"setHighlighted:",YES); +objj_msgSend(_4c,"setNeedsLayout"); +objj_msgSend(_4c,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(_52,_53,_54,_55){ +with(_52){ +objj_msgSend(_52,"setObjectValue:",objj_msgSend(_52,"_valueAtPoint:",{x:_55.x+_dragOffset.width,y:_55.y+_dragOffset.height})); +return YES; +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(_56,_57,_58,_59,_5a){ +with(_56){ +objj_msgSend(_56,"setHighlighted:",NO); +if(objj_msgSend(_target,"respondsToSelector:",sel_getUid("sliderDidFinish:"))){ +objj_msgSend(_target,"sliderDidFinish:",_56); +} +objj_msgSend(_56,"setNeedsLayout"); +objj_msgSend(_56,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setContinuous:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d){ +_sendActionOn|=CPLeftMouseDraggedMask; +}else{ +_sendActionOn&=~CPLeftMouseDraggedMask; +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_5e,_5f,_60,_61){ +with(_5e){ +var _62=_61.length,_63=objj_msgSend(_61[0],"valueForKeyPath:",_60); +objj_msgSend(_5e,"setObjectValue:",_63); +while(_62-->1){ +if(_63!==(objj_msgSend(_61[_62],"valueForKeyPath:",_60))){ +return objj_msgSend(_5e,"setFloatValue:",1); +} +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_64,_65){ +with(_64){ +return "slider"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_66,_67){ +with(_66){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),{width:0,height:0},0,objj_msgSend(CPNull,"null")],["knob-color","knob-size","track-width","track-color"]); +} +})]); +var _68="CPSliderMinValueKey",_69="CPSliderMaxValueKey",_6a="CPSliderAltIncrValueKey"; +var _1=objj_getClass("CPSlider"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_6b,_6c,_6d){ +with(_6b){ +_minValue=objj_msgSend(_6d,"decodeDoubleForKey:",_68); +_maxValue=objj_msgSend(_6d,"decodeDoubleForKey:",_69); +_6b=objj_msgSendSuper({receiver:_6b,super_class:objj_getClass("CPSlider").super_class},"initWithCoder:",_6d); +if(_6b){ +_altIncrementValue=objj_msgSend(_6d,"decodeDoubleForKey:",_6a); +objj_msgSend(_6b,"setContinuous:",YES); +objj_msgSend(_6b,"_recalculateIsVertical"); +objj_msgSend(_6b,"setNeedsLayout"); +objj_msgSend(_6b,"setNeedsDisplay:",YES); +} +return _6b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6e,_6f,_70){ +with(_6e){ +objj_msgSendSuper({receiver:_6e,super_class:objj_getClass("CPSlider").super_class},"encodeWithCoder:",_70); +objj_msgSend(_70,"encodeDouble:forKey:",_minValue,_68); +objj_msgSend(_70,"encodeDouble:forKey:",_maxValue,_69); +objj_msgSend(_70,"encodeDouble:forKey:",_altIncrementValue,_6a); +} +})]); +var _1=objj_getClass("CPSlider"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("value"),function(_71,_72){ +with(_71){ +CPLog.warn("[CPSlider value] is deprecated, use doubleValue or objectValue instead."); +return objj_msgSend(_71,"doubleValue"); +} +}),new objj_method(sel_getUid("setValue:"),function(_73,_74,_75){ +with(_73){ +CPLog.warn("[CPSlider setValue:] is deprecated, use setDoubleValue: or setObjectValue: instead."); +objj_msgSend(_73,"setObjectValue:",_75); +} +})]); +p;21;CPSliderColorPicker.jt;14189;@STATIC;1.0;i;15;CPColorPicker.jt;14149; +objj_executeFile("CPColorPicker.j",YES); +var _1=objj_allocateClassPair(CPColorPicker,"CPSliderColorPicker"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contentView"),new objj_ivar("_redSlider"),new objj_ivar("_greenSlider"),new objj_ivar("_blueSlider"),new objj_ivar("_hueSlider"),new objj_ivar("_saturationSlider"),new objj_ivar("_brightnessSlider"),new objj_ivar("_rgbLabel"),new objj_ivar("_hsbLabel"),new objj_ivar("_redLabel"),new objj_ivar("_greenLabel"),new objj_ivar("_blueLabel"),new objj_ivar("_hueLabel"),new objj_ivar("_saturationLabel"),new objj_ivar("_brightnessLabel"),new objj_ivar("_hexLabel"),new objj_ivar("_hexValue"),new objj_ivar("_hexValue"),new objj_ivar("_redValue"),new objj_ivar("_greenValue"),new objj_ivar("_blueValue"),new objj_ivar("_hueValue"),new objj_ivar("_saturationValue"),new objj_ivar("_brightnessValue")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithPickerMask:colorPanel:"),function(_3,_4,_5,_6){ +with(_3){ +return objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSliderColorPicker").super_class},"initWithPickerMask:colorPanel:",_5,_6); +} +}),new objj_method(sel_getUid("initView"),function(_7,_8){ +with(_7){ +aFrame=CPRectMake(0,0,CPColorPickerViewWidth,CPColorPickerViewHeight); +_contentView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",aFrame); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_rgbLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,10,100,20)); +objj_msgSend(_rgbLabel,"setStringValue:","Red, Green, Blue"); +objj_msgSend(_rgbLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_redLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,35,15,20)); +objj_msgSend(_redLabel,"setStringValue:","R"); +objj_msgSend(_redLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_redSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,35,aFrame.size.width-70,20)); +objj_msgSend(_redSlider,"setMaxValue:",1); +objj_msgSend(_redSlider,"setMinValue:",0); +objj_msgSend(_redSlider,"setTarget:",_7); +objj_msgSend(_redSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_redSlider,"setAutoresizingMask:",CPViewWidthSizable); +_redValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,30,45,29)); +objj_msgSend(_redValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_redValue,"setEditable:",YES); +objj_msgSend(_redValue,"setBezeled:",YES); +objj_msgSend(_redValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_redValue); +_greenLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,58,15,20)); +objj_msgSend(_greenLabel,"setStringValue:","G"); +objj_msgSend(_greenLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_greenSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,58,aFrame.size.width-70,20)); +objj_msgSend(_greenSlider,"setMaxValue:",1); +objj_msgSend(_greenSlider,"setMinValue:",0); +objj_msgSend(_greenSlider,"setTarget:",_7); +objj_msgSend(_greenSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_greenSlider,"setAutoresizingMask:",CPViewWidthSizable); +_greenValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,53,45,29)); +objj_msgSend(_greenValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_greenValue,"setEditable:",YES); +objj_msgSend(_greenValue,"setBezeled:",YES); +objj_msgSend(_greenValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_greenValue); +_blueLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,81,15,20)); +objj_msgSend(_blueLabel,"setStringValue:","B"); +objj_msgSend(_blueLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_blueSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,81,aFrame.size.width-70,20)); +objj_msgSend(_blueSlider,"setMaxValue:",1); +objj_msgSend(_blueSlider,"setMinValue:",0); +objj_msgSend(_blueSlider,"setTarget:",_7); +objj_msgSend(_blueSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_blueSlider,"setAutoresizingMask:",CPViewWidthSizable); +_blueValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,76,45,29)); +objj_msgSend(_blueValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_blueValue,"setEditable:",YES); +objj_msgSend(_blueValue,"setBezeled:",YES); +objj_msgSend(_blueValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_blueValue); +_hsbLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,120,190,20)); +objj_msgSend(_hsbLabel,"setStringValue:","Hue, Saturation, Brightness"); +objj_msgSend(_hsbLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hueLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,145,15,20)); +objj_msgSend(_hueLabel,"setStringValue:","H"); +objj_msgSend(_hueLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hueSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,145,aFrame.size.width-70,20)); +objj_msgSend(_hueSlider,"setMaxValue:",359); +objj_msgSend(_hueSlider,"setMinValue:",0); +objj_msgSend(_hueSlider,"setTarget:",_7); +objj_msgSend(_hueSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_hueSlider,"setAutoresizingMask:",CPViewWidthSizable); +_hueValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,140,45,29)); +objj_msgSend(_hueValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_hueValue,"setEditable:",YES); +objj_msgSend(_hueValue,"setBezeled:",YES); +objj_msgSend(_hueValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_hueValue); +_saturationLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,168,15,20)); +objj_msgSend(_saturationLabel,"setStringValue:","S"); +objj_msgSend(_saturationLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_saturationSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,168,aFrame.size.width-70,20)); +objj_msgSend(_saturationSlider,"setMaxValue:",100); +objj_msgSend(_saturationSlider,"setMinValue:",0); +objj_msgSend(_saturationSlider,"setTarget:",_7); +objj_msgSend(_saturationSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_saturationSlider,"setAutoresizingMask:",CPViewWidthSizable); +_saturationValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,163,45,29)); +objj_msgSend(_saturationValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_saturationValue,"setEditable:",YES); +objj_msgSend(_saturationValue,"setBezeled:",YES); +objj_msgSend(_saturationValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_saturationValue); +_brightnessLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,191,15,20)); +objj_msgSend(_brightnessLabel,"setStringValue:","B"); +objj_msgSend(_brightnessLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_brightnessSlider=objj_msgSend(objj_msgSend(CPSlider,"alloc"),"initWithFrame:",CPRectMake(15,191,aFrame.size.width-70,20)); +objj_msgSend(_brightnessSlider,"setMaxValue:",100); +objj_msgSend(_brightnessSlider,"setMinValue:",0); +objj_msgSend(_brightnessSlider,"setTarget:",_7); +objj_msgSend(_brightnessSlider,"setAction:",sel_getUid("sliderChanged:")); +objj_msgSend(_brightnessSlider,"setAutoresizingMask:",CPViewWidthSizable); +_brightnessValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(aFrame.size.width-45,186,45,29)); +objj_msgSend(_brightnessValue,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_brightnessValue,"setEditable:",YES); +objj_msgSend(_brightnessValue,"setBezeled:",YES); +objj_msgSend(_brightnessValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_brightnessValue); +_hexLabel=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CPRectMake(0,230,30,20)); +objj_msgSend(_hexLabel,"setStringValue:","Hex"); +objj_msgSend(_hexLabel,"setTextColor:",objj_msgSend(CPColor,"blackColor")); +_hexValue=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(32,225,80,29)); +objj_msgSend(_hexValue,"setEditable:",YES); +objj_msgSend(_hexValue,"setBezeled:",YES); +objj_msgSend(_hexValue,"setDelegate:",_7); +objj_msgSend(_contentView,"addSubview:",_hexValue); +objj_msgSend(_contentView,"addSubview:",_rgbLabel); +objj_msgSend(_contentView,"addSubview:",_redLabel); +objj_msgSend(_contentView,"addSubview:",_greenLabel); +objj_msgSend(_contentView,"addSubview:",_blueLabel); +objj_msgSend(_contentView,"addSubview:",_redSlider); +objj_msgSend(_contentView,"addSubview:",_greenSlider); +objj_msgSend(_contentView,"addSubview:",_blueSlider); +objj_msgSend(_contentView,"addSubview:",_hsbLabel); +objj_msgSend(_contentView,"addSubview:",_hueLabel); +objj_msgSend(_contentView,"addSubview:",_saturationLabel); +objj_msgSend(_contentView,"addSubview:",_brightnessLabel); +objj_msgSend(_contentView,"addSubview:",_hueSlider); +objj_msgSend(_contentView,"addSubview:",_saturationSlider); +objj_msgSend(_contentView,"addSubview:",_brightnessSlider); +objj_msgSend(_contentView,"addSubview:",_hexLabel); +} +}),new objj_method(sel_getUid("provideNewView:"),function(_9,_a,_b){ +with(_9){ +if(_b){ +objj_msgSend(_9,"initView"); +} +return _contentView; +} +}),new objj_method(sel_getUid("currentMode"),function(_c,_d){ +with(_c){ +return CPSliderColorPickerMode; +} +}),new objj_method(sel_getUid("supportsMode:"),function(_e,_f,_10){ +with(_e){ +return (_10==CPSliderColorPickerMode)?YES:NO; +} +}),new objj_method(sel_getUid("sliderChanged:"),function(_11,_12,_13){ +with(_11){ +var _14,_15=objj_msgSend(_11,"colorPanel"),_16=objj_msgSend(_15,"opacity"); +switch(_13){ +case _hueSlider: +case _saturationSlider: +case _brightnessSlider: +_14=objj_msgSend(CPColor,"colorWithHue:saturation:brightness:alpha:",objj_msgSend(_hueSlider,"floatValue"),objj_msgSend(_saturationSlider,"floatValue"),objj_msgSend(_brightnessSlider,"floatValue"),_16); +objj_msgSend(_11,"updateRGBSliders:",_14); +break; +case _redSlider: +case _greenSlider: +case _blueSlider: +_14=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",objj_msgSend(_redSlider,"floatValue"),objj_msgSend(_greenSlider,"floatValue"),objj_msgSend(_blueSlider,"floatValue"),_16); +objj_msgSend(_11,"updateHSBSliders:",_14); +break; +} +objj_msgSend(_11,"updateLabels"); +objj_msgSend(_11,"updateHex:",_14); +objj_msgSend(_15,"setColor:",_14); +} +}),new objj_method(sel_getUid("setColor:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"updateRGBSliders:",_19); +objj_msgSend(_17,"updateHSBSliders:",_19); +objj_msgSend(_17,"updateHex:",_19); +objj_msgSend(_17,"updateLabels"); +} +}),new objj_method(sel_getUid("updateHSBSliders:"),function(_1a,_1b,_1c){ +with(_1a){ +var hsb=objj_msgSend(_1c,"hsbComponents"); +objj_msgSend(_hueSlider,"setFloatValue:",hsb[0]); +objj_msgSend(_saturationSlider,"setFloatValue:",hsb[1]); +objj_msgSend(_brightnessSlider,"setFloatValue:",hsb[2]); +} +}),new objj_method(sel_getUid("updateHex:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_hexValue,"setStringValue:",objj_msgSend(_1f,"hexString")); +} +}),new objj_method(sel_getUid("updateRGBSliders:"),function(_20,_21,_22){ +with(_20){ +var rgb=objj_msgSend(_22,"components"); +objj_msgSend(_redSlider,"setFloatValue:",rgb[0]); +objj_msgSend(_greenSlider,"setFloatValue:",rgb[1]); +objj_msgSend(_blueSlider,"setFloatValue:",rgb[2]); +} +}),new objj_method(sel_getUid("updateLabels"),function(_23,_24){ +with(_23){ +objj_msgSend(_hueValue,"setStringValue:",ROUND(objj_msgSend(_hueSlider,"floatValue"))); +objj_msgSend(_saturationValue,"setStringValue:",ROUND(objj_msgSend(_saturationSlider,"floatValue"))); +objj_msgSend(_brightnessValue,"setStringValue:",ROUND(objj_msgSend(_brightnessSlider,"floatValue"))); +objj_msgSend(_redValue,"setStringValue:",ROUND(objj_msgSend(_redSlider,"floatValue")*255)); +objj_msgSend(_greenValue,"setStringValue:",ROUND(objj_msgSend(_greenSlider,"floatValue")*255)); +objj_msgSend(_blueValue,"setStringValue:",ROUND(objj_msgSend(_blueSlider,"floatValue")*255)); +} +}),new objj_method(sel_getUid("provideNewButtonImage"),function(_25,_26){ +with(_25){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","slider_button.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("provideNewAlternateButtonImage"),function(_27,_28){ +with(_27){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",CPColorPicker),"pathForResource:","slider_button_h.png"),CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("controlTextDidEndEditing:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=objj_msgSend(_2b,"object"),_2d=objj_msgSend(objj_msgSend(_2c,"stringValue"),"stringByTrimmingWhitespace"); +if(_2c===_hexValue){ +var _2e=objj_msgSend(CPColor,"colorWithHexString:",_2d); +if(_2e){ +objj_msgSend(_29,"setColor:",_2e); +objj_msgSend(objj_msgSend(_29,"colorPanel"),"setColor:",_2e); +} +}else{ +switch(_2c){ +case _redValue: +objj_msgSend(_redSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_redSlider); +break; +case _greenValue: +objj_msgSend(_greenSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_greenSlider); +break; +case _blueValue: +objj_msgSend(_blueSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),255)/255,0)); +objj_msgSend(_29,"sliderChanged:",_blueSlider); +break; +case _hueValue: +objj_msgSend(_hueSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),360),0)); +objj_msgSend(_29,"sliderChanged:",_hueSlider); +break; +case _saturationValue: +objj_msgSend(_saturationSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),100),0)); +objj_msgSend(_29,"sliderChanged:",_saturationSlider); +break; +case _brightnessValue: +objj_msgSend(_brightnessSlider,"setFloatValue:",MAX(MIN(ROUND(_2d),100),0)); +objj_msgSend(_29,"sliderChanged:",_brightnessSlider); +break; +} +} +} +})]); +p;13;CPSplitView.jt;21099;@STATIC;1.0;i;13;CPButtonBar.ji;9;CPImage.ji;8;CPView.jt;21036; +objj_executeFile("CPButtonBar.j",YES); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPView.j",YES); +CPSplitViewDidResizeSubviewsNotification="CPSplitViewDidResizeSubviewsNotification"; +CPSplitViewWillResizeSubviewsNotification="CPSplitViewWillResizeSubviewsNotification"; +var _1=nil,_2=nil; +var _3=objj_allocateClassPair(CPView,"CPSplitView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_delegate"),new objj_ivar("_isVertical"),new objj_ivar("_isPaneSplitter"),new objj_ivar("_currentDivider"),new objj_ivar("_initialOffset"),new objj_ivar("_preCollapsePosition"),new objj_ivar("_originComponent"),new objj_ivar("_sizeComponent"),new objj_ivar("_DOMDividerElements"),new objj_ivar("_dividerImagePath"),new objj_ivar("_drawingDivider"),new objj_ivar("_needsResizeSubviews"),new objj_ivar("_buttonBars")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("initWithFrame:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPSplitView").super_class},"initWithFrame:",_7)){ +_currentDivider=CPNotFound; +_DOMDividerElements=[]; +_buttonBars=[]; +objj_msgSend(_5,"_setVertical:",YES); +} +return _5; +} +}),new objj_method(sel_getUid("dividerThickness"),function(_8,_9){ +with(_8){ +return objj_msgSend(_8,"currentValueForThemeAttribute:",objj_msgSend(_8,"isPaneSplitter")?"pane-divider-thickness":"divider-thickness"); +} +}),new objj_method(sel_getUid("isVertical"),function(_a,_b){ +with(_a){ +return _isVertical; +} +}),new objj_method(sel_getUid("setVertical:"),function(_c,_d,_e){ +with(_c){ +if(!objj_msgSend(_c,"_setVertical:",_e)){ +return; +} +var _f=objj_msgSend(_c,"frame"),_10=objj_msgSend(_c,"dividerThickness"); +objj_msgSend(_c,"_postNotificationWillResize"); +var _11=ROUND((_f.size[_sizeComponent]-_10*(_subviews.length-1))/_subviews.length),_12=0,_13=_subviews.length; +if(objj_msgSend(_c,"isVertical")){ +for(;_12<_13;++_12){ +objj_msgSend(_subviews[_12],"setFrame:",CGRectMake(ROUND((_11+_10)*_12),0,_11,_f.size.height)); +} +}else{ +for(;_12<_13;++_12){ +objj_msgSend(_subviews[_12],"setFrame:",CGRectMake(0,ROUND((_11+_10)*_12),_f.size.width,_11)); +} +} +objj_msgSend(_c,"setNeedsDisplay:",YES); +objj_msgSend(_c,"_postNotificationDidResize"); +} +}),new objj_method(sel_getUid("_setVertical:"),function(_14,_15,_16){ +with(_14){ +var _17=(_isVertical!=_16); +_isVertical=_16; +_originComponent=objj_msgSend(_14,"isVertical")?"x":"y"; +_sizeComponent=objj_msgSend(_14,"isVertical")?"width":"height"; +_dividerImagePath=objj_msgSend(_14,"isVertical")?objj_msgSend(_2,"filename"):objj_msgSend(_1,"filename"); +return _17; +} +}),new objj_method(sel_getUid("isPaneSplitter"),function(_18,_19){ +with(_18){ +return _isPaneSplitter; +} +}),new objj_method(sel_getUid("setIsPaneSplitter:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_isPaneSplitter==_1c){ +return; +} +_isPaneSplitter=_1c; +if(_DOMDividerElements[_drawingDivider]){ +objj_msgSend(_1a,"_setupDOMDivider"); +} +_needsResizeSubviews=YES; +objj_msgSend(_1a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_1d,_1e,_1f){ +with(_1d){ +_needsResizeSubviews=YES; +} +}),new objj_method(sel_getUid("isSubviewCollapsed:"),function(_20,_21,_22){ +with(_20){ +return objj_msgSend(_22,"frame").size[_sizeComponent]<1?YES:NO; +} +}),new objj_method(sel_getUid("rectOfDividerAtIndex:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_subviews[_25],"frame"),_27=CGRectMakeZero(); +_27.size=objj_msgSend(_23,"frame").size; +_27.size[_sizeComponent]=objj_msgSend(_23,"dividerThickness"); +_27.origin[_originComponent]=_26.origin[_originComponent]+_26.size[_sizeComponent]; +return _27; +} +}),new objj_method(sel_getUid("effectiveRectOfDividerAtIndex:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(_28,"rectOfDividerAtIndex:",_2a); +var _2c=2; +_2b.size[_sizeComponent]+=_2c*2; +_2b.origin[_originComponent]-=_2c; +return _2b; +} +}),new objj_method(sel_getUid("drawRect:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_subviews,"count")-1; +while((_30--)>0){ +_drawingDivider=_30; +objj_msgSend(_2d,"drawDividerInRect:",objj_msgSend(_2d,"rectOfDividerAtIndex:",_30)); +} +} +}),new objj_method(sel_getUid("drawDividerInRect:"),function(_31,_32,_33){ +with(_31){ +} +}),new objj_method(sel_getUid("_setupDOMDivider"),function(_34,_35){ +with(_34){ +if(_isPaneSplitter){ +_DOMDividerElements[_drawingDivider].style.backgroundColor="#A5A5A5"; +_DOMDividerElements[_drawingDivider].style.backgroundImage=""; +}else{ +_DOMDividerElements[_drawingDivider].style.backgroundColor=""; +_DOMDividerElements[_drawingDivider].style.backgroundImage="url('"+_dividerImagePath+"')"; +} +} +}),new objj_method(sel_getUid("viewWillDraw"),function(_36,_37){ +with(_36){ +objj_msgSend(_36,"_adjustSubviewsWithCalculatedSize"); +} +}),new objj_method(sel_getUid("_adjustSubviewsWithCalculatedSize"),function(_38,_39){ +with(_38){ +if(!_needsResizeSubviews){ +return; +} +_needsResizeSubviews=NO; +var _3a=objj_msgSend(_38,"subviews"),_3b=_3a.length,_3c=CGSizeMakeZero(); +if(objj_msgSend(_38,"isVertical")){ +_3c.width+=objj_msgSend(_38,"dividerThickness")*(_3b-1); +_3c.height=CGRectGetHeight(objj_msgSend(_38,"frame")); +}else{ +_3c.width=CGRectGetWidth(objj_msgSend(_38,"frame")); +_3c.height+=objj_msgSend(_38,"dividerThickness")*(_3b-1); +} +while(_3b--){ +_3c[_sizeComponent]+=objj_msgSend(_3a[_3b],"frame").size[_sizeComponent]; +} +objj_msgSend(_38,"resizeSubviewsWithOldSize:",_3c); +} +}),new objj_method(sel_getUid("cursorAtPoint:hitDividerAtIndex:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +var _41=objj_msgSend(_subviews[_40],"frame"),_42=_41.origin[_originComponent]+_41.size[_sizeComponent],_43=objj_msgSend(_3d,"effectiveRectOfDividerAtIndex:",_40),_44=_buttonBars[_40],_45=null,_46=null; +if(_44!=null){ +_45=objj_msgSend(_44,"resizeControlFrame"); +_45.origin=objj_msgSend(_3d,"convertPoint:fromView:",_45.origin,_44); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:"))){ +_43=objj_msgSend(_delegate,"splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:",_3d,_43,_43,_40); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:additionalEffectiveRectOfDividerAtIndex:"))){ +_46=objj_msgSend(_delegate,"splitView:additionalEffectiveRectOfDividerAtIndex:",_3d,_40); +} +return CGRectContainsPoint(_43,_3f)||(_46&&CGRectContainsPoint(_46,_3f))||(_45&&CGRectContainsPoint(_45,_3f)); +} +}),new objj_method(sel_getUid("hitTest:"),function(_47,_48,_49){ +with(_47){ +if(objj_msgSend(_47,"isHidden")||!objj_msgSend(_47,"hitTests")||!CGRectContainsPoint(objj_msgSend(_47,"frame"),_49)){ +return nil; +} +var _4a=objj_msgSend(_47,"convertPoint:fromView:",_49,objj_msgSend(_47,"superview")); +var _4b=objj_msgSend(_subviews,"count")-1; +for(var i=0;i<_4b;i++){ +if(objj_msgSend(_47,"cursorAtPoint:hitDividerAtIndex:",_4a,i)){ +return _47; +} +} +return objj_msgSendSuper({receiver:_47,super_class:objj_getClass("CPSplitView").super_class},"hitTest:",_49); +} +}),new objj_method(sel_getUid("trackDivider:"),function(_4c,_4d,_4e){ +with(_4c){ +var _4f=objj_msgSend(_4e,"type"); +if(_4f==CPLeftMouseUp){ +if(_currentDivider!=CPNotFound){ +_currentDivider=CPNotFound; +objj_msgSend(_4c,"_updateResizeCursor:",_4e); +objj_msgSend(_4c,"_postNotificationDidResize"); +} +return; +} +if(_4f==CPLeftMouseDown){ +var _50=objj_msgSend(_4c,"convertPoint:fromView:",objj_msgSend(_4e,"locationInWindow"),nil); +_currentDivider=CPNotFound; +var _51=objj_msgSend(_subviews,"count")-1; +for(var i=0;i<_51;i++){ +var _52=objj_msgSend(_subviews[i],"frame"),_53=_52.origin[_originComponent]+_52.size[_sizeComponent]; +if(objj_msgSend(_4c,"cursorAtPoint:hitDividerAtIndex:",_50,i)){ +if(objj_msgSend(_4e,"clickCount")==2&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:"))){ +var _54=objj_msgSend(_4c,"minPossiblePositionOfDividerAtIndex:",i),_55=objj_msgSend(_4c,"maxPossiblePositionOfDividerAtIndex:",i); +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_4c,_subviews[i])&&objj_msgSend(_delegate,"splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:",_4c,_subviews[i],i)){ +if(objj_msgSend(_4c,"isSubviewCollapsed:",_subviews[i])){ +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",_preCollapsePosition?_preCollapsePosition:(_54+(_55-_54)/2),i); +}else{ +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",_54,i); +} +}else{ +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_4c,_subviews[i+1])&&objj_msgSend(_delegate,"splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:",_4c,_subviews[i+1],i)){ +if(objj_msgSend(_4c,"isSubviewCollapsed:",_subviews[i+1])){ +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",_preCollapsePosition?_preCollapsePosition:(_54+(_55-_54)/2),i); +}else{ +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",_55,i); +} +} +} +}else{ +_currentDivider=i; +_initialOffset=_53-_50[_originComponent]; +objj_msgSend(_4c,"_postNotificationWillResize"); +} +} +} +if(_currentDivider===CPNotFound){ +return; +} +}else{ +if(_4f==CPLeftMouseDragged&&_currentDivider!=CPNotFound){ +var _50=objj_msgSend(_4c,"convertPoint:fromView:",objj_msgSend(_4e,"locationInWindow"),nil); +objj_msgSend(_4c,"setPosition:ofDividerAtIndex:",(_50[_originComponent]+_initialOffset),_currentDivider); +objj_msgSend(_4c,"_updateResizeCursor:",_4e); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_4c,sel_getUid("trackDivider:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_56,_57,_58){ +with(_56){ +objj_msgSend(_56,"trackDivider:",_58); +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_59,_5a){ +with(_59){ +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_currentDivider==CPNotFound){ +objj_msgSend(_5b,"_updateResizeCursor:",_5d); +} +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_5e,_5f,_60){ +with(_5e){ +if(_currentDivider==CPNotFound){ +objj_msgSend(_5e,"_updateResizeCursor:",_60); +} +} +}),new objj_method(sel_getUid("mouseExited:"),function(_61,_62,_63){ +with(_61){ +if(_currentDivider==CPNotFound){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +} +}),new objj_method(sel_getUid("_updateResizeCursor:"),function(_64,_65,_66){ +with(_64){ +var _67=objj_msgSend(_64,"convertPoint:fromView:",objj_msgSend(_66,"locationInWindow"),nil); +if(objj_msgSend(_66,"type")===CPLeftMouseUp&&!objj_msgSend(objj_msgSend(_64,"window"),"acceptsMouseMovedEvents")){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +return; +} +for(var i=0,_68=objj_msgSend(_subviews,"count")-1;i<_68;i++){ +if(_currentDivider===i||(_currentDivider==CPNotFound&&objj_msgSend(_64,"cursorAtPoint:hitDividerAtIndex:",_67,i))){ +var _69=objj_msgSend(_subviews[i],"frame"),_6a=_69.size[_sizeComponent],_6b=_69.origin[_originComponent]+_6a,_6c=objj_msgSend(_64,"_realPositionForPosition:ofDividerAtIndex:",_6b-1,i)<_6b,_6d=objj_msgSend(_64,"_realPositionForPosition:ofDividerAtIndex:",_6b+1,i)>_6b,_6e=objj_msgSend(CPCursor,"arrowCursor"); +if(_6a===0){ +_6d=YES; +}else{ +if(!_6c&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))&&objj_msgSend(_delegate,"splitView:canCollapseSubview:",_64,_subviews[i])){ +_6c=YES; +} +} +if(_isVertical&&_6c&&_6d){ +_6e=objj_msgSend(CPCursor,"resizeLeftRightCursor"); +}else{ +if(_isVertical&&_6c){ +_6e=objj_msgSend(CPCursor,"resizeLeftCursor"); +}else{ +if(_isVertical&&_6d){ +_6e=objj_msgSend(CPCursor,"resizeRightCursor"); +}else{ +if(_6c&&_6d){ +_6e=objj_msgSend(CPCursor,"resizeUpDownCursor"); +}else{ +if(_6c){ +_6e=objj_msgSend(CPCursor,"resizeUpCursor"); +}else{ +if(_6d){ +_6e=objj_msgSend(CPCursor,"resizeDownCursor"); +} +} +} +} +} +} +objj_msgSend(_6e,"set"); +return; +} +} +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +}),new objj_method(sel_getUid("maxPossiblePositionOfDividerAtIndex:"),function(_6f,_70,_71){ +with(_6f){ +var _72=objj_msgSend(_subviews[_71+1],"frame"); +if(_71+1<objj_msgSend(_subviews,"count")-1){ +return _72.origin[_originComponent]+_72.size[_sizeComponent]-objj_msgSend(_6f,"dividerThickness"); +}else{ +return objj_msgSend(_6f,"frame").size[_sizeComponent]-objj_msgSend(_6f,"dividerThickness"); +} +} +}),new objj_method(sel_getUid("minPossiblePositionOfDividerAtIndex:"),function(_73,_74,_75){ +with(_73){ +if(_75>0){ +var _76=objj_msgSend(_subviews[_75-1],"frame"); +return _76.origin[_originComponent]+_76.size[_sizeComponent]+objj_msgSend(_73,"dividerThickness"); +}else{ +return 0; +} +} +}),new objj_method(sel_getUid("_realPositionForPosition:ofDividerAtIndex:"),function(_77,_78,_79,_7a){ +with(_77){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainSplitPosition:ofSubviewAt:"))){ +_79=objj_msgSend(_delegate,"splitView:constrainSplitPosition:ofSubviewAt:",_77,_79,_7a); +} +var _7b=objj_msgSend(_77,"maxPossiblePositionOfDividerAtIndex:",_7a),_7c=objj_msgSend(_77,"minPossiblePositionOfDividerAtIndex:",_7a),_7d=_7b,_7e=_7c; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainMinCoordinate:ofSubviewAt:"))){ +_7e=objj_msgSend(_delegate,"splitView:constrainMinCoordinate:ofSubviewAt:",_77,_7c,_7a); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:constrainMaxCoordinate:ofSubviewAt:"))){ +_7d=objj_msgSend(_delegate,"splitView:constrainMaxCoordinate:ofSubviewAt:",_77,_7b,_7a); +} +var _7f=_subviews[_7a],_80=MAX(MIN(_79,_7d),_7e); +if(_79<_7c+(_7e-_7c)/2){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:canCollapseSubview:"))){ +if(objj_msgSend(_delegate,"splitView:canCollapseSubview:",_77,_7f)){ +_80=_7c; +} +} +} +return _80; +} +}),new objj_method(sel_getUid("setPosition:ofDividerAtIndex:"),function(_81,_82,_83,_84){ +with(_81){ +objj_msgSend(_81,"_adjustSubviewsWithCalculatedSize"); +var _85=objj_msgSend(_81,"_realPositionForPosition:ofDividerAtIndex:",_83,_84); +var _86=_subviews[_84],_87=objj_msgSend(_86,"frame"),_88=_subviews[_84+1],_89=objj_msgSend(_88,"frame"); +_preCollapsePosition=0; +var _8a=_87.size[_sizeComponent]; +_87.size[_sizeComponent]=_85-_87.origin[_originComponent]; +if(_8a!==0&&_87.size[_sizeComponent]===0){ +_preCollapsePosition=_8a; +} +objj_msgSend(_subviews[_84],"setFrame:",_87); +_8a=_89.size[_sizeComponent]; +_89.size[_sizeComponent]=_89.origin[_originComponent]+_89.size[_sizeComponent]-_85-objj_msgSend(_81,"dividerThickness"); +if(_8a!==0&&_89.size[_sizeComponent]===0){ +_preCollapsePosition=_8a; +} +_89.origin[_originComponent]=_85+objj_msgSend(_81,"dividerThickness"); +objj_msgSend(_subviews[_84+1],"setFrame:",_89); +objj_msgSend(_81,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_8b,_8c,_8d){ +with(_8b){ +objj_msgSend(_8b,"_adjustSubviewsWithCalculatedSize"); +objj_msgSendSuper({receiver:_8b,super_class:objj_getClass("CPSplitView").super_class},"setFrameSize:",_8d); +objj_msgSend(_8b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_8e,_8f,_90){ +with(_8e){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitView:resizeSubviewsWithOldSize:"))){ +objj_msgSend(_delegate,"splitView:resizeSubviewsWithOldSize:",_8e,_90); +return; +} +objj_msgSend(_8e,"_postNotificationWillResize"); +var _91=0,_92=objj_msgSend(_subviews,"count"),_93=objj_msgSend(_8e,"bounds"),_94=objj_msgSend(_8e,"dividerThickness"),_95=_92-1,_96=0,_97=0,_98=-1,_99=0,_9a=objj_msgSend(_8e,"isVertical"); +for(_91=0;_91<_92;++_91){ +var _9b=_subviews[_91],_9c=_9a?objj_msgSend(_9b,"autoresizingMask")&CPViewWidthSizable:objj_msgSend(_9b,"autoresizingMask")&CPViewHeightSizable; +if(_9c){ +_96+=objj_msgSend(_9b,"frame").size[_sizeComponent]; +_98=_91; +_99++; +} +} +if(_99===_92){ +_96=0; +} +var _97=_96?_93.size[_sizeComponent]-_96:0,_9d=_93.size[_sizeComponent]-_90[_sizeComponent],_9e=(_90[_sizeComponent]-_95*_94-_97),_9f=_9e<=0?0:(_93.size[_sizeComponent]-_95*_94-_97)/_9e; +for(_91=0;_91<_92;++_91){ +var _9b=_subviews[_91],_a0=CGRectMakeCopy(_93),_9c=_9a?objj_msgSend(_9b,"autoresizingMask")&CPViewWidthSizable:objj_msgSend(_9b,"autoresizingMask")&CPViewHeightSizable; +if(_91+1==_92){ +_a0.size[_sizeComponent]=_93.size[_sizeComponent]-_a0.origin[_originComponent]; +}else{ +if(_96&&_9c&&_98===_91){ +_a0.size[_sizeComponent]=MAX(0,ROUND(objj_msgSend(_9b,"frame").size[_sizeComponent]+_9d)); +}else{ +if(_9c||!_96){ +_a0.size[_sizeComponent]=MAX(0,ROUND(_9f*objj_msgSend(_9b,"frame").size[_sizeComponent])); +_9d-=(_a0.size[_sizeComponent]-objj_msgSend(_9b,"frame").size[_sizeComponent]); +}else{ +if(_96&&!_9c){ +_a0.size[_sizeComponent]=objj_msgSend(_9b,"frame").size[_sizeComponent]; +} +} +} +} +_93.origin[_originComponent]+=_a0.size[_sizeComponent]+_94; +objj_msgSend(_9b,"setFrame:",_a0); +} +objj_msgSend(_8e,"_postNotificationDidResize"); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_a1,_a2,_a3){ +with(_a1){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewDidResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_delegate,CPSplitViewDidResizeSubviewsNotification,_a1); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewWillResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"removeObserver:name:object:",_delegate,CPSplitViewWillResizeSubviewsNotification,_a1); +} +_delegate=_a3; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewDidResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_delegate,sel_getUid("splitViewDidResizeSubviews:"),CPSplitViewDidResizeSubviewsNotification,_a1); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("splitViewWillResizeSubviews:"))){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"addObserver:selector:name:object:",_delegate,sel_getUid("splitViewWillResizeSubviews:"),CPSplitViewWillResizeSubviewsNotification,_a1); +} +} +}),new objj_method(sel_getUid("setButtonBar:forDividerAtIndex:"),function(_a4,_a5,_a6,_a7){ +with(_a4){ +if(!_a6){ +_buttonBars[_a7]=nil; +return; +} +var _a8=objj_msgSend(_a6,"superview"),_a9=_a6; +while(_a8&&_a8!==_a4){ +_a9=_a8; +_a8=objj_msgSend(_a8,"superview"); +} +if(_a8!==_a4){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"CPSplitView button bar must be a subview of the split view."); +} +var _aa=objj_msgSend(objj_msgSend(_a4,"subviews"),"indexOfObject:",_a9); +objj_msgSend(_a6,"setHasResizeControl:",YES); +objj_msgSend(_a6,"setResizeControlIsLeftAligned:",_a7<_aa); +_buttonBars[_a7]=_a6; +} +}),new objj_method(sel_getUid("_postNotificationWillResize"),function(_ab,_ac){ +with(_ab){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPSplitViewWillResizeSubviewsNotification,_ab); +} +}),new objj_method(sel_getUid("_postNotificationDidResize"),function(_ad,_ae){ +with(_ad){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPSplitViewDidResizeSubviewsNotification,_ad); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("themeClass"),function(_af,_b0){ +with(_af){ +return "splitview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_b1,_b2){ +with(_b1){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[10,1],["divider-thickness","pane-divider-thickness"]); +} +}),new objj_method(sel_getUid("initialize"),function(_b3,_b4){ +with(_b3){ +if(_b3!=objj_msgSend(CPSplitView,"class")){ +return; +} +var _b5=objj_msgSend(CPBundle,"bundleForClass:",_b3); +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b5,"pathForResource:","CPSplitView/CPSplitViewHorizontal.png"),CPSizeMake(5,10)); +_2=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_b5,"pathForResource:","CPSplitView/CPSplitViewVertical.png"),CPSizeMake(10,5)); +} +})]); +var _b6="CPSplitViewDelegateKey",_b7="CPSplitViewIsVerticalKey",_b8="CPSplitViewIsPaneSplitterKey",_b9="CPSplitViewButtonBarsKey"; +var _3=objj_getClass("CPSplitView"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPSplitView\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_ba,_bb,_bc){ +with(_ba){ +_ba=objj_msgSendSuper({receiver:_ba,super_class:objj_getClass("CPSplitView").super_class},"initWithCoder:",_bc); +if(_ba){ +_currentDivider=CPNotFound; +_DOMDividerElements=[]; +_buttonBars=objj_msgSend(_bc,"decodeObjectForKey:",_b9)||[]; +_delegate=objj_msgSend(_bc,"decodeObjectForKey:",_b6); +_isPaneSplitter=objj_msgSend(_bc,"decodeBoolForKey:",_b8); +objj_msgSend(_ba,"_setVertical:",objj_msgSend(_bc,"decodeBoolForKey:",_b7)); +} +return _ba; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_bd,_be,_bf){ +with(_bd){ +objj_msgSendSuper({receiver:_bd,super_class:objj_getClass("CPSplitView").super_class},"encodeWithCoder:",_bf); +objj_msgSend(_bf,"encodeConditionalObject:forKey:",_delegate,_b6); +objj_msgSend(_bf,"encodeBool:forKey:",_isVertical,_b7); +objj_msgSend(_bf,"encodeBool:forKey:",_isPaneSplitter,_b8); +} +})]); +p;17;CPStringDrawing.jt;875;@STATIC;1.0;I;21;Foundation/CPString.ji;18;CPPlatformString.jt;808; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPPlatformString.j",YES); +var _1=objj_getClass("CPString"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPString\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("cssString"),function(_3,_4){ +with(_3){ +return _3; +} +}),new objj_method(sel_getUid("sizeWithFont:"),function(_5,_6,_7){ +with(_5){ +return objj_msgSend(_5,"sizeWithFont:inWidth:",_7,NULL); +} +}),new objj_method(sel_getUid("sizeWithFont:inWidth:"),function(_8,_9,_a,_b){ +with(_8){ +return objj_msgSend(CPPlatformString,"sizeOfString:withFont:forWidth:",_8,_a,_b); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("metricsOfFont:"),function(_c,_d,_e){ +with(_c){ +return objj_msgSend(CPPlatformString,"metricsOfFont:",_e); +} +})]); +p;15;CPTableColumn.jt;12873;@STATIC;1.0;I;25;Foundation/CPDictionary.jI;21;Foundation/CPObject.jI;29;Foundation/CPSortDescriptor.jI;21;Foundation/CPString.ji;19;CPTableHeaderView.jt;12713; +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPSortDescriptor.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPTableHeaderView.j",YES); +CPTableColumnNoResizing=0; +CPTableColumnAutoresizingMask=1<<0; +CPTableColumnUserResizingMask=1<<1; +var _1=objj_allocateClassPair(CPObject,"CPTableColumn"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_tableView"),new objj_ivar("_headerView"),new objj_ivar("_dataView"),new objj_ivar("_dataViewData"),new objj_ivar("_width"),new objj_ivar("_minWidth"),new objj_ivar("_maxWidth"),new objj_ivar("_resizingMask"),new objj_ivar("_identifier"),new objj_ivar("_isEditable"),new objj_ivar("_sortDescriptorPrototype"),new objj_ivar("_isHidden"),new objj_ivar("_headerToolTip"),new objj_ivar("_disableResizingPosting")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("disableResizingPosting"),function(_3,_4){ +with(_3){ +return _disableResizingPosting; +} +}),new objj_method(sel_getUid("setDisableResizingPosting:"),function(_5,_6,_7){ +with(_5){ +_disableResizingPosting=_7; +} +}),new objj_method(sel_getUid("init"),function(_8,_9){ +with(_8){ +return objj_msgSend(_8,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("CPTableColumn").super_class},"init"); +if(_a){ +_dataViewData={}; +_width=100; +_minWidth=10; +_maxWidth=1000000; +_resizingMask=CPTableColumnAutoresizingMask|CPTableColumnUserResizingMask; +_disableResizingPosting=NO; +objj_msgSend(_a,"setIdentifier:",_c); +var _d=objj_msgSend(objj_msgSend(_CPTableColumnHeaderView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_a,"setHeaderView:",_d); +objj_msgSend(_a,"setDataView:",objj_msgSend(CPTextField,"new")); +} +return _a; +} +}),new objj_method(sel_getUid("setTableView:"),function(_e,_f,_10){ +with(_e){ +_tableView=_10; +} +}),new objj_method(sel_getUid("tableView"),function(_11,_12){ +with(_11){ +return _tableView; +} +}),new objj_method(sel_getUid("setWidth:"),function(_13,_14,_15){ +with(_13){ +_15=+_15; +if(_width===_15){ +return; +} +var _16=MIN(MAX(_15,objj_msgSend(_13,"minWidth")),objj_msgSend(_13,"maxWidth")); +if(_width===_16){ +return; +} +var _17=_width; +_width=_16; +var _18=objj_msgSend(_13,"tableView"); +if(_18){ +var _19=objj_msgSend(objj_msgSend(_18,"tableColumns"),"indexOfObjectIdenticalTo:",_13),_1a=_18._dirtyTableColumnRangeIndex; +if(_1a<0){ +_18._dirtyTableColumnRangeIndex=_19; +}else{ +_18._dirtyTableColumnRangeIndex=MIN(_19,_18._dirtyTableColumnRangeIndex); +} +var _1b=_18._exposedRows,_1c=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_19,objj_msgSend(_18._exposedColumns,"lastIndex")-_19+1)); +objj_msgSend(_18,"_layoutDataViewsInRows:columns:",_1b,_1c); +objj_msgSend(_18,"tile"); +if(!_disableResizingPosting){ +objj_msgSend(_13,"_postDidResizeNotificationWithOldWidth:",_17); +} +} +} +}),new objj_method(sel_getUid("width"),function(_1d,_1e){ +with(_1d){ +return _width; +} +}),new objj_method(sel_getUid("setMinWidth:"),function(_1f,_20,_21){ +with(_1f){ +_21=+_21; +if(_minWidth===_21){ +return; +} +_minWidth=_21; +var _22=objj_msgSend(_1f,"width"),_23=MAX(_22,objj_msgSend(_1f,"minWidth")); +if(_22!==_23){ +objj_msgSend(_1f,"setWidth:",_23); +} +} +}),new objj_method(sel_getUid("minWidth"),function(_24,_25){ +with(_24){ +return _minWidth; +} +}),new objj_method(sel_getUid("setMaxWidth:"),function(_26,_27,_28){ +with(_26){ +_28=+_28; +if(_maxWidth===_28){ +return; +} +_maxWidth=_28; +var _29=objj_msgSend(_26,"width"),_2a=MIN(_29,objj_msgSend(_26,"maxWidth")); +if(_29!==_2a){ +objj_msgSend(_26,"setWidth:",_2a); +} +} +}),new objj_method(sel_getUid("maxWidth"),function(_2b,_2c){ +with(_2b){ +return _maxWidth; +} +}),new objj_method(sel_getUid("setResizingMask:"),function(_2d,_2e,_2f){ +with(_2d){ +_resizingMask=_2f; +} +}),new objj_method(sel_getUid("resizingMask"),function(_30,_31){ +with(_30){ +return _resizingMask; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_32,_33){ +with(_32){ +var _34=(objj_msgSend(_headerView,"frame").size.width); +if(_34<objj_msgSend(_32,"minWidth")){ +objj_msgSend(_32,"setMinWidth:",_34); +}else{ +if(_34>objj_msgSend(_32,"maxWidth")){ +objj_msgSend(_32,"setMaxWidth:",_34); +} +} +if(_width!==_34){ +objj_msgSend(_32,"setWidth:",_34); +} +} +}),new objj_method(sel_getUid("setHeaderView:"),function(_35,_36,_37){ +with(_35){ +if(!_37){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Attempt to set nil header view on "+objj_msgSend(_35,"description")); +} +_headerView=_37; +var _38=objj_msgSend(_tableView,"headerView"); +objj_msgSend(_38,"setNeedsLayout"); +objj_msgSend(_38,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("headerView"),function(_39,_3a){ +with(_39){ +return _headerView; +} +}),new objj_method(sel_getUid("setDataView:"),function(_3b,_3c,_3d){ +with(_3b){ +if(_dataView===_3d){ +return; +} +if(_dataView){ +_dataViewData[objj_msgSend(_dataView,"UID")]=nil; +} +objj_msgSend(_3d,"setThemeState:",CPThemeStateTableDataView); +_dataView=_3d; +_dataViewData[objj_msgSend(_3d,"UID")]=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_3d); +} +}),new objj_method(sel_getUid("dataView"),function(_3e,_3f){ +with(_3e){ +return _dataView; +} +}),new objj_method(sel_getUid("dataViewForRow:"),function(_40,_41,_42){ +with(_40){ +return objj_msgSend(_40,"dataView"); +} +}),new objj_method(sel_getUid("_newDataViewForRow:"),function(_43,_44,_45){ +with(_43){ +var _46=objj_msgSend(_43,"dataViewForRow:",_45),_47=objj_msgSend(_46,"UID"); +var x=objj_msgSend(_43,"tableView")._cachedDataViews[_47]; +if(x&&x.length){ +return x.pop(); +} +if(!_dataViewData[_47]){ +_dataViewData[_47]=objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_46); +} +var _48=objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_dataViewData[_47]); +_48.identifier=_47; +objj_msgSend(_48,"setAutoresizingMask:",CPViewNotSizable); +return _48; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_49,_4a,_4b){ +with(_49){ +_identifier=_4b; +} +}),new objj_method(sel_getUid("identifier"),function(_4c,_4d){ +with(_4c){ +return _identifier; +} +}),new objj_method(sel_getUid("setEditable:"),function(_4e,_4f,_50){ +with(_4e){ +_isEditable=_50; +} +}),new objj_method(sel_getUid("isEditable"),function(_51,_52){ +with(_51){ +return _isEditable; +} +}),new objj_method(sel_getUid("setSortDescriptorPrototype:"),function(_53,_54,_55){ +with(_53){ +_sortDescriptorPrototype=_55; +} +}),new objj_method(sel_getUid("sortDescriptorPrototype"),function(_56,_57){ +with(_56){ +return _sortDescriptorPrototype; +} +}),new objj_method(sel_getUid("setHidden:"),function(_58,_59,_5a){ +with(_58){ +_5a=!!_5a; +if(_isHidden===_5a){ +return; +} +_isHidden=_5a; +objj_msgSend(objj_msgSend(_58,"headerView"),"setHidden:",_5a); +objj_msgSend(objj_msgSend(_58,"tableView"),"_tableColumnVisibilityDidChange:",_58); +} +}),new objj_method(sel_getUid("isHidden"),function(_5b,_5c){ +with(_5b){ +return _isHidden; +} +}),new objj_method(sel_getUid("setHeaderToolTip:"),function(_5d,_5e,_5f){ +with(_5d){ +_headerToolTip=_5f; +} +}),new objj_method(sel_getUid("headerToolTip"),function(_60,_61){ +with(_60){ +return _headerToolTip; +} +}),new objj_method(sel_getUid("_postDidResizeNotificationWithOldWidth:"),function(_62,_63,_64){ +with(_62){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewColumnDidResizeNotification,objj_msgSend(_62,"tableView"),objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_62,_64],["CPTableColumn","CPOldWidth"])); +} +})]); +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"),function(_65,_66,_67,_68,_69,_6a){ +with(_65){ +objj_msgSendSuper({receiver:_65,super_class:objj_getClass("CPTableColumn").super_class},"bind:toObject:withKeyPath:options:",_67,_68,_69,_6a); +if(!objj_msgSend(_67,"isEqual:","someListOfExceptedBindings(notAcceptedBindings)")){ +objj_msgSend(objj_msgSend(_65,"tableView"),"_establishBindingsIfUnbound:",_68); +} +} +}),new objj_method(sel_getUid("prepareDataView:forRow:"),function(_6b,_6c,_6d,_6e){ +with(_6b){ +var _6f=objj_msgSend(CPKeyValueBinding,"allBindingsForObject:",_6b),_70=objj_msgSend(_6f,"allKeys"); +for(var i=0,_71=objj_msgSend(_70,"count");i<_71;i++){ +var _72=_70[i],_73=objj_msgSend(_6d,"_replacementKeyPathForBinding:",_72),_74=objj_msgSend(_6f,"objectForKey:",_72),_75=_74._info,_76=objj_msgSend(_75,"objectForKey:",CPObservedObjectKey),_77=objj_msgSend(_75,"objectForKey:",CPObservedKeyPathKey),_78=_77.lastIndexOf("."),_79; +if(_78===CPNotFound){ +_79=objj_msgSend(objj_msgSend(_76,"valueForKeyPath:",_77),"objectAtIndex:",_6e); +}else{ +var _7a=_77.substring(0,_78),_7b=_77.substring(_78+1),_7c=objj_msgSend(_76,"valueForKeyPath:",_7a); +if(objj_msgSend(_7c,"isKindOfClass:",CPArray)){ +_79=objj_msgSend(objj_msgSend(_7c,"objectAtIndex:",_6e),"valueForKeyPath:",_7b); +}else{ +_79=objj_msgSend(objj_msgSend(_7c,"valueForKeyPath:",_7b),"objectAtIndex:",_6e); +} +} +_79=objj_msgSend(_74,"transformValue:withOptions:",_79,objj_msgSend(_75,"objectForKey:",CPOptionsKey)); +objj_msgSend(_6d,"setValue:forKey:",_79,_73); +} +} +}),new objj_method(sel_getUid("setValue:"),function(_7d,_7e,_7f){ +with(_7d){ +objj_msgSend(objj_msgSend(_7d,"tableView"),"reloadData"); +} +})]); +var _80="CPTableColumnIdentifierKey",_81="CPTableColumnHeaderViewKey",_82="CPTableColumnDataViewKey",_83="CPTableColumnWidthKey",_84="CPTableColumnMinWidthKey",_85="CPTableColumnMaxWidthKey",_86="CPTableColumnResizingMaskKey",_87="CPTableColumnIsHiddenKey",_88="CPSortDescriptorPrototypeKey",_89="CPTableColumnIsEditableKey"; +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_8a,_8b,_8c){ +with(_8a){ +_8a=objj_msgSendSuper({receiver:_8a,super_class:objj_getClass("CPTableColumn").super_class},"init"); +if(_8a){ +_dataViewData={}; +_width=objj_msgSend(_8c,"decodeFloatForKey:",_83); +_minWidth=objj_msgSend(_8c,"decodeFloatForKey:",_84); +_maxWidth=objj_msgSend(_8c,"decodeFloatForKey:",_85); +objj_msgSend(_8a,"setIdentifier:",objj_msgSend(_8c,"decodeObjectForKey:",_80)); +objj_msgSend(_8a,"setHeaderView:",objj_msgSend(_8c,"decodeObjectForKey:",_81)); +objj_msgSend(_8a,"setDataView:",objj_msgSend(_8c,"decodeObjectForKey:",_82)); +objj_msgSend(_8a,"setHeaderView:",objj_msgSend(_8c,"decodeObjectForKey:",_81)); +_resizingMask=objj_msgSend(_8c,"decodeIntForKey:",_86); +_isHidden=objj_msgSend(_8c,"decodeBoolForKey:",_87); +_isEditable=objj_msgSend(_8c,"decodeBoolForKey:",_89); +_sortDescriptorPrototype=objj_msgSend(_8c,"decodeObjectForKey:",_88); +} +return _8a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8f,"encodeObject:forKey:",_identifier,_80); +objj_msgSend(_8f,"encodeObject:forKey:",_width,_83); +objj_msgSend(_8f,"encodeObject:forKey:",_minWidth,_84); +objj_msgSend(_8f,"encodeObject:forKey:",_maxWidth,_85); +objj_msgSend(_8f,"encodeObject:forKey:",_headerView,_81); +objj_msgSend(_8f,"encodeObject:forKey:",_dataView,_82); +objj_msgSend(_8f,"encodeObject:forKey:",_resizingMask,_86); +objj_msgSend(_8f,"encodeBool:forKey:",_isHidden,_87); +objj_msgSend(_8f,"encodeBool:forKey:",_isEditable,_89); +objj_msgSend(_8f,"encodeObject:forKey:",_sortDescriptorPrototype,_88); +} +})]); +var _1=objj_getClass("CPTableColumn"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setHeaderCell:"),function(_90,_91,_92){ +with(_90){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"setHeaderCell: is not supported. -setHeaderCell:aView instead."); +} +}),new objj_method(sel_getUid("headerCell"),function(_93,_94){ +with(_93){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"headCell is not supported. -headerView instead."); +} +}),new objj_method(sel_getUid("setDataCell:"),function(_95,_96,_97){ +with(_95){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"setDataCell: is not supported. Use -setHeaderCell:aView instead."); +} +}),new objj_method(sel_getUid("dataCell"),function(_98,_99){ +with(_98){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataCell is not supported. Use -dataCell instead."); +} +}),new objj_method(sel_getUid("dataCellForRow:"),function(_9a,_9b,row){ +with(_9a){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"dataCellForRow: is not supported. Use -dataViewForRow:row instead."); +} +})]); +p;19;CPTableHeaderView.jt;21454;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.ji;8;CPView.jt;21384; +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("CPTableView.j",YES); +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPTableColumnHeaderView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_textField")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"_init"); +} +return _3; +} +}),new objj_method(sel_getUid("_init"),function(_6,_7){ +with(_6){ +_textField=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_textField,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_textField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_textField,"setAlignment:",CPLeftTextAlignment); +objj_msgSend(_textField,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_6,"addSubview:",_textField); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_8,_9){ +with(_8){ +objj_msgSend(_8,"setBackgroundColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","background-color")); +var _a=objj_msgSend(_8,"currentValueForThemeAttribute:","text-inset"),_b=objj_msgSend(_8,"bounds"); +objj_msgSend(_textField,"setFrame:",{origin:{x:_a.right,y:_a.top},size:{width:_b.size.width-_a.right-_a.left,height:_b.size.height-_a.top-_a.bottom}}); +objj_msgSend(_textField,"setTextColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_textField,"setFont:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-font")); +objj_msgSend(_textField,"setTextShadowColor:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_textField,"setTextShadowOffset:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-shadow-offset")); +objj_msgSend(_textField,"setAlignment:",objj_msgSend(_8,"currentValueForThemeAttribute:","text-alignment")); +} +}),new objj_method(sel_getUid("setStringValue:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_textField,"setText:",_e); +} +}),new objj_method(sel_getUid("stringValue"),function(_f,_10){ +with(_f){ +return objj_msgSend(_textField,"text"); +} +}),new objj_method(sel_getUid("textField"),function(_11,_12){ +with(_11){ +return _textField; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_13,_14){ +with(_13){ +objj_msgSend(_textField,"sizeToFit"); +} +}),new objj_method(sel_getUid("setFont:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_textField,"setFont:",_17); +} +}),new objj_method(sel_getUid("_setIndicatorImage:"),function(_18,_19,_1a){ +with(_18){ +if(_1a){ +objj_msgSend(_textField,"setImage:",_1a); +objj_msgSend(_textField,"setImagePosition:",CPImageRight); +}else{ +objj_msgSend(_textField,"setImagePosition:",CPNoImage); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_1b,_1c){ +with(_1b){ +return "columnHeader"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),CGInsetMakeZero(),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),CGSizeMakeZero()],["background-color","text-alignment","text-inset","text-color","text-font","text-shadow-color","text-shadow-offset"]); +} +})]); +var _1f="_CPTableColumnHeaderViewStringValueKey",_20="_CPTableColumnHeaderViewFontKey",_21="_CPTableColumnHeaderViewImageKey"; +var _1=objj_getClass("_CPTableColumnHeaderView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPTableColumnHeaderView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +if(_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"initWithCoder:",_24)){ +objj_msgSend(_22,"_init"); +objj_msgSend(_22,"_setIndicatorImage:",objj_msgSend(_24,"decodeObjectForKey:",_21)); +objj_msgSend(_22,"setStringValue:",objj_msgSend(_24,"decodeObjectForKey:",_1f)); +objj_msgSend(_22,"setFont:",objj_msgSend(_24,"decodeObjectForKey:",_20)); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSendSuper({receiver:_25,super_class:objj_getClass("_CPTableColumnHeaderView").super_class},"encodeWithCoder:",_27); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"text"),_1f); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"image"),_21); +objj_msgSend(_27,"encodeObject:forKey:",objj_msgSend(_textField,"font"),_20); +} +})]); +var _1=objj_allocateClassPair(CPView,"CPTableHeaderView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_mouseDownLocation"),new objj_ivar("_previousTrackingLocation"),new objj_ivar("_activeColumn"),new objj_ivar("_pressedColumn"),new objj_ivar("_isResizing"),new objj_ivar("_isDragging"),new objj_ivar("_isTrackingColumn"),new objj_ivar("_drawsColumnLines"),new objj_ivar("_columnOldWidth"),new objj_ivar("_tableView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("tableView"),function(_28,_29){ +with(_28){ +return _tableView; +} +}),new objj_method(sel_getUid("setTableView:"),function(_2a,_2b,_2c){ +with(_2a){ +_tableView=_2c; +} +}),new objj_method(sel_getUid("_init"),function(_2d,_2e){ +with(_2d){ +_mouseDownLocation={x:0,y:0}; +_previousTrackingLocation={x:0,y:0}; +_activeColumn=-1; +_pressedColumn=-1; +_isResizing=NO; +_isDragging=NO; +_isTrackingColumn=NO; +_drawsColumnLines=YES; +_columnOldWidth=0; +objj_msgSend(_2d,"setBackgroundColor:",objj_msgSend(_2d,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_2f,_30,_31){ +with(_2f){ +_2f=objj_msgSendSuper({receiver:_2f,super_class:objj_getClass("CPTableHeaderView").super_class},"initWithFrame:",_31); +if(_2f){ +objj_msgSend(_2f,"_init"); +} +return _2f; +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(_32,_33,_34){ +with(_32){ +return objj_msgSend(_tableView,"columnAtPoint:",CGPointMake(_34.x,_34.y)); +} +}),new objj_method(sel_getUid("headerRectOfColumn:"),function(_35,_36,_37){ +with(_35){ +var _38=objj_msgSend(_35,"bounds"),_39=objj_msgSend(_tableView,"rectOfColumn:",_37); +_38.origin.x=(_39.origin.x); +_38.size.width=(_39.size.width); +return _38; +} +}),new objj_method(sel_getUid("setDrawsColumnLines:"),function(_3a,_3b,_3c){ +with(_3a){ +_drawsColumnLines=_3c; +} +}),new objj_method(sel_getUid("drawsColumnLines"),function(_3d,_3e){ +with(_3d){ +return _drawsColumnLines; +} +}),new objj_method(sel_getUid("_cursorRectForColumn:"),function(_3f,_40,_41){ +with(_3f){ +if(_41==-1||!(objj_msgSend(_tableView._tableColumns[_41],"resizingMask")&CPTableColumnUserResizingMask)){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +var _42=objj_msgSend(_3f,"headerRectOfColumn:",_41); +_42.origin.x=(_42.origin.x+_42.size.width)-5; +_42.size.width=20; +return _42; +} +}),new objj_method(sel_getUid("_setPressedColumn:"),function(_43,_44,_45){ +with(_43){ +if(_pressedColumn!=-1){ +var _46=objj_msgSend(_tableView._tableColumns[_pressedColumn],"headerView"); +objj_msgSend(_46,"unsetThemeState:",CPThemeStateHighlighted); +} +if(_45!=-1){ +var _46=objj_msgSend(_tableView._tableColumns[_45],"headerView"); +objj_msgSend(_46,"setThemeState:",CPThemeStateHighlighted); +} +_pressedColumn=_45; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_47,_48,_49){ +with(_47){ +objj_msgSend(_47,"trackMouse:",_49); +} +}),new objj_method(sel_getUid("trackMouse:"),function(_4a,_4b,_4c){ +with(_4a){ +var _4d=objj_msgSend(_4c,"type"),_4e=objj_msgSend(_4a,"convertPoint:fromView:",objj_msgSend(_4c,"locationInWindow"),nil); +_4e.x-=5; +var _4f=objj_msgSend(_4a,"columnAtPoint:",_4e),_50=objj_msgSend(_4a,"shouldResizeTableColumn:at:",_4f,{x:_4e.x+5,y:_4e.y}); +if(_4d===CPLeftMouseUp){ +if(_50){ +objj_msgSend(_4a,"stopResizingTableColumn:at:",_activeColumn,_4e); +}else{ +if(objj_msgSend(_4a,"_shouldStopTrackingTableColumn:at:",_4f,_4e)){ +objj_msgSend(_tableView,"_didClickTableColumn:modifierFlags:",_4f,objj_msgSend(_4c,"modifierFlags")); +objj_msgSend(_4a,"stopTrackingTableColumn:at:",_4f,_4e); +_isTrackingColumn=NO; +} +} +objj_msgSend(_4a,"_updateResizeCursor:",objj_msgSend(CPApp,"currentEvent")); +_activeColumn=CPNotFound; +return; +} +if(_4d===CPLeftMouseDown){ +if(_4f===-1){ +return; +} +_mouseDownLocation=_4e; +_activeColumn=_4f; +objj_msgSend(_tableView,"_sendDelegateDidMouseDownInHeader:",_4f); +if(_50){ +objj_msgSend(_4a,"startResizingTableColumn:at:",_4f,_4e); +}else{ +objj_msgSend(_4a,"startTrackingTableColumn:at:",_4f,_4e); +_isTrackingColumn=YES; +} +}else{ +if(_4d===CPLeftMouseDragged){ +if(_50){ +objj_msgSend(_4a,"continueResizingTableColumn:at:",_activeColumn,_4e); +}else{ +if(_activeColumn===_4f&&(_4e.x>=(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.x)&&_4e.y>=(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.y)&&_4e.x<(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.x+objj_msgSend(_4a,"headerRectOfColumn:",_4f).size.width)&&_4e.y<(objj_msgSend(_4a,"headerRectOfColumn:",_4f).origin.y+objj_msgSend(_4a,"headerRectOfColumn:",_4f).size.height))){ +if(_isTrackingColumn&&_pressedColumn!==-1){ +if(!objj_msgSend(_4a,"continueTrackingTableColumn:at:",_4f,_4e)){ +return; +} +}else{ +objj_msgSend(_4a,"startTrackingTableColumn:at:",_4f,_4e); +} +}else{ +if(_isTrackingColumn&&_pressedColumn!==-1){ +objj_msgSend(_4a,"stopTrackingTableColumn:at:",_activeColumn,_4e); +} +} +} +} +} +_previousTrackingLocation=_4e; +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_4a,sel_getUid("trackMouse:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("startTrackingTableColumn:at:"),function(_51,_52,_53,_54){ +with(_51){ +objj_msgSend(_51,"_setPressedColumn:",_53); +} +}),new objj_method(sel_getUid("continueTrackingTableColumn:at:"),function(_55,_56,_57,_58){ +with(_55){ +if(objj_msgSend(_55,"_shouldDragTableColumn:at:",_57,_58)){ +var _59=objj_msgSend(_55,"headerRectOfColumn:",_57),_5a={x:0,y:0},_5b=objj_msgSend(_tableView,"_dragViewForColumn:event:offset:",_57,objj_msgSend(CPApp,"currentEvent"),_5a),_5c={x:0,y:0}; +_5c.x=((_59.origin.x)+_5a.x)+(_58.x-_mouseDownLocation.x); +_5c.y=(_59.origin.y)+_5a.y; +objj_msgSend(_55,"dragView:at:offset:event:pasteboard:source:slideBack:",_5b,_5c,{width:0,height:0},objj_msgSend(CPApp,"currentEvent"),objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard),_55,YES); +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("_shouldStopTrackingTableColumn:at:"),function(_5d,_5e,_5f,_60){ +with(_5d){ +return _isTrackingColumn&&_activeColumn===_5f&&(_60.x>=(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.x)&&_60.y>=(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.y)&&_60.x<(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.x+objj_msgSend(_5d,"headerRectOfColumn:",_5f).size.width)&&_60.y<(objj_msgSend(_5d,"headerRectOfColumn:",_5f).origin.y+objj_msgSend(_5d,"headerRectOfColumn:",_5f).size.height)); +} +}),new objj_method(sel_getUid("stopTrackingTableColumn:at:"),function(_61,_62,_63,_64){ +with(_61){ +objj_msgSend(_61,"_setPressedColumn:",CPNotFound); +objj_msgSend(_61,"_updateResizeCursor:",objj_msgSend(CPApp,"currentEvent")); +} +}),new objj_method(sel_getUid("_shouldDragTableColumn:at:"),function(_65,_66,_67,_68){ +with(_65){ +return objj_msgSend(_tableView,"allowsColumnReordering")&&ABS(_68.x-_mouseDownLocation.x)>=10; +} +}),new objj_method(sel_getUid("_headerRectOfLastVisibleColumn"),function(_69,_6a){ +with(_69){ +var _6b=objj_msgSend(_tableView,"tableColumns"),_6c=objj_msgSend(_6b,"count"); +while(_6c--){ +var _6d=objj_msgSend(_6b,"objectAtIndex:",_6c); +if(!objj_msgSend(_6d,"isHidden")){ +return objj_msgSend(_69,"headerRectOfColumn:",_6c); +} +} +return nil; +} +}),new objj_method(sel_getUid("_constrainDragView:at:"),function(_6e,_6f,_70,_71){ +with(_6e){ +var _72=objj_msgSend(_tableView,"tableColumns"),_73=objj_msgSend(_6e,"_headerRectOfLastVisibleColumn"),_74=objj_msgSend(_6e,"headerRectOfColumn:",_activeColumn),_75=objj_msgSend(_70,"window"),_76=objj_msgSend(_75,"frame"); +_76.origin=objj_msgSend(objj_msgSend(_6e,"window"),"convertGlobalToBase:",_76.origin); +_76.origin=objj_msgSend(_6e,"convertPoint:fromView:",_76.origin,nil); +_76.origin.x=MAX(0,MIN((_76.origin.x),(_73.origin.x+_73.size.width)-(_74.size.width))); +_76.origin.y=(_73.origin.y); +_76.origin=objj_msgSend(_6e,"convertPoint:toView:",_76.origin,nil); +_76.origin=objj_msgSend(objj_msgSend(_6e,"window"),"convertBaseToGlobal:",_76.origin); +objj_msgSend(_75,"setFrame:",_76); +} +}),new objj_method(sel_getUid("_moveColumn:toColumn:"),function(_77,_78,_79,_7a){ +with(_77){ +objj_msgSend(_tableView,"moveColumn:toColumn:",_79,_7a); +_activeColumn=_7a; +_pressedColumn=_activeColumn; +} +}),new objj_method(sel_getUid("draggedView:beganAt:"),function(_7b,_7c,_7d,_7e){ +with(_7b){ +_isDragging=YES; +var _7f=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_activeColumn); +objj_msgSend(objj_msgSend(_7f,"headerView"),"setHidden:",YES); +objj_msgSend(_tableView,"_setDraggedColumn:",_7f); +objj_msgSend(_7b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("draggedView:movedTo:"),function(_80,_81,_82,_83){ +with(_80){ +objj_msgSend(_80,"_constrainDragView:at:",_82,_83); +var _84=objj_msgSend(_82,"window"),_85=objj_msgSend(_84,"frame"); +var _86=CGPointCreateCopy(_83); +if(_83.x<_previousTrackingLocation.x){ +_86={x:(_85.origin.x),y:(_85.origin.y)}; +}else{ +if(_83.x>_previousTrackingLocation.x){ +_86={x:(_85.origin.x+_85.size.width),y:(_85.origin.y)}; +} +} +_86=objj_msgSend(objj_msgSend(_80,"window"),"convertGlobalToBase:",_86); +_86=objj_msgSend(_80,"convertPoint:fromView:",_86,nil); +var _87=objj_msgSend(_80,"columnAtPoint:",_86); +if(_87!==-1){ +var _88=objj_msgSend(_80,"headerRectOfColumn:",_87),_89=objj_msgSend(_80,"convertPoint:fromView:",CGPointMake((_88.origin.x+(_88.size.width)/2),(_88.origin.y+(_88.size.height)/2)),_80); +if(_87<_activeColumn&&_86.x<_89.x){ +objj_msgSend(_80,"_moveColumn:toColumn:",_activeColumn,_87); +}else{ +if(_87>_activeColumn&&_86.x>_89.x){ +objj_msgSend(_80,"_moveColumn:toColumn:",_activeColumn,_87); +} +} +} +_previousTrackingLocation=_83; +} +}),new objj_method(sel_getUid("draggedView:endedAt:operation:"),function(_8a,_8b,_8c,_8d,_8e){ +with(_8a){ +_isDragging=NO; +_isTrackingColumn=NO; +objj_msgSend(_tableView,"_setDraggedColumn:",nil); +objj_msgSend(objj_msgSend(objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_activeColumn),"headerView"),"setHidden:",NO); +objj_msgSend(_8a,"stopTrackingTableColumn:at:",_activeColumn,_8d); +objj_msgSend(_8a,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("shouldResizeTableColumn:at:"),function(_8f,_90,_91,_92){ +with(_8f){ +if(_isResizing){ +return YES; +} +if(_isTrackingColumn){ +return NO; +} +return objj_msgSend(_tableView,"allowsColumnResizing")&&(_92.x>=(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.x)&&_92.y>=(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.y)&&_92.x<(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.x+objj_msgSend(_8f,"_cursorRectForColumn:",_91).size.width)&&_92.y<(objj_msgSend(_8f,"_cursorRectForColumn:",_91).origin.y+objj_msgSend(_8f,"_cursorRectForColumn:",_91).size.height)); +} +}),new objj_method(sel_getUid("startResizingTableColumn:at:"),function(_93,_94,_95,_96){ +with(_93){ +_isResizing=YES; +var _97=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_95); +objj_msgSend(_97,"setDisableResizingPosting:",YES); +objj_msgSend(_tableView,"setDisableAutomaticResizing:",YES); +} +}),new objj_method(sel_getUid("continueResizingTableColumn:at:"),function(_98,_99,_9a,_9b){ +with(_98){ +var _9c=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_9a),_9d=objj_msgSend(_9c,"width")+_9b.x-_previousTrackingLocation.x; +if(_9d<objj_msgSend(_9c,"minWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeRightCursor"),"set"); +}else{ +if(_9d>objj_msgSend(_9c,"maxWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftCursor"),"set"); +}else{ +_tableView._lastColumnShouldSnap=NO; +objj_msgSend(_9c,"setWidth:",_9d); +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftRightCursor"),"set"); +objj_msgSend(_98,"setNeedsLayout"); +objj_msgSend(_98,"setNeedsDisplay:",YES); +} +} +} +}),new objj_method(sel_getUid("stopResizingTableColumn:at:"),function(_9e,_9f,_a0,_a1){ +with(_9e){ +var _a2=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_a0); +objj_msgSend(_a2,"_postDidResizeNotificationWithOldWidth:",_columnOldWidth); +objj_msgSend(_a2,"setDisableResizingPosting:",NO); +objj_msgSend(_tableView,"setDisableAutomaticResizing:",NO); +_isResizing=NO; +} +}),new objj_method(sel_getUid("_updateResizeCursor:"),function(_a3,_a4,_a5){ +with(_a3){ +if(!objj_msgSend(_tableView,"allowsColumnResizing")||(objj_msgSend(_a5,"type")===CPLeftMouseUp&&!objj_msgSend(objj_msgSend(_a3,"window"),"acceptsMouseMovedEvents"))){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +return; +} +var _a6=objj_msgSend(_a3,"convertPoint:fromView:",objj_msgSend(_a5,"locationInWindow"),nil),_a7=CGPointMake(_a6.x-5,_a6.y),_a8=objj_msgSend(_a3,"columnAtPoint:",_a7); +if(_a8>=0&&(_a6.x>=(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.x)&&_a6.y>=(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.y)&&_a6.x<(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.x+objj_msgSend(_a3,"_cursorRectForColumn:",_a8).size.width)&&_a6.y<(objj_msgSend(_a3,"_cursorRectForColumn:",_a8).origin.y+objj_msgSend(_a3,"_cursorRectForColumn:",_a8).size.height))){ +var _a9=objj_msgSend(objj_msgSend(_tableView,"tableColumns"),"objectAtIndex:",_a8),_aa=objj_msgSend(_a9,"width"); +if(_aa==objj_msgSend(_a9,"minWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeRightCursor"),"set"); +}else{ +if(_aa==objj_msgSend(_a9,"maxWidth")){ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftCursor"),"set"); +}else{ +objj_msgSend(objj_msgSend(CPCursor,"resizeLeftRightCursor"),"set"); +} +} +}else{ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +} +}),new objj_method(sel_getUid("mouseEntered:"),function(_ab,_ac,_ad){ +with(_ab){ +objj_msgSend(_ab,"_updateResizeCursor:",_ad); +} +}),new objj_method(sel_getUid("mouseMoved:"),function(_ae,_af,_b0){ +with(_ae){ +objj_msgSend(_ae,"_updateResizeCursor:",_b0); +} +}),new objj_method(sel_getUid("mouseExited:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSend(objj_msgSend(CPCursor,"arrowCursor"),"set"); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_b4,_b5){ +with(_b4){ +var _b6=objj_msgSend(_tableView,"tableColumns"),_b7=objj_msgSend(_b6,"count"); +for(var i=0;i<_b7;i++){ +var _b8=objj_msgSend(_b6,"objectAtIndex:",i),_b9=objj_msgSend(_b8,"headerView"); +var _ba=objj_msgSend(_b4,"headerRectOfColumn:",i); +_ba.size.height-=0.5; +if(i>0){ +_ba.origin.x+=0.5; +_ba.size.width-=1; +} +objj_msgSend(_b9,"setFrame:",_ba); +if(objj_msgSend(_b9,"superview")!=_b4){ +objj_msgSend(_b4,"addSubview:",_b9); +} +} +objj_msgSend(_b4,"setBackgroundColor:",objj_msgSend(_b4,"currentValueForThemeAttribute:","background-color")); +} +}),new objj_method(sel_getUid("drawRect:"),function(_bb,_bc,_bd){ +with(_bb){ +if(!_tableView||!objj_msgSend(_bb,"drawsColumnLines")){ +return; +} +var _be=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_bf=objj_msgSend(_tableView,"columnIndexesInRect:",_bd),_c0=[],_c1=objj_msgSend(_tableView,"tableColumns"),_c2=_tableView._exposedColumns,_c3=objj_msgSend(_c2,"firstIndex"),_c4=CPMakeRange(_c3,objj_msgSend(_c2,"lastIndex")-_c3+1); +CGContextSetLineWidth(_be,1); +CGContextSetStrokeColor(_be,objj_msgSend(_bb,"currentValueForThemeAttribute:","divider-color")); +objj_msgSend(_bf,"getIndexes:maxCount:inIndexRange:",_c0,-1,_c4); +var _c5=0,_c6=_c0.length,_c7; +CGContextBeginPath(_be); +for(;_c5<_c6;_c5++){ +var _c8=_c0[_c5],_c9=objj_msgSend(_bb,"headerRectOfColumn:",_c8); +_c7=(_c9.origin.x+_c9.size.width); +CGContextMoveToPoint(_be,ROUND(_c7)+0.5,ROUND((_c9.origin.y))); +CGContextAddLineToPoint(_be,ROUND(_c7)+0.5,ROUND((_c9.origin.y+_c9.size.height))); +} +CGContextClosePath(_be); +CGContextStrokePath(_be); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("themeClass"),function(_ca,_cb){ +with(_ca){ +return "tableHeaderRow"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_cc,_cd){ +with(_cc){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPColor,"grayColor")],["background-color","divider-color"]); +} +})]); +var _ce="CPTableHeaderViewTableViewKey",_cf="CPTableHeaderViewDrawsColumnLines"; +var _1=objj_getClass("CPTableHeaderView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTableHeaderView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_d0,_d1,_d2){ +with(_d0){ +if(_d0=objj_msgSendSuper({receiver:_d0,super_class:objj_getClass("CPTableHeaderView").super_class},"initWithCoder:",_d2)){ +objj_msgSend(_d0,"_init"); +_tableView=objj_msgSend(_d2,"decodeObjectForKey:",_ce); +_drawsColumnLines=objj_msgSend(_d2,"decodeBoolForKey:",_cf); +} +return _d0; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_d3,_d4,_d5){ +with(_d3){ +objj_msgSendSuper({receiver:_d3,super_class:objj_getClass("CPTableHeaderView").super_class},"encodeWithCoder:",_d5); +objj_msgSend(_d5,"encodeObject:forKey:",_tableView,_ce); +objj_msgSend(_d5,"encodeBool:forKey:",_drawsColumnLines,_cf); +} +})]); +p;13;CPTableView.jt;95837;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;AppKit/CGGradient.ji;11;CPControl.ji;15;CPTableColumn.ji;15;_CPCornerView.ji;12;CPScroller.jt;95695; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("AppKit/CGGradient.j",NO); +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPTableColumn.j",YES); +objj_executeFile("_CPCornerView.j",YES); +objj_executeFile("CPScroller.j",YES); +CPTableViewColumnDidMoveNotification="CPTableViewColumnDidMoveNotification"; +CPTableViewColumnDidResizeNotification="CPTableViewColumnDidResizeNotification"; +CPTableViewSelectionDidChangeNotification="CPTableViewSelectionDidChangeNotification"; +CPTableViewSelectionIsChangingNotification="CPTableViewSelectionIsChangingNotification"; +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5,_7=1<<6,_8=1<<7; +var _9=1<<0,_a=1<<1,_b=1<<2,_c=1<<3,_d=1<<4,_e=1<<5,_f=1<<6,_10=1<<7,_11=1<<8,_12=1<<9,_13=1<<10,_14=1<<11,_15=1<<12,_16=1<<13,_17=1<<14,_18=1<<15,_19=1<<16,_1a=1<<17,_1b=1<<18,_1c=1<<19; +CPTableViewDraggingDestinationFeedbackStyleNone=-1; +CPTableViewDraggingDestinationFeedbackStyleRegular=0; +CPTableViewDraggingDestinationFeedbackStyleSourceList=1; +CPTableViewDropOn=0; +CPTableViewDropAbove=1; +CPSourceListGradient="CPSourceListGradient"; +CPSourceListTopLineColor="CPSourceListTopLineColor"; +CPSourceListBottomLineColor="CPSourceListBottomLineColor"; +CPTableViewSelectionHighlightStyleNone=-1; +CPTableViewSelectionHighlightStyleRegular=0; +CPTableViewSelectionHighlightStyleSourceList=1; +CPTableViewGridNone=0; +CPTableViewSolidVerticalGridLineMask=1<<0; +CPTableViewSolidHorizontalGridLineMask=1<<1; +CPTableViewNoColumnAutoresizing=0; +CPTableViewUniformColumnAutoresizingStyle=1; +CPTableViewSequentialColumnAutoresizingStyle=2; +CPTableViewReverseSequentialColumnAutoresizingStyle=3; +CPTableViewLastColumnOnlyAutoresizingStyle=4; +CPTableViewFirstColumnOnlyAutoresizingStyle=5; +var _1d=objj_allocateClassPair(CPView,"_CPTableDrawView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_tableView")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("initWithTableView:"),function(_1f,_20,_21){ +with(_1f){ +_1f=objj_msgSendSuper({receiver:_1f,super_class:objj_getClass("_CPTableDrawView").super_class},"init"); +if(_1f){ +_tableView=_21; +} +return _1f; +} +}),new objj_method(sel_getUid("drawRect:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_22,"frame"),_26=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextTranslateCTM(_26,-(_25.origin.x),-(_25.origin.y)); +objj_msgSend(_tableView,"_drawRect:",_24); +} +})]); +var _1d=objj_allocateClassPair(CPControl,"CPTableView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_dataSource"),new objj_ivar("_implementedDataSourceMethods"),new objj_ivar("_delegate"),new objj_ivar("_implementedDelegateMethods"),new objj_ivar("_tableColumns"),new objj_ivar("_tableColumnRanges"),new objj_ivar("_dirtyTableColumnRangeIndex"),new objj_ivar("_numberOfHiddenColumns"),new objj_ivar("_reloadAllRows"),new objj_ivar("_objectValues"),new objj_ivar("_exposedRows"),new objj_ivar("_exposedColumns"),new objj_ivar("_dataViewsForTableColumns"),new objj_ivar("_cachedDataViews"),new objj_ivar("_allowsColumnReordering"),new objj_ivar("_allowsColumnResizing"),new objj_ivar("_allowsColumnSelection"),new objj_ivar("_allowsMultipleSelection"),new objj_ivar("_allowsEmptySelection"),new objj_ivar("_sortDescriptors"),new objj_ivar("_intercellSpacing"),new objj_ivar("_rowHeight"),new objj_ivar("_usesAlternatingRowBackgroundColors"),new objj_ivar("_alternatingRowBackgroundColors"),new objj_ivar("_selectionHighlightStyle"),new objj_ivar("_currentHighlightedTableColumn"),new objj_ivar("_gridStyleMask"),new objj_ivar("_numberOfRows"),new objj_ivar("_headerView"),new objj_ivar("_cornerView"),new objj_ivar("_selectedColumnIndexes"),new objj_ivar("_selectedRowIndexes"),new objj_ivar("_selectionAnchorRow"),new objj_ivar("_lastSelectedRow"),new objj_ivar("_previouslySelectedRowIndexes"),new objj_ivar("_startTrackingPoint"),new objj_ivar("_startTrackingTimestamp"),new objj_ivar("_trackingPointMovedOutOfClickSlop"),new objj_ivar("_editingCellIndex"),new objj_ivar("_tableDrawView"),new objj_ivar("_doubleAction"),new objj_ivar("_clickedRow"),new objj_ivar("_columnAutoResizingStyle"),new objj_ivar("_lastTrackedRowIndex"),new objj_ivar("_originalMouseDownPoint"),new objj_ivar("_verticalMotionCanDrag"),new objj_ivar("_destinationDragStyle"),new objj_ivar("_isSelectingSession"),new objj_ivar("_draggedRowIndexes"),new objj_ivar("_dropOperationFeedbackView"),new objj_ivar("_dragOperationDefaultMask"),new objj_ivar("_retargetedDropRow"),new objj_ivar("_retargetedDropOperation"),new objj_ivar("_disableAutomaticResizing"),new objj_ivar("_lastColumnShouldSnap"),new objj_ivar("_implementsCustomDrawRow"),new objj_ivar("_draggedColumn"),new objj_ivar("_differedColumnDataToRemove")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("disableAutomaticResizing"),function(_27,_28){ +with(_27){ +return _disableAutomaticResizing; +} +}),new objj_method(sel_getUid("setDisableAutomaticResizing:"),function(_29,_2a,_2b){ +with(_29){ +_disableAutomaticResizing=_2b; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_2c,_2d,_2e){ +with(_2c){ +_2c=objj_msgSendSuper({receiver:_2c,super_class:objj_getClass("CPTableView").super_class},"initWithFrame:",_2e); +if(_2c){ +_allowsColumnReordering=YES; +_allowsColumnResizing=YES; +_allowsMultipleSelection=NO; +_allowsEmptySelection=YES; +_allowsColumnSelection=NO; +_disableAutomaticResizing=NO; +_selectionHighlightStyle=CPTableViewSelectionHighlightStyleRegular; +objj_msgSend(_2c,"setUsesAlternatingRowBackgroundColors:",NO); +objj_msgSend(_2c,"setAlternatingRowBackgroundColors:",[objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",245/255,249/255,252/255,1)]); +_tableColumns=[]; +_tableColumnRanges=[]; +_dirtyTableColumnRangeIndex=CPNotFound; +_numberOfHiddenColumns=0; +_intercellSpacing={width:3,height:2}; +_rowHeight=23; +objj_msgSend(_2c,"setGridColor:",objj_msgSend(CPColor,"colorWithHexString:","dce0e2")); +objj_msgSend(_2c,"setGridStyleMask:",CPTableViewGridNone); +_headerView=objj_msgSend(objj_msgSend(CPTableHeaderView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(_2c,"bounds").size.width,_rowHeight)); +objj_msgSend(_headerView,"setTableView:",_2c); +_cornerView=nil; +_lastSelectedRow=-1; +_currentHighlightedTableColumn=nil; +_sortDescriptors=objj_msgSend(CPArray,"array"); +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_verticalMotionCanDrag=YES; +_isSelectingSession=NO; +_retargetedDropRow=nil; +_retargetedDropOperation=nil; +_dragOperationDefaultMask=nil; +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleRegular; +objj_msgSend(_2c,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_2c,"_init"); +} +return _2c; +} +}),new objj_method(sel_getUid("_init"),function(_2f,_30){ +with(_2f){ +_tableViewFlags=0; +_selectedColumnIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_selectedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +_dropOperationFeedbackView=objj_msgSend(objj_msgSend(_CPDropOperationDrawingView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_dropOperationFeedbackView,"setTableView:",_2f); +_lastColumnShouldSnap=NO; +if(!_alternatingRowBackgroundColors){ +_alternatingRowBackgroundColors=[objj_msgSend(CPColor,"whiteColor"),objj_msgSend(CPColor,"colorWithHexString:","e4e7ff")]; +} +_selectionHighlightColor=objj_msgSend(CPColor,"colorWithHexString:","5f83b9"); +_tableColumnRanges=[]; +_dirtyTableColumnRangeIndex=0; +_numberOfHiddenColumns=0; +_objectValues={}; +_dataViewsForTableColumns={}; +_dataViews=[]; +_numberOfRows=0; +_exposedRows=objj_msgSend(CPIndexSet,"indexSet"); +_exposedColumns=objj_msgSend(CPIndexSet,"indexSet"); +_cachedDataViews={}; +_tableDrawView=objj_msgSend(objj_msgSend(_CPTableDrawView,"alloc"),"initWithTableView:",_2f); +objj_msgSend(_tableDrawView,"setBackgroundColor:",objj_msgSend(CPColor,"clearColor")); +objj_msgSend(_2f,"addSubview:",_tableDrawView); +if(!_headerView){ +_headerView=objj_msgSend(objj_msgSend(CPTableHeaderView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(_2f,"bounds").size.width,_rowHeight)); +} +objj_msgSend(_headerView,"setTableView:",_2f); +if(!_cornerView){ +_cornerView=objj_msgSend(objj_msgSend(_CPCornerView,"alloc"),"initWithFrame:",CGRectMake(0,0,objj_msgSend(CPScroller,"scrollerWidth"),CGRectGetHeight(objj_msgSend(_headerView,"frame")))); +} +_draggedColumn=nil; +_differedColumnDataToRemove=[]; +_implementsCustomDrawRow=objj_msgSend(_2f,"implementsSelector:",sel_getUid("drawRow:clipRect:")); +} +}),new objj_method(sel_getUid("setDataSource:"),function(_31,_32,_33){ +with(_31){ +if(_dataSource===_33){ +return; +} +_dataSource=_33; +_implementedDataSourceMethods=0; +if(!_dataSource){ +return; +} +var _34=!!objj_msgSend(_31,"infoForBinding:","content"); +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("numberOfRowsInTableView:"))){ +_implementedDataSourceMethods|=_1; +}else{ +if(!_34){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(_33,"description")+" does not implement numberOfRowsInTableView:."); +} +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:objectValueForTableColumn:row:"))){ +_implementedDataSourceMethods|=_2; +}else{ +if(!_34){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(_33,"description")+" does not implement tableView:objectValueForTableColumn:row:"); +} +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:setObjectValue:forTableColumn:row:"))){ +_implementedDataSourceMethods|=_3; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:acceptDrop:row:dropOperation:"))){ +_implementedDataSourceMethods|=_4; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:"))){ +_implementedDataSourceMethods|=_5; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"))){ +_implementedDataSourceMethods|=_6; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"))){ +_implementedDataSourceMethods|=_7; +} +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:sortDescriptorsDidChange:"))){ +_implementedDataSourceMethods|=_8; +} +objj_msgSend(_31,"reloadData"); +} +}),new objj_method(sel_getUid("dataSource"),function(_35,_36){ +with(_35){ +return _dataSource; +} +}),new objj_method(sel_getUid("reloadDataForRowIndexes:columnIndexes:"),function(_37,_38,_39,_3a){ +with(_37){ +objj_msgSend(_37,"reloadData"); +} +}),new objj_method(sel_getUid("reloadData"),function(_3b,_3c){ +with(_3b){ +_reloadAllRows=YES; +_objectValues={}; +objj_msgSend(_3b,"noteNumberOfRowsChanged"); +objj_msgSend(_3b,"setNeedsLayout"); +objj_msgSend(_3b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setDoubleAction:"),function(_3d,_3e,_3f){ +with(_3d){ +_doubleAction=_3f; +} +}),new objj_method(sel_getUid("doubleAction"),function(_40,_41){ +with(_40){ +return _doubleAction; +} +}),new objj_method(sel_getUid("clickedRow"),function(_42,_43){ +with(_42){ +return _clickedRow; +} +}),new objj_method(sel_getUid("setAllowsColumnReordering:"),function(_44,_45,_46){ +with(_44){ +_allowsColumnReordering=!!_46; +} +}),new objj_method(sel_getUid("allowsColumnReordering"),function(_47,_48){ +with(_47){ +return _allowsColumnReordering; +} +}),new objj_method(sel_getUid("setAllowsColumnResizing:"),function(_49,_4a,_4b){ +with(_49){ +_allowsColumnResizing=!!_4b; +} +}),new objj_method(sel_getUid("allowsColumnResizing"),function(_4c,_4d){ +with(_4c){ +return _allowsColumnResizing; +} +}),new objj_method(sel_getUid("setAllowsMultipleSelection:"),function(_4e,_4f,_50){ +with(_4e){ +_allowsMultipleSelection=!!_50; +} +}),new objj_method(sel_getUid("allowsMultipleSelection"),function(_51,_52){ +with(_51){ +return _allowsMultipleSelection; +} +}),new objj_method(sel_getUid("setAllowsEmptySelection:"),function(_53,_54,_55){ +with(_53){ +_allowsEmptySelection=!!_55; +} +}),new objj_method(sel_getUid("allowsEmptySelection"),function(_56,_57){ +with(_56){ +return _allowsEmptySelection; +} +}),new objj_method(sel_getUid("setAllowsColumnSelection:"),function(_58,_59,_5a){ +with(_58){ +_allowsColumnSelection=!!_5a; +} +}),new objj_method(sel_getUid("allowsColumnSelection"),function(_5b,_5c){ +with(_5b){ +return _allowsColumnSelection; +} +}),new objj_method(sel_getUid("setIntercellSpacing:"),function(_5d,_5e,_5f){ +with(_5d){ +if((_intercellSpacing.width==_5f.width&&_intercellSpacing.height==_5f.height)){ +return; +} +_intercellSpacing={width:_5f.width,height:_5f.height}; +_dirtyTableColumnRangeIndex=0; +objj_msgSend(_5d,"_recalculateTableColumnRanges"); +objj_msgSend(_5d,"setNeedsLayout"); +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +objj_msgSend(_headerView,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setThemeState:"),function(_60,_61,_62){ +with(_60){ +} +}),new objj_method(sel_getUid("intercellSpacing"),function(_63,_64){ +with(_63){ +return {width:_intercellSpacing.width,height:_intercellSpacing.height}; +} +}),new objj_method(sel_getUid("setRowHeight:"),function(_65,_66,_67){ +with(_65){ +_67=+_67; +if(_rowHeight===_67){ +return; +} +_rowHeight=MAX(0,_67); +objj_msgSend(_65,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("rowHeight"),function(_68,_69){ +with(_68){ +return _rowHeight; +} +}),new objj_method(sel_getUid("setUsesAlternatingRowBackgroundColors:"),function(_6a,_6b,_6c){ +with(_6a){ +_usesAlternatingRowBackgroundColors=_6c; +} +}),new objj_method(sel_getUid("usesAlternatingRowBackgroundColors"),function(_6d,_6e){ +with(_6d){ +return _usesAlternatingRowBackgroundColors; +} +}),new objj_method(sel_getUid("setAlternatingRowBackgroundColors:"),function(_6f,_70,_71){ +with(_6f){ +objj_msgSend(_6f,"setValue:forThemeAttribute:",_71,"alternating-row-colors"); +objj_msgSend(_6f,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("alternatingRowBackgroundColors"),function(_72,_73){ +with(_72){ +return objj_msgSend(_72,"currentValueForThemeAttribute:","alternating-row-colors"); +} +}),new objj_method(sel_getUid("selectionHighlightStyle"),function(_74,_75){ +with(_74){ +return _selectionHighlightStyle; +} +}),new objj_method(sel_getUid("setSelectionHighlightStyle:"),function(_76,_77,_78){ +with(_76){ +if(_78==CPTableViewSelectionHighlightStyleSourceList&&!CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +return; +} +_selectionHighlightStyle=_78; +objj_msgSend(_76,"setNeedsDisplay:",YES); +if(_78===CPTableViewSelectionHighlightStyleSourceList){ +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleSourceList; +}else{ +_destinationDragStyle=CPTableViewDraggingDestinationFeedbackStyleRegular; +} +} +}),new objj_method(sel_getUid("setSelectionHighlightColor:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"setValue:forThemeAttribute:",_7b,"selection-color"); +objj_msgSend(_79,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("selectionHighlightColor"),function(_7c,_7d){ +with(_7c){ +return objj_msgSend(_7c,"currentValueForThemeAttribute:","selection-color"); +} +}),new objj_method(sel_getUid("setSelectionGradientColors:"),function(_7e,_7f,_80){ +with(_7e){ +objj_msgSend(_7e,"setValue:forThemeAttribute:",_80,"sourcelist-selection-color"); +objj_msgSend(_7e,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("selectionGradientColors"),function(_81,_82){ +with(_81){ +return objj_msgSend(_81,"currentValueForThemeAttribute:","sourcelist-selection-color"); +} +}),new objj_method(sel_getUid("setGridColor:"),function(_83,_84,_85){ +with(_83){ +objj_msgSend(_83,"setValue:forThemeAttribute:",_85,"grid-color"); +objj_msgSend(_83,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("gridColor"),function(_86,_87){ +with(_86){ +return objj_msgSend(_86,"currentValueForThemeAttribute:","grid-color"); +} +}),new objj_method(sel_getUid("setGridStyleMask:"),function(_88,_89,_8a){ +with(_88){ +if(_gridStyleMask===_8a){ +return; +} +_gridStyleMask=_8a; +objj_msgSend(_88,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("gridStyleMask"),function(_8b,_8c){ +with(_8b){ +return _gridStyleMask; +} +}),new objj_method(sel_getUid("addTableColumn:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_tableColumns,"addObject:",_8f); +objj_msgSend(_8f,"setTableView:",_8d); +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=(_tableColumns.length)-1; +}else{ +_dirtyTableColumnRangeIndex=MIN((_tableColumns.length)-1,_dirtyTableColumnRangeIndex); +} +objj_msgSend(_8d,"tile"); +objj_msgSend(_8d,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("removeTableColumn:"),function(_90,_91,_92){ +with(_90){ +if(objj_msgSend(_92,"tableView")!==_90){ +return; +} +var _93=objj_msgSend(_tableColumns,"indexOfObjectIdenticalTo:",_92); +if(_93===CPNotFound){ +return; +} +objj_msgSend(_differedColumnDataToRemove,"addObject:",{"column":_92,"shouldBeHidden":objj_msgSend(_92,"isHidden")}); +objj_msgSend(_92,"setHidden:",YES); +objj_msgSend(_92,"setTableView:",nil); +var _94=objj_msgSend(_92,"UID"); +if(_objectValues[_94]){ +_objectValues[_94]=nil; +} +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=_93; +}else{ +_dirtyTableColumnRangeIndex=MIN(_93,_dirtyTableColumnRangeIndex); +} +objj_msgSend(_90,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("_setDraggedColumn:"),function(_95,_96,_97){ +with(_95){ +if(_draggedColumn===_97){ +return; +} +_draggedColumn=_97; +objj_msgSend(_95,"reloadDataForRowIndexes:columnIndexes:",_exposedRows,objj_msgSend(CPIndexSet,"indexSetWithIndex:",objj_msgSend(_tableColumns,"indexOfObject:",_97))); +} +}),new objj_method(sel_getUid("moveColumn:toColumn:"),function(_98,_99,_9a,_9b){ +with(_98){ +_9a=+_9a; +_9b=+_9b; +if(_9a===_9b){ +return; +} +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=MIN(_9a,_9b); +}else{ +_dirtyTableColumnRangeIndex=MIN(_9a,_9b,_dirtyTableColumnRangeIndex); +} +var _9c=_tableColumns[_9a]; +objj_msgSend(_tableColumns,"removeObjectAtIndex:",_9a); +objj_msgSend(_tableColumns,"insertObject:atIndex:",_9c,_9b); +objj_msgSend(objj_msgSend(_98,"headerView"),"setNeedsLayout"); +objj_msgSend(objj_msgSend(_98,"headerView"),"setNeedsDisplay:",YES); +var _9d=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_98,"numberOfRows"))),_9e=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_9a,_9b)); +objj_msgSend(_98,"reloadDataForRowIndexes:columnIndexes:",_9d,_9e); +} +}),new objj_method(sel_getUid("_tableColumnVisibilityDidChange:"),function(_9f,_a0,_a1){ +with(_9f){ +var _a2=objj_msgSend(objj_msgSend(_9f,"tableColumns"),"indexOfObjectIdenticalTo:",_a1); +if(_dirtyTableColumnRangeIndex<0){ +_dirtyTableColumnRangeIndex=_a2; +}else{ +_dirtyTableColumnRangeIndex=MIN(_a2,_dirtyTableColumnRangeIndex); +} +objj_msgSend(objj_msgSend(_9f,"headerView"),"setNeedsLayout"); +objj_msgSend(objj_msgSend(_9f,"headerView"),"setNeedsDisplay:",YES); +var _a3=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(0,objj_msgSend(_9f,"numberOfRows"))); +objj_msgSend(_9f,"reloadDataForRowIndexes:columnIndexes:",_a3,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_a2)); +} +}),new objj_method(sel_getUid("tableColumns"),function(_a4,_a5){ +with(_a4){ +return _tableColumns; +} +}),new objj_method(sel_getUid("columnWithIdentifier:"),function(_a6,_a7,_a8){ +with(_a6){ +var _a9=0,_aa=(_tableColumns.length); +for(;_a9<_aa;++_a9){ +if(objj_msgSend(_tableColumns[_a9],"identifier")===_a8){ +return _a9; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tableColumnWithIdentifier:"),function(_ab,_ac,_ad){ +with(_ab){ +var _ae=objj_msgSend(_ab,"columnWithIdentifier:",_ad); +if(_ae===CPNotFound){ +return nil; +} +return _tableColumns[_ae]; +} +}),new objj_method(sel_getUid("selectColumnIndexes:byExtendingSelection:"),function(_af,_b0,_b1,_b2){ +with(_af){ +if((objj_msgSend(_b1,"firstIndex")!=CPNotFound&&objj_msgSend(_b1,"firstIndex")<0)||objj_msgSend(_b1,"lastIndex")>=objj_msgSend(_af,"numberOfColumns")){ +return; +} +if(objj_msgSend(_selectedRowIndexes,"count")>0){ +objj_msgSend(_af,"_updateHighlightWithOldRows:newRows:",_selectedRowIndexes,objj_msgSend(CPIndexSet,"indexSet")); +_selectedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +} +var _b3=objj_msgSend(_selectedColumnIndexes,"copy"); +if(_b2){ +objj_msgSend(_selectedColumnIndexes,"addIndexes:",_b1); +}else{ +_selectedColumnIndexes=objj_msgSend(_b1,"copy"); +} +objj_msgSend(_af,"_updateHighlightWithOldColumns:newColumns:",_b3,_selectedColumnIndexes); +objj_msgSend(_af,"setNeedsDisplay:",YES); +if(_headerView){ +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +} +objj_msgSend(_af,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("_setSelectedRowIndexes:"),function(_b4,_b5,_b6){ +with(_b4){ +if(objj_msgSend(_selectedRowIndexes,"isEqualToIndexSet:",_b6)){ +return; +} +var _b7=_selectedRowIndexes; +_lastSelectedRow=(objj_msgSend(_b6,"count")>0)?objj_msgSend(_b6,"lastIndex"):-1; +_selectedRowIndexes=objj_msgSend(_b6,"copy"); +objj_msgSend(_b4,"_updateHighlightWithOldRows:newRows:",_b7,_selectedRowIndexes); +objj_msgSend(_b4,"setNeedsDisplay:",YES); +objj_msgSend(objj_msgSend(CPKeyValueBinding,"getBinding:forObject:","selectionIndexes",_b4),"reverseSetValueFor:","selectedRowIndexes"); +objj_msgSend(_b4,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("selectRowIndexes:byExtendingSelection:"),function(_b8,_b9,_ba,_bb){ +with(_b8){ +if(objj_msgSend(_ba,"isEqualToIndexSet:",_selectedRowIndexes)||((objj_msgSend(_ba,"firstIndex")!=CPNotFound&&objj_msgSend(_ba,"firstIndex")<0)||objj_msgSend(_ba,"lastIndex")>=objj_msgSend(_b8,"numberOfRows"))){ +return; +} +if(objj_msgSend(_selectedColumnIndexes,"count")>0){ +objj_msgSend(_b8,"_updateHighlightWithOldColumns:newColumns:",_selectedColumnIndexes,objj_msgSend(CPIndexSet,"indexSet")); +_selectedColumnIndexes=objj_msgSend(CPIndexSet,"indexSet"); +if(_headerView){ +objj_msgSend(_headerView,"setNeedsDisplay:",YES); +} +} +var _bc; +if(_bb){ +_bc=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_bc,"addIndexes:",_ba); +}else{ +_bc=objj_msgSend(_ba,"copy"); +} +objj_msgSend(_b8,"_setSelectedRowIndexes:",_bc); +} +}),new objj_method(sel_getUid("_updateHighlightWithOldRows:newRows:"),function(_bd,_be,_bf,_c0){ +with(_bd){ +var _c1=objj_msgSend(_exposedRows,"firstIndex"),_c2=objj_msgSend(_exposedRows,"lastIndex")-_c1+1,_c3=[],_c4=[],_c5=objj_msgSend(_bf,"copy"),_c6=objj_msgSend(_c0,"copy"); +objj_msgSend(_c5,"removeMatches:",_c6); +objj_msgSend(_c5,"getIndexes:maxCount:inIndexRange:",_c3,-1,CPMakeRange(_c1,_c2)); +objj_msgSend(_c6,"getIndexes:maxCount:inIndexRange:",_c4,-1,CPMakeRange(_c1,_c2)); +for(var _c7 in _dataViewsForTableColumns){ +var _c8=_dataViewsForTableColumns[_c7],_c9=_c3.length; +while(_c9--){ +objj_msgSend(_bd,"_performSelection:forRow:context:",NO,_c3[_c9],_c8); +} +_c9=_c4.length; +while(_c9--){ +objj_msgSend(_bd,"_performSelection:forRow:context:",YES,_c4[_c9],_c8); +} +} +} +}),new objj_method(sel_getUid("_performSelection:forRow:context:"),function(_ca,_cb,_cc,_cd,_ce){ +with(_ca){ +var _cf=_ce[_cd],_d0=_cc?"setThemeState:":"unsetThemeState:"; +objj_msgSend(_cf,"performSelector:withObject:",CPSelectorFromString(_d0),CPThemeStateSelectedDataView); +} +}),new objj_method(sel_getUid("_updateHighlightWithOldColumns:newColumns:"),function(_d1,_d2,_d3,_d4){ +with(_d1){ +var _d5=objj_msgSend(_exposedColumns,"firstIndex"),_d6=objj_msgSend(_exposedColumns,"lastIndex")-_d5+1,_d7=[],_d8=[],_d9=objj_msgSend(_d3,"copy"),_da=objj_msgSend(_d4,"copy"),_db=[]; +objj_msgSend(_d9,"removeMatches:",_da); +objj_msgSend(_d9,"getIndexes:maxCount:inIndexRange:",_d7,-1,CPMakeRange(_d5,_d6)); +objj_msgSend(_da,"getIndexes:maxCount:inIndexRange:",_d8,-1,CPMakeRange(_d5,_d6)); +objj_msgSend(_exposedRows,"getIndexes:maxCount:inIndexRange:",_db,-1,nil); +var _dc=_db.length,_dd=_d7.length; +while(_dd--){ +var _de=_d7[_dd],_df=objj_msgSend(_tableColumns[_de],"UID"),_e0=_dataViewsForTableColumns[_df]; +for(var i=0;i<_dc;i++){ +var _e1=_db[i],_e2=_e0[_e1]; +objj_msgSend(_e2,"unsetThemeState:",CPThemeStateSelectedDataView); +} +if(_headerView){ +var _e3=objj_msgSend(_tableColumns[_de],"headerView"); +objj_msgSend(_e3,"unsetThemeState:",CPThemeStateSelected); +} +} +_dd=_d8.length; +while(_dd--){ +var _de=_d8[_dd],_df=objj_msgSend(_tableColumns[_de],"UID"),_e0=_dataViewsForTableColumns[_df]; +for(var i=0;i<_dc;i++){ +var _e1=_db[i],_e2=_e0[_e1]; +objj_msgSend(_e2,"setThemeState:",CPThemeStateSelectedDataView); +} +if(_headerView){ +var _e3=objj_msgSend(_tableColumns[_de],"headerView"); +objj_msgSend(_e3,"setThemeState:",CPThemeStateSelected); +} +} +} +}),new objj_method(sel_getUid("selectedColumn"),function(_e4,_e5){ +with(_e4){ +objj_msgSend(_selectedColumnIndexes,"lastIndex"); +} +}),new objj_method(sel_getUid("selectedColumnIndexes"),function(_e6,_e7){ +with(_e6){ +return _selectedColumnIndexes; +} +}),new objj_method(sel_getUid("selectedRow"),function(_e8,_e9){ +with(_e8){ +return _lastSelectedRow; +} +}),new objj_method(sel_getUid("selectedRowIndexes"),function(_ea,_eb){ +with(_ea){ +return objj_msgSend(_selectedRowIndexes,"copy"); +} +}),new objj_method(sel_getUid("deselectColumn:"),function(_ec,_ed,_ee){ +with(_ec){ +var _ef=objj_msgSend(_selectedColumnIndexes,"copy"); +objj_msgSend(_ef,"removeIndex:",_ee); +objj_msgSend(_ec,"selectColumnIndexes:byExtendingSelection:",_ef,NO); +objj_msgSend(_ec,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("deselectRow:"),function(_f0,_f1,_f2){ +with(_f0){ +var _f3=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_f3,"removeIndex:",_f2); +objj_msgSend(_f0,"selectRowIndexes:byExtendingSelection:",_f3,NO); +objj_msgSend(_f0,"_noteSelectionDidChange"); +} +}),new objj_method(sel_getUid("numberOfSelectedColumns"),function(_f4,_f5){ +with(_f4){ +return objj_msgSend(_selectedColumnIndexes,"count"); +} +}),new objj_method(sel_getUid("numberOfSelectedRows"),function(_f6,_f7){ +with(_f6){ +return objj_msgSend(_selectedRowIndexes,"count"); +} +}),new objj_method(sel_getUid("isColumnSelected:"),function(_f8,_f9,_fa){ +with(_f8){ +return objj_msgSend(_selectedColumnIndexes,"containsIndex:",_fa); +} +}),new objj_method(sel_getUid("isRowSelected:"),function(_fb,_fc,_fd){ +with(_fb){ +return objj_msgSend(_selectedRowIndexes,"containsIndex:",_fd); +} +}),new objj_method(sel_getUid("deselectAll"),function(_fe,_ff){ +with(_fe){ +objj_msgSend(_fe,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +objj_msgSend(_fe,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +} +}),new objj_method(sel_getUid("numberOfColumns"),function(self,_100){ +with(self){ +return (_tableColumns.length); +} +}),new objj_method(sel_getUid("numberOfRows"),function(self,_101){ +with(self){ +if(_numberOfRows){ +return _numberOfRows; +} +var _102=objj_msgSend(self,"infoForBinding:","content"); +if(_102){ +var _103=objj_msgSend(_102,"objectForKey:",CPObservedObjectKey),_104=objj_msgSend(_102,"objectForKey:",CPObservedKeyPathKey); +return objj_msgSend(objj_msgSend(_103,"valueForKeyPath:",_104),"count"); +}else{ +if(_dataSource){ +return objj_msgSend(_dataSource,"numberOfRowsInTableView:",self); +} +} +return 0; +} +}),new objj_method(sel_getUid("editColumn:row:withEvent:select:"),function(self,_105,_106,_107,_108,flag){ +with(self){ +if(!objj_msgSend(self,"isRowSelected:",_107)){ +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:","Error","Attempt to edit row="+_107+" when not selected.",nil),"raise"); +} +_editingCellIndex=CGPointMake(_106,_107); +objj_msgSend(self,"reloadDataForRowIndexes:columnIndexes:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_107),objj_msgSend(CPIndexSet,"indexSetWithIndex:",_106)); +} +}),new objj_method(sel_getUid("editedColumn"),function(self,_109){ +with(self){ +if(!_editingCellIndex){ +return CPNotFound; +} +return _editingCellIndex.x; +} +}),new objj_method(sel_getUid("editedRow"),function(self,_10a){ +with(self){ +if(!_editingCellIndex){ +return CPNotFound; +} +return _editingCellIndex.y; +} +}),new objj_method(sel_getUid("cornerView"),function(self,_10b){ +with(self){ +return _cornerView; +} +}),new objj_method(sel_getUid("setCornerView:"),function(self,_10c,_10d){ +with(self){ +if(_cornerView===_10d){ +return; +} +_cornerView=_10d; +var _10e=objj_msgSend(objj_msgSend(self,"superview"),"superview"); +if(objj_msgSend(_10e,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))&&objj_msgSend(_10e,"documentView")===self){ +objj_msgSend(_10e,"_updateCornerAndHeaderView"); +} +} +}),new objj_method(sel_getUid("headerView"),function(self,_10f){ +with(self){ +return _headerView; +} +}),new objj_method(sel_getUid("setHeaderView:"),function(self,_110,_111){ +with(self){ +if(_headerView===_111){ +return; +} +objj_msgSend(_headerView,"setTableView:",nil); +_headerView=_111; +if(_headerView){ +objj_msgSend(_headerView,"setTableView:",self); +objj_msgSend(_headerView,"setFrameSize:",{width:(objj_msgSend(self,"frame").size.width),height:(objj_msgSend(_headerView,"frame").size.height)}); +} +var _112=objj_msgSend(objj_msgSend(self,"superview"),"superview"); +if(objj_msgSend(_112,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))&&objj_msgSend(_112,"documentView")===self){ +objj_msgSend(_112,"_updateCornerAndHeaderView"); +} +} +}),new objj_method(sel_getUid("_recalculateTableColumnRanges"),function(self,_113){ +with(self){ +if(_dirtyTableColumnRangeIndex<0){ +return; +} +_numberOfHiddenColumns=0; +var _114=_dirtyTableColumnRangeIndex,_115=(_tableColumns.length),x=_114===0?0:CPMaxRange(_tableColumnRanges[_114-1]); +for(;_114<_115;++_114){ +var _116=_tableColumns[_114]; +if(objj_msgSend(_116,"isHidden")){ +_numberOfHiddenColumns+=1; +_tableColumnRanges[_114]=CPMakeRange(x,0); +}else{ +var _117=objj_msgSend(_tableColumns[_114],"width")+_intercellSpacing.width; +_tableColumnRanges[_114]=CPMakeRange(x,_117); +x+=_117; +} +} +_tableColumnRanges.length=_115; +_dirtyTableColumnRangeIndex=CPNotFound; +} +}),new objj_method(sel_getUid("rectOfColumn:"),function(self,_118,_119){ +with(self){ +_119=+_119; +var _11a=objj_msgSend(objj_msgSend(self,"tableColumns"),"objectAtIndex:",_119); +if(objj_msgSend(_11a,"isHidden")||_119<0||_119>=(_tableColumns.length)){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _11b=_tableColumnRanges[_119]; +return {origin:{x:_11b.location,y:0},size:{width:_11b.length,height:CGRectGetHeight(objj_msgSend(self,"bounds"))}}; +} +}),new objj_method(sel_getUid("rectOfRow:"),function(self,_11c,_11d){ +with(self){ +var _11e=_rowHeight+_intercellSpacing.height; +return {origin:{x:0,y:_11d*_11e},size:{width:(objj_msgSend(self,"bounds").size.width),height:_11e}}; +} +}),new objj_method(sel_getUid("rowsInRect:"),function(self,_11f,_120){ +with(self){ +if(_numberOfRows<=0){ +return CPMakeRange(0,0); +} +var _121=objj_msgSend(self,"bounds"); +if(!CGRectIntersectsRect(_120,_121)){ +return CPMakeRange(0,0); +} +var _122=objj_msgSend(self,"rowAtPoint:",_120.origin); +if(_122<0){ +_122=0; +} +var _123=objj_msgSend(self,"rowAtPoint:",{x:0,y:(_120.origin.y+_120.size.height)}); +if(_123<0){ +_123=_numberOfRows-1; +} +return CPMakeRange(_122,_123-_122+1); +} +}),new objj_method(sel_getUid("columnIndexesInRect:"),function(self,_124,_125){ +with(self){ +var _126=MAX(0,objj_msgSend(self,"columnAtPoint:",{x:_125.origin.x,y:0})),_127=objj_msgSend(self,"columnAtPoint:",{x:(_125.origin.x+_125.size.width),y:0}); +if(_127===CPNotFound){ +_127=(_tableColumns.length)-1; +} +if(_numberOfHiddenColumns<=0){ +return objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_126,_127-_126+1)); +} +var _128=objj_msgSend(CPIndexSet,"indexSet"); +for(;_126<=_127;++_126){ +var _129=_tableColumns[_126]; +if(!objj_msgSend(_129,"isHidden")){ +objj_msgSend(_128,"addIndex:",_126); +} +} +return _128; +} +}),new objj_method(sel_getUid("columnAtPoint:"),function(self,_12a,_12b){ +with(self){ +var _12c=objj_msgSend(self,"bounds"); +if(!(_12b.x>=(_12c.origin.x)&&_12b.y>=(_12c.origin.y)&&_12b.x<(_12c.origin.x+_12c.size.width)&&_12b.y<(_12c.origin.y+_12c.size.height))){ +return CPNotFound; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var x=_12b.x,low=0,high=_tableColumnRanges.length-1; +while(low<=high){ +var _12d=FLOOR(low+(high-low)/2),_12e=_tableColumnRanges[_12d]; +if(x<_12e.location){ +high=_12d-1; +}else{ +if(x>=CPMaxRange(_12e)){ +low=_12d+1; +}else{ +var _12f=_tableColumnRanges.length; +while(_12d<_12f&&objj_msgSend(_tableColumns[_12d],"isHidden")){ +++_12d; +} +if(_12d<_12f){ +return _12d; +} +return CPNotFound; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("rowAtPoint:"),function(self,_130,_131){ +with(self){ +var y=_131.y,row=FLOOR(y/(_rowHeight+_intercellSpacing.height)); +if(row>=_numberOfRows){ +return -1; +} +return row; +} +}),new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"),function(self,_132,_133,aRow){ +with(self){ +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _134=_tableColumnRanges[_133],_135=objj_msgSend(self,"rectOfRow:",aRow),_136=FLOOR(_intercellSpacing.width/2),_137=FLOOR(_intercellSpacing.height/2); +return {origin:{x:_134.location+_136,y:(_135.origin.y)+_137},size:{width:_134.length-_intercellSpacing.width,height:(_135.size.height)-_intercellSpacing.height}}; +} +}),new objj_method(sel_getUid("resizeWithOldSuperviewSize:"),function(self,_138,_139){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"resizeWithOldSuperviewSize:",_139); +if(_disableAutomaticResizing){ +return; +} +var mask=_columnAutoResizingStyle; +if(mask===CPTableViewUniformColumnAutoresizingStyle){ +objj_msgSend(self,"_resizeAllColumnUniformlyWithOldSize:",_139); +}else{ +if(mask===CPTableViewLastColumnOnlyAutoresizingStyle){ +objj_msgSend(self,"sizeLastColumnToFit"); +}else{ +if(mask===CPTableViewFirstColumnOnlyAutoresizingStyle){ +objj_msgSend(self,"_autoResizeFirstColumn"); +} +} +} +} +}),new objj_method(sel_getUid("_autoResizeFirstColumn"),function(self,_13a){ +with(self){ +var _13b=objj_msgSend(self,"superview"); +if(!_13b){ +return; +} +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _13c=(_tableColumns.length),_13d=nil,_13e=0,i=0; +for(;i<_13c;i++){ +var _13f=_tableColumns[i]; +if(!objj_msgSend(_13f,"isHidden")){ +if(!_13d){ +_13d=_13f; +} +_13e+=objj_msgSend(_13f,"width")+_intercellSpacing.width; +} +} +if(_13d){ +var _140=objj_msgSend(_13b,"bounds").size,_141=_140.width-_13e; +_141+=objj_msgSend(_13d,"width"); +_141=MAX(objj_msgSend(_13d,"minWidth"),_141); +_141=MIN(objj_msgSend(_13d,"maxWidth"),_141); +objj_msgSend(_13d,"setWidth:",FLOOR(_141)); +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("_resizeAllColumnUniformlyWithOldSize:"),function(self,_142,_143){ +with(self){ +var _144=objj_msgSend(self,"superview"); +if(!_144){ +return; +} +var _145=objj_msgSend(_144,"bounds").size; +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _146=(_tableColumns.length),_147=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"),_148=0; +for(var i=0;i<_146;i++){ +var _149=_tableColumns[i]; +if(!objj_msgSend(_149,"isHidden")&&(objj_msgSend(_149,"resizingMask")&CPTableColumnAutoresizingMask)){ +objj_msgSend(_147,"addObject:",i); +} +} +_146=objj_msgSend(_147,"count"); +if(_146>0){ +var _14a=CGRectGetMaxX(objj_msgSend(self,"rectOfColumn:",_147[_146-1])); +if(!_lastColumnShouldSnap&&(_14a>=_145.width&&_14a<=_143.width||_14a<=_145.width&&_14a>=_143.width)){ +_lastColumnShouldSnap=YES; +objj_msgSend(self,"_resizeAllColumnUniformlyWithOldSize:",CGSizeMake(_14a,0)); +} +if(!_lastColumnShouldSnap){ +return; +} +for(var i=0;i<_146;i++){ +var _14b=_147[i],_14c=_tableColumns[_14b],_14d=_148/(_146-i),_14e=(objj_msgSend(_14c,"width")/_143.width*objj_msgSend(_144,"bounds").size.width)+_14d,_14f=_14e; +_14f=MAX(objj_msgSend(_14c,"minWidth"),_14f); +_14f=MIN(objj_msgSend(_14c,"maxWidth"),_14f); +_148-=_14d; +_148+=_14e-_14f; +objj_msgSend(_14c,"setWidth:",_14f); +} +if(_148!==0){ +_lastColumnShouldSnap=NO; +} +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setColumnAutoresizingStyle:"),function(self,_150,_151){ +with(self){ +_columnAutoResizingStyle=_151; +} +}),new objj_method(sel_getUid("columnAutoresizingStyle"),function(self,_152){ +with(self){ +return _columnAutoResizingStyle; +} +}),new objj_method(sel_getUid("sizeLastColumnToFit"),function(self,_153){ +with(self){ +var _154=objj_msgSend(self,"superview"); +if(!_154){ +return; +} +var _155=objj_msgSend(_154,"bounds").size; +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _156=(_tableColumns.length); +while(_156--&&objj_msgSend(_tableColumns[_156],"isHidden")){ +} +if(_156>=0){ +var _157=_tableColumns[_156],_158=MAX(0,_155.width-CGRectGetMinX(objj_msgSend(self,"rectOfColumn:",_156))-_intercellSpacing.width); +if(_158>0){ +_158=MAX(objj_msgSend(_157,"minWidth"),_158); +_158=MIN(objj_msgSend(_157,"maxWidth"),_158); +objj_msgSend(_157,"setWidth:",_158); +} +} +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("noteNumberOfRowsChanged"),function(self,_159){ +with(self){ +var _15a=_numberOfRows; +_numberOfRows=nil; +_numberOfRows=objj_msgSend(self,"numberOfRows"); +var _15b=_15a-_numberOfRows; +if(_15b>0){ +objj_msgSend(_selectedRowIndexes,"removeIndexesInRange:",CPMakeRange(_numberOfRows,_15b)); +objj_msgSend(self,"_noteSelectionDidChange"); +} +objj_msgSend(self,"tile"); +} +}),new objj_method(sel_getUid("tile"),function(self,_15c){ +with(self){ +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _15d=_tableColumnRanges.length>0?CPMaxRange(objj_msgSend(_tableColumnRanges,"lastObject")):0,_15e=(_rowHeight+_intercellSpacing.height)*_numberOfRows,_15f=objj_msgSend(self,"superview"); +if(objj_msgSend(_15f,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _160=objj_msgSend(_15f,"bounds").size; +_15d=MAX(_160.width,_15d); +_15e=MAX(_160.height,_15e); +} +objj_msgSend(self,"setFrameSize:",{width:_15d,height:_15e}); +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("scrollRowToVisible:"),function(self,_161,_162){ +with(self){ +objj_msgSend(self,"scrollRectToVisible:",objj_msgSend(self,"rectOfRow:",_162)); +} +}),new objj_method(sel_getUid("scrollColumnToVisible:"),function(self,_163,_164){ +with(self){ +objj_msgSend(self,"scrollRectToVisible:",objj_msgSend(self,"rectOfColumn:",_164)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(self,_165,_166){ +with(self){ +if(_delegate===_166){ +return; +} +var _167=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_delegate){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidMove:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewColumnDidMoveNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidResize:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewColumnDidResizeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionDidChange:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewSelectionDidChangeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionIsChanging:"))){ +objj_msgSend(_167,"removeObserver:name:object:",_delegate,CPTableViewSelectionIsChangingNotification,self); +} +} +_delegate=_166; +_implementedDelegateMethods=0; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("selectionShouldChangeInTableView:"))){ +_implementedDelegateMethods|=_9; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:dataViewForTableColumn:row:"))){ +_implementedDelegateMethods|=_a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:didClickTableColumn:"))){ +_implementedDelegateMethods|=_b; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:didDragTableColumn:"))){ +_implementedDelegateMethods|=_c; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:heightOfRow:"))){ +_implementedDelegateMethods|=_d; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:isGroupRow:"))){ +_implementedDelegateMethods|=_e; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:mouseDownInHeaderOfTableColumn:"))){ +_implementedDelegateMethods|=_f; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:nextTypeSelectMatchFromRow:toRow:forString:"))){ +_implementedDelegateMethods|=_10; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:selectionIndexesForProposedSelection:"))){ +_implementedDelegateMethods|=_11; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldEditTableColumn:row:"))){ +_implementedDelegateMethods|=_12; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldSelectRow:"))){ +_implementedDelegateMethods|=_13; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldSelectTableColumn:"))){ +_implementedDelegateMethods|=_14; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldShowViewExpansionForTableColumn:row:"))){ +_implementedDelegateMethods|=_15; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldTrackView:forTableColumn:row:"))){ +_implementedDelegateMethods|=_16; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:shouldTypeSelectForEvent:withCurrentSearchString:"))){ +_implementedDelegateMethods|=_17; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:toolTipForView:rect:tableColumn:row:mouseLocation:"))){ +_implementedDelegateMethods|=_18; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:typeSelectStringForTableColumn:row:"))){ +_implementedDelegateMethods|=_19; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableView:willDisplayView:forTableColumn:row:"))){ +_implementedDelegateMethods|=_1a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidMove:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewColumnDidMove:"),CPTableViewColumnDidMoveNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewColumnDidResize:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewColumnDidResize:"),CPTableViewColumnDidResizeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionDidChange:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewSelectionDidChange:"),CPTableViewSelectionDidChangeNotification,self); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewSelectionIsChanging:"))){ +objj_msgSend(_167,"addObserver:selector:name:object:",_delegate,sel_getUid("tableViewSelectionIsChanging:"),CPTableViewSelectionIsChangingNotification,self); +} +} +}),new objj_method(sel_getUid("delegate"),function(self,_168){ +with(self){ +return _delegate; +} +}),new objj_method(sel_getUid("_sendDelegateDidClickColumn:"),function(self,_169,_16a){ +with(self){ +if(_implementedDelegateMethods&_b){ +objj_msgSend(_delegate,"tableView:didClickTableColumn:",self,_tableColumns[_16a]); +} +} +}),new objj_method(sel_getUid("_sendDelegateDidDragColumn:"),function(self,_16b,_16c){ +with(self){ +if(_implementedDelegateMethods&_c){ +objj_msgSend(_delegate,"tableView:didDragTableColumn:",self,_tableColumns[_16c]); +} +} +}),new objj_method(sel_getUid("_sendDelegateDidMouseDownInHeader:"),function(self,_16d,_16e){ +with(self){ +if(_implementedDelegateMethods&_f){ +objj_msgSend(_delegate,"tableView:mouseDownInHeaderOfTableColumn:",self,_tableColumns[_16e]); +} +} +}),new objj_method(sel_getUid("_sendDataSourceSortDescriptorsDidChange:"),function(self,_16f,_170){ +with(self){ +if(_implementedDataSourceMethods&_8){ +objj_msgSend(_dataSource,"tableView:sortDescriptorsDidChange:",self,_170); +} +} +}),new objj_method(sel_getUid("_didClickTableColumn:modifierFlags:"),function(self,_171,_172,_173){ +with(self){ +objj_msgSend(self,"_sendDelegateDidClickColumn:",_172); +if(_allowsColumnSelection){ +objj_msgSend(self,"_noteSelectionIsChanging"); +if(_173&CPCommandKeyMask){ +if(objj_msgSend(self,"isColumnSelected:",_172)){ +objj_msgSend(self,"deselectColumn:",_172); +}else{ +if(objj_msgSend(self,"allowsMultipleSelection")==YES){ +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_172),YES); +} +} +return; +}else{ +if(_173&CPShiftKeyMask){ +var _174=MIN(_172,objj_msgSend(_selectedColumnIndexes,"lastIndex")),_175=MAX(_172,objj_msgSend(_selectedColumnIndexes,"firstIndex")); +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(_174,_175-_174+1)),YES); +return; +}else{ +objj_msgSend(self,"selectColumnIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",_172),NO); +} +} +} +objj_msgSend(self,"_changeSortDescriptorsForClickOnColumn:",_172); +} +}),new objj_method(sel_getUid("_changeSortDescriptorsForClickOnColumn:"),function(self,_176,_177){ +with(self){ +var _178=objj_msgSend(_tableColumns,"objectAtIndex:",_177),_179=objj_msgSend(_178,"sortDescriptorPrototype"); +if(!_179){ +return; +} +var _17a=nil,_17b=objj_msgSend(self,"sortDescriptors"),_17c=objj_msgSend(CPArray,"arrayWithArray:",_17b),e=objj_msgSend(_17c,"objectEnumerator"),_17d=nil,_17e=objj_msgSend(CPArray,"array"); +if(objj_msgSend(_sortDescriptors,"count")>0){ +_17a=objj_msgSend(objj_msgSend(self,"sortDescriptors"),"objectAtIndex:",0); +} +while((_17d=objj_msgSend(e,"nextObject"))!=nil){ +if(objj_msgSend(objj_msgSend(_17d,"key"),"isEqual:",objj_msgSend(_179,"key"))){ +objj_msgSend(_17e,"addObject:",_17d); +} +} +if(objj_msgSend(objj_msgSend(_179,"key"),"isEqual:",objj_msgSend(_17a,"key"))){ +_179=objj_msgSend(_17a,"reversedSortDescriptor"); +} +objj_msgSend(_17c,"removeObjectsInArray:",_17e); +objj_msgSend(_17c,"insertObject:atIndex:",_179,0); +var _17f=objj_msgSend(_179,"ascending")?objj_msgSend(self,"_tableHeaderSortImage"):objj_msgSend(self,"_tableHeaderReverseSortImage"); +objj_msgSend(self,"setIndicatorImage:inTableColumn:",nil,_currentHighlightedTableColumn); +objj_msgSend(self,"setIndicatorImage:inTableColumn:",_17f,_178); +objj_msgSend(self,"setHighlightedTableColumn:",_178); +objj_msgSend(self,"setSortDescriptors:",_17c); +} +}),new objj_method(sel_getUid("setIndicatorImage:inTableColumn:"),function(self,_180,_181,_182){ +with(self){ +if(_182){ +var _183=objj_msgSend(_182,"headerView"); +if(objj_msgSend(_183,"respondsToSelector:",sel_getUid("_setIndicatorImage:"))){ +objj_msgSend(_183,"_setIndicatorImage:",_181); +} +} +} +}),new objj_method(sel_getUid("_tableHeaderSortImage"),function(self,_184){ +with(self){ +return objj_msgSend(self,"currentValueForThemeAttribute:","sort-image"); +} +}),new objj_method(sel_getUid("_tableHeaderReverseSortImage"),function(self,_185){ +with(self){ +return objj_msgSend(self,"currentValueForThemeAttribute:","sort-image-reversed"); +} +}),new objj_method(sel_getUid("highlightedTableColumn"),function(self,_186){ +with(self){ +return _currentHighlightedTableColumn; +} +}),new objj_method(sel_getUid("setHighlightedTableColumn:"),function(self,_187,_188){ +with(self){ +if(_currentHighlightedTableColumn==_188){ +return; +} +if(_headerView){ +if(_currentHighlightedTableColumn!=nil){ +objj_msgSend(objj_msgSend(_currentHighlightedTableColumn,"headerView"),"unsetThemeState:",CPThemeStateSelected); +} +if(_188!=nil){ +objj_msgSend(objj_msgSend(_188,"headerView"),"setThemeState:",CPThemeStateSelected); +} +} +_currentHighlightedTableColumn=_188; +} +}),new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"),function(self,_189,_18a,_18b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"),function(self,_18c,_18d,_18e,_18f,_190){ +with(self){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:","Frameworks/AppKit/Resources/GenericFile.png",CGSizeMake(32,32)); +} +}),new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"),function(self,_191,_192,_193,_194,_195){ +with(self){ +var _196=objj_msgSend(self,"bounds"),view=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",_196); +objj_msgSend(view,"setAlphaValue:",0.7); +var _197=objj_msgSend(_193,"count"); +while(_197--){ +var _198=objj_msgSend(_193,"objectAtIndex:",_197),row=objj_msgSend(_192,"firstIndex"); +while(row!==CPNotFound){ +var _199=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_198); +objj_msgSend(_199,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_197,row)); +objj_msgSend(_199,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_198,row)); +objj_msgSend(_198,"prepareDataView:forRow:",_199,row); +objj_msgSend(view,"addSubview:",_199); +row=objj_msgSend(_192,"indexGreaterThanIndex:",row); +} +} +var _19a=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_194,"locationInWindow"),nil); +_195.x=CGRectGetWidth(_196)/2-_19a.x; +_195.y=CGRectGetHeight(_196)/2-_19a.y; +return view; +} +}),new objj_method(sel_getUid("_dragViewForColumn:event:offset:"),function(self,_19b,_19c,_19d,_19e){ +with(self){ +var _19f=objj_msgSend(objj_msgSend(_CPColumnDragView,"alloc"),"initWithLineColor:",objj_msgSend(self,"gridColor")),_1a0=objj_msgSend(objj_msgSend(self,"tableColumns"),"objectAtIndex:",_19c),_1a1=CPRectMake(0,0,objj_msgSend(_1a0,"width"),(objj_msgSend(self,"visibleRect").size.height)+23),_1a2=objj_msgSend(self,"rectOfColumn:",_19c),_1a3=objj_msgSend(_1a0,"headerView"),row=objj_msgSend(_exposedRows,"firstIndex"); +while(row!==CPNotFound){ +var _1a4=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_1a0),_1a5=objj_msgSend(self,"frameOfDataViewAtColumn:row:",_19c,row); +_1a5.origin.x=0; +_1a5.origin.y=((_1a5.origin.y)-(objj_msgSend(self,"visibleRect").origin.y))+23; +objj_msgSend(_1a4,"setFrame:",_1a5); +objj_msgSend(_1a4,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_1a0,row)); +objj_msgSend(_19f,"addSubview:",_1a4); +row=objj_msgSend(_exposedRows,"indexGreaterThanIndex:",row); +} +var _1a6=objj_msgSend(_1a3,"frame"); +_1a6.origin={x:0,y:0}; +var _1a7=objj_msgSend(objj_msgSend(_CPTableColumnHeaderView,"alloc"),"initWithFrame:",_1a6); +objj_msgSend(_1a7,"setStringValue:",objj_msgSend(_1a3,"stringValue")); +objj_msgSend(_1a7,"setThemeState:",objj_msgSend(_1a3,"themeState")); +objj_msgSend(_19f,"addSubview:",_1a7); +objj_msgSend(_19f,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_19f,"setAlphaValue:",0.7); +objj_msgSend(_19f,"setFrame:",_1a1); +return _19f; +} +}),new objj_method(sel_getUid("setDraggingSourceOperationMask:forLocal:"),function(self,_1a8,mask,_1a9){ +with(self){ +_dragOperationDefaultMask=mask; +} +}),new objj_method(sel_getUid("setDropRow:dropOperation:"),function(self,_1aa,row,_1ab){ +with(self){ +if(row>objj_msgSend(self,"numberOfRows")&&_1ab===CPTableViewDropOn){ +var _1ac=objj_msgSend(self,"numberOfRows")+1,_1ad="Attempt to set dropRow="+row+" dropOperation=CPTableViewDropOn when [0 - "+_1ac+"] is valid range of rows."; +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:","Error",_1ad,nil),"raise"); +} +_retargetedDropRow=row; +_retargetedDropOperation=_1ab; +} +}),new objj_method(sel_getUid("setDraggingDestinationFeedbackStyle:"),function(self,_1ae,_1af){ +with(self){ +_destinationDragStyle=_1af; +} +}),new objj_method(sel_getUid("draggingDestinationFeedbackStyle"),function(self,_1b0){ +with(self){ +return _destinationDragStyle; +} +}),new objj_method(sel_getUid("setVerticalMotionCanBeginDrag:"),function(self,_1b1,_1b2){ +with(self){ +_verticalMotionCanDrag=_1b2; +} +}),new objj_method(sel_getUid("verticalMotionCanBeginDrag"),function(self,_1b3){ +with(self){ +return _verticalMotionCanDrag; +} +}),new objj_method(sel_getUid("setSortDescriptors:"),function(self,_1b4,_1b5){ +with(self){ +var _1b6=objj_msgSend(self,"sortDescriptors"),_1b7=nil; +if(_1b5==nil){ +_1b7=objj_msgSend(CPArray,"array"); +}else{ +_1b7=objj_msgSend(CPArray,"arrayWithArray:",_1b5); +} +if(objj_msgSend(_1b7,"isEqual:",_1b6)){ +return; +} +_sortDescriptors=_1b7; +objj_msgSend(self,"_sendDataSourceSortDescriptorsDidChange:",_1b6); +} +}),new objj_method(sel_getUid("sortDescriptors"),function(self,_1b8){ +with(self){ +return _sortDescriptors; +} +}),new objj_method(sel_getUid("_objectValueForTableColumn:row:"),function(self,_1b9,_1ba,_1bb){ +with(self){ +var _1bc=objj_msgSend(_1ba,"UID"),_1bd=_objectValues[_1bc]; +if(!_1bd){ +_1bd=[]; +_objectValues[_1bc]=_1bd; +} +var _1be=_1bd[_1bb]; +if(_1be===undefined&&(_implementedDataSourceMethods&_2)){ +_1be=objj_msgSend(_dataSource,"tableView:objectValueForTableColumn:row:",self,_1ba,_1bb); +_1bd[_1bb]=_1be; +} +return _1be; +} +}),new objj_method(sel_getUid("load"),function(self,_1bf){ +with(self){ +if(_reloadAllRows){ +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_exposedRows,_exposedColumns); +_exposedRows=objj_msgSend(CPIndexSet,"indexSet"); +_exposedColumns=objj_msgSend(CPIndexSet,"indexSet"); +_reloadAllRows=NO; +} +var _1c0=objj_msgSend(self,"visibleRect"),_1c1=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",objj_msgSend(self,"rowsInRect:",_1c0)),_1c2=objj_msgSend(self,"columnIndexesInRect:",_1c0),_1c3=objj_msgSend(_exposedRows,"copy"),_1c4=objj_msgSend(_exposedColumns,"copy"); +objj_msgSend(_1c3,"removeIndexes:",_1c1); +objj_msgSend(_1c4,"removeIndexes:",_1c2); +var _1c5=objj_msgSend(_1c1,"copy"),_1c6=objj_msgSend(_1c2,"copy"); +objj_msgSend(_1c5,"removeIndexes:",_exposedRows); +objj_msgSend(_1c6,"removeIndexes:",_exposedColumns); +var _1c7=objj_msgSend(_1c1,"copy"),_1c8=objj_msgSend(_1c2,"copy"); +objj_msgSend(_1c7,"removeIndexes:",_1c5); +objj_msgSend(_1c8,"removeIndexes:",_1c6); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c7,_1c4); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c3,_1c8); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c3,_1c4); +objj_msgSend(self,"_unloadDataViewsInRows:columns:",_1c5,_1c6); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c7,_1c6); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c5,_1c8); +objj_msgSend(self,"_loadDataViewsInRows:columns:",_1c5,_1c6); +_exposedRows=_1c1; +_exposedColumns=_1c2; +objj_msgSend(_tableDrawView,"setFrame:",_1c0); +objj_msgSend(self,"setNeedsDisplay:",YES); +for(var _1c9 in _cachedDataViews){ +var _1ca=_cachedDataViews[_1c9],_1cb=_1ca.length; +while(_1cb--){ +objj_msgSend(_1ca[_1cb],"removeFromSuperview"); +} +} +if(objj_msgSend(_differedColumnDataToRemove,"count")){ +for(var i=0;i<_differedColumnDataToRemove.length;i++){ +var data=_differedColumnDataToRemove[i],_1cc=data.column; +objj_msgSend(_1cc,"setHidden:",data.shouldBeHidden); +objj_msgSend(_tableColumns,"removeObject:",_1cc); +} +objj_msgSend(_differedColumnDataToRemove,"removeAllObjects"); +} +} +}),new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"),function(self,_1cd,rows,_1ce){ +with(self){ +if(!objj_msgSend(rows,"count")||!objj_msgSend(_1ce,"count")){ +return; +} +var _1cf=[],_1d0=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1cf,-1,nil); +objj_msgSend(_1ce,"getIndexes:maxCount:inIndexRange:",_1d0,-1,nil); +var _1d1=0,_1d2=_1d0.length; +for(;_1d1<_1d2;++_1d1){ +var _1d3=_1d0[_1d1],_1d4=_tableColumns[_1d3],_1d5=objj_msgSend(_1d4,"UID"),_1d6=0,_1d7=_1cf.length; +for(;_1d6<_1d7;++_1d6){ +var row=_1cf[_1d6],_1d8=_dataViewsForTableColumns[_1d5]; +if(!_1d8||row>=_1d8.length){ +continue; +} +var _1d9=objj_msgSend(_1d8,"objectAtIndex:",row); +objj_msgSend(_1d8,"replaceObjectAtIndex:withObject:",row,nil); +objj_msgSend(self,"_enqueueReusableDataView:",_1d9); +} +} +} +}),new objj_method(sel_getUid("_loadDataViewsInRows:columns:"),function(self,_1da,rows,_1db){ +with(self){ +if(!objj_msgSend(rows,"count")||!objj_msgSend(_1db,"count")){ +return; +} +var _1dc=[],_1dd=[],_1de=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1dc,-1,nil); +objj_msgSend(_1db,"getIndexes:maxCount:inIndexRange:",_1de,-1,nil); +if(_dirtyTableColumnRangeIndex!==CPNotFound){ +objj_msgSend(self,"_recalculateTableColumnRanges"); +} +var _1df=0,_1e0=_1de.length; +for(;_1df<_1e0;++_1df){ +var _1e1=_1de[_1df],_1e2=_tableColumns[_1e1]; +if(objj_msgSend(_1e2,"isHidden")||_1e2===_draggedColumn){ +continue; +} +var _1e3=objj_msgSend(_1e2,"UID"); +if(!_dataViewsForTableColumns[_1e3]){ +_dataViewsForTableColumns[_1e3]=[]; +} +var _1e4=0,_1e5=_1dc.length,_1e6=objj_msgSend(_selectedColumnIndexes,"containsIndex:",_1e1); +for(;_1e4<_1e5;++_1e4){ +var row=_1dc[_1e4],_1e7=objj_msgSend(self,"_newDataViewForRow:tableColumn:",row,_1e2),_1e8=objj_msgSend(_1e7,"isKindOfClass:",objj_msgSend(CPButton,"class")),_1e9=objj_msgSend(_1e7,"isKindOfClass:",objj_msgSend(CPTextField,"class")); +objj_msgSend(_1e7,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_1e1,row)); +objj_msgSend(_1e7,"setObjectValue:",objj_msgSend(self,"_objectValueForTableColumn:row:",_1e2,row)); +objj_msgSend(_1e2,"prepareDataView:forRow:",_1e7,row); +if(_1e6||objj_msgSend(self,"isRowSelected:",row)){ +objj_msgSend(_1e7,"setThemeState:",CPThemeStateSelectedDataView); +}else{ +objj_msgSend(_1e7,"unsetThemeState:",CPThemeStateSelectedDataView); +} +if(_implementedDelegateMethods&_1a){ +objj_msgSend(_delegate,"tableView:willDisplayView:forTableColumn:row:",self,_1e7,_1e2,row); +} +if(objj_msgSend(_1e7,"superview")!==self){ +objj_msgSend(self,"addSubview:",_1e7); +} +_dataViewsForTableColumns[_1e3][row]=_1e7; +if(_1e8||(_editingCellIndex&&_editingCellIndex.x===_1e1&&_editingCellIndex.y===row)){ +if(!_1e8){ +_editingCellIndex=undefined; +} +if(_1e9){ +objj_msgSend(_1e7,"setEditable:",YES); +objj_msgSend(_1e7,"setSendsActionOnEndEditing:",YES); +objj_msgSend(_1e7,"setSelectable:",YES); +objj_msgSend(_1e7,"selectText:",nil); +} +objj_msgSend(_1e7,"setTarget:",self); +objj_msgSend(_1e7,"setAction:",sel_getUid("_commitDataViewObjectValue:")); +_1e7.tableViewEditedColumnObj=_1e2; +_1e7.tableViewEditedRowIndex=row; +}else{ +if(_1e9){ +objj_msgSend(_1e7,"setEditable:",NO); +objj_msgSend(_1e7,"setSelectable:",NO); +} +} +} +} +} +}),new objj_method(sel_getUid("_layoutDataViewsInRows:columns:"),function(self,_1ea,rows,_1eb){ +with(self){ +var _1ec=[],_1ed=[]; +objj_msgSend(rows,"getIndexes:maxCount:inIndexRange:",_1ec,-1,nil); +objj_msgSend(_1eb,"getIndexes:maxCount:inIndexRange:",_1ed,-1,nil); +var _1ee=0,_1ef=_1ed.length; +for(;_1ee<_1ef;++_1ee){ +var _1f0=_1ed[_1ee],_1f1=_tableColumns[_1f0],_1f2=objj_msgSend(_1f1,"UID"),_1f3=_dataViewsForTableColumns[_1f2],_1f4=_tableColumnRanges[_1f0],_1f5=0,_1f6=_1ec.length; +for(;_1f5<_1f6;++_1f5){ +var row=_1ec[_1f5],_1f7=_1f3[row]; +objj_msgSend(_1f7,"setFrame:",objj_msgSend(self,"frameOfDataViewAtColumn:row:",_1f0,row)); +} +} +} +}),new objj_method(sel_getUid("_commitDataViewObjectValue:"),function(self,_1f8,_1f9){ +with(self){ +objj_msgSend(_dataSource,"tableView:setObjectValue:forTableColumn:row:",self,objj_msgSend(_1f9,"objectValue"),_1f9.tableViewEditedColumnObj,_1f9.tableViewEditedRowIndex); +if(objj_msgSend(_1f9,"respondsToSelector:",sel_getUid("setEditable:"))){ +objj_msgSend(_1f9,"setEditable:",NO); +} +} +}),new objj_method(sel_getUid("_newDataViewForRow:tableColumn:"),function(self,_1fa,aRow,_1fb){ +with(self){ +if((_implementedDelegateMethods&_a)){ +var _1fc=objj_msgSend(_delegate,"tableView:dataViewForTableColumn:row:",self,_1fb,aRow); +objj_msgSend(_1fb,"setDataView:",_1fc); +} +return objj_msgSend(_1fb,"_newDataViewForRow:",aRow); +} +}),new objj_method(sel_getUid("_enqueueReusableDataView:"),function(self,_1fd,_1fe){ +with(self){ +if(!_1fe){ +return; +} +var _1ff=_1fe.identifier; +if(!_cachedDataViews[_1ff]){ +_cachedDataViews[_1ff]=[_1fe]; +}else{ +_cachedDataViews[_1ff].push(_1fe); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(self,_200,_201){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"setFrameSize:",_201); +if(_headerView){ +objj_msgSend(_headerView,"setFrameSize:",{width:(objj_msgSend(self,"frame").size.width),height:(objj_msgSend(_headerView,"frame").size.height)}); +} +} +}),new objj_method(sel_getUid("setNeedsDisplay:"),function(self,_202,_203){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"setNeedsDisplay:",_203); +objj_msgSend(_tableDrawView,"setNeedsDisplay:",_203); +} +}),new objj_method(sel_getUid("_drawRect:"),function(self,_204,_205){ +with(self){ +var _206=objj_msgSend(self,"visibleRect"); +objj_msgSend(self,"drawBackgroundInClipRect:",_206); +objj_msgSend(self,"drawGridInClipRect:",_206); +objj_msgSend(self,"highlightSelectionInClipRect:",_206); +if(_implementsCustomDrawRow){ +objj_msgSend(self,"_drawRows:clipRect:",_exposedRows,_206); +} +} +}),new objj_method(sel_getUid("drawBackgroundInClipRect:"),function(self,_207,_208){ +with(self){ +if(!_usesAlternatingRowBackgroundColors){ +return; +} +var _209=objj_msgSend(self,"alternatingRowBackgroundColors"),_20a=objj_msgSend(_209,"count"); +if(_20a===0){ +return; +} +var _20b=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +if(_20a===1){ +CGContextSetFillColor(_20b,_209[0]); +CGContextFillRect(_20b,_208); +return; +} +var _20c=objj_msgSend(self,"rowsInRect:",_208),_20d=_20c.location,_20e=CPMaxRange(_20c)-1,_20f=MIN(_20c.length,_20a),_210=0; +while(_20f--){ +var row=_20d-_20d%_20a+_20f,_211=nil; +CGContextBeginPath(_20b); +for(;row<=_20e;row+=_20a){ +if(row>=_20d){ +CGContextAddRect(_20b,CGRectIntersection(_208,_211=objj_msgSend(self,"rectOfRow:",row))); +} +} +if(row-_20a===_20e){ +_210=(_211.origin.y+_211.size.height); +} +CGContextClosePath(_20b); +CGContextSetFillColor(_20b,_209[_20f]); +CGContextFillPath(_20b); +} +var _212=(_208.origin.y+_208.size.height); +if(_210>=_212||_rowHeight<=0){ +return; +} +var _213=_rowHeight+_intercellSpacing.height,_211={origin:{x:(_208.origin.x),y:(_208.origin.y)+_210},size:{width:(_208.size.width),height:_213}}; +for(row=_20e+1;_210<_212;++row){ +CGContextSetFillColor(_20b,_209[row%_20a]); +CGContextFillRect(_20b,_211); +_210+=_213; +_211.origin.y+=_213; +} +} +}),new objj_method(sel_getUid("drawGridInClipRect:"),function(self,_214,_215){ +with(self){ +var _216=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_217=objj_msgSend(self,"gridStyleMask"); +if(!(_217&(CPTableViewSolidHorizontalGridLineMask|CPTableViewSolidVerticalGridLineMask))){ +return; +} +CGContextBeginPath(_216); +if(_217&CPTableViewSolidHorizontalGridLineMask){ +var _218=objj_msgSend(self,"rowsInRect:",_215),row=_218.location,_219=CPMaxRange(_218)-1,rowY=-0.5,minX=(_215.origin.x),maxX=(_215.origin.x+_215.size.width); +for(;row<=_219;++row){ +var _21a=objj_msgSend(self,"rectOfRow:",row),rowY=(_21a.origin.y+_21a.size.height)-0.5; +CGContextMoveToPoint(_216,minX,rowY); +CGContextAddLineToPoint(_216,maxX,rowY); +} +if(_rowHeight>0){ +var _21b=_rowHeight+_intercellSpacing.height,_21c=(_215.origin.y+_215.size.height); +while(rowY<_21c){ +rowY+=_21b; +CGContextMoveToPoint(_216,minX,rowY); +CGContextAddLineToPoint(_216,maxX,rowY); +} +} +} +if(_217&CPTableViewSolidVerticalGridLineMask){ +var _21d=objj_msgSend(self,"columnIndexesInRect:",_215),_21e=[]; +objj_msgSend(_21d,"getIndexes:maxCount:inIndexRange:",_21e,-1,nil); +var _21f=0,_220=_21e.length,minY=(_215.origin.y),maxY=(_215.origin.y+_215.size.height); +for(;_21f<_220;++_21f){ +var _221=objj_msgSend(self,"rectOfColumn:",_21e[_21f]),_222=(_221.origin.x+_221.size.width)+0.5; +CGContextMoveToPoint(_216,_222,minY); +CGContextAddLineToPoint(_216,_222,maxY); +} +} +CGContextClosePath(_216); +CGContextSetStrokeColor(_216,objj_msgSend(self,"gridColor")); +CGContextStrokePath(_216); +} +}),new objj_method(sel_getUid("highlightSelectionInClipRect:"),function(self,_223,_224){ +with(self){ +if(_selectionHighlightStyle===CPTableViewSelectionHighlightStyleNone){ +return; +} +var _225=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_226=[],_227=sel_getUid("rectOfRow:"); +if(objj_msgSend(_selectedRowIndexes,"count")>=1){ +var _228=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",objj_msgSend(self,"rowsInRect:",_224)),_229=objj_msgSend(_228,"firstIndex"),_22a=CPMakeRange(_229,objj_msgSend(_228,"lastIndex")-_229+1); +objj_msgSend(_selectedRowIndexes,"getIndexes:maxCount:inIndexRange:",_226,-1,_22a); +}else{ +if(objj_msgSend(_selectedColumnIndexes,"count")>=1){ +_227=sel_getUid("rectOfColumn:"); +var _22b=objj_msgSend(self,"columnIndexesInRect:",_224),_22c=objj_msgSend(_22b,"firstIndex"),_22a=CPMakeRange(_22c,objj_msgSend(_22b,"lastIndex")-_22c+1); +objj_msgSend(_selectedColumnIndexes,"getIndexes:maxCount:inIndexRange:",_226,-1,_22a); +} +} +var _22d=count2=objj_msgSend(_226,"count"); +if(!_22d){ +return; +} +var _22e=(_selectionHighlightStyle===CPTableViewSelectionHighlightStyleSourceList&&objj_msgSend(_selectedRowIndexes,"count")>=1),_22f=0.5*(_gridStyleMask&CPTableViewSolidHorizontalGridLineMask); +CGContextBeginPath(_225); +var _230=objj_msgSend(self,"selectionGradientColors"),_231=objj_msgSend(_230,"objectForKey:",CPSourceListTopLineColor),_232=objj_msgSend(_230,"objectForKey:",CPSourceListBottomLineColor),_233=objj_msgSend(_230,"objectForKey:",CPSourceListGradient); +while(_22d--){ +var _234=CGRectIntersection(objj_msgSend(self,_227,_226[_22d]),_224); +CGContextAddRect(_225,_234); +if(_22e){ +var minX=(_234.origin.x),minY=(_234.origin.y),maxX=(_234.origin.x+_234.size.width),maxY=(_234.origin.y+_234.size.height)-_22f; +CGContextDrawLinearGradient(_225,_233,_234.origin,CGPointMake(minX,maxY),0); +CGContextClosePath(_225); +CGContextBeginPath(_225); +CGContextMoveToPoint(_225,minX,minY); +CGContextAddLineToPoint(_225,maxX,minY); +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,_231); +CGContextStrokePath(_225); +CGContextBeginPath(_225); +CGContextMoveToPoint(_225,minX,maxY); +CGContextAddLineToPoint(_225,maxX,maxY-1); +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,_232); +CGContextStrokePath(_225); +} +} +CGContextClosePath(_225); +if(!_22e){ +objj_msgSend(objj_msgSend(self,"selectionHighlightColor"),"setFill"); +CGContextFillPath(_225); +} +CGContextBeginPath(_225); +var _235=objj_msgSend(self,"gridStyleMask"); +for(var i=0;i<count2;i++){ +var rect=objj_msgSend(self,_227,_226[i]),minX=CGRectGetMinX(rect)-0.5,maxX=CGRectGetMaxX(rect)-0.5,minY=CGRectGetMinY(rect)-0.5,maxY=CGRectGetMaxY(rect)-0.5; +if(objj_msgSend(_selectedRowIndexes,"count")>=1&&_235&CPTableViewSolidVerticalGridLineMask){ +var _22b=objj_msgSend(self,"columnIndexesInRect:",_224),_236=[],_237=objj_msgSend(_22b,"firstIndex"),_22a=CPMakeRange(_237,objj_msgSend(_22b,"lastIndex")-_237+1); +objj_msgSend(_22b,"getIndexes:maxCount:inIndexRange:",_236,-1,_22a); +var _238=objj_msgSend(_236,"count"); +for(var c=_237;c<_238;c++){ +var _239=objj_msgSend(self,"rectOfColumn:",_236[c]),colX=CGRectGetMaxX(_239)+0.5; +CGContextMoveToPoint(_225,colX,minY); +CGContextAddLineToPoint(_225,colX,maxY); +} +} +if(objj_msgSend(_226,"containsObject:",_226[i]+1)){ +CGContextMoveToPoint(_225,minX,maxY); +CGContextAddLineToPoint(_225,maxX,maxY); +} +} +CGContextClosePath(_225); +CGContextSetStrokeColor(_225,objj_msgSend(self,"currentValueForThemeAttribute:","highlighted-grid-color")); +CGContextStrokePath(_225); +} +}),new objj_method(sel_getUid("_drawRows:clipRect:"),function(self,_23a,_23b,_23c){ +with(self){ +var row=objj_msgSend(_23b,"firstIndex"); +while(row!==CPNotFound){ +objj_msgSend(self,"drawRow:clipRect:",row,CGRectIntersection(_23c,objj_msgSend(self,"rectOfRow:",row))); +row=objj_msgSend(_23b,"indexGreaterThanIndex:",row); +} +} +}),new objj_method(sel_getUid("drawRow:clipRect:"),function(self,_23d,row,rect){ +with(self){ +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_23e){ +with(self){ +objj_msgSend(self,"load"); +} +}),new objj_method(sel_getUid("viewWillMoveToSuperview:"),function(self,_23f,_240){ +with(self){ +var _241=objj_msgSend(self,"superview"),_242=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_241){ +objj_msgSend(_242,"removeObserver:name:object:",self,CPViewFrameDidChangeNotification,_241); +objj_msgSend(_242,"removeObserver:name:object:",self,CPViewBoundsDidChangeNotification,_241); +} +if(_240){ +objj_msgSend(_240,"setPostsFrameChangedNotifications:",YES); +objj_msgSend(_240,"setPostsBoundsChangedNotifications:",YES); +objj_msgSend(_242,"addObserver:selector:name:object:",self,sel_getUid("superviewFrameChanged:"),CPViewFrameDidChangeNotification,_240); +objj_msgSend(_242,"addObserver:selector:name:object:",self,sel_getUid("superviewBoundsChanged:"),CPViewBoundsDidChangeNotification,_240); +} +} +}),new objj_method(sel_getUid("superviewBoundsChanged:"),function(self,_243,_244){ +with(self){ +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("superviewFrameChanged:"),function(self,_245,_246){ +with(self){ +objj_msgSend(self,"tile"); +} +}),new objj_method(sel_getUid("tracksMouseOutsideOfFrame"),function(self,_247){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("startTrackingAt:"),function(self,_248,_249){ +with(self){ +var row=objj_msgSend(self,"rowAtPoint:",_249); +if(row<0&&_allowsEmptySelection){ +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSet"),NO); +} +objj_msgSend(self,"_noteSelectionIsChanging"); +if(objj_msgSend(self,"mouseDownFlags")&CPShiftKeyMask){ +_selectionAnchorRow=(ABS(objj_msgSend(_selectedRowIndexes,"firstIndex")-row)<ABS(objj_msgSend(_selectedRowIndexes,"lastIndex")-row))?objj_msgSend(_selectedRowIndexes,"firstIndex"):objj_msgSend(_selectedRowIndexes,"lastIndex"); +}else{ +_selectionAnchorRow=row; +} +_startTrackingPoint=_249; +_startTrackingTimestamp=new Date(); +if(_implementedDataSourceMethods&_3){ +_trackingPointMovedOutOfClickSlop=NO; +} +if(row>=0&&!(_implementedDataSourceMethods&_7)){ +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",row); +} +objj_msgSend(objj_msgSend(self,"window"),"makeFirstResponder:",self); +return YES; +} +}),new objj_method(sel_getUid("trackMouse:"),function(self,_24a,_24b){ +with(self){ +if(!objj_msgSend(_draggedRowIndexes,"count")){ +objj_msgSend(self,"autoscroll:",_24b); +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"trackMouse:",_24b); +}else{ +objj_msgSend(CPApp,"sendEvent:",_24b); +} +} +}),new objj_method(sel_getUid("continueTracking:at:"),function(self,_24c,_24d,_24e){ +with(self){ +var row=objj_msgSend(self,"rowAtPoint:",_24e); +if(!_isSelectingSession&&_implementedDataSourceMethods&_7){ +if(row>=0&&(ABS(_startTrackingPoint.x-_24e.x)>3||(_verticalMotionCanDrag&&ABS(_startTrackingPoint.y-_24e.y)>3))||(objj_msgSend(_selectedRowIndexes,"containsIndex:",row))){ +if(objj_msgSend(_selectedRowIndexes,"containsIndex:",row)){ +_draggedRowIndexes=objj_msgSend(objj_msgSend(CPIndexSet,"alloc"),"initWithIndexSet:",_selectedRowIndexes); +}else{ +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSetWithIndex:",row); +} +var _24f=objj_msgSend(CPPasteboard,"pasteboardWithName:",CPDragPboard); +if(objj_msgSend(self,"canDragRowsWithIndexes:atPoint:",_draggedRowIndexes,_24e)&&objj_msgSend(_dataSource,"tableView:writeRowsWithIndexes:toPasteboard:",self,_draggedRowIndexes,_24f)){ +var _250=objj_msgSend(CPApp,"currentEvent"),_251=CPPointMakeZero(),_252=objj_msgSend(_tableColumns,"objectsAtIndexes:",_exposedColumns); +var view=objj_msgSend(self,"dragViewForRowsWithIndexes:tableColumns:event:offset:",_draggedRowIndexes,_252,_250,_251); +if(!view){ +var _253=objj_msgSend(self,"dragImageForRowsWithIndexes:tableColumns:event:offset:",_draggedRowIndexes,_252,_250,_251); +view=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CPMakeRect(0,0,objj_msgSend(_253,"size").width,objj_msgSend(_253,"size").height)); +objj_msgSend(view,"setImage:",_253); +} +var _254=objj_msgSend(view,"bounds"),_255=CPPointMake(_24e.x-CGRectGetWidth(_254)/2+_251.x,_24e.y-CGRectGetHeight(_254)/2+_251.y); +objj_msgSend(self,"dragView:at:offset:event:pasteboard:source:slideBack:",view,_255,CPPointMakeZero(),objj_msgSend(CPApp,"currentEvent"),_24f,self,YES); +_startTrackingPoint=nil; +return NO; +} +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +}else{ +if(ABS(_startTrackingPoint.x-_24e.x)<5&&ABS(_startTrackingPoint.y-_24e.y)<5){ +return YES; +} +} +} +_isSelectingSession=YES; +if(row>=0&&row!==_lastTrackedRowIndex){ +_lastTrackedRowIndex=row; +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",row); +} +if((_implementedDataSourceMethods&_3)&&!_trackingPointMovedOutOfClickSlop){ +var _256=5; +if(ABS(_24e.x-_startTrackingPoint.x)>_256||ABS(_24e.y-_startTrackingPoint.y)>_256){ +_trackingPointMovedOutOfClickSlop=YES; +} +} +return YES; +} +}),new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"),function(self,_257,_258,_259,_25a){ +with(self){ +_isSelectingSession=NO; +var _25b=1000,_25c,_25d,_25e,_25f=YES; +if(_implementedDataSourceMethods&_7){ +_25e=objj_msgSend(self,"rowAtPoint:",_259); +if(_25e!==-1){ +if(objj_msgSend(_draggedRowIndexes,"count")>0){ +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +return; +} +_previouslySelectedRowIndexes=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(self,"_updateSelectionWithMouseAtRow:",_25e); +} +} +if(_25a&&(_implementedDataSourceMethods&_3)&&!_trackingPointMovedOutOfClickSlop&&(objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"clickCount")>1)){ +_25c=objj_msgSend(self,"columnAtPoint:",_258); +if(_25c!==-1){ +_25d=_tableColumns[_25c]; +if(objj_msgSend(_25d,"isEditable")){ +_25e=objj_msgSend(self,"rowAtPoint:",_259); +if(_25e!==-1){ +if(_implementedDelegateMethods&_12){ +_25f=objj_msgSend(_delegate,"tableView:shouldEditTableColumn:row:",self,_25d,_25e); +} +if(_25f){ +objj_msgSend(self,"editColumn:row:withEvent:select:",_25c,_25e,nil,YES); +return; +} +} +} +} +} +if(objj_msgSend(objj_msgSend(CPApp,"currentEvent"),"clickCount")===2&&_doubleAction){ +_clickedRow=objj_msgSend(self,"rowAtPoint:",_259); +objj_msgSend(self,"sendAction:to:",_doubleAction,_target); +} +} +}),new objj_method(sel_getUid("draggingEntered:"),function(self,_260,_261){ +with(self){ +var _262=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_261,"draggingLocation"),nil),_263=objj_msgSend(self,"_proposedDropOperationAtPoint:",_262),row=objj_msgSend(self,"_proposedRowAtPoint:",_262); +if(_retargetedDropRow!==nil){ +row=_retargetedDropRow; +} +var _264=objj_msgSend(self,"registeredDraggedTypes"),_265=objj_msgSend(_264,"count"),i=0; +for(;i<_265;i++){ +if(objj_msgSend(objj_msgSend(objj_msgSend(_261,"draggingPasteboard"),"types"),"containsObject:",objj_msgSend(_264,"objectAtIndex:",i))){ +return objj_msgSend(self,"_validateDrop:proposedRow:proposedDropOperation:",_261,row,_263); +} +} +return CPDragOperationNone; +} +}),new objj_method(sel_getUid("draggingExited:"),function(self,_266,_267){ +with(self){ +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +} +}),new objj_method(sel_getUid("draggingEnded:"),function(self,_268,_269){ +with(self){ +objj_msgSend(self,"_draggingEnded"); +} +}),new objj_method(sel_getUid("_draggingEnded"),function(self,_26a){ +with(self){ +_retargetedDropOperation=nil; +_retargetedDropRow=nil; +_draggedRowIndexes=objj_msgSend(CPIndexSet,"indexSet"); +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +} +}),new objj_method(sel_getUid("wantsPeriodicDraggingUpdates"),function(self,_26b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("_proposedDropOperationAtPoint:"),function(self,_26c,_26d){ +with(self){ +if(_retargetedDropOperation!==nil){ +return _retargetedDropOperation; +} +var row=objj_msgSend(self,"_proposedRowAtPoint:",_26d),_26e=objj_msgSend(self,"rectOfRow:",row); +if(objj_msgSend(self,"intercellSpacing").height<5){ +_26e=CPRectInset(_26e,0,5-objj_msgSend(self,"intercellSpacing").height); +} +if(CGRectContainsPoint(_26e,_26d)&&row<_numberOfRows){ +return CPTableViewDropOn; +} +return CPTableViewDropAbove; +} +}),new objj_method(sel_getUid("_proposedRowAtPoint:"),function(self,_26f,_270){ +with(self){ +var row=FLOOR(_270.y/(_rowHeight+_intercellSpacing.height)),_271=row+1,rect=objj_msgSend(self,"rectOfRow:",row),_272=CGRectGetMaxY(rect),_273=_272-((_272-CGRectGetMinY(rect))*0.3); +if(_270.y>MAX(_273,_272-6)){ +row=_271; +} +if(row>=objj_msgSend(self,"numberOfRows")){ +row=objj_msgSend(self,"numberOfRows"); +} +return row; +} +}),new objj_method(sel_getUid("_validateDrop:proposedRow:proposedDropOperation:"),function(self,_274,info,row,_275){ +with(self){ +if(_implementedDataSourceMethods&_6){ +return objj_msgSend(_dataSource,"tableView:validateDrop:proposedRow:proposedDropOperation:",self,info,row,_275); +} +return CPDragOperationNone; +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewOnRow:"),function(self,_276,_277){ +with(self){ +if(_277>=objj_msgSend(self,"numberOfRows")){ +_277=objj_msgSend(self,"numberOfRows")-1; +} +return objj_msgSend(self,"rectOfRow:",_277); +} +}),new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"),function(self,_278,_279,_27a,_27b){ +with(self){ +if(_27a>objj_msgSend(self,"numberOfRows")){ +_27a=objj_msgSend(self,"numberOfRows"); +} +return objj_msgSend(self,"rectOfRow:",_27a); +} +}),new objj_method(sel_getUid("draggingUpdated:"),function(self,_27c,_27d){ +with(self){ +var _27e=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_27d,"draggingLocation"),nil),_27f=objj_msgSend(self,"_proposedDropOperationAtPoint:",_27e),_280=objj_msgSend(self,"numberOfRows"),row=objj_msgSend(self,"_proposedRowAtPoint:",_27e),_281=objj_msgSend(self,"_validateDrop:proposedRow:proposedDropOperation:",_27d,row,_27f),_282=objj_msgSend(self,"visibleRect"); +if(_retargetedDropRow!==nil){ +row=_retargetedDropRow; +} +if(_27f===CPTableViewDropOn&&row>=objj_msgSend(self,"numberOfRows")){ +row=objj_msgSend(self,"numberOfRows")-1; +} +var rect={origin:{x:0,y:0},size:{width:0,height:0}}; +if(row===-1){ +rect=_282; +}else{ +if(_27f===CPTableViewDropAbove){ +rect=objj_msgSend(self,"_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:",row-1,row,_27e); +}else{ +rect=objj_msgSend(self,"_rectForDropHighlightViewOnRow:",row); +} +} +objj_msgSend(_dropOperationFeedbackView,"setDropOperation:",row!==-1?_27f:CPDragOperationNone); +objj_msgSend(_dropOperationFeedbackView,"setHidden:",(_281==CPDragOperationNone)); +objj_msgSend(_dropOperationFeedbackView,"setFrame:",rect); +objj_msgSend(_dropOperationFeedbackView,"setCurrentRow:",row); +objj_msgSend(self,"addSubview:",_dropOperationFeedbackView); +return _281; +} +}),new objj_method(sel_getUid("prepareForDragOperation:"),function(self,_283,_284){ +with(self){ +objj_msgSend(_dropOperationFeedbackView,"removeFromSuperview"); +return (_implementedDataSourceMethods&_6); +} +}),new objj_method(sel_getUid("performDragOperation:"),function(self,_285,_286){ +with(self){ +var _287=objj_msgSend(self,"convertPoint:fromView:",objj_msgSend(_286,"draggingLocation"),nil),_288=objj_msgSend(self,"_proposedDropOperationAtPoint:",_287),row=_retargetedDropRow; +if(row===nil){ +var row=objj_msgSend(self,"_proposedRowAtPoint:",_287); +} +return objj_msgSend(_dataSource,"tableView:acceptDrop:row:dropOperation:",self,_286,row,_288); +} +}),new objj_method(sel_getUid("concludeDragOperation:"),function(self,_289,_28a){ +with(self){ +objj_msgSend(self,"reloadData"); +} +}),new objj_method(sel_getUid("draggedImage:endedAt:operation:"),function(self,_28b,_28c,_28d,_28e){ +with(self){ +if(objj_msgSend(_dataSource,"respondsToSelector:",sel_getUid("tableView:didEndDraggedImage:atPosition:operation:"))){ +objj_msgSend(_dataSource,"tableView:didEndDraggedImage:atPosition:operation:",self,_28c,_28d,_28e); +} +} +}),new objj_method(sel_getUid("draggedView:endedAt:operation:"),function(self,_28f,_290,_291,_292){ +with(self){ +objj_msgSend(self,"_draggingEnded"); +objj_msgSend(self,"draggedImage:endedAt:operation:",_290,_291,_292); +} +}),new objj_method(sel_getUid("_updateSelectionWithMouseAtRow:"),function(self,_293,aRow){ +with(self){ +if(aRow<0){ +return; +} +var _294,_295=NO; +if(objj_msgSend(self,"mouseDownFlags")&(CPCommandKeyMask|CPControlKeyMask|CPAlternateKeyMask)){ +if(objj_msgSend(_selectedRowIndexes,"containsIndex:",aRow)){ +_294=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_294,"removeIndex:",aRow); +}else{ +if(_allowsMultipleSelection){ +_294=objj_msgSend(_selectedRowIndexes,"copy"); +objj_msgSend(_294,"addIndex:",aRow); +}else{ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndex:",aRow); +} +} +}else{ +if(_allowsMultipleSelection){ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(MIN(aRow,_selectionAnchorRow),ABS(aRow-_selectionAnchorRow)+1)); +_295=objj_msgSend(self,"mouseDownFlags")&CPShiftKeyMask&&((_lastSelectedRow==objj_msgSend(_selectedRowIndexes,"lastIndex")&&aRow>_lastSelectedRow)||(_lastSelectedRow==objj_msgSend(_selectedRowIndexes,"firstIndex")&&aRow<_lastSelectedRow)); +}else{ +if(aRow>=0&&aRow<_numberOfRows){ +_294=objj_msgSend(CPIndexSet,"indexSetWithIndex:",aRow); +}else{ +_294=objj_msgSend(CPIndexSet,"indexSet"); +} +} +} +if(objj_msgSend(_294,"isEqualToIndexSet:",_selectedRowIndexes)){ +return; +} +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +if(_implementedDelegateMethods&_11){ +_294=objj_msgSend(_delegate,"tableView:selectionIndexesForProposedSelection:",self,_294); +} +if(_implementedDelegateMethods&_13){ +var _296=[]; +objj_msgSend(_294,"getIndexes:maxCount:inIndexRange:",_296,-1,nil); +var _297=_296.length; +while(_297--){ +var _298=_296[_297]; +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,_298)){ +objj_msgSend(_294,"removeIndex:",_298); +} +} +if(objj_msgSend(_294,"count")===0){ +return; +} +} +if(!_allowsEmptySelection&&objj_msgSend(_294,"count")===0){ +return; +} +if(objj_msgSend(_294,"isEqualToIndexSet:",_selectedRowIndexes)){ +return; +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",_294,_295); +} +}),new objj_method(sel_getUid("_noteSelectionIsChanging"),function(self,_299){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewSelectionIsChangingNotification,self,nil); +} +}),new objj_method(sel_getUid("_noteSelectionDidChange"),function(self,_29a){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPTableViewSelectionDidChangeNotification,self,nil); +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(self,_29b){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(self,_29c){ +with(self){ +return YES; +} +}),new objj_method(sel_getUid("keyDown:"),function(self,_29d,_29e){ +with(self){ +objj_msgSend(self,"interpretKeyEvents:",[_29e]); +} +}),new objj_method(sel_getUid("moveDown:"),function(self,_29f,_2a0){ +with(self){ +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +var _2a1=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"count")>0){ +var _2a2=NO; +if((objj_msgSend(_2a1,"modifierFlags")&CPShiftKeyMask)&&_allowsMultipleSelection){ +_2a2=YES; +} +var i=objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"lastIndex"); +if(i<objj_msgSend(self,"numberOfRows")-1){ +i++; +} +}else{ +var _2a2=NO; +if(objj_msgSend(self,"numberOfRows")>0){ +var i=0; +} +} +if(_implementedDelegateMethods&_13){ +while((!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i))&&i<objj_msgSend(self,"numberOfRows")){ +i++; +} +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i)){ +return; +} +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",i),_2a2); +if(i>=0){ +objj_msgSend(self,"scrollRowToVisible:",i); +} +} +}),new objj_method(sel_getUid("moveDownAndModifySelection:"),function(self,_2a3,_2a4){ +with(self){ +objj_msgSend(self,"moveDown:",_2a4); +} +}),new objj_method(sel_getUid("moveUp:"),function(self,_2a5,_2a6){ +with(self){ +if(_implementedDelegateMethods&_9&&!objj_msgSend(_delegate,"selectionShouldChangeInTableView:",self)){ +return; +} +var _2a7=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"count")>0){ +var _2a8=NO; +if((objj_msgSend(_2a7,"modifierFlags")&CPShiftKeyMask)&&_allowsMultipleSelection){ +_2a8=YES; +} +var i=objj_msgSend(objj_msgSend(self,"selectedRowIndexes"),"firstIndex"); +if(i>0){ +i--; +} +}else{ +var _2a8=NO; +if(objj_msgSend(self,"numberOfRows")>0){ +var i=objj_msgSend(self,"numberOfRows")-1; +} +} +if(_implementedDelegateMethods&_13){ +while((!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i))&&i>0){ +i--; +} +if(!objj_msgSend(_delegate,"tableView:shouldSelectRow:",self,i)){ +return; +} +} +objj_msgSend(self,"selectRowIndexes:byExtendingSelection:",objj_msgSend(CPIndexSet,"indexSetWithIndex:",i),_2a8); +if(i>=0){ +objj_msgSend(self,"scrollRowToVisible:",i); +} +} +}),new objj_method(sel_getUid("moveUpAndModifySelection:"),function(self,_2a9,_2aa){ +with(self){ +objj_msgSend(self,"moveUp:",_2aa); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(self,_2ab,_2ac){ +with(self){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tableViewDeleteKeyPressed:"))){ +objj_msgSend(_delegate,"tableViewDeleteKeyPressed:",self); +} +} +})]); +class_addMethods(_1e,[new objj_method(sel_getUid("themeClass"),function(self,_2ad){ +with(self){ +return "tableview"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(self,_2ae){ +with(self){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null"),objj_msgSend(CPNull,"null")],["alternating-row-colors","grid-color","highlighted-grid-color","selection-color","sourcelist-selection-color","sort-image","sort-image-reversed"]); +} +})]); +var _1d=objj_getClass("CPTableView"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("_replacementKeyPathForBinding:"),function(self,_2af,_2b0){ +with(self){ +if(_2b0==="selectionIndexes"){ +return "selectedRowIndexes"; +} +return objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"_replacementKeyPathForBinding:",_2b0); +} +}),new objj_method(sel_getUid("_establishBindingsIfUnbound:"),function(self,_2b1,_2b2){ +with(self){ +if(objj_msgSend(objj_msgSend(self,"infoForBinding:","content"),"objectForKey:",CPObservedObjectKey)!==_2b2){ +objj_msgSend(self,"bind:toObject:withKeyPath:options:","content",_2b2,"arrangedObjects",nil); +} +if(objj_msgSend(objj_msgSend(self,"infoForBinding:","selectionIndexes"),"objectForKey:",CPObservedObjectKey)!==_2b2){ +objj_msgSend(self,"bind:toObject:withKeyPath:options:","selectionIndexes",_2b2,"selectionIndexes",nil); +} +} +}),new objj_method(sel_getUid("setContent:"),function(self,_2b3,_2b4){ +with(self){ +objj_msgSend(self,"reloadData"); +} +})]); +var _2b5="CPTableViewDataSourceKey",_2b6="CPTableViewDelegateKey",_2b7="CPTableViewHeaderViewKey",_2b8="CPTableViewTableColumnsKey",_2b9="CPTableViewRowHeightKey",_2ba="CPTableViewIntercellSpacingKey",_2bb="CPTableViewSelectionHighlightStyleKey",_2bc="CPTableViewMultipleSelectionKey",_2bd="CPTableViewEmptySelectionKey",_2be="CPTableViewColumnReorderingKey",_2bf="CPTableViewColumnResizingKey",_2c0="CPTableViewColumnSelectionKey",_2c1="CPTableViewColumnAutoresizingStyleKey",_2c2="CPTableViewGridColorKey",_2c3="CPTableViewGridStyleMaskKey",_2c4="CPTableViewUsesAlternatingBackgroundKey",_2c5="CPTableViewAlternatingRowColorsKey",_2b7="CPTableViewHeaderViewKey",_2c6="CPTableViewCornerViewKey"; +var _1d=objj_getClass("CPTableView"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("initWithCoder:"),function(self,_2c7,_2c8){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"initWithCoder:",_2c8); +if(self){ +_allowsColumnReordering=objj_msgSend(_2c8,"decodeBoolForKey:",_2be); +_allowsColumnResizing=objj_msgSend(_2c8,"decodeBoolForKey:",_2bf); +_allowsMultipleSelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2bc); +_allowsEmptySelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2bd); +_allowsColumnSelection=objj_msgSend(_2c8,"decodeBoolForKey:",_2c0); +_selectionHighlightStyle=objj_msgSend(_2c8,"decodeIntForKey:",_2bb); +_columnAutoResizingStyle=objj_msgSend(_2c8,"decodeIntForKey:",_2c1); +_tableColumns=objj_msgSend(_2c8,"decodeObjectForKey:",_2b8)||[]; +objj_msgSend(_tableColumns,"makeObjectsPerformSelector:withObject:",sel_getUid("setTableView:"),self); +if(objj_msgSend(_2c8,"containsValueForKey:",_2b9)){ +_rowHeight=objj_msgSend(_2c8,"decodeFloatForKey:",_2b9); +}else{ +_rowHeight=23; +} +_intercellSpacing=objj_msgSend(_2c8,"decodeSizeForKey:",_2ba)||{width:3,height:2}; +objj_msgSend(self,"setGridColor:",objj_msgSend(_2c8,"decodeObjectForKey:",_2c2)); +_gridStyleMask=objj_msgSend(_2c8,"decodeIntForKey:",_2c3)||CPTableViewGridNone; +_usesAlternatingRowBackgroundColors=objj_msgSend(_2c8,"decodeObjectForKey:",_2c4); +objj_msgSend(self,"setAlternatingRowBackgroundColors:",objj_msgSend(_2c8,"decodeObjectForKey:",_2c5)); +_headerView=objj_msgSend(_2c8,"decodeObjectForKey:",_2b7); +_cornerView=objj_msgSend(_2c8,"decodeObjectForKey:",_2c6); +if(_cornerView){ +objj_msgSend(_cornerView,"setHidden:",NO); +} +_dataSource=objj_msgSend(_2c8,"decodeObjectForKey:",_2b5); +_delegate=objj_msgSend(_2c8,"decodeObjectForKey:",_2b6); +objj_msgSend(self,"_init"); +objj_msgSend(self,"viewWillMoveToSuperview:",objj_msgSend(self,"superview")); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_2c9,_2ca){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPTableView").super_class},"encodeWithCoder:",_2ca); +objj_msgSend(_2ca,"encodeObject:forKey:",_dataSource,_2b5); +objj_msgSend(_2ca,"encodeObject:forKey:",_delegate,_2b6); +objj_msgSend(_2ca,"encodeFloat:forKey:",_rowHeight,_2b9); +objj_msgSend(_2ca,"encodeSize:forKey:",_intercellSpacing,_2ba); +objj_msgSend(_2ca,"encodeInt:forKey:",_selectionHighlightStyle,_2bb); +objj_msgSend(_2ca,"encodeInt:forKey:",_columnAutoResizingStyle,_2c1); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsMultipleSelection,_2bc); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsEmptySelection,_2bd); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnReordering,_2be); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnResizing,_2bf); +objj_msgSend(_2ca,"encodeBool:forKey:",_allowsColumnSelection,_2c0); +objj_msgSend(_2ca,"encodeObject:forKey:",_tableColumns,_2b8); +objj_msgSend(_2ca,"encodeObject:forKey:",objj_msgSend(self,"gridColor"),_2c2); +objj_msgSend(_2ca,"encodeInt:forKey:",_gridStyleMask,_2c3); +objj_msgSend(_2ca,"encodeBool:forKey:",_usesAlternatingRowBackgroundColors,_2c4); +objj_msgSend(_2ca,"encodeObject:forKey:",objj_msgSend(self,"alternatingRowBackgroundColors"),_2c5); +objj_msgSend(_2ca,"encodeObject:forKey:",_cornerView,_2c6); +objj_msgSend(_2ca,"encodeObject:forKey:",_headerView,_2b7); +} +})]); +var _1d=objj_getClass("CPIndexSet"); +if(!_1d){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _1e=_1d.isa; +class_addMethods(_1d,[new objj_method(sel_getUid("removeMatches:"),function(self,_2cb,_2cc){ +with(self){ +var _2cd=objj_msgSend(self,"firstIndex"); +var _2ce=MIN(_2cd,objj_msgSend(_2cc,"firstIndex")); +var _2cf=(_2ce==_2cd); +while(_2ce!=CPNotFound){ +var _2d0=(_2cf)?_2cc:self; +otherIndex=objj_msgSend(_2d0,"indexGreaterThanOrEqualToIndex:",_2ce); +if(otherIndex==_2ce){ +objj_msgSend(self,"removeIndex:",_2ce); +objj_msgSend(_2cc,"removeIndex:",_2ce); +} +_2ce=otherIndex; +_2cf=!_2cf; +} +} +})]); +var _1d=objj_allocateClassPair(CPView,"_CPDropOperationDrawingView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("dropOperation"),new objj_ivar("tableView"),new objj_ivar("currentRow"),new objj_ivar("isBlinking")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("dropOperation"),function(self,_2d1){ +with(self){ +return dropOperation; +} +}),new objj_method(sel_getUid("setDropOperation:"),function(self,_2d2,_2d3){ +with(self){ +dropOperation=_2d3; +} +}),new objj_method(sel_getUid("tableView"),function(self,_2d4){ +with(self){ +return tableView; +} +}),new objj_method(sel_getUid("setTableView:"),function(self,_2d5,_2d6){ +with(self){ +tableView=_2d6; +} +}),new objj_method(sel_getUid("currentRow"),function(self,_2d7){ +with(self){ +return currentRow; +} +}),new objj_method(sel_getUid("setCurrentRow:"),function(self,_2d8,_2d9){ +with(self){ +currentRow=_2d9; +} +}),new objj_method(sel_getUid("isBlinking"),function(self,_2da){ +with(self){ +return isBlinking; +} +}),new objj_method(sel_getUid("setIsBlinking:"),function(self,_2db,_2dc){ +with(self){ +isBlinking=_2dc; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_2dd,_2de){ +with(self){ +if(tableView._destinationDragStyle===CPTableViewDraggingDestinationFeedbackStyleNone||isBlinking){ +return; +} +var _2df=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"colorWithHexString:","4886ca")); +CGContextSetLineWidth(_2df,3); +if(currentRow===-1){ +CGContextStrokeRect(_2df,objj_msgSend(self,"bounds")); +}else{ +if(dropOperation===CPTableViewDropOn){ +var _2e0=objj_msgSend(tableView,"selectedRowIndexes"),_2e1={origin:{x:_2de.origin.x+2,y:_2de.origin.y+2},size:{width:_2de.size.width-4,height:_2de.size.height-5}}; +if(objj_msgSend(_2e0,"containsIndex:",currentRow)){ +CGContextSetLineWidth(_2df,2); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"whiteColor")); +}else{ +CGContextSetFillColor(_2df,objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",72/255,134/255,202/255,0.25)); +CGContextFillRoundedRectangleInRect(_2df,_2e1,8,YES,YES,YES,YES); +} +CGContextStrokeRoundedRectangleInRect(_2df,_2e1,8,YES,YES,YES,YES); +}else{ +if(dropOperation===CPTableViewDropAbove){ +objj_msgSend(self,"setFrameOrigin:",CGPointMake(_frame.origin.x,_frame.origin.y-8)); +var _2e0=objj_msgSend(tableView,"selectedRowIndexes"); +if(objj_msgSend(_2e0,"containsIndex:",currentRow-1)||objj_msgSend(_2e0,"containsIndex:",currentRow)){ +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"whiteColor")); +CGContextSetLineWidth(_2df,4); +CGContextStrokeEllipseInRect(_2df,{origin:{x:_2de.origin.x+4,y:_2de.origin.y+4},size:{width:8,height:8}}); +CGContextBeginPath(_2df); +CGContextMoveToPoint(_2df,10,_2de.origin.y+8); +CGContextAddLineToPoint(_2df,_2de.size.width-_2de.origin.y-8,_2de.origin.y+8); +CGContextClosePath(_2df); +CGContextStrokePath(_2df); +CGContextSetStrokeColor(_2df,objj_msgSend(CPColor,"colorWithHexString:","4886ca")); +CGContextSetLineWidth(_2df,3); +} +CGContextStrokeEllipseInRect(_2df,{origin:{x:_2de.origin.x+4,y:_2de.origin.y+4},size:{width:8,height:8}}); +CGContextBeginPath(_2df); +CGContextMoveToPoint(_2df,10,_2de.origin.y+8); +CGContextAddLineToPoint(_2df,_2de.size.width-_2de.origin.y-8,_2de.origin.y+8); +CGContextClosePath(_2df); +CGContextStrokePath(_2df); +} +} +} +} +}),new objj_method(sel_getUid("blink"),function(self,_2e2){ +with(self){ +if(dropOperation!==CPTableViewDropOn){ +return; +} +isBlinking=YES; +var _2e3=function(){ +objj_msgSend(self,"setHidden:",NO); +isBlinking=NO; +}; +var _2e4=function(){ +objj_msgSend(self,"setHidden:",YES); +isBlinking=YES; +}; +objj_msgSend(self,"setHidden:",YES); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.1,_2e3,NO); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.19,_2e4,NO); +objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",0.27,_2e3,NO); +} +})]); +var _1d=objj_allocateClassPair(CPView,"_CPColumnDragView"),_1e=_1d.isa; +class_addIvars(_1d,[new objj_ivar("_lineColor")]); +objj_registerClassPair(_1d); +class_addMethods(_1d,[new objj_method(sel_getUid("initWithLineColor:"),function(self,_2e5,_2e6){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPColumnDragView").super_class},"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +if(self){ +_lineColor=_2e6; +} +return self; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_2e7,_2e8){ +with(self){ +var _2e9=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextSetStrokeColor(_2e9,_lineColor); +var _2ea=[{x:0.5,y:0},{x:0.5,y:_2e8.size.height}]; +CGContextStrokeLineSegments(_2e9,_2ea,2); +_2ea=[{x:_2e8.size.width-0.5,y:0},{x:_2e8.size.width-0.5,y:_2e8.size.height}]; +CGContextStrokeLineSegments(_2e9,_2ea,2); +} +})]); +p;11;CPTabView.jt;18841;@STATIC;1.0;i;13;CPImageView.ji;15;CPTabViewItem.ji;8;CPView.jt;18771; +objj_executeFile("CPImageView.j",YES); +objj_executeFile("CPTabViewItem.j",YES); +objj_executeFile("CPView.j",YES); +CPTopTabsBezelBorder=0; +CPNoTabsBezelBorder=4; +CPNoTabsLineBorder=5; +CPNoTabsNoBorder=6; +var _1=nil,_2=nil,_3=nil,_4=nil,_5=nil; +var _6=7,_7=7; +var _8=1,_9=2,_a=4,_b=8; +var _c=objj_allocateClassPair(CPView,"CPTabView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_labelsView"),new objj_ivar("_backgroundView"),new objj_ivar("_separatorView"),new objj_ivar("_auxiliaryView"),new objj_ivar("_contentView"),new objj_ivar("_tabViewItems"),new objj_ivar("_selectedTabViewItem"),new objj_ivar("_tabViewType"),new objj_ivar("_delegate"),new objj_ivar("_delegateSelectors")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_e,_f,_10){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPTabView").super_class},"initWithFrame:",_10); +if(_e){ +_tabViewType=CPTopTabsBezelBorder; +_tabViewItems=[]; +} +return _e; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_11,_12){ +with(_11){ +if(_tabViewType!=CPTopTabsBezelBorder||_labelsView){ +return; +} +objj_msgSend(_11,"_createBezelBorder"); +objj_msgSend(_11,"layoutSubviews"); +} +}),new objj_method(sel_getUid("_createBezelBorder"),function(_13,_14){ +with(_13){ +var _15=objj_msgSend(_13,"bounds"); +_labelsView=objj_msgSend(objj_msgSend(_CPTabLabelsView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_15),0)); +objj_msgSend(_labelsView,"setTabView:",_13); +objj_msgSend(_labelsView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_13,"addSubview:",_labelsView); +_backgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_backgroundView,"setBackgroundColor:",_5); +objj_msgSend(_backgroundView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_13,"addSubview:",_backgroundView); +_separatorView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_separatorView,"setBackgroundColor:",objj_msgSend(objj_msgSend(_13,"class"),"bezelBorderColor")); +objj_msgSend(_separatorView,"setAutoresizingMask:",CPViewWidthSizable|CPViewMaxYMargin); +objj_msgSend(_13,"addSubview:",_separatorView); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_16,_17){ +with(_16){ +if(_tabViewType==CPTopTabsBezelBorder){ +var _18=objj_msgSend(_16,"bounds"),_19=objj_msgSend(_CPTabLabelsView,"height"); +_18.origin.y+=_19; +_18.size.height-=_19; +objj_msgSend(_backgroundView,"setFrame:",_18); +var _1a=5; +if(_auxiliaryView){ +_1a=CGRectGetHeight(objj_msgSend(_auxiliaryView,"frame")); +objj_msgSend(_auxiliaryView,"setFrame:",CGRectMake(_6,_19,CGRectGetWidth(_18)-_6-_7,_1a)); +} +objj_msgSend(_separatorView,"setFrame:",CGRectMake(_6,_19+_1a,CGRectGetWidth(_18)-_6-_7,1)); +} +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_16,"contentRect")); +} +}),new objj_method(sel_getUid("addTabViewItem:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"insertTabViewItem:atIndex:",_1d,objj_msgSend(_tabViewItems,"count")); +} +}),new objj_method(sel_getUid("insertTabViewItem:atIndex:"),function(_1e,_1f,_20,_21){ +with(_1e){ +if(!_labelsView){ +objj_msgSend(_1e,"_createBezelBorder"); +} +objj_msgSend(_tabViewItems,"insertObject:atIndex:",_20,_21); +objj_msgSend(_labelsView,"tabView:didAddTabViewItem:",_1e,_20); +objj_msgSend(_20,"_setTabView:",_1e); +if(objj_msgSend(_tabViewItems,"count")==1){ +objj_msgSend(_1e,"selectFirstTabViewItem:",_1e); +} +if(_delegateSelectors&_b){ +objj_msgSend(_delegate,"tabViewDidChangeNumberOfTabViewItems:",_1e); +} +} +}),new objj_method(sel_getUid("removeTabViewItem:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_22,"indexOfTabViewItem:",_24); +objj_msgSend(_tabViewItems,"removeObjectIdenticalTo:",_24); +objj_msgSend(_labelsView,"tabView:didRemoveTabViewItemAtIndex:",_22,_25); +objj_msgSend(_24,"_setTabView:",nil); +if(_delegateSelectors&_b){ +objj_msgSend(_delegate,"tabViewDidChangeNumberOfTabViewItems:",_22); +} +} +}),new objj_method(sel_getUid("indexOfTabViewItem:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(_tabViewItems,"indexOfObjectIdenticalTo:",_28); +} +}),new objj_method(sel_getUid("indexOfTabViewItemWithIdentifier:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=0,_2d=objj_msgSend(_tabViewItems,"count"); +for(;_2c<_2d;++_2c){ +if(objj_msgSend(objj_msgSend(_tabViewItems[_2c],"identifier"),"isEqual:",_2b)){ +return _2c; +} +} +return _2c; +} +}),new objj_method(sel_getUid("numberOfTabViewItems"),function(_2e,_2f){ +with(_2e){ +return objj_msgSend(_tabViewItems,"count"); +} +}),new objj_method(sel_getUid("tabViewItemAtIndex:"),function(_30,_31,_32){ +with(_30){ +return _tabViewItems[_32]; +} +}),new objj_method(sel_getUid("tabViewItems"),function(_33,_34){ +with(_33){ +return _tabViewItems; +} +}),new objj_method(sel_getUid("selectFirstTabViewItem:"),function(_35,_36,_37){ +with(_35){ +var _38=objj_msgSend(_tabViewItems,"count"); +if(_38){ +objj_msgSend(_35,"selectTabViewItemAtIndex:",0); +} +} +}),new objj_method(sel_getUid("selectLastTabViewItem:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=objj_msgSend(_tabViewItems,"count"); +if(_3c){ +objj_msgSend(_39,"selectTabViewItemAtIndex:",_3c-1); +} +} +}),new objj_method(sel_getUid("selectNextTabViewItem:"),function(_3d,_3e,_3f){ +with(_3d){ +if(!_selectedTabViewItem){ +return; +} +var _40=objj_msgSend(_3d,"indexOfTabViewItem:",_selectedTabViewItem),_41=objj_msgSend(_tabViewItems,"count"); +objj_msgSend(_3d,"selectTabViewItemAtIndex:",_40+1%_41); +} +}),new objj_method(sel_getUid("selectPreviousTabViewItem:"),function(_42,_43,_44){ +with(_42){ +if(!_selectedTabViewItem){ +return; +} +var _45=objj_msgSend(_42,"indexOfTabViewItem:",_selectedTabViewItem),_46=objj_msgSend(_tabViewItems,"count"); +objj_msgSend(_42,"selectTabViewItemAtIndex:",_45==0?_46:_45-1); +} +}),new objj_method(sel_getUid("selectTabViewItem:"),function(_47,_48,_49){ +with(_47){ +if((_delegateSelectors&_9)&&!objj_msgSend(_delegate,"tabView:shouldSelectTabViewItem:",_47,_49)){ +return; +} +if(_delegateSelectors&_a){ +objj_msgSend(_delegate,"tabView:willSelectTabViewItem:",_47,_49); +} +if(_selectedTabViewItem){ +_selectedTabViewItem._tabState=CPBackgroundTab; +objj_msgSend(_labelsView,"tabView:didChangeStateOfTabViewItem:",_47,_selectedTabViewItem); +} +_selectedTabViewItem=_49; +_selectedTabViewItem._tabState=CPSelectedTab; +var _4a=_contentView; +_contentView=objj_msgSend(_selectedTabViewItem,"view"); +if(_4a!==_contentView){ +objj_msgSend(_4a,"removeFromSuperview"); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_47,"addSubview:",_contentView); +} +var _4b=_auxiliaryView; +_auxiliaryView=objj_msgSend(_selectedTabViewItem,"auxiliaryView"); +if(_4b!==_auxiliaryView){ +objj_msgSend(_4b,"removeFromSuperview"); +objj_msgSend(_auxiliaryView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_47,"addSubview:",_auxiliaryView); +} +objj_msgSend(_labelsView,"tabView:didChangeStateOfTabViewItem:",_47,_selectedTabViewItem); +objj_msgSend(_47,"layoutSubviews"); +if(_delegateSelectors&_8){ +objj_msgSend(_delegate,"tabView:didSelectTabViewItem:",_47,_49); +} +} +}),new objj_method(sel_getUid("selectTabViewItemAtIndex:"),function(_4c,_4d,_4e){ +with(_4c){ +objj_msgSend(_4c,"selectTabViewItem:",_tabViewItems[_4e]); +} +}),new objj_method(sel_getUid("selectedTabViewItem"),function(_4f,_50){ +with(_4f){ +return _selectedTabViewItem; +} +}),new objj_method(sel_getUid("setTabViewType:"),function(_51,_52,_53){ +with(_51){ +if(_tabViewType==_53){ +return; +} +_tabViewType=_53; +if(_tabViewType==CPNoTabsBezelBorder||_tabViewType==CPNoTabsLineBorder||_tabViewType==CPNoTabsNoBorder){ +objj_msgSend(_labelsView,"removeFromSuperview"); +}else{ +if(_labelsView&&!objj_msgSend(_labelsView,"superview")){ +objj_msgSend(_51,"addSubview:",_labelsView); +} +} +if(_tabViewType==CPNoTabsLineBorder||_tabViewType==CPNoTabsNoBorder){ +objj_msgSend(_backgroundView,"removeFromSuperview"); +}else{ +if(_backgroundView&&!objj_msgSend(_backgroundView,"superview")){ +objj_msgSend(_51,"addSubview:",_backgroundView); +} +} +objj_msgSend(_51,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabViewType"),function(_54,_55){ +with(_54){ +return _tabViewType; +} +}),new objj_method(sel_getUid("contentRect"),function(_56,_57){ +with(_56){ +var _58=CGRectMakeCopy(objj_msgSend(_56,"bounds")); +if(_tabViewType==CPTopTabsBezelBorder){ +var _59=objj_msgSend(_CPTabLabelsView,"height"),_5a=_auxiliaryView?CGRectGetHeight(objj_msgSend(_auxiliaryView,"frame")):5,_5b=1; +_58.origin.y+=_59+_5a+_5b; +_58.size.height-=_59+_5a+_5b*2; +_58.origin.x+=_6; +_58.size.width-=_6+_7; +} +return _58; +} +}),new objj_method(sel_getUid("delegate"),function(_5c,_5d){ +with(_5c){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_5e,_5f,_60){ +with(_5e){ +if(_delegate==_60){ +return; +} +_delegate=_60; +_delegateSelectors=0; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:shouldSelectTabViewItem:"))){ +_delegateSelectors|=_9; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:willSelectTabViewItem:"))){ +_delegateSelectors|=_a; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabView:didSelectTabViewItem:"))){ +_delegateSelectors|=_8; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("tabViewDidChangeNumberOfTabViewItems:"))){ +_delegateSelectors|=_b; +} +} +}),new objj_method(sel_getUid("mouseDown:"),function(_61,_62,_63){ +with(_61){ +var _64=objj_msgSend(_labelsView,"convertPoint:fromView:",objj_msgSend(_63,"locationInWindow"),nil),_65=objj_msgSend(_labelsView,"representedTabViewItemAtPoint:",_64); +if(_65){ +objj_msgSend(_61,"selectTabViewItem:",_65); +} +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_66,_67){ +with(_66){ +if(_66!=CPTabView){ +return; +} +var _68=objj_msgSend(CPBundle,"bundleForClass:",_66),_69=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initByReferencingFile:size:","",CGSizeMake(7,0)),_6a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBackgroundCenter.png"),CGSizeMake(1,1)),_6b=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorderLeft.png"),CGSizeMake(7,1)),_6c=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorder.png"),CGSizeMake(1,1)),_6d=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_68,"pathForResource:","CPTabView/CPTabViewBezelBorderRight.png"),CGSizeMake(7,1)); +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[_69,_69,_69,_6b,_6a,_6d,_6b,_6c,_6d])); +_4=objj_msgSend(CPColor,"colorWithPatternImage:",_6c); +} +}),new objj_method(sel_getUid("bezelBorderColor"),function(_6e,_6f){ +with(_6e){ +return _4; +} +})]); +var _70="CPTabViewItemsKey",_71="CPTabViewSelectedItemKey",_72="CPTabViewTypeKey",_73="CPTabViewDelegateKey"; +var _c=objj_getClass("CPTabView"); +if(!_c){ +throw new SyntaxError("*** Could not find definition for class \"CPTabView\""); +} +var _d=_c.isa; +class_addMethods(_c,[new objj_method(sel_getUid("initWithCoder:"),function(_74,_75,_76){ +with(_74){ +if(_74=objj_msgSendSuper({receiver:_74,super_class:objj_getClass("CPTabView").super_class},"initWithCoder:",_76)){ +_tabViewType=objj_msgSend(_76,"decodeIntForKey:",_72); +_tabViewItems=[]; +objj_msgSend(_74,"_createBezelBorder"); +var _77=objj_msgSend(_76,"decodeObjectForKey:",_70); +for(var i=0;_77&&i<_77.length;i++){ +objj_msgSend(_74,"insertTabViewItem:atIndex:",_77[i],i); +} +var _78=objj_msgSend(_76,"decodeObjectForKey:",_71); +if(_78){ +objj_msgSend(_74,"selectTabViewItem:",_78); +} +objj_msgSend(_74,"setDelegate:",objj_msgSend(_76,"decodeObjectForKey:",_73)); +} +return _74; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_79,_7a,_7b){ +with(_79){ +var _7c=_subviews; +_subviews=[]; +objj_msgSendSuper({receiver:_79,super_class:objj_getClass("CPTabView").super_class},"encodeWithCoder:",_7b); +_subviews=_7c; +objj_msgSend(_7b,"encodeObject:forKey:",_tabViewItems,_70); +objj_msgSend(_7b,"encodeObject:forKey:",_selectedTabViewItem,_71); +objj_msgSend(_7b,"encodeInt:forKey:",_tabViewType,_72); +objj_msgSend(_7b,"encodeConditionalObject:forKey:",_delegate,_73); +} +})]); +var _7d=nil,_7e=10,_7f=15; +var _c=objj_allocateClassPair(CPView,"_CPTabLabelsView"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_tabView"),new objj_ivar("_tabLabels")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_80,_81,_82){ +with(_80){ +_80=objj_msgSendSuper({receiver:_80,super_class:objj_getClass("_CPTabLabelsView").super_class},"initWithFrame:",_82); +if(_80){ +_tabLabels=[]; +objj_msgSend(_80,"setBackgroundColor:",_7d); +objj_msgSend(_80,"setFrameSize:",CGSizeMake(CGRectGetWidth(_82),26)); +} +return _80; +} +}),new objj_method(sel_getUid("setTabView:"),function(_83,_84,_85){ +with(_83){ +_tabView=_85; +} +}),new objj_method(sel_getUid("tabView"),function(_86,_87){ +with(_86){ +return _tabView; +} +}),new objj_method(sel_getUid("tabView:didAddTabViewItem:"),function(_88,_89,_8a,_8b){ +with(_88){ +var _8c=objj_msgSend(objj_msgSend(_CPTabLabel,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_8c,"setTabViewItem:",_8b); +_tabLabels.push(_8c); +objj_msgSend(_88,"addSubview:",_8c); +objj_msgSend(_88,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabView:didRemoveTabViewItemAtIndex:"),function(_8d,_8e,_8f,_90){ +with(_8d){ +var _91=_tabLabels[_90]; +objj_msgSend(_tabLabels,"removeObjectAtIndex:",_90); +objj_msgSend(_91,"removeFromSuperview"); +objj_msgSend(_8d,"layoutSubviews"); +} +}),new objj_method(sel_getUid("tabView:didChangeStateOfTabViewItem:"),function(_92,_93,_94,_95){ +with(_92){ +objj_msgSend(_tabLabels[objj_msgSend(_94,"indexOfTabViewItem:",_95)],"setTabState:",objj_msgSend(_95,"tabState")); +} +}),new objj_method(sel_getUid("representedTabViewItemAtPoint:"),function(_96,_97,_98){ +with(_96){ +var _99=0,_9a=_tabLabels.length; +for(;_99<_9a;++_99){ +var _9b=_tabLabels[_99]; +if(CGRectContainsPoint(objj_msgSend(_9b,"frame"),_98)){ +return objj_msgSend(_9b,"tabViewItem"); +} +} +return nil; +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_9c,_9d){ +with(_9c){ +var _9e=0,_9f=_tabLabels.length,_a0=((objj_msgSend(_9c,"bounds").size.width)-(_9f-1)*_7e-2*_7f)/_9f,x=_7f; +for(;_9e<_9f;++_9e){ +var _a1=_tabLabels[_9e],_a2={origin:{x:x,y:8},size:{width:_a0,height:18}}; +objj_msgSend(_a1,"setFrame:",_a2); +x=(_a2.origin.x+_a2.size.width)+_7e; +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_a3,_a4,_a5){ +with(_a3){ +if(CGSizeEqualToSize(objj_msgSend(_a3,"frame").size,_a5)){ +return; +} +objj_msgSendSuper({receiver:_a3,super_class:objj_getClass("_CPTabLabelsView").super_class},"setFrameSize:",_a5); +objj_msgSend(_a3,"layoutSubviews"); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_a6,_a7){ +with(_a6){ +if(_a6!=objj_msgSend(_CPTabLabelsView,"class")){ +return; +} +var _a8=objj_msgSend(CPBundle,"bundleForClass:",_a6); +_7d=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewLeft.png"),CGSizeMake(12,26)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewCenter.png"),CGSizeMake(1,26)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_a8,"pathForResource:","CPTabView/_CPTabLabelsViewRight.png"),CGSizeMake(12,26))],NO)); +} +}),new objj_method(sel_getUid("height"),function(_a9,_aa){ +with(_a9){ +return 26; +} +})]); +var _ab=nil,_ac=nil; +var _c=objj_allocateClassPair(CPView,"_CPTabLabel"),_d=_c.isa; +class_addIvars(_c,[new objj_ivar("_tabViewItem"),new objj_ivar("_labelField")]); +objj_registerClassPair(_c); +class_addMethods(_c,[new objj_method(sel_getUid("initWithFrame:"),function(_ad,_ae,_af){ +with(_ad){ +_ad=objj_msgSendSuper({receiver:_ad,super_class:objj_getClass("_CPTabLabel").super_class},"initWithFrame:",_af); +if(_ad){ +_labelField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_labelField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_labelField,"setFrame:",CGRectMake(5,0,CGRectGetWidth(_af)-10,20)); +objj_msgSend(_labelField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_labelField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",11)); +objj_msgSend(_ad,"addSubview:",_labelField); +objj_msgSend(_ad,"setTabState:",CPBackgroundTab); +} +return _ad; +} +}),new objj_method(sel_getUid("setTabState:"),function(_b0,_b1,_b2){ +with(_b0){ +objj_msgSend(_b0,"setBackgroundColor:",_b2==CPSelectedTab?_ac:_ab); +} +}),new objj_method(sel_getUid("setTabViewItem:"),function(_b3,_b4,_b5){ +with(_b3){ +_tabViewItem=_b5; +objj_msgSend(_b3,"update"); +} +}),new objj_method(sel_getUid("tabViewItem"),function(_b6,_b7){ +with(_b6){ +return _tabViewItem; +} +}),new objj_method(sel_getUid("update"),function(_b8,_b9){ +with(_b8){ +objj_msgSend(_labelField,"setStringValue:",objj_msgSend(_tabViewItem,"label")); +} +})]); +class_addMethods(_d,[new objj_method(sel_getUid("initialize"),function(_ba,_bb){ +with(_ba){ +if(_ba!=objj_msgSend(_CPTabLabel,"class")){ +return; +} +var _bc=objj_msgSend(CPBundle,"bundleForClass:",_ba); +_ab=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundLeft.png"),CGSizeMake(6,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundCenter.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelBackgroundRight.png"),CGSizeMake(6,18))],NO)); +_ac=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedLeft.png"),CGSizeMake(3,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedCenter.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_bc,"pathForResource:","CPTabView/_CPTabLabelSelectedRight.png"),CGSizeMake(3,18))],NO)); +} +})]); +p;15;CPTabViewItem.jt;2872;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPView.jt;2807; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPSelectedTab=0; +CPBackgroundTab=1; +CPPressedTab=2; +var _1=objj_allocateClassPair(CPObject,"CPTabViewItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier"),new objj_ivar("_label"),new objj_ivar("_view"),new objj_ivar("_auxiliaryView"),new objj_ivar("_tabView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPTabViewItem").super_class},"init"); +if(_5){ +_identifier=_7; +} +return _5; +} +}),new objj_method(sel_getUid("setLabel:"),function(_8,_9,_a){ +with(_8){ +_label=_a; +} +}),new objj_method(sel_getUid("label"),function(_b,_c){ +with(_b){ +return _label; +} +}),new objj_method(sel_getUid("tabState"),function(_d,_e){ +with(_d){ +return _tabState; +} +}),new objj_method(sel_getUid("setIdentifier:"),function(_f,_10,_11){ +with(_f){ +_identifier=_11; +} +}),new objj_method(sel_getUid("identifier"),function(_12,_13){ +with(_12){ +return _identifier; +} +}),new objj_method(sel_getUid("setView:"),function(_14,_15,_16){ +with(_14){ +_view=_16; +} +}),new objj_method(sel_getUid("view"),function(_17,_18){ +with(_17){ +return _view; +} +}),new objj_method(sel_getUid("setAuxiliaryView:"),function(_19,_1a,_1b){ +with(_19){ +_auxiliaryView=_1b; +} +}),new objj_method(sel_getUid("auxiliaryView"),function(_1c,_1d){ +with(_1c){ +return _auxiliaryView; +} +}),new objj_method(sel_getUid("tabView"),function(_1e,_1f){ +with(_1e){ +return _tabView; +} +}),new objj_method(sel_getUid("_setTabView:"),function(_20,_21,_22){ +with(_20){ +_tabView=_22; +} +})]); +var _23="CPTabViewItemIdentifierKey",_24="CPTabViewItemLabelKey",_25="CPTabViewItemViewKey",_26="CPTabViewItemAuxViewKey"; +var _1=objj_getClass("CPTabViewItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTabViewItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_27,_28,_29){ +with(_27){ +_27=objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPTabViewItem").super_class},"init"); +if(_27){ +_identifier=objj_msgSend(_29,"decodeObjectForKey:",_23); +_label=objj_msgSend(_29,"decodeObjectForKey:",_24); +_view=objj_msgSend(_29,"decodeObjectForKey:",_25); +_auxiliaryView=objj_msgSend(_29,"decodeObjectForKey:",_26); +} +return _27; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2a,_2b,_2c){ +with(_2a){ +objj_msgSend(_2c,"encodeObject:forKey:",_identifier,_23); +objj_msgSend(_2c,"encodeObject:forKey:",_label,_24); +objj_msgSend(_2c,"encodeObject:forKey:",_view,_25); +objj_msgSend(_2c,"encodeObject:forKey:",_auxiliaryView,_26); +} +})]); +p;8;CPText.jt;265;@STATIC;1.0;i;8;CPView.jt;235; +objj_executeFile("CPView.j",YES); +CPEnterCharacter=""; +CPBackspaceCharacter="\b"; +CPTabCharacter="\t"; +CPNewlineCharacter="\n"; +CPFormFeedCharacter="\f"; +CPCarriageReturnCharacter="\r"; +CPBackTabCharacter=""; +CPDeleteCharacter=""; +p;13;CPTextField.jt;26042;@STATIC;1.0;i;11;CPControl.ji;17;CPStringDrawing.ji;17;CPCompatibility.ji;21;_CPImageAndTextView.jt;25936; +objj_executeFile("CPControl.j",YES); +objj_executeFile("CPStringDrawing.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("_CPImageAndTextView.j",YES); +CPTextFieldSquareBezel=0; +CPTextFieldRoundedBezel=1; +CPTextFieldDidFocusNotification="CPTextFieldDidFocusNotification"; +CPTextFieldDidBlurNotification="CPTextFieldDidBlurNotification"; +var _1="•"; +var _2=objj_getClass("CPString"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPString\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("string"),function(_4,_5){ +with(_4){ +return _4; +} +})]); +CPTextFieldStateRounded=CPThemeState("rounded"); +CPTextFieldStatePlaceholder=CPThemeState("placeholder"); +var _2=objj_allocateClassPair(CPControl,"CPTextField"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_isEditing"),new objj_ivar("_isEditable"),new objj_ivar("_isSelectable"),new objj_ivar("_isSecure"),new objj_ivar("_drawsBackground"),new objj_ivar("_textFieldBackgroundColor"),new objj_ivar("_placeholderString"),new objj_ivar("_delegate"),new objj_ivar("_textDidChangeValue"),new objj_ivar("_bezelStyle"),new objj_ivar("_isBordered"),new objj_ivar("_controlSize")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPTextField").super_class},"initWithFrame:",_8); +if(_6){ +objj_msgSend(_6,"setStringValue:",""); +objj_msgSend(_6,"setPlaceholderString:",""); +_sendActionOn=CPKeyUpMask|CPKeyDownMask; +objj_msgSend(_6,"setValue:forThemeAttribute:",CPLeftTextAlignment,"alignment"); +} +return _6; +} +}),new objj_method(sel_getUid("setEditable:"),function(_9,_a,_b){ +with(_9){ +if(_isEditable===_b){ +return; +} +_isEditable=_b; +if(_b){ +_isSelectable=YES; +} +if(!_b&&objj_msgSend(objj_msgSend(_9,"window"),"firstResponder")===_9){ +objj_msgSend(objj_msgSend(_9,"window"),"makeFirstResponder:",nil); +} +} +}),new objj_method(sel_getUid("isEditable"),function(_c,_d){ +with(_c){ +return _isEditable; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_e,_f,_10){ +with(_e){ +objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPTextField").super_class},"setEnabled:",_10); +if(!_10&&objj_msgSend(objj_msgSend(_e,"window"),"firstResponder")===_e){ +objj_msgSend(objj_msgSend(_e,"window"),"makeFirstResponder:",nil); +} +} +}),new objj_method(sel_getUid("setSelectable:"),function(_11,_12,_13){ +with(_11){ +_isSelectable=_13; +} +}),new objj_method(sel_getUid("isSelectable"),function(_14,_15){ +with(_14){ +return _isSelectable; +} +}),new objj_method(sel_getUid("setSecure:"),function(_16,_17,_18){ +with(_16){ +_isSecure=_18; +} +}),new objj_method(sel_getUid("isSecure"),function(_19,_1a){ +with(_19){ +return _isSecure; +} +}),new objj_method(sel_getUid("setBezeled:"),function(_1b,_1c,_1d){ +with(_1b){ +if(_1d){ +objj_msgSend(_1b,"setThemeState:",CPThemeStateBezeled); +}else{ +objj_msgSend(_1b,"unsetThemeState:",CPThemeStateBezeled); +} +} +}),new objj_method(sel_getUid("isBezeled"),function(_1e,_1f){ +with(_1e){ +return objj_msgSend(_1e,"hasThemeState:",CPThemeStateBezeled); +} +}),new objj_method(sel_getUid("setBezelStyle:"),function(_20,_21,_22){ +with(_20){ +var _23=_22===CPTextFieldRoundedBezel; +if(_23){ +objj_msgSend(_20,"setThemeState:",CPTextFieldStateRounded); +}else{ +objj_msgSend(_20,"unsetThemeState:",CPTextFieldStateRounded); +} +} +}),new objj_method(sel_getUid("bezelStyle"),function(_24,_25){ +with(_24){ +if(objj_msgSend(_24,"hasThemeState:",CPTextFieldStateRounded)){ +return CPTextFieldRoundedBezel; +} +return CPTextFieldSquareBezel; +} +}),new objj_method(sel_getUid("setBordered:"),function(_26,_27,_28){ +with(_26){ +if(_28){ +objj_msgSend(_26,"setThemeState:",CPThemeStateBordered); +}else{ +objj_msgSend(_26,"unsetThemeState:",CPThemeStateBordered); +} +} +}),new objj_method(sel_getUid("isBordered"),function(_29,_2a){ +with(_29){ +return objj_msgSend(_29,"hasThemeState:",CPThemeStateBordered); +} +}),new objj_method(sel_getUid("setDrawsBackground:"),function(_2b,_2c,_2d){ +with(_2b){ +if(_drawsBackground==_2d){ +return; +} +_drawsBackground=_2d; +objj_msgSend(_2b,"setNeedsLayout"); +objj_msgSend(_2b,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawsBackground"),function(_2e,_2f){ +with(_2e){ +return _drawsBackground; +} +}),new objj_method(sel_getUid("setTextFieldBackgroundColor:"),function(_30,_31,_32){ +with(_30){ +if(_textFieldBackgroundColor==_32){ +return; +} +_textFieldBackgroundColor=_32; +objj_msgSend(_30,"setNeedsLayout"); +objj_msgSend(_30,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("textFieldBackgroundColor"),function(_33,_34){ +with(_33){ +return _textFieldBackgroundColor; +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_35,_36){ +with(_35){ +return objj_msgSend(_35,"isEditable")&&objj_msgSend(_35,"isEnabled"); +} +}),new objj_method(sel_getUid("becomeFirstResponder"),function(_37,_38){ +with(_37){ +objj_msgSend(_37,"setThemeState:",CPThemeStateEditing); +objj_msgSend(_37,"_updatePlaceholderState"); +objj_msgSend(_37,"setNeedsLayout"); +_isEditing=NO; +return YES; +} +}),new objj_method(sel_getUid("resignFirstResponder"),function(_39,_3a){ +with(_39){ +objj_msgSend(_39,"unsetThemeState:",CPThemeStateEditing); +objj_msgSend(_39,"_updatePlaceholderState"); +objj_msgSend(_39,"setNeedsLayout"); +if(_isEditing){ +_isEditing=NO; +objj_msgSend(_39,"textDidEndEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidEndEditingNotification,_39,nil)); +if(objj_msgSend(_39,"sendsActionOnEndEditing")){ +objj_msgSend(_39,"sendAction:to:",objj_msgSend(_39,"action"),objj_msgSend(_39,"target")); +} +} +objj_msgSend(_39,"textDidBlur:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPTextFieldDidBlurNotification,_39,nil)); +return YES; +} +}),new objj_method(sel_getUid("needsPanelToBecomeKey"),function(_3b,_3c){ +with(_3b){ +return YES; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_3d,_3e,_3f){ +with(_3d){ +if(objj_msgSend(_3d,"isEditable")&&objj_msgSend(_3d,"isEnabled")){ +return objj_msgSend(objj_msgSend(_3d,"window"),"makeFirstResponder:",_3d); +}else{ +if(objj_msgSend(_3d,"isSelectable")){ +if(document.attachEvent){ +CPTextFieldCachedSelectStartFunction=objj_msgSend(objj_msgSend(_3d,"window"),"platformWindow")._DOMBodyElement.onselectstart; +CPTextFieldCachedDragFunction=objj_msgSend(objj_msgSend(_3d,"window"),"platformWindow")._DOMBodyElement.ondrag; +objj_msgSend(objj_msgSend(_3d,"window"),"platformWindow")._DOMBodyElement.ondrag=function(){ +}; +objj_msgSend(objj_msgSend(_3d,"window"),"platformWindow")._DOMBodyElement.onselectstart=function(){ +}; +} +return objj_msgSend(objj_msgSend(objj_msgSend(_3f,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +}else{ +return objj_msgSend(objj_msgSend(_3d,"nextResponder"),"mouseDown:",_3f); +} +} +} +}),new objj_method(sel_getUid("mouseUp:"),function(_40,_41,_42){ +with(_40){ +if(!objj_msgSend(_40,"isSelectable")&&(!objj_msgSend(_40,"isEditable")||!objj_msgSend(_40,"isEnabled"))){ +objj_msgSend(objj_msgSend(_40,"nextResponder"),"mouseUp:",_42); +}else{ +if(objj_msgSend(_40,"isSelectable")){ +if(document.attachEvent){ +objj_msgSend(objj_msgSend(_40,"window"),"platformWindow")._DOMBodyElement.ondrag=CPTextFieldCachedDragFunction; +objj_msgSend(objj_msgSend(_40,"window"),"platformWindow")._DOMBodyElement.onselectstart=CPTextFieldCachedSelectStartFunction; +CPTextFieldCachedSelectStartFunction=nil; +CPTextFieldCachedDragFunction=nil; +} +return objj_msgSend(objj_msgSend(objj_msgSend(_42,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("mouseDragged:"),function(_43,_44,_45){ +with(_43){ +if(!objj_msgSend(_43,"isSelectable")&&(!objj_msgSend(_43,"isEditable")||!objj_msgSend(_43,"isEnabled"))){ +objj_msgSend(objj_msgSend(_43,"nextResponder"),"mouseDragged:",_45); +}else{ +if(objj_msgSend(_43,"isSelectable")){ +return objj_msgSend(objj_msgSend(objj_msgSend(_45,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("keyUp:"),function(_46,_47,_48){ +with(_46){ +var _49=objj_msgSend(_46,"stringValue"); +objj_msgSend(_46,"_setStringValue:",objj_msgSend(_46,"_inputElement").value); +if(_49!==objj_msgSend(_46,"stringValue")){ +if(!_isEditing){ +_isEditing=YES; +objj_msgSend(_46,"textDidBeginEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidBeginEditingNotification,_46,nil)); +} +objj_msgSend(_46,"textDidChange:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidChangeNotification,_46,nil)); +} +objj_msgSend(objj_msgSend(objj_msgSend(_46,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +}),new objj_method(sel_getUid("keyDown:"),function(_4a,_4b,_4c){ +with(_4a){ +if(objj_msgSend(_4c,"keyCode")===CPReturnKeyCode){ +if(_isEditing){ +_isEditing=NO; +objj_msgSend(_4a,"textDidEndEditing:",objj_msgSend(CPNotification,"notificationWithName:object:userInfo:",CPControlTextDidEndEditingNotification,_4a,nil)); +} +objj_msgSend(_4a,"sendAction:to:",objj_msgSend(_4a,"action"),objj_msgSend(_4a,"target")); +objj_msgSend(_4a,"selectText:",nil); +objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +}else{ +if(objj_msgSend(_4c,"keyCode")===CPTabKeyCode){ +if(objj_msgSend(_4c,"modifierFlags")&CPShiftKeyMask){ +objj_msgSend(objj_msgSend(_4a,"window"),"selectPreviousKeyView:",_4a); +}else{ +objj_msgSend(objj_msgSend(_4a,"window"),"selectNextKeyView:",_4a); +} +if(objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"firstResponder"),"respondsToSelector:",sel_getUid("selectText:"))){ +objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"firstResponder"),"selectText:",_4a); +} +objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",NO); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_4a,"window"),"platformWindow"),"_propagateCurrentDOMEvent:",YES); +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("textDidBlur:"),function(_4d,_4e,_4f){ +with(_4d){ +if(objj_msgSend(_4f,"object")!=_4d){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotification:",_4f); +} +}),new objj_method(sel_getUid("textDidFocus:"),function(_50,_51,_52){ +with(_50){ +if(objj_msgSend(_52,"object")!=_50){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotification:",_52); +} +}),new objj_method(sel_getUid("objectValue"),function(_53,_54){ +with(_53){ +return objj_msgSendSuper({receiver:_53,super_class:objj_getClass("CPTextField").super_class},"objectValue"); +} +}),new objj_method(sel_getUid("_setStringValue:"),function(_55,_56,_57){ +with(_55){ +objj_msgSend(_55,"willChangeValueForKey:","objectValue"); +objj_msgSendSuper({receiver:_55,super_class:objj_getClass("CPTextField").super_class},"setObjectValue:",String(_57)); +objj_msgSend(_55,"_updatePlaceholderState"); +objj_msgSend(_55,"didChangeValueForKey:","objectValue"); +} +}),new objj_method(sel_getUid("setObjectValue:"),function(_58,_59,_5a){ +with(_58){ +objj_msgSendSuper({receiver:_58,super_class:objj_getClass("CPTextField").super_class},"setObjectValue:",_5a); +objj_msgSend(_58,"_updatePlaceholderState"); +} +}),new objj_method(sel_getUid("_updatePlaceholderState"),function(_5b,_5c){ +with(_5b){ +var _5d=objj_msgSend(_5b,"stringValue"); +if((!_5d||_5d.length===0)&&!objj_msgSend(_5b,"hasThemeState:",CPThemeStateEditing)){ +objj_msgSend(_5b,"setThemeState:",CPTextFieldStatePlaceholder); +}else{ +objj_msgSend(_5b,"unsetThemeState:",CPTextFieldStatePlaceholder); +} +} +}),new objj_method(sel_getUid("setPlaceholderString:"),function(_5e,_5f,_60){ +with(_5e){ +if(_placeholderString===_60){ +return; +} +_placeholderString=_60; +if(objj_msgSend(_5e,"hasThemeState:",CPTextFieldStatePlaceholder)){ +objj_msgSend(_5e,"setNeedsLayout"); +objj_msgSend(_5e,"setNeedsDisplay:",YES); +} +} +}),new objj_method(sel_getUid("placeholderString"),function(_61,_62){ +with(_61){ +return _placeholderString; +} +}),new objj_method(sel_getUid("sizeToFit"),function(_63,_64){ +with(_63){ +var _65=objj_msgSend((objj_msgSend(_63,"stringValue")||" "),"sizeWithFont:",objj_msgSend(_63,"currentValueForThemeAttribute:","font")),_66=objj_msgSend(_63,"currentValueForThemeAttribute:","content-inset"),_67=objj_msgSend(_63,"currentValueForThemeAttribute:","min-size"),_68=objj_msgSend(_63,"currentValueForThemeAttribute:","max-size"); +_65.width=MAX(_65.width+_66.left+_66.right,_67.width); +_65.height=MAX(_65.height+_66.top+_66.bottom,_67.height); +if(_68.width>=0){ +_65.width=MIN(_65.width,_68.width); +} +if(_68.height>=0){ +_65.height=MIN(_65.height,_68.height); +} +if(objj_msgSend(_63,"isEditable")){ +_65.width=CGRectGetWidth(objj_msgSend(_63,"frame")); +} +objj_msgSend(_63,"setFrameSize:",_65); +} +}),new objj_method(sel_getUid("selectText:"),function(_69,_6a,_6b){ +with(_69){ +} +}),new objj_method(sel_getUid("copy:"),function(_6c,_6d,_6e){ +with(_6c){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +var _6f=objj_msgSend(_6c,"selectedRange"); +if(_6f.length<1){ +return; +} +var _70=objj_msgSend(CPPasteboard,"generalPasteboard"),_71=objj_msgSend(_6c,"stringValue"),_72=objj_msgSend(_71,"substringWithRange:",_6f); +objj_msgSend(_70,"declareTypes:owner:",[CPStringPboardType],nil); +objj_msgSend(_70,"setString:forType:",_72,CPStringPboardType); +} +} +}),new objj_method(sel_getUid("cut:"),function(_73,_74,_75){ +with(_73){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_73,"copy:",_75); +objj_msgSend(_73,"deleteBackward:",_75); +} +} +}),new objj_method(sel_getUid("paste:"),function(_76,_77,_78){ +with(_76){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +var _79=objj_msgSend(CPPasteboard,"generalPasteboard"); +if(!objj_msgSend(objj_msgSend(_79,"types"),"containsObject:",CPStringPboardType)){ +return; +} +objj_msgSend(_76,"deleteBackward:",_78); +var _7a=objj_msgSend(_76,"selectedRange"),_7b=objj_msgSend(_76,"stringValue"),_7c=objj_msgSend(_79,"stringForType:",CPStringPboardType),_7d=objj_msgSend(_7b,"stringByReplacingCharactersInRange:withString:",_7a,_7c); +objj_msgSend(_76,"setStringValue:",_7d); +objj_msgSend(_76,"setSelectedRange:",CPMakeRange(_7a.location+_7c.length,0)); +} +} +}),new objj_method(sel_getUid("selectedRange"),function(_7e,_7f){ +with(_7e){ +if(objj_msgSend(objj_msgSend(_7e,"window"),"firstResponder")!==_7e){ +return CPMakeRange(0,0); +} +try{ +var _80=objj_msgSend(_7e,"_inputElement"),_81=_80.selectionStart,_82=_80.selectionEnd; +if(objj_msgSend(_81,"isKindOfClass:",CPNumber)){ +return CPMakeRange(_81,_82-_81); +} +var _83=_80.ownerDocument||_80.document,_84=_83.selection.createRange(),_85=_80.createTextRange(); +if(_85.inRange(_84)){ +_85.setEndPoint("EndToStart",_84); +return CPMakeRange(_85.text.length,_84.text.length); +} +} +catch(e){ +} +return CGMakeRange(0,0); +} +}),new objj_method(sel_getUid("setSelectedRange:"),function(_86,_87,_88){ +with(_86){ +if(!objj_msgSend(objj_msgSend(_86,"window"),"firstResponder")===_86){ +return; +} +var _89=objj_msgSend(_86,"_inputElement"); +try{ +if(objj_msgSend(_89.selectionStart,"isKindOfClass:",CPNumber)){ +_89.selectionStart=_88.location; +_89.selectionEnd=CPMaxRange(_88); +}else{ +var _8a=_89.ownerDocument||_89.document,_8b=_8a.selection.createRange(),_8c=_89.createTextRange(); +if(_8c.inRange(_8b)){ +_8c.collapse(true); +_8c.move("character",_88.location); +_8c.moveEnd("character",_88.length); +_8c.select(); +} +} +} +catch(e){ +} +} +}),new objj_method(sel_getUid("selectAll:"),function(_8d,_8e,_8f){ +with(_8d){ +objj_msgSend(_8d,"selectText:",_8f); +} +}),new objj_method(sel_getUid("deleteBackward:"),function(_90,_91,_92){ +with(_90){ +var _93=objj_msgSend(_90,"selectedRange"),_94=objj_msgSend(_90,"stringValue"),_95=objj_msgSend(_94,"stringByReplacingCharactersInRange:withString:",_93,""); +objj_msgSend(_90,"setStringValue:",_95); +objj_msgSend(_90,"setSelectedRange:",CPMakeRange(_93.location,0)); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_96,_97,_98){ +with(_96){ +var _99=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_delegate){ +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPControlTextDidBeginEditingNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPControlTextDidChangeNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPControlTextDidEndEditingNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPTextFieldDidFocusNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPTextFieldDidBlurNotification,_96); +} +_delegate=_98; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidBeginEditing:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidBeginEditing:"),CPControlTextDidBeginEditingNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidChange:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidChange:"),CPControlTextDidChangeNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidEndEditing:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidEndEditing:"),CPControlTextDidEndEditingNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidFocus:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidFocus:"),CPTextFieldDidFocusNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("controlTextDidBlur:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("controlTextDidBlur:"),CPTextFieldDidBlurNotification,_96); +} +} +}),new objj_method(sel_getUid("delegate"),function(_9a,_9b){ +with(_9a){ +return _delegate; +} +}),new objj_method(sel_getUid("contentRectForBounds:"),function(_9c,_9d,_9e){ +with(_9c){ +var _9f=objj_msgSend(_9c,"currentValueForThemeAttribute:","content-inset"); +if(!_9f){ +return _9e; +} +_9e.origin.x+=_9f.left; +_9e.origin.y+=_9f.top; +_9e.size.width-=_9f.left+_9f.right; +_9e.size.height-=_9f.top+_9f.bottom; +return _9e; +} +}),new objj_method(sel_getUid("bezelRectForBounds:"),function(_a0,_a1,_a2){ +with(_a0){ +var _a3=objj_msgSend(_a0,"currentValueForThemeAttribute:","bezel-inset"); +if(((_a3).top===0&&(_a3).right===0&&(_a3).bottom===0&&(_a3).left===0)){ +return _a2; +} +_a2.origin.x+=_a3.left; +_a2.origin.y+=_a3.top; +_a2.size.width-=_a3.left+_a3.right; +_a2.size.height-=_a3.top+_a3.bottom; +return _a2; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(_a4,_a5,_a6){ +with(_a4){ +if(_a6==="bezel-view"){ +return objj_msgSend(_a4,"bezelRectForBounds:",objj_msgSend(_a4,"bounds")); +}else{ +if(_a6==="content-view"){ +return objj_msgSend(_a4,"contentRectForBounds:",objj_msgSend(_a4,"bounds")); +} +} +return objj_msgSendSuper({receiver:_a4,super_class:objj_getClass("CPTextField").super_class},"rectForEphemeralSubviewNamed:",_a6); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(_a7,_a8,_a9){ +with(_a7){ +if(_a9==="bezel-view"){ +var _aa=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_aa,"setHitTests:",NO); +return _aa; +}else{ +var _aa=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",{origin:{x:0,y:0},size:{width:0,height:0}}); +objj_msgSend(_aa,"setHitTests:",NO); +return _aa; +} +return objj_msgSendSuper({receiver:_a7,super_class:objj_getClass("CPTextField").super_class},"createEphemeralSubviewNamed:",_a9); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_ab,_ac){ +with(_ab){ +var _ad=objj_msgSend(_ab,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","bezel-view",CPWindowBelow,"content-view"); +if(_ad){ +objj_msgSend(_ad,"setBackgroundColor:",objj_msgSend(_ab,"currentValueForThemeAttribute:","bezel-color")); +} +var _ae=objj_msgSend(_ab,"layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:","content-view",CPWindowAbove,"bezel-view"); +if(_ae){ +objj_msgSend(_ae,"setHidden:",objj_msgSend(_ab,"hasThemeState:",CPThemeStateEditing)); +var _af=""; +if(objj_msgSend(_ab,"hasThemeState:",CPTextFieldStatePlaceholder)){ +_af=objj_msgSend(_ab,"placeholderString"); +}else{ +_af=objj_msgSend(_ab,"stringValue"); +if(objj_msgSend(_ab,"isSecure")){ +_af=_b0(_af); +} +} +objj_msgSend(_ae,"setText:",_af); +objj_msgSend(_ae,"setTextColor:",objj_msgSend(_ab,"currentValueForThemeAttribute:","text-color")); +objj_msgSend(_ae,"setFont:",objj_msgSend(_ab,"currentValueForThemeAttribute:","font")); +objj_msgSend(_ae,"setAlignment:",objj_msgSend(_ab,"currentValueForThemeAttribute:","alignment")); +objj_msgSend(_ae,"setVerticalAlignment:",objj_msgSend(_ab,"currentValueForThemeAttribute:","vertical-alignment")); +objj_msgSend(_ae,"setLineBreakMode:",objj_msgSend(_ab,"currentValueForThemeAttribute:","line-break-mode")); +objj_msgSend(_ae,"setTextShadowColor:",objj_msgSend(_ab,"currentValueForThemeAttribute:","text-shadow-color")); +objj_msgSend(_ae,"setTextShadowOffset:",objj_msgSend(_ab,"currentValueForThemeAttribute:","text-shadow-offset")); +} +} +}),new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"),function(_b1,_b2,_b3,_b4){ +with(_b1){ +var _b5=_b4.length,_b6=objj_msgSend(_b4[0],"valueForKeyPath:",_b3); +objj_msgSend(_b1,"setStringValue:",_b6); +objj_msgSend(_b1,"setPlaceholderString:",""); +while(_b5-->1){ +if(_b6!==objj_msgSend(_b4[_b5],"valueForKeyPath:",_b3)){ +objj_msgSend(_b1,"setPlaceholderString:","Multiple Values"); +objj_msgSend(_b1,"setStringValue:",""); +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:"),function(_b7,_b8,_b9,_ba,_bb){ +with(_b7){ +return objj_msgSend(_b7,"textFieldWithStringValue:placeholder:width:theme:",_b9,_ba,_bb,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:theme:"),function(_bc,_bd,_be,_bf,_c0,_c1){ +with(_bc){ +var _c2=objj_msgSend(objj_msgSend(_bc,"alloc"),"initWithFrame:",CGRectMake(0,0,_c0,29)); +objj_msgSend(_c2,"setTheme:",_c1); +objj_msgSend(_c2,"setStringValue:",_be); +objj_msgSend(_c2,"setPlaceholderString:",_bf); +objj_msgSend(_c2,"setBordered:",YES); +objj_msgSend(_c2,"setBezeled:",YES); +objj_msgSend(_c2,"setEditable:",YES); +objj_msgSend(_c2,"sizeToFit"); +return _c2; +} +}),new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:"),function(_c3,_c4,_c5,_c6,_c7){ +with(_c3){ +return objj_msgSend(_c3,"roundedTextFieldWithStringValue:placeholder:width:theme:",_c5,_c6,_c7,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:theme:"),function(_c8,_c9,_ca,_cb,_cc,_cd){ +with(_c8){ +var _ce=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMake(0,0,_cc,29)); +objj_msgSend(_ce,"setTheme:",_cd); +objj_msgSend(_ce,"setStringValue:",_ca); +objj_msgSend(_ce,"setPlaceholderString:",_cb); +objj_msgSend(_ce,"setBezelStyle:",CPTextFieldRoundedBezel); +objj_msgSend(_ce,"setBordered:",YES); +objj_msgSend(_ce,"setBezeled:",YES); +objj_msgSend(_ce,"setEditable:",YES); +objj_msgSend(_ce,"sizeToFit"); +return _ce; +} +}),new objj_method(sel_getUid("labelWithTitle:"),function(_cf,_d0,_d1){ +with(_cf){ +return objj_msgSend(_cf,"labelWithTitle:theme:",_d1,objj_msgSend(CPTheme,"defaultTheme")); +} +}),new objj_method(sel_getUid("labelWithTitle:theme:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +var _d6=objj_msgSend(objj_msgSend(_d2,"alloc"),"init"); +objj_msgSend(_d6,"setStringValue:",_d4); +objj_msgSend(_d6,"sizeToFit"); +return _d6; +} +}),new objj_method(sel_getUid("themeClass"),function(_d7,_d8){ +with(_d7){ +return "textfield"; +} +}),new objj_method(sel_getUid("themeAttributes"),function(_d9,_da){ +with(_d9){ +return objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[{top:(0),right:(0),bottom:(0),left:(0)},{top:(2),right:(2),bottom:(2),left:(2)},objj_msgSend(CPNull,"null")],["bezel-inset","content-inset","bezel-color"]); +} +})]); +var _b0=function(_db){ +if(!_db){ +return ""; +} +return Array(_db.length+1).join(_1); +}; +var _dc="CPTextFieldIsEditableKey",_dd="CPTextFieldIsSelectableKey",_de="CPTextFieldIsBorderedKey",_df="CPTextFieldIsBezeledKey",_e0="CPTextFieldBezelStyleKey",_e1="CPTextFieldDrawsBackgroundKey",_e2="CPTextFieldLineBreakModeKey",_e3="CPTextFieldAlignmentKey",_e4="CPTextFieldBackgroundColorKey",_e5="CPTextFieldPlaceholderStringKey"; +var _2=objj_getClass("CPTextField"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPTextField\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_e6,_e7,_e8){ +with(_e6){ +_e6=objj_msgSendSuper({receiver:_e6,super_class:objj_getClass("CPTextField").super_class},"initWithCoder:",_e8); +if(_e6){ +objj_msgSend(_e6,"setEditable:",objj_msgSend(_e8,"decodeBoolForKey:",_dc)); +objj_msgSend(_e6,"setSelectable:",objj_msgSend(_e8,"decodeBoolForKey:",_dd)); +objj_msgSend(_e6,"setDrawsBackground:",objj_msgSend(_e8,"decodeBoolForKey:",_e1)); +objj_msgSend(_e6,"setTextFieldBackgroundColor:",objj_msgSend(_e8,"decodeObjectForKey:",_e4)); +objj_msgSend(_e6,"setLineBreakMode:",objj_msgSend(_e8,"decodeIntForKey:",_e2)); +objj_msgSend(_e6,"setAlignment:",objj_msgSend(_e8,"decodeIntForKey:",_e3)); +objj_msgSend(_e6,"setPlaceholderString:",objj_msgSend(_e8,"decodeObjectForKey:",_e5)); +} +return _e6; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e9,_ea,_eb){ +with(_e9){ +objj_msgSendSuper({receiver:_e9,super_class:objj_getClass("CPTextField").super_class},"encodeWithCoder:",_eb); +objj_msgSend(_eb,"encodeBool:forKey:",_isEditable,_dc); +objj_msgSend(_eb,"encodeBool:forKey:",_isSelectable,_dd); +objj_msgSend(_eb,"encodeBool:forKey:",_drawsBackground,_e1); +objj_msgSend(_eb,"encodeObject:forKey:",_textFieldBackgroundColor,_e4); +objj_msgSend(_eb,"encodeInt:forKey:",objj_msgSend(_e9,"lineBreakMode"),_e2); +objj_msgSend(_eb,"encodeInt:forKey:",objj_msgSend(_e9,"alignment"),_e3); +objj_msgSend(_eb,"encodeObject:forKey:",_placeholderString,_e5); +} +})]); +p;9;CPTheme.jt;12925;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;30;Foundation/CPKeyedUnarchiver.jt;12818; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +var _1={},_2=nil,_3=nil; +var _4=objj_allocateClassPair(CPObject,"CPTheme"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_attributes")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithName:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPTheme").super_class},"init"); +if(_6){ +_name=_8; +_attributes=objj_msgSend(CPDictionary,"dictionary"); +_1[_name]=_6; +} +return _6; +} +}),new objj_method(sel_getUid("name"),function(_9,_a){ +with(_9){ +return _name; +} +}),new objj_method(sel_getUid("classNames"),function(_b,_c){ +with(_b){ +return objj_msgSend(_attributes,"allKeys"); +} +}),new objj_method(sel_getUid("attributesForClass:"),function(_d,_e,_f){ +with(_d){ +if(!_f){ +return nil; +} +var _10=nil; +if(objj_msgSend(_f,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +var _11=CPClassFromString(_f); +if(_11){ +_f=_11; +}else{ +_10=_f; +} +} +if(!_10){ +if(objj_msgSend(_f,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +if(objj_msgSend(_f,"respondsToSelector:",sel_getUid("themeClass"))){ +_10=objj_msgSend(_f,"themeClass"); +}else{ +return nil; +} +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"aClass must be a class object or a string."); +} +} +return objj_msgSend(_attributes,"objectForKey:",_10); +} +}),new objj_method(sel_getUid("attributeNamesForClass:"),function(_12,_13,_14){ +with(_12){ +var _15=objj_msgSend(_12,"attributesForClass:",_14); +if(_15){ +return objj_msgSend(_15,"allKeys"); +}else{ +return objj_msgSend(CPArray,"array"); +} +} +}),new objj_method(sel_getUid("attributeWithName:forClass:"),function(_16,_17,_18,_19){ +with(_16){ +var _1a=objj_msgSend(_16,"attributesForClass:",_19); +if(!_1a){ +return nil; +} +return objj_msgSend(_1a,"objectForKey:",_18); +} +}),new objj_method(sel_getUid("valueForAttributeWithName:forClass:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +return objj_msgSend(_1b,"valueForAttributeWithName:inState:forClass:",_1d,CPThemeStateNormal,_1e); +} +}),new objj_method(sel_getUid("valueForAttributeWithName:inState:forClass:"),function(_1f,_20,_21,_22,_23){ +with(_1f){ +var _24=objj_msgSend(_1f,"attributeWithName:forClass:",_21,_23); +if(!_24){ +return nil; +} +return objj_msgSend(_24,"valueForState:",_22); +} +}),new objj_method(sel_getUid("takeThemeFromObject:"),function(_25,_26,_27){ +with(_25){ +var _28=objj_msgSend(_27,"_themeAttributeDictionary"),_29=nil,_2a=objj_msgSend(_28,"keyEnumerator"),_2b=objj_msgSend(objj_msgSend(_27,"class"),"themeClass"); +while(_29=objj_msgSend(_2a,"nextObject")){ +objj_msgSend(_25,"_recordAttribute:forClass:",objj_msgSend(_28,"objectForKey:",_29),_2b); +} +} +}),new objj_method(sel_getUid("_recordAttribute:forClass:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +if(!objj_msgSend(_2e,"hasValues")){ +return; +} +var _30=objj_msgSend(_attributes,"objectForKey:",_2f); +if(!_30){ +_30=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_attributes,"setObject:forKey:",_30,_2f); +} +var _31=objj_msgSend(_2e,"name"),_32=objj_msgSend(_30,"objectForKey:",_31); +if(_32){ +objj_msgSend(_30,"setObject:forKey:",objj_msgSend(_32,"attributeMergedWithAttribute:",_2e),_31); +}else{ +objj_msgSend(_30,"setObject:forKey:",_2e,_31); +} +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("setDefaultTheme:"),function(_33,_34,_35){ +with(_33){ +_2=_35; +} +}),new objj_method(sel_getUid("defaultTheme"),function(_36,_37){ +with(_36){ +return _2; +} +}),new objj_method(sel_getUid("setDefaultHudTheme:"),function(_38,_39,_3a){ +with(_38){ +_3=_3a; +} +}),new objj_method(sel_getUid("defaultHudTheme"),function(_3b,_3c){ +with(_3b){ +if(!_3){ +_3=objj_msgSend(CPTheme,"themeNamed:",objj_msgSend(objj_msgSend(_3b,"defaultTheme"),"name")+"-HUD"); +} +return _3; +} +}),new objj_method(sel_getUid("themeNamed:"),function(_3d,_3e,_3f){ +with(_3d){ +return _1[_3f]; +} +})]); +var _40="CPThemeNameKey",_41="CPThemeAttributesKey"; +var _4=objj_getClass("CPTheme"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPTheme\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_42,_43,_44){ +with(_42){ +_42=objj_msgSendSuper({receiver:_42,super_class:objj_getClass("CPTheme").super_class},"init"); +if(_42){ +_name=objj_msgSend(_44,"decodeObjectForKey:",_40); +_attributes=objj_msgSend(_44,"decodeObjectForKey:",_41); +_1[_name]=_42; +} +return _42; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_47,"encodeObject:forKey:",_name,_40); +objj_msgSend(_47,"encodeObject:forKey:",_attributes,_41); +} +})]); +var _4=objj_allocateClassPair(CPKeyedUnarchiver,"_CPThemeKeyedUnarchiver"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_bundle")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initForReadingWithData:bundle:"),function(_48,_49,_4a,_4b){ +with(_48){ +_48=objj_msgSendSuper({receiver:_48,super_class:objj_getClass("_CPThemeKeyedUnarchiver").super_class},"initForReadingWithData:",_4a); +if(_48){ +_bundle=_4b; +} +return _48; +} +}),new objj_method(sel_getUid("bundle"),function(_4c,_4d){ +with(_4c){ +return _bundle; +} +}),new objj_method(sel_getUid("awakenCustomResources"),function(_4e,_4f){ +with(_4e){ +return YES; +} +})]); +var _50={},_51={},_52=0; +CPThemeState=function(_53){ +var _54=_50[_53]; +if(_54===undefined){ +if(_53.indexOf("+")===-1){ +_54=1<<_52++; +}else{ +var _54=0,_55=_53.split("+"),_56=_55.length; +while(_56--){ +var _57=_55[_56],_58=_50[_57]; +if(_58===undefined){ +_58=1<<_52++; +_50[_57]=_58; +_51[_58]=_57; +} +_54|=_58; +} +} +_50[_53]=_54; +_51[_54]=_53; +} +return _54; +}; +CPThemeStateName=function(_59){ +var _5a=_51[_59]; +if(_5a!==undefined){ +return _5a; +} +if(!(_59&(_59-1))){ +return ""; +} +var _5b=1,_5a=""; +for(;_5b<_59;_5b<<=1){ +if(_59&_5b){ +_5a+=(_5a.length===0?"":"+")+_51[_5b]; +} +} +_51[_59]=_5a; +return _5a; +}; +_51[0]="normal"; +CPThemeStateNormal=_50["normal"]=0; +CPThemeStateDisabled=CPThemeState("disabled"); +CPThemeStateHighlighted=CPThemeState("highlighted"); +CPThemeStateSelected=CPThemeState("selected"); +CPThemeStateTableDataView=CPThemeState("tableDataView"); +CPThemeStateSelectedDataView=CPThemeStateSelectedTableDataView=CPThemeState("selectedTableDataView"); +CPThemeStateBezeled=CPThemeState("bezeled"); +CPThemeStateBordered=CPThemeState("bordered"); +CPThemeStateEditable=CPThemeState("editable"); +CPThemeStateEditing=CPThemeState("editing"); +CPThemeStateVertical=CPThemeState("vertical"); +CPThemeStateDefault=CPThemeState("default"); +CPThemeStateCircular=CPThemeState("circular"); +var _4=objj_allocateClassPair(CPObject,"_CPThemeAttribute"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_name"),new objj_ivar("_defaultValue"),new objj_ivar("_values"),new objj_ivar("_cache"),new objj_ivar("_parentAttribute")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("values"),function(_5c,_5d){ +with(_5c){ +return _values; +} +}),new objj_method(sel_getUid("initWithName:defaultValue:"),function(_5e,_5f,_60,_61){ +with(_5e){ +_5e=objj_msgSendSuper({receiver:_5e,super_class:objj_getClass("_CPThemeAttribute").super_class},"init"); +if(_5e){ +_cache={}; +_name=_60; +_defaultValue=_61; +_values=objj_msgSend(CPDictionary,"dictionary"); +} +return _5e; +} +}),new objj_method(sel_getUid("name"),function(_62,_63){ +with(_62){ +return _name; +} +}),new objj_method(sel_getUid("defaultValue"),function(_64,_65){ +with(_64){ +return _defaultValue; +} +}),new objj_method(sel_getUid("hasValues"),function(_66,_67){ +with(_66){ +return objj_msgSend(_values,"count")>0; +} +}),new objj_method(sel_getUid("isTrivial"),function(_68,_69){ +with(_68){ +return (objj_msgSend(_values,"count")===1)&&(Number(objj_msgSend(_values,"allKeys")[0])===CPThemeStateNormal); +} +}),new objj_method(sel_getUid("setValue:"),function(_6a,_6b,_6c){ +with(_6a){ +_cache={}; +if(_6c===undefined||_6c===nil){ +_values=objj_msgSend(CPDictionary,"dictionary"); +}else{ +_values=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_6c,String(CPThemeStateNormal)); +} +} +}),new objj_method(sel_getUid("setValue:forState:"),function(_6d,_6e,_6f,_70){ +with(_6d){ +_cache={}; +if((_6f===undefined)||(_6f===nil)){ +objj_msgSend(_values,"removeObjectForKey:",String(_70)); +}else{ +objj_msgSend(_values,"setObject:forKey:",_6f,String(_70)); +} +} +}),new objj_method(sel_getUid("value"),function(_71,_72){ +with(_71){ +return objj_msgSend(_71,"valueForState:",CPThemeStateNormal); +} +}),new objj_method(sel_getUid("valueForState:"),function(_73,_74,_75){ +with(_73){ +var _76=_cache[_75]; +if(_76!==undefined){ +return _76; +} +_76=objj_msgSend(_values,"objectForKey:",String(_75)); +if((_76===undefined||_76===nil)&&_75!==CPThemeStateNormal){ +if(_75&(_75-1)){ +var _77=0,_78=objj_msgSend(_values,"allKeys"),_79=_78.length; +while(_79--){ +var _7a=Number(_78[_79]); +if((_7a&_75)===_7a){ +var _7b=_7c[_7a]; +if(_7b===undefined){ +_7b=_7d(_7a); +} +if(_7b>_77){ +_77=_7b; +_76=objj_msgSend(_values,"objectForKey:",String(_7a)); +} +} +} +} +if(_76===undefined||_76===nil){ +_76=objj_msgSend(_values,"objectForKey:",String(CPThemeStateNormal)); +} +} +if(_76===undefined||_76===nil){ +_76=objj_msgSend(_parentAttribute,"valueForState:",_75); +} +if(_76===undefined||_76===nil){ +_76=_defaultValue; +} +_cache[_75]=_76; +return _76; +} +}),new objj_method(sel_getUid("setParentAttribute:"),function(_7e,_7f,_80){ +with(_7e){ +if(_parentAttribute===_80){ +return; +} +_cache={}; +_parentAttribute=_80; +} +}),new objj_method(sel_getUid("attributeMergedWithAttribute:"),function(_81,_82,_83){ +with(_81){ +var _84=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_name,_defaultValue); +_84._values=objj_msgSend(_values,"copy"); +objj_msgSend(_84._values,"addEntriesFromDictionary:",_83._values); +return _84; +} +})]); +var _4=objj_getClass("_CPThemeAttribute"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"_CPThemeAttribute\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_85,_86,_87){ +with(_85){ +_85=objj_msgSendSuper({receiver:_85,super_class:objj_getClass("_CPThemeAttribute").super_class},"init"); +if(_85){ +_cache={}; +_name=objj_msgSend(_87,"decodeObjectForKey:","name"); +_values=objj_msgSend(CPDictionary,"dictionary"); +if(objj_msgSend(_87,"containsValueForKey:","value")){ +var _88=CPThemeStateNormal; +if(objj_msgSend(_87,"containsValueForKey:","state")){ +_88=CPThemeState(objj_msgSend(_87,"decodeObjectForKey:","state")); +} +objj_msgSend(_values,"setObject:forKey:",objj_msgSend(_87,"decodeObjectForKey:","value"),_88); +}else{ +var _89=objj_msgSend(_87,"decodeObjectForKey:","values"),_8a=objj_msgSend(_89,"allKeys"),_8b=_8a.length; +while(_8b--){ +var key=_8a[_8b]; +objj_msgSend(_values,"setObject:forKey:",objj_msgSend(_89,"objectForKey:",key),CPThemeState(key)); +} +} +} +return _85; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8c,_8d,_8e){ +with(_8c){ +objj_msgSend(_8e,"encodeObject:forKey:",_name,"name"); +var _8f=objj_msgSend(_values,"allKeys"),_90=_8f.length; +if(_90===1){ +var _91=_8f[0]; +if(Number(_91)!==CPThemeStateNormal){ +objj_msgSend(_8e,"encodeObject:forKey:",CPThemeStateName(Number(_91)),"state"); +} +objj_msgSend(_8e,"encodeObject:forKey:",objj_msgSend(_values,"objectForKey:",_91),"value"); +}else{ +var _92=objj_msgSend(CPDictionary,"dictionary"); +while(_90--){ +var key=_8f[_90]; +objj_msgSend(_92,"setObject:forKey:",objj_msgSend(_values,"objectForKey:",key),CPThemeStateName(Number(key))); +} +objj_msgSend(_8e,"encodeObject:forKey:",_92,"values"); +} +} +})]); +var _7c=[0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6]; +var _7d=function(_93){ +var _94=0,_95=_93; +while(_93){ +++_94; +_93&=(_93-1); +} +_7c[_95]=_94; +return _94; +}; +_7d.displayName="numberOfOnes"; +CPThemeAttributeEncode=function(_96,_97){ +var _98=_97._values,_99=objj_msgSend(_98,"count"),key="$a"+objj_msgSend(_97,"name"); +if(_99===1){ +var _9a=objj_msgSend(_98,"allKeys")[0]; +if(Number(_9a)===0){ +objj_msgSend(_96,"encodeObject:forKey:",objj_msgSend(_98,"objectForKey:",_9a),key); +return YES; +} +} +if(_99>=1){ +objj_msgSend(_96,"encodeObject:forKey:",_97,key); +return YES; +} +return NO; +}; +CPThemeAttributeDecode=function(_9b,_9c,_9d,_9e,_9f){ +var key="$a"+_9c; +if(!objj_msgSend(_9b,"containsValueForKey:",key)){ +var _a0=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_9c,_9d); +}else{ +var _a0=objj_msgSend(_9b,"decodeObjectForKey:",key); +if(!_a0.isa||!objj_msgSend(_a0,"isKindOfClass:",objj_msgSend(_CPThemeAttribute,"class"))){ +var _a1=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_9c,_9d); +objj_msgSend(_a1,"setValue:",_a0); +_a0=_a1; +} +} +if(_9e&&_9f){ +objj_msgSend(_a0,"setParentAttribute:",objj_msgSend(_9e,"attributeWithName:forClass:",_9c,_9f)); +} +return _a0; +}; +p;14;CPThemeBlend.jt;1853;@STATIC;1.0;I;21;Foundation/CPObject.jI;16;AppKit/CPTheme.jI;29;AppKit/_CPCibCustomResource.jI;30;AppKit/_CPCibKeyedUnarchiver.jt;1718; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CPTheme.j",NO); +objj_executeFile("AppKit/_CPCibCustomResource.j",NO); +objj_executeFile("AppKit/_CPCibKeyedUnarchiver.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPThemeBlend"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_bundle"),new objj_ivar("_themes"),new objj_ivar("_loadDelegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithContentsOfURL:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPThemeBlend").super_class},"init"); +if(_3){ +_bundle=objj_msgSend(objj_msgSend(CPBundle,"alloc"),"initWithPath:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("themes"),function(_6,_7){ +with(_6){ +return _themes; +} +}),new objj_method(sel_getUid("themeNames"),function(_8,_9){ +with(_8){ +var _a=[]; +for(var i=0;i<_themes.length;++i){ +_a.push(_themes[i].substring(0,_themes[i].indexOf(".keyedtheme"))); +} +return _a; +} +}),new objj_method(sel_getUid("loadWithDelegate:"),function(_b,_c,_d){ +with(_b){ +_loadDelegate=_d; +objj_msgSend(_bundle,"loadWithDelegate:",_b); +} +}),new objj_method(sel_getUid("bundleDidFinishLoading:"),function(_e,_f,_10){ +with(_e){ +_themes=objj_msgSend(_bundle,"objectForInfoDictionaryKey:","CPKeyedThemes"); +var _11=_themes.length; +while(_11--){ +var _12=objj_msgSend(_10,"pathForResource:",_themes[_11]),_13=objj_msgSend(objj_msgSend(_CPThemeKeyedUnarchiver,"alloc"),"initForReadingWithData:bundle:",objj_msgSend(objj_msgSend(CPURL,"URLWithString:",_12),"staticResourceData"),_bundle); +objj_msgSend(_13,"decodeObjectForKey:","root"); +objj_msgSend(_13,"finishDecoding"); +} +objj_msgSend(_loadDelegate,"blendDidFinishLoading:",_e); +} +})]); +p;11;CPToolbar.jt;24452;@STATIC;1.0;I;21;Foundation/CPObject.ji;15;CPPopUpButton.ji;15;CPToolbarItem.jt;24366; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPPopUpButton.j",YES); +objj_executeFile("CPToolbarItem.j",YES); +CPToolbarDisplayModeDefault=0; +CPToolbarDisplayModeIconAndLabel=1; +CPToolbarDisplayModeIconOnly=2; +CPToolbarDisplayModeLabelOnly=3; +var _1=nil; +var _2=nil; +var _3=objj_allocateClassPair(CPObject,"CPToolbar"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_identifier"),new objj_ivar("_displayMode"),new objj_ivar("_showsBaselineSeparator"),new objj_ivar("_allowsUserCustomization"),new objj_ivar("_isVisible"),new objj_ivar("_delegate"),new objj_ivar("_itemIdentifiers"),new objj_ivar("_identifiedItems"),new objj_ivar("_defaultItems"),new objj_ivar("_allowedItems"),new objj_ivar("_selectableItems"),new objj_ivar("_items"),new objj_ivar("_itemsSortedByVisibilityPriority"),new objj_ivar("_toolbarView"),new objj_ivar("_window")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +return objj_msgSend(_5,"initWithIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithIdentifier:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPToolbar").super_class},"init"); +if(_7){ +_items=[]; +_identifier=_9; +_isVisible=YES; +objj_msgSend(CPToolbar,"_addToolbar:forIdentifier:",_7,_identifier); +} +return _7; +} +}),new objj_method(sel_getUid("setDisplayMode:"),function(_a,_b,_c){ +with(_a){ +} +}),new objj_method(sel_getUid("identifier"),function(_d,_e){ +with(_d){ +return _identifier; +} +}),new objj_method(sel_getUid("delegate"),function(_f,_10){ +with(_f){ +return _delegate; +} +}),new objj_method(sel_getUid("isVisible"),function(_11,_12){ +with(_11){ +return _isVisible; +} +}),new objj_method(sel_getUid("setVisible:"),function(_13,_14,_15){ +with(_13){ +if(_isVisible===_15){ +return; +} +_isVisible=_15; +objj_msgSend(_window,"_noteToolbarChanged"); +} +}),new objj_method(sel_getUid("_window"),function(_16,_17){ +with(_16){ +return _window; +} +}),new objj_method(sel_getUid("_setWindow:"),function(_18,_19,_1a){ +with(_18){ +_window=_1a; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_1b,_1c,_1d){ +with(_1b){ +if(_delegate===_1d){ +return; +} +_delegate=_1d; +objj_msgSend(_1b,"_reloadToolbarItems"); +} +}),new objj_method(sel_getUid("_loadConfiguration"),function(_1e,_1f){ +with(_1e){ +} +}),new objj_method(sel_getUid("_toolbarView"),function(_20,_21){ +with(_20){ +if(!_toolbarView){ +_toolbarView=objj_msgSend(objj_msgSend(_CPToolbarView,"alloc"),"initWithFrame:",CPRectMake(0,0,1200,59)); +objj_msgSend(_toolbarView,"setToolbar:",_20); +objj_msgSend(_toolbarView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +return _toolbarView; +} +}),new objj_method(sel_getUid("_reloadToolbarItems"),function(_22,_23){ +with(_22){ +_itemIdentifiers=objj_msgSend(_defaultItems,"valueForKey:","itemIdentifier")||[]; +if(_delegate){ +var _24=objj_msgSend(objj_msgSend(_delegate,"toolbarDefaultItemIdentifiers:",_22),"mutableCopy"); +if(_24){ +_itemIdentifiers=objj_msgSend(_itemIdentifiers,"arrayByAddingObjectsFromArray:",_24); +} +} +var _25=0,_26=objj_msgSend(_itemIdentifiers,"count"); +_items=[]; +for(;_25<_26;++_25){ +var _27=_itemIdentifiers[_25],_28=objj_msgSend(CPToolbarItem,"_standardItemWithItemIdentifier:",_27); +if(!_28){ +_28=objj_msgSend(_identifiedItems,"objectForKey:",_27); +} +if(!_28&&_delegate){ +_28=objj_msgSend(_delegate,"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",_22,_27,YES); +} +_28=objj_msgSend(_28,"copy"); +if(_28===nil){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Toolbar delegate "+_delegate+" returned nil toolbar item for identifier \""+_27+"\""); +} +_28._toolbar=_22; +objj_msgSend(_items,"addObject:",_28); +} +_itemsSortedByVisibilityPriority=objj_msgSend(_items,"sortedArrayUsingFunction:context:",_29,NULL); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +}),new objj_method(sel_getUid("items"),function(_2a,_2b){ +with(_2a){ +return _items; +} +}),new objj_method(sel_getUid("visibleItems"),function(_2c,_2d){ +with(_2c){ +return objj_msgSend(_toolbarView,"visibleItems"); +} +}),new objj_method(sel_getUid("itemsSortedByVisibilityPriority"),function(_2e,_2f){ +with(_2e){ +return _itemsSortedByVisibilityPriority; +} +}),new objj_method(sel_getUid("validateVisibleItems"),function(_30,_31){ +with(_30){ +var _32=objj_msgSend(_30,"visibleItems"),_33=objj_msgSend(_32,"count"); +while(_33--){ +objj_msgSend(_32[_33],"validate"); +} +} +}),new objj_method(sel_getUid("_itemForItemIdentifier:willBeInsertedIntoToolbar:"),function(_34,_35,_36,_37){ +with(_34){ +var _38=objj_msgSend(_identifiedItems,"objectForKey:",_36); +if(!_38){ +_38=objj_msgSend(CPToolbarItem,"_standardItemWithItemIdentifier:",_36); +if(_delegate&&!_38){ +_38=objj_msgSend(objj_msgSend(_delegate,"toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",_34,_36,_37),"copy"); +if(!_38){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Toolbar delegate "+_delegate+" returned nil toolbar item for identifier "+_36); +} +} +objj_msgSend(_identifiedItems,"setObject:forKey:",_38,_36); +} +return _38; +} +}),new objj_method(sel_getUid("_itemsWithIdentifiers:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=[]; +for(var i=0;i<_3b.length;i++){ +objj_msgSend(_3c,"addObject:",objj_msgSend(_39,"_itemForItemIdentifier:willBeInsertedIntoToolbar:",_3b[i],NO)); +} +return _3c; +} +}),new objj_method(sel_getUid("_defaultToolbarItems"),function(_3d,_3e){ +with(_3d){ +if(!_defaultItems&&objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("toolbarDefaultItemIdentifiers:"))){ +_defaultItems=[]; +var _3f=objj_msgSend(_delegate,"toolbarDefaultItemIdentifiers:",_3d),_40=0,_41=objj_msgSend(_3f,"count"); +for(;_40<_41;++_40){ +objj_msgSend(_defaultItems,"addObject:",objj_msgSend(_3d,"_itemForItemIdentifier:willBeInsertedIntoToolbar:",_3f[_40],NO)); +} +} +return _defaultItems; +} +}),new objj_method(sel_getUid("toolbarItemDidChange:"),function(_42,_43,_44){ +with(_42){ +if(objj_msgSend(_identifiedItems,"objectForKey:",objj_msgSend(_44,"itemIdentifier"))){ +objj_msgSend(_identifiedItems,"setObject:forKey:",_44,objj_msgSend(_44,"itemIdentifier")); +} +var _45=0,_46=objj_msgSend(_items,"count"); +for(;_45<=_46;++_45){ +var _47=_items[_45]; +if(objj_msgSend(_47,"itemIdentifier")===objj_msgSend(_44,"itemIdentifier")){ +_items[_45]=_44; +_itemsSortedByVisibilityPriority=objj_msgSend(_items,"sortedArrayUsingFunction:context:",_29,NULL); +objj_msgSend(_toolbarView,"reloadToolbarItems"); +} +} +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_48,_49){ +with(_48){ +if(_48!=objj_msgSend(CPToolbar,"class")){ +return; +} +_1=objj_msgSend(CPDictionary,"dictionary"); +_2=objj_msgSend(CPDictionary,"dictionary"); +} +}),new objj_method(sel_getUid("_addToolbar:forIdentifier:"),function(_4a,_4b,_4c,_4d){ +with(_4a){ +var _4e=objj_msgSend(_1,"objectForKey:",_4d); +if(!_4e){ +_4e=[]; +objj_msgSend(_1,"setObject:forKey:",_4e,_4d); +} +objj_msgSend(_4e,"addObject:",_4c); +} +})]); +var _4f="CPToolbarIdentifierKey",_50="CPToolbarDisplayModeKey",_51="CPToolbarShowsBaselineSeparatorKey",_52="CPToolbarAllowsUserCustomizationKey",_53="CPToolbarIsVisibleKey",_54="CPToolbarDelegateKey",_55="CPToolbarIdentifiedItemsKey",_56="CPToolbarDefaultItemsKey",_57="CPToolbarAllowedItemsKey",_58="CPToolbarSelectableItemsKey"; +var _3=objj_getClass("CPToolbar"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbar\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_59,_5a,_5b){ +with(_59){ +_59=objj_msgSendSuper({receiver:_59,super_class:objj_getClass("CPToolbar").super_class},"init"); +if(_59){ +_identifier=objj_msgSend(_5b,"decodeObjectForKey:",_4f); +_displayMode=objj_msgSend(_5b,"decodeIntForKey:",_50); +_showsBaselineSeparator=objj_msgSend(_5b,"decodeBoolForKey:",_51); +_allowsUserCustomization=objj_msgSend(_5b,"decodeBoolForKey:",_52); +_isVisible=objj_msgSend(_5b,"decodeBoolForKey:",_53); +_identifiedItems=objj_msgSend(_5b,"decodeObjectForKey:",_55); +_defaultItems=objj_msgSend(_5b,"decodeObjectForKey:",_56); +_allowedItems=objj_msgSend(_5b,"decodeObjectForKey:",_57); +_selectableItems=objj_msgSend(_5b,"decodeObjectForKey:",_58); +objj_msgSend(objj_msgSend(_identifiedItems,"allValues"),"makeObjectsPerformSelector:withObject:",sel_getUid("_setToolbar:"),_59); +_items=[]; +objj_msgSend(CPToolbar,"_addToolbar:forIdentifier:",_59,_identifier); +objj_msgSend(_59,"setDelegate:",objj_msgSend(_5b,"decodeObjectForKey:",_54)); +objj_msgSend(_59,"_reloadToolbarItems"); +} +return _59; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_5c,_5d,_5e){ +with(_5c){ +objj_msgSend(_5e,"encodeObject:forKey:",_identifier,_4f); +objj_msgSend(_5e,"encodeInt:forKey:",_displayMode,_50); +objj_msgSend(_5e,"encodeBool:forKey:",_showsBaselineSeparator,_51); +objj_msgSend(_5e,"encodeBool:forKey:",_allowsUserCustomization,_52); +objj_msgSend(_5e,"encodeBool:forKey:",_isVisible,_53); +objj_msgSend(_5e,"encodeObject:forKey:",_identifiedItems,_55); +objj_msgSend(_5e,"encodeObject:forKey:",_defaultItems,_56); +objj_msgSend(_5e,"encodeObject:forKey:",_allowedItems,_57); +objj_msgSend(_5e,"encodeObject:forKey:",_selectableItems,_58); +objj_msgSend(_5e,"encodeConditionalObject:forKey:",_delegate,_54); +} +})]); +var _5f=nil,_60=nil,_61=nil; +var _62=5,_63=10,_64=20; +var _65=function(_66,_67,_68,_69){ +return {index:_66,view:_67,label:_68,minWidth:_69}; +}; +var _3=objj_allocateClassPair(CPView,"_CPToolbarView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_toolbar"),new objj_ivar("_flexibleWidthIndexes"),new objj_ivar("_visibleFlexibleWidthIndexes"),new objj_ivar("_itemInfos"),new objj_ivar("_viewsForToolbarItems"),new objj_ivar("_visibleItems"),new objj_ivar("_invisibleItems"),new objj_ivar("_additionalItemsButton"),new objj_ivar("_labelColor"),new objj_ivar("_labelShadowColor"),new objj_ivar("_minWidth"),new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("visibleItems"),function(_6a,_6b){ +with(_6a){ +return _visibleItems; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_6c,_6d,_6e){ +with(_6c){ +_6c=objj_msgSendSuper({receiver:_6c,super_class:objj_getClass("_CPToolbarView").super_class},"initWithFrame:",_6e); +if(_6c){ +_minWidth=0; +_labelColor=objj_msgSend(CPColor,"blackColor"); +_labelShadowColor=objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.75); +_additionalItemsButton=objj_msgSend(objj_msgSend(CPPopUpButton,"alloc"),"initWithFrame:pullsDown:",CGRectMake(0,0,10,15),YES); +objj_msgSend(_additionalItemsButton,"setBordered:",NO); +objj_msgSend(_additionalItemsButton,"setImagePosition:",CPImageOnly); +objj_msgSend(objj_msgSend(_additionalItemsButton,"menu"),"setShowsStateColumn:",NO); +objj_msgSend(objj_msgSend(_additionalItemsButton,"menu"),"setAutoenablesItems:",NO); +objj_msgSend(_additionalItemsButton,"setAlternateImage:",_61); +} +return _6c; +} +}),new objj_method(sel_getUid("setToolbar:"),function(_6f,_70,_71){ +with(_6f){ +_toolbar=_71; +} +}),new objj_method(sel_getUid("toolbar"),function(_72,_73){ +with(_72){ +return _toolbar; +} +}),new objj_method(sel_getUid("FIXME_setIsHUD:"),function(_74,_75,_76){ +with(_74){ +if(_FIXME_isHUD===_76){ +return; +} +_FIXME_isHUD=_76; +var _77=objj_msgSend(_toolbar,"items"),_78=objj_msgSend(_77,"count"); +while(_78--){ +objj_msgSend(objj_msgSend(_74,"viewForItem:",_77[_78]),"FIXME_setIsHUD:",_76); +} +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"tile"); +} +}),new objj_method(sel_getUid("viewForItem:"),function(_7c,_7d,_7e){ +with(_7c){ +return _viewsForToolbarItems[objj_msgSend(_7e,"UID")]||nil; +} +}),new objj_method(sel_getUid("tile"),function(_7f,_80){ +with(_7f){ +var _81=objj_msgSend(_toolbar,"items"),_82=CGRectGetWidth(objj_msgSend(_7f,"bounds")),_83=_minWidth,_84=[]; +_visibleItems=_81; +if(_82<_83){ +_82-=_64; +_visibleItems=objj_msgSend(_visibleItems,"copy"); +var _85=objj_msgSend(_toolbar,"itemsSortedByVisibilityPriority"),_86=_85.length; +while(_83>_82&&_86){ +var _87=_85[--_86],_88=objj_msgSend(_7f,"viewForItem:",_87); +_83-=objj_msgSend(_88,"minSize").width+_63; +objj_msgSend(_visibleItems,"removeObjectIdenticalTo:",_87); +objj_msgSend(_84,"addObject:",_87); +objj_msgSend(_88,"setHidden:",YES); +objj_msgSend(_88,"FIXME_setIsHUD:",_FIXME_isHUD); +} +} +var _86=objj_msgSend(_81,"count"),_89=0; +while(_86--){ +var _88=objj_msgSend(_7f,"viewForItem:",_81[_86]),_8a=objj_msgSend(_88,"minSize"); +if(_89<_8a.height){ +_89=_8a.height; +} +} +var _86=_visibleItems.length; +flexibleItemIndexes=objj_msgSend(CPIndexSet,"indexSet"); +while(_86--){ +var _87=_visibleItems[_86],_88=objj_msgSend(_7f,"viewForItem:",_87),_8a=objj_msgSend(_88,"minSize"); +if(_8a.width!==objj_msgSend(_88,"maxSize").width){ +objj_msgSend(flexibleItemIndexes,"addIndex:",_86); +}else{ +objj_msgSend(_88,"setFrameSize:",CGSizeMake(_8a.width,_89)); +} +objj_msgSend(_88,"setHidden:",NO); +} +var _8b=_82-_83,_8c=0; +while(_8b&&objj_msgSend(flexibleItemIndexes,"count")){ +_8c+=_8b/objj_msgSend(flexibleItemIndexes,"count"); +_8b=0; +var _8d=CPNotFound; +while((_8d=objj_msgSend(flexibleItemIndexes,"indexGreaterThanIndex:",_8d))!==CPNotFound){ +var _87=_visibleItems[_8d],_88=objj_msgSend(_7f,"viewForItem:",_87),_8e=objj_msgSend(_88,"minSize").width+_8c,_8f=MIN(_8e,objj_msgSend(_88,"maxSize").width); +if(_8f<_8e){ +objj_msgSend(flexibleItemIndexes,"removeIndex:",_8d); +_8b+=_8e-_8f; +} +objj_msgSend(_88,"setFrameSize:",CGSizeMake(_8f,_89)); +} +} +var _8d=0,_86=_visibleItems.length,x=_63; +for(;_8d<_86;++_8d){ +var _88=objj_msgSend(_7f,"viewForItem:",_visibleItems[_8d]),_90=CGRectGetWidth(objj_msgSend(_88,"frame")); +objj_msgSend(_88,"setFrame:",CGRectMake(x,0,_90,_89)); +x+=_90+_63; +} +var _91=NO; +if(objj_msgSend(_84,"count")){ +var _8d=0,_86=objj_msgSend(_81,"count"); +_invisibleItems=[]; +for(;_8d<_86;++_8d){ +var _87=_81[_8d]; +if(objj_msgSend(_84,"indexOfObjectIdenticalTo:",_87)!==CPNotFound){ +objj_msgSend(_invisibleItems,"addObject:",_87); +var _92=objj_msgSend(_87,"itemIdentifier"); +if(_92!==CPToolbarSpaceItemIdentifier&&_92!==CPToolbarFlexibleSpaceItemIdentifier&&_92!==CPToolbarSeparatorItemIdentifier){ +_91=YES; +} +} +} +} +if(_91){ +objj_msgSend(_additionalItemsButton,"setFrameOrigin:",CGPointMake(_82+5,(CGRectGetHeight(objj_msgSend(_7f,"bounds"))-CGRectGetHeight(objj_msgSend(_additionalItemsButton,"frame")))/2)); +objj_msgSend(_7f,"addSubview:",_additionalItemsButton); +objj_msgSend(_additionalItemsButton,"removeAllItems"); +objj_msgSend(_additionalItemsButton,"addItemWithTitle:","Additional Items"); +objj_msgSend(objj_msgSend(_additionalItemsButton,"itemArray")[0],"setImage:",_60); +var _8d=0,_86=objj_msgSend(_invisibleItems,"count"),_93=NO; +for(;_8d<_86;++_8d){ +var _87=_invisibleItems[_8d],_92=objj_msgSend(_87,"itemIdentifier"); +if(_92===CPToolbarSpaceItemIdentifier||_92===CPToolbarFlexibleSpaceItemIdentifier){ +continue; +} +if(_92===CPToolbarSeparatorItemIdentifier){ +if(_93){ +objj_msgSend(_additionalItemsButton,"addItem:",objj_msgSend(CPMenuItem,"separatorItem")); +} +continue; +} +_93=YES; +var _94=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",objj_msgSend(_87,"label"),objj_msgSend(_87,"action"),nil); +objj_msgSend(_94,"setImage:",objj_msgSend(_87,"image")); +objj_msgSend(_94,"setTarget:",objj_msgSend(_87,"target")); +objj_msgSend(_94,"setEnabled:",objj_msgSend(_87,"isEnabled")); +objj_msgSend(_additionalItemsButton,"addItem:",_94); +} +}else{ +objj_msgSend(_additionalItemsButton,"removeFromSuperview"); +} +} +}),new objj_method(sel_getUid("reloadToolbarItems"),function(_95,_96){ +with(_95){ +var _97=objj_msgSend(_95,"subviews"),_98=_97.length; +while(_98--){ +objj_msgSend(_97[_98],"removeFromSuperview"); +} +var _99=objj_msgSend(_toolbar,"items"),_9a=0; +_98=_99.length; +_minWidth=_63; +_viewsForToolbarItems={}; +for(;_9a<_98;++_9a){ +var _9b=_99[_9a],_9c=objj_msgSend(objj_msgSend(_CPToolbarItemView,"alloc"),"initWithToolbarItem:toolbar:",_9b,_95); +_viewsForToolbarItems[objj_msgSend(_9b,"UID")]=_9c; +objj_msgSend(_95,"addSubview:",_9c); +_minWidth+=objj_msgSend(_9c,"minSize").width+_63; +} +objj_msgSend(_95,"tile"); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("initialize"),function(_9d,_9e){ +with(_9d){ +if(_9d!==objj_msgSend(_CPToolbarView,"class")){ +return; +} +var _9f=objj_msgSend(CPBundle,"bundleForClass:",_9d); +_60=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_9f,"pathForResource:","_CPToolbarView/_CPToolbarViewExtraItemsImage.png"),CPSizeMake(10,15)); +_61=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_9f,"pathForResource:","_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png"),CGSizeMake(10,15)); +} +})]); +var _29=function(lhs,rhs){ +var _a0=objj_msgSend(lhs,"visibilityPriority"),_a1=objj_msgSend(rhs,"visibilityPriority"); +if(_a0==_a1){ +return CPOrderedSame; +} +if(_a0>_a1){ +return CPOrderedAscending; +} +return CPOrderedDescending; +}; +var _a2=5,_a3=2; +var _3=objj_allocateClassPair(CPControl,"_CPToolbarItemView"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_labelSize"),new objj_ivar("_toolbarItem"),new objj_ivar("_toolbar"),new objj_ivar("_imageView"),new objj_ivar("_view"),new objj_ivar("_labelField"),new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("minSize"),function(_a4,_a5){ +with(_a4){ +return _minSize; +} +}),new objj_method(sel_getUid("maxSize"),function(_a6,_a7){ +with(_a6){ +return _maxSize; +} +}),new objj_method(sel_getUid("initWithToolbarItem:toolbar:"),function(_a8,_a9,_aa,_ab){ +with(_a8){ +_a8=objj_msgSendSuper({receiver:_a8,super_class:objj_getClass("_CPToolbarItemView").super_class},"init"); +if(_a8){ +_toolbarItem=_aa; +_labelField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_labelField,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_labelField,"setTextColor:",objj_msgSend(_a8,"FIXME_labelColor")); +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_a8,"FIXME_labelShadowColor")); +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_labelField,"setAutoresizingMask:",CPViewWidthSizable|CPViewMinXMargin); +objj_msgSend(_a8,"addSubview:",_labelField); +objj_msgSend(_a8,"updateFromItem"); +_toolbar=_ab; +var _ac=["label","image","alternateImage","minSize","maxSize","target","action","enabled"],_ad=0,_ae=objj_msgSend(_ac,"count"); +for(;_ad<_ae;++_ad){ +objj_msgSend(_toolbarItem,"addObserver:forKeyPath:options:context:",_a8,_ac[_ad],0,NULL); +} +} +return _a8; +} +}),new objj_method(sel_getUid("FIXME_setIsHUD:"),function(_af,_b0,_b1){ +with(_af){ +_FIXME_isHUD=_b1; +objj_msgSend(_labelField,"setTextColor:",objj_msgSend(_af,"FIXME_labelColor")); +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_af,"FIXME_labelShadowColor")); +} +}),new objj_method(sel_getUid("updateFromItem"),function(_b2,_b3){ +with(_b2){ +var _b4=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_b4===CPToolbarSpaceItemIdentifier||_b4===CPToolbarFlexibleSpaceItemIdentifier||_b4===CPToolbarSeparatorItemIdentifier){ +objj_msgSend(_view,"removeFromSuperview"); +objj_msgSend(_imageView,"removeFromSuperview"); +_minSize=objj_msgSend(_toolbarItem,"minSize"); +_maxSize=objj_msgSend(_toolbarItem,"maxSize"); +if(_b4===CPToolbarSeparatorItemIdentifier){ +_view=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,2,32)); +sizes={}; +sizes["CPToolbarItemSeparator"]=[CGSizeMake(2,26),CGSizeMake(2,1),CGSizeMake(2,26)]; +objj_msgSend(_view,"setBackgroundColor:",_CPControlThreePartImagePattern(YES,sizes,"CPToolbarItem","Separator")); +objj_msgSend(_b2,"addSubview:",_view); +} +return; +} +objj_msgSend(_b2,"setTarget:",objj_msgSend(_toolbarItem,"target")); +objj_msgSend(_b2,"setAction:",objj_msgSend(_toolbarItem,"action")); +var _b5=objj_msgSend(_toolbarItem,"view")||nil; +if(_b5!==_view){ +if(!_b5){ +objj_msgSend(_view,"removeFromSuperview"); +}else{ +objj_msgSend(_b2,"addSubview:",_b5); +objj_msgSend(_imageView,"removeFromSuperview"); +} +_view=_b5; +} +if(!_view){ +if(!_imageView){ +_imageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",objj_msgSend(_b2,"bounds")); +objj_msgSend(_imageView,"setImageScaling:",CPScaleNone); +objj_msgSend(_b2,"addSubview:",_imageView); +} +objj_msgSend(_imageView,"setImage:",objj_msgSend(_toolbarItem,"image")); +} +var _b6=objj_msgSend(_toolbarItem,"minSize"),_b7=objj_msgSend(_toolbarItem,"maxSize"); +objj_msgSend(_labelField,"setStringValue:",objj_msgSend(_toolbarItem,"label")); +objj_msgSend(_labelField,"sizeToFit"); +objj_msgSend(_b2,"setEnabled:",objj_msgSend(_toolbarItem,"isEnabled")); +_labelSize=objj_msgSend(_labelField,"frame").size; +_minSize=CGSizeMake(MAX(_labelSize.width,_b6.width),_labelSize.height+_b6.height+_a3+_a2); +_maxSize=CGSizeMake(MAX(_labelSize.width,_b6.width),100000000); +objj_msgSend(_toolbar,"tile"); +} +}),new objj_method(sel_getUid("layoutSubviews"),function(_b8,_b9){ +with(_b8){ +var _ba=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_ba===CPToolbarSpaceItemIdentifier||_ba===CPToolbarFlexibleSpaceItemIdentifier){ +return; +} +var _bb=objj_msgSend(_b8,"bounds"),_bc=(_bb.size.width); +if(_ba===CPToolbarSeparatorItemIdentifier){ +return objj_msgSend(_view,"setFrame:",CGRectMake(ROUND((_bc-2)/2),0,2,(_bb.size.height))); +} +var _bd=_view||_imageView,_be=objj_msgSend(_toolbarItem,"maxSize"),_bf=(_bb.size.height)-_labelSize.height-_a3-_a2,_c0=MIN(_be.width,_bc),_c1=MIN(_be.height,_bf); +objj_msgSend(_bd,"setFrame:",CGRectMake(ROUND((_bc-_c0)/2),_a2+ROUND((_bf-_c1)/2),_c0,_c1)); +objj_msgSend(_labelField,"setFrameOrigin:",CGPointMake(ROUND((_bc-_labelSize.width)/2),_a2+_bf+_a3)); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_c2,_c3,_c4){ +with(_c2){ +if(objj_msgSend(_toolbarItem,"view")){ +return objj_msgSend(objj_msgSend(_c2,"nextResponder"),"mouseDown:",_c4); +} +var _c5=objj_msgSend(_toolbarItem,"itemIdentifier"); +if(_c5===CPToolbarSpaceItemIdentifier||_c5===CPToolbarFlexibleSpaceItemIdentifier||_c5===CPToolbarSeparatorItemIdentifier){ +return objj_msgSend(objj_msgSend(_c2,"nextResponder"),"mouseDown:",_c4); +} +objj_msgSendSuper({receiver:_c2,super_class:objj_getClass("_CPToolbarItemView").super_class},"mouseDown:",_c4); +} +}),new objj_method(sel_getUid("setEnabled:"),function(_c6,_c7,_c8){ +with(_c6){ +objj_msgSendSuper({receiver:_c6,super_class:objj_getClass("_CPToolbarItemView").super_class},"setEnabled:",_c8); +if(_c8){ +objj_msgSend(_imageView,"setAlphaValue:",1); +objj_msgSend(_labelField,"setAlphaValue:",1); +}else{ +objj_msgSend(_imageView,"setAlphaValue:",0.5); +objj_msgSend(_labelField,"setAlphaValue:",0.5); +} +objj_msgSend(_toolbar,"tile"); +} +}),new objj_method(sel_getUid("FIXME_labelColor"),function(_c9,_ca){ +with(_c9){ +if(_FIXME_isHUD){ +return objj_msgSend(CPColor,"whiteColor"); +} +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("FIXME_labelShadowColor"),function(_cb,_cc){ +with(_cb){ +if(_FIXME_isHUD){ +return objj_msgSend(_cb,"isHighlighted")?objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.5):objj_msgSend(CPColor,"clearColor"); +} +return objj_msgSend(_cb,"isHighlighted")?objj_msgSend(CPColor,"colorWithWhite:alpha:",0,0.3):objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.75); +} +}),new objj_method(sel_getUid("setHighlighted:"),function(_cd,_ce,_cf){ +with(_cd){ +objj_msgSendSuper({receiver:_cd,super_class:objj_getClass("_CPToolbarItemView").super_class},"setHighlighted:",_cf); +if(_cf){ +var _d0=objj_msgSend(_toolbarItem,"alternateImage"); +if(_d0){ +objj_msgSend(_imageView,"setImage:",_d0); +} +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMakeZero()); +}else{ +var _d1=objj_msgSend(_toolbarItem,"image"); +if(_d1){ +objj_msgSend(_imageView,"setImage:",_d1); +} +objj_msgSend(_labelField,"setTextShadowOffset:",CGSizeMake(0,1)); +} +objj_msgSend(_labelField,"setTextShadowColor:",objj_msgSend(_cd,"FIXME_labelShadowColor")); +} +}),new objj_method(sel_getUid("sendAction:to:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +objj_msgSend(CPApp,"sendAction:to:from:",_d4,_d5,_toolbarItem); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_d6,_d7,_d8,_d9,_da,_db){ +with(_d6){ +if(_d8==="enabled"){ +objj_msgSend(_d6,"setEnabled:",objj_msgSend(_d9,"isEnabled")); +}else{ +if(_d8==="target"){ +objj_msgSend(_d6,"setTarget:",objj_msgSend(_d9,"target")); +}else{ +if(_d8==="action"){ +objj_msgSend(_d6,"setAction:",objj_msgSend(_d9,"action")); +}else{ +objj_msgSend(_d6,"updateFromItem"); +} +} +} +} +})]); +p;15;CPToolbarItem.jt;13726;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;16;AppKit/CPImage.jI;15;AppKit/CPView.ji;29;_CPToolbarFlexibleSpaceItem.ji;26;_CPToolbarShowColorsItem.ji;25;_CPToolbarSeparatorItem.ji;21;_CPToolbarSpaceItem.jt;13492; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("AppKit/CPImage.j",NO); +objj_executeFile("AppKit/CPView.j",NO); +CPToolbarItemVisibilityPriorityStandard=0; +CPToolbarItemVisibilityPriorityLow=-1000; +CPToolbarItemVisibilityPriorityHigh=1000; +CPToolbarItemVisibilityPriorityUser=2000; +CPToolbarSeparatorItemIdentifier="CPToolbarSeparatorItem"; +CPToolbarSpaceItemIdentifier="CPToolbarSpaceItem"; +CPToolbarFlexibleSpaceItemIdentifier="CPToolbarFlexibleSpaceItem"; +CPToolbarShowColorsItemIdentifier="CPToolbarShowColorsItem"; +CPToolbarShowFontsItemIdentifier="CPToolbarShowFontsItem"; +CPToolbarCustomizeToolbarItemIdentifier="CPToolbarCustomizeToolbarItem"; +CPToolbarPrintItemIdentifier="CPToolbarPrintItem"; +var _1=objj_allocateClassPair(CPObject,"CPToolbarItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_itemIdentifier"),new objj_ivar("_toolbar"),new objj_ivar("_label"),new objj_ivar("_paletteLabel"),new objj_ivar("_toolTip"),new objj_ivar("_tag"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_isEnabled"),new objj_ivar("_image"),new objj_ivar("_alternateImage"),new objj_ivar("_view"),new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_visibilityPriority"),new objj_ivar("_autovalidates")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithItemIdentifier:",""); +} +}),new objj_method(sel_getUid("initWithItemIdentifier:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPToolbarItem").super_class},"init"); +if(_5){ +_itemIdentifier=_7; +_tag=0; +_isEnabled=YES; +_minSize=CGSizeMakeZero(); +_maxSize=CGSizeMakeZero(); +_visibilityPriority=CPToolbarItemVisibilityPriorityStandard; +_autovalidates=YES; +} +return _5; +} +}),new objj_method(sel_getUid("itemIdentifier"),function(_8,_9){ +with(_8){ +return _itemIdentifier; +} +}),new objj_method(sel_getUid("toolbar"),function(_a,_b){ +with(_a){ +return _toolbar; +} +}),new objj_method(sel_getUid("_setToolbar:"),function(_c,_d,_e){ +with(_c){ +_toolbar=_e; +} +}),new objj_method(sel_getUid("label"),function(_f,_10){ +with(_f){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_11,_12,_13){ +with(_11){ +_label=_13; +} +}),new objj_method(sel_getUid("paletteLabel"),function(_14,_15){ +with(_14){ +return _paletteLabel; +} +}),new objj_method(sel_getUid("setPaletteLabel:"),function(_16,_17,_18){ +with(_16){ +_paletteLabel=_18; +} +}),new objj_method(sel_getUid("toolTip"),function(_19,_1a){ +with(_19){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("toolTip"))){ +return objj_msgSend(_view,"toolTip"); +} +return _toolTip; +} +}),new objj_method(sel_getUid("setToolTip:"),function(_1b,_1c,_1d){ +with(_1b){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setToolTip:"))){ +objj_msgSend(_view,"setToolTip:",_1d); +} +_toolTip=_1d; +} +}),new objj_method(sel_getUid("tag"),function(_1e,_1f){ +with(_1e){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("tag"))){ +return objj_msgSend(_view,"tag"); +} +return _tag; +} +}),new objj_method(sel_getUid("setTag:"),function(_20,_21,_22){ +with(_20){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTag:"))){ +objj_msgSend(_view,"setTag:",_22); +} +_tag=_22; +} +}),new objj_method(sel_getUid("target"),function(_23,_24){ +with(_23){ +if(_view){ +return objj_msgSend(_view,"respondsToSelector:",sel_getUid("target"))?objj_msgSend(_view,"target"):nil; +} +return _target; +} +}),new objj_method(sel_getUid("setTarget:"),function(_25,_26,_27){ +with(_25){ +if(!_view){ +_target=_27; +}else{ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTarget:"))){ +objj_msgSend(_view,"setTarget:",_27); +} +} +} +}),new objj_method(sel_getUid("action"),function(_28,_29){ +with(_28){ +if(_view){ +return objj_msgSend(_view,"respondsToSelector:",sel_getUid("action"))?objj_msgSend(_view,"action"):nil; +} +return _action; +} +}),new objj_method(sel_getUid("setAction:"),function(_2a,_2b,_2c){ +with(_2a){ +if(!_view){ +_action=_2c; +}else{ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_view,"setAction:",_2c); +} +} +} +}),new objj_method(sel_getUid("isEnabled"),function(_2d,_2e){ +with(_2d){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("isEnabled"))){ +return objj_msgSend(_view,"isEnabled"); +} +return _isEnabled; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_2f,_30,_31){ +with(_2f){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setEnabled:"))){ +objj_msgSend(_view,"setEnabled:",_31); +} +_isEnabled=_31; +} +}),new objj_method(sel_getUid("image"),function(_32,_33){ +with(_32){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("image"))){ +return objj_msgSend(_view,"image"); +} +return _image; +} +}),new objj_method(sel_getUid("setImage:"),function(_34,_35,_36){ +with(_34){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setImage:"))){ +objj_msgSend(_view,"setImage:",_36); +} +_image=_36; +if(!_image){ +return; +} +if(_minSize.width===0&&_minSize.height===0&&_maxSize.width===0&&_maxSize.height===0){ +var _37=objj_msgSend(_image,"size"); +if(_37.width>0||_37.height>0){ +objj_msgSend(_34,"setMinSize:",_37); +objj_msgSend(_34,"setMaxSize:",_37); +} +} +} +}),new objj_method(sel_getUid("setAlternateImage:"),function(_38,_39,_3a){ +with(_38){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setAlternateImage:"))){ +objj_msgSend(_view,"setAlternateImage:",_3a); +} +_alternateImage=_3a; +} +}),new objj_method(sel_getUid("alternateImage"),function(_3b,_3c){ +with(_3b){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("alternateIamge"))){ +return objj_msgSend(_view,"alternateImage"); +} +return _alternateImage; +} +}),new objj_method(sel_getUid("view"),function(_3d,_3e){ +with(_3d){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_3f,_40,_41){ +with(_3f){ +if(_view==_41){ +return; +} +_view=_41; +if(_view){ +if(_tag!==0&&objj_msgSend(_view,"respondsToSelector:",sel_getUid("setTag:"))){ +objj_msgSend(_view,"setTag:",_tag); +} +_target=nil; +_action=nil; +} +} +}),new objj_method(sel_getUid("minSize"),function(_42,_43){ +with(_42){ +return _minSize; +} +}),new objj_method(sel_getUid("setMinSize:"),function(_44,_45,_46){ +with(_44){ +if(!_46.height||!_46.width){ +return; +} +_minSize=CGSizeMakeCopy(_46); +_maxSize=CGSizeMake(MAX(_minSize.width,_maxSize.width),MAX(_minSize.height,_maxSize.height)); +} +}),new objj_method(sel_getUid("maxSize"),function(_47,_48){ +with(_47){ +return _maxSize; +} +}),new objj_method(sel_getUid("setMaxSize:"),function(_49,_4a,_4b){ +with(_49){ +if(!_4b.height||!_4b.width){ +return; +} +_maxSize=CGSizeMakeCopy(_4b); +_minSize=CGSizeMake(MIN(_minSize.width,_maxSize.width),MIN(_minSize.height,_maxSize.height)); +} +}),new objj_method(sel_getUid("visibilityPriority"),function(_4c,_4d){ +with(_4c){ +return _visibilityPriority; +} +}),new objj_method(sel_getUid("setVisibilityPriority:"),function(_4e,_4f,_50){ +with(_4e){ +_visibilityPriority=_50; +} +}),new objj_method(sel_getUid("validate"),function(_51,_52){ +with(_51){ +var _53=objj_msgSend(_51,"action"),_54=objj_msgSend(_51,"target"); +if(_view){ +if(objj_msgSend(_54,"respondsToSelector:",sel_getUid("validateToolbarItem:"))){ +objj_msgSend(_51,"setEnabled:",objj_msgSend(_54,"validateToolbarItem:",_51)); +} +return; +} +if(!_53){ +return objj_msgSend(_51,"setEnabled:",NO); +} +if(_54&&!objj_msgSend(_54,"respondsToSelector:",_53)){ +return objj_msgSend(_51,"setEnabled:",NO); +} +_54=objj_msgSend(CPApp,"targetForAction:to:from:",_53,_54,_51); +if(!_54){ +return objj_msgSend(_51,"setEnabled:",NO); +} +if(objj_msgSend(_54,"respondsToSelector:",sel_getUid("validateToolbarItem:"))){ +objj_msgSend(_51,"setEnabled:",objj_msgSend(_54,"validateToolbarItem:",_51)); +}else{ +objj_msgSend(_51,"setEnabled:",YES); +} +} +}),new objj_method(sel_getUid("autovalidates"),function(_55,_56){ +with(_55){ +return _autovalidates; +} +}),new objj_method(sel_getUid("setAutovalidates:"),function(_57,_58,_59){ +with(_57){ +_autovalidates=!!_59; +} +})]); +var _5a="CPToolbarItemItemIdentifierKey",_5b="CPToolbarItemLabelKey",_5c="CPToolbarItemPaletteLabelKey",_5d="CPToolbarItemToolTipKey",_5e="CPToolbarItemTagKey",_5f="CPToolbarItemTargetKey",_60="CPToolbarItemActionKey",_61="CPToolbarItemEnabledKey",_62="CPToolbarItemImageKey",_63="CPToolbarItemAlternateImageKey",_64="CPToolbarItemViewKey",_65="CPToolbarItemMinSizeKey",_66="CPToolbarItemMaxSizeKey",_67="CPToolbarItemVisibilityPriorityKey",_68="CPToolbarItemAutovalidatesKey"; +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_69,_6a,_6b){ +with(_69){ +_69=objj_msgSendSuper({receiver:_69,super_class:objj_getClass("CPToolbarItem").super_class},"init"); +if(_69){ +_itemIdentifier=objj_msgSend(_6b,"decodeObjectForKey:",_5a); +_minSize=objj_msgSend(_6b,"decodeSizeForKey:",_65); +_maxSize=objj_msgSend(_6b,"decodeSizeForKey:",_66); +objj_msgSend(_69,"setLabel:",objj_msgSend(_6b,"decodeObjectForKey:",_5b)); +objj_msgSend(_69,"setPaletteLabel:",objj_msgSend(_6b,"decodeObjectForKey:",_5c)); +objj_msgSend(_69,"setToolTip:",objj_msgSend(_6b,"decodeObjectForKey:",_5d)); +objj_msgSend(_69,"setTag:",objj_msgSend(_6b,"decodeObjectForKey:",_5e)); +objj_msgSend(_69,"setTarget:",objj_msgSend(_6b,"decodeObjectForKey:",_5f)); +objj_msgSend(_69,"setAction:",CPSelectorFromString(objj_msgSend(_6b,"decodeObjectForKey:",_60))); +objj_msgSend(_69,"setEnabled:",objj_msgSend(_6b,"decodeBoolForKey:",_61)); +objj_msgSend(_69,"setImage:",objj_msgSend(_6b,"decodeObjectForKey:",_62)); +objj_msgSend(_69,"setAlternateImage:",objj_msgSend(_6b,"decodeObjectForKey:",_63)); +objj_msgSend(_69,"setView:",objj_msgSend(_6b,"decodeObjectForKey:",_64)); +objj_msgSend(_69,"setVisibilityPriority:",objj_msgSend(_6b,"decodeIntForKey:",_67)); +objj_msgSend(_69,"setAutovalidates:",objj_msgSend(_6b,"decodeBoolForKey:",_68)); +} +return _69; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_6c,_6d,_6e){ +with(_6c){ +objj_msgSend(_6e,"encodeObject:forKey:",_itemIdentifier,_5a); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"label"),_5b); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"paletteLabel"),_5c); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"toolTip"),_5d); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"tag"),_5e); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"target"),_5f); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"action"),_60); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"isEnabled"),_61); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"image"),_62); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"alternateImage"),_63); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"view"),_64); +objj_msgSend(_6e,"encodeSize:forKey:",objj_msgSend(_6c,"minSize"),_65); +objj_msgSend(_6e,"encodeSize:forKey:",objj_msgSend(_6c,"maxSize"),_66); +objj_msgSend(_6e,"encodeObject:forKey:",objj_msgSend(_6c,"visibilityPriority"),_67); +objj_msgSend(_6e,"encodeBool:forKey:",objj_msgSend(_6c,"autovalidates"),_68); +} +})]); +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_6f,_70){ +with(_6f){ +var _71=objj_msgSend(objj_msgSend(objj_msgSend(_6f,"class"),"alloc"),"initWithItemIdentifier:",_itemIdentifier); +if(_view){ +objj_msgSend(_71,"setView:",objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_view))); +} +objj_msgSend(_71,"_setToolbar:",_toolbar); +objj_msgSend(_71,"setLabel:",_label); +objj_msgSend(_71,"setPaletteLabel:",_paletteLabel); +objj_msgSend(_71,"setToolTip:",objj_msgSend(_6f,"toolTip")); +objj_msgSend(_71,"setTag:",objj_msgSend(_6f,"tag")); +objj_msgSend(_71,"setTarget:",objj_msgSend(_6f,"target")); +objj_msgSend(_71,"setAction:",objj_msgSend(_6f,"action")); +objj_msgSend(_71,"setEnabled:",objj_msgSend(_6f,"isEnabled")); +objj_msgSend(_71,"setImage:",objj_msgSend(_6f,"image")); +objj_msgSend(_71,"setAlternateImage:",objj_msgSend(_6f,"alternateImage")); +objj_msgSend(_71,"setMinSize:",_minSize); +objj_msgSend(_71,"setMaxSize:",_maxSize); +objj_msgSend(_71,"setVisibilityPriority:",objj_msgSend(_6f,"visibilityPriority")); +objj_msgSend(_71,"setAutovalidates:",objj_msgSend(_6f,"autovalidates")); +return _71; +} +})]); +var _1=objj_getClass("CPToolbarItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +} +var _2=_1.isa; +class_addMethods(_2,[new objj_method(sel_getUid("_standardItemWithItemIdentifier:"),function(_72,_73,_74){ +with(_72){ +switch(_74){ +case CPToolbarSeparatorItemIdentifier: +return objj_msgSend(_CPToolbarSeparatorItem,"new"); +case CPToolbarSpaceItemIdentifier: +return objj_msgSend(_CPToolbarSpaceItem,"new"); +case CPToolbarFlexibleSpaceItemIdentifier: +return objj_msgSend(_CPToolbarFlexibleSpaceItem,"new"); +case CPToolbarShowColorsItemIdentifier: +return objj_msgSend(_CPToolbarShowColorsItem,"new"); +case CPToolbarShowFontsItemIdentifier: +return nil; +case CPToolbarCustomizeToolbarItemIdentifier: +return nil; +case CPToolbarPrintItemIdentifier: +return nil; +} +return nil; +} +})]); +objj_executeFile("_CPToolbarFlexibleSpaceItem.j",YES); +objj_executeFile("_CPToolbarShowColorsItem.j",YES); +objj_executeFile("_CPToolbarSeparatorItem.j",YES); +objj_executeFile("_CPToolbarSpaceItem.j",YES); +p;12;CPTreeNode.jt;3517;@STATIC;1.0;I;21;Foundation/CPObject.jt;3472; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPTreeNode"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_representedObject"),new objj_ivar("_parentNode"),new objj_ivar("_childNodes")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("representedObject"),function(_3,_4){ +with(_3){ +return _representedObject; +} +}),new objj_method(sel_getUid("parentNode"),function(_5,_6){ +with(_5){ +return _parentNode; +} +}),new objj_method(sel_getUid("initWithRepresentedObject:"),function(_7,_8,_9){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPTreeNode").super_class},"init"); +if(_7){ +_representedObject=_9; +_childNodes=[]; +} +return _7; +} +}),new objj_method(sel_getUid("isLeaf"),function(_a,_b){ +with(_a){ +return objj_msgSend(_childNodes,"count")<=0; +} +}),new objj_method(sel_getUid("childNodes"),function(_c,_d){ +with(_c){ +return objj_msgSend(_childNodes,"copy"); +} +}),new objj_method(sel_getUid("mutableChildNodes"),function(_e,_f){ +with(_e){ +return objj_msgSend(_e,"mutableArrayValueForKey:","childNodes"); +} +}),new objj_method(sel_getUid("insertObject:inChildNodesAtIndex:"),function(_10,_11,_12,_13){ +with(_10){ +objj_msgSend(objj_msgSend(_12._parentNode,"mutableChildNodes"),"removeObjectIdenticalTo:",_12); +_12._parentNode=_10; +objj_msgSend(_childNodes,"insertObject:atIndex:",_12,_13); +} +}),new objj_method(sel_getUid("removeObjectFromChildNodesAtIndex:"),function(_14,_15,_16){ +with(_14){ +objj_msgSend(_childNodes,"objectAtIndex:",_16)._parentNode=nil; +objj_msgSend(_childNodes,"removeObjectAtIndex:",_16); +} +}),new objj_method(sel_getUid("replaceObjectFromChildNodesAtIndex:withObject:"),function(_17,_18,_19,_1a){ +with(_17){ +var _1b=objj_msgSend(_childNodes,"objectAtIndex:",_19); +_1b._parentNode=nil; +_1a._parentNode=_17; +objj_msgSend(_childNodes,"replaceObjectAtIndex:withObject:",_19,_1a); +} +}),new objj_method(sel_getUid("objectInChildNodesAtIndex:"),function(_1c,_1d,_1e){ +with(_1c){ +return _childNodes[_1e]; +} +}),new objj_method(sel_getUid("sortWithSortDescriptors:recursively:"),function(_1f,_20,_21,_22){ +with(_1f){ +objj_msgSend(_childNodes,"sortUsingDescriptors:",_21); +if(!_22){ +return; +} +var _23=objj_msgSend(_childNodes,"count"); +while(_23--){ +objj_msgSend(_childNodes[_23],"sortWithSortDescriptors:recursively:",_21,YES); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("treeNodeWithRepresentedObject:"),function(_24,_25,_26){ +with(_24){ +return objj_msgSend(objj_msgSend(_24,"alloc"),"initWithRepresentedObject:",_26); +} +})]); +var _27="CPTreeNodeRepresentedObjectKey",_28="CPTreeNodeParentNodeKey",_29="CPTreeNodeChildNodesKey"; +var _1=objj_getClass("CPTreeNode"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPTreeNode\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_2a,_2b,_2c){ +with(_2a){ +_2a=objj_msgSendSuper({receiver:_2a,super_class:objj_getClass("CPTreeNode").super_class},"init"); +if(_2a){ +_representedObject=objj_msgSend(_2c,"decodeObjectForKey:",_27); +_parentNode=objj_msgSend(_2c,"decodeObjectForKey:",_28); +_childNodes=objj_msgSend(_2c,"decodeObjectForKey:",_29); +} +return _2a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2d,_2e,_2f){ +with(_2d){ +objj_msgSend(_2f,"encodeObject:forKey:",_representedObject,_27); +objj_msgSend(_2f,"encodeConditionalObject:forKey:",_parentNode,_28); +objj_msgSend(_2f,"encodeObject:forKey:",_childNodes,_29); +} +})]); +p;8;CPView.jt;47699;@STATIC;1.0;I;20;Foundation/CPArray.jI;26;Foundation/CPObjJRuntime.ji;19;CGAffineTransform.ji;12;CGGeometry.ji;9;CPColor.ji;12;CPGeometry.ji;19;CPGraphicsContext.ji;13;CPResponder.ji;9;CPTheme.ji;18;_CPDisplayServer.jt;47474; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObjJRuntime.j",NO); +objj_executeFile("CGAffineTransform.j",YES); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPColor.j",YES); +objj_executeFile("CPGeometry.j",YES); +objj_executeFile("CPGraphicsContext.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPTheme.j",YES); +objj_executeFile("_CPDisplayServer.j",YES); +CPViewNotSizable=0; +CPViewMinXMargin=1; +CPViewWidthSizable=2; +CPViewMaxXMargin=4; +CPViewMinYMargin=8; +CPViewHeightSizable=16; +CPViewMaxYMargin=32; +CPViewBoundsDidChangeNotification="CPViewBoundsDidChangeNotification"; +CPViewFrameDidChangeNotification="CPViewFrameDidChangeNotification"; +var _1=nil,_2=nil; +var _3={},_4=1<<0,_5=1<<1; +var _6=objj_allocateClassPair(CPResponder,"CPView"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_window"),new objj_ivar("_superview"),new objj_ivar("_subviews"),new objj_ivar("_graphicsContext"),new objj_ivar("_tag"),new objj_ivar("_frame"),new objj_ivar("_bounds"),new objj_ivar("_boundsTransform"),new objj_ivar("_inverseBoundsTransform"),new objj_ivar("_registeredDraggedTypes"),new objj_ivar("_registeredDraggedTypesArray"),new objj_ivar("_isHidden"),new objj_ivar("_hitTests"),new objj_ivar("_clipsToBounds"),new objj_ivar("_postsFrameChangedNotifications"),new objj_ivar("_postsBoundsChangedNotifications"),new objj_ivar("_inhibitFrameAndBoundsChangedNotifications"),new objj_ivar("_dirtyRect"),new objj_ivar("_opacity"),new objj_ivar("_backgroundColor"),new objj_ivar("_autoresizesSubviews"),new objj_ivar("_autoresizingMask"),new objj_ivar("_layer"),new objj_ivar("_wantsLayer"),new objj_ivar("_isInFullScreenMode"),new objj_ivar("_fullScreenModeState"),new objj_ivar("_needsLayout"),new objj_ivar("_ephemeralSubviews"),new objj_ivar("_theme"),new objj_ivar("_themeAttributes"),new objj_ivar("_themeState"),new objj_ivar("_ephemeralSubviewsForNames"),new objj_ivar("_ephereralSubviews"),new objj_ivar("_nextKeyView"),new objj_ivar("_previousKeyView"),new objj_ivar("_viewClassFlags")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("setupViewFlags"),function(_8,_9){ +with(_8){ +var _a=objj_msgSend(_8,"class"),_b=objj_msgSend(_a,"UID"); +if(_3[_b]===undefined){ +var _c=0; +if(objj_msgSend(_a,"instanceMethodForSelector:",sel_getUid("drawRect:"))!==objj_msgSend(CPView,"instanceMethodForSelector:",sel_getUid("drawRect:"))){ +_c|=_4; +} +if(objj_msgSend(_a,"instanceMethodForSelector:",sel_getUid("layoutSubviews"))!==objj_msgSend(CPView,"instanceMethodForSelector:",sel_getUid("layoutSubviews"))){ +_c|=_5; +} +_3[_b]=_c; +} +_viewClassFlags=_3[_b]; +} +}),new objj_method(sel_getUid("init"),function(_d,_e){ +with(_d){ +return objj_msgSend(_d,"initWithFrame:",CGRectMakeZero()); +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_f,_10,_11){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPView").super_class},"init"); +if(_f){ +var _12=(_11.size.width),_13=(_11.size.height); +_subviews=[]; +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_tag=-1; +_frame={origin:{x:_11.origin.x,y:_11.origin.y},size:{width:_11.size.width,height:_11.size.height}}; +_bounds={origin:{x:0,y:0},size:{width:_12,height:_13}}; +_autoresizingMask=CPViewNotSizable; +_autoresizesSubviews=YES; +_clipsToBounds=YES; +_opacity=1; +_isHidden=NO; +_hitTests=YES; +_theme=objj_msgSend(CPTheme,"defaultTheme"); +_themeState=CPThemeStateNormal; +objj_msgSend(_f,"setupViewFlags"); +objj_msgSend(_f,"_loadThemeAttributes"); +} +return _f; +} +}),new objj_method(sel_getUid("superview"),function(_14,_15){ +with(_14){ +return _superview; +} +}),new objj_method(sel_getUid("subviews"),function(_16,_17){ +with(_16){ +return objj_msgSend(_subviews,"copy"); +} +}),new objj_method(sel_getUid("window"),function(_18,_19){ +with(_18){ +return _window; +} +}),new objj_method(sel_getUid("addSubview:"),function(_1a,_1b,_1c){ +with(_1a){ +objj_msgSend(_1a,"_insertSubview:atIndex:",_1c,CPNotFound); +} +}),new objj_method(sel_getUid("addSubview:positioned:relativeTo:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +var _22=_21?objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_21):CPNotFound; +if(_22===CPNotFound){ +_22=(_20===CPWindowAbove)?objj_msgSend(_subviews,"count"):0; +}else{ +if(_20===CPWindowAbove){ +++_22; +} +} +objj_msgSend(_1d,"_insertSubview:atIndex:",_1f,_22); +} +}),new objj_method(sel_getUid("_insertSubview:atIndex:"),function(_23,_24,_25,_26){ +with(_23){ +var _27=_subviews.length; +objj_msgSend(objj_msgSend(_23,"window"),"_dirtyKeyViewLoop"); +if(_25._superview==_23){ +var _28=objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_25); +if(_28===_26||_28===_27-1&&_26===_27){ +return; +} +objj_msgSend(_subviews,"removeObjectAtIndex:",_28); +if(_26>_28){ +--_26; +} +--_27; +}else{ +objj_msgSend(_25,"removeFromSuperview"); +objj_msgSend(_25,"_setWindow:",_window); +objj_msgSend(_25,"viewWillMoveToSuperview:",_23); +_25._superview=_23; +} +if(_26===CPNotFound||_26>=_27){ +_subviews.push(_25); +}else{ +_subviews.splice(_26,0,_25); +} +objj_msgSend(_25,"setNextResponder:",_23); +objj_msgSend(_25,"viewDidMoveToSuperview"); +objj_msgSend(_23,"didAddSubview:",_25); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_29,_2a,_2b){ +with(_29){ +} +}),new objj_method(sel_getUid("removeFromSuperview"),function(_2c,_2d){ +with(_2c){ +if(!_superview){ +return; +} +objj_msgSend(objj_msgSend(_2c,"window"),"_dirtyKeyViewLoop"); +objj_msgSend(_superview,"willRemoveSubview:",_2c); +objj_msgSend(_superview._subviews,"removeObject:",_2c); +_superview=nil; +objj_msgSend(_2c,"_setWindow:",nil); +} +}),new objj_method(sel_getUid("replaceSubview:with:"),function(_2e,_2f,_30,_31){ +with(_2e){ +if(_30._superview!=_2e){ +return; +} +var _32=objj_msgSend(_subviews,"indexOfObjectIdenticalTo:",_30); +objj_msgSend(_30,"removeFromSuperview"); +objj_msgSend(_2e,"_insertSubview:atIndex:",_31,_32); +} +}),new objj_method(sel_getUid("setSubviews:"),function(_33,_34,_35){ +with(_33){ +if(!_35){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"newSubviews cannot be nil in -[CPView setSubviews:]"); +} +if(objj_msgSend(_subviews,"isEqual:",_35)){ +return; +} +if(objj_msgSend(_subviews,"count")===0){ +var _36=0,_37=objj_msgSend(_35,"count"); +for(;_36<_37;++_36){ +objj_msgSend(_33,"addSubview:",_35[_36]); +} +return; +} +if(objj_msgSend(_35,"count")===0){ +var _37=objj_msgSend(_subviews,"count"); +while(_37--){ +objj_msgSend(_subviews[_37],"removeFromSuperview"); +} +return; +} +var _38=objj_msgSend(CPMutableSet,"setWithArray:",_subviews); +objj_msgSend(_38,"removeObjectsInArray:",_35); +objj_msgSend(_38,"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +var _39=objj_msgSend(CPMutableSet,"setWithArray:",_35); +objj_msgSend(_39,"removeObjectsInArray:",_subviews); +var _3a=nil,_3b=objj_msgSend(_39,"objectEnumerator"); +while(_3a=objj_msgSend(_3b,"nextObject")){ +objj_msgSend(_33,"addSubview:",_3a); +} +if(objj_msgSend(_subviews,"isEqual:",_35)){ +return; +} +_subviews=objj_msgSend(_35,"copy"); +} +}),new objj_method(sel_getUid("_setWindow:"),function(_3c,_3d,_3e){ +with(_3c){ +if(_window===_3e){ +return; +} +objj_msgSend(objj_msgSend(_3c,"window"),"_dirtyKeyViewLoop"); +if(objj_msgSend(_window,"firstResponder")===_3c){ +objj_msgSend(_window,"makeFirstResponder:",nil); +} +objj_msgSend(_3c,"viewWillMoveToWindow:",_3e); +if(_registeredDraggedTypes){ +objj_msgSend(_window,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_3e,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +} +_window=_3e; +var _3f=objj_msgSend(_subviews,"count"); +while(_3f--){ +objj_msgSend(_subviews[_3f],"_setWindow:",_3e); +} +objj_msgSend(_3c,"viewDidMoveToWindow"); +objj_msgSend(objj_msgSend(_3c,"window"),"_dirtyKeyViewLoop"); +} +}),new objj_method(sel_getUid("isDescendantOf:"),function(_40,_41,_42){ +with(_40){ +var _43=_40; +do{ +if(_43==_42){ +return YES; +} +}while(_43=objj_msgSend(_43,"superview")); +return NO; +} +}),new objj_method(sel_getUid("viewDidMoveToSuperview"),function(_44,_45){ +with(_44){ +objj_msgSend(_44,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_46,_47){ +with(_46){ +} +}),new objj_method(sel_getUid("viewWillMoveToSuperview:"),function(_48,_49,_4a){ +with(_48){ +} +}),new objj_method(sel_getUid("viewWillMoveToWindow:"),function(_4b,_4c,_4d){ +with(_4b){ +} +}),new objj_method(sel_getUid("willRemoveSubview:"),function(_4e,_4f,_50){ +with(_4e){ +} +}),new objj_method(sel_getUid("enclosingMenuItem"),function(_51,_52){ +with(_51){ +var _53=_51; +while(_53&&!objj_msgSend(_53,"isKindOfClass:",objj_msgSend(_CPMenuItemView,"class"))){ +_53=objj_msgSend(_53,"superview"); +} +if(_53){ +return _53._menuItem; +} +return nil; +} +}),new objj_method(sel_getUid("setTag:"),function(_54,_55,_56){ +with(_54){ +_tag=_56; +} +}),new objj_method(sel_getUid("tag"),function(_57,_58){ +with(_57){ +return _tag; +} +}),new objj_method(sel_getUid("viewWithTag:"),function(_59,_5a,_5b){ +with(_59){ +if(objj_msgSend(_59,"tag")==_5b){ +return _59; +} +var _5c=0,_5d=_subviews.length; +for(;_5c<_5d;++_5c){ +var _5e=objj_msgSend(_subviews[_5c],"viewWithTag:",_5b); +if(_5e){ +return _5e; +} +} +return nil; +} +}),new objj_method(sel_getUid("isFlipped"),function(_5f,_60){ +with(_5f){ +return YES; +} +}),new objj_method(sel_getUid("setFrame:"),function(_61,_62,_63){ +with(_61){ +if(((_frame.origin.x==_63.origin.x&&_frame.origin.y==_63.origin.y)&&(_frame.size.width==_63.size.width&&_frame.size.height==_63.size.height))){ +return; +} +_inhibitFrameAndBoundsChangedNotifications=YES; +objj_msgSend(_61,"setFrameOrigin:",_63.origin); +objj_msgSend(_61,"setFrameSize:",_63.size); +_inhibitFrameAndBoundsChangedNotifications=NO; +if(_postsFrameChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_61); +} +} +}),new objj_method(sel_getUid("frame"),function(_64,_65){ +with(_64){ +return {origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}}; +} +}),new objj_method(sel_getUid("frameOrigin"),function(_66,_67){ +with(_66){ +return {x:_frame.origin.x,y:_frame.origin.y}; +} +}),new objj_method(sel_getUid("frameSize"),function(_68,_69){ +with(_68){ +return {width:_frame.size.width,height:_frame.size.height}; +} +}),new objj_method(sel_getUid("setCenter:"),function(_6a,_6b,_6c){ +with(_6a){ +objj_msgSend(_6a,"setFrameOrigin:",CGPointMake(_6c.x-_frame.size.width/2,_6c.y-_frame.size.height/2)); +} +}),new objj_method(sel_getUid("center"),function(_6d,_6e){ +with(_6d){ +return CGPointMake(_frame.size.width/2+_frame.origin.x,_frame.size.height/2+_frame.origin.y); +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_6f,_70,_71){ +with(_6f){ +var _72=_frame.origin; +if(!_71||(_72.x==_71.x&&_72.y==_71.y)){ +return; +} +_72.x=_71.x; +_72.y=_71.y; +if(_postsFrameChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_6f); +} +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_73,_74,_75){ +with(_73){ +var _76=_frame.size; +if(!_75||(_76.width==_75.width&&_76.height==_75.height)){ +return; +} +var _77={width:_76.width,height:_76.height}; +_76.width=_75.width; +_76.height=_75.height; +if(YES){ +_bounds.size.width=_75.width; +_bounds.size.height=_75.height; +} +if(_layer){ +objj_msgSend(_layer,"_owningViewBoundsChanged"); +} +if(_autoresizesSubviews){ +objj_msgSend(_73,"resizeSubviewsWithOldSize:",_77); +} +objj_msgSend(_73,"setNeedsLayout"); +objj_msgSend(_73,"setNeedsDisplay:",YES); +if(_postsFrameChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,_73); +} +} +}),new objj_method(sel_getUid("setBounds:"),function(_78,_79,_7a){ +with(_78){ +if(((_bounds.origin.x==_7a.origin.x&&_bounds.origin.y==_7a.origin.y)&&(_bounds.size.width==_7a.size.width&&_bounds.size.height==_7a.size.height))){ +return; +} +_inhibitFrameAndBoundsChangedNotifications=YES; +objj_msgSend(_78,"setBoundsOrigin:",_7a.origin); +objj_msgSend(_78,"setBoundsSize:",_7a.size); +_inhibitFrameAndBoundsChangedNotifications=NO; +if(_postsBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_78); +} +} +}),new objj_method(sel_getUid("bounds"),function(_7b,_7c){ +with(_7b){ +return {origin:{x:_bounds.origin.x,y:_bounds.origin.y},size:{width:_bounds.size.width,height:_bounds.size.height}}; +} +}),new objj_method(sel_getUid("boundsOrigin"),function(_7d,_7e){ +with(_7d){ +return {x:_bounds.origin.x,y:_bounds.origin.y}; +} +}),new objj_method(sel_getUid("boundsSize"),function(_7f,_80){ +with(_7f){ +return {width:_bounds.size.width,height:_bounds.size.height}; +} +}),new objj_method(sel_getUid("setBoundsOrigin:"),function(_81,_82,_83){ +with(_81){ +var _84=_bounds.origin; +if((_84.x==_83.x&&_84.y==_83.y)){ +return; +} +_84.x=_83.x; +_84.y=_83.y; +if(_84.x!=0||_84.y!=0){ +_boundsTransform={a:1,b:0,c:0,d:1,tx:-_84.x,ty:-_84.y}; +_inverseBoundsTransform=CGAffineTransformInvert(_boundsTransform); +}else{ +_boundsTransform=nil; +_inverseBoundsTransform=nil; +} +if(_postsBoundsChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_81); +} +} +}),new objj_method(sel_getUid("setBoundsSize:"),function(_85,_86,_87){ +with(_85){ +var _88=_bounds.size; +if((_88.width==_87.width&&_88.height==_87.height)){ +return; +} +var _89=_frame.size; +if(!(_88.width==_89.width&&_88.height==_89.height)){ +var _8a=_bounds.origin; +_8a.x/=_88.width/_89.width; +_8a.y/=_88.height/_89.height; +} +_88.width=_87.width; +_88.height=_87.height; +if(!(_88.width==_89.width&&_88.height==_89.height)){ +var _8a=_bounds.origin; +_8a.x*=_88.width/_89.width; +_8a.y*=_88.height/_89.height; +} +if(_postsBoundsChangedNotifications&&!_inhibitFrameAndBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,_85); +} +} +}),new objj_method(sel_getUid("resizeWithOldSuperviewSize:"),function(_8b,_8c,_8d){ +with(_8b){ +var _8e=objj_msgSend(_8b,"autoresizingMask"); +if(_8e==CPViewNotSizable){ +return; +} +var _8f=_superview._frame,_90={origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}},dX=((_8f.size.width)-_8d.width)/(((_8e&CPViewMinXMargin)?1:0)+(_8e&CPViewWidthSizable?1:0)+(_8e&CPViewMaxXMargin?1:0)),dY=((_8f.size.height)-_8d.height)/((_8e&CPViewMinYMargin?1:0)+(_8e&CPViewHeightSizable?1:0)+(_8e&CPViewMaxYMargin?1:0)); +if(_8e&CPViewMinXMargin){ +_90.origin.x+=dX; +} +if(_8e&CPViewWidthSizable){ +_90.size.width+=dX; +} +if(_8e&CPViewMinYMargin){ +_90.origin.y+=dY; +} +if(_8e&CPViewHeightSizable){ +_90.size.height+=dY; +} +objj_msgSend(_8b,"setFrame:",_90); +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_91,_92,_93){ +with(_91){ +var _94=_subviews.length; +while(_94--){ +objj_msgSend(_subviews[_94],"resizeWithOldSuperviewSize:",_93); +} +} +}),new objj_method(sel_getUid("setAutoresizesSubviews:"),function(_95,_96,_97){ +with(_95){ +_autoresizesSubviews=!!_97; +} +}),new objj_method(sel_getUid("autoresizesSubviews"),function(_98,_99){ +with(_98){ +return _autoresizesSubviews; +} +}),new objj_method(sel_getUid("setAutoresizingMask:"),function(_9a,_9b,_9c){ +with(_9a){ +_autoresizingMask=_9c; +} +}),new objj_method(sel_getUid("autoresizingMask"),function(_9d,_9e){ +with(_9d){ +return _autoresizingMask; +} +}),new objj_method(sel_getUid("enterFullScreenMode"),function(_9f,_a0){ +with(_9f){ +return objj_msgSend(_9f,"enterFullScreenMode:withOptions:",nil,nil); +} +}),new objj_method(sel_getUid("enterFullScreenMode:withOptions:"),function(_a1,_a2,_a3,_a4){ +with(_a1){ +_fullScreenModeState=_a5(_a1); +var _a6=objj_msgSend(objj_msgSend(CPWindow,"alloc"),"initWithContentRect:styleMask:",objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"contentBounds"),CPBorderlessWindowMask); +objj_msgSend(_a6,"setLevel:",CPScreenSaverWindowLevel); +objj_msgSend(_a6,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +var _a7=objj_msgSend(_a6,"contentView"); +objj_msgSend(_a7,"setBackgroundColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_a7,"addSubview:",_a1); +objj_msgSend(_a1,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_a1,"setFrame:",CGRectMakeCopy(objj_msgSend(_a7,"bounds"))); +objj_msgSend(_a6,"makeKeyAndOrderFront:",_a1); +objj_msgSend(_a6,"makeFirstResponder:",_a1); +_isInFullScreenMode=YES; +return YES; +} +}),new objj_method(sel_getUid("exitFullScreenMode"),function(_a8,_a9){ +with(_a8){ +objj_msgSend(_a8,"exitFullScreenModeWithOptions:",nil); +} +}),new objj_method(sel_getUid("exitFullScreenModeWithOptions:"),function(_aa,_ab,_ac){ +with(_aa){ +if(!_isInFullScreenMode){ +return; +} +_isInFullScreenMode=NO; +objj_msgSend(_aa,"setFrame:",_fullScreenModeState.frame); +objj_msgSend(_aa,"setAutoresizingMask:",_fullScreenModeState.autoresizingMask); +objj_msgSend(_fullScreenModeState.superview,"_insertSubview:atIndex:",_aa,_fullScreenModeState.index); +objj_msgSend(objj_msgSend(_aa,"window"),"orderOut:",_aa); +} +}),new objj_method(sel_getUid("isInFullScreenMode"),function(_ad,_ae){ +with(_ad){ +return _isInFullScreenMode; +} +}),new objj_method(sel_getUid("setHidden:"),function(_af,_b0,_b1){ +with(_af){ +_b1=!!_b1; +if(_isHidden===_b1){ +return; +} +_isHidden=_b1; +if(_b1){ +var _b2=objj_msgSend(_window,"firstResponder"); +if(objj_msgSend(_b2,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +do{ +if(_af==_b2){ +objj_msgSend(_window,"makeFirstResponder:",objj_msgSend(_af,"nextValidKeyView")); +break; +} +}while(_b2=objj_msgSend(_b2,"superview")); +} +objj_msgSend(_af,"_notifyViewDidHide"); +}else{ +objj_msgSend(_af,"_notifyViewDidUnhide"); +} +} +}),new objj_method(sel_getUid("_notifyViewDidHide"),function(_b3,_b4){ +with(_b3){ +objj_msgSend(_b3,"viewDidHide"); +var _b5=objj_msgSend(_subviews,"count"); +while(_b5--){ +objj_msgSend(_subviews[_b5],"_notifyViewDidHide"); +} +} +}),new objj_method(sel_getUid("_notifyViewDidUnhide"),function(_b6,_b7){ +with(_b6){ +objj_msgSend(_b6,"viewDidUnhide"); +var _b8=objj_msgSend(_subviews,"count"); +while(_b8--){ +objj_msgSend(_subviews[_b8],"_notifyViewDidUnhide"); +} +} +}),new objj_method(sel_getUid("isHidden"),function(_b9,_ba){ +with(_b9){ +return _isHidden; +} +}),new objj_method(sel_getUid("setClipsToBounds:"),function(_bb,_bc,_bd){ +with(_bb){ +if(_clipsToBounds===_bd){ +return; +} +_clipsToBounds=_bd; +} +}),new objj_method(sel_getUid("clipsToBounds"),function(_be,_bf){ +with(_be){ +return _clipsToBounds; +} +}),new objj_method(sel_getUid("setAlphaValue:"),function(_c0,_c1,_c2){ +with(_c0){ +if(_opacity==_c2){ +return; +} +_opacity=_c2; +} +}),new objj_method(sel_getUid("alphaValue"),function(_c3,_c4){ +with(_c3){ +return _opacity; +} +}),new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"),function(_c5,_c6){ +with(_c5){ +var _c7=_c5; +while(_c7&&!objj_msgSend(_c7,"isHidden")){ +_c7=objj_msgSend(_c7,"superview"); +} +return _c7!==nil; +} +}),new objj_method(sel_getUid("viewDidHide"),function(_c8,_c9){ +with(_c8){ +} +}),new objj_method(sel_getUid("viewDidUnhide"),function(_ca,_cb){ +with(_ca){ +} +}),new objj_method(sel_getUid("acceptsFirstMouse:"),function(_cc,_cd,_ce){ +with(_cc){ +return YES; +} +}),new objj_method(sel_getUid("hitTests"),function(_cf,_d0){ +with(_cf){ +return _hitTests; +} +}),new objj_method(sel_getUid("setHitTests:"),function(_d1,_d2,_d3){ +with(_d1){ +_hitTests=!!_d3; +} +}),new objj_method(sel_getUid("hitTest:"),function(_d4,_d5,_d6){ +with(_d4){ +if(_isHidden||!_hitTests||!CPRectContainsPoint(_frame,_d6)){ +return nil; +} +var _d7=nil,i=_subviews.length,_d8={x:_d6.x-(_frame.origin.x),y:_d6.y-(_frame.origin.y)}; +if(_inverseBoundsTransform){ +_d8={x:_d8.x*_inverseBoundsTransform.a+_d8.y*_inverseBoundsTransform.c+_inverseBoundsTransform.tx,y:_d8.x*_inverseBoundsTransform.b+_d8.y*_inverseBoundsTransform.d+_inverseBoundsTransform.ty}; +} +while(i--){ +if(_d7=objj_msgSend(_subviews[i],"hitTest:",_d8)){ +return _d7; +} +} +return _d4; +} +}),new objj_method(sel_getUid("needsPanelToBecomeKey"),function(_d9,_da){ +with(_d9){ +return NO; +} +}),new objj_method(sel_getUid("mouseDownCanMoveWindow"),function(_db,_dc){ +with(_db){ +return !objj_msgSend(_db,"isOpaque"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_dd,_de,_df){ +with(_dd){ +if(objj_msgSend(_dd,"mouseDownCanMoveWindow")){ +objj_msgSendSuper({receiver:_dd,super_class:objj_getClass("CPView").super_class},"mouseDown:",_df); +} +} +}),new objj_method(sel_getUid("rightMouseDown:"),function(_e0,_e1,_e2){ +with(_e0){ +var _e3=objj_msgSend(_e0,"menuForEvent:",_e2); +if(_e3){ +objj_msgSend(CPMenu,"popUpContextMenu:withEvent:forView:",_e3,_e2,_e0); +}else{ +if(objj_msgSend(objj_msgSend(_e0,"nextResponder"),"isKindOfClass:",CPView)){ +objj_msgSendSuper({receiver:_e0,super_class:objj_getClass("CPView").super_class},"rightMouseDown:",_e2); +}else{ +objj_msgSend(objj_msgSend(objj_msgSend(_e2,"window"),"platformWindow"),"_propagateContextMenuDOMEvent:",YES); +} +} +} +}),new objj_method(sel_getUid("menuForEvent:"),function(_e4,_e5,_e6){ +with(_e4){ +return objj_msgSend(_e4,"menu")||objj_msgSend(objj_msgSend(_e4,"class"),"defaultMenu"); +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_e7,_e8,_e9){ +with(_e7){ +if(_backgroundColor==_e9){ +return; +} +if(_e9==objj_msgSend(CPNull,"null")){ +_e9=nil; +} +_backgroundColor=_e9; +} +}),new objj_method(sel_getUid("backgroundColor"),function(_ea,_eb){ +with(_ea){ +return _backgroundColor; +} +}),new objj_method(sel_getUid("convertPoint:fromView:"),function(_ec,_ed,_ee,_ef){ +with(_ec){ +return CGPointApplyAffineTransform(_ee,_f0(_ef,_ec)); +} +}),new objj_method(sel_getUid("convertPoint:toView:"),function(_f1,_f2,_f3,_f4){ +with(_f1){ +return CGPointApplyAffineTransform(_f3,_f0(_f1,_f4)); +} +}),new objj_method(sel_getUid("convertSize:fromView:"),function(_f5,_f6,_f7,_f8){ +with(_f5){ +return CGSizeApplyAffineTransform(_f7,_f0(_f8,_f5)); +} +}),new objj_method(sel_getUid("convertSize:toView:"),function(_f9,_fa,_fb,_fc){ +with(_f9){ +return CGSizeApplyAffineTransform(_fb,_f0(_f9,_fc)); +} +}),new objj_method(sel_getUid("convertRect:fromView:"),function(_fd,_fe,_ff,_100){ +with(_fd){ +return CGRectApplyAffineTransform(_ff,_f0(_100,_fd)); +} +}),new objj_method(sel_getUid("convertRect:toView:"),function(self,_101,_102,_103){ +with(self){ +return CGRectApplyAffineTransform(_102,_f0(self,_103)); +} +}),new objj_method(sel_getUid("setPostsFrameChangedNotifications:"),function(self,_104,_105){ +with(self){ +_105=!!_105; +if(_postsFrameChangedNotifications===_105){ +return; +} +_postsFrameChangedNotifications=_105; +if(_postsFrameChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewFrameDidChangeNotification,self); +} +} +}),new objj_method(sel_getUid("postsFrameChangedNotifications"),function(self,_106){ +with(self){ +return _postsFrameChangedNotifications; +} +}),new objj_method(sel_getUid("setPostsBoundsChangedNotifications:"),function(self,_107,_108){ +with(self){ +_108=!!_108; +if(_postsBoundsChangedNotifications===_108){ +return; +} +_postsBoundsChangedNotifications=_108; +if(_postsBoundsChangedNotifications){ +objj_msgSend(_1,"postNotificationName:object:",CPViewBoundsDidChangeNotification,self); +} +} +}),new objj_method(sel_getUid("postsBoundsChangedNotifications"),function(self,_109){ +with(self){ +return _postsBoundsChangedNotifications; +} +}),new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"),function(self,_10a,_10b,_10c,_10d,_10e,_10f,_110,_111){ +with(self){ +objj_msgSend(_window,"dragImage:at:offset:event:pasteboard:source:slideBack:",_10b,objj_msgSend(self,"convertPoint:toView:",_10c,nil),_10d,_10e,_10f,_110,_111); +} +}),new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"),function(self,_112,_113,_114,_115,_116,_117,_118,_119){ +with(self){ +objj_msgSend(_window,"dragView:at:offset:event:pasteboard:source:slideBack:",_113,objj_msgSend(self,"convertPoint:toView:",_114,nil),_115,_116,_117,_118,_119); +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(self,_11a,_11b){ +with(self){ +if(!_11b||!objj_msgSend(_11b,"count")){ +return; +} +var _11c=objj_msgSend(self,"window"); +objj_msgSend(_11c,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_registeredDraggedTypes,"addObjectsFromArray:",_11b); +objj_msgSend(_11c,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypesArray=nil; +} +}),new objj_method(sel_getUid("registeredDraggedTypes"),function(self,_11d){ +with(self){ +if(!_registeredDraggedTypesArray){ +_registeredDraggedTypesArray=objj_msgSend(_registeredDraggedTypes,"allObjects"); +} +return _registeredDraggedTypesArray; +} +}),new objj_method(sel_getUid("unregisterDraggedTypes"),function(self,_11e){ +with(self){ +objj_msgSend(objj_msgSend(self,"window"),"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +} +}),new objj_method(sel_getUid("drawRect:"),function(self,_11f,_120){ +with(self){ +} +}),new objj_method(sel_getUid("setNeedsDisplay:"),function(self,_121,_122){ +with(self){ +if(_122){ +objj_msgSend(self,"setNeedsDisplayInRect:",objj_msgSend(self,"bounds")); +} +} +}),new objj_method(sel_getUid("setNeedsDisplayInRect:"),function(self,_123,_124){ +with(self){ +if(!(_viewClassFlags&_4)){ +return; +} +if((_124.size.width<=0||_124.size.height<=0)){ +return; +} +if(_dirtyRect&&!(_dirtyRect.size.width<=0||_dirtyRect.size.height<=0)){ +_dirtyRect=CGRectUnion(_124,_dirtyRect); +}else{ +_dirtyRect={origin:{x:_124.origin.x,y:_124.origin.y},size:{width:_124.size.width,height:_124.size.height}}; +} +_CPDisplayServerAddDisplayObject(self); +} +}),new objj_method(sel_getUid("needsDisplay"),function(self,_125){ +with(self){ +return _dirtyRect&&!(_dirtyRect.size.width<=0||_dirtyRect.size.height<=0); +} +}),new objj_method(sel_getUid("displayIfNeeded"),function(self,_126){ +with(self){ +if(objj_msgSend(self,"needsDisplay")){ +objj_msgSend(self,"displayRect:",_dirtyRect); +} +} +}),new objj_method(sel_getUid("display"),function(self,_127){ +with(self){ +objj_msgSend(self,"displayRect:",objj_msgSend(self,"visibleRect")); +} +}),new objj_method(sel_getUid("displayIfNeededInRect:"),function(self,_128,_129){ +with(self){ +if(objj_msgSend(self,"needsDisplay")){ +objj_msgSend(self,"displayRect:",_129); +} +} +}),new objj_method(sel_getUid("displayRect:"),function(self,_12a,_12b){ +with(self){ +objj_msgSend(self,"viewWillDraw"); +objj_msgSend(self,"displayRectIgnoringOpacity:inContext:",_12b,nil); +_dirtyRect=NULL; +} +}),new objj_method(sel_getUid("displayRectIgnoringOpacity:inContext:"),function(self,_12c,_12d,_12e){ +with(self){ +if(objj_msgSend(self,"isHidden")){ +return; +} +} +}),new objj_method(sel_getUid("viewWillDraw"),function(self,_12f){ +with(self){ +} +}),new objj_method(sel_getUid("lockFocus"),function(self,_130){ +with(self){ +if(!_graphicsContext){ +var _131=CGBitmapGraphicsContextCreate(); +_DOMContentsElement=_131.DOMElement; +_DOMContentsElement.style.zIndex=-100; +_DOMContentsElement.style.overflow="hidden"; +_DOMContentsElement.style.position="absolute"; +_DOMContentsElement.style.visibility="visible"; +_DOMContentsElement.width=ROUND((_frame.size.width)); +_DOMContentsElement.height=ROUND((_frame.size.height)); +_DOMContentsElement.style.top="0px"; +_DOMContentsElement.style.left="0px"; +_DOMContentsElement.style.width=ROUND((_frame.size.width))+"px"; +_DOMContentsElement.style.height=ROUND((_frame.size.height))+"px"; +_graphicsContext=objj_msgSend(CPGraphicsContext,"graphicsContextWithGraphicsPort:flipped:",_131,YES); +} +objj_msgSend(CPGraphicsContext,"setCurrentContext:",_graphicsContext); +CGContextSaveGState(objj_msgSend(_graphicsContext,"graphicsPort")); +} +}),new objj_method(sel_getUid("unlockFocus"),function(self,_132){ +with(self){ +CGContextRestoreGState(objj_msgSend(_graphicsContext,"graphicsPort")); +objj_msgSend(CPGraphicsContext,"setCurrentContext:",nil); +} +}),new objj_method(sel_getUid("setNeedsLayout"),function(self,_133){ +with(self){ +if(!(_viewClassFlags&_5)){ +return; +} +_needsLayout=YES; +_CPDisplayServerAddLayoutObject(self); +} +}),new objj_method(sel_getUid("layoutIfNeeded"),function(self,_134){ +with(self){ +if(_needsLayout){ +_needsLayout=NO; +objj_msgSend(self,"layoutSubviews"); +} +} +}),new objj_method(sel_getUid("layoutSubviews"),function(self,_135){ +with(self){ +} +}),new objj_method(sel_getUid("isOpaque"),function(self,_136){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("visibleRect"),function(self,_137){ +with(self){ +if(!_superview){ +return _bounds; +} +return CGRectIntersection(objj_msgSend(self,"convertRect:fromView:",objj_msgSend(_superview,"visibleRect"),_superview),_bounds); +} +}),new objj_method(sel_getUid("_enclosingClipView"),function(self,_138){ +with(self){ +var _139=_superview,_13a=objj_msgSend(CPClipView,"class"); +while(_139&&!objj_msgSend(_139,"isKindOfClass:",_13a)){ +_139=_139._superview; +} +return _139; +} +}),new objj_method(sel_getUid("scrollPoint:"),function(self,_13b,_13c){ +with(self){ +var _13d=objj_msgSend(self,"_enclosingClipView"); +if(!_13d){ +return; +} +objj_msgSend(_13d,"scrollToPoint:",objj_msgSend(self,"convertPoint:toView:",_13c,_13d)); +} +}),new objj_method(sel_getUid("scrollRectToVisible:"),function(self,_13e,_13f){ +with(self){ +var _140=objj_msgSend(self,"visibleRect"); +_13f=CGRectIntersection(_13f,_bounds); +if((_13f.size.width<=0||_13f.size.height<=0)||CGRectContainsRect(_140,_13f)){ +return NO; +} +var _141=objj_msgSend(self,"_enclosingClipView"); +if(!_141){ +return NO; +} +var _142={x:_140.origin.x,y:_140.origin.y}; +if((_13f.origin.x)<=(_140.origin.x)){ +_142.x=(_13f.origin.x); +}else{ +if((_13f.origin.x+_13f.size.width)>(_140.origin.x+_140.size.width)){ +_142.x+=(_13f.origin.x+_13f.size.width)-(_140.origin.x+_140.size.width); +} +} +if((_13f.origin.y)<=(_140.origin.y)){ +_142.y=CGRectGetMinY(_13f); +}else{ +if((_13f.origin.y+_13f.size.height)>(_140.origin.y+_140.size.height)){ +_142.y+=(_13f.origin.y+_13f.size.height)-(_140.origin.y+_140.size.height); +} +} +objj_msgSend(_141,"scrollToPoint:",CGPointMake(_142.x,_142.y)); +return YES; +} +}),new objj_method(sel_getUid("autoscroll:"),function(self,_143,_144){ +with(self){ +return objj_msgSend(objj_msgSend(self,"superview"),"autoscroll:",_144); +} +}),new objj_method(sel_getUid("adjustScroll:"),function(self,_145,_146){ +with(self){ +return _146; +} +}),new objj_method(sel_getUid("scrollRect:by:"),function(self,_147,_148,_149){ +with(self){ +} +}),new objj_method(sel_getUid("enclosingScrollView"),function(self,_14a){ +with(self){ +var _14b=_superview,_14c=objj_msgSend(CPScrollView,"class"); +while(_14b&&!objj_msgSend(_14b,"isKindOfClass:",_14c)){ +_14b=_14b._superview; +} +return _14b; +} +}),new objj_method(sel_getUid("scrollClipView:toPoint:"),function(self,_14d,_14e,_14f){ +with(self){ +objj_msgSend(_14e,"scrollToPoint:",_14f); +} +}),new objj_method(sel_getUid("reflectScrolledClipView:"),function(self,_150,_151){ +with(self){ +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("initialize"),function(self,_152){ +with(self){ +if(self!==objj_msgSend(CPView,"class")){ +return; +} +_1=objj_msgSend(CPNotificationCenter,"defaultCenter"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingFrame"),function(self,_153){ +with(self){ +return objj_msgSend(CPSet,"setWithObjects:","frameOrigin","frameSize"); +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingBounds"),function(self,_154){ +with(self){ +return objj_msgSend(CPSet,"setWithObjects:","boundsOrigin","boundsSize"); +} +}),new objj_method(sel_getUid("defaultMenu"),function(self,_155){ +with(self){ +return nil; +} +})]); +var _6=objj_getClass("CPView"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("performKeyEquivalent:"),function(self,_156,_157){ +with(self){ +var _158=objj_msgSend(_subviews,"count"); +while(_158--){ +if(objj_msgSend(_subviews[_158],"performKeyEquivalent:",_157)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("canBecomeKeyView"),function(self,_159){ +with(self){ +return objj_msgSend(self,"acceptsFirstResponder")&&!objj_msgSend(self,"isHiddenOrHasHiddenAncestor"); +} +}),new objj_method(sel_getUid("nextKeyView"),function(self,_15a){ +with(self){ +return _nextKeyView; +} +}),new objj_method(sel_getUid("nextValidKeyView"),function(self,_15b){ +with(self){ +var _15c=objj_msgSend(self,"nextKeyView"); +while(_15c&&!objj_msgSend(_15c,"canBecomeKeyView")){ +_15c=objj_msgSend(_15c,"nextKeyView"); +} +return _15c; +} +}),new objj_method(sel_getUid("previousKeyView"),function(self,_15d){ +with(self){ +return _previousKeyView; +} +}),new objj_method(sel_getUid("previousValidKeyView"),function(self,_15e){ +with(self){ +var _15f=objj_msgSend(self,"previousKeyView"); +while(_15f&&!objj_msgSend(_15f,"canBecomeKeyView")){ +_15f=objj_msgSend(_15f,"previousKeyView"); +} +return _15f; +} +}),new objj_method(sel_getUid("_setPreviousKeyView:"),function(self,_160,_161){ +with(self){ +_previousKeyView=_161; +} +}),new objj_method(sel_getUid("setNextKeyView:"),function(self,_162,next){ +with(self){ +_nextKeyView=next; +objj_msgSend(_nextKeyView,"_setPreviousKeyView:",self); +} +})]); +var _6=objj_getClass("CPView"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("setLayer:"),function(self,_163,_164){ +with(self){ +if(_layer==_164){ +return; +} +if(_layer){ +_layer._owningView=nil; +} +_layer=_164; +if(_layer){ +var _165=CGRectMakeCopy(objj_msgSend(self,"bounds")); +objj_msgSend(_layer,"_setOwningView:",self); +} +} +}),new objj_method(sel_getUid("layer"),function(self,_166){ +with(self){ +return _layer; +} +}),new objj_method(sel_getUid("setWantsLayer:"),function(self,_167,_168){ +with(self){ +_wantsLayer=!!_168; +} +}),new objj_method(sel_getUid("wantsLayer"),function(self,_169){ +with(self){ +return _wantsLayer; +} +})]); +var _6=objj_getClass("CPView"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("themeState"),function(self,_16a){ +with(self){ +return _themeState; +} +}),new objj_method(sel_getUid("hasThemeState:"),function(self,_16b,_16c){ +with(self){ +return !!(_themeState&((typeof _16c==="string")?CPThemeState(_16c):_16c)); +} +}),new objj_method(sel_getUid("setThemeState:"),function(self,_16d,_16e){ +with(self){ +var _16f=(typeof _16e==="string")?CPThemeState(_16e):_16e; +if(_themeState&_16f){ +return NO; +} +_themeState|=_16f; +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("unsetThemeState:"),function(self,_170,_171){ +with(self){ +var _172=((typeof _171==="string")?CPThemeState(_171):_171); +if(!(_themeState&_172)){ +return NO; +} +_themeState&=~_172; +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +return YES; +} +}),new objj_method(sel_getUid("_loadThemeAttributes"),function(self,_173){ +with(self){ +var _174=objj_msgSend(self,"class"),_175=objj_msgSend(_174,"_themeAttributes"),_176=_175.length; +if(!_176){ +return; +} +var _177=objj_msgSend(self,"theme"),_178=objj_msgSend(_174,"themeClass"); +_themeAttributes={}; +while(_176--){ +var _179=_175[_176--],_17a=objj_msgSend(objj_msgSend(_CPThemeAttribute,"alloc"),"initWithName:defaultValue:",_179,_175[_176]); +objj_msgSend(_17a,"setParentAttribute:",objj_msgSend(_177,"attributeWithName:forClass:",_179,_178)); +_themeAttributes[_179]=_17a; +} +} +}),new objj_method(sel_getUid("setTheme:"),function(self,_17b,_17c){ +with(self){ +if(_theme===_17c){ +return; +} +_theme=_17c; +objj_msgSend(self,"viewDidChangeTheme"); +} +}),new objj_method(sel_getUid("theme"),function(self,_17d){ +with(self){ +return _theme; +} +}),new objj_method(sel_getUid("viewDidChangeTheme"),function(self,_17e){ +with(self){ +if(!_themeAttributes){ +return; +} +var _17f=objj_msgSend(self,"theme"),_180=objj_msgSend(objj_msgSend(self,"class"),"themeClass"); +for(var _181 in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_181)){ +objj_msgSend(_themeAttributes[_181],"setParentAttribute:",objj_msgSend(_17f,"attributeWithName:forClass:",_181,_180)); +} +} +objj_msgSend(self,"setNeedsLayout"); +objj_msgSend(self,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("_themeAttributeDictionary"),function(self,_182){ +with(self){ +var _183=objj_msgSend(CPDictionary,"dictionary"); +if(_themeAttributes){ +var _184=objj_msgSend(self,"theme"); +for(var _185 in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_185)){ +objj_msgSend(_183,"setObject:forKey:",_themeAttributes[_185],_185); +} +} +} +return _183; +} +}),new objj_method(sel_getUid("setValue:forThemeAttribute:inState:"),function(self,_186,_187,_188,_189){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_188]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_188+"'"); +} +var _18a=objj_msgSend(self,"currentValueForThemeAttribute:",_188); +objj_msgSend(_themeAttributes[_188],"setValue:forState:",_187,_189); +if(objj_msgSend(self,"currentValueForThemeAttribute:",_188)===_18a){ +return; +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("setValue:forThemeAttribute:"),function(self,_18b,_18c,_18d){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_18d]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_18d+"'"); +} +var _18e=objj_msgSend(self,"currentValueForThemeAttribute:",_18d); +objj_msgSend(_themeAttributes[_18d],"setValue:",_18c); +if(objj_msgSend(self,"currentValueForThemeAttribute:",_18d)===_18e){ +return; +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +}),new objj_method(sel_getUid("valueForThemeAttribute:inState:"),function(self,_18f,_190,_191){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_190]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_190+"'"); +} +return objj_msgSend(_themeAttributes[_190],"valueForState:",_191); +} +}),new objj_method(sel_getUid("valueForThemeAttribute:"),function(self,_192,_193){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_193]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_193+"'"); +} +return objj_msgSend(_themeAttributes[_193],"value"); +} +}),new objj_method(sel_getUid("currentValueForThemeAttribute:"),function(self,_194,_195){ +with(self){ +if(!_themeAttributes||!_themeAttributes[_195]){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,objj_msgSend(self,"className")+" does not contain theme attribute '"+_195+"'"); +} +return objj_msgSend(_themeAttributes[_195],"valueForState:",_themeState); +} +}),new objj_method(sel_getUid("createEphemeralSubviewNamed:"),function(self,_196,_197){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"),function(self,_198,_199){ +with(self){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +} +}),new objj_method(sel_getUid("layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:"),function(self,_19a,_19b,_19c,_19d){ +with(self){ +if(!_ephemeralSubviewsForNames){ +_ephemeralSubviewsForNames={}; +_ephemeralSubviews=objj_msgSend(CPSet,"set"); +} +var _19e=objj_msgSend(self,"rectForEphemeralSubviewNamed:",_19b); +if(_19e&&!(_19e.size.width<=0||_19e.size.height<=0)){ +if(!_ephemeralSubviewsForNames[_19b]){ +_ephemeralSubviewsForNames[_19b]=objj_msgSend(self,"createEphemeralSubviewNamed:",_19b); +objj_msgSend(_ephemeralSubviews,"addObject:",_ephemeralSubviewsForNames[_19b]); +if(_ephemeralSubviewsForNames[_19b]){ +objj_msgSend(self,"addSubview:positioned:relativeTo:",_ephemeralSubviewsForNames[_19b],_19c,_ephemeralSubviewsForNames[_19d]); +} +} +if(_ephemeralSubviewsForNames[_19b]){ +objj_msgSend(_ephemeralSubviewsForNames[_19b],"setFrame:",_19e); +} +}else{ +if(_ephemeralSubviewsForNames[_19b]){ +objj_msgSend(_ephemeralSubviewsForNames[_19b],"removeFromSuperview"); +objj_msgSend(_ephemeralSubviews,"removeObject:",_ephemeralSubviewsForNames[_19b]); +delete _ephemeralSubviewsForNames[_19b]; +} +} +return _ephemeralSubviewsForNames[_19b]; +} +}),new objj_method(sel_getUid("ephemeralSubviewNamed:"),function(self,_19f,_1a0){ +with(self){ +if(!_ephemeralSubviewsForNames){ +return nil; +} +return (_ephemeralSubviewsForNames[_1a0]||nil); +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("themeClass"),function(self,_1a1){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("themeAttributes"),function(self,_1a2){ +with(self){ +return nil; +} +}),new objj_method(sel_getUid("_themeAttributes"),function(self,_1a3){ +with(self){ +if(!_2){ +_2={}; +} +var _1a4=objj_msgSend(self,"class"),_1a5=objj_msgSend(CPView,"class"),_1a6=[],_1a7=objj_msgSend(CPNull,"null"); +for(;_1a4&&_1a4!==_1a5;_1a4=objj_msgSend(_1a4,"superclass")){ +var _1a8=_2[class_getName(_1a4)]; +if(_1a8){ +_1a6=_1a6.length?_1a6.concat(_1a8):_1a6; +_2[objj_msgSend(self,"className")]=_1a6; +break; +} +var _1a9=objj_msgSend(_1a4,"themeAttributes"); +if(!_1a9){ +continue; +} +var _1aa=objj_msgSend(_1a9,"allKeys"),_1ab=_1aa.length; +while(_1ab--){ +var _1ac=_1aa[_1ab],_1ad=objj_msgSend(_1a9,"objectForKey:",_1ac); +_1a6.push(_1ad===_1a7?nil:_1ad); +_1a6.push(_1ac); +} +} +return _1a6; +} +})]); +var _1ae="CPViewAutoresizingMask",_1af="CPViewAutoresizesSubviews",_1b0="CPViewBackgroundColor",_1b1="CPViewBoundsKey",_1b2="CPViewFrameKey",_1b3="CPViewHitTestsKey",_1b4="CPViewIsHiddenKey",_1b5="CPViewOpacityKey",_1b6="CPViewSubviewsKey",_1b7="CPViewSuperviewKey",_1b8="CPViewTagKey",_1b9="CPViewThemeStateKey",_1ba="CPViewWindowKey",_1bb="CPViewNextKeyViewKey",_1bc="CPViewPreviousKeyViewKey"; +var _6=objj_getClass("CPView"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPView\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("initWithCoder:"),function(self,_1bd,_1be){ +with(self){ +_frame=objj_msgSend(_1be,"decodeRectForKey:",_1b2); +_bounds=objj_msgSend(_1be,"decodeRectForKey:",_1b1); +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPView").super_class},"initWithCoder:",_1be); +if(self){ +_tag=objj_msgSend(_1be,"containsValueForKey:",_1b8)?objj_msgSend(_1be,"decodeIntForKey:",_1b8):-1; +_window=objj_msgSend(_1be,"decodeObjectForKey:",_1ba); +_subviews=objj_msgSend(_1be,"decodeObjectForKey:",_1b6)||[]; +_superview=objj_msgSend(_1be,"decodeObjectForKey:",_1b7); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_autoresizingMask=objj_msgSend(_1be,"decodeIntForKey:",_1ae)||CPViewNotSizable; +_autoresizesSubviews=!objj_msgSend(_1be,"containsValueForKey:",_1af)||objj_msgSend(_1be,"decodeBoolForKey:",_1af); +_hitTests=!objj_msgSend(_1be,"containsValueForKey:",_1b3)||objj_msgSend(_1be,"decodeObjectForKey:",_1b3); +if(objj_msgSend(_1be,"containsValueForKey:",_1b4)){ +objj_msgSend(self,"setHidden:",objj_msgSend(_1be,"decodeBoolForKey:",_1b4)); +}else{ +_isHidden=NO; +} +if(objj_msgSend(_1be,"containsValueForKey:",_1b5)){ +objj_msgSend(self,"setAlphaValue:",objj_msgSend(_1be,"decodeIntForKey:",_1b5)); +}else{ +_opacity=1; +} +objj_msgSend(self,"setBackgroundColor:",objj_msgSend(_1be,"decodeObjectForKey:",_1b0)); +objj_msgSend(self,"setupViewFlags"); +_theme=objj_msgSend(CPTheme,"defaultTheme"); +_themeState=CPThemeState(objj_msgSend(_1be,"decodeIntForKey:",_1b9)); +_themeAttributes={}; +var _1bf=objj_msgSend(self,"class"),_1c0=objj_msgSend(_1bf,"themeClass"),_1c1=objj_msgSend(_1bf,"_themeAttributes"),_1c2=_1c1.length; +while(_1c2--){ +var _1c3=_1c1[_1c2--]; +_themeAttributes[_1c3]=CPThemeAttributeDecode(_1be,_1c3,_1c1[_1c2],_theme,_1c0); +} +objj_msgSend(self,"setNeedsDisplay:",YES); +objj_msgSend(self,"setNeedsLayout"); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_1c4,_1c5){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPView").super_class},"encodeWithCoder:",_1c5); +if(_tag!==-1){ +objj_msgSend(_1c5,"encodeInt:forKey:",_tag,_1b8); +} +objj_msgSend(_1c5,"encodeRect:forKey:",_frame,_1b2); +objj_msgSend(_1c5,"encodeRect:forKey:",_bounds,_1b1); +if(_window!==nil){ +objj_msgSend(_1c5,"encodeConditionalObject:forKey:",_window,_1ba); +} +var _1c6=objj_msgSend(_subviews,"count"),_1c7=_subviews; +if(_1c6>0&&objj_msgSend(_ephemeralSubviews,"count")>0){ +_1c7=objj_msgSend(_1c7,"copy"); +while(_1c6--){ +if(objj_msgSend(_ephemeralSubviews,"containsObject:",_1c7[_1c6])){ +_1c7.splice(_1c6,1); +} +} +} +if(_1c7.length>0){ +objj_msgSend(_1c5,"encodeObject:forKey:",_1c7,_1b6); +} +if(_superview!==nil){ +objj_msgSend(_1c5,"encodeConditionalObject:forKey:",_superview,_1b7); +} +if(_autoresizingMask!==CPViewNotSizable){ +objj_msgSend(_1c5,"encodeInt:forKey:",_autoresizingMask,_1ae); +} +if(!_autoresizesSubviews){ +objj_msgSend(_1c5,"encodeBool:forKey:",_autoresizesSubviews,_1af); +} +if(_backgroundColor!==nil){ +objj_msgSend(_1c5,"encodeObject:forKey:",_backgroundColor,_1b0); +} +if(_hitTests!==YES){ +objj_msgSend(_1c5,"encodeBool:forKey:",_hitTests,_1b3); +} +if(_opacity!==1){ +objj_msgSend(_1c5,"encodeFloat:forKey:",_opacity,_1b5); +} +if(_isHidden){ +objj_msgSend(_1c5,"encodeBool:forKey:",_isHidden,_1b4); +} +var _1c8=objj_msgSend(self,"nextKeyView"); +if(_1c8!==nil){ +objj_msgSend(_1c5,"encodeConditionalObject:forKey:",_1c8,_1bb); +} +var _1c9=objj_msgSend(self,"previousKeyView"); +if(_1c9!==nil){ +objj_msgSend(_1c5,"encodeConditionalObject:forKey:",_1c9,_1bc); +} +objj_msgSend(_1c5,"encodeInt:forKey:",CPThemeStateName(_themeState),_1b9); +for(var _1ca in _themeAttributes){ +if(_themeAttributes.hasOwnProperty(_1ca)){ +CPThemeAttributeEncode(_1c5,_themeAttributes[_1ca]); +} +} +} +})]); +var _a5=function(_1cb){ +var _1cc=_1cb._superview; +return {autoresizingMask:_1cb._autoresizingMask,frame:CGRectMakeCopy(_1cb._frame),index:(_1cc?objj_msgSend(_1cc._subviews,"indexOfObjectIdenticalTo:",_1cb):0),superview:_1cc}; +}; +var _f0=function(_1cd,_1ce){ +var _1cf=CGAffineTransformMakeIdentity(),_1d0=YES,_1d1=nil,_1d2=nil; +if(_1cd){ +var view=_1cd; +while(view&&view!=_1ce){ +var _1d3=view._frame; +_1cf.tx+=(_1d3.origin.x); +_1cf.ty+=(_1d3.origin.y); +if(view._boundsTransform){ +var tx=_1cf.tx*view._boundsTransform.a+_1cf.ty*view._boundsTransform.c+view._boundsTransform.tx; +_1cf.ty=_1cf.tx*view._boundsTransform.b+_1cf.ty*view._boundsTransform.d+view._boundsTransform.ty; +_1cf.tx=tx; +var a=_1cf.a*view._boundsTransform.a+_1cf.b*view._boundsTransform.c,b=_1cf.a*view._boundsTransform.b+_1cf.b*view._boundsTransform.d,c=_1cf.c*view._boundsTransform.a+_1cf.d*view._boundsTransform.c; +_1cf.d=_1cf.c*view._boundsTransform.b+_1cf.d*view._boundsTransform.d; +_1cf.a=a; +_1cf.b=b; +_1cf.c=c; +} +view=view._superview; +} +if(view===_1ce){ +return _1cf; +}else{ +if(_1cd&&_1ce){ +_1d1=objj_msgSend(_1cd,"window"); +_1d2=objj_msgSend(_1ce,"window"); +if(_1d1&&_1d2&&_1d1!==_1d2){ +_1d0=NO; +var _1d3=objj_msgSend(_1d1,"frame"); +_1cf.tx+=(_1d3.origin.x); +_1cf.ty+=(_1d3.origin.y); +} +} +} +} +var view=_1ce; +while(view){ +var _1d3=view._frame; +_1cf.tx-=(_1d3.origin.x); +_1cf.ty-=(_1d3.origin.y); +if(view._boundsTransform){ +var tx=_1cf.tx*view._inverseBoundsTransform.a+_1cf.ty*view._inverseBoundsTransform.c+view._inverseBoundsTransform.tx; +_1cf.ty=_1cf.tx*view._inverseBoundsTransform.b+_1cf.ty*view._inverseBoundsTransform.d+view._inverseBoundsTransform.ty; +_1cf.tx=tx; +var a=_1cf.a*view._inverseBoundsTransform.a+_1cf.b*view._inverseBoundsTransform.c,b=_1cf.a*view._inverseBoundsTransform.b+_1cf.b*view._inverseBoundsTransform.d,c=_1cf.c*view._inverseBoundsTransform.a+_1cf.d*view._inverseBoundsTransform.c; +_1cf.d=_1cf.c*view._inverseBoundsTransform.b+_1cf.d*view._inverseBoundsTransform.d; +_1cf.a=a; +_1cf.b=b; +_1cf.c=c; +} +view=view._superview; +} +if(!_1d0){ +var _1d3=objj_msgSend(_1d2,"frame"); +_1cf.tx-=(_1d3.origin.x); +_1cf.ty-=(_1d3.origin.y); +} +return _1cf; +}; +p;17;CPViewAnimation.jt;4854;@STATIC;1.0;I;20;AppKit/CPAnimation.jt;4810; +objj_executeFile("AppKit/CPAnimation.j",NO); +CPViewAnimationTargetKey="CPViewAnimationTarget"; +CPViewAnimationStartFrameKey="CPViewAnimationStartFrame"; +CPViewAnimationEndFrameKey="CPViewAnimationEndFrame"; +CPViewAnimationEffectKey="CPViewAnimationEffect"; +CPViewAnimationFadeInEffect="CPViewAnimationFadeIn"; +CPViewAnimationFadeOutEffect="CPViewAnimationFadeOut"; +var _1=objj_allocateClassPair(CPAnimation,"CPViewAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_viewAnimations")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithViewAnimations:"),function(_3,_4,_5){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPViewAnimation").super_class},"initWithDuration:animationCurve:",0.5,CPAnimationLinear)){ +objj_msgSend(_3,"setViewAnimations:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("startAnimation"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_viewAnimations,"count"); +while(_8--){ +var _9=objj_msgSend(_viewAnimations,"objectAtIndex:",_8),_a=objj_msgSend(_6,"_targetView:",_9),_b=objj_msgSend(_6,"_startFrame:",_9); +objj_msgSend(_a,"setFrame:",_b); +var _c=objj_msgSend(_6,"_effect:",_9); +if(_c===CPViewAnimationFadeInEffect){ +objj_msgSend(_a,"setAlphaValue:",0); +objj_msgSend(_a,"setHidden:",NO); +}else{ +if(_c===CPViewAnimationFadeOutEffect){ +objj_msgSend(_a,"setAlphaValue:",1); +} +} +} +objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPViewAnimation").super_class},"startAnimation"); +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(_d,_e,_f){ +with(_d){ +objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPViewAnimation").super_class},"setCurrentProgress:",_f); +var _10=objj_msgSend(_viewAnimations,"count"); +while(_10--){ +var _11=objj_msgSend(_viewAnimations,"objectAtIndex:",_10),_12=objj_msgSend(_d,"_targetView:",_11),_13=objj_msgSend(_d,"_startFrame:",_11),_14=objj_msgSend(_d,"_endFrame:",_11),_15={origin:{x:0,y:0},size:{width:0,height:0}}; +_15.origin.x=_14.origin.x-_13.origin.x; +_15.origin.y=_14.origin.y-_13.origin.y; +_15.size.width=_14.size.width-_13.size.width; +_15.size.height=_14.size.height-_13.size.height; +var _16={origin:{x:0,y:0},size:{width:0,height:0}}; +_16.origin.x=_13.origin.x+_15.origin.x*_f; +_16.origin.y=_13.origin.y+_15.origin.y*_f; +_16.size.width=_13.size.width+_15.size.width*_f; +_16.size.height=_13.size.height+_15.size.height*_f; +objj_msgSend(_12,"setFrame:",_16); +var _17=objj_msgSend(_d,"_effect:",_11); +if(_17===CPViewAnimationFadeInEffect){ +objj_msgSend(_12,"setAlphaValue:",1*_f); +}else{ +if(_17===CPViewAnimationFadeOutEffect){ +objj_msgSend(_12,"setAlphaValue:",1+(0-1)*_f); +} +} +if(_f===1){ +objj_msgSend(_12,"setHidden:",(_14.size.width<=0||_14.size.height<=0)||objj_msgSend(_12,"alphaValue")===0); +} +} +} +}),new objj_method(sel_getUid("stopAnimation"),function(_18,_19){ +with(_18){ +var _1a=objj_msgSend(_viewAnimations,"count"); +while(_1a--){ +var _1b=objj_msgSend(_viewAnimations,"objectAtIndex:",_1a),_1c=objj_msgSend(_18,"_targetView:",_1b),_1d=objj_msgSend(_18,"_endFrame:",_1b); +objj_msgSend(_1c,"setFrame:",_1d); +var _1e=objj_msgSend(_18,"_effect:",_1b); +if(_1e===CPViewAnimationFadeInEffect){ +objj_msgSend(_1c,"setAlphaValue:",1); +}else{ +if(_1e===CPViewAnimationFadeOutEffect){ +objj_msgSend(_1c,"setAlphaValue:",0); +} +} +objj_msgSend(_1c,"setHidden:",(_1d.size.width<=0||_1d.size.height<=0)||objj_msgSend(_1c,"alphaValue")===0); +} +objj_msgSendSuper({receiver:_18,super_class:objj_getClass("CPViewAnimation").super_class},"stopAnimation"); +} +}),new objj_method(sel_getUid("_targetView:"),function(_1f,_20,_21){ +with(_1f){ +var _22=objj_msgSend(_21,"valueForKey:",CPViewAnimationTargetKey); +if(!_22){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,objj_msgSend(CPString,"stringWithFormat:","view animation: %@ does not have a target view",objj_msgSend(_21,"description"))); +} +return _22; +} +}),new objj_method(sel_getUid("_startFrame:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(_25,"valueForKey:",CPViewAnimationStartFrameKey); +if(!_26){ +return objj_msgSend(objj_msgSend(_23,"_targetView:",_25),"frame"); +} +return _26; +} +}),new objj_method(sel_getUid("_endFrame:"),function(_27,_28,_29){ +with(_27){ +var _2a=objj_msgSend(_29,"valueForKey:",CPViewAnimationEndFrameKey); +if(!_2a){ +return objj_msgSend(objj_msgSend(_27,"_targetView:",_29),"frame"); +} +return _2a; +} +}),new objj_method(sel_getUid("_effect:"),function(_2b,_2c,_2d){ +with(_2b){ +return objj_msgSend(_2d,"valueForKey:",CPViewAnimationEffectKey); +} +}),new objj_method(sel_getUid("viewAnimations"),function(_2e,_2f){ +with(_2e){ +return _viewAnimations; +} +}),new objj_method(sel_getUid("setViewAnimations:"),function(_30,_31,_32){ +with(_30){ +if(_32!=_viewAnimations){ +objj_msgSend(_30,"stopAnimation"); +_viewAnimations=objj_msgSend(_32,"copy"); +} +} +})]); +p;18;CPViewController.jt;5479;@STATIC;1.0;I;20;AppKit/CPResponder.jt;5435; +objj_executeFile("AppKit/CPResponder.j",NO); +var _1; +var _2=objj_allocateClassPair(CPResponder,"CPViewController"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_view"),new objj_ivar("_isLoading"),new objj_ivar("_representedObject"),new objj_ivar("_title"),new objj_ivar("_cibName"),new objj_ivar("_cibBundle"),new objj_ivar("_cibExternalNameTable")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("view"),function(_4,_5){ +with(_4){ +return _view; +} +}),new objj_method(sel_getUid("setView:"),function(_6,_7,_8){ +with(_6){ +_view=_8; +} +}),new objj_method(sel_getUid("representedObject"),function(_9,_a){ +with(_9){ +return _representedObject; +} +}),new objj_method(sel_getUid("setRepresentedObject:"),function(_b,_c,_d){ +with(_b){ +_representedObject=_d; +} +}),new objj_method(sel_getUid("title"),function(_e,_f){ +with(_e){ +return _title; +} +}),new objj_method(sel_getUid("setTitle:"),function(_10,_11,_12){ +with(_10){ +_title=_12; +} +}),new objj_method(sel_getUid("cibName"),function(_13,_14){ +with(_13){ +return _cibName; +} +}),new objj_method(sel_getUid("cibBundle"),function(_15,_16){ +with(_15){ +return _cibBundle; +} +}),new objj_method(sel_getUid("cibExternalNameTable"),function(_17,_18){ +with(_17){ +return _cibExternalNameTable; +} +}),new objj_method(sel_getUid("init"),function(_19,_1a){ +with(_19){ +return objj_msgSend(_19,"initWithCibName:bundle:",nil,nil); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +return objj_msgSend(_1b,"initWithCibName:bundle:externalNameTable:",_1d,_1e,nil); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:owner:"),function(_1f,_20,_21,_22,_23){ +with(_1f){ +return objj_msgSend(_1f,"initWithCibName:bundle:externalNameTable:",_21,_22,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_23,CPCibOwner)); +} +}),new objj_method(sel_getUid("initWithCibName:bundle:externalNameTable:"),function(_24,_25,_26,_27,_28){ +with(_24){ +_24=objj_msgSendSuper({receiver:_24,super_class:objj_getClass("CPViewController").super_class},"init"); +if(_24){ +_cibName=_26; +_cibBundle=_27||objj_msgSend(CPBundle,"mainBundle"); +_cibExternalNameTable=_28||objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_24,CPCibOwner); +_isLoading=NO; +} +return _24; +} +}),new objj_method(sel_getUid("loadView"),function(_29,_2a){ +with(_29){ +if(_view){ +return; +} +var cib=objj_msgSend(_1,"objectForKey:",_cibName); +if(!cib){ +cib=objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",objj_msgSend(_cibBundle,"pathForResource:",_cibName+".cib")); +objj_msgSend(_1,"setObject:forKey:",cib,_cibName); +} +objj_msgSend(cib,"instantiateCibWithExternalNameTable:",_cibExternalNameTable); +} +}),new objj_method(sel_getUid("view"),function(_2b,_2c){ +with(_2b){ +if(!_view){ +_isLoading=YES; +var _2d=objj_msgSend(_cibExternalNameTable,"objectForKey:",CPCibOwner); +if(objj_msgSend(_2d,"respondsToSelector:",sel_getUid("viewControllerWillLoadCib:"))){ +objj_msgSend(_2d,"viewControllerWillLoadCib:",_2b); +} +objj_msgSend(_2b,"loadView"); +if(_view===nil&&objj_msgSend(_2d,"isKindOfClass:",objj_msgSend(CPDocument,"class"))){ +objj_msgSend(_2b,"setView:",objj_msgSend(_2d,"valueForKey:","view")); +} +if(!_view){ +var _2e=objj_msgSend(CPString,"stringWithFormat:","View for %@ could not be loaded from Cib or no view specified. Override loadView to load the view manually.",_2b); +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,_2e); +} +if(objj_msgSend(_2d,"respondsToSelector:",sel_getUid("viewControllerDidLoadCib:"))){ +objj_msgSend(_2d,"viewControllerDidLoadCib:",_2b); +} +_isLoading=NO; +objj_msgSend(_2b,"viewDidLoad"); +} +return _view; +} +}),new objj_method(sel_getUid("viewDidLoad"),function(_2f,_30){ +with(_2f){ +} +}),new objj_method(sel_getUid("setView:"),function(_31,_32,_33){ +with(_31){ +var _34=!_view; +_view=_33; +if(!_isLoading&&_34){ +objj_msgSend(_31,"viewDidLoad"); +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_35,_36){ +with(_35){ +if(_35===CPViewController){ +_1=objj_msgSend(CPDictionary,"dictionary"); +} +} +})]); +var _37="CPViewControllerViewKey",_38="CPViewControllerTitleKey",_39="CPViewControllerCibNameKey",_3a="CPViewControllerBundleKey"; +var _2=objj_getClass("CPViewController"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPViewController\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_3b,_3c,_3d){ +with(_3b){ +_3b=objj_msgSendSuper({receiver:_3b,super_class:objj_getClass("CPViewController").super_class},"initWithCoder:",_3d); +if(_3b){ +_view=objj_msgSend(_3d,"decodeObjectForKey:",_37); +_title=objj_msgSend(_3d,"decodeObjectForKey:",_38); +_cibName=objj_msgSend(_3d,"decodeObjectForKey:",_39); +var _3e=objj_msgSend(_3d,"decodeObjectForKey:",_3a); +_cibBundle=_3e?objj_msgSend(CPBundle,"bundleWithPath:",_3e):objj_msgSend(CPBundle,"mainBundle"); +_cibExternalNameTable=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_3b,CPCibOwner); +} +return _3b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_3f,_40,_41){ +with(_3f){ +objj_msgSendSuper({receiver:_3f,super_class:objj_getClass("CPViewController").super_class},"encodeWithCoder:",_41); +objj_msgSend(_41,"encodeObject:forKey:",_view,_37); +objj_msgSend(_41,"encodeObject:forKey:",_title,_38); +objj_msgSend(_41,"encodeObject:forKey:",_cibName,_39); +objj_msgSend(_41,"encodeObject:forKey:",objj_msgSend(_cibBundle,"bundlePath"),_3a); +} +})]); +p;11;CPWebView.jt;14384;@STATIC;1.0;I;15;AppKit/CPView.jt;14344; +objj_executeFile("AppKit/CPView.j",NO); +CPWebViewProgressStartedNotification="CPWebViewProgressStartedNotification"; +CPWebViewProgressFinishedNotification="CPWebViewProgressFinishedNotification"; +CPWebViewScrollAppKit=1; +CPWebViewScrollNative=2; +var _1=objj_allocateClassPair(CPView,"CPWebView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_scrollView"),new objj_ivar("_frameView"),new objj_ivar("_iframe"),new objj_ivar("_mainFrameURL"),new objj_ivar("_backwardStack"),new objj_ivar("_forwardStack"),new objj_ivar("_ignoreLoadStart"),new objj_ivar("_ignoreLoadEnd"),new objj_ivar("_downloadDelegate"),new objj_ivar("_frameLoadDelegate"),new objj_ivar("_policyDelegate"),new objj_ivar("_resourceLoadDelegate"),new objj_ivar("_UIDelegate"),new objj_ivar("_wso"),new objj_ivar("_url"),new objj_ivar("_html"),new objj_ivar("_loadCallback"),new objj_ivar("_scrollMode"),new objj_ivar("_scrollSize"),new objj_ivar("_loadHTMLStringTimer")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:frameName:groupName:"),function(_3,_4,_5,_6,_7){ +with(_3){ +if(_3=objj_msgSend(_3,"initWithFrame:",_5)){ +_iframe.name=_6; +} +return _3; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_8,_9,_a){ +with(_8){ +if(_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPWebView").super_class},"initWithFrame:",_a)){ +_mainFrameURL=nil; +_backwardStack=[]; +_forwardStack=[]; +_scrollMode=CPWebViewScrollNative; +objj_msgSend(_8,"_initDOMWithFrame:",_a); +} +return _8; +} +}),new objj_method(sel_getUid("_initDOMWithFrame:"),function(_b,_c,_d){ +with(_b){ +_ignoreLoadStart=YES; +_ignoreLoadEnd=YES; +_iframe=document.createElement("iframe"); +_iframe.name="iframe_"+Math.floor(Math.random()*10000); +_iframe.style.width="100%"; +_iframe.style.height="100%"; +_iframe.style.borderWidth="0px"; +_iframe.frameBorder="0"; +objj_msgSend(_b,"setDrawsBackground:",YES); +_loadCallback=function(){ +if(!_ignoreLoadStart){ +objj_msgSend(_b,"_startedLoading"); +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=_iframe.src; +_mainFrameURL=_iframe.src; +objj_msgSend(_forwardStack,"removeAllObjects"); +}else{ +_ignoreLoadStart=NO; +} +if(!_ignoreLoadEnd){ +objj_msgSend(_b,"_finishedLoading"); +}else{ +_ignoreLoadEnd=NO; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +}; +if(_iframe.addEventListener){ +_iframe.addEventListener("load",_loadCallback,false); +}else{ +if(_iframe.attachEvent){ +_iframe.attachEvent("onload",_loadCallback); +} +} +_frameView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",objj_msgSend(_b,"bounds")); +objj_msgSend(_frameView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +_scrollView=objj_msgSend(objj_msgSend(CPScrollView,"alloc"),"initWithFrame:",objj_msgSend(_b,"bounds")); +objj_msgSend(_scrollView,"setAutohidesScrollers:",YES); +objj_msgSend(_scrollView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_scrollView,"setDocumentView:",_frameView); +_frameView._DOMElement.appendChild(_iframe); +objj_msgSend(_b,"_setScrollMode:",_scrollMode); +objj_msgSend(_b,"addSubview:",_scrollView); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_e,_f,_10){ +with(_e){ +objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPWebView").super_class},"setFrameSize:",_10); +objj_msgSend(_e,"_resizeWebFrame"); +} +}),new objj_method(sel_getUid("_attachScrollEventIfNecessary"),function(_11,_12){ +with(_11){ +if(_scrollMode!==CPWebViewScrollAppKit){ +return; +} +var win=null; +try{ +win=objj_msgSend(_11,"DOMWindow"); +} +catch(e){ +} +if(win&&win.addEventListener){ +var _13=function(_14){ +var _15=objj_msgSend(_11,"bounds"),_16=CGPointMake(CGRectGetMidX(_15),CGRectGetMidY(_15)),_17=objj_msgSend(_11,"convertPoint:toView:",_16,nil),_18=objj_msgSend(objj_msgSend(_11,"window"),"convertBaseToBridge:",_17); +_14._overrideLocation=_18; +objj_msgSend(objj_msgSend(objj_msgSend(_11,"window"),"platformWindow"),"scrollEvent:",_14); +}; +win.addEventListener("DOMMouseScroll",_13,false); +} +} +}),new objj_method(sel_getUid("_resizeWebFrame"),function(_19,_1a){ +with(_19){ +if(_scrollMode===CPWebViewScrollAppKit){ +if(_scrollSize){ +objj_msgSend(_frameView,"setFrameSize:",_scrollSize); +}else{ +var _1b=objj_msgSend(_frameView,"visibleRect"); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(CGRectGetMaxX(_1b),CGRectGetMaxY(_1b))); +var win=null; +try{ +win=objj_msgSend(_19,"DOMWindow"); +} +catch(e){ +} +if(win&&win.document&&win.document.body){ +var _1c=win.document.body.scrollWidth,_1d=win.document.body.scrollHeight; +_iframe.setAttribute("width",_1c); +_iframe.setAttribute("height",_1d); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(_1c,_1d)); +}else{ +CPLog.warn("using default size 800*1600"); +objj_msgSend(_frameView,"setFrameSize:",CGSizeMake(800,1600)); +} +objj_msgSend(_frameView,"scrollRectToVisible:",_1b); +} +} +} +}),new objj_method(sel_getUid("setScrollMode:"),function(_1e,_1f,_20){ +with(_1e){ +if(_scrollMode==_20){ +return; +} +objj_msgSend(_1e,"_setScrollMode:",_20); +} +}),new objj_method(sel_getUid("_setScrollMode:"),function(_21,_22,_23){ +with(_21){ +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)){ +_scrollMode=CPWebViewScrollNative; +}else{ +_scrollMode=_23; +} +_ignoreLoadStart=YES; +_ignoreLoadEnd=YES; +var _24=_iframe.parentNode; +_24.removeChild(_iframe); +if(_scrollMode===CPWebViewScrollAppKit){ +objj_msgSend(_scrollView,"setHasHorizontalScroller:",YES); +objj_msgSend(_scrollView,"setHasVerticalScroller:",YES); +_iframe.setAttribute("scrolling","no"); +}else{ +objj_msgSend(_scrollView,"setHasHorizontalScroller:",NO); +objj_msgSend(_scrollView,"setHasVerticalScroller:",NO); +_iframe.setAttribute("scrolling","auto"); +objj_msgSend(_frameView,"setFrameSize:",objj_msgSend(_scrollView,"bounds").size); +} +_24.appendChild(_iframe); +} +}),new objj_method(sel_getUid("loadHTMLString:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_25,"loadHTMLString:baseURL:",_27,nil); +} +}),new objj_method(sel_getUid("loadHTMLString:baseURL:"),function(_28,_29,_2a,URL){ +with(_28){ +objj_msgSend(_28,"_setScrollMode:",CPWebViewScrollAppKit); +objj_msgSend(_frameView,"setFrameSize:",objj_msgSend(_scrollView,"contentSize")); +objj_msgSend(_28,"_startedLoading"); +_ignoreLoadStart=YES; +_ignoreLoadEnd=NO; +_url=null; +_html=_2a; +objj_msgSend(_28,"_load"); +} +}),new objj_method(sel_getUid("_loadMainFrameURL"),function(_2b,_2c){ +with(_2b){ +objj_msgSend(_2b,"_setScrollMode:",CPWebViewScrollNative); +objj_msgSend(_2b,"_startedLoading"); +_ignoreLoadStart=YES; +_ignoreLoadEnd=NO; +_url=_mainFrameURL; +_html=null; +objj_msgSend(_2b,"_load"); +} +}),new objj_method(sel_getUid("_load"),function(_2d,_2e){ +with(_2d){ +if(_url){ +_iframe.src=_url; +}else{ +if(_html){ +_iframe.src=""; +if(_loadHTMLStringTimer!==nil){ +window.clearTimeout(_loadHTMLStringTimer); +_loadHTMLStringTimer=nil; +} +_loadHTMLStringTimer=window.setTimeout(function(){ +var win=objj_msgSend(_2d,"DOMWindow"); +if(win){ +win.document.write(_html); +} +window.setTimeout(_loadCallback,1); +},0); +} +} +} +}),new objj_method(sel_getUid("_startedLoading"),function(_2f,_30){ +with(_2f){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWebViewProgressStartedNotification,_2f); +if(objj_msgSend(_frameLoadDelegate,"respondsToSelector:",sel_getUid("webView:didStartProvisionalLoadForFrame:"))){ +objj_msgSend(_frameLoadDelegate,"webView:didStartProvisionalLoadForFrame:",_2f,nil); +} +} +}),new objj_method(sel_getUid("_finishedLoading"),function(_31,_32){ +with(_31){ +objj_msgSend(_31,"_resizeWebFrame"); +objj_msgSend(_31,"_attachScrollEventIfNecessary"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWebViewProgressFinishedNotification,_31); +if(objj_msgSend(_frameLoadDelegate,"respondsToSelector:",sel_getUid("webView:didFinishLoadForFrame:"))){ +objj_msgSend(_frameLoadDelegate,"webView:didFinishLoadForFrame:",_31,nil); +} +} +}),new objj_method(sel_getUid("mainFrameURL"),function(_33,_34){ +with(_33){ +return _mainFrameURL; +} +}),new objj_method(sel_getUid("setMainFrameURL:"),function(_35,_36,_37){ +with(_35){ +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=_37; +objj_msgSend(_forwardStack,"removeAllObjects"); +objj_msgSend(_35,"_loadMainFrameURL"); +} +}),new objj_method(sel_getUid("goBack"),function(_38,_39){ +with(_38){ +if(_backwardStack.length>0){ +if(_mainFrameURL){ +objj_msgSend(_forwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=objj_msgSend(_backwardStack,"lastObject"); +objj_msgSend(_backwardStack,"removeLastObject"); +objj_msgSend(_38,"_loadMainFrameURL"); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("goForward"),function(_3a,_3b){ +with(_3a){ +if(_forwardStack.length>0){ +if(_mainFrameURL){ +objj_msgSend(_backwardStack,"addObject:",_mainFrameURL); +} +_mainFrameURL=objj_msgSend(_forwardStack,"lastObject"); +objj_msgSend(_forwardStack,"removeLastObject"); +objj_msgSend(_3a,"_loadMainFrameURL"); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("canGoBack"),function(_3c,_3d){ +with(_3c){ +return (_backwardStack.length>0); +} +}),new objj_method(sel_getUid("canGoForward"),function(_3e,_3f){ +with(_3e){ +return (_forwardStack.length>0); +} +}),new objj_method(sel_getUid("backForwardList"),function(_40,_41){ +with(_40){ +return {back:_backwardStack,forward:_forwardStack}; +} +}),new objj_method(sel_getUid("close"),function(_42,_43){ +with(_42){ +_iframe.parentNode.removeChild(_iframe); +} +}),new objj_method(sel_getUid("DOMWindow"),function(_44,_45){ +with(_44){ +return (_iframe.contentDocument&&_iframe.contentDocument.defaultView)||_iframe.contentWindow; +} +}),new objj_method(sel_getUid("windowScriptObject"),function(_46,_47){ +with(_46){ +var win=objj_msgSend(_46,"DOMWindow"); +if(!_wso||win!=objj_msgSend(_wso,"window")){ +if(win){ +_wso=objj_msgSend(objj_msgSend(CPWebScriptObject,"alloc"),"initWithWindow:",win); +}else{ +_wso=nil; +} +} +return _wso; +} +}),new objj_method(sel_getUid("stringByEvaluatingJavaScriptFromString:"),function(_48,_49,_4a){ +with(_48){ +var _4b=objj_msgSend(_48,"objectByEvaluatingJavaScriptFromString:",_4a); +return _4b?String(_4b):nil; +} +}),new objj_method(sel_getUid("objectByEvaluatingJavaScriptFromString:"),function(_4c,_4d,_4e){ +with(_4c){ +return objj_msgSend(objj_msgSend(_4c,"windowScriptObject"),"evaluateWebScript:",_4e); +} +}),new objj_method(sel_getUid("computedStyleForElement:pseudoElement:"),function(_4f,_50,_51,_52){ +with(_4f){ +var win=objj_msgSend(objj_msgSend(_4f,"windowScriptObject"),"window"); +if(win){ +return win.document.defaultView.getComputedStyle(_51,_52); +} +return nil; +} +}),new objj_method(sel_getUid("drawsBackground"),function(_53,_54){ +with(_53){ +return _iframe.style.backgroundColor!=""; +} +}),new objj_method(sel_getUid("setDrawsBackground:"),function(_55,_56,_57){ +with(_55){ +_iframe.style.backgroundColor=_57?"white":""; +} +}),new objj_method(sel_getUid("takeStringURLFrom:"),function(_58,_59,_5a){ +with(_58){ +objj_msgSend(_58,"setMainFrameURL:",objj_msgSend(_5a,"stringValue")); +} +}),new objj_method(sel_getUid("goBack:"),function(_5b,_5c,_5d){ +with(_5b){ +objj_msgSend(_5b,"goBack"); +} +}),new objj_method(sel_getUid("goForward:"),function(_5e,_5f,_60){ +with(_5e){ +objj_msgSend(_5e,"goForward"); +} +}),new objj_method(sel_getUid("stopLoading:"),function(_61,_62,_63){ +with(_61){ +} +}),new objj_method(sel_getUid("reload:"),function(_64,_65,_66){ +with(_64){ +objj_msgSend(_64,"_loadMainFrameURL"); +} +}),new objj_method(sel_getUid("print:"),function(_67,_68,_69){ +with(_67){ +try{ +objj_msgSend(_67,"DOMWindow").print(); +} +catch(e){ +alert("Please click the webpage and select \"Print\" from the \"File\" menu"); +} +} +}),new objj_method(sel_getUid("downloadDelegate"),function(_6a,_6b){ +with(_6a){ +return _downloadDelegate; +} +}),new objj_method(sel_getUid("setDownloadDelegate:"),function(_6c,_6d,_6e){ +with(_6c){ +_downloadDelegate=_6e; +} +}),new objj_method(sel_getUid("frameLoadDelegate"),function(_6f,_70){ +with(_6f){ +return _frameLoadDelegate; +} +}),new objj_method(sel_getUid("setFrameLoadDelegate:"),function(_71,_72,_73){ +with(_71){ +_frameLoadDelegate=_73; +} +}),new objj_method(sel_getUid("policyDelegate"),function(_74,_75){ +with(_74){ +return _policyDelegate; +} +}),new objj_method(sel_getUid("setPolicyDelegate:"),function(_76,_77,_78){ +with(_76){ +_policyDelegate=_78; +} +}),new objj_method(sel_getUid("resourceLoadDelegate"),function(_79,_7a){ +with(_79){ +return _resourceLoadDelegate; +} +}),new objj_method(sel_getUid("setResourceLoadDelegate:"),function(_7b,_7c,_7d){ +with(_7b){ +_resourceLoadDelegate=_7d; +} +}),new objj_method(sel_getUid("UIDelegate"),function(_7e,_7f){ +with(_7e){ +return _UIDelegate; +} +}),new objj_method(sel_getUid("setUIDelegate:"),function(_80,_81,_82){ +with(_80){ +_UIDelegate=_82; +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPWebScriptObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_window")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithWindow:"),function(_83,_84,_85){ +with(_83){ +if(_83=objj_msgSendSuper({receiver:_83,super_class:objj_getClass("CPWebScriptObject").super_class},"init")){ +_window=_85; +} +return _83; +} +}),new objj_method(sel_getUid("callWebScriptMethod:withArguments:"),function(_86,_87,_88,_89){ +with(_86){ +if(typeof _window[_88]=="function"){ +try{ +return _window[_88].apply(_89); +} +catch(e){ +} +} +return undefined; +} +}),new objj_method(sel_getUid("evaluateWebScript:"),function(_8a,_8b,_8c){ +with(_8a){ +try{ +return _window.eval(_8c); +} +catch(e){ +} +return undefined; +} +}),new objj_method(sel_getUid("window"),function(_8d,_8e){ +with(_8d){ +return _window; +} +})]); +var _1=objj_getClass("CPWebView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPWebView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_8f,_90,_91){ +with(_8f){ +_8f=objj_msgSendSuper({receiver:_8f,super_class:objj_getClass("CPWebView").super_class},"initWithCoder:",_91); +if(_8f){ +_mainFrameURL=nil; +_backwardStack=[]; +_forwardStack=[]; +_scrollMode=CPWebViewScrollNative; +objj_msgSend(_8f,"setBackgroundColor:",objj_msgSend(CPColor,"whiteColor")); +} +return _8f; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_92,_93,_94){ +with(_92){ +var _95=_subviews; +_subviews=[]; +objj_msgSendSuper({receiver:_92,super_class:objj_getClass("CPWebView").super_class},"encodeWithCoder:",_94); +_subviews=_95; +} +})]); +p;20;CPWindowController.jt;9176;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;13;CPResponder.ji;10;CPWindow.ji;12;CPDocument.jt;9055; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPWindow.j",YES); +objj_executeFile("CPDocument.j",YES); +var _1=objj_allocateClassPair(CPResponder,"CPWindowController"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_window"),new objj_ivar("_documents"),new objj_ivar("_document"),new objj_ivar("_shouldCloseDocument"),new objj_ivar("_supportsMultipleDocuments"),new objj_ivar("_cibOwner"),new objj_ivar("_windowCibName"),new objj_ivar("_windowCibPath"),new objj_ivar("_viewController"),new objj_ivar("_viewControllerContainerView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithWindow:",nil); +} +}),new objj_method(sel_getUid("initWithWindow:"),function(_5,_6,_7){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPWindowController").super_class},"init"); +if(_5){ +objj_msgSend(_5,"setWindow:",_7); +objj_msgSend(_5,"setShouldCloseDocument:",NO); +objj_msgSend(_5,"setNextResponder:",CPApp); +_documents=[]; +} +return _5; +} +}),new objj_method(sel_getUid("initWithWindowCibName:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(_8,"initWithWindowCibName:owner:",_a,_8); +} +}),new objj_method(sel_getUid("initWithWindowCibName:owner:"),function(_b,_c,_d,_e){ +with(_b){ +_b=objj_msgSend(_b,"initWithWindow:",nil); +if(_b){ +_cibOwner=_e; +_windowCibName=_d; +} +return _b; +} +}),new objj_method(sel_getUid("initWithWindowCibPath:owner:"),function(_f,_10,_11,_12){ +with(_f){ +_f=objj_msgSend(_f,"initWithWindow:",nil); +if(_f){ +_cibOwner=_12; +_windowCibPath=_11; +} +return _f; +} +}),new objj_method(sel_getUid("loadWindow"),function(_13,_14){ +with(_13){ +if(_window){ +return; +} +objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"loadCibFile:externalNameTable:",objj_msgSend(_13,"windowCibPath"),objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_cibOwner,CPCibOwner)); +} +}),new objj_method(sel_getUid("showWindow:"),function(_15,_16,_17){ +with(_15){ +var _18=objj_msgSend(_15,"window"); +if(objj_msgSend(_18,"respondsToSelector:",sel_getUid("becomesKeyOnlyIfNeeded"))&&objj_msgSend(_18,"becomesKeyOnlyIfNeeded")){ +objj_msgSend(_18,"orderFront:",_17); +}else{ +objj_msgSend(_18,"makeKeyAndOrderFront:",_17); +} +} +}),new objj_method(sel_getUid("isWindowLoaded"),function(_19,_1a){ +with(_19){ +return _window!==nil; +} +}),new objj_method(sel_getUid("window"),function(_1b,_1c){ +with(_1b){ +if(!_window){ +objj_msgSend(_1b,"windowWillLoad"); +objj_msgSend(_document,"windowControllerWillLoadCib:",_1b); +objj_msgSend(_1b,"loadWindow"); +if(_window===nil&&objj_msgSend(_cibOwner,"isKindOfClass:",objj_msgSend(CPDocument,"class"))){ +objj_msgSend(_1b,"setWindow:",objj_msgSend(_cibOwner,"valueForKey:","window")); +} +if(!_window){ +var _1d=objj_msgSend(CPString,"stringWithFormat:","Window for %@ could not be loaded from Cib or no window specified. Override loadWindow to load the window manually.",_1b); +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,_1d); +} +objj_msgSend(_1b,"windowDidLoad"); +objj_msgSend(_document,"windowControllerDidLoadCib:",_1b); +objj_msgSend(_1b,"synchronizeWindowTitleWithDocumentName"); +} +return _window; +} +}),new objj_method(sel_getUid("setWindow:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_window,"setWindowController:",nil); +_window=_20; +objj_msgSend(_window,"setWindowController:",_1e); +objj_msgSend(_window,"setNextResponder:",_1e); +} +}),new objj_method(sel_getUid("windowDidLoad"),function(_21,_22){ +with(_21){ +} +}),new objj_method(sel_getUid("windowWillLoad"),function(_23,_24){ +with(_23){ +} +}),new objj_method(sel_getUid("setDocument:"),function(_25,_26,_27){ +with(_25){ +if(_document===_27){ +return; +} +var _28=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_document){ +if(!objj_msgSend(_25,"supportsMultipleDocuments")){ +objj_msgSend(_25,"removeDocument:",_document); +} +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentWillSaveNotification,_document); +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentDidSaveNotification,_document); +objj_msgSend(_28,"removeObserver:name:object:",_25,CPDocumentDidFailToSaveNotification,_document); +} +_document=_27; +if(_document){ +objj_msgSend(_25,"addDocument:",_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentWillSave:"),CPDocumentWillSaveNotification,_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentDidSave:"),CPDocumentDidSaveNotification,_document); +objj_msgSend(_28,"addObserver:selector:name:object:",_25,sel_getUid("_documentDidFailToSave:"),CPDocumentDidFailToSaveNotification,_document); +objj_msgSend(_25,"setDocumentEdited:",objj_msgSend(_document,"isDocumentEdited")); +} +var _29=objj_msgSend(_document,"viewControllerForWindowController:",_25); +if(_29){ +objj_msgSend(_25,"setViewController:",_29); +} +objj_msgSend(_25,"synchronizeWindowTitleWithDocumentName"); +} +}),new objj_method(sel_getUid("setSupportsMultipleDocuments:"),function(_2a,_2b,_2c){ +with(_2a){ +_supportsMultipleDocuments=_2c; +} +}),new objj_method(sel_getUid("supportsMultipleDocuments"),function(_2d,_2e){ +with(_2d){ +return _supportsMultipleDocuments; +} +}),new objj_method(sel_getUid("addDocument:"),function(_2f,_30,_31){ +with(_2f){ +if(_31&&!objj_msgSend(_documents,"containsObject:",_31)){ +objj_msgSend(_documents,"addObject:",_31); +} +} +}),new objj_method(sel_getUid("removeDocument:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_documents,"indexOfObjectIdenticalTo:",_34); +if(_35===CPNotFound){ +return; +} +objj_msgSend(_documents,"removeObjectAtIndex:",_35); +if(_document===_34&&objj_msgSend(_documents,"count")){ +objj_msgSend(_32,"setDocument:",objj_msgSend(_documents,"objectAtIndex:",MIN(_35,objj_msgSend(_documents,"count")-1))); +} +} +}),new objj_method(sel_getUid("removeDocumentAndCloseIfNecessary:"),function(_36,_37,_38){ +with(_36){ +objj_msgSend(_36,"removeDocument:",_38); +if(!objj_msgSend(_documents,"count")){ +objj_msgSend(_36,"close"); +} +} +}),new objj_method(sel_getUid("documents"),function(_39,_3a){ +with(_39){ +return _documents; +} +}),new objj_method(sel_getUid("setViewControllerContainerView:"),function(_3b,_3c,_3d){ +with(_3b){ +_viewControllerContainerView=_3d; +} +}),new objj_method(sel_getUid("viewControllerContainerView"),function(_3e,_3f){ +with(_3e){ +return _viewControllerContainerView; +} +}),new objj_method(sel_getUid("setViewController:"),function(_40,_41,_42){ +with(_40){ +var _43=objj_msgSend(_40,"viewControllerContainerView")||objj_msgSend(objj_msgSend(_40,"window"),"contentView"),_44=objj_msgSend(_viewController,"view"),_45=_44?objj_msgSend(_44,"frame"):objj_msgSend(_43,"bounds"); +objj_msgSend(_44,"removeFromSuperview"); +_viewController=_42; +_44=objj_msgSend(_viewController,"view"); +if(_44){ +objj_msgSend(_44,"setFrame:",_45); +objj_msgSend(_43,"addSubview:",_44); +} +} +}),new objj_method(sel_getUid("viewController"),function(_46,_47){ +with(_46){ +return _viewController; +} +}),new objj_method(sel_getUid("_documentWillSave:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(objj_msgSend(_48,"window"),"setDocumentSaving:",YES); +} +}),new objj_method(sel_getUid("_documentDidSave:"),function(_4b,_4c,_4d){ +with(_4b){ +objj_msgSend(objj_msgSend(_4b,"window"),"setDocumentSaving:",NO); +} +}),new objj_method(sel_getUid("_documentDidFailToSave:"),function(_4e,_4f,_50){ +with(_4e){ +objj_msgSend(objj_msgSend(_4e,"window"),"setDocumentSaving:",NO); +} +}),new objj_method(sel_getUid("document"),function(_51,_52){ +with(_51){ +return _document; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_53,_54,_55){ +with(_53){ +objj_msgSend(objj_msgSend(_53,"window"),"setDocumentEdited:",_55); +} +}),new objj_method(sel_getUid("close"),function(_56,_57){ +with(_56){ +objj_msgSend(objj_msgSend(_56,"window"),"close"); +} +}),new objj_method(sel_getUid("setShouldCloseDocument:"),function(_58,_59,_5a){ +with(_58){ +_shouldCloseDocument=_5a; +} +}),new objj_method(sel_getUid("shouldCloseDocument"),function(_5b,_5c){ +with(_5b){ +return _shouldCloseDocument; +} +}),new objj_method(sel_getUid("owner"),function(_5d,_5e){ +with(_5d){ +return _cibOwner; +} +}),new objj_method(sel_getUid("windowCibName"),function(_5f,_60){ +with(_5f){ +if(_windowCibName){ +return _windowCibName; +} +return objj_msgSend(objj_msgSend(_windowCibPath,"lastPathComponent"),"stringByDeletingPathExtension"); +} +}),new objj_method(sel_getUid("windowCibPath"),function(_61,_62){ +with(_61){ +if(_windowCibPath){ +return _windowCibPath; +} +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_windowCibName+".cib"); +} +}),new objj_method(sel_getUid("synchronizeWindowTitleWithDocumentName"),function(_63,_64){ +with(_63){ +if(!_document||!_window){ +return; +} +objj_msgSend(_window,"setTitle:",objj_msgSend(_63,"windowTitleForDocumentDisplayName:",objj_msgSend(_document,"displayName"))); +} +}),new objj_method(sel_getUid("windowTitleForDocumentDisplayName:"),function(_65,_66,_67){ +with(_65){ +return _67; +} +})]); +p;20;_CPCibClassSwapper.jt;1345;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1274; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="_CPCibClassSwapperClassNameKey",_2="_CPCibClassSwapperOriginalClassNameKey"; +var _3=objj_allocateClassPair(CPObject,"_CPCibClassSwapper"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_4,[new objj_method(sel_getUid("allocObjectWithCoder:className:"),function(_5,_6,_7,_8){ +with(_5){ +var _9=objj_msgSend(_7,"classForClassName:",_8); +if(!_9){ +_9=objj_lookUpClass(_8); +if(!_9){ +return nil; +} +} +return objj_msgSend(_9,"alloc"); +} +}),new objj_method(sel_getUid("allocWithCoder:"),function(_a,_b,_c){ +with(_a){ +if(objj_msgSend(_c,"respondsToSelector:",sel_getUid("usesOriginalClasses"))&&objj_msgSend(_c,"usesOriginalClasses")){ +var _d=objj_msgSend(_c,"decodeObjectForKey:",_2),_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,_d); +}else{ +var _d=objj_msgSend(_c,"decodeObjectForKey:",_1),_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,_d); +if(!_e){ +CPLog.error("Unable to find class "+_d+" in cib file."); +_e=objj_msgSend(_a,"allocObjectWithCoder:className:",_c,objj_msgSend(_c,"decodeObjectForKey:",_2)); +} +} +if(!_e){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unable to find class "+_d+" in cib file."); +} +return _e; +} +})]); +p;20;_CPCibCustomObject.jt;1717;@STATIC;1.0;I;21;Foundation/CPObject.jt;1672; +objj_executeFile("Foundation/CPObject.j",NO); +var _1="_CPCibCustomObjectClassName"; +var _2=objj_allocateClassPair(CPObject,"_CPCibCustomObject"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_className")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("customClassName"),function(_4,_5){ +with(_4){ +return _className; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_6,_7,_8){ +with(_6){ +_className=_8; +} +}),new objj_method(sel_getUid("description"),function(_9,_a){ +with(_9){ +return objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPCibCustomObject").super_class},"description")+" ("+objj_msgSend(_9,"customClassName")+")"; +} +})]); +var _2=objj_getClass("_CPCibCustomObject"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomObject\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("_CPCibCustomObject").super_class},"init"); +if(_b){ +_className=objj_msgSend(_d,"decodeObjectForKey:",_1); +} +return _b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e,_f,_10){ +with(_e){ +objj_msgSend(_10,"encodeObject:forKey:",_className,_1); +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_11,_12){ +with(_11){ +var _13=CPClassFromString(_className); +if(_13===objj_msgSend(_11,"class")){ +_className="CPObject"; +return _11; +} +if(!_13){ +_13=objj_msgSend(CPObject,"class"); +} +if(_13===objj_msgSend(CPApplication,"class")){ +return objj_msgSend(CPApplication,"sharedApplication"); +} +return objj_msgSend(objj_msgSend(_13,"alloc"),"init"); +} +})]); +p;22;_CPCibCustomResource.jt;3116;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;3045; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="_CPCibCustomResourceClassNameKey",_2="_CPCibCustomResourceResourceNameKey",_3="_CPCibCustomResourcePropertiesKey"; +var _4=objj_allocateClassPair(CPObject,"_CPCibCustomResource"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_className"),new objj_ivar("_resourceName"),new objj_ivar("_properties")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithClassName:resourceName:properties:"),function(_6,_7,_8,_9,_a){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("_CPCibCustomResource").super_class},"init"); +if(_6){ +_className=_8; +_resourceName=_9; +_properties=_a; +} +return _6; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("_CPCibCustomResource").super_class},"init"); +if(_b){ +_className=objj_msgSend(_d,"decodeObjectForKey:",_1); +_resourceName=objj_msgSend(_d,"decodeObjectForKey:",_2); +_properties=objj_msgSend(_d,"decodeObjectForKey:",_3); +} +return _b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_e,_f,_10){ +with(_e){ +objj_msgSend(_10,"encodeObject:forKey:",_className,_1); +objj_msgSend(_10,"encodeObject:forKey:",_resourceName,_2); +objj_msgSend(_10,"encodeObject:forKey:",_properties,_3); +} +}),new objj_method(sel_getUid("awakeAfterUsingCoder:"),function(_11,_12,_13){ +with(_11){ +if(objj_msgSend(_13,"respondsToSelector:",sel_getUid("bundle"))&&(!objj_msgSend(_13,"respondsToSelector:",sel_getUid("awakenCustomResources"))||objj_msgSend(_13,"awakenCustomResources"))){ +if(_className==="CPImage"){ +return objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(_13,"bundle"),"pathForResource:",_resourceName),_properties.valueForKey("size")); +} +} +return _11; +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("imageResourceWithName:size:"),function(_14,_15,_16,_17){ +with(_14){ +return objj_msgSend(objj_msgSend(_14,"alloc"),"initWithClassName:resourceName:properties:","CPImage",_16,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_17,"size")); +} +})]); +var _4=objj_getClass("_CPCibCustomResource"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomResource\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("filename"),function(_18,_19){ +with(_18){ +return objj_msgSend(objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_resourceName); +} +}),new objj_method(sel_getUid("size"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_properties,"objectForKey:","size"); +} +}),new objj_method(sel_getUid("isThreePartImage"),function(_1c,_1d){ +with(_1c){ +return NO; +} +}),new objj_method(sel_getUid("isNinePartImage"),function(_1e,_1f){ +with(_1e){ +return NO; +} +}),new objj_method(sel_getUid("loadStatus"),function(_20,_21){ +with(_20){ +return CPImageLoadStatusCompleted; +} +}),new objj_method(sel_getUid("delegate"),function(_22,_23){ +with(_22){ +return nil; +} +})]); +p;18;_CPCibCustomView.jt;2402;@STATIC;1.0;i;8;CPView.jt;2371; +objj_executeFile("CPView.j",YES); +var _1=objj_allocateClassPair(CPView,"_CPCibCustomView"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_className")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("customClassName"),function(_3,_4){ +with(_3){ +return _className; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_5,_6,_7){ +with(_5){ +if(_className===_7){ +return; +} +_className=_7; +objj_msgSend(_5,"setNeedsDisplay:",YES); +objj_msgSend(_5,"setNeedsLayout"); +} +})]); +var _8="_CPCibCustomViewClassNameKey"; +var _1=objj_getClass("_CPCibCustomView"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomView\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_9,_a,_b){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPCibCustomView").super_class},"initWithCoder:",_b); +if(_9){ +_className=objj_msgSend(_b,"decodeObjectForKey:",_8); +} +return _9; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPCibCustomView").super_class},"encodeWithCoder:",_e); +objj_msgSend(_e,"encodeObject:forKey:",_className,_8); +} +}),new objj_method(sel_getUid("customClassName"),function(_f,_10){ +with(_f){ +return _className; +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_11,_12){ +with(_11){ +var _13=CPClassFromString(_className); +if(!_13){ +_13=objj_msgSend(CPView,"class"); +} +if(_13===objj_msgSend(_11,"class")){ +_className="CPView"; +return _11; +} +var _14=objj_msgSend(objj_msgSend(_13,"alloc"),"initWithFrame:",objj_msgSend(_11,"frame")); +if(_14){ +objj_msgSend(_14,"setBounds:",objj_msgSend(_11,"bounds")); +var _15=objj_msgSend(_11,"subviews"),_16=0,_17=_15.length; +for(;_16<_17;++_16){ +objj_msgSend(_14,"addSubview:",_15[_16]); +} +objj_msgSend(_14,"setAutoresizingMask:",objj_msgSend(_11,"autoresizingMask")); +objj_msgSend(_14,"setAutoresizesSubviews:",objj_msgSend(_11,"autoresizesSubviews")); +objj_msgSend(_14,"setHitTests:",objj_msgSend(_11,"hitTests")); +objj_msgSend(_14,"setHidden:",objj_msgSend(_11,"isHidden")); +objj_msgSend(_14,"setAlphaValue:",objj_msgSend(_11,"alphaValue")); +objj_msgSend(_superview,"replaceSubview:with:",_11,_14); +objj_msgSend(_14,"setBackgroundColor:",objj_msgSend(_11,"backgroundColor")); +} +return _14; +} +})]); +p;23;_CPCibKeyedUnarchiver.jt;1485;@STATIC;1.0;I;30;Foundation/CPKeyedUnarchiver.jt;1431; +objj_executeFile("Foundation/CPKeyedUnarchiver.j",NO); +var _1=objj_allocateClassPair(CPKeyedUnarchiver,"_CPCibKeyedUnarchiver"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_bundle"),new objj_ivar("_awakenCustomResources"),new objj_ivar("_externalObjectsForProxyIdentifiers")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initForReadingWithData:bundle:awakenCustomResources:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPCibKeyedUnarchiver").super_class},"initForReadingWithData:",_5); +if(_3){ +_bundle=_6; +_awakenCustomResources=_7; +objj_msgSend(_3,"setDelegate:",_3); +} +return _3; +} +}),new objj_method(sel_getUid("bundle"),function(_8,_9){ +with(_8){ +return _bundle; +} +}),new objj_method(sel_getUid("awakenCustomResources"),function(_a,_b){ +with(_a){ +return _awakenCustomResources; +} +}),new objj_method(sel_getUid("setExternalObjectsForProxyIdentifiers:"),function(_c,_d,_e){ +with(_c){ +_externalObjectsForProxyIdentifiers=_e; +} +}),new objj_method(sel_getUid("externalObjectForProxyIdentifier:"),function(_f,_10,_11){ +with(_f){ +return objj_msgSend(_externalObjectsForProxyIdentifiers,"objectForKey:",_11); +} +}),new objj_method(sel_getUid("replaceObjectAtUID:withObject:"),function(_12,_13,_14,_15){ +with(_12){ +_objects[_14]=_15; +} +}),new objj_method(sel_getUid("objectAtUID:"),function(_16,_17,_18){ +with(_16){ +return _objects[_18]; +} +})]); +p;18;_CPCibObjectData.jt;6216;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;22;CPCibOutletConnector.jt;6033; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPCib.j",YES); +objj_executeFile("CPCibConnector.j",YES); +objj_executeFile("CPCibControlConnector.j",YES); +objj_executeFile("CPCibOutletConnector.j",YES); +var _1=objj_allocateClassPair(CPObject,"_CPCibObjectData"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_namesKeys"),new objj_ivar("_namesValues"),new objj_ivar("_accessibilityConnectors"),new objj_ivar("_accessibilityOidsKeys"),new objj_ivar("_accessibilityOidsValues"),new objj_ivar("_classesKeys"),new objj_ivar("_classesValues"),new objj_ivar("_connections"),new objj_ivar("_fontManager"),new objj_ivar("_framework"),new objj_ivar("_nextOid"),new objj_ivar("_objectsKeys"),new objj_ivar("_objectsValues"),new objj_ivar("_oidKeys"),new objj_ivar("_oidValues"),new objj_ivar("_fileOwner"),new objj_ivar("_visibleWindows"),new objj_ivar("_replacementObjects")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPCibObjectData").super_class},"init"); +if(_3){ +_namesKeys=[]; +_namesValues=[]; +_classesKeys=[]; +_classesValues=[]; +_connections=[]; +_framework=""; +_nextOid=[]; +_objectsKeys=[]; +_objectsValues=[]; +_oidKeys=[]; +_oidValues=[]; +_fileOwner=nil; +_visibleWindows=objj_msgSend(CPSet,"set"); +} +return _3; +} +}),new objj_method(sel_getUid("displayVisibleWindows"),function(_5,_6){ +with(_5){ +var _7=nil,_8=objj_msgSend(_visibleWindows,"objectEnumerator"); +while(_7=objj_msgSend(_8,"nextObject")){ +objj_msgSend(_replacementObjects[objj_msgSend(_7,"UID")],"makeKeyAndOrderFront:",_5); +} +} +})]); +var _9="_CPCibObjectDataNamesKeysKey",_a="_CPCibObjectDataNamesValuesKey",_b="_CPCibObjectDataAccessibilityConnectors",_c="_CPCibObjectDataAccessibilityOidsKeys",_d="_CPCibObjectDataAccessibilityOidsValues",_e="_CPCibObjectDataClassesKeysKey",_f="_CPCibObjectDataClassesValuesKey",_10="_CPCibObjectDataConnectionsKey",_11="_CPCibObjectDataFontManagerKey",_12="_CPCibObjectDataFrameworkKey",_13="_CPCibObjectDataNextOidKey",_14="_CPCibObjectDataObjectsKeysKey",_15="_CPCibObjectDataObjectsValuesKey",_16="_CPCibObjectDataOidKeysKey",_17="_CPCibObjectDataOidValuesKey",_18="_CPCibObjectDataFileOwnerKey",_19="_CPCibObjectDataVisibleWindowsKey"; +var _1=objj_getClass("_CPCibObjectData"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibObjectData\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_1a,_1b,_1c){ +with(_1a){ +_1a=objj_msgSendSuper({receiver:_1a,super_class:objj_getClass("_CPCibObjectData").super_class},"init"); +if(_1a){ +_replacementObjects={}; +_namesKeys=objj_msgSend(_1c,"decodeObjectForKey:",_9); +_namesValues=objj_msgSend(_1c,"decodeObjectForKey:",_a); +_classesKeys=objj_msgSend(_1c,"decodeObjectForKey:",_e); +_classesValues=objj_msgSend(_1c,"decodeObjectForKey:",_f); +_connections=objj_msgSend(_1c,"decodeObjectForKey:",_10); +_framework=objj_msgSend(_1c,"decodeObjectForKey:",_12); +_nextOid=objj_msgSend(_1c,"decodeIntForKey:",_13); +_objectsKeys=objj_msgSend(_1c,"decodeObjectForKey:",_14); +_objectsValues=objj_msgSend(_1c,"decodeObjectForKey:",_15); +_oidKeys=objj_msgSend(_1c,"decodeObjectForKey:",_16); +_oidValues=objj_msgSend(_1c,"decodeObjectForKey:",_17); +_fileOwner=objj_msgSend(_1c,"decodeObjectForKey:",_18); +_visibleWindows=objj_msgSend(_1c,"decodeObjectForKey:",_19); +} +return _1a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_1f,"encodeObject:forKey:",_namesKeys,_9); +objj_msgSend(_1f,"encodeObject:forKey:",_namesValues,_a); +objj_msgSend(_1f,"encodeObject:forKey:",_classesKeys,_e); +objj_msgSend(_1f,"encodeObject:forKey:",_classesValues,_f); +objj_msgSend(_1f,"encodeObject:forKey:",_connections,_10); +objj_msgSend(_1f,"encodeObject:forKey:",_framework,_12); +objj_msgSend(_1f,"encodeInt:forKey:",_nextOid,_13); +objj_msgSend(_1f,"encodeObject:forKey:",_objectsKeys,_14); +objj_msgSend(_1f,"encodeObject:forKey:",_objectsValues,_15); +objj_msgSend(_1f,"encodeObject:forKey:",_oidKeys,_16); +objj_msgSend(_1f,"encodeObject:forKey:",_oidValues,_17); +objj_msgSend(_1f,"encodeObject:forKey:",_fileOwner,_18); +objj_msgSend(_1f,"encodeObject:forKey:",_visibleWindows,_19); +} +}),new objj_method(sel_getUid("instantiateWithOwner:topLevelObjects:"),function(_20,_21,_22,_23){ +with(_20){ +var _24=objj_msgSend(_objectsKeys,"count"); +while(_24--){ +var _25=_objectsKeys[_24],_26=_objectsValues[_24],_27=_25; +if(objj_msgSend(_25,"respondsToSelector:",sel_getUid("_cibInstantiate"))){ +var _27=objj_msgSend(_25,"_cibInstantiate"); +if(_27!==_25){ +_replacementObjects[objj_msgSend(_25,"UID")]=_27; +if(objj_msgSend(_27,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +var _28=objj_msgSend(_27,"superview"); +if(objj_msgSend(_28,"isKindOfClass:",objj_msgSend(CPClipView,"class"))){ +var _29=objj_msgSend(_28,"superview"); +if(objj_msgSend(_29,"isKindOfClass:",objj_msgSend(CPScrollView,"class"))){ +objj_msgSend(_29,"setDocumentView:",_27); +} +} +} +} +} +if(_23&&_26===_fileOwner&&_25!==_fileOwner){ +_23.push(_27); +} +} +} +}),new objj_method(sel_getUid("establishConnectionsWithOwner:topLevelObjects:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +_replacementObjects[objj_msgSend(_fileOwner,"UID")]=_2c; +var _2e=0,_2f=_connections.length; +for(;_2e<_2f;++_2e){ +var _30=_connections[_2e]; +objj_msgSend(_30,"replaceObjects:",_replacementObjects); +objj_msgSend(_30,"establishConnection"); +} +} +}),new objj_method(sel_getUid("awakeWithOwner:topLevelObjects:"),function(_31,_32,_33,_34){ +with(_31){ +var _35=objj_msgSend(_objectsKeys,"count"); +while(_35--){ +var _36=_objectsKeys[_35],_37=_replacementObjects[objj_msgSend(_36,"UID")]; +if(_37){ +_36=_37; +} +if(_36!==_33&&objj_msgSend(_36,"respondsToSelector:",sel_getUid("awakeFromCib"))){ +objj_msgSend(_36,"awakeFromCib"); +} +} +if(objj_msgSend(_33,"respondsToSelector:",sel_getUid("awakeFromCib"))){ +objj_msgSend(_33,"awakeFromCib"); +} +} +})]); +p;19;_CPCibProxyObject.jt;1009;@STATIC;1.0;I;21;Foundation/CPObject.jt;965; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"_CPCibProxyObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_identifier")]); +objj_registerClassPair(_1); +var _3="CPIdentifier"; +var _1=objj_getClass("_CPCibProxyObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"_CPCibProxyObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("_CPCibProxyObject").super_class},"init"); +if(_4){ +_identifier=objj_msgSend(_6,"decodeObjectForKey:",_3); +} +if(objj_msgSend(_6,"respondsToSelector:",sel_getUid("externalObjectForProxyIdentifier:"))){ +return objj_msgSend(_6,"externalObjectForProxyIdentifier:",_identifier); +} +return _4; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7,_8,_9){ +with(_7){ +objj_msgSend(_9,"encodeObject:forKey:",_identifier,_3); +} +})]); +p;22;_CPCibWindowTemplate.jt;4518;@STATIC;1.0;I;21;Foundation/CPObject.jt;4473; +objj_executeFile("Foundation/CPObject.j",NO); +var _1="_CPCibWindowTemplateMinSizeKey",_2="_CPCibWindowTemplateMaxSizeKey",_3="_CPCibWindowTemplateViewClassKey",_4="_CPCibWindowTemplateWindowClassKey",_5="_CPCibWindowTemplateWindowRectKey",_6="_CPCibWindowTempatStyleMaskKey",_7="_CPCibWindowTemplateWindowTitleKey",_8="_CPCibWindowTemplateWindowViewKey",_9="_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop"; +_CPCibWindowTemplateWindowIsFullPlatformWindowKey="_CPCibWindowTemplateWindowIsFullPlatformWindowKey"; +var _a=objj_allocateClassPair(CPObject,"_CPCibWindowTemplate"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_viewClass"),new objj_ivar("_windowClass"),new objj_ivar("_windowRect"),new objj_ivar("_windowStyleMask"),new objj_ivar("_windowTitle"),new objj_ivar("_windowView"),new objj_ivar("_windowAutorecalculatesKeyViewLoop"),new objj_ivar("_windowIsFullPlatformWindow")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("init"),function(_c,_d){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPCibWindowTemplate").super_class},"init"); +if(_c){ +_windowClass="CPWindow"; +_windowRect=CGRectMake(0,0,400,200); +_windowStyleMask=CPTitledWindowMask|CPClosableWindowMask|CPMiniaturizableWindowMask|CPResizableWindowMask; +_windowTitle="Window"; +_windowView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,400,200)); +_windowIsFullPlatformWindow=NO; +} +return _c; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_e,_f,_10){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPCibWindowTemplate").super_class},"init"); +if(_e){ +if(objj_msgSend(_10,"containsValueForKey:",_1)){ +_minSize=objj_msgSend(_10,"decodeSizeForKey:",_1); +} +if(objj_msgSend(_10,"containsValueForKey:",_2)){ +_maxSize=objj_msgSend(_10,"decodeSizeForKey:",_2); +} +_viewClass=objj_msgSend(_10,"decodeObjectForKey:",_3); +_windowClass=objj_msgSend(_10,"decodeObjectForKey:",_4); +_windowRect=objj_msgSend(_10,"decodeRectForKey:",_5); +_windowStyleMask=objj_msgSend(_10,"decodeIntForKey:",_6); +_windowTitle=objj_msgSend(_10,"decodeObjectForKey:",_7); +_windowView=objj_msgSend(_10,"decodeObjectForKey:",_8); +_windowAutorecalculatesKeyViewLoop=!!objj_msgSend(_10,"decodeObjectForKey:",_9); +_windowIsFullPlatformWindow=!!objj_msgSend(_10,"decodeObjectForKey:",_CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +return _e; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_11,_12,_13){ +with(_11){ +if(_minSize){ +objj_msgSend(_13,"encodeSize:forKey:",_minSize,_1); +} +if(_maxSize){ +objj_msgSend(_13,"encodeSize:forKey:",_maxSize,_2); +} +objj_msgSend(_13,"encodeObject:forKey:",_viewClass,_3); +objj_msgSend(_13,"encodeObject:forKey:",_windowClass,_4); +objj_msgSend(_13,"encodeRect:forKey:",_windowRect,_5); +objj_msgSend(_13,"encodeInt:forKey:",_windowStyleMask,_6); +objj_msgSend(_13,"encodeObject:forKey:",_windowTitle,_7); +objj_msgSend(_13,"encodeObject:forKey:",_windowView,_8); +if(_windowAutorecalculatesKeyViewLoop){ +objj_msgSend(_13,"encodeObject:forKey:",_windowAutorecalculatesKeyViewLoop,_9); +} +if(_windowIsFullPlatformWindow){ +objj_msgSend(_13,"encodeObject:forKey:",_windowIsFullPlatformWindow,_CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +} +}),new objj_method(sel_getUid("customClassName"),function(_14,_15){ +with(_14){ +return _windowClass; +} +}),new objj_method(sel_getUid("setCustomClassName:"),function(_16,_17,_18){ +with(_16){ +_windowClass=_18; +} +}),new objj_method(sel_getUid("windowClass"),function(_19,_1a){ +with(_19){ +return _windowClass; +} +}),new objj_method(sel_getUid("_cibInstantiate"),function(_1b,_1c){ +with(_1b){ +var _1d=CPClassFromString(objj_msgSend(_1b,"windowClass")); +var _1e=objj_msgSend(objj_msgSend(_1d,"alloc"),"initWithContentRect:styleMask:",_windowRect,_windowStyleMask); +if(_minSize){ +objj_msgSend(_1e,"setMinSize:",_minSize); +} +if(_maxSize){ +objj_msgSend(_1e,"setMaxSize:",_maxSize); +} +objj_msgSend(_1e,"setTitle:",_windowTitle); +objj_msgSend(_windowView,"setAutoresizesSubviews:",NO); +objj_msgSend(_1e,"setContentView:",_windowView); +objj_msgSend(_windowView,"setAutoresizesSubviews:",YES); +if(objj_msgSend(_viewClass,"isKindOfClass:",objj_msgSend(CPToolbar,"class"))){ +objj_msgSend(_1e,"setToolbar:",_viewClass); +} +objj_msgSend(_1e,"setAutorecalculatesKeyViewLoop:",_windowAutorecalculatesKeyViewLoop); +objj_msgSend(_1e,"setFullBridge:",_windowIsFullPlatformWindow); +return _1e; +} +})]); +p;7;CPCib.jt;5447;@STATIC;1.0;I;21;Foundation/CPObject.jI;28;Foundation/CPURLConnection.jI;25;Foundation/CPURLRequest.ji;20;_CPCibClassSwapper.ji;20;_CPCibCustomObject.ji;22;_CPCibCustomResource.ji;18;_CPCibCustomView.ji;23;_CPCibKeyedUnarchiver.ji;18;_CPCibObjectData.ji;19;_CPCibProxyObject.ji;22;_CPCibWindowTemplate.jt;5137; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPURLConnection.j",NO); +objj_executeFile("Foundation/CPURLRequest.j",NO); +objj_executeFile("_CPCibClassSwapper.j",YES); +objj_executeFile("_CPCibCustomObject.j",YES); +objj_executeFile("_CPCibCustomResource.j",YES); +objj_executeFile("_CPCibCustomView.j",YES); +objj_executeFile("_CPCibKeyedUnarchiver.j",YES); +objj_executeFile("_CPCibObjectData.j",YES); +objj_executeFile("_CPCibProxyObject.j",YES); +objj_executeFile("_CPCibWindowTemplate.j",YES); +CPCibOwner="CPCibOwner",CPCibTopLevelObjects="CPCibTopLevelObjects",CPCibReplacementClasses="CPCibReplacementClasses",CPCibExternalObjects="CPCibExternalObjects"; +var _1="CPCibObjectDataKey"; +var _2=objj_allocateClassPair(CPObject,"CPCib"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_data"),new objj_ivar("_bundle"),new objj_ivar("_awakenCustomResources"),new objj_ivar("_loadDelegate")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithContentsOfURL:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPCib").super_class},"init"); +if(_4){ +_data=objj_msgSend(CPURLConnection,"sendSynchronousRequest:returningResponse:",objj_msgSend(CPURLRequest,"requestWithURL:",_6),nil); +_awakenCustomResources=YES; +} +return _4; +} +}),new objj_method(sel_getUid("initWithContentsOfURL:loadDelegate:"),function(_7,_8,_9,_a){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPCib").super_class},"init"); +if(_7){ +objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",objj_msgSend(CPURLRequest,"requestWithURL:",_9),_7); +_awakenCustomResources=YES; +_loadDelegate=_a; +} +return _7; +} +}),new objj_method(sel_getUid("initWithCibNamed:bundle:"),function(_b,_c,_d,_e){ +with(_b){ +if(!objj_msgSend(_d,"hasSuffix:",".cib")){ +_d=objj_msgSend(_d,"stringByAppendingString:",".cib"); +} +_b=objj_msgSend(_b,"initWithContentsOfURL:",objj_msgSend(_e||objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_d)); +if(_b){ +_bundle=_e; +} +return _b; +} +}),new objj_method(sel_getUid("initWithCibNamed:bundle:loadDelegate:"),function(_f,_10,_11,_12,_13){ +with(_f){ +if(!objj_msgSend(_11,"hasSuffix:",".cib")){ +_11=objj_msgSend(_11,"stringByAppendingString:",".cib"); +} +_f=objj_msgSend(_f,"initWithContentsOfURL:loadDelegate:",objj_msgSend(_12||objj_msgSend(CPBundle,"mainBundle"),"pathForResource:",_11),_13); +if(_f){ +_bundle=_12; +} +return _f; +} +}),new objj_method(sel_getUid("_setAwakenCustomResources:"),function(_14,_15,_16){ +with(_14){ +_awakenCustomResources=_16; +} +}),new objj_method(sel_getUid("_awakenCustomResources"),function(_17,_18){ +with(_17){ +return _awakenCustomResources; +} +}),new objj_method(sel_getUid("instantiateCibWithExternalNameTable:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=_bundle,_1d=objj_msgSend(_1b,"objectForKey:",CPCibOwner); +if(!_1c&&_1d){ +_1c=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_1d,"class")); +} +var _1e=objj_msgSend(objj_msgSend(_CPCibKeyedUnarchiver,"alloc"),"initForReadingWithData:bundle:awakenCustomResources:",_data,_1c,_awakenCustomResources),_1f=objj_msgSend(_1b,"objectForKey:",CPCibReplacementClasses); +if(_1f){ +var key=nil,_20=objj_msgSend(_1f,"keyEnumerator"); +while(key=objj_msgSend(_20,"nextObject")){ +objj_msgSend(_1e,"setClass:forClassName:",objj_msgSend(_1f,"objectForKey:",key),key); +} +} +objj_msgSend(_1e,"setExternalObjectsForProxyIdentifiers:",objj_msgSend(_1b,"objectForKey:",CPCibExternalObjects)); +var _21=objj_msgSend(_1e,"decodeObjectForKey:",_1); +if(!_21||!objj_msgSend(_21,"isKindOfClass:",objj_msgSend(_CPCibObjectData,"class"))){ +return NO; +} +var _22=objj_msgSend(_1b,"objectForKey:",CPCibTopLevelObjects); +objj_msgSend(_21,"instantiateWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"establishConnectionsWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"awakeWithOwner:topLevelObjects:",_1d,_22); +objj_msgSend(_21,"displayVisibleWindows"); +return YES; +} +}),new objj_method(sel_getUid("instantiateCibWithOwner:topLevelObjects:"),function(_23,_24,_25,_26){ +with(_23){ +return objj_msgSend(_23,"instantiateCibWithExternalNameTable:",objj_msgSend(CPDictionary,"dictionaryWithObjectsAndKeys:",_25,CPCibOwner,_26,CPCibTopLevelObjects)); +} +})]); +var _2=objj_getClass("CPCib"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPCib\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("connection:didReceiveData:"),function(_27,_28,_29,_2a){ +with(_27){ +if(!_2a){ +return objj_msgSend(_27,"connection:didFailWithError:",_29,nil); +} +_data=objj_msgSend(CPData,"dataWithRawString:",_2a); +} +}),new objj_method(sel_getUid("connection:didFailWithError:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +if(objj_msgSend(_loadDelegate,"respondsToSelector:",sel_getUid("cibDidFailToLoad:"))){ +objj_msgSend(_loadDelegate,"cibDidFailToLoad:",_2b); +} +_loadDelegate=nil; +} +}),new objj_method(sel_getUid("connectionDidFinishLoading:"),function(_2f,_30,_31){ +with(_2f){ +if(objj_msgSend(_loadDelegate,"respondsToSelector:",sel_getUid("cibDidFinishLoading:"))){ +objj_msgSend(_loadDelegate,"cibDidFinishLoading:",_2f); +} +_loadDelegate=nil; +} +})]); +p;16;CPCibConnector.jt;2363;@STATIC;1.0;I;21;Foundation/CPObject.jI;29;Foundation/CPKeyValueCoding.jt;2284; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPKeyValueCoding.j",NO); +var _1="_CPCibConnectorSourceKey",_2="_CPCibConnectorDestinationKey",_3="_CPCibConnectorLabelKey"; +var _4=objj_allocateClassPair(CPObject,"CPCibConnector"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_source"),new objj_ivar("_destination"),new objj_ivar("_label")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("source"),function(_6,_7){ +with(_6){ +return _source; +} +}),new objj_method(sel_getUid("setSource:"),function(_8,_9,_a){ +with(_8){ +_source=_a; +} +}),new objj_method(sel_getUid("destination"),function(_b,_c){ +with(_b){ +return _destination; +} +}),new objj_method(sel_getUid("setDestination:"),function(_d,_e,_f){ +with(_d){ +_destination=_f; +} +}),new objj_method(sel_getUid("label"),function(_10,_11){ +with(_10){ +return _label; +} +}),new objj_method(sel_getUid("setLabel:"),function(_12,_13,_14){ +with(_12){ +_label=_14; +} +}),new objj_method(sel_getUid("replaceObject:withObject:"),function(_15,_16,_17,_18){ +with(_15){ +if(_source===_17){ +_source=_18; +} +if(_destination===_17){ +_destination=_18; +} +} +}),new objj_method(sel_getUid("replaceObjects:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=_1b[objj_msgSend(_source,"UID")]; +if(_1c!==undefined){ +_source=_1c; +} +_1c=_1b[objj_msgSend(_destination,"UID")]; +if(_1c!==undefined){ +_destination=_1c; +} +} +})]); +var _4=objj_getClass("CPCibConnector"); +if(!_4){ +throw new SyntaxError("*** Could not find definition for class \"CPCibConnector\""); +} +var _5=_4.isa; +class_addMethods(_4,[new objj_method(sel_getUid("initWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +_1d=objj_msgSendSuper({receiver:_1d,super_class:objj_getClass("CPCibConnector").super_class},"init"); +if(_1d){ +_source=objj_msgSend(_1f,"decodeObjectForKey:",_1); +_destination=objj_msgSend(_1f,"decodeObjectForKey:",_2); +_label=objj_msgSend(_1f,"decodeObjectForKey:",_3); +} +return _1d; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_20,_21,_22){ +with(_20){ +objj_msgSend(_22,"encodeObject:forKey:",_source,_1); +objj_msgSend(_22,"encodeObject:forKey:",_destination,_2); +objj_msgSend(_22,"encodeObject:forKey:",_label,_3); +} +})]); +var _4=objj_allocateClassPair(CPCibConnector,"_CPCibConnector"),_5=_4.isa; +objj_registerClassPair(_4); +p;23;CPCibControlConnector.jt;1534;@STATIC;1.0;i;16;CPCibConnector.jt;1494; +objj_executeFile("CPCibConnector.j",YES); +var _1=objj_allocateClassPair(CPCibConnector,"CPCibControlConnector"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("establishConnection"),function(_3,_4){ +with(_3){ +var _5=_label,_6=objj_msgSend(_5,"length"); +if(_6&&_5.charAt(_6-1)!==":"){ +_5+=":"; +} +var _7=CPSelectorFromString(_5); +if(!_7){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] selector "+_5+" does not exist."); +} +if(_destination&&!objj_msgSend(_destination,"respondsToSelector:",_7)){ +CPLog.warn("Could not connect the action "+_7+" to target of class "+objj_msgSend(_destination,"className")); +return; +} +if(objj_msgSend(_source,"respondsToSelector:",sel_getUid("setAction:"))){ +objj_msgSend(_source,sel_getUid("setAction:"),_7); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] "+objj_msgSend(_source,"description")+" does not respond to setAction:"); +} +if(objj_msgSend(_source,"respondsToSelector:",sel_getUid("setTarget:"))){ +objj_msgSend(_source,sel_getUid("setTarget:"),_destination); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-["+objj_msgSend(_3,"className")+" "+_4+"] "+objj_msgSend(_source,"description")+" does not respond to setTarget:"); +} +} +})]); +var _1=objj_allocateClassPair(CPCibControlConnector,"_CPCibControlConnector"),_2=_1.isa; +objj_registerClassPair(_1); +p;14;CPCibLoading.jt;3586;@STATIC;1.0;I;21;Foundation/CPBundle.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;3485; +objj_executeFile("Foundation/CPBundle.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1="CPCibOwner"; +var _2=objj_getClass("CPObject"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("awakeFromCib"),function(_4,_5){ +with(_4){ +} +})]); +var _2=objj_getClass("CPBundle"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPBundle\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("loadCibFile:externalNameTable:"),function(_6,_7,_8,_9){ +with(_6){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",_8),"instantiateCibWithExternalNameTable:",_9); +} +}),new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"),function(_a,_b,_c,_d,_e){ +with(_a){ +return (objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithCibNamed:bundle:loadDelegate:",_c,_a,objj_msgSend(objj_msgSend(_CPCibLoadDelegate,"alloc"),"initWithLoadDelegate:externalNameTable:",_e,_d))); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("loadCibFile:externalNameTable:"),function(_f,_10,_11,_12){ +with(_f){ +return objj_msgSend(objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:",_11),"instantiateCibWithExternalNameTable:",_12); +} +}),new objj_method(sel_getUid("loadCibNamed:owner:"),function(_13,_14,_15,_16){ +with(_13){ +if(!objj_msgSend(_15,"hasSuffix:",".cib")){ +_15=objj_msgSend(_15,"stringByAppendingString:",".cib"); +} +var _17=_16?objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_16,"class")):objj_msgSend(CPBundle,"mainBundle"),_18=objj_msgSend(_17,"pathForResource:",_15); +return objj_msgSend(_13,"loadCibFile:externalNameTable:",_18,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_16,_1)); +} +}),new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"),function(_19,_1a,_1b,_1c,_1d){ +with(_19){ +return (objj_msgSend(objj_msgSend(CPCib,"alloc"),"initWithContentsOfURL:loadDelegate:",_1b,objj_msgSend(objj_msgSend(_CPCibLoadDelegate,"alloc"),"initWithLoadDelegate:externalNameTable:",_1d,_1c))); +} +}),new objj_method(sel_getUid("loadCibNamed:owner:loadDelegate:"),function(_1e,_1f,_20,_21,_22){ +with(_1e){ +if(!objj_msgSend(_20,"hasSuffix:",".cib")){ +_20=objj_msgSend(_20,"stringByAppendingString:",".cib"); +} +var _23=_21?objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_21,"class")):objj_msgSend(CPBundle,"mainBundle"),_24=objj_msgSend(_23,"pathForResource:",_20); +return objj_msgSend(_1e,"loadCibFile:externalNameTable:loadDelegate:",_24,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_21,_1),_22); +} +})]); +var _2=objj_allocateClassPair(CPObject,"_CPCibLoadDelegate"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_loadDelegate"),new objj_ivar("_externalNameTable")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithLoadDelegate:externalNameTable:"),function(_25,_26,_27,_28){ +with(_25){ +_25=objj_msgSend(_25,"init"); +if(_25){ +_loadDelegate=_27; +_externalNameTable=_28; +} +return _25; +} +}),new objj_method(sel_getUid("cibDidFinishLoading:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"instantiateCibWithExternalNameTable:",_externalNameTable); +objj_msgSend(_loadDelegate,"cibDidFinishLoading:",_2b); +} +}),new objj_method(sel_getUid("cibDidFailToLoad:"),function(_2c,_2d,_2e){ +with(_2c){ +objj_msgSend(_loadDelegate,"cibDidFailToLoad:",_2e); +} +})]); +p;22;CPCibOutletConnector.jt;703;@STATIC;1.0;i;16;CPCibConnector.jt;664; +objj_executeFile("CPCibConnector.j",YES); +var _1=objj_allocateClassPair(CPCibConnector,"CPCibOutletConnector"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("establishConnection"),function(_3,_4){ +with(_3){ +try{ +objj_msgSend(_source,"setValue:forKey:",_destination,_label); +} +catch(anException){ +if(objj_msgSend(anException,"name")===CPUndefinedKeyException){ +CPLog.warn("Could not connect the outlet "+_label+" of target of class "+objj_msgSend(_source,"className")); +}else{ +throw anException; +} +} +} +})]); +var _1=objj_allocateClassPair(CPCibOutletConnector,"_CPCibOutletConnector"),_2=_1.isa; +objj_registerClassPair(_1); +p;13;CAAnimation.jt;3814;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;23;CAMediaTimingFunction.jt;3715; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CAMediaTimingFunction.j",YES); +var _1=objj_allocateClassPair(CPObject,"CAAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isRemovedOnCompletion"),new objj_ivar("_delegate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CAAnimation").super_class},"init"); +if(_3){ +_isRemovedOnCompletion=YES; +} +return _3; +} +}),new objj_method(sel_getUid("shouldArchiveValueForKey:"),function(_5,_6,_7){ +with(_5){ +return YES; +} +}),new objj_method(sel_getUid("setRemovedOnCompletion:"),function(_8,_9,_a){ +with(_8){ +_isRemovedOnCompletion=_a; +} +}),new objj_method(sel_getUid("removedOnCompletion"),function(_b,_c){ +with(_b){ +return _isRemovedOnCompletion; +} +}),new objj_method(sel_getUid("isRemovedOnCompletion"),function(_d,_e){ +with(_d){ +return _isRemovedOnCompletion; +} +}),new objj_method(sel_getUid("timingFunction"),function(_f,_10){ +with(_f){ +return nil; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_11,_12,_13){ +with(_11){ +_delegate=_13; +} +}),new objj_method(sel_getUid("delegate"),function(_14,_15){ +with(_14){ +return _delegate; +} +}),new objj_method(sel_getUid("runActionForKey:object:arguments:"),function(_16,_17,_18,_19,_1a){ +with(_16){ +objj_msgSend(_19,"addAnimation:forKey:",_16,_18); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("animation"),function(_1b,_1c){ +with(_1b){ +return objj_msgSend(objj_msgSend(_1b,"alloc"),"init"); +} +}),new objj_method(sel_getUid("defaultValueForKey:"),function(_1d,_1e,_1f){ +with(_1d){ +return nil; +} +})]); +var _1=objj_allocateClassPair(CAAnimation,"CAPropertyAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath"),new objj_ivar("_isCumulative"),new objj_ivar("_isAdditive")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setKeyPath:"),function(_20,_21,_22){ +with(_20){ +_keyPath=_22; +} +}),new objj_method(sel_getUid("keyPath"),function(_23,_24){ +with(_23){ +return _keyPath; +} +}),new objj_method(sel_getUid("setCumulative:"),function(_25,_26,_27){ +with(_25){ +_isCumulative=_27; +} +}),new objj_method(sel_getUid("cumulative"),function(_28,_29){ +with(_28){ +return _isCumulative; +} +}),new objj_method(sel_getUid("isCumulative"),function(_2a,_2b){ +with(_2a){ +return _isCumulative; +} +}),new objj_method(sel_getUid("setAdditive:"),function(_2c,_2d,_2e){ +with(_2c){ +_isAdditive=_2e; +} +}),new objj_method(sel_getUid("additive"),function(_2f,_30){ +with(_2f){ +return _isAdditive; +} +}),new objj_method(sel_getUid("isAdditive"),function(_31,_32){ +with(_31){ +return _isAdditive; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("animationWithKeyPath:"),function(_33,_34,_35){ +with(_33){ +var _36=objj_msgSend(_33,"animation"); +objj_msgSend(_36,"setKeyPath:",_35); +return _36; +} +})]); +var _1=objj_allocateClassPair(CAPropertyAnimation,"CABasicAnimation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_fromValue"),new objj_ivar("_toValue"),new objj_ivar("_byValue")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setFromValue:"),function(_37,_38,_39){ +with(_37){ +_fromValue=_39; +} +}),new objj_method(sel_getUid("fromValue"),function(_3a,_3b){ +with(_3a){ +return _fromValue; +} +}),new objj_method(sel_getUid("setToValue:"),function(_3c,_3d,_3e){ +with(_3c){ +_toValue=_3e; +} +}),new objj_method(sel_getUid("toValue"),function(_3f,_40){ +with(_3f){ +return _toValue; +} +}),new objj_method(sel_getUid("setByValue:"),function(_41,_42,_43){ +with(_41){ +_byValue=_43; +} +}),new objj_method(sel_getUid("byValue"),function(_44,_45){ +with(_44){ +return _byValue; +} +})]); +p;16;CABackingStore.jt;737;@STATIC;1.0;i;12;CGGeometry.ji;17;CPCompatibility.jt;680; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPCompatibility.j",YES); +CABackingStoreGetContext=function(_1){ +return _1.context; +}; +if(CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +CABackingStoreCreate=function(){ +var _2=document.createElement("canvas"); +_2.style.position="absolute"; +return {context:_2.getContext("2d"),buffer:_2,_image:_2}; +}; +CABackingStoreSetSize=function(_3,_4){ +var _5=_3.buffer; +_5.width=_4.width; +_5.height=_4.height; +_5.style.width=_4.width+"px"; +_5.style.height=_4.height+"px"; +}; +}else{ +CABackingStoreCreate=function(){ +var _6=CGBitmapGraphicsContextCreate(); +_6.buffer=""; +return {context:_6}; +}; +CABackingStoreSetSize=function(_7,_8){ +}; +} +p;14;CAFlashLayer.jt;851;@STATIC;1.0;i;9;CALayer.ji;14;CPFlashMovie.jt;801; +objj_executeFile("CALayer.j",YES); +objj_executeFile("CPFlashMovie.j",YES); +var _1=objj_allocateClassPair(CALayer,"CAFlashLayer"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_flashMovie")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("setFlashMovie:"),function(_3,_4,_5){ +with(_3){ +if(_flashMovie==_5){ +return; +} +_flashMovie=_5; +_DOMElement.innerHTML="<object width = \"100%\" height = \"100%\"><param name = \"movie\" value = \""+_5._fileName+"\"></param><param name = \"wmode\" value = \"transparent\"></param><embed src = \""+_5._fileName+"\" type = \"application/x-shockwave-flash\" wmode = \"transparent\" width = \"100%\" height = \"100%\"></embed></object>"; +} +}),new objj_method(sel_getUid("flashMovie"),function(_6,_7){ +with(_6){ +return _flashMovie; +} +})]); +p;9;CALayer.jt;24760;@STATIC;1.0;I;21;Foundation/CPObject.jI;23;AppKit/CABackingStore.jI;18;AppKit/CGContext.jI;19;AppKit/CGGeometry.ji;12;CGGeometry.jt;24622; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("AppKit/CABackingStore.j",NO); +objj_executeFile("AppKit/CGContext.j",NO); +objj_executeFile("AppKit/CGGeometry.j",NO); +objj_executeFile("CGGeometry.j",YES); +CGAffineTransformMake=function(a,b,c,d,tx,ty){ +return {a:a,b:b,c:c,d:d,tx:tx,ty:ty}; +}; +CGAffineTransformMakeIdentity=function(){ +return {a:1,b:0,c:0,d:1,tx:0,ty:0}; +}; +CGAffineTransformMakeCopy=function(_1){ +return {a:_1.a,b:_1.b,c:_1.c,d:_1.d,tx:_1.tx,ty:_1.ty}; +}; +CGAffineTransformMakeScale=function(sx,sy){ +return {a:sx,b:0,c:0,d:sy,tx:0,ty:0}; +}; +CGAffineTransformMakeTranslation=function(tx,ty){ +return {a:1,b:0,c:0,d:1,tx:tx,ty:ty}; +}; +CGAffineTransformTranslate=function(_2,tx,ty){ +return {a:_2.a,b:_2.b,c:_2.c,d:_2.d,tx:_2.tx+_2.a*tx+_2.c*ty,ty:_2.ty+_2.b*tx+_2.d*ty}; +}; +CGAffineTransformScale=function(_3,sx,sy){ +return {a:_3.a*sx,b:_3.b*sx,c:_3.c*sy,d:_3.d*sy,tx:_3.tx,ty:_3.ty}; +}; +CGAffineTransformConcat=function(_4,_5){ +return {a:_4.a*_5.a+_4.b*_5.c,b:_4.a*_5.b+_4.b*_5.d,c:_4.c*_5.a+_4.d*_5.c,d:_4.c*_5.b+_4.d*_5.d,tx:_4.tx*_5.a+_4.ty*_5.c+_5.tx,ty:_4.tx*_5.b+_4.ty*_5.d+_5.ty}; +}; +CGPointApplyAffineTransform=function(_6,_7){ +return {x:_6.x*_7.a+_6.y*_7.c+_7.tx,y:_6.x*_7.b+_6.y*_7.d+_7.ty}; +}; +CGSizeApplyAffineTransform=function(_8,_9){ +return {width:_8.width*_9.a+_8.height*_9.c,height:_8.width*_9.b+_8.height*_9.d}; +}; +CGAffineTransformIsIdentity=function(_a){ +return (_a.a==1&&_a.b==0&&_a.c==0&&_a.d==1&&_a.tx==0&&_a.ty==0); +}; +CGAffineTransformEqualToTransform=function(_b,_c){ +return (_b.a==_c.a&&_b.b==_c.b&&_b.c==_c.c&&_b.d==_c.d&&_b.tx==_c.tx&&_b.ty==_c.ty); +}; +CGStringCreateWithCGAffineTransform=function(_d){ +return (" [[ "+_d.a+", "+_d.b+", 0 ], [ "+_d.c+", "+_d.d+", 0 ], [ "+_d.tx+", "+_d.ty+", 1]]"); +}; +CGAffineTransformCreateCopy=function(_e){ +return {a:_e.a,b:_e.b,c:_e.c,d:_e.d,tx:_e.tx,ty:_e.ty}; +}; +CGAffineTransformMakeRotation=function(_f){ +var sin=SIN(_f),cos=COS(_f); +return {a:cos,b:sin,c:-sin,d:cos,tx:0,ty:0}; +}; +CGAffineTransformRotate=function(_10,_11){ +var sin=SIN(_11),cos=COS(_11); +return {a:_10.a*cos+_10.c*sin,b:_10.b*cos+_10.d*sin,c:_10.c*cos-_10.a*sin,d:_10.d*cos-_10.b*sin,tx:_10.tx,ty:_10.ty}; +}; +CGAffineTransformInvert=function(_12){ +var _13=1/(_12.a*_12.d-_12.b*_12.c); +return {a:_13*_12.d,b:-_13*_12.b,c:-_13*_12.c,d:_13*_12.a,tx:_13*(_12.c*_12.ty-_12.d*_12.tx),ty:_13*(_12.b*_12.tx-_12.a*_12.ty)}; +}; +CGRectApplyAffineTransform=function(_14,_15){ +var top=(_14.origin.y),_16=(_14.origin.x),_17=(_14.origin.x+_14.size.width),_18=(_14.origin.y+_14.size.height),_19=CGPointApplyAffineTransform({x:_16,y:top},_15),_1a=CGPointApplyAffineTransform({x:_17,y:top},_15),_1b=CGPointApplyAffineTransform({x:_16,y:_18},_15),_1c=CGPointApplyAffineTransform({x:_17,y:_18},_15),_1d=MIN(_19.x,_1a.x,_1b.x,_1c.x),_1e=MAX(_19.x,_1a.x,_1b.x,_1c.x),_1f=MIN(_19.y,_1a.y,_1b.y,_1c.y),_20=MAX(_19.y,_1a.y,_1b.y,_1c.y); +return {origin:{x:_1d,y:_1f},size:{width:(_1e-_1d),height:(_20-_1f)}}; +}; +CPStringFromCGAffineTransform=function(_21){ +return "{"+_21.a+", "+_21.b+", "+_21.c+", "+_21.d+", "+_21.tx+", "+_21.ty+"}"; +}; +var _22=1,_23=2,_24=4,_25=8,_26=16; +var _27=NO; +var _28=1,_29=2,_2a=4,_2b=8,_2c=16,_2d=_2a|_28|_29; +var _2e=nil; +var _2f=objj_allocateClassPair(CPObject,"CALayer"),_30=_2f.isa; +class_addIvars(_2f,[new objj_ivar("_frame"),new objj_ivar("_bounds"),new objj_ivar("_position"),new objj_ivar("_zPosition"),new objj_ivar("_anchorPoint"),new objj_ivar("_affineTransform"),new objj_ivar("_sublayerTransform"),new objj_ivar("_sublayerTransformForSublayers"),new objj_ivar("_backingStoreFrame"),new objj_ivar("_standardBackingStoreFrame"),new objj_ivar("_hasSublayerTransform"),new objj_ivar("_hasCustomBackingStoreFrame"),new objj_ivar("_opacity"),new objj_ivar("_isHidden"),new objj_ivar("_backgroundColor"),new objj_ivar("_superlayer"),new objj_ivar("_sublayers"),new objj_ivar("_runLoopUpdateMask"),new objj_ivar("_needsDisplayOnBoundsChange"),new objj_ivar("_delegate"),new objj_ivar("_delegateRespondsToDisplayLayerSelector"),new objj_ivar("_delegateRespondsToDrawLayerInContextSelector"),new objj_ivar("_DOMElement"),new objj_ivar("_DOMContentsElement"),new objj_ivar("_contents"),new objj_ivar("_context"),new objj_ivar("_owningView"),new objj_ivar("_transformToLayer"),new objj_ivar("_transformFromLayer")]); +objj_registerClassPair(_2f); +class_addMethods(_2f,[new objj_method(sel_getUid("init"),function(_31,_32){ +with(_31){ +_31=objj_msgSendSuper({receiver:_31,super_class:objj_getClass("CALayer").super_class},"init"); +if(_31){ +_frame=CGRectMakeZero(); +_backingStoreFrame=CGRectMakeZero(); +_standardBackingStoreFrame=CGRectMakeZero(); +_bounds=CGRectMakeZero(); +_position=CGPointMakeZero(); +_zPosition=0; +_anchorPoint=CGPointMake(0.5,0.5); +_affineTransform=CGAffineTransformMakeIdentity(); +_sublayerTransform=CGAffineTransformMakeIdentity(); +_transformToLayer=CGAffineTransformMakeIdentity(); +_transformFromLayer=CGAffineTransformMakeIdentity(); +_opacity=1; +_isHidden=NO; +_masksToBounds=NO; +_sublayers=[]; +_DOMElement=document.createElement("div"); +_DOMElement.style.overflow="visible"; +_DOMElement.style.position="absolute"; +_DOMElement.style.visibility="visible"; +_DOMElement.style.top="0px"; +_DOMElement.style.left="0px"; +_DOMElement.style.zIndex=0; +_DOMElement.style.width="0px"; +_DOMElement.style.height="0px"; +} +return _31; +} +}),new objj_method(sel_getUid("setBounds:"),function(_33,_34,_35){ +with(_33){ +if(CGRectEqualToRect(_bounds,_35)){ +return; +} +var _36=_bounds.origin; +_bounds={origin:{x:_35.origin.x,y:_35.origin.y},size:{width:_35.size.width,height:_35.size.height}}; +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_33); +} +_CALayerRecalculateGeometry(_33,_22); +} +}),new objj_method(sel_getUid("bounds"),function(_37,_38){ +with(_37){ +return _bounds; +} +}),new objj_method(sel_getUid("setPosition:"),function(_39,_3a,_3b){ +with(_39){ +if(CGPointEqualToPoint(_position,_3b)){ +return; +} +_position={x:_3b.x,y:_3b.y}; +_CALayerRecalculateGeometry(_39,_23); +} +}),new objj_method(sel_getUid("position"),function(_3c,_3d){ +with(_3c){ +return _position; +} +}),new objj_method(sel_getUid("setZPosition:"),function(_3e,_3f,_40){ +with(_3e){ +if(_zPosition==_40){ +return; +} +_zPosition=_40; +objj_msgSend(_3e,"registerRunLoopUpdateWithMask:",_2a); +} +}),new objj_method(sel_getUid("setAnchorPoint:"),function(_41,_42,_43){ +with(_41){ +_43={x:_43.x,y:_43.y}; +_43.x=MIN(1,MAX(0,_43.x)); +_43.y=MIN(1,MAX(0,_43.y)); +if(CGPointEqualToPoint(_anchorPoint,_43)){ +return; +} +_anchorPoint=_43; +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_41); +} +if(_owningView){ +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +} +_CALayerRecalculateGeometry(_41,_24); +} +}),new objj_method(sel_getUid("anchorPoint"),function(_44,_45){ +with(_44){ +return _anchorPoint; +} +}),new objj_method(sel_getUid("setAffineTransform:"),function(_46,_47,_48){ +with(_46){ +if(CGAffineTransformEqualToTransform(_affineTransform,_48)){ +return; +} +_affineTransform={a:_48.a,b:_48.b,c:_48.c,d:_48.d,tx:_48.tx,ty:_48.ty}; +_CALayerRecalculateGeometry(_46,_25); +} +}),new objj_method(sel_getUid("affineTransform"),function(_49,_4a){ +with(_49){ +return _affineTransform; +} +}),new objj_method(sel_getUid("setSublayerTransform:"),function(_4b,_4c,_4d){ +with(_4b){ +if(CGAffineTransformEqualToTransform(_sublayerTransform,_4d)){ +return; +} +var _4e=_hasSublayerTransform; +_sublayerTransform={a:_4d.a,b:_4d.b,c:_4d.c,d:_4d.d,tx:_4d.tx,ty:_4d.ty}; +_hasSublayerTransform=!(_sublayerTransform.a==1&&_sublayerTransform.b==0&&_sublayerTransform.c==0&&_sublayerTransform.d==1&&_sublayerTransform.tx==0&&_sublayerTransform.ty==0); +if(_hasSublayerTransform){ +_CALayerUpdateSublayerTransformForSublayers(_4b); +var _4f=_sublayers.length; +while(_4f--){ +_CALayerRecalculateGeometry(_sublayers[_4f],_26); +} +} +} +}),new objj_method(sel_getUid("sublayerTransform"),function(_50,_51){ +with(_50){ +return _sublayerTransform; +} +}),new objj_method(sel_getUid("transformToLayer"),function(_52,_53){ +with(_52){ +return _transformToLayer; +} +}),new objj_method(sel_getUid("setFrame:"),function(_54,_55,_56){ +with(_54){ +alert("FIXME IMPLEMENT"); +} +}),new objj_method(sel_getUid("frame"),function(_57,_58){ +with(_57){ +if(!_frame){ +_frame=objj_msgSend(_57,"convertRect:toLayer:",_bounds,_superlayer); +} +return _frame; +} +}),new objj_method(sel_getUid("backingStoreFrame"),function(_59,_5a){ +with(_59){ +return _backingStoreFrame; +} +}),new objj_method(sel_getUid("setBackingStoreFrame:"),function(_5b,_5c,_5d){ +with(_5b){ +_hasCustomBackingStoreFrame=(_5d!=nil); +if(_5d==nil){ +_5d=CGRectMakeCopy(_standardBackingStoreFrame); +}else{ +if(_superlayer){ +_5d=objj_msgSend(_superlayer,"convertRect:toLayer:",_5d,nil); +var _5e=objj_msgSend(_superlayer,"bounds"),_5f=objj_msgSend(_superlayer,"convertRect:toLayer:",_5e,nil); +_5d.origin.x-=(_5f.origin.x); +_5d.origin.y-=(_5f.origin.y); +}else{ +_5d=CGRectMakeCopy(_5d); +} +} +if(!CGPointEqualToPoint(_backingStoreFrame.origin,_5d.origin)){ +objj_msgSend(_5b,"registerRunLoopUpdateWithMask:",_28); +} +if(!CGSizeEqualToSize(_backingStoreFrame.size,_5d.size)){ +objj_msgSend(_5b,"registerRunLoopUpdateWithMask:",_29); +} +_backingStoreFrame=_5d; +} +}),new objj_method(sel_getUid("contents"),function(_60,_61){ +with(_60){ +return _contents; +} +}),new objj_method(sel_getUid("setContents:"),function(_62,_63,_64){ +with(_62){ +if(_contents==_64){ +return; +} +_contents=_64; +objj_msgSend(_62,"composite"); +} +}),new objj_method(sel_getUid("composite"),function(_65,_66){ +with(_65){ +if(_27&&!_contents||!_context){ +return; +} +CGContextClearRect(_context,{origin:{x:0,y:0},size:{width:(_backingStoreFrame.size.width),height:(_backingStoreFrame.size.height)}}); +var _67=_transformFromLayer; +if(_superlayer){ +var _68=_CALayerGetTransform(_superlayer,nil),_69=CGPointApplyAffineTransform(_superlayer._bounds.origin,_68); +_67=CGAffineTransformConcat(_67,_68); +_67.tx-=_69.x; +_67.ty-=_69.y; +} +_67.tx-=(_backingStoreFrame.origin.x); +_67.ty-=(_backingStoreFrame.origin.y); +CGContextSaveGState(_context); +CGContextConcatCTM(_context,_67); +if(_27){ +_context.drawImage(_contents.buffer,(_bounds.origin.x),(_bounds.origin.y)); +}else{ +objj_msgSend(_65,"drawInContext:",_context); +} +CGContextRestoreGState(_context); +} +}),new objj_method(sel_getUid("display"),function(_6a,_6b){ +with(_6a){ +if(!_context){ +_context=CGBitmapGraphicsContextCreate(); +_DOMContentsElement=_context.DOMElement; +_DOMContentsElement.style.zIndex=-100; +_DOMContentsElement.style.overflow="hidden"; +_DOMContentsElement.style.position="absolute"; +_DOMContentsElement.style.visibility="visible"; +_DOMContentsElement.width=ROUND((_backingStoreFrame.size.width)); +_DOMContentsElement.height=ROUND((_backingStoreFrame.size.height)); +_DOMContentsElement.style.top="0px"; +_DOMContentsElement.style.left="0px"; +_DOMContentsElement.style.width=ROUND((_backingStoreFrame.size.width))+"px"; +_DOMContentsElement.style.height=ROUND((_backingStoreFrame.size.height))+"px"; +_DOMElement.appendChild(_DOMContentsElement); +} +if(_27){ +if(_delegateRespondsToDisplayLayerSelector){ +return objj_msgSend(_delegate,"displayInLayer:",_6a); +} +if((_backingStoreFrame.size.width)==0||(_backingStoreFrame.size.height)==0){ +return; +} +if(!_contents){ +_contents=CABackingStoreCreate(); +} +CABackingStoreSetSize(_contents,_bounds.size); +objj_msgSend(_6a,"drawInContext:",CABackingStoreGetContext(_contents)); +} +objj_msgSend(_6a,"composite"); +} +}),new objj_method(sel_getUid("drawInContext:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_backgroundColor){ +CGContextSetFillColor(_6e,_backgroundColor); +CGContextFillRect(_6e,_bounds); +} +if(_delegateRespondsToDrawLayerInContextSelector){ +objj_msgSend(_delegate,"drawLayer:inContext:",_6c,_6e); +} +} +}),new objj_method(sel_getUid("opacity"),function(_6f,_70){ +with(_6f){ +return _opacity; +} +}),new objj_method(sel_getUid("setOpacity:"),function(_71,_72,_73){ +with(_71){ +if(_opacity==_73){ +return; +} +_opacity=_73; +_DOMElement.style.opacity=_73; +_DOMElement.style.filter="alpha(opacity="+_73*100+")"; +} +}),new objj_method(sel_getUid("setHidden:"),function(_74,_75,_76){ +with(_74){ +_isHidden=_76; +_DOMElement.style.display=_76?"none":"block"; +} +}),new objj_method(sel_getUid("hidden"),function(_77,_78){ +with(_77){ +return _isHidden; +} +}),new objj_method(sel_getUid("isHidden"),function(_79,_7a){ +with(_79){ +return _isHidden; +} +}),new objj_method(sel_getUid("setMasksToBounds:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_masksToBounds==_7d){ +return; +} +_masksToBounds=_7d; +_DOMElement.style.overflow=_masksToBounds?"hidden":"visible"; +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_7e,_7f,_80){ +with(_7e){ +_backgroundColor=_80; +objj_msgSend(_7e,"setNeedsDisplay"); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_81,_82){ +with(_81){ +return _backgroundColor; +} +}),new objj_method(sel_getUid("sublayers"),function(_83,_84){ +with(_83){ +return _sublayers; +} +}),new objj_method(sel_getUid("superlayer"),function(_85,_86){ +with(_85){ +return _superlayer; +} +}),new objj_method(sel_getUid("addSublayer:"),function(_87,_88,_89){ +with(_87){ +objj_msgSend(_87,"insertSublayer:atIndex:",_89,_sublayers.length); +return; +if(_DOMContentsElement&&_89._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"addObject:",_89); +_DOMElement.appendChild(_89._DOMElement); +} +}),new objj_method(sel_getUid("removeFromSuperlayer"),function(_8a,_8b){ +with(_8a){ +if(_owningView){ +objj_msgSend(_owningView,"setLayer:",nil); +} +if(!_superlayer){ +return; +} +_superlayer._DOMElement.removeChild(_DOMElement); +objj_msgSend(_superlayer._sublayers,"removeObject:",_8a); +_superlayer=nil; +} +}),new objj_method(sel_getUid("insertSublayer:atIndex:"),function(_8c,_8d,_8e,_8f){ +with(_8c){ +if(!_8e){ +return; +} +var _90=objj_msgSend(_8e,"superlayer"); +if(_90==_8c){ +var _91=objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_8e); +if(_91==_8f){ +return; +} +objj_msgSend(_sublayers,"removeObjectAtIndex:",_91); +if(_91<_8f){ +--_8f; +} +}else{ +if(_90!=nil){ +objj_msgSend(_8e,"removeFromSuperlayer"); +} +} +if(_DOMContentsElement&&_8e._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"insertObject:atIndex:",_8e,_8f); +if(_8f>=_sublayers.length-1){ +_DOMElement.appendChild(_8e._DOMElement); +}else{ +_DOMElement.insertBefore(_8e._DOMElement,_sublayers[_8f+1]._DOMElement); +} +_8e._superlayer=_8c; +if(_8c!=_90){ +_CALayerRecalculateGeometry(_8e,268435455); +} +} +}),new objj_method(sel_getUid("insertSublayer:below:"),function(_92,_93,_94,_95){ +with(_92){ +var _96=_95?objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_95):0; +objj_msgSend(_92,"insertSublayer:atIndex:",_94,_96==CPNotFound?_sublayers.length:_96); +} +}),new objj_method(sel_getUid("insertSublayer:above:"),function(_97,_98,_99,_9a){ +with(_97){ +var _9b=_9a?objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_9a):_sublayers.length; +if(_9b==CPNotFound){ +objj_msgSend(CPException,"raise:reason:","CALayerNotFoundException","aSublayer is not a sublayer of this layer"); +} +objj_msgSend(_sublayers,"insertObject:atIndex:",_99,_9b==CPNotFound?_sublayers.length:_9b+1); +} +}),new objj_method(sel_getUid("replaceSublayer:with:"),function(_9c,_9d,_9e,_9f){ +with(_9c){ +if(_9e==_9f){ +return; +} +if(_9e._superlayer!=_9c){ +alert("EXCEPTION"); +return; +} +if(_DOMContentsElement&&_9f._zPosition>_DOMContentsElement.style.zIndex){ +_DOMContentsElement.style.zIndex-=100; +} +objj_msgSend(_sublayers,"replaceObjectAtIndex:withObject:",objj_msgSend(_sublayers,"indexOfObjectIdenticalTo:",_9e),_9f); +_DOMElement.replaceChild(_9e._DOMElement,_9f._DOMElement); +} +}),new objj_method(sel_getUid("registerRunLoopUpdateWithMask:"),function(_a0,_a1,_a2){ +with(_a0){ +if(_2e==nil){ +_2e={}; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("runLoopUpdateLayers"),CALayer,nil,0,[CPDefaultRunLoopMode]); +} +_runLoopUpdateMask|=_a2; +_2e[objj_msgSend(_a0,"UID")]=_a0; +} +}),new objj_method(sel_getUid("setNeedsComposite"),function(_a3,_a4){ +with(_a3){ +objj_msgSend(_a3,"registerRunLoopUpdateWithMask:",_2c); +} +}),new objj_method(sel_getUid("setNeedsDisplay"),function(_a5,_a6){ +with(_a5){ +objj_msgSend(_a5,"registerRunLoopUpdateWithMask:",_2b); +} +}),new objj_method(sel_getUid("setNeedsDisplayOnBoundsChange:"),function(_a7,_a8,_a9){ +with(_a7){ +_needsDisplayOnBoundsChange=_a9; +} +}),new objj_method(sel_getUid("needsDisplayOnBoundsChange"),function(_aa,_ab){ +with(_aa){ +return _needsDisplayOnBoundsChange; +} +}),new objj_method(sel_getUid("setNeedsDisplayInRect:"),function(_ac,_ad,_ae){ +with(_ac){ +_dirtyRect=_ae; +objj_msgSend(_ac,"display"); +} +}),new objj_method(sel_getUid("convertPoint:fromLayer:"),function(_af,_b0,_b1,_b2){ +with(_af){ +return CGPointApplyAffineTransform(_b1,_CALayerGetTransform(_b2,_af)); +} +}),new objj_method(sel_getUid("convertPoint:toLayer:"),function(_b3,_b4,_b5,_b6){ +with(_b3){ +return CGPointApplyAffineTransform(_b5,_CALayerGetTransform(_b3,_b6)); +} +}),new objj_method(sel_getUid("convertRect:fromLayer:"),function(_b7,_b8,_b9,_ba){ +with(_b7){ +return CGRectApplyAffineTransform(_b9,_CALayerGetTransform(_ba,_b7)); +} +}),new objj_method(sel_getUid("convertRect:toLayer:"),function(_bb,_bc,_bd,_be){ +with(_bb){ +return CGRectApplyAffineTransform(_bd,_CALayerGetTransform(_bb,_be)); +} +}),new objj_method(sel_getUid("containsPoint:"),function(_bf,_c0,_c1){ +with(_bf){ +return (_c1.x>=(_bounds.origin.x)&&_c1.y>=(_bounds.origin.y)&&_c1.x<(_bounds.origin.x+_bounds.size.width)&&_c1.y<(_bounds.origin.y+_bounds.size.height)); +} +}),new objj_method(sel_getUid("hitTest:"),function(_c2,_c3,_c4){ +with(_c2){ +if(_isHidden){ +return nil; +} +var _c5=CGPointApplyAffineTransform(_c4,_transformToLayer); +if(!(_c5.x>=(_bounds.origin.x)&&_c5.y>=(_bounds.origin.y)&&_c5.x<(_bounds.origin.x+_bounds.size.width)&&_c5.y<(_bounds.origin.y+_bounds.size.height))){ +return nil; +} +var _c6=nil,_c7=_sublayers.length; +while(_c7--){ +if(_c6=objj_msgSend(_sublayers[_c7],"hitTest:",_c5)){ +return _c6; +} +} +return _c2; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_c8,_c9,_ca){ +with(_c8){ +if(_delegate==_ca){ +return; +} +_delegate=_ca; +_delegateRespondsToDisplayLayerSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("displayLayer:")); +_delegateRespondsToDrawLayerInContextSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("drawLayer:inContext:")); +if(_delegateRespondsToDisplayLayerSelector||_delegateRespondsToDrawLayerInContextSelector){ +objj_msgSend(_c8,"setNeedsDisplay"); +} +} +}),new objj_method(sel_getUid("delegate"),function(_cb,_cc){ +with(_cb){ +return _delegate; +} +}),new objj_method(sel_getUid("_setOwningView:"),function(_cd,_ce,_cf){ +with(_cd){ +_owningView=_cf; +if(_owningView){ +_owningView=_cf; +_bounds.size=CGSizeMakeCopy(objj_msgSend(_owningView,"bounds").size); +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +} +_CALayerRecalculateGeometry(_cd,_23|_22); +} +}),new objj_method(sel_getUid("_owningViewBoundsChanged"),function(_d0,_d1){ +with(_d0){ +_bounds.size=CGSizeMakeCopy(objj_msgSend(_owningView,"bounds").size); +_position=CGPointMake((_bounds.size.width)*_anchorPoint.x,(_bounds.size.height)*_anchorPoint.y); +_CALayerRecalculateGeometry(_d0,_23|_22); +} +}),new objj_method(sel_getUid("_update"),function(_d2,_d3){ +with(_d2){ +window.loop=true; +var _d4=_runLoopUpdateMask; +if(_d4&_2d){ +_CALayerUpdateDOM(_d2,_d4); +} +if(_d4&_2b){ +objj_msgSend(_d2,"display"); +}else{ +if(_d4&_29||_d4&_2c){ +objj_msgSend(_d2,"composite"); +} +} +_runLoopUpdateMask=0; +window.loop=false; +} +})]); +class_addMethods(_30,[new objj_method(sel_getUid("layer"),function(_d5,_d6){ +with(_d5){ +return objj_msgSend(objj_msgSend(objj_msgSend(_d5,"class"),"alloc"),"init"); +} +}),new objj_method(sel_getUid("runLoopUpdateLayers"),function(_d7,_d8){ +with(_d7){ +for(UID in _2e){ +var _d9=_2e[UID],_da=_d9._runLoopUpdateMask; +if(_da&_2d){ +_CALayerUpdateDOM(_d9,_da); +} +if(_da&_2b){ +objj_msgSend(_d9,"display"); +}else{ +if(_da&_29||_da&_2c){ +objj_msgSend(_d9,"composite"); +} +} +_d9._runLoopUpdateMask=0; +} +window.loop=false; +_2e=nil; +} +})]); +_CALayerUpdateSublayerTransformForSublayers=function(_db){ +var _dc=_db._bounds,_dd=_db._anchorPoint,_de=(_dc.size.width)*_dd.x,_df=(_dc.size.height)*_dd.y; +_db._sublayerTransformForSublayers=CGAffineTransformConcat(CGAffineTransformMakeTranslation(-_de,-_df),CGAffineTransformConcat(_db._sublayerTransform,CGAffineTransformMakeTranslation(_de,_df))); +}; +_CALayerUpdateDOM=function(_e0,_e1){ +var _e2=_e0._DOMElement.style; +if(_e1&_2a){ +_e2.zIndex=_e0._zPosition; +} +var _e3=_e0._backingStoreFrame; +if(_e1&_28){ +_e2.top=ROUND((_e3.origin.y))+"px"; +_e2.left=ROUND((_e3.origin.x))+"px"; +} +if(_e1&_29){ +var _e4=MAX(0,ROUND((_e3.size.width))),_e5=MAX(0,ROUND((_e3.size.height))),_e6=_e0._DOMContentsElement; +_e2.width=_e4+"px"; +_e2.height=_e5+"px"; +if(_e6){ +_e6.width=_e4; +_e6.height=_e5; +_e6.style.width=_e4+"px"; +_e6.style.height=_e5+"px"; +} +} +}; +_CALayerRecalculateGeometry=function(_e7,_e8){ +var _e9=_e7._bounds,_ea=_e7._superlayer,_eb=(_e9.size.width),_ec=(_e9.size.height),_ed=_e7._position,_ee=_e7._anchorPoint,_ef=_e7._affineTransform,_f0={width:_e7._backingStoreFrame.width,height:_e7._backingStoreFrame.height},_f1=_e7._hasCustomBackingStoreFrame; +_e7._transformFromLayer=CGAffineTransformConcat(CGAffineTransformMakeTranslation(-_eb*_ee.x-(_e7._bounds.origin.x),-_ec*_ee.y-(_e7._bounds.origin.y)),CGAffineTransformConcat(_ef,CGAffineTransformMakeTranslation(_ed.x,_ed.y))); +if(_ea&&_ea._hasSublayerTransform){ +var tx=_e7._transformFromLayer.tx*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.ty*_ea._sublayerTransformForSublayers.c+_ea._sublayerTransformForSublayers.tx; +_e7._transformFromLayer.ty=_e7._transformFromLayer.tx*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.ty*_ea._sublayerTransformForSublayers.d+_ea._sublayerTransformForSublayers.ty; +_e7._transformFromLayer.tx=tx; +var a=_e7._transformFromLayer.a*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.b*_ea._sublayerTransformForSublayers.c,b=_e7._transformFromLayer.a*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.b*_ea._sublayerTransformForSublayers.d,c=_e7._transformFromLayer.c*_ea._sublayerTransformForSublayers.a+_e7._transformFromLayer.d*_ea._sublayerTransformForSublayers.c; +_e7._transformFromLayer.d=_e7._transformFromLayer.c*_ea._sublayerTransformForSublayers.b+_e7._transformFromLayer.d*_ea._sublayerTransformForSublayers.d; +_e7._transformFromLayer.a=a; +_e7._transformFromLayer.b=b; +_e7._transformFromLayer.c=c; +} +_e7._transformToLayer=CGAffineTransformInvert(_e7._transformFromLayer); +_e7._frame=nil; +_e7._standardBackingStoreFrame=objj_msgSend(_e7,"convertRect:toLayer:",_e9,nil); +if(_ea){ +var _e9=objj_msgSend(_ea,"bounds"),_f2=objj_msgSend(_ea,"convertRect:toLayer:",_e9,nil); +_e7._standardBackingStoreFrame.origin.x-=(_f2.origin.x); +_e7._standardBackingStoreFrame.origin.y-=(_f2.origin.y); +} +var _f3=_e7._standardBackingStoreFrame.origin,_f4=_e7._standardBackingStoreFrame.size; +_f3.x=FLOOR(_f3.x); +_f3.y=FLOOR(_f3.y); +_f4.width=CEIL(_f4.width)+1; +_f4.height=CEIL(_f4.height)+1; +if(!_f1){ +var _f5=CGRectMakeCopy(_e7._standardBackingStoreFrame); +if(ROUND((_f5.origin.x))!=ROUND((_e7._backingStoreFrame.origin.x))||ROUND((_f5.origin.y))!=ROUND((_e7._backingStoreFrame.origin.y))){ +objj_msgSend(_e7,"registerRunLoopUpdateWithMask:",_28); +} +if(((_f5.size.width)!=ROUND((_e7._backingStoreFrame.size.width))||(_f5.size.height)!=ROUND((_e7._backingStoreFrame.size.height)))){ +objj_msgSend(_e7,"registerRunLoopUpdateWithMask:",_29); +} +_e7._backingStoreFrame=_f5; +} +if(_e8&_22&&_e7._needsDisplayOnBoundsChange){ +objj_msgSend(_e7,"setNeedsDisplay"); +}else{ +if(_f1||(_e8&~(_23|_24))){ +objj_msgSend(_e7,"setNeedsComposite"); +} +} +var _f6=_e7._sublayers,_f7=0,_f8=_f6.length; +for(;_f7<_f8;++_f7){ +_CALayerRecalculateGeometry(_f6[_f7],_e8); +} +}; +_CALayerGetTransform=function(_f9,_fa){ +var _fb=CGAffineTransformMakeIdentity(); +if(_f9){ +var _fc=_f9; +while(_fc&&_fc!=_fa){ +var _fd=_fc._transformFromLayer; +var tx=_fb.tx*_fd.a+_fb.ty*_fd.c+_fd.tx; +_fb.ty=_fb.tx*_fd.b+_fb.ty*_fd.d+_fd.ty; +_fb.tx=tx; +var a=_fb.a*_fd.a+_fb.b*_fd.c,b=_fb.a*_fd.b+_fb.b*_fd.d,c=_fb.c*_fd.a+_fb.d*_fd.c; +_fb.d=_fb.c*_fd.b+_fb.d*_fd.d; +_fb.a=a; +_fb.b=b; +_fb.c=c; +_fc=_fc._superlayer; +} +if(_fc==_fa){ +return _fb; +} +} +var _fe=[],_fc=_fa; +while(_fc){ +_fe.push(_fc); +_fc=_fc._superlayer; +} +var _ff=_fe.length; +while(_ff--){ +var _100=_fe[_ff]._transformToLayer; +var tx=_fb.tx*_100.a+_fb.ty*_100.c+_100.tx; +_fb.ty=_fb.tx*_100.b+_fb.ty*_100.d+_100.ty; +_fb.tx=tx; +var a=_fb.a*_100.a+_fb.b*_100.c,b=_fb.a*_100.b+_fb.b*_100.d,c=_fb.c*_100.a+_fb.d*_100.c; +_fb.d=_fb.c*_100.b+_fb.d*_100.d; +_fb.a=a; +_fb.b=b; +_fb.c=c; +} +return _fb; +}; +p;23;CAMediaTimingFunction.jt;2263;@STATIC;1.0;I;21;Foundation/CPObject.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;2162; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +kCAMediaTimingFunctionLinear="kCAMediaTimingFunctionLinear"; +kCAMediaTimingFunctionEaseIn="kCAMediaTimingFunctionEaseIn"; +kCAMediaTimingFunctionEaseOut="kCAMediaTimingFunctionEaseOut"; +kCAMediaTimingFunctionEaseInEaseOut="kCAMediaTimingFunctionEaseInEaseOut"; +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CAMediaTimingFunction"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_c1x"),new objj_ivar("_c1y"),new objj_ivar("_c2x"),new objj_ivar("_c2y")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithControlPoints::::"),function(_4,_5,_6,_7,_8,_9){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CAMediaTimingFunction").super_class},"init"); +if(_4){ +_c1x=_6; +_c1y=_7; +_c2x=_8; +_c2y=_9; +} +return _4; +} +}),new objj_method(sel_getUid("getControlPointAtIndex:values:"),function(_a,_b,_c,_d){ +with(_a){ +if(_c==0){ +_d[0]=0; +_d[1]=0; +}else{ +if(_c==1){ +_d[0]=_c1x; +_d[1]=_c1y; +}else{ +if(_c==2){ +_d[0]=_c2x; +_d[1]=_c2y; +}else{ +_d[0]=1; +_d[1]=1; +} +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("functionWithName:"),function(_e,_f,_10){ +with(_e){ +if(!_1){ +_1=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0,0,1,1),kCAMediaTimingFunctionLinear); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0.42,0,1,1),kCAMediaTimingFunctionEaseIn); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0,0,0.58,1),kCAMediaTimingFunctionEaseOut); +objj_msgSend(_1,"setObject:forKey:",objj_msgSend(CAMediaTimingFunction,"functionWithControlPoints::::",0.42,0,0.58,1),kCAMediaTimingFunctionEaseInEaseOut); +} +return objj_msgSend(_1,"objectForKey:",_10); +} +}),new objj_method(sel_getUid("functionWithControlPoints::::"),function(_11,_12,c1x,c1y,c2x,c2y){ +with(_11){ +return objj_msgSend(objj_msgSend(_11,"alloc"),"initWithControlPoints::::",c1x,c1y,c2x,c2y); +} +})]); +p;19;CGAffineTransform.jt;2936;@STATIC;1.0;i;12;CGGeometry.jt;2900; +objj_executeFile("CGGeometry.j",YES); +CGAffineTransformMake=function(a,b,c,d,tx,ty){ +return {a:a,b:b,c:c,d:d,tx:tx,ty:ty}; +}; +CGAffineTransformMakeIdentity=function(){ +return {a:1,b:0,c:0,d:1,tx:0,ty:0}; +}; +CGAffineTransformMakeCopy=function(_1){ +return {a:_1.a,b:_1.b,c:_1.c,d:_1.d,tx:_1.tx,ty:_1.ty}; +}; +CGAffineTransformMakeScale=function(sx,sy){ +return {a:sx,b:0,c:0,d:sy,tx:0,ty:0}; +}; +CGAffineTransformMakeTranslation=function(tx,ty){ +return {a:1,b:0,c:0,d:1,tx:tx,ty:ty}; +}; +CGAffineTransformTranslate=function(_2,tx,ty){ +return {a:_2.a,b:_2.b,c:_2.c,d:_2.d,tx:_2.tx+_2.a*tx+_2.c*ty,ty:_2.ty+_2.b*tx+_2.d*ty}; +}; +CGAffineTransformScale=function(_3,sx,sy){ +return {a:_3.a*sx,b:_3.b*sx,c:_3.c*sy,d:_3.d*sy,tx:_3.tx,ty:_3.ty}; +}; +CGAffineTransformConcat=function(_4,_5){ +return {a:_4.a*_5.a+_4.b*_5.c,b:_4.a*_5.b+_4.b*_5.d,c:_4.c*_5.a+_4.d*_5.c,d:_4.c*_5.b+_4.d*_5.d,tx:_4.tx*_5.a+_4.ty*_5.c+_5.tx,ty:_4.tx*_5.b+_4.ty*_5.d+_5.ty}; +}; +CGPointApplyAffineTransform=function(_6,_7){ +return {x:_6.x*_7.a+_6.y*_7.c+_7.tx,y:_6.x*_7.b+_6.y*_7.d+_7.ty}; +}; +CGSizeApplyAffineTransform=function(_8,_9){ +return {width:_8.width*_9.a+_8.height*_9.c,height:_8.width*_9.b+_8.height*_9.d}; +}; +CGAffineTransformIsIdentity=function(_a){ +return (_a.a==1&&_a.b==0&&_a.c==0&&_a.d==1&&_a.tx==0&&_a.ty==0); +}; +CGAffineTransformEqualToTransform=function(_b,_c){ +return (_b.a==_c.a&&_b.b==_c.b&&_b.c==_c.c&&_b.d==_c.d&&_b.tx==_c.tx&&_b.ty==_c.ty); +}; +CGStringCreateWithCGAffineTransform=function(_d){ +return (" [[ "+_d.a+", "+_d.b+", 0 ], [ "+_d.c+", "+_d.d+", 0 ], [ "+_d.tx+", "+_d.ty+", 1]]"); +}; +CGAffineTransformCreateCopy=function(_e){ +return {a:_e.a,b:_e.b,c:_e.c,d:_e.d,tx:_e.tx,ty:_e.ty}; +}; +CGAffineTransformMakeRotation=function(_f){ +var sin=SIN(_f),cos=COS(_f); +return {a:cos,b:sin,c:-sin,d:cos,tx:0,ty:0}; +}; +CGAffineTransformRotate=function(_10,_11){ +var sin=SIN(_11),cos=COS(_11); +return {a:_10.a*cos+_10.c*sin,b:_10.b*cos+_10.d*sin,c:_10.c*cos-_10.a*sin,d:_10.d*cos-_10.b*sin,tx:_10.tx,ty:_10.ty}; +}; +CGAffineTransformInvert=function(_12){ +var _13=1/(_12.a*_12.d-_12.b*_12.c); +return {a:_13*_12.d,b:-_13*_12.b,c:-_13*_12.c,d:_13*_12.a,tx:_13*(_12.c*_12.ty-_12.d*_12.tx),ty:_13*(_12.b*_12.tx-_12.a*_12.ty)}; +}; +CGRectApplyAffineTransform=function(_14,_15){ +var top=(_14.origin.y),_16=(_14.origin.x),_17=(_14.origin.x+_14.size.width),_18=(_14.origin.y+_14.size.height),_19=CGPointApplyAffineTransform({x:_16,y:top},_15),_1a=CGPointApplyAffineTransform({x:_17,y:top},_15),_1b=CGPointApplyAffineTransform({x:_16,y:_18},_15),_1c=CGPointApplyAffineTransform({x:_17,y:_18},_15),_1d=MIN(_19.x,_1a.x,_1b.x,_1c.x),_1e=MAX(_19.x,_1a.x,_1b.x,_1c.x),_1f=MIN(_19.y,_1a.y,_1b.y,_1c.y),_20=MAX(_19.y,_1a.y,_1b.y,_1c.y); +return {origin:{x:_1d,y:_1f},size:{width:(_1e-_1d),height:(_20-_1f)}}; +}; +CPStringFromCGAffineTransform=function(_21){ +return "{"+_21.a+", "+_21.b+", "+_21.c+", "+_21.d+", "+_21.tx+", "+_21.ty+"}"; +}; +p;9;CGColor.jt;2143;@STATIC;1.0;i;14;CGColorSpace.jt;2105; +objj_executeFile("CGColorSpace.j",YES); +var _1=0; +CFHashCode=function(_2){ +if(!_2.hash){ +_2.hash=++_1; +} +return _2; +}; +kCGColorWhite="kCGColorWhite"; +kCGColorBlack="kCGColorBlack"; +kCGColorClear="kCGColorClear"; +var _3={}; +CGColorGetConstantColor=function(_4){ +alert("FIX ME"); +}; +CGColorRetain=function(_5){ +return _5; +}; +CGColorRelease=function(){ +}; +CGColorCreate=function(_6,_7){ +if(!_6||!_7){ +return NULL; +} +var _7=_7.slice(); +CGColorSpaceStandardizeComponents(_6,_7); +var _8=CFHashCode(_6)+_7.join(""); +if(_3[_8]){ +return _3[_8]; +} +return _3[_8]={colorspace:_6,pattern:NULL,components:_7}; +}; +CGColorCreateCopy=function(_9){ +return _9; +}; +CGColorCreateGenericGray=function(_a,_b){ +return CGColorCreate(0,[_a,_b]); +}; +CGColorCreateGenericRGB=function(_c,_d,_e,_f){ +return CGColorCreate(0,[_c,_d,_e,_f]); +}; +CGColorCreateGenericCMYK=function(_10,_11,_12,_13,_14){ +return CGColorCreate(0,[_10,_11,_12,_13,_14]); +}; +CGColorCreateCopyWithAlpha=function(_15,_16){ +var _17=_15.components; +if(!_15||_16==_17[_17.length-1]){ +return _15; +} +if(_15.pattern){ +var _18=CGColorCreateWithPattern(_15.colorspace,_15.pattern,_17); +}else{ +var _18=CGColorCreate(_15.colorspace,_17); +} +_18.components[_17.length-1]=_16; +return _18; +}; +CGColorCreateWithPattern=function(_19,_1a,_1b){ +if(!_19||!_1a||!_1b){ +return NULL; +} +return {colorspace:_19,pattern:_1a,components:_1b.slice()}; +}; +CGColorEqualToColor=function(lhs,rhs){ +if(lhs==rhs){ +return true; +} +if(!lhs||!rhs){ +return false; +} +var _1c=lhs.components,_1d=rhs.components,_1e=_1c.length; +if(_1e!=_1d.length){ +return false; +} +while(_1e--){ +if(_1c[_1e]!=_1d[_1e]){ +return false; +} +} +if(lhs.pattern!=rhs.pattern){ +return false; +} +if(CGColorSpaceEqualToColorSpace(lhs.colorspace,rhs.colorspace)){ +return false; +} +return true; +}; +CGColorGetAlpha=function(_1f){ +var _20=_1f.components; +return _20[_20.length-1]; +}; +CGColorGetColorSpace=function(_21){ +return _21.colorspace; +}; +CGColorGetComponents=function(_22){ +return _22.components; +}; +CGColorGetNumberOfComponents=function(_23){ +return _23.components.length; +}; +CGColorGetPattern=function(_24){ +return _24.pattern; +}; +p;14;CGColorSpace.jt;3521;@STATIC;1.0;t;3502; +kCGColorSpaceModelUnknown=-1; +kCGColorSpaceModelMonochrome=0; +kCGColorSpaceModelRGB=1; +kCGColorSpaceModelCMYK=2; +kCGColorSpaceModelLab=3; +kCGColorSpaceModelDeviceN=4; +kCGColorSpaceModelIndexed=5; +kCGColorSpaceModelPattern=6; +kCGColorSpaceGenericGray="CGColorSpaceGenericGray"; +kCGColorSpaceGenericRGB="CGColorSpaceGenericRGB"; +kCGColorSpaceGenericCMYK="CGColorSpaceGenericCMYK"; +kCGColorSpaceGenericRGBLinear="CGColorSpaceGenericRGBLinear"; +kCGColorSpaceGenericRGBHDR="CGColorSpaceGenericRGBHDR"; +kCGColorSpaceAdobeRGB1998="CGColorSpaceAdobeRGB1998"; +kCGColorSpaceSRGB="CGColorSpaceSRGB"; +var _1={}; +CGColorSpaceCreateCalibratedGray=function(_2,_3,_4){ +return {model:kCGColorSpaceModelMonochrome,count:1,base:NULL}; +}; +CGColorSpaceCreateCalibratedRGB=function(_5,_6,_7){ +return {model:kCGColorSpaceModelRGB,count:1,base:NULL}; +}; +CGColorSpaceCreateICCBased=function(_8,_9,_a,_b){ +return NULL; +}; +CGColorSpaceCreateLab=function(_c,_d,_e){ +return NULL; +}; +CGColorSpaceCreateDeviceCMYK=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericCMYK); +}; +CGColorSpaceCreateDeviceGray=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericGray); +}; +CGColorSpaceCreateDeviceRGB=function(){ +return CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); +}; +CGColorSpaceCreateWithPlatformColorSpace=function(){ +return NULL; +}; +CGColorSpaceCreateIndexed=function(_f,_10,_11){ +return NULL; +}; +CGColorSpaceCreatePattern=function(_12){ +if(_12){ +return {model:kCGColorSpaceModelPattern,count:_12.count,base:_12}; +} +return {model:kCGColorSpaceModelPattern,count:0,base:NULL}; +}; +CGColorSpaceCreateWithName=function(_13){ +var _14=_1[_13]; +if(_14){ +return _14; +} +switch(_13){ +case kCGColorSpaceGenericGray: +return _1[_13]={model:kCGColorSpaceModelMonochrome,count:1,base:NULL}; +case kCGColorSpaceGenericRGB: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceGenericCMYK: +return _1[_13]={model:kCGColorSpaceModelCMYK,count:4,base:NULL}; +case kCGColorSpaceGenericRGBLinear: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceGenericRGBHDR: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceAdobeRGB1998: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +case kCGColorSpaceSRGB: +return _1[_13]={model:kCGColorSpaceModelRGB,count:3,base:NULL}; +} +return NULL; +}; +CGColorSpaceCopyICCProfile=function(_15){ +return NULL; +}; +CGColorSpaceGetNumberOfComponents=function(_16){ +return _16.count; +}; +CGColorSpaceGetTypeID=function(_17){ +}; +CGColorSpaceGetModel=function(_18){ +return _18.model; +}; +CGColorSpaceGetBaseColorSpace=function(_19){ +}; +CGColorSpaceGetColorTableCount=function(_1a){ +}; +CGColorSpaceGetColorTable=function(_1b){ +}; +CGColorSpaceRelease=function(_1c){ +}; +CGColorSpaceRetain=function(_1d){ +return _1d; +}; +CGColorSpaceStandardizeComponents=function(_1e,_1f){ +var _20=_1e.count; +if(_20>_1f.length){ +_1f[_20]=1; +return; +} +var _21=_1f[_20]; +if(_21<0){ +_1f[_20]=0; +}else{ +if(_21>1){ +_1f[_20]=1; +}else{ +_1f[_20]=ROUND(_21*1000)/1000; +} +} +if(_1e.base){ +_1e=_1e.base; +} +switch(_1e.model){ +case kCGColorSpaceModelMonochrome: +case kCGColorSpaceModelRGB: +case kCGColorSpaceModelCMYK: +case kCGColorSpaceModelDeviceN: +while(_20--){ +if(_20>_1f.length){ +_1f[_20]=1; +return; +} +var _21=_1f[_20]; +if(_21<0){ +_1f[_20]=0; +}else{ +if(_21>1){ +_1f[_20]=1; +}else{ +_1f[_20]=ROUND(_21*255)/255; +} +} +} +break; +case kCGColorSpaceModelIndexed: +case kCGColorSpaceModelLab: +case kCGColorSpaceModelPattern: +break; +} +}; +p;11;CGContext.jt;20418;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.ji;8;CGPath.jt;20345; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CGAffineTransform.j",YES); +objj_executeFile("CGPath.j",YES); +kCGLineCapButt=0; +kCGLineCapRound=1; +kCGLineCapSquare=2; +kCGLineJoinMiter=0; +kCGLineJoinRound=1; +kCGLineJoinBevel=2; +kCGPathFill=0; +kCGPathEOFill=1; +kCGPathStroke=2; +kCGPathFillStroke=3; +kCGPathEOFillStroke=4; +kCGBlendModeNormal=0; +kCGBlendModeMultiply=1; +kCGBlendModeScreen=2; +kCGBlendModeOverlay=3; +kCGBlendModeDarken=4; +kCGBlendModeLighten=5; +kCGBlendModeColorDodge=6; +kCGBlendModeColorBurn=7; +kCGBlendModeSoftLight=8; +kCGBlendModeHardLight=9; +kCGBlendModeDifference=10; +kCGBlendModeExclusion=11; +kCGBlendModeHue=12; +kCGBlendModeSaturation=13; +kCGBlendModeColor=14; +kCGBlendModeLuminosity=15; +kCGBlendModeClear=16; +kCGBlendModeCopy=17; +kCGBlendModeSourceIn=18; +kCGBlendModeSourceOut=19; +kCGBlendModeSourceAtop=20; +kCGBlendModeDestinationOver=21; +kCGBlendModeDestinationIn=22; +kCGBlendModeDestinationOut=23; +kCGBlendModeDestinationAtop=24; +kCGBlendModeXOR=25; +kCGBlendModePlusDarker=26; +kCGBlendModePlusLighter=27; +CGContextRelease=function(){ +}; +CGContextRetain=function(_1){ +return _1; +}; +if(!CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +CGGStateCreate=function(){ +return {alpha:1,strokeStyle:"#000",fillStyle:"#ccc",lineWidth:1,lineJoin:kCGLineJoinMiter,lineCap:kCGLineCapButt,miterLimit:10,globalAlpha:1,blendMode:kCGBlendModeNormal,shadowOffset:{width:0,height:0},shadowBlur:0,shadowColor:NULL,CTM:{a:1,b:0,c:0,d:1,tx:0,ty:0}}; +}; +CGGStateCreateCopy=function(_2){ +return {alpha:_2.alpha,strokeStyle:_2.strokeStyle,fillStyle:_2.fillStyle,lineWidth:_2.lineWidth,lineJoin:_2.lineJoin,lineCap:_2.lineCap,miterLimit:_2.miterLimit,globalAlpha:_2.globalAlpha,blendMode:_2.blendMode,shadowOffset:_2.shadowOffset,shadowBlur:_2.shadowBlur,shadowColor:_2.shadowColor,CTM:{a:_2.CTM.a,b:_2.CTM.b,c:_2.CTM.c,d:_2.CTM.d,tx:_2.CTM.tx,ty:_2.CTM.ty}}; +}; +CGBitmapGraphicsContextCreate=function(){ +return {DOMElement:document.createElement("div"),path:NULL,gState:CGGStateCreate(),gStateStack:[]}; +}; +CGContextSaveGState=function(_3){ +_3.gStateStack.push(CGGStateCreateCopy(_3.gState)); +}; +CGContextRestoreGState=function(_4){ +_4.gState=_4.gStateStack.pop(); +}; +CGContextSetLineCap=function(_5,_6){ +_5.gState.lineCap=_6; +}; +CGContextSetLineJoin=function(_7,_8){ +_7.gState.lineJoin=_8; +}; +CGContextSetLineWidth=function(_9,_a){ +_9.gState.lineWidth=_a; +}; +CGContextSetMiterLimit=function(_b,_c){ +_b.gState.miterLimit=_c; +}; +CGContextSetBlendMode=function(_d,_e){ +_d.gState.blendMode=_e; +}; +CGContextAddArc=function(_f,x,y,_10,_11,_12,_13){ +CGPathAddArc(_f.path,_f.gState.CTM,x,y,_10,_11,_12,_13); +}; +CGContextAddArcToPoint=function(_14,x1,y1,x2,y2,_15){ +CGPathAddArcToPoint(_14.path,_14.gState.CTM,x1,y1,x2,y2,_15); +}; +CGContextAddCurveToPoint=function(_16,_17,_18,_19,_1a,x,y){ +CGPathAddCurveToPoint(_16.path,_16.gState.CTM,_17,_18,_19,_1a,x,y); +}; +CGContextAddLines=function(_1b,_1c,_1d){ +CGPathAddLines(_1b.path,_1b.gState.CTM,_1c,_1d); +}; +CGContextAddLineToPoint=function(_1e,x,y){ +CGPathAddLineToPoint(_1e.path,_1e.gState.CTM,x,y); +}; +CGContextAddPath=function(_1f,_20){ +if(!_1f||CGPathIsEmpty(_20)){ +return; +} +if(!_1f.path){ +_1f.path=CGPathCreateMutable(); +} +CGPathAddPath(_1f.path,_1f.gState.CTM,_20); +}; +CGContextAddQuadCurveToPoint=function(_21,cpx,cpy,x,y){ +CGPathAddQuadCurveToPoint(_21.path,_21.gState.CTM,cpx,cpy,x,y); +}; +CGContextAddRect=function(_22,_23){ +CGPathAddRect(_22.path,_22.gState.CTM,_23); +}; +CGContextAddRects=function(_24,_25,_26){ +CGPathAddRects(_24.path,_24.gState.CTM,_25,_26); +}; +CGContextBeginPath=function(_27){ +_27.path=CGPathCreateMutable(); +}; +CGContextClosePath=function(_28){ +CGPathCloseSubpath(_28.path); +}; +CGContextMoveToPoint=function(_29,x,y){ +if(!_29.path){ +_29.path=CGPathCreateMutable(); +} +CGPathMoveToPoint(_29.path,_29.gState.CTM,x,y); +}; +CGContextFillRect=function(_2a,_2b){ +CGContextFillRects(_2a,[_2b],1); +}; +CGContextFillRects=function(_2c,_2d,_2e){ +if(arguments[2]===undefined){ +var _2e=_2d.length; +} +CGContextBeginPath(_2c); +CGContextAddRects(_2c,_2d,_2e); +CGContextClosePath(_2c); +CGContextDrawPath(_2c,kCGPathFill); +}; +CGContextStrokeRect=function(_2f,_30){ +CGContextBeginPath(_2f); +CGContextAddRect(_2f,_30); +CGContextClosePath(_2f); +CGContextDrawPath(_2f,kCGPathStroke); +}; +CGContextStrokeRectWithWidth=function(_31,_32,_33){ +CGContextSaveGState(_31); +CGContextSetLineWidth(_31,_33); +CGContextStrokeRect(_31,_32); +CGContextRestoreGState(_31); +}; +CGContextConcatCTM=function(_34,_35){ +var CTM=_34.gState.CTM; +var tx=CTM.tx*_35.a+CTM.ty*_35.c+_35.tx; +CTM.ty=CTM.tx*_35.b+CTM.ty*_35.d+_35.ty; +CTM.tx=tx; +var a=CTM.a*_35.a+CTM.b*_35.c,b=CTM.a*_35.b+CTM.b*_35.d,c=CTM.c*_35.a+CTM.d*_35.c; +CTM.d=CTM.c*_35.b+CTM.d*_35.d; +CTM.a=a; +CTM.b=b; +CTM.c=c; +}; +CGContextGetCTM=function(_36){ +return _36.gState.CTM; +}; +CGContextRotateCTM=function(_37,_38){ +var _39=_37.gState; +_39.CTM=CGAffineTransformRotate(_39.CTM,_38); +}; +CGContextScaleCTM=function(_3a,sx,sy){ +var _3b=_3a.gState; +_3b.CTM={a:_3b.CTM.a*sx,b:_3b.CTM.b*sx,c:_3b.CTM.c*sy,d:_3b.CTM.d*sy,tx:_3b.CTM.tx,ty:_3b.CTM.ty}; +}; +CGContextTranslateCTM=function(_3c,tx,ty){ +var _3d=_3c.gState; +_3d.CTM={a:_3d.CTM.a,b:_3d.CTM.b,c:_3d.CTM.c,d:_3d.CTM.d,tx:_3d.CTM.tx+_3d.CTM.a*tx+_3d.CTM.c*ty,ty:_3d.CTM.ty+_3d.CTM.b*tx+_3d.CTM.d*ty}; +}; +CGContextSetShadow=function(_3e,_3f,_40){ +var _41=_3e.gState; +_41.shadowOffset={width:_3f.width,height:_3f.height}; +_41.shadowBlur=_40; +_41.shadowColor=objj_msgSend(CPColor,"shadowColor"); +}; +CGContextSetShadowWithColor=function(_42,_43,_44,_45){ +var _46=_42.gState; +_46.shadowOffset={width:_43.width,height:_43.height}; +_46.shadowBlur=_44; +_46.shadowColor=_45; +}; +CGContextSetAlpha=function(_47,_48){ +_47.gState.alpha=MAX(MIN(_48,1),0); +}; +} +CGContextEOFillPath=function(_49){ +CGContextDrawPath(_49,kCGPathEOFill); +}; +CGContextFillPath=function(_4a){ +CGContextDrawPath(_4a,kCGPathFill); +}; +var _4b=4*((SQRT2-1)/3); +CGContextAddEllipseInRect=function(_4c,_4d){ +CGContextBeginPath(_4c); +CGContextAddPath(_4c,CGPathWithEllipseInRect(_4d)); +CGContextClosePath(_4c); +}; +CGContextFillEllipseInRect=function(_4e,_4f){ +CGContextBeginPath(_4e); +CGContextAddEllipseInRect(_4e,_4f); +CGContextClosePath(_4e); +CGContextFillPath(_4e); +}; +CGContextStrokeEllipseInRect=function(_50,_51){ +CGContextBeginPath(_50); +CGContextAddEllipseInRect(_50,_51); +CGContextClosePath(_50); +CGContextStrokePath(_50); +}; +CGContextStrokePath=function(_52){ +CGContextDrawPath(_52,kCGPathStroke); +}; +CGContextStrokeLineSegments=function(_53,_54,_55){ +var i=0; +if(arguments["count"]==NULL){ +var _55=_54.length; +} +CGContextBeginPath(_53); +for(;i<_55;i+=2){ +CGContextMoveToPoint(_53,_54[i].x,_54[i].y); +CGContextAddLineToPoint(_53,_54[i+1].x,_54[i+1].y); +} +CGContextStrokePath(_53); +}; +CGContextSetFillColor=function(_56,_57){ +if(_57){ +_56.gState.fillStyle=objj_msgSend(_57,"cssString"); +} +}; +CGContextSetStrokeColor=function(_58,_59){ +if(_59){ +_58.gState.strokeStyle=objj_msgSend(_59,"cssString"); +} +}; +CGContextFillRoundedRectangleInRect=function(_5a,_5b,_5c,ne,se,sw,nw){ +CGContextBeginPath(_5a); +CGContextAddPath(_5a,CGPathWithRoundedRectangleInRect(_5b,_5c,_5c,ne,se,sw,nw)); +CGContextClosePath(_5a); +CGContextFillPath(_5a); +}; +CGContextStrokeRoundedRectangleInRect=function(_5d,_5e,_5f,ne,se,sw,nw){ +CGContextBeginPath(_5d); +CGContextAddPath(_5d,CGPathWithRoundedRectangleInRect(_5e,_5f,_5f,ne,se,sw,nw)); +CGContextClosePath(_5d); +CGContextStrokePath(_5d); +}; +if(CPFeatureIsCompatible(CPHTMLCanvasFeature)){ +var _60=["butt","round","square"],_61=["miter","round","bevel"],_62=["source-over","source-over","source-over","source-over","darker","lighter","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","source-over","copy","source-in","source-out","source-atop","destination-over","destination-in","destination-out","destination-atop","xor","source-over","source-over"]; +CGContextSaveGState=function(_63){ +_63.save(); +}; +CGContextRestoreGState=function(_64){ +_64.restore(); +}; +CGContextSetLineCap=function(_65,_66){ +_65.lineCap=_60[_66]; +}; +CGContextSetLineJoin=function(_67,_68){ +_67.lineJoin=_61[_68]; +}; +CGContextSetLineWidth=function(_69,_6a){ +_69.lineWidth=_6a; +}; +CGContextSetMiterLimit=function(_6b,_6c){ +_6b.miterLimit=_6c; +}; +CGContextSetBlendMode=function(_6d,_6e){ +_6d.globalCompositeOperation=_62[_6e]; +}; +CGContextAddArc=function(_6f,x,y,_70,_71,_72,_73){ +_6f.arc(x,y,_70,_71,_72,!_73); +}; +CGContextAddArcToPoint=function(_74,x1,y1,x2,y2,_75){ +_74.arcTo(x1,y1,x2,y2,_75); +}; +CGContextAddCurveToPoint=function(_76,_77,_78,_79,_7a,x,y){ +_76.bezierCurveTo(_77,_78,_79,_7a,x,y); +}; +CGContextAddLineToPoint=function(_7b,x,y){ +_7b.lineTo(x,y); +}; +CGContextAddPath=function(_7c,_7d){ +if(!_7c||CGPathIsEmpty(_7d)){ +return; +} +var _7e=_7d.elements,i=0,_7f=_7d.count; +for(;i<_7f;++i){ +var _80=_7e[i],_81=_80.type; +switch(_81){ +case kCGPathElementMoveToPoint: +_7c.moveTo(_80.x,_80.y); +break; +case kCGPathElementAddLineToPoint: +_7c.lineTo(_80.x,_80.y); +break; +case kCGPathElementAddQuadCurveToPoint: +_7c.quadraticCurveTo(_80.cpx,_80.cpy,_80.x,_80.y); +break; +case kCGPathElementAddCurveToPoint: +_7c.bezierCurveTo(_80.cp1x,_80.cp1y,_80.cp2x,_80.cp2y,_80.x,_80.y); +break; +case kCGPathElementCloseSubpath: +_7c.closePath(); +break; +case kCGPathElementAddArc: +_7c.arc(_80.x,_80.y,_80.radius,_80.startAngle,_80.endAngle,_80.clockwise); +break; +case kCGPathElementAddArcTo: +break; +} +} +}; +CGContextAddRect=function(_82,_83){ +_82.rect((_83.origin.x),(_83.origin.y),(_83.size.width),(_83.size.height)); +}; +CGContextAddRects=function(_84,_85,_86){ +var i=0; +if(arguments["count"]==NULL){ +var _86=_85.length; +} +for(;i<_86;++i){ +var _87=_85[i]; +_84.rect((_87.origin.x),(_87.origin.y),(_87.size.width),(_87.size.height)); +} +}; +CGContextBeginPath=function(_88){ +_88.beginPath(); +}; +CGContextClosePath=function(_89){ +_89.closePath(); +}; +CGContextMoveToPoint=function(_8a,x,y){ +_8a.moveTo(x,y); +}; +CGContextClearRect=function(_8b,_8c){ +_8b.clearRect((_8c.origin.x),(_8c.origin.y),(_8c.size.width),(_8c.size.height)); +}; +CGContextDrawPath=function(_8d,_8e){ +if(_8e==kCGPathFill||_8e==kCGPathFillStroke){ +_8d.fill(); +}else{ +if(_8e==kCGPathEOFill||_8e==kCGPathEOFillStroke){ +alert("not implemented!!!"); +} +} +if(_8e==kCGPathStroke||_8e==kCGPathFillStroke||_8e==kCGPathEOFillStroke){ +_8d.stroke(); +} +}; +CGContextFillRect=function(_8f,_90){ +_8f.fillRect((_90.origin.x),(_90.origin.y),(_90.size.width),(_90.size.height)); +}; +CGContextFillRects=function(_91,_92,_93){ +var i=0; +if(arguments["count"]==NULL){ +var _93=_92.length; +} +for(;i<_93;++i){ +var _94=_92[i]; +_91.fillRect((_94.origin.x),(_94.origin.y),(_94.size.width),(_94.size.height)); +} +}; +CGContextStrokeRect=function(_95,_96){ +_95.strokeRect((_96.origin.x),(_96.origin.y),(_96.size.width),(_96.size.height)); +}; +CGContextClip=function(_97){ +_97.clip(); +}; +CGContextClipToRect=function(_98,_99){ +_98.beginPath(); +_98.rect((_99.origin.x),(_99.origin.y),(_99.size.width),(_99.size.height)); +_98.closePath(); +_98.clip(); +}; +CGContextClipToRects=function(_9a,_9b,_9c){ +if(arguments["count"]==NULL){ +var _9c=_9b.length; +} +_9a.beginPath(); +CGContextAddRects(_9a,_9b,_9c); +_9a.clip(); +}; +CGContextSetAlpha=function(_9d,_9e){ +_9d.globalAlpha=_9e; +}; +CGContextSetFillColor=function(_9f,_a0){ +_9f.fillStyle=objj_msgSend(_a0,"cssString"); +}; +CGContextSetStrokeColor=function(_a1,_a2){ +_a1.strokeStyle=objj_msgSend(_a2,"cssString"); +}; +CGContextSetShadow=function(_a3,_a4,_a5){ +_a3.shadowOffsetX=_a4.width; +_a3.shadowOffsetY=_a4.height; +_a3.shadowBlur=_a5; +}; +CGContextSetShadowWithColor=function(_a6,_a7,_a8,_a9){ +_a6.shadowOffsetX=_a7.width; +_a6.shadowOffsetY=_a7.height; +_a6.shadowBlur=_a8; +_a6.shadowColor=objj_msgSend(_a9,"cssString"); +}; +CGContextRotateCTM=function(_aa,_ab){ +_aa.rotate(_ab); +}; +CGContextScaleCTM=function(_ac,sx,sy){ +_ac.scale(sx,sy); +}; +CGContextTranslateCTM=function(_ad,tx,ty){ +_ad.translate(tx,ty); +}; +eigen=function(_ae){ +alert("IMPLEMENT ME!"); +}; +if(CPFeatureIsCompatible(CPJavaScriptCanvasTransformFeature)){ +CGContextConcatCTM=function(_af,_b0){ +_af.transform(_b0.a,_b0.b,_b0.c,_b0.d,_b0.tx,_b0.ty); +}; +}else{ +CGContextConcatCTM=function(_b1,_b2){ +var a=_b2.a,b=_b2.b,c=_b2.c,d=_b2.d,tx=_b2.tx,ty=_b2.ty,sx=1,sy=1,a1=0,a2=0; +if(b==0&&c==0){ +sx=a; +sy=d; +}else{ +if(a*b==-c*d){ +var _b3=(a*d<0||b*c>0)?-1:1,a2=(ATAN2(b,d)+ATAN2(-_b3*c,_b3*a))/2,cos=COS(a2),sin=SIN(a2); +if(cos==0){ +sx=-c/sin; +sy=b/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +} +} +}else{ +if(a*c==-b*d){ +var _b3=(a*d<0||b*c>0)?-1:1; +a1=(Math.atan2(_b3*b,_b3*a)+Math.atan2(-c,d))/2,cos=COS(a1),sin=SIN(a1); +if(cos==0){ +sx=b/sin; +sy=-c/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +} +} +}else{ +var _b4=CGAffineTransformMake(a,c,b,d,0,0),u=eigen(CGAffineTransformConcat(_b2,_b4)),v=eigen(CGAffineTransformConcat(_b4,_b2)),U=CGAffineTransformMake(u.vector_1.x,u.vector_2.x,u.vector_1.y,u.vector_2.y,0,0),VT=CGAffineTransformMake(v.vector_1.x,v.vector_1.y,v.vector_2.x,v.vector_2.y,0,0),S=CGAffineTransformConcat(CGAffineTransformConcat(CGAffineTransformInvert(U),_b2),CGAffineTransformInvert(VT)); +a=VT.a; +b=VT.b; +c=VT.c; +d=VT.d; +var _b3=(a*d<0||b*c>0)?-1:1,a2=(ATAN2(b,d)+ATAN2(-_b3*c,_b3*a))/2,cos=COS(a2),sin=SIN(a2); +if(cos==0){ +sx=-c/sin; +sy=b/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +} +} +S.a*=sx; +S.d*=sy; +a=U.a; +b=U.b; +c=U.c; +d=U.d; +var _b3=(a*d<0||b*c>0)?-1:1; +a1=(Math.atan2(_b3*b,_b3*a)+Math.atan2(-c,d))/2,cos=COS(a1),sin=SIN(a1); +if(cos==0){ +sx=b/sin; +sy=-c/sin; +}else{ +if(sin==0){ +sx=a/cos; +sy=d/cos; +}else{ +abs_cos=ABS(cos); +abs_sin=ABS(sin); +sx=(abs_cos*a/cos+abs_sin*b/sin)/(abs_cos+abs_sin); +sy=(abs_cos*d/cos+abs_sin*-c/sin)/(abs_cos+abs_sin); +} +} +sx=S.a*sx; +sy=S.d*sy; +} +} +} +if(tx!=0||ty!=0){ +CGContextTranslateCTM(_b1,tx,ty); +} +if(a1!=0){ +CGContextRotateCTM(_b1,a1); +} +if(sx!=1||sy!=1){ +CGContextScaleCTM(_b1,sx,sy); +} +if(a2!=0){ +CGContextRotateCTM(_b1,a2); +} +}; +} +CGContextDrawImage=function(_b5,_b6,_b7){ +_b5.drawImage(_b7._image,(_b6.origin.x),(_b6.origin.y),(_b6.size.width),(_b6.size.height)); +}; +to_string=function(_b8){ +return "rgba("+ROUND(_b8.components[0]*255)+", "+ROUND(_b8.components[1]*255)+", "+ROUND(255*_b8.components[2])+", "+_b8.components[3]+")"; +}; +CGContextDrawLinearGradient=function(_b9,_ba,_bb,_bc,_bd){ +var _be=_ba.colors,_bf=_be.length,_c0=_b9.createLinearGradient(_bb.x,_bb.y,_bc.x,_bc.y); +while(_bf--){ +_c0.addColorStop(_ba.locations[_bf],to_string(_be[_bf])); +} +_b9.fillStyle=_c0; +_b9.fill(); +}; +CGBitmapGraphicsContextCreate=function(){ +var _c1=document.createElement("canvas"),_c2=_c1.getContext("2d"); +_c2.DOMElement=_c1; +return _c2; +}; +}else{ +if(CPFeatureIsCompatible(CPVMLFeature)){ +var _c3=["f","t"],_c4=["flat","round","square"],_c5=["miter","round","bevel"],_c6=[" m "," l ","qb"," c "," x ",[" at "," wa "]]; +var _c7=CGBitmapGraphicsContextCreate; +CGBitmapGraphicsContextCreate=function(){ +document.namespaces.add("cg_vml_","urn:schemas-microsoft-com:vml"); +document.createStyleSheet().cssText="cg_vml_\\:*{behavior:url(#default#VML)}"; +CGBitmapGraphicsContextCreate=_c7; +return _c7(); +}; +CGContextClearRect=function(_c8,_c9){ +if(_c8.buffer!=nil){ +_c8.buffer=""; +}else{ +_c8.DOMElement.innerHTML=""; +} +_c8.path=NULL; +}; +var W=10,H=10,Z=10,Z_2=Z/2; +CGContextDrawImage=function(_ca,_cb,_cc){ +var _cd=""; +if(_cc.buffer!=nil){ +_cd=_cc.buffer; +}else{ +var ctm=_ca.gState.CTM,_ce=CGPointApplyAffineTransform(_cb.origin,ctm),_cf=ctm.a==ctm.d&&ctm.b==-ctm.c,vml=["<cg_vml_:group coordsize=\"1,1\" coordorigin=\"0,0\" style=\"width:1;height:1;position:absolute"]; +var _d0=CGRectApplyAffineTransform(_cb,ctm); +vml.push(";padding:0 ",ROUND((_d0.origin.x+_d0.size.width)),"px ",ROUND((_d0.origin.y+_d0.size.height)),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(","M11='",ctm.a,"',M12='",ctm.c,"',M21='",ctm.b,"',M22='",ctm.d,"',","Dx='",ROUND(_ce.x),"', Dy='",ROUND(_ce.y),"', sizingmethod='clip');"); +vml.push("\"><cg_vml_:image src=\"",_cc._image.src,"\" style=\"width:",(_cb.size.width),"px;height:",(_cb.size.height),"px;\"/></g_vml_:group>"); +_cd=vml.join(""); +} +if(_ca.buffer!=nil){ +_ca.buffer+=_cd; +}else{ +_ca.DOMElement.insertAdjacentHTML("BeforeEnd",_cd); +} +}; +CGContextDrawPath=function(_d1,_d2){ +if(!_d1||CGPathIsEmpty(_d1.path)){ +return; +} +var _d3=_d1.path.elements,i=0,_d4=_d1.path.count,_d5=_d1.gState,_d6=(_d2==kCGPathFill||_d2==kCGPathFillStroke)?1:0,_d7=(_d2==kCGPathStroke||_d2==kCGPathFillStroke)?1:0,_d8=_d5.alpha,vml=["<cg_vml_:shape"," fillcolor=\"",_d5.fillStyle,"\" filled=\"",_c3[_d6],"\" style=\"position:absolute;width:",W,";height:",H,";\" coordorigin=\"0 0\" coordsize=\"",Z*W," ",Z*H,"\" stroked=\"",_c3[_d7],"\" strokeweight=\"",_d5.lineWidth,"\" strokecolor=\"",_d5.strokeStyle,"\" path=\""]; +for(;i<_d4;++i){ +var _d9=_d3[i],_da=_d9.type; +switch(_da){ +case kCGPathElementMoveToPoint: +case kCGPathElementAddLineToPoint: +vml.push(_c6[_da],(ROUND(Z*(_d9.x)-Z_2)),",",(ROUND(Z*(_d9.y)-Z_2))); +break; +case kCGPathElementAddQuadCurveToPoint: +vml.push(_c6[_da],(ROUND(Z*(_d9.cpx)-Z_2)),",",(ROUND(Z*(_d9.cpy)-Z_2)),",",(ROUND(Z*(_d9.x)-Z_2)),",",(ROUND(Z*(_d9.y)-Z_2))); +break; +case kCGPathElementAddCurveToPoint: +vml.push(_c6[_da],(ROUND(Z*(_d9.cp1x)-Z_2)),",",(ROUND(Z*(_d9.cp1y)-Z_2)),",",(ROUND(Z*(_d9.cp2x)-Z_2)),",",(ROUND(Z*(_d9.cp2y)-Z_2)),",",(ROUND(Z*(_d9.x)-Z_2)),",",(ROUND(Z*(_d9.y)-Z_2))); +break; +case kCGPathElementCloseSubpath: +vml.push(_c6[_da]); +break; +case kCGPathElementAddArc: +var x=_d9.x,y=_d9.y,_db=_d9.radius,_dc=_d9.clockwise?1:0,_dd=_d9.endAngle,_de=_d9.startAngle,_df={x:x+_db*COS(_de),y:y+_db*SIN(_de)}; +if(_de==_dd&&!_dc){ +vml.push(_c6[kCGPathElementMoveToPoint],(ROUND(Z*(_df.x)-Z_2)),",",(ROUND(Z*(_df.y)-Z_2))); +continue; +} +var end={x:x+_db*COS(_dd),y:y+_db*SIN(_dd)}; +if(_dc&&_de!=_dd&&(_df.x==end.x&&_df.y==end.y)){ +if(_df.x>=x){ +if(_df.y<y){ +_df.x+=0.125; +}else{ +_df.y+=0.125; +} +}else{ +if(end.y<=y){ +end.x+=0.125; +}else{ +end.y+=0.125; +} +} +} +vml.push(_c6[_da][_dc],(ROUND(Z*(x-_db)-Z_2)),",",(ROUND(Z*(y-_db)-Z_2))," ",(ROUND(Z*(x+_db)-Z_2)),",",(ROUND(Z*(y+_db)-Z_2))," ",(ROUND(Z*(_df.x)-Z_2)),",",(ROUND(Z*(_df.y)-Z_2))," ",(ROUND(Z*(end.x)-Z_2)),",",(ROUND(Z*(end.y)-Z_2))); +break; +case kCGPathElementAddArcTo: +break; +} +} +vml.push("\">"); +if(_d5.gradient){ +vml.push(_d5.gradient); +}else{ +if(_d6){ +vml.push("<cg_vml_:fill color=\"",_d5.fillStyle,"\" opacity=\"",_d8,"\" />"); +} +} +if(_d7){ +vml.push("<cg_vml_:stroke opacity=\"",_d8,"\" joinstyle=\"",_c5[_d5.lineJoin],"\" miterlimit=\"",_d5.miterLimit,"\" endcap=\"",_c4[_d5.lineCap],"\" weight=\"",_d5.lineWidth,"","px\" color=\"",_d5.strokeStyle,"\" />"); +} +var _e0=_d5.shadowColor; +if(_e0){ +var _e1=_d5.shadowOffset; +vml.push("<cg_vml_:shadow on=\"t\" offset=\"",_e1.width,"pt ",_e1.height,"pt\" opacity=\"",objj_msgSend(_e0,"alphaComponent"),"\" color=black />"); +} +vml.push("</cg_vml_:shape>"); +_d1.path=NULL; +if(_d1.buffer!=nil){ +_d1.buffer+=vml.join(""); +}else{ +_d1.DOMElement.insertAdjacentHTML("BeforeEnd",vml.join("")); +} +}; +to_string=function(_e2){ +return "rgb("+ROUND(_e2.components[0]*255)+", "+ROUND(_e2.components[1]*255)+", "+ROUND(255*_e2.components[2])+")"; +}; +CGContextDrawLinearGradient=function(_e3,_e4,_e5,_e6,_e7){ +if(!_e3||!_e4){ +return; +} +var vml=nil; +if(_e4.vml_gradient){ +var _e8=objj_msgSend(objj_msgSend(_e4.vml_gradient,"stops"),"sortedArrayUsingSelector:",sel_getUid("comparePosition:")),_e9=objj_msgSend(_e8,"count"); +vml=["<cg_vml_:fill type=\"gradient\" method=\"linear sigma\" "]; +vml.push("angle=\""+(objj_msgSend(_e4.vml_gradient,"angle")+90)+"\" "); +vml.push("colors=\""); +for(var i=0;i<_e9;i++){ +vml.push((objj_msgSend(_e8[i],"position")*100).toFixed(0)+"% "); +vml.push(objj_msgSend(objj_msgSend(objj_msgSend(_e8[i],"color"),"colorForSlideBase:",nil),"cssString")); +if(i<_e9-1){ +vml.push(","); +} +} +vml.push("\" />"); +}else{ +var _ea=_e4.colors,_e9=_ea.length; +vml=["<cg_vml_:fill type=\"gradient\" "]; +vml.push("colors=\""); +for(var i=0;i<_e9;i++){ +vml.push((_e4.locations[i]*100).toFixed(0)+"% "+to_string(_ea[i])+(i<_e9-1?",":"")); +} +vml.push("\" />"); +} +_e3.gState.gradient=vml.join(""); +}; +} +} +p;12;CGGeometry.jt;6756;@STATIC;1.0;t;6737; +CGPointMake=function(x,y){ +return {x:x,y:y}; +}; +CGPointMakeZero=function(){ +return {x:0,y:0}; +}; +CGPointMakeCopy=function(_1){ +return {x:_1.x,y:_1.y}; +}; +CGPointCreateCopy=function(_2){ +return {x:_2.x,y:_2.y}; +}; +CGPointEqualToPoint=function(_3,_4){ +return (_3.x==_4.x&&_3.y==_4.y); +}; +CGStringFromPoint=function(_5){ +return ("{"+_5.x+", "+_5.y+"}"); +}; +CGSizeMake=function(_6,_7){ +return {width:_6,height:_7}; +}; +CGSizeMakeZero=function(){ +return {width:0,height:0}; +}; +CGSizeMakeCopy=function(_8){ +return {width:_8.width,height:_8.height}; +}; +CGSizeCreateCopy=function(_9){ +return {width:_9.width,height:_9.height}; +}; +CGSizeEqualToSize=function(_a,_b){ +return (_a.width==_b.width&&_a.height==_b.height); +}; +CGStringFromSize=function(_c){ +return ("{"+_c.width+", "+_c.height+"}"); +}; +CGRectMake=function(x,y,_d,_e){ +return {origin:{x:x,y:y},size:{width:_d,height:_e}}; +}; +CGRectMakeZero=function(){ +return {origin:{x:0,y:0},size:{width:0,height:0}}; +}; +CGRectMakeCopy=function(_f){ +return {origin:{x:_f.origin.x,y:_f.origin.y},size:{width:_f.size.width,height:_f.size.height}}; +}; +CGRectCreateCopy=function(_10){ +return {origin:{x:_10.origin.x,y:_10.origin.y},size:{width:_10.size.width,height:_10.size.height}}; +}; +CGRectEqualToRect=function(_11,_12){ +return ((_11.origin.x==_12.origin.x&&_11.origin.y==_12.origin.y)&&(_11.size.width==_12.size.width&&_11.size.height==_12.size.height)); +}; +CGStringFromRect=function(_13){ +return ("{"+("{"+_13.origin.x+", "+_13.origin.y+"}")+", "+("{"+_13.size.width+", "+_13.size.height+"}")+"}"); +}; +CGRectOffset=function(_14,dX,dY){ +return {origin:{x:_14.origin.x+dX,y:_14.origin.y+dY},size:{width:_14.size.width,height:_14.size.height}}; +}; +CGRectInset=function(_15,dX,dY){ +return {origin:{x:_15.origin.x+dX,y:_15.origin.y+dY},size:{width:_15.size.width-2*dX,height:_15.size.height-2*dY}}; +}; +CGRectGetHeight=function(_16){ +return (_16.size.height); +}; +CGRectGetMaxX=function(_17){ +return (_17.origin.x+_17.size.width); +}; +CGRectGetMaxY=function(_18){ +return (_18.origin.y+_18.size.height); +}; +CGRectGetMidX=function(_19){ +return (_19.origin.x+(_19.size.width)/2); +}; +CGRectGetMidY=function(_1a){ +return (_1a.origin.y+(_1a.size.height)/2); +}; +CGRectGetMinX=function(_1b){ +return (_1b.origin.x); +}; +CGRectGetMinY=function(_1c){ +return (_1c.origin.y); +}; +CGRectGetWidth=function(_1d){ +return (_1d.size.width); +}; +CGRectIsEmpty=function(_1e){ +return (_1e.size.width<=0||_1e.size.height<=0); +}; +CGRectIsNull=function(_1f){ +return (_1f.size.width<=0||_1f.size.height<=0); +}; +CGRectContainsPoint=function(_20,_21){ +return (_21.x>=(_20.origin.x)&&_21.y>=(_20.origin.y)&&_21.x<(_20.origin.x+_20.size.width)&&_21.y<(_20.origin.y+_20.size.height)); +}; +CGInsetMake=function(top,_22,_23,_24){ +return {top:(top),right:(_22),bottom:(_23),left:(_24)}; +}; +CGInsetMakeZero=function(){ +return {top:(0),right:(0),bottom:(0),left:(0)}; +}; +CGInsetMakeCopy=function(_25){ +return {top:(_25.top),right:(_25.right),bottom:(_25.bottom),left:(_25.left)}; +}; +CGInsetIsEmpty=function(_26){ +return ((_26).top===0&&(_26).right===0&&(_26).bottom===0&&(_26).left===0); +}; +CGInsetEqualToInset=function(_27,_28){ +return ((_27).top===(_28).top&&(_27).right===(_28).right&&(_27).bottom===(_28).bottom&&(_27).left===(_28).left); +}; +CGMinXEdge=0; +CGMinYEdge=1; +CGMaxXEdge=2; +CGMaxYEdge=3; +CGRectNull={origin:{x:Infinity,y:Infinity},size:{width:0,height:0}}; +CGRectDivide=function(_29,_2a,rem,_2b,_2c){ +_2a.origin={x:_29.origin.x,y:_29.origin.y}; +_2a.size={width:_29.size.width,height:_29.size.height}; +rem.origin={x:_29.origin.x,y:_29.origin.y}; +rem.size={width:_29.size.width,height:_29.size.height}; +switch(_2c){ +case CGMinXEdge: +_2a.size.width=_2b; +rem.origin.x+=_2b; +rem.size.width-=_2b; +break; +case CGMaxXEdge: +_2a.origin.x=(_2a.origin.x+_2a.size.width)-_2b; +_2a.size.width=_2b; +rem.size.width-=_2b; +break; +case CGMinYEdge: +_2a.size.height=_2b; +rem.origin.y+=_2b; +rem.size.height-=_2b; +break; +case CGMaxYEdge: +_2a.origin.y=(_2a.origin.y+_2a.size.height)-_2b; +_2a.size.height=_2b; +rem.size.height-=_2b; +} +}; +CGRectContainsRect=function(_2d,_2e){ +var _2f=CGRectUnion(_2d,_2e); +return ((_2f.origin.x==_2d.origin.x&&_2f.origin.y==_2d.origin.y)&&(_2f.size.width==_2d.size.width&&_2f.size.height==_2d.size.height)); +}; +CGRectIntersectsRect=function(_30,_31){ +var _32=CGRectIntersection(_30,_31); +return !(_32.size.width<=0||_32.size.height<=0); +}; +CGRectIntegral=function(_33){ +_33=CGRectStandardize(_33); +var x=FLOOR((_33.origin.x)),y=FLOOR((_33.origin.y)); +_33.size.width=CEIL((_33.origin.x+_33.size.width))-x; +_33.size.height=CEIL((_33.origin.y+_33.size.height))-y; +_33.origin.x=x; +_33.origin.y=y; +return _33; +}; +CGRectIntersection=function(_34,_35){ +var _36={origin:{x:MAX((_34.origin.x),(_35.origin.x)),y:MAX((_34.origin.y),(_35.origin.y))},size:{width:0,height:0}}; +_36.size.width=MIN((_34.origin.x+_34.size.width),(_35.origin.x+_35.size.width))-(_36.origin.x); +_36.size.height=MIN((_34.origin.y+_34.size.height),(_35.origin.y+_35.size.height))-(_36.origin.y); +return (_36.size.width<=0||_36.size.height<=0)?{origin:{x:0,y:0},size:{width:0,height:0}}:_36; +}; +CGRectStandardize=function(_37){ +var _38=(_37.size.width),_39=(_37.size.height),_3a={origin:{x:_37.origin.x,y:_37.origin.y},size:{width:_37.size.width,height:_37.size.height}}; +if(_38<0){ +_3a.origin.x+=_38; +_3a.size.width=-_38; +} +if(_39<0){ +_3a.origin.y+=_39; +_3a.size.height=-_39; +} +return _3a; +}; +CGRectUnion=function(_3b,_3c){ +var _3d=!_3b||_3b===CGRectNull,_3e=!_3c||_3c===CGRectNull; +if(_3d){ +return _3e?CGRectNull:_3c; +} +if(_3e){ +return _3d?CGRectNull:_3b; +} +var _3f=MIN((_3b.origin.x),(_3c.origin.x)),_40=MIN((_3b.origin.y),(_3c.origin.y)),_41=MAX((_3b.origin.x+_3b.size.width),(_3c.origin.x+_3c.size.width)),_42=MAX((_3b.origin.y+_3b.size.height),(_3c.origin.y+_3c.size.height)); +return {origin:{x:_3f,y:_40},size:{width:_41-_3f,height:_42-_40}}; +}; +CGPointFromString=function(_43){ +var _44=_43.indexOf(","); +return {x:parseInt(_43.substr(1,_44-1)),y:parseInt(_43.substring(_44+1,_43.length))}; +}; +CGSizeFromString=function(_45){ +var _46=_45.indexOf(","); +return {width:parseInt(_45.substr(1,_46-1)),height:parseInt(_45.substring(_46+1,_45.length))}; +}; +CGRectFromString=function(_47){ +var _48=_47.indexOf(",",_47.indexOf(",")+1); +return {origin:CGPointFromString(_47.substr(1,_48-1)),size:CGSizeFromString(_47.substring(_48+2,_47.length))}; +}; +CGPointFromEvent=function(_49){ +return {x:_49.clientX,y:_49.clientY}; +}; +CGInsetFromString=function(_4a){ +var _4b=_4a.substr(1,_4a.length-2).split(","); +return {top:(parseFloat(_4b[0])),right:(parseFloat(_4b[1])),bottom:(parseFloat(_4b[2])),left:(parseFloat(_4b[3]))}; +}; +CGInsetFromCPString=CGInsetFromString; +CPStringFromCGInset=function(_4c){ +return "{"+_4c.top+", "+_4c.left+", "+_4c.bottom+", "+_4c.right+"}"; +}; +p;12;CGGradient.jt;622;@STATIC;1.0;i;9;CGColor.ji;14;CGColorSpace.jt;572; +objj_executeFile("CGColor.j",YES); +objj_executeFile("CGColorSpace.j",YES); +kCGGradientDrawsBeforeStartLocation=1<<0; +kCGGradientDrawsAfterEndLocation=1<<1; +CGGradientCreateWithColorComponents=function(_1,_2,_3,_4){ +if(arguments["count"]==NULL){ +var _4=_3.length; +} +var _5=[]; +while(_4--){ +var _6=_4*4; +_5[_4]=CGColorCreate(_1,_2.slice(_6,_6+4)); +} +return CGGradientCreateWithColors(_1,_5,_3); +}; +CGGradientCreateWithColors=function(_7,_8,_9){ +return {colorspace:_7,colors:_8,locations:_9}; +}; +CGGradientRelease=function(){ +}; +CGGradientRetain=function(_a){ +return _a; +}; +p;8;CGPath.jt;7466;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.jt;7406; +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CGAffineTransform.j",YES); +kCGPathElementMoveToPoint=0; +kCGPathElementAddLineToPoint=1; +kCGPathElementAddQuadCurveToPoint=2; +kCGPathElementAddCurveToPoint=3; +kCGPathElementCloseSubpath=4; +kCGPathElementAddArc=5; +kCGPathElementAddArcToPoint=6; +CGPathCreateMutable=function(){ +return {count:0,start:NULL,current:NULL,elements:[]}; +}; +CGPathCreateMutableCopy=function(_1){ +var _2=CGPathCreateMutable(); +CGPathAddPath(_2,_1); +return _2; +}; +CGPathCreateCopy=function(_3){ +return CGPathCreateMutableCopy(_3); +}; +CGPathRelease=function(_4){ +}; +CGPathRetain=function(_5){ +return _5; +}; +CGPathAddArc=function(_6,_7,x,y,_8,_9,_a,_b){ +if(_7&&!(_7.a==1&&_7.b==0&&_7.c==0&&_7.d==1&&_7.tx==0&&_7.ty==0)){ +var _c={x:x,y:y},_d={x:COS(_a),y:SIN(_a)},_e={x:COS(_9),y:SIN(_9)}; +_d={x:_d.x*_7.a+_d.y*_7.c+_7.tx,y:_d.x*_7.b+_d.y*_7.d+_7.ty}; +_e={x:_e.x*_7.a+_e.y*_7.c+_7.tx,y:_e.x*_7.b+_e.y*_7.d+_7.ty}; +_c={x:_c.x*_7.a+_c.y*_7.c+_7.tx,y:_c.x*_7.b+_c.y*_7.d+_7.ty}; +x=_c.x; +y=_c.y; +var _f=_a,_10=_9; +_a=ATAN2(_d.y-_7.ty,_d.x-_7.tx); +_9=ATAN2(_e.y-_7.ty,_e.x-_7.tx); +if(_a==_9&&_f!=_10){ +if(_10>_f){ +_a=_a-PI2; +}else{ +_9=_9-PI2; +} +} +_8={width:_8,height:0}; +_8={width:_8.width*_7.a+_8.height*_7.c,height:_8.width*_7.b+_8.height*_7.d}; +_8=SQRT(_8.width*_8.width+_8.height*_8.height); +} +_6.current={x:x+_8*COS(_a),y:y+_8*SIN(_a)}; +_6.elements[_6.count++]={type:kCGPathElementAddArc,x:x,y:y,radius:_8,startAngle:_9,endAngle:_a}; +}; +CGPathAddArcToPoint=function(_11,_12,x1,y1,x2,y2,_13){ +}; +CGPathAddCurveToPoint=function(_14,_15,_16,_17,_18,_19,x,y){ +var cp1={x:_16,y:_17},cp2={x:_18,y:_19},end={x:x,y:y}; +if(_15){ +cp1={x:cp1.x*_15.a+cp1.y*_15.c+_15.tx,y:cp1.x*_15.b+cp1.y*_15.d+_15.ty}; +cp2={x:cp2.x*_15.a+cp2.y*_15.c+_15.tx,y:cp2.x*_15.b+cp2.y*_15.d+_15.ty}; +end={x:end.x*_15.a+end.y*_15.c+_15.tx,y:end.x*_15.b+end.y*_15.d+_15.ty}; +} +_14.current=end; +_14.elements[_14.count++]={type:kCGPathElementAddCurveToPoint,cp1x:cp1.x,cp1y:cp1.y,cp2x:cp2.x,cp2y:cp2.y,x:end.x,y:end.y}; +}; +CGPathAddLines=function(_1a,_1b,_1c,_1d){ +var i=1; +if(arguments["count"]==NULL){ +var _1d=_1c.length; +} +if(!_1a||_1d<2){ +return; +} +CGPathMoveToPoint(_1a,_1b,_1c[0].x,_1c[0].y); +for(;i<_1d;++i){ +CGPathAddLineToPoint(_1a,_1b,_1c[i].x,_1c[i].y); +} +}; +CGPathAddLineToPoint=function(_1e,_1f,x,y){ +var _20={x:x,y:y}; +if(_1f!=NULL){ +_20={x:_20.x*_1f.a+_20.y*_1f.c+_1f.tx,y:_20.x*_1f.b+_20.y*_1f.d+_1f.ty}; +} +_1e.elements[_1e.count++]={type:kCGPathElementAddLineToPoint,x:_20.x,y:_20.y}; +_1e.current=_20; +}; +CGPathAddPath=function(_21,_22,_23){ +for(var i=0,_24=_23.count;i<_24;++i){ +var _25=_23.elements[i]; +switch(_25.type){ +case kCGPathElementAddLineToPoint: +CGPathAddLineToPoint(_21,_22,_25.x,_25.y); +break; +case kCGPathElementAddCurveToPoint: +CGPathAddCurveToPoint(_21,_22,_25.cp1x,_25.cp1y,_25.cp2x,_25.cp2y,_25.x,_25.y); +break; +case kCGPathElementAddArc: +CGPathAddArc(_21,_22,_25.x,_25.y,_25.radius,_25.startAngle,_25.endAngle,_25.isClockwise); +break; +case kCGPathElementAddQuadCurveToPoint: +CGPathAddQuadCurveToPoint(_21,_22,_25.cpx,_25.cpy,_25.x,_25.y); +break; +case kCGPathElementMoveToPoint: +CGPathMoveToPoint(_21,_22,_25.x,_25.y); +break; +case kCGPathElementCloseSubpath: +CGPathCloseSubpath(_21); +break; +} +} +}; +CGPathAddQuadCurveToPoint=function(_26,_27,cpx,cpy,x,y){ +var cp={x:cpx,y:cpy},end={x:x,y:y}; +if(_27){ +cp={x:cp.x*_27.a+cp.y*_27.c+_27.tx,y:cp.x*_27.b+cp.y*_27.d+_27.ty}; +end={x:end.x*_27.a+end.y*_27.c+_27.tx,y:end.x*_27.b+end.y*_27.d+_27.ty}; +} +_26.elements[_26.count++]={type:kCGPathElementAddQuadCurveToPoint,cpx:cp.x,cpy:cp.y,x:end.x,y:end.y}; +_26.current=end; +}; +CGPathAddRect=function(_28,_29,_2a){ +CGPathAddRects(_28,_29,[_2a],1); +}; +CGPathAddRects=function(_2b,_2c,_2d,_2e){ +var i=0; +if(arguments["count"]==NULL){ +var _2e=_2d.length; +} +for(;i<_2e;++i){ +var _2f=_2d[i]; +CGPathMoveToPoint(_2b,_2c,(_2f.origin.x),(_2f.origin.y)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x+_2f.size.width),(_2f.origin.y)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x+_2f.size.width),(_2f.origin.y+_2f.size.height)); +CGPathAddLineToPoint(_2b,_2c,(_2f.origin.x),(_2f.origin.y+_2f.size.height)); +CGPathCloseSubpath(_2b); +} +}; +CGPathMoveToPoint=function(_30,_31,x,y){ +var _32={x:x,y:y},_33=_30.count; +if(_31!=NULL){ +_32={x:_32.x*_31.a+_32.y*_31.c+_31.tx,y:_32.x*_31.b+_32.y*_31.d+_31.ty}; +} +_30.start=_32; +_30.current=_32; +var _34=_30.elements[_33-1]; +if(_33!=0&&_34.type==kCGPathElementMoveToPoint){ +_34.x=_32.x; +_34.y=_32.y; +}else{ +_30.elements[_30.count++]={type:kCGPathElementMoveToPoint,x:_32.x,y:_32.y}; +} +}; +var _35=4*((SQRT2-1)/3); +CGPathWithEllipseInRect=function(_36){ +var _37=CGPathCreateMutable(); +if((_36.size.width)==(_36.size.height)){ +CGPathAddArc(_37,nil,(_36.origin.x+(_36.size.width)/2),(_36.origin.y+(_36.size.height)/2),(_36.size.width)/2,0,2*PI,YES); +}else{ +var _38={width:(_36.size.width)/2,height:(_36.size.height)/2},_39={x:(_36.origin.x)+_38.width,y:(_36.origin.y)+_38.height}; +CGPathMoveToPoint(_37,nil,_39.x,_39.y-_38.height); +CGPathAddCurveToPoint(_37,nil,_39.x+(_35*_38.width),_39.y-_38.height,_39.x+_38.width,_39.y-(_35*_38.height),_39.x+_38.width,_39.y); +CGPathAddCurveToPoint(_37,nil,_39.x+_38.width,_39.y+(_35*_38.height),_39.x+(_35*_38.width),_39.y+_38.height,_39.x,_39.y+_38.height); +CGPathAddCurveToPoint(_37,nil,_39.x-(_35*_38.width),_39.y+_38.height,_39.x-_38.width,_39.y+(_35*_38.height),_39.x-_38.width,_39.y); +CGPathAddCurveToPoint(_37,nil,_39.x-_38.width,_39.y-(_35*_38.height),_39.x-(_35*_38.width),_39.y-_38.height,_39.x,_39.y-_38.height); +} +CGPathCloseSubpath(_37); +return _37; +}; +CGPathWithRoundedRectangleInRect=function(_3a,_3b,_3c,ne,se,sw,nw){ +var _3d=CGPathCreateMutable(),_3e=(_3a.origin.x),_3f=(_3a.origin.x+_3a.size.width),_40=(_3a.origin.y),_41=(_3a.origin.y+_3a.size.height); +CGPathMoveToPoint(_3d,nil,_3e+_3b,_40); +if(ne){ +CGPathAddLineToPoint(_3d,nil,_3f-_3b,_40); +CGPathAddCurveToPoint(_3d,nil,_3f-_3b,_40,_3f,_40,_3f,_40+_3b); +}else{ +CGPathAddLineToPoint(_3d,nil,_3f,_40); +} +if(se){ +CGPathAddLineToPoint(_3d,nil,_3f,_41-_3b); +CGPathAddCurveToPoint(_3d,nil,_3f,_41-_3b,_3f,_41,_3f-_3b,_41); +}else{ +CGPathAddLineToPoint(_3d,nil,_3f,_41); +} +if(sw){ +CGPathAddLineToPoint(_3d,nil,_3e+_3b,_41); +CGPathAddCurveToPoint(_3d,nil,_3e+_3b,_41,_3e,_41,_3e,_41-_3b); +}else{ +CGPathAddLineToPoint(_3d,nil,_3e,_41); +} +if(nw){ +CGPathAddLineToPoint(_3d,nil,_3e,_40+_3b); +CGPathAddCurveToPoint(_3d,nil,_3e,_40+_3b,_3e,_40,_3e+_3b,_40); +}else{ +CGPathAddLineToPoint(_3d,nil,_3e,_40); +} +CGPathCloseSubpath(_3d); +return _3d; +}; +CGPathCloseSubpath=function(_42){ +var _43=_42.count; +if(_43==0||_42.elements[_43-1].type==kCGPathElementCloseSubpath){ +return; +} +_42.elements[_42.count++]={type:kCGPathElementCloseSubpath,points:[_42.start]}; +}; +CGPathEqualToPath=function(_44,_45){ +if(_44==_45){ +return YES; +} +if(_44.count!=_45.count||!(_44.start.x==_45.start.x&&_44.start.y==_45.start.y)||!(_44.current.x==_45.current.x&&_44.current.y==_45.current.y)){ +return NO; +} +var i=0,_46=_44.count; +for(;i<_46;++i){ +var _47=_44[i],_48=_45[i]; +if(_47.type!=_48.type){ +return NO; +} +if((_47.type==kCGPathElementAddArc||_47.type==kCGPathElementAddArcToPoint)&&_47.radius!=_48.radius){ +return NO; +} +var j=_47.points.length; +while(j--){ +if(!(_47.points[j].x==_48.points[j].x&&_47.points[j].y==_48.points[j].y)){ +return NO; +} +} +} +return YES; +}; +CGPathGetCurrentPoint=function(_49){ +return {x:_49.current.x,y:_49.current.y}; +}; +CGPathIsEmpty=function(_4a){ +return !_4a||_4a.count==0; +}; +p;18;_CPMenuBarWindow.jt;12977;@STATIC;1.0;i;15;_CPMenuWindow.jt;12937; +objj_executeFile("_CPMenuWindow.j",YES); +var _1=28,_2=10,_3=10,_4=10; +var _5=nil,_6=nil; +var _7=objj_allocateClassPair(CPPanel,"_CPMenuBarWindow"),_8=_7.isa; +class_addIvars(_7,[new objj_ivar("_menu"),new objj_ivar("_highlightView"),new objj_ivar("_menuItemViews"),new objj_ivar("_trackingMenuItem"),new objj_ivar("_iconImageView"),new objj_ivar("_titleField"),new objj_ivar("_textColor"),new objj_ivar("_titleColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_titleShadowColor"),new objj_ivar("_highlightColor"),new objj_ivar("_highlightTextColor"),new objj_ivar("_highlightTextShadowColor")]); +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("init"),function(_9,_a){ +with(_9){ +var _b=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"contentBounds"); +_b.size.height=_1; +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("_CPMenuBarWindow").super_class},"initWithContentRect:styleMask:",_b,CPBorderlessWindowMask); +if(_9){ +objj_msgSend(_9,"setLevel:",CPMainMenuWindowLevel); +objj_msgSend(_9,"setAutoresizingMask:",CPWindowWidthSizable); +var _c=objj_msgSend(_9,"contentView"); +objj_msgSend(_c,"setAutoresizesSubviews:",NO); +objj_msgSend(_9,"setBecomesKeyOnlyIfNeeded:",YES); +_iconImageView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(0,0,16,16)); +objj_msgSend(_c,"addSubview:",_iconImageView); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",13)); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_c,"addSubview:",_titleField); +} +return _9; +} +}),new objj_method(sel_getUid("setTitle:"),function(_d,_e,_f){ +with(_d){ +objj_msgSend(_titleField,"setStringValue:",_f); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_d,"tile"); +} +}),new objj_method(sel_getUid("setIconImage:"),function(_10,_11,_12){ +with(_10){ +objj_msgSend(_iconImageView,"setImage:",_12); +objj_msgSend(_iconImageView,"setHidden:",_12==nil); +objj_msgSend(_10,"tile"); +} +}),new objj_method(sel_getUid("setIconImageAlphaValue:"),function(_13,_14,_15){ +with(_13){ +objj_msgSend(_iconImageView,"setAlphaValue:",_15); +} +}),new objj_method(sel_getUid("setColor:"),function(_16,_17,_18){ +with(_16){ +if(!_18){ +if(!_5){ +_5=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPMenuBarWindow,"class")),"pathForResource:","_CPMenuBarWindow/_CPMenuBarWindowBackground.png"),CGSizeMake(1,28))); +} +objj_msgSend(objj_msgSend(_16,"contentView"),"setBackgroundColor:",_5); +}else{ +objj_msgSend(objj_msgSend(_16,"contentView"),"setBackgroundColor:",_18); +} +} +}),new objj_method(sel_getUid("setTextColor:"),function(_19,_1a,_1b){ +with(_19){ +if(_textColor==_1b){ +return; +} +_textColor=_1b; +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setTextColor:"),_textColor); +} +}),new objj_method(sel_getUid("setTitleColor:"),function(_1c,_1d,_1e){ +with(_1c){ +if(_titleColor==_1e){ +return; +} +_titleColor=_1e; +objj_msgSend(_titleField,"setTextColor:",_1e?_1e:objj_msgSend(CPColor,"blackColor")); +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_1f,_20,_21){ +with(_1f){ +if(_textShadowColor==_21){ +return; +} +_textShadowColor=_21; +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:withObject:",sel_getUid("setTextShadowColor:"),_textShadowColor); +} +}),new objj_method(sel_getUid("setTitleShadowColor:"),function(_22,_23,_24){ +with(_22){ +if(_titleShadowColor==_24){ +return; +} +_titleShadowColor=_24; +objj_msgSend(_titleField,"setTextShadowColor:",_24?_24:objj_msgSend(CPColor,"whiteColor")); +} +}),new objj_method(sel_getUid("setHighlightColor:"),function(_25,_26,_27){ +with(_25){ +if(_highlightColor==_27){ +return; +} +_highlightColor=_27; +} +}),new objj_method(sel_getUid("setHighlightTextColor:"),function(_28,_29,_2a){ +with(_28){ +if(_highlightTextColor==_2a){ +return; +} +_highlightTextColor=_2a; +} +}),new objj_method(sel_getUid("setHighlightTextShadowColor:"),function(_2b,_2c,_2d){ +with(_2b){ +if(_highlightTextShadowColor==_2d){ +return; +} +_highlightTextShadowColor=_2d; +} +}),new objj_method(sel_getUid("setMenu:"),function(_2e,_2f,_30){ +with(_2e){ +if(_menu==_30){ +return; +} +var _31=objj_msgSend(CPNotificationCenter,"defaultCenter"); +if(_menu){ +objj_msgSend(_31,"removeObserver:name:object:",_2e,CPMenuDidAddItemNotification,_menu); +objj_msgSend(_31,"removeObserver:name:object:",_2e,CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_31,"removeObserver:name:object:",_2e,CPMenuDidRemoveItemNotification,_menu); +var _32=objj_msgSend(_menu,"itemArray"),_33=_32.length; +while(_33--){ +objj_msgSend(objj_msgSend(_32[_33],"_menuItemView"),"removeFromSuperview"); +} +} +_menu=_30; +if(_menu){ +objj_msgSend(_31,"addObserver:selector:name:object:",_2e,sel_getUid("menuDidAddItem:"),CPMenuDidAddItemNotification,_menu); +objj_msgSend(_31,"addObserver:selector:name:object:",_2e,sel_getUid("menuDidChangeItem:"),CPMenuDidChangeItemNotification,_menu); +objj_msgSend(_31,"addObserver:selector:name:object:",_2e,sel_getUid("menuDidRemoveItem:"),CPMenuDidRemoveItemNotification,_menu); +} +_menuItemViews=[]; +var _34=objj_msgSend(_2e,"contentView"),_32=objj_msgSend(_menu,"itemArray"),_33=_32.length; +for(index=0;index<_33;++index){ +var _35=_32[index],_36=objj_msgSend(_35,"_menuItemView"); +_menuItemViews.push(_36); +objj_msgSend(_36,"setTextColor:",_textColor); +objj_msgSend(_36,"setHidden:",objj_msgSend(_35,"isHidden")); +objj_msgSend(_36,"synchronizeWithMenuItem"); +objj_msgSend(_34,"addSubview:",_36); +} +objj_msgSend(_2e,"tile"); +} +}),new objj_method(sel_getUid("menuDidChangeItem:"),function(_37,_38,_39){ +with(_37){ +var _3a=objj_msgSend(_menu,"itemAtIndex:",objj_msgSend(objj_msgSend(_39,"userInfo"),"objectForKey:","CPMenuItemIndex")),_3b=objj_msgSend(_3a,"_menuItemView"); +objj_msgSend(_3b,"setHidden:",objj_msgSend(_3a,"isHidden")); +objj_msgSend(_3b,"synchronizeWithMenuItem"); +objj_msgSend(_37,"tile"); +} +}),new objj_method(sel_getUid("menuDidAddItem:"),function(_3c,_3d,_3e){ +with(_3c){ +var _3f=objj_msgSend(objj_msgSend(_3e,"userInfo"),"objectForKey:","CPMenuItemIndex"),_40=objj_msgSend(_menu,"itemAtIndex:",_3f),_41=objj_msgSend(_40,"_menuItemView"); +objj_msgSend(_menuItemViews,"insertObject:atIndex:",_41,_3f); +objj_msgSend(_41,"setTextColor:",_textColor); +objj_msgSend(_41,"setHidden:",objj_msgSend(_40,"isHidden")); +objj_msgSend(_41,"synchronizeWithMenuItem"); +objj_msgSend(objj_msgSend(_3c,"contentView"),"addSubview:",_41); +objj_msgSend(_3c,"tile"); +} +}),new objj_method(sel_getUid("menuDidRemoveItem:"),function(_42,_43,_44){ +with(_42){ +var _45=objj_msgSend(objj_msgSend(_44,"userInfo"),"objectForKey:","CPMenuItemIndex"),_46=objj_msgSend(_menuItemViews,"objectAtIndex:",_45); +objj_msgSend(_menuItemViews,"removeObjectAtIndex:",_45); +objj_msgSend(_46,"removeFromSuperview"); +objj_msgSend(_42,"tile"); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_47,_48,_49){ +with(_47){ +var _4a=CGRectInset(objj_msgSend(objj_msgSend(_47,"platformWindow"),"visibleFrame"),5,0); +_4a.size.height-=5; +objj_msgSend(objj_msgSend(_CPMenuManager,"sharedMenuManager"),"beginTracking:menuContainer:constraintRect:callback:",_49,_47,_4a,function(_4b,_4c){ +objj_msgSend(_4c,"_performActionOfHighlightedItemChain"); +objj_msgSend(_4c,"_highlightItemAtIndex:",CPNotFound); +}); +} +}),new objj_method(sel_getUid("font"),function(_4d,_4e){ +with(_4d){ +objj_msgSend(CPFont,"systemFontOfSize:",12); +} +}),new objj_method(sel_getUid("tile"),function(_4f,_50){ +with(_4f){ +var _51=objj_msgSend(_menu,"itemArray"),_52=0,_53=_51.length,x=_3,y=0,_54=YES; +for(;_52<_53;++_52){ +var _55=_51[_52]; +if(objj_msgSend(_55,"isSeparatorItem")){ +x=CGRectGetWidth(objj_msgSend(_4f,"frame"))-_4; +_54=NO; +continue; +} +if(objj_msgSend(_55,"isHidden")){ +continue; +} +var _56=objj_msgSend(_55,"_menuItemView"),_57=objj_msgSend(_56,"frame"); +if(_54){ +objj_msgSend(_56,"setFrame:",CGRectMake(x,0,CGRectGetWidth(_57),_1)); +x+=CGRectGetWidth(objj_msgSend(_56,"frame")); +}else{ +objj_msgSend(_56,"setFrame:",CGRectMake(x-CGRectGetWidth(_57),0,CGRectGetWidth(_57),_1)); +x=CGRectGetMinX(objj_msgSend(_56,"frame")); +} +} +var _58=objj_msgSend(objj_msgSend(_4f,"contentView"),"bounds"),_59=objj_msgSend(_titleField,"frame"); +if(objj_msgSend(_iconImageView,"isHidden")){ +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_58)-CGRectGetWidth(_59))/2,(CGRectGetHeight(_58)-CGRectGetHeight(_59))/2)); +}else{ +var _5a=objj_msgSend(_iconImageView,"frame"),_5b=CGRectGetWidth(_5a),_5c=_5b+CGRectGetWidth(_59); +objj_msgSend(_iconImageView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_58)-_5c)/2,(CGRectGetHeight(_58)-CGRectGetHeight(_5a))/2)); +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_58)-_5c)/2+_5b,(CGRectGetHeight(_58)-CGRectGetHeight(_59))/2)); +} +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_5d,_5e,_5f,_60,_61){ +with(_5d){ +var _62=objj_msgSend(_5d,"frame").size; +objj_msgSendSuper({receiver:_5d,super_class:objj_getClass("_CPMenuBarWindow").super_class},"setFrame:display:animate:",_5f,_60,_61); +if(!(_62.width==_5f.size.width&&_62.height==_5f.size.height)){ +objj_msgSend(_5d,"tile"); +} +} +})]); +class_addMethods(_8,[new objj_method(sel_getUid("initialize"),function(_63,_64){ +with(_63){ +if(_63!=objj_msgSend(_CPMenuBarWindow,"class")){ +return; +} +var _65=objj_msgSend(CPBundle,"bundleForClass:",_63); +_6=objj_msgSend(CPFont,"boldSystemFontOfSize:",12); +} +}),new objj_method(sel_getUid("font"),function(_66,_67){ +with(_66){ +return _6; +} +})]); +var _7=objj_getClass("_CPMenuBarWindow"); +if(!_7){ +throw new SyntaxError("*** Could not find definition for class \"_CPMenuBarWindow\""); +} +var _8=_7.isa; +class_addMethods(_7,[new objj_method(sel_getUid("isMenuBar"),function(_68,_69){ +with(_68){ +return YES; +} +}),new objj_method(sel_getUid("globalFrame"),function(_6a,_6b){ +with(_6a){ +return objj_msgSend(_6a,"frame"); +} +}),new objj_method(sel_getUid("scrollingStateForPoint:"),function(_6c,_6d,_6e){ +with(_6c){ +return _CPMenuManagerScrollingStateNone; +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_6f,_70,_71){ +with(_6f){ +var _72=objj_msgSend(_menu,"itemArray"),_73=_72.length; +while(_73--){ +var _74=_72[_73]; +if(objj_msgSend(_74,"isHidden")||objj_msgSend(_74,"isSeparatorItem")){ +continue; +} +if(CGRectContainsPoint(objj_msgSend(_6f,"rectForItemAtIndex:",_73),_71)){ +return _73; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_75,_76,_77){ +with(_75){ +var _78=objj_msgSend(_menu,"itemAtIndex:",_77===CPNotFound?0:_77); +return objj_msgSend(objj_msgSend(_78,"_menuItemView"),"frame"); +} +})]); +var _7=objj_allocateClassPair(_CPMenuView,"_CPMenuBarView"),_8=_7.isa; +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("rectForItemAtIndex:"),function(_79,_7a,_7b){ +with(_79){ +return objj_msgSend(_menuItemViews[_7b===CPNotFound?0:_7b],"frame"); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_7c,_7d,_7e){ +with(_7c){ +var _7f=objj_msgSend(_7c,"bounds"); +if(!CGRectContainsPoint(_7f,_7e)){ +return CPNotFound; +} +var x=_7e.x,low=0,_80=_visibleMenuItemInfos.length-1; +while(low<=_80){ +var _81=FLOOR(low+(_80-low)/2),_82=_visibleMenuItemInfos[_81],_83=objj_msgSend(_82.view,"frame"); +if(x<CGRectGetMinX(_83)){ +_80=_81-1; +}else{ +if(x>CGRectGetMaxX(_83)){ +low=_81+1; +}else{ +return _82.index; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tile"),function(_84,_85){ +with(_84){ +var _86=objj_msgSend(_menu,"itemArray"),_87=0,_88=_86.length,x=_3,y=0,_89=YES; +for(;_87<_88;++_87){ +var _8a=_86[_87]; +if(objj_msgSend(_8a,"isSeparatorItem")){ +x=CGRectGetWidth(objj_msgSend(_84,"frame"))-_4; +_89=NO; +continue; +} +if(objj_msgSend(_8a,"isHidden")){ +continue; +} +var _8b=objj_msgSend(_8a,"_menuItemView"),_8c=objj_msgSend(_8b,"frame"); +if(_89){ +objj_msgSend(_8b,"setFrameOrigin:",CGPointMake(x,(_1-1-CGRectGetHeight(_8c))/2)); +x+=CGRectGetWidth(objj_msgSend(_8b,"frame"))+_2; +}else{ +objj_msgSend(_8b,"setFrameOrigin:",CGPointMake(x-CGRectGetWidth(_8c),(_1-1-CGRectGetHeight(_8c))/2)); +x=CGRectGetMinX(objj_msgSend(_8b,"frame"))-_2; +} +} +var _8d=objj_msgSend(objj_msgSend(_84,"contentView"),"bounds"),_8e=objj_msgSend(_titleField,"frame"); +if(objj_msgSend(_iconImageView,"isHidden")){ +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8d)-CGRectGetWidth(_8e))/2,(CGRectGetHeight(_8d)-CGRectGetHeight(_8e))/2)); +}else{ +var _8f=objj_msgSend(_iconImageView,"frame"),_90=CGRectGetWidth(_8f),_91=_90+CGRectGetWidth(_8e); +objj_msgSend(_iconImageView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8d)-_91)/2,(CGRectGetHeight(_8d)-CGRectGetHeight(_8f))/2)); +objj_msgSend(_titleField,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_8d)-_91)/2+_90,(CGRectGetHeight(_8d)-CGRectGetHeight(_8e))/2)); +} +} +})]); +p;16;_CPMenuManager.jt;8469;@STATIC;1.0;I;21;Foundation/CPObject.jt;8424; +objj_executeFile("Foundation/CPObject.j",NO); +_CPMenuManagerScrollingStateUp=-1,_CPMenuManagerScrollingStateDown=1,_CPMenuManagerScrollingStateNone=0; +var _1=500; +var _2=nil; +var _3=objj_allocateClassPair(CPObject,"_CPMenuManager"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_startTime"),new objj_ivar("_scrollingState"),new objj_ivar("_lastGlobalLocation"),new objj_ivar("_lastMouseOverMenuView"),new objj_ivar("_constraintRect"),new objj_ivar("_menuContainerStack"),new objj_ivar("_trackingCallback")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +if(_2){ +return _2; +} +return objj_msgSendSuper({receiver:_5,super_class:objj_getClass("_CPMenuManager").super_class},"init"); +} +}),new objj_method(sel_getUid("trackingMenuContainer"),function(_7,_8){ +with(_7){ +return _menuContainerStack[0]; +} +}),new objj_method(sel_getUid("trackingMenu"),function(_9,_a){ +with(_9){ +return objj_msgSend(objj_msgSend(_9,"trackingMenuContainer"),"menu"); +} +}),new objj_method(sel_getUid("beginTracking:menuContainer:constraintRect:callback:"),function(_b,_c,_d,_e,_f,_10){ +with(_b){ +var _11=objj_msgSend(_e,"menu"); +CPApp._activeMenu=_11; +_startTime=objj_msgSend(_d,"timestamp"); +_scrollingState=_CPMenuManagerScrollingStateNone; +_constraintRect=_f; +_menuContainerStack=[_e]; +_trackingCallback=_10; +if(_11===objj_msgSend(CPApp,"mainMenu")){ +var _12=objj_msgSend(_d,"globalLocation"); +var _13=objj_msgSend(_e,"convertGlobalToBase:",_12); +var _14=objj_msgSend(_e,"itemIndexAtPoint:",_13),_15=_14!==CPNotFound?objj_msgSend(_11,"itemAtIndex:",_14):nil; +_menuBarButtonItemIndex=_14; +_menuBarButtonMenuContainer=_e; +if(objj_msgSend(_15,"_isMenuBarButton")){ +return objj_msgSend(_b,"trackMenuBarButtonEvent:",_d); +} +} +objj_msgSend(_b,"trackEvent:",_d); +} +}),new objj_method(sel_getUid("trackEvent:"),function(_16,_17,_18){ +with(_16){ +var _19=objj_msgSend(_18,"type"),_1a=objj_msgSend(_16,"trackingMenu"); +if(_19===CPAppKitDefined){ +return objj_msgSend(_16,"completeTracking"); +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_16,sel_getUid("trackEvent:"),CPPeriodicMask|CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPAppKitDefinedMask,nil,nil,YES); +var _1b=_19===CPPeriodic?_lastGlobalLocation:objj_msgSend(_18,"globalLocation"); +_lastGlobalLocation=_1b; +var _1c=objj_msgSend(_16,"menuContainerForPoint:",_1b),_1d=objj_msgSend(_1c,"menu"),_1e=objj_msgSend(_1c,"convertGlobalToBase:",_1b); +var _1f=_1c?objj_msgSend(_1c,"itemIndexAtPoint:",_1e):CPNotFound,_20=_1f!==CPNotFound?objj_msgSend(_1d,"itemAtIndex:",_1f):nil; +if(!objj_msgSend(_20,"isEnabled")||objj_msgSend(_20,"_isMenuBarButton")){ +_1f=CPNotFound; +_20=nil; +} +var _21=objj_msgSend(_20,"view"); +if(_19===CPPeriodic){ +if(_scrollingState===_CPMenuManagerScrollingStateUp){ +objj_msgSend(_1c,"scrollUp"); +}else{ +if(_scrollingState===_CPMenuManagerScrollingStateDown){ +objj_msgSend(_1c,"scrollDown"); +} +} +} +if(_21){ +if(!_lastMouseOverMenuView){ +objj_msgSend(_1d,"_highlightItemAtIndex:",CPNotFound); +} +if(_lastMouseOverMenuView!=_21){ +objj_msgSend(_21,"mouseExited:",_18); +objj_msgSend(_lastMouseOverMenuView,"mouseEntered:",_18); +_lastMouseOverMenuView=_21; +} +var _22=_1c; +if(!objj_msgSend(_22,"isKindOfClass:",objj_msgSend(CPWindow,"class"))){ +_22=objj_msgSend(_22,"window"); +} +objj_msgSend(_22,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_19,_1e,objj_msgSend(_18,"modifierFlags"),objj_msgSend(_18,"timestamp"),_22,nil,0,objj_msgSend(_18,"clickCount"),objj_msgSend(_18,"pressure"))); +}else{ +if(_lastMouseOverMenuView){ +objj_msgSend(_lastMouseOverMenuView,"mouseExited:",_18); +_lastMouseOverMenuView=nil; +} +objj_msgSend(_1d,"_highlightItemAtIndex:",_1f); +if(_19===CPMouseMoved||_19===CPLeftMouseDragged||_19===CPLeftMouseDown){ +var _23=_scrollingState; +_scrollingState=objj_msgSend(_1c,"scrollingStateForPoint:",_1b); +if(_scrollingState!==_23){ +if(_scrollingState===_CPMenuManagerScrollingStateNone){ +objj_msgSend(CPEvent,"stopPeriodicEvents"); +}else{ +if(_23===_CPMenuManagerScrollingStateNone){ +objj_msgSend(CPEvent,"startPeriodicEventsAfterDelay:withPeriod:",0,0.04); +} +} +} +}else{ +if(_19===CPLeftMouseUp&&(objj_msgSend(_18,"timestamp")-_startTime>_1)){ +objj_msgSend(_1a,"cancelTracking"); +} +} +} +if(objj_msgSend(_20,"hasSubmenu")){ +var _24=objj_msgSend(_1c,"rectForItemAtIndex:",_1f); +if(objj_msgSend(_1c,"isMenuBar")){ +var _25=CGPointMake(CGRectGetMinX(_24),CGRectGetMaxY(_24)); +}else{ +var _25=CGPointMake(CGRectGetMaxX(_24),CGRectGetMinY(_24)); +} +_25=objj_msgSend(_1c,"convertBaseToGlobal:",_25); +objj_msgSend(_16,"showMenu:fromMenu:atPoint:",objj_msgSend(_20,"submenu"),objj_msgSend(_20,"menu"),_25); +}else{ +objj_msgSend(_16,"showMenu:fromMenu:atPoint:",nil,_1d,CGPointMakeZero()); +} +} +}),new objj_method(sel_getUid("trackMenuBarButtonEvent:"),function(_26,_27,_28){ +with(_26){ +var _29=objj_msgSend(_28,"type"); +if(_29===CPAppKitDefined){ +return objj_msgSend(_26,"completeTracking"); +} +var _2a=objj_msgSend(_28,"globalLocation"); +var _2b=objj_msgSend(_26,"trackingMenu"),_2c=objj_msgSend(_26,"trackingMenuContainer"),_2d=objj_msgSend(_2c,"convertGlobalToBase:",_2a); +if(objj_msgSend(_2c,"itemIndexAtPoint:",_2d)===_menuBarButtonItemIndex){ +objj_msgSend(_2b,"_highlightItemAtIndex:",_menuBarButtonItemIndex); +}else{ +objj_msgSend(_2b,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_26,sel_getUid("trackMenuBarButtonEvent:"),CPPeriodicMask|CPMouseMovedMask|CPLeftMouseDraggedMask|CPLeftMouseUpMask|CPAppKitDefinedMask,nil,nil,YES); +if(_29===CPLeftMouseUp){ +objj_msgSend(_2b,"cancelTracking"); +} +} +}),new objj_method(sel_getUid("completeTracking"),function(_2e,_2f){ +with(_2e){ +var _30=objj_msgSend(_2e,"trackingMenu"); +objj_msgSend(CPEvent,"stopPeriodicEvents"); +var _31=objj_msgSend(_30,"highlightedItem"); +objj_msgSend(_2e,"showMenu:fromMenu:atPoint:",nil,_30,nil); +var _32=objj_msgSend(_30,"delegate"); +if(objj_msgSend(_32,"respondsToSelector:",sel_getUid("menuDidClose:"))){ +objj_msgSend(_32,"menuDidClose:",_30); +} +if(_trackingCallback){ +_trackingCallback(objj_msgSend(_2e,"trackingMenuContainer"),_30); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPMenuDidEndTrackingNotification,_30); +CPApp._activeMenu=nil; +} +}),new objj_method(sel_getUid("menuContainerForPoint:"),function(_33,_34,_35){ +with(_33){ +var _36=objj_msgSend(_menuContainerStack,"count"),_37=_menuContainerStack[0]; +if(_36===1){ +return _37; +} +var _38=0,_39=_36-1; +if(objj_msgSend(_37,"isMenuBar")){ +if(CGRectContainsPoint(objj_msgSend(_37,"globalFrame"),_35)){ +return _37; +} +_38=1; +} +var _3a=_36,x=_35.x,_3b=Infinity,_3c=nil; +while(_3a-->_38){ +var _3d=_menuContainerStack[_3a],_3e=objj_msgSend(_3d,"globalFrame"),_3f=(_3e.origin.x),_40=(_3e.origin.x+_3e.size.width); +if(x<_40&&x>=_3f){ +return _3d; +} +if(_3a===_38||_3a===_39){ +var _41=ABS(x<_3f?_3f-x:_40-x); +if(_41<_3b){ +_3c=_3d; +_3b=_41; +} +} +} +return _3c; +} +}),new objj_method(sel_getUid("showMenu:fromMenu:atPoint:"),function(_42,_43,_44,_45,_46){ +with(_42){ +var _47=_menuContainerStack.length,_48=_47; +while(_48--){ +var _49=_menuContainerStack[_48],_4a=objj_msgSend(_49,"menu"); +if(_4a===_45){ +break; +} +if(_4a===_44){ +return objj_msgSend(_44,"_highlightItemAtIndex:",CPNotFound); +} +objj_msgSend(_49,"orderOut:",_42); +objj_msgSend(_49,"setMenu:",nil); +objj_msgSend(_CPMenuWindow,"poolMenuWindow:",_49); +objj_msgSend(_menuContainerStack,"removeObjectAtIndex:",_48); +} +if(!_44){ +return; +} +objj_msgSend(_44,"_highlightItemAtIndex:",CPNotFound); +var _4b=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_44,objj_msgSend(_menuContainerStack[0],"font")); +objj_msgSend(_menuContainerStack,"addObject:",_4b); +objj_msgSend(_4b,"setConstraintRect:",_constraintRect); +if(_45===objj_msgSend(_42,"trackingMenu")&&objj_msgSend(objj_msgSend(_42,"trackingMenuContainer"),"isMenuBar")){ +objj_msgSend(_4b,"setBackgroundStyle:",_CPMenuWindowMenuBarBackgroundStyle); +}else{ +objj_msgSend(_4b,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +} +objj_msgSend(_4b,"setFrameOrigin:",_46); +objj_msgSend(_4b,"orderFront:",_42); +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("sharedMenuManager"),function(_4c,_4d){ +with(_4c){ +if(!_2){ +_2=objj_msgSend(objj_msgSend(_CPMenuManager,"alloc"),"init"); +} +return _2; +} +})]); +p;15;_CPMenuWindow.jt;17126;@STATIC;1.0;t;17106; +var _1=[],_2=5,_3=[]; +_CPMenuWindowMenuBarBackgroundStyle=0; +_CPMenuWindowPopUpBackgroundStyle=1; +_CPMenuWindowAttachedMenuBackgroundStyle=2; +var _4=500,_5=5,_6=1,_7=1,_8=5,_9=16; +var _a=objj_allocateClassPair(CPWindow,"_CPMenuWindow"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuView"),new objj_ivar("_menuClipView"),new objj_ivar("_moreAboveView"),new objj_ivar("_moreBelowView"),new objj_ivar("_unconstrainedFrame"),new objj_ivar("_constraintRect")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("initWithContentRect:styleMask:"),function(_c,_d,_e,_f){ +with(_c){ +_constraintRect={origin:{x:0,y:0},size:{width:0,height:0}}; +_unconstrainedFrame={origin:{x:0,y:0},size:{width:0,height:0}}; +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPMenuWindow").super_class},"initWithContentRect:styleMask:",_e,CPBorderlessWindowMask); +if(_c){ +objj_msgSend(_c,"setLevel:",CPPopUpMenuWindowLevel); +objj_msgSend(_c,"setHasShadow:",YES); +objj_msgSend(_c,"setShadowStyle:",CPMenuWindowShadowStyle); +objj_msgSend(_c,"setAcceptsMouseMovedEvents:",YES); +var _10=objj_msgSend(_c,"contentView"); +_menuView=objj_msgSend(objj_msgSend(_CPMenuView,"alloc"),"initWithFrame:",CGRectMakeZero()); +_menuClipView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"initWithFrame:",CGRectMake(_6,_5,0,0)); +objj_msgSend(_menuClipView,"setDocumentView:",_menuView); +objj_msgSend(_10,"addSubview:",_menuClipView); +_moreAboveView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_moreAboveView,"setImage:",_CPMenuWindowMoreAboveImage); +objj_msgSend(_moreAboveView,"setFrameSize:",objj_msgSend(_CPMenuWindowMoreAboveImage,"size")); +objj_msgSend(_10,"addSubview:",_moreAboveView); +_moreBelowView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_moreBelowView,"setImage:",_CPMenuWindowMoreBelowImage); +objj_msgSend(_moreBelowView,"setFrameSize:",objj_msgSend(_CPMenuWindowMoreBelowImage,"size")); +objj_msgSend(_10,"addSubview:",_moreBelowView); +objj_msgSend(_c,"setShadowStyle:",CPWindowShadowStyleMenu); +} +return _c; +} +}),new objj_method(sel_getUid("setFont:"),function(_11,_12,_13){ +with(_11){ +objj_msgSend(_menuView,"setFont:",_13); +} +}),new objj_method(sel_getUid("font"),function(_14,_15){ +with(_14){ +return objj_msgSend(_menuView,"font"); +} +}),new objj_method(sel_getUid("setBackgroundStyle:"),function(_16,_17,_18){ +with(_16){ +objj_msgSend(_16,"setBackgroundColor:",objj_msgSend(objj_msgSend(_16,"class"),"backgroundColorForBackgroundStyle:",_18)); +} +}),new objj_method(sel_getUid("setMenu:"),function(_19,_1a,_1b){ +with(_19){ +objj_msgSend(_1b,"_setMenuWindow:",_19); +objj_msgSend(_menuView,"setMenu:",_1b); +var _1c=objj_msgSend(_menuView,"frame").size; +objj_msgSend(_19,"setFrameSize:",CGSizeMake(_6+_1c.width+_7,_5+_1c.height+_8)); +objj_msgSend(_menuView,"scrollPoint:",CGPointMake(0,0)); +objj_msgSend(_menuClipView,"setFrame:",CGRectMake(_6,_5,_1c.width,_1c.height)); +} +}),new objj_method(sel_getUid("setMinWidth:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=objj_msgSend(_1d,"unconstrainedFrame").size; +objj_msgSend(_1d,"setFrameSize:",CGSizeMake(MAX(_20.width,_1f),_20.height)); +} +}),new objj_method(sel_getUid("menu"),function(_21,_22){ +with(_21){ +return objj_msgSend(_menuView,"menu"); +} +}),new objj_method(sel_getUid("orderFront:"),function(_23,_24,_25){ +with(_23){ +objj_msgSend(_23,"setFrame:",_unconstrainedFrame); +objj_msgSendSuper({receiver:_23,super_class:objj_getClass("_CPMenuWindow").super_class},"orderFront:",_25); +} +}),new objj_method(sel_getUid("setConstraintRect:"),function(_26,_27,_28){ +with(_26){ +_constraintRect=_28; +objj_msgSend(_26,"setFrame:",_unconstrainedFrame); +} +}),new objj_method(sel_getUid("unconstrainedFrame"),function(_29,_2a){ +with(_29){ +return {origin:{x:_unconstrainedFrame.origin.x,y:_unconstrainedFrame.origin.y},size:{width:_unconstrainedFrame.size.width,height:_unconstrainedFrame.size.height}}; +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_2b,_2c,_2d){ +with(_2b){ +objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:",{origin:{x:_2d.x,y:_2d.y},size:{width:(_unconstrainedFrame.size.width),height:(_unconstrainedFrame.size.height)}}); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSendSuper({receiver:_2e,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:",{origin:{x:(_unconstrainedFrame.origin.x),y:(_unconstrainedFrame.origin.y)},size:{width:_30.width,height:_30.height}}); +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_31,_32,_33,_34,_35){ +with(_31){ +_unconstrainedFrame={origin:{x:_33.origin.x,y:_33.origin.y},size:{width:_33.size.width,height:_33.size.height}}; +var _36=CGRectIntersection(_unconstrainedFrame,_constraintRect); +_36.origin.x=CGRectGetMinX(_unconstrainedFrame); +_36.size.width=CGRectGetWidth(_unconstrainedFrame); +if(CGRectGetWidth(_36)>CGRectGetWidth(_constraintRect)){ +_36.size.width=CGRectGetWidth(_constraintRect); +} +if(CGRectGetMaxX(_36)>CGRectGetMaxX(_constraintRect)){ +_36.origin.x-=CGRectGetMaxX(_36)-CGRectGetMaxX(_constraintRect); +} +if(CGRectGetMinX(_36)<CGRectGetMinX(_constraintRect)){ +_36.origin.x=CGRectGetMinX(_constraintRect); +} +objj_msgSendSuper({receiver:_31,super_class:objj_getClass("_CPMenuWindow").super_class},"setFrame:display:animate:",_36,_34,_35); +var _37=CGPointMake(CGRectGetMinX(_33)+_6,CGRectGetMinY(_33)+_5),_38=_37.y<CGRectGetMinY(_36)+_5,_39=_37.y+CGRectGetHeight(objj_msgSend(_menuView,"frame"))>CGRectGetMaxY(_36)-_8,_3a=_5,_3b=_8,_3c=objj_msgSend(_31,"contentView"),_3d=objj_msgSend(_3c,"bounds"); +if(_38){ +_3a+=_9; +var _3e=objj_msgSend(_moreAboveView,"frame"); +objj_msgSend(_moreAboveView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_3d)-CGRectGetWidth(_3e))/2,(_5+_9-CGRectGetHeight(_3e))/2)); +} +objj_msgSend(_moreAboveView,"setHidden:",!_38); +if(_39){ +_3b+=_9; +objj_msgSend(_moreBelowView,"setFrameOrigin:",CGPointMake((CGRectGetWidth(_3d)-CGRectGetWidth(objj_msgSend(_moreBelowView,"frame")))/2,CGRectGetHeight(_3d)-_9-_8)); +} +objj_msgSend(_moreBelowView,"setHidden:",!_39); +var _3f=CGRectMake(_6,_3a,CGRectGetWidth(_36)-_6-_7,CGRectGetHeight(_36)-_3a-_3b); +objj_msgSend(_menuClipView,"setFrame:",_3f); +objj_msgSend(_menuView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_3f),CGRectGetHeight(objj_msgSend(_menuView,"frame")))); +objj_msgSend(_menuView,"scrollPoint:",CGPointMake(0,objj_msgSend(_31,"convertBaseToGlobal:",_3f.origin).y-_37.y)); +} +}),new objj_method(sel_getUid("hasMinimumNumberOfVisibleItems"),function(_40,_41){ +with(_40){ +var _42=objj_msgSend(_menuView,"visibleRect"); +if(CGRectIsEmpty(_42)){ +return NO; +} +var _43=objj_msgSend(_menuView,"numberOfUnhiddenItems"),_44=MIN(_43,3),_45=0,_46=objj_msgSend(_menuView,"itemIndexAtPoint:",objj_msgSend(_menuView,"convertPoint:fromView:",objj_msgSend(_menuClipView,"frame").origin,nil)); +for(;_46<_43&&_45<_44;++_46){ +var _47=objj_msgSend(_menuView,"rectForUnhiddenItemAtIndex:",_46),_48=CGRectIntersection(_42,_47); +if(CGRectIsEmpty(_48)){ +break; +} +if(CGRectEqualToRect(_48,_47)){ +++_45; +} +} +return _45>=_44; +} +}),new objj_method(sel_getUid("canScrollUp"),function(_49,_4a){ +with(_49){ +return !objj_msgSend(_moreAboveView,"isHidden"); +} +}),new objj_method(sel_getUid("canScrollDown"),function(_4b,_4c){ +with(_4b){ +return !objj_msgSend(_moreBelowView,"isHidden"); +} +}),new objj_method(sel_getUid("canScroll"),function(_4d,_4e){ +with(_4d){ +return objj_msgSend(_4d,"canScrollUp")||objj_msgSend(_4d,"canScrollDown"); +} +}),new objj_method(sel_getUid("scrollUp"),function(_4f,_50){ +with(_4f){ +if(CGRectGetMinY(_unconstrainedFrame)>=CGRectGetMinY(_constraintRect)){ +return; +} +_unconstrainedFrame.origin.y+=10; +objj_msgSend(_4f,"setFrame:",_unconstrainedFrame); +} +}),new objj_method(sel_getUid("scrollDown"),function(_51,_52){ +with(_51){ +if(CGRectGetMaxY(_unconstrainedFrame)<=CGRectGetHeight(_constraintRect)){ +return; +} +_unconstrainedFrame.origin.y-=10; +objj_msgSend(_51,"setFrame:",_unconstrainedFrame); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("menuWindowWithMenu:font:"),function(_53,_54,_55,_56){ +with(_53){ +var _57=nil; +if(_1.length){ +_57=_1.pop(); +objj_msgSend(_57,"setFrameOrigin:",CGPointMakeZero()); +}else{ +_57=objj_msgSend(objj_msgSend(_CPMenuWindow,"alloc"),"init"); +} +objj_msgSend(_57,"setFont:",_56); +objj_msgSend(_57,"setMenu:",_55); +objj_msgSend(_57,"setMinWidth:",objj_msgSend(_55,"minimumWidth")); +return _57; +} +}),new objj_method(sel_getUid("poolMenuWindow:"),function(_58,_59,_5a){ +with(_58){ +if(!_5a||_1.length>=_2){ +return; +} +_1.push(_5a); +} +}),new objj_method(sel_getUid("initialize"),function(_5b,_5c){ +with(_5b){ +if(_5b!=objj_msgSend(_CPMenuWindow,"class")){ +return; +} +var _5d=objj_msgSend(CPBundle,"bundleForClass:",_5b); +_CPMenuWindowMoreAboveImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5d,"pathForResource:","_CPMenuWindow/_CPMenuWindowMoreAbove.png"),CGSizeMake(38,18)); +_CPMenuWindowMoreBelowImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_5d,"pathForResource:","_CPMenuWindow/_CPMenuWindowMoreBelow.png"),CGSizeMake(38,18)); +} +}),new objj_method(sel_getUid("_standardLeftMargin"),function(_5e,_5f){ +with(_5e){ +return _6; +} +}),new objj_method(sel_getUid("backgroundColorForBackgroundStyle:"),function(_60,_61,_62){ +with(_60){ +var _63=_3[_62]; +if(!_63){ +var _64=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_60,"class")); +if(_62==_CPMenuWindowPopUpBackgroundStyle){ +_63=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded0.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow1.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded2.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded6.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow7.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded8.png"),CGSizeMake(4,4))])); +}else{ +if(_62==_CPMenuWindowMenuBarBackgroundStyle){ +_63=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,0)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow3.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow5.png"),CGSizeMake(4,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded6.png"),CGSizeMake(4,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindow7.png"),CGSizeMake(1,4)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_64,"pathForResource:","_CPMenuWindow/_CPMenuWindowRounded8.png"),CGSizeMake(4,4))])); +} +} +_3[_62]=_63; +} +return _63; +} +})]); +var _a=objj_getClass("_CPMenuWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"_CPMenuWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("globalFrame"),function(_65,_66){ +with(_65){ +return objj_msgSend(_65,"frame"); +} +}),new objj_method(sel_getUid("isMenuBar"),function(_67,_68){ +with(_67){ +return NO; +} +}),new objj_method(sel_getUid("scrollingStateForPoint:"),function(_69,_6a,_6b){ +with(_69){ +var _6c=objj_msgSend(_69,"frame"); +if(!objj_msgSend(_69,"canScroll")){ +return _CPMenuManagerScrollingStateNone; +} +if(_6b.y<CGRectGetMinY(_6c)+_5+_9){ +return _CPMenuManagerScrollingStateUp; +} +if(_6b.y>CGRectGetMaxY(_6c)-_8-_9){ +return _CPMenuManagerScrollingStateDown; +} +return _CPMenuManagerScrollingStateNone; +} +}),new objj_method(sel_getUid("deltaYForItemAtIndex:"),function(_6d,_6e,_6f){ +with(_6d){ +return _5+CGRectGetMinY(objj_msgSend(_menuView,"rectForItemAtIndex:",_6f)); +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_70,_71,_72){ +with(_70){ +return objj_msgSend(_menuView,"convertRect:toView:",objj_msgSend(_menuView,"rectForItemAtIndex:",_72),nil); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_73,_74,_75){ +with(_73){ +if(!CGRectContainsPoint(objj_msgSend(_menuClipView,"bounds"),objj_msgSend(_menuClipView,"convertPoint:fromView:",_75,nil))){ +return NO; +} +return objj_msgSend(_menuView,"itemIndexAtPoint:",objj_msgSend(_menuView,"convertPoint:fromView:",_75,nil)); +} +})]); +var _a=objj_allocateClassPair(CPView,"_CPMenuView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuItemViews"),new objj_ivar("_visibleMenuItemInfos"),new objj_ivar("_font")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("font"),function(_76,_77){ +with(_76){ +return _font; +} +}),new objj_method(sel_getUid("setFont:"),function(_78,_79,_7a){ +with(_78){ +_font=_7a; +} +}),new objj_method(sel_getUid("numberOfUnhiddenItems"),function(_7b,_7c){ +with(_7b){ +return _visibleMenuItemInfos.length; +} +}),new objj_method(sel_getUid("rectForUnhiddenItemAtIndex:"),function(_7d,_7e,_7f){ +with(_7d){ +return objj_msgSend(_7d,"rectForItemAtIndex:",_visibleMenuItemInfos[_7f].index); +} +}),new objj_method(sel_getUid("rectForItemAtIndex:"),function(_80,_81,_82){ +with(_80){ +return objj_msgSend(_menuItemViews[_82===CPNotFound?0:_82],"frame"); +} +}),new objj_method(sel_getUid("itemIndexAtPoint:"),function(_83,_84,_85){ +with(_83){ +var x=_85.x,_86=objj_msgSend(_83,"bounds"); +if(x<CGRectGetMinX(_86)||x>CGRectGetMaxX(_86)){ +return CPNotFound; +} +var y=_85.y,low=0,_87=_visibleMenuItemInfos.length-1; +while(low<=_87){ +var _88=FLOOR(low+(_87-low)/2),_89=_visibleMenuItemInfos[_88]; +frame=objj_msgSend(_89.view,"frame"); +if(y<CGRectGetMinY(frame)){ +_87=_88-1; +}else{ +if(y>CGRectGetMaxY(frame)){ +low=_88+1; +}else{ +return _89.index; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("tile"),function(_8a,_8b){ +with(_8a){ +objj_msgSend(_menuItemViews,"makeObjectsPerformSelector:",sel_getUid("removeFromSuperview")); +_menuItemViews=[]; +_visibleMenuItemInfos=[]; +var _8c=objj_msgSend(_8a,"menu"); +if(!_8c){ +return; +} +var _8d=objj_msgSend(_8c,"itemArray"),_8e=0,_8f=objj_msgSend(_8d,"count"),_90=0,y=0,_91=objj_msgSend(_8c,"showsStateColumn"); +for(;_8e<_8f;++_8e){ +var _92=_8d[_8e],_93=objj_msgSend(_92,"_menuItemView"); +_menuItemViews.push(_93); +if(objj_msgSend(_92,"isHidden")){ +continue; +} +_visibleMenuItemInfos.push({view:_93,index:_8e}); +objj_msgSend(_93,"setFont:",_font); +objj_msgSend(_93,"setShowsStateColumn:",_91); +objj_msgSend(_93,"synchronizeWithMenuItem"); +objj_msgSend(_93,"setFrameOrigin:",CGPointMake(0,y)); +objj_msgSend(_8a,"addSubview:",_93); +var _94=objj_msgSend(_93,"minSize"),_95=_94.width; +if(_90<_95){ +_90=_95; +} +y+=_94.height; +} +for(_8e=0;_8e<_8f;++_8e){ +var _93=_menuItemViews[_8e]; +objj_msgSend(_93,"setFrameSize:",CGSizeMake(_90,CGRectGetHeight(objj_msgSend(_93,"frame")))); +} +objj_msgSend(_8a,"setAutoresizesSubviews:",NO); +objj_msgSend(_8a,"setFrameSize:",CGSizeMake(_90,y)); +objj_msgSend(_8a,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("setMenu:"),function(_96,_97,_98){ +with(_96){ +objj_msgSendSuper({receiver:_96,super_class:objj_getClass("_CPMenuView").super_class},"setMenu:",_98); +objj_msgSend(_96,"tile"); +} +})]); +p;8;CPMenu.jt;23227;@STATIC;1.0;I;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPString.ji;16;_CPMenuManager.ji;15;CPApplication.ji;12;CPClipView.ji;12;CPMenuItem.ji;9;CPPanel.ji;18;_CPMenuBarWindow.ji;15;_CPMenuWindow.jt;22957; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("_CPMenuManager.j",YES); +objj_executeFile("CPApplication.j",YES); +objj_executeFile("CPClipView.j",YES); +objj_executeFile("CPMenuItem.j",YES); +objj_executeFile("CPPanel.j",YES); +CPMenuDidAddItemNotification="CPMenuDidAddItemNotification"; +CPMenuDidChangeItemNotification="CPMenuDidChangeItemNotification"; +CPMenuDidRemoveItemNotification="CPMenuDidRemoveItemNotification"; +CPMenuDidEndTrackingNotification="CPMenuDidEndTrackingNotification"; +var _1=28; +var _2=NO,_3="",_4=nil,_5=1,_6=nil,_7=nil; +var _8=objj_allocateClassPair(CPObject,"CPMenu"),_9=_8.isa; +class_addIvars(_8,[new objj_ivar("_supermenu"),new objj_ivar("_title"),new objj_ivar("_name"),new objj_ivar("_font"),new objj_ivar("_minimumWidth"),new objj_ivar("_items"),new objj_ivar("_autoenablesItems"),new objj_ivar("_showsStateColumn"),new objj_ivar("_delegate"),new objj_ivar("_highlightedIndex"),new objj_ivar("_menuWindow")]); +objj_registerClassPair(_8); +class_addMethods(_8,[new objj_method(sel_getUid("menuBarHeight"),function(_a,_b){ +with(_a){ +if(_a===objj_msgSend(CPApp,"mainMenu")){ +return _1; +} +return 0; +} +}),new objj_method(sel_getUid("initWithTitle:"),function(_c,_d,_e){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPMenu").super_class},"init"); +if(_c){ +_title=_e; +_items=[]; +_autoenablesItems=YES; +_showsStateColumn=YES; +objj_msgSend(_c,"setMinimumWidth:",0); +} +return _c; +} +}),new objj_method(sel_getUid("init"),function(_f,_10){ +with(_f){ +return objj_msgSend(_f,"initWithTitle:",""); +} +}),new objj_method(sel_getUid("insertItem:atIndex:"),function(_11,_12,_13,_14){ +with(_11){ +var _15=objj_msgSend(_13,"menu"); +if(_15){ +if(_15!==_11){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"Attempted to insert item into menu that was already in another menu."); +}else{ +return; +} +} +objj_msgSend(_13,"setMenu:",_11); +objj_msgSend(_items,"insertObject:atIndex:",_13,_14); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidAddItemNotification,_11,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_14,"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("insertItemWithTitle:action:keyEquivalent:atIndex:"),function(_16,_17,_18,_19,_1a,_1b){ +with(_16){ +var _1c=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"initWithTitle:action:keyEquivalent:",_18,_19,_1a); +objj_msgSend(_16,"insertItem:atIndex:",_1c,_1b); +return _1c; +} +}),new objj_method(sel_getUid("addItem:"),function(_1d,_1e,_1f){ +with(_1d){ +objj_msgSend(_1d,"insertItem:atIndex:",_1f,objj_msgSend(_items,"count")); +} +}),new objj_method(sel_getUid("addItemWithTitle:action:keyEquivalent:"),function(_20,_21,_22,_23,_24){ +with(_20){ +return objj_msgSend(_20,"insertItemWithTitle:action:keyEquivalent:atIndex:",_22,_23,_24,objj_msgSend(_items,"count")); +} +}),new objj_method(sel_getUid("removeItem:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_25,"removeItemAtIndex:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_27)); +} +}),new objj_method(sel_getUid("removeItemAtIndex:"),function(_28,_29,_2a){ +with(_28){ +if(_2a<0||_2a>=_items.length){ +return; +} +objj_msgSend(_items[_2a],"setMenu:",nil); +objj_msgSend(_items,"removeObjectAtIndex:",_2a); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidRemoveItemNotification,_28,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_2a,"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("itemChanged:"),function(_2b,_2c,_2d){ +with(_2b){ +if(objj_msgSend(_2d,"menu")!=_2b){ +return; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:userInfo:",CPMenuDidChangeItemNotification,_2b,objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",objj_msgSend(_items,"indexOfObjectIdenticalTo:",_2d),"CPMenuItemIndex")); +} +}),new objj_method(sel_getUid("itemWithTag:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=objj_msgSend(_2e,"indexOfItemWithTag:",_30); +if(_31==CPNotFound){ +return nil; +} +return _items[_31]; +} +}),new objj_method(sel_getUid("itemWithTitle:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"indexOfItemWithTitle:",_34); +if(_35==CPNotFound){ +return nil; +} +return _items[_35]; +} +}),new objj_method(sel_getUid("itemAtIndex:"),function(_36,_37,_38){ +with(_36){ +return objj_msgSend(_items,"objectAtIndex:",_38); +} +}),new objj_method(sel_getUid("numberOfItems"),function(_39,_3a){ +with(_39){ +return objj_msgSend(_items,"count"); +} +}),new objj_method(sel_getUid("itemArray"),function(_3b,_3c){ +with(_3b){ +return _items; +} +}),new objj_method(sel_getUid("indexOfItem:"),function(_3d,_3e,_3f){ +with(_3d){ +if(objj_msgSend(_3f,"menu")!==_3d){ +return CPNotFound; +} +return objj_msgSend(_items,"indexOfObjectIdenticalTo:",_3f); +} +}),new objj_method(sel_getUid("indexOfItemWithTitle:"),function(_40,_41,_42){ +with(_40){ +var _43=0,_44=_items.length; +for(;_43<_44;++_43){ +if(objj_msgSend(_items[_43],"title")===_42){ +return _43; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithTag:"),function(_45,_46,_47){ +with(_45){ +var _48=0,_49=_items.length; +for(;_48<_49;++_48){ +if(objj_msgSend(_items[_48],"tag")==_47){ +return _48; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithTarget:andAction:"),function(_4a,_4b,_4c,_4d){ +with(_4a){ +var _4e=0,_4f=_items.length; +for(;_4e<_4f;++_4e){ +var _50=_items[_4e]; +if(objj_msgSend(_50,"target")==_4c&&(!_4d||objj_msgSend(_50,"action")==_4d)){ +return _4e; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"),function(_51,_52,_53){ +with(_51){ +var _54=0,_55=_items.length; +for(;_54<_55;++_54){ +if(objj_msgSend(objj_msgSend(_items[_54],"representedObject"),"isEqual:",_53)){ +return _54; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfItemWithSubmenu:"),function(_56,_57,_58){ +with(_56){ +var _59=0,_5a=_items.length; +for(;_59<_5a;++_59){ +if(objj_msgSend(_items[_59],"submenu")==_58){ +return _59; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("setSubmenu:forItem:"),function(_5b,_5c,_5d,_5e){ +with(_5b){ +objj_msgSend(_5e,"setTarget:",_5e); +objj_msgSend(_5e,"setAction:",sel_getUid("submenuAction:")); +objj_msgSend(_5e,"setSubmenu:",_5d); +} +}),new objj_method(sel_getUid("submenuAction:"),function(_5f,_60,_61){ +with(_5f){ +} +}),new objj_method(sel_getUid("supermenu"),function(_62,_63){ +with(_62){ +return _supermenu; +} +}),new objj_method(sel_getUid("setSupermenu:"),function(_64,_65,_66){ +with(_64){ +_supermenu=_66; +} +}),new objj_method(sel_getUid("isTornOff"),function(_67,_68){ +with(_67){ +return !_supermenu||_67==objj_msgSend(CPApp,"mainMenu"); +} +}),new objj_method(sel_getUid("setAutoenablesItems:"),function(_69,_6a,_6b){ +with(_69){ +_autoenablesItems=_6b; +} +}),new objj_method(sel_getUid("autoenablesItems"),function(_6c,_6d){ +with(_6c){ +return _autoenablesItems; +} +}),new objj_method(sel_getUid("update"),function(_6e,_6f){ +with(_6e){ +} +}),new objj_method(sel_getUid("setTitle:"),function(_70,_71,_72){ +with(_70){ +_title=_72; +} +}),new objj_method(sel_getUid("title"),function(_73,_74){ +with(_73){ +return _title; +} +}),new objj_method(sel_getUid("setMinimumWidth:"),function(_75,_76,_77){ +with(_75){ +_minimumWidth=_77; +} +}),new objj_method(sel_getUid("minimumWidth"),function(_78,_79){ +with(_78){ +return _minimumWidth; +} +}),new objj_method(sel_getUid("_performActionOfHighlightedItemChain"),function(_7a,_7b){ +with(_7a){ +var _7c=objj_msgSend(_7a,"highlightedItem"); +while(objj_msgSend(_7c,"submenu")&&objj_msgSend(_7c,"action")===sel_getUid("submenuAction:")){ +_7c=objj_msgSend(objj_msgSend(_7c,"submenu"),"highlightedItem"); +} +if(_7c&&objj_msgSend(_7c,"isEnabled")){ +objj_msgSend(CPApp,"sendAction:to:from:",objj_msgSend(_7c,"action"),objj_msgSend(_7c,"target"),_7c); +} +} +}),new objj_method(sel_getUid("popUpMenuPositioningItem:atLocation:inView:callback:"),function(_7d,_7e,_7f,_80,_81,_82){ +with(_7d){ +objj_msgSend(_7d,"_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:",_7f,_80,_80.y,_80.y,_81,_82); +} +}),new objj_method(sel_getUid("_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:"),function(_83,_84,_85,_86,_87,_88,_89,_8a){ +with(_83){ +var _8b=0; +if(_85){ +_8b=objj_msgSend(_83,"indexOfItem:",_85); +if(_8b===CPNotFound){ +throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, menu item "+_85+" is not present in menu "+_83; +} +} +var _8c=objj_msgSend(_89,"window"); +if(_89&&!_8c){ +throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, view is not in any window."; +} +var _8d=objj_msgSend(_83,"delegate"); +if(objj_msgSend(_8d,"respondsToSelector:",sel_getUid("menuWillOpen:"))){ +objj_msgSend(_8d,"menuWillOpen:",aMenu); +} +if(_89){ +_86=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",_86,nil)); +} +var _8e=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_83,objj_msgSend(_83,"font")); +objj_msgSend(_8e,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +if(_85){ +_86.y-=objj_msgSend(_8e,"deltaYForItemAtIndex:",_8b); +} +var _8f=objj_msgSend(CPMenu,"_constraintRectForView:",_89); +objj_msgSend(_8e,"setFrameOrigin:",_86); +objj_msgSend(_8e,"setConstraintRect:",_8f); +if(!objj_msgSend(_8e,"hasMinimumNumberOfVisibleItems")){ +var _90=objj_msgSend(_8e,"unconstrainedFrame"),_91=CGRectGetMinY(_90); +if(_91>=CGRectGetMaxY(_8f)||objj_msgSend(_8e,"canScrollDown")){ +if(_89){ +_87=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",CGPointMake(0,_87),nil)).y; +} +_90.origin.y=MIN(CGRectGetMaxY(_8f),_87)-CGRectGetHeight(_90); +}else{ +if(_91<CGRectGetMinY(_8f)||objj_msgSend(_8e,"canScrollUp")){ +if(_89){ +_88=objj_msgSend(_8c,"convertBaseToGlobal:",objj_msgSend(_89,"convertPoint:toView:",CGPointMake(0,_88),nil)).y; +} +_90.origin.y=MAX(CGRectGetMinY(_8f),_88); +} +} +objj_msgSend(_8e,"setFrameOrigin:",CGRectIntersection(_90,_8f).origin); +} +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_8e,"setPlatformWindow:",objj_msgSend(objj_msgSend(_89,"window"),"platformWindow")); +} +objj_msgSend(_8e,"orderFront:",_83); +objj_msgSend(objj_msgSend(_CPMenuManager,"sharedMenuManager"),"beginTracking:menuContainer:constraintRect:callback:",objj_msgSend(CPApp,"currentEvent"),_8e,_8f,objj_msgSend(CPMenu,"trackingCallbackWithCallback:",_8a)); +} +}),new objj_method(sel_getUid("setShowsStateColumn:"),function(_92,_93,_94){ +with(_92){ +_showsStateColumn=_94; +} +}),new objj_method(sel_getUid("showsStateColumn"),function(_95,_96){ +with(_95){ +return _showsStateColumn; +} +}),new objj_method(sel_getUid("highlightedItem"),function(_97,_98){ +with(_97){ +return _highlightedIndex>=0?_items[_highlightedIndex]:nil; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_99,_9a,_9b){ +with(_99){ +_delegate=_9b; +} +}),new objj_method(sel_getUid("delegate"),function(_9c,_9d){ +with(_9c){ +return _delegate; +} +}),new objj_method(sel_getUid("cancelTracking"),function(_9e,_9f){ +with(_9e){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("_fireCancelTrackingEvent"),_9e,nil,0,[CPDefaultRunLoopMode]); +} +}),new objj_method(sel_getUid("_fireCancelTrackingEvent"),function(_a0,_a1){ +with(_a0){ +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",CPAppKitDefined,{x:0,y:0},0,0,0,0,0,0,0)); +objj_msgSend(_CPDisplayServer,"run"); +} +}),new objj_method(sel_getUid("_setMenuWindow:"),function(_a2,_a3,_a4){ +with(_a2){ +_menuWindow=_a4; +} +}),new objj_method(sel_getUid("setFont:"),function(_a5,_a6,_a7){ +with(_a5){ +_font=_a7; +} +}),new objj_method(sel_getUid("font"),function(_a8,_a9){ +with(_a8){ +return _font; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(_aa,_ab,_ac){ +with(_aa){ +if(_autoenablesItems){ +objj_msgSend(_aa,"update"); +} +var _ad=0,_ae=_items.length,_af=objj_msgSend(_ac,"charactersIgnoringModifiers"),_b0=objj_msgSend(_ac,"modifierFlags"); +for(;_ad<_ae;++_ad){ +var _b1=_items[_ad],_b2=objj_msgSend(_b1,"keyEquivalentModifierMask"); +if(objj_msgSend(_ac,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(_b1,"keyEquivalent"),objj_msgSend(_b1,"keyEquivalentModifierMask"))){ +if(objj_msgSend(_b1,"isEnabled")){ +objj_msgSend(_aa,"performActionForItemAtIndex:",_ad); +}else{ +} +return YES; +} +if(objj_msgSend(objj_msgSend(_b1,"submenu"),"performKeyEquivalent:",_ac)){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("performActionForItemAtIndex:"),function(_b3,_b4,_b5){ +with(_b3){ +var _b6=_items[_b5]; +objj_msgSend(CPApp,"sendAction:to:from:",objj_msgSend(_b6,"action"),objj_msgSend(_b6,"target"),_b6); +} +}),new objj_method(sel_getUid("_itemIsHighlighted:"),function(_b7,_b8,_b9){ +with(_b7){ +return _items[_highlightedIndex]==_b9; +} +}),new objj_method(sel_getUid("_highlightItemAtIndex:"),function(_ba,_bb,_bc){ +with(_ba){ +if(_highlightedIndex===_bc){ +return; +} +if(_highlightedIndex!==CPNotFound){ +objj_msgSend(objj_msgSend(_items[_highlightedIndex],"_menuItemView"),"highlight:",NO); +} +_highlightedIndex=_bc; +if(_highlightedIndex!==CPNotFound){ +objj_msgSend(objj_msgSend(_items[_highlightedIndex],"_menuItemView"),"highlight:",YES); +} +} +}),new objj_method(sel_getUid("_setMenuName:"),function(_bd,_be,_bf){ +with(_bd){ +if(_name===_bf){ +return; +} +_name=_bf; +if(_name==="CPMainMenu"){ +objj_msgSend(CPApp,"setMainMenu:",_bd); +} +} +}),new objj_method(sel_getUid("_menuName"),function(_c0,_c1){ +with(_c0){ +return _name; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_c2,_c3){ +with(_c2){ +if(_name==="_CPMainMenu"){ +objj_msgSend(_c2,"_setMenuName:","CPMainMenu"); +objj_msgSend(CPMenu,"setMenuBarVisible:",YES); +} +} +}),new objj_method(sel_getUid("_menuWithName:"),function(_c4,_c5,_c6){ +with(_c4){ +if(_c6===_name){ +return _c4; +} +for(var i=0,_c7=objj_msgSend(_items,"count");i<_c7;i++){ +var _c8=objj_msgSend(objj_msgSend(_items[i],"submenu"),"_menuWithName:",_c6); +if(_c8){ +return _c8; +} +} +return nil; +} +})]); +class_addMethods(_9,[new objj_method(sel_getUid("initialize"),function(_c9,_ca){ +with(_c9){ +objj_msgSend(objj_msgSend(_c9,"class"),"setMenuBarAttributes:",objj_msgSend(CPDictionary,"dictionary")); +} +}),new objj_method(sel_getUid("menuBarVisible"),function(_cb,_cc){ +with(_cb){ +return _2; +} +}),new objj_method(sel_getUid("setMenuBarVisible:"),function(_cd,_ce,_cf){ +with(_cd){ +if(_2===_cf){ +return; +} +_2=_cf; +if(objj_msgSend(CPPlatform,"supportsNativeMainMenu")){ +return; +} +if(_cf){ +if(!_7){ +_7=objj_msgSend(objj_msgSend(_CPMenuBarWindow,"alloc"),"init"); +} +objj_msgSend(_7,"setMenu:",objj_msgSend(CPApp,"mainMenu")); +objj_msgSend(_7,"setTitle:",_3); +objj_msgSend(_7,"setIconImage:",_4); +objj_msgSend(_7,"setIconImageAlphaValue:",_5); +objj_msgSend(_7,"setColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarBackgroundColor")); +objj_msgSend(_7,"setTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextColor")); +objj_msgSend(_7,"setTitleColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleColor")); +objj_msgSend(_7,"setTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextShadowColor")); +objj_msgSend(_7,"setTitleShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleShadowColor")); +objj_msgSend(_7,"setHighlightColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightColor")); +objj_msgSend(_7,"setHighlightTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextColor")); +objj_msgSend(_7,"setHighlightTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextShadowColor")); +objj_msgSend(_7,"orderFront:",_cd); +}else{ +objj_msgSend(_7,"orderOut:",_cd); +} +} +}),new objj_method(sel_getUid("setMenuBarTitle:"),function(_d0,_d1,_d2){ +with(_d0){ +_3=_d2; +objj_msgSend(_7,"setTitle:",_3); +} +}),new objj_method(sel_getUid("menuBarTitle"),function(_d3,_d4){ +with(_d3){ +return _3; +} +}),new objj_method(sel_getUid("setMenuBarIconImage:"),function(_d5,_d6,_d7){ +with(_d5){ +_CPMenuBarImage=_d7; +objj_msgSend(_7,"setIconImage:",_d7); +} +}),new objj_method(sel_getUid("menuBarIconImage"),function(_d8,_d9){ +with(_d8){ +return _CPMenuBarImage; +} +}),new objj_method(sel_getUid("setMenuBarAttributes:"),function(_da,_db,_dc){ +with(_da){ +if(_6==_dc){ +return; +} +_6=objj_msgSend(_dc,"copy"); +var _dd=objj_msgSend(_dc,"objectForKey:","CPMenuBarTextColor"),_de=objj_msgSend(_dc,"objectForKey:","CPMenuBarTitleColor"),_df=objj_msgSend(_dc,"objectForKey:","CPMenuBarTextShadowColor"),_e0=objj_msgSend(_dc,"objectForKey:","CPMenuBarTitleShadowColor"),_e1=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightColor"),_e2=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightTextColor"),_e3=objj_msgSend(_dc,"objectForKey:","CPMenuBarHighlightTextShadowColor"); +if(!_dd&&_de){ +objj_msgSend(_6,"setObject:forKey:",_de,"CPMenuBarTextColor"); +}else{ +if(_dd&&!_de){ +objj_msgSend(_6,"setObject:forKey:",_dd,"CPMenuBarTitleColor"); +}else{ +if(!_dd&&!_de){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",0.051,0.2,0.275,1),"CPMenuBarTextColor"); +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithRed:green:blue:alpha:",0.051,0.2,0.275,1),"CPMenuBarTitleColor"); +} +} +} +if(!_df&&_e0){ +objj_msgSend(_6,"setObject:forKey:",_e0,"CPMenuBarTextShadowColor"); +}else{ +if(_df&&!_e0){ +objj_msgSend(_6,"setObject:forKey:",_df,"CPMenuBarTitleShadowColor"); +}else{ +if(!_df&&!_e0){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarTextShadowColor"); +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarTitleShadowColor"); +} +} +} +if(!_e1){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",94/255,130/255,186/255,1),"CPMenuBarHighlightColor"); +} +if(!_e2){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"whiteColor"),"CPMenuBarHighlightTextColor"); +} +if(!_e3){ +objj_msgSend(_6,"setObject:forKey:",objj_msgSend(CPColor,"blackColor"),"CPMenuBarHighlightTextShadowColor"); +} +if(_7){ +objj_msgSend(_7,"setColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarBackgroundColor")); +objj_msgSend(_7,"setTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextColor")); +objj_msgSend(_7,"setTitleColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleColor")); +objj_msgSend(_7,"setTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTextShadowColor")); +objj_msgSend(_7,"setTitleShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarTitleShadowColor")); +objj_msgSend(_7,"setHighlightColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightColor")); +objj_msgSend(_7,"setHighlightTextColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextColor")); +objj_msgSend(_7,"setHighlightTextShadowColor:",objj_msgSend(_6,"objectForKey:","CPMenuBarHighlightTextShadowColor")); +} +} +}),new objj_method(sel_getUid("menuBarAttributes"),function(_e4,_e5){ +with(_e4){ +return _6; +} +}),new objj_method(sel_getUid("_setMenuBarIconImageAlphaValue:"),function(_e6,_e7,_e8){ +with(_e6){ +_5=_e8; +objj_msgSend(_7,"setIconImageAlphaValue:",_e8); +} +}),new objj_method(sel_getUid("menuBarHeight"),function(_e9,_ea){ +with(_e9){ +return _1; +} +}),new objj_method(sel_getUid("_constraintRectForView:"),function(_eb,_ec,_ed){ +with(_eb){ +if(objj_msgSend(CPPlatform,"isBrowser")){ +return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(_ed,"window"),"platformWindow"),"contentBounds"),5,5); +} +return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(_ed,"window"),"screen"),"visibleFrame"),5,5); +} +}),new objj_method(sel_getUid("trackingCallbackWithCallback:"),function(_ee,_ef,_f0){ +with(_ee){ +return function(_f1,_f2){ +objj_msgSend(_f1,"setMenu:",nil); +objj_msgSend(_f1,"orderOut:",_ee); +objj_msgSend(_CPMenuWindow,"poolMenuWindow:",_f1); +if(_f0){ +_f0(_f2); +} +objj_msgSend(_f2,"_performActionOfHighlightedItemChain"); +}; +} +}),new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:"),function(_f3,_f4,_f5,_f6,_f7){ +with(_f3){ +objj_msgSend(_f3,"popUpContextMenu:withEvent:forView:withFont:",_f5,_f6,_f7,nil); +} +}),new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:withFont:"),function(_f8,_f9,_fa,_fb,_fc,_fd){ +with(_f8){ +var _fe=objj_msgSend(_fa,"delegate"); +if(objj_msgSend(_fe,"respondsToSelector:",sel_getUid("menuWillOpen:"))){ +objj_msgSend(_fe,"menuWillOpen:",_fa); +} +if(!_fd){ +_fd=objj_msgSend(CPFont,"systemFontOfSize:",12); +} +var _ff=objj_msgSend(_fc,"window"),_100=objj_msgSend(_CPMenuWindow,"menuWindowWithMenu:font:",_fa,_fd); +objj_msgSend(_100,"setBackgroundStyle:",_CPMenuWindowPopUpBackgroundStyle); +var _101=objj_msgSend(CPMenu,"_constraintRectForView:",_fc),_102=objj_msgSend(objj_msgSend(_fb,"window"),"convertBaseToGlobal:",objj_msgSend(_fb,"locationInWindow")); +objj_msgSend(_100,"setConstraintRect:",_101); +objj_msgSend(_100,"setFrameOrigin:",_102); +if(!objj_msgSend(_100,"hasMinimumNumberOfVisibleItems")){ +var _103=objj_msgSend(_100,"unconstrainedFrame"),_104=CGRectGetMinY(_103); +if(_104>=CGRectGetMaxY(_101)||objj_msgSend(_100,"canScrollDown")){ +_103.origin.y=MIN(CGRectGetMaxY(_101),_102.y)-CGRectGetHeight(_103); +}else{ +if(_104<CGRectGetMinY(_101)||objj_msgSend(_100,"canScrollUp")){ +_103.origin.y=MAX(CGRectGetMinY(_101),_102.y); +} +} +objj_msgSend(_100,"setFrameOrigin:",CGRectIntersection(_103,_101).origin); +} +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_100,"setPlatformWindow:",objj_msgSend(objj_msgSend(_fc,"window"),"platformWindow")); +} +objj_msgSend(_100,"orderFront:",_f8); +objj_msgSend(objj_msgSend(_CPMenuManager,"sharedMenuManager"),"beginTracking:menuContainer:constraintRect:callback:",_fb,_100,objj_msgSend(CPMenu,"_constraintRectForView:",_fc),objj_msgSend(CPMenu,"trackingCallbackWithCallback:",nil)); +} +})]); +var _105="CPMenuTitleKey",_106="CPMenuNameKey",_107="CPMenuItemsKey",_108="CPMenuShowsStateColumnKey"; +var _8=objj_getClass("CPMenu"); +if(!_8){ +throw new SyntaxError("*** Could not find definition for class \"CPMenu\""); +} +var _9=_8.isa; +class_addMethods(_8,[new objj_method(sel_getUid("initWithCoder:"),function(self,_109,_10a){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("CPMenu").super_class},"init"); +if(self){ +_title=objj_msgSend(_10a,"decodeObjectForKey:",_105); +_items=objj_msgSend(_10a,"decodeObjectForKey:",_107); +objj_msgSend(self,"_setMenuName:",objj_msgSend(_10a,"decodeObjectForKey:",_106)); +_showsStateColumn=!objj_msgSend(_10a,"containsValueForKey:",_108)||objj_msgSend(_10a,"decodeBoolForKey:",_108); +objj_msgSend(self,"setMinimumWidth:",0); +} +return self; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(self,_10b,_10c){ +with(self){ +objj_msgSend(_10c,"encodeObject:forKey:",_title,_105); +if(_name){ +objj_msgSend(_10c,"encodeObject:forKey:",_name,_106); +} +objj_msgSend(_10c,"encodeObject:forKey:",_items,_107); +if(!_showsStateColumn){ +objj_msgSend(_10c,"encodeBool:forKey:",_showsStateColumn,_108); +} +} +})]); +objj_executeFile("_CPMenuBarWindow.j",YES); +objj_executeFile("_CPMenuWindow.j",YES); +p;24;_CPMenuItemMenuBarView.jt;7646;@STATIC;1.0;t;7627; +var _1=8,_2=3,_3=4; +var _4=nil,_5=nil,_6=nil,_7=nil,_8=[],_9=[]; +var _a=objj_allocateClassPair(CPView,"_CPMenuItemMenuBarView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuItem"),new objj_ivar("_font"),new objj_ivar("_textColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_isDirty"),new objj_ivar("_imageAndTextView"),new objj_ivar("_submenuIndicatorView")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("menuItem"),function(_c,_d){ +with(_c){ +return _menuItem; +} +}),new objj_method(sel_getUid("setMenuItem:"),function(_e,_f,_10){ +with(_e){ +_menuItem=_10; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_11,_12,_13){ +with(_11){ +_11=objj_msgSendSuper({receiver:_11,super_class:objj_getClass("_CPMenuItemMenuBarView").super_class},"initWithFrame:",_13); +if(_11){ +_imageAndTextView=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",CGRectMake(_1,0,0,0)); +objj_msgSend(_imageAndTextView,"setImagePosition:",CPImageLeft); +objj_msgSend(_imageAndTextView,"setImageOffset:",3); +objj_msgSend(_imageAndTextView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_imageAndTextView,"setAutoresizingMask:",CPViewMinYMargin|CPViewMaxYMargin); +objj_msgSend(_11,"addSubview:",_imageAndTextView); +_submenuIndicatorView=objj_msgSend(objj_msgSend(_CPMenuItemMenuBarSubmenuIndicatorView,"alloc"),"initWithFrame:",CGRectMake(0,0,9,6)); +objj_msgSend(_submenuIndicatorView,"setAutoresizingMask:",CPViewMinYMargin|CPViewMaxYMargin); +objj_msgSend(_11,"addSubview:",_submenuIndicatorView); +objj_msgSend(_11,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +} +return _11; +} +}),new objj_method(sel_getUid("textColor"),function(_14,_15){ +with(_14){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return objj_msgSend(CPColor,"lightGrayColor"); +} +return _textColor||objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",70/255,69/255,69/255,1); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_16,_17){ +with(_16){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return objj_msgSend(CPColor,"colorWithWhite:alpha:",0.8,0.8); +} +return _textShadowColor||objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.8); +} +}),new objj_method(sel_getUid("update"),function(_18,_19){ +with(_18){ +var x=_1,_1a=0; +objj_msgSend(_imageAndTextView,"setFont:",objj_msgSend(_menuItem,"font")||objj_msgSend(_CPMenuBarWindow,"font")); +objj_msgSend(_imageAndTextView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setText:",objj_msgSend(_menuItem,"title")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_18,"textColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_18,"textShadowColor")); +objj_msgSend(_imageAndTextView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_imageAndTextView,"sizeToFit"); +var _1b=objj_msgSend(_imageAndTextView,"frame"); +_1b.origin.x=x; +x+=CGRectGetWidth(_1b); +_1a=MAX(_1a,CGRectGetHeight(_1b)); +var _1c=objj_msgSend(_menuItem,"hasSubmenu")&&objj_msgSend(_menuItem,"action"); +if(_1c){ +objj_msgSend(_submenuIndicatorView,"setHidden:",NO); +objj_msgSend(_submenuIndicatorView,"setColor:",objj_msgSend(_18,"textColor")); +objj_msgSend(_submenuIndicatorView,"setShadowColor:",objj_msgSend(_18,"textShadowColor")); +var _1d=objj_msgSend(_submenuIndicatorView,"frame"); +_1d.origin.x=x+_2; +x=CGRectGetMaxX(_1d); +_1a=MAX(_1a,CGRectGetHeight(_1d)); +}else{ +objj_msgSend(_submenuIndicatorView,"setHidden:",YES); +} +_1a+=2*_3; +_1b.origin.y=FLOOR((_1a-CGRectGetHeight(_1b))/2); +objj_msgSend(_imageAndTextView,"setFrame:",_1b); +if(_1c){ +_1d.origin.y=FLOOR((_1a-CGRectGetHeight(_1d))/2)+1; +objj_msgSend(_submenuIndicatorView,"setFrame:",_1d); +} +_minSize=CGSizeMake(x+_1,_1a); +objj_msgSend(_18,"setAutoresizesSubviews:",NO); +objj_msgSend(_18,"setFrameSize:",_minSize); +objj_msgSend(_18,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("highlight:"),function(_1e,_1f,_20){ +with(_1e){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +_20=NO; +} +if(_20){ +if(!objj_msgSend(_menuItem,"_isMenuBarButton")){ +objj_msgSend(_1e,"setBackgroundColor:",_4); +} +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"alternateImage")||objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",_7); +objj_msgSend(_submenuIndicatorView,"setColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_submenuIndicatorView,"setShadowColor:",objj_msgSend(CPColor,"colorWithWhite:alpha:",0.1,0.7)); +}else{ +objj_msgSend(_1e,"setBackgroundColor:",nil); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_1e,"textColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_1e,"textShadowColor")); +objj_msgSend(_submenuIndicatorView,"setColor:",objj_msgSend(_1e,"textColor")); +objj_msgSend(_submenuIndicatorView,"setShadowColor:",objj_msgSend(_1e,"textShadowColor")); +} +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("initialize"),function(_21,_22){ +with(_21){ +if(_21!==objj_msgSend(_CPMenuItemMenuBarView,"class")){ +return; +} +var _23=objj_msgSend(CPBundle,"bundleForClass:",_21); +_4=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_23,"pathForResource:","_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png"),CGSizeMake(1,28))); +_5=objj_msgSend(CPColor,"grayColor"); +_6=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",95/255,131/255,185/255,1); +_7=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",26/255,73/255,109/255,1); +_8[CPOffState]=nil; +_9[CPOffState]=nil; +_8[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_23,"pathForResource:","CPMenuItem/CPMenuItemOnState.png"),CGSizeMake(14,14)); +_9[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_23,"pathForResource:","CPMenuItem/CPMenuItemOnStateHighlighted.png"),CGSizeMake(14,14)); +_8[CPMixedState]=nil; +_9[CPMixedState]=nil; +} +}),new objj_method(sel_getUid("view"),function(_24,_25){ +with(_24){ +return objj_msgSend(objj_msgSend(_24,"alloc"),"init"); +} +})]); +var _a=objj_allocateClassPair(CPView,"_CPMenuItemMenuBarSubmenuIndicatorView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_color"),new objj_ivar("_shadowColor")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("setColor:"),function(_26,_27,_28){ +with(_26){ +if(_color===_28){ +return; +} +_color=_28; +objj_msgSend(_26,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("setShadowColor:"),function(_29,_2a,_2b){ +with(_29){ +if(_shadowColor===_2b){ +return; +} +_shadowColor=_2b; +objj_msgSend(_29,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawRect:"),function(_2c,_2d,_2e){ +with(_2c){ +var _2f=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_30=objj_msgSend(_2c,"bounds"); +_30.size.height-=1; +_30.size.width-=2; +_30.origin.x+=1; +CGContextBeginPath(_2f); +CGContextMoveToPoint(_2f,CGRectGetMinX(_30),CGRectGetMinY(_30)); +CGContextAddLineToPoint(_2f,CGRectGetMaxX(_30),CGRectGetMinY(_30)); +CGContextAddLineToPoint(_2f,CGRectGetMidX(_30),CGRectGetMaxY(_30)); +CGContextClosePath(_2f); +CGContextSetShadowWithColor(_2f,CGSizeMake(0,1),1.1,_shadowColor||objj_msgSend(CPColor,"whiteColor")); +CGContextSetFillColor(_2f,_color||objj_msgSend(CPColor,"blackColor")); +CGContextFillPath(_2f); +} +})]); +p;26;_CPMenuItemSeparatorView.jt;1124;@STATIC;1.0;I;15;AppKit/CPView.jt;1085; +objj_executeFile("AppKit/CPView.j",NO); +var _1=objj_allocateClassPair(CPView,"_CPMenuItemSeparatorView"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPMenuItemSeparatorView").super_class},"initWithFrame:",_5); +if(_3){ +objj_msgSend(_3,"setAutoresizingMask:",CPViewWidthSizable); +} +return _3; +} +}),new objj_method(sel_getUid("drawRect:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_a=objj_msgSend(_6,"bounds"); +CGContextBeginPath(_9); +CGContextMoveToPoint(_9,CGRectGetMinX(_a),FLOOR(CGRectGetMidY(_a))-0.5); +CGContextAddLineToPoint(_9,CGRectGetMaxX(_a),FLOOR(CGRectGetMidY(_a))-0.5); +CGContextSetStrokeColor(_9,objj_msgSend(CPColor,"lightGrayColor")); +CGContextStrokePath(_9); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("view"),function(_b,_c){ +with(_b){ +return objj_msgSend(objj_msgSend(_b,"alloc"),"initWithFrame:",CGRectMake(0,0,0,10)); +} +})]); +p;25;_CPMenuItemStandardView.jt;9309;@STATIC;1.0;t;9290; +var _1=3,_2=14+3,_3=14,_4=17,_5=4,_6=30,_7=10; +var _8=nil,_9=nil,_a=nil,_b=[],_c=[]; +var _d=objj_allocateClassPair(CPView,"_CPMenuItemStandardView"),_e=_d.isa; +class_addIvars(_d,[new objj_ivar("_menuItem"),new objj_ivar("_font"),new objj_ivar("_textColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_minSize"),new objj_ivar("_isDirty"),new objj_ivar("_stateView"),new objj_ivar("_imageAndTextView"),new objj_ivar("_keyEquivalentView"),new objj_ivar("_submenuIndicatorView")]); +objj_registerClassPair(_d); +class_addMethods(_d,[new objj_method(sel_getUid("menuItem"),function(_f,_10){ +with(_f){ +return _menuItem; +} +}),new objj_method(sel_getUid("setMenuItem:"),function(_11,_12,_13){ +with(_11){ +_menuItem=_13; +} +}),new objj_method(sel_getUid("minSize"),function(_14,_15){ +with(_14){ +return _minSize; +} +}),new objj_method(sel_getUid("initWithFrame:"),function(_16,_17,_18){ +with(_16){ +_16=objj_msgSendSuper({receiver:_16,super_class:objj_getClass("_CPMenuItemStandardView").super_class},"initWithFrame:",_18); +if(_16){ +_stateView=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,0)); +objj_msgSend(_stateView,"setImageScaling:",CPScaleNone); +objj_msgSend(_16,"addSubview:",_stateView); +_imageAndTextView=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,0)); +objj_msgSend(_imageAndTextView,"setImagePosition:",CPImageLeft); +objj_msgSend(_imageAndTextView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_16,"addSubview:",_imageAndTextView); +_keyEquivalentView=objj_msgSend(objj_msgSend(_CPImageAndTextView,"alloc"),"initWithFrame:",CGRectMake(0,0,0,0)); +objj_msgSend(_keyEquivalentView,"setImagePosition:",CPNoImage); +objj_msgSend(_keyEquivalentView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_keyEquivalentView,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_16,"addSubview:",_keyEquivalentView); +_submenuIndicatorView=objj_msgSend(objj_msgSend(_CPMenuItemSubmenuIndicatorView,"alloc"),"initWithFrame:",CGRectMake(0,0,8,10)); +objj_msgSend(_submenuIndicatorView,"setColor:",_8); +objj_msgSend(_submenuIndicatorView,"setAutoresizingMask:",CPViewMinXMargin); +objj_msgSend(_16,"addSubview:",_submenuIndicatorView); +objj_msgSend(_16,"setAutoresizingMask:",CPViewWidthSizable); +} +return _16; +} +}),new objj_method(sel_getUid("textColor"),function(_19,_1a){ +with(_19){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return objj_msgSend(CPColor,"lightGrayColor"); +} +return _textColor||objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",70/255,69/255,69/255,1); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_1b,_1c){ +with(_1b){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return nil; +} +return _textShadowColor||objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.8); +} +}),new objj_method(sel_getUid("setFont:"),function(_1d,_1e,_1f){ +with(_1d){ +_font=_1f; +} +}),new objj_method(sel_getUid("update"),function(_20,_21){ +with(_20){ +var x=_1+objj_msgSend(_menuItem,"indentationLevel")*_4,_22=0,_23=objj_msgSend(objj_msgSend(_menuItem,"menu"),"showsStateColumn"); +if(_23){ +objj_msgSend(_stateView,"setHidden:",NO); +objj_msgSend(_stateView,"setImage:",_b[objj_msgSend(_menuItem,"state")]||nil); +x+=_3; +}else{ +objj_msgSend(_stateView,"setHidden:",YES); +} +objj_msgSend(_imageAndTextView,"setFont:",objj_msgSend(_menuItem,"font")||_font); +objj_msgSend(_imageAndTextView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setText:",objj_msgSend(_menuItem,"title")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_20,"textColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_20,"textShadowColor")); +objj_msgSend(_imageAndTextView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_imageAndTextView,"sizeToFit"); +var _24=objj_msgSend(_imageAndTextView,"frame"); +_24.origin.x=x; +x+=CGRectGetWidth(_24); +_22=MAX(_22,CGRectGetHeight(_24)); +var _25=!!objj_msgSend(_menuItem,"keyEquivalent"),_26=objj_msgSend(_menuItem,"hasSubmenu"); +if(_25||_26){ +x+=_6; +} +if(_25){ +objj_msgSend(_keyEquivalentView,"setFont:",objj_msgSend(_menuItem,"font")||_font); +objj_msgSend(_keyEquivalentView,"setVerticalAlignment:",CPCenterVerticalTextAlignment); +objj_msgSend(_keyEquivalentView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_keyEquivalentView,"setText:",objj_msgSend(_menuItem,"keyEquivalentStringRepresentation")); +objj_msgSend(_keyEquivalentView,"setTextColor:",objj_msgSend(_20,"textColor")); +objj_msgSend(_keyEquivalentView,"setTextShadowColor:",objj_msgSend(_20,"textShadowColor")); +objj_msgSend(_keyEquivalentView,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_keyEquivalentView,"setFrameOrigin:",CGPointMake(x,_5)); +objj_msgSend(_keyEquivalentView,"sizeToFit"); +var _27=objj_msgSend(_keyEquivalentView,"frame"); +_27.origin.x=x; +x+=CGRectGetWidth(_27); +_22=MAX(_22,CGRectGetHeight(_27)); +if(_26){ +x+=_6; +} +}else{ +objj_msgSend(_keyEquivalentView,"setHidden:",YES); +} +if(_26){ +objj_msgSend(_submenuIndicatorView,"setHidden:",NO); +var _28=objj_msgSend(_submenuIndicatorView,"frame"); +_28.origin.x=x; +x+=CGRectGetWidth(_28); +_22=MAX(_22,CGRectGetHeight(_28)); +}else{ +objj_msgSend(_submenuIndicatorView,"setHidden:",YES); +} +_22+=2*_5; +_24.origin.y=FLOOR((_22-CGRectGetHeight(_24))/2); +objj_msgSend(_imageAndTextView,"setFrame:",_24); +if(_23){ +objj_msgSend(_stateView,"setFrameSize:",CGSizeMake(_3,_22)); +} +if(_25){ +_27.origin.y=FLOOR((_22-CGRectGetHeight(_27))/2); +objj_msgSend(_keyEquivalentView,"setFrame:",_27); +} +if(_26){ +_28.origin.y=FLOOR((_22-CGRectGetHeight(_28))/2); +objj_msgSend(_submenuIndicatorView,"setFrame:",_28); +} +_minSize=CGSizeMake(x+_2,_22); +objj_msgSend(_20,"setAutoresizesSubviews:",NO); +objj_msgSend(_20,"setFrameSize:",_minSize); +objj_msgSend(_20,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("highlight:"),function(_29,_2a,_2b){ +with(_29){ +if(!objj_msgSend(_menuItem,"isEnabled")){ +return; +} +if(_2b){ +objj_msgSend(_29,"setBackgroundColor:",_9); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"alternateImage")||objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_keyEquivalentView,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_submenuIndicatorView,"setColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",_a); +objj_msgSend(_keyEquivalentView,"setTextShadowColor:",_a); +}else{ +objj_msgSend(_29,"setBackgroundColor:",nil); +objj_msgSend(_imageAndTextView,"setImage:",objj_msgSend(_menuItem,"image")); +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_29,"textColor")); +objj_msgSend(_keyEquivalentView,"setTextColor:",objj_msgSend(_29,"textColor")); +objj_msgSend(_submenuIndicatorView,"setColor:",_8); +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_29,"textShadowColor")); +objj_msgSend(_keyEquivalentView,"setTextShadowColor:",objj_msgSend(_29,"textShadowColor")); +} +if(objj_msgSend(objj_msgSend(_menuItem,"menu"),"showsStateColumn")){ +if(_2b){ +objj_msgSend(_stateView,"setImage:",_c[objj_msgSend(_menuItem,"state")]||nil); +}else{ +objj_msgSend(_stateView,"setImage:",_b[objj_msgSend(_menuItem,"state")]||nil); +} +} +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("initialize"),function(_2c,_2d){ +with(_2c){ +if(_2c!==objj_msgSend(_CPMenuItemStandardView,"class")){ +return; +} +_8=objj_msgSend(CPColor,"grayColor"); +_9=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",95/255,131/255,185/255,1); +_a=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",26/255,73/255,109/255,1); +var _2e=objj_msgSend(CPBundle,"bundleForClass:",_2c); +_b[CPOffState]=nil; +_c[CPOffState]=nil; +_b[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPMenuItem/CPMenuItemOnState.png"),CGSizeMake(14,14)); +_c[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPMenuItem/CPMenuItemOnStateHighlighted.png"),CGSizeMake(14,14)); +_b[CPMixedState]=nil; +_c[CPMixedState]=nil; +} +}),new objj_method(sel_getUid("view"),function(_2f,_30){ +with(_2f){ +return objj_msgSend(objj_msgSend(_2f,"alloc"),"init"); +} +}),new objj_method(sel_getUid("_standardLeftMargin"),function(_31,_32){ +with(_31){ +return _1+_3; +} +})]); +var _d=objj_allocateClassPair(CPView,"_CPMenuItemSubmenuIndicatorView"),_e=_d.isa; +class_addIvars(_d,[new objj_ivar("_color")]); +objj_registerClassPair(_d); +class_addMethods(_d,[new objj_method(sel_getUid("setColor:"),function(_33,_34,_35){ +with(_33){ +if(_color===_35){ +return; +} +_color=_35; +objj_msgSend(_33,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawRect:"),function(_36,_37,_38){ +with(_36){ +var _39=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"),_3a=objj_msgSend(_36,"bounds"); +CGContextBeginPath(_39); +CGContextMoveToPoint(_39,CGRectGetMinX(_3a),CGRectGetMinY(_3a)); +CGContextAddLineToPoint(_39,CGRectGetMaxX(_3a),CGRectGetMidY(_3a)); +CGContextAddLineToPoint(_39,CGRectGetMinX(_3a),CGRectGetMaxY(_3a)); +CGContextClosePath(_39); +CGContextSetFillColor(_39,_color); +CGContextFillPath(_39); +} +})]); +p;17;_CPMenuItemView.jt;6328;@STATIC;1.0;i;26;_CPMenuItemSeparatorView.ji;25;_CPMenuItemStandardView.ji;24;_CPMenuItemMenuBarView.jt;6219; +objj_executeFile("_CPMenuItemSeparatorView.j",YES); +objj_executeFile("_CPMenuItemStandardView.j",YES); +objj_executeFile("_CPMenuItemMenuBarView.j",YES); +var _1=3,_2=16,_3=14,_4=17,_5=4; +var _6=nil,_7=nil,_8=[],_9=[]; +var _a=objj_allocateClassPair(CPView,"_CPMenuItemView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_menuItem"),new objj_ivar("_view"),new objj_ivar("_font"),new objj_ivar("_textColor"),new objj_ivar("_textShadowColor"),new objj_ivar("_minSize"),new objj_ivar("_isDirty"),new objj_ivar("_showsStateColumn"),new objj_ivar("_stateView"),new objj_ivar("_imageAndTextView"),new objj_ivar("_submenuView")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("initWithFrame:forMenuItem:"),function(_c,_d,_e,_f){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPMenuItemView").super_class},"initWithFrame:",_e); +if(_c){ +_menuItem=_f; +_showsStateColumn=YES; +_isDirty=YES; +objj_msgSend(_c,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_c,"synchronizeWithMenuItem"); +} +return _c; +} +}),new objj_method(sel_getUid("minSize"),function(_10,_11){ +with(_10){ +return _minSize; +} +}),new objj_method(sel_getUid("setDirty"),function(_12,_13){ +with(_12){ +_isDirty=YES; +} +}),new objj_method(sel_getUid("synchronizeWithMenuItem"),function(_14,_15){ +with(_14){ +var _16=objj_msgSend(_menuItem,"view"); +if(objj_msgSend(_menuItem,"isSeparatorItem")){ +if(!objj_msgSend(_view,"isKindOfClass:",objj_msgSend(_CPMenuItemSeparatorView,"class"))){ +objj_msgSend(_view,"removeFromSuperview"); +_view=objj_msgSend(_CPMenuItemSeparatorView,"view"); +} +}else{ +if(_16){ +if(_view!==_16){ +objj_msgSend(_view,"removeFromSuperview"); +_view=_16; +} +}else{ +if(objj_msgSend(_menuItem,"menu")==objj_msgSend(CPApp,"mainMenu")){ +if(!objj_msgSend(_view,"isKindOfClass:",objj_msgSend(_CPMenuItemMenuBarView,"class"))){ +objj_msgSend(_view,"removeFromSuperview"); +_view=objj_msgSend(_CPMenuItemMenuBarView,"view"); +} +objj_msgSend(_view,"setMenuItem:",_menuItem); +}else{ +if(!objj_msgSend(_view,"isKindOfClass:",objj_msgSend(_CPMenuItemStandardView,"class"))){ +objj_msgSend(_view,"removeFromSuperview"); +_view=objj_msgSend(_CPMenuItemStandardView,"view"); +} +objj_msgSend(_view,"setMenuItem:",_menuItem); +} +} +} +if(objj_msgSend(_view,"superview")!==_14){ +objj_msgSend(_14,"addSubview:",_view); +} +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("update"))){ +objj_msgSend(_view,"update"); +} +_minSize=objj_msgSend(_view,"frame").size; +objj_msgSend(_14,"setAutoresizesSubviews:",NO); +objj_msgSend(_14,"setFrameSize:",_minSize); +objj_msgSend(_14,"setAutoresizesSubviews:",YES); +} +}),new objj_method(sel_getUid("setShowsStateColumn:"),function(_17,_18,_19){ +with(_17){ +_showsStateColumn=_19; +} +}),new objj_method(sel_getUid("highlight:"),function(_1a,_1b,_1c){ +with(_1a){ +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("highlight:"))){ +objj_msgSend(_view,"highlight:",_1c); +} +} +}),new objj_method(sel_getUid("eventOnSubmenu:"),function(_1d,_1e,_1f){ +with(_1d){ +if(!objj_msgSend(_menuItem,"hasSubmenu")){ +return NO; +} +return CGRectContainsPoint(objj_msgSend(_submenuView,"frame"),objj_msgSend(_1d,"convertPoint:fromView:",objj_msgSend(_1f,"locationInWindow"),nil)); +} +}),new objj_method(sel_getUid("isHidden"),function(_20,_21){ +with(_20){ +return objj_msgSend(_menuItem,"isHidden"); +} +}),new objj_method(sel_getUid("menuItem"),function(_22,_23){ +with(_22){ +return _menuItem; +} +}),new objj_method(sel_getUid("setFont:"),function(_24,_25,_26){ +with(_24){ +if(_font===_26){ +return; +} +_font=_26; +if(objj_msgSend(_view,"respondsToSelector:",sel_getUid("setFont:"))){ +objj_msgSend(_view,"setFont:",_26); +} +objj_msgSend(_24,"setDirty"); +} +}),new objj_method(sel_getUid("setTextColor:"),function(_27,_28,_29){ +with(_27){ +if(_textColor==_29){ +return; +} +_textColor=_29; +objj_msgSend(_imageAndTextView,"setTextColor:",objj_msgSend(_27,"textColor")); +objj_msgSend(_submenuView,"setColor:",objj_msgSend(_27,"textColor")); +} +}),new objj_method(sel_getUid("textColor"),function(_2a,_2b){ +with(_2a){ +return nil; +} +}),new objj_method(sel_getUid("setTextShadowColor:"),function(_2c,_2d,_2e){ +with(_2c){ +if(_textShadowColor==_2e){ +return; +} +_textShadowColor=_2e; +objj_msgSend(_imageAndTextView,"setTextShadowColor:",objj_msgSend(_2c,"textShadowColor")); +} +}),new objj_method(sel_getUid("textShadowColor"),function(_2f,_30){ +with(_2f){ +return objj_msgSend(_menuItem,"isEnabled")?(_textShadowColor?_textShadowColor:objj_msgSend(CPColor,"colorWithWhite:alpha:",1,0.8)):objj_msgSend(CPColor,"colorWithWhite:alpha:",0.8,0.8); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("initialize"),function(_31,_32){ +with(_31){ +if(_31!=objj_msgSend(_CPMenuItemView,"class")){ +return; +} +_6=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",95/255,131/255,185/255,1); +_7=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",26/255,73/255,109/255,1); +var _33=objj_msgSend(CPBundle,"bundleForClass:",_31); +_8[CPOffState]=nil; +_9[CPOffState]=nil; +_8[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_33,"pathForResource:","CPMenuItem/CPMenuItemOnState.png"),CGSizeMake(14,14)); +_9[CPOnState]=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_33,"pathForResource:","CPMenuItem/CPMenuItemOnStateHighlighted.png"),CGSizeMake(14,14)); +_8[CPMixedState]=nil; +_9[CPMixedState]=nil; +} +}),new objj_method(sel_getUid("leftMargin"),function(_34,_35){ +with(_34){ +return _1+_3; +} +})]); +var _a=objj_allocateClassPair(CPView,"_CPMenuItemArrowView"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_color")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("setColor:"),function(_36,_37,_38){ +with(_36){ +if(_color==_38){ +return; +} +_color=_38; +objj_msgSend(_36,"setNeedsDisplay:",YES); +} +}),new objj_method(sel_getUid("drawRect:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=objj_msgSend(objj_msgSend(CPGraphicsContext,"currentContext"),"graphicsPort"); +CGContextBeginPath(_3c); +CGContextMoveToPoint(_3c,1,4); +CGContextAddLineToPoint(_3c,9,4); +CGContextAddLineToPoint(_3c,5,8); +CGContextAddLineToPoint(_3c,1,4); +CGContextClosePath(_3c); +CGContextSetFillColor(_3c,_color); +CGContextFillPath(_3c); +} +})]); +p;12;CPMenuItem.jt;16451;@STATIC;1.0;I;20;Foundation/CPCoder.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;9;CPImage.ji;8;CPMenu.ji;8;CPView.ji;17;_CPMenuItemView.jt;16295; +objj_executeFile("Foundation/CPCoder.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("CPImage.j",YES); +objj_executeFile("CPMenu.j",YES); +objj_executeFile("CPView.j",YES); +objj_executeFile("_CPMenuItemView.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPMenuItem"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_isSeparator"),new objj_ivar("_title"),new objj_ivar("_font"),new objj_ivar("_target"),new objj_ivar("_action"),new objj_ivar("_isEnabled"),new objj_ivar("_isHidden"),new objj_ivar("_tag"),new objj_ivar("_state"),new objj_ivar("_image"),new objj_ivar("_alternateImage"),new objj_ivar("_onStateImage"),new objj_ivar("_offStateImage"),new objj_ivar("_mixedStateImage"),new objj_ivar("_submenu"),new objj_ivar("_menu"),new objj_ivar("_keyEquivalent"),new objj_ivar("_keyEquivalentModifierMask"),new objj_ivar("_mnemonicLocation"),new objj_ivar("_isAlternate"),new objj_ivar("_indentationLevel"),new objj_ivar("_toolTip"),new objj_ivar("_representedObject"),new objj_ivar("_view"),new objj_ivar("_menuItemView")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithTitle:action:keyEquivalent:","",nil,nil); +} +}),new objj_method(sel_getUid("initWithTitle:action:keyEquivalent:"),function(_5,_6,_7,_8,_9){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPMenuItem").super_class},"init"); +if(_5){ +_isSeparator=NO; +_title=_7; +_action=_8; +_isEnabled=YES; +_tag=0; +_state=CPOffState; +_keyEquivalent=_9||""; +_keyEquivalentModifierMask=CPPlatformActionKeyMask; +_indentationLevel=0; +_mnemonicLocation=CPNotFound; +} +return _5; +} +}),new objj_method(sel_getUid("setEnabled:"),function(_a,_b,_c){ +with(_a){ +if(objj_msgSend(_menu,"autoenablesItems")){ +return; +} +_isEnabled=_c; +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_a); +} +}),new objj_method(sel_getUid("isEnabled"),function(_d,_e){ +with(_d){ +return _isEnabled; +} +}),new objj_method(sel_getUid("setHidden:"),function(_f,_10,_11){ +with(_f){ +if(_isHidden==_11){ +return; +} +_isHidden=_11; +objj_msgSend(_menu,"itemChanged:",_f); +} +}),new objj_method(sel_getUid("isHidden"),function(_12,_13){ +with(_12){ +return _isHidden; +} +}),new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"),function(_14,_15){ +with(_14){ +if(_isHidden){ +return YES; +} +var _16=objj_msgSend(_menu,"supermenu"); +if(objj_msgSend(objj_msgSend(_16,"itemAtIndex:",objj_msgSend(_16,"indexOfItemWithSubmenu:",_menu)),"isHiddenOrHasHiddenAncestor")){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("setTarget:"),function(_17,_18,_19){ +with(_17){ +_target=_19; +} +}),new objj_method(sel_getUid("target"),function(_1a,_1b){ +with(_1a){ +return _target; +} +}),new objj_method(sel_getUid("setAction:"),function(_1c,_1d,_1e){ +with(_1c){ +_action=_1e; +} +}),new objj_method(sel_getUid("action"),function(_1f,_20){ +with(_1f){ +return _action; +} +}),new objj_method(sel_getUid("setTitle:"),function(_21,_22,_23){ +with(_21){ +_mnemonicLocation=CPNotFound; +if(_title==_23){ +return; +} +_title=_23; +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_21); +} +}),new objj_method(sel_getUid("title"),function(_24,_25){ +with(_24){ +return _title; +} +}),new objj_method(sel_getUid("setTextColor:"),function(_26,_27,_28){ +with(_26){ +} +}),new objj_method(sel_getUid("setFont:"),function(_29,_2a,_2b){ +with(_29){ +if(_font==_2b){ +return; +} +_font=_2b; +objj_msgSend(_menu,"itemChanged:",_29); +objj_msgSend(_menuItemView,"setDirty"); +} +}),new objj_method(sel_getUid("font"),function(_2c,_2d){ +with(_2c){ +return _font; +} +}),new objj_method(sel_getUid("setTag:"),function(_2e,_2f,_30){ +with(_2e){ +_tag=_30; +} +}),new objj_method(sel_getUid("tag"),function(_31,_32){ +with(_31){ +return _tag; +} +}),new objj_method(sel_getUid("setState:"),function(_33,_34,_35){ +with(_33){ +if(_state==_35){ +return; +} +_state=_35; +objj_msgSend(_menu,"itemChanged:",_33); +objj_msgSend(_menuItemView,"setDirty"); +} +}),new objj_method(sel_getUid("state"),function(_36,_37){ +with(_36){ +return _state; +} +}),new objj_method(sel_getUid("setImage:"),function(_38,_39,_3a){ +with(_38){ +if(_image==_3a){ +return; +} +_image=_3a; +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_38); +} +}),new objj_method(sel_getUid("image"),function(_3b,_3c){ +with(_3b){ +return _image; +} +}),new objj_method(sel_getUid("setAlternateImage:"),function(_3d,_3e,_3f){ +with(_3d){ +_alternateImage=_3f; +} +}),new objj_method(sel_getUid("alternateImage"),function(_40,_41){ +with(_40){ +return _alternateImage; +} +}),new objj_method(sel_getUid("setOnStateImage:"),function(_42,_43,_44){ +with(_42){ +if(_onStateImage==_44){ +return; +} +_onStateImage=_44; +objj_msgSend(_menu,"itemChanged:",_42); +} +}),new objj_method(sel_getUid("onStateImage"),function(_45,_46){ +with(_45){ +return _onStateImage; +} +}),new objj_method(sel_getUid("setOffStateImage:"),function(_47,_48,_49){ +with(_47){ +if(_offStateImage==_49){ +return; +} +_offStateImage=_49; +objj_msgSend(_menu,"itemChanged:",_47); +} +}),new objj_method(sel_getUid("offStateImage"),function(_4a,_4b){ +with(_4a){ +return _offStateImage; +} +}),new objj_method(sel_getUid("setMixedStateImage:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_mixedStateImage==_4e){ +return; +} +_mixedStateImage=_4e; +objj_msgSend(_menu,"itemChanged:",_4c); +} +}),new objj_method(sel_getUid("mixedStateImage"),function(_4f,_50){ +with(_4f){ +return _mixedStateImage; +} +}),new objj_method(sel_getUid("setSubmenu:"),function(_51,_52,_53){ +with(_51){ +if(_submenu===_53){ +return; +} +var _54=objj_msgSend(_submenu,"supermenu"); +if(_54){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Can't add submenu \""+objj_msgSend(_53,"title")+"\" to item \""+objj_msgSend(_51,"title")+"\", because it is already submenu of \""+objj_msgSend(objj_msgSend(_53,"supermenu"),"title")+"\""); +} +_submenu=_53; +if(_submenu){ +objj_msgSend(_submenu,"setSupermenu:",_menu); +objj_msgSend(_51,"setTarget:",_menu); +objj_msgSend(_51,"setAction:",sel_getUid("submenuAction:")); +}else{ +objj_msgSend(_51,"setTarget:",nil); +objj_msgSend(_51,"setAction:",NULL); +} +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_51); +} +}),new objj_method(sel_getUid("submenu"),function(_55,_56){ +with(_55){ +return _submenu; +} +}),new objj_method(sel_getUid("hasSubmenu"),function(_57,_58){ +with(_57){ +return _submenu?YES:NO; +} +}),new objj_method(sel_getUid("isSeparatorItem"),function(_59,_5a){ +with(_59){ +return _isSeparator; +} +}),new objj_method(sel_getUid("setMenu:"),function(_5b,_5c,_5d){ +with(_5b){ +_menu=_5d; +} +}),new objj_method(sel_getUid("menu"),function(_5e,_5f){ +with(_5e){ +return _menu; +} +}),new objj_method(sel_getUid("setKeyEquivalent:"),function(_60,_61,_62){ +with(_60){ +_keyEquivalent=_62||""; +} +}),new objj_method(sel_getUid("keyEquivalent"),function(_63,_64){ +with(_63){ +return _keyEquivalent; +} +}),new objj_method(sel_getUid("setKeyEquivalentModifierMask:"),function(_65,_66,_67){ +with(_65){ +_keyEquivalentModifierMask=_67; +} +}),new objj_method(sel_getUid("keyEquivalentModifierMask"),function(_68,_69){ +with(_68){ +return _keyEquivalentModifierMask; +} +}),new objj_method(sel_getUid("keyEquivalentStringRepresentation"),function(_6a,_6b){ +with(_6a){ +if(!objj_msgSend(_keyEquivalent,"length")){ +return ""; +} +var _6c=_keyEquivalent.toUpperCase(),_6d=_keyEquivalentModifierMask&CPShiftKeyMask||(_6c===_keyEquivalent&&_keyEquivalent.toLowerCase()!==_keyEquivalent.toUpperCase()); +if(CPBrowserIsOperatingSystem(CPMacOperatingSystem)){ +if(_keyEquivalentModifierMask&CPCommandKeyMask){ +_6c="⌘"+_6c; +} +if(_6d){ +_6c="⇧"+_6c; +} +if(_keyEquivalentModifierMask&CPAlternateKeyMask){ +_6c="⌥"+_6c; +} +if(_keyEquivalentModifierMask&CPControlKeyMask){ +_6c="^"+_6c; +} +}else{ +if(_6d){ +_6c="Shift-"+_6c; +} +if(_keyEquivalentModifierMask&CPAlternateKeyMask){ +_6c="Alt-"+_6c; +} +if(_keyEquivalentModifierMask&CPControlKeyMask||_keyEquivalentModifierMask&CPCommandKeyMask){ +_6c="Ctrl-"+_6c; +} +} +return _6c; +} +}),new objj_method(sel_getUid("setMnemonicLocation:"),function(_6e,_6f,_70){ +with(_6e){ +_mnemonicLocation=_70; +} +}),new objj_method(sel_getUid("mnemonicLocation"),function(_71,_72){ +with(_71){ +return _mnemonicLocation; +} +}),new objj_method(sel_getUid("setTitleWithMnemonicLocation:"),function(_73,_74,_75){ +with(_73){ +var _76=objj_msgSend(_75,"rangeOfString:","&").location; +if(_76==CPNotFound){ +objj_msgSend(_73,"setTitle:",_75); +}else{ +objj_msgSend(_73,"setTitle:",objj_msgSend(_75,"substringToIndex:",_76)+objj_msgSend(_75,"substringFromIndex:",_76+1)); +objj_msgSend(_73,"setMnemonicLocation:",_76); +} +} +}),new objj_method(sel_getUid("mnemonic"),function(_77,_78){ +with(_77){ +return _mnemonicLocation==CPNotFound?"":objj_msgSend(_title,"characterAtIndex:",_mnemonicLocation); +} +}),new objj_method(sel_getUid("setAlternate:"),function(_79,_7a,_7b){ +with(_79){ +_isAlternate=_7b; +} +}),new objj_method(sel_getUid("isAlternate"),function(_7c,_7d){ +with(_7c){ +return _isAlternate; +} +}),new objj_method(sel_getUid("setIndentationLevel:"),function(_7e,_7f,_80){ +with(_7e){ +if(_80<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"setIndentationLevel: argument must be greater than or equal to 0."); +} +_indentationLevel=MIN(15,_80); +} +}),new objj_method(sel_getUid("indentationLevel"),function(_81,_82){ +with(_81){ +return _indentationLevel; +} +}),new objj_method(sel_getUid("setToolTip:"),function(_83,_84,_85){ +with(_83){ +_toolTip=_85; +} +}),new objj_method(sel_getUid("toolTip"),function(_86,_87){ +with(_86){ +return _toolTip; +} +}),new objj_method(sel_getUid("setRepresentedObject:"),function(_88,_89,_8a){ +with(_88){ +_representedObject=_8a; +} +}),new objj_method(sel_getUid("representedObject"),function(_8b,_8c){ +with(_8b){ +return _representedObject; +} +}),new objj_method(sel_getUid("setView:"),function(_8d,_8e,_8f){ +with(_8d){ +if(_view===_8f){ +return; +} +_view=_8f; +objj_msgSend(_menuItemView,"setDirty"); +objj_msgSend(_menu,"itemChanged:",_8d); +} +}),new objj_method(sel_getUid("view"),function(_90,_91){ +with(_90){ +return _view; +} +}),new objj_method(sel_getUid("isHighlighted"),function(_92,_93){ +with(_92){ +return objj_msgSend(objj_msgSend(_92,"menu"),"highlightedItem")==_92; +} +}),new objj_method(sel_getUid("copy"),function(_94,_95){ +with(_94){ +var _96=objj_msgSend(objj_msgSend(CPMenuItem,"alloc"),"init"); +_96._isSeparator=_isSeparator; +objj_msgSend(_96,"setTitle:",_title); +objj_msgSend(_96,"setFont:",_font); +objj_msgSend(_96,"setTarget:",_target); +objj_msgSend(_96,"setAction:",_action); +objj_msgSend(_96,"setEnabled:",_isEnabled); +objj_msgSend(_96,"setHidden:",_isHidden); +objj_msgSend(_96,"setTag:",_tag); +objj_msgSend(_96,"setState:",_state); +objj_msgSend(_96,"setImage:",_image); +objj_msgSend(_96,"setAlternateImage:",_alternateImage); +objj_msgSend(_96,"setOnStateImage:",_onStateImage); +objj_msgSend(_96,"setOffStateImage:",_offStateImage); +objj_msgSend(_96,"setMixedStateImage:",_mixedStateImage); +objj_msgSend(_96,"setKeyEquivalent:",_keyEquivalent); +objj_msgSend(_96,"setKeyEquivalentModifierMask:",_keyEquivalentModifierMask); +objj_msgSend(_96,"setMnemonicLocation:",_mnemonicLocation); +objj_msgSend(_96,"setAlternate:",_isAlternate); +objj_msgSend(_96,"setIndentationLevel:",_indentationLevel); +objj_msgSend(_96,"setToolTip:",_toolTip); +objj_msgSend(_96,"setRepresentedObject:",_representedObject); +return _96; +} +}),new objj_method(sel_getUid("mutableCopy"),function(_97,_98){ +with(_97){ +return objj_msgSend(_97,"copy"); +} +}),new objj_method(sel_getUid("_menuItemView"),function(_99,_9a){ +with(_99){ +if(!_menuItemView){ +_menuItemView=objj_msgSend(objj_msgSend(_CPMenuItemView,"alloc"),"initWithFrame:forMenuItem:",CGRectMakeZero(),_99); +} +return _menuItemView; +} +}),new objj_method(sel_getUid("_isSelectable"),function(_9b,_9c){ +with(_9b){ +return !objj_msgSend(_9b,"submenu")||objj_msgSend(_9b,"action")!==sel_getUid("submenuAction:")||objj_msgSend(_9b,"target")!==objj_msgSend(_9b,"menu"); +} +}),new objj_method(sel_getUid("_isMenuBarButton"),function(_9d,_9e){ +with(_9d){ +return !objj_msgSend(_9d,"submenu")&&objj_msgSend(_9d,"menu")===objj_msgSend(CPApp,"mainMenu"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("separatorItem"),function(_9f,_a0){ +with(_9f){ +var _a1=objj_msgSend(objj_msgSend(_9f,"alloc"),"initWithTitle:action:keyEquivalent:","",nil,nil); +_a1._isSeparator=YES; +return _a1; +} +})]); +var _a2="CPMenuItemIsSeparatorKey",_a3="CPMenuItemTitleKey",_a4="CPMenuItemTargetKey",_a5="CPMenuItemActionKey",_a6="CPMenuItemIsEnabledKey",_a7="CPMenuItemIsHiddenKey",_a8="CPMenuItemTagKey",_a9="CPMenuItemStateKey",_aa="CPMenuItemImageKey",_ab="CPMenuItemAlternateImageKey",_ac="CPMenuItemSubmenuKey",_ad="CPMenuItemMenuKey",_ae="CPMenuItemKeyEquivalentKey",_af="CPMenuItemKeyEquivalentModifierMaskKey",_b0="CPMenuItemIndentationLevelKey",_b1="CPMenuItemRepresentedObjectKey",_b2="CPMenuItemViewKey"; +var _1=objj_getClass("CPMenuItem"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPMenuItem\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_b3,_b4,_b5){ +with(_b3){ +_b3=objj_msgSendSuper({receiver:_b3,super_class:objj_getClass("CPMenuItem").super_class},"init"); +if(_b3){ +_isSeparator=objj_msgSend(_b5,"containsValueForKey:",_a2)&&objj_msgSend(_b5,"decodeBoolForKey:",_a2); +_title=objj_msgSend(_b5,"decodeObjectForKey:",_a3); +_target=objj_msgSend(_b5,"decodeObjectForKey:",_a4); +_action=objj_msgSend(_b5,"decodeObjectForKey:",_a5); +_isEnabled=objj_msgSend(_b5,"containsValueForKey:",(_a6))?objj_msgSend(_b5,"decodeObjectForKey:",(_a6)):(YES); +_isHidden=objj_msgSend(_b5,"containsValueForKey:",(_a7))?objj_msgSend(_b5,"decodeObjectForKey:",(_a7)):(NO); +_tag=objj_msgSend(_b5,"containsValueForKey:",(_a8))?objj_msgSend(_b5,"decodeObjectForKey:",(_a8)):(0); +_state=objj_msgSend(_b5,"containsValueForKey:",(_a9))?objj_msgSend(_b5,"decodeObjectForKey:",(_a9)):(CPOffState); +_image=objj_msgSend(_b5,"containsValueForKey:",(_aa))?objj_msgSend(_b5,"decodeObjectForKey:",(_aa)):(nil); +_alternateImage=objj_msgSend(_b5,"containsValueForKey:",(_ab))?objj_msgSend(_b5,"decodeObjectForKey:",(_ab)):(nil); +_menu=objj_msgSend(_b5,"containsValueForKey:",(_ad))?objj_msgSend(_b5,"decodeObjectForKey:",(_ad)):(nil); +objj_msgSend(_b3,"setSubmenu:",objj_msgSend(_b5,"containsValueForKey:",(_ac))?objj_msgSend(_b5,"decodeObjectForKey:",(_ac)):(nil)); +_keyEquivalent=objj_msgSend(_b5,"decodeObjectForKey:",_ae)||""; +_keyEquivalentModifierMask=objj_msgSend(_b5,"decodeObjectForKey:",_af)||0; +objj_msgSend(_b3,"setIndentationLevel:",objj_msgSend(_b5,"decodeIntForKey:",_b0)||0); +_representedObject=objj_msgSend(_b5,"containsValueForKey:",(_b1))?objj_msgSend(_b5,"decodeObjectForKey:",(_b1)):(nil); +_view=objj_msgSend(_b5,"containsValueForKey:",(_b2))?objj_msgSend(_b5,"decodeObjectForKey:",(_b2)):(nil); +} +return _b3; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_b6,_b7,_b8){ +with(_b6){ +if(_isSeparator){ +objj_msgSend(_b8,"encodeBool:forKey:",_isSeparator,_a2); +} +objj_msgSend(_b8,"encodeObject:forKey:",_title,_a3); +objj_msgSend(_b8,"encodeObject:forKey:",_target,_a4); +objj_msgSend(_b8,"encodeObject:forKey:",_action,_a5); +if((_isEnabled)!==(YES)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_isEnabled),(_a6)); +} +if((_isHidden)!==(NO)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_isHidden),(_a7)); +} +if((_tag)!==(0)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_tag),(_a8)); +} +if((_state)!==(CPOffState)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_state),(_a9)); +} +if((_image)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_image),(_aa)); +} +if((_alternateImage)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_alternateImage),(_ab)); +} +if((_submenu)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_submenu),(_ac)); +} +if((_menu)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_menu),(_ad)); +} +if(_keyEquivalent&&_keyEquivalent.length){ +objj_msgSend(_b8,"encodeObject:forKey:",_keyEquivalent,_ae); +} +if(_keyEquivalentModifierMask){ +objj_msgSend(_b8,"encodeObject:forKey:",_keyEquivalentModifierMask,_af); +} +if(_indentationLevel>0){ +objj_msgSend(_b8,"encodeInt:forKey:",_indentationLevel,_b0); +} +if((_representedObject)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_representedObject),(_b1)); +} +if((_view)!==(nil)){ +objj_msgSend(_b8,"encodeObject:forKey:",(_view),(_b2)); +} +} +})]); +p;31;_CPBorderlessBridgeWindowView.jt;2040;@STATIC;1.0;i;15;_CPWindowView.jt;2001; +objj_executeFile("_CPWindowView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(_CPWindowView,"_CPBorderlessBridgeWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_toolbarBackgroundView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_4,_5,_6){ +with(_4){ +} +}),new objj_method(sel_getUid("tile"),function(_7,_8){ +with(_7){ +objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPBorderlessBridgeWindowView").super_class},"tile"); +var _9=objj_msgSend(_7,"window"),_a=objj_msgSend(_7,"bounds"); +objj_msgSend(objj_msgSend(_9,"contentView"),"setFrame:",CGRectMake(0,objj_msgSend(_7,"toolbarMaxY"),CGRectGetWidth(_a),CGRectGetHeight(_a)-objj_msgSend(_7,"toolbarMaxY"))); +if(!objj_msgSend(objj_msgSend(_9,"toolbar"),"isVisible")){ +objj_msgSend(_toolbarBackgroundView,"removeFromSuperview"); +_toolbarBackgroundView=nil; +return; +} +if(!_toolbarBackgroundView){ +_toolbarBackgroundView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_toolbarBackgroundView,"setBackgroundColor:",objj_msgSend(objj_msgSend(_7,"class"),"toolbarBackgroundColor")); +objj_msgSend(_toolbarBackgroundView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_7,"addSubview:positioned:relativeTo:",_toolbarBackgroundView,CPWindowBelow,nil); +} +var _b=CGRectMakeZero(),_c=objj_msgSend(_7,"toolbarOffset"); +_b.origin=CGPointMake(_c.width,_c.height); +_b.size=objj_msgSend(_toolbarView,"frame").size; +objj_msgSend(_toolbarBackgroundView,"setFrame:",_b); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("toolbarBackgroundColor"),function(_d,_e){ +with(_d){ +if(!_1){ +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPBorderlessBridgeWindowView,"class")),"pathForResource:","_CPToolbarView/_CPToolbarViewBackground.png"),CGSizeMake(1,59))); +} +return _1; +} +})]); +p;25;_CPBorderlessWindowView.jt;190;@STATIC;1.0;i;15;_CPWindowView.jt;152; +objj_executeFile("_CPWindowView.j",YES); +var _1=objj_allocateClassPair(_CPWindowView,"_CPBorderlessWindowView"),_2=_1.isa; +objj_registerClassPair(_1); +p;23;_CPDocModalWindowView.jt;1359;@STATIC;1.0;i;15;_CPWindowView.jt;1320; +objj_executeFile("_CPWindowView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(_CPWindowView,"_CPDocModalWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_bodyView")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_4,_5,_6,_7){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("_CPDocModalWindowView").super_class},"initWithFrame:styleMask:",_6,_7); +if(_4){ +var _8=objj_msgSend(_4,"class"),_9=objj_msgSend(_4,"bounds"); +_bodyView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_9),CGRectGetHeight(_9))); +objj_msgSend(_bodyView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_bodyView,"setBackgroundColor:",objj_msgSend(_8,"bodyBackgroundColor")); +objj_msgSend(_bodyView,"setHitTests:",NO); +objj_msgSend(_4,"addSubview:",_bodyView); +} +return _4; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_a,_b,_c){ +with(_a){ +return _c; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_d,_e,_f){ +with(_d){ +return _f; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("bodyBackgroundColor"),function(_10,_11){ +with(_10){ +if(!_1){ +_1=objj_msgSend(CPColor,"colorWithWhite:alpha:",0.96,0.9); +} +return _1; +} +})]); +p;18;_CPHUDWindowView.jt;6961;@STATIC;1.0;t;6942; +var _1=nil,_2=nil; +var _3=26; +var _4=objj_allocateClassPair(_CPWindowView,"_CPHUDWindowView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_toolbarView"),new objj_ivar("_titleField"),new objj_ivar("_closeButton")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(objj_msgSend(_6,"class"),"contentRectForFrameRect:",_8); +if(objj_msgSend(objj_msgSend(objj_msgSend(_6,"window"),"toolbar"),"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_6,"toolbarView"),"frame")); +_9.origin.y+=toolbarHeight; +_9.size.height-=toolbarHeight; +} +return _9; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_a,_b,_c){ +with(_a){ +var _d=objj_msgSend(objj_msgSend(_a,"class"),"frameRectForContentRect:",_c); +if(objj_msgSend(objj_msgSend(objj_msgSend(_a,"window"),"toolbar"),"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_a,"toolbarView"),"frame")); +_d.origin.y-=toolbarHeight; +_d.size.height+=toolbarHeight; +} +return _d; +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("_CPHUDWindowView").super_class},"initWithFrame:styleMask:",_10,_11); +if(_e){ +var _12=objj_msgSend(_e,"bounds"); +objj_msgSend(_e,"setBackgroundColor:",_1); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setHitTests:",NO); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"systemFontOfSize:",11)); +objj_msgSend(_titleField,"setTextColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_titleField,"setTextShadowColor:",objj_msgSend(CPColor,"blackColor")); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setStringValue:","Untitled"); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setStringValue:",""); +objj_msgSend(_titleField,"setFrame:",CGRectMake(20,3,CGRectGetWidth(objj_msgSend(_e,"bounds"))-40,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +objj_msgSend(_e,"addSubview:",_titleField); +if(_styleMask&CPClosableWindowMask){ +var _13=objj_msgSend(_CPHUDWindowViewCloseImage,"size"); +_closeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(8,5,_13.width,_13.height)); +objj_msgSend(_closeButton,"setBordered:",NO); +objj_msgSend(_closeButton,"setImage:",_CPHUDWindowViewCloseImage); +objj_msgSend(_closeButton,"setAlternateImage:",_CPHUDWindowViewCloseActiveImage); +objj_msgSend(_e,"addSubview:",_closeButton); +} +objj_msgSend(_e,"setResizeIndicatorOffset:",CGSizeMake(5,5)); +} +return _e; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_14,_15){ +with(_14){ +objj_msgSend(_closeButton,"setTarget:",objj_msgSend(_14,"window")); +objj_msgSend(_closeButton,"setAction:",sel_getUid("performClose:")); +} +}),new objj_method(sel_getUid("setTitle:"),function(_16,_17,_18){ +with(_16){ +objj_msgSend(_titleField,"setStringValue:",_18); +} +}),new objj_method(sel_getUid("toolbarView"),function(_19,_1a){ +with(_19){ +return _toolbarView; +} +}),new objj_method(sel_getUid("toolbarLabelColor"),function(_1b,_1c){ +with(_1b){ +return objj_msgSend(CPColor,"whiteColor"); +} +}),new objj_method(sel_getUid("toolbarLabelShadowColor"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_1f,_20){ +with(_1f){ +return CGSizeMake(0,_3); +} +}),new objj_method(sel_getUid("tile"),function(_21,_22){ +with(_21){ +objj_msgSendSuper({receiver:_21,super_class:objj_getClass("_CPHUDWindowView").super_class},"tile"); +var _23=objj_msgSend(_21,"window"),_24=objj_msgSend(_21,"bounds"),_25=CGRectGetWidth(_24); +objj_msgSend(_titleField,"setFrame:",CGRectMake(20,3,_25-40,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +var _26=objj_msgSend(_21,"toolbarMaxY"); +objj_msgSend(objj_msgSend(_23,"contentView"),"setFrameOrigin:",CGPointMake(0,_26,_25,CGRectGetHeight(_24)-_26)); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("initialize"),function(_27,_28){ +with(_27){ +if(_27!=objj_msgSend(_CPHUDWindowView,"class")){ +return; +} +var _29=objj_msgSend(CPBundle,"bundleForClass:",_27); +_1=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground0.png"),CPSizeMake(7,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground1.png"),CPSizeMake(1,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground2.png"),CPSizeMake(7,37)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground3.png"),CPSizeMake(7,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground4.png"),CPSizeMake(2,2)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground5.png"),CPSizeMake(7,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground6.png"),CPSizeMake(7,3)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground7.png"),CPSizeMake(1,3)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","CPWindow/HUD/CPWindowHUDBackground8.png"),CPSizeMake(7,3))])); +_CPHUDWindowViewCloseImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","HUDTheme/WindowClose.png"),CPSizeMake(18,18)); +_CPHUDWindowViewCloseActiveImage=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_29,"pathForResource:","HUDTheme/WindowCloseActive.png"),CPSizeMake(18,18)); +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_2a,_2b,_2c){ +with(_2a){ +var _2d=CGRectMakeCopy(_2c),_2e=_3; +_2d.origin.y+=_2e; +_2d.size.height-=_2e; +return _2d; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_2f,_30,_31){ +with(_2f){ +var _32=CGRectMakeCopy(_31),_33=_3; +_32.origin.y-=_33; +_32.size.height+=_33; +return _32; +} +})]); +p;23;_CPStandardWindowView.jt;11862;@STATIC;1.0;i;15;_CPWindowView.jt;11822; +objj_executeFile("_CPWindowView.j",YES); +var _1=41; +var _2=nil,_3=nil; +var _4=objj_allocateClassPair(CPView,"_CPTexturedWindowHeadView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_gradientView"),new objj_ivar("_solidView"),new objj_ivar("_dividerView")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("initWithFrame:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("_CPTexturedWindowHeadView").super_class},"initWithFrame:",_8); +if(_6){ +var _9=objj_msgSend(_6,"class"),_a=objj_msgSend(_6,"bounds"); +_gradientView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_a),_1)); +objj_msgSend(_gradientView,"setBackgroundColor:",objj_msgSend(_9,"gradientColor")); +objj_msgSend(_6,"addSubview:",_gradientView); +_solidView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,_1,CGRectGetWidth(_a),CGRectGetHeight(_a)-_1)); +objj_msgSend(_solidView,"setBackgroundColor:",objj_msgSend(_9,"solidColor")); +objj_msgSend(_6,"addSubview:",_solidView); +} +return _6; +} +}),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_b,_c,_d){ +with(_b){ +var _e=objj_msgSend(_b,"bounds"); +objj_msgSend(_gradientView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_e),_1)); +objj_msgSend(_solidView,"setFrameSize:",CGSizeMake(CGRectGetWidth(_e),CGRectGetHeight(_e)-_1)); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("gradientColor"),function(_f,_10){ +with(_f){ +if(!_2){ +var _11=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(_CPWindowView,"class")); +_2=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPThreePartImage,"alloc"),"initWithImageSlices:isVertical:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop0.png"),CGSizeMake(6,41)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop1.png"),CGSizeMake(1,41)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_11,"pathForResource:","CPWindow/Standard/CPWindowStandardTop2.png"),CGSizeMake(6,41))],NO)); +} +return _2; +} +}),new objj_method(sel_getUid("solidColor"),function(_12,_13){ +with(_12){ +if(!_3){ +_3=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",195/255,195/255,195/255,1); +} +return _3; +} +})]); +var _14=nil,_15=nil,_16=nil,_17=nil,_18=nil,_19=nil,_1a=nil,_1b=nil,_1c=nil; +var _1d=41; +STANDARD_TITLEBAR_HEIGHT=25; +var _4=objj_allocateClassPair(_CPWindowView,"_CPStandardWindowView"),_5=_4.isa; +class_addIvars(_4,[new objj_ivar("_headView"),new objj_ivar("_dividerView"),new objj_ivar("_bodyView"),new objj_ivar("_toolbarView"),new objj_ivar("_titleField"),new objj_ivar("_closeButton"),new objj_ivar("_minimizeButton"),new objj_ivar("_isDocumentEdited")]); +objj_registerClassPair(_4); +class_addMethods(_4,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_1e,_1f,_20){ +with(_1e){ +var _21=objj_msgSend(objj_msgSend(_1e,"class"),"contentRectForFrameRect:",_20),_22=objj_msgSend(objj_msgSend(_1e,"window"),"toolbar"); +if(objj_msgSend(_22,"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_22,"_toolbarView"),"frame")); +_21.origin.y+=toolbarHeight; +_21.size.height-=toolbarHeight; +} +return _21; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_23,_24,_25){ +with(_23){ +var _26=objj_msgSend(objj_msgSend(_23,"class"),"frameRectForContentRect:",_25),_27=objj_msgSend(objj_msgSend(_23,"window"),"toolbar"); +if(objj_msgSend(_27,"isVisible")){ +toolbarHeight=CGRectGetHeight(objj_msgSend(objj_msgSend(_27,"_toolbarView"),"frame")); +_26.origin.y-=toolbarHeight; +_26.size.height+=toolbarHeight; +} +return _26; +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_28,_29,_2a,_2b){ +with(_28){ +_28=objj_msgSendSuper({receiver:_28,super_class:objj_getClass("_CPStandardWindowView").super_class},"initWithFrame:styleMask:",_2a,_2b); +if(_28){ +var _2c=objj_msgSend(_28,"class"),_2d=objj_msgSend(_28,"bounds"); +_headView=objj_msgSend(objj_msgSend(_CPTexturedWindowHeadView,"alloc"),"initWithFrame:",CGRectMake(0,0,CGRectGetWidth(_2d),objj_msgSend(objj_msgSend(_28,"class"),"titleBarHeight"))); +objj_msgSend(_headView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_headView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_headView); +_dividerView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,CGRectGetMaxY(objj_msgSend(_headView,"frame")),CGRectGetWidth(_2d),1)); +objj_msgSend(_dividerView,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_dividerView,"setBackgroundColor:",objj_msgSend(_2c,"dividerBackgroundColor")); +objj_msgSend(_dividerView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_dividerView); +var y=CGRectGetMaxY(objj_msgSend(_dividerView,"frame")); +_bodyView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(0,y,CGRectGetWidth(_2d),CGRectGetHeight(_2d)-y)); +objj_msgSend(_bodyView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_bodyView,"setBackgroundColor:",objj_msgSend(_2c,"bodyBackgroundColor")); +objj_msgSend(_bodyView,"setHitTests:",NO); +objj_msgSend(_28,"addSubview:",_bodyView); +objj_msgSend(_28,"setResizeIndicatorOffset:",CGSizeMake(2,2)); +_titleField=objj_msgSend(objj_msgSend(CPTextField,"alloc"),"initWithFrame:",CGRectMakeZero()); +objj_msgSend(_titleField,"setFont:",objj_msgSend(CPFont,"boldSystemFontOfSize:",12)); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setLineBreakMode:",CPLineBreakByTruncatingTail); +objj_msgSend(_titleField,"setAlignment:",CPCenterTextAlignment); +objj_msgSend(_titleField,"setTextShadowColor:",objj_msgSend(CPColor,"whiteColor")); +objj_msgSend(_titleField,"setTextShadowOffset:",CGSizeMake(0,1)); +objj_msgSend(_titleField,"setStringValue:","Untitled"); +objj_msgSend(_titleField,"sizeToFit"); +objj_msgSend(_titleField,"setAutoresizingMask:",CPViewWidthSizable); +objj_msgSend(_titleField,"setStringValue:",""); +objj_msgSend(_28,"addSubview:",_titleField); +if(_styleMask&CPClosableWindowMask){ +if(!_17){ +var _2e=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_17=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButton.png"),CGSizeMake(16,16)); +_18=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png"),CGSizeMake(16,16)); +_19=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png"),CGSizeMake(16,16)); +_1a=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png"),CGSizeMake(16,16)); +} +_closeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(8,7,16,16)); +objj_msgSend(_closeButton,"setBordered:",NO); +objj_msgSend(_28,"_updateCloseButton"); +objj_msgSend(_28,"addSubview:",_closeButton); +} +if(_styleMask&CPMiniaturizableWindowMask&&!objj_msgSend(CPPlatform,"isBrowser")){ +if(!_1b){ +var _2e=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_1b=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardMinimizeButton.png"),CGSizeMake(16,16)); +_1c=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_2e,"pathForResource:","CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png"),CGSizeMake(16,16)); +} +_minimizeButton=objj_msgSend(objj_msgSend(CPButton,"alloc"),"initWithFrame:",CGRectMake(27,7,16,16)); +objj_msgSend(_minimizeButton,"setBordered:",NO); +objj_msgSend(_minimizeButton,"setImage:",_1b); +objj_msgSend(_minimizeButton,"setAlternateImage:",_1c); +objj_msgSend(_28,"addSubview:",_minimizeButton); +} +objj_msgSend(_28,"tile"); +} +return _28; +} +}),new objj_method(sel_getUid("viewDidMoveToWindow"),function(_2f,_30){ +with(_2f){ +objj_msgSend(_closeButton,"setTarget:",objj_msgSend(_2f,"window")); +objj_msgSend(_closeButton,"setAction:",sel_getUid("performClose:")); +objj_msgSend(_minimizeButton,"setTarget:",objj_msgSend(_2f,"window")); +objj_msgSend(_minimizeButton,"setAction:",sel_getUid("performMiniaturize:")); +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_31,_32){ +with(_31){ +return CGSizeMake(0,objj_msgSend(objj_msgSend(_31,"class"),"titleBarHeight")); +} +}),new objj_method(sel_getUid("tile"),function(_33,_34){ +with(_33){ +objj_msgSendSuper({receiver:_33,super_class:objj_getClass("_CPStandardWindowView").super_class},"tile"); +var _35=objj_msgSend(_33,"window"),_36=objj_msgSend(_33,"bounds"),_37=CGRectGetWidth(_36); +objj_msgSend(_headView,"setFrameSize:",CGSizeMake(_37,objj_msgSend(_33,"toolbarMaxY"))); +objj_msgSend(_dividerView,"setFrame:",CGRectMake(0,CGRectGetMaxY(objj_msgSend(_headView,"frame")),_37,1)); +var _38=CGRectGetMaxY(objj_msgSend(_dividerView,"frame")); +objj_msgSend(_bodyView,"setFrame:",CGRectMake(0,_38,_37,CGRectGetHeight(_36)-_38)); +var _39=8; +if(_closeButton){ +_39+=19; +} +if(_minimizeButton){ +_39+=19; +} +objj_msgSend(_titleField,"setFrame:",CGRectMake(_39,5,_37-_39*2,CGRectGetHeight(objj_msgSend(_titleField,"frame")))); +objj_msgSend(objj_msgSend(_35,"contentView"),"setFrameOrigin:",CGPointMake(0,CGRectGetMaxY(objj_msgSend(_dividerView,"frame")))); +} +}),new objj_method(sel_getUid("_updateCloseButton"),function(_3a,_3b){ +with(_3a){ +if(_isDocumentEdited){ +objj_msgSend(_closeButton,"setImage:",_19); +objj_msgSend(_closeButton,"setAlternateImage:",_1a); +}else{ +objj_msgSend(_closeButton,"setImage:",_17); +objj_msgSend(_closeButton,"setAlternateImage:",_18); +} +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_3c,_3d,_3e){ +with(_3c){ +_isDocumentEdited=_3e; +objj_msgSend(_3c,"_updateCloseButton"); +} +}),new objj_method(sel_getUid("setTitle:"),function(_3f,_40,_41){ +with(_3f){ +objj_msgSend(_titleField,"setStringValue:",_41); +} +}),new objj_method(sel_getUid("mouseDown:"),function(_42,_43,_44){ +with(_42){ +if(CGRectContainsPoint(objj_msgSend(_headView,"frame"),objj_msgSend(_42,"convertPoint:fromView:",objj_msgSend(_44,"locationInWindow"),nil))){ +return objj_msgSend(_42,"trackMoveWithEvent:",_44); +} +objj_msgSendSuper({receiver:_42,super_class:objj_getClass("_CPStandardWindowView").super_class},"mouseDown:",_44); +} +})]); +class_addMethods(_5,[new objj_method(sel_getUid("bodyBackgroundColor"),function(_45,_46){ +with(_45){ +if(!_14){ +_14=objj_msgSend(CPColor,"colorWithWhite:alpha:",0.96,1); +} +return _14; +} +}),new objj_method(sel_getUid("dividerBackgroundColor"),function(_47,_48){ +with(_47){ +if(!_15){ +_15=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",125/255,125/255,125/255,1); +} +return _15; +} +}),new objj_method(sel_getUid("titleColor"),function(_49,_4a){ +with(_49){ +if(!_16){ +_16=objj_msgSend(CPColor,"colorWithCalibratedRed:green:blue:alpha:",44/255,44/255,44/255,1); +} +return _16; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_4b,_4c,_4d){ +with(_4b){ +var _4e=CGRectMakeCopy(_4d),_4f=objj_msgSend(_4b,"titleBarHeight")+1; +_4e.origin.y+=_4f; +_4e.size.height-=_4f; +return _4e; +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_50,_51,_52){ +with(_50){ +var _53=CGRectMakeCopy(_52),_54=objj_msgSend(_50,"titleBarHeight")+1; +_53.origin.y-=_54; +_53.size.height+=_54; +return _53; +} +}),new objj_method(sel_getUid("titleBarHeight"),function(_55,_56){ +with(_55){ +return STANDARD_TITLEBAR_HEIGHT; +} +})]); +p;15;_CPWindowView.jt;9275;@STATIC;1.0;i;8;CPView.ji;13;CPImageView.jt;9226; +objj_executeFile("CPView.j",YES); +objj_executeFile("CPImageView.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPView,"_CPWindowView"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_styleMask"),new objj_ivar("_resizeIndicator"),new objj_ivar("_resizeIndicatorOffset"),new objj_ivar("_toolbarView"),new objj_ivar("_toolbarOffset"),new objj_ivar("_resizeFrame"),new objj_ivar("_mouseDraggedPoint"),new objj_ivar("_cachedScreenFrame")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("contentRectForFrameRect:"),function(_4,_5,_6){ +with(_4){ +return objj_msgSend(objj_msgSend(_4,"class"),"contentRectForFrameRect:",_6); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(objj_msgSend(_7,"class"),"frameRectForContentRect:",_9); +} +}),new objj_method(sel_getUid("initWithFrame:styleMask:"),function(_a,_b,_c,_d){ +with(_a){ +_a=objj_msgSendSuper({receiver:_a,super_class:objj_getClass("_CPWindowView").super_class},"initWithFrame:",_c); +if(_a){ +_styleMask=_d; +_resizeIndicatorOffset=CGSizeMakeZero(); +_toolbarOffset=CGSizeMakeZero(); +} +return _a; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(_e,_f,_10){ +with(_e){ +} +}),new objj_method(sel_getUid("setTitle:"),function(_11,_12,_13){ +with(_11){ +} +}),new objj_method(sel_getUid("acceptsFirstMouse:"),function(_14,_15,_16){ +with(_14){ +return YES; +} +}),new objj_method(sel_getUid("mouseDown:"),function(_17,_18,_19){ +with(_17){ +var _1a=objj_msgSend(_17,"window"); +if((_styleMask&CPResizableWindowMask)&&_resizeIndicator){ +var _1b=objj_msgSend(_resizeIndicator,"frame"); +if(CGRectContainsPoint(_1b,objj_msgSend(_17,"convertPoint:fromView:",objj_msgSend(_19,"locationInWindow"),nil))){ +return objj_msgSend(_17,"trackResizeWithEvent:",_19); +} +} +if(objj_msgSend(_1a,"isMovableByWindowBackground")){ +objj_msgSend(_17,"trackMoveWithEvent:",_19); +}else{ +objj_msgSendSuper({receiver:_17,super_class:objj_getClass("_CPWindowView").super_class},"mouseDown:",_19); +} +} +}),new objj_method(sel_getUid("trackResizeWithEvent:"),function(_1c,_1d,_1e){ +with(_1c){ +var _1f=objj_msgSend(_1e,"locationInWindow"),_20=objj_msgSend(_1e,"type"); +if(_20===CPLeftMouseUp){ +return; +} +var _21=objj_msgSend(_1c,"window"); +if(_20===CPLeftMouseDown){ +var _22=objj_msgSend(_21,"frame"); +_resizeFrame=CGRectMake(_1f.x,_1f.y,CGRectGetWidth(_22),CGRectGetHeight(_22)); +}else{ +if(_20===CPLeftMouseDragged){ +var _23=CGSizeMake(CGRectGetWidth(_resizeFrame)+_1f.x-CGRectGetMinX(_resizeFrame),CGRectGetHeight(_resizeFrame)+_1f.y-CGRectGetMinY(_resizeFrame)); +if(_21._isSheet&&_21._parentView&&(_21._frame.size.width!==_23.width)){ +objj_msgSend(_21._parentView,"_setAttachedSheetFrameOrigin"); +} +objj_msgSend(_21,"setFrameSize:",_23); +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_1c,sel_getUid("trackResizeWithEvent:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("_pointWithinScreenFrame:"),function(_24,_25,_26){ +with(_24){ +if(!objj_msgSend(CPPlatform,"isBrowser")){ +return _26; +} +var _27=_cachedScreenFrame; +if(!_27){ +_27=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"visibleFrame"); +} +var _28=0; +if(objj_msgSend(CPMenu,"menuBarVisible")){ +_28=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"menuBarHeight"); +} +var _29=CGPointMake(0,0); +_29.x=MIN(MAX(_26.x,-_frame.size.width+4),CGRectGetMaxX(_27)-4); +_29.y=MIN(MAX(_26.y,_28),CGRectGetMaxY(_27)-8); +return _29; +} +}),new objj_method(sel_getUid("trackMoveWithEvent:"),function(_2a,_2b,_2c){ +with(_2a){ +var _2d=objj_msgSend(_2c,"type"); +if(_2d===CPLeftMouseUp){ +_cachedScreenFrame=nil; +return; +}else{ +if(_2d===CPLeftMouseDown){ +_mouseDraggedPoint=objj_msgSend(objj_msgSend(_2a,"window"),"convertBaseToGlobal:",objj_msgSend(_2c,"locationInWindow")); +_cachedScreenFrame=objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"visibleFrame"); +}else{ +if(_2d===CPLeftMouseDragged){ +var _2e=objj_msgSend(_2a,"window"),_2f=objj_msgSend(_2e,"frame"),_30=objj_msgSend(_2e,"convertBaseToGlobal:",objj_msgSend(_2c,"locationInWindow")),_31=objj_msgSend(_2a,"_pointWithinScreenFrame:",CGPointMake((_2f.origin.x)+(_30.x-_mouseDraggedPoint.x),(_2f.origin.y)+(_30.y-_mouseDraggedPoint.y))); +objj_msgSend(_2e,"setFrameOrigin:",_31); +_mouseDraggedPoint=objj_msgSend(_2a,"_pointWithinScreenFrame:",_30); +} +} +} +objj_msgSend(CPApp,"setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:",_2a,sel_getUid("trackMoveWithEvent:"),CPLeftMouseDraggedMask|CPLeftMouseUpMask,nil,nil,YES); +} +}),new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_32,_33,_34){ +with(_32){ +if(_34){ +var _35=objj_msgSend(_1,"size"),_36=objj_msgSend(_32,"frame").size; +_resizeIndicator=objj_msgSend(objj_msgSend(CPImageView,"alloc"),"initWithFrame:",CGRectMake(_36.width-_35.width-_resizeIndicatorOffset.width,_36.height-_35.height-_resizeIndicatorOffset.height,_35.width,_35.height)); +objj_msgSend(_resizeIndicator,"setImage:",_1); +objj_msgSend(_resizeIndicator,"setAutoresizingMask:",CPViewMinXMargin|CPViewMinYMargin); +objj_msgSend(_32,"addSubview:",_resizeIndicator); +}else{ +objj_msgSend(_resizeIndicator,"removeFromSuperview"); +_resizeIndicator=nil; +} +} +}),new objj_method(sel_getUid("showsResizeIndicator"),function(_37,_38){ +with(_37){ +return _resizeIndicator!==nil; +} +}),new objj_method(sel_getUid("setResizeIndicatorOffset:"),function(_39,_3a,_3b){ +with(_39){ +if(CGSizeEqualToSize(_resizeIndicatorOffset,_3b)){ +return; +} +_resizeIndicatorOffset=_3b; +if(!_resizeIndicator){ +return; +} +var _3c=objj_msgSend(_resizeIndicator,"frame").size,_3d=objj_msgSend(_39,"frame").size; +objj_msgSend(_resizeIndicator,"setFrameOrigin:",CGPointMake(_3d.width-_3c.width-_3b.width,_3d.height-_3c.height-_3b.height)); +} +}),new objj_method(sel_getUid("resizeIndicatorOffset"),function(_3e,_3f){ +with(_3e){ +return _resizeIndicatorOffset; +} +}),new objj_method(sel_getUid("windowDidChangeDocumentEdited"),function(_40,_41){ +with(_40){ +} +}),new objj_method(sel_getUid("windowDidChangeDocumentSaving"),function(_42,_43){ +with(_42){ +} +}),new objj_method(sel_getUid("showsToolbar"),function(_44,_45){ +with(_44){ +return YES; +} +}),new objj_method(sel_getUid("toolbarOffset"),function(_46,_47){ +with(_46){ +return _toolbarOffset; +} +}),new objj_method(sel_getUid("toolbarLabelColor"),function(_48,_49){ +with(_48){ +return objj_msgSend(CPColor,"blackColor"); +} +}),new objj_method(sel_getUid("toolbarMaxY"),function(_4a,_4b){ +with(_4a){ +if(!_toolbarView||objj_msgSend(_toolbarView,"isHidden")){ +return objj_msgSend(_4a,"toolbarOffset").height; +} +return CGRectGetMaxY(objj_msgSend(_toolbarView,"frame")); +} +}),new objj_method(sel_getUid("toolbarView"),function(_4c,_4d){ +with(_4c){ +return _toolbarView; +} +}),new objj_method(sel_getUid("tile"),function(_4e,_4f){ +with(_4e){ +var _50=objj_msgSend(_4e,"window"),_51=objj_msgSend(_4e,"bounds"),_52=CGRectGetWidth(_51); +if(objj_msgSend(objj_msgSend(_50,"toolbar"),"isVisible")){ +var _53=objj_msgSend(_4e,"toolbarView"),_54=objj_msgSend(_4e,"toolbarOffset"); +objj_msgSend(_53,"setFrame:",CGRectMake(_54.width,_54.height,_52,CGRectGetHeight(objj_msgSend(_53,"frame")))); +} +if(objj_msgSend(_4e,"showsResizeIndicator")){ +var _55=objj_msgSend(_resizeIndicator,"frame").size,_56=objj_msgSend(_4e,"bounds").size; +objj_msgSend(_resizeIndicator,"setFrameOrigin:",CGPointMake(_56.width-_55.width-_resizeIndicatorOffset.width,_56.height-_55.height-_resizeIndicatorOffset.height)); +} +} +}),new objj_method(sel_getUid("noteToolbarChanged"),function(_57,_58){ +with(_57){ +var _59=objj_msgSend(_57,"window"),_5a=objj_msgSend(_59,"toolbar"),_5b=objj_msgSend(_5a,"_toolbarView"); +if(_toolbarView!==_5b){ +objj_msgSend(_toolbarView,"removeFromSuperview"); +if(_5b){ +objj_msgSend(_5b,"removeFromSuperview"); +objj_msgSend(_5b,"FIXME_setIsHUD:",_styleMask&CPHUDBackgroundWindowMask); +objj_msgSend(_57,"addSubview:",_5b); +} +_toolbarView=_5b; +} +objj_msgSend(_5b,"setHidden:",!objj_msgSend(_57,"showsToolbar")||!objj_msgSend(_5a,"isVisible")); +if(_59){ +var _5c=objj_msgSend(_57,"convertRect:toView:",objj_msgSend(objj_msgSend(_59,"contentView"),"frame"),nil); +_5c.origin=objj_msgSend(_59,"convertBaseToGlobal:",_5c.origin); +objj_msgSend(_57,"setAutoresizesSubviews:",NO); +objj_msgSend(_59,"setFrame:",objj_msgSend(_59,"frameRectForContentRect:",_5c)); +objj_msgSend(_57,"setAutoresizesSubviews:",YES); +} +objj_msgSend(_57,"tile"); +} +}),new objj_method(sel_getUid("didAddSubview:"),function(_5d,_5e,_5f){ +with(_5d){ +if(!_resizeIndicator||_5f===_resizeIndicator){ +return; +} +objj_msgSend(_5d,"addSubview:",_resizeIndicator); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_60,_61){ +with(_60){ +if(_60!=objj_msgSend(_CPWindowView,"class")){ +return; +} +_1=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")),"pathForResource:","_CPWindowView/_CPWindowViewResizeIndicator.png"),CGSizeMake(12,12)); +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_62,_63,_64){ +with(_62){ +return CGRectMakeCopy(_64); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_65,_66,_67){ +with(_65){ +return CGRectMakeCopy(_67); +} +})]); +p;10;CPWindow.jt;60138;@STATIC;1.0;I;25;Foundation/CPCountedSet.jI;33;Foundation/CPNotificationCenter.jI;26;Foundation/CPUndoManager.ji;12;CGGeometry.ji;13;CPAnimation.ji;13;CPResponder.ji;10;CPScreen.ji;18;CPPlatformWindow.ji;15;_CPWindowView.ji;23;_CPStandardWindowView.ji;23;_CPDocModalWindowView.ji;18;_CPHUDWindowView.ji;25;_CPBorderlessWindowView.ji;31;_CPBorderlessBridgeWindowView.ji;14;CPDragServer.ji;8;CPView.jt;59732; +objj_executeFile("Foundation/CPCountedSet.j",NO); +objj_executeFile("Foundation/CPNotificationCenter.j",NO); +objj_executeFile("Foundation/CPUndoManager.j",NO); +objj_executeFile("CGGeometry.j",YES); +objj_executeFile("CPAnimation.j",YES); +objj_executeFile("CPResponder.j",YES); +objj_executeFile("CPScreen.j",YES); +objj_executeFile("CPPlatformWindow.j",YES); +CPBorderlessWindowMask=0; +CPTitledWindowMask=1<<0; +CPClosableWindowMask=1<<1; +CPMiniaturizableWindowMask=1<<2; +CPResizableWindowMask=1<<3; +CPTexturedBackgroundWindowMask=1<<8; +CPBorderlessBridgeWindowMask=1<<20; +CPHUDBackgroundWindowMask=1<<21; +CPWindowNotSizable=0; +CPWindowMinXMargin=1; +CPWindowWidthSizable=2; +CPWindowMaxXMargin=4; +CPWindowMinYMargin=8; +CPWindowHeightSizable=16; +CPWindowMaxYMargin=32; +CPBackgroundWindowLevel=-1; +CPNormalWindowLevel=0; +CPFloatingWindowLevel=3; +CPSubmenuWindowLevel=3; +CPTornOffMenuWindowLevel=3; +CPMainMenuWindowLevel=24; +CPStatusWindowLevel=25; +CPModalPanelWindowLevel=8; +CPPopUpMenuWindowLevel=101; +CPDraggingWindowLevel=500; +CPScreenSaverWindowLevel=1000; +CPWindowOut=0; +CPWindowAbove=1; +CPWindowBelow=2; +CPWindowWillCloseNotification="CPWindowWillCloseNotification"; +CPWindowDidBecomeMainNotification="CPWindowDidBecomeMainNotification"; +CPWindowDidResignMainNotification="CPWindowDidResignMainNotification"; +CPWindowDidBecomeKeyNotification="CPWindowDidBecomeKeyNotification"; +CPWindowDidResignKeyNotification="CPWindowDidResignKeyNotification"; +CPWindowDidResizeNotification="CPWindowDidResizeNotification"; +CPWindowDidMoveNotification="CPWindowDidMoveNotification"; +CPWindowWillBeginSheetNotification="CPWindowWillBeginSheetNotification"; +CPWindowDidEndSheetNotification="CPWindowDidEndSheetNotification"; +CPWindowDidMiniaturizeNotification="CPWindowDidMiniaturizeNotification"; +CPWindowWillMiniaturizeNotification="CPWindowWillMiniaturizeNotification"; +CPWindowDidDeminiaturizeNotification="CPWindowDidDeminiaturizeNotification"; +CPWindowShadowStyleStandard=0; +CPWindowShadowStyleMenu=1; +CPWindowShadowStylePanel=2; +var _1=20,_2=19,_3=10,_4=10,_5=5,_6=nil; +var _7=nil,_8=nil; +var _9=0.2; +var _a=objj_allocateClassPair(CPResponder,"CPWindow"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_platformWindow"),new objj_ivar("_windowNumber"),new objj_ivar("_styleMask"),new objj_ivar("_frame"),new objj_ivar("_level"),new objj_ivar("_isVisible"),new objj_ivar("_isMiniaturized"),new objj_ivar("_isAnimating"),new objj_ivar("_hasShadow"),new objj_ivar("_isMovableByWindowBackground"),new objj_ivar("_shadowStyle"),new objj_ivar("_showsResizeIndicator"),new objj_ivar("_isDocumentEdited"),new objj_ivar("_isDocumentSaving"),new objj_ivar("_shadowView"),new objj_ivar("_windowView"),new objj_ivar("_contentView"),new objj_ivar("_toolbarView"),new objj_ivar("_mouseEnteredStack"),new objj_ivar("_leftMouseDownView"),new objj_ivar("_rightMouseDownView"),new objj_ivar("_toolbar"),new objj_ivar("_firstResponder"),new objj_ivar("_initialFirstResponder"),new objj_ivar("_delegate"),new objj_ivar("_title"),new objj_ivar("_acceptsMouseMovedEvents"),new objj_ivar("_ignoresMouseEvents"),new objj_ivar("_windowController"),new objj_ivar("_minSize"),new objj_ivar("_maxSize"),new objj_ivar("_undoManager"),new objj_ivar("_representedURL"),new objj_ivar("_registeredDraggedTypes"),new objj_ivar("_registeredDraggedTypesArray"),new objj_ivar("_inclusiveRegisteredDraggedTypes"),new objj_ivar("_defaultButton"),new objj_ivar("_defaultButtonEnabled"),new objj_ivar("_autorecalculatesKeyViewLoop"),new objj_ivar("_keyViewLoopIsDirty"),new objj_ivar("_sharesChromeWithPlatformWindow"),new objj_ivar("_autoresizingMask"),new objj_ivar("_delegateRespondsToWindowWillReturnUndoManagerSelector"),new objj_ivar("_isFullPlatformWindow"),new objj_ivar("_fullPlatformWindowSession"),new objj_ivar("_sheetContext"),new objj_ivar("_parentView"),new objj_ivar("_isSheet"),new objj_ivar("_frameAnimation")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("init"),function(_c,_d){ +with(_c){ +return objj_msgSend(_c,"initWithContentRect:styleMask:",{origin:{x:0,y:0},size:{width:0,height:0}},CPTitledWindowMask); +} +}),new objj_method(sel_getUid("initWithContentRect:styleMask:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPWindow").super_class},"init"); +if(_e){ +var _12=objj_msgSend(objj_msgSend(_e,"class"),"_windowViewClassForStyleMask:",_11); +_frame=objj_msgSend(_12,"frameRectForContentRect:",_10); +objj_msgSend(_e,"_setSharesChromeWithPlatformWindow:",!objj_msgSend(CPPlatform,"isBrowser")); +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(_e,"setPlatformWindow:",objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")); +}else{ +if((_11&CPBorderlessBridgeWindowMask)&&_10.size.width===0&&_10.size.height===0){ +var _13=objj_msgSend(objj_msgSend(objj_msgSend(CPScreen,"alloc"),"init"),"visibleFrame"); +_frame.size.height=MIN(768,_13.size.height); +_frame.size.width=MIN(1024,_13.size.width); +_frame.origin.x=(_13.size.width-_frame.size.width)/2; +_frame.origin.y=(_13.size.height-_frame.size.height)/2; +} +objj_msgSend(_e,"setPlatformWindow:",objj_msgSend(objj_msgSend(CPPlatformWindow,"alloc"),"initWithContentRect:",_frame)); +objj_msgSend(_e,"platformWindow")._only=_e; +} +_isFullPlatformWindow=NO; +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +_isSheet=NO; +_windowNumber=objj_msgSend(CPApp._windows,"count"); +CPApp._windows[_windowNumber]=_e; +_styleMask=_11; +objj_msgSend(_e,"setLevel:",CPNormalWindowLevel); +_minSize=CGSizeMake(0,0); +_maxSize=CGSizeMake(1000000,1000000); +_windowView=objj_msgSend(objj_msgSend(_12,"alloc"),"initWithFrame:styleMask:",CGRectMake(0,0,CGRectGetWidth(_frame),CGRectGetHeight(_frame)),_11); +objj_msgSend(_windowView,"_setWindow:",_e); +objj_msgSend(_windowView,"setNextResponder:",_e); +objj_msgSend(_e,"setMovableByWindowBackground:",_11&CPHUDBackgroundWindowMask); +objj_msgSend(_e,"setContentView:",objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMakeZero())); +_firstResponder=_e; +objj_msgSend(_e,"setNextResponder:",CPApp); +objj_msgSend(_e,"setHasShadow:",_11!==CPBorderlessWindowMask); +if(_11&CPBorderlessBridgeWindowMask){ +objj_msgSend(_e,"setFullPlatformWindow:",YES); +} +_defaultButtonEnabled=YES; +_keyViewLoopIsDirty=YES; +objj_msgSend(_e,"setShowsResizeIndicator:",_styleMask&CPResizableWindowMask); +} +return _e; +} +}),new objj_method(sel_getUid("platformWindow"),function(_14,_15){ +with(_14){ +return _platformWindow; +} +}),new objj_method(sel_getUid("setPlatformWindow:"),function(_16,_17,_18){ +with(_16){ +_platformWindow=_18; +} +}),new objj_method(sel_getUid("awakeFromCib"),function(_19,_1a){ +with(_19){ +_keyViewLoopIsDirty=!objj_msgSend(_19,"_hasKeyViewLoop"); +} +}),new objj_method(sel_getUid("_setWindowView:"),function(_1b,_1c,_1d){ +with(_1b){ +if(_windowView===_1d){ +return; +} +var _1e=_windowView; +_windowView=_1d; +if(_1e){ +objj_msgSend(_1e,"_setWindow:",nil); +objj_msgSend(_1e,"noteToolbarChanged"); +} +if(_windowView){ +var _1f=objj_msgSend(_contentView,"convertRect:toView:",objj_msgSend(_contentView,"bounds"),nil); +_1f.origin=objj_msgSend(_1b,"convertBaseToGlobal:",_1f.origin); +objj_msgSend(_windowView,"_setWindow:",_1b); +objj_msgSend(_windowView,"setNextResponder:",_1b); +objj_msgSend(_windowView,"addSubview:",_contentView); +objj_msgSend(_windowView,"setTitle:",_title); +objj_msgSend(_windowView,"noteToolbarChanged"); +objj_msgSend(_windowView,"setShowsResizeIndicator:",objj_msgSend(_1b,"showsResizeIndicator")); +objj_msgSend(_1b,"setFrame:",objj_msgSend(_1b,"frameRectForContentRect:",_1f)); +} +} +}),new objj_method(sel_getUid("setFullPlatformWindow:"),function(_20,_21,_22){ +with(_20){ +if(!objj_msgSend(_platformWindow,"supportsFullPlatformWindows")){ +return; +} +_22=!!_22; +if(_isFullPlatformWindow===_22){ +return; +} +_isFullPlatformWindow=_22; +if(_isFullPlatformWindow){ +_fullPlatformWindowSession=_CPWindowFullPlatformWindowSessionMake(_windowView,objj_msgSend(_20,"contentRectForFrameRect:",objj_msgSend(_20,"frame")),objj_msgSend(_20,"hasShadow"),objj_msgSend(_20,"level")); +var _23=objj_msgSend(objj_msgSend(_20,"class"),"_windowViewClassForFullPlatformWindowStyleMask:",_styleMask),_24=objj_msgSend(objj_msgSend(_23,"alloc"),"initWithFrame:styleMask:",CGRectMakeZero(),_styleMask); +objj_msgSend(_20,"_setWindowView:",_24); +objj_msgSend(_20,"setLevel:",CPBackgroundWindowLevel); +objj_msgSend(_20,"setHasShadow:",NO); +objj_msgSend(_20,"setAutoresizingMask:",CPWindowWidthSizable|CPWindowHeightSizable); +objj_msgSend(_20,"setFrame:",objj_msgSend(_platformWindow,"visibleFrame")); +}else{ +var _24=_fullPlatformWindowSession.windowView; +objj_msgSend(_20,"_setWindowView:",_24); +objj_msgSend(_20,"setLevel:",_fullPlatformWindowSession.level); +objj_msgSend(_20,"setHasShadow:",_fullPlatformWindowSession.hasShadow); +objj_msgSend(_20,"setAutoresizingMask:",CPWindowNotSizable); +objj_msgSend(_20,"setFrame:",objj_msgSend(_24,"frameRectForContentRect:",_fullPlatformWindowSession.contentRect)); +} +} +}),new objj_method(sel_getUid("isFullPlatformWindow"),function(_25,_26){ +with(_25){ +return _isFullPlatformWindow; +} +}),new objj_method(sel_getUid("styleMask"),function(_27,_28){ +with(_27){ +return _styleMask; +} +}),new objj_method(sel_getUid("contentRectForFrameRect:"),function(_29,_2a,_2b){ +with(_29){ +return objj_msgSend(_windowView,"contentRectForFrameRect:",_2b); +} +}),new objj_method(sel_getUid("frameRectForContentRect:"),function(_2c,_2d,_2e){ +with(_2c){ +return objj_msgSend(_windowView,"frameRectForContentRect:",_2e); +} +}),new objj_method(sel_getUid("frame"),function(_2f,_30){ +with(_2f){ +return {origin:{x:_frame.origin.x,y:_frame.origin.y},size:{width:_frame.size.width,height:_frame.size.height}}; +} +}),new objj_method(sel_getUid("_setClippedFrame:display:animate:"),function(_31,_32,_33,_34,_35){ +with(_31){ +_33.size.width=MIN(MAX(_33.size.width,_minSize.width),_maxSize.width); +_33.size.height=MIN(MAX(_33.size.height,_minSize.height),_maxSize.height); +objj_msgSend(_31,"setFrame:display:animate:",_33,_34,_35); +} +}),new objj_method(sel_getUid("setFrame:display:animate:"),function(_36,_37,_38,_39,_3a){ +with(_36){ +_38={origin:{x:_38.origin.x,y:_38.origin.y},size:{width:_38.size.width,height:_38.size.height}}; +var _3b=_38.origin.x,_3c=_3b-FLOOR(_3b); +if(_3c){ +_38.origin.x=_3b>0.879?CEIL(_3b):FLOOR(_3b); +} +_3b=_38.origin.y; +_3c=_3b-FLOOR(_3b); +if(_3c){ +_38.origin.y=_3b>0.879?CEIL(_3b):FLOOR(_3b); +} +_3b=_38.size.width; +_3c=_3b-FLOOR(_3b); +if(_3c){ +_38.size.width=_3b>0.15?CEIL(_3b):FLOOR(_3b); +} +_3b=_38.size.height; +_3c=_3b-FLOOR(_3b); +if(_3c){ +_38.size.height=_3b>0.15?CEIL(_3b):FLOOR(_3b); +} +if(_3a){ +objj_msgSend(_frameAnimation,"stopAnimation"); +_frameAnimation=objj_msgSend(objj_msgSend(_CPWindowFrameAnimation,"alloc"),"initWithWindow:targetFrame:",_36,_38); +objj_msgSend(_frameAnimation,"startAnimation"); +}else{ +var _3d=_frame.origin,_3e=_38.origin; +if(!(_3d.x==_3e.x&&_3d.y==_3e.y)){ +_3d.x=_3e.x; +_3d.y=_3e.y; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidMoveNotification,_36); +} +var _3f=_frame.size,_40=_38.size; +if(!(_3f.width==_40.width&&_3f.height==_40.height)){ +_3f.width=_40.width; +_3f.height=_40.height; +objj_msgSend(_windowView,"setFrameSize:",_3f); +if(_hasShadow){ +objj_msgSend(_shadowView,"setFrameSize:",{width:_1+_3f.width+_2,height:_4+_3f.height+_3+_5}); +} +if(!_isAnimating){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResizeNotification,_36); +} +} +if(objj_msgSend(_36,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"setContentRect:",_frame); +} +} +} +}),new objj_method(sel_getUid("setFrame:display:"),function(_41,_42,_43,_44){ +with(_41){ +objj_msgSend(_41,"_setClippedFrame:display:animate:",_43,_44,NO); +} +}),new objj_method(sel_getUid("setFrame:"),function(_45,_46,_47){ +with(_45){ +objj_msgSend(_45,"_setClippedFrame:display:animate:",_47,YES,NO); +} +}),new objj_method(sel_getUid("setFrameOrigin:"),function(_48,_49,_4a){ +with(_48){ +objj_msgSend(_48,"_setClippedFrame:display:animate:",{origin:{x:_4a.x,y:_4a.y},size:{width:(_frame.size.width),height:(_frame.size.height)}},YES,NO); +} +}),new objj_method(sel_getUid("setFrameSize:"),function(_4b,_4c,_4d){ +with(_4b){ +objj_msgSend(_4b,"_setClippedFrame:display:animate:",{origin:{x:(_frame.origin.x),y:(_frame.origin.y)},size:{width:_4d.width,height:_4d.height}},YES,NO); +} +}),new objj_method(sel_getUid("orderFront:"),function(_4e,_4f,_50){ +with(_4e){ +if(_firstResponder===_4e||!_firstResponder){ +objj_msgSend(_4e,"makeFirstResponder:",objj_msgSend(_4e,"initialFirstResponder")); +} +if(!CPApp._keyWindow){ +objj_msgSend(_4e,"makeKeyWindow"); +} +if(!CPApp._mainWindow){ +objj_msgSend(_4e,"makeMainWindow"); +} +} +}),new objj_method(sel_getUid("orderBack:"),function(_51,_52,_53){ +with(_51){ +} +}),new objj_method(sel_getUid("orderOut:"),function(_54,_55,_56){ +with(_54){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowWillClose:"))){ +objj_msgSend(_delegate,"windowWillClose:",_54); +} +objj_msgSend(_54,"_updateMainAndKeyWindows"); +} +}),new objj_method(sel_getUid("orderWindow:relativeTo:"),function(_57,_58,_59,_5a){ +with(_57){ +} +}),new objj_method(sel_getUid("setLevel:"),function(_5b,_5c,_5d){ +with(_5b){ +if(_5d===_level){ +return; +} +objj_msgSend(_platformWindow,"moveWindow:fromLevel:toLevel:",_5b,_level,_5d); +_level=_5d; +if(objj_msgSend(_5b,"_sharesChromeWithPlatformWindow")){ +objj_msgSend(_platformWindow,"setLevel:",_5d); +} +} +}),new objj_method(sel_getUid("level"),function(_5e,_5f){ +with(_5e){ +return _level; +} +}),new objj_method(sel_getUid("isVisible"),function(_60,_61){ +with(_60){ +return _isVisible; +} +}),new objj_method(sel_getUid("showsResizeIndicator"),function(_62,_63){ +with(_62){ +return _showsResizeIndicator; +} +}),new objj_method(sel_getUid("setShowsResizeIndicator:"),function(_64,_65,_66){ +with(_64){ +_66=!!_66; +if(_showsResizeIndicator===_66){ +return; +} +_showsResizeIndicator=_66; +objj_msgSend(_windowView,"setShowsResizeIndicator:",objj_msgSend(_64,"showsResizeIndicator")); +} +}),new objj_method(sel_getUid("resizeIndicatorOffset"),function(_67,_68){ +with(_67){ +return objj_msgSend(_windowView,"resizeIndicatorOffset"); +} +}),new objj_method(sel_getUid("setResizeIndicatorOffset:"),function(_69,_6a,_6b){ +with(_69){ +objj_msgSend(_windowView,"setResizeIndicatorOffset:",_6b); +} +}),new objj_method(sel_getUid("setContentView:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_contentView){ +objj_msgSend(_contentView,"removeFromSuperview"); +} +var _6f=CGRectMake(0,0,CGRectGetWidth(_frame),CGRectGetHeight(_frame)); +_contentView=_6e; +objj_msgSend(_contentView,"setFrame:",objj_msgSend(_6c,"contentRectForFrameRect:",_6f)); +objj_msgSend(_contentView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +objj_msgSend(_windowView,"addSubview:",_contentView); +} +}),new objj_method(sel_getUid("contentView"),function(_70,_71){ +with(_70){ +return _contentView; +} +}),new objj_method(sel_getUid("setAlphaValue:"),function(_72,_73,_74){ +with(_72){ +objj_msgSend(_windowView,"setAlphaValue:",_74); +} +}),new objj_method(sel_getUid("alphaValue"),function(_75,_76){ +with(_75){ +return objj_msgSend(_windowView,"alphaValue"); +} +}),new objj_method(sel_getUid("setBackgroundColor:"),function(_77,_78,_79){ +with(_77){ +objj_msgSend(_windowView,"setBackgroundColor:",_79); +} +}),new objj_method(sel_getUid("backgroundColor"),function(_7a,_7b){ +with(_7a){ +return objj_msgSend(_windowView,"backgroundColor"); +} +}),new objj_method(sel_getUid("setMinSize:"),function(_7c,_7d,_7e){ +with(_7c){ +if(CGSizeEqualToSize(_minSize,_7e)){ +return; +} +_minSize=CGSizeCreateCopy(_7e); +var _7f=CGSizeMakeCopy(objj_msgSend(_7c,"frame").size),_80=NO; +if(_7f.width<_minSize.width){ +_7f.width=_minSize.width; +_80=YES; +} +if(_7f.height<_minSize.height){ +_7f.height=_minSize.height; +_80=YES; +} +if(_80){ +objj_msgSend(_7c,"setFrameSize:",_7f); +} +} +}),new objj_method(sel_getUid("minSize"),function(_81,_82){ +with(_81){ +return _minSize; +} +}),new objj_method(sel_getUid("setMaxSize:"),function(_83,_84,_85){ +with(_83){ +if(CGSizeEqualToSize(_maxSize,_85)){ +return; +} +_maxSize=CGSizeCreateCopy(_85); +var _86=CGSizeMakeCopy(objj_msgSend(_83,"frame").size),_87=NO; +if(_86.width>_maxSize.width){ +_86.width=_maxSize.width; +_87=YES; +} +if(_86.height>_maxSize.height){ +_86.height=_maxSize.height; +_87=YES; +} +if(_87){ +objj_msgSend(_83,"setFrameSize:",_86); +} +} +}),new objj_method(sel_getUid("maxSize"),function(_88,_89){ +with(_88){ +return _maxSize; +} +}),new objj_method(sel_getUid("hasShadow"),function(_8a,_8b){ +with(_8a){ +return _hasShadow; +} +}),new objj_method(sel_getUid("_updateShadow"),function(_8c,_8d){ +with(_8c){ +if(objj_msgSend(_8c,"_sharesChromeWithPlatformWindow")){ +if(_shadowView){ +_shadowView=nil; +} +objj_msgSend(_platformWindow,"setHasShadow:",_hasShadow); +return; +} +if(_hasShadow&&!_shadowView){ +var _8e=objj_msgSend(_windowView,"bounds"); +_shadowView=objj_msgSend(objj_msgSend(CPView,"alloc"),"initWithFrame:",CGRectMake(-_1,-_3+_5,_1+CGRectGetWidth(_8e)+_2,_3+CGRectGetHeight(_8e)+_4)); +if(!_6){ +var _8f=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_6=objj_msgSend(CPColor,"colorWithPatternImage:",objj_msgSend(objj_msgSend(CPNinePartImage,"alloc"),"initWithImageSlices:",[objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow0.png"),CGSizeMake(20,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow1.png"),CGSizeMake(1,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow2.png"),CGSizeMake(19,19)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow3.png"),CGSizeMake(20,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow4.png"),CGSizeMake(1,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow5.png"),CGSizeMake(19,1)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow6.png"),CGSizeMake(20,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow7.png"),CGSizeMake(1,18)),objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_8f,"pathForResource:","CPWindow/CPWindowShadow8.png"),CGSizeMake(19,18))])); +} +objj_msgSend(_shadowView,"setBackgroundColor:",_6); +objj_msgSend(_shadowView,"setAutoresizingMask:",CPViewWidthSizable|CPViewHeightSizable); +}else{ +if(!_hasShadow&&_shadowView){ +_shadowView=nil; +} +} +} +}),new objj_method(sel_getUid("setHasShadow:"),function(_90,_91,_92){ +with(_90){ +if(_hasShadow===_92){ +return; +} +_hasShadow=_92; +objj_msgSend(_90,"_updateShadow"); +} +}),new objj_method(sel_getUid("setShadowStyle:"),function(_93,_94,_95){ +with(_93){ +_shadowStyle=_95; +objj_msgSend(objj_msgSend(_93,"platformWindow"),"setShadowStyle:",_shadowStyle); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_96,_97,_98){ +with(_96){ +var _99=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidResignKeyNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidBecomeKeyNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidBecomeMainNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidResignMainNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidMoveNotification,_96); +objj_msgSend(_99,"removeObserver:name:object:",_delegate,CPWindowDidResizeNotification,_96); +_delegate=_98; +_delegateRespondsToWindowWillReturnUndoManagerSelector=objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowWillReturnUndoManager:")); +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResignKey:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResignKey:"),CPWindowDidResignKeyNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidBecomeKey:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidBecomeKey:"),CPWindowDidBecomeKeyNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidBecomeMain:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidBecomeMain:"),CPWindowDidBecomeMainNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResignMain:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResignMain:"),CPWindowDidResignMainNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidMove:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidMove:"),CPWindowDidMoveNotification,_96); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowDidResize:"))){ +objj_msgSend(_99,"addObserver:selector:name:object:",_delegate,sel_getUid("windowDidResize:"),CPWindowDidResizeNotification,_96); +} +} +}),new objj_method(sel_getUid("delegate"),function(_9a,_9b){ +with(_9a){ +return _delegate; +} +}),new objj_method(sel_getUid("setWindowController:"),function(_9c,_9d,_9e){ +with(_9c){ +_windowController=_9e; +} +}),new objj_method(sel_getUid("windowController"),function(_9f,_a0){ +with(_9f){ +return _windowController; +} +}),new objj_method(sel_getUid("doCommandBySelector:"),function(_a1,_a2,_a3){ +with(_a1){ +if(objj_msgSend(_delegate,"respondsToSelector:",_a3)){ +objj_msgSend(_delegate,"performSelector:",_a3); +}else{ +objj_msgSendSuper({receiver:_a1,super_class:objj_getClass("CPWindow").super_class},"doCommandBySelector:",_a3); +} +} +}),new objj_method(sel_getUid("acceptsFirstResponder"),function(_a4,_a5){ +with(_a4){ +return YES; +} +}),new objj_method(sel_getUid("initialFirstResponder"),function(_a6,_a7){ +with(_a6){ +return _initialFirstResponder; +} +}),new objj_method(sel_getUid("setInitialFirstResponder:"),function(_a8,_a9,_aa){ +with(_a8){ +_initialFirstResponder=_aa; +} +}),new objj_method(sel_getUid("makeFirstResponder:"),function(_ab,_ac,_ad){ +with(_ab){ +if(_firstResponder===_ad){ +return YES; +} +if(!objj_msgSend(_firstResponder,"resignFirstResponder")){ +return NO; +} +if(!_ad||!objj_msgSend(_ad,"acceptsFirstResponder")||!objj_msgSend(_ad,"becomeFirstResponder")){ +_firstResponder=_ab; +return NO; +} +_firstResponder=_ad; +return YES; +} +}),new objj_method(sel_getUid("firstResponder"),function(_ae,_af){ +with(_ae){ +return _firstResponder; +} +}),new objj_method(sel_getUid("acceptsMouseMovedEvents"),function(_b0,_b1){ +with(_b0){ +return _acceptsMouseMovedEvents; +} +}),new objj_method(sel_getUid("setAcceptsMouseMovedEvents:"),function(_b2,_b3,_b4){ +with(_b2){ +_acceptsMouseMovedEvents=_b4; +} +}),new objj_method(sel_getUid("ignoresMouseEvents"),function(_b5,_b6){ +with(_b5){ +return _ignoresMouseEvents; +} +}),new objj_method(sel_getUid("setIgnoresMouseEvents:"),function(_b7,_b8,_b9){ +with(_b7){ +_ignoresMouseEvents=_b9; +} +}),new objj_method(sel_getUid("title"),function(_ba,_bb){ +with(_ba){ +return _title; +} +}),new objj_method(sel_getUid("setTitle:"),function(_bc,_bd,_be){ +with(_bc){ +_title=_be; +objj_msgSend(_windowView,"setTitle:",_be); +objj_msgSend(_bc,"_synchronizeMenuBarTitleWithWindowTitle"); +} +}),new objj_method(sel_getUid("setTitleWithRepresentedFilename:"),function(_bf,_c0,_c1){ +with(_bf){ +objj_msgSend(_bf,"setRepresentedFilename:",_c1); +objj_msgSend(_bf,"setTitle:",objj_msgSend(_c1,"lastPathComponent")); +} +}),new objj_method(sel_getUid("setRepresentedFilename:"),function(_c2,_c3,_c4){ +with(_c2){ +objj_msgSend(_c2,"setRepresentedURL:",_c4); +} +}),new objj_method(sel_getUid("representedFilename"),function(_c5,_c6){ +with(_c5){ +return _representedURL; +} +}),new objj_method(sel_getUid("setRepresentedURL:"),function(_c7,_c8,_c9){ +with(_c7){ +_representedURL=_c9; +} +}),new objj_method(sel_getUid("representedURL"),function(_ca,_cb){ +with(_ca){ +return _representedURL; +} +}),new objj_method(sel_getUid("screen"),function(_cc,_cd){ +with(_cc){ +return objj_msgSend(objj_msgSend(CPScreen,"alloc"),"init"); +} +}),new objj_method(sel_getUid("setMovableByWindowBackground:"),function(_ce,_cf,_d0){ +with(_ce){ +_isMovableByWindowBackground=_d0; +} +}),new objj_method(sel_getUid("isMovableByWindowBackground"),function(_d1,_d2){ +with(_d1){ +return _isMovableByWindowBackground; +} +}),new objj_method(sel_getUid("center"),function(_d3,_d4){ +with(_d3){ +if(_isFullPlatformWindow){ +return; +} +var _d5=objj_msgSend(_d3,"frame").size,_d6=objj_msgSend(CPPlatform,"isBrowser")?objj_msgSend(_platformWindow,"contentBounds").size:objj_msgSend(objj_msgSend(_d3,"screen"),"visibleFrame").size; +var _d7=CGPointMake((_d6.width-_d5.width)/2,(_d6.height-_d5.height)/2); +if(_d7.x<0){ +_d7.x=0; +} +if(_d7.y<0){ +_d7.y=0; +} +objj_msgSend(_d3,"setFrameOrigin:",_d7); +} +}),new objj_method(sel_getUid("sendEvent:"),function(_d8,_d9,_da){ +with(_d8){ +var _db=objj_msgSend(_da,"type"),_dc=objj_msgSend(_da,"locationInWindow"); +switch(_db){ +case CPFlagsChanged: +return objj_msgSend(objj_msgSend(_d8,"firstResponder"),"flagsChanged:",_da); +case CPKeyUp: +return objj_msgSend(objj_msgSend(_d8,"firstResponder"),"keyUp:",_da); +case CPKeyDown: +objj_msgSend(objj_msgSend(_d8,"firstResponder"),"keyDown:",_da); +if(!objj_msgSend(_d8,"disableKeyEquivalentForDefaultButton")){ +if(objj_msgSend(_da,"_triggersKeyEquivalent:withModifierMask:",objj_msgSend(objj_msgSend(_d8,"defaultButton"),"keyEquivalent"),objj_msgSend(objj_msgSend(_d8,"defaultButton"),"keyEquivalentModifierMask"))){ +objj_msgSend(objj_msgSend(_d8,"defaultButton"),"performClick:",_d8); +} +} +return; +case CPScrollWheel: +return objj_msgSend(objj_msgSend(_windowView,"hitTest:",_dc),"scrollWheel:",_da); +case CPLeftMouseUp: +case CPRightMouseUp: +var _dd=_leftMouseDownView,_de=_db==CPRightMouseUp?sel_getUid("rightMouseUp:"):sel_getUid("mouseUp:"); +if(!_dd){ +_dd=objj_msgSend(_windowView,"hitTest:",_dc); +} +objj_msgSend(_dd,"performSelector:withObject:",_de,_da); +_leftMouseDownView=nil; +return; +case CPLeftMouseDown: +case CPRightMouseDown: +_leftMouseDownView=objj_msgSend(_windowView,"hitTest:",_dc); +if(_leftMouseDownView!=_firstResponder&&objj_msgSend(_leftMouseDownView,"acceptsFirstResponder")){ +objj_msgSend(_d8,"makeFirstResponder:",_leftMouseDownView); +} +objj_msgSend(CPApp,"activateIgnoringOtherApps:",YES); +var _df=objj_msgSend(_da,"window"),_de=_db==CPRightMouseDown?sel_getUid("rightMouseDown:"):sel_getUid("mouseDown:"); +if(objj_msgSend(_df,"isKeyWindow")||objj_msgSend(_df,"becomesKeyOnlyIfNeeded")&&!objj_msgSend(_leftMouseDownView,"needsPanelToBecomeKey")){ +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_de,_da); +}else{ +objj_msgSend(_d8,"makeKeyAndOrderFront:",_d8); +if(objj_msgSend(_leftMouseDownView,"acceptsFirstMouse:",_da)){ +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_de,_da); +} +} +break; +case CPLeftMouseDragged: +case CPRightMouseDragged: +if(!_leftMouseDownView){ +return objj_msgSend(objj_msgSend(_windowView,"hitTest:",_dc),"mouseDragged:",_da); +} +var _de; +if(_db==CPRightMouseDragged){ +_de=sel_getUid("rightMouseDragged:"); +if(!objj_msgSend(_leftMouseDownView,"respondsToSelector:",_de)){ +_de=nil; +} +} +if(!_de){ +_de=sel_getUid("mouseDragged:"); +} +return objj_msgSend(_leftMouseDownView,"performSelector:withObject:",_de,_da); +case CPMouseMoved: +if(!_acceptsMouseMovedEvents){ +return; +} +if(!_mouseEnteredStack){ +_mouseEnteredStack=[]; +} +var _e0=objj_msgSend(_windowView,"hitTest:",_dc); +if(objj_msgSend(_mouseEnteredStack,"count")&&objj_msgSend(_mouseEnteredStack,"lastObject")===_e0){ +return objj_msgSend(_e0,"mouseMoved:",_da); +} +var _e1=_e0,_e2=[]; +while(_e1){ +_e2.unshift(_e1); +_e1=objj_msgSend(_e1,"superview"); +} +var _e3=MIN(_mouseEnteredStack.length,_e2.length); +while(_e3--){ +if(_mouseEnteredStack[_e3]===_e2[_e3]){ +break; +} +} +var _e4=_e3+1,_e5=_mouseEnteredStack.length; +if(_e4<_e5){ +var _e6=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPMouseExited,_dc,objj_msgSend(_da,"modifierFlags"),objj_msgSend(_da,"timestamp"),_windowNumber,nil,-1,1,0); +for(;_e4<_e5;++_e4){ +objj_msgSend(_mouseEnteredStack[_e4],"mouseExited:",_e6); +} +} +_e4=_e3+1; +_e5=_e2.length; +if(_e4<_e5){ +var _e6=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPMouseEntered,_dc,objj_msgSend(_da,"modifierFlags"),objj_msgSend(_da,"timestamp"),_windowNumber,nil,-1,1,0); +for(;_e4<_e5;++_e4){ +objj_msgSend(_e2[_e4],"mouseEntered:",_e6); +} +} +_mouseEnteredStack=_e2; +objj_msgSend(_e0,"mouseMoved:",_da); +} +} +}),new objj_method(sel_getUid("windowNumber"),function(_e7,_e8){ +with(_e7){ +return _windowNumber; +} +}),new objj_method(sel_getUid("becomeKeyWindow"),function(_e9,_ea){ +with(_e9){ +CPApp._keyWindow=_e9; +if(_firstResponder!==_e9&&objj_msgSend(_firstResponder,"respondsToSelector:",sel_getUid("becomeKeyWindow"))){ +objj_msgSend(_firstResponder,"becomeKeyWindow"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidBecomeKeyNotification,_e9); +} +}),new objj_method(sel_getUid("canBecomeKeyWindow"),function(_eb,_ec){ +with(_eb){ +return YES; +} +}),new objj_method(sel_getUid("isKeyWindow"),function(_ed,_ee){ +with(_ed){ +return objj_msgSend(CPApp,"keyWindow")==_ed; +} +}),new objj_method(sel_getUid("makeKeyAndOrderFront:"),function(_ef,_f0,_f1){ +with(_ef){ +objj_msgSend(_ef,"orderFront:",_ef); +objj_msgSend(_ef,"makeKeyWindow"); +objj_msgSend(_ef,"makeMainWindow"); +} +}),new objj_method(sel_getUid("makeKeyWindow"),function(_f2,_f3){ +with(_f2){ +if(objj_msgSend(CPApp,"keyWindow")===_f2||!objj_msgSend(_f2,"canBecomeKeyWindow")){ +return; +} +objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"resignKeyWindow"); +objj_msgSend(_f2,"becomeKeyWindow"); +} +}),new objj_method(sel_getUid("resignKeyWindow"),function(_f4,_f5){ +with(_f4){ +if(_firstResponder!==_f4&&objj_msgSend(_firstResponder,"respondsToSelector:",sel_getUid("resignKeyWindow"))){ +objj_msgSend(_firstResponder,"resignKeyWindow"); +} +if(CPApp._keyWindow===_f4){ +CPApp._keyWindow=nil; +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResignKeyNotification,_f4); +} +}),new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"),function(_f6,_f7,_f8,_f9,_fa,_fb,_fc,_fd,_fe){ +with(_f6){ +objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:",_f8,_f6,objj_msgSend(_f6,"convertBaseToGlobal:",_f9),_fa,_fb,_fc,_fd,_fe); +} +}),new objj_method(sel_getUid("_noteRegisteredDraggedTypes:"),function(_ff,_100,_101){ +with(_ff){ +if(!_101){ +return; +} +if(!_inclusiveRegisteredDraggedTypes){ +_inclusiveRegisteredDraggedTypes=objj_msgSend(CPCountedSet,"set"); +} +objj_msgSend(_inclusiveRegisteredDraggedTypes,"unionSet:",_101); +} +}),new objj_method(sel_getUid("_noteUnregisteredDraggedTypes:"),function(self,_102,_103){ +with(self){ +if(!_103){ +return; +} +objj_msgSend(_inclusiveRegisteredDraggedTypes,"minusSet:",_103); +if(objj_msgSend(_inclusiveRegisteredDraggedTypes,"count")===0){ +_inclusiveRegisteredDraggedTypes=nil; +} +} +}),new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"),function(self,_104,_105,_106,_107,_108,_109,_10a,_10b){ +with(self){ +objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:",_105,self,objj_msgSend(self,"convertBaseToGlobal:",_106),_107,_108,_109,_10a,_10b); +} +}),new objj_method(sel_getUid("registerForDraggedTypes:"),function(self,_10c,_10d){ +with(self){ +if(!_10d){ +return; +} +objj_msgSend(self,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +objj_msgSend(_registeredDraggedTypes,"addObjectsFromArray:",_10d); +objj_msgSend(self,"_noteRegisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypesArray=nil; +} +}),new objj_method(sel_getUid("registeredDraggedTypes"),function(self,_10e){ +with(self){ +if(!_registeredDraggedTypesArray){ +_registeredDraggedTypesArray=objj_msgSend(_registeredDraggedTypes,"allObjects"); +} +return _registeredDraggedTypesArray; +} +}),new objj_method(sel_getUid("unregisterDraggedTypes"),function(self,_10f){ +with(self){ +objj_msgSend(self,"_noteUnregisteredDraggedTypes:",_registeredDraggedTypes); +_registeredDraggedTypes=objj_msgSend(CPSet,"set"); +_registeredDraggedTypesArray=[]; +} +}),new objj_method(sel_getUid("setDocumentEdited:"),function(self,_110,_111){ +with(self){ +if(_isDocumentEdited==_111){ +return; +} +_isDocumentEdited=_111; +objj_msgSend(CPMenu,"_setMenuBarIconImageAlphaValue:",_isDocumentEdited?0.5:1); +objj_msgSend(_windowView,"setDocumentEdited:",_111); +} +}),new objj_method(sel_getUid("isDocumentEdited"),function(self,_112){ +with(self){ +return _isDocumentEdited; +} +}),new objj_method(sel_getUid("setDocumentSaving:"),function(self,_113,_114){ +with(self){ +if(_isDocumentSaving==_114){ +return; +} +_isDocumentSaving=_114; +objj_msgSend(self,"_synchronizeSaveMenuWithDocumentSaving"); +objj_msgSend(_windowView,"windowDidChangeDocumentSaving"); +} +}),new objj_method(sel_getUid("isDocumentSaving"),function(self,_115){ +with(self){ +return _isDocumentSaving; +} +}),new objj_method(sel_getUid("_synchronizeSaveMenuWithDocumentSaving"),function(self,_116){ +with(self){ +if(!objj_msgSend(self,"isMainWindow")){ +return; +} +var _117=objj_msgSend(CPApp,"mainMenu"),_118=objj_msgSend(_117,"indexOfItemWithTitle:",_isDocumentSaving?"Save":"Saving..."); +if(_118==CPNotFound){ +return; +} +var item=objj_msgSend(_117,"itemAtIndex:",_118); +if(_isDocumentSaving){ +_7=objj_msgSend(item,"image"); +objj_msgSend(item,"setTitle:","Saving..."); +objj_msgSend(item,"setImage:",_8); +objj_msgSend(item,"setEnabled:",NO); +}else{ +objj_msgSend(item,"setTitle:","Save"); +objj_msgSend(item,"setImage:",_7); +objj_msgSend(item,"setEnabled:",YES); +} +} +}),new objj_method(sel_getUid("performMiniaturize:"),function(self,_119,_11a){ +with(self){ +objj_msgSend(self,"miniaturize:",_11a); +} +}),new objj_method(sel_getUid("miniaturize:"),function(self,_11b,_11c){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillMiniaturizeNotification,self); +objj_msgSend(objj_msgSend(self,"platformWindow"),"miniaturize:",_11c); +objj_msgSend(self,"_updateMainAndKeyWindows"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidMiniaturizeNotification,self); +_isMiniaturized=YES; +} +}),new objj_method(sel_getUid("deminiaturize:"),function(self,_11d,_11e){ +with(self){ +objj_msgSend(objj_msgSend(self,"platformWindow"),"deminiaturize:",_11e); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidDeminiaturizeNotification,self); +_isMiniaturized=NO; +} +}),new objj_method(sel_getUid("isMiniaturized"),function(self,_11f){ +with(self){ +return _isMiniaturized; +} +}),new objj_method(sel_getUid("performClose:"),function(self,_120,_121){ +with(self){ +if(!(_styleMask&CPClosableWindowMask)){ +return; +} +if(objj_msgSend(self,"isFullBridge")){ +var _122=objj_msgSend(CPApp,"currentEvent"); +if(objj_msgSend(_122,"type")===CPKeyDown&&objj_msgSend(_122,"characters")==="w"&&(objj_msgSend(_122,"modifierFlags")&CPPlatformActionKeyMask)){ +objj_msgSend(objj_msgSend(self,"platformWindow"),"_propagateCurrentDOMEvent:",YES); +return; +} +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("windowShouldClose:"))){ +if(!objj_msgSend(_delegate,"windowShouldClose:",self)){ +return; +} +}else{ +if(objj_msgSend(self,"respondsToSelector:",sel_getUid("windowShouldClose:"))&&!objj_msgSend(self,"windowShouldClose:",self)){ +return; +} +} +var _123=objj_msgSend(_windowController,"documents"); +if(objj_msgSend(_123,"count")){ +var _124=objj_msgSend(_123,"indexOfObject:",objj_msgSend(_windowController,"document")); +objj_msgSend(_123[_124],"shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",_windowController,self,sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),{documents:objj_msgSend(_123,"copy"),visited:0,index:_124}); +}else{ +objj_msgSend(self,"close"); +} +} +}),new objj_method(sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),function(self,_125,_126,_127,_128){ +with(self){ +if(_127){ +var _129=objj_msgSend(self,"windowController"),_12a=_128.documents,_12b=objj_msgSend(_12a,"count"),_12c=++_128.visited,_12d=++_128.index%_12b; +objj_msgSend(_126,"removeWindowController:",_129); +if(_12c<_12b){ +objj_msgSend(_129,"setDocument:",_12a[_12d]); +objj_msgSend(_12a[_12d],"shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",_windowController,self,sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"),_128); +}else{ +objj_msgSend(self,"close"); +} +} +} +}),new objj_method(sel_getUid("close"),function(self,_12e){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillCloseNotification,self); +objj_msgSend(self,"orderOut:",nil); +} +}),new objj_method(sel_getUid("isMainWindow"),function(self,_12f){ +with(self){ +return objj_msgSend(CPApp,"mainWindow")==self; +} +}),new objj_method(sel_getUid("canBecomeMainWindow"),function(self,_130){ +with(self){ +if(objj_msgSend(self,"isVisible")){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("makeMainWindow"),function(self,_131){ +with(self){ +if(objj_msgSend(CPApp,"mainWindow")===self||!objj_msgSend(self,"canBecomeMainWindow")){ +return; +} +objj_msgSend(objj_msgSend(CPApp,"mainWindow"),"resignMainWindow"); +objj_msgSend(self,"becomeMainWindow"); +} +}),new objj_method(sel_getUid("becomeMainWindow"),function(self,_132){ +with(self){ +CPApp._mainWindow=self; +objj_msgSend(self,"_synchronizeMenuBarTitleWithWindowTitle"); +objj_msgSend(self,"_synchronizeSaveMenuWithDocumentSaving"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidBecomeMainNotification,self); +} +}),new objj_method(sel_getUid("resignMainWindow"),function(self,_133){ +with(self){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidResignMainNotification,self); +if(CPApp._mainWindow===self){ +CPApp._mainWindow=nil; +} +} +}),new objj_method(sel_getUid("_updateMainAndKeyWindows"),function(self,_134){ +with(self){ +var _135=objj_msgSend(CPApp,"orderedWindows"),_136=objj_msgSend(_135,"count"); +if(objj_msgSend(self,"isKeyWindow")){ +var _137=objj_msgSend(CPApp,"keyWindow"); +objj_msgSend(self,"resignKeyWindow"); +if(_137&&_137!==self&&objj_msgSend(_137,"canBecomeKeyWindow")){ +objj_msgSend(_137,"makeKeyWindow"); +}else{ +var _138=objj_msgSend(CPApp,"mainMenu"),_139=objj_getClass("_CPMenuBarWindow"),_13a; +for(var i=0;i<_136;i++){ +var _13b=_135[i]; +if(objj_msgSend(_13b,"isKindOfClass:",_139)){ +_13a=_13b; +} +if(_13b===self||_13b===_13a){ +continue; +} +if(objj_msgSend(_13b,"isVisible")&&objj_msgSend(_13b,"canBecomeKeyWindow")){ +objj_msgSend(_13b,"makeKeyWindow"); +break; +} +} +if(!objj_msgSend(CPApp,"keyWindow")){ +objj_msgSend(_13a,"makeKeyWindow"); +} +} +} +if(objj_msgSend(self,"isMainWindow")){ +var _13c=objj_msgSend(CPApp,"mainWindow"); +objj_msgSend(self,"resignMainWindow"); +if(_13c&&_13c!==self&&objj_msgSend(_13c,"canBecomeMainWindow")){ +objj_msgSend(_13c,"makeMainWindow"); +}else{ +var _138=objj_msgSend(CPApp,"mainMenu"),_139=objj_getClass("_CPMenuBarWindow"),_13a; +for(var i=0;i<_136;i++){ +var _13b=_135[i]; +if(objj_msgSend(_13b,"isKindOfClass:",_139)){ +_13a=_13b; +} +if(_13b===self||_13b===_13a){ +continue; +} +if(objj_msgSend(_13b,"isVisible")&&objj_msgSend(_13b,"canBecomeMainWindow")){ +objj_msgSend(_13b,"makeMainWindow"); +break; +} +} +} +} +} +}),new objj_method(sel_getUid("toolbar"),function(self,_13d){ +with(self){ +return _toolbar; +} +}),new objj_method(sel_getUid("setToolbar:"),function(self,_13e,_13f){ +with(self){ +if(_toolbar===_13f){ +return; +} +objj_msgSend(objj_msgSend(_13f,"_window"),"setToolbar:",nil); +objj_msgSend(_toolbar,"_setWindow:",nil); +_toolbar=_13f; +objj_msgSend(_toolbar,"_setWindow:",self); +objj_msgSend(self,"_noteToolbarChanged"); +} +}),new objj_method(sel_getUid("toggleToolbarShown:"),function(self,_140,_141){ +with(self){ +var _142=objj_msgSend(self,"toolbar"); +objj_msgSend(_142,"setVisible:",!objj_msgSend(_142,"isVisible")); +} +}),new objj_method(sel_getUid("_noteToolbarChanged"),function(self,_143){ +with(self){ +var _144=CGRectMakeCopy(objj_msgSend(self,"frame")),_145; +objj_msgSend(_windowView,"noteToolbarChanged"); +if(_isFullPlatformWindow){ +_145=objj_msgSend(_platformWindow,"visibleFrame"); +}else{ +_145=CGRectMakeCopy(objj_msgSend(self,"frame")); +_145.origin=_144.origin; +} +objj_msgSend(self,"setFrame:",_145); +} +}),new objj_method(sel_getUid("_setFrame:delegate:duration:curve:"),function(self,_146,_147,_148,_149,_14a){ +with(self){ +objj_msgSend(_frameAnimation,"stopAnimation"); +_frameAnimation=objj_msgSend(objj_msgSend(_CPWindowFrameAnimation,"alloc"),"initWithWindow:targetFrame:",self,_147); +objj_msgSend(_frameAnimation,"setDelegate:",_148); +objj_msgSend(_frameAnimation,"setAnimationCurve:",_14a); +objj_msgSend(_frameAnimation,"setDuration:",_149); +objj_msgSend(_frameAnimation,"startAnimation"); +} +}),new objj_method(sel_getUid("animationResizeTime:"),function(self,_14b,_14c){ +with(self){ +return _9; +} +}),new objj_method(sel_getUid("_setAttachedSheetFrameOrigin"),function(self,_14d){ +with(self){ +var _14e=objj_msgSend(self,"attachedSheet"); +var _14f=objj_msgSend(objj_msgSend(self,"contentView"),"frame"),_150=CGRectMakeCopy(objj_msgSend(_14e,"frame")); +_150.origin.y=CGRectGetMinY(_frame)+CGRectGetMinY(_14f); +_150.origin.x=CGRectGetMinX(_frame)+FLOOR((CGRectGetWidth(_frame)-CGRectGetWidth(_150))/2); +objj_msgSend(_14e,"setFrame:display:animate:",_150,YES,NO); +} +}),new objj_method(sel_getUid("_attachSheet:modalDelegate:didEndSelector:contextInfo:"),function(self,_151,_152,_153,_154,_155){ +with(self){ +var _156=objj_msgSend(_152,"frame"); +_sheetContext={"sheet":_152,"modalDelegate":_153,"endSelector":_154,"contextInfo":_155,"frame":CGRectMakeCopy(_156),"returnCode":-1,"opened":NO}; +objj_msgSend(self,"_attachSheetWindow:",_152); +} +}),new objj_method(sel_getUid("_attachSheetWindow:"),function(self,_157,_158){ +with(self){ +var _159=objj_msgSend(_158,"frame"),_15a=objj_msgSend(self,"frame"),_15b=objj_msgSend(_158,"contentView"); +objj_msgSend(self,"_setUpMasksForView:",_15b); +_158._isSheet=YES; +_158._parentView=self; +var _15c=_15a.origin.x+FLOOR((_15a.size.width-_159.size.width)/2),_15d=_15a.origin.y+objj_msgSend(objj_msgSend(self,"contentView"),"frame").origin.y,_15e=CGRectMake(_15c,_15d,_159.size.width,0),_15f=CGRectMake(_15c,_15d,_159.size.width,_159.size.height); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowWillBeginSheetNotification,self); +objj_msgSend(CPApp,"runModalForWindow:",_158); +objj_msgSend(_158,"orderFront:",self); +objj_msgSend(_158,"setFrame:display:animate:",_15e,YES,NO); +_sheetContext["opened"]=YES; +objj_msgSend(_158,"_setFrame:delegate:duration:curve:",_15f,self,objj_msgSend(self,"animationResizeTime:",_15f),CPAnimationEaseOut); +objj_msgSend(_158,"becomeKeyWindow"); +} +}),new objj_method(sel_getUid("_detachSheetWindow"),function(self,_160){ +with(self){ +var _161=objj_msgSend(self,"attachedSheet"),_162=objj_msgSend(_161,"frame"),_163=CGRectMakeCopy(_162); +_163.size.height=0; +_sheetContext["frame"]=_162; +var _164=objj_msgSend(_161,"contentView"); +objj_msgSend(self,"_setUpMasksForView:",_164); +_sheetContext["opened"]=NO; +objj_msgSend(_161,"_setFrame:delegate:duration:curve:",_163,self,objj_msgSend(self,"animationResizeTime:",_163),CPAnimationEaseIn); +} +}),new objj_method(sel_getUid("animationDidEnd:"),function(self,_165,anim){ +with(self){ +var _166=_sheetContext["sheet"]; +if(anim._window!=_166){ +return; +} +var _167=objj_msgSend(_166,"contentView"); +if(_sheetContext["opened"]===YES){ +objj_msgSend(self,"_restoreMasksForView:",_167); +return; +} +objj_msgSend(CPApp,"stopModal"); +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPWindowDidEndSheetNotification,self); +objj_msgSend(_166,"orderOut:",self); +var _168=_sheetContext["frame"]; +objj_msgSend(_166,"setFrame:",_168); +objj_msgSend(self,"_restoreMasksForView:",_167); +var _169=_sheetContext["modalDelegate"],_16a=_sheetContext["endSelector"],_16b=_sheetContext["returnCode"],_16c=_sheetContext["contextInfo"]; +_sheetContext=nil; +_166._parentView=nil; +if(_169!=nil&&_16a!=nil){ +objj_msgSend(_169,_16a,_166,_16b,_16c); +} +} +}),new objj_method(sel_getUid("_setUpMasksForView:"),function(self,_16d,_16e){ +with(self){ +var _16f=objj_msgSend(_16e,"subviews"); +objj_msgSend(_16f,"addObject:",_16e); +for(var i=0,_170=objj_msgSend(_16f,"count");i<_170;i++){ +var view=objj_msgSend(_16f,"objectAtIndex:",i),mask=objj_msgSend(view,"autoresizingMask"),_171=(mask&CPViewMinYMargin)?128:CPViewMinYMargin; +objj_msgSend(view,"setAutoresizingMask:",(mask|_171)); +} +} +}),new objj_method(sel_getUid("_restoreMasksForView:"),function(self,_172,_173){ +with(self){ +var _174=objj_msgSend(_173,"subviews"); +objj_msgSend(_174,"addObject:",_173); +for(var i=0,_175=objj_msgSend(_174,"count");i<_175;i++){ +var view=objj_msgSend(_174,"objectAtIndex:",i),mask=objj_msgSend(view,"autoresizingMask"),_176=(mask&128)?128:CPViewMinYMargin; +objj_msgSend(view,"setAutoresizingMask:",(mask&(~_176))); +} +} +}),new objj_method(sel_getUid("attachedSheet"),function(self,_177){ +with(self){ +if(_sheetContext===nil){ +return nil; +} +return _sheetContext["sheet"]; +} +}),new objj_method(sel_getUid("isSheet"),function(self,_178){ +with(self){ +return _isSheet; +} +}),new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"),function(self,_179){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("worksWhenModal"),function(self,_17a){ +with(self){ +return NO; +} +}),new objj_method(sel_getUid("performKeyEquivalent:"),function(self,_17b,_17c){ +with(self){ +return objj_msgSend(objj_msgSend(self,"contentView"),"performKeyEquivalent:",_17c); +} +}),new objj_method(sel_getUid("keyDown:"),function(self,_17d,_17e){ +with(self){ +if(objj_msgSend(_17e,"_couldBeKeyEquivalent")&&objj_msgSend(self,"performKeyEquivalent:",_17e)){ +return; +} +objj_msgSend(self,"interpretKeyEvents:",[_17e]); +} +}),new objj_method(sel_getUid("insertTab:"),function(self,_17f,_180){ +with(self){ +objj_msgSend(self,"selectNextKeyView:",nil); +} +}),new objj_method(sel_getUid("_dirtyKeyViewLoop"),function(self,_181){ +with(self){ +if(_autorecalculatesKeyViewLoop){ +_keyViewLoopIsDirty=YES; +} +} +}),new objj_method(sel_getUid("_hasKeyViewLoop"),function(self,_182){ +with(self){ +var _183=[]; +objj_msgSend(self,"_appendSubviewsOf:toArray:",_contentView,_183); +for(var i=0,_184=objj_msgSend(_183,"count");i<_184;i++){ +if(_183[i]._nextKeyView){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("recalculateKeyViewLoop"),function(self,_185){ +with(self){ +var _186=[]; +objj_msgSend(self,"_appendSubviewsOf:toArray:",_contentView,_186); +var _187=objj_msgSend(_186,"sortedArrayUsingFunction:context:",_188,_contentView),_189=objj_msgSend(_187,"count"); +for(var i=0;i<_189;i++){ +objj_msgSend(_187[i],"setNextKeyView:",_187[(i+1)%_189]); +} +_keyViewLoopIsDirty=NO; +} +}),new objj_method(sel_getUid("_appendSubviewsOf:toArray:"),function(self,_18a,_18b,_18c){ +with(self){ +var _18d=objj_msgSend(_18b,"subviews"),_18e=objj_msgSend(_18d,"count"); +while(_18e--){ +objj_msgSend(self,"_appendSubviewsOf:toArray:",_18d[_18e],_18c); +} +objj_msgSend(_18c,"addObject:",_18b); +} +}),new objj_method(sel_getUid("setAutorecalculatesKeyViewLoop:"),function(self,_18f,_190){ +with(self){ +if(_autorecalculatesKeyViewLoop===_190){ +return; +} +_autorecalculatesKeyViewLoop=_190; +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +}else{ +if(_autorecalculatesKeyViewLoop){ +objj_msgSend(self,"_dirtyKeyViewLoop"); +} +} +} +}),new objj_method(sel_getUid("autorecalculatesKeyViewLoop"),function(self,_191){ +with(self){ +return _autorecalculatesKeyViewLoop; +} +}),new objj_method(sel_getUid("selectNextKeyView:"),function(self,_192,_193){ +with(self){ +if(objj_msgSend(_firstResponder,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +objj_msgSend(self,"selectKeyViewFollowingView:",_firstResponder); +} +} +}),new objj_method(sel_getUid("selectPreviousKeyView:"),function(self,_194,_195){ +with(self){ +if(objj_msgSend(_firstResponder,"isKindOfClass:",objj_msgSend(CPView,"class"))){ +objj_msgSend(self,"selectKeyViewPrecedingView:",_firstResponder); +} +} +}),new objj_method(sel_getUid("selectKeyViewFollowingView:"),function(self,_196,_197){ +with(self){ +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +} +objj_msgSend(self,"makeFirstResponder:",objj_msgSend(_197,"nextValidKeyView")); +} +}),new objj_method(sel_getUid("selectKeyViewPrecedingView:"),function(self,_198,_199){ +with(self){ +if(_keyViewLoopIsDirty){ +objj_msgSend(self,"recalculateKeyViewLoop"); +} +objj_msgSend(self,"makeFirstResponder:",objj_msgSend(_199,"previousValidKeyView")); +} +}),new objj_method(sel_getUid("setDefaultButtonCell:"),function(self,_19a,_19b){ +with(self){ +objj_msgSend(self,"setDefaultButton:",_19b); +} +}),new objj_method(sel_getUid("defaultButtonCell"),function(self,_19c){ +with(self){ +return objj_msgSend(self,"defaultButton"); +} +}),new objj_method(sel_getUid("setDefaultButton:"),function(self,_19d,_19e){ +with(self){ +if(_defaultButton===_19e){ +return; +} +if(objj_msgSend(_defaultButton,"keyEquivalent")===CPCarriageReturnCharacter){ +objj_msgSend(_defaultButton,"setKeyEquivalent:",nil); +} +_defaultButton=_19e; +if(objj_msgSend(_defaultButton,"keyEquivalent")!==CPCarriageReturnCharacter){ +objj_msgSend(_defaultButton,"setKeyEquivalent:",CPCarriageReturnCharacter); +} +} +}),new objj_method(sel_getUid("defaultButton"),function(self,_19f){ +with(self){ +return _defaultButton; +} +}),new objj_method(sel_getUid("enableKeyEquivalentForDefaultButton"),function(self,_1a0){ +with(self){ +_defaultButtonEnabled=YES; +} +}),new objj_method(sel_getUid("enableKeyEquivalentForDefaultButtonCell"),function(self,_1a1){ +with(self){ +objj_msgSend(self,"enableKeyEquivalentForDefaultButton"); +} +}),new objj_method(sel_getUid("disableKeyEquivalentForDefaultButton"),function(self,_1a2){ +with(self){ +_defaultButtonEnabled=NO; +} +}),new objj_method(sel_getUid("disableKeyEquivalentForDefaultButtonCell"),function(self,_1a3){ +with(self){ +objj_msgSend(self,"disableKeyEquivalentForDefaultButton"); +} +})]); +class_addMethods(_b,[new objj_method(sel_getUid("initialize"),function(self,_1a4){ +with(self){ +if(self!=objj_msgSend(CPWindow,"class")){ +return; +} +var _1a5=objj_msgSend(CPBundle,"bundleForClass:",objj_msgSend(CPWindow,"class")); +_8=objj_msgSend(objj_msgSend(CPImage,"alloc"),"initWithContentsOfFile:size:",objj_msgSend(_1a5,"pathForResource:","CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"),CGSizeMake(16,16)); +} +}),new objj_method(sel_getUid("_windowViewClassForStyleMask:"),function(self,_1a6,_1a7){ +with(self){ +if(_1a7&CPHUDBackgroundWindowMask){ +return _CPHUDWindowView; +}else{ +if(_1a7===CPBorderlessWindowMask){ +return _CPBorderlessWindowView; +}else{ +if(_1a7&CPDocModalWindowMask){ +return _CPDocModalWindowView; +} +} +} +return _CPStandardWindowView; +} +}),new objj_method(sel_getUid("_windowViewClassForFullPlatformWindowStyleMask:"),function(self,_1a8,_1a9){ +with(self){ +return _CPBorderlessBridgeWindowView; +} +}),new objj_method(sel_getUid("frameRectForContentRect:styleMask:"),function(self,_1aa,_1ab,_1ac){ +with(self){ +return objj_msgSend(objj_msgSend(objj_msgSend(self,"class"),"_windowViewClassForStyleMask:",_1ac),"frameRectForContentRect:",_1ab); +} +})]); +var _188=function(a,b,_1ad){ +var _1ae=objj_msgSend(a,"convertRect:toView:",objj_msgSend(a,"bounds"),nil),_1af=objj_msgSend(b,"convertRect:toView:",objj_msgSend(b,"bounds"),nil); +if(CGRectGetMinY(_1ae)<CGRectGetMinY(_1af)){ +return -1; +}else{ +if(CGRectGetMinY(_1ae)==CGRectGetMinY(_1af)&&CGRectGetMinX(_1ae)<CGRectGetMinX(_1af)){ +return -1; +}else{ +if(CGRectGetMinX(_1ae)==CGRectGetMinX(_1af)&&CGRectGetMinX(_1ae)==CGRectGetMinX(_1af)){ +return 0; +}else{ +return 1; +} +} +} +}; +var _a=objj_getClass("CPWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("_synchronizeMenuBarTitleWithWindowTitle"),function(self,_1b0){ +with(self){ +if(!objj_msgSend(_windowController,"document")||!objj_msgSend(self,"isMainWindow")){ +return; +} +objj_msgSend(CPMenu,"setMenuBarTitle:",_title); +} +})]); +var _a=objj_getClass("CPWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("resizeWithOldPlatformWindowSize:"),function(self,_1b1,_1b2){ +with(self){ +if(objj_msgSend(self,"isFullPlatformWindow")){ +return objj_msgSend(self,"setFrame:",objj_msgSend(_platformWindow,"visibleFrame")); +} +if(_autoresizingMask==CPWindowNotSizable){ +return; +} +var _1b3=objj_msgSend(_platformWindow,"contentBounds"),_1b4=CGRectMakeCopy(_frame),dX=(CGRectGetWidth(_1b3)-_1b2.width)/(((_autoresizingMask&CPWindowMinXMargin)?1:0)+(_autoresizingMask&CPWindowWidthSizable?1:0)+(_autoresizingMask&CPWindowMaxXMargin?1:0)),dY=(CGRectGetHeight(_1b3)-_1b2.height)/((_autoresizingMask&CPWindowMinYMargin?1:0)+(_autoresizingMask&CPWindowHeightSizable?1:0)+(_autoresizingMask&CPWindowMaxYMargin?1:0)); +if(_autoresizingMask&CPWindowMinXMargin){ +_1b4.origin.x+=dX; +} +if(_autoresizingMask&CPWindowWidthSizable){ +_1b4.size.width+=dX; +} +if(_autoresizingMask&CPWindowMinYMargin){ +_1b4.origin.y+=dY; +} +if(_autoresizingMask&CPWindowHeightSizable){ +_1b4.size.height+=dY; +} +objj_msgSend(self,"setFrame:",_1b4); +} +}),new objj_method(sel_getUid("setAutoresizingMask:"),function(self,_1b5,_1b6){ +with(self){ +_autoresizingMask=_1b6; +} +}),new objj_method(sel_getUid("autoresizingMask"),function(self,_1b7){ +with(self){ +return _autoresizingMask; +} +}),new objj_method(sel_getUid("convertBaseToGlobal:"),function(self,_1b8,_1b9){ +with(self){ +return objj_msgSend(CPPlatform,"isBrowser")?objj_msgSend(self,"convertBaseToPlatformWindow:",_1b9):objj_msgSend(self,"convertBaseToScreen:",_1b9); +} +}),new objj_method(sel_getUid("convertGlobalToBase:"),function(self,_1ba,_1bb){ +with(self){ +return objj_msgSend(CPPlatform,"isBrowser")?objj_msgSend(self,"convertPlatformWindowToBase:",_1bb):objj_msgSend(self,"convertScreenToBase:",_1bb); +} +}),new objj_method(sel_getUid("convertBaseToPlatformWindow:"),function(self,_1bc,_1bd){ +with(self){ +if(objj_msgSend(self,"_sharesChromeWithPlatformWindow")){ +return _1bd; +} +var _1be=objj_msgSend(self,"frame").origin; +return {x:_1bd.x+_1be.x,y:_1bd.y+_1be.y}; +} +}),new objj_method(sel_getUid("convertPlatformWindowToBase:"),function(self,_1bf,_1c0){ +with(self){ +if(objj_msgSend(self,"_sharesChromeWithPlatformWindow")){ +return _1c0; +} +var _1c1=objj_msgSend(self,"frame").origin; +return {x:_1c0.x-_1c1.x,y:_1c0.y-_1c1.y}; +} +}),new objj_method(sel_getUid("convertScreenToBase:"),function(self,_1c2,_1c3){ +with(self){ +return objj_msgSend(self,"convertPlatformWindowToBase:",objj_msgSend(_platformWindow,"convertScreenToBase:",_1c3)); +} +}),new objj_method(sel_getUid("convertBaseToScreen:"),function(self,_1c4,_1c5){ +with(self){ +return objj_msgSend(_platformWindow,"convertBaseToScreen:",objj_msgSend(self,"convertBaseToPlatformWindow:",_1c5)); +} +}),new objj_method(sel_getUid("_setSharesChromeWithPlatformWindow:"),function(self,_1c6,_1c7){ +with(self){ +if(_1c7&&objj_msgSend(CPPlatform,"isBrowser")){ +return; +} +_sharesChromeWithPlatformWindow=_1c7; +objj_msgSend(self,"_updateShadow"); +} +}),new objj_method(sel_getUid("_sharesChromeWithPlatformWindow"),function(self,_1c8){ +with(self){ +return _sharesChromeWithPlatformWindow; +} +}),new objj_method(sel_getUid("undoManager"),function(self,_1c9){ +with(self){ +if(_undoManager){ +return _undoManager; +} +var _1ca=objj_msgSend(objj_msgSend(_windowController,"document"),"undoManager"); +if(_1ca){ +return _1ca; +} +if(_delegateRespondsToWindowWillReturnUndoManagerSelector){ +return objj_msgSend(_delegate,"windowWillReturnUndoManager:",self); +} +if(!_undoManager){ +_undoManager=objj_msgSend(objj_msgSend(CPUndoManager,"alloc"),"init"); +} +return _undoManager; +} +}),new objj_method(sel_getUid("undo:"),function(self,_1cb,_1cc){ +with(self){ +objj_msgSend(objj_msgSend(self,"undoManager"),"undo"); +} +}),new objj_method(sel_getUid("redo:"),function(self,_1cd,_1ce){ +with(self){ +objj_msgSend(objj_msgSend(self,"undoManager"),"redo"); +} +}),new objj_method(sel_getUid("containsPoint:"),function(self,_1cf,_1d0){ +with(self){ +return CGRectContainsPoint(_frame,_1d0); +} +})]); +var _a=objj_getClass("CPWindow"); +if(!_a){ +throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +} +var _b=_a.isa; +class_addMethods(_a,[new objj_method(sel_getUid("setFullBridge:"),function(self,_1d1,_1d2){ +with(self){ +objj_msgSend(self,"setFullPlatformWindow:",_1d2); +} +}),new objj_method(sel_getUid("isFullBridge"),function(self,_1d3){ +with(self){ +return objj_msgSend(self,"isFullPlatformWindow"); +} +}),new objj_method(sel_getUid("convertBaseToBridge:"),function(self,_1d4,_1d5){ +with(self){ +return objj_msgSend(self,"convertBaseToPlatformWindow:",_1d5); +} +}),new objj_method(sel_getUid("convertBridgeToBase:"),function(self,_1d6,_1d7){ +with(self){ +return objj_msgSend(self,"convertPlatformWindowToBase:",_1d7); +} +})]); +var _1d8=function(_1d9,_1da,_1db){ +return _1d9+(_1da-_1d9)*_1db; +}; +var _a=objj_allocateClassPair(CPAnimation,"_CPWindowFrameAnimation"),_b=_a.isa; +class_addIvars(_a,[new objj_ivar("_window"),new objj_ivar("_startFrame"),new objj_ivar("_targetFrame")]); +objj_registerClassPair(_a); +class_addMethods(_a,[new objj_method(sel_getUid("initWithWindow:targetFrame:"),function(self,_1dc,_1dd,_1de){ +with(self){ +self=objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPWindowFrameAnimation").super_class},"initWithDuration:animationCurve:",objj_msgSend(_1dd,"animationResizeTime:",_1de),CPAnimationLinear); +if(self){ +_window=_1dd; +_targetFrame=CGRectMakeCopy(_1de); +_startFrame=CGRectMakeCopy(objj_msgSend(_window,"frame")); +} +return self; +} +}),new objj_method(sel_getUid("startAnimation"),function(self,_1df){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPWindowFrameAnimation").super_class},"startAnimation"); +_window._isAnimating=YES; +} +}),new objj_method(sel_getUid("setCurrentProgress:"),function(self,_1e0,_1e1){ +with(self){ +objj_msgSendSuper({receiver:self,super_class:objj_getClass("_CPWindowFrameAnimation").super_class},"setCurrentProgress:",_1e1); +var _1e2=objj_msgSend(self,"currentValue"); +if(_1e2==1){ +_window._isAnimating=NO; +} +var _1e3=CGRectMake(_1d8(CGRectGetMinX(_startFrame),CGRectGetMinX(_targetFrame),_1e2),_1d8(CGRectGetMinY(_startFrame),CGRectGetMinY(_targetFrame),_1e2),_1d8(CGRectGetWidth(_startFrame),CGRectGetWidth(_targetFrame),_1e2),_1d8(CGRectGetHeight(_startFrame),CGRectGetHeight(_targetFrame),_1e2)); +objj_msgSend(_window,"setFrame:display:animate:",_1e3,YES,NO); +} +})]); +_CPWindowFullPlatformWindowSessionMake=function(_1e4,_1e5,_1e6,_1e7){ +return {windowView:_1e4,contentRect:_1e5,hasShadow:_1e6,level:_1e7}; +}; +CPStandardWindowShadowStyle=0; +CPMenuWindowShadowStyle=1; +CPPanelWindowShadowStyle=2; +CPCustomWindowShadowStyle=3; +objj_executeFile("_CPWindowView.j",YES); +objj_executeFile("_CPStandardWindowView.j",YES); +objj_executeFile("_CPDocModalWindowView.j",YES); +objj_executeFile("_CPHUDWindowView.j",YES); +objj_executeFile("_CPBorderlessWindowView.j",YES); +objj_executeFile("_CPBorderlessBridgeWindowView.j",YES); +objj_executeFile("CPDragServer.j",YES); +objj_executeFile("CPView.j",YES); +p;12;CPPlatform.jt;1237;@STATIC;1.0;I;21;Foundation/CPObject.jt;1192; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPBasePlatform"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_2,[new objj_method(sel_getUid("bootstrap"),function(_3,_4){ +with(_3){ +objj_msgSend(CPPlatformString,"bootstrap"); +objj_msgSend(CPPlatformWindow,"setPrimaryPlatformWindow:",objj_msgSend(objj_msgSend(CPPlatformWindow,"alloc"),"_init")); +} +}),new objj_method(sel_getUid("isBrowser"),function(_5,_6){ +with(_5){ +return NO; +} +}),new objj_method(sel_getUid("supportsDragAndDrop"),function(_7,_8){ +with(_7){ +return NO; +} +}),new objj_method(sel_getUid("supportsNativeMainMenu"),function(_9,_a){ +with(_9){ +return NO; +} +}),new objj_method(sel_getUid("terminateApplication"),function(_b,_c){ +with(_b){ +} +}),new objj_method(sel_getUid("activateIgnoringOtherApps:"),function(_d,_e,_f){ +with(_d){ +} +}),new objj_method(sel_getUid("deactivate"),function(_10,_11){ +with(_10){ +} +}),new objj_method(sel_getUid("hideOtherApplications:"),function(_12,_13,_14){ +with(_12){ +} +}),new objj_method(sel_getUid("hide:"),function(_15,_16,_17){ +with(_15){ +} +})]); +var _1=objj_allocateClassPair(CPBasePlatform,"CPPlatform"),_2=_1.isa; +objj_registerClassPair(_1); +p;18;CPPlatformString.jt;529;@STATIC;1.0;I;21;Foundation/CPObject.jt;485; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPBasePlatformString"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_2,[new objj_method(sel_getUid("bootstrap"),function(_3,_4){ +with(_3){ +} +}),new objj_method(sel_getUid("sizeOfString:withFont:forWidth:"),function(_5,_6,_7,_8,_9){ +with(_5){ +return {width:0,height:0}; +} +})]); +var _1=objj_allocateClassPair(CPBasePlatformString,"CPPlatformString"),_2=_1.isa; +objj_registerClassPair(_1); +p;18;CPPlatformWindow.jt;3848;@STATIC;1.0;I;21;Foundation/CPObject.jt;3803; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=NULL; +var _2=objj_allocateClassPair(CPObject,"CPPlatformWindow"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_contentRect"),new objj_ivar("_level"),new objj_ivar("_hasShadow"),new objj_ivar("_shadowStyle")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithContentRect:"),function(_4,_5,_6){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPPlatformWindow").super_class},"init"); +if(_4){ +_contentRect={origin:{x:_6.origin.x,y:_6.origin.y},size:{width:_6.size.width,height:_6.size.height}}; +} +return _4; +} +}),new objj_method(sel_getUid("init"),function(_7,_8){ +with(_7){ +return objj_msgSend(_7,"initWithContentRect:",{origin:{x:0,y:0},size:{width:400,height:500}}); +} +}),new objj_method(sel_getUid("contentRect"),function(_9,_a){ +with(_9){ +return {origin:{x:_contentRect.origin.x,y:_contentRect.origin.y},size:{width:_contentRect.size.width,height:_contentRect.size.height}}; +} +}),new objj_method(sel_getUid("contentBounds"),function(_b,_c){ +with(_b){ +var _d=objj_msgSend(_b,"contentRect"); +_d.origin={x:0,y:0}; +return _d; +} +}),new objj_method(sel_getUid("visibleFrame"),function(_e,_f){ +with(_e){ +var _10=objj_msgSend(_e,"contentBounds"); +_10.origin=CGPointMakeZero(); +if(objj_msgSend(CPMenu,"menuBarVisible")&&objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")===_e){ +var _11=objj_msgSend(objj_msgSend(CPApp,"mainMenu"),"menuBarHeight"); +_10.origin.y+=_11; +_10.size.height-=_11; +} +return _10; +} +}),new objj_method(sel_getUid("usableContentFrame"),function(_12,_13){ +with(_12){ +return objj_msgSend(_12,"visibleFrame"); +} +}),new objj_method(sel_getUid("setContentRect:"),function(_14,_15,_16){ +with(_14){ +if(!_16||((_contentRect.origin.x==_16.origin.x&&_contentRect.origin.y==_16.origin.y)&&(_contentRect.size.width==_16.size.width&&_contentRect.size.height==_16.size.height))){ +return; +} +_contentRect={origin:{x:_16.origin.x,y:_16.origin.y},size:{width:_16.size.width,height:_16.size.height}}; +} +}),new objj_method(sel_getUid("updateFromNativeContentRect"),function(_17,_18){ +with(_17){ +objj_msgSend(_17,"setContentRect:",objj_msgSend(_17,"nativeContentRect")); +} +}),new objj_method(sel_getUid("convertBaseToScreen:"),function(_19,_1a,_1b){ +with(_19){ +var _1c=objj_msgSend(_19,"contentRect"); +return {x:_1b.x+(_1c.origin.x),y:_1b.y+(_1c.origin.y)}; +} +}),new objj_method(sel_getUid("convertScreenToBase:"),function(_1d,_1e,_1f){ +with(_1d){ +var _20=objj_msgSend(_1d,"contentRect"); +return {x:_1f.x-(_20.origin.x),y:_1f.y-(_20.origin.y)}; +} +}),new objj_method(sel_getUid("isVisible"),function(_21,_22){ +with(_21){ +return NO; +} +}),new objj_method(sel_getUid("deminiaturize:"),function(_23,_24,_25){ +with(_23){ +} +}),new objj_method(sel_getUid("miniaturize:"),function(_26,_27,_28){ +with(_26){ +} +}),new objj_method(sel_getUid("moveWindow:fromLevel:toLevel:"),function(_29,_2a,_2b,_2c,_2d){ +with(_29){ +} +}),new objj_method(sel_getUid("setLevel:"),function(_2e,_2f,_30){ +with(_2e){ +_level=_30; +} +}),new objj_method(sel_getUid("setHasShadow:"),function(_31,_32,_33){ +with(_31){ +_hasShadow=_33; +} +}),new objj_method(sel_getUid("setShadowStyle:"),function(_34,_35,_36){ +with(_34){ +_shadowStyle=_36; +} +}),new objj_method(sel_getUid("supportsFullPlatformWindows"),function(_37,_38){ +with(_37){ +return objj_msgSend(CPPlatform,"isBrowser"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("visiblePlatformWindows"),function(_39,_3a){ +with(_39){ +return objj_msgSend(CPSet,"set"); +} +}),new objj_method(sel_getUid("supportsMultipleInstances"),function(_3b,_3c){ +with(_3b){ +return NO; +} +}),new objj_method(sel_getUid("primaryPlatformWindow"),function(_3d,_3e){ +with(_3d){ +return _1; +} +}),new objj_method(sel_getUid("setPrimaryPlatformWindow:"),function(_3f,_40,_41){ +with(_3f){ +_1=_41; +} +})]); +p;18;CPDOMWindowLayer.jt;2089;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jt;2019; +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPDOMWindowLayer"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_level"),new objj_ivar("_windows"),new objj_ivar("_DOMElement")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithLevel:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPDOMWindowLayer").super_class},"init"); +if(_3){ +_level=_5; +_windows=[]; +_DOMElement=document.createElement("div"); +_DOMElement.style.position="absolute"; +_DOMElement.style.top="0px"; +_DOMElement.style.left="0px"; +_DOMElement.style.width="1px"; +_DOMElement.style.height="1px"; +} +return _3; +} +}),new objj_method(sel_getUid("level"),function(_6,_7){ +with(_6){ +return _level; +} +}),new objj_method(sel_getUid("removeWindow:"),function(_8,_9,_a){ +with(_8){ +if(!_a._isVisible){ +return; +} +var _b=_a._index,_c=_windows.length-1; +_DOMElement.removeChild(_a._DOMElement); +objj_msgSend(_windows,"removeObjectAtIndex:",_a._index); +for(;_b<_c;++_b){ +_windows[_b]._index=_b; +_windows[_b]._DOMElement.style.zIndex=_b; +} +_a._isVisible=NO; +} +}),new objj_method(sel_getUid("insertWindow:atIndex:"),function(_d,_e,_f,_10){ +with(_d){ +var _11=objj_msgSend(_windows,"count"),_12=(_10==CPNotFound?_11:_10),_13=_f._isVisible; +if(_13){ +_12=MIN(_12,_f._index); +objj_msgSend(_windows,"removeObjectAtIndex:",_f._index); +}else{ +++_11; +} +if(_10==CPNotFound||_10>=_11){ +objj_msgSend(_windows,"addObject:",_f); +}else{ +objj_msgSend(_windows,"insertObject:atIndex:",_f,_10); +} +for(;_12<_11;++_12){ +_windows[_12]._index=_12; +_windows[_12]._DOMElement.style.zIndex=_12; +} +if(_f._DOMElement.parentNode!==_DOMElement){ +_DOMElement.appendChild(_f._DOMElement); +_f._isVisible=YES; +if(objj_msgSend(_f,"isFullBridge")){ +objj_msgSend(_f,"setFrame:",objj_msgSend(_f._platformWindow,"usableContentFrame")); +} +} +} +}),new objj_method(sel_getUid("orderedWindows"),function(_14,_15){ +with(_14){ +return _windows; +} +})]); +p;22;CPPlatformWindow+DOM.jt;32978;@STATIC;1.0;I;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.ji;9;CPEvent.ji;8;CPText.ji;17;CPCompatibility.ji;18;CPDOMWindowLayer.ji;12;CPPlatform.ji;18;CPPlatformWindow.ji;26;CPPlatformWindow+DOMKeys.jt;32764; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("Foundation/CPRunLoop.j",NO); +objj_executeFile("CPEvent.j",YES); +objj_executeFile("CPText.j",YES); +objj_executeFile("CPCompatibility.j",YES); +objj_executeFile("CPDOMWindowLayer.j",YES); +objj_executeFile("CPPlatform.j",YES); +objj_executeFile("CPPlatformWindow.j",YES); +objj_executeFile("CPPlatformWindow+DOMKeys.j",YES); +var _1=objj_msgSend(CPSet,"set"); +var _2,_3,_4,_5; +var _6={},_7={},_8={},_9={61:187,59:186},_a={}; +_6[CPKeyCodes.A]=YES; +_8[CPKeyCodes.F1]=YES; +_8[CPKeyCodes.F2]=YES; +_8[CPKeyCodes.F3]=YES; +_8[CPKeyCodes.F4]=YES; +_8[CPKeyCodes.F5]=YES; +_8[CPKeyCodes.F6]=YES; +_8[CPKeyCodes.F7]=YES; +_8[CPKeyCodes.F8]=YES; +_8[CPKeyCodes.F9]=YES; +_8[CPKeyCodes.F10]=YES; +_8[CPKeyCodes.F11]=YES; +_8[CPKeyCodes.F12]=YES; +_a[CPKeyCodes.BACKSPACE]=CPDeleteCharacter; +_a[CPKeyCodes.DELETE]=CPDeleteFunctionKey; +_a[CPKeyCodes.TAB]=CPTabCharacter; +_a[CPKeyCodes.ENTER]=CPCarriageReturnCharacter; +_a[CPKeyCodes.ESC]=CPEscapeFunctionKey; +_a[CPKeyCodes.PAGE_UP]=CPPageUpFunctionKey; +_a[CPKeyCodes.PAGE_DOWN]=CPPageDownFunctionKey; +_a[CPKeyCodes.LEFT]=CPLeftArrowFunctionKey; +_a[CPKeyCodes.UP]=CPUpArrowFunctionKey; +_a[CPKeyCodes.RIGHT]=CPRightArrowFunctionKey; +_a[CPKeyCodes.DOWN]=CPDownArrowFunctionKey; +_a[CPKeyCodes.SEMICOLON]=";"; +_a[CPKeyCodes.DASH]="-"; +_a[CPKeyCodes.EQUALS]="="; +_a[CPKeyCodes.COMMA]=","; +_a[CPKeyCodes.PERIOD]="."; +_a[CPKeyCodes.SLASH]="/"; +_a[CPKeyCodes.APOSTROPHE]="`"; +_a[CPKeyCodes.SINGLE_QUOTE]="'"; +_a[CPKeyCodes.OPEN_SQUARE_BRACKET]="["; +_a[CPKeyCodes.BACKSLASH]="\\"; +_a[CPKeyCodes.CLOSE_SQUARE_BRACKET]="]"; +var _b=[CPKeyCodes.META,CPKeyCodes.MAC_FF_META,CPKeyCodes.CTRL,CPKeyCodes.ALT,CPKeyCodes.SHIFT]; +var _c=objj_msgSend(CPPlatform,"supportsDragAndDrop"); +var _d=objj_getClass("CPPlatformWindow"); +if(!_d){ +throw new SyntaxError("*** Could not find definition for class \"CPPlatformWindow\""); +} +var _e=_d.isa; +class_addMethods(_d,[new objj_method(sel_getUid("_init"),function(_f,_10){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPPlatformWindow").super_class},"init"); +if(_f){ +_DOMWindow=window; +_contentRect={origin:{x:0,y:0},size:{width:0,height:0}}; +_windowLevels=[]; +_windowLayers=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_f,"registerDOMWindow"); +objj_msgSend(_f,"updateFromNativeContentRect"); +_charCodes={}; +} +return _f; +} +}),new objj_method(sel_getUid("nativeContentRect"),function(_11,_12){ +with(_11){ +if(!_DOMWindow){ +return objj_msgSend(_11,"contentRect"); +} +if(_DOMWindow.cpFrame){ +return _DOMWindow.cpFrame(); +} +var _13={origin:{x:0,y:0},size:{width:0,height:0}}; +if(window.screenTop){ +_13.origin={x:_DOMWindow.screenLeft,y:_DOMWindow.screenTop}; +}else{ +if(window.screenX){ +_13.origin={x:_DOMWindow.screenX,y:_DOMWindow.screenY}; +} +} +if(_DOMWindow.innerWidth){ +_13.size={width:_DOMWindow.innerWidth,height:_DOMWindow.innerHeight}; +}else{ +if(document.documentElement&&document.documentElement.clientWidth){ +_13.size={width:_DOMWindow.document.documentElement.clientWidth,height:_DOMWindow.document.documentElement.clientHeight}; +}else{ +_13.size={width:_DOMWindow.document.body.clientWidth,height:_DOMWindow.document.body.clientHeight}; +} +} +return _13; +} +}),new objj_method(sel_getUid("updateNativeContentRect"),function(_14,_15){ +with(_14){ +if(!_DOMWindow){ +return; +} +if(typeof _DOMWindow["cpSetFrame"]==="function"){ +return _DOMWindow.cpSetFrame(objj_msgSend(_14,"contentRect")); +} +var _16=objj_msgSend(_14,"contentRect").origin,_17=objj_msgSend(_14,"nativeContentRect").origin; +if(_16.x!==_17.x||_16.y!==_17.y){ +_DOMWindow.moveBy(_16.x-_17.x,_16.y-_17.y); +} +var _18=objj_msgSend(_14,"contentRect").size,_19=objj_msgSend(_14,"nativeContentRect").size; +if(_18.width!==_19.width||_18.height!==_19.height){ +_DOMWindow.resizeBy(_18.width-_19.width,_18.height-_19.height); +} +} +}),new objj_method(sel_getUid("orderBack:"),function(_1a,_1b,_1c){ +with(_1a){ +if(_DOMWindow){ +_DOMWindow.blur(); +} +} +}),new objj_method(sel_getUid("createDOMElements"),function(_1d,_1e){ +with(_1d){ +var _1f=_DOMWindow.document; +_DOMFocusElement=_1f.createElement("input"); +_DOMFocusElement.style.position="absolute"; +_DOMFocusElement.style.zIndex="-1000"; +_DOMFocusElement.style.opacity="0"; +_DOMFocusElement.style.filter="alpha(opacity=0)"; +_DOMFocusElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMFocusElement); +_DOMPasteboardElement=_1f.createElement("textarea"); +_DOMPasteboardElement.style.position="absolute"; +_DOMPasteboardElement.style.top="-10000px"; +_DOMPasteboardElement.style.zIndex="999"; +_DOMPasteboardElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMPasteboardElement); +_DOMPasteboardElement.blur(); +_DOMEventGuard=_1f.createElement("div"); +_DOMEventGuard.style.position="absolute"; +_DOMEventGuard.style.top="0px"; +_DOMEventGuard.style.left="0px"; +_DOMEventGuard.style.width="100%"; +_DOMEventGuard.style.height="100%"; +_DOMEventGuard.style.zIndex="999"; +_DOMEventGuard.style.display="none"; +_DOMEventGuard.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMEventGuard); +_DOMScrollingElement=_1f.createElement("div"); +_DOMScrollingElement.style.position="absolute"; +_DOMScrollingElement.style.visibility="hidden"; +_DOMScrollingElement.style.zIndex="998"; +_DOMScrollingElement.style.height="60px"; +_DOMScrollingElement.style.width="60px"; +_DOMScrollingElement.style.overflow="scroll"; +_DOMScrollingElement.style.opacity="0"; +_DOMScrollingElement.style.filter="alpha(opacity=0)"; +_DOMScrollingElement.className="cpdontremove"; +_DOMBodyElement.appendChild(_DOMScrollingElement); +var _20=_1f.createElement("div"); +_20.style.width="400px"; +_20.style.height="400px"; +_DOMScrollingElement.appendChild(_20); +_DOMScrollingElement.scrollTop=150; +_DOMScrollingElement.scrollLeft=150; +} +}),new objj_method(sel_getUid("registerDOMWindow"),function(_21,_22){ +with(_21){ +var _23=_DOMWindow.document; +_DOMBodyElement=_23.getElementById("cappuccino-body")||_23.body; +if(_c){ +_DOMBodyElement.style["-khtml-user-select"]="none"; +} +_DOMBodyElement.webkitTouchCallout="none"; +objj_msgSend(_21,"createDOMElements"); +objj_msgSend(_21,"_addLayers"); +var _24=objj_msgSend(_21,"class"),_25=class_getMethodImplementation(_24,sel_getUid("dragEvent:")),_26=function(_27){ +_25(_21,nil,_27); +},_28=sel_getUid("resizeEvent:"),_29=class_getMethodImplementation(_24,_28),_2a=function(_2b){ +_29(_21,nil,_2b); +},_2c=sel_getUid("copyEvent:"),_2d=class_getMethodImplementation(_24,_2c),_2e=function(_2f){ +_2d(_21,nil,_2f); +},_30=sel_getUid("pasteEvent:"),_31=class_getMethodImplementation(_24,_30),_32=function(_33){ +_31(_21,nil,_33); +},_34=sel_getUid("keyEvent:"),_35=class_getMethodImplementation(_24,_34),_36=function(_37){ +_35(_21,nil,_37); +},_38=sel_getUid("mouseEvent:"),_39=class_getMethodImplementation(_24,_38),_3a=function(_3b){ +_39(_21,nil,_3b); +},_3c=sel_getUid("contextMenuEvent:"),_3d=class_getMethodImplementation(_24,_3c),_3e=function(_3f){ +return _3d(_21,nil,_3f); +},_40=sel_getUid("scrollEvent:"),_41=class_getMethodImplementation(_24,_40),_42=function(_43){ +_41(_21,nil,_43); +},_44=sel_getUid("touchEvent:"),_45=class_getMethodImplementation(_24,_44),_46=function(_47){ +_45(_21,nil,_47); +}; +if(_23.addEventListener){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_23.addEventListener("dragstart",_26,NO); +_23.addEventListener("drag",_26,NO); +_23.addEventListener("dragend",_26,NO); +_23.addEventListener("dragover",_26,NO); +_23.addEventListener("dragleave",_26,NO); +_23.addEventListener("drop",_26,NO); +} +_23.addEventListener("mouseup",_3a,NO); +_23.addEventListener("mousedown",_3a,NO); +_23.addEventListener("mousemove",_3a,NO); +_23.addEventListener("contextmenu",_3e,NO); +_23.addEventListener("beforecopy",_2e,NO); +_23.addEventListener("beforecut",_2e,NO); +_23.addEventListener("beforepaste",_32,NO); +_23.addEventListener("keyup",_36,NO); +_23.addEventListener("keydown",_36,NO); +_23.addEventListener("keypress",_36,NO); +_23.addEventListener("touchstart",_46,NO); +_23.addEventListener("touchend",_46,NO); +_23.addEventListener("touchmove",_46,NO); +_23.addEventListener("touchcancel",_46,NO); +_DOMWindow.addEventListener("DOMMouseScroll",_42,NO); +_DOMWindow.addEventListener("mousewheel",_42,NO); +_DOMWindow.addEventListener("resize",_2a,NO); +_DOMWindow.addEventListener("unload",function(){ +objj_msgSend(_21,"updateFromNativeContentRect"); +objj_msgSend(_21,"_removeLayers"); +_23.removeEventListener("mouseup",_3a,NO); +_23.removeEventListener("mousedown",_3a,NO); +_23.removeEventListener("mousemove",_3a,NO); +_23.removeEventListener("contextmenu",_3e,NO); +_23.removeEventListener("keyup",_36,NO); +_23.removeEventListener("keydown",_36,NO); +_23.removeEventListener("keypress",_36,NO); +_23.removeEventListener("beforecopy",_2e,NO); +_23.removeEventListener("beforecut",_2e,NO); +_23.removeEventListener("beforepaste",_32,NO); +_23.removeEventListener("touchstart",_46,NO); +_23.removeEventListener("touchend",_46,NO); +_23.removeEventListener("touchmove",_46,NO); +_DOMWindow.removeEventListener("resize",_2a,NO); +_DOMWindow.removeEventListener("DOMMouseScroll",_42,NO); +_DOMWindow.removeEventListener("mousewheel",_42,NO); +objj_msgSend(_1,"removeObject:",_21); +_21._DOMWindow=nil; +},NO); +}else{ +_23.attachEvent("onmouseup",_3a); +_23.attachEvent("onmousedown",_3a); +_23.attachEvent("onmousemove",_3a); +_23.attachEvent("ondblclick",_3a); +_23.attachEvent("oncontextmenu",_3e); +_23.attachEvent("onkeyup",_36); +_23.attachEvent("onkeydown",_36); +_23.attachEvent("onkeypress",_36); +_DOMWindow.attachEvent("onresize",_2a); +_DOMWindow.onmousewheel=_42; +_23.onmousewheel=_42; +_DOMBodyElement.ondrag=function(){ +return NO; +}; +_DOMBodyElement.onselectstart=function(){ +return _DOMWindow.event.srcElement===_DOMPasteboardElement; +}; +_DOMWindow.attachEvent("onbeforeunload",function(){ +objj_msgSend(_21,"updateFromNativeContentRect"); +objj_msgSend(_21,"_removeLayers"); +_23.detachEvent("onmouseup",_3a); +_23.detachEvent("onmousedown",_3a); +_23.detachEvent("onmousemove",_3a); +_23.detachEvent("ondblclick",_3a); +_23.detachEvent("oncontextmenu",_3e); +_23.detachEvent("onkeyup",_36); +_23.detachEvent("onkeydown",_36); +_23.detachEvent("onkeypress",_36); +_DOMWindow.detachEvent("onresize",_2a); +_DOMWindow.onmousewheel=NULL; +_23.onmousewheel=NULL; +_DOMBodyElement.ondrag=NULL; +_DOMBodyElement.onselectstart=NULL; +objj_msgSend(_1,"removeObject:",_21); +_21._DOMWindow=nil; +},NO); +} +} +}),new objj_method(sel_getUid("orderFront:"),function(_48,_49,_4a){ +with(_48){ +if(_DOMWindow){ +return _DOMWindow.focus(); +} +_DOMWindow=window.open("","_blank","menubar=no,location=no,resizable=yes,scrollbars=no,status=no,left="+(_contentRect.origin.x)+",top="+(_contentRect.origin.y)+",width="+(_contentRect.size.width)+",height="+(_contentRect.size.height)); +objj_msgSend(_1,"addObject:",_48); +_DOMWindow.document.write("<!DOCTYPE html><html lang='en'><head></head><body style='background-color:transparent;'></body></html>"); +_DOMWindow.document.close(); +if(!objj_msgSend(CPPlatform,"isBrowser")){ +_DOMWindow.cpWindowNumber=objj_msgSend(_48._only,"windowNumber"); +_DOMWindow.cpSetFrame(_contentRect); +_DOMWindow.cpSetLevel(_level); +_DOMWindow.cpSetHasShadow(_hasShadow); +_DOMWindow.cpSetShadowStyle(_shadowStyle); +} +objj_msgSend(_48,"registerDOMWindow"); +_DOMBodyElement.style.cursor=objj_msgSend(objj_msgSend(CPCursor,"currentCursor"),"_cssString"); +} +}),new objj_method(sel_getUid("orderOut:"),function(_4b,_4c,_4d){ +with(_4b){ +if(!_DOMWindow){ +return; +} +_DOMWindow.close(); +} +}),new objj_method(sel_getUid("dragEvent:"),function(_4e,_4f,_50){ +with(_4e){ +var _51=_50.type,_52=objj_msgSend(CPDragServer,"sharedDragServer"),_53={x:_50.clientX,y:_50.clientY},_54=objj_msgSend(_CPDOMDataTransferPasteboard,"DOMDataTransferPasteboard"); +objj_msgSend(_54,"_setDataTransfer:",_50.dataTransfer); +if(_50.type==="dragstart"){ +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +objj_msgSend(_54,"_setPasteboard:",objj_msgSend(_52,"draggingPasteboard")); +var _55=objj_msgSend(_52,"draggedWindow"),_56=objj_msgSend(_55,"frame"),_57=_55._DOMElement; +_57.style.left=-(_56.size.width)+"px"; +_57.style.top=-(_56.size.height)+"px"; +var _58=_57.parentNode; +if(_58){ +_58.removeChild(_57); +} +_DOMBodyElement.appendChild(_57); +var _59=objj_msgSend(_52,"draggingOffset"); +_50.dataTransfer.setDragImage(_57,_59.width,_59.height); +_50.dataTransfer.effectAllowed="all"; +objj_msgSend(_52,"draggingStartedInPlatformWindow:globalLocation:",_4e,objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:_50.screenY}); +}else{ +if(_51==="drag"){ +var y=_50.screenY; +if(CPFeatureIsCompatible(CPHTML5DragAndDropSourceYOffBy1)){ +y-=1; +} +objj_msgSend(_52,"draggingSourceUpdatedWithGlobalLocation:",objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:y}); +}else{ +if(_51==="dragover"||_51==="dragleave"){ +if(_50.preventDefault){ +_50.preventDefault(); +} +var _5a="none",_5b=objj_msgSend(_52,"draggingUpdatedInPlatformWindow:location:",_4e,_53); +if(_5b===CPDragOperationMove||_5b===CPDragOperationGeneric||_5b===CPDragOperationPrivate){ +_5a="move"; +}else{ +if(_5b===CPDragOperationCopy){ +_5a="copy"; +}else{ +if(_5b===CPDragOperationLink){ +_5a="link"; +} +} +} +_50.dataTransfer.dropEffect=_5a; +}else{ +if(_51==="dragend"){ +var _5a=_50.dataTransfer.dropEffect; +if(_5a==="move"){ +_5b=CPDragOperationMove; +}else{ +if(_5a==="copy"){ +_5b=CPDragOperationCopy; +}else{ +if(_5a==="link"){ +_5b=CPDragOperationLink; +}else{ +_5b=CPDragOperationNone; +} +} +} +objj_msgSend(_52,"draggingEndedInPlatformWindow:globalLocation:operation:",_4e,objj_msgSend(CPPlatform,"isBrowser")?_53:{x:_50.screenX,y:_50.screenY},_5b); +}else{ +objj_msgSend(_52,"performDragOperationInPlatformWindow:",_4e); +if(_50.preventDefault){ +_50.preventDefault(); +} +if(_50.stopPropagation){ +_50.stopPropagation(); +} +} +} +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("keyEvent:"),function(_5c,_5d,_5e){ +with(_5c){ +var _5f,_60=_5e.timeStamp||new Date(),_61=_5e.target||_5e.srcElement,_62=objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"windowNumber"),_63=(_5e.shiftKey?CPShiftKeyMask:0)|(_5e.ctrlKey?CPControlKeyMask:0)|(_5e.altKey?CPAlternateKeyMask:0)|(_5e.metaKey?CPCommandKeyMask:0); +_4=YES; +if(!(_7[String.fromCharCode(_5e.keyCode||_5e.charCode).toLowerCase()]||_6[_5e.keyCode])){ +if((_63&(CPControlKeyMask|CPCommandKeyMask))||_8[_5e.keyCode]){ +_4=NO; +} +} +var _64=NO,_65=NO,_66=nil; +switch(_5e.type){ +case "keydown": +if(_5e.keyCode in _9){ +_keyCode=_9[_5e.keyCode]; +}else{ +_keyCode=_5e.keyCode; +} +var _67; +if(_5e.which===0||_5e.charCode===0){ +_67=_a[_keyCode]; +} +if(!_67){ +_67=String.fromCharCode(_keyCode).toLowerCase(); +} +_66=(_63&CPShiftKeyMask||_capsLockActive)?_67.toUpperCase():_67; +if(_keyCode===CPKeyCodes.CAPS_LOCK){ +_capsLockActive=YES; +} +if(objj_msgSend(_b,"containsObject:",_keyCode)){ +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPFlagsChanged,location,_63,_60,_62,nil,nil,nil,NO,_keyCode); +break; +}else{ +if(_63&(CPControlKeyMask|CPCommandKeyMask)){ +var _68=objj_msgSend(_5c,"_validateCopyCutOrPasteEvent:flags:",_5e,_63); +if(_67==="v"&&_68){ +if(!_ignoreNativePastePreparation){ +_DOMPasteboardElement.select(); +_DOMPasteboardElement.value=""; +} +_64=YES; +}else{ +if((_67=="c"||_67=="x")&&_68){ +_65=YES; +if(_ignoreNativeCopyOrCutEvent){ +break; +} +} +} +}else{ +if(CPKeyCodes.firesKeyPressEvent(_keyCode,_lastKey,_5e.shiftKey,_5e.ctrlKey,_5e.altKey)){ +_4=NO; +break; +}else{ +} +} +} +case "keypress": +if(_5e.type==="keypress"&&(_63&(CPControlKeyMask|CPCommandKeyMask))){ +break; +} +var _69=_keyCode,_6a=_5e.keyCode||_5e.charCode,_6b=(_charCodes[_69]!=nil); +_lastKey=_69; +_charCodes[_69]=_6a; +var _67=_66; +if(!_67&&(_5e.which===0||_5e.charCode===0)){ +_67=_a[_6a]; +} +if(!_67){ +_67=String.fromCharCode(_6a); +} +_6c=_67.toLowerCase(); +if(!_66&&(_63&CPCommandKeyMask)&&((_63&CPShiftKeyMask)||_capsLockActive)){ +_67=_67.toUpperCase(); +} +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyDown,location,_63,_60,_62,nil,_67,_6c,_6b,_6a); +if(_64){ +_pasteboardKeyDownEvent=_5f; +window.setNativeTimeout(function(){ +objj_msgSend(_5c,"_checkPasteboardElement"); +},0); +} +break; +case "keyup": +var _69=_5e.keyCode,_6a=_charCodes[_69]; +_keyCode=-1; +_lastKey=-1; +_charCodes[_69]=nil; +_ignoreNativeCopyOrCutEvent=NO; +_ignoreNativePastePreparation=NO; +if(_69===CPKeyCodes.CAPS_LOCK){ +_capsLockActive=NO; +} +if(objj_msgSend(_b,"containsObject:",_69)){ +break; +} +var _67=_a[_6a]||String.fromCharCode(_6a),_6c=_67.toLowerCase(); +if(!(_63&CPShiftKeyMask)&&(_63&CPCommandKeyMask)&&!_capsLockActive){ +_67=_6c; +} +_5f=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyUp,location,_63,_60,_62,nil,_67,_6c,NO,_69); +break; +} +if(_5f&&!_64){ +_5f._DOMEvent=_5e; +objj_msgSend(CPApp,"sendEvent:",_5f); +if(_65){ +objj_msgSend(_5c,"_primePasteboardElement"); +} +} +if(_4){ +_3(_5e,_5c); +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("copyEvent:"),function(_6d,_6e,_6f){ +with(_6d){ +if(objj_msgSend(_6d,"_validateCopyCutOrPasteEvent:flags:",_6f,CPPlatformActionKeyMask)&&!_ignoreNativeCopyOrCutEvent){ +var cut=_6f.type==="beforecut",_70=cut?CPKeyCodes.X:CPKeyCodes.C,_71=cut?"x":"c",_72=_6f.timeStamp?_6f.timeStamp:new Date(),_73=objj_msgSend(objj_msgSend(CPApp,"keyWindow"),"windowNumber"),_74=CPPlatformActionKeyMask; +event=objj_msgSend(CPEvent,"keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",CPKeyDown,location,_74,_72,_73,nil,_71,_71,NO,_70); +event._DOMEvent=_6f; +objj_msgSend(CPApp,"sendEvent:",event); +objj_msgSend(_6d,"_primePasteboardElement"); +_ignoreNativeCopyOrCutEvent=YES; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("pasteEvent:"),function(_75,_76,_77){ +with(_75){ +if(objj_msgSend(_75,"_validateCopyCutOrPasteEvent:flags:",_77,CPPlatformActionKeyMask)){ +_DOMPasteboardElement.focus(); +_DOMPasteboardElement.select(); +_DOMPasteboardElement.value=""; +_ignoreNativePastePreparation=YES; +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_validateCopyCutOrPasteEvent:flags:"),function(_78,_79,_7a,_7b){ +with(_78){ +return (((_7a.target||_7a.srcElement).nodeName.toUpperCase()!=="INPUT"&&(_7a.target||_7a.srcElement).nodeName.toUpperCase()!=="TEXTAREA")||_7a.target===_DOMPasteboardElement)&&(_7b&CPPlatformActionKeyMask); +} +}),new objj_method(sel_getUid("_primePasteboardElement"),function(_7c,_7d){ +with(_7c){ +var _7e=objj_msgSend(CPPasteboard,"generalPasteboard"),_7f=objj_msgSend(_7e,"types"); +if(_7f.length){ +if(objj_msgSend(_7f,"indexOfObjectIdenticalTo:",CPStringPboardType)!=CPNotFound){ +_DOMPasteboardElement.value=objj_msgSend(_7e,"stringForType:",CPStringPboardType); +}else{ +_DOMPasteboardElement.value=objj_msgSend(_7e,"_generateStateUID"); +} +_DOMPasteboardElement.focus(); +_DOMPasteboardElement.select(); +window.setNativeTimeout(function(){ +objj_msgSend(_7c,"_clearPasteboardElement"); +},0); +} +} +}),new objj_method(sel_getUid("_checkPasteboardElement"),function(_80,_81){ +with(_80){ +var _82=_DOMPasteboardElement.value; +if(objj_msgSend(_82,"length")){ +var _83=objj_msgSend(CPPasteboard,"generalPasteboard"); +if(objj_msgSend(_83,"_stateUID")!=_82){ +objj_msgSend(_83,"declareTypes:owner:",[CPStringPboardType],_80); +objj_msgSend(_83,"setString:forType:",_82,CPStringPboardType); +} +} +objj_msgSend(_80,"_clearPasteboardElement"); +objj_msgSend(CPApp,"sendEvent:",_pasteboardKeyDownEvent); +_pasteboardKeyDownEvent=nil; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_clearPasteboardElement"),function(_84,_85){ +with(_84){ +_DOMPasteboardElement.value=""; +_DOMPasteboardElement.blur(); +} +}),new objj_method(sel_getUid("scrollEvent:"),function(_86,_87,_88){ +with(_86){ +if(_hideDOMScrollingElementTimeout){ +clearTimeout(_hideDOMScrollingElementTimeout); +_hideDOMScrollingElementTimeout=nil; +} +if(!_88){ +_88=window.event; +} +var _89=nil; +if(CPFeatureIsCompatible(CPJavaScriptMouseWheelValues_8_15)){ +var x=_88._offsetX||0,y=_88._offsetY||0,_8a=_88.target; +while(_8a.nodeType!==1){ +_8a=_8a.parentNode; +} +if(_8a.offsetParent){ +do{ +x+=_8a.offsetLeft; +y+=_8a.offsetTop; +}while(_8a=_8a.offsetParent); +} +_89={x:(x+((_88.clientX-8)/15)),y:(y+((_88.clientY-8)/15))}; +}else{ +if(_88._overrideLocation){ +_89=_88._overrideLocation; +}else{ +_89={x:_88.clientX,y:_88.clientY}; +} +} +var _8b=0,_8c=0,_8d=0,_8e=_88.timeStamp?_88.timeStamp:new Date(),_8f=(_88.shiftKey?CPShiftKeyMask:0)|(_88.ctrlKey?CPControlKeyMask:0)|(_88.altKey?CPAlternateKeyMask:0)|(_88.metaKey?CPCommandKeyMask:0); +_DOMScrollingElement.style.visibility="visible"; +_DOMScrollingElement.style.top=(_89.y-15)+"px"; +_DOMScrollingElement.style.left=(_89.x-15)+"px"; +_4=NO; +var _90=objj_msgSend(_86,"hitTest:",_89); +if(!_90){ +return; +} +var _8d=objj_msgSend(_90,"windowNumber"); +_89=objj_msgSend(_90,"convertBridgeToBase:",_89); +var _91=objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",CPScrollWheel,_89,_8f,_8e,_8d,nil,-1,1,0); +_91._DOMEvent=_88; +setTimeout(function(){ +var _92=_DOMScrollingElement.scrollLeft-150,_8c=_DOMScrollingElement.scrollTop-150; +if(_92||_8c){ +_91._deltaX=_92; +_91._deltaY=_8c; +objj_msgSend(CPApp,"sendEvent:",_91); +} +_DOMScrollingElement.scrollLeft=150; +_DOMScrollingElement.scrollTop=150; +},0); +_hideDOMScrollingElementTimeout=setTimeout(function(){ +_DOMScrollingElement.style.visibility="hidden"; +},300); +} +}),new objj_method(sel_getUid("resizeEvent:"),function(_93,_94,_95){ +with(_93){ +if(objj_msgSend(CPPlatform,"isBrowser")){ +objj_msgSend(CPApp._activeMenu,"cancelTracking"); +} +var _96=objj_msgSend(_93,"contentRect").size; +objj_msgSend(_93,"updateFromNativeContentRect"); +var _97=_windowLevels,_98=_windowLayers,_99=_97.length; +while(_99--){ +var _9a=objj_msgSend(_98,"objectForKey:",_97[_99])._windows,_9b=_9a.length; +while(_9b--){ +objj_msgSend(_9a[_9b],"resizeWithOldPlatformWindowSize:",_96); +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("touchEvent:"),function(_9c,_9d,_9e){ +with(_9c){ +if(_9e.touches&&(_9e.touches.length==1||(_9e.touches.length==0&&_9e.changedTouches.length==1))){ +var _9f={}; +switch(_9e.type){ +case CPDOMEventTouchStart: +_9f.type=CPDOMEventMouseDown; +break; +case CPDOMEventTouchEnd: +_9f.type=CPDOMEventMouseUp; +break; +case CPDOMEventTouchMove: +_9f.type=CPDOMEventMouseMoved; +break; +case CPDOMEventTouchCancel: +_9f.type=CPDOMEventMouseUp; +break; +} +var _a0=_9e.touches.length?_9e.touches[0]:_9e.changedTouches[0]; +_9f.clientX=_a0.clientX; +_9f.clientY=_a0.clientY; +_9f.timestamp=_9e.timestamp; +_9f.target=_9e.target; +_9f.shiftKey=_9f.ctrlKey=_9f.altKey=_9f.metaKey=false; +_9f.preventDefault=function(){ +if(_9e.preventDefault){ +_9e.preventDefault(); +} +}; +_9f.stopPropagation=function(){ +if(_9e.stopPropagation){ +_9e.stopPropagation(); +} +}; +objj_msgSend(_9c,"mouseEvent:",_9f); +return; +}else{ +if(_9e.preventDefault){ +_9e.preventDefault(); +} +if(_9e.stopPropagation){ +_9e.stopPropagation(); +} +} +} +}),new objj_method(sel_getUid("mouseEvent:"),function(_a1,_a2,_a3){ +with(_a1){ +var _a4=_overriddenEventType||_a3.type; +if(_a4==="dblclick"){ +_overriddenEventType=CPDOMEventMouseDown; +objj_msgSend(_a1,"mouseEvent:",_a3); +_overriddenEventType=CPDOMEventMouseUp; +objj_msgSend(_a1,"mouseEvent:",_a3); +_overriddenEventType=nil; +return; +} +var _a5,_a6={x:_a3.clientX,y:_a3.clientY},_a7=_a3.timeStamp?_a3.timeStamp:new Date(),_a8=(_a3.target||_a3.srcElement),_a9=0,_aa=(_a3.shiftKey?CPShiftKeyMask:0)|(_a3.ctrlKey?CPControlKeyMask:0)|(_a3.altKey?CPAlternateKeyMask:0)|(_a3.metaKey?CPCommandKeyMask:0); +_4=YES; +if(_mouseDownWindow){ +_a9=objj_msgSend(_mouseDownWindow,"windowNumber"); +}else{ +var _ab=objj_msgSend(_a1,"hitTest:",_a6); +if((_a3.type===CPDOMEventMouseDown)&&_ab){ +_mouseDownWindow=_ab; +} +_a9=objj_msgSend(_ab,"windowNumber"); +} +if(_a9){ +_a6=objj_msgSend(CPApp._windows[_a9],"convertPlatformWindowToBase:",_a6); +} +if(_a4==="mouseup"){ +if(_mouseIsDown){ +_a5=_ac(_a3,_mouseDownIsRightClick?CPRightMouseUp:CPLeftMouseUp,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseUp,_a7,_a6),0); +_mouseIsDown=NO; +_lastMouseUp=_a5; +_mouseDownWindow=nil; +_mouseDownIsRightClick=NO; +} +if(_DOMEventMode){ +_DOMEventMode=NO; +return; +} +}else{ +if(_a4==="mousedown"){ +var _ad=_a3.button; +_mouseDownIsRightClick=_ad==2||(CPBrowserIsOperatingSystem(CPMacOperatingSystem)&&_ad==0&&_aa&CPControlKeyMask); +if(_a8.tagName==="INPUT"&&_a8!=_DOMFocusElement){ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMBodyElement.setAttribute("draggable","false"); +_DOMBodyElement.style["-khtml-user-drag"]="none"; +} +_DOMEventMode=YES; +_mouseIsDown=YES; +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_mouseDownIsRightClick?CPRightMouseDown:CPLeftMouseDown,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0)); +objj_msgSend(CPApp,"sendEvent:",objj_msgSend(CPEvent,"mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",_mouseDownIsRightClick?CPRightMouseUp:CPLeftMouseUp,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0)); +return; +}else{ +if(objj_msgSend(CPPlatform,"supportsDragAndDrop")){ +_DOMBodyElement.setAttribute("draggable","true"); +_DOMBodyElement.style["-khtml-user-drag"]="element"; +} +} +_5=YES; +_a5=_ac(_a3,_mouseDownIsRightClick?CPRightMouseDown:CPLeftMouseDown,_a6,_aa,_a7,_a9,nil,-1,_2(_lastMouseDown,_a7,_a6),0); +_mouseIsDown=YES; +_lastMouseDown=_a5; +}else{ +if(_DOMEventMode){ +return; +} +_a5=_ac(_a3,_mouseIsDown?(_mouseDownIsRightClick?CPRightMouseDragged:CPLeftMouseDragged):CPMouseMoved,_a6,_aa,_a7,_a9,nil,-1,1,0); +} +} +var _ae=objj_msgSend(objj_msgSend(CPDragServer,"sharedDragServer"),"isDragging"); +if(_a5&&(!_ae||!_c)){ +_a5._DOMEvent=_a3; +objj_msgSend(CPApp,"sendEvent:",_a5); +} +if(_4&&(!_c||_a4!=="mousedown"&&!_ae)){ +_3(_a3,_a1); +} +var _af=NO; +for(var i=0;i<CPApp._eventListeners.length;i++){ +if(CPApp._eventListeners[i]._callback!==_CPRunModalLoop){ +_af=YES; +break; +} +} +_DOMEventGuard.style.display=_af?"":"none"; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("contextMenuEvent:"),function(_b0,_b1,_b2){ +with(_b0){ +if(_5){ +_3(_b2,_b0); +} +return !_5; +} +}),new objj_method(sel_getUid("orderedWindowsAtLevel:"),function(_b3,_b4,_b5){ +with(_b3){ +var _b6=objj_msgSend(_b3,"layerAtLevel:create:",_b5,NO); +if(!_b6){ +return []; +} +return objj_msgSend(_b6,"orderedWindows"); +} +}),new objj_method(sel_getUid("layerAtLevel:create:"),function(_b7,_b8,_b9,_ba){ +with(_b7){ +var _bb=objj_msgSend(_windowLayers,"objectForKey:",_b9); +if(!_bb&&_ba){ +_bb=objj_msgSend(objj_msgSend(CPDOMWindowLayer,"alloc"),"initWithLevel:",_b9); +objj_msgSend(_windowLayers,"setObject:forKey:",_bb,_b9); +var low=0,_bc=_windowLevels.length-1,_bd; +while(low<=_bc){ +_bd=FLOOR((low+_bc)/2); +if(_windowLevels[_bd]>_b9){ +_bc=_bd-1; +}else{ +low=_bd+1; +} +} +var _be=0; +if(_bd!==undefined){ +_be=_windowLevels[_bd]>_b9?_bd:_bd+1; +} +objj_msgSend(_windowLevels,"insertObject:atIndex:",_b9,_be); +_bb._DOMElement.style.zIndex=_b9; +_DOMBodyElement.appendChild(_bb._DOMElement); +} +return _bb; +} +}),new objj_method(sel_getUid("order:window:relativeTo:"),function(_bf,_c0,_c1,_c2,_c3){ +with(_bf){ +objj_msgSend(CPPlatform,"initializeScreenIfNecessary"); +var _c4=objj_msgSend(_bf,"layerAtLevel:create:",objj_msgSend(_c2,"level"),_c1!==CPWindowOut); +if(_c1===CPWindowOut){ +return objj_msgSend(_c4,"removeWindow:",_c2); +} +var _c5=CPNotFound; +if(_c3){ +_c5=_c1===CPWindowAbove?_c3._index+1:_c3._index; +} +objj_msgSend(_c4,"insertWindow:atIndex:",_c2,_c5); +} +}),new objj_method(sel_getUid("_removeLayers"),function(_c6,_c7){ +with(_c6){ +var _c8=_windowLevels,_c9=_windowLayers,_ca=_c8.length; +while(_ca--){ +var _cb=objj_msgSend(_c9,"objectForKey:",_c8[_ca]); +_DOMBodyElement.removeChild(_cb._DOMElement); +} +} +}),new objj_method(sel_getUid("_addLayers"),function(_cc,_cd){ +with(_cc){ +var _ce=_windowLevels,_cf=_windowLayers,_d0=_ce.length; +while(_d0--){ +var _d1=objj_msgSend(_cf,"objectForKey:",_ce[_d0]); +_DOMBodyElement.appendChild(_d1._DOMElement); +} +} +}),new objj_method(sel_getUid("_dragHitTest:pasteboard:"),function(_d2,_d3,_d4,_d5){ +with(_d2){ +var _d6=_windowLevels,_d7=_windowLayers,_d8=_d6.length; +while(_d8--){ +if(_d6[_d8]>=CPDraggingWindowLevel){ +continue; +} +var _d9=objj_msgSend(_d7,"objectForKey:",_d6[_d8])._windows,_da=_d9.length; +while(_da--){ +var _db=_d9[_da]; +if(objj_msgSend(_db,"_sharesChromeWithPlatformWindow")){ +return objj_msgSend(_db,"_dragHitTest:pasteboard:",_d4,_d5); +} +if(objj_msgSend(_db,"containsPoint:",_d4)){ +return objj_msgSend(_db,"_dragHitTest:pasteboard:",_d4,_d5); +} +} +} +return nil; +} +}),new objj_method(sel_getUid("_propagateCurrentDOMEvent:"),function(_dc,_dd,_de){ +with(_dc){ +_4=!_de; +} +}),new objj_method(sel_getUid("_willPropagateCurrentDOMEvent"),function(_df,_e0){ +with(_df){ +return !_4; +} +}),new objj_method(sel_getUid("_propagateContextMenuDOMEvent:"),function(_e1,_e2,_e3){ +with(_e1){ +if(_e3&&CPBrowserIsEngine(CPGeckoBrowserEngine)){ +_4=!_e3; +} +_5=!_e3; +} +}),new objj_method(sel_getUid("_willPropagateContextMenuDOMEvent"),function(_e4,_e5){ +with(_e4){ +return _5; +} +}),new objj_method(sel_getUid("hitTest:"),function(_e6,_e7,_e8){ +with(_e6){ +if(_e6._only){ +return _e6._only; +} +var _e9=_windowLevels,_ea=_windowLayers,_eb=_e9.length,_ec=nil; +while(_eb--&&!_ec){ +var _ed=objj_msgSend(_ea,"objectForKey:",_e9[_eb])._windows,_ee=_ed.length; +while(_ee--&&!_ec){ +var _ef=_ed[_ee]; +if(!_ef._ignoresMouseEvents&&objj_msgSend(_ef,"containsPoint:",_e8)){ +_ec=_ef; +} +} +} +return _ec; +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("visiblePlatformWindows"),function(_f0,_f1){ +with(_f0){ +if(objj_msgSend(objj_msgSend(CPPlatformWindow,"primaryPlatformWindow"),"isVisible")){ +var set=objj_msgSend(CPSet,"setWithSet:",_1); +objj_msgSend(set,"addObject:",objj_msgSend(CPPlatformWindow,"primaryPlatformWindow")); +return set; +}else{ +return _1; +} +} +}),new objj_method(sel_getUid("preventCharacterKeysFromPropagating:"),function(_f2,_f3,_f4){ +with(_f2){ +for(var i=_f4.length;i>0;i--){ +_7[""+_f4[i-1].toLowerCase()]=YES; +} +} +}),new objj_method(sel_getUid("preventCharacterKeyFromPropagating:"),function(_f5,_f6,_f7){ +with(_f5){ +_7[_f7.toLowerCase()]=YES; +} +}),new objj_method(sel_getUid("clearCharacterKeysToPreventFromPropagating"),function(_f8,_f9){ +with(_f8){ +_7={}; +} +}),new objj_method(sel_getUid("preventKeyCodesFromPropagating:"),function(_fa,_fb,_fc){ +with(_fa){ +for(var i=_fc.length;i>0;i--){ +_6[_fc[i-1]]=YES; +} +} +}),new objj_method(sel_getUid("preventKeyCodeFromPropagating:"),function(_fd,_fe,_ff){ +with(_fd){ +_6[_ff]=YES; +} +}),new objj_method(sel_getUid("clearKeyCodesToPreventFromPropagating"),function(self,_100){ +with(self){ +_6={}; +} +})]); +var _101=objj_msgSend(CPEvent,"class"); +var _ac=function(_102,_103,_104,_105,_106,_107,_108,_109,_10a,_10b){ +_102.isa=_101; +_102._type=_103; +_102._location=_104; +_102._modifierFlags=_105; +_102._timestamp=_106; +_102._windowNumber=_107; +_102._window=nil; +_102._context=_108; +_102._eventNumber=_109; +_102._clickCount=_10a; +_102._pressure=_10b; +return _102; +}; +var _10c=5,_10d=(typeof document!="undefined"&&document.addEventListener)?350:1000; +var _2=function(_10e,_10f,_110){ +if(!_10e){ +return 1; +} +var _111=objj_msgSend(_10e,"locationInWindow"); +return (_10f-objj_msgSend(_10e,"timestamp")<_10d&&ABS(_111.x-_110.x)<_10c&&ABS(_111.y-_110.y)<_10c)?objj_msgSend(_10e,"clickCount")+1:1; +}; +var _3=function(_112,_113){ +_112.cancelBubble=true; +_112.returnValue=false; +if(_112.preventDefault){ +_112.preventDefault(); +} +if(_112.stopPropagation){ +_112.stopPropagation(); +} +if(_112.type===CPDOMEventMouseDown){ +_113._DOMFocusElement.focus(); +_113._DOMFocusElement.blur(); +} +}; +CPWindowObjectList=function(){ +var _114=objj_msgSend(CPPlatformWindow,"visiblePlatformWindows"),_115=objj_msgSend(_114,"objectEnumerator"),_116=nil,_117=[]; +while(_116=objj_msgSend(_115,"nextObject")){ +var _118=_116._windowLevels,_119=_116._windowLayers,_11a=_118.length; +while(_11a--){ +var _11b=objj_msgSend(_119,"objectForKey:",_118[_11a])._windows,_11c=_11b.length; +while(_11c--){ +_117.push(_11b[_11c]); +} +} +} +return _117; +}; +CPWindowList=function(){ +var _11d=CPWindowObjectList(),_11e=[]; +for(var i=0,_11f=objj_msgSend(_11d,"count");i<_11f;i++){ +_11e.push(objj_msgSend(_11d[i],"windowNumber")); +} +return _11e; +}; +p;26;CPPlatformWindow+DOMKeys.jt;2336;@STATIC;1.0;t;2317; +CPKeyCodes={BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229}; +CPKeyCodes.firesKeyPressEvent=function(_1,_2,_3,_4,_5){ +if(!CPFeatureIsCompatible(CPJavascriptRemedialKeySupport)){ +return true; +} +if(CPBrowserIsOperatingSystem(CPMacOperatingSystem)&&_5){ +return CPKeyCodes.isCharacterKey(_1); +} +if(_5&&!_4){ +return false; +} +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)&&!_3&&(_4||_5)){ +return false; +} +if(CPBrowserIsEngine(CPInternetExplorerBrowserEngine)&&_4&&_2==_1){ +return false; +} +switch(_1){ +case CPKeyCodes.ENTER: +return true; +case CPKeyCodes.ESC: +return !CPBrowserIsEngine(CPWebKitBrowserEngine); +} +return CPKeyCodes.isCharacterKey(_1); +}; +CPKeyCodes.isCharacterKey=function(_6){ +if(_6>=CPKeyCodes.ZERO&&_6<=CPKeyCodes.NINE){ +return true; +} +if(_6>=CPKeyCodes.NUM_ZERO&&_6<=CPKeyCodes.NUM_MULTIPLY){ +return true; +} +if(_6>=CPKeyCodes.A&&_6<=CPKeyCodes.Z){ +return true; +} +switch(_6){ +case CPKeyCodes.SPACE: +case CPKeyCodes.QUESTION_MARK: +case CPKeyCodes.NUM_PLUS: +case CPKeyCodes.NUM_MINUS: +case CPKeyCodes.NUM_PERIOD: +case CPKeyCodes.NUM_DIVISION: +case CPKeyCodes.SEMICOLON: +case CPKeyCodes.DASH: +case CPKeyCodes.EQUALS: +case CPKeyCodes.COMMA: +case CPKeyCodes.PERIOD: +case CPKeyCodes.SLASH: +case CPKeyCodes.APOSTROPHE: +case CPKeyCodes.SINGLE_QUOTE: +case CPKeyCodes.OPEN_SQUARE_BRACKET: +case CPKeyCodes.BACKSLASH: +case CPKeyCodes.CLOSE_SQUARE_BRACKET: +return true; +default: +return false; +} +}; +e; ADDED Site/Site_Z/Frameworks/AppKit/Info.plist Index: Site/Site_Z/Frameworks/AppKit/Info.plist ================================================================== --- Site/Site_Z/Frameworks/AppKit/Info.plist +++ Site/Site_Z/Frameworks/AppKit/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;18;CPBundleIdentifierS;15;com.280n.AppKitK;29;CPBundleInfoDictionaryVersiond;1;6K;12;CPBundleNameS;6;AppKitK;19;CPBundlePackageTypeS;4;FMWKK;15;CPBundleVersionS;5;0.8.1K;20;CPBundleEnvironmentsA;S;7;BrowserS;8;CommonJSE;K;18;CPBundleExecutableS;9;AppKit.sjK;36;CPBundleEnvironmentsWithImageSpritesA;S;7;BrowserE;E; ADDED Site/Site_Z/Frameworks/AppKit/LICENSE Index: Site/Site_Z/Frameworks/AppKit/LICENSE ================================================================== --- Site/Site_Z/Frameworks/AppKit/LICENSE +++ Site/Site_Z/Frameworks/AppKit/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site_Z/Frameworks/AppKit/Resources/AboutPanel.cib Index: Site/Site_Z/Frameworks/AppKit/Resources/AboutPanel.cib ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/AboutPanel.cib +++ Site/Site_Z/Frameworks/AppKit/Resources/AboutPanel.cib @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;K;21;CPCibObjectRecordsKeyD;K;6;CP$UIDd;1;4E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;6E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;7E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;8E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;2;10E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;11E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;12E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;13E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;15E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;17E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;19E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;54E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;56E;E;E;S;16;IBCocoaFrameworkd;3;461D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;57E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;58E;E;D;K;10;$classnameS;15;CibObjectRecordK;8;$classesA;S;15;CibObjectRecordS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;59E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;60E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;62E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;63E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;64E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;48E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;65E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;66E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;67E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;68E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;69E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;47E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;70E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;71E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;72E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;73E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;74E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;46E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;75E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;76E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;77E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;78E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;79E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;80E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;81E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;44E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;53E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;60E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;82E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;17E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;51E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;39E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;83E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;42E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;52E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;60E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;84E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;39E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;50E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;60E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;85E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;40E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;51E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;86E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;87E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;88E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;89E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;90E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;91E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;93E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;94E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;96E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;92E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;97E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;E;D;K;10;$classnameS;11;CPImageViewK;8;$classesA;S;11;CPImageViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;99E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;100E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;101E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;102E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;107E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;108E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;109E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;12;$atext-colorD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;115E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;116E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;117E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;117E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;118E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;119E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;120E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;6;$afontD;K;6;CP$UIDd;3;121E;K;12;$atext-colorD;K;6;CP$UIDd;3;122E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;123E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;116E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;117E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;117E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;124E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;125E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;12;$atext-colorD;K;6;CP$UIDd;3;128E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;129E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;116E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;117E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;117E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;12;File's OwnerS;6;WindowS;11;ApplicationS;4;ViewS;10;Image viewS;10;Text fieldD;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;17E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;39E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;130E;E;S;18;CPWindowControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;5;ArrayD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;47E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;47E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;42E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;26;{3.40282e+38, 3.40282e+38}S;8;CPWindowS;22;{{72, 57}, {219, 263}}d;1;7S;0;S;13;CPApplicationS;5;$nullS;21;{{0, 26}, {219, 263}}S;20;{{0, 0}, {219, 263}}S;5;$nullD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;d;2;18S;6;normalS;1;1S;24;{{45.5, 16}, {128, 128}}S;20;{{0, 0}, {128, 128}}d;2;37d;1;0D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;104E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;131E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;132E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;134E;E;d;1;4S;1;2S;22;{{16, 165}, {187, 25}}S;19;{{0, 0}, {187, 25}}d;2;36D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;135E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;136E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;117E;E;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;137E;E;S;7;AppNamed;4;3072F;S;1;3S;22;{{16, 194}, {187, 20}}S;19;{{0, 0}, {187, 20}}D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;135E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;136E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;138E;E;S;19;Version XXX (build)S;1;4S;22;{{16, 222}, {187, 22}}S;19;{{0, 0}, {187, 22}}D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;135E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;136E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;139E;E;S;9;CopyrightS;6;windowS;7;CPImageS;8;Icon.pngD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;141E;E;E;S;5;Ariald;2;13D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;142E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;142E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;142E;E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;140E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;143E;E;d;1;1S;24;{"width":-1,"height":-1}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt @@ -0,0 +1,1189 @@ +/* +Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR" + +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/alert-error.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABmxJREFUeNrUWV1sFFUUPjs7u9vttvRvZ1sMygJCSynRF3kh0UQfePGFxESfTEx80AQlEEKMhtlMlRcl1uATCdF3XnzAmBAf1JgYf6KILaVUoD/Q0h9Kf2a2uzu/njMz226b0s7cO5B4k5O72+6e8333fOfMvXdjjuPARiMWi8FWY6hre/WljKYA/yig9Qb9cOeNyQ3/LvIg8NdDbn5+j5Lt3gGigAth2+EdCQKYtgMPBu8pC3/fhjDEIieF8OWWg0hI2gax4bug6wazr3gyAVmpCRz0N9/PR4yZVP++Drm5Z5ciSQ3gTM+BUSyvpI5lWLEKiLoJktQCDvp92H+HmRgTqWt7O+SWnt1KTmoEe3YOzGKFi1BVy4ZWAtGxISe1IrHdyhwjsdCkru5tl1t78kquLQMmZshcjoDQKjPQ1TKI1hzkspSxvPJgYCQ0sVCk/ny2XW47sAsJNYAx+zBiQqsZ01HKovPQI4bxZkMSC0zqjz05ua0bM9SaAX3mMRGqzZhWxkbqEbMx7uz14MQCkfp1d07O7s8r7a31LiEjBCFq1TfnizCzrEOuPgmdLRmv9Qck5iCx9mwzOBh/enA0EDFhqw/8skuSpa6dSq6lHioz81ChFbRsXEUnkF1dMsA8+iZ0nb/ozn8tGoG/S3EoHsWl+ITDdhwZDexNFnXTTP2cz8q5zp1Ke7NHyCiFl1z22GnY+9obEI/H4enDL8K/+TzYX50LJUVvIeehvQ0zhnjuD22esdijtkk/5SX5qa5nlA6Uiz63AHqJrYZSl36ERklySVmWBcWFBSgdPRy+zHDblkynIInEplDOk0PjhZdGZ3tDyQ/Tq2zHJ3wZu1ylGE5ytZZIJEAURdwJCe4cJ98MflwpIg7CQ7gIX2j5WZgVZ3EZHVXA4ehy5ZkpaMhm17wnkKxd0UY8dYjLYqkpC7+jL5fBRMnwjNIYtuLunlVS4yNgsWx6awbhshwApkxVJcczrKlJN9N0lKG5MnoHBE6fhIsxUw6uqGdcADAzVfnSbN0bx2cP50IRLmZStCIWn1Tg7tgaUg7Jj9OnxZ6p1S7FM4S7o2tIxSbG+bPvZoqlplzp2dxFbd2fAEuvuK1d1zTQp6e4d4YeLmb5ecapFVgaGYHUgR5QsUlw+3NdMtaUSd3Ptl3jHdrIHch2HwDt9q1I/JEPk7Wmouh+NCojHhl9bCQSfxZzTUXV/ahBDFwD9Z+r7hyFP4vnORVF96OxcOU716IaNvNzyoZIut/jGB4uVvlFUFMG+hkuGaAhkAzu1DvTCUjEYhHUFKv8LM94xq1kPXR/8iFI+/fDg+FhGDj7MXQby5x7P55tEq0omsWxUz8oK/Dc697Jd+cLhyDd1ARLx99hv8mlwyZh2oTUIw+Ji7bTN6aVQEikkJfAdrBD6zxyBNLpNNTV1bnzvpdfYfZFOAgP4SJ8oUn1LuuF/oXFvknD5CJWGbzuri6dfGku/XuTixDhIVyEj+U2ST1bMgoDC0tIzIBYMulJ0e+IQW3o5HGY/v6Ku5ml+caxd0P7oLgUn3AQHsJ1Np1QQ1+81Pw+1Xg6lVC6tzWc6IgLYJbLXDXGUkMiSncKe/jgktb3acUo9NZ5hM6UdObLTJUcnVpUwWpsOLE9mQL7CRFzZYvxJgwLbqha3zndLBRSomptcWcS9NpZJYcnlzSwnxCxFUKm7RL63DALZ5KiGuSxKYSIo5Lj66raN4FSEFLYPLD4q7elURr5Jf8Uh+JR3I8ScXX957h/IKgS+8KwCu9pKtiZx5OxlQxRDRW1vi8Nu/BBQlAtCL4JEBjiqhRoQNP6JuxoM7aSIfRL/inOaVFwJbeR8XS/lT+ts6a344Lck8m8v4N2IJwZowzFscvdw9cDxeL5i5ZNV8qL7g2mb6fiwhqwn5kWt/yISML/DlkcA184qmmNhzKZt7oaG0EwTfb9nCjCkK7D78Xi19/YzgXyj5ahQzjti73DeLCr4jCk6LMptDrftqG1IoDLk1pRaoLiq7qPIMxhRfAdJ720fPub41zGl1n/X0t0qetbyQ7oWoygtksI5BLOP/grm/ZXOfBJgnygFdFm/dcbZzPgnX6YmhLWyS/lE0j4C53y50TIBmT78qJEV/zZ8MlVauW3XgSPxM7RKIQai9XMVQt8hVFjds1s17yvtS1JiQzBa0nCJu+Z7mi2eM8nv//z+E+AAQCtbACM76VJFwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/alert-info.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACUpJREFUeNrUWmtsHFcVPrOzMzu768d6/fYmdhLnRZzQNO6DqkEpbSSiqK1IhVSUQqEKCooSUSFVwA9EVX40QuqDgiCVgqCQJiK0qJVKKKSgJii0SkWbhyDOy/Hasb3ep/c17zsznDuZNa6x453ZTSSOdHzvzOy9c757HvfcM2Ysy4K5xDAMLERPH74Ai1AMeYvDG5CXI3fNej7m8Fnkk8inkKegSnrliXUz/flkp+QHl2Ra5ny3eeSdyN8IC9yWrpYQdETC0BgMgBDggPeztgB0sRSd9Koa6S1KyuZUXtyXnJZAUsmfcexryEehDuQalGX+D6jdyD9cHWuJ9XW2QCgUAFExQNQMSIkmqHkJiGkBXVRqAJzfBwHWB0E+CP2xMHx2hR+KorQtPjW97VqisB/nehb50G0FZRpGpbsS+Xdre1sH+7qiYIAPMpIOpekiasO0gRDEb2JrzrISHwJj8Q/iAg7bAOeDJsEPK5Z0wLKu6PLRRO63VyZyu/CnTzpmehtA3dDUNuTDg2uWRKORRpjIK1BUCMiaOaOVBccjk0/5L0Be1CFd1NBcWeiLtUM4yG/55PLkaXz8GPKHtwGUsQ+bn9x/Rz+r4/ChRAlk1bDBeCWCypfRXIsyA3mJQDf6492fWdp1+t/xE/j4W46/3RpQu1798Ptrlrbt72xrQVMzIFMsgYY2ZllQF0JcoBPUuKpDR5MAm+9YySfSuV9fvp4O4uMDdQf11M9P7Vze3bK/LdoMY2huBVFDAUy4FUTQbycQnNjAQxcu4MX41M8c/zpWN1Bf/+mJdaZBftkWbYF4DgGVVTCqNDeDChgfg3w2B5HWKMSW9QLLsouOkw3TXjRqmnev72dPn714CB1wEB+NLDbWt9gPvvry31iDkCPrV/UG02hyuaIMmk5sYavh0YsXYWNUhb1bY3YbHxqqeqyq6ZDJi5BTLRhYubQF5agq1DOLZRQ7X/jLnlV93b/gI60wlSnhyrkzuY2BFGz/XD/wPA+apsG7p4fhjNLhag6OY6GnrRGKqSTEJ1JPHHnmi0dullHcFNTjP/4TjyNH7ty0oWcyK4GCDuyWnvl8I8S62lEwDgj6SSqdheffz7ueJxTkobOJh7PnLlxGAdcd/d52w1OaRHTtyeW9PT3TuI/IimpvpK6FCYVAEATw+Xy2L/n5gG1abkmUcC8UOOjuiK4en0rvwFtvegoUaMPfFJqaIZUvg67rniJZrqRCTyczYwH02jCI63noOkyjHG2RCJCx8d2eQD367O97AwJ/L2Y+IMvqgva7GE3mRBhwklk6RwITWEIMT3OJhgJNDQKmXdaDKF+UrpkrUERTtzd1dkCphEJ41BKlTFGxUytqfrSdQJBoAZ7nK6A8ra0tbHIq+RBevuEOFNHvZwMClGTF3gy9UiKvVPJFu01hjlfLfKKkYm4Ypv6+xTUozMbXGBYDmqp6cuwZTZWZGdO1QZX0mjSlIQt+zpbPtU8ZhrlCI5a9t1g1JHfJMnxKU+mybod2r0TnIEGOLnS/a1CmSSLUTHTi3Z9sTZWInRkEg0EoY8DJlpWa5mNMBmUyUFOkyRWozXteYVG9rKbVZiq2xmkmOpWHpsYGuJ7M1zwfjaJ0oXFb4FzlfqcOPG1gxEMmdvitla+nCzfyQARXj/l0DXPPm5jQwj6l6yWi6RF6fLdqPDCNpUs2qEnco2rVFN0aDI36pV50DYoQ9SrR5bto9aiW6EfpWkaGC6NpGE7jnmfUBsrP+FFTdO9UR1yD0jX1qq4iKJOtKVrZ5jyUsLkeRDWlqRpNDq64B6XIp+VS/iu+ULRmk6krYbYvFXOgKdIHrkEpxfS7xenmlyPhVjzlmp79ivpkITEJqHXgMENp7o6Br4qT70KRj/ExkE8nDDE7/lfXoOInXr+66pHvnDU1eSMtYHr1K5Kdgr0Pr4eVS9phZDILB4+dA669x5s/+f1A5DIQVfn7+Ad/mPJy9DB0uXRIyqc3+sJtQPcsL9ra8+gmeGzroH3yvQezk+aGELx4/JonLfE8C+XsJGhS4ZBTQnRfo8gM/eNX+cRoymdRQKZ9DnLLW+9bD9FoFCJ4DqLtA/eu8zQPHt5R7QoU0hPDybPH3/BceClPDBVUqfCSNJ20VW86ZuiGR1JlW0t0PG2vZyXXc1ALoePF3BRoYv4FJTdRrqVEZmXOHT8AbOBrUX9ggPUFXSe4Pzp8CgNEAB7ctBLePzMMz712EqOp4crsOMzKjXIOCqnrH02eOvKbmqtJlKLrt24OtC59L7psg0DLw+Q2hXgbEIZwwW9BNv6vkpyOP5C/cOKTmRX3Uk2ardHWu3Z8uzm2+kWusR0UjcyYxa0ERAs1oYAfsiPnDSJO78qdeed1J0e+KShf1ZH5n2+9mh+/tF8tJCHg9+HOztrVJTx31Z3pvCyLPojbmZRLgC4VfoCAjrbdt7Mqu3XzgUDKffz28wZ5WPQFxp6L9g2wFpqGqqp11RhNg2hAYU0ZMvEh3VTK3y2cP3aw5Z7HlWr3SsbtN1+kcMPah77EhiMHIrFVjVagGRTlRh2iFnD0nRQQrRGCPI1ZyHCKlLO7xUsn3mse/LI0U3j5+L+Vsbp98228c4dYOvPWm0Lf4LWcQQ42tPcOCE3toJt+OzK6BVfxHTvsAwEtNwZiZuIjLTu6Vx0/dx7fp5mmu2ymGk0xDs+9pgvSGlz9had8XGhfuH1JJ9/UAZZfsAuf1FQowLkgKxqhQOyKLe4/jC6CWkyDlJkYNzXxJfnKSfpBO+sEBcvhGQVVrr1GP8YJJhVm5/TpkTrCsHy3v2P1I0wgvI0TGgb4xigEGtsAr4HhgvhLfubrPCZuYOkyWCoCKWWQs3hLPGOp5eN68tIfMQOmOR09AOoOKNPh2X3zBiZvoHyORirMOUz79N8M0AGgmW5lyO20ZfxCP8MJazEV78OJorimYXw/P2t6Fe+LKFIOTDKKAC9YRBtxqq1p5GnqOvSg4FTEiANQd/oVNuvmUwtlHrawmFlZRJlEpi+dpFpEbpjzHiqciJx3gCSda61ue1wdzI9qAbUBAUdzIRpPnHsh5x47p8BEtSA5YEpOX3EWpgLwlpnfzQJFxTyZWWCZWWZaAc7OGW85AlaErJiVNUt4a9bRwnWg8FdpWvONZmanLHPuz9efb975+lDFfffm9/9O/xFgANbLi7lf3e3qAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/alert-warning.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB/BJREFUeNrUWVtsI1cZ/sbXxB7f4ji+29m1t9lsspulUakglUAUJJQ8AYpEFwkhRBGIF7SVqJBBlZD6lKdIeSgI9gEhIVGVB1SKoFqxquBxoVVp2a2yJI2dbLPO1beZ8cyc4Z9xsl3HdmI7zmZzpE/jM55z/vOf//zf+c4MhyZl9earOIEySfiQIOCEi6XZTU3Temnjc4S/WV1BXi6uV+n3LOFPJ+mU6YQnbYDwpm/sq/zQZ78J/9Wv2aj+OiH92J3SI9ULqIy96hqeHHCE/NTrCvr8fXBf+LyNMTbfKxvNcJLL7yoHvOg+HwPYe9BYARznhCuRgrSZnBY2Pp6hZ/78+CLVAzBNW/CNPmsGdw+askQ37kNTV+jPj+CMJ/T/5+k5m9Yje4+ieU7pkToervHh9BQfoxSSV6kuEljtqnyC/kEZ7sR4ipbhSz2w1YCTyCmeBjvHxyLkQJaiVKQosYfQlDI5moVrOKgbytDz0V7n1Ek4lfGcuxyxe0o0+Dw5Itc5BaZAkzdhsT6A78LTTiKTuSfdqTThuicVAqo5MLVC91gjGC3D6ho8KR/6feEXqM1zj8Gp7kCBmB+4OGkzaasUoC0jKvVR2odK/28D0jKx4bB+a4Ham3uVVr2M1IxjKDHtSTqJD7KAKhqDbw0JmnQf/JAGd3J0gtp//0lbfrShavPuJO1JwhLlzO7ewNmhMEhEXIYnGaSq9opOMifmFO0hHUEhavaeH0s5PSJYlfYjViWobUCm5x/AZs3DmxoPUl+ZTm03Qy8URZR2vIw3GaAokXKQy/q0fDpBTMMf31rHck7EcKwPX58OwmTiPrXFiEyEZfjPT2JrUbtOt35DWDxVlU4z87PgpUmnlbSdKhGFa3Ld/7974xP8+verD+sVQcW3vxGq76O6BbN1CYGxp23r79+e5zjMnKagNfSdP8nTbOvkIDXkzT9vi3V9G/WD+aVWwSo5DERt4EPJaZ10To0oaGkthK48Y4Zwl8a1Q0tJacgbjrPW9a3XG3NLIYoncqnchS8R1fvVVbztNJy65olfmPINSVDLaySJKEqq2oCBAUf9AUuvN3kOShWqsA6ez8OfGk+R0nipt+zHtKPAq6o254vTOam8SGlUaknb8Yizrm+j3oriZSKNMpFGgtf1b4bsRNsYSwO6jVQm8NTliNOWgyJu0JFCbknb0WA9F+n1lhRP/SjiJqzsfwhdutq1LuzGKUPfDQ1badl9bMzuYcoh6Ktn0oh+CD5MaSgi9ZvDUEIBP9idLuzYKT2JI+NXbGbxHphIya0qh6qG+BAOOMWOUBqkC8UCULwHf01pkC7UzD1QFKwVZtzh6HQgXIFSpL1Hbk4OjyLoFGC11Mzo1yAvHtlGJw2lvA6fdxMD51ITZPc7h4ypAZ1EytB3gwkvWIGiJBWbUvhB0OgQjbpr+aRfqd6OhGLVMtmhDZlUCNn9RSe6sG2ndIoNXkinPI77UCsbNKPyESp8HwpioX6jX+NqHEfaaEf9q8I2HKYVhEbSEa12Sj6GU0SLB0A7IjLBuIlmLwetKhypwOvyKmyv0bl+7aCdJhNpFFYRThhjuk5INxlbA9pS6aTC56LjaaetugS5sn0ohTel9cAenQfQUTuNSEgRCjBXlhC7nLaptPzbUentLL+rvM/zQjQmEDmsEzlUO5ptHZMjVvzkx5/BM6O2jttCkSEX1hEOF+GNBNvShUeqdPq5MJQkcthepFwq1tZ7hyVk38X0hAlakaIsd96eiSWyv4xgYhRbOU1X8W/T7Wq3Kv3aYDI0FRzYhFrcMKi2PXKohyYSk21QLkqVrtrr0VJLm/D1UX49FT9SFx4WKaJQzIXiFqg7OTpVCLW3GqdUVEkEt7OGSNyL1TvI0PB/q3916jRSmdjFaMTNZaGUdmubYqf5QJAkhuuvSXj+ZQE/WhBRrrCu+tHtK6UCbGIWycuxQ3VhK6cMfRdLCpB37xvUSlTUFd5+V8V7S7Xj/Z2shr/cVrvuy1Aau+uk9HfgCXha6sIWRw/Mn5sI28yFLInLUtdR0uHy1x89eL+z6770/FIrlJ/bWYSH+1u+LzQfdOjWr16c8Ue9r6TPFVDN6xutdKw3i8mkA2Wri5ahhqlnPfjWF8ikUD7WG1ONiMMzaIXABkLlHTouA+/Xna4frfz9l9+jIzQ+vPLcYMpTvQN5e7s2Q8cpZMGSiMHk5sFKJISXs8cnHOJ0q9eLsuMi/vXO1hpVR+huqenbJP3TSnx0KOW3rUHa3DtWHLfQ+JXlld5SIfWpFgtwO7JIjCYjK//NZ+juTxsidfO170ZpAu9OfcXpNOc/glIoniqFtxMtM++AKTKCd/4q6Bvx2P77wn2i4BRFe/n8lUGnXVgl6txTDsaHsicUBmlUYCbBm54YtNH4f/78D25wehz05ceNjc2aJFkZ4/sFUuEFSkSl9p3xSS80TpXG63aVUFWUS7ofX/7hDWaZnZ01LS/n+7Pr3ncji9qXPBE7HA4nzkpRTHYsLe5iNV/5t8Ox3U/+CJZ8Pm+2WJjrxs3cm7kN78gtl/WLJq7/zHhFC0rcLj34x63/7L5hsfS5yJ/qQ/az2R3lt27v3FBk+Q+0K5vOilMcxzGL1Vzudzh3uL2UsQQCAZWWX9HKaauOPn7L7Ky9uTlDTpHg4VRiCEFWuGIsFlC5faLg+RWLyeQ12e0ShzNWJMmuMbbDSqWE8sEHr7P/CzAAN77WZZ8SpakAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUCFtj2rt3L5OVlRXTt2/fmP79+8f0//9/MI2M//79i5WNjY9sxoULFwBPdEPtOkpElQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUeNpi2Lt370yG79+/z2T69u0bA9O/f/8YmP7//w9loRF///7Fw8UphmbohQsXGAACDAAFaUdSlQta6wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH9JREFUeNpi3Lt3LwsDA4M3EFsBsQDL////faWkpDykpaUZ2NjYGJiAAtbi4uIMf//+Zfj27RsDy79//3iBmAEGQFoYQBguAJJFUUGmAMhK2muhiRnIAqAg/Pz7928GWEAxAWWPPn/+nOHXr19glaAg3Pz69WsWIDYD6uADCDAAuvWepGgKK5MAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHtJREFUeNpi3Lt370wGBoYPQHwMiLeyWFlZMfz69Uvg6dOnXs+ePWNi+vbtG8Pfv38ZxMXFGf7//2/N8u/fPwYYALJ5WYCicAEQG10FWQIgK2mvhSZmYAjAAujPnz+gAPoMVgHivHz5EqTiOMuFCxdACj4B8Skg3ggQYACEzZ6gbOTDXgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUCFtjKi0tZbK0tGRiZGQEYxCA0TCAzmdmZsYpB+NLSEgw7d69GwDfyAUd/UzAZgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAINJREFUGFeVjbENwkAQBOf2z+fQEdLJuDIiS9RgiQhEIVT34TdBRPACAd5wtLNr27YFcAVW4Ohmds/MyzzPRAQu6bwsC8MwAOBmdogIXnFJSOqBmf1odKCUsnfjo/IGSil7le72P+XrhiS1cRxxdyQhM3u01pimiczEJd1qrVFrPQH5BFHNEV7zubdvAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIhJREFUGFeVjbENg1AUA89+X1BSRUIKizBPZqAiVSahyhLME/SlvwFNUoUmCAWX1p2tYRjewAuYgEfq+551Xa/Lsow557Ak6rqm6zps35IkAKqqQtIl2eYb22zEVvwQh0VEnN2IiB0iIs4qh7f7yn8btokIbBe3bUvTNJRSkDSleZ4BMvC0ff8ANOUZTP6A0qkAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHZJREFUGFe1kDEKgDAMRf8QcoNSaW/mJHgJJ8WDeJSep0P3LqWtyaCgo2DgLT8vCYRCCAxgFSbBU+99d84t3nswMzSYrbWotSLnDGqtGQFXqQHlDrT7MD4GevL/kV92vB+USimGiG7jiDEu+lcN1dhSSiyMIgwn4zCUe/hU7cUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHlJREFUGFdj2bt3738GBoanQLwAiJtYrKysGH79+iX99OnT6mfPnjGzfPv2jYGRkZFBXFycASiYzPLv3z8GGACyRVn+//8PFwCx0VWQJfD37186aKGJGRgCsAD68+cPKIBeg1WAOC9fvgSpWMBy4cIFkIIXQLwMiGsAfrObQPFrrDEAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAaCAIAAAD5ZqGGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABxJREFUCFtj2Hv8MsOLj78ZHr79QxK+/vw3KRgAe89HUPF0VZwAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiePHxN9PPP4xMDAwMTAz/gZgRiWbAjr/9+o9TDgsGCDAAAzMJ6g6yR1MAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABpJREFUeNpifP/1D+OrT39Jwo/f/SEFAwQYAODeRsIBHh3QAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpi2nfi8vuvf5gYwGDQUwABBgCRZQVstXD5TQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiev/1z74Tl5kYwGDQUwABBgCS+gVsJvl2BwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpinrNoJROvgAgTAwMDE8N/IGZEohmw4x+//+OUw4IBAgwAAtMHPgLjCOMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiXLdl97t375gYwGDQUwABBgBZowUZrYKqmQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpinLNopZCQMBMDGAx6CiDAAH9oAlBHNVNpAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpi2Hfi8osPv5kYwGDQUwABBgCHXwVdauGiRQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpievHh174Tl5kYwGDQUwABBgCJfwVeVOih6QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-resize-control.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAKCAYAAAB8OZQwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF1JREFUeNpUT0EOgCAM6/r/MzceoB/UoKEyJihNljVtRwNT3tQAn5T3zomGckO+YcFp1vWAwqPeUAQtRPyg0MCqLzk4/VqaPfDnlvPRRbeXqh5v1lHq/MB5VT0CDACNvzl3e/9MRwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAL1JREFUeNrEkrsKwkAQRWfDsF0kVYrd/7AwPyCKHytiuaUK/kZIQjrRKq+Ndwpb8wJdOGwzZ+7Msqrve5p72DnHuPdgA6IRzgNcwZmRfDDGbK21pLUeNOu6jrIs2+V5HnDXdUkcx9S2LTVNMygrpUjq0zRN2HsfosHkfcWTZJoji7Ncln1/L4s4Z2zx/jj20td+VVUVMvOkfcUL8FMuRVEQGtBnim9IndTDu0nyqSxLBms0XY0IfoI7OL4FGACS4bkP/RnUSQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMNJREFUeNrEkkEKgzAQRdMkZO9CDHizrgpeotDS0t6j4Kq38DiVSHUZRImxfwrtsmpcNPAYGOblEzKbcRxZ6JFFUSjUE9iBdIbzADm4SiRfkiTZa62ZUmrS7Ps+NcYcqqoSchiGLIoi1rYts9ZOypxzRvNlWWbSex93XTf7nQh7V/Io+dtYcsj5s+ycC5NJDEkmb13yahl/Fiw/sXKxEGKRSB5H6q2ua9rZT/MnNEfz8HJKPjdNo8AWl+oZwQbcwfElwADuQbxR1tcjhAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-mixed-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUpJREFUeNqckj1Lw1AUhk/Sq7WU2LpYKRQHPyq4OEiHdhdRHF39Qf4aRZyEDoIVhYLgorgoNv0wFNRU0/Tek3hOanQItE0vPFwI75M3595ovu/DtEscn9QE7ftEmchO4LwTNeJceJ53sFZY2i0u5yGVnB1rOu4g+/jS3Ht6besCESuLuRy0HAD15Y7/VF0Dzj88mxWWjQ+X51YTzYkEV7AnFCpg4i52BCoFUsWX2RNKIUiJwYP65UXeapkZTYuG+UoLK8Xu5nb5LWgmj+T/5vv6zUbX6qzqCRFtkgPo2fbd+lbpVw6aJckyCKQzCzBjEHOpiOx+9yCZNv6y7A2b5bB55/CoSlt11KxhVoUzM7FPm2dGnPK0MWhWtuv2jYQQsa6JPZ3+lKu22YC+04dwhFFwjvPkXQv08MzqNAVRopfOT1D8SdwSpz8CDAB8Kd6AIP4Z1gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-mixed-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUVJREFUeNqcks9Kw0AQxifJJiaiVMFotBWLXjx59OSTeBJ8CUFR9Og7CD159im8exFUBBWqpkFaa5Q2+yfObKM95JCkAx9Zlu+Xb2d2jTRNYdJi51fXDn6PUXuoegmmjWqhzphS6nRtce6guTQPrs0KyQEX9aewe/jc6VlMSrnvTTlw/9YFLmQhbDMLap4DxBHsh724dJ/oh8Ewoa/PhBR6o2oRx6QQelG1iGMC++Rc6Y2Xxzv4/IjAMIycma7UX25AsNocJSOH8Dj54fYGwtc2mFZ+6pInsLEZw8JKI4N1MtcLKm+mBsH6LNiul4OHPzE47vS/l7hRcnZFW9s7xYPKvOKvZzHJtKlnKcfJlaYtdbKIuEh80zRLg/ik6diRiQ/kot+PIUnoBKpQ5CM/ci0mlTyJv78c1C7+NCgR/I66RB39CjAAFHjbsmAj4HkAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-mixed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUZJREFUeNqckrFKw1AUhk+Sa2wFcaoNLVUpFTs5uugDODo7CX0JQVF09B2ETs4+hAhuOggWO1Q0bUpxENQkvfcknpMYHSom6b38BA7/l//+N9HCMIRplzi7vDbpeUTaI1UzMDapTToVQRCcrNas/bXlChRnzVTS9cfVzlP/4PHZMQQithbLZRi4AOrDTz+qrgH7H3p2i+HSm8+9VaaeSOII5oRCBay8ixmBSoFU+WHmhFIIUmI06N7fwutwANof5pB2ZakOtUYzTiaO4N/ku5sr6HU7oBtiMkmOYX1jE6yVxjccJUuCZTQozC+AVW/CTKE4Afuf7zSf+/EyFyfLOHlreye1a+JVSWdW7tvmzohT3jZGyWrk+17JECLXZ2JOpz/l3LFfwHM9SCr8J/axn7i2wACPR8O+Sdqll1oZgh3SBenwS4ABALu11aydNvk+AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-selected-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAiFJREFUeNqUU1trE0EYPU0n5tLdtcYmaVPabCNaQdOElJbSkL5Ia7F4Af+RbyooBEHQCl4exBfxgljwRSSxoC8WqmJTqmJra6u0SchlszO7zuya1kIa9IPzsN98Z853hrMtpmnif8oX7ve1tJLzJqO3yaVHrwnvTXGMcrQ3IzJGoR5P0M2tLVIrFZ3EMIzTh3s6J/vDIXhc+5qqptNpVEHI/u4I/EqbRBhjyUAwiNUKQEvansS3mZd4/moWSpeKvt5uxAbiAQcny3nNhFajYJQ1xMqXz3hw7w4kfwiSLOPsmXPgG8uEch8Ce1WtpuHWtSsgykEQdxumTk5AUhSL42CUQv+DG5cvoJDPb38L3J++joJuwiW3YzAWhRqJWH3Bc1C+lq4zrK+u4f38PKavXoSm6VYv82IGHz4twHvAj4C/A6PJlNUXEDxOthV+/VyH3BnGRr6Ih3dv4utSDjPPnkDq6ILL7cHE+DgMnon6RoJHKOUqHCE1ghOTp5DJZvFxIYfc4iI8viD36cVYKgmvJFlz9RI8Yinr9oMdPRZFuVLFu7k5gAfP4XTiyKE+9PSq2zM7ZEvZ3r9eA/EEyuUKlr4tQ/G6MTg0sut8h8xAROSEh78rMTSMSrmEaCxu+TQobRhVsXZR06pyKyG7DkdSY7ZCgwww+8GKImHZtZVlVLnXuoVmEHNinvNmCTPY040f3wnHML9U+Ye/ssDxhuPxbwEGAExxWB6CMBpMAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-selected-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhNJREFUeNqUk01rE1EUht9O70ySaRMT7CQTU2tiYiwxftdU0F/iRsW1exeidNOF/gFRChVEwYJBUIKgWwMiFqwgilgCtUmIbdIkte3MvRPPnWpDqY164YW555znfHDP9N1+WsT/nMmrF0f6+tmtjuCXmeM4GtlukC6RYr1AITji2VNWvdHQrNWWV8ITB8LBa/FICF6V9ax6994U1sG0PbGDMAIDBhNCXPF5NHwu12FzsSv4YfYtXr2ZRSAax7BpYGwsd0jCRrXR7lnxe7WMF4UCBsMx6LqO82fH8cMSBuM0ByXYFbRtC/nHj6AFDTDvAM6dPuEmaK7VoQjOIRNIzUzfQbvd2rpLFfIzWIMKjz+I0cR+RPeZrl1yCqc5bdvBUm0JX+dLePLgPqwN7treFV9j/lsFeshAKODH0cwR1y4lOYI3KzQay/CbI1gh8OXzPMoLJRQJHhyKQtM8yJ08BgedblfEMc5t9yMcjeFMbhzvP35CabGKhcVn8O01aU4dxzNpeH0+N+73kRxzK/96ong8gXXLxpd+eu8OoKgqhiNDiIQjWzFd2K0sqI2uI5VMugkqyyvQVQWj6fQ2fxcWYELwHVkPp1LYmJtDMpGA43RI4o+rKtuu2dwyFEXZ5sxmM5tBDt8B0krLtmsKLchUs9mGZckOnL9Kxsl44qaZcMTN9mpLI12gpOY//JUV0kPS9Z8CDACMI0E9p2np0QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-selected.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgtJREFUKFOV0V9Ik1EYBvBzNeiyLrsYddGoJYmmIkl0oYktikzFnLN0xpJBXxYtmqE2dY7JliuGRovQTc3J1FolbWGpodUMYQ2K/tk/MRwEFXkRXTyd98A+GOKyix8f3/s+z+HAYQDY/1ivVCk3bFYP8u86Zh+dVnBt3AKHVNoDk8jQHPm9aVcRNqbn3WK24ce2QOQtYkvLePf9T0pSixPbNDqklxlRUGuaZm1DE/GpTz8R/riMsflfq7J472JLQSl2Vp1F6YVOtPofxZnl5jjuvPmRkudhDOq9ZciokLDHaIHv2QdQjzX2hTD66tuq/NFF5B6uwY6SOmTXmNFx+4mYU4819NzDUGxJ2Kc/hd6n8/I/OXSyEeoD1ciuPo8614A8px47dz2I/rlFuMNRKHPysbv8BHzPF8RMutQLVWE5so6asN/kgHf2i5gT6rEzV0fQE/kMy8ADbD+ox9YiLYqlZvEsqvwSZGrrkWdowmV+OOUSqMcktx+emfeC1BVAZuVpcUCaplI8SY6+AWZfSM7IWd5jRlc/uiZfy447+8Q1s6pMoqizepL2CdRjBocXV8ZfJtG2epBraEZhvQ2d4diKPaEeq7XfgDP0IonjfhTFZheaBidW7BKox45Zr8XbgxHYx+bWjPLUY7qWbpvUPQLL8Ayswdl/ohzlea+DVVx0Kzgn95XDGlCO8oq/2QGjSdgwyFQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK9JREFUKJHFkjEKwyAUhuUNuUED0ms4eZ0eo4VS6NwbFHoRz+CQKwRSyewQiJr3l3Rr0dShw4cSvk/lEUopiV8hY0zDXJmeSQX0q98Qn3CRUh6VUnuttcgBDz46CiEc2rYV8zwL730WePDRUYxxx5vXR6w53h46Kgm+UR/jKVupj0sH9Wlwf3x27bTHaZo2Ras/4g+7D8MgSg+AB5+7B24+O+duXdc9rbUiBzz43J0WHcymW5LxdgkAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUCFtj6tpwjCnYwZTpzodfTP/+/Qfif0x/gRhM/wWx/0JoOBvGB9JoapD1gsy6eu4kADbzQ5rojOveAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEBJREFUeNpi6NpwbCbD3Q+/ZzLd+fCLgenfv/8g4h8D018QAWH9BXP/wlhIXITYX6gONMVoRoGNv3ruJANAgAEAzhtGyJPGg6AAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUeNpi7NpwjIWBgcEbiK2AWIDl379/vqqyEh7qcpIMnOxsDCz///+3FpcQZ3j5k5Hhz/dfDCAVvJ9/MwJV/2MAAZAAAwjDAFjgL7oAmoq/DH//IgmAOH+BggRU/EU3A1nL378gLX/R3IFqBpoKiLX4HAbxC4Yt+D2HaigTUODz71+/GGAqQQJHXz57yvDrJ0jwPziQN7999ZwFiM2AOvgAAgwA2zedN71ws+cAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKdJREFUeNqUkD0KAjEQRr9IWuv1Lt7QG+wttBA8wYoWdhaiNlqsCxbLWsgmmYkZ/4hxQQx8EF7ezCRRo3GRA6hDipCp2tc2v7YGm0OJ7fE06+1qg6pVyAYZvPdDzexhJFBg5n4AjNeSvaYUfBsUA5ISegM57DAi8DCikqcR96C0B3cZzL/Gfkzh9B6EP55Pzgm43L/QWYtzVQqY6/VqIUITsgyZ3AQYACwxo+jE5WFHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUCFtjCquZyKRtbM7ExMjEBCWYmMEkkGYGsZmhNIgPZYNomDiSGmS9qkJsTGv2nQIA4IwFK30tWVsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJhJREFUGJVjDKuZyMbAwFAHxAlALM3CxMTUKCQqXiEsLsHAwsrGwMLIyJgsJinDwMzCwgACIBWirGysDDAAEmAAYRQBZnQBFBXMzMwMzMwYWpiRBdBUgDjMmGYwo5nBjF8FM6otYENR3YHVWnwOI+h9IJ/pNS8w9FhZmBmgqpnmvnr1kkGKi4FBVQgSyPV3nrxkA+IooA4JAD9CEUzrpwlHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUGNONjzsOgWEURM+d+fwRpYTEo1UpFXZiA5ZBZQd2oFJZgwXYh8RPWIBHqET8nrecnMyZG4Px9AqsgRkwSd1en/Pp2Nrnm9Fhl1sKkWVl6o02ETFMUgCgrISkWpLE/SSRXAxeCT8C2yTLnwnJz6W2SLYLHX6x+JvFxR3vtf5B/Pe+FZS5IGmnTjWjWYHtNkfSLC2WK4ANMI+I8Q10tBpanttAIQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKNJREFUGFdj6dpwjI2BgaEOiBOAWJrl379/jaqyEhXqcpIMnOxsDCz///9PFpcQZ3j5k5Hhz/dfDCAVop9/MwJV/2MAAZAAAwjDAFjgL7oAmoq/DH//IgmAOH+BggRU/EU3A1nL378gLShm/EM3A00FxFp8DoP4BcMW/J7D9P7r379+iTKzsMAF5r589rRCRFySgYWVFRzI9W9fPWcD4iigAgkAAWSTEqdsRP0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKBJREFUGNOVjzsKwlAQRc+TtwWJ+3MbVlbiKlJZuwrBxs5C1EaRJGiRTvKZ+yz88IyCOOXhzL0zbjpfBOAEpMDY7csmXKuazSFje8wnvV1ZU1SOZJAQQhh6KVArUOOQ1PeSeI4kvHXBp2ExMLzJXsDsqxGBuxGtPIw4w7oZ+mZIv2rfWtS9w/jjfWtbJJ29FGibhkuRISn169USIAdmwOgGxHqjvh+HJ8QAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAIAAAAL5hHIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCB1j7u/vZ87JyWEuKioC44SEBABISgbNtp1KFwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUeNpi7O/vn8mkoqLCwCQhIcHAxMPDw8D05csXBoAAAwBIogYEjN3jQgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUeNpirKysFODm5o5iY2PTZWFhYWIRFhZOAGJNXl5eBqAgA4uQkJCSuLg4Az8/PwMrKysDEzs7+z0uLi4GHh4eMGb6+fPnom/fvl398uULAwgDBBgAx68Ss6bQhHIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi7Ovrm/n3799/P3/+vPz169dlLCoqKgy/fv1i+vz5s/7bt285WSQkJBh+//7NwMXFxQAESiw8PDxggT9//jCws7PfY/ny5QtY4Nu3b1eB5iwBCDAA1UAuSStF1W0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFRJREFUCB1jrKyslObm5p7GxsbmzcLCwszY09OzS1hY2JWXl5cBKMjAOG/evM8SEhI8/Pz8DKysrAyMS5cu3SUtLe0qKCgIEQCqkAOqmAlU4QFSAQDMoQ//dMukywAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFVJREFUCB1FyjEKwCAMQNHktIUexsMECl27egBvENBB0ASHRIotXfrHx8cQwrrfzOwYY+xIRMvdQVWh1nphjHHNOaH3DqUUx5TSB601YOb/EJEz57w9xYtAc8FdpUUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAAwSURBVHjaYjAzM/vP9OvXLwYmBgYGBqb///8jE9jE8CvBawrzhw8fGBn+//8vBRgAxTY3eCgJOmQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAAwSURBVHjaYjAzM2tg+vXrFwMTAwMDA9P///+RCWxi+JXgNYX5w4cPDAz////nBQwAi5c260232L8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACESURBVHjarI67CgIxEEXPzE4UH4RtLRYhZBs/QRv/v8yvpDSbsdpGBEH2lOdyuVeAlHO+j+M4qereVPUSY7wuyxJaa2jvPbh7cHcADKD3zooBrOlXoXzwu7KF+GN2i6dqZs3dX6sYUkrHWuvJzM4iMlBKOczzfDOzB/AUdxdgBwRA3gMATndJshnCq34AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACHSURBVHjarI4tDsJAFIS/bl5DENSjVtVwgBoMR+N0HGB1FVhE1SZs6RsMrQBBQjpuvmR+qq7rzu7+GIbh1vf9JZRSmKZp0zRNDCHsDUASQO3utb3NDFnArC8Q+NDvyBrgj9k1ni4dkkYze5ok3L3knK8xxjvAycyObdseUkrbStIOEDAC5TUAKxFgMuA5pPMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAAzSURBVHjaYlBTU/vP9Pv3bwYmRkZGBiYGBgYoC0GgiWFTgl8HXIz5xYsXjAz///+XAgwAKVgKjcWlLqMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACGSURBVHjatJAxCsJQEETfrIsJCSkEBeF3gX8BW8HKG3gUwdoz5i5fm5BNYxorEX3lGwaGEXBOKV3btj0CnZvZoa7r0ziOTURg0zQ1QAMgCQOICBZ8ST4Xxht/qfxCfLPU3Z8R8ZCEJFZ9329LKbuqqvaS1gzDsMk5X9z9BtwVEQK619E2DwBfRh57l5xeoQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACLSURBVHjatI4xCsJAEEXfDFMsAS9gs6TZA3gAz+YFPEquYKWHsLBMvxATi4QZGwWxEtHX/cf/8KWUEsAwjuOp7/u9zvPMsiyrlNJWVTcqIjxo3L3RZ4oIAOyl8aFQ3vjL5Bfim6cigogQEZOZ3QzA3a+11mPO+SzAzsymtm0vXdcdJCLWgAMTMNwHACs+L3xeMd7tAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACJSURBVHjarI4xCgIxFERfvh+LwC4RFKxDcgFbwcobeBTB2jPuVQLabPK3SiOCIPvKNwwzDrimlO4hhLOIDCoip3EcL7VWP88z0lrzZubNDAAFaK3RUYCefhXCB78ra4g/Ztd4Kqr6NrNXF5sY476UclDVo3NuyzRNu5zzTVUfwNOZmQMGwAOyDACRI0tKhkhIygAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACKSURBVHjarI49CgIxFIQn4VUL5gA2S65gkdKzeQGPkitY6SGEeIfAyhMCebONu4UWgux088H8uJQSzWyqtd5KKWffWkPvfRdCOHrvDwIAJAFgMLNB3maBWMGiL+Dxod+RLcAfs1s8XTtIqoi8hCTM7Kmq13Ec7w7ASUQ0xvjIOV8cyT0AA6AApnkA8SJiRCHFwrsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAA/SURBVHjaZIvBCYBAEMSGKfS0Fdu4fk6saR8TPwsK9wmEEI/jxFUlB2RAJmlNIkPkZA8ftoN/QGp97nUZmO8AYzNFSPGK8tYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAA8SURBVHjaZIuxCYBAAMTC9e7kJOooP/cXFwsFhW8CIYTjvEbmnKRKVGL7aluiJe0aPiyH/yA8CrCjbvcAE+tBokS7K5QAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACLSURBVHjapI5LDoJAEAWrhx7xdwEjYDIJG4+gmHj/JXeRBTLdbowLXBh1+SqpyhMgdd3lVDdNHWMsNYSw21fVAYjjOKJmFhGJ2QwABbDneAGfA3OfgTfF54r539HP4Ken/kU0qOo05Xx3wIEipbQehtumLJdbESno+37Vtu1RVc/AVdxdgAUQAXkMAA50T0Ivt9NcAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACVSURBVHjanI4xDsIwFEOd8CvEgOiKqBSWLO0JEAsnAY7CGXOEzIWpU0q+GVAlyIKoF0uWn+XF+XK9tV13qDf1PsY42JQSACx3TeOstVtREiBhjKlUtRKSAIDJhar41Bv5CsoGWSJaIDNGfweznvLf0QnIOY8i8hRVRc45Pe59dM71AHASkaP3vg0hrAzJNQACGAGk1wAfU2M6/egpmAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUeNpkjMEJACAMA5OM4Syiqzl4obYoWDCPcOEg6GO6zAyKQASiks4kLynpiVJFJPEX54X5DSy4e9sCDABELwjMR/gd5wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNqkkL0KQjEMRpO0OBQq3F4F50JBHV0FJ9/ARxGcfcY+jA79u4ku0kEvGEighy8HGgSA83a3v7pxPBKR1TwOg3On1prJOYOutRqGhgEgImiQkge86wWQCOATUA9k93uC+sRv6QwwQ9on8C8paa2fpZSH/Fhaee9XKaX10tqNUmoBMcYhhHDh5I037sjHFaPlNqKYBBgAFyshPM4kBT4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJRJREFUeNpitLGz///v37/P796+PXrj+rVepj9//jD8//+fV1BIyI6JicmIBUgwgAAjIyMXUCUXCyMDFPz/D6ZYGKEqYACuBS4A1EtABRO6CsKGEiFAhKHoKhgpNxTmW2BQfmNhYfkO1vLn9+8vTx4/OiIvL38TJNkAlClTVVUNvnTpkiAjMMSlgIL/gPgbEH8GCDAA2UIwblDGBeAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACgSURBVHjapI4xCsJAFAUn2Z9m0UbtjCEXSGNrtPIGOYr3ygUshICdYis5glpYKYTNXxuxiIWo5RuY4QmwzPP5apIksyiK+hKG4XQcxwvANk2DqKolCGyrCoAA6HO8gO8C9b4D3hTfVdT/Hf0Mfnrqv4mKyN217c0YYwEkTdPj5XyqBsNRbozpSVmWVVEUctjvNs45K1mWXeu6XgNbIHwMAL4rWK1r13/GAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACcSURBVHjanI4xCsJAFERn118FxNQaCGlN5wFyFPUOXsAL7RWsvISFzXaCsVFWCPw/FhLQNGKmGRjmDTNZb7Zc1vUun+VNjPHiu64DgOmiKBrv/UqMBEg45zIzy4QkAKB3oRk+9Ua+gmGDHCI2QEaM/g5GPeW/oz2gqklEnmJmUNXHrb0ey7I8OQB7EUlVVZ1DCAdHcg7AACQA99cA7LNl9l3/HpoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUeNpiEhUVPcOkoqJylklTU/Mei5yc3HumR48eCQIEGABLxgeqlrkYjQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiFhUVTWPW19eXYtLU1HzPJCcn951ZSUlJGSDAADTlBJ4jXpdLAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUeNokiEEKwCAMwGAtFqQWj4p7jN/rF/3BYIdd6mA4mbBADgkSUVhWRNwBYKKIVPk5nHMDY4ycUrpyzua9H7jiXHOWUm5mfkFVn9ZaMDPqvW+fAAMAgxAYEA9uUqQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF9JREFUeNoMyjEKgCAUBmB7/mBQtjlEeAAHzxV4yo4SGLg1ifZCocYPvsEYs/feqbV2MfMhvfeb1roCmIUQK5xzdykFKaWJiBZYa5+cs6y1yn+8iDGOP6CU4hDC+QkwABcBJR2ZJ8maAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpiZGdnlwTiBhYWFgtmZuY/jKKiojP5+PhkgfgtGxvbDxYBAQEJILgvKSn5iouL6ycLkHMTKPhHWlr6PQ8Pz0/mzs7OT7du3ZL6+vUrz7dv31gBAgwAuQcYxkfD6eQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGNJREFUeNoAVQCq/wQVFRXN/f39BPz8/Mj5+fmAAy0tLTUNDQ3tBAQEGAAAADIEKSkp3fb29gfn5+fyAgICHAQdHR3v9PT0B/f39wcAAAD1AuPj4xHm5uYRBwcH8mpqaq0CDABLliXpqWUbNwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/knob-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAADRUlEQVRIie2VS28bZRSGn5l4xhPHjY1jN4lrJZAUEhmDuKhkw4oKiajcsgB100WFEF2yYUPX5R+wqFDFIhuKAJWLCAgVIdQFEjtUoTqJExcsFF87GU/GM+PxZxYeOxPLUemmK470ro70nDPvd84Z+D8edkj/IS8Bsi8J6ALCV9fXA8H7wNCHV64sJU5MnVbD2nRYVZKO2665jl1uNOvbH12+nAe8QKH7wiUgtLq6Gj/7+puvLC08sZhJz5BMxEkk4jQaOrWGTumfPfI7m4Wb39z4YWNj4x7QGS4wNgp8/vzFmbOvnrvwwnPPTj+59DhuR1DfNyn+vYfd9hgf11iczxCdmEhEE6lcy3O3iltb9v3gY0Dk4ruX3l4583w8HJlgt1TGMC1sx6UjBLbjYpgW5brO5OQJpmIxRVEjUzd//H5zuPsgXALUS+9/8MzKypmnuiGVfeMAIcSxMg9adGWZ2GT0kWQqY/7+262y7z8AoQBcBtSTM7PLghCWZQ0SjVqN9WtX+fP2H2RzT3PhnfdIJJMAeJ6LqmpMzaSywG16D9zpA4NwRVXDKddzcV1voPVrV2nUKiwsLNCoVfj0k4+P5E3LQlHUJKAGmcOdj0kSmhAghDdImIZOOp1G0zRs26ZSqeB5h3khBF0k1bd5JBxAatm2Y9t2WJYPPyqby2HoOrIso2ka2WwO13WPwB2n1WZotIO2AHSb9f2GaZp4njfQ6mtrpDNzCCFIZ+Y4t/bWkbxpmpgN4x5DoxjsXACdnWL+r5OnZmdD6mHKtAWrb6wRjUQwLYu9Sg03YIth6BS287v0HnLktAig/e0X1+/MP7a0LMtyLBqNAuC5HjvFEqPCMAx2C9t73924vgm4QfioDZV1vdpMn5qfQ5JCiqIcO+e6rlOvVp2vv/rsl6au1wGL3iiOhHcB6tWqu13Il1PJ6biiqlGE6J2/bhfP83BaLQzD4O5Oofzl5+u/lkulMmAOdz58uCTfqnEgCsRefOnl048uLs/H4vFJRQmp7bbn7uu6USzcuXvr55+2AANoAi2G1v/Yq0hvISLAhF9MoTddAmj7sAPfCmcYfBx84H2gSH9B+j+Ljm+BywPe81FF+uqH4Ojf6OHHv8wPry1u2L4DAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/knob-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABBlJREFUeNq0lctvG1UUxn8zY2emTtI2D5PEdWqnlEo0RKVVoVWRKCAhxCNFVBEPIYHEsgv+ADbddNdtF4CQWCAQSLBgA0tQQYi2Saw09EHVUidxEtuJk9SP8dh3xsPmjDtJG2DDlY6ujo7ud8/57rnf0Xzf5/9akfe/+WO7mCamA0bI98U8oBXyHwTfBlSXWBQwgQ7xdQF0gSbQAJT4ra2XbAUPQDuAGNAJdMluSgWegNaAquy2XBZc8gC4LpnuAHYCvWJ9wC6JB6sF3ANKYutAGahLJa0weJBxDOgBBoEhoE/LZsa09aUxnGqKppOkw8phdc35PYlZP314FtgNLElVCDUK8MPglmSYANJU1wa49tO7YyNDh8eeOkFqb5LhZIKF3FJ6bj6Xnr124+TVS99lGH3+S7p6TXkrT6jxAM84NHFGE467JeO0vzq/r5X54aPxF55Jn3r1JUwrRtVpkM3l8TWNeH8/x44+SQfe0M2LPx7X+pIZzez0AEdMAS3j0MQZQ3juBZK0vEH38vcfTrz24sCjBw6QXcxTrtk4jSatVgun0aRcsymWNkgOJ+ndGTNvXvolbuwdux566Abg6kKJKZn3qhu/Hj1ycH9qV98jFFZKuK67rRVWSgwkhjnyWPKwun7xqDx+t+DpwQcx5TG7VP7O0/GBAWq2jVIKpRSF/DLnz53lg7ff4Py5sxTyy+1YzbZJJJOo5dvH5c06hWZDD3WKCaCq6+moabUPK6X44rOPWVspMDIywtpKgc8/ubAp7msGqraRkuawpKX1cLfoAK7jdBtGBKXcdlNXyxskEgksy6LRaFAoFjfFdd3AdZyYuEaAFQl9ihaA5/uVSqXSbVlW+/Djo09Q3ljHMAxM0+TgwVGUUu14vV7H87HFDTRnk1Y0AOjozBaWlzaV/cqp0+wZTuF5HnuGU4yffnNTvJhfhuiOOQFvt2IkpBU2UIsMpidv3741Fh8cvE+L4/Py66fpisWo2jb54irKvU/LrT9vEk3s/10koSY64wWZN4AKUOo5Nn45O7+4cG1mBle5uMqlXne4O5dj9sYt7s7lqNeddmxmapJc6V6m5/j4pOhMRfBaAXhTFG5VMyIb/Sff+nR6erKcmbqCct1tLTN1hatXZ8rx5975SoBXBacZ/NCw5PoA0d1xYqnRqezkz/HS0vyQoetEIlF0XcexbQrLi8xMTzJfLGX2jJ+5YMaHl4AFoCjq2ARa2ntfz4ZVsTOkigmgt3Dx2yOVv2ZOqOpG2ndVtxaJVqJdu7Pd+w79NvDsxLRkvAgURHrtQBUD8O30vD+k51vXvRAVa/+k50GvK6HGlZYqAytSkRWaRI50RUU4/tdJFL7Ak70uF5hSlRYaBg2x5n+doWyZ7EEFxkPGnBf62Q+d/n8PAPiyIDwt8vw5AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAKQWlDQ1BJQ0MgUHJvZmlsZQAAeAGdlndUU9kWh8+9N73QEiIgJfQaegkg0jtIFQRRiUmAUAKGhCZ2RAVGFBEpVmRUwAFHhyJjRRQLg4Ji1wnyEFDGwVFEReXdjGsJ7601896a/cdZ39nnt9fZZ+9917oAUPyCBMJ0WAGANKFYFO7rwVwSE8vE9wIYEAEOWAHA4WZmBEf4RALU/L09mZmoSMaz9u4ugGS72yy/UCZz1v9/kSI3QyQGAApF1TY8fiYX5QKUU7PFGTL/BMr0lSkyhjEyFqEJoqwi48SvbPan5iu7yZiXJuShGlnOGbw0noy7UN6aJeGjjAShXJgl4GejfAdlvVRJmgDl9yjT0/icTAAwFJlfzOcmoWyJMkUUGe6J8gIACJTEObxyDov5OWieAHimZ+SKBIlJYqYR15hp5ejIZvrxs1P5YjErlMNN4Yh4TM/0tAyOMBeAr2+WRQElWW2ZaJHtrRzt7VnW5mj5v9nfHn5T/T3IevtV8Sbsz55BjJ5Z32zsrC+9FgD2JFqbHbO+lVUAtG0GQOXhrE/vIADyBQC03pzzHoZsXpLE4gwnC4vs7GxzAZ9rLivoN/ufgm/Kv4Y595nL7vtWO6YXP4EjSRUzZUXlpqemS0TMzAwOl89k/fcQ/+PAOWnNycMsnJ/AF/GF6FVR6JQJhIlou4U8gViQLmQKhH/V4X8YNicHGX6daxRodV8AfYU5ULhJB8hvPQBDIwMkbj96An3rWxAxCsi+vGitka9zjzJ6/uf6Hwtcim7hTEEiU+b2DI9kciWiLBmj34RswQISkAd0oAo0gS4wAixgDRyAM3AD3iAAhIBIEAOWAy5IAmlABLJBPtgACkEx2AF2g2pwANSBetAEToI2cAZcBFfADXALDIBHQAqGwUswAd6BaQiC8BAVokGqkBakD5lC1hAbWgh5Q0FQOBQDxUOJkBCSQPnQJqgYKoOqoUNQPfQjdBq6CF2D+qAH0CA0Bv0BfYQRmALTYQ3YALaA2bA7HAhHwsvgRHgVnAcXwNvhSrgWPg63whfhG/AALIVfwpMIQMgIA9FGWAgb8URCkFgkAREha5EipAKpRZqQDqQbuY1IkXHkAwaHoWGYGBbGGeOHWYzhYlZh1mJKMNWYY5hWTBfmNmYQM4H5gqVi1bGmWCesP3YJNhGbjS3EVmCPYFuwl7ED2GHsOxwOx8AZ4hxwfrgYXDJuNa4Etw/XjLuA68MN4SbxeLwq3hTvgg/Bc/BifCG+Cn8cfx7fjx/GvyeQCVoEa4IPIZYgJGwkVBAaCOcI/YQRwjRRgahPdCKGEHnEXGIpsY7YQbxJHCZOkxRJhiQXUiQpmbSBVElqIl0mPSa9IZPJOmRHchhZQF5PriSfIF8lD5I/UJQoJhRPShxFQtlOOUq5QHlAeUOlUg2obtRYqpi6nVpPvUR9Sn0vR5Mzl/OX48mtk6uRa5Xrl3slT5TXl3eXXy6fJ18hf0r+pvy4AlHBQMFTgaOwVqFG4bTCPYVJRZqilWKIYppiiWKD4jXFUSW8koGStxJPqUDpsNIlpSEaQtOledK4tE20Otpl2jAdRzek+9OT6cX0H+i99AllJWVb5SjlHOUa5bPKUgbCMGD4M1IZpYyTjLuMj/M05rnP48/bNq9pXv+8KZX5Km4qfJUilWaVAZWPqkxVb9UU1Z2qbapP1DBqJmphatlq+9Uuq43Pp893ns+dXzT/5PyH6rC6iXq4+mr1w+o96pMamhq+GhkaVRqXNMY1GZpumsma5ZrnNMe0aFoLtQRa5VrntV4wlZnuzFRmJbOLOaGtru2nLdE+pN2rPa1jqLNYZ6NOs84TXZIuWzdBt1y3U3dCT0svWC9fr1HvoT5Rn62fpL9Hv1t/ysDQINpgi0GbwaihiqG/YZ5ho+FjI6qRq9Eqo1qjO8Y4Y7ZxivE+41smsImdSZJJjclNU9jU3lRgus+0zwxr5mgmNKs1u8eisNxZWaxG1qA5wzzIfKN5m/krCz2LWIudFt0WXyztLFMt6ywfWSlZBVhttOqw+sPaxJprXWN9x4Zq42Ozzqbd5rWtqS3fdr/tfTuaXbDdFrtOu8/2DvYi+yb7MQc9h3iHvQ732HR2KLuEfdUR6+jhuM7xjOMHJ3snsdNJp9+dWc4pzg3OowsMF/AX1C0YctFx4bgccpEuZC6MX3hwodRV25XjWuv6zE3Xjed2xG3E3dg92f24+ysPSw+RR4vHlKeT5xrPC16Il69XkVevt5L3Yu9q76c+Oj6JPo0+E752vqt9L/hh/QL9dvrd89fw5/rX+08EOASsCegKpARGBFYHPgsyCRIFdQTDwQHBu4IfL9JfJFzUFgJC/EN2hTwJNQxdFfpzGC4sNKwm7Hm4VXh+eHcELWJFREPEu0iPyNLIR4uNFksWd0bJR8VF1UdNRXtFl0VLl1gsWbPkRoxajCCmPRYfGxV7JHZyqffS3UuH4+ziCuPuLjNclrPs2nK15anLz66QX8FZcSoeGx8d3xD/iRPCqeVMrvRfuXflBNeTu4f7kufGK+eN8V34ZfyRBJeEsoTRRJfEXYljSa5JFUnjAk9BteB1sl/ygeSplJCUoykzqdGpzWmEtPi000IlYYqwK10zPSe9L8M0ozBDuspp1e5VE6JA0ZFMKHNZZruYjv5M9UiMJJslg1kLs2qy3mdHZZ/KUcwR5vTkmuRuyx3J88n7fjVmNXd1Z752/ob8wTXuaw6thdauXNu5Tnddwbrh9b7rj20gbUjZ8MtGy41lG99uit7UUaBRsL5gaLPv5sZCuUJR4b0tzlsObMVsFWzt3WazrWrblyJe0fViy+KK4k8l3JLr31l9V/ndzPaE7b2l9qX7d+B2CHfc3em681iZYlle2dCu4F2t5czyovK3u1fsvlZhW3FgD2mPZI+0MqiyvUqvakfVp+qk6oEaj5rmvep7t+2d2sfb17/fbX/TAY0DxQc+HhQcvH/I91BrrUFtxWHc4azDz+ui6rq/Z39ff0TtSPGRz0eFR6XHwo911TvU1zeoN5Q2wo2SxrHjccdv/eD1Q3sTq+lQM6O5+AQ4ITnx4sf4H++eDDzZeYp9qukn/Z/2ttBailqh1tzWibakNml7THvf6YDTnR3OHS0/m/989Iz2mZqzymdLz5HOFZybOZ93fvJCxoXxi4kXhzpXdD66tOTSna6wrt7LgZevXvG5cqnbvfv8VZerZ645XTt9nX297Yb9jdYeu56WX+x+aem172296XCz/ZbjrY6+BX3n+l37L972un3ljv+dGwOLBvruLr57/17cPel93v3RB6kPXj/Mejj9aP1j7OOiJwpPKp6qP6391fjXZqm99Oyg12DPs4hnj4a4Qy//lfmvT8MFz6nPK0a0RupHrUfPjPmM3Xqx9MXwy4yX0+OFvyn+tveV0auffnf7vWdiycTwa9HrmT9K3qi+OfrW9m3nZOjk03dp76anit6rvj/2gf2h+2P0x5Hp7E/4T5WfjT93fAn88ngmbWbm3/eE8/ul8iYiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD00lEQVRIDdVUX2hTZxQ/Sc29N7G1bdKKjda2SKRNa0mZQ18qooXS4SwWN0TFPbiHMZQN9jK2PW6DPQ3ZHhwIgr4ogjZatQXng30XdIWqUVttMU2bJjc3/+7NTZP9zm1yk7tWEMSHHfjd737fOef3ne9853y2YrFIH0rsH4qYef+/5BvelhYbBDpGDcB2DJ7zJeVLWOE5C8Y1YltvHbycLiaTfvz51+HGhqZBUZR6BcHRmcvpTzRNfRyXoxO//PRDEDYqkAdPAaNF1pCXiKWh4eH2g4OHznX5fAPbvC3kcTeQp7GBluMyLcdkmn8TpulQ6N7fE2Pf3A0GZ8Cq/XcDS1rKxCe+ON23t39fcHeg19PRtp3iiRSFo3F6/jpMG10S1Tqd9FFgF7kb6wdEQXgAv4E7o6NPMVo2MMmh4Hw6nE6nu2/3ngsf9wU8gtNF/zzjoCoiKylizEeWcJJ66tvV40kqyu8gPwarOGh0nMC4g+pS5H/n6a+/Pb7Tt6MzreUpsrRM+Xz+rWC9hivt9vv3n/3u+5PsD3CQhpiRY8b/tZ7mpiNFWw2lM5lVC3xjy1G6dOE8TU89pq6eXjr15Vfk9jQZel3XSRBEcjc3H8XCFYAvWGNldeRM7hJEya/BgZ3KuAzi2FKEOjo6jPHiX3+aOrZJZrLkEMRO+G8EzIDNHyxyPYuowk2FQpEKBS7lVUkpMnm9XpIkiTRNo8jiIsgr+tUU22phLQDMY0g1OefKrqrZpKqqdTU1pg11dfeQIseJ10RRJL+/24i8xEErKyvYVE1jzk5mzqvTwjdcSMTkF+l02nLsTw6P0NbWNoOEx09HPrfo2V6JJ7isjI7FaEh15KzQZl+GJrds9QY2OCqqlFqkoeERqnW5KIWLXliMko4qKksiIdOL0NP7mOcA5jGkwrD6XmRuj14Ltu3wHUHut9XV1RlGeeR35tV8ycU6KIpCM89Dj8ZuXL0FDafG3LU6LbyYQl0vjo/d+G0hvJCMxWJGhBzlemB9ZCGSHB+7fg6+S+wP6IAh5ttS6lC+bTewfXNLS2Do8GdnWtvae1xod4cgkN1uRxUVSM/lKJPN0tyr2anxm9f/iITnH8JnDogDZoea5FgkbMAnkQDeoAVo7T8wONTu29m/qb6hVXAIrpyeyygJeW429Gxy8v7EHdgw6RuAiS1vi4UcyuoNOOHchs0Ab1ZuEE4f5zYGcCqigAJYiDGnNeTGYuU957eCSblBRIBPxu82tzfnlzfJAu/2nsPQkNIdcENwRTmAcoNwP3C58cXxKfgRNF5B/Ftk3cgtFu8x+Rc1XeEgwmSoOwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-down-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAa5JREFUeNrcUstqwlAQneTG2DyaaCKUrmxtRDdC6T/5JX6BK7eu3Ll36Qf4C0LWIlQkouZlz4RckRZai6t24HCTO3NmzswdhYh6juN4qqqmQKJpWgzwmQKZECLHfY44yrJMTdNUABpQ0fjydDopjMtvRp7nirTyX2UgiUBotSDDBJw5oEpwEHMAkon5jquCrOm6fq+VlwLSsk/Egsx+PlkFV2S5gG5Z1mNBtm1bj6KIykpMOJWKimplOyxXS5KkijmYwEvhaLfbAX50OHXOKk8OlDgej3dxHBtIYtVqtR5oKjf+0Gq13hqNhgNntNvtlFK+QFXur1ImrBqG4fi+34M6F36SAyNUtpvN5mu9Xg9Xq9X7druNWS23YZpmxXVdH0N6RkJupeCcydLQ/xOCnzgA1ejylCRpKt1gf5T8ZWB4U8KkeSnOQ2JgiD+Tu90u9ft9frrz3eFwoMFgQHjC72Uvl0sKw5C3jjqdDgVBQIvFgtbr9XU9TyaTQrbnebTf72k6nV4/sM1mQ6PRiLDPNBwOC9lXDUzabDYj7DHN5/PfPxVPeDwe/8cNu4n8IcAA4WwjSMEpNj8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-down-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcZJREFUeNrcUr1qwlAUPkluYjQlUIsVO0iHBMG1L1A6lK7t5tZnEB/CydXF1QdwanHq4EvoUHATHQQxNTZ//c5tIkKhtTi1Bz7uveee7/x89ypE1LBt21FV1QfehBAewKsPvGuaFsAfIY6iKBJhGBqACeQFO5MkURnYKtmeEcexqigKA8dEwVkDBJIYgC3JMAOXIaBl4CCQ4pTIiQk+HRVzIJrAhUidObQWIEgHBAeBFDGZ73nlLrgiyBZwAveVJJumafm+n6SVeD4mJWli8TlZwu3mgyCw4TuDHreSXKlU7qbT6TMuOYggkpp2kEuTKVwV5wJwahhGg0eTZARfVqvV+8Vi8bRer7l1HsMHMeTiqQ4G4s7R5QP2ZS6SCUYILpdKpUfLsl5Wq9XrZrPx+HVYMF3XC6jmgnyDyjyD5OzImSHzNQKvOQit0v7K2DeVjrA/Sv4iGIvjeZ5UNBOJARF/JtfrdWo2m/z2Ox9+H7VaLZrNZt+3PR6PaTKZkOu6VKvVyHEcGo1GNJ/PD5u51+vJVovFohyh3+8fLthyuaROp0Pb7Zba7Tbhtx0mWGaDwYDwXWk4HP7+qbjtbrf7H3/YUeQPAQYATq8uCgYHvXQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-down-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc1JREFUeNrcUrtOAkEUvbs7LI9dlleUxAYLCDRU/gCxMLbaGRsbvoQvoKKloqOWcj+AX8AQSgIJISDLPj133SVGE8VQ6SQnM3PnnnvPnBmJiB4Mw6jKsmwBr0KILcCzBdiKojiIe8gjz/OE67oqkALSgoNBEMgMLKV4zfB9X5YkiYFtIGGvAAJFVOQaIRlDxaELKDE4CSQ/InJhQiyBjkmQU6qqXogomIQ0B0kJQHASSB6T+ZxnVsEdQdYAXdO0q5Cs67q22WyCqBPfj0lBVFi83yxguWnHcQz4UAJuQjm1Wu0WGx2HOqpmo1nnRCAL5Pb7fcG27SKKnOXz+UfQlLAzXL1sNpt3s9nseblcsnS+hgUVLjePfFAzmcx5Lpe7R6wMRRQbRuhcrlQqT4VCwZzP5y/r9XrLr8OGgZQBqQaTrpnECJvSp4H7t5Db4gTIp49zTIqHTCeMP0r+YhjelOA0/4qDSQyY+DO50WhQu93mpzvELMuiTqdDeMLvZU8mE5pOp/zrqF6vU7VapfF4TIvF4rg7DwaDUHaxWKTdbkfD4fB4w1arFfV6PcJ/pm63G8o+yrB4jEYjKpVKZJrm75+KHe73+//xh51EfhNgACA6JNNWltjcAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAYAAAAlH6X5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC9JREFUeNpiYGBg4GD09/f/z/T+/XsGpn///kGJv3//IrPQuAh1YOLXr18MAAEGAHdlKH321oJgAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-knob-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARFJREFUeNqEkj1ug0AQhfcvFhC0yLJA2FKKKAUlHUVKUDq3LtK78BmS2r0Ln8c+gC+RLj0U/C+ZsUDCgOORnnal/fTm7c7SpmkIpZQMirbiINbuiSDjwkMeBMHKtu1vzvkazJZXh4Ezgk9RFG00TTsURbEAEWSG8BUMw3ALbseyLElVVbfZWhhp4fu+5zjOJU1TTSk1yid6F5qZprlDEF2nSvSzQpcPBLuM/8LQ+nWY8x7MAVR1XT+EsZo8z39g9e7BrF3x6irLsjO+ArpPqXs67GBKKd9c1z0xxuQj5yKO498kSb667Nilr5uhgAzQHAazNgxjjx3wqPsOo3GDnkFS1/UXy7I+hRDv+JFAzp8AAwCqDI1JAuEnqwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-knob-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASVJREFUeNqMkT9KxUAQxmdf1iAWqQU7+1whBC8QSO0BLCwFL+AJvIGNlQQClhIs7HMDyxiIGpH8N9n4zXP3WbxncOCD2Z3ffju7I4hon35jhiZIcR6GIa8piqJ1UQRBMG/IeX6ZpinKsuwqTdM3Poi6iuP4B/Y8bwMLIci2bVbetu15kiT32P7SN9FKKUVGcCVAVNf1oWVZd77vn4LZY24LNhqGgbquIynlteu6x+AsvnjFbrukDxw4jnOm3YVkp7+CD8D9BKnNS8kuS4FHH5m+/wOTfuByGxx93z+bfNGZXQE/6qnOi86ofWCaN2YwO2GMnaWqqrpomuaVf2IL1hA7vmOKl0VRPGC7hsZ1G/yXGsyhbBzHp7Isb9Frju1PqDM9fwswACNF1jCNRpSTAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAYAAAAlH6X5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNo8i7kRACAMw4xD2twxCPvvRghPKHChkwoDQKeZNd5NiognBlX15fy2Epv3AUZESZDuXtPqEWAAAbEUmbnlEr0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAYAAAAlH6X5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAENJREFUeNoUy8ENwCAMQ1HLIYJThuhW3X+GFlAaqdiHr3cxANwtIi6eLZrZqzx09yktaUufUjwPsKpMaczMLo1fgAEADawUxddyoEQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-left-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbhJREFUeNq0VFtqwlAQnTw0UbCISj+kO9D+dAVxCxZxEYJr6BIEt+EyXINfrS2p0HylKiHmdb09ExILJWkF7cAhgZmcc+fMnShEdE//GLplWY/XIDoej+Fms3l1HMdVVVUoinJk6EhcTC6E8Far1XMURb6maTGIBWtCSJ4lgA+pWq2WpeV6vc7JQ5DGAJOmxL8K4GTk+z71ej2ybbuwBvmP3W53YHIgAnmS2wNIlQWKwMSVSoUmkwlNp1Mqq3Nd95NJ2Ro+PT91Xf9GUQdsyWAwoNFoRN1u90RWFPv9nm1JGCBMsnf2P+1AZxt+BhMPh0PqdDrUaDSYhIrqssNE6JQJBQMdiFyAh1xo0WKxoPl8TtvtNh0uCkstQl7jQTPYdyaGyAkqn6wIy+WSxuMxzWYz8jyPyurq9boppVQgwKB0sJlIalO/33/665o2m820m6IIw/Ady/UCm3zDMA54RpiFyAXO2gPclNIcCO9M03QwihgdxdkWy3RBpCSt3W5b/HIBFAjcBEHgJklyugmZbaS1Wq1LBZjHqNVqt7x36CRAB7mOcpV/URYmBv6AObzFcWyjG+5I/RJgAC85tuyF4bVKAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-left-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcdJREFUeNq0lLtOAlEQhucsC1TEcGvgDWgIlc8Ale0GGl6A14DnwNYHUAtiYWJntNdY0GziskT2fvcf3Ni4J5K4nuTPwGH45razgog0+scjhsNhVgYoy7LDbrfb7Pf7V0VRQiFEBMVqmqZ/hoOhb7fb6yRJdpVKxQU4xHWMQMlJAeI4JlVVpXxd128ANwC3AHWhCPcJF6ZwAJkY7DgODQYDqY/neY+QCajFASCHg3AlSMqRVhCGITWbTVosFjQajWg+nxf62bb9BqDHwBzsw8ZoUwKlhQH4bjKZ0HQ6pV6v951t0fF9/wPAAPKRsZ9/jvMgqYre/fjTbDYjTdOo0+lQo9Ggw+FARX75fOxqtRrxk8NCBWz5ewKlhTNYr9e0Wq3INE2q1WoER+kMAKzzMLlwbgtnjjtWxFI4syJtNhsaj8e0XC7JsiyS+SH7M+yAwjt1XCy0hbMHnIMlot/v/7porVbrWI2kRQ+u694i0Hu9XjdhHcwi4CpO3gPDMKS/AXIO2BOqcSCP+89V5NstythkBXO6CILgEo92lH0dni1XEYlut5uV9F77QLuuYJ/RJhtw3o1QtNvtrMy3J7K/g7kH/IXn8CnAADDPYRM6gNQFAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-left-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc5JREFUeNq0VM1KAmEUvTOOvyCpuHLtTvdt9Q1CcBH4BoLP0Dv4CG19gGoRLYRcRStXZSAuhKZJzSbnv3MmMYiZCrILh0/n3jn33nPnfoqIHMs/mtJoNIJ9EPm+v5rNZpfz+fxeVVVbURQHcDU4/kzued58PB6f2bb9lEgkTBDbeOwikferBHhRUqlUbPGTyeQcMTrIX0BqAg7zAsG3CVCZmKYptVpNptNpZAz8N8vl0iD5NsGG0gAe4KtMEAUSJ5NJ6Xa70uv1JC7OMIwHkL5RGlbPU9O0T0R1QEmazaa0222pVCo7sihbrVZLEFusHISb7W/qzy58jTJ8NRK3Wi0pl8uSz+dJIlFx22LW6NThl0OgA5787wHREg0GA+n3+7JYLMLhIjBWIvjTHCaHTd1ZOZIQDqHFVTYcDmU0Gkmn0wm7iYvL5XIH6/Va5U6Fi8XBonqQh0NW6vX6j4tWKBTCbqLMsqxrLNcFZHpMp9MGzlfMwmIXv94DfCmxPhAeZjKZW8ziFV2+UX9WTl8QBMo+NlktFotHuq6fIokTfBhna4VzKJVKJ3ggfwEsn81m6zh1JHlGB7u7TqlWq8E+b0/IdOU4ztB13TveR+8CDAA4ZHMC9dTxrwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-right-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcRJREFUeNq0VEtuwkAM9WQCoQRICK3aErWLSCBRpScox2CPOAg7rsAxWHMVVgguwEd0gYDM9DlNFhVJP4JasjyTxO95nj0RRPRK/2hmrVbztNYGu1LKbDabtu/7bSFE6RoEwnXdNwALrJlEYl2AWWEYvhiGcXMpgSyXy48AilCxwl7zwyiKCGTvlUrlHpGyfL/fk5SS8t6nLqvV6h2DwzWI4ggTu91OQz4yTbOWldhqtWixWMQkyMkncBynwcBwzeCpdNwTRIVTPGQlDodD6nQ6NJvNaL1eE/LjxDOCer3ucQUMnhIkTZeHw8HwPM/PIhgMBhQEAXW7XSoWizSfz1NpvzgUMCP1aUYCrhLJ1Ol0ijgpy3AyYgk59nq9uCfT6fR8TKEhg4lERwGiuOHcCEwT77PHD9/jPS2XSxqNRvEJMu8B65+MqE5kYv15bAUmzMo7wXa7pfF4TJPJ5PuLxkDphoETl+y2bd/mnaDf79Nms/n5JqNCvsECehtYy+PxWEA0Mb4u+vOUR7BarX73q0iBEXldgFuQrQSCdh74n/5FXDGAUgILujcgTQiJSjxmFxNw9dxky7IcVP2M6oN0hq9hHwIMAA2mcW+/QfMYAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-right-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc1JREFUeNq0VE1rwkAQnc0mJrFqFKEIllJKWwqV1J5KobdevXirP8WfIP4Pj+q/8SDVYy+iVgTTxCR9o/Fk0g+0A481cee9eTO7EUTUoH8MNZfLXYVhqAJaEAR6oVA4LRaLNSFE/hgC0jTNR6w+CBnBarVyF4vFG4Qv8d6EMB0CmU6nHxRF8UDusRAQwgkB74Zh2EmJrusS8n4WyGazdyBfswMk8BrwH3ASwp3Au7O4RNu2aTweb0Q4EgUsy7phYmDTIuxlKNFcPLi4j0tstVpUqVRoMBjQbDZLFFIRDtoh8SDZxXZPmELCp+M4H9yuuCiVSlQul6larVK/36dut0vYv3+KEC5IFECNyGXUsjXC830/ViCTyRAOwmZtNBq0XC6p1+vtC0gpecAKwOQCQvzsb5SkFEkOsIc0TaPRaETNZpOGw2H8PeDeR70LeAZiqyR4DnBnJTmYz+fUbrep0+l8f9G4mF1RIObh8jxSDMRtkoN6vU7T6fTnm4wKVZ4B+s2/dc/z0lhN2L+Amackgclk8rtPBYg1EGpYDeAEyKH6PNpTSyL/07cIFZsgSoHYBLKo+lrX9VcW4XN8sAC3hdsEnIP8GXg5RuW7+BJgAINQm2YEYuEWAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-right-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdlJREFUeNq0VLFOwlAUve1rqW1py0AMAWOMsUZi0DgZEzdXRgad+BI2foHPYCT8CosEJgcSoLAgpa3nFlikFQ34kpvb19d3zr3nvFeJiN7oH4di2/ZVFEUKQg3DUCsWi6elUqkqSVLuGARC1/VH5ACAHOF8Pl+ORqP3fD5/ifc6iOmQEIZhPMiy7APcZyJEFAQBL35ks9m7tI2LxYKEEPsJLMu6BfiKOwAR55AX0EkE+SRFUc6SNrquS4PBICbBnnQCx3GuGRgRS4QOOGT2BdlHF/dJGxuNBpXLZer1ejSZTAj7Y82/f4cClQXMFZgI7mL9TZTBhs/ZbOYVCoVE8/g9DgNVKhXqdDrU7XbJ9/3dU4SxBIGMUDbgYiPZCsNnP5IGOiNIGOdarRZ7wiQ7BNCQDZYRDC6BiOcBT1RV5XkiAeuOdRoOh9RsNqnf7yffA9Z+o13IHkhrJol9wAlz0jrwPI9arRa12+2fLxoXsy0KwGwu+5HhME3zJq2Der1O0+l0/01GhQp7AL35WYNRBrKO43sBf57SCMbj8e9+FQBWAaginyBMhA3ZciCopoH/6V+EinUAZQCsIyzo7kKaV0iU43N8MAHLwlnTtHNU/YzqX7aX5BjjS4ABAEDnkWqhfTpFAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-up-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZJJREFUeNrUlMtrwkAQxiePxiZ48FHTggUvvaZ49uTRiwgW8Spe/XuVHgslB0tTQoIk5rX9JiSQqqXYXuzCZJbZ+e1OJt9GIiJrOBw+ZVlGh5am6Rd/aDL9YVwgLISgIAh+B0uSRJPJhJIkOQ/m7o7HY5pOp9Tr9c6DW60WzWYz6na7tFqtvj39CI7jmBaLBXU6nXwTy7JoNBrl3/VHuN/v02AwoHq9TpqmUaPRoOVySaZpHsHqYWC9XtN8Pj+psH8gksuGj7odRdG767pvvu8H0PcVh3Rdv4bdybJ8cxJGYrLdbl9s23ag6xiJKcIZ5iIMQ99xnI9ms2kahvFQcmoBBpvN5hlJoaIoe4AMJwBzuMhRPM+zd7ud2263HxEyFDxu+QQshAD2gCNVVSP4BD5m4zlXgo1SHhCMC/Xd5zCEr2Mx4hPLZPgUvmoZ1llmAvqPa7WaphZ3l0tMi93zJJ6XUFk6r/FPgu86+NcSLptTNVFswiYqjeXcGNV7JSzKBJ5XQFEYlysBzLgaeAmvGn4KMABFtPy+67Pl0wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-up-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZRJREFUeNrslL9OwlAUxs9tSzHKAARSEnbioHQicWF2ZGpA4gN0553cfQM34+ykMTFG4mgbobS0va3fKcU/SKJoYhwk+fgup+d3enpuL4KIjkzTPEmShFYlpXznq1LoB58/CKdpSmEYfg8uFAo0GAyyYW0E8yQty6J+v0+tVmsz2DAMGg6H1Gw2aTQafR2O45hs26Z6vU7VapXa7Tb1er1sBp/CnU6Hut0ulUol0nWdyuVyVqzRaHyAxf8b9ouwtmafrzzPuwyCwMHebiM00TStAplY766FkRi4rnvmOM61EMJXFGWOsMQ6wVY9+L5/UywW91DkEPGtFxjg43g8Po2iyFFVdQJwBgUAY4hPhkCOjq4uoFscmmPEaiq+9jkJlR0AT4CnqD6Fz+AsH2vuJEReiCKsO6wPMhg/KrjosZDsITmAz+GsMFeE63Jx6BIPvpO1jSpzVl49hnNixACLn3uRJiQfEHiK9s+XMP9lZM/3VigQ50pe55ryIBXc/X4Jyzwh5buwuEWO5VoOTXIncBVynwUYAA6xEqaxcbksAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-up-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaZJREFUeNrslD1PwnAQxq8vKVIZKAgLA6uDjYyGiU0WQkLCYOJAWPle7n4DN+NsQqIxMcZgwoA0lNLy75vPYfEFNAZNjIMkD9fc/37X6/EUiYiOarXaSRRFtKowDN/FVcn0g88fhOM4Jtd1vwdLkkTNZpOCINgM5u02Gg1qtVpULpc3g3O5HLXbbSqVStTr9T69+xrs+z51Oh0qFAqLJqZpUr1eX/yuX8KVSoWq1SplMhnSNI2y2Sx1u10qFovre/l32C/C6mpCCHFlWdalbdtj+FtHyk6n0wa0L8vy7ocwCr3hcHg2GAyu4WsXhXN2Kq4jz/MeRqPRjWEYe7quHyK/9QIDfOz3+6coGiuKYgOcQR7AAArZD6jRJpPJheM4t/l8/hi5HQVfJhTgYAxgAniqquoUcYbIcnHNkwg0EjCMgEHu4L6DBQzjGzh0WCh2UOwhzhFZIpGPc54igv+dVCq1rSbv7pyVdA8QudBngMXP/VwmhfwngRijwfkSFjw6H74VGgSJote9xrxIGePfL+EwKYj5LiwekXOJlksLeRJEBY9qPQkwAH6xFG4uskBeAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-knob-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNqUUL1qwzAQ1vkfAu7YxU/Sx/BrZOnWtc+QN8iSsdCxe/HYLoVMBmGoQwZjE2PLxJbVO2GBKIU6go87Sd93d98BYyxK0/Rc13UspWTzPGuYnKKdm/9xHIWDYsznwnEoXX9Q863FWPHN9/3VQqUUm6bpXYurqtqFYdh5nrdWLJqm2ZNYZVl2EkJsgyBg/xWgrn3fP3ddx13zmOf5MUmSzyiKHpBwZxZDZMtn2bbtU1mWr3i9GDExFOc8R8IhjmPABW5c170HABJ9DcPwUhTFI1r8QG6LEPBrKrJBBWl7wRJNA4kYEdclSvjDFixwLOipLehJwfZ06/kRYABTY58KWRsFmgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAYAAAAB3PQ6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUeNpiZGBg4AgKCvr+7t07hn///sHx379/4TQyGyb/+/dvBoAAAwB0aihkcGml8AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-knob-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARBJREFUeNqUkbtKxEAUhudkZieERSQIQSFWKSwt04gpxFha+QA+gtY+h4XPYGdlY+Mr2FsETGERMOR+Gf8ZRllWi90fPphJznfOZELsb8jiWMg+V2C26LWiNVEXcyCAtDj2nZZ6ywgmWhNFFEV7YRjeKqXO5nk+HseRdV331jTNa5ZlD1VVfaKuAi2tiIskSc49z7tv2/YQAtPiNE0MTQzYfxRFcZfn+Qvqv7j9JpGm6ZXruo8Qd/u+N8WYblhZ70gpL1GXlWX5rmUnjuN93/ef67qWwzD8Sv+hwzk/xZAnc6NBENzgmEt9zE1CRB6GXRsZnS70xE0DmQkhToyMHOmL2SZocPDzDxdsy0BefgswANTzkXd08tnFAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAYAAAAB3PQ6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADlJREFUeNosyrsNACAMQ8F820gMwv67kQQwEsXpuTAT0YyIISKlqgnL3d+u3w0HP+puBslMQ+0KMACg5xR+0/xvkgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAYAAAAB3PQ6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNoMyrENACAIBVEEiVYM4VbuP4OKQRJ/cXnNFSKaZjaY2UVko6WqBzq88KHER5kpqEZEg/0LMACqFRSole+PrAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNpiMDMz+8/069cvBiYGIGD6//8/MoFNDL8SvKYwf/jwgZERyJICCDAAxTs3eXOW1tsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNpiMjMz28/069cvBiYGIGD6//8/MoFNDL8SvKYwf/jwgZEByBIGCDAAqR83M1ta/ucAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYGBg2M8EJBjoQTADMSPz////HwMEGABruwTRxWVztwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIZJREFUeNpiZGBgkFZRUckTEBDQYWJi4mIBEmZ8fHz6f//+Zf/z5w8D079///j////PDsQMIMACIoCCDDAAFoDJYhVgYkADhLVQQ4AMa6nhUiYWFpafQIGfMAFmJSUlrs+fPwsBJYQYGRlZGS5dusSuqqpqBxSIACpIYITqZwNiLpAOgAADABBQSostyhMHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiNDMz2//v379vHz58uHLnzp1JLL9+/WJgZGTk4uPj02diYjJjYQCC////gyh2oEp+FigHJsgAF4ABDAEmBjRAWAs1BMiwlhouhZsBlPjJwsLyE6wCGHTfv337dllBQeEuSDIBKBOhqqpqd+nSJXZGoAphoOBfIP4GxL8AAgwAD0RdoB6ph54AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYmBg+M8EJBjoQTADMSPD////pQACDACI0wRH0uIsCAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpiiItP+M/069cvBqZ///8zMP0HE//+Qbn/QKz//0Hcf5gSCAJDx39kif8MDBAu85PHjxkZgLJSAAEGAGF5RJzjY1IbAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpijotP2M/069cvBqZ///8zMP0HE//+Qbn/QKz//0Hcf5gSCAJDx39kif8MDBAu85PHjxmZgbKPAQIMAEa5RStdv6aRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYmBg2M8EJBjoQTADMSPz////HwMEGABsqwTTd4K/0AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJNJREFUeNqkTrEKAjEMTWpKqyCKq+dBh26Cg+vpZ4ij39yPObhiE1MQhzqIGngheXkvCQLAcRhOl13f7621CzLGxG3XHXTgcs5AzOwB0RVmqEE18bN5EdISLNIQbxZpLSx/L/1M/PSpfLHUENF0L2WqpopZCGE9juPKOb9BRAsppWWM8azKqwpuqBdQi7nCK/AhwACtz1AKJyXHLwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAJVJREFUeNqcjjEKwkAURF/WDxHBExjYamtv4DmsTO5qThA9QdKJWirJsv9bSEDTiJlmYJg3zAKogADkwEUOZVXGGB9d257r+ujcMAwAq01RbJ1zQdQMzMiyLFfVpZgZAKOLqfKpN/IVTBtmU0QnyIzR38Gsp/bv6AiklHoR6UVVSSk977fryXvfAVQisg8h7JqmWb8GAJDqY/rl9HS9AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUeNpijItP2P/79+9vjx89unLkyOFVTL9+/WIAAi5pGRl9JiYmVZZ///8zMAAxIyMj+79//zhY/oMEGEBiEJrl/79/DMgAogVFAF3F///oWv6haSHDUMICZLn0P6mGwjT8/fv3JwsLy0+wFiDn+7u3by7Ly8s/BkkmAGUiVFVV7S5dusTLCLRFGBSkQPwDiL8DBBgApSFphTgm62sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYmBg+M8EJBjoQTADMSPD////pQACDACI0wRH0uIsCAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJZJREFUeNpiZGBgcLGxsS2WlZOzZmVl5WVhYmIykpaRsQNKcP369YuB5d+/f1wMjIxcf//9YwABFhDxD8qBC/xHF/j3/z+aAIaW/+ha/v2n2FDCAmS59D8JhjKxsLB8//P37zeQJhBmVlRUFP327ZsoOzuHBCMjIxvDpUuXBFVVVYOBKsuAChoYgTYwAhm8oFAHGQEQYABQ6FDZFd6uyQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNpijotP+K+lrV0swC9g9+jRo5dMv379YgACXmkZGTsmJiYjln///zMwADEjIyPXv3//uFj+gwQYQGIQmuX/v38MyACiBUUAXcX//+ha/qFpIcNQwgJkufQ/iYYygTSA8J+/f7+xsLB8ZwJp+f3795c3r18dkpeXv8kIlGwAynxTVFS8u3bt2n2MQFukgIIgg74B8WeAAAMAKAhm4pQzrFgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRJREFUeNpiZGBgUAGCyQICAtZMTEy8LEDCg4+Pz+7v379cf/78YWD69++fyP///7mAmAEEWEAEUJABBsACMFmsAkwMaICwFmoIkGEtNVzKxMLC8h0o8A0mwKykpMT7+fNnSaCEBCMjIxvDpUuXOFVVVYOBAmVABQ2MUP0cQMwHMhMgwAC+qEtf0TB9pwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiUlNT+8/0+/dvBiZGRkYGJgYggLAQBJoYNiX4dcDFmF+8eMHI/P///1sAAQYAKxcLUpcjeNUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNJREFUeNpiUFNT+8+gqKj4n4mRkZGBiQEIICwEgSaGTQl+HXAx5hcvXjAy/v//XwogwAB2Swj9RrJOegAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRJREFUeNpiZGBgcJGWli7m5ua2BrJ5WZiYmIw4ODjs/vz5w/X//38Gpn///nEBZUCYgZGRkYEJxADJwAALTIZ4ASYGNEATLdQQIMelLCws34EB9A0kCMLMioqKot++fRNlZ2eXAAqwMVy6dElQVVU1GKiyDKijgRGoHGQALzSgmQACDABfaR58r+agPwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRJREFUeNpiVFNT+8/AwPD569evR58+fdrL9Pv3b4Y/f/7wcnBw2DExMRkxMTIyMkAB179//7iYYLz///+DaRYkFUQKMDGgAZpooYYAOS4FCYAwMIC+sbCwfAebAQy6Lx8+fDgkLy9/E8RvAMqUqaqqBl+6dEmQEahUCqQIiL+BogMgwAAPLi475A3jcQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiZGBgUJGWlp7Mzc1tDWTzsjAxMXlwcHDY/fnzh+v///8MTP/+/RMBynABMQMjIyMDE4gBkoEBFpgM8QJMDGiAJlqoIUCOS1lYWL4DA+gbSBCEmZWUlHi/fv0qyc7OLgEUYGO4dOkSp6qqajBQZRlQRwMjNDw5gJgPZCZAgAEAjMsekNnyoBIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiVFNT+8/AwPD569evR58+fZrL8vv3bwZGRkZeDg4OOyYmJg8mIIcBCrj+/fsnwgTj/f//H0yzIKkgUoCJAQ3QRAs1BMhxKUgAhIEB9I2FheU72Axg0H358OHDIQUFhYsg9Q1AmW+Kiop3165du40RqFQKKPgHiD8B8Q+AAAMAvLgsezVKBIMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiMTMz+//v37/PHz58OHrnzp1cll+/fjEwMjLy8vHx2TExMXmwMADB////QRQXUKUIC5QDE2SAC8AAhgATAxogrIUaAmRYSw2Xws0ASnxjYWH5DlYBDLov3759O6KgoHARJNkAlClTVVUNvnTpEicjUIUUUPAPEH8C4h8AAQYAaEheCvo+JpcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFiklEQVRYCc1XbUxbZRQ+pS1toYUKjPFZBQaDZAiMkC1blG1ZnCZiZsyS7YfGHy5GEx0xfmXRHyZmMWp0OmNi9Jf+cEaNZGPOIm5jGWS4sYEY+RCGq3x25avf7e2H53l3by0DBzKa7CRP7nvf3nuep+c957zvVUWjUbobLOluEAENmpUKUbHxswDE4z21DOXPRPg+LCPEV9xzwFcWctVyz8kCQKZl6J5/6dXNFktRg9FofDCqIkOyVlvO8xSUpH5VlHxut/u8zTZy8tMP3r3C0wGGxIgsJ+i2QliEIsDwxltH9uUWWg5nZ2XeZynIp7ycbFKr1ZRhTmceopm5eQqHwzQ+aSfb6BjZHdN/TYyNvvP2m69/wz/7GBKLQZSWtCWFxEVB/8T+Jyvqd+76orS0pKp8QwmZzWk0O++ieZeXIpEIef3400Qpeh0lJSVRuimF7kk30Tw/MzA0TAODQz1tZ8888/3xr/r4MT9jyegsEiKLwPobXnz58CNlFRWfb6mtTivIzyPb+BT5AkH+aXkz6JKpMDebxsYnqLOr2znY13fw4/ePnOY3EZ3wrUu1lBCISHm28ZVHKyurv6zfVqfxh6Lk8niXZ1/iCVNqCuk1KmrruBTq7e1+6rOj7zXzY14WgsSO2QIhck4YHt93oGbHQ3tObt9SZ3b7JQqFFrwTe3mlA41GTUa9lto7L82da7E2/PDt11f5XV98ziilR/KSoDLStj5Q/0nNpk3mWZePgkFJ5ALyYbWAD/iCT/gGB0Mrc/LwZk8QA3lseK7xtQMbyzZUSdwyUAWrJb/1PfiCT/gGB/MZ4vlFQ4uPRlFxUaNOb6CAXA2KyrW4BlgMfIOD/X3H8DO3qCJladAx9fufPrg7NyenMBSOUpiXIhGAb3CAC5wMcMdavCjXvPz8XUlqDUVYeSINHOBiDpSzhxFR9hohxJhqrOKuJCKRSCHgEFw38wTckiIEV12yXm9B20ZiJdLAAS5wMoQGRYjYU1SkSsHpBLmRSAMHuPiCdiHyNF6IWpQcR4MzOZE6cDYQbYFJsCwLhAhiKRT0SVLIhNAl0kRPYa54DiUiWIuw2+kZ8wf85Xo9qipxxhwELmZAMoo8iBcizc44BnxebzkfdhKngj0zB4GLh+LQBDKxPnzF0S5w/drQRQ/vsuEwN7MEwstCbCPDv4JT5o41NITId6blx46quq1TRpNxfaKWx+/3k8PhmPrFeuoCOBmiVyhLI4Tw5NwfPVeOZ2RkHkrWJvPt2pvL6SJwsOc5xiIhKG0c4+aszU3NxaXlDRqNpthkMvHU2pnL5aLJ8bERcLBXCAGn+LASOSIf25A4TsZU6+nmo/Ypu4dP5Gu28cEXfLacOvEhOGQuHKj/FcKTMJQRQuX4s//3yx1tPx+7YbeHWc0dn0ngA77gE77BIXPFWriSI+JLiDuqEpWJzvbzVq6cpO07dr+QkZlpMK5ymdy8HDPT0772c63HLl+8YGUBEwxEPhYNHtOCM6uYUKnQVrEPrGNYCu8t3rznsb2HsnPyLKkpqZSswz61vAUDAfJ4PWSfHLdZTzR99Pf1a/jgsjFuMG5/eIZ7+bQGMTjKZTDyGAXbdu5++P7q2r1paeYMvUEvBGFP0srNT5IksYdAgN/nJ6dzbua37q6mjrOtP/H7o4xxxgxDVIqSG3wvbFFEMCuLQSKj1+Ogm8VYz1hXUVlTVVJWXpuVnbOR9yQtL1kOzxMvwSTvIZLDPjkwPNjf1dd7tYen8e+RmMgJLAeqZGUfWPxgzFgQxKDfIzqoZbMMiEtlQKiSZ+jOIMKJC6QoT8DFQBT+/ycnvxSzuOhAEBIEogCM0fVEC+ArKgCfgWjbIAYwvvOPcHYSM1kQDirIn3jEC0GHjgdSQfSJmKP/GPwDy9LPcQuXXBoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-disabled-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFRElEQVRYCc2X309bZRjH3x5O20MppQxcS4GhtCsQGKg4R5YtccFEoxmJJku48kajF+7CJUvmhVcmxpiY7GbeGP+AXalhUYcbYYm4sMFcNjdYurIJg/JjFEo5lEN7OPh8X87pWgu0uJ1kT/L0/HrP8/30eZ/3x7FsbGyw58GE5wECDGKhIBYyvS2O+ANwnBv3kVq4pjtPNWW8oJRb8rXTAQxx8aOTp6sCAX/QWeKsI12rVbJXkjBLKWvzxJSSV+TxcHgs9MO5b6fptmpA5QPaEUSHKKJg4udfft1cU1179IXKcve+mhrm8+5loiCwPW43PWZsIRZjqqaxyMwcm5icZI/nF2PT01MDX31x5g49BtD6TjBbgmRkQezq7q7sfOOtrsD+em9joJ653S4Wi8ksJieYRsIJRQEHc0gSEwjM7XRQGyeLU5t74TAL3X8w03elt6fn/HnKGAcCT0535YBkQFg/PXUm0NTc3HWwvc1e4/OxicgcU5JJLpzvR7LZ2D7fXjYZibChG7fWRu/e7fnu7Ddhei9FngOzFQiK0PrxyVPB1lfb3zt66KCgqBqTE4l82ls+dzocTBIF9se1Ie32Xzd++v7c2RA1TBEJijptWcNXz4Z4/MQJT/OB1ncPtbcJC9QFcVnm3YCu2K3jXcRALMREbFIXda1cEP0BCtN+5EjnOy+3tEgLcYUlqSt2K/7f9oiBWIiJ2NAgL8qEycwIhqj4yWenW4JBvxeVoGnqU0M8gVIZYiI2NKBFbsxBmxOaTgYou/9Ff4eNRkBSKawo6Z2CLakmGWJDg14aIVdJmxduZkbE7g8+rPdUectUGvWYE0xxig0NaBFIemY3TgBk9VbXviQIIu8SujbNoAEtEjCG87oBwuuj1OX00qzE68I0CgQmDa6VUScGCDIiSjapTKQxr9K8YaZBA1rQJOflYYAgI4LFIlg5AtWHmYbo0IImTqGVBcKHGrIhmAxC4aFFlgOCmyyZWkupqmrH4mWmAQJamRpGRrAaasvyyrKiKHaJxrqZRhoMWtAk5ytxFshidH4+kaittNmM2+bgJGgBhdZWICBT/wmHJv37GxqdTqc5BHpUgDx6ODYFTfJ0seAx0qNeuXzxUXQhSiv+5qbnyTqx+1V3u3cRGxp9vb9MQFPXTo8aUKF4lNGbw3fK3eUdNtrYmGHxeJxBA1rk0OQZySwG0Cm9v/aE/A1NDaIolrtcLrr17AwQszPTi9CgqACBJjc+TrH80RXI1shXLvVeGJyfe5yUaVPzrBY+xELMS7/9PAgNXUvTtTenV7oJ43VCx8T9kZHIQP/v1+lFLfEUuzOjThADsRATsaFBnq4POk/XCN/N0t5gne4hK8tDgwNhorUcPtb5+p7yCmvJ/+ymFeqOhcVo6mp/3/Xha3+GEVvXyPq82HbzTI0d5GXVdXVVbx9/v8Pj8ZUV00YYG5tCLEmT1iqNkNnZyNLFCz8OTo2P44NriRzZyNk8bwWCRQiORamYvJTcdfjYm4G21tcaS8tKi6ViiVltBEQVZhM3Rxd2X6iyVFJhyirNnEvLq7duD9+72n8ZWYiTIxOr5IV9TlBDWhn5dy5gMKqw0UV2SuBNB17x+ANBX4XHVyGKlqISp4vPfityXFbVjfXobCQ6Fg5FRv++OUvtUZRwZAFdzuvCKFC6TltORtJP6EQH4p+cdAkg9Asc58gYQI0VEqMOQvjHEMXwhBsAWTVB97NsRxC0zMgOBCEMBwQA4Xw/QUeMOhQ7HDCAggMQScDzbS0viPGmDoRLAEHcOGaCGPORceQEeCmf/Qt/gODdNKcAsQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-disabled-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpilJSU5GNjY/NmYWFR+fPnz51fv35tZeHl5fUXEhJS5uDgYPjx44f6+/fv2VmAArKioqIMrKysDL9//2ZgZGSUZQKqeAzUzsDMzMwAokF8JqCWTUBz7vz7948BRAP56wECDACARibFW62AbgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpilJSUlGZjY5vGwsLi8efPnx2/fv3KYuHl5Z0vJCTkysHBwfDjxw+/9+/f87MABSxFRUUZWFlZGX7//s3AyMhoyQRUcRyonYGZmZkBRIP4TEAtKUBzdvz7948BRAP5cQABBgC1gCaMj8SIGAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFpJREFUeNpiVlBQ+OXr6/vP399fC8h2//jx4wEmfn7+c9euXXP48uUL+9WrVx15eHjOM6WlpZX/+fOHa926dRNBdFZWVgnj////2RgYGOSBmA+IPwHxQ4AAAwBD7SPhd4irzgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpilpeX/x8cHPzD399fW0lJyeXdu3dHAAIMAExLCKH400byAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-disabled-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFpJREFUeNpiUVBQqLW1tT0IpL89fPiQ89ChQ05M/Pz8z69du6bw5csX5qtXryry8PA8Z0pLS9vz588f1nXr1nmC6KysrF2M////Z2ZgYBAAYnYg/gnEHwACDABY9SRUSyy5EAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpilJeXb3B2dt4jJyf3/dGjR5x79+51AQgwAEsRCN8VvtvtAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-disabled-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHVJREFUeNpilJeX52NgYPAGYhUgvgPEWxkVFBTigAx+Tk7OV9+/fxcDsr+wAAl5GRmZ84KCgt/fv3//5fHjx8ZM////Z5aSkvqioqLyRVpa+itQERMTkGDg4uL6w8PD8xdoxB8QHyzIBJRjZmb+zwRRwwAQYACJUxySG2T8dAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAG5JREFUeNpilJeXl2ZgYJgGxB5AvAOIs5gYGRkXALEmFxfXVhANxMuYgDL2MjIye1VUVG4A6T3///+3ZgISrFJSUi+Agi+kpaVfAhUxg1QyALX+5OHh+cnJyfkTxAcLMjEx/WdmZv4PokF8gAADANpxGPrplMnhAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/knob-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwxJREFUeNrUVUtrE1EUnlcmM0nTTJqEtiqhFMF2I4gIShduVGhdCKJ/oS5ciOC/UARBLUpFpRYKFbvRNpQKilsfUBdpG4htbEyTNPPIc5J5XO8ZJmFM0jZddOGBw+Tm3vvdc7/znXNJhBBxVEYRR2hHCs40fpAk2TpH2k47HMbAo+FwZHvTGlQz+9yI7uvr498urjwSfN4rHEOH3AzF1nSzrurGrlwsL9+YuHRHFMWqfYjZhgKntCQVgLlnM3OXV2MbSiqVQhgAlUolVK/XrS+M4X+Yh3Ww3klxE7MFnOrv7/fOLryfXNuIm9lsFqmqiqrVKqpUKqhcLltfGMP/MA/rnr6avTY4OOhpHNDAZFo4Zs5dGBs4PXLycTAgkB6Ph9A0bc+Eeb1ea9/5s2dmBEE4lU6nNWcOnGqhIpGI9/bde1MBX4/L7XYThmE0o+jkMM9xHBEWfL6HU9MvAoGAxw6yTYp0MBjsDfX2jLEsS5im2bXDASG/7+LQ0JDgFImTFhpfU+BcNE9RlLWpWwMZcyzNw348zHYEZxiGJwlkXesw4NYBiCBdLhdn10MbuFUwGuYRuITouzVYr+k6wjegnZw7wa3KK1VUtVarcZDQbg3rnyhV1RpOsuGsVmd4hq7r1d/pTAxr+VAJxfontrbTq1i2ql2t7eB4kbww9+aBKBcMXIldAReLRSK9K1bnXk/fh/17gufz+UIum02sfPr8UpRkBBv30znMS7KCotHok0KhsLW5uQngeifOzWQyWcaVtv3l4/K8LObL4+MTtwZCGgc6xkogGhKFqsXlT+zsSurS0uLUzx/forlcbluSpIqT89aE6plMRqJpen31+1fzV3w9fvX6zcnI8WMjPR6OZTC4jsFx0uvJ1J+1D+/mn8uyHMPAcfxVHC3YlqfdtBz9HKhiR0dHA+Fw+ITf749g/Q9g78WRszjyOk58AfuOoihJiDgWi0kgmkbbbWJ2AG/2c+gVw8PDfp7nA1BgdoFYqsImJRIJxabin35+EHjrS8R0eIn0g14i8r99/f8KMABYnUshETxaoQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/knob-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA1VJREFUSMe1lWtIVFEQx5fMB2WSRmQFIhQVGQjSm5JIJFRIyzQypOiDYBBZmq0PqKwwM0W38LX4WB9pobuWpi5ppZTiquuT1LW1NM0KMqIH2Zdp5jZXdu1eti99+DGcmTn/e87cc+YoqvrfK2RYhDggSxFXZCWyiq0r+x04T1JDTtSRBTwQb8QXCUAOsvVlvwfnOUp9ZKGwPeLCk7Yjocg5JB0pRMrZprM/lPM8eJ69nDgF3JBNSBByEalAhpA5BCyYYz/F45FAZCPvwn6h+GJkOeKFhCPZSB8JFXeMQ07LIGQ1dMPN2nbB0pj8/CEjkoEc5g+4iCUSxZcg65BDSA4yXWGchuymXihpHQT90BQYJj+DafaXYGlMfopTHua/RjJ5x1QiJ1Hcjk/AXuQKMlbWNQmp2ueg6zZD38ef8GL6BzyZ+A6N498ES2PyU5zyKnqmgHeqRHZwee0U/KfXI5FIfVX/DKTp2qG2xwxP33yFOtMXWShe3WmCjPousUT3uKyepEviy5BtSDIymd86DOpmI9SNzoJu+JNNKK+guQfy20ZI3MQ/2AdxJvEViD/XGm7gNks7xuD+4Id5Cp4Ngd/xaFjrvUuwNLaM3+00C/N49SpkP+mSuDsSglRSMLGkATSGSfxR7+bZFxENG/zDwSv4lGD3HI2yims6JyBJ0yiKV/BlcyfxNcgRpIaC5/O0UILilmwJioStJ+JhZ9QlwW4OiLCKF6N4bL5OFK/my7X6r5XH5msht20U1O3meQLPXhOEd0dfFeyBMylW8dzWEYgt0Emu3KrmyWV6SKszQE7r6Dw0Dkm6LQiTlYrTPKmaW56Wt1lNRogvegSqlpf/zIXCesjW90meFqtzXtk3AzG51ZBY/hgy9AM2UWqaIAEPgdw5F2+oL9/QV0VYx6hbGojDFaU1GGWhOOVpDBOyN1Syt5TihDj1AzitqoKE8mZI0XbA9YddgqUx+Sle+kdYtrfIdcUB2momdsGYvBo4maqGY5fvCJbG5OdS9Nrqigp+siz7uZJraFrQy0VMHFdyvmw/l3qJqHZh/PdVfH5r2KrYH8Z5Nl8iyzfUiXfhycfKDwnmmxfMYx+Ou3G+zTfUEjs+ps580dy5Vbjz2JnjdrKvPwD8N34D1L0Qnrdlo6IAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAs9JREFUSMdj+P//PwOtMMPQNxwLYARiJiBmBWIOIOYGYh4ozQEVZ4KqQwGEDIcZylM0aWlU/aJti1pW7rvQse7ILxAN4oPEoZbBLCHKcJBCDu+EHLX6xTt2Lj185f/hm0//X3/+8f/rr3/ANIgPEgfJg9RBfcJEyHCQAs7Q3GqLpuV7X++4cO//3fe//p998f3/wcff/m+//wVMg/ggcZA8SJ1HbKYOsgXYDAeFHZuAqIRE9YKtV3devP//6OMv/zff+ogTg+S3nr3zv3z2+j1AvcLQIGLEZjgzEPMlN04qWrj/wv+tt979X3/9LUEMUrdg//n/SY0T84H6eUGux2Y4GxCLF0xedmTpyTv/V11+CcezDlz57xyd+V9a3xJMg/jI8qvO3P0P0gfSDzIHm+GcQKxQPGPdh4WnHv1feu4ZHDtEZf5Xcw37r+2fBKZtwtNQ5BeefPgfqO8tSD/IHGyGg5KVWtGMdf8XAA1Hxjresf9N4sv+W6TVg2ktzygU+flAwwunr/0N1K8KMgeb4aDw0siesOTj9EM3/88+dheOvfJbwAZbZTaDaffcJhT56Qdv/M/qX/weqF8dZA5Ol8c1TDrdufnU/2kHb8IxiB9QPRlsMIjGJg/Sh8/l4DB3jc/rLJu39f+kvdeIxqVzt/x3jsluwRfm4NTCys5hGVM/6UHVkt3/e3deIogrFu74H1rWcQqo1wxfagGnc1DQqBhZJUQ3TPlQAnRR57ZzODFIHqROSlU7DKhPBV86Z4S6XhSI9cTkVaL88hrOZk1a8b9yyZ7/TeuO/2/ddBpMg/ggcZA8UF0EUL0OoRwKL1ug3tMFYhcT7/B+n7z6S2HV/Z8jG6b8B9EgPkgcJA81WIxQ2YJSKkJdAvKqKdQQPyAOhNIuUHEVqDqiSkX08pwX6ipQKgAVrRpQWgEqzktqeY6tJuKE5gNeKM1JUk005CpoACn7Zz8845ivAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-arrows-pullsdown.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAGCAYAAAARx7TFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUCFtjcMlpNnDObv7mkt383xmKQWwwzgGK5zQbM/z//194zvrdM5AkwBikePrq7bOB8iIgRSCsXDt9+VaIZBNYUeWUJbuB4qogeZgihm8/fpintEy/ADItoXHqtW8/flrB5OCKgJjx4bNXQWmtM87defw8HMTHpgiE2YDYDYjZkcUBl+OOeCK3v4cAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-arrows.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAPCAYAAAA2yOUNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANVJREFUKJFj+P//PwMMu2Q387jkNK8D0kLI4gzIHLfc1s1ARf/d8lp3Omc3M2MoAgo2ghQAaTAGsrtQFAEFQpAkkXE4WBFQwsAlp+U7zBSwJJR2hYgbgEwSBuIkIE7DgkHiwigOx4WpqAjkMKCDv7lkI3k/G+74b0BsDHb4nPW7ZyBJ/If5dPrq7bOB8iIwI5Vrpy/fCpFsAiuqnLJkN1BcFcVN3378ME9pmX4BZFpC49Rr3378tMLmcMaHz14FpbXOOHfn8XNQSDPi8h0bELsBMTuyOAC+nGWQKm0f4QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-disabled-right-pullsdown.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXlJREFUeNrslkFLAkEYht9d91hgrORCRKeCiqJDRGK2GIVYxw4d+kf9g/5FHax/YNShW9ohSINyRTNZ01zdmW1mV+3mbsVslz74mDnNM+837zcz0slZ/hRio8kyzzKnUEpxvLcpjNSxetFi6WX//smQFcdxUHi1hMEUWUJc01AsV5KuMkodYbAeW7vHRsaZHMAoRAdnuDASJixEZQSEhAEjUDiIsIno4Jw/UBYC7EuZTxkbjQYucxeghGDYkdJgjCgRZLJZqKrqq0wmhJdxfE6rUzg62B1BJMmbcPBhJg0tpiLIOrLbZ2R8diwbEzENO4l1D+J4+vSNNUTjM2hbfd81XOsPqX7x1iZYWFqEUauj8FDC/NwslldWUXvvBjyzkfWDGaRqdqGnkqyMEra3EjDMD7HWN1oW0noKz80O26TzPet7d2Pwpub7eqybP7uuvDMLo88I/p+Y35XQtjmjJfxbYPf7qFcrHHblfnjubq9FCuPWvWF5/inAAMMzdZSyHBqHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNq8ls9KG1EUxr9JZuGiKcaJNdCFSEoWCl1YqEpaaaoitILg1idw2Tfo2jfoW6jYRcCaukiqrUg2bUTI6KgYrY5ObDPJJHMn3juJ/0C8c9tOD5xkhsydX75zv3NmpNm57Af4GwbNLM2PsuM4mB4b9I1kWrX2/M7Bm83dw4DcaDTwQ7d8g8kBCV3RKPJaMeEqc5yGb7AavXeNflNOqAVz4HcwRoB9EIGsWhYWFhZRNk2hdYwjrCyVSqFQ2IZNbExMvIUkSSLKCAhxPOXq6hpUdRvs/pqmIZPJel7LOLJ7Qg94oaoq1r+tN09aYnK5HJSIglgsxl3POPKlsvtC13Wkl9NNyE3j0uOVzysIhR5CURROGS+VcWBd9N+/fzeDu7aHtin2S1VYtuNRGaeMZo1g67j+l9Z3lbEyEt/7jDFc6/PK+K+a2pMywzCQ/rQE2759HdvDYDCIV69HEA6HucoCTevfn51KGFPjySvXSy0Qi8nRYTyKdPCnCPHY1OVqHW3tnUgO9F/TaLx49hQPIlH3d09N3ZyNfIOclivoicdxeKJjs6DhSfdjxHv7cHReEd0zbwYpGiYSQwPuPEwMPsf+WVncjSKD+KBUwcvEEPZOfws9B6+mPhGAsSIUfpb+zPr/4+FJbJsxfvn+WmDX6zg5KjLYF/eF5/vGmp/Czml+pTl/IcAAabQiHJYP3UgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-right-pullsdown.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXJJREFUSMftlk9LAkEchl/30KlDoemCRUUopBQeQogSsYQOHTp0iM59jLoEnTr0EUztC/Qpgi5eoqBTFyt1tULR3HF3ppndJTrlWMx2aeHhN7uw8/Du/NnRTi+vmGKqnBPOmEYpxf5mWhk766lofDp8yD3HGmMMdy1TGdUeENF1cM+Bk4xSpgxiUbwR8Dad8mT+4MhsH/iU+ZjMhm1T5QiP5twIoWrsP0nmE26yIRhNA+VSCcVCAeceRY+LcgkNozG0Dy+Z+IzfEw5OYm87D3EFBAG3wXjZ3cpBDwUh04+7zobE75kWxkM6NlZXXAljjjibTmEiEkXXHEiMGZVLJnjt9hFPLCKxMMd9AcRmZ5BcWsYLfy7bhzf15ai3+8hm1pCMzSOfy6DWfpffRX4y9WsdE7ksF3XI6FPf3RvlFyexLDw0204d5b0vY+bHOrPx/4v5FQNCRDXUHwtMgvrTo5AVnQPPbeVaGfc3lVqr8XzGPUcfblj1AECuvN0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAfBJREFUSIm9ls0rBGEcx7+7Bzk4eNlli7ylzUtJFGkRUY7KzdmFcuDAhULtycHf4LRecpBc1sHLgYi0JcqupS0WszteYmftrJnxzDPrLWWeofHUp9/M8+s33/k13+d5xjq1tK2YzAXBTUizyrKMnvZ60+hqqsl3FuSOEp1Jq6IoOOYTpnEhAHkOB4hOL+1MlhXTEF9k3Isg17I9JfY/UDHJAM+JBJaXVxATBEN172JG8Hq9OA0GSVyFJElGO5NIkczEzs4uzs7OYbEAoVAIW1vbzLWqjpXeqII6BE4D2N/bBxS8D5/PB3/Az1Sv6jB1xnERrK+tAxZ8HUR4c2OT5tk70yHPloOJoX64hwfgHhnQYup6fLCP5lmeo3WmgyAm4Y884oT7jjqv5vWekepMwn+hrTNGR/0Fan2WN+J5HosL85jzeL4wP+uh89FolK0zzfo/Y8/JQndnGzWg5Y2UM7s6WpBry9bfRVitH3tOIj3TjraG2g81MprqqpFhc9A8k/W1vVHfkbexOEqcTpSXFtH1VVaYD2dlFfinOFP9p2/G9pGv7gW4GhtQUVaM1mYXwncxAyaRjG/E4Yc4ml2NuCTR9CNGfJEQ5B5oNP2I+Q1JUVRjxPzfgoSIm/ClKjZDf3iODnZN4+Tw4JrnrqaJztgraPK+AKe0hD8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi9JREFUeNqUVLuO2kAUvcYGgs3yCi+zCYhiSzZK42xDScsPJKIhFV8Q8SF0NGxER4NQ/oBmU0SQIiQFQghjBApRADvYPJx7kb2CrDZiR7ow4/E5OvfM8TDwcDDNZvPa6XRmHA5HkmXZy91uJ+/3++Fms/maz+e7+I55AjheVKtVfyKReBeJRK5DoRB4vV4QBAFUVYXVagXz+Rxms1l3PB5/LBaLv20ca5PVajUxHo9/SKVSyXQ6DW63GxiGAcMwANUAz/OA5IDqYqjqJpvNfm61WjqBOfrJ5XJcIBB4j+CLcDgMmqad9Ift3M+j0SiYpnmh6/pbXFaoNQepKBQKUiwWe+Hz+QA3D6DHivaDwSCg6gyqvyE8KWHRRIn63263cO7w+/3gcrne4PTuQILjJRI9iQS9IeAl4YmEwR4F2ngKCQ00mLfbYbBPDYvnOO5sAswMndwfm8TEHMiLxeKKjD13LJdLyo9C+AOJoihdURSvKAvnDgwdyLL8hfAUNqbT6fyUJCmD5no9Hg/l4L81mUyg3+9/L5fLnxCvE4m5Xq9NJBhh0DK4dlHUHyNA1TAajdRGo3E7GAx+kT127M1er6dNp9NvGLoIuv7cPkaKPplIHhABKvhRr9dv2+32hFQQljn6EInQjSWUSqXXyWTyFXokYhZ4TCp+CZoyHA47lUqFfFCx1nTKxyT3GaJ2sJ5Z/5z1jF6mEBkW2LCePbwK/lHFWnPGuj+odlad3Cd/BRgAYjwouXetfmAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjNJREFUeNqMVEurUlEY3cfjO5PjO0UkCCKCiqLxnTnpktUwCidySRz5K/wJRgMnDmxkkdWooBo4bdCFi83UUkFS8/3W1pJjeL3FPR8s4Xj2t/Zaa3/7SOJsSYVCIWIwGA51Ot0dWZZvLJfL49Vq9XU+n7+PRCIFrFmfath9yGQy/kAg8MLpdN632+3CYrFsMB6PN+j1eqLdbr+t1+vPYrFYY59Eymaz1zwez2e/3+91uVxiOp2KxWKxgV6v38BkMolWqyUajUazUqncjcfjP6lKT4ZwOGxSFOUlVHi3C3eLRKzBYCDMZrPw+XxebPIcfz3kax1+dNFo9Aks3Fqv12I0Ggn4/y/4HlkJt9t9CPVP6YJK9AjxMQIUCE5oKQQt0COMRiNJciQxgOA2d9nK1lJcj76b7CeJDBtOWuEOWovrQaSwnyQSQurAioNetRY3nM1m3W0m6+FweIzADpi81ppMJgJ9J9sjXuLc3zkcjgOGpbV43LVa7RX7OWxGzMilVCr1AcN21WaznUvQ7/cFpvZTMpnk6fySKQfSVlDxDcN2D89WHN0muH+h2+2KTqfTyufzR+Vy+QedyeplWpVKpU6z2fwYDAavIODLbJAk6W+IzIB3Bwq+5HK5o2Kx+J2u2Cvt3CEGchFwJhKJR6FQ6IHVar2OWVBA8hvBn1Sr1TfpdPo11vBe9DnyFCHt2WXQFpXsAmDiHFAMMAWGavNYJTj7KdhTZVAJJNUyieYqTn1P/ggwAOPnK9ASMplRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-selected-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAutJREFUeNp8VF1IU1Ec/9+vbffO2aabk63JJvMrFEeiVj4EFhI99Bp90FM9SL1G0EsE0ktvgQlJD0kIRkT4YPQUBD0kCJImpuGcc6tdt7ldN+/u7rn3ds7YplPswu/cc+7//H7/j/M/l4LjD/Vkai7Emcw9NMv6aJrx6roW0xGKqkVl6emdq4t4j1FDOLwYfTZh97S23271untamhzgrK/DsEJSymPkYEvchY1YYim+sfZ24vFopsJjKmIPnr/2NPuDjwY6A77e9gBorAV2EQ2RPRWKwIJVECDocYGFY9ySxp5r6+1fWPgyVyBklgwdZ89zDrf37mBXwFbX4IKVHbkmP0nVQMKf4nje0NgEfW26rbCfv4WXLzEQiYS68XBsqKcjOGRpcIOkINAN/UTkixowFgF4xmjyhS6k5z9/jJJIWJNF6GeFOsgratV7JrUDM5PjsLq8CJ3dIbh+7z7YG10lm4oABFs9cGZ+EC+/03jgaIY7jSgTqDjsCqZfjUNUTIHd31V6T028qLHLGgsUzXoJn0TC6IYhGCUPqBpJMpuDeo8fWDMPSJEhLW7X2Ml+zOMJn4hQiiLLckHmWZatbmoJdkBaVoHGW4iQL9iJRQ7SRSo+NUUmp0ORdIxcZjchZbM4TFTFxcsj0Oxygq6h0nt45EqNXZIkyGUzIuET11piK7zi9gX8PC5u5SHz4eFLNUeNkHaQrijCn/D6EuGXmi26+iPb0t3XzZjMgpkXQNf1/yIR34bN1eXw7PjYJ0zPERFDQ6qBmydldTZ3AUVxvNV6Yp8QgVhkQ/724c07Kfk3gflKpe31VDyyL0Z+bwoOl0s3wE6uFVUqGQVqUYUcrkEiFoXNX8uRrzOT7+PrP6PYmCdc6tBFJPWxYTgGrt0MuQPtZ3jbKSfDchYcaUHeyyYT4bWV+dlpcovTJA1SJpIJdeQ3QIQsZTErhrnsgLSFUva8h1EoCxz/FRyJiivf8ooIORq14v0w4Z8AAwCwpYb8ccIJGgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-selected-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvpJREFUeNp8VF1Ik1EYfr+//Tg3N3U457T5tygUc5YgdBlRCRZ00Q/VhTchdNOFN91EIN50HSLRRUGCSWKGo7wJgqikMIoiZ6nT+bPcj9v3uW/fz87pnDGnK+vA830c3vd53+e857wvA38v9vajwFnBYOxmeb6dZblWhLJfkK7PaqoydefamWfEB+0lMHs3fYNDNe4G37DXVdntqbRBhbUEykvNEJdkiIlpCEdTsLQRnVpbCF4futW3usPjdoLduPugxeVteutv8hxpdleCKGuwGhfhWzgGUkYFgeehweUAi8ngk7DhanPbsScfXwVSlMzTz0F/l9lRVTPS0Vjj1DHAu2C46HwxUc8pWYjEodpRCm1elzOT3h4mph4ClSphL/UP9B5qPNArKjokiHSM8T+RSiugZBFU2CxNdf7jyzMvJz5RJUaDqeSioumgIa2QPbWVgBdPR2HpZxC8jT44df4C2OyOnE3P6lBqFEAwmq+Q7WOWfEwsJ7RJMgmioQIC42OwKWXAXn84938+Nlpkj6VkYFi+lfKpEgFhbEc4Cyi7W4dURgOb2wu80Qy6IoMYWckp2FmY3jPGNsqnQVhFkZOqqpaxLFtwqq71goR5YDk+F6i6rh50fTcIQghURRYpn7KQtJWYy2QU4pQtoN3vJ2/EQtTpUG61wNGOjiI79ZeSW/OUT5VokeXF6bIKZ6eN4wqZjCYz+Ntaiq5az+6eV9pOw/rifIDyKYtZ+f55vaG96zTHG+wcCYQQ/i8kaRs2wqH3k/cGBgk/SoMQxRomj2fJ4fGeYFjGxJNSYYz2hSSJkEjEk2/GH95MRTfmqCguX2g9thba+hX6MVPmqm1keIMbY4aQIAdaA0VRQRRFiIRDH16P3u9fm/86Sx8z5TJ7GtFE4CTwdPZcPldV7ztptpY1cLxgJUpFWUwuRBaD0zOTIxPEZ4Vgk0ChIpg/xoCBwJYPVkFgyTcpreh2PjMl08ZT9x0FO/OEXk5emZDf0/lBeyKTz140T34LMAAJdqAwng0CqAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-selected.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlxJREFUOMtjYMAETPWLtgW2rNg7p23NwbMd6478AtEgPkgcJM+AD2S2TZduXrF3y9LDV/4fvvn0//XnH/+//voHTIP4IHGQPEgdNv2MOd1zdZpW7Hu148K9/3ff//p/9sX3/wcff/u//f4XMA3ig8RB8iB1ac1T5EH64CaoG1ly1S7acWnnxfv/jz7+8n/zrY84MUh+69k7/6vmbd4B1MoGD4OcvgUZC/df+L/11rv/66+/JYhB6hbsP/8/t39hCiyMOIumrTqw9OSd/6suv4TjWQeu/HeOzvwvrW8JpkF8ZPlVZ+7+B+kD6QcZIlgyc/37hace/V967hkcO0Rl/ldzDfuv7Z8Epm3C01DkF558+L94xrq3IP0gQ8SKZqz7vwBoCDLW8Y79bxJf9t8irR5Ma3lGocjPBxpSOH3tb5B+kCES2ROXfph+6Ob/2cfuwrFXfgvYAKvMZjDtntuEIj/94I3/2ROWvAPpB7skvnHKyc7Np/5PO3gTjkH8gOrJYANANDZ5kD6YSwQ9kouby+Zt/T9p7zWicencLf/dEvLrYWHCyc7JrRtTP/l+1ZLd/3t3XiKIKxbu+B9W3nUCqFcTFjugeBZTM7WLim6Y8qEEaEPntnM4MUgepE5W08AXqE8EOS+xA7GCuKJakH9B0+msSSv+Vy7Z879p3fH/rZtOg2kQHyQOkgepA6qXQ06xDNA8wAmVsDLzi+ryzW+4EFbT/ymyYcp/EA3ig8RB8kAsC8QcKHkHCbBBnQjyqw0QuwOxF5S2gYqLoLsAG2CCukoQGn0SUFoQKo5RngAAHC8qpFnABTYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeNJREFUOMuVU7tLqnEYtigJpJJTS0JtDUHQpEPnDC7Oxz8haHNpqk1cxUkELwQuOnhbVI6oIFGCoiAYitfBQVDMS4LgcM7y9j4fvw+62Onrg4eX9/I8v4ff7/1Uqo/fWjKZ/J1Op2+z2Wwll8v9RUSOOvqq/31+v/+Ah5OVSoV6vR6Nx2NaLpdSRI46+phbxV8LBAInPPDUbDZpsVjQfD6n2WxGk8lEishRRx9zPp/v8I0rk8m0xVYf2+02TadTGo1GnwL9RqNB8Xj8D1M3ZI31YDB4WS6XaTgc0mAw+BKYK5VKxO4vZDfqcDicg3q/31eMVqtF4IEPEU0sFpt1u13p8pSi0+kQ88bgQ2QnGo0SRL4DiEQikX/gQ2SX7+S5Xq9LFpWiVqsR8ybgS074uR4KhQJBSCkwD57sRGOz2a4TiQRVq1XF4Ccmq9V6Jd+JWqvVHnk8ng4vkbSVXyGVSpHT6bxjrk5+nXVYMpvNJq/XO4Uj7MxnQB9zRqPxnHnbr7d2k7Gv1+t/ORyO+1AoRJlMhvL5PBWLRSkiRx19g8Hwk+f3Xm+sSqipRePYYrHc2O32gsvlmrvdbkJEjjr6jB/i4JV/9IawqBPDp4wzEY9Fffu9g5V/tHClEc+3K6JG1D+c/gLaLHWQM6f6bgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-down-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARxJREFUeNrcU7tuhDAQ9AtQQBQ5IQokCkDi/7+Fz4CChgiO8yNjb8idTiKPMpkCY+3s7uzY5uM4SimFEDJAHOABLMBa65zDV/jFOXYOF6J3tl9D9hnbHvAd7QPOeMZYrbWKomhdV8Q4h9p7AolGggkICUbFcbxtV20MO6by8zqHDZShuNagGuqjEL5cXqdpQiOywDcQEpkYBJxQ2CklEfJsiCnLcp7n201j2GCg4YyUWCKQPPWxKFUUxbK8bdfNoDW3UAL3JQJelyPH1KMJWZam6QtJJMaTs4L9Bn+VrZ4uxjAMy7LQNs/zvu9Pa8PjruvoAuCEmqb5RkmWZVVV4aeu6yRJvlJCAG/fd9yFH00JJW3bfj6z/3A67wIMAMmK0TcxpouqAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-down-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXdJREFUeNrcUs9PwjAYXbt2gIpHQzDGg1e8YkiEAzGRi/yB+Cdx8OTFRKPyQ4MSYWNs/bHV1y0SYoLEo74t/dr0fa/vaz/S7/c9zyt8AXPGGOfcdV1KKSEkTdMkg5SS2phaOBtgjMkTtNYZG1HbiI1v1BVPKRUsQpYYR0pFqas1zxNWyI5MldbSQk3e3pnLiyL0IQOjcIwBc0JoagxxHOTHgBDQfhqMWaG0Gy38KI4JJSgMxCS1haA+2IKHOIqFFEEQDsavVumgejR8vM8kcQNGeQq/ZRtj2VZa3NzeYWnZhWLp8Phk8jIMF0tcEM9AM+1EJzM/eHgehcsITJbXzj0PJ8w/pkJEWmnJpEtdofQ8WEymMyFVTmPr97Wzty+8Is6NhIjjEAO+dQJ1foO/ymbfeqjXux6ORvmyWq1etNsbtdHQ3e4VGsa+AOet5vkWJ5VK5axex6TRaJTL5Z+c5Gi1mr7vn9ZqUortVcJJp3OJrvo/r/MpwADuwwM0qCfRHAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-down-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrcUj1vwjAUjB0nLQSK0qUfKR1Yy1IGysgIKwsj/4g/lnZlZ0ViQGocx3bsnhOKKlpadWxPkf3i3L1378UkTdMwDM/egZgxFgSB7/uUUkKIMaasIKWkbjcO3glYa2uB1pq6CLt2Knw4oh54SinkZqgopaLU1zqoBQdUJY3SWjoozjmLotZms0EayOAYC2JCqLGWeB70AigK5MbOOp2L7XabC0EoQWMglsY1gv5gCx5ELgpZ4AwChtN+/yF9fuE8ryZgVajwOLa1ji0EKjSbDdR0ddvt9tNwuFqtsleOAQUVaJW71CWhXiuKIAaT1r1DOhg8du+7mHHO8yzLUArURvP8Mo7RUk1jH+d1l9zeXF/B9H6i1eywHgjU+w3+Kpsd3aHlcrler+vXXq+3WCxO5saw5/N5PV1c9Nls9oOTJEnG4zGCyWQSx/F3TmpMp9PdbjcajT5f9y+6hBP4gav/83feBBgAu4vyDSWkLFcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiWrpyHcP12/eZXr15x/T792+mX79+gfHPn0D86yeQhuFfcDmgOmZWLl6AAAMA0ScnvzgM/74AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNo8ybEJACAQBEG8/ltSbEILUMz99O8eRAOzZTblUtOYC9sMEQGSkAR3viYdfo36TyG01o8AAwDxoyq9365oKwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVZJREFUeNp8kr1OAkEUhe/8sLvCgIPgClYUGhKjhSE2FmJrYWFhbCzURKzUWuNrWPgcPoHhDeyMMTzBEmBlZ4R1x5nNYpDInuQkk5nv3ntyM6jZbMKUkDbWpnf3DyeU0kOM8ZZSqm4e6QxIL1tX667rPjKW32eMgeM4safhGDw7v6iXy8vtUqnMFzmHMAxhrC37/T+wGW277spTcanILdsG3/dhVjTpmrm+uW1lc9ldQigIIeA/0aSrRQg5NnWj0QjmaQJnhJQbhUhpeJwOc86d4TAoRFEExmkw6vV630EgPqUUTMdJhZWx/BJvg4HfyLFcKmzmhjKQz57nNWy9tnkitVrNrI50Oh/vlerqns5cNQWT/NM28O+foJS8IoSPFCjbsZ25sMkN3a7nE4JfdO2mlLISd8EojhCpCFDy61CSf0E7r13YbuycZizrQJ/XlIrv4EeAAQDMloUiXiKSSQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWZJREFUeNp8krtOAkEUhg/LKIRGwAZ8Agpbe9/AN5DCzkvvE6hPgb0WJDYW3qiNRhvUGBpZIZpw21mX3bnteGZZ0BDXk5xszuw3/znzz6SurhsaAELMZ611UwhePzo8qGMt43XzP4pU2+4go4ExBkEQgOu64HlfjW63s3Vcq9nxpmiDNXIccCgFISUsZjJQKpWgWFxeL5dX7jar1QoyxIgamCilohbTr4+ZyWYhny8UpFQnWK7F4yhLCAHz6fs+pAmBXC5X2d7ZqyK4YNQtie3/Ss45qDAEQtIbMWwRzgUkBZ4bGOerM9i0TYoQlT1vvBQf0sA8EeaT+enMDf6Psktd4/3L1GcihUyEB4MBKo/Pp7eZOLMBh6Nh6+bywngtItjYNB+9Xg/6/b7z+dHdxXL8A6sJbMYJWADUofg+6O17+23fttuvv2BNms2nyYtKgaND3RKcnT0+3J/iknHBxWTxdcO3AAMAyTPqDXZdVhcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAV5JREFUeNpiZEAFjEDMBMQs8xcvD2djZfNlZGLS/f//vzpMElkhS2tHt6qsrOxUAUEhBwEBAQZubm4GLi4usAIWZIV1jS3q0tIyhyWlpAWERUQZfv/+zfDj52+GL9/eoSgGWc0uKyc/U1RcXICdk4vh3fsPDOiABWoq64TJ09J4efmsmFlYGb58+cqADbBATWVjZmYJZWBiYvjx4ycDLgBTzPr56zctob//GX7+/IVfsaioGMfHz5/5/v77y/D311+8ihlfv3719/NnoEu/fuVhYWHBq/g/CH/79vXmu3fvjPn5+fEq/gfEf75++rz52bPnxhwcnDgVM0ODjvnalYu35RVV7f79+ycJirG/f/9iYGbkNAF076X/jMyBQA3s2DTAFIPczfDyxbPPLMzMB4HhrfP16zcJsCmMkOQDNACekBih7gc5mBeI+exdPGPYODk9//9nUAFikBgDQIABAM09iIFDDek1AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAW5JREFUeNp8ks1Kw0AQxydhU6sGxINUPVQUDz149e4b+ACCgl59AEEsehc8+AaFHvzAghfxIuLFIh4traalh0KaVpO0zYfm29mYlCKkA8Pu7Px2dvc/yxQvbgIA8NGrEPgVy7ZKu9tbJYzdaJ3mQ2OqQjNAA9M0Q1dVFfo99bHREPZO8ketaFO4ge1+KfApq2A5LkykJyGbXYL5hcWNleXV18P8cQ4ZQotSmDiOEx4Rj9TSU9Mwl8nM2q53ieF6dB2PtW0b/ruuG8CSFPA8nzs9O99BkKPVCU0mmev7wKW4TZwW6OHEspLhIGDAMH/WososQakSYc/3YKBpM9EjEbaSYZrTdGMwVGMcrCgKaq/XYp3H3lmSOqBrg7u4m4lqSJIE3W6nfl0sUK2dRFgURWi32/1WU9jH0BzCox00DANkWYaeqrzUa28Hwnv1YwQOyHO5/PejGKaPv65uf5u3Tw/3V7hEVdCoKFG74VeAAQDaxdSLiOs7LQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNJREFUeNo8iTEKADAIxEL9/0udRUSF9pYGMuQOdz/CzCQRQWZSVXQ3M8PuftXa338FGABp7SMpb2OFxQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUeNo8xtsJwAAIwECMr/0HcyJRS/vRwEGoKiLik5n/mxnujqryJiLcHbvLzNDdjwADAARbDu/0NmM1AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-left-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASVJREFUeNqcU8mugzAMzFpx58KR//8jbiAOoFZtD6AHElk6JEDdBam8iYSSGI/Hjs37vmfHMQV4j63nEdbaQxTG2vvtbq0RQkopAge+TB1jMeZ8ucBVyRkiIJqUD/p+Af68Xm8zC7AS4XiY6G8YnHNKY82gcgDhv2Ecx6Io3i+HESoiiyJcEV8UNU1T13XMhd5DzuL0Wp0lNZjpuaqqtm2xQfDoTK0iMMhVxQsRDYvK5XmeJMmmiFrnyjLO+BO7RNjDnGVZmqZlWX4QSc/CWi8pF++6jhLTaHCgqZkApfTppD9f7b3Y8biFolZUzRjrnDUG/uimZ+DdPtprLq3VNBlwOYfZ4iFfEQtyoCE3LheAMY26F0UY4n9Mv3PLO+A7V4rzhwADAFzx4BgPjY4eAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-left-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAY1JREFUeNqUk0tPwkAUhUvn0dJpBTHqVv0FsNWYaFzJX3ZlIgFZFgIbE6MxRCLBWA3Q0nY8bSXC4IOedjGZO/P13EcLV9dNLb9kHBJNMkoY1Qkhuq5Tx3FyIaIonLyNia4Z3OCcUUp1HaACjaIoF+XjdYT7ppE8nCWgQio6n883B028MSiWVYRMw2CMISlQEMoBisKAU2pZli0EQIbBUR3sf4H8IFi/8+Z5jZtGvX65vEm10CiaAqTUUWbnO+r7vkJx3c5tu43vKCFLIC3GOOMww3lWnV9BzVar1+tjgaNKiJUF46lYwqOUrIBms5XTtWrNNIuu60oplVBWDggZoeMokOJoppw+OjzY39vtdLpKaDr1hRCa1GIpNSkLCy1Aa59NdgmtVatKaDgaV7bL6HIUhpi+OI7/79qPGgxfdiolzGDaryQvLLIEk4Fc79of6vbvKuUSGkdo8n8hRcZkNpPk5OwCLjd8Yf9x8OzYYsu2l2uEzpDj0/M4j4IguH948rx3GLGFBQ4oKP+nAAMAB7f00otUtiAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-left-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXdJREFUeNqck0tuwjAURbHjT0iCxDbYAntgieyBEUJihsSk7QS1bAAxKNARJITExu513CIaaEV6FVmWX3J83ydkvV63muuQpunhYIw15hwEAaWUlGXZCJGfTsu3ZX7KpZBCcMYYpQARUhRFA0qePz2/4P52GMpQCu5ApBIzxjxIsdYuFq+gRFEbCqXknLukCEG0Aeh9s1FKRXGUxDFAUgpUB+ceRM/3tN1uh8Nh7XC3+0A6cQS18YTIrpKodMfRbDYbj8e4pxaCHRSFCy6qj311LlGmtb5+ezQazedzbHDhdQgFwsr97dzxGAt+gOD5GjQYDLrd7nQ6xb4WujQIBUbHUaC/QFC/3+/1epPJpBZCTs6XbRm3WvItHyWr1erBrmXZEU+SxJ1OgoKjzN7UV/tvHf0mdOmY5xjganwcApsLqwEIwgSlWVaURcDc/4UUObd+JhsMZDV7YEVKa1WqgHovLW+K7ff7f/z9Wmk4AMVa47pJ6acAAwDbUso/kA6gwAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-right-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT9JREFUeNqck0uLgzAUhfMSXAkdOiCi4Mb//39cua6MGxdK8+pJ0mZipjDjHEK10fvl3nuudJ5n60UIpZQUXuS8BGMMEGsNWFprKSUX4uNy4ZyfAoHDOMdyEkLgTkl1u82AnssonoyMjDHU1UeVUl/L8nm9/gcEAYQEHYoQsLZtK8vyRGlRKC0U6K9833d71DiOPzeDXLMjFc5xXyMoWhss7+a3Fq+u6+q6DokfXEv/G5ckZ8zViH6j2DR5/GJzmqZ1XYdhSI8RKRgPKA3tdkK70lfDPfbbtm2a5jV970Cvt62/WD9iB1BVVX3fwwHjlQbSdF7CY/h1v0ulpCgKkXgaDEkbfOhRPC3MkVIayxhH58eMYhYZ4gmKbPOU9svii8sC3sbnoJCOd8lZjjn6NTIHITYUhmahO5nlf9dDgAEAn/cvPZYArNYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-right-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYpJREFUeNqck01PwjAYx9eu2xLjNATjh2CRC+IBT/Kp5Woi8bCLBw9GphINRoMMonR9WVufbbhsxAPzn6Z76dNf/8/TloRhqLVWSslUy1QpCyFMrOYirutqbQBl2ylGhguhpNw/bGPbbgwyBkCaEIIxBkMsYcv5m986bsQinufBA1iQneM4NuAQNpR+LT/3Dlr/AUEPrI0vy1pTyhOKidMgteLN5MopKCu/1uuEc2Gq0Zej0flg4Pv+HyBQ+aFzX0CR0uOOIFwAqxodRY+TSXTW73e7JwihGgjqUn5kjhBSSjuucHLx5ffWylLK6/F4NpsNhxc1kF3ZGvCCKwJ7jNUcFbkHnU4QBFtDm9LWoiFeZ/VKEsY5qw4dtduQFNQoTSW0GqhMVeeCjVNpJqj2x3zB68ue9nrQb/3cgMyvslsiJRiGBopXq/f5ojgWO20/zC9ONrgQQnABW84pTW7v7hljDQ5kASrsCAGdjOPV1U24pkmzuwZzTV4aKO305fUhep48TXfPqNSPAAMAXbEphoLM6uIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-right-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX1JREFUeNqUk99ugjAUxtfSwtggGRn3voC7cZmXZpdGn8G38wV8D6/0xjvvJZnJUEoLtPuAiIpbJicN9M/Jr9/52pLlcqm1LoqCUotS4vu+53kP3YPZtq21ASrPcynldxy7rvvW7zuO0wlENpuNMaYWpZRKpUxFioXh8KMTi2y3W/zAAgiiABKJOCaJ6z6+DwYdSqu3BQhfsBhjlFL0wdrtojB87eBR3TNVVBRSVqp1FEVB8HKZPZ/Pp9NpEAS/gBDNQFe6QMkyR3IllUL/Mnu9Xq9Wq/F4PBqNauFnEOe8GZSKCCkKzW2F+SIvXWvtjJNdLBZwdjabXYEsyzor0ppeBLcZXGuBkP9ZRWuJtRSWuqBMl35xxlvZvV5vMpmEYVifzNXxZ1nWyMEalCdJEseHw+Ho+c9PrnvvqZlTgAJomko0xAMxjm3flvYnCKn1zYavuNlSSTRM4sndTylLQw2NHDBEKmQqGbNuvfsH9LXfm9NDgztCiMa1TvEjwADa4Bo+zuuFWwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-up-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQ5JREFUeNrUk9FuwyAMRbFxHvIn+f8PSpTkKe1DOilSUyhk16bTJjStm7SH7UpERj6+gCG0bVvbts6544NyzlUAxRjZ/UR/msaBhmHA91v0siwn03M6hDBNE4J5nhE/ofu+TykhQKfHcayyUs27rqtu59/0+9doqZp9ve7oIBE5cp7ZizDiikanLpeX/baLB8NKO0Ib0y1g2jTyTsPsdD7jfTQiMPNcChweChqeUg4hihXoWNcVqEAw8cVd7fGucD/McMuHXZPg/4n3u/cKizdrbNd7WxkFmVS5SLAK8gqa2Fgi3YnZG0xwR3wIxgPixwb0gIYWlfNpALok3vrwiUoWgZpa/Vd3VFzKOq8CDACjBLiBGK0ZHAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-up-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNrUU0tLw0AQ3sdkk2wa21qfrYoogjcPnvwP9Rd7sArV9iC1YKEtggcRRC1iiX1lk3WygaK9VMGDftnM7Ga++XYzk9CTs0vf96MoCg3Gk8nYYDRKDF7pk0kYqjBk5Cf402ytdbV6gfZb7JtWq93pdLrd+ewgCGq1Ok6azeZwOJzDPq1UsOo4UUo1GtczUZhZH5fLM935N/X+NfaXmsSRAh3ZrsU8Gzs5GAyfX17xi51lax2P3vuMxK7rWAiwKKP57MLaytL9w2P79o6YJoCRjN56TwK49KTrSlsI5DPGYh0rFe1sby4X8uf1qyD9G4J+T1hcSul5XgZHBkcCP+P76DyvsJg/OjxItDEfMxzHldJNlKWLwkII1CaEqkhxzgFgs1Tc2igCJ7FtC8exbTu5LcMFsDhnlFKIAR1mcuD7e7tgARcG+GoIDJgwNR4t0UTgJrgsra9CSkLgjngyZEzrlc4xQCysp87lsownajxV+kydJtD0JAYfAgwAo0qgTdQcI7EAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-up-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU5JREFUeNrkkj1vgzAQhrF9/sB05v//gGSJlCE/IIK2azNkz5YiAflQAAN9baQkytC0W6Uewpzxc3f2vWa73S5N03Ech2B932N0zvXBrg5+1nXNo9/Yn6ZxoPl8jvFH9Hq9zvM8y7LndFVVy+USzmq1Qsue0LPZrGkaOG3bLhaLh1X2X9X5xuh+Upblfl9cmgvnnDGmlTKxkUSPNBq13W4/i8IYI6XkzD+dc5eywvQlsTcacry+vaPhSWLj2CKlD+B8GNH4Hqv14ZiEAE9/bDYQx1qbeNxqDVqBhmRQBzuBrnA8DYVOp3NsYgsw9iMSK+VpKO16J4Qgoq7rXNfR4XA0WhmjtfavDCyRFMIflAbCB5GCBMQn3AEVTKIkEQ/twDu1BQXGSKGI3xhonJ2CoaK/ZYzdblzwsRDJMYpwCsOFzyamTPfoNYBNOwn2JcAAJXXV9kM4kCMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUlJREFUeNqMkb1OwzAQxy+OExgZeAAk1IWhon0V1oqB12BkR0LiEUCCCioxQFmYIR2YWkqFBFKqxpQ25It8f5gzShADlWrrZ/vs+/vsO+n0vMObzQZ8zD8hTVNIkuSHOEaSGOeK5PdMoPW0gnDO7SzLQJIkWLYJfwDJI6gZ+L4PCqVLi4MgwGD8laRp1jZNE1RVWVos/OMwvJaZMRnUtxs7lNJ1qij47wzyPF/IeDyG6Tvr3XWvDoj2cB/NZ9PWRNctz3WAELIwomEYwBhz3l6G+2g6Mg78tnsz26zVLlbU1XrB8w2RkCzLgWOPoggsywJd12HKmDbsP+49P/VHqPOqFItZZEw9PDrelanSCsJoy3bcNe/Ls0M/GLmu3bk8O2mjjy9yhiR/6yPW4s1KiYrI5V6B5EKApCXFf8WtLqkQNi8vqBA2fAswAMMZzeG4WyTTAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUeNpiXLpynZGR4as3737//v0LDH7+/AWEMAAR+wWUPX7iBECAAQBhgCfi/ZM1bwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-disabled-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUdJREFUeNqUUT1PwzAQvThplzIwsJUhA1kY+Av9EawVAzPwBxj5NxVi69iqG0qZS+gABCGQkihtonwotZMzvspBXZCKpeezfe+dz8/GZDqTjuNAkqbQNA0IIaCua+BcbNdCcOB0JurfHEXvxUMmpUxIZBgG7DuIr0bG1LSoqgosy9pbvNlsKLwxVWWUqpb/Iya+4HxsHvR6ixPHOTcZO6IC9CZEVK3hNiI20GC7RgjDEFareP7kPt4xz3uukmQ9jKJwXZYFMMb+vDGOY0L6/fV5Sw2Ytm3LuetG/eP+fcfqnkmQNhmiTVGuc8jyDIIgoBtd//318sP3l2SYMRgMiENW06O7V9c3F4yZQyU6zYvisCzLRBm0LIr8YTadjBSnUCipbituC1DPHY2ugqnPkH6IBApCA3ctlpqAOllpoaFzuAPaw48AAwDbB9BTAAnfJQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpi3LvvgKqq6oePH//+/fv79+8/f/78+vUbDED0HyAEC/75++fq1WsAAQYAbM4oZ81Xt6sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-disabled-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUpJREFUeNqUkbtKA0EUQO88drNJdjMJSSyUoGghmkJE1HJrsfKBGEtLn5Wf4FfY2lvYqaT3B8TCkPULEtiwI/uY8Y5sEUQxXjjMneGemTszxPd9+BYEoTkkR+eoHJMD/0EyaxZiI2xMzpAYSZDUbMLHRJPbJ6dnHcb4VhzHbfkhF6JI9qWUr1JG3e7T4x3WRDkxwba/xMNOZ67Vmr0ploq+UhqyTAGlFMJRCKMwhMFwCMPB4Lnfe7sKgn4PndCcxs4vLlc8z3sQ1WqNcwvwVCSBJEmg6DjAGINy2QXO+GaaZvca9P57ELzQpaVlB53bZnOqViqVQSkFv0W9XjeI6ZnWNU4F3dndO3Zdd9GrVLDVDP6KRqMBnlfZWF1bP6LY0oEQAtI0hUnD1Fu2vW2+pu3gvf4jFwoFM8xTQkjVPIjWemKZWxzrQXwKMAAaxXA5BvQ04AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVNJREFUeNpiZMAEjEDMBMWMUPwfiv9B8X+YQnRNLEDMCsRsQMyMpPkvEP8C4t9A/AdkCCOSRpAmtp7+SZEsrGye37591/7y7avy5y9f73/59PnGly+f9q1etmg9UM03KP4FcxZLcVmFgrq61mxuXh77v//+M/z584+BmYWZ4f3792D88uUrhjevXp28euls6fWrl+8C9XwGOYtlwuSpBgryiofEJCQ0eHj5GZiZWRiYmJgZ/v77C6SZGNjZ2Rn4+QWA/H8yzGwcQYwM//a/ef3qE7O5hSWXo7PrDikZGRlOLm6GX79+M/z9+xcr5uLiAtEcTMysGnduXtvB3NrRmyEsLBwjKirGAPQnTo3IBnz99k1aUET0PRMrK0sYUDPYRmIBSD07J6c30///DNrc3NwMv//8IVozyPb//xmVmBgZGQVYWFiAnP9Ea2ZlZQWp5wcIMAAiP6Ghx1+GGwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpifP36NRMTEzMYMCEBRjBgAIP/YPDv3z+AAAMArN8L7foJbfsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUeNokxsEJADAIA0Cise4/mBNJtNDe61BV58nMH5IR4e5mBmB3Z0ZSd18BBgDIAA7SuCPczwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scrollview-bottom-corner-color.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAIAAAC0tAIdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiPHPmDAPRgAWIjY2NiVTNxEAKGFU9qpoYABBgABtHAx0Ze9+BAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUCFtj2rt3L5OTkxPTt2/fmP79+8f0//9/MI2M//79i5WNjY9sxokTJwBXtEPtiHmeoQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpi2Lt370yG////z2T69u0bA9O/f/8YmIBcKAuN+Pv3Lx4uTjE0Q0+cOMEAEGAAD7lHUquXzXYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpi2Lt370ym////MyAR//79gxJoXDTi79+/eGSxGQC3AyDAAN4mR4fIJKx/AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpi3Lt3LwsDA4M3EFsBsQDL////fWVlZT3k5eUZ2NnZGZiAAtYyMjIM//79Y/j27RsDC5DBC+LAAEgLAwjDBUCyKCrIFPj79y8dtNDEDGQBUBB+/vXrFwMsoJiAskefPHnC8PPnT7BKUBBufv78OQsQmwF18AEEGAD19p6n4TmfGAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHlJREFUeNpi3Lt370wGBoYPQHwMiLcy/v//f+bPnz8ZHj58yPD48eMdTN++fWP49+8fg4yMDANQ0poFxIEBIJuXBSgKFwCx0VWQJfD37186aKGJGRgCsAD6/fs3KIA+g1WAOM+ePQOpOMpy4sQJkIJPQHwKiDcDBBgAYcihtIbGbDIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUCFtj2rt3L9P////h+N+/f2CMzEbGf//+xRDDpgdqHgArhUbwsMigfwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUCFtj6tpwjCnS2Yzp2tufTP/+/Qfif0x/gRhM/wWx/0JoOBvGB9JoapD1gsy6eu4kADcbQ5oyd/JRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUeNpi6tpwbCZTpLMZA9O1tz8ZmP79+w8i/jEw/QURENZfMPcvjIXERYj9hepAU4xmFNj4q+dOMgAEGACr+UQz3IvZcgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADJJREFUeNpi6tpwbCbTv3//GJj+///PAGFhEH8ZmP7+xcb6C1UCZiEkEGLYzANZBBBgAL41RzPloL1CAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi7NpwjIWBgcEbiK2AWIDl379/vhpyEh6aClIMXOxsDCz///+3FpeQYHjyjYHhz5efDCAVvB9+ARUz/AMRYAEGEIYBsMBfdAE0FX8Z/v5FEgBx/gIFCaj4i24Gspa/f0Fa/qK5A9UMNBUQa/E5DOIXDFvwew7VUCagwOffv34xwFSCBI6/fPaU4ddPkOB/cCBvfPvqORMQmwF18AEEGADSXZ0uKgg45QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKdJREFUeNqUkEsKwjAQhv9Ktq7tXbyhN+gtdCF4goou3PlYiooPqCAWCm0zE2d8EWNBDPwQvnwzkyTq9dMEwEWSSobRNrdJUVZYrvdYbY6j1uJcYlcAnTiGc65rmB0qjfjM3BbAeC3dGwrBt0E+IC2hN9DDBsMDD8MreRp+Dwp7cJPB/GvsxxQO70H44/lkrYL8/oW2rpGdDgrGZj6bqHCVTCWDmwADABEdo9VXvegQAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACtJREFUCFtj6tpwjOnfv39M////B9Oo+C/T37/o9F+wHIiGicH46PqBZgIAEU5GmoIeoQQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUGFdj6dpwjI2BgaEOiBOAWJrl379/jRpyEhWaClIMXOxsDCz///9PFpeQYHjyjYHhz5efDCAVoh9+ARUz/AMRYAEGEIYBsMBfdAE0FX8Z/v5FEgBx/gIFCaj4i24Gspa/f0FaUMz4h24GmgqItfgcBvELhi34PYfp/de/f/0SZWZhgQssePnsaamIuCQDCysrOJBr3r56zgzEUUAFEgD4NZMFqr7d7gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUGNOVjzsKwlAQRU/kbUHM/tyGlZW4ilTWrkKwsfNTit+IWgmBJG/us/BDjAFxysOZe2ei4XgSgD2QAP1oe/MhywuW6wOrTTpoLa45uww6cUwIoeukQKFAAUhqO0m8RhLO6uDbsCownMnewKzRqICHUVl5GtUMq2eoyZB+1X60qH6H8cf75j2Szk4K+LLkcjoiKXHz2RQgBUZA7w6pZqOrnOa4eAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUGFdj2rt3LxsQtwDxEyD+z/T///9GGRmZamtra2knJycGkEAyUIDh379/DN++fWNgAjJEQZy/f/+CBUEqGJAxSAUDMiZXAGQDDNNOC03MQBEABsrrX79+oQTQ3CdPnjD8/PkTrqL++fPnfWfPnn1x4sQJBgBuoxapBuMd2gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUCJljmjx5MpOFhQUTIyMjEwjAaGTAzMyMk48uBzODh4eHae/evQACDwVlbTA8UgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUCFtjCquZyKRtbM7ExMjEBCWYmMEkkGYGsZmhNIgPZYNomDiSGmS9OqLsTEt3nwQA4LgFKynwVH4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJlJREFUGJVjCauZyMbAwFAHxAlALM3CxMTUKCQqXiEsLsHAwsrGwMLIyJgsJinDwMzCwgACIBWirGysDDAAEmAAYRQBZnQBFBXMzMwMzMwYWpiRBdBUgDjMmGYwo5nBjF8FM6otYENR3YHVWnwOI8r7r/nZGEW//2Ni+PPvP1hg7uuXLyq0FaUZONkhgVx/8/FLNiCOAuqQAAAUvBbWQgxxhgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUGFeNj8ENAQEQRd/8GYvEdSVCogBuDjrRgDLsSQc6cKEJFShEspsNBSA4CdZKzPHlzf8zNstWd+AArIFljCZTrpdz/1jki1NZuGQiSVp0ewPMbB6SAaCkgaQ0JPEcSYRXwbfhL+DuhMt/G5J/hrqLcPc34NWVWuOjxat31Ne+Z9QZ/70fMtq6IanUOG0y7BhlkSNpHZvdHiAHtmaWPQB3Dxpmsh5qIwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHZJREFUGJVjmjx5MhsQtwDxEyD+z8TIyNgoKSlZbWRkJG1hYcEAEkiWlpZmYGdnZwCyGZiAQBTEAdIQDBJFxkxwGQQmS4CZmRmO6WgGNaxFwcBAeQ0NGHgAzX327BkDKysrAw8PD1hF/ePHj/sOHz78Yu/evQwAKaocei2dPwMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHpJREFUGJVjmjx58n8gfgLELUDMxmRhYcFgZGQkLSkpWc3IyNjIBCQY2NnZGaSlpRmA7GQmIGAAYZAgkBYFq0DGcBVImGQBZmZmBhimoxnUsBZDABoosAB6zcTDw8PAysrK8OzZM5DEAqa9e/cyHD58+MXjx4/7gCpqACrxHHpLd88mAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHRJREFUGFdj3Lt3738GBoanQLwAiJsY/wPBz58/GR4+fMjw+PHjDqZv374x/Pv3j0FGRoYBKJfMAuLAAJAtygIUhQuA2OgqyBL4+/cvHbTQxAwMAVgA/f79GxRAr8EqQJxnz56BVMxlOXHiBEjBCyBeBsT1APoAoYpapz15AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5dJREFUWMPNmMtLG0Ecx2eDRopFGijUVCpeSnvxVKSn/geFXAIVLJ7EQntoCsWKPQqpLYgQjW9UtCD4QOv7GYOoSUWJokERUfGBDxRBQw/SMP19hxGs7K6JZiGBD4bZ33y/38zOzM7KOOcsHoiLEPEZJJpPc3Nz0sDAQBbxjngvwfcsXBsfH2eRcpsgSk9Pj214ePjX6OhoyO/386WlJb68vCzAd7ThGmpQiz5jY2NMj2iCKJ2dnS+HhoZ+z83N8Z2dHX5+fs5DoZD4e3Z2JrjahhrUog/6QoMCMjUiDWKiX/aJfuHF5uamMDk9PeXHx8e6oAa16IO+0IDWyMgIu04kQRDCtbi4yA8ODoTB0dFRVKAP+kIDWtCkUWJXuSmIqaOjw7GwsMBPTk744eHhnYAGtKAJ7cHBQXaJXhClqanpVV9f38X29jbf39+PCdCCJrTh0d/fz4BekMTu7m7/6uoq39vbiynQhDY8KBQDWkGUxsZG+9TUFN/d3TUEaMNDbgeaQRLb2to8wWBQDKURQBsecuTVg9hstoddXV1/sey2trYMAdrwkF6qQZSysrLXtLb5xsaGocADXvBUC5JQWVn5eWJigq+vrxsKPKqqqr7AUy2ImYJ883q9fG1tzVDgAS94qgVJKi8vL/F4PHxlZcVQ4AEveKoGKS0t/UrPBjGzjQQe8NIKYi4qKrLTTBaPdCOBB7y0bk1CZmZmBm3BYTwX8KAyAmjDA15ak1UhLG632zc5OckDgYAhQBse8NJavvgkFxYWfqDDDJ+fnzcEaMMDXg0NDZpbvJl4TDM6gE0Hp6xYAk1owwNe9fX12g89IiU/P/9NbW1tGMM4OzsbE6AFTWjDA151dXX6xwDiEc3qEjrI8JmZGXEovgvQgBY0oQ2PmpoaBnQPRsQ9Ir24uPhne3u72JJ9Pt+tQF9oQAuaUluprq5m4MajInGfyCgoKPhBszzc29vLp6eno4IOPlghYWhAS2qaaHtnl0R0eJYd07Ozs9/SThhsaWnhdLwT9xsHHDVwDTWoRZ+cnJxcORIiBAVjV4n4dUIOJe7rs7y8vI9Op9Prcrn+0NLjra2t/4E2XEMNaqnPcyJVapgqKirYdaJ6wZITGDPdSjy1WCwv7HZ7rsPhcBLfJU60Wa3WLNTI2hTZV6Fly9S41SunFE0mHshRSiOeSNJkm0XWiAA0QkyPO72Ey1AJcgNMkphlmxKNUNz9W+Ifu9qUIf+T8EoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-disabled-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABCRJREFUeNrsWElLW1EUfi9DY4yCimgcUBtUuihtN666iYlBA6LYLOoPcOO09SeI2J0TKKIiCC1oF7oJiaXdZOFGbG2xZKGxzvMYM+f1fOl7ksQk5mkCLnrhkDfd833vO+eee15YjuOYpzDY/0TiEWFZNulJ09PTsvz8/FI6LCOT8JeDZH+Oj4+3S0pK/Mn60ul0oV+ZGNLz8/OvFArFW4lE8iI7O1uhUqluXwAv5HQ6Gblc7vH7/b89Ho+tqanpx+LiIpcqRdi5ubkKAm0lFSoKCwuZnJyc0POYGz5fuHZ+fs4cHBwwpI6DyH00mUwOq9Uak1BdXV1SRKCCnlR4V11dLSUiDL0tEwgEEr6dVCplZDIZiDB2uz1A6nwmdb5YLJY7ZAwGw71EQOJ9eXl5LVSA42AwKCoBKYQh4lBnc3PzK5H5ZDabI8jU19f/ezZeOGZnZ3VlZWW1paWlIZJQQQhFsoY5mAsf8AWfDQ0NbPgzt6RjkZiamqrMyMgw5eXlMV6vN6TEYww+4As+4dtoNLLCPWHEWjUSSkZTZWWlFLEWG45EeQOfFCoTnX4gNSISLVoRdnJy8jUl5fOsrCzRobjP4BO+gdHY2MgmUkRCy1Sbm5ubMiWiB3wDgw6/E0YgJpHm5mYlFaSqzMzMtBGBb2AAi1S6jkWE1Wq1GmIric7oVA9gAKulpWWV44EiiFDhUhPbtKkhDGDQCiqiw5/YHaKJIHFVWPfpJsJvBZk8ZvBOjlABCmXyfSX8sYPHiCjlEUSo8Lh9Pl/aFQEGsOISOTk52b+5uUk7EWAAKx6R4MLCwibtshxkE9MoiRlYJBcXFxywhPyIJsKtrq66qH/YuLy81FDjkxYiV1dXaKA2gCWsmDtEkK9bW1tLarUa9SQtRI6OjhhgAGtiYoKLt9cE+vr6VnZ3d7cohinfa+ATvoEBrER7Ddatm2QzU3Fro6LDkqVECbfbzTgcDoTfjFNghVfvaCK44xsbG7PTLmmhHqK+uLg41Gk9tm4cHh6CiAW+gTE6OsqFKxILAXddvb2939bW1pZ2dnYYl8v14HBgLnzAF3zCNzCi97N4PStOnpFl9fT0aKlvNVCrx6LLEjPOzs7Qq3Jk1v7+fpDAbusdGRm5ZdDe3n5/88yTUbW2tlbV1NQYCwoKikAGSzteuCA3lujp6SnCsbe8vGyemZlBOJwgMTw8HLGtd3R0JPc5weeREtbW1vZSo9G8oU4LHZxcqVRGPIwwXF9f+8g21tfXV8bHx3+hkPLh8A8NDd3pLTo7O5P/wOJzSU6mgFGXpdTr9UXUnavDPzm3t7f3bTbb/t7eHsA9vPlwb3BwMGaD09XVJfrbVyAEhaT8r4S/Lqw4JLqfLwP4DQ4MDCTssLq7ux/+Ec6DszFWXZAnxInZe57U3xJ/BRgARVYyv4nD3moAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-disabled-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGhJREFUeNpiVFNTE+Dk5IxiY2PT/vXr19Xv378vYxEVFU2QkpLS5OHhYfj69av+06dPOVmkpaWV5OXlGYCqGYCqGBgZGZWYgCrugQRYWFjAEiA+05cvXxb9+PHj6p8/fxhANJA/HyDAALRmJzIlcakAAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUCB1jUFNTk9bX199oamr6E0SD+AzW1ta7QkND/ycmJv4PCwv7D+QfYAAyPpeWlv6vq6v7D6LDw8N/MiQlJe0CCTQ1NYElkpOTwSrlysrKtoMkQDRQpRwAeJEtgtzX+HUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/spinner.gif +Content-Transfer-Encoding:base64 + +R0lGODlhEAAQAPQAAO7u7gAAAODg4IGBgdHR0UFBQXJycgAAAFJSUiEhIaGhobKyshISEpKSkgMDAzIyMmFhYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAAKAAEALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQACgACACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQACgADACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkEAAoABAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkEAAoABQAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkEAAoABgAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAAKAAcALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkEAAoACAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAAKAAkALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQACgAKACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQACgALACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-ascending.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAYAAAArzdW1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK1JREFUeNpi/P//PwMhwITG59DX1+8B0bgUseTl5YUyMzMXJwMBkM+KTZHAvXv36kVFRRlevHhRCuQLoStiLS8vj/7z54+yoKAgw79//+QLCgoSYKbBFAleuXKlhJeXl4GDg4OBh4eH4datW3lAE8VgiliBbkkB6pYBKWBiYgIrBAKp9vZ2kNvYWEBuefv2rZ+qquoXfn5+TkZGRgZQsACt/f7u3TtvoPx0gAADAHykNUXFhlgVAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-descending.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAYAAAArzdW1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANdJREFUeNpi/P//P4+JicnuX79+WTAyMjLAAFCcgY2N7cSZM2dcWYB8/rKysiOLFi2yYGVlhSv6/fs3Q0JCwkGQPEjRj7CwsOsXL1789OzZMz6Qaf/+/WOQl5d/HxISchMkzwQkPgLxBR8fn30g3SAAUgTk7wYyz4PkQYr+APEDS0vLjcrKyu///v3LoKam9sbU1HQzUPwhSJ4J6gSYabu/f//+39/ffzuQfxGIP8F9AcWCQBy2cuXKtUA6GIj5YXKMIAIKmIFYFoglgPgZED8BOQ8kARBgAHkkbCsrrUGyAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-highlighted-pressed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADtJREFUeNo8i8sNACAMQpH9p6oTGb2oB7Sx9kD4vFDMKufalEQAxHVB2SVEvvIczPfHlZ/fnY3ejgADAPV/LBeRV6LeAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACtJREFUeNpi/vT5C9OPHz+Z/v//z8TAwACmYRiZz8AAonHLo/M/fngHEGAAmHc1lNgXMmwAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-pressed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiOHPmDBMDAwPT////cdIwjIuPRT3LkydPAAIMAGirLBgXU933AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNocw4kNwCAMADHd/qtlF74QfqgaS+a9x//e68857L1Za/k5J2MMeu+01jAzaq2oqi+lkHMmpeRjjIQQEJFPgAEAIdRCSGGFwR8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableviewselection.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAACXBIWXMAAAsTAAALEwEAmpwYAAAPU2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarVd5NNT/17+f2W2DsWYda7KF7LLvawyyFY2ZsTVmxhhEZElJaeGbRKlot6QokZISlbRIUigVXy1oQSIxvz/0/X6f5/c7z3nOc85z/3if1/ue+7r3de95n3PPG0CcTOVwmCgAiGfxuBRXB3JwSCgZ/xKwIAwSYAFaVFoix97X1wv+R5t9DggAQK8elcNhwv/NiNzgkFAARBcAJKOXsR0ASEYu4wAAkEzhcXgASAwASNJiqHQAJB0AdLkBFEcA5BwAEKOXcRMAECOX8T0AICbTonkAyAsAHIlFj2UB4CcAcDZ0RiINgKgLAHR6Ii0egHgAAOUQH8+mA4g9AwAtGofLAxD7BQDqwSGh5GXJUWgAywcAuMF/fJvnAOryAVSm//GpDwBIdQJUBf3jm6YAAgCI9OPEqDVGAACACDsAYF/z+dOaAPgigMVCPn+hks9fPAmAHgJoY9KSuMm/54UgDwH+t/tyz78NjQCgAEAZ4mEEiUAmUaXoEIw2VhqHxksSrAUYgieEJkUciEdFf4mzSeOSVKlJmSjZablUBYziQWV58nFVfbUWDVvNdi33Va06rrot+sqrSwzRRlvWPDUxNS03m7Zwsiy2+mRtY5Nie8UecbBzDHc65PzA5bObkLu2h4snzSvTu8Sned1bPxRlpb9XwObAnesrgm4G94dMh63YYLjRMZwakb6piHo68irtAX2AMR61ECMQKxGnsFmFqRm/mmXENueYJVhwjRJ1eKuSVJJlUyS3CG5ZTP2cNrj1fvrVjPPbDmZmZsVle+eYblfOFcz9uqNn55W8g7u259N3O+9RK0AVfNw7um/hgEKhadG6P8IPJhXvPlRT0nK4p3So7MtRgXLZY+rHTU64VARUhp+MOZVyeuuZvLMHzu05v7+qsLqopqi2/EJpXdHFgku59Vsbki4nXKE1rr/q1WTXbHRNrYXUsnR94sZAa+vNi22Hbm27Hd3uf2dth2aneOf83eF7LfdPd+1+wOsOeqj3cPZR9eONT8SetPewnyo/7evNebb62eu+gudWz8f7S194vFh4eXYgeFBwsHmI8UrqVffr1OFVw2/eHHhr93bq3dmR0FHiaOef28ZMxiben/5A/6j2cfBT2Xj4hNrE6GTN55Qvjl+JXz98a5o6MM2e8ftuMavzQ2dOb972Z8xC1SJxqYnPBwAxMAce3EbIyC6EjypCm6InMDewR3H78YcItQK9QmhhT5FC4hsxa/EjEjjJzVIPZcxla+Xk5NMVRpTslM+oiKjGqHVrGGjmrRxapaXN1WnXk9QPWF1sMGSktibY+KTJgBmYW1okW1ZY3Vs7ZaNi62sXbV/kUOd4z2nEeclVzs3M3deD4cnzyvIu8Dm+rt63ze8B5bn/WMBU4Oz6pWCREFKoRJjCBpWNCuHyEfKb5KnKkXI0KboEQyAKouajP8e8i30R1735OrMmvpy1j53FSUyI5volOvEMk5SShZPnU0a3PE29kXZ2a3H6jozYbRsyXbIMs+Vy0DmT24dy+3YM7/ya9ysfu1twj3iB4l7dfSb7bQ7YFboXhf1BPUgv5hzaWrLj8J7S/WUnjlQcrStvOdZx/NGJ5xWvKkdOTpz6eQZ9lnCOeF62SqvauMa61v0CpS74IuNSUn16Q+7lfVfKGquv3mi63dx97V3L2PXZVsJNUpvCLe3bVu1+dxgd3M70u1vv0e47dql0LT7o6b7wMO8R7bHtE+knH3ran5b3cp459cn1fXne1l/yIu6lzQBp4NXgpaG8VxGvjYfxw+/eXH675x11xGxUePTDn51jp99nf9j4ce0n8jh2fHKie7Lxc+WXgq9bvsVMhU77zrh/t5+1/GEyZzJv/nPtgvUvl0XfJSrfg88HACIYAA3OwjzijzSjdFDn0UboDgwdK4K9g8vE2xMECW8FrguWCWUJs0ToxA2i68UCxSmkYImNklSpOOlUmTzZwhXlcvXytxQ6FfuVPil/I8+pImpC6gQNkqboSmEtuVUC2hgdRGdad0JvSP/+6kaDcsMsI8YaR2N9E4LJO9M2swrzXAu6pYOVvNX3tX3WjTYHbVl2bvY6DojDkON1p6POKS4+rnpuQm5j7m0epZ4cLxdvBe9ZnwfrTvhu8fOgqFNm/e8HHAtMWO8QRAoaDW4IyQr1D1MMe7/h8sbscL8I5YgPmy5SUyOdaaK0l/STDGaUYdT36OaYzFifOIm4/s3lzNh47fivrCb2No5XAilhgHs6kcWzSRJIepZcmcLaYp6KSe1JK98an26dIZIxtK06My2Lkq2aPZNzb/vR3OQdrjsVds7kde+qzE/dTdmjXYAqGNjbsK94P/uAWyG5cL7o+R9NB4uLuYc8SlYexhweLr1RduxI0tGgcpNjksfhBKpCuJJ0UvKUzGn5M8pnlc/Jn5etkqqWrJGolbwgVSd7Uf6SfL1Ug8xl5StajXpX9ZqMmx2u+bVQryfe2NlafvNu2/CthXb1Ox4daZ2X7n68r9616UFl99wj/8cXe8SepvRO9+X3S7xoGEgYWvNqcXjhHWbUdaz6o+WE5Ze9003zdXw+wPLuAwDAmQIcjgAIUQTwcwUoWAuw0hxAahOArwhAgAWg9CUB+X4bEIf9f++PFWAJoZAO5XALRhAMooV4IRzkINKMDKNwKH1UICoDdRr1BDWPVkP7oTPQVeiXGALGHBODKcM8wqKx5th47EnsIE4K54vbg7uLJ+Bd8TvwdwkihPWEMsKIgJ4AT+COoJQgXbBBCC8UIdQkTBKOF74noiGyR2SaGES8JqohWi4mLLZV7Ks4S3ySFE/6KsGTmJfcLiUsdUBaRvqUjL7MNVlP2eEVyXKCcqfk7eVfKnAUJRSblUKUfimfIq8jL6lUqW5UI6l1qGdomGv80Gxemanlskpo1UvtUzqpuh56WvpY/eHVHQbnDHcbpaxhGG8w8TddZ+Zs7mLhbuljtWltrHWKTY5thV2z/ZDDZyeSs4VLtGuRW5X7aY8Dntlead4cn+R1Cb4JfgwKy58dkBlYsH5vUEnwhZDboT1hYxv44UoR1puCqDmRlbT7DHSUYTQ9piy2dzMwHeJ3sZ5w5BNiuVcSl5I2JTduEUllpT1JN8k4mSmetS2bv52ZO7kzPm8iP2b3lwLO3rn9uYVaRfUHPYv7SraVuh4JKGce31Fx9eTjM5hz5lUJNacvjFxa0RB15djV99fWXk9sfXxLpJ3acfUe0hXSffzReI91b35fywvSgN9Q9us7b6ZGZP50e0/5mDy+bTLjS9K30GnlmbHZ0jnd+bMLAr8oi+FLWXw+ABhCFByCDviGKCHuCA85jnQhsygyyguVhjqLeoZGo43QVHQRugM9j9HDbMIcwjzE4rEO2AzsdexPnAUuFXcDD3gnfD7+KUGBEENoEhAQCBWoFlgSDBK8JCQkxBC6JawhnC38TsRT5BqRTMwjzorGir4S8xPrELcUv0EyIV2RsJK4Jekm2SMVJjUmnSSDlzkmay77fAVHTkiuSt5bfkahTNFGcVzpmLKn8hz5okqcqrLqoFqFeqTGSo0JzYsrs7TWrVJc9UP7kc4Z3V16Ufquqw0M5AxxhjNGI2ueGrebtJleNmswb7Cot2y2al3baf3M5o3tJ3uMA9FxpZON8waXNNcSt1r3eo8qz2qvOu9mn7vrenz7/YYp3wKQQKX1ekHmwYEhvND8sMoNNze+jcBtUqJ6RsbR9tIbGEPR+BjT2Ki40s23mVMsbTaNU57wMBF4VknJyZdSplLN0xK21qb/2GabuTPrQY7Idp/cih1Tefq7duf371Eq4O59sJ98ILHw9h+iByOLb5eoHC4rszsyXl52PKJCqrL3VMEZ73Pq599X19UW1G26ZNagcHmmcaip+drl6+Wt2W3022F31nYa3yN3SXSLPJx7PNzT0dvYd65/z0vmoMcrm2HpN1Pvno3WjuV8WP9JaXx8suVL3jfvaeJM12zxnPdPkYXriyw+HwAsIAWuwAyyBklA6pEZlAlqC+oGGoV2Re9FP8coY5iYJiwOG4Q9j13A+eBO4/j4YPxFghghkfBUwFigXBAvyBUcFgoQuiNsLdwkoivSQDQmXhV1FH0gFi42Lb6bpEvqlkiWlJXsksqQNpB+K1MiS1khuaJfrlg+REFNYUrxmlKhMo28RkVIZUK1U+2Uep4GWzNspZeWzSp9bR0dVV01PSV9rdV6BmaGbkZha9jG+03Omj42+2GhbOlqlbi21nrMVslug/0Rh2EnXedMl2ducu48j14vDe99PhO+FL8a/xUBGYEfgtyDm0NVw4o2EsLTIqapUZEDdH/G42ifmJtxTptb4+1YjRy7hLZEW97dZJ+U3tSItE/pqRlzmXnZ8jn1ua47HufRds3vPlpgtPfZfm6hcNG1g5TixZKjpaSy5COD5b7Hbp0wrTh/UulU5RnNs1Xn9asaasxqr9fZXeyod294e4XbONuU1rzY8scNjdZzbdq3atr179R1GtytuU/sKugWesh9NPLEr+diL/EZs+9+v8aLrJfPB2WHgl8dft3/Ruot5V3eyIXR9j8Hx/gfpD6qfVIdV5lQnlT8vOLz4pfXX1u/lU/FTBtOT89c+h4/S57t+5E0Jzx3at54/uZPz59dCxYL537J/Er/dW9RajFy8cLiwpLr0oGll3w1PpPfyOcDLP+XAABA0JHNZHPJXo5O8P9r8cykv2qQAECYFemz7jf+wOH5BgCANAD8TEz2dwYAMQBELCrWxf03JtOpTp4AoACAGKTFOPoAgDAA4hXFdaEsc5HgOKqHLwAQARAWgxXov5wfSecwfb1+430cngMFAGQBkBOMROe/YprSYgKCfnO7uEmUQABQB0BebGZ7Un7X+kVnOP3WhiKwmD5ey3VRsrE89wAAkARA6YMLUIEL0cAAPfACR3D6fZKBCmRwBDZwgQGJ4AKjwIXov6PWwyhwIfbfWHoQBVTgQjIwIBE2wxhwIT4iNocL5H/LTgM2JAETGJAEXINqg48Gv/6OcQQ2MIEN/7A8/8PzV55/YmOBDuz/lp8JbOBGxOZw4+ujkg+zUy3Xx2A0MUYYE4wDxhpjg7EAMkYaIwd6GGOMOcYeY4uxwphgLB5NXJ34u87yfCL/7tPzL83AANZ/zIz2X9TA8v8dAAAnBnA0HwCg/dK5/3hrPMYWHgCAI5uTyo2NjuGR7TkcJkOX7M6i6euSjQwMLOBf/0ZN7hNwtO8AAAAgY0hSTQAAbZgAAHOOAADi5AAAhvsAAHXhAADNcwAAMq0AABrd66B7UwAAAD9JREFUeNpUirENgDAQxKLrKCiYi72Yjo3y9tOkIJVl2eN+3lznkTkr2ilcJEXH5eCvGTXYAUIZNNDR/QO+AQD8FEZFeDuoxQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAIAAACOpGH9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1jWLRqJ8OFq3cYPnz8zPD//3+qYKBZAMWVP/kpEKROAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-focused-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAYAAADtlXTHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADdJREFUCB1jWHjqkTwDkIgHEftAxH+GRat3/Wc4f/XOf4Z3Hz79Z/jz9x+NCLDxYCthloOdoQAAdj5sTxjpYWAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-focused-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAAeCAYAAADKO/UvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApdJREFUSMed1UtPE1EYBuAaMS7QhMiCxhjdqBtxqT/AG0tNcGGicaEu5EeoS9l7CySmBakhphIjJRHkqlQoNG2RAikU7CW2tbYULKD09vqe4TQ0k+l1kmc575zvnG++o+uaCejKOEAH6TAdpUbS0wk6SafKvXyIjlATnaWLdJVu0C26Q3eLBdRRvfzieWqh+/SEXlIv9dMQjWgFiK830Gm6RG30nMYpTFDTCjhG56iVntIXShu+raFjYBYd5jG8No/A0PsJXe8G0U3qEhpkwG3qpIBx2odOiw1v3g/j46AVo5MOTNkXYJ/zwOlegWvBi8JNrJcltMqAmMHqhaFvHAPD05hxLsGzGkQwFMWv3wnEE5tIbCSxsZlEYRl6uQeiBL8IMH0Yx8SUS3k5Gksgub2D3VQKmUwWuVwOOew9+RCximZ6SBNGmx89/V9hnXXDF4zgT3Ib6XRGeVHr0clGapLn/4xSxiGHsgIRsLX9F5lsFtqv74eITjxD92jUOPUDlhEbPN6AsgIRUO7RyVa+QI/oZ9eYGzbHkrJ5SgllI/ZCRF9coReiccyjDmUVya2donugFSL24zqZRMiQdU45xn+7qYoC8iHH6Sb1iZBJ+6JSijjGmkNsLg9i65vIVliKupy3IsTqXK4ppLFwYz/PemoqJ3/Ejylknl5RNla0dzUhhc021m3zYdEbrPqI821/TbZ92mJfVX64apqt8Ads2xtCfjg8waraXj0K2sUw6pnxYdkfrvgHLDaU4iYGza+FKxoF6vHYXDgeu1na8HwAoej6/lDKag8l9aBull3cLgd1podhg98DcK1F4A3FNcdjsSvjstxs0YgTFKnkyih1eT2Ql9creXlZSl1eWteovpZrVB1WV+pC/w9TNVqlMEGHagAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-focused-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAAeCAYAAADKO/UvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoFJREFUSMellUtPU1EQx0uAsEASIgubaHRj3IhbPwBG3ZpgjInGDW78FC71AygEEtMWITaGGiIlsdgioKVP+5CHaS21D9PW2lJqLUb6GP9Tz60V6eWWnuR3d/eXmTlzZlQ6Z+wMOA1OATUYAH2gB3SCDqCSgz93wG1wE1wDl8FFcA6cAMdAt5yMPxawAOaAHoyC+2AEXAUXRIS9oKuZhA4gCZbAI3APDIGzoF9E9a9k8rmJdECjf0VPZiw0PvOGxuddpFkNs6wEVsADMAzOg+P7RSrfRoi865/I7Q+Qzb1Bi+889NJkpacGM00YHaS1R1gWAxPglhD1N6am2skXKLdToGwuT1+/5SieSFNgK05O70eaN9tJ82KJNNYQizJCNCxS65WKrSKcKlOtUrlcoV97e1Qo7lI6k6vJlm0+mp6ti6IitSFR7O66ZP9hYalUpu+FIkXiKbK61mlq7i1pHVEWLYtiD4rr7zhQIkVXrlToR/FnTcQRaRc8UrH51q6IPupsKpEOizgiTs1oQaFtn0lc/4hoyJ5DJRwRp8Y14mLrLH6WpERDcmf3HSqRasTFDiIaw6JHasgx8UQGFEn48K19wfWbV/2SRC/emlqxhGvDKdneb0qSWXADnFQsqSClzHaenOjstiVWb1CSPGs9HXQzP4vXrnoko0curMEelEbF0a54MxSnSUekvWYzurfaa3tPAFE4aw9w5UgPMBhN0pSzPpwetjwK1sJJmv4jyCobSpW/QymR3ibzWkxKoXE8DsqOx1AiS75wikwfYgi/9nNZ1IBTuC4E/w/qJisjJSbYY1HES7Iro2F5GcXLHBONdLeV5SW3RtVK16jcQu9SstB/A7wYWu6etp7HAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA0AAAAWCAYAAAAb+hYkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdFJREFUOMuVlNtLAlEQxucp6CnoKQj6w4L+gKC3iqR66E5IN6Ky6EZKmYaR0c2yoMjMXNJASbtApUTZxbVVS9t1mnPKiDJcB/bt/M7MfOf7FmpbRiD71bXqoKF9DJq7J6FzwFDaN2quHplesk7MrgjT8+vyjNmGevq+gXoCGrvGoaPfUDw4YdEYFjbFZZsDd/aP0Sn4UTgJosd3jl7/xSdU3zbKb9cOG8umjOuuVfshHnlOMXgZwtBtBO8fovgUjWFUlFCMScg7MKBHZyqftWxd7zq9/HDkMYpSIompdBplWcFMJoMZ/Cw+knbIWESAy+H24VXoDl+kBL6/y/xgroL2fj3QSBrWgQHxxCvKioK5j39BtHTJqt35FLy44R0YkK+AJKx0HZ/yZflImL/AuuGwsi5SPPnvDn8geocAk/UtlUa1BQeCX2SjMVlVQ25vQHx8jqGicrQsFCgYovGsBY9HQlQxIZhdVEMkeQl5TSxIcv2CDcjRGmZQ1Y9LNgKKQhF1E1TbiELHDAt7zpPy6/BdWJVheTSGjTC3aIcDt6+CQFfeaGRD2KszcZA6FtOoTbSj+B1C5VcIf8Ud6AcCa9uHTJzSs8tQTfg2skIXeH7G/QMDueJzvPRB+QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA0AAAAWCAYAAAAb+hYkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUOMudlNtLAlEQxs9T4FPgUyD0/wm9VRTVQ3ciuhGlRlakmF0oMjSxrCgyNS0VrLQLFEp00VzbLNRdp5kto6Jy7cDZp/3tN/PNfMsM8w6Yxjs1axf0JqtfM7VsGdDNq7uGjMqWngnW0DHG6tq0rLZVI10AYCx4dA6B8Bn4Q1Fw+49gc/cQVhwuMC6sccP6xcbOQaOiqXuc1b+DEsSleUhxPCRTabi9T0Hs+g6iFzHYD5yAzemBSbPd2ztqriLV+nbdG4QPKNAtFEAQRMjmcsBnnuEukZLgbXcQTIvrV33aORWBH9D3Qx/I5wV45DNwGbsBly9MoLd3xFzxK1RUF0QRnjIvEkiKWGrjn1DxEEiKVKrN6U6iOZUlIVKkUqlHMsew4FCXhIo9kjmnqIbjsMiC6JCrcRzHlisQlw1Rb1Si5+A4KxsSscTEQ5o2hy8b8gUjEfnl4bbQmuF+/suI8izHAXNoednDLXuN/BgVheyFvYrfxHfcIRUurLxoIODd84WrZ5acDMP4QwjFLyHksKRmVFAQ0K+dYx8h/Bx3fDGAtlpxMWuwaeXqhofhD0dS+Bz3V7HA8uslKDy0AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAADCAIAAAA2iEnWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABxJREFUCB1jmTNnDicnJ4uMjIywsDALEEtKSgIALM0DDeT4y3sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAIAAADdv/LVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUCB1jWLVqFZOWlhbDx48fARyiBVLivNzsAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAADCAIAAAA2iEnWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1jWrp06Zw5c5jU1NRkZGSYJCUlhYWFAUybBRTduo1wAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAIAAAB7QOjdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1juHLlysePHwESGQVQhb5n0gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1j+P//PwAF/gL+n8otEwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAIAAAB7QOjdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1j/Pjx4+PHjwETfwV+HAwP5QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCB1jvHLliqysLOPp06clJSUBLX0FglncIWUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAIAAAAW4yFwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABBJREFUCB1j+P//P9OnT58AF6oF1hwiRUMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCB1j/vjxY0xMDHNOTs779+8BN9MH/68NXLgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHCAYAAAArkDztAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGZJREFUCB0FwcsJg0AUAMAJ+9YPgUV4IIhevHizBhtIk2kjJeSYEtJGLpmJ5/t7Q0HFgA41UHDHhBmJFqiYsOPEgTUwYMaJBy70gQ6JA9fv8+rHcRSoaFjRb9smMwUKBjTITMuy+AM42wji1WBJjgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAHCAYAAADJTCeUAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACZJREFUCB1jXnjqkTxzYGqhP4joBRELmaNcLRuY6+vrG5jb29sbAOK+DN7MoThrAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHCAYAAAArkDztAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAG9JREFUCB0FwbEKgmAYAMCDPrHJXWp27AFa2trber0eJdpa23QIhAaDH0IQS4m6i9O1XWPGhDdmfANb9Eh44oUhcMQDNW64Ywoc8MEZMKCPaC7GccyzzX6HGg3aqKpKSklHjhUKZFGWJeh+oMASiz+A7SOInCfK3QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUCB1jWHjqkQIQxwPxfiD+f+XKlf8fP378DwDW+RK/bGv6kwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1j+P//PwAF/gL+n8otEwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1j+Pjx4/8rV678X3jqEQjvB+J4IFYAAP2REr8fi4n2AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUCFtjWHjqkTgQewDxZCD+cfr06f9Pnjz5zwDkCAKxKRDnAvFOkCQQgyU4gVgeiB2gkiCd60ASLEDMD5U0hRobBpJghEpyQo0F2SkDAHWKUDJqcdSvAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABpJREFUCB1j+Pjx43+GhacegYk9IFYciJAHAM/uDz+C0SZ2AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUCFtjePLkyf/Tp0//X3jq0Q8gngzEHkAszgAkYII7gTgXiE2BWBAksQ6qEiToAMTyQMwJkgiDajeFCvIDMQtIQgZkJkg7SCVIEIgZAdauUDJ/hcSRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUCB1j2rx58//Tp0//v379OpgG8Zn+////C4gZkPBfpl+/fh38/fs3AxI+wvT58+eUjx8/7vjw4QMDiP706VMcAOlpQfMaZOfrAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAIAAACZnPOkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUCB1j3rx5cxEYJCQk+Pn5AQA+dAbTLdUgHwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-disabled-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAExJREFUeNpMxbsNgDAMBcCH6wzg1amQWCGzUMEAKf1JZSMCdClOt9RaV2ZGKQW9d7TWQGOM+4PJQxFxZiYmF7n7rqqHiODfzLZXgAEAth07HqinDKIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi3Lx580wJCQkGHh4ehi9fvjC8ePGCASDAAFQeCLRojHkfAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-disabled-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpirKysFODi4opiZmbW/vv379Vv374tYxEWFk4QEhLSZGdnZ/j586f+u3fvOEGCquLi4gxA1QxAVQyMjIwqLLy8vCz8/PwMPDw8DKysrAzfv39nYmJjYwNzkDETUDkDOgYIMABjBxggiQuq/QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUCB1jqqyslG5ubt7Y1tb2E0SD+EzCwsLzpaWl/eTl5dlANJC/FCRoLyEhwQAUYADRQL4NEy8vLxs/Pz+DoKAgA4jm4+NjZmJjY2NgZWVFwUyMjIwM6BgAhF0QgRCnPUsAAAAASUVORK5CYII= +*/ ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt @@ -0,0 +1,1 @@ +@STATIC;1.0;u;25;Resources/alert-error.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/alert-error.pngu;24;Resources/alert-info.png64;mhtml:Browser.environment/MHTMLData.txt!Resources/alert-info.pngu;27;Resources/alert-warning.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/alert-warning.pngu;33;Resources/button-bezel-center.png73;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-center.pngu;42;Resources/button-bezel-disabled-center.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-disabled-center.pngu;40;Resources/button-bezel-disabled-left.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-disabled-left.pngu;41;Resources/button-bezel-disabled-right.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-disabled-right.pngu;45;Resources/button-bezel-highlighted-center.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-highlighted-center.pngu;43;Resources/button-bezel-highlighted-left.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-highlighted-left.pngu;44;Resources/button-bezel-highlighted-right.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-highlighted-right.pngu;31;Resources/button-bezel-left.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-left.pngu;32;Resources/button-bezel-right.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-right.pngu;29;Resources/buttonbar-bezel.png69;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-bezel.pngu;43;Resources/buttonbar-button-bezel-center.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-center.pngu;52;Resources/buttonbar-button-bezel-disabled-center.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-disabled-center.pngu;50;Resources/buttonbar-button-bezel-disabled-left.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-disabled-left.pngu;51;Resources/buttonbar-button-bezel-disabled-right.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-disabled-right.pngu;55;Resources/buttonbar-button-bezel-highlighted-center.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-highlighted-center.pngu;53;Resources/buttonbar-button-bezel-highlighted-left.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-highlighted-left.pngu;54;Resources/buttonbar-button-bezel-highlighted-right.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-highlighted-right.pngu;41;Resources/buttonbar-button-bezel-left.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-left.pngu;42;Resources/buttonbar-button-bezel-right.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-right.pngu;38;Resources/buttonbar-resize-control.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-resize-control.pngu;38;Resources/check-box-image-disabled.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-disabled.pngu;41;Resources/check-box-image-highlighted.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-highlighted.pngu;44;Resources/check-box-image-mixed-disabled.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-mixed-disabled.pngu;47;Resources/check-box-image-mixed-highlighted.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-mixed-highlighted.pngu;35;Resources/check-box-image-mixed.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-mixed.pngu;47;Resources/check-box-image-selected-disabled.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-selected-disabled.pngu;50;Resources/check-box-image-selected-highlighted.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-selected-highlighted.pngu;38;Resources/check-box-image-selected.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-selected.pngu;29;Resources/check-box-image.png69;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image.pngu;41;Resources/default-button-bezel-center.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-center.pngu;50;Resources/default-button-bezel-disabled-center.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-disabled-center.pngu;48;Resources/default-button-bezel-disabled-left.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-disabled-left.pngu;49;Resources/default-button-bezel-disabled-right.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-disabled-right.pngu;53;Resources/default-button-bezel-highlighted-center.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-highlighted-center.pngu;51;Resources/default-button-bezel-highlighted-left.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-highlighted-left.pngu;52;Resources/default-button-bezel-highlighted-right.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-highlighted-right.pngu;39;Resources/default-button-bezel-left.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-left.pngu;40;Resources/default-button-bezel-right.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-right.pngu;37;Resources/horizontal-track-center.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-center.pngu;46;Resources/horizontal-track-disabled-center.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-disabled-center.pngu;44;Resources/horizontal-track-disabled-left.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-disabled-left.pngu;45;Resources/horizontal-track-disabled-right.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-disabled-right.pngu;35;Resources/horizontal-track-left.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-left.pngu;36;Resources/horizontal-track-right.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-right.pngu;37;Resources/HUD/button-bezel-center.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-center.pngu;46;Resources/HUD/button-bezel-disabled-center.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-disabled-center.pngu;44;Resources/HUD/button-bezel-disabled-left.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-disabled-left.pngu;45;Resources/HUD/button-bezel-disabled-right.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-disabled-right.pngu;49;Resources/HUD/button-bezel-highlighted-center.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-highlighted-center.pngu;47;Resources/HUD/button-bezel-highlighted-left.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-highlighted-left.pngu;48;Resources/HUD/button-bezel-highlighted-right.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-highlighted-right.pngu;35;Resources/HUD/button-bezel-left.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-left.pngu;36;Resources/HUD/button-bezel-right.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-right.pngu;45;Resources/HUD/default-button-bezel-center.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-center.pngu;54;Resources/HUD/default-button-bezel-disabled-center.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-disabled-center.pngu;52;Resources/HUD/default-button-bezel-disabled-left.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-disabled-left.pngu;53;Resources/HUD/default-button-bezel-disabled-right.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-disabled-right.pngu;57;Resources/HUD/default-button-bezel-highlighted-center.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-highlighted-center.pngu;55;Resources/HUD/default-button-bezel-highlighted-left.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-highlighted-left.pngu;56;Resources/HUD/default-button-bezel-highlighted-right.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-highlighted-right.pngu;43;Resources/HUD/default-button-bezel-left.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-left.pngu;44;Resources/HUD/default-button-bezel-right.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-right.pngu;41;Resources/HUD/horizontal-track-center.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-center.pngu;50;Resources/HUD/horizontal-track-disabled-center.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-disabled-center.pngu;48;Resources/HUD/horizontal-track-disabled-left.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-disabled-left.pngu;49;Resources/HUD/horizontal-track-disabled-right.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-disabled-right.pngu;39;Resources/HUD/horizontal-track-left.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-left.pngu;40;Resources/HUD/horizontal-track-right.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-right.pngu;31;Resources/HUD/knob-disabled.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/knob-disabled.pngu;34;Resources/HUD/knob-highlighted.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/knob-highlighted.pngu;22;Resources/HUD/knob.png62;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/knob.pngu;46;Resources/HUD/scroller-down-arrow-disabled.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-down-arrow-disabled.pngu;49;Resources/HUD/scroller-down-arrow-highlighted.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-down-arrow-highlighted.pngu;37;Resources/HUD/scroller-down-arrow.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-down-arrow.pngu;49;Resources/HUD/scroller-horizontal-knob-center.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-knob-center.pngu;47;Resources/HUD/scroller-horizontal-knob-left.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-knob-left.pngu;48;Resources/HUD/scroller-horizontal-knob-right.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-knob-right.pngu;52;Resources/HUD/scroller-horizontal-track-disabled.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-track-disabled.pngu;43;Resources/HUD/scroller-horizontal-track.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-track.pngu;46;Resources/HUD/scroller-left-arrow-disabled.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-left-arrow-disabled.pngu;49;Resources/HUD/scroller-left-arrow-highlighted.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-left-arrow-highlighted.pngu;37;Resources/HUD/scroller-left-arrow.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-left-arrow.pngu;47;Resources/HUD/scroller-right-arrow-disabled.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-right-arrow-disabled.pngu;50;Resources/HUD/scroller-right-arrow-highlighted.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-right-arrow-highlighted.pngu;38;Resources/HUD/scroller-right-arrow.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-right-arrow.pngu;44;Resources/HUD/scroller-up-arrow-disabled.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-up-arrow-disabled.pngu;47;Resources/HUD/scroller-up-arrow-highlighted.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-up-arrow-highlighted.pngu;35;Resources/HUD/scroller-up-arrow.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-up-arrow.pngu;47;Resources/HUD/scroller-vertical-knob-bottom.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-knob-bottom.pngu;47;Resources/HUD/scroller-vertical-knob-center.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-knob-center.pngu;44;Resources/HUD/scroller-vertical-knob-top.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-knob-top.pngu;50;Resources/HUD/scroller-vertical-track-disabled.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-track-disabled.pngu;41;Resources/HUD/scroller-vertical-track.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-track.pngu;48;Resources/HUD/segmented-control-bezel-center.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-center.pngu;57;Resources/HUD/segmented-control-bezel-disabled-center.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-center.pngu;58;Resources/HUD/segmented-control-bezel-disabled-divider.png98;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-divider.pngu;55;Resources/HUD/segmented-control-bezel-disabled-left.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-left.pngu;56;Resources/HUD/segmented-control-bezel-disabled-right.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-right.pngu;49;Resources/HUD/segmented-control-bezel-divider.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-divider.pngu;60;Resources/HUD/segmented-control-bezel-highlighted-center.png100;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-center.pngu;69;Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png109;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-center.pngu;70;Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.pngu;67;Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-left.pngu;73;Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png113;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.pngu;68;Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png108;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-right.pngu;61;Resources/HUD/segmented-control-bezel-highlighted-divider.png101;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-divider.pngu;58;Resources/HUD/segmented-control-bezel-highlighted-left.png98;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-left.pngu;59;Resources/HUD/segmented-control-bezel-highlighted-right.png99;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-right.pngu;46;Resources/HUD/segmented-control-bezel-left.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-left.pngu;55;Resources/HUD/segmented-control-bezel-pushed-center.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-center.pngu;67;Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-highlighted-center.pngu;65;Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png105;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-highlighted-left.pngu;66;Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png106;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-highlighted-right.pngu;53;Resources/HUD/segmented-control-bezel-pushed-left.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-left.pngu;54;Resources/HUD/segmented-control-bezel-pushed-right.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-right.pngu;47;Resources/HUD/segmented-control-bezel-right.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-right.pngu;39;Resources/HUD/slider-circular-bezel.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-bezel.pngu;48;Resources/HUD/slider-circular-disabled-bezel.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-disabled-bezel.pngu;47;Resources/HUD/slider-circular-disabled-knob.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-disabled-knob.pngu;38;Resources/HUD/slider-circular-knob.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-knob.pngu;39;Resources/HUD/vertical-track-bottom.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-bottom.pngu;39;Resources/HUD/vertical-track-center.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-center.pngu;48;Resources/HUD/vertical-track-disabled-bottom.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-disabled-bottom.pngu;48;Resources/HUD/vertical-track-disabled-center.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-disabled-center.pngu;45;Resources/HUD/vertical-track-disabled-top.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-disabled-top.pngu;36;Resources/HUD/vertical-track-top.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-top.pngu;27;Resources/knob-disabled.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/knob-disabled.pngu;30;Resources/knob-highlighted.png70;mhtml:Browser.environment/MHTMLData.txt!Resources/knob-highlighted.pngu;18;Resources/knob.png58;mhtml:Browser.environment/MHTMLData.txt!Resources/knob.pngu;36;Resources/popup-arrows-pullsdown.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-arrows-pullsdown.pngu;26;Resources/popup-arrows.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-arrows.pngu;50;Resources/popup-bezel-disabled-right-pullsdown.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-disabled-right-pullsdown.pngu;40;Resources/popup-bezel-disabled-right.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-disabled-right.pngu;41;Resources/popup-bezel-right-pullsdown.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-right-pullsdown.pngu;31;Resources/popup-bezel-right.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-right.pngu;34;Resources/radio-image-disabled.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-disabled.pngu;37;Resources/radio-image-highlighted.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-highlighted.pngu;43;Resources/radio-image-selected-disabled.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-selected-disabled.pngu;46;Resources/radio-image-selected-highlighted.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-selected-highlighted.pngu;34;Resources/radio-image-selected.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-selected.pngu;25;Resources/radio-image.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image.pngu;42;Resources/scroller-down-arrow-disabled.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-down-arrow-disabled.pngu;45;Resources/scroller-down-arrow-highlighted.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-down-arrow-highlighted.pngu;33;Resources/scroller-down-arrow.png73;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-down-arrow.pngu;45;Resources/scroller-horizontal-knob-center.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-center.pngu;54;Resources/scroller-horizontal-knob-disabled-center.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-disabled-center.pngu;52;Resources/scroller-horizontal-knob-disabled-left.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-disabled-left.pngu;53;Resources/scroller-horizontal-knob-disabled-right.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-disabled-right.pngu;43;Resources/scroller-horizontal-knob-left.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-left.pngu;44;Resources/scroller-horizontal-knob-right.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-right.pngu;48;Resources/scroller-horizontal-track-disabled.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-track-disabled.pngu;39;Resources/scroller-horizontal-track.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-track.pngu;42;Resources/scroller-left-arrow-disabled.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-left-arrow-disabled.pngu;45;Resources/scroller-left-arrow-highlighted.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-left-arrow-highlighted.pngu;33;Resources/scroller-left-arrow.png73;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-left-arrow.pngu;43;Resources/scroller-right-arrow-disabled.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-right-arrow-disabled.pngu;46;Resources/scroller-right-arrow-highlighted.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-right-arrow-highlighted.pngu;34;Resources/scroller-right-arrow.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-right-arrow.pngu;40;Resources/scroller-up-arrow-disabled.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-up-arrow-disabled.pngu;43;Resources/scroller-up-arrow-highlighted.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-up-arrow-highlighted.pngu;31;Resources/scroller-up-arrow.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-up-arrow.pngu;43;Resources/scroller-vertical-knob-bottom.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-bottom.pngu;43;Resources/scroller-vertical-knob-center.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-center.pngu;52;Resources/scroller-vertical-knob-disabled-bottom.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-disabled-bottom.pngu;52;Resources/scroller-vertical-knob-disabled-center.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-disabled-center.pngu;49;Resources/scroller-vertical-knob-disabled-top.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-disabled-top.pngu;40;Resources/scroller-vertical-knob-top.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-top.pngu;46;Resources/scroller-vertical-track-disabled.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-track-disabled.pngu;37;Resources/scroller-vertical-track.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-track.pngu;44;Resources/scrollview-bottom-corner-color.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/scrollview-bottom-corner-color.pngu;44;Resources/segmented-control-bezel-center.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-center.pngu;53;Resources/segmented-control-bezel-disabled-center.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-center.pngu;54;Resources/segmented-control-bezel-disabled-divider.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-divider.pngu;51;Resources/segmented-control-bezel-disabled-left.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-left.pngu;52;Resources/segmented-control-bezel-disabled-right.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-right.pngu;45;Resources/segmented-control-bezel-divider.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-divider.pngu;56;Resources/segmented-control-bezel-highlighted-center.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-center.pngu;65;Resources/segmented-control-bezel-highlighted-disabled-center.png105;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-center.pngu;66;Resources/segmented-control-bezel-highlighted-disabled-divider.png106;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-divider.pngu;63;Resources/segmented-control-bezel-highlighted-disabled-left.png103;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-left.pngu;64;Resources/segmented-control-bezel-highlighted-disabled-right.png104;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-right.pngu;57;Resources/segmented-control-bezel-highlighted-divider.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-divider.pngu;54;Resources/segmented-control-bezel-highlighted-left.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-left.pngu;55;Resources/segmented-control-bezel-highlighted-right.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-right.pngu;42;Resources/segmented-control-bezel-left.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-left.pngu;51;Resources/segmented-control-bezel-pushed-center.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-center.pngu;63;Resources/segmented-control-bezel-pushed-highlighted-center.png103;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-highlighted-center.pngu;61;Resources/segmented-control-bezel-pushed-highlighted-left.png101;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-highlighted-left.pngu;62;Resources/segmented-control-bezel-pushed-highlighted-right.png102;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-highlighted-right.pngu;49;Resources/segmented-control-bezel-pushed-left.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-left.pngu;50;Resources/segmented-control-bezel-pushed-right.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-right.pngu;43;Resources/segmented-control-bezel-right.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-right.pngu;35;Resources/slider-circular-bezel.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-bezel.pngu;44;Resources/slider-circular-disabled-bezel.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-disabled-bezel.pngu;43;Resources/slider-circular-disabled-knob.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-disabled-knob.pngu;34;Resources/slider-circular-knob.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-knob.pngu;21;Resources/spinner.gif61;mhtml:Browser.environment/MHTMLData.txt!Resources/spinner.gifu;44;Resources/tableview-headerview-ascending.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-ascending.pngu;45;Resources/tableview-headerview-descending.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-descending.pngu;54;Resources/tableview-headerview-highlighted-pressed.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-highlighted-pressed.pngu;46;Resources/tableview-headerview-highlighted.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-highlighted.pngu;42;Resources/tableview-headerview-pressed.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-pressed.pngu;34;Resources/tableview-headerview.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview.pngu;32;Resources/tableviewselection.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/tableviewselection.pngu;44;Resources/textfield-bezel-rounded-center.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-center.pngu;52;Resources/textfield-bezel-rounded-focused-center.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-focused-center.pngu;50;Resources/textfield-bezel-rounded-focused-left.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-focused-left.pngu;51;Resources/textfield-bezel-rounded-focused-right.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-focused-right.pngu;42;Resources/textfield-bezel-rounded-left.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-left.pngu;43;Resources/textfield-bezel-rounded-right.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-right.pngu;38;Resources/textfield-bezel-square-0.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-0.pngu;38;Resources/textfield-bezel-square-1.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-1.pngu;38;Resources/textfield-bezel-square-2.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-2.pngu;38;Resources/textfield-bezel-square-3.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-3.pngu;38;Resources/textfield-bezel-square-4.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-4.pngu;38;Resources/textfield-bezel-square-5.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-5.pngu;38;Resources/textfield-bezel-square-6.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-6.pngu;38;Resources/textfield-bezel-square-7.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-7.pngu;38;Resources/textfield-bezel-square-8.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-8.pngu;46;Resources/textfield-bezel-square-focused-0.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-0.pngu;46;Resources/textfield-bezel-square-focused-1.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-1.pngu;46;Resources/textfield-bezel-square-focused-2.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-2.pngu;46;Resources/textfield-bezel-square-focused-3.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-3.pngu;46;Resources/textfield-bezel-square-focused-4.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-4.pngu;46;Resources/textfield-bezel-square-focused-5.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-5.pngu;46;Resources/textfield-bezel-square-focused-6.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-6.pngu;46;Resources/textfield-bezel-square-focused-7.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-7.pngu;46;Resources/textfield-bezel-square-focused-8.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-8.pngu;35;Resources/vertical-track-bottom.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-bottom.pngu;35;Resources/vertical-track-center.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-center.pngu;44;Resources/vertical-track-disabled-bottom.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-disabled-bottom.pngu;44;Resources/vertical-track-disabled-center.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-disabled-center.pngu;41;Resources/vertical-track-disabled-top.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-disabled-top.pngu;32;Resources/vertical-track-top.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-top.png ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt @@ -0,0 +1,9 @@ +/* +Content-Type: multipart/related; boundary="_SEPARATOR_" + +--_SEPARATOR_ +Content-Location:test +Content-Transfer-Encoding:base64 + +R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== +*/ ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Info.plist Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Info.plist ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Info.plist +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;26;CPApplicationDelegateClassS;20;BKShowcaseControllerK;12;CPBundleNameS;12;Aristo.blendK;14;BKLearnMoreURLS;28;http://cappuccino.org/aristoK;22;BKLearnMoreButtonTitleS;16;Aristo Home PageK;16;CPPrincipalClassS;13;CPApplicationK;29;CPBundleInfoDictionaryVersiond;1;6K;18;CPBundleIdentifierS;21;com.280n.blend.AristoK;15;CPBundleVersionf;3;0.1K;19;CPBundlePackageTypeS;4;BLNDK;20;CPBundleEnvironmentsA;S;7;BrowserS;8;CommonJSE;K;18;CPBundleExecutableS;15;Aristo.blend.sjK;36;CPBundleEnvironmentsWithImageSpritesA;S;7;BrowserE;K;13;CPKeyedThemesA;S;17;Aristo.keyedthemeS;21;Aristo-HUD.keyedthemeE;E; ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-error.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-error.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-error.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-error.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-info.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-info.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-info.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-info.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-warning.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-warning.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-warning.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/alert-warning.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/check-box-image.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/radio-image.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/spinner.gif Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/spinner.gif ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/spinner.gif +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/spinner.gif cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png Index: Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png +++ Site/Site_Z/Frameworks/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/New.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/New.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/New.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/New.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/NewHighlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/NewHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/NewHighlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/NewHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/Open.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/Open.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/Open.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/Open.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/OpenHighlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/OpenHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/OpenHighlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/OpenHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/Save.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/Save.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/Save.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/Save.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/SaveHighlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/SaveHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/SaveHighlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPApplication/SaveHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/closedHandCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/closedHandCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/closedHandCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/closedHandCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/contextualMenuCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/contextualMenuCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/contextualMenuCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/contextualMenuCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/disappearingItemCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/disappearingItemCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/disappearingItemCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/disappearingItemCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/dragCopyCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/dragCopyCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/dragCopyCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/dragCopyCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/dragLinkCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/dragLinkCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/dragLinkCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/dragLinkCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/openHandCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/openHandCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/openHandCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/openHandCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeDownCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeDownCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeDownCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeDownCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeLeftCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeLeftCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeLeftCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeLeftCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeRightCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeRightCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeRightCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeRightCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeUpCursor.cur Index: Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeUpCursor.cur ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeUpCursor.cur +++ Site/Site_Z/Frameworks/AppKit/Resources/CPCursor/resizeUpCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanel.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanel.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanel.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewRightShadow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewRightShadow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewRightShadow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewRightShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopShadow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopShadow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopShadow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPImageView/CPImageViewTopShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif Index: Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif +++ Site/Site_Z/Frameworks/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldFind.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldFind.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldFind.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldFind.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewVertical.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewVertical.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewVertical.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPSplitView/CPSplitViewVertical.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow3.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow3.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow3.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow4.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow4.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow4.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow5.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow5.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow5.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow6.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow6.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow6.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow7.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow7.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow7.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow8.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow8.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow8.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/CPWindowShadow8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/CPWindowResizeIndicator.png Index: Site/Site_Z/Frameworks/AppKit/Resources/CPWindowResizeIndicator.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/CPWindowResizeIndicator.png +++ Site/Site_Z/Frameworks/AppKit/Resources/CPWindowResizeIndicator.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/FIXME_ImageShadow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/FIXME_ImageShadow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/FIXME_ImageShadow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/FIXME_ImageShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/GenericFile.png Index: Site/Site_Z/Frameworks/AppKit/Resources/GenericFile.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/GenericFile.png +++ Site/Site_Z/Frameworks/AppKit/Resources/GenericFile.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/HUDTheme/WindowClose.png Index: Site/Site_Z/Frameworks/AppKit/Resources/HUDTheme/WindowClose.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/HUDTheme/WindowClose.png +++ Site/Site_Z/Frameworks/AppKit/Resources/HUDTheme/WindowClose.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/HUDTheme/WindowCloseActive.png Index: Site/Site_Z/Frameworks/AppKit/Resources/HUDTheme/WindowCloseActive.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/HUDTheme/WindowCloseActive.png +++ Site/Site_Z/Frameworks/AppKit/Resources/HUDTheme/WindowCloseActive.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png Index: Site/Site_Z/Frameworks/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png +++ Site/Site_Z/Frameworks/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/action_button.png Index: Site/Site_Z/Frameworks/AppKit/Resources/action_button.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/action_button.png +++ Site/Site_Z/Frameworks/AppKit/Resources/action_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/brightness_bar.png Index: Site/Site_Z/Frameworks/AppKit/Resources/brightness_bar.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/brightness_bar.png +++ Site/Site_Z/Frameworks/AppKit/Resources/brightness_bar.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/browser-leaf-highlighted.png Index: Site/Site_Z/Frameworks/AppKit/Resources/browser-leaf-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/browser-leaf-highlighted.png +++ Site/Site_Z/Frameworks/AppKit/Resources/browser-leaf-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/browser-leaf.png Index: Site/Site_Z/Frameworks/AppKit/Resources/browser-leaf.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/browser-leaf.png +++ Site/Site_Z/Frameworks/AppKit/Resources/browser-leaf.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/browser-resize-control.png Index: Site/Site_Z/Frameworks/AppKit/Resources/browser-resize-control.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/browser-resize-control.png +++ Site/Site_Z/Frameworks/AppKit/Resources/browser-resize-control.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/color_well.png Index: Site/Site_Z/Frameworks/AppKit/Resources/color_well.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/color_well.png +++ Site/Site_Z/Frameworks/AppKit/Resources/color_well.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/empty.png Index: Site/Site_Z/Frameworks/AppKit/Resources/empty.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/empty.png +++ Site/Site_Z/Frameworks/AppKit/Resources/empty.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/minus_button.png Index: Site/Site_Z/Frameworks/AppKit/Resources/minus_button.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/minus_button.png +++ Site/Site_Z/Frameworks/AppKit/Resources/minus_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/plus_button.png Index: Site/Site_Z/Frameworks/AppKit/Resources/plus_button.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/plus_button.png +++ Site/Site_Z/Frameworks/AppKit/Resources/plus_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/slider_button.png Index: Site/Site_Z/Frameworks/AppKit/Resources/slider_button.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/slider_button.png +++ Site/Site_Z/Frameworks/AppKit/Resources/slider_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/slider_button_h.png Index: Site/Site_Z/Frameworks/AppKit/Resources/slider_button_h.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/slider_button_h.png +++ Site/Site_Z/Frameworks/AppKit/Resources/slider_button_h.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/standardApplicationIcon.png Index: Site/Site_Z/Frameworks/AppKit/Resources/standardApplicationIcon.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/standardApplicationIcon.png +++ Site/Site_Z/Frameworks/AppKit/Resources/standardApplicationIcon.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/wheel.png Index: Site/Site_Z/Frameworks/AppKit/Resources/wheel.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/wheel.png +++ Site/Site_Z/Frameworks/AppKit/Resources/wheel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/wheel_black.png Index: Site/Site_Z/Frameworks/AppKit/Resources/wheel_black.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/wheel_black.png +++ Site/Site_Z/Frameworks/AppKit/Resources/wheel_black.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/wheel_button.png Index: Site/Site_Z/Frameworks/AppKit/Resources/wheel_button.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/wheel_button.png +++ Site/Site_Z/Frameworks/AppKit/Resources/wheel_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/AppKit/Resources/wheel_button_h.png Index: Site/Site_Z/Frameworks/AppKit/Resources/wheel_button_h.png ================================================================== --- Site/Site_Z/Frameworks/AppKit/Resources/wheel_button_h.png +++ Site/Site_Z/Frameworks/AppKit/Resources/wheel_button_h.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/AppKit.sj Index: Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/AppKit.sj ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/AppKit.sj +++ Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/AppKit.sj @@ -0,0 +1,39995 @@ +@STATIC;1.0;p;15;_CPCornerView.jt;1835;@STATIC;1.0;i;8;CPView.jt;1804; + +objj_executeFile("CPView.j", YES); + +{var the_class = objj_allocateClassPair(CPView, "_CPCornerView"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("layoutSubviews"), function $_CPCornerView__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); +} +},["void"]), new objj_method(sel_getUid("_init"), function $_CPCornerView___init(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); +} +},["void"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPCornerView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCornerView").super_class }, "initWithFrame:", aFrame) + + if (self) + objj_msgSend(self, "_init"); + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPCornerView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCornerView").super_class }, "initWithCoder:", aCoder); + + if (self) + objj_msgSend(self, "_init"); + + return self; +} +},["id","CPCoder"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $_CPCornerView__themeClass(self, _cmd) +{ with(self) +{ + return "cornerview"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $_CPCornerView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null")], ["background-color"]); +} +},["id"])]); +} + +p;18;_CPDisplayServer.jt;2124;@STATIC;1.0;t;2105;; +var displayObjects = [], + displayObjectsByUID = { }, + layoutObjects = [], + layoutObjectsByUID = { }, + runLoop = objj_msgSend(CPRunLoop, "mainRunLoop"); +_CPDisplayServerAddDisplayObject= function(anObject) +{ + var UID = objj_msgSend(anObject, "UID"); + if (typeof displayObjectsByUID[UID] !== "undefined") + return; + var index = displayObjects.length; + displayObjectsByUID[UID] = index; + displayObjects[index] = anObject; +} +_CPDisplayServerAddLayoutObject= function(anObject) +{ + var UID = objj_msgSend(anObject, "UID"); + if (typeof layoutObjectsByUID[UID] !== "undefined") + return; + var index = layoutObjects.length; + layoutObjectsByUID[UID] = index; + layoutObjects[index] = anObject; +} +{var the_class = objj_allocateClassPair(CPObject, "_CPDisplayServer"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("run"), function $_CPDisplayServer__run(self, _cmd) +{ with(self) +{ + while (layoutObjects.length || displayObjects.length) + { + var index = 0; + for (; index < layoutObjects.length; ++index) + { + var object = layoutObjects[index]; + delete layoutObjectsByUID[objj_msgSend(object, "UID")]; + objj_msgSend(object, "layoutIfNeeded"); + } + layoutObjects = []; + layoutObjectsByUID = { }; + index = 0; + for (; index < displayObjects.length; ++index) + { + if (layoutObjects.length) + break; + var object = displayObjects[index]; + delete displayObjectsByUID[objj_msgSend(object, "UID")]; + objj_msgSend(object, "displayIfNeeded"); + } + if (index === displayObjects.length) + { + displayObjects = []; + displayObjectsByUID = { }; + } + else + displayObjects.splice(0, index); + } + objj_msgSend(runLoop, "performSelector:target:argument:order:modes:", sel_getUid("run"), self, nil, 0, [CPDefaultRunLoopMode]); +} +},["void"])]); +} +objj_msgSend(_CPDisplayServer, "run"); + +p;21;_CPImageAndTextView.jt;24436;@STATIC;1.0;I;21;Foundation/CPString.ji;9;CPColor.ji;8;CPFont.ji;9;CPImage.ji;8;CPView.ji;11;CPControl.jt;24324;objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPColor.j", YES); +objj_executeFile("CPFont.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPControl.j", YES); +var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0, + _CPImageAndTextViewImageChangedFlag = 1 << 1, + _CPImageAndTextViewTextChangedFlag = 1 << 2, + _CPImageAndTextViewAlignmentChangedFlag = 1 << 3, + _CPImageAndTextViewVerticalAlignmentChangedFlag = 1 << 4, + _CPImageAndTextViewLineBreakModeChangedFlag = 1 << 5, + _CPImageAndTextViewTextColorChangedFlag = 1 << 6, + _CPImageAndTextViewFontChangedFlag = 1 << 7, + _CPImageAndTextViewTextShadowColorChangedFlag = 1 << 8, + _CPImageAndTextViewImagePositionChangedFlag = 1 << 9, + _CPImageAndTextViewImageScalingChangedFlag = 1 << 10; +{var the_class = objj_allocateClassPair(CPView, "_CPImageAndTextView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_alignment"), new objj_ivar("_verticalAlignment"), new objj_ivar("_lineBreakMode"), new objj_ivar("_textColor"), new objj_ivar("_font"), new objj_ivar("_textShadowColor"), new objj_ivar("_textShadowOffset"), new objj_ivar("_imagePosition"), new objj_ivar("_imageScaling"), new objj_ivar("_imageOffset"), new objj_ivar("_shouldDimImage"), new objj_ivar("_image"), new objj_ivar("_text"), new objj_ivar("_textSize"), new objj_ivar("_flags"), new objj_ivar("_DOMImageElement"), new objj_ivar("_DOMTextElement"), new objj_ivar("_DOMTextShadowElement")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:control:"), function $_CPImageAndTextView__initWithFrame_control_(self, _cmd, aFrame, aControl) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPImageAndTextView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _textShadowOffset = { width:0.0, height:0.0 }; + objj_msgSend(self, "setVerticalAlignment:", CPTopVerticalTextAlignment); + if (aControl) + { + objj_msgSend(self, "setLineBreakMode:", objj_msgSend(aControl, "lineBreakMode")); + objj_msgSend(self, "setTextColor:", objj_msgSend(aControl, "textColor")); + objj_msgSend(self, "setAlignment:", objj_msgSend(aControl, "alignment")); + objj_msgSend(self, "setVerticalAlignment:", objj_msgSend(aControl, "verticalAlignment")); + objj_msgSend(self, "setFont:", objj_msgSend(aControl, "font")); + objj_msgSend(self, "setImagePosition:", objj_msgSend(aControl, "imagePosition")); + objj_msgSend(self, "setImageScaling:", objj_msgSend(aControl, "imageScaling")); + objj_msgSend(self, "setImageOffset:", objj_msgSend(aControl, "imageOffset")); + } + else + { + objj_msgSend(self, "setLineBreakMode:", CPLineBreakByClipping); + objj_msgSend(self, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(self, "setFont:", objj_msgSend(CPFont, "systemFontOfSize:", 12.0)); + objj_msgSend(self, "setImagePosition:", CPNoImage); + objj_msgSend(self, "setImageScaling:", CPScaleNone); + } + _textSize = NULL; + } + return self; +} +},["id","CGRect","CPControl"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPImageAndTextView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(self, "initWithFrame:control:", aFrame, nil); +} +},["id","CGRect"]), new objj_method(sel_getUid("setAlignment:"), function $_CPImageAndTextView__setAlignment_(self, _cmd, anAlignment) +{ with(self) +{ + if (_alignment === anAlignment) + return; + _alignment = anAlignment; + switch (_alignment) + { + case CPLeftTextAlignment: _DOMElement.style.textAlign = "left"; + break; + case CPRightTextAlignment: _DOMElement.style.textAlign = "right"; + break; + case CPCenterTextAlignment: _DOMElement.style.textAlign = "center"; + break; + case CPJustifiedTextAlignment: _DOMElement.style.textAlign = "justify"; + break; + case CPNaturalTextAlignment: _DOMElement.style.textAlign = ""; + break; + } +} +},["void","CPTextAlignment"]), new objj_method(sel_getUid("alignment"), function $_CPImageAndTextView__alignment(self, _cmd) +{ with(self) +{ + return _alignment; +} +},["CPTextAlignment"]), new objj_method(sel_getUid("setVerticalAlignment:"), function $_CPImageAndTextView__setVerticalAlignment_(self, _cmd, anAlignment) +{ with(self) +{ + if (_verticalAlignment === anAlignment) + return; + _verticalAlignment = anAlignment; + _flags |= _CPImageAndTextViewVerticalAlignmentChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPVerticalTextAlignment"]), new objj_method(sel_getUid("verticalAlignment"), function $_CPImageAndTextView__verticalAlignment(self, _cmd) +{ with(self) +{ + return _verticalAlignment; +} +},["unsigned"]), new objj_method(sel_getUid("setLineBreakMode:"), function $_CPImageAndTextView__setLineBreakMode_(self, _cmd, aLineBreakMode) +{ with(self) +{ + if (_lineBreakMode === aLineBreakMode) + return; + _lineBreakMode = aLineBreakMode; + _flags |= _CPImageAndTextViewLineBreakModeChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPLineBreakMode"]), new objj_method(sel_getUid("lineBreakMode"), function $_CPImageAndTextView__lineBreakMode(self, _cmd) +{ with(self) +{ + return _lineBreakMode; +} +},["CPLineBreakMode"]), new objj_method(sel_getUid("setImagePosition:"), function $_CPImageAndTextView__setImagePosition_(self, _cmd, anImagePosition) +{ with(self) +{ + if (_imagePosition == anImagePosition) + return; + if (_imagePosition == CPNoImage) + _flags |= _CPImageAndTextViewImageChangedFlag; + _imagePosition = anImagePosition; + _flags |= _CPImageAndTextViewImagePositionChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPCellImagePosition"]), new objj_method(sel_getUid("imagePosition"), function $_CPImageAndTextView__imagePosition(self, _cmd) +{ with(self) +{ + return _imagePosition; +} +},["CPCellImagePosition"]), new objj_method(sel_getUid("setImageScaling:"), function $_CPImageAndTextView__setImageScaling_(self, _cmd, anImageScaling) +{ with(self) +{ + if (_imageScaling == anImageScaling) + return; + _imageScaling = anImageScaling; + _flags |= _CPImageAndTextViewImageScalingChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPImageScaling"]), new objj_method(sel_getUid("imageScaling"), function $_CPImageAndTextView__imageScaling(self, _cmd) +{ with(self) +{ + return _imageScaling; +} +},["void"]), new objj_method(sel_getUid("setDimsImage:"), function $_CPImageAndTextView__setDimsImage_(self, _cmd, shouldDimImage) +{ with(self) +{ + shouldDimImage = !!shouldDimImage; + if (_shouldDimImage !== shouldDimImage) + { + _shouldDimImage = shouldDimImage; + objj_msgSend(self, "setNeedsLayout"); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("setTextColor:"), function $_CPImageAndTextView__setTextColor_(self, _cmd, aTextColor) +{ with(self) +{ + if (_textColor === aTextColor) + return; + _textColor = aTextColor; + _DOMElement.style.color = objj_msgSend(_textColor, "cssString"); +} +},["void","CPColor"]), new objj_method(sel_getUid("textColor"), function $_CPImageAndTextView__textColor(self, _cmd) +{ with(self) +{ + return _textColor; +} +},["CPColor"]), new objj_method(sel_getUid("setFont:"), function $_CPImageAndTextView__setFont_(self, _cmd, aFont) +{ with(self) +{ + if (_font === aFont) + return; + _font = aFont; + _flags |= _CPImageAndTextViewFontChangedFlag; + _textSize = NULL; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPFont"]), new objj_method(sel_getUid("font"), function $_CPImageAndTextView__font(self, _cmd) +{ with(self) +{ + return _font; +} +},["CPFont"]), new objj_method(sel_getUid("setTextShadowColor:"), function $_CPImageAndTextView__setTextShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textShadowColor === aColor) + return; + _textShadowColor = aColor; + _flags |= _CPImageAndTextViewTextShadowColorChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPColor"]), new objj_method(sel_getUid("textShadowColor"), function $_CPImageAndTextView__textShadowColor(self, _cmd) +{ with(self) +{ + return _textShadowColor; +} +},["CPColor"]), new objj_method(sel_getUid("setTextShadowOffset:"), function $_CPImageAndTextView__setTextShadowOffset_(self, _cmd, anOffset) +{ with(self) +{ + if ((_textShadowOffset.width == anOffset.width && _textShadowOffset.height == anOffset.height)) + return; + _textShadowOffset = { width:anOffset.width, height:anOffset.height }; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CGSize"]), new objj_method(sel_getUid("textShadowOffset"), function $_CPImageAndTextView__textShadowOffset(self, _cmd) +{ with(self) +{ + return _textShadowOffset; +} +},["CGSize"]), new objj_method(sel_getUid("setImage:"), function $_CPImageAndTextView__setImage_(self, _cmd, anImage) +{ with(self) +{ + if (_image == anImage) + return; + if (objj_msgSend(_image, "delegate") === self) + objj_msgSend(_image, "setDelegate:", nil); + _image = anImage; + _flags |= _CPImageAndTextViewImageChangedFlag; + if (objj_msgSend(_image, "loadStatus") !== CPImageLoadStatusCompleted) + objj_msgSend(_image, "setDelegate:", self); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPImage"]), new objj_method(sel_getUid("setImageOffset:"), function $_CPImageAndTextView__setImageOffset_(self, _cmd, theImageOffset) +{ with(self) +{ + if (_imageOffset === theImageOffset) + return; + _imageOffset = theImageOffset; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","float"]), new objj_method(sel_getUid("imageOffset"), function $_CPImageAndTextView__imageOffset(self, _cmd) +{ with(self) +{ + return _imageOffset; +} +},["float"]), new objj_method(sel_getUid("imageDidLoad:"), function $_CPImageAndTextView__imageDidLoad_(self, _cmd, anImage) +{ with(self) +{ + if (anImage === _image) + { + _flags |= _CPImageAndTextViewImageChangedFlag; + objj_msgSend(self, "setNeedsLayout"); + } +} +},["void","id"]), new objj_method(sel_getUid("image"), function $_CPImageAndTextView__image(self, _cmd) +{ with(self) +{ + return _image; +} +},["CPImage"]), new objj_method(sel_getUid("setText:"), function $_CPImageAndTextView__setText_(self, _cmd, text) +{ with(self) +{ + if (_text === text) + return; + _text = text; + _flags |= _CPImageAndTextViewTextChangedFlag; + _textSize = NULL; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPString"]), new objj_method(sel_getUid("text"), function $_CPImageAndTextView__text(self, _cmd) +{ with(self) +{ + return _text; +} +},["CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPImageAndTextView__layoutSubviews(self, _cmd) +{ with(self) +{ + var needsDOMTextElement = _imagePosition !== CPImageOnly && (objj_msgSend(_text, "length") > 0), + hasDOMTextElement = !!_DOMTextElement; + if (needsDOMTextElement !== hasDOMTextElement) + { + if (hasDOMTextElement) + { + _DOMElement.removeChild(_DOMTextElement); + _DOMTextElement = NULL; + hasDOMTextElement = NO; + } + else + { + _DOMTextElement = document.createElement("div"); + var textStyle = _DOMTextElement.style; + textStyle.position = "absolute"; + textStyle.whiteSpace = "pre"; + textStyle.zIndex = 200; + textStyle.overflow = "hidden"; + _DOMElement.appendChild(_DOMTextElement); + hasDOMTextElement = YES; + _flags |= _CPImageAndTextViewTextChangedFlag | _CPImageAndTextViewFontChangedFlag | _CPImageAndTextViewLineBreakModeChangedFlag; + } + } + var textStyle = hasDOMTextElement ? _DOMTextElement.style : nil; + var needsDOMTextShadowElement = hasDOMTextElement && !!_textShadowColor, + hasDOMTextShadowElement = !!_DOMTextShadowElement; + if (needsDOMTextShadowElement !== hasDOMTextShadowElement) + { + if (hasDOMTextShadowElement) + { + _DOMElement.removeChild(_DOMTextShadowElement); + _DOMTextShadowElement = NULL; + hasDOMTextShadowElement = NO; + } + else + { + _DOMTextShadowElement = document.createElement("div"); + var shadowStyle = _DOMTextShadowElement.style; + shadowStyle.font = objj_msgSend(_font ? _font : objj_msgSend(CPFont, "systemFontOfSize:", 12.0), "cssString"); + shadowStyle.position = "absolute"; + shadowStyle.whiteSpace = textStyle.whiteSpace; + shadowStyle.wordWrap = textStyle.wordWrap; + shadowStyle.color = objj_msgSend(_textShadowColor, "cssString"); + shadowStyle.zIndex = 150; + shadowStyle.textOverflow = textStyle.textOverflow; + if (document.attachEvent) + { + shadowStyle.overflow = textStyle.overflow; + } + else + { + shadowStyle.overflowX = textStyle.overflowX; + shadowStyle.overflowY = textStyle.overflowY; + } + _DOMElement.appendChild(_DOMTextShadowElement); + hasDOMTextShadowElement = YES; + _flags |= _CPImageAndTextViewTextChangedFlag; + } + } + var shadowStyle = hasDOMTextShadowElement ? _DOMTextShadowElement.style : nil; + if (hasDOMTextElement) + { + if (_flags & _CPImageAndTextViewTextChangedFlag) + if (CPFeatureIsCompatible(CPJavascriptInnerTextFeature)) + { + _DOMTextElement.innerText = _text; + if (_DOMTextShadowElement) + _DOMTextShadowElement.innerText = _text; + } + else if (CPFeatureIsCompatible(CPJavascriptTextContentFeature)) + { + _DOMTextElement.textContent = _text; + if (_DOMTextShadowElement) + _DOMTextShadowElement.textContent = _text; + } + if (_flags & _CPImageAndTextViewFontChangedFlag) + { + var fontStyle = objj_msgSend(_font ? _font : objj_msgSend(CPFont, "systemFontOfSize:", 12.0), "cssString"); + textStyle.font = fontStyle; + if (shadowStyle) + shadowStyle.font = fontStyle; + } + if (_flags & _CPImageAndTextViewLineBreakModeChangedFlag) + { + switch (_lineBreakMode) + { + case CPLineBreakByClipping: textStyle.overflow = "hidden"; + textStyle.textOverflow = "clip"; + textStyle.whiteSpace = "pre"; + textStyle.wordWrap = "normal"; + break; + case CPLineBreakByTruncatingHead: + case CPLineBreakByTruncatingMiddle: + case CPLineBreakByTruncatingTail: textStyle.textOverflow = "ellipsis"; + textStyle.whiteSpace = "nowrap"; + textStyle.overflow = "hidden"; + textStyle.wordWrap = "normal"; + break; + case CPLineBreakByCharWrapping: + case CPLineBreakByWordWrapping: textStyle.wordWrap = "break-word"; + try { + textStyle.whiteSpace = "pre"; + textStyle.whiteSpace = "-o-pre-wrap"; + textStyle.whiteSpace = "-pre-wrap"; + textStyle.whiteSpace = "-moz-pre-wrap"; + textStyle.whiteSpace = "pre-wrap"; + } + catch (e) { + textStyle.whiteSpace = "pre"; + } + textStyle.overflow = "hidden"; + textStyle.textOverflow = "clip"; + break; + } + if (shadowStyle) + { + if (document.attachEvent) + { + shadowStyle.overflow = textStyle.overflow; + } + else + { + shadowStyle.overflowX = textStyle.overflowX; + shadowStyle.overflowY = textStyle.overflowY; + } + shadowStyle.wordWrap = textStyle.wordWrap; + shadowStyle.whiteSpace = textStyle.whiteSpace; + shadowStyle.textOverflow = textStyle.textOverflow; + } + } + } + var needsDOMImageElement = _image !== nil && _imagePosition !== CPNoImage, + hasDOMImageElement = !!_DOMImageElement; + if (needsDOMImageElement !== hasDOMImageElement) + { + if (hasDOMImageElement) + { + _DOMElement.removeChild(_DOMImageElement); + _DOMImageElement = NULL; + hasDOMImageElement = NO; + } + else + { + _DOMImageElement = document.createElement("img"); + if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + _DOMImageElement.setAttribute("draggable", "true"); + _DOMImageElement.style["-khtml-user-drag"] = "element"; + } + var imageStyle = _DOMImageElement.style; + imageStyle.top = "0px"; + imageStyle.left = "0px"; + imageStyle.position = "absolute"; + imageStyle.zIndex = 100; + _DOMElement.appendChild(_DOMImageElement); + hasDOMImageElement = YES; + } + } + var size = objj_msgSend(self, "bounds").size, + textRect = { origin: { x:0.0, y:0.0 }, size: { width:size.width, height:size.height } }; + if (hasDOMImageElement) + { + if (!imageStyle) + var imageStyle = _DOMImageElement.style; + if (_flags & _CPImageAndTextViewImageChangedFlag) + _DOMImageElement.src = objj_msgSend(_image, "filename"); + var centerX = size.width / 2.0, + centerY = size.height / 2.0, + imageSize = objj_msgSend(_image, "size"), + imageWidth = imageSize.width, + imageHeight = imageSize.height; + if (_imageScaling === CPScaleToFit) + { + imageWidth = size.width; + imageHeight = size.height; + } + else if (_imageScaling === CPScaleProportionally) + { + var scale = MIN(MIN(size.width, imageWidth) / imageWidth, MIN(size.height, imageHeight) / imageHeight); + imageWidth *= scale; + imageHeight *= scale; + } + if (CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)) + imageStyle.filter = "alpha(opacity=" + _shouldDimImage ? 35 : 100 + ")"; + else + imageStyle.opacity = _shouldDimImage ? 0.35 : 1.0; + _DOMImageElement.width = imageWidth; + _DOMImageElement.height = imageHeight; + imageStyle.width = MAX(imageWidth, 0) + "px"; + imageStyle.height = MAX(imageHeight, 0) + "px"; + if (_imagePosition === CPImageBelow) + { + imageStyle.left = FLOOR(centerX - imageWidth / 2.0) + "px"; + imageStyle.top = FLOOR(size.height - imageHeight) + "px"; + textRect.size.height = size.height - imageHeight - _imageOffset; + } + else if (_imagePosition === CPImageAbove) + { + imageStyle.left = FLOOR(centerX - imageWidth / 2.0) + "px"; + imageStyle.top = 0 + "px"; + textRect.origin.y += imageHeight + _imageOffset; + textRect.size.height = size.height - imageHeight - _imageOffset; + } + else if (_imagePosition === CPImageLeft) + { + imageStyle.top = FLOOR(centerY - imageHeight / 2.0) + "px"; + imageStyle.left = "0px"; + textRect.origin.x = imageWidth + _imageOffset; + textRect.size.width -= imageWidth + _imageOffset; + } + else if (_imagePosition === CPImageRight) + { + imageStyle.top = FLOOR(centerY - imageHeight / 2.0) + "px"; + imageStyle.left = FLOOR(size.width - imageWidth) + "px"; + textRect.size.width -= imageWidth + _imageOffset; + } + else if (_imagePosition === CPImageOnly || _imagePosition == CPImageOverlaps) + { + imageStyle.top = FLOOR(centerY - imageHeight / 2.0) + "px"; + imageStyle.left = FLOOR(centerX - imageWidth / 2.0) + "px"; + } + } + if (hasDOMTextElement) + { + var textRectX = (textRect.origin.x), + textRectY = (textRect.origin.y), + textRectWidth = (textRect.size.width), + textRectHeight = (textRect.size.height); + if (_verticalAlignment !== CPTopVerticalTextAlignment) + { + if (!_textSize) + { + if (_lineBreakMode === CPLineBreakByCharWrapping || + _lineBreakMode === CPLineBreakByWordWrapping) + _textSize = objj_msgSend(_text, "sizeWithFont:inWidth:", _font, textRectWidth); + else + _textSize = objj_msgSend(_text, "sizeWithFont:", _font); + } + if (_verticalAlignment === CPCenterVerticalTextAlignment) + { + textRectY = textRectY + (textRectHeight - _textSize.height) / 2.0; + textRectHeight = _textSize.height; + } + else + { + textRectY = textRectY + textRectHeight - _textSize.height; + textRectHeight = _textSize.height; + } + } + textStyle.top = ROUND(textRectY) + "px"; + textStyle.left = ROUND(textRectX) + "px"; + textStyle.width = MAX(ROUND(textRectWidth), 0) + "px"; + textStyle.height = MAX(ROUND(textRectHeight), 0) + "px"; + if (shadowStyle) + { + if (_flags & _CPImageAndTextViewTextShadowColorChangedFlag) + shadowStyle.color = objj_msgSend(_textShadowColor, "cssString"); + shadowStyle.top = ROUND(textRectY + _textShadowOffset.height) + "px"; + shadowStyle.left = ROUND(textRectX + _textShadowOffset.width) + "px"; + shadowStyle.width = MAX(ROUND(textRectWidth), 0) + "px"; + shadowStyle.height = MAX(ROUND(textRectHeight), 0) + "px"; + } + } + _flags = 0; +} +},["void"]), new objj_method(sel_getUid("sizeToFit"), function $_CPImageAndTextView__sizeToFit(self, _cmd) +{ with(self) +{ + var size = CGSizeMakeZero(); + if ((_imagePosition !== CPNoImage) && _image) + { + var imageSize = objj_msgSend(_image, "size"); + size.width += imageSize.width; + size.height += imageSize.height; + } + if ((_imagePosition !== CPImageOnly) && objj_msgSend(_text, "length") > 0) + { + if (!_textSize) + _textSize = objj_msgSend(_text, "sizeWithFont:", _font ? _font : objj_msgSend(CPFont, "systemFontOfSize:", 12.0)); + if (_imagePosition === CPImageLeft || _imagePosition === CPImageRight) + { + size.width += _textSize.width + _imageOffset; + size.height = MAX(size.height, _textSize.height); + } + else if (_imagePosition === CPImageAbove || _imagePosition === CPImageBelow) + { + size.width = MAX(size.width, _textSize.width); + size.height += _textSize.height + _imageOffset; + } + else + { + size.width = MAX(size.width, _textSize.width); + size.height = MAX(size.height, _textSize.height); + } + } + objj_msgSend(self, "setFrameSize:", size); +} +},["void"])]); +} + +p;29;_CPToolbarFlexibleSpaceItem.jt;1179;@STATIC;1.0;i;15;CPToolbarItem.jt;1140;objj_executeFile("CPToolbarItem.j", YES); +{var the_class = objj_allocateClassPair(CPToolbarItem, "_CPToolbarFlexibleSpaceItem"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithItemIdentifier:"), function $_CPToolbarFlexibleSpaceItem__initWithItemIdentifier_(self, _cmd, anIgnoredIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarFlexibleSpaceItem").super_class }, "initWithItemIdentifier:", CPToolbarFlexibleSpaceItemIdentifier); + if (self) + { + objj_msgSend(self, "setMinSize:", CGSizeMake(32.0, 32.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(10000.0, 32.0)); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPToolbarFlexibleSpaceItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPToolbarFlexibleSpaceItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +} + +p;25;_CPToolbarSeparatorItem.jt;1153;@STATIC;1.0;i;15;CPToolbarItem.jt;1114;objj_executeFile("CPToolbarItem.j", YES); +{var the_class = objj_allocateClassPair(CPToolbarItem, "_CPToolbarSeparatorItem"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithItemIdentifier:"), function $_CPToolbarSeparatorItem__initWithItemIdentifier_(self, _cmd, anIgnoredIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarSeparatorItem").super_class }, "initWithItemIdentifier:", CPToolbarSeparatorItemIdentifier); + if (self) + { + objj_msgSend(self, "setMinSize:", CGSizeMake(2.0, 0.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(2.0, 100000.0)); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPToolbarSeparatorItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPToolbarSeparatorItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +} + +p;26;_CPToolbarShowColorsItem.jt;1693;@STATIC;1.0;i;15;CPToolbarItem.jt;1654;objj_executeFile("CPToolbarItem.j", YES); +{var the_class = objj_allocateClassPair(CPToolbarItem, "_CPToolbarShowColorsItem"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithItemIdentifier:"), function $_CPToolbarShowColorsItem__initWithItemIdentifier_(self, _cmd, anIgnoredIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarShowColorsItem").super_class }, "initWithItemIdentifier:", CPToolbarShowColorsItemIdentifier); + if (self) + { + objj_msgSend(self, "setMinSize:", CGSizeMake(32.0, 32.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(32.0, 32.0)); + objj_msgSend(self, "setLabel:", "Colors"); + objj_msgSend(self, "setPaletteLabel:", "Show Colors"); + objj_msgSend(self, "setTarget:", CPApp); + objj_msgSend(self, "setAction:", sel_getUid("orderFrontColorPanel:")); + objj_msgSend(self, "setImage:", objj_msgSend(CPImage, "imageNamed:", CPImageNameColorPanel)); + objj_msgSend(self, "setAlternateImage:", objj_msgSend(CPImage, "imageNamed:", CPImageNameColorPanelHighlighted)); + objj_msgSend(self, "setToolTip:", "Show the Colors panel."); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPToolbarShowColorsItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPToolbarShowColorsItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +} + +p;21;_CPToolbarSpaceItem.jt;1128;@STATIC;1.0;i;15;CPToolbarItem.jt;1089;objj_executeFile("CPToolbarItem.j", YES); +{var the_class = objj_allocateClassPair(CPToolbarItem, "_CPToolbarSpaceItem"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithItemIdentifier:"), function $_CPToolbarSpaceItem__initWithItemIdentifier_(self, _cmd, anIgnoredIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarSpaceItem").super_class }, "initWithItemIdentifier:", CPToolbarSpaceItemIdentifier); + if (self) + { + objj_msgSend(self, "setMinSize:", CGSizeMake(32.0, 32.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(32.0, 32.0)); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPToolbarSpaceItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPToolbarSpaceItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +} + +p;8;AppKit.jt;4101;@STATIC;1.0;i;9;CALayer.ji;9;CPAlert.ji;13;CPAnimation.ji;15;CPApplication.ji;14;CPBezierPath.ji;7;CPBox.ji;11;CPBrowser.ji;10;CPButton.ji;13;CPButtonBar.ji;12;CPCheckBox.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;14;CPCibLoading.ji;22;CPCibOutletConnector.ji;12;CPClipView.ji;18;CPCollectionView.ji;22;CPCollectionViewItem.ji;9;CPColor.ji;14;CPColorPanel.ji;13;CPColorWell.ji;17;CPCompatibility.ji;11;CPControl.ji;10;CPCookie.ji;10;CPCursor.ji;12;CPDocument.ji;22;CPDocumentController.ji;9;CPEvent.ji;14;CPFlashMovie.ji;13;CPFlashView.ji;8;CPFont.ji;15;CPFontManager.ji;12;CPGeometry.ji;12;CPGraphics.ji;9;CPImage.ji;13;CPImageView.ji;14;CPKeyBinding.ji;8;CPMenu.ji;12;CPMenuItem.ji;13;CPOpenPanel.ji;15;CPOutlineView.ji;9;CPPanel.ji;14;CPPasteboard.ji;15;CPPopUpButton.ji;21;CPProgressIndicator.ji;9;CPRadio.ji;13;CPResponder.ji;12;CPScroller.ji;14;CPScrollView.ji;15;CPSearchField.ji;19;CPSecureTextField.ji;20;CPSegmentedControl.ji;10;CPShadow.ji;10;CPSlider.ji;13;CPSplitView.ji;15;CPTableColumn.ji;13;CPTableView.ji;11;CPTabView.ji;8;CPText.ji;13;CPTextField.ji;11;CPToolbar.ji;15;CPToolbarItem.ji;12;CPTreeNode.ji;8;CPView.ji;17;CPViewAnimation.ji;18;CPViewController.ji;11;CPWebView.ji;10;CPWindow.ji;20;CPWindowController.ji;19;CPArrayController.jt;2818;objj_executeFile("CALayer.j", YES); +objj_executeFile("CPAlert.j", YES); +objj_executeFile("CPAnimation.j", YES); +objj_executeFile("CPApplication.j", YES); +objj_executeFile("CPBezierPath.j", YES); +objj_executeFile("CPBox.j", YES); +objj_executeFile("CPBrowser.j", YES); +objj_executeFile("CPButton.j", YES); +objj_executeFile("CPButtonBar.j", YES); +objj_executeFile("CPCheckBox.j", YES); +objj_executeFile("CPCib.j", YES); +objj_executeFile("CPCibConnector.j", YES); +objj_executeFile("CPCibControlConnector.j", YES); +objj_executeFile("CPCibLoading.j", YES); +objj_executeFile("CPCibOutletConnector.j", YES); +objj_executeFile("CPClipView.j", YES); +objj_executeFile("CPCollectionView.j", YES); +objj_executeFile("CPCollectionViewItem.j", YES); +objj_executeFile("CPColor.j", YES); +objj_executeFile("CPColorPanel.j", YES); +objj_executeFile("CPColorWell.j", YES); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("CPControl.j", YES); +objj_executeFile("CPCookie.j", YES); +objj_executeFile("CPCursor.j", YES); +objj_executeFile("CPDocument.j", YES); +objj_executeFile("CPDocumentController.j", YES); +objj_executeFile("CPEvent.j", YES); +objj_executeFile("CPFlashMovie.j", YES); +objj_executeFile("CPFlashView.j", YES); +objj_executeFile("CPFont.j", YES); +objj_executeFile("CPFontManager.j", YES); +objj_executeFile("CPGeometry.j", YES); +objj_executeFile("CPGraphics.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPImageView.j", YES); +objj_executeFile("CPKeyBinding.j", YES); +objj_executeFile("CPMenu.j", YES); +objj_executeFile("CPMenuItem.j", YES); +objj_executeFile("CPOpenPanel.j", YES); +objj_executeFile("CPOutlineView.j", YES); +objj_executeFile("CPPanel.j", YES); +objj_executeFile("CPPasteboard.j", YES); +objj_executeFile("CPPopUpButton.j", YES); +objj_executeFile("CPProgressIndicator.j", YES); +objj_executeFile("CPRadio.j", YES); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPScroller.j", YES); +objj_executeFile("CPScrollView.j", YES); +objj_executeFile("CPSearchField.j", YES); +objj_executeFile("CPSecureTextField.j", YES); +objj_executeFile("CPSegmentedControl.j", YES); +objj_executeFile("CPShadow.j", YES); +objj_executeFile("CPSlider.j", YES); +objj_executeFile("CPSplitView.j", YES); +objj_executeFile("CPTableColumn.j", YES); +objj_executeFile("CPTableView.j", YES); +objj_executeFile("CPTabView.j", YES); +objj_executeFile("CPText.j", YES); +objj_executeFile("CPTextField.j", YES); +objj_executeFile("CPToolbar.j", YES); +objj_executeFile("CPToolbarItem.j", YES); +objj_executeFile("CPTreeNode.j", YES); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPViewAnimation.j", YES); +objj_executeFile("CPViewController.j", YES); +objj_executeFile("CPWebView.j", YES); +objj_executeFile("CPWindow.j", YES); +objj_executeFile("CPWindowController.j", YES); +objj_executeFile("CPArrayController.j", YES); + +p;17;CPAccordionView.jt;15213;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;32;Foundation/CPKeyValueObserving.jI;23;Foundation/CPIndexSet.jI;21;Foundation/CPString.jI;15;AppKit/CPView.jt;15031;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPKeyValueObserving.j", NO); +objj_executeFile("Foundation/CPIndexSet.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("AppKit/CPView.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPAccordionViewItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_identifier"), new objj_ivar("_view"), new objj_ivar("_label")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("identifier"), function $CPAccordionViewItem__identifier(self, _cmd) +{ with(self) +{ +return _identifier; +} +},["id"]), +new objj_method(sel_getUid("setIdentifier:"), function $CPAccordionViewItem__setIdentifier_(self, _cmd, newValue) +{ with(self) +{ +_identifier = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("view"), function $CPAccordionViewItem__view(self, _cmd) +{ with(self) +{ +return _view; +} +},["id"]), +new objj_method(sel_getUid("setView:"), function $CPAccordionViewItem__setView_(self, _cmd, newValue) +{ with(self) +{ +_view = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("label"), function $CPAccordionViewItem__label(self, _cmd) +{ with(self) +{ +return _label; +} +},["id"]), +new objj_method(sel_getUid("setLabel:"), function $CPAccordionViewItem__setLabel_(self, _cmd, newValue) +{ with(self) +{ +_label = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPAccordionViewItem__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithIdentifier:"), function $CPAccordionViewItem__initWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAccordionViewItem").super_class }, "init"); + if (self) + objj_msgSend(self, "setIdentifier:", anIdentifier); + return self; +} +},["id","CPString"])]); +} +{var the_class = objj_allocateClassPair(CPView, "CPAccordionView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_dirtyItemIndex"), new objj_ivar("_itemHeaderPrototype"), new objj_ivar("_items"), new objj_ivar("_itemViews"), new objj_ivar("_expandedItemIndexes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPAccordionView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAccordionView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _items = []; + _itemViews = []; + _expandedItemIndexes = objj_msgSend(CPIndexSet, "indexSet"); + objj_msgSend(self, "setItemHeaderPrototype:", objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:100.0, height:24.0 } })); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setItemHeaderPrototype:"), function $CPAccordionView__setItemHeaderPrototype_(self, _cmd, aView) +{ with(self) +{ + _itemHeaderPrototype = aView; +} +},["void","CPView"]), new objj_method(sel_getUid("itemHeaderPrototype"), function $CPAccordionView__itemHeaderPrototype(self, _cmd) +{ with(self) +{ + return _itemHeaderPrototype; +} +},["CPView"]), new objj_method(sel_getUid("items"), function $CPAccordionView__items(self, _cmd) +{ with(self) +{ + return _items; +} +},["CPArray"]), new objj_method(sel_getUid("addItem:"), function $CPAccordionView__addItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(self, "insertItem:atIndex:", anItem, _items.length); +} +},["void","CPAccordionViewItem"]), new objj_method(sel_getUid("insertItem:atIndex:"), function $CPAccordionView__insertItem_atIndex_(self, _cmd, anItem, anIndex) +{ with(self) +{ + objj_msgSend(_expandedItemIndexes, "addIndex:", anIndex); + var itemView = objj_msgSend(objj_msgSend(_CPAccordionItemView, "alloc"), "initWithAccordionView:", self); + objj_msgSend(itemView, "setIndex:", anIndex); + objj_msgSend(itemView, "setLabel:", objj_msgSend(anItem, "label")); + objj_msgSend(itemView, "setContentView:", objj_msgSend(anItem, "view")); + objj_msgSend(self, "addSubview:", itemView); + objj_msgSend(_items, "insertObject:atIndex:", anItem, anIndex); + objj_msgSend(_itemViews, "insertObject:atIndex:", itemView, anIndex); + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", anIndex); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPAccordionViewItem","CPInteger"]), new objj_method(sel_getUid("removeItem:"), function $CPAccordionView__removeItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(self, "removeItemAtIndex:", objj_msgSend(_items, "indexOfObjectIdenticalTo:", anItem)); +} +},["void","CPAccordionViewItem"]), new objj_method(sel_getUid("removeItemAtIndex:"), function $CPAccordionView__removeItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(_expandedItemIndexes, "removeIndex:", anIndex); + objj_msgSend(_itemViews[anIndex], "removeFromSuperview"); + objj_msgSend(_items, "removeObjectAtIndex:", anIndex); + objj_msgSend(_itemViews, "removeObjectAtIndex:", anIndex); + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", anIndex); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("removeAllItems"), function $CPAccordionView__removeAllItems(self, _cmd) +{ with(self) +{ + var count = _items.length; + while (count--) + objj_msgSend(self, "removeItemAtIndex:", count); +} +},["void"]), new objj_method(sel_getUid("expandItemAtIndex:"), function $CPAccordionView__expandItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (!objj_msgSend(_itemViews[anIndex], "isCollapsed")) + return; + objj_msgSend(_expandedItemIndexes, "addIndex:", anIndex); + objj_msgSend(_itemViews[anIndex], "setCollapsed:", NO); + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", anIndex); +} +},["void","CPInteger"]), new objj_method(sel_getUid("collapseItemAtIndex:"), function $CPAccordionView__collapseItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (objj_msgSend(_itemViews[anIndex], "isCollapsed")) + return; + objj_msgSend(_expandedItemIndexes, "removeIndex:", anIndex); + objj_msgSend(_itemViews[anIndex], "setCollapsed:", YES); + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", anIndex); +} +},["void","CPInteger"]), new objj_method(sel_getUid("toggleItemAtIndex:"), function $CPAccordionView__toggleItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + var itemView = _itemViews[anIndex]; + if (objj_msgSend(itemView, "isCollapsed")) + objj_msgSend(self, "expandItemAtIndex:", anIndex); + else + objj_msgSend(self, "collapseItemAtIndex:", anIndex); +} +},["void","CPInteger"]), new objj_method(sel_getUid("expandedItemIndexes"), function $CPAccordionView__expandedItemIndexes(self, _cmd) +{ with(self) +{ + return _expandedItemIndexes; +} +},["CPIndexSet"]), new objj_method(sel_getUid("collapsedItemIndexes"), function $CPAccordionView__collapsedItemIndexes(self, _cmd) +{ with(self) +{ + var indexSet = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, _items.length)); + objj_msgSend(indexSet, "removeIndexes:", _expandedIndexes); + return indexSet; +} +},["CPIndexSet"]), new objj_method(sel_getUid("setEnabled:forItemAtIndex:"), function $CPAccordionView__setEnabled_forItemAtIndex_(self, _cmd, isEnabled, anIndex) +{ with(self) +{ + var itemView = _itemViews[anIndex]; + if (!itemView) + return; + if (!isEnabled) + objj_msgSend(self, "collapseItemAtIndex:", anIndex); + else + objj_msgSend(self, "expandItemAtIndex:", anIndex); + objj_msgSend(itemView, "setEnabled:", isEnabled); +} +},["void","BOOL","CPInteger"]), new objj_method(sel_getUid("_invalidateItemsStartingAtIndex:"), function $CPAccordionView___invalidateItemsStartingAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (_dirtyItemIndex === CPNotFound) + _dirtyItemIndex = anIndex; + _dirtyItemIndex = MIN(_dirtyItemIndex, anIndex); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("setFrameSize:"), function $CPAccordionView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + var width = (objj_msgSend(self, "frame").size.width); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAccordionView").super_class }, "setFrameSize:", aSize); + if (width !== (objj_msgSend(self, "frame").size.width)) + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", 0); +} +},["void","CGSize"]), new objj_method(sel_getUid("layoutSubviews"), function $CPAccordionView__layoutSubviews(self, _cmd) +{ with(self) +{ + if (_items.length <= 0) + return objj_msgSend(self, "setFrameSize:", { width:(objj_msgSend(self, "frame").size.width), height:0.0 }); + if (_dirtyItemIndex === CPNotFound) + return; + _dirtyItemIndex = MIN(_dirtyItemIndex, _items.length - 1); + var index = _dirtyItemIndex, + count = _itemViews.length, + width = (objj_msgSend(self, "bounds").size.width), + y = index > 0 ? CGRectGetMaxY(objj_msgSend(_itemViews[index - 1], "frame")) : 0.0; + _dirtyItemIndex = CPNotFound; + for (; index < count; ++index) + { + var itemView = _itemViews[index]; + objj_msgSend(itemView, "setFrameY:width:", y, width); + y = CGRectGetMaxY(objj_msgSend(itemView, "frame")); + } + objj_msgSend(self, "setFrameSize:", { width:(objj_msgSend(self, "frame").size.width), height:y }); +} +},["void"])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPAccordionItemView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_accordionView"), new objj_ivar("_isCollapsed"), new objj_ivar("_index"), new objj_ivar("_headerView"), new objj_ivar("_contentView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isCollapsed"), function $_CPAccordionItemView__isCollapsed(self, _cmd) +{ with(self) +{ +return _isCollapsed; +} +},["id"]), +new objj_method(sel_getUid("setCollapsed:"), function $_CPAccordionItemView__setCollapsed_(self, _cmd, newValue) +{ with(self) +{ +_isCollapsed = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("index"), function $_CPAccordionItemView__index(self, _cmd) +{ with(self) +{ +return _index; +} +},["id"]), +new objj_method(sel_getUid("setIndex:"), function $_CPAccordionItemView__setIndex_(self, _cmd, newValue) +{ with(self) +{ +_index = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithAccordionView:"), function $_CPAccordionItemView__initWithAccordionView_(self, _cmd, anAccordionView) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPAccordionItemView").super_class }, "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + if (self) + { + _accordionView = anAccordionView; + _isCollapsed = NO; + var bounds = objj_msgSend(self, "bounds"); + _headerView = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", objj_msgSend(_accordionView, "itemHeaderPrototype"))); + if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setTarget:")) && objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setAction:"))) + { + objj_msgSend(_headerView, "setTarget:", self); + objj_msgSend(_headerView, "setAction:", sel_getUid("toggle:")); + } + objj_msgSend(self, "addSubview:", _headerView); + } + return self; +} +},["id","CPAccordionView"]), new objj_method(sel_getUid("toggle:"), function $_CPAccordionItemView__toggle_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(_accordionView, "toggleItemAtIndex:", objj_msgSend(self, "index")); +} +},["void","id"]), new objj_method(sel_getUid("setLabel:"), function $_CPAccordionItemView__setLabel_(self, _cmd, aLabel) +{ with(self) +{ + if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setTitle:"))) + objj_msgSend(_headerView, "setTitle:", aLabel); + else if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setLabel:"))) + objj_msgSend(_headerView, "setLabel:", aLabel); + else if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setStringValue:"))) + objj_msgSend(_headerView, "setStringValue:", aLabel); +} +},["void","CPString"]), new objj_method(sel_getUid("setEnabled:"), function $_CPAccordionItemView__setEnabled_(self, _cmd, isEnabled) +{ with(self) +{ + if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setEnabled:"))) + objj_msgSend(_headerView, "setEnabled:", isEnabled); +} +},["void","BOOL"]), new objj_method(sel_getUid("setContentView:"), function $_CPAccordionItemView__setContentView_(self, _cmd, aView) +{ with(self) +{ + if (_contentView === aView) + return; + objj_msgSend(_contentView, "removeObserver:forKeyPath:", self, "frame"); + objj_msgSend(_contentView, "removeFromSuperview"); + _contentView = aView; + objj_msgSend(_contentView, "addObserver:forKeyPath:options:context:", self, "frame", CPKeyValueObservingOptionOld | CPKeyValueObservingOptionNew, NULL); + objj_msgSend(self, "addSubview:", _contentView); + objj_msgSend(_accordionView, "_invalidateItemsStartingAtIndex:", objj_msgSend(self, "index")); +} +},["void","CPView"]), new objj_method(sel_getUid("setFrameY:width:"), function $_CPAccordionItemView__setFrameY_width_(self, _cmd, aY, aWidth) +{ with(self) +{ + var headerHeight = (objj_msgSend(_headerView, "frame").size.height); + objj_msgSend(_headerView, "setFrameSize:", { width:aWidth, height:headerHeight }); + objj_msgSend(_contentView, "setFrameOrigin:", { x:0.0, y:headerHeight }); + if (objj_msgSend(self, "isCollapsed")) + objj_msgSend(self, "setFrame:", { origin: { x:0.0, y:aY }, size: { width:aWidth, height:headerHeight } }); + else + { + var contentHeight = (objj_msgSend(_contentView, "frame").size.height); + objj_msgSend(_contentView, "setFrameSize:", { width:aWidth, height:contentHeight }); + objj_msgSend(self, "setFrame:", { origin: { x:0.0, y:aY }, size: { width:aWidth, height:contentHeight + headerHeight } }); + } +} +},["void","float","float"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $_CPAccordionItemView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ +} +},["void","CGSize"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPAccordionItemView__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, aChange, aContext) +{ with(self) +{ + if (aKeyPath === "frame" && !CGRectEqualToRect(objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeOldKey), objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeNewKey))) + objj_msgSend(_accordionView, "_invalidateItemsStartingAtIndex:", objj_msgSend(self, "index")); +} +},["void","CPString","id","CPDictionary","id"])]); +} + +p;9;CPAlert.jt;16191;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;22;AppKit/CPApplication.jI;17;AppKit/CPButton.jI;16;AppKit/CPColor.jI;15;AppKit/CPFont.jI;16;AppKit/CPImage.jI;20;AppKit/CPImageView.jI;16;AppKit/CPPanel.jI;20;AppKit/CPTextField.jt;15937;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("AppKit/CPApplication.j", NO); +objj_executeFile("AppKit/CPButton.j", NO); +objj_executeFile("AppKit/CPColor.j", NO); +objj_executeFile("AppKit/CPFont.j", NO); +objj_executeFile("AppKit/CPImage.j", NO); +objj_executeFile("AppKit/CPImageView.j", NO); +objj_executeFile("AppKit/CPPanel.j", NO); +objj_executeFile("AppKit/CPTextField.j", NO); +CPWarningAlertStyle = 0; +CPInformationalAlertStyle = 1; +CPCriticalAlertStyle = 2; +{var the_class = objj_allocateClassPair(CPView, "CPAlert"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_alertPanel"), new objj_ivar("_messageLabel"), new objj_ivar("_informativeLabel"), new objj_ivar("_alertImageView"), new objj_ivar("_alertStyle"), new objj_ivar("_windowTitle"), new objj_ivar("_windowStyle"), new objj_ivar("_buttons"), new objj_ivar("_delegate"), new objj_ivar("_didEndSelector"), new objj_ivar("_modalDelegate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPAlert__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAlert").super_class }, "init")) + { + _buttons = objj_msgSend(CPArray, "array"); + _alertStyle = CPWarningAlertStyle; + _alertPanel = nil; + _windowStyle = nil; + _didEndSelector = nil; + _messageLabel = objj_msgSend(CPTextField, "labelWithTitle:", "Alert"); + _alertImageView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + _informativeLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + } + return self; +} +},["id"]), new objj_method(sel_getUid("setWindowStyle:"), function $CPAlert__setWindowStyle_(self, _cmd, styleMask) +{ with(self) +{ + _windowStyle = styleMask; + objj_msgSend(self, "setTheme:", (_windowStyle & CPHUDBackgroundWindowMask) ? objj_msgSend(CPTheme, "defaultHudTheme") : objj_msgSend(CPTheme, "defaultTheme")); + _alertPanel = nil; +} +},["void","int"]), new objj_method(sel_getUid("_createPanel"), function $CPAlert___createPanel(self, _cmd) +{ with(self) +{ + var frame = CGRectMakeZero(); + frame.size = objj_msgSend(self, "currentValueForThemeAttribute:", "size"); + _alertPanel = objj_msgSend(objj_msgSend(CPPanel, "alloc"), "initWithContentRect:styleMask:", frame, _windowStyle ? _windowStyle | CPTitledWindowMask : CPTitledWindowMask); + var contentView = objj_msgSend(_alertPanel, "contentView"), + count = objj_msgSend(_buttons, "count"); + if (count) + { + while (count--) + objj_msgSend(contentView, "addSubview:", _buttons[count]); + } + else + objj_msgSend(self, "addButtonWithTitle:", "OK"); + objj_msgSend(contentView, "addSubview:", _messageLabel); + objj_msgSend(contentView, "addSubview:", _alertImageView); + objj_msgSend(contentView, "addSubview:", _informativeLabel); +} +},["void"]), new objj_method(sel_getUid("setTitle:"), function $CPAlert__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + _windowTitle = aTitle; +} +},["void","CPString"]), new objj_method(sel_getUid("title"), function $CPAlert__title(self, _cmd) +{ with(self) +{ + return _windowTitle; +} +},["CPString"]), new objj_method(sel_getUid("windowStyle"), function $CPAlert__windowStyle(self, _cmd) +{ with(self) +{ + return _windowStyle; +} +},["int"]), new objj_method(sel_getUid("setDelegate:"), function $CPAlert__setDelegate_(self, _cmd, delegate) +{ with(self) +{ + _delegate = delegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPAlert__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["void"]), new objj_method(sel_getUid("setAlertStyle:"), function $CPAlert__setAlertStyle_(self, _cmd, style) +{ with(self) +{ + _alertStyle = style; +} +},["void","CPAlertStyle"]), new objj_method(sel_getUid("alertStyle"), function $CPAlert__alertStyle(self, _cmd) +{ with(self) +{ + return _alertStyle; +} +},["CPAlertStyle"]), new objj_method(sel_getUid("setMessageText:"), function $CPAlert__setMessageText_(self, _cmd, messageText) +{ with(self) +{ + objj_msgSend(_messageLabel, "setStringValue:", messageText); +} +},["void","CPString"]), new objj_method(sel_getUid("messageText"), function $CPAlert__messageText(self, _cmd) +{ with(self) +{ + return objj_msgSend(_messageLabel, "stringValue"); +} +},["CPString"]), new objj_method(sel_getUid("setInformativeText:"), function $CPAlert__setInformativeText_(self, _cmd, informativeText) +{ with(self) +{ + objj_msgSend(_informativeLabel, "setStringValue:", informativeText); +} +},["void","CPString"]), new objj_method(sel_getUid("informativeText"), function $CPAlert__informativeText(self, _cmd) +{ with(self) +{ + return objj_msgSend(_informativeLabel, "stringValue"); +} +},["CPString"]), new objj_method(sel_getUid("addButtonWithTitle:"), function $CPAlert__addButtonWithTitle_(self, _cmd, title) +{ with(self) +{ + var bounds = objj_msgSend(objj_msgSend(_alertPanel, "contentView"), "bounds"), + button = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMakeZero()), + _buttonCount = objj_msgSend(_buttons, "count"); + objj_msgSend(button, "setTitle:", title); + objj_msgSend(button, "setTarget:", self); + objj_msgSend(button, "setTag:", _buttonCount); + objj_msgSend(button, "setAction:", sel_getUid("_dismissAlert:")); + objj_msgSend(objj_msgSend(_alertPanel, "contentView"), "addSubview:", button); + if (_buttonCount == 0) + objj_msgSend(button, "setKeyEquivalent:", CPCarriageReturnCharacter); + else if (objj_msgSend(title, "lowercaseString") === "cancel") + objj_msgSend(button, "setKeyEquivalent:", CPEscapeFunctionKey); + else + objj_msgSend(button, "setKeyEquivalent:", nil); + objj_msgSend(_buttons, "insertObject:atIndex:", button, 0); +} +},["void","CPString"]), new objj_method(sel_getUid("layoutPanel"), function $CPAlert__layoutPanel(self, _cmd) +{ with(self) +{ + if (!_alertPanel) + objj_msgSend(self, "_createPanel"); + var inset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + iconOffset = objj_msgSend(self, "currentValueForThemeAttribute:", "image-offset"), + theTitle, + theImage; + switch (_alertStyle) + { + case CPWarningAlertStyle: theImage = objj_msgSend(self, "currentValueForThemeAttribute:", "warning-image"); + theTitle = "Warning"; + break; + case CPInformationalAlertStyle: theImage = objj_msgSend(self, "currentValueForThemeAttribute:", "information-image"); + theTitle = "Information"; + break; + case CPCriticalAlertStyle: theImage = objj_msgSend(self, "currentValueForThemeAttribute:", "error-image"); + theTitle = "Error"; + break; + } + objj_msgSend(_alertImageView, "setImage:", theImage); + var imageSize = theImage ? objj_msgSend(theImage, "size") : CGSizeMakeZero(); + objj_msgSend(_alertImageView, "setFrame:", CGRectMake(iconOffset.x, iconOffset.y, imageSize.width, imageSize.height)); + objj_msgSend(_alertPanel, "setTitle:", _windowTitle ? _windowTitle : theTitle); + objj_msgSend(_alertPanel, "setFloatingPanel:", YES); + objj_msgSend(_alertPanel, "center"); + objj_msgSend(_messageLabel, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-color")); + objj_msgSend(_messageLabel, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-font")); + objj_msgSend(_messageLabel, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-shadow-color")); + objj_msgSend(_messageLabel, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-shadow-offset")); + objj_msgSend(_messageLabel, "setAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-alignment")); + objj_msgSend(_messageLabel, "setLineBreakMode:", CPLineBreakByWordWrapping); + objj_msgSend(_informativeLabel, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "informative-text-color")); + objj_msgSend(_informativeLabel, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "informative-text-font")); + objj_msgSend(_informativeLabel, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "informative-text-shadow-color")); + objj_msgSend(_informativeLabel, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "informative-text-shadow-offset")); + objj_msgSend(_informativeLabel, "setLineBreakMode:", CPLineBreakByWordWrapping); + var bounds = objj_msgSend(objj_msgSend(_alertPanel, "contentView"), "bounds"), + offsetX = CGRectGetWidth(bounds) - inset.right, + informativeOffset = objj_msgSend(self, "currentValueForThemeAttribute:", "informative-offset"), + buttonOffset = objj_msgSend(self, "currentValueForThemeAttribute:", "button-offset"), + textWidth = offsetX - inset.left, + messageSize = objj_msgSend((objj_msgSend(_messageLabel, "stringValue") || " "), "sizeWithFont:inWidth:", objj_msgSend(_messageLabel, "font"), textWidth), + informationString = objj_msgSend(_informativeLabel, "stringValue"), + informativeSize = objj_msgSend((informationString || " "), "sizeWithFont:inWidth:", objj_msgSend(_informativeLabel, "font"), textWidth), + sizeWithFontCorrection = 6.0; + objj_msgSend(_messageLabel, "setFrame:", CGRectMake(inset.left, inset.top, textWidth, messageSize.height + sizeWithFontCorrection)); + objj_msgSend(_informativeLabel, "setFrame:", CGRectMake(inset.left, CGRectGetMaxY(objj_msgSend(_messageLabel, "frame")) + informativeOffset, textWidth, informativeSize.height + sizeWithFontCorrection)); + objj_msgSend(_informativeLabel, "setHidden:", !informationString); + var aRepresentativeButton = _buttons[0], + buttonY = MAX(CGRectGetMaxY(objj_msgSend(_alertImageView, "frame")), CGRectGetMaxY(informationString ? objj_msgSend(_informativeLabel, "frame") : objj_msgSend(_messageLabel, "frame"))) + buttonOffset; + objj_msgSend(aRepresentativeButton, "setTheme:", objj_msgSend(self, "theme")); + objj_msgSend(aRepresentativeButton, "sizeToFit"); + var minimumSize = objj_msgSend(self, "currentValueForThemeAttribute:", "size"), + desiredHeight = MAX(minimumSize.height, buttonY + CGRectGetHeight(objj_msgSend(aRepresentativeButton, "bounds")) + inset.bottom), + deltaY = desiredHeight - CGRectGetHeight(bounds), + frameSize = CGSizeMakeCopy(objj_msgSend(_alertPanel, "frame").size); + frameSize.height += deltaY; + objj_msgSend(_alertPanel, "setFrameSize:", frameSize); + var count = objj_msgSend(_buttons, "count"); + while (count--) + { + var button = _buttons[count]; + objj_msgSend(button, "setTheme:", objj_msgSend(self, "theme")); + objj_msgSend(button, "sizeToFit"); + var buttonBounds = objj_msgSend(button, "bounds"), + width = MAX(80.0, CGRectGetWidth(buttonBounds)), + height = CGRectGetHeight(buttonBounds); + offsetX -= width; + objj_msgSend(button, "setFrame:", CGRectMake(offsetX, buttonY, width, height)); + offsetX -= 10; + } +} +},["void"]), new objj_method(sel_getUid("runModal"), function $CPAlert__runModal(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "layoutPanel"); + objj_msgSend(CPApp, "runModalForWindow:", _alertPanel); +} +},["void"]), new objj_method(sel_getUid("beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:"), function $CPAlert__beginSheetModalForWindow_modalDelegate_didEndSelector_contextInfo_(self, _cmd, window, modalDelegate, alertDidEndSelector, contextInfo) +{ with(self) +{ + if (!(_windowStyle & CPDocModalWindowMask)) + objj_msgSend(self, "setWindowStyle:", CPDocModalWindowMask); + objj_msgSend(self, "layoutPanel"); + _didEndSelector = alertDidEndSelector; + _modalDelegate = modalDelegate; + objj_msgSend(CPApp, "beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:", _alertPanel, window, self, sel_getUid("_alertDidEnd:returnCode:contextInfo:"), contextInfo); +} +},["void","CPWindow","id","SEL","void"]), new objj_method(sel_getUid("beginSheetModalForWindow:"), function $CPAlert__beginSheetModalForWindow_(self, _cmd, window) +{ with(self) +{ + if (!(_windowStyle & CPDocModalWindowMask)) + objj_msgSend(self, "setWindowStyle:", CPDocModalWindowMask); + objj_msgSend(self, "layoutPanel"); + objj_msgSend(CPApp, "beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:", _alertPanel, window, self, sel_getUid("_alertDidEnd:returnCode:contextInfo:"), nil); +} +},["void","CPWindow"]), new objj_method(sel_getUid("_alertDidEnd:returnCode:contextInfo:"), function $CPAlert___alertDidEnd_returnCode_contextInfo_(self, _cmd, aSheet, returnCode, contextInfo) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("alertDidEnd:returnCode:"))) + objj_msgSend(_delegate, "alertDidEnd:returnCode:", self, returnCode); + if (_didEndSelector) + objj_msgSend(_modalDelegate, _didEndSelector, self, returnCode, contextInfo); + _didEndSelector = nil; + _modalDelegate = nil; +} +},["void","CPWindow","CPInteger","id"]), new objj_method(sel_getUid("_dismissAlert:"), function $CPAlert___dismissAlert_(self, _cmd, button) +{ with(self) +{ + if (objj_msgSend(_alertPanel, "isSheet")) + objj_msgSend(CPApp, "endSheet:returnCode:", _alertPanel, objj_msgSend(button, "tag")); + else + { + objj_msgSend(CPApp, "abortModal"); + objj_msgSend(_alertPanel, "close"); + objj_msgSend(self, "_alertDidEnd:returnCode:contextInfo:", nil, objj_msgSend(button, "tag"), nil); + } +} +},["void","CPButton"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPAlert__themeClass(self, _cmd) +{ with(self) +{ + return "alert"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPAlert__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [CGSizeMake(400.0, 110.0), CGInsetMake(15, 15, 15, 50), 6, 10, + CPJustifiedTextAlignment, objj_msgSend(CPColor, "blackColor"), objj_msgSend(CPFont, "boldSystemFontOfSize:", 13.0), objj_msgSend(CPNull, "null"), CGSizeMakeZero(), + CPJustifiedTextAlignment, objj_msgSend(CPColor, "blackColor"), objj_msgSend(CPFont, "systemFontOfSize:", 12.0), objj_msgSend(CPNull, "null"), CGSizeMakeZero(), + CGPointMake(15, 12), + objj_msgSend(CPNull, "null"), + objj_msgSend(CPNull, "null"), + objj_msgSend(CPNull, "null") + ], ["size", "content-inset", "informative-offset", "button-offset", + "message-text-alignment", "message-text-color", "message-text-font", "message-text-shadow-color", "message-text-shadow-offset", + "informative-text-alignment", "informative-text-color", "informative-text-font", "informative-text-shadow-color", "informative-text-shadow-offset", + "image-offset", + "information-image", + "warning-image", + "error-image" + ]); +} +},["id"])]); +} + +p;13;CPAnimation.jt;7502;@STATIC;1.0;I;21;Foundation/CPObject.ji;23;CAMediaTimingFunction.jt;7429;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CAMediaTimingFunction.j", YES); +CPAnimationEaseInOut = 0; +CPAnimationEaseIn = 1; +CPAnimationEaseOut = 2; +CPAnimationLinear = 3; +ACTUAL_FRAME_RATE = 0; +{var the_class = objj_allocateClassPair(CPObject, "CPAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_lastTime"), new objj_ivar("_duration"), new objj_ivar("_animationCurve"), new objj_ivar("_timingFunction"), new objj_ivar("_frameRate"), new objj_ivar("_progress"), new objj_ivar("_delegate"), new objj_ivar("_timer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithDuration:animationCurve:"), function $CPAnimation__initWithDuration_animationCurve_(self, _cmd, aDuration, anAnimationCurve) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAnimation").super_class }, "init"); + if (self) + { + _progress = 0.0; + _duration = MAX(0.0, aDuration); + _frameRate = 60.0; + objj_msgSend(self, "setAnimationCurve:", anAnimationCurve); + } + return self; +} +},["id","float","CPAnimationCurve"]), new objj_method(sel_getUid("setAnimationCurve:"), function $CPAnimation__setAnimationCurve_(self, _cmd, anAnimationCurve) +{ with(self) +{ + switch (anAnimationCurve) + { + case CPAnimationEaseInOut: timingFunctionName = kCAMediaTimingFunctionEaseInEaseOut; + break; + case CPAnimationEaseIn: timingFunctionName = kCAMediaTimingFunctionEaseIn; + break; + case CPAnimationEaseOut: timingFunctionName = kCAMediaTimingFunctionEaseOut; + break; + case CPAnimationLinear: timingFunctionName = kCAMediaTimingFunctionLinear; + break; + default: objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid value provided for animation curve"); + break; + } + _animationCurve = anAnimationCurve; + _timingFunction = objj_msgSend(CAMediaTimingFunction, "functionWithName:", timingFunctionName); +} +},["void","CPAnimationCurve"]), new objj_method(sel_getUid("animationCurve"), function $CPAnimation__animationCurve(self, _cmd) +{ with(self) +{ + return _animationCurve; +} +},["CPAnimationCurve"]), new objj_method(sel_getUid("setDuration:"), function $CPAnimation__setDuration_(self, _cmd, aDuration) +{ with(self) +{ + if (aDuration < 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "aDuration can't be negative"); + _duration = aDuration; +} +},["void","CPTimeInterval"]), new objj_method(sel_getUid("duration"), function $CPAnimation__duration(self, _cmd) +{ with(self) +{ + return _duration; +} +},["CPTimeInterval"]), new objj_method(sel_getUid("setFrameRate:"), function $CPAnimation__setFrameRate_(self, _cmd, frameRate) +{ with(self) +{ + if (frameRate < 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "frameRate can't be negative"); + _frameRate = frameRate; +} +},["void","float"]), new objj_method(sel_getUid("frameRate"), function $CPAnimation__frameRate(self, _cmd) +{ with(self) +{ + return _frameRate; +} +},["float"]), new objj_method(sel_getUid("delegate"), function $CPAnimation__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("setDelegate:"), function $CPAnimation__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("startAnimation"), function $CPAnimation__startAnimation(self, _cmd) +{ with(self) +{ + if (_timer || _delegate && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("animationShouldStart:")) && !objj_msgSend(_delegate, "animationShouldStart:", self)) + return; + if (_progress === 1.0) + _progress = 0.0; + ACTUAL_FRAME_RATE = 0; + _lastTime = new Date(); + _timer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", 0.0, self, sel_getUid("animationTimerDidFire:"), nil, YES); +} +},["void"]), new objj_method(sel_getUid("animationTimerDidFire:"), function $CPAnimation__animationTimerDidFire_(self, _cmd, aTimer) +{ with(self) +{ + var currentTime = new Date(), + progress = MIN(1.0, objj_msgSend(self, "currentProgress") + (currentTime - _lastTime) / (_duration * 1000.0)); + _lastTime = currentTime; + ++ACTUAL_FRAME_RATE; + objj_msgSend(self, "setCurrentProgress:", progress); + if (progress === 1.0) + { + objj_msgSend(_timer, "invalidate"); + _timer = nil; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("animationDidEnd:"))) + objj_msgSend(_delegate, "animationDidEnd:", self); + } +} +},["void","CPTimer"]), new objj_method(sel_getUid("stopAnimation"), function $CPAnimation__stopAnimation(self, _cmd) +{ with(self) +{ + if (!_timer) + return; + objj_msgSend(_timer, "invalidate"); + _timer = nil; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("animationDidStop:"))) + objj_msgSend(_delegate, "animationDidStop:", self); +} +},["void"]), new objj_method(sel_getUid("isAnimating"), function $CPAnimation__isAnimating(self, _cmd) +{ with(self) +{ + return _timer; +} +},["BOOL"]), new objj_method(sel_getUid("setCurrentProgress:"), function $CPAnimation__setCurrentProgress_(self, _cmd, aProgress) +{ with(self) +{ + _progress = aProgress; +} +},["void","float"]), new objj_method(sel_getUid("currentProgress"), function $CPAnimation__currentProgress(self, _cmd) +{ with(self) +{ + return _progress; +} +},["float"]), new objj_method(sel_getUid("currentValue"), function $CPAnimation__currentValue(self, _cmd) +{ with(self) +{ + var t = objj_msgSend(self, "currentProgress"); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("animation:valueForProgress:"))) + return objj_msgSend(_delegate, "animation:valueForProgress:", self, t); + var c1 = [], + c2 = []; + objj_msgSend(_timingFunction, "getControlPointAtIndex:values:", 1, c1); + objj_msgSend(_timingFunction, "getControlPointAtIndex:values:", 2, c2); + return CubicBezierAtTime(t,c1[0],c1[1],c2[0],c2[1],_duration); +} +},["float"])]); +} +var CubicBezierAtTime = CubicBezierAtTime= function(t,p1x,p1y,p2x,p2y,duration) +{ + var ax=0,bx=0,cx=0,ay=0,by=0,cy=0; + sampleCurveX= function(t) {return ((ax*t+bx)*t+cx)*t;}; + sampleCurveY= function(t) {return ((ay*t+by)*t+cy)*t;}; + sampleCurveDerivativeX= function(t) {return (3.0*ax*t+2.0*bx)*t+cx;}; + solveEpsilon= function(duration) {return 1.0/(200.0*duration);}; + solve= function(x,epsilon) {return sampleCurveY(solveCurveX(x,epsilon));}; + solveCurveX= function(x,epsilon) {var t0,t1,t2,x2,d2,i; + fabs= function(n) {if(n>=0) {return n;}else {return 0-n;}}; + for(t2=x, i=0; i<8; i++) {x2=sampleCurveX(t2)-x; if(fabs(x2)<epsilon) {return t2;} d2=sampleCurveDerivativeX(t2); if(fabs(d2)<1e-6) {break;} t2=t2-x2/d2;} + t0=0.0; t1=1.0; t2=x; if(t2<t0) {return t0;} if(t2>t1) {return t1;} + while(t0<t1) {x2=sampleCurveX(t2); if(fabs(x2-x)<epsilon) {return t2;} if(x>x2) {t0=t2;}else {t1=t2;} t2=(t1-t0)*.5+t0;} + return t2; + }; + cx=3.0*p1x; bx=3.0*(p2x-p1x)-cx; ax=1.0-cx-bx; cy=3.0*p1y; by=3.0*(p2y-p1y)-cy; ay=1.0-cy-by; + return solve(t, solveEpsilon(duration)); +}; + +p;15;CPApplication.jt;41169;@STATIC;1.0;I;21;Foundation/CPBundle.ji;17;CPCompatibility.ji;9;CPEvent.ji;8;CPMenu.ji;13;CPResponder.ji;22;CPDocumentController.ji;14;CPThemeBlend.ji;14;CPCibLoading.ji;12;CPPlatform.jt;40976;objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("CPEvent.j", YES); +objj_executeFile("CPMenu.j", YES); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPDocumentController.j", YES); +objj_executeFile("CPThemeBlend.j", YES); +objj_executeFile("CPCibLoading.j", YES); +objj_executeFile("CPPlatform.j", YES); +var CPMainCibFile = "CPMainCibFile", + CPMainCibFileHumanFriendly = "Main cib file base name"; +CPApp = nil; +CPApplicationWillFinishLaunchingNotification = "CPApplicationWillFinishLaunchingNotification"; +CPApplicationDidFinishLaunchingNotification = "CPApplicationDidFinishLaunchingNotification"; +CPApplicationWillTerminateNotification = "CPApplicationWillTerminateNotification"; +CPApplicationWillBecomeActiveNotification = "CPApplicationWillBecomeActiveNotification"; +CPApplicationDidBecomeActiveNotification = "CPApplicationDidBecomeActiveNotification"; +CPApplicationWillResignActiveNotification = "CPApplicationWillResignActiveNotification"; +CPApplicationDidResignActiveNotification = "CPApplicationDidResignActiveNotification"; +CPTerminateNow = YES; +CPTerminateCancel = NO; +CPTerminateLater = -1; +CPRunStoppedResponse = -1000; +CPRunAbortedResponse = -1001; +CPRunContinuesResponse = -1002; +{var the_class = objj_allocateClassPair(CPResponder, "CPApplication"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_eventListeners"), new objj_ivar("_currentEvent"), new objj_ivar("_windows"), new objj_ivar("_keyWindow"), new objj_ivar("_mainWindow"), new objj_ivar("_previousKeyWindow"), new objj_ivar("_previousMainWindow"), new objj_ivar("_mainMenu"), new objj_ivar("_documentController"), new objj_ivar("_currentSession"), new objj_ivar("_delegate"), new objj_ivar("_finishedLaunching"), new objj_ivar("_isActive"), new objj_ivar("_namedArgs"), new objj_ivar("_args"), new objj_ivar("_fullArgsString"), new objj_ivar("_applicationIconImage"), new objj_ivar("_aboutPanel"), new objj_ivar("_themeBlend")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("themeBlend"), function $CPApplication__themeBlend(self, _cmd) +{ with(self) +{ +return _themeBlend; +} +},["id"]), +new objj_method(sel_getUid("setThemeBlend:"), function $CPApplication__setThemeBlend_(self, _cmd, newValue) +{ with(self) +{ +_themeBlend = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPApplication__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPApplication").super_class }, "init"); + CPApp = self; + if (self) + { + _eventListeners = []; + _windows = []; + objj_msgSend(_windows, "addObject:", nil); + } + return self; +} +},["id"]), new objj_method(sel_getUid("setDelegate:"), function $CPApplication__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate == aDelegate) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"), + delegateNotifications = + [ + CPApplicationWillFinishLaunchingNotification, sel_getUid("applicationWillFinishLaunching:"), + CPApplicationDidFinishLaunchingNotification, sel_getUid("applicationDidFinishLaunching:"), + CPApplicationWillBecomeActiveNotification, sel_getUid("applicationWillBecomeActive:"), + CPApplicationDidBecomeActiveNotification, sel_getUid("applicationDidBecomeActive:"), + CPApplicationWillResignActiveNotification, sel_getUid("applicationWillResignActive:"), + CPApplicationDidResignActiveNotification, sel_getUid("applicationDidResignActive:"), + CPApplicationWillTerminateNotification, sel_getUid("applicationWillTerminate:") + ], + count = objj_msgSend(delegateNotifications, "count"); + if (_delegate) + { + var index = 0; + for (; index < count; index += 2) + { + var notificationName = delegateNotifications[index], + selector = delegateNotifications[index + 1]; + if (objj_msgSend(_delegate, "respondsToSelector:", selector)) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, notificationName, self); + } + } + _delegate = aDelegate; + var index = 0; + for (; index < count; index += 2) + { + var notificationName = delegateNotifications[index], + selector = delegateNotifications[index + 1]; + if (objj_msgSend(_delegate, "respondsToSelector:", selector)) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, selector, notificationName, self); + } +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPApplication__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("finishLaunching"), function $CPApplication__finishLaunching(self, _cmd) +{ with(self) +{ + window.status = " "; + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); + var bundle = objj_msgSend(CPBundle, "mainBundle"), + types = objj_msgSend(bundle, "objectForInfoDictionaryKey:", "CPBundleDocumentTypes"); + if (objj_msgSend(types, "count") > 0) + _documentController = objj_msgSend(CPDocumentController, "sharedDocumentController"); + var delegateClassName = objj_msgSend(bundle, "objectForInfoDictionaryKey:", "CPApplicationDelegateClass"); + if (delegateClassName) + { + var delegateClass = objj_getClass(delegateClassName); + if (delegateClass) + if (objj_msgSend(_documentController, "class") == delegateClass) + objj_msgSend(self, "setDelegate:", _documentController); + else + objj_msgSend(self, "setDelegate:", objj_msgSend(objj_msgSend(delegateClass, "alloc"), "init")); + } + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPApplicationWillFinishLaunchingNotification, self); + var needsUntitled = !!_documentController, + URLStrings = window.cpOpeningURLStrings && window.cpOpeningURLStrings(), + index = 0, + count = objj_msgSend(URLStrings, "count"); + for (; index < count; ++index) + needsUntitled = !objj_msgSend(self, "_openURL:", objj_msgSend(CPURL, "URLWithString:", URLStrings[index])) || needsUntitled; + if (needsUntitled && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("applicationShouldOpenUntitledFile:"))) + needsUntitled = objj_msgSend(_delegate, "applicationShouldOpenUntitledFile:", self); + if (needsUntitled) + objj_msgSend(_documentController, "newDocument:", self); + objj_msgSend(_documentController, "_updateRecentDocumentsMenu"); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPApplicationDidFinishLaunchingNotification, self); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + _finishedLaunching = YES; +} +},["void"]), new objj_method(sel_getUid("terminate:"), function $CPApplication__terminate_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPApplicationWillTerminateNotification, self); + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + objj_msgSend(objj_msgSend(CPDocumentController, "sharedDocumentController"), "closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:", self, sel_getUid("_documentController:didCloseAll:context:"), nil); + } + else + { + objj_msgSend(objj_msgSend(objj_msgSend(self, "keyWindow"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + } +} +},["void","id"]), new objj_method(sel_getUid("setApplicationIconImage:"), function $CPApplication__setApplicationIconImage_(self, _cmd, anImage) +{ with(self) +{ + _applicationIconImage = anImage; +} +},["void","CPImage"]), new objj_method(sel_getUid("applicationIconImage"), function $CPApplication__applicationIconImage(self, _cmd) +{ with(self) +{ + if (_applicationIconImage) + return _applicationIconImage; + var imagePath = objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "objectForInfoDictionaryKey:", "CPApplicationIcon"); + if (imagePath) + _applicationIconImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:", imagePath); + return _applicationIconImage; +} +},["CPImage"]), new objj_method(sel_getUid("orderFrontStandardAboutPanel:"), function $CPApplication__orderFrontStandardAboutPanel_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "orderFrontStandardAboutPanelWithOptions:", nil); +} +},["void","id"]), new objj_method(sel_getUid("orderFrontStandardAboutPanelWithOptions:"), function $CPApplication__orderFrontStandardAboutPanelWithOptions_(self, _cmd, options) +{ with(self) +{ + if (!_aboutPanel) + { + var mainInfo = objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "infoDictionary"), + applicationTitle = objj_msgSend(options, "objectForKey:", "ApplicationName") || objj_msgSend(mainInfo, "objectForKey:", "CPBundleName"), + applicationIcon = objj_msgSend(options, "objectForKey:", "ApplicationIcon") || objj_msgSend(self, "applicationIconImage"), + version = objj_msgSend(options, "objectForKey:", "Version") || objj_msgSend(mainInfo, "objectForKey:", "CPBundleVersion"), + applicationVersion = objj_msgSend(options, "objectForKey:", "ApplicationVersion") || objj_msgSend(mainInfo, "objectForKey:", "CPBundleShortVersionString"), + copyright = objj_msgSend(options, "objectForKey:", "Copyright") || objj_msgSend(mainInfo, "objectForKey:", "CPHumanReadableCopyright"); + var aboutPanelPath = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindowController, "class")), "pathForResource:", "AboutPanel.cib"), + aboutPanelController = objj_msgSend(CPWindowController, "alloc"), + aboutPanelController = objj_msgSend(aboutPanelController, "initWithWindowCibPath:owner:", aboutPanelPath, aboutPanelController), + aboutPanel = objj_msgSend(aboutPanelController, "window"), + contentView = objj_msgSend(aboutPanel, "contentView"), + imageView = objj_msgSend(contentView, "viewWithTag:", 1), + applicationLabel = objj_msgSend(contentView, "viewWithTag:", 2), + versionLabel = objj_msgSend(contentView, "viewWithTag:", 3), + copyrightLabel = objj_msgSend(contentView, "viewWithTag:", 4), + standardPath = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(self, "class")), "pathForResource:", "standardApplicationIcon.png"); + objj_msgSend(applicationLabel, "setFont:", objj_msgSend(CPFont, "boldSystemFontOfSize:", 14.0)); + objj_msgSend(applicationLabel, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(versionLabel, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(copyrightLabel, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(imageView, "setImage:", applicationIcon || objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", standardPath, CGSizeMake(256, 256))); + objj_msgSend(applicationLabel, "setStringValue:", applicationTitle || ""); + if (applicationVersion && version) + objj_msgSend(versionLabel, "setStringValue:", "Version " + applicationVersion + " (" + version + ")"); + else if (applicationVersion || version) + objj_msgSend(versionLabel, "setStringValue:", "Version " + (applicationVersion || version)); + else + objj_msgSend(versionLabel, "setStringValue:", ""); + objj_msgSend(copyrightLabel, "setStringValue:", copyright || ""); + objj_msgSend(aboutPanel, "center"); + _aboutPanel = aboutPanel; + } + objj_msgSend(_aboutPanel, "orderFront:", self); +} +},["void","CPDictionary"]), new objj_method(sel_getUid("_documentController:didCloseAll:context:"), function $CPApplication___documentController_didCloseAll_context_(self, _cmd, docController, didCloseAll, info) +{ with(self) +{ + if (didCloseAll) + { + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("applicationShouldTerminate:"))) + objj_msgSend(self, "replyToApplicationShouldTerminate:", objj_msgSend(_delegate, "applicationShouldTerminate:", self)); + else + objj_msgSend(self, "replyToApplicationShouldTerminate:", YES); + } +} +},["void","NSDocumentController*","BOOL","Object"]), new objj_method(sel_getUid("replyToApplicationShouldTerminate:"), function $CPApplication__replyToApplicationShouldTerminate_(self, _cmd, terminate) +{ with(self) +{ + if (terminate == CPTerminateNow) + { + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPApplicationWillTerminateNotification, self); + objj_msgSend(CPPlatform, "terminateApplication"); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("activateIgnoringOtherApps:"), function $CPApplication__activateIgnoringOtherApps_(self, _cmd, shouldIgnoreOtherApps) +{ with(self) +{ + objj_msgSend(self, "_willBecomeActive"); + objj_msgSend(CPPlatform, "activateIgnoringOtherApps:", shouldIgnoreOtherApps); + _isActive = YES; + objj_msgSend(self, "_willResignActive"); +} +},["void","BOOL"]), new objj_method(sel_getUid("deactivate"), function $CPApplication__deactivate(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_willResignActive"); + objj_msgSend(CPPlatform, "deactivate"); + _isActive = NO; + objj_msgSend(self, "_didResignActive"); +} +},["void"]), new objj_method(sel_getUid("isActive"), function $CPApplication__isActive(self, _cmd) +{ with(self) +{ + return _isActive; +} +},["void"]), new objj_method(sel_getUid("hideOtherApplications:"), function $CPApplication__hideOtherApplications_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(CPPlatform, "hideOtherApplications:", self); +} +},["void","id"]), new objj_method(sel_getUid("run"), function $CPApplication__run(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "finishLaunching"); +} +},["void"]), new objj_method(sel_getUid("runModalForWindow:"), function $CPApplication__runModalForWindow_(self, _cmd, aWindow) +{ with(self) +{ + objj_msgSend(self, "runModalSession:", objj_msgSend(self, "beginModalSessionForWindow:", aWindow)); +} +},["void","CPWindow"]), new objj_method(sel_getUid("stopModalWithCode:"), function $CPApplication__stopModalWithCode_(self, _cmd, aCode) +{ with(self) +{ + if (!_currentSession) + { + return; + } + _currentSession._state = aCode; + _currentSession = _currentSession._previous; + objj_msgSend(self, "_removeRunModalLoop"); +} +},["void","int"]), new objj_method(sel_getUid("_removeRunModalLoop"), function $CPApplication___removeRunModalLoop(self, _cmd) +{ with(self) +{ + var count = _eventListeners.length; + while (count--) + if (_eventListeners[count]._callback === _CPRunModalLoop) + { + _eventListeners.splice(count, 1); + return; + } +} +},["void"]), new objj_method(sel_getUid("stopModal"), function $CPApplication__stopModal(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "stopModalWithCode:", CPRunStoppedResponse) +} +},["void"]), new objj_method(sel_getUid("abortModal"), function $CPApplication__abortModal(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "stopModalWithCode:", CPRunAbortedResponse); +} +},["void"]), new objj_method(sel_getUid("beginModalSessionForWindow:"), function $CPApplication__beginModalSessionForWindow_(self, _cmd, aWindow) +{ with(self) +{ + return _CPModalSessionMake(aWindow, 0); +} +},["CPModalSession","CPWindow"]), new objj_method(sel_getUid("runModalSession:"), function $CPApplication__runModalSession_(self, _cmd, aModalSession) +{ with(self) +{ + aModalSession._previous = _currentSession; + _currentSession = aModalSession; + var theWindow = aModalSession._window; + objj_msgSend(theWindow, "center"); + objj_msgSend(theWindow, "makeKeyAndOrderFront:", self); + objj_msgSend(CPApp, "setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:", _CPRunModalLoop, CPAnyEventMask, nil, 0, NO); +} +},["void","CPModalSession"]), new objj_method(sel_getUid("modalWindow"), function $CPApplication__modalWindow(self, _cmd) +{ with(self) +{ + if (!_currentSession) + return nil; + return _currentSession._window; +} +},["CPWindow"]), new objj_method(sel_getUid("_handleKeyEquivalent:"), function $CPApplication___handleKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "keyWindow"), "performKeyEquivalent:", anEvent) || + objj_msgSend(_mainMenu, "performKeyEquivalent:", anEvent); +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("sendEvent:"), function $CPApplication__sendEvent_(self, _cmd, anEvent) +{ with(self) +{ + _currentEvent = anEvent; + var willPropagate = objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_willPropagateCurrentDOMEvent"); + objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", NO); + if (objj_msgSend(anEvent, "_couldBeKeyEquivalent") && objj_msgSend(self, "_handleKeyEquivalent:", anEvent)) + { + var characters = objj_msgSend(anEvent, "characters"), + modifierFlags = objj_msgSend(anEvent, "modifierFlags"); + if ((characters == "c" || characters == "x" || characters == "v") && (modifierFlags & CPPlatformActionKeyMask)) + objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + return; + } + objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", willPropagate); + if (_eventListeners.length) + { + if (_eventListeners[_eventListeners.length - 1]._mask & (1 << objj_msgSend(anEvent, "type"))) + _eventListeners.pop()._callback(anEvent); + return; + } + objj_msgSend(objj_msgSend(anEvent, "window"), "sendEvent:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("doCommandBySelector:"), function $CPApplication__doCommandBySelector_(self, _cmd, aSelector) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", aSelector)) + objj_msgSend(_delegate, "performSelector:", aSelector); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPApplication").super_class }, "doCommandBySelector:", aSelector); +} +},["void","SEL"]), new objj_method(sel_getUid("keyWindow"), function $CPApplication__keyWindow(self, _cmd) +{ with(self) +{ + return _keyWindow; +} +},["CPWindow"]), new objj_method(sel_getUid("mainWindow"), function $CPApplication__mainWindow(self, _cmd) +{ with(self) +{ + return _mainWindow; +} +},["CPWindow"]), new objj_method(sel_getUid("windowWithWindowNumber:"), function $CPApplication__windowWithWindowNumber_(self, _cmd, aWindowNumber) +{ with(self) +{ + return _windows[aWindowNumber]; +} +},["CPWindow","int"]), new objj_method(sel_getUid("windows"), function $CPApplication__windows(self, _cmd) +{ with(self) +{ + return _windows; +} +},["CPArray"]), new objj_method(sel_getUid("orderedWindows"), function $CPApplication__orderedWindows(self, _cmd) +{ with(self) +{ + return CPWindowObjectList(); +} +},["CPArray"]), new objj_method(sel_getUid("hide:"), function $CPApplication__hide_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(CPPlatform, "hide:", self); +} +},["void","id"]), new objj_method(sel_getUid("mainMenu"), function $CPApplication__mainMenu(self, _cmd) +{ with(self) +{ + return _mainMenu; +} +},["CPMenu"]), new objj_method(sel_getUid("setMainMenu:"), function $CPApplication__setMainMenu_(self, _cmd, aMenu) +{ with(self) +{ + if (objj_msgSend(aMenu, "_menuName") === "CPMainMenu") + { + if (_mainMenu === aMenu) + return; + _mainMenu = aMenu; + if (objj_msgSend(CPPlatform, "supportsNativeMainMenu")) + window.cpSetMainMenu(_mainMenu); + } + else + objj_msgSend(aMenu, "_setMenuName:", "CPMainMenu"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("orderFrontColorPanel:"), function $CPApplication__orderFrontColorPanel_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPColorPanel, "sharedColorPanel"), "orderFront:", self); +} +},["void","id"]), new objj_method(sel_getUid("tryToPerform:with:"), function $CPApplication__tryToPerform_with_(self, _cmd, anAction, anObject) +{ with(self) +{ + if (!anAction) + return NO; + if (objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPApplication").super_class }, "tryToPerform:with:", anAction, anObject)) + return YES; + if(objj_msgSend(_delegate, "respondsToSelector:", anAction)) + { + objj_msgSend(_delegate, "performSelector:withObject:", anAction, anObject); + return YES; + } + return NO; +} +},["BOOL","SEL","id"]), new objj_method(sel_getUid("sendAction:to:from:"), function $CPApplication__sendAction_to_from_(self, _cmd, anAction, aTarget, aSender) +{ with(self) +{ + var target = objj_msgSend(self, "targetForAction:to:from:", anAction, aTarget, aSender); + if (!target) + return NO; + objj_msgSend(target, "performSelector:withObject:", anAction, aSender); + return YES; +} +},["BOOL","SEL","id","id"]), new objj_method(sel_getUid("targetForAction:to:from:"), function $CPApplication__targetForAction_to_from_(self, _cmd, anAction, aTarget, aSender) +{ with(self) +{ + if (!anAction) + return nil; + if (aTarget) + return aTarget; + return objj_msgSend(self, "targetForAction:", anAction); +} +},["id","SEL","id","id"]), new objj_method(sel_getUid("_targetForWindow:action:"), function $CPApplication___targetForWindow_action_(self, _cmd, aWindow, anAction) +{ with(self) +{ + var responder = objj_msgSend(aWindow, "firstResponder"), + checkWindow = YES; + while (responder) + { + if (objj_msgSend(responder, "respondsToSelector:", anAction)) + return responder; + if (responder == aWindow) + checkWindow = NO; + responder = objj_msgSend(responder, "nextResponder"); + } + if (checkWindow && objj_msgSend(aWindow, "respondsToSelector:", anAction)) + return aWindow; + var delegate = objj_msgSend(aWindow, "delegate"); + if (objj_msgSend(delegate, "respondsToSelector:", anAction)) + return delegate; + var windowController = objj_msgSend(aWindow, "windowController"); + if (objj_msgSend(windowController, "respondsToSelector:", anAction)) + return windowController; + var theDocument = objj_msgSend(windowController, "document"); + if (theDocument !== delegate && objj_msgSend(theDocument, "respondsToSelector:", anAction)) + return theDocument; + return nil; +} +},["id","CPWindow","SEL"]), new objj_method(sel_getUid("targetForAction:"), function $CPApplication__targetForAction_(self, _cmd, anAction) +{ with(self) +{ + if (!anAction) + return nil; + var target = objj_msgSend(self, "_targetForWindow:action:", objj_msgSend(self, "keyWindow"), anAction); + if (target) + return target; + target = objj_msgSend(self, "_targetForWindow:action:", objj_msgSend(self, "mainWindow"), anAction); + if (target) + return target; + if (objj_msgSend(self, "respondsToSelector:", anAction)) + return self; + if (objj_msgSend(_delegate, "respondsToSelector:", anAction)) + return _delegate; + if (objj_msgSend(_documentController, "respondsToSelector:", anAction)) + return _documentController; + return nil; +} +},["id","SEL"]), new objj_method(sel_getUid("setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:"), function $CPApplication__setCallback_forNextEventMatchingMask_untilDate_inMode_dequeue_(self, _cmd, aCallback, aMask, anExpiration, aMode, shouldDequeue) +{ with(self) +{ + _eventListeners.push(_CPEventListenerMake(aMask, aCallback)); +} +},["void","Function","unsignedint","CPDate","CPString","BOOL"]), new objj_method(sel_getUid("setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:"), function $CPApplication__setTarget_selector_forNextEventMatchingMask_untilDate_inMode_dequeue_(self, _cmd, aTarget, aSelector, aMask, anExpiration, aMode, shouldDequeue) +{ with(self) +{ + _eventListeners.push(_CPEventListenerMake(aMask, function (anEvent) { objj_msgSend(aTarget, aSelector, anEvent); })); +} +},["CPEvent","id","SEL","unsignedint","CPDate","CPString","BOOL"]), new objj_method(sel_getUid("currentEvent"), function $CPApplication__currentEvent(self, _cmd) +{ with(self) +{ + return _currentEvent; +} +},["CPEvent"]), new objj_method(sel_getUid("beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:"), function $CPApplication__beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(self, _cmd, aSheet, aWindow, aModalDelegate, aDidEndSelector, aContextInfo) +{ with(self) +{ + var styleMask = objj_msgSend(aSheet, "styleMask"); + if (!(styleMask & CPDocModalWindowMask)) + { + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Currently only CPDocModalWindowMask style mask is supported for attached sheets"); + return; + } + objj_msgSend(aWindow, "orderFront:", self); + objj_msgSend(aSheet, "setPlatformWindow:", objj_msgSend(aWindow, "platformWindow")); + objj_msgSend(aWindow, "_attachSheet:modalDelegate:didEndSelector:contextInfo:", aSheet, aModalDelegate, aDidEndSelector, aContextInfo); +} +},["void","CPWindow","CPWindow","id","SEL","id"]), new objj_method(sel_getUid("endSheet:returnCode:"), function $CPApplication__endSheet_returnCode_(self, _cmd, sheet, returnCode) +{ with(self) +{ + var count = objj_msgSend(_windows, "count"); + while (--count >= 0) + { + var aWindow = objj_msgSend(_windows, "objectAtIndex:", count); + var context = aWindow._sheetContext; + if (context != nil && context["sheet"] === sheet) + { + context["returnCode"] = returnCode; + objj_msgSend(aWindow, "_detachSheetWindow"); + return; + } + } +} +},["void","CPWindow","int"]), new objj_method(sel_getUid("endSheet:"), function $CPApplication__endSheet_(self, _cmd, sheet) +{ with(self) +{ + objj_msgSend(self, "endSheet:returnCode:", sheet, 0); +} +},["void","CPWindow"]), new objj_method(sel_getUid("arguments"), function $CPApplication__arguments(self, _cmd) +{ with(self) +{ + if(_fullArgsString !== window.location.hash) + objj_msgSend(self, "_reloadArguments"); + return _args; +} +},["CPArray"]), new objj_method(sel_getUid("setArguments:"), function $CPApplication__setArguments_(self, _cmd, args) +{ with(self) +{ + if(!args || args.length == 0) + { + _args = []; + window.location.hash = "#"; + return; + } + if(objj_msgSend(args, "class") != CPArray) + args = objj_msgSend(CPArray, "arrayWithObject:", args); + _args = args; + var toEncode = objj_msgSend(_args, "copy"); + for(var i=0, count = toEncode.length; i<count; i++) + toEncode[i] = encodeURIComponent(toEncode[i]); + var hash = objj_msgSend(toEncode, "componentsJoinedByString:", "/"); + window.location.hash = "#" + hash; +} +},["void","CPArray"]), new objj_method(sel_getUid("_reloadArguments"), function $CPApplication___reloadArguments(self, _cmd) +{ with(self) +{ + _fullArgsString = window.location.hash; + if (_fullArgsString.length) + { + var args = _fullArgsString.substring(1).split("/"); + for (var i = 0, count = args.length; i < count; i++) + args[i] = decodeURIComponent(args[i]); + _args = args; + } + else + _args = []; +} +},["void"]), new objj_method(sel_getUid("namedArguments"), function $CPApplication__namedArguments(self, _cmd) +{ with(self) +{ + return _namedArgs; +} +},["CPDictionary"]), new objj_method(sel_getUid("_openURL:"), function $CPApplication___openURL_(self, _cmd, aURL) +{ with(self) +{ + if (_delegate && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("application:openFile:"))) + { + CPLog.warn("application:openFile: is deprecated, use application:openURL: instead."); + return objj_msgSend(_delegate, "application:openFile:", self, objj_msgSend(aURL, "absoluteString")); + } + if (_delegate && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("application:openURL:"))) + return objj_msgSend(_delegate, "application:openURL:", self, aURL); + return !!objj_msgSend(_documentController, "openDocumentWithContentsOfURL:display:error:", aURL, YES, NULL); +} +},["BOOL","CPURL"]), new objj_method(sel_getUid("_willBecomeActive"), function $CPApplication___willBecomeActive(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPApplicationWillBecomeActiveNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_didBecomeActive"), function $CPApplication___didBecomeActive(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "keyWindow") && _previousKeyWindow && + objj_msgSend(objj_msgSend(self, "windows"), "indexOfObjectIdenticalTo:", _previousKeyWindow) !== CPNotFound) + objj_msgSend(_previousKeyWindow, "makeKeyWindow"); + if (!objj_msgSend(self, "mainWindow") && _previousMainWindow && + objj_msgSend(objj_msgSend(self, "windows"), "indexOfObjectIdenticalTo:", _previousMainWindow) !== CPNotFound) + objj_msgSend(_previousMainWindow, "makeMainWindow"); + if (objj_msgSend(self, "keyWindow")) + objj_msgSend(objj_msgSend(self, "keyWindow"), "orderFront:", self); + else if (objj_msgSend(self, "mainWindow")) + objj_msgSend(objj_msgSend(self, "mainWindow"), "makeKeyAndOrderFront:", self); + else + objj_msgSend(objj_msgSend(self, "mainMenu")._menuWindow, "makeKeyWindow"); + _previousKeyWindow = nil; + _previousMainWindow = nil; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPApplicationDidBecomeActiveNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_willResignActive"), function $CPApplication___willResignActive(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPApplicationWillResignActiveNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_didResignActive"), function $CPApplication___didResignActive(self, _cmd) +{ with(self) +{ + if (self._activeMenu) + objj_msgSend(self._activeMenu, "cancelTracking"); + if (objj_msgSend(self, "keyWindow")) + { + _previousKeyWindow = objj_msgSend(self, "keyWindow"); + objj_msgSend(_previousKeyWindow, "resignKeyWindow"); + } + if (objj_msgSend(self, "mainWindow")) + { + _previousMainWindow = objj_msgSend(self, "mainWindow"); + objj_msgSend(_previousMainWindow, "resignMainWindow"); + } + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPApplicationDidResignActiveNotification, self, nil); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sharedApplication"), function $CPApplication__sharedApplication(self, _cmd) +{ with(self) +{ + if (!CPApp) + CPApp = objj_msgSend(objj_msgSend(CPApplication, "alloc"), "init"); + return CPApp; +} +},["CPApplication"]), new objj_method(sel_getUid("defaultThemeName"), function $CPApplication__defaultThemeName(self, _cmd) +{ with(self) +{ + return (objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "objectForInfoDictionaryKey:", "CPDefaultTheme") || "Aristo"); +} +},["CPString"])]); +} +var _CPModalSessionMake = function(aWindow, aStopCode) +{ + return { _window:aWindow, _state:CPRunContinuesResponse , _previous:nil }; +} +var _CPEventListenerMake = function(anEventMask, aCallback) +{ + return { _mask:anEventMask, _callback:aCallback }; +} +_CPRunModalLoop = function(anEvent) +{ + objj_msgSend(CPApp, "setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:", _CPRunModalLoop, CPAnyEventMask, nil, 0, NO); + var theWindow = objj_msgSend(anEvent, "window"), + modalSession = CPApp._currentSession; + if (theWindow == modalSession._window || objj_msgSend(theWindow, "worksWhenModal")) + objj_msgSend(theWindow, "sendEvent:", anEvent); +} +CPApplicationMain= function(args, namedArgs) +{ + if (window.parent !== window && typeof window.parent._childAppIsStarting === "function") + window.parent._childAppIsStarting(window); + var mainBundle = objj_msgSend(CPBundle, "mainBundle"), + principalClass = objj_msgSend(mainBundle, "principalClass"); + if (!principalClass) + principalClass = objj_msgSend(CPApplication, "class"); + objj_msgSend(principalClass, "sharedApplication"); + if (objj_msgSend(args, "containsObject:", "debug")) + CPLogRegister(CPLogPopup); + CPApp._args = args; + CPApp._namedArgs = namedArgs; + objj_msgSend(_CPAppBootstrapper, "performActions"); +} +var _CPAppBootstrapperActions = nil; +{var the_class = objj_allocateClassPair(CPObject, "_CPAppBootstrapper"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("actions"), function $_CPAppBootstrapper__actions(self, _cmd) +{ with(self) +{ + return [sel_getUid("bootstrapPlatform"), sel_getUid("loadDefaultTheme"), sel_getUid("loadMainCibFile")]; +} +},["CPArray"]), new objj_method(sel_getUid("performActions"), function $_CPAppBootstrapper__performActions(self, _cmd) +{ with(self) +{ + if (!_CPAppBootstrapperActions) + _CPAppBootstrapperActions = objj_msgSend(self, "actions"); + while (_CPAppBootstrapperActions.length) + { + var action = _CPAppBootstrapperActions.shift(); + if (objj_msgSend(self, action)) + return; + } + objj_msgSend(CPApp, "run"); +} +},["void"]), new objj_method(sel_getUid("bootstrapPlatform"), function $_CPAppBootstrapper__bootstrapPlatform(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPPlatform, "bootstrap"); +} +},["BOOL"]), new objj_method(sel_getUid("loadDefaultTheme"), function $_CPAppBootstrapper__loadDefaultTheme(self, _cmd) +{ with(self) +{ + var defaultThemeName = objj_msgSend(CPApplication, "defaultThemeName"), + themeURL = nil; + if (defaultThemeName === "Aristo") + themeURL = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPApplication, "class")), "pathForResource:", defaultThemeName + ".blend"); + else + themeURL = objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", defaultThemeName + ".blend"); + var blend = objj_msgSend(objj_msgSend(CPThemeBlend, "alloc"), "initWithContentsOfURL:", themeURL); + objj_msgSend(blend, "loadWithDelegate:", self); + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("blendDidFinishLoading:"), function $_CPAppBootstrapper__blendDidFinishLoading_(self, _cmd, aThemeBlend) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPApplication, "sharedApplication"), "setThemeBlend:", aThemeBlend); + objj_msgSend(CPTheme, "setDefaultTheme:", objj_msgSend(CPTheme, "themeNamed:", objj_msgSend(CPApplication, "defaultThemeName"))); + objj_msgSend(self, "performActions"); +} +},["void","CPThemeBlend"]), new objj_method(sel_getUid("loadMainCibFile"), function $_CPAppBootstrapper__loadMainCibFile(self, _cmd) +{ with(self) +{ + var mainBundle = objj_msgSend(CPBundle, "mainBundle"), + mainCibFile = objj_msgSend(mainBundle, "objectForInfoDictionaryKey:", CPMainCibFile) || objj_msgSend(mainBundle, "objectForInfoDictionaryKey:", CPMainCibFileHumanFriendly); + if (mainCibFile) + { + objj_msgSend(mainBundle, "loadCibFile:externalNameTable:loadDelegate:", mainCibFile, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", CPApp, CPCibOwner), self); + return YES; + } + else + objj_msgSend(self, "loadCiblessBrowserMainMenu"); + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("loadCiblessBrowserMainMenu"), function $_CPAppBootstrapper__loadCiblessBrowserMainMenu(self, _cmd) +{ with(self) +{ + var mainMenu = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "initWithTitle:", "MainMenu"); + objj_msgSend(mainMenu, "setAutoenablesItems:", NO); + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPApplication, "class")), + newMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "New", sel_getUid("newDocument:"), "n"); + objj_msgSend(newMenuItem, "setImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/New.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(newMenuItem, "setAlternateImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/NewHighlighted.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(mainMenu, "addItem:", newMenuItem); + var openMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Open", sel_getUid("openDocument:"), "o"); + objj_msgSend(openMenuItem, "setImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/Open.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(openMenuItem, "setAlternateImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/OpenHighlighted.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(mainMenu, "addItem:", openMenuItem); + var saveMenu = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "initWithTitle:", "Save"), + saveMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Save", sel_getUid("saveDocument:"), nil); + objj_msgSend(saveMenuItem, "setImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/Save.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(saveMenuItem, "setAlternateImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/SaveHighlighted.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(saveMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Save", sel_getUid("saveDocument:"), "s")); + objj_msgSend(saveMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Save As", sel_getUid("saveDocumentAs:"), nil)); + objj_msgSend(saveMenuItem, "setSubmenu:", saveMenu); + objj_msgSend(mainMenu, "addItem:", saveMenuItem); + var editMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Edit", nil, nil), + editMenu = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "initWithTitle:", "Edit"), + undoMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Undo", sel_getUid("undo:"), CPUndoKeyEquivalent), + redoMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Redo", sel_getUid("redo:"), CPRedoKeyEquivalent); + objj_msgSend(undoMenuItem, "setKeyEquivalentModifierMask:", CPUndoKeyEquivalentModifierMask); + objj_msgSend(redoMenuItem, "setKeyEquivalentModifierMask:", CPRedoKeyEquivalentModifierMask); + objj_msgSend(editMenu, "addItem:", undoMenuItem); + objj_msgSend(editMenu, "addItem:", redoMenuItem); + objj_msgSend(editMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Cut", sel_getUid("cut:"), "x")), + objj_msgSend(editMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Copy", sel_getUid("copy:"), "c")), + objj_msgSend(editMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Paste", sel_getUid("paste:"), "v")); + objj_msgSend(editMenuItem, "setSubmenu:", editMenu); + objj_msgSend(editMenuItem, "setHidden:", YES); + objj_msgSend(mainMenu, "addItem:", editMenuItem); + objj_msgSend(mainMenu, "addItem:", objj_msgSend(CPMenuItem, "separatorItem")); + objj_msgSend(CPApp, "setMainMenu:", mainMenu); +} +},["void"]), new objj_method(sel_getUid("cibDidFinishLoading:"), function $_CPAppBootstrapper__cibDidFinishLoading_(self, _cmd, aCib) +{ with(self) +{ + objj_msgSend(self, "performActions"); +} +},["void","CPCib"]), new objj_method(sel_getUid("cibDidFailToLoad:"), function $_CPAppBootstrapper__cibDidFailToLoad_(self, _cmd, aCib) +{ with(self) +{ + throw new Error("Could not load main cib file (Did you forget to nib2cib it?)."); +} +},["void","CPCib"]), new objj_method(sel_getUid("reset"), function $_CPAppBootstrapper__reset(self, _cmd) +{ with(self) +{ + _CPAppBootstrapperActions = nil; +} +},["void"])]); +} + +p;19;CPArrayController.jt;24042;@STATIC;1.0;I;27;AppKit/CPObjectController.jI;26;AppKit/CPKeyValueBinding.jt;23959;objj_executeFile("AppKit/CPObjectController.j", NO); +objj_executeFile("AppKit/CPKeyValueBinding.j", NO); +{var the_class = objj_allocateClassPair(CPObjectController, "CPArrayController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_avoidsEmptySelection"), new objj_ivar("_clearsFilterPredicateOnInsertion"), new objj_ivar("_filterRestrictsInsertion"), new objj_ivar("_preservesSelection"), new objj_ivar("_selectsInsertedObjects"), new objj_ivar("_alwaysUsesMultipleValuesMarker"), new objj_ivar("_selectionIndexes"), new objj_ivar("_sortDescriptors"), new objj_ivar("_filterPredicate"), new objj_ivar("_arrangedObjects")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPArrayController__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPArrayController").super_class }, "init"); + if (self) + { + _selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("prepareContent"), function $CPArrayController__prepareContent(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_setContentArray:", [objj_msgSend(self, "newObject")]); +} +},["void"]), new objj_method(sel_getUid("preservesSelection"), function $CPArrayController__preservesSelection(self, _cmd) +{ with(self) +{ + return _preservesSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setPreservesSelection:"), function $CPArrayController__setPreservesSelection_(self, _cmd, value) +{ with(self) +{ + _preservesSelection = value; +} +},["void","BOOL"]), new objj_method(sel_getUid("selectsInsertedObjects"), function $CPArrayController__selectsInsertedObjects(self, _cmd) +{ with(self) +{ + return _selectsInsertedObjects; +} +},["BOOL"]), new objj_method(sel_getUid("setSelectsInsertedObjects:"), function $CPArrayController__setSelectsInsertedObjects_(self, _cmd, value) +{ with(self) +{ + _selectsInsertedObjects = value; +} +},["void","BOOL"]), new objj_method(sel_getUid("avoidsEmptySelection"), function $CPArrayController__avoidsEmptySelection(self, _cmd) +{ with(self) +{ + return _avoidsEmptySelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAvoidsEmptySelection:"), function $CPArrayController__setAvoidsEmptySelection_(self, _cmd, value) +{ with(self) +{ + _avoidsEmptySelection = value; +} +},["void","BOOL"]), new objj_method(sel_getUid("setContent:"), function $CPArrayController__setContent_(self, _cmd, value) +{ with(self) +{ + if(!objj_msgSend(value, "isKindOfClass:", objj_msgSend(CPArray, "class"))) + value = [value]; + var oldSelectedObjects = nil, + oldSelectionIndexes = nil; + if (objj_msgSend(self, "preservesSelection")) + oldSelectedObjects = objj_msgSend(self, "selectedObjects"); + else + oldSelectionIndexes = objj_msgSend(self, "selectionIndexes"); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "willChangeValueForKey:", "filterPredicate"); + _contentObject = value; + if(_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "__setFilterPredicate:", nil); + else + objj_msgSend(self, "_rearrangeObjects"); + if (objj_msgSend(self, "preservesSelection")) + objj_msgSend(self, "__setSelectedObjects:", oldSelectedObjects); + else + objj_msgSend(self, "__setSelectionIndexes:", oldSelectionIndexes); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "didChangeValueForKey:", "filterPredicate"); +} +},["void","id"]), new objj_method(sel_getUid("_setContentArray:"), function $CPArrayController___setContentArray_(self, _cmd, anArray) +{ with(self) +{ + objj_msgSend(self, "setContent:", anArray); +} +},["void","id"]), new objj_method(sel_getUid("_setContentSet:"), function $CPArrayController___setContentSet_(self, _cmd, aSet) +{ with(self) +{ + objj_msgSend(self, "setContent:", aSet); +} +},["void","id"]), new objj_method(sel_getUid("contentArray"), function $CPArrayController__contentArray(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "content"); +} +},["id"]), new objj_method(sel_getUid("contentSet"), function $CPArrayController__contentSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "content"); +} +},["id"]), new objj_method(sel_getUid("arrangeObjects:"), function $CPArrayController__arrangeObjects_(self, _cmd, objects) +{ with(self) +{ + var filterPredicate = objj_msgSend(self, "filterPredicate"), + sortDescriptors = objj_msgSend(self, "sortDescriptors"); + if (filterPredicate && sortDescriptors) + { + var sortedObjects = objj_msgSend(objects, "filteredArrayUsingPredicate:", filterPredicate); + objj_msgSend(sortedObjects, "sortUsingDescriptors:", sortDescriptors); + return sortedObjects; + } + else if (filterPredicate) + return objj_msgSend(objects, "filteredArrayUsingPredicate:", filterPredicate); + else if (sortDescriptors) + return objj_msgSend(objects, "sortedArrayUsingDescriptors:", sortDescriptors); + return objj_msgSend(objects, "copy"); +} +},["CPArray","CPArray"]), new objj_method(sel_getUid("rearrangeObjects"), function $CPArrayController__rearrangeObjects(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "arrangedObjects"); + objj_msgSend(self, "_rearrangeObjects"); + objj_msgSend(self, "didChangeValueForKey:", "arrangedObjects"); +} +},["void"]), new objj_method(sel_getUid("_rearrangeObjects"), function $CPArrayController___rearrangeObjects(self, _cmd) +{ with(self) +{ + var oldSelectedObjects = nil, + oldSelectionIndexes = nil; + if (objj_msgSend(self, "preservesSelection")) + oldSelectedObjects = objj_msgSend(self, "selectedObjects"); + else + oldSelectionIndexes = objj_msgSend(self, "selectionIndexes"); + objj_msgSend(self, "__setArrangedObjects:", objj_msgSend(self, "arrangeObjects:", objj_msgSend(self, "contentArray"))); + if (objj_msgSend(self, "preservesSelection")) + objj_msgSend(self, "__setSelectedObjects:", oldSelectedObjects); + else + objj_msgSend(self, "__setSelectionIndexes:", oldSelectionIndexes); +} +},["void"]), new objj_method(sel_getUid("__setArrangedObjects:"), function $CPArrayController____setArrangedObjects_(self, _cmd, value) +{ with(self) +{ + if (_arrangedObjects === value) + return; + _arrangedObjects = objj_msgSend(objj_msgSend(_CPObservableArray, "alloc"), "initWithArray:", value); +} +},["void","id"]), new objj_method(sel_getUid("arrangedObjects"), function $CPArrayController__arrangedObjects(self, _cmd) +{ with(self) +{ + return _arrangedObjects; +} +},["id"]), new objj_method(sel_getUid("sortDescriptors"), function $CPArrayController__sortDescriptors(self, _cmd) +{ with(self) +{ + return _sortDescriptors; +} +},["CPArray"]), new objj_method(sel_getUid("setSortDescriptors:"), function $CPArrayController__setSortDescriptors_(self, _cmd, value) +{ with(self) +{ + if (_sortDescriptors === value) + return; + _sortDescriptors = objj_msgSend(value, "copy"); + objj_msgSend(self, "_rearrangeObjects"); +} +},["void","CPArray"]), new objj_method(sel_getUid("filterPredicate"), function $CPArrayController__filterPredicate(self, _cmd) +{ with(self) +{ + return _filterPredicate; +} +},["CPPredicate"]), new objj_method(sel_getUid("setFilterPredicate:"), function $CPArrayController__setFilterPredicate_(self, _cmd, value) +{ with(self) +{ + objj_msgSend(self, "__setFilterPredicate:", value); +} +},["void","CPPredicate"]), new objj_method(sel_getUid("__setFilterPredicate:"), function $CPArrayController____setFilterPredicate_(self, _cmd, value) +{ with(self) +{ + if (_filterPredicate === value) + return; + _filterPredicate = value; + objj_msgSend(self, "_rearrangeObjects"); +} +},["void","CPPredicate"]), new objj_method(sel_getUid("alwaysUsesMultipleValuesMarker"), function $CPArrayController__alwaysUsesMultipleValuesMarker(self, _cmd) +{ with(self) +{ + return _alwaysUsesMultipleValuesMarker; +} +},["BOOL"]), new objj_method(sel_getUid("selectionIndex"), function $CPArrayController__selectionIndex(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectionIndexes, "firstIndex"); +} +},["unsigned"]), new objj_method(sel_getUid("setSelectionIndex:"), function $CPArrayController__setSelectionIndex_(self, _cmd, index) +{ with(self) +{ + return objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", index)); +} +},["BOOL","unsigned"]), new objj_method(sel_getUid("selectionIndexes"), function $CPArrayController__selectionIndexes(self, _cmd) +{ with(self) +{ + return _selectionIndexes; +} +},["CPIndexSet"]), new objj_method(sel_getUid("setSelectionIndexes:"), function $CPArrayController__setSelectionIndexes_(self, _cmd, indexes) +{ with(self) +{ + objj_msgSend(self, "__setSelectionIndexes:", indexes); +} +},["BOOL","CPIndexSet"]), new objj_method(sel_getUid("__setSelectionIndex:"), function $CPArrayController____setSelectionIndex_(self, _cmd, theIndex) +{ with(self) +{ + objj_msgSend(self, "__setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", theIndex)); +} +},["BOOL","int"]), new objj_method(sel_getUid("__setSelectionIndexes:"), function $CPArrayController____setSelectionIndexes_(self, _cmd, indexes) +{ with(self) +{ + if (!indexes) + indexes = objj_msgSend(CPIndexSet, "indexSet"); + if (!objj_msgSend(indexes, "count")) + { + if(_avoidsEmptySelection && objj_msgSend(objj_msgSend(self, "arrangedObjects"), "count")) + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", 0); + } + else + { + var objectsCount = objj_msgSend(objj_msgSend(self, "arrangedObjects"), "count"); + objj_msgSend(indexes, "removeIndexesInRange:", CPMakeRange(objectsCount, objj_msgSend(indexes, "lastIndex")+1)); + if(!objj_msgSend(indexes, "count") && _avoidsEmptySelection && objectsCount) + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", objectsCount-1); + } + if (objj_msgSend(_selectionIndexes, "isEqualToIndexSet:", indexes)) + return NO; + _selectionIndexes = objj_msgSend(indexes, "copy"); + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "selectionIndexes", self), "reverseSetValueFor:", "selectionIndexes"); + return YES; +} +},["BOOL","CPIndexSet"]), new objj_method(sel_getUid("selectedObjects"), function $CPArrayController__selectedObjects(self, _cmd) +{ with(self) +{ + var objects = objj_msgSend(objj_msgSend(self, "arrangedObjects"), "objectsAtIndexes:", objj_msgSend(self, "selectionIndexes")); + return objj_msgSend(_CPObservableArray, "arrayWithArray:", (objects || [])); +} +},["CPArray"]), new objj_method(sel_getUid("setSelectedObjects:"), function $CPArrayController__setSelectedObjects_(self, _cmd, objects) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "selectionIndexes"); + objj_msgSend(self, "_selectionWillChange"); + objj_msgSend(self, "__setSelectedObjects:", objects); + objj_msgSend(self, "didChangeValueForKey:", "selectionIndexes"); + objj_msgSend(self, "_selectionDidChange"); +} +},["BOOL","CPArray"]), new objj_method(sel_getUid("__setSelectedObjects:"), function $CPArrayController____setSelectedObjects_(self, _cmd, objects) +{ with(self) +{ + var set = objj_msgSend(CPIndexSet, "indexSet"), + count = objj_msgSend(objects, "count"), + arrangedObjects = objj_msgSend(self, "arrangedObjects"); + for (var i=0; i<count; i++) + { + var index = objj_msgSend(arrangedObjects, "indexOfObject:", objj_msgSend(objects, "objectAtIndex:", i)); + if (index !== CPNotFound) + objj_msgSend(set, "addIndex:", index); + } + objj_msgSend(self, "__setSelectionIndexes:", set); + return YES; +} +},["BOOL","CPArray"]), new objj_method(sel_getUid("canSelectPrevious"), function $CPArrayController__canSelectPrevious(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex") > 0 +} +},["BOOL"]), new objj_method(sel_getUid("selectPrevious:"), function $CPArrayController__selectPrevious_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex") - 1; + if (index >= 0) + objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", index)); +} +},["void","id"]), new objj_method(sel_getUid("canSelectNext"), function $CPArrayController__canSelectNext(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex") < objj_msgSend(objj_msgSend(self, "arrangedObjects"), "count") - 1; +} +},["BOOL"]), new objj_method(sel_getUid("selectNext:"), function $CPArrayController__selectNext_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex") + 1; + if (index < objj_msgSend(objj_msgSend(self, "arrangedObjects"), "count")) + objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", index)); +} +},["void","id"]), new objj_method(sel_getUid("addObject:"), function $CPArrayController__addObject_(self, _cmd, object) +{ with(self) +{ + if (!objj_msgSend(self, "canAdd")) + return; + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "willChangeValueForKey:", "filterPredicate"); + objj_msgSend(self, "willChangeValueForKey:", "content"); + objj_msgSend(_contentObject, "addObject:", object); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "__setFilterPredicate:", nil); + if (_filterPredicate === nil || objj_msgSend(_filterPredicate, "evaluateWithObject:", object)) + { + var pos = objj_msgSend(_arrangedObjects, "insertObject:inArraySortedByDescriptors:", object, _sortDescriptors); + if (_selectsInsertedObjects) + objj_msgSend(self, "__setSelectionIndex:", pos); + else + objj_msgSend(_selectionIndexes, "shiftIndexesStartingAtIndex:by:", pos, 1); + } + else + objj_msgSend(self, "_rearrangeObjects"); + objj_msgSend(self, "didChangeValueForKey:", "content"); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "didChangeValueForKey:", "filterPredicate"); +} +},["void","id"]), new objj_method(sel_getUid("insertObject:atArrangedObjectIndex:"), function $CPArrayController__insertObject_atArrangedObjectIndex_(self, _cmd, anObject, anIndex) +{ with(self) +{ + if (!objj_msgSend(self, "canAdd")) + return; + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "willChangeValueForKey:", "filterPredicate"); + objj_msgSend(self, "willChangeValueForKey:", "content"); + objj_msgSend(_contentObject, "insertObject:atIndex:", anObject, anIndex); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "__setFilterPredicate:", nil); + objj_msgSend(objj_msgSend(self, "arrangedObjects"), "insertObject:atIndex:", anObject, anIndex); + if (objj_msgSend(self, "selectsInsertedObjects")) + objj_msgSend(self, "__setSelectionIndex:", anIndex); + else + objj_msgSend(objj_msgSend(self, "selectionIndexes"), "shiftIndexesStartingAtIndex:by:", anIndex, 1); + if (objj_msgSend(self, "avoidsEmptySelection") && objj_msgSend(objj_msgSend(self, "selectionIndexes"), "count") <= 0 && objj_msgSend(_contentObject, "count") > 0) + objj_msgSend(self, "__setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", 0)); + objj_msgSend(self, "didChangeValueForKey:", "content"); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "didChangeValueForKey:", "filterPredicate"); +} +},["void","id","int"]), new objj_method(sel_getUid("removeObject:"), function $CPArrayController__removeObject_(self, _cmd, object) +{ with(self) +{ + if (!objj_msgSend(self, "canRemove")) + return; + objj_msgSend(self, "willChangeValueForKey:", "content"); + objj_msgSend(_contentObject, "removeObject:", object); + if (_filterPredicate === nil || objj_msgSend(_filterPredicate, "evaluateWithObject:", object)) + { + var pos = objj_msgSend(_arrangedObjects, "indexOfObject:", object); + objj_msgSend(_arrangedObjects, "removeObjectAtIndex:", pos); + objj_msgSend(_selectionIndexes, "shiftIndexesStartingAtIndex:by:", pos, -1); + } + objj_msgSend(self, "didChangeValueForKey:", "content"); +} +},["void","id"]), new objj_method(sel_getUid("add:"), function $CPArrayController__add_(self, _cmd, sender) +{ with(self) +{ + if(!objj_msgSend(self, "canAdd")) + return; + objj_msgSend(self, "insert:", sender); +} +},["void","id"]), new objj_method(sel_getUid("insert:"), function $CPArrayController__insert_(self, _cmd, sender) +{ with(self) +{ + if(!objj_msgSend(self, "canInsert")) + return; + var newObject = objj_msgSend(self, "automaticallyPreparesContent") ? objj_msgSend(self, "newObject") : objj_msgSend(self, "_defaultNewObject"); + objj_msgSend(self, "addObject:", newObject); +} +},["void","id"]), new objj_method(sel_getUid("remove:"), function $CPArrayController__remove_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "removeObjects:", objj_msgSend(objj_msgSend(self, "arrangedObjects"), "objectsAtIndexes:", objj_msgSend(self, "selectionIndexes"))); +} +},["void","id"]), new objj_method(sel_getUid("removeObjectsAtArrangedObjectIndexes:"), function $CPArrayController__removeObjectsAtArrangedObjectIndexes_(self, _cmd, indexes) +{ with(self) +{ + objj_msgSend(self, "_removeObjects:", objj_msgSend(objj_msgSend(self, "arrangedObjects"), "objectsAtIndexes:", indexes)); +} +},["void","CPIndexSet"]), new objj_method(sel_getUid("addObjects:"), function $CPArrayController__addObjects_(self, _cmd, objects) +{ with(self) +{ + if(!objj_msgSend(self, "canAdd")) + return; + var contentArray = objj_msgSend(self, "contentArray"), + count = objj_msgSend(objects, "count"); + for (var i=0; i<count; i++) + objj_msgSend(contentArray, "addObject:", objj_msgSend(objects, "objectAtIndex:", i)); + objj_msgSend(self, "setContent:", contentArray); +} +},["void","CPArray"]), new objj_method(sel_getUid("removeObjects:"), function $CPArrayController__removeObjects_(self, _cmd, objects) +{ with(self) +{ + if(!objj_msgSend(self, "canRemove")) + return; + objj_msgSend(self, "_removeObjects:", objects); +} +},["void","CPArray"]), new objj_method(sel_getUid("_removeObjects:"), function $CPArrayController___removeObjects_(self, _cmd, objects) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "content"); + objj_msgSend(_contentObject, "removeObjectsInArray:", objects); + var arrangedObjects = objj_msgSend(self, "arrangedObjects"), + position = objj_msgSend(arrangedObjects, "indexOfObject:", objj_msgSend(objects, "objectAtIndex:", 0)); + objj_msgSend(arrangedObjects, "removeObjectsInArray:", objects); + var objectsCount = objj_msgSend(arrangedObjects, "count"), + selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + if (objj_msgSend(self, "preservesSelection") || objj_msgSend(self, "avoidsEmptySelection")) + { + selectionIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", position); + if (objectsCount <= 0) + selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + else if (position >= objectsCount) + selectionIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", objectsCount - 1); + } + _selectionIndexes = selectionIndexes; + objj_msgSend(self, "didChangeValueForKey:", "content"); +} +},["void","CPArray"]), new objj_method(sel_getUid("canInsert"), function $CPArrayController__canInsert(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isEditable"); +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPArrayController__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(CPArrayController, "class")) + return; + objj_msgSend(self, "exposeBinding:", "contentArray"); + objj_msgSend(self, "exposeBinding:", "contentSet"); +} +},["void"]), new objj_method(sel_getUid("keyPathsForValuesAffectingContentArray"), function $CPArrayController__keyPathsForValuesAffectingContentArray(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "content"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingArrangedObjects"), function $CPArrayController__keyPathsForValuesAffectingArrangedObjects(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "content", "filterPredicate", "sortDescriptors"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelection"), function $CPArrayController__keyPathsForValuesAffectingSelection(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndex"), function $CPArrayController__keyPathsForValuesAffectingSelectionIndex(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndexes"), function $CPArrayController__keyPathsForValuesAffectingSelectionIndexes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "arrangedObjects"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedObjects"), function $CPArrayController__keyPathsForValuesAffectingSelectedObjects(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"), function $CPArrayController__keyPathsForValuesAffectingCanRemove(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectNext"), function $CPArrayController__keyPathsForValuesAffectingCanSelectNext(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectPrevious"), function $CPArrayController__keyPathsForValuesAffectingCanSelectPrevious(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"])]); +} +{ +var the_class = objj_getClass("CPArrayController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPArrayController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPArrayController__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPArrayController").super_class }, "initWithCoder:", coder); + if (self) + { + _avoidsEmptySelection = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerAvoidsEmptySelection"); + _clearsFilterPredicateOnInsertion = objj_msgSend(coder, "decodeBoolForKey:", "CPClearsFilterPredicateOnInsertion"); + _filterRestrictsInsertion = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerFilterRestrictsInsertion"); + _preservesSelection = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerPreservesSelection"); + _selectsInsertedObjects = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerSelectsInsertedObjects"); + _alwaysUsesMultipleValuesMarker = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerAlwaysUsesMultipleValuesMarker"); + if (objj_msgSend(self, "automaticallyPreparesContent")) + objj_msgSend(self, "prepareContent"); + else + objj_msgSend(self, "_setContentArray:", []); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("awakeFromCib"), function $CPArrayController__awakeFromCib(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_selectionWillChange"); + objj_msgSend(self, "_selectionDidChange"); +} +},["void"])]); +} + +p;14;CPBezierPath.jt;6649;@STATIC;1.0;I;26;AppKit/CPGraphicsContext.jI;21;Foundation/CPObject.jt;6573;objj_executeFile("AppKit/CPGraphicsContext.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +var DefaultLineWidth = 1.0; +{var the_class = objj_allocateClassPair(CPObject, "CPBezierPath"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_path"), new objj_ivar("_lineWidth")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPBezierPath__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBezierPath").super_class }, "init")) + { + _path = CGPathCreateMutable(); + _lineWidth = objj_msgSend(objj_msgSend(self, "class"), "defaultLineWidth"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("moveToPoint:"), function $CPBezierPath__moveToPoint_(self, _cmd, point) +{ with(self) +{ + CGPathMoveToPoint(_path, nil, point.x, point.y); +} +},["void","CGPoint"]), new objj_method(sel_getUid("lineToPoint:"), function $CPBezierPath__lineToPoint_(self, _cmd, point) +{ with(self) +{ + CGPathAddLineToPoint(_path, nil, point.x, point.y); +} +},["void","CGPoint"]), new objj_method(sel_getUid("curveToPoint:controlPoint1:controlPoint2:"), function $CPBezierPath__curveToPoint_controlPoint1_controlPoint2_(self, _cmd, endPoint, controlPoint1, controlPoint2) +{ with(self) +{ + CGPathAddCurveToPoint(_path, nil, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y); +} +},["void","CGPoint","CGPoint","CGPoint"]), new objj_method(sel_getUid("closePath"), function $CPBezierPath__closePath(self, _cmd) +{ with(self) +{ + CGPathCloseSubpath(_path); +} +},["void"]), new objj_method(sel_getUid("stroke"), function $CPBezierPath__stroke(self, _cmd) +{ with(self) +{ + var ctx = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextBeginPath(ctx); + CGContextAddPath(ctx, _path); + CGContextSetLineWidth(ctx, objj_msgSend(self, "lineWidth")); + CGContextClosePath(ctx); + CGContextStrokePath(ctx); +} +},["void"]), new objj_method(sel_getUid("fill"), function $CPBezierPath__fill(self, _cmd) +{ with(self) +{ + var ctx = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextBeginPath(ctx); + CGContextAddPath(ctx, _path); + CGContextSetLineWidth(ctx, objj_msgSend(self, "lineWidth")); + CGContextClosePath(ctx); + CGContextFillPath(ctx); +} +},["void"]), new objj_method(sel_getUid("lineWidth"), function $CPBezierPath__lineWidth(self, _cmd) +{ with(self) +{ + return _lineWidth; +} +},["float"]), new objj_method(sel_getUid("setLineWidth:"), function $CPBezierPath__setLineWidth_(self, _cmd, lineWidth) +{ with(self) +{ + _lineWidth = lineWidth; +} +},["void","float"]), new objj_method(sel_getUid("elementCount"), function $CPBezierPath__elementCount(self, _cmd) +{ with(self) +{ + return _path.count; +} +},["unsigned"]), new objj_method(sel_getUid("isEmpty"), function $CPBezierPath__isEmpty(self, _cmd) +{ with(self) +{ + return CGPathIsEmpty(_path); +} +},["BOOL"]), new objj_method(sel_getUid("currentPoint"), function $CPBezierPath__currentPoint(self, _cmd) +{ with(self) +{ + return CGPathGetCurrentPoint(_path); +} +},["CGPoint"]), new objj_method(sel_getUid("appendBezierPathWithPoints:count:"), function $CPBezierPath__appendBezierPathWithPoints_count_(self, _cmd, points, count) +{ with(self) +{ + CGPathAddLines(_path, nil, points, count); +} +},["void","CPArray","unsigned"]), new objj_method(sel_getUid("appendBezierPathWithRect:"), function $CPBezierPath__appendBezierPathWithRect_(self, _cmd, rect) +{ with(self) +{ + CGPathAddRect(_path, nil, rect); +} +},["void","CGRect"]), new objj_method(sel_getUid("appendBezierPathWithOvalInRect:"), function $CPBezierPath__appendBezierPathWithOvalInRect_(self, _cmd, rect) +{ with(self) +{ + CGPathAddPath(_path, nil, CGPathWithEllipseInRect(rect)); +} +},["void","CGRect"]), new objj_method(sel_getUid("appendBezierPathWithRoundedRect:xRadius:yRadius:"), function $CPBezierPath__appendBezierPathWithRoundedRect_xRadius_yRadius_(self, _cmd, rect, xRadius, yRadius) +{ with(self) +{ + CGPathAddPath(_path, nil, CGPathWithRoundedRectangleInRect(rect, xRadius, yRadius, YES, YES, YES, YES)); +} +},["void","CGRect","float","float"]), new objj_method(sel_getUid("appendBezierPath:"), function $CPBezierPath__appendBezierPath_(self, _cmd, other) +{ with(self) +{ + CGPathAddPath(_path, nil, other._path); +} +},["void","NSBezierPath*"]), new objj_method(sel_getUid("removeAllPoints"), function $CPBezierPath__removeAllPoints(self, _cmd) +{ with(self) +{ + _path = CGPathCreateMutable(); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("bezierPath"), function $CPBezierPath__bezierPath(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["CPBezierPath"]), new objj_method(sel_getUid("bezierPathWithOvalInRect:"), function $CPBezierPath__bezierPathWithOvalInRect_(self, _cmd, rect) +{ with(self) +{ + var path = objj_msgSend(self, "bezierPath"); + objj_msgSend(path, "appendBezierPathWithOvalInRect:", rect); + return path; +} +},["CPBezierPath","CGRect"]), new objj_method(sel_getUid("bezierPathWithRect:"), function $CPBezierPath__bezierPathWithRect_(self, _cmd, rect) +{ with(self) +{ + var path = objj_msgSend(self, "bezierPath"); + objj_msgSend(path, "appendBezierPathWithRect:", rect); + return path; +} +},["CPBezierPath","CGRect"]), new objj_method(sel_getUid("defaultLineWidth"), function $CPBezierPath__defaultLineWidth(self, _cmd) +{ with(self) +{ + return DefaultLineWidth; +} +},["float"]), new objj_method(sel_getUid("setDefaultLineWidth:"), function $CPBezierPath__setDefaultLineWidth_(self, _cmd, width) +{ with(self) +{ + DefaultLineWidth = width; +} +},["void","float"]), new objj_method(sel_getUid("fillRect:"), function $CPBezierPath__fillRect_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "bezierPathWithRect:", aRect), "fill"); +} +},["void","CGRect"]), new objj_method(sel_getUid("strokeRect:"), function $CPBezierPath__strokeRect_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "bezierPathWithRect:", aRect), "stroke"); +} +},["void","CGRect"]), new objj_method(sel_getUid("strokeLineFromPoint:toPoint:"), function $CPBezierPath__strokeLineFromPoint_toPoint_(self, _cmd, point1, point2) +{ with(self) +{ + var path = objj_msgSend(self, "bezierPath"); + objj_msgSend(path, "moveToPoint:", point1); + objj_msgSend(path, "lineToPoint:", point2); + objj_msgSend(path, "stroke"); +} +},["void","CGPoint","CGPoint"])]); +} + +p;7;CPBox.jt;9764;@STATIC;1.0;i;8;CPView.jt;9733;objj_executeFile("CPView.j", YES); +CPNoBorder = 0; +CPLineBorder = 1; +CPBezelBorder = 2; +CPGrooveBorder = 3; +{var the_class = objj_allocateClassPair(CPView, "CPBox"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_borderType"), new objj_ivar("_borderColor"), new objj_ivar("_fillColor"), new objj_ivar("_cornerRadius"), new objj_ivar("_borderWidth"), new objj_ivar("_contentMargin"), new objj_ivar("_contentView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPBox__initWithFrame_(self, _cmd, frameRect) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBox").super_class }, "initWithFrame:", frameRect); + if (self) + { + _borderType = CPBezelBorder; + _fillColor = objj_msgSend(CPColor, "clearColor"); + _borderColor = objj_msgSend(CPColor, "blackColor"); + _borderWidth = 1.0; + _contentMargin = CGSizeMake(0.0, 0.0); + _contentView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + objj_msgSend(self, "setAutoresizesSubviews:", YES); + objj_msgSend(self, "addSubview:", _contentView); + } + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("borderRect"), function $CPBox__borderRect(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "bounds"); +} +},["CPRect"]), new objj_method(sel_getUid("borderType"), function $CPBox__borderType(self, _cmd) +{ with(self) +{ + return _borderType; +} +},["CPBorderType"]), new objj_method(sel_getUid("setBorderType:"), function $CPBox__setBorderType_(self, _cmd, value) +{ with(self) +{ + _borderType = value; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPBorderType"]), new objj_method(sel_getUid("borderColor"), function $CPBox__borderColor(self, _cmd) +{ with(self) +{ + return _borderColor; +} +},["CPColor"]), new objj_method(sel_getUid("setBorderColor:"), function $CPBox__setBorderColor_(self, _cmd, color) +{ with(self) +{ + if (objj_msgSend(color, "isEqual:", _borderColor)) + return; + _borderColor = color; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("borderWidth"), function $CPBox__borderWidth(self, _cmd) +{ with(self) +{ + return _borderWidth; +} +},["float"]), new objj_method(sel_getUid("setBorderWidth:"), function $CPBox__setBorderWidth_(self, _cmd, width) +{ with(self) +{ + if (width === _borderWidth) + return; + _borderWidth = width; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float"]), new objj_method(sel_getUid("cornerRadius"), function $CPBox__cornerRadius(self, _cmd) +{ with(self) +{ + return _cornerRadius; +} +},["float"]), new objj_method(sel_getUid("setCornerRadius:"), function $CPBox__setCornerRadius_(self, _cmd, radius) +{ with(self) +{ + if (radius === _cornerRadius) + return; + _cornerRadius = radius; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float"]), new objj_method(sel_getUid("fillColor"), function $CPBox__fillColor(self, _cmd) +{ with(self) +{ + return _fillColor; +} +},["CPColor"]), new objj_method(sel_getUid("setFillColor:"), function $CPBox__setFillColor_(self, _cmd, color) +{ with(self) +{ + if (objj_msgSend(color, "isEqual:", _fillColor)) + return; + _fillColor = color; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("contentView"), function $CPBox__contentView(self, _cmd) +{ with(self) +{ + return _contentView; +} +},["CPView"]), new objj_method(sel_getUid("setContentView:"), function $CPBox__setContentView_(self, _cmd, aView) +{ with(self) +{ + if (aView === _contentView) + return; + objj_msgSend(aView, "setFrame:", CGRectInset(objj_msgSend(self, "bounds"), _contentMargin.width + _borderWidth, _contentMargin.height + _borderWidth)); + objj_msgSend(aView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + objj_msgSend(self, "replaceSubview:with:", _contentView, aView); + _contentView = aView; +} +},["void","CPView"]), new objj_method(sel_getUid("contentViewMargins"), function $CPBox__contentViewMargins(self, _cmd) +{ with(self) +{ + return _contentMargin; +} +},["CPSize"]), new objj_method(sel_getUid("setContentViewMargins:"), function $CPBox__setContentViewMargins_(self, _cmd, size) +{ with(self) +{ + if(size.width < 0 || size.height < 0) + objj_msgSend(CPException, "raise:reason:", CPGenericException, "Margins must be positive"); + _contentMargin = CGSizeMakeCopy(size); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPSize"]), new objj_method(sel_getUid("setFrameFromContentFrame:"), function $CPBox__setFrameFromContentFrame_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSend(self, "setFrame:", CGRectInset(aRect, -(_contentMargin.width + _borderWidth), -(_contentMargin.height + _borderWidth))); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPRect"]), new objj_method(sel_getUid("sizeToFit"), function $CPBox__sizeToFit(self, _cmd) +{ with(self) +{ + var contentFrame = objj_msgSend(_contentView, "frame"); + objj_msgSend(self, "setFrameSize:", CGSizeMake(contentFrame.size.width + _contentMargin.width * 2, + contentFrame.size.height + _contentMargin.height * 2)); + objj_msgSend(_contentView, "setFrameOrigin:", CGPointMake(_contentMargin.width, _contentMargin.height)); +} +},["void"]), new objj_method(sel_getUid("drawRect:"), function $CPBox__drawRect_(self, _cmd, rect) +{ with(self) +{ + if (_borderType === CPNoBorder) + return; + var bounds = objj_msgSend(self, "bounds"), + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetFillColor(context, objj_msgSend(self, "fillColor")); + switch (_borderType) + { + case CPBezelBorder: + var sides = [CPMinYEdge, CPMaxXEdge, CPMaxYEdge, CPMinXEdge], + sideGray = 190.0 / 255.0, + grays = [142.0 / 255.0, sideGray, sideGray, sideGray], + borderWidth = _borderWidth; + while (borderWidth--) + bounds = CPDrawTiledRects(bounds, bounds, sides, grays); + CGContextFillRect(context, bounds); + break; + default: + bounds = CGRectInset(bounds, _borderWidth / 2.0, _borderWidth / 2.0); + CGContextSetStrokeColor(context, objj_msgSend(self, "borderColor")); + CGContextSetLineWidth(context, _borderWidth); + CGContextFillRoundedRectangleInRect(context, bounds, _cornerRadius, YES, YES, YES, YES); + CGContextStrokeRoundedRectangleInRect(context, bounds, _cornerRadius, YES, YES, YES, YES); + break; + } +} +},["void","CPRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("boxEnclosingView:"), function $CPBox__boxEnclosingView_(self, _cmd, aView) +{ with(self) +{ + var box = objj_msgSend(objj_msgSend(self, "alloc"), "initWithFrame:", CGRectMakeZero()), + enclosingView = objj_msgSend(aView, "superview"); + objj_msgSend(box, "setFrameFromContentFrame:", objj_msgSend(aView, "frame")); + objj_msgSend(enclosingView, "replaceSubview:with:", aView, box); + objj_msgSend(box, "setContentView:", aView); + return box; +} +},["id","CPView"])]); +} +var CPBoxBorderTypeKey = "CPBoxBorderTypeKey", + CPBoxBorderColorKey = "CPBoxBorderColorKey", + CPBoxFillColorKey = "CPBoxFillColorKey", + CPBoxCornerRadiusKey = "CPBoxCornerRadiusKey", + CPBoxBorderWidthKey = "CPBoxBorderWidthKey", + CPBoxContentMarginKey = "CPBoxContentMarginKey"; +{ +var the_class = objj_getClass("CPBox") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPBox\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPBox__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBox").super_class }, "initWithCoder:", aCoder); + if (self) + { + _borderType = objj_msgSend(aCoder, "decodeIntForKey:", CPBoxBorderTypeKey); + _borderColor = objj_msgSend(aCoder, "decodeObjectForKey:", CPBoxBorderColorKey); + _fillColor = objj_msgSend(aCoder, "decodeObjectForKey:", CPBoxFillColorKey); + _cornerRadius = objj_msgSend(aCoder, "decodeFloatForKey:", CPBoxCornerRadiusKey); + _borderWidth = objj_msgSend(aCoder, "decodeFloatForKey:", CPBoxBorderWidthKey); + _contentMargin = objj_msgSend(aCoder, "decodeSizeForKey:", CPBoxContentMarginKey); + _contentView = objj_msgSend(self, "subviews")[0]; + objj_msgSend(self, "setAutoresizesSubviews:", YES); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPBox__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBox").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeInt:forKey:", _borderType, CPBoxBorderTypeKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _borderColor, CPBoxBorderColorKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _fillColor, CPBoxFillColorKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _cornerRadius, CPBoxCornerRadiusKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _borderWidth, CPBoxBorderWidthKey); + objj_msgSend(aCoder, "encodeSize:forKey:", _contentMargin, CPBoxContentMarginKey); +} +},["void","CPCoder"])]); +} + +p;11;CPBrowser.jt;46395;@STATIC;1.0;i;11;CPControl.ji;9;CPImage.ji;13;CPTableView.ji;14;CPScrollView.jt;46309;objj_executeFile("CPControl.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPTableView.j", YES); +objj_executeFile("CPScrollView.j", YES); +{var the_class = objj_allocateClassPair(CPControl, "CPBrowser"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_delegate"), new objj_ivar("_pathSeparator"), new objj_ivar("_contentView"), new objj_ivar("_horizontalScrollView"), new objj_ivar("_prototypeView"), new objj_ivar("_tableViews"), new objj_ivar("_tableDelegates"), new objj_ivar("_rootItem"), new objj_ivar("_delegateSupportsImages"), new objj_ivar("_doubleAction"), new objj_ivar("_allowsMultipleSelection"), new objj_ivar("_allowsEmptySelection"), new objj_ivar("_tableViewClass"), new objj_ivar("_rowHeight"), new objj_ivar("_imageWidth"), new objj_ivar("_leafWidth"), new objj_ivar("_minColumnWidth"), new objj_ivar("_defaultColumnWidth"), new objj_ivar("_columnWidths")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("doubleAction"), function $CPBrowser__doubleAction(self, _cmd) +{ with(self) +{ +return _doubleAction; +} +},["id"]), +new objj_method(sel_getUid("setDoubleAction:"), function $CPBrowser__setDoubleAction_(self, _cmd, newValue) +{ with(self) +{ +_doubleAction = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("tableViewClass"), function $CPBrowser__tableViewClass(self, _cmd) +{ with(self) +{ +return _tableViewClass; +} +},["id"]), +new objj_method(sel_getUid("setTableViewClass:"), function $CPBrowser__setTableViewClass_(self, _cmd, newValue) +{ with(self) +{ +_tableViewClass = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("defaultColumnWidth"), function $CPBrowser__defaultColumnWidth(self, _cmd) +{ with(self) +{ +return _defaultColumnWidth; +} +},["id"]), +new objj_method(sel_getUid("setDefaultColumnWidth:"), function $CPBrowser__setDefaultColumnWidth_(self, _cmd, newValue) +{ with(self) +{ +_defaultColumnWidth = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithFrame:"), function $CPBrowser__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBrowser").super_class }, "initWithFrame:", aFrame)) + { + _rowHeight = 23.0; + _defaultColumnWidth = 140.0; + _minColumnWidth = 80.0; + _imageWidth = 23.0; + _leafWidth = 13.0; + _columnWidths = []; + _pathSeparator = "/"; + _tableViews = []; + _tableDelegates = []; + _allowsMultipleSelection = YES; + _allowsEmptySelection = YES; + _tableViewClass = objj_msgSend(_CPBrowserTableView, "class"); + _prototypeView = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_prototypeView, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(_prototypeView, "setValue:forThemeAttribute:inState:", objj_msgSend(CPColor, "whiteColor"), "text-color", CPThemeStateSelectedDataView); + objj_msgSend(_prototypeView, "setLineBreakMode:", CPLineBreakByTruncatingTail); + _horizontalScrollView = objj_msgSend(objj_msgSend(CPScrollView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_horizontalScrollView, "setHasVerticalScroller:", NO); + objj_msgSend(_horizontalScrollView, "setAutohidesScrollers:", YES); + objj_msgSend(_horizontalScrollView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + _contentView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0, 0, 0, CGRectGetHeight(objj_msgSend(self, "bounds")))); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewHeightSizable); + objj_msgSend(_horizontalScrollView, "setDocumentView:", _contentView); + objj_msgSend(self, "addSubview:", _horizontalScrollView); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setPrototypeView:"), function $CPBrowser__setPrototypeView_(self, _cmd, aPrototypeView) +{ with(self) +{ + _prototypeView = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", + objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", aPrototypeView)); +} +},["void","CPView"]), new objj_method(sel_getUid("prototypeView"), function $CPBrowser__prototypeView(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", + objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _prototypeView)); +} +},["CPView"]), new objj_method(sel_getUid("setDelegate:"), function $CPBrowser__setDelegate_(self, _cmd, anObject) +{ with(self) +{ + _delegate = anObject; + _delegateSupportsImages = objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:imageValueForItem:")); + objj_msgSend(self, "loadColumnZero"); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPBrowser__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("tableViewInColumn:"), function $CPBrowser__tableViewInColumn_(self, _cmd, index) +{ with(self) +{ + return _tableViews[index]; +} +},["CPTableView","unsigned"]), new objj_method(sel_getUid("columnOfTableView:"), function $CPBrowser__columnOfTableView_(self, _cmd, aTableView) +{ with(self) +{ + return objj_msgSend(_tableViews, "indexOfObject:", aTableView); +} +},["unsigned","CPTableView"]), new objj_method(sel_getUid("loadColumnZero"), function $CPBrowser__loadColumnZero(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("rootItemForBrowser:"))) + _rootItem = objj_msgSend(_delegate, "rootItemForBrowser:", self); + else + _rootItem = nil; + objj_msgSend(self, "setLastColumn:", -1); + objj_msgSend(self, "addColumn"); +} +},["void"]), new objj_method(sel_getUid("setLastColumn:"), function $CPBrowser__setLastColumn_(self, _cmd, columnIndex) +{ with(self) +{ + if (columnIndex >= _tableViews.length) + return; + var oldValue = _tableViews.length - 1; + var indexPlusOne = columnIndex + 1; + objj_msgSend(objj_msgSend(_tableViews.slice(indexPlusOne), "valueForKey:", "enclosingScrollView"), "makeObjectsPerformSelector:", sel_getUid("removeFromSuperview")); + _tableViews = _tableViews.slice(0, indexPlusOne); + _tableDelegates = _tableDelegates.slice(0, indexPlusOne); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:didChangeLastColumn:toColumn:"))) + objj_msgSend(_delegate, "browser:didChangeLastColumn:toColumn:", self, oldValue, columnIndex); + objj_msgSend(self, "tile"); +} +},["void","int"]), new objj_method(sel_getUid("lastColumn"), function $CPBrowser__lastColumn(self, _cmd) +{ with(self) +{ + return _tableViews.length - 1; +} +},["int"]), new objj_method(sel_getUid("addColumn"), function $CPBrowser__addColumn(self, _cmd) +{ with(self) +{ + var lastIndex = objj_msgSend(self, "lastColumn"), + lastColumn = _tableViews[lastIndex], + selectionIndexes = objj_msgSend(lastColumn, "selectedRowIndexes"); + if (lastIndex >= 0 && objj_msgSend(selectionIndexes, "count") > 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Can't add column, column "+lastIndex+" has invalid selection."); + var index = lastIndex+1, + item = index === 0 ? _rootItem : objj_msgSend(_tableDelegates[lastIndex], "childAtIndex:", objj_msgSend(selectionIndexes, "firstIndex")); + if (index > 0 && item && objj_msgSend(self, "isLeafItem:", item)) + return; + var table = objj_msgSend(objj_msgSend(_tableViewClass, "alloc"), "initWithFrame:browser:", CGRectMakeZero(), self); + objj_msgSend(table, "setHeaderView:", nil); + objj_msgSend(table, "setCornerView:", nil); + objj_msgSend(table, "setAllowsMultipleSelection:", _allowsMultipleSelection); + objj_msgSend(table, "setAllowsEmptySelection:", _allowsEmptySelection); + objj_msgSend(table, "registerForDraggedTypes:", objj_msgSend(self, "registeredDraggedTypes")); + objj_msgSend(self, "_addTableColumnsToTableView:forColumnIndex:", table, index); + var delegate = objj_msgSend(objj_msgSend(_CPBrowserTableDelegate, "alloc"), "init"); + objj_msgSend(delegate, "_setDelegate:", _delegate); + objj_msgSend(delegate, "_setBrowser:", self); + objj_msgSend(delegate, "_setIndex:", index); + objj_msgSend(delegate, "_setItem:", item); + _tableViews[index] = table; + _tableDelegates[index] = delegate; + objj_msgSend(table, "setDelegate:", delegate); + objj_msgSend(table, "setDataSource:", delegate); + objj_msgSend(table, "setTarget:", delegate); + objj_msgSend(table, "setAction:", sel_getUid("_tableViewClicked:")); + objj_msgSend(table, "setDoubleAction:", sel_getUid("_tableViewDoubleClicked:")); + objj_msgSend(table, "setDraggingDestinationFeedbackStyle:", CPTableViewDraggingDestinationFeedbackStyleRegular); + var scrollView = objj_msgSend(objj_msgSend(_CPBrowserScrollView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(scrollView, "_setBrowser:", self); + objj_msgSend(scrollView, "setDocumentView:", table); + objj_msgSend(scrollView, "setHasHorizontalScroller:", NO); + objj_msgSend(scrollView, "setAutoresizingMask:", CPViewHeightSizable); + objj_msgSend(_contentView, "addSubview:", scrollView); + objj_msgSend(self, "tile"); + objj_msgSend(self, "scrollColumnToVisible:", index); +} +},["void"]), new objj_method(sel_getUid("_addTableColumnsToTableView:forColumnIndex:"), function $CPBrowser___addTableColumnsToTableView_forColumnIndex_(self, _cmd, aTableView, index) +{ with(self) +{ + if (_delegateSupportsImages) + { + var column = objj_msgSend(objj_msgSend(CPTableColumn, "alloc"), "initWithIdentifier:", "Image"), + view = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(view, "setImageScaling:", CPScaleProportionally); + objj_msgSend(column, "setDataView:", view); + objj_msgSend(column, "setResizingMask:", CPTableColumnNoResizing); + objj_msgSend(aTableView, "addTableColumn:", column); + } + var column = objj_msgSend(objj_msgSend(CPTableColumn, "alloc"), "initWithIdentifier:", "Content"); + objj_msgSend(column, "setDataView:", _prototypeView); + objj_msgSend(column, "setResizingMask:", CPTableColumnNoResizing); + objj_msgSend(aTableView, "addTableColumn:", column); + var column = objj_msgSend(objj_msgSend(CPTableColumn, "alloc"), "initWithIdentifier:", "Leaf"), + view = objj_msgSend(objj_msgSend(_CPBrowserLeafView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(view, "setBranchImage:", objj_msgSend(objj_msgSend(self, "class"), "branchImage")); + objj_msgSend(view, "setHighlightedBranchImage:", objj_msgSend(objj_msgSend(self, "class"), "highlightedBranchImage")); + objj_msgSend(column, "setDataView:", view); + objj_msgSend(column, "setResizingMask:", CPTableColumnNoResizing); + objj_msgSend(aTableView, "addTableColumn:", column); +} +},["void","CPTableView","unsigned"]), new objj_method(sel_getUid("reloadColumn:"), function $CPBrowser__reloadColumn_(self, _cmd, column) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "tableViewInColumn:", column), "reloadData"); +} +},["void","int"]), new objj_method(sel_getUid("tile"), function $CPBrowser__tile(self, _cmd) +{ with(self) +{ + var xOrigin = 0, + scrollerWidth = objj_msgSend(CPScroller, "scrollerWidth"), + height = CGRectGetHeight(objj_msgSend(_contentView, "bounds")); + for (var i = 0, count = _tableViews.length; i < count; i++) + { + var tableView = _tableViews[i], + scrollView = objj_msgSend(tableView, "enclosingScrollView"), + width = objj_msgSend(self, "widthOfColumn:", i), + tableHeight = CGRectGetHeight(objj_msgSend(tableView, "bounds")); + objj_msgSend(objj_msgSend(tableView, "tableColumnWithIdentifier:", "Image"), "setWidth:", _imageWidth); + objj_msgSend(objj_msgSend(tableView, "tableColumnWithIdentifier:", "Content"), "setWidth:", width - (_leafWidth + _delegateSupportsImages ? _imageWidth : 0) - scrollerWidth - scrollerWidth); + objj_msgSend(objj_msgSend(tableView, "tableColumnWithIdentifier:", "Leaf"), "setWidth:", _leafWidth); + objj_msgSend(tableView, "setRowHeight:", _rowHeight); + objj_msgSend(tableView, "setFrameSize:", CGSizeMake(width - scrollerWidth, tableHeight)); + objj_msgSend(scrollView, "setFrameOrigin:", CGPointMake(xOrigin, 0)); + objj_msgSend(scrollView, "setFrameSize:", CGSizeMake(width, height)); + xOrigin += width; + } + objj_msgSend(_contentView, "setFrameSize:", CGSizeMake(xOrigin, height)); +} +},["void"]), new objj_method(sel_getUid("rowAtPoint:"), function $CPBrowser__rowAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var column = objj_msgSend(self, "columnAtPoint:", aPoint); + if (column === -1) + return -1; + var tableView = _tableViews[column]; + return objj_msgSend(tableView, "rowAtPoint:", objj_msgSend(tableView, "convertPoint:fromView:", aPoint, self)); +} +},["unsigned","CGPoint"]), new objj_method(sel_getUid("columnAtPoint:"), function $CPBrowser__columnAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var adjustedPoint = objj_msgSend(_contentView, "convertPoint:fromView:", aPoint, self); + for (var i = 0, count = _tableViews.length; i < count; i++) + { + var frame = objj_msgSend(objj_msgSend(_tableViews[i], "enclosingScrollView"), "frame"); + if (CGRectContainsPoint(frame, adjustedPoint)) + return i; + } + return -1; +} +},["unsigned","CGPoint"]), new objj_method(sel_getUid("rectOfRow:inColumn:"), function $CPBrowser__rectOfRow_inColumn_(self, _cmd, aRow, aColumn) +{ with(self) +{ + var tableView = _tableViews[aColumn], + rect = objj_msgSend(tableView, "rectOfRow:", aRow); + rect.origin = objj_msgSend(self, "convertPoint:fromView:", rect.origin, tableView); + return rect; +} +},["CGRect","unsigned","unsigned"]), new objj_method(sel_getUid("itemAtRow:inColumn:"), function $CPBrowser__itemAtRow_inColumn_(self, _cmd, row, column) +{ with(self) +{ + return objj_msgSend(_tableDelegates[column], "childAtIndex:", row); +} +},["id","int","int"]), new objj_method(sel_getUid("isLeafItem:"), function $CPBrowser__isLeafItem_(self, _cmd, item) +{ with(self) +{ + return objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:isLeafItem:")) && objj_msgSend(_delegate, "browser:isLeafItem:", self, item); +} +},["BOOL","id"]), new objj_method(sel_getUid("parentForItemsInColumn:"), function $CPBrowser__parentForItemsInColumn_(self, _cmd, column) +{ with(self) +{ + return objj_msgSend(_tableDelegates[column], "_item"); +} +},["id","int"]), new objj_method(sel_getUid("selectedItems"), function $CPBrowser__selectedItems(self, _cmd) +{ with(self) +{ + var selectedColumn = objj_msgSend(self, "selectedColumn"), + selectedIndexes = objj_msgSend(self, "selectedRowIndexesInColumn:", selectedColumn), + set = objj_msgSend(CPSet, "set"), + index = objj_msgSend(selectedIndexes, "firstIndex"); + while (index !== CPNotFound) + { + objj_msgSend(set, "addObject:", objj_msgSend(self, "itemAtRow:inColumn:", index, selectedColumn)); + index = objj_msgSend(selectedIndexes, "indexGreaterThanIndex:", index); + } + return set; +} +},["CPSet"]), new objj_method(sel_getUid("selectedItem"), function $CPBrowser__selectedItem(self, _cmd) +{ with(self) +{ + var selectedColumn = objj_msgSend(self, "selectedColumn"), + selectedRow = objj_msgSend(self, "selectedRowInColumn:", selectedColumn); + return objj_msgSend(self, "itemAtRow:inColumn:", selectedRow, selectedColumn); +} +},["id"]), new objj_method(sel_getUid("trackMouse:"), function $CPBrowser__trackMouse_(self, _cmd, anEvent) +{ with(self) +{ +} +},["void","CPEvent"]), new objj_method(sel_getUid("_column:clickedRow:"), function $CPBrowser___column_clickedRow_(self, _cmd, columnIndex, rowIndex) +{ with(self) +{ + objj_msgSend(self, "setLastColumn:", columnIndex); + if (rowIndex >= 0) + objj_msgSend(self, "addColumn"); + objj_msgSend(self, "doClick:", self); +} +},["void","unsigned","unsigned"]), new objj_method(sel_getUid("sendAction"), function $CPBrowser__sendAction(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", _action, _target); +} +},["void"]), new objj_method(sel_getUid("doClick:"), function $CPBrowser__doClick_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", _action, _target); +} +},["void","id"]), new objj_method(sel_getUid("doDoubleClick:"), function $CPBrowser__doDoubleClick_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", _doubleAction, _target); +} +},["void","id"]), new objj_method(sel_getUid("keyDown:"), function $CPBrowser__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + var column = objj_msgSend(self, "selectedColumn"); + if (column === -1) + return; + objj_msgSend(_tableViews[column], "keyDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("columnContentWidthForColumnWidth:"), function $CPBrowser__columnContentWidthForColumnWidth_(self, _cmd, aWidth) +{ with(self) +{ + return aWidth - (_leafWidth + _delegateSupportsImages ? _imageWidth : 0) - objj_msgSend(CPScroller, "scrollerWidth"); +} +},["float","float"]), new objj_method(sel_getUid("columnWidthForColumnContentWidth:"), function $CPBrowser__columnWidthForColumnContentWidth_(self, _cmd, aWidth) +{ with(self) +{ + return aWidth + (_leafWidth + _delegateSupportsImages ? _imageWidth : 0) + objj_msgSend(CPScroller, "scrollerWidth"); +} +},["float","float"]), new objj_method(sel_getUid("setImageWidth:"), function $CPBrowser__setImageWidth_(self, _cmd, aWidth) +{ with(self) +{ + _imageWidth = aWidth; + objj_msgSend(self, "tile"); +} +},["void","float"]), new objj_method(sel_getUid("imageWidth"), function $CPBrowser__imageWidth(self, _cmd) +{ with(self) +{ + return _imageWidth; +} +},["float"]), new objj_method(sel_getUid("setMinColumnWidth:"), function $CPBrowser__setMinColumnWidth_(self, _cmd, minWidth) +{ with(self) +{ + _minColumnWidth = minWidth; + objj_msgSend(self, "tile"); +} +},["void","float"]), new objj_method(sel_getUid("minColumnWidth"), function $CPBrowser__minColumnWidth(self, _cmd) +{ with(self) +{ + return _minColumnWidth; +} +},["float"]), new objj_method(sel_getUid("setWidth:ofColumn:"), function $CPBrowser__setWidth_ofColumn_(self, _cmd, aWidth, column) +{ with(self) +{ + _columnWidths[column] = aWidth; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:didResizeColumn:"))) + objj_msgSend(_delegate, "browser:didResizeColumn:", self, column); + objj_msgSend(self, "tile"); +} +},["void","float","unsigned"]), new objj_method(sel_getUid("widthOfColumn:"), function $CPBrowser__widthOfColumn_(self, _cmd, column) +{ with(self) +{ + var width = _columnWidths[column]; + if (width == null) + width = _defaultColumnWidth; + return MAX(objj_msgSend(CPScroller, "scrollerWidth"), MAX(_minColumnWidth, width)); +} +},["float","unsigned"]), new objj_method(sel_getUid("setRowHeight:"), function $CPBrowser__setRowHeight_(self, _cmd, aHeight) +{ with(self) +{ + _rowHeight = aHeight; +} +},["void","float"]), new objj_method(sel_getUid("rowHeight"), function $CPBrowser__rowHeight(self, _cmd) +{ with(self) +{ + return _rowHeight; +} +},["float"]), new objj_method(sel_getUid("scrollColumnToVisible:"), function $CPBrowser__scrollColumnToVisible_(self, _cmd, columnIndex) +{ with(self) +{ + objj_msgSend(_contentView, "scrollRectToVisible:", objj_msgSend(objj_msgSend(objj_msgSend(self, "tableViewInColumn:", columnIndex), "enclosingScrollView"), "frame")); +} +},["void","unsigned"]), new objj_method(sel_getUid("autohidesScroller"), function $CPBrowser__autohidesScroller(self, _cmd) +{ with(self) +{ + return objj_msgSend(_horizontalScrollView, "autohidesScrollers"); +} +},["BOOL"]), new objj_method(sel_getUid("setAutohidesScroller:"), function $CPBrowser__setAutohidesScroller_(self, _cmd, shouldHide) +{ with(self) +{ + objj_msgSend(_horizontalScrollView, "setAutohidesScrollers:", shouldHide); +} +},["void","BOOL"]), new objj_method(sel_getUid("selectedRowInColumn:"), function $CPBrowser__selectedRowInColumn_(self, _cmd, columnIndex) +{ with(self) +{ + if (columnIndex > objj_msgSend(self, "lastColumn") || columnIndex < 0) + return -1; + return objj_msgSend(_tableViews[columnIndex], "selectedRow"); +} +},["unsigned","unsigned"]), new objj_method(sel_getUid("selectedColumn"), function $CPBrowser__selectedColumn(self, _cmd) +{ with(self) +{ + var column = objj_msgSend(self, "lastColumn"), + row = objj_msgSend(self, "selectedRowInColumn:", column); + if (row >= 0) + return column; + else + return column - 1; +} +},["unsigned"]), new objj_method(sel_getUid("selectRow:inColumn:"), function $CPBrowser__selectRow_inColumn_(self, _cmd, row, column) +{ with(self) +{ + var selectedIndexes = row === -1 ? objj_msgSend(CPIndexSet, "indexSet") : objj_msgSend(CPIndexSet, "indexSetWithIndex:", row); + objj_msgSend(self, "selectRowIndexes:inColumn:", selectedIndexes, column); +} +},["void","unsigned","unsigned"]), new objj_method(sel_getUid("allowsMultipleSelection"), function $CPBrowser__allowsMultipleSelection(self, _cmd) +{ with(self) +{ + return _allowsMultipleSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsMultipleSelection:"), function $CPBrowser__setAllowsMultipleSelection_(self, _cmd, shouldAllow) +{ with(self) +{ + if (_allowsMultipleSelection === shouldAllow) + return; + _allowsMultipleSelection = shouldAllow; + objj_msgSend(_tableViews, "makeObjectsPerformSelector:withObject:", sel_getUid("setAllowsMultipleSelection:"), shouldAllow); +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsEmptySelection"), function $CPBrowser__allowsEmptySelection(self, _cmd) +{ with(self) +{ + return _allowsEmptySelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsEmptySelection:"), function $CPBrowser__setAllowsEmptySelection_(self, _cmd, shouldAllow) +{ with(self) +{ + if (_allowsEmptySelection === shouldAllow) + return; + _allowsEmptySelection = shouldAllow; + objj_msgSend(_tableViews, "makeObjectsPerformSelector:withObject:", sel_getUid("setAllowsEmptySelection:"), shouldAllow); +} +},["void","BOOL"]), new objj_method(sel_getUid("selectedRowIndexesInColumn:"), function $CPBrowser__selectedRowIndexesInColumn_(self, _cmd, column) +{ with(self) +{ + if (column < 0 || column > objj_msgSend(self, "lastColumn") +1) + return objj_msgSend(CPIndexSet, "indexSet"); + return objj_msgSend(objj_msgSend(self, "tableViewInColumn:", column), "selectedRowIndexes"); +} +},["CPIndexSet","unsigned"]), new objj_method(sel_getUid("selectRowIndexes:inColumn:"), function $CPBrowser__selectRowIndexes_inColumn_(self, _cmd, indexSet, column) +{ with(self) +{ + if (column < 0 || column > objj_msgSend(self, "lastColumn") + 1) + return; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:selectionIndexesForProposedSelection:inColumn:"))) + indexSet = objj_msgSend(_delegate, "browser:selectionIndexesForProposedSelection:inColumn:", self, indexSet, column); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:shouldSelectRowIndexes:inColumn:")) && + !objj_msgSend(_delegate, "browser:shouldSelectRowIndexes:inColumn:", self, indexSet, column)) + return; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browserSelectionIsChanging:"))) + objj_msgSend(_delegate, "browserSelectionIsChanging:", self); + if (column > objj_msgSend(self, "lastColumn")) + objj_msgSend(self, "addColumn"); + objj_msgSend(self, "setLastColumn:", column); + objj_msgSend(objj_msgSend(self, "tableViewInColumn:", column), "selectRowIndexes:byExtendingSelection:", indexSet, NO); + objj_msgSend(self, "scrollColumnToVisible:", column); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browserSelectionDidChange:"))) + objj_msgSend(_delegate, "browserSelectionDidChange:", self); +} +},["void","CPIndexSet","unsigned"]), new objj_method(sel_getUid("setBackgroundColor:"), function $CPBrowser__setBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBrowser").super_class }, "setBackgroundColor:", aColor); + objj_msgSend(_contentView, "setBackgroundColor:", aColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPBrowser__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("registerForDraggedTypes:"), function $CPBrowser__registerForDraggedTypes_(self, _cmd, types) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBrowser").super_class }, "registerForDraggedTypes:", types); + objj_msgSend(_tableViews, "makeObjectsPerformSelector:withObject:", sel_getUid("registerForDraggedTypes:"), types); +} +},["void","CPArray"]), new objj_method(sel_getUid("canDragRowsWithIndexes:inColumn:withEvent:"), function $CPBrowser__canDragRowsWithIndexes_inColumn_withEvent_(self, _cmd, rowIndexes, columnIndex, dragEvent) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:canDragRowsWithIndexes:inColumn:withEvent:"))) + return objj_msgSend(_delegate, "browser:canDragRowsWithIndexes:inColumn:withEvent:", self, rowIndexes, columnIndex, dragEvent); + return YES; +} +},["BOOL","CPIndexSet","int","CPEvent"]), new objj_method(sel_getUid("draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"), function $CPBrowser__draggingImageForRowsWithIndexes_inColumn_withEvent_offset_(self, _cmd, rowIndexes, columnIndex, dragEvent, dragImageOffset) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"))) + return objj_msgSend(_delegate, "browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:", self, rowIndexes, columnIndex, dragEvent, dragImageOffset); + return nil; +} +},["CPImage","CPIndexSet","int","CPEvent","CGPoint"]), new objj_method(sel_getUid("draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"), function $CPBrowser__draggingViewForRowsWithIndexes_inColumn_withEvent_offset_(self, _cmd, rowIndexes, columnIndex, dragEvent, dragImageOffset) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"))) + return objj_msgSend(_delegate, "browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:", self, rowIndexes, columnIndex, dragEvent, dragImageOffset); + return nil; +} +},["CPView","CPIndexSet","int","CPEvent","CGPoint"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("branchImage"), function $CPBrowser__branchImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPBrowser, "class")), "pathForResource:", "browser-leaf.png"), CGSizeMake(9,9)); +} +},["CPImage"]), new objj_method(sel_getUid("highlightedBranchImage"), function $CPBrowser__highlightedBranchImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPBrowser, "class")), "pathForResource:", "browser-leaf-highlighted.png"), CGSizeMake(9,9)); +} +},["CPImage"])]); +} +var _CPBrowserResizeControlBackgroundImage = nil; +{var the_class = objj_allocateClassPair(CPView, "_CPBrowserResizeControl"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_mouseDownX"), new objj_ivar("_browser"), new objj_ivar("_index"), new objj_ivar("_width")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPBrowserResizeControl__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserResizeControl").super_class }, "initWithFrame:", aFrame)) + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(self, "class"), "backgroundImage"))); + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("mouseDown:"), function $_CPBrowserResizeControl__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + _mouseDownX = objj_msgSend(anEvent, "locationInWindow").x; + _browser = objj_msgSend(objj_msgSend(self, "superview"), "_browser"); + _index = objj_msgSend(_browser, "columnOfTableView:", objj_msgSend(objj_msgSend(self, "superview"), "documentView")); + _width = objj_msgSend(_browser, "widthOfColumn:", _index); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $_CPBrowserResizeControl__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + var deltaX = objj_msgSend(anEvent, "locationInWindow").x - _mouseDownX; + objj_msgSend(_browser, "setWidth:ofColumn:", _width + deltaX, _index); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $_CPBrowserResizeControl__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("backgroundImage"), function $_CPBrowserResizeControl__backgroundImage(self, _cmd) +{ with(self) +{ + if (!_CPBrowserResizeControlBackgroundImage) + { + var path = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(self, "class")), "pathForResource:", "browser-resize-control.png"); + _CPBrowserResizeControlBackgroundImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", path, CGSizeMake(15, 14)); + } + return _CPBrowserResizeControlBackgroundImage; +} +},["CPImage"])]); +} +{var the_class = objj_allocateClassPair(CPScrollView, "_CPBrowserScrollView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_resizeControl"), new objj_ivar("_browser")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_browser"), function $_CPBrowserScrollView___browser(self, _cmd) +{ with(self) +{ +return _browser; +} +},["id"]), +new objj_method(sel_getUid("_setBrowser:"), function $_CPBrowserScrollView___setBrowser_(self, _cmd, newValue) +{ with(self) +{ +_browser = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPBrowserScrollView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserScrollView").super_class }, "initWithFrame:", aFrame)) + { + _resizeControl = objj_msgSend(objj_msgSend(_CPBrowserResizeControl, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(self, "addSubview:", _resizeControl); + } + return self; +} +},["void","CGRect"]), new objj_method(sel_getUid("reflectScrolledClipView:"), function $_CPBrowserScrollView__reflectScrolledClipView_(self, _cmd, aClipView) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserScrollView").super_class }, "reflectScrolledClipView:", aClipView); + var frame = objj_msgSend(_verticalScroller, "frame"); + frame.size.height = CGRectGetHeight(objj_msgSend(self, "bounds")) - 14.0 - frame.origin.y; + objj_msgSend(_verticalScroller, "setFrameSize:", frame.size); + var resizeFrame = CGRectMake(CGRectGetMinX(frame), CGRectGetMaxY(frame), objj_msgSend(CPScroller, "scrollerWidth"), 14.0); + objj_msgSend(_resizeControl, "setFrame:", resizeFrame); +} +},["void","CPClipView"])]); +} +{var the_class = objj_allocateClassPair(CPTableView, "_CPBrowserTableView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_browser")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:browser:"), function $_CPBrowserTableView__initWithFrame_browser_(self, _cmd, aFrame, aBrowser) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "initWithFrame:", aFrame)) + _browser = aBrowser; + return self; +} +},["id","CGRect","CPBrowser"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $_CPBrowserTableView__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $_CPBrowserTableView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "mouseDown:", anEvent); + objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", _browser); +} +},["void","CPEvent"]), new objj_method(sel_getUid("browserView"), function $_CPBrowserTableView__browserView(self, _cmd) +{ with(self) +{ + return _browser; +} +},["CPView"]), new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"), function $_CPBrowserTableView__canDragRowsWithIndexes_atPoint_(self, _cmd, rowIndexes, mouseDownPoint) +{ with(self) +{ + return objj_msgSend(_browser, "canDragRowsWithIndexes:inColumn:withEvent:", rowIndexes, objj_msgSend(_browser, "columnOfTableView:", self), objj_msgSend(CPApp, "currentEvent")); +} +},["BOOL","CPIndexSet","CGPoint"]), new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"), function $_CPBrowserTableView__dragImageForRowsWithIndexes_tableColumns_event_offset_(self, _cmd, dragRows, theTableColumns, dragEvent, dragImageOffset) +{ with(self) +{ + return objj_msgSend(_browser, "draggingImageForRowsWithIndexes:inColumn:withEvent:offset:", dragRows, objj_msgSend(_browser, "columnOfTableView:", self), dragEvent, dragImageOffset) || + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "dragImageForRowsWithIndexes:tableColumns:event:offset:", dragRows, theTableColumns, dragEvent, dragImageOffset); +} +},["CPImage","CPIndexSet","CPArray","CPEvent","CPPointPointer"]), new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"), function $_CPBrowserTableView__dragViewForRowsWithIndexes_tableColumns_event_offset_(self, _cmd, dragRows, theTableColumns, dragEvent, dragViewOffset) +{ with(self) +{ + var count = theTableColumns.length; + while (count--) + { + if (objj_msgSend(theTableColumns[count], "identifier") === "Leaf") + objj_msgSend(theTableColumns, "removeObject:", theTableColumns[count]); + } + return objj_msgSend(_browser, "draggingViewForRowsWithIndexes:inColumn:withEvent:offset:", dragRows, objj_msgSend(_browser, "columnOfTableView:", self), dragEvent, dragViewOffset) || + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "dragViewForRowsWithIndexes:tableColumns:event:offset:", dragRows, theTableColumns, dragEvent, dragViewOffset); +} +},["CPView","CPIndexSet","CPArray","CPEvent","CPPoint"]), new objj_method(sel_getUid("moveUp:"), function $_CPBrowserTableView__moveUp_(self, _cmd, sender) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "moveUp:", sender); + objj_msgSend(_browser, "selectRow:inColumn:", objj_msgSend(self, "selectedRow"), objj_msgSend(_browser, "selectedColumn")); +} +},["void","id"]), new objj_method(sel_getUid("moveDown:"), function $_CPBrowserTableView__moveDown_(self, _cmd, sender) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "moveDown:", sender); + objj_msgSend(_browser, "selectRow:inColumn:", objj_msgSend(self, "selectedRow"), objj_msgSend(_browser, "selectedColumn")); +} +},["void","id"]), new objj_method(sel_getUid("moveLeft:"), function $_CPBrowserTableView__moveLeft_(self, _cmd, sender) +{ with(self) +{ + var previousColumn = objj_msgSend(_browser, "selectedColumn") - 1, + selectedRow = objj_msgSend(_browser, "selectedRowInColumn:", previousColumn); + objj_msgSend(_browser, "selectRow:inColumn:", selectedRow, previousColumn); +} +},["void","id"]), new objj_method(sel_getUid("moveRight:"), function $_CPBrowserTableView__moveRight_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(_browser, "selectRow:inColumn:", 0, objj_msgSend(_browser, "selectedColumn") + 1); +} +},["void","id"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPBrowserTableDelegate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_browser"), new objj_ivar("_index"), new objj_ivar("_delegate"), new objj_ivar("_item")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_browser"), function $_CPBrowserTableDelegate___browser(self, _cmd) +{ with(self) +{ +return _browser; +} +},["id"]), +new objj_method(sel_getUid("_setBrowser:"), function $_CPBrowserTableDelegate___setBrowser_(self, _cmd, newValue) +{ with(self) +{ +_browser = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("_index"), function $_CPBrowserTableDelegate___index(self, _cmd) +{ with(self) +{ +return _index; +} +},["id"]), +new objj_method(sel_getUid("_setIndex:"), function $_CPBrowserTableDelegate___setIndex_(self, _cmd, newValue) +{ with(self) +{ +_index = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("_delegate"), function $_CPBrowserTableDelegate___delegate(self, _cmd) +{ with(self) +{ +return _delegate; +} +},["id"]), +new objj_method(sel_getUid("_setDelegate:"), function $_CPBrowserTableDelegate___setDelegate_(self, _cmd, newValue) +{ with(self) +{ +_delegate = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("_item"), function $_CPBrowserTableDelegate___item(self, _cmd) +{ with(self) +{ +return _item; +} +},["id"]), +new objj_method(sel_getUid("_setItem:"), function $_CPBrowserTableDelegate___setItem_(self, _cmd, newValue) +{ with(self) +{ +_item = newValue; +} +},["void","id"]), new objj_method(sel_getUid("numberOfRowsInTableView:"), function $_CPBrowserTableDelegate__numberOfRowsInTableView_(self, _cmd, aTableView) +{ with(self) +{ + return objj_msgSend(_delegate, "browser:numberOfChildrenOfItem:", _browser, _item); +} +},["unsigned","CPTableView"]), new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"), function $_CPBrowserTableDelegate__tableView_objectValueForTableColumn_row_(self, _cmd, aTableView, column, row) +{ with(self) +{ + if (objj_msgSend(column, "identifier") === "Image") + return objj_msgSend(_delegate, "browser:imageValueForItem:", _browser, objj_msgSend(self, "childAtIndex:", row)); + else if (objj_msgSend(column, "identifier") === "Leaf") + return !objj_msgSend(_browser, "isLeafItem:", objj_msgSend(self, "childAtIndex:", row)); + else + return objj_msgSend(_delegate, "browser:objectValueForItem:", _browser, objj_msgSend(self, "childAtIndex:", row)); +} +},["void","CPTableView","CPTableColumn","unsigned"]), new objj_method(sel_getUid("_tableViewDoubleClicked:"), function $_CPBrowserTableDelegate___tableViewDoubleClicked_(self, _cmd, aTableView) +{ with(self) +{ + objj_msgSend(_browser, "doDoubleClick:", self); +} +},["void","CPTableView"]), new objj_method(sel_getUid("_tableViewClicked:"), function $_CPBrowserTableDelegate___tableViewClicked_(self, _cmd, aTableView) +{ with(self) +{ + var selectedIndexes = objj_msgSend(aTableView, "selectedRowIndexes"); + objj_msgSend(_browser, "_column:clickedRow:", _index, objj_msgSend(selectedIndexes, "count") === 1 ? objj_msgSend(selectedIndexes, "firstIndex") : -1); +} +},["void","CPTableView"]), new objj_method(sel_getUid("childAtIndex:"), function $_CPBrowserTableDelegate__childAtIndex_(self, _cmd, index) +{ with(self) +{ + return objj_msgSend(_delegate, "browser:child:ofItem:", _browser, index, _item); +} +},["id","unsigned"]), new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"), function $_CPBrowserTableDelegate__tableView_acceptDrop_row_dropOperation_(self, _cmd, aTableView, info, row, operation) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:acceptDrop:atRow:column:dropOperation:"))) + return objj_msgSend(_delegate, "browser:acceptDrop:atRow:column:dropOperation:", _browser, info, row, _index, operation); + else + return NO; +} +},["BOOL","CPTableView","id","int","CPTableViewDropOperation"]), new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"), function $_CPBrowserTableDelegate__tableView_validateDrop_proposedRow_proposedDropOperation_(self, _cmd, aTableView, info, row, operation) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:validateDrop:proposedRow:column:dropOperation:"))) + return objj_msgSend(_delegate, "browser:validateDrop:proposedRow:column:dropOperation:", _browser, info, row, _index, operation); + else + return CPDragOperationNone; +} +},["CPDragOperation","CPTableView","id","int","CPTableViewDropOperation"]), new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"), function $_CPBrowserTableDelegate__tableView_writeRowsWithIndexes_toPasteboard_(self, _cmd, aTableView, rowIndexes, pboard) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:"))) + return objj_msgSend(_delegate, "browser:writeRowsWithIndexes:inColumn:toPasteboard:", _browser, rowIndexes, _index, pboard); + else + return NO; +} +},["BOOL","CPTableView","CPIndexSet","CPPasteboard"]), new objj_method(sel_getUid("respondsToSelector:"), function $_CPBrowserTableDelegate__respondsToSelector_(self, _cmd, aSelector) +{ with(self) +{ + if (aSelector === sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")) + return objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")); + else + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableDelegate").super_class }, "respondsToSelector:", aSelector); +} +},["BOOL","SEL"])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPBrowserLeafView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isLeaf"), new objj_ivar("_branchImage"), new objj_ivar("_highlightedBranchImage")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isLeaf"), function $_CPBrowserLeafView__isLeaf(self, _cmd) +{ with(self) +{ +return _isLeaf; +} +},["id"]), +new objj_method(sel_getUid("branchImage"), function $_CPBrowserLeafView__branchImage(self, _cmd) +{ with(self) +{ +return _branchImage; +} +},["id"]), +new objj_method(sel_getUid("setBranchImage:"), function $_CPBrowserLeafView__setBranchImage_(self, _cmd, newValue) +{ with(self) +{ +_branchImage = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("highlightedBranchImage"), function $_CPBrowserLeafView__highlightedBranchImage(self, _cmd) +{ with(self) +{ +return _highlightedBranchImage; +} +},["id"]), +new objj_method(sel_getUid("setHighlightedBranchImage:"), function $_CPBrowserLeafView__setHighlightedBranchImage_(self, _cmd, newValue) +{ with(self) +{ +_highlightedBranchImage = newValue; +} +},["void","id"]), new objj_method(sel_getUid("objectValue"), function $_CPBrowserLeafView__objectValue(self, _cmd) +{ with(self) +{ + return _isLeaf; +} +},["BOOL"]), new objj_method(sel_getUid("setObjectValue:"), function $_CPBrowserLeafView__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + _isLeaf = !!aValue; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","id"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $_CPBrowserLeafView__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "image-view") + return CGRectInset(objj_msgSend(self, "bounds"), 1, 1); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserLeafView").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $_CPBrowserLeafView__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "image-view") + return objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserLeafView").super_class }, "createEphemeralSubviewNamed:", aName); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPBrowserLeafView__layoutSubviews(self, _cmd) +{ with(self) +{ + var imageView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "image-view", CPWindowAbove, nil); + var isHighlighted = objj_msgSend(self, "themeState") & CPThemeStateSelectedDataView; + objj_msgSend(imageView, "setImage:", _isLeaf ? (isHighlighted ? _highlightedBranchImage : _branchImage) : nil); + objj_msgSend(imageView, "setImageScaling:", CPScaleNone); +} +},["void"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPBrowserLeafView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserLeafView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeBool:forKey:", _isLeaf, "_CPBrowserLeafViewIsLeafKey"); + objj_msgSend(aCoder, "encodeObject:forKey:", _branchImage, "_CPBrowserLeafViewBranchImageKey"); + objj_msgSend(aCoder, "encodeObject:forKey:", _highlightedBranchImage, "_CPBrowserLeafViewHighlightedBranchImageKey"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPBrowserLeafView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserLeafView").super_class }, "initWithCoder:", aCoder)) + { + _isLeaf = objj_msgSend(aCoder, "decodeBoolForKey:", "_CPBrowserLeafViewIsLeafKey"); + _branchImage = objj_msgSend(aCoder, "decodeObjectForKey:", "_CPBrowserLeafViewBranchImageKey"); + _highlightedBranchImage = objj_msgSend(aCoder, "decodeObjectForKey:", "_CPBrowserLeafViewHighlightedBranchImageKey"); + } + return self; +} +},["void","CPCoder"])]); +} + +p;10;CPButton.jt;26108;@STATIC;1.0;i;21;_CPImageAndTextView.ji;12;CGGeometry.ji;11;CPControl.ji;17;CPStringDrawing.ji;12;CPCheckBox.ji;9;CPRadio.jt;25977;objj_executeFile("_CPImageAndTextView.j", YES); +objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPControl.j", YES); +objj_executeFile("CPStringDrawing.j", YES); +CPRoundedBezelStyle = 1; +CPRegularSquareBezelStyle = 2; +CPThickSquareBezelStyle = 3; +CPThickerSquareBezelStyle = 4; +CPDisclosureBezelStyle = 5; +CPShadowlessSquareBezelStyle = 6; +CPCircularBezelStyle = 7; +CPTexturedSquareBezelStyle = 8; +CPHelpButtonBezelStyle = 9; +CPSmallSquareBezelStyle = 10; +CPTexturedRoundedBezelStyle = 11; +CPRoundRectBezelStyle = 12; +CPRecessedBezelStyle = 13; +CPRoundedDisclosureBezelStyle = 14; +CPHUDBezelStyle = -1; +CPMomentaryLightButton = 0; +CPPushOnPushOffButton = 1; +CPToggleButton = 2; +CPSwitchButton = 3; +CPRadioButton = 4; +CPMomentaryChangeButton = 5; +CPOnOffButton = 6; +CPMomentaryPushInButton = 7; +CPMomentaryPushButton = 0; +CPMomentaryLight = 7; +CPNoButtonMask = 0; +CPContentsButtonMask = 1; +CPPushInButtonMask = 2; +CPGrayButtonMask = 4; +CPBackgroundButtonMask = 8; +CPNoCellMask = CPNoButtonMask; +CPContentsCellMask = CPContentsButtonMask; +CPPushInCellMask = CPPushInButtonMask; +CPChangeGrayCellMask = CPGrayButtonMask; +CPChangeBackgroundCellMask = CPBackgroundButtonMask; +CPButtonStateMixed = CPThemeState("mixed"); +CPButtonDefaultHeight = 24.0; +CPButtonImageOffset = 3.0; +{var the_class = objj_allocateClassPair(CPControl, "CPButton"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_allowsMixedState"), new objj_ivar("_title"), new objj_ivar("_alternateTitle"), new objj_ivar("_showsStateBy"), new objj_ivar("_highlightsBy"), new objj_ivar("_imageDimsWhenDisabled"), new objj_ivar("_bezelStyle"), new objj_ivar("_controlSize"), new objj_ivar("_keyEquivalent"), new objj_ivar("_keyEquivalentModifierMask")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPButton__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "initWithFrame:", aFrame); + if (self) + { + objj_msgSend(self, "setValue:forThemeAttribute:", CPCenterTextAlignment, "alignment"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPCenterVerticalTextAlignment, "vertical-alignment"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPImageLeft, "image-position"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPScaleNone, "image-scaling"); + _controlSize = CPRegularControlSize; + _keyEquivalent = ""; + _keyEquivalentModifierMask = 0; + objj_msgSend(self, "setBordered:", YES); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("allowsMixedState"), function $CPButton__allowsMixedState(self, _cmd) +{ with(self) +{ + return _allowsMixedState; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsMixedState:"), function $CPButton__setAllowsMixedState_(self, _cmd, aFlag) +{ with(self) +{ + aFlag = !!aFlag; + if (_allowsMixedState === aFlag) + return; + _allowsMixedState = aFlag; + if (!_allowsMixedState && objj_msgSend(self, "state") === CPMixedState) + objj_msgSend(self, "setState:", CPOnState); +} +},["void","BOOL"]), new objj_method(sel_getUid("setObjectValue:"), function $CPButton__setObjectValue_(self, _cmd, anObjectValue) +{ with(self) +{ + if (!anObjectValue || anObjectValue === "" || (objj_msgSend(anObjectValue, "intValue") === 0)) + anObjectValue = CPOffState; + else if (!objj_msgSend(anObjectValue, "isKindOfClass:", objj_msgSend(CPNumber, "class"))) + anObjectValue = CPOnState; + else if (anObjectValue > CPOnState) + anObjectValue = CPOnState + else if (anObjectValue < CPOffState) + if (objj_msgSend(self, "allowsMixedState")) + anObjectValue = CPMixedState; + else + anObjectValue = CPOnState; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "setObjectValue:", anObjectValue); + switch (objj_msgSend(self, "objectValue")) + { + case CPMixedState: objj_msgSend(self, "unsetThemeState:", CPThemeStateSelected); + objj_msgSend(self, "setThemeState:", CPButtonStateMixed); + break; + case CPOnState: objj_msgSend(self, "unsetThemeState:", CPButtonStateMixed); + objj_msgSend(self, "setThemeState:", CPThemeStateSelected); + break; + case CPOffState: objj_msgSend(self, "unsetThemeState:", CPThemeStateSelected | CPButtonStateMixed); + } +} +},["void","id"]), new objj_method(sel_getUid("nextState"), function $CPButton__nextState(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "allowsMixedState")) + { + var value = objj_msgSend(self, "state"); + return value - ((value === -1) ? -2 : 1); + } + return 1 - objj_msgSend(self, "state"); +} +},["CPInteger"]), new objj_method(sel_getUid("setNextState"), function $CPButton__setNextState(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setState:", objj_msgSend(self, "nextState")); +} +},["void"]), new objj_method(sel_getUid("setState:"), function $CPButton__setState_(self, _cmd, aState) +{ with(self) +{ + objj_msgSend(self, "setIntValue:", aState); +} +},["void","CPInteger"]), new objj_method(sel_getUid("state"), function $CPButton__state(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "intValue"); +} +},["CPInteger"]), new objj_method(sel_getUid("setTitle:"), function $CPButton__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + if (_title === aTitle) + return; + _title = aTitle; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPString"]), new objj_method(sel_getUid("title"), function $CPButton__title(self, _cmd) +{ with(self) +{ + return _title; +} +},["CPString"]), new objj_method(sel_getUid("setAlternateTitle:"), function $CPButton__setAlternateTitle_(self, _cmd, aTitle) +{ with(self) +{ + if (_alternateTitle === aTitle) + return; + _alternateTitle = aTitle; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPString"]), new objj_method(sel_getUid("alternateTitle"), function $CPButton__alternateTitle(self, _cmd) +{ with(self) +{ + return _alternateTitle; +} +},["CPString"]), new objj_method(sel_getUid("setImage:"), function $CPButton__setImage_(self, _cmd, anImage) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", anImage, "image"); +} +},["void","CPImage"]), new objj_method(sel_getUid("image"), function $CPButton__image(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "valueForThemeAttribute:inState:", "image", CPThemeStateNormal); +} +},["CPImage"]), new objj_method(sel_getUid("setAlternateImage:"), function $CPButton__setAlternateImage_(self, _cmd, anImage) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:inState:", anImage, "image", CPThemeStateHighlighted); +} +},["void","CPImage"]), new objj_method(sel_getUid("alternateImage"), function $CPButton__alternateImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "valueForThemeAttribute:inState:", "image", CPThemeStateHighlighted); +} +},["CPImage"]), new objj_method(sel_getUid("setImageOffset:"), function $CPButton__setImageOffset_(self, _cmd, theImageOffset) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", theImageOffset, "image-offset"); +} +},["void","float"]), new objj_method(sel_getUid("imageOffset"), function $CPButton__imageOffset(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "valueForThemeAttribute:", "image-offset"); +} +},["float"]), new objj_method(sel_getUid("setShowsStateBy:"), function $CPButton__setShowsStateBy_(self, _cmd, aMask) +{ with(self) +{ + if (_showsStateBy === aMask) + return; + _showsStateBy = aMask; + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("showsStateBy"), function $CPButton__showsStateBy(self, _cmd) +{ with(self) +{ + return _showsStateBy; +} +},["CPInteger"]), new objj_method(sel_getUid("setHighlightsBy:"), function $CPButton__setHighlightsBy_(self, _cmd, aMask) +{ with(self) +{ + if (_highlightsBy === aMask) + return; + _highlightsBy = aMask; + if (objj_msgSend(self, "hasThemeState:", CPThemeStateHighlighted)) + { + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); + } +} +},["void","CPInteger"]), new objj_method(sel_getUid("setButtonType:"), function $CPButton__setButtonType_(self, _cmd, aButtonType) +{ with(self) +{ + switch (aButtonType) + { + case CPMomentaryLightButton: objj_msgSend(self, "setHighlightsBy:", CPChangeBackgroundCellMask); + objj_msgSend(self, "setShowsStateBy:", CPNoCellMask); + break; + case CPMomentaryPushInButton: objj_msgSend(self, "setHighlightsBy:", CPPushInCellMask | CPChangeGrayCellMask); + objj_msgSend(self, "setShowsStateBy:", CPNoCellMask); + break; + case CPMomentaryChangeButton: objj_msgSend(self, "setHighlightsBy:", CPContentsCellMask); + objj_msgSend(self, "setShowsStateBy:", CPNoCellMask); + break; + case CPPushOnPushOffButton: objj_msgSend(self, "setHighlightsBy:", CPPushInCellMask | CPChangeGrayCellMask); + objj_msgSend(self, "setShowsStateBy:", CPChangeBackgroundCellMask); + break; + case CPOnOffButton: objj_msgSend(self, "setHighlightsBy:", CPChangeBackgroundCellMask); + objj_msgSend(self, "setShowsStateBy:", CPChangeBackgroundCellMask); + break; + case CPToggleButton: objj_msgSend(self, "setHighlightsBy:", CPPushInCellMask | CPContentsCellMask); + objj_msgSend(self, "setShowsStateBy:", CPContentsCellMask); + break; + case CPSwitchButton: objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The CPSwitchButton type is not supported in Cappuccino, use the CPCheckBox class instead."); + case CPRadioButton: objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The CPRadioButton type is not supported in Cappuccino, use the CPRadio class instead."); + default: objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Unknown button type."); + } + objj_msgSend(self, "setImageDimsWhenDisabled:", YES); +} +},["void","CPButtonType"]), new objj_method(sel_getUid("setImageDimsWhenDisabled:"), function $CPButton__setImageDimsWhenDisabled_(self, _cmd, imageShouldDimWhenDisabled) +{ with(self) +{ + imageShouldDimWhenDisabled = !!imageShouldDimWhenDisabled; + if (_imageDimsWhenDisabled === imageShouldDimWhenDisabled) + return; + _imageDimsWhenDisabled = imageShouldDimWhenDisabled; + if (objj_msgSend(self, "hasThemeState:", CPThemeStateDisabled)) + { + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("imageDimsWhenDisabled"), function $CPButton__imageDimsWhenDisabled(self, _cmd) +{ with(self) +{ + return _imageDimsWhenDisabled; +} +},["BOOL"]), new objj_method(sel_getUid("startTrackingAt:"), function $CPButton__startTrackingAt_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSend(self, "highlight:", YES); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "startTrackingAt:", aPoint); +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"), function $CPButton__stopTracking_at_mouseIsUp_(self, _cmd, lastPoint, aPoint, mouseIsUp) +{ with(self) +{ + objj_msgSend(self, "highlight:", NO); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "stopTracking:at:mouseIsUp:", lastPoint, aPoint, mouseIsUp); + if (mouseIsUp && CGRectContainsPoint(objj_msgSend(self, "bounds"), aPoint)) + objj_msgSend(self, "setNextState"); +} +},["void","CGPoint","CGPoint","BOOL"]), new objj_method(sel_getUid("contentRectForBounds:"), function $CPButton__contentRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"); + if (((contentInset).top === 0 && (contentInset).right === 0 && (contentInset).bottom === 0 && (contentInset).left === 0)) + return bounds; + bounds.origin.x += contentInset.left; + bounds.origin.y += contentInset.top; + bounds.size.width -= contentInset.left + contentInset.right; + bounds.size.height -= contentInset.top + contentInset.bottom; + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("bezelRectForBounds:"), function $CPButton__bezelRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + if (!objj_msgSend(self, "isBordered")) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"); + if (((bezelInset).top === 0 && (bezelInset).right === 0 && (bezelInset).bottom === 0 && (bezelInset).left === 0)) + return bounds; + bounds.origin.x += bezelInset.left; + bounds.origin.y += bezelInset.top; + bounds.size.width -= bezelInset.left + bezelInset.right; + bounds.size.height -= bezelInset.top + bezelInset.bottom; + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("sizeToFit"), function $CPButton__sizeToFit(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "layoutSubviews"); + var size, + contentView = objj_msgSend(self, "ephemeralSubviewNamed:", "content-view"); + if (contentView) + { + objj_msgSend(contentView, "sizeToFit"); + size = objj_msgSend(contentView, "frameSize"); + } + else + size = objj_msgSend((objj_msgSend(self, "title") || " "), "sizeWithFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "font")); + var contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + minSize = objj_msgSend(self, "currentValueForThemeAttribute:", "min-size"), + maxSize = objj_msgSend(self, "currentValueForThemeAttribute:", "max-size"); + size.width = MAX(size.width + contentInset.left + contentInset.right, minSize.width); + size.height = MAX(size.height + contentInset.top + contentInset.bottom, minSize.height); + if (maxSize.width >= 0.0) + size.width = MIN(size.width, maxSize.width); + if (maxSize.height >= 0.0) + size.height = MIN(size.height, maxSize.height); + objj_msgSend(self, "setFrameSize:", size); +} +},["void"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPButton__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "bezel-view") + return objj_msgSend(self, "bezelRectForBounds:", objj_msgSend(self, "bounds")); + else if (aName === "content-view") + return objj_msgSend(self, "contentRectForBounds:", objj_msgSend(self, "bounds")); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPButton__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "bezel-view") + { + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; + } + else + return objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPButton__layoutSubviews(self, _cmd) +{ with(self) +{ + var bezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "bezel-view", CPWindowBelow, "content-view"); + objj_msgSend(bezelView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-color")); + var contentView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "content-view", CPWindowAbove, "bezel-view"); + if (contentView) + { + objj_msgSend(contentView, "setText:", (objj_msgSend(self, "hasThemeState:", CPThemeStateHighlighted) && _alternateTitle) ? _alternateTitle : _title); + objj_msgSend(contentView, "setImage:", objj_msgSend(self, "currentValueForThemeAttribute:", "image")); + objj_msgSend(contentView, "setImageOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "image-offset")); + objj_msgSend(contentView, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "font")); + objj_msgSend(contentView, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-color")); + objj_msgSend(contentView, "setAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "alignment")); + objj_msgSend(contentView, "setVerticalAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "vertical-alignment")); + objj_msgSend(contentView, "setLineBreakMode:", objj_msgSend(self, "currentValueForThemeAttribute:", "line-break-mode")); + objj_msgSend(contentView, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-color")); + objj_msgSend(contentView, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-offset")); + objj_msgSend(contentView, "setImagePosition:", objj_msgSend(self, "currentValueForThemeAttribute:", "image-position")); + objj_msgSend(contentView, "setImageScaling:", objj_msgSend(self, "currentValueForThemeAttribute:", "image-scaling")); + objj_msgSend(contentView, "setDimsImage:", objj_msgSend(self, "hasThemeState:", CPThemeStateDisabled) && _imageDimsWhenDisabled); + } +} +},["void"]), new objj_method(sel_getUid("setBordered:"), function $CPButton__setBordered_(self, _cmd, shouldBeBordered) +{ with(self) +{ + if (shouldBeBordered) + objj_msgSend(self, "setThemeState:", CPThemeStateBordered); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateBordered); +} +},["void","BOOL"]), new objj_method(sel_getUid("isBordered"), function $CPButton__isBordered(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateBordered); +} +},["BOOL"]), new objj_method(sel_getUid("setKeyEquivalent:"), function $CPButton__setKeyEquivalent_(self, _cmd, aString) +{ with(self) +{ + _keyEquivalent = aString || ""; + if (aString === CPNewlineCharacter || aString === CPCarriageReturnCharacter) + objj_msgSend(self, "setThemeState:", CPThemeStateDefault); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateDefault); +} +},["void","CPString"]), new objj_method(sel_getUid("viewWillMoveToWindow:"), function $CPButton__viewWillMoveToWindow_(self, _cmd, aWindow) +{ with(self) +{ + var selfWindow = objj_msgSend(self, "window"); + if (selfWindow === aWindow || aWindow === nil) + return; + if (objj_msgSend(selfWindow, "defaultButton") === self) + objj_msgSend(selfWindow, "setDefaultButton:", nil); + if (objj_msgSend(self, "keyEquivalent") === CPNewlineCharacter || objj_msgSend(self, "keyEquivalent") === CPCarriageReturnCharacter) + objj_msgSend(aWindow, "setDefaultButton:", self); +} +},["void","CPWindow"]), new objj_method(sel_getUid("keyEquivalent"), function $CPButton__keyEquivalent(self, _cmd) +{ with(self) +{ + return _keyEquivalent; +} +},["CPString"]), new objj_method(sel_getUid("setKeyEquivalentModifierMask:"), function $CPButton__setKeyEquivalentModifierMask_(self, _cmd, aMask) +{ with(self) +{ + _keyEquivalentModifierMask = aMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("keyEquivalentModifierMask"), function $CPButton__keyEquivalentModifierMask(self, _cmd) +{ with(self) +{ + return _keyEquivalentModifierMask; +} +},["unsigned"]), new objj_method(sel_getUid("performKeyEquivalent:"), function $CPButton__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "window"), "defaultButton") === self) + return NO; + if (!objj_msgSend(anEvent, "_triggersKeyEquivalent:withModifierMask:", objj_msgSend(self, "keyEquivalent"), objj_msgSend(self, "keyEquivalentModifierMask"))) + return NO; + objj_msgSend(self, "performClick:", nil); + return YES; +} +},["BOOL","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("buttonWithTitle:"), function $CPButton__buttonWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:theme:", aTitle, objj_msgSend(CPTheme, "defaultTheme")); +} +},["id","CPString"]), new objj_method(sel_getUid("buttonWithTitle:theme:"), function $CPButton__buttonWithTitle_theme_(self, _cmd, aTitle, aTheme) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(self, "alloc"), "init"); + objj_msgSend(button, "setTheme:", aTheme); + objj_msgSend(button, "setTitle:", aTitle); + objj_msgSend(button, "sizeToFit"); + return button; +} +},["id","CPString","CPTheme"]), new objj_method(sel_getUid("themeClass"), function $CPButton__themeClass(self, _cmd) +{ with(self) +{ + return "button"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPButton__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), 0.0, { top:(0), right:(0), bottom:(0), left:(0) }, { top:(0), right:(0), bottom:(0), left:(0) }, objj_msgSend(CPNull, "null")], ["image", "image-offset", "bezel-inset", "content-inset", "bezel-color"]); +} +},["id"])]); +} +{ +var the_class = objj_getClass("CPButton") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setBezelStyle:"), function $CPButton__setBezelStyle_(self, _cmd, aBezelStyle) +{ with(self) +{ +} +},["void","unsigned"]), new objj_method(sel_getUid("bezelStyle"), function $CPButton__bezelStyle(self, _cmd) +{ with(self) +{ +} +},["unsigned"])]); +} +var CPButtonImageKey = "CPButtonImageKey", + CPButtonAlternateImageKey = "CPButtonAlternateImageKey", + CPButtonTitleKey = "CPButtonTitleKey", + CPButtonAlternateTitleKey = "CPButtonAlternateTitleKey", + CPButtonIsBorderedKey = "CPButtonIsBorderedKey", + CPButtonAllowsMixedStateKey = "CPButtonAllowsMixedStateKey", + CPButtonImageDimsWhenDisabledKey = "CPButtonImageDimsWhenDisabledKey", + CPButtonImagePositionKey = "CPButtonImagePositionKey", + CPButtonKeyEquivalentKey = "CPButtonKeyEquivalentKey", + CPButtonKeyEquivalentMaskKey = "CPButtonKeyEquivalentMaskKey"; +{ +var the_class = objj_getClass("CPButton") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPButton__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "initWithCoder:", aCoder); + if (self) + { + _controlSize = CPRegularControlSize; + _title = objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonTitleKey); + _alternateTitle = objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonAlternateTitleKey); + if (objj_msgSend(aCoder, "containsValueForKey:", CPButtonAllowsMixedStateKey)) + _allowsMixedState = objj_msgSend(aCoder, "decodeBoolForKey:", CPButtonAllowsMixedStateKey); + objj_msgSend(self, "setImageDimsWhenDisabled:", objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonImageDimsWhenDisabledKey)); + if (objj_msgSend(aCoder, "containsValueForKey:", CPButtonImagePositionKey)) + objj_msgSend(self, "setImagePosition:", objj_msgSend(aCoder, "decodeIntForKey:", CPButtonImagePositionKey)); + if (objj_msgSend(aCoder, "containsValueForKey:", CPButtonKeyEquivalentKey)) + objj_msgSend(self, "setKeyEquivalent:", CFData.decodeBase64ToUtf16String(objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonKeyEquivalentKey))); + _keyEquivalentModifierMask = objj_msgSend(aCoder, "decodeIntForKey:", CPButtonKeyEquivalentMaskKey); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPButton__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _title, CPButtonTitleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _alternateTitle, CPButtonAlternateTitleKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsMixedState, CPButtonAllowsMixedStateKey); + objj_msgSend(aCoder, "encodeBool:forKey:", objj_msgSend(self, "imageDimsWhenDisabled"), CPButtonImageDimsWhenDisabledKey); + objj_msgSend(aCoder, "encodeInt:forKey:", objj_msgSend(self, "imagePosition"), CPButtonImagePositionKey); + if (_keyEquivalent) + objj_msgSend(aCoder, "encodeObject:forKey:", CFData.encodeBase64Utf16String(_keyEquivalent), CPButtonKeyEquivalentKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _keyEquivalentModifierMask, CPButtonKeyEquivalentMaskKey); +} +},["void","CPCoder"])]); +} +objj_executeFile("CPCheckBox.j", YES); +objj_executeFile("CPRadio.j", YES); + +p;13;CPButtonBar.jt;13496;@STATIC;1.0;I;15;AppKit/CPView.jt;13456; + + +objj_executeFile("AppKit/CPView.j", NO); + + + + +{var the_class = objj_allocateClassPair(CPView, "CPButtonBar"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_hasResizeControl"), new objj_ivar("_resizeControlIsLeftAligned"), new objj_ivar("_buttons")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPButtonBar__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "initWithFrame:", aFrame); + + if (self) + { + _buttons = []; + objj_msgSend(self, "setNeedsLayout"); + } + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("awakeFromCib"), function $CPButtonBar__awakeFromCib(self, _cmd) +{ with(self) +{ + var view = objj_msgSend(self, "superview"), + subview = self; + + while (view) + { + if (objj_msgSend(view, "isKindOfClass:", objj_msgSend(CPSplitView, "class"))) + { + var viewIndex = objj_msgSend(objj_msgSend(view, "subviews"), "indexOfObject:", subview); + objj_msgSend(view, "setButtonBar:forDividerAtIndex:", self, viewIndex); + + break; + } + + subview = view; + view = objj_msgSend(view, "superview"); + } +} +},["void"]), new objj_method(sel_getUid("setButtons:"), function $CPButtonBar__setButtons_(self, _cmd, buttons) +{ with(self) +{ + _buttons = objj_msgSend(CPArray, "arrayWithArray:", buttons); + + for (var i = 0, count = objj_msgSend(_buttons, "count"); i < count; i++) + objj_msgSend(_buttons[i], "setBordered:", YES); + + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPArray"]), new objj_method(sel_getUid("buttons"), function $CPButtonBar__buttons(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPArray, "arrayWithArray:", _buttons); +} +},["CPArray"]), new objj_method(sel_getUid("setHasResizeControl:"), function $CPButtonBar__setHasResizeControl_(self, _cmd, shouldHaveResizeControl) +{ with(self) +{ + if (_hasResizeControl === shouldHaveResizeControl) + return; + + _hasResizeControl = !!shouldHaveResizeControl; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","BOOL"]), new objj_method(sel_getUid("hasResizeControl"), function $CPButtonBar__hasResizeControl(self, _cmd) +{ with(self) +{ + return _hasResizeControl; +} +},["BOOL"]), new objj_method(sel_getUid("setResizeControlIsLeftAligned:"), function $CPButtonBar__setResizeControlIsLeftAligned_(self, _cmd, shouldBeLeftAligned) +{ with(self) +{ + if (_resizeControlIsLeftAligned === shouldBeLeftAligned) + return; + + _resizeControlIsLeftAligned = !!shouldBeLeftAligned; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","BOOL"]), new objj_method(sel_getUid("resizeControlIsLeftAligned"), function $CPButtonBar__resizeControlIsLeftAligned(self, _cmd) +{ with(self) +{ + return _resizeControlIsLeftAligned; +} +},["BOOL"]), new objj_method(sel_getUid("resizeControlFrame"), function $CPButtonBar__resizeControlFrame(self, _cmd) +{ with(self) +{ + var inset = objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-inset"), + size = objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-size"), + currentSize = objj_msgSend(self, "bounds"), + leftOrigin = _resizeControlIsLeftAligned ? 0 : currentSize.size.width - size.width - inset.right - inset.left; + + return CGRectMake(leftOrigin, 0, size.width + inset.left + inset.right, size.height + inset.top + inset.bottom); +} +},["CGRect"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPButtonBar__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "resize-control-view") + { + var inset = objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-inset"), + size = objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-size"), + currentSize = objj_msgSend(self, "bounds"); + + if (_resizeControlIsLeftAligned) + return CGRectMake(inset.left, inset.top, size.width, size.height); + else + return CGRectMake(currentSize.size.width - size.width - inset.right, inset.top, size.width, size.height); + } + + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPButtonBar__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "resize-control-view") + return objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero()); + + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "createEphemeralSubviewNamed:", aName); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPButtonBar__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-color")); + + var normalColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "button-bezel-color", CPThemeStateNormal), + highlightedColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "button-bezel-color", CPThemeStateHighlighted), + disabledColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "button-bezel-color", CPThemeStateDisabled), + textColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "button-text-color", CPThemeStateNormal); + + var buttonsNotHidden = objj_msgSend(CPArray, "arrayWithArray:", _buttons), + count = objj_msgSend(buttonsNotHidden, "count"); + + while (count--) + if (objj_msgSend(buttonsNotHidden[count], "isHidden")) + objj_msgSend(buttonsNotHidden, "removeObject:", buttonsNotHidden[count]); + + var currentButtonOffset = _resizeControlIsLeftAligned ? CGRectGetMaxX(objj_msgSend(self, "bounds")) + 1 : -1, + bounds = objj_msgSend(self, "bounds"), + height = CGRectGetHeight(bounds) - 1, + frameWidth = CGRectGetWidth(bounds), + resizeRect = _hasResizeControl ? objj_msgSend(self, "rectForEphemeralSubviewNamed:", "resize-control-view") : CGRectMakeZero(), + resizeWidth = CGRectGetWidth(resizeRect), + availableWidth = frameWidth - resizeWidth - 1; + + for (var i = 0, count = objj_msgSend(buttonsNotHidden, "count"); i < count; i++) + { + var button = buttonsNotHidden[i], + width = CGRectGetWidth(objj_msgSend(button, "frame")); + + if (availableWidth > width) + availableWidth -=width; + else + break; + + if (_resizeControlIsLeftAligned) + { + objj_msgSend(button, "setFrame:", CGRectMake(currentButtonOffset - width, 1, width, height)); + currentButtonOffset -= width - 1; + } + else + { + objj_msgSend(button, "setFrame:", CGRectMake(currentButtonOffset, 1, width, height)); + currentButtonOffset += width - 1; + } + + objj_msgSend(button, "setValue:forThemeAttribute:inState:", normalColor, "bezel-color", CPThemeStateNormal|CPThemeStateBordered); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", highlightedColor, "bezel-color", CPThemeStateHighlighted|CPThemeStateBordered); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", disabledColor, "bezel-color", CPThemeStateDisabled|CPThemeStateBordered); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", textColor, "text-color", CPThemeStateBordered); + + + objj_msgSend(button, "setValue:forThemeAttribute:inState:", normalColor, "bezel-color", CPThemeStateNormal|CPThemeStateBordered|CPPopUpButtonStatePullsDown); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", highlightedColor, "bezel-color", CPThemeStateHighlighted|CPThemeStateBordered|CPPopUpButtonStatePullsDown); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", disabledColor, "bezel-color", CPThemeStateDisabled|CPThemeStateBordered|CPPopUpButtonStatePullsDown); + + objj_msgSend(self, "addSubview:", button); + } + + if (_hasResizeControl) + { + var resizeControlView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "resize-control-view", CPWindowAbove, nil); + + objj_msgSend(resizeControlView, "setAutoresizingMask:", _resizeControlIsLeftAligned ? CPViewMaxXMargin : CPViewMinXMargin); + objj_msgSend(resizeControlView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-color")); + } +} +},["void"]), new objj_method(sel_getUid("setFrameSize:"), function $CPButtonBar__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CGSize"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("plusButton"), function $CPButtonBar__plusButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(0, 0, 35, 25)), + image = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPButtonBar, "class")), "pathForResource:", "plus_button.png"), CGSizeMake(11, 12)); + + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setImage:", image); + objj_msgSend(button, "setImagePosition:", CPImageOnly); + + return button; +} +},["id"]), new objj_method(sel_getUid("minusButton"), function $CPButtonBar__minusButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(0, 0, 35, 25)), + image = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPButtonBar, "class")), "pathForResource:", "minus_button.png"), CGSizeMake(11, 4)); + + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setImage:", image); + objj_msgSend(button, "setImagePosition:", CPImageOnly); + + return button; +} +},["id"]), new objj_method(sel_getUid("actionPopupButton"), function $CPButtonBar__actionPopupButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(CPPopUpButton, "alloc"), "initWithFrame:", CGRectMake(0, 0, 35, 25)), + image = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPButtonBar, "class")), "pathForResource:", "action_button.png"), CGSizeMake(22, 14)); + + objj_msgSend(button, "addItemWithTitle:", nil); + objj_msgSend(objj_msgSend(button, "lastItem"), "setImage:", image); + objj_msgSend(button, "setImagePosition:", CPImageOnly); + objj_msgSend(button, "setValue:forThemeAttribute:", CGInsetMake(0, 0, 0, 0), "content-inset"); + + objj_msgSend(button, "setPullsDown:", YES); + + return button; +} +},["id"]), new objj_method(sel_getUid("themeClass"), function $CPButtonBar__themeClass(self, _cmd) +{ with(self) +{ + return "button-bar"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPButtonBar__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [CGInsetMake(0.0, 0.0, 0.0, 0.0), CGSizeMakeZero(), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null")], ["resize-control-inset", "resize-control-size", "resize-control-color", "bezel-color", "button-bezel-color", "button-text-color"]); +} +},["id"])]); +} + +var CPButtonBarHasResizeControlKey = "CPButtonBarHasResizeControlKey", + CPButtonBarResizeControlIsLeftAlignedKey = "CPButtonBarResizeControlIsLeftAlignedKey", + CPButtonBarButtonsKey = "CPButtonBarButtonsKey"; + +{ +var the_class = objj_getClass("CPButtonBar") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPButtonBar\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("encodeWithCoder:"), function $CPButtonBar__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "encodeWithCoder:", aCoder); + + objj_msgSend(aCoder, "encodeBool:forKey:", _hasResizeControl, CPButtonBarHasResizeControlKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _resizeControlIsLeftAligned, CPButtonBarResizeControlIsLeftAlignedKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _buttons, CPButtonBarButtonsKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("initWithCoder:"), function $CPButtonBar__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "initWithCoder:", aCoder)) + { + _buttons = objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonBarButtonsKey) || []; + _hasResizeControl = objj_msgSend(aCoder, "decodeBoolForKey:", CPButtonBarHasResizeControlKey); + _resizeControlIsLeftAligned = objj_msgSend(aCoder, "decodeBoolForKey:", CPButtonBarResizeControlIsLeftAlignedKey); + } + + return self; +} +},["id","CPCoder"])]); +} + +p;12;CPCheckBox.jt;2509;@STATIC;1.0;i;10;CPButton.jt;2475;objj_executeFile("CPButton.j", YES); +CPCheckBoxImageOffset = 4.0; +{var the_class = objj_allocateClassPair(CPButton, "CPCheckBox"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPCheckBox__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCheckBox").super_class }, "initWithFrame:", aFrame); + if (self) + { + objj_msgSend(self, "setHighlightsBy:", CPContentsCellMask); + objj_msgSend(self, "setShowsStateBy:", CPContentsCellMask); + objj_msgSend(self, "setImagePosition:", CPImageLeft); + objj_msgSend(self, "setAlignment:", CPLeftTextAlignment); + objj_msgSend(self, "setBordered:", NO); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("takeStateFromKeyPath:ofObjects:"), function $CPCheckBox__takeStateFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + var count = objects.length, + value = objj_msgSend(objects[0], "valueForKeyPath:", aKeyPath) ? CPOnState : CPOffState; + objj_msgSend(self, "setAllowsMixedState:", NO); + objj_msgSend(self, "setState:", value); + while (count-- > 1) + { + if (value !== (objj_msgSend(objects[count], "valueForKeyPath:", aKeyPath) ? CPOnState : CPOffState)) + { + objj_msgSend(self, "setAllowsMixedState:", YES); + objj_msgSend(self, "setState:", CPMixedState); + } + } +} +},["void","CPString","CPArray"]), new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"), function $CPCheckBox__takeValueFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + objj_msgSend(self, "takeStateFromKeyPath:ofObjects:", aKeyPath, objects); +} +},["void","CPString","CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("checkBoxWithTitle:theme:"), function $CPCheckBox__checkBoxWithTitle_theme_(self, _cmd, aTitle, aTheme) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:theme:", aTitle, aTheme); +} +},["id","CPString","CPTheme"]), new objj_method(sel_getUid("checkBoxWithTitle:"), function $CPCheckBox__checkBoxWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:", aTitle); +} +},["id","CPString"]), new objj_method(sel_getUid("themeClass"), function $CPCheckBox__themeClass(self, _cmd) +{ with(self) +{ + return "check-box"; +} +},["CPString"])]); +} + +p;12;CPClipView.jt;7063;@STATIC;1.0;i;8;CPView.jt;7032;objj_executeFile("CPView.j", YES); +{var the_class = objj_allocateClassPair(CPView, "CPClipView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_documentView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setDocumentView:"), function $CPClipView__setDocumentView_(self, _cmd, aView) +{ with(self) +{ + if (_documentView == aView) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_documentView) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPViewFrameDidChangeNotification, _documentView); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPViewBoundsDidChangeNotification, _documentView); + objj_msgSend(_documentView, "removeFromSuperview"); + } + _documentView = aView; + if (_documentView) + { + objj_msgSend(self, "addSubview:", _documentView); + objj_msgSend(_documentView, "setPostsFrameChangedNotifications:", YES); + objj_msgSend(_documentView, "setPostsBoundsChangedNotifications:", YES); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("viewFrameChanged:"), CPViewFrameDidChangeNotification, _documentView); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("viewBoundsChanged:"), CPViewBoundsDidChangeNotification, _documentView); + } +} +},["void","CPView"]), new objj_method(sel_getUid("documentView"), function $CPClipView__documentView(self, _cmd) +{ with(self) +{ + return _documentView; +} +},["id"]), new objj_method(sel_getUid("constrainScrollPoint:"), function $CPClipView__constrainScrollPoint_(self, _cmd, aPoint) +{ with(self) +{ + if (!_documentView) + return { x:0.0, y:0.0 }; + var documentFrame = objj_msgSend(_documentView, "frame"); + aPoint.x = MAX(0.0, MIN(aPoint.x, MAX((documentFrame.size.width) - (_bounds.size.width), 0.0))); + aPoint.y = MAX(0.0, MIN(aPoint.y, MAX((documentFrame.size.height) - (_bounds.size.height), 0.0))); + return aPoint; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("setBoundsOrigin:"), function $CPClipView__setBoundsOrigin_(self, _cmd, aPoint) +{ with(self) +{ + if ((_bounds.origin.x == aPoint.x && _bounds.origin.y == aPoint.y)) + return; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPClipView").super_class }, "setBoundsOrigin:", aPoint); + var superview = objj_msgSend(self, "superview"), + scrollViewClass = objj_getClass("CPScrollView"); + if(objj_msgSend(superview, "isKindOfClass:", scrollViewClass)) + objj_msgSend(superview, "reflectScrolledClipView:", self); +} +},["void","CGPoint"]), new objj_method(sel_getUid("scrollToPoint:"), function $CPClipView__scrollToPoint_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSend(self, "setBoundsOrigin:", objj_msgSend(self, "constrainScrollPoint:", aPoint)); +} +},["void","CGPoint"]), new objj_method(sel_getUid("viewBoundsChanged:"), function $CPClipView__viewBoundsChanged_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "_constrainScrollPoint"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("viewFrameChanged:"), function $CPClipView__viewFrameChanged_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "_constrainScrollPoint"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPClipView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPClipView").super_class }, "resizeSubviewsWithOldSize:", aSize); + objj_msgSend(self, "_constrainScrollPoint"); +} +},["void","CGSize"]), new objj_method(sel_getUid("_constrainScrollPoint"), function $CPClipView___constrainScrollPoint(self, _cmd) +{ with(self) +{ + var oldScrollPoint = objj_msgSend(self, "bounds").origin; + objj_msgSend(self, "scrollToPoint:", oldScrollPoint); + if (!CGPointEqualToPoint(oldScrollPoint, objj_msgSend(self, "bounds").origin)) + return; + var superview = objj_msgSend(self, "superview"), + scrollViewClass = objj_getClass("CPScrollView"); + if (objj_msgSend(superview, "isKindOfClass:", scrollViewClass)) + objj_msgSend(superview, "reflectScrolledClipView:", self); +} +},["void"]), new objj_method(sel_getUid("autoscroll:"), function $CPClipView__autoscroll_(self, _cmd, anEvent) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + eventLocation = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + superview = objj_msgSend(self, "superview"), + deltaX = 0, + deltaY = 0; + if (CGRectContainsPoint(bounds, eventLocation)) + return NO; + if (!objj_msgSend(superview, "isKindOfClass:", objj_msgSend(CPScrollView, "class")) || objj_msgSend(superview, "hasVerticalScroller")) + { + if (eventLocation.y < CGRectGetMinY(bounds)) + deltaY = CGRectGetMinY(bounds) - eventLocation.y; + else if (eventLocation.y > CGRectGetMaxY(bounds)) + deltaY = CGRectGetMaxY(bounds) - eventLocation.y; + if (deltaY < -bounds.size.height) + deltaY = -bounds.size.height; + if (deltaY > bounds.size.height) + deltaY = bounds.size.height; + } + if (!objj_msgSend(superview, "isKindOfClass:", objj_msgSend(CPScrollView, "class")) || objj_msgSend(superview, "hasHorizontalScroller")) + { + if (eventLocation.x < CGRectGetMinX(bounds)) + deltaX = CGRectGetMinX(bounds) - eventLocation.x; + else if (eventLocation.x > CGRectGetMaxX(bounds)) + deltaX = CGRectGetMaxX(bounds) - eventLocation.x; + if (deltaX < -bounds.size.width) + deltaX = -bounds.size.width; + if (deltaX > bounds.size.width) + deltaX = bounds.size.width; + } + return objj_msgSend(self, "scrollToPoint:", CGPointMake(bounds.origin.x - deltaX, bounds.origin.y - deltaY)); +} +},["BOOL","CPEvent"])]); +} +var CPClipViewDocumentViewKey = "CPScrollViewDocumentView"; +{ +var the_class = objj_getClass("CPClipView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPClipView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPClipView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPClipView").super_class }, "initWithCoder:", aCoder)) + objj_msgSend(self, "setDocumentView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPClipViewDocumentViewKey)); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPClipView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPClipView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _documentView, CPClipViewDocumentViewKey); +} +},["void","CPCoder"])]); +} + +p;18;CPCollectionView.jt;29016;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;Foundation/CPData.jI;23;Foundation/CPIndexSet.jI;28;Foundation/CPKeyedArchiver.jI;30;Foundation/CPKeyedUnarchiver.ji;8;CPView.ji;22;CPCollectionViewItem.jt;28812;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPData.j", NO); +objj_executeFile("Foundation/CPIndexSet.j", NO); +objj_executeFile("Foundation/CPKeyedArchiver.j", NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j", NO); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPCollectionViewItem.j", YES); +{var the_class = objj_allocateClassPair(CPView, "CPCollectionView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_content"), new objj_ivar("_items"), new objj_ivar("_itemData"), new objj_ivar("_itemPrototype"), new objj_ivar("_itemForDragging"), new objj_ivar("_cachedItems"), new objj_ivar("_maxNumberOfRows"), new objj_ivar("_maxNumberOfColumns"), new objj_ivar("_minItemSize"), new objj_ivar("_maxItemSize"), new objj_ivar("_backgroundColors"), new objj_ivar("_tileWidth"), new objj_ivar("_isSelectable"), new objj_ivar("_allowsMultipleSelection"), new objj_ivar("_allowsEmptySelection"), new objj_ivar("_selectionIndexes"), new objj_ivar("_itemSize"), new objj_ivar("_horizontalMargin"), new objj_ivar("_verticalMargin"), new objj_ivar("_numberOfRows"), new objj_ivar("_numberOfColumns"), new objj_ivar("_delegate"), new objj_ivar("_mouseDownEvent")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPCollectionView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCollectionView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _items = []; + _content = []; + _cachedItems = []; + _itemSize = CGSizeMakeZero(); + _minItemSize = CGSizeMakeZero(); + _maxItemSize = CGSizeMakeZero(); + objj_msgSend(self, "setBackgroundColors:", nil); + _verticalMargin = 5.0; + _tileWidth = -1.0; + _selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _allowsEmptySelection = YES; + _isSelectable = YES; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setItemPrototype:"), function $CPCollectionView__setItemPrototype_(self, _cmd, anItem) +{ with(self) +{ + _cachedItems = []; + _itemData = nil; + _itemForDragging = nil; + _itemPrototype = anItem; + objj_msgSend(self, "reloadContent"); +} +},["void","CPCollectionViewItem"]), new objj_method(sel_getUid("itemPrototype"), function $CPCollectionView__itemPrototype(self, _cmd) +{ with(self) +{ + return _itemPrototype; +} +},["CPCollectionViewItem"]), new objj_method(sel_getUid("newItemForRepresentedObject:"), function $CPCollectionView__newItemForRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + var item = nil; + if (_cachedItems.length) + item = _cachedItems.pop(); + else + { + if (!_itemData) + if (_itemPrototype) + _itemData = objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _itemPrototype); + item = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", _itemData); + } + objj_msgSend(item, "setRepresentedObject:", anObject); + objj_msgSend(objj_msgSend(item, "view"), "setFrameSize:", _itemSize); + return item; +} +},["CPCollectionViewItem","id"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPCollectionView__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("isFirstResponder"), function $CPCollectionView__isFirstResponder(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self; +} +},["BOOL"]), new objj_method(sel_getUid("setContent:"), function $CPCollectionView__setContent_(self, _cmd, anArray) +{ with(self) +{ + if (_content == anArray) + return; + _content = anArray; + objj_msgSend(self, "reloadContent"); +} +},["void","CPArray"]), new objj_method(sel_getUid("content"), function $CPCollectionView__content(self, _cmd) +{ with(self) +{ + return _content; +} +},["CPArray"]), new objj_method(sel_getUid("items"), function $CPCollectionView__items(self, _cmd) +{ with(self) +{ + return _items; +} +},["CPArray"]), new objj_method(sel_getUid("setSelectable:"), function $CPCollectionView__setSelectable_(self, _cmd, isSelectable) +{ with(self) +{ + if (_isSelectable == isSelectable) + return; + _isSelectable = isSelectable; + if (!_isSelectable) + { + var index = CPNotFound; + while ((index = objj_msgSend(_selectionIndexes, "indexGreaterThanIndex:", index)) != CPNotFound) + objj_msgSend(_items[index], "setSelected:", NO); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("isSelectable"), function $CPCollectionView__isSelectable(self, _cmd) +{ with(self) +{ + return _isSelectable; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsEmptySelection:"), function $CPCollectionView__setAllowsEmptySelection_(self, _cmd, shouldAllowEmptySelection) +{ with(self) +{ + _allowsEmptySelection = shouldAllowEmptySelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsEmptySelection"), function $CPCollectionView__allowsEmptySelection(self, _cmd) +{ with(self) +{ + return _allowsEmptySelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsMultipleSelection:"), function $CPCollectionView__setAllowsMultipleSelection_(self, _cmd, shouldAllowMultipleSelection) +{ with(self) +{ + _allowsMultipleSelection = shouldAllowMultipleSelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsMultipleSelection"), function $CPCollectionView__allowsMultipleSelection(self, _cmd) +{ with(self) +{ + return _allowsMultipleSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setSelectionIndexes:"), function $CPCollectionView__setSelectionIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + if (objj_msgSend(_selectionIndexes, "isEqual:", anIndexSet) || !_isSelectable) + return; + var index = CPNotFound; + while ((index = objj_msgSend(_selectionIndexes, "indexGreaterThanIndex:", index)) != CPNotFound) + objj_msgSend(_items[index], "setSelected:", NO); + _selectionIndexes = anIndexSet; + var index = CPNotFound; + while ((index = objj_msgSend(_selectionIndexes, "indexGreaterThanIndex:", index)) != CPNotFound) + objj_msgSend(_items[index], "setSelected:", YES); + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "selectionIndexes", self), "reverseSetValueFor:", "selectionIndexes"); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("collectionViewDidChangeSelection:"))) + objj_msgSend(_delegate, "collectionViewDidChangeSelection:", self); +} +},["void","CPIndexSet"]), new objj_method(sel_getUid("selectionIndexes"), function $CPCollectionView__selectionIndexes(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectionIndexes, "copy"); +} +},["CPIndexSet"]), new objj_method(sel_getUid("reloadContent"), function $CPCollectionView__reloadContent(self, _cmd) +{ with(self) +{ + var count = _items.length; + while (count--) + { + objj_msgSend(objj_msgSend(_items[count], "view"), "removeFromSuperview"); + objj_msgSend(_items[count], "setSelected:", NO); + _cachedItems.push(_items[count]); + } + _items = []; + if (!_itemPrototype || !_content) + return; + var index = 0; + count = _content.length; + for (; index < count; ++index) + { + _items.push(objj_msgSend(self, "newItemForRepresentedObject:", _content[index])); + objj_msgSend(self, "addSubview:", objj_msgSend(_items[index], "view")); + } + index = CPNotFound; + while ((index = objj_msgSend(_selectionIndexes, "indexGreaterThanIndex:", index)) != CPNotFound) + objj_msgSend(_items[index], "setSelected:", YES); + objj_msgSend(self, "tile"); +} +},["void"]), new objj_method(sel_getUid("tile"), function $CPCollectionView__tile(self, _cmd) +{ with(self) +{ + var width = CGRectGetWidth(objj_msgSend(self, "bounds")); + if (!objj_msgSend(_content, "count") || width == _tileWidth) + return; + var itemSize = CGSizeMakeCopy(_minItemSize); + _numberOfColumns = MAX(1.0, FLOOR(width / itemSize.width)); + if (_maxNumberOfColumns > 0) + _numberOfColumns = MIN(_maxNumberOfColumns, _numberOfColumns); + var remaining = width - _numberOfColumns * itemSize.width, + itemsNeedSizeUpdate = NO; + if (remaining > 0 && itemSize.width < _maxItemSize.width) + itemSize.width = MIN(_maxItemSize.width, itemSize.width + FLOOR(remaining / _numberOfColumns)); + if (_maxNumberOfColumns == 1 && itemSize.width < _maxItemSize.width && itemSize.width < width) + itemSize.width = MIN(_maxItemSize.width, width); + if (!CGSizeEqualToSize(_itemSize, itemSize)) + { + _itemSize = itemSize; + itemsNeedSizeUpdate = YES; + } + var index = 0, + count = _items.length; + if (_maxNumberOfColumns > 0 && _maxNumberOfRows > 0) + count = MIN(count, _maxNumberOfColumns * _maxNumberOfRows); + _numberOfRows = CEIL(count / _numberOfColumns); + _horizontalMargin = FLOOR((width - _numberOfColumns * itemSize.width) / (_numberOfColumns + 1)); + var x = _horizontalMargin, + y = -itemSize.height; + for (; index < count; ++index) + { + if (index % _numberOfColumns == 0) + { + x = _horizontalMargin; + y += _verticalMargin + itemSize.height; + } + var view = objj_msgSend(_items[index], "view"); + objj_msgSend(view, "setFrameOrigin:", CGPointMake(x, y)); + if (itemsNeedSizeUpdate) + objj_msgSend(view, "setFrameSize:", _itemSize); + x += itemSize.width + _horizontalMargin; + } + var superview = objj_msgSend(self, "superview"), + proposedHeight = y + itemSize.height + _verticalMargin; + if (objj_msgSend(superview, "isKindOfClass:", objj_msgSend(CPClipView, "class"))) + { + var superviewSize = objj_msgSend(superview, "bounds").size; + proposedHeight = MAX(superviewSize.height, proposedHeight); + } + _tileWidth = width; + objj_msgSend(self, "setFrameSize:", CGSizeMake(width, proposedHeight)); + _tileWidth = -1.0; +} +},["void"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPCollectionView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "tile"); +} +},["void","CGSize"]), new objj_method(sel_getUid("setMaxNumberOfRows:"), function $CPCollectionView__setMaxNumberOfRows_(self, _cmd, aMaxNumberOfRows) +{ with(self) +{ + if (_maxNumberOfRows == aMaxNumberOfRows) + return; + _maxNumberOfRows = aMaxNumberOfRows; + objj_msgSend(self, "tile"); +} +},["void","unsigned"]), new objj_method(sel_getUid("maxNumberOfRows"), function $CPCollectionView__maxNumberOfRows(self, _cmd) +{ with(self) +{ + return _maxNumberOfRows; +} +},["unsigned"]), new objj_method(sel_getUid("setMaxNumberOfColumns:"), function $CPCollectionView__setMaxNumberOfColumns_(self, _cmd, aMaxNumberOfColumns) +{ with(self) +{ + if (_maxNumberOfColumns == aMaxNumberOfColumns) + return; + _maxNumberOfColumns = aMaxNumberOfColumns; + objj_msgSend(self, "tile"); +} +},["void","unsigned"]), new objj_method(sel_getUid("maxNumberOfColumns"), function $CPCollectionView__maxNumberOfColumns(self, _cmd) +{ with(self) +{ + return _maxNumberOfColumns; +} +},["unsigned"]), new objj_method(sel_getUid("numberOfRows"), function $CPCollectionView__numberOfRows(self, _cmd) +{ with(self) +{ + return _numberOfRows; +} +},["unsigned"]), new objj_method(sel_getUid("numberOfColumns"), function $CPCollectionView__numberOfColumns(self, _cmd) +{ with(self) +{ + return _numberOfColumns; +} +},["unsigned"]), new objj_method(sel_getUid("setMinItemSize:"), function $CPCollectionView__setMinItemSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(_minItemSize, aSize)) + return; + _minItemSize = CGSizeMakeCopy(aSize); + objj_msgSend(self, "tile"); +} +},["void","CGSize"]), new objj_method(sel_getUid("minItemSize"), function $CPCollectionView__minItemSize(self, _cmd) +{ with(self) +{ + return _minItemSize; +} +},["CGSize"]), new objj_method(sel_getUid("setMaxItemSize:"), function $CPCollectionView__setMaxItemSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(_maxItemSize, aSize)) + return; + _maxItemSize = CGSizeMakeCopy(aSize); + objj_msgSend(self, "tile"); +} +},["void","CGSize"]), new objj_method(sel_getUid("maxItemSize"), function $CPCollectionView__maxItemSize(self, _cmd) +{ with(self) +{ + return _maxItemSize; +} +},["CGSize"]), new objj_method(sel_getUid("setBackgroundColors:"), function $CPCollectionView__setBackgroundColors_(self, _cmd, backgroundColors) +{ with(self) +{ + if (_backgroundColors === backgroundColors) + return; + _backgroundColors = backgroundColors; + if (!_backgroundColors) + _backgroundColors = objj_msgSend(CPColor, "whiteColor"); + if (objj_msgSend(_backgroundColors, "count") === 1) + objj_msgSend(self, "setBackgroundColor:", _backgroundColors[0]); + else + objj_msgSend(self, "setBackgroundColor:", nil); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPArray"]), new objj_method(sel_getUid("backgroundColors"), function $CPCollectionView__backgroundColors(self, _cmd) +{ with(self) +{ + return _backgroundColors; +} +},["CPArray"]), new objj_method(sel_getUid("mouseUp:"), function $CPCollectionView__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(_selectionIndexes, "count") && objj_msgSend(anEvent, "clickCount") == 2 && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("collectionView:didDoubleClickOnItemAtIndex:"))) + objj_msgSend(_delegate, "collectionView:didDoubleClickOnItemAtIndex:", self, objj_msgSend(_selectionIndexes, "firstIndex")); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDown:"), function $CPCollectionView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + _mouseDownEvent = anEvent; + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + row = FLOOR(location.y / (_itemSize.height + _verticalMargin)), + column = FLOOR(location.x / (_itemSize.width + _horizontalMargin)), + index = row * _numberOfColumns + column; + if (index >= 0 && index < _items.length) + { + if (_allowsMultipleSelection && (objj_msgSend(anEvent, "modifierFlags") & CPCommandKeyMask || objj_msgSend(anEvent, "modifierFlags") & CPShiftKeyMask)) + { + var indexes = objj_msgSend(_selectionIndexes, "copy"); + if (objj_msgSend(indexes, "containsIndex:", index)) + objj_msgSend(indexes, "removeIndex:", index); + else + objj_msgSend(indexes, "addIndex:", index); + } + else + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", index); + objj_msgSend(self, "setSelectionIndexes:", indexes); + } + else if (_allowsEmptySelection) + objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSet")); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $CPCollectionView__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + var locationInWindow = objj_msgSend(anEvent, "locationInWindow"), + mouseDownLocationInWindow = objj_msgSend(_mouseDownEvent, "locationInWindow"); + if ((ABS(locationInWindow.x - mouseDownLocationInWindow.x) < 3) && + (ABS(locationInWindow.y - mouseDownLocationInWindow.y) < 3)) + return; + if (!objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("collectionView:dragTypesForItemsAtIndexes:"))) + return; + if (!objj_msgSend(_selectionIndexes, "count")) + return; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("collectionView:canDragItemsAtIndexes:withEvent:")) && + !objj_msgSend(_delegate, "collectionView:canDragItemsAtIndexes:withEvent:", self, _selectionIndexes, _mouseDownEvent)) + return; + var dragTypes = objj_msgSend(_delegate, "collectionView:dragTypesForItemsAtIndexes:", self, _selectionIndexes); + objj_msgSend(objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard), "declareTypes:owner:", dragTypes, self); + if (!_itemForDragging) + _itemForDragging = objj_msgSend(self, "newItemForRepresentedObject:", _content[objj_msgSend(_selectionIndexes, "firstIndex")]); + else + objj_msgSend(_itemForDragging, "setRepresentedObject:", _content[objj_msgSend(_selectionIndexes, "firstIndex")]); + var view = objj_msgSend(_itemForDragging, "view"); + objj_msgSend(view, "setFrameSize:", _itemSize); + objj_msgSend(view, "setAlphaValue:", 0.7); + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", view, objj_msgSend(objj_msgSend(_items[objj_msgSend(_selectionIndexes, "firstIndex")], "view"), "frame").origin, CGSizeMakeZero(), _mouseDownEvent, nil, self, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("pasteboard:provideDataForType:"), function $CPCollectionView__pasteboard_provideDataForType_(self, _cmd, aPasteboard, aType) +{ with(self) +{ + objj_msgSend(aPasteboard, "setData:forType:", objj_msgSend(_delegate, "collectionView:dataForItemsAtIndexes:forType:", self, _selectionIndexes, aType), aType); +} +},["void","CPPasteboard","CPString"]), new objj_method(sel_getUid("setVerticalMargin:"), function $CPCollectionView__setVerticalMargin_(self, _cmd, aVerticalMargin) +{ with(self) +{ + if (_verticalMargin == aVerticalMargin) + return; + _verticalMargin = aVerticalMargin; + objj_msgSend(self, "tile"); +} +},["void","float"]), new objj_method(sel_getUid("verticalMargin"), function $CPCollectionView__verticalMargin(self, _cmd) +{ with(self) +{ + return _verticalMargin; +} +},["float"]), new objj_method(sel_getUid("setDelegate:"), function $CPCollectionView__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPCollectionView__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("itemAtIndex:"), function $CPCollectionView__itemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_items, "objectAtIndex:", anIndex); +} +},["CPCollectionViewItem","unsigned"]), new objj_method(sel_getUid("frameForItemAtIndex:"), function $CPCollectionView__frameForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "itemAtIndex:", anIndex), "view"), "frame"); +} +},["CGRect","unsigned"]), new objj_method(sel_getUid("frameForItemsAtIndexes:"), function $CPCollectionView__frameForItemsAtIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + var indexArray = [], + frame = CGRectNull; + objj_msgSend(anIndexSet, "getIndexes:maxCount:inIndexRange:", indexArray, -1, nil); + var index = 0, + count = objj_msgSend(indexArray, "count"); + for (; index < count; ++index) + frame = CGRectUnion(frame, objj_msgSend(self, "frameForItemAtIndex:", indexArray[index])); + return frame; +} +},["CGRect","CPIndexSet"])]); +} +{ +var the_class = objj_getClass("CPCollectionView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_modifySelectionWithNewIndex:direction:expand:"), function $CPCollectionView___modifySelectionWithNewIndex_direction_expand_(self, _cmd, anIndex, aDirection, shouldExpand) +{ with(self) +{ + anIndex = MIN(MAX(anIndex, 0), objj_msgSend(objj_msgSend(self, "items"), "count")-1); + if (_allowsMultipleSelection && shouldExpand) + { + var indexes = objj_msgSend(_selectionIndexes, "copy"), + bottomAnchor = objj_msgSend(indexes, "firstIndex"), + topAnchor = objj_msgSend(indexes, "lastIndex"); + if (aDirection === -1) + objj_msgSend(indexes, "addIndexesInRange:", CPMakeRange(anIndex, bottomAnchor - anIndex + 1)); + else + objj_msgSend(indexes, "addIndexesInRange:", CPMakeRange(topAnchor, anIndex - topAnchor + 1)); + } + else + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", anIndex); + objj_msgSend(self, "setSelectionIndexes:", indexes); + objj_msgSend(self, "_scrollToSelection"); +} +},["void","int","int","BOOL"]), new objj_method(sel_getUid("_scrollToSelection"), function $CPCollectionView___scrollToSelection(self, _cmd) +{ with(self) +{ + var frame = objj_msgSend(self, "frameForItemsAtIndexes:", objj_msgSend(self, "selectionIndexes")); + if (!CGRectIsNull(frame)) + objj_msgSend(self, "scrollRectToVisible:", frame); +} +},["void"]), new objj_method(sel_getUid("moveLeft:"), function $CPCollectionView__moveLeft_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index === CPNotFound) + index = objj_msgSend(objj_msgSend(self, "items"), "count"); + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", index - 1, -1, NO); +} +},["void","id"]), new objj_method(sel_getUid("moveLeftAndModifySelection:"), function $CPCollectionView__moveLeftAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index === CPNotFound) + index = objj_msgSend(objj_msgSend(self, "items"), "count"); + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", index - 1, -1, YES); +} +},["void","id"]), new objj_method(sel_getUid("moveRight:"), function $CPCollectionView__moveRight_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", objj_msgSend(objj_msgSend(self, "selectionIndexes"), "lastIndex") + 1, 1, NO); +} +},["void","id"]), new objj_method(sel_getUid("moveRightAndModifySelection:"), function $CPCollectionView__moveRightAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", objj_msgSend(objj_msgSend(self, "selectionIndexes"), "lastIndex") + 1, 1, YES); +} +},["void","id"]), new objj_method(sel_getUid("moveDown:"), function $CPCollectionView__moveDown_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", objj_msgSend(objj_msgSend(self, "selectionIndexes"), "lastIndex") + objj_msgSend(self, "numberOfColumns"), 1, NO); +} +},["void","id"]), new objj_method(sel_getUid("moveDownAndModifySelection:"), function $CPCollectionView__moveDownAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", objj_msgSend(objj_msgSend(self, "selectionIndexes"), "lastIndex") + objj_msgSend(self, "numberOfColumns"), 1, YES); +} +},["void","id"]), new objj_method(sel_getUid("moveUp:"), function $CPCollectionView__moveUp_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index == CPNotFound) + index = objj_msgSend(objj_msgSend(self, "items"), "count"); + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", index - objj_msgSend(self, "numberOfColumns"), -1, NO); +} +},["void","id"]), new objj_method(sel_getUid("moveUpAndModifySelection:"), function $CPCollectionView__moveUpAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index == CPNotFound) + index = objj_msgSend(objj_msgSend(self, "items"), "count"); + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", index - objj_msgSend(self, "numberOfColumns"), -1, YES); +} +},["void","id"]), new objj_method(sel_getUid("deleteBackward:"), function $CPCollectionView__deleteBackward_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "delegate"), "respondsToSelector:", sel_getUid("collectionView:shouldDeleteItemsAtIndexes:"))) + { + objj_msgSend(objj_msgSend(self, "delegate"), "collectionView:shouldDeleteItemsAtIndexes:", self, objj_msgSend(self, "selectionIndexes")); + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index > objj_msgSend(objj_msgSend(self, "content"), "count")-1) + objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", objj_msgSend(objj_msgSend(self, "content"), "count")-1)); + objj_msgSend(self, "_scrollToSelection"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } +} +},["void","id"]), new objj_method(sel_getUid("keyDown:"), function $CPCollectionView__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "interpretKeyEvents:", [anEvent]); +} +},["void","CPEvent"])]); +} +{ +var the_class = objj_getClass("CPCollectionView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("rectForItemAtIndex:"), function $CPCollectionView__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + _CPReportLenientDeprecation(objj_msgSend(self, "class"), _cmd, sel_getUid("frameForItemAtIndex:")); + return objj_msgSend(self, "frameForItemAtIndex:", anIndex); +} +},["CGRect","int"]), new objj_method(sel_getUid("rectForItemsAtIndexes:"), function $CPCollectionView__rectForItemsAtIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + _CPReportLenientDeprecation(objj_msgSend(self, "class"), _cmd, sel_getUid("frameForItemsAtIndexes:")); + return objj_msgSend(self, "frameForItemsAtIndexes:", anIndexSet); +} +},["CGRect","CPIndexSet"])]); +} +var CPCollectionViewMinItemSizeKey = "CPCollectionViewMinItemSizeKey", + CPCollectionViewMaxItemSizeKey = "CPCollectionViewMaxItemSizeKey", + CPCollectionViewVerticalMarginKey = "CPCollectionViewVerticalMarginKey", + CPCollectionViewMaxNumberOfRowsKey = "CPCollectionViewMaxNumberOfRowsKey", + CPCollectionViewMaxNumberOfColumnsKey = "CPCollectionViewMaxNumberOfColumnsKey", + CPCollectionViewSelectableKey = "CPCollectionViewSelectableKey", + CPCollectionViewBackgroundColorsKey = "CPCollectionViewBackgroundColorsKey"; +{ +var the_class = objj_getClass("CPCollectionView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPCollectionView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCollectionView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _items = []; + _content = []; + _cachedItems = []; + _itemSize = CGSizeMakeZero(); + _minItemSize = objj_msgSend(aCoder, "decodeSizeForKey:", CPCollectionViewMinItemSizeKey) || CGSizeMakeZero(); + _maxItemSize = objj_msgSend(aCoder, "decodeSizeForKey:", CPCollectionViewMaxItemSizeKey) || CGSizeMakeZero(); + _maxNumberOfRows = objj_msgSend(aCoder, "decodeIntForKey:", CPCollectionViewMaxNumberOfRowsKey) || 0; + _maxNumberOfColumns = objj_msgSend(aCoder, "decodeIntForKey:", CPCollectionViewMaxNumberOfColumnsKey) || 0; + _verticalMargin = objj_msgSend(aCoder, "decodeFloatForKey:", CPCollectionViewVerticalMarginKey); + _isSelectable = objj_msgSend(aCoder, "decodeBoolForKey:", CPCollectionViewSelectableKey); + objj_msgSend(self, "setBackgroundColors:", objj_msgSend(aCoder, "decodeObjectForKey:", CPCollectionViewBackgroundColorsKey)); + _tileWidth = -1.0; + _selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _allowsEmptySelection = YES; + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPCollectionView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCollectionView").super_class }, "encodeWithCoder:", aCoder); + if (!CGSizeEqualToSize(_minItemSize, CGSizeMakeZero())) + objj_msgSend(aCoder, "encodeSize:forKey:", _minItemSize, CPCollectionViewMinItemSizeKey); + if (!CGSizeEqualToSize(_maxItemSize, CGSizeMakeZero())) + objj_msgSend(aCoder, "encodeSize:forKey:", _maxItemSize, CPCollectionViewMaxItemSizeKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _maxNumberOfRows, CPCollectionViewMaxNumberOfRowsKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _maxNumberOfColumns, CPCollectionViewMaxNumberOfColumnsKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isSelectable, CPCollectionViewSelectableKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _verticalMargin, CPCollectionViewVerticalMarginKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _backgroundColors, CPCollectionViewBackgroundColorsKey); +} +},["void","CPCoder"])]); +} + +p;22;CPCollectionViewItem.jt;1690;@STATIC;1.0;i;18;CPViewController.jt;1648;objj_executeFile("CPViewController.j", YES); +{var the_class = objj_allocateClassPair(CPViewController, "CPCollectionViewItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isSelected")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setRepresentedObject:"), function $CPCollectionViewItem__setRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCollectionViewItem").super_class }, "setRepresentedObject:", anObject); + var view = objj_msgSend(self, "view"); + if (objj_msgSend(view, "respondsToSelector:", sel_getUid("setRepresentedObject:"))) + objj_msgSend(view, "setRepresentedObject:", objj_msgSend(self, "representedObject")); +} +},["void","id"]), new objj_method(sel_getUid("setSelected:"), function $CPCollectionViewItem__setSelected_(self, _cmd, shouldBeSelected) +{ with(self) +{ + shouldBeSelected = !!shouldBeSelected; + if (_isSelected === shouldBeSelected) + return; + _isSelected = shouldBeSelected; + var view = objj_msgSend(self, "view"); + if (objj_msgSend(view, "respondsToSelector:", sel_getUid("setSelected:"))) + objj_msgSend(view, "setSelected:", objj_msgSend(self, "isSelected")); +} +},["void","BOOL"]), new objj_method(sel_getUid("isSelected"), function $CPCollectionViewItem__isSelected(self, _cmd) +{ with(self) +{ + return _isSelected; +} +},["BOOL"]), new objj_method(sel_getUid("collectionView"), function $CPCollectionViewItem__collectionView(self, _cmd) +{ with(self) +{ + return objj_msgSend(_view, "superview"); +} +},["CPCollectionView"])]); +} + +p;9;CPColor.jt;18340;@STATIC;1.0;I;21;Foundation/CPObject.ji;9;CGColor.ji;17;CPCompatibility.ji;9;CPImage.jt;18246;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CGColor.j", YES); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("CPImage.j", YES); +var _redComponent = 0, + _greenComponent = 1, + _blueComponent = 2, + _alphaCompnent = 3; +var _hueComponent = 0, + _saturationComponent = 1, + _brightnessComponent = 2; +var cachedBlackColor, + cachedRedColor, + cachedGreenColor, + cachedBlueColor, + cachedYellowColor, + cachedGrayColor, + cachedLightGrayColor, + cachedDarkGrayColor, + cachedWhiteColor, + cachedBrownColor, + cachedCyanColor, + cachedMagentaColor, + cachedOrangeColor, + cachedPurpleColor, + cachedShadowColor, + cachedClearColor; +{var the_class = objj_allocateClassPair(CPObject, "CPColor"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_components"), new objj_ivar("_patternImage"), new objj_ivar("_cssString")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initWithCSSString:"), function $CPColor___initWithCSSString_(self, _cmd, aString) +{ with(self) +{ + if (aString.indexOf("rgb") == CPNotFound) + return nil; + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColor").super_class }, "init"); + var startingIndex = aString.indexOf("("); + var parts = aString.substring(startingIndex+1).split(','); + _components = [ + parseInt(parts[0], 10) / 255.0, + parseInt(parts[1], 10) / 255.0, + parseInt(parts[2], 10) / 255.0, + parts[3] ? parseInt(parts[3], 10) / 255.0 : 1.0 + ]; + _cssString = aString; + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("_initWithRGBA:"), function $CPColor___initWithRGBA_(self, _cmd, components) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColor").super_class }, "init"); + if (self) + { + _components = components; + var hasAlpha = CPFeatureIsCompatible(CPCSSRGBAFeature) && _components[3] != 1.0; + _cssString = (hasAlpha ? "rgba(" : "rgb(") + + parseInt(_components[0] * 255.0) + ", " + + parseInt(_components[1] * 255.0) + ", " + + parseInt(_components[2] * 255.0) + + (hasAlpha ? (", " + _components[3]) : "") + ")"; + } + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("_initWithPatternImage:"), function $CPColor___initWithPatternImage_(self, _cmd, anImage) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColor").super_class }, "init"); + if (self) + { + _patternImage = anImage; + _cssString = "url(\"" + objj_msgSend(_patternImage, "filename") + "\")"; + _components = [0.0, 0.0, 0.0, 1.0]; + } + return self; +} +},["id","CPImage"]), new objj_method(sel_getUid("patternImage"), function $CPColor__patternImage(self, _cmd) +{ with(self) +{ + return _patternImage; +} +},["CPImage"]), new objj_method(sel_getUid("alphaComponent"), function $CPColor__alphaComponent(self, _cmd) +{ with(self) +{ + return _components[3]; +} +},["float"]), new objj_method(sel_getUid("blueComponent"), function $CPColor__blueComponent(self, _cmd) +{ with(self) +{ + return _components[2]; +} +},["float"]), new objj_method(sel_getUid("greenComponent"), function $CPColor__greenComponent(self, _cmd) +{ with(self) +{ + return _components[1]; +} +},["float"]), new objj_method(sel_getUid("redComponent"), function $CPColor__redComponent(self, _cmd) +{ with(self) +{ + return _components[0]; +} +},["float"]), new objj_method(sel_getUid("components"), function $CPColor__components(self, _cmd) +{ with(self) +{ + return _components; +} +},["CPArray"]), new objj_method(sel_getUid("colorWithAlphaComponent:"), function $CPColor__colorWithAlphaComponent_(self, _cmd, anAlphaComponent) +{ with(self) +{ + var components = _components.slice(); + components[components.length - 1] = anAlphaComponent; + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "_initWithRGBA:", components); +} +},["CPColor","float"]), new objj_method(sel_getUid("hsbComponents"), function $CPColor__hsbComponents(self, _cmd) +{ with(self) +{ + var red = ROUND(_components[_redComponent] * 255.0), + green = ROUND(_components[_greenComponent] * 255.0), + blue = ROUND(_components[_blueComponent] * 255.0); + var max = MAX(red, green, blue), + min = MIN(red, green, blue), + delta = max - min; + var brightness = max / 255.0, + saturation = (max != 0) ? delta / max : 0; + var hue; + if (saturation == 0) + { + hue = 0; + } + else + { + var rr = (max - red) / delta; + var gr = (max - green) / delta; + var br = (max - blue) / delta; + if (red == max) + hue = br - gr; + else if (green == max) + hue = 2 + rr - br; + else + hue = 4 + gr - rr; + hue /= 6; + if (hue < 0) + hue++; + } + return [ + ROUND(hue * 360.0), + ROUND(saturation * 100.0), + ROUND(brightness * 100.0) + ]; +} +},["CPArray"]), new objj_method(sel_getUid("cssString"), function $CPColor__cssString(self, _cmd) +{ with(self) +{ + return _cssString; +} +},["CPString"]), new objj_method(sel_getUid("hexString"), function $CPColor__hexString(self, _cmd) +{ with(self) +{ + return rgbToHex(objj_msgSend(self, "redComponent"), objj_msgSend(self, "greenComponent"), objj_msgSend(self, "blueComponent")) +} +},["CPString"]), new objj_method(sel_getUid("isEqual:"), function $CPColor__isEqual_(self, _cmd, aColor) +{ with(self) +{ + if (!aColor) + return NO; + if (aColor === self) + return YES; + return objj_msgSend(aColor, "isKindOfClass:", CPColor) && objj_msgSend(aColor, "cssString") === objj_msgSend(self, "cssString"); +} +},["BOOL","CPColor"]), new objj_method(sel_getUid("description"), function $CPColor__description(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColor").super_class }, "description")+" "+objj_msgSend(self, "cssString"); +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("colorWithRed:green:blue:alpha:"), function $CPColor__colorWithRed_green_blue_alpha_(self, _cmd, red, green, blue, alpha) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [red, green, blue, alpha]); +} +},["CPColor","float","float","float","float"]), new objj_method(sel_getUid("colorWithCalibratedRed:green:blue:alpha:"), function $CPColor__colorWithCalibratedRed_green_blue_alpha_(self, _cmd, red, green, blue, alpha) +{ with(self) +{ + return objj_msgSend(self, "colorWithRed:green:blue:alpha:", red, green, blue, alpha); +} +},["CPColor","float","float","float","float"]), new objj_method(sel_getUid("colorWithWhite:alpha:"), function $CPColor__colorWithWhite_alpha_(self, _cmd, white, alpha) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [white, white, white, alpha]); +} +},["CPColor","float","float"]), new objj_method(sel_getUid("colorWithCalibratedWhite:alpha:"), function $CPColor__colorWithCalibratedWhite_alpha_(self, _cmd, white, alpha) +{ with(self) +{ + return objj_msgSend(self, "colorWithWhite:alpha:", white, alpha); +} +},["CPColor","float","float"]), new objj_method(sel_getUid("colorWithHue:saturation:brightness:"), function $CPColor__colorWithHue_saturation_brightness_(self, _cmd, hue, saturation, brightness) +{ with(self) +{ + return objj_msgSend(self, "colorWithHue:saturation:brightness:alpha:", hue, saturation, brightness, 1.0); +} +},["CPColor","float","float","float"]), new objj_method(sel_getUid("colorWithHue:saturation:brightness:alpha:"), function $CPColor__colorWithHue_saturation_brightness_alpha_(self, _cmd, hue, saturation, brightness, alpha) +{ with(self) +{ + if (saturation === 0.0) + return objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", brightness / 100.0, alpha); + var f = hue % 60, + p = (brightness * (100 - saturation)) / 10000, + q = (brightness * (6000 - saturation * f)) / 600000, + t = (brightness * (6000 - saturation * (60 -f))) / 600000, + b = brightness / 100.0; + switch (FLOOR(hue / 60)) + { + case 0: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", b, t, p, alpha); + case 1: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", q, b, p, alpha); + case 2: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", p, b, t, alpha); + case 3: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", p, q, b, alpha); + case 4: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", t, p, b, alpha); + case 5: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", b, p, q, alpha); + } +} +},["CPColor","float","float","float","float"]), new objj_method(sel_getUid("colorWithHexString:"), function $CPColor__colorWithHexString_(self, _cmd, hex) +{ with(self) +{ + var rgba = hexToRGB(hex); + return rgba ? objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", rgba) : null; +} +},["CPColor","string"]), new objj_method(sel_getUid("blackColor"), function $CPColor__blackColor(self, _cmd) +{ with(self) +{ + if (!cachedBlackColor) + cachedBlackColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 0.0, 0.0, 1.0]); + return cachedBlackColor; +} +},["CPColor"]), new objj_method(sel_getUid("blueColor"), function $CPColor__blueColor(self, _cmd) +{ with(self) +{ + if (!cachedBlueColor) + cachedBlueColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 0.0, 1.0, 1.0]); + return cachedBlueColor; +} +},["CPColor"]), new objj_method(sel_getUid("darkGrayColor"), function $CPColor__darkGrayColor(self, _cmd) +{ with(self) +{ + if (!cachedDarkGrayColor) + cachedDarkGrayColor = objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 1.0 / 3.0, 1.0); + return cachedDarkGrayColor; +} +},["CPColor"]), new objj_method(sel_getUid("grayColor"), function $CPColor__grayColor(self, _cmd) +{ with(self) +{ + if (!cachedGrayColor) + cachedGrayColor = objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 0.5, 1.0); + return cachedGrayColor; +} +},["CPColor"]), new objj_method(sel_getUid("greenColor"), function $CPColor__greenColor(self, _cmd) +{ with(self) +{ + if (!cachedGreenColor) + cachedGreenColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 1.0, 0.0, 1.0]); + return cachedGreenColor; +} +},["CPColor"]), new objj_method(sel_getUid("lightGrayColor"), function $CPColor__lightGrayColor(self, _cmd) +{ with(self) +{ + if (!cachedLightGrayColor) + cachedLightGrayColor = objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 2.0 / 3.0, 1.0); + return cachedLightGrayColor; +} +},["CPColor"]), new objj_method(sel_getUid("redColor"), function $CPColor__redColor(self, _cmd) +{ with(self) +{ + if (!cachedRedColor) + cachedRedColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 0.0, 0.0, 1.0]); + return cachedRedColor; +} +},["CPColor"]), new objj_method(sel_getUid("whiteColor"), function $CPColor__whiteColor(self, _cmd) +{ with(self) +{ + if (!cachedWhiteColor) + cachedWhiteColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 1.0, 1.0, 1.0]); + return cachedWhiteColor; +} +},["CPColor"]), new objj_method(sel_getUid("yellowColor"), function $CPColor__yellowColor(self, _cmd) +{ with(self) +{ + if (!cachedYellowColor) + cachedYellowColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 1.0, 0.0, 1.0]); + return cachedYellowColor; +} +},["CPColor"]), new objj_method(sel_getUid("brownColor"), function $CPColor__brownColor(self, _cmd) +{ with(self) +{ + if (!cachedBrownColor) + cachedBrownColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.6, 0.4, 0.2, 1.0]); + return cachedBrownColor; +} +},["CPColor"]), new objj_method(sel_getUid("cyanColor"), function $CPColor__cyanColor(self, _cmd) +{ with(self) +{ + if (!cachedCyanColor) + cachedCyanColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 1.0, 1.0, 1.0]); + return cachedCyanColor; +} +},["CPColor"]), new objj_method(sel_getUid("magentaColor"), function $CPColor__magentaColor(self, _cmd) +{ with(self) +{ + if (!cachedMagentaColor) + cachedMagentaColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 0.0, 1.0, 1.0]); + return cachedMagentaColor; +} +},["CPColor"]), new objj_method(sel_getUid("orangeColor"), function $CPColor__orangeColor(self, _cmd) +{ with(self) +{ + if (!cachedOrangeColor) + cachedOrangeColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 0.5, 0.0, 1.0]); + return cachedOrangeColor; +} +},["CPColor"]), new objj_method(sel_getUid("purpleColor"), function $CPColor__purpleColor(self, _cmd) +{ with(self) +{ + if (!cachedPurpleColor) + cachedPurpleColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.5, 0.0, 0.5, 1.0]); + return cachedPurpleColor; +} +},["CPColor"]), new objj_method(sel_getUid("shadowColor"), function $CPColor__shadowColor(self, _cmd) +{ with(self) +{ + if (!cachedShadowColor) + cachedShadowColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 0.0, 0.0, 1.0 / 3.0]); + return cachedShadowColor; +} +},["CPColor"]), new objj_method(sel_getUid("clearColor"), function $CPColor__clearColor(self, _cmd) +{ with(self) +{ + if (!cachedClearColor) + cachedClearColor = objj_msgSend(self, "colorWithCalibratedWhite:alpha:", 0.0, 0.0); + return cachedClearColor; +} +},["CPColor"]), new objj_method(sel_getUid("alternateSelectedControlColor"), function $CPColor__alternateSelectedControlColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.22, 0.46, 0.84, 1.0]); +} +},["CPColor"]), new objj_method(sel_getUid("secondarySelectedControlColor"), function $CPColor__secondarySelectedControlColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.83, 0.83, 0.83, 1.0]); +} +},["CPColor"]), new objj_method(sel_getUid("colorWithPatternImage:"), function $CPColor__colorWithPatternImage_(self, _cmd, anImage) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithPatternImage:", anImage); +} +},["CPColor","CPImage"]), new objj_method(sel_getUid("colorWithCSSString:"), function $CPColor__colorWithCSSString_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithCSSString:", aString); +} +},["CPColor","CPString"])]); +} +{ +var the_class = objj_getClass("CPColor") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("set"), function $CPColor__set(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setFill"); + objj_msgSend(self, "setStroke"); +} +},["void"]), new objj_method(sel_getUid("setFill"), function $CPColor__setFill(self, _cmd) +{ with(self) +{ + var ctx = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetFillColor(ctx, self); +} +},["void"]), new objj_method(sel_getUid("setStroke"), function $CPColor__setStroke(self, _cmd) +{ with(self) +{ + var ctx = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetStrokeColor(ctx, self); +} +},["void"])]); +} +{ +var the_class = objj_getClass("CPColor") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +var meta_class = the_class.isa;class_addMethods(meta_class, [new objj_method(sel_getUid("randomColor"), function $CPColor__randomColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", RAND(), RAND(), RAND(), 1.0); +} +},["CPColor"])]); +} +var CPColorComponentsKey = "CPColorComponentsKey", + CPColorPatternImageKey = "CPColorPatternImageKey"; +{ +var the_class = objj_getClass("CPColor") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPColor__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (objj_msgSend(aCoder, "containsValueForKey:", CPColorPatternImageKey)) + return objj_msgSend(self, "_initWithPatternImage:", objj_msgSend(aCoder, "decodeObjectForKey:", CPColorPatternImageKey)); + return objj_msgSend(self, "_initWithRGBA:", objj_msgSend(aCoder, "decodeObjectForKey:", CPColorComponentsKey)); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPColor__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_patternImage) + objj_msgSend(aCoder, "encodeObject:forKey:", _patternImage, CPColorPatternImageKey); + else + objj_msgSend(aCoder, "encodeObject:forKey:", _components, CPColorComponentsKey); +} +},["void","CPCoder"])]); +} +var hexCharacters = "0123456789ABCDEF"; +var hexToRGB = function(hex) +{ + if (hex.length == 3) + hex = hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt(1) + hex.charAt(2) + hex.charAt(2); + if (hex.length != 6) + return null; + hex = hex.toUpperCase(); + for (var i = 0; i < hex.length; i++) + if (hexCharacters.indexOf(hex.charAt(i)) == -1) + return null; + var red = (hexCharacters.indexOf(hex.charAt(0)) * 16 + hexCharacters.indexOf(hex.charAt(1))) / 255.0; + var green = (hexCharacters.indexOf(hex.charAt(2)) * 16 + hexCharacters.indexOf(hex.charAt(3))) / 255.0; + var blue = (hexCharacters.indexOf(hex.charAt(4)) * 16 + hexCharacters.indexOf(hex.charAt(5))) / 255.0; + return [red, green, blue, 1.0]; +}; +var rgbToHex = function(r,g,b) +{ + return byteToHex(r) + byteToHex(g) + byteToHex(b); +}; +var byteToHex = function(n) +{ + if (!n || isNaN(n)) + return "00"; + n = FLOOR(MIN(255, MAX(0, 256 * n))); + return hexCharacters.charAt((n - n % 16) / 16) + + hexCharacters.charAt(n % 16); +}; + +p;14;CPColorPanel.jt;23162;@STATIC;1.0;i;10;CPButton.ji;10;CPCookie.ji;9;CPPanel.ji;8;CPView.ji;15;CPColorPicker.ji;21;CPSliderColorPicker.jt;23041;objj_executeFile("CPButton.j", YES); +objj_executeFile("CPCookie.j", YES); +objj_executeFile("CPPanel.j", YES); +objj_executeFile("CPView.j", YES); +CPColorPanelColorDidChangeNotification = "CPColorPanelColorDidChangeNotification"; +var PREVIEW_HEIGHT = 20.0, + TOOLBAR_HEIGHT = 32.0, + SWATCH_HEIGHT = 14.0, + ICON_WIDTH = 32.0, + ICON_PADDING = 12.0; +var SharedColorPanel = nil, + ColorPickerClasses = []; +CPWheelColorPickerMode = 1; +CPSliderColorPickerMode = 2; +CPColorPickerViewWidth = 265, +CPColorPickerViewHeight = 370; +{var the_class = objj_allocateClassPair(CPPanel, "CPColorPanel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_toolbar"), new objj_ivar("_swatchView"), new objj_ivar("_previewView"), new objj_ivar("_opacitySlider"), new objj_ivar("_colorPickers"), new objj_ivar("_currentView"), new objj_ivar("_activePicker"), new objj_ivar("_color"), new objj_ivar("_target"), new objj_ivar("_action"), new objj_ivar("_mode")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPColorPanel__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorPanel").super_class }, "initWithContentRect:styleMask:", CGRectMake(500.0, 50.0, 219.0, 370.0), (CPTitledWindowMask | CPClosableWindowMask | CPResizableWindowMask)); + if (self) + { + objj_msgSend(objj_msgSend(self, "contentView"), "setBackgroundColor:", objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.95, 1.0)); + objj_msgSend(self, "setTitle:", "Color Panel"); + objj_msgSend(self, "setLevel:", CPFloatingWindowLevel); + objj_msgSend(self, "setFloatingPanel:", YES); + objj_msgSend(self, "setBecomesKeyOnlyIfNeeded:", YES); + objj_msgSend(self, "setMinSize:", CGSizeMake(219.0, 342.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(323.0, 537.0)); + } + return self; +} +},["id"]), new objj_method(sel_getUid("setColor:"), function $CPColorPanel__setColor_(self, _cmd, aColor) +{ with(self) +{ + _color = aColor; + objj_msgSend(_previewView, "setBackgroundColor:", _color); + objj_msgSend(CPApp, "sendAction:to:from:", sel_getUid("changeColor:"), nil, self); + if (_target && _action) + objj_msgSend(CPApp, "sendAction:to:from:", _action, _target, self); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPColorPanelColorDidChangeNotification, self); + objj_msgSend(_activePicker, "setColor:", _color); + objj_msgSend(_opacitySlider, "setFloatValue:", objj_msgSend(_color, "alphaComponent")); +} +},["void","CPColor"]), new objj_method(sel_getUid("setColor:updatePicker:"), function $CPColorPanel__setColor_updatePicker_(self, _cmd, aColor, bool) +{ with(self) +{ + objj_msgSend(self, "setColor:", aColor); + if (bool) + objj_msgSend(_activePicker, "setColor:", _color); +} +},["void","CPColor","BOOL"]), new objj_method(sel_getUid("color"), function $CPColorPanel__color(self, _cmd) +{ with(self) +{ + return _color; +} +},["CPColor"]), new objj_method(sel_getUid("opacity"), function $CPColorPanel__opacity(self, _cmd) +{ with(self) +{ + return objj_msgSend(_opacitySlider, "floatValue"); +} +},["float"]), new objj_method(sel_getUid("setTarget:"), function $CPColorPanel__setTarget_(self, _cmd, aTarget) +{ with(self) +{ + _target = aTarget; +} +},["void","id"]), new objj_method(sel_getUid("target"), function $CPColorPanel__target(self, _cmd) +{ with(self) +{ + return _target; +} +},["id"]), new objj_method(sel_getUid("setAction:"), function $CPColorPanel__setAction_(self, _cmd, anAction) +{ with(self) +{ + _action = anAction; +} +},["void","selector"]), new objj_method(sel_getUid("action"), function $CPColorPanel__action(self, _cmd) +{ with(self) +{ + return _action; +} +},["selector"]), new objj_method(sel_getUid("setMode:"), function $CPColorPanel__setMode_(self, _cmd, mode) +{ with(self) +{ + _mode = mode; +} +},["void","CPColorPanelMode"]), new objj_method(sel_getUid("_setPicker:"), function $CPColorPanel___setPicker_(self, _cmd, sender) +{ with(self) +{ + var picker = _colorPickers[objj_msgSend(sender, "tag")], + view = objj_msgSend(picker, "provideNewView:", NO); + if (!view) + view = objj_msgSend(picker, "provideNewView:", YES); + if (view == _currentView) + return; + if (_currentView) + objj_msgSend(view, "setFrame:", objj_msgSend(_currentView, "frame")); + else + { + var height = (TOOLBAR_HEIGHT + 10 + PREVIEW_HEIGHT + 5 + SWATCH_HEIGHT + 32), + bounds = objj_msgSend(objj_msgSend(self, "contentView"), "bounds"); + objj_msgSend(view, "setFrameSize:", CPSizeMake(bounds.size.width - 10, bounds.size.height - height)); + objj_msgSend(view, "setFrameOrigin:", CPPointMake(5, height)); + } + objj_msgSend(_currentView, "removeFromSuperview"); + objj_msgSend(objj_msgSend(self, "contentView"), "addSubview:", view); + _currentView = view; + _activePicker = picker; + objj_msgSend(picker, "setColor:", objj_msgSend(self, "color")); +} +},["void","id"]), new objj_method(sel_getUid("mode"), function $CPColorPanel__mode(self, _cmd) +{ with(self) +{ + return _mode; +} +},["CPColorPanelMode"]), new objj_method(sel_getUid("orderFront:"), function $CPColorPanel__orderFront_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "_loadContentsIfNecessary"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorPanel").super_class }, "orderFront:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("_loadContentsIfNecessary"), function $CPColorPanel___loadContentsIfNecessary(self, _cmd) +{ with(self) +{ + if (_toolbar) + return; + if (!_color) + _color = objj_msgSend(CPColor, "whiteColor"); + _colorPickers = []; + var count = objj_msgSend(ColorPickerClasses, "count"); + for (var i = 0; i < count; i++) + { + var currentPickerClass = ColorPickerClasses[i], + currentPicker = objj_msgSend(objj_msgSend(currentPickerClass, "alloc"), "initWithPickerMask:colorPanel:", 0, self); + _colorPickers.push(currentPicker); + } + var contentView = objj_msgSend(self, "contentView"), + bounds = objj_msgSend(contentView, "bounds"); + _toolbar = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0, 6, CGRectGetWidth(bounds), TOOLBAR_HEIGHT)); + objj_msgSend(_toolbar, "setAutoresizingMask:", CPViewWidthSizable); + var totalToolbarWidth = count * ICON_WIDTH + (count - 1) * ICON_PADDING, + leftOffset = (CGRectGetWidth(bounds) - totalToolbarWidth) / 2.0, + buttonForLater = nil; + for (var i = 0; i < count; i++) + { + var image = objj_msgSend(_colorPickers[i], "provideNewButtonImage"), + highlightImage = objj_msgSend(_colorPickers[i], "provideNewAlternateButtonImage"), + button = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(leftOffset + i * (ICON_WIDTH + ICON_PADDING), 0, ICON_WIDTH, ICON_WIDTH)); + objj_msgSend(button, "setTag:", i); + objj_msgSend(button, "setTarget:", self); + objj_msgSend(button, "setAction:", sel_getUid("_setPicker:")); + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setAutoresizingMask:", CPViewMinXMargin|CPViewMaxXMargin); + objj_msgSend(button, "setImage:", image); + objj_msgSend(button, "setAlternateImage:", highlightImage); + objj_msgSend(_toolbar, "addSubview:", button); + if (!buttonForLater) + buttonForLater = button; + } + var previewBox = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(76, TOOLBAR_HEIGHT + 10, CGRectGetWidth(bounds) - 86, PREVIEW_HEIGHT)); + _previewView = objj_msgSend(objj_msgSend(_CPColorPanelPreview, "alloc"), "initWithFrame:", CGRectInset(objj_msgSend(previewBox, "bounds"), 2.0, 2.0)); + objj_msgSend(_previewView, "setColorPanel:", self); + objj_msgSend(_previewView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(previewBox, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.8, 1.0)); + objj_msgSend(previewBox, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(previewBox, "addSubview:", _previewView); + var _previewLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(10, TOOLBAR_HEIGHT + 10, 60, 15)); + objj_msgSend(_previewLabel, "setStringValue:", "Preview:"); + objj_msgSend(_previewLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(_previewLabel, "setAlignment:", CPRightTextAlignment); + var swatchBox = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(76, TOOLBAR_HEIGHT + 10 + PREVIEW_HEIGHT + 5, CGRectGetWidth(bounds) - 86, SWATCH_HEIGHT + 2.0)); + objj_msgSend(swatchBox, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.8, 1.0)); + objj_msgSend(swatchBox, "setAutoresizingMask:", CPViewWidthSizable); + _swatchView = objj_msgSend(objj_msgSend(_CPColorPanelSwatches, "alloc"), "initWithFrame:", CGRectInset(objj_msgSend(swatchBox, "bounds"), 1.0, 1.0)); + objj_msgSend(_swatchView, "setColorPanel:", self); + objj_msgSend(_swatchView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(swatchBox, "addSubview:", _swatchView); + var _swatchLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(10, TOOLBAR_HEIGHT + 8 + PREVIEW_HEIGHT + 6, 60, 15)); + objj_msgSend(_swatchLabel, "setStringValue:", "Swatches:"); + objj_msgSend(_swatchLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(_swatchLabel, "setAlignment:", CPRightTextAlignment); + var opacityLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(10, TOOLBAR_HEIGHT + PREVIEW_HEIGHT + 35, 60, 20)); + objj_msgSend(opacityLabel, "setStringValue:", "Opacity:"); + objj_msgSend(opacityLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(opacityLabel, "setAlignment:", CPRightTextAlignment); + _opacitySlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CGRectMake(76, TOOLBAR_HEIGHT + PREVIEW_HEIGHT + 34, CGRectGetWidth(bounds) - 86, 20.0)); + objj_msgSend(_opacitySlider, "setMinValue:", 0.0); + objj_msgSend(_opacitySlider, "setMaxValue:", 1.0); + objj_msgSend(_opacitySlider, "setTarget:", self); + objj_msgSend(_opacitySlider, "setAction:", sel_getUid("setOpacity:")); + objj_msgSend(contentView, "addSubview:", _toolbar); + objj_msgSend(contentView, "addSubview:", previewBox); + objj_msgSend(contentView, "addSubview:", _previewLabel); + objj_msgSend(contentView, "addSubview:", swatchBox); + objj_msgSend(contentView, "addSubview:", _swatchLabel); + objj_msgSend(contentView, "addSubview:", opacityLabel); + objj_msgSend(contentView, "addSubview:", _opacitySlider); + _target = nil; + _action = nil; + _activePicker = nil; + objj_msgSend(_previewView, "setBackgroundColor:", _color); + if (buttonForLater) + objj_msgSend(self, "_setPicker:", buttonForLater); +} +},["void"]), new objj_method(sel_getUid("setOpacity:"), function $CPColorPanel__setOpacity_(self, _cmd, sender) +{ with(self) +{ + var components = objj_msgSend(objj_msgSend(self, "color"), "components"), + alpha = objj_msgSend(sender, "floatValue"); + objj_msgSend(self, "setColor:updatePicker:", objj_msgSend(_color, "colorWithAlphaComponent:", alpha), YES); +} +},["void","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("provideColorPickerClass:"), function $CPColorPanel__provideColorPickerClass_(self, _cmd, aColorPickerSubclass) +{ with(self) +{ + ColorPickerClasses.push(aColorPickerSubclass); +} +},["void","Class"]), new objj_method(sel_getUid("sharedColorPanel"), function $CPColorPanel__sharedColorPanel(self, _cmd) +{ with(self) +{ + if (!SharedColorPanel) + SharedColorPanel = objj_msgSend(objj_msgSend(CPColorPanel, "alloc"), "init"); + return SharedColorPanel; +} +},["CPColorPanel"]), new objj_method(sel_getUid("setPickerMode:"), function $CPColorPanel__setPickerMode_(self, _cmd, mode) +{ with(self) +{ + var panel = objj_msgSend(CPColorPanel, "sharedColorPanel"); + objj_msgSend(panel, "setMode:", mode); +} +},["void","CPColorPanelMode"])]); +} +CPColorDragType = "CPColorDragType"; +var CPColorPanelSwatchesCookie = "CPColorPanelSwatchesCookie"; +{var the_class = objj_allocateClassPair(CPView, "_CPColorPanelSwatches"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_swatches"), new objj_ivar("_dragColor"), new objj_ivar("_colorPanel"), new objj_ivar("_swatchCookie")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPColorPanelSwatches__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPColorPanelSwatches").super_class }, "initWithFrame:", aFrame); + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(CPColor, "grayColor")); + objj_msgSend(self, "registerForDraggedTypes:", objj_msgSend(CPArray, "arrayWithObjects:", CPColorDragType)); + var whiteColor = objj_msgSend(CPColor, "whiteColor"); + _swatchCookie = objj_msgSend(objj_msgSend(CPCookie, "alloc"), "initWithName:", CPColorPanelSwatchesCookie); + var colorList = objj_msgSend(self, "startingColorList"); + _swatches = []; + for(var i=0; i < 50; i++) + { + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CPRectMake(13*i+1, 1, 12, 12)), + fillView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectInset(objj_msgSend(view, "bounds"), 1.0, 1.0)); + objj_msgSend(view, "setBackgroundColor:", whiteColor); + objj_msgSend(fillView, "setBackgroundColor:", (i < colorList.length) ? colorList[i] : whiteColor); + objj_msgSend(view, "addSubview:", fillView); + objj_msgSend(self, "addSubview:", view); + _swatches.push(view); + } + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("isOpaque"), function $_CPColorPanelSwatches__isOpaque(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("startingColorList"), function $_CPColorPanelSwatches__startingColorList(self, _cmd) +{ with(self) +{ + var cookieValue = objj_msgSend(_swatchCookie, "value"); + if(cookieValue == "") + { + return [ + objj_msgSend(CPColor, "blackColor"), + objj_msgSend(CPColor, "darkGrayColor"), + objj_msgSend(CPColor, "grayColor"), + objj_msgSend(CPColor, "lightGrayColor"), + objj_msgSend(CPColor, "whiteColor"), + objj_msgSend(CPColor, "redColor"), + objj_msgSend(CPColor, "greenColor"), + objj_msgSend(CPColor, "blueColor"), + objj_msgSend(CPColor, "yellowColor") + ]; + } + var cookieValue = eval(cookieValue); + var result = []; + for(var i=0; i<cookieValue.length; i++) + result.push(objj_msgSend(CPColor, "colorWithHexString:", cookieValue[i])); + return result; +} +},["CPArray"]), new objj_method(sel_getUid("saveColorList"), function $_CPColorPanelSwatches__saveColorList(self, _cmd) +{ with(self) +{ + var result = []; + for(var i=0; i<_swatches.length; i++) + result.push(objj_msgSend(objj_msgSend(objj_msgSend(_swatches[i], "subviews")[0], "backgroundColor"), "hexString")); + var future = new Date(); + future.setYear(2019); + objj_msgSend(_swatchCookie, "setValue:expires:domain:", JSON.stringify(result), future, nil); +} +},["CPArray"]), new objj_method(sel_getUid("setColorPanel:"), function $_CPColorPanelSwatches__setColorPanel_(self, _cmd, panel) +{ with(self) +{ + _colorPanel = panel; +} +},["void","CPColorPanel"]), new objj_method(sel_getUid("colorPanel"), function $_CPColorPanelSwatches__colorPanel(self, _cmd) +{ with(self) +{ + return _colorPanel; +} +},["CPColorPanel"]), new objj_method(sel_getUid("colorAtIndex:"), function $_CPColorPanelSwatches__colorAtIndex_(self, _cmd, index) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_swatches[index], "subviews")[0], "backgroundColor"); +} +},["CPColor","int"]), new objj_method(sel_getUid("setColor:atIndex:"), function $_CPColorPanelSwatches__setColor_atIndex_(self, _cmd, aColor, index) +{ with(self) +{ + objj_msgSend(objj_msgSend(_swatches[index], "subviews")[0], "setBackgroundColor:", aColor); + objj_msgSend(self, "saveColorList"); +} +},["void","CPColor","int"]), new objj_method(sel_getUid("mouseUp:"), function $_CPColorPanelSwatches__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + bounds = objj_msgSend(self, "bounds"); + if(!CGRectContainsPoint(bounds, point) || point.x > objj_msgSend(self, "bounds").size.width - 1 || point.x < 1) + return NO; + objj_msgSend(_colorPanel, "setColor:updatePicker:", objj_msgSend(self, "colorAtIndex:", FLOOR(point.x / 13)), YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $_CPColorPanelSwatches__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if(point.x > objj_msgSend(self, "bounds").size.width - 1 || point.x < 1) + return NO; + objj_msgSend(objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard), "declareTypes:owner:", objj_msgSend(CPArray, "arrayWithObject:", CPColorDragType), self); + var swatch = _swatches[FLOOR(point.x / 13)]; + _dragColor = objj_msgSend(objj_msgSend(swatch, "subviews")[0], "backgroundColor"); + var bounds = CPRectCreateCopy(objj_msgSend(swatch, "bounds")); + var dragView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", bounds), + dragFillView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectInset(bounds, 1.0, 1.0)); + objj_msgSend(dragView, "setBackgroundColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(dragFillView, "setBackgroundColor:", _dragColor); + objj_msgSend(dragView, "addSubview:", dragFillView); + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", dragView, CPPointMake(point.x - bounds.size.width / 2.0, point.y - bounds.size.height / 2.0), CPPointMake(0.0, 0.0), anEvent, nil, self, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("pasteboard:provideDataForType:"), function $_CPColorPanelSwatches__pasteboard_provideDataForType_(self, _cmd, aPasteboard, aType) +{ with(self) +{ + if(aType == CPColorDragType) + objj_msgSend(aPasteboard, "setData:forType:", objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _dragColor), aType); +} +},["void","CPPasteboard","CPString"]), new objj_method(sel_getUid("performDragOperation:"), function $_CPColorPanelSwatches__performDragOperation_(self, _cmd, aSender) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(aSender, "draggingLocation"), nil), + pasteboard = objj_msgSend(aSender, "draggingPasteboard"), + swatch = nil; + if(!objj_msgSend(pasteboard, "availableTypeFromArray:", [CPColorDragType]) || location.x > objj_msgSend(self, "bounds").size.width - 1 || location.x < 1) + return NO; + objj_msgSend(self, "setColor:atIndex:", objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(pasteboard, "dataForType:", CPColorDragType)), FLOOR(location.x / 13)); +} +},["void","id<CPDraggingInfo>"])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPColorPanelPreview"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_colorPanel")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPColorPanelPreview__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPColorPanelPreview").super_class }, "initWithFrame:", aFrame); + objj_msgSend(self, "registerForDraggedTypes:", objj_msgSend(CPArray, "arrayWithObjects:", CPColorDragType)); + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("setColorPanel:"), function $_CPColorPanelPreview__setColorPanel_(self, _cmd, aPanel) +{ with(self) +{ + _colorPanel = aPanel; +} +},["void","CPColorPanel"]), new objj_method(sel_getUid("colorPanel"), function $_CPColorPanelPreview__colorPanel(self, _cmd) +{ with(self) +{ + return _colorPanel; +} +},["CPColorPanel"]), new objj_method(sel_getUid("performDragOperation:"), function $_CPColorPanelPreview__performDragOperation_(self, _cmd, aSender) +{ with(self) +{ + var pasteboard = objj_msgSend(aSender, "draggingPasteboard"); + if (!objj_msgSend(pasteboard, "availableTypeFromArray:", [CPColorDragType])) + return NO; + var color = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(pasteboard, "dataForType:", CPColorDragType)); + objj_msgSend(_colorPanel, "setColor:updatePicker:", color, YES); +} +},["void","id<CPDraggingInfo>"]), new objj_method(sel_getUid("isOpaque"), function $_CPColorPanelPreview__isOpaque(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("mouseDragged:"), function $_CPColorPanelPreview__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + objj_msgSend(objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard), "declareTypes:owner:", [CPColorDragType], self); + var bounds = CPRectMake(0, 0, 15, 15); + var dragView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", bounds), + dragFillView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectInset(bounds, 1.0, 1.0)); + objj_msgSend(dragView, "setBackgroundColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(dragFillView, "setBackgroundColor:", objj_msgSend(self, "backgroundColor")); + objj_msgSend(dragView, "addSubview:", dragFillView); + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", dragView, CPPointMake(point.x - bounds.size.width / 2.0, point.y - bounds.size.height / 2.0), CPPointMake(0.0, 0.0), anEvent, nil, self, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("pasteboard:provideDataForType:"), function $_CPColorPanelPreview__pasteboard_provideDataForType_(self, _cmd, aPasteboard, aType) +{ with(self) +{ + if (aType == CPColorDragType) + objj_msgSend(aPasteboard, "setData:forType:", objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", objj_msgSend(self, "backgroundColor")), aType); +} +},["void","CPPasteboard","CPString"])]); +} +objj_executeFile("CPColorPicker.j", YES); +objj_executeFile("CPSliderColorPicker.j", YES); +objj_msgSend(CPColorPanel, "provideColorPickerClass:", CPColorWheelColorPicker); +objj_msgSend(CPColorPanel, "provideColorPickerClass:", CPSliderColorPicker); + +p;15;CPColorPicker.jt;13684;@STATIC;1.0;I;21;Foundation/CPObject.ji;14;CPColorPanel.jt;13619;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CPColorPanel.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPColorPicker"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_panel"), new objj_ivar("_mask")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithPickerMask:colorPanel:"), function $CPColorPicker__initWithPickerMask_colorPanel_(self, _cmd, aMask, aPanel) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorPicker").super_class }, "init"); + _panel = aPanel; + _mask = aMask; + return self; +} +},["id","int","CPColorPanel"]), new objj_method(sel_getUid("colorPanel"), function $CPColorPicker__colorPanel(self, _cmd) +{ with(self) +{ + return _panel; +} +},["CPColorPanel"]), new objj_method(sel_getUid("provideNewButtonImage"), function $CPColorPicker__provideNewButtonImage(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPImage"]), new objj_method(sel_getUid("setMode:"), function $CPColorPicker__setMode_(self, _cmd, mode) +{ with(self) +{ + return; +} +},["void","CPColorPanelMode"]), new objj_method(sel_getUid("setColor:"), function $CPColorPicker__setColor_(self, _cmd, aColor) +{ with(self) +{ + return; +} +},["void","CPColor"])]); +} +{var the_class = objj_allocateClassPair(CPColorPicker, "CPColorWheelColorPicker"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_pickerView"), new objj_ivar("_brightnessSlider"), new objj_ivar("_hueSaturationView"), new objj_ivar("_cachedColor")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithPickerMask:colorPanel:"), function $CPColorWheelColorPicker__initWithPickerMask_colorPanel_(self, _cmd, mask, owningColorPanel) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorWheelColorPicker").super_class }, "initWithPickerMask:colorPanel:", mask, owningColorPanel); +} +},["id","int","CPColorPanel"]), new objj_method(sel_getUid("initView"), function $CPColorWheelColorPicker__initView(self, _cmd) +{ with(self) +{ + aFrame = CPRectMake(0, 0, CPColorPickerViewWidth, CPColorPickerViewHeight); + _pickerView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", aFrame); + objj_msgSend(_pickerView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + _brightnessSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CGRectMake(0, (aFrame.size.height - 34), aFrame.size.width, 15)); + objj_msgSend(_brightnessSlider, "setValue:forThemeAttribute:", 15.0, "track-width"); + objj_msgSend(_brightnessSlider, "setValue:forThemeAttribute:", objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPColorPicker, "class")), "pathForResource:", "brightness_bar.png"))), "track-color"); + objj_msgSend(_brightnessSlider, "setMinValue:", 0.0); + objj_msgSend(_brightnessSlider, "setMaxValue:", 100.0); + objj_msgSend(_brightnessSlider, "setFloatValue:", 100.0); + objj_msgSend(_brightnessSlider, "setTarget:", self); + objj_msgSend(_brightnessSlider, "setAction:", sel_getUid("brightnessSliderDidChange:")); + objj_msgSend(_brightnessSlider, "setAutoresizingMask:", CPViewWidthSizable | CPViewMinYMargin); + _hueSaturationView = objj_msgSend(objj_msgSend(__CPColorWheel, "alloc"), "initWithFrame:", CPRectMake(0, 0, aFrame.size.width, aFrame.size.height - 38)); + objj_msgSend(_hueSaturationView, "setDelegate:", self); + objj_msgSend(_hueSaturationView, "setAutoresizingMask:", (CPViewWidthSizable | CPViewHeightSizable)); + objj_msgSend(_pickerView, "addSubview:", _hueSaturationView); + objj_msgSend(_pickerView, "addSubview:", _brightnessSlider); +} +},["id"]), new objj_method(sel_getUid("brightnessSliderDidChange:"), function $CPColorWheelColorPicker__brightnessSliderDidChange_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "updateColor"); +} +},["void","id"]), new objj_method(sel_getUid("colorWheelDidChange:"), function $CPColorWheelColorPicker__colorWheelDidChange_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "updateColor"); +} +},["void","id"]), new objj_method(sel_getUid("updateColor"), function $CPColorWheelColorPicker__updateColor(self, _cmd) +{ with(self) +{ + var hue = objj_msgSend(_hueSaturationView, "angle"), + saturation = objj_msgSend(_hueSaturationView, "distance"), + brightness = objj_msgSend(_brightnessSlider, "floatValue"); + objj_msgSend(_hueSaturationView, "setWheelBrightness:", brightness / 100.0); + objj_msgSend(_brightnessSlider, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithHue:saturation:brightness:", hue, saturation, 100)); + var colorPanel = objj_msgSend(self, "colorPanel"), + opacity = objj_msgSend(colorPanel, "opacity"); + _cachedColor = objj_msgSend(CPColor, "colorWithHue:saturation:brightness:alpha:", hue, saturation, brightness, opacity); + objj_msgSend(objj_msgSend(self, "colorPanel"), "setColor:", _cachedColor); +} +},["void"]), new objj_method(sel_getUid("supportsMode:"), function $CPColorWheelColorPicker__supportsMode_(self, _cmd, mode) +{ with(self) +{ + return (mode == CPWheelColorPickerMode) ? YES : NO; +} +},["BOOL","int"]), new objj_method(sel_getUid("currentMode"), function $CPColorWheelColorPicker__currentMode(self, _cmd) +{ with(self) +{ + return CPWheelColorPickerMode; +} +},["int"]), new objj_method(sel_getUid("provideNewView:"), function $CPColorWheelColorPicker__provideNewView_(self, _cmd, initialRequest) +{ with(self) +{ + if (initialRequest) + objj_msgSend(self, "initView"); + return _pickerView; +} +},["CPView","BOOL"]), new objj_method(sel_getUid("setColor:"), function $CPColorWheelColorPicker__setColor_(self, _cmd, newColor) +{ with(self) +{ + if (objj_msgSend(newColor, "isEqual:", _cachedColor)) + return; + var hsb = objj_msgSend(newColor, "hsbComponents"); + objj_msgSend(_hueSaturationView, "setPositionToColor:", newColor); + objj_msgSend(_brightnessSlider, "setFloatValue:", hsb[2]); + objj_msgSend(_hueSaturationView, "setWheelBrightness:", hsb[2] / 100.0); + objj_msgSend(_brightnessSlider, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithHue:saturation:brightness:", hsb[0], hsb[1], 100)); +} +},["void","CPColor"]), new objj_method(sel_getUid("provideNewButtonImage"), function $CPColorWheelColorPicker__provideNewButtonImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "wheel_button.png"), CGSizeMake(32, 32)); +} +},["CPImage"]), new objj_method(sel_getUid("provideNewAlternateButtonImage"), function $CPColorWheelColorPicker__provideNewAlternateButtonImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "wheel_button_h.png"), CGSizeMake(32, 32)); +} +},["CPImage"])]); +} +{var the_class = objj_allocateClassPair(CPView, "__CPColorWheel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_wheelImage"), new objj_ivar("_blackWheelImage"), new objj_ivar("_crosshair"), new objj_ivar("_delegate"), new objj_ivar("_angle"), new objj_ivar("_distance"), new objj_ivar("_radius")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $__CPColorWheel__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("__CPColorWheel").super_class }, "initWithFrame:", aFrame); + var path = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "wheel.png"); + _wheelImage = new Image(); + _wheelImage.src = path; + _wheelImage.style.position = "absolute"; + path = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "wheel_black.png"); + _blackWheelImage = new Image(); + _blackWheelImage.src = path; + _blackWheelImage.style.opacity = "0"; + _blackWheelImage.style.filter = "alpha(opacity=0)" + _blackWheelImage.style.position = "absolute"; + _DOMElement.appendChild(_wheelImage); + _DOMElement.appendChild(_blackWheelImage); + objj_msgSend(self, "setWheelSize:", aFrame.size); + _crosshair = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CPRectMake(_radius - 2, _radius - 2, 4, 4)); + objj_msgSend(_crosshair, "setBackgroundColor:", objj_msgSend(CPColor, "blackColor")); + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectInset(objj_msgSend(_crosshair, "bounds"), 1.0, 1.0)); + objj_msgSend(view, "setBackgroundColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_crosshair, "addSubview:", view); + objj_msgSend(self, "addSubview:", _crosshair); + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("setWheelBrightness:"), function $__CPColorWheel__setWheelBrightness_(self, _cmd, brightness) +{ with(self) +{ + _blackWheelImage.style.opacity = 1.0 - brightness; + _blackWheelImage.style.filter = "alpha(opacity=" + (1.0 - brightness)*100 + ")" +} +},["void","float"]), new objj_method(sel_getUid("setFrameSize:"), function $__CPColorWheel__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("__CPColorWheel").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "setWheelSize:", aSize); +} +},["void","CPSize"]), new objj_method(sel_getUid("setWheelSize:"), function $__CPColorWheel__setWheelSize_(self, _cmd, aSize) +{ with(self) +{ + var min = MIN(aSize.width, aSize.height); + _blackWheelImage.style.width = min; + _blackWheelImage.style.height = min; + _blackWheelImage.width = min; + _blackWheelImage.height = min; + _blackWheelImage.style.top = (aSize.height - min) / 2.0 + "px"; + _blackWheelImage.style.left = (aSize.width - min) / 2.0 + "px"; + _wheelImage.style.width = min; + _wheelImage.style.height = min; + _wheelImage.width = min; + _wheelImage.height = min; + _wheelImage.style.top = (aSize.height - min) / 2.0 + "px"; + _wheelImage.style.left = (aSize.width - min) / 2.0 + "px"; + _radius = min / 2.0; + objj_msgSend(self, "setAngle:distance:", objj_msgSend(self, "degreesToRadians:", _angle), (_distance / 100.0) * _radius); +} +},["void","CPSize"]), new objj_method(sel_getUid("setDelegate:"), function $__CPColorWheel__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $__CPColorWheel__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("angle"), function $__CPColorWheel__angle(self, _cmd) +{ with(self) +{ + return _angle; +} +},["float"]), new objj_method(sel_getUid("distance"), function $__CPColorWheel__distance(self, _cmd) +{ with(self) +{ + return _distance; +} +},["float"]), new objj_method(sel_getUid("mouseDown:"), function $__CPColorWheel__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "reposition:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $__CPColorWheel__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "reposition:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("reposition:"), function $__CPColorWheel__reposition_(self, _cmd, anEvent) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + var midX = CGRectGetMidX(bounds); + var midY = CGRectGetMidY(bounds); + var distance = MIN(SQRT((location.x - midX)*(location.x - midX) + (location.y - midY)*(location.y - midY)), _radius); + var angle = ATAN2(location.y - midY, location.x - midX); + objj_msgSend(self, "setAngle:distance:", angle, distance); + objj_msgSend(_delegate, "colorWheelDidChange:", self); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setAngle:distance:"), function $__CPColorWheel__setAngle_distance_(self, _cmd, angle, distance) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + var midX = CGRectGetMidX(bounds); + var midY = CGRectGetMidY(bounds); + _angle = objj_msgSend(self, "radiansToDegrees:", angle); + _distance = (distance / _radius) * 100.0; + objj_msgSend(_crosshair, "setFrameOrigin:", CPPointMake(COS(angle) * distance + midX - 2.0, SIN(angle) * distance + midY - 2.0)); +} +},["void","int","float"]), new objj_method(sel_getUid("setPositionToColor:"), function $__CPColorWheel__setPositionToColor_(self, _cmd, aColor) +{ with(self) +{ + var hsb = objj_msgSend(aColor, "hsbComponents"), + bounds = objj_msgSend(self, "bounds"); + var angle = objj_msgSend(self, "degreesToRadians:", hsb[0]), + distance = (hsb[1] / 100.0) * _radius; + objj_msgSend(self, "setAngle:distance:", angle, distance); +} +},["void","CPColor"]), new objj_method(sel_getUid("radiansToDegrees:"), function $__CPColorWheel__radiansToDegrees_(self, _cmd, radians) +{ with(self) +{ + return ((-radians / PI) * 180 + 360) % 360; +} +},["int","float"]), new objj_method(sel_getUid("degreesToRadians:"), function $__CPColorWheel__degreesToRadians_(self, _cmd, degrees) +{ with(self) +{ + return -(((degrees - 360) / 180) * PI); +} +},["float","float"])]); +} + +p;13;CPColorWell.jt;8577;@STATIC;1.0;I;21;Foundation/CPString.ji;8;CPView.ji;9;CPColor.ji;14;CPColorPanel.jt;8488;objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPColor.j", YES); +objj_executeFile("CPColorPanel.j", YES); +var _CPColorWellDidBecomeExclusiveNotification = "_CPColorWellDidBecomeExclusiveNotification"; +{var the_class = objj_allocateClassPair(CPControl, "CPColorWell"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_active"), new objj_ivar("_bordered"), new objj_ivar("_color"), new objj_ivar("_wellView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPColorWell__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorWell").super_class }, "initWithFrame:", aFrame); + if (self) + { + _active = NO; + _bordered = YES; + _color = objj_msgSend(CPColor, "whiteColor"); + objj_msgSend(self, "drawBezelWithHighlight:", NO); + objj_msgSend(self, "drawWellInside:", CGRectInset(objj_msgSend(self, "bounds"), 3.0, 3.0)); + objj_msgSend(self, "_registerForNotifications"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("_registerForNotifications"), function $CPColorWell___registerForNotifications(self, _cmd) +{ with(self) +{ + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("colorWellDidBecomeExclusive:"), _CPColorWellDidBecomeExclusiveNotification, nil); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("colorPanelWillClose:"), CPWindowWillCloseNotification, objj_msgSend(CPColorPanel, "sharedColorPanel")); +} +},["void"]), new objj_method(sel_getUid("isBordered"), function $CPColorWell__isBordered(self, _cmd) +{ with(self) +{ + return _bordered; +} +},["BOOL"]), new objj_method(sel_getUid("setBordered:"), function $CPColorWell__setBordered_(self, _cmd, bordered) +{ with(self) +{ + if (_bordered == bordered) + return; + _bordered = bordered; + objj_msgSend(self, "drawWellInside:", CGRectInset(objj_msgSend(self, "bounds"), 3.0, 3.0)); +} +},["void","BOOL"]), new objj_method(sel_getUid("color"), function $CPColorWell__color(self, _cmd) +{ with(self) +{ + return _color; +} +},["CPColor"]), new objj_method(sel_getUid("setColor:"), function $CPColorWell__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (_color == aColor) + return; + _color = aColor; + objj_msgSend(self, "drawWellInside:", CGRectInset(objj_msgSend(self, "bounds"), 3.0, 3.0)); +} +},["void","CPColor"]), new objj_method(sel_getUid("takeColorFrom:"), function $CPColorWell__takeColorFrom_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "setColor:", objj_msgSend(aSender, "color")); +} +},["void","id"]), new objj_method(sel_getUid("activate:"), function $CPColorWell__activate_(self, _cmd, shouldBeExclusive) +{ with(self) +{ + if (shouldBeExclusive) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", _CPColorWellDidBecomeExclusiveNotification, self); + if (objj_msgSend(self, "isActive")) + return; + _active = YES; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "addObserver:selector:name:object:", self, sel_getUid("colorPanelDidChangeColor:"), CPColorPanelColorDidChangeNotification, objj_msgSend(CPColorPanel, "sharedColorPanel")); +} +},["void","BOOL"]), new objj_method(sel_getUid("deactivate"), function $CPColorWell__deactivate(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "isActive")) + return; + _active = NO; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "removeObserver:name:object:", self, CPColorPanelColorDidChangeNotification, objj_msgSend(CPColorPanel, "sharedColorPanel")); +} +},["void"]), new objj_method(sel_getUid("isActive"), function $CPColorWell__isActive(self, _cmd) +{ with(self) +{ + return _active; +} +},["BOOL"]), new objj_method(sel_getUid("drawBezelWithHighlight:"), function $CPColorWell__drawBezelWithHighlight_(self, _cmd, shouldHighlight) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("drawWellInside:"), function $CPColorWell__drawWellInside_(self, _cmd, aRect) +{ with(self) +{ + if (!_wellView) + { + _wellView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", aRect); + objj_msgSend(_wellView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(self, "addSubview:", _wellView); + } + else + objj_msgSend(_wellView, "setFrame:", aRect); + objj_msgSend(_wellView, "setBackgroundColor:", _color); +} +},["void","CGRect"]), new objj_method(sel_getUid("colorPanelDidChangeColor:"), function $CPColorWell__colorPanelDidChangeColor_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "takeColorFrom:", objj_msgSend(aNotification, "object")); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); +} +},["void","CPNotification"]), new objj_method(sel_getUid("colorWellDidBecomeExclusive:"), function $CPColorWell__colorWellDidBecomeExclusive_(self, _cmd, aNotification) +{ with(self) +{ + if (self != objj_msgSend(aNotification, "object")) + objj_msgSend(self, "deactivate"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("colorPanelWillClose:"), function $CPColorWell__colorPanelWillClose_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "deactivate"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("mouseDown:"), function $CPColorWell__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "drawBezelWithHighlight:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $CPColorWell__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "drawBezelWithHighlight:", CGRectContainsPoint(objj_msgSend(self, "bounds"), objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil))); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPColorWell__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "drawBezelWithHighlight:", NO); + if (!CGRectContainsPoint(objj_msgSend(self, "bounds"), objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil)) || !objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "activate:", YES); + var colorPanel = objj_msgSend(CPColorPanel, "sharedColorPanel"); + objj_msgSend(colorPanel, "setColor:", _color); + objj_msgSend(colorPanel, "orderFront:", self); +} +},["void","CPEvent"])]); +} +var CPColorWellColorKey = "CPColorWellColorKey", + CPColorWellBorderedKey = "CPColorWellBorderedKey"; +{ +var the_class = objj_getClass("CPColorWell") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPColorWell\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPColorWell__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorWell").super_class }, "initWithCoder:", aCoder); + if (self) + { + _active = NO; + _bordered = objj_msgSend(aCoder, "decodeBoolForKey:", CPColorWellBorderedKey); + _color = objj_msgSend(aCoder, "decodeObjectForKey:", CPColorWellColorKey); + objj_msgSend(self, "drawBezelWithHighlight:", NO); + objj_msgSend(self, "drawWellInside:", CGRectInset(objj_msgSend(self, "bounds"), 3.0, 3.0)); + objj_msgSend(self, "_registerForNotifications"); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPColorWell__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + var actualSubviews = _subviews; + _subviews = objj_msgSend(_subviews, "copy"); + objj_msgSend(_subviews, "removeObjectIdenticalTo:", _wellView); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorWell").super_class }, "encodeWithCoder:", aCoder); + _subviews = actualSubviews; + objj_msgSend(aCoder, "encodeObject:forKey:", _color, CPColorWellColorKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _bordered, CPColorWellBorderedKey); +} +},["void","CPCoder"])]); +} + +p;17;CPCompatibility.jt;5406;@STATIC;1.0;i;9;CPEvent.ji;12;CPPlatform.jt;5357;objj_executeFile("CPEvent.j", YES); +objj_executeFile("CPPlatform.j", YES); +CPUnknownBrowserEngine = 0; +CPGeckoBrowserEngine = 1; +CPInternetExplorerBrowserEngine = 2; +CPKHTMLBrowserEngine = 3; +CPOperaBrowserEngine = 4; +CPWebKitBrowserEngine = 5; +CPMacOperatingSystem = 0; +CPWindowsOperatingSystem = 1; +CPOtherOperatingSystem = 2; +CPCSSRGBAFeature = 1 << 5; +CPHTMLCanvasFeature = 1 << 6; +CPHTMLContentEditableFeature = 1 << 7; +CPHTMLDragAndDropFeature = 1 << 8; +CPJavascriptInnerTextFeature = 1 << 9; +CPJavascriptTextContentFeature = 1 << 10; +CPJavascriptClipboardEventsFeature = 1 << 11; +CPJavascriptClipboardAccessFeature = 1 << 12; +CPJavaScriptCanvasDrawFeature = 1 << 13; +CPJavaScriptCanvasTransformFeature = 1 << 14; +CPVMLFeature = 1 << 15; +CPJavascriptRemedialKeySupport = 1 << 16; +CPJavaScriptShadowFeature = 1 << 20; +CPJavaScriptNegativeMouseWheelValues = 1 << 22; +CPJavaScriptMouseWheelValues_8_15 = 1 << 23 +CPOpacityRequiresFilterFeature = 1 << 24; +CPInputTypeCanBeChangedFeature = 1 << 25; +CPHTML5DragAndDropSourceYOffBy1 = 1 << 26; +var USER_AGENT = "", + PLATFORM_ENGINE = CPUnknownBrowserEngine, + PLATFORM_FEATURES = 0; +PLATFORM_FEATURES |= CPInputTypeCanBeChangedFeature; +if (typeof window !== "undefined" && typeof window.navigator !== "undefined") + USER_AGENT = window.navigator.userAgent; +if (window.opera) +{ + PLATFORM_ENGINE = CPOperaBrowserEngine; + PLATFORM_FEATURES |= CPJavaScriptCanvasDrawFeature; +} +else if (window.attachEvent) +{ + PLATFORM_ENGINE = CPInternetExplorerBrowserEngine; + PLATFORM_FEATURES |= CPVMLFeature; + PLATFORM_FEATURES |= CPJavascriptRemedialKeySupport; + PLATFORM_FEATURES |= CPJavaScriptShadowFeature; + PLATFORM_FEATURES |= CPOpacityRequiresFilterFeature; + PLATFORM_FEATURES &= ~CPInputTypeCanBeChangedFeature; +} +else if (USER_AGENT.indexOf("AppleWebKit/") != -1) +{ + PLATFORM_ENGINE = CPWebKitBrowserEngine; + PLATFORM_FEATURES |= CPCSSRGBAFeature; + PLATFORM_FEATURES |= CPHTMLContentEditableFeature; + if (USER_AGENT.indexOf("Chrome") === -1) + PLATFORM_FEATURES |= CPHTMLDragAndDropFeature; + PLATFORM_FEATURES |= CPJavascriptClipboardEventsFeature; + PLATFORM_FEATURES |= CPJavascriptClipboardAccessFeature; + PLATFORM_FEATURES |= CPJavaScriptShadowFeature; + var versionStart = USER_AGENT.indexOf("AppleWebKit/") + "AppleWebKit/".length, + versionEnd = USER_AGENT.indexOf(" ", versionStart), + versionString = USER_AGENT.substring(versionStart, versionEnd), + versionDivision = versionString.indexOf('.'), + majorVersion = parseInt(versionString.substring(0, versionDivision)), + minorVersion = parseInt(versionString.substr(versionDivision + 1)); + if((USER_AGENT.indexOf("Safari") !== CPNotFound && (majorVersion > 525 || (majorVersion === 525 && minorVersion > 14))) || USER_AGENT.indexOf("Chrome") !== CPNotFound) + PLATFORM_FEATURES |= CPJavascriptRemedialKeySupport; + if (!objj_msgSend(CPPlatform, "isBrowser")) + PLATFORM_FEATURES |= CPJavascriptRemedialKeySupport; + if (majorVersion < 532 || (majorVersion === 532 && minorVersion < 6)) + PLATFORM_FEATURES |= CPHTML5DragAndDropSourceYOffBy1; +} +else if (USER_AGENT.indexOf("KHTML") != -1) +{ + PLATFORM_ENGINE = CPKHTMLBrowserEngine; +} +else if (USER_AGENT.indexOf("Gecko") !== -1) +{ + PLATFORM_ENGINE = CPGeckoBrowserEngine; + PLATFORM_FEATURES |= CPJavaScriptCanvasDrawFeature; + var index = USER_AGENT.indexOf("Firefox"), + version = (index === -1) ? 2.0 : parseFloat(USER_AGENT.substring(index + "Firefox".length + 1)); + if (version >= 3.0) + PLATFORM_FEATURES |= CPCSSRGBAFeature; + if (version < 3.0) + PLATFORM_FEATURES |= CPJavaScriptMouseWheelValues_8_15; +} +if (typeof document != "undefined") +{ + var canvasElement = document.createElement("canvas"); + if (canvasElement && canvasElement.getContext) + { + PLATFORM_FEATURES |= CPHTMLCanvasFeature; + var context = document.createElement("canvas").getContext("2d"); + if (context && context.setTransform && context.transform) + PLATFORM_FEATURES |= CPJavaScriptCanvasTransformFeature; + } + var DOMElement = document.createElement("div"); + if (DOMElement.innerText != undefined) + PLATFORM_FEATURES |= CPJavascriptInnerTextFeature; + else if (DOMElement.textContent != undefined) + PLATFORM_FEATURES |= CPJavascriptTextContentFeature; +} +CPFeatureIsCompatible= function(aFeature) +{ + return PLATFORM_FEATURES & aFeature; +} +CPBrowserIsEngine= function(anEngine) +{ + return PLATFORM_ENGINE === anEngine; +} +CPBrowserIsOperatingSystem= function(anOperatingSystem) +{ + return OPERATING_SYSTEM === anOperatingSystem; +} +OPERATING_SYSTEM = CPOtherOperatingSystem; +if (USER_AGENT.indexOf("Mac") !== -1) +{ + OPERATING_SYSTEM = CPMacOperatingSystem; + CPPlatformActionKeyMask = CPCommandKeyMask; + CPUndoKeyEquivalent = "z"; + CPRedoKeyEquivalent = "Z"; + CPUndoKeyEquivalentModifierMask = CPCommandKeyMask; + CPRedoKeyEquivalentModifierMask = CPCommandKeyMask; +} +else +{ + if (USER_AGENT.indexOf("Windows") !== -1) + OPERATING_SYSTEM = CPWindowsOperatingSystem; + CPPlatformActionKeyMask = CPControlKeyMask; + CPUndoKeyEquivalent = "z"; + CPRedoKeyEquivalent = "y"; + CPUndoKeyEquivalentModifierMask = CPControlKeyMask; + CPRedoKeyEquivalentModifierMask = CPControlKeyMask; +} + +p;11;CPControl.jt;27099;@STATIC;1.0;i;8;CPFont.ji;10;CPShadow.ji;8;CPView.ji;19;CPKeyValueBinding.jt;27016;objj_executeFile("CPFont.j", YES); +objj_executeFile("CPShadow.j", YES); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPKeyValueBinding.j", YES); +CPLeftTextAlignment = 0; +CPRightTextAlignment = 1; +CPCenterTextAlignment = 2; +CPJustifiedTextAlignment = 3; +CPNaturalTextAlignment = 4; +CPRegularControlSize = 0; +CPSmallControlSize = 1; +CPMiniControlSize = 2; +CPLineBreakByWordWrapping = 0; +CPLineBreakByCharWrapping = 1; +CPLineBreakByClipping = 2; +CPLineBreakByTruncatingHead = 3; +CPLineBreakByTruncatingTail = 4; +CPLineBreakByTruncatingMiddle = 5; +CPTopVerticalTextAlignment = 1, +CPCenterVerticalTextAlignment = 2, +CPBottomVerticalTextAlignment = 3; +CPScaleProportionally = 0; +CPScaleToFit = 1; +CPScaleNone = 2; +CPNoImage = 0; +CPImageOnly = 1; +CPImageLeft = 2; +CPImageRight = 3; +CPImageBelow = 4; +CPImageAbove = 5; +CPImageOverlaps = 6; +CPOnState = 1; +CPOffState = 0; +CPMixedState = -1; +CPControlNormalBackgroundColor = "CPControlNormalBackgroundColor"; +CPControlSelectedBackgroundColor = "CPControlSelectedBackgroundColor"; +CPControlHighlightedBackgroundColor = "CPControlHighlightedBackgroundColor"; +CPControlDisabledBackgroundColor = "CPControlDisabledBackgroundColor"; +CPControlTextDidBeginEditingNotification = "CPControlTextDidBeginEditingNotification"; +CPControlTextDidChangeNotification = "CPControlTextDidChangeNotification"; +CPControlTextDidEndEditingNotification = "CPControlTextDidEndEditingNotification"; +var CPControlBlackColor = objj_msgSend(CPColor, "blackColor"); +{var the_class = objj_allocateClassPair(CPView, "CPControl"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_value"), new objj_ivar("_target"), new objj_ivar("_action"), new objj_ivar("_sendActionOn"), new objj_ivar("_sendsActionOnEndEditing"), new objj_ivar("_continuousTracking"), new objj_ivar("_trackingWasWithinFrame"), new objj_ivar("_trackingMouseDownFlags"), new objj_ivar("_previousTrackingLocation"), new objj_ivar("_toolTip")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("sendsActionOnEndEditing"), function $CPControl__sendsActionOnEndEditing(self, _cmd) +{ with(self) +{ +return _sendsActionOnEndEditing; +} +},["id"]), +new objj_method(sel_getUid("setSendsActionOnEndEditing:"), function $CPControl__setSendsActionOnEndEditing_(self, _cmd, newValue) +{ with(self) +{ +_sendsActionOnEndEditing = newValue; +} +},["void","id"]), new objj_method(sel_getUid("_reverseSetBinding"), function $CPControl___reverseSetBinding(self, _cmd) +{ with(self) +{ + var theBinding = objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", CPValueBinding, self); + objj_msgSend(theBinding, "reverseSetValueFor:", "objectValue"); +} +},["void"]), new objj_method(sel_getUid("_replacementKeyPathForBinding:"), function $CPControl___replacementKeyPathForBinding_(self, _cmd, aBinding) +{ with(self) +{ + if (aBinding === "value") + return "objectValue"; + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControl").super_class }, "_replacementKeyPathForBinding:", aBinding); +} +},["void","CPString"]), new objj_method(sel_getUid("initWithFrame:"), function $CPControl__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControl").super_class }, "initWithFrame:", aFrame); + if (self) + { + _sendActionOn = CPLeftMouseUpMask; + _trackingMouseDownFlags = 0; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setAction:"), function $CPControl__setAction_(self, _cmd, anAction) +{ with(self) +{ + _action = anAction; +} +},["void","SEL"]), new objj_method(sel_getUid("action"), function $CPControl__action(self, _cmd) +{ with(self) +{ + return _action; +} +},["SEL"]), new objj_method(sel_getUid("setTarget:"), function $CPControl__setTarget_(self, _cmd, aTarget) +{ with(self) +{ + _target = aTarget; +} +},["void","id"]), new objj_method(sel_getUid("target"), function $CPControl__target(self, _cmd) +{ with(self) +{ + return _target; +} +},["id"]), new objj_method(sel_getUid("sendAction:to:"), function $CPControl__sendAction_to_(self, _cmd, anAction, anObject) +{ with(self) +{ + objj_msgSend(self, "_reverseSetBinding"); + objj_msgSend(CPApp, "sendAction:to:from:", anAction, anObject, self); +} +},["void","SEL","id"]), new objj_method(sel_getUid("sendActionOn:"), function $CPControl__sendActionOn_(self, _cmd, mask) +{ with(self) +{ + var previousMask = _sendActionOn; + _sendActionOn = mask; + return previousMask; +} +},["int","int"]), new objj_method(sel_getUid("isContinuous"), function $CPControl__isContinuous(self, _cmd) +{ with(self) +{ + return (_sendActionOn & CPPeriodicMask) !== 0; +} +},["BOOL"]), new objj_method(sel_getUid("setContinuous:"), function $CPControl__setContinuous_(self, _cmd, flag) +{ with(self) +{ + if (flag) + _sendActionOn |= CPPeriodicMask; + else + _sendActionOn &= ~CPPeriodicMask; +} +},["void","BOOL"]), new objj_method(sel_getUid("tracksMouseOutsideOfFrame"), function $CPControl__tracksMouseOutsideOfFrame(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("trackMouse:"), function $CPControl__trackMouse_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + currentLocation = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + isWithinFrame = objj_msgSend(self, "tracksMouseOutsideOfFrame") || CGRectContainsPoint(objj_msgSend(self, "bounds"), currentLocation); + if (type === CPLeftMouseUp) + { + objj_msgSend(self, "stopTracking:at:mouseIsUp:", _previousTrackingLocation, currentLocation, YES); + _trackingMouseDownFlags = 0; + } + else + { + if (type === CPLeftMouseDown) + { + _trackingMouseDownFlags = objj_msgSend(anEvent, "modifierFlags"); + _continuousTracking = objj_msgSend(self, "startTrackingAt:", currentLocation); + } + else if (type === CPLeftMouseDragged) + { + if (isWithinFrame) + { + if (!_trackingWasWithinFrame) + _continuousTracking = objj_msgSend(self, "startTrackingAt:", currentLocation); + else if (_continuousTracking) + _continuousTracking = objj_msgSend(self, "continueTracking:at:", _previousTrackingLocation, currentLocation); + } + else + objj_msgSend(self, "stopTracking:at:mouseIsUp:", _previousTrackingLocation, currentLocation, NO); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackMouse:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); + } + if ((_sendActionOn & (1 << type)) && isWithinFrame) + objj_msgSend(self, "sendAction:to:", _action, _target); + _trackingWasWithinFrame = isWithinFrame; + _previousTrackingLocation = currentLocation; +} +},["void","CPEvent"]), new objj_method(sel_getUid("setState:"), function $CPControl__setState_(self, _cmd, state) +{ with(self) +{ +} +},["void","int"]), new objj_method(sel_getUid("nextState"), function $CPControl__nextState(self, _cmd) +{ with(self) +{ + return 0; +} +},["int"]), new objj_method(sel_getUid("performClick:"), function $CPControl__performClick_(self, _cmd, sender) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "highlight:", YES); + objj_msgSend(self, "setState:", objj_msgSend(self, "nextState")); + try + { + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + } + catch (e) + { + throw e; + } + finally + { + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", 0.1, self, sel_getUid("unhighlightButtonTimerDidFinish:"), nil, NO); + } +} +},["void","id"]), new objj_method(sel_getUid("unhighlightButtonTimerDidFinish:"), function $CPControl__unhighlightButtonTimerDidFinish_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "highlight:", NO); +} +},["void","id"]), new objj_method(sel_getUid("mouseDownFlags"), function $CPControl__mouseDownFlags(self, _cmd) +{ with(self) +{ + return _trackingMouseDownFlags; +} +},["unsigned"]), new objj_method(sel_getUid("startTrackingAt:"), function $CPControl__startTrackingAt_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSend(self, "highlight:", YES); + return (_sendActionOn & CPPeriodicMask) || (_sendActionOn & CPLeftMouseDraggedMask); +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("continueTracking:at:"), function $CPControl__continueTracking_at_(self, _cmd, lastPoint, aPoint) +{ with(self) +{ + return (_sendActionOn & CPPeriodicMask) || (_sendActionOn & CPLeftMouseDraggedMask); +} +},["BOOL","CGPoint","CGPoint"]), new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"), function $CPControl__stopTracking_at_mouseIsUp_(self, _cmd, lastPoint, aPoint, mouseIsUp) +{ with(self) +{ + objj_msgSend(self, "highlight:", NO); +} +},["void","CGPoint","CGPoint","BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $CPControl__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "trackMouse:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("objectValue"), function $CPControl__objectValue(self, _cmd) +{ with(self) +{ + return _value; +} +},["id"]), new objj_method(sel_getUid("setObjectValue:"), function $CPControl__setObjectValue_(self, _cmd, anObject) +{ with(self) +{ + _value = anObject; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","id"]), new objj_method(sel_getUid("floatValue"), function $CPControl__floatValue(self, _cmd) +{ with(self) +{ + var floatValue = parseFloat(_value, 10); + return isNaN(floatValue) ? 0.0 : floatValue; +} +},["float"]), new objj_method(sel_getUid("setFloatValue:"), function $CPControl__setFloatValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", aValue); +} +},["void","float"]), new objj_method(sel_getUid("doubleValue"), function $CPControl__doubleValue(self, _cmd) +{ with(self) +{ + var doubleValue = parseFloat(_value, 10); + return isNaN(doubleValue) ? 0.0 : doubleValue; +} +},["double"]), new objj_method(sel_getUid("setDoubleValue:"), function $CPControl__setDoubleValue_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anObject); +} +},["void","double"]), new objj_method(sel_getUid("intValue"), function $CPControl__intValue(self, _cmd) +{ with(self) +{ + var intValue = parseInt(_value, 10); + return isNaN(intValue) ? 0.0 : intValue; +} +},["int"]), new objj_method(sel_getUid("setIntValue:"), function $CPControl__setIntValue_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anObject); +} +},["void","int"]), new objj_method(sel_getUid("integerValue"), function $CPControl__integerValue(self, _cmd) +{ with(self) +{ + var intValue = parseInt(_value, 10); + return isNaN(intValue) ? 0.0 : intValue; +} +},["int"]), new objj_method(sel_getUid("setIntegerValue:"), function $CPControl__setIntegerValue_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anObject); +} +},["void","int"]), new objj_method(sel_getUid("stringValue"), function $CPControl__stringValue(self, _cmd) +{ with(self) +{ + return (_value === undefined || _value === nil) ? "" : String(_value); +} +},["CPString"]), new objj_method(sel_getUid("setStringValue:"), function $CPControl__setStringValue_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anObject); +} +},["void","CPString"]), new objj_method(sel_getUid("takeDoubleValueFrom:"), function $CPControl__takeDoubleValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("doubleValue"))) + objj_msgSend(self, "setDoubleValue:", objj_msgSend(sender, "doubleValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeFloatValueFrom:"), function $CPControl__takeFloatValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("floatValue"))) + objj_msgSend(self, "setFloatValue:", objj_msgSend(sender, "floatValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeIntegerValueFrom:"), function $CPControl__takeIntegerValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("integerValue"))) + objj_msgSend(self, "setIntegerValue:", objj_msgSend(sender, "integerValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeIntValueFrom:"), function $CPControl__takeIntValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("intValue"))) + objj_msgSend(self, "setIntValue:", objj_msgSend(sender, "intValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeObjectValueFrom:"), function $CPControl__takeObjectValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("objectValue"))) + objj_msgSend(self, "setObjectValue:", objj_msgSend(sender, "objectValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeStringValueFrom:"), function $CPControl__takeStringValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("stringValue"))) + objj_msgSend(self, "setStringValue:", objj_msgSend(sender, "stringValue")); +} +},["void","id"]), new objj_method(sel_getUid("textDidBeginEditing:"), function $CPControl__textDidBeginEditing_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPControlTextDidBeginEditingNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", objj_msgSend(note, "object"), "CPFieldEditor")); +} +},["void","CPNotification"]), new objj_method(sel_getUid("textDidChange:"), function $CPControl__textDidChange_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPControlTextDidChangeNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", objj_msgSend(note, "object"), "CPFieldEditor")); +} +},["void","CPNotification"]), new objj_method(sel_getUid("textDidEndEditing:"), function $CPControl__textDidEndEditing_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(self, "_reverseSetBinding"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPControlTextDidEndEditingNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", objj_msgSend(note, "object"), "CPFieldEditor")); +} +},["void","CPNotification"]), new objj_method(sel_getUid("setAlignment:"), function $CPControl__setAlignment_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "alignment");} +},["void","id"]), new objj_method(sel_getUid("alignment"), function $CPControl__alignment(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "alignment");} +},["id"]), new objj_method(sel_getUid("setVerticalAlignment:"), function $CPControl__setVerticalAlignment_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "vertical-alignment");} +},["void","id"]), new objj_method(sel_getUid("verticalAlignment"), function $CPControl__verticalAlignment(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "vertical-alignment");} +},["id"]), new objj_method(sel_getUid("setLineBreakMode:"), function $CPControl__setLineBreakMode_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "line-break-mode");} +},["void","id"]), new objj_method(sel_getUid("lineBreakMode"), function $CPControl__lineBreakMode(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "line-break-mode");} +},["id"]), new objj_method(sel_getUid("setTextColor:"), function $CPControl__setTextColor_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "text-color");} +},["void","id"]), new objj_method(sel_getUid("textColor"), function $CPControl__textColor(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "text-color");} +},["id"]), new objj_method(sel_getUid("setFont:"), function $CPControl__setFont_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "font");} +},["void","id"]), new objj_method(sel_getUid("font"), function $CPControl__font(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "font");} +},["id"]), new objj_method(sel_getUid("setTextShadowColor:"), function $CPControl__setTextShadowColor_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "text-shadow-color");} +},["void","id"]), new objj_method(sel_getUid("textShadowColor"), function $CPControl__textShadowColor(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "text-shadow-color");} +},["id"]), new objj_method(sel_getUid("setTextShadowOffset:"), function $CPControl__setTextShadowOffset_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "text-shadow-offset");} +},["void","id"]), new objj_method(sel_getUid("textShadowOffset"), function $CPControl__textShadowOffset(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "text-shadow-offset");} +},["id"]), new objj_method(sel_getUid("setImagePosition:"), function $CPControl__setImagePosition_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "image-position");} +},["void","id"]), new objj_method(sel_getUid("imagePosition"), function $CPControl__imagePosition(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "image-position");} +},["id"]), new objj_method(sel_getUid("setImageScaling:"), function $CPControl__setImageScaling_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "image-scaling");} +},["void","id"]), new objj_method(sel_getUid("imageScaling"), function $CPControl__imageScaling(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "image-scaling");} +},["id"]), new objj_method(sel_getUid("setEnabled:"), function $CPControl__setEnabled_(self, _cmd, isEnabled) +{ with(self) +{ + if (isEnabled) + objj_msgSend(self, "unsetThemeState:", CPThemeStateDisabled); + else + objj_msgSend(self, "setThemeState:", CPThemeStateDisabled); +} +},["void","BOOL"]), new objj_method(sel_getUid("isEnabled"), function $CPControl__isEnabled(self, _cmd) +{ with(self) +{ + return !objj_msgSend(self, "hasThemeState:", CPThemeStateDisabled); +} +},["BOOL"]), new objj_method(sel_getUid("highlight:"), function $CPControl__highlight_(self, _cmd, shouldHighlight) +{ with(self) +{ + objj_msgSend(self, "setHighlighted:", shouldHighlight); +} +},["void","BOOL"]), new objj_method(sel_getUid("setHighlighted:"), function $CPControl__setHighlighted_(self, _cmd, isHighlighted) +{ with(self) +{ + if (isHighlighted) + objj_msgSend(self, "setThemeState:", CPThemeStateHighlighted); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateHighlighted); +} +},["void","BOOL"]), new objj_method(sel_getUid("isHighlighted"), function $CPControl__isHighlighted(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateHighlighted); +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeAttributes"), function $CPControl__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [CPLeftTextAlignment, + CPTopVerticalTextAlignment, + CPLineBreakByClipping, + objj_msgSend(CPColor, "blackColor"), + objj_msgSend(CPFont, "systemFontOfSize:", 12.0), + objj_msgSend(CPNull, "null"), + { width:0.0, height:0.0 }, + CPImageLeft, + CPScaleToFit, + { width:0.0, height:0.0 }, + { width:-1.0, height:-1.0 }], ["alignment", + "vertical-alignment", + "line-break-mode", + "text-color", + "font", + "text-shadow-color", + "text-shadow-offset", + "image-position", + "image-scaling", + "min-size", + "max-size"]); +} +},["CPDictionary"]), new objj_method(sel_getUid("initialize"), function $CPControl__initialize(self, _cmd) +{ with(self) +{ + if (self === objj_msgSend(CPControl, "class")) + { + objj_msgSend(self, "exposeBinding:", "value"); + objj_msgSend(self, "exposeBinding:", "objectValue"); + objj_msgSend(self, "exposeBinding:", "stringValue"); + objj_msgSend(self, "exposeBinding:", "integerValue"); + objj_msgSend(self, "exposeBinding:", "intValue"); + objj_msgSend(self, "exposeBinding:", "doubleValue"); + objj_msgSend(self, "exposeBinding:", "floatValue"); + objj_msgSend(self, "exposeBinding:", "enabled"); + } +} +},["void"])]); +} +var CPControlValueKey = "CPControlValueKey", + CPControlControlStateKey = "CPControlControlStateKey", + CPControlIsEnabledKey = "CPControlIsEnabledKey", + CPControlTargetKey = "CPControlTargetKey", + CPControlActionKey = "CPControlActionKey", + CPControlSendActionOnKey = "CPControlSendActionOnKey", + CPControlSendsActionOnEndEditingKey = "CPControlSendsActionOnEndEditingKey"; +var __Deprecated__CPImageViewImageKey = "CPImageViewImageKey"; +{ +var the_class = objj_getClass("CPControl") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPControl\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPControl__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControl").super_class }, "initWithCoder:", aCoder); + if (self) + { + objj_msgSend(self, "setObjectValue:", objj_msgSend(aCoder, "decodeObjectForKey:", CPControlValueKey)); + objj_msgSend(self, "setTarget:", objj_msgSend(aCoder, "decodeObjectForKey:", CPControlTargetKey)); + objj_msgSend(self, "setAction:", objj_msgSend(aCoder, "decodeObjectForKey:", CPControlActionKey)); + objj_msgSend(self, "sendActionOn:", objj_msgSend(aCoder, "decodeIntForKey:", CPControlSendActionOnKey)); + objj_msgSend(self, "setSendsActionOnEndEditing:", objj_msgSend(aCoder, "decodeBoolForKey:", CPControlSendsActionOnEndEditingKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPControl__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControl").super_class }, "encodeWithCoder:", aCoder); + if (_sendsActionOnEndEditing) + objj_msgSend(aCoder, "encodeBool:forKey:", _sendsActionOnEndEditing, CPControlSendsActionOnEndEditingKey); + if (_value !== nil) + objj_msgSend(aCoder, "encodeObject:forKey:", _value, CPControlValueKey); + if (_target !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _target, CPControlTargetKey); + if (_action !== NULL) + objj_msgSend(aCoder, "encodeObject:forKey:", _action, CPControlActionKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _sendActionOn, CPControlSendActionOnKey); +} +},["void","CPCoder"])]); +} +var _CPControlSizeIdentifiers = [], + _CPControlCachedColorWithPatternImages = {}, + _CPControlCachedThreePartImagePattern = {}; +_CPControlSizeIdentifiers[CPRegularControlSize] = "Regular"; +_CPControlSizeIdentifiers[CPSmallControlSize] = "Small"; +_CPControlSizeIdentifiers[CPMiniControlSize] = "Mini"; +_CPControlIdentifierForControlSize= function(aControlSize) +{ + return _CPControlSizeIdentifiers[aControlSize]; +} +_CPControlColorWithPatternImage= function(sizes, aClassName) +{ + var index = 1, + count = arguments.length, + identifier = ""; + for (; index < count; ++index) + identifier += arguments[index]; + var color = _CPControlCachedColorWithPatternImages[identifier]; + if (!color) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPControl, "class")); + color = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", aClassName + "/" + identifier + ".png"), sizes[identifier])); + _CPControlCachedColorWithPatternImages[identifier] = color; + } + return color; +} +_CPControlThreePartImagePattern= function(isVertical, sizes, aClassName) +{ + var index = 2, + count = arguments.length, + identifier = ""; + for (; index < count; ++index) + identifier += arguments[index]; + var color = _CPControlCachedThreePartImagePattern[identifier]; + if (!color) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPControl, "class")), + path = aClassName + "/" + identifier; + sizes = sizes[identifier]; + color = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", path + "0.png"), sizes[0]), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", path + "1.png"), sizes[1]), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", path + "2.png"), sizes[2]) + ], isVertical)); + _CPControlCachedThreePartImagePattern[identifier] = color; + } + return color; +} + +p;14;CPController.jt;2511;@STATIC;1.0;t;2492;var CPControllerDeclaredKeysKey = "CPControllerDeclaredKeysKey"; +{var the_class = objj_allocateClassPair(CPObject, "CPController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_editors"), new objj_ivar("_declaredKeys")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPController__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPController").super_class }, "init"); + if (self) + { + _editors = []; + _declaredKeys = []; + } + return self; +} +},["id"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPController__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (objj_msgSend(_declaredKeys, "count") > 0) + objj_msgSend(aCoder, "encodeObject:forKey:", _declaredKeys, CPControllerDeclaredKeysKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("initWithCoder:"), function $CPController__initWithCoder_(self, _cmd, aDecoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPController").super_class }, "init"); + if (self) + { + _editors = []; + _declaredKeys = objj_msgSend(aDecoder, "decodeObjectForKey:", CPControllerDeclaredKeysKey) || []; + } + return nil; +} +},["id","CPCoder"]), new objj_method(sel_getUid("isEditing"), function $CPController__isEditing(self, _cmd) +{ with(self) +{ + return objj_msgSend(_editors, "count") > 0; +} +},["BOOL"]), new objj_method(sel_getUid("commitEditing"), function $CPController__commitEditing(self, _cmd) +{ with(self) +{ + var index = 0, + count = _editors.length; + for (; index < count; ++index) + if (!objj_msgSend(objj_msgSend(_editors, "objectAtIndex:", i), "commitEditing")) + return NO; + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("discardEditing"), function $CPController__discardEditing(self, _cmd) +{ with(self) +{ + objj_msgSend(_editors, "makeObjectsPerformSelector:", sel_getUid("discardEditing")); +} +},["void"]), new objj_method(sel_getUid("objectDidBeginEditing:"), function $CPController__objectDidBeginEditing_(self, _cmd, anEditor) +{ with(self) +{ + objj_msgSend(_editors, "addObject:", anEditor); +} +},["void","id"]), new objj_method(sel_getUid("objectDidEndEditing:"), function $CPController__objectDidEndEditing_(self, _cmd, anEditor) +{ with(self) +{ + objj_msgSend(_editors, "removeObject:", anEditor); +} +},["void","id"])]); +} + +p;10;CPCookie.jt;1762;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1691;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPCookie"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_cookieName"), new objj_ivar("_cookieValue"), new objj_ivar("_expires")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithName:"), function $CPCookie__initWithName_(self, _cmd, aName) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCookie").super_class }, "init"); + _cookieName = aName; + _cookieValue = objj_msgSend(self, "_readCookieValue"); + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("value"), function $CPCookie__value(self, _cmd) +{ with(self) +{ + return _cookieValue; +} +},["CPString"]), new objj_method(sel_getUid("name"), function $CPCookie__name(self, _cmd) +{ with(self) +{ + return _cookieName; +} +},["CPString"]), new objj_method(sel_getUid("expires"), function $CPCookie__expires(self, _cmd) +{ with(self) +{ + return _expires; +} +},["CPString"]), new objj_method(sel_getUid("setValue:expires:domain:"), function $CPCookie__setValue_expires_domain_(self, _cmd, value, date, domain) +{ with(self) +{ + if(date) + var expires = "; expires="+date.toGMTString(); + else + var expires = ""; + if(domain) + domain = "; domain="+domain; + else + domain = ""; + _cookieValue = value; + _expires = expires; +} +},["void","CPString","CPDate","CPString"]), new objj_method(sel_getUid("_readCookieValue"), function $CPCookie___readCookieValue(self, _cmd) +{ with(self) +{ + return ""; +} +},["CPString"])]); +} + +p;10;CPCursor.jt;10794;@STATIC;1.0;t;10774;var currentCursor = nil, + cursorStack = [], + cursors = {}, + cursorURLFormat = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPCursor"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_cssString"), new objj_ivar("_isSetOnMouseEntered"), new objj_ivar("_isSetOnMouseExited")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isSetOnMouseEntered"), function $CPCursor__isSetOnMouseEntered(self, _cmd) +{ with(self) +{ +return _isSetOnMouseEntered; +} +},["id"]), +new objj_method(sel_getUid("setOnMouseEntered:"), function $CPCursor__setOnMouseEntered_(self, _cmd, newValue) +{ with(self) +{ +_isSetOnMouseEntered = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("isSetOnMouseExited"), function $CPCursor__isSetOnMouseExited(self, _cmd) +{ with(self) +{ +return _isSetOnMouseExited; +} +},["id"]), +new objj_method(sel_getUid("setOnMouseExited:"), function $CPCursor__setOnMouseExited_(self, _cmd, newValue) +{ with(self) +{ +_isSetOnMouseExited = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithCSSString:"), function $CPCursor__initWithCSSString_(self, _cmd, aString) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCursor").super_class }, "init")) + _cssString = aString; + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("_cssString"), function $CPCursor___cssString(self, _cmd) +{ with(self) +{ + return _cssString; +} +},["CPString"]), new objj_method(sel_getUid("initWithImage:hotSpot:"), function $CPCursor__initWithImage_hotSpot_(self, _cmd, image, hotSpot) +{ with(self) +{ + return objj_msgSend(self, "initWithCSSString:", "url(" + objj_msgSend(image, "filename") + ")"); +} +},["id","CPImage","CPPoint"]), new objj_method(sel_getUid("mouseEntered:"), function $CPCursor__mouseEntered_(self, _cmd, event) +{ with(self) +{ +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseExited:"), function $CPCursor__mouseExited_(self, _cmd, event) +{ with(self) +{ +} +},["void","CPEvent"]), new objj_method(sel_getUid("set"), function $CPCursor__set(self, _cmd) +{ with(self) +{ + currentCursor = self; + objj_msgSend(objj_msgSend(self, "class"), "_setCursorCSS:", _cssString); +} +},["void"]), new objj_method(sel_getUid("push"), function $CPCursor__push(self, _cmd) +{ with(self) +{ + currentCursor = cursorStack.push(self); +} +},["void"]), new objj_method(sel_getUid("pop"), function $CPCursor__pop(self, _cmd) +{ with(self) +{ + objj_msgSend(CPCursor, "pop"); +} +},["void"]), new objj_method(sel_getUid("initWithCoder:"), function $CPCursor__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCursor").super_class }, "init")) + _cssString = objj_msgSend(coder, "decodeObjectForKey:", "CPCursorNameKey"); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPCursor__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _cssString, "CPCursorNameKey"); +} +},["void","CPCoder"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("currentCursor"), function $CPCursor__currentCursor(self, _cmd) +{ with(self) +{ + return currentCursor; +} +},["CPCursor"]), new objj_method(sel_getUid("cursorWithCSSString:"), function $CPCursor__cursorWithCSSString_(self, _cmd, cssString) +{ with(self) +{ + var cursor = cursors[cssString]; + if (typeof cursor == 'undefined') + { + cursor = objj_msgSend(objj_msgSend(CPCursor, "alloc"), "initWithCSSString:", cssString); + cursors[cssString] = cursor; + } + return cursor; +} +},["CPCursor","CPString"]), new objj_method(sel_getUid("cursorWithImageNamed:"), function $CPCursor__cursorWithImageNamed_(self, _cmd, imageName) +{ with(self) +{ + if (!cursorURLFormat) + { + cursorURLFormat = "url(" + objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", self), "resourcePath") + "/CPCursor/%@.cur)"; + if (CPBrowserIsEngine(CPGeckoBrowserEngine)) + cursorURLFormat += ", default"; + } + var url = objj_msgSend(CPString, "stringWithFormat:", cursorURLFormat, imageName); + return objj_msgSend(objj_msgSend(CPCursor, "alloc"), "initWithCSSString:", url); +} +},["CPCursor","CPString"]), new objj_method(sel_getUid("arrowCursor"), function $CPCursor__arrowCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "default"); +} +},["CPCursor"]), new objj_method(sel_getUid("crosshairCursor"), function $CPCursor__crosshairCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "crosshair"); +} +},["CPCursor"]), new objj_method(sel_getUid("IBeamCursor"), function $CPCursor__IBeamCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "text"); +} +},["CPCursor"]), new objj_method(sel_getUid("pointingHandCursor"), function $CPCursor__pointingHandCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "pointer"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeDownCursor"), function $CPCursor__resizeDownCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "s-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeUpCursor"), function $CPCursor__resizeUpCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "n-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeLeftCursor"), function $CPCursor__resizeLeftCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "w-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeRightCursor"), function $CPCursor__resizeRightCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "e-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeLeftRightCursor"), function $CPCursor__resizeLeftRightCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "col-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeUpDownCursor"), function $CPCursor__resizeUpDownCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "row-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("operationNotAllowedCursor"), function $CPCursor__operationNotAllowedCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "not-allowed"); +} +},["CPCursor"]), new objj_method(sel_getUid("dragCopyCursor"), function $CPCursor__dragCopyCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "copy"); +} +},["CPCursor"]), new objj_method(sel_getUid("dragLinkCursor"), function $CPCursor__dragLinkCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "alias"); +} +},["CPCursor"]), new objj_method(sel_getUid("contextualMenuCursor"), function $CPCursor__contextualMenuCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "context-menu"); +} +},["CPCursor"]), new objj_method(sel_getUid("openHandCursor"), function $CPCursor__openHandCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPWebKitBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "-webkit-grab"); + else if (CPBrowserIsEngine(CPGeckoBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "-moz-grab"); + else if (CPBrowserIsEngine(CPOperaBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "move"); + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); +} +},["CPCursor"]), new objj_method(sel_getUid("closedHandCursor"), function $CPCursor__closedHandCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPWebKitBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "-webkit-grabbing"); + else if (CPBrowserIsEngine(CPGeckoBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "-moz-grabbing"); + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); +} +},["CPCursor"]), new objj_method(sel_getUid("disappearingItemCursor"), function $CPCursor__disappearingItemCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); +} +},["CPCursor"]), new objj_method(sel_getUid("hide"), function $CPCursor__hide(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_setCursorCSS:", "none"); +} +},["void"]), new objj_method(sel_getUid("unhide"), function $CPCursor__unhide(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_setCursorCSS:", objj_msgSend(currentCursor, "_cssString")); +} +},["void"]), new objj_method(sel_getUid("setHiddenUntilMouseMoves:"), function $CPCursor__setHiddenUntilMouseMoves_(self, _cmd, flag) +{ with(self) +{ + if (flag) + objj_msgSend(CPCursor, "hide"); + else + objj_msgSend(CPCursor, "unhide"); +} +},["void","BOOL"]), new objj_method(sel_getUid("_setCursorCSS:"), function $CPCursor___setCursorCSS_(self, _cmd, aString) +{ with(self) +{ + var platformWindows = objj_msgSend(objj_msgSend(CPPlatformWindow, "visiblePlatformWindows"), "allObjects"); + for (var i = 0, count = objj_msgSend(platformWindows, "count"); i < count; i++) + platformWindows[i]._DOMBodyElement.style.cursor = aString; +} +},["void","CPString"]), new objj_method(sel_getUid("pop"), function $CPCursor__pop(self, _cmd) +{ with(self) +{ + if (cursorStack.length > 1) + { + cursorStack.pop(); + currentCursor = cursorStack[cursorStack.length - 1]; + } +} +},["void"])]); +} + +p;12;CPDocument.jt;27855;@STATIC;1.0;I;21;Foundation/CPString.jI;20;Foundation/CPArray.ji;13;CPResponder.ji;13;CPSavePanel.ji;18;CPViewController.ji;20;CPWindowController.jt;27700;objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPSavePanel.j", YES); +objj_executeFile("CPViewController.j", YES); +objj_executeFile("CPWindowController.j", YES); +CPSaveOperation = 0; +CPSaveAsOperation = 1; +CPSaveToOperation = 2; +CPAutosaveOperation = 3; +CPChangeDone = 0; +CPChangeUndone = 1; +CPChangeCleared = 2; +CPChangeReadOtherContents = 3; +CPChangeAutosaved = 4; +CPDocumentWillSaveNotification = "CPDocumentWillSaveNotification"; +CPDocumentDidSaveNotification = "CPDocumentDidSaveNotification"; +CPDocumentDidFailToSaveNotification = "CPDocumentDidFailToSaveNotification"; +var CPDocumentUntitledCount = 0; +{var the_class = objj_allocateClassPair(CPResponder, "CPDocument"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window"), new objj_ivar("_view"), new objj_ivar("_viewControllersForWindowControllers"), new objj_ivar("_fileURL"), new objj_ivar("_fileType"), new objj_ivar("_windowControllers"), new objj_ivar("_untitledDocumentIndex"), new objj_ivar("_hasUndoManager"), new objj_ivar("_undoManager"), new objj_ivar("_changeCount"), new objj_ivar("_readConnection"), new objj_ivar("_writeRequest"), new objj_ivar("_canCloseAlert")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPDocument__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDocument").super_class }, "init"); + if (self) + { + _windowControllers = []; + _viewControllersForWindowControllers = objj_msgSend(CPDictionary, "dictionary"); + _hasUndoManager = YES; + _changeCount = 0; + objj_msgSend(self, "setNextResponder:", CPApp); + } + return self; +} +},["id"]), new objj_method(sel_getUid("initWithType:error:"), function $CPDocument__initWithType_error_(self, _cmd, aType, anError) +{ with(self) +{ + self = objj_msgSend(self, "init"); + if (self) + objj_msgSend(self, "setFileType:", aType); + return self; +} +},["id","CPString","{CPError}"]), new objj_method(sel_getUid("initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocument__initWithContentsOfURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, aType, aDelegate, aDidReadSelector, aContextInfo) +{ with(self) +{ + self = objj_msgSend(self, "init"); + if (self) + { + objj_msgSend(self, "setFileURL:", anAbsoluteURL); + objj_msgSend(self, "setFileType:", aType); + objj_msgSend(self, "readFromURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, aType, aDelegate, aDidReadSelector, aContextInfo); + } + return self; +} +},["id","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocument__initForURL_withContentsOfURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, absoluteContentsURL, aType, aDelegate, aDidReadSelector, aContextInfo) +{ with(self) +{ + self = objj_msgSend(self, "init"); + if (self) + { + objj_msgSend(self, "setFileURL:", anAbsoluteURL); + objj_msgSend(self, "setFileType:", aType); + objj_msgSend(self, "readFromURL:ofType:delegate:didReadSelector:contextInfo:", absoluteContentsURL, aType, aDelegate, aDidReadSelector, aContextInfo); + } + return self; +} +},["id","CPURL","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("dataOfType:error:"), function $CPDocument__dataOfType_error_(self, _cmd, aType, anError) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "dataOfType:error: must be overridden by the document subclass."); +} +},["CPData","CPString","{CPError}"]), new objj_method(sel_getUid("readFromData:ofType:error:"), function $CPDocument__readFromData_ofType_error_(self, _cmd, aData, aType, anError) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "readFromData:ofType: must be overridden by the document subclass."); +} +},["void","CPData","CPString","CPError"]), new objj_method(sel_getUid("viewControllerWillLoadCib:"), function $CPDocument__viewControllerWillLoadCib_(self, _cmd, aViewController) +{ with(self) +{ +} +},["void","CPViewController"]), new objj_method(sel_getUid("viewControllerDidLoadCib:"), function $CPDocument__viewControllerDidLoadCib_(self, _cmd, aViewController) +{ with(self) +{ +} +},["void","CPViewController"]), new objj_method(sel_getUid("firstEligibleExistingWindowController"), function $CPDocument__firstEligibleExistingWindowController(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPWindowController"]), new objj_method(sel_getUid("makeWindowControllers"), function $CPDocument__makeWindowControllers(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "makeViewAndWindowControllers"); +} +},["void"]), new objj_method(sel_getUid("makeViewAndWindowControllers"), function $CPDocument__makeViewAndWindowControllers(self, _cmd) +{ with(self) +{ + var viewCibName = objj_msgSend(self, "viewCibName"), + viewController = nil, + windowController = nil; + if (objj_msgSend(viewCibName, "length")) + viewController = objj_msgSend(objj_msgSend(CPViewController, "alloc"), "initWithCibName:bundle:owner:", viewCibName, nil, self); + if (viewController) + windowController = objj_msgSend(self, "firstEligibleExistingWindowController"); + if (!windowController) + { + var windowCibName = objj_msgSend(self, "windowCibName"); + if (objj_msgSend(windowCibName, "length")) + windowController = objj_msgSend(objj_msgSend(CPWindowController, "alloc"), "initWithWindowCibName:owner:", windowCibName, self); + else if (viewController) + { + var view = objj_msgSend(viewController, "view"), + viewFrame = objj_msgSend(view, "frame"); + viewFrame.origin = CGPointMake(50, 50); + var theWindow = objj_msgSend(objj_msgSend(CPWindow, "alloc"), "initWithContentRect:styleMask:", viewFrame, CPTitledWindowMask | CPClosableWindowMask | CPMiniaturizableWindowMask | CPResizableWindowMask); + windowController = objj_msgSend(objj_msgSend(CPWindowController, "alloc"), "initWithWindow:", theWindow); + } + } + if (windowController && viewController) + objj_msgSend(windowController, "setSupportsMultipleDocuments:", YES); + if (windowController) + objj_msgSend(self, "addWindowController:", windowController); + if (viewController) + objj_msgSend(self, "addViewController:forWindowController:", viewController, windowController); +} +},["void"]), new objj_method(sel_getUid("windowControllers"), function $CPDocument__windowControllers(self, _cmd) +{ with(self) +{ + return _windowControllers; +} +},["CPArray"]), new objj_method(sel_getUid("addWindowController:"), function $CPDocument__addWindowController_(self, _cmd, aWindowController) +{ with(self) +{ + objj_msgSend(_windowControllers, "addObject:", aWindowController); + if (objj_msgSend(aWindowController, "document") !== self) + objj_msgSend(aWindowController, "setDocument:", self); +} +},["void","CPWindowController"]), new objj_method(sel_getUid("removeWindowController:"), function $CPDocument__removeWindowController_(self, _cmd, aWindowController) +{ with(self) +{ + if (aWindowController) + objj_msgSend(_windowControllers, "removeObject:", aWindowController); + if (objj_msgSend(aWindowController, "document") === self) + objj_msgSend(aWindowController, "setDocument:", nil); +} +},["void","CPWindowController"]), new objj_method(sel_getUid("view"), function $CPDocument__view(self, _cmd) +{ with(self) +{ + return _view; +} +},["CPView"]), new objj_method(sel_getUid("viewControllers"), function $CPDocument__viewControllers(self, _cmd) +{ with(self) +{ + return objj_msgSend(_viewControllersForWindowControllers, "allValues"); +} +},["CPArray"]), new objj_method(sel_getUid("addViewController:forWindowController:"), function $CPDocument__addViewController_forWindowController_(self, _cmd, aViewController, aWindowController) +{ with(self) +{ + objj_msgSend(_viewControllersForWindowControllers, "setObject:forKey:", aViewController, objj_msgSend(aWindowController, "UID")); + if (objj_msgSend(aWindowController, "document") === self) + objj_msgSend(aWindowController, "setViewController:", aViewController); +} +},["void","CPViewController","CPWindowController"]), new objj_method(sel_getUid("removeViewController:"), function $CPDocument__removeViewController_(self, _cmd, aViewController) +{ with(self) +{ + objj_msgSend(_viewControllersForWindowControllers, "removeObject:", aViewController); +} +},["void","CPViewController"]), new objj_method(sel_getUid("viewControllerForWindowController:"), function $CPDocument__viewControllerForWindowController_(self, _cmd, aWindowController) +{ with(self) +{ + return objj_msgSend(_viewControllersForWindowControllers, "objectForKey:", objj_msgSend(aWindowController, "UID")); +} +},["CPViewController","CPWindowController"]), new objj_method(sel_getUid("showWindows"), function $CPDocument__showWindows(self, _cmd) +{ with(self) +{ + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("setDocument:"), self); + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("showWindow:"), self); +} +},["void"]), new objj_method(sel_getUid("displayName"), function $CPDocument__displayName(self, _cmd) +{ with(self) +{ + if (_fileURL) + return objj_msgSend(_fileURL, "lastPathComponent"); + if (!_untitledDocumentIndex) + _untitledDocumentIndex = ++CPDocumentUntitledCount; + if (_untitledDocumentIndex == 1) + return "Untitled"; + return "Untitled " + _untitledDocumentIndex; +} +},["CPString"]), new objj_method(sel_getUid("viewCibName"), function $CPDocument__viewCibName(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPString"]), new objj_method(sel_getUid("windowCibName"), function $CPDocument__windowCibName(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPString"]), new objj_method(sel_getUid("windowControllerDidLoadCib:"), function $CPDocument__windowControllerDidLoadCib_(self, _cmd, aWindowController) +{ with(self) +{ +} +},["void","CPWindowController"]), new objj_method(sel_getUid("windowControllerWillLoadCib:"), function $CPDocument__windowControllerWillLoadCib_(self, _cmd, aWindowController) +{ with(self) +{ +} +},["void","CPWindowController"]), new objj_method(sel_getUid("readFromURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocument__readFromURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, aType, aDelegate, aDidReadSelector, aContextInfo) +{ with(self) +{ + objj_msgSend(_readConnection, "cancel"); + _readConnection = objj_msgSend(CPURLConnection, "connectionWithRequest:delegate:", objj_msgSend(CPURLRequest, "requestWithURL:", anAbsoluteURL), self); + _readConnection.session = _CPReadSessionMake(aType, aDelegate, aDidReadSelector, aContextInfo); +} +},["void","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("fileURL"), function $CPDocument__fileURL(self, _cmd) +{ with(self) +{ + return _fileURL; +} +},["CPURL"]), new objj_method(sel_getUid("setFileURL:"), function $CPDocument__setFileURL_(self, _cmd, aFileURL) +{ with(self) +{ + if (_fileURL === aFileURL) + return; + _fileURL = aFileURL; + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:", sel_getUid("synchronizeWindowTitleWithDocumentName")); +} +},["void","CPURL"]), new objj_method(sel_getUid("saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:"), function $CPDocument__saveToURL_ofType_forSaveOperation_delegate_didSaveSelector_contextInfo_(self, _cmd, anAbsoluteURL, aTypeName, aSaveOperation, aDelegate, aDidSaveSelector, aContextInfo) +{ with(self) +{ + var data = objj_msgSend(self, "dataOfType:error:", objj_msgSend(self, "fileType"), nil), + oldChangeCount = _changeCount; + _writeRequest = objj_msgSend(CPURLRequest, "requestWithURL:", anAbsoluteURL); + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(_writeRequest, "setHTTPMethod:", "POST"); + else + objj_msgSend(_writeRequest, "setHTTPMethod:", "PUT"); + objj_msgSend(_writeRequest, "setHTTPBody:", objj_msgSend(data, "rawString")); + objj_msgSend(_writeRequest, "setValue:forHTTPHeaderField:", "close", "Connection"); + if (aSaveOperation === CPSaveOperation) + objj_msgSend(_writeRequest, "setValue:forHTTPHeaderField:", "true", "x-cappuccino-overwrite"); + if (aSaveOperation !== CPSaveToOperation) + objj_msgSend(self, "updateChangeCount:", CPChangeCleared); + var connection = objj_msgSend(CPURLConnection, "connectionWithRequest:delegate:", _writeRequest, self); + connection.session = _CPSaveSessionMake(anAbsoluteURL, aSaveOperation, oldChangeCount, aDelegate, aDidSaveSelector, aContextInfo, connection); +} +},["void","CPURL","CPString","CPSaveOperationType","id","SEL","id"]), new objj_method(sel_getUid("connection:didReceiveResponse:"), function $CPDocument__connection_didReceiveResponse_(self, _cmd, aConnection, aResponse) +{ with(self) +{ + if (!objj_msgSend(aResponse, "isKindOfClass:", objj_msgSend(CPHTTPURLResponse, "class"))) + return; + var statusCode = objj_msgSend(aResponse, "statusCode"); + if (statusCode === 200) + return; + var session = aConnection.session; + if (aConnection == _readConnection) + { + objj_msgSend(aConnection, "cancel"); + alert("There was an error retrieving the document."); + objj_msgSend(session.delegate, session.didReadSelector, self, NO, session.contextInfo); + } + else + { + if (statusCode == 409) + { + objj_msgSend(aConnection, "cancel"); + if (confirm("There already exists a file with that name, would you like to overwrite it?")) + { + objj_msgSend(_writeRequest, "setValue:forHTTPHeaderField:", "true", "x-cappuccino-overwrite"); + objj_msgSend(aConnection, "start"); + } + else + { + if (session.saveOperation != CPSaveToOperation) + { + _changeCount += session.changeCount; + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("setDocumentEdited:"), objj_msgSend(self, "isDocumentEdited")); + } + _writeRequest = nil; + objj_msgSend(session.delegate, session.didSaveSelector, self, NO, session.contextInfo); + objj_msgSend(self, "_sendDocumentSavedNotification:", NO); + } + } + } +} +},["void","CPURLConnection","CPURLResponse"]), new objj_method(sel_getUid("connection:didReceiveData:"), function $CPDocument__connection_didReceiveData_(self, _cmd, aConnection, aData) +{ with(self) +{ + var session = aConnection.session; + if (aConnection == _readConnection) + { + objj_msgSend(self, "readFromData:ofType:error:", objj_msgSend(CPData, "dataWithRawString:", aData), session.fileType, nil); + objj_msgSend(session.delegate, session.didReadSelector, self, YES, session.contextInfo); + } + else + { + if (session.saveOperation != CPSaveToOperation) + objj_msgSend(self, "setFileURL:", session.absoluteURL); + _writeRequest = nil; + objj_msgSend(session.delegate, session.didSaveSelector, self, YES, session.contextInfo); + objj_msgSend(self, "_sendDocumentSavedNotification:", YES); + } +} +},["void","CPURLConnection","CPString"]), new objj_method(sel_getUid("connection:didFailWithError:"), function $CPDocument__connection_didFailWithError_(self, _cmd, aConnection, anError) +{ with(self) +{ + var session = aConnection.session; + if (_readConnection == aConnection) + objj_msgSend(session.delegate, session.didReadSelector, self, NO, session.contextInfo); + else + { + if (session.saveOperation != CPSaveToOperation) + { + _changeCount += session.changeCount; + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("setDocumentEdited:"), objj_msgSend(self, "isDocumentEdited")); + } + _writeRequest = nil; + alert("There was an error saving the document."); + objj_msgSend(session.delegate, session.didSaveSelector, self, NO, session.contextInfo); + objj_msgSend(self, "_sendDocumentSavedNotification:", NO); + } +} +},["void","CPURLConnection","CPError"]), new objj_method(sel_getUid("connectionDidFinishLoading:"), function $CPDocument__connectionDidFinishLoading_(self, _cmd, aConnection) +{ with(self) +{ + if (_readConnection == aConnection) + _readConnection = nil; +} +},["void","CPURLConnection"]), new objj_method(sel_getUid("isDocumentEdited"), function $CPDocument__isDocumentEdited(self, _cmd) +{ with(self) +{ + return _changeCount != 0; +} +},["BOOL"]), new objj_method(sel_getUid("updateChangeCount:"), function $CPDocument__updateChangeCount_(self, _cmd, aChangeType) +{ with(self) +{ + if (aChangeType == CPChangeDone) + ++_changeCount; + else if (aChangeType == CPChangeUndone) + --_changeCount; + else if (aChangeType == CPChangeCleared) + _changeCount = 0; + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("setDocumentEdited:"), objj_msgSend(self, "isDocumentEdited")); +} +},["void","CPDocumentChangeType"]), new objj_method(sel_getUid("setFileType:"), function $CPDocument__setFileType_(self, _cmd, aType) +{ with(self) +{ + _fileType = aType; +} +},["void","CPString"]), new objj_method(sel_getUid("fileType"), function $CPDocument__fileType(self, _cmd) +{ with(self) +{ + return _fileType; +} +},["CPString"]), new objj_method(sel_getUid("hasUndoManager"), function $CPDocument__hasUndoManager(self, _cmd) +{ with(self) +{ + return _hasUndoManager; +} +},["BOOL"]), new objj_method(sel_getUid("setHasUndoManager:"), function $CPDocument__setHasUndoManager_(self, _cmd, aFlag) +{ with(self) +{ + if (_hasUndoManager == aFlag) + return; + _hasUndoManager = aFlag; + if (!_hasUndoManager) + objj_msgSend(self, "setUndoManager:", nil); +} +},["void","BOOL"]), new objj_method(sel_getUid("_undoManagerWillCloseGroup:"), function $CPDocument___undoManagerWillCloseGroup_(self, _cmd, aNotification) +{ with(self) +{ + var undoManager = objj_msgSend(aNotification, "object"); + if (objj_msgSend(undoManager, "isUndoing") || objj_msgSend(undoManager, "isRedoing")) + return; + objj_msgSend(self, "updateChangeCount:", CPChangeDone); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_undoManagerDidUndoChange:"), function $CPDocument___undoManagerDidUndoChange_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "updateChangeCount:", CPChangeUndone); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_undoManagerDidRedoChange:"), function $CPDocument___undoManagerDidRedoChange_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "updateChangeCount:", CPChangeDone); +} +},["void","CPNotification"]), new objj_method(sel_getUid("setUndoManager:"), function $CPDocument__setUndoManager_(self, _cmd, anUndoManager) +{ with(self) +{ + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_undoManager) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPUndoManagerDidUndoChangeNotification, _undoManager); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPUndoManagerDidRedoChangeNotification, _undoManager); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPUndoManagerWillCloseUndoGroupNotification, _undoManager); + } + _undoManager = anUndoManager; + if (_undoManager) + { + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_undoManagerDidUndoChange:"), CPUndoManagerDidUndoChangeNotification, _undoManager); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_undoManagerDidRedoChange:"), CPUndoManagerDidRedoChangeNotification, _undoManager); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_undoManagerWillCloseGroup:"), CPUndoManagerWillCloseUndoGroupNotification, _undoManager); + } +} +},["void","CPUndoManager"]), new objj_method(sel_getUid("undoManager"), function $CPDocument__undoManager(self, _cmd) +{ with(self) +{ + if (_hasUndoManager && !_undoManager) + objj_msgSend(self, "setUndoManager:", objj_msgSend(objj_msgSend(CPUndoManager, "alloc"), "init")); + return _undoManager; +} +},["CPUndoManager"]), new objj_method(sel_getUid("windowWillReturnUndoManager:"), function $CPDocument__windowWillReturnUndoManager_(self, _cmd, aWindow) +{ with(self) +{ + return objj_msgSend(self, "undoManager"); +} +},["CPUndoManager","CPWindow"]), new objj_method(sel_getUid("saveDocument:"), function $CPDocument__saveDocument_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "saveDocumentWithDelegate:didSaveSelector:contextInfo:", nil, nil, nil); +} +},["void","id"]), new objj_method(sel_getUid("saveDocumentWithDelegate:didSaveSelector:contextInfo:"), function $CPDocument__saveDocumentWithDelegate_didSaveSelector_contextInfo_(self, _cmd, delegate, didSaveSelector, contextInfo) +{ with(self) +{ + if (_fileURL) + { + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPDocumentWillSaveNotification, self); + objj_msgSend(self, "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:", _fileURL, objj_msgSend(self, "fileType"), CPSaveOperation, delegate, didSaveSelector, contextInfo); + } + else + objj_msgSend(self, "_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:", delegate, didSaveSelector, contextInfo); +} +},["void","id","SEL","Object"]), new objj_method(sel_getUid("saveDocumentAs:"), function $CPDocument__saveDocumentAs_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:", nil, nil, nil); +} +},["void","id"]), new objj_method(sel_getUid("_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:"), function $CPDocument___saveDocumentAsWithDelegate_didSaveSelector_contextInfo_(self, _cmd, delegate, didSaveSelector, contextInfo) +{ with(self) +{ + var savePanel = objj_msgSend(CPSavePanel, "savePanel"), + response = objj_msgSend(savePanel, "runModal"); + if (!response) + return; + var saveURL = objj_msgSend(savePanel, "URL"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPDocumentWillSaveNotification, self); + objj_msgSend(self, "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:", saveURL, objj_msgSend(self, "fileType"), CPSaveAsOperation, delegate, didSaveSelector, contextInfo); +} +},["void","id","SEL","Object"]), new objj_method(sel_getUid("_sendDocumentSavedNotification:"), function $CPDocument___sendDocumentSavedNotification_(self, _cmd, didSave) +{ with(self) +{ + if (didSave) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPDocumentDidSaveNotification, self); + else + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPDocumentDidFailToSaveNotification, self); +} +},["void","BOOL"])]); +} +{ +var the_class = objj_getClass("CPDocument") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDocument\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("close"), function $CPDocument__close(self, _cmd) +{ with(self) +{ + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("removeDocumentAndCloseIfNecessary:"), self); + objj_msgSend(objj_msgSend(CPDocumentController, "sharedDocumentController"), "removeDocument:", self); +} +},["void"]), new objj_method(sel_getUid("shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:"), function $CPDocument__shouldCloseWindowController_delegate_shouldCloseSelector_contextInfo_(self, _cmd, controller, delegate, selector, info) +{ with(self) +{ + if (objj_msgSend(controller, "shouldCloseDocument") || (objj_msgSend(_windowControllers, "count") < 2 && objj_msgSend(_windowControllers, "indexOfObject:", controller) !== CPNotFound)) + objj_msgSend(self, "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:", self, sel_getUid("_document:shouldClose:context:"), {delegate:delegate, selector:selector, context:info}); + else if (objj_msgSend(delegate, "respondsToSelector:", selector)) + objj_msgSend(delegate, selector, self, YES, info); +} +},["void","CPWindowController","id","SEL","Object"]), new objj_method(sel_getUid("_document:shouldClose:context:"), function $CPDocument___document_shouldClose_context_(self, _cmd, aDocument, shouldClose, context) +{ with(self) +{ + if (aDocument === self && shouldClose) + objj_msgSend(self, "close"); + objj_msgSend(context.delegate, context.selector, aDocument, shouldClose, context.context); +} +},["void","CPDocument","BOOL","Object"]), new objj_method(sel_getUid("canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:"), function $CPDocument__canCloseDocumentWithDelegate_shouldCloseSelector_contextInfo_(self, _cmd, aDelegate, aSelector, context) +{ with(self) +{ + if (!objj_msgSend(self, "isDocumentEdited")) + return objj_msgSend(aDelegate, "respondsToSelector:", aSelector) && objj_msgSend(aDelegate, aSelector, self, YES, context); + _canCloseAlert = objj_msgSend(objj_msgSend(CPAlert, "alloc"), "init"); + objj_msgSend(_canCloseAlert, "setDelegate:", self); + objj_msgSend(_canCloseAlert, "setAlertStyle:", CPWarningAlertStyle); + objj_msgSend(_canCloseAlert, "setTitle:", "Unsaved Document"); + objj_msgSend(_canCloseAlert, "setMessageText:", "Do you want to save the changes you've made to the document \"" + (objj_msgSend(self, "displayName") || objj_msgSend(self, "fileName")) + "\"?"); + objj_msgSend(_canCloseAlert, "addButtonWithTitle:", "Save"); + objj_msgSend(_canCloseAlert, "addButtonWithTitle:", "Cancel"); + objj_msgSend(_canCloseAlert, "addButtonWithTitle:", "Don't Save"); + _canCloseAlert._context = {delegate:aDelegate, selector:aSelector, context:context}; + objj_msgSend(_canCloseAlert, "runModal"); +} +},["void","id","SEL","Object"]), new objj_method(sel_getUid("alertDidEnd:returnCode:"), function $CPDocument__alertDidEnd_returnCode_(self, _cmd, alert, returnCode) +{ with(self) +{ + if (alert !== _canCloseAlert) + return; + var delegate = alert._context.delegate, + selector = alert._context.selector, + context = alert._context.context; + if (returnCode === 0) + objj_msgSend(self, "saveDocumentWithDelegate:didSaveSelector:contextInfo:", delegate, selector, context); + else + objj_msgSend(delegate, selector, self, returnCode === 2, context); + _canCloseAlert = nil; +} +},["void","CPAlert","int"])]); +} +var _CPReadSessionMake = function(aType, aDelegate, aDidReadSelector, aContextInfo) +{ + return { fileType:aType, delegate:aDelegate, didReadSelector:aDidReadSelector, contextInfo:aContextInfo }; +} +var _CPSaveSessionMake = function(anAbsoluteURL, aSaveOperation, aChangeCount, aDelegate, aDidSaveSelector, aContextInfo, aConnection) +{ + return { absoluteURL:anAbsoluteURL, saveOperation:aSaveOperation, changeCount:aChangeCount, delegate:aDelegate, didSaveSelector:aDidSaveSelector, contextInfo:aContextInfo, connection:aConnection }; +} + +p;22;CPDocumentController.jt;14881;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPBundle.ji;12;CPDocument.ji;13;CPOpenPanel.jt;14774;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("CPDocument.j", YES); +objj_executeFile("CPOpenPanel.j", YES);; +var CPSharedDocumentController = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPDocumentController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_documents"), new objj_ivar("_documentTypes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPDocumentController__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDocumentController").super_class }, "init"); + if (self) + { + _documents = objj_msgSend(objj_msgSend(CPArray, "alloc"), "init"); + if (!CPSharedDocumentController) + CPSharedDocumentController = self; + _documentTypes = objj_msgSend(objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "infoDictionary"), "objectForKey:", "CPBundleDocumentTypes"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("documentForURL:"), function $CPDocumentController__documentForURL_(self, _cmd, aURL) +{ with(self) +{ + var index = 0, + count = objj_msgSend(_documents, "count"); + for (; index < count; ++index) + { + var theDocument = _documents[index]; + if (objj_msgSend(objj_msgSend(theDocument, "fileURL"), "isEqual:", aURL)) + return theDocument; + } + return nil; +} +},["CPDocument","CPURL"]), new objj_method(sel_getUid("openUntitledDocumentOfType:display:"), function $CPDocumentController__openUntitledDocumentOfType_display_(self, _cmd, aType, shouldDisplay) +{ with(self) +{ + var theDocument = objj_msgSend(self, "makeUntitledDocumentOfType:error:", aType, nil); + if (theDocument) + objj_msgSend(self, "addDocument:", theDocument); + if (shouldDisplay) + { + objj_msgSend(theDocument, "makeWindowControllers"); + objj_msgSend(theDocument, "showWindows"); + } + return theDocument; +} +},["void","CPString","BOOL"]), new objj_method(sel_getUid("makeUntitledDocumentOfType:error:"), function $CPDocumentController__makeUntitledDocumentOfType_error_(self, _cmd, aType, anError) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "documentClassForType:", aType), "alloc"), "initWithType:error:", aType, anError); +} +},["CPDocument","CPString","{CPError}"]), new objj_method(sel_getUid("openDocumentWithContentsOfURL:display:error:"), function $CPDocumentController__openDocumentWithContentsOfURL_display_error_(self, _cmd, anAbsoluteURL, shouldDisplay, anError) +{ with(self) +{ + var result = objj_msgSend(self, "documentForURL:", anAbsoluteURL); + if (!result) + { + var type = objj_msgSend(self, "typeForContentsOfURL:error:", anAbsoluteURL, anError); + result = objj_msgSend(self, "makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, type, self, sel_getUid("document:didRead:contextInfo:"), objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", shouldDisplay, "shouldDisplay")); + objj_msgSend(self, "addDocument:", result); + if (result) + objj_msgSend(self, "noteNewRecentDocument:", result); + } + else if (shouldDisplay) + objj_msgSend(result, "showWindows"); + return result; +} +},["CPDocument","CPURL","BOOL","CPError"]), new objj_method(sel_getUid("reopenDocumentForURL:withContentsOfURL:error:"), function $CPDocumentController__reopenDocumentForURL_withContentsOfURL_error_(self, _cmd, anAbsoluteURL, absoluteContentsURL, anError) +{ with(self) +{ + return objj_msgSend(self, "makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, absoluteContentsURL, objj_msgSend(objj_msgSend(_documentTypes, "objectAtIndex:", 0), "objectForKey:", "CPBundleTypeName"), self, sel_getUid("document:didRead:contextInfo:"), nil); +} +},["CPDocument","CPURL","CPURL","CPError"]), new objj_method(sel_getUid("makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocumentController__makeDocumentWithContentsOfURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, aType, aDelegate, aSelector, aContextInfo) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "documentClassForType:", aType), "alloc"), "initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, aType, aDelegate, aSelector, aContextInfo); +} +},["CPDocument","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocumentController__makeDocumentForURL_withContentsOfURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, absoluteContentsURL, aType, aDelegate, aSelector, aContextInfo) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "documentClassForType:", aType), "alloc"), "initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, absoluteContentsURL, aType, aDelegate, aSelector, aContextInfo); +} +},["CPDocument","CPURL","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("document:didRead:contextInfo:"), function $CPDocumentController__document_didRead_contextInfo_(self, _cmd, aDocument, didRead, aContextInfo) +{ with(self) +{ + if (!didRead) + return; + objj_msgSend(aDocument, "makeWindowControllers"); + if (objj_msgSend(aContextInfo, "objectForKey:", "shouldDisplay")) + objj_msgSend(aDocument, "showWindows"); +} +},["void","CPDocument","BOOL","id"]), new objj_method(sel_getUid("newDocument:"), function $CPDocumentController__newDocument_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "openUntitledDocumentOfType:display:", objj_msgSend(objj_msgSend(_documentTypes, "objectAtIndex:", 0), "objectForKey:", "CPBundleTypeName"), YES); +} +},["CFAction","id"]), new objj_method(sel_getUid("openDocument:"), function $CPDocumentController__openDocument_(self, _cmd, aSender) +{ with(self) +{ + var openPanel = objj_msgSend(CPOpenPanel, "openPanel"); + objj_msgSend(openPanel, "runModal"); + var URLs = objj_msgSend(openPanel, "URLs"), + index = 0, + count = objj_msgSend(URLs, "count"); + for (; index < count; ++index) + objj_msgSend(self, "openDocumentWithContentsOfURL:display:error:", objj_msgSend(CPURL, "URLWithString:", URLs[index]), YES, nil); +} +},["void","id"]), new objj_method(sel_getUid("documents"), function $CPDocumentController__documents(self, _cmd) +{ with(self) +{ + return _documents; +} +},["CPArray"]), new objj_method(sel_getUid("addDocument:"), function $CPDocumentController__addDocument_(self, _cmd, aDocument) +{ with(self) +{ + objj_msgSend(_documents, "addObject:", aDocument); +} +},["void","CPDocument"]), new objj_method(sel_getUid("removeDocument:"), function $CPDocumentController__removeDocument_(self, _cmd, aDocument) +{ with(self) +{ + objj_msgSend(_documents, "removeObjectIdenticalTo:", aDocument); +} +},["void","CPDocument"]), new objj_method(sel_getUid("defaultType"), function $CPDocumentController__defaultType(self, _cmd) +{ with(self) +{ + return objj_msgSend(_documentTypes[0], "objectForKey:", "CPBundleTypeName"); +} +},["CPString"]), new objj_method(sel_getUid("typeForContentsOfURL:error:"), function $CPDocumentController__typeForContentsOfURL_error_(self, _cmd, anAbsoluteURL, outError) +{ with(self) +{ + var index = 0, + count = _documentTypes.length, + extension = objj_msgSend(objj_msgSend(anAbsoluteURL, "pathExtension"), "lowercaseString"), + starType = nil; + for (; index < count; ++index) + { + var documentType = _documentTypes[index], + extensions = objj_msgSend(documentType, "objectForKey:", "CFBundleTypeExtensions"), + extensionIndex = 0, + extensionCount = extensions.length; + for (; extensionIndex < extensionCount; ++extensionIndex) + { + var thisExtension = objj_msgSend(extensions[extensionIndex], "lowercaseString"); + if (thisExtension === extension) + return objj_msgSend(documentType, "objectForKey:", "CPBundleTypeName"); + if (thisExtension === "****") + starType = objj_msgSend(documentType, "objectForKey:", "CPBundleTypeName"); + } + } + return starType || objj_msgSend(self, "defaultType"); +} +},["CPString","CPURL","CPError"]), new objj_method(sel_getUid("_infoForType:"), function $CPDocumentController___infoForType_(self, _cmd, aType) +{ with(self) +{ + var i = 0, + count = objj_msgSend(_documentTypes, "count"); + for (;i < count; ++i) + { + var documentType = _documentTypes[i]; + if (objj_msgSend(documentType, "objectForKey:", "CPBundleTypeName") == aType) + return documentType; + } + return nil; +} +},["CPDictionary","CPString"]), new objj_method(sel_getUid("documentClassForType:"), function $CPDocumentController__documentClassForType_(self, _cmd, aType) +{ with(self) +{ + var className = objj_msgSend(objj_msgSend(self, "_infoForType:", aType), "objectForKey:", "CPDocumentClass"); + return className ? CPClassFromString(className) : nil; +} +},["Class","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sharedDocumentController"), function $CPDocumentController__sharedDocumentController(self, _cmd) +{ with(self) +{ + if (!CPSharedDocumentController) + objj_msgSend(objj_msgSend(self, "alloc"), "init"); + return CPSharedDocumentController; +} +},["id"])]); +} +{ +var the_class = objj_getClass("CPDocumentController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:"), function $CPDocumentController__closeAllDocumentsWithDelegate_didCloseAllSelector_contextInfo_(self, _cmd, aDelegate, didCloseSelector, info) +{ with(self) +{ + var context = { + delegate: aDelegate, + selector: didCloseSelector, + context: info + }; + objj_msgSend(self, "_closeDocumentsStartingWith:shouldClose:context:", nil, YES, context); +} +},["void","id","SEL","Object"]), new objj_method(sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"), function $CPDocumentController___closeDocumentsStartingWith_shouldClose_context_(self, _cmd, aDocument, shouldClose, context) +{ with(self) +{ + if (shouldClose) + { + objj_msgSend(aDocument, "close"); + if (objj_msgSend(objj_msgSend(self, "documents"), "count") > 0) + { + objj_msgSend(objj_msgSend(objj_msgSend(self, "documents"), "lastObject"), "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:", self, sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"), context); + return; + } + } + if (objj_msgSend(context.delegate, "respondsToSelector:", context.selector)) + objj_msgSend(context.delegate, context.selector, self, objj_msgSend(objj_msgSend(self, "documents"), "count") === 0, context.context); +} +},["void","CPDocument","BOOL","Object"])]); +} +{ +var the_class = objj_getClass("CPDocumentController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("recentDocumentURLs"), function $CPDocumentController__recentDocumentURLs(self, _cmd) +{ with(self) +{ + if (typeof window["cpRecentDocumentURLs"] === 'function') + return window.cpRecentDocumentURLs(); + return []; +} +},["CPArray"]), new objj_method(sel_getUid("clearRecentDocuments:"), function $CPDocumentController__clearRecentDocuments_(self, _cmd, sender) +{ with(self) +{ + if (typeof window["cpClearRecentDocuments"] === 'function') + window.cpClearRecentDocuments(); + objj_msgSend(self, "_updateRecentDocumentsMenu"); +} +},["void","id"]), new objj_method(sel_getUid("noteNewRecentDocument:"), function $CPDocumentController__noteNewRecentDocument_(self, _cmd, aDocument) +{ with(self) +{ + objj_msgSend(self, "noteNewRecentDocumentURL:", objj_msgSend(objj_msgSend(aDocument, "fileURL"), "absoluteString")); +} +},["void","CPDocument"]), new objj_method(sel_getUid("noteNewRecentDocumentURL:"), function $CPDocumentController__noteNewRecentDocumentURL_(self, _cmd, aURL) +{ with(self) +{ + if (typeof window["cpNoteNewRecentDocumentPath"] === 'function') + window.cpNoteNewRecentDocumentPath(aURL); + objj_msgSend(self, "_updateRecentDocumentsMenu"); +} +},["void","CPString"]), new objj_method(sel_getUid("_removeAllRecentDocumentsFromMenu:"), function $CPDocumentController___removeAllRecentDocumentsFromMenu_(self, _cmd, aMenu) +{ with(self) +{ + var items = objj_msgSend(aMenu, "itemArray"), + count = objj_msgSend(items, "count"); + while (count--) + { + var item = items[count]; + if (objj_msgSend(item, "action") === sel_getUid("_openRecentDocument:")) + objj_msgSend(aMenu, "removeItemAtIndex:", count); + } +} +},["void","CPMenu"]), new objj_method(sel_getUid("_updateRecentDocumentsMenu"), function $CPDocumentController___updateRecentDocumentsMenu(self, _cmd) +{ with(self) +{ + var menu = objj_msgSend(objj_msgSend(CPApp, "mainMenu"), "_menuWithName:", "_CPRecentDocumentsMenu"), + recentDocuments = objj_msgSend(self, "recentDocumentURLs"), + menuItems = objj_msgSend(menu, "itemArray"), + documentCount = objj_msgSend(recentDocuments, "count"), + menuItemCount = objj_msgSend(menuItems, "count"); + objj_msgSend(self, "_removeAllRecentDocumentsFromMenu:", menu); + if (menuItemCount) + { + if (!documentCount) + { + if (objj_msgSend(menuItems[0], "isSeparatorItem")) + objj_msgSend(menu, "removeItemAtIndex:", 0); + } + else + { + if (!objj_msgSend(menuItems[0], "isSeparatorItem")) + objj_msgSend(menu, "insertItem:atIndex:", objj_msgSend(CPMenuItem, "separatorItem"), 0); + } + } + while (documentCount--) + { + var path = recentDocuments[documentCount], + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", objj_msgSend(path, "lastPathComponent"), sel_getUid("_openRecentDocument:"), nil); + objj_msgSend(item, "setTag:", path); + objj_msgSend(menu, "insertItem:atIndex:", item, 0); + } +} +},["void"]), new objj_method(sel_getUid("_openRecentDocument:"), function $CPDocumentController___openRecentDocument_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "openDocumentWithContentsOfURL:display:error:", objj_msgSend(sender, "tag"), YES, nil); +} +},["void","id"])]); +} + +p;14;CPDragServer.jt;21628;@STATIC;1.0;I;15;AppKit/CPView.jI;16;AppKit/CPEvent.jI;21;AppKit/CPPasteboard.jI;20;AppKit/CPImageView.jt;21516;objj_executeFile("AppKit/CPView.j", NO); +objj_executeFile("AppKit/CPEvent.j", NO); +objj_executeFile("AppKit/CPPasteboard.j", NO); +objj_executeFile("AppKit/CPImageView.j", NO); +CPDragOperationNone = 0, +CPDragOperationCopy = 1 << 1, +CPDragOperationLink = 1 << 1, +CPDragOperationGeneric = 1 << 2, +CPDragOperationPrivate = 1 << 3, +CPDragOperationMove = 1 << 4, +CPDragOperationDelete = 1 << 5, +CPDragOperationEvery = -1; +var CPDragServerPreviousEvent = nil, + CPDragServerPeriodicUpdateInterval = 0.05; +var CPSharedDragServer = nil; +var CPDragServerSource = nil; +var CPDragServerDraggingInfo = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPDraggingInfo"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("draggingPasteboard"), function $CPDraggingInfo__draggingPasteboard(self, _cmd) +{ with(self) +{ + if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + return objj_msgSend(_CPDOMDataTransferPasteboard, "DOMDataTransferPasteboard"); + return objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingPasteboard"); +} +},["CPPasteboard"]), new objj_method(sel_getUid("draggingSource"), function $CPDraggingInfo__draggingSource(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingSource"); +} +},["id"]), new objj_method(sel_getUid("draggingLocation"), function $CPDraggingInfo__draggingLocation(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingLocation"); +} +},["CPPoint"]), new objj_method(sel_getUid("draggingDestinationWindow"), function $CPDraggingInfo__draggingDestinationWindow(self, _cmd) +{ with(self) +{ + return (objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingDestination"), "isKindOfClass:", objj_msgSend(CPWindow, "class")) ? objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingDestination") : objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingDestination"), "window")); +} +},["CPWindow"]), new objj_method(sel_getUid("draggedImage"), function $CPDraggingInfo__draggedImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "draggedView"), "image"); +} +},["CPImage"]), new objj_method(sel_getUid("draggedImageLocation"), function $CPDraggingInfo__draggedImageLocation(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "draggedViewLocation"); +} +},["CGPoint"]), new objj_method(sel_getUid("draggedView"), function $CPDraggingInfo__draggedView(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggedView"); +} +},["CPView"]), new objj_method(sel_getUid("draggedViewLocation"), function $CPDraggingInfo__draggedViewLocation(self, _cmd) +{ with(self) +{ + var dragServer = objj_msgSend(CPDragServer, "sharedDragServer"); + return objj_msgSend((objj_msgSend(objj_msgSend(dragServer, "draggingDestination"), "isKindOfClass:", objj_msgSend(CPWindow, "class")) ? objj_msgSend(dragServer, "draggingDestination") : objj_msgSend(objj_msgSend(dragServer, "draggingDestination"), "window")), "convertPlatformWindowToBase:", objj_msgSend(objj_msgSend(dragServer, "draggedView"), "frame").origin); +} +},["CGPoint"])]); +} +var CPDraggingSource_draggedImage_movedTo_ = 1 << 0, + CPDraggingSource_draggedImage_endedAt_operation_ = 1 << 1, + CPDraggingSource_draggedView_movedTo_ = 1 << 2, + CPDraggingSource_draggedView_endedAt_operation_ = 1 << 3; +{var the_class = objj_allocateClassPair(CPObject, "CPDragServer"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isDragging"), new objj_ivar("_draggedWindow"), new objj_ivar("_draggedView"), new objj_ivar("_imageView"), new objj_ivar("_isDraggingImage"), new objj_ivar("_draggingOffset"), new objj_ivar("_draggingPasteboard"), new objj_ivar("_draggingSource"), new objj_ivar("_implementedDraggingSourceMethods"), new objj_ivar("_draggingLocation"), new objj_ivar("_draggingDestination"), new objj_ivar("_draggingDestinationWantsPeriodicUpdates"), new objj_ivar("_startDragLocation"), new objj_ivar("_shouldSlideBack"), new objj_ivar("_dragOperation"), new objj_ivar("_draggingUpdateTimer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isDragging"), function $CPDragServer__isDragging(self, _cmd) +{ with(self) +{ +return _isDragging; +} +},["id"]), +new objj_method(sel_getUid("draggedWindow"), function $CPDragServer__draggedWindow(self, _cmd) +{ with(self) +{ +return _draggedWindow; +} +},["id"]), +new objj_method(sel_getUid("draggedView"), function $CPDragServer__draggedView(self, _cmd) +{ with(self) +{ +return _draggedView; +} +},["id"]), +new objj_method(sel_getUid("draggingOffset"), function $CPDragServer__draggingOffset(self, _cmd) +{ with(self) +{ +return _draggingOffset; +} +},["id"]), +new objj_method(sel_getUid("draggingPasteboard"), function $CPDragServer__draggingPasteboard(self, _cmd) +{ with(self) +{ +return _draggingPasteboard; +} +},["id"]), +new objj_method(sel_getUid("draggingSource"), function $CPDragServer__draggingSource(self, _cmd) +{ with(self) +{ +return _draggingSource; +} +},["id"]), new objj_method(sel_getUid("init"), function $CPDragServer__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDragServer").super_class }, "init"); + if (self) + { + _draggedWindow = objj_msgSend(objj_msgSend(CPWindow, "alloc"), "initWithContentRect:styleMask:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }, CPBorderlessWindowMask); + objj_msgSend(_draggedWindow, "setLevel:", CPDraggingWindowLevel); + } + return self; +} +},["id"]), new objj_method(sel_getUid("draggingDestination"), function $CPDragServer__draggingDestination(self, _cmd) +{ with(self) +{ + return _draggingDestination; +} +},["id"]), new objj_method(sel_getUid("draggingLocation"), function $CPDragServer__draggingLocation(self, _cmd) +{ with(self) +{ + return _draggingLocation +} +},["CGPoint"]), new objj_method(sel_getUid("draggingStartedInPlatformWindow:globalLocation:"), function $CPDragServer__draggingStartedInPlatformWindow_globalLocation_(self, _cmd, aPlatformWindow, aLocation) +{ with(self) +{ + if (_isDraggingImage) + { + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedImage:beganAt:"))) + objj_msgSend(_draggingSource, "draggedImage:beganAt:", objj_msgSend(_draggedView, "image"), aLocation); + } + else + { + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedView:beganAt:"))) + objj_msgSend(_draggingSource, "draggedView:beganAt:", _draggedView, aLocation); + } + if (!objj_msgSend(CPPlatform, "supportsDragAndDrop")) + objj_msgSend(_draggedWindow, "orderFront:", self); +} +},["void","CPPlatformWindow","CGPoint"]), new objj_method(sel_getUid("draggingSourceUpdatedWithGlobalLocation:"), function $CPDragServer__draggingSourceUpdatedWithGlobalLocation_(self, _cmd, aGlobalLocation) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "supportsDragAndDrop")) + objj_msgSend(_draggedWindow, "setFrameOrigin:", { x:aGlobalLocation.x - _draggingOffset.width, y:aGlobalLocation.y - _draggingOffset.height }); + if (_implementedDraggingSourceMethods & CPDraggingSource_draggedImage_movedTo_) + objj_msgSend(_draggingSource, "draggedImage:movedTo:", objj_msgSend(_draggedView, "image"), aGlobalLocation); + else if (_implementedDraggingSourceMethods & CPDraggingSource_draggedView_movedTo_) + objj_msgSend(_draggingSource, "draggedView:movedTo:", _draggedView, aGlobalLocation); +} +},["void","CGPoint"]), new objj_method(sel_getUid("draggingUpdatedInPlatformWindow:location:"), function $CPDragServer__draggingUpdatedInPlatformWindow_location_(self, _cmd, aPlatformWindow, aLocation) +{ with(self) +{ + objj_msgSend(_draggingUpdateTimer, "invalidate"); + _draggingUpdateTimer = nil; + var dragOperation = CPDragOperationCopy; + var draggingDestination = objj_msgSend(aPlatformWindow, "_dragHitTest:pasteboard:", aLocation, objj_msgSend(CPDragServerDraggingInfo, "draggingPasteboard")); + if (draggingDestination) + _draggingLocation = objj_msgSend((objj_msgSend(draggingDestination, "isKindOfClass:", objj_msgSend(CPWindow, "class")) ? draggingDestination : objj_msgSend(draggingDestination, "window")), "convertPlatformWindowToBase:", aLocation); + if(draggingDestination !== _draggingDestination) + { + if (objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("draggingExited:"))) + objj_msgSend(_draggingDestination, "draggingExited:", CPDragServerDraggingInfo); + _draggingDestination = draggingDestination; + if (objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("wantsPeriodicDraggingUpdates"))) + _draggingDestinationWantsPeriodicUpdates = objj_msgSend(_draggingDestination, "wantsPeriodicDraggingUpdates"); + else + _draggingDestinationWantsPeriodicUpdates = YES; + if (objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("draggingEntered:"))) + dragOperation = objj_msgSend(_draggingDestination, "draggingEntered:", CPDragServerDraggingInfo); + } + else if (objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("draggingUpdated:"))) + dragOperation = objj_msgSend(_draggingDestination, "draggingUpdated:", CPDragServerDraggingInfo); + if (!_draggingDestination) + dragOperation = CPDragOperationNone; + else + { + if (_draggingDestinationWantsPeriodicUpdates) + _draggingUpdateTimer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", CPDragServerPeriodicUpdateInterval, self, sel_getUid("_sendPeriodicDraggingUpdate:"), objj_msgSend(CPDictionary, "dictionaryWithJSObject:", {platformWindow:aPlatformWindow, location:aLocation}), NO); + var scrollView = objj_msgSend(_draggingDestination, "isKindOfClass:", objj_msgSend(CPView, "class")) ? objj_msgSend(_draggingDestination, "enclosingScrollView") : nil; + if (scrollView) + { + var contentView = objj_msgSend(scrollView, "contentView"), + bounds = objj_msgSend(contentView, "bounds"), + insetBounds = CGRectInset(bounds, 10, 10), + eventLocation = objj_msgSend(contentView, "convertPoint:fromView:", _draggingLocation, nil), + deltaX = 0, + deltaY = 0; + if (!CGRectContainsPoint(insetBounds, eventLocation)) + { + if (objj_msgSend(scrollView, "hasVerticalScroller")) + { + if (eventLocation.y < CGRectGetMinY(insetBounds)) + deltaY = CGRectGetMinY(insetBounds) - eventLocation.y; + else if (eventLocation.y > CGRectGetMaxY(insetBounds)) + deltaY = CGRectGetMaxY(insetBounds) - eventLocation.y; + if (deltaY < -insetBounds.size.height) + deltaY = -insetBounds.size.height; + if (deltaY > insetBounds.size.height) + deltaY = insetBounds.size.height; + } + if (objj_msgSend(scrollView, "hasHorizontalScroller")) + { + if (eventLocation.x < CGRectGetMinX(insetBounds)) + deltaX = CGRectGetMinX(insetBounds) - eventLocation.x; + else if (eventLocation.x > CGRectGetMaxX(insetBounds)) + deltaX = CGRectGetMaxX(insetBounds) - eventLocation.x; + if (deltaX < -insetBounds.size.width) + deltaX = -insetBounds.size.width; + if (deltaX > insetBounds.size.width) + deltaX = insetBounds.size.width; + } + objj_msgSend(contentView, "scrollToPoint:", CGPointMake(bounds.origin.x - deltaX, bounds.origin.y - deltaY)); + } + } + } + return dragOperation; +} +},["CPDragOperation","CPPlatformWindow","CGPoint"]), new objj_method(sel_getUid("_sendPeriodicDraggingUpdate:"), function $CPDragServer___sendPeriodicDraggingUpdate_(self, _cmd, aTimer) +{ with(self) +{ + var userInfo = objj_msgSend(aTimer, "userInfo"); + _dragOperation = objj_msgSend(self, "draggingUpdatedInPlatformWindow:location:", objj_msgSend(userInfo, "objectForKey:", "platformWindow"), objj_msgSend(userInfo, "objectForKey:", "location")); +} +},["void","CPTimer"]), new objj_method(sel_getUid("draggingEndedInPlatformWindow:globalLocation:operation:"), function $CPDragServer__draggingEndedInPlatformWindow_globalLocation_operation_(self, _cmd, aPlatformWindow, aLocation, anOperation) +{ with(self) +{ + objj_msgSend(_draggingUpdateTimer, "invalidate"); + _draggingUpdateTimer = nil; + objj_msgSend(_draggedView, "removeFromSuperview"); + if (!objj_msgSend(CPPlatform, "supportsDragAndDrop")) + objj_msgSend(_draggedWindow, "orderOut:", self); + if (_implementedDraggingSourceMethods & CPDraggingSource_draggedImage_endedAt_operation_) + objj_msgSend(_draggingSource, "draggedImage:endedAt:operation:", objj_msgSend(_draggedView, "image"), aLocation, anOperation); + else if (_implementedDraggingSourceMethods & CPDraggingSource_draggedView_endedAt_operation_) + objj_msgSend(_draggingSource, "draggedView:endedAt:operation:", _draggedView, aLocation, anOperation); + _isDragging = NO; +} +},["void","CPPlatformWindow","CGPoint","CPDragOperation"]), new objj_method(sel_getUid("performDragOperationInPlatformWindow:"), function $CPDragServer__performDragOperationInPlatformWindow_(self, _cmd, aPlatformWindow) +{ with(self) +{ + if (_draggingDestination && + (!objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("prepareForDragOperation:")) || objj_msgSend(_draggingDestination, "prepareForDragOperation:", CPDragServerDraggingInfo)) && + (!objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("performDragOperation:")) || objj_msgSend(_draggingDestination, "performDragOperation:", CPDragServerDraggingInfo)) && + objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("concludeDragOperation:"))) + objj_msgSend(_draggingDestination, "concludeDragOperation:", CPDragServerDraggingInfo); +} +},["void","CPPlatformWindow"]), new objj_method(sel_getUid("dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:"), function $CPDragServer__dragView_fromWindow_at_offset_event_pasteboard_source_slideBack_(self, _cmd, aView, aWindow, viewLocation, mouseOffset, mouseDownEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + _isDragging = YES; + _draggedView = aView; + _draggingPasteboard = aPasteboard || objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard); + _draggingSource = aSourceObject; + _draggingDestination = nil; + _shouldSlideBack = slideBack; + var mouseDownWindow = objj_msgSend(mouseDownEvent, "window"), + mouseDownEventLocation = objj_msgSend(mouseDownEvent, "locationInWindow"); + if (mouseDownEventLocation) + { + if (mouseDownWindow) + mouseDownEventLocation = objj_msgSend(mouseDownWindow, "convertBaseToGlobal:", mouseDownEventLocation); + _draggingOffset = { width:mouseDownEventLocation.x - viewLocation.x, height:mouseDownEventLocation.y - viewLocation.y }; + } + else + _draggingOffset = { width:0.0, height:0.0 }; + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(_draggedWindow, "setPlatformWindow:", objj_msgSend(aWindow, "platformWindow")); + objj_msgSend(aView, "setFrameOrigin:", { x:0.0, y:0.0 }); + var mouseLocation = objj_msgSend(CPEvent, "mouseLocation"); + _startDragLocation = { x:mouseLocation.x - _draggingOffset.width, y:mouseLocation.y - _draggingOffset.height }; + objj_msgSend(_draggedWindow, "setFrameOrigin:", _startDragLocation); + objj_msgSend(_draggedWindow, "setFrameSize:", objj_msgSend(aView, "frame").size); + objj_msgSend(objj_msgSend(_draggedWindow, "contentView"), "addSubview:", aView); + _implementedDraggingSourceMethods = 0; + if (_draggedView === _imageView) + { + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedImage:movedTo:"))) + _implementedDraggingSourceMethods |= CPDraggingSource_draggedImage_movedTo_; + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedImage:endedAt:operation:"))) + _implementedDraggingSourceMethods |= CPDraggingSource_draggedImage_endedAt_operation_; + } + else + { + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedView:movedTo:"))) + _implementedDraggingSourceMethods |= CPDraggingSource_draggedView_movedTo_; + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedView:endedAt:operation:"))) + _implementedDraggingSourceMethods |= CPDraggingSource_draggedView_endedAt_operation_; + } + if (!objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + objj_msgSend(self, "draggingStartedInPlatformWindow:globalLocation:", objj_msgSend(aWindow, "platformWindow"), mouseLocation); + objj_msgSend(self, "trackDragging:", mouseDownEvent); + } +} +},["void","CPView","CPWindow","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:"), function $CPDragServer__dragImage_fromWindow_at_offset_event_pasteboard_source_slideBack_(self, _cmd, anImage, aWindow, imageLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + _isDraggingImage = YES; + var imageSize = objj_msgSend(anImage, "size"); + if (!_imageView) + _imageView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:imageSize.width, height:imageSize.height } }); + objj_msgSend(_imageView, "setImage:", anImage); + objj_msgSend(self, "dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:", _imageView, aWindow, imageLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPImage","CPWindow","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("trackDragging:"), function $CPDragServer__trackDragging_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + platformWindow = objj_msgSend(_draggedWindow, "platformWindow"), + platformWindowLocation = objj_msgSend(objj_msgSend(anEvent, "window"), "convertBaseToPlatformWindow:", objj_msgSend(anEvent, "locationInWindow")); + if (type === CPLeftMouseUp) + { + if (_dragOperation !== CPDragOperationNone) + objj_msgSend(self, "performDragOperationInPlatformWindow:", platformWindow); + objj_msgSend(self, "draggingEndedInPlatformWindow:globalLocation:operation:", platformWindow, platformWindowLocation, _dragOperation); + return; + } + else if (type === CPKeyDown) + { + var keyCode = objj_msgSend(anEvent, "keyCode"); + if (keyCode === CPEscapeKeyCode) + { + _dragOperation = CPDragOperationNone; + objj_msgSend(self, "draggingEndedInPlatformWindow:globalLocation:operation:", platformWindow, CGPointMakeZero(), _dragOperation); + return; + } + } + else + { + objj_msgSend(self, "draggingSourceUpdatedWithGlobalLocation:", platformWindowLocation); + _dragOperation = objj_msgSend(self, "draggingUpdatedInPlatformWindow:location:", platformWindow, platformWindowLocation); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackDragging:"), CPMouseMovedMask | CPLeftMouseDraggedMask | CPLeftMouseUpMask | CPKeyDownMask, nil, 0, NO); +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPDragServer__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(CPDragServer, "class")) + return; + CPDragServerDraggingInfo = objj_msgSend(objj_msgSend(CPDraggingInfo, "alloc"), "init"); +} +},["void"]), new objj_method(sel_getUid("sharedDragServer"), function $CPDragServer__sharedDragServer(self, _cmd) +{ with(self) +{ + if (!CPSharedDragServer) + CPSharedDragServer = objj_msgSend(objj_msgSend(CPDragServer, "alloc"), "init"); + return CPSharedDragServer; +} +},["CPDragServer"])]); +} +{ +var the_class = objj_getClass("CPWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_dragHitTest:pasteboard:"), function $CPWindow___dragHitTest_pasteboard_(self, _cmd, aPoint, aPasteboard) +{ with(self) +{ + if (!_inclusiveRegisteredDraggedTypes) + return nil; + var adjustedPoint = objj_msgSend(self, "convertPlatformWindowToBase:", aPoint), + hitView = objj_msgSend(_windowView, "hitTest:", adjustedPoint); + while (hitView && !objj_msgSend(aPasteboard, "availableTypeFromArray:", objj_msgSend(hitView, "registeredDraggedTypes"))) + hitView = objj_msgSend(hitView, "superview"); + if (hitView) + return hitView; + if (objj_msgSend(aPasteboard, "availableTypeFromArray:", objj_msgSend(self, "registeredDraggedTypes"))) + return self; + return nil; +} +},["id","CGPoint","CPPasteboard"])]); +} + +p;9;CPEvent.jt;18147;@STATIC;1.0;I;21;Foundation/CPObject.ji;8;CPText.jt;18089;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CPText.j", YES); +CPLeftMouseDown = 1; +CPLeftMouseUp = 2; +CPRightMouseDown = 3; +CPRightMouseUp = 4; +CPMouseMoved = 5; +CPLeftMouseDragged = 6; +CPRightMouseDragged = 7; +CPMouseEntered = 8; +CPMouseExited = 9; +CPKeyDown = 10; +CPKeyUp = 11; +CPFlagsChanged = 12; +CPAppKitDefined = 13; +CPSystemDefined = 14; +CPApplicationDefined = 15; +CPPeriodic = 16; +CPCursorUpdate = 17; +CPScrollWheel = 22; +CPOtherMouseDown = 25; +CPOtherMouseUp = 26; +CPOtherMouseDragged = 27; +CPTouchStart = 28; +CPTouchMove = 29; +CPTouchEnd = 30; +CPTouchCancel = 31; +CPAlphaShiftKeyMask = 1 << 16; +CPShiftKeyMask = 1 << 17; +CPControlKeyMask = 1 << 18; +CPAlternateKeyMask = 1 << 19; +CPCommandKeyMask = 1 << 20; +CPNumericPadKeyMask = 1 << 21; +CPHelpKeyMask = 1 << 22; +CPFunctionKeyMask = 1 << 23; +CPDeviceIndependentModifierFlagsMask = 0xffff0000; +CPLeftMouseDownMask = 1 << CPLeftMouseDown; +CPLeftMouseUpMask = 1 << CPLeftMouseUp; +CPRightMouseDownMask = 1 << CPRightMouseDown; +CPRightMouseUpMask = 1 << CPRightMouseUp; +CPOtherMouseDownMask = 1 << CPOtherMouseDown; +CPOtherMouseUpMask = 1 << CPOtherMouseUp; +CPMouseMovedMask = 1 << CPMouseMoved; +CPLeftMouseDraggedMask = 1 << CPLeftMouseDragged; +CPRightMouseDraggedMask = 1 << CPRightMouseDragged; +CPOtherMouseDragged = 1 << CPOtherMouseDragged; +CPMouseEnteredMask = 1 << CPMouseEntered; +CPMouseExitedMask = 1 << CPMouseExited; +CPCursorUpdateMask = 1 << CPCursorUpdate; +CPKeyDownMask = 1 << CPKeyDown; +CPKeyUpMask = 1 << CPKeyUp; +CPFlagsChangedMask = 1 << CPFlagsChanged; +CPAppKitDefinedMask = 1 << CPAppKitDefined; +CPSystemDefinedMask = 1 << CPSystemDefined; +CPApplicationDefinedMask = 1 << CPApplicationDefined; +CPPeriodicMask = 1 << CPPeriodic; +CPScrollWheelMask = 1 << CPScrollWheel; +CPAnyEventMask = 0xffffffff; +CPUpArrowFunctionKey = "\uF700"; +CPDownArrowFunctionKey = "\uF701"; +CPLeftArrowFunctionKey = "\uF702"; +CPRightArrowFunctionKey = "\uF703"; +CPF1FunctionKey = "\uF704"; +CPF2FunctionKey = "\uF705"; +CPF3FunctionKey = "\uF706"; +CPF4FunctionKey = "\uF707"; +CPF5FunctionKey = "\uF708"; +CPF6FunctionKey = "\uF709"; +CPF7FunctionKey = "\uF70A"; +CPF8FunctionKey = "\uF70B"; +CPF9FunctionKey = "\uF70C"; +CPF10FunctionKey = "\uF70D"; +CPF11FunctionKey = "\uF70E"; +CPF12FunctionKey = "\uF70F"; +CPF13FunctionKey = "\uF710"; +CPF14FunctionKey = "\uF711"; +CPF15FunctionKey = "\uF712"; +CPF16FunctionKey = "\uF713"; +CPF17FunctionKey = "\uF714"; +CPF18FunctionKey = "\uF715"; +CPF19FunctionKey = "\uF716"; +CPF20FunctionKey = "\uF717"; +CPF21FunctionKey = "\uF718"; +CPF22FunctionKey = "\uF719"; +CPF23FunctionKey = "\uF71A"; +CPF24FunctionKey = "\uF71B"; +CPF25FunctionKey = "\uF71C"; +CPF26FunctionKey = "\uF71D"; +CPF27FunctionKey = "\uF71E"; +CPF28FunctionKey = "\uF71F"; +CPF29FunctionKey = "\uF720"; +CPF30FunctionKey = "\uF721"; +CPF31FunctionKey = "\uF722"; +CPF32FunctionKey = "\uF723"; +CPF33FunctionKey = "\uF724"; +CPF34FunctionKey = "\uF725"; +CPF35FunctionKey = "\uF726"; +CPInsertFunctionKey = "\uF727"; +CPDeleteFunctionKey = "\uF728"; +CPHomeFunctionKey = "\uF729"; +CPBeginFunctionKey = "\uF72A"; +CPEndFunctionKey = "\uF72B"; +CPPageUpFunctionKey = "\uF72C"; +CPPageDownFunctionKey = "\uF72D"; +CPPrintScreenFunctionKey = "\uF72E"; +CPScrollLockFunctionKey = "\uF72F"; +CPPauseFunctionKey = "\uF730"; +CPSysReqFunctionKey = "\uF731"; +CPBreakFunctionKey = "\uF732"; +CPResetFunctionKey = "\uF733"; +CPStopFunctionKey = "\uF734"; +CPMenuFunctionKey = "\uF735"; +CPUserFunctionKey = "\uF736"; +CPSystemFunctionKey = "\uF737"; +CPPrintFunctionKey = "\uF738"; +CPClearLineFunctionKey = "\uF739"; +CPClearDisplayFunctionKey = "\uF73A"; +CPInsertLineFunctionKey = "\uF73B"; +CPDeleteLineFunctionKey = "\uF73C"; +CPInsertCharFunctionKey = "\uF73D"; +CPDeleteCharFunctionKey = "\uF73E"; +CPPrevFunctionKey = "\uF73F"; +CPNextFunctionKey = "\uF740"; +CPSelectFunctionKey = "\uF741"; +CPExecuteFunctionKey = "\uF742"; +CPUndoFunctionKey = "\uF743"; +CPRedoFunctionKey = "\uF744"; +CPFindFunctionKey = "\uF745"; +CPHelpFunctionKey = "\uF746"; +CPModeSwitchFunctionKey = "\uF747"; +CPEscapeFunctionKey = "\u001B"; +CPDOMEventDoubleClick = "dblclick", +CPDOMEventMouseDown = "mousedown", +CPDOMEventMouseUp = "mouseup", +CPDOMEventMouseMoved = "mousemove", +CPDOMEventMouseDragged = "mousedrag", +CPDOMEventKeyUp = "keyup", +CPDOMEventKeyDown = "keydown", +CPDOMEventKeyPress = "keypress"; +CPDOMEventCopy = "copy"; +CPDOMEventPaste = "paste"; +CPDOMEventScrollWheel = "mousewheel"; +CPDOMEventTouchStart = "touchstart"; +CPDOMEventTouchMove = "touchmove"; +CPDOMEventTouchEnd = "touchend"; +CPDOMEventTouchCancel = "touchcancel"; +var _CPEventPeriodicEventPeriod = 0, + _CPEventPeriodicEventTimer = nil, + _CPEventUpperCaseRegex = new RegExp("[A-Z]"); +{var the_class = objj_allocateClassPair(CPObject, "CPEvent"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_type"), new objj_ivar("_location"), new objj_ivar("_modifierFlags"), new objj_ivar("_timestamp"), new objj_ivar("_context"), new objj_ivar("_eventNumber"), new objj_ivar("_clickCount"), new objj_ivar("_pressure"), new objj_ivar("_window"), new objj_ivar("_windowNumber"), new objj_ivar("_characters"), new objj_ivar("_isARepeat"), new objj_ivar("_keyCode"), new objj_ivar("_DOMEvent"), new objj_ivar("_deltaX"), new objj_ivar("_deltaY"), new objj_ivar("_deltaZ")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initMouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:"), function $CPEvent___initMouseEventWithType_location_modifierFlags_timestamp_windowNumber_context_eventNumber_clickCount_pressure_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPEvent").super_class }, "init"); + if (self) + { + _type = anEventType; + _location = CPPointCreateCopy(aPoint); + _modifierFlags = modifierFlags; + _timestamp = aTimestamp; + _context = aGraphicsContext; + _eventNumber = anEventNumber; + _clickCount = aClickCount; + _pressure = aPressure; + _window = objj_msgSend(CPApp, "windowWithWindowNumber:", aWindowNumber); + } + return self; +} +},["id","CPEventType","CPPoint","unsigned","CPTimeInterval","int","CPGraphicsContext","int","int","float"]), new objj_method(sel_getUid("_initKeyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:"), function $CPEvent___initKeyEventWithType_location_modifierFlags_timestamp_windowNumber_context_characters_charactersIgnoringModifiers_isARepeat_keyCode_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, characters, unmodCharacters, isARepeat, code) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPEvent").super_class }, "init"); + if (self) + { + _type = anEventType; + _location = CPPointCreateCopy(aPoint); + _modifierFlags = modifierFlags; + _timestamp = aTimestamp; + _context = aGraphicsContext; + _characters = characters; + _charactersIgnoringModifiers = unmodCharacters; + _isARepeat = isARepeat; + _keyCode = code; + _windowNumber = aWindowNumber; + } + return self; +} +},["id","CPEventType","CPPoint","unsignedint","CPTimeInterval","int","CPGraphicsContext","CPString","CPString","BOOL","unsignedshort"]), new objj_method(sel_getUid("_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:"), function $CPEvent___initOtherEventWithType_location_modifierFlags_timestamp_windowNumber_context_subtype_data1_data2_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, aSubtype, aData1, aData2) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPEvent").super_class }, "init"); + if (self) + { + _type = anEventType; + _location = CPPointCreateCopy(aPoint); + _modifierFlags = modifierFlags; + _timestamp = aTimestamp; + _context = aGraphicsContext; + _subtype = aSubtype; + _data1 = aData1; + _data2 = aData2; + } + return self; +} +},["id","CPEventType","CGPoint","unsigned","CPTimeInterval","int","CPGraphicsContext","short","int","int"]), new objj_method(sel_getUid("locationInWindow"), function $CPEvent__locationInWindow(self, _cmd) +{ with(self) +{ + return { x:_location.x, y:_location.y }; +} +},["CGPoint"]), new objj_method(sel_getUid("globalLocation"), function $CPEvent__globalLocation(self, _cmd) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"), + location = objj_msgSend(self, "locationInWindow"); + if (theWindow) + return objj_msgSend(theWindow, "convertBaseToGlobal:", location); + return location; +} +},["CGPoint"]), new objj_method(sel_getUid("modifierFlags"), function $CPEvent__modifierFlags(self, _cmd) +{ with(self) +{ + return _modifierFlags; +} +},["unsigned"]), new objj_method(sel_getUid("timestamp"), function $CPEvent__timestamp(self, _cmd) +{ with(self) +{ + return _timestamp; +} +},["CPTimeInterval"]), new objj_method(sel_getUid("type"), function $CPEvent__type(self, _cmd) +{ with(self) +{ + return _type; +} +},["CPEventType"]), new objj_method(sel_getUid("window"), function $CPEvent__window(self, _cmd) +{ with(self) +{ + if (!_window) + _window = objj_msgSend(CPApp, "windowWithWindowNumber:", _windowNumber); + return _window; +} +},["CPWindow"]), new objj_method(sel_getUid("windowNumber"), function $CPEvent__windowNumber(self, _cmd) +{ with(self) +{ + return _windowNumber; +} +},["int"]), new objj_method(sel_getUid("buttonNumber"), function $CPEvent__buttonNumber(self, _cmd) +{ with(self) +{ + if (_type === CPRightMouseDown || _type === CPRightMouseUp || _type === CPRightMouseDragged) + return 1; + return 0; +} +},["int"]), new objj_method(sel_getUid("clickCount"), function $CPEvent__clickCount(self, _cmd) +{ with(self) +{ + return _clickCount; +} +},["int"]), new objj_method(sel_getUid("characters"), function $CPEvent__characters(self, _cmd) +{ with(self) +{ + return _characters; +} +},["CPString"]), new objj_method(sel_getUid("charactersIgnoringModifiers"), function $CPEvent__charactersIgnoringModifiers(self, _cmd) +{ with(self) +{ + return _charactersIgnoringModifiers; +} +},["CPString"]), new objj_method(sel_getUid("isARepeat"), function $CPEvent__isARepeat(self, _cmd) +{ with(self) +{ + return _isARepeat; +} +},["BOOL"]), new objj_method(sel_getUid("keyCode"), function $CPEvent__keyCode(self, _cmd) +{ with(self) +{ + return _keyCode; +} +},["unsignedshort"]), new objj_method(sel_getUid("pressure"), function $CPEvent__pressure(self, _cmd) +{ with(self) +{ + return _pressure; +} +},["float"]), new objj_method(sel_getUid("_DOMEvent"), function $CPEvent___DOMEvent(self, _cmd) +{ with(self) +{ + return _DOMEvent; +} +},["DOMEvent"]), new objj_method(sel_getUid("deltaX"), function $CPEvent__deltaX(self, _cmd) +{ with(self) +{ + return _deltaX; +} +},["float"]), new objj_method(sel_getUid("deltaY"), function $CPEvent__deltaY(self, _cmd) +{ with(self) +{ + return _deltaY; +} +},["float"]), new objj_method(sel_getUid("deltaZ"), function $CPEvent__deltaZ(self, _cmd) +{ with(self) +{ + return _deltaZ; +} +},["float"]), new objj_method(sel_getUid("_triggersKeyEquivalent:withModifierMask:"), function $CPEvent___triggersKeyEquivalent_withModifierMask_(self, _cmd, aKeyEquivalent, aKeyEquivalentModifierMask) +{ with(self) +{ + if (!aKeyEquivalent) + return NO; + if (_CPEventUpperCaseRegex.test(aKeyEquivalent)) + aKeyEquivalentModifierMask |= CPShiftKeyMask; + if (CPBrowserIsOperatingSystem(CPWindowsOperatingSystem) && (aKeyEquivalentModifierMask & CPCommandKeyMask)) + { + aKeyEquivalentModifierMask |= CPControlKeyMask; + aKeyEquivalentModifierMask &= ~CPCommandKeyMask; + } + if ((_modifierFlags & (CPShiftKeyMask | CPAlternateKeyMask | CPCommandKeyMask | CPControlKeyMask)) !== aKeyEquivalentModifierMask) + return NO; + if (_characters === CPNewlineCharacter || _characters === CPCarriageReturnCharacter) + return CPNewlineCharacter === aKeyEquivalent || CPCarriageReturnCharacter === aKeyEquivalent; + return objj_msgSend(_characters, "caseInsensitiveCompare:", aKeyEquivalent) === CPOrderedSame; +} +},["BOOL","CPString",null]), new objj_method(sel_getUid("_couldBeKeyEquivalent"), function $CPEvent___couldBeKeyEquivalent(self, _cmd) +{ with(self) +{ + if (_type !== CPKeyDown) + return NO; + var characterCount = _characters.length; + if (!characterCount) + return NO; + if (_modifierFlags & (CPCommandKeyMask | CPControlKeyMask)) + return YES; + for(var i=0; i<characterCount; i++) + { + switch(_characters.charAt(i)) + { + case CPBackspaceCharacter: + case CPDeleteCharacter: + case CPDeleteFunctionKey: + case CPTabCharacter: + case CPCarriageReturnCharacter: + case CPNewlineCharacter: + case CPEscapeFunctionKey: + case CPPageUpFunctionKey: + case CPPageDownFunctionKey: + case CPLeftArrowFunctionKey: + case CPUpArrowFunctionKey: + case CPRightArrowFunctionKey: + case CPDownArrowFunctionKey: + return YES; + } + } + return NO; +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:"), function $CPEvent__keyEventWithType_location_modifierFlags_timestamp_windowNumber_context_characters_charactersIgnoringModifiers_isARepeat_keyCode_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, characters, unmodCharacters, repeatKey, code) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "_initKeyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, characters, unmodCharacters, repeatKey, code); +} +},["CPEvent","CPEventType","CGPoint","unsignedint","CPTimeInterval","int","CPGraphicsContext","CPString","CPString","BOOL","unsignedshort"]), new objj_method(sel_getUid("mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:"), function $CPEvent__mouseEventWithType_location_modifierFlags_timestamp_windowNumber_context_eventNumber_clickCount_pressure_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "_initMouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure); +} +},["id","CPEventType","CGPoint","unsigned","CPTimeInterval","int","CPGraphicsContext","int","int","float"]), new objj_method(sel_getUid("otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:"), function $CPEvent__otherEventWithType_location_modifierFlags_timestamp_windowNumber_context_subtype_data1_data2_(self, _cmd, anEventType, aLocation, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, aSubtype, aData1, aData2) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", anEventType, aLocation, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, aSubtype, aData1, aData2); +} +},["CPEvent","CPEventType","CGPoint","unsigned","CPTimeInterval","int","CPGraphicsContext","short","int","int"]), new objj_method(sel_getUid("mouseLocation"), function $CPEvent__mouseLocation(self, _cmd) +{ with(self) +{ + var event = objj_msgSend(CPApp, "currentEvent"), + eventWindow = objj_msgSend(event, "window"); + if (eventWindow) + return objj_msgSend(eventWindow, "convertBaseToGlobal:", objj_msgSend(event, "locationInWindow")); + return objj_msgSend(event, "locationInWindow"); +} +},["CGPoint"]), new objj_method(sel_getUid("startPeriodicEventsAfterDelay:withPeriod:"), function $CPEvent__startPeriodicEventsAfterDelay_withPeriod_(self, _cmd, aDelay, aPeriod) +{ with(self) +{ + _CPEventPeriodicEventPeriod = aPeriod; + _CPEventPeriodicEventTimer = window.setTimeout(function() { _CPEventPeriodicEventTimer = window.setInterval(_CPEventFirePeriodEvent, aPeriod * 1000.0); }, aDelay * 1000.0); +} +},["void","CPTimeInterval","CPTimeInterval"]), new objj_method(sel_getUid("stopPeriodicEvents"), function $CPEvent__stopPeriodicEvents(self, _cmd) +{ with(self) +{ + if (_CPEventPeriodicEventTimer === nil) + return; + window.clearTimeout(_CPEventPeriodicEventTimer); + _CPEventPeriodicEventTimer = nil; +} +},["void"])]); +} +_CPEventFirePeriodEvent= function() +{ + objj_msgSend(CPApp, "sendEvent:", objj_msgSend(CPEvent, "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", CPPeriodic, { x:0.0, y:0.0 }, 0, 0, 0, nil, 0, 0, 0)); +} +var CPEventClass = objj_msgSend(CPEvent, "class"); +_CPEventFromNativeMouseEvent= function(aNativeEvent, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure) +{ + aNativeEvent.isa = CPEventClass; + aNativeEvent._type = anEventType; + aNativeEvent._location = aPoint; + aNativeEvent._modifierFlags = modifierFlags; + aNativeEvent._timestamp = aTimestamp; + aNativeEvent._windowNumber = aWindowNumber; + aNativeEvent._window = nil; + aNativeEvent._context = aGraphicsContext; + aNativeEvent._eventNumber = anEventNumber; + aNativeEvent._clickCount = aClickCount; + aNativeEvent._pressure = aPressure; + return aNativeEvent; +} + +p;14;CPFlashMovie.jt;1791;@STATIC;1.0;I;21;Foundation/CPObject.jt;1746;objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPFlashMovie"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_filename")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFile:"), function $CPFlashMovie__initWithFile_(self, _cmd, aFilename) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPFlashMovie").super_class }, "init"); + if (self) + _filename = aFilename; + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("filename"), function $CPFlashMovie__filename(self, _cmd) +{ with(self) +{ + return _filename; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("flashMovieWithFile:"), function $CPFlashMovie__flashMovieWithFile_(self, _cmd, aFilename) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithFile:", aFilename); +} +},["id","CPString"])]); +} +var CPFlashMovieFilenameKey = "CPFlashMovieFilenameKey"; +{ +var the_class = objj_getClass("CPFlashMovie") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPFlashMovie\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPFlashMovie__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + _filename = objj_msgSend(aCoder, "decodeObjectForKey:", CPFlashMovieFilenameKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPFlashMovie__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _filename, CPFlashMovieFilenameKey); +} +},["void","CPCoder"])]); +} + +p;13;CPFlashView.jt;6532;@STATIC;1.0;i;14;CPFlashMovie.ji;8;CPView.jt;6482;objj_executeFile("CPFlashMovie.j", YES); +objj_executeFile("CPView.j", YES); +var IEFlashCLSID = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; +{var the_class = objj_allocateClassPair(CPView, "CPFlashView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_flashMovie"), new objj_ivar("_params"), new objj_ivar("_paramElements"), new objj_ivar("_DOMParamElement"), new objj_ivar("_DOMObjectElement"), new objj_ivar("_DOMInnerObjectElement")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPFlashView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPFlashView").super_class }, "initWithFrame:", aFrame); + if (self) + { + if (!CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + { + _DOMObjectElement = document.createElement("object"); + _DOMObjectElement.width = "100%"; + _DOMObjectElement.height = "100%"; + _DOMObjectElement.style.top = "0px"; + _DOMObjectElement.style.left = "0px"; + _DOMObjectElement.type = "application/x-shockwave-flash"; + _DOMObjectElement.setAttribute("classid", IEFlashCLSID); + _DOMParamElement = document.createElement("param"); + _DOMParamElement.name = "movie"; + _DOMInnerObjectElement = document.createElement("object"); + _DOMInnerObjectElement.width = "100%"; + _DOMInnerObjectElement.height = "100%"; + _DOMObjectElement.appendChild(_DOMParamElement); + _DOMObjectElement.appendChild(_DOMInnerObjectElement); + _DOMElement.appendChild(_DOMObjectElement); + } + else + objj_msgSend(self, "_rebuildIEObjects"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setFlashMovie:"), function $CPFlashView__setFlashMovie_(self, _cmd, aFlashMovie) +{ with(self) +{ + if (_flashMovie == aFlashMovie) + return; + _flashMovie = aFlashMovie; + if (!CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + { + _DOMParamElement.value = objj_msgSend(aFlashMovie, "filename"); + _DOMInnerObjectElement.data = objj_msgSend(aFlashMovie, "filename"); + } + else + objj_msgSend(self, "_rebuildIEObjects"); +} +},["void","CPFlashMovie"]), new objj_method(sel_getUid("flashMovie"), function $CPFlashView__flashMovie(self, _cmd) +{ with(self) +{ + return _flashMovie; +} +},["CPFlashMovie"]), new objj_method(sel_getUid("setFlashVars:"), function $CPFlashView__setFlashVars_(self, _cmd, aDictionary) +{ with(self) +{ + var varString = "", + enumerator = objj_msgSend(aDictionary, "keyEnumerator"); + var key; + while (key = objj_msgSend(enumerator, "nextObject")) + varString = objj_msgSend(varString, "stringByAppendingFormat:", "&%@=%@", key, objj_msgSend(aDictionary, "objectForKey:", key)); + if (!_params) + _params = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(_params, "setObject:forKey:", varString, "flashvars"); + objj_msgSend(self, "setParameters:", _params); +} +},["void","CPDictionary"]), new objj_method(sel_getUid("flashVars"), function $CPFlashView__flashVars(self, _cmd) +{ with(self) +{ + return objj_msgSend(_params, "objectForKey:", "flashvars"); +} +},["CPDictionary"]), new objj_method(sel_getUid("setParameters:"), function $CPFlashView__setParameters_(self, _cmd, aDictionary) +{ with(self) +{ + if (_paramElements && !CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + { + var elements = objj_msgSend(_paramElements, "allValues"), + count = objj_msgSend(elements, "count"); + for (var i = 0; i < count; i++) + _DOMObjectElement.removeChild(objj_msgSend(elements, "objectAtIndex:", i)); + } + _params = aDictionary; + if (!CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + { + _paramElements = objj_msgSend(CPDictionary, "dictionary"); + var enumerator = objj_msgSend(_params, "keyEnumerator"), + key; + while (key = objj_msgSend(enumerator, "nextObject") && _DOMObjectElement) + { + var param = document.createElement("param"); + param.name = key; + param.value = objj_msgSend(_params, "objectForKey:", key); + _DOMObjectElement.appendChild(param); + objj_msgSend(_paramElements, "setObject:forKey:", param, key); + } + } + else + objj_msgSend(self, "_rebuildIEObjects"); +} +},["void","CPDictionary"]), new objj_method(sel_getUid("parameters"), function $CPFlashView__parameters(self, _cmd) +{ with(self) +{ + return _params; +} +},["CPDictionary"]), new objj_method(sel_getUid("_rebuildIEObjects"), function $CPFlashView___rebuildIEObjects(self, _cmd) +{ with(self) +{ + _DOMElement.innerHTML = ""; + if (!objj_msgSend(_flashMovie, "filename")) + return; + var paramString = objj_msgSend(CPString, "stringWithFormat:", "<param name='movie' value='%@' />", objj_msgSend(_flashMovie, "filename")), + paramEnumerator = objj_msgSend(_params, "keyEnumerator"), + key; + while (key = objj_msgSend(paramEnumerator, "nextObject")) + paramString = objj_msgSend(paramString, "stringByAppendingFormat:", "<param name='%@' value='%@' />", key, objj_msgSend(_params, "objectForKey:", key)); + _DOMObjectElement = document.createElement("object"); + _DOMElement.appendChild(_DOMObjectElement); + _DOMObjectElement.outerHTML = objj_msgSend(CPString, "stringWithFormat:", "<object classid=%@ width=%@ height=%@>%@</object>", IEFlashCLSID, CGRectGetWidth(objj_msgSend(self, "bounds")), CGRectGetHeight(objj_msgSend(self, "bounds")), paramString); +} +},["void"]), new objj_method(sel_getUid("mouseDragged:"), function $CPFlashView__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDown:"), function $CPFlashView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPFlashView__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"])]); +} + +p;8;CPFont.jt;6597;@STATIC;1.0;t;6578;var _CPFonts = {}, + _CPFontSystemFontFace = "Arial, sans-serif", + _CPWrapRegExp = new RegExp("\\s*,\\s*", "g"); +{var the_class = objj_allocateClassPair(CPObject, "CPFont"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_name"), new objj_ivar("_size"), new objj_ivar("_ascender"), new objj_ivar("_descender"), new objj_ivar("_lineHeight"), new objj_ivar("_isBold"), new objj_ivar("_cssString")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initWithName:size:bold:"), function $CPFont___initWithName_size_bold_(self, _cmd, aName, aSize, isBold) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPFont").super_class }, "init"); + if (self) + { + _name = aName; + _size = aSize; + _ascender = 0; + _descender = 0; + _lineHeight = 0; + _isBold = isBold; + _cssString = (_isBold ? "bold " : "") + ROUND(_size) + "px " + ((_name === _CPFontSystemFontFace) ? _name : ("\"" + _name.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace)); + _CPFonts[_cssString] = self; + } + return self; +} +},["id","CPString","float","BOOL"]), new objj_method(sel_getUid("ascender"), function $CPFont__ascender(self, _cmd) +{ with(self) +{ + if (!_ascender) + objj_msgSend(self, "_getMetrics"); + return _ascender; +} +},["float"]), new objj_method(sel_getUid("descender"), function $CPFont__descender(self, _cmd) +{ with(self) +{ + if (!_descender) + objj_msgSend(self, "_getMetrics"); + return _descender; +} +},["float"]), new objj_method(sel_getUid("defaultLineHeightForFont"), function $CPFont__defaultLineHeightForFont(self, _cmd) +{ with(self) +{ + if (!_lineHeight) + objj_msgSend(self, "_getMetrics"); + return _lineHeight; +} +},["float"]), new objj_method(sel_getUid("size"), function $CPFont__size(self, _cmd) +{ with(self) +{ + return _size; +} +},["float"]), new objj_method(sel_getUid("cssString"), function $CPFont__cssString(self, _cmd) +{ with(self) +{ + return _cssString; +} +},["CPString"]), new objj_method(sel_getUid("familyName"), function $CPFont__familyName(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("isEqual:"), function $CPFont__isEqual_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(anObject, "isKindOfClass:", objj_msgSend(CPFont, "class")) && objj_msgSend(anObject, "cssString") === objj_msgSend(self, "cssString"); +} +},["BOOL","id"]), new objj_method(sel_getUid("description"), function $CPFont__description(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPString, "stringWithFormat:", "%@ %@ %f pt.", objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPFont").super_class }, "description"), objj_msgSend(self, "familyName"), objj_msgSend(self, "size")); +} +},["CPString"]), new objj_method(sel_getUid("_getMetrics"), function $CPFont___getMetrics(self, _cmd) +{ with(self) +{ + var metrics = objj_msgSend(CPString, "metricsOfFont:", self); + _ascender = objj_msgSend(metrics, "objectForKey:", "ascender"); + _descender = objj_msgSend(metrics, "objectForKey:", "descender"); + _lineHeight = objj_msgSend(metrics, "objectForKey:", "lineHeight"); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPFont__initialize(self, _cmd) +{ with(self) +{ + var systemFont = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPView, "class")), "objectForInfoDictionaryKey:", "CPSystemFontFace"); + if (systemFont) + _CPFontSystemFontFace = systemFont; +} +},["void"]), new objj_method(sel_getUid("fontWithName:size:"), function $CPFont__fontWithName_size_(self, _cmd, aName, aSize) +{ with(self) +{ + return _CPFonts[(NO ? "bold " : "") + ROUND(aSize) + "px " + ((aName === _CPFontSystemFontFace) ? aName : ("\"" + aName.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace))] || objj_msgSend(objj_msgSend(CPFont, "alloc"), "_initWithName:size:bold:", aName, aSize, NO); +} +},["CPFont","CPString","float"]), new objj_method(sel_getUid("boldFontWithName:size:"), function $CPFont__boldFontWithName_size_(self, _cmd, aName, aSize) +{ with(self) +{ + return _CPFonts[(YES ? "bold " : "") + ROUND(aSize) + "px " + ((aName === _CPFontSystemFontFace) ? aName : ("\"" + aName.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace))] || objj_msgSend(objj_msgSend(CPFont, "alloc"), "_initWithName:size:bold:", aName, aSize, YES); +} +},["CPFont","CPString","float"]), new objj_method(sel_getUid("systemFontOfSize:"), function $CPFont__systemFontOfSize_(self, _cmd, aSize) +{ with(self) +{ + return _CPFonts[(NO ? "bold " : "") + ROUND(aSize) + "px " + ((_CPFontSystemFontFace === _CPFontSystemFontFace) ? _CPFontSystemFontFace : ("\"" + _CPFontSystemFontFace.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace))] || objj_msgSend(objj_msgSend(CPFont, "alloc"), "_initWithName:size:bold:", _CPFontSystemFontFace, aSize, NO); +} +},["CPFont","CPSize"]), new objj_method(sel_getUid("boldSystemFontOfSize:"), function $CPFont__boldSystemFontOfSize_(self, _cmd, aSize) +{ with(self) +{ + return _CPFonts[(YES ? "bold " : "") + ROUND(aSize) + "px " + ((_CPFontSystemFontFace === _CPFontSystemFontFace) ? _CPFontSystemFontFace : ("\"" + _CPFontSystemFontFace.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace))] || objj_msgSend(objj_msgSend(CPFont, "alloc"), "_initWithName:size:bold:", _CPFontSystemFontFace, aSize, YES); +} +},["CPFont","CPSize"])]); +} +var CPFontNameKey = "CPFontNameKey", + CPFontSizeKey = "CPFontSizeKey", + CPFontIsBoldKey = "CPFontIsBoldKey"; +{ +var the_class = objj_getClass("CPFont") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPFont\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPFont__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "_initWithName:size:bold:", objj_msgSend(aCoder, "decodeObjectForKey:", CPFontNameKey), objj_msgSend(aCoder, "decodeFloatForKey:", CPFontSizeKey), objj_msgSend(aCoder, "decodeBoolForKey:", CPFontIsBoldKey)); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPFont__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _name, CPFontNameKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _size, CPFontSizeKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isBold, CPFontIsBoldKey); +} +},["void","CPCoder"])]); +} + +p;15;CPFontManager.jt;4972;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPFont.jt;4907;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("AppKit/CPFont.j", NO); +var CPSharedFontManager = nil, + CPFontManagerFactory = Nil; +{var the_class = objj_allocateClassPair(CPObject, "CPFontManager"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_availableFonts")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("availableFonts"), function $CPFontManager__availableFonts(self, _cmd) +{ with(self) +{ + if (!_availableFonts) + { + _CPFontDetectSpan = document.createElement("span"); + _CPFontDetectSpan.fontSize = "24px"; + _CPFontDetectSpan.appendChild(document.createTextNode("mmmmmmmmmml")); + var div = document.createElement("div"); + div.style.position = "absolute"; + div.style.top = "-1000px"; + div.appendChild(_CPFontDetectSpan); + document.getElementsByTagName("body")[0].appendChild(div); + _CPFontDetectReferenceFonts = _CPFontDetectPickTwoDifferentFonts(["monospace", "serif", "sans-serif", "cursive"]); + _availableFonts = []; + for (var i = 0; i < _CPFontDetectAllFonts.length; i++) { + var available = _CPFontDetectFontAvailable(_CPFontDetectAllFonts[i]); + if (available) + _availableFonts.push(_CPFontDetectAllFonts[i]); + } + } + return _availableFonts; +} +},["CPArray"]), new objj_method(sel_getUid("fontWithNameIsAvailable:"), function $CPFontManager__fontWithNameIsAvailable_(self, _cmd, aFontName) +{ with(self) +{ + return _CPFontDetectFontAvailable(aFontName); +} +},["CPArray","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sharedFontManager"), function $CPFontManager__sharedFontManager(self, _cmd) +{ with(self) +{ + if (!CPSharedFontManager) + CPSharedFontManager = objj_msgSend(objj_msgSend(CPFontManagerFactory, "alloc"), "init"); + return CPSharedFontManager; +} +},["CPFontManager"]), new objj_method(sel_getUid("setFontManagerFactory:"), function $CPFontManager__setFontManagerFactory_(self, _cmd, aClass) +{ with(self) +{ + CPFontManagerFactory = aClass; +} +},["void","Class"])]); +} +var _CPFontDetectSpan, + _CPFontDetectReferenceFonts, + _CPFontDetectAllFonts = [ + "American Typewriter", + "Apple Chancery","Arial","Arial Black","Arial Narrow","Arial Rounded MT Bold","Arial Unicode MS", + "Big Caslon","Bitstream Vera Sans","Bitstream Vera Sans Mono","Bitstream Vera Serif", + "Brush Script MT", + "Cambria", + "Caslon","Castellar","Cataneo BT","Centaur","Century Gothic","Century Schoolbook","Century Schoolbook L", + "Comic Sans", "Comic Sans MS","Consolas","Constantia","Cooper Black","Copperplate","Copperplate Gothic Bold","Copperplate Gothic Light","Corbel","Courier","Courier New", + "Futura", + "Geneva","Georgia","Georgia Ref", "Geeza Pro", "Gigi","Gill Sans","Gill Sans MT","Gill Sans MT Condensed","Gill Sans MT Ext Condensed Bold","Gill Sans Ultra Bold","Gill Sans Ultra Bold Condensed", + "Helvetica","Helvetica Narrow","Helvetica Neue","Herculanum","High Tower Text","Highlight LET","Hoefler Text","Impact","Imprint MT Shadow", + "Lucida","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","Lucida Grande","Lucida Handwriting","Lucida Sans","Lucida Sans Typewriter","Lucida Sans Unicode", + "Marker Felt", + "Microsoft Sans Serif","Milano LET","Minion Web","MisterEarl BT","Mistral","Monaco","Monotype Corsiva","Monotype.com","New Century Schoolbook","New York","News Gothic MT", + "Papyrus", + "Tahoma","Techno","Tempus Sans ITC","Terminal","Textile","Times","Times New Roman","Tiranti Solid LET","Trebuchet MS", + "Verdana","Verdana Ref", + "Zapfino"]; +var _CPFontDetectFontAvailable = function(font) { + for (var i = 0; i < _CPFontDetectReferenceFonts.length; i++) + if (_CPFontDetectCompareFonts(_CPFontDetectReferenceFonts[i], font)) + return true; + return false; +} +var _CPFontDetectCache = {}; +var _CPFontDetectCompareFonts = function(fontA, fontB) { + var a; + if (_CPFontDetectCache[fontA]) { + a = _CPFontDetectCache[fontA]; + } else { + _CPFontDetectSpan.style.fontFamily = '"' + fontA + '"'; + _CPFontDetectCache[fontA] = a = { w: _CPFontDetectSpan.offsetWidth, h: _CPFontDetectSpan.offsetHeight }; + } + _CPFontDetectSpan.style.fontFamily= '"' + fontB + '", "' + fontA + '"'; + var bWidth = _CPFontDetectSpan.offsetWidth; + var bHeight = _CPFontDetectSpan.offsetHeight; + return (a.w != bWidth || a.h != bHeight); +} +var _CPFontDetectPickTwoDifferentFonts = function(candidates) { + for (var i = 0; i < candidates.length; i++) + for (var j = 0; j < i; j++) + if (_CPFontDetectCompareFonts(candidates[i], candidates[j])) + return [candidates[i], candidates[j]]; + return [candidates[0]]; +} +objj_msgSend(CPFontManager, "setFontManagerFactory:", objj_msgSend(CPFontManager, "class")); + +p;12;CPGeometry.jt;5646;@STATIC;1.0;i;12;CGGeometry.jt;5610;objj_executeFile("CGGeometry.j", YES); +CPMinXEdge = 0; +CPMinYEdge = 1; +CPMaxXEdge = 2; +CPMaxYEdge = 3; +CPMakePoint = CGPointMake; +CPMakeSize = CGSizeMake; +CPMakeRect = CGRectMake; +CPPointCreateCopy= function(aPoint) +{ + return { x: aPoint.x, y: aPoint.y }; +} +CPPointMake= function(x, y) +{ + return { x: x, y: y }; +} +CPRectInset= function(aRect, dX, dY) +{ + return CPRectMake( aRect.origin.x + dX, aRect.origin.y + dY, + aRect.size.width - 2 * dX, aRect.size.height - 2*dY); +} +CPRectIntegral= function(aRect) +{ + alert("CPRectIntegral unimplemented"); +} +CPRectIntersection= function(lhsRect, rhsRect) +{ + var intersection = CPRectMake( + Math.max(CPRectGetMinX(lhsRect), CPRectGetMinX(rhsRect)), + Math.max(CPRectGetMinY(lhsRect), CPRectGetMinY(rhsRect)), + 0, 0); + intersection.size.width = Math.min(CPRectGetMaxX(lhsRect), CPRectGetMaxX(rhsRect)) - CPRectGetMinX(intersection); + intersection.size.height = Math.min(CPRectGetMaxY(lhsRect), CPRectGetMaxY(rhsRect)) - CPRectGetMinY(intersection); + return CPRectIsEmpty(intersection) ? CPRectMakeZero() : intersection; +} +CPRectCreateCopy= function(aRect) +{ + return { origin: CPPointCreateCopy(aRect.origin), size: CPSizeCreateCopy(aRect.size) }; +} +CPRectMake= function(x, y, width, height) +{ + return { origin: CPPointMake(x, y), size: CPSizeMake(width, height) }; +} +CPRectOffset= function(aRect, dX, dY) +{ + return CPRectMake(aRect.origin.x + dX, aRect.origin.y + dY, aRect.size.width, aRect.size.height); +} +CPRectStandardize= function(aRect) +{ + var width = CPRectGetWidth(aRect), + height = CPRectGetHeight(aRect), + standardized = CPRectCreateCopy(aRect); + if (width < 0.0) + { + standardized.origin.x += width; + standardized.size.width = -width; + } + if (height < 0.0) + { + standardized.origin.y += height; + standardized.size.height = -height; + } + return standardized; +} +CPRectUnion= function(lhsRect, rhsRect) +{ + var minX = Math.min(CPRectGetMinX(lhsRect), CPRectGetMinX(rhsRect)), + minY = Math.min(CPRectGetMinY(lhsRect), CPRectGetMinY(rhsRect)), + maxX = Math.max(CPRectGetMaxX(lhsRect), CPRectGetMaxX(rhsRect)), + maxY = Math.max(CPRectGetMaxY(lhsRect), CPRectGetMaxY(rhsRect)); + return CPRectMake(minX, minY, maxX - minX, maxY - minY); +} +CPSizeCreateCopy= function(aSize) +{ + return { width: aSize.width, height: aSize.height }; +} +CPSizeMake= function(width, height) +{ + return { width: width, height: height }; +} +CPRectContainsPoint= function(aRect, aPoint) +{ + return aPoint.x >= CPRectGetMinX(aRect) && + aPoint.y >= CPRectGetMinY(aRect) && + aPoint.x < CPRectGetMaxX(aRect) && + aPoint.y < CPRectGetMaxY(aRect); +} +CPRectContainsRect= function(possibleOuter, possibleInner) +{ + return CGRectContainsRect(possibleOuter, possibleInner); +} +CPPointEqualToPoint= function(lhsPoint, rhsPoint) +{ + return lhsPoint.x == rhsPoint.x && lhsPoint.y == rhsPoint.y; +} +CPRectEqualToRect= function(lhsRect, rhsRect) +{ + return CPPointEqualToPoint(lhsRect.origin, rhsRect.origin) && + CPSizeEqualToSize(lhsRect.size, rhsRect.size); +} +CPRectGetHeight= function(aRect) +{ + return aRect.size.height; +} +CPRectGetMaxX= function(aRect) +{ + return aRect.origin.x + aRect.size.width; +} +CPRectGetMaxY= function(aRect) +{ + return aRect.origin.y + aRect.size.height; +} +CPRectGetMidX= function(aRect) +{ + return aRect.origin.x + (aRect.size.width) / 2.0; +} +CPRectGetMidY= function(aRect) +{ + return aRect.origin.y + (aRect.size.height) / 2.0; +} +CPRectGetMinX= function(aRect) +{ + return aRect.origin.x; +} +CPRectGetMinY= function(aRect) +{ + return aRect.origin.y; +} +CPRectGetWidth= function(aRect) +{ + return aRect.size.width; +} +CPRectIntersectsRect= function(lhsRect, rhsRect) +{ + return !CPRectIsEmpty(CPRectIntersection(lhsRect, rhsRect)); +} +CPRectIsEmpty= function(aRect) +{ + return aRect.size.width <= 0.0 || aRect.size.height <= 0.0; +} +CPRectIsNull= function(aRect) +{ + return aRect.size.width <= 0.0 || aRect.size.height <= 0.0; +} +CPDivideRect= function(inRect, slice, rem, amount, edge) +{ + CGRectDivide(inRect, slice, rem, amount, edge); +} +CPSizeEqualToSize= function(lhsSize, rhsSize) +{ + return lhsSize.width == rhsSize.width && lhsSize.height == rhsSize.height; +} +CPStringFromPoint= function(aPoint) +{ + return "{" + aPoint.x + ", " + aPoint.y + "}"; +} +CPStringFromSize= function(aSize) +{ + return "{" + aSize.width + ", " + aSize.height + "}"; +} +CPStringFromRect= function(aRect) +{ + return "{" + CPStringFromPoint(aRect.origin) + ", " + CPStringFromSize(aRect.size) + "}"; +} +CPPointFromString= function(aString) +{ + var comma = aString.indexOf(','); + return { x:parseFloat(aString.substr(1, comma - 1), 10), y:parseFloat(aString.substring(comma + 1, aString.length), 10) }; +} +CPSizeFromString= function(aString) +{ + var comma = aString.indexOf(','); + return { width:parseFloat(aString.substr(1, comma - 1), 10), height:parseFloat(aString.substring(comma + 1, aString.length), 10) }; +} +CPRectFromString= function(aString) +{ + var comma = aString.indexOf(',', aString.indexOf(',') + 1); + return { origin:CPPointFromString(aString.substr(1, comma - 1)), size:CPSizeFromString(aString.substring(comma + 2, aString.length)) }; +} +CPPointFromEvent= function(anEvent) +{ + return CPPointMake(anEvent.clientX, anEvent.clientY, 0); +} +CPSizeMakeZero= function() +{ + return CPSizeMake(0, 0); +} +CPRectMakeZero= function() +{ + return CPRectMake(0, 0, 0, 0); +} +CPPointMakeZero= function() +{ + return CPPointMake(0, 0, 0); +} + +p;12;CPGraphics.jt;2855;@STATIC;1.0;i;9;CPColor.ji;19;CPGraphicsContext.jt;2799;objj_executeFile("CPColor.j", YES); +objj_executeFile("CPGraphicsContext.j", YES); +CPDrawTiledRects= function( + boundsRect, + clipRect, + sides, + grays) +{ + if (sides.length != grays.length) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "sides (length: " + sides.length + ") and grays (length: " + grays.length + ") must have the same length."); + var colors = []; + for (var i = 0; i < grays.length; ++i) + colors.push(objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", grays[i], 1.0)); + return CPDrawColorTiledRects(boundsRect, clipRect, sides, colors); +} +CPDrawColorTiledRects= function( + boundsRect, + clipRect, + sides, + colors) +{ + if (sides.length != colors.length) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "sides (length: " + sides.length + ") and colors (length: " + colors.length + ") must have the same length."); + var resultRect = { origin: { x:boundsRect.origin.x, y:boundsRect.origin.y }, size: { width:boundsRect.size.width, height:boundsRect.size.height } }, + slice = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }, + remainder = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }, + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSaveGState(context); + CGContextSetLineWidth(context, 1.0); + for (var sideIndex = 0; sideIndex < sides.length; ++sideIndex) + { + var side = sides[sideIndex]; + CGRectDivide(resultRect, slice, remainder, 1.0, side); + resultRect = remainder; + slice = CGRectIntersection(slice, clipRect); + if ((slice.size.width <= 0.0 || slice.size.height <= 0.0)) + continue; + var minX, maxX, minY, maxY; + if (side == CPMinXEdge || side == CPMaxXEdge) + { + if ((slice.size.width) < 1.0) + continue; + minX = (slice.origin.x) + 0.5; + maxX = minX; + minY = (slice.origin.y); + maxY = (slice.origin.y + slice.size.height); + } + else + { + if ((slice.size.height) < 1.0) + continue; + minX = (slice.origin.x); + maxX = (slice.origin.x + slice.size.width); + minY = (slice.origin.y) + 0.5; + maxY = minY; + } + CGContextBeginPath(context); + CGContextMoveToPoint(context, minX, minY); + CGContextAddLineToPoint(context, maxX, maxY); + CGContextSetStrokeColor(context, colors[sideIndex]); + CGContextStrokePath(context); + } + CGContextRestoreGState(context); + return resultRect; +} + +p;19;CPGraphicsContext.jt;1564;@STATIC;1.0;t;1545;var CPGraphicsContextCurrent = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPGraphicsContext"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_graphicsPort")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithGraphicsPort:"), function $CPGraphicsContext__initWithGraphicsPort_(self, _cmd, aGraphicsPort) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPGraphicsContext").super_class }, "init"); + if (self) + _graphicsPort = aGraphicsPort; + return self; +} +},["id","CPContext"]), new objj_method(sel_getUid("graphicsPort"), function $CPGraphicsContext__graphicsPort(self, _cmd) +{ with(self) +{ + return _graphicsPort; +} +},["CGContext"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("currentContext"), function $CPGraphicsContext__currentContext(self, _cmd) +{ with(self) +{ + return CPGraphicsContextCurrent; +} +},["CPGraphicsContext"]), new objj_method(sel_getUid("setCurrentContext:"), function $CPGraphicsContext__setCurrentContext_(self, _cmd, aGraphicsContext) +{ with(self) +{ + CPGraphicsContextCurrent = aGraphicsContext; +} +},["void","CPGraphicsContext"]), new objj_method(sel_getUid("graphicsContextWithGraphicsPort:flipped:"), function $CPGraphicsContext__graphicsContextWithGraphicsPort_flipped_(self, _cmd, aContext, aFlag) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithGraphicsPort:", aContext); +} +},["CPGraphicsContext","CGContext","BOOL"])]); +} + +p;9;CPImage.jt;14070;@STATIC;1.0;I;21;Foundation/CPBundle.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.jI;21;Foundation/CPString.ji;12;CPGeometry.jt;13890;objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("Foundation/CPNotificationCenter.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPRunLoop.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPGeometry.j", YES); +CPImageLoadStatusInitialized = 0; +CPImageLoadStatusLoading = 1; +CPImageLoadStatusCompleted = 2; +CPImageLoadStatusCancelled = 3; +CPImageLoadStatusInvalidData = 4; +CPImageLoadStatusUnexpectedEOF = 5; +CPImageLoadStatusReadError = 6; +CPImageDidLoadNotification = "CPImageDidLoadNotification"; +CPImageNameColorPanel = "CPImageNameColorPanel"; +CPImageNameColorPanelHighlighted = "CPImageNameColorPanelHighlighted"; +var imagesForNames = { }, + AppKitImageForNames = { }; +AppKitImageForNames[CPImageNameColorPanel] = CGSizeMake(26.0, 29.0); +AppKitImageForNames[CPImageNameColorPanelHighlighted] = CGSizeMake(26.0, 29.0); +CPImageInBundle= function(aFilename, aSize, aBundle) +{ + if (!aBundle) + aBundle = objj_msgSend(CPBundle, "mainBundle"); + if (aSize) + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(aBundle, "pathForResource:", aFilename), aSize); + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:", objj_msgSend(aBundle, "pathForResource:", aFilename)); +} +CPAppKitImage= function(aFilename, aSize) +{ + return CPImageInBundle(aFilename, aSize, objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPView, "class"))); +} +{var the_class = objj_allocateClassPair(CPObject, "CPImage"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_size"), new objj_ivar("_filename"), new objj_ivar("_name"), new objj_ivar("_delegate"), new objj_ivar("_loadStatus"), new objj_ivar("_image")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPImage__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initByReferencingFile:size:", "", CGSizeMake(-1, -1)); +} +},["id"]), new objj_method(sel_getUid("initByReferencingFile:size:"), function $CPImage__initByReferencingFile_size_(self, _cmd, aFilename, aSize) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImage").super_class }, "init"); + if (self) + { + _size = CPSizeCreateCopy(aSize); + _filename = aFilename; + _loadStatus = CPImageLoadStatusInitialized; + } + return self; +} +},["id","CPString","CGSize"]), new objj_method(sel_getUid("initWithContentsOfFile:size:"), function $CPImage__initWithContentsOfFile_size_(self, _cmd, aFilename, aSize) +{ with(self) +{ + self = objj_msgSend(self, "initByReferencingFile:size:", aFilename, aSize); + if (self) + objj_msgSend(self, "load"); + return self; +} +},["id","CPString","CGSize"]), new objj_method(sel_getUid("initWithContentsOfFile:"), function $CPImage__initWithContentsOfFile_(self, _cmd, aFilename) +{ with(self) +{ + self = objj_msgSend(self, "initByReferencingFile:size:", aFilename, CGSizeMake(-1, -1)); + if (self) + objj_msgSend(self, "load"); + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("filename"), function $CPImage__filename(self, _cmd) +{ with(self) +{ + return _filename; +} +},["CPString"]), new objj_method(sel_getUid("setSize:"), function $CPImage__setSize_(self, _cmd, aSize) +{ with(self) +{ + _size = CGSizeMakeCopy(aSize); +} +},["void","CGSize"]), new objj_method(sel_getUid("size"), function $CPImage__size(self, _cmd) +{ with(self) +{ + return _size; +} +},["CGSize"]), new objj_method(sel_getUid("setName:"), function $CPImage__setName_(self, _cmd, aName) +{ with(self) +{ + if (_name === aName) + return YES; + if (imagesForNames[aName]) + return NO; + _name = aName; + imagesForNames[aName] = self; + return YES; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("name"), function $CPImage__name(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("setDelegate:"), function $CPImage__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPImage__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("loadStatus"), function $CPImage__loadStatus(self, _cmd) +{ with(self) +{ + return _loadStatus; +} +},["unsigned"]), new objj_method(sel_getUid("load"), function $CPImage__load(self, _cmd) +{ with(self) +{ + if (_loadStatus == CPImageLoadStatusLoading || _loadStatus == CPImageLoadStatusCompleted) + return; + _loadStatus = CPImageLoadStatusLoading; + _image = new Image(); + var isSynchronous = YES; + _image.onload = function () + { + if (isSynchronous) + window.setTimeout(function() { objj_msgSend(self, "_imageDidLoad"); }, 0); + else + { + objj_msgSend(self, "_imageDidLoad"); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + } + objj_msgSend(self, "_derefFromImage"); + } + _image.onerror = function () + { + if (isSynchronous) + window.setTimeout(function() { objj_msgSend(self, "_imageDidError"); }, 0); + else + { + objj_msgSend(self, "_imageDidError"); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + } + objj_msgSend(self, "_derefFromImage"); + } + _image.onabort = function () + { + if (isSynchronous) + window.setTimeout(function() { objj_msgSend(self, "_imageDidAbort"); }, 0); + else + { + objj_msgSend(self, "_imageDidAbort"); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + } + objj_msgSend(self, "_derefFromImage"); + } + _image.src = _filename; + window.setTimeout(function() { isSynchronous = NO; }, 0); +} +},["void"]), new objj_method(sel_getUid("isThreePartImage"), function $CPImage__isThreePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("isNinePartImage"), function $CPImage__isNinePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("_derefFromImage"), function $CPImage___derefFromImage(self, _cmd) +{ with(self) +{ + _image.onload = null; + _image.onerror = null; + _image.onabort = null; +} +},["void"]), new objj_method(sel_getUid("_imageDidLoad"), function $CPImage___imageDidLoad(self, _cmd) +{ with(self) +{ + _loadStatus = CPImageLoadStatusCompleted; + if (!_size || (_size.width == -1 && _size.height == -1)) + _size = CGSizeMake(_image.width, _image.height); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPImageDidLoadNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("imageDidLoad:"))) + objj_msgSend(_delegate, "imageDidLoad:", self); +} +},["void"]), new objj_method(sel_getUid("_imageDidError"), function $CPImage___imageDidError(self, _cmd) +{ with(self) +{ + _loadStatus = CPImageLoadStatusReadError; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("imageDidError:"))) + objj_msgSend(_delegate, "imageDidError:", self); +} +},["void"]), new objj_method(sel_getUid("_imageDidAbort"), function $CPImage___imageDidAbort(self, _cmd) +{ with(self) +{ + _loadStatus = CPImageLoadStatusCancelled; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("imageDidAbort:"))) + objj_msgSend(_delegate, "imageDidAbort:", self); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("imageNamed:"), function $CPImage__imageNamed_(self, _cmd, aName) +{ with(self) +{ + var image = imagesForNames[aName]; + if (image) + return image; + var imageOrSize = AppKitImageForNames[aName]; + if (!imageOrSize) + return nil; + if (!imageOrSize.isa) + { + imageOrSize = CPAppKitImage("CPImage/" + aName + ".png", imageOrSize); + objj_msgSend(imageOrSize, "setName:", aName); + AppKitImageForNames[aName] = imageOrSize; + } + return imageOrSize; +} +},["id","CPString"])]); +} +{ +var the_class = objj_getClass("CPImage") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPImage\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPImage__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "initWithContentsOfFile:size:", objj_msgSend(aCoder, "decodeObjectForKey:", "CPFilename"), objj_msgSend(aCoder, "decodeSizeForKey:", "CPSize")); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPImage__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _filename, "CPFilename"); + objj_msgSend(aCoder, "encodeSize:forKey:", _size, "CPSize"); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPThreePartImage"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_imageSlices"), new objj_ivar("_isVertical")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithImageSlices:isVertical:"), function $CPThreePartImage__initWithImageSlices_isVertical_(self, _cmd, imageSlices, isVertical) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPThreePartImage").super_class }, "init"); + if (self) + { + _imageSlices = imageSlices; + _isVertical = isVertical; + } + return self; +} +},["id","CPArray","BOOL"]), new objj_method(sel_getUid("filename"), function $CPThreePartImage__filename(self, _cmd) +{ with(self) +{ + return ""; +} +},["CPString"]), new objj_method(sel_getUid("imageSlices"), function $CPThreePartImage__imageSlices(self, _cmd) +{ with(self) +{ + return _imageSlices; +} +},["CPArray"]), new objj_method(sel_getUid("isVertical"), function $CPThreePartImage__isVertical(self, _cmd) +{ with(self) +{ + return _isVertical; +} +},["BOOL"]), new objj_method(sel_getUid("isThreePartImage"), function $CPThreePartImage__isThreePartImage(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("isNinePartImage"), function $CPThreePartImage__isNinePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"])]); +} +var CPThreePartImageImageSlicesKey = "CPThreePartImageImageSlicesKey", + CPThreePartImageIsVerticalKey = "CPThreePartImageIsVerticalKey"; +{ +var the_class = objj_getClass("CPThreePartImage") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPThreePartImage\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPThreePartImage__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPThreePartImage").super_class }, "init"); + if (self) + { + _imageSlices = objj_msgSend(aCoder, "decodeObjectForKey:", CPThreePartImageImageSlicesKey); + _isVertical = objj_msgSend(aCoder, "decodeBoolForKey:", CPThreePartImageIsVerticalKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPThreePartImage__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _imageSlices, CPThreePartImageImageSlicesKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isVertical, CPThreePartImageIsVerticalKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPNinePartImage"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_imageSlices")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithImageSlices:"), function $CPNinePartImage__initWithImageSlices_(self, _cmd, imageSlices) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPNinePartImage").super_class }, "init"); + if (self) + _imageSlices = imageSlices; + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("filename"), function $CPNinePartImage__filename(self, _cmd) +{ with(self) +{ + return ""; +} +},["CPString"]), new objj_method(sel_getUid("imageSlices"), function $CPNinePartImage__imageSlices(self, _cmd) +{ with(self) +{ + return _imageSlices; +} +},["CPArray"]), new objj_method(sel_getUid("isThreePartImage"), function $CPNinePartImage__isThreePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("isNinePartImage"), function $CPNinePartImage__isNinePartImage(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"])]); +} +var CPNinePartImageImageSlicesKey = "CPNinePartImageImageSlicesKey"; +{ +var the_class = objj_getClass("CPNinePartImage") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPNinePartImage\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPNinePartImage__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPNinePartImage").super_class }, "init"); + if (self) + _imageSlices = objj_msgSend(aCoder, "decodeObjectForKey:", CPNinePartImageImageSlicesKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPNinePartImage__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _imageSlices, CPNinePartImageImageSlicesKey); +} +},["void","CPCoder"])]); +} + +p;13;CPImageView.jt;14990;@STATIC;1.0;I;33;Foundation/CPNotificationCenter.ji;11;CPControl.ji;9;CPImage.ji;14;CPShadowView.jt;14884;objj_executeFile("Foundation/CPNotificationCenter.j", NO); +objj_executeFile("CPControl.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPShadowView.j", YES); +CPScaleProportionally = 0; +CPScaleToFit = 1; +CPScaleNone = 2; +CPImageAlignCenter = 0; +CPImageAlignTop = 1; +CPImageAlignTopLeft = 2; +CPImageAlignTopRight = 3; +CPImageAlignLeft = 4; +CPImageAlignBottom = 5; +CPImageAlignBottomLeft = 6; +CPImageAlignBottomRight = 7; +CPImageAlignRight = 8; +var CPImageViewShadowBackgroundColor = nil, + CPImageViewEmptyPlaceholderImage = nil; +var LEFT_SHADOW_INSET = 3.0, + RIGHT_SHADOW_INSET = 3.0, + TOP_SHADOW_INSET = 3.0, + BOTTOM_SHADOW_INSET = 5.0, + VERTICAL_SHADOW_INSET = TOP_SHADOW_INSET + BOTTOM_SHADOW_INSET, + HORIZONTAL_SHADOW_INSET = LEFT_SHADOW_INSET + RIGHT_SHADOW_INSET; +{var the_class = objj_allocateClassPair(CPControl, "CPImageView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_DOMImageElement"), new objj_ivar("_hasShadow"), new objj_ivar("_shadowView"), new objj_ivar("_isEditable"), new objj_ivar("_imageRect"), new objj_ivar("_imageAlignment")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPImageView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _DOMImageElement = document.createElement("img"); + _DOMImageElement.style.position = "absolute"; + _DOMImageElement.style.left = "0px"; + _DOMImageElement.style.top = "0px"; + if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + _DOMImageElement.setAttribute("draggable", "true"); + _DOMImageElement.style["-khtml-user-drag"] = "element"; + } + _DOMElement.appendChild(_DOMImageElement); + _DOMImageElement.style.visibility = "hidden"; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("image"), function $CPImageView__image(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "objectValue"); +} +},["CPImage"]), new objj_method(sel_getUid("setImage:"), function $CPImageView__setImage_(self, _cmd, anImage) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anImage); +} +},["void","CPImage"]), new objj_method(sel_getUid("setObjectValue:"), function $CPImageView__setObjectValue_(self, _cmd, anImage) +{ with(self) +{ + var oldImage = objj_msgSend(self, "objectValue"); + if (oldImage === anImage) + return; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "setObjectValue:", anImage); + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (oldImage) + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPImageDidLoadNotification, oldImage); + var newImage = objj_msgSend(self, "objectValue"); + _DOMImageElement.src = newImage ? objj_msgSend(newImage, "filename") : objj_msgSend(CPImageViewEmptyPlaceholderImage, "filename"); + var size = objj_msgSend(newImage, "size"); + if (size && size.width === -1 && size.height === -1) + { + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("imageDidLoad:"), CPImageDidLoadNotification, newImage); + _DOMImageElement.width = 0; + _DOMImageElement.height = 0; + objj_msgSend(_shadowView, "setHidden:", YES); + } + else + { + objj_msgSend(self, "hideOrDisplayContents"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } +} +},["void","CPImage"]), new objj_method(sel_getUid("imageDidLoad:"), function $CPImageView__imageDidLoad_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "hideOrDisplayContents"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPNotification"]), new objj_method(sel_getUid("hasShadow"), function $CPImageView__hasShadow(self, _cmd) +{ with(self) +{ + return _hasShadow; +} +},["BOOL"]), new objj_method(sel_getUid("setHasShadow:"), function $CPImageView__setHasShadow_(self, _cmd, shouldHaveShadow) +{ with(self) +{ + if (_hasShadow == shouldHaveShadow) + return; + _hasShadow = shouldHaveShadow; + if (_hasShadow) + { + _shadowView = objj_msgSend(objj_msgSend(CPShadowView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(self, "addSubview:", _shadowView); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } + else + { + objj_msgSend(_shadowView, "removeFromSuperview"); + _shadowView = nil; + } + objj_msgSend(self, "hideOrDisplayContents"); +} +},["void","BOOL"]), new objj_method(sel_getUid("setImageAlignment:"), function $CPImageView__setImageAlignment_(self, _cmd, anImageAlignment) +{ with(self) +{ + if (_imageAlignment == anImageAlignment) + return; + _imageAlignment = anImageAlignment; + if (!objj_msgSend(self, "image")) + return; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPImageAlignment"]), new objj_method(sel_getUid("imageAlignment"), function $CPImageView__imageAlignment(self, _cmd) +{ with(self) +{ + return _imageAlignment; +} +},["unsigned"]), new objj_method(sel_getUid("setImageScaling:"), function $CPImageView__setImageScaling_(self, _cmd, anImageScaling) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "setImageScaling:", anImageScaling); + if (objj_msgSend(self, "currentValueForThemeAttribute:", "image-scaling") === CPScaleToFit) + { + if (NULL) var ____p = _CGPointApplyAffineTransform(CGPointMake(0.0, 0.0), NULL); else var ____p = { x:0.0, y:0.0 }; _DOMImageElement.style.left = ROUND(____p.x) + "px";_DOMImageElement.style.top = ROUND(____p.y) + "px";; + } + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPImageScaling"]), new objj_method(sel_getUid("imageScaling"), function $CPImageView__imageScaling(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "image-scaling"); +} +},["unsigned"]), new objj_method(sel_getUid("hideOrDisplayContents"), function $CPImageView__hideOrDisplayContents(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "image")) + { + _DOMImageElement.style.visibility = "hidden"; + objj_msgSend(_shadowView, "setHidden:", YES); + } + else + { + _DOMImageElement.style.visibility = "visible"; + objj_msgSend(_shadowView, "setHidden:", NO); + } +} +},["void"]), new objj_method(sel_getUid("imageRect"), function $CPImageView__imageRect(self, _cmd) +{ with(self) +{ + return _imageRect; +} +},["CGRect"]), new objj_method(sel_getUid("layoutSubviews"), function $CPImageView__layoutSubviews(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "image")) + return; + var bounds = objj_msgSend(self, "bounds"), + image = objj_msgSend(self, "image"), + imageScaling = objj_msgSend(self, "currentValueForThemeAttribute:", "image-scaling"), + x = 0.0, + y = 0.0, + insetWidth = (_hasShadow ? HORIZONTAL_SHADOW_INSET : 0.0), + insetHeight = (_hasShadow ? VERTICAL_SHADOW_INSET : 0.0), + boundsWidth = (bounds.size.width), + boundsHeight = (bounds.size.height), + width = boundsWidth - insetWidth, + height = boundsHeight - insetHeight; + if (imageScaling === CPScaleToFit) + { + _DOMImageElement.width = ROUND(width); + _DOMImageElement.height = ROUND(height); + } + else + { + var size = objj_msgSend(image, "size"); + if (size.width == -1 && size.height == -1) + return; + if (imageScaling === CPScaleProportionally) + { + if (width >= size.width && height >= size.height) + { + width = size.width; + height = size.height; + } + else + { + var imageRatio = size.width / size.height, + viewRatio = width / height; + if (viewRatio > imageRatio) + width = height * imageRatio; + else + height = width / imageRatio; + } + _DOMImageElement.width = ROUND(width); + _DOMImageElement.height = ROUND(height); + } + else + { + width = size.width; + height = size.height; + } + if (imageScaling == CPScaleNone) + { + _DOMImageElement.width = ROUND(size.width); + _DOMImageElement.height = ROUND(size.height); + } + var x, y; + switch (_imageAlignment) + { + case CPImageAlignLeft: + case CPImageAlignTopLeft: + case CPImageAlignBottomLeft: + x = 0.0; + break; + case CPImageAlignRight: + case CPImageAlignTopRight: + case CPImageAlignBottomRight: + x = boundsWidth - width; + break; + default: + x = (boundsWidth - width) / 2.0; + break; + } + switch (_imageAlignment) + { + case CPImageAlignTop: + case CPImageAlignTopLeft: + case CPImageAlignTopRight: + y = 0.0; + break; + case CPImageAlignBottom: + case CPImageAlignBottomLeft: + case CPImageAlignBottomRight: + y = boundsHeight - height; + break; + default: + y = (boundsHeight - height) / 2.0; + break; + } + if (NULL) var ____p = _CGPointApplyAffineTransform(CGPointMake(x, y), NULL); else var ____p = { x:x, y:y }; _DOMImageElement.style.left = ROUND(____p.x) + "px";_DOMImageElement.style.top = ROUND(____p.y) + "px";; + } + _imageRect = { origin: { x:x, y:y }, size: { width:width, height:height } }; + if (_hasShadow) + objj_msgSend(_shadowView, "setFrame:", { origin: { x:x - LEFT_SHADOW_INSET, y:y - TOP_SHADOW_INSET }, size: { width:width + insetWidth, height:height + insetHeight } }); +} +},["void"]), new objj_method(sel_getUid("mouseDown:"), function $CPImageView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setEditable:"), function $CPImageView__setEditable_(self, _cmd, shouldBeEditable) +{ with(self) +{ + if (_isEditable === shouldBeEditable) + return; + _isEditable = shouldBeEditable; + if (_isEditable) + objj_msgSend(self, "registerForDraggedTypes:", [CPImagesPboardType]); + else + { + var draggedTypes = objj_msgSend(self, "registeredDraggedTypes"); + objj_msgSend(self, "unregisterDraggedTypes"); + objj_msgSend(draggedTypes, "removeObjectIdenticalTo:", CPImagesPboardType); + objj_msgSend(self, "registerForDraggedTypes:", draggedTypes); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("isEditable"), function $CPImageView__isEditable(self, _cmd) +{ with(self) +{ + return _isEditable; +} +},["BOOL"]), new objj_method(sel_getUid("performDragOperation:"), function $CPImageView__performDragOperation_(self, _cmd, aSender) +{ with(self) +{ + var images = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(objj_msgSend(aSender, "draggingPasteboard"), "dataForType:", CPImagesPboardType)); + if (objj_msgSend(images, "count")) + { + objj_msgSend(self, "setImage:", images[0]); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + } + return YES; +} +},["BOOL","CPDraggingInfo"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPImageView__initialize(self, _cmd) +{ with(self) +{ + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPView, "class")); + CPImageViewEmptyPlaceholderImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:", objj_msgSend(bundle, "pathForResource:", "empty.png")); +} +},["void"])]); +} +var CPImageViewImageKey = "CPImageViewImageKey", + CPImageViewImageScalingKey = "CPImageViewImageScalingKey", + CPImageViewImageAlignmentKey = "CPImageViewImageAlignmentKey", + CPImageViewHasShadowKey = "CPImageViewHasShadowKey", + CPImageViewIsEditableKey = "CPImageViewIsEditableKey"; +{ +var the_class = objj_getClass("CPImageView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPImageView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPImageView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + _DOMImageElement = document.createElement("img"); + _DOMImageElement.style.position = "absolute"; + _DOMImageElement.style.left = "0px"; + _DOMImageElement.style.top = "0px"; + _DOMImageElement.style.visibility = "hidden"; + if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + _DOMImageElement.setAttribute("draggable", "true"); + _DOMImageElement.style["-khtml-user-drag"] = "element"; + } + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _DOMElement.appendChild(_DOMImageElement); + objj_msgSend(self, "setHasShadow:", objj_msgSend(aCoder, "decodeBoolForKey:", CPImageViewHasShadowKey)); + objj_msgSend(self, "setImageAlignment:", objj_msgSend(aCoder, "decodeIntForKey:", CPImageViewImageAlignmentKey)); + if (objj_msgSend(aCoder, "decodeBoolForKey:", CPImageViewIsEditableKey) || NO) + objj_msgSend(self, "setEditable:", YES); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPImageView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_shadowView) + { + var actualSubviews = _subviews; + _subviews = objj_msgSend(_subviews, "copy"); + objj_msgSend(_subviews, "removeObjectIdenticalTo:", _shadowView); + } + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "encodeWithCoder:", aCoder); + if (_shadowView) + _subviews = actualSubviews; + objj_msgSend(aCoder, "encodeBool:forKey:", _hasShadow, CPImageViewHasShadowKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _imageAlignment, CPImageViewImageAlignmentKey); + if (_isEditable) + objj_msgSend(aCoder, "encodeBool:forKey:", _isEditable, CPImageViewIsEditableKey); +} +},["void","CPCoder"])]); +} + +p;14;CPKeyBinding.jt;11133;@STATIC;1.0;I;21;Foundation/CPObject.jt;11087;objj_executeFile("Foundation/CPObject.j", NO); +CPStandardKeyBindings = { + "@.": "cancelOperation:", + "^a": "moveToBeginningOfParagraph:", + "^$a": "moveToBeginningOfParagraphAndModifySelection:", + "^b": "moveBackward:", + "^$b": "moveBackwardAndModifySelection:", + "^~b": "moveWordBackward:", + "^~$b": "moveWordBackwardAndModifySelection:", + "^d": "deleteForward:", + "^e": "moveToEndOfParagraph:", + "^$e": "moveToEndOfParagraphAndModifySelection:", + "^f": "moveForward:", + "^$f": "moveForwardAndModifySelection:", + "^~f": "moveWordForward:", + "^~$f": "moveWordForwardAndModifySelection:", + "^h": "deleteBackward:", + "^k": "deleteToEndOfParagraph:", + "^l": "centerSelectionInVisibleArea:", + "^n": "moveDown:", + "^$n": "moveDownAndModifySelection:", + "^o": ["insertNewlineIgnoringFieldEditor:", "moveBackward:"], + "^p": "moveUp:", + "^$p": "moveUpAndModifySelection:", + "^t": "transpose:", + "^v": "pageDown:", + "^$v": "pageDownAndModifySelection:", + "^y": "yank:" +}; +CPStandardKeyBindings[CPNewlineCharacter] = "insertNewline:"; +CPStandardKeyBindings[CPCarriageReturnCharacter] = "insertNewline:"; +CPStandardKeyBindings[CPEnterCharacter] = "insertNewline:"; +CPStandardKeyBindings["~" + CPNewlineCharacter] = "insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~" + CPCarriageReturnCharacter] = "insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~" + CPEnterCharacter] = "insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["^" + CPNewlineCharacter] = "insertLineBreak:"; +CPStandardKeyBindings["^" + CPCarriageReturnCharacter] = "insertLineBreak:"; +CPStandardKeyBindings["^" + CPEnterCharacter] = "insertLineBreak:"; +CPStandardKeyBindings[CPBackspaceCharacter] = "deleteBackward:"; +CPStandardKeyBindings["~" + CPBackspaceCharacter] = "deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteCharacter] = "deleteBackward:"; +CPStandardKeyBindings["@" + CPDeleteCharacter] = "deleteToBeginningOfLine:"; +CPStandardKeyBindings["~" + CPDeleteCharacter] = "deleteWordBackward:"; +CPStandardKeyBindings["^" + CPDeleteCharacter] = "deleteBackwardByDecomposingPreviousCharacter:"; +CPStandardKeyBindings["^~" + CPDeleteCharacter] = "deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteFunctionKey] = "deleteForward:"; +CPStandardKeyBindings["~" + CPDeleteFunctionKey] = "deleteWordForward:"; +CPStandardKeyBindings[CPTabCharacter] = "insertTab:"; +CPStandardKeyBindings["~" + CPTabCharacter] = "insertTabIgnoringFieldEditor:"; +CPStandardKeyBindings["^" + CPTabCharacter] = "selectNextKeyView:"; +CPStandardKeyBindings[CPBackTabCharacter] = "insertBacktab:"; +CPStandardKeyBindings["^" + CPBackTabCharacter] = "selectPreviousKeyView:"; +CPStandardKeyBindings[CPEscapeFunctionKey] = "cancelOperation:"; +CPStandardKeyBindings["~" + CPEscapeFunctionKey] = "complete:"; +CPStandardKeyBindings[CPF5FunctionKey] = "complete:"; +CPStandardKeyBindings[CPLeftArrowFunctionKey] = "moveLeft:"; +CPStandardKeyBindings["~" + CPLeftArrowFunctionKey] = "moveWordLeft:"; +CPStandardKeyBindings["^" + CPLeftArrowFunctionKey] = "moveToLeftEndOfLine:"; +CPStandardKeyBindings["@" + CPLeftArrowFunctionKey] = "moveToLeftEndOfLine:"; +CPStandardKeyBindings["$" + CPLeftArrowFunctionKey] = "moveLeftAndModifySelection:"; +CPStandardKeyBindings["$~" + CPLeftArrowFunctionKey] = "moveWordLeftAndModifySelection:"; +CPStandardKeyBindings["$^" + CPLeftArrowFunctionKey] = "moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@" + CPLeftArrowFunctionKey] = "moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^" + CPLeftArrowFunctionKey] = "makeBaseWritingDirectionRightToLeft:"; +CPStandardKeyBindings["@^~" + CPLeftArrowFunctionKey] = "makeTextWritingDirectionRightToLeft:"; +CPStandardKeyBindings[CPRightArrowFunctionKey] = "moveRight:"; +CPStandardKeyBindings["~" + CPRightArrowFunctionKey] = "moveWordRight:"; +CPStandardKeyBindings["^" + CPRightArrowFunctionKey] = "moveToRightEndOfLine:"; +CPStandardKeyBindings["@" + CPRightArrowFunctionKey] = "moveToRightEndOfLine:"; +CPStandardKeyBindings["$" + CPRightArrowFunctionKey] = "moveRightAndModifySelection:"; +CPStandardKeyBindings["$~" + CPRightArrowFunctionKey] = "moveWordRightAndModifySelection:"; +CPStandardKeyBindings["$^" + CPRightArrowFunctionKey] = "moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@" + CPRightArrowFunctionKey] = "moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^" + CPRightArrowFunctionKey] = "makeBaseWritingDirectionLeftToRight:"; +CPStandardKeyBindings["@^~" + CPRightArrowFunctionKey] = "makeTextWritingDirectionLeftToRight:"; +CPStandardKeyBindings[CPUpArrowFunctionKey] = "moveUp:"; +CPStandardKeyBindings["~" + CPUpArrowFunctionKey] = ["moveBackward:", "moveToBeginningOfParagraph:"]; +CPStandardKeyBindings["^" + CPUpArrowFunctionKey] = "scrollPageUp:"; +CPStandardKeyBindings["@" + CPUpArrowFunctionKey] = "moveToBeginningOfDocument:"; +CPStandardKeyBindings["$" + CPUpArrowFunctionKey] = "moveUpAndModifySelection:"; +CPStandardKeyBindings["$~" + CPUpArrowFunctionKey] = "moveParagraphBackwardAndModifySelection:"; +CPStandardKeyBindings["$@" + CPUpArrowFunctionKey] = "moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPDownArrowFunctionKey] = "moveDown:"; +CPStandardKeyBindings["~" + CPDownArrowFunctionKey] = ["moveForward:", "moveToEndOfParagraph:"]; +CPStandardKeyBindings["^" + CPDownArrowFunctionKey] = "scrollPageDown:"; +CPStandardKeyBindings["@" + CPDownArrowFunctionKey] = "moveToEndOfDocument:"; +CPStandardKeyBindings["$" + CPDownArrowFunctionKey] = "moveDownAndModifySelection:"; +CPStandardKeyBindings["$~" + CPDownArrowFunctionKey] = "moveParagraphForwardAndModifySelection:"; +CPStandardKeyBindings["$@" + CPDownArrowFunctionKey] = "moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings["@^" + CPDownArrowFunctionKey] = "makeBaseWritingDirectionNatural:"; +CPStandardKeyBindings["@^~" + CPDownArrowFunctionKey] = "makeTextWritingDirectionNatural:"; +CPStandardKeyBindings[CPHomeFunctionKey] = "scrollToBeginningOfDocument:"; +CPStandardKeyBindings["$" + CPHomeFunctionKey] = "moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPEndFunctionKey] = "scrollToEndOfDocument:"; +CPStandardKeyBindings["$" + CPEndFunctionKey] = "moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPPageUpFunctionKey] = "scrollPageUp:"; +CPStandardKeyBindings["~" + CPPageUpFunctionKey] = "pageUp:"; +CPStandardKeyBindings["$" + CPPageUpFunctionKey] = "pageUpAndModifySelection:"; +CPStandardKeyBindings[CPPageDownFunctionKey] = "scrollPageDown:"; +CPStandardKeyBindings["~" + CPPageDownFunctionKey] = "pageDown:"; +CPStandardKeyBindings["$" + CPPageDownFunctionKey] = "pageDownAndModifySelection:"; +var CPKeyBindingCache = {}; +{var the_class = objj_allocateClassPair(CPObject, "CPKeyBinding"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_key"), new objj_ivar("_modifierFlags"), new objj_ivar("_selectors"), new objj_ivar("_cacheName")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithKey:modifierFlags:selectors:"), function $CPKeyBinding__initWithKey_modifierFlags_selectors_(self, _cmd, aKey, aFlag, selectors) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPKeyBinding").super_class }, "init"); + if (self) + { + _key = aKey; + _modifierFlags = aFlag; + _selectors = selectors; + var cacheName = []; + if (_modifierFlags & CPCommandKeyMask) + cacheName.push("@"); + if (_modifierFlags & CPControlKeyMask) + cacheName.push("^"); + if (_modifierFlags & CPAlternateKeyMask) + cacheName.push("~"); + if (_modifierFlags & CPShiftKeyMask) + cacheName.push("$"); + cacheName.push(_key); + _cacheName = cacheName.join(""); + } + return self; +} +},["id","CPString","unsigned","CPArray"]), new objj_method(sel_getUid("key"), function $CPKeyBinding__key(self, _cmd) +{ with(self) +{ + return _key; +} +},["CPString"]), new objj_method(sel_getUid("modifierFlags"), function $CPKeyBinding__modifierFlags(self, _cmd) +{ with(self) +{ + return _modifierFlags; +} +},["unsigned"]), new objj_method(sel_getUid("selectors"), function $CPKeyBinding__selectors(self, _cmd) +{ with(self) +{ + return _selectors; +} +},["CPArray"]), new objj_method(sel_getUid("_cacheName"), function $CPKeyBinding___cacheName(self, _cmd) +{ with(self) +{ + return _cacheName; +} +},["CPString"]), new objj_method(sel_getUid("isEqual:"), function $CPKeyBinding__isEqual_(self, _cmd, rhs) +{ with(self) +{ + return _key === objj_msgSend(rhs, "key") && _modifierFlags === objj_msgSend(rhs, "modifierFlags"); +} +},["BOOL","CPKeyBinding"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPKeyBinding__initialize(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "class") !== CPKeyBinding) + return; + objj_msgSend(self, "createKeyBindingsFromJSObject:", CPStandardKeyBindings); +} +},["void"]), new objj_method(sel_getUid("createKeyBindingsFromJSObject:"), function $CPKeyBinding__createKeyBindingsFromJSObject_(self, _cmd, anObject) +{ with(self) +{ + var binding; + for (binding in anObject) + { + var components = binding.split(""), + modifierFlags = (objj_msgSend(components, "containsObject:", "$") ? CPShiftKeyMask : 0) | + (objj_msgSend(components, "containsObject:", "^") ? CPControlKeyMask : 0) | + (objj_msgSend(components, "containsObject:", "~") ? CPAlternateKeyMask : 0) | + (objj_msgSend(components, "containsObject:", "@") ? CPCommandKeyMask : 0); + var selectors = anObject[binding]; + if (!objj_msgSend(selectors, "isKindOfClass:", CPArray)) + selectors = [selectors]; + var keyBinding = objj_msgSend(objj_msgSend(self, "alloc"), "initWithKey:modifierFlags:selectors:", objj_msgSend(components, "lastObject"), modifierFlags, selectors); + objj_msgSend(self, "cacheKeyBinding:", keyBinding); + } +} +},["void","JSObject"]), new objj_method(sel_getUid("cacheKeyBinding:"), function $CPKeyBinding__cacheKeyBinding_(self, _cmd, aBinding) +{ with(self) +{ + if (!aBinding) + return; + CPKeyBindingCache[objj_msgSend(aBinding, "_cacheName")] = aBinding; +} +},["void","CPKeyBinding"]), new objj_method(sel_getUid("keyBindingForKey:modifierFlags:"), function $CPKeyBinding__keyBindingForKey_modifierFlags_(self, _cmd, aKey, aFlag) +{ with(self) +{ + var tempBinding = objj_msgSend(objj_msgSend(self, "alloc"), "initWithKey:modifierFlags:selectors:", aKey, aFlag, nil); + return CPKeyBindingCache[objj_msgSend(tempBinding, "_cacheName")]; +} +},["CPKeyBinding","CPString","unsigned"]), new objj_method(sel_getUid("selectorsForKey:modifierFlags:"), function $CPKeyBinding__selectorsForKey_modifierFlags_(self, _cmd, aKey, aFlag) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "keyBindingForKey:modifierFlags:", aKey, aFlag), "selectors"); +} +},["CPArray","CPString","unsigned"])]); +} + +p;19;CPKeyValueBinding.jt;18816;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;31;Foundation/CPValueTransformer.jt;18679;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPValueTransformer.j", NO); +var exposedBindingsMap = objj_msgSend(CPDictionary, "new"), + bindingsMap = objj_msgSend(CPDictionary, "new"); +var CPBindingOperationAnd = 0, + CPBindingOperationOr = 1; +{var the_class = objj_allocateClassPair(CPObject, "CPKeyValueBinding"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_info"), new objj_ivar("_source")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithBinding:name:to:keyPath:options:from:"), function $CPKeyValueBinding__initWithBinding_name_to_keyPath_options_from_(self, _cmd, aBinding, aName, aDestination, aKeyPath, options, aSource) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPKeyValueBinding").super_class }, "init"); + if (self) + { + _source = aSource; + _info = objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [aDestination, aKeyPath], [CPObservedObjectKey, CPObservedKeyPathKey]); + if (options) + objj_msgSend(_info, "setObject:forKey:", options, CPOptionsKey); + objj_msgSend(aDestination, "addObserver:forKeyPath:options:context:", self, aKeyPath, CPKeyValueObservingOptionNew, aBinding); + var bindings = objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(_source, "hash")); + if (!bindings) + { + bindings = objj_msgSend(CPDictionary, "new"); + objj_msgSend(bindingsMap, "setObject:forKey:", bindings, objj_msgSend(_source, "hash")); + } + objj_msgSend(bindings, "setObject:forKey:", self, aName); + objj_msgSend(self, "setValueFor:", aBinding); + } + return self; +} +},["id","CPString","CPString","id","CPString","CPDictionary","id"]), new objj_method(sel_getUid("setValueFor:"), function $CPKeyValueBinding__setValueFor_(self, _cmd, aBinding) +{ with(self) +{ + var destination = objj_msgSend(_info, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(_info, "objectForKey:", CPObservedKeyPathKey), + options = objj_msgSend(_info, "objectForKey:", CPOptionsKey), + newValue = objj_msgSend(destination, "valueForKeyPath:", keyPath); + newValue = objj_msgSend(self, "transformValue:withOptions:", newValue, options); + objj_msgSend(_source, "setValue:forKey:", newValue, aBinding); +} +},["void","CPString"]), new objj_method(sel_getUid("reverseSetValueFor:"), function $CPKeyValueBinding__reverseSetValueFor_(self, _cmd, aBinding) +{ with(self) +{ + var destination = objj_msgSend(_info, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(_info, "objectForKey:", CPObservedKeyPathKey), + options = objj_msgSend(_info, "objectForKey:", CPOptionsKey), + newValue = objj_msgSend(_source, "valueForKeyPath:", aBinding); + newValue = objj_msgSend(self, "reverseTransformValue:withOptions:", newValue, options); + objj_msgSend(destination, "setValue:forKeyPath:", newValue, keyPath); +} +},["void","CPString"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $CPKeyValueBinding__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, changes, context) +{ with(self) +{ + if (!changes) + return; + objj_msgSend(self, "setValueFor:", context); +} +},["void","CPString","id","CPDictionary","id"]), new objj_method(sel_getUid("transformValue:withOptions:"), function $CPKeyValueBinding__transformValue_withOptions_(self, _cmd, aValue, options) +{ with(self) +{ + var valueTransformerName, + valueTransformer, + placeholder; + var valueTransformerName = objj_msgSend(options, "objectForKey:", CPValueTransformerNameBindingOption), + valueTransformer; + if (valueTransformerName) + { + valueTransformer = objj_msgSend(CPValueTransformer, "valueTransformerForName:", valueTransformerName); + if (!valueTransformer) + { + var valueTransformerClass = CPClassFromString(valueTransformerName); + if (valueTransformerClass) + { + valueTransformer = objj_msgSend(objj_msgSend(valueTransformerClass, "alloc"), "init"); + objj_msgSend(valueTransformerClass, "setValueTransformer:forName:", valueTransformer, valueTransformerName); + } + } + } + else + valueTransformer = objj_msgSend(options, "objectForKey:", CPValueTransformerBindingOption); + if (valueTransformer) + aValue = objj_msgSend(valueTransformer, "transformedValue:", aValue); + switch (aValue) + { + case CPMultipleValuesMarker: return objj_msgSend(options, "objectForKey:", CPMultipleValuesPlaceholderBindingOption) || "Multiple Values"; + case CPNoSelectionMarker: return objj_msgSend(options, "objectForKey:", CPNoSelectionPlaceholderBindingOption) || "No Selection"; + case CPNotApplicableMarker: if (objj_msgSend(options, "objectForKey:", CPRaisesForNotApplicableKeysBindingOption)) + objj_msgSend(CPException, "raise:reason:", CPGenericException, "can't transform non applicable key on: "+_source+" value: "+aValue); + return objj_msgSend(options, "objectForKey:", CPNotApplicablePlaceholderBindingOption) || "Not Applicable"; + case nil: + case undefined: return objj_msgSend(options, "objectForKey:", CPNullPlaceholderBindingOption) || nil; + } + return aValue; +} +},["id","id","CPDictionary"]), new objj_method(sel_getUid("reverseTransformValue:withOptions:"), function $CPKeyValueBinding__reverseTransformValue_withOptions_(self, _cmd, aValue, options) +{ with(self) +{ + var valueTransformerName = objj_msgSend(options, "objectForKey:", CPValueTransformerNameBindingOption), + valueTransformer; + if (valueTransformerName) + valueTransformer = objj_msgSend(CPValueTransformer, "valueTransformerForName:", valueTransformerName); + else + valueTransformer = objj_msgSend(options, "objectForKey:", CPValueTransformerBindingOption); + if (valueTransformer && objj_msgSend(objj_msgSend(valueTransformer, "class"), "allowsReverseTransformation")) + aValue = objj_msgSend(valueTransformer, "transformedValue:", aValue); + return aValue; +} +},["id","id","CPDictionary"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("exposeBinding:forClass:"), function $CPKeyValueBinding__exposeBinding_forClass_(self, _cmd, aBinding, aClass) +{ with(self) +{ + var bindings = objj_msgSend(exposedBindingsMap, "objectForKey:", objj_msgSend(aClass, "hash")); + if (!bindings) + { + bindings = []; + objj_msgSend(exposedBindingsMap, "setObject:forKey:", bindings, objj_msgSend(aClass, "hash")); + } + bindings.push(aBinding); +} +},["void","CPString","Class"]), new objj_method(sel_getUid("exposedBindingsForClass:"), function $CPKeyValueBinding__exposedBindingsForClass_(self, _cmd, aClass) +{ with(self) +{ + return objj_msgSend(objj_msgSend(exposedBindingsMap, "objectForKey:", objj_msgSend(aClass, "hash")), "copy"); +} +},["CPArray","Class"]), new objj_method(sel_getUid("getBinding:forObject:"), function $CPKeyValueBinding__getBinding_forObject_(self, _cmd, aBinding, anObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(anObject, "hash")), "objectForKey:", aBinding); +} +},["CPKeyValueBinding","CPString","id"]), new objj_method(sel_getUid("infoForBinding:forObject:"), function $CPKeyValueBinding__infoForBinding_forObject_(self, _cmd, aBinding, anObject) +{ with(self) +{ + var theBinding = objj_msgSend(self, "getBinding:forObject:", aBinding, anObject); + if (theBinding) + return theBinding._info; + return nil; +} +},["CPDictionary","CPString","id"]), new objj_method(sel_getUid("allBindingsForObject:"), function $CPKeyValueBinding__allBindingsForObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(anObject, "hash")); +} +},["CPDictionary","id"]), new objj_method(sel_getUid("unbind:forObject:"), function $CPKeyValueBinding__unbind_forObject_(self, _cmd, aBinding, anObject) +{ with(self) +{ + var bindings = objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(anObject, "hash")); + if (!bindings) + return; + var theBinding = objj_msgSend(bindings, "objectForKey:", aBinding); + if (!theBinding) + return; + var infoDictionary = theBinding._info, + observedObject = objj_msgSend(infoDictionary, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(infoDictionary, "objectForKey:", CPObservedKeyPathKey); + objj_msgSend(observedObject, "removeObserver:forKeyPath:", theBinding, keyPath); + objj_msgSend(bindings, "removeObjectForKey:", aBinding); +} +},["void","CPString","id"]), new objj_method(sel_getUid("unbindAllForObject:"), function $CPKeyValueBinding__unbindAllForObject_(self, _cmd, anObject) +{ with(self) +{ + var bindings = objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(anObject, "hash")); + if (!bindings) + return; + var allKeys = objj_msgSend(bindings, "allKeys"), + count = allKeys.length; + while (count--) + objj_msgSend(anObject, "unbind:", objj_msgSend(bindings, "objectForKey:", allKeys[count])); + objj_msgSend(bindingsMap, "removeObjectForKey:", objj_msgSend(anObject, "hash")); +} +},["void","id"])]); +} +{ +var the_class = objj_getClass("CPObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("exposedBindings"), function $CPObject__exposedBindings(self, _cmd) +{ with(self) +{ + var exposedBindings = [], + theClass = objj_msgSend(self, "class"); + while(theClass) + { + var temp = objj_msgSend(CPKeyValueBinding, "exposedBindingsForClass:", theClass); + if (temp) + objj_msgSend(exposedBindings, "addObjectsFromArray:", temp); + theClass = objj_msgSend(theClass, "superclass"); + } + return exposedBindings; +} +},["CPArray"]), new objj_method(sel_getUid("valueClassForBinding:"), function $CPObject__valueClassForBinding_(self, _cmd, binding) +{ with(self) +{ + return objj_msgSend(CPString, "class"); +} +},["Class","CPString"]), new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"), function $CPObject__bind_toObject_withKeyPath_options_(self, _cmd, aBinding, anObject, aKeyPath, options) +{ with(self) +{ + if (!anObject || !aKeyPath) + return CPLog.error("Invalid object or path on "+self+" for "+aBinding); + objj_msgSend(self, "unbind:", aBinding); + objj_msgSend(objj_msgSend(CPKeyValueBinding, "alloc"), "initWithBinding:name:to:keyPath:options:from:", objj_msgSend(self, "_replacementKeyPathForBinding:", aBinding), aBinding, anObject, aKeyPath, options, self); +} +},["void","CPString","id","CPString","CPDictionary"]), new objj_method(sel_getUid("infoForBinding:"), function $CPObject__infoForBinding_(self, _cmd, aBinding) +{ with(self) +{ + return objj_msgSend(CPKeyValueBinding, "infoForBinding:forObject:", aBinding, self); +} +},["CPDictionary","CPString"]), new objj_method(sel_getUid("unbind:"), function $CPObject__unbind_(self, _cmd, aBinding) +{ with(self) +{ + objj_msgSend(CPKeyValueBinding, "unbind:forObject:", aBinding, self); +} +},["void","CPString"]), new objj_method(sel_getUid("_replacementKeyPathForBinding:"), function $CPObject___replacementKeyPathForBinding_(self, _cmd, binding) +{ with(self) +{ + return binding; +} +},["id","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("exposeBinding:"), function $CPObject__exposeBinding_(self, _cmd, aBinding) +{ with(self) +{ + objj_msgSend(CPKeyValueBinding, "exposeBinding:forClass:", aBinding, objj_msgSend(self, "class")); +} +},["void","CPString"])]); +} +{var the_class = objj_allocateClassPair(CPKeyValueBinding, "_CPKeyValueOrBinding"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setValueFor:"), function $_CPKeyValueOrBinding__setValueFor_(self, _cmd, aBinding) +{ with(self) +{ + var bindings = objj_msgSend(bindingsMap, "valueForKey:", objj_msgSend(_source, "hash")); + if (!bindings) + return; + objj_msgSend(_source, "setValue:forKey:", resolveMultipleValues(aBinding, bindings, CPBindingOperationOr), aBinding); +} +},["void","CPString"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPKeyValueOrBinding__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, changes, context) +{ with(self) +{ + objj_msgSend(self, "setValueFor:", context); +} +},["void","CPString","id","CPDictionary","id"])]); +} +{var the_class = objj_allocateClassPair(CPKeyValueBinding, "_CPKeyValueAndBinding"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setValueFor:"), function $_CPKeyValueAndBinding__setValueFor_(self, _cmd, aBinding) +{ with(self) +{ + var bindings = objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(_source, "hash")); + if (!bindings) + return; + objj_msgSend(_source, "setValue:forKey:", resolveMultipleValues(aBinding, bindings, CPBindingOperationAnd), aBinding); +} +},["void","CPString"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPKeyValueAndBinding__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObejct, changes, context) +{ with(self) +{ + objj_msgSend(self, "setValueFor:", context); +} +},["void","CPString","id","CPDictionary","id"])]); +} +var resolveMultipleValues = resolveMultipleValues= function( key, bindings, operation) +{ + var bindingName = key, + theBinding, + count = 1; + while (theBinding = objj_msgSend(bindings, "objectForKey:", bindingName)) + { + var infoDictionary = theBinding._info, + object = objj_msgSend(infoDictionary, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(infoDictionary, "objectForKey:", CPObservedKeyPathKey), + options = objj_msgSend(infoDictionary, "objectForKey:", CPOptionsKey); + var value = objj_msgSend(theBinding, "transformValue:withOptions:", objj_msgSend(object, "valueForKeyPath:", keyPath), options); + if (value == operation) + return operation; + bindingName = objj_msgSend(CPString, "stringWithFormat:", "%@%i", key, ++count); + } + return !operation; +} +var invokeAction = invokeAction= function( targetKey, argumentKey, bindings) +{ + var theBinding = objj_msgSend(bindings, "objectForKey:", targetKey), + infoDictionary = theBinding._info, + object = objj_msgSend(infoDictionary, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(infoDictionary, "objectForKey:", CPObservedKeyPathKey), + options = objj_msgSend(infoDictionary, "objectForKey:", CPOptionsKey), + target = objj_msgSend(object, "valueForKeyPath:", keyPath), + selector = objj_msgSend(options, "objectForKey:", CPSelectorNameBindingOption); + if (!target || !selector) + return; + var invocation = objj_msgSend(CPInvocation, "invocationWithMethodSignature:", objj_msgSend(target, "methodSignatureForSelector:", selector)); + objj_msgSend(invocation, "setSelector:", selector); + var bindingName = argumentKey + count = 1; + while (theBinding = objj_msgSend(bindings, "objectForKey:", bindingName)) + { + infoDictionary = theBinding._info; + keyPath = objj_msgSend(infoDictionary, "objectForKey:", CPObserverKeyPathKey); + object = objj_msgSend(objj_msgSend(infoDictionary, "objectForKey:", CPObservedObjectKey), "valueForKeyPath:", keyPath); + if (object) + objj_msgSend(invocation, "setArgument:atIndex:", object, ++count); + bindingName = objj_msgSend(CPString, "stringWithFormat:", "%@%i", argumentKey, count); + } + objj_msgSend(invocation, "invoke"); +} +CPObservedObjectKey = "CPObservedObjectKey"; +CPObservedKeyPathKey = "CPObservedKeyPathKey"; +CPOptionsKey = "CPOptionsKey"; +CPMultipleValuesMarker = "CPMultipleValuesMarker"; +CPNoSelectionMarker = "CPNoSelectionMarker"; +CPNotApplicableMarker = "CPNotApplicableMarker"; +CPAlignmentBinding = "CPAlignmentBinding"; +CPEditableBinding = "CPEditableBinding"; +CPEnabledBinding = "CPEnabledBinding"; +CPFontBinding = "CPFontBinding"; +CPHiddenBinding = "CPHiddenBinding"; +CPSelectedIndexBinding = "CPSelectedIndexBinding"; +CPTextColorBinding = "CPTextColorBinding"; +CPToolTipBinding = "CPToolTipBinding"; +CPValueBinding = "value"; +CPAllowsEditingMultipleValuesSelectionBindingOption = "CPAllowsEditingMultipleValuesSelectionBindingOption"; +CPAllowsNullArgumentBindingOption = "CPAllowsNullArgumentBindingOption"; +CPConditionallySetsEditableBindingOption = "CPConditionallySetsEditableBindingOption"; +CPConditionallySetsEnabledBindingOption = "CPConditionallySetsEnabledBindingOption"; +CPConditionallySetsHiddenBindingOption = "CPConditionallySetsHiddenBindingOption"; +CPContinuouslyUpdatesValueBindingOption = "CPContinuouslyUpdatesValueBindingOption"; +CPCreatesSortDescriptorBindingOption = "CPCreatesSortDescriptorBindingOption"; +CPDeletesObjectsOnRemoveBindingsOption = "CPDeletesObjectsOnRemoveBindingsOption"; +CPDisplayNameBindingOption = "CPDisplayNameBindingOption"; +CPDisplayPatternBindingOption = "CPDisplayPatternBindingOption"; +CPHandlesContentAsCompoundValueBindingOption = "CPHandlesContentAsCompoundValueBindingOption"; +CPInsertsNullPlaceholderBindingOption = "CPInsertsNullPlaceholderBindingOption"; +CPInvokesSeparatelyWithArrayObjectsBindingOption = "CPInvokesSeparatelyWithArrayObjectsBindingOption"; +CPMultipleValuesPlaceholderBindingOption = "CPMultipleValuesPlaceholderBindingOption"; +CPNoSelectionPlaceholderBindingOption = "CPNoSelectionPlaceholderBindingOption"; +CPNotApplicablePlaceholderBindingOption = "CPNotApplicablePlaceholderBindingOption"; +CPNullPlaceholderBindingOption = "CPNullPlaceholderBindingOption"; +CPPredicateFormatBindingOption = "CPPredicateFormatBindingOption"; +CPRaisesForNotApplicableKeysBindingOption = "CPRaisesForNotApplicableKeysBindingOption"; +CPSelectorNameBindingOption = "CPSelectorNameBindingOption"; +CPSelectsAllWhenSettingContentBindingOption = "CPSelectsAllWhenSettingContentBindingOption"; +CPValidatesImmediatelyBindingOption = "CPValidatesImmediatelyBindingOption"; +CPValueTransformerNameBindingOption = "CPValueTransformerNameBindingOption"; +CPValueTransformerBindingOption = "CPValueTransformerBindingOption"; + +p;20;CPObjectController.jt;26586;@STATIC;1.0;I;25;Foundation/CPDictionary.ji;14;CPController.jt;26517; + + +objj_executeFile("Foundation/CPDictionary.j", NO); + +objj_executeFile("CPController.j", YES); + + +{var the_class = objj_allocateClassPair(CPController, "CPObjectController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_contentObject"), new objj_ivar("_selection"), new objj_ivar("_objectClass"), new objj_ivar("_isEditable"), new objj_ivar("_automaticallyPreparesContent"), new objj_ivar("_observedKeys")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPObjectController__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithContent:", nil); +} +},["id"]), new objj_method(sel_getUid("initWithContent:"), function $CPObjectController__initWithContent_(self, _cmd, aContent) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPObjectController").super_class }, "init")) + { + objj_msgSend(self, "setContent:", aContent); + objj_msgSend(self, "setEditable:", YES); + objj_msgSend(self, "setObjectClass:", objj_msgSend(CPMutableDictionary, "class")); + + _observedKeys = objj_msgSend(objj_msgSend(CPCountedSet, "alloc"), "init"); + } + + return self; +} +},["id","id"]), new objj_method(sel_getUid("content"), function $CPObjectController__content(self, _cmd) +{ with(self) +{ + return _contentObject; +} +},["id"]), new objj_method(sel_getUid("setContent:"), function $CPObjectController__setContent_(self, _cmd, aContent) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "contentObject"); + objj_msgSend(self, "_selectionWillChange"); + + _contentObject = aContent; + + objj_msgSend(self, "didChangeValueForKey:", "contentObject"); + objj_msgSend(self, "_selectionDidChange"); +} +},["void","id"]), new objj_method(sel_getUid("_setContentObject:"), function $CPObjectController___setContentObject_(self, _cmd, aContent) +{ with(self) +{ + objj_msgSend(self, "setContent:", aContent); +} +},["void","id"]), new objj_method(sel_getUid("_contentObject"), function $CPObjectController___contentObject(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "content"); +} +},["id"]), new objj_method(sel_getUid("setAutomaticallyPreparesContent:"), function $CPObjectController__setAutomaticallyPreparesContent_(self, _cmd, shouldAutomaticallyPrepareContent) +{ with(self) +{ + _automaticallyPreparesContent = shouldAutomaticallyPrepareContent; +} +},["void","BOOL"]), new objj_method(sel_getUid("automaticallyPreparesContent"), function $CPObjectController__automaticallyPreparesContent(self, _cmd) +{ with(self) +{ + return _automaticallyPreparesContent; +} +},["BOOL"]), new objj_method(sel_getUid("prepareContent"), function $CPObjectController__prepareContent(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setContent:", objj_msgSend(self, "newObject")); +} +},["void"]), new objj_method(sel_getUid("setObjectClass:"), function $CPObjectController__setObjectClass_(self, _cmd, aClass) +{ with(self) +{ + _objectClass = aClass; +} +},["void","Class"]), new objj_method(sel_getUid("objectClass"), function $CPObjectController__objectClass(self, _cmd) +{ with(self) +{ + return _objectClass; +} +},["Class"]), new objj_method(sel_getUid("newObject"), function $CPObjectController__newObject(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "objectClass"), "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("addObject:"), function $CPObjectController__addObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setContent:", anObject); + + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "contentObject", self), "reverseSetValueFor:", "contentObject"); +} +},["void","id"]), new objj_method(sel_getUid("removeObject:"), function $CPObjectController__removeObject_(self, _cmd, anObject) +{ with(self) +{ + if (objj_msgSend(self, "content") === anObject) + objj_msgSend(self, "setContent:", nil); + + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "contentObject", self), "reverseSetValueFor:", "contentObject"); +} +},["void","id"]), new objj_method(sel_getUid("add:"), function $CPObjectController__add_(self, _cmd, aSender) +{ with(self) +{ + + objj_msgSend(self, "addObject:", objj_msgSend(self, "newObject")); +} +},["void","id"]), new objj_method(sel_getUid("canAdd"), function $CPObjectController__canAdd(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isEditable"); +} +},["BOOL"]), new objj_method(sel_getUid("remove:"), function $CPObjectController__remove_(self, _cmd, aSender) +{ with(self) +{ + + objj_msgSend(self, "removeObject:", objj_msgSend(self, "content")); +} +},["void","id"]), new objj_method(sel_getUid("canRemove"), function $CPObjectController__canRemove(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isEditable") && objj_msgSend(objj_msgSend(self, "selectedObjects"), "count"); +} +},["BOOL"]), new objj_method(sel_getUid("setEditable:"), function $CPObjectController__setEditable_(self, _cmd, shouldBeEditable) +{ with(self) +{ + _isEditable = shouldBeEditable; +} +},["void","BOOL"]), new objj_method(sel_getUid("isEditable"), function $CPObjectController__isEditable(self, _cmd) +{ with(self) +{ + return _isEditable; +} +},["BOOL"]), new objj_method(sel_getUid("selectedObjects"), function $CPObjectController__selectedObjects(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_CPObservableArray, "alloc"), "initWithObjects:count:", [_contentObject], 1); +} +},["CPArray"]), new objj_method(sel_getUid("selection"), function $CPObjectController__selection(self, _cmd) +{ with(self) +{ + return _selection; +} +},["id"]), new objj_method(sel_getUid("_selectionWillChange"), function $CPObjectController___selectionWillChange(self, _cmd) +{ with(self) +{ + objj_msgSend(_selection, "controllerWillChange"); + objj_msgSend(self, "willChangeValueForKey:", "selection"); +} +},["void"]), new objj_method(sel_getUid("_selectionDidChange"), function $CPObjectController___selectionDidChange(self, _cmd) +{ with(self) +{ + if (_selection === undefined || _selection === nil) + _selection = objj_msgSend(objj_msgSend(CPControllerSelectionProxy, "alloc"), "initWithController:", self); + + objj_msgSend(_selection, "controllerDidChange"); + objj_msgSend(self, "didChangeValueForKey:", "selection"); +} +},["void"]), new objj_method(sel_getUid("observedKeys"), function $CPObjectController__observedKeys(self, _cmd) +{ with(self) +{ + return _observedKeys; +} +},["id"]), new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"), function $CPObjectController__addObserver_forKeyPath_options_context_(self, _cmd, anObserver, aKeyPath, options, context) +{ with(self) +{ + objj_msgSend(_observedKeys, "addObject:", aKeyPath); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPObjectController").super_class }, "addObserver:forKeyPath:options:context:", anObserver, aKeyPath, options, context); +} +},["void","id","CPString","CPKeyValueObservingOptions","id"]), new objj_method(sel_getUid("removeObserver:forKeyPath:"), function $CPObjectController__removeObserver_forKeyPath_(self, _cmd, anObserver, aKeyPath) +{ with(self) +{ + objj_msgSend(_observedKeys, "removeObject:", aKeyPath); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPObjectController").super_class }, "removeObserver:forKeyPath:", anObserver, aKeyPath); +} +},["void","id","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPObjectController__initialize(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "exposeBinding:", "editable"); + objj_msgSend(self, "exposeBinding:", "contentObject"); +} +},["id"]), new objj_method(sel_getUid("keyPathsForValuesAffectingContentObject"), function $CPObjectController__keyPathsForValuesAffectingContentObject(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "content"); +} +},["CPSet"]), new objj_method(sel_getUid("automaticallyNotifiesObserversForKey:"), function $CPObjectController__automaticallyNotifiesObserversForKey_(self, _cmd, aKey) +{ with(self) +{ + if (aKey === "contentObject") + return NO; + + return YES; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanAdd"), function $CPObjectController__keyPathsForValuesAffectingCanAdd(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObject:", "editable"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsert"), function $CPObjectController__keyPathsForValuesAffectingCanInsert(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObject:", "editable"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"), function $CPObjectController__keyPathsForValuesAffectingCanRemove(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "editable", "selection"); +} +},["CPSet"])]); +} + +var CPObjectControllerObjectClassNameKey = "CPObjectControllerObjectClassNameKey", + CPObjectControllerIsEditableKey = "CPObjectControllerIsEditableKey", + CPObjectControllerAutomaticallyPreparesContentKey = "CPObjectControllerAutomaticallyPreparesContentKey"; + +{ +var the_class = objj_getClass("CPObjectController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObjectController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPObjectController__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPObjectController").super_class }, "init"); + + if (self) + { + var objectClassName = objj_msgSend(aCoder, "decodeObjectForKey:", CPObjectControllerObjectClassNameKey), + objectClass = CPClassFromString(objectClassName); + + + + objj_msgSend(self, "setObjectClass:", objectClass); + objj_msgSend(self, "setEditable:", objj_msgSend(aCoder, "decodeBoolForKey:", CPObjectControllerIsEditableKey)); + objj_msgSend(self, "setAutomaticallyPreparesContent:", objj_msgSend(aCoder, "decodeBoolForKey:", CPObjectControllerAutomaticallyPreparesContentKey) || NO); + + _observedKeys = objj_msgSend(objj_msgSend(CPCountedSet, "alloc"), "init"); + } + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPObjectController__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", CPStringFromClass(objectClass), CPObjectControllerObjectClassNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "isEditable"), CPObjectControllerIsEditableKey); + + if (!objj_msgSend(self, "automaticallyPreparesContent")) + objj_msgSend(aCoder, "encodeBOOL:forKey:", YES, CPObjectControllerAutomaticallyPreparesContentKey); +} +},["void","CPCoder"])]); +} + +{var the_class = objj_allocateClassPair(CPObject, "_CPObservationProxy"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_keyPath"), new objj_ivar("_observer"), new objj_ivar("_object"), new objj_ivar("_notifyObject"), new objj_ivar("_context"), new objj_ivar("_options")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithKeyPath:observer:object:"), function $_CPObservationProxy__initWithKeyPath_observer_object_(self, _cmd, aKeyPath, anObserver, anObject) +{ with(self) +{ + if (self=objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservationProxy").super_class }, "init")) + { + _keyPath = aKeyPath; + _observer = anObserver; + _object = anObject; + } + + return self; +} +},["id","id","id","id"]), new objj_method(sel_getUid("observer"), function $_CPObservationProxy__observer(self, _cmd) +{ with(self) +{ + return _observer; +} +},["id"]), new objj_method(sel_getUid("keyPath"), function $_CPObservationProxy__keyPath(self, _cmd) +{ with(self) +{ + return _keyPath; +} +},["id"]), new objj_method(sel_getUid("context"), function $_CPObservationProxy__context(self, _cmd) +{ with(self) +{ + return _context; +} +},["id"]), new objj_method(sel_getUid("options"), function $_CPObservationProxy__options(self, _cmd) +{ with(self) +{ + return _options; +} +},["int"]), new objj_method(sel_getUid("setNotifyObject:"), function $_CPObservationProxy__setNotifyObject_(self, _cmd, notify) +{ with(self) +{ + _notifyObject = notify; +} +},["void","BOOL"]), new objj_method(sel_getUid("isEqual:"), function $_CPObservationProxy__isEqual_(self, _cmd, anObject) +{ with(self) +{ + if (objj_msgSend(anObject, "class") === objj_msgSend(self, "class")) + { + if (anObject._observer === _observer && objj_msgSend(anObject._keyPath, "isEqual:", _keyPath) && objj_msgSend(anObject._object, "isEqual:", _object)) + return YES; + } + + return NO; +} +},["BOOL","id"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPObservationProxy__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, change, context) +{ with(self) +{ + if (_notifyObject) + objj_msgSend(_object, "observeValueForKeyPath:ofObject:change:context:", _keyPath, _object, change, context); + + objj_msgSend(_observer, "observeValueForKeyPath:ofObject:change:context:", _keyPath, _object, change, context); +} +},["void","CPString","id","CPDictionary","id"]), new objj_method(sel_getUid("description"), function $_CPObservationProxy__description(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservationProxy").super_class }, "description") + objj_msgSend(CPString, "stringWithFormat:", "observation proxy for %@ on key path %@", _observer, _keyPath); +} +},["CPString"])]); +} + +{var the_class = objj_allocateClassPair(CPMutableArray, "_CPObservableArray"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_observationProxies")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("description"), function $_CPObservableArray__description(self, _cmd) +{ with(self) +{ + return "<_CPObservableArray: "+objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "description")+" >"; +} +},["CPString"]), new objj_method(sel_getUid("initWithArray:"), function $_CPObservableArray__initWithArray_(self, _cmd, anArray) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "initWithArray:", anArray)) + { + _observationProxies = []; + } + + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("initWithObjects:count:"), function $_CPObservableArray__initWithObjects_count_(self, _cmd, objects, count) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "initWithObjects:count:", objects, count)) + { + _observationProxies = []; + } + + return self; +} +},["id","CPArray","unsigned"]), new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"), function $_CPObservableArray__addObserver_forKeyPath_options_context_(self, _cmd, anObserver, aKeyPath, options, context) +{ with(self) +{ + if (aKeyPath.indexOf("@") === 0) + { + var proxy = objj_msgSend(objj_msgSend(_CPObservationProxy, "alloc"), "initWithKeyPath:observer:object:", aKeyPath, anObserver, self); + + proxy._options = options; + proxy._context = context; + + objj_msgSend(_observationProxies, "addObject:", proxy); + + var dotIndex = aKeyPath.indexOf("."), + remaining = aKeyPath.substring(dotIndex+1), + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "count"))); + + objj_msgSend(self, "addObserver:toObjectsAtIndexes:forKeyPath:options:context:", proxy, indexes, remaining, options, context); + } + else + { + var indexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "count"))); + objj_msgSend(self, "addObserver:toObjectsAtIndexes:forKeyPath:options:context:", anObserver, indexes, aKeyPath, options, context); + } +} +},["void","id","CPString","CPKeyValueObservingOptions","id"]), new objj_method(sel_getUid("removeObserver:forKeyPath:"), function $_CPObservableArray__removeObserver_forKeyPath_(self, _cmd, anObserver, aKeyPath) +{ with(self) +{ + if (aKeyPath.indexOf("@") === 0) + { + var proxy = objj_msgSend(objj_msgSend(_CPObservationProxy, "alloc"), "initWithKeyPath:observer:object:", aKeyPath, anObserver, self), + index = objj_msgSend(_observationProxies, "indexOfObject:", proxy); + + proxy = objj_msgSend(_observationProxies, "objectAtIndex:", index); + + var dotIndex = aKeyPath.indexOf("."), + remaining = aKeyPath.substring(dotIndex+1), + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "count"))); + + objj_msgSend(self, "removeObserver:fromObjectsAtIndexes:forKeyPath:", proxy, indexes, remaining); + } + else + { + var indexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "count"))); + objj_msgSend(self, "removeObserver:fromObjectsAtIndexes:forKeyPath:", anObserver, indexes, aKeyPath); + } +} +},["void","id","CPString"]), new objj_method(sel_getUid("insertObject:atIndex:"), function $_CPObservableArray__insertObject_atIndex_(self, _cmd, anObject, anIndex) +{ with(self) +{ + for (var i=0, count=objj_msgSend(_observationProxies, "count"); i<count; i++) + { + var proxy = objj_msgSend(_observationProxies, "objectAtIndex:", i), + keyPath = objj_msgSend(proxy, "keyPath"), + operator = keyPath.indexOf(".") === 0; + + if (operator) + objj_msgSend(self, "willChangeValueForKey:", keyPath); + + objj_msgSend(anObject, "addObserver:forKeyPath:options:context:", proxy, keyPath, objj_msgSend(proxy, "options"), objj_msgSend(proxy, "context")); + + if (operator) + objj_msgSend(self, "didChangeValueForKey:", keyPath); + } + + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "insertObject:atIndex:", anObject, anIndex); +} +},["void","id","unsigned"]), new objj_method(sel_getUid("removeObjectAtIndex:"), function $_CPObservableArray__removeObjectAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + for (var i=0, count=objj_msgSend(_observationProxies, "count"); i<count; i++) + { + var proxy = objj_msgSend(_observationProxies, "objectAtIndex:", i), + keyPath = objj_msgSend(proxy, "keyPath"), + operator = keyPath.indexOf(".") === 0; + + if (operator) + objj_msgSend(self, "willChangeValueForKey:", keyPath); + + objj_msgSend(anObject, "removeObserver:forKeyPath:", proxy, keyPath); + + if (operator) + objj_msgSend(self, "didChangeValueForKey:", keyPath); + } + + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "removeObjectAtIndex:", anIndex); +} +},["void","unsigned"]), new objj_method(sel_getUid("objectsAtIndexes:"), function $_CPObservableArray__objectsAtIndexes_(self, _cmd, theIndexes) +{ with(self) +{ + return objj_msgSend(_CPObservableArray, "arrayWithArray:", objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "objectsAtIndexes:", theIndexes)); +} +},["_CPObservableArray","CPIndexSet"]), new objj_method(sel_getUid("addObject:"), function $_CPObservableArray__addObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "insertObject:atIndex:", anObject, objj_msgSend(self, "count")); +} +},["void","id"]), new objj_method(sel_getUid("removeLastObject"), function $_CPObservableArray__removeLastObject(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "removeObjectAtIndex:", objj_msgSend(self, "count")); +} +},["void"]), new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"), function $_CPObservableArray__replaceObjectAtIndex_withObject_(self, _cmd, anIndex, anObject) +{ with(self) +{ + var currentObject = objj_msgSend(self, "objectAtIndex:", anIndex); + + for (var i=0, count=objj_msgSend(_observationProxies, "count"); i<count; i++) + { + var proxy = objj_msgSend(_observationProxies, "objectAtIndex:", i), + keyPath = objj_msgSend(proxy, "keyPath"), + operator = keyPath.indexOf(".") === 0; + + if (operator) + objj_msgSend(self, "willChangeValueForKey:", keyPath); + + objj_msgSend(currentObject, "removeObserver:forKeyPath:", proxy, keyPath); + objj_msgSend(anObject, "addObserver:forKeyPath:options:context:", proxy, keyPath, objj_msgSend(proxy, "options"), objj_msgSend(proxy, "context")); + + if (operator) + objj_msgSend(self, "didChangeValueForKey:", keyPath); + } + + objj_msgSend(self, "replaceObjectAtIndex:withObject:", anIndex, anObject); +} +},["void","unsigned","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $_CPObservableArray__alloc(self, _cmd) +{ with(self) +{ + var a = []; + a.isa = self; + + var ivars = class_copyIvarList(self), + count = ivars.length; + + while (count--) + a[ivar_getName(ivars[count])] = nil; + + return a; +} +},["id"])]); +} + +{var the_class = objj_allocateClassPair(CPObject, "CPControllerSelectionProxy"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_controller"), new objj_ivar("_keys"), new objj_ivar("_cachedValues"), new objj_ivar("_observationProxies")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithController:"), function $CPControllerSelectionProxy__initWithController_(self, _cmd, aController) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControllerSelectionProxy").super_class }, "init")) + { + _cachedValues = objj_msgSend(CPDictionary, "dictionary"); + _observationProxies = objj_msgSend(CPArray, "array"); + _controller = aController; + } + + return self; +} +},["id","id"]), new objj_method(sel_getUid("valueForKey:"), function $CPControllerSelectionProxy__valueForKey_(self, _cmd, aKey) +{ with(self) +{ + var value = objj_msgSend(_cachedValues, "objectForKey:", aKey); + + if (value !== undefined && value !== nil) + return value; + + var allValues = objj_msgSend(objj_msgSend(_controller, "selectedObjects"), "valueForKeyPath:", aKey), + count = objj_msgSend(allValues, "count"); + + if (!count) + value = CPNoSelectionMarker; + else if (count === 1) + value = objj_msgSend(allValues, "objectAtIndex:", 0); + else + { + if (objj_msgSend(_controller, "alwaysUsesMultipleValuesMarker")) + value = CPMultipleValuesMarker; + else + { + value = objj_msgSend(allValues, "objectAtIndex:", 0); + + for (var i=0, count=objj_msgSend(allValues, "count"); i<count && value!=CPMultipleValuesMarker; i++) + { + if (!objj_msgSend(value, "isEqual:", objj_msgSend(allValues, "objectAtIndex:", i))) + value = CPMultipleValuesMarker; + } + } + } + + objj_msgSend(_cachedValues, "setValue:forKey:", value, aKey); + + return value; +} +},["id","CPString"]), new objj_method(sel_getUid("count"), function $CPControllerSelectionProxy__count(self, _cmd) +{ with(self) +{ + return objj_msgSend(_cachedValues, "count"); +} +},["unsigned"]), new objj_method(sel_getUid("keyEnumerator"), function $CPControllerSelectionProxy__keyEnumerator(self, _cmd) +{ with(self) +{ + return objj_msgSend(_cachedValues, "keyEnumerator"); +} +},["id"]), new objj_method(sel_getUid("setValue:forKey:"), function $CPControllerSelectionProxy__setValue_forKey_(self, _cmd, aValue, aKey) +{ with(self) +{ + objj_msgSend(objj_msgSend(_controller, "selectedObjects"), "setValue:forKey:", aValue, aKey); +} +},["void","id","CPString"]), new objj_method(sel_getUid("controllerWillChange"), function $CPControllerSelectionProxy__controllerWillChange(self, _cmd) +{ with(self) +{ + _keys = objj_msgSend(_cachedValues, "allKeys"); + + if (!_keys) + return; + + for (var i=0, count=_keys.length; i<count; i++) + objj_msgSend(self, "willChangeValueForKey:", _keys[i]); + + objj_msgSend(_cachedValues, "removeAllObjects"); +} +},["void"]), new objj_method(sel_getUid("controllerDidChange"), function $CPControllerSelectionProxy__controllerDidChange(self, _cmd) +{ with(self) +{ + objj_msgSend(_cachedValues, "removeAllObjects"); + + if (!_keys) + return; + + for (var i=0, count=_keys.length; i<count; i++) + objj_msgSend(self, "didChangeValueForKey:", _keys[i]); + + _keys = nil; +} +},["void"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $CPControllerSelectionProxy__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, change, context) +{ with(self) +{ + objj_msgSend(_cachedValues, "removeObjectForKey:", aKeyPath); +} +},["void","CPString","id","CPDictionary","id"]), new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"), function $CPControllerSelectionProxy__addObserver_forKeyPath_options_context_(self, _cmd, anObject, aKeyPath, options, context) +{ with(self) +{ + var proxy = objj_msgSend(objj_msgSend(_CPObservationProxy, "alloc"), "initWithKeyPath:observer:object:", aKeyPath, anObject, self); + + objj_msgSend(proxy, "setNotifyObject:", YES); + objj_msgSend(_observationProxies, "addObject:", proxy); + + objj_msgSend(objj_msgSend(_controller, "selectedObjects"), "addObserver:forKeyPath:options:context:", proxy, aKeyPath, options, context); +} +},["void","id","CPString","CPKeyValueObservingOptions","id"]), new objj_method(sel_getUid("removeObserver:forKeyPath:"), function $CPControllerSelectionProxy__removeObserver_forKeyPath_(self, _cmd, anObject, aKeyPath) +{ with(self) +{ + var proxy = objj_msgSend(objj_msgSend(_CPObservationProxy, "alloc"), "initWithKeyPath:observer:object:", aKeyPath, anObject, self), + index = objj_msgSend(_observationProxies, "indexOfObject:", proxy); + + objj_msgSend(objj_msgSend(_controller, "selectedObjects"), "removeObserver:forKeyPath:", objj_msgSend(_observationProxies, "objectAtIndex:", index), aKeyPath); + objj_msgSend(_observationProxies, "removeObjectAtIndex:", index); +} +},["void","id","CPString"])]); +} + +p;13;CPOpenPanel.jt;2958;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2918; + + +objj_executeFile("AppKit/CPPanel.j", NO); + + +{var the_class = objj_allocateClassPair(CPPanel, "CPOpenPanel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_canChooseFiles"), new objj_ivar("_canChooseDirectories"), new objj_ivar("_allowsMultipleSelection"), new objj_ivar("_directoryURL"), new objj_ivar("_URLs")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("canChooseFiles"), function $CPOpenPanel__canChooseFiles(self, _cmd) +{ with(self) +{ +return _canChooseFiles; +} +},["id"]), +new objj_method(sel_getUid("setCanChooseFiles:"), function $CPOpenPanel__setCanChooseFiles_(self, _cmd, newValue) +{ with(self) +{ +_canChooseFiles = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("canChooseDirectories"), function $CPOpenPanel__canChooseDirectories(self, _cmd) +{ with(self) +{ +return _canChooseDirectories; +} +},["id"]), +new objj_method(sel_getUid("setCanChooseDirectories:"), function $CPOpenPanel__setCanChooseDirectories_(self, _cmd, newValue) +{ with(self) +{ +_canChooseDirectories = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("allowsMultipleSelection"), function $CPOpenPanel__allowsMultipleSelection(self, _cmd) +{ with(self) +{ +return _allowsMultipleSelection; +} +},["id"]), +new objj_method(sel_getUid("setAllowsMultipleSelection:"), function $CPOpenPanel__setAllowsMultipleSelection_(self, _cmd, newValue) +{ with(self) +{ +_allowsMultipleSelection = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("directoryURL"), function $CPOpenPanel__directoryURL(self, _cmd) +{ with(self) +{ +return _directoryURL; +} +},["id"]), +new objj_method(sel_getUid("setDirectoryURL:"), function $CPOpenPanel__setDirectoryURL_(self, _cmd, newValue) +{ with(self) +{ +_directoryURL = newValue; +} +},["void","id"]), new objj_method(sel_getUid("runModal"), function $CPOpenPanel__runModal(self, _cmd) +{ with(self) +{ + if (typeof window["cpOpenPanel"] === "function") + { + + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + + var options = { directoryURL: objj_msgSend(self, "directoryURL"), + canChooseFiles: objj_msgSend(self, "canChooseFiles"), + canChooseDirectories: objj_msgSend(self, "canChooseDirectories"), + allowsMultipleSelection: objj_msgSend(self, "allowsMultipleSelection") }; + + var result = window.cpOpenPanel(options); + + _URLs = result.URLs; + + return result.button; + } + + throw "-runModal is unimplemented."; +} +},["CPInteger"]), new objj_method(sel_getUid("URLs"), function $CPOpenPanel__URLs(self, _cmd) +{ with(self) +{ + return _URLs; +} +},["CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("openPanel"), function $CPOpenPanel__openPanel(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPOpenPanel, "alloc"), "init"); +} +},["id"])]); +} + +p;15;CPOutlineView.jt;59053;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.jt;58995;objj_executeFile("CPTableColumn.j", YES); +objj_executeFile("CPTableView.j", YES); +CPOutlineViewColumnDidMoveNotification = "CPOutlineViewColumnDidMoveNotification"; +CPOutlineViewColumnDidResizeNotification = "CPOutlineViewColumnDidResizeNotification"; +CPOutlineViewItemDidCollapseNotification = "CPOutlineViewItemDidCollapseNotification"; +CPOutlineViewItemDidExpandNotification = "CPOutlineViewItemDidExpandNotification"; +CPOutlineViewItemWillCollapseNotification = "CPOutlineViewItemWillCollapseNotification"; +CPOutlineViewItemWillExpandNotification = "CPOutlineViewItemWillExpandNotification"; +CPOutlineViewSelectionDidChangeNotification = "CPOutlineViewSelectionDidChangeNotification"; +CPOutlineViewSelectionIsChangingNotification = "CPOutlineViewSelectionIsChangingNotification"; +var CPOutlineViewDataSource_outlineView_setObjectValue_forTableColumn_byItem_ = 1 << 1, + CPOutlineViewDataSource_outlineView_shouldDeferDisplayingChildrenOfItem_ = 1 << 2, + CPOutlineViewDataSource_outlineView_acceptDrop_item_childIndex_ = 1 << 3, + CPOutlineViewDataSource_outlineView_validateDrop_proposedItem_proposedChildIndex_ = 1 << 4, + CPOutlineViewDataSource_outlineView_validateDrop_proposedRow_proposedDropOperation_ = 1 << 5, + CPOutlineViewDataSource_outlineView_namesOfPromisedFilesDroppedAtDestination_forDraggedItems_ = 1 << 6, + CPOutlineViewDataSource_outlineView_itemForPersistentObject_ = 1 << 7, + CPOutlineViewDataSource_outlineView_persistentObjectForItem_ = 1 << 8, + CPOutlineViewDataSource_outlineView_writeItems_toPasteboard_ = 1 << 9, + CPOutlineViewDataSource_outlineView_sortDescriptorsDidChange_ = 1 << 10; +var CPOutlineViewDelegate_outlineView_dataViewForTableColumn_item_ = 1 << 1, + CPOutlineViewDelegate_outlineView_didClickTableColumn_ = 1 << 2, + CPOutlineViewDelegate_outlineView_didDragTableColumn_ = 1 << 3, + CPOutlineViewDelegate_outlineView_heightOfRowByItem_ = 1 << 4, + CPOutlineViewDelegate_outlineView_isGroupItem_ = 1 << 5, + CPOutlineViewDelegate_outlineView_mouseDownInHeaderOfTableColumn_ = 1 << 6, + CPOutlineViewDelegate_outlineView_nextTypeSelectMatchFromItem_toItem_forString_ = 1 << 7, + CPOutlineViewDelegate_outlineView_selectionIndexesForProposedSelection_ = 1 << 8, + CPOutlineViewDelegate_outlineView_shouldCollapseItem_ = 1 << 9, + CPOutlineViewDelegate_outlineView_shouldEditTableColumn_item_ = 1 << 10, + CPOutlineViewDelegate_outlineView_shouldExpandItem_ = 1 << 11, + CPOutlineViewDelegate_outlineView_shouldReorderColumn_toColumn_ = 1 << 12, + CPOutlineViewDelegate_outlineView_shouldSelectItem_ = 1 << 13, + CPOutlineViewDelegate_outlineView_shouldSelectTableColumn_ = 1 << 14, + CPOutlineViewDelegate_outlineView_shouldShowOutlineViewForItem_ = 1 << 15, + CPOutlineViewDelegate_outlineView_shouldShowViewExpansionForTableColumn_item_ = 1 << 16, + CPOutlineViewDelegate_outlineView_shouldTrackView_forTableColumn_item_ = 1 << 17, + CPOutlineViewDelegate_outlineView_shouldTypeSelectForEvent_withCurrentSearchString_ = 1 << 18, + CPOutlineViewDelegate_outlineView_sizeToFitWidthOfColumn_ = 1 << 19, + CPOutlineViewDelegate_outlineView_toolTipForView_rect_tableColumn_item_mouseLocation_ = 1 << 20, + CPOutlineViewDelegate_outlineView_typeSelectStringForTableColumn_item_ = 1 << 21, + CPOutlineViewDelegate_outlineView_willDisplayOutlineView_forTableColumn_item_ = 1 << 22, + CPOutlineViewDelegate_outlineView_willDisplayView_forTableColumn_item_ = 1 << 23, + CPOutlineViewDelegate_selectionShouldChangeInOutlineView_ = 1 << 24; +CPOutlineViewDropOnItemIndex = -1; +{var the_class = objj_allocateClassPair(CPTableView, "CPOutlineView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_outlineViewDataSource"), new objj_ivar("_outlineViewDelegate"), new objj_ivar("_outlineTableColumn"), new objj_ivar("_indentationPerLevel"), new objj_ivar("_indentationMarkerFollowsDataView"), new objj_ivar("_implementedOutlineViewDataSourceMethods"), new objj_ivar("_implementedOutlineViewDelegateMethods"), new objj_ivar("_rootItemInfo"), new objj_ivar("_itemsForRows"), new objj_ivar("_itemInfosForItems"), new objj_ivar("_disclosureControlPrototype"), new objj_ivar("_disclosureControlsForRows"), new objj_ivar("_disclosureControlData"), new objj_ivar("_disclosureControlQueue"), new objj_ivar("_shouldRetargetItem"), new objj_ivar("_retargetedItem"), new objj_ivar("_shouldRetargetChildIndex"), new objj_ivar("_retargedChildIndex"), new objj_ivar("_dragHoverTimer"), new objj_ivar("_dropItem")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPOutlineView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _selectionHighlightStyle = CPTableViewSelectionHighlightStyleSourceList; + _rootItemInfo = { isExpanded:YES, isExpandable:NO, level:-1, row:-1, children:[], weight:0 }; + _itemsForRows = []; + _itemInfosForItems = { }; + _disclosureControlsForRows = []; + _retargetedItem = nil; + _shouldRetargetItem = NO; + _retargedChildIndex = nil; + _shouldRetargetChildIndex = NO; + _startHoverTime = nil; + objj_msgSend(self, "setIndentationPerLevel:", 16.0); + objj_msgSend(self, "setIndentationMarkerFollowsDataView:", YES); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "setDataSource:", objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource, "alloc"), "initWithOutlineView:", self)); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "setDelegate:", objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDelegate, "alloc"), "initWithOutlineView:", self)); + objj_msgSend(self, "setDisclosureControlPrototype:", objj_msgSend(objj_msgSend(CPDisclosureButton, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 10.0, 10.0))); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setDataSource:"), function $CPOutlineView__setDataSource_(self, _cmd, aDataSource) +{ with(self) +{ + if (_outlineViewDataSource === aDataSource) + return; + if (!objj_msgSend(aDataSource, "respondsToSelector:", sel_getUid("outlineView:child:ofItem:"))) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Data source must implement 'outlineView:child:ofItem:'"); + if (!objj_msgSend(aDataSource, "respondsToSelector:", sel_getUid("outlineView:isItemExpandable:"))) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Data source must implement 'outlineView:isItemExpandable:'"); + if (!objj_msgSend(aDataSource, "respondsToSelector:", sel_getUid("outlineView:numberOfChildrenOfItem:"))) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Data source must implement 'outlineView:numberOfChildrenOfItem:'"); + if (!objj_msgSend(aDataSource, "respondsToSelector:", sel_getUid("outlineView:objectValueForTableColumn:byItem:"))) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Data source must implement 'outlineView:objectValueForTableColumn:byItem:'"); + _outlineViewDataSource = aDataSource; + _implementedOutlineViewDataSourceMethods = 0; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:setObjectValue:forTableColumn:byItem:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_setObjectValue_forTableColumn_byItem_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:shouldDeferDisplayingChildrenOfItem:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_shouldDeferDisplayingChildrenOfItem_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:acceptDrop:item:childIndex:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_acceptDrop_item_childIndex_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:validateDrop:proposedItem:proposedChildIndex:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_validateDrop_proposedItem_proposedChildIndex_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:validateDrop:proposedRow:proposedDropOperation:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_validateDrop_proposedRow_proposedDropOperation_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_namesOfPromisedFilesDroppedAtDestination_forDraggedItems_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:itemForPersistentObject:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_itemForPersistentObject_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:persistentObjectForItem:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_persistentObjectForItem_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:writeItems:toPasteboard:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_writeItems_toPasteboard_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:sortDescriptorsDidChange:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_sortDescriptorsDidChange_; + objj_msgSend(self, "reloadData"); +} +},["void","id"]), new objj_method(sel_getUid("dataSource"), function $CPOutlineView__dataSource(self, _cmd) +{ with(self) +{ + return _outlineViewDataSource; +} +},["id"]), new objj_method(sel_getUid("isExpandable:"), function $CPOutlineView__isExpandable_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return YES; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return NO; + return itemInfo.isExpandable; +} +},["BOOL","id"]), new objj_method(sel_getUid("isItemExpanded:"), function $CPOutlineView__isItemExpanded_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return YES; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return NO; + return itemInfo.isExpanded; +} +},["void","id"]), new objj_method(sel_getUid("expandItem:"), function $CPOutlineView__expandItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(self, "expandItem:expandChildren:", anItem, NO); +} +},["void","id"]), new objj_method(sel_getUid("expandItem:expandChildren:"), function $CPOutlineView__expandItem_expandChildren_(self, _cmd, anItem, shouldExpandChildren) +{ with(self) +{ + var itemInfo = null; + if (!anItem) + itemInfo = _rootItemInfo; + else + itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return; + if (!itemInfo.isExpanded) + { + objj_msgSend(self, "_noteItemWillExpand:", anItem); + itemInfo.isExpanded = YES; + objj_msgSend(self, "_noteItemDidExpand:", anItem); + objj_msgSend(self, "reloadItem:reloadChildren:", anItem, YES); + } + if (shouldExpandChildren) + { + var children = itemInfo.children, + childIndex = children.length; + while (childIndex--) + objj_msgSend(self, "expandItem:expandChildren:", children[childIndex], YES); + } +} +},["void","id","BOOL"]), new objj_method(sel_getUid("collapseItem:"), function $CPOutlineView__collapseItem_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return; + if (!itemInfo.isExpanded) + return; + objj_msgSend(self, "_noteItemWillCollapse:", anItem); + itemInfo.isExpanded = NO; + objj_msgSend(self, "_noteItemDidCollapse:", anItem); + objj_msgSend(self, "reloadItem:reloadChildren:", anItem, YES); +} +},["void","id"]), new objj_method(sel_getUid("reloadItem:"), function $CPOutlineView__reloadItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(self, "reloadItem:reloadChildren:", anItem, NO); +} +},["void","id"]), new objj_method(sel_getUid("reloadItem:reloadChildren:"), function $CPOutlineView__reloadItem_reloadChildren_(self, _cmd, anItem, shouldReloadChildren) +{ with(self) +{ + if (!!shouldReloadChildren || !anItem) + _loadItemInfoForItem(self, anItem); + else + _reloadItem(self, anItem); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "reloadData"); +} +},["void","id","BOOL"]), new objj_method(sel_getUid("itemAtRow:"), function $CPOutlineView__itemAtRow_(self, _cmd, aRow) +{ with(self) +{ + return _itemsForRows[aRow] || nil; +} +},["id","CPInteger"]), new objj_method(sel_getUid("rowForItem:"), function $CPOutlineView__rowForItem_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return _rootItemInfo.row; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return CPNotFound; + return itemInfo.row; +} +},["CPInteger","id"]), new objj_method(sel_getUid("setOutlineTableColumn:"), function $CPOutlineView__setOutlineTableColumn_(self, _cmd, aTableColumn) +{ with(self) +{ + if (_outlineTableColumn === aTableColumn) + return; + _outlineTableColumn = aTableColumn; + objj_msgSend(self, "reloadData"); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("outlineTableColumn"), function $CPOutlineView__outlineTableColumn(self, _cmd) +{ with(self) +{ + return _outlineTableColumn; +} +},["CPTableColumn"]), new objj_method(sel_getUid("levelForItem:"), function $CPOutlineView__levelForItem_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return _rootItemInfo.level; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return CPNotFound; + return itemInfo.level; +} +},["CPInteger","id"]), new objj_method(sel_getUid("levelForRow:"), function $CPOutlineView__levelForRow_(self, _cmd, aRow) +{ with(self) +{ + return objj_msgSend(self, "levelForItem:", objj_msgSend(self, "itemAtRow:", aRow)); +} +},["CPInteger","CPInteger"]), new objj_method(sel_getUid("setIndentationPerLevel:"), function $CPOutlineView__setIndentationPerLevel_(self, _cmd, anIndentationWidth) +{ with(self) +{ + if (_indentationPerLevel === anIndentationWidth) + return; + _indentationPerLevel = anIndentationWidth; + objj_msgSend(self, "reloadData"); +} +},["void","float"]), new objj_method(sel_getUid("indentationPerLevel"), function $CPOutlineView__indentationPerLevel(self, _cmd) +{ with(self) +{ + return _indentationPerLevel; +} +},["float"]), new objj_method(sel_getUid("setIndentationMarkerFollowsDataView:"), function $CPOutlineView__setIndentationMarkerFollowsDataView_(self, _cmd, indentationMarkerShouldFollowDataView) +{ with(self) +{ + if (_indentationMarkerFollowsDataView === indentationMarkerShouldFollowDataView) + return; + _indentationMarkerFollowsDataView = indentationMarkerShouldFollowDataView; + objj_msgSend(self, "reloadData"); +} +},["void","BOOL"]), new objj_method(sel_getUid("indentationMarkerFollowsDataView"), function $CPOutlineView__indentationMarkerFollowsDataView(self, _cmd) +{ with(self) +{ + return _indentationMarkerFollowsDataView; +} +},["BOOL"]), new objj_method(sel_getUid("parentForItem:"), function $CPOutlineView__parentForItem_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return nil; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return nil; + var parent = itemInfo.parent; + if (itemInfo[objj_msgSend(parent, "UID")] === _rootItemInfo) + parent = nil; + return parent; +} +},["id","id"]), new objj_method(sel_getUid("frameOfOutlineDataViewAtColumn:row:"), function $CPOutlineView__frameOfOutlineDataViewAtColumn_row_(self, _cmd, aColumn, aRow) +{ with(self) +{ + var frame = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "frameOfDataViewAtColumn:row:", aColumn, aRow), + indentationWidth = (objj_msgSend(self, "levelForRow:", aRow) + 1) * objj_msgSend(self, "indentationPerLevel"); + frame.origin.x += indentationWidth; + frame.size.width -= indentationWidth; + return frame; +} +},["CGRect","CPInteger","CPInteger"]), new objj_method(sel_getUid("_performSelection:forRow:context:"), function $CPOutlineView___performSelection_forRow_context_(self, _cmd, select, rowIndex, context) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_performSelection:forRow:context:", select, rowIndex, context); + var control = _disclosureControlsForRows[rowIndex], + selector = select ? "setThemeState:" : "unsetThemeState:"; + objj_msgSend(control, "performSelector:withObject:", CPSelectorFromString(selector), CPThemeStateSelected); +} +},["void","BOOL","CPInteger","id"]), new objj_method(sel_getUid("setDelegate:"), function $CPOutlineView__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_outlineViewDelegate === aDelegate) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_outlineViewDelegate) + { + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewColumnDidMove:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewColumnDidMoveNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewColumnDidResize:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewColumnDidResizeNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewSelectionDidChange:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewSelectionDidChangeNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewSelectionIsChanging:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewSelectionIsChangingNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemWillExpand:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewItemWillExpandNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemDidExpand:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewItemDidExpandNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemWillCollapse:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewItemWillCollapseNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemDidCollapse:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewItemDidCollapseNotification, self); + } + _outlineViewDelegate = aDelegate; + _implementedOutlineViewDelegateMethods = 0; + var delegateMethods = [ + CPOutlineViewDelegate_outlineView_dataViewForTableColumn_item_ , sel_getUid("outlineView:dataViewForTableColumn:item:"), + CPOutlineViewDelegate_outlineView_didClickTableColumn_ , sel_getUid("outlineView:didClickTableColumn:"), + CPOutlineViewDelegate_outlineView_didDragTableColumn_ , sel_getUid("outlineView:didDragTableColumn:"), + CPOutlineViewDelegate_outlineView_heightOfRowByItem_ , sel_getUid("outlineView:heightOfRowByItem:"), + CPOutlineViewDelegate_outlineView_isGroupItem_ , sel_getUid("outlineView:isGroupItem:"), + CPOutlineViewDelegate_outlineView_mouseDownInHeaderOfTableColumn_ , sel_getUid("outlineView:mouseDownInHeaderOfTableColumn:"), + CPOutlineViewDelegate_outlineView_nextTypeSelectMatchFromItem_toItem_forString_ , sel_getUid("outlineView:nextTypeSelectMatchFromItem:toItem:forString:"), + CPOutlineViewDelegate_outlineView_selectionIndexesForProposedSelection_ , sel_getUid("outlineView:selectionIndexesForProposedSelection:"), + CPOutlineViewDelegate_outlineView_shouldCollapseItem_ , sel_getUid("outlineView:shouldCollapseItem:"), + CPOutlineViewDelegate_outlineView_shouldEditTableColumn_item_ , sel_getUid("outlineView:shouldEditTableColumn:item:"), + CPOutlineViewDelegate_outlineView_shouldExpandItem_ , sel_getUid("outlineView:shouldExpandItem:"), + CPOutlineViewDelegate_outlineView_shouldReorderColumn_toColumn_ , sel_getUid("outlineView:shouldReorderColumn:toColumn:"), + CPOutlineViewDelegate_outlineView_shouldSelectItem_ , sel_getUid("outlineView:shouldSelectItem:"), + CPOutlineViewDelegate_outlineView_shouldSelectTableColumn_ , sel_getUid("outlineView:shouldSelectTableColumn:"), + CPOutlineViewDelegate_outlineView_shouldShowOutlineViewForItem_ , sel_getUid("outlineView:shouldShowOutlineViewForItem:"), + CPOutlineViewDelegate_outlineView_shouldShowViewExpansionForTableColumn_item_ , sel_getUid("outlineView:shouldShowViewExpansionForTableColumn:item:"), + CPOutlineViewDelegate_outlineView_shouldTrackView_forTableColumn_item_ , sel_getUid("outlineView:shouldTrackView:forTableColumn:item:"), + CPOutlineViewDelegate_outlineView_shouldTypeSelectForEvent_withCurrentSearchString_ , sel_getUid("outlineView:shouldTypeSelectForEvent:withCurrentSearchString:"), + CPOutlineViewDelegate_outlineView_sizeToFitWidthOfColumn_ , sel_getUid("outlineView:sizeToFitWidthOfColumn:"), + CPOutlineViewDelegate_outlineView_toolTipForView_rect_tableColumn_item_mouseLocation_, sel_getUid("outlineView:toolTipForView:rect:tableColumn:item:mouseLocation:"), + CPOutlineViewDelegate_outlineView_typeSelectStringForTableColumn_item_ , sel_getUid("outlineView:typeSelectStringForTableColumn:item:"), + CPOutlineViewDelegate_outlineView_willDisplayOutlineView_forTableColumn_item_ , sel_getUid("outlineView:willDisplayOutlineView:forTableColumn:item:"), + CPOutlineViewDelegate_outlineView_willDisplayView_forTableColumn_item_ , sel_getUid("outlineView:willDisplayView:forTableColumn:item:"), + CPOutlineViewDelegate_selectionShouldChangeInOutlineView_ , sel_getUid("selectionShouldChangeInOutlineView:") + ], + delegateCount = objj_msgSend(delegateMethods, "count"); + for (var i=0; i < delegateCount; i += 2) + { + var bitMask = delegateMethods[i], + selector = delegateMethods[i+1]; + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", selector)) + _implementedOutlineViewDelegateMethods |= bitMask; + } + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewColumnDidMove:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewColumnDidMove:"), CPOutlineViewColumnDidMoveNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewColumnDidResize:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewColumnDidMove:"), CPOutlineViewColumnDidResizeNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewSelectionDidChange:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewSelectionDidChange:"), CPOutlineViewSelectionDidChangeNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewSelectionIsChanging:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewSelectionIsChanging:"), CPOutlineViewSelectionIsChangingNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemWillExpand:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewItemWillExpand:"), CPOutlineViewItemWillExpandNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemDidExpand:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewItemDidExpand:"), CPOutlineViewItemDidExpandNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemWillCollapse:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewItemWillCollapse:"), CPOutlineViewItemWillCollapseNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemDidCollapse:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewItemDidCollapse:"), CPOutlineViewItemDidCollapseNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPOutlineView__delegate(self, _cmd) +{ with(self) +{ + return _outlineViewDelegate; +} +},["id"]), new objj_method(sel_getUid("setDisclosureControlPrototype:"), function $CPOutlineView__setDisclosureControlPrototype_(self, _cmd, aControl) +{ with(self) +{ + _disclosureControlPrototype = aControl; + _disclosureControlData = nil; + _disclosureControlQueue = []; + objj_msgSend(self, "reloadData"); +} +},["void","CPControl"]), new objj_method(sel_getUid("reloadData"), function $CPOutlineView__reloadData(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "reloadItem:reloadChildren:", nil, YES); +} +},["void"]), new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"), function $CPOutlineView__frameOfDataViewAtColumn_row_(self, _cmd, aColumn, aRow) +{ with(self) +{ + var tableColumn = objj_msgSend(self, "tableColumns")[aColumn]; + if (tableColumn === _outlineTableColumn) + return objj_msgSend(self, "frameOfOutlineDataViewAtColumn:row:", aColumn, aRow); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "frameOfDataViewAtColumn:row:", aColumn, aRow); +} +},["CGRect","CPInteger","CPInteger"]), new objj_method(sel_getUid("setDropItem:dropChildIndex:"), function $CPOutlineView__setDropItem_dropChildIndex_(self, _cmd, theItem, theIndex) +{ with(self) +{ + if (_dropItem !== theItem && theIndex < 0 && objj_msgSend(self, "isExpandable:", theItem) && !objj_msgSend(self, "isItemExpanded:", theItem)) + { + if (_dragHoverTimer) + objj_msgSend(_dragHoverTimer, "invalidate"); + var autoExpandCallBack = function(){ + if (_dropItem) + { + objj_msgSend(_dropOperationFeedbackView, "blink"); + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", .3, objj_msgSend(self, "expandItem:", _dropItem), NO); + } + } + _dragHoverTimer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", .8, autoExpandCallBack, NO); + } + if (theIndex >= 0) + { + objj_msgSend(_dragHoverTimer, "invalidate"); + _dragHoverTimer = nil; + } + _dropItem = theItem; + _retargetedItem = theItem; + _shouldRetargetItem = YES; + _retargedChildIndex = theIndex; + _shouldRetargetChildIndex = YES; + var retargetedItemInfo = (_retargetedItem !== nil) ? _itemInfosForItems[objj_msgSend(_retargetedItem, "UID")] : _rootItemInfo; + if (_retargedChildIndex === objj_msgSend(retargetedItemInfo.children, "count")) + { + var retargetedChildItem = objj_msgSend(retargetedItemInfo.children, "lastObject"); + _retargetedDropRow = objj_msgSend(self, "rowForItem:", retargetedChildItem) + 1; + } + else + { + var retargetedChildItem = (_retargedChildIndex !== CPOutlineViewDropOnItemIndex) ? retargetedItemInfo.children[_retargedChildIndex] : _retargetedItem; + _retargetedDropRow = objj_msgSend(self, "rowForItem:", retargetedChildItem); + } +} +},["void","id","int"]), new objj_method(sel_getUid("_draggingEnded"), function $CPOutlineView___draggingEnded(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_draggingEnded"); + _dropItem = nil; + objj_msgSend(_dragHoverTimer, "invalidate"); + _dragHoverTimer = nil; +} +},["void"]), new objj_method(sel_getUid("_parentItemForUpperRow:andLowerRow:atMouseOffset:"), function $CPOutlineView___parentItemForUpperRow_andLowerRow_atMouseOffset_(self, _cmd, theUpperRowIndex, theLowerRowIndex, theOffset) +{ with(self) +{ + if (_shouldRetargetItem) + return _retargetedItem; + var lowerLevel = objj_msgSend(self, "levelForRow:", theLowerRowIndex) + upperItem = objj_msgSend(self, "itemAtRow:", theUpperRowIndex); + upperLevel = objj_msgSend(self, "levelForItem:", upperItem); + while (upperLevel > lowerLevel) + { + upperLevel = objj_msgSend(self, "levelForItem:", upperItem); + if (theOffset.x > (upperLevel + 1) * objj_msgSend(self, "indentationPerLevel")) + return objj_msgSend(self, "parentForItem:", upperItem); + upperItem = objj_msgSend(self, "parentForItem:", upperItem); + } + return objj_msgSend(self, "parentForItem:", objj_msgSend(self, "itemAtRow:", theLowerRowIndex)); +} +},["id","int","int","CPPoint"]), new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"), function $CPOutlineView___rectForDropHighlightViewBetweenUpperRow_andLowerRow_offset_(self, _cmd, theUpperRowIndex, theLowerRowIndex, theOffset) +{ with(self) +{ + var rect = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:", theUpperRowIndex, theLowerRowIndex, theOffset), + parentItem = objj_msgSend(self, "_parentItemForUpperRow:andLowerRow:atMouseOffset:", theUpperRowIndex, theLowerRowIndex, theOffset), + level = objj_msgSend(self, "levelForItem:", parentItem); + rect.origin.x = (level + 1) * objj_msgSend(self, "indentationPerLevel"); + rect.size.width -= rect.origin.x; + return rect; +} +},["CPRect","int","int","CPPoint"]), new objj_method(sel_getUid("_loadDataViewsInRows:columns:"), function $CPOutlineView___loadDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_loadDataViewsInRows:columns:", rows, columns); + var outlineColumn = objj_msgSend(objj_msgSend(self, "tableColumns"), "indexOfObjectIdenticalTo:", objj_msgSend(self, "outlineTableColumn")); + if (!objj_msgSend(columns, "containsIndex:", outlineColumn)) + return; + var rowArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + var rowIndex = 0, + rowsCount = rowArray.length; + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + item = _itemsForRows[row], + isExpandable = objj_msgSend(self, "isExpandable:", item); + if (!isExpandable) + continue; + var control = objj_msgSend(self, "_dequeueDisclosureControl"), + frame = objj_msgSend(control, "frame"), + dataViewFrame = objj_msgSend(self, "frameOfDataViewAtColumn:row:", outlineColumn, row); + frame.origin.x = _indentationMarkerFollowsDataView ? (dataViewFrame.origin.x) - (frame.size.width) : 0.0; + frame.origin.y = (dataViewFrame.origin.y); + frame.size.height = (dataViewFrame.size.height); + _disclosureControlsForRows[row] = control; + objj_msgSend(control, "setState:", objj_msgSend(self, "isItemExpanded:", item) ? CPOnState : CPOffState); + var selector = objj_msgSend(self, "isRowSelected:", row) ? "setThemeState:" : "unsetThemeState:"; + objj_msgSend(control, "performSelector:withObject:", CPSelectorFromString(selector), CPThemeStateSelected); + objj_msgSend(control, "setFrame:", frame); + objj_msgSend(self, "addSubview:", control); + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"), function $CPOutlineView___unloadDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_unloadDataViewsInRows:columns:", rows, columns); + var outlineColumn = objj_msgSend(objj_msgSend(self, "tableColumns"), "indexOfObjectIdenticalTo:", objj_msgSend(self, "outlineTableColumn")); + if (!objj_msgSend(columns, "containsIndex:", outlineColumn)) + return; + var rowArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + var rowIndex = 0, + rowsCount = rowArray.length; + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + control = _disclosureControlsForRows[row]; + if (!control) + continue; + objj_msgSend(control, "removeFromSuperview"); + objj_msgSend(self, "_enqueueDisclosureControl:", control); + _disclosureControlsForRows[row] = nil; + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_toggleFromDisclosureControl:"), function $CPOutlineView___toggleFromDisclosureControl_(self, _cmd, aControl) +{ with(self) +{ + var controlFrame = objj_msgSend(aControl, "frame"), + item = objj_msgSend(self, "itemAtRow:", objj_msgSend(self, "rowAtPoint:", { x:(controlFrame.origin.x), y:(controlFrame.origin.y + (controlFrame.size.height) / 2.0) })); + if (objj_msgSend(self, "isItemExpanded:", item)) + objj_msgSend(self, "collapseItem:", item); + else + objj_msgSend(self, "expandItem:", item); +} +},["void","CPControl"]), new objj_method(sel_getUid("_enqueueDisclosureControl:"), function $CPOutlineView___enqueueDisclosureControl_(self, _cmd, aControl) +{ with(self) +{ + _disclosureControlQueue.push(aControl); +} +},["void","CPControl"]), new objj_method(sel_getUid("_dequeueDisclosureControl"), function $CPOutlineView___dequeueDisclosureControl(self, _cmd) +{ with(self) +{ + if (_disclosureControlQueue.length) + return _disclosureControlQueue.pop(); + if (!_disclosureControlData) + if (!_disclosureControlPrototype) + return nil; + else + _disclosureControlData = objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _disclosureControlPrototype); + var disclosureControl = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", _disclosureControlData); + objj_msgSend(disclosureControl, "setTarget:", self); + objj_msgSend(disclosureControl, "setAction:", sel_getUid("_toggleFromDisclosureControl:")); + return disclosureControl; +} +},["CPControl"]), new objj_method(sel_getUid("_noteSelectionIsChanging"), function $CPOutlineView___noteSelectionIsChanging(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewSelectionIsChangingNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_noteSelectionDidChange"), function $CPOutlineView___noteSelectionDidChange(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewSelectionDidChangeNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_noteItemWillExpand:"), function $CPOutlineView___noteItemWillExpand_(self, _cmd, item) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewItemWillExpandNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", item, "CPObject")); +} +},["void","id"]), new objj_method(sel_getUid("_noteItemDidExpand:"), function $CPOutlineView___noteItemDidExpand_(self, _cmd, item) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewItemDidExpandNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", item, "CPObject")); +} +},["void","id"]), new objj_method(sel_getUid("_noteItemWillCollapse:"), function $CPOutlineView___noteItemWillCollapse_(self, _cmd, item) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewItemWillCollapseNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", item, "CPObject")); +} +},["void","id"]), new objj_method(sel_getUid("_noteItemDidCollapse:"), function $CPOutlineView___noteItemDidCollapse_(self, _cmd, item) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewItemDidCollapseNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", item, "CPObject")); +} +},["void","id"])]); +} +var _reloadItem = function( anOutlineView, anItem) +{ + if (!anItem) + return; + with(anOutlineView) + { + var itemInfosForItems = _itemInfosForItems, + dataSource = _outlineViewDataSource, + itemUID = objj_msgSend(anItem, "UID"), + itemInfo = itemInfosForItems[itemUID]; + if (!itemInfo) + return []; + var parent = itemInfo.parent, + parentItemInfo = parent ? itemInfosForItems[objj_msgSend(parent, "UID")] : _rootItemInfo, + parentChildren = parentItemInfo.children, + index = objj_msgSend(parentChildren, "indexOfObjectIdenticalTo:", anItem), + newItem = objj_msgSend(dataSource, "outlineView:child:ofItem:", anOutlineView, index, parent); + if (anItem !== newItem) + { + itemInfosForItems[objj_msgSend(anItem, "UID")] = nil; + itemInfosForItems[objj_msgSend(newItem, "UID")] = itemInfo; + parentChildren[index] = newItem; + _itemsForRows[itemInfo.row] = newItem; + } + itemInfo.isExpandable = objj_msgSend(dataSource, "outlineView:isItemExpandable:", anOutlineView, newItem); + itemInfo.isExpanded = itemInfo.isExpandable && itemInfo.isExpanded; + } +} +var _loadItemInfoForItem = function( anOutlineView, anItem, isIntermediate) +{ + with(anOutlineView) + { + var itemInfosForItems = _itemInfosForItems, + dataSource = _outlineViewDataSource; + if (!anItem) + var itemInfo = _rootItemInfo; + else + { + var itemUID = objj_msgSend(anItem, "UID"), + itemInfo = itemInfosForItems[itemUID]; + if (!itemInfo) + return []; + itemInfo.isExpandable = objj_msgSend(dataSource, "outlineView:isItemExpandable:", anOutlineView, anItem); + if (!itemInfo.isExpandable && itemInfo.isExpanded) + { + itemInfo.isExpanded = NO; + itemInfo.children = []; + } + } + var weight = itemInfo.weight, + descendants = anItem ? [anItem] : []; + if (itemInfo.isExpanded && (!(_implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_shouldDeferDisplayingChildrenOfItem_) || + !objj_msgSend(dataSource, "outlineView:shouldDeferDisplayingChildrenOfItem:", anOutlineView, anItem))) + { + var index = 0, + count = objj_msgSend(dataSource, "outlineView:numberOfChildrenOfItem:", anOutlineView, anItem), + level = itemInfo.level + 1; + itemInfo.children = []; + for (; index < count; ++index) + { + var childItem = objj_msgSend(dataSource, "outlineView:child:ofItem:", anOutlineView, index, anItem), + childItemInfo = itemInfosForItems[objj_msgSend(childItem, "UID")]; + if (!childItemInfo) + { + childItemInfo = { isExpanded:NO, isExpandable:NO, children:[], weight:1 }; + itemInfosForItems[objj_msgSend(childItem, "UID")] = childItemInfo; + } + itemInfo.children[index] = childItem; + var childDescendants = _loadItemInfoForItem(anOutlineView, childItem, YES); + childItemInfo.parent = anItem; + childItemInfo.level = level; + descendants = descendants.concat(childDescendants); + } + } + itemInfo.weight = descendants.length; + if (!isIntermediate) + { + var index = MAX(itemInfo.row, 0), + itemsForRows = _itemsForRows; + descendants.unshift(index, weight); + itemsForRows.splice.apply(itemsForRows, descendants); + var count = itemsForRows.length; + for (; index < count; ++index) + itemInfosForItems[objj_msgSend(itemsForRows[index], "UID")].row = index; + var deltaWeight = itemInfo.weight - weight; + if (deltaWeight !== 0) + { + var parent = itemInfo.parent; + while (parent) + { + var parentItemInfo = itemInfosForItems[objj_msgSend(parent, "UID")]; + parentItemInfo.weight += deltaWeight; + parent = parentItemInfo.parent; + } + if (anItem) + _rootItemInfo.weight += deltaWeight; + } + } + } + return descendants; +} +{var the_class = objj_allocateClassPair(CPObject, "_CPOutlineViewTableViewDataSource"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_outlineView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithOutlineView:"), function $_CPOutlineViewTableViewDataSource__initWithOutlineView_(self, _cmd, anOutlineView) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPOutlineViewTableViewDataSource").super_class }, "init"); + if (self) + _outlineView = anOutlineView; + return self; +} +},["id","CPOutlineView"]), new objj_method(sel_getUid("numberOfRowsInTableView:"), function $_CPOutlineViewTableViewDataSource__numberOfRowsInTableView_(self, _cmd, anOutlineView) +{ with(self) +{ + return _outlineView._itemsForRows.length; +} +},["CPInteger","CPTableView"]), new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"), function $_CPOutlineViewTableViewDataSource__tableView_objectValueForTableColumn_row_(self, _cmd, aTableView, aTableColumn, aRow) +{ with(self) +{ + return objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:objectValueForTableColumn:byItem:", _outlineView, aTableColumn, _outlineView._itemsForRows[aRow]); +} +},["id","CPTableView","CPTableColumn","CPInteger"]), new objj_method(sel_getUid("tableView:setObjectValue:forTableColumn:row:"), function $_CPOutlineViewTableViewDataSource__tableView_setObjectValue_forTableColumn_row_(self, _cmd, aTableView, aValue, aColumn, aRow) +{ with(self) +{ + if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_setObjectValue_forTableColumn_byItem_)) + return; + objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:setObjectValue:forTableColumn:byItem:", _outlineView, aValue, aColumn, _outlineView._itemsForRows[aRow]); +} +},["void","CPTableView","id","CPTableColumn","CPInteger"]), new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"), function $_CPOutlineViewTableViewDataSource__tableView_writeRowsWithIndexes_toPasteboard_(self, _cmd, aTableColumn, theIndexes, thePasteboard) +{ with(self) +{ + if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_writeItems_toPasteboard_)) + return NO; + var rowIndexes = []; + objj_msgSend(theIndexes, "getIndexes:maxCount:inIndexRange:", rowIndexes, objj_msgSend(theIndexes, "count"), nil); + var rowIndex = objj_msgSend(rowIndexes, "count"), + items = []; + while (rowIndex--) + objj_msgSend(items, "addObject:", objj_msgSend(_outlineView, "itemAtRow:", objj_msgSend(rowIndexes, "objectAtIndex:", rowIndex))); + return objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:writeItems:toPasteboard:", _outlineView, items, thePasteboard); +} +},["BOOL","CPTableView","CPIndexSet","CPPasteboard"]), new objj_method(sel_getUid("_childIndexForDropOperation:row:offset:"), function $_CPOutlineViewTableViewDataSource___childIndexForDropOperation_row_offset_(self, _cmd, theDropOperation, theRow, theOffset) +{ with(self) +{ + if (_outlineView._shouldRetargetChildIndex) + return _outlineView._retargedChildIndex; + var childIndex = CPNotFound; + if (theDropOperation === CPTableViewDropAbove) + { + var parentItem = objj_msgSend(_outlineView, "_parentItemForUpperRow:andLowerRow:atMouseOffset:", theRow - 1, theRow, theOffset), + itemInfo = (parentItem !== nil) ? _outlineView._itemInfosForItems[objj_msgSend(parentItem, "UID")] : _outlineView._rootItemInfo, + children = itemInfo.children; + childIndex = objj_msgSend(children, "indexOfObject:", objj_msgSend(_outlineView, "itemAtRow:", theRow)); + if (childIndex === CPNotFound) + childIndex = children.length; + } + else if (theDropOperation === CPTableViewDropOn) + childIndex = -1; + return childIndex; +} +},["int","CPTableViewDropOperation","int","CPPoint"]), new objj_method(sel_getUid("_parentItemForDropOperation:row:offset:"), function $_CPOutlineViewTableViewDataSource___parentItemForDropOperation_row_offset_(self, _cmd, theDropOperation, theRow, theOffset) +{ with(self) +{ + if (theDropOperation === CPTableViewDropAbove) + return objj_msgSend(_outlineView, "_parentItemForUpperRow:andLowerRow:atMouseOffset:", theRow - 1, theRow, theOffset) + return objj_msgSend(_outlineView, "itemAtRow:", theRow); +} +},["void","CPTableViewDropOperation","int","CPPoint"]), new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"), function $_CPOutlineViewTableViewDataSource__tableView_validateDrop_proposedRow_proposedDropOperation_(self, _cmd, aTableView, theInfo, theRow, theOperation) +{ with(self) +{ + if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_validateDrop_proposedItem_proposedChildIndex_)) + return CPDragOperationNone; + _outlineView._retargetedItem = nil; + _outlineView._shouldRetargetItem = NO; + _outlineView._retargedChildIndex = nil; + _outlineView._shouldRetargetChildIndex = NO; + var location = objj_msgSend(_outlineView, "convertPoint:fromView:", objj_msgSend(theInfo, "draggingLocation"), nil), + parentItem = objj_msgSend(self, "_parentItemForDropOperation:row:offset:", theOperation, theRow, location), + childIndex = objj_msgSend(self, "_childIndexForDropOperation:row:offset:", theOperation, theRow, location); + return objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:validateDrop:proposedItem:proposedChildIndex:", _outlineView, theInfo, parentItem, childIndex); +} +},["CPDragOperation","CPTableView","id<CPDraggingInfo>","int","CPTableViewDropOperation"]), new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"), function $_CPOutlineViewTableViewDataSource__tableView_acceptDrop_row_dropOperation_(self, _cmd, aTableView, theInfo, theRow, theOperation) +{ with(self) +{ + if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_acceptDrop_item_childIndex_)) + return NO; + var location = objj_msgSend(_outlineView, "convertPoint:fromView:", objj_msgSend(theInfo, "draggingLocation"), nil), + parentItem = objj_msgSend(self, "_parentItemForDropOperation:row:offset:", theOperation, theRow, location); + childIndex = objj_msgSend(self, "_childIndexForDropOperation:row:offset:", theOperation, theRow, location); + _outlineView._retargetedItem = nil; + _outlineView._shouldRetargetItem = NO; + _outlineView._retargedChildIndex = nil; + _outlineView._shouldRetargetChildIndex = NO; + return objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:acceptDrop:item:childIndex:", _outlineView, theInfo, parentItem, childIndex); +} +},["BOOL","CPTableView","id<CPDraggingInfo>","int","CPTableViewDropOperation"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPOutlineViewTableViewDelegate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_outlineView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithOutlineView:"), function $_CPOutlineViewTableViewDelegate__initWithOutlineView_(self, _cmd, anOutlineView) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPOutlineViewTableViewDelegate").super_class }, "init"); + if (self) + _outlineView = anOutlineView; + return self; +} +},["id","CPOutlineView"]), new objj_method(sel_getUid("tableView:dataViewForTableColumn:row:"), function $_CPOutlineViewTableViewDelegate__tableView_dataViewForTableColumn_row_(self, _cmd, theTableView, theTableColumn, theRow) +{ with(self) +{ + var dataView = nil; + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_dataViewForTableColumn_item_)) + dataView = objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:dataViewForTableColumn:item:", _outlineView, theTableColumn, objj_msgSend(_outlineView, "itemAtRow:", theRow)); + if (!dataView) + dataView = objj_msgSend(theTableColumn, "dataViewForRow:", theRow); + return dataView; +} +},["CPView","CPTableView","CPTableColumn","int"]), new objj_method(sel_getUid("tableView:shouldSelectRow:"), function $_CPOutlineViewTableViewDelegate__tableView_shouldSelectRow_(self, _cmd, theTableView, theRow) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_shouldSelectItem_)) + return objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:shouldSelectItem:", _outlineView, objj_msgSend(_outlineView, "itemAtRow:", theRow)); + return YES; +} +},["BOOL","CPTableView","int"]), new objj_method(sel_getUid("tableView:shouldEditTableColumn:row:"), function $_CPOutlineViewTableViewDelegate__tableView_shouldEditTableColumn_row_(self, _cmd, aTableView, aColumn, aRow) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_shouldEditTableColumn_item_)) + return objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:shouldEditTableColumn:item:", _outlineView, aColumn, objj_msgSend(_outlineView, "itemAtRow:", aRow)); + return NO; +} +},["BOOL","CPTableView","CPTableColumn","int"]), new objj_method(sel_getUid("tableView:heightOfRow:"), function $_CPOutlineViewTableViewDelegate__tableView_heightOfRow_(self, _cmd, theTableView, theRow) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_heightOfRowByItem_)) + return objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:heightOfRowByItem:", _outlineView, objj_msgSend(_outlineView, "itemAtRow:", theRow)); + return objj_msgSend(theTableView, "rowHeight"); +} +},["float","CPTableView","int"]), new objj_method(sel_getUid("tableView:willDisplayView:forTableColumn:row:"), function $_CPOutlineViewTableViewDelegate__tableView_willDisplayView_forTableColumn_row_(self, _cmd, aTableView, aView, aTableColumn, aRowIndex) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_willDisplayView_forTableColumn_item_)) + { + var item = objj_msgSend(_outlineView, "itemAtRow:", aRowIndex); + objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:willDisplayView:forTableColumn:item:", _outlineView, aView, aTableColumn, item); + } +} +},["void","CPTableView","id","CPTableColumn","int"]), new objj_method(sel_getUid("tableView:isGroupRow:"), function $_CPOutlineViewTableViewDelegate__tableView_isGroupRow_(self, _cmd, aTableView, row) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_isGroupItem_)) + return objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:isGroupItem:", _outlineView, objj_msgSend(_outlineView, "itemAtRow:", theRow)); + return NO; +} +},["BOOL","CPTableView","int"])]); +} +{var the_class = objj_allocateClassPair(CPButton, "CPDisclosureButton"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_angle")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPDisclosureButton__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDisclosureButton").super_class }, "initWithFrame:", aFrame); + if (self) + objj_msgSend(self, "setBordered:", NO); + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setState:"), function $CPDisclosureButton__setState_(self, _cmd, aState) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDisclosureButton").super_class }, "setState:", aState); + if (objj_msgSend(self, "state") === CPOnState) + _angle = 0.0; + else + _angle = -PI_2; +} +},["void","CPState"]), new objj_method(sel_getUid("drawRect:"), function $CPDisclosureButton__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextBeginPath(context); + CGContextTranslateCTM(context, (bounds.size.width) / 2.0, (bounds.size.height) / 2.0); + CGContextRotateCTM(context, _angle); + CGContextTranslateCTM(context, -(bounds.size.width) / 2.0, -(bounds.size.height) / 2.0); + CGContextTranslateCTM(context, FLOOR(((bounds.size.width) - 9.0) / 2.0), FLOOR(((bounds.size.height) - 8.0) / 2.0)); + CGContextMoveToPoint(context, 0.0, 0.0); + CGContextAddLineToPoint(context, 9.0, 0.0); + CGContextAddLineToPoint(context, 4.5, 8.0); + CGContextAddLineToPoint(context, 0.0, 0.0); + CGContextClosePath(context); + CGContextSetFillColor(context, + colorForDisclosureTriangle(objj_msgSend(self, "hasThemeState:", CPThemeStateSelected), + objj_msgSend(self, "hasThemeState:", CPThemeStateHighlighted))); + CGContextFillPath(context); + CGContextBeginPath(context); + CGContextMoveToPoint(context, 0.0, 0.0); + if(_angle === 0.0) { + CGContextAddLineToPoint(context, 4.5, 8.0); + CGContextAddLineToPoint(context, 9.0, 0.0); + } else { + CGContextAddLineToPoint(context, 4.5, 8.0); + } + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 1.0, 0.8)); + CGContextStrokePath(context); +} +},["void","CGRect"])]); +} +var CPOutlineViewIndentationPerLevelKey = "CPOutlineViewIndentationPerLevelKey", + CPOutlineViewOutlineTableColumnKey = "CPOutlineViewOutlineTableColumnKey", + CPOutlineViewDataSourceKey = "CPOutlineViewDataSourceKey", + CPOutlineViewDelegateKey = "CPOutlineViewDelegateKey"; +{ +var the_class = objj_getClass("CPOutlineView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPOutlineView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPOutlineView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _rootItemInfo = { isExpanded:YES, isExpandable:NO, level:-1, row:-1, children:[], weight:0 }; + _itemsForRows = []; + _itemInfosForItems = { }; + _disclosureControlsForRows = []; + objj_msgSend(self, "setIndentationMarkerFollowsDataView:", YES); + objj_msgSend(self, "setDisclosureControlPrototype:", objj_msgSend(objj_msgSend(CPDisclosureButton, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 10.0, 10.0))); + _outlineTableColumn = objj_msgSend(aCoder, "decodeObjectForKey:", CPOutlineViewOutlineTableColumnKey); + _indentationPerLevel = objj_msgSend(aCoder, "decodeFloatForKey:", CPOutlineViewIndentationPerLevelKey); + _outlineViewDataSource = objj_msgSend(aCoder, "decodeObjectForKey:", CPOutlineViewDataSourceKey); + _outlineViewDelegate = objj_msgSend(aCoder, "decodeObjectForKey:", CPOutlineViewDelegateKey); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "setDataSource:", objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource, "alloc"), "initWithOutlineView:", self)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPOutlineView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _outlineTableColumn, CPOutlineViewOutlineTableColumnKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _indentationPerLevel, CPOutlineViewIndentationPerLevelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _outlineViewDataSource, CPOutlineViewDataSourceKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _outlineViewDelegate, CPOutlineViewDelegateKey); +} +},["void","CPCoder"])]); +} +var colorForDisclosureTriangle = function(isSelected, isHighlighted) { + return isSelected + ? (isHighlighted + ? objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 0.9, 1.0) + : objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 1.0, 1.0)) + : (isHighlighted + ? objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 0.4, 1.0) + : objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 0.5, 1.0)); +} + +p;9;CPPanel.jt;1754;@STATIC;1.0;i;10;CPWindow.jt;1720;objj_executeFile("CPWindow.j", YES); +CPOKButton = 1; +CPCancelButton = 0; +CPDocModalWindowMask = 1 << 6; +{var the_class = objj_allocateClassPair(CPWindow, "CPPanel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_becomesKeyOnlyIfNeeded"), new objj_ivar("_worksWhenModal")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isFloatingPanel"), function $CPPanel__isFloatingPanel(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "level") == CPFloatingWindowLevel; +} +},["BOOL"]), new objj_method(sel_getUid("setFloatingPanel:"), function $CPPanel__setFloatingPanel_(self, _cmd, isFloatingPanel) +{ with(self) +{ + objj_msgSend(self, "setLevel:", isFloatingPanel ? CPFloatingWindowLevel : CPNormalWindowLevel); +} +},["void","BOOL"]), new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"), function $CPPanel__becomesKeyOnlyIfNeeded(self, _cmd) +{ with(self) +{ + return _becomesKeyOnlyIfNeeded; +} +},["BOOL"]), new objj_method(sel_getUid("setBecomesKeyOnlyIfNeeded:"), function $CPPanel__setBecomesKeyOnlyIfNeeded_(self, _cmd, shouldBecomeKeyOnlyIfNeeded) +{ with(self) +{ + _becomesKeyOnlyIfNeeded = shouldBecomeKeyOnlyIfNeeded +} +},["void","BOOL"]), new objj_method(sel_getUid("worksWhenModal"), function $CPPanel__worksWhenModal(self, _cmd) +{ with(self) +{ + return _worksWhenModal; +} +},["BOOL"]), new objj_method(sel_getUid("setWorksWhenModal:"), function $CPPanel__setWorksWhenModal_(self, _cmd, shouldWorkWhenModal) +{ with(self) +{ + _worksWhenModal = shouldWorkWhenModal; +} +},["void","BOOL"]), new objj_method(sel_getUid("canBecomeMainWindow"), function $CPPanel__canBecomeMainWindow(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"])]); +} + +p;14;CPPasteboard.jt;12005;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;40;Foundation/CPPropertyListSerialization.jt;11859;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPPropertyListSerialization.j", NO); +CPGeneralPboard = "CPGeneralPboard"; +CPFontPboard = "CPFontPboard"; +CPRulerPboard = "CPRulerPboard"; +CPFindPboard = "CPFindPboard"; +CPDragPboard = "CPDragPboard"; +CPColorPboardType = "CPColorPboardType"; +CPFilenamesPboardType = "CPFilenamesPboardType"; +CPFontPboardType = "CPFontPboardType"; +CPHTMLPboardType = "CPHTMLPboardType"; +CPStringPboardType = "CPStringPboardType"; +CPURLPboardType = "CPURLPboardType"; +CPImagesPboardType = "CPImagesPboardType"; +CPVideosPboardType = "CPVideosPboardType"; +UTF8PboardType = "public.utf8-plain-text"; +CPImagePboardType = "CPImagePboardType"; +var CPPasteboards = nil, + supportsNativePasteboard = NO; +{var the_class = objj_allocateClassPair(CPObject, "CPPasteboard"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_types"), new objj_ivar("_owners"), new objj_ivar("_provided"), new objj_ivar("_changeCount"), new objj_ivar("_stateUID"), new objj_ivar("_nativePasteboard")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initWithName:"), function $CPPasteboard___initWithName_(self, _cmd, aName) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPasteboard").super_class }, "init"); + if (self) + { + _name = aName; + _types = []; + _owners = objj_msgSend(CPDictionary, "dictionary"); + _provided = objj_msgSend(CPDictionary, "dictionary"); + _changeCount = 0; + if (supportsNativePasteboard) + { + _nativePasteboard = window.cpPasteboardWithName(aName); + objj_msgSend(self, "_synchronizePasteboard"); + } + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("addTypes:owner:"), function $CPPasteboard__addTypes_owner_(self, _cmd, types, anOwner) +{ with(self) +{ + var i = 0, + count = types.length; + for (; i < count; ++i) + { + var type = types[i]; + if(!objj_msgSend(_owners, "objectForKey:", type)) + { + objj_msgSend(_types, "addObject:", type); + objj_msgSend(_provided, "removeObjectForKey:", type); + } + objj_msgSend(_owners, "setObject:forKey:", anOwner, type); + } + if (_nativePasteboard) + { + var nativeTypes = objj_msgSend(types, "copy"); + if (objj_msgSend(types, "containsObject:", CPStringPboardType)) + nativeTypes.push(UTF8PboardType); + _nativePasteboard.addTypes_(nativeTypes); + } + return ++_changeCount; +} +},["unsigned","CPArray","id"]), new objj_method(sel_getUid("declareTypes:owner:"), function $CPPasteboard__declareTypes_owner_(self, _cmd, types, anOwner) +{ with(self) +{ + objj_msgSend(self, "_declareTypes:owner:updateNativePasteboard:", types, anOwner, YES); +} +},["unsigned","CPArray","id"]), new objj_method(sel_getUid("_declareTypes:owner:updateNativePasteboard:"), function $CPPasteboard___declareTypes_owner_updateNativePasteboard_(self, _cmd, types, anOwner, shouldUpdate) +{ with(self) +{ + objj_msgSend(_types, "setArray:", types); + _owners = objj_msgSend(CPDictionary, "dictionary"); + _provided = objj_msgSend(CPDictionary, "dictionary"); + var count = _types.length; + while (count--) + objj_msgSend(_owners, "setObject:forKey:", anOwner, _types[count]); + if (_nativePasteboard && shouldUpdate) + { + var nativeTypes = objj_msgSend(types, "copy"); + if (objj_msgSend(types, "containsObject:", CPStringPboardType)) + nativeTypes.push(UTF8PboardType); + _nativePasteboard.declareTypes_(nativeTypes); + _changeCount = _nativePasteboard.changeCount(); + } + return ++_changeCount; +} +},["unsigned","CPArray","id","BOOL"]), new objj_method(sel_getUid("setData:forType:"), function $CPPasteboard__setData_forType_(self, _cmd, aData, aType) +{ with(self) +{ + objj_msgSend(_provided, "setObject:forKey:", aData, aType); + if (aType === CPStringPboardType) + objj_msgSend(self, "setData:forType:", aData, UTF8PboardType); + return YES; +} +},["BOOL","CPData","CPString"]), new objj_method(sel_getUid("setPropertyList:forType:"), function $CPPasteboard__setPropertyList_forType_(self, _cmd, aPropertyList, aType) +{ with(self) +{ + return objj_msgSend(self, "setData:forType:", objj_msgSend(CPPropertyListSerialization, "dataFromPropertyList:format:", aPropertyList, CPPropertyList280NorthFormat_v1_0), aType); +} +},["BOOL","id","CPString"]), new objj_method(sel_getUid("setString:forType:"), function $CPPasteboard__setString_forType_(self, _cmd, aString, aType) +{ with(self) +{ + objj_msgSend(self, "setPropertyList:forType:", aString, aType); +} +},["void","CPString","CPString"]), new objj_method(sel_getUid("availableTypeFromArray:"), function $CPPasteboard__availableTypeFromArray_(self, _cmd, anArray) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "types"), "firstObjectCommonWithArray:", anArray); +} +},["CPString","CPArray"]), new objj_method(sel_getUid("types"), function $CPPasteboard__types(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_synchronizePasteboard"); + return _types; +} +},["CPArray"]), new objj_method(sel_getUid("changeCount"), function $CPPasteboard__changeCount(self, _cmd) +{ with(self) +{ + return _changeCount; +} +},["unsigned"]), new objj_method(sel_getUid("dataForType:"), function $CPPasteboard__dataForType_(self, _cmd, aType) +{ with(self) +{ + var data = objj_msgSend(_provided, "objectForKey:", aType); + if (data) + return data; + var owner = objj_msgSend(_owners, "objectForKey:", aType); + if (owner) + { + objj_msgSend(owner, "pasteboard:provideDataForType:", self, aType); + return objj_msgSend(_provided, "objectForKey:", aType); + } + if (aType === CPStringPboardType) + return objj_msgSend(self, "dataForType:", UTF8PboardType); + return nil; +} +},["CPData","CPString"]), new objj_method(sel_getUid("_synchronizePasteboard"), function $CPPasteboard___synchronizePasteboard(self, _cmd) +{ with(self) +{ + if (_nativePasteboard && _nativePasteboard.changeCount() > _changeCount) + { + var nativeTypes = objj_msgSend(_nativePasteboard.types(), "copy"); + if (objj_msgSend(nativeTypes, "containsObject:", UTF8PboardType)) + nativeTypes.push(CPStringPboardType); + objj_msgSend(self, "_declareTypes:owner:updateNativePasteboard:", nativeTypes, self, NO); + _changeCount = _nativePasteboard.changeCount(); + } +} +},["void"]), new objj_method(sel_getUid("pasteboard:provideDataForType:"), function $CPPasteboard__pasteboard_provideDataForType_(self, _cmd, aPasteboard, aType) +{ with(self) +{ + if (aType === CPStringPboardType) + { + var string = _nativePasteboard.stringForType_(UTF8PboardType); + objj_msgSend(self, "setString:forType:", string, CPStringPboardType); + objj_msgSend(self, "setString:forType:", string, UTF8PboardType); + } + else + objj_msgSend(self, "setString:forType:", _nativePasteboard.stringForType_(aType), aType); +} +},["void","CPPasteboard","CPString"]), new objj_method(sel_getUid("propertyListForType:"), function $CPPasteboard__propertyListForType_(self, _cmd, aType) +{ with(self) +{ + var data = objj_msgSend(self, "dataForType:", aType); + if (data) + return objj_msgSend(CPPropertyListSerialization, "propertyListFromData:format:", data, CPPropertyList280NorthFormat_v1_0); + return nil; +} +},["id","CPString"]), new objj_method(sel_getUid("stringForType:"), function $CPPasteboard__stringForType_(self, _cmd, aType) +{ with(self) +{ + return objj_msgSend(self, "propertyListForType:", aType); +} +},["CPString","CPString"]), new objj_method(sel_getUid("_generateStateUID"), function $CPPasteboard___generateStateUID(self, _cmd) +{ with(self) +{ + var bits = 32; + _stateUID = ""; + while (bits--) + _stateUID += FLOOR(RAND() * 16.0).toString(16).toUpperCase(); + return _stateUID; +} +},["CPString"]), new objj_method(sel_getUid("_stateUID"), function $CPPasteboard___stateUID(self, _cmd) +{ with(self) +{ + return _stateUID; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPPasteboard__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPPasteboard, "class")) + return; + objj_msgSend(self, "setVersion:", 1.0); + CPPasteboards = objj_msgSend(CPDictionary, "dictionary"); + if (typeof window.cpPasteboardWithName !== "undefined") + supportsNativePasteboard = YES; +} +},["void"]), new objj_method(sel_getUid("generalPasteboard"), function $CPPasteboard__generalPasteboard(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPPasteboard, "pasteboardWithName:", CPGeneralPboard); +} +},["id"]), new objj_method(sel_getUid("pasteboardWithName:"), function $CPPasteboard__pasteboardWithName_(self, _cmd, aName) +{ with(self) +{ + var pasteboard = objj_msgSend(CPPasteboards, "objectForKey:", aName); + if (pasteboard) + return pasteboard; + pasteboard = objj_msgSend(objj_msgSend(CPPasteboard, "alloc"), "_initWithName:", aName); + objj_msgSend(CPPasteboards, "setObject:forKey:", pasteboard, aName); + return pasteboard; +} +},["id","CPString"])]); +} +var DOMDataTransferPasteboard = nil; +{var the_class = objj_allocateClassPair(CPPasteboard, "_CPDOMDataTransferPasteboard"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_dataTransfer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_setDataTransfer:"), function $_CPDOMDataTransferPasteboard___setDataTransfer_(self, _cmd, aDataTransfer) +{ with(self) +{ + _dataTransfer = aDataTransfer; +} +},["void","DataTransfer"]), new objj_method(sel_getUid("_setPasteboard:"), function $_CPDOMDataTransferPasteboard___setPasteboard_(self, _cmd, aPasteboard) +{ with(self) +{ + _dataTransfer.clearData(); + var types = objj_msgSend(aPasteboard, "types"), + count = types.length; + while (count--) + { + var type = types[count]; + if (type === CPStringPboardType) + _dataTransfer.setData(type, objj_msgSend(aPasteboard, "stringForType:", type)); + else + _dataTransfer.setData(type, objj_msgSend(objj_msgSend(aPasteboard, "dataForType:", type), "rawString")); + } +} +},["void","CPPasteboard"]), new objj_method(sel_getUid("types"), function $_CPDOMDataTransferPasteboard__types(self, _cmd) +{ with(self) +{ + return Array.prototype.slice.apply(_dataTransfer.types); +} +},["CPArray"]), new objj_method(sel_getUid("dataForType:"), function $_CPDOMDataTransferPasteboard__dataForType_(self, _cmd, aType) +{ with(self) +{ + var dataString = _dataTransfer.getData(aType); + if (aType === CPStringPboardType) + return objj_msgSend(CPData, "dataFromPropertyList:format:", dataString, kCFPropertyList280NorthFormat_v1_0); + return objj_msgSend(CPData, "dataWithRawString:", dataString); +} +},["CPData","CPString"]), new objj_method(sel_getUid("propertyListForType:"), function $_CPDOMDataTransferPasteboard__propertyListForType_(self, _cmd, aType) +{ with(self) +{ + if (aType === CPStringPboardType) + return _dataTransfer.getData(aType); + return objj_msgSend(CPPropertyListSerialization, "propertyListFromData:format:", objj_msgSend(self, "dataForType:", aType), CPPropertyListUnknownFormat); +} +},["id","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("DOMDataTransferPasteboard"), function $_CPDOMDataTransferPasteboard__DOMDataTransferPasteboard(self, _cmd) +{ with(self) +{ + if (!DOMDataTransferPasteboard) + DOMDataTransferPasteboard = objj_msgSend(objj_msgSend(_CPDOMDataTransferPasteboard, "alloc"), "init"); + return DOMDataTransferPasteboard; +} +},["_CPDOMDataTransferPasteboard"])]); +} + +p;15;CPPopUpButton.jt;19331;@STATIC;1.0;i;10;CPButton.ji;12;CPGeometry.ji;8;CPMenu.ji;12;CPMenuItem.jt;19250;objj_executeFile("CPButton.j", YES); +objj_executeFile("CPGeometry.j", YES); +objj_executeFile("CPMenu.j", YES); +objj_executeFile("CPMenuItem.j", YES); +var VISIBLE_MARGIN = 7.0; +CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); +{var the_class = objj_allocateClassPair(CPButton, "CPPopUpButton"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_selectedIndex"), new objj_ivar("_preferredEdge"), new objj_ivar("_menu")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:pullsDown:"), function $CPPopUpButton__initWithFrame_pullsDown_(self, _cmd, aFrame, shouldPullDown) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "initWithFrame:", aFrame); + if (self) + { + _selectedIndex = CPNotFound; + _preferredEdge = CPMaxYEdge; + objj_msgSend(self, "setValue:forThemeAttribute:", CPImageLeft, "image-position"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPLeftTextAlignment, "alignment"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPLineBreakByTruncatingTail, "line-break-mode"); + objj_msgSend(self, "setMenu:", objj_msgSend(objj_msgSend(CPMenu, "alloc"), "initWithTitle:", "")); + objj_msgSend(self, "setPullsDown:", shouldPullDown); + } + return self; +} +},["id","CGRect","BOOL"]), new objj_method(sel_getUid("initWithFrame:"), function $CPPopUpButton__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(self, "initWithFrame:pullsDown:", aFrame, NO); +} +},["id","CGRect"]), new objj_method(sel_getUid("setPullsDown:"), function $CPPopUpButton__setPullsDown_(self, _cmd, shouldPullDown) +{ with(self) +{ + if (shouldPullDown) + var changed = objj_msgSend(self, "setThemeState:", CPPopUpButtonStatePullsDown); + else + var changed = objj_msgSend(self, "unsetThemeState:", CPPopUpButtonStatePullsDown); + if (!changed) + return; + var items = objj_msgSend(_menu, "itemArray"); + if (objj_msgSend(items, "count") <= 0) + return; + objj_msgSend(items[0], "setHidden:", objj_msgSend(self, "pullsDown")); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","BOOL"]), new objj_method(sel_getUid("pullsDown"), function $CPPopUpButton__pullsDown(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPPopUpButtonStatePullsDown); +} +},["BOOL"]), new objj_method(sel_getUid("addItem:"), function $CPPopUpButton__addItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(_menu, "addItem:", anItem); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("addItemWithTitle:"), function $CPPopUpButton__addItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(_menu, "addItemWithTitle:action:keyEquivalent:", aTitle, NULL, nil); +} +},["void","CPString"]), new objj_method(sel_getUid("addItemsWithTitles:"), function $CPPopUpButton__addItemsWithTitles_(self, _cmd, titles) +{ with(self) +{ + var index = 0, + count = objj_msgSend(titles, "count"); + for (; index < count; ++index) + objj_msgSend(self, "addItemWithTitle:", titles[index]); +} +},["void","CPArray"]), new objj_method(sel_getUid("insertItemWithTitle:atIndex:"), function $CPPopUpButton__insertItemWithTitle_atIndex_(self, _cmd, aTitle, anIndex) +{ with(self) +{ + var items = objj_msgSend(self, "itemArray"), + count = objj_msgSend(items, "count"); + while (count--) + if (objj_msgSend(items[count], "title") == aTitle) + objj_msgSend(self, "removeItemAtIndex:", count); + objj_msgSend(_menu, "insertItemWithTitle:action:keyEquivalent:atIndex:", aTitle, NULL, nil, anIndex); +} +},["void","CPString","int"]), new objj_method(sel_getUid("removeAllItems"), function $CPPopUpButton__removeAllItems(self, _cmd) +{ with(self) +{ + var count = objj_msgSend(_menu, "numberOfItems"); + while (count--) + objj_msgSend(_menu, "removeItemAtIndex:", 0); +} +},["void"]), new objj_method(sel_getUid("removeItemWithTitle:"), function $CPPopUpButton__removeItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(self, "removeItemAtIndex:", objj_msgSend(self, "indexOfItemWithTitle:", aTitle)); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","CPString"]), new objj_method(sel_getUid("removeItemAtIndex:"), function $CPPopUpButton__removeItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(_menu, "removeItemAtIndex:", anIndex); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","int"]), new objj_method(sel_getUid("selectedItem"), function $CPPopUpButton__selectedItem(self, _cmd) +{ with(self) +{ + if (_selectedIndex < 0 || _selectedIndex > objj_msgSend(self, "numberOfItems") - 1) + return nil; + return objj_msgSend(_menu, "itemAtIndex:", _selectedIndex); +} +},["CPMenuItem"]), new objj_method(sel_getUid("titleOfSelectedItem"), function $CPPopUpButton__titleOfSelectedItem(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "selectedItem"), "title"); +} +},["CPString"]), new objj_method(sel_getUid("indexOfSelectedItem"), function $CPPopUpButton__indexOfSelectedItem(self, _cmd) +{ with(self) +{ + return _selectedIndex; +} +},["int"]), new objj_method(sel_getUid("objectValue"), function $CPPopUpButton__objectValue(self, _cmd) +{ with(self) +{ + return _selectedIndex; +} +},["id"]), new objj_method(sel_getUid("selectItem:"), function $CPPopUpButton__selectItem_(self, _cmd, aMenuItem) +{ with(self) +{ + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(self, "indexOfItem:", aMenuItem)); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("selectItemAtIndex:"), function $CPPopUpButton__selectItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (_selectedIndex == anIndex) + return; + if (_selectedIndex >= 0 && !objj_msgSend(self, "pullsDown")) + objj_msgSend(objj_msgSend(self, "selectedItem"), "setState:", CPOffState); + _selectedIndex = anIndex; + if (_selectedIndex >= 0 && !objj_msgSend(self, "pullsDown")) + objj_msgSend(objj_msgSend(self, "selectedItem"), "setState:", CPOnState); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","int"]), new objj_method(sel_getUid("selectItemWithTag:"), function $CPPopUpButton__selectItemWithTag_(self, _cmd, aTag) +{ with(self) +{ + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(self, "indexOfItemWithTag:", aTag)); +} +},["void","int"]), new objj_method(sel_getUid("selectItemWithTitle:"), function $CPPopUpButton__selectItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(self, "indexOfItemWithTitle:", aTitle)); +} +},["void","CPString"]), new objj_method(sel_getUid("setObjectValue:"), function $CPPopUpButton__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(aValue, "intValue")); +} +},["void","id"]), new objj_method(sel_getUid("menu"), function $CPPopUpButton__menu(self, _cmd) +{ with(self) +{ + return _menu; +} +},["CPMenu"]), new objj_method(sel_getUid("setMenu:"), function $CPPopUpButton__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + if (_menu === aMenu) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_menu) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidAddItemNotification, _menu); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidChangeItemNotification, _menu); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidRemoveItemNotification, _menu); + } + _menu = aMenu; + if (_menu) + { + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidAddItem:"), CPMenuDidAddItemNotification, _menu); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidChangeItem:"), CPMenuDidChangeItemNotification, _menu); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidRemoveItem:"), CPMenuDidRemoveItemNotification, _menu); + } + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("numberOfItems"), function $CPPopUpButton__numberOfItems(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menu, "numberOfItems"); +} +},["int"]), new objj_method(sel_getUid("itemArray"), function $CPPopUpButton__itemArray(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menu, "itemArray"); +} +},["CPArray"]), new objj_method(sel_getUid("itemAtIndex:"), function $CPPopUpButton__itemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_menu, "itemAtIndex:", anIndex); +} +},["CPMenuItem","unsigned"]), new objj_method(sel_getUid("itemTitleAtIndex:"), function $CPPopUpButton__itemTitleAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_menu, "itemAtIndex:", anIndex), "title"); +} +},["CPString","unsigned"]), new objj_method(sel_getUid("itemTitles"), function $CPPopUpButton__itemTitles(self, _cmd) +{ with(self) +{ + var titles = [], + items = objj_msgSend(self, "itemArray"), + index = 0, + count = objj_msgSend(items, "count"); + for (; index < count; ++index) + titles.push(objj_msgSend(items[index], "title")); + return titles; +} +},["CPArray"]), new objj_method(sel_getUid("itemWithTitle:"), function $CPPopUpButton__itemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(_menu, "itemAtIndex:", objj_msgSend(_menu, "indexOfItemWithTitle:", aTitle)); +} +},["CPMenuItem","CPString"]), new objj_method(sel_getUid("lastItem"), function $CPPopUpButton__lastItem(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_menu, "itemArray"), "lastObject"); +} +},["CPMenuItem"]), new objj_method(sel_getUid("indexOfItem:"), function $CPPopUpButton__indexOfItem_(self, _cmd, aMenuItem) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItem:", aMenuItem); +} +},["int","CPMenuItem"]), new objj_method(sel_getUid("indexOfItemWithTag:"), function $CPPopUpButton__indexOfItemWithTag_(self, _cmd, aTag) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItemWithTag:", aTag); +} +},["int","int"]), new objj_method(sel_getUid("indexOfItemWithTitle:"), function $CPPopUpButton__indexOfItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItemWithTitle:", aTitle); +} +},["int","CPString"]), new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"), function $CPPopUpButton__indexOfItemWithRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItemWithRepresentedObject:", anObject); +} +},["int","id"]), new objj_method(sel_getUid("indexOfItemWithTarget:action:"), function $CPPopUpButton__indexOfItemWithTarget_action_(self, _cmd, aTarget, anAction) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItemWithTarget:action:", aTarget, anAction); +} +},["int","id","SEL"]), new objj_method(sel_getUid("preferredEdge"), function $CPPopUpButton__preferredEdge(self, _cmd) +{ with(self) +{ + return _preferredEdge; +} +},["CPRectEdge"]), new objj_method(sel_getUid("setPreferredEdge:"), function $CPPopUpButton__setPreferredEdge_(self, _cmd, aRectEdge) +{ with(self) +{ + _preferredEdge = aRectEdge; +} +},["void","CPRectEdge"]), new objj_method(sel_getUid("setTitle:"), function $CPPopUpButton__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + if (objj_msgSend(self, "title") === aTitle) + return; + if (objj_msgSend(self, "pullsDown")) + { + var items = objj_msgSend(_menu, "itemArray"); + if (objj_msgSend(items, "count") <= 0) + objj_msgSend(self, "addItemWithTitle:", aTitle); + else + { + objj_msgSend(items[0], "setTitle:", aTitle); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); + } + } + else + { + var index = objj_msgSend(self, "indexOfItemWithTitle:", aTitle); + if (index < 0) + { + objj_msgSend(self, "addItemWithTitle:", aTitle); + index = objj_msgSend(self, "numberOfItems") - 1; + } + objj_msgSend(self, "selectItemAtIndex:", index); + } +} +},["void","CPString"]), new objj_method(sel_getUid("setImage:"), function $CPPopUpButton__setImage_(self, _cmd, anImage) +{ with(self) +{ +} +},["void","CPImage"]), new objj_method(sel_getUid("synchronizeTitleAndSelectedItem"), function $CPPopUpButton__synchronizeTitleAndSelectedItem(self, _cmd) +{ with(self) +{ + var item = nil; + if (objj_msgSend(self, "pullsDown")) + { + var items = objj_msgSend(_menu, "itemArray"); + if (objj_msgSend(items, "count") > 0) + item = items[0]; + } + else + item = objj_msgSend(self, "selectedItem"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "setImage:", objj_msgSend(item, "image")); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "setTitle:", objj_msgSend(item, "title")); +} +},["void"]), new objj_method(sel_getUid("menuDidAddItem:"), function $CPPopUpButton__menuDidAddItem_(self, _cmd, aNotification) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex"); + if (_selectedIndex < 0) + objj_msgSend(self, "selectItemAtIndex:", 0); + else if (index == _selectedIndex) + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); + else if (index < _selectedIndex) + ++_selectedIndex; + if (index == 0 && objj_msgSend(self, "pullsDown")) + { + var items = objj_msgSend(_menu, "itemArray"); + objj_msgSend(items[0], "setHidden:", YES); + if (items.length > 0) + objj_msgSend(items[1], "setHidden:", NO); + } + var item = objj_msgSend(_menu, "itemArray")[index], + action = objj_msgSend(item, "action"); + if (!action || (action === sel_getUid("_popUpItemAction:"))) + { + objj_msgSend(item, "setTarget:", self); + objj_msgSend(item, "setAction:", sel_getUid("_popUpItemAction:")); + } +} +},["void","CPNotification"]), new objj_method(sel_getUid("menuDidChangeItem:"), function $CPPopUpButton__menuDidChangeItem_(self, _cmd, aNotification) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex"); + if (objj_msgSend(self, "pullsDown") && index != 0) + return; + if (!objj_msgSend(self, "pullsDown") && index != _selectedIndex) + return; + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("menuDidRemoveItem:"), function $CPPopUpButton__menuDidRemoveItem_(self, _cmd, aNotification) +{ with(self) +{ + var numberOfItems = objj_msgSend(self, "numberOfItems"); + if (numberOfItems <= _selectedIndex && numberOfItems > 0) + objj_msgSend(self, "selectItemAtIndex:", numberOfItems - 1); + else + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("mouseDown:"), function $CPPopUpButton__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled") || !objj_msgSend(self, "numberOfItems")) + return; + objj_msgSend(self, "highlight:", YES); + var menu = objj_msgSend(self, "menu"), + bounds = objj_msgSend(self, "bounds"), + minimumWidth = CGRectGetWidth(bounds); + objj_msgSend(menu, "setFont:", objj_msgSend(self, "font")); + if (objj_msgSend(self, "pullsDown")) + { + var positionedItem = nil, + location = CGPointMake(0.0, CGRectGetMaxY(bounds)); + } + else + { + var contentRect = objj_msgSend(self, "contentRectForBounds:", bounds), + positionedItem = objj_msgSend(self, "selectedItem"), + standardLeftMargin = objj_msgSend(_CPMenuWindow, "_standardLeftMargin") + objj_msgSend(_CPMenuItemStandardView, "_standardLeftMargin"), + location = CGPointMake(CGRectGetMinX(contentRect) - standardLeftMargin, 0.0); + minimumWidth += standardLeftMargin; + objj_msgSend(menu, "_highlightItemAtIndex:", CPNotFound); + } + objj_msgSend(menu, "setMinimumWidth:", minimumWidth); + objj_msgSend(menu, "_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:", positionedItem, location, CGRectGetMinY(bounds), CGRectGetMaxY(bounds), self, function(aMenu) + { + objj_msgSend(self, "highlight:", NO); + var highlightedItem = objj_msgSend(aMenu, "highlightedItem"); + if (objj_msgSend(highlightedItem, "_isSelectable")) + objj_msgSend(self, "selectItem:", highlightedItem); + }); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_popUpItemAction:"), function $CPPopUpButton___popUpItemAction_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); +} +},["void","id"]), new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"), function $CPPopUpButton__takeValueFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + var count = objects.length, + value = objj_msgSend(objects[0], "valueForKeyPath:", aKeyPath); + objj_msgSend(self, "selectItemWithTag:", value); + objj_msgSend(self, "setEnabled:", YES); + while (count-- > 1) + { + if (value !== objj_msgSend(objects[count], "valueForKeyPath:", aKeyPath)) + { + objj_msgSend(objj_msgSend(self, "selectedItem"), "setState:", CPOffState); + } + } +} +},["void","CPString","CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPPopUpButton__themeClass(self, _cmd) +{ with(self) +{ + return "popup-button"; +} +},["CPString"])]); +} +var CPPopUpButtonMenuKey = "CPPopUpButtonMenuKey", + CPPopUpButtonSelectedIndexKey = "CPPopUpButtonSelectedIndexKey", + CPPopUpButtonPullsDownKey = "CPPopUpButtonPullsDownKey"; +{ +var the_class = objj_getClass("CPPopUpButton") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPPopUpButton\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPPopUpButton__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "initWithCoder:", aCoder); + if (self) + { + _selectedIndex = -1; + objj_msgSend(self, "setMenu:", objj_msgSend(aCoder, "decodeObjectForKey:", CPPopUpButtonMenuKey)); + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(aCoder, "decodeObjectForKey:", CPPopUpButtonSelectedIndexKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPPopUpButton__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _menu, CPPopUpButtonMenuKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _selectedIndex, CPPopUpButtonSelectedIndexKey); +} +},["void","CPCoder"])]); +} + +p;21;CPProgressIndicator.jt;12947;@STATIC;1.0;I;19;AppKit/CGGeometry.jI;20;AppKit/CPImageView.jI;15;AppKit/CPView.jt;12858;objj_executeFile("AppKit/CGGeometry.j", NO); +objj_executeFile("AppKit/CPImageView.j", NO); +objj_executeFile("AppKit/CPView.j", NO); +CPProgressIndicatorBarStyle = 0; +CPProgressIndicatorSpinningStyle = 1; +CPProgressIndicatorHUDBarStyle = 2; +var CPProgressIndicatorSpinningStyleColors = nil, + CPProgressIndicatorClassName = nil, + CPProgressIndicatorStyleIdentifiers = nil, + CPProgressIndicatorStyleSizes = nil; +{var the_class = objj_allocateClassPair(CPView, "CPProgressIndicator"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_minValue"), new objj_ivar("_maxValue"), new objj_ivar("_doubleValue"), new objj_ivar("_controlSize"), new objj_ivar("_isIndeterminate"), new objj_ivar("_style"), new objj_ivar("_isAnimating"), new objj_ivar("_isDisplayedWhenStoppedSet"), new objj_ivar("_isDisplayedWhenStopped"), new objj_ivar("_barView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPProgressIndicator__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPProgressIndicator").super_class }, "initWithFrame:", aFrame); + if (self) + { + _minValue = 0.0; + _maxValue = 100.0; + _doubleValue = 0.0; + _style = CPProgressIndicatorBarStyle; + _isDisplayedWhenStoppedSet = NO; + _controlSize = CPRegularControlSize; + objj_msgSend(self, "updateBackgroundColor"); + objj_msgSend(self, "drawBar"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setUsesThreadedAnimation:"), function $CPProgressIndicator__setUsesThreadedAnimation_(self, _cmd, aFlag) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("startAnimation:"), function $CPProgressIndicator__startAnimation_(self, _cmd, aSender) +{ with(self) +{ + _isAnimating = YES; + objj_msgSend(self, "_hideOrDisplay"); +} +},["void","id"]), new objj_method(sel_getUid("stopAnimation:"), function $CPProgressIndicator__stopAnimation_(self, _cmd, aSender) +{ with(self) +{ + _isAnimating = NO; + objj_msgSend(self, "_hideOrDisplay"); +} +},["void","id"]), new objj_method(sel_getUid("usesThreadedAnimation"), function $CPProgressIndicator__usesThreadedAnimation(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("incrementBy:"), function $CPProgressIndicator__incrementBy_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(self, "setDoubleValue:", _doubleValue + aValue); +} +},["void","double"]), new objj_method(sel_getUid("setDoubleValue:"), function $CPProgressIndicator__setDoubleValue_(self, _cmd, aValue) +{ with(self) +{ + _doubleValue = MIN(MAX(aValue, _minValue), _maxValue); + objj_msgSend(self, "drawBar"); +} +},["void","double"]), new objj_method(sel_getUid("doubleValue"), function $CPProgressIndicator__doubleValue(self, _cmd) +{ with(self) +{ + return _doubleValue; +} +},["double"]), new objj_method(sel_getUid("setMinValue:"), function $CPProgressIndicator__setMinValue_(self, _cmd, aValue) +{ with(self) +{ + _minValue = aValue; +} +},["void","double"]), new objj_method(sel_getUid("minValue"), function $CPProgressIndicator__minValue(self, _cmd) +{ with(self) +{ + return _minValue; +} +},["double"]), new objj_method(sel_getUid("setMaxValue:"), function $CPProgressIndicator__setMaxValue_(self, _cmd, aValue) +{ with(self) +{ + _maxValue = aValue; +} +},["void","double"]), new objj_method(sel_getUid("maxValue"), function $CPProgressIndicator__maxValue(self, _cmd) +{ with(self) +{ + return _maxValue; +} +},["double"]), new objj_method(sel_getUid("setControlSize:"), function $CPProgressIndicator__setControlSize_(self, _cmd, aControlSize) +{ with(self) +{ + if (_controlSize == aControlSize) + return; + _controlSize = aControlSize; + objj_msgSend(self, "updateBackgroundColor"); +} +},["void","CPControlSize"]), new objj_method(sel_getUid("controlSize"), function $CPProgressIndicator__controlSize(self, _cmd) +{ with(self) +{ + return _controlSize; +} +},["CPControlSize"]), new objj_method(sel_getUid("setControlTint:"), function $CPProgressIndicator__setControlTint_(self, _cmd, aControlTint) +{ with(self) +{ +} +},["void","CPControlTint"]), new objj_method(sel_getUid("controlTint"), function $CPProgressIndicator__controlTint(self, _cmd) +{ with(self) +{ + return 0; +} +},["CPControlTint"]), new objj_method(sel_getUid("setBezeled:"), function $CPProgressIndicator__setBezeled_(self, _cmd, isBezeled) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("isBezeled"), function $CPProgressIndicator__isBezeled(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("setIndeterminate:"), function $CPProgressIndicator__setIndeterminate_(self, _cmd, isIndeterminate) +{ with(self) +{ + if (_isIndeterminate == isIndeterminate) + return; + _isIndeterminate = isIndeterminate; + objj_msgSend(self, "updateBackgroundColor"); +} +},["void","BOOL"]), new objj_method(sel_getUid("isIndeterminate"), function $CPProgressIndicator__isIndeterminate(self, _cmd) +{ with(self) +{ + return _isIndeterminate; +} +},["BOOL"]), new objj_method(sel_getUid("setStyle:"), function $CPProgressIndicator__setStyle_(self, _cmd, aStyle) +{ with(self) +{ + if (_style == aStyle) + return; + _style = aStyle; + objj_msgSend(self, "updateBackgroundColor"); +} +},["void","CPProgressIndicatorStyle"]), new objj_method(sel_getUid("sizeToFit"), function $CPProgressIndicator__sizeToFit(self, _cmd) +{ with(self) +{ + if (_style == CPProgressIndicatorSpinningStyle) + objj_msgSend(self, "setFrameSize:", objj_msgSend(objj_msgSend(CPProgressIndicatorSpinningStyleColors[_controlSize], "patternImage"), "size")); + else + objj_msgSend(self, "setFrameSize:", CGSizeMake(CGRectGetWidth(objj_msgSend(self, "frame")), CPProgressIndicatorStyleSizes[ + CPProgressIndicatorClassName + "BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle] + + _CPControlIdentifierForControlSize(_controlSize)][0].height)); +} +},["void"]), new objj_method(sel_getUid("setDisplayedWhenStopped:"), function $CPProgressIndicator__setDisplayedWhenStopped_(self, _cmd, isDisplayedWhenStopped) +{ with(self) +{ + if (_isDisplayedWhenStoppedSet && _isDisplayedWhenStopped == isDisplayedWhenStopped) + return; + _isDisplayedWhenStoppedSet = YES; + _isDisplayedWhenStopped = isDisplayedWhenStopped; + objj_msgSend(self, "_hideOrDisplay"); +} +},["void","BOOL"]), new objj_method(sel_getUid("isDisplayedWhenStopped"), function $CPProgressIndicator__isDisplayedWhenStopped(self, _cmd) +{ with(self) +{ + if (_isDisplayedWhenStoppedSet) + return _isDisplayedWhenStopped; + if (_style == CPProgressIndicatorBarStyle || _style == CPProgressIndicatorHUDBarStyle) + return YES; + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("_hideOrDisplay"), function $CPProgressIndicator___hideOrDisplay(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setHidden:", !_isAnimating && !objj_msgSend(self, "isDisplayedWhenStopped")); +} +},["void"]), new objj_method(sel_getUid("setFrameSize:"), function $CPProgressIndicator__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPProgressIndicator").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "drawBar"); +} +},["void","CGSize"]), new objj_method(sel_getUid("drawBar"), function $CPProgressIndicator__drawBar(self, _cmd) +{ with(self) +{ + if (_style == CPProgressIndicatorSpinningStyle) + return; + if (!_barView) + { + _barView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 16.0)); + objj_msgSend(self, "addSubview:", _barView); + } + objj_msgSend(_barView, "setBackgroundColor:", _CPControlThreePartImagePattern( + NO, + CPProgressIndicatorStyleSizes, + CPProgressIndicatorClassName, + "Bar", + CPProgressIndicatorStyleIdentifiers[_style], + _CPControlIdentifierForControlSize(_controlSize))); + var width = CGRectGetWidth(objj_msgSend(self, "bounds")), + barWidth = width * ((_doubleValue - _minValue) / (_maxValue - _minValue)); + if (barWidth > 0.0 && barWidth < 4.0) + barWidth = 4.0; + objj_msgSend(_barView, "setFrameSize:", CGSizeMake(barWidth, 16.0)); +} +},["void"]), new objj_method(sel_getUid("updateBackgroundColor"), function $CPProgressIndicator__updateBackgroundColor(self, _cmd) +{ with(self) +{ + if (YES) + { + if (_style == CPProgressIndicatorSpinningStyle) + { + objj_msgSend(_barView, "removeFromSuperview"); + _barView = nil; + objj_msgSend(self, "setBackgroundColor:", CPProgressIndicatorSpinningStyleColors[_controlSize]); + } + else + { + objj_msgSend(self, "setBackgroundColor:", _CPControlThreePartImagePattern( + NO, + CPProgressIndicatorStyleSizes, + CPProgressIndicatorClassName, + "BezelBorder", + CPProgressIndicatorStyleIdentifiers[_style], + _CPControlIdentifierForControlSize(_controlSize))); + objj_msgSend(self, "drawBar"); + } + } + else + objj_msgSend(self, "setBackgroundColor:", nil); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPProgressIndicator__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPProgressIndicator, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + CPProgressIndicatorSpinningStyleColors = []; + CPProgressIndicatorSpinningStyleColors[CPMiniControlSize] = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", + objj_msgSend(bundle, "pathForResource:", "CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"), CGSizeMake(64.0, 64.0))); + CPProgressIndicatorSpinningStyleColors[CPSmallControlSize] = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", + objj_msgSend(bundle, "pathForResource:", "CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"), CGSizeMake(64.0, 64.0))); + CPProgressIndicatorSpinningStyleColors[CPRegularControlSize] = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", + objj_msgSend(bundle, "pathForResource:", "CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"), CGSizeMake(64.0, 64.0))); + CPProgressIndicatorBezelBorderViewPool = []; + var start = CPProgressIndicatorBarStyle, + end = CPProgressIndicatorHUDBarStyle; + for (; start <= end; ++start) + { + CPProgressIndicatorBezelBorderViewPool[start] = []; + CPProgressIndicatorBezelBorderViewPool[start][CPMiniControlSize] = []; + CPProgressIndicatorBezelBorderViewPool[start][CPSmallControlSize] = []; + CPProgressIndicatorBezelBorderViewPool[start][CPRegularControlSize] = []; + } + CPProgressIndicatorClassName = objj_msgSend(self, "className"); + CPProgressIndicatorStyleIdentifiers = []; + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle] = "Bar"; + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorSpinningStyle] = "Spinny"; + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle] = "HUDBar"; + var regularIdentifier = _CPControlIdentifierForControlSize(CPRegularControlSize), + smallIdentifier = _CPControlIdentifierForControlSize(CPSmallControlSize), + miniIdentifier = _CPControlIdentifierForControlSize(CPMiniControlSize); + CPProgressIndicatorStyleSizes = []; + var prefixes = [ + CPProgressIndicatorClassName + "BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle], + CPProgressIndicatorClassName + "Bar" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle], + CPProgressIndicatorClassName + "BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle], + CPProgressIndicatorClassName + "Bar" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle] + ]; + for (var i = 0, count = prefixes.length; i<count; i++) + { + var prefix = prefixes[i]; + CPProgressIndicatorStyleSizes[prefix + regularIdentifier] = [{ width:3.0, height:16.0 }, { width:1.0, height:16.0 }, { width:3.0, height:16.0 }]; + CPProgressIndicatorStyleSizes[prefix + smallIdentifier] = [{ width:3.0, height:16.0 }, { width:1.0, height:16.0 }, { width:3.0, height:16.0 }]; + CPProgressIndicatorStyleSizes[prefix + miniIdentifier] = [{ width:3.0, height:16.0 }, { width:1.0, height:16.0 }, { width:3.0, height:16.0 }]; + } +} +},["void"])]); +} + +p;9;CPRadio.jt;7889;@STATIC;1.0;I;21;Foundation/CPObject.jI;18;Foundation/CPSet.ji;10;CPButton.jt;7806;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPSet.j", NO); +objj_executeFile("CPButton.j", YES); +CPRadioImageOffset = 4.0; +{var the_class = objj_allocateClassPair(CPButton, "CPRadio"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_radioGroup")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:radioGroup:"), function $CPRadio__initWithFrame_radioGroup_(self, _cmd, aFrame, aRadioGroup) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadio").super_class }, "initWithFrame:", aFrame); + if (self) + { + objj_msgSend(self, "setRadioGroup:", aRadioGroup); + objj_msgSend(self, "setHighlightsBy:", CPContentsCellMask); + objj_msgSend(self, "setShowsStateBy:", CPContentsCellMask); + objj_msgSend(self, "setImagePosition:", CPImageLeft); + objj_msgSend(self, "setAlignment:", CPLeftTextAlignment); + objj_msgSend(self, "setBordered:", YES); + } + return self; +} +},["id","CGRect","CPRadioGroup"]), new objj_method(sel_getUid("initWithFrame:"), function $CPRadio__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(self, "initWithFrame:radioGroup:", aFrame, objj_msgSend(CPRadioGroup, "new")); +} +},["id","CGRect"]), new objj_method(sel_getUid("nextState"), function $CPRadio__nextState(self, _cmd) +{ with(self) +{ + return CPOnState; +} +},["CPInteger"]), new objj_method(sel_getUid("setRadioGroup:"), function $CPRadio__setRadioGroup_(self, _cmd, aRadioGroup) +{ with(self) +{ + if (_radioGroup === aRadioGroup) + return; + objj_msgSend(_radioGroup, "_removeRadio:", self); + _radioGroup = aRadioGroup; + objj_msgSend(_radioGroup, "_addRadio:", self); +} +},["void","CPRadioGroup"]), new objj_method(sel_getUid("radioGroup"), function $CPRadio__radioGroup(self, _cmd) +{ with(self) +{ + return _radioGroup; +} +},["CPRadioGroup"]), new objj_method(sel_getUid("setObjectValue:"), function $CPRadio__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadio").super_class }, "setObjectValue:", aValue); + if (objj_msgSend(self, "state") === CPOnState) + objj_msgSend(_radioGroup, "_setSelectedRadio:", self); +} +},["void","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("radioWithTitle:theme:"), function $CPRadio__radioWithTitle_theme_(self, _cmd, aTitle, aTheme) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:theme:", aTitle, aTheme); +} +},["id","CPString","CPTheme"]), new objj_method(sel_getUid("radioWithTitle:"), function $CPRadio__radioWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:", aTitle); +} +},["id","CPString"]), new objj_method(sel_getUid("standardButtonWithTitle:"), function $CPRadio__standardButtonWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(CPRadio, "alloc"), "init"); + objj_msgSend(button, "setTitle:", aTitle); + return button; +} +},["CPButton","CPString"]), new objj_method(sel_getUid("themeClass"), function $CPRadio__themeClass(self, _cmd) +{ with(self) +{ + return "radio"; +} +},["CPString"])]); +} +var CPRadioRadioGroupKey = "CPRadioRadioGroupKey"; +{ +var the_class = objj_getClass("CPRadio") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPRadio\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPRadio__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadio").super_class }, "initWithCoder:", aCoder); + if (self) + _radioGroup = objj_msgSend(aCoder, "decodeObjectForKey:", CPRadioRadioGroupKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPRadio__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadio").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _radioGroup, CPRadioRadioGroupKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPRadioGroup"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_radios"), new objj_ivar("_selectedRadio"), new objj_ivar("_target"), new objj_ivar("_action")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("target"), function $CPRadioGroup__target(self, _cmd) +{ with(self) +{ +return _target; +} +},["id"]), +new objj_method(sel_getUid("setTarget:"), function $CPRadioGroup__setTarget_(self, _cmd, newValue) +{ with(self) +{ +_target = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("action"), function $CPRadioGroup__action(self, _cmd) +{ with(self) +{ +return _action; +} +},["id"]), +new objj_method(sel_getUid("setAction:"), function $CPRadioGroup__setAction_(self, _cmd, newValue) +{ with(self) +{ +_action = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPRadioGroup__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadioGroup").super_class }, "init"); + if (self) + { + _radios = objj_msgSend(CPSet, "set"); + _selectedRadio = nil; + } + return self; +} +},["id"]), new objj_method(sel_getUid("_addRadio:"), function $CPRadioGroup___addRadio_(self, _cmd, aRadio) +{ with(self) +{ + objj_msgSend(_radios, "addObject:", aRadio); + if (objj_msgSend(aRadio, "state") === CPOnState) + objj_msgSend(self, "_setSelectedRadio:", aRadio); +} +},["void","CPRadio"]), new objj_method(sel_getUid("_removeRadio:"), function $CPRadioGroup___removeRadio_(self, _cmd, aRadio) +{ with(self) +{ + if (_selectedRadio === aRadio) + _selectedRadio = nil; + objj_msgSend(_radios, "removeObject:", aRadio); +} +},["void","CPRadio"]), new objj_method(sel_getUid("_setSelectedRadio:"), function $CPRadioGroup___setSelectedRadio_(self, _cmd, aRadio) +{ with(self) +{ + if (_selectedRadio === aRadio) + return; + objj_msgSend(_selectedRadio, "setState:", CPOffState); + _selectedRadio = aRadio; + objj_msgSend(CPApp, "sendAction:to:from:", _action, _target, self); +} +},["void","CPRadio"]), new objj_method(sel_getUid("selectedRadio"), function $CPRadioGroup__selectedRadio(self, _cmd) +{ with(self) +{ + return _selectedRadio; +} +},["CPRadio"]), new objj_method(sel_getUid("radios"), function $CPRadioGroup__radios(self, _cmd) +{ with(self) +{ + return objj_msgSend(_radios, "allObjects"); +} +},["CPArray"])]); +} +var CPRadioGroupRadiosKey = "CPRadioGroupRadiosKey", + CPRadioGroupSelectedRadioKey = "CPRadioGroupSelectedRadioKey"; +{ +var the_class = objj_getClass("CPRadioGroup") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPRadioGroup\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPRadioGroup__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadioGroup").super_class }, "init"); + if (self) + { + _radios = objj_msgSend(aCoder, "decodeObjectForKey:", CPRadioGroupRadiosKey); + _selectedRadio = objj_msgSend(aCoder, "decodeObjectForKey:", CPRadioGroupSelectedRadioKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPRadioGroup__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _radios, CPRadioGroupRadiosKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _selectedRadio, CPRadioGroupSelectedRadioKey); +} +},["void","CPCoder"])]); +} + +p;13;CPResponder.jt;8679;@STATIC;1.0;I;21;Foundation/CPObject.jt;8634;objj_executeFile("Foundation/CPObject.j", NO); +CPDeleteKeyCode = 8; +CPTabKeyCode = 9; +CPReturnKeyCode = 13; +CPEscapeKeyCode = 27; +CPSpaceKeyCode = 32; +CPPageUpKeyCode = 33; +CPPageDownKeyCode = 34; +CPLeftArrowKeyCode = 37; +CPUpArrowKeyCode = 38; +CPRightArrowKeyCode = 39; +CPDownArrowKeyCode = 40; +CPDeleteForwardKeyCode = 46; +{var the_class = objj_allocateClassPair(CPObject, "CPResponder"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menu"), new objj_ivar("_nextResponder")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("acceptsFirstResponder"), function $CPResponder__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("becomeFirstResponder"), function $CPResponder__becomeFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("resignFirstResponder"), function $CPResponder__resignFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("setNextResponder:"), function $CPResponder__setNextResponder_(self, _cmd, aResponder) +{ with(self) +{ + _nextResponder = aResponder; +} +},["void","CPResponder"]), new objj_method(sel_getUid("nextResponder"), function $CPResponder__nextResponder(self, _cmd) +{ with(self) +{ + return _nextResponder; +} +},["CPResponder"]), new objj_method(sel_getUid("interpretKeyEvents:"), function $CPResponder__interpretKeyEvents_(self, _cmd, events) +{ with(self) +{ + var index = 0, + count = objj_msgSend(events, "count"); + for (; index < count; ++index) + { + var event = events[index], + modifierFlags = objj_msgSend(event, "modifierFlags"), + character = objj_msgSend(event, "charactersIgnoringModifiers"), + selectorNames = objj_msgSend(CPKeyBinding, "selectorsForKey:modifierFlags:", character, modifierFlags); + if (selectorNames) + { + for (var s = 0, scount = selectorNames.length; s < scount; s++) + { + var selector = selectorNames[s]; + if (!selector) + continue; + objj_msgSend(self, "doCommandBySelector:", CPSelectorFromString(selector)); + } + } + else if (!(modifierFlags & (CPCommandKeyMask | CPControlKeyMask)) && objj_msgSend(self, "respondsToSelector:", sel_getUid("insertText:"))) + objj_msgSend(self, "insertText:", objj_msgSend(event, "characters")); + } +} +},["void","CPArray"]), new objj_method(sel_getUid("mouseDown:"), function $CPResponder__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("rightMouseDown:"), function $CPResponder__rightMouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $CPResponder__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPResponder__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("rightMouseUp:"), function $CPResponder__rightMouseUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseMoved:"), function $CPResponder__mouseMoved_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseEntered:"), function $CPResponder__mouseEntered_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseExited:"), function $CPResponder__mouseExited_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("scrollWheel:"), function $CPResponder__scrollWheel_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("keyDown:"), function $CPResponder__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("keyUp:"), function $CPResponder__keyUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("flagsChanged:"), function $CPResponder__flagsChanged_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("performKeyEquivalent:"), function $CPResponder__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + return NO; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("insertLineBreak:"), function $CPResponder__insertLineBreak_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "insertNewline:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("insertNewline:"), function $CPResponder__insertNewline_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "nextResponder"), "insertNewline:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("cancel:"), function $CPResponder__cancel_(self, _cmd, sender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("insertTab:"), function $CPResponder__insertTab_(self, _cmd, sender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("insertBackTab:"), function $CPResponder__insertBackTab_(self, _cmd, sender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("insertText:"), function $CPResponder__insertText_(self, _cmd, aString) +{ with(self) +{ +} +},["void","CPString"]), new objj_method(sel_getUid("doCommandBySelector:"), function $CPResponder__doCommandBySelector_(self, _cmd, aSelector) +{ with(self) +{ + if (objj_msgSend(self, "respondsToSelector:", aSelector)) + objj_msgSend(self, "performSelector:", aSelector); + else + objj_msgSend(_nextResponder, "doCommandBySelector:", aSelector); +} +},["void","SEL"]), new objj_method(sel_getUid("tryToPerform:with:"), function $CPResponder__tryToPerform_with_(self, _cmd, aSelector, anObject) +{ with(self) +{ + if(objj_msgSend(self, "respondsToSelector:", aSelector)) + { + objj_msgSend(self, "performSelector:withObject:", aSelector, anObject); + return YES; + } + return objj_msgSend(_nextResponder, "tryToPerform:with:", aSelector, anObject); +} +},["BOOL","SEL","id"]), new objj_method(sel_getUid("setMenu:"), function $CPResponder__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + _menu = aMenu; +} +},["void","CPMenu"]), new objj_method(sel_getUid("menu"), function $CPResponder__menu(self, _cmd) +{ with(self) +{ + return _menu; +} +},["CPMenu"]), new objj_method(sel_getUid("undoManager"), function $CPResponder__undoManager(self, _cmd) +{ with(self) +{ + return objj_msgSend(_nextResponder, "performSelector:", _cmd); +} +},["CPUndoManager"]), new objj_method(sel_getUid("noResponderFor:"), function $CPResponder__noResponderFor_(self, _cmd, anEventSelector) +{ with(self) +{ +} +},["void","SEL"])]); +} +var CPResponderNextResponderKey = "CPResponderNextResponderKey"; +{ +var the_class = objj_getClass("CPResponder") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPResponder\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPResponder__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPResponder").super_class }, "init"); + if (self) + _nextResponder = objj_msgSend(aCoder, "decodeObjectForKey:", CPResponderNextResponderKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPResponder__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_nextResponder !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _nextResponder, CPResponderNextResponderKey); +} +},["void","CPCoder"])]); +} + +p;13;CPSavePanel.jt;3955;@STATIC;1.0;I;16;AppKit/CPPanel.jt;3915; + + +objj_executeFile("AppKit/CPPanel.j", NO); + + +{var the_class = objj_allocateClassPair(CPPanel, "CPSavePanel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_URL"), new objj_ivar("_isExtensionHidden"), new objj_ivar("_canSelectHiddenExtension"), new objj_ivar("_allowsOtherFileTypes"), new objj_ivar("_canCreateDirectories"), new objj_ivar("_allowedFileTypes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isExtensionHidden"), function $CPSavePanel__isExtensionHidden(self, _cmd) +{ with(self) +{ +return _isExtensionHidden; +} +},["id"]), +new objj_method(sel_getUid("setExtensionHidden:"), function $CPSavePanel__setExtensionHidden_(self, _cmd, newValue) +{ with(self) +{ +_isExtensionHidden = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("canSelectHiddenExtension"), function $CPSavePanel__canSelectHiddenExtension(self, _cmd) +{ with(self) +{ +return _canSelectHiddenExtension; +} +},["id"]), +new objj_method(sel_getUid("setCanSelectHiddenExtension:"), function $CPSavePanel__setCanSelectHiddenExtension_(self, _cmd, newValue) +{ with(self) +{ +_canSelectHiddenExtension = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("allowsOtherFileTypes"), function $CPSavePanel__allowsOtherFileTypes(self, _cmd) +{ with(self) +{ +return _allowsOtherFileTypes; +} +},["id"]), +new objj_method(sel_getUid("setAllowsOtherFileTypes:"), function $CPSavePanel__setAllowsOtherFileTypes_(self, _cmd, newValue) +{ with(self) +{ +_allowsOtherFileTypes = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("canCreateDirectories"), function $CPSavePanel__canCreateDirectories(self, _cmd) +{ with(self) +{ +return _canCreateDirectories; +} +},["id"]), +new objj_method(sel_getUid("setCanCreateDirectories:"), function $CPSavePanel__setCanCreateDirectories_(self, _cmd, newValue) +{ with(self) +{ +_canCreateDirectories = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("allowedFileTypes"), function $CPSavePanel__allowedFileTypes(self, _cmd) +{ with(self) +{ +return _allowedFileTypes; +} +},["id"]), +new objj_method(sel_getUid("setAllowedFileTypes:"), function $CPSavePanel__setAllowedFileTypes_(self, _cmd, newValue) +{ with(self) +{ +_allowedFileTypes = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPSavePanel__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSavePanel").super_class }, "init")) + { + _canCreateDirectories = YES; + } + + return self; +} +},["id"]), new objj_method(sel_getUid("runModal"), function $CPSavePanel__runModal(self, _cmd) +{ with(self) +{ + + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + + if (typeof window["cpSavePanel"] === "function") + { + var resultObject = window.cpSavePanel({ + isExtensionHidden: _isExtensionHidden, + canSelectHiddenExtension: _canSelectHiddenExtension, + allowsOtherFileTypes: _allowsOtherFileTypes, + canCreateDirectories: _canCreateDirectories, + allowedFileTypes: _allowedFileTypes + }), + result = resultObject.button; + + _URL = result ? objj_msgSend(CPURL, "URLWithString:", resultObject.URL) : nil; + } + else + { + + var documentName = window.prompt("Document Name:"), + result = documentName !== null; + + _URL = result ? objj_msgSend(objj_msgSend(self, "class"), "proposedFileURLWithDocumentName:", documentName) : nil; + } + + return result; +} +},["CPInteger"]), new objj_method(sel_getUid("URL"), function $CPSavePanel__URL(self, _cmd) +{ with(self) +{ + return _URL; +} +},["CPURL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("savePanel"), function $CPSavePanel__savePanel(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPSavePanel, "alloc"), "init"); +} +},["id"])]); +} + +p;10;CPScreen.jt;538;@STATIC;1.0;I;21;Foundation/CPObject.jt;494; + + +objj_executeFile("Foundation/CPObject.j", NO); + + + + +{var the_class = objj_allocateClassPair(CPObject, "CPScreen"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("visibleFrame"), function $CPScreen__visibleFrame(self, _cmd) +{ with(self) +{ + + return { origin: { x:window.screen.availLeft, y:window.screen.availTop }, size: { width:window.screen.availWidth, height:window.screen.availHeight } }; + + + +} +},["CGRect"])]); +} + +p;12;CPScroller.jt;24471;@STATIC;1.0;i;11;CPControl.jt;24435;objj_executeFile("CPControl.j", YES); +CPScrollerNoPart = 0; +CPScrollerDecrementPage = 1; +CPScrollerKnob = 2; +CPScrollerIncrementPage = 3; +CPScrollerDecrementLine = 4; +CPScrollerIncrementLine = 5; +CPScrollerKnobSlot = 6; +CPScrollerIncrementArrow = 0; +CPScrollerDecrementArrow = 1; +CPNoScrollerParts = 0; +CPOnlyScrollerArrows = 1; +CPAllScrollerParts = 2; +var PARTS_ARRANGEMENT = [CPScrollerKnobSlot, CPScrollerDecrementLine, CPScrollerIncrementLine, CPScrollerKnob], + NAMES_FOR_PARTS = {}, + PARTS_FOR_NAMES = {}; +NAMES_FOR_PARTS[CPScrollerDecrementLine] = "decrement-line"; +NAMES_FOR_PARTS[CPScrollerIncrementLine] = "increment-line"; +NAMES_FOR_PARTS[CPScrollerKnobSlot] = "knob-slot"; +NAMES_FOR_PARTS[CPScrollerKnob] = "knob"; +{var the_class = objj_allocateClassPair(CPControl, "CPScroller"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_controlSize"), new objj_ivar("_usableParts"), new objj_ivar("_partRects"), new objj_ivar("_isVertical"), new objj_ivar("_knobProportion"), new objj_ivar("_hitPart"), new objj_ivar("_trackingPart"), new objj_ivar("_trackingFloatValue"), new objj_ivar("_trackingStartPoint")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isVertical"), function $CPScroller__isVertical(self, _cmd) +{ with(self) +{ +return _isVertical; +} +},["id"]), new objj_method(sel_getUid("initWithFrame:"), function $CPScroller__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "initWithFrame:", aFrame); + if (self) + { + _controlSize = CPRegularControlSize; + _partRects = []; + objj_msgSend(self, "setFloatValue:", 0.0); + objj_msgSend(self, "setKnobProportion:", 1.0); + _hitPart = CPScrollerNoPart; + objj_msgSend(self, "_calculateIsVertical"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setControlSize:"), function $CPScroller__setControlSize_(self, _cmd, aControlSize) +{ with(self) +{ + if (_controlSize == aControlSize) + return; + _controlSize = aControlSize; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPControlSize"]), new objj_method(sel_getUid("controlSize"), function $CPScroller__controlSize(self, _cmd) +{ with(self) +{ + return _controlSize; +} +},["CPControlSize"]), new objj_method(sel_getUid("setObjectValue:"), function $CPScroller__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "setObjectValue:", MIN(1.0, MAX(0.0, +aValue))); +} +},["void","id"]), new objj_method(sel_getUid("setKnobProportion:"), function $CPScroller__setKnobProportion_(self, _cmd, aProportion) +{ with(self) +{ + _knobProportion = MIN(1.0, MAX(0.0001, aProportion)); + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","float"]), new objj_method(sel_getUid("knobProportion"), function $CPScroller__knobProportion(self, _cmd) +{ with(self) +{ + return _knobProportion; +} +},["float"]), new objj_method(sel_getUid("currentValueForThemeAttribute:"), function $CPScroller__currentValueForThemeAttribute_(self, _cmd, anAttributeName) +{ with(self) +{ + var themeState = _themeState; + if (NAMES_FOR_PARTS[_hitPart] + "-color" !== anAttributeName) + themeState &= ~CPThemeStateHighlighted; + return objj_msgSend(self, "valueForThemeAttribute:inState:", anAttributeName, themeState); +} +},["id","CPString"]), new objj_method(sel_getUid("rectForPart:"), function $CPScroller__rectForPart_(self, _cmd, aPart) +{ with(self) +{ + if (aPart == CPScrollerNoPart) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + return _partRects[aPart]; +} +},["CGRect","CPScrollerPart"]), new objj_method(sel_getUid("testPart:"), function $CPScroller__testPart_(self, _cmd, aPoint) +{ with(self) +{ + aPoint = objj_msgSend(self, "convertPoint:fromView:", aPoint, nil); + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerKnob), aPoint)) + return CPScrollerKnob; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerDecrementPage), aPoint)) + return CPScrollerDecrementPage; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerIncrementPage), aPoint)) + return CPScrollerIncrementPage; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerDecrementLine), aPoint)) + return CPScrollerDecrementLine; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerIncrementLine), aPoint)) + return CPScrollerIncrementLine; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerKnobSlot), aPoint)) + return CPScrollerKnobSlot; + return CPScrollerNoPart; +} +},["CPScrollerPart","CGPoint"]), new objj_method(sel_getUid("checkSpaceForParts"), function $CPScroller__checkSpaceForParts(self, _cmd) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + if (_knobProportion === 1.0) + { + _usableParts = CPNoScrollerParts; + _partRects[CPScrollerDecrementPage] = CGRectMakeZero(); + _partRects[CPScrollerKnob] = CGRectMakeZero(); + _partRects[CPScrollerIncrementPage] = CGRectMakeZero(); + _partRects[CPScrollerDecrementLine] = CGRectMakeZero(); + _partRects[CPScrollerIncrementLine] = CGRectMakeZero(); + _partRects[CPScrollerKnobSlot] = CGRectMakeCopy(bounds); + return; + } + _usableParts = CPAllScrollerParts; + var knobInset = objj_msgSend(self, "currentValueForThemeAttribute:", "knob-inset"), + trackInset = objj_msgSend(self, "currentValueForThemeAttribute:", "track-inset"), + width = (bounds.size.width), + height = (bounds.size.height); + if (objj_msgSend(self, "isVertical")) + { + var decrementLineSize = objj_msgSend(self, "currentValueForThemeAttribute:", "decrement-line-size"), + incrementLineSize = objj_msgSend(self, "currentValueForThemeAttribute:", "increment-line-size"), + effectiveDecrementLineHeight = decrementLineSize.height + trackInset.top, + effectiveIncrementLineHeight = incrementLineSize.height + trackInset.bottom, + slotHeight = height - effectiveDecrementLineHeight - effectiveIncrementLineHeight, + minimumKnobLength = objj_msgSend(self, "currentValueForThemeAttribute:", "minimum-knob-length"), + knobWidth = width - knobInset.left - knobInset.right, + knobHeight = MAX(minimumKnobLength, (slotHeight * _knobProportion)), + knobLocation = effectiveDecrementLineHeight + (slotHeight - knobHeight) * objj_msgSend(self, "floatValue"); + _partRects[CPScrollerDecrementPage] = { origin: { x:0.0, y:effectiveDecrementLineHeight }, size: { width:width, height:knobLocation - effectiveDecrementLineHeight } }; + _partRects[CPScrollerKnob] = { origin: { x:knobInset.left, y:knobLocation }, size: { width:knobWidth, height:knobHeight } }; + _partRects[CPScrollerIncrementPage] = { origin: { x:0.0, y:knobLocation + knobHeight }, size: { width:width, height:height - (knobLocation + knobHeight) - effectiveIncrementLineHeight } }; + _partRects[CPScrollerKnobSlot] = { origin: { x:trackInset.left, y:effectiveDecrementLineHeight }, size: { width:width - trackInset.left - trackInset.right, height:slotHeight } }; + _partRects[CPScrollerDecrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:decrementLineSize.width, height:decrementLineSize.height } }; + _partRects[CPScrollerIncrementLine] = { origin: { x:0.0, y:height - incrementLineSize.height }, size: { width:incrementLineSize.width, height:incrementLineSize.height } }; + if(height < knobHeight + decrementLineSize.height + incrementLineSize.height + trackInset.top + trackInset.bottom) + _partRects[CPScrollerKnob] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if(height < decrementLineSize.height + incrementLineSize.height - 2) + { + _partRects[CPScrollerIncrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _partRects[CPScrollerDecrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _partRects[CPScrollerKnobSlot] = { origin: { x:trackInset.left, y:0 }, size: { width:width - trackInset.left - trackInset.right, height:height } }; + } + } + else + { + var decrementLineSize = objj_msgSend(self, "currentValueForThemeAttribute:", "decrement-line-size"), + incrementLineSize = objj_msgSend(self, "currentValueForThemeAttribute:", "increment-line-size"), + effectiveDecrementLineWidth = decrementLineSize.width + trackInset.left, + effectiveIncrementLineWidth = incrementLineSize.width + trackInset.right; + slotWidth = width - effectiveDecrementLineWidth - effectiveIncrementLineWidth, + minimumKnobLength = objj_msgSend(self, "currentValueForThemeAttribute:", "minimum-knob-length"), + knobWidth = MAX(minimumKnobLength, (slotWidth * _knobProportion)), + knobHeight = height - knobInset.top - knobInset.bottom, + knobLocation = effectiveDecrementLineWidth + (slotWidth - knobWidth) * objj_msgSend(self, "floatValue"); + _partRects[CPScrollerDecrementPage] = { origin: { x:effectiveDecrementLineWidth, y:0.0 }, size: { width:knobLocation - effectiveDecrementLineWidth, height:height } }; + _partRects[CPScrollerKnob] = { origin: { x:knobLocation, y:knobInset.top }, size: { width:knobWidth, height:knobHeight } }; + _partRects[CPScrollerIncrementPage] = { origin: { x:knobLocation + knobWidth, y:0.0 }, size: { width:width - (knobLocation + knobWidth) - effectiveIncrementLineWidth, height:height } }; + _partRects[CPScrollerKnobSlot] = { origin: { x:effectiveDecrementLineWidth, y:trackInset.top }, size: { width:slotWidth, height:height - trackInset.top - trackInset.bottom } }; + _partRects[CPScrollerDecrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:decrementLineSize.width, height:decrementLineSize.height } }; + _partRects[CPScrollerIncrementLine] = { origin: { x:width - incrementLineSize.width, y:0.0 }, size: { width:incrementLineSize.width, height:incrementLineSize.height } }; + if(width < knobWidth + decrementLineSize.width + incrementLineSize.width + trackInset.left + trackInset.right) + _partRects[CPScrollerKnob] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if(width < decrementLineSize.width + incrementLineSize.width - 2) + { + _partRects[CPScrollerIncrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _partRects[CPScrollerDecrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _partRects[CPScrollerKnobSlot] = { origin: { x:0.0, y:0.0 }, size: { width:width, height:slotHeight } }; + } + } +} +},["void"]), new objj_method(sel_getUid("usableParts"), function $CPScroller__usableParts(self, _cmd) +{ with(self) +{ + return _usableParts; +} +},["CPUsableScrollerParts"]), new objj_method(sel_getUid("drawArrow:highlight:"), function $CPScroller__drawArrow_highlight_(self, _cmd, anArrow, shouldHighlight) +{ with(self) +{ +} +},["void","CPScrollerArrow","BOOL"]), new objj_method(sel_getUid("drawKnob"), function $CPScroller__drawKnob(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("drawKnobSlot"), function $CPScroller__drawKnobSlot(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("createViewForPart:"), function $CPScroller__createViewForPart_(self, _cmd, aPart) +{ with(self) +{ + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; +} +},["CPView","CPScrollerPart"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPScroller__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + return _partRects[aName]; +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPScroller__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPScroller__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "checkSpaceForParts"); + var index = 0, + count = PARTS_ARRANGEMENT.length; + for (; index < count; ++index) + { + var part = PARTS_ARRANGEMENT[index]; + if (index === 0) + view = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", part, CPWindowBelow, PARTS_ARRANGEMENT[index + 1]); + else + view = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", part, CPWindowAbove, PARTS_ARRANGEMENT[index - 1]); + if (view) + objj_msgSend(view, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", NAMES_FOR_PARTS[part] + "-color")); + } +} +},["void"]), new objj_method(sel_getUid("drawParts"), function $CPScroller__drawParts(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "drawKnobSlot"); + objj_msgSend(self, "drawKnob"); + objj_msgSend(self, "drawArrow:highlight:", CPScrollerDecrementArrow, NO); + objj_msgSend(self, "drawArrow:highlight:", CPScrollerIncrementArrow, NO); +} +},["void"]), new objj_method(sel_getUid("hitPart"), function $CPScroller__hitPart(self, _cmd) +{ with(self) +{ + return _hitPart; +} +},["CPScrollerPart"]), new objj_method(sel_getUid("trackKnob:"), function $CPScroller__trackKnob_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + if (type === CPLeftMouseUp) + { + _hitPart = CPScrollerNoPart; + return; + } + if (type === CPLeftMouseDown) + { + _trackingFloatValue = objj_msgSend(self, "floatValue"); + _trackingStartPoint = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + } + else if (type === CPLeftMouseDragged) + { + var knobRect = objj_msgSend(self, "rectForPart:", CPScrollerKnob), + knobSlotRect = objj_msgSend(self, "rectForPart:", CPScrollerKnobSlot), + remainder = !objj_msgSend(self, "isVertical") ? ((knobSlotRect.size.width) - (knobRect.size.width)) : ((knobSlotRect.size.height) - (knobRect.size.height)); + if (remainder <= 0) + objj_msgSend(self, "setFloatValue:", 0.0); + else + { + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + delta = !objj_msgSend(self, "isVertical") ? location.x - _trackingStartPoint.x : location.y - _trackingStartPoint.y; + objj_msgSend(self, "setFloatValue:", _trackingFloatValue + delta / remainder); + } + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackKnob:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackScrollButtons:"), function $CPScroller__trackScrollButtons_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + if (type === CPLeftMouseUp) + { + objj_msgSend(self, "highlight:", NO); + objj_msgSend(CPEvent, "stopPeriodicEvents"); + _hitPart = CPScrollerNoPart; + return; + } + if (type === CPLeftMouseDown) + { + _trackingPart = objj_msgSend(self, "hitPart"); + _trackingStartPoint = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if (objj_msgSend(anEvent, "modifierFlags") & CPAlternateKeyMask) + { + if (_trackingPart == CPScrollerDecrementLine) + _hitPart = CPScrollerDecrementPage; + else if (_trackingPart == CPScrollerIncrementLine) + _hitPart = CPScrollerIncrementPage; + else if (_trackingPart == CPScrollerDecrementPage || _trackingPart == CPScrollerIncrementPage) + { + var knobRect = objj_msgSend(self, "rectForPart:", CPScrollerKnob), + knobWidth = !objj_msgSend(self, "isVertical") ? (knobRect.size.width) : (knobRect.size.height), + knobSlotRect = objj_msgSend(self, "rectForPart:", CPScrollerKnobSlot), + remainder = (!objj_msgSend(self, "isVertical") ? (knobSlotRect.size.width) : (knobSlotRect.size.height)) - knobWidth; + objj_msgSend(self, "setFloatValue:", ((!objj_msgSend(self, "isVertical") ? _trackingStartPoint.x - (knobSlotRect.origin.x) : _trackingStartPoint.y - (knobSlotRect.origin.y)) - knobWidth / 2.0) / remainder); + _hitPart = CPScrollerKnob; + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + return objj_msgSend(self, "trackKnob:", anEvent); + } + } + objj_msgSend(self, "highlight:", YES); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + objj_msgSend(CPEvent, "startPeriodicEventsAfterDelay:withPeriod:", 0.5, 0.04); + } + else if (type === CPLeftMouseDragged) + { + _trackingStartPoint = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if (_trackingPart == CPScrollerDecrementPage || _trackingPart == CPScrollerIncrementPage) + { + var hitPart = objj_msgSend(self, "testPart:", objj_msgSend(anEvent, "locationInWindow")); + if (hitPart == CPScrollerDecrementPage || hitPart == CPScrollerIncrementPage) + { + _trackingPart = hitPart; + _hitPart = hitPart; + } + } + objj_msgSend(self, "highlight:", CGRectContainsPoint(objj_msgSend(self, "rectForPart:", _trackingPart), _trackingStartPoint)); + } + else if (type == CPPeriodic && CGRectContainsPoint(objj_msgSend(self, "rectForPart:", _trackingPart), _trackingStartPoint)) + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackScrollButtons:"), CPPeriodicMask | CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_calculateIsVertical"), function $CPScroller___calculateIsVertical(self, _cmd) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + width = (bounds.size.width), + height = (bounds.size.height); + _isVertical = width < height ? 1 : (width > height ? 0 : -1); + if (_isVertical === 1) + objj_msgSend(self, "setThemeState:", CPThemeStateVertical); + else if (_isVertical === 0) + objj_msgSend(self, "unsetThemeState:", CPThemeStateVertical); +} +},["void"]), new objj_method(sel_getUid("setFrameSize:"), function $CPScroller__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "checkSpaceForParts"); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CGSize"]), new objj_method(sel_getUid("mouseDown:"), function $CPScroller__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + _hitPart = objj_msgSend(self, "testPart:", objj_msgSend(anEvent, "locationInWindow")); + switch (_hitPart) + { + case CPScrollerKnob: return objj_msgSend(self, "trackKnob:", anEvent); + case CPScrollerDecrementLine: + case CPScrollerIncrementLine: + case CPScrollerDecrementPage: + case CPScrollerIncrementPage: return objj_msgSend(self, "trackScrollButtons:", anEvent); + } +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPScroller__themeClass(self, _cmd) +{ with(self) +{ + return "scroller"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPScroller__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithJSObject:", { + "scroller-width": 15.0, + "knob-slot-color": objj_msgSend(CPColor, "lightGrayColor"), + "decrement-line-color": objj_msgSend(CPNull, "null"), + "increment-line-color": objj_msgSend(CPNull, "null"), + "knob-color": objj_msgSend(CPColor, "grayColor"), + "decrement-line-size":{ width:0.0, height:0.0 }, + "increment-line-size":{ width:0.0, height:0.0 }, + "track-inset":{ top:(0), right:(0), bottom:(0), left:(0) }, + "knob-inset": { top:(0), right:(0), bottom:(0), left:(0) }, + "minimum-knob-length":21.0 + }) +} +},["id"]), new objj_method(sel_getUid("scrollerWidth"), function $CPScroller__scrollerWidth(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(CPScroller, "alloc"), "init"), "currentValueForThemeAttribute:", "scroller-width"); +} +},["float"]), new objj_method(sel_getUid("scrollerWidthForControlSize:"), function $CPScroller__scrollerWidthForControlSize_(self, _cmd, aControlSize) +{ with(self) +{ + return objj_msgSend(self, "scrollerWidth"); +} +},["float","CPControlSize"])]); +} +var CPScrollerControlSizeKey = "CPScrollerControlSize", + CPScrollerKnobProportionKey = "CPScrollerKnobProportion"; +{ +var the_class = objj_getClass("CPScroller") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPScroller__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "initWithCoder:", aCoder)) + { + _controlSize = CPRegularControlSize; + if (objj_msgSend(aCoder, "containsValueForKey:", CPScrollerControlSizeKey)) + _controlSize = objj_msgSend(aCoder, "decodeIntForKey:", CPScrollerControlSizeKey); + _knobProportion = 1.0; + if (objj_msgSend(aCoder, "containsValueForKey:", CPScrollerKnobProportionKey)) + _knobProportion = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollerKnobProportionKey); + _partRects = []; + _hitPart = CPScrollerNoPart; + objj_msgSend(self, "_calculateIsVertical"); + var frame = objj_msgSend(self, "frame"), + scrollerWidth = objj_msgSend(CPScroller, "scrollerWidth"); + if (objj_msgSend(self, "isVertical") && CGRectGetWidth(frame) !== scrollerWidth) + frame.size.width = scrollerWidth; + if (!objj_msgSend(self, "isVertical") && CGRectGetHeight(frame) !== scrollerWidth) + frame.size.height = scrollerWidth; + objj_msgSend(self, "setFrame:", frame); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPScroller__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeInt:forKey:", _controlSize, CPScrollerControlSizeKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _knobProportion, CPScrollerKnobProportionKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPScroller") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setFloatValue:knobProportion:"), function $CPScroller__setFloatValue_knobProportion_(self, _cmd, aValue, aProportion) +{ with(self) +{ + objj_msgSend(self, "setFloatValue:", aValue); + objj_msgSend(self, "setKnobProportion:", aProportion); +} +},["void","float","float"])]); +} + +p;14;CPScrollView.jt;39646;@STATIC;1.0;i;8;CPView.ji;12;CPClipView.ji;12;CPScroller.jt;39580;objj_executeFile("CPView.j", YES); +objj_executeFile("CPClipView.j", YES); +objj_executeFile("CPScroller.j", YES); +{var the_class = objj_allocateClassPair(CPView, "CPScrollView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_contentView"), new objj_ivar("_headerClipView"), new objj_ivar("_cornerView"), new objj_ivar("_bottomCornerView"), new objj_ivar("_hasVerticalScroller"), new objj_ivar("_hasHorizontalScroller"), new objj_ivar("_autohidesScrollers"), new objj_ivar("_verticalScroller"), new objj_ivar("_horizontalScroller"), new objj_ivar("_recursionCount"), new objj_ivar("_verticalLineScroll"), new objj_ivar("_verticalPageScroll"), new objj_ivar("_horizontalLineScroll"), new objj_ivar("_horizontalPageScroll"), new objj_ivar("_borderType")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPScrollView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScrollView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _verticalLineScroll = 10.0; + _verticalPageScroll = 10.0; + _horizontalLineScroll = 10.0; + _horizontalPageScroll = 10.0; + _borderType = CPNoBorder; + _contentView = objj_msgSend(objj_msgSend(CPClipView, "alloc"), "initWithFrame:", objj_msgSend(self, "_insetBounds")); + objj_msgSend(self, "addSubview:", _contentView); + _headerClipView = objj_msgSend(objj_msgSend(CPClipView, "alloc"), "init"); + objj_msgSend(self, "addSubview:", _headerClipView); + _bottomCornerView = objj_msgSend(objj_msgSend(CPView, "alloc"), "init"); + objj_msgSend(self, "addSubview:", _bottomCornerView); + objj_msgSend(self, "setHasVerticalScroller:", YES); + objj_msgSend(self, "setHasHorizontalScroller:", YES); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("_insetBounds"), function $CPScrollView___insetBounds(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "_insetBounds:borderType:", objj_msgSend(self, "bounds"), _borderType); +} +},["CGRect"]), new objj_method(sel_getUid("contentSize"), function $CPScrollView__contentSize(self, _cmd) +{ with(self) +{ + return objj_msgSend(_contentView, "frame").size; +} +},["CGRect"]), new objj_method(sel_getUid("documentView"), function $CPScrollView__documentView(self, _cmd) +{ with(self) +{ + return objj_msgSend(_contentView, "documentView"); +} +},["id"]), new objj_method(sel_getUid("setContentView:"), function $CPScrollView__setContentView_(self, _cmd, aContentView) +{ with(self) +{ + if (_contentView !== aContentView || !aContentView) + return; + var documentView = objj_msgSend(aContentView, "documentView"); + if (documentView) + objj_msgSend(documentView, "removeFromSuperview"); + objj_msgSend(_contentView, "removeFromSuperview"); + _contentView = aContentView; + objj_msgSend(_contentView, "setDocumentView:", documentView); + objj_msgSend(self, "addSubview:", _contentView); + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CPClipView"]), new objj_method(sel_getUid("contentView"), function $CPScrollView__contentView(self, _cmd) +{ with(self) +{ + return _contentView; +} +},["CPClipView"]), new objj_method(sel_getUid("setDocumentView:"), function $CPScrollView__setDocumentView_(self, _cmd, aView) +{ with(self) +{ + objj_msgSend(_contentView, "setDocumentView:", aView); + objj_msgSend(self, "_updateCornerAndHeaderView"); + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CPView"]), new objj_method(sel_getUid("reflectScrolledClipView:"), function $CPScrollView__reflectScrolledClipView_(self, _cmd, aClipView) +{ with(self) +{ + if(_contentView !== aClipView) + return; + if (_recursionCount > 5) + return; + ++_recursionCount; + var documentView = objj_msgSend(self, "documentView"); + if (!documentView) + { + if (_autohidesScrollers) + { + objj_msgSend(_verticalScroller, "setHidden:", YES); + objj_msgSend(_horizontalScroller, "setHidden:", YES); + } + else + { + } + objj_msgSend(_contentView, "setFrame:", objj_msgSend(self, "_insetBounds")); + objj_msgSend(_headerClipView, "setFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + --_recursionCount; + return; + } + var documentFrame = objj_msgSend(documentView, "frame"), + contentFrame = objj_msgSend(self, "_insetBounds"), + headerClipViewFrame = objj_msgSend(self, "_headerClipViewFrame"), + headerClipViewHeight = (headerClipViewFrame.size.height); + contentFrame.origin.y += headerClipViewHeight; + contentFrame.size.height -= headerClipViewHeight; + var difference = { width:(documentFrame.size.width) - (contentFrame.size.width), height:(documentFrame.size.height) - (contentFrame.size.height) }, + verticalScrollerWidth = (objj_msgSend(_verticalScroller, "frame").size.width), + horizontalScrollerHeight = (objj_msgSend(_horizontalScroller, "frame").size.height), + hasVerticalScroll = difference.height > 0.0, + hasHorizontalScroll = difference.width > 0.0, + shouldShowVerticalScroller = _hasVerticalScroller && (!_autohidesScrollers || hasVerticalScroll), + shouldShowHorizontalScroller = _hasHorizontalScroller && (!_autohidesScrollers || hasHorizontalScroll); + if (shouldShowVerticalScroller) + { + difference.width += verticalScrollerWidth; + hasHorizontalScroll = difference.width > 0.0; + shouldShowHorizontalScroller = _hasHorizontalScroller && (!_autohidesScrollers || hasHorizontalScroll); + } + if (shouldShowHorizontalScroller) + { + difference.height += horizontalScrollerHeight; + hasVerticalScroll = difference.height > 0.0; + shouldShowVerticalScroller = _hasVerticalScroller && (!_autohidesScrollers || hasVerticalScroll); + } + objj_msgSend(_verticalScroller, "setHidden:", !shouldShowVerticalScroller); + objj_msgSend(_verticalScroller, "setEnabled:", hasVerticalScroll); + objj_msgSend(_horizontalScroller, "setHidden:", !shouldShowHorizontalScroller); + objj_msgSend(_horizontalScroller, "setEnabled:", hasHorizontalScroll); + if (shouldShowVerticalScroller) + contentFrame.size.width -= verticalScrollerWidth; + if (shouldShowHorizontalScroller) + contentFrame.size.height -= horizontalScrollerHeight; + var scrollPoint = objj_msgSend(_contentView, "bounds").origin, + wasShowingVerticalScroller = !objj_msgSend(_verticalScroller, "isHidden"), + wasShowingHorizontalScroller = !objj_msgSend(_horizontalScroller, "isHidden"); + if (shouldShowVerticalScroller) + { + var verticalScrollerY = + MAX((contentFrame.origin.y), MAX((objj_msgSend(self, "_cornerViewFrame").origin.y + objj_msgSend(self, "_cornerViewFrame").size.height), (headerClipViewFrame.origin.y + headerClipViewFrame.size.height))); + var verticalScrollerHeight = (contentFrame.origin.y + contentFrame.size.height) - verticalScrollerY; + objj_msgSend(_verticalScroller, "setFloatValue:", (difference.height <= 0.0) ? 0.0 : scrollPoint.y / difference.height); + objj_msgSend(_verticalScroller, "setKnobProportion:", (contentFrame.size.height) / (documentFrame.size.height)); + objj_msgSend(_verticalScroller, "setFrame:", { origin: { x:(contentFrame.origin.x + contentFrame.size.width), y:verticalScrollerY }, size: { width:verticalScrollerWidth, height:verticalScrollerHeight } }); + } + else if (wasShowingVerticalScroller) + { + objj_msgSend(_verticalScroller, "setFloatValue:", 0.0); + objj_msgSend(_verticalScroller, "setKnobProportion:", 1.0); + } + if (shouldShowHorizontalScroller) + { + objj_msgSend(_horizontalScroller, "setFloatValue:", (difference.width <= 0.0) ? 0.0 : scrollPoint.x / difference.width); + objj_msgSend(_horizontalScroller, "setKnobProportion:", (contentFrame.size.width) / (documentFrame.size.width)); + objj_msgSend(_horizontalScroller, "setFrame:", { origin: { x:(contentFrame.origin.x), y:(contentFrame.origin.y + contentFrame.size.height) }, size: { width:(contentFrame.size.width), height:horizontalScrollerHeight } }); + } + else if (wasShowingHorizontalScroller) + { + objj_msgSend(_horizontalScroller, "setFloatValue:", 0.0); + objj_msgSend(_horizontalScroller, "setKnobProportion:", 1.0); + } + objj_msgSend(_contentView, "setFrame:", contentFrame); + objj_msgSend(_headerClipView, "setFrame:", headerClipViewFrame); + objj_msgSend(_cornerView, "setFrame:", objj_msgSend(self, "_cornerViewFrame")); + objj_msgSend(objj_msgSend(self, "bottomCornerView"), "setFrame:", objj_msgSend(self, "_bottomCornerViewFrame")); + objj_msgSend(objj_msgSend(self, "bottomCornerView"), "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "bottom-corner-color")); + --_recursionCount; +} +},["void","CPClipView"]), new objj_method(sel_getUid("setBorderType:"), function $CPScrollView__setBorderType_(self, _cmd, borderType) +{ with(self) +{ + if (_borderType == borderType) + return; + _borderType = borderType; + objj_msgSend(self, "reflectScrolledClipView:", _contentView); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPBorderType"]), new objj_method(sel_getUid("borderType"), function $CPScrollView__borderType(self, _cmd) +{ with(self) +{ + return _borderType; +} +},["CPBorderType"]), new objj_method(sel_getUid("setHorizontalScroller:"), function $CPScrollView__setHorizontalScroller_(self, _cmd, aScroller) +{ with(self) +{ + if (_horizontalScroller === aScroller) + return; + objj_msgSend(_horizontalScroller, "removeFromSuperview"); + objj_msgSend(_horizontalScroller, "setTarget:", nil); + objj_msgSend(_horizontalScroller, "setAction:", nil); + _horizontalScroller = aScroller; + objj_msgSend(_horizontalScroller, "setTarget:", self); + objj_msgSend(_horizontalScroller, "setAction:", sel_getUid("_horizontalScrollerDidScroll:")); + objj_msgSend(self, "addSubview:", _horizontalScroller); + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CPScroller"]), new objj_method(sel_getUid("horizontalScroller"), function $CPScrollView__horizontalScroller(self, _cmd) +{ with(self) +{ + return _horizontalScroller; +} +},["CPScroller"]), new objj_method(sel_getUid("setHasHorizontalScroller:"), function $CPScrollView__setHasHorizontalScroller_(self, _cmd, shouldHaveHorizontalScroller) +{ with(self) +{ + if (_hasHorizontalScroller === shouldHaveHorizontalScroller) + return; + _hasHorizontalScroller = shouldHaveHorizontalScroller; + if (_hasHorizontalScroller && !_horizontalScroller) + { + var bounds = objj_msgSend(self, "_insetBounds"); + objj_msgSend(self, "setHorizontalScroller:", objj_msgSend(objj_msgSend(CPScroller, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, MAX((bounds.size.width), objj_msgSend(CPScroller, "scrollerWidth") + 1), objj_msgSend(CPScroller, "scrollerWidth")))); + objj_msgSend(objj_msgSend(self, "horizontalScroller"), "setFrameSize:", CGSizeMake((bounds.size.width), objj_msgSend(CPScroller, "scrollerWidth"))); + } + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","BOOL"]), new objj_method(sel_getUid("hasHorizontalScroller"), function $CPScrollView__hasHorizontalScroller(self, _cmd) +{ with(self) +{ + return _hasHorizontalScroller; +} +},["BOOL"]), new objj_method(sel_getUid("setVerticalScroller:"), function $CPScrollView__setVerticalScroller_(self, _cmd, aScroller) +{ with(self) +{ + if (_verticalScroller === aScroller) + return; + objj_msgSend(_verticalScroller, "removeFromSuperview"); + objj_msgSend(_verticalScroller, "setTarget:", nil); + objj_msgSend(_verticalScroller, "setAction:", nil); + _verticalScroller = aScroller; + objj_msgSend(_verticalScroller, "setTarget:", self); + objj_msgSend(_verticalScroller, "setAction:", sel_getUid("_verticalScrollerDidScroll:")); + objj_msgSend(self, "addSubview:", _verticalScroller); + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CPScroller"]), new objj_method(sel_getUid("verticalScroller"), function $CPScrollView__verticalScroller(self, _cmd) +{ with(self) +{ + return _verticalScroller; +} +},["CPScroller"]), new objj_method(sel_getUid("setHasVerticalScroller:"), function $CPScrollView__setHasVerticalScroller_(self, _cmd, shouldHaveVerticalScroller) +{ with(self) +{ + if (_hasVerticalScroller === shouldHaveVerticalScroller) + return; + _hasVerticalScroller = shouldHaveVerticalScroller; + if (_hasVerticalScroller && !_verticalScroller) + { + var bounds = objj_msgSend(self, "_insetBounds"); + objj_msgSend(self, "setVerticalScroller:", objj_msgSend(objj_msgSend(CPScroller, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:objj_msgSend(CPScroller, "scrollerWidth"), height:MAX((bounds.size.height), objj_msgSend(CPScroller, "scrollerWidth") + 1) } })); + objj_msgSend(objj_msgSend(self, "verticalScroller"), "setFrameSize:", CGSizeMake(objj_msgSend(CPScroller, "scrollerWidth"), (bounds.size.height))); + } + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","BOOL"]), new objj_method(sel_getUid("hasVerticalScroller"), function $CPScrollView__hasVerticalScroller(self, _cmd) +{ with(self) +{ + return _hasVerticalScroller; +} +},["BOOL"]), new objj_method(sel_getUid("setAutohidesScrollers:"), function $CPScrollView__setAutohidesScrollers_(self, _cmd, autohidesScrollers) +{ with(self) +{ + if (_autohidesScrollers == autohidesScrollers) + return; + _autohidesScrollers = autohidesScrollers; + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","BOOL"]), new objj_method(sel_getUid("autohidesScrollers"), function $CPScrollView__autohidesScrollers(self, _cmd) +{ with(self) +{ + return _autohidesScrollers; +} +},["BOOL"]), new objj_method(sel_getUid("_updateCornerAndHeaderView"), function $CPScrollView___updateCornerAndHeaderView(self, _cmd) +{ with(self) +{ + var documentView = objj_msgSend(self, "documentView"), + currentHeaderView = objj_msgSend(self, "_headerView"), + documentHeaderView = objj_msgSend(documentView, "respondsToSelector:", sel_getUid("headerView")) ? objj_msgSend(documentView, "headerView") : nil; + if (currentHeaderView !== documentHeaderView) + { + objj_msgSend(currentHeaderView, "removeFromSuperview"); + objj_msgSend(_headerClipView, "setDocumentView:", documentHeaderView); + } + var documentCornerView = objj_msgSend(documentView, "respondsToSelector:", sel_getUid("cornerView")) ? objj_msgSend(documentView, "cornerView") : nil; + if (_cornerView !== documentCornerView) + { + objj_msgSend(_cornerView, "removeFromSuperview"); + _cornerView = documentCornerView; + if (_cornerView) + objj_msgSend(self, "addSubview:", _cornerView); + } + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void"]), new objj_method(sel_getUid("_headerView"), function $CPScrollView___headerView(self, _cmd) +{ with(self) +{ + return objj_msgSend(_headerClipView, "documentView"); +} +},["CPView"]), new objj_method(sel_getUid("_cornerViewFrame"), function $CPScrollView___cornerViewFrame(self, _cmd) +{ with(self) +{ + if (!_cornerView) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var bounds = objj_msgSend(self, "_insetBounds"), + frame = objj_msgSend(_cornerView, "frame"); + frame.origin.x = (bounds.origin.x + bounds.size.width) - (frame.size.width); + frame.origin.y = (bounds.origin.y); + return frame; +} +},["CGRect"]), new objj_method(sel_getUid("_headerClipViewFrame"), function $CPScrollView___headerClipViewFrame(self, _cmd) +{ with(self) +{ + var headerView = objj_msgSend(self, "_headerView"); + if (!headerView) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var frame = objj_msgSend(self, "_insetBounds"); + frame.size.height = (objj_msgSend(headerView, "frame").size.height); + frame.size.width -= (objj_msgSend(self, "_cornerViewFrame").size.width); + return frame; +} +},["CGRect"]), new objj_method(sel_getUid("_bottomCornerViewFrame"), function $CPScrollView___bottomCornerViewFrame(self, _cmd) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "horizontalScroller"), "isHidden") || objj_msgSend(objj_msgSend(self, "verticalScroller"), "isHidden")) + return CGRectMakeZero(); + var verticalFrame = objj_msgSend(objj_msgSend(self, "verticalScroller"), "frame"), + bottomCornerFrame = CGRectMakeZero(); + bottomCornerFrame.origin.x = CGRectGetMinX(verticalFrame); + bottomCornerFrame.origin.y = CGRectGetMaxY(verticalFrame); + bottomCornerFrame.size.width = objj_msgSend(CPScroller, "scrollerWidth"); + bottomCornerFrame.size.height = objj_msgSend(CPScroller, "scrollerWidth"); + return bottomCornerFrame; +} +},["CGRect"]), new objj_method(sel_getUid("setBottomCornerView:"), function $CPScrollView__setBottomCornerView_(self, _cmd, aBottomCornerView) +{ with(self) +{ + if (_bottomCornerView === aBottomCornerView) + return; + objj_msgSend(_bottomCornerView, "removeFromSuperview"); + objj_msgSend(aBottomCornerView, "setFrame:", objj_msgSend(self, "_bottomCornerViewFrame")); + objj_msgSend(self, "addSubview:", aBottomCornerView); + _bottomCornerView = aBottomCornerView; + objj_msgSend(self, "_updateCornerAndHeaderView"); +} +},["void","CPView"]), new objj_method(sel_getUid("bottomCornerView"), function $CPScrollView__bottomCornerView(self, _cmd) +{ with(self) +{ + return _bottomCornerView; +} +},["CPView"]), new objj_method(sel_getUid("_verticalScrollerDidScroll:"), function $CPScrollView___verticalScrollerDidScroll_(self, _cmd, aScroller) +{ with(self) +{ + var value = objj_msgSend(aScroller, "floatValue"), + documentFrame = objj_msgSend(objj_msgSend(_contentView, "documentView"), "frame"), + contentBounds = objj_msgSend(_contentView, "bounds"); + switch (objj_msgSend(_verticalScroller, "hitPart")) + { + case CPScrollerDecrementLine: contentBounds.origin.y -= _verticalLineScroll; + break; + case CPScrollerIncrementLine: contentBounds.origin.y += _verticalLineScroll; + break; + case CPScrollerDecrementPage: contentBounds.origin.y -= (contentBounds.size.height) - _verticalPageScroll; + break; + case CPScrollerIncrementPage: contentBounds.origin.y += (contentBounds.size.height) - _verticalPageScroll; + break; + case CPScrollerKnobSlot: + case CPScrollerKnob: + default: contentBounds.origin.y = ROUND(value * ((documentFrame.size.height) - (contentBounds.size.height))); + } + objj_msgSend(_contentView, "scrollToPoint:", contentBounds.origin); +} +},["void","CPScroller"]), new objj_method(sel_getUid("_horizontalScrollerDidScroll:"), function $CPScrollView___horizontalScrollerDidScroll_(self, _cmd, aScroller) +{ with(self) +{ + var value = objj_msgSend(aScroller, "floatValue"), + documentFrame = objj_msgSend(objj_msgSend(self, "documentView"), "frame"), + contentBounds = objj_msgSend(_contentView, "bounds"); + switch (objj_msgSend(_horizontalScroller, "hitPart")) + { + case CPScrollerDecrementLine: contentBounds.origin.x -= _horizontalLineScroll; + break; + case CPScrollerIncrementLine: contentBounds.origin.x += _horizontalLineScroll; + break; + case CPScrollerDecrementPage: contentBounds.origin.x -= (contentBounds.size.width) - _horizontalPageScroll; + break; + case CPScrollerIncrementPage: contentBounds.origin.x += (contentBounds.size.width) - _horizontalPageScroll; + break; + case CPScrollerKnobSlot: + case CPScrollerKnob: + default: contentBounds.origin.x = ROUND(value * ((documentFrame.size.width) - (contentBounds.size.width))); + } + objj_msgSend(_contentView, "scrollToPoint:", contentBounds.origin); + objj_msgSend(_headerClipView, "scrollToPoint:", CGPointMake(contentBounds.origin.x, 0.0)); +} +},["void","CPScroller"]), new objj_method(sel_getUid("tile"), function $CPScrollView__tile(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPScrollView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CGSize"]), new objj_method(sel_getUid("setLineScroll:"), function $CPScrollView__setLineScroll_(self, _cmd, aLineScroll) +{ with(self) +{ + objj_msgSend(self, "setHorizonalLineScroll:", aLineScroll); + objj_msgSend(self, "setVerticalLineScroll:", aLineScroll); +} +},["void","float"]), new objj_method(sel_getUid("lineScroll"), function $CPScrollView__lineScroll(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "horizontalLineScroll"); +} +},["float"]), new objj_method(sel_getUid("setHorizontalLineScroll:"), function $CPScrollView__setHorizontalLineScroll_(self, _cmd, aLineScroll) +{ with(self) +{ + _horizontalLineScroll = aLineScroll; +} +},["void","float"]), new objj_method(sel_getUid("horizontalLineScroll"), function $CPScrollView__horizontalLineScroll(self, _cmd) +{ with(self) +{ + return _horizontalLineScroll; +} +},["float"]), new objj_method(sel_getUid("setVerticalLineScroll:"), function $CPScrollView__setVerticalLineScroll_(self, _cmd, aLineScroll) +{ with(self) +{ + _verticalLineScroll = aLineScroll; +} +},["void","float"]), new objj_method(sel_getUid("verticalLineScroll"), function $CPScrollView__verticalLineScroll(self, _cmd) +{ with(self) +{ + return _verticalLineScroll; +} +},["float"]), new objj_method(sel_getUid("setPageScroll:"), function $CPScrollView__setPageScroll_(self, _cmd, aPageScroll) +{ with(self) +{ + objj_msgSend(self, "setHorizontalPageScroll:", aPageScroll); + objj_msgSend(self, "setVerticalPageScroll:", aPageScroll); +} +},["void","float"]), new objj_method(sel_getUid("pageScroll"), function $CPScrollView__pageScroll(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "horizontalPageScroll"); +} +},["float"]), new objj_method(sel_getUid("setHorizontalPageScroll:"), function $CPScrollView__setHorizontalPageScroll_(self, _cmd, aPageScroll) +{ with(self) +{ + _horizontalPageScroll = aPageScroll; +} +},["void","float"]), new objj_method(sel_getUid("horizontalPageScroll"), function $CPScrollView__horizontalPageScroll(self, _cmd) +{ with(self) +{ + return _horizontalPageScroll; +} +},["float"]), new objj_method(sel_getUid("setVerticalPageScroll:"), function $CPScrollView__setVerticalPageScroll_(self, _cmd, aPageScroll) +{ with(self) +{ + _verticalPageScroll = aPageScroll; +} +},["void","float"]), new objj_method(sel_getUid("verticalPageScroll"), function $CPScrollView__verticalPageScroll(self, _cmd) +{ with(self) +{ + return _verticalPageScroll; +} +},["float"]), new objj_method(sel_getUid("drawRect:"), function $CPScrollView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScrollView").super_class }, "drawRect:", aRect); + if (_borderType == CPNoBorder) + return; + var strokeRect = objj_msgSend(self, "bounds"), + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetLineWidth(context, 1); + switch (_borderType) + { + case CPLineBorder: + CGContextSetStrokeColor(context, objj_msgSend(self, "currentValueForThemeAttribute:", "border-color")); + CGContextStrokeRect(context, { origin: { x:strokeRect.origin.x + 0.5, y:strokeRect.origin.y + 0.5 }, size: { width:strokeRect.size.width - 2 * 0.5, height:strokeRect.size.height - 2 * 0.5 } }); + break; + case CPBezelBorder: + objj_msgSend(self, "_drawGrayBezelInContext:bounds:", context, strokeRect); + break; + case CPGrooveBorder: + objj_msgSend(self, "_drawGrooveInContext:bounds:", context, strokeRect); + break; + default: + break; + } +} +},["void","CPRect"]), new objj_method(sel_getUid("_drawGrayBezelInContext:bounds:"), function $CPScrollView___drawGrayBezelInContext_bounds_(self, _cmd, context, aRect) +{ with(self) +{ + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 142.0/255.0, 1.0)); + var y = (aRect.origin.y) + 0.5; + CGContextMoveToPoint(context, (aRect.origin.x), y); + CGContextAddLineToPoint(context, (aRect.origin.x) + 1.0, y); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 192.0/255.0, 1.0)); + CGContextMoveToPoint(context, (aRect.origin.x) + 1.0, y); + CGContextAddLineToPoint(context, (aRect.origin.x + aRect.size.width) - 1.0, y); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 142.0/255.0, 1.0)); + CGContextMoveToPoint(context, (aRect.origin.x + aRect.size.width) - 1.0, y); + CGContextAddLineToPoint(context, (aRect.origin.x + aRect.size.width), y); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 190.0/255.0, 1.0)); + var x = (aRect.origin.x + aRect.size.width) - 0.5; + CGContextMoveToPoint(context, x, (aRect.origin.y) + 1.0); + CGContextAddLineToPoint(context, x, (aRect.origin.y + aRect.size.height)); + CGContextMoveToPoint(context, x - 0.5, (aRect.origin.y + aRect.size.height) - 0.5); + CGContextAddLineToPoint(context, (aRect.origin.x), (aRect.origin.y + aRect.size.height) - 0.5); + x = (aRect.origin.x) + 0.5; + CGContextMoveToPoint(context, x, (aRect.origin.y + aRect.size.height)); + CGContextAddLineToPoint(context, x, (aRect.origin.y) + 1.0); + CGContextStrokePath(context); +} +},["void","CGContext","CGRect"]), new objj_method(sel_getUid("_drawGrooveInContext:bounds:"), function $CPScrollView___drawGrooveInContext_bounds_(self, _cmd, context, aRect) +{ with(self) +{ + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 159.0/255.0, 1.0)); + var y = (aRect.origin.y) + 0.5; + CGContextMoveToPoint(context, (aRect.origin.x), y); + CGContextAddLineToPoint(context, (aRect.origin.x + aRect.size.width), y); + var x = (aRect.origin.x + aRect.size.width) - 1.5; + CGContextMoveToPoint(context, x, (aRect.origin.y) + 2.0); + CGContextAddLineToPoint(context, x, (aRect.origin.y + aRect.size.height) - 1.0); + y = (aRect.origin.y + aRect.size.height) - 1.5; + CGContextMoveToPoint(context, (aRect.origin.x + aRect.size.width) - 1.0, y); + CGContextAddLineToPoint(context, (aRect.origin.x) + 2.0, y); + x = (aRect.origin.x) + 0.5; + CGContextMoveToPoint(context, x, (aRect.origin.y + aRect.size.height)); + CGContextAddLineToPoint(context, x, (aRect.origin.y)); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "whiteColor")); + var rect = { origin: { x:aRect.origin.x + 1.0, y:aRect.origin.y + 1.0 }, size: { width:aRect.size.width, height:aRect.size.height } }; + rect.size.width -= 1.0; + rect.size.height -= 1.0; + CGContextStrokeRect(context, { origin: { x:rect.origin.x + 0.5, y:rect.origin.y + 0.5 }, size: { width:rect.size.width - 2 * 0.5, height:rect.size.height - 2 * 0.5 } }); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 192.0/255.0, 1.0)); + y = (aRect.origin.y) + 2.5; + CGContextMoveToPoint(context, (aRect.origin.x) + 2.0, y); + CGContextAddLineToPoint(context, (aRect.origin.x + aRect.size.width) - 2.0, y); + CGContextStrokePath(context); +} +},["void","CGContext","CGRect"]), new objj_method(sel_getUid("scrollWheel:"), function $CPScrollView__scrollWheel_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "_respondToScrollWheelEventWithDeltaX:deltaY:", objj_msgSend(anEvent, "deltaX"), objj_msgSend(anEvent, "deltaY")); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_respondToScrollWheelEventWithDeltaX:deltaY:"), function $CPScrollView___respondToScrollWheelEventWithDeltaX_deltaY_(self, _cmd, deltaX, deltaY) +{ with(self) +{ + var documentFrame = objj_msgSend(objj_msgSend(self, "documentView"), "frame"), + contentBounds = objj_msgSend(_contentView, "bounds"), + contentFrame = objj_msgSend(_contentView, "frame"), + enclosingScrollView = objj_msgSend(self, "enclosingScrollView"); + contentBounds.origin.x = ROUND(contentBounds.origin.x + deltaX); + contentBounds.origin.y = ROUND(contentBounds.origin.y + deltaY); + var constrainedOrigin = objj_msgSend(_contentView, "constrainScrollPoint:", CGPointCreateCopy(contentBounds.origin)), + extraX = contentBounds.origin.x - constrainedOrigin.x, + extraY = contentBounds.origin.y - constrainedOrigin.y; + objj_msgSend(_contentView, "scrollToPoint:", constrainedOrigin); + objj_msgSend(_headerClipView, "scrollToPoint:", CGPointMake(constrainedOrigin.x, 0.0)); + if (extraX || extraY) + objj_msgSend(enclosingScrollView, "_respondToScrollWheelEventWithDeltaX:deltaY:", extraX, extraY); +} +},["void","float","float"]), new objj_method(sel_getUid("keyDown:"), function $CPScrollView__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "interpretKeyEvents:", [anEvent]); +} +},["void","CPEvent"]), new objj_method(sel_getUid("pageUp:"), function $CPScrollView__pageUp_(self, _cmd, sender) +{ with(self) +{ + var contentBounds = objj_msgSend(_contentView, "bounds"); + objj_msgSend(self, "moveByOffset:", CGSizeMake(0.0, -((contentBounds.size.height) - _verticalPageScroll))); +} +},["void","id"]), new objj_method(sel_getUid("pageDown:"), function $CPScrollView__pageDown_(self, _cmd, sender) +{ with(self) +{ + var contentBounds = objj_msgSend(_contentView, "bounds"); + objj_msgSend(self, "moveByOffset:", CGSizeMake(0.0, (contentBounds.size.height) - _verticalPageScroll)); +} +},["void","id"]), new objj_method(sel_getUid("moveLeft:"), function $CPScrollView__moveLeft_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveByOffset:", CGSizeMake(-_horizontalLineScroll, 0.0)); +} +},["void","id"]), new objj_method(sel_getUid("moveRight:"), function $CPScrollView__moveRight_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveByOffset:", CGSizeMake(_horizontalLineScroll, 0.0)); +} +},["void","id"]), new objj_method(sel_getUid("moveUp:"), function $CPScrollView__moveUp_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveByOffset:", CGSizeMake(0.0, -_verticalLineScroll)); +} +},["void","id"]), new objj_method(sel_getUid("moveDown:"), function $CPScrollView__moveDown_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveByOffset:", CGSizeMake(0.0, _verticalLineScroll)); +} +},["void","id"]), new objj_method(sel_getUid("moveByOffset:"), function $CPScrollView__moveByOffset_(self, _cmd, aSize) +{ with(self) +{ + var documentFrame = objj_msgSend(objj_msgSend(self, "documentView"), "frame"), + contentBounds = objj_msgSend(_contentView, "bounds"); + contentBounds.origin.x += aSize.width; + contentBounds.origin.y += aSize.height; + objj_msgSend(_contentView, "scrollToPoint:", contentBounds.origin); + objj_msgSend(_headerClipView, "scrollToPoint:", CGPointMake(contentBounds.origin, 0)); +} +},["void","CGSize"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPScrollView__themeClass(self, _cmd) +{ with(self) +{ + return "scrollview" +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPScrollView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithJSObject:", { + "bottom-corner-color": objj_msgSend(CPColor, "whiteColor"), + "border-color": objj_msgSend(CPColor, "blackColor") + }); +} +},["CPDictionary"]), new objj_method(sel_getUid("contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:"), function $CPScrollView__contentSizeForFrameSize_hasHorizontalScroller_hasVerticalScroller_borderType_(self, _cmd, frameSize, hFlag, vFlag, borderType) +{ with(self) +{ + var bounds = objj_msgSend(self, "_insetBounds:borderType:", { origin: { x:0.0, y:0.0 }, size: { width:frameSize.width, height:frameSize.height } }, borderType), + scrollerWidth = objj_msgSend(CPScroller, "scrollerWidth"); + if (hFlag) + bounds.size.height -= scrollerWidth; + if (vFlag) + bounds.size.width -= scrollerWidth; + return bounds.size; +} +},["CGSize","CGSize","BOOL","BOOL","CPBorderType"]), new objj_method(sel_getUid("frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:"), function $CPScrollView__frameSizeForContentSize_hasHorizontalScroller_hasVerticalScroller_borderType_(self, _cmd, contentSize, hFlag, vFlag, borderType) +{ with(self) +{ + var bounds = objj_msgSend(self, "_insetBounds:borderType:", { origin: { x:0.0, y:0.0 }, size: { width:contentSize.width, height:contentSize.height } }, borderType), + widthInset = contentSize.width - bounds.size.width, + heightInset = contentSize.height - bounds.size.height, + frameSize = { width:contentSize.width + widthInset, height:contentSize.height + heightInset }, + scrollerWidth = objj_msgSend(CPScroller, "scrollerWidth"); + if (hFlag) + frameSize.height -= scrollerWidth; + if (vFlag) + frameSize.width -= scrollerWidth; + return frameSize; +} +},["CGSize","CGSize","BOOL","BOOL","CPBorderType"]), new objj_method(sel_getUid("_insetBounds:borderType:"), function $CPScrollView___insetBounds_borderType_(self, _cmd, bounds, borderType) +{ with(self) +{ + switch (borderType) + { + case CPLineBorder: + case CPBezelBorder: + return { origin: { x:bounds.origin.x + 1.0, y:bounds.origin.y + 1.0 }, size: { width:bounds.size.width - 2 * 1.0, height:bounds.size.height - 2 * 1.0 } }; + case CPGrooveBorder: + bounds = { origin: { x:bounds.origin.x + 2.0, y:bounds.origin.y + 2.0 }, size: { width:bounds.size.width - 2 * 2.0, height:bounds.size.height - 2 * 2.0 } }; + ++bounds.origin.y; + --bounds.size.height; + return bounds; + case CPNoBorder: + default: + return bounds; + } +} +},["CGRect","CGRect","CPBorderType"])]); +} +var CPScrollViewContentViewKey = "CPScrollViewContentView", + CPScrollViewHeaderClipViewKey = "CPScrollViewHeaderClipViewKey", + CPScrollViewVLineScrollKey = "CPScrollViewVLineScroll", + CPScrollViewHLineScrollKey = "CPScrollViewHLineScroll", + CPScrollViewVPageScrollKey = "CPScrollViewVPageScroll", + CPScrollViewHPageScrollKey = "CPScrollViewHPageScroll", + CPScrollViewHasVScrollerKey = "CPScrollViewHasVScroller", + CPScrollViewHasHScrollerKey = "CPScrollViewHasHScroller", + CPScrollViewVScrollerKey = "CPScrollViewVScroller", + CPScrollViewHScrollerKey = "CPScrollViewHScroller", + CPScrollViewAutohidesScrollerKey = "CPScrollViewAutohidesScroller", + CPScrollViewCornerViewKey = "CPScrollViewCornerViewKey", + CPScrollViewBorderTypeKey = "CPScrollViewBorderTypeKey"; +{ +var the_class = objj_getClass("CPScrollView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPScrollView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPScrollView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScrollView").super_class }, "initWithCoder:", aCoder)) + { + _verticalLineScroll = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollViewVLineScrollKey); + _verticalPageScroll = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollViewVPageScrollKey); + _horizontalLineScroll = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollViewHLineScrollKey); + _horizontalPageScroll = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollViewHPageScrollKey); + _contentView = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewContentViewKey); + _headerClipView = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewHeaderClipViewKey); + if (!_headerClipView) + { + _headerClipView = objj_msgSend(objj_msgSend(CPClipView, "alloc"), "init"); + objj_msgSend(self, "addSubview:", _headerClipView); + } + _bottomCornerView = objj_msgSend(objj_msgSend(CPView, "alloc"), "init"); + objj_msgSend(self, "addSubview:", _bottomCornerView); + _verticalScroller = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewVScrollerKey); + _horizontalScroller = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewHScrollerKey); + _hasVerticalScroller = objj_msgSend(aCoder, "decodeBoolForKey:", CPScrollViewHasVScrollerKey); + _hasHorizontalScroller = objj_msgSend(aCoder, "decodeBoolForKey:", CPScrollViewHasHScrollerKey); + _autohidesScrollers = objj_msgSend(aCoder, "decodeBoolForKey:", CPScrollViewAutohidesScrollerKey); + _borderType = objj_msgSend(aCoder, "decodeIntForKey:", CPScrollViewBorderTypeKey); + _cornerView = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewCornerViewKey); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "performSelector:target:argument:order:modes:", sel_getUid("reflectScrolledClipView:"), self, _contentView, 0, [CPDefaultRunLoopMode]); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPScrollView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScrollView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _contentView, CPScrollViewContentViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _headerClipView, CPScrollViewHeaderClipViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _verticalScroller, CPScrollViewVScrollerKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _horizontalScroller, CPScrollViewHScrollerKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _verticalLineScroll, CPScrollViewVLineScrollKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _verticalPageScroll, CPScrollViewVPageScrollKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _horizontalLineScroll, CPScrollViewHLineScrollKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _horizontalPageScroll, CPScrollViewHPageScrollKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _hasVerticalScroller, CPScrollViewHasVScrollerKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _hasHorizontalScroller, CPScrollViewHasHScrollerKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _autohidesScrollers, CPScrollViewAutohidesScrollerKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _cornerView, CPScrollViewCornerViewKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _borderType, CPScrollViewBorderTypeKey); +} +},["void","CPCoder"])]); +} + +p;15;CPSearchField.jt;30307;@STATIC;1.0;i;13;CPTextField.jt;30269;objj_executeFile("CPTextField.j", YES); +CPSearchFieldRecentsTitleMenuItemTag = 1000; +CPSearchFieldRecentsMenuItemTag = 1001; +CPSearchFieldClearRecentsMenuItemTag = 1002; +CPSearchFieldNoRecentsMenuItemTag = 1003; +CPSearchFieldSeparatorMenuItemTag = 1004; +var CPSearchFieldSearchImage = nil, + CPSearchFieldFindImage = nil, + CPSearchFieldCancelImage = nil, + CPSearchFieldCancelPressedImage = nil; +var SEARCH_BUTTON_DEFAULT_WIDTH = 25.0, + CANCEL_BUTTON_DEFAULT_WIDTH = 22.0, + BUTTON_DEFAULT_HEIGHT = 22.0; +var RECENT_SEARCH_PREFIX = " "; +{var the_class = objj_allocateClassPair(CPTextField, "CPSearchField"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_searchButton"), new objj_ivar("_cancelButton"), new objj_ivar("_searchMenuTemplate"), new objj_ivar("_searchMenu"), new objj_ivar("_recentsAutosaveName"), new objj_ivar("_recentSearches"), new objj_ivar("_maximumRecents"), new objj_ivar("_sendsWholeSearchString"), new objj_ivar("_sendsSearchStringImmediately"), new objj_ivar("_canResignFirstResponder"), new objj_ivar("_partialStringTimer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPSearchField__initWithFrame_(self, _cmd, frame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "initWithFrame:", frame)) + { + _maximumRecents = 10; + _sendsWholeSearchString = NO; + _sendsSearchStringImmediately = NO; + _recentsAutosaveName = nil; + objj_msgSend(self, "_init"); + _cancelButton._DOMElement.style.cursor = "default"; + _searchButton._DOMElement.style.cursor = "default"; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("_init"), function $CPSearchField___init(self, _cmd) +{ with(self) +{ + _recentSearches = objj_msgSend(CPArray, "array"); + objj_msgSend(self, "setBezeled:", YES); + objj_msgSend(self, "setBezelStyle:", CPTextFieldRoundedBezel); + objj_msgSend(self, "setBordered:", YES); + objj_msgSend(self, "setEditable:", YES); + objj_msgSend(self, "setDelegate:", self); + objj_msgSend(self, "setContinuous:", YES); + var bounds = objj_msgSend(self, "bounds"), + cancelButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", objj_msgSend(self, "cancelButtonRectForBounds:", bounds)), + searchButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", objj_msgSend(self, "searchButtonRectForBounds:", bounds)); + objj_msgSend(self, "setCancelButton:", cancelButton); + objj_msgSend(self, "resetCancelButton"); + objj_msgSend(self, "setSearchButton:", searchButton); + objj_msgSend(self, "resetSearchButton"); + _canResignFirstResponder = YES; +} +},["void"]), new objj_method(sel_getUid("setSearchButton:"), function $CPSearchField__setSearchButton_(self, _cmd, button) +{ with(self) +{ + if (button != _searchButton) + { + objj_msgSend(_searchButton, "removeFromSuperview"); + _searchButton = button; + objj_msgSend(_searchButton, "setFrame:", objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds"))); + objj_msgSend(_searchButton, "setAutoresizingMask:", CPViewMaxXMargin); + objj_msgSend(self, "addSubview:", _searchButton); + } +} +},["void","CPButton"]), new objj_method(sel_getUid("searchButton"), function $CPSearchField__searchButton(self, _cmd) +{ with(self) +{ + return _searchButton; +} +},["CPButton"]), new objj_method(sel_getUid("resetSearchButton"), function $CPSearchField__resetSearchButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(self, "searchButton"), + searchButtonImage = (_searchMenuTemplate === nil) ? CPSearchFieldSearchImage : CPSearchFieldFindImage; + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setImageScaling:", CPScaleToFit); + objj_msgSend(button, "setImage:", searchButtonImage); + objj_msgSend(button, "setAutoresizingMask:", CPViewMaxXMargin); +} +},["void"]), new objj_method(sel_getUid("setCancelButton:"), function $CPSearchField__setCancelButton_(self, _cmd, button) +{ with(self) +{ + if (button != _cancelButton) + { + objj_msgSend(_cancelButton, "removeFromSuperview"); + _cancelButton = button; + objj_msgSend(_cancelButton, "setFrame:", objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds"))); + objj_msgSend(_cancelButton, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_cancelButton, "setTarget:", self); + objj_msgSend(_cancelButton, "setAction:", sel_getUid("_searchFieldCancel:")); + objj_msgSend(self, "_updateCancelButtonVisibility"); + objj_msgSend(self, "addSubview:", _cancelButton); + } +} +},["void","CPButton"]), new objj_method(sel_getUid("cancelButton"), function $CPSearchField__cancelButton(self, _cmd) +{ with(self) +{ + return _cancelButton; +} +},["CPButton"]), new objj_method(sel_getUid("resetCancelButton"), function $CPSearchField__resetCancelButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(self, "cancelButton"); + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setImageScaling:", CPScaleToFit); + objj_msgSend(button, "setImage:", CPSearchFieldCancelImage); + objj_msgSend(button, "setAlternateImage:", CPSearchFieldCancelPressedImage); + objj_msgSend(button, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(button, "setTarget:", self); + objj_msgSend(button, "setAction:", sel_getUid("_searchFieldCancel:")); +} +},["void"]), new objj_method(sel_getUid("searchTextRectForBounds:"), function $CPSearchField__searchTextRectForBounds_(self, _cmd, rect) +{ with(self) +{ + var leftOffset = 0, + width = (rect.size.width), + bounds = objj_msgSend(self, "bounds"); + if (_searchButton) + { + var searchBounds = objj_msgSend(self, "searchButtonRectForBounds:", bounds); + leftOffset = (searchBounds.origin.x + searchBounds.size.width) + 2; + } + if (_cancelButton) + { + var cancelRect = objj_msgSend(self, "cancelButtonRectForBounds:", bounds); + width = (cancelRect.origin.x) - leftOffset; + } + return { origin: { x:leftOffset, y:(rect.origin.y) }, size: { width:width, height:(rect.size.height) } }; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("searchButtonRectForBounds:"), function $CPSearchField__searchButtonRectForBounds_(self, _cmd, rect) +{ with(self) +{ + return { origin: { x:5, y:((rect.size.height) - BUTTON_DEFAULT_HEIGHT) / 2 }, size: { width:SEARCH_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT } }; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("cancelButtonRectForBounds:"), function $CPSearchField__cancelButtonRectForBounds_(self, _cmd, rect) +{ with(self) +{ + return { origin: { x:(rect.size.width) - CANCEL_BUTTON_DEFAULT_WIDTH - 5, y:((rect.size.height) - CANCEL_BUTTON_DEFAULT_WIDTH) / 2 }, size: { width:BUTTON_DEFAULT_HEIGHT, height:BUTTON_DEFAULT_HEIGHT } }; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("searchMenuTemplate"), function $CPSearchField__searchMenuTemplate(self, _cmd) +{ with(self) +{ + return _searchMenuTemplate; +} +},["CPMenu"]), new objj_method(sel_getUid("setSearchMenuTemplate:"), function $CPSearchField__setSearchMenuTemplate_(self, _cmd, aMenu) +{ with(self) +{ + _searchMenuTemplate = aMenu; + objj_msgSend(self, "resetSearchButton"); + objj_msgSend(self, "_loadRecentSearchList"); + objj_msgSend(self, "_updateSearchMenu"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("sendsWholeSearchString"), function $CPSearchField__sendsWholeSearchString(self, _cmd) +{ with(self) +{ + return _sendsWholeSearchString; +} +},["BOOL"]), new objj_method(sel_getUid("setSendsWholeSearchString:"), function $CPSearchField__setSendsWholeSearchString_(self, _cmd, flag) +{ with(self) +{ + _sendsWholeSearchString = flag; +} +},["void","BOOL"]), new objj_method(sel_getUid("sendsSearchStringImmediately"), function $CPSearchField__sendsSearchStringImmediately(self, _cmd) +{ with(self) +{ + return _sendsSearchStringImmediately; +} +},["BOOL"]), new objj_method(sel_getUid("setSendsSearchStringImmediately:"), function $CPSearchField__setSendsSearchStringImmediately_(self, _cmd, flag) +{ with(self) +{ + _sendsSearchStringImmediately = flag; +} +},["void","BOOL"]), new objj_method(sel_getUid("maximumRecents"), function $CPSearchField__maximumRecents(self, _cmd) +{ with(self) +{ + return _maximumRecents; +} +},["int"]), new objj_method(sel_getUid("setMaximumRecents:"), function $CPSearchField__setMaximumRecents_(self, _cmd, max) +{ with(self) +{ + if (max > 254) + max = 254; + else if (max < 0) + max = 10; + _maximumRecents = max; +} +},["void","int"]), new objj_method(sel_getUid("recentSearches"), function $CPSearchField__recentSearches(self, _cmd) +{ with(self) +{ + return _recentSearches; +} +},["CPArray"]), new objj_method(sel_getUid("setRecentSearches:"), function $CPSearchField__setRecentSearches_(self, _cmd, searches) +{ with(self) +{ + var max = MIN(objj_msgSend(self, "maximumRecents"), objj_msgSend(searches, "count")), + searches = objj_msgSend(searches, "subarrayWithRange:", CPMakeRange(0, max)); + _recentSearches = searches; + objj_msgSend(self, "_autosaveRecentSearchList"); +} +},["void","CPArray"]), new objj_method(sel_getUid("recentsAutosaveName"), function $CPSearchField__recentsAutosaveName(self, _cmd) +{ with(self) +{ + return _recentsAutosaveName; +} +},["CPString"]), new objj_method(sel_getUid("setRecentsAutosaveName:"), function $CPSearchField__setRecentsAutosaveName_(self, _cmd, name) +{ with(self) +{ + if (_recentsAutosaveName != nil) + objj_msgSend(self, "_deregisterForAutosaveNotification"); + _recentsAutosaveName = name; + if (_recentsAutosaveName != nil) + objj_msgSend(self, "_registerForAutosaveNotification"); +} +},["void","CPString"]), new objj_method(sel_getUid("contentRectForBounds:"), function $CPSearchField__contentRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var superbounds = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "contentRectForBounds:", bounds); + return objj_msgSend(self, "searchTextRectForBounds:", superbounds); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("menu"), function $CPSearchField__menu(self, _cmd) +{ with(self) +{ + return _searchMenu; +} +},["CPMenu"]), new objj_method(sel_getUid("isOpaque"), function $CPSearchField__isOpaque(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "isOpaque") && objj_msgSend(_cancelButton, "isOpaque") && objj_msgSend(_searchButton, "isOpaque"); +} +},["BOOL"]), new objj_method(sel_getUid("_updateCancelButtonVisibility"), function $CPSearchField___updateCancelButtonVisibility(self, _cmd) +{ with(self) +{ + objj_msgSend(_cancelButton, "setHidden:", (objj_msgSend(objj_msgSend(self, "stringValue"), "length") === 0)); +} +},["void"]), new objj_method(sel_getUid("controlTextDidChange:"), function $CPSearchField__controlTextDidChange_(self, _cmd, aNotification) +{ with(self) +{ + if (!objj_msgSend(self, "sendsWholeSearchString")) + { + if (objj_msgSend(self, "sendsSearchStringImmediately")) + objj_msgSend(self, "_sendPartialString"); + else + { + objj_msgSend(_partialStringTimer, "invalidate"); + var timeInterval = objj_msgSend(CPSearchField, "_keyboardDelayForPartialSearchString:", objj_msgSend(self, "stringValue")); + _partialStringTimer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", timeInterval, self, sel_getUid("_sendPartialString"), nil, NO); + } + } + objj_msgSend(self, "_updateCancelButtonVisibility"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_sendAction:"), function $CPSearchField___sendAction_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); +} +},["void","id"]), new objj_method(sel_getUid("sendAction:to:"), function $CPSearchField__sendAction_to_(self, _cmd, anAction, anObject) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "sendAction:to:", anAction, anObject); + objj_msgSend(_partialStringTimer, "invalidate"); + objj_msgSend(self, "_addStringToRecentSearches:", objj_msgSend(self, "stringValue")); + objj_msgSend(self, "_updateCancelButtonVisibility"); +} +},["void","SEL","id"]), new objj_method(sel_getUid("_addStringToRecentSearches:"), function $CPSearchField___addStringToRecentSearches_(self, _cmd, string) +{ with(self) +{ + if (string === nil || string === "" || objj_msgSend(_recentSearches, "containsObject:", string)) + return; + var searches = objj_msgSend(CPMutableArray, "arrayWithArray:", _recentSearches); + objj_msgSend(searches, "addObject:", string); + objj_msgSend(self, "setRecentSearches:", searches); + objj_msgSend(self, "_updateSearchMenu"); +} +},["void","CPString"]), new objj_method(sel_getUid("hitTest:"), function $CPSearchField__hitTest_(self, _cmd, aPoint) +{ with(self) +{ + if ((aPoint.x >= (objj_msgSend(self, "frame").origin.x) && aPoint.y >= (objj_msgSend(self, "frame").origin.y) && aPoint.x < (objj_msgSend(self, "frame").origin.x + objj_msgSend(self, "frame").size.width) && aPoint.y < (objj_msgSend(self, "frame").origin.y + objj_msgSend(self, "frame").size.height))) + return self; + else + return nil; +} +},["CPView","CGPoint"]), new objj_method(sel_getUid("resignFirstResponder"), function $CPSearchField__resignFirstResponder(self, _cmd) +{ with(self) +{ + return _canResignFirstResponder && objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "resignFirstResponder"); +} +},["BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $CPSearchField__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var location = objj_msgSend(anEvent, "locationInWindow"), + point = objj_msgSend(self, "convertPoint:fromView:", location, nil); + if ((point.x >= (objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.x) && point.y >= (objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.y) && point.x < (objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.x + objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).size.width) && point.y < (objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.y + objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).size.height))) + { + if (_searchMenuTemplate == nil) + objj_msgSend(self, "_sendAction:", self); + else + objj_msgSend(self, "_showMenu"); + } + else if ((point.x >= (objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.x) && point.y >= (objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.y) && point.x < (objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.x + objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).size.width) && point.y < (objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.y + objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).size.height))) + objj_msgSend(_cancelButton, "mouseDown:", anEvent); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("defaultSearchMenuTemplate"), function $CPSearchField__defaultSearchMenuTemplate(self, _cmd) +{ with(self) +{ + var template = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "init"), + item; + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Recent Searches", nil, ""); + objj_msgSend(item, "setTag:", CPSearchFieldRecentsTitleMenuItemTag); + objj_msgSend(item, "setEnabled:", NO); + objj_msgSend(template, "addItem:", item); + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Recent search item", sel_getUid("_searchFieldSearch:"), ""); + objj_msgSend(item, "setTag:", CPSearchFieldRecentsMenuItemTag); + objj_msgSend(item, "setTarget:", self); + objj_msgSend(template, "addItem:", item); + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Clear Recent Searches", sel_getUid("_searchFieldClearRecents:"), ""); + objj_msgSend(item, "setTag:", CPSearchFieldClearRecentsMenuItemTag); + objj_msgSend(item, "setTarget:", self); + objj_msgSend(template, "addItem:", item); + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "No Recent Searches", nil, ""); + objj_msgSend(item, "setTag:", CPSearchFieldNoRecentsMenuItemTag); + objj_msgSend(item, "setEnabled:", NO); + objj_msgSend(template, "addItem:", item); + return template; +} +},["CPMenu"]), new objj_method(sel_getUid("_updateSearchMenu"), function $CPSearchField___updateSearchMenu(self, _cmd) +{ with(self) +{ + if (_searchMenuTemplate === nil) + return; + var menu = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "init"), + countOfRecents = objj_msgSend(_recentSearches, "count"), + numberOfItems = objj_msgSend(_searchMenuTemplate, "numberOfItems"); + for (var i = 0; i < numberOfItems; i++) + { + var item = objj_msgSend(objj_msgSend(_searchMenuTemplate, "itemAtIndex:", i), "copy"); + switch (objj_msgSend(item, "tag")) + { + case CPSearchFieldRecentsTitleMenuItemTag: + if (countOfRecents === 0) + continue; + if (objj_msgSend(menu, "numberOfItems") > 0) + objj_msgSend(self, "_addSeparatorToMenu:", menu); + break; + case CPSearchFieldRecentsMenuItemTag: + { + var itemAction = sel_getUid("_searchFieldSearch:"); + for (var recentIndex = 0; recentIndex < countOfRecents; ++recentIndex) + { + var recentItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", RECENT_SEARCH_PREFIX + objj_msgSend(_recentSearches, "objectAtIndex:", recentIndex), itemAction, objj_msgSend(item, "keyEquivalent")); + objj_msgSend(item, "setTarget:", self); + objj_msgSend(menu, "addItem:", recentItem); + } + continue; + } + case CPSearchFieldClearRecentsMenuItemTag: + if (countOfRecents === 0) + continue; + if (objj_msgSend(menu, "numberOfItems") > 0) + objj_msgSend(self, "_addSeparatorToMenu:", menu); + objj_msgSend(item, "setAction:", sel_getUid("_searchFieldClearRecents:")); + objj_msgSend(item, "setTarget:", self); + break; + case CPSearchFieldNoRecentsMenuItemTag: + if (countOfRecents !== 0) + continue; + if (objj_msgSend(menu, "numberOfItems") > 0) + objj_msgSend(self, "_addSeparatorToMenu:", menu); + break; + case CPSearchFieldSeparatorMenuItemTag: + item = objj_msgSend(CPMenuItem, "separatorItem"); + objj_msgSend(item, "setEnabled:", NO); + objj_msgSend(menu, "addItem:", item); + continue; + } + objj_msgSend(item, "setEnabled:", (objj_msgSend(item, "isEnabled") && objj_msgSend(item, "action") != nil && objj_msgSend(item, "target") != nil)); + objj_msgSend(menu, "addItem:", item); + } + objj_msgSend(menu, "setDelegate:", self); + _searchMenu = menu; +} +},["void"]), new objj_method(sel_getUid("_addSeparatorToMenu:"), function $CPSearchField___addSeparatorToMenu_(self, _cmd, aMenu) +{ with(self) +{ + var separator = objj_msgSend(CPMenuItem, "separatorItem"); + objj_msgSend(separator, "setEnabled:", NO); + objj_msgSend(aMenu, "addItem:", separator); +} +},["void","CPMenu"]), new objj_method(sel_getUid("menuWillOpen:"), function $CPSearchField__menuWillOpen_(self, _cmd, menu) +{ with(self) +{ + _canResignFirstResponder = NO; +} +},["void","CPMenu"]), new objj_method(sel_getUid("menuDidClose:"), function $CPSearchField__menuDidClose_(self, _cmd, menu) +{ with(self) +{ + _canResignFirstResponder = YES; + objj_msgSend(self, "becomeFirstResponder"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("_showMenu"), function $CPSearchField___showMenu(self, _cmd) +{ with(self) +{ + if (_searchMenu === nil || objj_msgSend(_searchMenu, "numberOfItems") === 0 || !objj_msgSend(self, "isEnabled")) + return; + var aFrame = objj_msgSend(objj_msgSend(self, "superview"), "convertRect:toView:", objj_msgSend(self, "frame"), nil), + location = CPMakePoint(aFrame.origin.x + 10, aFrame.origin.y + aFrame.size.height - 4); + var anEvent = objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", CPRightMouseDown, location, 0, objj_msgSend(objj_msgSend(CPApp, "currentEvent"), "timestamp"), objj_msgSend(objj_msgSend(self, "window"), "windowNumber"), nil, 1, 1, 0); + objj_msgSend(self, "selectAll:", nil); + objj_msgSend(CPMenu, "popUpContextMenu:withEvent:forView:", _searchMenu, anEvent, self); +} +},["void"]), new objj_method(sel_getUid("_sendPartialString"), function $CPSearchField___sendPartialString(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + objj_msgSend(_partialStringTimer, "invalidate"); +} +},["void"]), new objj_method(sel_getUid("_searchFieldCancel:"), function $CPSearchField___searchFieldCancel_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", ""); + objj_msgSend(self, "_sendPartialString"); + objj_msgSend(self, "_updateCancelButtonVisibility"); +} +},["void","id"]), new objj_method(sel_getUid("_searchFieldSearch:"), function $CPSearchField___searchFieldSearch_(self, _cmd, sender) +{ with(self) +{ + var searchString = objj_msgSend(objj_msgSend(sender, "title"), "substringFromIndex:", objj_msgSend(RECENT_SEARCH_PREFIX, "length")); + if (objj_msgSend(sender, "tag") != CPSearchFieldRecentsMenuItemTag) + objj_msgSend(self, "_addStringToRecentSearches:", searchString); + objj_msgSend(self, "setObjectValue:", searchString); + objj_msgSend(self, "_sendPartialString"); + objj_msgSend(self, "selectAll:", nil); + objj_msgSend(self, "_updateCancelButtonVisibility"); +} +},["void","id"]), new objj_method(sel_getUid("_searchFieldClearRecents:"), function $CPSearchField___searchFieldClearRecents_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "setRecentSearches:", objj_msgSend(CPArray, "array")); + objj_msgSend(self, "_updateSearchMenu"); + objj_msgSend(self, "setStringValue:", ""); + objj_msgSend(self, "_updateCancelButtonVisibility"); + } +},["void","id"]), new objj_method(sel_getUid("_registerForAutosaveNotification"), function $CPSearchField___registerForAutosaveNotification(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "addObserver:selector:name:object:", self, sel_getUid("_updateAutosavedRecents:"), "CPAutosavedRecentsChangedNotification", nil); +} +},["void"]), new objj_method(sel_getUid("_deregisterForAutosaveNotification"), function $CPSearchField___deregisterForAutosaveNotification(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "removeObserver:name:object:", self, "CPAutosavedRecentsChangedNotification", nil); +} +},["void"]), new objj_method(sel_getUid("_autosaveRecentSearchList"), function $CPSearchField___autosaveRecentSearchList(self, _cmd) +{ with(self) +{ + if (_recentsAutosaveName != nil) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", "CPAutosavedRecentsChangedNotification", _recentsAutosaveName); +} +},["void"]), new objj_method(sel_getUid("_updateAutosavedRecents:"), function $CPSearchField___updateAutosavedRecents_(self, _cmd, notification) +{ with(self) +{ + var list = objj_msgSend(self, "recentSearches"), + name = objj_msgSend(notification, "object"), + bundle_name = objj_msgSend(objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "infoDictionary"), "objectForKey:", "CPBundleName"), + cookie_name = objj_msgSend(bundle_name, "lowercaseString") + "." + objj_msgSend(notification, "object"), + cookie = objj_msgSend(objj_msgSend(CPCookie, "alloc"), "initWithName:", cookie_name), + cookie_value = objj_msgSend(list, "componentsJoinedByString:", ","); + objj_msgSend(cookie, "setValue:expires:domain:", cookie_value, objj_msgSend(objj_msgSend(CPDate, "alloc"), "initWithTimeIntervalSinceNow:", 3600*24*365), (window.location.href.hostname)); +} +},["void","id"]), new objj_method(sel_getUid("_loadRecentSearchList"), function $CPSearchField___loadRecentSearchList(self, _cmd) +{ with(self) +{ + var list, + name = objj_msgSend(self, "recentsAutosaveName"); + if (name === nil) + return; + var bundle_name = objj_msgSend(objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "infoDictionary"), "objectForKey:", "CPBundleName"), + cookie_name = objj_msgSend(bundle_name, "lowercaseString") + "." + name, + cookie = objj_msgSend(objj_msgSend(CPCookie, "alloc"), "initWithName:", cookie_name); + if (cookie != nil) + { + var cookie_value = objj_msgSend(cookie, "value"); + list = (cookie_value != "") ? objj_msgSend(cookie_value, "componentsSeparatedByString:", ",") : objj_msgSend(CPArray, "array"); + _recentSearches = list; + } +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPSearchField__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPSearchField, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + CPSearchFieldSearchImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSearchField/CPSearchFieldSearch.png"), { width:SEARCH_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT }); + CPSearchFieldFindImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSearchField/CPSearchFieldFind.png"), { width:SEARCH_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT }); + CPSearchFieldCancelImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSearchField/CPSearchFieldCancel.png"), { width:CANCEL_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT }); + CPSearchFieldCancelPressedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSearchField/CPSearchFieldCancelPressed.png"), { width:CANCEL_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT }); +} +},["void"]), new objj_method(sel_getUid("_keyboardDelayForPartialSearchString:"), function $CPSearchField___keyboardDelayForPartialSearchString_(self, _cmd, string) +{ with(self) +{ + return (6 - MIN(objj_msgSend(string, "length"),4))/10; +} +},["double","CPString"])]); +} +var CPRecentsAutosaveNameKey = "CPRecentsAutosaveNameKey", + CPSendsWholeSearchStringKey = "CPSendsWholeSearchStringKey", + CPSendsSearchStringImmediatelyKey = "CPSendsSearchStringImmediatelyKey", + CPMaximumRecentsKey = "CPMaximumRecentsKey", + CPSearchMenuTemplateKey = "CPSearchMenuTemplateKey"; +{ +var the_class = objj_getClass("CPSearchField") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSearchField\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("encodeWithCoder:"), function $CPSearchField__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(_searchButton, "removeFromSuperview"); + objj_msgSend(_cancelButton, "removeFromSuperview"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "encodeWithCoder:", coder); + if (_searchButton) + objj_msgSend(self, "addSubview:", _searchButton); + if (_cancelButton) + objj_msgSend(self, "addSubview:", _cancelButton); + objj_msgSend(coder, "encodeBool:forKey:", _sendsWholeSearchString, CPSendsWholeSearchStringKey); + objj_msgSend(coder, "encodeBool:forKey:", _sendsSearchStringImmediately, CPSendsSearchStringImmediatelyKey); + objj_msgSend(coder, "encodeInt:forKey:", _maximumRecents, CPMaximumRecentsKey); + if (_recentsAutosaveName) + objj_msgSend(coder, "encodeObject:forKey:", _recentsAutosaveName, CPRecentsAutosaveNameKey); + if (_searchMenuTemplate) + objj_msgSend(coder, "encodeObject:forKey:", _searchMenuTemplate, CPSearchMenuTemplateKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("initWithCoder:"), function $CPSearchField__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "initWithCoder:", coder)) + { + _recentsAutosaveName = objj_msgSend(coder, "decodeObjectForKey:", CPRecentsAutosaveNameKey); + _sendsWholeSearchString = objj_msgSend(coder, "decodeBoolForKey:", CPSendsWholeSearchStringKey); + _sendsSearchStringImmediately = objj_msgSend(coder, "decodeBoolForKey:", CPSendsSearchStringImmediatelyKey); + _maximumRecents = objj_msgSend(coder, "decodeIntForKey:", CPMaximumRecentsKey); + var template = objj_msgSend(coder, "decodeObjectForKey:", CPSearchMenuTemplateKey); + if (template) + objj_msgSend(self, "setSearchMenuTemplate:", template); + objj_msgSend(self, "_init"); + } + return self; +} +},["id","CPCoder"])]); +} + +p;19;CPSecureTextField.jt;390;@STATIC;1.0;i;13;CPTextField.jt;354; + + +objj_executeFile("CPTextField.j", YES); + + + + +{var the_class = objj_allocateClassPair(CPTextField, "CPSecureTextField"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isSecure"), function $CPSecureTextField__isSecure(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"])]); +} + +p;20;CPSegmentedControl.jt;34164;@STATIC;1.0;I;20;Foundation/CPArray.ji;11;CPControl.jt;34103;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("CPControl.j", YES); +CPSegmentSwitchTrackingSelectOne = 0; +CPSegmentSwitchTrackingSelectAny = 1; +CPSegmentSwitchTrackingMomentary = 2; +{var the_class = objj_allocateClassPair(CPControl, "CPSegmentedControl"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_segments"), new objj_ivar("_themeStates"), new objj_ivar("_selectedSegment"), new objj_ivar("_segmentStyle"), new objj_ivar("_trackingMode"), new objj_ivar("_trackingSegment"), new objj_ivar("_trackingHighlighted")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPSegmentedControl__initWithFrame_(self, _cmd, aRect) +{ with(self) +{ + _segments = []; + _themeStates = []; + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "initWithFrame:", aRect); + if (self) + { + _selectedSegment = -1; + _trackingMode = CPSegmentSwitchTrackingSelectOne; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("selectedTag"), function $CPSegmentedControl__selectedTag(self, _cmd) +{ with(self) +{ + return objj_msgSend(_segments[_selectedSegment], "tag"); +} +},["int"]), new objj_method(sel_getUid("setSegmentCount:"), function $CPSegmentedControl__setSegmentCount_(self, _cmd, aCount) +{ with(self) +{ + if (_segments.length == aCount) + return; + var height = CGRectGetHeight(objj_msgSend(self, "bounds")); + if (_segments.length < aCount) + { + for (var index = _segments.length; index < aCount; ++index) + { + _segments[index] = objj_msgSend(objj_msgSend(_CPSegmentItem, "alloc"), "init"); + _themeStates[index] = CPThemeStateNormal; + } + } + else if (aCount < _segments.length) + { + _segments.length = aCount; + _themeStates.length = aCount; + } + if (_selectedSegment >= _segments.length) + _selectedSegment = -1; + objj_msgSend(self, "tileWithChangedSegment:", 0); +} +},["void","unsigned"]), new objj_method(sel_getUid("segmentCount"), function $CPSegmentedControl__segmentCount(self, _cmd) +{ with(self) +{ + return _segments.length; +} +},["unsigned"]), new objj_method(sel_getUid("setSelectedSegment:"), function $CPSegmentedControl__setSelectedSegment_(self, _cmd, aSegment) +{ with(self) +{ + objj_msgSend(self, "setSelected:forSegment:", YES, aSegment); +} +},["void","unsigned"]), new objj_method(sel_getUid("selectedSegment"), function $CPSegmentedControl__selectedSegment(self, _cmd) +{ with(self) +{ + return _selectedSegment; +} +},["unsigned"]), new objj_method(sel_getUid("selectSegmentWithTag:"), function $CPSegmentedControl__selectSegmentWithTag_(self, _cmd, aTag) +{ with(self) +{ + var index = 0; + for (; index < _segments.length; ++index) + if (_segments[index].tag == aTag) + { + objj_msgSend(self, "setSelectedSegment:", index); + return YES; + } + return NO; +} +},["BOOL","int"]), new objj_method(sel_getUid("isTracking"), function $CPSegmentedControl__isTracking(self, _cmd) +{ with(self) +{ +} +},["BOOL"]), new objj_method(sel_getUid("setTrackingMode:"), function $CPSegmentedControl__setTrackingMode_(self, _cmd, aTrackingMode) +{ with(self) +{ + if (_trackingMode == aTrackingMode) + return; + _trackingMode = aTrackingMode; + if (_trackingMode == CPSegmentSwitchTrackingSelectOne) + { + var index = 0, + selected = NO; + for (; index < _segments.length; ++index) + if (objj_msgSend(_segments[index], "selected")) + if (selected) + objj_msgSend(self, "setSelected:forSegment:", NO, index); + else + selected = YES; + } + else if (_trackingMode == CPSegmentSwitchTrackingMomentary) + { + var index = 0; + for (; index < _segments.length; ++index) + if (objj_msgSend(_segments[index], "selected")) + objj_msgSend(self, "setSelected:forSegment:", NO, index); + } +} +},["void","CPSegmentSwitchTracking"]), new objj_method(sel_getUid("trackingMode"), function $CPSegmentedControl__trackingMode(self, _cmd) +{ with(self) +{ + return _trackingMode; +} +},["CPSegmentSwitchTracking"]), new objj_method(sel_getUid("setWidth:forSegment:"), function $CPSegmentedControl__setWidth_forSegment_(self, _cmd, aWidth, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setWidth:", aWidth); + objj_msgSend(self, "tileWithChangedSegment:", aSegment); +} +},["void","float","unsigned"]), new objj_method(sel_getUid("widthForSegment:"), function $CPSegmentedControl__widthForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "width"); +} +},["float","unsigned"]), new objj_method(sel_getUid("setImage:forSegment:"), function $CPSegmentedControl__setImage_forSegment_(self, _cmd, anImage, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setImage:", anImage); + objj_msgSend(self, "tileWithChangedSegment:", aSegment); +} +},["void","CPImage","unsigned"]), new objj_method(sel_getUid("imageForSegment:"), function $CPSegmentedControl__imageForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "image"); +} +},["CPImage","unsigned"]), new objj_method(sel_getUid("setLabel:forSegment:"), function $CPSegmentedControl__setLabel_forSegment_(self, _cmd, aLabel, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setLabel:", aLabel); + objj_msgSend(self, "tileWithChangedSegment:", aSegment); +} +},["void","CPString","unsigned"]), new objj_method(sel_getUid("labelForSegment:"), function $CPSegmentedControl__labelForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "label"); +} +},["CPString","unsigned"]), new objj_method(sel_getUid("setMenu:forSegment:"), function $CPSegmentedControl__setMenu_forSegment_(self, _cmd, aMenu, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setMenu:", aMenu); +} +},["void","CPMenu","unsigned"]), new objj_method(sel_getUid("menuForSegment:"), function $CPSegmentedControl__menuForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "menu"); +} +},["CPMenu","unsigned"]), new objj_method(sel_getUid("setSelected:forSegment:"), function $CPSegmentedControl__setSelected_forSegment_(self, _cmd, isSelected, aSegment) +{ with(self) +{ + var segment = _segments[aSegment]; + if (objj_msgSend(segment, "selected") == isSelected) + return; + objj_msgSend(segment, "setSelected:", isSelected); + _themeStates[aSegment] = isSelected ? CPThemeStateSelected : CPThemeStateNormal; + if (isSelected) + { + var oldSelectedSegment = _selectedSegment; + _selectedSegment = aSegment; + if (_trackingMode == CPSegmentSwitchTrackingSelectOne && oldSelectedSegment != aSegment && oldSelectedSegment != -1) + { + objj_msgSend(_segments[oldSelectedSegment], "setSelected:", NO); + _themeStates[oldSelectedSegment] = CPThemeStateNormal; + objj_msgSend(self, "drawSegmentBezel:highlight:", oldSelectedSegment, NO); + } + } + if (_trackingMode != CPSegmentSwitchTrackingMomentary) + objj_msgSend(self, "drawSegmentBezel:highlight:", aSegment, NO); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","BOOL","unsigned"]), new objj_method(sel_getUid("isSelectedForSegment:"), function $CPSegmentedControl__isSelectedForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "selected"); +} +},["BOOL","unsigned"]), new objj_method(sel_getUid("setEnabled:forSegment:"), function $CPSegmentedControl__setEnabled_forSegment_(self, _cmd, isEnabled, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setEnabled:", isEnabled); + if (isEnabled) + _themeStates[aSegment] &= ~CPThemeStateDisabled; + else + _themeStates[aSegment] |= CPThemeStateDisabled; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","BOOL","unsigned"]), new objj_method(sel_getUid("isEnabledForSegment:"), function $CPSegmentedControl__isEnabledForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "enabled"); +} +},["BOOL","unsigned"]), new objj_method(sel_getUid("setTag:forSegment:"), function $CPSegmentedControl__setTag_forSegment_(self, _cmd, aTag, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setTag:", aTag); +} +},["void","int","unsigned"]), new objj_method(sel_getUid("tagForSegment:"), function $CPSegmentedControl__tagForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "tag"); +} +},["int","unsigned"]), new objj_method(sel_getUid("drawSegmentBezel:highlight:"), function $CPSegmentedControl__drawSegmentBezel_highlight_(self, _cmd, aSegment, shouldHighlight) +{ with(self) +{ + if (shouldHighlight) + _themeStates[aSegment] |= CPThemeStateHighlighted; + else + _themeStates[aSegment] &= ~CPThemeStateHighlighted; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","int","BOOL"]), new objj_method(sel_getUid("_leftOffsetForSegment:"), function $CPSegmentedControl___leftOffsetForSegment_(self, _cmd, segment) +{ with(self) +{ + var bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"); + if (segment == 0) + return bezelInset.left; + var thickness = objj_msgSend(self, "currentValueForThemeAttribute:", "divider-thickness"); + return objj_msgSend(self, "_leftOffsetForSegment:", segment - 1) + objj_msgSend(self, "widthForSegment:", segment - 1) + thickness; +} +},["float","unsigned"]), new objj_method(sel_getUid("_indexOfLastSegment"), function $CPSegmentedControl___indexOfLastSegment(self, _cmd) +{ with(self) +{ + var lastSegmentIndex = objj_msgSend(_segments, "count") - 1; + if (lastSegmentIndex < 0) + lastSegmentIndex = 0; + return lastSegmentIndex; +} +},["unsigned"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPSegmentedControl__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + var height = objj_msgSend(self, "currentValueForThemeAttribute:", "default-height"), + contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"), + bounds = objj_msgSend(self, "bounds"); + if (aName === "left-segment-bezel") + { + return CGRectMake(bezelInset.left, bezelInset.top, contentInset.left, height); + } + else if (aName === "right-segment-bezel") + { + return CPRectMake(CGRectGetWidth(objj_msgSend(self, "bounds")) - contentInset.right, + bezelInset.top, + contentInset.right, + height); + } + else if (aName.indexOf("segment-bezel") === 0) + { + var segment = parseInt(aName.substring("segment-bezel-".length), 10), + frame = CGRectCreateCopy(objj_msgSend(_segments[segment], "frame")); + if (segment === 0) + { + frame.origin.x += contentInset.left; + frame.size.width -= contentInset.left; + } + if (segment === _segments.length - 1) + frame.size.width = CGRectGetWidth(objj_msgSend(self, "bounds")) - contentInset.right - frame.origin.x; + return frame; + } + else if (aName.indexOf("divider-bezel") === 0) + { + var segment = parseInt(aName.substring("divider-bezel-".length), 10), + width = objj_msgSend(self, "widthForSegment:", segment), + left = objj_msgSend(self, "_leftOffsetForSegment:", segment), + thickness = objj_msgSend(self, "currentValueForThemeAttribute:", "divider-thickness"); + return CGRectMake(left + width, bezelInset.top, thickness, height); + } + else if (aName.indexOf("segment-content") === 0) + { + var segment = parseInt(aName.substring("segment-content-".length), 10); + return objj_msgSend(self, "contentFrameForSegment:", segment); + } + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPSegmentedControl__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName.substring(0, "segment-content".length) == "segment-content") + return objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + return objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPSegmentedControl__layoutSubviews(self, _cmd) +{ with(self) +{ + if (_segments.length <= 0) + return; + var themeState = _themeStates[0]; + themeState |= _themeState & CPThemeStateDisabled; + var leftCapColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "left-segment-bezel-color", themeState); + var leftBezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "left-segment-bezel", CPWindowBelow, nil); + objj_msgSend(leftBezelView, "setBackgroundColor:", leftCapColor); + var themeState = _themeStates[_themeStates.length - 1]; + themeState |= _themeState & CPThemeStateDisabled; + var rightCapColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "right-segment-bezel-color", themeState); + var rightBezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "right-segment-bezel", CPWindowBelow, nil); + objj_msgSend(rightBezelView, "setBackgroundColor:", rightCapColor); + for (var i=0, count = _themeStates.length; i<count; i++) + { + var themeState = _themeStates[i]; + themeState |= _themeState & CPThemeStateDisabled; + var bezelColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "center-segment-bezel-color", themeState); + var bezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "segment-bezel-"+i, CPWindowBelow, nil); + objj_msgSend(bezelView, "setBackgroundColor:", bezelColor); + var segment = _segments[i]; + var contentView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "segment-content-"+i, CPWindowAbove, "segment-bezel-"+i); + objj_msgSend(contentView, "setText:", objj_msgSend(segment, "label")); + objj_msgSend(contentView, "setImage:", objj_msgSend(segment, "image")); + objj_msgSend(contentView, "setFont:", objj_msgSend(self, "valueForThemeAttribute:inState:", "font", themeState)); + objj_msgSend(contentView, "setTextColor:", objj_msgSend(self, "valueForThemeAttribute:inState:", "text-color", themeState)); + objj_msgSend(contentView, "setAlignment:", objj_msgSend(self, "valueForThemeAttribute:inState:", "alignment", themeState)); + objj_msgSend(contentView, "setVerticalAlignment:", objj_msgSend(self, "valueForThemeAttribute:inState:", "vertical-alignment", themeState)); + objj_msgSend(contentView, "setLineBreakMode:", objj_msgSend(self, "valueForThemeAttribute:inState:", "line-break-mode", themeState)); + objj_msgSend(contentView, "setTextShadowColor:", objj_msgSend(self, "valueForThemeAttribute:inState:", "text-shadow-color", themeState)); + objj_msgSend(contentView, "setTextShadowOffset:", objj_msgSend(self, "valueForThemeAttribute:inState:", "text-shadow-offset", themeState)); + objj_msgSend(contentView, "setImageScaling:", objj_msgSend(self, "valueForThemeAttribute:inState:", "image-scaling", themeState)); + if (objj_msgSend(segment, "image") && objj_msgSend(segment, "label")) + objj_msgSend(contentView, "setImagePosition:", objj_msgSend(self, "valueForThemeAttribute:inState:", "image-position", themeState)); + else if (objj_msgSend(segment, "image")) + objj_msgSend(contentView, "setImagePosition:", CPImageOnly); + if (i == count - 1) + continue; + var borderState = _themeStates[i] | _themeStates[i+1]; + borderState = (borderState & CPThemeStateSelected & ~CPThemeStateHighlighted) ? CPThemeStateSelected : CPThemeStateNormal; + borderState |= _themeState & CPThemeStateDisabled; + var borderColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "divider-bezel-color", borderState); + var borderView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "divider-bezel-"+i, CPWindowBelow, nil); + objj_msgSend(borderView, "setBackgroundColor:", borderColor); + } +} +},["void"]), new objj_method(sel_getUid("drawSegment:highlight:"), function $CPSegmentedControl__drawSegment_highlight_(self, _cmd, aSegment, shouldHighlight) +{ with(self) +{ +} +},["void","int","BOOL"]), new objj_method(sel_getUid("tileWithChangedSegment:"), function $CPSegmentedControl__tileWithChangedSegment_(self, _cmd, aSegment) +{ with(self) +{ + if (aSegment >= _segments.length) + return; + var segment = _segments[aSegment], + segmentWidth = objj_msgSend(segment, "width"), + themeState = _themeStates[aSegment] | (_themeState & CPThemeStateDisabled), + contentInset = objj_msgSend(self, "valueForThemeAttribute:inState:", "content-inset", themeState), + font = objj_msgSend(self, "valueForThemeAttribute:inState:", "font", themeState); + if (!segmentWidth) + { + if (objj_msgSend(segment, "image") && objj_msgSend(segment, "label")) + segmentWidth = objj_msgSend(objj_msgSend(segment, "label"), "sizeWithFont:", font).width + objj_msgSend(objj_msgSend(segment, "image"), "size").width + contentInset.left + contentInset.right; + else if (segment.image) + segmentWidth = objj_msgSend(objj_msgSend(segment, "image"), "size").width + contentInset.left + contentInset.right; + else if (segment.label) + segmentWidth = objj_msgSend(objj_msgSend(segment, "label"), "sizeWithFont:", font).width + contentInset.left + contentInset.right; + else + segmentWidth = 0.0; + } + var delta = segmentWidth - CGRectGetWidth(objj_msgSend(segment, "frame")); + if (!delta) + { + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + return; + } + var frame = objj_msgSend(self, "frame"); + objj_msgSend(self, "setFrameSize:", CGSizeMake(CGRectGetWidth(frame) + delta, CGRectGetHeight(frame))); + objj_msgSend(segment, "setWidth:", segmentWidth); + objj_msgSend(segment, "setFrame:", objj_msgSend(self, "frameForSegment:", aSegment)); + var index = aSegment + 1; + for (; index < _segments.length; ++index) + { + objj_msgSend(_segments[index], "frame").origin.x += delta; + objj_msgSend(self, "drawSegmentBezel:highlight:", index, NO); + objj_msgSend(self, "drawSegment:highlight:", index, NO); + } + objj_msgSend(self, "drawSegmentBezel:highlight:", aSegment, NO); + objj_msgSend(self, "drawSegment:highlight:", aSegment, NO); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","unsigned"]), new objj_method(sel_getUid("frameForSegment:"), function $CPSegmentedControl__frameForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(self, "bezelFrameForSegment:", aSegment); +} +},["CGRect","unsigned"]), new objj_method(sel_getUid("bezelFrameForSegment:"), function $CPSegmentedControl__bezelFrameForSegment_(self, _cmd, aSegment) +{ with(self) +{ + var height = objj_msgSend(self, "currentValueForThemeAttribute:", "default-height"), + bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"), + width = objj_msgSend(self, "widthForSegment:", aSegment), + left = objj_msgSend(self, "_leftOffsetForSegment:", aSegment); + return CGRectMake(left, bezelInset.top, width, height); +} +},["CGRect","unsigned"]), new objj_method(sel_getUid("contentFrameForSegment:"), function $CPSegmentedControl__contentFrameForSegment_(self, _cmd, aSegment) +{ with(self) +{ + var height = objj_msgSend(self, "currentValueForThemeAttribute:", "default-height"), + contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + width = objj_msgSend(self, "widthForSegment:", aSegment), + left = objj_msgSend(self, "_leftOffsetForSegment:", aSegment); + return CGRectMake(left + contentInset.left, contentInset.top, width - contentInset.left - contentInset.right, height - contentInset.top - contentInset.bottom); +} +},["CGRect","unsigned"]), new objj_method(sel_getUid("testSegment:"), function $CPSegmentedControl__testSegment_(self, _cmd, aPoint) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", aPoint, nil), + count = _segments.length; + while (count--) + if (CGRectContainsPoint(objj_msgSend(_segments[count], "frame"), aPoint)) + return count; + if (_segments.length) + { + var adjustedLastFrame = CGRectCreateCopy(objj_msgSend(_segments[_segments.length - 1], "frame")); + adjustedLastFrame.size.width = CGRectGetWidth(objj_msgSend(self, "bounds")) - adjustedLastFrame.origin.x; + if (CGRectContainsPoint(adjustedLastFrame, aPoint)) + return _segments.length - 1; + } + return -1; +} +},["unsigned","CGPoint"]), new objj_method(sel_getUid("mouseDown:"), function $CPSegmentedControl__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "trackSegment:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPSegmentedControl__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackSegment:"), function $CPSegmentedControl__trackSegment_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if (type == CPLeftMouseUp) + { + if (_trackingSegment == -1) + return; + if (_trackingSegment === objj_msgSend(self, "testSegment:", location)) + { + if (_trackingMode == CPSegmentSwitchTrackingSelectAny) + { + objj_msgSend(self, "setSelected:forSegment:", !objj_msgSend(self, "isSelectedForSegment:", _trackingSegment), _trackingSegment); + _selectedSegment = _trackingSegment; + } + else + objj_msgSend(self, "setSelected:forSegment:", YES, _trackingSegment); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + if (_trackingMode == CPSegmentSwitchTrackingMomentary) + { + objj_msgSend(self, "setSelected:forSegment:", NO, _trackingSegment); + _selectedSegment = -1; + } + } + objj_msgSend(self, "drawSegmentBezel:highlight:", _trackingSegment, NO); + _trackingSegment = -1; + return; + } + if (type == CPLeftMouseDown) + { + var trackingSegment = objj_msgSend(self, "testSegment:", location); + if (trackingSegment > -1 && objj_msgSend(self, "isEnabledForSegment:", trackingSegment)) + { + _trackingHighlighted = YES; + _trackingSegment = trackingSegment; + objj_msgSend(self, "drawSegmentBezel:highlight:", _trackingSegment, YES); + } + } + else if (type == CPLeftMouseDragged) + { + if (_trackingSegment == -1) + return; + var highlighted = objj_msgSend(self, "testSegment:", location) === _trackingSegment; + if (highlighted != _trackingHighlighted) + { + _trackingHighlighted = highlighted; + objj_msgSend(self, "drawSegmentBezel:highlight:", _trackingSegment, _trackingHighlighted); + } + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackSegment:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setFont:"), function $CPSegmentedControl__setFont_(self, _cmd, aFont) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "setFont:", aFont); + objj_msgSend(self, "tileWithChangedSegment:", 0); +} +},["void","CPFont"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPSegmentedControl__themeClass(self, _cmd) +{ with(self) +{ + return "segmented-control"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPSegmentedControl__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [CPCenterTextAlignment, CPCenterVerticalTextAlignment, CPImageLeft, CPScaleNone, { top:(0), right:(0), bottom:(0), left:(0) }, { top:(0), right:(0), bottom:(0), left:(0) }, objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), 1.0, 24.0], ["alignment", "vertical-alignment", "image-position", "image-scaling", "bezel-inset", "content-inset", "left-segment-bezel-color", "right-segment-bezel-color", "center-segment-bezel-color", "divider-bezel-color", "divider-thickness", "default-height"]); +} +},["id"])]); +} +var CPSegmentedControlSegmentsKey = "CPSegmentedControlSegmentsKey", + CPSegmentedControlSelectedKey = "CPSegmentedControlSelectedKey", + CPSegmentedControlSegmentStyleKey = "CPSegmentedControlSegmentStyleKey", + CPSegmentedControlTrackingModeKey = "CPSegmentedControlTrackingModeKey"; +{ +var the_class = objj_getClass("CPSegmentedControl") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSegmentedControl\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPSegmentedControl__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "initWithCoder:", aCoder); + if (self) + { + var frame = objj_msgSend(self, "frame"), + originalWidth = frame.size.width; + frame.size.width = 0; + objj_msgSend(self, "setFrame:", frame); + _segments = objj_msgSend(aCoder, "decodeObjectForKey:", CPSegmentedControlSegmentsKey); + _segmentStyle = objj_msgSend(aCoder, "decodeIntForKey:", CPSegmentedControlSegmentStyleKey); + _themeStates = []; + if (objj_msgSend(aCoder, "containsValueForKey:", CPSegmentedControlSelectedKey)) + _selectedSegment = objj_msgSend(aCoder, "decodeIntForKey:", CPSegmentedControlSelectedKey); + else + _selectedSegment = -1; + if (objj_msgSend(aCoder, "containsValueForKey:", CPSegmentedControlTrackingModeKey)) + _trackingMode = objj_msgSend(aCoder, "decodeIntForKey:", CPSegmentedControlTrackingModeKey); + else + _trackingMode = CPSegmentSwitchTrackingSelectOne; + for (var i = 0; i < _segments.length; i++) + { + _themeStates[i] = objj_msgSend(_segments[i], "selected") ? CPThemeStateSelected : CPThemeStateNormal; + objj_msgSend(self, "tileWithChangedSegment:", i); + } + var difference = MAX(originalWidth - objj_msgSend(self, "frame").size.width, 0.0), + remainingWidth = FLOOR(difference / _segments.length); + for (var i=0; i < _segments.length; i++) + objj_msgSend(self, "setWidth:forSegment:", objj_msgSend(_segments[i], "width") + remainingWidth, i); + objj_msgSend(self, "tileWithChangedSegment:", 0); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPSegmentedControl__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _segments, CPSegmentedControlSegmentsKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _selectedSegment, CPSegmentedControlSelectedKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _segmentStyle, CPSegmentedControlSegmentStyleKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _trackingMode, CPSegmentedControlTrackingModeKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPSegmentItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("image"), new objj_ivar("label"), new objj_ivar("menu"), new objj_ivar("selected"), new objj_ivar("enabled"), new objj_ivar("tag"), new objj_ivar("width"), new objj_ivar("frame")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("image"), function $_CPSegmentItem__image(self, _cmd) +{ with(self) +{ +return image; +} +},["id"]), +new objj_method(sel_getUid("setImage:"), function $_CPSegmentItem__setImage_(self, _cmd, newValue) +{ with(self) +{ +image = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("label"), function $_CPSegmentItem__label(self, _cmd) +{ with(self) +{ +return label; +} +},["id"]), +new objj_method(sel_getUid("setLabel:"), function $_CPSegmentItem__setLabel_(self, _cmd, newValue) +{ with(self) +{ +label = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("menu"), function $_CPSegmentItem__menu(self, _cmd) +{ with(self) +{ +return menu; +} +},["id"]), +new objj_method(sel_getUid("setMenu:"), function $_CPSegmentItem__setMenu_(self, _cmd, newValue) +{ with(self) +{ +menu = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("selected"), function $_CPSegmentItem__selected(self, _cmd) +{ with(self) +{ +return selected; +} +},["id"]), +new objj_method(sel_getUid("setSelected:"), function $_CPSegmentItem__setSelected_(self, _cmd, newValue) +{ with(self) +{ +selected = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("enabled"), function $_CPSegmentItem__enabled(self, _cmd) +{ with(self) +{ +return enabled; +} +},["id"]), +new objj_method(sel_getUid("setEnabled:"), function $_CPSegmentItem__setEnabled_(self, _cmd, newValue) +{ with(self) +{ +enabled = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("tag"), function $_CPSegmentItem__tag(self, _cmd) +{ with(self) +{ +return tag; +} +},["id"]), +new objj_method(sel_getUid("setTag:"), function $_CPSegmentItem__setTag_(self, _cmd, newValue) +{ with(self) +{ +tag = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("width"), function $_CPSegmentItem__width(self, _cmd) +{ with(self) +{ +return width; +} +},["id"]), +new objj_method(sel_getUid("setWidth:"), function $_CPSegmentItem__setWidth_(self, _cmd, newValue) +{ with(self) +{ +width = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("frame"), function $_CPSegmentItem__frame(self, _cmd) +{ with(self) +{ +return frame; +} +},["id"]), +new objj_method(sel_getUid("setFrame:"), function $_CPSegmentItem__setFrame_(self, _cmd, newValue) +{ with(self) +{ +frame = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $_CPSegmentItem__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPSegmentItem").super_class }, "init")) + { + image = nil; + label = ""; + menu = nil; + selected = NO; + enabled = YES; + tag = -1; + width = 0; + frame = CGRectMakeZero(); + } + return self; +} +},["id"])]); +} +var CPSegmentItemImageKey = "CPSegmentItemImageKey", + CPSegmentItemLabelKey = "CPSegmentItemLabelKey", + CPSegmentItemMenuKey = "CPSegmentItemMenuKey", + CPSegmentItemSelectedKey = "CPSegmentItemSelectedKey", + CPSegmentItemEnabledKey = "CPSegmentItemEnabledKey", + CPSegmentItemTagKey = "CPSegmentItemTagKey", + CPSegmentItemWidthKey = "CPSegmentItemWidthKey"; +{ +var the_class = objj_getClass("_CPSegmentItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPSegmentItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPSegmentItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPSegmentItem").super_class }, "init"); + if (self) + { + image = objj_msgSend(aCoder, "decodeObjectForKey:", CPSegmentItemImageKey); + label = objj_msgSend(aCoder, "decodeObjectForKey:", CPSegmentItemLabelKey); + menu = objj_msgSend(aCoder, "decodeObjectForKey:", CPSegmentItemMenuKey); + selected = objj_msgSend(aCoder, "decodeBoolForKey:", CPSegmentItemSelectedKey); + enabled = objj_msgSend(aCoder, "decodeBoolForKey:", CPSegmentItemEnabledKey); + tag = objj_msgSend(aCoder, "decodeIntForKey:", CPSegmentItemTagKey); + width = objj_msgSend(aCoder, "decodeFloatForKey:", CPSegmentItemWidthKey); + frame = CGRectMakeZero(); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPSegmentItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", image, CPSegmentItemImageKey); + objj_msgSend(aCoder, "encodeObject:forKey:", label, CPSegmentItemLabelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", menu, CPSegmentItemMenuKey); + objj_msgSend(aCoder, "encodeBool:forKey:", selected, CPSegmentItemSelectedKey); + objj_msgSend(aCoder, "encodeBool:forKey:", enabled, CPSegmentItemEnabledKey); + objj_msgSend(aCoder, "encodeInt:forKey:", tag, CPSegmentItemTagKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", width, CPSegmentItemWidthKey); +} +},["void","CPCoder"])]); +} + +p;10;CPShadow.jt;1965;@STATIC;1.0;I;21;Foundation/CPObject.jt;1920;objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPShadow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_offset"), new objj_ivar("_blurRadius"), new objj_ivar("_color"), new objj_ivar("_cssString")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initWithOffset:blurRadius:color:"), function $CPShadow___initWithOffset_blurRadius_color_(self, _cmd, anOffset, aBlurRadius, aColor) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPShadow").super_class }, "init"); + if (self) + { + _offset = anOffset; + _blurRadius = aBlurRadius; + _color = aColor; + _cssString = objj_msgSend(_color, "cssString") + " " + Math.round(anOffset.width) + "px " + Math.round(anOffset.height) + "px " + Math.round(_blurRadius) + "px"; + } + return self; +} +},["id","CPSize","float","CPColor"]), new objj_method(sel_getUid("shadowOffset"), function $CPShadow__shadowOffset(self, _cmd) +{ with(self) +{ + return _offset; +} +},["CGSize"]), new objj_method(sel_getUid("shadowBlurRadius"), function $CPShadow__shadowBlurRadius(self, _cmd) +{ with(self) +{ + return _blurRadius; +} +},["float"]), new objj_method(sel_getUid("shadowColor"), function $CPShadow__shadowColor(self, _cmd) +{ with(self) +{ + return _color; +} +},["CPColor"]), new objj_method(sel_getUid("cssString"), function $CPShadow__cssString(self, _cmd) +{ with(self) +{ + return _cssString; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("shadowWithOffset:blurRadius:color:"), function $CPShadow__shadowWithOffset_blurRadius_color_(self, _cmd, anOffset, aBlurRadius, aColor) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPShadow, "alloc"), "_initWithOffset:blurRadius:color:", anOffset, aBlurRadius, aColor); +} +},["id","CGSize","float","CPColor"])]); +} + +p;14;CPShadowView.jt;9679;@STATIC;1.0;I;21;Foundation/CPBundle.ji;12;CGGeometry.ji;9;CPImage.ji;13;CPImageView.ji;8;CPView.jt;9574;objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPImageView.j", YES); +objj_executeFile("CPView.j", YES); +CPLightShadow = 0; +CPHeavyShadow = 1; +var CPShadowViewLightBackgroundColor = nil, + CPShadowViewHeavyBackgroundColor = nil; +var LIGHT_LEFT_INSET = 3.0, + LIGHT_RIGHT_INSET = 3.0, + LIGHT_TOP_INSET = 3.0, + LIGHT_BOTTOM_INSET = 5.0, + HEAVY_LEFT_INSET = 7.0, + HEAVY_RIGHT_INSET = 7.0, + HEAVY_TOP_INSET = 5.0, + HEAVY_BOTTOM_INSET = 5.0; +{var the_class = objj_allocateClassPair(CPView, "CPShadowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_weight")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPShadowView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPShadowView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _weight = CPLightShadow; + objj_msgSend(self, "setBackgroundColor:", CPShadowViewLightBackgroundColor); + objj_msgSend(self, "setHitTests:", NO); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setWeight:"), function $CPShadowView__setWeight_(self, _cmd, aWeight) +{ with(self) +{ + if (_weight == aWeight) + return; + _weight = aWeight; + if (_weight == CPLightShadow) + objj_msgSend(self, "setBackgroundColor:", CPShadowViewLightBackgroundColor); + else + objj_msgSend(self, "setBackgroundColor:", CPShadowViewHeavyBackgroundColor); +} +},["void","CPShadowWeight"]), new objj_method(sel_getUid("leftInset"), function $CPShadowView__leftInset(self, _cmd) +{ with(self) +{ + return _weight == CPLightShadow ? LIGHT_LEFT_INSET : HEAVY_LEFT_INSET; +} +},["float"]), new objj_method(sel_getUid("rightInset"), function $CPShadowView__rightInset(self, _cmd) +{ with(self) +{ + return _weight == CPLightShadow ? LIGHT_RIGHT_INSET : HEAVY_RIGHT_INSET; +} +},["float"]), new objj_method(sel_getUid("topInset"), function $CPShadowView__topInset(self, _cmd) +{ with(self) +{ + return _weight == CPLightShadow ? LIGHT_TOP_INSET : HEAVY_TOP_INSET; +} +},["float"]), new objj_method(sel_getUid("bottomInset"), function $CPShadowView__bottomInset(self, _cmd) +{ with(self) +{ + return _weight == CPLightShadow ? LIGHT_BOTTOM_INSET : HEAVY_BOTTOM_INSET; +} +},["float"]), new objj_method(sel_getUid("horizontalInset"), function $CPShadowView__horizontalInset(self, _cmd) +{ with(self) +{ + if (_weight == CPLightShadow) + return LIGHT_LEFT_INSET + LIGHT_RIGHT_INSET; + return HEAVY_LEFT_INSET + HEAVY_RIGHT_INSET; +} +},["float"]), new objj_method(sel_getUid("verticalInset"), function $CPShadowView__verticalInset(self, _cmd) +{ with(self) +{ + if (_weight == CPLightShadow) + return LIGHT_TOP_INSET + LIGHT_BOTTOM_INSET; + return HEAVY_TOP_INSET + HEAVY_BOTTOM_INSET; +} +},["float"]), new objj_method(sel_getUid("frameForContentFrame:"), function $CPShadowView__frameForContentFrame_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "frameForContentFrame:withWeight:", aFrame, _weight); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("setFrameForContentFrame:"), function $CPShadowView__setFrameForContentFrame_(self, _cmd, aFrame) +{ with(self) +{ + objj_msgSend(self, "setFrame:", objj_msgSend(self, "frameForContentFrame:", aFrame)); +} +},["void","CGRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPShadowView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPShadowView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(self, "class")); + CPShadowViewLightBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightTopLeft.png"), CGSizeMake(9.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightTop.png"), CGSizeMake(1.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightTopRight.png"), CGSizeMake(9.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightLeft.png"), CGSizeMake(9.0, 1.0)), + nil, + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightRight.png"), CGSizeMake(9.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightBottomLeft.png"), CGSizeMake(9.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightBottom.png"), CGSizeMake(1.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightBottomRight.png"), CGSizeMake(9.0, 9.0)) + ])); + CPShadowViewHeavyBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyTopLeft.png"), CGSizeMake(17.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyTop.png"), CGSizeMake(1.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyTopRight.png"), CGSizeMake(17.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyLeft.png"), CGSizeMake(17.0, 1.0)), + nil, + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyRight.png"), CGSizeMake(17.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyBottomLeft.png"), CGSizeMake(17.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyBottom.png"), CGSizeMake(1.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyBottomRight.png"), CGSizeMake(17.0, 17.0)) + ])); +} +},["void"]), new objj_method(sel_getUid("shadowViewEnclosingView:"), function $CPShadowView__shadowViewEnclosingView_(self, _cmd, aView) +{ with(self) +{ + return objj_msgSend(self, "shadowViewEnclosingView:withWeight:", aView, CPLightShadow); +} +},["id","CPView"]), new objj_method(sel_getUid("shadowViewEnclosingView:withWeight:"), function $CPShadowView__shadowViewEnclosingView_withWeight_(self, _cmd, aView, aWeight) +{ with(self) +{ + var shadowView = objj_msgSend(objj_msgSend(CPShadowView, "alloc"), "initWithFrame:", objj_msgSend(aView, "frame")); + objj_msgSend(shadowView, "setWeight:", aWeight); + var size = objj_msgSend(shadowView, "frame").size, + width = size.width - objj_msgSend(shadowView, "leftInset") - objj_msgSend(shadowView, "rightInset"), + height = size.height - objj_msgSend(shadowView, "topInset") - objj_msgSend(shadowView, "bottomInset"), + enclosingView = objj_msgSend(aView, "superview"); + objj_msgSend(shadowView, "setHitTests:", objj_msgSend(aView, "hitTests")); + objj_msgSend(shadowView, "setAutoresizingMask:", objj_msgSend(aView, "autoresizingMask")); + objj_msgSend(aView, "removeFromSuperview"); + objj_msgSend(shadowView, "addSubview:", aView); + objj_msgSend(aView, "setFrame:", CGRectMake(objj_msgSend(shadowView, "leftInset"), objj_msgSend(shadowView, "topInset"), width, height)) + objj_msgSend(enclosingView, "addSubview:", shadowView); + return shadowView; +} +},["id","CPView","CPShadowWeight"]), new objj_method(sel_getUid("frameForContentFrame:withWeight:"), function $CPShadowView__frameForContentFrame_withWeight_(self, _cmd, aFrame, aWeight) +{ with(self) +{ + if (aWeight == CPLightShadow) + return CGRectMake((aFrame.origin.x) - LIGHT_LEFT_INSET, (aFrame.origin.y) - LIGHT_TOP_INSET, (aFrame.size.width) + LIGHT_LEFT_INSET + LIGHT_RIGHT_INSET, (aFrame.size.height) + LIGHT_TOP_INSET + LIGHT_BOTTOM_INSET); + else + return CGRectMake((aFrame.origin.x) - HEAVY_LEFT_INSET, (aFrame.origin.y) - HEAVY_TOP_INSET, (aFrame.size.width) + HEAVY_LEFT_INSET + HEAVY_RIGHT_INSET, (aFrame.size.height) + HEAVY_TOP_INSET + HEAVY_BOTTOM_INSET); +} +},["CGRect","CGRect","CPShadowWeight"])]); +} + +p;10;CPSlider.jt;16903;@STATIC;1.0;i;11;CPControl.jt;16867;objj_executeFile("CPControl.j", YES); +CPLinearSlider = 0; +CPCircularSlider = 1; +{var the_class = objj_allocateClassPair(CPControl, "CPSlider"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_minValue"), new objj_ivar("_maxValue"), new objj_ivar("_altIncrementValue"), new objj_ivar("_isVertical")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPSlider__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "initWithFrame:", aFrame); + if (self) + { + _minValue = 0.0; + _maxValue = 100.0; + objj_msgSend(self, "setObjectValue:", 50.0); + objj_msgSend(self, "setContinuous:", YES); + objj_msgSend(self, "_recalculateIsVertical"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setMinValue:"), function $CPSlider__setMinValue_(self, _cmd, aMinimumValue) +{ with(self) +{ + if (_minValue === aMinimumValue) + return; + _minValue = aMinimumValue; + var doubleValue = objj_msgSend(self, "doubleValue"); + if (doubleValue < _minValue) + objj_msgSend(self, "setDoubleValue:", _minValue); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float"]), new objj_method(sel_getUid("minValue"), function $CPSlider__minValue(self, _cmd) +{ with(self) +{ + return _minValue; +} +},["float"]), new objj_method(sel_getUid("setMaxValue:"), function $CPSlider__setMaxValue_(self, _cmd, aMaximumValue) +{ with(self) +{ + if (_maxValue === aMaximumValue) + return; + _maxValue = aMaximumValue; + var doubleValue = objj_msgSend(self, "doubleValue"); + if (doubleValue > _maxValue) + objj_msgSend(self, "setDoubleValue:", _maxValue); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float"]), new objj_method(sel_getUid("maxValue"), function $CPSlider__maxValue(self, _cmd) +{ with(self) +{ + return _maxValue; +} +},["float"]), new objj_method(sel_getUid("setObjectValue:"), function $CPSlider__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "setObjectValue:", MIN(MAX(aValue, _minValue), _maxValue)); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","id"]), new objj_method(sel_getUid("setSliderType:"), function $CPSlider__setSliderType_(self, _cmd, aSliderType) +{ with(self) +{ + if (aSliderType === CPCircularSlider) + objj_msgSend(self, "setThemeState:", CPThemeStateCircular); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateCircular); +} +},["void","CPSliderType"]), new objj_method(sel_getUid("sliderType"), function $CPSlider__sliderType(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateCircular) ? CPCircularSlider : CPLinearSlider; +} +},["CPSliderType"]), new objj_method(sel_getUid("trackRectForBounds:"), function $CPSlider__trackRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + if (objj_msgSend(self, "hasThemeState:", CPThemeStateCircular)) + { + var originalBounds = CGRectCreateCopy(bounds); + bounds.size.width = MIN(bounds.size.width, bounds.size.height); + bounds.size.height = bounds.size.width; + if (bounds.size.width < originalBounds.size.width) + bounds.origin.x += (originalBounds.size.width - bounds.size.width) / 2.0; + else + bounds.origin.y += (originalBounds.size.height - bounds.size.height) / 2.0; + } + else + { + var trackWidth = objj_msgSend(self, "currentValueForThemeAttribute:", "track-width"); + if (trackWidth <= 0) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if (objj_msgSend(self, "isVertical")) + { + bounds.origin.x = ((bounds.size.width) - trackWidth) / 2.0; + bounds.size.width = trackWidth; + } + else + { + bounds.origin.y = ((bounds.size.height) - trackWidth) / 2.0; + bounds.size.height = trackWidth; + } + } + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("knobRectForBounds:"), function $CPSlider__knobRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var knobSize = objj_msgSend(self, "currentValueForThemeAttribute:", "knob-size"); + if (knobSize.width <= 0 || knobSize.height <= 0) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var knobRect = { origin: { x:0.0, y:0.0 }, size: { width:knobSize.width, height:knobSize.height } }, + trackRect = objj_msgSend(self, "trackRectForBounds:", bounds); + if (!trackRect || (trackRect.size.width <= 0.0 || trackRect.size.height <= 0.0)) + trackRect = bounds; + if (objj_msgSend(self, "hasThemeState:", CPThemeStateCircular)) + { + var angle = 3*PI_2 - (1.0 - objj_msgSend(self, "doubleValue") - _minValue) / (_maxValue - _minValue) * PI2, + radius = CGRectGetWidth(trackRect) / 2.0 - 8.0; + knobRect.origin.x = radius * COS(angle) + CGRectGetMidX(trackRect) - 3.0; + knobRect.origin.y = radius * SIN(angle) + CGRectGetMidY(trackRect) - 2.0; + } + else if (objj_msgSend(self, "isVertical")) + { + knobRect.origin.x = (trackRect.origin.x + (trackRect.size.width) / 2.0) - knobSize.width / 2.0; + knobRect.origin.y = ((_maxValue - objj_msgSend(self, "doubleValue")) / (_maxValue - _minValue)) * ((trackRect.size.height) - knobSize.height); + } + else + { + knobRect.origin.x = ((objj_msgSend(self, "doubleValue") - _minValue) / (_maxValue - _minValue)) * ((trackRect.size.width) - knobSize.width); + knobRect.origin.y = (trackRect.origin.y + (trackRect.size.height) / 2.0) - knobSize.height / 2.0; + } + return knobRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPSlider__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "track-view") + return objj_msgSend(self, "trackRectForBounds:", objj_msgSend(self, "bounds")); + else if (aName === "knob-view") + return objj_msgSend(self, "knobRectForBounds:", objj_msgSend(self, "bounds")); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPSlider__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "track-view" || aName === "knob-view") + { + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "init"); + objj_msgSend(view, "setHitTests:", NO); + return view; + } + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "createEphemeralSubviewNamed:", aName); +} +},["CPView","CPString"]), new objj_method(sel_getUid("setAltIncrementValue:"), function $CPSlider__setAltIncrementValue_(self, _cmd, anAltIncrementValue) +{ with(self) +{ + _altIncrementValue = anAltIncrementValue; +} +},["void","float"]), new objj_method(sel_getUid("altIncrementValue"), function $CPSlider__altIncrementValue(self, _cmd) +{ with(self) +{ + return _altIncrementValue; +} +},["float"]), new objj_method(sel_getUid("setFrameSize:"), function $CPSlider__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "_recalculateIsVertical"); +} +},["void","CGSize"]), new objj_method(sel_getUid("_recalculateIsVertical"), function $CPSlider___recalculateIsVertical(self, _cmd) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + width = (bounds.size.width), + height = (bounds.size.height); + _isVertical = width < height ? 1 : (width > height ? 0 : -1); + if (_isVertical === 1) + objj_msgSend(self, "setThemeState:", CPThemeStateVertical); + else if (_isVertical === 0) + objj_msgSend(self, "unsetThemeState:", CPThemeStateVertical); +} +},["void"]), new objj_method(sel_getUid("isVertical"), function $CPSlider__isVertical(self, _cmd) +{ with(self) +{ + return _isVertical; +} +},["int"]), new objj_method(sel_getUid("layoutSubviews"), function $CPSlider__layoutSubviews(self, _cmd) +{ with(self) +{ + var trackView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "track-view", CPWindowBelow, "knob-view"); + if (trackView) + objj_msgSend(trackView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "track-color")); + var knobView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "knob-view", CPWindowAbove, "track-view"); + if (knobView) + objj_msgSend(knobView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "knob-color")); +} +},["void"]), new objj_method(sel_getUid("tracksMouseOutsideOfFrame"), function $CPSlider__tracksMouseOutsideOfFrame(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("_valueAtPoint:"), function $CPSlider___valueAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + knobRect = objj_msgSend(self, "knobRectForBounds:", bounds), + trackRect = objj_msgSend(self, "trackRectForBounds:", bounds); + if (objj_msgSend(self, "hasThemeState:", CPThemeStateCircular)) + { + var knobWidth = (knobRect.size.width); + trackRect.origin.x += knobWidth / 2; + trackRect.size.width -= knobWidth; + var minValue = objj_msgSend(self, "minValue"), + dx = aPoint.x - (trackRect.origin.x + (trackRect.size.width) / 2.0), + dy = aPoint.y - (trackRect.origin.y + (trackRect.size.height) / 2.0); + return MAX(0.0, MIN(1.0, 1.0 - (3 * PI_2 - ATAN2(dy, dx)) % PI2 / PI2)) * (objj_msgSend(self, "maxValue") - minValue) + minValue; + } + else if (objj_msgSend(self, "isVertical")) + { + var knobHeight = (knobRect.size.height); + trackRect.origin.y += knobHeight / 2; + trackRect.size.height -= knobHeight; + var minValue = objj_msgSend(self, "minValue"); + return MAX(0.0, MIN(1.0, ((trackRect.origin.y + trackRect.size.height) - aPoint.y) / (trackRect.size.height))) * (objj_msgSend(self, "maxValue") - minValue) + minValue; + } + else + { + var knobWidth = (knobRect.size.width); + trackRect.origin.x += knobWidth / 2; + trackRect.size.width -= knobWidth; + var minValue = objj_msgSend(self, "minValue"); + return MAX(0.0, MIN(1.0, (aPoint.x - (trackRect.origin.x)) / (trackRect.size.width))) * (objj_msgSend(self, "maxValue") - minValue) + minValue; + } +} +},["float","CGPoint"]), new objj_method(sel_getUid("startTrackingAt:"), function $CPSlider__startTrackingAt_(self, _cmd, aPoint) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + knobRect = objj_msgSend(self, "knobRectForBounds:", { origin: { x:bounds.origin.x, y:bounds.origin.y }, size: { width:bounds.size.width, height:bounds.size.height } }); + if ((aPoint.x >= (knobRect.origin.x) && aPoint.y >= (knobRect.origin.y) && aPoint.x < (knobRect.origin.x + knobRect.size.width) && aPoint.y < (knobRect.origin.y + knobRect.size.height))) + _dragOffset = { width:(knobRect.origin.x + (knobRect.size.width) / 2.0) - aPoint.x, height:(knobRect.origin.y + (knobRect.size.height) / 2.0) - aPoint.y }; + else + { + var trackRect = objj_msgSend(self, "trackRectForBounds:", bounds); + if (trackRect && (aPoint.x >= (trackRect.origin.x) && aPoint.y >= (trackRect.origin.y) && aPoint.x < (trackRect.origin.x + trackRect.size.width) && aPoint.y < (trackRect.origin.y + trackRect.size.height))) + { + _dragOffset = { width:0.0, height:0.0 }; + objj_msgSend(self, "setObjectValue:", objj_msgSend(self, "_valueAtPoint:", aPoint)); + } + else + return NO; + } + objj_msgSend(self, "setHighlighted:", YES); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + return YES; +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("continueTracking:at:"), function $CPSlider__continueTracking_at_(self, _cmd, lastPoint, aPoint) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", objj_msgSend(self, "_valueAtPoint:", { x:aPoint.x + _dragOffset.width, y:aPoint.y + _dragOffset.height })); + return YES; +} +},["BOOL","CGPoint","CGPoint"]), new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"), function $CPSlider__stopTracking_at_mouseIsUp_(self, _cmd, lastPoint, aPoint, mouseIsUp) +{ with(self) +{ + objj_msgSend(self, "setHighlighted:", NO); + if (objj_msgSend(_target, "respondsToSelector:", sel_getUid("sliderDidFinish:"))) + objj_msgSend(_target, "sliderDidFinish:", self); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CGPoint","CGPoint","BOOL"]), new objj_method(sel_getUid("setContinuous:"), function $CPSlider__setContinuous_(self, _cmd, flag) +{ with(self) +{ + if (flag) + _sendActionOn |= CPLeftMouseDraggedMask; + else + _sendActionOn &= ~CPLeftMouseDraggedMask; +} +},["void","BOOL"]), new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"), function $CPSlider__takeValueFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + var count = objects.length, + value = objj_msgSend(objects[0], "valueForKeyPath:", aKeyPath); + objj_msgSend(self, "setObjectValue:", value); + while (count-- > 1) + if (value !== (objj_msgSend(objects[count], "valueForKeyPath:", aKeyPath))) + return objj_msgSend(self, "setFloatValue:", 1.0); +} +},["void","CPString","CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPSlider__themeClass(self, _cmd) +{ with(self) +{ + return "slider"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPSlider__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), { width:0.0, height:0.0 }, 0.0, objj_msgSend(CPNull, "null")], ["knob-color", "knob-size", "track-width", "track-color"]); +} +},["id"])]); +} +var CPSliderMinValueKey = "CPSliderMinValueKey", + CPSliderMaxValueKey = "CPSliderMaxValueKey", + CPSliderAltIncrValueKey = "CPSliderAltIncrValueKey"; +{ +var the_class = objj_getClass("CPSlider") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPSlider__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + _minValue = objj_msgSend(aCoder, "decodeDoubleForKey:", CPSliderMinValueKey); + _maxValue = objj_msgSend(aCoder, "decodeDoubleForKey:", CPSliderMaxValueKey); + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "initWithCoder:", aCoder); + if (self) + { + _altIncrementValue = objj_msgSend(aCoder, "decodeDoubleForKey:", CPSliderAltIncrValueKey); + objj_msgSend(self, "setContinuous:", YES); + objj_msgSend(self, "_recalculateIsVertical"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPSlider__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeDouble:forKey:", _minValue, CPSliderMinValueKey); + objj_msgSend(aCoder, "encodeDouble:forKey:", _maxValue, CPSliderMaxValueKey); + objj_msgSend(aCoder, "encodeDouble:forKey:", _altIncrementValue, CPSliderAltIncrValueKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPSlider") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("value"), function $CPSlider__value(self, _cmd) +{ with(self) +{ + CPLog.warn("[CPSlider value] is deprecated, use doubleValue or objectValue instead."); + return objj_msgSend(self, "doubleValue"); +} +},["id"]), new objj_method(sel_getUid("setValue:"), function $CPSlider__setValue_(self, _cmd, aValue) +{ with(self) +{ + CPLog.warn("[CPSlider setValue:] is deprecated, use setDoubleValue: or setObjectValue: instead."); + objj_msgSend(self, "setObjectValue:", aValue); +} +},["void","id"])]); +} + +p;21;CPSliderColorPicker.jt;17653;@STATIC;1.0;i;15;CPColorPicker.jt;17613;objj_executeFile("CPColorPicker.j", YES); +{var the_class = objj_allocateClassPair(CPColorPicker, "CPSliderColorPicker"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_contentView"), new objj_ivar("_redSlider"), new objj_ivar("_greenSlider"), new objj_ivar("_blueSlider"), new objj_ivar("_hueSlider"), new objj_ivar("_saturationSlider"), new objj_ivar("_brightnessSlider"), new objj_ivar("_rgbLabel"), new objj_ivar("_hsbLabel"), new objj_ivar("_redLabel"), new objj_ivar("_greenLabel"), new objj_ivar("_blueLabel"), new objj_ivar("_hueLabel"), new objj_ivar("_saturationLabel"), new objj_ivar("_brightnessLabel"), new objj_ivar("_hexLabel"), new objj_ivar("_hexValue"), new objj_ivar("_hexValue"), new objj_ivar("_redValue"), new objj_ivar("_greenValue"), new objj_ivar("_blueValue"), new objj_ivar("_hueValue"), new objj_ivar("_saturationValue"), new objj_ivar("_brightnessValue")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithPickerMask:colorPanel:"), function $CPSliderColorPicker__initWithPickerMask_colorPanel_(self, _cmd, mask, owningColorPanel) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSliderColorPicker").super_class }, "initWithPickerMask:colorPanel:", mask, owningColorPanel); +} +},["id","int","CPColorPanel"]), new objj_method(sel_getUid("initView"), function $CPSliderColorPicker__initView(self, _cmd) +{ with(self) +{ + aFrame = CPRectMake(0, 0, CPColorPickerViewWidth, CPColorPickerViewHeight); + _contentView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", aFrame); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + _rgbLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 10, 100, 20)); + objj_msgSend(_rgbLabel, "setStringValue:", "Red, Green, Blue"); + objj_msgSend(_rgbLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _redLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 35, 15, 20)); + objj_msgSend(_redLabel, "setStringValue:", "R"); + objj_msgSend(_redLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _redSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 35, aFrame.size.width - 70, 20)); + objj_msgSend(_redSlider, "setMaxValue:", 1.0); + objj_msgSend(_redSlider, "setMinValue:", 0.0); + objj_msgSend(_redSlider, "setTarget:", self); + objj_msgSend(_redSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_redSlider, "setAutoresizingMask:", CPViewWidthSizable); + _redValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 30, 45, 29)); + objj_msgSend(_redValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_redValue, "setEditable:", YES); + objj_msgSend(_redValue, "setBezeled:", YES); + objj_msgSend(_redValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _redValue); + _greenLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 58, 15, 20)); + objj_msgSend(_greenLabel, "setStringValue:", "G"); + objj_msgSend(_greenLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _greenSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 58, aFrame.size.width - 70, 20)); + objj_msgSend(_greenSlider, "setMaxValue:", 1.0); + objj_msgSend(_greenSlider, "setMinValue:", 0.0); + objj_msgSend(_greenSlider, "setTarget:", self); + objj_msgSend(_greenSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_greenSlider, "setAutoresizingMask:", CPViewWidthSizable); + _greenValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 53, 45, 29)); + objj_msgSend(_greenValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_greenValue, "setEditable:", YES); + objj_msgSend(_greenValue, "setBezeled:", YES); + objj_msgSend(_greenValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _greenValue); + _blueLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 81, 15, 20)); + objj_msgSend(_blueLabel, "setStringValue:", "B"); + objj_msgSend(_blueLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _blueSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 81, aFrame.size.width - 70, 20)); + objj_msgSend(_blueSlider, "setMaxValue:", 1.0); + objj_msgSend(_blueSlider, "setMinValue:", 0.0); + objj_msgSend(_blueSlider, "setTarget:", self); + objj_msgSend(_blueSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_blueSlider, "setAutoresizingMask:", CPViewWidthSizable); + _blueValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 76, 45, 29)); + objj_msgSend(_blueValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_blueValue, "setEditable:", YES); + objj_msgSend(_blueValue, "setBezeled:", YES); + objj_msgSend(_blueValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _blueValue); + _hsbLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 120, 190, 20)); + objj_msgSend(_hsbLabel, "setStringValue:", "Hue, Saturation, Brightness"); + objj_msgSend(_hsbLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _hueLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 145, 15, 20)); + objj_msgSend(_hueLabel, "setStringValue:", "H"); + objj_msgSend(_hueLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _hueSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 145, aFrame.size.width - 70, 20)); + objj_msgSend(_hueSlider, "setMaxValue:", 359.0); + objj_msgSend(_hueSlider, "setMinValue:", 0.0); + objj_msgSend(_hueSlider, "setTarget:", self); + objj_msgSend(_hueSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_hueSlider, "setAutoresizingMask:", CPViewWidthSizable); + _hueValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 140, 45, 29)); + objj_msgSend(_hueValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_hueValue, "setEditable:", YES); + objj_msgSend(_hueValue, "setBezeled:", YES); + objj_msgSend(_hueValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _hueValue); + _saturationLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 168, 15, 20)); + objj_msgSend(_saturationLabel, "setStringValue:", "S"); + objj_msgSend(_saturationLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _saturationSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 168, aFrame.size.width - 70, 20)); + objj_msgSend(_saturationSlider, "setMaxValue:", 100.0); + objj_msgSend(_saturationSlider, "setMinValue:", 0.0); + objj_msgSend(_saturationSlider, "setTarget:", self); + objj_msgSend(_saturationSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_saturationSlider, "setAutoresizingMask:", CPViewWidthSizable); + _saturationValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 163, 45, 29)); + objj_msgSend(_saturationValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_saturationValue, "setEditable:", YES); + objj_msgSend(_saturationValue, "setBezeled:", YES); + objj_msgSend(_saturationValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _saturationValue); + _brightnessLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 191, 15, 20)); + objj_msgSend(_brightnessLabel, "setStringValue:", "B"); + objj_msgSend(_brightnessLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _brightnessSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 191, aFrame.size.width - 70, 20)); + objj_msgSend(_brightnessSlider, "setMaxValue:", 100.0); + objj_msgSend(_brightnessSlider, "setMinValue:", 0.0); + objj_msgSend(_brightnessSlider, "setTarget:", self); + objj_msgSend(_brightnessSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_brightnessSlider, "setAutoresizingMask:", CPViewWidthSizable); + _brightnessValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 186, 45, 29)); + objj_msgSend(_brightnessValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_brightnessValue, "setEditable:", YES); + objj_msgSend(_brightnessValue, "setBezeled:", YES); + objj_msgSend(_brightnessValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _brightnessValue); + _hexLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 230, 30, 20)); + objj_msgSend(_hexLabel, "setStringValue:", "Hex"); + objj_msgSend(_hexLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _hexValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(32, 225, 80, 29)); + objj_msgSend(_hexValue, "setEditable:", YES); + objj_msgSend(_hexValue, "setBezeled:", YES); + objj_msgSend(_hexValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _hexValue); + objj_msgSend(_contentView, "addSubview:", _rgbLabel); + objj_msgSend(_contentView, "addSubview:", _redLabel); + objj_msgSend(_contentView, "addSubview:", _greenLabel); + objj_msgSend(_contentView, "addSubview:", _blueLabel); + objj_msgSend(_contentView, "addSubview:", _redSlider); + objj_msgSend(_contentView, "addSubview:", _greenSlider); + objj_msgSend(_contentView, "addSubview:", _blueSlider); + objj_msgSend(_contentView, "addSubview:", _hsbLabel); + objj_msgSend(_contentView, "addSubview:", _hueLabel); + objj_msgSend(_contentView, "addSubview:", _saturationLabel); + objj_msgSend(_contentView, "addSubview:", _brightnessLabel); + objj_msgSend(_contentView, "addSubview:", _hueSlider); + objj_msgSend(_contentView, "addSubview:", _saturationSlider); + objj_msgSend(_contentView, "addSubview:", _brightnessSlider); + objj_msgSend(_contentView, "addSubview:", _hexLabel); +} +},["id"]), new objj_method(sel_getUid("provideNewView:"), function $CPSliderColorPicker__provideNewView_(self, _cmd, initialRequest) +{ with(self) +{ + if (initialRequest) + objj_msgSend(self, "initView"); + return _contentView; +} +},["CPView","BOOL"]), new objj_method(sel_getUid("currentMode"), function $CPSliderColorPicker__currentMode(self, _cmd) +{ with(self) +{ + return CPSliderColorPickerMode; +} +},["int"]), new objj_method(sel_getUid("supportsMode:"), function $CPSliderColorPicker__supportsMode_(self, _cmd, mode) +{ with(self) +{ + return (mode == CPSliderColorPickerMode) ? YES : NO; +} +},["BOOL","int"]), new objj_method(sel_getUid("sliderChanged:"), function $CPSliderColorPicker__sliderChanged_(self, _cmd, sender) +{ with(self) +{ + var newColor, + colorPanel = objj_msgSend(self, "colorPanel"), + alpha = objj_msgSend(colorPanel, "opacity"); + switch(sender) + { + case _hueSlider: + case _saturationSlider: + case _brightnessSlider: newColor = objj_msgSend(CPColor, "colorWithHue:saturation:brightness:alpha:", objj_msgSend(_hueSlider, "floatValue"), objj_msgSend(_saturationSlider, "floatValue"), objj_msgSend(_brightnessSlider, "floatValue"), alpha); + objj_msgSend(self, "updateRGBSliders:", newColor); + break; + case _redSlider: + case _greenSlider: + case _blueSlider: newColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", objj_msgSend(_redSlider, "floatValue"), objj_msgSend(_greenSlider, "floatValue"), objj_msgSend(_blueSlider, "floatValue"), alpha); + objj_msgSend(self, "updateHSBSliders:", newColor); + break; + } + objj_msgSend(self, "updateLabels"); + objj_msgSend(self, "updateHex:", newColor); + objj_msgSend(colorPanel, "setColor:", newColor); +} +},["void","id"]), new objj_method(sel_getUid("setColor:"), function $CPSliderColorPicker__setColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(self, "updateRGBSliders:", aColor); + objj_msgSend(self, "updateHSBSliders:", aColor); + objj_msgSend(self, "updateHex:", aColor); + objj_msgSend(self, "updateLabels"); +} +},["void","CPColor"]), new objj_method(sel_getUid("updateHSBSliders:"), function $CPSliderColorPicker__updateHSBSliders_(self, _cmd, aColor) +{ with(self) +{ + var hsb = objj_msgSend(aColor, "hsbComponents"); + objj_msgSend(_hueSlider, "setFloatValue:", hsb[0]); + objj_msgSend(_saturationSlider, "setFloatValue:", hsb[1]); + objj_msgSend(_brightnessSlider, "setFloatValue:", hsb[2]); +} +},["void","CPColor"]), new objj_method(sel_getUid("updateHex:"), function $CPSliderColorPicker__updateHex_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(_hexValue, "setStringValue:", objj_msgSend(aColor, "hexString")); +} +},["void","CPColor"]), new objj_method(sel_getUid("updateRGBSliders:"), function $CPSliderColorPicker__updateRGBSliders_(self, _cmd, aColor) +{ with(self) +{ + var rgb = objj_msgSend(aColor, "components"); + objj_msgSend(_redSlider, "setFloatValue:", rgb[0]); + objj_msgSend(_greenSlider, "setFloatValue:", rgb[1]); + objj_msgSend(_blueSlider, "setFloatValue:", rgb[2]); +} +},["void","CPColor"]), new objj_method(sel_getUid("updateLabels"), function $CPSliderColorPicker__updateLabels(self, _cmd) +{ with(self) +{ + objj_msgSend(_hueValue, "setStringValue:", ROUND(objj_msgSend(_hueSlider, "floatValue"))); + objj_msgSend(_saturationValue, "setStringValue:", ROUND(objj_msgSend(_saturationSlider, "floatValue"))); + objj_msgSend(_brightnessValue, "setStringValue:", ROUND(objj_msgSend(_brightnessSlider, "floatValue"))); + objj_msgSend(_redValue, "setStringValue:", ROUND(objj_msgSend(_redSlider, "floatValue") * 255)); + objj_msgSend(_greenValue, "setStringValue:", ROUND(objj_msgSend(_greenSlider, "floatValue") * 255)); + objj_msgSend(_blueValue, "setStringValue:", ROUND(objj_msgSend(_blueSlider, "floatValue") * 255)); +} +},["void"]), new objj_method(sel_getUid("provideNewButtonImage"), function $CPSliderColorPicker__provideNewButtonImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "slider_button.png"), CGSizeMake(32, 32)); +} +},["CPImage"]), new objj_method(sel_getUid("provideNewAlternateButtonImage"), function $CPSliderColorPicker__provideNewAlternateButtonImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "slider_button_h.png"), CGSizeMake(32, 32)); +} +},["CPImage"]), new objj_method(sel_getUid("controlTextDidEndEditing:"), function $CPSliderColorPicker__controlTextDidEndEditing_(self, _cmd, aNotification) +{ with(self) +{ + var field = objj_msgSend(aNotification, "object"), + value = objj_msgSend(objj_msgSend(field, "stringValue"), "stringByTrimmingWhitespace"); + if (field === _hexValue) { + var newColor = objj_msgSend(CPColor, "colorWithHexString:", value); + if (newColor) { + objj_msgSend(self, "setColor:", newColor); + objj_msgSend(objj_msgSend(self, "colorPanel"), "setColor:", newColor); + } + } else { + switch(field) { + case _redValue: objj_msgSend(_redSlider, "setFloatValue:", MAX(MIN(ROUND(value), 255) / 255.0, 0)); + objj_msgSend(self, "sliderChanged:", _redSlider); + break; + case _greenValue: objj_msgSend(_greenSlider, "setFloatValue:", MAX(MIN(ROUND(value), 255) / 255.0, 0)); + objj_msgSend(self, "sliderChanged:", _greenSlider); + break; + case _blueValue: objj_msgSend(_blueSlider, "setFloatValue:", MAX(MIN(ROUND(value), 255) / 255.0, 0)); + objj_msgSend(self, "sliderChanged:", _blueSlider); + break; + case _hueValue: objj_msgSend(_hueSlider, "setFloatValue:", MAX(MIN(ROUND(value), 360), 0)); + objj_msgSend(self, "sliderChanged:", _hueSlider); + break; + case _saturationValue: objj_msgSend(_saturationSlider, "setFloatValue:", MAX(MIN(ROUND(value), 100), 0)); + objj_msgSend(self, "sliderChanged:", _saturationSlider); + break; + case _brightnessValue: objj_msgSend(_brightnessSlider, "setFloatValue:", MAX(MIN(ROUND(value), 100), 0)); + objj_msgSend(self, "sliderChanged:", _brightnessSlider); + break; + } + } +} +},["void","CPNotification"])]); +} + +p;13;CPSplitView.jt;31285;@STATIC;1.0;i;13;CPButtonBar.ji;9;CPImage.ji;8;CPView.jt;31222;objj_executeFile("CPButtonBar.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPView.j", YES); +CPSplitViewDidResizeSubviewsNotification = "CPSplitViewDidResizeSubviewsNotification"; +CPSplitViewWillResizeSubviewsNotification = "CPSplitViewWillResizeSubviewsNotification"; +var CPSplitViewHorizontalImage = nil, + CPSplitViewVerticalImage = nil; +{var the_class = objj_allocateClassPair(CPView, "CPSplitView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_delegate"), new objj_ivar("_isVertical"), new objj_ivar("_isPaneSplitter"), new objj_ivar("_currentDivider"), new objj_ivar("_initialOffset"), new objj_ivar("_preCollapsePosition"), new objj_ivar("_originComponent"), new objj_ivar("_sizeComponent"), new objj_ivar("_DOMDividerElements"), new objj_ivar("_dividerImagePath"), new objj_ivar("_drawingDivider"), new objj_ivar("_needsResizeSubviews"), new objj_ivar("_buttonBars")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPSplitView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "initWithFrame:", aFrame)) + { + _currentDivider = CPNotFound; + _DOMDividerElements = []; + _buttonBars = []; + objj_msgSend(self, "_setVertical:", YES); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("dividerThickness"), function $CPSplitView__dividerThickness(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", objj_msgSend(self, "isPaneSplitter") ? "pane-divider-thickness" : "divider-thickness"); +} +},["float"]), new objj_method(sel_getUid("isVertical"), function $CPSplitView__isVertical(self, _cmd) +{ with(self) +{ + return _isVertical; +} +},["BOOL"]), new objj_method(sel_getUid("setVertical:"), function $CPSplitView__setVertical_(self, _cmd, shouldBeVertical) +{ with(self) +{ + if (!objj_msgSend(self, "_setVertical:", shouldBeVertical)) + return; + var frame = objj_msgSend(self, "frame"), + dividerThickness = objj_msgSend(self, "dividerThickness"); + objj_msgSend(self, "_postNotificationWillResize"); + var eachSize = ROUND((frame.size[_sizeComponent] - dividerThickness * (_subviews.length - 1)) / _subviews.length), + index = 0, + count = _subviews.length; + if (objj_msgSend(self, "isVertical")) + for (; index < count; ++index) + objj_msgSend(_subviews[index], "setFrame:", CGRectMake(ROUND((eachSize + dividerThickness) * index), 0, eachSize, frame.size.height)); + else + for (; index < count; ++index) + objj_msgSend(_subviews[index], "setFrame:", CGRectMake(0, ROUND((eachSize + dividerThickness) * index), frame.size.width, eachSize)); + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "_postNotificationDidResize"); +} +},["void","BOOL"]), new objj_method(sel_getUid("_setVertical:"), function $CPSplitView___setVertical_(self, _cmd, shouldBeVertical) +{ with(self) +{ + var changed = (_isVertical != shouldBeVertical); + _isVertical = shouldBeVertical; + _originComponent = objj_msgSend(self, "isVertical") ? "x" : "y"; + _sizeComponent = objj_msgSend(self, "isVertical") ? "width" : "height"; + _dividerImagePath = objj_msgSend(self, "isVertical") ? objj_msgSend(CPSplitViewVerticalImage, "filename") : objj_msgSend(CPSplitViewHorizontalImage, "filename"); + return changed; +} +},["BOOL","BOOL"]), new objj_method(sel_getUid("isPaneSplitter"), function $CPSplitView__isPaneSplitter(self, _cmd) +{ with(self) +{ + return _isPaneSplitter; +} +},["BOOL"]), new objj_method(sel_getUid("setIsPaneSplitter:"), function $CPSplitView__setIsPaneSplitter_(self, _cmd, shouldBePaneSplitter) +{ with(self) +{ + if (_isPaneSplitter == shouldBePaneSplitter) + return; + _isPaneSplitter = shouldBePaneSplitter; + if(_DOMDividerElements[_drawingDivider]) + objj_msgSend(self, "_setupDOMDivider"); + _needsResizeSubviews = YES; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","BOOL"]), new objj_method(sel_getUid("didAddSubview:"), function $CPSplitView__didAddSubview_(self, _cmd, aSubview) +{ with(self) +{ + _needsResizeSubviews = YES; +} +},["void","CPView"]), new objj_method(sel_getUid("isSubviewCollapsed:"), function $CPSplitView__isSubviewCollapsed_(self, _cmd, subview) +{ with(self) +{ + return objj_msgSend(subview, "frame").size[_sizeComponent] < 1 ? YES : NO; +} +},["BOOL","CPView"]), new objj_method(sel_getUid("rectOfDividerAtIndex:"), function $CPSplitView__rectOfDividerAtIndex_(self, _cmd, aDivider) +{ with(self) +{ + var frame = objj_msgSend(_subviews[aDivider], "frame"), + rect = CGRectMakeZero(); + rect.size = objj_msgSend(self, "frame").size; + rect.size[_sizeComponent] = objj_msgSend(self, "dividerThickness"); + rect.origin[_originComponent] = frame.origin[_originComponent] + frame.size[_sizeComponent]; + return rect; +} +},["CGRect","int"]), new objj_method(sel_getUid("effectiveRectOfDividerAtIndex:"), function $CPSplitView__effectiveRectOfDividerAtIndex_(self, _cmd, aDivider) +{ with(self) +{ + var realRect = objj_msgSend(self, "rectOfDividerAtIndex:", aDivider); + var padding = 2; + realRect.size[_sizeComponent] += padding * 2; + realRect.origin[_originComponent] -= padding; + return realRect; +} +},["CGRect","int"]), new objj_method(sel_getUid("drawRect:"), function $CPSplitView__drawRect_(self, _cmd, rect) +{ with(self) +{ + var count = objj_msgSend(_subviews, "count") - 1; + while ((count--) > 0) + { + _drawingDivider = count; + objj_msgSend(self, "drawDividerInRect:", objj_msgSend(self, "rectOfDividerAtIndex:", count)); + } +} +},["void","CGRect"]), new objj_method(sel_getUid("drawDividerInRect:"), function $CPSplitView__drawDividerInRect_(self, _cmd, aRect) +{ with(self) +{ + if (!_DOMDividerElements[_drawingDivider]) + { + _DOMDividerElements[_drawingDivider] = document.createElement("div"); + _DOMDividerElements[_drawingDivider].style.position = "absolute"; + _DOMDividerElements[_drawingDivider].style.backgroundRepeat = "repeat"; + _DOMElement.appendChild(_DOMDividerElements[_drawingDivider]); + } + objj_msgSend(self, "_setupDOMDivider"); + if (NULL) var ____p = _CGPointApplyAffineTransform(CGPointMake((aRect.origin.x), (aRect.origin.y)), NULL); else var ____p = { x:(aRect.origin.x), y:(aRect.origin.y) }; _DOMDividerElements[_drawingDivider].style.left = ROUND(____p.x) + "px";_DOMDividerElements[_drawingDivider].style.top = ROUND(____p.y) + "px";; + _DOMDividerElements[_drawingDivider].style.width = MAX(0.0, ROUND((aRect.size.width))) + "px"; _DOMDividerElements[_drawingDivider].style.height = MAX(0.0, ROUND((aRect.size.height))) + "px";; +} +},["void","CGRect"]), new objj_method(sel_getUid("_setupDOMDivider"), function $CPSplitView___setupDOMDivider(self, _cmd) +{ with(self) +{ + if (_isPaneSplitter) + { + _DOMDividerElements[_drawingDivider].style.backgroundColor = "#A5A5A5"; + _DOMDividerElements[_drawingDivider].style.backgroundImage = ""; + } + else + { + _DOMDividerElements[_drawingDivider].style.backgroundColor = ""; + _DOMDividerElements[_drawingDivider].style.backgroundImage = "url('"+_dividerImagePath+"')"; + } +} +},["void"]), new objj_method(sel_getUid("viewWillDraw"), function $CPSplitView__viewWillDraw(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_adjustSubviewsWithCalculatedSize"); +} +},["void"]), new objj_method(sel_getUid("_adjustSubviewsWithCalculatedSize"), function $CPSplitView___adjustSubviewsWithCalculatedSize(self, _cmd) +{ with(self) +{ + if (!_needsResizeSubviews) + return; + _needsResizeSubviews = NO; + var subviews = objj_msgSend(self, "subviews"), + count = subviews.length, + oldSize = CGSizeMakeZero(); + if (objj_msgSend(self, "isVertical")) + { + oldSize.width += objj_msgSend(self, "dividerThickness") * (count - 1); + oldSize.height = CGRectGetHeight(objj_msgSend(self, "frame")); + } + else + { + oldSize.width = CGRectGetWidth(objj_msgSend(self, "frame")); + oldSize.height += objj_msgSend(self, "dividerThickness") * (count - 1); + } + while (count--) + oldSize[_sizeComponent] += objj_msgSend(subviews[count], "frame").size[_sizeComponent]; + objj_msgSend(self, "resizeSubviewsWithOldSize:", oldSize); +} +},["void"]), new objj_method(sel_getUid("cursorAtPoint:hitDividerAtIndex:"), function $CPSplitView__cursorAtPoint_hitDividerAtIndex_(self, _cmd, aPoint, anIndex) +{ with(self) +{ + var frame = objj_msgSend(_subviews[anIndex], "frame"), + startPosition = frame.origin[_originComponent] + frame.size[_sizeComponent], + effectiveRect = objj_msgSend(self, "effectiveRectOfDividerAtIndex:", anIndex), + buttonBar = _buttonBars[anIndex], + buttonBarRect = null, + additionalRect = null; + if (buttonBar != null) + { + buttonBarRect = objj_msgSend(buttonBar, "resizeControlFrame"); + buttonBarRect.origin = objj_msgSend(self, "convertPoint:fromView:", buttonBarRect.origin, buttonBar); + } + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:"))) + effectiveRect = objj_msgSend(_delegate, "splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:", self, effectiveRect, effectiveRect, anIndex); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:additionalEffectiveRectOfDividerAtIndex:"))) + additionalRect = objj_msgSend(_delegate, "splitView:additionalEffectiveRectOfDividerAtIndex:", self, anIndex); + return CGRectContainsPoint(effectiveRect, aPoint) || + (additionalRect && CGRectContainsPoint(additionalRect, aPoint)) || + (buttonBarRect && CGRectContainsPoint(buttonBarRect, aPoint)); +} +},["BOOL","CPPoint","int"]), new objj_method(sel_getUid("hitTest:"), function $CPSplitView__hitTest_(self, _cmd, aPoint) +{ with(self) +{ + if (objj_msgSend(self, "isHidden") || !objj_msgSend(self, "hitTests") || !CGRectContainsPoint(objj_msgSend(self, "frame"), aPoint)) + return nil; + var point = objj_msgSend(self, "convertPoint:fromView:", aPoint, objj_msgSend(self, "superview")); + var count = objj_msgSend(_subviews, "count") - 1; + for (var i = 0; i < count; i++) + { + if (objj_msgSend(self, "cursorAtPoint:hitDividerAtIndex:", point, i)) + return self; + } + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "hitTest:", aPoint); +} +},["CPView","CGPoint"]), new objj_method(sel_getUid("trackDivider:"), function $CPSplitView__trackDivider_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + if (type == CPLeftMouseUp) + { + if (_currentDivider != CPNotFound) + { + _currentDivider = CPNotFound; + objj_msgSend(self, "_updateResizeCursor:", anEvent); + objj_msgSend(self, "_postNotificationDidResize"); + } + return; + } + if (type == CPLeftMouseDown) + { + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + _currentDivider = CPNotFound; + var count = objj_msgSend(_subviews, "count") - 1; + for (var i = 0; i < count; i++) + { + var frame = objj_msgSend(_subviews[i], "frame"), + startPosition = frame.origin[_originComponent] + frame.size[_sizeComponent]; + if (objj_msgSend(self, "cursorAtPoint:hitDividerAtIndex:", point, i)) + { + if (objj_msgSend(anEvent, "clickCount") == 2 && + objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:canCollapseSubview:")) && + objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:"))) + { + var minPosition = objj_msgSend(self, "minPossiblePositionOfDividerAtIndex:", i), + maxPosition = objj_msgSend(self, "maxPossiblePositionOfDividerAtIndex:", i); + if (objj_msgSend(_delegate, "splitView:canCollapseSubview:", self, _subviews[i]) && objj_msgSend(_delegate, "splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:", self, _subviews[i], i)) + { + if (objj_msgSend(self, "isSubviewCollapsed:", _subviews[i])) + objj_msgSend(self, "setPosition:ofDividerAtIndex:", _preCollapsePosition ? _preCollapsePosition : (minPosition + (maxPosition - minPosition) / 2), i); + else + objj_msgSend(self, "setPosition:ofDividerAtIndex:", minPosition, i); + } + else if (objj_msgSend(_delegate, "splitView:canCollapseSubview:", self, _subviews[i+1]) && objj_msgSend(_delegate, "splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:", self, _subviews[i+1], i)) + { + if (objj_msgSend(self, "isSubviewCollapsed:", _subviews[i+1])) + objj_msgSend(self, "setPosition:ofDividerAtIndex:", _preCollapsePosition ? _preCollapsePosition : (minPosition + (maxPosition - minPosition) / 2), i); + else + objj_msgSend(self, "setPosition:ofDividerAtIndex:", maxPosition, i); + } + } + else + { + _currentDivider = i; + _initialOffset = startPosition - point[_originComponent]; + objj_msgSend(self, "_postNotificationWillResize"); + } + } + } + if (_currentDivider === CPNotFound) + return; + } + else if (type == CPLeftMouseDragged && _currentDivider != CPNotFound) + { + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + objj_msgSend(self, "setPosition:ofDividerAtIndex:", (point[_originComponent] + _initialOffset), _currentDivider); + objj_msgSend(self, "_updateResizeCursor:", anEvent); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackDivider:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDown:"), function $CPSplitView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "trackDivider:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $CPSplitView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("mouseEntered:"), function $CPSplitView__mouseEntered_(self, _cmd, anEvent) +{ with(self) +{ + if (_currentDivider == CPNotFound) + objj_msgSend(self, "_updateResizeCursor:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseMoved:"), function $CPSplitView__mouseMoved_(self, _cmd, anEvent) +{ with(self) +{ + if (_currentDivider == CPNotFound) + objj_msgSend(self, "_updateResizeCursor:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseExited:"), function $CPSplitView__mouseExited_(self, _cmd, anEvent) +{ with(self) +{ + if (_currentDivider == CPNotFound) + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_updateResizeCursor:"), function $CPSplitView___updateResizeCursor_(self, _cmd, anEvent) +{ with(self) +{ + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if (objj_msgSend(anEvent, "type") === CPLeftMouseUp && !objj_msgSend(objj_msgSend(self, "window"), "acceptsMouseMovedEvents")) + { + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); + return; + } + for (var i = 0, count = objj_msgSend(_subviews, "count") - 1; i < count; i++) + { + if (_currentDivider === i || (_currentDivider == CPNotFound && objj_msgSend(self, "cursorAtPoint:hitDividerAtIndex:", point, i))) + { + var frame = objj_msgSend(_subviews[i], "frame"), + size = frame.size[_sizeComponent], + startPosition = frame.origin[_originComponent] + size, + canShrink = objj_msgSend(self, "_realPositionForPosition:ofDividerAtIndex:", startPosition-1, i) < startPosition, + canGrow = objj_msgSend(self, "_realPositionForPosition:ofDividerAtIndex:", startPosition+1, i) > startPosition, + cursor = objj_msgSend(CPCursor, "arrowCursor"); + if (size === 0) + canGrow = YES; + else if (!canShrink && + objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:canCollapseSubview:")) && + objj_msgSend(_delegate, "splitView:canCollapseSubview:", self, _subviews[i])) + canShrink = YES; + if (_isVertical && canShrink && canGrow) + cursor = objj_msgSend(CPCursor, "resizeLeftRightCursor"); + else if (_isVertical && canShrink) + cursor = objj_msgSend(CPCursor, "resizeLeftCursor"); + else if (_isVertical && canGrow) + cursor = objj_msgSend(CPCursor, "resizeRightCursor"); + else if (canShrink && canGrow) + cursor = objj_msgSend(CPCursor, "resizeUpDownCursor"); + else if (canShrink) + cursor = objj_msgSend(CPCursor, "resizeUpCursor"); + else if (canGrow) + cursor = objj_msgSend(CPCursor, "resizeDownCursor"); + objj_msgSend(cursor, "set"); + return; + } + } + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("maxPossiblePositionOfDividerAtIndex:"), function $CPSplitView__maxPossiblePositionOfDividerAtIndex_(self, _cmd, dividerIndex) +{ with(self) +{ + var frame = objj_msgSend(_subviews[dividerIndex + 1], "frame"); + if (dividerIndex + 1 < objj_msgSend(_subviews, "count") - 1) + return frame.origin[_originComponent] + frame.size[_sizeComponent] - objj_msgSend(self, "dividerThickness"); + else + return objj_msgSend(self, "frame").size[_sizeComponent] - objj_msgSend(self, "dividerThickness"); +} +},["float","int"]), new objj_method(sel_getUid("minPossiblePositionOfDividerAtIndex:"), function $CPSplitView__minPossiblePositionOfDividerAtIndex_(self, _cmd, dividerIndex) +{ with(self) +{ + if (dividerIndex > 0) + { + var frame = objj_msgSend(_subviews[dividerIndex - 1], "frame"); + return frame.origin[_originComponent] + frame.size[_sizeComponent] + objj_msgSend(self, "dividerThickness"); + } + else + return 0; +} +},["float","int"]), new objj_method(sel_getUid("_realPositionForPosition:ofDividerAtIndex:"), function $CPSplitView___realPositionForPosition_ofDividerAtIndex_(self, _cmd, position, dividerIndex) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:constrainSplitPosition:ofSubviewAt:"))) + position = objj_msgSend(_delegate, "splitView:constrainSplitPosition:ofSubviewAt:", self, position, dividerIndex); + var proposedMax = objj_msgSend(self, "maxPossiblePositionOfDividerAtIndex:", dividerIndex), + proposedMin = objj_msgSend(self, "minPossiblePositionOfDividerAtIndex:", dividerIndex), + actualMax = proposedMax, + actualMin = proposedMin; + if(objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:constrainMinCoordinate:ofSubviewAt:"))) + actualMin = objj_msgSend(_delegate, "splitView:constrainMinCoordinate:ofSubviewAt:", self, proposedMin, dividerIndex); + if(objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:constrainMaxCoordinate:ofSubviewAt:"))) + actualMax = objj_msgSend(_delegate, "splitView:constrainMaxCoordinate:ofSubviewAt:", self, proposedMax, dividerIndex); + var viewA = _subviews[dividerIndex], + realPosition = MAX(MIN(position, actualMax), actualMin); + if (position < proposedMin + (actualMin - proposedMin) / 2) + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:canCollapseSubview:"))) + if (objj_msgSend(_delegate, "splitView:canCollapseSubview:", self, viewA)) + realPosition = proposedMin; + return realPosition; +} +},["int","float","int"]), new objj_method(sel_getUid("setPosition:ofDividerAtIndex:"), function $CPSplitView__setPosition_ofDividerAtIndex_(self, _cmd, position, dividerIndex) +{ with(self) +{ + objj_msgSend(self, "_adjustSubviewsWithCalculatedSize"); + var realPosition = objj_msgSend(self, "_realPositionForPosition:ofDividerAtIndex:", position, dividerIndex); + var viewA = _subviews[dividerIndex], + frameA = objj_msgSend(viewA, "frame"), + viewB = _subviews[dividerIndex + 1], + frameB = objj_msgSend(viewB, "frame"); + _preCollapsePosition = 0; + var preSize = frameA.size[_sizeComponent]; + frameA.size[_sizeComponent] = realPosition - frameA.origin[_originComponent]; + if (preSize !== 0 && frameA.size[_sizeComponent] === 0) + _preCollapsePosition = preSize; + objj_msgSend(_subviews[dividerIndex], "setFrame:", frameA); + preSize = frameB.size[_sizeComponent]; + frameB.size[_sizeComponent] = frameB.origin[_originComponent] + frameB.size[_sizeComponent] - realPosition - objj_msgSend(self, "dividerThickness"); + if (preSize !== 0 && frameB.size[_sizeComponent] === 0) + _preCollapsePosition = preSize; + frameB.origin[_originComponent] = realPosition + objj_msgSend(self, "dividerThickness"); + objj_msgSend(_subviews[dividerIndex + 1], "setFrame:", frameB); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float","int"]), new objj_method(sel_getUid("setFrameSize:"), function $CPSplitView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "_adjustSubviewsWithCalculatedSize"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CGSize"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPSplitView__resizeSubviewsWithOldSize_(self, _cmd, oldSize) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:resizeSubviewsWithOldSize:"))) + { + objj_msgSend(_delegate, "splitView:resizeSubviewsWithOldSize:", self, oldSize); + return; + } + objj_msgSend(self, "_postNotificationWillResize"); + var index = 0, + count = objj_msgSend(_subviews, "count"), + bounds = objj_msgSend(self, "bounds"), + dividerThickness = objj_msgSend(self, "dividerThickness"), + totalDividers = count - 1, + totalSizableSpace = 0, + nonSizableSpace = 0, + lastSizableIndex = -1, + totalSizablePanes = 0, + isVertical = objj_msgSend(self, "isVertical"); + for (index = 0; index < count; ++index) + { + var view = _subviews[index], + isSizable = isVertical ? objj_msgSend(view, "autoresizingMask") & CPViewWidthSizable : objj_msgSend(view, "autoresizingMask") & CPViewHeightSizable; + if (isSizable) + { + totalSizableSpace += objj_msgSend(view, "frame").size[_sizeComponent]; + lastSizableIndex = index; + totalSizablePanes++; + } + } + if (totalSizablePanes === count) + totalSizableSpace = 0; + var nonSizableSpace = totalSizableSpace ? bounds.size[_sizeComponent] - totalSizableSpace : 0, + remainingFlexibleSpace = bounds.size[_sizeComponent] - oldSize[_sizeComponent], + oldDimension = (oldSize[_sizeComponent]- totalDividers*dividerThickness - nonSizableSpace), + ratio = oldDimension <= 0 ? 0 : (bounds.size[_sizeComponent] - totalDividers*dividerThickness - nonSizableSpace) / oldDimension; + for (index = 0; index < count; ++index) + { + var view = _subviews[index], + viewFrame = CGRectMakeCopy(bounds), + isSizable = isVertical ? objj_msgSend(view, "autoresizingMask") & CPViewWidthSizable : objj_msgSend(view, "autoresizingMask") & CPViewHeightSizable; + if (index + 1 == count) + viewFrame.size[_sizeComponent] = bounds.size[_sizeComponent] - viewFrame.origin[_originComponent]; + else if (totalSizableSpace && isSizable && lastSizableIndex === index) + viewFrame.size[_sizeComponent] = MAX(0, ROUND(objj_msgSend(view, "frame").size[_sizeComponent] + remainingFlexibleSpace)) + else if (isSizable || !totalSizableSpace) + { + viewFrame.size[_sizeComponent] = MAX(0, ROUND(ratio * objj_msgSend(view, "frame").size[_sizeComponent])); + remainingFlexibleSpace -= (viewFrame.size[_sizeComponent] - objj_msgSend(view, "frame").size[_sizeComponent]); + } + else if (totalSizableSpace && !isSizable) + viewFrame.size[_sizeComponent] = objj_msgSend(view, "frame").size[_sizeComponent]; + bounds.origin[_originComponent] += viewFrame.size[_sizeComponent] + dividerThickness; + objj_msgSend(view, "setFrame:", viewFrame); + } + objj_msgSend(self, "_postNotificationDidResize"); +} +},["void","CPSize"]), new objj_method(sel_getUid("setDelegate:"), function $CPSplitView__setDelegate_(self, _cmd, delegate) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitViewDidResizeSubviews:"))) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "removeObserver:name:object:", _delegate, CPSplitViewDidResizeSubviewsNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitViewWillResizeSubviews:"))) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "removeObserver:name:object:", _delegate, CPSplitViewWillResizeSubviewsNotification, self); + _delegate = delegate; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitViewDidResizeSubviews:"))) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "addObserver:selector:name:object:", _delegate, sel_getUid("splitViewDidResizeSubviews:"), CPSplitViewDidResizeSubviewsNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitViewWillResizeSubviews:"))) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "addObserver:selector:name:object:", _delegate, sel_getUid("splitViewWillResizeSubviews:"), CPSplitViewWillResizeSubviewsNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("setButtonBar:forDividerAtIndex:"), function $CPSplitView__setButtonBar_forDividerAtIndex_(self, _cmd, aButtonBar, dividerIndex) +{ with(self) +{ + if (!aButtonBar) + { + _buttonBars[dividerIndex] = nil; + return; + } + var view = objj_msgSend(aButtonBar, "superview"), + subview = aButtonBar; + while (view && view !== self) + { + subview = view; + view = objj_msgSend(view, "superview"); + } + if (view !== self) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "CPSplitView button bar must be a subview of the split view."); + var viewIndex = objj_msgSend(objj_msgSend(self, "subviews"), "indexOfObject:", subview); + objj_msgSend(aButtonBar, "setHasResizeControl:", YES); + objj_msgSend(aButtonBar, "setResizeControlIsLeftAligned:", dividerIndex < viewIndex); + _buttonBars[dividerIndex] = aButtonBar; +} +},["void","CPButtonBar","unsigned"]), new objj_method(sel_getUid("_postNotificationWillResize"), function $CPSplitView___postNotificationWillResize(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPSplitViewWillResizeSubviewsNotification, self); +} +},["void"]), new objj_method(sel_getUid("_postNotificationDidResize"), function $CPSplitView___postNotificationDidResize(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPSplitViewDidResizeSubviewsNotification, self); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPSplitView__themeClass(self, _cmd) +{ with(self) +{ + return "splitview"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPSplitView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [10.0, 1.0], ["divider-thickness", "pane-divider-thickness"]); +} +},["id"]), new objj_method(sel_getUid("initialize"), function $CPSplitView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPSplitView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + CPSplitViewHorizontalImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSplitView/CPSplitViewHorizontal.png"), CPSizeMake(5.0, 10.0)); + CPSplitViewVerticalImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSplitView/CPSplitViewVertical.png"), CPSizeMake(10.0, 5.0)); +} +},["void"])]); +} +var CPSplitViewDelegateKey = "CPSplitViewDelegateKey", + CPSplitViewIsVerticalKey = "CPSplitViewIsVerticalKey", + CPSplitViewIsPaneSplitterKey = "CPSplitViewIsPaneSplitterKey", + CPSplitViewButtonBarsKey = "CPSplitViewButtonBarsKey"; +{ +var the_class = objj_getClass("CPSplitView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSplitView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPSplitView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _currentDivider = CPNotFound; + _DOMDividerElements = []; + _buttonBars = objj_msgSend(aCoder, "decodeObjectForKey:", CPSplitViewButtonBarsKey) || []; + _delegate = objj_msgSend(aCoder, "decodeObjectForKey:", CPSplitViewDelegateKey); + _isPaneSplitter = objj_msgSend(aCoder, "decodeBoolForKey:", CPSplitViewIsPaneSplitterKey); + objj_msgSend(self, "_setVertical:", objj_msgSend(aCoder, "decodeBoolForKey:", CPSplitViewIsVerticalKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPSplitView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _delegate, CPSplitViewDelegateKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isVertical, CPSplitViewIsVerticalKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isPaneSplitter, CPSplitViewIsPaneSplitterKey); +} +},["void","CPCoder"])]); +} + +p;17;CPStringDrawing.jt;1222;@STATIC;1.0;I;21;Foundation/CPString.ji;18;CPPlatformString.jt;1154;objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPPlatformString.j", YES); +{ +var the_class = objj_getClass("CPString") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPString\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("cssString"), function $CPString__cssString(self, _cmd) +{ with(self) +{ + return self; +} +},["CPString"]), new objj_method(sel_getUid("sizeWithFont:"), function $CPString__sizeWithFont_(self, _cmd, aFont) +{ with(self) +{ + return objj_msgSend(self, "sizeWithFont:inWidth:", aFont, NULL); +} +},["CGSize","CPFont"]), new objj_method(sel_getUid("sizeWithFont:inWidth:"), function $CPString__sizeWithFont_inWidth_(self, _cmd, aFont, aWidth) +{ with(self) +{ + return objj_msgSend(CPPlatformString, "sizeOfString:withFont:forWidth:", self, aFont, aWidth); +} +},["CGSize","CPFont","float"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("metricsOfFont:"), function $CPString__metricsOfFont_(self, _cmd, aFont) +{ with(self) +{ + return objj_msgSend(CPPlatformString, "metricsOfFont:", aFont); +} +},["CPDictionary","CPFont"])]); +} + +p;15;CPTableColumn.jt;18834;@STATIC;1.0;I;25;Foundation/CPDictionary.jI;21;Foundation/CPObject.jI;29;Foundation/CPSortDescriptor.jI;21;Foundation/CPString.ji;19;CPTableHeaderView.jt;18674;objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPSortDescriptor.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPTableHeaderView.j", YES); +CPTableColumnNoResizing = 0; +CPTableColumnAutoresizingMask = 1 << 0; +CPTableColumnUserResizingMask = 1 << 1; +{var the_class = objj_allocateClassPair(CPObject, "CPTableColumn"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_tableView"), new objj_ivar("_headerView"), new objj_ivar("_dataView"), new objj_ivar("_dataViewData"), new objj_ivar("_width"), new objj_ivar("_minWidth"), new objj_ivar("_maxWidth"), new objj_ivar("_resizingMask"), new objj_ivar("_identifier"), new objj_ivar("_isEditable"), new objj_ivar("_sortDescriptorPrototype"), new objj_ivar("_isHidden"), new objj_ivar("_headerToolTip"), new objj_ivar("_disableResizingPosting")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("disableResizingPosting"), function $CPTableColumn__disableResizingPosting(self, _cmd) +{ with(self) +{ +return _disableResizingPosting; +} +},["id"]), +new objj_method(sel_getUid("setDisableResizingPosting:"), function $CPTableColumn__setDisableResizingPosting_(self, _cmd, newValue) +{ with(self) +{ +_disableResizingPosting = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPTableColumn__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithIdentifier:"), function $CPTableColumn__initWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableColumn").super_class }, "init"); + if (self) + { + _dataViewData = { }; + _width = 100.0; + _minWidth = 10.0; + _maxWidth = 1000000.0; + _resizingMask = CPTableColumnAutoresizingMask | CPTableColumnUserResizingMask; + _disableResizingPosting = NO; + objj_msgSend(self, "setIdentifier:", anIdentifier); + var header = objj_msgSend(objj_msgSend(_CPTableColumnHeaderView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(self, "setHeaderView:", header); + objj_msgSend(self, "setDataView:", objj_msgSend(CPTextField, "new")); + } + return self; +} +},["id","id"]), new objj_method(sel_getUid("setTableView:"), function $CPTableColumn__setTableView_(self, _cmd, aTableView) +{ with(self) +{ + _tableView = aTableView; +} +},["void","CPTableView"]), new objj_method(sel_getUid("tableView"), function $CPTableColumn__tableView(self, _cmd) +{ with(self) +{ + return _tableView; +} +},["CPTableView"]), new objj_method(sel_getUid("setWidth:"), function $CPTableColumn__setWidth_(self, _cmd, aWidth) +{ with(self) +{ + aWidth = +aWidth; + if (_width === aWidth) + return; + var newWidth = MIN(MAX(aWidth, objj_msgSend(self, "minWidth")), objj_msgSend(self, "maxWidth")); + if (_width === newWidth) + return; + var oldWidth = _width; + _width = newWidth; + var tableView = objj_msgSend(self, "tableView"); + if (tableView) + { + var index = objj_msgSend(objj_msgSend(tableView, "tableColumns"), "indexOfObjectIdenticalTo:", self), + dirtyTableColumnRangeIndex = tableView._dirtyTableColumnRangeIndex; + if (dirtyTableColumnRangeIndex < 0) + tableView._dirtyTableColumnRangeIndex = index; + else + tableView._dirtyTableColumnRangeIndex = MIN(index, tableView._dirtyTableColumnRangeIndex); + var rows = tableView._exposedRows, + columns = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(index, objj_msgSend(tableView._exposedColumns, "lastIndex") - index + 1)); + objj_msgSend(tableView, "_layoutDataViewsInRows:columns:", rows, columns); + objj_msgSend(tableView, "tile"); + if (!_disableResizingPosting) + objj_msgSend(self, "_postDidResizeNotificationWithOldWidth:", oldWidth); + } +} +},["void","float"]), new objj_method(sel_getUid("width"), function $CPTableColumn__width(self, _cmd) +{ with(self) +{ + return _width; +} +},["float"]), new objj_method(sel_getUid("setMinWidth:"), function $CPTableColumn__setMinWidth_(self, _cmd, aMinWidth) +{ with(self) +{ + aMinWidth = +aMinWidth; + if (_minWidth === aMinWidth) + return; + _minWidth = aMinWidth; + var width = objj_msgSend(self, "width"), + newWidth = MAX(width, objj_msgSend(self, "minWidth")); + if (width !== newWidth) + objj_msgSend(self, "setWidth:", newWidth); +} +},["void","float"]), new objj_method(sel_getUid("minWidth"), function $CPTableColumn__minWidth(self, _cmd) +{ with(self) +{ + return _minWidth; +} +},["float"]), new objj_method(sel_getUid("setMaxWidth:"), function $CPTableColumn__setMaxWidth_(self, _cmd, aMaxWidth) +{ with(self) +{ + aMaxWidth = +aMaxWidth; + if (_maxWidth === aMaxWidth) + return; + _maxWidth = aMaxWidth; + var width = objj_msgSend(self, "width"), + newWidth = MIN(width, objj_msgSend(self, "maxWidth")); + if (width !== newWidth) + objj_msgSend(self, "setWidth:", newWidth); +} +},["void","float"]), new objj_method(sel_getUid("maxWidth"), function $CPTableColumn__maxWidth(self, _cmd) +{ with(self) +{ + return _maxWidth; +} +},["float"]), new objj_method(sel_getUid("setResizingMask:"), function $CPTableColumn__setResizingMask_(self, _cmd, aResizingMask) +{ with(self) +{ + _resizingMask = aResizingMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("resizingMask"), function $CPTableColumn__resizingMask(self, _cmd) +{ with(self) +{ + return _resizingMask; +} +},["unsigned"]), new objj_method(sel_getUid("sizeToFit"), function $CPTableColumn__sizeToFit(self, _cmd) +{ with(self) +{ + var width = (objj_msgSend(_headerView, "frame").size.width); + if (width < objj_msgSend(self, "minWidth")) + objj_msgSend(self, "setMinWidth:", width); + else if (width > objj_msgSend(self, "maxWidth")) + objj_msgSend(self, "setMaxWidth:", width) + if (_width !== width) + objj_msgSend(self, "setWidth:", width); +} +},["void"]), new objj_method(sel_getUid("setHeaderView:"), function $CPTableColumn__setHeaderView_(self, _cmd, aView) +{ with(self) +{ + if (!aView) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Attempt to set nil header view on " + objj_msgSend(self, "description")); + _headerView = aView; + var tableHeaderView = objj_msgSend(_tableView, "headerView"); + objj_msgSend(tableHeaderView, "setNeedsLayout"); + objj_msgSend(tableHeaderView, "setNeedsDisplay:", YES); +} +},["void","CPView"]), new objj_method(sel_getUid("headerView"), function $CPTableColumn__headerView(self, _cmd) +{ with(self) +{ + return _headerView; +} +},["CPView"]), new objj_method(sel_getUid("setDataView:"), function $CPTableColumn__setDataView_(self, _cmd, aView) +{ with(self) +{ + if (_dataView === aView) + return; + if (_dataView) + _dataViewData[objj_msgSend(_dataView, "UID")] = nil; + objj_msgSend(aView, "setThemeState:", CPThemeStateTableDataView); + _dataView = aView; + _dataViewData[objj_msgSend(aView, "UID")] = objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", aView); +} +},["void","CPView"]), new objj_method(sel_getUid("dataView"), function $CPTableColumn__dataView(self, _cmd) +{ with(self) +{ + return _dataView; +} +},["CPView"]), new objj_method(sel_getUid("dataViewForRow:"), function $CPTableColumn__dataViewForRow_(self, _cmd, aRowIndex) +{ with(self) +{ + return objj_msgSend(self, "dataView"); +} +},["id","int"]), new objj_method(sel_getUid("_newDataViewForRow:"), function $CPTableColumn___newDataViewForRow_(self, _cmd, aRowIndex) +{ with(self) +{ + var dataView = objj_msgSend(self, "dataViewForRow:", aRowIndex), + dataViewUID = objj_msgSend(dataView, "UID"); + var x = objj_msgSend(self, "tableView")._cachedDataViews[dataViewUID]; + if (x && x.length) + return x.pop(); + if (!_dataViewData[dataViewUID]) + _dataViewData[dataViewUID] = objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", dataView); + var newDataView = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", _dataViewData[dataViewUID]); + newDataView.identifier = dataViewUID; + objj_msgSend(newDataView, "setAutoresizingMask:", CPViewNotSizable); + return newDataView; +} +},["id","int"]), new objj_method(sel_getUid("setIdentifier:"), function $CPTableColumn__setIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + _identifier = anIdentifier; +} +},["void","id"]), new objj_method(sel_getUid("identifier"), function $CPTableColumn__identifier(self, _cmd) +{ with(self) +{ + return _identifier; +} +},["id"]), new objj_method(sel_getUid("setEditable:"), function $CPTableColumn__setEditable_(self, _cmd, shouldBeEditable) +{ with(self) +{ + _isEditable = shouldBeEditable; +} +},["void","BOOL"]), new objj_method(sel_getUid("isEditable"), function $CPTableColumn__isEditable(self, _cmd) +{ with(self) +{ + return _isEditable; +} +},["BOOL"]), new objj_method(sel_getUid("setSortDescriptorPrototype:"), function $CPTableColumn__setSortDescriptorPrototype_(self, _cmd, aSortDescriptor) +{ with(self) +{ + _sortDescriptorPrototype = aSortDescriptor; +} +},["void","CPSortDescriptor"]), new objj_method(sel_getUid("sortDescriptorPrototype"), function $CPTableColumn__sortDescriptorPrototype(self, _cmd) +{ with(self) +{ + return _sortDescriptorPrototype; +} +},["CPSortDescriptor"]), new objj_method(sel_getUid("setHidden:"), function $CPTableColumn__setHidden_(self, _cmd, shouldBeHidden) +{ with(self) +{ + shouldBeHidden = !!shouldBeHidden + if (_isHidden === shouldBeHidden) + return; + _isHidden = shouldBeHidden; + objj_msgSend(objj_msgSend(self, "headerView"), "setHidden:", shouldBeHidden); + objj_msgSend(objj_msgSend(self, "tableView"), "_tableColumnVisibilityDidChange:", self); +} +},["void","BOOL"]), new objj_method(sel_getUid("isHidden"), function $CPTableColumn__isHidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("setHeaderToolTip:"), function $CPTableColumn__setHeaderToolTip_(self, _cmd, aToolTip) +{ with(self) +{ + _headerToolTip = aToolTip; +} +},["void","CPString"]), new objj_method(sel_getUid("headerToolTip"), function $CPTableColumn__headerToolTip(self, _cmd) +{ with(self) +{ + return _headerToolTip; +} +},["CPString"]), new objj_method(sel_getUid("_postDidResizeNotificationWithOldWidth:"), function $CPTableColumn___postDidResizeNotificationWithOldWidth_(self, _cmd, oldWidth) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPTableViewColumnDidResizeNotification, objj_msgSend(self, "tableView"), objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [self, oldWidth], ["CPTableColumn", "CPOldWidth"])); +} +},["void","float"])]); +} +{ +var the_class = objj_getClass("CPTableColumn") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"), function $CPTableColumn__bind_toObject_withKeyPath_options_(self, _cmd, aBinding, anObject, aKeyPath, options) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableColumn").super_class }, "bind:toObject:withKeyPath:options:", aBinding, anObject, aKeyPath, options); + if (!objj_msgSend(aBinding, "isEqual:", "someListOfExceptedBindings(notAcceptedBindings)")) + objj_msgSend(objj_msgSend(self, "tableView"), "_establishBindingsIfUnbound:", anObject); +} +},["void","CPString","id","CPString","CPDictionary"]), new objj_method(sel_getUid("prepareDataView:forRow:"), function $CPTableColumn__prepareDataView_forRow_(self, _cmd, aDataView, aRow) +{ with(self) +{ + var bindingsDictionary = objj_msgSend(CPKeyValueBinding, "allBindingsForObject:", self), + keys = objj_msgSend(bindingsDictionary, "allKeys"); + for (var i=0, count = objj_msgSend(keys, "count"); i<count; i++) + { + var bindingName = keys[i], + bindingPath = objj_msgSend(aDataView, "_replacementKeyPathForBinding:", bindingName), + binding = objj_msgSend(bindingsDictionary, "objectForKey:", bindingName), + bindingInfo = binding._info, + destination = objj_msgSend(bindingInfo, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(bindingInfo, "objectForKey:", CPObservedKeyPathKey), + dotIndex = keyPath.lastIndexOf("."), + value; + if (dotIndex === CPNotFound) + value = objj_msgSend(objj_msgSend(destination, "valueForKeyPath:", keyPath), "objectAtIndex:", aRow); + else + { + var firstPart = keyPath.substring(0, dotIndex), + secondPart = keyPath.substring(dotIndex+1), + firstValue = objj_msgSend(destination, "valueForKeyPath:", firstPart); + if (objj_msgSend(firstValue, "isKindOfClass:", CPArray)) + value = objj_msgSend(objj_msgSend(firstValue, "objectAtIndex:", aRow), "valueForKeyPath:", secondPart); + else + value = objj_msgSend(objj_msgSend(firstValue, "valueForKeyPath:", secondPart), "objectAtIndex:", aRow); + } + value = objj_msgSend(binding, "transformValue:withOptions:", value, objj_msgSend(bindingInfo, "objectForKey:", CPOptionsKey)); + objj_msgSend(aDataView, "setValue:forKey:", value, bindingPath); + } +} +},["void","CPView","unsigned"]), new objj_method(sel_getUid("setValue:"), function $CPTableColumn__setValue_(self, _cmd, content) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "tableView"), "reloadData"); +} +},["void","CPArray"])]); +} +var CPTableColumnIdentifierKey = "CPTableColumnIdentifierKey", + CPTableColumnHeaderViewKey = "CPTableColumnHeaderViewKey", + CPTableColumnDataViewKey = "CPTableColumnDataViewKey", + CPTableColumnWidthKey = "CPTableColumnWidthKey", + CPTableColumnMinWidthKey = "CPTableColumnMinWidthKey", + CPTableColumnMaxWidthKey = "CPTableColumnMaxWidthKey", + CPTableColumnResizingMaskKey = "CPTableColumnResizingMaskKey", + CPTableColumnIsHiddenKey = "CPTableColumnIsHiddenKey", + CPSortDescriptorPrototypeKey = "CPSortDescriptorPrototypeKey", + CPTableColumnIsEditableKey = "CPTableColumnIsEditableKey"; +{ +var the_class = objj_getClass("CPTableColumn") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTableColumn__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableColumn").super_class }, "init"); + if (self) + { + _dataViewData = { }; + _width = objj_msgSend(aCoder, "decodeFloatForKey:", CPTableColumnWidthKey); + _minWidth = objj_msgSend(aCoder, "decodeFloatForKey:", CPTableColumnMinWidthKey); + _maxWidth = objj_msgSend(aCoder, "decodeFloatForKey:", CPTableColumnMaxWidthKey); + objj_msgSend(self, "setIdentifier:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableColumnIdentifierKey)); + objj_msgSend(self, "setHeaderView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableColumnHeaderViewKey)); + objj_msgSend(self, "setDataView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableColumnDataViewKey)); + objj_msgSend(self, "setHeaderView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableColumnHeaderViewKey)); + _resizingMask = objj_msgSend(aCoder, "decodeIntForKey:", CPTableColumnResizingMaskKey); + _isHidden = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableColumnIsHiddenKey); + _isEditable = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableColumnIsEditableKey); + _sortDescriptorPrototype = objj_msgSend(aCoder, "decodeObjectForKey:", CPSortDescriptorPrototypeKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTableColumn__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _identifier, CPTableColumnIdentifierKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _width, CPTableColumnWidthKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _minWidth, CPTableColumnMinWidthKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _maxWidth, CPTableColumnMaxWidthKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _headerView, CPTableColumnHeaderViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _dataView, CPTableColumnDataViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _resizingMask, CPTableColumnResizingMaskKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isHidden, CPTableColumnIsHiddenKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isEditable, CPTableColumnIsEditableKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _sortDescriptorPrototype, CPSortDescriptorPrototypeKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPTableColumn") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setHeaderCell:"), function $CPTableColumn__setHeaderCell_(self, _cmd, aView) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "setHeaderCell: is not supported. -setHeaderCell:aView instead."); +} +},["void","CPView"]), new objj_method(sel_getUid("headerCell"), function $CPTableColumn__headerCell(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "headCell is not supported. -headerView instead."); +} +},["CPView"]), new objj_method(sel_getUid("setDataCell:"), function $CPTableColumn__setDataCell_(self, _cmd, aView) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "setDataCell: is not supported. Use -setHeaderCell:aView instead."); +} +},["void","CPView"]), new objj_method(sel_getUid("dataCell"), function $CPTableColumn__dataCell(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "dataCell is not supported. Use -dataCell instead."); +} +},["CPView"]), new objj_method(sel_getUid("dataCellForRow:"), function $CPTableColumn__dataCellForRow_(self, _cmd, row) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "dataCellForRow: is not supported. Use -dataViewForRow:row instead."); +} +},["id","int"])]); +} + +p;19;CPTableHeaderView.jt;31219;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.ji;8;CPView.jt;31149;objj_executeFile("CPTableColumn.j", YES); +objj_executeFile("CPTableView.j", YES); +objj_executeFile("CPView.j", YES); +{var the_class = objj_allocateClassPair(CPView, "_CPTableColumnHeaderView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_textField")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPTableColumnHeaderView__initWithFrame_(self, _cmd, frame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTableColumnHeaderView").super_class }, "initWithFrame:", frame); + if (self) + objj_msgSend(self, "_init"); + return self; +} +},["void","CGRect"]), new objj_method(sel_getUid("_init"), function $_CPTableColumnHeaderView___init(self, _cmd) +{ with(self) +{ + _textField = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(_textField, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + objj_msgSend(_textField, "setLineBreakMode:", CPLineBreakByTruncatingTail); + objj_msgSend(_textField, "setAlignment:", CPLeftTextAlignment); + objj_msgSend(_textField, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(self, "addSubview:", _textField); +} +},["void"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPTableColumnHeaderView__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); + var inset = objj_msgSend(self, "currentValueForThemeAttribute:", "text-inset"), + bounds = objj_msgSend(self, "bounds"); + objj_msgSend(_textField, "setFrame:", { origin: { x:inset.right, y:inset.top }, size: { width:bounds.size.width - inset.right - inset.left, height:bounds.size.height - inset.top - inset.bottom } }); + objj_msgSend(_textField, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-color")); + objj_msgSend(_textField, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-font")); + objj_msgSend(_textField, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-color")); + objj_msgSend(_textField, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-offset")); + objj_msgSend(_textField, "setAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-alignment")); +} +},["void"]), new objj_method(sel_getUid("setStringValue:"), function $_CPTableColumnHeaderView__setStringValue_(self, _cmd, string) +{ with(self) +{ + objj_msgSend(_textField, "setText:", string); +} +},["void","CPString"]), new objj_method(sel_getUid("stringValue"), function $_CPTableColumnHeaderView__stringValue(self, _cmd) +{ with(self) +{ + return objj_msgSend(_textField, "text"); +} +},["CPString"]), new objj_method(sel_getUid("textField"), function $_CPTableColumnHeaderView__textField(self, _cmd) +{ with(self) +{ + return _textField; +} +},["void"]), new objj_method(sel_getUid("sizeToFit"), function $_CPTableColumnHeaderView__sizeToFit(self, _cmd) +{ with(self) +{ + objj_msgSend(_textField, "sizeToFit"); +} +},["void"]), new objj_method(sel_getUid("setFont:"), function $_CPTableColumnHeaderView__setFont_(self, _cmd, aFont) +{ with(self) +{ + objj_msgSend(_textField, "setFont:", aFont); +} +},["void","CPFont"]), new objj_method(sel_getUid("_setIndicatorImage:"), function $_CPTableColumnHeaderView___setIndicatorImage_(self, _cmd, anImage) +{ with(self) +{ + if (anImage) + { + objj_msgSend(_textField, "setImage:", anImage); + objj_msgSend(_textField, "setImagePosition:", CPImageRight); + } + else + { + objj_msgSend(_textField, "setImagePosition:", CPNoImage); + } +} +},["void","CPImage"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $_CPTableColumnHeaderView__themeClass(self, _cmd) +{ with(self) +{ + return "columnHeader"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $_CPTableColumnHeaderView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), CGInsetMakeZero(), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), CGSizeMakeZero()], ["background-color", "text-alignment", "text-inset", "text-color", "text-font", "text-shadow-color", "text-shadow-offset"]); +} +},["id"])]); +} +var _CPTableColumnHeaderViewStringValueKey = "_CPTableColumnHeaderViewStringValueKey", + _CPTableColumnHeaderViewFontKey = "_CPTableColumnHeaderViewFontKey", + _CPTableColumnHeaderViewImageKey = "_CPTableColumnHeaderViewImageKey"; +{ +var the_class = objj_getClass("_CPTableColumnHeaderView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPTableColumnHeaderView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPTableColumnHeaderView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTableColumnHeaderView").super_class }, "initWithCoder:", aCoder)) + { + objj_msgSend(self, "_init"); + objj_msgSend(self, "_setIndicatorImage:", objj_msgSend(aCoder, "decodeObjectForKey:", _CPTableColumnHeaderViewImageKey)); + objj_msgSend(self, "setStringValue:", objj_msgSend(aCoder, "decodeObjectForKey:", _CPTableColumnHeaderViewStringValueKey)); + objj_msgSend(self, "setFont:", objj_msgSend(aCoder, "decodeObjectForKey:", _CPTableColumnHeaderViewFontKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPTableColumnHeaderView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTableColumnHeaderView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_textField, "text"), _CPTableColumnHeaderViewStringValueKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_textField, "image"), _CPTableColumnHeaderViewImageKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_textField, "font"), _CPTableColumnHeaderViewFontKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPView, "CPTableHeaderView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_mouseDownLocation"), new objj_ivar("_previousTrackingLocation"), new objj_ivar("_activeColumn"), new objj_ivar("_pressedColumn"), new objj_ivar("_isResizing"), new objj_ivar("_isDragging"), new objj_ivar("_isTrackingColumn"), new objj_ivar("_drawsColumnLines"), new objj_ivar("_columnOldWidth"), new objj_ivar("_tableView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("tableView"), function $CPTableHeaderView__tableView(self, _cmd) +{ with(self) +{ +return _tableView; +} +},["id"]), +new objj_method(sel_getUid("setTableView:"), function $CPTableHeaderView__setTableView_(self, _cmd, newValue) +{ with(self) +{ +_tableView = newValue; +} +},["void","id"]), new objj_method(sel_getUid("_init"), function $CPTableHeaderView___init(self, _cmd) +{ with(self) +{ + _mouseDownLocation = { x:0.0, y:0.0 }; + _previousTrackingLocation = { x:0.0, y:0.0 }; + _activeColumn = -1; + _pressedColumn = -1; + _isResizing = NO; + _isDragging = NO; + _isTrackingColumn = NO; + _drawsColumnLines = YES; + _columnOldWidth = 0.0; + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); +} +},["void"]), new objj_method(sel_getUid("initWithFrame:"), function $CPTableHeaderView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableHeaderView").super_class }, "initWithFrame:", aFrame); + if (self) + objj_msgSend(self, "_init"); + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("columnAtPoint:"), function $CPTableHeaderView__columnAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(_tableView, "columnAtPoint:", CGPointMake(aPoint.x, aPoint.y)); +} +},["int","CGPoint"]), new objj_method(sel_getUid("headerRectOfColumn:"), function $CPTableHeaderView__headerRectOfColumn_(self, _cmd, aColumnIndex) +{ with(self) +{ + var headerRect = objj_msgSend(self, "bounds"), + columnRect = objj_msgSend(_tableView, "rectOfColumn:", aColumnIndex); + headerRect.origin.x = (columnRect.origin.x); + headerRect.size.width = (columnRect.size.width); + return headerRect; +} +},["CGRect","int"]), new objj_method(sel_getUid("setDrawsColumnLines:"), function $CPTableHeaderView__setDrawsColumnLines_(self, _cmd, aFlag) +{ with(self) +{ + _drawsColumnLines = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("drawsColumnLines"), function $CPTableHeaderView__drawsColumnLines(self, _cmd) +{ with(self) +{ + return _drawsColumnLines; +} +},["BOOL"]), new objj_method(sel_getUid("_cursorRectForColumn:"), function $CPTableHeaderView___cursorRectForColumn_(self, _cmd, column) +{ with(self) +{ + if (column == -1 || !(objj_msgSend(_tableView._tableColumns[column], "resizingMask") & CPTableColumnUserResizingMask)) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var rect = objj_msgSend(self, "headerRectOfColumn:", column); + rect.origin.x = (rect.origin.x + rect.size.width) - 5; + rect.size.width = 20; + return rect; +} +},["CGRect","int"]), new objj_method(sel_getUid("_setPressedColumn:"), function $CPTableHeaderView___setPressedColumn_(self, _cmd, column) +{ with(self) +{ + if (_pressedColumn != -1) + { + var headerView = objj_msgSend(_tableView._tableColumns[_pressedColumn], "headerView"); + objj_msgSend(headerView, "unsetThemeState:", CPThemeStateHighlighted); + } + if (column != -1) + { + var headerView = objj_msgSend(_tableView._tableColumns[column], "headerView"); + objj_msgSend(headerView, "setThemeState:", CPThemeStateHighlighted); + } + _pressedColumn = column; +} +},["void","CPInteger"]), new objj_method(sel_getUid("mouseDown:"), function $CPTableHeaderView__mouseDown_(self, _cmd, theEvent) +{ with(self) +{ + objj_msgSend(self, "trackMouse:", theEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackMouse:"), function $CPTableHeaderView__trackMouse_(self, _cmd, theEvent) +{ with(self) +{ + var type = objj_msgSend(theEvent, "type"), + currentLocation = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(theEvent, "locationInWindow"), nil); + currentLocation.x -= 5.0; + var columnIndex = objj_msgSend(self, "columnAtPoint:", currentLocation), + shouldResize = objj_msgSend(self, "shouldResizeTableColumn:at:", columnIndex, { x:currentLocation.x + 5.0, y:currentLocation.y }); + if (type === CPLeftMouseUp) + { + if (shouldResize) + objj_msgSend(self, "stopResizingTableColumn:at:", _activeColumn, currentLocation); + else if (objj_msgSend(self, "_shouldStopTrackingTableColumn:at:", columnIndex, currentLocation)) + { + objj_msgSend(_tableView, "_didClickTableColumn:modifierFlags:", columnIndex, objj_msgSend(theEvent, "modifierFlags")); + objj_msgSend(self, "stopTrackingTableColumn:at:", columnIndex, currentLocation); + _isTrackingColumn = NO; + } + objj_msgSend(self, "_updateResizeCursor:", objj_msgSend(CPApp, "currentEvent")); + _activeColumn = CPNotFound; + return; + } + if (type === CPLeftMouseDown) + { + if (columnIndex === -1) + return; + _mouseDownLocation = currentLocation; + _activeColumn = columnIndex; + objj_msgSend(_tableView, "_sendDelegateDidMouseDownInHeader:", columnIndex); + if (shouldResize) + objj_msgSend(self, "startResizingTableColumn:at:", columnIndex, currentLocation); + else + { + objj_msgSend(self, "startTrackingTableColumn:at:", columnIndex, currentLocation); + _isTrackingColumn = YES; + } + } + else if (type === CPLeftMouseDragged) + { + if (shouldResize) + objj_msgSend(self, "continueResizingTableColumn:at:", _activeColumn, currentLocation); + else + { + if (_activeColumn === columnIndex && (currentLocation.x >= (objj_msgSend(self, "headerRectOfColumn:", columnIndex).origin.x) && currentLocation.y >= (objj_msgSend(self, "headerRectOfColumn:", columnIndex).origin.y) && currentLocation.x < (objj_msgSend(self, "headerRectOfColumn:", columnIndex).origin.x + objj_msgSend(self, "headerRectOfColumn:", columnIndex).size.width) && currentLocation.y < (objj_msgSend(self, "headerRectOfColumn:", columnIndex).origin.y + objj_msgSend(self, "headerRectOfColumn:", columnIndex).size.height))) + { + if (_isTrackingColumn && _pressedColumn !== -1) + { + if (!objj_msgSend(self, "continueTrackingTableColumn:at:", columnIndex, currentLocation)) + return; + } else + objj_msgSend(self, "startTrackingTableColumn:at:", columnIndex, currentLocation); + } else if (_isTrackingColumn && _pressedColumn !== -1) + objj_msgSend(self, "stopTrackingTableColumn:at:", _activeColumn, currentLocation); + } + } + _previousTrackingLocation = currentLocation; + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackMouse:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("startTrackingTableColumn:at:"), function $CPTableHeaderView__startTrackingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + objj_msgSend(self, "_setPressedColumn:", aColumnIndex); +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("continueTrackingTableColumn:at:"), function $CPTableHeaderView__continueTrackingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + if (objj_msgSend(self, "_shouldDragTableColumn:at:", aColumnIndex, aPoint)) + { + var columnRect = objj_msgSend(self, "headerRectOfColumn:", aColumnIndex), + offset = { x:0.0, y:0.0 }, + view = objj_msgSend(_tableView, "_dragViewForColumn:event:offset:", aColumnIndex, objj_msgSend(CPApp, "currentEvent"), offset), + viewLocation = { x:0.0, y:0.0 }; + viewLocation.x = ( (columnRect.origin.x) + offset.x ) + ( aPoint.x - _mouseDownLocation.x ); + viewLocation.y = (columnRect.origin.y) + offset.y; + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", view, viewLocation, { width:0.0, height:0.0 }, objj_msgSend(CPApp, "currentEvent"), objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard), self, YES); + return NO; + } + return YES; +} +},["BOOL","int","CGPoint"]), new objj_method(sel_getUid("_shouldStopTrackingTableColumn:at:"), function $CPTableHeaderView___shouldStopTrackingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + return _isTrackingColumn && _activeColumn === aColumnIndex && + (aPoint.x >= (objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).origin.x) && aPoint.y >= (objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).origin.y) && aPoint.x < (objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).origin.x + objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).size.width) && aPoint.y < (objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).origin.y + objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).size.height)); +} +},["BOOL","int","CGPoint"]), new objj_method(sel_getUid("stopTrackingTableColumn:at:"), function $CPTableHeaderView__stopTrackingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + objj_msgSend(self, "_setPressedColumn:", CPNotFound); + objj_msgSend(self, "_updateResizeCursor:", objj_msgSend(CPApp, "currentEvent")); +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("_shouldDragTableColumn:at:"), function $CPTableHeaderView___shouldDragTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + return objj_msgSend(_tableView, "allowsColumnReordering") && ABS(aPoint.x - _mouseDownLocation.x) >= 10.0; +} +},["BOOL","int","CGPoint"]), new objj_method(sel_getUid("_headerRectOfLastVisibleColumn"), function $CPTableHeaderView___headerRectOfLastVisibleColumn(self, _cmd) +{ with(self) +{ + var tableColumns = objj_msgSend(_tableView, "tableColumns"), + columnIndex = objj_msgSend(tableColumns, "count"); + while (columnIndex--) + { + var tableColumn = objj_msgSend(tableColumns, "objectAtIndex:", columnIndex); + if (!objj_msgSend(tableColumn, "isHidden")) + return objj_msgSend(self, "headerRectOfColumn:", columnIndex); + } + return nil; +} +},["CGRect"]), new objj_method(sel_getUid("_constrainDragView:at:"), function $CPTableHeaderView___constrainDragView_at_(self, _cmd, theDragView, aPoint) +{ with(self) +{ + var tableColumns = objj_msgSend(_tableView, "tableColumns"), + lastColumnRect = objj_msgSend(self, "_headerRectOfLastVisibleColumn"), + activeColumnRect = objj_msgSend(self, "headerRectOfColumn:", _activeColumn), + dragWindow = objj_msgSend(theDragView, "window"), + frame = objj_msgSend(dragWindow, "frame"); + frame.origin = objj_msgSend(objj_msgSend(self, "window"), "convertGlobalToBase:", frame.origin); + frame.origin = objj_msgSend(self, "convertPoint:fromView:", frame.origin, nil); + frame.origin.x = MAX(0.0, MIN((frame.origin.x), (lastColumnRect.origin.x + lastColumnRect.size.width) - (activeColumnRect.size.width))); + frame.origin.y = (lastColumnRect.origin.y); + frame.origin = objj_msgSend(self, "convertPoint:toView:", frame.origin, nil); + frame.origin = objj_msgSend(objj_msgSend(self, "window"), "convertBaseToGlobal:", frame.origin); + objj_msgSend(dragWindow, "setFrame:", frame); +} +},["void","CPView","CGPoint"]), new objj_method(sel_getUid("_moveColumn:toColumn:"), function $CPTableHeaderView___moveColumn_toColumn_(self, _cmd, aFromIndex, aToIndex) +{ with(self) +{ + objj_msgSend(_tableView, "moveColumn:toColumn:", aFromIndex, aToIndex); + _activeColumn = aToIndex; + _pressedColumn = _activeColumn; +} +},["void","int","int"]), new objj_method(sel_getUid("draggedView:beganAt:"), function $CPTableHeaderView__draggedView_beganAt_(self, _cmd, aView, aPoint) +{ with(self) +{ + _isDragging = YES; + var column = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", _activeColumn); + objj_msgSend(objj_msgSend(column, "headerView"), "setHidden:", YES); + objj_msgSend(_tableView, "_setDraggedColumn:", column); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPView","CGPoint"]), new objj_method(sel_getUid("draggedView:movedTo:"), function $CPTableHeaderView__draggedView_movedTo_(self, _cmd, aView, aPoint) +{ with(self) +{ + objj_msgSend(self, "_constrainDragView:at:", aView, aPoint); + var dragWindow = objj_msgSend(aView, "window"), + dragWindowFrame = objj_msgSend(dragWindow, "frame"); + var hoverPoint = CGPointCreateCopy(aPoint); + if (aPoint.x < _previousTrackingLocation.x) + hoverPoint = { x:(dragWindowFrame.origin.x), y:(dragWindowFrame.origin.y) }; + else if (aPoint.x > _previousTrackingLocation.x) + hoverPoint = { x:(dragWindowFrame.origin.x + dragWindowFrame.size.width), y:(dragWindowFrame.origin.y) }; + hoverPoint = objj_msgSend(objj_msgSend(self, "window"), "convertGlobalToBase:", hoverPoint); + hoverPoint = objj_msgSend(self, "convertPoint:fromView:", hoverPoint, nil); + var hoveredColumn = objj_msgSend(self, "columnAtPoint:", hoverPoint); + if (hoveredColumn !== -1) + { + var columnRect = objj_msgSend(self, "headerRectOfColumn:", hoveredColumn), + columnCenterPoint = objj_msgSend(self, "convertPoint:fromView:", CGPointMake((columnRect.origin.x + (columnRect.size.width) / 2.0), (columnRect.origin.y + (columnRect.size.height) / 2.0)), self); + if (hoveredColumn < _activeColumn && hoverPoint.x < columnCenterPoint.x) + objj_msgSend(self, "_moveColumn:toColumn:", _activeColumn, hoveredColumn); + else if (hoveredColumn > _activeColumn && hoverPoint.x > columnCenterPoint.x) + objj_msgSend(self, "_moveColumn:toColumn:", _activeColumn, hoveredColumn); + } + _previousTrackingLocation = aPoint; +} +},["void","CPView","CGPoint"]), new objj_method(sel_getUid("draggedView:endedAt:operation:"), function $CPTableHeaderView__draggedView_endedAt_operation_(self, _cmd, aView, aLocation, anOperation) +{ with(self) +{ + _isDragging = NO; + _isTrackingColumn = NO; + objj_msgSend(_tableView, "_setDraggedColumn:", nil); + objj_msgSend(objj_msgSend(objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", _activeColumn), "headerView"), "setHidden:", NO); + objj_msgSend(self, "stopTrackingTableColumn:at:", _activeColumn, aLocation); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPImage","CGPoint","CPDragOperation"]), new objj_method(sel_getUid("shouldResizeTableColumn:at:"), function $CPTableHeaderView__shouldResizeTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + if (_isResizing) + return YES; + if (_isTrackingColumn) + return NO; + return objj_msgSend(_tableView, "allowsColumnResizing") && (aPoint.x >= (objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).origin.x) && aPoint.y >= (objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).origin.y) && aPoint.x < (objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).origin.x + objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).size.width) && aPoint.y < (objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).origin.y + objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).size.height)); +} +},["BOOL","int","CGPoint"]), new objj_method(sel_getUid("startResizingTableColumn:at:"), function $CPTableHeaderView__startResizingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + _isResizing = YES; + var tableColumn = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", aColumnIndex); + objj_msgSend(tableColumn, "setDisableResizingPosting:", YES); + objj_msgSend(_tableView, "setDisableAutomaticResizing:", YES); +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("continueResizingTableColumn:at:"), function $CPTableHeaderView__continueResizingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + var tableColumn = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", aColumnIndex), + newWidth = objj_msgSend(tableColumn, "width") + aPoint.x - _previousTrackingLocation.x; + if (newWidth < objj_msgSend(tableColumn, "minWidth")) + objj_msgSend(objj_msgSend(CPCursor, "resizeRightCursor"), "set"); + else if (newWidth > objj_msgSend(tableColumn, "maxWidth")) + objj_msgSend(objj_msgSend(CPCursor, "resizeLeftCursor"), "set"); + else + { + _tableView._lastColumnShouldSnap = NO; + objj_msgSend(tableColumn, "setWidth:", newWidth); + objj_msgSend(objj_msgSend(CPCursor, "resizeLeftRightCursor"), "set"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("stopResizingTableColumn:at:"), function $CPTableHeaderView__stopResizingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + var tableColumn = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", aColumnIndex); + objj_msgSend(tableColumn, "_postDidResizeNotificationWithOldWidth:", _columnOldWidth); + objj_msgSend(tableColumn, "setDisableResizingPosting:", NO); + objj_msgSend(_tableView, "setDisableAutomaticResizing:", NO); + _isResizing = NO; +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("_updateResizeCursor:"), function $CPTableHeaderView___updateResizeCursor_(self, _cmd, theEvent) +{ with(self) +{ + if (!objj_msgSend(_tableView, "allowsColumnResizing") || (objj_msgSend(theEvent, "type") === CPLeftMouseUp && !objj_msgSend(objj_msgSend(self, "window"), "acceptsMouseMovedEvents"))) + { + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); + return; + } + var mouseLocation = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(theEvent, "locationInWindow"), nil), + mouseOverLocation = CGPointMake(mouseLocation.x - 5, mouseLocation.y), + overColumn = objj_msgSend(self, "columnAtPoint:", mouseOverLocation); + if (overColumn >= 0 && (mouseLocation.x >= (objj_msgSend(self, "_cursorRectForColumn:", overColumn).origin.x) && mouseLocation.y >= (objj_msgSend(self, "_cursorRectForColumn:", overColumn).origin.y) && mouseLocation.x < (objj_msgSend(self, "_cursorRectForColumn:", overColumn).origin.x + objj_msgSend(self, "_cursorRectForColumn:", overColumn).size.width) && mouseLocation.y < (objj_msgSend(self, "_cursorRectForColumn:", overColumn).origin.y + objj_msgSend(self, "_cursorRectForColumn:", overColumn).size.height))) + { + var tableColumn = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", overColumn), + width = objj_msgSend(tableColumn, "width"); + if (width == objj_msgSend(tableColumn, "minWidth")) + objj_msgSend(objj_msgSend(CPCursor, "resizeRightCursor"), "set"); + else if (width == objj_msgSend(tableColumn, "maxWidth")) + objj_msgSend(objj_msgSend(CPCursor, "resizeLeftCursor"), "set"); + else + objj_msgSend(objj_msgSend(CPCursor, "resizeLeftRightCursor"), "set"); + } + else + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseEntered:"), function $CPTableHeaderView__mouseEntered_(self, _cmd, theEvent) +{ with(self) +{ + objj_msgSend(self, "_updateResizeCursor:", theEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseMoved:"), function $CPTableHeaderView__mouseMoved_(self, _cmd, theEvent) +{ with(self) +{ + objj_msgSend(self, "_updateResizeCursor:", theEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseExited:"), function $CPTableHeaderView__mouseExited_(self, _cmd, theEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("layoutSubviews"), function $CPTableHeaderView__layoutSubviews(self, _cmd) +{ with(self) +{ + var tableColumns = objj_msgSend(_tableView, "tableColumns"), + count = objj_msgSend(tableColumns, "count"); + for (var i = 0; i < count; i++) + { + var column = objj_msgSend(tableColumns, "objectAtIndex:", i), + headerView = objj_msgSend(column, "headerView"); + var frame = objj_msgSend(self, "headerRectOfColumn:", i); + frame.size.height -= 0.5; + if (i > 0) + { + frame.origin.x += 0.5; + frame.size.width -= 1; + } + objj_msgSend(headerView, "setFrame:", frame); + if(objj_msgSend(headerView, "superview") != self) + objj_msgSend(self, "addSubview:", headerView); + } + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); +} +},["void"]), new objj_method(sel_getUid("drawRect:"), function $CPTableHeaderView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + if (!_tableView || !objj_msgSend(self, "drawsColumnLines")) + return; + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + exposedColumnIndexes = objj_msgSend(_tableView, "columnIndexesInRect:", aRect), + columnsArray = [], + tableColumns = objj_msgSend(_tableView, "tableColumns"), + exposedTableColumns = _tableView._exposedColumns, + firstIndex = objj_msgSend(exposedTableColumns, "firstIndex"), + exposedRange = CPMakeRange(firstIndex, objj_msgSend(exposedTableColumns, "lastIndex") - firstIndex + 1); + CGContextSetLineWidth(context, 1); + CGContextSetStrokeColor(context, objj_msgSend(self, "currentValueForThemeAttribute:", "divider-color")); + objj_msgSend(exposedColumnIndexes, "getIndexes:maxCount:inIndexRange:", columnsArray, -1, exposedRange); + var columnArrayIndex = 0, + columnArrayCount = columnsArray.length, + columnMaxX; + CGContextBeginPath(context); + for(; columnArrayIndex < columnArrayCount; columnArrayIndex++) + { + var columnIndex = columnsArray[columnArrayIndex], + columnToStroke = objj_msgSend(self, "headerRectOfColumn:", columnIndex); + columnMaxX = (columnToStroke.origin.x + columnToStroke.size.width); + CGContextMoveToPoint(context, ROUND(columnMaxX) + 0.5, ROUND((columnToStroke.origin.y))); + CGContextAddLineToPoint(context, ROUND(columnMaxX) + 0.5, ROUND((columnToStroke.origin.y + columnToStroke.size.height))); + } + CGContextClosePath(context); + CGContextStrokePath(context); +} +},["void","CGRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPTableHeaderView__themeClass(self, _cmd) +{ with(self) +{ + return "tableHeaderRow"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPTableHeaderView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), objj_msgSend(CPColor, "grayColor")], ["background-color", "divider-color"]); +} +},["id"])]); +} +var CPTableHeaderViewTableViewKey = "CPTableHeaderViewTableViewKey", + CPTableHeaderViewDrawsColumnLines = "CPTableHeaderViewDrawsColumnLines"; +{ +var the_class = objj_getClass("CPTableHeaderView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableHeaderView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTableHeaderView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableHeaderView").super_class }, "initWithCoder:", aCoder)) + { + objj_msgSend(self, "_init"); + _tableView = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableHeaderViewTableViewKey); + _drawsColumnLines = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableHeaderViewDrawsColumnLines); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTableHeaderView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableHeaderView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _tableView, CPTableHeaderViewTableViewKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _drawsColumnLines, CPTableHeaderViewDrawsColumnLines); +} +},["void","CPCoder"])]); +} + +p;13;CPTableView.jt;141459;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;AppKit/CGGradient.ji;11;CPControl.ji;15;CPTableColumn.ji;15;_CPCornerView.ji;12;CPScroller.jt;141316;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("AppKit/CGGradient.j", NO); +objj_executeFile("CPControl.j", YES); +objj_executeFile("CPTableColumn.j", YES); +objj_executeFile("_CPCornerView.j", YES); +objj_executeFile("CPScroller.j", YES); +CPTableViewColumnDidMoveNotification = "CPTableViewColumnDidMoveNotification"; +CPTableViewColumnDidResizeNotification = "CPTableViewColumnDidResizeNotification"; +CPTableViewSelectionDidChangeNotification = "CPTableViewSelectionDidChangeNotification"; +CPTableViewSelectionIsChangingNotification = "CPTableViewSelectionIsChangingNotification"; +var CPTableViewDataSource_numberOfRowsInTableView_ = 1 << 0, + CPTableViewDataSource_tableView_objectValueForTableColumn_row_ = 1 << 1, + CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_ = 1 << 2, + CPTableViewDataSource_tableView_acceptDrop_row_dropOperation_ = 1 << 3, + CPTableViewDataSource_tableView_namesOfPromisedFilesDroppedAtDestination_forDraggedRowsWithIndexes_ = 1 << 4, + CPTableViewDataSource_tableView_validateDrop_proposedRow_proposedDropOperation_ = 1 << 5, + CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_ = 1 << 6, + CPTableViewDataSource_tableView_sortDescriptorsDidChange_ = 1 << 7; +var CPTableViewDelegate_selectionShouldChangeInTableView_ = 1 << 0, + CPTableViewDelegate_tableView_dataViewForTableColumn_row_ = 1 << 1, + CPTableViewDelegate_tableView_didClickTableColumn_ = 1 << 2, + CPTableViewDelegate_tableView_didDragTableColumn_ = 1 << 3, + CPTableViewDelegate_tableView_heightOfRow_ = 1 << 4, + CPTableViewDelegate_tableView_isGroupRow_ = 1 << 5, + CPTableViewDelegate_tableView_mouseDownInHeaderOfTableColumn_ = 1 << 6, + CPTableViewDelegate_tableView_nextTypeSelectMatchFromRow_toRow_forString_ = 1 << 7, + CPTableViewDelegate_tableView_selectionIndexesForProposedSelection_ = 1 << 8, + CPTableViewDelegate_tableView_shouldEditTableColumn_row_ = 1 << 9, + CPTableViewDelegate_tableView_shouldSelectRow_ = 1 << 10, + CPTableViewDelegate_tableView_shouldSelectTableColumn_ = 1 << 11, + CPTableViewDelegate_tableView_shouldShowViewExpansionForTableColumn_row_ = 1 << 12, + CPTableViewDelegate_tableView_shouldTrackView_forTableColumn_row_ = 1 << 13, + CPTableViewDelegate_tableView_shouldTypeSelectForEvent_withCurrentSearchString_ = 1 << 14, + CPTableViewDelegate_tableView_toolTipForView_rect_tableColumn_row_mouseLocation_ = 1 << 15, + CPTableViewDelegate_tableView_typeSelectStringForTableColumn_row_ = 1 << 16, + CPTableViewDelegate_tableView_willDisplayView_forTableColumn_row_ = 1 << 17, + CPTableViewDelegate_tableViewSelectionDidChange_ = 1 << 18, + CPTableViewDelegate_tableViewSelectionIsChanging_ = 1 << 19; +CPTableViewDraggingDestinationFeedbackStyleNone = -1; +CPTableViewDraggingDestinationFeedbackStyleRegular = 0; +CPTableViewDraggingDestinationFeedbackStyleSourceList = 1; +CPTableViewDropOn = 0; +CPTableViewDropAbove = 1; +CPSourceListGradient = "CPSourceListGradient"; +CPSourceListTopLineColor = "CPSourceListTopLineColor"; +CPSourceListBottomLineColor = "CPSourceListBottomLineColor"; +CPTableViewSelectionHighlightStyleNone = -1; +CPTableViewSelectionHighlightStyleRegular = 0; +CPTableViewSelectionHighlightStyleSourceList = 1; +CPTableViewGridNone = 0; +CPTableViewSolidVerticalGridLineMask = 1 << 0; +CPTableViewSolidHorizontalGridLineMask = 1 << 1; +CPTableViewNoColumnAutoresizing = 0; +CPTableViewUniformColumnAutoresizingStyle = 1; +CPTableViewSequentialColumnAutoresizingStyle = 2; +CPTableViewReverseSequentialColumnAutoresizingStyle = 3; +CPTableViewLastColumnOnlyAutoresizingStyle = 4; +CPTableViewFirstColumnOnlyAutoresizingStyle = 5; +{var the_class = objj_allocateClassPair(CPView, "_CPTableDrawView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_tableView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithTableView:"), function $_CPTableDrawView__initWithTableView_(self, _cmd, aTableView) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTableDrawView").super_class }, "init"); + if (self) + _tableView = aTableView; + return self; +} +},["id","CPTableView"]), new objj_method(sel_getUid("drawRect:"), function $_CPTableDrawView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var frame = objj_msgSend(self, "frame"), + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextTranslateCTM(context, -(frame.origin.x), -(frame.origin.y)); + objj_msgSend(_tableView, "_drawRect:", aRect); +} +},["void","CGRect"])]); +} +{var the_class = objj_allocateClassPair(CPControl, "CPTableView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_dataSource"), new objj_ivar("_implementedDataSourceMethods"), new objj_ivar("_delegate"), new objj_ivar("_implementedDelegateMethods"), new objj_ivar("_tableColumns"), new objj_ivar("_tableColumnRanges"), new objj_ivar("_dirtyTableColumnRangeIndex"), new objj_ivar("_numberOfHiddenColumns"), new objj_ivar("_reloadAllRows"), new objj_ivar("_objectValues"), new objj_ivar("_exposedRows"), new objj_ivar("_exposedColumns"), new objj_ivar("_dataViewsForTableColumns"), new objj_ivar("_cachedDataViews"), new objj_ivar("_allowsColumnReordering"), new objj_ivar("_allowsColumnResizing"), new objj_ivar("_allowsColumnSelection"), new objj_ivar("_allowsMultipleSelection"), new objj_ivar("_allowsEmptySelection"), new objj_ivar("_sortDescriptors"), new objj_ivar("_intercellSpacing"), new objj_ivar("_rowHeight"), new objj_ivar("_usesAlternatingRowBackgroundColors"), new objj_ivar("_alternatingRowBackgroundColors"), new objj_ivar("_selectionHighlightStyle"), new objj_ivar("_currentHighlightedTableColumn"), new objj_ivar("_gridStyleMask"), new objj_ivar("_numberOfRows"), new objj_ivar("_headerView"), new objj_ivar("_cornerView"), new objj_ivar("_selectedColumnIndexes"), new objj_ivar("_selectedRowIndexes"), new objj_ivar("_selectionAnchorRow"), new objj_ivar("_lastSelectedRow"), new objj_ivar("_previouslySelectedRowIndexes"), new objj_ivar("_startTrackingPoint"), new objj_ivar("_startTrackingTimestamp"), new objj_ivar("_trackingPointMovedOutOfClickSlop"), new objj_ivar("_editingCellIndex"), new objj_ivar("_tableDrawView"), new objj_ivar("_doubleAction"), new objj_ivar("_clickedRow"), new objj_ivar("_columnAutoResizingStyle"), new objj_ivar("_lastTrackedRowIndex"), new objj_ivar("_originalMouseDownPoint"), new objj_ivar("_verticalMotionCanDrag"), new objj_ivar("_destinationDragStyle"), new objj_ivar("_isSelectingSession"), new objj_ivar("_draggedRowIndexes"), new objj_ivar("_dropOperationFeedbackView"), new objj_ivar("_dragOperationDefaultMask"), new objj_ivar("_retargetedDropRow"), new objj_ivar("_retargetedDropOperation"), new objj_ivar("_disableAutomaticResizing"), new objj_ivar("_lastColumnShouldSnap"), new objj_ivar("_implementsCustomDrawRow"), new objj_ivar("_draggedColumn"), new objj_ivar("_differedColumnDataToRemove")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("disableAutomaticResizing"), function $CPTableView__disableAutomaticResizing(self, _cmd) +{ with(self) +{ +return _disableAutomaticResizing; +} +},["id"]), +new objj_method(sel_getUid("setDisableAutomaticResizing:"), function $CPTableView__setDisableAutomaticResizing_(self, _cmd, newValue) +{ with(self) +{ +_disableAutomaticResizing = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithFrame:"), function $CPTableView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _allowsColumnReordering = YES; + _allowsColumnResizing = YES; + _allowsMultipleSelection = NO; + _allowsEmptySelection = YES; + _allowsColumnSelection = NO; + _disableAutomaticResizing = NO; + _selectionHighlightStyle = CPTableViewSelectionHighlightStyleRegular; + objj_msgSend(self, "setUsesAlternatingRowBackgroundColors:", NO); + objj_msgSend(self, "setAlternatingRowBackgroundColors:", + [objj_msgSend(CPColor, "whiteColor"), objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", 245.0 / 255.0, 249.0 / 255.0, 252.0 / 255.0, 1.0)]); + _tableColumns = []; + _tableColumnRanges = []; + _dirtyTableColumnRangeIndex = CPNotFound; + _numberOfHiddenColumns = 0; + _intercellSpacing = { width:3.0, height:2.0 }; + _rowHeight = 23.0; + objj_msgSend(self, "setGridColor:", objj_msgSend(CPColor, "colorWithHexString:", "dce0e2")); + objj_msgSend(self, "setGridStyleMask:", CPTableViewGridNone); + _headerView = objj_msgSend(objj_msgSend(CPTableHeaderView, "alloc"), "initWithFrame:", CGRectMake(0, 0, objj_msgSend(self, "bounds").size.width, _rowHeight)); + objj_msgSend(_headerView, "setTableView:", self); + _cornerView = nil; + _lastSelectedRow = -1; + _currentHighlightedTableColumn = nil; + _sortDescriptors = objj_msgSend(CPArray, "array"); + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _verticalMotionCanDrag = YES; + _isSelectingSession = NO; + _retargetedDropRow = nil; + _retargetedDropOperation = nil; + _dragOperationDefaultMask = nil; + _destinationDragStyle = CPTableViewDraggingDestinationFeedbackStyleRegular; + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(self, "_init"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("_init"), function $CPTableView___init(self, _cmd) +{ with(self) +{ + _tableViewFlags = 0; + _selectedColumnIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _selectedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _dropOperationFeedbackView = objj_msgSend(objj_msgSend(_CPDropOperationDrawingView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(_dropOperationFeedbackView, "setTableView:", self); + _lastColumnShouldSnap = NO; + if (!_alternatingRowBackgroundColors) + _alternatingRowBackgroundColors = [objj_msgSend(CPColor, "whiteColor"), objj_msgSend(CPColor, "colorWithHexString:", "e4e7ff")]; + _selectionHighlightColor = objj_msgSend(CPColor, "colorWithHexString:", "5f83b9"); + _tableColumnRanges = []; + _dirtyTableColumnRangeIndex = 0; + _numberOfHiddenColumns = 0; + _objectValues = { }; + _dataViewsForTableColumns = { }; + _dataViews= []; + _numberOfRows = 0; + _exposedRows = objj_msgSend(CPIndexSet, "indexSet"); + _exposedColumns = objj_msgSend(CPIndexSet, "indexSet"); + _cachedDataViews = { }; + _tableDrawView = objj_msgSend(objj_msgSend(_CPTableDrawView, "alloc"), "initWithTableView:", self); + objj_msgSend(_tableDrawView, "setBackgroundColor:", objj_msgSend(CPColor, "clearColor")); + objj_msgSend(self, "addSubview:", _tableDrawView); + if (!_headerView) + _headerView = objj_msgSend(objj_msgSend(CPTableHeaderView, "alloc"), "initWithFrame:", CGRectMake(0, 0, objj_msgSend(self, "bounds").size.width, _rowHeight)); + objj_msgSend(_headerView, "setTableView:", self); + if (!_cornerView) + _cornerView = objj_msgSend(objj_msgSend(_CPCornerView, "alloc"), "initWithFrame:", CGRectMake(0, 0, objj_msgSend(CPScroller, "scrollerWidth"), CGRectGetHeight(objj_msgSend(_headerView, "frame")))); + _draggedColumn = nil; + _differedColumnDataToRemove = [ ]; + _implementsCustomDrawRow = objj_msgSend(self, "implementsSelector:", sel_getUid("drawRow:clipRect:")); +} +},["void"]), new objj_method(sel_getUid("setDataSource:"), function $CPTableView__setDataSource_(self, _cmd, aDataSource) +{ with(self) +{ + if (_dataSource === aDataSource) + return; + _dataSource = aDataSource; + _implementedDataSourceMethods = 0; + if (!_dataSource) + return; + var hasContentBinding = !!objj_msgSend(self, "infoForBinding:", "content"); + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("numberOfRowsInTableView:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_numberOfRowsInTableView_; + else if (!hasContentBinding) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, objj_msgSend(aDataSource, "description") + " does not implement numberOfRowsInTableView:."); + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:objectValueForTableColumn:row:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_objectValueForTableColumn_row_; + else if (!hasContentBinding) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, objj_msgSend(aDataSource, "description") + " does not implement tableView:objectValueForTableColumn:row:"); + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:setObjectValue:forTableColumn:row:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:acceptDrop:row:dropOperation:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_acceptDrop_row_dropOperation_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_namesOfPromisedFilesDroppedAtDestination_forDraggedRowsWithIndexes_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_validateDrop_proposedRow_proposedDropOperation_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:sortDescriptorsDidChange:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_sortDescriptorsDidChange_; + objj_msgSend(self, "reloadData"); +} +},["void","id"]), new objj_method(sel_getUid("dataSource"), function $CPTableView__dataSource(self, _cmd) +{ with(self) +{ + return _dataSource; +} +},["id"]), new objj_method(sel_getUid("reloadDataForRowIndexes:columnIndexes:"), function $CPTableView__reloadDataForRowIndexes_columnIndexes_(self, _cmd, rowIndexes, columnIndexes) +{ with(self) +{ + objj_msgSend(self, "reloadData"); +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("reloadData"), function $CPTableView__reloadData(self, _cmd) +{ with(self) +{ + _reloadAllRows = YES; + _objectValues = { }; + objj_msgSend(self, "noteNumberOfRowsChanged"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void"]), new objj_method(sel_getUid("setDoubleAction:"), function $CPTableView__setDoubleAction_(self, _cmd, anAction) +{ with(self) +{ + _doubleAction = anAction; +} +},["void","SEL"]), new objj_method(sel_getUid("doubleAction"), function $CPTableView__doubleAction(self, _cmd) +{ with(self) +{ + return _doubleAction; +} +},["SEL"]), new objj_method(sel_getUid("clickedRow"), function $CPTableView__clickedRow(self, _cmd) +{ with(self) +{ + return _clickedRow; +} +},["CPInteger"]), new objj_method(sel_getUid("setAllowsColumnReordering:"), function $CPTableView__setAllowsColumnReordering_(self, _cmd, shouldAllowColumnReordering) +{ with(self) +{ + _allowsColumnReordering = !!shouldAllowColumnReordering; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsColumnReordering"), function $CPTableView__allowsColumnReordering(self, _cmd) +{ with(self) +{ + return _allowsColumnReordering; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsColumnResizing:"), function $CPTableView__setAllowsColumnResizing_(self, _cmd, shouldAllowColumnResizing) +{ with(self) +{ + _allowsColumnResizing = !!shouldAllowColumnResizing; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsColumnResizing"), function $CPTableView__allowsColumnResizing(self, _cmd) +{ with(self) +{ + return _allowsColumnResizing; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsMultipleSelection:"), function $CPTableView__setAllowsMultipleSelection_(self, _cmd, shouldAllowMultipleSelection) +{ with(self) +{ + _allowsMultipleSelection = !!shouldAllowMultipleSelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsMultipleSelection"), function $CPTableView__allowsMultipleSelection(self, _cmd) +{ with(self) +{ + return _allowsMultipleSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsEmptySelection:"), function $CPTableView__setAllowsEmptySelection_(self, _cmd, shouldAllowEmptySelection) +{ with(self) +{ + _allowsEmptySelection = !!shouldAllowEmptySelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsEmptySelection"), function $CPTableView__allowsEmptySelection(self, _cmd) +{ with(self) +{ + return _allowsEmptySelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsColumnSelection:"), function $CPTableView__setAllowsColumnSelection_(self, _cmd, shouldAllowColumnSelection) +{ with(self) +{ + _allowsColumnSelection = !!shouldAllowColumnSelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsColumnSelection"), function $CPTableView__allowsColumnSelection(self, _cmd) +{ with(self) +{ + return _allowsColumnSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setIntercellSpacing:"), function $CPTableView__setIntercellSpacing_(self, _cmd, aSize) +{ with(self) +{ + if ((_intercellSpacing.width == aSize.width && _intercellSpacing.height == aSize.height)) + return; + _intercellSpacing = { width:aSize.width, height:aSize.height }; + _dirtyTableColumnRangeIndex = 0; + objj_msgSend(self, "_recalculateTableColumnRanges"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(_headerView, "setNeedsDisplay:", YES); + objj_msgSend(_headerView, "setNeedsLayout"); +} +},["void","CGSize"]), new objj_method(sel_getUid("setThemeState:"), function $CPTableView__setThemeState_(self, _cmd, astae) +{ with(self) +{ +} +},["void","int"]), new objj_method(sel_getUid("intercellSpacing"), function $CPTableView__intercellSpacing(self, _cmd) +{ with(self) +{ + return { width:_intercellSpacing.width, height:_intercellSpacing.height }; +} +},["CGSize"]), new objj_method(sel_getUid("setRowHeight:"), function $CPTableView__setRowHeight_(self, _cmd, aRowHeight) +{ with(self) +{ + aRowHeight = +aRowHeight; + if (_rowHeight === aRowHeight) + return; + _rowHeight = MAX(0.0, aRowHeight); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","unsigned"]), new objj_method(sel_getUid("rowHeight"), function $CPTableView__rowHeight(self, _cmd) +{ with(self) +{ + return _rowHeight; +} +},["unsigned"]), new objj_method(sel_getUid("setUsesAlternatingRowBackgroundColors:"), function $CPTableView__setUsesAlternatingRowBackgroundColors_(self, _cmd, shouldUseAlternatingRowBackgroundColors) +{ with(self) +{ + _usesAlternatingRowBackgroundColors = shouldUseAlternatingRowBackgroundColors; +} +},["void","BOOL"]), new objj_method(sel_getUid("usesAlternatingRowBackgroundColors"), function $CPTableView__usesAlternatingRowBackgroundColors(self, _cmd) +{ with(self) +{ + return _usesAlternatingRowBackgroundColors; +} +},["BOOL"]), new objj_method(sel_getUid("setAlternatingRowBackgroundColors:"), function $CPTableView__setAlternatingRowBackgroundColors_(self, _cmd, alternatingRowBackgroundColors) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", alternatingRowBackgroundColors, "alternating-row-colors"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPArray"]), new objj_method(sel_getUid("alternatingRowBackgroundColors"), function $CPTableView__alternatingRowBackgroundColors(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "alternating-row-colors"); +} +},["CPArray"]), new objj_method(sel_getUid("selectionHighlightStyle"), function $CPTableView__selectionHighlightStyle(self, _cmd) +{ with(self) +{ + return _selectionHighlightStyle; +} +},["unsigned"]), new objj_method(sel_getUid("setSelectionHighlightStyle:"), function $CPTableView__setSelectionHighlightStyle_(self, _cmd, aSelectionHighlightStyle) +{ with(self) +{ + if (aSelectionHighlightStyle == CPTableViewSelectionHighlightStyleSourceList && !CPFeatureIsCompatible(CPHTMLCanvasFeature)) + return; + _selectionHighlightStyle = aSelectionHighlightStyle; + objj_msgSend(self, "setNeedsDisplay:", YES); + if (aSelectionHighlightStyle === CPTableViewSelectionHighlightStyleSourceList) + _destinationDragStyle = CPTableViewDraggingDestinationFeedbackStyleSourceList; + else + _destinationDragStyle = CPTableViewDraggingDestinationFeedbackStyleRegular; +} +},["void","unsigned"]), new objj_method(sel_getUid("setSelectionHighlightColor:"), function $CPTableView__setSelectionHighlightColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", aColor, "selection-color"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("selectionHighlightColor"), function $CPTableView__selectionHighlightColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "selection-color"); +} +},["CPColor"]), new objj_method(sel_getUid("setSelectionGradientColors:"), function $CPTableView__setSelectionGradientColors_(self, _cmd, aDictionary) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", aDictionary, "sourcelist-selection-color"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPDictionary"]), new objj_method(sel_getUid("selectionGradientColors"), function $CPTableView__selectionGradientColors(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "sourcelist-selection-color"); +} +},["CPDictionary"]), new objj_method(sel_getUid("setGridColor:"), function $CPTableView__setGridColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", aColor, "grid-color"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("gridColor"), function $CPTableView__gridColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "grid-color");; +} +},["CPColor"]), new objj_method(sel_getUid("setGridStyleMask:"), function $CPTableView__setGridStyleMask_(self, _cmd, aGrideStyleMask) +{ with(self) +{ + if (_gridStyleMask === aGrideStyleMask) + return; + _gridStyleMask = aGrideStyleMask; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","unsigned"]), new objj_method(sel_getUid("gridStyleMask"), function $CPTableView__gridStyleMask(self, _cmd) +{ with(self) +{ + return _gridStyleMask; +} +},["unsigned"]), new objj_method(sel_getUid("addTableColumn:"), function $CPTableView__addTableColumn_(self, _cmd, aTableColumn) +{ with(self) +{ + objj_msgSend(_tableColumns, "addObject:", aTableColumn); + objj_msgSend(aTableColumn, "setTableView:", self); + if (_dirtyTableColumnRangeIndex < 0) + _dirtyTableColumnRangeIndex = (_tableColumns.length) - 1; + else + _dirtyTableColumnRangeIndex = MIN((_tableColumns.length) - 1, _dirtyTableColumnRangeIndex); + objj_msgSend(self, "tile"); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("removeTableColumn:"), function $CPTableView__removeTableColumn_(self, _cmd, aTableColumn) +{ with(self) +{ + if (objj_msgSend(aTableColumn, "tableView") !== self) + return; + var index = objj_msgSend(_tableColumns, "indexOfObjectIdenticalTo:", aTableColumn); + if (index === CPNotFound) + return; + objj_msgSend(_differedColumnDataToRemove, "addObject:", {"column":aTableColumn, "shouldBeHidden": objj_msgSend(aTableColumn, "isHidden")}); + objj_msgSend(aTableColumn, "setHidden:", YES); + objj_msgSend(aTableColumn, "setTableView:", nil); + var tableColumnUID = objj_msgSend(aTableColumn, "UID"); + if (_objectValues[tableColumnUID]) + _objectValues[tableColumnUID] = nil; + if (_dirtyTableColumnRangeIndex < 0) + _dirtyTableColumnRangeIndex = index; + else + _dirtyTableColumnRangeIndex = MIN(index, _dirtyTableColumnRangeIndex); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("_setDraggedColumn:"), function $CPTableView___setDraggedColumn_(self, _cmd, aColumn) +{ with(self) +{ + if (_draggedColumn === aColumn) + return; + _draggedColumn = aColumn; + objj_msgSend(self, "reloadDataForRowIndexes:columnIndexes:", _exposedRows, objj_msgSend(CPIndexSet, "indexSetWithIndex:", objj_msgSend(_tableColumns, "indexOfObject:", aColumn))); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("moveColumn:toColumn:"), function $CPTableView__moveColumn_toColumn_(self, _cmd, fromIndex, toIndex) +{ with(self) +{ + fromIndex = +fromIndex; + toIndex = +toIndex; + if (fromIndex === toIndex) + return; + if (_dirtyTableColumnRangeIndex < 0) + _dirtyTableColumnRangeIndex = MIN(fromIndex, toIndex); + else + _dirtyTableColumnRangeIndex = MIN(fromIndex, toIndex, _dirtyTableColumnRangeIndex); + var tableColumn = _tableColumns[fromIndex]; + objj_msgSend(_tableColumns, "removeObjectAtIndex:", fromIndex); + objj_msgSend(_tableColumns, "insertObject:atIndex:", tableColumn, toIndex); + objj_msgSend(objj_msgSend(self, "headerView"), "setNeedsLayout"); + objj_msgSend(objj_msgSend(self, "headerView"), "setNeedsDisplay:", YES); + var rowIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "numberOfRows"))), + columnIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(fromIndex, toIndex)); + objj_msgSend(self, "reloadDataForRowIndexes:columnIndexes:", rowIndexes, columnIndexes); +} +},["void","unsigned","unsigned"]), new objj_method(sel_getUid("_tableColumnVisibilityDidChange:"), function $CPTableView___tableColumnVisibilityDidChange_(self, _cmd, aColumn) +{ with(self) +{ + var columnIndex = objj_msgSend(objj_msgSend(self, "tableColumns"), "indexOfObjectIdenticalTo:", aColumn); + if (_dirtyTableColumnRangeIndex < 0) + _dirtyTableColumnRangeIndex = columnIndex; + else + _dirtyTableColumnRangeIndex = MIN(columnIndex, _dirtyTableColumnRangeIndex); + objj_msgSend(objj_msgSend(self, "headerView"), "setNeedsLayout"); + objj_msgSend(objj_msgSend(self, "headerView"), "setNeedsDisplay:", YES); + var rowIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "numberOfRows"))); + objj_msgSend(self, "reloadDataForRowIndexes:columnIndexes:", rowIndexes, objj_msgSend(CPIndexSet, "indexSetWithIndex:", columnIndex)); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("tableColumns"), function $CPTableView__tableColumns(self, _cmd) +{ with(self) +{ + return _tableColumns; +} +},["CPArray"]), new objj_method(sel_getUid("columnWithIdentifier:"), function $CPTableView__columnWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + var index = 0, + count = (_tableColumns.length); + for (; index < count; ++index) + if (objj_msgSend(_tableColumns[index], "identifier") === anIdentifier) + return index; + return CPNotFound; +} +},["CPInteger","CPString"]), new objj_method(sel_getUid("tableColumnWithIdentifier:"), function $CPTableView__tableColumnWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + var index = objj_msgSend(self, "columnWithIdentifier:", anIdentifier); + if (index === CPNotFound) + return nil; + return _tableColumns[index]; +} +},["CPTableColumn","CPString"]), new objj_method(sel_getUid("selectColumnIndexes:byExtendingSelection:"), function $CPTableView__selectColumnIndexes_byExtendingSelection_(self, _cmd, columns, shouldExtendSelection) +{ with(self) +{ + if ((objj_msgSend(columns, "firstIndex") != CPNotFound && objj_msgSend(columns, "firstIndex") < 0) || objj_msgSend(columns, "lastIndex") >= objj_msgSend(self, "numberOfColumns")) + return; + if (objj_msgSend(_selectedRowIndexes, "count") > 0) + { + objj_msgSend(self, "_updateHighlightWithOldRows:newRows:", _selectedRowIndexes, objj_msgSend(CPIndexSet, "indexSet")); + _selectedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + } + var previousSelectedIndexes = objj_msgSend(_selectedColumnIndexes, "copy"); + if (shouldExtendSelection) + objj_msgSend(_selectedColumnIndexes, "addIndexes:", columns); + else + _selectedColumnIndexes = objj_msgSend(columns, "copy"); + objj_msgSend(self, "_updateHighlightWithOldColumns:newColumns:", previousSelectedIndexes, _selectedColumnIndexes); + objj_msgSend(self, "setNeedsDisplay:", YES); + if (_headerView) + objj_msgSend(_headerView, "setNeedsDisplay:", YES); + objj_msgSend(self, "_noteSelectionDidChange"); +} +},["void","CPIndexSet","BOOL"]), new objj_method(sel_getUid("_setSelectedRowIndexes:"), function $CPTableView___setSelectedRowIndexes_(self, _cmd, rows) +{ with(self) +{ + if (objj_msgSend(_selectedRowIndexes, "isEqualToIndexSet:", rows)) + return; + var previousSelectedIndexes = _selectedRowIndexes; + _lastSelectedRow = (objj_msgSend(rows, "count") > 0) ? objj_msgSend(rows, "lastIndex") : -1; + _selectedRowIndexes = objj_msgSend(rows, "copy"); + objj_msgSend(self, "_updateHighlightWithOldRows:newRows:", previousSelectedIndexes, _selectedRowIndexes); + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "selectionIndexes", self), "reverseSetValueFor:", "selectedRowIndexes"); + objj_msgSend(self, "_noteSelectionDidChange"); +} +},["void","CPIndexSet"]), new objj_method(sel_getUid("selectRowIndexes:byExtendingSelection:"), function $CPTableView__selectRowIndexes_byExtendingSelection_(self, _cmd, rows, shouldExtendSelection) +{ with(self) +{ + if (objj_msgSend(rows, "isEqualToIndexSet:", _selectedRowIndexes) || + ((objj_msgSend(rows, "firstIndex") != CPNotFound && objj_msgSend(rows, "firstIndex") < 0) || objj_msgSend(rows, "lastIndex") >= objj_msgSend(self, "numberOfRows"))) + return; + if (objj_msgSend(_selectedColumnIndexes, "count") > 0) + { + objj_msgSend(self, "_updateHighlightWithOldColumns:newColumns:", _selectedColumnIndexes, objj_msgSend(CPIndexSet, "indexSet")); + _selectedColumnIndexes = objj_msgSend(CPIndexSet, "indexSet"); + if (_headerView) + objj_msgSend(_headerView, "setNeedsDisplay:", YES); + } + var newSelectedIndexes; + if (shouldExtendSelection) + { + newSelectedIndexes = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(newSelectedIndexes, "addIndexes:", rows); + } + else + newSelectedIndexes = objj_msgSend(rows, "copy"); + objj_msgSend(self, "_setSelectedRowIndexes:", newSelectedIndexes); +} +},["void","CPIndexSet","BOOL"]), new objj_method(sel_getUid("_updateHighlightWithOldRows:newRows:"), function $CPTableView___updateHighlightWithOldRows_newRows_(self, _cmd, oldRows, newRows) +{ with(self) +{ + var firstExposedRow = objj_msgSend(_exposedRows, "firstIndex"), + exposedLength = objj_msgSend(_exposedRows, "lastIndex") - firstExposedRow + 1, + deselectRows = [], + selectRows = [], + deselectRowIndexes = objj_msgSend(oldRows, "copy"), + selectRowIndexes = objj_msgSend(newRows, "copy"); + objj_msgSend(deselectRowIndexes, "removeMatches:", selectRowIndexes); + objj_msgSend(deselectRowIndexes, "getIndexes:maxCount:inIndexRange:", deselectRows, -1, CPMakeRange(firstExposedRow, exposedLength)); + objj_msgSend(selectRowIndexes, "getIndexes:maxCount:inIndexRange:", selectRows, -1, CPMakeRange(firstExposedRow, exposedLength)); + for (var identifier in _dataViewsForTableColumns) + { + var dataViewsInTableColumn = _dataViewsForTableColumns[identifier], + count = deselectRows.length; + while (count--) + objj_msgSend(self, "_performSelection:forRow:context:", NO, deselectRows[count], dataViewsInTableColumn); + count = selectRows.length; + while (count--) + objj_msgSend(self, "_performSelection:forRow:context:", YES, selectRows[count], dataViewsInTableColumn); + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_performSelection:forRow:context:"), function $CPTableView___performSelection_forRow_context_(self, _cmd, select, rowIndex, context) +{ with(self) +{ + var view = context[rowIndex], + selector = select ? "setThemeState:" : "unsetThemeState:"; + objj_msgSend(view, "performSelector:withObject:", CPSelectorFromString(selector), CPThemeStateSelectedDataView); +} +},["void","BOOL","CPInteger","id"]), new objj_method(sel_getUid("_updateHighlightWithOldColumns:newColumns:"), function $CPTableView___updateHighlightWithOldColumns_newColumns_(self, _cmd, oldColumns, newColumns) +{ with(self) +{ + var firstExposedColumn = objj_msgSend(_exposedColumns, "firstIndex"), + exposedLength = objj_msgSend(_exposedColumns, "lastIndex") - firstExposedColumn +1, + deselectColumns = [], + selectColumns = [], + deselectColumnIndexes = objj_msgSend(oldColumns, "copy"), + selectColumnIndexes = objj_msgSend(newColumns, "copy"), + selectRows = []; + objj_msgSend(deselectColumnIndexes, "removeMatches:", selectColumnIndexes); + objj_msgSend(deselectColumnIndexes, "getIndexes:maxCount:inIndexRange:", deselectColumns, -1, CPMakeRange(firstExposedColumn, exposedLength)); + objj_msgSend(selectColumnIndexes, "getIndexes:maxCount:inIndexRange:", selectColumns, -1, CPMakeRange(firstExposedColumn, exposedLength)); + objj_msgSend(_exposedRows, "getIndexes:maxCount:inIndexRange:", selectRows, -1, nil); + var rowsCount = selectRows.length, + count = deselectColumns.length; + while (count--) + { + var columnIndex = deselectColumns[count], + identifier = objj_msgSend(_tableColumns[columnIndex], "UID"), + dataViewsInTableColumn = _dataViewsForTableColumns[identifier]; + for (var i = 0; i < rowsCount; i++) + { + var rowIndex = selectRows[i], + dataView = dataViewsInTableColumn[rowIndex]; + objj_msgSend(dataView, "unsetThemeState:", CPThemeStateSelectedDataView); + } + if (_headerView) + { + var headerView = objj_msgSend(_tableColumns[columnIndex], "headerView"); + objj_msgSend(headerView, "unsetThemeState:", CPThemeStateSelected); + } + } + count = selectColumns.length; + while (count--) + { + var columnIndex = selectColumns[count], + identifier = objj_msgSend(_tableColumns[columnIndex], "UID"), + dataViewsInTableColumn = _dataViewsForTableColumns[identifier]; + for (var i = 0; i < rowsCount; i++) + { + var rowIndex = selectRows[i], + dataView = dataViewsInTableColumn[rowIndex]; + objj_msgSend(dataView, "setThemeState:", CPThemeStateSelectedDataView); + } + if (_headerView) + { + var headerView = objj_msgSend(_tableColumns[columnIndex], "headerView"); + objj_msgSend(headerView, "setThemeState:", CPThemeStateSelected); + } + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("selectedColumn"), function $CPTableView__selectedColumn(self, _cmd) +{ with(self) +{ + objj_msgSend(_selectedColumnIndexes, "lastIndex"); +} +},["int"]), new objj_method(sel_getUid("selectedColumnIndexes"), function $CPTableView__selectedColumnIndexes(self, _cmd) +{ with(self) +{ + return _selectedColumnIndexes; +} +},["CPIndexSet"]), new objj_method(sel_getUid("selectedRow"), function $CPTableView__selectedRow(self, _cmd) +{ with(self) +{ + return _lastSelectedRow; +} +},["int"]), new objj_method(sel_getUid("selectedRowIndexes"), function $CPTableView__selectedRowIndexes(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectedRowIndexes, "copy"); +} +},["CPIndexSet"]), new objj_method(sel_getUid("deselectColumn:"), function $CPTableView__deselectColumn_(self, _cmd, aColumn) +{ with(self) +{ + var selectedColumnIndexes = objj_msgSend(_selectedColumnIndexes, "copy"); + objj_msgSend(selectedColumnIndexes, "removeIndex:", aColumn); + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", selectedColumnIndexes, NO); + objj_msgSend(self, "_noteSelectionDidChange"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("deselectRow:"), function $CPTableView__deselectRow_(self, _cmd, aRow) +{ with(self) +{ + var selectedRowIndexes = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(selectedRowIndexes, "removeIndex:", aRow); + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", selectedRowIndexes, NO); + objj_msgSend(self, "_noteSelectionDidChange"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("numberOfSelectedColumns"), function $CPTableView__numberOfSelectedColumns(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectedColumnIndexes, "count"); +} +},["CPInteger"]), new objj_method(sel_getUid("numberOfSelectedRows"), function $CPTableView__numberOfSelectedRows(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectedRowIndexes, "count"); +} +},["CPInteger"]), new objj_method(sel_getUid("isColumnSelected:"), function $CPTableView__isColumnSelected_(self, _cmd, aColumn) +{ with(self) +{ + return objj_msgSend(_selectedColumnIndexes, "containsIndex:", aColumn); +} +},["BOOL","CPInteger"]), new objj_method(sel_getUid("isRowSelected:"), function $CPTableView__isRowSelected_(self, _cmd, aRow) +{ with(self) +{ + return objj_msgSend(_selectedRowIndexes, "containsIndex:", aRow); +} +},["BOOL","CPInteger"]), new objj_method(sel_getUid("deselectAll"), function $CPTableView__deselectAll(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSet"), NO); + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSet"), NO); +} +},["void"]), new objj_method(sel_getUid("numberOfColumns"), function $CPTableView__numberOfColumns(self, _cmd) +{ with(self) +{ + return (_tableColumns.length); +} +},["int"]), new objj_method(sel_getUid("numberOfRows"), function $CPTableView__numberOfRows(self, _cmd) +{ with(self) +{ + if (_numberOfRows) + return _numberOfRows; + var contentBindingInfo = objj_msgSend(self, "infoForBinding:", "content"); + if (contentBindingInfo) + { + var destination = objj_msgSend(contentBindingInfo, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(contentBindingInfo, "objectForKey:", CPObservedKeyPathKey); + return objj_msgSend(objj_msgSend(destination, "valueForKeyPath:", keyPath), "count"); + } + else if (_dataSource) + return objj_msgSend(_dataSource, "numberOfRowsInTableView:", self); + return 0; +} +},["int"]), new objj_method(sel_getUid("editColumn:row:withEvent:select:"), function $CPTableView__editColumn_row_withEvent_select_(self, _cmd, columnIndex, rowIndex, theEvent, flag) +{ with(self) +{ + if (!objj_msgSend(self, "isRowSelected:", rowIndex)) + objj_msgSend(objj_msgSend(CPException, "exceptionWithName:reason:userInfo:", "Error", "Attempt to edit row="+rowIndex+" when not selected.", nil), "raise"); + _editingCellIndex = CGPointMake(columnIndex, rowIndex); + objj_msgSend(self, "reloadDataForRowIndexes:columnIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", rowIndex), objj_msgSend(CPIndexSet, "indexSetWithIndex:", columnIndex)); +} +},["void","CPInteger","CPInteger","CPEvent","BOOL"]), new objj_method(sel_getUid("editedColumn"), function $CPTableView__editedColumn(self, _cmd) +{ with(self) +{ + if (!_editingCellIndex) + return CPNotFound; + return _editingCellIndex.x; +} +},["CPInteger"]), new objj_method(sel_getUid("editedRow"), function $CPTableView__editedRow(self, _cmd) +{ with(self) +{ + if (!_editingCellIndex) + return CPNotFound; + return _editingCellIndex.y; +} +},["CPInteger"]), new objj_method(sel_getUid("cornerView"), function $CPTableView__cornerView(self, _cmd) +{ with(self) +{ + return _cornerView; +} +},["CPView"]), new objj_method(sel_getUid("setCornerView:"), function $CPTableView__setCornerView_(self, _cmd, aView) +{ with(self) +{ + if (_cornerView === aView) + return; + _cornerView = aView; + var scrollView = objj_msgSend(objj_msgSend(self, "superview"), "superview"); + if (objj_msgSend(scrollView, "isKindOfClass:", objj_msgSend(CPScrollView, "class")) && objj_msgSend(scrollView, "documentView") === self) + objj_msgSend(scrollView, "_updateCornerAndHeaderView"); +} +},["void","CPView"]), new objj_method(sel_getUid("headerView"), function $CPTableView__headerView(self, _cmd) +{ with(self) +{ + return _headerView; +} +},["CPView"]), new objj_method(sel_getUid("setHeaderView:"), function $CPTableView__setHeaderView_(self, _cmd, aHeaderView) +{ with(self) +{ + if (_headerView === aHeaderView) + return; + objj_msgSend(_headerView, "setTableView:", nil); + _headerView = aHeaderView; + if (_headerView) + { + objj_msgSend(_headerView, "setTableView:", self); + objj_msgSend(_headerView, "setFrameSize:", { width:(objj_msgSend(self, "frame").size.width), height:(objj_msgSend(_headerView, "frame").size.height) }); + } + var scrollView = objj_msgSend(objj_msgSend(self, "superview"), "superview"); + if (objj_msgSend(scrollView, "isKindOfClass:", objj_msgSend(CPScrollView, "class")) && objj_msgSend(scrollView, "documentView") === self) + objj_msgSend(scrollView, "_updateCornerAndHeaderView"); +} +},["void","CPView"]), new objj_method(sel_getUid("_recalculateTableColumnRanges"), function $CPTableView___recalculateTableColumnRanges(self, _cmd) +{ with(self) +{ + if (_dirtyTableColumnRangeIndex < 0) + return; + _numberOfHiddenColumns = 0; + var index = _dirtyTableColumnRangeIndex, + count = (_tableColumns.length), + x = index === 0 ? 0.0 : CPMaxRange(_tableColumnRanges[index - 1]); + for (; index < count; ++index) + { + var tableColumn = _tableColumns[index]; + if (objj_msgSend(tableColumn, "isHidden")) + { + _numberOfHiddenColumns += 1; + _tableColumnRanges[index] = CPMakeRange(x, 0.0); + } + else + { + var width = objj_msgSend(_tableColumns[index], "width") + _intercellSpacing.width; + _tableColumnRanges[index] = CPMakeRange(x, width); + x += width; + } + } + _tableColumnRanges.length = count; + _dirtyTableColumnRangeIndex = CPNotFound; +} +},["void"]), new objj_method(sel_getUid("rectOfColumn:"), function $CPTableView__rectOfColumn_(self, _cmd, aColumnIndex) +{ with(self) +{ + aColumnIndex = +aColumnIndex; + var column = objj_msgSend(objj_msgSend(self, "tableColumns"), "objectAtIndex:", aColumnIndex); + if (objj_msgSend(column, "isHidden") || aColumnIndex < 0 || aColumnIndex >= (_tableColumns.length)) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var range = _tableColumnRanges[aColumnIndex]; + return { origin: { x:range.location, y:0.0 }, size: { width:range.length, height:CGRectGetHeight(objj_msgSend(self, "bounds")) } }; +} +},["CGRect","CPInteger"]), new objj_method(sel_getUid("rectOfRow:"), function $CPTableView__rectOfRow_(self, _cmd, aRowIndex) +{ with(self) +{ + var height = _rowHeight + _intercellSpacing.height; + return { origin: { x:0.0, y:aRowIndex * height }, size: { width:(objj_msgSend(self, "bounds").size.width), height:height } }; +} +},["CGRect","CPInteger"]), new objj_method(sel_getUid("rowsInRect:"), function $CPTableView__rowsInRect_(self, _cmd, aRect) +{ with(self) +{ + if (_numberOfRows <= 0) + return CPMakeRange(0, 0); + var bounds = objj_msgSend(self, "bounds"); + if (!CGRectIntersectsRect(aRect, bounds)) + return CPMakeRange(0, 0); + var firstRow = objj_msgSend(self, "rowAtPoint:", aRect.origin); + if (firstRow < 0) + firstRow = 0; + var lastRow = objj_msgSend(self, "rowAtPoint:", { x:0.0, y:(aRect.origin.y + aRect.size.height) }); + if (lastRow < 0) + lastRow = _numberOfRows - 1; + return CPMakeRange(firstRow, lastRow - firstRow + 1); +} +},["CPRange","CGRect"]), new objj_method(sel_getUid("columnIndexesInRect:"), function $CPTableView__columnIndexesInRect_(self, _cmd, aRect) +{ with(self) +{ + var column = MAX(0, objj_msgSend(self, "columnAtPoint:", { x:aRect.origin.x, y:0.0 })), + lastColumn = objj_msgSend(self, "columnAtPoint:", { x:(aRect.origin.x + aRect.size.width), y:0.0 }); + if (lastColumn === CPNotFound) + lastColumn = (_tableColumns.length) - 1; + if (_numberOfHiddenColumns <= 0) + return objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(column, lastColumn - column + 1)); + var indexSet = objj_msgSend(CPIndexSet, "indexSet"); + for (; column <= lastColumn; ++column) + { + var tableColumn = _tableColumns[column]; + if (!objj_msgSend(tableColumn, "isHidden")) + objj_msgSend(indexSet, "addIndex:", column); + } + return indexSet; +} +},["CPIndexSet","CGRect"]), new objj_method(sel_getUid("columnAtPoint:"), function $CPTableView__columnAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + if (!(aPoint.x >= (bounds.origin.x) && aPoint.y >= (bounds.origin.y) && aPoint.x < (bounds.origin.x + bounds.size.width) && aPoint.y < (bounds.origin.y + bounds.size.height))) + return CPNotFound; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var x = aPoint.x, + low = 0, + high = _tableColumnRanges.length - 1; + while (low <= high) + { + var middle = FLOOR(low + (high - low) / 2), + range = _tableColumnRanges[middle]; + if (x < range.location) + high = middle - 1; + else if (x >= CPMaxRange(range)) + low = middle + 1; + else + { + var numberOfColumns = _tableColumnRanges.length; + while (middle < numberOfColumns && objj_msgSend(_tableColumns[middle], "isHidden")) + ++middle; + if (middle < numberOfColumns) + return middle; + return CPNotFound; + } + } + return CPNotFound; +} +},["CPInteger","CGPoint"]), new objj_method(sel_getUid("rowAtPoint:"), function $CPTableView__rowAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var y = aPoint.y, + row = FLOOR(y / (_rowHeight + _intercellSpacing.height)); + if (row >= _numberOfRows) + return -1; + return row; +} +},["CPInteger","CGPoint"]), new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"), function $CPTableView__frameOfDataViewAtColumn_row_(self, _cmd, aColumn, aRow) +{ with(self) +{ + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var tableColumnRange = _tableColumnRanges[aColumn], + rectOfRow = objj_msgSend(self, "rectOfRow:", aRow), + leftInset = FLOOR(_intercellSpacing.width / 2.0), + topInset = FLOOR(_intercellSpacing.height / 2.0); + return { origin: { x:tableColumnRange.location + leftInset, y:(rectOfRow.origin.y) + topInset }, size: { width:tableColumnRange.length - _intercellSpacing.width, height:(rectOfRow.size.height) - _intercellSpacing.height } }; +} +},["CGRect","CPInteger","CPInteger"]), new objj_method(sel_getUid("resizeWithOldSuperviewSize:"), function $CPTableView__resizeWithOldSuperviewSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "resizeWithOldSuperviewSize:", aSize); + if (_disableAutomaticResizing) + return; + var mask = _columnAutoResizingStyle; + if (mask === CPTableViewUniformColumnAutoresizingStyle) + objj_msgSend(self, "_resizeAllColumnUniformlyWithOldSize:", aSize); + else if (mask === CPTableViewLastColumnOnlyAutoresizingStyle) + objj_msgSend(self, "sizeLastColumnToFit"); + else if (mask === CPTableViewFirstColumnOnlyAutoresizingStyle) + objj_msgSend(self, "_autoResizeFirstColumn"); +} +},["void","CGSize"]), new objj_method(sel_getUid("_autoResizeFirstColumn"), function $CPTableView___autoResizeFirstColumn(self, _cmd) +{ with(self) +{ + var superview = objj_msgSend(self, "superview"); + if (!superview) + return; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var count = (_tableColumns.length), + columnToResize = nil, + totalWidth = 0, + i = 0; + for (; i < count; i++) + { + var column = _tableColumns[i]; + if (!objj_msgSend(column, "isHidden")) + { + if (!columnToResize) + columnToResize = column; + totalWidth += objj_msgSend(column, "width") + _intercellSpacing.width; + } + } + if (columnToResize) + { + var superviewSize = objj_msgSend(superview, "bounds").size, + newWidth = superviewSize.width - totalWidth; + newWidth += objj_msgSend(columnToResize, "width"); + newWidth = MAX(objj_msgSend(columnToResize, "minWidth"), newWidth); + newWidth = MIN(objj_msgSend(columnToResize, "maxWidth"), newWidth); + objj_msgSend(columnToResize, "setWidth:", FLOOR(newWidth)); + } + objj_msgSend(self, "setNeedsLayout"); +} +},["void"]), new objj_method(sel_getUid("_resizeAllColumnUniformlyWithOldSize:"), function $CPTableView___resizeAllColumnUniformlyWithOldSize_(self, _cmd, oldSize) +{ with(self) +{ + var superview = objj_msgSend(self, "superview"); + if (!superview) + return; + var superviewSize = objj_msgSend(superview, "bounds").size; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var count = (_tableColumns.length), + visColumns = objj_msgSend(objj_msgSend(CPArray, "alloc"), "init"), + buffer = 0.0; + for (var i = 0; i < count; i++) + { + var tableColumn = _tableColumns[i]; + if (!objj_msgSend(tableColumn, "isHidden") && (objj_msgSend(tableColumn, "resizingMask") & CPTableColumnAutoresizingMask)) + objj_msgSend(visColumns, "addObject:", i); + } + count = objj_msgSend(visColumns, "count"); + if (count > 0) + { + var maxXofColumns = CGRectGetMaxX(objj_msgSend(self, "rectOfColumn:", visColumns[count - 1])); + if (!_lastColumnShouldSnap && (maxXofColumns >= superviewSize.width && maxXofColumns <= oldSize.width || maxXofColumns <= superviewSize.width && maxXofColumns >= oldSize.width)) + { + _lastColumnShouldSnap = YES; + objj_msgSend(self, "_resizeAllColumnUniformlyWithOldSize:", CGSizeMake(maxXofColumns, 0)); + } + if (!_lastColumnShouldSnap) + return; + for (var i = 0; i < count; i++) + { + var column = visColumns[i], + columnToResize = _tableColumns[column], + currentBuffer = buffer / (count - i), + realNewWidth = (objj_msgSend(columnToResize, "width") / oldSize.width * objj_msgSend(superview, "bounds").size.width) + currentBuffer, + newWidth = realNewWidth; + newWidth = MAX(objj_msgSend(columnToResize, "minWidth"), newWidth); + newWidth = MIN(objj_msgSend(columnToResize, "maxWidth"), newWidth); + buffer -= currentBuffer; + buffer += realNewWidth - newWidth; + objj_msgSend(columnToResize, "setWidth:", newWidth); + } + if (buffer !== 0) + _lastColumnShouldSnap = NO; + } + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CGSize"]), new objj_method(sel_getUid("setColumnAutoresizingStyle:"), function $CPTableView__setColumnAutoresizingStyle_(self, _cmd, style) +{ with(self) +{ + _columnAutoResizingStyle = style; +} +},["void","unsigned"]), new objj_method(sel_getUid("columnAutoresizingStyle"), function $CPTableView__columnAutoresizingStyle(self, _cmd) +{ with(self) +{ + return _columnAutoResizingStyle; +} +},["unsigned"]), new objj_method(sel_getUid("sizeLastColumnToFit"), function $CPTableView__sizeLastColumnToFit(self, _cmd) +{ with(self) +{ + var superview = objj_msgSend(self, "superview"); + if (!superview) + return; + var superviewSize = objj_msgSend(superview, "bounds").size; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var count = (_tableColumns.length); + while (count-- && objj_msgSend(_tableColumns[count], "isHidden")) ; + if (count >= 0) + { + var columnToResize = _tableColumns[count], + newSize = MAX(0.0, superviewSize.width - CGRectGetMinX(objj_msgSend(self, "rectOfColumn:", count)) - _intercellSpacing.width); + if (newSize > 0) + { + newSize = MAX(objj_msgSend(columnToResize, "minWidth"), newSize); + newSize = MIN(objj_msgSend(columnToResize, "maxWidth"), newSize); + objj_msgSend(columnToResize, "setWidth:", newSize); + } + } + objj_msgSend(self, "setNeedsLayout"); +} +},["void"]), new objj_method(sel_getUid("noteNumberOfRowsChanged"), function $CPTableView__noteNumberOfRowsChanged(self, _cmd) +{ with(self) +{ + var oldNumberOfRows = _numberOfRows; + _numberOfRows = nil; + _numberOfRows = objj_msgSend(self, "numberOfRows"); + var hangingSelections = oldNumberOfRows - _numberOfRows; + if (hangingSelections > 0) + { + objj_msgSend(_selectedRowIndexes, "removeIndexesInRange:", CPMakeRange(_numberOfRows, hangingSelections)); + objj_msgSend(self, "_noteSelectionDidChange"); + } + objj_msgSend(self, "tile"); +} +},["void"]), new objj_method(sel_getUid("tile"), function $CPTableView__tile(self, _cmd) +{ with(self) +{ + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var width = _tableColumnRanges.length > 0 ? CPMaxRange(objj_msgSend(_tableColumnRanges, "lastObject")) : 0.0, + height = (_rowHeight + _intercellSpacing.height) * _numberOfRows, + superview = objj_msgSend(self, "superview"); + if (objj_msgSend(superview, "isKindOfClass:", objj_msgSend(CPClipView, "class"))) + { + var superviewSize = objj_msgSend(superview, "bounds").size; + width = MAX(superviewSize.width, width); + height = MAX(superviewSize.height, height); + } + objj_msgSend(self, "setFrameSize:", { width:width, height:height }); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void"]), new objj_method(sel_getUid("scrollRowToVisible:"), function $CPTableView__scrollRowToVisible_(self, _cmd, rowIndex) +{ with(self) +{ + objj_msgSend(self, "scrollRectToVisible:", objj_msgSend(self, "rectOfRow:", rowIndex)); +} +},["void","int"]), new objj_method(sel_getUid("scrollColumnToVisible:"), function $CPTableView__scrollColumnToVisible_(self, _cmd, columnIndex) +{ with(self) +{ + objj_msgSend(self, "scrollRectToVisible:", objj_msgSend(self, "rectOfColumn:", columnIndex)); +} +},["void","int"]), new objj_method(sel_getUid("setDelegate:"), function $CPTableView__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate === aDelegate) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_delegate) + { + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewColumnDidMove:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTableViewColumnDidMoveNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewColumnDidResize:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTableViewColumnDidResizeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewSelectionDidChange:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTableViewSelectionDidChangeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewSelectionIsChanging:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTableViewSelectionIsChangingNotification, self); + } + _delegate = aDelegate; + _implementedDelegateMethods = 0; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("selectionShouldChangeInTableView:"))) + _implementedDelegateMethods |= CPTableViewDelegate_selectionShouldChangeInTableView_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:dataViewForTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_dataViewForTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:didClickTableColumn:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_didClickTableColumn_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:didDragTableColumn:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_didDragTableColumn_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:heightOfRow:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_heightOfRow_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:isGroupRow:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_isGroupRow_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:mouseDownInHeaderOfTableColumn:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_mouseDownInHeaderOfTableColumn_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:nextTypeSelectMatchFromRow:toRow:forString:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_nextTypeSelectMatchFromRow_toRow_forString_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:selectionIndexesForProposedSelection:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_selectionIndexesForProposedSelection_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldEditTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldEditTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldSelectRow:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldSelectRow_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldSelectTableColumn:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldSelectTableColumn_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldShowViewExpansionForTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldShowViewExpansionForTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldTrackView:forTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldTrackView_forTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldTypeSelectForEvent:withCurrentSearchString:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldTypeSelectForEvent_withCurrentSearchString_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:toolTipForView:rect:tableColumn:row:mouseLocation:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_toolTipForView_rect_tableColumn_row_mouseLocation_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:typeSelectStringForTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_typeSelectStringForTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:willDisplayView:forTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_willDisplayView_forTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewColumnDidMove:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("tableViewColumnDidMove:"), CPTableViewColumnDidMoveNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewColumnDidResize:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("tableViewColumnDidResize:"), CPTableViewColumnDidResizeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewSelectionDidChange:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("tableViewSelectionDidChange:"), CPTableViewSelectionDidChangeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewSelectionIsChanging:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("tableViewSelectionIsChanging:"), CPTableViewSelectionIsChangingNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPTableView__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("_sendDelegateDidClickColumn:"), function $CPTableView___sendDelegateDidClickColumn_(self, _cmd, column) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_didClickTableColumn_) + objj_msgSend(_delegate, "tableView:didClickTableColumn:", self, _tableColumns[column]); +} +},["void","int"]), new objj_method(sel_getUid("_sendDelegateDidDragColumn:"), function $CPTableView___sendDelegateDidDragColumn_(self, _cmd, column) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_didDragTableColumn_) + objj_msgSend(_delegate, "tableView:didDragTableColumn:", self, _tableColumns[column]); +} +},["void","int"]), new objj_method(sel_getUid("_sendDelegateDidMouseDownInHeader:"), function $CPTableView___sendDelegateDidMouseDownInHeader_(self, _cmd, column) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_mouseDownInHeaderOfTableColumn_) + objj_msgSend(_delegate, "tableView:mouseDownInHeaderOfTableColumn:", self, _tableColumns[column]); +} +},["void","int"]), new objj_method(sel_getUid("_sendDataSourceSortDescriptorsDidChange:"), function $CPTableView___sendDataSourceSortDescriptorsDidChange_(self, _cmd, oldDescriptors) +{ with(self) +{ + if (_implementedDataSourceMethods & CPTableViewDataSource_tableView_sortDescriptorsDidChange_) + objj_msgSend(_dataSource, "tableView:sortDescriptorsDidChange:", self, oldDescriptors); +} +},["void","CPArray"]), new objj_method(sel_getUid("_didClickTableColumn:modifierFlags:"), function $CPTableView___didClickTableColumn_modifierFlags_(self, _cmd, clickedColumn, modifierFlags) +{ with(self) +{ + objj_msgSend(self, "_sendDelegateDidClickColumn:", clickedColumn); + if (_allowsColumnSelection) + { + objj_msgSend(self, "_noteSelectionIsChanging"); + if (modifierFlags & CPCommandKeyMask) + { + if (objj_msgSend(self, "isColumnSelected:", clickedColumn)) + objj_msgSend(self, "deselectColumn:", clickedColumn); + else if (objj_msgSend(self, "allowsMultipleSelection") == YES) + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", clickedColumn), YES); + return; + } + else if (modifierFlags & CPShiftKeyMask) + { + var startColumn = MIN(clickedColumn, objj_msgSend(_selectedColumnIndexes, "lastIndex")), + endColumn = MAX(clickedColumn, objj_msgSend(_selectedColumnIndexes, "firstIndex")); + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(startColumn, endColumn - startColumn + 1)), YES); + return; + } + else + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", clickedColumn), NO); + } + objj_msgSend(self, "_changeSortDescriptorsForClickOnColumn:", clickedColumn); +} +},["void","int","unsigned"]), new objj_method(sel_getUid("_changeSortDescriptorsForClickOnColumn:"), function $CPTableView___changeSortDescriptorsForClickOnColumn_(self, _cmd, column) +{ with(self) +{ + var tableColumn = objj_msgSend(_tableColumns, "objectAtIndex:", column), + newMainSortDescriptor = objj_msgSend(tableColumn, "sortDescriptorPrototype"); + if (!newMainSortDescriptor) + return; + var oldMainSortDescriptor = nil, + oldSortDescriptors = objj_msgSend(self, "sortDescriptors"), + newSortDescriptors = objj_msgSend(CPArray, "arrayWithArray:", oldSortDescriptors), + e = objj_msgSend(newSortDescriptors, "objectEnumerator"), + descriptor = nil, + outdatedDescriptors = objj_msgSend(CPArray, "array"); + if (objj_msgSend(_sortDescriptors, "count") > 0) + oldMainSortDescriptor = objj_msgSend(objj_msgSend(self, "sortDescriptors"), "objectAtIndex:", 0); + while ((descriptor = objj_msgSend(e, "nextObject")) != nil) + { + if (objj_msgSend(objj_msgSend(descriptor, "key"), "isEqual:", objj_msgSend(newMainSortDescriptor, "key"))) + objj_msgSend(outdatedDescriptors, "addObject:", descriptor); + } + if (objj_msgSend(objj_msgSend(newMainSortDescriptor, "key"), "isEqual:", objj_msgSend(oldMainSortDescriptor, "key"))) + newMainSortDescriptor = objj_msgSend(oldMainSortDescriptor, "reversedSortDescriptor"); + objj_msgSend(newSortDescriptors, "removeObjectsInArray:", outdatedDescriptors); + objj_msgSend(newSortDescriptors, "insertObject:atIndex:", newMainSortDescriptor, 0); + var image = objj_msgSend(newMainSortDescriptor, "ascending") ? objj_msgSend(self, "_tableHeaderSortImage") : objj_msgSend(self, "_tableHeaderReverseSortImage"); + objj_msgSend(self, "setIndicatorImage:inTableColumn:", nil, _currentHighlightedTableColumn); + objj_msgSend(self, "setIndicatorImage:inTableColumn:", image, tableColumn); + objj_msgSend(self, "setHighlightedTableColumn:", tableColumn); + objj_msgSend(self, "setSortDescriptors:", newSortDescriptors); +} +},["void","int"]), new objj_method(sel_getUid("setIndicatorImage:inTableColumn:"), function $CPTableView__setIndicatorImage_inTableColumn_(self, _cmd, anImage, aTableColumn) +{ with(self) +{ + if (aTableColumn) + { + var headerView = objj_msgSend(aTableColumn, "headerView"); + if (objj_msgSend(headerView, "respondsToSelector:", sel_getUid("_setIndicatorImage:"))) + objj_msgSend(headerView, "_setIndicatorImage:", anImage); + } +} +},["void","CPImage","CPTableColumn"]), new objj_method(sel_getUid("_tableHeaderSortImage"), function $CPTableView___tableHeaderSortImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "sort-image"); +} +},["CPImage"]), new objj_method(sel_getUid("_tableHeaderReverseSortImage"), function $CPTableView___tableHeaderReverseSortImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "sort-image-reversed"); +} +},["CPImage"]), new objj_method(sel_getUid("highlightedTableColumn"), function $CPTableView__highlightedTableColumn(self, _cmd) +{ with(self) +{ + return _currentHighlightedTableColumn; +} +},["CPTableColumn"]), new objj_method(sel_getUid("setHighlightedTableColumn:"), function $CPTableView__setHighlightedTableColumn_(self, _cmd, aTableColumn) +{ with(self) +{ + if (_currentHighlightedTableColumn == aTableColumn) + return; + if (_headerView) + { + if (_currentHighlightedTableColumn != nil) + objj_msgSend(objj_msgSend(_currentHighlightedTableColumn, "headerView"), "unsetThemeState:", CPThemeStateSelected); + if (aTableColumn != nil) + objj_msgSend(objj_msgSend(aTableColumn, "headerView"), "setThemeState:", CPThemeStateSelected); + } + _currentHighlightedTableColumn = aTableColumn; +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"), function $CPTableView__canDragRowsWithIndexes_atPoint_(self, _cmd, rowIndexes, mouseDownPoint) +{ with(self) +{ + return YES; +} +},["BOOL","CPIndexSet","CGPoint"]), new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"), function $CPTableView__dragImageForRowsWithIndexes_tableColumns_event_offset_(self, _cmd, dragRows, theTableColumns, dragEvent, dragImageOffset) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", "Frameworks/AppKit/Resources/GenericFile.png", CGSizeMake(32,32)); +} +},["CPImage","CPIndexSet","CPArray","CPEvent","CPPointPointer"]), new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"), function $CPTableView__dragViewForRowsWithIndexes_tableColumns_event_offset_(self, _cmd, theDraggedRows, theTableColumns, theDragEvent, dragViewOffset) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", bounds); + objj_msgSend(view, "setAlphaValue:", 0.7); + var columnIndex = objj_msgSend(theTableColumns, "count"); + while (columnIndex--) + { + var tableColumn = objj_msgSend(theTableColumns, "objectAtIndex:", columnIndex), + row = objj_msgSend(theDraggedRows, "firstIndex"); + while (row !== CPNotFound) + { + var dataView = objj_msgSend(self, "_newDataViewForRow:tableColumn:", row, tableColumn); + objj_msgSend(dataView, "setFrame:", objj_msgSend(self, "frameOfDataViewAtColumn:row:", columnIndex, row)); + objj_msgSend(dataView, "setObjectValue:", objj_msgSend(self, "_objectValueForTableColumn:row:", tableColumn, row)); + objj_msgSend(tableColumn, "prepareDataView:forRow:", dataView, row); + objj_msgSend(view, "addSubview:", dataView); + row = objj_msgSend(theDraggedRows, "indexGreaterThanIndex:", row); + } + } + var dragPoint = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(theDragEvent, "locationInWindow"), nil); + dragViewOffset.x = CGRectGetWidth(bounds) / 2 - dragPoint.x; + dragViewOffset.y = CGRectGetHeight(bounds) / 2 - dragPoint.y; + return view; +} +},["CPView","CPIndexSet","CPArray","CPEvent","CPPointPointer"]), new objj_method(sel_getUid("_dragViewForColumn:event:offset:"), function $CPTableView___dragViewForColumn_event_offset_(self, _cmd, theColumnIndex, theDragEvent, theDragViewOffset) +{ with(self) +{ + var dragView = objj_msgSend(objj_msgSend(_CPColumnDragView, "alloc"), "initWithLineColor:", objj_msgSend(self, "gridColor")), + tableColumn = objj_msgSend(objj_msgSend(self, "tableColumns"), "objectAtIndex:", theColumnIndex), + bounds = CPRectMake(0.0, 0.0, objj_msgSend(tableColumn, "width"), (objj_msgSend(self, "visibleRect").size.height) + 23.0), + columnRect = objj_msgSend(self, "rectOfColumn:", theColumnIndex), + headerView = objj_msgSend(tableColumn, "headerView"), + row = objj_msgSend(_exposedRows, "firstIndex"); + while (row !== CPNotFound) + { + var dataView = objj_msgSend(self, "_newDataViewForRow:tableColumn:", row, tableColumn), + dataViewFrame = objj_msgSend(self, "frameOfDataViewAtColumn:row:", theColumnIndex, row); + dataViewFrame.origin.x = 0.0; + dataViewFrame.origin.y = ( (dataViewFrame.origin.y) - (objj_msgSend(self, "visibleRect").origin.y) ) + 23.0; + objj_msgSend(dataView, "setFrame:", dataViewFrame); + objj_msgSend(dataView, "setObjectValue:", objj_msgSend(self, "_objectValueForTableColumn:row:", tableColumn, row)); + objj_msgSend(dragView, "addSubview:", dataView); + row = objj_msgSend(_exposedRows, "indexGreaterThanIndex:", row); + } + var headerFrame = objj_msgSend(headerView, "frame"); + headerFrame.origin = { x:0.0, y:0.0 }; + var columnHeaderView = objj_msgSend(objj_msgSend(_CPTableColumnHeaderView, "alloc"), "initWithFrame:", headerFrame); + objj_msgSend(columnHeaderView, "setStringValue:", objj_msgSend(headerView, "stringValue")); + objj_msgSend(columnHeaderView, "setThemeState:", objj_msgSend(headerView, "themeState")); + objj_msgSend(dragView, "addSubview:", columnHeaderView); + objj_msgSend(dragView, "setBackgroundColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(dragView, "setAlphaValue:", 0.7); + objj_msgSend(dragView, "setFrame:", bounds); + return dragView; +} +},["CPView","int","CPEvent","CPPointPointer"]), new objj_method(sel_getUid("setDraggingSourceOperationMask:forLocal:"), function $CPTableView__setDraggingSourceOperationMask_forLocal_(self, _cmd, mask, isLocal) +{ with(self) +{ + _dragOperationDefaultMask = mask; +} +},["void","CPDragOperation","BOOL"]), new objj_method(sel_getUid("setDropRow:dropOperation:"), function $CPTableView__setDropRow_dropOperation_(self, _cmd, row, operation) +{ with(self) +{ + if (row > objj_msgSend(self, "numberOfRows") && operation === CPTableViewDropOn) + { + var numberOfRows = objj_msgSend(self, "numberOfRows") + 1, + reason = "Attempt to set dropRow=" + row + + " dropOperation=CPTableViewDropOn when [0 - " + numberOfRows + "] is valid range of rows."; + objj_msgSend(objj_msgSend(CPException, "exceptionWithName:reason:userInfo:", "Error", reason, nil), "raise"); + } + _retargetedDropRow = row; + _retargetedDropOperation = operation; +} +},["void","CPInteger","CPTableViewDropOperation"]), new objj_method(sel_getUid("setDraggingDestinationFeedbackStyle:"), function $CPTableView__setDraggingDestinationFeedbackStyle_(self, _cmd, aStyle) +{ with(self) +{ + _destinationDragStyle = aStyle; +} +},["void","CPTableViewDraggingDestinationFeedbackStyle"]), new objj_method(sel_getUid("draggingDestinationFeedbackStyle"), function $CPTableView__draggingDestinationFeedbackStyle(self, _cmd) +{ with(self) +{ + return _destinationDragStyle; +} +},["CPTableViewDraggingDestinationFeedbackStyle"]), new objj_method(sel_getUid("setVerticalMotionCanBeginDrag:"), function $CPTableView__setVerticalMotionCanBeginDrag_(self, _cmd, aFlag) +{ with(self) +{ + _verticalMotionCanDrag = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("verticalMotionCanBeginDrag"), function $CPTableView__verticalMotionCanBeginDrag(self, _cmd) +{ with(self) +{ + return _verticalMotionCanDrag; +} +},["BOOL"]), new objj_method(sel_getUid("setSortDescriptors:"), function $CPTableView__setSortDescriptors_(self, _cmd, sortDescriptors) +{ with(self) +{ + var oldSortDescriptors = objj_msgSend(self, "sortDescriptors"), + newSortDescriptors = nil; + if (sortDescriptors == nil) + newSortDescriptors = objj_msgSend(CPArray, "array"); + else + newSortDescriptors = objj_msgSend(CPArray, "arrayWithArray:", sortDescriptors); + if (objj_msgSend(newSortDescriptors, "isEqual:", oldSortDescriptors)) + return; + _sortDescriptors = newSortDescriptors; + objj_msgSend(self, "_sendDataSourceSortDescriptorsDidChange:", oldSortDescriptors); +} +},["void","CPArray"]), new objj_method(sel_getUid("sortDescriptors"), function $CPTableView__sortDescriptors(self, _cmd) +{ with(self) +{ + return _sortDescriptors; +} +},["CPArray"]), new objj_method(sel_getUid("_objectValueForTableColumn:row:"), function $CPTableView___objectValueForTableColumn_row_(self, _cmd, aTableColumn, aRowIndex) +{ with(self) +{ + var tableColumnUID = objj_msgSend(aTableColumn, "UID"), + tableColumnObjectValues = _objectValues[tableColumnUID]; + if (!tableColumnObjectValues) + { + tableColumnObjectValues = []; + _objectValues[tableColumnUID] = tableColumnObjectValues; + } + var objectValue = tableColumnObjectValues[aRowIndex]; + if (objectValue === undefined && (_implementedDataSourceMethods & CPTableViewDataSource_tableView_objectValueForTableColumn_row_)) + { + objectValue = objj_msgSend(_dataSource, "tableView:objectValueForTableColumn:row:", self, aTableColumn, aRowIndex); + tableColumnObjectValues[aRowIndex] = objectValue; + } + return objectValue; +} +},["id","CPTableColumn","CPInteger"]), new objj_method(sel_getUid("load"), function $CPTableView__load(self, _cmd) +{ with(self) +{ + if (_reloadAllRows) + { + objj_msgSend(self, "_unloadDataViewsInRows:columns:", _exposedRows, _exposedColumns); + _exposedRows = objj_msgSend(CPIndexSet, "indexSet"); + _exposedColumns = objj_msgSend(CPIndexSet, "indexSet"); + _reloadAllRows = NO; + } + var exposedRect = objj_msgSend(self, "visibleRect"), + exposedRows = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", objj_msgSend(self, "rowsInRect:", exposedRect)), + exposedColumns = objj_msgSend(self, "columnIndexesInRect:", exposedRect), + obscuredRows = objj_msgSend(_exposedRows, "copy"), + obscuredColumns = objj_msgSend(_exposedColumns, "copy"); + objj_msgSend(obscuredRows, "removeIndexes:", exposedRows); + objj_msgSend(obscuredColumns, "removeIndexes:", exposedColumns); + var newlyExposedRows = objj_msgSend(exposedRows, "copy"), + newlyExposedColumns = objj_msgSend(exposedColumns, "copy"); + objj_msgSend(newlyExposedRows, "removeIndexes:", _exposedRows); + objj_msgSend(newlyExposedColumns, "removeIndexes:", _exposedColumns); + var previouslyExposedRows = objj_msgSend(exposedRows, "copy"), + previouslyExposedColumns = objj_msgSend(exposedColumns, "copy"); + objj_msgSend(previouslyExposedRows, "removeIndexes:", newlyExposedRows); + objj_msgSend(previouslyExposedColumns, "removeIndexes:", newlyExposedColumns); + objj_msgSend(self, "_unloadDataViewsInRows:columns:", previouslyExposedRows, obscuredColumns); + objj_msgSend(self, "_unloadDataViewsInRows:columns:", obscuredRows, previouslyExposedColumns); + objj_msgSend(self, "_unloadDataViewsInRows:columns:", obscuredRows, obscuredColumns); + objj_msgSend(self, "_unloadDataViewsInRows:columns:", newlyExposedRows, newlyExposedColumns); + objj_msgSend(self, "_loadDataViewsInRows:columns:", previouslyExposedRows, newlyExposedColumns); + objj_msgSend(self, "_loadDataViewsInRows:columns:", newlyExposedRows, previouslyExposedColumns); + objj_msgSend(self, "_loadDataViewsInRows:columns:", newlyExposedRows, newlyExposedColumns); + _exposedRows = exposedRows; + _exposedColumns = exposedColumns; + objj_msgSend(_tableDrawView, "setFrame:", exposedRect); + objj_msgSend(self, "setNeedsDisplay:", YES); + for (var identifier in _cachedDataViews) + { + var dataViews = _cachedDataViews[identifier], + count = dataViews.length; + while (count--) + objj_msgSend(dataViews[count], "removeFromSuperview"); + } + if (objj_msgSend(_differedColumnDataToRemove, "count")) + { + for (var i = 0; i < _differedColumnDataToRemove.length; i++) + { + var data = _differedColumnDataToRemove[i], + column = data.column; + objj_msgSend(column, "setHidden:", data.shouldBeHidden); + objj_msgSend(_tableColumns, "removeObject:", column); + } + objj_msgSend(_differedColumnDataToRemove, "removeAllObjects"); + } +} +},["void"]), new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"), function $CPTableView___unloadDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + if (!objj_msgSend(rows, "count") || !objj_msgSend(columns, "count")) + return; + var rowArray = [], + columnArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + objj_msgSend(columns, "getIndexes:maxCount:inIndexRange:", columnArray, -1, nil); + var columnIndex = 0, + columnsCount = columnArray.length; + for (; columnIndex < columnsCount; ++columnIndex) + { + var column = columnArray[columnIndex], + tableColumn = _tableColumns[column], + tableColumnUID = objj_msgSend(tableColumn, "UID"), + rowIndex = 0, + rowsCount = rowArray.length; + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + dataViews = _dataViewsForTableColumns[tableColumnUID]; + if (!dataViews || row >= dataViews.length) + continue; + var dataView = objj_msgSend(dataViews, "objectAtIndex:", row); + objj_msgSend(dataViews, "replaceObjectAtIndex:withObject:", row, nil); + objj_msgSend(self, "_enqueueReusableDataView:", dataView); + } + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_loadDataViewsInRows:columns:"), function $CPTableView___loadDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + if (!objj_msgSend(rows, "count") || !objj_msgSend(columns, "count")) + return; + var rowArray = [], + rowRects = [], + columnArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + objj_msgSend(columns, "getIndexes:maxCount:inIndexRange:", columnArray, -1, nil); + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var columnIndex = 0, + columnsCount = columnArray.length; + for (; columnIndex < columnsCount; ++columnIndex) + { + var column = columnArray[columnIndex], + tableColumn = _tableColumns[column]; + if (objj_msgSend(tableColumn, "isHidden") || tableColumn === _draggedColumn) + continue; + var tableColumnUID = objj_msgSend(tableColumn, "UID"); + if (!_dataViewsForTableColumns[tableColumnUID]) + _dataViewsForTableColumns[tableColumnUID] = []; + var rowIndex = 0, + rowsCount = rowArray.length, + isColumnSelected = objj_msgSend(_selectedColumnIndexes, "containsIndex:", column); + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + dataView = objj_msgSend(self, "_newDataViewForRow:tableColumn:", row, tableColumn), + isButton = objj_msgSend(dataView, "isKindOfClass:", objj_msgSend(CPButton, "class")), + isTextField = objj_msgSend(dataView, "isKindOfClass:", objj_msgSend(CPTextField, "class")); + objj_msgSend(dataView, "setFrame:", objj_msgSend(self, "frameOfDataViewAtColumn:row:", column, row)); + objj_msgSend(dataView, "setObjectValue:", objj_msgSend(self, "_objectValueForTableColumn:row:", tableColumn, row)); + objj_msgSend(tableColumn, "prepareDataView:forRow:", dataView, row); + if (isColumnSelected || objj_msgSend(self, "isRowSelected:", row)) + objj_msgSend(dataView, "setThemeState:", CPThemeStateSelectedDataView); + else + objj_msgSend(dataView, "unsetThemeState:", CPThemeStateSelectedDataView); + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_willDisplayView_forTableColumn_row_) + objj_msgSend(_delegate, "tableView:willDisplayView:forTableColumn:row:", self, dataView, tableColumn, row); + if (objj_msgSend(dataView, "superview") !== self) + objj_msgSend(self, "addSubview:", dataView); + _dataViewsForTableColumns[tableColumnUID][row] = dataView; + if (isButton || (_editingCellIndex && _editingCellIndex.x === column && _editingCellIndex.y === row)) + { + if (!isButton) + _editingCellIndex = undefined; + if (isTextField) + { + objj_msgSend(dataView, "setEditable:", YES); + objj_msgSend(dataView, "setSendsActionOnEndEditing:", YES); + objj_msgSend(dataView, "setSelectable:", YES); + objj_msgSend(dataView, "selectText:", nil); + } + objj_msgSend(dataView, "setTarget:", self); + objj_msgSend(dataView, "setAction:", sel_getUid("_commitDataViewObjectValue:")); + dataView.tableViewEditedColumnObj = tableColumn; + dataView.tableViewEditedRowIndex = row; + } + else if (isTextField) + { + objj_msgSend(dataView, "setEditable:", NO); + objj_msgSend(dataView, "setSelectable:", NO); + } + } + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_layoutDataViewsInRows:columns:"), function $CPTableView___layoutDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + var rowArray = [], + columnArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + objj_msgSend(columns, "getIndexes:maxCount:inIndexRange:", columnArray, -1, nil); + var columnIndex = 0, + columnsCount = columnArray.length; + for (; columnIndex < columnsCount; ++columnIndex) + { + var column = columnArray[columnIndex], + tableColumn = _tableColumns[column], + tableColumnUID = objj_msgSend(tableColumn, "UID"), + dataViewsForTableColumn = _dataViewsForTableColumns[tableColumnUID], + columnRange = _tableColumnRanges[column], + rowIndex = 0, + rowsCount = rowArray.length; + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + dataView = dataViewsForTableColumn[row]; + objj_msgSend(dataView, "setFrame:", objj_msgSend(self, "frameOfDataViewAtColumn:row:", column, row)); + } + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_commitDataViewObjectValue:"), function $CPTableView___commitDataViewObjectValue_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(_dataSource, "tableView:setObjectValue:forTableColumn:row:", self, objj_msgSend(sender, "objectValue"), sender.tableViewEditedColumnObj, sender.tableViewEditedRowIndex); + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("setEditable:"))) + objj_msgSend(sender, "setEditable:", NO); +} +},["void","id"]), new objj_method(sel_getUid("_newDataViewForRow:tableColumn:"), function $CPTableView___newDataViewForRow_tableColumn_(self, _cmd, aRow, aTableColumn) +{ with(self) +{ + if ((_implementedDelegateMethods & CPTableViewDelegate_tableView_dataViewForTableColumn_row_)) + { + var dataView = objj_msgSend(_delegate, "tableView:dataViewForTableColumn:row:", self, aTableColumn, aRow); + objj_msgSend(aTableColumn, "setDataView:", dataView); + } + return objj_msgSend(aTableColumn, "_newDataViewForRow:", aRow); +} +},["CPView","CPInteger","CPTableColumn"]), new objj_method(sel_getUid("_enqueueReusableDataView:"), function $CPTableView___enqueueReusableDataView_(self, _cmd, aDataView) +{ with(self) +{ + if (!aDataView) + return; + var identifier = aDataView.identifier; + if (!_cachedDataViews[identifier]) + _cachedDataViews[identifier] = [aDataView]; + else + _cachedDataViews[identifier].push(aDataView); +} +},["void","CPView"]), new objj_method(sel_getUid("setFrameSize:"), function $CPTableView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "setFrameSize:", aSize); + if (_headerView) + objj_msgSend(_headerView, "setFrameSize:", { width:(objj_msgSend(self, "frame").size.width), height:(objj_msgSend(_headerView, "frame").size.height) }); +} +},["void","CGSize"]), new objj_method(sel_getUid("setNeedsDisplay:"), function $CPTableView__setNeedsDisplay_(self, _cmd, aFlag) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "setNeedsDisplay:", aFlag); + objj_msgSend(_tableDrawView, "setNeedsDisplay:", aFlag); +} +},["void","BOOL"]), new objj_method(sel_getUid("_drawRect:"), function $CPTableView___drawRect_(self, _cmd, aRect) +{ with(self) +{ + var exposedRect = objj_msgSend(self, "visibleRect"); + objj_msgSend(self, "drawBackgroundInClipRect:", exposedRect); + objj_msgSend(self, "drawGridInClipRect:", exposedRect); + objj_msgSend(self, "highlightSelectionInClipRect:", exposedRect); + if (_implementsCustomDrawRow) + objj_msgSend(self, "_drawRows:clipRect:", _exposedRows, exposedRect); +} +},["void","CGRect"]), new objj_method(sel_getUid("drawBackgroundInClipRect:"), function $CPTableView__drawBackgroundInClipRect_(self, _cmd, aRect) +{ with(self) +{ + if (!_usesAlternatingRowBackgroundColors) + return; + var rowColors = objj_msgSend(self, "alternatingRowBackgroundColors"), + colorCount = objj_msgSend(rowColors, "count"); + if (colorCount === 0) + return; + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + if (colorCount === 1) + { + CGContextSetFillColor(context, rowColors[0]); + CGContextFillRect(context, aRect); + return; + } + var exposedRows = objj_msgSend(self, "rowsInRect:", aRect), + firstRow = exposedRows.location, + lastRow = CPMaxRange(exposedRows) - 1, + colorIndex = MIN(exposedRows.length, colorCount), + heightFilled = 0.0; + while (colorIndex--) + { + var row = firstRow - firstRow % colorCount + colorIndex, + fillRect = nil; + CGContextBeginPath(context); + for (; row <= lastRow; row += colorCount) + if (row >= firstRow) + CGContextAddRect(context, CGRectIntersection(aRect, fillRect = objj_msgSend(self, "rectOfRow:", row))); + if (row - colorCount === lastRow) + heightFilled = (fillRect.origin.y + fillRect.size.height); + CGContextClosePath(context); + CGContextSetFillColor(context, rowColors[colorIndex]); + CGContextFillPath(context); + } + var totalHeight = (aRect.origin.y + aRect.size.height); + if (heightFilled >= totalHeight || _rowHeight <= 0.0) + return; + var rowHeight = _rowHeight + _intercellSpacing.height, + fillRect = { origin: { x:(aRect.origin.x), y:(aRect.origin.y) + heightFilled }, size: { width:(aRect.size.width), height:rowHeight } }; + for (row = lastRow + 1; heightFilled < totalHeight; ++row) + { + CGContextSetFillColor(context, rowColors[row % colorCount]); + CGContextFillRect(context, fillRect); + heightFilled += rowHeight; + fillRect.origin.y += rowHeight; + } +} +},["void","CGRect"]), new objj_method(sel_getUid("drawGridInClipRect:"), function $CPTableView__drawGridInClipRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + gridStyleMask = objj_msgSend(self, "gridStyleMask"); + if (!(gridStyleMask & (CPTableViewSolidHorizontalGridLineMask | CPTableViewSolidVerticalGridLineMask))) + return; + CGContextBeginPath(context); + if (gridStyleMask & CPTableViewSolidHorizontalGridLineMask) + { + var exposedRows = objj_msgSend(self, "rowsInRect:", aRect), + row = exposedRows.location, + lastRow = CPMaxRange(exposedRows) - 1, + rowY = -0.5, + minX = (aRect.origin.x), + maxX = (aRect.origin.x + aRect.size.width); + for (; row <= lastRow; ++row) + { + var rowRect = objj_msgSend(self, "rectOfRow:", row), + rowY = (rowRect.origin.y + rowRect.size.height) - 0.5; + CGContextMoveToPoint(context, minX, rowY); + CGContextAddLineToPoint(context, maxX, rowY); + } + if (_rowHeight > 0.0) + { + var rowHeight = _rowHeight + _intercellSpacing.height, + totalHeight = (aRect.origin.y + aRect.size.height); + while (rowY < totalHeight) + { + rowY += rowHeight; + CGContextMoveToPoint(context, minX, rowY); + CGContextAddLineToPoint(context, maxX, rowY); + } + } + } + if (gridStyleMask & CPTableViewSolidVerticalGridLineMask) + { + var exposedColumnIndexes = objj_msgSend(self, "columnIndexesInRect:", aRect), + columnsArray = []; + objj_msgSend(exposedColumnIndexes, "getIndexes:maxCount:inIndexRange:", columnsArray, -1, nil); + var columnArrayIndex = 0, + columnArrayCount = columnsArray.length, + minY = (aRect.origin.y), + maxY = (aRect.origin.y + aRect.size.height); + for (; columnArrayIndex < columnArrayCount; ++columnArrayIndex) + { + var columnRect = objj_msgSend(self, "rectOfColumn:", columnsArray[columnArrayIndex]), + columnX = (columnRect.origin.x + columnRect.size.width) + 0.5; + CGContextMoveToPoint(context, columnX, minY); + CGContextAddLineToPoint(context, columnX, maxY); + } + } + CGContextClosePath(context); + CGContextSetStrokeColor(context, objj_msgSend(self, "gridColor")); + CGContextStrokePath(context); +} +},["void","CGRect"]), new objj_method(sel_getUid("highlightSelectionInClipRect:"), function $CPTableView__highlightSelectionInClipRect_(self, _cmd, aRect) +{ with(self) +{ + if (_selectionHighlightStyle === CPTableViewSelectionHighlightStyleNone) + return; + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + indexes = [], + rectSelector = sel_getUid("rectOfRow:"); + if (objj_msgSend(_selectedRowIndexes, "count") >= 1) + { + var exposedRows = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", objj_msgSend(self, "rowsInRect:", aRect)), + firstRow = objj_msgSend(exposedRows, "firstIndex"), + exposedRange = CPMakeRange(firstRow, objj_msgSend(exposedRows, "lastIndex") - firstRow + 1); + objj_msgSend(_selectedRowIndexes, "getIndexes:maxCount:inIndexRange:", indexes, -1, exposedRange); + } + else if (objj_msgSend(_selectedColumnIndexes, "count") >= 1) + { + rectSelector = sel_getUid("rectOfColumn:"); + var exposedColumns = objj_msgSend(self, "columnIndexesInRect:", aRect), + firstColumn = objj_msgSend(exposedColumns, "firstIndex"), + exposedRange = CPMakeRange(firstColumn, objj_msgSend(exposedColumns, "lastIndex") - firstColumn + 1); + objj_msgSend(_selectedColumnIndexes, "getIndexes:maxCount:inIndexRange:", indexes, -1, exposedRange); + } + var count = count2 = objj_msgSend(indexes, "count"); + if (!count) + return; + var drawGradient = (_selectionHighlightStyle === CPTableViewSelectionHighlightStyleSourceList && objj_msgSend(_selectedRowIndexes, "count") >= 1), + deltaHeight = 0.5 * (_gridStyleMask & CPTableViewSolidHorizontalGridLineMask); + CGContextBeginPath(context); + var gradientCache = objj_msgSend(self, "selectionGradientColors"), + topLineColor = objj_msgSend(gradientCache, "objectForKey:", CPSourceListTopLineColor), + bottomLineColor = objj_msgSend(gradientCache, "objectForKey:", CPSourceListBottomLineColor), + gradientColor = objj_msgSend(gradientCache, "objectForKey:", CPSourceListGradient); + while (count--) + { + var rowRect = CGRectIntersection(objj_msgSend(self, rectSelector, indexes[count]), aRect); + CGContextAddRect(context, rowRect); + if (drawGradient) + { + var minX = (rowRect.origin.x), + minY = (rowRect.origin.y), + maxX = (rowRect.origin.x + rowRect.size.width), + maxY = (rowRect.origin.y + rowRect.size.height) - deltaHeight; + CGContextDrawLinearGradient(context, gradientColor, rowRect.origin, CGPointMake(minX, maxY), 0); + CGContextClosePath(context); + CGContextBeginPath(context); + CGContextMoveToPoint(context, minX, minY); + CGContextAddLineToPoint(context, maxX, minY); + CGContextClosePath(context); + CGContextSetStrokeColor(context, topLineColor); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextMoveToPoint(context, minX, maxY); + CGContextAddLineToPoint(context, maxX, maxY - 1); + CGContextClosePath(context); + CGContextSetStrokeColor(context, bottomLineColor); + CGContextStrokePath(context); + } + } + CGContextClosePath(context); + if (!drawGradient) + { + objj_msgSend(objj_msgSend(self, "selectionHighlightColor"), "setFill"); + CGContextFillPath(context); + } + CGContextBeginPath(context); + var gridStyleMask = objj_msgSend(self, "gridStyleMask"); + for(var i = 0; i < count2; i++) + { + var rect = objj_msgSend(self, rectSelector, indexes[i]), + minX = CGRectGetMinX(rect) - 0.5, + maxX = CGRectGetMaxX(rect) - 0.5, + minY = CGRectGetMinY(rect) - 0.5, + maxY = CGRectGetMaxY(rect) - 0.5; + if (objj_msgSend(_selectedRowIndexes, "count") >= 1 && gridStyleMask & CPTableViewSolidVerticalGridLineMask) + { + var exposedColumns = objj_msgSend(self, "columnIndexesInRect:", aRect), + exposedColumnIndexes = [], + firstExposedColumn = objj_msgSend(exposedColumns, "firstIndex"), + exposedRange = CPMakeRange(firstExposedColumn, objj_msgSend(exposedColumns, "lastIndex") - firstExposedColumn + 1); + objj_msgSend(exposedColumns, "getIndexes:maxCount:inIndexRange:", exposedColumnIndexes, -1, exposedRange); + var exposedColumnCount = objj_msgSend(exposedColumnIndexes, "count"); + for (var c = firstExposedColumn; c < exposedColumnCount; c++) + { + var colRect = objj_msgSend(self, "rectOfColumn:", exposedColumnIndexes[c]), + colX = CGRectGetMaxX(colRect) + 0.5; + CGContextMoveToPoint(context, colX, minY); + CGContextAddLineToPoint(context, colX, maxY); + } + } + if (objj_msgSend(indexes, "containsObject:", indexes[i] + 1)) + { + CGContextMoveToPoint(context, minX, maxY); + CGContextAddLineToPoint(context, maxX, maxY); + } + } + CGContextClosePath(context); + CGContextSetStrokeColor(context, objj_msgSend(self, "currentValueForThemeAttribute:", "highlighted-grid-color")); + CGContextStrokePath(context); +} +},["void","CGRect"]), new objj_method(sel_getUid("_drawRows:clipRect:"), function $CPTableView___drawRows_clipRect_(self, _cmd, rowsIndexes, clipRect) +{ with(self) +{ + var row = objj_msgSend(rowsIndexes, "firstIndex"); + while (row !== CPNotFound) + { + objj_msgSend(self, "drawRow:clipRect:", row, CGRectIntersection(clipRect, objj_msgSend(self, "rectOfRow:", row))); + row = objj_msgSend(rowsIndexes, "indexGreaterThanIndex:", row); + } +} +},["void","CPIndexSet","CGRect"]), new objj_method(sel_getUid("drawRow:clipRect:"), function $CPTableView__drawRow_clipRect_(self, _cmd, row, rect) +{ with(self) +{ +} +},["void","CPInteger","CGRect"]), new objj_method(sel_getUid("layoutSubviews"), function $CPTableView__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "load"); +} +},["void"]), new objj_method(sel_getUid("viewWillMoveToSuperview:"), function $CPTableView__viewWillMoveToSuperview_(self, _cmd, aView) +{ with(self) +{ + var superview = objj_msgSend(self, "superview"), + defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (superview) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPViewFrameDidChangeNotification, superview); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPViewBoundsDidChangeNotification, superview); + } + if (aView) + { + objj_msgSend(aView, "setPostsFrameChangedNotifications:", YES); + objj_msgSend(aView, "setPostsBoundsChangedNotifications:", YES); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("superviewFrameChanged:"), CPViewFrameDidChangeNotification, aView); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("superviewBoundsChanged:"), CPViewBoundsDidChangeNotification, aView); + } +} +},["void","CPView"]), new objj_method(sel_getUid("superviewBoundsChanged:"), function $CPTableView__superviewBoundsChanged_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("superviewFrameChanged:"), function $CPTableView__superviewFrameChanged_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "tile"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("tracksMouseOutsideOfFrame"), function $CPTableView__tracksMouseOutsideOfFrame(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("startTrackingAt:"), function $CPTableView__startTrackingAt_(self, _cmd, aPoint) +{ with(self) +{ + var row = objj_msgSend(self, "rowAtPoint:", aPoint); + if (row < 0 && _allowsEmptySelection) + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSet"), NO); + objj_msgSend(self, "_noteSelectionIsChanging"); + if (objj_msgSend(self, "mouseDownFlags") & CPShiftKeyMask) + _selectionAnchorRow = (ABS(objj_msgSend(_selectedRowIndexes, "firstIndex") - row) < ABS(objj_msgSend(_selectedRowIndexes, "lastIndex") - row)) ? + objj_msgSend(_selectedRowIndexes, "firstIndex") : objj_msgSend(_selectedRowIndexes, "lastIndex"); + else + _selectionAnchorRow = row; + _startTrackingPoint = aPoint; + _startTrackingTimestamp = new Date(); + if (_implementedDataSourceMethods & CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_) + _trackingPointMovedOutOfClickSlop = NO; + if (row >= 0 && !(_implementedDataSourceMethods & CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_)) + objj_msgSend(self, "_updateSelectionWithMouseAtRow:", row); + objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", self); + return YES; +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("trackMouse:"), function $CPTableView__trackMouse_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(_draggedRowIndexes, "count")) + { + objj_msgSend(self, "autoscroll:", anEvent); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "trackMouse:", anEvent); + } + else + objj_msgSend(CPApp, "sendEvent:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("continueTracking:at:"), function $CPTableView__continueTracking_at_(self, _cmd, lastPoint, aPoint) +{ with(self) +{ + var row = objj_msgSend(self, "rowAtPoint:", aPoint); + if (!_isSelectingSession && _implementedDataSourceMethods & CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_) + { + if (row >= 0 && (ABS(_startTrackingPoint.x - aPoint.x) > 3 || (_verticalMotionCanDrag && ABS(_startTrackingPoint.y - aPoint.y) > 3)) || + (objj_msgSend(_selectedRowIndexes, "containsIndex:", row))) + { + if (objj_msgSend(_selectedRowIndexes, "containsIndex:", row)) + _draggedRowIndexes = objj_msgSend(objj_msgSend(CPIndexSet, "alloc"), "initWithIndexSet:", _selectedRowIndexes); + else + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", row); + var pboard = objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard); + if (objj_msgSend(self, "canDragRowsWithIndexes:atPoint:", _draggedRowIndexes, aPoint) && objj_msgSend(_dataSource, "tableView:writeRowsWithIndexes:toPasteboard:", self, _draggedRowIndexes, pboard)) + { + var currentEvent = objj_msgSend(CPApp, "currentEvent"), + offset = CPPointMakeZero(), + tableColumns = objj_msgSend(_tableColumns, "objectsAtIndexes:", _exposedColumns); + var view = objj_msgSend(self, "dragViewForRowsWithIndexes:tableColumns:event:offset:", _draggedRowIndexes, tableColumns, currentEvent, offset); + if (!view) + { + var image = objj_msgSend(self, "dragImageForRowsWithIndexes:tableColumns:event:offset:", _draggedRowIndexes, tableColumns, currentEvent, offset); + view = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CPMakeRect(0, 0, objj_msgSend(image, "size").width, objj_msgSend(image, "size").height)); + objj_msgSend(view, "setImage:", image); + } + var bounds = objj_msgSend(view, "bounds"), + viewLocation = CPPointMake(aPoint.x - CGRectGetWidth(bounds) / 2 + offset.x, aPoint.y - CGRectGetHeight(bounds) / 2 + offset.y); + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", view, viewLocation, CPPointMakeZero(), objj_msgSend(CPApp, "currentEvent"), pboard, self, YES); + _startTrackingPoint = nil; + return NO; + } + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + } + else if (ABS(_startTrackingPoint.x - aPoint.x) < 5 && ABS(_startTrackingPoint.y - aPoint.y) < 5) + return YES; + } + _isSelectingSession = YES; + if (row >= 0 && row !== _lastTrackedRowIndex) + { + _lastTrackedRowIndex = row; + objj_msgSend(self, "_updateSelectionWithMouseAtRow:", row); + } + if ((_implementedDataSourceMethods & CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_) + && !_trackingPointMovedOutOfClickSlop) + { + var CLICK_SPACE_DELTA = 5.0; + if (ABS(aPoint.x - _startTrackingPoint.x) > CLICK_SPACE_DELTA + || ABS(aPoint.y - _startTrackingPoint.y) > CLICK_SPACE_DELTA) + { + _trackingPointMovedOutOfClickSlop = YES; + } + } + return YES; +} +},["BOOL","CGPoint","CGPoint"]), new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"), function $CPTableView__stopTracking_at_mouseIsUp_(self, _cmd, lastPoint, aPoint, mouseIsUp) +{ with(self) +{ + _isSelectingSession = NO; + var CLICK_TIME_DELTA = 1000, + columnIndex, + column, + rowIndex, + shouldEdit = YES; + if (_implementedDataSourceMethods & CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_) + { + rowIndex = objj_msgSend(self, "rowAtPoint:", aPoint); + if (rowIndex !== -1) + { + if (objj_msgSend(_draggedRowIndexes, "count") > 0) + { + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + return; + } + _previouslySelectedRowIndexes = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(self, "_updateSelectionWithMouseAtRow:", rowIndex); + } + } + if (mouseIsUp + && (_implementedDataSourceMethods & CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_) + && !_trackingPointMovedOutOfClickSlop + && (objj_msgSend(objj_msgSend(CPApp, "currentEvent"), "clickCount") > 1)) + { + columnIndex = objj_msgSend(self, "columnAtPoint:", lastPoint); + if (columnIndex !== -1) + { + column = _tableColumns[columnIndex]; + if (objj_msgSend(column, "isEditable")) + { + rowIndex = objj_msgSend(self, "rowAtPoint:", aPoint); + if (rowIndex !== -1) + { + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_shouldEditTableColumn_row_) + shouldEdit = objj_msgSend(_delegate, "tableView:shouldEditTableColumn:row:", self, column, rowIndex); + if (shouldEdit) + { + objj_msgSend(self, "editColumn:row:withEvent:select:", columnIndex, rowIndex, nil, YES); + return; + } + } + } + } + } + if (objj_msgSend(objj_msgSend(CPApp, "currentEvent"), "clickCount") === 2 && _doubleAction) + { + _clickedRow = objj_msgSend(self, "rowAtPoint:", aPoint); + objj_msgSend(self, "sendAction:to:", _doubleAction, _target); + } +} +},["void","CGPoint","CGPoint","BOOL"]), new objj_method(sel_getUid("draggingEntered:"), function $CPTableView__draggingEntered_(self, _cmd, sender) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(sender, "draggingLocation"), nil), + dropOperation = objj_msgSend(self, "_proposedDropOperationAtPoint:", location), + row = objj_msgSend(self, "_proposedRowAtPoint:", location); + if (_retargetedDropRow !== nil) + row = _retargetedDropRow; + var draggedTypes = objj_msgSend(self, "registeredDraggedTypes"), + count = objj_msgSend(draggedTypes, "count"), + i = 0; + for (; i < count; i++) + { + if (objj_msgSend(objj_msgSend(objj_msgSend(sender, "draggingPasteboard"), "types"), "containsObject:", objj_msgSend(draggedTypes, "objectAtIndex:", i))) + return objj_msgSend(self, "_validateDrop:proposedRow:proposedDropOperation:", sender, row, dropOperation); + } + return CPDragOperationNone; +} +},["CPDragOperation","id"]), new objj_method(sel_getUid("draggingExited:"), function $CPTableView__draggingExited_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(_dropOperationFeedbackView, "removeFromSuperview"); +} +},["void","id"]), new objj_method(sel_getUid("draggingEnded:"), function $CPTableView__draggingEnded_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_draggingEnded"); +} +},["void","id"]), new objj_method(sel_getUid("_draggingEnded"), function $CPTableView___draggingEnded(self, _cmd) +{ with(self) +{ + _retargetedDropOperation = nil; + _retargetedDropRow = nil; + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + objj_msgSend(_dropOperationFeedbackView, "removeFromSuperview"); +} +},["void"]), new objj_method(sel_getUid("wantsPeriodicDraggingUpdates"), function $CPTableView__wantsPeriodicDraggingUpdates(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("_proposedDropOperationAtPoint:"), function $CPTableView___proposedDropOperationAtPoint_(self, _cmd, theDragPoint) +{ with(self) +{ + if (_retargetedDropOperation !== nil) + return _retargetedDropOperation; + var row = objj_msgSend(self, "_proposedRowAtPoint:", theDragPoint), + rowRect = objj_msgSend(self, "rectOfRow:", row); + if (objj_msgSend(self, "intercellSpacing").height < 5.0) + rowRect = CPRectInset(rowRect, 0.0, 5.0 - objj_msgSend(self, "intercellSpacing").height); + if (CGRectContainsPoint(rowRect, theDragPoint) && row < _numberOfRows) + return CPTableViewDropOn; + return CPTableViewDropAbove; +} +},["CPTableViewDropOperation","CGPoint"]), new objj_method(sel_getUid("_proposedRowAtPoint:"), function $CPTableView___proposedRowAtPoint_(self, _cmd, dragPoint) +{ with(self) +{ + var row = FLOOR(dragPoint.y / ( _rowHeight + _intercellSpacing.height )), + lowerRow = row + 1, + rect = objj_msgSend(self, "rectOfRow:", row), + bottomPoint = CGRectGetMaxY(rect), + bottomThirty = bottomPoint - ((bottomPoint - CGRectGetMinY(rect)) * 0.3); + if (dragPoint.y > MAX(bottomThirty, bottomPoint - 6)) + row = lowerRow; + if (row >= objj_msgSend(self, "numberOfRows")) + row = objj_msgSend(self, "numberOfRows"); + return row; +} +},["CPInteger","CGPoint"]), new objj_method(sel_getUid("_validateDrop:proposedRow:proposedDropOperation:"), function $CPTableView___validateDrop_proposedRow_proposedDropOperation_(self, _cmd, info, row, dropOperation) +{ with(self) +{ + if (_implementedDataSourceMethods & CPTableViewDataSource_tableView_validateDrop_proposedRow_proposedDropOperation_) + return objj_msgSend(_dataSource, "tableView:validateDrop:proposedRow:proposedDropOperation:", self, info, row, dropOperation); + return CPDragOperationNone; +} +},["void","id","CPInteger","CPTableViewDropOperation"]), new objj_method(sel_getUid("_rectForDropHighlightViewOnRow:"), function $CPTableView___rectForDropHighlightViewOnRow_(self, _cmd, theRowIndex) +{ with(self) +{ + if (theRowIndex >= objj_msgSend(self, "numberOfRows")) + theRowIndex = objj_msgSend(self, "numberOfRows") - 1; + return objj_msgSend(self, "rectOfRow:", theRowIndex); +} +},["CPRect","int"]), new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"), function $CPTableView___rectForDropHighlightViewBetweenUpperRow_andLowerRow_offset_(self, _cmd, theUpperRowIndex, theLowerRowIndex, theOffset) +{ with(self) +{ + if (theLowerRowIndex > objj_msgSend(self, "numberOfRows")) + theLowerRowIndex = objj_msgSend(self, "numberOfRows"); + return objj_msgSend(self, "rectOfRow:", theLowerRowIndex); +} +},["CPRect","int","int","CPPoint"]), new objj_method(sel_getUid("draggingUpdated:"), function $CPTableView__draggingUpdated_(self, _cmd, sender) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(sender, "draggingLocation"), nil), + dropOperation = objj_msgSend(self, "_proposedDropOperationAtPoint:", location), + numberOfRows = objj_msgSend(self, "numberOfRows"), + row = objj_msgSend(self, "_proposedRowAtPoint:", location), + dragOperation = objj_msgSend(self, "_validateDrop:proposedRow:proposedDropOperation:", sender, row, dropOperation), + exposedClipRect = objj_msgSend(self, "visibleRect"); + if (_retargetedDropRow !== nil) + row = _retargetedDropRow; + if (dropOperation === CPTableViewDropOn && row >= objj_msgSend(self, "numberOfRows")) + row = objj_msgSend(self, "numberOfRows") - 1; + var rect = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if (row === -1) + rect = exposedClipRect; + else if (dropOperation === CPTableViewDropAbove) + rect = objj_msgSend(self, "_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:", row - 1, row, location); + else + rect = objj_msgSend(self, "_rectForDropHighlightViewOnRow:", row); + objj_msgSend(_dropOperationFeedbackView, "setDropOperation:", row !== -1 ? dropOperation : CPDragOperationNone); + objj_msgSend(_dropOperationFeedbackView, "setHidden:", (dragOperation == CPDragOperationNone)); + objj_msgSend(_dropOperationFeedbackView, "setFrame:", rect); + objj_msgSend(_dropOperationFeedbackView, "setCurrentRow:", row); + objj_msgSend(self, "addSubview:", _dropOperationFeedbackView); + return dragOperation; +} +},["CPDragOperation","id"]), new objj_method(sel_getUid("prepareForDragOperation:"), function $CPTableView__prepareForDragOperation_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(_dropOperationFeedbackView, "removeFromSuperview"); + return (_implementedDataSourceMethods & CPTableViewDataSource_tableView_validateDrop_proposedRow_proposedDropOperation_); +} +},["BOOL","id"]), new objj_method(sel_getUid("performDragOperation:"), function $CPTableView__performDragOperation_(self, _cmd, sender) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(sender, "draggingLocation"), nil), + operation = objj_msgSend(self, "_proposedDropOperationAtPoint:", location), + row = _retargetedDropRow; + if (row === nil) + var row = objj_msgSend(self, "_proposedRowAtPoint:", location); + return objj_msgSend(_dataSource, "tableView:acceptDrop:row:dropOperation:", self, sender, row, operation); +} +},["BOOL","id"]), new objj_method(sel_getUid("concludeDragOperation:"), function $CPTableView__concludeDragOperation_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "reloadData"); +} +},["void","id"]), new objj_method(sel_getUid("draggedImage:endedAt:operation:"), function $CPTableView__draggedImage_endedAt_operation_(self, _cmd, anImage, aLocation, anOperation) +{ with(self) +{ + if(objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:didEndDraggedImage:atPosition:operation:"))) + objj_msgSend(_dataSource, "tableView:didEndDraggedImage:atPosition:operation:", self, anImage, aLocation, anOperation); +} +},["void","CPImage","CGPoint","CPDragOperation"]), new objj_method(sel_getUid("draggedView:endedAt:operation:"), function $CPTableView__draggedView_endedAt_operation_(self, _cmd, aView, aLocation, anOperation) +{ with(self) +{ + objj_msgSend(self, "_draggingEnded"); + objj_msgSend(self, "draggedImage:endedAt:operation:", aView, aLocation, anOperation); +} +},["void","CPImage","CGPoint","CPDragOperation"]), new objj_method(sel_getUid("_updateSelectionWithMouseAtRow:"), function $CPTableView___updateSelectionWithMouseAtRow_(self, _cmd, aRow) +{ with(self) +{ + if(aRow < 0) + return; + var newSelection, + shouldExtendSelection = NO; + if (objj_msgSend(self, "mouseDownFlags") & (CPCommandKeyMask | CPControlKeyMask | CPAlternateKeyMask)) + { + if (objj_msgSend(_selectedRowIndexes, "containsIndex:", aRow)) + { + newSelection = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(newSelection, "removeIndex:", aRow); + } + else if (_allowsMultipleSelection) + { + newSelection = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(newSelection, "addIndex:", aRow); + } + else + newSelection = objj_msgSend(CPIndexSet, "indexSetWithIndex:", aRow); + } + else if (_allowsMultipleSelection) + { + newSelection = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(MIN(aRow, _selectionAnchorRow), ABS(aRow - _selectionAnchorRow) + 1)); + shouldExtendSelection = objj_msgSend(self, "mouseDownFlags") & CPShiftKeyMask && + ((_lastSelectedRow == objj_msgSend(_selectedRowIndexes, "lastIndex") && aRow > _lastSelectedRow) || + (_lastSelectedRow == objj_msgSend(_selectedRowIndexes, "firstIndex") && aRow < _lastSelectedRow)); + } + else if (aRow >= 0 && aRow < _numberOfRows) + newSelection = objj_msgSend(CPIndexSet, "indexSetWithIndex:", aRow); + else + newSelection = objj_msgSend(CPIndexSet, "indexSet"); + if (objj_msgSend(newSelection, "isEqualToIndexSet:", _selectedRowIndexes)) + return; + if (_implementedDelegateMethods & CPTableViewDelegate_selectionShouldChangeInTableView_ && + !objj_msgSend(_delegate, "selectionShouldChangeInTableView:", self)) + return; + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_selectionIndexesForProposedSelection_) + newSelection = objj_msgSend(_delegate, "tableView:selectionIndexesForProposedSelection:", self, newSelection); + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_shouldSelectRow_) + { + var indexArray = []; + objj_msgSend(newSelection, "getIndexes:maxCount:inIndexRange:", indexArray, -1, nil); + var indexCount = indexArray.length; + while (indexCount--) + { + var index = indexArray[indexCount]; + if (!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, index)) + objj_msgSend(newSelection, "removeIndex:", index); + } + if (objj_msgSend(newSelection, "count") === 0) + return; + } + if (!_allowsEmptySelection && objj_msgSend(newSelection, "count") === 0) + return; + if (objj_msgSend(newSelection, "isEqualToIndexSet:", _selectedRowIndexes)) + return; + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", newSelection, shouldExtendSelection); +} +},["void","CPInteger"]), new objj_method(sel_getUid("_noteSelectionIsChanging"), function $CPTableView___noteSelectionIsChanging(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPTableViewSelectionIsChangingNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_noteSelectionDidChange"), function $CPTableView___noteSelectionDidChange(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPTableViewSelectionDidChangeNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("becomeFirstResponder"), function $CPTableView__becomeFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPTableView__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("keyDown:"), function $CPTableView__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "interpretKeyEvents:", [anEvent]); +} +},["void","CPEvent"]), new objj_method(sel_getUid("moveDown:"), function $CPTableView__moveDown_(self, _cmd, sender) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_selectionShouldChangeInTableView_ && + !objj_msgSend(_delegate, "selectionShouldChangeInTableView:", self)) + return; + var anEvent = objj_msgSend(CPApp, "currentEvent"); + if(objj_msgSend(objj_msgSend(self, "selectedRowIndexes"), "count") > 0) + { + var extend = NO; + if((objj_msgSend(anEvent, "modifierFlags") & CPShiftKeyMask) && _allowsMultipleSelection) + extend = YES; + var i = objj_msgSend(objj_msgSend(self, "selectedRowIndexes"), "lastIndex"); + if(i<objj_msgSend(self, "numberOfRows") - 1) + i++; + } + else + { + var extend = NO; + if(objj_msgSend(self, "numberOfRows") > 0) + var i = 0; + } + if(_implementedDelegateMethods & CPTableViewDelegate_tableView_shouldSelectRow_) + { + while((!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, i)) && i<objj_msgSend(self, "numberOfRows")) + { + i++; + } + if(!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, i)) + return; + } + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", i), extend); + if(i >= 0) + objj_msgSend(self, "scrollRowToVisible:", i); +} +},["void","id"]), new objj_method(sel_getUid("moveDownAndModifySelection:"), function $CPTableView__moveDownAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveDown:", sender); +} +},["void","id"]), new objj_method(sel_getUid("moveUp:"), function $CPTableView__moveUp_(self, _cmd, sender) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_selectionShouldChangeInTableView_ && + !objj_msgSend(_delegate, "selectionShouldChangeInTableView:", self)) + return; + var anEvent = objj_msgSend(CPApp, "currentEvent"); + if(objj_msgSend(objj_msgSend(self, "selectedRowIndexes"), "count") > 0) + { + var extend = NO; + if((objj_msgSend(anEvent, "modifierFlags") & CPShiftKeyMask) && _allowsMultipleSelection) + extend = YES; + var i = objj_msgSend(objj_msgSend(self, "selectedRowIndexes"), "firstIndex"); + if(i > 0) + i--; + } + else + { + var extend = NO; + if(objj_msgSend(self, "numberOfRows") > 0) + var i = objj_msgSend(self, "numberOfRows") - 1; + } + if(_implementedDelegateMethods & CPTableViewDelegate_tableView_shouldSelectRow_) + { + while((!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, i)) && i > 0) + { + i--; + } + if(!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, i)) + return; + } + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", i), extend); + if(i >= 0) + objj_msgSend(self, "scrollRowToVisible:", i); +} +},["void","id"]), new objj_method(sel_getUid("moveUpAndModifySelection:"), function $CPTableView__moveUpAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveUp:", sender); +} +},["void","id"]), new objj_method(sel_getUid("deleteBackward:"), function $CPTableView__deleteBackward_(self, _cmd, sender) +{ with(self) +{ + if(objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewDeleteKeyPressed:"))) + objj_msgSend(_delegate, "tableViewDeleteKeyPressed:", self); +} +},["void","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPTableView__themeClass(self, _cmd) +{ with(self) +{ + return "tableview"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPTableView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null")], ["alternating-row-colors", "grid-color", "highlighted-grid-color", "selection-color", "sourcelist-selection-color", "sort-image", "sort-image-reversed"]); +} +},["id"])]); +} +{ +var the_class = objj_getClass("CPTableView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_replacementKeyPathForBinding:"), function $CPTableView___replacementKeyPathForBinding_(self, _cmd, aBinding) +{ with(self) +{ + if (aBinding === "selectionIndexes") + return "selectedRowIndexes"; + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "_replacementKeyPathForBinding:", aBinding); +} +},["CPString","CPString"]), new objj_method(sel_getUid("_establishBindingsIfUnbound:"), function $CPTableView___establishBindingsIfUnbound_(self, _cmd, destination) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "infoForBinding:", "content"), "objectForKey:", CPObservedObjectKey) !== destination) + objj_msgSend(self, "bind:toObject:withKeyPath:options:", "content", destination, "arrangedObjects", nil); + if (objj_msgSend(objj_msgSend(self, "infoForBinding:", "selectionIndexes"), "objectForKey:", CPObservedObjectKey) !== destination) + objj_msgSend(self, "bind:toObject:withKeyPath:options:", "selectionIndexes", destination, "selectionIndexes", nil); +} +},["void","id"]), new objj_method(sel_getUid("setContent:"), function $CPTableView__setContent_(self, _cmd, content) +{ with(self) +{ + objj_msgSend(self, "reloadData"); +} +},["void","CPArray"])]); +} +var CPTableViewDataSourceKey = "CPTableViewDataSourceKey", + CPTableViewDelegateKey = "CPTableViewDelegateKey", + CPTableViewHeaderViewKey = "CPTableViewHeaderViewKey", + CPTableViewTableColumnsKey = "CPTableViewTableColumnsKey", + CPTableViewRowHeightKey = "CPTableViewRowHeightKey", + CPTableViewIntercellSpacingKey = "CPTableViewIntercellSpacingKey", + CPTableViewSelectionHighlightStyleKey = "CPTableViewSelectionHighlightStyleKey", + CPTableViewMultipleSelectionKey = "CPTableViewMultipleSelectionKey", + CPTableViewEmptySelectionKey = "CPTableViewEmptySelectionKey", + CPTableViewColumnReorderingKey = "CPTableViewColumnReorderingKey", + CPTableViewColumnResizingKey = "CPTableViewColumnResizingKey", + CPTableViewColumnSelectionKey = "CPTableViewColumnSelectionKey", + CPTableViewColumnAutoresizingStyleKey = "CPTableViewColumnAutoresizingStyleKey", + CPTableViewGridColorKey = "CPTableViewGridColorKey", + CPTableViewGridStyleMaskKey = "CPTableViewGridStyleMaskKey", + CPTableViewUsesAlternatingBackgroundKey = "CPTableViewUsesAlternatingBackgroundKey", + CPTableViewAlternatingRowColorsKey = "CPTableViewAlternatingRowColorsKey", + CPTableViewHeaderViewKey = "CPTableViewHeaderViewKey", + CPTableViewCornerViewKey = "CPTableViewCornerViewKey"; +{ +var the_class = objj_getClass("CPTableView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTableView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _allowsColumnReordering = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewColumnReorderingKey); + _allowsColumnResizing = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewColumnResizingKey); + _allowsMultipleSelection = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewMultipleSelectionKey); + _allowsEmptySelection = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewEmptySelectionKey); + _allowsColumnSelection = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewColumnSelectionKey); + _selectionHighlightStyle = objj_msgSend(aCoder, "decodeIntForKey:", CPTableViewSelectionHighlightStyleKey); + _columnAutoResizingStyle = objj_msgSend(aCoder, "decodeIntForKey:", CPTableViewColumnAutoresizingStyleKey); + _tableColumns = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewTableColumnsKey) || []; + objj_msgSend(_tableColumns, "makeObjectsPerformSelector:withObject:", sel_getUid("setTableView:"), self); + if (objj_msgSend(aCoder, "containsValueForKey:", CPTableViewRowHeightKey)) + _rowHeight = objj_msgSend(aCoder, "decodeFloatForKey:", CPTableViewRowHeightKey); + else + _rowHeight = 23.0; + _intercellSpacing = objj_msgSend(aCoder, "decodeSizeForKey:", CPTableViewIntercellSpacingKey) || { width:3.0, height:2.0 }; + objj_msgSend(self, "setGridColor:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewGridColorKey)); + _gridStyleMask = objj_msgSend(aCoder, "decodeIntForKey:", CPTableViewGridStyleMaskKey) || CPTableViewGridNone; + _usesAlternatingRowBackgroundColors = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewUsesAlternatingBackgroundKey); + objj_msgSend(self, "setAlternatingRowBackgroundColors:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewAlternatingRowColorsKey)); + _headerView = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewHeaderViewKey); + _cornerView = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewCornerViewKey); + if (_cornerView) + objj_msgSend(_cornerView, "setHidden:", NO); + _dataSource = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewDataSourceKey); + _delegate = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewDelegateKey); + objj_msgSend(self, "_init"); + objj_msgSend(self, "viewWillMoveToSuperview:", objj_msgSend(self, "superview")); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTableView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _dataSource, CPTableViewDataSourceKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _delegate, CPTableViewDelegateKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _rowHeight, CPTableViewRowHeightKey); + objj_msgSend(aCoder, "encodeSize:forKey:", _intercellSpacing, CPTableViewIntercellSpacingKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _selectionHighlightStyle, CPTableViewSelectionHighlightStyleKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _columnAutoResizingStyle, CPTableViewColumnAutoresizingStyleKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsMultipleSelection, CPTableViewMultipleSelectionKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsEmptySelection, CPTableViewEmptySelectionKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsColumnReordering, CPTableViewColumnReorderingKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsColumnResizing, CPTableViewColumnResizingKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsColumnSelection, CPTableViewColumnSelectionKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _tableColumns, CPTableViewTableColumnsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "gridColor"), CPTableViewGridColorKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _gridStyleMask, CPTableViewGridStyleMaskKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _usesAlternatingRowBackgroundColors, CPTableViewUsesAlternatingBackgroundKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "alternatingRowBackgroundColors"), CPTableViewAlternatingRowColorsKey) + objj_msgSend(aCoder, "encodeObject:forKey:", _cornerView, CPTableViewCornerViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _headerView, CPTableViewHeaderViewKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPIndexSet") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("removeMatches:"), function $CPIndexSet__removeMatches_(self, _cmd, otherSet) +{ with(self) +{ + var firstindex = objj_msgSend(self, "firstIndex"); + var index = MIN(firstindex,objj_msgSend(otherSet, "firstIndex")); + var switchFlag = (index == firstindex); + while(index != CPNotFound) + { + var indexSet = (switchFlag) ? otherSet : self; + otherIndex = objj_msgSend(indexSet, "indexGreaterThanOrEqualToIndex:", index); + if (otherIndex == index) + { + objj_msgSend(self, "removeIndex:", index); + objj_msgSend(otherSet, "removeIndex:", index); + } + index = otherIndex; + switchFlag = !switchFlag; + } +} +},["void",null])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPDropOperationDrawingView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("dropOperation"), new objj_ivar("tableView"), new objj_ivar("currentRow"), new objj_ivar("isBlinking")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("dropOperation"), function $_CPDropOperationDrawingView__dropOperation(self, _cmd) +{ with(self) +{ +return dropOperation; +} +},["id"]), +new objj_method(sel_getUid("setDropOperation:"), function $_CPDropOperationDrawingView__setDropOperation_(self, _cmd, newValue) +{ with(self) +{ +dropOperation = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("tableView"), function $_CPDropOperationDrawingView__tableView(self, _cmd) +{ with(self) +{ +return tableView; +} +},["id"]), +new objj_method(sel_getUid("setTableView:"), function $_CPDropOperationDrawingView__setTableView_(self, _cmd, newValue) +{ with(self) +{ +tableView = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("currentRow"), function $_CPDropOperationDrawingView__currentRow(self, _cmd) +{ with(self) +{ +return currentRow; +} +},["id"]), +new objj_method(sel_getUid("setCurrentRow:"), function $_CPDropOperationDrawingView__setCurrentRow_(self, _cmd, newValue) +{ with(self) +{ +currentRow = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("isBlinking"), function $_CPDropOperationDrawingView__isBlinking(self, _cmd) +{ with(self) +{ +return isBlinking; +} +},["id"]), +new objj_method(sel_getUid("setIsBlinking:"), function $_CPDropOperationDrawingView__setIsBlinking_(self, _cmd, newValue) +{ with(self) +{ +isBlinking = newValue; +} +},["void","id"]), new objj_method(sel_getUid("drawRect:"), function $_CPDropOperationDrawingView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + if(tableView._destinationDragStyle === CPTableViewDraggingDestinationFeedbackStyleNone || isBlinking) + return; + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithHexString:", "4886ca")); + CGContextSetLineWidth(context, 3); + if (currentRow === -1) + { + CGContextStrokeRect(context, objj_msgSend(self, "bounds")); + } + else if (dropOperation === CPTableViewDropOn) + { + var selectedRows = objj_msgSend(tableView, "selectedRowIndexes"), + newRect = { origin: { x:aRect.origin.x + 2, y:aRect.origin.y + 2 }, size: { width:aRect.size.width - 4, height:aRect.size.height - 5 } }; + if(objj_msgSend(selectedRows, "containsIndex:", currentRow)) + { + CGContextSetLineWidth(context, 2); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "whiteColor")); + } + else + { + CGContextSetFillColor(context, objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", 72/255, 134/255, 202/255, 0.25)); + CGContextFillRoundedRectangleInRect(context, newRect, 8, YES, YES, YES, YES); + } + CGContextStrokeRoundedRectangleInRect(context, newRect, 8, YES, YES, YES, YES); + } + else if (dropOperation === CPTableViewDropAbove) + { + objj_msgSend(self, "setFrameOrigin:", CGPointMake(_frame.origin.x, _frame.origin.y - 8)); + var selectedRows = objj_msgSend(tableView, "selectedRowIndexes"); + if(objj_msgSend(selectedRows, "containsIndex:", currentRow - 1) || objj_msgSend(selectedRows, "containsIndex:", currentRow)) + { + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "whiteColor")); + CGContextSetLineWidth(context, 4); + CGContextStrokeEllipseInRect(context, { origin: { x:aRect.origin.x + 4, y:aRect.origin.y + 4 }, size: { width:8, height:8 } }); + CGContextBeginPath(context); + CGContextMoveToPoint(context, 10, aRect.origin.y + 8); + CGContextAddLineToPoint(context, aRect.size.width - aRect.origin.y - 8, aRect.origin.y + 8); + CGContextClosePath(context); + CGContextStrokePath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithHexString:", "4886ca")); + CGContextSetLineWidth(context, 3); + } + CGContextStrokeEllipseInRect(context, { origin: { x:aRect.origin.x + 4, y:aRect.origin.y + 4 }, size: { width:8, height:8 } }); + CGContextBeginPath(context); + CGContextMoveToPoint(context, 10, aRect.origin.y + 8); + CGContextAddLineToPoint(context, aRect.size.width - aRect.origin.y - 8, aRect.origin.y + 8); + CGContextClosePath(context); + CGContextStrokePath(context); + } +} +},["void","CGRect"]), new objj_method(sel_getUid("blink"), function $_CPDropOperationDrawingView__blink(self, _cmd) +{ with(self) +{ + if (dropOperation !== CPTableViewDropOn) + return; + isBlinking = YES; + var showCallback = function() { + objj_msgSend(self, "setHidden:", NO) + isBlinking = NO; + } + var hideCallback = function() { + objj_msgSend(self, "setHidden:", YES) + isBlinking = YES; + } + objj_msgSend(self, "setHidden:", YES); + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", 0.1, showCallback, NO); + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", 0.19, hideCallback, NO); + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", 0.27, showCallback, NO); +} +},["void"])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPColumnDragView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_lineColor")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLineColor:"), function $_CPColumnDragView__initWithLineColor_(self, _cmd, aColor) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPColumnDragView").super_class }, "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + if (self) + _lineColor = aColor; + return self; +} +},["id","CPColor"]), new objj_method(sel_getUid("drawRect:"), function $_CPColumnDragView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetStrokeColor(context, _lineColor); + var points = [ + { x:0.5, y:0 }, + { x:0.5, y:aRect.size.height } + ]; + CGContextStrokeLineSegments(context, points, 2); + points = [ + { x:aRect.size.width - 0.5, y:0 }, + { x:aRect.size.width - 0.5, y:aRect.size.height } + ]; + CGContextStrokeLineSegments(context, points, 2); +} +},["void","CGRect"])]); +} + +p;11;CPTabView.jt;27368;@STATIC;1.0;i;13;CPImageView.ji;15;CPTabViewItem.ji;8;CPView.jt;27298;objj_executeFile("CPImageView.j", YES); +objj_executeFile("CPTabViewItem.j", YES); +objj_executeFile("CPView.j", YES); +CPTopTabsBezelBorder = 0; +CPNoTabsBezelBorder = 4; +CPNoTabsLineBorder = 5; +CPNoTabsNoBorder = 6; +var CPTabViewBezelBorderLeftImage = nil, + CPTabViewBackgroundCenterImage = nil, + CPTabViewBezelBorderRightImage = nil, + CPTabViewBezelBorderColor = nil, + CPTabViewBezelBorderBackgroundColor = nil; +var LEFT_INSET = 7.0, + RIGHT_INSET = 7.0; +var CPTabViewDidSelectTabViewItemSelector = 1, + CPTabViewShouldSelectTabViewItemSelector = 2, + CPTabViewWillSelectTabViewItemSelector = 4, + CPTabViewDidChangeNumberOfTabViewItemsSelector = 8; +{var the_class = objj_allocateClassPair(CPView, "CPTabView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_labelsView"), new objj_ivar("_backgroundView"), new objj_ivar("_separatorView"), new objj_ivar("_auxiliaryView"), new objj_ivar("_contentView"), new objj_ivar("_tabViewItems"), new objj_ivar("_selectedTabViewItem"), new objj_ivar("_tabViewType"), new objj_ivar("_delegate"), new objj_ivar("_delegateSelectors")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPTabView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _tabViewType = CPTopTabsBezelBorder; + _tabViewItems = []; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $CPTabView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ + if (_tabViewType != CPTopTabsBezelBorder || _labelsView) + return; + objj_msgSend(self, "_createBezelBorder"); + objj_msgSend(self, "layoutSubviews"); +} +},["void"]), new objj_method(sel_getUid("_createBezelBorder"), function $CPTabView___createBezelBorder(self, _cmd) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + _labelsView = objj_msgSend(objj_msgSend(_CPTabLabelsView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), 0.0)); + objj_msgSend(_labelsView, "setTabView:", self); + objj_msgSend(_labelsView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(self, "addSubview:", _labelsView); + _backgroundView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_backgroundView, "setBackgroundColor:", CPTabViewBezelBorderBackgroundColor); + objj_msgSend(_backgroundView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(self, "addSubview:", _backgroundView); + _separatorView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_separatorView, "setBackgroundColor:", objj_msgSend(objj_msgSend(self, "class"), "bezelBorderColor")); + objj_msgSend(_separatorView, "setAutoresizingMask:", CPViewWidthSizable | CPViewMaxYMargin); + objj_msgSend(self, "addSubview:", _separatorView); +} +},["void"]), new objj_method(sel_getUid("layoutSubviews"), function $CPTabView__layoutSubviews(self, _cmd) +{ with(self) +{ + if (_tabViewType == CPTopTabsBezelBorder) + { + var backgroundRect = objj_msgSend(self, "bounds"), + labelsViewHeight = objj_msgSend(_CPTabLabelsView, "height"); + backgroundRect.origin.y += labelsViewHeight; + backgroundRect.size.height -= labelsViewHeight; + objj_msgSend(_backgroundView, "setFrame:", backgroundRect); + var auxiliaryViewHeight = 5.0; + if (_auxiliaryView) + { + auxiliaryViewHeight = CGRectGetHeight(objj_msgSend(_auxiliaryView, "frame")); + objj_msgSend(_auxiliaryView, "setFrame:", CGRectMake(LEFT_INSET, labelsViewHeight, CGRectGetWidth(backgroundRect) - LEFT_INSET - RIGHT_INSET, auxiliaryViewHeight)); + } + objj_msgSend(_separatorView, "setFrame:", CGRectMake(LEFT_INSET, labelsViewHeight + auxiliaryViewHeight, CGRectGetWidth(backgroundRect) - LEFT_INSET - RIGHT_INSET, 1.0)); + } + objj_msgSend(_contentView, "setFrame:", objj_msgSend(self, "contentRect")); +} +},["void"]), new objj_method(sel_getUid("addTabViewItem:"), function $CPTabView__addTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + objj_msgSend(self, "insertTabViewItem:atIndex:", aTabViewItem, objj_msgSend(_tabViewItems, "count")); +} +},["void","CPTabViewItem"]), new objj_method(sel_getUid("insertTabViewItem:atIndex:"), function $CPTabView__insertTabViewItem_atIndex_(self, _cmd, aTabViewItem, anIndex) +{ with(self) +{ + if (!_labelsView) + objj_msgSend(self, "_createBezelBorder"); + objj_msgSend(_tabViewItems, "insertObject:atIndex:", aTabViewItem, anIndex); + objj_msgSend(_labelsView, "tabView:didAddTabViewItem:", self, aTabViewItem); + objj_msgSend(aTabViewItem, "_setTabView:", self); + if (objj_msgSend(_tabViewItems, "count") == 1) + objj_msgSend(self, "selectFirstTabViewItem:", self); + if (_delegateSelectors & CPTabViewDidChangeNumberOfTabViewItemsSelector) + objj_msgSend(_delegate, "tabViewDidChangeNumberOfTabViewItems:", self); +} +},["void","CPTabViewItem","unsigned"]), new objj_method(sel_getUid("removeTabViewItem:"), function $CPTabView__removeTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + var index = objj_msgSend(self, "indexOfTabViewItem:", aTabViewItem); + objj_msgSend(_tabViewItems, "removeObjectIdenticalTo:", aTabViewItem); + objj_msgSend(_labelsView, "tabView:didRemoveTabViewItemAtIndex:", self, index); + objj_msgSend(aTabViewItem, "_setTabView:", nil); + if (_delegateSelectors & CPTabViewDidChangeNumberOfTabViewItemsSelector) + objj_msgSend(_delegate, "tabViewDidChangeNumberOfTabViewItems:", self); +} +},["void","CPTabViewItem"]), new objj_method(sel_getUid("indexOfTabViewItem:"), function $CPTabView__indexOfTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + return objj_msgSend(_tabViewItems, "indexOfObjectIdenticalTo:", aTabViewItem); +} +},["int","CPTabViewItem"]), new objj_method(sel_getUid("indexOfTabViewItemWithIdentifier:"), function $CPTabView__indexOfTabViewItemWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + var index = 0, + count = objj_msgSend(_tabViewItems, "count"); + for (; index < count; ++index) + if (objj_msgSend(objj_msgSend(_tabViewItems[index], "identifier"), "isEqual:", anIdentifier)) + return index; + return index; +} +},["int","CPString"]), new objj_method(sel_getUid("numberOfTabViewItems"), function $CPTabView__numberOfTabViewItems(self, _cmd) +{ with(self) +{ + return objj_msgSend(_tabViewItems, "count"); +} +},["unsigned"]), new objj_method(sel_getUid("tabViewItemAtIndex:"), function $CPTabView__tabViewItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return _tabViewItems[anIndex]; +} +},["CPTabViewItem","unsigned"]), new objj_method(sel_getUid("tabViewItems"), function $CPTabView__tabViewItems(self, _cmd) +{ with(self) +{ + return _tabViewItems; +} +},["CPArray"]), new objj_method(sel_getUid("selectFirstTabViewItem:"), function $CPTabView__selectFirstTabViewItem_(self, _cmd, aSender) +{ with(self) +{ + var count = objj_msgSend(_tabViewItems, "count"); + if (count) + objj_msgSend(self, "selectTabViewItemAtIndex:", 0); +} +},["void","id"]), new objj_method(sel_getUid("selectLastTabViewItem:"), function $CPTabView__selectLastTabViewItem_(self, _cmd, aSender) +{ with(self) +{ + var count = objj_msgSend(_tabViewItems, "count"); + if (count) + objj_msgSend(self, "selectTabViewItemAtIndex:", count - 1); +} +},["void","id"]), new objj_method(sel_getUid("selectNextTabViewItem:"), function $CPTabView__selectNextTabViewItem_(self, _cmd, aSender) +{ with(self) +{ + if (!_selectedTabViewItem) + return; + var index = objj_msgSend(self, "indexOfTabViewItem:", _selectedTabViewItem), + count = objj_msgSend(_tabViewItems, "count"); + objj_msgSend(self, "selectTabViewItemAtIndex:", index + 1 % count); +} +},["void","id"]), new objj_method(sel_getUid("selectPreviousTabViewItem:"), function $CPTabView__selectPreviousTabViewItem_(self, _cmd, aSender) +{ with(self) +{ + if (!_selectedTabViewItem) + return; + var index = objj_msgSend(self, "indexOfTabViewItem:", _selectedTabViewItem), + count = objj_msgSend(_tabViewItems, "count"); + objj_msgSend(self, "selectTabViewItemAtIndex:", index == 0 ? count : index - 1); +} +},["void","id"]), new objj_method(sel_getUid("selectTabViewItem:"), function $CPTabView__selectTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + if ((_delegateSelectors & CPTabViewShouldSelectTabViewItemSelector) && !objj_msgSend(_delegate, "tabView:shouldSelectTabViewItem:", self, aTabViewItem)) + return; + if (_delegateSelectors & CPTabViewWillSelectTabViewItemSelector) + objj_msgSend(_delegate, "tabView:willSelectTabViewItem:", self, aTabViewItem); + if (_selectedTabViewItem) + { + _selectedTabViewItem._tabState = CPBackgroundTab; + objj_msgSend(_labelsView, "tabView:didChangeStateOfTabViewItem:", self, _selectedTabViewItem); + } + _selectedTabViewItem = aTabViewItem; + _selectedTabViewItem._tabState = CPSelectedTab; + var _previousContentView = _contentView; + _contentView = objj_msgSend(_selectedTabViewItem, "view"); + if (_previousContentView !== _contentView) + { + objj_msgSend(_previousContentView, "removeFromSuperview"); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(self, "addSubview:", _contentView); + } + var _previousAuxiliaryView = _auxiliaryView; + _auxiliaryView = objj_msgSend(_selectedTabViewItem, "auxiliaryView"); + if (_previousAuxiliaryView !== _auxiliaryView) + { + objj_msgSend(_previousAuxiliaryView, "removeFromSuperview"); + objj_msgSend(_auxiliaryView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(self, "addSubview:", _auxiliaryView); + } + objj_msgSend(_labelsView, "tabView:didChangeStateOfTabViewItem:", self, _selectedTabViewItem); + objj_msgSend(self, "layoutSubviews"); + if (_delegateSelectors & CPTabViewDidSelectTabViewItemSelector) + objj_msgSend(_delegate, "tabView:didSelectTabViewItem:", self, aTabViewItem); +} +},["void","CPTabViewItem"]), new objj_method(sel_getUid("selectTabViewItemAtIndex:"), function $CPTabView__selectTabViewItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(self, "selectTabViewItem:", _tabViewItems[anIndex]); +} +},["void","unsigned"]), new objj_method(sel_getUid("selectedTabViewItem"), function $CPTabView__selectedTabViewItem(self, _cmd) +{ with(self) +{ + return _selectedTabViewItem; +} +},["CPTabViewItem"]), new objj_method(sel_getUid("setTabViewType:"), function $CPTabView__setTabViewType_(self, _cmd, aTabViewType) +{ with(self) +{ + if (_tabViewType == aTabViewType) + return; + _tabViewType = aTabViewType; + if (_tabViewType == CPNoTabsBezelBorder || _tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder) + objj_msgSend(_labelsView, "removeFromSuperview"); + else if (_labelsView && !objj_msgSend(_labelsView, "superview")) + objj_msgSend(self, "addSubview:", _labelsView); + if (_tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder) + objj_msgSend(_backgroundView, "removeFromSuperview"); + else if (_backgroundView && !objj_msgSend(_backgroundView, "superview")) + objj_msgSend(self, "addSubview:", _backgroundView); + objj_msgSend(self, "layoutSubviews"); +} +},["void","CPTabViewType"]), new objj_method(sel_getUid("tabViewType"), function $CPTabView__tabViewType(self, _cmd) +{ with(self) +{ + return _tabViewType; +} +},["CPTabViewType"]), new objj_method(sel_getUid("contentRect"), function $CPTabView__contentRect(self, _cmd) +{ with(self) +{ + var contentRect = CGRectMakeCopy(objj_msgSend(self, "bounds")); + if (_tabViewType == CPTopTabsBezelBorder) + { + var labelsViewHeight = objj_msgSend(_CPTabLabelsView, "height"), + auxiliaryViewHeight = _auxiliaryView ? CGRectGetHeight(objj_msgSend(_auxiliaryView, "frame")) : 5.0, + separatorViewHeight = 1.0; + contentRect.origin.y += labelsViewHeight + auxiliaryViewHeight + separatorViewHeight; + contentRect.size.height -= labelsViewHeight + auxiliaryViewHeight + separatorViewHeight * 2.0; + contentRect.origin.x += LEFT_INSET; + contentRect.size.width -= LEFT_INSET + RIGHT_INSET; + } + return contentRect; +} +},["CGRect"]), new objj_method(sel_getUid("delegate"), function $CPTabView__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("setDelegate:"), function $CPTabView__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate == aDelegate) + return; + _delegate = aDelegate; + _delegateSelectors = 0; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tabView:shouldSelectTabViewItem:"))) + _delegateSelectors |= CPTabViewShouldSelectTabViewItemSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tabView:willSelectTabViewItem:"))) + _delegateSelectors |= CPTabViewWillSelectTabViewItemSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tabView:didSelectTabViewItem:"))) + _delegateSelectors |= CPTabViewDidSelectTabViewItemSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tabViewDidChangeNumberOfTabViewItems:"))) + _delegateSelectors |= CPTabViewDidChangeNumberOfTabViewItemsSelector; +} +},["void","id"]), new objj_method(sel_getUid("mouseDown:"), function $CPTabView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var location = objj_msgSend(_labelsView, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + tabViewItem = objj_msgSend(_labelsView, "representedTabViewItemAtPoint:", location); + if (tabViewItem) + objj_msgSend(self, "selectTabViewItem:", tabViewItem); +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPTabView__initialize(self, _cmd) +{ with(self) +{ + if (self != CPTabView) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self), + emptyImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initByReferencingFile:size:", "", CGSizeMake(7.0, 0.0)), + backgroundImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/CPTabViewBezelBackgroundCenter.png"), CGSizeMake(1.0, 1.0)), + bezelBorderLeftImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/CPTabViewBezelBorderLeft.png"), CGSizeMake(7.0, 1.0)), + bezerBorderImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/CPTabViewBezelBorder.png"), CGSizeMake(1.0, 1.0)), + bezelBorderRightImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/CPTabViewBezelBorderRight.png"), CGSizeMake(7.0, 1.0)); + CPTabViewBezelBorderBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + emptyImage, + emptyImage, + emptyImage, + bezelBorderLeftImage, + backgroundImage, + bezelBorderRightImage, + bezelBorderLeftImage, + bezerBorderImage, + bezelBorderRightImage + ])); + CPTabViewBezelBorderColor = objj_msgSend(CPColor, "colorWithPatternImage:", bezerBorderImage); +} +},["void"]), new objj_method(sel_getUid("bezelBorderColor"), function $CPTabView__bezelBorderColor(self, _cmd) +{ with(self) +{ + return CPTabViewBezelBorderColor; +} +},["CPColor"])]); +} +var CPTabViewItemsKey = "CPTabViewItemsKey", + CPTabViewSelectedItemKey = "CPTabViewSelectedItemKey", + CPTabViewTypeKey = "CPTabViewTypeKey", + CPTabViewDelegateKey = "CPTabViewDelegateKey"; +{ +var the_class = objj_getClass("CPTabView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTabView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTabView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabView").super_class }, "initWithCoder:", aCoder)) + { + _tabViewType = objj_msgSend(aCoder, "decodeIntForKey:", CPTabViewTypeKey); + _tabViewItems = []; + objj_msgSend(self, "_createBezelBorder"); + var items = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemsKey); + for (var i = 0; items && i < items.length; i++) + objj_msgSend(self, "insertTabViewItem:atIndex:", items[i], i); + var selected = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewSelectedItemKey); + if (selected) + objj_msgSend(self, "selectTabViewItem:", selected); + objj_msgSend(self, "setDelegate:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewDelegateKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTabView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + var actualSubviews = _subviews; + _subviews = []; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabView").super_class }, "encodeWithCoder:", aCoder); + _subviews = actualSubviews; + objj_msgSend(aCoder, "encodeObject:forKey:", _tabViewItems, CPTabViewItemsKey);; + objj_msgSend(aCoder, "encodeObject:forKey:", _selectedTabViewItem, CPTabViewSelectedItemKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _tabViewType, CPTabViewTypeKey); + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _delegate, CPTabViewDelegateKey); +} +},["void","CPCoder"])]); +} +var _CPTabLabelsViewBackgroundColor = nil, + _CPTabLabelsViewInsideMargin = 10.0, + _CPTabLabelsViewOutsideMargin = 15.0; +{var the_class = objj_allocateClassPair(CPView, "_CPTabLabelsView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_tabView"), new objj_ivar("_tabLabels")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPTabLabelsView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTabLabelsView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _tabLabels = []; + objj_msgSend(self, "setBackgroundColor:", _CPTabLabelsViewBackgroundColor); + objj_msgSend(self, "setFrameSize:", CGSizeMake(CGRectGetWidth(aFrame), 26.0)); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setTabView:"), function $_CPTabLabelsView__setTabView_(self, _cmd, aTabView) +{ with(self) +{ + _tabView = aTabView; +} +},["void","CPTabView"]), new objj_method(sel_getUid("tabView"), function $_CPTabLabelsView__tabView(self, _cmd) +{ with(self) +{ + return _tabView; +} +},["CPTabView"]), new objj_method(sel_getUid("tabView:didAddTabViewItem:"), function $_CPTabLabelsView__tabView_didAddTabViewItem_(self, _cmd, aTabView, aTabViewItem) +{ with(self) +{ + var label = objj_msgSend(objj_msgSend(_CPTabLabel, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(label, "setTabViewItem:", aTabViewItem); + _tabLabels.push(label); + objj_msgSend(self, "addSubview:", label); + objj_msgSend(self, "layoutSubviews"); +} +},["void","CPTabView","CPTabViewItem"]), new objj_method(sel_getUid("tabView:didRemoveTabViewItemAtIndex:"), function $_CPTabLabelsView__tabView_didRemoveTabViewItemAtIndex_(self, _cmd, aTabView, index) +{ with(self) +{ + var label = _tabLabels[index]; + objj_msgSend(_tabLabels, "removeObjectAtIndex:", index); + objj_msgSend(label, "removeFromSuperview"); + objj_msgSend(self, "layoutSubviews"); +} +},["void","CPTabView","unsigned"]), new objj_method(sel_getUid("tabView:didChangeStateOfTabViewItem:"), function $_CPTabLabelsView__tabView_didChangeStateOfTabViewItem_(self, _cmd, aTabView, aTabViewItem) +{ with(self) +{ + objj_msgSend(_tabLabels[objj_msgSend(aTabView, "indexOfTabViewItem:", aTabViewItem)], "setTabState:", objj_msgSend(aTabViewItem, "tabState")); + } +},["void","CPTabView","CPTabViewItem"]), new objj_method(sel_getUid("representedTabViewItemAtPoint:"), function $_CPTabLabelsView__representedTabViewItemAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var index = 0, + count = _tabLabels.length; + for (; index < count; ++index) + { + var label = _tabLabels[index]; + if (CGRectContainsPoint(objj_msgSend(label, "frame"), aPoint)) + return objj_msgSend(label, "tabViewItem"); + } + return nil; +} +},["CPTabViewItem","CGPoint"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPTabLabelsView__layoutSubviews(self, _cmd) +{ with(self) +{ + var index = 0, + count = _tabLabels.length, + width = ((objj_msgSend(self, "bounds").size.width) - (count - 1) * _CPTabLabelsViewInsideMargin - 2 * _CPTabLabelsViewOutsideMargin) / count, + x = _CPTabLabelsViewOutsideMargin; + for (; index < count; ++index) + { + var label = _tabLabels[index], + frame = { origin: { x:x, y:8.0 }, size: { width:width, height:18.0 } }; + objj_msgSend(label, "setFrame:", frame); + x = (frame.origin.x + frame.size.width) + _CPTabLabelsViewInsideMargin; + } +} +},["void"]), new objj_method(sel_getUid("setFrameSize:"), function $_CPTabLabelsView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(objj_msgSend(self, "frame").size, aSize)) + return; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTabLabelsView").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "layoutSubviews"); +} +},["void","CGSize"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPTabLabelsView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPTabLabelsView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + _CPTabLabelsViewBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelsViewLeft.png"), CGSizeMake(12.0, 26.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelsViewCenter.png"), CGSizeMake(1.0, 26.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelsViewRight.png"), CGSizeMake(12.0, 26.0)) + ], NO)); +} +},["void"]), new objj_method(sel_getUid("height"), function $_CPTabLabelsView__height(self, _cmd) +{ with(self) +{ + return 26.0; +} +},["float"])]); +} +var _CPTabLabelBackgroundColor = nil, + _CPTabLabelSelectedBackgroundColor = nil; +{var the_class = objj_allocateClassPair(CPView, "_CPTabLabel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_tabViewItem"), new objj_ivar("_labelField")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPTabLabel__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTabLabel").super_class }, "initWithFrame:", aFrame); + if (self) + { + _labelField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_labelField, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(_labelField, "setFrame:", CGRectMake(5.0, 0.0, CGRectGetWidth(aFrame) - 10.0, 20.0)); + objj_msgSend(_labelField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_labelField, "setFont:", objj_msgSend(CPFont, "boldSystemFontOfSize:", 11.0)); + objj_msgSend(self, "addSubview:", _labelField); + objj_msgSend(self, "setTabState:", CPBackgroundTab); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setTabState:"), function $_CPTabLabel__setTabState_(self, _cmd, aTabState) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", aTabState == CPSelectedTab ? _CPTabLabelSelectedBackgroundColor : _CPTabLabelBackgroundColor); +} +},["void","CPTabState"]), new objj_method(sel_getUid("setTabViewItem:"), function $_CPTabLabel__setTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + _tabViewItem = aTabViewItem; + objj_msgSend(self, "update"); +} +},["void","CPTabViewItem"]), new objj_method(sel_getUid("tabViewItem"), function $_CPTabLabel__tabViewItem(self, _cmd) +{ with(self) +{ + return _tabViewItem; +} +},["CPTabViewItem"]), new objj_method(sel_getUid("update"), function $_CPTabLabel__update(self, _cmd) +{ with(self) +{ + objj_msgSend(_labelField, "setStringValue:", objj_msgSend(_tabViewItem, "label")); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPTabLabel__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPTabLabel, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + _CPTabLabelBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelBackgroundLeft.png"), CGSizeMake(6.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelBackgroundCenter.png"), CGSizeMake(1.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelBackgroundRight.png"), CGSizeMake(6.0, 18.0)) + ], NO)); + _CPTabLabelSelectedBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelSelectedLeft.png"), CGSizeMake(3.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelSelectedCenter.png"), CGSizeMake(1.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelSelectedRight.png"), CGSizeMake(3.0, 18.0)) + ], NO)); +} +},["void"])]); +} + +p;15;CPTabViewItem.jt;4321;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPView.jt;4256;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("AppKit/CPView.j", NO); +CPSelectedTab = 0; +CPBackgroundTab = 1; +CPPressedTab = 2; +{var the_class = objj_allocateClassPair(CPObject, "CPTabViewItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_identifier"), new objj_ivar("_label"), new objj_ivar("_view"), new objj_ivar("_auxiliaryView"), new objj_ivar("_tabView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTabViewItem__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithIdentifier:"), function $CPTabViewItem__initWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabViewItem").super_class }, "init"); + if (self) + _identifier = anIdentifier; + return self; +} +},["id","id"]), new objj_method(sel_getUid("setLabel:"), function $CPTabViewItem__setLabel_(self, _cmd, aLabel) +{ with(self) +{ + _label = aLabel; +} +},["void","CPString"]), new objj_method(sel_getUid("label"), function $CPTabViewItem__label(self, _cmd) +{ with(self) +{ + return _label; +} +},["CPString"]), new objj_method(sel_getUid("tabState"), function $CPTabViewItem__tabState(self, _cmd) +{ with(self) +{ + return _tabState; +} +},["CPTabState"]), new objj_method(sel_getUid("setIdentifier:"), function $CPTabViewItem__setIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + _identifier = anIdentifier; +} +},["void","id"]), new objj_method(sel_getUid("identifier"), function $CPTabViewItem__identifier(self, _cmd) +{ with(self) +{ + return _identifier; +} +},["id"]), new objj_method(sel_getUid("setView:"), function $CPTabViewItem__setView_(self, _cmd, aView) +{ with(self) +{ + _view = aView; +} +},["void","CPView"]), new objj_method(sel_getUid("view"), function $CPTabViewItem__view(self, _cmd) +{ with(self) +{ + return _view; +} +},["CPView"]), new objj_method(sel_getUid("setAuxiliaryView:"), function $CPTabViewItem__setAuxiliaryView_(self, _cmd, anAuxiliaryView) +{ with(self) +{ + _auxiliaryView = anAuxiliaryView; +} +},["void","CPView"]), new objj_method(sel_getUid("auxiliaryView"), function $CPTabViewItem__auxiliaryView(self, _cmd) +{ with(self) +{ + return _auxiliaryView; +} +},["CPView"]), new objj_method(sel_getUid("tabView"), function $CPTabViewItem__tabView(self, _cmd) +{ with(self) +{ + return _tabView; +} +},["CPTabView"]), new objj_method(sel_getUid("_setTabView:"), function $CPTabViewItem___setTabView_(self, _cmd, aView) +{ with(self) +{ + _tabView = aView; +} +},["void","CPTabView"])]); +} +var CPTabViewItemIdentifierKey = "CPTabViewItemIdentifierKey", + CPTabViewItemLabelKey = "CPTabViewItemLabelKey", + CPTabViewItemViewKey = "CPTabViewItemViewKey", + CPTabViewItemAuxViewKey = "CPTabViewItemAuxViewKey"; +{ +var the_class = objj_getClass("CPTabViewItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTabViewItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTabViewItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabViewItem").super_class }, "init"); + if (self) + { + _identifier = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemIdentifierKey); + _label = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemLabelKey); + _view = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemViewKey); + _auxiliaryView = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemAuxViewKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTabViewItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _identifier, CPTabViewItemIdentifierKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _label, CPTabViewItemLabelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _view, CPTabViewItemViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _auxiliaryView, CPTabViewItemAuxViewKey); +} +},["void","CPCoder"])]); +} + +p;8;CPText.jt;317;@STATIC;1.0;i;8;CPView.jt;287;objj_executeFile("CPView.j", YES); +CPEnterCharacter = "\u0003"; +CPBackspaceCharacter = "\u0008"; +CPTabCharacter = "\u0009"; +CPNewlineCharacter = "\u000a"; +CPFormFeedCharacter = "\u000c"; +CPCarriageReturnCharacter = "\u000d"; +CPBackTabCharacter = "\u0019"; +CPDeleteCharacter = "\u007f"; + +p;13;CPTextField.jt;43540;@STATIC;1.0;i;11;CPControl.ji;17;CPStringDrawing.ji;17;CPCompatibility.ji;21;_CPImageAndTextView.jt;43434;objj_executeFile("CPControl.j", YES); +objj_executeFile("CPStringDrawing.j", YES); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("_CPImageAndTextView.j", YES); +CPTextFieldSquareBezel = 0; +CPTextFieldRoundedBezel = 1; +CPTextFieldDidFocusNotification = "CPTextFieldDidFocusNotification"; +CPTextFieldDidBlurNotification = "CPTextFieldDidBlurNotification"; +var CPTextFieldDOMInputElement = nil, + CPTextFieldDOMPasswordInputElement = nil, + CPTextFieldDOMStandardInputElement = nil, + CPTextFieldInputOwner = nil, + CPTextFieldTextDidChangeValue = nil, + CPTextFieldInputResigning = NO, + CPTextFieldInputDidBlur = NO, + CPTextFieldInputIsActive = NO, + CPTextFieldCachedSelectStartFunction = nil, + CPTextFieldCachedDragFunction = nil, + CPTextFieldBlurFunction = nil; +var CPSecureTextFieldCharacter = "\u2022"; +{ +var the_class = objj_getClass("CPString") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPString\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("string"), function $CPString__string(self, _cmd) +{ with(self) +{ + return self; +} +},["CPString"])]); +} +CPTextFieldStateRounded = CPThemeState("rounded"); +CPTextFieldStatePlaceholder = CPThemeState("placeholder"); +{var the_class = objj_allocateClassPair(CPControl, "CPTextField"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isEditing"), new objj_ivar("_isEditable"), new objj_ivar("_isSelectable"), new objj_ivar("_isSecure"), new objj_ivar("_drawsBackground"), new objj_ivar("_textFieldBackgroundColor"), new objj_ivar("_placeholderString"), new objj_ivar("_delegate"), new objj_ivar("_textDidChangeValue"), new objj_ivar("_bezelStyle"), new objj_ivar("_isBordered"), new objj_ivar("_controlSize")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_inputElement"), function $CPTextField___inputElement(self, _cmd) +{ with(self) +{ + if (!CPTextFieldDOMInputElement) + { + CPTextFieldDOMInputElement = document.createElement("input"); + CPTextFieldDOMInputElement.style.position = "absolute"; + CPTextFieldDOMInputElement.style.border = "0px"; + CPTextFieldDOMInputElement.style.padding = "0px"; + CPTextFieldDOMInputElement.style.margin = "0px"; + CPTextFieldDOMInputElement.style.whiteSpace = "pre"; + CPTextFieldDOMInputElement.style.background = "transparent"; + CPTextFieldDOMInputElement.style.outline = "none"; + CPTextFieldBlurFunction = function(anEvent) + { + if (CPTextFieldInputOwner && CPTextFieldInputOwner._DOMElement != CPTextFieldDOMInputElement.parentNode) + return; + if (!CPTextFieldInputResigning) + { + objj_msgSend(objj_msgSend(CPTextFieldInputOwner, "window"), "makeFirstResponder:", nil); + return; + } + CPTextFieldHandleBlur(anEvent, CPTextFieldDOMInputElement); + CPTextFieldInputDidBlur = YES; + return true; + } + CPTextFieldHandleBlur = function(anEvent) + { + CPTextFieldInputOwner = nil; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + } + CPTextFieldDOMInputElement.onblur = CPTextFieldBlurFunction; + CPTextFieldDOMStandardInputElement = CPTextFieldDOMInputElement; + } + if (CPFeatureIsCompatible(CPInputTypeCanBeChangedFeature)) + { + if (objj_msgSend(self, "isSecure")) + CPTextFieldDOMInputElement.type = "password"; + else + CPTextFieldDOMInputElement.type = "text"; + return CPTextFieldDOMInputElement; + } + if (objj_msgSend(self, "isSecure")) + { + if (!CPTextFieldDOMPasswordInputElement) + { + CPTextFieldDOMPasswordInputElement = document.createElement("input"); + CPTextFieldDOMPasswordInputElement.style.position = "absolute"; + CPTextFieldDOMPasswordInputElement.style.border = "0px"; + CPTextFieldDOMPasswordInputElement.style.padding = "0px"; + CPTextFieldDOMPasswordInputElement.style.margin = "0px"; + CPTextFieldDOMPasswordInputElement.style.whiteSpace = "pre"; + CPTextFieldDOMPasswordInputElement.style.background = "transparent"; + CPTextFieldDOMPasswordInputElement.style.outline = "none"; + CPTextFieldDOMPasswordInputElement.type = "password"; + CPTextFieldDOMPasswordInputElement.onblur = CPTextFieldBlurFunction; + } + CPTextFieldDOMInputElement = CPTextFieldDOMPasswordInputElement; + } + else + { + CPTextFieldDOMInputElement = CPTextFieldDOMStandardInputElement; + } + return CPTextFieldDOMInputElement; +} +},["DOMElement"]), new objj_method(sel_getUid("initWithFrame:"), function $CPTextField__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "initWithFrame:", aFrame); + if (self) + { + objj_msgSend(self, "setStringValue:", ""); + objj_msgSend(self, "setPlaceholderString:", ""); + _sendActionOn = CPKeyUpMask | CPKeyDownMask; + objj_msgSend(self, "setValue:forThemeAttribute:", CPLeftTextAlignment, "alignment"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setEditable:"), function $CPTextField__setEditable_(self, _cmd, shouldBeEditable) +{ with(self) +{ + if (_isEditable === shouldBeEditable) + return; + _isEditable = shouldBeEditable; + if(shouldBeEditable) + _isSelectable = YES; + if (!shouldBeEditable && objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self) + objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", nil); +} +},["void","BOOL"]), new objj_method(sel_getUid("isEditable"), function $CPTextField__isEditable(self, _cmd) +{ with(self) +{ + return _isEditable; +} +},["BOOL"]), new objj_method(sel_getUid("setEnabled:"), function $CPTextField__setEnabled_(self, _cmd, shouldBeEnabled) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "setEnabled:", shouldBeEnabled); + if (!shouldBeEnabled && objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self) + objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", nil); +} +},["void","BOOL"]), new objj_method(sel_getUid("setSelectable:"), function $CPTextField__setSelectable_(self, _cmd, aFlag) +{ with(self) +{ + _isSelectable = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("isSelectable"), function $CPTextField__isSelectable(self, _cmd) +{ with(self) +{ + return _isSelectable; +} +},["BOOL"]), new objj_method(sel_getUid("setSecure:"), function $CPTextField__setSecure_(self, _cmd, aFlag) +{ with(self) +{ + _isSecure = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("isSecure"), function $CPTextField__isSecure(self, _cmd) +{ with(self) +{ + return _isSecure; +} +},["BOOL"]), new objj_method(sel_getUid("setBezeled:"), function $CPTextField__setBezeled_(self, _cmd, shouldBeBezeled) +{ with(self) +{ + if (shouldBeBezeled) + objj_msgSend(self, "setThemeState:", CPThemeStateBezeled); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateBezeled); +} +},["void","BOOL"]), new objj_method(sel_getUid("isBezeled"), function $CPTextField__isBezeled(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateBezeled); +} +},["BOOL"]), new objj_method(sel_getUid("setBezelStyle:"), function $CPTextField__setBezelStyle_(self, _cmd, aBezelStyle) +{ with(self) +{ + var shouldBeRounded = aBezelStyle === CPTextFieldRoundedBezel; + if (shouldBeRounded) + objj_msgSend(self, "setThemeState:", CPTextFieldStateRounded); + else + objj_msgSend(self, "unsetThemeState:", CPTextFieldStateRounded); +} +},["void","CPTextFieldBezelStyle"]), new objj_method(sel_getUid("bezelStyle"), function $CPTextField__bezelStyle(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "hasThemeState:", CPTextFieldStateRounded)) + return CPTextFieldRoundedBezel; + return CPTextFieldSquareBezel; +} +},["CPTextFieldBezelStyle"]), new objj_method(sel_getUid("setBordered:"), function $CPTextField__setBordered_(self, _cmd, shouldBeBordered) +{ with(self) +{ + if (shouldBeBordered) + objj_msgSend(self, "setThemeState:", CPThemeStateBordered); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateBordered); +} +},["void","BOOL"]), new objj_method(sel_getUid("isBordered"), function $CPTextField__isBordered(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateBordered); +} +},["BOOL"]), new objj_method(sel_getUid("setDrawsBackground:"), function $CPTextField__setDrawsBackground_(self, _cmd, shouldDrawBackground) +{ with(self) +{ + if (_drawsBackground == shouldDrawBackground) + return; + _drawsBackground = shouldDrawBackground; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","BOOL"]), new objj_method(sel_getUid("drawsBackground"), function $CPTextField__drawsBackground(self, _cmd) +{ with(self) +{ + return _drawsBackground; +} +},["BOOL"]), new objj_method(sel_getUid("setTextFieldBackgroundColor:"), function $CPTextField__setTextFieldBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textFieldBackgroundColor == aColor) + return; + _textFieldBackgroundColor = aColor; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("textFieldBackgroundColor"), function $CPTextField__textFieldBackgroundColor(self, _cmd) +{ with(self) +{ + return _textFieldBackgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPTextField__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isEditable") && objj_msgSend(self, "isEnabled"); +} +},["BOOL"]), new objj_method(sel_getUid("becomeFirstResponder"), function $CPTextField__becomeFirstResponder(self, _cmd) +{ with(self) +{ + if (CPTextFieldInputOwner && objj_msgSend(CPTextFieldInputOwner, "window") !== objj_msgSend(self, "window")) + objj_msgSend(objj_msgSend(CPTextFieldInputOwner, "window"), "makeFirstResponder:", nil); + objj_msgSend(self, "setThemeState:", CPThemeStateEditing); + objj_msgSend(self, "_updatePlaceholderState"); + objj_msgSend(self, "setNeedsLayout"); + _isEditing = NO; + var string = objj_msgSend(self, "stringValue"), + element = objj_msgSend(self, "_inputElement"); + element.value = string; + element.style.color = objj_msgSend(objj_msgSend(self, "currentValueForThemeAttribute:", "text-color"), "cssString"); + element.style.font = objj_msgSend(objj_msgSend(self, "currentValueForThemeAttribute:", "font"), "cssString"); + element.style.zIndex = 1000; + switch (objj_msgSend(self, "alignment")) + { + case CPCenterTextAlignment: element.style.textAlign = "center"; + break; + case CPRightTextAlignment: element.style.textAlign = "right"; + break; + default: element.style.textAlign = "left"; + } + var contentRect = objj_msgSend(self, "contentRectForBounds:", objj_msgSend(self, "bounds")); + element.style.top = (contentRect.origin.y) + "px"; + element.style.left = ((contentRect.origin.x) - 1) + "px"; + element.style.width = (contentRect.size.width) + "px"; + element.style.height = (contentRect.size.height) + "px"; + _DOMElement.appendChild(element); + window.setTimeout(function() + { + element.focus(); + objj_msgSend(self, "textDidFocus:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPTextFieldDidFocusNotification, self, nil)); + CPTextFieldInputOwner = self; + }, 0.0); + element.value = objj_msgSend(self, "stringValue"); + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + CPTextFieldInputIsActive = YES; + if (document.attachEvent) + { + CPTextFieldCachedSelectStartFunction = objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.onselectstart; + CPTextFieldCachedDragFunction = objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.ondrag; + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.ondrag = function () {}; + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.onselectstart = function () {}; + } + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("resignFirstResponder"), function $CPTextField__resignFirstResponder(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "unsetThemeState:", CPThemeStateEditing); + objj_msgSend(self, "_updatePlaceholderState"); + objj_msgSend(self, "setNeedsLayout"); + var element = objj_msgSend(self, "_inputElement"); + objj_msgSend(self, "setObjectValue:", element.value); + CPTextFieldInputResigning = YES; + element.blur(); + if (!CPTextFieldInputDidBlur) + CPTextFieldBlurFunction(); + CPTextFieldInputDidBlur = NO; + CPTextFieldInputResigning = NO; + if (element.parentNode == _DOMElement) + element.parentNode.removeChild(element); + CPTextFieldInputIsActive = NO; + if (document.attachEvent) + { + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.ondrag = CPTextFieldCachedDragFunction; + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.onselectstart = CPTextFieldCachedSelectStartFunction; + CPTextFieldCachedSelectStartFunction = nil; + CPTextFieldCachedDragFunction = nil; + } + if (_isEditing) + { + _isEditing = NO; + objj_msgSend(self, "textDidEndEditing:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPControlTextDidEndEditingNotification, self, nil)); + if (objj_msgSend(self, "sendsActionOnEndEditing")) + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + } + objj_msgSend(self, "textDidBlur:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPTextFieldDidBlurNotification, self, nil)); + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("needsPanelToBecomeKey"), function $CPTextField__needsPanelToBecomeKey(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $CPTextField__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(self, "isEditable") && objj_msgSend(self, "isEnabled")) + return objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", self); + else if (objj_msgSend(self, "isSelectable")) + { + if (document.attachEvent) + { + CPTextFieldCachedSelectStartFunction = objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.onselectstart; + CPTextFieldCachedDragFunction = objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.ondrag; + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.ondrag = function () {}; + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.onselectstart = function () {}; + } + return objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + } + else + return objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPTextField__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isSelectable") && (!objj_msgSend(self, "isEditable") || !objj_msgSend(self, "isEnabled"))) + objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseUp:", anEvent); + else if (objj_msgSend(self, "isSelectable")) + { + if (document.attachEvent) + { + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.ondrag = CPTextFieldCachedDragFunction; + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.onselectstart = CPTextFieldCachedSelectStartFunction; + CPTextFieldCachedSelectStartFunction = nil + CPTextFieldCachedDragFunction = nil; + } + return objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + } +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $CPTextField__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isSelectable") && (!objj_msgSend(self, "isEditable") || !objj_msgSend(self, "isEnabled"))) + objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDragged:", anEvent); + else if (objj_msgSend(self, "isSelectable")) + return objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("keyUp:"), function $CPTextField__keyUp_(self, _cmd, anEvent) +{ with(self) +{ + var oldValue = objj_msgSend(self, "stringValue"); + objj_msgSend(self, "_setStringValue:", objj_msgSend(self, "_inputElement").value); + if (oldValue !== objj_msgSend(self, "stringValue")) + { + if (!_isEditing) + { + _isEditing = YES; + objj_msgSend(self, "textDidBeginEditing:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPControlTextDidBeginEditingNotification, self, nil)); + } + objj_msgSend(self, "textDidChange:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPControlTextDidChangeNotification, self, nil)); + } + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("keyDown:"), function $CPTextField__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(anEvent, "keyCode") === CPReturnKeyCode) + { + if (_isEditing) + { + _isEditing = NO; + objj_msgSend(self, "textDidEndEditing:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPControlTextDidEndEditingNotification, self, nil)); + } + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + objj_msgSend(self, "selectText:", nil); + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", NO); + } + else if (objj_msgSend(anEvent, "keyCode") === CPTabKeyCode) + { + if (objj_msgSend(anEvent, "modifierFlags") & CPShiftKeyMask) + objj_msgSend(objj_msgSend(self, "window"), "selectPreviousKeyView:", self); + else + objj_msgSend(objj_msgSend(self, "window"), "selectNextKeyView:", self); + if (objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "firstResponder"), "respondsToSelector:", sel_getUid("selectText:"))) + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "firstResponder"), "selectText:", self); + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", NO); + } + else + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","CPEvent"]), new objj_method(sel_getUid("textDidBlur:"), function $CPTextField__textDidBlur_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotification:", note); +} +},["void","CPNotification"]), new objj_method(sel_getUid("textDidFocus:"), function $CPTextField__textDidFocus_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotification:", note); +} +},["void","CPNotification"]), new objj_method(sel_getUid("objectValue"), function $CPTextField__objectValue(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "objectValue"); +} +},["id"]), new objj_method(sel_getUid("_setStringValue:"), function $CPTextField___setStringValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "objectValue"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "setObjectValue:", String(aValue)); + objj_msgSend(self, "_updatePlaceholderState"); + objj_msgSend(self, "didChangeValueForKey:", "objectValue"); +} +},["void","id"]), new objj_method(sel_getUid("setObjectValue:"), function $CPTextField__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "setObjectValue:", aValue); + if (CPTextFieldInputOwner === self || objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self) + objj_msgSend(self, "_inputElement").value = aValue; + objj_msgSend(self, "_updatePlaceholderState"); +} +},["void","id"]), new objj_method(sel_getUid("_updatePlaceholderState"), function $CPTextField___updatePlaceholderState(self, _cmd) +{ with(self) +{ + var string = objj_msgSend(self, "stringValue"); + if ((!string || string.length === 0) && !objj_msgSend(self, "hasThemeState:", CPThemeStateEditing)) + objj_msgSend(self, "setThemeState:", CPTextFieldStatePlaceholder); + else + objj_msgSend(self, "unsetThemeState:", CPTextFieldStatePlaceholder); +} +},["void"]), new objj_method(sel_getUid("setPlaceholderString:"), function $CPTextField__setPlaceholderString_(self, _cmd, aStringValue) +{ with(self) +{ + if (_placeholderString === aStringValue) + return; + _placeholderString = aStringValue; + if (objj_msgSend(self, "hasThemeState:", CPTextFieldStatePlaceholder)) + { + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } +} +},["void","CPString"]), new objj_method(sel_getUid("placeholderString"), function $CPTextField__placeholderString(self, _cmd) +{ with(self) +{ + return _placeholderString; +} +},["CPString"]), new objj_method(sel_getUid("sizeToFit"), function $CPTextField__sizeToFit(self, _cmd) +{ with(self) +{ + var size = objj_msgSend((objj_msgSend(self, "stringValue") || " "), "sizeWithFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "font")), + contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + minSize = objj_msgSend(self, "currentValueForThemeAttribute:", "min-size"), + maxSize = objj_msgSend(self, "currentValueForThemeAttribute:", "max-size"); + size.width = MAX(size.width + contentInset.left + contentInset.right, minSize.width); + size.height = MAX(size.height + contentInset.top + contentInset.bottom, minSize.height); + if (maxSize.width >= 0.0) + size.width = MIN(size.width, maxSize.width); + if (maxSize.height >= 0.0) + size.height = MIN(size.height, maxSize.height); + if (objj_msgSend(self, "isEditable")) + size.width = CGRectGetWidth(objj_msgSend(self, "frame")); + objj_msgSend(self, "setFrameSize:", size); +} +},["void"]), new objj_method(sel_getUid("selectText:"), function $CPTextField__selectText_(self, _cmd, sender) +{ with(self) +{ + var element = objj_msgSend(self, "_inputElement"); + if ((objj_msgSend(self, "isEditable") || objj_msgSend(self, "isSelectable"))) + { + if (objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self) + window.setTimeout(function() { element.select(); }, 0); + else if (objj_msgSend(self, "window") !== nil && objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", self)) + window.setTimeout(function() {objj_msgSend(self, "selectText:", sender);}, 0); + } +} +},["void","id"]), new objj_method(sel_getUid("copy:"), function $CPTextField__copy_(self, _cmd, sender) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + var selectedRange = objj_msgSend(self, "selectedRange"); + if (selectedRange.length < 1) + return; + var pasteboard = objj_msgSend(CPPasteboard, "generalPasteboard"), + stringValue = objj_msgSend(self, "stringValue"), + stringForPasting = objj_msgSend(stringValue, "substringWithRange:", selectedRange); + objj_msgSend(pasteboard, "declareTypes:owner:", [CPStringPboardType], nil); + objj_msgSend(pasteboard, "setString:forType:", stringForPasting, CPStringPboardType); + } +} +},["void","id"]), new objj_method(sel_getUid("cut:"), function $CPTextField__cut_(self, _cmd, sender) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + objj_msgSend(self, "copy:", sender); + objj_msgSend(self, "deleteBackward:", sender); + } +} +},["void","id"]), new objj_method(sel_getUid("paste:"), function $CPTextField__paste_(self, _cmd, sender) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + var pasteboard = objj_msgSend(CPPasteboard, "generalPasteboard"); + if (!objj_msgSend(objj_msgSend(pasteboard, "types"), "containsObject:", CPStringPboardType)) + return; + objj_msgSend(self, "deleteBackward:", sender); + var selectedRange = objj_msgSend(self, "selectedRange"), + stringValue = objj_msgSend(self, "stringValue"), + pasteString = objj_msgSend(pasteboard, "stringForType:", CPStringPboardType), + newValue = objj_msgSend(stringValue, "stringByReplacingCharactersInRange:withString:", selectedRange, pasteString); + objj_msgSend(self, "setStringValue:", newValue); + objj_msgSend(self, "setSelectedRange:", CPMakeRange(selectedRange.location+pasteString.length, 0)); + } +} +},["void","id"]), new objj_method(sel_getUid("selectedRange"), function $CPTextField__selectedRange(self, _cmd) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "window"), "firstResponder") !== self) + return CPMakeRange(0, 0); + try + { + var inputElement = objj_msgSend(self, "_inputElement"), + selectionStart = inputElement.selectionStart, + selectionEnd = inputElement.selectionEnd; + if (objj_msgSend(selectionStart, "isKindOfClass:", CPNumber)) + return CPMakeRange(selectionStart, selectionEnd - selectionStart); + var theDocument = inputElement.ownerDocument || inputElement.document, + selectionRange = theDocument.selection.createRange(), + range = inputElement.createTextRange(); + if (range.inRange(selectionRange)) + { + range.setEndPoint('EndToStart', selectionRange); + return CPMakeRange(range.text.length, selectionRange.text.length); + } + } + catch (e) + { + } + return CGMakeRange(0, 0); +} +},["CPRange"]), new objj_method(sel_getUid("setSelectedRange:"), function $CPTextField__setSelectedRange_(self, _cmd, aRange) +{ with(self) +{ + if (!objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self) + return; + var inputElement = objj_msgSend(self, "_inputElement"); + try + { + if (objj_msgSend(inputElement.selectionStart, "isKindOfClass:", CPNumber)) + { + inputElement.selectionStart = aRange.location; + inputElement.selectionEnd = CPMaxRange(aRange); + } + else + { + var theDocument = inputElement.ownerDocument || inputElement.document, + existingRange = theDocument.selection.createRange(), + range = inputElement.createTextRange(); + if (range.inRange(existingRange)) + { + range.collapse(true); + range.move('character', aRange.location); + range.moveEnd('character', aRange.length); + range.select(); + } + } + } + catch (e) + { + } +} +},["void","CPRange"]), new objj_method(sel_getUid("selectAll:"), function $CPTextField__selectAll_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "selectText:", sender); +} +},["void","id"]), new objj_method(sel_getUid("deleteBackward:"), function $CPTextField__deleteBackward_(self, _cmd, sender) +{ with(self) +{ + var selectedRange = objj_msgSend(self, "selectedRange"), + stringValue = objj_msgSend(self, "stringValue"), + newValue = objj_msgSend(stringValue, "stringByReplacingCharactersInRange:withString:", selectedRange, ""); + objj_msgSend(self, "setStringValue:", newValue); + objj_msgSend(self, "setSelectedRange:", CPMakeRange(selectedRange.location, 0)); +} +},["void","id"]), new objj_method(sel_getUid("setDelegate:"), function $CPTextField__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_delegate) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPControlTextDidBeginEditingNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPControlTextDidChangeNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPControlTextDidEndEditingNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTextFieldDidFocusNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTextFieldDidBlurNotification, self); + } + _delegate = aDelegate; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidBeginEditing:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidBeginEditing:"), CPControlTextDidBeginEditingNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidChange:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidChange:"), CPControlTextDidChangeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidEndEditing:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidEndEditing:"), CPControlTextDidEndEditingNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidFocus:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidFocus:"), CPTextFieldDidFocusNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidBlur:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidBlur:"), CPTextFieldDidBlurNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPTextField__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("contentRectForBounds:"), function $CPTextField__contentRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"); + if (!contentInset) + return bounds; + bounds.origin.x += contentInset.left; + bounds.origin.y += contentInset.top; + bounds.size.width -= contentInset.left + contentInset.right; + bounds.size.height -= contentInset.top + contentInset.bottom; + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("bezelRectForBounds:"), function $CPTextField__bezelRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"); + if (((bezelInset).top === 0 && (bezelInset).right === 0 && (bezelInset).bottom === 0 && (bezelInset).left === 0)) + return bounds; + bounds.origin.x += bezelInset.left; + bounds.origin.y += bezelInset.top; + bounds.size.width -= bezelInset.left + bezelInset.right; + bounds.size.height -= bezelInset.top + bezelInset.bottom; + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPTextField__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "bezel-view") + return objj_msgSend(self, "bezelRectForBounds:", objj_msgSend(self, "bounds")); + else if (aName === "content-view") + return objj_msgSend(self, "contentRectForBounds:", objj_msgSend(self, "bounds")); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPTextField__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "bezel-view") + { + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; + } + else + { + var view = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; + } + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "createEphemeralSubviewNamed:", aName); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPTextField__layoutSubviews(self, _cmd) +{ with(self) +{ + var bezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "bezel-view", CPWindowBelow, "content-view"); + if (bezelView) + objj_msgSend(bezelView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-color")); + var contentView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "content-view", CPWindowAbove, "bezel-view"); + if (contentView) + { + objj_msgSend(contentView, "setHidden:", objj_msgSend(self, "hasThemeState:", CPThemeStateEditing)); + var string = ""; + if (objj_msgSend(self, "hasThemeState:", CPTextFieldStatePlaceholder)) + string = objj_msgSend(self, "placeholderString"); + else + { + string = objj_msgSend(self, "stringValue"); + if (objj_msgSend(self, "isSecure")) + string = secureStringForString(string); + } + objj_msgSend(contentView, "setText:", string); + objj_msgSend(contentView, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-color")); + objj_msgSend(contentView, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "font")); + objj_msgSend(contentView, "setAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "alignment")); + objj_msgSend(contentView, "setVerticalAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "vertical-alignment")); + objj_msgSend(contentView, "setLineBreakMode:", objj_msgSend(self, "currentValueForThemeAttribute:", "line-break-mode")); + objj_msgSend(contentView, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-color")); + objj_msgSend(contentView, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-offset")); + } +} +},["void"]), new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"), function $CPTextField__takeValueFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + var count = objects.length, + value = objj_msgSend(objects[0], "valueForKeyPath:", aKeyPath); + objj_msgSend(self, "setStringValue:", value); + objj_msgSend(self, "setPlaceholderString:", ""); + while (count-- > 1) + if (value !== objj_msgSend(objects[count], "valueForKeyPath:", aKeyPath)) + { + objj_msgSend(self, "setPlaceholderString:", "Multiple Values"); + objj_msgSend(self, "setStringValue:", ""); + } +} +},["void","CPString","CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:"), function $CPTextField__textFieldWithStringValue_placeholder_width_(self, _cmd, aStringValue, aPlaceholder, aWidth) +{ with(self) +{ + return objj_msgSend(self, "textFieldWithStringValue:placeholder:width:theme:", aStringValue, aPlaceholder, aWidth, objj_msgSend(CPTheme, "defaultTheme")); +} +},["CPTextField","CPString","CPString","float"]), new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:theme:"), function $CPTextField__textFieldWithStringValue_placeholder_width_theme_(self, _cmd, aStringValue, aPlaceholder, aWidth, aTheme) +{ with(self) +{ + var textField = objj_msgSend(objj_msgSend(self, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, aWidth, 29.0)); + objj_msgSend(textField, "setTheme:", aTheme); + objj_msgSend(textField, "setStringValue:", aStringValue); + objj_msgSend(textField, "setPlaceholderString:", aPlaceholder); + objj_msgSend(textField, "setBordered:", YES); + objj_msgSend(textField, "setBezeled:", YES); + objj_msgSend(textField, "setEditable:", YES); + objj_msgSend(textField, "sizeToFit"); + return textField; +} +},["CPTextField","CPString","CPString","float","CPTheme"]), new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:"), function $CPTextField__roundedTextFieldWithStringValue_placeholder_width_(self, _cmd, aStringValue, aPlaceholder, aWidth) +{ with(self) +{ + return objj_msgSend(self, "roundedTextFieldWithStringValue:placeholder:width:theme:", aStringValue, aPlaceholder, aWidth, objj_msgSend(CPTheme, "defaultTheme")); +} +},["CPTextField","CPString","CPString","float"]), new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:theme:"), function $CPTextField__roundedTextFieldWithStringValue_placeholder_width_theme_(self, _cmd, aStringValue, aPlaceholder, aWidth, aTheme) +{ with(self) +{ + var textField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, aWidth, 29.0)); + objj_msgSend(textField, "setTheme:", aTheme); + objj_msgSend(textField, "setStringValue:", aStringValue); + objj_msgSend(textField, "setPlaceholderString:", aPlaceholder); + objj_msgSend(textField, "setBezelStyle:", CPTextFieldRoundedBezel); + objj_msgSend(textField, "setBordered:", YES); + objj_msgSend(textField, "setBezeled:", YES); + objj_msgSend(textField, "setEditable:", YES); + objj_msgSend(textField, "sizeToFit"); + return textField; +} +},["CPTextField","CPString","CPString","float","CPTheme"]), new objj_method(sel_getUid("labelWithTitle:"), function $CPTextField__labelWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(self, "labelWithTitle:theme:", aTitle, objj_msgSend(CPTheme, "defaultTheme")); +} +},["CPTextField","CPString"]), new objj_method(sel_getUid("labelWithTitle:theme:"), function $CPTextField__labelWithTitle_theme_(self, _cmd, aTitle, aTheme) +{ with(self) +{ + var textField = objj_msgSend(objj_msgSend(self, "alloc"), "init"); + objj_msgSend(textField, "setStringValue:", aTitle); + objj_msgSend(textField, "sizeToFit"); + return textField; +} +},["CPTextField","CPString","CPTheme"]), new objj_method(sel_getUid("themeClass"), function $CPTextField__themeClass(self, _cmd) +{ with(self) +{ + return "textfield"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPTextField__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [{ top:(0), right:(0), bottom:(0), left:(0) }, { top:(2.0), right:(2.0), bottom:(2.0), left:(2.0) }, objj_msgSend(CPNull, "null")], ["bezel-inset", "content-inset", "bezel-color"]); +} +},["id"])]); +} +var secureStringForString = function(aString) +{ + if (!aString) + return ""; + return Array(aString.length+1).join(CPSecureTextFieldCharacter); +} +var CPTextFieldIsEditableKey = "CPTextFieldIsEditableKey", + CPTextFieldIsSelectableKey = "CPTextFieldIsSelectableKey", + CPTextFieldIsBorderedKey = "CPTextFieldIsBorderedKey", + CPTextFieldIsBezeledKey = "CPTextFieldIsBezeledKey", + CPTextFieldBezelStyleKey = "CPTextFieldBezelStyleKey", + CPTextFieldDrawsBackgroundKey = "CPTextFieldDrawsBackgroundKey", + CPTextFieldLineBreakModeKey = "CPTextFieldLineBreakModeKey", + CPTextFieldAlignmentKey = "CPTextFieldAlignmentKey", + CPTextFieldBackgroundColorKey = "CPTextFieldBackgroundColorKey", + CPTextFieldPlaceholderStringKey = "CPTextFieldPlaceholderStringKey"; +{ +var the_class = objj_getClass("CPTextField") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTextField\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTextField__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "initWithCoder:", aCoder); + if (self) + { + objj_msgSend(self, "setEditable:", objj_msgSend(aCoder, "decodeBoolForKey:", CPTextFieldIsEditableKey)); + objj_msgSend(self, "setSelectable:", objj_msgSend(aCoder, "decodeBoolForKey:", CPTextFieldIsSelectableKey)); + objj_msgSend(self, "setDrawsBackground:", objj_msgSend(aCoder, "decodeBoolForKey:", CPTextFieldDrawsBackgroundKey)); + objj_msgSend(self, "setTextFieldBackgroundColor:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTextFieldBackgroundColorKey)); + objj_msgSend(self, "setLineBreakMode:", objj_msgSend(aCoder, "decodeIntForKey:", CPTextFieldLineBreakModeKey)); + objj_msgSend(self, "setAlignment:", objj_msgSend(aCoder, "decodeIntForKey:", CPTextFieldAlignmentKey)); + objj_msgSend(self, "setPlaceholderString:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTextFieldPlaceholderStringKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTextField__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeBool:forKey:", _isEditable, CPTextFieldIsEditableKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isSelectable, CPTextFieldIsSelectableKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _drawsBackground, CPTextFieldDrawsBackgroundKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _textFieldBackgroundColor, CPTextFieldBackgroundColorKey); + objj_msgSend(aCoder, "encodeInt:forKey:", objj_msgSend(self, "lineBreakMode"), CPTextFieldLineBreakModeKey); + objj_msgSend(aCoder, "encodeInt:forKey:", objj_msgSend(self, "alignment"), CPTextFieldAlignmentKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _placeholderString, CPTextFieldPlaceholderStringKey); +} +},["void","CPCoder"])]); +} + +p;9;CPTheme.jt;20517;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;30;Foundation/CPKeyedUnarchiver.jt;20410;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j", NO); +var CPThemesByName = { }, + CPThemeDefaultTheme = nil, + CPThemeDefaultHudTheme = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPTheme"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_name"), new objj_ivar("_attributes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithName:"), function $CPTheme__initWithName_(self, _cmd, aName) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTheme").super_class }, "init"); + if (self) + { + _name = aName; + _attributes = objj_msgSend(CPDictionary, "dictionary"); + CPThemesByName[_name] = self; + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("name"), function $CPTheme__name(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("classNames"), function $CPTheme__classNames(self, _cmd) +{ with(self) +{ + return objj_msgSend(_attributes, "allKeys"); +} +},["CPArray"]), new objj_method(sel_getUid("attributesForClass:"), function $CPTheme__attributesForClass_(self, _cmd, aClass) +{ with(self) +{ + if (!aClass) + return nil; + var className = nil; + if (objj_msgSend(aClass, "isKindOfClass:", objj_msgSend(CPString, "class"))) + { + var theClass = CPClassFromString(aClass); + if (theClass) + aClass = theClass; + else + className = aClass; + } + if (!className) + { + if (objj_msgSend(aClass, "isKindOfClass:", objj_msgSend(CPView, "class"))) + { + if (objj_msgSend(aClass, "respondsToSelector:", sel_getUid("themeClass"))) + className = objj_msgSend(aClass, "themeClass"); + else + return nil; + } + else + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "aClass must be a class object or a string."); + } + return objj_msgSend(_attributes, "objectForKey:", className); +} +},["CPDictionary","id"]), new objj_method(sel_getUid("attributeNamesForClass:"), function $CPTheme__attributeNamesForClass_(self, _cmd, aClass) +{ with(self) +{ + var attributes = objj_msgSend(self, "attributesForClass:", aClass); + if (attributes) + return objj_msgSend(attributes, "allKeys"); + else + return objj_msgSend(CPArray, "array"); +} +},["CPDictionary","id"]), new objj_method(sel_getUid("attributeWithName:forClass:"), function $CPTheme__attributeWithName_forClass_(self, _cmd, aName, aClass) +{ with(self) +{ + var attributes = objj_msgSend(self, "attributesForClass:", aClass); + if (!attributes) + return nil; + return objj_msgSend(attributes, "objectForKey:", aName); +} +},["_CPThemeAttribute","CPString","id"]), new objj_method(sel_getUid("valueForAttributeWithName:forClass:"), function $CPTheme__valueForAttributeWithName_forClass_(self, _cmd, aName, aClass) +{ with(self) +{ + return objj_msgSend(self, "valueForAttributeWithName:inState:forClass:", aName, CPThemeStateNormal, aClass); +} +},["id","CPString","id"]), new objj_method(sel_getUid("valueForAttributeWithName:inState:forClass:"), function $CPTheme__valueForAttributeWithName_inState_forClass_(self, _cmd, aName, aState, aClass) +{ with(self) +{ + var attribute = objj_msgSend(self, "attributeWithName:forClass:", aName, aClass); + if (!attribute) + return nil; + return objj_msgSend(attribute, "valueForState:", aState); +} +},["id","CPString","CPThemeState","id"]), new objj_method(sel_getUid("takeThemeFromObject:"), function $CPTheme__takeThemeFromObject_(self, _cmd, anObject) +{ with(self) +{ + var attributes = objj_msgSend(anObject, "_themeAttributeDictionary"), + attributeName = nil, + attributeNames = objj_msgSend(attributes, "keyEnumerator"), + objectThemeClass = objj_msgSend(objj_msgSend(anObject, "class"), "themeClass"); + while (attributeName = objj_msgSend(attributeNames, "nextObject")) + objj_msgSend(self, "_recordAttribute:forClass:", objj_msgSend(attributes, "objectForKey:", attributeName), objectThemeClass); +} +},["void","id"]), new objj_method(sel_getUid("_recordAttribute:forClass:"), function $CPTheme___recordAttribute_forClass_(self, _cmd, anAttribute, aClass) +{ with(self) +{ + if (!objj_msgSend(anAttribute, "hasValues")) + return; + var attributes = objj_msgSend(_attributes, "objectForKey:", aClass); + if (!attributes) + { + attributes = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(_attributes, "setObject:forKey:", attributes, aClass); + } + var name = objj_msgSend(anAttribute, "name"), + existingAttribute = objj_msgSend(attributes, "objectForKey:", name); + if (existingAttribute) + objj_msgSend(attributes, "setObject:forKey:", objj_msgSend(existingAttribute, "attributeMergedWithAttribute:", anAttribute), name); + else + objj_msgSend(attributes, "setObject:forKey:", anAttribute, name); +} +},["void","_CPThemeAttribute","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("setDefaultTheme:"), function $CPTheme__setDefaultTheme_(self, _cmd, aTheme) +{ with(self) +{ + CPThemeDefaultTheme = aTheme; +} +},["void","CPTheme"]), new objj_method(sel_getUid("defaultTheme"), function $CPTheme__defaultTheme(self, _cmd) +{ with(self) +{ + return CPThemeDefaultTheme; +} +},["CPTheme"]), new objj_method(sel_getUid("setDefaultHudTheme:"), function $CPTheme__setDefaultHudTheme_(self, _cmd, aTheme) +{ with(self) +{ + CPThemeDefaultHudTheme = aTheme; +} +},["void","CPTheme"]), new objj_method(sel_getUid("defaultHudTheme"), function $CPTheme__defaultHudTheme(self, _cmd) +{ with(self) +{ + if (!CPThemeDefaultHudTheme) + CPThemeDefaultHudTheme = objj_msgSend(CPTheme, "themeNamed:", objj_msgSend(objj_msgSend(self, "defaultTheme"), "name") + "-HUD"); + return CPThemeDefaultHudTheme; +} +},["CPTheme"]), new objj_method(sel_getUid("themeNamed:"), function $CPTheme__themeNamed_(self, _cmd, aName) +{ with(self) +{ + return CPThemesByName[aName]; +} +},["CPTheme","CPString"])]); +} +var CPThemeNameKey = "CPThemeNameKey", + CPThemeAttributesKey = "CPThemeAttributesKey"; +{ +var the_class = objj_getClass("CPTheme") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTheme\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTheme__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTheme").super_class }, "init"); + if (self) + { + _name = objj_msgSend(aCoder, "decodeObjectForKey:", CPThemeNameKey); + _attributes = objj_msgSend(aCoder, "decodeObjectForKey:", CPThemeAttributesKey); + CPThemesByName[_name] = self; + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTheme__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _name, CPThemeNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _attributes, CPThemeAttributesKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPKeyedUnarchiver, "_CPThemeKeyedUnarchiver"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_bundle")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initForReadingWithData:bundle:"), function $_CPThemeKeyedUnarchiver__initForReadingWithData_bundle_(self, _cmd, data, aBundle) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPThemeKeyedUnarchiver").super_class }, "initForReadingWithData:", data); + if (self) + _bundle = aBundle; + return self; +} +},["id","CPData","CPBundle"]), new objj_method(sel_getUid("bundle"), function $_CPThemeKeyedUnarchiver__bundle(self, _cmd) +{ with(self) +{ + return _bundle; +} +},["CPBundle"]), new objj_method(sel_getUid("awakenCustomResources"), function $_CPThemeKeyedUnarchiver__awakenCustomResources(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"])]); +} +var CPThemeStates = {}, + CPThemeStateNames = {}, + CPThemeStateCount = 0; +CPThemeState= function(aStateName) +{ + var state = CPThemeStates[aStateName]; + if (state === undefined) + { + if (aStateName.indexOf('+') === -1) + state = 1 << CPThemeStateCount++; + else + { + var state = 0, + states = aStateName.split('+'), + count = states.length; + while (count--) + { + var stateName = states[count], + individualState = CPThemeStates[stateName]; + if (individualState === undefined) + { + individualState = 1 << CPThemeStateCount++; + CPThemeStates[stateName] = individualState; + CPThemeStateNames[individualState] = stateName; + } + state |= individualState; + } + } + CPThemeStates[aStateName] = state; + CPThemeStateNames[state] = aStateName; + } + return state; +} +CPThemeStateName= function(aState) +{ + var name = CPThemeStateNames[aState]; + if (name !== undefined) + return name; + if (!(aState & (aState - 1))) + return ""; + var state = 1, + name = ""; + for (; state < aState; state <<= 1) + if (aState & state) + name += (name.length === 0 ? '' : '+') + CPThemeStateNames[state]; + CPThemeStateNames[aState] = name; + return name; +} +CPThemeStateNames[0] = "normal"; +CPThemeStateNormal = CPThemeStates["normal"] = 0; +CPThemeStateDisabled = CPThemeState("disabled"); +CPThemeStateHighlighted = CPThemeState("highlighted"); +CPThemeStateSelected = CPThemeState("selected"); +CPThemeStateTableDataView = CPThemeState("tableDataView"); +CPThemeStateSelectedDataView = CPThemeStateSelectedTableDataView = CPThemeState("selectedTableDataView"); +CPThemeStateBezeled = CPThemeState("bezeled"); +CPThemeStateBordered = CPThemeState("bordered"); +CPThemeStateEditable = CPThemeState("editable"); +CPThemeStateEditing = CPThemeState("editing"); +CPThemeStateVertical = CPThemeState("vertical"); +CPThemeStateDefault = CPThemeState("default"); +CPThemeStateCircular = CPThemeState("circular"); +{var the_class = objj_allocateClassPair(CPObject, "_CPThemeAttribute"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_name"), new objj_ivar("_defaultValue"), new objj_ivar("_values"), new objj_ivar("_cache"), new objj_ivar("_parentAttribute")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("values"), function $_CPThemeAttribute__values(self, _cmd) +{ with(self) +{ +return _values; +} +},["id"]), new objj_method(sel_getUid("initWithName:defaultValue:"), function $_CPThemeAttribute__initWithName_defaultValue_(self, _cmd, aName, aDefaultValue) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPThemeAttribute").super_class }, "init"); + if (self) + { + _cache = { }; + _name = aName; + _defaultValue = aDefaultValue; + _values = objj_msgSend(CPDictionary, "dictionary"); + } + return self; +} +},["id","CPString","id"]), new objj_method(sel_getUid("name"), function $_CPThemeAttribute__name(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("defaultValue"), function $_CPThemeAttribute__defaultValue(self, _cmd) +{ with(self) +{ + return _defaultValue; +} +},["id"]), new objj_method(sel_getUid("hasValues"), function $_CPThemeAttribute__hasValues(self, _cmd) +{ with(self) +{ + return objj_msgSend(_values, "count") > 0; +} +},["BOOL"]), new objj_method(sel_getUid("isTrivial"), function $_CPThemeAttribute__isTrivial(self, _cmd) +{ with(self) +{ + return (objj_msgSend(_values, "count") === 1) && (Number(objj_msgSend(_values, "allKeys")[0]) === CPThemeStateNormal); +} +},["BOOL"]), new objj_method(sel_getUid("setValue:"), function $_CPThemeAttribute__setValue_(self, _cmd, aValue) +{ with(self) +{ + _cache = {}; + if (aValue === undefined || aValue === nil) + _values = objj_msgSend(CPDictionary, "dictionary"); + else + _values = objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", aValue, String(CPThemeStateNormal)); +} +},["void","id"]), new objj_method(sel_getUid("setValue:forState:"), function $_CPThemeAttribute__setValue_forState_(self, _cmd, aValue, aState) +{ with(self) +{ + _cache = { }; + if ((aValue === undefined) || (aValue === nil)) + objj_msgSend(_values, "removeObjectForKey:", String(aState)); + else + objj_msgSend(_values, "setObject:forKey:", aValue, String(aState)); +} +},["void","id","CPThemeState"]), new objj_method(sel_getUid("value"), function $_CPThemeAttribute__value(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "valueForState:", CPThemeStateNormal); +} +},["id"]), new objj_method(sel_getUid("valueForState:"), function $_CPThemeAttribute__valueForState_(self, _cmd, aState) +{ with(self) +{ + var value = _cache[aState]; + if (value !== undefined) + return value; + value = objj_msgSend(_values, "objectForKey:", String(aState)); + if ((value === undefined || value === nil) && aState !== CPThemeStateNormal) + { + if (aState & (aState - 1)) + { + var highestOneCount = 0, + states = objj_msgSend(_values, "allKeys"), + count = states.length; + while (count--) + { + var state = Number(states[count]); + if ((state & aState) === state) + { + var oneCount = cachedNumberOfOnes[state]; + if (oneCount === undefined) + oneCount = numberOfOnes(state); + if (oneCount > highestOneCount) + { + highestOneCount = oneCount; + value = objj_msgSend(_values, "objectForKey:", String(state)); + } + } + } + } + if (value === undefined || value === nil) + value = objj_msgSend(_values, "objectForKey:", String(CPThemeStateNormal)); + } + if (value === undefined || value === nil) + value = objj_msgSend(_parentAttribute, "valueForState:", aState); + if (value === undefined || value === nil) + value = _defaultValue; + _cache[aState] = value; + return value; +} +},["id","CPThemeState"]), new objj_method(sel_getUid("setParentAttribute:"), function $_CPThemeAttribute__setParentAttribute_(self, _cmd, anAttribute) +{ with(self) +{ + if (_parentAttribute === anAttribute) + return; + _cache = { }; + _parentAttribute = anAttribute; +} +},["void","_CPThemeAttribute"]), new objj_method(sel_getUid("attributeMergedWithAttribute:"), function $_CPThemeAttribute__attributeMergedWithAttribute_(self, _cmd, anAttribute) +{ with(self) +{ + var mergedAttribute = objj_msgSend(objj_msgSend(_CPThemeAttribute, "alloc"), "initWithName:defaultValue:", _name, _defaultValue); + mergedAttribute._values = objj_msgSend(_values, "copy"); + objj_msgSend(mergedAttribute._values, "addEntriesFromDictionary:", anAttribute._values); + return mergedAttribute; +} +},["_CPThemeAttribute","_CPThemeAttribute"])]); +} +{ +var the_class = objj_getClass("_CPThemeAttribute") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPThemeAttribute\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPThemeAttribute__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPThemeAttribute").super_class }, "init"); + if (self) + { + _cache = {}; + _name = objj_msgSend(aCoder, "decodeObjectForKey:", "name"); + _values = objj_msgSend(CPDictionary, "dictionary"); + if (objj_msgSend(aCoder, "containsValueForKey:", "value")) + { + var state = CPThemeStateNormal; + if (objj_msgSend(aCoder, "containsValueForKey:", "state")) + state = CPThemeState(objj_msgSend(aCoder, "decodeObjectForKey:", "state")); + objj_msgSend(_values, "setObject:forKey:", objj_msgSend(aCoder, "decodeObjectForKey:", "value"), state); + } + else + { + var encodedValues = objj_msgSend(aCoder, "decodeObjectForKey:", "values"), + keys = objj_msgSend(encodedValues, "allKeys"), + count = keys.length; + while (count--) + { + var key = keys[count]; + objj_msgSend(_values, "setObject:forKey:", objj_msgSend(encodedValues, "objectForKey:", key), CPThemeState(key)); + } + } + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPThemeAttribute__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _name, "name"); + var keys = objj_msgSend(_values, "allKeys"), + count = keys.length; + if (count === 1) + { + var onlyKey = keys[0]; + if (Number(onlyKey) !== CPThemeStateNormal) + objj_msgSend(aCoder, "encodeObject:forKey:", CPThemeStateName(Number(onlyKey)), "state"); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_values, "objectForKey:", onlyKey), "value"); + } + else + { + var encodedValues = objj_msgSend(CPDictionary, "dictionary"); + while (count--) + { + var key = keys[count]; + objj_msgSend(encodedValues, "setObject:forKey:", objj_msgSend(_values, "objectForKey:", key), CPThemeStateName(Number(key))); + } + objj_msgSend(aCoder, "encodeObject:forKey:", encodedValues, "values"); + } +} +},["void","CPCoder"])]); +} +var cachedNumberOfOnes = [ 0 , 1 , 1 , 2 , 1 , 2 , 2 , + 3 , 1 , 2 , 2 , 3 , 2 , 3 , + 3 , 4 , 1 , 2 , 2 , 3 , 2 , + 3 , 3 , 4 , 2 , 3 , 3 , 4 , + 3 , 4 , 4 , 5 , 1 , 2 , 2 , + 3 , 2 , 3 , 3 , 4 , 2 , 3 , + 3 , 4 , 3 , 4 , 4 , 5 , 2 , + 3 , 3 , 4 , 3 , 4 , 4 , 5 , + 3 , 4 , 4 , 5 , 4 , 5 , 5 , + 6 ]; +var numberOfOnes = function(aNumber) +{ + var count = 0, + slot = aNumber; + while (aNumber) + { + ++count; + aNumber &= (aNumber - 1); + } + cachedNumberOfOnes[slot] = count; + return count; +} +numberOfOnes.displayName = "numberOfOnes"; +CPThemeAttributeEncode= function(aCoder, aThemeAttribute) +{ + var values = aThemeAttribute._values, + count = objj_msgSend(values, "count"), + key = "$a" + objj_msgSend(aThemeAttribute, "name"); + if (count === 1) + { + var state = objj_msgSend(values, "allKeys")[0]; + if (Number(state) === 0) + { + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(values, "objectForKey:", state), key); + return YES; + } + } + if (count >= 1) + { + objj_msgSend(aCoder, "encodeObject:forKey:", aThemeAttribute, key); + return YES; + } + return NO; +} +CPThemeAttributeDecode= function(aCoder, anAttributeName, aDefaultValue, aTheme, aClass) +{ + var key = "$a" + anAttributeName; + if (!objj_msgSend(aCoder, "containsValueForKey:", key)) + var attribute = objj_msgSend(objj_msgSend(_CPThemeAttribute, "alloc"), "initWithName:defaultValue:", anAttributeName, aDefaultValue); + else + { + var attribute = objj_msgSend(aCoder, "decodeObjectForKey:", key); + if (!attribute.isa || !objj_msgSend(attribute, "isKindOfClass:", objj_msgSend(_CPThemeAttribute, "class"))) + { + var themeAttribute = objj_msgSend(objj_msgSend(_CPThemeAttribute, "alloc"), "initWithName:defaultValue:", anAttributeName, aDefaultValue); + objj_msgSend(themeAttribute, "setValue:", attribute); + attribute = themeAttribute; + } + } + if (aTheme && aClass) + objj_msgSend(attribute, "setParentAttribute:", objj_msgSend(aTheme, "attributeWithName:forClass:", anAttributeName, aClass)); + return attribute; +} + +p;14;CPThemeBlend.jt;2447;@STATIC;1.0;I;21;Foundation/CPObject.jI;16;AppKit/CPTheme.jI;29;AppKit/_CPCibCustomResource.jI;30;AppKit/_CPCibKeyedUnarchiver.jt;2312;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("AppKit/CPTheme.j", NO); +objj_executeFile("AppKit/_CPCibCustomResource.j", NO); +objj_executeFile("AppKit/_CPCibKeyedUnarchiver.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPThemeBlend"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_bundle"), new objj_ivar("_themes"), new objj_ivar("_loadDelegate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithContentsOfURL:"), function $CPThemeBlend__initWithContentsOfURL_(self, _cmd, aURL) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPThemeBlend").super_class }, "init"); + if (self) + { + _bundle = objj_msgSend(objj_msgSend(CPBundle, "alloc"), "initWithPath:", aURL); + } + return self; +} +},["id","CPURL"]), new objj_method(sel_getUid("themes"), function $CPThemeBlend__themes(self, _cmd) +{ with(self) +{ + return _themes; +} +},["CPArray"]), new objj_method(sel_getUid("themeNames"), function $CPThemeBlend__themeNames(self, _cmd) +{ with(self) +{ + var names = []; + for (var i = 0; i < _themes.length; ++i) + names.push(_themes[i].substring(0, _themes[i].indexOf(".keyedtheme"))); + return names; +} +},["CPArray"]), new objj_method(sel_getUid("loadWithDelegate:"), function $CPThemeBlend__loadWithDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _loadDelegate = aDelegate; + objj_msgSend(_bundle, "loadWithDelegate:", self); +} +},["void","id"]), new objj_method(sel_getUid("bundleDidFinishLoading:"), function $CPThemeBlend__bundleDidFinishLoading_(self, _cmd, aBundle) +{ with(self) +{ + _themes = objj_msgSend(_bundle, "objectForInfoDictionaryKey:", "CPKeyedThemes"); + var count = _themes.length; + while (count--) + { + var path = objj_msgSend(aBundle, "pathForResource:", _themes[count]), + unarchiver = objj_msgSend(objj_msgSend(_CPThemeKeyedUnarchiver, "alloc"), "initForReadingWithData:bundle:", objj_msgSend(objj_msgSend(CPURL, "URLWithString:", path), "staticResourceData"), _bundle); + objj_msgSend(unarchiver, "decodeObjectForKey:", "root"); + objj_msgSend(unarchiver, "finishDecoding"); + } + objj_msgSend(_loadDelegate, "blendDidFinishLoading:", self); +} +},["void","CPBundle"])]); +} + +p;11;CPToolbar.jt;35870;@STATIC;1.0;I;21;Foundation/CPObject.ji;15;CPPopUpButton.ji;15;CPToolbarItem.jt;35784;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CPPopUpButton.j", YES); +objj_executeFile("CPToolbarItem.j", YES); +CPToolbarDisplayModeDefault = 0; +CPToolbarDisplayModeIconAndLabel = 1; +CPToolbarDisplayModeIconOnly = 2; +CPToolbarDisplayModeLabelOnly = 3; +var CPToolbarsByIdentifier = nil; +var CPToolbarConfigurationsByIdentifier = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPToolbar"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_identifier"), new objj_ivar("_displayMode"), new objj_ivar("_showsBaselineSeparator"), new objj_ivar("_allowsUserCustomization"), new objj_ivar("_isVisible"), new objj_ivar("_delegate"), new objj_ivar("_itemIdentifiers"), new objj_ivar("_identifiedItems"), new objj_ivar("_defaultItems"), new objj_ivar("_allowedItems"), new objj_ivar("_selectableItems"), new objj_ivar("_items"), new objj_ivar("_itemsSortedByVisibilityPriority"), new objj_ivar("_toolbarView"), new objj_ivar("_window")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPToolbar__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithIdentifier:"), function $CPToolbar__initWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPToolbar").super_class }, "init"); + if (self) + { + _items = []; + _identifier = anIdentifier; + _isVisible = YES; + objj_msgSend(CPToolbar, "_addToolbar:forIdentifier:", self, _identifier); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("setDisplayMode:"), function $CPToolbar__setDisplayMode_(self, _cmd, aDisplayMode) +{ with(self) +{ +} +},["void","CPToolbarDisplayMode"]), new objj_method(sel_getUid("identifier"), function $CPToolbar__identifier(self, _cmd) +{ with(self) +{ + return _identifier; +} +},["CPString"]), new objj_method(sel_getUid("delegate"), function $CPToolbar__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("isVisible"), function $CPToolbar__isVisible(self, _cmd) +{ with(self) +{ + return _isVisible; +} +},["BOOL"]), new objj_method(sel_getUid("setVisible:"), function $CPToolbar__setVisible_(self, _cmd, aFlag) +{ with(self) +{ + if (_isVisible === aFlag) + return; + _isVisible = aFlag; + objj_msgSend(_window, "_noteToolbarChanged"); +} +},["void","BOOL"]), new objj_method(sel_getUid("_window"), function $CPToolbar___window(self, _cmd) +{ with(self) +{ + return _window; +} +},["CPWindow"]), new objj_method(sel_getUid("_setWindow:"), function $CPToolbar___setWindow_(self, _cmd, aWindow) +{ with(self) +{ + _window = aWindow; +} +},["void","CPWindow"]), new objj_method(sel_getUid("setDelegate:"), function $CPToolbar__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate === aDelegate) + return; + _delegate = aDelegate; + objj_msgSend(self, "_reloadToolbarItems"); +} +},["void","id"]), new objj_method(sel_getUid("_loadConfiguration"), function $CPToolbar___loadConfiguration(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("_toolbarView"), function $CPToolbar___toolbarView(self, _cmd) +{ with(self) +{ + if (!_toolbarView) + { + _toolbarView = objj_msgSend(objj_msgSend(_CPToolbarView, "alloc"), "initWithFrame:", CPRectMake(0.0, 0.0, 1200.0, 59.0)); + objj_msgSend(_toolbarView, "setToolbar:", self); + objj_msgSend(_toolbarView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_toolbarView, "reloadToolbarItems"); + } + return _toolbarView; +} +},["CPView"]), new objj_method(sel_getUid("_reloadToolbarItems"), function $CPToolbar___reloadToolbarItems(self, _cmd) +{ with(self) +{ + _itemIdentifiers = objj_msgSend(_defaultItems, "valueForKey:", "itemIdentifier") || []; + if (_delegate) + { + var itemIdentifiersFromDelegate = objj_msgSend(objj_msgSend(_delegate, "toolbarDefaultItemIdentifiers:", self), "mutableCopy"); + if (itemIdentifiersFromDelegate) + _itemIdentifiers = objj_msgSend(_itemIdentifiers, "arrayByAddingObjectsFromArray:", itemIdentifiersFromDelegate); + } + var index = 0, + count = objj_msgSend(_itemIdentifiers, "count"); + _items = []; + for (; index < count; ++index) + { + var identifier = _itemIdentifiers[index], + item = objj_msgSend(CPToolbarItem, "_standardItemWithItemIdentifier:", identifier); + if (!item) + item = objj_msgSend(_identifiedItems, "objectForKey:", identifier); + if (!item && _delegate) + item = objj_msgSend(_delegate, "toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:", self, identifier, YES); + item = objj_msgSend(item, "copy"); + if (item === nil) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Toolbar delegate " + _delegate + " returned nil toolbar item for identifier \"" + identifier + "\""); + item._toolbar = self; + objj_msgSend(_items, "addObject:", item); + } + _itemsSortedByVisibilityPriority = objj_msgSend(_items, "sortedArrayUsingFunction:context:", _CPToolbarItemVisibilityPriorityCompare, NULL); + objj_msgSend(_toolbarView, "reloadToolbarItems"); +} +},["void"]), new objj_method(sel_getUid("items"), function $CPToolbar__items(self, _cmd) +{ with(self) +{ + return _items; +} +},["CPArray"]), new objj_method(sel_getUid("visibleItems"), function $CPToolbar__visibleItems(self, _cmd) +{ with(self) +{ + return objj_msgSend(_toolbarView, "visibleItems"); +} +},["CPArray"]), new objj_method(sel_getUid("itemsSortedByVisibilityPriority"), function $CPToolbar__itemsSortedByVisibilityPriority(self, _cmd) +{ with(self) +{ + return _itemsSortedByVisibilityPriority; +} +},["CPArray"]), new objj_method(sel_getUid("validateVisibleItems"), function $CPToolbar__validateVisibleItems(self, _cmd) +{ with(self) +{ + var toolbarItems = objj_msgSend(self, "visibleItems"), + count = objj_msgSend(toolbarItems, "count"); + while (count--) + objj_msgSend(toolbarItems[count], "validate"); +} +},["void"]), new objj_method(sel_getUid("_itemForItemIdentifier:willBeInsertedIntoToolbar:"), function $CPToolbar___itemForItemIdentifier_willBeInsertedIntoToolbar_(self, _cmd, identifier, toolbar) +{ with(self) +{ + var item = objj_msgSend(_identifiedItems, "objectForKey:", identifier); + if (!item) + { + item = objj_msgSend(CPToolbarItem, "_standardItemWithItemIdentifier:", identifier); + if (_delegate && !item) + { + item = objj_msgSend(objj_msgSend(_delegate, "toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:", self, identifier, toolbar), "copy"); + if (!item) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Toolbar delegate " + _delegate + " returned nil toolbar item for identifier " + identifier); + } + objj_msgSend(_identifiedItems, "setObject:forKey:", item, identifier); + } + return item; +} +},["id","CPString","BOOL"]), new objj_method(sel_getUid("_itemsWithIdentifiers:"), function $CPToolbar___itemsWithIdentifiers_(self, _cmd, identifiers) +{ with(self) +{ + var items = []; + for (var i = 0; i < identifiers.length; i++) + objj_msgSend(items, "addObject:", objj_msgSend(self, "_itemForItemIdentifier:willBeInsertedIntoToolbar:", identifiers[i], NO)); + return items; +} +},["id","CPArray"]), new objj_method(sel_getUid("_defaultToolbarItems"), function $CPToolbar___defaultToolbarItems(self, _cmd) +{ with(self) +{ + if (!_defaultItems && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("toolbarDefaultItemIdentifiers:"))) + { + _defaultItems = []; + var identifiers = objj_msgSend(_delegate, "toolbarDefaultItemIdentifiers:", self), + index = 0, + count = objj_msgSend(identifiers, "count"); + for (; index < count; ++index) + objj_msgSend(_defaultItems, "addObject:", objj_msgSend(self, "_itemForItemIdentifier:willBeInsertedIntoToolbar:", identifiers[index], NO)); + } + return _defaultItems; +} +},["id"]), new objj_method(sel_getUid("toolbarItemDidChange:"), function $CPToolbar__toolbarItemDidChange_(self, _cmd, anItem) +{ with(self) +{ + if (objj_msgSend(_identifiedItems, "objectForKey:", objj_msgSend(anItem, "itemIdentifier"))) + objj_msgSend(_identifiedItems, "setObject:forKey:", anItem, objj_msgSend(anItem, "itemIdentifier")); + var index = 0, + count = objj_msgSend(_items, "count"); + for (; index <= count; ++index) + { + var item = _items[index]; + if (objj_msgSend(item, "itemIdentifier") === objj_msgSend(anItem, "itemIdentifier")) + { + _items[index] = anItem; + _itemsSortedByVisibilityPriority = objj_msgSend(_items, "sortedArrayUsingFunction:context:", _CPToolbarItemVisibilityPriorityCompare, NULL); + objj_msgSend(_toolbarView, "reloadToolbarItems"); + } + } +} +},["void","CPToolbarItem"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPToolbar__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPToolbar, "class")) + return; + CPToolbarsByIdentifier = objj_msgSend(CPDictionary, "dictionary"); + CPToolbarConfigurationsByIdentifier = objj_msgSend(CPDictionary, "dictionary"); +} +},["void"]), new objj_method(sel_getUid("_addToolbar:forIdentifier:"), function $CPToolbar___addToolbar_forIdentifier_(self, _cmd, toolbar, identifier) +{ with(self) +{ + var toolbarsSharingIdentifier = objj_msgSend(CPToolbarsByIdentifier, "objectForKey:", identifier); + if (!toolbarsSharingIdentifier) + { + toolbarsSharingIdentifier = [] + objj_msgSend(CPToolbarsByIdentifier, "setObject:forKey:", toolbarsSharingIdentifier, identifier); + } + objj_msgSend(toolbarsSharingIdentifier, "addObject:", toolbar); +} +},["void","CPToolbar","CPString"])]); +} +var CPToolbarIdentifierKey = "CPToolbarIdentifierKey", + CPToolbarDisplayModeKey = "CPToolbarDisplayModeKey", + CPToolbarShowsBaselineSeparatorKey = "CPToolbarShowsBaselineSeparatorKey", + CPToolbarAllowsUserCustomizationKey = "CPToolbarAllowsUserCustomizationKey", + CPToolbarIsVisibleKey = "CPToolbarIsVisibleKey", + CPToolbarDelegateKey = "CPToolbarDelegateKey", + CPToolbarIdentifiedItemsKey = "CPToolbarIdentifiedItemsKey", + CPToolbarDefaultItemsKey = "CPToolbarDefaultItemsKey", + CPToolbarAllowedItemsKey = "CPToolbarAllowedItemsKey", + CPToolbarSelectableItemsKey = "CPToolbarSelectableItemsKey"; +{ +var the_class = objj_getClass("CPToolbar") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPToolbar\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPToolbar__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPToolbar").super_class }, "init"); + if (self) + { + _identifier = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarIdentifierKey); + _displayMode = objj_msgSend(aCoder, "decodeIntForKey:", CPToolbarDisplayModeKey); + _showsBaselineSeparator = objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarShowsBaselineSeparatorKey); + _allowsUserCustomization = objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarAllowsUserCustomizationKey); + _isVisible = objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarIsVisibleKey); + _identifiedItems = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarIdentifiedItemsKey); + _defaultItems = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarDefaultItemsKey); + _allowedItems = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarAllowedItemsKey); + _selectableItems = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarSelectableItemsKey); + objj_msgSend(objj_msgSend(_identifiedItems, "allValues"), "makeObjectsPerformSelector:withObject:", sel_getUid("_setToolbar:"), self); + _items = []; + objj_msgSend(CPToolbar, "_addToolbar:forIdentifier:", self, _identifier); + objj_msgSend(self, "setDelegate:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarDelegateKey)); + objj_msgSend(self, "_reloadToolbarItems"); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPToolbar__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _identifier, CPToolbarIdentifierKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _displayMode, CPToolbarDisplayModeKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _showsBaselineSeparator, CPToolbarShowsBaselineSeparatorKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsUserCustomization, CPToolbarAllowsUserCustomizationKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isVisible, CPToolbarIsVisibleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _identifiedItems, CPToolbarIdentifiedItemsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _defaultItems, CPToolbarDefaultItemsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _allowedItems, CPToolbarAllowedItemsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _selectableItems, CPToolbarSelectableItemsKey); + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _delegate, CPToolbarDelegateKey); +} +},["void","CPCoder"])]); +} +var _CPToolbarViewBackgroundColor = nil, + _CPToolbarViewExtraItemsImage = nil, + _CPToolbarViewExtraItemsAlternateImage = nil; +var TOOLBAR_TOP_MARGIN = 5.0, + TOOLBAR_ITEM_MARGIN = 10.0, + TOOLBAR_EXTRA_ITEMS_WIDTH = 20.0; +var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) +{ + return { index:anIndex, view:aView, label:aLabel, minWidth:aMinWidth }; +} +{var the_class = objj_allocateClassPair(CPView, "_CPToolbarView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_toolbar"), new objj_ivar("_flexibleWidthIndexes"), new objj_ivar("_visibleFlexibleWidthIndexes"), new objj_ivar("_itemInfos"), new objj_ivar("_viewsForToolbarItems"), new objj_ivar("_visibleItems"), new objj_ivar("_invisibleItems"), new objj_ivar("_additionalItemsButton"), new objj_ivar("_labelColor"), new objj_ivar("_labelShadowColor"), new objj_ivar("_minWidth"), new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("visibleItems"), function $_CPToolbarView__visibleItems(self, _cmd) +{ with(self) +{ +return _visibleItems; +} +},["id"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPToolbarView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _minWidth = 0; + _labelColor = objj_msgSend(CPColor, "blackColor"); + _labelShadowColor = objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.75); + _additionalItemsButton = objj_msgSend(objj_msgSend(CPPopUpButton, "alloc"), "initWithFrame:pullsDown:", CGRectMake(0.0, 0.0, 10.0, 15.0), YES); + objj_msgSend(_additionalItemsButton, "setBordered:", NO); + objj_msgSend(_additionalItemsButton, "setImagePosition:", CPImageOnly); + objj_msgSend(objj_msgSend(_additionalItemsButton, "menu"), "setShowsStateColumn:", NO); + objj_msgSend(objj_msgSend(_additionalItemsButton, "menu"), "setAutoenablesItems:", NO); + objj_msgSend(_additionalItemsButton, "setAlternateImage:", _CPToolbarViewExtraItemsAlternateImage); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setToolbar:"), function $_CPToolbarView__setToolbar_(self, _cmd, aToolbar) +{ with(self) +{ + _toolbar = aToolbar; +} +},["void","CPToolbar"]), new objj_method(sel_getUid("toolbar"), function $_CPToolbarView__toolbar(self, _cmd) +{ with(self) +{ + return _toolbar; +} +},["CPToolbar"]), new objj_method(sel_getUid("FIXME_setIsHUD:"), function $_CPToolbarView__FIXME_setIsHUD_(self, _cmd, shouldBeHUD) +{ with(self) +{ + if (_FIXME_isHUD === shouldBeHUD) + return; + _FIXME_isHUD = shouldBeHUD; + var items = objj_msgSend(_toolbar, "items"), + count = objj_msgSend(items, "count"); + while (count--) + objj_msgSend(objj_msgSend(self, "viewForItem:", items[count]), "FIXME_setIsHUD:", shouldBeHUD); +} +},["void","BOOL"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $_CPToolbarView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "tile"); +} +},["void","CGSize"]), new objj_method(sel_getUid("viewForItem:"), function $_CPToolbarView__viewForItem_(self, _cmd, anItem) +{ with(self) +{ + return _viewsForToolbarItems[objj_msgSend(anItem, "UID")] || nil; +} +},["_CPToolbarItemView","CPToolbarItem"]), new objj_method(sel_getUid("tile"), function $_CPToolbarView__tile(self, _cmd) +{ with(self) +{ + var items = objj_msgSend(_toolbar, "items"), + itemsWidth = CGRectGetWidth(objj_msgSend(self, "bounds")), + minWidth = _minWidth, + invisibleItemsSortedByPriority = []; + _visibleItems = items; + if (itemsWidth < minWidth) + { + itemsWidth -= TOOLBAR_EXTRA_ITEMS_WIDTH; + _visibleItems = objj_msgSend(_visibleItems, "copy"); + var itemsSortedByVisibilityPriority = objj_msgSend(_toolbar, "itemsSortedByVisibilityPriority"), + count = itemsSortedByVisibilityPriority.length; + while (minWidth > itemsWidth && count) + { + var item = itemsSortedByVisibilityPriority[--count], + view = objj_msgSend(self, "viewForItem:", item); + minWidth -= objj_msgSend(view, "minSize").width + TOOLBAR_ITEM_MARGIN; + objj_msgSend(_visibleItems, "removeObjectIdenticalTo:", item); + objj_msgSend(invisibleItemsSortedByPriority, "addObject:", item); + objj_msgSend(view, "setHidden:", YES); + objj_msgSend(view, "FIXME_setIsHUD:", _FIXME_isHUD); + } + } + var count = objj_msgSend(items, "count"), + height = 0.0; + while (count--) + { + var view = objj_msgSend(self, "viewForItem:", items[count]), + minSize = objj_msgSend(view, "minSize"); + if (height < minSize.height) + height = minSize.height; + } + var count = _visibleItems.length + flexibleItemIndexes = objj_msgSend(CPIndexSet, "indexSet"); + while (count--) + { + var item = _visibleItems[count], + view = objj_msgSend(self, "viewForItem:", item), + minSize = objj_msgSend(view, "minSize"); + if (minSize.width !== objj_msgSend(view, "maxSize").width) + objj_msgSend(flexibleItemIndexes, "addIndex:", count); + else + objj_msgSend(view, "setFrameSize:", CGSizeMake(minSize.width, height)); + objj_msgSend(view, "setHidden:", NO); + } + var remainingSpace = itemsWidth - minWidth, + proportionate = 0.0; + while (remainingSpace && objj_msgSend(flexibleItemIndexes, "count")) + { + proportionate += remainingSpace / objj_msgSend(flexibleItemIndexes, "count"); + remainingSpace = 0.0; + var index = CPNotFound; + while ((index = objj_msgSend(flexibleItemIndexes, "indexGreaterThanIndex:", index)) !== CPNotFound) + { + var item = _visibleItems[index], + view = objj_msgSend(self, "viewForItem:", item), + proposedWidth = objj_msgSend(view, "minSize").width + proportionate, + constrainedWidth = MIN(proposedWidth, objj_msgSend(view, "maxSize").width); + if (constrainedWidth < proposedWidth) + { + objj_msgSend(flexibleItemIndexes, "removeIndex:", index); + remainingSpace += proposedWidth - constrainedWidth; + } + objj_msgSend(view, "setFrameSize:", CGSizeMake(constrainedWidth, height)); + } + } + var index = 0, + count = _visibleItems.length, + x = TOOLBAR_ITEM_MARGIN; + for (; index < count; ++index) + { + var view = objj_msgSend(self, "viewForItem:", _visibleItems[index]), + viewWidth = CGRectGetWidth(objj_msgSend(view, "frame")); + objj_msgSend(view, "setFrame:", CGRectMake(x, 0.0, viewWidth, height)); + x += viewWidth + TOOLBAR_ITEM_MARGIN; + } + var needsAdditionalItemsButton = NO; + if (objj_msgSend(invisibleItemsSortedByPriority, "count")) + { + var index = 0, + count = objj_msgSend(items, "count"); + _invisibleItems = []; + for (; index < count; ++index) + { + var item = items[index]; + if (objj_msgSend(invisibleItemsSortedByPriority, "indexOfObjectIdenticalTo:", item) !== CPNotFound) + { + objj_msgSend(_invisibleItems, "addObject:", item); + var identifier = objj_msgSend(item, "itemIdentifier"); + if (identifier !== CPToolbarSpaceItemIdentifier && + identifier !== CPToolbarFlexibleSpaceItemIdentifier && + identifier !== CPToolbarSeparatorItemIdentifier) + needsAdditionalItemsButton = YES; + } + } + } + if (needsAdditionalItemsButton) + { + objj_msgSend(_additionalItemsButton, "setFrameOrigin:", CGPointMake(itemsWidth + 5.0, (CGRectGetHeight(objj_msgSend(self, "bounds")) - CGRectGetHeight(objj_msgSend(_additionalItemsButton, "frame"))) / 2.0)); + objj_msgSend(self, "addSubview:", _additionalItemsButton); + objj_msgSend(_additionalItemsButton, "removeAllItems"); + objj_msgSend(_additionalItemsButton, "addItemWithTitle:", "Additional Items"); + objj_msgSend(objj_msgSend(_additionalItemsButton, "itemArray")[0], "setImage:", _CPToolbarViewExtraItemsImage); + var index = 0, + count = objj_msgSend(_invisibleItems, "count"), + hasNonSeparatorItem = NO; + for (; index < count; ++index) + { + var item = _invisibleItems[index], + identifier = objj_msgSend(item, "itemIdentifier"); + if (identifier === CPToolbarSpaceItemIdentifier || + identifier === CPToolbarFlexibleSpaceItemIdentifier) + continue; + if (identifier === CPToolbarSeparatorItemIdentifier) + { + if (hasNonSeparatorItem) + objj_msgSend(_additionalItemsButton, "addItem:", objj_msgSend(CPMenuItem, "separatorItem")); + continue; + } + hasNonSeparatorItem = YES; + var menuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", objj_msgSend(item, "label"), objj_msgSend(item, "action"), nil); + objj_msgSend(menuItem, "setImage:", objj_msgSend(item, "image")); + objj_msgSend(menuItem, "setTarget:", objj_msgSend(item, "target")); + objj_msgSend(menuItem, "setEnabled:", objj_msgSend(item, "isEnabled")); + objj_msgSend(_additionalItemsButton, "addItem:", menuItem); + } + } + else + objj_msgSend(_additionalItemsButton, "removeFromSuperview"); +} +},["void"]), new objj_method(sel_getUid("reloadToolbarItems"), function $_CPToolbarView__reloadToolbarItems(self, _cmd) +{ with(self) +{ + var subviews = objj_msgSend(self, "subviews"), + count = subviews.length; + while (count--) + objj_msgSend(subviews[count], "removeFromSuperview"); + var items = objj_msgSend(_toolbar, "items"), + index = 0; + count = items.length; + _minWidth = TOOLBAR_ITEM_MARGIN; + _viewsForToolbarItems = { }; + for (; index < count; ++index) + { + var item = items[index], + view = objj_msgSend(objj_msgSend(_CPToolbarItemView, "alloc"), "initWithToolbarItem:toolbar:", item, self); + _viewsForToolbarItems[objj_msgSend(item, "UID")] = view; + objj_msgSend(self, "addSubview:", view); + _minWidth += objj_msgSend(view, "minSize").width + TOOLBAR_ITEM_MARGIN; + } + objj_msgSend(self, "tile"); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPToolbarView__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(_CPToolbarView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + _CPToolbarViewExtraItemsImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPToolbarView/_CPToolbarViewExtraItemsImage.png"), CPSizeMake(10.0, 15.0)); + _CPToolbarViewExtraItemsAlternateImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png"), CGSizeMake(10.0, 15.0)); +} +},["void"])]); +} +var _CPToolbarItemVisibilityPriorityCompare = function(lhs, rhs) +{ + var lhsVisibilityPriority = objj_msgSend(lhs, "visibilityPriority"), + rhsVisibilityPriority = objj_msgSend(rhs, "visibilityPriority"); + if (lhsVisibilityPriority == rhsVisibilityPriority) + return CPOrderedSame; + if (lhsVisibilityPriority > rhsVisibilityPriority) + return CPOrderedAscending; + return CPOrderedDescending; +} +var TOP_MARGIN = 5.0, + LABEL_MARGIN = 2.0; +{var the_class = objj_allocateClassPair(CPControl, "_CPToolbarItemView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_minSize"), new objj_ivar("_maxSize"), new objj_ivar("_labelSize"), new objj_ivar("_toolbarItem"), new objj_ivar("_toolbar"), new objj_ivar("_imageView"), new objj_ivar("_view"), new objj_ivar("_labelField"), new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("minSize"), function $_CPToolbarItemView__minSize(self, _cmd) +{ with(self) +{ +return _minSize; +} +},["id"]), +new objj_method(sel_getUid("maxSize"), function $_CPToolbarItemView__maxSize(self, _cmd) +{ with(self) +{ +return _maxSize; +} +},["id"]), new objj_method(sel_getUid("initWithToolbarItem:toolbar:"), function $_CPToolbarItemView__initWithToolbarItem_toolbar_(self, _cmd, aToolbarItem, aToolbar) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarItemView").super_class }, "init"); + if (self) + { + _toolbarItem = aToolbarItem; + _labelField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_labelField, "setFont:", objj_msgSend(CPFont, "systemFontOfSize:", 11.0)); + objj_msgSend(_labelField, "setTextColor:", objj_msgSend(self, "FIXME_labelColor")); + objj_msgSend(_labelField, "setTextShadowColor:", objj_msgSend(self, "FIXME_labelShadowColor")); + objj_msgSend(_labelField, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_labelField, "setAutoresizingMask:", CPViewWidthSizable | CPViewMinXMargin); + objj_msgSend(self, "addSubview:", _labelField); + objj_msgSend(self, "updateFromItem"); + _toolbar = aToolbar; + var keyPaths = ["label", "image", "alternateImage", "minSize", "maxSize", "target", "action", "enabled"], + index = 0, + count = objj_msgSend(keyPaths, "count"); + for (; index < count; ++index) + objj_msgSend(_toolbarItem, "addObserver:forKeyPath:options:context:", self, keyPaths[index], 0, NULL); + } + return self; +} +},["id","CPToolbarItem","CPToolbar"]), new objj_method(sel_getUid("FIXME_setIsHUD:"), function $_CPToolbarItemView__FIXME_setIsHUD_(self, _cmd, shouldBeHUD) +{ with(self) +{ + _FIXME_isHUD = shouldBeHUD; + objj_msgSend(_labelField, "setTextColor:", objj_msgSend(self, "FIXME_labelColor")); + objj_msgSend(_labelField, "setTextShadowColor:", objj_msgSend(self, "FIXME_labelShadowColor")); +} +},["void","BOOL"]), new objj_method(sel_getUid("updateFromItem"), function $_CPToolbarItemView__updateFromItem(self, _cmd) +{ with(self) +{ + var identifier = objj_msgSend(_toolbarItem, "itemIdentifier"); + if (identifier === CPToolbarSpaceItemIdentifier || + identifier === CPToolbarFlexibleSpaceItemIdentifier || + identifier === CPToolbarSeparatorItemIdentifier) + { + objj_msgSend(_view, "removeFromSuperview"); + objj_msgSend(_imageView, "removeFromSuperview"); + _minSize = objj_msgSend(_toolbarItem, "minSize"); + _maxSize = objj_msgSend(_toolbarItem, "maxSize"); + if (identifier === CPToolbarSeparatorItemIdentifier) + { + _view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 2.0, 32.0)); + sizes = {}; + sizes["CPToolbarItemSeparator"] = [CGSizeMake(2.0, 26.0), CGSizeMake(2.0, 1.0), CGSizeMake(2.0, 26.0)]; + objj_msgSend(_view, "setBackgroundColor:", _CPControlThreePartImagePattern(YES, sizes, "CPToolbarItem", "Separator")); + objj_msgSend(self, "addSubview:", _view); + } + return; + } + objj_msgSend(self, "setTarget:", objj_msgSend(_toolbarItem, "target")); + objj_msgSend(self, "setAction:", objj_msgSend(_toolbarItem, "action")); + var view = objj_msgSend(_toolbarItem, "view") || nil; + if (view !== _view) + { + if (!view) + objj_msgSend(_view, "removeFromSuperview"); + else + { + objj_msgSend(self, "addSubview:", view); + objj_msgSend(_imageView, "removeFromSuperview"); + } + _view = view; + } + if (!_view) + { + if (!_imageView) + { + _imageView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_imageView, "setImageScaling:", CPScaleNone); + objj_msgSend(self, "addSubview:", _imageView); + } + objj_msgSend(_imageView, "setImage:", objj_msgSend(_toolbarItem, "image")); + } + var minSize = objj_msgSend(_toolbarItem, "minSize"), + maxSize = objj_msgSend(_toolbarItem, "maxSize"); + objj_msgSend(_labelField, "setStringValue:", objj_msgSend(_toolbarItem, "label")); + objj_msgSend(_labelField, "sizeToFit"); + objj_msgSend(self, "setEnabled:", objj_msgSend(_toolbarItem, "isEnabled")); + _labelSize = objj_msgSend(_labelField, "frame").size; + _minSize = CGSizeMake(MAX(_labelSize.width, minSize.width), _labelSize.height + minSize.height + LABEL_MARGIN + TOP_MARGIN); + _maxSize = CGSizeMake(MAX(_labelSize.width, minSize.width), 100000000.0); + objj_msgSend(_toolbar, "tile"); +} +},["void"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPToolbarItemView__layoutSubviews(self, _cmd) +{ with(self) +{ + var identifier = objj_msgSend(_toolbarItem, "itemIdentifier"); + if (identifier === CPToolbarSpaceItemIdentifier || + identifier === CPToolbarFlexibleSpaceItemIdentifier) + return; + var bounds = objj_msgSend(self, "bounds"), + width = (bounds.size.width); + if (identifier === CPToolbarSeparatorItemIdentifier) + return objj_msgSend(_view, "setFrame:", CGRectMake(ROUND((width - 2.0) / 2.0), 0.0, 2.0, (bounds.size.height))); + var view = _view || _imageView, + itemMaxSize = objj_msgSend(_toolbarItem, "maxSize"), + height = (bounds.size.height) - _labelSize.height - LABEL_MARGIN - TOP_MARGIN, + viewWidth = MIN(itemMaxSize.width, width), + viewHeight = MIN(itemMaxSize.height, height); + objj_msgSend(view, "setFrame:", CGRectMake( ROUND((width - viewWidth) / 2.0), + TOP_MARGIN + ROUND((height - viewHeight) / 2.0), + viewWidth, + viewHeight)); + objj_msgSend(_labelField, "setFrameOrigin:", CGPointMake(ROUND((width - _labelSize.width) / 2.0), TOP_MARGIN + height + LABEL_MARGIN)); +} +},["void"]), new objj_method(sel_getUid("mouseDown:"), function $_CPToolbarItemView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(_toolbarItem, "view")) + return objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDown:", anEvent); + var identifier = objj_msgSend(_toolbarItem, "itemIdentifier"); + if (identifier === CPToolbarSpaceItemIdentifier || + identifier === CPToolbarFlexibleSpaceItemIdentifier || + identifier === CPToolbarSeparatorItemIdentifier) + return objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDown:", anEvent); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarItemView").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setEnabled:"), function $_CPToolbarItemView__setEnabled_(self, _cmd, shouldBeEnabled) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarItemView").super_class }, "setEnabled:", shouldBeEnabled); + if (shouldBeEnabled) + { + objj_msgSend(_imageView, "setAlphaValue:", 1.0); + objj_msgSend(_labelField, "setAlphaValue:", 1.0); + } + else + { + objj_msgSend(_imageView, "setAlphaValue:", 0.5); + objj_msgSend(_labelField, "setAlphaValue:", 0.5); + } + objj_msgSend(_toolbar, "tile"); +} +},["void","BOOL"]), new objj_method(sel_getUid("FIXME_labelColor"), function $_CPToolbarItemView__FIXME_labelColor(self, _cmd) +{ with(self) +{ + if (_FIXME_isHUD) + return objj_msgSend(CPColor, "whiteColor"); + return objj_msgSend(CPColor, "blackColor"); +} +},["CPColor"]), new objj_method(sel_getUid("FIXME_labelShadowColor"), function $_CPToolbarItemView__FIXME_labelShadowColor(self, _cmd) +{ with(self) +{ + if (_FIXME_isHUD) + return objj_msgSend(self, "isHighlighted") ? objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.5) : objj_msgSend(CPColor, "clearColor"); + return objj_msgSend(self, "isHighlighted") ? objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.0, 0.3) : objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.75); +} +},["CPColor"]), new objj_method(sel_getUid("setHighlighted:"), function $_CPToolbarItemView__setHighlighted_(self, _cmd, shouldBeHighlighted) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarItemView").super_class }, "setHighlighted:", shouldBeHighlighted); + if (shouldBeHighlighted) + { + var alternateImage = objj_msgSend(_toolbarItem, "alternateImage"); + if (alternateImage) + objj_msgSend(_imageView, "setImage:", alternateImage); + objj_msgSend(_labelField, "setTextShadowOffset:", CGSizeMakeZero()); + } + else + { + var image = objj_msgSend(_toolbarItem, "image"); + if (image) + objj_msgSend(_imageView, "setImage:", image); + objj_msgSend(_labelField, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + } + objj_msgSend(_labelField, "setTextShadowColor:", objj_msgSend(self, "FIXME_labelShadowColor")); +} +},["void","BOOL"]), new objj_method(sel_getUid("sendAction:to:"), function $_CPToolbarItemView__sendAction_to_(self, _cmd, anAction, aSender) +{ with(self) +{ + objj_msgSend(CPApp, "sendAction:to:from:", anAction, aSender, _toolbarItem); +} +},["void","SEL","id"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPToolbarItemView__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, aChange, aContext) +{ with(self) +{ + if (aKeyPath === "enabled") + objj_msgSend(self, "setEnabled:", objj_msgSend(anObject, "isEnabled")); + else if (aKeyPath === "target") + objj_msgSend(self, "setTarget:", objj_msgSend(anObject, "target")); + else if (aKeyPath === "action") + objj_msgSend(self, "setAction:", objj_msgSend(anObject, "action")); + else + objj_msgSend(self, "updateFromItem"); +} +},["void","CPString","id","CPDictionary","id"])]); +} + +p;15;CPToolbarItem.jt;18874;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;16;AppKit/CPImage.jI;15;AppKit/CPView.ji;29;_CPToolbarFlexibleSpaceItem.ji;26;_CPToolbarShowColorsItem.ji;25;_CPToolbarSeparatorItem.ji;21;_CPToolbarSpaceItem.jt;18640;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("AppKit/CPImage.j", NO); +objj_executeFile("AppKit/CPView.j", NO); +CPToolbarItemVisibilityPriorityStandard = 0; +CPToolbarItemVisibilityPriorityLow = -1000; +CPToolbarItemVisibilityPriorityHigh = 1000; +CPToolbarItemVisibilityPriorityUser = 2000; +CPToolbarSeparatorItemIdentifier = "CPToolbarSeparatorItem"; +CPToolbarSpaceItemIdentifier = "CPToolbarSpaceItem"; +CPToolbarFlexibleSpaceItemIdentifier = "CPToolbarFlexibleSpaceItem"; +CPToolbarShowColorsItemIdentifier = "CPToolbarShowColorsItem"; +CPToolbarShowFontsItemIdentifier = "CPToolbarShowFontsItem"; +CPToolbarCustomizeToolbarItemIdentifier = "CPToolbarCustomizeToolbarItem"; +CPToolbarPrintItemIdentifier = "CPToolbarPrintItem"; +{var the_class = objj_allocateClassPair(CPObject, "CPToolbarItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_itemIdentifier"), new objj_ivar("_toolbar"), new objj_ivar("_label"), new objj_ivar("_paletteLabel"), new objj_ivar("_toolTip"), new objj_ivar("_tag"), new objj_ivar("_target"), new objj_ivar("_action"), new objj_ivar("_isEnabled"), new objj_ivar("_image"), new objj_ivar("_alternateImage"), new objj_ivar("_view"), new objj_ivar("_minSize"), new objj_ivar("_maxSize"), new objj_ivar("_visibilityPriority"), new objj_ivar("_autovalidates")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPToolbarItem__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithItemIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithItemIdentifier:"), function $CPToolbarItem__initWithItemIdentifier_(self, _cmd, anItemIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPToolbarItem").super_class }, "init"); + if (self) + { + _itemIdentifier = anItemIdentifier; + _tag = 0; + _isEnabled = YES; + _minSize = CGSizeMakeZero(); + _maxSize = CGSizeMakeZero(); + _visibilityPriority = CPToolbarItemVisibilityPriorityStandard; + _autovalidates = YES; + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("itemIdentifier"), function $CPToolbarItem__itemIdentifier(self, _cmd) +{ with(self) +{ + return _itemIdentifier; +} +},["CPString"]), new objj_method(sel_getUid("toolbar"), function $CPToolbarItem__toolbar(self, _cmd) +{ with(self) +{ + return _toolbar; +} +},["CPToolbar"]), new objj_method(sel_getUid("_setToolbar:"), function $CPToolbarItem___setToolbar_(self, _cmd, aToolbar) +{ with(self) +{ + _toolbar = aToolbar; +} +},["void","CPToolbar"]), new objj_method(sel_getUid("label"), function $CPToolbarItem__label(self, _cmd) +{ with(self) +{ + return _label; +} +},["CPString"]), new objj_method(sel_getUid("setLabel:"), function $CPToolbarItem__setLabel_(self, _cmd, aLabel) +{ with(self) +{ + _label = aLabel; +} +},["void","CPString"]), new objj_method(sel_getUid("paletteLabel"), function $CPToolbarItem__paletteLabel(self, _cmd) +{ with(self) +{ + return _paletteLabel; +} +},["CPString"]), new objj_method(sel_getUid("setPaletteLabel:"), function $CPToolbarItem__setPaletteLabel_(self, _cmd, aPaletteLabel) +{ with(self) +{ + _paletteLabel = aPaletteLabel; +} +},["void","CPString"]), new objj_method(sel_getUid("toolTip"), function $CPToolbarItem__toolTip(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("toolTip"))) + return objj_msgSend(_view, "toolTip"); + return _toolTip; +} +},["CPString"]), new objj_method(sel_getUid("setToolTip:"), function $CPToolbarItem__setToolTip_(self, _cmd, aToolTip) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setToolTip:"))) + objj_msgSend(_view, "setToolTip:", aToolTip); + _toolTip = aToolTip; +} +},["void","CPString"]), new objj_method(sel_getUid("tag"), function $CPToolbarItem__tag(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("tag"))) + return objj_msgSend(_view, "tag"); + return _tag; +} +},["int"]), new objj_method(sel_getUid("setTag:"), function $CPToolbarItem__setTag_(self, _cmd, aTag) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setTag:"))) + objj_msgSend(_view, "setTag:", aTag); + _tag = aTag; +} +},["void","int"]), new objj_method(sel_getUid("target"), function $CPToolbarItem__target(self, _cmd) +{ with(self) +{ + if (_view) + return objj_msgSend(_view, "respondsToSelector:", sel_getUid("target")) ? objj_msgSend(_view, "target") : nil; + return _target; +} +},["id"]), new objj_method(sel_getUid("setTarget:"), function $CPToolbarItem__setTarget_(self, _cmd, aTarget) +{ with(self) +{ + if (!_view) + _target = aTarget; + else if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setTarget:"))) + objj_msgSend(_view, "setTarget:", aTarget); +} +},["void","id"]), new objj_method(sel_getUid("action"), function $CPToolbarItem__action(self, _cmd) +{ with(self) +{ + if (_view) + return objj_msgSend(_view, "respondsToSelector:", sel_getUid("action")) ? objj_msgSend(_view, "action") : nil; + return _action; +} +},["SEL"]), new objj_method(sel_getUid("setAction:"), function $CPToolbarItem__setAction_(self, _cmd, anAction) +{ with(self) +{ + if (!_view) + _action = anAction; + else if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setAction:"))) + objj_msgSend(_view, "setAction:", anAction); +} +},["void","SEL"]), new objj_method(sel_getUid("isEnabled"), function $CPToolbarItem__isEnabled(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("isEnabled"))) + return objj_msgSend(_view, "isEnabled"); + return _isEnabled; +} +},["BOOL"]), new objj_method(sel_getUid("setEnabled:"), function $CPToolbarItem__setEnabled_(self, _cmd, shouldBeEnabled) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setEnabled:"))) + objj_msgSend(_view, "setEnabled:", shouldBeEnabled); + _isEnabled = shouldBeEnabled; +} +},["void","BOOL"]), new objj_method(sel_getUid("image"), function $CPToolbarItem__image(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("image"))) + return objj_msgSend(_view, "image"); + return _image; +} +},["CPImage"]), new objj_method(sel_getUid("setImage:"), function $CPToolbarItem__setImage_(self, _cmd, anImage) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setImage:"))) + objj_msgSend(_view, "setImage:", anImage); + _image = anImage; + if (!_image) + return; + if (_minSize.width === 0 && _minSize.height === 0 && + _maxSize.width === 0 && _maxSize.height === 0) + { + var imageSize = objj_msgSend(_image, "size"); + if (imageSize.width > 0 || imageSize.height > 0) + { + objj_msgSend(self, "setMinSize:", imageSize); + objj_msgSend(self, "setMaxSize:", imageSize); + } + } +} +},["void","CPImage"]), new objj_method(sel_getUid("setAlternateImage:"), function $CPToolbarItem__setAlternateImage_(self, _cmd, anImage) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setAlternateImage:"))) + objj_msgSend(_view, "setAlternateImage:", anImage); + _alternateImage = anImage; +} +},["void","CPImage"]), new objj_method(sel_getUid("alternateImage"), function $CPToolbarItem__alternateImage(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("alternateIamge"))) + return objj_msgSend(_view, "alternateImage"); + return _alternateImage; +} +},["CPImage"]), new objj_method(sel_getUid("view"), function $CPToolbarItem__view(self, _cmd) +{ with(self) +{ + return _view; +} +},["CPView"]), new objj_method(sel_getUid("setView:"), function $CPToolbarItem__setView_(self, _cmd, aView) +{ with(self) +{ + if (_view == aView) + return; + _view = aView; + if (_view) + { + if (_tag !== 0 && objj_msgSend(_view, "respondsToSelector:", sel_getUid("setTag:"))) + objj_msgSend(_view, "setTag:", _tag); + _target = nil; + _action = nil; + } +} +},["void","CPView"]), new objj_method(sel_getUid("minSize"), function $CPToolbarItem__minSize(self, _cmd) +{ with(self) +{ + return _minSize; +} +},["CGSize"]), new objj_method(sel_getUid("setMinSize:"), function $CPToolbarItem__setMinSize_(self, _cmd, aMinSize) +{ with(self) +{ + if(!aMinSize.height || !aMinSize.width) + return; + _minSize = CGSizeMakeCopy(aMinSize); + _maxSize = CGSizeMake(MAX(_minSize.width, _maxSize.width), MAX(_minSize.height, _maxSize.height)); +} +},["void","CGSize"]), new objj_method(sel_getUid("maxSize"), function $CPToolbarItem__maxSize(self, _cmd) +{ with(self) +{ + return _maxSize; +} +},["CGSize"]), new objj_method(sel_getUid("setMaxSize:"), function $CPToolbarItem__setMaxSize_(self, _cmd, aMaxSize) +{ with(self) +{ + if(!aMaxSize.height || !aMaxSize.width) + return; + _maxSize = CGSizeMakeCopy(aMaxSize); + _minSize = CGSizeMake(MIN(_minSize.width, _maxSize.width), MIN(_minSize.height, _maxSize.height)); +} +},["void","CGSize"]), new objj_method(sel_getUid("visibilityPriority"), function $CPToolbarItem__visibilityPriority(self, _cmd) +{ with(self) +{ + return _visibilityPriority; +} +},["int"]), new objj_method(sel_getUid("setVisibilityPriority:"), function $CPToolbarItem__setVisibilityPriority_(self, _cmd, aVisibilityPriority) +{ with(self) +{ + _visibilityPriority = aVisibilityPriority; +} +},["void","int"]), new objj_method(sel_getUid("validate"), function $CPToolbarItem__validate(self, _cmd) +{ with(self) +{ + var action = objj_msgSend(self, "action"), + target = objj_msgSend(self, "target"); + if (_view) + { + if (objj_msgSend(target, "respondsToSelector:", sel_getUid("validateToolbarItem:"))) + objj_msgSend(self, "setEnabled:", objj_msgSend(target, "validateToolbarItem:", self)); + return; + } + if (!action) + return objj_msgSend(self, "setEnabled:", NO); + if (target && !objj_msgSend(target, "respondsToSelector:", action)) + return objj_msgSend(self, "setEnabled:", NO); + target = objj_msgSend(CPApp, "targetForAction:to:from:", action, target, self); + if (!target) + return objj_msgSend(self, "setEnabled:", NO); + if (objj_msgSend(target, "respondsToSelector:", sel_getUid("validateToolbarItem:"))) + objj_msgSend(self, "setEnabled:", objj_msgSend(target, "validateToolbarItem:", self)); + else + objj_msgSend(self, "setEnabled:", YES); +} +},["void"]), new objj_method(sel_getUid("autovalidates"), function $CPToolbarItem__autovalidates(self, _cmd) +{ with(self) +{ + return _autovalidates; +} +},["BOOL"]), new objj_method(sel_getUid("setAutovalidates:"), function $CPToolbarItem__setAutovalidates_(self, _cmd, shouldAutovalidate) +{ with(self) +{ + _autovalidates = !!shouldAutovalidate; +} +},["void","BOOL"])]); +} +var CPToolbarItemItemIdentifierKey = "CPToolbarItemItemIdentifierKey", + CPToolbarItemLabelKey = "CPToolbarItemLabelKey", + CPToolbarItemPaletteLabelKey = "CPToolbarItemPaletteLabelKey", + CPToolbarItemToolTipKey = "CPToolbarItemToolTipKey", + CPToolbarItemTagKey = "CPToolbarItemTagKey", + CPToolbarItemTargetKey = "CPToolbarItemTargetKey", + CPToolbarItemActionKey = "CPToolbarItemActionKey", + CPToolbarItemEnabledKey = "CPToolbarItemEnabledKey", + CPToolbarItemImageKey = "CPToolbarItemImageKey", + CPToolbarItemAlternateImageKey = "CPToolbarItemAlternateImageKey", + CPToolbarItemViewKey = "CPToolbarItemViewKey", + CPToolbarItemMinSizeKey = "CPToolbarItemMinSizeKey", + CPToolbarItemMaxSizeKey = "CPToolbarItemMaxSizeKey", + CPToolbarItemVisibilityPriorityKey = "CPToolbarItemVisibilityPriorityKey", + CPToolbarItemAutovalidatesKey = "CPToolbarItemAutovalidatesKey"; +{ +var the_class = objj_getClass("CPToolbarItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPToolbarItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPToolbarItem").super_class }, "init"); + if (self) + { + _itemIdentifier = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemItemIdentifierKey); + _minSize = objj_msgSend(aCoder, "decodeSizeForKey:", CPToolbarItemMinSizeKey); + _maxSize = objj_msgSend(aCoder, "decodeSizeForKey:", CPToolbarItemMaxSizeKey); + objj_msgSend(self, "setLabel:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemLabelKey)); + objj_msgSend(self, "setPaletteLabel:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemPaletteLabelKey)); + objj_msgSend(self, "setToolTip:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemToolTipKey)); + objj_msgSend(self, "setTag:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemTagKey)); + objj_msgSend(self, "setTarget:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemTargetKey)); + objj_msgSend(self, "setAction:", CPSelectorFromString(objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemActionKey))); + objj_msgSend(self, "setEnabled:", objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarItemEnabledKey)); + objj_msgSend(self, "setImage:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemImageKey)); + objj_msgSend(self, "setAlternateImage:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemAlternateImageKey)); + objj_msgSend(self, "setView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemViewKey)); + objj_msgSend(self, "setVisibilityPriority:", objj_msgSend(aCoder, "decodeIntForKey:", CPToolbarItemVisibilityPriorityKey)); + objj_msgSend(self, "setAutovalidates:", objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarItemAutovalidatesKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPToolbarItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _itemIdentifier, CPToolbarItemItemIdentifierKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "label"), CPToolbarItemLabelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "paletteLabel"), CPToolbarItemPaletteLabelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "toolTip"), CPToolbarItemToolTipKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "tag"), CPToolbarItemTagKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "target"), CPToolbarItemTargetKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "action"), CPToolbarItemActionKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "isEnabled"), CPToolbarItemEnabledKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "image"), CPToolbarItemImageKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "alternateImage"), CPToolbarItemAlternateImageKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "view"), CPToolbarItemViewKey); + objj_msgSend(aCoder, "encodeSize:forKey:", objj_msgSend(self, "minSize"), CPToolbarItemMinSizeKey); + objj_msgSend(aCoder, "encodeSize:forKey:", objj_msgSend(self, "maxSize"), CPToolbarItemMaxSizeKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "visibilityPriority"), CPToolbarItemVisibilityPriorityKey); + objj_msgSend(aCoder, "encodeBool:forKey:", objj_msgSend(self, "autovalidates"), CPToolbarItemAutovalidatesKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPToolbarItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("copy"), function $CPToolbarItem__copy(self, _cmd) +{ with(self) +{ + var copy = objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "initWithItemIdentifier:", _itemIdentifier); + if (_view) + objj_msgSend(copy, "setView:", objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _view))); + objj_msgSend(copy, "_setToolbar:", _toolbar); + objj_msgSend(copy, "setLabel:", _label); + objj_msgSend(copy, "setPaletteLabel:", _paletteLabel); + objj_msgSend(copy, "setToolTip:", objj_msgSend(self, "toolTip")); + objj_msgSend(copy, "setTag:", objj_msgSend(self, "tag")); + objj_msgSend(copy, "setTarget:", objj_msgSend(self, "target")); + objj_msgSend(copy, "setAction:", objj_msgSend(self, "action")); + objj_msgSend(copy, "setEnabled:", objj_msgSend(self, "isEnabled")); + objj_msgSend(copy, "setImage:", objj_msgSend(self, "image")); + objj_msgSend(copy, "setAlternateImage:", objj_msgSend(self, "alternateImage")); + objj_msgSend(copy, "setMinSize:", _minSize); + objj_msgSend(copy, "setMaxSize:", _maxSize); + objj_msgSend(copy, "setVisibilityPriority:", objj_msgSend(self, "visibilityPriority")); + objj_msgSend(copy, "setAutovalidates:", objj_msgSend(self, "autovalidates")); + return copy; +} +},["id"])]); +} +{ +var the_class = objj_getClass("CPToolbarItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +var meta_class = the_class.isa;class_addMethods(meta_class, [new objj_method(sel_getUid("_standardItemWithItemIdentifier:"), function $CPToolbarItem___standardItemWithItemIdentifier_(self, _cmd, anItemIdentifier) +{ with(self) +{ + switch (anItemIdentifier) + { + case CPToolbarSeparatorItemIdentifier: return objj_msgSend(_CPToolbarSeparatorItem, "new"); + case CPToolbarSpaceItemIdentifier: return objj_msgSend(_CPToolbarSpaceItem, "new"); + case CPToolbarFlexibleSpaceItemIdentifier: return objj_msgSend(_CPToolbarFlexibleSpaceItem, "new"); + case CPToolbarShowColorsItemIdentifier: return objj_msgSend(_CPToolbarShowColorsItem, "new"); + case CPToolbarShowFontsItemIdentifier: return nil; + case CPToolbarCustomizeToolbarItemIdentifier: return nil; + case CPToolbarPrintItemIdentifier: return nil; + } + return nil; +} +},["CPToolbarItem","CPString"])]); +} +objj_executeFile("_CPToolbarFlexibleSpaceItem.j", YES); +objj_executeFile("_CPToolbarShowColorsItem.j", YES); +objj_executeFile("_CPToolbarSeparatorItem.j", YES); +objj_executeFile("_CPToolbarSpaceItem.j", YES); + +p;12;CPTreeNode.jt;5250;@STATIC;1.0;I;21;Foundation/CPObject.jt;5205; + + +objj_executeFile("Foundation/CPObject.j", NO); + + +{var the_class = objj_allocateClassPair(CPObject, "CPTreeNode"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_representedObject"), new objj_ivar("_parentNode"), new objj_ivar("_childNodes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("representedObject"), function $CPTreeNode__representedObject(self, _cmd) +{ with(self) +{ +return _representedObject; +} +},["id"]), +new objj_method(sel_getUid("parentNode"), function $CPTreeNode__parentNode(self, _cmd) +{ with(self) +{ +return _parentNode; +} +},["id"]), new objj_method(sel_getUid("initWithRepresentedObject:"), function $CPTreeNode__initWithRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTreeNode").super_class }, "init"); + + if (self) + { + _representedObject = anObject; + _childNodes = []; + } + + return self; +} +},["id","id"]), new objj_method(sel_getUid("isLeaf"), function $CPTreeNode__isLeaf(self, _cmd) +{ with(self) +{ + return objj_msgSend(_childNodes, "count") <= 0; +} +},["BOOL"]), new objj_method(sel_getUid("childNodes"), function $CPTreeNode__childNodes(self, _cmd) +{ with(self) +{ + return objj_msgSend(_childNodes, "copy"); +} +},["CPArray"]), new objj_method(sel_getUid("mutableChildNodes"), function $CPTreeNode__mutableChildNodes(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "mutableArrayValueForKey:", "childNodes"); +} +},["CPMutableArray"]), new objj_method(sel_getUid("insertObject:inChildNodesAtIndex:"), function $CPTreeNode__insertObject_inChildNodesAtIndex_(self, _cmd, aTreeNode, anIndex) +{ with(self) +{ + objj_msgSend(objj_msgSend(aTreeNode._parentNode, "mutableChildNodes"), "removeObjectIdenticalTo:", aTreeNode); + + aTreeNode._parentNode = self; + + objj_msgSend(_childNodes, "insertObject:atIndex:", aTreeNode, anIndex); +} +},["void","id","CPInteger"]), new objj_method(sel_getUid("removeObjectFromChildNodesAtIndex:"), function $CPTreeNode__removeObjectFromChildNodesAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(_childNodes, "objectAtIndex:", anIndex)._parentNode = nil; + + objj_msgSend(_childNodes, "removeObjectAtIndex:", anIndex); +} +},["void","CPInteger"]), new objj_method(sel_getUid("replaceObjectFromChildNodesAtIndex:withObject:"), function $CPTreeNode__replaceObjectFromChildNodesAtIndex_withObject_(self, _cmd, anIndex, aTreeNode) +{ with(self) +{ + var oldTreeNode = objj_msgSend(_childNodes, "objectAtIndex:", anIndex); + + oldTreeNode._parentNode = nil; + aTreeNode._parentNode = self; + + objj_msgSend(_childNodes, "replaceObjectAtIndex:withObject:", anIndex, aTreeNode); +} +},["void","CPInteger","id"]), new objj_method(sel_getUid("objectInChildNodesAtIndex:"), function $CPTreeNode__objectInChildNodesAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return _childNodes[anIndex]; +} +},["id","CPInteger"]), new objj_method(sel_getUid("sortWithSortDescriptors:recursively:"), function $CPTreeNode__sortWithSortDescriptors_recursively_(self, _cmd, sortDescriptors, shouldSortRecursively) +{ with(self) +{ + objj_msgSend(_childNodes, "sortUsingDescriptors:", sortDescriptors); + + if (!shouldSortRecursively) + return; + + var count = objj_msgSend(_childNodes, "count"); + + while (count--) + objj_msgSend(_childNodes[count], "sortWithSortDescriptors:recursively:", sortDescriptors, YES); +} +},["void","CPArray","BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("treeNodeWithRepresentedObject:"), function $CPTreeNode__treeNodeWithRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithRepresentedObject:", anObject); +} +},["id","id"])]); +} + +var CPTreeNodeRepresentedObjectKey = "CPTreeNodeRepresentedObjectKey", + CPTreeNodeParentNodeKey = "CPTreeNodeParentNodeKey", + CPTreeNodeChildNodesKey = "CPTreeNodeChildNodesKey"; + +{ +var the_class = objj_getClass("CPTreeNode") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTreeNode\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTreeNode__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTreeNode").super_class }, "init"); + + if (self) + { + _representedObject = objj_msgSend(aCoder, "decodeObjectForKey:", CPTreeNodeRepresentedObjectKey); + _parentNode = objj_msgSend(aCoder, "decodeObjectForKey:", CPTreeNodeParentNodeKey); + _childNodes = objj_msgSend(aCoder, "decodeObjectForKey:", CPTreeNodeChildNodesKey); + } + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTreeNode__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _representedObject, CPTreeNodeRepresentedObjectKey); + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _parentNode, CPTreeNodeParentNodeKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _childNodes, CPTreeNodeChildNodesKey); +} +},["void","CPCoder"])]); +} + +p;8;CPView.jt;86577;@STATIC;1.0;I;20;Foundation/CPArray.jI;26;Foundation/CPObjJRuntime.ji;19;CGAffineTransform.ji;12;CGGeometry.ji;9;CPColor.ji;12;CPGeometry.ji;19;CPGraphicsContext.ji;13;CPResponder.ji;9;CPTheme.ji;18;_CPDisplayServer.jt;86352;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPObjJRuntime.j", NO); +objj_executeFile("CGAffineTransform.j", YES); +objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPColor.j", YES); +objj_executeFile("CPGeometry.j", YES); +objj_executeFile("CPGraphicsContext.j", YES); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPTheme.j", YES); +objj_executeFile("_CPDisplayServer.j", YES); +CPViewNotSizable = 0; +CPViewMinXMargin = 1; +CPViewWidthSizable = 2; +CPViewMaxXMargin = 4; +CPViewMinYMargin = 8; +CPViewHeightSizable = 16; +CPViewMaxYMargin = 32; +CPViewBoundsDidChangeNotification = "CPViewBoundsDidChangeNotification"; +CPViewFrameDidChangeNotification = "CPViewFrameDidChangeNotification"; +var CachedNotificationCenter = nil, + CachedThemeAttributes = nil; +var DOMElementPrototype = nil, + BackgroundTrivialColor = 0, + BackgroundVerticalThreePartImage = 1, + BackgroundHorizontalThreePartImage = 2, + BackgroundNinePartImage = 3, + BackgroundTransparentColor = 4; +var CPViewFlags = { }, + CPViewHasCustomDrawRect = 1 << 0, + CPViewHasCustomLayoutSubviews = 1 << 1; +{var the_class = objj_allocateClassPair(CPResponder, "CPView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window"), new objj_ivar("_superview"), new objj_ivar("_subviews"), new objj_ivar("_graphicsContext"), new objj_ivar("_tag"), new objj_ivar("_frame"), new objj_ivar("_bounds"), new objj_ivar("_boundsTransform"), new objj_ivar("_inverseBoundsTransform"), new objj_ivar("_registeredDraggedTypes"), new objj_ivar("_registeredDraggedTypesArray"), new objj_ivar("_isHidden"), new objj_ivar("_hitTests"), new objj_ivar("_clipsToBounds"), new objj_ivar("_postsFrameChangedNotifications"), new objj_ivar("_postsBoundsChangedNotifications"), new objj_ivar("_inhibitFrameAndBoundsChangedNotifications"), new objj_ivar("_DOMElement"), new objj_ivar("_DOMContentsElement"), new objj_ivar("_DOMImageParts"), new objj_ivar("_DOMImageSizes"), new objj_ivar("_backgroundType"), new objj_ivar("_dirtyRect"), new objj_ivar("_opacity"), new objj_ivar("_backgroundColor"), new objj_ivar("_autoresizesSubviews"), new objj_ivar("_autoresizingMask"), new objj_ivar("_layer"), new objj_ivar("_wantsLayer"), new objj_ivar("_isInFullScreenMode"), new objj_ivar("_fullScreenModeState"), new objj_ivar("_needsLayout"), new objj_ivar("_ephemeralSubviews"), new objj_ivar("_theme"), new objj_ivar("_themeAttributes"), new objj_ivar("_themeState"), new objj_ivar("_ephemeralSubviewsForNames"), new objj_ivar("_ephereralSubviews"), new objj_ivar("_nextKeyView"), new objj_ivar("_previousKeyView"), new objj_ivar("_viewClassFlags")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setupViewFlags"), function $CPView__setupViewFlags(self, _cmd) +{ with(self) +{ + var theClass = objj_msgSend(self, "class"), + classUID = objj_msgSend(theClass, "UID"); + if (CPViewFlags[classUID] === undefined) + { + var flags = 0; + if (objj_msgSend(theClass, "instanceMethodForSelector:", sel_getUid("drawRect:")) !== objj_msgSend(CPView, "instanceMethodForSelector:", sel_getUid("drawRect:"))) + flags |= CPViewHasCustomDrawRect; + if (objj_msgSend(theClass, "instanceMethodForSelector:", sel_getUid("layoutSubviews")) !== objj_msgSend(CPView, "instanceMethodForSelector:", sel_getUid("layoutSubviews"))) + flags |= CPViewHasCustomLayoutSubviews; + CPViewFlags[classUID] = flags; + } + _viewClassFlags = CPViewFlags[classUID]; +} +},["void"]), new objj_method(sel_getUid("init"), function $CPView__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithFrame:", CGRectMakeZero()); +} +},["id"]), new objj_method(sel_getUid("initWithFrame:"), function $CPView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "init"); + if (self) + { + var width = (aFrame.size.width), + height = (aFrame.size.height); + _subviews = []; + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; + _tag = -1; + _frame = { origin: { x:aFrame.origin.x, y:aFrame.origin.y }, size: { width:aFrame.size.width, height:aFrame.size.height } }; + _bounds = { origin: { x:0.0, y:0.0 }, size: { width:width, height:height } }; + _autoresizingMask = CPViewNotSizable; + _autoresizesSubviews = YES; + _clipsToBounds = YES; + _opacity = 1.0; + _isHidden = NO; + _hitTests = YES; + _DOMElement = DOMElementPrototype.cloneNode(false); + if (NULL) var ____p = { x:CGPointMake((aFrame.origin.x), (aFrame.origin.y)).x * NULL.a + CGPointMake((aFrame.origin.x), (aFrame.origin.y)).y * NULL.c + NULL.tx, y:CGPointMake((aFrame.origin.x), (aFrame.origin.y)).x * NULL.b + CGPointMake((aFrame.origin.x), (aFrame.origin.y)).y * NULL.d + NULL.ty }; else var ____p = { x:(aFrame.origin.x), y:(aFrame.origin.y) }; _DOMElement.style.left = ROUND(____p.x) + "px";_DOMElement.style.top = ROUND(____p.y) + "px";; + _DOMElement.style.width = MAX(0.0, ROUND(width)) + "px"; _DOMElement.style.height = MAX(0.0, ROUND(height)) + "px";; + _DOMImageParts = []; + _DOMImageSizes = []; + _theme = objj_msgSend(CPTheme, "defaultTheme"); + _themeState = CPThemeStateNormal; + objj_msgSend(self, "setupViewFlags"); + objj_msgSend(self, "_loadThemeAttributes"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("superview"), function $CPView__superview(self, _cmd) +{ with(self) +{ + return _superview; +} +},["CPView"]), new objj_method(sel_getUid("subviews"), function $CPView__subviews(self, _cmd) +{ with(self) +{ + return objj_msgSend(_subviews, "copy"); +} +},["CPArray"]), new objj_method(sel_getUid("window"), function $CPView__window(self, _cmd) +{ with(self) +{ + return _window; +} +},["CPWindow"]), new objj_method(sel_getUid("addSubview:"), function $CPView__addSubview_(self, _cmd, aSubview) +{ with(self) +{ + objj_msgSend(self, "_insertSubview:atIndex:", aSubview, CPNotFound); +} +},["void","CPView"]), new objj_method(sel_getUid("addSubview:positioned:relativeTo:"), function $CPView__addSubview_positioned_relativeTo_(self, _cmd, aSubview, anOrderingMode, anotherView) +{ with(self) +{ + var index = anotherView ? objj_msgSend(_subviews, "indexOfObjectIdenticalTo:", anotherView) : CPNotFound; + if (index === CPNotFound) + index = (anOrderingMode === CPWindowAbove) ? objj_msgSend(_subviews, "count") : 0; + else if (anOrderingMode === CPWindowAbove) + ++index; + objj_msgSend(self, "_insertSubview:atIndex:", aSubview, index); +} +},["void","CPView","CPWindowOrderingMode","CPView"]), new objj_method(sel_getUid("_insertSubview:atIndex:"), function $CPView___insertSubview_atIndex_(self, _cmd, aSubview, anIndex) +{ with(self) +{ + var count = _subviews.length; + objj_msgSend(objj_msgSend(self, "window"), "_dirtyKeyViewLoop"); + if (aSubview._superview == self) + { + var index = objj_msgSend(_subviews, "indexOfObjectIdenticalTo:", aSubview); + if (index === anIndex || index === count - 1 && anIndex === count) + return; + objj_msgSend(_subviews, "removeObjectAtIndex:", index); + _DOMElement.removeChild(aSubview._DOMElement); + if (anIndex > index) + --anIndex; + --count; + } + else + { + objj_msgSend(aSubview, "removeFromSuperview"); + objj_msgSend(aSubview, "_setWindow:", _window); + objj_msgSend(aSubview, "viewWillMoveToSuperview:", self); + aSubview._superview = self; + } + if (anIndex === CPNotFound || anIndex >= count) + { + _subviews.push(aSubview); + _DOMElement.appendChild(aSubview._DOMElement); + } + else + { + _subviews.splice(anIndex, 0, aSubview); + _DOMElement.insertBefore(aSubview._DOMElement, _subviews[anIndex + 1]._DOMElement); + } + objj_msgSend(aSubview, "setNextResponder:", self); + objj_msgSend(aSubview, "viewDidMoveToSuperview"); + objj_msgSend(self, "didAddSubview:", aSubview); +} +},["void","CPView","int"]), new objj_method(sel_getUid("didAddSubview:"), function $CPView__didAddSubview_(self, _cmd, aSubview) +{ with(self) +{ +} +},["void","CPView"]), new objj_method(sel_getUid("removeFromSuperview"), function $CPView__removeFromSuperview(self, _cmd) +{ with(self) +{ + if (!_superview) + return; + objj_msgSend(objj_msgSend(self, "window"), "_dirtyKeyViewLoop"); + objj_msgSend(_superview, "willRemoveSubview:", self); + objj_msgSend(_superview._subviews, "removeObject:", self); + _superview._DOMElement.removeChild(_DOMElement); + _superview = nil; + objj_msgSend(self, "_setWindow:", nil); +} +},["void"]), new objj_method(sel_getUid("replaceSubview:with:"), function $CPView__replaceSubview_with_(self, _cmd, aSubview, aView) +{ with(self) +{ + if (aSubview._superview != self) + return; + var index = objj_msgSend(_subviews, "indexOfObjectIdenticalTo:", aSubview); + objj_msgSend(aSubview, "removeFromSuperview"); + objj_msgSend(self, "_insertSubview:atIndex:", aView, index); +} +},["void","CPView","CPView"]), new objj_method(sel_getUid("setSubviews:"), function $CPView__setSubviews_(self, _cmd, newSubviews) +{ with(self) +{ + if (!newSubviews) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "newSubviews cannot be nil in -[CPView setSubviews:]"); + if (objj_msgSend(_subviews, "isEqual:", newSubviews)) + return; + if (objj_msgSend(_subviews, "count") === 0) + { + var index = 0, + count = objj_msgSend(newSubviews, "count"); + for (; index < count; ++index) + objj_msgSend(self, "addSubview:", newSubviews[index]); + return; + } + if (objj_msgSend(newSubviews, "count") === 0) + { + var count = objj_msgSend(_subviews, "count"); + while (count--) + objj_msgSend(_subviews[count], "removeFromSuperview"); + return; + } + var removedSubviews = objj_msgSend(CPMutableSet, "setWithArray:", _subviews); + objj_msgSend(removedSubviews, "removeObjectsInArray:", newSubviews); + objj_msgSend(removedSubviews, "makeObjectsPerformSelector:", sel_getUid("removeFromSuperview")); + var addedSubviews = objj_msgSend(CPMutableSet, "setWithArray:", newSubviews); + objj_msgSend(addedSubviews, "removeObjectsInArray:", _subviews); + var addedSubview = nil, + addedSubviewEnumerator = objj_msgSend(addedSubviews, "objectEnumerator"); + while (addedSubview = objj_msgSend(addedSubviewEnumerator, "nextObject")) + objj_msgSend(self, "addSubview:", addedSubview); + if (objj_msgSend(_subviews, "isEqual:", newSubviews)) + return; + _subviews = objj_msgSend(newSubviews, "copy"); + var index = 0, + count = objj_msgSend(_subviews, "count"); + for (; index < count; ++index) + { + var subview = _subviews[index]; + _DOMElement.removeChild(subview._DOMElement); + _DOMElement.appendChild(subview._DOMElement); + } +} +},["void","CPArray"]), new objj_method(sel_getUid("_setWindow:"), function $CPView___setWindow_(self, _cmd, aWindow) +{ with(self) +{ + if (_window === aWindow) + return; + objj_msgSend(objj_msgSend(self, "window"), "_dirtyKeyViewLoop"); + if (objj_msgSend(_window, "firstResponder") === self) + objj_msgSend(_window, "makeFirstResponder:", nil); + objj_msgSend(self, "viewWillMoveToWindow:", aWindow); + if (_registeredDraggedTypes) + { + objj_msgSend(_window, "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + objj_msgSend(aWindow, "_noteRegisteredDraggedTypes:", _registeredDraggedTypes); + } + _window = aWindow; + var count = objj_msgSend(_subviews, "count"); + while (count--) + objj_msgSend(_subviews[count], "_setWindow:", aWindow); + objj_msgSend(self, "viewDidMoveToWindow"); + objj_msgSend(objj_msgSend(self, "window"), "_dirtyKeyViewLoop"); +} +},["void","CPWindow"]), new objj_method(sel_getUid("isDescendantOf:"), function $CPView__isDescendantOf_(self, _cmd, aView) +{ with(self) +{ + var view = self; + do + { + if (view == aView) + return YES; + } while(view = objj_msgSend(view, "superview")) + return NO; +} +},["BOOL","CPView"]), new objj_method(sel_getUid("viewDidMoveToSuperview"), function $CPView__viewDidMoveToSuperview(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $CPView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("viewWillMoveToSuperview:"), function $CPView__viewWillMoveToSuperview_(self, _cmd, aView) +{ with(self) +{ +} +},["void","CPView"]), new objj_method(sel_getUid("viewWillMoveToWindow:"), function $CPView__viewWillMoveToWindow_(self, _cmd, aWindow) +{ with(self) +{ +} +},["void","CPWindow"]), new objj_method(sel_getUid("willRemoveSubview:"), function $CPView__willRemoveSubview_(self, _cmd, aView) +{ with(self) +{ +} +},["void","CPView"]), new objj_method(sel_getUid("enclosingMenuItem"), function $CPView__enclosingMenuItem(self, _cmd) +{ with(self) +{ + var view = self; + while (view && !objj_msgSend(view, "isKindOfClass:", objj_msgSend(_CPMenuItemView, "class"))) + view = objj_msgSend(view, "superview"); + if (view) + return view._menuItem; + return nil; +} +},["CPMenuItem"]), new objj_method(sel_getUid("setTag:"), function $CPView__setTag_(self, _cmd, aTag) +{ with(self) +{ + _tag = aTag; +} +},["void","CPInteger"]), new objj_method(sel_getUid("tag"), function $CPView__tag(self, _cmd) +{ with(self) +{ + return _tag; +} +},["CPInteger"]), new objj_method(sel_getUid("viewWithTag:"), function $CPView__viewWithTag_(self, _cmd, aTag) +{ with(self) +{ + if (objj_msgSend(self, "tag") == aTag) + return self; + var index = 0, + count = _subviews.length; + for (; index < count; ++index) + { + var view = objj_msgSend(_subviews[index], "viewWithTag:", aTag); + if (view) + return view; + } + return nil; +} +},["CPView","CPInteger"]), new objj_method(sel_getUid("isFlipped"), function $CPView__isFlipped(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("setFrame:"), function $CPView__setFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (((_frame.origin.x == aFrame.origin.x && _frame.origin.y == aFrame.origin.y) && (_frame.size.width == aFrame.size.width && _frame.size.height == aFrame.size.height))) + return; + _inhibitFrameAndBoundsChangedNotifications = YES; + objj_msgSend(self, "setFrameOrigin:", aFrame.origin); + objj_msgSend(self, "setFrameSize:", aFrame.size); + _inhibitFrameAndBoundsChangedNotifications = NO; + if (_postsFrameChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewFrameDidChangeNotification, self); +} +},["void","CGRect"]), new objj_method(sel_getUid("frame"), function $CPView__frame(self, _cmd) +{ with(self) +{ + return { origin: { x:_frame.origin.x, y:_frame.origin.y }, size: { width:_frame.size.width, height:_frame.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("frameOrigin"), function $CPView__frameOrigin(self, _cmd) +{ with(self) +{ + return { x:_frame.origin.x, y:_frame.origin.y }; +} +},["CGPoint"]), new objj_method(sel_getUid("frameSize"), function $CPView__frameSize(self, _cmd) +{ with(self) +{ + return { width:_frame.size.width, height:_frame.size.height }; +} +},["CGSize"]), new objj_method(sel_getUid("setCenter:"), function $CPView__setCenter_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSend(self, "setFrameOrigin:", CGPointMake(aPoint.x - _frame.size.width / 2.0, aPoint.y - _frame.size.height / 2.0)); +} +},["void","CGPoint"]), new objj_method(sel_getUid("center"), function $CPView__center(self, _cmd) +{ with(self) +{ + return CGPointMake(_frame.size.width / 2.0 + _frame.origin.x, _frame.size.height / 2.0 + _frame.origin.y); +} +},["CGPoint"]), new objj_method(sel_getUid("setFrameOrigin:"), function $CPView__setFrameOrigin_(self, _cmd, aPoint) +{ with(self) +{ + var origin = _frame.origin; + if (!aPoint || (origin.x == aPoint.x && origin.y == aPoint.y)) + return; + origin.x = aPoint.x; + origin.y = aPoint.y; + if (_postsFrameChangedNotifications && !_inhibitFrameAndBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewFrameDidChangeNotification, self); + var transform = _superview ? _superview._boundsTransform : NULL; + if (transform) var ____p = { x:CGPointMake(origin.x, origin.y).x * transform.a + CGPointMake(origin.x, origin.y).y * transform.c + transform.tx, y:CGPointMake(origin.x, origin.y).x * transform.b + CGPointMake(origin.x, origin.y).y * transform.d + transform.ty }; else var ____p = { x:origin.x, y:origin.y }; _DOMElement.style.left = ROUND(____p.x) + "px";_DOMElement.style.top = ROUND(____p.y) + "px";; +} +},["void","CGPoint"]), new objj_method(sel_getUid("setFrameSize:"), function $CPView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + var size = _frame.size; + if (!aSize || (size.width == aSize.width && size.height == aSize.height)) + return; + var oldSize = { width:size.width, height:size.height }; + size.width = aSize.width; + size.height = aSize.height; + if (YES) + { + _bounds.size.width = aSize.width; + _bounds.size.height = aSize.height; + } + if (_layer) + objj_msgSend(_layer, "_owningViewBoundsChanged"); + if (_autoresizesSubviews) + objj_msgSend(self, "resizeSubviewsWithOldSize:", oldSize); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + _DOMElement.style.width = MAX(0.0, ROUND(size.width)) + "px"; _DOMElement.style.height = MAX(0.0, ROUND(size.height)) + "px";; + if (_DOMContentsElement) + { + _DOMContentsElement.width = MAX(0.0, ROUND(size.width)); _DOMContentsElement.height = MAX(0.0, ROUND(size.height));; + _DOMContentsElement.style.width = MAX(0.0, ROUND(size.width)) + "px"; _DOMContentsElement.style.height = MAX(0.0, ROUND(size.height)) + "px";; + } + if (_backgroundType !== BackgroundTrivialColor) + { + if (_backgroundType === BackgroundTransparentColor) + { + _DOMImageParts[0].style.width = MAX(0.0, ROUND(size.width)) + "px"; _DOMImageParts[0].style.height = MAX(0.0, ROUND(size.height)) + "px";; + } + else + { + var images = objj_msgSend(objj_msgSend(_backgroundColor, "patternImage"), "imageSlices"); + if (_backgroundType === BackgroundVerticalThreePartImage) + { + _DOMImageParts[1].style.width = MAX(0.0, ROUND(size.width)) + "px"; _DOMImageParts[1].style.height = MAX(0.0, ROUND(size.height - _DOMImageSizes[0].height - _DOMImageSizes[2].height)) + "px";; + } + else if (_backgroundType === BackgroundHorizontalThreePartImage) + { + _DOMImageParts[1].style.width = MAX(0.0, ROUND(size.width - _DOMImageSizes[0].width - _DOMImageSizes[2].width)) + "px"; _DOMImageParts[1].style.height = MAX(0.0, ROUND(size.height)) + "px";; + } + else if (_backgroundType === BackgroundNinePartImage) + { + var width = size.width - _DOMImageSizes[0].width - _DOMImageSizes[2].width, + height = size.height - _DOMImageSizes[0].height - _DOMImageSizes[6].height; + _DOMImageParts[1].style.width = MAX(0.0, ROUND(width)) + "px"; _DOMImageParts[1].style.height = MAX(0.0, ROUND(_DOMImageSizes[0].height)) + "px";; + _DOMImageParts[3].style.width = MAX(0.0, ROUND(_DOMImageSizes[3].width)) + "px"; _DOMImageParts[3].style.height = MAX(0.0, ROUND(height)) + "px";; + _DOMImageParts[4].style.width = MAX(0.0, ROUND(width)) + "px"; _DOMImageParts[4].style.height = MAX(0.0, ROUND(height)) + "px";; + _DOMImageParts[5].style.width = MAX(0.0, ROUND(_DOMImageSizes[5].width)) + "px"; _DOMImageParts[5].style.height = MAX(0.0, ROUND(height)) + "px";; + _DOMImageParts[7].style.width = MAX(0.0, ROUND(width)) + "px"; _DOMImageParts[7].style.height = MAX(0.0, ROUND(_DOMImageSizes[7].height)) + "px";; + } + } + } + if (_postsFrameChangedNotifications && !_inhibitFrameAndBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewFrameDidChangeNotification, self); +} +},["void","CGSize"]), new objj_method(sel_getUid("setBounds:"), function $CPView__setBounds_(self, _cmd, bounds) +{ with(self) +{ + if (((_bounds.origin.x == bounds.origin.x && _bounds.origin.y == bounds.origin.y) && (_bounds.size.width == bounds.size.width && _bounds.size.height == bounds.size.height))) + return; + _inhibitFrameAndBoundsChangedNotifications = YES; + objj_msgSend(self, "setBoundsOrigin:", bounds.origin); + objj_msgSend(self, "setBoundsSize:", bounds.size); + _inhibitFrameAndBoundsChangedNotifications = NO; + if (_postsBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewBoundsDidChangeNotification, self); +} +},["void","CGRect"]), new objj_method(sel_getUid("bounds"), function $CPView__bounds(self, _cmd) +{ with(self) +{ + return { origin: { x:_bounds.origin.x, y:_bounds.origin.y }, size: { width:_bounds.size.width, height:_bounds.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("boundsOrigin"), function $CPView__boundsOrigin(self, _cmd) +{ with(self) +{ + return { x:_bounds.origin.x, y:_bounds.origin.y }; +} +},["CGPoint"]), new objj_method(sel_getUid("boundsSize"), function $CPView__boundsSize(self, _cmd) +{ with(self) +{ + return { width:_bounds.size.width, height:_bounds.size.height }; +} +},["CGSize"]), new objj_method(sel_getUid("setBoundsOrigin:"), function $CPView__setBoundsOrigin_(self, _cmd, aPoint) +{ with(self) +{ + var origin = _bounds.origin; + if ((origin.x == aPoint.x && origin.y == aPoint.y)) + return; + origin.x = aPoint.x; + origin.y = aPoint.y; + if (origin.x != 0 || origin.y != 0) + { + _boundsTransform = { a:1.0, b:0.0, c:0.0, d:1.0, tx:-origin.x, ty:-origin.y }; + _inverseBoundsTransform = CGAffineTransformInvert(_boundsTransform); + } + else + { + _boundsTransform = nil; + _inverseBoundsTransform = nil; + } + var index = _subviews.length; + while (index--) + { + var view = _subviews[index], + origin = view._frame.origin; + if (_boundsTransform) var ____p = { x:CGPointMake(origin.x, origin.y).x * _boundsTransform.a + CGPointMake(origin.x, origin.y).y * _boundsTransform.c + _boundsTransform.tx, y:CGPointMake(origin.x, origin.y).x * _boundsTransform.b + CGPointMake(origin.x, origin.y).y * _boundsTransform.d + _boundsTransform.ty }; else var ____p = { x:origin.x, y:origin.y }; view._DOMElement.style.left = ROUND(____p.x) + "px";view._DOMElement.style.top = ROUND(____p.y) + "px";; + } + if (_postsBoundsChangedNotifications && !_inhibitFrameAndBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewBoundsDidChangeNotification, self); +} +},["void","CGPoint"]), new objj_method(sel_getUid("setBoundsSize:"), function $CPView__setBoundsSize_(self, _cmd, aSize) +{ with(self) +{ + var size = _bounds.size; + if ((size.width == aSize.width && size.height == aSize.height)) + return; + var frameSize = _frame.size; + if (!(size.width == frameSize.width && size.height == frameSize.height)) + { + var origin = _bounds.origin; + origin.x /= size.width / frameSize.width; + origin.y /= size.height / frameSize.height; + } + size.width = aSize.width; + size.height = aSize.height; + if (!(size.width == frameSize.width && size.height == frameSize.height)) + { + var origin = _bounds.origin; + origin.x *= size.width / frameSize.width; + origin.y *= size.height / frameSize.height; + } + if (_postsBoundsChangedNotifications && !_inhibitFrameAndBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewBoundsDidChangeNotification, self); +} +},["void","CGSize"]), new objj_method(sel_getUid("resizeWithOldSuperviewSize:"), function $CPView__resizeWithOldSuperviewSize_(self, _cmd, aSize) +{ with(self) +{ + var mask = objj_msgSend(self, "autoresizingMask"); + if(mask == CPViewNotSizable) + return; + var frame = _superview._frame, + newFrame = { origin: { x:_frame.origin.x, y:_frame.origin.y }, size: { width:_frame.size.width, height:_frame.size.height } }, + dX = ((frame.size.width) - aSize.width) / + (((mask & CPViewMinXMargin) ? 1 : 0) + (mask & CPViewWidthSizable ? 1 : 0) + (mask & CPViewMaxXMargin ? 1 : 0)), + dY = ((frame.size.height) - aSize.height) / + ((mask & CPViewMinYMargin ? 1 : 0) + (mask & CPViewHeightSizable ? 1 : 0) + (mask & CPViewMaxYMargin ? 1 : 0)); + if (mask & CPViewMinXMargin) + newFrame.origin.x += dX; + if (mask & CPViewWidthSizable) + newFrame.size.width += dX; + if (mask & CPViewMinYMargin) + newFrame.origin.y += dY; + if (mask & CPViewHeightSizable) + newFrame.size.height += dY; + objj_msgSend(self, "setFrame:", newFrame); +} +},["void","CGSize"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + var count = _subviews.length; + while (count--) + objj_msgSend(_subviews[count], "resizeWithOldSuperviewSize:", aSize); +} +},["void","CGSize"]), new objj_method(sel_getUid("setAutoresizesSubviews:"), function $CPView__setAutoresizesSubviews_(self, _cmd, aFlag) +{ with(self) +{ + _autoresizesSubviews = !!aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("autoresizesSubviews"), function $CPView__autoresizesSubviews(self, _cmd) +{ with(self) +{ + return _autoresizesSubviews; +} +},["BOOL"]), new objj_method(sel_getUid("setAutoresizingMask:"), function $CPView__setAutoresizingMask_(self, _cmd, aMask) +{ with(self) +{ + _autoresizingMask = aMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("autoresizingMask"), function $CPView__autoresizingMask(self, _cmd) +{ with(self) +{ + return _autoresizingMask; +} +},["unsigned"]), new objj_method(sel_getUid("enterFullScreenMode"), function $CPView__enterFullScreenMode(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "enterFullScreenMode:withOptions:", nil, nil); +} +},["BOOL"]), new objj_method(sel_getUid("enterFullScreenMode:withOptions:"), function $CPView__enterFullScreenMode_withOptions_(self, _cmd, aScreen, options) +{ with(self) +{ + _fullScreenModeState = _CPViewFullScreenModeStateMake(self); + var fullScreenWindow = objj_msgSend(objj_msgSend(CPWindow, "alloc"), "initWithContentRect:styleMask:", objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "contentBounds"), CPBorderlessWindowMask); + objj_msgSend(fullScreenWindow, "setLevel:", CPScreenSaverWindowLevel); + objj_msgSend(fullScreenWindow, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + var contentView = objj_msgSend(fullScreenWindow, "contentView"); + objj_msgSend(contentView, "setBackgroundColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(contentView, "addSubview:", self); + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(self, "setFrame:", CGRectMakeCopy(objj_msgSend(contentView, "bounds"))); + objj_msgSend(fullScreenWindow, "makeKeyAndOrderFront:", self); + objj_msgSend(fullScreenWindow, "makeFirstResponder:", self); + _isInFullScreenMode = YES; + return YES; +} +},["BOOL","CPScreen","CPDictionary"]), new objj_method(sel_getUid("exitFullScreenMode"), function $CPView__exitFullScreenMode(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "exitFullScreenModeWithOptions:", nil); +} +},["void"]), new objj_method(sel_getUid("exitFullScreenModeWithOptions:"), function $CPView__exitFullScreenModeWithOptions_(self, _cmd, options) +{ with(self) +{ + if (!_isInFullScreenMode) + return; + _isInFullScreenMode = NO; + objj_msgSend(self, "setFrame:", _fullScreenModeState.frame); + objj_msgSend(self, "setAutoresizingMask:", _fullScreenModeState.autoresizingMask); + objj_msgSend(_fullScreenModeState.superview, "_insertSubview:atIndex:", self, _fullScreenModeState.index); + objj_msgSend(objj_msgSend(self, "window"), "orderOut:", self); +} +},["void","CPDictionary"]), new objj_method(sel_getUid("isInFullScreenMode"), function $CPView__isInFullScreenMode(self, _cmd) +{ with(self) +{ + return _isInFullScreenMode; +} +},["BOOL"]), new objj_method(sel_getUid("setHidden:"), function $CPView__setHidden_(self, _cmd, aFlag) +{ with(self) +{ + aFlag = !!aFlag; + if(_isHidden === aFlag) + return; + _isHidden = aFlag; + _DOMElement.style.display = _isHidden ? "none" : "block"; + if (aFlag) + { + var view = objj_msgSend(_window, "firstResponder"); + if (objj_msgSend(view, "isKindOfClass:", objj_msgSend(CPView, "class"))) + { + do + { + if (self == view) + { + objj_msgSend(_window, "makeFirstResponder:", objj_msgSend(self, "nextValidKeyView")); + break; + } + } + while (view = objj_msgSend(view, "superview")); + } + objj_msgSend(self, "_notifyViewDidHide"); + } + else + { + objj_msgSend(self, "_notifyViewDidUnhide"); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("_notifyViewDidHide"), function $CPView___notifyViewDidHide(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "viewDidHide"); + var count = objj_msgSend(_subviews, "count"); + while (count--) + objj_msgSend(_subviews[count], "_notifyViewDidHide"); +} +},["void"]), new objj_method(sel_getUid("_notifyViewDidUnhide"), function $CPView___notifyViewDidUnhide(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "viewDidUnhide"); + var count = objj_msgSend(_subviews, "count"); + while (count--) + objj_msgSend(_subviews[count], "_notifyViewDidUnhide"); +} +},["void"]), new objj_method(sel_getUid("isHidden"), function $CPView__isHidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("setClipsToBounds:"), function $CPView__setClipsToBounds_(self, _cmd, shouldClip) +{ with(self) +{ + if (_clipsToBounds === shouldClip) + return; + _clipsToBounds = shouldClip; + _DOMElement.style.overflow = _clipsToBounds ? "hidden" : "visible"; +} +},["void","BOOL"]), new objj_method(sel_getUid("clipsToBounds"), function $CPView__clipsToBounds(self, _cmd) +{ with(self) +{ + return _clipsToBounds; +} +},["BOOL"]), new objj_method(sel_getUid("setAlphaValue:"), function $CPView__setAlphaValue_(self, _cmd, anAlphaValue) +{ with(self) +{ + if (_opacity == anAlphaValue) + return; + _opacity = anAlphaValue; + if (CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)) + { + if (anAlphaValue === 1.0) + try { _DOMElement.style.removeAttribute("filter") } catch (anException) { } + else + _DOMElement.style.filter = "alpha(opacity=" + anAlphaValue * 100 + ")"; + } + else + _DOMElement.style.opacity = anAlphaValue; +} +},["void","float"]), new objj_method(sel_getUid("alphaValue"), function $CPView__alphaValue(self, _cmd) +{ with(self) +{ + return _opacity; +} +},["float"]), new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"), function $CPView__isHiddenOrHasHiddenAncestor(self, _cmd) +{ with(self) +{ + var view = self; + while (view && !objj_msgSend(view, "isHidden")) + view = objj_msgSend(view, "superview"); + return view !== nil; +} +},["BOOL"]), new objj_method(sel_getUid("viewDidHide"), function $CPView__viewDidHide(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("viewDidUnhide"), function $CPView__viewDidUnhide(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("acceptsFirstMouse:"), function $CPView__acceptsFirstMouse_(self, _cmd, anEvent) +{ with(self) +{ + return YES; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("hitTests"), function $CPView__hitTests(self, _cmd) +{ with(self) +{ + return _hitTests; +} +},["BOOL"]), new objj_method(sel_getUid("setHitTests:"), function $CPView__setHitTests_(self, _cmd, shouldHitTest) +{ with(self) +{ + _hitTests = !!shouldHitTest; +} +},["void","BOOL"]), new objj_method(sel_getUid("hitTest:"), function $CPView__hitTest_(self, _cmd, aPoint) +{ with(self) +{ + if(_isHidden || !_hitTests || !CPRectContainsPoint(_frame, aPoint)) + return nil; + var view = nil, + i = _subviews.length, + adjustedPoint = { x:aPoint.x - (_frame.origin.x), y:aPoint.y - (_frame.origin.y) }; + if (_inverseBoundsTransform) + adjustedPoint = { x:adjustedPoint.x * _inverseBoundsTransform.a + adjustedPoint.y * _inverseBoundsTransform.c + _inverseBoundsTransform.tx, y:adjustedPoint.x * _inverseBoundsTransform.b + adjustedPoint.y * _inverseBoundsTransform.d + _inverseBoundsTransform.ty }; + while (i--) + if (view = objj_msgSend(_subviews[i], "hitTest:", adjustedPoint)) + return view; + return self; +} +},["CPView","CPPoint"]), new objj_method(sel_getUid("needsPanelToBecomeKey"), function $CPView__needsPanelToBecomeKey(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("mouseDownCanMoveWindow"), function $CPView__mouseDownCanMoveWindow(self, _cmd) +{ with(self) +{ + return !objj_msgSend(self, "isOpaque"); +} +},["BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $CPView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(self, "mouseDownCanMoveWindow")) + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("rightMouseDown:"), function $CPView__rightMouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var menu = objj_msgSend(self, "menuForEvent:", anEvent); + if (menu) + objj_msgSend(CPMenu, "popUpContextMenu:withEvent:forView:", menu, anEvent, self); + else if (objj_msgSend(objj_msgSend(self, "nextResponder"), "isKindOfClass:", CPView)) + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "rightMouseDown:", anEvent); + else + objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateContextMenuDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("menuForEvent:"), function $CPView__menuForEvent_(self, _cmd, anEvent) +{ with(self) +{ + return objj_msgSend(self, "menu") || objj_msgSend(objj_msgSend(self, "class"), "defaultMenu"); +} +},["CPMenu","CPEvent"]), new objj_method(sel_getUid("setBackgroundColor:"), function $CPView__setBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + if (_backgroundColor == aColor) + return; + if (aColor == objj_msgSend(CPNull, "null")) + aColor = nil; + _backgroundColor = aColor; + var patternImage = objj_msgSend(_backgroundColor, "patternImage"), + colorExists = _backgroundColor && (objj_msgSend(_backgroundColor, "patternImage") || objj_msgSend(_backgroundColor, "alphaComponent") > 0.0), + colorHasAlpha = colorExists && objj_msgSend(_backgroundColor, "alphaComponent") < 1.0, + supportsRGBA = CPFeatureIsCompatible(CPCSSRGBAFeature), + colorNeedsDOMElement = colorHasAlpha && !supportsRGBA, + amount = 0; + if (objj_msgSend(patternImage, "isThreePartImage")) + { + _backgroundType = objj_msgSend(patternImage, "isVertical") ? BackgroundVerticalThreePartImage : BackgroundHorizontalThreePartImage; + amount = 3 - _DOMImageParts.length; + } + else if (objj_msgSend(patternImage, "isNinePartImage")) + { + _backgroundType = BackgroundNinePartImage; + amount = 9 - _DOMImageParts.length; + } + else + { + _backgroundType = colorNeedsDOMElement ? BackgroundTransparentColor : BackgroundTrivialColor; + amount = (colorNeedsDOMElement ? 1 : 0) - _DOMImageParts.length; + } + if (amount > 0) + { + while (amount--) + { + var DOMElement = DOMElementPrototype.cloneNode(false); + DOMElement.style.zIndex = -1000; + _DOMImageParts.push(DOMElement); + _DOMElement.appendChild(DOMElement); + } + } + else + { + amount = -amount; + while (amount--) + _DOMElement.removeChild(_DOMImageParts.pop()); + } + if (_backgroundType === BackgroundTrivialColor || _backgroundType === BackgroundTransparentColor) + { + var colorCSS = colorExists ? objj_msgSend(_backgroundColor, "cssString") : ""; + if (colorNeedsDOMElement) + { + _DOMElement.style.background = ""; + _DOMImageParts[0].style.background = objj_msgSend(_backgroundColor, "cssString"); + if (CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)) + _DOMImageParts[0].style.filter = "alpha(opacity=" + objj_msgSend(_backgroundColor, "alphaComponent") * 100 + ")"; + else + _DOMImageParts[0].style.opacity = objj_msgSend(_backgroundColor, "alphaComponent"); + var size = objj_msgSend(self, "bounds").size; + _DOMImageParts[0].style.width = MAX(0.0, ROUND(size.width)) + "px"; _DOMImageParts[0].style.height = MAX(0.0, ROUND(size.height)) + "px";; + } + else + _DOMElement.style.background = colorCSS; + } + else + { + var slices = objj_msgSend(patternImage, "imageSlices"), + count = MIN(_DOMImageParts.length, slices.length), + frameSize = _frame.size; + while (count--) + { + var image = slices[count], + size = _DOMImageSizes[count] = image ? objj_msgSend(image, "size") : { width:0.0, height:0.0 }; + _DOMImageParts[count].style.width = MAX(0.0, ROUND(size.width)) + "px"; _DOMImageParts[count].style.height = MAX(0.0, ROUND(size.height)) + "px";; + _DOMImageParts[count].style.background = image ? "url(\"" + objj_msgSend(image, "filename") + "\")" : ""; + if (!supportsRGBA) + { + if (CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)) + try { _DOMImageParts[count].style.removeAttribute("filter") } catch (anException) { } + else + _DOMImageParts[count].style.opacity = 1.0; + } + } + if (_backgroundType == BackgroundNinePartImage) + { + var width = frameSize.width - _DOMImageSizes[0].width - _DOMImageSizes[2].width, + height = frameSize.height - _DOMImageSizes[0].height - _DOMImageSizes[6].height; + _DOMImageParts[1].style.width = MAX(0.0, ROUND(width)) + "px"; _DOMImageParts[1].style.height = MAX(0.0, ROUND(_DOMImageSizes[0].height)) + "px";; + _DOMImageParts[3].style.width = MAX(0.0, ROUND(_DOMImageSizes[3].width)) + "px"; _DOMImageParts[3].style.height = MAX(0.0, ROUND(height)) + "px";; + _DOMImageParts[4].style.width = MAX(0.0, ROUND(width)) + "px"; _DOMImageParts[4].style.height = MAX(0.0, ROUND(height)) + "px";; + _DOMImageParts[5].style.width = MAX(0.0, ROUND(_DOMImageSizes[5].width)) + "px"; _DOMImageParts[5].style.height = MAX(0.0, ROUND(height)) + "px";; + _DOMImageParts[7].style.width = MAX(0.0, ROUND(width)) + "px"; _DOMImageParts[7].style.height = MAX(0.0, ROUND(_DOMImageSizes[7].height)) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, 0.0).x * NULL.a + CGPointMake(0.0, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(0.0, 0.0).x * NULL.b + CGPointMake(0.0, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:0.0 }; _DOMImageParts[0].style.left = ROUND(____p.x) + "px";_DOMImageParts[0].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(_DOMImageSizes[0].width, 0.0).x * NULL.a + CGPointMake(_DOMImageSizes[0].width, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(_DOMImageSizes[0].width, 0.0).x * NULL.b + CGPointMake(_DOMImageSizes[0].width, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:_DOMImageSizes[0].width, y:0.0 }; _DOMImageParts[1].style.left = ROUND(____p.x) + "px";_DOMImageParts[1].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, 0.0).x * NULL.a + CGPointMake(0.0, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(0.0, 0.0).x * NULL.b + CGPointMake(0.0, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:0.0 }; _DOMImageParts[2].style.right = ROUND(____p.x) + "px";_DOMImageParts[2].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, _DOMImageSizes[1].height).x * NULL.a + CGPointMake(0.0, _DOMImageSizes[1].height).y * NULL.c + NULL.tx, y:CGPointMake(0.0, _DOMImageSizes[1].height).x * NULL.b + CGPointMake(0.0, _DOMImageSizes[1].height).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:_DOMImageSizes[1].height }; _DOMImageParts[3].style.left = ROUND(____p.x) + "px";_DOMImageParts[3].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(_DOMImageSizes[0].width, _DOMImageSizes[0].height).x * NULL.a + CGPointMake(_DOMImageSizes[0].width, _DOMImageSizes[0].height).y * NULL.c + NULL.tx, y:CGPointMake(_DOMImageSizes[0].width, _DOMImageSizes[0].height).x * NULL.b + CGPointMake(_DOMImageSizes[0].width, _DOMImageSizes[0].height).y * NULL.d + NULL.ty }; else var ____p = { x:_DOMImageSizes[0].width, y:_DOMImageSizes[0].height }; _DOMImageParts[4].style.left = ROUND(____p.x) + "px";_DOMImageParts[4].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, _DOMImageSizes[1].height).x * NULL.a + CGPointMake(0.0, _DOMImageSizes[1].height).y * NULL.c + NULL.tx, y:CGPointMake(0.0, _DOMImageSizes[1].height).x * NULL.b + CGPointMake(0.0, _DOMImageSizes[1].height).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:_DOMImageSizes[1].height }; _DOMImageParts[5].style.right = ROUND(____p.x) + "px";_DOMImageParts[5].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, 0.0).x * NULL.a + CGPointMake(0.0, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(0.0, 0.0).x * NULL.b + CGPointMake(0.0, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:0.0 }; _DOMImageParts[6].style.left = ROUND(____p.x) + "px";_DOMImageParts[6].style.bottom = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(_DOMImageSizes[6].width, 0.0).x * NULL.a + CGPointMake(_DOMImageSizes[6].width, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(_DOMImageSizes[6].width, 0.0).x * NULL.b + CGPointMake(_DOMImageSizes[6].width, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:_DOMImageSizes[6].width, y:0.0 }; _DOMImageParts[7].style.left = ROUND(____p.x) + "px";_DOMImageParts[7].style.bottom = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, 0.0).x * NULL.a + CGPointMake(0.0, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(0.0, 0.0).x * NULL.b + CGPointMake(0.0, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:0.0 }; _DOMImageParts[8].style.right = ROUND(____p.x) + "px";_DOMImageParts[8].style.bottom = ROUND(____p.y) + "px";; + } + else if (_backgroundType == BackgroundVerticalThreePartImage) + { + _DOMImageParts[1].style.width = MAX(0.0, ROUND(frameSize.width)) + "px"; _DOMImageParts[1].style.height = MAX(0.0, ROUND(frameSize.height - _DOMImageSizes[0].height - _DOMImageSizes[2].height)) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, 0.0).x * NULL.a + CGPointMake(0.0, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(0.0, 0.0).x * NULL.b + CGPointMake(0.0, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:0.0 }; _DOMImageParts[0].style.left = ROUND(____p.x) + "px";_DOMImageParts[0].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, _DOMImageSizes[0].height).x * NULL.a + CGPointMake(0.0, _DOMImageSizes[0].height).y * NULL.c + NULL.tx, y:CGPointMake(0.0, _DOMImageSizes[0].height).x * NULL.b + CGPointMake(0.0, _DOMImageSizes[0].height).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:_DOMImageSizes[0].height }; _DOMImageParts[1].style.left = ROUND(____p.x) + "px";_DOMImageParts[1].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, 0.0).x * NULL.a + CGPointMake(0.0, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(0.0, 0.0).x * NULL.b + CGPointMake(0.0, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:0.0 }; _DOMImageParts[2].style.left = ROUND(____p.x) + "px";_DOMImageParts[2].style.bottom = ROUND(____p.y) + "px";; + } + else if (_backgroundType == BackgroundHorizontalThreePartImage) + { + _DOMImageParts[1].style.width = MAX(0.0, ROUND(frameSize.width - _DOMImageSizes[0].width - _DOMImageSizes[2].width)) + "px"; _DOMImageParts[1].style.height = MAX(0.0, ROUND(frameSize.height)) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, 0.0).x * NULL.a + CGPointMake(0.0, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(0.0, 0.0).x * NULL.b + CGPointMake(0.0, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:0.0 }; _DOMImageParts[0].style.left = ROUND(____p.x) + "px";_DOMImageParts[0].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(_DOMImageSizes[0].width, 0.0).x * NULL.a + CGPointMake(_DOMImageSizes[0].width, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(_DOMImageSizes[0].width, 0.0).x * NULL.b + CGPointMake(_DOMImageSizes[0].width, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:_DOMImageSizes[0].width, y:0.0 }; _DOMImageParts[1].style.left = ROUND(____p.x) + "px";_DOMImageParts[1].style.top = ROUND(____p.y) + "px";; + if (NULL) var ____p = { x:CGPointMake(0.0, 0.0).x * NULL.a + CGPointMake(0.0, 0.0).y * NULL.c + NULL.tx, y:CGPointMake(0.0, 0.0).x * NULL.b + CGPointMake(0.0, 0.0).y * NULL.d + NULL.ty }; else var ____p = { x:0.0, y:0.0 }; _DOMImageParts[2].style.right = ROUND(____p.x) + "px";_DOMImageParts[2].style.top = ROUND(____p.y) + "px";; + } + } +} +},["void","CPColor"]), new objj_method(sel_getUid("backgroundColor"), function $CPView__backgroundColor(self, _cmd) +{ with(self) +{ + return _backgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("convertPoint:fromView:"), function $CPView__convertPoint_fromView_(self, _cmd, aPoint, aView) +{ with(self) +{ + return CGPointApplyAffineTransform(aPoint, _CPViewGetTransform(aView, self)); +} +},["CGPoint","CGPoint","CPView"]), new objj_method(sel_getUid("convertPoint:toView:"), function $CPView__convertPoint_toView_(self, _cmd, aPoint, aView) +{ with(self) +{ + return CGPointApplyAffineTransform(aPoint, _CPViewGetTransform(self, aView)); +} +},["CGPoint","CGPoint","CPView"]), new objj_method(sel_getUid("convertSize:fromView:"), function $CPView__convertSize_fromView_(self, _cmd, aSize, aView) +{ with(self) +{ + return CGSizeApplyAffineTransform(aSize, _CPViewGetTransform(aView, self)); +} +},["CGSize","CGSize","CPView"]), new objj_method(sel_getUid("convertSize:toView:"), function $CPView__convertSize_toView_(self, _cmd, aSize, aView) +{ with(self) +{ + return CGSizeApplyAffineTransform(aSize, _CPViewGetTransform(self, aView)); +} +},["CGSize","CGSize","CPView"]), new objj_method(sel_getUid("convertRect:fromView:"), function $CPView__convertRect_fromView_(self, _cmd, aRect, aView) +{ with(self) +{ + return CGRectApplyAffineTransform(aRect, _CPViewGetTransform(aView, self)); +} +},["CGRect","CGRect","CPView"]), new objj_method(sel_getUid("convertRect:toView:"), function $CPView__convertRect_toView_(self, _cmd, aRect, aView) +{ with(self) +{ + return CGRectApplyAffineTransform(aRect, _CPViewGetTransform(self, aView)); +} +},["CGRect","CGRect","CPView"]), new objj_method(sel_getUid("setPostsFrameChangedNotifications:"), function $CPView__setPostsFrameChangedNotifications_(self, _cmd, shouldPostFrameChangedNotifications) +{ with(self) +{ + shouldPostFrameChangedNotifications = !!shouldPostFrameChangedNotifications; + if (_postsFrameChangedNotifications === shouldPostFrameChangedNotifications) + return; + _postsFrameChangedNotifications = shouldPostFrameChangedNotifications; + if (_postsFrameChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewFrameDidChangeNotification, self); +} +},["void","BOOL"]), new objj_method(sel_getUid("postsFrameChangedNotifications"), function $CPView__postsFrameChangedNotifications(self, _cmd) +{ with(self) +{ + return _postsFrameChangedNotifications; +} +},["BOOL"]), new objj_method(sel_getUid("setPostsBoundsChangedNotifications:"), function $CPView__setPostsBoundsChangedNotifications_(self, _cmd, shouldPostBoundsChangedNotifications) +{ with(self) +{ + shouldPostBoundsChangedNotifications = !!shouldPostBoundsChangedNotifications; + if (_postsBoundsChangedNotifications === shouldPostBoundsChangedNotifications) + return; + _postsBoundsChangedNotifications = shouldPostBoundsChangedNotifications; + if (_postsBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewBoundsDidChangeNotification, self); +} +},["void","BOOL"]), new objj_method(sel_getUid("postsBoundsChangedNotifications"), function $CPView__postsBoundsChangedNotifications(self, _cmd) +{ with(self) +{ + return _postsBoundsChangedNotifications; +} +},["BOOL"]), new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"), function $CPView__dragImage_at_offset_event_pasteboard_source_slideBack_(self, _cmd, anImage, aLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + objj_msgSend(_window, "dragImage:at:offset:event:pasteboard:source:slideBack:", anImage, objj_msgSend(self, "convertPoint:toView:", aLocation, nil), mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPImage","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"), function $CPView__dragView_at_offset_event_pasteboard_source_slideBack_(self, _cmd, aView, aLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + objj_msgSend(_window, "dragView:at:offset:event:pasteboard:source:slideBack:", aView, objj_msgSend(self, "convertPoint:toView:", aLocation, nil), mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPView","CPPoint","CPSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("registerForDraggedTypes:"), function $CPView__registerForDraggedTypes_(self, _cmd, pasteboardTypes) +{ with(self) +{ + if (!pasteboardTypes || !objj_msgSend(pasteboardTypes, "count")) + return; + var theWindow = objj_msgSend(self, "window"); + objj_msgSend(theWindow, "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + objj_msgSend(_registeredDraggedTypes, "addObjectsFromArray:", pasteboardTypes); + objj_msgSend(theWindow, "_noteRegisteredDraggedTypes:", _registeredDraggedTypes); + _registeredDraggedTypesArray = nil; +} +},["void","CPArray"]), new objj_method(sel_getUid("registeredDraggedTypes"), function $CPView__registeredDraggedTypes(self, _cmd) +{ with(self) +{ + if (!_registeredDraggedTypesArray) + _registeredDraggedTypesArray = objj_msgSend(_registeredDraggedTypes, "allObjects"); + return _registeredDraggedTypesArray; +} +},["CPArray"]), new objj_method(sel_getUid("unregisterDraggedTypes"), function $CPView__unregisterDraggedTypes(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; +} +},["void"]), new objj_method(sel_getUid("drawRect:"), function $CPView__drawRect_(self, _cmd, aRect) +{ with(self) +{ +} +},["void","CPRect"]), new objj_method(sel_getUid("setNeedsDisplay:"), function $CPView__setNeedsDisplay_(self, _cmd, aFlag) +{ with(self) +{ + if (aFlag) + objj_msgSend(self, "setNeedsDisplayInRect:", objj_msgSend(self, "bounds")); +} +},["void","BOOL"]), new objj_method(sel_getUid("setNeedsDisplayInRect:"), function $CPView__setNeedsDisplayInRect_(self, _cmd, aRect) +{ with(self) +{ + if (!(_viewClassFlags & CPViewHasCustomDrawRect)) + return; + if ((aRect.size.width <= 0.0 || aRect.size.height <= 0.0)) + return; + if (_dirtyRect && !(_dirtyRect.size.width <= 0.0 || _dirtyRect.size.height <= 0.0)) + _dirtyRect = CGRectUnion(aRect, _dirtyRect); + else + _dirtyRect = { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; + _CPDisplayServerAddDisplayObject(self); +} +},["void","CPRect"]), new objj_method(sel_getUid("needsDisplay"), function $CPView__needsDisplay(self, _cmd) +{ with(self) +{ + return _dirtyRect && !(_dirtyRect.size.width <= 0.0 || _dirtyRect.size.height <= 0.0); +} +},["BOOL"]), new objj_method(sel_getUid("displayIfNeeded"), function $CPView__displayIfNeeded(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "needsDisplay")) + objj_msgSend(self, "displayRect:", _dirtyRect); +} +},["void"]), new objj_method(sel_getUid("display"), function $CPView__display(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "displayRect:", objj_msgSend(self, "visibleRect")); +} +},["void"]), new objj_method(sel_getUid("displayIfNeededInRect:"), function $CPView__displayIfNeededInRect_(self, _cmd, aRect) +{ with(self) +{ + if (objj_msgSend(self, "needsDisplay")) + objj_msgSend(self, "displayRect:", aRect); +} +},["void","CGRect"]), new objj_method(sel_getUid("displayRect:"), function $CPView__displayRect_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSend(self, "viewWillDraw"); + objj_msgSend(self, "displayRectIgnoringOpacity:inContext:", aRect, nil); + _dirtyRect = NULL; +} +},["void","CPRect"]), new objj_method(sel_getUid("displayRectIgnoringOpacity:inContext:"), function $CPView__displayRectIgnoringOpacity_inContext_(self, _cmd, aRect, aGraphicsContext) +{ with(self) +{ + if (objj_msgSend(self, "isHidden")) + return; + objj_msgSend(self, "lockFocus"); + CGContextClearRect(objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), aRect); + objj_msgSend(self, "drawRect:", aRect); + objj_msgSend(self, "unlockFocus"); +} +},["void","CGRect","CPGraphicsContext"]), new objj_method(sel_getUid("viewWillDraw"), function $CPView__viewWillDraw(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("lockFocus"), function $CPView__lockFocus(self, _cmd) +{ with(self) +{ + if (!_graphicsContext) + { + var graphicsPort = CGBitmapGraphicsContextCreate(); + _DOMContentsElement = graphicsPort.DOMElement; + _DOMContentsElement.style.zIndex = -100; + _DOMContentsElement.style.overflow = "hidden"; + _DOMContentsElement.style.position = "absolute"; + _DOMContentsElement.style.visibility = "visible"; + _DOMContentsElement.width = ROUND((_frame.size.width)); + _DOMContentsElement.height = ROUND((_frame.size.height)); + _DOMContentsElement.style.top = "0px"; + _DOMContentsElement.style.left = "0px"; + _DOMContentsElement.style.width = ROUND((_frame.size.width)) + "px"; + _DOMContentsElement.style.height = ROUND((_frame.size.height)) + "px"; + _DOMElement.appendChild(_DOMContentsElement); + _graphicsContext = objj_msgSend(CPGraphicsContext, "graphicsContextWithGraphicsPort:flipped:", graphicsPort, YES); + } + objj_msgSend(CPGraphicsContext, "setCurrentContext:", _graphicsContext); + CGContextSaveGState(objj_msgSend(_graphicsContext, "graphicsPort")); +} +},["void"]), new objj_method(sel_getUid("unlockFocus"), function $CPView__unlockFocus(self, _cmd) +{ with(self) +{ + CGContextRestoreGState(objj_msgSend(_graphicsContext, "graphicsPort")); + objj_msgSend(CPGraphicsContext, "setCurrentContext:", nil); +} +},["void"]), new objj_method(sel_getUid("setNeedsLayout"), function $CPView__setNeedsLayout(self, _cmd) +{ with(self) +{ + if (!(_viewClassFlags & CPViewHasCustomLayoutSubviews)) + return; + _needsLayout = YES; + _CPDisplayServerAddLayoutObject(self); +} +},["void"]), new objj_method(sel_getUid("layoutIfNeeded"), function $CPView__layoutIfNeeded(self, _cmd) +{ with(self) +{ + if (_needsLayout) + { + _needsLayout = NO; + objj_msgSend(self, "layoutSubviews"); + } +} +},["void"]), new objj_method(sel_getUid("layoutSubviews"), function $CPView__layoutSubviews(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("isOpaque"), function $CPView__isOpaque(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("visibleRect"), function $CPView__visibleRect(self, _cmd) +{ with(self) +{ + if (!_superview) + return _bounds; + return CGRectIntersection(objj_msgSend(self, "convertRect:fromView:", objj_msgSend(_superview, "visibleRect"), _superview), _bounds); +} +},["CGRect"]), new objj_method(sel_getUid("_enclosingClipView"), function $CPView___enclosingClipView(self, _cmd) +{ with(self) +{ + var superview = _superview, + clipViewClass = objj_msgSend(CPClipView, "class"); + while(superview && !objj_msgSend(superview, "isKindOfClass:", clipViewClass)) + superview = superview._superview; + return superview; +} +},["CPScrollView"]), new objj_method(sel_getUid("scrollPoint:"), function $CPView__scrollPoint_(self, _cmd, aPoint) +{ with(self) +{ + var clipView = objj_msgSend(self, "_enclosingClipView"); + if (!clipView) + return; + objj_msgSend(clipView, "scrollToPoint:", objj_msgSend(self, "convertPoint:toView:", aPoint, clipView)); +} +},["void","CGPoint"]), new objj_method(sel_getUid("scrollRectToVisible:"), function $CPView__scrollRectToVisible_(self, _cmd, aRect) +{ with(self) +{ + var visibleRect = objj_msgSend(self, "visibleRect"); + aRect = CGRectIntersection(aRect, _bounds); + if ((aRect.size.width <= 0.0 || aRect.size.height <= 0.0) || CGRectContainsRect(visibleRect, aRect)) + return NO; + var enclosingClipView = objj_msgSend(self, "_enclosingClipView"); + if (!enclosingClipView) + return NO; + var scrollPoint = { x:visibleRect.origin.x, y:visibleRect.origin.y }; + if ((aRect.origin.x) <= (visibleRect.origin.x)) + scrollPoint.x = (aRect.origin.x); + else if ((aRect.origin.x + aRect.size.width) > (visibleRect.origin.x + visibleRect.size.width)) + scrollPoint.x += (aRect.origin.x + aRect.size.width) - (visibleRect.origin.x + visibleRect.size.width); + if ((aRect.origin.y) <= (visibleRect.origin.y)) + scrollPoint.y = CGRectGetMinY(aRect); + else if ((aRect.origin.y + aRect.size.height) > (visibleRect.origin.y + visibleRect.size.height)) + scrollPoint.y += (aRect.origin.y + aRect.size.height) - (visibleRect.origin.y + visibleRect.size.height); + objj_msgSend(enclosingClipView, "scrollToPoint:", CGPointMake(scrollPoint.x, scrollPoint.y)); + return YES; +} +},["BOOL","CGRect"]), new objj_method(sel_getUid("autoscroll:"), function $CPView__autoscroll_(self, _cmd, anEvent) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "superview"), "autoscroll:", anEvent); +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("adjustScroll:"), function $CPView__adjustScroll_(self, _cmd, proposedVisibleRect) +{ with(self) +{ + return proposedVisibleRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("scrollRect:by:"), function $CPView__scrollRect_by_(self, _cmd, aRect, anAmount) +{ with(self) +{ +} +},["void","CGRect","float"]), new objj_method(sel_getUid("enclosingScrollView"), function $CPView__enclosingScrollView(self, _cmd) +{ with(self) +{ + var superview = _superview, + scrollViewClass = objj_msgSend(CPScrollView, "class"); + while(superview && !objj_msgSend(superview, "isKindOfClass:", scrollViewClass)) + superview = superview._superview; + return superview; +} +},["CPScrollView"]), new objj_method(sel_getUid("scrollClipView:toPoint:"), function $CPView__scrollClipView_toPoint_(self, _cmd, aClipView, aPoint) +{ with(self) +{ + objj_msgSend(aClipView, "scrollToPoint:", aPoint); +} +},["void","CPClipView","CGPoint"]), new objj_method(sel_getUid("reflectScrolledClipView:"), function $CPView__reflectScrolledClipView_(self, _cmd, aClipView) +{ with(self) +{ +} +},["void","CPClipView"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPView__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(CPView, "class")) + return; + DOMElementPrototype = document.createElement("div"); + var style = DOMElementPrototype.style; + style.overflow = "hidden"; + style.position = "absolute"; + style.visibility = "visible"; + style.zIndex = 0; + CachedNotificationCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); +} +},["void"]), new objj_method(sel_getUid("keyPathsForValuesAffectingFrame"), function $CPView__keyPathsForValuesAffectingFrame(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "frameOrigin", "frameSize"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingBounds"), function $CPView__keyPathsForValuesAffectingBounds(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "boundsOrigin", "boundsSize"); +} +},["CPSet"]), new objj_method(sel_getUid("defaultMenu"), function $CPView__defaultMenu(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPMenu"])]); +} +{ +var the_class = objj_getClass("CPView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("performKeyEquivalent:"), function $CPView__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + var count = objj_msgSend(_subviews, "count"); + while (count--) + if (objj_msgSend(_subviews[count], "performKeyEquivalent:", anEvent)) + return YES; + return NO; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("canBecomeKeyView"), function $CPView__canBecomeKeyView(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "acceptsFirstResponder") && !objj_msgSend(self, "isHiddenOrHasHiddenAncestor"); +} +},["BOOL"]), new objj_method(sel_getUid("nextKeyView"), function $CPView__nextKeyView(self, _cmd) +{ with(self) +{ + return _nextKeyView; +} +},["CPView"]), new objj_method(sel_getUid("nextValidKeyView"), function $CPView__nextValidKeyView(self, _cmd) +{ with(self) +{ + var result = objj_msgSend(self, "nextKeyView"); + while (result && !objj_msgSend(result, "canBecomeKeyView")) + result = objj_msgSend(result, "nextKeyView"); + return result; +} +},["CPView"]), new objj_method(sel_getUid("previousKeyView"), function $CPView__previousKeyView(self, _cmd) +{ with(self) +{ + return _previousKeyView; +} +},["CPView"]), new objj_method(sel_getUid("previousValidKeyView"), function $CPView__previousValidKeyView(self, _cmd) +{ with(self) +{ + var result = objj_msgSend(self, "previousKeyView"); + while (result && !objj_msgSend(result, "canBecomeKeyView")) + result = objj_msgSend(result, "previousKeyView"); + return result; +} +},["CPView"]), new objj_method(sel_getUid("_setPreviousKeyView:"), function $CPView___setPreviousKeyView_(self, _cmd, previous) +{ with(self) +{ + _previousKeyView = previous; +} +},["void","CPView"]), new objj_method(sel_getUid("setNextKeyView:"), function $CPView__setNextKeyView_(self, _cmd, next) +{ with(self) +{ + _nextKeyView = next; + objj_msgSend(_nextKeyView, "_setPreviousKeyView:", self); +} +},["void","CPView"])]); +} +{ +var the_class = objj_getClass("CPView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setLayer:"), function $CPView__setLayer_(self, _cmd, aLayer) +{ with(self) +{ + if (_layer == aLayer) + return; + if (_layer) + { + _layer._owningView = nil; + _DOMElement.removeChild(_layer._DOMElement); + } + _layer = aLayer; + if (_layer) + { + var bounds = CGRectMakeCopy(objj_msgSend(self, "bounds")); + objj_msgSend(_layer, "_setOwningView:", self); + _layer._DOMElement.style.zIndex = 100; + _DOMElement.appendChild(_layer._DOMElement); + } +} +},["void","CALayer"]), new objj_method(sel_getUid("layer"), function $CPView__layer(self, _cmd) +{ with(self) +{ + return _layer; +} +},["CALayer"]), new objj_method(sel_getUid("setWantsLayer:"), function $CPView__setWantsLayer_(self, _cmd, aFlag) +{ with(self) +{ + _wantsLayer = !!aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("wantsLayer"), function $CPView__wantsLayer(self, _cmd) +{ with(self) +{ + return _wantsLayer; +} +},["BOOL"])]); +} +{ +var the_class = objj_getClass("CPView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("themeState"), function $CPView__themeState(self, _cmd) +{ with(self) +{ + return _themeState; +} +},["unsigned"]), new objj_method(sel_getUid("hasThemeState:"), function $CPView__hasThemeState_(self, _cmd, aState) +{ with(self) +{ + return !!(_themeState & ((typeof aState === "string") ? CPThemeState(aState) : aState)); +} +},["BOOL","CPThemeState"]), new objj_method(sel_getUid("setThemeState:"), function $CPView__setThemeState_(self, _cmd, aState) +{ with(self) +{ + var newState = (typeof aState === "string") ? CPThemeState(aState) : aState; + if (_themeState & newState) + return NO; + _themeState |= newState; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + return YES; +} +},["BOOL","CPThemeState"]), new objj_method(sel_getUid("unsetThemeState:"), function $CPView__unsetThemeState_(self, _cmd, aState) +{ with(self) +{ + var newState = ((typeof aState === "string") ? CPThemeState(aState) : aState); + if (!(_themeState & newState)) + return NO; + _themeState &= ~newState; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + return YES; +} +},["BOOL","CPThemeState"]), new objj_method(sel_getUid("_loadThemeAttributes"), function $CPView___loadThemeAttributes(self, _cmd) +{ with(self) +{ + var theClass = objj_msgSend(self, "class"), + attributes = objj_msgSend(theClass, "_themeAttributes"), + count = attributes.length; + if (!count) + return; + var theme = objj_msgSend(self, "theme"), + themeClass = objj_msgSend(theClass, "themeClass"); + _themeAttributes = {}; + while (count--) + { + var attributeName = attributes[count--], + attribute = objj_msgSend(objj_msgSend(_CPThemeAttribute, "alloc"), "initWithName:defaultValue:", attributeName, attributes[count]); + objj_msgSend(attribute, "setParentAttribute:", objj_msgSend(theme, "attributeWithName:forClass:", attributeName, themeClass)); + _themeAttributes[attributeName] = attribute; + } +} +},["void"]), new objj_method(sel_getUid("setTheme:"), function $CPView__setTheme_(self, _cmd, aTheme) +{ with(self) +{ + if (_theme === aTheme) + return; + _theme = aTheme; + objj_msgSend(self, "viewDidChangeTheme"); +} +},["void","CPTheme"]), new objj_method(sel_getUid("theme"), function $CPView__theme(self, _cmd) +{ with(self) +{ + return _theme; +} +},["CPTheme"]), new objj_method(sel_getUid("viewDidChangeTheme"), function $CPView__viewDidChangeTheme(self, _cmd) +{ with(self) +{ + if (!_themeAttributes) + return; + var theme = objj_msgSend(self, "theme"), + themeClass = objj_msgSend(objj_msgSend(self, "class"), "themeClass"); + for (var attributeName in _themeAttributes) + if (_themeAttributes.hasOwnProperty(attributeName)) + objj_msgSend(_themeAttributes[attributeName], "setParentAttribute:", objj_msgSend(theme, "attributeWithName:forClass:", attributeName, themeClass)); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void"]), new objj_method(sel_getUid("_themeAttributeDictionary"), function $CPView___themeAttributeDictionary(self, _cmd) +{ with(self) +{ + var dictionary = objj_msgSend(CPDictionary, "dictionary"); + if (_themeAttributes) + { + var theme = objj_msgSend(self, "theme"); + for (var attributeName in _themeAttributes) + if (_themeAttributes.hasOwnProperty(attributeName)) + objj_msgSend(dictionary, "setObject:forKey:", _themeAttributes[attributeName], attributeName); + } + return dictionary; +} +},["CPDictionary"]), new objj_method(sel_getUid("setValue:forThemeAttribute:inState:"), function $CPView__setValue_forThemeAttribute_inState_(self, _cmd, aValue, aName, aState) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + var currentValue = objj_msgSend(self, "currentValueForThemeAttribute:", aName); + objj_msgSend(_themeAttributes[aName], "setValue:forState:", aValue, aState); + if (objj_msgSend(self, "currentValueForThemeAttribute:", aName) === currentValue) + return; + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","id","CPString","CPThemeState"]), new objj_method(sel_getUid("setValue:forThemeAttribute:"), function $CPView__setValue_forThemeAttribute_(self, _cmd, aValue, aName) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + var currentValue = objj_msgSend(self, "currentValueForThemeAttribute:", aName); + objj_msgSend(_themeAttributes[aName], "setValue:", aValue); + if (objj_msgSend(self, "currentValueForThemeAttribute:", aName) === currentValue) + return; + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","id","CPString"]), new objj_method(sel_getUid("valueForThemeAttribute:inState:"), function $CPView__valueForThemeAttribute_inState_(self, _cmd, aName, aState) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + return objj_msgSend(_themeAttributes[aName], "valueForState:", aState); +} +},["id","CPString","CPThemeState"]), new objj_method(sel_getUid("valueForThemeAttribute:"), function $CPView__valueForThemeAttribute_(self, _cmd, aName) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + return objj_msgSend(_themeAttributes[aName], "value"); +} +},["id","CPString"]), new objj_method(sel_getUid("currentValueForThemeAttribute:"), function $CPView__currentValueForThemeAttribute_(self, _cmd, aName) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + return objj_msgSend(_themeAttributes[aName], "valueForState:", _themeState); +} +},["id","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPView__createEphemeralSubviewNamed_(self, _cmd, aViewName) +{ with(self) +{ + return nil; +} +},["CPView","CPString"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPView__rectForEphemeralSubviewNamed_(self, _cmd, aViewName) +{ with(self) +{ + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; +} +},["CGRect","CPString"]), new objj_method(sel_getUid("layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:"), function $CPView__layoutEphemeralSubviewNamed_positioned_relativeToEphemeralSubviewNamed_(self, _cmd, aViewName, anOrderingMode, relativeToViewName) +{ with(self) +{ + if (!_ephemeralSubviewsForNames) + { + _ephemeralSubviewsForNames = {}; + _ephemeralSubviews = objj_msgSend(CPSet, "set"); + } + var frame = objj_msgSend(self, "rectForEphemeralSubviewNamed:", aViewName); + if (frame && !(frame.size.width <= 0.0 || frame.size.height <= 0.0)) + { + if (!_ephemeralSubviewsForNames[aViewName]) + { + _ephemeralSubviewsForNames[aViewName] = objj_msgSend(self, "createEphemeralSubviewNamed:", aViewName); + objj_msgSend(_ephemeralSubviews, "addObject:", _ephemeralSubviewsForNames[aViewName]); + if (_ephemeralSubviewsForNames[aViewName]) + objj_msgSend(self, "addSubview:positioned:relativeTo:", _ephemeralSubviewsForNames[aViewName], anOrderingMode, _ephemeralSubviewsForNames[relativeToViewName]); + } + if (_ephemeralSubviewsForNames[aViewName]) + objj_msgSend(_ephemeralSubviewsForNames[aViewName], "setFrame:", frame); + } + else if (_ephemeralSubviewsForNames[aViewName]) + { + objj_msgSend(_ephemeralSubviewsForNames[aViewName], "removeFromSuperview"); + objj_msgSend(_ephemeralSubviews, "removeObject:", _ephemeralSubviewsForNames[aViewName]); + delete _ephemeralSubviewsForNames[aViewName]; + } + return _ephemeralSubviewsForNames[aViewName]; +} +},["CPView","CPString","CPWindowOrderingMode","CPString"]), new objj_method(sel_getUid("ephemeralSubviewNamed:"), function $CPView__ephemeralSubviewNamed_(self, _cmd, aViewName) +{ with(self) +{ + if (!_ephemeralSubviewsForNames) + return nil; + return (_ephemeralSubviewsForNames[aViewName] || nil); +} +},["CPView","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPView__themeClass(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPView__themeAttributes(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPDictionary"]), new objj_method(sel_getUid("_themeAttributes"), function $CPView___themeAttributes(self, _cmd) +{ with(self) +{ + if (!CachedThemeAttributes) + CachedThemeAttributes = {}; + var theClass = objj_msgSend(self, "class"), + CPViewClass = objj_msgSend(CPView, "class"), + attributes = [], + nullValue = objj_msgSend(CPNull, "null"); + for (; theClass && theClass !== CPViewClass; theClass = objj_msgSend(theClass, "superclass")) + { + var cachedAttributes = CachedThemeAttributes[class_getName(theClass)]; + if (cachedAttributes) + { + attributes = attributes.length ? attributes.concat(cachedAttributes) : attributes; + CachedThemeAttributes[objj_msgSend(self, "className")] = attributes; + break; + } + var attributeDictionary = objj_msgSend(theClass, "themeAttributes"); + if (!attributeDictionary) + continue; + var attributeKeys = objj_msgSend(attributeDictionary, "allKeys"), + attributeCount = attributeKeys.length; + while (attributeCount--) + { + var attributeName = attributeKeys[attributeCount], + attributeValue = objj_msgSend(attributeDictionary, "objectForKey:", attributeName); + attributes.push(attributeValue === nullValue ? nil : attributeValue); + attributes.push(attributeName); + } + } + return attributes; +} +},["CPArray"])]); +} +var CPViewAutoresizingMaskKey = "CPViewAutoresizingMask", + CPViewAutoresizesSubviewsKey = "CPViewAutoresizesSubviews", + CPViewBackgroundColorKey = "CPViewBackgroundColor", + CPViewBoundsKey = "CPViewBoundsKey", + CPViewFrameKey = "CPViewFrameKey", + CPViewHitTestsKey = "CPViewHitTestsKey", + CPViewIsHiddenKey = "CPViewIsHiddenKey", + CPViewOpacityKey = "CPViewOpacityKey", + CPViewSubviewsKey = "CPViewSubviewsKey", + CPViewSuperviewKey = "CPViewSuperviewKey", + CPViewTagKey = "CPViewTagKey", + CPViewThemeStateKey = "CPViewThemeStateKey", + CPViewWindowKey = "CPViewWindowKey", + CPViewNextKeyViewKey = "CPViewNextKeyViewKey", + CPViewPreviousKeyViewKey = "CPViewPreviousKeyViewKey"; +{ +var the_class = objj_getClass("CPView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + _DOMElement = DOMElementPrototype.cloneNode(false); + _frame = objj_msgSend(aCoder, "decodeRectForKey:", CPViewFrameKey); + _bounds = objj_msgSend(aCoder, "decodeRectForKey:", CPViewBoundsKey); + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _tag = objj_msgSend(aCoder, "containsValueForKey:", CPViewTagKey) ? objj_msgSend(aCoder, "decodeIntForKey:", CPViewTagKey) : -1; + _window = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewWindowKey); + _subviews = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewSubviewsKey) || []; + _superview = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewSuperviewKey); + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; + _autoresizingMask = objj_msgSend(aCoder, "decodeIntForKey:", CPViewAutoresizingMaskKey) || CPViewNotSizable; + _autoresizesSubviews = !objj_msgSend(aCoder, "containsValueForKey:", CPViewAutoresizesSubviewsKey) || objj_msgSend(aCoder, "decodeBoolForKey:", CPViewAutoresizesSubviewsKey); + _hitTests = !objj_msgSend(aCoder, "containsValueForKey:", CPViewHitTestsKey) || objj_msgSend(aCoder, "decodeObjectForKey:", CPViewHitTestsKey); + _DOMImageParts = []; + _DOMImageSizes = []; + if (NULL) var ____p = { x:CGPointMake((_frame.origin.x), (_frame.origin.y)).x * NULL.a + CGPointMake((_frame.origin.x), (_frame.origin.y)).y * NULL.c + NULL.tx, y:CGPointMake((_frame.origin.x), (_frame.origin.y)).x * NULL.b + CGPointMake((_frame.origin.x), (_frame.origin.y)).y * NULL.d + NULL.ty }; else var ____p = { x:(_frame.origin.x), y:(_frame.origin.y) }; _DOMElement.style.left = ROUND(____p.x) + "px";_DOMElement.style.top = ROUND(____p.y) + "px";; + _DOMElement.style.width = MAX(0.0, ROUND((_frame.size.width))) + "px"; _DOMElement.style.height = MAX(0.0, ROUND((_frame.size.height))) + "px";; + var index = 0, + count = _subviews.length; + for (; index < count; ++index) + { + _DOMElement.appendChild(_subviews[index]._DOMElement); + } + if (objj_msgSend(aCoder, "containsValueForKey:", CPViewIsHiddenKey)) + objj_msgSend(self, "setHidden:", objj_msgSend(aCoder, "decodeBoolForKey:", CPViewIsHiddenKey)); + else + _isHidden = NO; + if (objj_msgSend(aCoder, "containsValueForKey:", CPViewOpacityKey)) + objj_msgSend(self, "setAlphaValue:", objj_msgSend(aCoder, "decodeIntForKey:", CPViewOpacityKey)); + else + _opacity = 1.0; + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(aCoder, "decodeObjectForKey:", CPViewBackgroundColorKey)); + objj_msgSend(self, "setupViewFlags"); + _theme = objj_msgSend(CPTheme, "defaultTheme"); + _themeState = CPThemeState(objj_msgSend(aCoder, "decodeIntForKey:", CPViewThemeStateKey)); + _themeAttributes = {}; + var theClass = objj_msgSend(self, "class"), + themeClass = objj_msgSend(theClass, "themeClass"), + attributes = objj_msgSend(theClass, "_themeAttributes"), + count = attributes.length; + while (count--) + { + var attributeName = attributes[count--]; + _themeAttributes[attributeName] = CPThemeAttributeDecode(aCoder, attributeName, attributes[count], _theme, themeClass); + } + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "encodeWithCoder:", aCoder); + if (_tag !== -1) + objj_msgSend(aCoder, "encodeInt:forKey:", _tag, CPViewTagKey); + objj_msgSend(aCoder, "encodeRect:forKey:", _frame, CPViewFrameKey); + objj_msgSend(aCoder, "encodeRect:forKey:", _bounds, CPViewBoundsKey); + if (_window !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _window, CPViewWindowKey); + var count = objj_msgSend(_subviews, "count"), + encodedSubviews = _subviews; + if (count > 0 && objj_msgSend(_ephemeralSubviews, "count") > 0) + { + encodedSubviews = objj_msgSend(encodedSubviews, "copy"); + while (count--) + if (objj_msgSend(_ephemeralSubviews, "containsObject:", encodedSubviews[count])) + encodedSubviews.splice(count, 1); + } + if (encodedSubviews.length > 0) + objj_msgSend(aCoder, "encodeObject:forKey:", encodedSubviews, CPViewSubviewsKey); + if (_superview !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _superview, CPViewSuperviewKey); + if (_autoresizingMask !== CPViewNotSizable) + objj_msgSend(aCoder, "encodeInt:forKey:", _autoresizingMask, CPViewAutoresizingMaskKey); + if (!_autoresizesSubviews) + objj_msgSend(aCoder, "encodeBool:forKey:", _autoresizesSubviews, CPViewAutoresizesSubviewsKey); + if (_backgroundColor !== nil) + objj_msgSend(aCoder, "encodeObject:forKey:", _backgroundColor, CPViewBackgroundColorKey); + if (_hitTests !== YES) + objj_msgSend(aCoder, "encodeBool:forKey:", _hitTests, CPViewHitTestsKey); + if (_opacity !== 1.0) + objj_msgSend(aCoder, "encodeFloat:forKey:", _opacity, CPViewOpacityKey); + if (_isHidden) + objj_msgSend(aCoder, "encodeBool:forKey:", _isHidden, CPViewIsHiddenKey); + var nextKeyView = objj_msgSend(self, "nextKeyView"); + if (nextKeyView !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", nextKeyView, CPViewNextKeyViewKey); + var previousKeyView = objj_msgSend(self, "previousKeyView"); + if (previousKeyView !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", previousKeyView, CPViewPreviousKeyViewKey); + objj_msgSend(aCoder, "encodeInt:forKey:", CPThemeStateName(_themeState), CPViewThemeStateKey); + for (var attributeName in _themeAttributes) + if (_themeAttributes.hasOwnProperty(attributeName)) + CPThemeAttributeEncode(aCoder, _themeAttributes[attributeName]); +} +},["void","CPCoder"])]); +} +var _CPViewFullScreenModeStateMake = function(aView) +{ + var superview = aView._superview; + return { autoresizingMask:aView._autoresizingMask, frame:CGRectMakeCopy(aView._frame), index:(superview ? objj_msgSend(superview._subviews, "indexOfObjectIdenticalTo:", aView) : 0), superview:superview }; +} +var _CPViewGetTransform = function( fromView, toView) +{ + var transform = CGAffineTransformMakeIdentity(), + sameWindow = YES, + fromWindow = nil, + toWindow = nil; + if (fromView) + { + var view = fromView; + while (view && view != toView) + { + var frame = view._frame; + transform.tx += (frame.origin.x); + transform.ty += (frame.origin.y); + if (view._boundsTransform) + { + var tx = transform.tx * view._boundsTransform.a + transform.ty * view._boundsTransform.c + view._boundsTransform.tx;transform.ty = transform.tx * view._boundsTransform.b + transform.ty * view._boundsTransform.d + view._boundsTransform.ty;transform.tx = tx;var a = transform.a * view._boundsTransform.a + transform.b * view._boundsTransform.c, b = transform.a * view._boundsTransform.b + transform.b * view._boundsTransform.d, c = transform.c * view._boundsTransform.a + transform.d * view._boundsTransform.c;transform.d = transform.c * view._boundsTransform.b + transform.d * view._boundsTransform.d;transform.a = a;transform.b = b;transform.c = c;; + } + view = view._superview; + } + if (view === toView) + return transform; + else if (fromView && toView) + { + fromWindow = objj_msgSend(fromView, "window"); + toWindow = objj_msgSend(toView, "window"); + if (fromWindow && toWindow && fromWindow !== toWindow) + { + sameWindow = NO; + var frame = objj_msgSend(fromWindow, "frame"); + transform.tx += (frame.origin.x); + transform.ty += (frame.origin.y); + } + } + } + var view = toView; + while (view) + { + var frame = view._frame; + transform.tx -= (frame.origin.x); + transform.ty -= (frame.origin.y); + if (view._boundsTransform) + { + var tx = transform.tx * view._inverseBoundsTransform.a + transform.ty * view._inverseBoundsTransform.c + view._inverseBoundsTransform.tx;transform.ty = transform.tx * view._inverseBoundsTransform.b + transform.ty * view._inverseBoundsTransform.d + view._inverseBoundsTransform.ty;transform.tx = tx;var a = transform.a * view._inverseBoundsTransform.a + transform.b * view._inverseBoundsTransform.c, b = transform.a * view._inverseBoundsTransform.b + transform.b * view._inverseBoundsTransform.d, c = transform.c * view._inverseBoundsTransform.a + transform.d * view._inverseBoundsTransform.c;transform.d = transform.c * view._inverseBoundsTransform.b + transform.d * view._inverseBoundsTransform.d;transform.a = a;transform.b = b;transform.c = c;; + } + view = view._superview; + } + if (!sameWindow) + { + var frame = objj_msgSend(toWindow, "frame"); + transform.tx -= (frame.origin.x); + transform.ty -= (frame.origin.y); + } + return transform; +} + +p;17;CPViewAnimation.jt;7291;@STATIC;1.0;I;20;AppKit/CPAnimation.jt;7247;objj_executeFile("AppKit/CPAnimation.j", NO); +CPViewAnimationTargetKey = "CPViewAnimationTarget"; +CPViewAnimationStartFrameKey = "CPViewAnimationStartFrame"; +CPViewAnimationEndFrameKey = "CPViewAnimationEndFrame"; +CPViewAnimationEffectKey = "CPViewAnimationEffect"; +CPViewAnimationFadeInEffect = "CPViewAnimationFadeIn"; +CPViewAnimationFadeOutEffect = "CPViewAnimationFadeOut"; +{var the_class = objj_allocateClassPair(CPAnimation, "CPViewAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_viewAnimations")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithViewAnimations:"), function $CPViewAnimation__initWithViewAnimations_(self, _cmd, viewAnimations) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewAnimation").super_class }, "initWithDuration:animationCurve:", 0.5, CPAnimationLinear)) + { + objj_msgSend(self, "setViewAnimations:", viewAnimations); + } + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("startAnimation"), function $CPViewAnimation__startAnimation(self, _cmd) +{ with(self) +{ + var animationIndex = objj_msgSend(_viewAnimations, "count"); + while (animationIndex--) + { + var dictionary = objj_msgSend(_viewAnimations, "objectAtIndex:", animationIndex), + view = objj_msgSend(self, "_targetView:", dictionary), + startFrame = objj_msgSend(self, "_startFrame:", dictionary); + objj_msgSend(view, "setFrame:", startFrame); + var effect = objj_msgSend(self, "_effect:", dictionary); + if (effect === CPViewAnimationFadeInEffect) + { + objj_msgSend(view, "setAlphaValue:", 0.0); + objj_msgSend(view, "setHidden:", NO); + } + else if (effect === CPViewAnimationFadeOutEffect) + objj_msgSend(view, "setAlphaValue:", 1.0); + } + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewAnimation").super_class }, "startAnimation"); +} +},["void"]), new objj_method(sel_getUid("setCurrentProgress:"), function $CPViewAnimation__setCurrentProgress_(self, _cmd, progress) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewAnimation").super_class }, "setCurrentProgress:", progress); + var animationIndex = objj_msgSend(_viewAnimations, "count"); + while (animationIndex--) + { + var dictionary = objj_msgSend(_viewAnimations, "objectAtIndex:", animationIndex), + view = objj_msgSend(self, "_targetView:", dictionary), + startFrame = objj_msgSend(self, "_startFrame:", dictionary), + endFrame = objj_msgSend(self, "_endFrame:", dictionary), + differenceFrame = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + differenceFrame.origin.x = endFrame.origin.x - startFrame.origin.x; + differenceFrame.origin.y = endFrame.origin.y - startFrame.origin.y; + differenceFrame.size.width = endFrame.size.width - startFrame.size.width; + differenceFrame.size.height = endFrame.size.height - startFrame.size.height; + var intermediateFrame = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + intermediateFrame.origin.x = startFrame.origin.x + differenceFrame.origin.x * progress; + intermediateFrame.origin.y = startFrame.origin.y + differenceFrame.origin.y * progress; + intermediateFrame.size.width = startFrame.size.width + differenceFrame.size.width * progress; + intermediateFrame.size.height = startFrame.size.height + differenceFrame.size.height * progress; + objj_msgSend(view, "setFrame:", intermediateFrame); + var effect = objj_msgSend(self, "_effect:", dictionary); + if (effect === CPViewAnimationFadeInEffect) + objj_msgSend(view, "setAlphaValue:", 1.0 * progress); + else if (effect === CPViewAnimationFadeOutEffect) + objj_msgSend(view, "setAlphaValue:", 1.0 + ( 0.0 - 1.0 ) * progress); + if (progress === 1.0) + objj_msgSend(view, "setHidden:", (endFrame.size.width <= 0.0 || endFrame.size.height <= 0.0) || objj_msgSend(view, "alphaValue") === 0.0); + } +} +},["void","CPAnimationProgress"]), new objj_method(sel_getUid("stopAnimation"), function $CPViewAnimation__stopAnimation(self, _cmd) +{ with(self) +{ + var animationIndex = objj_msgSend(_viewAnimations, "count"); + while (animationIndex--) + { + var dictionary = objj_msgSend(_viewAnimations, "objectAtIndex:", animationIndex), + view = objj_msgSend(self, "_targetView:", dictionary), + endFrame = objj_msgSend(self, "_endFrame:", dictionary); + objj_msgSend(view, "setFrame:", endFrame); + var effect = objj_msgSend(self, "_effect:", dictionary); + if (effect === CPViewAnimationFadeInEffect) + objj_msgSend(view, "setAlphaValue:", 1.0); + else if (effect === CPViewAnimationFadeOutEffect) + objj_msgSend(view, "setAlphaValue:", 0.0); + objj_msgSend(view, "setHidden:", (endFrame.size.width <= 0.0 || endFrame.size.height <= 0.0) || objj_msgSend(view, "alphaValue") === 0.0); + } + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewAnimation").super_class }, "stopAnimation"); +} +},["void"]), new objj_method(sel_getUid("_targetView:"), function $CPViewAnimation___targetView_(self, _cmd, dictionary) +{ with(self) +{ + var targetView = objj_msgSend(dictionary, "valueForKey:", CPViewAnimationTargetKey); + if (!targetView) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, objj_msgSend(CPString, "stringWithFormat:", "view animation: %@ does not have a target view", objj_msgSend(dictionary, "description"))); + return targetView; +} +},["id","CPDictionary"]), new objj_method(sel_getUid("_startFrame:"), function $CPViewAnimation___startFrame_(self, _cmd, dictionary) +{ with(self) +{ + var startFrame = objj_msgSend(dictionary, "valueForKey:", CPViewAnimationStartFrameKey); + if (!startFrame) + return objj_msgSend(objj_msgSend(self, "_targetView:", dictionary), "frame"); + return startFrame; +} +},["CGRect","CPDictionary"]), new objj_method(sel_getUid("_endFrame:"), function $CPViewAnimation___endFrame_(self, _cmd, dictionary) +{ with(self) +{ + var endFrame = objj_msgSend(dictionary, "valueForKey:", CPViewAnimationEndFrameKey); + if (!endFrame) + return objj_msgSend(objj_msgSend(self, "_targetView:", dictionary), "frame"); + return endFrame; +} +},["CGRect","CPDictionary"]), new objj_method(sel_getUid("_effect:"), function $CPViewAnimation___effect_(self, _cmd, dictionary) +{ with(self) +{ + return objj_msgSend(dictionary, "valueForKey:", CPViewAnimationEffectKey); +} +},["CPString","CPDictionary"]), new objj_method(sel_getUid("viewAnimations"), function $CPViewAnimation__viewAnimations(self, _cmd) +{ with(self) +{ + return _viewAnimations; +} +},["CPArray"]), new objj_method(sel_getUid("setViewAnimations:"), function $CPViewAnimation__setViewAnimations_(self, _cmd, viewAnimations) +{ with(self) +{ + if (viewAnimations != _viewAnimations) + { + objj_msgSend(self, "stopAnimation"); + _viewAnimations = objj_msgSend(viewAnimations, "copy"); + } +} +},["void","CPArray"])]); +} + +p;18;CPViewController.jt;8017;@STATIC;1.0;I;20;AppKit/CPResponder.jt;7973;objj_executeFile("AppKit/CPResponder.j", NO); +var CPViewControllerCachedCibs; +{var the_class = objj_allocateClassPair(CPResponder, "CPViewController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_view"), new objj_ivar("_isLoading"), new objj_ivar("_representedObject"), new objj_ivar("_title"), new objj_ivar("_cibName"), new objj_ivar("_cibBundle"), new objj_ivar("_cibExternalNameTable")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("view"), function $CPViewController__view(self, _cmd) +{ with(self) +{ +return _view; +} +},["id"]), +new objj_method(sel_getUid("setView:"), function $CPViewController__setView_(self, _cmd, newValue) +{ with(self) +{ +_view = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("representedObject"), function $CPViewController__representedObject(self, _cmd) +{ with(self) +{ +return _representedObject; +} +},["id"]), +new objj_method(sel_getUid("setRepresentedObject:"), function $CPViewController__setRepresentedObject_(self, _cmd, newValue) +{ with(self) +{ +_representedObject = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("title"), function $CPViewController__title(self, _cmd) +{ with(self) +{ +return _title; +} +},["id"]), +new objj_method(sel_getUid("setTitle:"), function $CPViewController__setTitle_(self, _cmd, newValue) +{ with(self) +{ +_title = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("cibName"), function $CPViewController__cibName(self, _cmd) +{ with(self) +{ +return _cibName; +} +},["id"]), +new objj_method(sel_getUid("cibBundle"), function $CPViewController__cibBundle(self, _cmd) +{ with(self) +{ +return _cibBundle; +} +},["id"]), +new objj_method(sel_getUid("cibExternalNameTable"), function $CPViewController__cibExternalNameTable(self, _cmd) +{ with(self) +{ +return _cibExternalNameTable; +} +},["id"]), new objj_method(sel_getUid("init"), function $CPViewController__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithCibName:bundle:", nil, nil); +} +},["id"]), new objj_method(sel_getUid("initWithCibName:bundle:"), function $CPViewController__initWithCibName_bundle_(self, _cmd, aCibNameOrNil, aCibBundleOrNil) +{ with(self) +{ + return objj_msgSend(self, "initWithCibName:bundle:externalNameTable:", aCibNameOrNil, aCibBundleOrNil, nil); +} +},["id","CPString","CPBundle"]), new objj_method(sel_getUid("initWithCibName:bundle:owner:"), function $CPViewController__initWithCibName_bundle_owner_(self, _cmd, aCibNameOrNil, aCibBundleOrNil, anOwner) +{ with(self) +{ + return objj_msgSend(self, "initWithCibName:bundle:externalNameTable:", aCibNameOrNil, aCibBundleOrNil, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anOwner, CPCibOwner)); +} +},["id","CPString","CPBundle","id"]), new objj_method(sel_getUid("initWithCibName:bundle:externalNameTable:"), function $CPViewController__initWithCibName_bundle_externalNameTable_(self, _cmd, aCibNameOrNil, aCibBundleOrNil, anExternalNameTable) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewController").super_class }, "init"); + if (self) + { + _cibName = aCibNameOrNil; + _cibBundle = aCibBundleOrNil || objj_msgSend(CPBundle, "mainBundle"); + _cibExternalNameTable = anExternalNameTable || objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", self, CPCibOwner); + _isLoading = NO; + } + return self; +} +},["id","CPString","CPBundle","CPDictionary"]), new objj_method(sel_getUid("loadView"), function $CPViewController__loadView(self, _cmd) +{ with(self) +{ + if (_view) + return; + var cib = objj_msgSend(CPViewControllerCachedCibs, "objectForKey:", _cibName); + if (!cib) + { + cib = objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithContentsOfURL:", objj_msgSend(_cibBundle, "pathForResource:", _cibName + ".cib")); + objj_msgSend(CPViewControllerCachedCibs, "setObject:forKey:", cib, _cibName); + } + objj_msgSend(cib, "instantiateCibWithExternalNameTable:", _cibExternalNameTable); +} +},["void"]), new objj_method(sel_getUid("view"), function $CPViewController__view(self, _cmd) +{ with(self) +{ + if (!_view) + { + _isLoading = YES; + var cibOwner = objj_msgSend(_cibExternalNameTable, "objectForKey:", CPCibOwner); + if (objj_msgSend(cibOwner, "respondsToSelector:", sel_getUid("viewControllerWillLoadCib:"))) + objj_msgSend(cibOwner, "viewControllerWillLoadCib:", self); + objj_msgSend(self, "loadView"); + if (_view === nil && objj_msgSend(cibOwner, "isKindOfClass:", objj_msgSend(CPDocument, "class"))) + objj_msgSend(self, "setView:", objj_msgSend(cibOwner, "valueForKey:", "view")); + if (!_view) + { + var reason = objj_msgSend(CPString, "stringWithFormat:", "View for %@ could not be loaded from Cib or no view specified. Override loadView to load the view manually.", self); + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, reason); + } + if (objj_msgSend(cibOwner, "respondsToSelector:", sel_getUid("viewControllerDidLoadCib:"))) + objj_msgSend(cibOwner, "viewControllerDidLoadCib:", self); + _isLoading = NO; + objj_msgSend(self, "viewDidLoad"); + } + return _view; +} +},["CPView"]), new objj_method(sel_getUid("viewDidLoad"), function $CPViewController__viewDidLoad(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("setView:"), function $CPViewController__setView_(self, _cmd, aView) +{ with(self) +{ + var viewWasLoaded = !_view; + _view = aView; + if (!_isLoading && viewWasLoaded) + objj_msgSend(self, "viewDidLoad"); +} +},["void","CPView"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPViewController__initialize(self, _cmd) +{ with(self) +{ + if (self === CPViewController) + CPViewControllerCachedCibs = objj_msgSend(CPDictionary, "dictionary"); +} +},["void"])]); +} +var CPViewControllerViewKey = "CPViewControllerViewKey", + CPViewControllerTitleKey = "CPViewControllerTitleKey", + CPViewControllerCibNameKey = "CPViewControllerCibNameKey", + CPViewControllerBundleKey = "CPViewControllerBundleKey"; +{ +var the_class = objj_getClass("CPViewController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPViewController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPViewController__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewController").super_class }, "initWithCoder:", aCoder); + if (self) + { + _view = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewControllerViewKey); + _title = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewControllerTitleKey); + _cibName = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewControllerCibNameKey); + var bundlePath = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewControllerBundleKey); + _cibBundle = bundlePath ? objj_msgSend(CPBundle, "bundleWithPath:", bundlePath) : objj_msgSend(CPBundle, "mainBundle"); + _cibExternalNameTable = objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", self, CPCibOwner); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPViewController__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewController").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _view, CPViewControllerViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _title, CPViewControllerTitleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _cibName, CPViewControllerCibNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_cibBundle, "bundlePath"), CPViewControllerBundleKey); +} +},["void","CPCoder"])]); +} + +p;11;CPWebView.jt;20182;@STATIC;1.0;I;15;AppKit/CPView.jt;20142;objj_executeFile("AppKit/CPView.j", NO); +CPWebViewProgressStartedNotification = "CPWebViewProgressStartedNotification"; +CPWebViewProgressFinishedNotification = "CPWebViewProgressFinishedNotification"; +CPWebViewScrollAppKit = 1; +CPWebViewScrollNative = 2; +{var the_class = objj_allocateClassPair(CPView, "CPWebView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_scrollView"), new objj_ivar("_frameView"), new objj_ivar("_iframe"), new objj_ivar("_mainFrameURL"), new objj_ivar("_backwardStack"), new objj_ivar("_forwardStack"), new objj_ivar("_ignoreLoadStart"), new objj_ivar("_ignoreLoadEnd"), new objj_ivar("_downloadDelegate"), new objj_ivar("_frameLoadDelegate"), new objj_ivar("_policyDelegate"), new objj_ivar("_resourceLoadDelegate"), new objj_ivar("_UIDelegate"), new objj_ivar("_wso"), new objj_ivar("_url"), new objj_ivar("_html"), new objj_ivar("_loadCallback"), new objj_ivar("_scrollMode"), new objj_ivar("_scrollSize"), new objj_ivar("_loadHTMLStringTimer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:frameName:groupName:"), function $CPWebView__initWithFrame_frameName_groupName_(self, _cmd, frameRect, frameName, groupName) +{ with(self) +{ + if (self = objj_msgSend(self, "initWithFrame:", frameRect)) + { + _iframe.name = frameName; + } + return self +} +},["id","CPRect","CPString","CPString"]), new objj_method(sel_getUid("initWithFrame:"), function $CPWebView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebView").super_class }, "initWithFrame:", aFrame)) + { + _mainFrameURL = nil; + _backwardStack = []; + _forwardStack = []; + _scrollMode = CPWebViewScrollNative; + objj_msgSend(self, "_initDOMWithFrame:", aFrame); + } + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("_initDOMWithFrame:"), function $CPWebView___initDOMWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + _ignoreLoadStart = YES; + _ignoreLoadEnd = YES; + _iframe = document.createElement("iframe"); + _iframe.name = "iframe_" + Math.floor(Math.random()*10000); + _iframe.style.width = "100%"; + _iframe.style.height = "100%"; + _iframe.style.borderWidth = "0px"; + _iframe.frameBorder = "0"; + objj_msgSend(self, "setDrawsBackground:", YES); + _loadCallback = function() { + if (!_ignoreLoadStart) + { + objj_msgSend(self, "_startedLoading"); + if (_mainFrameURL) + objj_msgSend(_backwardStack, "addObject:", _mainFrameURL); + _mainFrameURL = _iframe.src; + _mainFrameURL = _iframe.src; + objj_msgSend(_forwardStack, "removeAllObjects"); + } + else + _ignoreLoadStart = NO; + if (!_ignoreLoadEnd) + { + objj_msgSend(self, "_finishedLoading"); + } + else + _ignoreLoadEnd = NO; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + } + if (_iframe.addEventListener) + _iframe.addEventListener("load", _loadCallback, false); + else if (_iframe.attachEvent) + _iframe.attachEvent("onload", _loadCallback); + _frameView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_frameView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + _scrollView = objj_msgSend(objj_msgSend(CPScrollView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_scrollView, "setAutohidesScrollers:", YES); + objj_msgSend(_scrollView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + objj_msgSend(_scrollView, "setDocumentView:", _frameView); + _frameView._DOMElement.appendChild(_iframe); + objj_msgSend(self, "_setScrollMode:", _scrollMode); + objj_msgSend(self, "addSubview:", _scrollView); +} +},["id","CPRect"]), new objj_method(sel_getUid("setFrameSize:"), function $CPWebView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebView").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "_resizeWebFrame"); +} +},["void","CPSize"]), new objj_method(sel_getUid("_attachScrollEventIfNecessary"), function $CPWebView___attachScrollEventIfNecessary(self, _cmd) +{ with(self) +{ + if (_scrollMode !== CPWebViewScrollAppKit) + return; + var win = null; + try { win = objj_msgSend(self, "DOMWindow"); } catch (e) {} + if (win && win.addEventListener) + { + var scrollEventHandler = function(anEvent) + { + var frameBounds = objj_msgSend(self, "bounds"), + frameCenter = CGPointMake(CGRectGetMidX(frameBounds), CGRectGetMidY(frameBounds)), + windowOrigin = objj_msgSend(self, "convertPoint:toView:", frameCenter, nil), + globalOrigin = objj_msgSend(objj_msgSend(self, "window"), "convertBaseToBridge:", windowOrigin); + anEvent._overrideLocation = globalOrigin; + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "scrollEvent:", anEvent); + }; + win.addEventListener("DOMMouseScroll", scrollEventHandler, false); + } +} +},["void"]), new objj_method(sel_getUid("_resizeWebFrame"), function $CPWebView___resizeWebFrame(self, _cmd) +{ with(self) +{ + if (_scrollMode === CPWebViewScrollAppKit) + { + if (_scrollSize) + { + objj_msgSend(_frameView, "setFrameSize:", _scrollSize); + } + else + { + var visibleRect = objj_msgSend(_frameView, "visibleRect"); + objj_msgSend(_frameView, "setFrameSize:", CGSizeMake(CGRectGetMaxX(visibleRect), CGRectGetMaxY(visibleRect))); + var win = null; + try { win = objj_msgSend(self, "DOMWindow"); } catch (e) {} + if (win && win.document && win.document.body) + { + var width = win.document.body.scrollWidth, + height = win.document.body.scrollHeight; + _iframe.setAttribute("width", width); + _iframe.setAttribute("height", height); + objj_msgSend(_frameView, "setFrameSize:", CGSizeMake(width, height)); + } + else + { + CPLog.warn("using default size 800*1600"); + objj_msgSend(_frameView, "setFrameSize:", CGSizeMake(800, 1600)); + } + objj_msgSend(_frameView, "scrollRectToVisible:", visibleRect); + } + } +} +},["void"]), new objj_method(sel_getUid("setScrollMode:"), function $CPWebView__setScrollMode_(self, _cmd, aScrollMode) +{ with(self) +{ + if (_scrollMode == aScrollMode) + return; + objj_msgSend(self, "_setScrollMode:", aScrollMode); +} +},["void","int"]), new objj_method(sel_getUid("_setScrollMode:"), function $CPWebView___setScrollMode_(self, _cmd, aScrollMode) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + _scrollMode = CPWebViewScrollNative; + else + _scrollMode = aScrollMode; + _ignoreLoadStart = YES; + _ignoreLoadEnd = YES; + var parent = _iframe.parentNode; + parent.removeChild(_iframe); + if (_scrollMode === CPWebViewScrollAppKit) + { + objj_msgSend(_scrollView, "setHasHorizontalScroller:", YES); + objj_msgSend(_scrollView, "setHasVerticalScroller:", YES); + _iframe.setAttribute("scrolling", "no"); + } + else + { + objj_msgSend(_scrollView, "setHasHorizontalScroller:", NO); + objj_msgSend(_scrollView, "setHasVerticalScroller:", NO); + _iframe.setAttribute("scrolling", "auto"); + objj_msgSend(_frameView, "setFrameSize:", objj_msgSend(_scrollView, "bounds").size); + } + parent.appendChild(_iframe); +} +},["void","int"]), new objj_method(sel_getUid("loadHTMLString:"), function $CPWebView__loadHTMLString_(self, _cmd, aString) +{ with(self) +{ + objj_msgSend(self, "loadHTMLString:baseURL:", aString, nil); +} +},["void","CPString"]), new objj_method(sel_getUid("loadHTMLString:baseURL:"), function $CPWebView__loadHTMLString_baseURL_(self, _cmd, aString, URL) +{ with(self) +{ + objj_msgSend(self, "_setScrollMode:", CPWebViewScrollAppKit); + objj_msgSend(_frameView, "setFrameSize:", objj_msgSend(_scrollView, "contentSize")); + objj_msgSend(self, "_startedLoading"); + _ignoreLoadStart = YES; + _ignoreLoadEnd = NO; + _url = null; + _html = aString; + objj_msgSend(self, "_load"); +} +},["void","CPString","CPURL"]), new objj_method(sel_getUid("_loadMainFrameURL"), function $CPWebView___loadMainFrameURL(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_setScrollMode:", CPWebViewScrollNative); + objj_msgSend(self, "_startedLoading"); + _ignoreLoadStart = YES; + _ignoreLoadEnd = NO; + _url = _mainFrameURL; + _html = null; + objj_msgSend(self, "_load"); +} +},["void"]), new objj_method(sel_getUid("_load"), function $CPWebView___load(self, _cmd) +{ with(self) +{ + if (_url) + { + _iframe.src = _url; + } + else if (_html) + { + _iframe.src = ""; + if (_loadHTMLStringTimer !== nil) + { + window.clearTimeout(_loadHTMLStringTimer); + _loadHTMLStringTimer = nil; + } + _loadHTMLStringTimer = window.setTimeout(function() + { + var win = objj_msgSend(self, "DOMWindow"); + if (win) + win.document.write(_html); + window.setTimeout(_loadCallback, 1); + }, 0); + } +} +},["void"]), new objj_method(sel_getUid("_startedLoading"), function $CPWebView___startedLoading(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWebViewProgressStartedNotification, self); + if (objj_msgSend(_frameLoadDelegate, "respondsToSelector:", sel_getUid("webView:didStartProvisionalLoadForFrame:"))) + objj_msgSend(_frameLoadDelegate, "webView:didStartProvisionalLoadForFrame:", self, nil); +} +},["void"]), new objj_method(sel_getUid("_finishedLoading"), function $CPWebView___finishedLoading(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_resizeWebFrame"); + objj_msgSend(self, "_attachScrollEventIfNecessary"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWebViewProgressFinishedNotification, self); + if (objj_msgSend(_frameLoadDelegate, "respondsToSelector:", sel_getUid("webView:didFinishLoadForFrame:"))) + objj_msgSend(_frameLoadDelegate, "webView:didFinishLoadForFrame:", self, nil); +} +},["void"]), new objj_method(sel_getUid("mainFrameURL"), function $CPWebView__mainFrameURL(self, _cmd) +{ with(self) +{ + return _mainFrameURL; +} +},["CPString"]), new objj_method(sel_getUid("setMainFrameURL:"), function $CPWebView__setMainFrameURL_(self, _cmd, URLString) +{ with(self) +{ + if (_mainFrameURL) + objj_msgSend(_backwardStack, "addObject:", _mainFrameURL); + _mainFrameURL = URLString; + objj_msgSend(_forwardStack, "removeAllObjects"); + objj_msgSend(self, "_loadMainFrameURL"); +} +},["void","CPString"]), new objj_method(sel_getUid("goBack"), function $CPWebView__goBack(self, _cmd) +{ with(self) +{ + if (_backwardStack.length > 0) + { + if (_mainFrameURL) + objj_msgSend(_forwardStack, "addObject:", _mainFrameURL); + _mainFrameURL = objj_msgSend(_backwardStack, "lastObject"); + objj_msgSend(_backwardStack, "removeLastObject"); + objj_msgSend(self, "_loadMainFrameURL"); + return YES; + } + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("goForward"), function $CPWebView__goForward(self, _cmd) +{ with(self) +{ + if (_forwardStack.length > 0) + { + if (_mainFrameURL) + objj_msgSend(_backwardStack, "addObject:", _mainFrameURL); + _mainFrameURL = objj_msgSend(_forwardStack, "lastObject"); + objj_msgSend(_forwardStack, "removeLastObject"); + objj_msgSend(self, "_loadMainFrameURL"); + return YES; + } + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("canGoBack"), function $CPWebView__canGoBack(self, _cmd) +{ with(self) +{ + return (_backwardStack.length > 0); +} +},["BOOL"]), new objj_method(sel_getUid("canGoForward"), function $CPWebView__canGoForward(self, _cmd) +{ with(self) +{ + return (_forwardStack.length > 0); +} +},["BOOL"]), new objj_method(sel_getUid("backForwardList"), function $CPWebView__backForwardList(self, _cmd) +{ with(self) +{ + return { back: _backwardStack, forward: _forwardStack }; +} +},["WebBackForwardList"]), new objj_method(sel_getUid("close"), function $CPWebView__close(self, _cmd) +{ with(self) +{ + _iframe.parentNode.removeChild(_iframe); +} +},["void"]), new objj_method(sel_getUid("DOMWindow"), function $CPWebView__DOMWindow(self, _cmd) +{ with(self) +{ + return (_iframe.contentDocument && _iframe.contentDocument.defaultView) || _iframe.contentWindow; +} +},["DOMWindow"]), new objj_method(sel_getUid("windowScriptObject"), function $CPWebView__windowScriptObject(self, _cmd) +{ with(self) +{ + var win = objj_msgSend(self, "DOMWindow"); + if (!_wso || win != objj_msgSend(_wso, "window")) + { + if (win) + _wso = objj_msgSend(objj_msgSend(CPWebScriptObject, "alloc"), "initWithWindow:", win); + else + _wso = nil; + } + return _wso; +} +},["CPWebScriptObject"]), new objj_method(sel_getUid("stringByEvaluatingJavaScriptFromString:"), function $CPWebView__stringByEvaluatingJavaScriptFromString_(self, _cmd, script) +{ with(self) +{ + var result = objj_msgSend(self, "objectByEvaluatingJavaScriptFromString:", script); + return result ? String(result) : nil; +} +},["CPString","CPString"]), new objj_method(sel_getUid("objectByEvaluatingJavaScriptFromString:"), function $CPWebView__objectByEvaluatingJavaScriptFromString_(self, _cmd, script) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "windowScriptObject"), "evaluateWebScript:", script); +} +},["JSObject","CPString"]), new objj_method(sel_getUid("computedStyleForElement:pseudoElement:"), function $CPWebView__computedStyleForElement_pseudoElement_(self, _cmd, element, pseudoElement) +{ with(self) +{ + var win = objj_msgSend(objj_msgSend(self, "windowScriptObject"), "window"); + if (win) + { + return win.document.defaultView.getComputedStyle(element, pseudoElement); + } + return nil; +} +},["DOMCSSStyleDeclaration","DOMElement","CPString"]), new objj_method(sel_getUid("drawsBackground"), function $CPWebView__drawsBackground(self, _cmd) +{ with(self) +{ + return _iframe.style.backgroundColor != ""; +} +},["BOOL"]), new objj_method(sel_getUid("setDrawsBackground:"), function $CPWebView__setDrawsBackground_(self, _cmd, drawsBackround) +{ with(self) +{ + _iframe.style.backgroundColor = drawsBackround ? "white" : ""; +} +},["void","BOOL"]), new objj_method(sel_getUid("takeStringURLFrom:"), function $CPWebView__takeStringURLFrom_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "setMainFrameURL:", objj_msgSend(sender, "stringValue")); +} +},["IBAction","id"]), new objj_method(sel_getUid("goBack:"), function $CPWebView__goBack_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "goBack"); +} +},["IBAction","id"]), new objj_method(sel_getUid("goForward:"), function $CPWebView__goForward_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "goForward"); +} +},["IBAction","id"]), new objj_method(sel_getUid("stopLoading:"), function $CPWebView__stopLoading_(self, _cmd, sender) +{ with(self) +{ +} +},["IBAction","id"]), new objj_method(sel_getUid("reload:"), function $CPWebView__reload_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_loadMainFrameURL"); +} +},["IBAction","id"]), new objj_method(sel_getUid("print:"), function $CPWebView__print_(self, _cmd, sender) +{ with(self) +{ + try + { + objj_msgSend(self, "DOMWindow").print(); + } + catch (e) + { + alert('Please click the webpage and select "Print" from the "File" menu'); + } +} +},["IBAction","id"]), new objj_method(sel_getUid("downloadDelegate"), function $CPWebView__downloadDelegate(self, _cmd) +{ with(self) +{ + return _downloadDelegate; +} +},["id"]), new objj_method(sel_getUid("setDownloadDelegate:"), function $CPWebView__setDownloadDelegate_(self, _cmd, anObject) +{ with(self) +{ + _downloadDelegate = anObject; +} +},["void","id"]), new objj_method(sel_getUid("frameLoadDelegate"), function $CPWebView__frameLoadDelegate(self, _cmd) +{ with(self) +{ + return _frameLoadDelegate; +} +},["id"]), new objj_method(sel_getUid("setFrameLoadDelegate:"), function $CPWebView__setFrameLoadDelegate_(self, _cmd, anObject) +{ with(self) +{ + _frameLoadDelegate = anObject; +} +},["void","id"]), new objj_method(sel_getUid("policyDelegate"), function $CPWebView__policyDelegate(self, _cmd) +{ with(self) +{ + return _policyDelegate; +} +},["id"]), new objj_method(sel_getUid("setPolicyDelegate:"), function $CPWebView__setPolicyDelegate_(self, _cmd, anObject) +{ with(self) +{ + _policyDelegate = anObject; +} +},["void","id"]), new objj_method(sel_getUid("resourceLoadDelegate"), function $CPWebView__resourceLoadDelegate(self, _cmd) +{ with(self) +{ + return _resourceLoadDelegate; +} +},["id"]), new objj_method(sel_getUid("setResourceLoadDelegate:"), function $CPWebView__setResourceLoadDelegate_(self, _cmd, anObject) +{ with(self) +{ + _resourceLoadDelegate = anObject; +} +},["void","id"]), new objj_method(sel_getUid("UIDelegate"), function $CPWebView__UIDelegate(self, _cmd) +{ with(self) +{ + return _UIDelegate; +} +},["id"]), new objj_method(sel_getUid("setUIDelegate:"), function $CPWebView__setUIDelegate_(self, _cmd, anObject) +{ with(self) +{ + _UIDelegate = anObject; +} +},["void","id"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPWebScriptObject"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithWindow:"), function $CPWebScriptObject__initWithWindow_(self, _cmd, aWindow) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebScriptObject").super_class }, "init")) + { + _window = aWindow; + } + return self; +} +},["id","Window"]), new objj_method(sel_getUid("callWebScriptMethod:withArguments:"), function $CPWebScriptObject__callWebScriptMethod_withArguments_(self, _cmd, methodName, args) +{ with(self) +{ + if (typeof _window[methodName] == "function") + { + try { + return _window[methodName].apply(args); + } catch (e) { + } + } + return undefined; +} +},["id","CPString","CPArray"]), new objj_method(sel_getUid("evaluateWebScript:"), function $CPWebScriptObject__evaluateWebScript_(self, _cmd, script) +{ with(self) +{ + try { + return _window.eval(script); + } catch (e) { + } + return undefined; +} +},["id","CPString"]), new objj_method(sel_getUid("window"), function $CPWebScriptObject__window(self, _cmd) +{ with(self) +{ + return _window; +} +},["Window"])]); +} +{ +var the_class = objj_getClass("CPWebView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWebView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPWebView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _mainFrameURL = nil; + _backwardStack = []; + _forwardStack = []; + _scrollMode = CPWebViewScrollNative; + objj_msgSend(self, "_initDOMWithFrame:", objj_msgSend(self, "frame")); + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(CPColor, "whiteColor")); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPWebView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + var actualSubviews = _subviews; + _subviews = []; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebView").super_class }, "encodeWithCoder:", aCoder); + _subviews = actualSubviews; +} +},["void","CPCoder"])]); +} + +p;20;CPWindowController.jt;13133;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;13;CPResponder.ji;10;CPWindow.ji;12;CPDocument.jt;13011;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPWindow.j", YES); +objj_executeFile("CPDocument.j", YES); +{var the_class = objj_allocateClassPair(CPResponder, "CPWindowController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window"), new objj_ivar("_documents"), new objj_ivar("_document"), new objj_ivar("_shouldCloseDocument"), new objj_ivar("_supportsMultipleDocuments"), new objj_ivar("_cibOwner"), new objj_ivar("_windowCibName"), new objj_ivar("_windowCibPath"), new objj_ivar("_viewController"), new objj_ivar("_viewControllerContainerView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPWindowController__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithWindow:", nil); +} +},["id"]), new objj_method(sel_getUid("initWithWindow:"), function $CPWindowController__initWithWindow_(self, _cmd, aWindow) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWindowController").super_class }, "init"); + if (self) + { + objj_msgSend(self, "setWindow:", aWindow); + objj_msgSend(self, "setShouldCloseDocument:", NO); + objj_msgSend(self, "setNextResponder:", CPApp); + _documents = []; + } + return self; +} +},["id","CPWindow"]), new objj_method(sel_getUid("initWithWindowCibName:"), function $CPWindowController__initWithWindowCibName_(self, _cmd, aWindowCibName) +{ with(self) +{ + return objj_msgSend(self, "initWithWindowCibName:owner:", aWindowCibName, self); +} +},["id","CPString"]), new objj_method(sel_getUid("initWithWindowCibName:owner:"), function $CPWindowController__initWithWindowCibName_owner_(self, _cmd, aWindowCibName, anOwner) +{ with(self) +{ + self = objj_msgSend(self, "initWithWindow:", nil); + if (self) + { + _cibOwner = anOwner; + _windowCibName = aWindowCibName; + } + return self; +} +},["id","CPString","id"]), new objj_method(sel_getUid("initWithWindowCibPath:owner:"), function $CPWindowController__initWithWindowCibPath_owner_(self, _cmd, aWindowCibPath, anOwner) +{ with(self) +{ + self = objj_msgSend(self, "initWithWindow:", nil); + if (self) + { + _cibOwner = anOwner; + _windowCibPath = aWindowCibPath; + } + return self; +} +},["id","CPString","id"]), new objj_method(sel_getUid("loadWindow"), function $CPWindowController__loadWindow(self, _cmd) +{ with(self) +{ + if (_window) + return; + objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "loadCibFile:externalNameTable:", objj_msgSend(self, "windowCibPath"), objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", _cibOwner, CPCibOwner)); +} +},["void"]), new objj_method(sel_getUid("showWindow:"), function $CPWindowController__showWindow_(self, _cmd, aSender) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"); + if (objj_msgSend(theWindow, "respondsToSelector:", sel_getUid("becomesKeyOnlyIfNeeded")) && objj_msgSend(theWindow, "becomesKeyOnlyIfNeeded")) + objj_msgSend(theWindow, "orderFront:", aSender); + else + objj_msgSend(theWindow, "makeKeyAndOrderFront:", aSender); +} +},["@action","id"]), new objj_method(sel_getUid("isWindowLoaded"), function $CPWindowController__isWindowLoaded(self, _cmd) +{ with(self) +{ + return _window !== nil; +} +},["BOOL"]), new objj_method(sel_getUid("window"), function $CPWindowController__window(self, _cmd) +{ with(self) +{ + if (!_window) + { + objj_msgSend(self, "windowWillLoad"); + objj_msgSend(_document, "windowControllerWillLoadCib:", self); + objj_msgSend(self, "loadWindow"); + if (_window === nil && objj_msgSend(_cibOwner, "isKindOfClass:", objj_msgSend(CPDocument, "class"))) + objj_msgSend(self, "setWindow:", objj_msgSend(_cibOwner, "valueForKey:", "window")); + if (!_window) + { + var reason = objj_msgSend(CPString, "stringWithFormat:", "Window for %@ could not be loaded from Cib or no window specified. Override loadWindow to load the window manually.", self); + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, reason); + } + objj_msgSend(self, "windowDidLoad"); + objj_msgSend(_document, "windowControllerDidLoadCib:", self); + objj_msgSend(self, "synchronizeWindowTitleWithDocumentName"); + } + return _window; +} +},["CPWindow"]), new objj_method(sel_getUid("setWindow:"), function $CPWindowController__setWindow_(self, _cmd, aWindow) +{ with(self) +{ + objj_msgSend(_window, "setWindowController:", nil); + _window = aWindow; + objj_msgSend(_window, "setWindowController:", self); + objj_msgSend(_window, "setNextResponder:", self); +} +},["void","CPWindow"]), new objj_method(sel_getUid("windowDidLoad"), function $CPWindowController__windowDidLoad(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("windowWillLoad"), function $CPWindowController__windowWillLoad(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("setDocument:"), function $CPWindowController__setDocument_(self, _cmd, aDocument) +{ with(self) +{ + if (_document === aDocument) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_document) + { + if (!objj_msgSend(self, "supportsMultipleDocuments")) + objj_msgSend(self, "removeDocument:", _document); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPDocumentWillSaveNotification, _document); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPDocumentDidSaveNotification, _document); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPDocumentDidFailToSaveNotification, _document); + } + _document = aDocument; + if (_document) + { + objj_msgSend(self, "addDocument:", _document); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_documentWillSave:"), CPDocumentWillSaveNotification, _document); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_documentDidSave:"), CPDocumentDidSaveNotification, _document); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_documentDidFailToSave:"), CPDocumentDidFailToSaveNotification, _document); + objj_msgSend(self, "setDocumentEdited:", objj_msgSend(_document, "isDocumentEdited")); + } + var viewController = objj_msgSend(_document, "viewControllerForWindowController:", self); + if (viewController) + objj_msgSend(self, "setViewController:", viewController); + objj_msgSend(self, "synchronizeWindowTitleWithDocumentName"); +} +},["void","CPDocument"]), new objj_method(sel_getUid("setSupportsMultipleDocuments:"), function $CPWindowController__setSupportsMultipleDocuments_(self, _cmd, shouldSupportMultipleDocuments) +{ with(self) +{ + _supportsMultipleDocuments = shouldSupportMultipleDocuments; +} +},["void","BOOL"]), new objj_method(sel_getUid("supportsMultipleDocuments"), function $CPWindowController__supportsMultipleDocuments(self, _cmd) +{ with(self) +{ + return _supportsMultipleDocuments; +} +},["BOOL"]), new objj_method(sel_getUid("addDocument:"), function $CPWindowController__addDocument_(self, _cmd, aDocument) +{ with(self) +{ + if (aDocument && !objj_msgSend(_documents, "containsObject:", aDocument)) + objj_msgSend(_documents, "addObject:", aDocument); +} +},["void","CPDocument"]), new objj_method(sel_getUid("removeDocument:"), function $CPWindowController__removeDocument_(self, _cmd, aDocument) +{ with(self) +{ + var index = objj_msgSend(_documents, "indexOfObjectIdenticalTo:", aDocument); + if (index === CPNotFound) + return; + objj_msgSend(_documents, "removeObjectAtIndex:", index); + if (_document === aDocument && objj_msgSend(_documents, "count")) + objj_msgSend(self, "setDocument:", objj_msgSend(_documents, "objectAtIndex:", MIN(index, objj_msgSend(_documents, "count") - 1))); +} +},["void","CPDocument"]), new objj_method(sel_getUid("removeDocumentAndCloseIfNecessary:"), function $CPWindowController__removeDocumentAndCloseIfNecessary_(self, _cmd, aDocument) +{ with(self) +{ + objj_msgSend(self, "removeDocument:", aDocument); + if (!objj_msgSend(_documents, "count")) + objj_msgSend(self, "close"); +} +},["void","CPDocument"]), new objj_method(sel_getUid("documents"), function $CPWindowController__documents(self, _cmd) +{ with(self) +{ + return _documents; +} +},["CPArray"]), new objj_method(sel_getUid("setViewControllerContainerView:"), function $CPWindowController__setViewControllerContainerView_(self, _cmd, aView) +{ with(self) +{ + _viewControllerContainerView = aView; +} +},["void","CPView"]), new objj_method(sel_getUid("viewControllerContainerView"), function $CPWindowController__viewControllerContainerView(self, _cmd) +{ with(self) +{ + return _viewControllerContainerView; +} +},["void"]), new objj_method(sel_getUid("setViewController:"), function $CPWindowController__setViewController_(self, _cmd, aViewController) +{ with(self) +{ + var containerView = objj_msgSend(self, "viewControllerContainerView") || objj_msgSend(objj_msgSend(self, "window"), "contentView"), + view = objj_msgSend(_viewController, "view"), + frame = view ? objj_msgSend(view, "frame") : objj_msgSend(containerView, "bounds"); + objj_msgSend(view, "removeFromSuperview"); + _viewController = aViewController; + view = objj_msgSend(_viewController, "view"); + if (view) + { + objj_msgSend(view, "setFrame:", frame); + objj_msgSend(containerView, "addSubview:", view); + } +} +},["void","CPViewController"]), new objj_method(sel_getUid("viewController"), function $CPWindowController__viewController(self, _cmd) +{ with(self) +{ + return _viewController; +} +},["CPViewController"]), new objj_method(sel_getUid("_documentWillSave:"), function $CPWindowController___documentWillSave_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "setDocumentSaving:", YES); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_documentDidSave:"), function $CPWindowController___documentDidSave_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "setDocumentSaving:", NO); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_documentDidFailToSave:"), function $CPWindowController___documentDidFailToSave_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "setDocumentSaving:", NO); +} +},["void","CPNotification"]), new objj_method(sel_getUid("document"), function $CPWindowController__document(self, _cmd) +{ with(self) +{ + return _document; +} +},["CPDocument"]), new objj_method(sel_getUid("setDocumentEdited:"), function $CPWindowController__setDocumentEdited_(self, _cmd, isEdited) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "setDocumentEdited:", isEdited); +} +},["void","BOOL"]), new objj_method(sel_getUid("close"), function $CPWindowController__close(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "close"); +} +},["void"]), new objj_method(sel_getUid("setShouldCloseDocument:"), function $CPWindowController__setShouldCloseDocument_(self, _cmd, shouldCloseDocument) +{ with(self) +{ + _shouldCloseDocument = shouldCloseDocument; +} +},["void","BOOL"]), new objj_method(sel_getUid("shouldCloseDocument"), function $CPWindowController__shouldCloseDocument(self, _cmd) +{ with(self) +{ + return _shouldCloseDocument; +} +},["BOOL"]), new objj_method(sel_getUid("owner"), function $CPWindowController__owner(self, _cmd) +{ with(self) +{ + return _cibOwner; +} +},["id"]), new objj_method(sel_getUid("windowCibName"), function $CPWindowController__windowCibName(self, _cmd) +{ with(self) +{ + if (_windowCibName) + return _windowCibName; + return objj_msgSend(objj_msgSend(_windowCibPath, "lastPathComponent"), "stringByDeletingPathExtension"); +} +},["CPString"]), new objj_method(sel_getUid("windowCibPath"), function $CPWindowController__windowCibPath(self, _cmd) +{ with(self) +{ + if (_windowCibPath) + return _windowCibPath; + return objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", _windowCibName + ".cib"); +} +},["CPString"]), new objj_method(sel_getUid("synchronizeWindowTitleWithDocumentName"), function $CPWindowController__synchronizeWindowTitleWithDocumentName(self, _cmd) +{ with(self) +{ + if (!_document || !_window) + return; + objj_msgSend(_window, "setTitle:", objj_msgSend(self, "windowTitleForDocumentDisplayName:", objj_msgSend(_document, "displayName"))); +} +},["void"]), new objj_method(sel_getUid("windowTitleForDocumentDisplayName:"), function $CPWindowController__windowTitleForDocumentDisplayName_(self, _cmd, aDisplayName) +{ with(self) +{ + return aDisplayName; +} +},["CPString","CPString"])]); +} + +p;20;_CPCibClassSwapper.jt;2145;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;2074;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +var _CPCibClassSwapperClassNameKey = "_CPCibClassSwapperClassNameKey", + _CPCibClassSwapperOriginalClassNameKey = "_CPCibClassSwapperOriginalClassNameKey"; +{var the_class = objj_allocateClassPair(CPObject, "_CPCibClassSwapper"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("allocObjectWithCoder:className:"), function $_CPCibClassSwapper__allocObjectWithCoder_className_(self, _cmd, aCoder, aClassName) +{ with(self) +{ + var theClass = objj_msgSend(aCoder, "classForClassName:", aClassName); + if (!theClass) + { + theClass = objj_lookUpClass(aClassName); + if (!theClass) + return nil; + } + return objj_msgSend(theClass, "alloc"); +} +},["void","CPCoder","CPString"]), new objj_method(sel_getUid("allocWithCoder:"), function $_CPCibClassSwapper__allocWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (objj_msgSend(aCoder, "respondsToSelector:", sel_getUid("usesOriginalClasses")) && objj_msgSend(aCoder, "usesOriginalClasses")) + { + var theClassName = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibClassSwapperOriginalClassNameKey), + object = objj_msgSend(self, "allocObjectWithCoder:className:", aCoder, theClassName); + } + else + { + var theClassName = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibClassSwapperClassNameKey), + object = objj_msgSend(self, "allocObjectWithCoder:className:", aCoder, theClassName); + if (!object) + { + CPLog.error("Unable to find class " + theClassName + " in cib file."); + object = objj_msgSend(self, "allocObjectWithCoder:className:", aCoder, objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibClassSwapperOriginalClassNameKey)); + } + } + if (!object) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Unable to find class " + theClassName + " in cib file."); + return object; +} +},["id","CPCoder"])]); +} + +p;20;_CPCibCustomObject.jt;2567;@STATIC;1.0;I;21;Foundation/CPObject.jt;2522; + + +objj_executeFile("Foundation/CPObject.j", NO); + + +var _CPCibCustomObjectClassName = "_CPCibCustomObjectClassName"; + +{var the_class = objj_allocateClassPair(CPObject, "_CPCibCustomObject"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_className")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("customClassName"), function $_CPCibCustomObject__customClassName(self, _cmd) +{ with(self) +{ + return _className; +} +},["CPString"]), new objj_method(sel_getUid("setCustomClassName:"), function $_CPCibCustomObject__setCustomClassName_(self, _cmd, aClassName) +{ with(self) +{ + _className = aClassName; +} +},["void","CPString"]), new objj_method(sel_getUid("description"), function $_CPCibCustomObject__description(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomObject").super_class }, "description") + " (" + objj_msgSend(self, "customClassName") + ')'; +} +},["CPString"])]); +} + +{ +var the_class = objj_getClass("_CPCibCustomObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPCibCustomObject__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomObject").super_class }, "init"); + + if (self) + _className = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomObjectClassName); + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibCustomObject__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _className, _CPCibCustomObjectClassName); +} +},["void","CPCoder"]), new objj_method(sel_getUid("_cibInstantiate"), function $_CPCibCustomObject___cibInstantiate(self, _cmd) +{ with(self) +{ + var theClass = CPClassFromString(_className); + + + if (theClass === objj_msgSend(self, "class")) + { + _className = "CPObject"; + + return self; + } + + if (!theClass) + { + + CPLog("Unknown class \"" + _className + "\" in cib file"); + + theClass = objj_msgSend(CPObject, "class"); + } + + if (theClass === objj_msgSend(CPApplication, "class")) + return objj_msgSend(CPApplication, "sharedApplication"); + + return objj_msgSend(objj_msgSend(theClass, "alloc"), "init"); +} +},["id"])]); +} + +p;22;_CPCibCustomResource.jt;4626;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;4555;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +var _CPCibCustomResourceClassNameKey = "_CPCibCustomResourceClassNameKey", + _CPCibCustomResourceResourceNameKey = "_CPCibCustomResourceResourceNameKey", + _CPCibCustomResourcePropertiesKey = "_CPCibCustomResourcePropertiesKey"; +{var the_class = objj_allocateClassPair(CPObject, "_CPCibCustomResource"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_className"), new objj_ivar("_resourceName"), new objj_ivar("_properties")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithClassName:resourceName:properties:"), function $_CPCibCustomResource__initWithClassName_resourceName_properties_(self, _cmd, aClassName, aResourceName, properties) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomResource").super_class }, "init"); + if (self) + { + _className = aClassName; + _resourceName = aResourceName; + _properties = properties; + } + return self; +} +},["id","CPString","CPString","CPDictionary"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPCibCustomResource__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomResource").super_class }, "init"); + if (self) + { + _className = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomResourceClassNameKey); + _resourceName = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomResourceResourceNameKey); + _properties = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomResourcePropertiesKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibCustomResource__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _className, _CPCibCustomResourceClassNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _resourceName, _CPCibCustomResourceResourceNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _properties, _CPCibCustomResourcePropertiesKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("awakeAfterUsingCoder:"), function $_CPCibCustomResource__awakeAfterUsingCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (objj_msgSend(aCoder, "respondsToSelector:", sel_getUid("bundle")) && + (!objj_msgSend(aCoder, "respondsToSelector:", sel_getUid("awakenCustomResources")) || objj_msgSend(aCoder, "awakenCustomResources"))) + if (_className === "CPImage") + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(aCoder, "bundle"), "pathForResource:", _resourceName), _properties.valueForKey("size")); + return self; +} +},["id","CPCoder"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("imageResourceWithName:size:"), function $_CPCibCustomResource__imageResourceWithName_size_(self, _cmd, aResourceName, aSize) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithClassName:resourceName:properties:", "CPImage", aResourceName, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", aSize, "size")); +} +},["id","CPString","CGSize"])]); +} +{ +var the_class = objj_getClass("_CPCibCustomResource") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomResource\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("filename"), function $_CPCibCustomResource__filename(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", _resourceName); +} +},["CPString"]), new objj_method(sel_getUid("size"), function $_CPCibCustomResource__size(self, _cmd) +{ with(self) +{ + return objj_msgSend(_properties, "objectForKey:", "size"); +} +},["CGSize"]), new objj_method(sel_getUid("isThreePartImage"), function $_CPCibCustomResource__isThreePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("isNinePartImage"), function $_CPCibCustomResource__isNinePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("loadStatus"), function $_CPCibCustomResource__loadStatus(self, _cmd) +{ with(self) +{ + return CPImageLoadStatusCompleted; +} +},["unsigned"]), new objj_method(sel_getUid("delegate"), function $_CPCibCustomResource__delegate(self, _cmd) +{ with(self) +{ + return nil; +} +},["id"])]); +} + +p;18;_CPCibCustomView.jt;3499;@STATIC;1.0;i;8;CPView.jt;3468;objj_executeFile("CPView.j", YES); +{var the_class = objj_allocateClassPair(CPView, "_CPCibCustomView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_className")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("customClassName"), function $_CPCibCustomView__customClassName(self, _cmd) +{ with(self) +{ + return _className; +} +},["CPString"]), new objj_method(sel_getUid("setCustomClassName:"), function $_CPCibCustomView__setCustomClassName_(self, _cmd, aClassName) +{ with(self) +{ + if (_className === aClassName) + return; + _className = aClassName; + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPString"])]); +} +var _CPCibCustomViewClassNameKey = "_CPCibCustomViewClassNameKey"; +{ +var the_class = objj_getClass("_CPCibCustomView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPCibCustomView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomView").super_class }, "initWithCoder:", aCoder); + if (self) + _className = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomViewClassNameKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibCustomView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _className, _CPCibCustomViewClassNameKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("customClassName"), function $_CPCibCustomView__customClassName(self, _cmd) +{ with(self) +{ + return _className; +} +},["CPString"]), new objj_method(sel_getUid("_cibInstantiate"), function $_CPCibCustomView___cibInstantiate(self, _cmd) +{ with(self) +{ + var theClass = CPClassFromString(_className); + if (!theClass) + { + CPLog("Unknown class \"" + _className + "\" in cib file, using CPView instead."); + theClass = objj_msgSend(CPView, "class"); + } + if (theClass === objj_msgSend(self, "class")) + { + _className = "CPView"; + return self; + } + var view = objj_msgSend(objj_msgSend(theClass, "alloc"), "initWithFrame:", objj_msgSend(self, "frame")); + if (view) + { + objj_msgSend(view, "setBounds:", objj_msgSend(self, "bounds")); + var subviews = objj_msgSend(self, "subviews"), + index = 0, + count = subviews.length; + for (; index < count; ++index) + objj_msgSend(view, "addSubview:", subviews[index]); + objj_msgSend(view, "setAutoresizingMask:", objj_msgSend(self, "autoresizingMask")); + objj_msgSend(view, "setAutoresizesSubviews:", objj_msgSend(self, "autoresizesSubviews")); + objj_msgSend(view, "setHitTests:", objj_msgSend(self, "hitTests")); + objj_msgSend(view, "setHidden:", objj_msgSend(self, "isHidden")); + objj_msgSend(view, "setAlphaValue:", objj_msgSend(self, "alphaValue")); + objj_msgSend(_superview, "replaceSubview:with:", self, view); + objj_msgSend(view, "setBackgroundColor:", objj_msgSend(self, "backgroundColor")); + } + return view; +} +},["id"])]); +} + +p;23;_CPCibKeyedUnarchiver.jt;2385;@STATIC;1.0;I;30;Foundation/CPKeyedUnarchiver.jt;2331; + + +objj_executeFile("Foundation/CPKeyedUnarchiver.j", NO); + + +{var the_class = objj_allocateClassPair(CPKeyedUnarchiver, "_CPCibKeyedUnarchiver"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_bundle"), new objj_ivar("_awakenCustomResources"), new objj_ivar("_externalObjectsForProxyIdentifiers")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initForReadingWithData:bundle:awakenCustomResources:"), function $_CPCibKeyedUnarchiver__initForReadingWithData_bundle_awakenCustomResources_(self, _cmd, data, aBundle, shouldAwakenCustomResources) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibKeyedUnarchiver").super_class }, "initForReadingWithData:", data); + + if (self) + { + _bundle = aBundle; + _awakenCustomResources = shouldAwakenCustomResources; + + objj_msgSend(self, "setDelegate:", self); + } + + return self; +} +},["id","CPData","CPBundle","BOOL"]), new objj_method(sel_getUid("bundle"), function $_CPCibKeyedUnarchiver__bundle(self, _cmd) +{ with(self) +{ + return _bundle; +} +},["CPBundle"]), new objj_method(sel_getUid("awakenCustomResources"), function $_CPCibKeyedUnarchiver__awakenCustomResources(self, _cmd) +{ with(self) +{ + return _awakenCustomResources; +} +},["BOOL"]), new objj_method(sel_getUid("setExternalObjectsForProxyIdentifiers:"), function $_CPCibKeyedUnarchiver__setExternalObjectsForProxyIdentifiers_(self, _cmd, externalObjectsForProxyIdentifiers) +{ with(self) +{ + _externalObjectsForProxyIdentifiers = externalObjectsForProxyIdentifiers; +} +},["void","CPDictionary"]), new objj_method(sel_getUid("externalObjectForProxyIdentifier:"), function $_CPCibKeyedUnarchiver__externalObjectForProxyIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + return objj_msgSend(_externalObjectsForProxyIdentifiers, "objectForKey:", anIdentifier); +} +},["id","CPString"]), new objj_method(sel_getUid("replaceObjectAtUID:withObject:"), function $_CPCibKeyedUnarchiver__replaceObjectAtUID_withObject_(self, _cmd, aUID, anObject) +{ with(self) +{ + _objects[aUID] = anObject; +} +},["void","int","id"]), new objj_method(sel_getUid("objectAtUID:"), function $_CPCibKeyedUnarchiver__objectAtUID_(self, _cmd, aUID) +{ with(self) +{ + return _objects[aUID]; +} +},["id","int"])]); +} + +p;18;_CPCibObjectData.jt;9737;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;22;CPCibOutletConnector.jt;9554;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPCib.j", YES); +objj_executeFile("CPCibConnector.j", YES); +objj_executeFile("CPCibControlConnector.j", YES); +objj_executeFile("CPCibOutletConnector.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "_CPCibObjectData"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_namesKeys"), new objj_ivar("_namesValues"), new objj_ivar("_accessibilityConnectors"), new objj_ivar("_accessibilityOidsKeys"), new objj_ivar("_accessibilityOidsValues"), new objj_ivar("_classesKeys"), new objj_ivar("_classesValues"), new objj_ivar("_connections"), new objj_ivar("_fontManager"), new objj_ivar("_framework"), new objj_ivar("_nextOid"), new objj_ivar("_objectsKeys"), new objj_ivar("_objectsValues"), new objj_ivar("_oidKeys"), new objj_ivar("_oidValues"), new objj_ivar("_fileOwner"), new objj_ivar("_visibleWindows"), new objj_ivar("_replacementObjects")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $_CPCibObjectData__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibObjectData").super_class }, "init"); + if (self) + { + _namesKeys = []; + _namesValues = []; + _classesKeys = []; + _classesValues = []; + _connections = []; + _framework = ""; + _nextOid = []; + _objectsKeys = []; + _objectsValues = []; + _oidKeys = []; + _oidValues = []; + _fileOwner = nil; + _visibleWindows = objj_msgSend(CPSet, "set"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("displayVisibleWindows"), function $_CPCibObjectData__displayVisibleWindows(self, _cmd) +{ with(self) +{ + var object = nil, + objectEnumerator = objj_msgSend(_visibleWindows, "objectEnumerator"); + while (object = objj_msgSend(objectEnumerator, "nextObject")) + objj_msgSend(_replacementObjects[objj_msgSend(object, "UID")], "makeKeyAndOrderFront:", self); +} +},["void"])]); +} +var _CPCibObjectDataNamesKeysKey = "_CPCibObjectDataNamesKeysKey", + _CPCibObjectDataNamesValuesKey = "_CPCibObjectDataNamesValuesKey", + _CPCibObjectDataAccessibilityConnectorsKey = "_CPCibObjectDataAccessibilityConnectors", + _CPCibObjectDataAccessibilityOidsKeysKey = "_CPCibObjectDataAccessibilityOidsKeys", + _CPCibObjectDataAccessibilityOidsValuesKey = "_CPCibObjectDataAccessibilityOidsValues", + _CPCibObjectDataClassesKeysKey = "_CPCibObjectDataClassesKeysKey", + _CPCibObjectDataClassesValuesKey = "_CPCibObjectDataClassesValuesKey", + _CPCibObjectDataConnectionsKey = "_CPCibObjectDataConnectionsKey", + _CPCibObjectDataFontManagerKey = "_CPCibObjectDataFontManagerKey", + _CPCibObjectDataFrameworkKey = "_CPCibObjectDataFrameworkKey", + _CPCibObjectDataNextOidKey = "_CPCibObjectDataNextOidKey", + _CPCibObjectDataObjectsKeysKey = "_CPCibObjectDataObjectsKeysKey", + _CPCibObjectDataObjectsValuesKey = "_CPCibObjectDataObjectsValuesKey", + _CPCibObjectDataOidKeysKey = "_CPCibObjectDataOidKeysKey", + _CPCibObjectDataOidValuesKey = "_CPCibObjectDataOidValuesKey", + _CPCibObjectDataFileOwnerKey = "_CPCibObjectDataFileOwnerKey", + _CPCibObjectDataVisibleWindowsKey = "_CPCibObjectDataVisibleWindowsKey"; +{ +var the_class = objj_getClass("_CPCibObjectData") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibObjectData\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPCibObjectData__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibObjectData").super_class }, "init"); + if (self) + { + _replacementObjects = {}; + _namesKeys = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataNamesKeysKey); + _namesValues = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataNamesValuesKey); + _classesKeys = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataClassesKeysKey); + _classesValues = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataClassesValuesKey); + _connections = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataConnectionsKey); + _framework = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataFrameworkKey); + _nextOid = objj_msgSend(aCoder, "decodeIntForKey:", _CPCibObjectDataNextOidKey); + _objectsKeys = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataObjectsKeysKey); + _objectsValues = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataObjectsValuesKey); + _oidKeys = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataOidKeysKey); + _oidValues = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataOidValuesKey); + _fileOwner = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataFileOwnerKey); + _visibleWindows = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataVisibleWindowsKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibObjectData__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _namesKeys, _CPCibObjectDataNamesKeysKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _namesValues, _CPCibObjectDataNamesValuesKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _classesKeys, _CPCibObjectDataClassesKeysKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _classesValues, _CPCibObjectDataClassesValuesKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _connections, _CPCibObjectDataConnectionsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _framework, _CPCibObjectDataFrameworkKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _nextOid, _CPCibObjectDataNextOidKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _objectsKeys, _CPCibObjectDataObjectsKeysKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _objectsValues, _CPCibObjectDataObjectsValuesKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _oidKeys, _CPCibObjectDataOidKeysKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _oidValues, _CPCibObjectDataOidValuesKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _fileOwner, _CPCibObjectDataFileOwnerKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _visibleWindows, _CPCibObjectDataVisibleWindowsKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("instantiateWithOwner:topLevelObjects:"), function $_CPCibObjectData__instantiateWithOwner_topLevelObjects_(self, _cmd, anOwner, topLevelObjects) +{ with(self) +{ + var count = objj_msgSend(_objectsKeys, "count"); + while (count--) + { + var object = _objectsKeys[count], + parent = _objectsValues[count], + instantiatedObject = object; + if (objj_msgSend(object, "respondsToSelector:", sel_getUid("_cibInstantiate"))) + { + var instantiatedObject = objj_msgSend(object, "_cibInstantiate"); + if (instantiatedObject !== object) + { + _replacementObjects[objj_msgSend(object, "UID")] = instantiatedObject; + if (objj_msgSend(instantiatedObject, "isKindOfClass:", objj_msgSend(CPView, "class"))) + { + var clipView = objj_msgSend(instantiatedObject, "superview"); + if (objj_msgSend(clipView, "isKindOfClass:", objj_msgSend(CPClipView, "class"))) + { + var scrollView = objj_msgSend(clipView, "superview"); + if (objj_msgSend(scrollView, "isKindOfClass:", objj_msgSend(CPScrollView, "class"))) + objj_msgSend(scrollView, "setDocumentView:", instantiatedObject); + } + } + } + } + if (topLevelObjects && parent === _fileOwner && object !== _fileOwner) + topLevelObjects.push(instantiatedObject); + } +} +},["void","id","CPMutableArray"]), new objj_method(sel_getUid("establishConnectionsWithOwner:topLevelObjects:"), function $_CPCibObjectData__establishConnectionsWithOwner_topLevelObjects_(self, _cmd, anOwner, topLevelObjects) +{ with(self) +{ + _replacementObjects[objj_msgSend(_fileOwner, "UID")] = anOwner; + var index = 0, + count = _connections.length; + for (; index < count; ++index) + { + var connection = _connections[index]; + objj_msgSend(connection, "replaceObjects:", _replacementObjects); + objj_msgSend(connection, "establishConnection"); + } +} +},["void","id","CPMutableArray"]), new objj_method(sel_getUid("awakeWithOwner:topLevelObjects:"), function $_CPCibObjectData__awakeWithOwner_topLevelObjects_(self, _cmd, anOwner, topLevelObjects) +{ with(self) +{ + var count = objj_msgSend(_objectsKeys, "count"); + while (count--) + { + var object = _objectsKeys[count], + instantiatedObject = _replacementObjects[objj_msgSend(object, "UID")]; + if (instantiatedObject) + object = instantiatedObject; + if (object !== anOwner && objj_msgSend(object, "respondsToSelector:", sel_getUid("awakeFromCib"))) + objj_msgSend(object, "awakeFromCib"); + } + if (objj_msgSend(anOwner, "respondsToSelector:", sel_getUid("awakeFromCib"))) + objj_msgSend(anOwner, "awakeFromCib"); +} +},["void","id","CPMutableArray"])]); +} + +p;19;_CPCibProxyObject.jt;1404;@STATIC;1.0;I;21;Foundation/CPObject.jt;1359; + + +objj_executeFile("Foundation/CPObject.j", NO); + + +{var the_class = objj_allocateClassPair(CPObject, "_CPCibProxyObject"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_identifier")]); +objj_registerClassPair(the_class); +} + +var _CPCibProxyObjectIdentifierKey = "CPIdentifier"; + +{ +var the_class = objj_getClass("_CPCibProxyObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibProxyObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPCibProxyObject__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibProxyObject").super_class }, "init"); + + if (self) + _identifier = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibProxyObjectIdentifierKey); + + if (objj_msgSend(aCoder, "respondsToSelector:", sel_getUid("externalObjectForProxyIdentifier:"))) + return objj_msgSend(aCoder, "externalObjectForProxyIdentifier:", _identifier); + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibProxyObject__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _identifier, _CPCibProxyObjectIdentifierKey); +} +},["void","CPCoder"])]); +} + +p;22;_CPCibWindowTemplate.jt;6738;@STATIC;1.0;I;21;Foundation/CPObject.jt;6693; + + +objj_executeFile("Foundation/CPObject.j", NO); + + +var _CPCibWindowTemplateMinSizeKey = "_CPCibWindowTemplateMinSizeKey", + _CPCibWindowTemplateMaxSizeKey = "_CPCibWindowTemplateMaxSizeKey", + + _CPCibWindowTemplateViewClassKey = "_CPCibWindowTemplateViewClassKey", + _CPCibWindowTemplateWindowClassKey = "_CPCibWindowTemplateWindowClassKey", + + _CPCibWindowTemplateWindowRectKey = "_CPCibWindowTemplateWindowRectKey", + _CPCibWindowTemplateWindowStyleMaskKey = "_CPCibWindowTempatStyleMaskKey", + _CPCibWindowTemplateWindowTitleKey = "_CPCibWindowTemplateWindowTitleKey", + _CPCibWindowTemplateWindowViewKey = "_CPCibWindowTemplateWindowViewKey", + + _CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop = "_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop"; + _CPCibWindowTemplateWindowIsFullPlatformWindowKey = "_CPCibWindowTemplateWindowIsFullPlatformWindowKey"; + +{var the_class = objj_allocateClassPair(CPObject, "_CPCibWindowTemplate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_minSize"), new objj_ivar("_maxSize"), new objj_ivar("_viewClass"), new objj_ivar("_windowClass"), new objj_ivar("_windowRect"), new objj_ivar("_windowStyleMask"), new objj_ivar("_windowTitle"), new objj_ivar("_windowView"), new objj_ivar("_windowAutorecalculatesKeyViewLoop"), new objj_ivar("_windowIsFullPlatformWindow")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $_CPCibWindowTemplate__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibWindowTemplate").super_class }, "init"); + + if (self) + { + _windowClass = "CPWindow"; + _windowRect = CGRectMake(0.0, 0.0, 400.0, 200.0); + _windowStyleMask = CPTitledWindowMask | CPClosableWindowMask | CPMiniaturizableWindowMask | CPResizableWindowMask; + + _windowTitle = "Window"; + _windowView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 400.0, 200.0)); + + _windowIsFullPlatformWindow = NO; + } + + return self; +} +},["id"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPCibWindowTemplate__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibWindowTemplate").super_class }, "init"); + + if (self) + { + if (objj_msgSend(aCoder, "containsValueForKey:", _CPCibWindowTemplateMinSizeKey)) + _minSize = objj_msgSend(aCoder, "decodeSizeForKey:", _CPCibWindowTemplateMinSizeKey); + if (objj_msgSend(aCoder, "containsValueForKey:", _CPCibWindowTemplateMaxSizeKey)) + _maxSize = objj_msgSend(aCoder, "decodeSizeForKey:", _CPCibWindowTemplateMaxSizeKey); + + _viewClass = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateViewClassKey); + + _windowClass = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowClassKey); + _windowRect = objj_msgSend(aCoder, "decodeRectForKey:", _CPCibWindowTemplateWindowRectKey); + _windowStyleMask = objj_msgSend(aCoder, "decodeIntForKey:", _CPCibWindowTemplateWindowStyleMaskKey); + + _windowTitle = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowTitleKey); + _windowView = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowViewKey); + + _windowAutorecalculatesKeyViewLoop = !!objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop); + _windowIsFullPlatformWindow = !!objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowIsFullPlatformWindowKey); + } + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibWindowTemplate__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_minSize) + objj_msgSend(aCoder, "encodeSize:forKey:", _minSize, _CPCibWindowTemplateMinSizeKey); + if (_maxSize) + objj_msgSend(aCoder, "encodeSize:forKey:", _maxSize, _CPCibWindowTemplateMaxSizeKey); + + objj_msgSend(aCoder, "encodeObject:forKey:", _viewClass, _CPCibWindowTemplateViewClassKey); + + objj_msgSend(aCoder, "encodeObject:forKey:", _windowClass, _CPCibWindowTemplateWindowClassKey); + objj_msgSend(aCoder, "encodeRect:forKey:", _windowRect, _CPCibWindowTemplateWindowRectKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _windowStyleMask, _CPCibWindowTemplateWindowStyleMaskKey); + + objj_msgSend(aCoder, "encodeObject:forKey:", _windowTitle, _CPCibWindowTemplateWindowTitleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _windowView, _CPCibWindowTemplateWindowViewKey); + + if (_windowAutorecalculatesKeyViewLoop) + objj_msgSend(aCoder, "encodeObject:forKey:", _windowAutorecalculatesKeyViewLoop, _CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop); + + if (_windowIsFullPlatformWindow) + objj_msgSend(aCoder, "encodeObject:forKey:", _windowIsFullPlatformWindow, _CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("customClassName"), function $_CPCibWindowTemplate__customClassName(self, _cmd) +{ with(self) +{ + return _windowClass; +} +},["CPString"]), new objj_method(sel_getUid("setCustomClassName:"), function $_CPCibWindowTemplate__setCustomClassName_(self, _cmd, aClassName) +{ with(self) +{ + _windowClass = aClassName; +} +},["void","CPString"]), new objj_method(sel_getUid("windowClass"), function $_CPCibWindowTemplate__windowClass(self, _cmd) +{ with(self) +{ + return _windowClass; +} +},["CPString"]), new objj_method(sel_getUid("_cibInstantiate"), function $_CPCibWindowTemplate___cibInstantiate(self, _cmd) +{ with(self) +{ + var windowClass = CPClassFromString(objj_msgSend(self, "windowClass")); + + + + + + var theWindow = objj_msgSend(objj_msgSend(windowClass, "alloc"), "initWithContentRect:styleMask:", _windowRect, _windowStyleMask); + + if (_minSize) + objj_msgSend(theWindow, "setMinSize:", _minSize); + if (_maxSize) + objj_msgSend(theWindow, "setMaxSize:", _maxSize); + + + objj_msgSend(theWindow, "setTitle:", _windowTitle); + + + objj_msgSend(_windowView, "setAutoresizesSubviews:", NO); + + objj_msgSend(theWindow, "setContentView:", _windowView); + + objj_msgSend(_windowView, "setAutoresizesSubviews:", YES); + + if (objj_msgSend(_viewClass, "isKindOfClass:", objj_msgSend(CPToolbar, "class"))) + { + objj_msgSend(theWindow, "setToolbar:", _viewClass); + } + + objj_msgSend(theWindow, "setAutorecalculatesKeyViewLoop:", _windowAutorecalculatesKeyViewLoop); + objj_msgSend(theWindow, "setFullBridge:", _windowIsFullPlatformWindow); + + return theWindow; +} +},["id"])]); +} + +p;7;CPCib.jt;7458;@STATIC;1.0;I;21;Foundation/CPObject.jI;28;Foundation/CPURLConnection.jI;25;Foundation/CPURLRequest.ji;20;_CPCibClassSwapper.ji;20;_CPCibCustomObject.ji;22;_CPCibCustomResource.ji;18;_CPCibCustomView.ji;23;_CPCibKeyedUnarchiver.ji;18;_CPCibObjectData.ji;19;_CPCibProxyObject.ji;22;_CPCibWindowTemplate.jt;7148;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPURLConnection.j", NO); +objj_executeFile("Foundation/CPURLRequest.j", NO); +objj_executeFile("_CPCibClassSwapper.j", YES); +objj_executeFile("_CPCibCustomObject.j", YES); +objj_executeFile("_CPCibCustomResource.j", YES); +objj_executeFile("_CPCibCustomView.j", YES); +objj_executeFile("_CPCibKeyedUnarchiver.j", YES); +objj_executeFile("_CPCibObjectData.j", YES); +objj_executeFile("_CPCibProxyObject.j", YES); +objj_executeFile("_CPCibWindowTemplate.j", YES); +CPCibOwner = "CPCibOwner", +CPCibTopLevelObjects = "CPCibTopLevelObjects", +CPCibReplacementClasses = "CPCibReplacementClasses", +CPCibExternalObjects = "CPCibExternalObjects"; +var CPCibObjectDataKey = "CPCibObjectDataKey"; +{var the_class = objj_allocateClassPair(CPObject, "CPCib"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_data"), new objj_ivar("_bundle"), new objj_ivar("_awakenCustomResources"), new objj_ivar("_loadDelegate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithContentsOfURL:"), function $CPCib__initWithContentsOfURL_(self, _cmd, aURL) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCib").super_class }, "init"); + if (self) + { + _data = objj_msgSend(CPURLConnection, "sendSynchronousRequest:returningResponse:", objj_msgSend(CPURLRequest, "requestWithURL:", aURL), nil); + _awakenCustomResources = YES; + } + return self; +} +},["id","CPURL"]), new objj_method(sel_getUid("initWithContentsOfURL:loadDelegate:"), function $CPCib__initWithContentsOfURL_loadDelegate_(self, _cmd, aURL, aLoadDelegate) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCib").super_class }, "init"); + if (self) + { + objj_msgSend(CPURLConnection, "connectionWithRequest:delegate:", objj_msgSend(CPURLRequest, "requestWithURL:", aURL), self); + _awakenCustomResources = YES; + _loadDelegate = aLoadDelegate; + } + return self; +} +},["id","CPURL","id"]), new objj_method(sel_getUid("initWithCibNamed:bundle:"), function $CPCib__initWithCibNamed_bundle_(self, _cmd, aName, aBundle) +{ with(self) +{ + if (!objj_msgSend(aName, "hasSuffix:", ".cib")) + aName = objj_msgSend(aName, "stringByAppendingString:", ".cib"); + self = objj_msgSend(self, "initWithContentsOfURL:", objj_msgSend(aBundle || objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", aName)); + if (self) + _bundle = aBundle; + return self; +} +},["id","CPString","CPBundle"]), new objj_method(sel_getUid("initWithCibNamed:bundle:loadDelegate:"), function $CPCib__initWithCibNamed_bundle_loadDelegate_(self, _cmd, aName, aBundle, aLoadDelegate) +{ with(self) +{ + if (!objj_msgSend(aName, "hasSuffix:", ".cib")) + aName = objj_msgSend(aName, "stringByAppendingString:", ".cib"); + self = objj_msgSend(self, "initWithContentsOfURL:loadDelegate:", objj_msgSend(aBundle || objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", aName), aLoadDelegate); + if (self) + _bundle = aBundle; + return self; +} +},["id","CPString","CPBundle","id"]), new objj_method(sel_getUid("_setAwakenCustomResources:"), function $CPCib___setAwakenCustomResources_(self, _cmd, shouldAwakenCustomResources) +{ with(self) +{ + _awakenCustomResources = shouldAwakenCustomResources; +} +},["void","BOOL"]), new objj_method(sel_getUid("_awakenCustomResources"), function $CPCib___awakenCustomResources(self, _cmd) +{ with(self) +{ + return _awakenCustomResources; +} +},["BOOL"]), new objj_method(sel_getUid("instantiateCibWithExternalNameTable:"), function $CPCib__instantiateCibWithExternalNameTable_(self, _cmd, anExternalNameTable) +{ with(self) +{ + var bundle = _bundle, + owner = objj_msgSend(anExternalNameTable, "objectForKey:", CPCibOwner); + if (!bundle && owner) + bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(owner, "class")); + var unarchiver = objj_msgSend(objj_msgSend(_CPCibKeyedUnarchiver, "alloc"), "initForReadingWithData:bundle:awakenCustomResources:", _data, bundle, _awakenCustomResources), + replacementClasses = objj_msgSend(anExternalNameTable, "objectForKey:", CPCibReplacementClasses); + if (replacementClasses) + { + var key = nil, + keyEnumerator = objj_msgSend(replacementClasses, "keyEnumerator"); + while (key = objj_msgSend(keyEnumerator, "nextObject")) + objj_msgSend(unarchiver, "setClass:forClassName:", objj_msgSend(replacementClasses, "objectForKey:", key), key); + } + objj_msgSend(unarchiver, "setExternalObjectsForProxyIdentifiers:", objj_msgSend(anExternalNameTable, "objectForKey:", CPCibExternalObjects)); + var objectData = objj_msgSend(unarchiver, "decodeObjectForKey:", CPCibObjectDataKey); + if (!objectData || !objj_msgSend(objectData, "isKindOfClass:", objj_msgSend(_CPCibObjectData, "class"))) + return NO; + var topLevelObjects = objj_msgSend(anExternalNameTable, "objectForKey:", CPCibTopLevelObjects); + objj_msgSend(objectData, "instantiateWithOwner:topLevelObjects:", owner, topLevelObjects); + objj_msgSend(objectData, "establishConnectionsWithOwner:topLevelObjects:", owner, topLevelObjects); + objj_msgSend(objectData, "awakeWithOwner:topLevelObjects:", owner, topLevelObjects); + objj_msgSend(objectData, "displayVisibleWindows"); + return YES; +} +},["BOOL","CPDictionary"]), new objj_method(sel_getUid("instantiateCibWithOwner:topLevelObjects:"), function $CPCib__instantiateCibWithOwner_topLevelObjects_(self, _cmd, anOwner, topLevelObjects) +{ with(self) +{ + return objj_msgSend(self, "instantiateCibWithExternalNameTable:", objj_msgSend(CPDictionary, "dictionaryWithObjectsAndKeys:", anOwner, CPCibOwner, topLevelObjects, CPCibTopLevelObjects)); +} +},["BOOL","id","CPArray"])]); +} +{ +var the_class = objj_getClass("CPCib") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCib\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("connection:didReceiveData:"), function $CPCib__connection_didReceiveData_(self, _cmd, aConnection, data) +{ with(self) +{ + if (!data) + return objj_msgSend(self, "connection:didFailWithError:", aConnection, nil); + _data = objj_msgSend(CPData, "dataWithRawString:", data); +} +},["void","CPURLConnection","CPString"]), new objj_method(sel_getUid("connection:didFailWithError:"), function $CPCib__connection_didFailWithError_(self, _cmd, aConnection, anError) +{ with(self) +{ + if (objj_msgSend(_loadDelegate, "respondsToSelector:", sel_getUid("cibDidFailToLoad:"))) + objj_msgSend(_loadDelegate, "cibDidFailToLoad:", self); + _loadDelegate = nil; +} +},["void","CPURLConnection","CPError"]), new objj_method(sel_getUid("connectionDidFinishLoading:"), function $CPCib__connectionDidFinishLoading_(self, _cmd, aConnection) +{ with(self) +{ + if (objj_msgSend(_loadDelegate, "respondsToSelector:", sel_getUid("cibDidFinishLoading:"))) + objj_msgSend(_loadDelegate, "cibDidFinishLoading:", self); + _loadDelegate = nil; +} +},["void","CPURLConnection"])]); +} + +p;16;CPCibConnector.jt;3624;@STATIC;1.0;I;21;Foundation/CPObject.jI;29;Foundation/CPKeyValueCoding.jt;3545;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPKeyValueCoding.j", NO); +var _CPCibConnectorSourceKey = "_CPCibConnectorSourceKey", + _CPCibConnectorDestinationKey = "_CPCibConnectorDestinationKey", + _CPCibConnectorLabelKey = "_CPCibConnectorLabelKey"; +{var the_class = objj_allocateClassPair(CPObject, "CPCibConnector"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_source"), new objj_ivar("_destination"), new objj_ivar("_label")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("source"), function $CPCibConnector__source(self, _cmd) +{ with(self) +{ +return _source; +} +},["id"]), +new objj_method(sel_getUid("setSource:"), function $CPCibConnector__setSource_(self, _cmd, newValue) +{ with(self) +{ +_source = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("destination"), function $CPCibConnector__destination(self, _cmd) +{ with(self) +{ +return _destination; +} +},["id"]), +new objj_method(sel_getUid("setDestination:"), function $CPCibConnector__setDestination_(self, _cmd, newValue) +{ with(self) +{ +_destination = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("label"), function $CPCibConnector__label(self, _cmd) +{ with(self) +{ +return _label; +} +},["id"]), +new objj_method(sel_getUid("setLabel:"), function $CPCibConnector__setLabel_(self, _cmd, newValue) +{ with(self) +{ +_label = newValue; +} +},["void","id"]), new objj_method(sel_getUid("replaceObject:withObject:"), function $CPCibConnector__replaceObject_withObject_(self, _cmd, anObject, anotherObject) +{ with(self) +{ + if (_source === anObject) + _source = anotherObject; + if (_destination === anObject) + _destination = anotherObject; +} +},["void","id","id"]), new objj_method(sel_getUid("replaceObjects:"), function $CPCibConnector__replaceObjects_(self, _cmd, replacementObjects) +{ with(self) +{ + var replacement = replacementObjects[objj_msgSend(_source, "UID")]; + if (replacement !== undefined) + _source = replacement; + replacement = replacementObjects[objj_msgSend(_destination, "UID")]; + if (replacement !== undefined) + _destination = replacement; +} +},["void","Object"])]); +} +{ +var the_class = objj_getClass("CPCibConnector") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCibConnector\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPCibConnector__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCibConnector").super_class }, "init"); + if (self) + { + _source = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibConnectorSourceKey); + _destination = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibConnectorDestinationKey); + _label = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibConnectorLabelKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPCibConnector__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _source, _CPCibConnectorSourceKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _destination, _CPCibConnectorDestinationKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _label, _CPCibConnectorLabelKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPCibConnector, "_CPCibConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;23;CPCibControlConnector.jt;2033;@STATIC;1.0;i;16;CPCibConnector.jt;1993;objj_executeFile("CPCibConnector.j", YES); +{var the_class = objj_allocateClassPair(CPCibConnector, "CPCibControlConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("establishConnection"), function $CPCibControlConnector__establishConnection(self, _cmd) +{ with(self) +{ + var selectorName = _label, + selectorNameLength = objj_msgSend(selectorName, "length"); + if (selectorNameLength && selectorName.charAt(selectorNameLength - 1) !== ':') + selectorName += ':'; + var selector = CPSelectorFromString(selectorName); + if (!selector) + { + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "-[" + objj_msgSend(self, "className") + ' ' + _cmd + "] selector " + selectorName + " does not exist."); + } + if (_destination && !objj_msgSend(_destination, "respondsToSelector:", selector)) + { + CPLog.warn("Could not connect the action " + selector + " to target of class " + objj_msgSend(_destination, "className")); + return; + } + if (objj_msgSend(_source, "respondsToSelector:", sel_getUid("setAction:"))) + objj_msgSend(_source, sel_getUid("setAction:"), selector); + else + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "-[" + objj_msgSend(self, "className") + ' ' + _cmd + "] " + objj_msgSend(_source, "description") + " does not respond to setAction:"); + if (objj_msgSend(_source, "respondsToSelector:", sel_getUid("setTarget:"))) + objj_msgSend(_source, sel_getUid("setTarget:"), _destination); + else + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "-[" + objj_msgSend(self, "className") + ' ' + _cmd + "] " + objj_msgSend(_source, "description") + " does not respond to setTarget:"); +} +},["void"])]); +} +{var the_class = objj_allocateClassPair(CPCibControlConnector, "_CPCibControlConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;14;CPCibLoading.jt;5086;@STATIC;1.0;I;21;Foundation/CPBundle.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;4985;objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +var CPCibOwner = "CPCibOwner"; +{ +var the_class = objj_getClass("CPObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("awakeFromCib"), function $CPObject__awakeFromCib(self, _cmd) +{ with(self) +{ +} +},["void"])]); +} +{ +var the_class = objj_getClass("CPBundle") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPBundle\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("loadCibFile:externalNameTable:"), function $CPBundle__loadCibFile_externalNameTable_(self, _cmd, aFileName, aNameTable) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithContentsOfURL:", aFileName), "instantiateCibWithExternalNameTable:", aNameTable); +} +},["CPCib","CPString","CPDictionary"]), new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"), function $CPBundle__loadCibFile_externalNameTable_loadDelegate_(self, _cmd, aFileName, aNameTable, aDelegate) +{ with(self) +{ + return (objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithCibNamed:bundle:loadDelegate:", aFileName, self, objj_msgSend(objj_msgSend(_CPCibLoadDelegate, "alloc"), "initWithLoadDelegate:externalNameTable:", aDelegate, aNameTable))); +} +},["CPCib","CPString","CPDictionary","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("loadCibFile:externalNameTable:"), function $CPBundle__loadCibFile_externalNameTable_(self, _cmd, anAbsolutePath, aNameTable) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithContentsOfURL:", anAbsolutePath), "instantiateCibWithExternalNameTable:", aNameTable); +} +},["CPCib","CPString","CPDictionary"]), new objj_method(sel_getUid("loadCibNamed:owner:"), function $CPBundle__loadCibNamed_owner_(self, _cmd, aName, anOwner) +{ with(self) +{ + if (!objj_msgSend(aName, "hasSuffix:", ".cib")) + aName = objj_msgSend(aName, "stringByAppendingString:", ".cib"); + var bundle = anOwner ? objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(anOwner, "class")) : objj_msgSend(CPBundle, "mainBundle"), + path = objj_msgSend(bundle, "pathForResource:", aName); + return objj_msgSend(self, "loadCibFile:externalNameTable:", path, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anOwner, CPCibOwner)); +} +},["CPCib","CPString","id"]), new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"), function $CPBundle__loadCibFile_externalNameTable_loadDelegate_(self, _cmd, anAbsolutePath, aNameTable, aDelegate) +{ with(self) +{ + return (objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithContentsOfURL:loadDelegate:", anAbsolutePath, objj_msgSend(objj_msgSend(_CPCibLoadDelegate, "alloc"), "initWithLoadDelegate:externalNameTable:", aDelegate, aNameTable))); +} +},["CPCib","CPString","CPDictionary",null]), new objj_method(sel_getUid("loadCibNamed:owner:loadDelegate:"), function $CPBundle__loadCibNamed_owner_loadDelegate_(self, _cmd, aName, anOwner, aDelegate) +{ with(self) +{ + if (!objj_msgSend(aName, "hasSuffix:", ".cib")) + aName = objj_msgSend(aName, "stringByAppendingString:", ".cib"); + var bundle = anOwner ? objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(anOwner, "class")) : objj_msgSend(CPBundle, "mainBundle"), + path = objj_msgSend(bundle, "pathForResource:", aName); + return objj_msgSend(self, "loadCibFile:externalNameTable:loadDelegate:", path, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anOwner, CPCibOwner), aDelegate); +} +},["CPCib","CPString","id","id"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPCibLoadDelegate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_loadDelegate"), new objj_ivar("_externalNameTable")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLoadDelegate:externalNameTable:"), function $_CPCibLoadDelegate__initWithLoadDelegate_externalNameTable_(self, _cmd, aLoadDelegate, anExternalNameTable) +{ with(self) +{ + self = objj_msgSend(self, "init"); + if (self) + { + _loadDelegate = aLoadDelegate; + _externalNameTable = anExternalNameTable; + } + return self; +} +},["id","id","id"]), new objj_method(sel_getUid("cibDidFinishLoading:"), function $_CPCibLoadDelegate__cibDidFinishLoading_(self, _cmd, aCib) +{ with(self) +{ + objj_msgSend(aCib, "instantiateCibWithExternalNameTable:", _externalNameTable); + objj_msgSend(_loadDelegate, "cibDidFinishLoading:", aCib); +} +},["void","CPCib"]), new objj_method(sel_getUid("cibDidFailToLoad:"), function $_CPCibLoadDelegate__cibDidFailToLoad_(self, _cmd, aCib) +{ with(self) +{ + objj_msgSend(_loadDelegate, "cibDidFailToLoad:", aCib); +} +},["void","CPCib"])]); +} + +p;22;CPCibOutletConnector.jt;932;@STATIC;1.0;i;16;CPCibConnector.jt;893;objj_executeFile("CPCibConnector.j", YES); +{var the_class = objj_allocateClassPair(CPCibConnector, "CPCibOutletConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("establishConnection"), function $CPCibOutletConnector__establishConnection(self, _cmd) +{ with(self) +{ + try + { + objj_msgSend(_source, "setValue:forKey:", _destination, _label); + } + catch (anException) + { + if (objj_msgSend(anException, "name") === CPUndefinedKeyException) + CPLog.warn("Could not connect the outlet " + _label + " of target of class " + objj_msgSend(_source, "className")); + else + throw anException; + } +} +},["void"])]); +} +{var the_class = objj_allocateClassPair(CPCibOutletConnector, "_CPCibOutletConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;13;CAAnimation.jt;5760;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;23;CAMediaTimingFunction.jt;5661;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CAMediaTimingFunction.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CAAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isRemovedOnCompletion"), new objj_ivar("_delegate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CAAnimation__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CAAnimation").super_class }, "init"); + if (self) + _isRemovedOnCompletion = YES; + return self; +} +},["id"]), new objj_method(sel_getUid("shouldArchiveValueForKey:"), function $CAAnimation__shouldArchiveValueForKey_(self, _cmd, aKey) +{ with(self) +{ + return YES; +} +},["void","CPString"]), new objj_method(sel_getUid("setRemovedOnCompletion:"), function $CAAnimation__setRemovedOnCompletion_(self, _cmd, isRemovedOnCompletion) +{ with(self) +{ + _isRemovedOnCompletion = isRemovedOnCompletion; +} +},["void","BOOL"]), new objj_method(sel_getUid("removedOnCompletion"), function $CAAnimation__removedOnCompletion(self, _cmd) +{ with(self) +{ + return _isRemovedOnCompletion; +} +},["BOOL"]), new objj_method(sel_getUid("isRemovedOnCompletion"), function $CAAnimation__isRemovedOnCompletion(self, _cmd) +{ with(self) +{ + return _isRemovedOnCompletion; +} +},["BOOL"]), new objj_method(sel_getUid("timingFunction"), function $CAAnimation__timingFunction(self, _cmd) +{ with(self) +{ + return nil; +} +},["CAMediaTimingFunction"]), new objj_method(sel_getUid("setDelegate:"), function $CAAnimation__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CAAnimation__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("runActionForKey:object:arguments:"), function $CAAnimation__runActionForKey_object_arguments_(self, _cmd, aKey, anObject, arguments) +{ with(self) +{ + objj_msgSend(anObject, "addAnimation:forKey:", self, aKey); +} +},["void","CPString","id","CPDictionary"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("animation"), function $CAAnimation__animation(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("defaultValueForKey:"), function $CAAnimation__defaultValueForKey_(self, _cmd, aKey) +{ with(self) +{ + return nil; +} +},["id","CPString"])]); +} +{var the_class = objj_allocateClassPair(CAAnimation, "CAPropertyAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_keyPath"), new objj_ivar("_isCumulative"), new objj_ivar("_isAdditive")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setKeyPath:"), function $CAPropertyAnimation__setKeyPath_(self, _cmd, aKeyPath) +{ with(self) +{ + _keyPath = aKeyPath; +} +},["void","CPString"]), new objj_method(sel_getUid("keyPath"), function $CAPropertyAnimation__keyPath(self, _cmd) +{ with(self) +{ + return _keyPath; +} +},["CPString"]), new objj_method(sel_getUid("setCumulative:"), function $CAPropertyAnimation__setCumulative_(self, _cmd, isCumulative) +{ with(self) +{ + _isCumulative = isCumulative; +} +},["void","BOOL"]), new objj_method(sel_getUid("cumulative"), function $CAPropertyAnimation__cumulative(self, _cmd) +{ with(self) +{ + return _isCumulative; +} +},["BOOL"]), new objj_method(sel_getUid("isCumulative"), function $CAPropertyAnimation__isCumulative(self, _cmd) +{ with(self) +{ + return _isCumulative; +} +},["BOOL"]), new objj_method(sel_getUid("setAdditive:"), function $CAPropertyAnimation__setAdditive_(self, _cmd, isAdditive) +{ with(self) +{ + _isAdditive = isAdditive; +} +},["void","BOOL"]), new objj_method(sel_getUid("additive"), function $CAPropertyAnimation__additive(self, _cmd) +{ with(self) +{ + return _isAdditive; +} +},["BOOL"]), new objj_method(sel_getUid("isAdditive"), function $CAPropertyAnimation__isAdditive(self, _cmd) +{ with(self) +{ + return _isAdditive; +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("animationWithKeyPath:"), function $CAPropertyAnimation__animationWithKeyPath_(self, _cmd, aKeyPath) +{ with(self) +{ + var animation = objj_msgSend(self, "animation"); + objj_msgSend(animation, "setKeyPath:", aKeyPath); + return animation; +} +},["id","CPString"])]); +} +{var the_class = objj_allocateClassPair(CAPropertyAnimation, "CABasicAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_fromValue"), new objj_ivar("_toValue"), new objj_ivar("_byValue")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setFromValue:"), function $CABasicAnimation__setFromValue_(self, _cmd, aValue) +{ with(self) +{ + _fromValue = aValue; +} +},["void","id"]), new objj_method(sel_getUid("fromValue"), function $CABasicAnimation__fromValue(self, _cmd) +{ with(self) +{ + return _fromValue; +} +},["id"]), new objj_method(sel_getUid("setToValue:"), function $CABasicAnimation__setToValue_(self, _cmd, aValue) +{ with(self) +{ + _toValue = aValue; +} +},["void","id"]), new objj_method(sel_getUid("toValue"), function $CABasicAnimation__toValue(self, _cmd) +{ with(self) +{ + return _toValue; +} +},["id"]), new objj_method(sel_getUid("setByValue:"), function $CABasicAnimation__setByValue_(self, _cmd, aValue) +{ with(self) +{ + _byValue = aValue; +} +},["void","id"]), new objj_method(sel_getUid("byValue"), function $CABasicAnimation__byValue(self, _cmd) +{ with(self) +{ + return _byValue; +} +},["id"])]); +} + +p;16;CABackingStore.jt;980;@STATIC;1.0;i;12;CGGeometry.ji;17;CPCompatibility.jt;923;objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPCompatibility.j", YES); +CABackingStoreGetContext= function(aBackingStore) +{ + return aBackingStore.context; +} +if (CPFeatureIsCompatible(CPHTMLCanvasFeature)) +{ +CABackingStoreCreate = function() +{ + var DOMElement = document.createElement("canvas"); + DOMElement.style.position = "absolute"; + return { context:DOMElement.getContext("2d"), buffer:DOMElement, _image:DOMElement }; +} +CABackingStoreSetSize = function(aBackingStore, aSize) +{ + var buffer = aBackingStore.buffer; + buffer.width = aSize.width; + buffer.height = aSize.height; + buffer.style.width = aSize.width + "px";; + buffer.style.height = aSize.height + "px";; +} +} +else +{ +CABackingStoreCreate = function() +{ + var context = CGBitmapGraphicsContextCreate(); + context.buffer = ""; + return { context:context }; +} +CABackingStoreSetSize = function(aBackingStore, aSize) +{ +} +} + +p;14;CAFlashLayer.jt;1191;@STATIC;1.0;i;9;CALayer.ji;14;CPFlashMovie.jt;1140;objj_executeFile("CALayer.j", YES); +objj_executeFile("CPFlashMovie.j", YES); +{var the_class = objj_allocateClassPair(CALayer, "CAFlashLayer"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_flashMovie")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setFlashMovie:"), function $CAFlashLayer__setFlashMovie_(self, _cmd, aFlashMovie) +{ with(self) +{ + if (_flashMovie == aFlashMovie) + return; + _flashMovie = aFlashMovie; + _DOMElement.innerHTML = "<object width = \"100%\" height = \"100%\"><param name = \"movie\" value = \"" + + aFlashMovie._fileName + + "\"></param><param name = \"wmode\" value = \"transparent\"></param><embed src = \"" + + aFlashMovie._fileName + "\" type = \"application/x-shockwave-flash\" wmode = \"transparent\" width = \"100%\" height = \"100%\"></embed></object>"; +} +},["void","CPFlashMovie"]), new objj_method(sel_getUid("flashMovie"), function $CAFlashLayer__flashMovie(self, _cmd) +{ with(self) +{ + return _flashMovie; +} +},["CPFlashMovie"])]); +} + +p;9;CALayer.jt;37568;@STATIC;1.0;I;21;Foundation/CPObject.jI;23;AppKit/CABackingStore.jI;18;AppKit/CGContext.jI;19;AppKit/CGGeometry.ji;12;CGGeometry.jt;37430;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("AppKit/CABackingStore.j", NO); +objj_executeFile("AppKit/CGContext.j", NO); +objj_executeFile("AppKit/CGGeometry.j", NO); +objj_executeFile("CGGeometry.j", YES); +CGAffineTransformMake= function(a, b, c, d, tx, ty) { return { a:a, b:b, c:c, d:d, tx:tx, ty:ty }; } +CGAffineTransformMakeIdentity= function() { return { a:1.0, b:0.0, c:0.0, d:1.0, tx:0.0, ty:0.0 }; } +CGAffineTransformMakeCopy= function(anAffineTransform) { return { a:anAffineTransform.a, b:anAffineTransform.b, c:anAffineTransform.c, d:anAffineTransform.d, tx:anAffineTransform.tx, ty:anAffineTransform.ty }; } +CGAffineTransformMakeScale= function(sx, sy) { return { a:sx, b:0.0, c:0.0, d:sy, tx:0.0, ty:0.0 }; } +CGAffineTransformMakeTranslation= function(tx, ty) { return { a:1.0, b:0.0, c:0.0, d:1.0, tx:tx, ty:ty }; } +CGAffineTransformTranslate= function(aTransform, tx, ty) { return { a:aTransform.a, b:aTransform.b, c:aTransform.c, d:aTransform.d, tx:aTransform.tx + aTransform.a * tx + aTransform.c * ty, ty:aTransform.ty + aTransform.b * tx + aTransform.d * ty }; } +CGAffineTransformScale= function(aTransform, sx, sy) { return { a:aTransform.a * sx, b:aTransform.b * sx, c:aTransform.c * sy, d:aTransform.d * sy, tx:aTransform.tx, ty:aTransform.ty }; } +CGAffineTransformConcat= function(lhs, rhs) { return { a:lhs.a * rhs.a + lhs.b * rhs.c, b:lhs.a * rhs.b + lhs.b * rhs.d, c:lhs.c * rhs.a + lhs.d * rhs.c, d:lhs.c * rhs.b + lhs.d * rhs.d, tx:lhs.tx * rhs.a + lhs.ty * rhs.c + rhs.tx, ty:lhs.tx * rhs.b + lhs.ty * rhs.d + rhs.ty }; } +CGPointApplyAffineTransform= function(aPoint, aTransform) { return { x:aPoint.x * aTransform.a + aPoint.y * aTransform.c + aTransform.tx, y:aPoint.x * aTransform.b + aPoint.y * aTransform.d + aTransform.ty }; } +CGSizeApplyAffineTransform= function(aSize, aTransform) { return { width:aSize.width * aTransform.a + aSize.height * aTransform.c, height:aSize.width * aTransform.b + aSize.height * aTransform.d }; } +CGAffineTransformIsIdentity= function(aTransform) { return (aTransform.a == 1 && aTransform.b == 0 && aTransform.c == 0 && aTransform.d == 1 && aTransform.tx == 0 && aTransform.ty == 0); } +CGAffineTransformEqualToTransform= function(lhs, rhs) { return (lhs.a == rhs.a && lhs.b == rhs.b && lhs.c == rhs.c && lhs.d == rhs.d && lhs.tx == rhs.tx && lhs.ty == rhs.ty); } +CGStringCreateWithCGAffineTransform= function(aTransform) { return (" [[ " + aTransform.a + ", " + aTransform.b + ", 0 ], [ " + aTransform.c + ", " + aTransform.d + ", 0 ], [ " + aTransform.tx + ", " + aTransform.ty + ", 1]]"); } +CGAffineTransformCreateCopy= function(aTransform) +{ + return { a:aTransform.a, b:aTransform.b, c:aTransform.c, d:aTransform.d, tx:aTransform.tx, ty:aTransform.ty }; +} +CGAffineTransformMakeRotation= function(anAngle) +{ + var sin = SIN(anAngle), + cos = COS(anAngle); + return { a:cos, b:sin, c:-sin, d:cos, tx:0.0, ty:0.0 }; +} +CGAffineTransformRotate= function(aTransform, anAngle) +{ + var sin = SIN(anAngle), + cos = COS(anAngle); + return { + a:aTransform.a * cos + aTransform.c * sin, + b:aTransform.b * cos + aTransform.d * sin, + c:aTransform.c * cos - aTransform.a * sin, + d:aTransform.d * cos - aTransform.b * sin, + tx:aTransform.tx, + ty:aTransform.ty + }; +} +CGAffineTransformInvert= function(aTransform) +{ + var determinant = 1 / (aTransform.a * aTransform.d - aTransform.b * aTransform.c); + return { + a:determinant * aTransform.d, + b:-determinant * aTransform.b, + c:-determinant * aTransform.c, + d:determinant * aTransform.a, + tx:determinant * (aTransform.c * aTransform.ty - aTransform.d * aTransform.tx), + ty:determinant * (aTransform.b * aTransform.tx - aTransform.a * aTransform.ty) + }; +} +CGRectApplyAffineTransform= function(aRect, anAffineTransform) +{ + var top = (aRect.origin.y), + left = (aRect.origin.x), + right = (aRect.origin.x + aRect.size.width), + bottom = (aRect.origin.y + aRect.size.height), + topLeft = CGPointApplyAffineTransform({ x:left, y:top }, anAffineTransform), + topRight = CGPointApplyAffineTransform({ x:right, y:top }, anAffineTransform), + bottomLeft = CGPointApplyAffineTransform({ x:left, y:bottom }, anAffineTransform), + bottomRight = CGPointApplyAffineTransform({ x:right, y:bottom }, anAffineTransform), + minX = MIN(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x), + maxX = MAX(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x), + minY = MIN(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y), + maxY = MAX(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y); + return { origin: { x:minX, y:minY }, size: { width:(maxX - minX), height:(maxY - minY) } }; +} +CPStringFromCGAffineTransform= function(anAffineTransform) +{ + return '{' + anAffineTransform.a + ", " + anAffineTransform.b + ", " + anAffineTransform.c + ", " + anAffineTransform.d + ", " + anAffineTransform.tx + ", " + anAffineTransform.ty + '}'; +} +var CALayerGeometryBoundsMask = 1, + CALayerGeometryPositionMask = 2, + CALayerGeometryAnchorPointMask = 4, + CALayerGeometryAffineTransformMask = 8, + CALayerGeometryParentSublayerTransformMask = 16; +var USE_BUFFER = NO; +var CALayerFrameOriginUpdateMask = 1, + CALayerFrameSizeUpdateMask = 2, + CALayerZPositionUpdateMask = 4, + CALayerDisplayUpdateMask = 8, + CALayerCompositeUpdateMask = 16, + CALayerDOMUpdateMask = CALayerZPositionUpdateMask | CALayerFrameOriginUpdateMask | CALayerFrameSizeUpdateMask; +var CALayerRegisteredRunLoopUpdates = nil; +{var the_class = objj_allocateClassPair(CPObject, "CALayer"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_frame"), new objj_ivar("_bounds"), new objj_ivar("_position"), new objj_ivar("_zPosition"), new objj_ivar("_anchorPoint"), new objj_ivar("_affineTransform"), new objj_ivar("_sublayerTransform"), new objj_ivar("_sublayerTransformForSublayers"), new objj_ivar("_backingStoreFrame"), new objj_ivar("_standardBackingStoreFrame"), new objj_ivar("_hasSublayerTransform"), new objj_ivar("_hasCustomBackingStoreFrame"), new objj_ivar("_opacity"), new objj_ivar("_isHidden"), new objj_ivar("_backgroundColor"), new objj_ivar("_superlayer"), new objj_ivar("_sublayers"), new objj_ivar("_runLoopUpdateMask"), new objj_ivar("_needsDisplayOnBoundsChange"), new objj_ivar("_delegate"), new objj_ivar("_delegateRespondsToDisplayLayerSelector"), new objj_ivar("_delegateRespondsToDrawLayerInContextSelector"), new objj_ivar("_DOMElement"), new objj_ivar("_DOMContentsElement"), new objj_ivar("_contents"), new objj_ivar("_context"), new objj_ivar("_owningView"), new objj_ivar("_transformToLayer"), new objj_ivar("_transformFromLayer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CALayer__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CALayer").super_class }, "init"); + + if (self) + { + _frame = CGRectMakeZero(); + + _backingStoreFrame = CGRectMakeZero(); + _standardBackingStoreFrame = CGRectMakeZero(); + + _bounds = CGRectMakeZero(); + _position = CGPointMakeZero(); + _zPosition = 0.0; + _anchorPoint = CGPointMake(0.5, 0.5); + _affineTransform = CGAffineTransformMakeIdentity(); + _sublayerTransform = CGAffineTransformMakeIdentity(); + + _transformToLayer = CGAffineTransformMakeIdentity(); + _transformFromLayer = CGAffineTransformMakeIdentity(); + + _opacity = 1.0; + _isHidden = NO; + _masksToBounds = NO; + + _sublayers = []; + + _DOMElement = document.createElement("div"); + + _DOMElement.style.overflow = "visible"; + _DOMElement.style.position = "absolute"; + _DOMElement.style.visibility = "visible"; + _DOMElement.style.top = "0px"; + _DOMElement.style.left = "0px"; + _DOMElement.style.zIndex = 0; + _DOMElement.style.width = "0px"; + _DOMElement.style.height = "0px"; + } + + return self; +} +},["id"]), new objj_method(sel_getUid("setBounds:"), function $CALayer__setBounds_(self, _cmd, aBounds) +{ with(self) +{ + if (CGRectEqualToRect(_bounds, aBounds)) + return; + + var oldOrigin = _bounds.origin; + + _bounds = { origin: { x:aBounds.origin.x, y:aBounds.origin.y }, size: { width:aBounds.size.width, height:aBounds.size.height } }; + + if (_hasSublayerTransform) + _CALayerUpdateSublayerTransformForSublayers(self); + _CALayerRecalculateGeometry(self, CALayerGeometryBoundsMask); +} +},["void","CGRect"]), new objj_method(sel_getUid("bounds"), function $CALayer__bounds(self, _cmd) +{ with(self) +{ + return _bounds; +} +},["CGRect"]), new objj_method(sel_getUid("setPosition:"), function $CALayer__setPosition_(self, _cmd, aPosition) +{ with(self) +{ + if (CGPointEqualToPoint(_position, aPosition)) + return; + _position = { x:aPosition.x, y:aPosition.y }; + _CALayerRecalculateGeometry(self, CALayerGeometryPositionMask); +} +},["void","CGPoint"]), new objj_method(sel_getUid("position"), function $CALayer__position(self, _cmd) +{ with(self) +{ + return _position; +} +},["CGPoint"]), new objj_method(sel_getUid("setZPosition:"), function $CALayer__setZPosition_(self, _cmd, aZPosition) +{ with(self) +{ + if (_zPosition == aZPosition) + return; + _zPosition = aZPosition; + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerZPositionUpdateMask); +} +},["void","int"]), new objj_method(sel_getUid("setAnchorPoint:"), function $CALayer__setAnchorPoint_(self, _cmd, anAnchorPoint) +{ with(self) +{ + anAnchorPoint = { x:anAnchorPoint.x, y:anAnchorPoint.y }; + anAnchorPoint.x = MIN(1.0, MAX(0.0, anAnchorPoint.x)); + anAnchorPoint.y = MIN(1.0, MAX(0.0, anAnchorPoint.y)); + if (CGPointEqualToPoint(_anchorPoint, anAnchorPoint)) + return; + _anchorPoint = anAnchorPoint; + if (_hasSublayerTransform) + _CALayerUpdateSublayerTransformForSublayers(self); + if (_owningView) + _position = CGPointMake((_bounds.size.width) * _anchorPoint.x, (_bounds.size.height) * _anchorPoint.y); + _CALayerRecalculateGeometry(self, CALayerGeometryAnchorPointMask); +} +},["void","CGPoint"]), new objj_method(sel_getUid("anchorPoint"), function $CALayer__anchorPoint(self, _cmd) +{ with(self) +{ + return _anchorPoint; +} +},["CGPoint"]), new objj_method(sel_getUid("setAffineTransform:"), function $CALayer__setAffineTransform_(self, _cmd, anAffineTransform) +{ with(self) +{ + if (CGAffineTransformEqualToTransform(_affineTransform, anAffineTransform)) + return; + _affineTransform = { a:anAffineTransform.a, b:anAffineTransform.b, c:anAffineTransform.c, d:anAffineTransform.d, tx:anAffineTransform.tx, ty:anAffineTransform.ty }; + _CALayerRecalculateGeometry(self, CALayerGeometryAffineTransformMask); +} +},["void","CGAffineTransform"]), new objj_method(sel_getUid("affineTransform"), function $CALayer__affineTransform(self, _cmd) +{ with(self) +{ + return _affineTransform; +} +},["CGAffineTransform"]), new objj_method(sel_getUid("setSublayerTransform:"), function $CALayer__setSublayerTransform_(self, _cmd, anAffineTransform) +{ with(self) +{ + if (CGAffineTransformEqualToTransform(_sublayerTransform, anAffineTransform)) + return; + var hadSublayerTransform = _hasSublayerTransform; + _sublayerTransform = { a:anAffineTransform.a, b:anAffineTransform.b, c:anAffineTransform.c, d:anAffineTransform.d, tx:anAffineTransform.tx, ty:anAffineTransform.ty }; + _hasSublayerTransform = !(_sublayerTransform.a == 1 && _sublayerTransform.b == 0 && _sublayerTransform.c == 0 && _sublayerTransform.d == 1 && _sublayerTransform.tx == 0 && _sublayerTransform.ty == 0); + if (_hasSublayerTransform) + { + _CALayerUpdateSublayerTransformForSublayers(self); + var index = _sublayers.length; + while (index--) + _CALayerRecalculateGeometry(_sublayers[index], CALayerGeometryParentSublayerTransformMask); + } +} +},["void","CGAffineTransform"]), new objj_method(sel_getUid("sublayerTransform"), function $CALayer__sublayerTransform(self, _cmd) +{ with(self) +{ + return _sublayerTransform; +} +},["CGAffineTransform"]), new objj_method(sel_getUid("transformToLayer"), function $CALayer__transformToLayer(self, _cmd) +{ with(self) +{ + return _transformToLayer; +} +},["CGAffineTransform"]), new objj_method(sel_getUid("setFrame:"), function $CALayer__setFrame_(self, _cmd, aFrame) +{ with(self) +{ + alert("FIXME IMPLEMENT"); +} +},["void","CGRect"]), new objj_method(sel_getUid("frame"), function $CALayer__frame(self, _cmd) +{ with(self) +{ + if (!_frame) + _frame = objj_msgSend(self, "convertRect:toLayer:", _bounds, _superlayer); + return _frame; +} +},["CGRect"]), new objj_method(sel_getUid("backingStoreFrame"), function $CALayer__backingStoreFrame(self, _cmd) +{ with(self) +{ + return _backingStoreFrame; +} +},["CGRect"]), new objj_method(sel_getUid("setBackingStoreFrame:"), function $CALayer__setBackingStoreFrame_(self, _cmd, aFrame) +{ with(self) +{ + _hasCustomBackingStoreFrame = (aFrame != nil); + if (aFrame == nil) + aFrame = CGRectMakeCopy(_standardBackingStoreFrame); + else + { + if (_superlayer) + { + aFrame = objj_msgSend(_superlayer, "convertRect:toLayer:", aFrame, nil); + var bounds = objj_msgSend(_superlayer, "bounds"), + frame = objj_msgSend(_superlayer, "convertRect:toLayer:", bounds, nil); + aFrame.origin.x -= (frame.origin.x); + aFrame.origin.y -= (frame.origin.y); + } + else + aFrame = CGRectMakeCopy(aFrame); + } + if (!CGPointEqualToPoint(_backingStoreFrame.origin, aFrame.origin)) + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerFrameOriginUpdateMask); + if (!CGSizeEqualToSize(_backingStoreFrame.size, aFrame.size)) + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerFrameSizeUpdateMask); + _backingStoreFrame = aFrame; +} +},["void","CGRect"]), new objj_method(sel_getUid("contents"), function $CALayer__contents(self, _cmd) +{ with(self) +{ + return _contents; +} +},["CGImage"]), new objj_method(sel_getUid("setContents:"), function $CALayer__setContents_(self, _cmd, contents) +{ with(self) +{ + if (_contents == contents) + return; + _contents = contents; + objj_msgSend(self, "composite"); +} +},["void","CGImage"]), new objj_method(sel_getUid("composite"), function $CALayer__composite(self, _cmd) +{ with(self) +{ + if (USE_BUFFER && !_contents || !_context) + return; + CGContextClearRect(_context, { origin: { x:0.0, y:0.0 }, size: { width:(_backingStoreFrame.size.width), height:(_backingStoreFrame.size.height) } }); + var transform = _transformFromLayer; + if (_superlayer) + { + var superlayerTransform = _CALayerGetTransform(_superlayer, nil), + superlayerOrigin = CGPointApplyAffineTransform(_superlayer._bounds.origin, superlayerTransform); + transform = CGAffineTransformConcat(transform, superlayerTransform); + transform.tx -= superlayerOrigin.x; + transform.ty -= superlayerOrigin.y; + } + transform.tx -= (_backingStoreFrame.origin.x); + transform.ty -= (_backingStoreFrame.origin.y); + CGContextSaveGState(_context); + CGContextConcatCTM(_context, transform); + if (USE_BUFFER) + { + _context.drawImage(_contents.buffer, (_bounds.origin.x), (_bounds.origin.y)); + } + else + objj_msgSend(self, "drawInContext:", _context); + CGContextRestoreGState(_context); +} +},["void"]), new objj_method(sel_getUid("display"), function $CALayer__display(self, _cmd) +{ with(self) +{ + if (!_context) + { + _context = CGBitmapGraphicsContextCreate(); + _DOMContentsElement = _context.DOMElement; + _DOMContentsElement.style.zIndex = -100; + _DOMContentsElement.style.overflow = "hidden"; + _DOMContentsElement.style.position = "absolute"; + _DOMContentsElement.style.visibility = "visible"; + _DOMContentsElement.width = ROUND((_backingStoreFrame.size.width)); + _DOMContentsElement.height = ROUND((_backingStoreFrame.size.height)); + _DOMContentsElement.style.top = "0px"; + _DOMContentsElement.style.left = "0px"; + _DOMContentsElement.style.width = ROUND((_backingStoreFrame.size.width)) + "px"; + _DOMContentsElement.style.height = ROUND((_backingStoreFrame.size.height)) + "px"; + _DOMElement.appendChild(_DOMContentsElement); + } + if (USE_BUFFER) + { + if (_delegateRespondsToDisplayLayerSelector) + return objj_msgSend(_delegate, "displayInLayer:", self); + if ((_backingStoreFrame.size.width) == 0.0 || (_backingStoreFrame.size.height) == 0.0) + return; + if (!_contents) + _contents = CABackingStoreCreate(); + CABackingStoreSetSize(_contents, _bounds.size); + objj_msgSend(self, "drawInContext:", CABackingStoreGetContext(_contents)); + } + objj_msgSend(self, "composite"); +} +},["void"]), new objj_method(sel_getUid("drawInContext:"), function $CALayer__drawInContext_(self, _cmd, aContext) +{ with(self) +{ + if (_backgroundColor) + { + CGContextSetFillColor(aContext, _backgroundColor); + CGContextFillRect(aContext, _bounds); + } + if (_delegateRespondsToDrawLayerInContextSelector) + objj_msgSend(_delegate, "drawLayer:inContext:", self, aContext); +} +},["void","CGContext"]), new objj_method(sel_getUid("opacity"), function $CALayer__opacity(self, _cmd) +{ with(self) +{ + return _opacity; +} +},["float"]), new objj_method(sel_getUid("setOpacity:"), function $CALayer__setOpacity_(self, _cmd, anOpacity) +{ with(self) +{ + if (_opacity == anOpacity) + return; + _opacity = anOpacity; + _DOMElement.style.opacity = anOpacity; + _DOMElement.style.filter = "alpha(opacity=" + anOpacity * 100 + ")"; +} +},["void","float"]), new objj_method(sel_getUid("setHidden:"), function $CALayer__setHidden_(self, _cmd, isHidden) +{ with(self) +{ + _isHidden = isHidden; + _DOMElement.style.display = isHidden ? "none" : "block"; +} +},["void","BOOL"]), new objj_method(sel_getUid("hidden"), function $CALayer__hidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("isHidden"), function $CALayer__isHidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("setMasksToBounds:"), function $CALayer__setMasksToBounds_(self, _cmd, masksToBounds) +{ with(self) +{ + if (_masksToBounds == masksToBounds) + return; + _masksToBounds = masksToBounds; + _DOMElement.style.overflow = _masksToBounds ? "hidden" : "visible"; +} +},["void","BOOL"]), new objj_method(sel_getUid("setBackgroundColor:"), function $CALayer__setBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + _backgroundColor = aColor; + objj_msgSend(self, "setNeedsDisplay"); +} +},["void","CPColor"]), new objj_method(sel_getUid("backgroundColor"), function $CALayer__backgroundColor(self, _cmd) +{ with(self) +{ + return _backgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("sublayers"), function $CALayer__sublayers(self, _cmd) +{ with(self) +{ + return _sublayers; +} +},["CPArray"]), new objj_method(sel_getUid("superlayer"), function $CALayer__superlayer(self, _cmd) +{ with(self) +{ + return _superlayer; +} +},["CALayer"]), new objj_method(sel_getUid("addSublayer:"), function $CALayer__addSublayer_(self, _cmd, aLayer) +{ with(self) +{ + objj_msgSend(self, "insertSublayer:atIndex:", aLayer, _sublayers.length); + return; + if (_DOMContentsElement && aLayer._zPosition > _DOMContentsElement.style.zIndex) _DOMContentsElement.style.zIndex -= 100.0;; + objj_msgSend(_sublayers, "addObject:", aLayer); + _DOMElement.appendChild(aLayer._DOMElement); +} +},["void","CALayer"]), new objj_method(sel_getUid("removeFromSuperlayer"), function $CALayer__removeFromSuperlayer(self, _cmd) +{ with(self) +{ + if (_owningView) + objj_msgSend(_owningView, "setLayer:", nil); + if (!_superlayer) + return; + _superlayer._DOMElement.removeChild(_DOMElement); + objj_msgSend(_superlayer._sublayers, "removeObject:", self); + _superlayer = nil; +} +},["void"]), new objj_method(sel_getUid("insertSublayer:atIndex:"), function $CALayer__insertSublayer_atIndex_(self, _cmd, aLayer, anIndex) +{ with(self) +{ + if (!aLayer) + return; + var superlayer = objj_msgSend(aLayer, "superlayer"); + if (superlayer == self) + { + var index = objj_msgSend(_sublayers, "indexOfObjectIdenticalTo:", aLayer); + if (index == anIndex) + return; + objj_msgSend(_sublayers, "removeObjectAtIndex:", index); + if (index < anIndex) + --anIndex; + } + else if (superlayer != nil) + objj_msgSend(aLayer, "removeFromSuperlayer"); + if (_DOMContentsElement && aLayer._zPosition > _DOMContentsElement.style.zIndex) _DOMContentsElement.style.zIndex -= 100.0;; + objj_msgSend(_sublayers, "insertObject:atIndex:", aLayer, anIndex); + if (anIndex >= _sublayers.length - 1) + _DOMElement.appendChild(aLayer._DOMElement); + else + _DOMElement.insertBefore(aLayer._DOMElement, _sublayers[anIndex + 1]._DOMElement); + aLayer._superlayer = self; + if (self != superlayer) + _CALayerRecalculateGeometry(aLayer, 0xFFFFFFF); +} +},["void","CALayer","unsigned"]), new objj_method(sel_getUid("insertSublayer:below:"), function $CALayer__insertSublayer_below_(self, _cmd, aLayer, aSublayer) +{ with(self) +{ + var index = aSublayer ? objj_msgSend(_sublayers, "indexOfObjectIdenticalTo:", aSublayer) : 0; + objj_msgSend(self, "insertSublayer:atIndex:", aLayer, index == CPNotFound ? _sublayers.length : index); +} +},["void","CALayer","CALayer"]), new objj_method(sel_getUid("insertSublayer:above:"), function $CALayer__insertSublayer_above_(self, _cmd, aLayer, aSublayer) +{ with(self) +{ + var index = aSublayer ? objj_msgSend(_sublayers, "indexOfObjectIdenticalTo:", aSublayer) : _sublayers.length; + if (index == CPNotFound) + objj_msgSend(CPException, "raise:reason:", "CALayerNotFoundException", "aSublayer is not a sublayer of this layer"); + objj_msgSend(_sublayers, "insertObject:atIndex:", aLayer, index == CPNotFound ? _sublayers.length : index + 1); +} +},["void","CALayer","CALayer"]), new objj_method(sel_getUid("replaceSublayer:with:"), function $CALayer__replaceSublayer_with_(self, _cmd, aSublayer, aLayer) +{ with(self) +{ + if (aSublayer == aLayer) + return; + if (aSublayer._superlayer != self) + { + alert("EXCEPTION"); + return; + } + if (_DOMContentsElement && aLayer._zPosition > _DOMContentsElement.style.zIndex) _DOMContentsElement.style.zIndex -= 100.0;; + objj_msgSend(_sublayers, "replaceObjectAtIndex:withObject:", objj_msgSend(_sublayers, "indexOfObjectIdenticalTo:", aSublayer), aLayer); + _DOMElement.replaceChild(aSublayer._DOMElement, aLayer._DOMElement); +} +},["void","CALayer","CALayer"]), new objj_method(sel_getUid("registerRunLoopUpdateWithMask:"), function $CALayer__registerRunLoopUpdateWithMask_(self, _cmd, anUpdateMask) +{ with(self) +{ + if (CALayerRegisteredRunLoopUpdates == nil) + { + CALayerRegisteredRunLoopUpdates = {}; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "performSelector:target:argument:order:modes:", sel_getUid("runLoopUpdateLayers"), CALayer, nil, 0, [CPDefaultRunLoopMode]); + } + _runLoopUpdateMask |= anUpdateMask; + CALayerRegisteredRunLoopUpdates[objj_msgSend(self, "UID")] = self; +} +},["void","unsigned"]), new objj_method(sel_getUid("setNeedsComposite"), function $CALayer__setNeedsComposite(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerCompositeUpdateMask); +} +},["void"]), new objj_method(sel_getUid("setNeedsDisplay"), function $CALayer__setNeedsDisplay(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerDisplayUpdateMask); +} +},["void"]), new objj_method(sel_getUid("setNeedsDisplayOnBoundsChange:"), function $CALayer__setNeedsDisplayOnBoundsChange_(self, _cmd, needsDisplayOnBoundsChange) +{ with(self) +{ + _needsDisplayOnBoundsChange = needsDisplayOnBoundsChange; +} +},["void","BOOL"]), new objj_method(sel_getUid("needsDisplayOnBoundsChange"), function $CALayer__needsDisplayOnBoundsChange(self, _cmd) +{ with(self) +{ + return _needsDisplayOnBoundsChange; +} +},["BOOL"]), new objj_method(sel_getUid("setNeedsDisplayInRect:"), function $CALayer__setNeedsDisplayInRect_(self, _cmd, aRect) +{ with(self) +{ + _dirtyRect = aRect; + objj_msgSend(self, "display"); +} +},["void","CGRect"]), new objj_method(sel_getUid("convertPoint:fromLayer:"), function $CALayer__convertPoint_fromLayer_(self, _cmd, aPoint, aLayer) +{ with(self) +{ + return CGPointApplyAffineTransform(aPoint, _CALayerGetTransform(aLayer, self)); +} +},["CGPoint","CGPoint","CALayer"]), new objj_method(sel_getUid("convertPoint:toLayer:"), function $CALayer__convertPoint_toLayer_(self, _cmd, aPoint, aLayer) +{ with(self) +{ + return CGPointApplyAffineTransform(aPoint, _CALayerGetTransform(self, aLayer)); +} +},["CGPoint","CGPoint","CALayer"]), new objj_method(sel_getUid("convertRect:fromLayer:"), function $CALayer__convertRect_fromLayer_(self, _cmd, aRect, aLayer) +{ with(self) +{ + return CGRectApplyAffineTransform(aRect, _CALayerGetTransform(aLayer, self)); +} +},["CGRect","CGRect","CALayer"]), new objj_method(sel_getUid("convertRect:toLayer:"), function $CALayer__convertRect_toLayer_(self, _cmd, aRect, aLayer) +{ with(self) +{ + return CGRectApplyAffineTransform(aRect, _CALayerGetTransform(self, aLayer)); +} +},["CGRect","CGRect","CALayer"]), new objj_method(sel_getUid("containsPoint:"), function $CALayer__containsPoint_(self, _cmd, aPoint) +{ with(self) +{ + return (aPoint.x >= (_bounds.origin.x) && aPoint.y >= (_bounds.origin.y) && aPoint.x < (_bounds.origin.x + _bounds.size.width) && aPoint.y < (_bounds.origin.y + _bounds.size.height)); +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("hitTest:"), function $CALayer__hitTest_(self, _cmd, aPoint) +{ with(self) +{ + if (_isHidden) + return nil; + var point = CGPointApplyAffineTransform(aPoint, _transformToLayer); + if (!(point.x >= (_bounds.origin.x) && point.y >= (_bounds.origin.y) && point.x < (_bounds.origin.x + _bounds.size.width) && point.y < (_bounds.origin.y + _bounds.size.height))) + return nil; + var layer = nil, + index = _sublayers.length; + while (index--) + if (layer = objj_msgSend(_sublayers[index], "hitTest:", point)) + return layer; + return self; +} +},["CALayer","CGPoint"]), new objj_method(sel_getUid("setDelegate:"), function $CALayer__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate == aDelegate) + return; + _delegate = aDelegate; + _delegateRespondsToDisplayLayerSelector = objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("displayLayer:")); + _delegateRespondsToDrawLayerInContextSelector = objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("drawLayer:inContext:")); + if (_delegateRespondsToDisplayLayerSelector || _delegateRespondsToDrawLayerInContextSelector) + objj_msgSend(self, "setNeedsDisplay"); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CALayer__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("_setOwningView:"), function $CALayer___setOwningView_(self, _cmd, anOwningView) +{ with(self) +{ + _owningView = anOwningView; + if (_owningView) + { + _owningView = anOwningView; + _bounds.size = CGSizeMakeCopy(objj_msgSend(_owningView, "bounds").size); + _position = CGPointMake((_bounds.size.width) * _anchorPoint.x, (_bounds.size.height) * _anchorPoint.y); + } + _CALayerRecalculateGeometry(self, CALayerGeometryPositionMask | CALayerGeometryBoundsMask); +} +},["void","CPView"]), new objj_method(sel_getUid("_owningViewBoundsChanged"), function $CALayer___owningViewBoundsChanged(self, _cmd) +{ with(self) +{ + _bounds.size = CGSizeMakeCopy(objj_msgSend(_owningView, "bounds").size); + _position = CGPointMake((_bounds.size.width) * _anchorPoint.x, (_bounds.size.height) * _anchorPoint.y); + _CALayerRecalculateGeometry(self, CALayerGeometryPositionMask | CALayerGeometryBoundsMask); +} +},["void"]), new objj_method(sel_getUid("_update"), function $CALayer___update(self, _cmd) +{ with(self) +{ + window.loop = true; + var mask = _runLoopUpdateMask; + if (mask & CALayerDOMUpdateMask) + _CALayerUpdateDOM(self, mask); + if (mask & CALayerDisplayUpdateMask) + objj_msgSend(self, "display"); + else if (mask & CALayerFrameSizeUpdateMask || mask & CALayerCompositeUpdateMask) + objj_msgSend(self, "composite"); + _runLoopUpdateMask = 0; + window.loop = false; +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("layer"), function $CALayer__layer(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "init"); +} +},["CALayer"]), new objj_method(sel_getUid("runLoopUpdateLayers"), function $CALayer__runLoopUpdateLayers(self, _cmd) +{ with(self) +{ + for (UID in CALayerRegisteredRunLoopUpdates) + { + var layer = CALayerRegisteredRunLoopUpdates[UID], + mask = layer._runLoopUpdateMask; + if (mask & CALayerDOMUpdateMask) + _CALayerUpdateDOM(layer, mask); + if (mask & CALayerDisplayUpdateMask) + objj_msgSend(layer, "display"); + else if (mask & CALayerFrameSizeUpdateMask || mask & CALayerCompositeUpdateMask) + objj_msgSend(layer, "composite"); + layer._runLoopUpdateMask = 0; + } + window.loop= false; + CALayerRegisteredRunLoopUpdates = nil; +} +},["void"])]); +} +_CALayerUpdateSublayerTransformForSublayers= function(aLayer) +{ + var bounds = aLayer._bounds, + anchorPoint = aLayer._anchorPoint, + translateX = (bounds.size.width) * anchorPoint.x, + translateY = (bounds.size.height) * anchorPoint.y; + aLayer._sublayerTransformForSublayers = CGAffineTransformConcat( + CGAffineTransformMakeTranslation(-translateX, -translateY), + CGAffineTransformConcat(aLayer._sublayerTransform, + CGAffineTransformMakeTranslation(translateX, translateY))); +} +_CALayerUpdateDOM= function(aLayer, aMask) +{ + var DOMElementStyle = aLayer._DOMElement.style; + if (aMask & CALayerZPositionUpdateMask) + DOMElementStyle.zIndex = aLayer._zPosition; + var frame = aLayer._backingStoreFrame; + if (aMask & CALayerFrameOriginUpdateMask) + { + DOMElementStyle.top = ROUND((frame.origin.y)) + "px"; + DOMElementStyle.left = ROUND((frame.origin.x)) + "px"; + } + if (aMask & CALayerFrameSizeUpdateMask) + { + var width = MAX(0.0, ROUND((frame.size.width))), + height = MAX(0.0, ROUND((frame.size.height))), + DOMContentsElement = aLayer._DOMContentsElement; + DOMElementStyle.width = width + "px"; + DOMElementStyle.height = height + "px"; + if (DOMContentsElement) + { + DOMContentsElement.width = width; + DOMContentsElement.height = height; + DOMContentsElement.style.width = width + "px"; + DOMContentsElement.style.height = height + "px"; + } + } +} +_CALayerRecalculateGeometry= function(aLayer, aGeometryChange) +{ + var bounds = aLayer._bounds, + superlayer = aLayer._superlayer, + width = (bounds.size.width), + height = (bounds.size.height), + position = aLayer._position, + anchorPoint = aLayer._anchorPoint, + affineTransform = aLayer._affineTransform, + backingStoreFrameSize = { width:aLayer._backingStoreFrame.width, height:aLayer._backingStoreFrame.height }, + hasCustomBackingStoreFrame = aLayer._hasCustomBackingStoreFrame; + aLayer._transformFromLayer = CGAffineTransformConcat( + CGAffineTransformMakeTranslation(-width * anchorPoint.x - (aLayer._bounds.origin.x), -height * anchorPoint.y - (aLayer._bounds.origin.y)), + CGAffineTransformConcat(affineTransform, + CGAffineTransformMakeTranslation(position.x, position.y))); + if (superlayer && superlayer._hasSublayerTransform) + { + var tx = aLayer._transformFromLayer.tx * superlayer._sublayerTransformForSublayers.a + aLayer._transformFromLayer.ty * superlayer._sublayerTransformForSublayers.c + superlayer._sublayerTransformForSublayers.tx;aLayer._transformFromLayer.ty = aLayer._transformFromLayer.tx * superlayer._sublayerTransformForSublayers.b + aLayer._transformFromLayer.ty * superlayer._sublayerTransformForSublayers.d + superlayer._sublayerTransformForSublayers.ty;aLayer._transformFromLayer.tx = tx;var a = aLayer._transformFromLayer.a * superlayer._sublayerTransformForSublayers.a + aLayer._transformFromLayer.b * superlayer._sublayerTransformForSublayers.c, b = aLayer._transformFromLayer.a * superlayer._sublayerTransformForSublayers.b + aLayer._transformFromLayer.b * superlayer._sublayerTransformForSublayers.d, c = aLayer._transformFromLayer.c * superlayer._sublayerTransformForSublayers.a + aLayer._transformFromLayer.d * superlayer._sublayerTransformForSublayers.c;aLayer._transformFromLayer.d = aLayer._transformFromLayer.c * superlayer._sublayerTransformForSublayers.b + aLayer._transformFromLayer.d * superlayer._sublayerTransformForSublayers.d;aLayer._transformFromLayer.a = a;aLayer._transformFromLayer.b = b;aLayer._transformFromLayer.c = c;; + } + aLayer._transformToLayer = CGAffineTransformInvert(aLayer._transformFromLayer); + aLayer._frame = nil; + aLayer._standardBackingStoreFrame = objj_msgSend(aLayer, "convertRect:toLayer:", bounds, nil); + if (superlayer) + { + var bounds = objj_msgSend(superlayer, "bounds"), + frame = objj_msgSend(superlayer, "convertRect:toLayer:", bounds, nil); + aLayer._standardBackingStoreFrame.origin.x -= (frame.origin.x); + aLayer._standardBackingStoreFrame.origin.y -= (frame.origin.y); + } + var origin = aLayer._standardBackingStoreFrame.origin, + size = aLayer._standardBackingStoreFrame.size; + origin.x = FLOOR(origin.x); + origin.y = FLOOR(origin.y); + size.width = CEIL(size.width) + 1.0; + size.height = CEIL(size.height) + 1.0; + if (!hasCustomBackingStoreFrame) + { + var backingStoreFrame = CGRectMakeCopy(aLayer._standardBackingStoreFrame); + if (ROUND((backingStoreFrame.origin.x)) != ROUND((aLayer._backingStoreFrame.origin.x)) || + ROUND((backingStoreFrame.origin.y)) != ROUND((aLayer._backingStoreFrame.origin.y))) + objj_msgSend(aLayer, "registerRunLoopUpdateWithMask:", CALayerFrameOriginUpdateMask); + if (((backingStoreFrame.size.width) != ROUND((aLayer._backingStoreFrame.size.width)) || + (backingStoreFrame.size.height) != ROUND((aLayer._backingStoreFrame.size.height)))) + objj_msgSend(aLayer, "registerRunLoopUpdateWithMask:", CALayerFrameSizeUpdateMask); + aLayer._backingStoreFrame = backingStoreFrame; + } + if (aGeometryChange & CALayerGeometryBoundsMask && aLayer._needsDisplayOnBoundsChange) + objj_msgSend(aLayer, "setNeedsDisplay"); + else if (hasCustomBackingStoreFrame || (aGeometryChange & ~(CALayerGeometryPositionMask | CALayerGeometryAnchorPointMask))) + objj_msgSend(aLayer, "setNeedsComposite"); + var sublayers = aLayer._sublayers, + index = 0, + count = sublayers.length; + for (; index < count; ++index) + _CALayerRecalculateGeometry(sublayers[index], aGeometryChange); +} +_CALayerGetTransform= function(fromLayer, toLayer) +{ + var transform = CGAffineTransformMakeIdentity(); + if (fromLayer) + { + var layer = fromLayer; + while (layer && layer != toLayer) + { + var transformFromLayer = layer._transformFromLayer; + var tx = transform.tx * transformFromLayer.a + transform.ty * transformFromLayer.c + transformFromLayer.tx;transform.ty = transform.tx * transformFromLayer.b + transform.ty * transformFromLayer.d + transformFromLayer.ty;transform.tx = tx;var a = transform.a * transformFromLayer.a + transform.b * transformFromLayer.c, b = transform.a * transformFromLayer.b + transform.b * transformFromLayer.d, c = transform.c * transformFromLayer.a + transform.d * transformFromLayer.c;transform.d = transform.c * transformFromLayer.b + transform.d * transformFromLayer.d;transform.a = a;transform.b = b;transform.c = c;; + layer = layer._superlayer; + } + if (layer == toLayer) + return transform; + } + var layers = [], + layer = toLayer; + while (layer) + { + layers.push(layer); + layer = layer._superlayer; + } + var index = layers.length; + while (index--) + { + var transformToLayer = layers[index]._transformToLayer; + var tx = transform.tx * transformToLayer.a + transform.ty * transformToLayer.c + transformToLayer.tx;transform.ty = transform.tx * transformToLayer.b + transform.ty * transformToLayer.d + transformToLayer.ty;transform.tx = tx;var a = transform.a * transformToLayer.a + transform.b * transformToLayer.c, b = transform.a * transformToLayer.b + transform.b * transformToLayer.d, c = transform.c * transformToLayer.a + transform.d * transformToLayer.c;transform.d = transform.c * transformToLayer.b + transform.d * transformToLayer.d;transform.a = a;transform.b = b;transform.c = c;; + } + return transform; +} + +p;23;CAMediaTimingFunction.jt;3377;@STATIC;1.0;I;21;Foundation/CPObject.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;3276;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +kCAMediaTimingFunctionLinear = "kCAMediaTimingFunctionLinear"; +kCAMediaTimingFunctionEaseIn = "kCAMediaTimingFunctionEaseIn"; +kCAMediaTimingFunctionEaseOut = "kCAMediaTimingFunctionEaseOut"; +kCAMediaTimingFunctionEaseInEaseOut = "kCAMediaTimingFunctionEaseInEaseOut"; +var CAMediaNamedTimingFunctions = nil; +{var the_class = objj_allocateClassPair(CPObject, "CAMediaTimingFunction"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_c1x"), new objj_ivar("_c1y"), new objj_ivar("_c2x"), new objj_ivar("_c2y")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithControlPoints::::"), function $CAMediaTimingFunction__initWithControlPoints____(self, _cmd, c1x, c1y, c2x, c2y) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CAMediaTimingFunction").super_class }, "init"); + if (self) + { + _c1x = c1x; + _c1y = c1y; + _c2x = c2x; + _c2y = c2y; + } + return self; +} +},["id","float","float","float","float"]), new objj_method(sel_getUid("getControlPointAtIndex:values:"), function $CAMediaTimingFunction__getControlPointAtIndex_values_(self, _cmd, anIndex, reference) +{ with(self) +{ + if (anIndex == 0) + { + reference[0] = 0; + reference[1] = 0; + } + else if (anIndex == 1) + { + reference[0] = _c1x; + reference[1] = _c1y; + } + else if (anIndex == 2) + { + reference[0] = _c2x; + reference[1] = _c2y; + } + else + { + reference[0] = 1.0; + reference[1] = 1.0; + } +} +},["void","unsigned","float[2]"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("functionWithName:"), function $CAMediaTimingFunction__functionWithName_(self, _cmd, aName) +{ with(self) +{ + if (!CAMediaNamedTimingFunctions) + { + CAMediaNamedTimingFunctions = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(CAMediaNamedTimingFunctions, "setObject:forKey:", objj_msgSend(CAMediaTimingFunction, "functionWithControlPoints::::", 0.0 , 0.0 , 1.0 , 1.0), kCAMediaTimingFunctionLinear); + objj_msgSend(CAMediaNamedTimingFunctions, "setObject:forKey:", objj_msgSend(CAMediaTimingFunction, "functionWithControlPoints::::", 0.42 , 0.0 , 1.0 , 1.0), kCAMediaTimingFunctionEaseIn); + objj_msgSend(CAMediaNamedTimingFunctions, "setObject:forKey:", objj_msgSend(CAMediaTimingFunction, "functionWithControlPoints::::", 0.0 , 0.0 , 0.58 , 1.0), kCAMediaTimingFunctionEaseOut); + objj_msgSend(CAMediaNamedTimingFunctions, "setObject:forKey:", objj_msgSend(CAMediaTimingFunction, "functionWithControlPoints::::", 0.42 , 0.0 , 0.58 , 1.0), kCAMediaTimingFunctionEaseInEaseOut); + } + return objj_msgSend(CAMediaNamedTimingFunctions, "objectForKey:", aName); +} +},["id","CPString"]), new objj_method(sel_getUid("functionWithControlPoints::::"), function $CAMediaTimingFunction__functionWithControlPoints____(self, _cmd, c1x, c1y, c2x, c2y) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithControlPoints::::", c1x , c1y , c2x , c2y); +} +},["id","float","float","float","float"])]); +} + +p;19;CGAffineTransform.jt;4904;@STATIC;1.0;i;12;CGGeometry.jt;4868;objj_executeFile("CGGeometry.j", YES); +CGAffineTransformMake= function(a, b, c, d, tx, ty) { return { a:a, b:b, c:c, d:d, tx:tx, ty:ty }; } +CGAffineTransformMakeIdentity= function() { return { a:1.0, b:0.0, c:0.0, d:1.0, tx:0.0, ty:0.0 }; } +CGAffineTransformMakeCopy= function(anAffineTransform) { return { a:anAffineTransform.a, b:anAffineTransform.b, c:anAffineTransform.c, d:anAffineTransform.d, tx:anAffineTransform.tx, ty:anAffineTransform.ty }; } +CGAffineTransformMakeScale= function(sx, sy) { return { a:sx, b:0.0, c:0.0, d:sy, tx:0.0, ty:0.0 }; } +CGAffineTransformMakeTranslation= function(tx, ty) { return { a:1.0, b:0.0, c:0.0, d:1.0, tx:tx, ty:ty }; } +CGAffineTransformTranslate= function(aTransform, tx, ty) { return { a:aTransform.a, b:aTransform.b, c:aTransform.c, d:aTransform.d, tx:aTransform.tx + aTransform.a * tx + aTransform.c * ty, ty:aTransform.ty + aTransform.b * tx + aTransform.d * ty }; } +CGAffineTransformScale= function(aTransform, sx, sy) { return { a:aTransform.a * sx, b:aTransform.b * sx, c:aTransform.c * sy, d:aTransform.d * sy, tx:aTransform.tx, ty:aTransform.ty }; } +CGAffineTransformConcat= function(lhs, rhs) { return { a:lhs.a * rhs.a + lhs.b * rhs.c, b:lhs.a * rhs.b + lhs.b * rhs.d, c:lhs.c * rhs.a + lhs.d * rhs.c, d:lhs.c * rhs.b + lhs.d * rhs.d, tx:lhs.tx * rhs.a + lhs.ty * rhs.c + rhs.tx, ty:lhs.tx * rhs.b + lhs.ty * rhs.d + rhs.ty }; } +CGPointApplyAffineTransform= function(aPoint, aTransform) { return { x:aPoint.x * aTransform.a + aPoint.y * aTransform.c + aTransform.tx, y:aPoint.x * aTransform.b + aPoint.y * aTransform.d + aTransform.ty }; } +CGSizeApplyAffineTransform= function(aSize, aTransform) { return { width:aSize.width * aTransform.a + aSize.height * aTransform.c, height:aSize.width * aTransform.b + aSize.height * aTransform.d }; } +CGAffineTransformIsIdentity= function(aTransform) { return (aTransform.a == 1 && aTransform.b == 0 && aTransform.c == 0 && aTransform.d == 1 && aTransform.tx == 0 && aTransform.ty == 0); } +CGAffineTransformEqualToTransform= function(lhs, rhs) { return (lhs.a == rhs.a && lhs.b == rhs.b && lhs.c == rhs.c && lhs.d == rhs.d && lhs.tx == rhs.tx && lhs.ty == rhs.ty); } +CGStringCreateWithCGAffineTransform= function(aTransform) { return (" [[ " + aTransform.a + ", " + aTransform.b + ", 0 ], [ " + aTransform.c + ", " + aTransform.d + ", 0 ], [ " + aTransform.tx + ", " + aTransform.ty + ", 1]]"); } +CGAffineTransformCreateCopy= function(aTransform) +{ + return { a:aTransform.a, b:aTransform.b, c:aTransform.c, d:aTransform.d, tx:aTransform.tx, ty:aTransform.ty }; +} +CGAffineTransformMakeRotation= function(anAngle) +{ + var sin = SIN(anAngle), + cos = COS(anAngle); + return { a:cos, b:sin, c:-sin, d:cos, tx:0.0, ty:0.0 }; +} +CGAffineTransformRotate= function(aTransform, anAngle) +{ + var sin = SIN(anAngle), + cos = COS(anAngle); + return { + a:aTransform.a * cos + aTransform.c * sin, + b:aTransform.b * cos + aTransform.d * sin, + c:aTransform.c * cos - aTransform.a * sin, + d:aTransform.d * cos - aTransform.b * sin, + tx:aTransform.tx, + ty:aTransform.ty + }; +} +CGAffineTransformInvert= function(aTransform) +{ + var determinant = 1 / (aTransform.a * aTransform.d - aTransform.b * aTransform.c); + return { + a:determinant * aTransform.d, + b:-determinant * aTransform.b, + c:-determinant * aTransform.c, + d:determinant * aTransform.a, + tx:determinant * (aTransform.c * aTransform.ty - aTransform.d * aTransform.tx), + ty:determinant * (aTransform.b * aTransform.tx - aTransform.a * aTransform.ty) + }; +} +CGRectApplyAffineTransform= function(aRect, anAffineTransform) +{ + var top = (aRect.origin.y), + left = (aRect.origin.x), + right = (aRect.origin.x + aRect.size.width), + bottom = (aRect.origin.y + aRect.size.height), + topLeft = CGPointApplyAffineTransform({ x:left, y:top }, anAffineTransform), + topRight = CGPointApplyAffineTransform({ x:right, y:top }, anAffineTransform), + bottomLeft = CGPointApplyAffineTransform({ x:left, y:bottom }, anAffineTransform), + bottomRight = CGPointApplyAffineTransform({ x:right, y:bottom }, anAffineTransform), + minX = MIN(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x), + maxX = MAX(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x), + minY = MIN(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y), + maxY = MAX(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y); + return { origin: { x:minX, y:minY }, size: { width:(maxX - minX), height:(maxY - minY) } }; +} +CPStringFromCGAffineTransform= function(anAffineTransform) +{ + return '{' + anAffineTransform.a + ", " + anAffineTransform.b + ", " + anAffineTransform.c + ", " + anAffineTransform.d + ", " + anAffineTransform.tx + ", " + anAffineTransform.ty + '}'; +} + +p;9;CGColor.jt;3106;@STATIC;1.0;i;14;CGColorSpace.jt;3068;objj_executeFile("CGColorSpace.j", YES); +var CFTypeGlobalCount = 0; +CFHashCode= function(aCFObject) +{ + if (!aCFObject.hash) + aCFObject.hash = ++CFTypeGlobalCount; + return aCFObject; +} +kCGColorWhite = "kCGColorWhite"; +kCGColorBlack = "kCGColorBlack"; +kCGColorClear = "kCGColorClear"; +var _CGColorMap = { }; +CGColorGetConstantColor= function(aColorName) +{ + alert("FIX ME"); +} +CGColorRetain= function(aColor) +{ + return aColor; +} +CGColorRelease= function() +{ +} +CGColorCreate= function(aColorSpace, components) +{ + if (!aColorSpace || !components) + return NULL; + var components = components.slice(); + CGColorSpaceStandardizeComponents(aColorSpace, components); + var UID = CFHashCode(aColorSpace) + components.join(""); + if (_CGColorMap[UID]) + return _CGColorMap[UID]; + return _CGColorMap[UID] = { colorspace:aColorSpace, pattern:NULL, components:components }; +} +CGColorCreateCopy= function(aColor) +{ + return aColor; +} +CGColorCreateGenericGray= function(gray, alpha) +{ + return CGColorCreate(0, [gray, alpha]); +} +CGColorCreateGenericRGB= function(red, green, blue, alpha) +{ + return CGColorCreate(0, [red, green, blue, alpha]); +} +CGColorCreateGenericCMYK= function(cyan, magenta, yellow, black, alpha) +{ + return CGColorCreate(0, [cyan, magenta, yellow, black, alpha]); +} +CGColorCreateCopyWithAlpha= function(aColor, anAlpha) +{ + var components = aColor.components; + if (!aColor || anAlpha == components[components.length - 1]) + return aColor; + if (aColor.pattern) + var copy = CGColorCreateWithPattern(aColor.colorspace, aColor.pattern, components); + else + var copy = CGColorCreate(aColor.colorspace, components); + copy.components[components.length - 1] = anAlpha; + return copy; +} +CGColorCreateWithPattern= function(aColorSpace, aPattern, components) +{ + if (!aColorSpace || !aPattern || !components) + return NULL; + return { colorspace:aColorSpace, pattern:aPattern, components:components.slice() }; +} +CGColorEqualToColor= function(lhs, rhs) +{ + if (lhs == rhs) + return true; + if (!lhs || !rhs) + return false; + var lhsComponents = lhs.components, + rhsComponents = rhs.components, + lhsComponentCount = lhsComponents.length; + if (lhsComponentCount != rhsComponents.length) + return false; + while (lhsComponentCount--) + if (lhsComponents[lhsComponentCount] != rhsComponents[lhsComponentCount]) + return false; + if (lhs.pattern != rhs.pattern) + return false; + if (CGColorSpaceEqualToColorSpace(lhs.colorspace, rhs.colorspace)) + return false; + return true; +} +CGColorGetAlpha= function(aColor) +{ + var components = aColor.components; + return components[components.length - 1]; +} +CGColorGetColorSpace= function(aColor) +{ + return aColor.colorspace; +} +CGColorGetComponents= function(aColor) +{ + return aColor.components; +} +CGColorGetNumberOfComponents= function(aColor) +{ + return aColor.components.length; +} +CGColorGetPattern= function(aColor) +{ + return aColor.pattern; +} + +p;14;CGColorSpace.jt;4691;@STATIC;1.0;t;4672;kCGColorSpaceModelUnknown = -1; +kCGColorSpaceModelMonochrome = 0; +kCGColorSpaceModelRGB = 1; +kCGColorSpaceModelCMYK = 2; +kCGColorSpaceModelLab = 3; +kCGColorSpaceModelDeviceN = 4; +kCGColorSpaceModelIndexed = 5; +kCGColorSpaceModelPattern = 6; +kCGColorSpaceGenericGray = "CGColorSpaceGenericGray"; +kCGColorSpaceGenericRGB = "CGColorSpaceGenericRGB"; +kCGColorSpaceGenericCMYK = "CGColorSpaceGenericCMYK"; +kCGColorSpaceGenericRGBLinear = "CGColorSpaceGenericRGBLinear"; +kCGColorSpaceGenericRGBHDR = "CGColorSpaceGenericRGBHDR"; +kCGColorSpaceAdobeRGB1998 = "CGColorSpaceAdobeRGB1998"; +kCGColorSpaceSRGB = "CGColorSpaceSRGB"; +var _CGNamedColorSpaces = {}; +CGColorSpaceCreateCalibratedGray= function(aWhitePoint, aBlackPoint, gamma) +{ + return { model:kCGColorSpaceModelMonochrome, count:1, base:NULL }; +} +CGColorSpaceCreateCalibratedRGB= function(aWhitePoint, aBlackPoint, gamma) +{ + return { model:kCGColorSpaceModelRGB, count:1, base:NULL }; +} +CGColorSpaceCreateICCBased= function(aComponentCount, range, profile, alternate) +{ + return NULL; +} +CGColorSpaceCreateLab= function(aWhitePoint, aBlackPoint, aRange) +{ + return NULL; +} +CGColorSpaceCreateDeviceCMYK= function() +{ + return CGColorSpaceCreateWithName(kCGColorSpaceGenericCMYK); +} +CGColorSpaceCreateDeviceGray= function() +{ + return CGColorSpaceCreateWithName(kCGColorSpaceGenericGray); +} +CGColorSpaceCreateDeviceRGB= function() +{ + return CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); +} +CGColorSpaceCreateWithPlatformColorSpace= function() +{ + return NULL; +} +CGColorSpaceCreateIndexed= function(aBaseColorSpace, lastIndex, colorTable) +{ + return NULL; +} +CGColorSpaceCreatePattern= function(aBaseColorSpace) +{ + if (aBaseColorSpace) + return { model:kCGColorSpaceModelPattern, count:aBaseColorSpace.count, base:aBaseColorSpace }; + return { model:kCGColorSpaceModelPattern, count:0, base:NULL }; +} +CGColorSpaceCreateWithName= function(aName) +{ + var colorSpace = _CGNamedColorSpaces[aName]; + if (colorSpace) + return colorSpace; + switch (aName) + { + case kCGColorSpaceGenericGray: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelMonochrome, count:1, base:NULL }; + case kCGColorSpaceGenericRGB: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + case kCGColorSpaceGenericCMYK: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelCMYK, count:4, base:NULL }; + case kCGColorSpaceGenericRGBLinear: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + case kCGColorSpaceGenericRGBHDR: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + case kCGColorSpaceAdobeRGB1998: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + case kCGColorSpaceSRGB: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + } + return NULL; +} +CGColorSpaceCopyICCProfile= function(aColorSpace) +{ + return NULL; +} +CGColorSpaceGetNumberOfComponents= function(aColorSpace) +{ + return aColorSpace.count; +} +CGColorSpaceGetTypeID= function(aColorSpace) +{ +} +CGColorSpaceGetModel= function(aColorSpace) +{ + return aColorSpace.model; +} +CGColorSpaceGetBaseColorSpace= function(aColorSpace) +{ +} +CGColorSpaceGetColorTableCount= function(aColorSpace) +{ +} +CGColorSpaceGetColorTable= function(aColorSpace) +{ +} +CGColorSpaceRelease= function(aColorSpace) +{ +} +CGColorSpaceRetain= function(aColorSpace) +{ + return aColorSpace; +} +CGColorSpaceStandardizeComponents= function(aColorSpace, components) +{ + var count = aColorSpace.count; + { if (count > components.length) { components[count] = 1; return; } var component = components[count]; if (component < 0) components[count] = 0; else if (component > 1) components[count] = 1; else components[count] = ROUND(component * 1000) / 1000; }; + if (aColorSpace.base) + aColorSpace = aColorSpace.base; + switch (aColorSpace.model) + { + case kCGColorSpaceModelMonochrome: + case kCGColorSpaceModelRGB: + case kCGColorSpaceModelCMYK: + case kCGColorSpaceModelDeviceN: while (count--) + { if (count > components.length) { components[count] = 1; return; } var component = components[count]; if (component < 0) components[count] = 0; else if (component > 1) components[count] = 1; else components[count] = ROUND(component * 255) / 255; }; + break; + case kCGColorSpaceModelIndexed: + case kCGColorSpaceModelLab: + case kCGColorSpaceModelPattern: break; + } +} + +p;11;CGContext.jt;31561;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.ji;8;CGPath.jt;31488;objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CGAffineTransform.j", YES); +objj_executeFile("CGPath.j", YES); +kCGLineCapButt = 0; +kCGLineCapRound = 1; +kCGLineCapSquare = 2; +kCGLineJoinMiter = 0; +kCGLineJoinRound = 1; +kCGLineJoinBevel = 2; +kCGPathFill = 0; +kCGPathEOFill = 1; +kCGPathStroke = 2; +kCGPathFillStroke = 3; +kCGPathEOFillStroke = 4; +kCGBlendModeNormal = 0; +kCGBlendModeMultiply = 1; +kCGBlendModeScreen = 2; +kCGBlendModeOverlay = 3; +kCGBlendModeDarken = 4; +kCGBlendModeLighten = 5; +kCGBlendModeColorDodge = 6; +kCGBlendModeColorBurn = 7; +kCGBlendModeSoftLight = 8; +kCGBlendModeHardLight = 9; +kCGBlendModeDifference = 10; +kCGBlendModeExclusion = 11; +kCGBlendModeHue = 12; +kCGBlendModeSaturation = 13; +kCGBlendModeColor = 14; +kCGBlendModeLuminosity = 15; +kCGBlendModeClear = 16; +kCGBlendModeCopy = 17; +kCGBlendModeSourceIn = 18; +kCGBlendModeSourceOut = 19; +kCGBlendModeSourceAtop = 20; +kCGBlendModeDestinationOver = 21; +kCGBlendModeDestinationIn = 22; +kCGBlendModeDestinationOut = 23; +kCGBlendModeDestinationAtop = 24; +kCGBlendModeXOR = 25; +kCGBlendModePlusDarker = 26; +kCGBlendModePlusLighter = 27; +CGContextRelease= function() +{ +} +CGContextRetain= function(aContext) +{ + return aContext; +} +if (!CPFeatureIsCompatible(CPHTMLCanvasFeature)) +{ +CGGStateCreate= function() +{ + return { alpha:1.0, strokeStyle:"#000", fillStyle:"#ccc", lineWidth:1.0, lineJoin:kCGLineJoinMiter, lineCap:kCGLineCapButt, miterLimit:10.0, globalAlpha:1.0, + blendMode:kCGBlendModeNormal, + shadowOffset:{ width:0.0, height:0.0 }, shadowBlur:0.0, shadowColor:NULL, CTM:{ a:1.0, b:0.0, c:0.0, d:1.0, tx:0.0, ty:0.0 } }; +} +CGGStateCreateCopy= function(aGState) +{ + return { alpha:aGState.alpha, strokeStyle:aGState.strokeStyle, fillStyle:aGState.fillStyle, lineWidth:aGState.lineWidth, + lineJoin:aGState.lineJoin, lineCap:aGState.lineCap, miterLimit:aGState.miterLimit, globalAlpha:aGState.globalAlpha, + blendMode:aGState.blendMode, + shadowOffset:aGState.shadowOffset, shadowBlur:aGState.shadowBlur, shadowColor:aGState.shadowColor, CTM:{ a:aGState.CTM.a, b:aGState.CTM.b, c:aGState.CTM.c, d:aGState.CTM.d, tx:aGState.CTM.tx, ty:aGState.CTM.ty } }; +} +CGBitmapGraphicsContextCreate= function() +{ + return { DOMElement:document.createElement("div"), path:NULL, gState:CGGStateCreate(), gStateStack:[] }; +} +CGContextSaveGState= function(aContext) +{ + aContext.gStateStack.push(CGGStateCreateCopy(aContext.gState)); +} +CGContextRestoreGState= function(aContext) +{ + aContext.gState = aContext.gStateStack.pop(); +} +CGContextSetLineCap= function(aContext, aLineCap) +{ + aContext.gState.lineCap = aLineCap; +} +CGContextSetLineJoin= function(aContext, aLineJoin) +{ + aContext.gState.lineJoin = aLineJoin; +} +CGContextSetLineWidth= function(aContext, aLineWidth) +{ + aContext.gState.lineWidth = aLineWidth; +} +CGContextSetMiterLimit= function(aContext, aMiterLimit) +{ + aContext.gState.miterLimit = aMiterLimit; +} +CGContextSetBlendMode= function(aContext, aBlendMode) +{ + aContext.gState.blendMode = aBlendMode; +} +CGContextAddArc= function(aContext, x, y, radius, startAngle, endAngle, clockwise) +{ + CGPathAddArc(aContext.path, aContext.gState.CTM, x, y, radius, startAngle, endAngle, clockwise); +} +CGContextAddArcToPoint= function(aContext, x1, y1, x2, y2, radius) +{ + CGPathAddArcToPoint(aContext.path, aContext.gState.CTM, x1, y1, x2, y2, radius); +} +CGContextAddCurveToPoint= function(aContext, cp1x, cp1y, cp2x, cp2y, x, y) +{ + CGPathAddCurveToPoint(aContext.path, aContext.gState.CTM, cp1x, cp1y, cp2x, cp2y, x, y); +} +CGContextAddLines= function(aContext, points, count) +{ + CGPathAddLines(aContext.path, aContext.gState.CTM, points, count); +} +CGContextAddLineToPoint= function(aContext, x, y) +{ + CGPathAddLineToPoint(aContext.path, aContext.gState.CTM, x, y); +} +CGContextAddPath= function(aContext, aPath) +{ + if (!aContext || CGPathIsEmpty(aPath)) + return; + if (!aContext.path) + aContext.path = CGPathCreateMutable(); + CGPathAddPath(aContext.path, aContext.gState.CTM, aPath); +} +CGContextAddQuadCurveToPoint= function(aContext, cpx, cpy, x, y) +{ + CGPathAddQuadCurveToPoint(aContext.path, aContext.gState.CTM, cpx, cpy, x, y); +} +CGContextAddRect= function(aContext, aRect) +{ + CGPathAddRect(aContext.path, aContext.gState.CTM, aRect); +} +CGContextAddRects= function(aContext, rects, count) +{ + CGPathAddRects(aContext.path, aContext.gState.CTM, rects, count); +} +CGContextBeginPath= function(aContext) +{ + aContext.path = CGPathCreateMutable(); +} +CGContextClosePath= function(aContext) +{ + CGPathCloseSubpath(aContext.path); +} +CGContextMoveToPoint= function(aContext, x, y) +{ + if (!aContext.path) + aContext.path = CGPathCreateMutable(); + CGPathMoveToPoint(aContext.path, aContext.gState.CTM, x, y); +} +CGContextFillRect= function(aContext, aRect) +{ + CGContextFillRects(aContext, [aRect], 1); +} +CGContextFillRects= function(aContext, rects, count) +{ + if (arguments[2] === undefined) + var count = rects.length; + CGContextBeginPath(aContext); + CGContextAddRects(aContext, rects, count); + CGContextClosePath(aContext); + CGContextDrawPath(aContext, kCGPathFill); +} +CGContextStrokeRect= function(aContext, aRect) +{ + CGContextBeginPath(aContext); + CGContextAddRect(aContext, aRect); + CGContextClosePath(aContext); + CGContextDrawPath(aContext, kCGPathStroke); +} +CGContextStrokeRectWithWidth= function(aContext, aRect, aWidth) +{ + CGContextSaveGState(aContext); + CGContextSetLineWidth(aContext, aWidth); + CGContextStrokeRect(aContext, aRect); + CGContextRestoreGState(aContext); +} +CGContextConcatCTM= function(aContext, aTransform) +{ + var CTM = aContext.gState.CTM; + var tx = CTM.tx * aTransform.a + CTM.ty * aTransform.c + aTransform.tx;CTM.ty = CTM.tx * aTransform.b + CTM.ty * aTransform.d + aTransform.ty;CTM.tx = tx;var a = CTM.a * aTransform.a + CTM.b * aTransform.c, b = CTM.a * aTransform.b + CTM.b * aTransform.d, c = CTM.c * aTransform.a + CTM.d * aTransform.c;CTM.d = CTM.c * aTransform.b + CTM.d * aTransform.d;CTM.a = a;CTM.b = b;CTM.c = c;; +} +CGContextGetCTM= function(aContext) +{ + return aContext.gState.CTM; +} +CGContextRotateCTM= function(aContext, anAngle) +{ + var gState = aContext.gState; + gState.CTM = CGAffineTransformRotate(gState.CTM, anAngle); +} +CGContextScaleCTM= function(aContext, sx, sy) +{ + var gState = aContext.gState; + gState.CTM = { a:gState.CTM.a * sx, b:gState.CTM.b * sx, c:gState.CTM.c * sy, d:gState.CTM.d * sy, tx:gState.CTM.tx, ty:gState.CTM.ty }; +} +CGContextTranslateCTM= function(aContext, tx, ty) +{ + var gState = aContext.gState; + gState.CTM = { a:gState.CTM.a, b:gState.CTM.b, c:gState.CTM.c, d:gState.CTM.d, tx:gState.CTM.tx + gState.CTM.a * tx + gState.CTM.c * ty, ty:gState.CTM.ty + gState.CTM.b * tx + gState.CTM.d * ty }; +} +CGContextSetShadow= function(aContext, aSize, aBlur) +{ + var gState = aContext.gState; + gState.shadowOffset = { width:aSize.width, height:aSize.height }; + gState.shadowBlur = aBlur; + gState.shadowColor = objj_msgSend(CPColor, "shadowColor"); +} +CGContextSetShadowWithColor= function(aContext, aSize, aBlur, aColor) +{ + var gState = aContext.gState; + gState.shadowOffset = { width:aSize.width, height:aSize.height }; + gState.shadowBlur = aBlur; + gState.shadowColor = aColor; +} +CGContextSetAlpha= function(aContext, anAlpha) +{ + aContext.gState.alpha = MAX(MIN(anAlpha, 1.0), 0.0); +} +} +CGContextEOFillPath= function(aContext) +{ + CGContextDrawPath(aContext, kCGPathEOFill); +} +CGContextFillPath= function(aContext) +{ + CGContextDrawPath(aContext, kCGPathFill); +} +var KAPPA = 4.0 * ((SQRT2 - 1.0) / 3.0); +CGContextAddEllipseInRect= function(aContext, aRect) +{ + CGContextBeginPath(aContext); + CGContextAddPath(aContext, CGPathWithEllipseInRect(aRect)); + CGContextClosePath(aContext); +} +CGContextFillEllipseInRect= function(aContext, aRect) +{ + CGContextBeginPath(aContext); + CGContextAddEllipseInRect(aContext, aRect); + CGContextClosePath(aContext); + CGContextFillPath(aContext); +} +CGContextStrokeEllipseInRect= function(aContext, aRect) +{ + CGContextBeginPath(aContext); + CGContextAddEllipseInRect(aContext, aRect); + CGContextClosePath(aContext); + CGContextStrokePath(aContext); +} +CGContextStrokePath= function(aContext) +{ + CGContextDrawPath(aContext, kCGPathStroke); +} +CGContextStrokeLineSegments= function(aContext, points, count) +{ + var i = 0; + if (arguments["count"] == NULL) + var count = points.length; + CGContextBeginPath(aContext); + for (; i < count; i += 2) + { + CGContextMoveToPoint(aContext, points[i].x, points[i].y); + CGContextAddLineToPoint(aContext, points[i + 1].x, points[i + 1].y); + } + CGContextStrokePath(aContext); +} +CGContextSetFillColor= function(aContext, aColor) +{ + if (aColor) + aContext.gState.fillStyle = objj_msgSend(aColor, "cssString"); +} +CGContextSetStrokeColor= function(aContext, aColor) +{ + if (aColor) + aContext.gState.strokeStyle = objj_msgSend(aColor, "cssString"); +} +CGContextFillRoundedRectangleInRect= function(aContext, aRect, aRadius, ne, se, sw, nw) +{ + CGContextBeginPath(aContext); + CGContextAddPath(aContext, CGPathWithRoundedRectangleInRect(aRect, aRadius, aRadius, ne, se, sw, nw)); + CGContextClosePath(aContext); + CGContextFillPath(aContext); +} +CGContextStrokeRoundedRectangleInRect= function(aContext, aRect, aRadius, ne, se, sw, nw) +{ + CGContextBeginPath(aContext); + CGContextAddPath(aContext, CGPathWithRoundedRectangleInRect(aRect, aRadius, aRadius, ne, se, sw, nw)); + CGContextClosePath(aContext); + CGContextStrokePath(aContext); +} +if (CPFeatureIsCompatible(CPHTMLCanvasFeature)) +{ +var CANVAS_LINECAP_TABLE = [ "butt", "round", "square" ], + CANVAS_LINEJOIN_TABLE = [ "miter", "round", "bevel" ], + CANVAS_COMPOSITE_TABLE = [ "source-over", "source-over", "source-over", "source-over", "darker", + "lighter", "source-over", "source-over", "source-over", "source-over", + "source-over", "source-over", "source-over", "source-over", "source-over", + "source-over", "source-over", + "copy", "source-in", "source-out", "source-atop", + "destination-over", "destination-in", "destination-out", "destination-atop", + "xor", "source-over", "source-over" ]; +CGContextSaveGState= function(aContext) +{ + aContext.save(); +} +CGContextRestoreGState= function(aContext) +{ + aContext.restore(); +} +CGContextSetLineCap= function(aContext, aLineCap) +{ + aContext.lineCap = CANVAS_LINECAP_TABLE[aLineCap]; +} +CGContextSetLineJoin= function(aContext, aLineJoin) +{ + aContext.lineJoin = CANVAS_LINEJOIN_TABLE[aLineJoin]; +} +CGContextSetLineWidth= function(aContext, aLineWidth) +{ + aContext.lineWidth = aLineWidth; +} +CGContextSetMiterLimit= function(aContext, aMiterLimit) +{ + aContext.miterLimit = aMiterLimit; +} +CGContextSetBlendMode= function(aContext, aBlendMode) +{ + aContext.globalCompositeOperation = CANVAS_COMPOSITE_TABLE[aBlendMode]; +} +CGContextAddArc= function(aContext, x, y, radius, startAngle, endAngle, clockwise) +{ + aContext.arc(x, y, radius, startAngle, endAngle, !clockwise); +} +CGContextAddArcToPoint= function(aContext, x1, y1, x2, y2, radius) +{ + aContext.arcTo(x1, y1, x2, y2, radius); +} +CGContextAddCurveToPoint= function(aContext, cp1x, cp1y, cp2x, cp2y, x, y) +{ + aContext.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); +} +CGContextAddLineToPoint= function(aContext, x, y) +{ + aContext.lineTo(x, y); +} +CGContextAddPath= function(aContext, aPath) +{ + if (!aContext || CGPathIsEmpty(aPath)) + return; + var elements = aPath.elements, + i = 0, + count = aPath.count; + for (; i < count; ++i) + { + var element = elements[i], + type = element.type; + switch (type) + { + case kCGPathElementMoveToPoint: aContext.moveTo(element.x, element.y); + break; + case kCGPathElementAddLineToPoint: aContext.lineTo(element.x, element.y); + break; + case kCGPathElementAddQuadCurveToPoint: aContext.quadraticCurveTo(element.cpx, element.cpy, element.x, element.y); + break; + case kCGPathElementAddCurveToPoint: aContext.bezierCurveTo(element.cp1x, element.cp1y, element.cp2x, element.cp2y, element.x, element.y); + break; + case kCGPathElementCloseSubpath: aContext.closePath(); + break; + case kCGPathElementAddArc: aContext.arc(element.x, element.y, element.radius, element.startAngle, element.endAngle, element.clockwise); + break; + case kCGPathElementAddArcTo: + break; + } + } +} +CGContextAddRect= function(aContext, aRect) +{ + aContext.rect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +CGContextAddRects= function(aContext, rects, count) +{ + var i = 0; + if (arguments["count"] == NULL) + var count = rects.length; + for (; i < count; ++i) + { + var rect = rects[i]; + aContext.rect((rect.origin.x), (rect.origin.y), (rect.size.width), (rect.size.height)); + } +} +CGContextBeginPath= function(aContext) +{ + aContext.beginPath(); +} +CGContextClosePath= function(aContext) +{ + aContext.closePath(); +} +CGContextMoveToPoint= function(aContext, x, y) +{ + aContext.moveTo(x, y); +} +CGContextClearRect= function(aContext, aRect) +{ + aContext.clearRect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +CGContextDrawPath= function(aContext, aMode) +{ + if (aMode == kCGPathFill || aMode == kCGPathFillStroke) + aContext.fill(); + else if (aMode == kCGPathEOFill || aMode == kCGPathEOFillStroke) + alert("not implemented!!!"); + if (aMode == kCGPathStroke || aMode == kCGPathFillStroke || aMode == kCGPathEOFillStroke) + aContext.stroke(); +} +CGContextFillRect= function(aContext, aRect) +{ + aContext.fillRect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +CGContextFillRects= function(aContext, rects, count) +{ + var i = 0; + if (arguments["count"] == NULL) + var count = rects.length; + for (; i < count; ++i) + { + var rect = rects[i]; + aContext.fillRect((rect.origin.x), (rect.origin.y), (rect.size.width), (rect.size.height)); + } +} +CGContextStrokeRect= function(aContext, aRect) +{ + aContext.strokeRect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +CGContextClip= function(aContext) +{ + aContext.clip(); +} +CGContextClipToRect= function(aContext, aRect) +{ + aContext.beginPath(); + aContext.rect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); + aContext.closePath(); + aContext.clip(); +} +CGContextClipToRects= function(aContext, rects, count) +{ + if (arguments["count"] == NULL) + var count = rects.length; + aContext.beginPath(); + CGContextAddRects(aContext, rects, count); + aContext.clip(); +} +CGContextSetAlpha= function(aContext, anAlpha) +{ + aContext.globalAlpha = anAlpha; +} +CGContextSetFillColor= function(aContext, aColor) +{ + aContext.fillStyle = objj_msgSend(aColor, "cssString"); +} +CGContextSetStrokeColor= function(aContext, aColor) +{ + aContext.strokeStyle = objj_msgSend(aColor, "cssString"); +} +CGContextSetShadow= function(aContext, aSize, aBlur) +{ + aContext.shadowOffsetX = aSize.width; + aContext.shadowOffsetY = aSize.height; + aContext.shadowBlur = aBlur; +} +CGContextSetShadowWithColor= function(aContext, aSize, aBlur, aColor) +{ + aContext.shadowOffsetX = aSize.width; + aContext.shadowOffsetY = aSize.height; + aContext.shadowBlur = aBlur; + aContext.shadowColor = objj_msgSend(aColor, "cssString"); +} +CGContextRotateCTM= function(aContext, anAngle) +{ + aContext.rotate(anAngle); +} +CGContextScaleCTM= function(aContext, sx, sy) +{ + aContext.scale(sx, sy); +} +CGContextTranslateCTM= function(aContext, tx, ty) +{ + aContext.translate(tx, ty); +} +eigen= function(anAffineTransform) +{ + alert("IMPLEMENT ME!"); +} +if (CPFeatureIsCompatible(CPJavaScriptCanvasTransformFeature)) +{ +CGContextConcatCTM = function(aContext, anAffineTransform) +{ + aContext.transform(anAffineTransform.a, anAffineTransform.b, anAffineTransform.c, anAffineTransform.d, anAffineTransform.tx, anAffineTransform.ty); +} +} +else +{ +CGContextConcatCTM = function(aContext, anAffineTransform) +{ + var a = anAffineTransform.a, + b = anAffineTransform.b, + c = anAffineTransform.c, + d = anAffineTransform.d, + tx = anAffineTransform.tx, + ty = anAffineTransform.ty, + sx = 1.0, + sy = 1.0, + a1 = 0.0, + a2 = 0.0; + if (b == 0.0 && c == 0.0) + { + sx = a; + sy = d; + } + else if (a * b == -c * d) + { + var sign = (a * d < 0.0 || b * c > 0.0) ? -1.0 : 1.0, a2 = (ATAN2(b, d) + ATAN2(-sign * c, sign * a)) / 2.0, cos = COS(a2), sin = SIN(a2); if (cos == 0) { sx = -c / sin; sy = b / sin; } else if (sin == 0) { sx = a / cos; sy = d / cos; } else { abs_cos = ABS(cos); abs_sin = ABS(sin); sx = (abs_cos * a / cos + abs_sin * -c / sin) / (abs_cos + abs_sin); sy = (abs_cos * d / cos + abs_sin * b / sin) / (abs_cos + abs_sin); } + } + else if (a * c == -b * d) + { + var sign = (a * d < 0.0 || b * c > 0.0) ? -1.0 : 1.0; a1 = (Math.atan2(sign * b, sign * a) + Math.atan2(-c, d)) / 2.0, cos = COS(a1), sin = SIN(a1); if (cos == 0) { sx = b / sin; sy = -c / sin; } else if (sin == 0) { sx = a / cos; sy = d / cos; } else { abs_cos = ABS(cos); abs_sin = ABS(sin); sx = (abs_cos * a / cos + abs_sin * b / sin) / (abs_cos + abs_sin); sy = (abs_cos * d / cos + abs_sin * -c / sin) / (abs_cos + abs_sin); } + } + else + { + var transpose = CGAffineTransformMake(a, c, b, d, 0.0, 0.0), + u = eigen(CGAffineTransformConcat(anAffineTransform, transpose)), + v = eigen(CGAffineTransformConcat(transpose, anAffineTransform)), + U = CGAffineTransformMake(u.vector_1.x, u.vector_2.x, u.vector_1.y, u.vector_2.y, 0.0, 0.0), + VT = CGAffineTransformMake(v.vector_1.x, v.vector_1.y, v.vector_2.x, v.vector_2.y, 0.0, 0.0), + S = CGAffineTransformConcat(CGAffineTransformConcat(CGAffineTransformInvert(U), anAffineTransform), CGAffineTransformInvert(VT)); + a = VT.a; + b = VT.b; + c = VT.c; + d = VT.d; + var sign = (a * d < 0.0 || b * c > 0.0) ? -1.0 : 1.0, a2 = (ATAN2(b, d) + ATAN2(-sign * c, sign * a)) / 2.0, cos = COS(a2), sin = SIN(a2); if (cos == 0) { sx = -c / sin; sy = b / sin; } else if (sin == 0) { sx = a / cos; sy = d / cos; } else { abs_cos = ABS(cos); abs_sin = ABS(sin); sx = (abs_cos * a / cos + abs_sin * -c / sin) / (abs_cos + abs_sin); sy = (abs_cos * d / cos + abs_sin * b / sin) / (abs_cos + abs_sin); } + S.a *= sx; + S.d *= sy; + a = U.a; + b = U.b; + c = U.c; + d = U.d; + var sign = (a * d < 0.0 || b * c > 0.0) ? -1.0 : 1.0; a1 = (Math.atan2(sign * b, sign * a) + Math.atan2(-c, d)) / 2.0, cos = COS(a1), sin = SIN(a1); if (cos == 0) { sx = b / sin; sy = -c / sin; } else if (sin == 0) { sx = a / cos; sy = d / cos; } else { abs_cos = ABS(cos); abs_sin = ABS(sin); sx = (abs_cos * a / cos + abs_sin * b / sin) / (abs_cos + abs_sin); sy = (abs_cos * d / cos + abs_sin * -c / sin) / (abs_cos + abs_sin); } + sx = S.a * sx; + sy = S.d * sy; + } + if (tx != 0 || ty != 0) + CGContextTranslateCTM(aContext, tx, ty); + if (a1 != 0.0) + CGContextRotateCTM(aContext, a1); + if (sx != 1.0 || sy != 1.0) + CGContextScaleCTM(aContext, sx, sy); + if (a2 != 0.0) + CGContextRotateCTM(aContext, a2); +} +} +CGContextDrawImage= function(aContext, aRect, anImage) +{ + aContext.drawImage(anImage._image, (aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +to_string= function(aColor) +{ + return "rgba(" + ROUND(aColor.components[0] * 255) + ", " + ROUND(aColor.components[1] * 255) + ", " + ROUND(255 * aColor.components[2]) + ", " + aColor.components[3] + ")"; +} +CGContextDrawLinearGradient= function(aContext, aGradient, aStartPoint, anEndPoint, options) +{ + var colors = aGradient.colors, + count = colors.length, + linearGradient = aContext.createLinearGradient(aStartPoint.x, aStartPoint.y, anEndPoint.x, anEndPoint.y); + while (count--) + linearGradient.addColorStop(aGradient.locations[count], to_string(colors[count])); + aContext.fillStyle = linearGradient; + aContext.fill(); +} +CGBitmapGraphicsContextCreate= function() +{ + var DOMElement = document.createElement("canvas"), + context = DOMElement.getContext("2d"); + context.DOMElement = DOMElement; + return context; +} +} +else if (CPFeatureIsCompatible(CPVMLFeature)) +{ +var VML_TRUTH_TABLE = [ "f", "t"], + VML_LINECAP_TABLE = [ "flat", "round", "square" ], + VML_LINEJOIN_TABLE = [ "miter", "round", "bevel" ], + VML_ELEMENT_TABLE = [ " m ", " l ", "qb", " c ", " x ", [" at ", " wa "]]; +var _CGBitmapGraphicsContextCreate = CGBitmapGraphicsContextCreate; +CGBitmapGraphicsContextCreate= function() +{ + document.namespaces.add("cg_vml_", "urn:schemas-microsoft-com:vml"); + document.createStyleSheet().cssText = "cg_vml_\\:*{behavior:url(#default#VML)}"; + CGBitmapGraphicsContextCreate = _CGBitmapGraphicsContextCreate; + return _CGBitmapGraphicsContextCreate(); +} +CGContextClearRect= function(aContext, aRect) +{ + if (aContext.buffer != nil) + aContext.buffer = ""; + else + aContext.DOMElement.innerHTML = ""; + aContext.path = NULL; +} +var W = 10.0, + H = 10.0, + Z = 10.0, + Z_2 = Z / 2.0; +CGContextDrawImage= function(aContext, aRect, anImage) +{ + var string = ""; + if (anImage.buffer != nil) + string = anImage.buffer; + else + { + var ctm = aContext.gState.CTM, + origin = CGPointApplyAffineTransform(aRect.origin, ctm), + similarity = ctm.a == ctm.d && ctm.b == -ctm.c, + vml = ["<cg_vml_:group coordsize=\"1,1\" coordorigin=\"0,0\" style=\"width:1;height:1;position:absolute"]; + { + var transformedRect = CGRectApplyAffineTransform(aRect, ctm); + vml.push( ";padding:0 ", ROUND((transformedRect.origin.x + transformedRect.size.width)), "px ", ROUND((transformedRect.origin.y + transformedRect.size.height)), + "px 0;filter:progid:DXImageTransform.Microsoft.Matrix(", + "M11='", ctm.a, "',M12='", ctm.c, "',M21='", ctm.b, "',M22='", ctm.d, "',", + "Dx='", ROUND(origin.x), "', Dy='", ROUND(origin.y), "', sizingmethod='clip');"); + } + vml.push( "\"><cg_vml_:image src=\"", anImage._image.src, + "\" style=\"width:", (aRect.size.width), "px;height:", (aRect.size.height), + "px;\"/></g_vml_:group>"); + string = vml.join(""); + } + if (aContext.buffer != nil) + aContext.buffer += string; + else + aContext.DOMElement.insertAdjacentHTML("BeforeEnd", string); +} +CGContextDrawPath= function(aContext, aMode) +{ + if (!aContext || CGPathIsEmpty(aContext.path)) + return; + var elements = aContext.path.elements, + i = 0, + count = aContext.path.count, + gState = aContext.gState, + fill = (aMode == kCGPathFill || aMode == kCGPathFillStroke) ? 1 : 0, + stroke = (aMode == kCGPathStroke || aMode == kCGPathFillStroke) ? 1 : 0, + opacity = gState.alpha, + vml = [ "<cg_vml_:shape", + " fillcolor=\"", gState.fillStyle, + "\" filled=\"", VML_TRUTH_TABLE[fill], + "\" style=\"position:absolute;width:", W, ";height:", H, + ";\" coordorigin=\"0 0\" coordsize=\"", Z * W, " ", Z * H, + "\" stroked=\"", VML_TRUTH_TABLE[stroke], + "\" strokeweight=\"", gState.lineWidth, + "\" strokecolor=\"", gState.strokeStyle, + "\" path=\""]; + for (; i < count; ++i) + { + var element = elements[i], + type = element.type; + switch(type) + { + case kCGPathElementMoveToPoint: + case kCGPathElementAddLineToPoint: vml.push(VML_ELEMENT_TABLE[type], (ROUND(Z * (element.x) - Z_2)), ',', (ROUND(Z * (element.y) - Z_2))); + break; + case kCGPathElementAddQuadCurveToPoint: vml.push(VML_ELEMENT_TABLE[type], + (ROUND(Z * (element.cpx) - Z_2)), ',', (ROUND(Z * (element.cpy) - Z_2)), ',', + (ROUND(Z * (element.x) - Z_2)), ',', (ROUND(Z * (element.y) - Z_2))); + break; + case kCGPathElementAddCurveToPoint: vml.push(VML_ELEMENT_TABLE[type], + (ROUND(Z * (element.cp1x) - Z_2)), ',', (ROUND(Z * (element.cp1y) - Z_2)), ',', + (ROUND(Z * (element.cp2x) - Z_2)), ',', (ROUND(Z * (element.cp2y) - Z_2)), ',', + (ROUND(Z * (element.x) - Z_2)), ',', (ROUND(Z * (element.y) - Z_2))); + break; + case kCGPathElementCloseSubpath: vml.push(VML_ELEMENT_TABLE[type]); + break; + case kCGPathElementAddArc: var x = element.x, + y = element.y, + radius = element.radius, + clockwise = element.clockwise ? 1 : 0, + endAngle = element.endAngle, + startAngle = element.startAngle, + start = { x:x + radius * COS(startAngle), y:y + radius * SIN(startAngle) }; + if (startAngle == endAngle && !clockwise) + { + vml.push(VML_ELEMENT_TABLE[kCGPathElementMoveToPoint], (ROUND(Z * (start.x) - Z_2)), ',', (ROUND(Z * (start.y) - Z_2))); + continue; + } + var end = { x:x + radius * COS(endAngle), y:y + radius * SIN(endAngle) }; + if (clockwise && startAngle != endAngle && (start.x == end.x && start.y == end.y)) + if (start.x >= x) + { + if (start.y < y) + start.x += 0.125; + else + start.y += 0.125; + } + else + { + if (end.y <= y) + end.x += 0.125; + else + end.y += 0.125; + } + vml.push(VML_ELEMENT_TABLE[type][clockwise], + (ROUND(Z * (x - radius) - Z_2)), ',', (ROUND(Z * (y - radius) - Z_2)), " ", + (ROUND(Z * (x + radius) - Z_2)), ',', (ROUND(Z * (y + radius) - Z_2)), " ", + (ROUND(Z * (start.x) - Z_2)), ',', (ROUND(Z * (start.y) - Z_2)), " ", + (ROUND(Z * (end.x) - Z_2)), ',', (ROUND(Z * (end.y) - Z_2))); + break; + case kCGPathElementAddArcTo: break; + } + } + vml.push("\">"); + if (gState.gradient) + vml.push(gState.gradient) + else if (fill) + vml.push("<cg_vml_:fill color=\"", gState.fillStyle, "\" opacity=\"", opacity, "\" />"); + if (stroke) + vml.push( "<cg_vml_:stroke opacity=\"", opacity, + "\" joinstyle=\"", VML_LINEJOIN_TABLE[gState.lineJoin], + "\" miterlimit=\"", gState.miterLimit, + "\" endcap=\"", VML_LINECAP_TABLE[gState.lineCap], + "\" weight=\"", gState.lineWidth, "", + "px\" color=\"", gState.strokeStyle,"\" />"); + var shadowColor = gState.shadowColor; + if (shadowColor) + { + var shadowOffset = gState.shadowOffset; + vml.push("<cg_vml_:shadow on=\"t\" offset=\"", + shadowOffset.width, "pt ", shadowOffset.height, "pt\" opacity=\"", objj_msgSend(shadowColor, "alphaComponent"), "\" color=black />"); + } + vml.push("</cg_vml_:shape>"); + aContext.path = NULL; + if (aContext.buffer != nil) + aContext.buffer += vml.join(""); + else + aContext.DOMElement.insertAdjacentHTML("BeforeEnd", vml.join("")); +} +to_string= function(aColor) +{ + return "rgb(" + ROUND(aColor.components[0] * 255) + ", " + ROUND(aColor.components[1] * 255) + ", " + ROUND(255 * aColor.components[2]) + ")"; +} +CGContextDrawLinearGradient= function(aContext, aGradient, aStartPoint, anEndPoint, options) +{ + if (!aContext || !aGradient) + return; + var vml = nil; + if (aGradient.vml_gradient) + { + var stops = objj_msgSend(objj_msgSend(aGradient.vml_gradient, "stops"), "sortedArrayUsingSelector:", sel_getUid("comparePosition:")), + count = objj_msgSend(stops, "count"); + vml = ["<cg_vml_:fill type=\"gradient\" method=\"linear sigma\" "]; + vml.push("angle=\"" + (objj_msgSend(aGradient.vml_gradient, "angle") + 90) +"\" "); + vml.push("colors=\""); + for (var i = 0; i < count; i++) + { + vml.push((objj_msgSend(stops[i], "position")*100).toFixed(0)+"% "); + vml.push(objj_msgSend(objj_msgSend(objj_msgSend(stops[i], "color"), "colorForSlideBase:", nil), "cssString")); + if (i < count-1) + vml.push(","); + } + vml.push("\" />"); + } + else + { + var colors = aGradient.colors, + count = colors.length; + vml = ["<cg_vml_:fill type=\"gradient\" "]; + vml.push("colors=\""); + for (var i = 0; i < count; i++) + vml.push((aGradient.locations[i]*100).toFixed(0)+"% "+to_string(colors[i])+(i<count-1 ? "," : "")); + vml.push("\" />"); + } + aContext.gState.gradient = vml.join(""); +} +} + +p;12;CGGeometry.jt;9124;@STATIC;1.0;t;9105;CGPointMake= function(x, y) { return { x:x, y:y }; } +CGPointMakeZero= function() { return { x:0.0, y:0.0 }; } +CGPointMakeCopy= function(aPoint) { return { x:aPoint.x, y:aPoint.y }; } +CGPointCreateCopy= function(aPoint) { return { x:aPoint.x, y:aPoint.y }; } +CGPointEqualToPoint= function(lhsPoint, rhsPoint) { return (lhsPoint.x == rhsPoint.x && lhsPoint.y == rhsPoint.y); } +CGStringFromPoint= function(aPoint) { return ("{" + aPoint.x + ", " + aPoint.y + "}"); } +CGSizeMake= function(width, height) { return { width:width, height:height }; } +CGSizeMakeZero= function() { return { width:0.0, height:0.0 }; } +CGSizeMakeCopy= function(aSize) { return { width:aSize.width, height:aSize.height }; } +CGSizeCreateCopy= function(aSize) { return { width:aSize.width, height:aSize.height }; } +CGSizeEqualToSize= function(lhsSize, rhsSize) { return (lhsSize.width == rhsSize.width && lhsSize.height == rhsSize.height); } +CGStringFromSize= function(aSize) { return ("{" + aSize.width + ", " + aSize.height + "}"); } +CGRectMake= function(x, y, width, height) { return { origin: { x:x, y:y }, size: { width:width, height:height } }; } +CGRectMakeZero= function() { return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; } +CGRectMakeCopy= function(aRect) { return { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; } +CGRectCreateCopy= function(aRect) { return { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; } +CGRectEqualToRect= function(lhsRect, rhsRect) { return ((lhsRect.origin.x == rhsRect.origin.x && lhsRect.origin.y == rhsRect.origin.y) && (lhsRect.size.width == rhsRect.size.width && lhsRect.size.height == rhsRect.size.height)); } +CGStringFromRect= function(aRect) { return ("{" + ("{" + aRect.origin.x + ", " + aRect.origin.y + "}") + ", " + ("{" + aRect.size.width + ", " + aRect.size.height + "}") + "}"); } +CGRectOffset= function(aRect, dX, dY) { return { origin: { x:aRect.origin.x + dX, y:aRect.origin.y + dY }, size: { width:aRect.size.width, height:aRect.size.height } }; } +CGRectInset= function(aRect, dX, dY) { return { origin: { x:aRect.origin.x + dX, y:aRect.origin.y + dY }, size: { width:aRect.size.width - 2 * dX, height:aRect.size.height - 2 * dY } }; } +CGRectGetHeight= function(aRect) { return (aRect.size.height); } +CGRectGetMaxX= function(aRect) { return (aRect.origin.x + aRect.size.width); } +CGRectGetMaxY= function(aRect) { return (aRect.origin.y + aRect.size.height); } +CGRectGetMidX= function(aRect) { return (aRect.origin.x + (aRect.size.width) / 2.0); } +CGRectGetMidY= function(aRect) { return (aRect.origin.y + (aRect.size.height) / 2.0); } +CGRectGetMinX= function(aRect) { return (aRect.origin.x); } +CGRectGetMinY= function(aRect) { return (aRect.origin.y); } +CGRectGetWidth= function(aRect) { return (aRect.size.width); } +CGRectIsEmpty= function(aRect) { return (aRect.size.width <= 0.0 || aRect.size.height <= 0.0); } +CGRectIsNull= function(aRect) { return (aRect.size.width <= 0.0 || aRect.size.height <= 0.0); } +CGRectContainsPoint= function(aRect, aPoint) { return (aPoint.x >= (aRect.origin.x) && aPoint.y >= (aRect.origin.y) && aPoint.x < (aRect.origin.x + aRect.size.width) && aPoint.y < (aRect.origin.y + aRect.size.height)); } +CGInsetMake= function(top, right, bottom, left) { return { top:(top), right:(right), bottom:(bottom), left:(left) }; } +CGInsetMakeZero= function() { return { top:(0), right:(0), bottom:(0), left:(0) }; } +CGInsetMakeCopy= function(anInset) { return { top:(anInset.top), right:(anInset.right), bottom:(anInset.bottom), left:(anInset.left) }; } +CGInsetIsEmpty= function(anInset) { return ((anInset).top === 0 && (anInset).right === 0 && (anInset).bottom === 0 && (anInset).left === 0); } +CGInsetEqualToInset= function(lhsInset, rhsInset) { return ((lhsInset).top === (rhsInset).top && (lhsInset).right === (rhsInset).right && (lhsInset).bottom === (rhsInset).bottom && (lhsInset).left === (rhsInset).left); } +CGMinXEdge = 0; +CGMinYEdge = 1; +CGMaxXEdge = 2; +CGMaxYEdge = 3; +CGRectNull = { origin: { x:Infinity, y:Infinity }, size: { width:0.0, height:0.0 } }; +CGRectDivide= function(inRect, slice, rem, amount, edge) +{ + slice.origin = { x:inRect.origin.x, y:inRect.origin.y }; + slice.size = { width:inRect.size.width, height:inRect.size.height }; + rem.origin = { x:inRect.origin.x, y:inRect.origin.y }; + rem.size = { width:inRect.size.width, height:inRect.size.height }; + switch (edge) + { + case CGMinXEdge: + slice.size.width = amount; + rem.origin.x += amount; + rem.size.width -= amount; + break; + case CGMaxXEdge: + slice.origin.x = (slice.origin.x + slice.size.width) - amount; + slice.size.width = amount; + rem.size.width -= amount; + break; + case CGMinYEdge: + slice.size.height = amount; + rem.origin.y += amount; + rem.size.height -= amount; + break; + case CGMaxYEdge: + slice.origin.y = (slice.origin.y + slice.size.height) - amount; + slice.size.height = amount; + rem.size.height -= amount; + } +} +CGRectContainsRect= function(lhsRect, rhsRect) +{ + var union = CGRectUnion(lhsRect, rhsRect); + return ((union.origin.x == lhsRect.origin.x && union.origin.y == lhsRect.origin.y) && (union.size.width == lhsRect.size.width && union.size.height == lhsRect.size.height)); +} +CGRectIntersectsRect= function(lhsRect, rhsRect) +{ + var intersection = CGRectIntersection(lhsRect, rhsRect); + return !(intersection.size.width <= 0.0 || intersection.size.height <= 0.0); +} +CGRectIntegral= function(aRect) +{ + aRect = CGRectStandardize(aRect); + var x = FLOOR((aRect.origin.x)), + y = FLOOR((aRect.origin.y)); + aRect.size.width = CEIL((aRect.origin.x + aRect.size.width)) - x; + aRect.size.height = CEIL((aRect.origin.y + aRect.size.height)) - y; + aRect.origin.x = x; + aRect.origin.y = y; + return aRect; +} +CGRectIntersection= function(lhsRect, rhsRect) +{ + var intersection = { origin: { x:MAX((lhsRect.origin.x), (rhsRect.origin.x)), y:MAX((lhsRect.origin.y), (rhsRect.origin.y)) }, size: { width:0, height:0 } }; + intersection.size.width = MIN((lhsRect.origin.x + lhsRect.size.width), (rhsRect.origin.x + rhsRect.size.width)) - (intersection.origin.x); + intersection.size.height = MIN((lhsRect.origin.y + lhsRect.size.height), (rhsRect.origin.y + rhsRect.size.height)) - (intersection.origin.y); + return (intersection.size.width <= 0.0 || intersection.size.height <= 0.0) ? { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } } : intersection; +} +CGRectStandardize= function(aRect) +{ + var width = (aRect.size.width), + height = (aRect.size.height), + standardized = { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; + if (width < 0.0) + { + standardized.origin.x += width; + standardized.size.width = -width; + } + if (height < 0.0) + { + standardized.origin.y += height; + standardized.size.height = -height; + } + return standardized; +} +CGRectUnion= function(lhsRect, rhsRect) +{ + var lhsRectIsNull = !lhsRect || lhsRect === CGRectNull, + rhsRectIsNull = !rhsRect || rhsRect === CGRectNull; + if (lhsRectIsNull) + return rhsRectIsNull ? CGRectNull : rhsRect; + if (rhsRectIsNull) + return lhsRectIsNull ? CGRectNull : lhsRect; + var minX = MIN((lhsRect.origin.x), (rhsRect.origin.x)), + minY = MIN((lhsRect.origin.y), (rhsRect.origin.y)), + maxX = MAX((lhsRect.origin.x + lhsRect.size.width), (rhsRect.origin.x + rhsRect.size.width)), + maxY = MAX((lhsRect.origin.y + lhsRect.size.height), (rhsRect.origin.y + rhsRect.size.height)); + return { origin: { x:minX, y:minY }, size: { width:maxX - minX, height:maxY - minY } }; +} +CGPointFromString= function(aString) +{ + var comma = aString.indexOf(','); + return { x:parseInt(aString.substr(1, comma - 1)), y:parseInt(aString.substring(comma + 1, aString.length)) }; +} +CGSizeFromString= function(aString) +{ + var comma = aString.indexOf(','); + return { width:parseInt(aString.substr(1, comma - 1)), height:parseInt(aString.substring(comma + 1, aString.length)) }; +} +CGRectFromString= function(aString) +{ + var comma = aString.indexOf(',', aString.indexOf(',') + 1); + return { origin:CGPointFromString(aString.substr(1, comma - 1)), size:CGSizeFromString(aString.substring(comma + 2, aString.length)) }; +} +CGPointFromEvent= function(anEvent) +{ + return { x:anEvent.clientX, y:anEvent.clientY }; +} +CGInsetFromString= function(aString) +{ + var numbers = aString.substr(1, aString.length - 2).split(','); + return { top:(parseFloat(numbers[0])), right:(parseFloat(numbers[1])), bottom:(parseFloat(numbers[2])), left:(parseFloat(numbers[3])) }; +} +CGInsetFromCPString = CGInsetFromString; +CPStringFromCGInset= function(anInset) +{ + return '{' + anInset.top + ", " + anInset.left + ", " + anInset.bottom + ", " + anInset.right + '}'; +} + +p;12;CGGradient.jt;876;@STATIC;1.0;i;9;CGColor.ji;14;CGColorSpace.jt;826;objj_executeFile("CGColor.j", YES); +objj_executeFile("CGColorSpace.j", YES); +kCGGradientDrawsBeforeStartLocation = 1 << 0; +kCGGradientDrawsAfterEndLocation = 1 << 1; +CGGradientCreateWithColorComponents= function(aColorSpace, components, locations, count) +{ + if (arguments["count"] == NULL) + var count = locations.length; + var colors = []; + while (count--) + { + var offset = count * 4; + colors[count] = CGColorCreate(aColorSpace, components.slice(offset, offset + 4)); + } + return CGGradientCreateWithColors(aColorSpace, colors, locations); +} +CGGradientCreateWithColors= function(aColorSpace, colors, locations) +{ + return { colorspace:aColorSpace, colors:colors, locations:locations }; +} +CGGradientRelease= function() +{ +} +CGGradientRetain= function(aGradient) +{ + return aGradient; +} + +p;8;CGPath.jt;12249;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.jt;12188;objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CGAffineTransform.j", YES); +kCGPathElementMoveToPoint = 0; +kCGPathElementAddLineToPoint = 1; +kCGPathElementAddQuadCurveToPoint = 2; +kCGPathElementAddCurveToPoint = 3; +kCGPathElementCloseSubpath = 4; +kCGPathElementAddArc = 5; +kCGPathElementAddArcToPoint = 6; +CGPathCreateMutable= function() +{ + return { count:0, start:NULL, current:NULL, elements:[] }; +} +CGPathCreateMutableCopy= function(aPath) +{ + var path = CGPathCreateMutable(); + CGPathAddPath(path, aPath); + return path; +} +CGPathCreateCopy= function(aPath) +{ + return CGPathCreateMutableCopy(aPath); +} +CGPathRelease= function(aPath) +{ +} +CGPathRetain= function(aPath) +{ + return aPath; +} +CGPathAddArc= function(aPath, aTransform, x, y, aRadius, aStartAngle, anEndAngle, isClockwise) +{ + if (aTransform && !(aTransform.a == 1 && aTransform.b == 0 && aTransform.c == 0 && aTransform.d == 1 && aTransform.tx == 0 && aTransform.ty == 0)) + { + var center = { x:x, y:y }, + end = { x:COS(anEndAngle), y:SIN(anEndAngle) }, + start = { x:COS(aStartAngle), y:SIN(aStartAngle) }; + end = { x:end.x * aTransform.a + end.y * aTransform.c + aTransform.tx, y:end.x * aTransform.b + end.y * aTransform.d + aTransform.ty }; + start = { x:start.x * aTransform.a + start.y * aTransform.c + aTransform.tx, y:start.x * aTransform.b + start.y * aTransform.d + aTransform.ty }; + center = { x:center.x * aTransform.a + center.y * aTransform.c + aTransform.tx, y:center.x * aTransform.b + center.y * aTransform.d + aTransform.ty }; + x = center.x; + y = center.y; + var oldEndAngle = anEndAngle, + oldStartAngle = aStartAngle; + anEndAngle = ATAN2(end.y - aTransform.ty, end.x - aTransform.tx); + aStartAngle = ATAN2(start.y - aTransform.ty, start.x - aTransform.tx); + if (anEndAngle == aStartAngle && oldEndAngle != oldStartAngle) + if (oldStartAngle > oldEndAngle) + anEndAngle = anEndAngle - PI2; + else + aStartAngle = aStartAngle - PI2; + aRadius = { width:aRadius, height:0 }; + aRadius = { width:aRadius.width * aTransform.a + aRadius.height * aTransform.c, height:aRadius.width * aTransform.b + aRadius.height * aTransform.d }; + aRadius = SQRT(aRadius.width * aRadius.width + aRadius.height * aRadius.height); + } + aPath.current = { x:x + aRadius * COS(anEndAngle), y:y + aRadius * SIN(anEndAngle) }; + aPath.elements[aPath.count++] = { type:kCGPathElementAddArc, x:x, y:y, radius:aRadius, startAngle:aStartAngle, endAngle:anEndAngle }; +} +CGPathAddArcToPoint= function(aPath, aTransform, x1, y1, x2, y2, aRadius) +{ +} +CGPathAddCurveToPoint= function(aPath, aTransform, cp1x, cp1y, cp2x, cp2y, x, y) +{ + var cp1 = { x:cp1x, y:cp1y }, + cp2 = { x:cp2x, y:cp2y }, + end = { x:x, y:y }; + if (aTransform) + { + cp1 = { x:cp1.x * aTransform.a + cp1.y * aTransform.c + aTransform.tx, y:cp1.x * aTransform.b + cp1.y * aTransform.d + aTransform.ty }; + cp2 = { x:cp2.x * aTransform.a + cp2.y * aTransform.c + aTransform.tx, y:cp2.x * aTransform.b + cp2.y * aTransform.d + aTransform.ty }; + end = { x:end.x * aTransform.a + end.y * aTransform.c + aTransform.tx, y:end.x * aTransform.b + end.y * aTransform.d + aTransform.ty }; + } + aPath.current = end; + aPath.elements[aPath.count++] = { type:kCGPathElementAddCurveToPoint, cp1x:cp1.x, cp1y:cp1.y, cp2x:cp2.x, cp2y:cp2.y, x:end.x, y:end.y }; +} +CGPathAddLines= function(aPath, aTransform, points, count) +{ + var i = 1; + if (arguments["count"] == NULL) + var count = points.length; + if (!aPath || count < 2) + return; + CGPathMoveToPoint(aPath, aTransform, points[0].x, points[0].y); + for (; i < count; ++i) + CGPathAddLineToPoint(aPath, aTransform, points[i].x, points[i].y); +} +CGPathAddLineToPoint= function(aPath, aTransform, x, y) +{ + var point = { x:x, y:y }; + if (aTransform != NULL) + point = { x:point.x * aTransform.a + point.y * aTransform.c + aTransform.tx, y:point.x * aTransform.b + point.y * aTransform.d + aTransform.ty }; + aPath.elements[aPath.count++] = { type: kCGPathElementAddLineToPoint, x:point.x, y:point.y }; + aPath.current = point; +} +CGPathAddPath= function(aPath, aTransform, anotherPath) +{ + for (var i = 0, count = anotherPath.count; i < count; ++i) + { + var element = anotherPath.elements[i]; + switch (element.type) + { + case kCGPathElementAddLineToPoint: CGPathAddLineToPoint(aPath, aTransform, element.x, element.y); + break; + case kCGPathElementAddCurveToPoint: CGPathAddCurveToPoint(aPath, aTransform, + element.cp1x, element.cp1y, + element.cp2x, element.cp2y, + element.x, element.y); + break; + case kCGPathElementAddArc: CGPathAddArc(aPath, aTransform, element.x, element.y, + element.radius, element.startAngle, + element.endAngle, element.isClockwise); + break; + case kCGPathElementAddQuadCurveToPoint: CGPathAddQuadCurveToPoint(aPath, aTransform, + element.cpx, element.cpy, + element.x, element.y); + break; + case kCGPathElementMoveToPoint: CGPathMoveToPoint(aPath, aTransform, element.x, element.y); + break; + case kCGPathElementCloseSubpath: CGPathCloseSubpath(aPath); + break; + } + } +} +CGPathAddQuadCurveToPoint= function(aPath, aTransform, cpx, cpy, x, y) +{ + var cp = { x:cpx, y:cpy }, + end = { x:x, y:y }; + if (aTransform) + { + cp = { x:cp.x * aTransform.a + cp.y * aTransform.c + aTransform.tx, y:cp.x * aTransform.b + cp.y * aTransform.d + aTransform.ty }; + end = { x:end.x * aTransform.a + end.y * aTransform.c + aTransform.tx, y:end.x * aTransform.b + end.y * aTransform.d + aTransform.ty }; + } + aPath.elements[aPath.count++] = { type:kCGPathElementAddQuadCurveToPoint, cpx:cp.x, cpy:cp.y, x:end.x, y:end.y } + aPath.current = end; +} +CGPathAddRect= function(aPath, aTransform, aRect) +{ + CGPathAddRects(aPath, aTransform, [aRect], 1); +} +CGPathAddRects= function(aPath, aTransform, rects, count) +{ + var i = 0; + if (arguments["count"] == NULL) + var count = rects.length; + for (; i < count; ++i) + { + var rect = rects[i]; + CGPathMoveToPoint(aPath, aTransform, (rect.origin.x), (rect.origin.y)); + CGPathAddLineToPoint(aPath, aTransform, (rect.origin.x + rect.size.width), (rect.origin.y)); + CGPathAddLineToPoint(aPath, aTransform, (rect.origin.x + rect.size.width), (rect.origin.y + rect.size.height)); + CGPathAddLineToPoint(aPath, aTransform, (rect.origin.x), (rect.origin.y + rect.size.height)); + CGPathCloseSubpath(aPath); + } +} +CGPathMoveToPoint= function(aPath, aTransform, x, y) +{ + var point = { x:x, y:y }, + count = aPath.count; + if (aTransform != NULL) + point = { x:point.x * aTransform.a + point.y * aTransform.c + aTransform.tx, y:point.x * aTransform.b + point.y * aTransform.d + aTransform.ty }; + aPath.start = point; + aPath.current = point; + var previous = aPath.elements[count - 1]; + if (count != 0 && previous.type == kCGPathElementMoveToPoint) + { + previous.x = point.x; + previous.y = point.y; + } + else + aPath.elements[aPath.count++] = { type:kCGPathElementMoveToPoint, x:point.x, y:point.y }; +} +var KAPPA = 4.0 * ((SQRT2 - 1.0) / 3.0); +CGPathWithEllipseInRect= function(aRect) +{ + var path = CGPathCreateMutable(); + if ((aRect.size.width) == (aRect.size.height)) + CGPathAddArc(path, nil, (aRect.origin.x + (aRect.size.width) / 2.0), (aRect.origin.y + (aRect.size.height) / 2.0), (aRect.size.width) / 2.0, 0.0, 2 * PI, YES); + else + { + var axis = { width:(aRect.size.width) / 2.0, height:(aRect.size.height) / 2.0 }, + center = { x:(aRect.origin.x) + axis.width, y:(aRect.origin.y) + axis.height }; + CGPathMoveToPoint(path, nil, center.x, center.y - axis.height); + CGPathAddCurveToPoint(path, nil, center.x + (KAPPA * axis.width), center.y - axis.height, center.x + axis.width, center.y - (KAPPA * axis.height), center.x + axis.width, center.y); + CGPathAddCurveToPoint(path, nil, center.x + axis.width, center.y + (KAPPA * axis.height), center.x + (KAPPA * axis.width), center.y + axis.height, center.x, center.y + axis.height); + CGPathAddCurveToPoint(path, nil, center.x - (KAPPA * axis.width), center.y + axis.height, center.x - axis.width, center.y + (KAPPA * axis.height), center.x - axis.width, center.y); + CGPathAddCurveToPoint(path, nil, center.x - axis.width, center.y - (KAPPA * axis.height), center.x - (KAPPA * axis.width), center.y - axis.height, center.x, center.y - axis.height); + } + CGPathCloseSubpath(path); + return path; +} +CGPathWithRoundedRectangleInRect= function(aRect, xRadius, yRadius , ne, se, sw, nw) +{ + var path = CGPathCreateMutable(), + xMin = (aRect.origin.x), + xMax = (aRect.origin.x + aRect.size.width), + yMin = (aRect.origin.y), + yMax = (aRect.origin.y + aRect.size.height); + CGPathMoveToPoint(path, nil, xMin + xRadius, yMin); + if (ne) + { + CGPathAddLineToPoint(path, nil, xMax - xRadius, yMin); + CGPathAddCurveToPoint(path, nil, xMax - xRadius, yMin, xMax, yMin, xMax, yMin + xRadius); + } + else + CGPathAddLineToPoint(path, nil, xMax, yMin); + if (se) + { + CGPathAddLineToPoint(path, nil, xMax, yMax - xRadius); + CGPathAddCurveToPoint(path, nil, xMax, yMax - xRadius, xMax, yMax, xMax - xRadius, yMax); + } + else + CGPathAddLineToPoint(path, nil, xMax, yMax); + if (sw) + { + CGPathAddLineToPoint(path, nil, xMin + xRadius, yMax); + CGPathAddCurveToPoint(path, nil, xMin + xRadius, yMax, xMin, yMax, xMin, yMax - xRadius); + } + else + CGPathAddLineToPoint(path, nil, xMin, yMax); + if (nw) + { + CGPathAddLineToPoint(path, nil, xMin, yMin + xRadius); + CGPathAddCurveToPoint(path, nil, xMin, yMin + xRadius, xMin, yMin, xMin + xRadius, yMin); + } else + CGPathAddLineToPoint(path, nil, xMin, yMin); + CGPathCloseSubpath(path); + return path; +} +CGPathCloseSubpath= function(aPath) +{ + var count = aPath.count; + if (count == 0 || aPath.elements[count - 1].type == kCGPathElementCloseSubpath) + return; + aPath.elements[aPath.count++] = { type:kCGPathElementCloseSubpath, points:[aPath.start] }; +} +CGPathEqualToPath= function(aPath, anotherPath) +{ + if (aPath == anotherPath) + return YES; + if (aPath.count != anotherPath.count || !(aPath.start.x == anotherPath.start.x && aPath.start.y == anotherPath.start.y) || !(aPath.current.x == anotherPath.current.x && aPath.current.y == anotherPath.current.y)) + return NO; + var i = 0, + count = aPath.count; + for (; i < count; ++i) + { + var element = aPath[i], + anotherElement = anotherPath[i]; + if (element.type != anotherElement.type) + return NO; + if ((element.type == kCGPathElementAddArc || element.type == kCGPathElementAddArcToPoint) && + element.radius != anotherElement.radius) + return NO; + var j = element.points.length; + while (j--) + if (!(element.points[j].x == anotherElement.points[j].x && element.points[j].y == anotherElement.points[j].y)) + return NO; + } + return YES; +} +CGPathGetCurrentPoint= function(aPath) +{ + return { x:aPath.current.x, y:aPath.current.y }; +} +CGPathIsEmpty= function(aPath) +{ + return !aPath || aPath.count == 0; +} + +p;18;_CPMenuBarWindow.jt;19526;@STATIC;1.0;i;15;_CPMenuWindow.jt;19486; + + + + + +objj_executeFile("_CPMenuWindow.j", YES); + + +var MENUBAR_HEIGHT = 28.0, + MENUBAR_MARGIN = 10.0, + MENUBAR_LEFT_MARGIN = 10.0, + MENUBAR_RIGHT_MARGIN = 10.0; + +var _CPMenuBarWindowBackgroundColor = nil, + _CPMenuBarWindowFont = nil; + +{var the_class = objj_allocateClassPair(CPPanel, "_CPMenuBarWindow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menu"), new objj_ivar("_highlightView"), new objj_ivar("_menuItemViews"), new objj_ivar("_trackingMenuItem"), new objj_ivar("_iconImageView"), new objj_ivar("_titleField"), new objj_ivar("_textColor"), new objj_ivar("_titleColor"), new objj_ivar("_textShadowColor"), new objj_ivar("_titleShadowColor"), new objj_ivar("_highlightColor"), new objj_ivar("_highlightTextColor"), new objj_ivar("_highlightTextShadowColor")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $_CPMenuBarWindow__init(self, _cmd) +{ with(self) +{ + + var contentRect = objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "contentBounds"); + + contentRect.size.height = MENUBAR_HEIGHT; + + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuBarWindow").super_class }, "initWithContentRect:styleMask:", contentRect, CPBorderlessWindowMask); + + if (self) + { + objj_msgSend(self, "setLevel:", CPMainMenuWindowLevel); + objj_msgSend(self, "setAutoresizingMask:", CPWindowWidthSizable); + + var contentView = objj_msgSend(self, "contentView"); + + objj_msgSend(contentView, "setAutoresizesSubviews:", NO); + + objj_msgSend(self, "setBecomesKeyOnlyIfNeeded:", YES); + + + _iconImageView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 16.0, 16.0)); + + objj_msgSend(contentView, "addSubview:", _iconImageView); + + _titleField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + + objj_msgSend(_titleField, "setFont:", objj_msgSend(CPFont, "boldSystemFontOfSize:", 13.0)); + objj_msgSend(_titleField, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(_titleField, "setTextShadowOffset:", CGSizeMake(0, 1)); + + objj_msgSend(contentView, "addSubview:", _titleField); + } + + return self; +} +},["id"]), new objj_method(sel_getUid("setTitle:"), function $_CPMenuBarWindow__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + + var bundleName = objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "objectForInfoDictionaryKey:", "CPBundleName"); + + if (!objj_msgSend(bundleName, "length")) + document.title = aTitle; + else if (objj_msgSend(aTitle, "length")) + document.title = aTitle + " - " + bundleName; + else + document.title = bundleName; + + + objj_msgSend(_titleField, "setStringValue:", aTitle); + objj_msgSend(_titleField, "sizeToFit"); + + objj_msgSend(self, "tile"); +} +},["void","CPString"]), new objj_method(sel_getUid("setIconImage:"), function $_CPMenuBarWindow__setIconImage_(self, _cmd, anImage) +{ with(self) +{ + objj_msgSend(_iconImageView, "setImage:", anImage); + objj_msgSend(_iconImageView, "setHidden:", anImage == nil); + + objj_msgSend(self, "tile"); +} +},["void","CPImage"]), new objj_method(sel_getUid("setIconImageAlphaValue:"), function $_CPMenuBarWindow__setIconImageAlphaValue_(self, _cmd, anAlphaValue) +{ with(self) +{ + objj_msgSend(_iconImageView, "setAlphaValue:", anAlphaValue); +} +},["void","float"]), new objj_method(sel_getUid("setColor:"), function $_CPMenuBarWindow__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (!aColor) + { + if (!_CPMenuBarWindowBackgroundColor) + _CPMenuBarWindowBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(_CPMenuBarWindow, "class")), "pathForResource:", "_CPMenuBarWindow/_CPMenuBarWindowBackground.png"), CGSizeMake(1.0, 28.0))); + + objj_msgSend(objj_msgSend(self, "contentView"), "setBackgroundColor:", _CPMenuBarWindowBackgroundColor); + } + else + objj_msgSend(objj_msgSend(self, "contentView"), "setBackgroundColor:", aColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("setTextColor:"), function $_CPMenuBarWindow__setTextColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textColor == aColor) + return; + + _textColor = aColor; + + objj_msgSend(_menuItemViews, "makeObjectsPerformSelector:withObject:", sel_getUid("setTextColor:"), _textColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("setTitleColor:"), function $_CPMenuBarWindow__setTitleColor_(self, _cmd, aColor) +{ with(self) +{ + if (_titleColor == aColor) + return; + + _titleColor = aColor; + + objj_msgSend(_titleField, "setTextColor:", aColor ? aColor : objj_msgSend(CPColor, "blackColor")); +} +},["void","CPColor"]), new objj_method(sel_getUid("setTextShadowColor:"), function $_CPMenuBarWindow__setTextShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textShadowColor == aColor) + return; + + _textShadowColor = aColor; + + objj_msgSend(_menuItemViews, "makeObjectsPerformSelector:withObject:", sel_getUid("setTextShadowColor:"), _textShadowColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("setTitleShadowColor:"), function $_CPMenuBarWindow__setTitleShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_titleShadowColor == aColor) + return; + + _titleShadowColor = aColor; + + objj_msgSend(_titleField, "setTextShadowColor:", aColor ? aColor : objj_msgSend(CPColor, "whiteColor")); +} +},["void","CPColor"]), new objj_method(sel_getUid("setHighlightColor:"), function $_CPMenuBarWindow__setHighlightColor_(self, _cmd, aColor) +{ with(self) +{ + if (_highlightColor == aColor) + return; + + _highlightColor = aColor; +} +},["void","CPColor"]), new objj_method(sel_getUid("setHighlightTextColor:"), function $_CPMenuBarWindow__setHighlightTextColor_(self, _cmd, aColor) +{ with(self) +{ + if (_highlightTextColor == aColor) + return; + + _highlightTextColor = aColor; + + +} +},["void","CPColor"]), new objj_method(sel_getUid("setHighlightTextShadowColor:"), function $_CPMenuBarWindow__setHighlightTextShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_highlightTextShadowColor == aColor) + return; + + _highlightTextShadowColor = aColor; + + +} +},["void","CPColor"]), new objj_method(sel_getUid("setMenu:"), function $_CPMenuBarWindow__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + if (_menu == aMenu) + return; + + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + + if (_menu) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidAddItemNotification, _menu); + + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidChangeItemNotification, _menu); + + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidRemoveItemNotification, _menu); + + var items = objj_msgSend(_menu, "itemArray"), + count = items.length; + + while (count--) + objj_msgSend(objj_msgSend(items[count], "_menuItemView"), "removeFromSuperview"); + } + + _menu = aMenu; + + if (_menu) + { + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidAddItem:"), CPMenuDidAddItemNotification, _menu); + + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidChangeItem:"), CPMenuDidChangeItemNotification, _menu); + + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidRemoveItem:"), CPMenuDidRemoveItemNotification, _menu); + } + + _menuItemViews = []; + + var contentView = objj_msgSend(self, "contentView"), + items = objj_msgSend(_menu, "itemArray"), + count = items.length; + + for (index = 0; index < count; ++index) + { + var item = items[index], + menuItemView = objj_msgSend(item, "_menuItemView"); + + _menuItemViews.push(menuItemView); + + objj_msgSend(menuItemView, "setTextColor:", _textColor); + objj_msgSend(menuItemView, "setHidden:", objj_msgSend(item, "isHidden")); + + objj_msgSend(menuItemView, "synchronizeWithMenuItem"); + + objj_msgSend(contentView, "addSubview:", menuItemView); + } + + objj_msgSend(self, "tile"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("menuDidChangeItem:"), function $_CPMenuBarWindow__menuDidChangeItem_(self, _cmd, aNotification) +{ with(self) +{ + var menuItem = objj_msgSend(_menu, "itemAtIndex:", objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex")), + menuItemView = objj_msgSend(menuItem, "_menuItemView"); + + objj_msgSend(menuItemView, "setHidden:", objj_msgSend(menuItem, "isHidden")); + objj_msgSend(menuItemView, "synchronizeWithMenuItem"); + + objj_msgSend(self, "tile"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("menuDidAddItem:"), function $_CPMenuBarWindow__menuDidAddItem_(self, _cmd, aNotification) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex"), + menuItem = objj_msgSend(_menu, "itemAtIndex:", index), + menuItemView = objj_msgSend(menuItem, "_menuItemView"); + + objj_msgSend(_menuItemViews, "insertObject:atIndex:", menuItemView, index); + + objj_msgSend(menuItemView, "setTextColor:", _textColor); + objj_msgSend(menuItemView, "setHidden:", objj_msgSend(menuItem, "isHidden")); + + objj_msgSend(menuItemView, "synchronizeWithMenuItem"); + + objj_msgSend(objj_msgSend(self, "contentView"), "addSubview:", menuItemView); + + objj_msgSend(self, "tile"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("menuDidRemoveItem:"), function $_CPMenuBarWindow__menuDidRemoveItem_(self, _cmd, aNotification) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex"), + menuItemView = objj_msgSend(_menuItemViews, "objectAtIndex:", index); + + objj_msgSend(_menuItemViews, "removeObjectAtIndex:", index); + + objj_msgSend(menuItemView, "removeFromSuperview"); + + objj_msgSend(self, "tile"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("mouseDown:"), function $_CPMenuBarWindow__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var constraintRect = CGRectInset(objj_msgSend(objj_msgSend(self, "platformWindow"), "visibleFrame"), 5.0, 0.0); + + constraintRect.size.height -= 5.0; + + objj_msgSend(objj_msgSend(_CPMenuManager, "sharedMenuManager"), "beginTracking:menuContainer:constraintRect:callback:", anEvent, self, constraintRect, function(aMenuContainer, aMenu) + { + objj_msgSend(aMenu, "_performActionOfHighlightedItemChain"); + objj_msgSend(aMenu, "_highlightItemAtIndex:", CPNotFound); + }); +} +},["void","CPEvent"]), new objj_method(sel_getUid("font"), function $_CPMenuBarWindow__font(self, _cmd) +{ with(self) +{ + objj_msgSend(CPFont, "systemFontOfSize:", 12.0); +} +},["CPFont"]), new objj_method(sel_getUid("tile"), function $_CPMenuBarWindow__tile(self, _cmd) +{ with(self) +{ + var items = objj_msgSend(_menu, "itemArray"), + index = 0, + count = items.length, + + x = MENUBAR_LEFT_MARGIN, + y = 0.0, + isLeftAligned = YES; + + for (; index < count; ++index) + { + var item = items[index]; + + if (objj_msgSend(item, "isSeparatorItem")) + { + x = CGRectGetWidth(objj_msgSend(self, "frame")) - MENUBAR_RIGHT_MARGIN; + isLeftAligned = NO; + + continue; + } + + if (objj_msgSend(item, "isHidden")) + continue; + + var menuItemView = objj_msgSend(item, "_menuItemView"), + frame = objj_msgSend(menuItemView, "frame"); + + if (isLeftAligned) + { + objj_msgSend(menuItemView, "setFrame:", CGRectMake(x, 0.0, CGRectGetWidth(frame), MENUBAR_HEIGHT)); + + x += CGRectGetWidth(objj_msgSend(menuItemView, "frame")); + } + else + { + objj_msgSend(menuItemView, "setFrame:", CGRectMake(x - CGRectGetWidth(frame), 0.0, CGRectGetWidth(frame), MENUBAR_HEIGHT)); + + x = CGRectGetMinX(objj_msgSend(menuItemView, "frame")); + } + } + + var bounds = objj_msgSend(objj_msgSend(self, "contentView"), "bounds"), + titleFrame = objj_msgSend(_titleField, "frame"); + + if (objj_msgSend(_iconImageView, "isHidden")) + objj_msgSend(_titleField, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - CGRectGetWidth(titleFrame)) / 2.0, (CGRectGetHeight(bounds) - CGRectGetHeight(titleFrame)) / 2.0)); + else + { + var iconFrame = objj_msgSend(_iconImageView, "frame"), + iconWidth = CGRectGetWidth(iconFrame), + totalWidth = iconWidth + CGRectGetWidth(titleFrame); + + objj_msgSend(_iconImageView, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - totalWidth) / 2.0, (CGRectGetHeight(bounds) - CGRectGetHeight(iconFrame)) / 2.0)); + objj_msgSend(_titleField, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - totalWidth) / 2.0 + iconWidth, (CGRectGetHeight(bounds) - CGRectGetHeight(titleFrame)) / 2.0)); + } +} +},["void"]), new objj_method(sel_getUid("setFrame:display:animate:"), function $_CPMenuBarWindow__setFrame_display_animate_(self, _cmd, aRect, shouldDisplay, shouldAnimate) +{ with(self) +{ + var size = objj_msgSend(self, "frame").size; + + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuBarWindow").super_class }, "setFrame:display:animate:", aRect, shouldDisplay, shouldAnimate); + + if (!(size.width == aRect.size.width && size.height == aRect.size.height)) + objj_msgSend(self, "tile"); +} +},["void","CGRect","BOOL","BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPMenuBarWindow__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPMenuBarWindow, "class")) + return; + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + _CPMenuBarWindowFont = objj_msgSend(CPFont, "boldSystemFontOfSize:", 12.0); +} +},["void"]), new objj_method(sel_getUid("font"), function $_CPMenuBarWindow__font(self, _cmd) +{ with(self) +{ + return _CPMenuBarWindowFont; +} +},["CPFont"])]); +} + +{ +var the_class = objj_getClass("_CPMenuBarWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPMenuBarWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("isMenuBar"), function $_CPMenuBarWindow__isMenuBar(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("globalFrame"), function $_CPMenuBarWindow__globalFrame(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "frame"); +} +},["CGRect"]), new objj_method(sel_getUid("scrollingStateForPoint:"), function $_CPMenuBarWindow__scrollingStateForPoint_(self, _cmd, aGlobalLocation) +{ with(self) +{ + return _CPMenuManagerScrollingStateNone; +} +},["_CPManagerScrollingState","CGPoint"]), new objj_method(sel_getUid("itemIndexAtPoint:"), function $_CPMenuBarWindow__itemIndexAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var items = objj_msgSend(_menu, "itemArray"), + index = items.length; + + while (index--) + { + var item = items[index]; + + if (objj_msgSend(item, "isHidden") || objj_msgSend(item, "isSeparatorItem")) + continue; + + if (CGRectContainsPoint(objj_msgSend(self, "rectForItemAtIndex:", index), aPoint)) + return index; + } + + return CPNotFound; +} +},["CPInteger","CGPoint"]), new objj_method(sel_getUid("rectForItemAtIndex:"), function $_CPMenuBarWindow__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + var menuItem = objj_msgSend(_menu, "itemAtIndex:", anIndex === CPNotFound ? 0 : anIndex); + + return objj_msgSend(objj_msgSend(menuItem, "_menuItemView"), "frame"); +} +},["CGRect","CPInteger"])]); +} + +{var the_class = objj_allocateClassPair(_CPMenuView, "_CPMenuBarView"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("rectForItemAtIndex:"), function $_CPMenuBarView__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_menuItemViews[anIndex === CPNotFound ? 0 : anIndex], "frame"); +} +},["CGRect","int"]), new objj_method(sel_getUid("itemIndexAtPoint:"), function $_CPMenuBarView__itemIndexAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + + if (!CGRectContainsPoint(bounds, aPoint)) + return CPNotFound; + + var x = aPoint.x, + low = 0, + high = _visibleMenuItemInfos.length - 1; + + while (low <= high) + { + var middle = FLOOR(low + (high - low) / 2), + info = _visibleMenuItemInfos[middle], + frame = objj_msgSend(info.view, "frame"); + + if (x < CGRectGetMinX(frame)) + high = middle - 1; + + else if (x > CGRectGetMaxX(frame)) + low = middle + 1; + + else + return info.index; + } + + return CPNotFound; +} +},["int","CGPoint"]), new objj_method(sel_getUid("tile"), function $_CPMenuBarView__tile(self, _cmd) +{ with(self) +{ + var items = objj_msgSend(_menu, "itemArray"), + index = 0, + count = items.length, + + x = MENUBAR_LEFT_MARGIN, + y = 0.0, + isLeftAligned = YES; + + for (; index < count; ++index) + { + var item = items[index]; + + if (objj_msgSend(item, "isSeparatorItem")) + { + x = CGRectGetWidth(objj_msgSend(self, "frame")) - MENUBAR_RIGHT_MARGIN; + isLeftAligned = NO; + + continue; + } + + if (objj_msgSend(item, "isHidden")) + continue; + + var menuItemView = objj_msgSend(item, "_menuItemView"), + frame = objj_msgSend(menuItemView, "frame"); + + if (isLeftAligned) + { + objj_msgSend(menuItemView, "setFrameOrigin:", CGPointMake(x, (MENUBAR_HEIGHT - 1.0 - CGRectGetHeight(frame)) / 2.0)); + + x += CGRectGetWidth(objj_msgSend(menuItemView, "frame")) + MENUBAR_MARGIN; + } + else + { + objj_msgSend(menuItemView, "setFrameOrigin:", CGPointMake(x - CGRectGetWidth(frame), (MENUBAR_HEIGHT - 1.0 - CGRectGetHeight(frame)) / 2.0)); + + x = CGRectGetMinX(objj_msgSend(menuItemView, "frame")) - MENUBAR_MARGIN; + } + } + + var bounds = objj_msgSend(objj_msgSend(self, "contentView"), "bounds"), + titleFrame = objj_msgSend(_titleField, "frame"); + + if (objj_msgSend(_iconImageView, "isHidden")) + objj_msgSend(_titleField, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - CGRectGetWidth(titleFrame)) / 2.0, (CGRectGetHeight(bounds) - CGRectGetHeight(titleFrame)) / 2.0)); + else + { + var iconFrame = objj_msgSend(_iconImageView, "frame"), + iconWidth = CGRectGetWidth(iconFrame), + totalWidth = iconWidth + CGRectGetWidth(titleFrame); + + objj_msgSend(_iconImageView, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - totalWidth) / 2.0, (CGRectGetHeight(bounds) - CGRectGetHeight(iconFrame)) / 2.0)); + objj_msgSend(_titleField, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - totalWidth) / 2.0 + iconWidth, (CGRectGetHeight(bounds) - CGRectGetHeight(titleFrame)) / 2.0)); + } +} +},["void"])]); +} + +p;16;_CPMenuManager.jt;13202;@STATIC;1.0;I;21;Foundation/CPObject.jt;13156; + + + + +objj_executeFile("Foundation/CPObject.j", NO); + + +_CPMenuManagerScrollingStateUp = -1, +_CPMenuManagerScrollingStateDown = 1, +_CPMenuManagerScrollingStateNone = 0; + +var STICKY_TIME_INTERVAL = 500; + +var SharedMenuManager = nil; + +{var the_class = objj_allocateClassPair(CPObject, "_CPMenuManager"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_startTime"), new objj_ivar("_scrollingState"), new objj_ivar("_lastGlobalLocation"), new objj_ivar("_lastMouseOverMenuView"), new objj_ivar("_constraintRect"), new objj_ivar("_menuContainerStack"), new objj_ivar("_trackingCallback")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $_CPMenuManager__init(self, _cmd) +{ with(self) +{ + if (SharedMenuManager) + return SharedMenuManager; + + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuManager").super_class }, "init"); +} +},["id"]), new objj_method(sel_getUid("trackingMenuContainer"), function $_CPMenuManager__trackingMenuContainer(self, _cmd) +{ with(self) +{ + return _menuContainerStack[0]; +} +},["id"]), new objj_method(sel_getUid("trackingMenu"), function $_CPMenuManager__trackingMenu(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "trackingMenuContainer"), "menu"); +} +},["CPMenu"]), new objj_method(sel_getUid("beginTracking:menuContainer:constraintRect:callback:"), function $_CPMenuManager__beginTracking_menuContainer_constraintRect_callback_(self, _cmd, anEvent, aMenuContainer, aRect, aCallback) +{ with(self) +{ + var menu = objj_msgSend(aMenuContainer, "menu"); + + CPApp._activeMenu = menu; + + _startTime = objj_msgSend(anEvent, "timestamp"); + _scrollingState = _CPMenuManagerScrollingStateNone; + + _constraintRect = aRect; + _menuContainerStack = [aMenuContainer]; + _trackingCallback = aCallback; + + if (menu === objj_msgSend(CPApp, "mainMenu")) + { + var globalLocation = objj_msgSend(anEvent, "globalLocation"); + + + var menuLocation = objj_msgSend(aMenuContainer, "convertGlobalToBase:", globalLocation); + + + var activeItemIndex = objj_msgSend(aMenuContainer, "itemIndexAtPoint:", menuLocation), + activeItem = activeItemIndex !== CPNotFound ? objj_msgSend(menu, "itemAtIndex:", activeItemIndex) : nil; + + _menuBarButtonItemIndex = activeItemIndex; + _menuBarButtonMenuContainer = aMenuContainer; + + if (objj_msgSend(activeItem, "_isMenuBarButton")) + return objj_msgSend(self, "trackMenuBarButtonEvent:", anEvent); + } + + objj_msgSend(self, "trackEvent:", anEvent); +} +},["void","CPEvent","id","CGRect","Function"]), new objj_method(sel_getUid("trackEvent:"), function $_CPMenuManager__trackEvent_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + trackingMenu = objj_msgSend(self, "trackingMenu"); + + + if (type === CPAppKitDefined) + return objj_msgSend(self, "completeTracking"); + + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackEvent:"), CPPeriodicMask | CPMouseMovedMask | CPLeftMouseDraggedMask | CPLeftMouseUpMask | CPAppKitDefinedMask, nil, nil, YES); + + + var globalLocation = type === CPPeriodic ? _lastGlobalLocation : objj_msgSend(anEvent, "globalLocation"); + + + _lastGlobalLocation = globalLocation; + + + var activeMenuContainer = objj_msgSend(self, "menuContainerForPoint:", globalLocation), + activeMenu = objj_msgSend(activeMenuContainer, "menu"), + menuLocation = objj_msgSend(activeMenuContainer, "convertGlobalToBase:", globalLocation); + + + var activeItemIndex = activeMenuContainer ? objj_msgSend(activeMenuContainer, "itemIndexAtPoint:", menuLocation) : CPNotFound, + activeItem = activeItemIndex !== CPNotFound ? objj_msgSend(activeMenu, "itemAtIndex:", activeItemIndex) : nil; + + + if (!objj_msgSend(activeItem, "isEnabled") || objj_msgSend(activeItem, "_isMenuBarButton")) + { + activeItemIndex = CPNotFound; + activeItem = nil; + } + + var mouseOverMenuView = objj_msgSend(activeItem, "view"); + + if (type === CPPeriodic) + { + if (_scrollingState === _CPMenuManagerScrollingStateUp) + objj_msgSend(activeMenuContainer, "scrollUp"); + + else if (_scrollingState === _CPMenuManagerScrollingStateDown) + objj_msgSend(activeMenuContainer, "scrollDown"); + } + + + if (mouseOverMenuView) + { + if (!_lastMouseOverMenuView) + objj_msgSend(activeMenu, "_highlightItemAtIndex:", CPNotFound); + + if (_lastMouseOverMenuView != mouseOverMenuView) + { + objj_msgSend(mouseOverMenuView, "mouseExited:", anEvent); + + objj_msgSend(_lastMouseOverMenuView, "mouseEntered:", anEvent); + + _lastMouseOverMenuView = mouseOverMenuView; + } + + var menuContainerWindow = activeMenuContainer; + + if (!objj_msgSend(menuContainerWindow, "isKindOfClass:", objj_msgSend(CPWindow, "class"))) + menuContainerWindow = objj_msgSend(menuContainerWindow, "window"); + + objj_msgSend(menuContainerWindow, "sendEvent:", objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", type, menuLocation, objj_msgSend(anEvent, "modifierFlags"), objj_msgSend(anEvent, "timestamp"), menuContainerWindow, nil, 0, objj_msgSend(anEvent, "clickCount"), objj_msgSend(anEvent, "pressure"))); + } + else + { + if (_lastMouseOverMenuView) + { + objj_msgSend(_lastMouseOverMenuView, "mouseExited:", anEvent); + _lastMouseOverMenuView = nil; + } + + objj_msgSend(activeMenu, "_highlightItemAtIndex:", activeItemIndex); + + if (type === CPMouseMoved || type === CPLeftMouseDragged || type === CPLeftMouseDown) + { + var oldScrollingState = _scrollingState; + + _scrollingState = objj_msgSend(activeMenuContainer, "scrollingStateForPoint:", globalLocation); + + if (_scrollingState !== oldScrollingState) + { + if (_scrollingState === _CPMenuManagerScrollingStateNone) + objj_msgSend(CPEvent, "stopPeriodicEvents"); + + else if (oldScrollingState === _CPMenuManagerScrollingStateNone) + objj_msgSend(CPEvent, "startPeriodicEventsAfterDelay:withPeriod:", 0.0, 0.04); + } + } + else if (type === CPLeftMouseUp && (objj_msgSend(anEvent, "timestamp") - _startTime > STICKY_TIME_INTERVAL)) + objj_msgSend(trackingMenu, "cancelTracking"); + } + + + if (objj_msgSend(activeItem, "hasSubmenu")) + { + var activeItemRect = objj_msgSend(activeMenuContainer, "rectForItemAtIndex:", activeItemIndex); + + if (objj_msgSend(activeMenuContainer, "isMenuBar")) + var newMenuOrigin = CGPointMake(CGRectGetMinX(activeItemRect), CGRectGetMaxY(activeItemRect)); + else + var newMenuOrigin = CGPointMake(CGRectGetMaxX(activeItemRect), CGRectGetMinY(activeItemRect)); + + newMenuOrigin = objj_msgSend(activeMenuContainer, "convertBaseToGlobal:", newMenuOrigin); + + objj_msgSend(self, "showMenu:fromMenu:atPoint:", objj_msgSend(activeItem, "submenu"), objj_msgSend(activeItem, "menu"), newMenuOrigin); + } + + + + else + objj_msgSend(self, "showMenu:fromMenu:atPoint:", nil, activeMenu, CGPointMakeZero()); +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackMenuBarButtonEvent:"), function $_CPMenuManager__trackMenuBarButtonEvent_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + + if (type === CPAppKitDefined) + return objj_msgSend(self, "completeTracking"); + + var globalLocation = objj_msgSend(anEvent, "globalLocation"); + + + var menu = objj_msgSend(self, "trackingMenu"), + trackingMenuContainer = objj_msgSend(self, "trackingMenuContainer"), + menuLocation = objj_msgSend(trackingMenuContainer, "convertGlobalToBase:", globalLocation); + + if (objj_msgSend(trackingMenuContainer, "itemIndexAtPoint:", menuLocation) === _menuBarButtonItemIndex) + objj_msgSend(menu, "_highlightItemAtIndex:", _menuBarButtonItemIndex); + + else + objj_msgSend(menu, "_highlightItemAtIndex:", CPNotFound); + + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackMenuBarButtonEvent:"), CPPeriodicMask | CPMouseMovedMask | CPLeftMouseDraggedMask | CPLeftMouseUpMask | CPAppKitDefinedMask, nil, nil, YES); + + if (type === CPLeftMouseUp) + objj_msgSend(menu, "cancelTracking"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("completeTracking"), function $_CPMenuManager__completeTracking(self, _cmd) +{ with(self) +{ + var trackingMenu = objj_msgSend(self, "trackingMenu"); + + + objj_msgSend(CPEvent, "stopPeriodicEvents"); + + + var highlightedItem = objj_msgSend(trackingMenu, "highlightedItem"); + + + objj_msgSend(self, "showMenu:fromMenu:atPoint:", nil, trackingMenu, nil); + + var delegate = objj_msgSend(trackingMenu, "delegate"); + + if (objj_msgSend(delegate, "respondsToSelector:", sel_getUid("menuDidClose:"))) + objj_msgSend(delegate, "menuDidClose:", trackingMenu); + + if (_trackingCallback) + _trackingCallback(objj_msgSend(self, "trackingMenuContainer"), trackingMenu); + + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPMenuDidEndTrackingNotification, trackingMenu); + + CPApp._activeMenu = nil; +} +},["void"]), new objj_method(sel_getUid("menuContainerForPoint:"), function $_CPMenuManager__menuContainerForPoint_(self, _cmd, aGlobalLocation) +{ with(self) +{ + var count = objj_msgSend(_menuContainerStack, "count"), + firstMenuContainer = _menuContainerStack[0]; + + + if (count === 1) + return firstMenuContainer; + + var firstMenuWindowIndex = 0, + lastMenuWindowIndex = count - 1; + + + if (objj_msgSend(firstMenuContainer, "isMenuBar")) + { + if (CGRectContainsPoint(objj_msgSend(firstMenuContainer, "globalFrame"), aGlobalLocation)) + return firstMenuContainer; + + firstMenuWindowIndex = 1; + } + + var index = count, + x = aGlobalLocation.x, + closerDeltaX = Infinity, + closerMenuContainer = nil; + + while (index-- > firstMenuWindowIndex) + { + var menuContainer = _menuContainerStack[index], + menuContainerFrame = objj_msgSend(menuContainer, "globalFrame"), + menuContainerMinX = (menuContainerFrame.origin.x), + menuContainerMaxX = (menuContainerFrame.origin.x + menuContainerFrame.size.width); + + + if (x < menuContainerMaxX && x >= menuContainerMinX) + return menuContainer; + + + if (index === firstMenuWindowIndex || index === lastMenuWindowIndex) + { + var deltaX = ABS(x < menuContainerMinX ? menuContainerMinX - x : menuContainerMaxX - x); + + if (deltaX < closerDeltaX) + { + closerMenuContainer = menuContainer; + closerDeltaX = deltaX; + } + } + } + + return closerMenuContainer; +} +},["id","float"]), new objj_method(sel_getUid("showMenu:fromMenu:atPoint:"), function $_CPMenuManager__showMenu_fromMenu_atPoint_(self, _cmd, newMenu, baseMenu, aGlobalLocation) +{ with(self) +{ + var count = _menuContainerStack.length, + index = count; + + + while (index--) + { + var menuContainer = _menuContainerStack[index], + menu = objj_msgSend(menuContainer, "menu"); + + + if (menu === baseMenu) + break; + + + if (menu === newMenu) + return objj_msgSend(newMenu, "_highlightItemAtIndex:", CPNotFound); + + objj_msgSend(menuContainer, "orderOut:", self); + objj_msgSend(menuContainer, "setMenu:", nil); + + objj_msgSend(_CPMenuWindow, "poolMenuWindow:", menuContainer); + objj_msgSend(_menuContainerStack, "removeObjectAtIndex:", index); + } + + if (!newMenu) + return; + + + objj_msgSend(newMenu, "_highlightItemAtIndex:", CPNotFound); + + var menuWindow = objj_msgSend(_CPMenuWindow, "menuWindowWithMenu:font:", newMenu, objj_msgSend(_menuContainerStack[0], "font")); + + objj_msgSend(_menuContainerStack, "addObject:", menuWindow); + + objj_msgSend(menuWindow, "setConstraintRect:", _constraintRect); + + + if (baseMenu === objj_msgSend(self, "trackingMenu") && objj_msgSend(objj_msgSend(self, "trackingMenuContainer"), "isMenuBar")) + objj_msgSend(menuWindow, "setBackgroundStyle:", _CPMenuWindowMenuBarBackgroundStyle); + else + objj_msgSend(menuWindow, "setBackgroundStyle:", _CPMenuWindowPopUpBackgroundStyle); + + objj_msgSend(menuWindow, "setFrameOrigin:", aGlobalLocation); + objj_msgSend(menuWindow, "orderFront:", self); +} +},["void","CPMenu","CPMenu","CGPoint"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sharedMenuManager"), function $_CPMenuManager__sharedMenuManager(self, _cmd) +{ with(self) +{ + if (!SharedMenuManager) + SharedMenuManager = objj_msgSend(objj_msgSend(_CPMenuManager, "alloc"), "init"); + + return SharedMenuManager; +} +},["_CPMenuManager"])]); +} + +p;15;_CPMenuWindow.jt;24240;@STATIC;1.0;t;24220; + + + + + +var _CPMenuWindowPool = [], + _CPMenuWindowPoolCapacity = 5, + + _CPMenuWindowBackgroundColors = []; + +_CPMenuWindowMenuBarBackgroundStyle = 0; +_CPMenuWindowPopUpBackgroundStyle = 1; +_CPMenuWindowAttachedMenuBackgroundStyle = 2; + +var STICKY_TIME_INTERVAL = 500, + + TOP_MARGIN = 5.0, + LEFT_MARGIN = 1.0, + RIGHT_MARGIN = 1.0, + BOTTOM_MARGIN = 5.0, + + SCROLL_INDICATOR_HEIGHT = 16.0; + + + + +{var the_class = objj_allocateClassPair(CPWindow, "_CPMenuWindow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuView"), new objj_ivar("_menuClipView"), new objj_ivar("_moreAboveView"), new objj_ivar("_moreBelowView"), new objj_ivar("_unconstrainedFrame"), new objj_ivar("_constraintRect")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithContentRect:styleMask:"), function $_CPMenuWindow__initWithContentRect_styleMask_(self, _cmd, aRect, aStyleMask) +{ with(self) +{ + _constraintRect = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _unconstrainedFrame = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "initWithContentRect:styleMask:", aRect, CPBorderlessWindowMask); + + if (self) + { + objj_msgSend(self, "setLevel:", CPPopUpMenuWindowLevel); + objj_msgSend(self, "setHasShadow:", YES); + objj_msgSend(self, "setShadowStyle:", CPMenuWindowShadowStyle); + objj_msgSend(self, "setAcceptsMouseMovedEvents:", YES); + + var contentView = objj_msgSend(self, "contentView"); + + _menuView = objj_msgSend(objj_msgSend(_CPMenuView, "alloc"), "initWithFrame:", CGRectMakeZero()); + + _menuClipView = objj_msgSend(objj_msgSend(CPClipView, "alloc"), "initWithFrame:", CGRectMake(LEFT_MARGIN, TOP_MARGIN, 0.0, 0.0)); + objj_msgSend(_menuClipView, "setDocumentView:", _menuView); + + objj_msgSend(contentView, "addSubview:", _menuClipView); + + _moreAboveView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + + objj_msgSend(_moreAboveView, "setImage:", _CPMenuWindowMoreAboveImage); + objj_msgSend(_moreAboveView, "setFrameSize:", objj_msgSend(_CPMenuWindowMoreAboveImage, "size")); + + objj_msgSend(contentView, "addSubview:", _moreAboveView); + + _moreBelowView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + + objj_msgSend(_moreBelowView, "setImage:", _CPMenuWindowMoreBelowImage); + objj_msgSend(_moreBelowView, "setFrameSize:", objj_msgSend(_CPMenuWindowMoreBelowImage, "size")); + + objj_msgSend(contentView, "addSubview:", _moreBelowView); + + objj_msgSend(self, "setShadowStyle:", CPWindowShadowStyleMenu); + } + + return self; +} +},["id","CGRect","unsigned"]), new objj_method(sel_getUid("setFont:"), function $_CPMenuWindow__setFont_(self, _cmd, aFont) +{ with(self) +{ + objj_msgSend(_menuView, "setFont:", aFont); +} +},["void","CPFont"]), new objj_method(sel_getUid("font"), function $_CPMenuWindow__font(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menuView, "font"); +} +},["CPFont"]), new objj_method(sel_getUid("setBackgroundStyle:"), function $_CPMenuWindow__setBackgroundStyle_(self, _cmd, aBackgroundStyle) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(objj_msgSend(self, "class"), "backgroundColorForBackgroundStyle:", aBackgroundStyle)); +} +},["void","_CPMenuWindowBackgroundStyle"]), new objj_method(sel_getUid("setMenu:"), function $_CPMenuWindow__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + objj_msgSend(aMenu, "_setMenuWindow:", self); + objj_msgSend(_menuView, "setMenu:", aMenu); + + var menuViewSize = objj_msgSend(_menuView, "frame").size; + + objj_msgSend(self, "setFrameSize:", CGSizeMake(LEFT_MARGIN + menuViewSize.width + RIGHT_MARGIN, TOP_MARGIN + menuViewSize.height + BOTTOM_MARGIN)); + + objj_msgSend(_menuView, "scrollPoint:", CGPointMake(0.0, 0.0)); + objj_msgSend(_menuClipView, "setFrame:", CGRectMake(LEFT_MARGIN, TOP_MARGIN, menuViewSize.width, menuViewSize.height)); +} +},["void","CPMenu"]), new objj_method(sel_getUid("setMinWidth:"), function $_CPMenuWindow__setMinWidth_(self, _cmd, aWidth) +{ with(self) +{ + var size = objj_msgSend(self, "unconstrainedFrame").size; + + objj_msgSend(self, "setFrameSize:", CGSizeMake(MAX(size.width, aWidth), size.height)); +} +},["void","float"]), new objj_method(sel_getUid("menu"), function $_CPMenuWindow__menu(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menuView, "menu"); +} +},["CPMenu"]), new objj_method(sel_getUid("orderFront:"), function $_CPMenuWindow__orderFront_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "setFrame:", _unconstrainedFrame); + + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "orderFront:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("setConstraintRect:"), function $_CPMenuWindow__setConstraintRect_(self, _cmd, aRect) +{ with(self) +{ + _constraintRect = aRect; + + objj_msgSend(self, "setFrame:", _unconstrainedFrame); +} +},["void","CGRect"]), new objj_method(sel_getUid("unconstrainedFrame"), function $_CPMenuWindow__unconstrainedFrame(self, _cmd) +{ with(self) +{ + return { origin: { x:_unconstrainedFrame.origin.x, y:_unconstrainedFrame.origin.y }, size: { width:_unconstrainedFrame.size.width, height:_unconstrainedFrame.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("setFrameOrigin:"), function $_CPMenuWindow__setFrameOrigin_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "setFrame:", { origin: { x:aPoint.x, y:aPoint.y }, size: { width:(_unconstrainedFrame.size.width), height:(_unconstrainedFrame.size.height) } }); +} +},["void","CGPoint"]), new objj_method(sel_getUid("setFrameSize:"), function $_CPMenuWindow__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "setFrame:", { origin: { x:(_unconstrainedFrame.origin.x), y:(_unconstrainedFrame.origin.y) }, size: { width:aSize.width, height:aSize.height } }); +} +},["void","CGSize"]), new objj_method(sel_getUid("setFrame:display:animate:"), function $_CPMenuWindow__setFrame_display_animate_(self, _cmd, aFrame, shouldDisplay, shouldAnimate) +{ with(self) +{ + + + _unconstrainedFrame = { origin: { x:aFrame.origin.x, y:aFrame.origin.y }, size: { width:aFrame.size.width, height:aFrame.size.height } }; + + var constrainedFrame = CGRectIntersection(_unconstrainedFrame, _constraintRect); + + + + constrainedFrame.origin.x = CGRectGetMinX(_unconstrainedFrame); + constrainedFrame.size.width = CGRectGetWidth(_unconstrainedFrame); + + if (CGRectGetWidth(constrainedFrame) > CGRectGetWidth(_constraintRect)) + constrainedFrame.size.width = CGRectGetWidth(_constraintRect); + + if (CGRectGetMaxX(constrainedFrame) > CGRectGetMaxX(_constraintRect)) + constrainedFrame.origin.x -= CGRectGetMaxX(constrainedFrame) - CGRectGetMaxX(_constraintRect); + + if (CGRectGetMinX(constrainedFrame) < CGRectGetMinX(_constraintRect)) + constrainedFrame.origin.x = CGRectGetMinX(_constraintRect); + + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "setFrame:display:animate:", constrainedFrame, shouldDisplay, shouldAnimate); + + + var menuViewOrigin = CGPointMake(CGRectGetMinX(aFrame) + LEFT_MARGIN, CGRectGetMinY(aFrame) + TOP_MARGIN), + moreAbove = menuViewOrigin.y < CGRectGetMinY(constrainedFrame) + TOP_MARGIN, + moreBelow = menuViewOrigin.y + CGRectGetHeight(objj_msgSend(_menuView, "frame")) > CGRectGetMaxY(constrainedFrame) - BOTTOM_MARGIN, + + topMargin = TOP_MARGIN, + bottomMargin = BOTTOM_MARGIN, + + contentView = objj_msgSend(self, "contentView"), + bounds = objj_msgSend(contentView, "bounds"); + + if (moreAbove) + { + topMargin += SCROLL_INDICATOR_HEIGHT; + + var frame = objj_msgSend(_moreAboveView, "frame"); + + objj_msgSend(_moreAboveView, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - CGRectGetWidth(frame)) / 2.0, (TOP_MARGIN + SCROLL_INDICATOR_HEIGHT - CGRectGetHeight(frame)) / 2.0)); + } + + objj_msgSend(_moreAboveView, "setHidden:", !moreAbove); + + if (moreBelow) + { + bottomMargin += SCROLL_INDICATOR_HEIGHT; + + objj_msgSend(_moreBelowView, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - CGRectGetWidth(objj_msgSend(_moreBelowView, "frame"))) / 2.0, CGRectGetHeight(bounds) - SCROLL_INDICATOR_HEIGHT - BOTTOM_MARGIN)); + } + + objj_msgSend(_moreBelowView, "setHidden:", !moreBelow); + + var clipFrame = CGRectMake(LEFT_MARGIN, topMargin, CGRectGetWidth(constrainedFrame) - LEFT_MARGIN - RIGHT_MARGIN, CGRectGetHeight(constrainedFrame) - topMargin - bottomMargin) + + objj_msgSend(_menuClipView, "setFrame:", clipFrame); + objj_msgSend(_menuView, "setFrameSize:", CGSizeMake(CGRectGetWidth(clipFrame), CGRectGetHeight(objj_msgSend(_menuView, "frame")))); + + objj_msgSend(_menuView, "scrollPoint:", CGPointMake(0.0, objj_msgSend(self, "convertBaseToGlobal:", clipFrame.origin).y - menuViewOrigin.y)); +} +},["void","CGRect","BOOL","BOOL"]), new objj_method(sel_getUid("hasMinimumNumberOfVisibleItems"), function $_CPMenuWindow__hasMinimumNumberOfVisibleItems(self, _cmd) +{ with(self) +{ + var visibleRect = objj_msgSend(_menuView, "visibleRect"); + + + if (CGRectIsEmpty(visibleRect)) + return NO; + + var numberOfUnhiddenItems = objj_msgSend(_menuView, "numberOfUnhiddenItems"), + minimumNumberOfVisibleItems = MIN(numberOfUnhiddenItems, 3), + count = 0, + index = objj_msgSend(_menuView, "itemIndexAtPoint:", objj_msgSend(_menuView, "convertPoint:fromView:", objj_msgSend(_menuClipView, "frame").origin, nil)); + + for (; index < numberOfUnhiddenItems && count < minimumNumberOfVisibleItems; ++index) + { + var itemRect = objj_msgSend(_menuView, "rectForUnhiddenItemAtIndex:", index), + visibleItemRect = CGRectIntersection(visibleRect, itemRect); + + + if (CGRectIsEmpty(visibleItemRect)) + break; + + + if (CGRectEqualToRect(visibleItemRect, itemRect)) + ++count; + } + + return count >= minimumNumberOfVisibleItems; +} +},["BOOL"]), new objj_method(sel_getUid("canScrollUp"), function $_CPMenuWindow__canScrollUp(self, _cmd) +{ with(self) +{ + return !objj_msgSend(_moreAboveView, "isHidden"); +} +},["BOOL"]), new objj_method(sel_getUid("canScrollDown"), function $_CPMenuWindow__canScrollDown(self, _cmd) +{ with(self) +{ + return !objj_msgSend(_moreBelowView, "isHidden"); +} +},["BOOL"]), new objj_method(sel_getUid("canScroll"), function $_CPMenuWindow__canScroll(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "canScrollUp") || objj_msgSend(self, "canScrollDown"); +} +},["BOOL"]), new objj_method(sel_getUid("scrollUp"), function $_CPMenuWindow__scrollUp(self, _cmd) +{ with(self) +{ + if (CGRectGetMinY(_unconstrainedFrame) >= CGRectGetMinY(_constraintRect)) + return; + + _unconstrainedFrame.origin.y += 10; + + objj_msgSend(self, "setFrame:", _unconstrainedFrame); +} +},["void"]), new objj_method(sel_getUid("scrollDown"), function $_CPMenuWindow__scrollDown(self, _cmd) +{ with(self) +{ + if (CGRectGetMaxY(_unconstrainedFrame) <= CGRectGetHeight(_constraintRect)) + return; + + _unconstrainedFrame.origin.y -= 10; + + objj_msgSend(self, "setFrame:", _unconstrainedFrame); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("menuWindowWithMenu:font:"), function $_CPMenuWindow__menuWindowWithMenu_font_(self, _cmd, aMenu, aFont) +{ with(self) +{ + var menuWindow = nil; + + if (_CPMenuWindowPool.length) + { + menuWindow = _CPMenuWindowPool.pop(); + + + objj_msgSend(menuWindow, "setFrameOrigin:", CGPointMakeZero()); + } + else + menuWindow = objj_msgSend(objj_msgSend(_CPMenuWindow, "alloc"), "init"); + + objj_msgSend(menuWindow, "setFont:", aFont); + objj_msgSend(menuWindow, "setMenu:", aMenu); + objj_msgSend(menuWindow, "setMinWidth:", objj_msgSend(aMenu, "minimumWidth")); + + return menuWindow; +} +},["id","CPMenu","CPFont"]), new objj_method(sel_getUid("poolMenuWindow:"), function $_CPMenuWindow__poolMenuWindow_(self, _cmd, aMenuWindow) +{ with(self) +{ + if (!aMenuWindow || _CPMenuWindowPool.length >= _CPMenuWindowPoolCapacity) + return; + + _CPMenuWindowPool.push(aMenuWindow); +} +},["void","_CPMenuWindow"]), new objj_method(sel_getUid("initialize"), function $_CPMenuWindow__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPMenuWindow, "class")) + return; + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + _CPMenuWindowMoreAboveImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowMoreAbove.png"), CGSizeMake(38.0, 18.0)); + _CPMenuWindowMoreBelowImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowMoreBelow.png"), CGSizeMake(38.0, 18.0)); +} +},["void"]), new objj_method(sel_getUid("_standardLeftMargin"), function $_CPMenuWindow___standardLeftMargin(self, _cmd) +{ with(self) +{ + return LEFT_MARGIN; +} +},["float"]), new objj_method(sel_getUid("backgroundColorForBackgroundStyle:"), function $_CPMenuWindow__backgroundColorForBackgroundStyle_(self, _cmd, aBackgroundStyle) +{ with(self) +{ + var color = _CPMenuWindowBackgroundColors[aBackgroundStyle]; + + if (!color) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(self, "class")); + + if (aBackgroundStyle == _CPMenuWindowPopUpBackgroundStyle) + color = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded0.png"), CGSizeMake(4.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow1.png"), CGSizeMake(1.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded2.png"), CGSizeMake(4.0, 4.0)), + + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow3.png"), CGSizeMake(4.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow4.png"), CGSizeMake(1.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow5.png"), CGSizeMake(4.0, 1.0)), + + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded6.png"), CGSizeMake(4.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow7.png"), CGSizeMake(1.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded8.png"), CGSizeMake(4.0, 4.0)) + ])); + + else if (aBackgroundStyle == _CPMenuWindowMenuBarBackgroundStyle) + color = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow3.png"), CGSizeMake(4.0, 0.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow4.png"), CGSizeMake(1.0, 0.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow5.png"), CGSizeMake(4.0, 0.0)), + + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow3.png"), CGSizeMake(4.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow4.png"), CGSizeMake(1.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow5.png"), CGSizeMake(4.0, 1.0)), + + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded6.png"), CGSizeMake(4.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow7.png"), CGSizeMake(1.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded8.png"), CGSizeMake(4.0, 4.0)) + ])); + + _CPMenuWindowBackgroundColors[aBackgroundStyle] = color; + } + + return color; +} +},["CPColor","_CPMenuWindowBackgroundStyle"])]); +} + +{ +var the_class = objj_getClass("_CPMenuWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPMenuWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("globalFrame"), function $_CPMenuWindow__globalFrame(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "frame"); +} +},["CGRect"]), new objj_method(sel_getUid("isMenuBar"), function $_CPMenuWindow__isMenuBar(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("scrollingStateForPoint:"), function $_CPMenuWindow__scrollingStateForPoint_(self, _cmd, aGlobalLocation) +{ with(self) +{ + var frame = objj_msgSend(self, "frame"); + + if (!objj_msgSend(self, "canScroll")) + return _CPMenuManagerScrollingStateNone; + + + if (aGlobalLocation.y < CGRectGetMinY(frame) + TOP_MARGIN + SCROLL_INDICATOR_HEIGHT) + return _CPMenuManagerScrollingStateUp; + + + if (aGlobalLocation.y > CGRectGetMaxY(frame) - BOTTOM_MARGIN - SCROLL_INDICATOR_HEIGHT) + return _CPMenuManagerScrollingStateDown; + + return _CPMenuManagerScrollingStateNone; +} +},["_CPManagerScrollingState","CGPoint"]), new objj_method(sel_getUid("deltaYForItemAtIndex:"), function $_CPMenuWindow__deltaYForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return TOP_MARGIN + CGRectGetMinY(objj_msgSend(_menuView, "rectForItemAtIndex:", anIndex)); +} +},["float","int"]), new objj_method(sel_getUid("rectForItemAtIndex:"), function $_CPMenuWindow__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_menuView, "convertRect:toView:", objj_msgSend(_menuView, "rectForItemAtIndex:", anIndex), nil); +} +},["CGPoint","int"]), new objj_method(sel_getUid("itemIndexAtPoint:"), function $_CPMenuWindow__itemIndexAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + + if (!CGRectContainsPoint(objj_msgSend(_menuClipView, "bounds"), objj_msgSend(_menuClipView, "convertPoint:fromView:", aPoint, nil))) + return NO; + + return objj_msgSend(_menuView, "itemIndexAtPoint:", objj_msgSend(_menuView, "convertPoint:fromView:", aPoint, nil)); +} +},["int","CGPoint"])]); +} + + + + + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuItemViews"), new objj_ivar("_visibleMenuItemInfos"), new objj_ivar("_font")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("font"), function $_CPMenuView__font(self, _cmd) +{ with(self) +{ +return _font; +} +},["id"]), +new objj_method(sel_getUid("setFont:"), function $_CPMenuView__setFont_(self, _cmd, newValue) +{ with(self) +{ +_font = newValue; +} +},["void","id"]), new objj_method(sel_getUid("numberOfUnhiddenItems"), function $_CPMenuView__numberOfUnhiddenItems(self, _cmd) +{ with(self) +{ + return _visibleMenuItemInfos.length; +} +},["unsigned"]), new objj_method(sel_getUid("rectForUnhiddenItemAtIndex:"), function $_CPMenuView__rectForUnhiddenItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(self, "rectForItemAtIndex:", _visibleMenuItemInfos[anIndex].index); +} +},["CGRect","int"]), new objj_method(sel_getUid("rectForItemAtIndex:"), function $_CPMenuView__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_menuItemViews[anIndex === CPNotFound ? 0 : anIndex], "frame"); +} +},["CGRect","int"]), new objj_method(sel_getUid("itemIndexAtPoint:"), function $_CPMenuView__itemIndexAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var x = aPoint.x, + bounds = objj_msgSend(self, "bounds"); + + if (x < CGRectGetMinX(bounds) || x > CGRectGetMaxX(bounds)) + return CPNotFound; + + var y = aPoint.y, + low = 0, + high = _visibleMenuItemInfos.length - 1; + + while (low <= high) + { + var middle = FLOOR(low + (high - low) / 2), + info = _visibleMenuItemInfos[middle] + frame = objj_msgSend(info.view, "frame"); + + if (y < CGRectGetMinY(frame)) + high = middle - 1; + + else if (y > CGRectGetMaxY(frame)) + low = middle + 1; + + else + return info.index; + } + + return CPNotFound; +} +},["int","CGPoint"]), new objj_method(sel_getUid("tile"), function $_CPMenuView__tile(self, _cmd) +{ with(self) +{ + objj_msgSend(_menuItemViews, "makeObjectsPerformSelector:", sel_getUid("removeFromSuperview")); + + _menuItemViews = []; + _visibleMenuItemInfos = []; + + var menu = objj_msgSend(self, "menu"); + + if (!menu) + return; + + var items = objj_msgSend(menu, "itemArray"), + index = 0, + count = objj_msgSend(items, "count"), + maxWidth = 0, + y = 0, + showsStateColumn = objj_msgSend(menu, "showsStateColumn"); + + for (; index < count; ++index) + { + var item = items[index], + view = objj_msgSend(item, "_menuItemView"); + + _menuItemViews.push(view); + + if (objj_msgSend(item, "isHidden")) + continue; + + _visibleMenuItemInfos.push({ view:view, index:index }); + + objj_msgSend(view, "setFont:", _font); + objj_msgSend(view, "setShowsStateColumn:", showsStateColumn); + objj_msgSend(view, "synchronizeWithMenuItem"); + + objj_msgSend(view, "setFrameOrigin:", CGPointMake(0.0, y)); + + objj_msgSend(self, "addSubview:", view); + + var size = objj_msgSend(view, "minSize"), + width = size.width; + + if (maxWidth < width) + maxWidth = width; + + y += size.height; + } + + for (index = 0; index < count; ++index) + { + var view = _menuItemViews[index]; + + objj_msgSend(view, "setFrameSize:", CGSizeMake(maxWidth, CGRectGetHeight(objj_msgSend(view, "frame")))); + } + + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(self, "setFrameSize:", CGSizeMake(maxWidth, y)); + objj_msgSend(self, "setAutoresizesSubviews:", YES); +} +},["void"]), new objj_method(sel_getUid("setMenu:"), function $_CPMenuView__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuView").super_class }, "setMenu:", aMenu); + objj_msgSend(self, "tile"); +} +},["void","CPMenu"])]); +} + +p;8;CPMenu.jt;34260;@STATIC;1.0;I;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPString.ji;16;_CPMenuManager.ji;15;CPApplication.ji;12;CPClipView.ji;12;CPMenuItem.ji;9;CPPanel.ji;18;_CPMenuBarWindow.ji;15;_CPMenuWindow.jt;33990;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPNotificationCenter.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("_CPMenuManager.j", YES); +objj_executeFile("CPApplication.j", YES); +objj_executeFile("CPClipView.j", YES); +objj_executeFile("CPMenuItem.j", YES); +objj_executeFile("CPPanel.j", YES); +CPMenuDidAddItemNotification = "CPMenuDidAddItemNotification"; +CPMenuDidChangeItemNotification = "CPMenuDidChangeItemNotification"; +CPMenuDidRemoveItemNotification = "CPMenuDidRemoveItemNotification"; +CPMenuDidEndTrackingNotification = "CPMenuDidEndTrackingNotification"; +var MENUBAR_HEIGHT = 28.0; +var _CPMenuBarVisible = NO, + _CPMenuBarTitle = "", + _CPMenuBarIconImage = nil, + _CPMenuBarIconImageAlphaValue = 1.0, + _CPMenuBarAttributes = nil, + _CPMenuBarSharedWindow = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPMenu"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_supermenu"), new objj_ivar("_title"), new objj_ivar("_name"), new objj_ivar("_font"), new objj_ivar("_minimumWidth"), new objj_ivar("_items"), new objj_ivar("_autoenablesItems"), new objj_ivar("_showsStateColumn"), new objj_ivar("_delegate"), new objj_ivar("_highlightedIndex"), new objj_ivar("_menuWindow")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("menuBarHeight"), function $CPMenu__menuBarHeight(self, _cmd) +{ with(self) +{ + if (self === objj_msgSend(CPApp, "mainMenu")) + return MENUBAR_HEIGHT; + return 0.0; +} +},["float"]), new objj_method(sel_getUid("initWithTitle:"), function $CPMenu__initWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPMenu").super_class }, "init"); + if (self) + { + _title = aTitle; + _items = []; + _autoenablesItems = YES; + _showsStateColumn = YES; + objj_msgSend(self, "setMinimumWidth:", 0); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("init"), function $CPMenu__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithTitle:", ""); +} +},["id"]), new objj_method(sel_getUid("insertItem:atIndex:"), function $CPMenu__insertItem_atIndex_(self, _cmd, aMenuItem, anIndex) +{ with(self) +{ + var menu = objj_msgSend(aMenuItem, "menu"); + if (menu) + if (menu !== self) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Attempted to insert item into menu that was already in another menu."); + else + return; + objj_msgSend(aMenuItem, "setMenu:", self); + objj_msgSend(_items, "insertObject:atIndex:", aMenuItem, anIndex); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPMenuDidAddItemNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anIndex, "CPMenuItemIndex")); +} +},["void","CPMenuItem","unsigned"]), new objj_method(sel_getUid("insertItemWithTitle:action:keyEquivalent:atIndex:"), function $CPMenu__insertItemWithTitle_action_keyEquivalent_atIndex_(self, _cmd, aTitle, anAction, aKeyEquivalent, anIndex) +{ with(self) +{ + var item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", aTitle, anAction, aKeyEquivalent); + objj_msgSend(self, "insertItem:atIndex:", item, anIndex); + return item; +} +},["CPMenuItem","CPString","SEL","CPString","unsigned"]), new objj_method(sel_getUid("addItem:"), function $CPMenu__addItem_(self, _cmd, aMenuItem) +{ with(self) +{ + objj_msgSend(self, "insertItem:atIndex:", aMenuItem, objj_msgSend(_items, "count")); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("addItemWithTitle:action:keyEquivalent:"), function $CPMenu__addItemWithTitle_action_keyEquivalent_(self, _cmd, aTitle, anAction, aKeyEquivalent) +{ with(self) +{ + return objj_msgSend(self, "insertItemWithTitle:action:keyEquivalent:atIndex:", aTitle, anAction, aKeyEquivalent, objj_msgSend(_items, "count")); +} +},["CPMenuItem","CPString","SEL","CPString"]), new objj_method(sel_getUid("removeItem:"), function $CPMenu__removeItem_(self, _cmd, aMenuItem) +{ with(self) +{ + objj_msgSend(self, "removeItemAtIndex:", objj_msgSend(_items, "indexOfObjectIdenticalTo:", aMenuItem)); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("removeItemAtIndex:"), function $CPMenu__removeItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (anIndex < 0 || anIndex >= _items.length) + return; + objj_msgSend(_items[anIndex], "setMenu:", nil); + objj_msgSend(_items, "removeObjectAtIndex:", anIndex); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPMenuDidRemoveItemNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anIndex, "CPMenuItemIndex")); +} +},["void","unsigned"]), new objj_method(sel_getUid("itemChanged:"), function $CPMenu__itemChanged_(self, _cmd, aMenuItem) +{ with(self) +{ + if (objj_msgSend(aMenuItem, "menu") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPMenuDidChangeItemNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", objj_msgSend(_items, "indexOfObjectIdenticalTo:", aMenuItem), "CPMenuItemIndex")); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("itemWithTag:"), function $CPMenu__itemWithTag_(self, _cmd, aTag) +{ with(self) +{ + var index = objj_msgSend(self, "indexOfItemWithTag:", aTag); + if (index == CPNotFound) + return nil; + return _items[index]; +} +},["CPMenuItem","int"]), new objj_method(sel_getUid("itemWithTitle:"), function $CPMenu__itemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + var index = objj_msgSend(self, "indexOfItemWithTitle:", aTitle); + if (index == CPNotFound) + return nil; + return _items[index]; +} +},["CPMenuItem","CPString"]), new objj_method(sel_getUid("itemAtIndex:"), function $CPMenu__itemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_items, "objectAtIndex:", anIndex); +} +},["CPMenuItem","int"]), new objj_method(sel_getUid("numberOfItems"), function $CPMenu__numberOfItems(self, _cmd) +{ with(self) +{ + return objj_msgSend(_items, "count"); +} +},["unsigned"]), new objj_method(sel_getUid("itemArray"), function $CPMenu__itemArray(self, _cmd) +{ with(self) +{ + return _items; +} +},["CPArray"]), new objj_method(sel_getUid("indexOfItem:"), function $CPMenu__indexOfItem_(self, _cmd, aMenuItem) +{ with(self) +{ + if (objj_msgSend(aMenuItem, "menu") !== self) + return CPNotFound; + return objj_msgSend(_items, "indexOfObjectIdenticalTo:", aMenuItem); +} +},["int","CPMenuItem"]), new objj_method(sel_getUid("indexOfItemWithTitle:"), function $CPMenu__indexOfItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + if (objj_msgSend(_items[index], "title") === aTitle) + return index; + return CPNotFound; +} +},["int","CPString"]), new objj_method(sel_getUid("indexOfItemWithTag:"), function $CPMenu__indexOfItemWithTag_(self, _cmd, aTag) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + if (objj_msgSend(_items[index], "tag") == aTag) + return index; + return CPNotFound; +} +},["int","int"]), new objj_method(sel_getUid("indexOfItemWithTarget:andAction:"), function $CPMenu__indexOfItemWithTarget_andAction_(self, _cmd, aTarget, anAction) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + { + var item = _items[index]; + if (objj_msgSend(item, "target") == aTarget && (!anAction || objj_msgSend(item, "action") == anAction)) + return index; + } + return CPNotFound; +} +},["int","id","SEL"]), new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"), function $CPMenu__indexOfItemWithRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + if (objj_msgSend(objj_msgSend(_items[index], "representedObject"), "isEqual:", anObject)) + return index; + return CPNotFound; +} +},["int","id"]), new objj_method(sel_getUid("indexOfItemWithSubmenu:"), function $CPMenu__indexOfItemWithSubmenu_(self, _cmd, aMenu) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + if (objj_msgSend(_items[index], "submenu") == aMenu) + return index; + return CPNotFound; +} +},["int","CPMenu"]), new objj_method(sel_getUid("setSubmenu:forItem:"), function $CPMenu__setSubmenu_forItem_(self, _cmd, aMenu, aMenuItem) +{ with(self) +{ + objj_msgSend(aMenuItem, "setTarget:", aMenuItem); + objj_msgSend(aMenuItem, "setAction:", sel_getUid("submenuAction:")); + objj_msgSend(aMenuItem, "setSubmenu:", aMenu); +} +},["void","CPMenu","CPMenuItem"]), new objj_method(sel_getUid("submenuAction:"), function $CPMenu__submenuAction_(self, _cmd, aSender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("supermenu"), function $CPMenu__supermenu(self, _cmd) +{ with(self) +{ + return _supermenu; +} +},["CPMenu"]), new objj_method(sel_getUid("setSupermenu:"), function $CPMenu__setSupermenu_(self, _cmd, aMenu) +{ with(self) +{ + _supermenu = aMenu; +} +},["void","CPMenu"]), new objj_method(sel_getUid("isTornOff"), function $CPMenu__isTornOff(self, _cmd) +{ with(self) +{ + return !_supermenu || self == objj_msgSend(CPApp, "mainMenu"); +} +},["BOOL"]), new objj_method(sel_getUid("setAutoenablesItems:"), function $CPMenu__setAutoenablesItems_(self, _cmd, aFlag) +{ with(self) +{ + _autoenablesItems = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("autoenablesItems"), function $CPMenu__autoenablesItems(self, _cmd) +{ with(self) +{ + return _autoenablesItems; +} +},["BOOL"]), new objj_method(sel_getUid("update"), function $CPMenu__update(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("setTitle:"), function $CPMenu__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + _title = aTitle; +} +},["void","CPString"]), new objj_method(sel_getUid("title"), function $CPMenu__title(self, _cmd) +{ with(self) +{ + return _title; +} +},["CPString"]), new objj_method(sel_getUid("setMinimumWidth:"), function $CPMenu__setMinimumWidth_(self, _cmd, aMinimumWidth) +{ with(self) +{ + _minimumWidth = aMinimumWidth; +} +},["void","float"]), new objj_method(sel_getUid("minimumWidth"), function $CPMenu__minimumWidth(self, _cmd) +{ with(self) +{ + return _minimumWidth; +} +},["float"]), new objj_method(sel_getUid("_performActionOfHighlightedItemChain"), function $CPMenu___performActionOfHighlightedItemChain(self, _cmd) +{ with(self) +{ + var highlightedItem = objj_msgSend(self, "highlightedItem"); + while (objj_msgSend(highlightedItem, "submenu") && objj_msgSend(highlightedItem, "action") === sel_getUid("submenuAction:")) + highlightedItem = objj_msgSend(objj_msgSend(highlightedItem, "submenu"), "highlightedItem"); + if (highlightedItem && objj_msgSend(highlightedItem, "isEnabled")) + objj_msgSend(CPApp, "sendAction:to:from:", objj_msgSend(highlightedItem, "action"), objj_msgSend(highlightedItem, "target"), highlightedItem); +} +},["void"]), new objj_method(sel_getUid("popUpMenuPositioningItem:atLocation:inView:callback:"), function $CPMenu__popUpMenuPositioningItem_atLocation_inView_callback_(self, _cmd, anItem, aLocation, aView, aCallback) +{ with(self) +{ + objj_msgSend(self, "_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:", anItem, aLocation, aLocation.y, aLocation.y, aView, aCallback); +} +},["void","CPMenuItem","CGPoint","CPView","Function"]), new objj_method(sel_getUid("_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:"), function $CPMenu___popUpMenuPositioningItem_atLocation_topY_bottomY_inView_callback_(self, _cmd, anItem, aLocation, aTopY, aBottomY, aView, aCallback) +{ with(self) +{ + var itemIndex = 0; + if (anItem) + { + itemIndex = objj_msgSend(self, "indexOfItem:", anItem); + if (itemIndex === CPNotFound) + throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, menu item " + + anItem + " is not present in menu " + self; + } + var theWindow = objj_msgSend(aView, "window"); + if (aView && !theWindow) + throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, view is not in any window."; + var delegate = objj_msgSend(self, "delegate"); + if (objj_msgSend(delegate, "respondsToSelector:", sel_getUid("menuWillOpen:"))) + objj_msgSend(delegate, "menuWillOpen:", aMenu); + if (aView) + aLocation = objj_msgSend(theWindow, "convertBaseToGlobal:", objj_msgSend(aView, "convertPoint:toView:", aLocation, nil)); + var menuWindow = objj_msgSend(_CPMenuWindow, "menuWindowWithMenu:font:", self, objj_msgSend(self, "font")); + objj_msgSend(menuWindow, "setBackgroundStyle:", _CPMenuWindowPopUpBackgroundStyle); + if (anItem) + aLocation.y -= objj_msgSend(menuWindow, "deltaYForItemAtIndex:", itemIndex); + var constraintRect = objj_msgSend(CPMenu, "_constraintRectForView:", aView); + objj_msgSend(menuWindow, "setFrameOrigin:", aLocation); + objj_msgSend(menuWindow, "setConstraintRect:", constraintRect); + if (!objj_msgSend(menuWindow, "hasMinimumNumberOfVisibleItems")) + { + var unconstrainedFrame = objj_msgSend(menuWindow, "unconstrainedFrame"), + unconstrainedY = CGRectGetMinY(unconstrainedFrame); + if (unconstrainedY >= CGRectGetMaxY(constraintRect) || objj_msgSend(menuWindow, "canScrollDown")) + { + if (aView) + aTopY = objj_msgSend(theWindow, "convertBaseToGlobal:", objj_msgSend(aView, "convertPoint:toView:", CGPointMake(0.0, aTopY), nil)).y; + unconstrainedFrame.origin.y = MIN(CGRectGetMaxY(constraintRect), aTopY) - CGRectGetHeight(unconstrainedFrame); + } + else if (unconstrainedY < CGRectGetMinY(constraintRect) || objj_msgSend(menuWindow, "canScrollUp")) + { + if (aView) + aBottomY = objj_msgSend(theWindow, "convertBaseToGlobal:", objj_msgSend(aView, "convertPoint:toView:", CGPointMake(0.0, aBottomY), nil)).y; + unconstrainedFrame.origin.y = MAX(CGRectGetMinY(constraintRect), aBottomY); + } + objj_msgSend(menuWindow, "setFrameOrigin:", CGRectIntersection(unconstrainedFrame, constraintRect).origin); + } + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(menuWindow, "setPlatformWindow:", objj_msgSend(objj_msgSend(aView, "window"), "platformWindow")); + objj_msgSend(menuWindow, "orderFront:", self); + objj_msgSend(objj_msgSend(_CPMenuManager, "sharedMenuManager"), "beginTracking:menuContainer:constraintRect:callback:", objj_msgSend(CPApp, "currentEvent"), menuWindow, constraintRect, objj_msgSend(CPMenu, "trackingCallbackWithCallback:", aCallback)); +} +},["void","CPMenuItem","CGPoint","float","float","CPView","Function"]), new objj_method(sel_getUid("setShowsStateColumn:"), function $CPMenu__setShowsStateColumn_(self, _cmd, shouldShowStateColumn) +{ with(self) +{ + _showsStateColumn = shouldShowStateColumn; +} +},["void","BOOL"]), new objj_method(sel_getUid("showsStateColumn"), function $CPMenu__showsStateColumn(self, _cmd) +{ with(self) +{ + return _showsStateColumn; +} +},["BOOL"]), new objj_method(sel_getUid("highlightedItem"), function $CPMenu__highlightedItem(self, _cmd) +{ with(self) +{ + return _highlightedIndex >= 0 ? _items[_highlightedIndex] : nil; +} +},["CPMenuItem"]), new objj_method(sel_getUid("setDelegate:"), function $CPMenu__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPMenu__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("cancelTracking"), function $CPMenu__cancelTracking(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "performSelector:target:argument:order:modes:", sel_getUid("_fireCancelTrackingEvent"), self, nil, 0, [CPDefaultRunLoopMode]); +} +},["void"]), new objj_method(sel_getUid("_fireCancelTrackingEvent"), function $CPMenu___fireCancelTrackingEvent(self, _cmd) +{ with(self) +{ + objj_msgSend(CPApp, "sendEvent:", objj_msgSend(CPEvent, "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", CPAppKitDefined, { x:0.0, y:0.0 }, 0, 0, 0, 0, 0, 0, 0)); + objj_msgSend(_CPDisplayServer, "run"); +} +},["void"]), new objj_method(sel_getUid("_setMenuWindow:"), function $CPMenu___setMenuWindow_(self, _cmd, aMenuWindow) +{ with(self) +{ + _menuWindow = aMenuWindow; +} +},["void","_CPMenuWindow"]), new objj_method(sel_getUid("setFont:"), function $CPMenu__setFont_(self, _cmd, aFont) +{ with(self) +{ + _font = aFont; +} +},["void","CPFont"]), new objj_method(sel_getUid("font"), function $CPMenu__font(self, _cmd) +{ with(self) +{ + return _font; +} +},["CPFont"]), new objj_method(sel_getUid("performKeyEquivalent:"), function $CPMenu__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + if (_autoenablesItems) + objj_msgSend(self, "update"); + var index = 0, + count = _items.length, + characters = objj_msgSend(anEvent, "charactersIgnoringModifiers"), + modifierFlags = objj_msgSend(anEvent, "modifierFlags"); + for(; index < count; ++index) + { + var item = _items[index], + modifierMask = objj_msgSend(item, "keyEquivalentModifierMask"); + if (objj_msgSend(anEvent, "_triggersKeyEquivalent:withModifierMask:", objj_msgSend(item, "keyEquivalent"), objj_msgSend(item, "keyEquivalentModifierMask"))) + { + if (objj_msgSend(item, "isEnabled")) + objj_msgSend(self, "performActionForItemAtIndex:", index); + else + { + } + return YES; + } + if (objj_msgSend(objj_msgSend(item, "submenu"), "performKeyEquivalent:", anEvent)) + return YES; + } + return NO; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("performActionForItemAtIndex:"), function $CPMenu__performActionForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + var item = _items[anIndex]; + objj_msgSend(CPApp, "sendAction:to:from:", objj_msgSend(item, "action"), objj_msgSend(item, "target"), item); +} +},["void","unsigned"]), new objj_method(sel_getUid("_itemIsHighlighted:"), function $CPMenu___itemIsHighlighted_(self, _cmd, aMenuItem) +{ with(self) +{ + return _items[_highlightedIndex] == aMenuItem; +} +},["BOOL","CPMenuItem"]), new objj_method(sel_getUid("_highlightItemAtIndex:"), function $CPMenu___highlightItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (_highlightedIndex === anIndex) + return; + if (_highlightedIndex !== CPNotFound) + objj_msgSend(objj_msgSend(_items[_highlightedIndex], "_menuItemView"), "highlight:", NO); + _highlightedIndex = anIndex; + if (_highlightedIndex !== CPNotFound) + objj_msgSend(objj_msgSend(_items[_highlightedIndex], "_menuItemView"), "highlight:", YES); +} +},["void","int"]), new objj_method(sel_getUid("_setMenuName:"), function $CPMenu___setMenuName_(self, _cmd, aName) +{ with(self) +{ + if (_name === aName) + return; + _name = aName; + if (_name === "CPMainMenu") + objj_msgSend(CPApp, "setMainMenu:", self); +} +},["void","CPString"]), new objj_method(sel_getUid("_menuName"), function $CPMenu___menuName(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("awakeFromCib"), function $CPMenu__awakeFromCib(self, _cmd) +{ with(self) +{ + if (_name === "_CPMainMenu") + { + objj_msgSend(self, "_setMenuName:", "CPMainMenu"); + objj_msgSend(CPMenu, "setMenuBarVisible:", YES); + } +} +},["void"]), new objj_method(sel_getUid("_menuWithName:"), function $CPMenu___menuWithName_(self, _cmd, aName) +{ with(self) +{ + if (aName === _name) + return self; + for (var i = 0, count = objj_msgSend(_items, "count"); i < count; i++) + { + var menu = objj_msgSend(objj_msgSend(_items[i], "submenu"), "_menuWithName:", aName); + if (menu) + return menu; + } + return nil; +} +},["void","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPMenu__initialize(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "class"), "setMenuBarAttributes:", objj_msgSend(CPDictionary, "dictionary")); +} +},["void"]), new objj_method(sel_getUid("menuBarVisible"), function $CPMenu__menuBarVisible(self, _cmd) +{ with(self) +{ + return _CPMenuBarVisible; +} +},["BOOL"]), new objj_method(sel_getUid("setMenuBarVisible:"), function $CPMenu__setMenuBarVisible_(self, _cmd, menuBarShouldBeVisible) +{ with(self) +{ + if (_CPMenuBarVisible === menuBarShouldBeVisible) + return; + _CPMenuBarVisible = menuBarShouldBeVisible; + if (objj_msgSend(CPPlatform, "supportsNativeMainMenu")) + return; + if (menuBarShouldBeVisible) + { + if (!_CPMenuBarSharedWindow) + _CPMenuBarSharedWindow = objj_msgSend(objj_msgSend(_CPMenuBarWindow, "alloc"), "init"); + objj_msgSend(_CPMenuBarSharedWindow, "setMenu:", objj_msgSend(CPApp, "mainMenu")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitle:", _CPMenuBarTitle); + objj_msgSend(_CPMenuBarSharedWindow, "setIconImage:", _CPMenuBarIconImage); + objj_msgSend(_CPMenuBarSharedWindow, "setIconImageAlphaValue:", _CPMenuBarIconImageAlphaValue); + objj_msgSend(_CPMenuBarSharedWindow, "setColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarBackgroundColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTextColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTextColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitleColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTitleColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTextShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTextShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitleShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTitleShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightTextColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightTextColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightTextShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightTextShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "orderFront:", self); + } + else + objj_msgSend(_CPMenuBarSharedWindow, "orderOut:", self); + objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "resizeEvent:", nil); +} +},["void","BOOL"]), new objj_method(sel_getUid("setMenuBarTitle:"), function $CPMenu__setMenuBarTitle_(self, _cmd, aTitle) +{ with(self) +{ + _CPMenuBarTitle = aTitle; + objj_msgSend(_CPMenuBarSharedWindow, "setTitle:", _CPMenuBarTitle); +} +},["void","CPString"]), new objj_method(sel_getUid("menuBarTitle"), function $CPMenu__menuBarTitle(self, _cmd) +{ with(self) +{ + return _CPMenuBarTitle; +} +},["CPString"]), new objj_method(sel_getUid("setMenuBarIconImage:"), function $CPMenu__setMenuBarIconImage_(self, _cmd, anImage) +{ with(self) +{ + _CPMenuBarImage = anImage; + objj_msgSend(_CPMenuBarSharedWindow, "setIconImage:", anImage); +} +},["void","CPImage"]), new objj_method(sel_getUid("menuBarIconImage"), function $CPMenu__menuBarIconImage(self, _cmd) +{ with(self) +{ + return _CPMenuBarImage; +} +},["CPImage"]), new objj_method(sel_getUid("setMenuBarAttributes:"), function $CPMenu__setMenuBarAttributes_(self, _cmd, attributes) +{ with(self) +{ + if (_CPMenuBarAttributes == attributes) + return; + _CPMenuBarAttributes = objj_msgSend(attributes, "copy"); + var textColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarTextColor"), + titleColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarTitleColor"), + textShadowColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarTextShadowColor"), + titleShadowColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarTitleShadowColor"), + highlightColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarHighlightColor"), + highlightTextColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarHighlightTextColor"), + highlightTextShadowColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarHighlightTextShadowColor"); + if (!textColor && titleColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", titleColor, "CPMenuBarTextColor"); + else if (textColor && !titleColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", textColor, "CPMenuBarTitleColor"); + else if (!textColor && !titleColor) + { + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", 0.051, 0.2, 0.275, 1.0), "CPMenuBarTextColor"); + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", 0.051, 0.2, 0.275, 1.0), "CPMenuBarTitleColor"); + } + if (!textShadowColor && titleShadowColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", titleShadowColor, "CPMenuBarTextShadowColor"); + else if (textShadowColor && !titleShadowColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", textShadowColor, "CPMenuBarTitleShadowColor"); + else if (!textShadowColor && !titleShadowColor) + { + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "whiteColor"), "CPMenuBarTextShadowColor"); + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "whiteColor"), "CPMenuBarTitleShadowColor"); + } + if (!highlightColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 94.0/255.0, 130.0/255.0, 186.0/255.0, 1.0), "CPMenuBarHighlightColor"); + if (!highlightTextColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "whiteColor"), "CPMenuBarHighlightTextColor"); + if (!highlightTextShadowColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "blackColor"), "CPMenuBarHighlightTextShadowColor"); + if (_CPMenuBarSharedWindow) + { + objj_msgSend(_CPMenuBarSharedWindow, "setColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarBackgroundColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTextColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTextColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitleColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTitleColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTextShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTextShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitleShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTitleShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightTextColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightTextColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightTextShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightTextShadowColor")); + } +} +},["void","CPDictionary"]), new objj_method(sel_getUid("menuBarAttributes"), function $CPMenu__menuBarAttributes(self, _cmd) +{ with(self) +{ + return _CPMenuBarAttributes; +} +},["CPDictionary"]), new objj_method(sel_getUid("_setMenuBarIconImageAlphaValue:"), function $CPMenu___setMenuBarIconImageAlphaValue_(self, _cmd, anAlphaValue) +{ with(self) +{ + _CPMenuBarIconImageAlphaValue = anAlphaValue; + objj_msgSend(_CPMenuBarSharedWindow, "setIconImageAlphaValue:", anAlphaValue); +} +},["void","float"]), new objj_method(sel_getUid("menuBarHeight"), function $CPMenu__menuBarHeight(self, _cmd) +{ with(self) +{ + return MENUBAR_HEIGHT; +} +},["float"]), new objj_method(sel_getUid("_constraintRectForView:"), function $CPMenu___constraintRectForView_(self, _cmd, aView) +{ with(self) +{ + if (objj_msgSend(CPPlatform, "isBrowser")) + return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(aView, "window"), "platformWindow"), "contentBounds"), 5.0, 5.0); + return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(aView, "window"), "screen"), "visibleFrame"), 5.0, 5.0); +} +},["CGRect","CPView"]), new objj_method(sel_getUid("trackingCallbackWithCallback:"), function $CPMenu__trackingCallbackWithCallback_(self, _cmd, aCallback) +{ with(self) +{ + return function(aMenuWindow, aMenu) + { + objj_msgSend(aMenuWindow, "setMenu:", nil); + objj_msgSend(aMenuWindow, "orderOut:", self); + objj_msgSend(_CPMenuWindow, "poolMenuWindow:", aMenuWindow); + if (aCallback) + aCallback(aMenu); + objj_msgSend(aMenu, "_performActionOfHighlightedItemChain"); + } +} +},["Function","Function"]), new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:"), function $CPMenu__popUpContextMenu_withEvent_forView_(self, _cmd, aMenu, anEvent, aView) +{ with(self) +{ + objj_msgSend(self, "popUpContextMenu:withEvent:forView:withFont:", aMenu, anEvent, aView, nil); +} +},["void","CPMenu","CPEvent","CPView"]), new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:withFont:"), function $CPMenu__popUpContextMenu_withEvent_forView_withFont_(self, _cmd, aMenu, anEvent, aView, aFont) +{ with(self) +{ + var delegate = objj_msgSend(aMenu, "delegate"); + if (objj_msgSend(delegate, "respondsToSelector:", sel_getUid("menuWillOpen:"))) + objj_msgSend(delegate, "menuWillOpen:", aMenu); + if (!aFont) + aFont = objj_msgSend(CPFont, "systemFontOfSize:", 12.0); + var theWindow = objj_msgSend(aView, "window"), + menuWindow = objj_msgSend(_CPMenuWindow, "menuWindowWithMenu:font:", aMenu, aFont); + objj_msgSend(menuWindow, "setBackgroundStyle:", _CPMenuWindowPopUpBackgroundStyle); + var constraintRect = objj_msgSend(CPMenu, "_constraintRectForView:", aView), + aLocation = objj_msgSend(objj_msgSend(anEvent, "window"), "convertBaseToGlobal:", objj_msgSend(anEvent, "locationInWindow")); + objj_msgSend(menuWindow, "setConstraintRect:", constraintRect); + objj_msgSend(menuWindow, "setFrameOrigin:", aLocation); + if (!objj_msgSend(menuWindow, "hasMinimumNumberOfVisibleItems")) + { + var unconstrainedFrame = objj_msgSend(menuWindow, "unconstrainedFrame"), + unconstrainedY = CGRectGetMinY(unconstrainedFrame); + if (unconstrainedY >= CGRectGetMaxY(constraintRect) || objj_msgSend(menuWindow, "canScrollDown")) + unconstrainedFrame.origin.y = MIN(CGRectGetMaxY(constraintRect), aLocation.y) - CGRectGetHeight(unconstrainedFrame); + else if (unconstrainedY < CGRectGetMinY(constraintRect) || objj_msgSend(menuWindow, "canScrollUp")) + unconstrainedFrame.origin.y = MAX(CGRectGetMinY(constraintRect), aLocation.y); + objj_msgSend(menuWindow, "setFrameOrigin:", CGRectIntersection(unconstrainedFrame, constraintRect).origin); + } + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(menuWindow, "setPlatformWindow:", objj_msgSend(objj_msgSend(aView, "window"), "platformWindow")); + objj_msgSend(menuWindow, "orderFront:", self); + objj_msgSend(objj_msgSend(_CPMenuManager, "sharedMenuManager"), "beginTracking:menuContainer:constraintRect:callback:", anEvent, menuWindow, objj_msgSend(CPMenu, "_constraintRectForView:", aView), objj_msgSend(CPMenu, "trackingCallbackWithCallback:", nil)); +} +},["void","CPMenu","CPEvent","CPView","CPFont"])]); +} +var CPMenuTitleKey = "CPMenuTitleKey", + CPMenuNameKey = "CPMenuNameKey", + CPMenuItemsKey = "CPMenuItemsKey", + CPMenuShowsStateColumnKey = "CPMenuShowsStateColumnKey"; +{ +var the_class = objj_getClass("CPMenu") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPMenu\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPMenu__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPMenu").super_class }, "init"); + if (self) + { + _title = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuTitleKey); + _items = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemsKey); + objj_msgSend(self, "_setMenuName:", objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuNameKey)); + _showsStateColumn = !objj_msgSend(aCoder, "containsValueForKey:", CPMenuShowsStateColumnKey) || objj_msgSend(aCoder, "decodeBoolForKey:", CPMenuShowsStateColumnKey); + objj_msgSend(self, "setMinimumWidth:", 0); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPMenu__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _title, CPMenuTitleKey); + if (_name) + objj_msgSend(aCoder, "encodeObject:forKey:", _name, CPMenuNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _items, CPMenuItemsKey); + if (!_showsStateColumn) + objj_msgSend(aCoder, "encodeBool:forKey:", _showsStateColumn, CPMenuShowsStateColumnKey); +} +},["void","CPCoder"])]); +} +objj_executeFile("_CPMenuBarWindow.j", YES); +objj_executeFile("_CPMenuWindow.j", YES); + +p;24;_CPMenuItemMenuBarView.jt;10736;@STATIC;1.0;t;10716; + +var HORIZONTAL_MARGIN = 8.0, + SUBMENU_INDICATOR_MARGIN = 3.0, + VERTICAL_MARGIN = 4.0; + +var SelectionColor = nil, + SUBMENU_INDICATOR_COLOR = nil, + _CPMenuItemSelectionColor = nil, + _CPMenuItemTextShadowColor = nil, + + _CPMenuItemDefaultStateImages = [], + _CPMenuItemDefaultStateHighlightedImages = []; + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemMenuBarView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuItem"), new objj_ivar("_font"), new objj_ivar("_textColor"), new objj_ivar("_textShadowColor"), new objj_ivar("_isDirty"), new objj_ivar("_imageAndTextView"), new objj_ivar("_submenuIndicatorView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("menuItem"), function $_CPMenuItemMenuBarView__menuItem(self, _cmd) +{ with(self) +{ +return _menuItem; +} +},["id"]), +new objj_method(sel_getUid("setMenuItem:"), function $_CPMenuItemMenuBarView__setMenuItem_(self, _cmd, newValue) +{ with(self) +{ +_menuItem = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPMenuItemMenuBarView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuItemMenuBarView").super_class }, "initWithFrame:", aFrame); + + if (self) + { + _imageAndTextView = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", CGRectMake(HORIZONTAL_MARGIN, 0.0, 0.0, 0.0)); + + objj_msgSend(_imageAndTextView, "setImagePosition:", CPImageLeft); + objj_msgSend(_imageAndTextView, "setImageOffset:", 3.0); + objj_msgSend(_imageAndTextView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_imageAndTextView, "setAutoresizingMask:", CPViewMinYMargin | CPViewMaxYMargin); + + objj_msgSend(self, "addSubview:", _imageAndTextView); + + _submenuIndicatorView = objj_msgSend(objj_msgSend(_CPMenuItemMenuBarSubmenuIndicatorView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 9.0, 6.0)); + + objj_msgSend(_submenuIndicatorView, "setAutoresizingMask:", CPViewMinYMargin | CPViewMaxYMargin); + + objj_msgSend(self, "addSubview:", _submenuIndicatorView); + + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + } + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("textColor"), function $_CPMenuItemMenuBarView__textColor(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "isEnabled")) + return objj_msgSend(CPColor, "lightGrayColor"); + + return _textColor || objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 70.0 / 255.0, 69.0 / 255.0, 69.0 / 255.0, 1.0); +} +},["CPColor"]), new objj_method(sel_getUid("textShadowColor"), function $_CPMenuItemMenuBarView__textShadowColor(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "isEnabled")) + return objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.8, 0.8); + + return _textShadowColor || objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.8); +} +},["CPColor"]), new objj_method(sel_getUid("update"), function $_CPMenuItemMenuBarView__update(self, _cmd) +{ with(self) +{ + var x = HORIZONTAL_MARGIN, + height = 0.0; + + objj_msgSend(_imageAndTextView, "setFont:", objj_msgSend(_menuItem, "font") || objj_msgSend(_CPMenuBarWindow, "font")); + objj_msgSend(_imageAndTextView, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setText:", objj_msgSend(_menuItem, "title")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + objj_msgSend(_imageAndTextView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_imageAndTextView, "sizeToFit"); + + var imageAndTextViewFrame = objj_msgSend(_imageAndTextView, "frame"); + + imageAndTextViewFrame.origin.x = x; + x += CGRectGetWidth(imageAndTextViewFrame); + height = MAX(height, CGRectGetHeight(imageAndTextViewFrame)); + + var hasSubmenuIndicator = objj_msgSend(_menuItem, "hasSubmenu") && objj_msgSend(_menuItem, "action"); + + if (hasSubmenuIndicator) + { + objj_msgSend(_submenuIndicatorView, "setHidden:", NO); + objj_msgSend(_submenuIndicatorView, "setColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_submenuIndicatorView, "setShadowColor:", objj_msgSend(self, "textShadowColor")); + + var submenuViewFrame = objj_msgSend(_submenuIndicatorView, "frame"); + + submenuViewFrame.origin.x = x + SUBMENU_INDICATOR_MARGIN; + + x = CGRectGetMaxX(submenuViewFrame); + height = MAX(height, CGRectGetHeight(submenuViewFrame)); + } + else + objj_msgSend(_submenuIndicatorView, "setHidden:", YES); + + height += 2.0 * VERTICAL_MARGIN; + + imageAndTextViewFrame.origin.y = FLOOR((height - CGRectGetHeight(imageAndTextViewFrame)) / 2.0); + objj_msgSend(_imageAndTextView, "setFrame:", imageAndTextViewFrame); + + if (hasSubmenuIndicator) + { + submenuViewFrame.origin.y = FLOOR((height - CGRectGetHeight(submenuViewFrame)) / 2.0) + 1.0; + objj_msgSend(_submenuIndicatorView, "setFrame:", submenuViewFrame); + } + + _minSize = CGSizeMake(x + HORIZONTAL_MARGIN, height); + + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(self, "setFrameSize:", _minSize); + objj_msgSend(self, "setAutoresizesSubviews:", YES); +} +},["void"]), new objj_method(sel_getUid("highlight:"), function $_CPMenuItemMenuBarView__highlight_(self, _cmd, shouldHighlight) +{ with(self) +{ + + if (!objj_msgSend(_menuItem, "isEnabled")) + shouldHighlight = NO; + + if (shouldHighlight) + { + if (!objj_msgSend(_menuItem, "_isMenuBarButton")) + objj_msgSend(self, "setBackgroundColor:", SelectionColor); + + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "alternateImage") || objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_imageAndTextView, "setTextShadowColor:", _CPMenuItemTextShadowColor); + + objj_msgSend(_submenuIndicatorView, "setColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_submenuIndicatorView, "setShadowColor:", objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.1, 0.7)); + } + else + { + objj_msgSend(self, "setBackgroundColor:", nil); + + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + + objj_msgSend(_submenuIndicatorView, "setColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_submenuIndicatorView, "setShadowColor:", objj_msgSend(self, "textShadowColor")); + } +} +},["void","BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPMenuItemMenuBarView__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(_CPMenuItemMenuBarView, "class")) + return; + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + SelectionColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png"), CGSizeMake(1.0, 28.0))); + + SUBMENU_INDICATOR_COLOR = objj_msgSend(CPColor, "grayColor"); + + _CPMenuItemSelectionColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 95.0 / 255.0, 131.0 / 255.0, 185.0 / 255.0, 1.0); + _CPMenuItemTextShadowColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 26.0 / 255.0, 73.0 / 255.0, 109.0 / 255.0, 1.0); + + _CPMenuItemDefaultStateImages[CPOffState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPOffState] = nil; + + _CPMenuItemDefaultStateImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnState.png"), CGSizeMake(14.0, 14.0)); + _CPMenuItemDefaultStateHighlightedImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnStateHighlighted.png"), CGSizeMake(14.0, 14.0)); + + _CPMenuItemDefaultStateImages[CPMixedState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPMixedState] = nil; +} +},["void"]), new objj_method(sel_getUid("view"), function $_CPMenuItemMenuBarView__view(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"])]); +} + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemMenuBarSubmenuIndicatorView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_color"), new objj_ivar("_shadowColor")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setColor:"), function $_CPMenuItemMenuBarSubmenuIndicatorView__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (_color === aColor) + return; + + _color = aColor; + + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("setShadowColor:"), function $_CPMenuItemMenuBarSubmenuIndicatorView__setShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_shadowColor === aColor) + return; + + _shadowColor = aColor; + + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("drawRect:"), function $_CPMenuItemMenuBarSubmenuIndicatorView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + bounds = objj_msgSend(self, "bounds"); + + bounds.size.height -= 1.0; + bounds.size.width -= 2.0; + bounds.origin.x += 1.0; + + CGContextBeginPath(context); + + CGContextMoveToPoint(context, CGRectGetMinX(bounds), CGRectGetMinY(bounds)); + CGContextAddLineToPoint(context, CGRectGetMaxX(bounds), CGRectGetMinY(bounds)); + CGContextAddLineToPoint(context, CGRectGetMidX(bounds), CGRectGetMaxY(bounds)); + + CGContextClosePath(context); + + CGContextSetShadowWithColor(context, CGSizeMake(0.0, 1.0), 1.1, _shadowColor || objj_msgSend(CPColor, "whiteColor")); + CGContextSetFillColor(context, _color || objj_msgSend(CPColor, "blackColor")); + CGContextFillPath(context); +} +},["void","CGRect"])]); +} + +p;26;_CPMenuItemSeparatorView.jt;1544;@STATIC;1.0;I;15;AppKit/CPView.jt;1505; + + +objj_executeFile("AppKit/CPView.j", NO); + + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemSeparatorView"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPMenuItemSeparatorView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuItemSeparatorView").super_class }, "initWithFrame:", aFrame); + + if (self) + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable); + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("drawRect:"), function $_CPMenuItemSeparatorView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + bounds = objj_msgSend(self, "bounds"); + + CGContextBeginPath(context); + + CGContextMoveToPoint(context, CGRectGetMinX(bounds), FLOOR(CGRectGetMidY(bounds)) - 0.5); + CGContextAddLineToPoint(context, CGRectGetMaxX(bounds), FLOOR(CGRectGetMidY(bounds)) - 0.5); + + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "lightGrayColor")); + CGContextStrokePath(context); +} +},["void","CGRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("view"), function $_CPMenuItemSeparatorView__view(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 10.0)); +} +},["id"])]); +} + +p;25;_CPMenuItemStandardView.jt;13391;@STATIC;1.0;t;13371; + +var LEFT_MARGIN = 3.0, + RIGHT_MARGIN = 14.0 + 3.0, + STATE_COLUMN_WIDTH = 14.0, + INDENTATION_WIDTH = 17.0, + VERTICAL_MARGIN = 4.0, + + RIGHT_COLUMNS_MARGIN = 30.0, + KEY_EQUIVALENT_MARGIN = 10.0; + +var SUBMENU_INDICATOR_COLOR = nil, + _CPMenuItemSelectionColor = nil, + _CPMenuItemTextShadowColor = nil, + + _CPMenuItemDefaultStateImages = [], + _CPMenuItemDefaultStateHighlightedImages = []; + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemStandardView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuItem"), new objj_ivar("_font"), new objj_ivar("_textColor"), new objj_ivar("_textShadowColor"), new objj_ivar("_minSize"), new objj_ivar("_isDirty"), new objj_ivar("_stateView"), new objj_ivar("_imageAndTextView"), new objj_ivar("_keyEquivalentView"), new objj_ivar("_submenuIndicatorView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("menuItem"), function $_CPMenuItemStandardView__menuItem(self, _cmd) +{ with(self) +{ +return _menuItem; +} +},["id"]), +new objj_method(sel_getUid("setMenuItem:"), function $_CPMenuItemStandardView__setMenuItem_(self, _cmd, newValue) +{ with(self) +{ +_menuItem = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("minSize"), function $_CPMenuItemStandardView__minSize(self, _cmd) +{ with(self) +{ +return _minSize; +} +},["id"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPMenuItemStandardView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuItemStandardView").super_class }, "initWithFrame:", aFrame); + + if (self) + { + _stateView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 0.0)); + + objj_msgSend(_stateView, "setImageScaling:", CPScaleNone); + + objj_msgSend(self, "addSubview:", _stateView); + + _imageAndTextView = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 0.0)); + + objj_msgSend(_imageAndTextView, "setImagePosition:", CPImageLeft); + objj_msgSend(_imageAndTextView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + + objj_msgSend(self, "addSubview:", _imageAndTextView); + + _keyEquivalentView = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 0.0)); + + objj_msgSend(_keyEquivalentView, "setImagePosition:", CPNoImage); + objj_msgSend(_keyEquivalentView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_keyEquivalentView, "setAutoresizingMask:", CPViewMinXMargin); + + objj_msgSend(self, "addSubview:", _keyEquivalentView); + + _submenuIndicatorView = objj_msgSend(objj_msgSend(_CPMenuItemSubmenuIndicatorView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 8.0, 10.0)); + + objj_msgSend(_submenuIndicatorView, "setColor:", SUBMENU_INDICATOR_COLOR); + objj_msgSend(_submenuIndicatorView, "setAutoresizingMask:", CPViewMinXMargin); + + objj_msgSend(self, "addSubview:", _submenuIndicatorView); + + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable); + } + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("textColor"), function $_CPMenuItemStandardView__textColor(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "isEnabled")) + return objj_msgSend(CPColor, "lightGrayColor"); + + return _textColor || objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 70.0 / 255.0, 69.0 / 255.0, 69.0 / 255.0, 1.0); +} +},["CPColor"]), new objj_method(sel_getUid("textShadowColor"), function $_CPMenuItemStandardView__textShadowColor(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "isEnabled")) + return nil; + + return _textShadowColor || objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.8); +} +},["CPColor"]), new objj_method(sel_getUid("setFont:"), function $_CPMenuItemStandardView__setFont_(self, _cmd, aFont) +{ with(self) +{ + _font = aFont; +} +},["void","CPFont"]), new objj_method(sel_getUid("update"), function $_CPMenuItemStandardView__update(self, _cmd) +{ with(self) +{ + var x = LEFT_MARGIN + objj_msgSend(_menuItem, "indentationLevel") * INDENTATION_WIDTH, + height = 0.0, + hasStateColumn = objj_msgSend(objj_msgSend(_menuItem, "menu"), "showsStateColumn"); + + if (hasStateColumn) + { + objj_msgSend(_stateView, "setHidden:", NO); + objj_msgSend(_stateView, "setImage:", _CPMenuItemDefaultStateImages[objj_msgSend(_menuItem, "state")] || nil); + + x += STATE_COLUMN_WIDTH; + } + else + objj_msgSend(_stateView, "setHidden:", YES); + + objj_msgSend(_imageAndTextView, "setFont:", objj_msgSend(_menuItem, "font") || _font); + objj_msgSend(_imageAndTextView, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setText:", objj_msgSend(_menuItem, "title")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + objj_msgSend(_imageAndTextView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_imageAndTextView, "sizeToFit"); + + var imageAndTextViewFrame = objj_msgSend(_imageAndTextView, "frame"); + + imageAndTextViewFrame.origin.x = x; + x += CGRectGetWidth(imageAndTextViewFrame); + height = MAX(height, CGRectGetHeight(imageAndTextViewFrame)); + + var hasKeyEquivalent = !!objj_msgSend(_menuItem, "keyEquivalent"), + hasSubmenu = objj_msgSend(_menuItem, "hasSubmenu"); + + if (hasKeyEquivalent || hasSubmenu) + x += RIGHT_COLUMNS_MARGIN; + + if (hasKeyEquivalent) + { + objj_msgSend(_keyEquivalentView, "setFont:", objj_msgSend(_menuItem, "font") || _font); + objj_msgSend(_keyEquivalentView, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(_keyEquivalentView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_keyEquivalentView, "setText:", objj_msgSend(_menuItem, "keyEquivalentStringRepresentation")); + objj_msgSend(_keyEquivalentView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_keyEquivalentView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + objj_msgSend(_keyEquivalentView, "setTextShadowOffset:", CGSizeMake(0, 1)); + objj_msgSend(_keyEquivalentView, "setFrameOrigin:", CGPointMake(x, VERTICAL_MARGIN)); + objj_msgSend(_keyEquivalentView, "sizeToFit"); + + var keyEquivalentViewFrame = objj_msgSend(_keyEquivalentView, "frame"); + + keyEquivalentViewFrame.origin.x = x; + x += CGRectGetWidth(keyEquivalentViewFrame); + height = MAX(height, CGRectGetHeight(keyEquivalentViewFrame)); + + if (hasSubmenu) + x += RIGHT_COLUMNS_MARGIN; + } + else + objj_msgSend(_keyEquivalentView, "setHidden:", YES); + + if (hasSubmenu) + { + objj_msgSend(_submenuIndicatorView, "setHidden:", NO); + + var submenuViewFrame = objj_msgSend(_submenuIndicatorView, "frame"); + + submenuViewFrame.origin.x = x; + + x += CGRectGetWidth(submenuViewFrame); + height = MAX(height, CGRectGetHeight(submenuViewFrame)); + } + else + objj_msgSend(_submenuIndicatorView, "setHidden:", YES); + + height += 2.0 * VERTICAL_MARGIN; + + imageAndTextViewFrame.origin.y = FLOOR((height - CGRectGetHeight(imageAndTextViewFrame)) / 2.0); + objj_msgSend(_imageAndTextView, "setFrame:", imageAndTextViewFrame); + + if (hasStateColumn) + objj_msgSend(_stateView, "setFrameSize:", CGSizeMake(STATE_COLUMN_WIDTH, height)); + + if (hasKeyEquivalent) + { + keyEquivalentViewFrame.origin.y = FLOOR((height - CGRectGetHeight(keyEquivalentViewFrame)) / 2.0); + objj_msgSend(_keyEquivalentView, "setFrame:", keyEquivalentViewFrame); + } + + if (hasSubmenu) + { + submenuViewFrame.origin.y = FLOOR((height - CGRectGetHeight(submenuViewFrame)) / 2.0); + objj_msgSend(_submenuIndicatorView, "setFrame:", submenuViewFrame); + } + + _minSize = CGSizeMake(x + RIGHT_MARGIN, height); + + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(self, "setFrameSize:", _minSize); + objj_msgSend(self, "setAutoresizesSubviews:", YES); +} +},["void"]), new objj_method(sel_getUid("highlight:"), function $_CPMenuItemStandardView__highlight_(self, _cmd, shouldHighlight) +{ with(self) +{ + + if (!objj_msgSend(_menuItem, "isEnabled")) + return; + + if (shouldHighlight) + { + objj_msgSend(self, "setBackgroundColor:", _CPMenuItemSelectionColor); + + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "alternateImage") || objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_keyEquivalentView, "setTextColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_submenuIndicatorView, "setColor:", objj_msgSend(CPColor, "whiteColor")); + + objj_msgSend(_imageAndTextView, "setTextShadowColor:", _CPMenuItemTextShadowColor); + objj_msgSend(_keyEquivalentView, "setTextShadowColor:", _CPMenuItemTextShadowColor); + } + else + { + objj_msgSend(self, "setBackgroundColor:", nil); + + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_keyEquivalentView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_submenuIndicatorView, "setColor:", SUBMENU_INDICATOR_COLOR); + + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + objj_msgSend(_keyEquivalentView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + } + + if (objj_msgSend(objj_msgSend(_menuItem, "menu"), "showsStateColumn")) + { + if (shouldHighlight) + objj_msgSend(_stateView, "setImage:", _CPMenuItemDefaultStateHighlightedImages[objj_msgSend(_menuItem, "state")] || nil); + else + objj_msgSend(_stateView, "setImage:", _CPMenuItemDefaultStateImages[objj_msgSend(_menuItem, "state")] || nil); + } +} +},["void","BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPMenuItemStandardView__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(_CPMenuItemStandardView, "class")) + return; + + SUBMENU_INDICATOR_COLOR = objj_msgSend(CPColor, "grayColor"); + + _CPMenuItemSelectionColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 95.0 / 255.0, 131.0 / 255.0, 185.0 / 255.0, 1.0); + _CPMenuItemTextShadowColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 26.0 / 255.0, 73.0 / 255.0, 109.0 / 255.0, 1.0); + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + _CPMenuItemDefaultStateImages[CPOffState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPOffState] = nil; + + _CPMenuItemDefaultStateImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnState.png"), CGSizeMake(14.0, 14.0)); + _CPMenuItemDefaultStateHighlightedImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnStateHighlighted.png"), CGSizeMake(14.0, 14.0)); + + _CPMenuItemDefaultStateImages[CPMixedState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPMixedState] = nil; +} +},["void"]), new objj_method(sel_getUid("view"), function $_CPMenuItemStandardView__view(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("_standardLeftMargin"), function $_CPMenuItemStandardView___standardLeftMargin(self, _cmd) +{ with(self) +{ + return LEFT_MARGIN + STATE_COLUMN_WIDTH; +} +},["float"])]); +} + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemSubmenuIndicatorView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_color")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setColor:"), function $_CPMenuItemSubmenuIndicatorView__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (_color === aColor) + return; + + _color = aColor; + + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("drawRect:"), function $_CPMenuItemSubmenuIndicatorView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + bounds = objj_msgSend(self, "bounds"); + + CGContextBeginPath(context); + + CGContextMoveToPoint(context, CGRectGetMinX(bounds), CGRectGetMinY(bounds)); + CGContextAddLineToPoint(context, CGRectGetMaxX(bounds), CGRectGetMidY(bounds)); + CGContextAddLineToPoint(context, CGRectGetMinX(bounds), CGRectGetMaxY(bounds)); + + CGContextClosePath(context); + + CGContextSetFillColor(context, _color); + CGContextFillPath(context); +} +},["void","CGRect"])]); +} + +p;17;_CPMenuItemView.jt;9096;@STATIC;1.0;i;26;_CPMenuItemSeparatorView.ji;25;_CPMenuItemStandardView.ji;24;_CPMenuItemMenuBarView.jt;8987; + + +objj_executeFile("_CPMenuItemSeparatorView.j", YES); +objj_executeFile("_CPMenuItemStandardView.j", YES); +objj_executeFile("_CPMenuItemMenuBarView.j", YES); + + +var LEFT_MARGIN = 3.0, + RIGHT_MARGIN = 16.0, + STATE_COLUMN_WIDTH = 14.0, + INDENTATION_WIDTH = 17.0, + VERTICAL_MARGIN = 4.0; + +var _CPMenuItemSelectionColor = nil, + _CPMenuItemTextShadowColor = nil, + + _CPMenuItemDefaultStateImages = [], + _CPMenuItemDefaultStateHighlightedImages = []; + + + + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuItem"), new objj_ivar("_view"), new objj_ivar("_font"), new objj_ivar("_textColor"), new objj_ivar("_textShadowColor"), new objj_ivar("_minSize"), new objj_ivar("_isDirty"), new objj_ivar("_showsStateColumn"), new objj_ivar("_stateView"), new objj_ivar("_imageAndTextView"), new objj_ivar("_submenuView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:forMenuItem:"), function $_CPMenuItemView__initWithFrame_forMenuItem_(self, _cmd, aFrame, aMenuItem) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuItemView").super_class }, "initWithFrame:", aFrame); + + if (self) + { + _menuItem = aMenuItem; + _showsStateColumn = YES; + _isDirty = YES; + + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable); + + objj_msgSend(self, "synchronizeWithMenuItem"); + } + + return self; +} +},["id","CGRect","CPMenuItem"]), new objj_method(sel_getUid("minSize"), function $_CPMenuItemView__minSize(self, _cmd) +{ with(self) +{ + return _minSize; +} +},["CGSize"]), new objj_method(sel_getUid("setDirty"), function $_CPMenuItemView__setDirty(self, _cmd) +{ with(self) +{ + _isDirty = YES; +} +},["void"]), new objj_method(sel_getUid("synchronizeWithMenuItem"), function $_CPMenuItemView__synchronizeWithMenuItem(self, _cmd) +{ with(self) +{ + var menuItemView = objj_msgSend(_menuItem, "view"); + + if (objj_msgSend(_menuItem, "isSeparatorItem")) + { + if (!objj_msgSend(_view, "isKindOfClass:", objj_msgSend(_CPMenuItemSeparatorView, "class"))) + { + objj_msgSend(_view, "removeFromSuperview"); + _view = objj_msgSend(_CPMenuItemSeparatorView, "view"); + } + } + else if (menuItemView) + { + if (_view !== menuItemView) + { + objj_msgSend(_view, "removeFromSuperview"); + _view = menuItemView; + } + } + + else if (objj_msgSend(_menuItem, "menu") == objj_msgSend(CPApp, "mainMenu")) + { + if (!objj_msgSend(_view, "isKindOfClass:", objj_msgSend(_CPMenuItemMenuBarView, "class"))) + { + objj_msgSend(_view, "removeFromSuperview"); + _view = objj_msgSend(_CPMenuItemMenuBarView, "view"); + } + + objj_msgSend(_view, "setMenuItem:", _menuItem); + } + else + { + if (!objj_msgSend(_view, "isKindOfClass:", objj_msgSend(_CPMenuItemStandardView, "class"))) + { + objj_msgSend(_view, "removeFromSuperview"); + _view = objj_msgSend(_CPMenuItemStandardView, "view"); + } + + objj_msgSend(_view, "setMenuItem:", _menuItem); + } + + if (objj_msgSend(_view, "superview") !== self) + objj_msgSend(self, "addSubview:", _view); + + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("update"))) + objj_msgSend(_view, "update"); + + _minSize = objj_msgSend(_view, "frame").size; + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(self, "setFrameSize:", _minSize); + objj_msgSend(self, "setAutoresizesSubviews:", YES); +} +},["void"]), new objj_method(sel_getUid("setShowsStateColumn:"), function $_CPMenuItemView__setShowsStateColumn_(self, _cmd, shouldShowStateColumn) +{ with(self) +{ + _showsStateColumn = shouldShowStateColumn; +} +},["void","BOOL"]), new objj_method(sel_getUid("highlight:"), function $_CPMenuItemView__highlight_(self, _cmd, shouldHighlight) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("highlight:"))) + objj_msgSend(_view, "highlight:", shouldHighlight); +} +},["void","BOOL"]), new objj_method(sel_getUid("eventOnSubmenu:"), function $_CPMenuItemView__eventOnSubmenu_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "hasSubmenu")) + return NO; + + return CGRectContainsPoint(objj_msgSend(_submenuView, "frame"), objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil)); +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("isHidden"), function $_CPMenuItemView__isHidden(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menuItem, "isHidden"); +} +},["BOOL"]), new objj_method(sel_getUid("menuItem"), function $_CPMenuItemView__menuItem(self, _cmd) +{ with(self) +{ + return _menuItem; +} +},["CPMenuItem"]), new objj_method(sel_getUid("setFont:"), function $_CPMenuItemView__setFont_(self, _cmd, aFont) +{ with(self) +{ + if (_font === aFont) + return; + + _font = aFont; + + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setFont:"))) + objj_msgSend(_view, "setFont:", aFont); + + objj_msgSend(self, "setDirty"); +} +},["void","CPFont"]), new objj_method(sel_getUid("setTextColor:"), function $_CPMenuItemView__setTextColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textColor == aColor) + return; + + _textColor = aColor; + + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_submenuView, "setColor:", objj_msgSend(self, "textColor")); +} +},["void","CPColor"]), new objj_method(sel_getUid("textColor"), function $_CPMenuItemView__textColor(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPColor"]), new objj_method(sel_getUid("setTextShadowColor:"), function $_CPMenuItemView__setTextShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textShadowColor == aColor) + return; + + _textShadowColor = aColor; + + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + +} +},["void","CPColor"]), new objj_method(sel_getUid("textShadowColor"), function $_CPMenuItemView__textShadowColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menuItem, "isEnabled") ? (_textShadowColor ? _textShadowColor : objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.8)) : objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.8, 0.8); +} +},["CPColor"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPMenuItemView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPMenuItemView, "class")) + return; + + _CPMenuItemSelectionColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 95.0 / 255.0, 131.0 / 255.0, 185.0 / 255.0, 1.0); + _CPMenuItemTextShadowColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 26.0 / 255.0, 73.0 / 255.0, 109.0 / 255.0, 1.0); + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + _CPMenuItemDefaultStateImages[CPOffState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPOffState] = nil; + + _CPMenuItemDefaultStateImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnState.png"), CGSizeMake(14.0, 14.0)); + _CPMenuItemDefaultStateHighlightedImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnStateHighlighted.png"), CGSizeMake(14.0, 14.0)); + + _CPMenuItemDefaultStateImages[CPMixedState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPMixedState] = nil; +} +},["void"]), new objj_method(sel_getUid("leftMargin"), function $_CPMenuItemView__leftMargin(self, _cmd) +{ with(self) +{ + return LEFT_MARGIN + STATE_COLUMN_WIDTH; +} +},["float"])]); +} + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemArrowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_color")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setColor:"), function $_CPMenuItemArrowView__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (_color == aColor) + return; + + _color = aColor; + + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("drawRect:"), function $_CPMenuItemArrowView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + + CGContextBeginPath(context); + + CGContextMoveToPoint(context, 1.0, 4.0); + CGContextAddLineToPoint(context, 9.0, 4.0); + CGContextAddLineToPoint(context, 5.0, 8.0); + CGContextAddLineToPoint(context, 1.0, 4.0); + + CGContextClosePath(context); + + CGContextSetFillColor(context, _color); + CGContextFillPath(context); +} +},["void","CGRect"])]); +} + +p;12;CPMenuItem.jt;23487;@STATIC;1.0;I;20;Foundation/CPCoder.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;9;CPImage.ji;8;CPMenu.ji;8;CPView.ji;17;_CPMenuItemView.jt;23331;objj_executeFile("Foundation/CPCoder.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPMenu.j", YES); +objj_executeFile("CPView.j", YES); +objj_executeFile("_CPMenuItemView.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPMenuItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isSeparator"), new objj_ivar("_title"), new objj_ivar("_font"), new objj_ivar("_target"), new objj_ivar("_action"), new objj_ivar("_isEnabled"), new objj_ivar("_isHidden"), new objj_ivar("_tag"), new objj_ivar("_state"), new objj_ivar("_image"), new objj_ivar("_alternateImage"), new objj_ivar("_onStateImage"), new objj_ivar("_offStateImage"), new objj_ivar("_mixedStateImage"), new objj_ivar("_submenu"), new objj_ivar("_menu"), new objj_ivar("_keyEquivalent"), new objj_ivar("_keyEquivalentModifierMask"), new objj_ivar("_mnemonicLocation"), new objj_ivar("_isAlternate"), new objj_ivar("_indentationLevel"), new objj_ivar("_toolTip"), new objj_ivar("_representedObject"), new objj_ivar("_view"), new objj_ivar("_menuItemView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPMenuItem__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithTitle:action:keyEquivalent:", "", nil, nil); +} +},["id"]), new objj_method(sel_getUid("initWithTitle:action:keyEquivalent:"), function $CPMenuItem__initWithTitle_action_keyEquivalent_(self, _cmd, aTitle, anAction, aKeyEquivalent) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPMenuItem").super_class }, "init"); + if (self) + { + _isSeparator = NO; + _title = aTitle; + _action = anAction; + _isEnabled = YES; + _tag = 0; + _state = CPOffState; + _keyEquivalent = aKeyEquivalent || ""; + _keyEquivalentModifierMask = CPPlatformActionKeyMask; + _indentationLevel = 0; + _mnemonicLocation = CPNotFound; + } + return self; +} +},["id","CPString","SEL","CPString"]), new objj_method(sel_getUid("setEnabled:"), function $CPMenuItem__setEnabled_(self, _cmd, isEnabled) +{ with(self) +{ + if (objj_msgSend(_menu, "autoenablesItems")) + return; + _isEnabled = isEnabled; + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","BOOL"]), new objj_method(sel_getUid("isEnabled"), function $CPMenuItem__isEnabled(self, _cmd) +{ with(self) +{ + return _isEnabled; +} +},["BOOL"]), new objj_method(sel_getUid("setHidden:"), function $CPMenuItem__setHidden_(self, _cmd, isHidden) +{ with(self) +{ + if (_isHidden == isHidden) + return; + _isHidden = isHidden; + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","BOOL"]), new objj_method(sel_getUid("isHidden"), function $CPMenuItem__isHidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"), function $CPMenuItem__isHiddenOrHasHiddenAncestor(self, _cmd) +{ with(self) +{ + if (_isHidden) + return YES; + var supermenu = objj_msgSend(_menu, "supermenu"); + if (objj_msgSend(objj_msgSend(supermenu, "itemAtIndex:", objj_msgSend(supermenu, "indexOfItemWithSubmenu:", _menu)), "isHiddenOrHasHiddenAncestor")) + return YES; + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("setTarget:"), function $CPMenuItem__setTarget_(self, _cmd, aTarget) +{ with(self) +{ + _target = aTarget; +} +},["void","id"]), new objj_method(sel_getUid("target"), function $CPMenuItem__target(self, _cmd) +{ with(self) +{ + return _target; +} +},["id"]), new objj_method(sel_getUid("setAction:"), function $CPMenuItem__setAction_(self, _cmd, anAction) +{ with(self) +{ + _action = anAction; +} +},["void","SEL"]), new objj_method(sel_getUid("action"), function $CPMenuItem__action(self, _cmd) +{ with(self) +{ + return _action; +} +},["SEL"]), new objj_method(sel_getUid("setTitle:"), function $CPMenuItem__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + _mnemonicLocation = CPNotFound; + if (_title == aTitle) + return; + _title = aTitle; + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPString"]), new objj_method(sel_getUid("title"), function $CPMenuItem__title(self, _cmd) +{ with(self) +{ + return _title; +} +},["CPString"]), new objj_method(sel_getUid("setTextColor:"), function $CPMenuItem__setTextColor_(self, _cmd, aColor) +{ with(self) +{ +} +},["void","CPString"]), new objj_method(sel_getUid("setFont:"), function $CPMenuItem__setFont_(self, _cmd, aFont) +{ with(self) +{ + if (_font == aFont) + return; + _font = aFont; + objj_msgSend(_menu, "itemChanged:", self); + objj_msgSend(_menuItemView, "setDirty"); +} +},["void","CPFont"]), new objj_method(sel_getUid("font"), function $CPMenuItem__font(self, _cmd) +{ with(self) +{ + return _font; +} +},["CPFont"]), new objj_method(sel_getUid("setTag:"), function $CPMenuItem__setTag_(self, _cmd, aTag) +{ with(self) +{ + _tag = aTag; +} +},["void","int"]), new objj_method(sel_getUid("tag"), function $CPMenuItem__tag(self, _cmd) +{ with(self) +{ + return _tag; +} +},["int"]), new objj_method(sel_getUid("setState:"), function $CPMenuItem__setState_(self, _cmd, aState) +{ with(self) +{ + if (_state == aState) + return; + _state = aState; + objj_msgSend(_menu, "itemChanged:", self); + objj_msgSend(_menuItemView, "setDirty"); +} +},["void","int"]), new objj_method(sel_getUid("state"), function $CPMenuItem__state(self, _cmd) +{ with(self) +{ + return _state; +} +},["int"]), new objj_method(sel_getUid("setImage:"), function $CPMenuItem__setImage_(self, _cmd, anImage) +{ with(self) +{ + if (_image == anImage) + return; + _image = anImage; + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPImage"]), new objj_method(sel_getUid("image"), function $CPMenuItem__image(self, _cmd) +{ with(self) +{ + return _image; +} +},["CPImage"]), new objj_method(sel_getUid("setAlternateImage:"), function $CPMenuItem__setAlternateImage_(self, _cmd, anImage) +{ with(self) +{ + _alternateImage = anImage; +} +},["void","CPImage"]), new objj_method(sel_getUid("alternateImage"), function $CPMenuItem__alternateImage(self, _cmd) +{ with(self) +{ + return _alternateImage; +} +},["CPImage"]), new objj_method(sel_getUid("setOnStateImage:"), function $CPMenuItem__setOnStateImage_(self, _cmd, anImage) +{ with(self) +{ + if (_onStateImage == anImage) + return; + _onStateImage = anImage; + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPImage"]), new objj_method(sel_getUid("onStateImage"), function $CPMenuItem__onStateImage(self, _cmd) +{ with(self) +{ + return _onStateImage; +} +},["CPImage"]), new objj_method(sel_getUid("setOffStateImage:"), function $CPMenuItem__setOffStateImage_(self, _cmd, anImage) +{ with(self) +{ + if (_offStateImage == anImage) + return; + _offStateImage = anImage; + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPImage"]), new objj_method(sel_getUid("offStateImage"), function $CPMenuItem__offStateImage(self, _cmd) +{ with(self) +{ + return _offStateImage; +} +},["CPImage"]), new objj_method(sel_getUid("setMixedStateImage:"), function $CPMenuItem__setMixedStateImage_(self, _cmd, anImage) +{ with(self) +{ + if (_mixedStateImage == anImage) + return; + _mixedStateImage = anImage; + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPImage"]), new objj_method(sel_getUid("mixedStateImage"), function $CPMenuItem__mixedStateImage(self, _cmd) +{ with(self) +{ + return _mixedStateImage; +} +},["CPImage"]), new objj_method(sel_getUid("setSubmenu:"), function $CPMenuItem__setSubmenu_(self, _cmd, aMenu) +{ with(self) +{ + if (_submenu === aMenu) + return; + var supermenu = objj_msgSend(_submenu, "supermenu"); + if (supermenu) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Can't add submenu \"" + objj_msgSend(aMenu, "title") + "\" to item \"" + objj_msgSend(self, "title") + "\", because it is already submenu of \"" + objj_msgSend(objj_msgSend(aMenu, "supermenu"), "title") + "\""); + _submenu = aMenu; + if (_submenu) + { + objj_msgSend(_submenu, "setSupermenu:", _menu); + objj_msgSend(self, "setTarget:", _menu); + objj_msgSend(self, "setAction:", sel_getUid("submenuAction:")); + } + else + { + objj_msgSend(self, "setTarget:", nil); + objj_msgSend(self, "setAction:", NULL); + } + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPMenu"]), new objj_method(sel_getUid("submenu"), function $CPMenuItem__submenu(self, _cmd) +{ with(self) +{ + return _submenu; +} +},["CPMenu"]), new objj_method(sel_getUid("hasSubmenu"), function $CPMenuItem__hasSubmenu(self, _cmd) +{ with(self) +{ + return _submenu ? YES : NO; +} +},["BOOL"]), new objj_method(sel_getUid("isSeparatorItem"), function $CPMenuItem__isSeparatorItem(self, _cmd) +{ with(self) +{ + return _isSeparator; +} +},["BOOL"]), new objj_method(sel_getUid("setMenu:"), function $CPMenuItem__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + _menu = aMenu; +} +},["void","CPMenu"]), new objj_method(sel_getUid("menu"), function $CPMenuItem__menu(self, _cmd) +{ with(self) +{ + return _menu; +} +},["CPMenu"]), new objj_method(sel_getUid("setKeyEquivalent:"), function $CPMenuItem__setKeyEquivalent_(self, _cmd, aString) +{ with(self) +{ + _keyEquivalent = aString || ""; +} +},["void","CPString"]), new objj_method(sel_getUid("keyEquivalent"), function $CPMenuItem__keyEquivalent(self, _cmd) +{ with(self) +{ + return _keyEquivalent; +} +},["CPString"]), new objj_method(sel_getUid("setKeyEquivalentModifierMask:"), function $CPMenuItem__setKeyEquivalentModifierMask_(self, _cmd, aMask) +{ with(self) +{ + _keyEquivalentModifierMask = aMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("keyEquivalentModifierMask"), function $CPMenuItem__keyEquivalentModifierMask(self, _cmd) +{ with(self) +{ + return _keyEquivalentModifierMask; +} +},["unsigned"]), new objj_method(sel_getUid("keyEquivalentStringRepresentation"), function $CPMenuItem__keyEquivalentStringRepresentation(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_keyEquivalent, "length")) + return ""; + var string = _keyEquivalent.toUpperCase(), + needsShift = _keyEquivalentModifierMask & CPShiftKeyMask || + (string === _keyEquivalent && _keyEquivalent.toLowerCase() !== _keyEquivalent.toUpperCase()); + if (CPBrowserIsOperatingSystem(CPMacOperatingSystem)) + { + if (_keyEquivalentModifierMask & CPCommandKeyMask) + string = "⌘" + string; + if (needsShift) + string = "⇧" + string; + if (_keyEquivalentModifierMask & CPAlternateKeyMask) + string = "⌥" + string; + if (_keyEquivalentModifierMask & CPControlKeyMask) + string = "^" + string; + } + else + { + if (needsShift) + string = "Shift-" + string; + if (_keyEquivalentModifierMask & CPAlternateKeyMask) + string = "Alt-" + string; + if (_keyEquivalentModifierMask & CPControlKeyMask || _keyEquivalentModifierMask & CPCommandKeyMask) + string = "Ctrl-" + string; + } + return string; +} +},["CPString"]), new objj_method(sel_getUid("setMnemonicLocation:"), function $CPMenuItem__setMnemonicLocation_(self, _cmd, aLocation) +{ with(self) +{ + _mnemonicLocation = aLocation; +} +},["void","unsigned"]), new objj_method(sel_getUid("mnemonicLocation"), function $CPMenuItem__mnemonicLocation(self, _cmd) +{ with(self) +{ + return _mnemonicLocation; +} +},["unsigned"]), new objj_method(sel_getUid("setTitleWithMnemonicLocation:"), function $CPMenuItem__setTitleWithMnemonicLocation_(self, _cmd, aTitle) +{ with(self) +{ + var location = objj_msgSend(aTitle, "rangeOfString:", "&").location; + if (location == CPNotFound) + objj_msgSend(self, "setTitle:", aTitle); + else + { + objj_msgSend(self, "setTitle:", objj_msgSend(aTitle, "substringToIndex:", location) + objj_msgSend(aTitle, "substringFromIndex:", location + 1)); + objj_msgSend(self, "setMnemonicLocation:", location); + } +} +},["void","CPString"]), new objj_method(sel_getUid("mnemonic"), function $CPMenuItem__mnemonic(self, _cmd) +{ with(self) +{ + return _mnemonicLocation == CPNotFound ? "" : objj_msgSend(_title, "characterAtIndex:", _mnemonicLocation); +} +},["CPString"]), new objj_method(sel_getUid("setAlternate:"), function $CPMenuItem__setAlternate_(self, _cmd, isAlternate) +{ with(self) +{ + _isAlternate = isAlternate; +} +},["void","BOOL"]), new objj_method(sel_getUid("isAlternate"), function $CPMenuItem__isAlternate(self, _cmd) +{ with(self) +{ + return _isAlternate; +} +},["BOOL"]), new objj_method(sel_getUid("setIndentationLevel:"), function $CPMenuItem__setIndentationLevel_(self, _cmd, aLevel) +{ with(self) +{ + if (aLevel < 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "setIndentationLevel: argument must be greater than or equal to 0."); + _indentationLevel = MIN(15, aLevel); +} +},["void","unsigned"]), new objj_method(sel_getUid("indentationLevel"), function $CPMenuItem__indentationLevel(self, _cmd) +{ with(self) +{ + return _indentationLevel; +} +},["unsigned"]), new objj_method(sel_getUid("setToolTip:"), function $CPMenuItem__setToolTip_(self, _cmd, aToolTip) +{ with(self) +{ + _toolTip = aToolTip; +} +},["void","CPString"]), new objj_method(sel_getUid("toolTip"), function $CPMenuItem__toolTip(self, _cmd) +{ with(self) +{ + return _toolTip; +} +},["CPString"]), new objj_method(sel_getUid("setRepresentedObject:"), function $CPMenuItem__setRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + _representedObject = anObject; +} +},["void","id"]), new objj_method(sel_getUid("representedObject"), function $CPMenuItem__representedObject(self, _cmd) +{ with(self) +{ + return _representedObject; +} +},["id"]), new objj_method(sel_getUid("setView:"), function $CPMenuItem__setView_(self, _cmd, aView) +{ with(self) +{ + if (_view === aView) + return; + _view = aView; + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPView"]), new objj_method(sel_getUid("view"), function $CPMenuItem__view(self, _cmd) +{ with(self) +{ + return _view; +} +},["CPView"]), new objj_method(sel_getUid("isHighlighted"), function $CPMenuItem__isHighlighted(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "menu"), "highlightedItem") == self; +} +},["BOOL"]), new objj_method(sel_getUid("copy"), function $CPMenuItem__copy(self, _cmd) +{ with(self) +{ + var item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "init"); + item._isSeparator = _isSeparator; + objj_msgSend(item, "setTitle:", _title); + objj_msgSend(item, "setFont:", _font); + objj_msgSend(item, "setTarget:", _target); + objj_msgSend(item, "setAction:", _action); + objj_msgSend(item, "setEnabled:", _isEnabled); + objj_msgSend(item, "setHidden:", _isHidden) + objj_msgSend(item, "setTag:", _tag); + objj_msgSend(item, "setState:", _state); + objj_msgSend(item, "setImage:", _image); + objj_msgSend(item, "setAlternateImage:", _alternateImage); + objj_msgSend(item, "setOnStateImage:", _onStateImage); + objj_msgSend(item, "setOffStateImage:", _offStateImage); + objj_msgSend(item, "setMixedStateImage:", _mixedStateImage); + objj_msgSend(item, "setKeyEquivalent:", _keyEquivalent); + objj_msgSend(item, "setKeyEquivalentModifierMask:", _keyEquivalentModifierMask); + objj_msgSend(item, "setMnemonicLocation:", _mnemonicLocation); + objj_msgSend(item, "setAlternate:", _isAlternate); + objj_msgSend(item, "setIndentationLevel:", _indentationLevel); + objj_msgSend(item, "setToolTip:", _toolTip); + objj_msgSend(item, "setRepresentedObject:", _representedObject); + return item; +} +},["id"]), new objj_method(sel_getUid("mutableCopy"), function $CPMenuItem__mutableCopy(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "copy"); +} +},["id"]), new objj_method(sel_getUid("_menuItemView"), function $CPMenuItem___menuItemView(self, _cmd) +{ with(self) +{ + if (!_menuItemView) + _menuItemView = objj_msgSend(objj_msgSend(_CPMenuItemView, "alloc"), "initWithFrame:forMenuItem:", CGRectMakeZero(), self); + return _menuItemView; +} +},["id"]), new objj_method(sel_getUid("_isSelectable"), function $CPMenuItem___isSelectable(self, _cmd) +{ with(self) +{ + return !objj_msgSend(self, "submenu") || objj_msgSend(self, "action") !== sel_getUid("submenuAction:") || objj_msgSend(self, "target") !== objj_msgSend(self, "menu"); +} +},["BOOL"]), new objj_method(sel_getUid("_isMenuBarButton"), function $CPMenuItem___isMenuBarButton(self, _cmd) +{ with(self) +{ + return !objj_msgSend(self, "submenu") && objj_msgSend(self, "menu") === objj_msgSend(CPApp, "mainMenu"); +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("separatorItem"), function $CPMenuItem__separatorItem(self, _cmd) +{ with(self) +{ + var separatorItem = objj_msgSend(objj_msgSend(self, "alloc"), "initWithTitle:action:keyEquivalent:", "", nil, nil); + separatorItem._isSeparator = YES; + return separatorItem; +} +},["CPMenuItem"])]); +} +var CPMenuItemIsSeparatorKey = "CPMenuItemIsSeparatorKey", + CPMenuItemTitleKey = "CPMenuItemTitleKey", + CPMenuItemTargetKey = "CPMenuItemTargetKey", + CPMenuItemActionKey = "CPMenuItemActionKey", + CPMenuItemIsEnabledKey = "CPMenuItemIsEnabledKey", + CPMenuItemIsHiddenKey = "CPMenuItemIsHiddenKey", + CPMenuItemTagKey = "CPMenuItemTagKey", + CPMenuItemStateKey = "CPMenuItemStateKey", + CPMenuItemImageKey = "CPMenuItemImageKey", + CPMenuItemAlternateImageKey = "CPMenuItemAlternateImageKey", + CPMenuItemSubmenuKey = "CPMenuItemSubmenuKey", + CPMenuItemMenuKey = "CPMenuItemMenuKey", + CPMenuItemKeyEquivalentKey = "CPMenuItemKeyEquivalentKey", + CPMenuItemKeyEquivalentModifierMaskKey = "CPMenuItemKeyEquivalentModifierMaskKey", + CPMenuItemIndentationLevelKey = "CPMenuItemIndentationLevelKey", + CPMenuItemRepresentedObjectKey = "CPMenuItemRepresentedObjectKey", + CPMenuItemViewKey = "CPMenuItemViewKey"; +{ +var the_class = objj_getClass("CPMenuItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPMenuItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPMenuItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPMenuItem").super_class }, "init"); + if (self) + { + _isSeparator = objj_msgSend(aCoder, "containsValueForKey:", CPMenuItemIsSeparatorKey) && objj_msgSend(aCoder, "decodeBoolForKey:", CPMenuItemIsSeparatorKey); + _title = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemTitleKey); + _target = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemTargetKey); + _action = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemActionKey); + _isEnabled = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemIsEnabledKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemIsEnabledKey)) : (YES); + _isHidden = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemIsHiddenKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemIsHiddenKey)) : (NO); + _tag = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemTagKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemTagKey)) : (0); + _state = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemStateKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemStateKey)) : (CPOffState); + _image = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemImageKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemImageKey)) : (nil); + _alternateImage = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemAlternateImageKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemAlternateImageKey)) : (nil); + _menu = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemMenuKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemMenuKey)) : (nil); + objj_msgSend(self, "setSubmenu:", objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemSubmenuKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemSubmenuKey)) : (nil)); + _keyEquivalent = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemKeyEquivalentKey) || ""; + _keyEquivalentModifierMask = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemKeyEquivalentModifierMaskKey) || 0; + objj_msgSend(self, "setIndentationLevel:", objj_msgSend(aCoder, "decodeIntForKey:", CPMenuItemIndentationLevelKey) || 0); + _representedObject = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemRepresentedObjectKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemRepresentedObjectKey)) : (nil); + _view = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemViewKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemViewKey)) : (nil); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPMenuItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_isSeparator) + objj_msgSend(aCoder, "encodeBool:forKey:", _isSeparator, CPMenuItemIsSeparatorKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _title, CPMenuItemTitleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _target, CPMenuItemTargetKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _action, CPMenuItemActionKey); + if ((_isEnabled) !== (YES)) objj_msgSend(aCoder, "encodeObject:forKey:", (_isEnabled), (CPMenuItemIsEnabledKey));; + if ((_isHidden) !== (NO)) objj_msgSend(aCoder, "encodeObject:forKey:", (_isHidden), (CPMenuItemIsHiddenKey));; + if ((_tag) !== (0)) objj_msgSend(aCoder, "encodeObject:forKey:", (_tag), (CPMenuItemTagKey));; + if ((_state) !== (CPOffState)) objj_msgSend(aCoder, "encodeObject:forKey:", (_state), (CPMenuItemStateKey));; + if ((_image) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_image), (CPMenuItemImageKey));; + if ((_alternateImage) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_alternateImage), (CPMenuItemAlternateImageKey));; + if ((_submenu) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_submenu), (CPMenuItemSubmenuKey));; + if ((_menu) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_menu), (CPMenuItemMenuKey));; + if (_keyEquivalent && _keyEquivalent.length) + objj_msgSend(aCoder, "encodeObject:forKey:", _keyEquivalent, CPMenuItemKeyEquivalentKey); + if (_keyEquivalentModifierMask) + objj_msgSend(aCoder, "encodeObject:forKey:", _keyEquivalentModifierMask, CPMenuItemKeyEquivalentModifierMaskKey); + if (_indentationLevel > 0) + objj_msgSend(aCoder, "encodeInt:forKey:", _indentationLevel, CPMenuItemIndentationLevelKey); + if ((_representedObject) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_representedObject), (CPMenuItemRepresentedObjectKey));; + if ((_view) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_view), (CPMenuItemViewKey));; +} +},["void","CPCoder"])]); +} + +p;31;_CPBorderlessBridgeWindowView.jt;2765;@STATIC;1.0;i;15;_CPWindowView.jt;2726;objj_executeFile("_CPWindowView.j", YES); +var _CPToolbarViewBackgroundColor = nil; +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPBorderlessBridgeWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_toolbarBackgroundView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setShowsResizeIndicator:"), function $_CPBorderlessBridgeWindowView__setShowsResizeIndicator_(self, _cmd, shouldShowResizeIndicator) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("tile"), function $_CPBorderlessBridgeWindowView__tile(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBorderlessBridgeWindowView").super_class }, "tile"); + var theWindow = objj_msgSend(self, "window"), + bounds = objj_msgSend(self, "bounds"); + objj_msgSend(objj_msgSend(theWindow, "contentView"), "setFrame:", CGRectMake(0.0, objj_msgSend(self, "toolbarMaxY"), CGRectGetWidth(bounds), CGRectGetHeight(bounds) - objj_msgSend(self, "toolbarMaxY"))); + if (!objj_msgSend(objj_msgSend(theWindow, "toolbar"), "isVisible")) + { + objj_msgSend(_toolbarBackgroundView, "removeFromSuperview"); + _toolbarBackgroundView = nil; + return; + } + if (!_toolbarBackgroundView) + { + _toolbarBackgroundView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_toolbarBackgroundView, "setBackgroundColor:", objj_msgSend(objj_msgSend(self, "class"), "toolbarBackgroundColor")); + objj_msgSend(_toolbarBackgroundView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(self, "addSubview:positioned:relativeTo:", _toolbarBackgroundView, CPWindowBelow, nil); + } + var frame = CGRectMakeZero(), + toolbarOffset = objj_msgSend(self, "toolbarOffset"); + frame.origin = CGPointMake(toolbarOffset.width, toolbarOffset.height); + frame.size = objj_msgSend(_toolbarView, "frame").size; + objj_msgSend(_toolbarBackgroundView, "setFrame:", frame); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("toolbarBackgroundColor"), function $_CPBorderlessBridgeWindowView__toolbarBackgroundColor(self, _cmd) +{ with(self) +{ + if (!_CPToolbarViewBackgroundColor) + _CPToolbarViewBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(_CPBorderlessBridgeWindowView, "class")), "pathForResource:", "_CPToolbarView/_CPToolbarViewBackground.png"), CGSizeMake(1.0, 59.0))); + return _CPToolbarViewBackgroundColor; +} +},["CPColor"])]); +} + +p;25;_CPBorderlessWindowView.jt;228;@STATIC;1.0;i;15;_CPWindowView.jt;190;objj_executeFile("_CPWindowView.j", YES); +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPBorderlessWindowView"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;23;_CPDocModalWindowView.jt;2147;@STATIC;1.0;i;15;_CPWindowView.jt;2108; + + +objj_executeFile("_CPWindowView.j", YES); + +var _CPStandardWindowViewBodyBackgroundColor = nil; + +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPDocModalWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_bodyView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:styleMask:"), function $_CPDocModalWindowView__initWithFrame_styleMask_(self, _cmd, aFrame, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPDocModalWindowView").super_class }, "initWithFrame:styleMask:", aFrame, aStyleMask); + + if (self) + { + var theClass = objj_msgSend(self, "class"), + bounds = objj_msgSend(self, "bounds"); + + _bodyView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), CGRectGetHeight(bounds))); + + objj_msgSend(_bodyView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(_bodyView, "setBackgroundColor:", objj_msgSend(theClass, "bodyBackgroundColor")); + objj_msgSend(_bodyView, "setHitTests:", NO); + + objj_msgSend(self, "addSubview:", _bodyView); + } + + return self; +} +},["id","CPRect","unsigned"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPDocModalWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + return aFrameRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPDocModalWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + return aContentRect; +} +},["CGRect","CGRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("bodyBackgroundColor"), function $_CPDocModalWindowView__bodyBackgroundColor(self, _cmd) +{ with(self) +{ + if (!_CPStandardWindowViewBodyBackgroundColor) + _CPStandardWindowViewBodyBackgroundColor = objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.96, 0.9); + + return _CPStandardWindowViewBodyBackgroundColor; +} +},["CPColor"])]); +} + +p;18;_CPHUDWindowView.jt;9402;@STATIC;1.0;t;9383;var _CPHUDWindowViewBackgroundColor = nil, + CPHUDCloseButtonImage = nil; +var HUD_TITLEBAR_HEIGHT = 26.0; +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPHUDWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_toolbarView"), new objj_ivar("_titleField"), new objj_ivar("_closeButton")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPHUDWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + var contentRect = objj_msgSend(objj_msgSend(self, "class"), "contentRectForFrameRect:", aFrameRect); + if (objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "toolbar"), "isVisible")) + { + toolbarHeight = CGRectGetHeight(objj_msgSend(objj_msgSend(self, "toolbarView"), "frame")); + contentRect.origin.y += toolbarHeight; + contentRect.size.height -= toolbarHeight; + } + return contentRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPHUDWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + var frameRect = objj_msgSend(objj_msgSend(self, "class"), "frameRectForContentRect:", aContentRect); + if (objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "toolbar"), "isVisible")) + { + toolbarHeight = CGRectGetHeight(objj_msgSend(objj_msgSend(self, "toolbarView"), "frame")); + frameRect.origin.y -= toolbarHeight; + frameRect.size.height += toolbarHeight; + } + return frameRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("initWithFrame:styleMask:"), function $_CPHUDWindowView__initWithFrame_styleMask_(self, _cmd, aFrame, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPHUDWindowView").super_class }, "initWithFrame:styleMask:", aFrame, aStyleMask); + if (self) + { + var bounds = objj_msgSend(self, "bounds"); + objj_msgSend(self, "setBackgroundColor:", _CPHUDWindowViewBackgroundColor); + _titleField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_titleField, "setHitTests:", NO); + objj_msgSend(_titleField, "setFont:", objj_msgSend(CPFont, "systemFontOfSize:", 11.0)); + objj_msgSend(_titleField, "setTextColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_titleField, "setTextShadowColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(_titleField, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_titleField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_titleField, "setLineBreakMode:", CPLineBreakByTruncatingTail); + objj_msgSend(_titleField, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(_titleField, "setStringValue:", "Untitled"); + objj_msgSend(_titleField, "sizeToFit"); + objj_msgSend(_titleField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_titleField, "setStringValue:", ""); + objj_msgSend(_titleField, "setFrame:", CGRectMake(20.0, 3.0, CGRectGetWidth(objj_msgSend(self, "bounds")) - 40.0, CGRectGetHeight(objj_msgSend(_titleField, "frame")))); + objj_msgSend(self, "addSubview:", _titleField); + if (_styleMask & CPClosableWindowMask) + { + var closeSize = objj_msgSend(_CPHUDWindowViewCloseImage, "size"); + _closeButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(8.0, 5.0, closeSize.width, closeSize.height)); + objj_msgSend(_closeButton, "setBordered:", NO); + objj_msgSend(_closeButton, "setImage:", _CPHUDWindowViewCloseImage); + objj_msgSend(_closeButton, "setAlternateImage:", _CPHUDWindowViewCloseActiveImage); + objj_msgSend(self, "addSubview:", _closeButton); + } + objj_msgSend(self, "setResizeIndicatorOffset:", CGSizeMake(5.0, 5.0)); + } + return self; +} +},["id","CPRect","unsigned"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $_CPHUDWindowView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ + objj_msgSend(_closeButton, "setTarget:", objj_msgSend(self, "window")); + objj_msgSend(_closeButton, "setAction:", sel_getUid("performClose:")); +} +},["void"]), new objj_method(sel_getUid("setTitle:"), function $_CPHUDWindowView__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(_titleField, "setStringValue:", aTitle); +} +},["void","CPString"]), new objj_method(sel_getUid("toolbarView"), function $_CPHUDWindowView__toolbarView(self, _cmd) +{ with(self) +{ + return _toolbarView; +} +},["_CPToolbarView"]), new objj_method(sel_getUid("toolbarLabelColor"), function $_CPHUDWindowView__toolbarLabelColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPColor, "whiteColor"); +} +},["CPColor"]), new objj_method(sel_getUid("toolbarLabelShadowColor"), function $_CPHUDWindowView__toolbarLabelShadowColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPColor, "blackColor"); +} +},["CPColor"]), new objj_method(sel_getUid("toolbarOffset"), function $_CPHUDWindowView__toolbarOffset(self, _cmd) +{ with(self) +{ + return CGSizeMake(0.0, HUD_TITLEBAR_HEIGHT); +} +},["CGSize"]), new objj_method(sel_getUid("tile"), function $_CPHUDWindowView__tile(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPHUDWindowView").super_class }, "tile"); + var theWindow = objj_msgSend(self, "window"), + bounds = objj_msgSend(self, "bounds"), + width = CGRectGetWidth(bounds); + objj_msgSend(_titleField, "setFrame:", CGRectMake(20.0, 3.0, width - 40.0, CGRectGetHeight(objj_msgSend(_titleField, "frame")))); + var maxY = objj_msgSend(self, "toolbarMaxY"); + objj_msgSend(objj_msgSend(theWindow, "contentView"), "setFrameOrigin:", CGPointMake(0.0, maxY, width, CGRectGetHeight(bounds) - maxY)); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPHUDWindowView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPHUDWindowView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + _CPHUDWindowViewBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground0.png"), CPSizeMake(7.0, 37.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground1.png"), CPSizeMake(1.0, 37.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground2.png"), CPSizeMake(7.0, 37.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground3.png"), CPSizeMake(7.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground4.png"), CPSizeMake(2.0, 2.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground5.png"), CPSizeMake(7.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground6.png"), CPSizeMake(7.0, 3.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground7.png"), CPSizeMake(1.0, 3.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground8.png"), CPSizeMake(7.0, 3.0)) + ])); + _CPHUDWindowViewCloseImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "HUDTheme/WindowClose.png"), CPSizeMake(18.0, 18.0)); + _CPHUDWindowViewCloseActiveImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "HUDTheme/WindowCloseActive.png"), CPSizeMake(18.0, 18.0)); +} +},["void"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPHUDWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + var contentRect = CGRectMakeCopy(aFrameRect), + titleBarHeight = HUD_TITLEBAR_HEIGHT; + contentRect.origin.y += titleBarHeight; + contentRect.size.height -= titleBarHeight; + return contentRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPHUDWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + var frameRect = CGRectMakeCopy(aContentRect), + titleBarHeight = HUD_TITLEBAR_HEIGHT; + frameRect.origin.y -= titleBarHeight; + frameRect.size.height += titleBarHeight; + return frameRect; +} +},["CGRect","CGRect"])]); +} + +p;23;_CPStandardWindowView.jt;17553;@STATIC;1.0;i;15;_CPWindowView.jt;17513;objj_executeFile("_CPWindowView.j", YES); +var GRADIENT_HEIGHT = 41.0; +var _CPTexturedWindowHeadGradientColor = nil, + _CPTexturedWindowHeadSolidColor = nil; +{var the_class = objj_allocateClassPair(CPView, "_CPTexturedWindowHeadView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_gradientView"), new objj_ivar("_solidView"), new objj_ivar("_dividerView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPTexturedWindowHeadView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTexturedWindowHeadView").super_class }, "initWithFrame:", aFrame); + if (self) + { + var theClass = objj_msgSend(self, "class"), + bounds = objj_msgSend(self, "bounds"); + _gradientView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), GRADIENT_HEIGHT)); + objj_msgSend(_gradientView, "setBackgroundColor:", objj_msgSend(theClass, "gradientColor")); + objj_msgSend(self, "addSubview:", _gradientView); + _solidView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, GRADIENT_HEIGHT, CGRectGetWidth(bounds), CGRectGetHeight(bounds) - GRADIENT_HEIGHT)); + objj_msgSend(_solidView, "setBackgroundColor:", objj_msgSend(theClass, "solidColor")); + objj_msgSend(self, "addSubview:", _solidView); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $_CPTexturedWindowHeadView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + objj_msgSend(_gradientView, "setFrameSize:", CGSizeMake(CGRectGetWidth(bounds), GRADIENT_HEIGHT)); + objj_msgSend(_solidView, "setFrameSize:", CGSizeMake(CGRectGetWidth(bounds), CGRectGetHeight(bounds) - GRADIENT_HEIGHT)); +} +},["void","CGSize"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("gradientColor"), function $_CPTexturedWindowHeadView__gradientColor(self, _cmd) +{ with(self) +{ + if (!_CPTexturedWindowHeadGradientColor) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(_CPWindowView, "class")); + _CPTexturedWindowHeadGradientColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardTop0.png"), CGSizeMake(6.0, 41.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardTop1.png"), CGSizeMake(1.0, 41.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardTop2.png"), CGSizeMake(6.0, 41.0)) + ], NO + )); + } + return _CPTexturedWindowHeadGradientColor; +} +},["CPColor"]), new objj_method(sel_getUid("solidColor"), function $_CPTexturedWindowHeadView__solidColor(self, _cmd) +{ with(self) +{ + if (!_CPTexturedWindowHeadSolidColor) + _CPTexturedWindowHeadSolidColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 195.0 / 255.0, 195.0 / 255.0, 195.0 / 255.0, 1.0); + return _CPTexturedWindowHeadSolidColor; +} +},["CPColor"])]); +} +var _CPStandardWindowViewBodyBackgroundColor = nil, + _CPStandardWindowViewDividerBackgroundColor = nil, + _CPStandardWindowViewTitleBackgroundColor = nil, + _CPStandardWindowViewCloseButtonImage = nil, + _CPStandardWindowViewCloseButtonHighlightedImage = nil, + _CPStandardWindowViewCloseButtonUnsavedImage = nil, + _CPStandardWindowViewCloseButtonUnsavedHighlightedImage = nil, + _CPStandardWindowViewMinimizeButtonImage = nil, + _CPStandardWindowViewMinimizeButtonHighlightedImage = nil; +var STANDARD_GRADIENT_HEIGHT = 41.0; + STANDARD_TITLEBAR_HEIGHT = 25.0; +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPStandardWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_headView"), new objj_ivar("_dividerView"), new objj_ivar("_bodyView"), new objj_ivar("_toolbarView"), new objj_ivar("_titleField"), new objj_ivar("_closeButton"), new objj_ivar("_minimizeButton"), new objj_ivar("_isDocumentEdited")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPStandardWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + var contentRect = objj_msgSend(objj_msgSend(self, "class"), "contentRectForFrameRect:", aFrameRect), + theToolbar = objj_msgSend(objj_msgSend(self, "window"), "toolbar"); + if (objj_msgSend(theToolbar, "isVisible")) + { + toolbarHeight = CGRectGetHeight(objj_msgSend(objj_msgSend(theToolbar, "_toolbarView"), "frame")); + contentRect.origin.y += toolbarHeight; + contentRect.size.height -= toolbarHeight; + } + return contentRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPStandardWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + var frameRect = objj_msgSend(objj_msgSend(self, "class"), "frameRectForContentRect:", aContentRect), + theToolbar = objj_msgSend(objj_msgSend(self, "window"), "toolbar"); + if (objj_msgSend(theToolbar, "isVisible")) + { + toolbarHeight = CGRectGetHeight(objj_msgSend(objj_msgSend(theToolbar, "_toolbarView"), "frame")); + frameRect.origin.y -= toolbarHeight; + frameRect.size.height += toolbarHeight; + } + return frameRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("initWithFrame:styleMask:"), function $_CPStandardWindowView__initWithFrame_styleMask_(self, _cmd, aFrame, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPStandardWindowView").super_class }, "initWithFrame:styleMask:", aFrame, aStyleMask); + if (self) + { + var theClass = objj_msgSend(self, "class"), + bounds = objj_msgSend(self, "bounds"); + _headView = objj_msgSend(objj_msgSend(_CPTexturedWindowHeadView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), objj_msgSend(objj_msgSend(self, "class"), "titleBarHeight"))); + objj_msgSend(_headView, "setAutoresizingMask:", CPViewWidthSizable);; + objj_msgSend(_headView, "setHitTests:", NO); + objj_msgSend(self, "addSubview:", _headView); + _dividerView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, CGRectGetMaxY(objj_msgSend(_headView, "frame")), CGRectGetWidth(bounds), 1.0)); + objj_msgSend(_dividerView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_dividerView, "setBackgroundColor:", objj_msgSend(theClass, "dividerBackgroundColor")); + objj_msgSend(_dividerView, "setHitTests:", NO); + objj_msgSend(self, "addSubview:", _dividerView); + var y = CGRectGetMaxY(objj_msgSend(_dividerView, "frame")); + _bodyView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, y, CGRectGetWidth(bounds), CGRectGetHeight(bounds) - y)); + objj_msgSend(_bodyView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(_bodyView, "setBackgroundColor:", objj_msgSend(theClass, "bodyBackgroundColor")); + objj_msgSend(_bodyView, "setHitTests:", NO); + objj_msgSend(self, "addSubview:", _bodyView); + objj_msgSend(self, "setResizeIndicatorOffset:", CGSizeMake(2.0, 2.0)); + _titleField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_titleField, "setFont:", objj_msgSend(CPFont, "boldSystemFontOfSize:", 12.0)); + objj_msgSend(_titleField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_titleField, "setLineBreakMode:", CPLineBreakByTruncatingTail); + objj_msgSend(_titleField, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(_titleField, "setTextShadowColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_titleField, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_titleField, "setStringValue:", "Untitled"); + objj_msgSend(_titleField, "sizeToFit"); + objj_msgSend(_titleField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_titleField, "setStringValue:", ""); + objj_msgSend(self, "addSubview:", _titleField); + if (_styleMask & CPClosableWindowMask) + { + if (!_CPStandardWindowViewCloseButtonImage) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")); + _CPStandardWindowViewCloseButtonImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardCloseButton.png"), CGSizeMake(16.0, 16.0)); + _CPStandardWindowViewCloseButtonHighlightedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png"), CGSizeMake(16.0, 16.0)); + _CPStandardWindowViewCloseButtonUnsavedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png"), CGSizeMake(16.0, 16.0)); + _CPStandardWindowViewCloseButtonUnsavedHighlightedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png"), CGSizeMake(16.0, 16.0)); + } + _closeButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(8.0, 7.0, 16.0, 16.0)); + objj_msgSend(_closeButton, "setBordered:", NO); + objj_msgSend(self, "_updateCloseButton"); + objj_msgSend(self, "addSubview:", _closeButton); + } + if (_styleMask & CPMiniaturizableWindowMask && !objj_msgSend(CPPlatform, "isBrowser")) + { + if (!_CPStandardWindowViewMinimizeButtonImage) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")); + _CPStandardWindowViewMinimizeButtonImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardMinimizeButton.png"), CGSizeMake(16.0, 16.0)); + _CPStandardWindowViewMinimizeButtonHighlightedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png"), CGSizeMake(16.0, 16.0)); + } + _minimizeButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(27.0, 7.0, 16.0, 16.0)); + objj_msgSend(_minimizeButton, "setBordered:", NO); + objj_msgSend(_minimizeButton, "setImage:", _CPStandardWindowViewMinimizeButtonImage); + objj_msgSend(_minimizeButton, "setAlternateImage:", _CPStandardWindowViewMinimizeButtonHighlightedImage); + objj_msgSend(self, "addSubview:", _minimizeButton); + } + objj_msgSend(self, "tile"); + } + return self; +} +},["id","CPRect","unsigned"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $_CPStandardWindowView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ + objj_msgSend(_closeButton, "setTarget:", objj_msgSend(self, "window")); + objj_msgSend(_closeButton, "setAction:", sel_getUid("performClose:")); + objj_msgSend(_minimizeButton, "setTarget:", objj_msgSend(self, "window")); + objj_msgSend(_minimizeButton, "setAction:", sel_getUid("performMiniaturize:")); +} +},["void"]), new objj_method(sel_getUid("toolbarOffset"), function $_CPStandardWindowView__toolbarOffset(self, _cmd) +{ with(self) +{ + return CGSizeMake(0.0, objj_msgSend(objj_msgSend(self, "class"), "titleBarHeight")); +} +},["CGSize"]), new objj_method(sel_getUid("tile"), function $_CPStandardWindowView__tile(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPStandardWindowView").super_class }, "tile"); + var theWindow = objj_msgSend(self, "window"), + bounds = objj_msgSend(self, "bounds"), + width = CGRectGetWidth(bounds); + objj_msgSend(_headView, "setFrameSize:", CGSizeMake(width, objj_msgSend(self, "toolbarMaxY"))); + objj_msgSend(_dividerView, "setFrame:", CGRectMake(0.0, CGRectGetMaxY(objj_msgSend(_headView, "frame")), width, 1.0)); + var dividerMaxY = CGRectGetMaxY(objj_msgSend(_dividerView, "frame")); + objj_msgSend(_bodyView, "setFrame:", CGRectMake(0.0, dividerMaxY, width, CGRectGetHeight(bounds) - dividerMaxY)); + var leftOffset = 8; + if (_closeButton) + leftOffset += 19.0; + if (_minimizeButton) + leftOffset += 19.0; + objj_msgSend(_titleField, "setFrame:", CGRectMake(leftOffset, 5.0, width - leftOffset*2.0, CGRectGetHeight(objj_msgSend(_titleField, "frame")))); + objj_msgSend(objj_msgSend(theWindow, "contentView"), "setFrameOrigin:", CGPointMake(0.0, CGRectGetMaxY(objj_msgSend(_dividerView, "frame")))); +} +},["void"]), new objj_method(sel_getUid("_updateCloseButton"), function $_CPStandardWindowView___updateCloseButton(self, _cmd) +{ with(self) +{ + if (_isDocumentEdited) + { + objj_msgSend(_closeButton, "setImage:", _CPStandardWindowViewCloseButtonUnsavedImage); + objj_msgSend(_closeButton, "setAlternateImage:", _CPStandardWindowViewCloseButtonUnsavedHighlightedImage); + } + else + { + objj_msgSend(_closeButton, "setImage:", _CPStandardWindowViewCloseButtonImage); + objj_msgSend(_closeButton, "setAlternateImage:", _CPStandardWindowViewCloseButtonHighlightedImage); + } +} +},["void"]), new objj_method(sel_getUid("setDocumentEdited:"), function $_CPStandardWindowView__setDocumentEdited_(self, _cmd, isEdited) +{ with(self) +{ + _isDocumentEdited = isEdited; + objj_msgSend(self, "_updateCloseButton"); +} +},["void","BOOL"]), new objj_method(sel_getUid("setTitle:"), function $_CPStandardWindowView__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(_titleField, "setStringValue:", aTitle); +} +},["void","CPString"]), new objj_method(sel_getUid("mouseDown:"), function $_CPStandardWindowView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (CGRectContainsPoint(objj_msgSend(_headView, "frame"), objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil))) + return objj_msgSend(self, "trackMoveWithEvent:", anEvent); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPStandardWindowView").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("bodyBackgroundColor"), function $_CPStandardWindowView__bodyBackgroundColor(self, _cmd) +{ with(self) +{ + if (!_CPStandardWindowViewBodyBackgroundColor) + _CPStandardWindowViewBodyBackgroundColor = objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.96, 1.0); + return _CPStandardWindowViewBodyBackgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("dividerBackgroundColor"), function $_CPStandardWindowView__dividerBackgroundColor(self, _cmd) +{ with(self) +{ + if (!_CPStandardWindowViewDividerBackgroundColor) + _CPStandardWindowViewDividerBackgroundColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 125.0 / 255.0, 125.0 / 255.0, 125.0 / 255.0, 1.0); + return _CPStandardWindowViewDividerBackgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("titleColor"), function $_CPStandardWindowView__titleColor(self, _cmd) +{ with(self) +{ + if (!_CPStandardWindowViewTitleBackgroundColor) + _CPStandardWindowViewTitleBackgroundColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 44.0 / 255.0, 44.0 / 255.0, 44.0 / 255.0, 1.0); + return _CPStandardWindowViewTitleBackgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPStandardWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + var contentRect = CGRectMakeCopy(aFrameRect), + titleBarHeight = objj_msgSend(self, "titleBarHeight") + 1.0; + contentRect.origin.y += titleBarHeight; + contentRect.size.height -= titleBarHeight; + return contentRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPStandardWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + var frameRect = CGRectMakeCopy(aContentRect), + titleBarHeight = objj_msgSend(self, "titleBarHeight") + 1.0; + frameRect.origin.y -= titleBarHeight; + frameRect.size.height += titleBarHeight; + return frameRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("titleBarHeight"), function $_CPStandardWindowView__titleBarHeight(self, _cmd) +{ with(self) +{ + return STANDARD_TITLEBAR_HEIGHT; +} +},["float"])]); +} + +p;15;_CPWindowView.jt;13278;@STATIC;1.0;i;8;CPView.ji;13;CPImageView.jt;13228;objj_executeFile("CPView.j", YES); +objj_executeFile("CPImageView.j", YES); +var _CPWindowViewResizeIndicatorImage = nil; +{var the_class = objj_allocateClassPair(CPView, "_CPWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_styleMask"), new objj_ivar("_resizeIndicator"), new objj_ivar("_resizeIndicatorOffset"), new objj_ivar("_toolbarView"), new objj_ivar("_toolbarOffset"), new objj_ivar("_resizeFrame"), new objj_ivar("_mouseDraggedPoint"), new objj_ivar("_cachedScreenFrame")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "contentRectForFrameRect:", aFrameRect); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "frameRectForContentRect:", aContentRect); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("initWithFrame:styleMask:"), function $_CPWindowView__initWithFrame_styleMask_(self, _cmd, aFrame, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _styleMask = aStyleMask; + _resizeIndicatorOffset = CGSizeMakeZero(); + _toolbarOffset = CGSizeMakeZero(); + } + return self; +} +},["id","CPRect","unsigned"]), new objj_method(sel_getUid("setDocumentEdited:"), function $_CPWindowView__setDocumentEdited_(self, _cmd, isEdited) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("setTitle:"), function $_CPWindowView__setTitle_(self, _cmd, aTitle) +{ with(self) +{ +} +},["void","CPString"]), new objj_method(sel_getUid("acceptsFirstMouse:"), function $_CPWindowView__acceptsFirstMouse_(self, _cmd, anEvent) +{ with(self) +{ + return YES; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("mouseDown:"), function $_CPWindowView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"); + if ((_styleMask & CPResizableWindowMask) && _resizeIndicator) + { + var frame = objj_msgSend(_resizeIndicator, "frame"); + if (CGRectContainsPoint(frame, objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil))) + return objj_msgSend(self, "trackResizeWithEvent:", anEvent); + } + if (objj_msgSend(theWindow, "isMovableByWindowBackground")) + objj_msgSend(self, "trackMoveWithEvent:", anEvent); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowView").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackResizeWithEvent:"), function $_CPWindowView__trackResizeWithEvent_(self, _cmd, anEvent) +{ with(self) +{ + var location = objj_msgSend(anEvent, "locationInWindow"), + type = objj_msgSend(anEvent, "type"); + if (type === CPLeftMouseUp) + return; + var theWindow = objj_msgSend(self, "window"); + if (type === CPLeftMouseDown) + { + var frame = objj_msgSend(theWindow, "frame"); + _resizeFrame = CGRectMake(location.x, location.y, CGRectGetWidth(frame), CGRectGetHeight(frame)); + } + else if (type === CPLeftMouseDragged) + { + var newSize = CGSizeMake(CGRectGetWidth(_resizeFrame) + location.x - CGRectGetMinX(_resizeFrame), CGRectGetHeight(_resizeFrame) + location.y - CGRectGetMinY(_resizeFrame)); + if (theWindow._isSheet && theWindow._parentView && (theWindow._frame.size.width !== newSize.width)) + objj_msgSend(theWindow._parentView, "_setAttachedSheetFrameOrigin"); + objj_msgSend(theWindow, "setFrameSize:", newSize); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackResizeWithEvent:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_pointWithinScreenFrame:"), function $_CPWindowView___pointWithinScreenFrame_(self, _cmd, aPoint) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "isBrowser")) + return aPoint; + var visibleFrame = _cachedScreenFrame; + if (!visibleFrame) + visibleFrame = objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "visibleFrame"); + var minPointY = 0; + if(objj_msgSend(CPMenu, "menuBarVisible")) + minPointY = objj_msgSend(objj_msgSend(CPApp, "mainMenu"), "menuBarHeight"); + var restrictedPoint = CGPointMake(0, 0); + restrictedPoint.x = MIN(MAX(aPoint.x, -_frame.size.width + 4.0), CGRectGetMaxX(visibleFrame) - 4.0); + restrictedPoint.y = MIN(MAX(aPoint.y, minPointY), CGRectGetMaxY(visibleFrame) - 8.0); + return restrictedPoint; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("trackMoveWithEvent:"), function $_CPWindowView__trackMoveWithEvent_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + if (type === CPLeftMouseUp) + { + _cachedScreenFrame = nil; + return; + } + else if (type === CPLeftMouseDown) + { + _mouseDraggedPoint = objj_msgSend(objj_msgSend(self, "window"), "convertBaseToGlobal:", objj_msgSend(anEvent, "locationInWindow")); + _cachedScreenFrame = objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "visibleFrame"); + } + else if (type === CPLeftMouseDragged) + { + var theWindow = objj_msgSend(self, "window"), + frame = objj_msgSend(theWindow, "frame"), + location = objj_msgSend(theWindow, "convertBaseToGlobal:", objj_msgSend(anEvent, "locationInWindow")), + origin = objj_msgSend(self, "_pointWithinScreenFrame:", CGPointMake((frame.origin.x) + (location.x - _mouseDraggedPoint.x), + (frame.origin.y) + (location.y - _mouseDraggedPoint.y))); + objj_msgSend(theWindow, "setFrameOrigin:", origin); + _mouseDraggedPoint = objj_msgSend(self, "_pointWithinScreenFrame:", location); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackMoveWithEvent:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setShowsResizeIndicator:"), function $_CPWindowView__setShowsResizeIndicator_(self, _cmd, shouldShowResizeIndicator) +{ with(self) +{ + if (shouldShowResizeIndicator) + { + var size = objj_msgSend(_CPWindowViewResizeIndicatorImage, "size"), + boundsSize = objj_msgSend(self, "frame").size; + _resizeIndicator = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMake(boundsSize.width - size.width - _resizeIndicatorOffset.width, boundsSize.height - size.height - _resizeIndicatorOffset.height, size.width, size.height)); + objj_msgSend(_resizeIndicator, "setImage:", _CPWindowViewResizeIndicatorImage); + objj_msgSend(_resizeIndicator, "setAutoresizingMask:", CPViewMinXMargin | CPViewMinYMargin); + objj_msgSend(self, "addSubview:", _resizeIndicator); + } + else + { + objj_msgSend(_resizeIndicator, "removeFromSuperview"); + _resizeIndicator = nil; + } +} +},["void","BOOL"]), new objj_method(sel_getUid("showsResizeIndicator"), function $_CPWindowView__showsResizeIndicator(self, _cmd) +{ with(self) +{ + return _resizeIndicator !== nil; +} +},["BOOL"]), new objj_method(sel_getUid("setResizeIndicatorOffset:"), function $_CPWindowView__setResizeIndicatorOffset_(self, _cmd, anOffset) +{ with(self) +{ + if (CGSizeEqualToSize(_resizeIndicatorOffset, anOffset)) + return; + _resizeIndicatorOffset = anOffset; + if (!_resizeIndicator) + return; + var size = objj_msgSend(_resizeIndicator, "frame").size, + boundsSize = objj_msgSend(self, "frame").size; + objj_msgSend(_resizeIndicator, "setFrameOrigin:", CGPointMake(boundsSize.width - size.width - anOffset.width, boundsSize.height - size.height - anOffset.height)); +} +},["void","CGSize"]), new objj_method(sel_getUid("resizeIndicatorOffset"), function $_CPWindowView__resizeIndicatorOffset(self, _cmd) +{ with(self) +{ + return _resizeIndicatorOffset; +} +},["CGSize"]), new objj_method(sel_getUid("windowDidChangeDocumentEdited"), function $_CPWindowView__windowDidChangeDocumentEdited(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("windowDidChangeDocumentSaving"), function $_CPWindowView__windowDidChangeDocumentSaving(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("showsToolbar"), function $_CPWindowView__showsToolbar(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("toolbarOffset"), function $_CPWindowView__toolbarOffset(self, _cmd) +{ with(self) +{ + return _toolbarOffset; +} +},["CGSize"]), new objj_method(sel_getUid("toolbarLabelColor"), function $_CPWindowView__toolbarLabelColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPColor, "blackColor"); +} +},["CPColor"]), new objj_method(sel_getUid("toolbarMaxY"), function $_CPWindowView__toolbarMaxY(self, _cmd) +{ with(self) +{ + if (!_toolbarView || objj_msgSend(_toolbarView, "isHidden")) + return objj_msgSend(self, "toolbarOffset").height; + return CGRectGetMaxY(objj_msgSend(_toolbarView, "frame")); +} +},["float"]), new objj_method(sel_getUid("toolbarView"), function $_CPWindowView__toolbarView(self, _cmd) +{ with(self) +{ + return _toolbarView; +} +},["_CPToolbarView"]), new objj_method(sel_getUid("tile"), function $_CPWindowView__tile(self, _cmd) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"), + bounds = objj_msgSend(self, "bounds"), + width = CGRectGetWidth(bounds); + if (objj_msgSend(objj_msgSend(theWindow, "toolbar"), "isVisible")) + { + var toolbarView = objj_msgSend(self, "toolbarView"), + toolbarOffset = objj_msgSend(self, "toolbarOffset"); + objj_msgSend(toolbarView, "setFrame:", CGRectMake(toolbarOffset.width, toolbarOffset.height, width, CGRectGetHeight(objj_msgSend(toolbarView, "frame")))); + } + if (objj_msgSend(self, "showsResizeIndicator")) + { + var size = objj_msgSend(_resizeIndicator, "frame").size, + boundsSize = objj_msgSend(self, "bounds").size; + objj_msgSend(_resizeIndicator, "setFrameOrigin:", CGPointMake(boundsSize.width - size.width - _resizeIndicatorOffset.width, boundsSize.height - size.height - _resizeIndicatorOffset.height)); + } +} +},["void"]), new objj_method(sel_getUid("noteToolbarChanged"), function $_CPWindowView__noteToolbarChanged(self, _cmd) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"), + toolbar = objj_msgSend(theWindow, "toolbar"), + toolbarView = objj_msgSend(toolbar, "_toolbarView"); + if (_toolbarView !== toolbarView) + { + objj_msgSend(_toolbarView, "removeFromSuperview"); + if (toolbarView) + { + objj_msgSend(toolbarView, "removeFromSuperview"); + objj_msgSend(toolbarView, "FIXME_setIsHUD:", _styleMask & CPHUDBackgroundWindowMask); + objj_msgSend(self, "addSubview:", toolbarView); + } + _toolbarView = toolbarView; + } + objj_msgSend(toolbarView, "setHidden:", !objj_msgSend(self, "showsToolbar") || !objj_msgSend(toolbar, "isVisible")); + if (theWindow) + { + var contentRect = objj_msgSend(self, "convertRect:toView:", objj_msgSend(objj_msgSend(theWindow, "contentView"), "frame"), nil); + contentRect.origin = objj_msgSend(theWindow, "convertBaseToGlobal:", contentRect.origin); + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(theWindow, "setFrame:", objj_msgSend(theWindow, "frameRectForContentRect:", contentRect)); + objj_msgSend(self, "setAutoresizesSubviews:", YES); + } + objj_msgSend(self, "tile"); +} +},["void"]), new objj_method(sel_getUid("didAddSubview:"), function $_CPWindowView__didAddSubview_(self, _cmd, aView) +{ with(self) +{ + if (!_resizeIndicator || aView === _resizeIndicator) + return; + objj_msgSend(self, "addSubview:", _resizeIndicator); +} +},["void","CPView"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPWindowView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPWindowView, "class")) + return; + _CPWindowViewResizeIndicatorImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")), "pathForResource:", "_CPWindowView/_CPWindowViewResizeIndicator.png"), CGSizeMake(12.0, 12.0)); +} +},["void"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + return CGRectMakeCopy(aFrameRect); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + return CGRectMakeCopy(aContentRect); +} +},["CGRect","CGRect"])]); +} + +p;10;CPWindow.jt;86768;@STATIC;1.0;I;25;Foundation/CPCountedSet.jI;33;Foundation/CPNotificationCenter.jI;26;Foundation/CPUndoManager.ji;12;CGGeometry.ji;13;CPAnimation.ji;13;CPResponder.ji;10;CPScreen.ji;18;CPPlatformWindow.ji;15;_CPWindowView.ji;23;_CPStandardWindowView.ji;23;_CPDocModalWindowView.ji;18;_CPHUDWindowView.ji;25;_CPBorderlessWindowView.ji;31;_CPBorderlessBridgeWindowView.ji;14;CPDragServer.ji;8;CPView.jt;86362;objj_executeFile("Foundation/CPCountedSet.j", NO); +objj_executeFile("Foundation/CPNotificationCenter.j", NO); +objj_executeFile("Foundation/CPUndoManager.j", NO); +objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPAnimation.j", YES); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPScreen.j", YES); +objj_executeFile("CPPlatformWindow.j", YES); +CPBorderlessWindowMask = 0; +CPTitledWindowMask = 1 << 0; +CPClosableWindowMask = 1 << 1; +CPMiniaturizableWindowMask = 1 << 2; +CPResizableWindowMask = 1 << 3; +CPTexturedBackgroundWindowMask = 1 << 8; +CPBorderlessBridgeWindowMask = 1 << 20; +CPHUDBackgroundWindowMask = 1 << 21; +CPWindowNotSizable = 0; +CPWindowMinXMargin = 1; +CPWindowWidthSizable = 2; +CPWindowMaxXMargin = 4; +CPWindowMinYMargin = 8; +CPWindowHeightSizable = 16; +CPWindowMaxYMargin = 32; +CPBackgroundWindowLevel = -1; +CPNormalWindowLevel = 0; +CPFloatingWindowLevel = 3; +CPSubmenuWindowLevel = 3; +CPTornOffMenuWindowLevel = 3; +CPMainMenuWindowLevel = 24; +CPStatusWindowLevel = 25; +CPModalPanelWindowLevel = 8; +CPPopUpMenuWindowLevel = 101; +CPDraggingWindowLevel = 500; +CPScreenSaverWindowLevel = 1000; +CPWindowOut = 0; +CPWindowAbove = 1; +CPWindowBelow = 2; +CPWindowWillCloseNotification = "CPWindowWillCloseNotification"; +CPWindowDidBecomeMainNotification = "CPWindowDidBecomeMainNotification"; +CPWindowDidResignMainNotification = "CPWindowDidResignMainNotification"; +CPWindowDidBecomeKeyNotification = "CPWindowDidBecomeKeyNotification"; +CPWindowDidResignKeyNotification = "CPWindowDidResignKeyNotification"; +CPWindowDidResizeNotification = "CPWindowDidResizeNotification"; +CPWindowDidMoveNotification = "CPWindowDidMoveNotification"; +CPWindowWillBeginSheetNotification = "CPWindowWillBeginSheetNotification"; +CPWindowDidEndSheetNotification = "CPWindowDidEndSheetNotification"; +CPWindowDidMiniaturizeNotification = "CPWindowDidMiniaturizeNotification"; +CPWindowWillMiniaturizeNotification = "CPWindowWillMiniaturizeNotification"; +CPWindowDidDeminiaturizeNotification = "CPWindowDidDeminiaturizeNotification"; +CPWindowShadowStyleStandard = 0; +CPWindowShadowStyleMenu = 1; +CPWindowShadowStylePanel = 2; +var SHADOW_MARGIN_LEFT = 20.0, + SHADOW_MARGIN_RIGHT = 19.0, + SHADOW_MARGIN_TOP = 10.0, + SHADOW_MARGIN_BOTTOM = 10.0, + SHADOW_DISTANCE = 5.0, + _CPWindowShadowColor = nil; +var CPWindowSaveImage = nil, + CPWindowSavingImage = nil; +var CPWindowResizeTime = 0.2; +{var the_class = objj_allocateClassPair(CPResponder, "CPWindow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_platformWindow"), new objj_ivar("_windowNumber"), new objj_ivar("_styleMask"), new objj_ivar("_frame"), new objj_ivar("_level"), new objj_ivar("_isVisible"), new objj_ivar("_isMiniaturized"), new objj_ivar("_isAnimating"), new objj_ivar("_hasShadow"), new objj_ivar("_isMovableByWindowBackground"), new objj_ivar("_shadowStyle"), new objj_ivar("_showsResizeIndicator"), new objj_ivar("_isDocumentEdited"), new objj_ivar("_isDocumentSaving"), new objj_ivar("_shadowView"), new objj_ivar("_windowView"), new objj_ivar("_contentView"), new objj_ivar("_toolbarView"), new objj_ivar("_mouseEnteredStack"), new objj_ivar("_leftMouseDownView"), new objj_ivar("_rightMouseDownView"), new objj_ivar("_toolbar"), new objj_ivar("_firstResponder"), new objj_ivar("_initialFirstResponder"), new objj_ivar("_delegate"), new objj_ivar("_title"), new objj_ivar("_acceptsMouseMovedEvents"), new objj_ivar("_ignoresMouseEvents"), new objj_ivar("_windowController"), new objj_ivar("_minSize"), new objj_ivar("_maxSize"), new objj_ivar("_undoManager"), new objj_ivar("_representedURL"), new objj_ivar("_registeredDraggedTypes"), new objj_ivar("_registeredDraggedTypesArray"), new objj_ivar("_inclusiveRegisteredDraggedTypes"), new objj_ivar("_defaultButton"), new objj_ivar("_defaultButtonEnabled"), new objj_ivar("_autorecalculatesKeyViewLoop"), new objj_ivar("_keyViewLoopIsDirty"), new objj_ivar("_sharesChromeWithPlatformWindow"), new objj_ivar("_DOMElement"), new objj_ivar("_autoresizingMask"), new objj_ivar("_delegateRespondsToWindowWillReturnUndoManagerSelector"), new objj_ivar("_isFullPlatformWindow"), new objj_ivar("_fullPlatformWindowSession"), new objj_ivar("_sheetContext"), new objj_ivar("_parentView"), new objj_ivar("_isSheet"), new objj_ivar("_frameAnimation")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPWindow__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithContentRect:styleMask:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }, CPTitledWindowMask); +} +},["id"]), new objj_method(sel_getUid("initWithContentRect:styleMask:"), function $CPWindow__initWithContentRect_styleMask_(self, _cmd, aContentRect, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWindow").super_class }, "init"); + if (self) + { + var windowViewClass = objj_msgSend(objj_msgSend(self, "class"), "_windowViewClassForStyleMask:", aStyleMask); + _frame = objj_msgSend(windowViewClass, "frameRectForContentRect:", aContentRect); + objj_msgSend(self, "_setSharesChromeWithPlatformWindow:", !objj_msgSend(CPPlatform, "isBrowser")); + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(self, "setPlatformWindow:", objj_msgSend(CPPlatformWindow, "primaryPlatformWindow")); + else + { + if ((aStyleMask & CPBorderlessBridgeWindowMask) && aContentRect.size.width === 0 && aContentRect.size.height === 0) + { + var visibleFrame = objj_msgSend(objj_msgSend(objj_msgSend(CPScreen, "alloc"), "init"), "visibleFrame"); + _frame.size.height = MIN(768.0, visibleFrame.size.height); + _frame.size.width = MIN(1024.0, visibleFrame.size.width); + _frame.origin.x = (visibleFrame.size.width - _frame.size.width) / 2; + _frame.origin.y = (visibleFrame.size.height - _frame.size.height) / 2; + } + objj_msgSend(self, "setPlatformWindow:", objj_msgSend(objj_msgSend(CPPlatformWindow, "alloc"), "initWithContentRect:", _frame)); + objj_msgSend(self, "platformWindow")._only = self; + } + _isFullPlatformWindow = NO; + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; + _isSheet = NO; + _windowNumber = objj_msgSend(CPApp._windows, "count"); + CPApp._windows[_windowNumber] = self; + _styleMask = aStyleMask; + objj_msgSend(self, "setLevel:", CPNormalWindowLevel); + _minSize = CGSizeMake(0.0, 0.0); + _maxSize = CGSizeMake(1000000.0, 1000000.0); + _windowView = objj_msgSend(objj_msgSend(windowViewClass, "alloc"), "initWithFrame:styleMask:", CGRectMake(0.0, 0.0, CGRectGetWidth(_frame), CGRectGetHeight(_frame)), aStyleMask); + objj_msgSend(_windowView, "_setWindow:", self); + objj_msgSend(_windowView, "setNextResponder:", self); + objj_msgSend(self, "setMovableByWindowBackground:", aStyleMask & CPHUDBackgroundWindowMask); + objj_msgSend(self, "setContentView:", objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero())); + _firstResponder = self; + _DOMElement = document.createElement("div"); + _DOMElement.style.position = "absolute"; + _DOMElement.style.visibility = "visible"; + _DOMElement.style.zIndex = 0; + if (!objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + { + if (NULL) var ____p = _CGPointApplyAffineTransform(CGPointMake((_frame.origin.x), (_frame.origin.y)), NULL); else var ____p = { x:(_frame.origin.x), y:(_frame.origin.y) }; _DOMElement.style.left = ROUND(____p.x) + "px";_DOMElement.style.top = ROUND(____p.y) + "px";; + } + _DOMElement.style.width = MAX(0.0, ROUND(1)) + "px"; _DOMElement.style.height = MAX(0.0, ROUND(1)) + "px";; + _DOMElement.appendChild(_windowView._DOMElement); + objj_msgSend(self, "setNextResponder:", CPApp); + objj_msgSend(self, "setHasShadow:", aStyleMask !== CPBorderlessWindowMask); + if (aStyleMask & CPBorderlessBridgeWindowMask) + objj_msgSend(self, "setFullPlatformWindow:", YES); + _defaultButtonEnabled = YES; + _keyViewLoopIsDirty = YES; + objj_msgSend(self, "setShowsResizeIndicator:", _styleMask & CPResizableWindowMask); + } + return self; +} +},["id","CGRect","unsignedint"]), new objj_method(sel_getUid("platformWindow"), function $CPWindow__platformWindow(self, _cmd) +{ with(self) +{ + return _platformWindow; +} +},["CPPlatformWindow"]), new objj_method(sel_getUid("setPlatformWindow:"), function $CPWindow__setPlatformWindow_(self, _cmd, aPlatformWindow) +{ with(self) +{ + _platformWindow = aPlatformWindow; +} +},["void","CPPlatformWindow"]), new objj_method(sel_getUid("awakeFromCib"), function $CPWindow__awakeFromCib(self, _cmd) +{ with(self) +{ + _keyViewLoopIsDirty = !objj_msgSend(self, "_hasKeyViewLoop"); +} +},["void"]), new objj_method(sel_getUid("_setWindowView:"), function $CPWindow___setWindowView_(self, _cmd, aWindowView) +{ with(self) +{ + if (_windowView === aWindowView) + return; + var oldWindowView = _windowView; + _windowView = aWindowView; + if (oldWindowView) + { + objj_msgSend(oldWindowView, "_setWindow:", nil); + objj_msgSend(oldWindowView, "noteToolbarChanged"); + _DOMElement.removeChild(oldWindowView._DOMElement); + } + if (_windowView) + { + _DOMElement.appendChild(_windowView._DOMElement); + var contentRect = objj_msgSend(_contentView, "convertRect:toView:", objj_msgSend(_contentView, "bounds"), nil); + contentRect.origin = objj_msgSend(self, "convertBaseToGlobal:", contentRect.origin); + objj_msgSend(_windowView, "_setWindow:", self); + objj_msgSend(_windowView, "setNextResponder:", self); + objj_msgSend(_windowView, "addSubview:", _contentView); + objj_msgSend(_windowView, "setTitle:", _title); + objj_msgSend(_windowView, "noteToolbarChanged"); + objj_msgSend(_windowView, "setShowsResizeIndicator:", objj_msgSend(self, "showsResizeIndicator")); + objj_msgSend(self, "setFrame:", objj_msgSend(self, "frameRectForContentRect:", contentRect)); + } +} +},["void","CPView"]), new objj_method(sel_getUid("setFullPlatformWindow:"), function $CPWindow__setFullPlatformWindow_(self, _cmd, shouldBeFullPlatformWindow) +{ with(self) +{ + if (!objj_msgSend(_platformWindow, "supportsFullPlatformWindows")) + return; + shouldBeFullPlatformWindow = !!shouldBeFullPlatformWindow; + if (_isFullPlatformWindow === shouldBeFullPlatformWindow) + return; + _isFullPlatformWindow = shouldBeFullPlatformWindow; + if (_isFullPlatformWindow) + { + _fullPlatformWindowSession = _CPWindowFullPlatformWindowSessionMake(_windowView, objj_msgSend(self, "contentRectForFrameRect:", objj_msgSend(self, "frame")), objj_msgSend(self, "hasShadow"), objj_msgSend(self, "level")); + var fullPlatformWindowViewClass = objj_msgSend(objj_msgSend(self, "class"), "_windowViewClassForFullPlatformWindowStyleMask:", _styleMask), + windowView = objj_msgSend(objj_msgSend(fullPlatformWindowViewClass, "alloc"), "initWithFrame:styleMask:", CGRectMakeZero(), _styleMask); + objj_msgSend(self, "_setWindowView:", windowView); + objj_msgSend(self, "setLevel:", CPBackgroundWindowLevel); + objj_msgSend(self, "setHasShadow:", NO); + objj_msgSend(self, "setAutoresizingMask:", CPWindowWidthSizable | CPWindowHeightSizable); + objj_msgSend(self, "setFrame:", objj_msgSend(_platformWindow, "visibleFrame")); + } + else + { + var windowView = _fullPlatformWindowSession.windowView; + objj_msgSend(self, "_setWindowView:", windowView); + objj_msgSend(self, "setLevel:", _fullPlatformWindowSession.level); + objj_msgSend(self, "setHasShadow:", _fullPlatformWindowSession.hasShadow); + objj_msgSend(self, "setAutoresizingMask:", CPWindowNotSizable); + objj_msgSend(self, "setFrame:", objj_msgSend(windowView, "frameRectForContentRect:", _fullPlatformWindowSession.contentRect)); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("isFullPlatformWindow"), function $CPWindow__isFullPlatformWindow(self, _cmd) +{ with(self) +{ + return _isFullPlatformWindow; +} +},["BOOL"]), new objj_method(sel_getUid("styleMask"), function $CPWindow__styleMask(self, _cmd) +{ with(self) +{ + return _styleMask; +} +},["unsigned"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $CPWindow__contentRectForFrameRect_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(_windowView, "contentRectForFrameRect:", aFrame); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $CPWindow__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + return objj_msgSend(_windowView, "frameRectForContentRect:", aContentRect); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frame"), function $CPWindow__frame(self, _cmd) +{ with(self) +{ + return { origin: { x:_frame.origin.x, y:_frame.origin.y }, size: { width:_frame.size.width, height:_frame.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("_setClippedFrame:display:animate:"), function $CPWindow___setClippedFrame_display_animate_(self, _cmd, aFrame, shouldDisplay, shouldAnimate) +{ with(self) +{ + aFrame.size.width = MIN(MAX(aFrame.size.width, _minSize.width), _maxSize.width) + aFrame.size.height = MIN(MAX(aFrame.size.height, _minSize.height), _maxSize.height); + objj_msgSend(self, "setFrame:display:animate:", aFrame, shouldDisplay, shouldAnimate); +} +},["void","CGRect","BOOL","BOOL"]), new objj_method(sel_getUid("setFrame:display:animate:"), function $CPWindow__setFrame_display_animate_(self, _cmd, aFrame, shouldDisplay, shouldAnimate) +{ with(self) +{ + aFrame = { origin: { x:aFrame.origin.x, y:aFrame.origin.y }, size: { width:aFrame.size.width, height:aFrame.size.height } }; + var value = aFrame.origin.x, + delta = value - FLOOR(value); + if (delta) + aFrame.origin.x = value > 0.879 ? CEIL(value) : FLOOR(value); + value = aFrame.origin.y; + delta = value - FLOOR(value); + if (delta) + aFrame.origin.y = value > 0.879 ? CEIL(value) : FLOOR(value); + value = aFrame.size.width; + delta = value - FLOOR(value); + if (delta) + aFrame.size.width = value > 0.15 ? CEIL(value) : FLOOR(value); + value = aFrame.size.height; + delta = value - FLOOR(value); + if (delta) + aFrame.size.height = value > 0.15 ? CEIL(value) : FLOOR(value); + if (shouldAnimate) + { + objj_msgSend(_frameAnimation, "stopAnimation"); + _frameAnimation = objj_msgSend(objj_msgSend(_CPWindowFrameAnimation, "alloc"), "initWithWindow:targetFrame:", self, aFrame); + objj_msgSend(_frameAnimation, "startAnimation"); + } + else + { + var origin = _frame.origin, + newOrigin = aFrame.origin; + if (!(origin.x == newOrigin.x && origin.y == newOrigin.y)) + { + origin.x = newOrigin.x; + origin.y = newOrigin.y; + if (!objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + { + if (NULL) var ____p = _CGPointApplyAffineTransform(CGPointMake(origin.x, origin.y), NULL); else var ____p = { x:origin.x, y:origin.y }; _DOMElement.style.left = ROUND(____p.x) + "px";_DOMElement.style.top = ROUND(____p.y) + "px";; + } + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidMoveNotification, self); + } + var size = _frame.size, + newSize = aFrame.size; + if (!(size.width == newSize.width && size.height == newSize.height)) + { + size.width = newSize.width; + size.height = newSize.height; + objj_msgSend(_windowView, "setFrameSize:", size); + if (_hasShadow) + objj_msgSend(_shadowView, "setFrameSize:", { width:SHADOW_MARGIN_LEFT + size.width + SHADOW_MARGIN_RIGHT, height:SHADOW_MARGIN_BOTTOM + size.height + SHADOW_MARGIN_TOP + SHADOW_DISTANCE }); + if (!_isAnimating) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidResizeNotification, self); + } + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + objj_msgSend(_platformWindow, "setContentRect:", _frame); + } +} +},["void","CGRect","BOOL","BOOL"]), new objj_method(sel_getUid("setFrame:display:"), function $CPWindow__setFrame_display_(self, _cmd, aFrame, shouldDisplay) +{ with(self) +{ + objj_msgSend(self, "_setClippedFrame:display:animate:", aFrame, shouldDisplay, NO); +} +},["void","CGRect","BOOL"]), new objj_method(sel_getUid("setFrame:"), function $CPWindow__setFrame_(self, _cmd, aFrame) +{ with(self) +{ + objj_msgSend(self, "_setClippedFrame:display:animate:", aFrame, YES, NO); +} +},["void","CGRect"]), new objj_method(sel_getUid("setFrameOrigin:"), function $CPWindow__setFrameOrigin_(self, _cmd, anOrigin) +{ with(self) +{ + objj_msgSend(self, "_setClippedFrame:display:animate:", { origin: { x:anOrigin.x, y:anOrigin.y }, size: { width:(_frame.size.width), height:(_frame.size.height) } }, YES, NO); +} +},["void","CGPoint"]), new objj_method(sel_getUid("setFrameSize:"), function $CPWindow__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "_setClippedFrame:display:animate:", { origin: { x:(_frame.origin.x), y:(_frame.origin.y) }, size: { width:aSize.width, height:aSize.height } }, YES, NO); +} +},["void","CGSize"]), new objj_method(sel_getUid("orderFront:"), function $CPWindow__orderFront_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(_platformWindow, "orderFront:", self); + objj_msgSend(_platformWindow, "order:window:relativeTo:", CPWindowAbove, self, nil); + if (_firstResponder === self || !_firstResponder) + objj_msgSend(self, "makeFirstResponder:", objj_msgSend(self, "initialFirstResponder")); + if (!CPApp._keyWindow) + objj_msgSend(self, "makeKeyWindow"); + if (!CPApp._mainWindow) + objj_msgSend(self, "makeMainWindow"); +} +},["void","id"]), new objj_method(sel_getUid("orderBack:"), function $CPWindow__orderBack_(self, _cmd, aSender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("orderOut:"), function $CPWindow__orderOut_(self, _cmd, aSender) +{ with(self) +{ + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + objj_msgSend(_platformWindow, "orderOut:", self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowWillClose:"))) + objj_msgSend(_delegate, "windowWillClose:", self); + objj_msgSend(_platformWindow, "order:window:relativeTo:", CPWindowOut, self, nil); + objj_msgSend(self, "_updateMainAndKeyWindows"); +} +},["void","id"]), new objj_method(sel_getUid("orderWindow:relativeTo:"), function $CPWindow__orderWindow_relativeTo_(self, _cmd, aPlace, otherWindowNumber) +{ with(self) +{ + objj_msgSend(_platformWindow, "order:window:relativeTo:", aPlace, self, CPApp._windows[otherWindowNumber]); +} +},["void","CPWindowOrderingMode","int"]), new objj_method(sel_getUid("setLevel:"), function $CPWindow__setLevel_(self, _cmd, aLevel) +{ with(self) +{ + if (aLevel === _level) + return; + objj_msgSend(_platformWindow, "moveWindow:fromLevel:toLevel:", self, _level, aLevel); + _level = aLevel; + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + objj_msgSend(_platformWindow, "setLevel:", aLevel); +} +},["void","int"]), new objj_method(sel_getUid("level"), function $CPWindow__level(self, _cmd) +{ with(self) +{ + return _level; +} +},["int"]), new objj_method(sel_getUid("isVisible"), function $CPWindow__isVisible(self, _cmd) +{ with(self) +{ + return _isVisible; +} +},["BOOL"]), new objj_method(sel_getUid("showsResizeIndicator"), function $CPWindow__showsResizeIndicator(self, _cmd) +{ with(self) +{ + return _showsResizeIndicator; +} +},["BOOL"]), new objj_method(sel_getUid("setShowsResizeIndicator:"), function $CPWindow__setShowsResizeIndicator_(self, _cmd, shouldShowResizeIndicator) +{ with(self) +{ + shouldShowResizeIndicator = !!shouldShowResizeIndicator; + if (_showsResizeIndicator === shouldShowResizeIndicator) + return; + _showsResizeIndicator = shouldShowResizeIndicator; + objj_msgSend(_windowView, "setShowsResizeIndicator:", objj_msgSend(self, "showsResizeIndicator")); +} +},["void","BOOL"]), new objj_method(sel_getUid("resizeIndicatorOffset"), function $CPWindow__resizeIndicatorOffset(self, _cmd) +{ with(self) +{ + return objj_msgSend(_windowView, "resizeIndicatorOffset"); +} +},["CGSize"]), new objj_method(sel_getUid("setResizeIndicatorOffset:"), function $CPWindow__setResizeIndicatorOffset_(self, _cmd, anOffset) +{ with(self) +{ + objj_msgSend(_windowView, "setResizeIndicatorOffset:", anOffset); +} +},["void","CGSize"]), new objj_method(sel_getUid("setContentView:"), function $CPWindow__setContentView_(self, _cmd, aView) +{ with(self) +{ + if (_contentView) + objj_msgSend(_contentView, "removeFromSuperview"); + var bounds = CGRectMake(0.0, 0.0, CGRectGetWidth(_frame), CGRectGetHeight(_frame)); + _contentView = aView; + objj_msgSend(_contentView, "setFrame:", objj_msgSend(self, "contentRectForFrameRect:", bounds)); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(_windowView, "addSubview:", _contentView); +} +},["void","CPView"]), new objj_method(sel_getUid("contentView"), function $CPWindow__contentView(self, _cmd) +{ with(self) +{ + return _contentView; +} +},["CPView"]), new objj_method(sel_getUid("setAlphaValue:"), function $CPWindow__setAlphaValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(_windowView, "setAlphaValue:", aValue); +} +},["void","float"]), new objj_method(sel_getUid("alphaValue"), function $CPWindow__alphaValue(self, _cmd) +{ with(self) +{ + return objj_msgSend(_windowView, "alphaValue"); +} +},["float"]), new objj_method(sel_getUid("setBackgroundColor:"), function $CPWindow__setBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(_windowView, "setBackgroundColor:", aColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("backgroundColor"), function $CPWindow__backgroundColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(_windowView, "backgroundColor"); +} +},["CPColor"]), new objj_method(sel_getUid("setMinSize:"), function $CPWindow__setMinSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(_minSize, aSize)) + return; + _minSize = CGSizeCreateCopy(aSize); + var size = CGSizeMakeCopy(objj_msgSend(self, "frame").size), + needsFrameChange = NO; + if (size.width < _minSize.width) + { + size.width = _minSize.width; + needsFrameChange = YES; + } + if (size.height < _minSize.height) + { + size.height = _minSize.height; + needsFrameChange = YES; + } + if (needsFrameChange) + objj_msgSend(self, "setFrameSize:", size); +} +},["void","CGSize"]), new objj_method(sel_getUid("minSize"), function $CPWindow__minSize(self, _cmd) +{ with(self) +{ + return _minSize; +} +},["CGSize"]), new objj_method(sel_getUid("setMaxSize:"), function $CPWindow__setMaxSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(_maxSize, aSize)) + return; + _maxSize = CGSizeCreateCopy(aSize); + var size = CGSizeMakeCopy(objj_msgSend(self, "frame").size), + needsFrameChange = NO; + if (size.width > _maxSize.width) + { + size.width = _maxSize.width; + needsFrameChange = YES; + } + if (size.height > _maxSize.height) + { + size.height = _maxSize.height; + needsFrameChange = YES; + } + if (needsFrameChange) + objj_msgSend(self, "setFrameSize:", size); +} +},["void","CGSize"]), new objj_method(sel_getUid("maxSize"), function $CPWindow__maxSize(self, _cmd) +{ with(self) +{ + return _maxSize; +} +},["CGSize"]), new objj_method(sel_getUid("hasShadow"), function $CPWindow__hasShadow(self, _cmd) +{ with(self) +{ + return _hasShadow; +} +},["BOOL"]), new objj_method(sel_getUid("_updateShadow"), function $CPWindow___updateShadow(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + { + if (_shadowView) + { + _DOMElement.removeChild(_shadowView._DOMElement); + _shadowView = nil; + } + objj_msgSend(_platformWindow, "setHasShadow:", _hasShadow); + return; + } + if (_hasShadow && !_shadowView) + { + var bounds = objj_msgSend(_windowView, "bounds"); + _shadowView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(-SHADOW_MARGIN_LEFT, -SHADOW_MARGIN_TOP + SHADOW_DISTANCE, + SHADOW_MARGIN_LEFT + CGRectGetWidth(bounds) + SHADOW_MARGIN_RIGHT, SHADOW_MARGIN_TOP + CGRectGetHeight(bounds) + SHADOW_MARGIN_BOTTOM)); + if (!_CPWindowShadowColor) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")); + _CPWindowShadowColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow0.png"), CGSizeMake(20.0, 19.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow1.png"), CGSizeMake(1.0, 19.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow2.png"), CGSizeMake(19.0, 19.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow3.png"), CGSizeMake(20.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow4.png"), CGSizeMake(1.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow5.png"), CGSizeMake(19.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow6.png"), CGSizeMake(20.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow7.png"), CGSizeMake(1.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow8.png"), CGSizeMake(19.0, 18.0)) + ])); + } + objj_msgSend(_shadowView, "setBackgroundColor:", _CPWindowShadowColor); + objj_msgSend(_shadowView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + _DOMElement.insertBefore(_shadowView._DOMElement, _windowView._DOMElement); + } + else if (!_hasShadow && _shadowView) + { + _DOMElement.removeChild(_shadowView._DOMElement); + _shadowView = nil; + } +} +},["void"]), new objj_method(sel_getUid("setHasShadow:"), function $CPWindow__setHasShadow_(self, _cmd, shouldHaveShadow) +{ with(self) +{ + if (_hasShadow === shouldHaveShadow) + return; + _hasShadow = shouldHaveShadow; + objj_msgSend(self, "_updateShadow"); +} +},["void","BOOL"]), new objj_method(sel_getUid("setShadowStyle:"), function $CPWindow__setShadowStyle_(self, _cmd, aStyle) +{ with(self) +{ + _shadowStyle = aStyle; + objj_msgSend(objj_msgSend(self, "platformWindow"), "setShadowStyle:", _shadowStyle); +} +},["void","unsigned"]), new objj_method(sel_getUid("setDelegate:"), function $CPWindow__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidResignKeyNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidBecomeKeyNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidBecomeMainNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidResignMainNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidMoveNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidResizeNotification, self); + _delegate = aDelegate; + _delegateRespondsToWindowWillReturnUndoManagerSelector = objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowWillReturnUndoManager:")); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidResignKey:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidResignKey:"), CPWindowDidResignKeyNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidBecomeKey:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidBecomeKey:"), CPWindowDidBecomeKeyNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidBecomeMain:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidBecomeMain:"), CPWindowDidBecomeMainNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidResignMain:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidResignMain:"), CPWindowDidResignMainNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidMove:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidMove:"), CPWindowDidMoveNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidResize:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidResize:"), CPWindowDidResizeNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPWindow__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("setWindowController:"), function $CPWindow__setWindowController_(self, _cmd, aWindowController) +{ with(self) +{ + _windowController = aWindowController; +} +},["void","CPWindowController"]), new objj_method(sel_getUid("windowController"), function $CPWindow__windowController(self, _cmd) +{ with(self) +{ + return _windowController; +} +},["CPWindowController"]), new objj_method(sel_getUid("doCommandBySelector:"), function $CPWindow__doCommandBySelector_(self, _cmd, aSelector) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", aSelector)) + objj_msgSend(_delegate, "performSelector:", aSelector); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWindow").super_class }, "doCommandBySelector:", aSelector); +} +},["void","SEL"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPWindow__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("initialFirstResponder"), function $CPWindow__initialFirstResponder(self, _cmd) +{ with(self) +{ + return _initialFirstResponder; +} +},["id"]), new objj_method(sel_getUid("setInitialFirstResponder:"), function $CPWindow__setInitialFirstResponder_(self, _cmd, aResponder) +{ with(self) +{ + _initialFirstResponder = aResponder; +} +},["void","id"]), new objj_method(sel_getUid("makeFirstResponder:"), function $CPWindow__makeFirstResponder_(self, _cmd, aResponder) +{ with(self) +{ + if (_firstResponder === aResponder) + return YES; + if(!objj_msgSend(_firstResponder, "resignFirstResponder")) + return NO; + if(!aResponder || !objj_msgSend(aResponder, "acceptsFirstResponder") || !objj_msgSend(aResponder, "becomeFirstResponder")) + { + _firstResponder = self; + return NO; + } + _firstResponder = aResponder; + return YES; +} +},["BOOL","CPResponder"]), new objj_method(sel_getUid("firstResponder"), function $CPWindow__firstResponder(self, _cmd) +{ with(self) +{ + return _firstResponder; +} +},["CPResponder"]), new objj_method(sel_getUid("acceptsMouseMovedEvents"), function $CPWindow__acceptsMouseMovedEvents(self, _cmd) +{ with(self) +{ + return _acceptsMouseMovedEvents; +} +},["BOOL"]), new objj_method(sel_getUid("setAcceptsMouseMovedEvents:"), function $CPWindow__setAcceptsMouseMovedEvents_(self, _cmd, shouldAcceptMouseMovedEvents) +{ with(self) +{ + _acceptsMouseMovedEvents = shouldAcceptMouseMovedEvents; +} +},["void","BOOL"]), new objj_method(sel_getUid("ignoresMouseEvents"), function $CPWindow__ignoresMouseEvents(self, _cmd) +{ with(self) +{ + return _ignoresMouseEvents; +} +},["BOOL"]), new objj_method(sel_getUid("setIgnoresMouseEvents:"), function $CPWindow__setIgnoresMouseEvents_(self, _cmd, shouldIgnoreMouseEvents) +{ with(self) +{ + _ignoresMouseEvents = shouldIgnoreMouseEvents; +} +},["void","BOOL"]), new objj_method(sel_getUid("title"), function $CPWindow__title(self, _cmd) +{ with(self) +{ + return _title; +} +},["CPString"]), new objj_method(sel_getUid("setTitle:"), function $CPWindow__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + _title = aTitle; + objj_msgSend(_windowView, "setTitle:", aTitle); + objj_msgSend(self, "_synchronizeMenuBarTitleWithWindowTitle"); +} +},["void","CPString"]), new objj_method(sel_getUid("setTitleWithRepresentedFilename:"), function $CPWindow__setTitleWithRepresentedFilename_(self, _cmd, aFilePath) +{ with(self) +{ + objj_msgSend(self, "setRepresentedFilename:", aFilePath); + objj_msgSend(self, "setTitle:", objj_msgSend(aFilePath, "lastPathComponent")); +} +},["void","CPString"]), new objj_method(sel_getUid("setRepresentedFilename:"), function $CPWindow__setRepresentedFilename_(self, _cmd, aFilePath) +{ with(self) +{ + objj_msgSend(self, "setRepresentedURL:", aFilePath); +} +},["void","CPString"]), new objj_method(sel_getUid("representedFilename"), function $CPWindow__representedFilename(self, _cmd) +{ with(self) +{ + return _representedURL; +} +},["CPString"]), new objj_method(sel_getUid("setRepresentedURL:"), function $CPWindow__setRepresentedURL_(self, _cmd, aURL) +{ with(self) +{ + _representedURL = aURL; +} +},["void","CPURL"]), new objj_method(sel_getUid("representedURL"), function $CPWindow__representedURL(self, _cmd) +{ with(self) +{ + return _representedURL; +} +},["CPURL"]), new objj_method(sel_getUid("screen"), function $CPWindow__screen(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPScreen, "alloc"), "init"); +} +},["CPScreen"]), new objj_method(sel_getUid("setMovableByWindowBackground:"), function $CPWindow__setMovableByWindowBackground_(self, _cmd, shouldBeMovableByWindowBackground) +{ with(self) +{ + _isMovableByWindowBackground = shouldBeMovableByWindowBackground; +} +},["void","BOOL"]), new objj_method(sel_getUid("isMovableByWindowBackground"), function $CPWindow__isMovableByWindowBackground(self, _cmd) +{ with(self) +{ + return _isMovableByWindowBackground; +} +},["BOOL"]), new objj_method(sel_getUid("center"), function $CPWindow__center(self, _cmd) +{ with(self) +{ + if (_isFullPlatformWindow) + return; + var size = objj_msgSend(self, "frame").size, + containerSize = objj_msgSend(CPPlatform, "isBrowser") ? objj_msgSend(_platformWindow, "contentBounds").size : objj_msgSend(objj_msgSend(self, "screen"), "visibleFrame").size; + var origin = CGPointMake((containerSize.width - size.width) / 2.0, (containerSize.height - size.height) / 2.0); + if (origin.x < 0.0) + origin.x = 0.0; + if (origin.y < 0.0) + origin.y = 0.0; + objj_msgSend(self, "setFrameOrigin:", origin); +} +},["void"]), new objj_method(sel_getUid("sendEvent:"), function $CPWindow__sendEvent_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + point = objj_msgSend(anEvent, "locationInWindow"); + switch (type) + { + case CPFlagsChanged: return objj_msgSend(objj_msgSend(self, "firstResponder"), "flagsChanged:", anEvent); + case CPKeyUp: return objj_msgSend(objj_msgSend(self, "firstResponder"), "keyUp:", anEvent); + case CPKeyDown: objj_msgSend(objj_msgSend(self, "firstResponder"), "keyDown:", anEvent); + if (!objj_msgSend(self, "disableKeyEquivalentForDefaultButton")) + if (objj_msgSend(anEvent, "_triggersKeyEquivalent:withModifierMask:", objj_msgSend(objj_msgSend(self, "defaultButton"), "keyEquivalent"), objj_msgSend(objj_msgSend(self, "defaultButton"), "keyEquivalentModifierMask"))) + objj_msgSend(objj_msgSend(self, "defaultButton"), "performClick:", self); + return; + case CPScrollWheel: return objj_msgSend(objj_msgSend(_windowView, "hitTest:", point), "scrollWheel:", anEvent); + case CPLeftMouseUp: + case CPRightMouseUp: var hitTestedView = _leftMouseDownView, + selector = type == CPRightMouseUp ? sel_getUid("rightMouseUp:") : sel_getUid("mouseUp:"); + if (!hitTestedView) + hitTestedView = objj_msgSend(_windowView, "hitTest:", point); + objj_msgSend(hitTestedView, "performSelector:withObject:", selector, anEvent); + _leftMouseDownView = nil; + return; + case CPLeftMouseDown: + case CPRightMouseDown: _leftMouseDownView = objj_msgSend(_windowView, "hitTest:", point); + if (_leftMouseDownView != _firstResponder && objj_msgSend(_leftMouseDownView, "acceptsFirstResponder")) + objj_msgSend(self, "makeFirstResponder:", _leftMouseDownView); + objj_msgSend(CPApp, "activateIgnoringOtherApps:", YES); + var theWindow = objj_msgSend(anEvent, "window"), + selector = type == CPRightMouseDown ? sel_getUid("rightMouseDown:") : sel_getUid("mouseDown:"); + if (objj_msgSend(theWindow, "isKeyWindow") || objj_msgSend(theWindow, "becomesKeyOnlyIfNeeded") && !objj_msgSend(_leftMouseDownView, "needsPanelToBecomeKey")) + return objj_msgSend(_leftMouseDownView, "performSelector:withObject:", selector, anEvent); + else + { + objj_msgSend(self, "makeKeyAndOrderFront:", self); + if (objj_msgSend(_leftMouseDownView, "acceptsFirstMouse:", anEvent)) + return objj_msgSend(_leftMouseDownView, "performSelector:withObject:", selector, anEvent); + } + break; + case CPLeftMouseDragged: + case CPRightMouseDragged: if (!_leftMouseDownView) + return objj_msgSend(objj_msgSend(_windowView, "hitTest:", point), "mouseDragged:", anEvent); + var selector; + if (type == CPRightMouseDragged) + { + selector = sel_getUid("rightMouseDragged:") + if (!objj_msgSend(_leftMouseDownView, "respondsToSelector:", selector)) + selector = nil; + } + if (!selector) + selector = sel_getUid("mouseDragged:") + return objj_msgSend(_leftMouseDownView, "performSelector:withObject:", selector, anEvent); + case CPMouseMoved: if (!_acceptsMouseMovedEvents) + return; + if (!_mouseEnteredStack) + _mouseEnteredStack = []; + var hitTestView = objj_msgSend(_windowView, "hitTest:", point); + if (objj_msgSend(_mouseEnteredStack, "count") && objj_msgSend(_mouseEnteredStack, "lastObject") === hitTestView) + return objj_msgSend(hitTestView, "mouseMoved:", anEvent); + var view = hitTestView, + mouseEnteredStack = []; + while (view) + { + mouseEnteredStack.unshift(view); + view = objj_msgSend(view, "superview"); + } + var deviation = MIN(_mouseEnteredStack.length, mouseEnteredStack.length); + while (deviation--) + if (_mouseEnteredStack[deviation] === mouseEnteredStack[deviation]) + break; + var index = deviation + 1, + count = _mouseEnteredStack.length; + if (index < count) + { + var event = objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", CPMouseExited, point, objj_msgSend(anEvent, "modifierFlags"), objj_msgSend(anEvent, "timestamp"), _windowNumber, nil, -1, 1, 0); + for (; index < count; ++index) + objj_msgSend(_mouseEnteredStack[index], "mouseExited:", event); + } + index = deviation + 1; + count = mouseEnteredStack.length; + if (index < count) + { + var event = objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", CPMouseEntered, point, objj_msgSend(anEvent, "modifierFlags"), objj_msgSend(anEvent, "timestamp"), _windowNumber, nil, -1, 1, 0); + for (; index < count; ++index) + objj_msgSend(mouseEnteredStack[index], "mouseEntered:", event); + } + _mouseEnteredStack = mouseEnteredStack; + objj_msgSend(hitTestView, "mouseMoved:", anEvent); + } +} +},["void","CPEvent"]), new objj_method(sel_getUid("windowNumber"), function $CPWindow__windowNumber(self, _cmd) +{ with(self) +{ + return _windowNumber; +} +},["int"]), new objj_method(sel_getUid("becomeKeyWindow"), function $CPWindow__becomeKeyWindow(self, _cmd) +{ with(self) +{ + CPApp._keyWindow = self; + if (_firstResponder !== self && objj_msgSend(_firstResponder, "respondsToSelector:", sel_getUid("becomeKeyWindow"))) + objj_msgSend(_firstResponder, "becomeKeyWindow"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidBecomeKeyNotification, self); +} +},["void"]), new objj_method(sel_getUid("canBecomeKeyWindow"), function $CPWindow__canBecomeKeyWindow(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("isKeyWindow"), function $CPWindow__isKeyWindow(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPApp, "keyWindow") == self; +} +},["BOOL"]), new objj_method(sel_getUid("makeKeyAndOrderFront:"), function $CPWindow__makeKeyAndOrderFront_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "orderFront:", self); + objj_msgSend(self, "makeKeyWindow"); + objj_msgSend(self, "makeMainWindow"); +} +},["void","id"]), new objj_method(sel_getUid("makeKeyWindow"), function $CPWindow__makeKeyWindow(self, _cmd) +{ with(self) +{ + if (objj_msgSend(CPApp, "keyWindow") === self || !objj_msgSend(self, "canBecomeKeyWindow")) + return; + objj_msgSend(objj_msgSend(CPApp, "keyWindow"), "resignKeyWindow"); + objj_msgSend(self, "becomeKeyWindow"); +} +},["void"]), new objj_method(sel_getUid("resignKeyWindow"), function $CPWindow__resignKeyWindow(self, _cmd) +{ with(self) +{ + if (_firstResponder !== self && objj_msgSend(_firstResponder, "respondsToSelector:", sel_getUid("resignKeyWindow"))) + objj_msgSend(_firstResponder, "resignKeyWindow"); + if (CPApp._keyWindow === self) + CPApp._keyWindow = nil; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidResignKeyNotification, self); +} +},["void"]), new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"), function $CPWindow__dragImage_at_offset_event_pasteboard_source_slideBack_(self, _cmd, anImage, imageLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:", anImage, self, objj_msgSend(self, "convertBaseToGlobal:", imageLocation), mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPImage","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("_noteRegisteredDraggedTypes:"), function $CPWindow___noteRegisteredDraggedTypes_(self, _cmd, pasteboardTypes) +{ with(self) +{ + if (!pasteboardTypes) + return; + if (!_inclusiveRegisteredDraggedTypes) + _inclusiveRegisteredDraggedTypes = objj_msgSend(CPCountedSet, "set"); + objj_msgSend(_inclusiveRegisteredDraggedTypes, "unionSet:", pasteboardTypes); +} +},["void","CPSet"]), new objj_method(sel_getUid("_noteUnregisteredDraggedTypes:"), function $CPWindow___noteUnregisteredDraggedTypes_(self, _cmd, pasteboardTypes) +{ with(self) +{ + if (!pasteboardTypes) + return; + objj_msgSend(_inclusiveRegisteredDraggedTypes, "minusSet:", pasteboardTypes); + if (objj_msgSend(_inclusiveRegisteredDraggedTypes, "count") === 0) + _inclusiveRegisteredDraggedTypes = nil; +} +},["void","CPSet"]), new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"), function $CPWindow__dragView_at_offset_event_pasteboard_source_slideBack_(self, _cmd, aView, viewLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:", aView, self, objj_msgSend(self, "convertBaseToGlobal:", viewLocation), mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPView","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("registerForDraggedTypes:"), function $CPWindow__registerForDraggedTypes_(self, _cmd, pasteboardTypes) +{ with(self) +{ + if (!pasteboardTypes) + return; + objj_msgSend(self, "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + objj_msgSend(_registeredDraggedTypes, "addObjectsFromArray:", pasteboardTypes); + objj_msgSend(self, "_noteRegisteredDraggedTypes:", _registeredDraggedTypes); + _registeredDraggedTypesArray = nil; +} +},["void","CPArray"]), new objj_method(sel_getUid("registeredDraggedTypes"), function $CPWindow__registeredDraggedTypes(self, _cmd) +{ with(self) +{ + if (!_registeredDraggedTypesArray) + _registeredDraggedTypesArray = objj_msgSend(_registeredDraggedTypes, "allObjects"); + return _registeredDraggedTypesArray; +} +},["CPArray"]), new objj_method(sel_getUid("unregisterDraggedTypes"), function $CPWindow__unregisterDraggedTypes(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; +} +},["void"]), new objj_method(sel_getUid("setDocumentEdited:"), function $CPWindow__setDocumentEdited_(self, _cmd, isDocumentEdited) +{ with(self) +{ + if (_isDocumentEdited == isDocumentEdited) + return; + _isDocumentEdited = isDocumentEdited; + objj_msgSend(CPMenu, "_setMenuBarIconImageAlphaValue:", _isDocumentEdited ? 0.5 : 1.0); + objj_msgSend(_windowView, "setDocumentEdited:", isDocumentEdited); +} +},["void","BOOL"]), new objj_method(sel_getUid("isDocumentEdited"), function $CPWindow__isDocumentEdited(self, _cmd) +{ with(self) +{ + return _isDocumentEdited; +} +},["BOOL"]), new objj_method(sel_getUid("setDocumentSaving:"), function $CPWindow__setDocumentSaving_(self, _cmd, isDocumentSaving) +{ with(self) +{ + if (_isDocumentSaving == isDocumentSaving) + return; + _isDocumentSaving = isDocumentSaving; + objj_msgSend(self, "_synchronizeSaveMenuWithDocumentSaving"); + objj_msgSend(_windowView, "windowDidChangeDocumentSaving"); +} +},["void","BOOL"]), new objj_method(sel_getUid("isDocumentSaving"), function $CPWindow__isDocumentSaving(self, _cmd) +{ with(self) +{ + return _isDocumentSaving; +} +},["BOOL"]), new objj_method(sel_getUid("_synchronizeSaveMenuWithDocumentSaving"), function $CPWindow___synchronizeSaveMenuWithDocumentSaving(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "isMainWindow")) + return; + var mainMenu = objj_msgSend(CPApp, "mainMenu"), + index = objj_msgSend(mainMenu, "indexOfItemWithTitle:", _isDocumentSaving ? "Save" : "Saving..."); + if (index == CPNotFound) + return; + var item = objj_msgSend(mainMenu, "itemAtIndex:", index); + if (_isDocumentSaving) + { + CPWindowSaveImage = objj_msgSend(item, "image"); + objj_msgSend(item, "setTitle:", "Saving..."); + objj_msgSend(item, "setImage:", CPWindowSavingImage); + objj_msgSend(item, "setEnabled:", NO); + } + else + { + objj_msgSend(item, "setTitle:", "Save"); + objj_msgSend(item, "setImage:", CPWindowSaveImage); + objj_msgSend(item, "setEnabled:", YES); + } +} +},["void"]), new objj_method(sel_getUid("performMiniaturize:"), function $CPWindow__performMiniaturize_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "miniaturize:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("miniaturize:"), function $CPWindow__miniaturize_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowWillMiniaturizeNotification, self); + objj_msgSend(objj_msgSend(self, "platformWindow"), "miniaturize:", sender); + objj_msgSend(self, "_updateMainAndKeyWindows"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidMiniaturizeNotification, self); + _isMiniaturized = YES; +} +},["void","id"]), new objj_method(sel_getUid("deminiaturize:"), function $CPWindow__deminiaturize_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "platformWindow"), "deminiaturize:", sender); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidDeminiaturizeNotification, self); + _isMiniaturized = NO; +} +},["void","id"]), new objj_method(sel_getUid("isMiniaturized"), function $CPWindow__isMiniaturized(self, _cmd) +{ with(self) +{ + return _isMiniaturized; +} +},["void"]), new objj_method(sel_getUid("performClose:"), function $CPWindow__performClose_(self, _cmd, aSender) +{ with(self) +{ + if (!(_styleMask & CPClosableWindowMask)) + return; + if (objj_msgSend(self, "isFullBridge")) + { + var event = objj_msgSend(CPApp, "currentEvent"); + if (objj_msgSend(event, "type") === CPKeyDown && objj_msgSend(event, "characters") === "w" && (objj_msgSend(event, "modifierFlags") & CPPlatformActionKeyMask)) + { + objj_msgSend(objj_msgSend(self, "platformWindow"), "_propagateCurrentDOMEvent:", YES); + return; + } + } + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowShouldClose:"))) + { + if (!objj_msgSend(_delegate, "windowShouldClose:", self)) + return; + } + else if (objj_msgSend(self, "respondsToSelector:", sel_getUid("windowShouldClose:")) && !objj_msgSend(self, "windowShouldClose:", self)) + return; + var documents = objj_msgSend(_windowController, "documents"); + if (objj_msgSend(documents, "count")) + { + var index = objj_msgSend(documents, "indexOfObject:", objj_msgSend(_windowController, "document")); + objj_msgSend(documents[index], "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:", _windowController, self, sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"), {documents:objj_msgSend(documents, "copy"), visited:0, index:index}); + } + else + objj_msgSend(self, "close"); +} +},["void","id"]), new objj_method(sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"), function $CPWindow___windowControllerContainingDocument_shouldClose_contextInfo_(self, _cmd, document, shouldClose, context) +{ with(self) +{ + if (shouldClose) + { + var windowController = objj_msgSend(self, "windowController"), + documents = context.documents, + count = objj_msgSend(documents, "count"), + visited = ++context.visited, + index = ++context.index % count; + objj_msgSend(document, "removeWindowController:", windowController); + if (visited < count) + { + objj_msgSend(windowController, "setDocument:", documents[index]); + objj_msgSend(documents[index], "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:", _windowController, self, sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"), context); + } + else + objj_msgSend(self, "close"); + } +} +},["void","CPDocument","BOOL","Object"]), new objj_method(sel_getUid("close"), function $CPWindow__close(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowWillCloseNotification, self); + objj_msgSend(self, "orderOut:", nil); +} +},["void"]), new objj_method(sel_getUid("isMainWindow"), function $CPWindow__isMainWindow(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPApp, "mainWindow") == self; +} +},["BOOL"]), new objj_method(sel_getUid("canBecomeMainWindow"), function $CPWindow__canBecomeMainWindow(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "isVisible")) + return YES; + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("makeMainWindow"), function $CPWindow__makeMainWindow(self, _cmd) +{ with(self) +{ + if (objj_msgSend(CPApp, "mainWindow") === self || !objj_msgSend(self, "canBecomeMainWindow")) + return; + objj_msgSend(objj_msgSend(CPApp, "mainWindow"), "resignMainWindow"); + objj_msgSend(self, "becomeMainWindow"); +} +},["void"]), new objj_method(sel_getUid("becomeMainWindow"), function $CPWindow__becomeMainWindow(self, _cmd) +{ with(self) +{ + CPApp._mainWindow = self; + objj_msgSend(self, "_synchronizeMenuBarTitleWithWindowTitle"); + objj_msgSend(self, "_synchronizeSaveMenuWithDocumentSaving"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidBecomeMainNotification, self); +} +},["void"]), new objj_method(sel_getUid("resignMainWindow"), function $CPWindow__resignMainWindow(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidResignMainNotification, self); + if (CPApp._mainWindow === self) + CPApp._mainWindow = nil; +} +},["void"]), new objj_method(sel_getUid("_updateMainAndKeyWindows"), function $CPWindow___updateMainAndKeyWindows(self, _cmd) +{ with(self) +{ + var allWindows = objj_msgSend(CPApp, "orderedWindows"), + windowCount = objj_msgSend(allWindows, "count"); + if (objj_msgSend(self, "isKeyWindow")) + { + var keyWindow = objj_msgSend(CPApp, "keyWindow"); + objj_msgSend(self, "resignKeyWindow"); + if (keyWindow && keyWindow !== self && objj_msgSend(keyWindow, "canBecomeKeyWindow")) + objj_msgSend(keyWindow, "makeKeyWindow"); + else + { + var mainMenu = objj_msgSend(CPApp, "mainMenu"), + menuBarClass = objj_getClass("_CPMenuBarWindow"), + menuWindow; + for (var i = 0; i < windowCount; i++) + { + var currentWindow = allWindows[i]; + if (objj_msgSend(currentWindow, "isKindOfClass:", menuBarClass)) + menuWindow = currentWindow; + if (currentWindow === self || currentWindow === menuWindow) + continue; + if (objj_msgSend(currentWindow, "isVisible") && objj_msgSend(currentWindow, "canBecomeKeyWindow")) + { + objj_msgSend(currentWindow, "makeKeyWindow"); + break; + } + } + if (!objj_msgSend(CPApp, "keyWindow")) + objj_msgSend(menuWindow, "makeKeyWindow"); + } + } + if (objj_msgSend(self, "isMainWindow")) + { + var mainWindow = objj_msgSend(CPApp, "mainWindow"); + objj_msgSend(self, "resignMainWindow"); + if (mainWindow && mainWindow !== self && objj_msgSend(mainWindow, "canBecomeMainWindow")) + objj_msgSend(mainWindow, "makeMainWindow"); + else + { + var mainMenu = objj_msgSend(CPApp, "mainMenu"), + menuBarClass = objj_getClass("_CPMenuBarWindow"), + menuWindow; + for (var i = 0; i < windowCount; i++) + { + var currentWindow = allWindows[i]; + if (objj_msgSend(currentWindow, "isKindOfClass:", menuBarClass)) + menuWindow = currentWindow; + if (currentWindow === self || currentWindow === menuWindow) + continue; + if (objj_msgSend(currentWindow, "isVisible") && objj_msgSend(currentWindow, "canBecomeMainWindow")) + { + objj_msgSend(currentWindow, "makeMainWindow"); + break; + } + } + } + } +} +},["void"]), new objj_method(sel_getUid("toolbar"), function $CPWindow__toolbar(self, _cmd) +{ with(self) +{ + return _toolbar; +} +},["CPToolbar"]), new objj_method(sel_getUid("setToolbar:"), function $CPWindow__setToolbar_(self, _cmd, aToolbar) +{ with(self) +{ + if (_toolbar === aToolbar) + return; + objj_msgSend(objj_msgSend(aToolbar, "_window"), "setToolbar:", nil); + objj_msgSend(_toolbar, "_setWindow:", nil); + _toolbar = aToolbar; + objj_msgSend(_toolbar, "_setWindow:", self); + objj_msgSend(self, "_noteToolbarChanged"); +} +},["void","CPToolbar"]), new objj_method(sel_getUid("toggleToolbarShown:"), function $CPWindow__toggleToolbarShown_(self, _cmd, aSender) +{ with(self) +{ + var toolbar = objj_msgSend(self, "toolbar"); + objj_msgSend(toolbar, "setVisible:", !objj_msgSend(toolbar, "isVisible")); +} +},["void","id"]), new objj_method(sel_getUid("_noteToolbarChanged"), function $CPWindow___noteToolbarChanged(self, _cmd) +{ with(self) +{ + var frame = CGRectMakeCopy(objj_msgSend(self, "frame")), + newFrame; + objj_msgSend(_windowView, "noteToolbarChanged"); + if (_isFullPlatformWindow) + newFrame = objj_msgSend(_platformWindow, "visibleFrame"); + else + { + newFrame = CGRectMakeCopy(objj_msgSend(self, "frame")); + newFrame.origin = frame.origin; + } + objj_msgSend(self, "setFrame:", newFrame); +} +},["void"]), new objj_method(sel_getUid("_setFrame:delegate:duration:curve:"), function $CPWindow___setFrame_delegate_duration_curve_(self, _cmd, aFrame, delegate, duration, curve) +{ with(self) +{ + objj_msgSend(_frameAnimation, "stopAnimation"); + _frameAnimation = objj_msgSend(objj_msgSend(_CPWindowFrameAnimation, "alloc"), "initWithWindow:targetFrame:", self, aFrame); + objj_msgSend(_frameAnimation, "setDelegate:", delegate); + objj_msgSend(_frameAnimation, "setAnimationCurve:", curve); + objj_msgSend(_frameAnimation, "setDuration:", duration); + objj_msgSend(_frameAnimation, "startAnimation"); +} +},["void","CGRect","id","int","CPAnimationCurve"]), new objj_method(sel_getUid("animationResizeTime:"), function $CPWindow__animationResizeTime_(self, _cmd, newWindowFrame) +{ with(self) +{ + return CPWindowResizeTime; +} +},["CPTimeInterval","CGRect"]), new objj_method(sel_getUid("_setAttachedSheetFrameOrigin"), function $CPWindow___setAttachedSheetFrameOrigin(self, _cmd) +{ with(self) +{ + var attachedSheet = objj_msgSend(self, "attachedSheet"); + var contentRect = objj_msgSend(objj_msgSend(self, "contentView"), "frame"), + sheetFrame = CGRectMakeCopy(objj_msgSend(attachedSheet, "frame")); + sheetFrame.origin.y = CGRectGetMinY(_frame) + CGRectGetMinY(contentRect); + sheetFrame.origin.x = CGRectGetMinX(_frame) + FLOOR((CGRectGetWidth(_frame) - CGRectGetWidth(sheetFrame)) / 2.0); + objj_msgSend(attachedSheet, "setFrame:display:animate:", sheetFrame, YES, NO); +} +},["void"]), new objj_method(sel_getUid("_attachSheet:modalDelegate:didEndSelector:contextInfo:"), function $CPWindow___attachSheet_modalDelegate_didEndSelector_contextInfo_(self, _cmd, aSheet, aModalDelegate, aDidEndSelector, aContextInfo) +{ with(self) +{ + var sheetFrame = objj_msgSend(aSheet, "frame"); + _sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, "contextInfo":aContextInfo, "frame":CGRectMakeCopy(sheetFrame), "returnCode":-1, "opened": NO}; + objj_msgSend(self, "_attachSheetWindow:", aSheet); +} +},["void","CPWindow","id","SEL","id"]), new objj_method(sel_getUid("_attachSheetWindow:"), function $CPWindow___attachSheetWindow_(self, _cmd, aSheet) +{ with(self) +{ + var sheetFrame = objj_msgSend(aSheet, "frame"), + frame = objj_msgSend(self, "frame"), + sheetContent = objj_msgSend(aSheet, "contentView"); + objj_msgSend(self, "_setUpMasksForView:", sheetContent); + aSheet._isSheet = YES; + aSheet._parentView = self; + var originx = frame.origin.x + FLOOR((frame.size.width - sheetFrame.size.width)/2), + originy = frame.origin.y + objj_msgSend(objj_msgSend(self, "contentView"), "frame").origin.y, + startFrame = CGRectMake(originx, originy, sheetFrame.size.width, 0), + endFrame = CGRectMake(originx, originy, sheetFrame.size.width, sheetFrame.size.height); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowWillBeginSheetNotification, self); + objj_msgSend(CPApp, "runModalForWindow:", aSheet); + objj_msgSend(aSheet, "orderFront:", self); + objj_msgSend(aSheet, "setFrame:display:animate:", startFrame, YES, NO); + _sheetContext["opened"] = YES; + objj_msgSend(aSheet, "_setFrame:delegate:duration:curve:", endFrame, self, objj_msgSend(self, "animationResizeTime:", endFrame), CPAnimationEaseOut); + objj_msgSend(aSheet, "becomeKeyWindow"); +} +},["void","CPWindow"]), new objj_method(sel_getUid("_detachSheetWindow"), function $CPWindow___detachSheetWindow(self, _cmd) +{ with(self) +{ + var sheet = objj_msgSend(self, "attachedSheet"), + startFrame = objj_msgSend(sheet, "frame"), + endFrame = CGRectMakeCopy(startFrame); + endFrame.size.height = 0; + _sheetContext["frame"] = startFrame; + var sheetContent = objj_msgSend(sheet, "contentView"); + objj_msgSend(self, "_setUpMasksForView:", sheetContent); + _sheetContext["opened"] = NO; + objj_msgSend(sheet, "_setFrame:delegate:duration:curve:", endFrame, self, objj_msgSend(self, "animationResizeTime:", endFrame), CPAnimationEaseIn); +} +},["void"]), new objj_method(sel_getUid("animationDidEnd:"), function $CPWindow__animationDidEnd_(self, _cmd, anim) +{ with(self) +{ + var sheet = _sheetContext["sheet"]; + if (anim._window != sheet) + return; + var sheetContent = objj_msgSend(sheet, "contentView"); + if (_sheetContext["opened"] === YES) + { + objj_msgSend(self, "_restoreMasksForView:", sheetContent); + return; + } + objj_msgSend(CPApp, "stopModal"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidEndSheetNotification, self); + objj_msgSend(sheet, "orderOut:", self); + var lastFrame = _sheetContext["frame"]; + objj_msgSend(sheet, "setFrame:", lastFrame); + objj_msgSend(self, "_restoreMasksForView:", sheetContent); + var delegate = _sheetContext["modalDelegate"], + endSelector = _sheetContext["endSelector"], + returnCode = _sheetContext["returnCode"], + contextInfo = _sheetContext["contextInfo"]; + _sheetContext = nil; + sheet._parentView = nil; + if (delegate != nil && endSelector != nil) + objj_msgSend(delegate, endSelector, sheet, returnCode, contextInfo); +} +},["void","id"]), new objj_method(sel_getUid("_setUpMasksForView:"), function $CPWindow___setUpMasksForView_(self, _cmd, aView) +{ with(self) +{ + var views = objj_msgSend(aView, "subviews"); + objj_msgSend(views, "addObject:", aView); + for (var i = 0, count = objj_msgSend(views, "count"); i < count; i++) + { + var view = objj_msgSend(views, "objectAtIndex:", i), + mask = objj_msgSend(view, "autoresizingMask"), + maskToAdd = (mask & CPViewMinYMargin) ? 128 : CPViewMinYMargin; + objj_msgSend(view, "setAutoresizingMask:", (mask | maskToAdd)); + } +} +},["void","CPView"]), new objj_method(sel_getUid("_restoreMasksForView:"), function $CPWindow___restoreMasksForView_(self, _cmd, aView) +{ with(self) +{ + var views = objj_msgSend(aView, "subviews"); + objj_msgSend(views, "addObject:", aView); + for (var i = 0, count = objj_msgSend(views, "count"); i < count; i++) + { + var view = objj_msgSend(views, "objectAtIndex:", i), + mask = objj_msgSend(view, "autoresizingMask"), + maskToRemove = (mask & 128) ? 128 : CPViewMinYMargin; + objj_msgSend(view, "setAutoresizingMask:", (mask & (~ maskToRemove))); + } +} +},["void","CPView"]), new objj_method(sel_getUid("attachedSheet"), function $CPWindow__attachedSheet(self, _cmd) +{ with(self) +{ + if (_sheetContext === nil) + return nil; + return _sheetContext["sheet"]; +} +},["CPWindow"]), new objj_method(sel_getUid("isSheet"), function $CPWindow__isSheet(self, _cmd) +{ with(self) +{ + return _isSheet; +} +},["BOOL"]), new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"), function $CPWindow__becomesKeyOnlyIfNeeded(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("worksWhenModal"), function $CPWindow__worksWhenModal(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("performKeyEquivalent:"), function $CPWindow__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "contentView"), "performKeyEquivalent:", anEvent); +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("keyDown:"), function $CPWindow__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(anEvent, "_couldBeKeyEquivalent") && objj_msgSend(self, "performKeyEquivalent:", anEvent)) + return; + objj_msgSend(self, "interpretKeyEvents:", [anEvent]); +} +},["void","CPEvent"]), new objj_method(sel_getUid("insertTab:"), function $CPWindow__insertTab_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "selectNextKeyView:", nil); +} +},["void","id"]), new objj_method(sel_getUid("_dirtyKeyViewLoop"), function $CPWindow___dirtyKeyViewLoop(self, _cmd) +{ with(self) +{ + if (_autorecalculatesKeyViewLoop) + _keyViewLoopIsDirty = YES; +} +},["void"]), new objj_method(sel_getUid("_hasKeyViewLoop"), function $CPWindow___hasKeyViewLoop(self, _cmd) +{ with(self) +{ + var subviews = []; + objj_msgSend(self, "_appendSubviewsOf:toArray:", _contentView, subviews); + for (var i = 0, count = objj_msgSend(subviews, "count"); i<count; i++) + { + if (subviews[i]._nextKeyView) + return YES; + } + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("recalculateKeyViewLoop"), function $CPWindow__recalculateKeyViewLoop(self, _cmd) +{ with(self) +{ + var subviews = []; + objj_msgSend(self, "_appendSubviewsOf:toArray:", _contentView, subviews); + var keyViewOrder = objj_msgSend(subviews, "sortedArrayUsingFunction:context:", keyViewComparator, _contentView), + count = objj_msgSend(keyViewOrder, "count"); + for (var i=0; i<count; i++) + objj_msgSend(keyViewOrder[i], "setNextKeyView:", keyViewOrder[(i+1)%count]); + _keyViewLoopIsDirty = NO; +} +},["void"]), new objj_method(sel_getUid("_appendSubviewsOf:toArray:"), function $CPWindow___appendSubviewsOf_toArray_(self, _cmd, aView, anArray) +{ with(self) +{ + var subviews = objj_msgSend(aView, "subviews"), + count = objj_msgSend(subviews, "count"); + while (count--) + objj_msgSend(self, "_appendSubviewsOf:toArray:", subviews[count], anArray); + objj_msgSend(anArray, "addObject:", aView); +} +},["void","CPView","CPArray"]), new objj_method(sel_getUid("setAutorecalculatesKeyViewLoop:"), function $CPWindow__setAutorecalculatesKeyViewLoop_(self, _cmd, shouldRecalculate) +{ with(self) +{ + if (_autorecalculatesKeyViewLoop === shouldRecalculate) + return; + _autorecalculatesKeyViewLoop = shouldRecalculate; + if (_keyViewLoopIsDirty) + objj_msgSend(self, "recalculateKeyViewLoop"); + else if (_autorecalculatesKeyViewLoop) + objj_msgSend(self, "_dirtyKeyViewLoop"); +} +},["void","BOOL"]), new objj_method(sel_getUid("autorecalculatesKeyViewLoop"), function $CPWindow__autorecalculatesKeyViewLoop(self, _cmd) +{ with(self) +{ + return _autorecalculatesKeyViewLoop; +} +},["BOOL"]), new objj_method(sel_getUid("selectNextKeyView:"), function $CPWindow__selectNextKeyView_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(_firstResponder, "isKindOfClass:", objj_msgSend(CPView, "class"))) + objj_msgSend(self, "selectKeyViewFollowingView:", _firstResponder); +} +},["void","id"]), new objj_method(sel_getUid("selectPreviousKeyView:"), function $CPWindow__selectPreviousKeyView_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(_firstResponder, "isKindOfClass:", objj_msgSend(CPView, "class"))) + objj_msgSend(self, "selectKeyViewPrecedingView:", _firstResponder); +} +},["void","id"]), new objj_method(sel_getUid("selectKeyViewFollowingView:"), function $CPWindow__selectKeyViewFollowingView_(self, _cmd, aView) +{ with(self) +{ + if (_keyViewLoopIsDirty) + objj_msgSend(self, "recalculateKeyViewLoop"); + objj_msgSend(self, "makeFirstResponder:", objj_msgSend(aView, "nextValidKeyView")); +} +},["void","CPView"]), new objj_method(sel_getUid("selectKeyViewPrecedingView:"), function $CPWindow__selectKeyViewPrecedingView_(self, _cmd, aView) +{ with(self) +{ + if (_keyViewLoopIsDirty) + objj_msgSend(self, "recalculateKeyViewLoop"); + objj_msgSend(self, "makeFirstResponder:", objj_msgSend(aView, "previousValidKeyView")); +} +},["void","CPView"]), new objj_method(sel_getUid("setDefaultButtonCell:"), function $CPWindow__setDefaultButtonCell_(self, _cmd, aButton) +{ with(self) +{ + objj_msgSend(self, "setDefaultButton:", aButton); +} +},["void","CPButton"]), new objj_method(sel_getUid("defaultButtonCell"), function $CPWindow__defaultButtonCell(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "defaultButton"); +} +},["CPButton"]), new objj_method(sel_getUid("setDefaultButton:"), function $CPWindow__setDefaultButton_(self, _cmd, aButton) +{ with(self) +{ + if (_defaultButton === aButton) + return; + if (objj_msgSend(_defaultButton, "keyEquivalent") === CPCarriageReturnCharacter) + objj_msgSend(_defaultButton, "setKeyEquivalent:", nil); + _defaultButton = aButton; + if (objj_msgSend(_defaultButton, "keyEquivalent") !== CPCarriageReturnCharacter) + objj_msgSend(_defaultButton, "setKeyEquivalent:", CPCarriageReturnCharacter); +} +},["void","CPButton"]), new objj_method(sel_getUid("defaultButton"), function $CPWindow__defaultButton(self, _cmd) +{ with(self) +{ + return _defaultButton; +} +},["CPButton"]), new objj_method(sel_getUid("enableKeyEquivalentForDefaultButton"), function $CPWindow__enableKeyEquivalentForDefaultButton(self, _cmd) +{ with(self) +{ + _defaultButtonEnabled = YES; +} +},["void"]), new objj_method(sel_getUid("enableKeyEquivalentForDefaultButtonCell"), function $CPWindow__enableKeyEquivalentForDefaultButtonCell(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "enableKeyEquivalentForDefaultButton"); +} +},["void"]), new objj_method(sel_getUid("disableKeyEquivalentForDefaultButton"), function $CPWindow__disableKeyEquivalentForDefaultButton(self, _cmd) +{ with(self) +{ + _defaultButtonEnabled = NO; +} +},["void"]), new objj_method(sel_getUid("disableKeyEquivalentForDefaultButtonCell"), function $CPWindow__disableKeyEquivalentForDefaultButtonCell(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "disableKeyEquivalentForDefaultButton"); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPWindow__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPWindow, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")); + CPWindowSavingImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"), CGSizeMake(16.0, 16.0)) +} +},["void"]), new objj_method(sel_getUid("_windowViewClassForStyleMask:"), function $CPWindow___windowViewClassForStyleMask_(self, _cmd, aStyleMask) +{ with(self) +{ + if (aStyleMask & CPHUDBackgroundWindowMask) + return _CPHUDWindowView; + else if (aStyleMask === CPBorderlessWindowMask) + return _CPBorderlessWindowView; + else if (aStyleMask & CPDocModalWindowMask) + return _CPDocModalWindowView; + return _CPStandardWindowView; +} +},["Class","unsigned"]), new objj_method(sel_getUid("_windowViewClassForFullPlatformWindowStyleMask:"), function $CPWindow___windowViewClassForFullPlatformWindowStyleMask_(self, _cmd, aStyleMask) +{ with(self) +{ + return _CPBorderlessBridgeWindowView; +} +},["Class","unsigned"]), new objj_method(sel_getUid("frameRectForContentRect:styleMask:"), function $CPWindow__frameRectForContentRect_styleMask_(self, _cmd, aContentRect, aStyleMask) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "_windowViewClassForStyleMask:", aStyleMask), "frameRectForContentRect:", aContentRect); +} +},["CGRect","CGRect","unsigned"])]); +} +var keyViewComparator = function(a, b, context) +{ + var viewBounds = objj_msgSend(a, "convertRect:toView:", objj_msgSend(a, "bounds"), nil), + otherBounds = objj_msgSend(b, "convertRect:toView:", objj_msgSend(b, "bounds"), nil); + if (CGRectGetMinY(viewBounds) < CGRectGetMinY(otherBounds)) + return -1; + else if (CGRectGetMinY(viewBounds) == CGRectGetMinY(otherBounds) && CGRectGetMinX(viewBounds) < CGRectGetMinX(otherBounds)) + return -1; + else if (CGRectGetMinX(viewBounds) == CGRectGetMinX(otherBounds) && CGRectGetMinX(viewBounds) == CGRectGetMinX(otherBounds)) + return 0; + else + return 1; +} +{ +var the_class = objj_getClass("CPWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_synchronizeMenuBarTitleWithWindowTitle"), function $CPWindow___synchronizeMenuBarTitleWithWindowTitle(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_windowController, "document") || !objj_msgSend(self, "isMainWindow")) + return; + objj_msgSend(CPMenu, "setMenuBarTitle:", _title); +} +},["void"])]); +} +{ +var the_class = objj_getClass("CPWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("resizeWithOldPlatformWindowSize:"), function $CPWindow__resizeWithOldPlatformWindowSize_(self, _cmd, aSize) +{ with(self) +{ + if (objj_msgSend(self, "isFullPlatformWindow")) + return objj_msgSend(self, "setFrame:", objj_msgSend(_platformWindow, "visibleFrame")); + if (_autoresizingMask == CPWindowNotSizable) + return; + var frame = objj_msgSend(_platformWindow, "contentBounds"), + newFrame = CGRectMakeCopy(_frame), + dX = (CGRectGetWidth(frame) - aSize.width) / + (((_autoresizingMask & CPWindowMinXMargin) ? 1 : 0) + (_autoresizingMask & CPWindowWidthSizable ? 1 : 0) + (_autoresizingMask & CPWindowMaxXMargin ? 1 : 0)), + dY = (CGRectGetHeight(frame) - aSize.height) / + ((_autoresizingMask & CPWindowMinYMargin ? 1 : 0) + (_autoresizingMask & CPWindowHeightSizable ? 1 : 0) + (_autoresizingMask & CPWindowMaxYMargin ? 1 : 0)); + if (_autoresizingMask & CPWindowMinXMargin) + newFrame.origin.x += dX; + if (_autoresizingMask & CPWindowWidthSizable) + newFrame.size.width += dX; + if (_autoresizingMask & CPWindowMinYMargin) + newFrame.origin.y += dY; + if (_autoresizingMask & CPWindowHeightSizable) + newFrame.size.height += dY; + objj_msgSend(self, "setFrame:", newFrame); +} +},["void","CGSize"]), new objj_method(sel_getUid("setAutoresizingMask:"), function $CPWindow__setAutoresizingMask_(self, _cmd, anAutoresizingMask) +{ with(self) +{ + _autoresizingMask = anAutoresizingMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("autoresizingMask"), function $CPWindow__autoresizingMask(self, _cmd) +{ with(self) +{ + return _autoresizingMask; +} +},["unsigned"]), new objj_method(sel_getUid("convertBaseToGlobal:"), function $CPWindow__convertBaseToGlobal_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(CPPlatform, "isBrowser") ? objj_msgSend(self, "convertBaseToPlatformWindow:", aPoint) : objj_msgSend(self, "convertBaseToScreen:", aPoint); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertGlobalToBase:"), function $CPWindow__convertGlobalToBase_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(CPPlatform, "isBrowser") ? objj_msgSend(self, "convertPlatformWindowToBase:", aPoint) : objj_msgSend(self, "convertScreenToBase:", aPoint); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertBaseToPlatformWindow:"), function $CPWindow__convertBaseToPlatformWindow_(self, _cmd, aPoint) +{ with(self) +{ + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + return aPoint; + var origin = objj_msgSend(self, "frame").origin; + return { x:aPoint.x + origin.x, y:aPoint.y + origin.y }; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertPlatformWindowToBase:"), function $CPWindow__convertPlatformWindowToBase_(self, _cmd, aPoint) +{ with(self) +{ + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + return aPoint; + var origin = objj_msgSend(self, "frame").origin; + return { x:aPoint.x - origin.x, y:aPoint.y - origin.y }; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertScreenToBase:"), function $CPWindow__convertScreenToBase_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(self, "convertPlatformWindowToBase:", objj_msgSend(_platformWindow, "convertScreenToBase:", aPoint)); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertBaseToScreen:"), function $CPWindow__convertBaseToScreen_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(_platformWindow, "convertBaseToScreen:", objj_msgSend(self, "convertBaseToPlatformWindow:", aPoint)); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("_setSharesChromeWithPlatformWindow:"), function $CPWindow___setSharesChromeWithPlatformWindow_(self, _cmd, shouldShareFrameWithPlatformWindow) +{ with(self) +{ + if (shouldShareFrameWithPlatformWindow && objj_msgSend(CPPlatform, "isBrowser")) + return; + _sharesChromeWithPlatformWindow = shouldShareFrameWithPlatformWindow; + objj_msgSend(self, "_updateShadow"); +} +},["void","BOOL"]), new objj_method(sel_getUid("_sharesChromeWithPlatformWindow"), function $CPWindow___sharesChromeWithPlatformWindow(self, _cmd) +{ with(self) +{ + return _sharesChromeWithPlatformWindow; +} +},["BOOL"]), new objj_method(sel_getUid("undoManager"), function $CPWindow__undoManager(self, _cmd) +{ with(self) +{ + if (_undoManager) + return _undoManager; + var documentUndoManager = objj_msgSend(objj_msgSend(_windowController, "document"), "undoManager"); + if (documentUndoManager) + return documentUndoManager; + if (_delegateRespondsToWindowWillReturnUndoManagerSelector) + return objj_msgSend(_delegate, "windowWillReturnUndoManager:", self); + if (!_undoManager) + _undoManager = objj_msgSend(objj_msgSend(CPUndoManager, "alloc"), "init"); + return _undoManager; +} +},["CPUndoManager"]), new objj_method(sel_getUid("undo:"), function $CPWindow__undo_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "undoManager"), "undo"); +} +},["void","id"]), new objj_method(sel_getUid("redo:"), function $CPWindow__redo_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "undoManager"), "redo"); +} +},["void","id"]), new objj_method(sel_getUid("containsPoint:"), function $CPWindow__containsPoint_(self, _cmd, aPoint) +{ with(self) +{ + return CGRectContainsPoint(_frame, aPoint); +} +},["BOOL","CGPoint"])]); +} +{ +var the_class = objj_getClass("CPWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setFullBridge:"), function $CPWindow__setFullBridge_(self, _cmd, shouldBeFullBridge) +{ with(self) +{ + objj_msgSend(self, "setFullPlatformWindow:", shouldBeFullBridge); +} +},["void","BOOL"]), new objj_method(sel_getUid("isFullBridge"), function $CPWindow__isFullBridge(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isFullPlatformWindow"); +} +},["BOOL"]), new objj_method(sel_getUid("convertBaseToBridge:"), function $CPWindow__convertBaseToBridge_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(self, "convertBaseToPlatformWindow:", aPoint); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertBridgeToBase:"), function $CPWindow__convertBridgeToBase_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(self, "convertPlatformWindowToBase:", aPoint); +} +},["CGPoint","CGPoint"])]); +} +var interpolate = function(fromValue, toValue, progress) +{ + return fromValue + (toValue - fromValue) * progress; +} +{var the_class = objj_allocateClassPair(CPAnimation, "_CPWindowFrameAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window"), new objj_ivar("_startFrame"), new objj_ivar("_targetFrame")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithWindow:targetFrame:"), function $_CPWindowFrameAnimation__initWithWindow_targetFrame_(self, _cmd, aWindow, aTargetFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowFrameAnimation").super_class }, "initWithDuration:animationCurve:", objj_msgSend(aWindow, "animationResizeTime:", aTargetFrame), CPAnimationLinear); + if (self) + { + _window = aWindow; + _targetFrame = CGRectMakeCopy(aTargetFrame); + _startFrame = CGRectMakeCopy(objj_msgSend(_window, "frame")); + } + return self; +} +},["id","CPWindow","CGRect"]), new objj_method(sel_getUid("startAnimation"), function $_CPWindowFrameAnimation__startAnimation(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowFrameAnimation").super_class }, "startAnimation"); + _window._isAnimating = YES; +} +},["void"]), new objj_method(sel_getUid("setCurrentProgress:"), function $_CPWindowFrameAnimation__setCurrentProgress_(self, _cmd, aProgress) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowFrameAnimation").super_class }, "setCurrentProgress:", aProgress); + var value = objj_msgSend(self, "currentValue"); + if (value == 1.0) + _window._isAnimating = NO; + var newFrame = CGRectMake(interpolate(CGRectGetMinX(_startFrame), CGRectGetMinX(_targetFrame), value), + interpolate(CGRectGetMinY(_startFrame), CGRectGetMinY(_targetFrame), value), + interpolate(CGRectGetWidth(_startFrame), CGRectGetWidth(_targetFrame), value), + interpolate(CGRectGetHeight(_startFrame), CGRectGetHeight(_targetFrame), value)); + objj_msgSend(_window, "setFrame:display:animate:", newFrame, YES, NO); +} +},["void","float"])]); +} +_CPWindowFullPlatformWindowSessionMake= function(aWindowView, aContentRect, hasShadow, aLevel) +{ + return { windowView:aWindowView, contentRect:aContentRect, hasShadow:hasShadow, level:aLevel }; +} +CPStandardWindowShadowStyle = 0; +CPMenuWindowShadowStyle = 1; +CPPanelWindowShadowStyle = 2; +CPCustomWindowShadowStyle = 3; +objj_executeFile("_CPWindowView.j", YES); +objj_executeFile("_CPStandardWindowView.j", YES); +objj_executeFile("_CPDocModalWindowView.j", YES); +objj_executeFile("_CPHUDWindowView.j", YES); +objj_executeFile("_CPBorderlessWindowView.j", YES); +objj_executeFile("_CPBorderlessBridgeWindowView.j", YES); +objj_executeFile("CPDragServer.j", YES); +objj_executeFile("CPView.j", YES); + +p;12;CPPlatform.jt;5872;@STATIC;1.0;I;21;Foundation/CPObject.jt;5827;objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPBasePlatform"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("bootstrap"), function $CPBasePlatform__bootstrap(self, _cmd) +{ with(self) +{ + objj_msgSend(CPPlatformString, "bootstrap"); + objj_msgSend(CPPlatformWindow, "setPrimaryPlatformWindow:", objj_msgSend(objj_msgSend(CPPlatformWindow, "alloc"), "_init")); +} +},["void"]), new objj_method(sel_getUid("isBrowser"), function $CPBasePlatform__isBrowser(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("supportsDragAndDrop"), function $CPBasePlatform__supportsDragAndDrop(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("supportsNativeMainMenu"), function $CPBasePlatform__supportsNativeMainMenu(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("terminateApplication"), function $CPBasePlatform__terminateApplication(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("activateIgnoringOtherApps:"), function $CPBasePlatform__activateIgnoringOtherApps_(self, _cmd, shouldIgnoreOtherApps) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("deactivate"), function $CPBasePlatform__deactivate(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("hideOtherApplications:"), function $CPBasePlatform__hideOtherApplications_(self, _cmd, aSender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("hide:"), function $CPBasePlatform__hide_(self, _cmd, aSender) +{ with(self) +{ +} +},["void","id"])]); +} +if (typeof window["CPPlatformEnableHTMLDragAndDrop"] === "undefined") + CPPlatformEnableHTMLDragAndDrop = NO; +CPPlatformDidClearBodyElementNotification = "CPPlatformDidClearBodyElementNotification"; +CPPlatformWillClearBodyElementNotification = "CPPlatformWillClearBodyElementNotification"; +var screenNeedsInitialization = NO, + mainBodyElement = nil, + elementRemovalTest = new RegExp("\\bcpdontremove\\b", "g"); +{var the_class = objj_allocateClassPair(CPBasePlatform, "CPPlatform"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPPlatform__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(CPPlatform, "class")) + return; + screenNeedsInitialization = objj_msgSend(CPPlatform, "isBrowser"); + if (document.documentElement) + document.documentElement.style.overflow = "hidden"; + if (objj_msgSend(CPPlatform, "isBrowser")) + window.onunload = function() + { + objj_msgSend(CPApp, "terminate:", nil); + } +} +},["void"]), new objj_method(sel_getUid("isBrowser"), function $CPPlatform__isBrowser(self, _cmd) +{ with(self) +{ + return typeof window.cpIsDesktop === "undefined"; +} +},["BOOL"]), new objj_method(sel_getUid("supportsDragAndDrop"), function $CPPlatform__supportsDragAndDrop(self, _cmd) +{ with(self) +{ + return CPFeatureIsCompatible(CPHTMLDragAndDropFeature) && (CPPlatformEnableHTMLDragAndDrop || !objj_msgSend(self, "isBrowser")); +} +},["BOOL"]), new objj_method(sel_getUid("supportsNativeMainMenu"), function $CPPlatform__supportsNativeMainMenu(self, _cmd) +{ with(self) +{ + return (typeof window["cpSetMainMenu"] === "function"); +} +},["BOOL"]), new objj_method(sel_getUid("terminateApplication"), function $CPPlatform__terminateApplication(self, _cmd) +{ with(self) +{ + if (typeof window["cpTerminate"] === "function") + window.cpTerminate(); +} +},["void"]), new objj_method(sel_getUid("activateIgnoringOtherApps:"), function $CPPlatform__activateIgnoringOtherApps_(self, _cmd, shouldIgnoreOtherApps) +{ with(self) +{ + if (typeof window["cpActivateIgnoringOtherApps"] === "function") + window.cpActivateIgnoringOtherApps(!!shouldIgnoreOtherApps); +} +},["void","BOOL"]), new objj_method(sel_getUid("deactivate"), function $CPPlatform__deactivate(self, _cmd) +{ with(self) +{ + if (typeof window["cpDeactivate"] === "function") + window.cpDeactivate(); +} +},["void"]), new objj_method(sel_getUid("hideOtherApplications:"), function $CPPlatform__hideOtherApplications_(self, _cmd, aSender) +{ with(self) +{ + if (typeof window["cpHideOtherApplications"] === "function") + window.cpHideOtherApplications(); +} +},["void","id"]), new objj_method(sel_getUid("hide:"), function $CPPlatform__hide_(self, _cmd, aSender) +{ with(self) +{ + if (typeof window["cpHide"] === "function") + window.cpHide(); +} +},["void","id"]), new objj_method(sel_getUid("mainBodyElement"), function $CPPlatform__mainBodyElement(self, _cmd) +{ with(self) +{ + if (!mainBodyElement) + mainBodyElement = document.getElementById("cappuccino-body") || document.body; + + return mainBodyElement; +} +},["DOMElement"]), new objj_method(sel_getUid("initializeScreenIfNecessary"), function $CPPlatform__initializeScreenIfNecessary(self, _cmd) +{ with(self) +{ + if (!screenNeedsInitialization) + return; + + screenNeedsInitialization = NO; + + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPPlatformWillClearBodyElementNotification, self); + + var bodyElement = objj_msgSend(self, "mainBodyElement"); + + + var children = bodyElement.childNodes, + length = children.length; + + while (length--) + { + var element = children[length]; + if (!element.className || element.className.match(elementRemovalTest) === null) + bodyElement.removeChild(element); + } + + bodyElement.style.overflow = "hidden"; + + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPPlatformDidClearBodyElementNotification, self); +} +},["void"])]); +} + +p;18;CPPlatformString.jt;6922;@STATIC;1.0;I;21;Foundation/CPObject.jt;6877;objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPBasePlatformString"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("bootstrap"), function $CPBasePlatformString__bootstrap(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("sizeOfString:withFont:forWidth:"), function $CPBasePlatformString__sizeOfString_withFont_forWidth_(self, _cmd, aString, aFont, aWidth) +{ with(self) +{ + return { width:0.0, height:0.0 }; +} +},["CGSize","CPString","CPFont","float"])]); +} +var DOMFixedWidthSpanElement = nil, + DOMFlexibleWidthSpanElement = nil, + DOMMetricsDivElement = nil, + DOMMetricsTextSpanElement = nil, + DOMMetricsImgElement = nil, + DOMIFrameElement = nil, + DOMIFrameDocument = nil, + DefaultFont = nil; +{var the_class = objj_allocateClassPair(CPBasePlatformString, "CPPlatformString"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("bootstrap"), function $CPPlatformString__bootstrap(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "createDOMElements"); +} +},["void"]), new objj_method(sel_getUid("createDOMElements"), function $CPPlatformString__createDOMElements(self, _cmd) +{ with(self) +{ + var style; + DOMIFrameElement = document.createElement("iframe"); + DOMIFrameElement.name = "iframe_" + FLOOR(RAND() * 10000); + DOMIFrameElement.className = "cpdontremove"; + style = DOMIFrameElement.style; + style.position = "absolute"; + style.left = "-100px"; + style.top = "-100px"; + style.width = "1px"; + style.height = "1px"; + style.borderWidth = "0px"; + style.overflow = "hidden"; + style.zIndex = 100000000000; + var bodyElement = objj_msgSend(CPPlatform, "mainBodyElement"); + bodyElement.appendChild(DOMIFrameElement); + DOMIFrameDocument = (DOMIFrameElement.contentDocument || DOMIFrameElement.contentWindow.document); + DOMIFrameDocument.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'+ + '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head></head><body></body></html>'); + DOMIFrameDocument.close(); + var DOMDivElement = DOMIFrameDocument.createElement("div"); + DOMDivElement.style.position = "absolute"; + DOMDivElement.style.width = "100000px"; + DOMIFrameDocument.body.appendChild(DOMDivElement); + DOMFlexibleWidthSpanElement = DOMIFrameDocument.createElement("span"); + style = DOMFlexibleWidthSpanElement.style; + style.position = "absolute"; + style.visibility = "visible"; + style.padding = "0px"; + style.margin = "0px"; + style.whiteSpace = "pre"; + DOMFixedWidthSpanElement = DOMIFrameDocument.createElement("span"); + style = DOMFixedWidthSpanElement.style; + style.display = "block"; + style.position = "absolute"; + style.visibility = "visible"; + style.padding = "0px"; + style.margin = "0px"; + style.width = "1px"; + style.wordWrap = "break-word"; + try + { + style.whiteSpace = "pre"; + style.whiteSpace = "-o-pre-wrap"; + style.whiteSpace = "-pre-wrap"; + style.whiteSpace = "-moz-pre-wrap"; + style.whiteSpace = "pre-wrap"; + } + catch(e) + { + style.whiteSpace = "pre"; + } + DOMDivElement.appendChild(DOMFlexibleWidthSpanElement); + DOMDivElement.appendChild(DOMFixedWidthSpanElement); +} +},["void"]), new objj_method(sel_getUid("createDOMMetricsElements"), function $CPPlatformString__createDOMMetricsElements(self, _cmd) +{ with(self) +{ + if (!DOMIFrameElement) + objj_msgSend(self, "createDOMElements"); + var style; + DOMMetricsDivElement = DOMIFrameDocument.createElement("div"); + DOMMetricsDivElement.style.position = "absolute"; + DOMMetricsDivElement.style.width = "100000px"; + DOMIFrameDocument.body.appendChild(DOMMetricsDivElement); + DOMMetricsTextSpanElement = DOMIFrameDocument.createElement("span"); + DOMMetricsTextSpanElement.innerHTML = "x"; + style = DOMMetricsTextSpanElement.style; + style.position = "absolute"; + style.visibility = "visible"; + style.padding = "0px"; + style.margin = "0px"; + style.whiteSpace = "pre"; + var imgPath = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPView, "class")), "pathForResource:", "empty.png"); + DOMMetricsImgElement = DOMIFrameDocument.createElement("img"); + DOMMetricsImgElement.setAttribute("src", imgPath); + DOMMetricsImgElement.setAttribute("width", "1"); + DOMMetricsImgElement.setAttribute("height", "1"); + DOMMetricsImgElement.setAttribute("alt", ""); + style = DOMMetricsImgElement.style; + style.visibility = "visible"; + style.padding = "0px"; + style.margin = "0px"; + style.border = "none"; + style.verticalAlign = "baseline"; + DOMMetricsDivElement.appendChild(DOMMetricsTextSpanElement); + DOMMetricsDivElement.appendChild(DOMMetricsImgElement); +} +},["void"]), new objj_method(sel_getUid("sizeOfString:withFont:forWidth:"), function $CPPlatformString__sizeOfString_withFont_forWidth_(self, _cmd, aString, aFont, aWidth) +{ with(self) +{ + if (!aFont) + { + if (!DefaultFont) + DefaultFont = objj_msgSend(CPFont, "systemFontOfSize:", 12.0); + aFont = DefaultFont; + } + if (!DOMIFrameElement) + objj_msgSend(self, "createDOMElements"); + var span; + if (!aWidth) + span = DOMFlexibleWidthSpanElement; + else + { + span = DOMFixedWidthSpanElement; + span.style.width = ROUND(aWidth) + "px"; + } + span.style.font = objj_msgSend(aFont, "cssString"); + if (CPFeatureIsCompatible(CPJavascriptInnerTextFeature)) + span.innerText = aString; + else if (CPFeatureIsCompatible(CPJavascriptTextContentFeature)) + span.textContent = aString; + return { width:span.clientWidth, height:span.clientHeight }; +} +},["CGSize","CPString","CPFont","float"]), new objj_method(sel_getUid("metricsOfFont:"), function $CPPlatformString__metricsOfFont_(self, _cmd, aFont) +{ with(self) +{ + if (!aFont) + { + if (!DefaultFont) + DefaultFont = objj_msgSend(CPFont, "systemFontOfSize:", 12.0); + aFont = DefaultFont; + } + if (!DOMMetricsDivElement) + objj_msgSend(self, "createDOMMetricsElements"); + DOMMetricsDivElement.style.font = objj_msgSend(aFont, "cssString"); + var baseline = DOMMetricsImgElement.offsetTop - DOMMetricsTextSpanElement.offsetTop + DOMMetricsImgElement.offsetHeight, + descender = baseline - DOMMetricsTextSpanElement.offsetHeight, + lineHeight = DOMMetricsTextSpanElement.offsetHeight; + return objj_msgSend(CPDictionary, "dictionaryWithObjectsAndKeys:", baseline, "ascender", descender, "descender", lineHeight, "lineHeight"); +} +},["CPDictionary","CPFont"])]); +} + +p;18;CPPlatformWindow.jt;7894;@STATIC;1.0;I;21;Foundation/CPObject.ji;22;CPPlatformWindow+DOM.jt;7822;objj_executeFile("Foundation/CPObject.j", NO); +var PrimaryPlatformWindow = NULL; +{var the_class = objj_allocateClassPair(CPObject, "CPPlatformWindow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_contentRect"), new objj_ivar("_level"), new objj_ivar("_hasShadow"), new objj_ivar("_shadowStyle"), new objj_ivar("_DOMWindow"), new objj_ivar("_DOMBodyElement"), new objj_ivar("_DOMFocusElement"), new objj_ivar("_DOMEventGuard"), new objj_ivar("_DOMScrollingElement"), new objj_ivar("_hideDOMScrollingElementTimeout"), new objj_ivar("_windowLevels"), new objj_ivar("_windowLayers"), new objj_ivar("_mouseIsDown"), new objj_ivar("_mouseDownIsRightClick"), new objj_ivar("_mouseDownWindow"), new objj_ivar("_lastMouseUp"), new objj_ivar("_lastMouseDown"), new objj_ivar("_charCodes"), new objj_ivar("_keyCode"), new objj_ivar("_lastKey"), new objj_ivar("_capsLockActive"), new objj_ivar("_ignoreNativeCopyOrCutEvent"), new objj_ivar("_ignoreNativePastePreparation"), new objj_ivar("_DOMEventMode"), new objj_ivar("_DOMPasteboardElement"), new objj_ivar("_pasteboardKeyDownEvent"), new objj_ivar("_overriddenEventType")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithContentRect:"), function $CPPlatformWindow__initWithContentRect_(self, _cmd, aRect) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPlatformWindow").super_class }, "init"); + if (self) + { + _contentRect = { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; + _windowLevels = []; + _windowLayers = objj_msgSend(CPDictionary, "dictionary"); + _charCodes = {}; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("init"), function $CPPlatformWindow__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithContentRect:", { origin: { x:0.0, y:0.0 }, size: { width:400.0, height:500.0 } }); +} +},["id"]), new objj_method(sel_getUid("contentRect"), function $CPPlatformWindow__contentRect(self, _cmd) +{ with(self) +{ + return { origin: { x:_contentRect.origin.x, y:_contentRect.origin.y }, size: { width:_contentRect.size.width, height:_contentRect.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("contentBounds"), function $CPPlatformWindow__contentBounds(self, _cmd) +{ with(self) +{ + var contentBounds = objj_msgSend(self, "contentRect"); + contentBounds.origin = { x:0.0, y:0.0 }; + return contentBounds; +} +},["CGRect"]), new objj_method(sel_getUid("visibleFrame"), function $CPPlatformWindow__visibleFrame(self, _cmd) +{ with(self) +{ + var frame = objj_msgSend(self, "contentBounds"); + frame.origin = CGPointMakeZero(); + if (objj_msgSend(CPMenu, "menuBarVisible") && objj_msgSend(CPPlatformWindow, "primaryPlatformWindow") === self) + { + var menuBarHeight = objj_msgSend(objj_msgSend(CPApp, "mainMenu"), "menuBarHeight"); + frame.origin.y += menuBarHeight; + frame.size.height -= menuBarHeight; + } + return frame; +} +},["CGRect"]), new objj_method(sel_getUid("usableContentFrame"), function $CPPlatformWindow__usableContentFrame(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "visibleFrame"); +} +},["CGRect"]), new objj_method(sel_getUid("setContentRect:"), function $CPPlatformWindow__setContentRect_(self, _cmd, aRect) +{ with(self) +{ + if (!aRect || ((_contentRect.origin.x == aRect.origin.x && _contentRect.origin.y == aRect.origin.y) && (_contentRect.size.width == aRect.size.width && _contentRect.size.height == aRect.size.height))) + return; + _contentRect = { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; + objj_msgSend(self, "updateNativeContentRect"); +} +},["void","CGRect"]), new objj_method(sel_getUid("updateFromNativeContentRect"), function $CPPlatformWindow__updateFromNativeContentRect(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setContentRect:", objj_msgSend(self, "nativeContentRect")); +} +},["void"]), new objj_method(sel_getUid("convertBaseToScreen:"), function $CPPlatformWindow__convertBaseToScreen_(self, _cmd, aPoint) +{ with(self) +{ + var contentRect = objj_msgSend(self, "contentRect"); + return { x:aPoint.x + (contentRect.origin.x), y:aPoint.y + (contentRect.origin.y) }; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertScreenToBase:"), function $CPPlatformWindow__convertScreenToBase_(self, _cmd, aPoint) +{ with(self) +{ + var contentRect = objj_msgSend(self, "contentRect"); + return { x:aPoint.x - (contentRect.origin.x), y:aPoint.y - (contentRect.origin.y) }; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("isVisible"), function $CPPlatformWindow__isVisible(self, _cmd) +{ with(self) +{ + return _DOMWindow !== NULL; +} +},["BOOL"]), new objj_method(sel_getUid("deminiaturize:"), function $CPPlatformWindow__deminiaturize_(self, _cmd, sender) +{ with(self) +{ + if (_DOMWindow && typeof _DOMWindow["cpDeminiaturize"] === "function") + _DOMWindow.cpDeminiaturize(); +} +},["void","id"]), new objj_method(sel_getUid("miniaturize:"), function $CPPlatformWindow__miniaturize_(self, _cmd, sender) +{ with(self) +{ + if (_DOMWindow && typeof _DOMWindow["cpMiniaturize"] === "function") + _DOMWindow.cpMiniaturize(); +} +},["void","id"]), new objj_method(sel_getUid("moveWindow:fromLevel:toLevel:"), function $CPPlatformWindow__moveWindow_fromLevel_toLevel_(self, _cmd, aWindow, fromLevel, toLevel) +{ with(self) +{ + if (!aWindow._isVisible) + return; + var fromLayer = objj_msgSend(self, "layerAtLevel:create:", fromLevel, NO), + toLayer = objj_msgSend(self, "layerAtLevel:create:", toLevel, YES); + objj_msgSend(fromLayer, "removeWindow:", aWindow); + objj_msgSend(toLayer, "insertWindow:atIndex:", aWindow, CPNotFound); +} +},["void","CPWindow","int","int"]), new objj_method(sel_getUid("setLevel:"), function $CPPlatformWindow__setLevel_(self, _cmd, aLevel) +{ with(self) +{ + _level = aLevel; + if (_DOMWindow && _DOMWindow.cpSetLevel) + _DOMWindow.cpSetLevel(aLevel); +} +},["void","CPInteger"]), new objj_method(sel_getUid("setHasShadow:"), function $CPPlatformWindow__setHasShadow_(self, _cmd, shouldHaveShadow) +{ with(self) +{ + _hasShadow = shouldHaveShadow; + if (_DOMWindow && _DOMWindow.cpSetHasShadow) + _DOMWindow.cpSetHasShadow(shouldHaveShadow); +} +},["void","BOOL"]), new objj_method(sel_getUid("setShadowStyle:"), function $CPPlatformWindow__setShadowStyle_(self, _cmd, aStyle) +{ with(self) +{ + _shadowStyle = aStyle; + if (_DOMWindow && _DOMWindow.cpSetShadowStyle) + _shadowStyle.cpSetShadowStyle(aStyle); +} +},["void","int"]), new objj_method(sel_getUid("supportsFullPlatformWindows"), function $CPPlatformWindow__supportsFullPlatformWindows(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPPlatform, "isBrowser"); +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("visiblePlatformWindows"), function $CPPlatformWindow__visiblePlatformWindows(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "set"); +} +},["CPSet"]), new objj_method(sel_getUid("supportsMultipleInstances"), function $CPPlatformWindow__supportsMultipleInstances(self, _cmd) +{ with(self) +{ + return !CPBrowserIsEngine(CPInternetExplorerBrowserEngine); +} +},["BOOL"]), new objj_method(sel_getUid("primaryPlatformWindow"), function $CPPlatformWindow__primaryPlatformWindow(self, _cmd) +{ with(self) +{ + return PrimaryPlatformWindow; +} +},["CPPlatformWindow"]), new objj_method(sel_getUid("setPrimaryPlatformWindow:"), function $CPPlatformWindow__setPrimaryPlatformWindow_(self, _cmd, aPlatformWindow) +{ with(self) +{ + PrimaryPlatformWindow = aPlatformWindow; +} +},["void","CPPlatformWindow"])]); +} +objj_executeFile("CPPlatformWindow+DOM.j", YES); + +p;18;CPDOMWindowLayer.jt;3062;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jt;2992;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPDOMWindowLayer"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_level"), new objj_ivar("_windows"), new objj_ivar("_DOMElement")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLevel:"), function $CPDOMWindowLayer__initWithLevel_(self, _cmd, aLevel) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDOMWindowLayer").super_class }, "init"); + if (self) + { + _level = aLevel; + _windows = []; + _DOMElement = document.createElement("div"); + _DOMElement.style.position = "absolute"; + _DOMElement.style.top = "0px"; + _DOMElement.style.left = "0px"; + _DOMElement.style.width = "1px"; + _DOMElement.style.height = "1px"; + } + return self; +} +},["id","int"]), new objj_method(sel_getUid("level"), function $CPDOMWindowLayer__level(self, _cmd) +{ with(self) +{ + return _level; +} +},["int"]), new objj_method(sel_getUid("removeWindow:"), function $CPDOMWindowLayer__removeWindow_(self, _cmd, aWindow) +{ with(self) +{ + if (!aWindow._isVisible) + return; + var index = aWindow._index, + count = _windows.length - 1; + _DOMElement.removeChild(aWindow._DOMElement); + objj_msgSend(_windows, "removeObjectAtIndex:", aWindow._index); + for (; index < count; ++index) + { + _windows[index]._index = index; + _windows[index]._DOMElement.style.zIndex = index; + } + aWindow._isVisible = NO; +} +},["void","CPWindow"]), new objj_method(sel_getUid("insertWindow:atIndex:"), function $CPDOMWindowLayer__insertWindow_atIndex_(self, _cmd, aWindow, anIndex) +{ with(self) +{ + var count = objj_msgSend(_windows, "count"), + zIndex = (anIndex == CPNotFound ? count : anIndex), + isVisible = aWindow._isVisible; + if (isVisible) + { + zIndex = MIN(zIndex, aWindow._index); + objj_msgSend(_windows, "removeObjectAtIndex:", aWindow._index); + } + else + ++count; + if (anIndex == CPNotFound || anIndex >= count) + objj_msgSend(_windows, "addObject:", aWindow); + else + objj_msgSend(_windows, "insertObject:atIndex:", aWindow, anIndex); + for (; zIndex < count; ++zIndex) + { + _windows[zIndex]._index = zIndex; + _windows[zIndex]._DOMElement.style.zIndex = zIndex; + } + if (aWindow._DOMElement.parentNode !== _DOMElement) + { + _DOMElement.appendChild(aWindow._DOMElement); + aWindow._isVisible = YES; + if (objj_msgSend(aWindow, "isFullBridge")) + objj_msgSend(aWindow, "setFrame:", objj_msgSend(aWindow._platformWindow, "usableContentFrame")); + } +} +},["void","CPWindow","unsigned"]), new objj_method(sel_getUid("orderedWindows"), function $CPDOMWindowLayer__orderedWindows(self, _cmd) +{ with(self) +{ + return _windows; +} +},["CPArray"])]); +} + +p;22;CPPlatformWindow+DOM.jt;54859;@STATIC;1.0;I;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.ji;9;CPEvent.ji;8;CPText.ji;17;CPCompatibility.ji;18;CPDOMWindowLayer.ji;12;CPPlatform.ji;18;CPPlatformWindow.ji;26;CPPlatformWindow+DOMKeys.jt;54645;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPRunLoop.j", NO); +objj_executeFile("CPEvent.j", YES); +objj_executeFile("CPText.j", YES); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("CPDOMWindowLayer.j", YES); +objj_executeFile("CPPlatform.j", YES); +objj_executeFile("CPPlatformWindow.j", YES); +objj_executeFile("CPPlatformWindow+DOMKeys.j", YES); +var PlatformWindows = objj_msgSend(CPSet, "set"); +var CPDOMEventGetClickCount, + CPDOMEventStop, + StopDOMEventPropagation, + StopContextMenuDOMEventPropagation; +var KeyCodesToPrevent = {}, + CharacterKeysToPrevent = {}, + KeyCodesToAllow = {}, + MozKeyCodeToKeyCodeMap = { + 61: 187, + 59: 186 + }, + KeyCodesToUnicodeMap = {}; +KeyCodesToPrevent[CPKeyCodes.A] = YES; +KeyCodesToAllow[CPKeyCodes.F1] = YES; +KeyCodesToAllow[CPKeyCodes.F2] = YES; +KeyCodesToAllow[CPKeyCodes.F3] = YES; +KeyCodesToAllow[CPKeyCodes.F4] = YES; +KeyCodesToAllow[CPKeyCodes.F5] = YES; +KeyCodesToAllow[CPKeyCodes.F6] = YES; +KeyCodesToAllow[CPKeyCodes.F7] = YES; +KeyCodesToAllow[CPKeyCodes.F8] = YES; +KeyCodesToAllow[CPKeyCodes.F9] = YES; +KeyCodesToAllow[CPKeyCodes.F10] = YES; +KeyCodesToAllow[CPKeyCodes.F11] = YES; +KeyCodesToAllow[CPKeyCodes.F12] = YES; +KeyCodesToUnicodeMap[CPKeyCodes.BACKSPACE] = CPDeleteCharacter; +KeyCodesToUnicodeMap[CPKeyCodes.DELETE] = CPDeleteFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.TAB] = CPTabCharacter; +KeyCodesToUnicodeMap[CPKeyCodes.ENTER] = CPCarriageReturnCharacter; +KeyCodesToUnicodeMap[CPKeyCodes.ESC] = CPEscapeFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.PAGE_UP] = CPPageUpFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.PAGE_DOWN] = CPPageDownFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.LEFT] = CPLeftArrowFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.UP] = CPUpArrowFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.RIGHT] = CPRightArrowFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.DOWN] = CPDownArrowFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.SEMICOLON] = ";"; +KeyCodesToUnicodeMap[CPKeyCodes.DASH] = "-"; +KeyCodesToUnicodeMap[CPKeyCodes.EQUALS] = "="; +KeyCodesToUnicodeMap[CPKeyCodes.COMMA] = ","; +KeyCodesToUnicodeMap[CPKeyCodes.PERIOD] = "."; +KeyCodesToUnicodeMap[CPKeyCodes.SLASH] = "/"; +KeyCodesToUnicodeMap[CPKeyCodes.APOSTROPHE] = "`"; +KeyCodesToUnicodeMap[CPKeyCodes.SINGLE_QUOTE] = "'"; +KeyCodesToUnicodeMap[CPKeyCodes.OPEN_SQUARE_BRACKET] = "["; +KeyCodesToUnicodeMap[CPKeyCodes.BACKSLASH] = "\\"; +KeyCodesToUnicodeMap[CPKeyCodes.CLOSE_SQUARE_BRACKET] = "]"; +var ModifierKeyCodes = [ + CPKeyCodes.META, + CPKeyCodes.MAC_FF_META, + CPKeyCodes.CTRL, + CPKeyCodes.ALT, + CPKeyCodes.SHIFT +]; +var supportsNativeDragAndDrop = objj_msgSend(CPPlatform, "supportsDragAndDrop"); +{ +var the_class = objj_getClass("CPPlatformWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPPlatformWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_init"), function $CPPlatformWindow___init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPlatformWindow").super_class }, "init"); + if (self) + { + _DOMWindow = window; + _contentRect = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _windowLevels = []; + _windowLayers = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(self, "registerDOMWindow"); + objj_msgSend(self, "updateFromNativeContentRect"); + _charCodes = {}; + } + return self; +} +},["id"]), new objj_method(sel_getUid("nativeContentRect"), function $CPPlatformWindow__nativeContentRect(self, _cmd) +{ with(self) +{ + if (!_DOMWindow) + return objj_msgSend(self, "contentRect"); + if (_DOMWindow.cpFrame) + return _DOMWindow.cpFrame(); + var contentRect = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if (window.screenTop) + contentRect.origin = { x:_DOMWindow.screenLeft, y:_DOMWindow.screenTop }; + else if (window.screenX) + contentRect.origin = { x:_DOMWindow.screenX, y:_DOMWindow.screenY }; + if (_DOMWindow.innerWidth) + contentRect.size = { width:_DOMWindow.innerWidth, height:_DOMWindow.innerHeight }; + else if (document.documentElement && document.documentElement.clientWidth) + contentRect.size = { width:_DOMWindow.document.documentElement.clientWidth, height:_DOMWindow.document.documentElement.clientHeight }; + else + contentRect.size = { width:_DOMWindow.document.body.clientWidth, height:_DOMWindow.document.body.clientHeight }; + return contentRect; +} +},["CGRect"]), new objj_method(sel_getUid("updateNativeContentRect"), function $CPPlatformWindow__updateNativeContentRect(self, _cmd) +{ with(self) +{ + if (!_DOMWindow) + return; + if (typeof _DOMWindow["cpSetFrame"] === "function") + return _DOMWindow.cpSetFrame(objj_msgSend(self, "contentRect")); + var origin = objj_msgSend(self, "contentRect").origin, + nativeOrigin = objj_msgSend(self, "nativeContentRect").origin; + if (origin.x !== nativeOrigin.x || origin.y !== nativeOrigin.y) + { + _DOMWindow.moveBy(origin.x - nativeOrigin.x, origin.y - nativeOrigin.y); + } + var size = objj_msgSend(self, "contentRect").size, + nativeSize = objj_msgSend(self, "nativeContentRect").size; + if (size.width !== nativeSize.width || size.height !== nativeSize.height) + { + _DOMWindow.resizeBy(size.width - nativeSize.width, size.height - nativeSize.height); + } +} +},["void"]), new objj_method(sel_getUid("orderBack:"), function $CPPlatformWindow__orderBack_(self, _cmd, aSender) +{ with(self) +{ + if (_DOMWindow) + _DOMWindow.blur(); +} +},["void","id"]), new objj_method(sel_getUid("createDOMElements"), function $CPPlatformWindow__createDOMElements(self, _cmd) +{ with(self) +{ + var theDocument = _DOMWindow.document; + _DOMFocusElement = theDocument.createElement("input"); + _DOMFocusElement.style.position = "absolute"; + _DOMFocusElement.style.zIndex = "-1000"; + _DOMFocusElement.style.opacity = "0"; + _DOMFocusElement.style.filter = "alpha(opacity=0)"; + _DOMFocusElement.className = "cpdontremove"; + _DOMBodyElement.appendChild(_DOMFocusElement); + _DOMPasteboardElement = theDocument.createElement("textarea"); + _DOMPasteboardElement.style.position = "absolute"; + _DOMPasteboardElement.style.top = "-10000px"; + _DOMPasteboardElement.style.zIndex = "999"; + _DOMPasteboardElement.className = "cpdontremove"; + _DOMBodyElement.appendChild(_DOMPasteboardElement); + _DOMPasteboardElement.blur(); + _DOMEventGuard = theDocument.createElement("div"); + _DOMEventGuard.style.position = "absolute"; + _DOMEventGuard.style.top = "0px"; + _DOMEventGuard.style.left = "0px"; + _DOMEventGuard.style.width = "100%"; + _DOMEventGuard.style.height = "100%"; + _DOMEventGuard.style.zIndex = "999"; + _DOMEventGuard.style.display = "none"; + _DOMEventGuard.className = "cpdontremove"; + _DOMBodyElement.appendChild(_DOMEventGuard); + _DOMScrollingElement = theDocument.createElement("div"); + _DOMScrollingElement.style.position = "absolute"; + _DOMScrollingElement.style.visibility = "hidden"; + _DOMScrollingElement.style.zIndex = "998"; + _DOMScrollingElement.style.height = "60px"; + _DOMScrollingElement.style.width = "60px"; + _DOMScrollingElement.style.overflow = "scroll"; + _DOMScrollingElement.style.opacity = "0"; + _DOMScrollingElement.style.filter = "alpha(opacity=0)"; + _DOMScrollingElement.className = "cpdontremove"; + _DOMBodyElement.appendChild(_DOMScrollingElement); + var _DOMInnerScrollingElement = theDocument.createElement("div"); + _DOMInnerScrollingElement.style.width = "400px"; + _DOMInnerScrollingElement.style.height = "400px"; + _DOMScrollingElement.appendChild(_DOMInnerScrollingElement); + _DOMScrollingElement.scrollTop = 150; + _DOMScrollingElement.scrollLeft = 150; +} +},["void"]), new objj_method(sel_getUid("registerDOMWindow"), function $CPPlatformWindow__registerDOMWindow(self, _cmd) +{ with(self) +{ + var theDocument = _DOMWindow.document; + _DOMBodyElement = theDocument.getElementById("cappuccino-body") || theDocument.body; + if (supportsNativeDragAndDrop) + _DOMBodyElement.style["-khtml-user-select"] = "none"; + _DOMBodyElement.webkitTouchCallout = "none"; + objj_msgSend(self, "createDOMElements"); + objj_msgSend(self, "_addLayers"); + var theClass = objj_msgSend(self, "class"), + dragEventImplementation = class_getMethodImplementation(theClass, sel_getUid("dragEvent:")), + dragEventCallback = function (anEvent) { dragEventImplementation(self, nil, anEvent); }, + resizeEventSelector = sel_getUid("resizeEvent:"), + resizeEventImplementation = class_getMethodImplementation(theClass, resizeEventSelector), + resizeEventCallback = function (anEvent) { resizeEventImplementation(self, nil, anEvent); }, + copyEventSelector = sel_getUid("copyEvent:"), + copyEventImplementation = class_getMethodImplementation(theClass, copyEventSelector), + copyEventCallback = function (anEvent) {copyEventImplementation(self, nil, anEvent); }, + pasteEventSelector = sel_getUid("pasteEvent:"), + pasteEventImplementation = class_getMethodImplementation(theClass, pasteEventSelector), + pasteEventCallback = function (anEvent) {pasteEventImplementation(self, nil, anEvent); }, + keyEventSelector = sel_getUid("keyEvent:"), + keyEventImplementation = class_getMethodImplementation(theClass, keyEventSelector), + keyEventCallback = function (anEvent) { keyEventImplementation(self, nil, anEvent); }, + mouseEventSelector = sel_getUid("mouseEvent:"), + mouseEventImplementation = class_getMethodImplementation(theClass, mouseEventSelector), + mouseEventCallback = function (anEvent) { mouseEventImplementation(self, nil, anEvent); }, + contextMenuEventSelector = sel_getUid("contextMenuEvent:"), + contextMenuEventImplementation = class_getMethodImplementation(theClass, contextMenuEventSelector), + contextMenuEventCallback = function (anEvent) { return contextMenuEventImplementation(self, nil, anEvent); }, + scrollEventSelector = sel_getUid("scrollEvent:"), + scrollEventImplementation = class_getMethodImplementation(theClass, scrollEventSelector), + scrollEventCallback = function (anEvent) { scrollEventImplementation(self, nil, anEvent); }, + touchEventSelector = sel_getUid("touchEvent:"), + touchEventImplementation = class_getMethodImplementation(theClass, touchEventSelector), + touchEventCallback = function (anEvent) { touchEventImplementation(self, nil, anEvent); }; + if (theDocument.addEventListener) + { + if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + theDocument.addEventListener("dragstart", dragEventCallback, NO); + theDocument.addEventListener("drag", dragEventCallback, NO); + theDocument.addEventListener("dragend", dragEventCallback, NO); + theDocument.addEventListener("dragover", dragEventCallback, NO); + theDocument.addEventListener("dragleave", dragEventCallback, NO); + theDocument.addEventListener("drop", dragEventCallback, NO); + } + theDocument.addEventListener("mouseup", mouseEventCallback, NO); + theDocument.addEventListener("mousedown", mouseEventCallback, NO); + theDocument.addEventListener("mousemove", mouseEventCallback, NO); + theDocument.addEventListener("contextmenu", contextMenuEventCallback, NO); + theDocument.addEventListener("beforecopy", copyEventCallback, NO); + theDocument.addEventListener("beforecut", copyEventCallback, NO); + theDocument.addEventListener("beforepaste", pasteEventCallback, NO); + theDocument.addEventListener("keyup", keyEventCallback, NO); + theDocument.addEventListener("keydown", keyEventCallback, NO); + theDocument.addEventListener("keypress", keyEventCallback, NO); + theDocument.addEventListener("touchstart", touchEventCallback, NO); + theDocument.addEventListener("touchend", touchEventCallback, NO); + theDocument.addEventListener("touchmove", touchEventCallback, NO); + theDocument.addEventListener("touchcancel", touchEventCallback, NO); + _DOMWindow.addEventListener("DOMMouseScroll", scrollEventCallback, NO); + _DOMWindow.addEventListener("mousewheel", scrollEventCallback, NO); + _DOMWindow.addEventListener("resize", resizeEventCallback, NO); + _DOMWindow.addEventListener("unload", function() + { + objj_msgSend(self, "updateFromNativeContentRect"); + objj_msgSend(self, "_removeLayers"); + theDocument.removeEventListener("mouseup", mouseEventCallback, NO); + theDocument.removeEventListener("mousedown", mouseEventCallback, NO); + theDocument.removeEventListener("mousemove", mouseEventCallback, NO); + theDocument.removeEventListener("contextmenu", contextMenuEventCallback, NO); + theDocument.removeEventListener("keyup", keyEventCallback, NO); + theDocument.removeEventListener("keydown", keyEventCallback, NO); + theDocument.removeEventListener("keypress", keyEventCallback, NO); + theDocument.removeEventListener("beforecopy", copyEventCallback, NO); + theDocument.removeEventListener("beforecut", copyEventCallback, NO); + theDocument.removeEventListener("beforepaste", pasteEventCallback, NO); + theDocument.removeEventListener("touchstart", touchEventCallback, NO); + theDocument.removeEventListener("touchend", touchEventCallback, NO); + theDocument.removeEventListener("touchmove", touchEventCallback, NO); + _DOMWindow.removeEventListener("resize", resizeEventCallback, NO); + _DOMWindow.removeEventListener("DOMMouseScroll", scrollEventCallback, NO); + _DOMWindow.removeEventListener("mousewheel", scrollEventCallback, NO); + objj_msgSend(PlatformWindows, "removeObject:", self); + self._DOMWindow = nil; + }, NO); + } + else + { + theDocument.attachEvent("onmouseup", mouseEventCallback); + theDocument.attachEvent("onmousedown", mouseEventCallback); + theDocument.attachEvent("onmousemove", mouseEventCallback); + theDocument.attachEvent("ondblclick", mouseEventCallback); + theDocument.attachEvent("oncontextmenu", contextMenuEventCallback); + theDocument.attachEvent("onkeyup", keyEventCallback); + theDocument.attachEvent("onkeydown", keyEventCallback); + theDocument.attachEvent("onkeypress", keyEventCallback); + _DOMWindow.attachEvent("onresize", resizeEventCallback); + _DOMWindow.onmousewheel = scrollEventCallback; + theDocument.onmousewheel = scrollEventCallback; + _DOMBodyElement.ondrag = function () { return NO; }; + _DOMBodyElement.onselectstart = function () { return _DOMWindow.event.srcElement === _DOMPasteboardElement; }; + _DOMWindow.attachEvent("onbeforeunload", function() + { + objj_msgSend(self, "updateFromNativeContentRect"); + objj_msgSend(self, "_removeLayers"); + theDocument.detachEvent("onmouseup", mouseEventCallback); + theDocument.detachEvent("onmousedown", mouseEventCallback); + theDocument.detachEvent("onmousemove", mouseEventCallback); + theDocument.detachEvent("ondblclick", mouseEventCallback); + theDocument.detachEvent("oncontextmenu", contextMenuEventCallback); + theDocument.detachEvent("onkeyup", keyEventCallback); + theDocument.detachEvent("onkeydown", keyEventCallback); + theDocument.detachEvent("onkeypress", keyEventCallback); + _DOMWindow.detachEvent("onresize", resizeEventCallback); + _DOMWindow.onmousewheel = NULL; + theDocument.onmousewheel = NULL; + _DOMBodyElement.ondrag = NULL; + _DOMBodyElement.onselectstart = NULL; + objj_msgSend(PlatformWindows, "removeObject:", self); + self._DOMWindow = nil; + }, NO); + } +} +},["void"]), new objj_method(sel_getUid("orderFront:"), function $CPPlatformWindow__orderFront_(self, _cmd, aSender) +{ with(self) +{ + if (_DOMWindow) + return _DOMWindow.focus(); + _DOMWindow = window.open("", "_blank", "menubar=no,location=no,resizable=yes,scrollbars=no,status=no,left=" + (_contentRect.origin.x) + ",top=" + (_contentRect.origin.y) + ",width=" + (_contentRect.size.width) + ",height=" + (_contentRect.size.height)); + objj_msgSend(PlatformWindows, "addObject:", self); + _DOMWindow.document.write("<!DOCTYPE html><html lang='en'><head></head><body style='background-color:transparent;'></body></html>"); + _DOMWindow.document.close(); + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + _DOMWindow.cpWindowNumber = objj_msgSend(self._only, "windowNumber"); + _DOMWindow.cpSetFrame(_contentRect); + _DOMWindow.cpSetLevel(_level); + _DOMWindow.cpSetHasShadow(_hasShadow); + _DOMWindow.cpSetShadowStyle(_shadowStyle); + } + objj_msgSend(self, "registerDOMWindow"); + _DOMBodyElement.style.cursor = objj_msgSend(objj_msgSend(CPCursor, "currentCursor"), "_cssString"); +} +},["void","id"]), new objj_method(sel_getUid("orderOut:"), function $CPPlatformWindow__orderOut_(self, _cmd, aSender) +{ with(self) +{ + if (!_DOMWindow) + return; + _DOMWindow.close(); +} +},["void","id"]), new objj_method(sel_getUid("dragEvent:"), function $CPPlatformWindow__dragEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + var type = aDOMEvent.type, + dragServer = objj_msgSend(CPDragServer, "sharedDragServer"), + location = { x:aDOMEvent.clientX, y:aDOMEvent.clientY }, + pasteboard = objj_msgSend(_CPDOMDataTransferPasteboard, "DOMDataTransferPasteboard"); + objj_msgSend(pasteboard, "_setDataTransfer:", aDOMEvent.dataTransfer); + if (aDOMEvent.type === "dragstart") + { + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + objj_msgSend(pasteboard, "_setPasteboard:", objj_msgSend(dragServer, "draggingPasteboard")); + var draggedWindow = objj_msgSend(dragServer, "draggedWindow"), + draggedWindowFrame = objj_msgSend(draggedWindow, "frame"), + DOMDragElement = draggedWindow._DOMElement; + DOMDragElement.style.left = -(draggedWindowFrame.size.width) + "px"; + DOMDragElement.style.top = -(draggedWindowFrame.size.height) + "px"; + var parentNode = DOMDragElement.parentNode; + if (parentNode) + parentNode.removeChild(DOMDragElement); + _DOMBodyElement.appendChild(DOMDragElement); + var draggingOffset = objj_msgSend(dragServer, "draggingOffset"); + aDOMEvent.dataTransfer.setDragImage(DOMDragElement, draggingOffset.width, draggingOffset.height); + aDOMEvent.dataTransfer.effectAllowed = "all"; + objj_msgSend(dragServer, "draggingStartedInPlatformWindow:globalLocation:", self, objj_msgSend(CPPlatform, "isBrowser") ? location : { x:aDOMEvent.screenX, y:aDOMEvent.screenY }); + } + else if (type === "drag") + { + var y = aDOMEvent.screenY; + if (CPFeatureIsCompatible(CPHTML5DragAndDropSourceYOffBy1)) + y -= 1; + objj_msgSend(dragServer, "draggingSourceUpdatedWithGlobalLocation:", objj_msgSend(CPPlatform, "isBrowser") ? location : { x:aDOMEvent.screenX, y:y }); + } + else if (type === "dragover" || type === "dragleave") + { + if (aDOMEvent.preventDefault) + aDOMEvent.preventDefault(); + var dropEffect = "none", + dragOperation = objj_msgSend(dragServer, "draggingUpdatedInPlatformWindow:location:", self, location); + if (dragOperation === CPDragOperationMove || dragOperation === CPDragOperationGeneric || dragOperation === CPDragOperationPrivate) + dropEffect = "move"; + else if (dragOperation === CPDragOperationCopy) + dropEffect = "copy"; + else if (dragOperation === CPDragOperationLink) + dropEffect = "link"; + aDOMEvent.dataTransfer.dropEffect = dropEffect; + } + else if (type === "dragend") + { + var dropEffect = aDOMEvent.dataTransfer.dropEffect; + if (dropEffect === "move") + dragOperation = CPDragOperationMove; + else if (dropEffect === "copy") + dragOperation = CPDragOperationCopy; + else if (dropEffect === "link") + dragOperation = CPDragOperationLink; + else + dragOperation = CPDragOperationNone; + objj_msgSend(dragServer, "draggingEndedInPlatformWindow:globalLocation:operation:", self, objj_msgSend(CPPlatform, "isBrowser") ? location : { x:aDOMEvent.screenX, y:aDOMEvent.screenY }, dragOperation); + } + else + { + objj_msgSend(dragServer, "performDragOperationInPlatformWindow:", self); + if (aDOMEvent.preventDefault) + aDOMEvent.preventDefault(); + if (aDOMEvent.stopPropagation) + aDOMEvent.stopPropagation(); + } + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("keyEvent:"), function $CPPlatformWindow__keyEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + var event, + timestamp = aDOMEvent.timeStamp || new Date(), + sourceElement = aDOMEvent.target || aDOMEvent.srcElement, + windowNumber = objj_msgSend(objj_msgSend(CPApp, "keyWindow"), "windowNumber"), + modifierFlags = (aDOMEvent.shiftKey ? CPShiftKeyMask : 0) | + (aDOMEvent.ctrlKey ? CPControlKeyMask : 0) | + (aDOMEvent.altKey ? CPAlternateKeyMask : 0) | + (aDOMEvent.metaKey ? CPCommandKeyMask : 0); + StopDOMEventPropagation = YES; + if (!(CharacterKeysToPrevent[String.fromCharCode(aDOMEvent.keyCode || aDOMEvent.charCode).toLowerCase()] || KeyCodesToPrevent[aDOMEvent.keyCode])) + { + if ((modifierFlags & (CPControlKeyMask | CPCommandKeyMask)) || KeyCodesToAllow[aDOMEvent.keyCode]) + StopDOMEventPropagation = NO; + } + var isNativePasteEvent = NO, + isNativeCopyOrCutEvent = NO, + overrideCharacters = nil; + switch (aDOMEvent.type) + { + case "keydown": + if (aDOMEvent.keyCode in MozKeyCodeToKeyCodeMap) + _keyCode = MozKeyCodeToKeyCodeMap[aDOMEvent.keyCode]; + else + _keyCode = aDOMEvent.keyCode; + var characters; + if (aDOMEvent.which === 0 || aDOMEvent.charCode === 0) + characters = KeyCodesToUnicodeMap[_keyCode]; + if (!characters) + characters = String.fromCharCode(_keyCode).toLowerCase(); + overrideCharacters = (modifierFlags & CPShiftKeyMask || _capsLockActive) ? characters.toUpperCase() : characters; + if (_keyCode === CPKeyCodes.CAPS_LOCK) + _capsLockActive = YES; + if (objj_msgSend(ModifierKeyCodes, "containsObject:", _keyCode)) + { + event = objj_msgSend(CPEvent, "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", CPFlagsChanged, location, modifierFlags, timestamp, windowNumber, nil, nil, nil, NO, _keyCode); + break; + } + else if (modifierFlags & (CPControlKeyMask | CPCommandKeyMask)) + { + var eligibleForCopyPaste = objj_msgSend(self, "_validateCopyCutOrPasteEvent:flags:", aDOMEvent, modifierFlags); + if (characters === "v" && eligibleForCopyPaste) + { + if (!_ignoreNativePastePreparation) + { + _DOMPasteboardElement.select(); + _DOMPasteboardElement.value = ""; + } + isNativePasteEvent = YES; + } + else if ((characters == "c" || characters == "x") && eligibleForCopyPaste) + { + isNativeCopyOrCutEvent = YES; + if (_ignoreNativeCopyOrCutEvent) + break; + } + } + else if (CPKeyCodes.firesKeyPressEvent(_keyCode, _lastKey, aDOMEvent.shiftKey, aDOMEvent.ctrlKey, aDOMEvent.altKey)) + { + StopDOMEventPropagation = NO; + break; + } + else + { + } + case "keypress": + if (aDOMEvent.type === "keypress" && (modifierFlags & (CPControlKeyMask | CPCommandKeyMask))) + break; + var keyCode = _keyCode, + charCode = aDOMEvent.keyCode || aDOMEvent.charCode, + isARepeat = (_charCodes[keyCode] != nil); + _lastKey = keyCode; + _charCodes[keyCode] = charCode; + var characters = overrideCharacters; + if (!characters && (aDOMEvent.which === 0 || aDOMEvent.charCode === 0)) + characters = KeyCodesToUnicodeMap[charCode]; + if (!characters) + characters = String.fromCharCode(charCode); + charactersIgnoringModifiers = characters.toLowerCase(); + if (!overrideCharacters && (modifierFlags & CPCommandKeyMask) && ((modifierFlags & CPShiftKeyMask) || _capsLockActive)) + characters = characters.toUpperCase(); + event = objj_msgSend(CPEvent, "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", CPKeyDown, location, modifierFlags, timestamp, windowNumber, nil, characters, charactersIgnoringModifiers, isARepeat, charCode); + if (isNativePasteEvent) + { + _pasteboardKeyDownEvent = event; + window.setNativeTimeout(function () { objj_msgSend(self, "_checkPasteboardElement") }, 0); + } + break; + case "keyup": var keyCode = aDOMEvent.keyCode, + charCode = _charCodes[keyCode]; + _keyCode = -1; + _lastKey = -1; + _charCodes[keyCode] = nil; + _ignoreNativeCopyOrCutEvent = NO; + _ignoreNativePastePreparation = NO; + if (keyCode === CPKeyCodes.CAPS_LOCK) + _capsLockActive = NO; + if (objj_msgSend(ModifierKeyCodes, "containsObject:", keyCode)) + break; + var characters = KeyCodesToUnicodeMap[charCode] || String.fromCharCode(charCode), + charactersIgnoringModifiers = characters.toLowerCase(); + if (!(modifierFlags & CPShiftKeyMask) && (modifierFlags & CPCommandKeyMask) && !_capsLockActive) + characters = charactersIgnoringModifiers; + event = objj_msgSend(CPEvent, "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", CPKeyUp, location, modifierFlags, timestamp, windowNumber, nil, characters, charactersIgnoringModifiers, NO, keyCode); + break; + } + if (event && !isNativePasteEvent) + { + event._DOMEvent = aDOMEvent; + objj_msgSend(CPApp, "sendEvent:", event); + if (isNativeCopyOrCutEvent) + { + objj_msgSend(self, "_primePasteboardElement"); + } + } + if (StopDOMEventPropagation) + CPDOMEventStop(aDOMEvent, self); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("copyEvent:"), function $CPPlatformWindow__copyEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (objj_msgSend(self, "_validateCopyCutOrPasteEvent:flags:", aDOMEvent, CPPlatformActionKeyMask) && !_ignoreNativeCopyOrCutEvent) + { + var cut = aDOMEvent.type === "beforecut", + keyCode = cut ? CPKeyCodes.X : CPKeyCodes.C, + characters = cut ? "x" : "c", + timestamp = aDOMEvent.timeStamp ? aDOMEvent.timeStamp : new Date(), + windowNumber = objj_msgSend(objj_msgSend(CPApp, "keyWindow"), "windowNumber"), + modifierFlags = CPPlatformActionKeyMask; + event = objj_msgSend(CPEvent, "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", CPKeyDown, location, modifierFlags, timestamp, windowNumber, nil, characters, characters, NO, keyCode); + event._DOMEvent = aDOMEvent; + objj_msgSend(CPApp, "sendEvent:", event); + objj_msgSend(self, "_primePasteboardElement"); + _ignoreNativeCopyOrCutEvent = YES; + } + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("pasteEvent:"), function $CPPlatformWindow__pasteEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (objj_msgSend(self, "_validateCopyCutOrPasteEvent:flags:", aDOMEvent, CPPlatformActionKeyMask)) + { + _DOMPasteboardElement.focus(); + _DOMPasteboardElement.select(); + _DOMPasteboardElement.value = ""; + _ignoreNativePastePreparation = YES; + } + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("_validateCopyCutOrPasteEvent:flags:"), function $CPPlatformWindow___validateCopyCutOrPasteEvent_flags_(self, _cmd, aDOMEvent, modifierFlags) +{ with(self) +{ + return ( + ((aDOMEvent.target || aDOMEvent.srcElement).nodeName.toUpperCase() !== "INPUT" && + (aDOMEvent.target || aDOMEvent.srcElement).nodeName.toUpperCase() !== "TEXTAREA" + ) || aDOMEvent.target === _DOMPasteboardElement + ) && + (modifierFlags & CPPlatformActionKeyMask); +} +},["void","DOMEvent","unsigned"]), new objj_method(sel_getUid("_primePasteboardElement"), function $CPPlatformWindow___primePasteboardElement(self, _cmd) +{ with(self) +{ + var pasteboard = objj_msgSend(CPPasteboard, "generalPasteboard"), + types = objj_msgSend(pasteboard, "types"); + if (types.length) + { + if (objj_msgSend(types, "indexOfObjectIdenticalTo:", CPStringPboardType) != CPNotFound) + _DOMPasteboardElement.value = objj_msgSend(pasteboard, "stringForType:", CPStringPboardType); + else + _DOMPasteboardElement.value = objj_msgSend(pasteboard, "_generateStateUID"); + _DOMPasteboardElement.focus(); + _DOMPasteboardElement.select(); + window.setNativeTimeout(function() { objj_msgSend(self, "_clearPasteboardElement"); }, 0); + } +} +},["void"]), new objj_method(sel_getUid("_checkPasteboardElement"), function $CPPlatformWindow___checkPasteboardElement(self, _cmd) +{ with(self) +{ + var value = _DOMPasteboardElement.value; + if (objj_msgSend(value, "length")) + { + var pasteboard = objj_msgSend(CPPasteboard, "generalPasteboard"); + if (objj_msgSend(pasteboard, "_stateUID") != value) + { + objj_msgSend(pasteboard, "declareTypes:owner:", [CPStringPboardType], self); + objj_msgSend(pasteboard, "setString:forType:", value, CPStringPboardType); + } + } + objj_msgSend(self, "_clearPasteboardElement"); + objj_msgSend(CPApp, "sendEvent:", _pasteboardKeyDownEvent); + _pasteboardKeyDownEvent = nil; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void"]), new objj_method(sel_getUid("_clearPasteboardElement"), function $CPPlatformWindow___clearPasteboardElement(self, _cmd) +{ with(self) +{ + _DOMPasteboardElement.value = ""; + _DOMPasteboardElement.blur(); +} +},["void"]), new objj_method(sel_getUid("scrollEvent:"), function $CPPlatformWindow__scrollEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (_hideDOMScrollingElementTimeout) + { + clearTimeout(_hideDOMScrollingElementTimeout); + _hideDOMScrollingElementTimeout = nil; + } + if (!aDOMEvent) + aDOMEvent = window.event; + var location = nil; + if (CPFeatureIsCompatible(CPJavaScriptMouseWheelValues_8_15)) + { + var x = aDOMEvent._offsetX || 0.0, + y = aDOMEvent._offsetY || 0.0, + element = aDOMEvent.target; + while (element.nodeType !== 1) + element = element.parentNode; + if (element.offsetParent) + { + do + { + x += element.offsetLeft; + y += element.offsetTop; + } while (element = element.offsetParent); + } + location = { x:(x + ((aDOMEvent.clientX - 8) / 15)), y:(y + ((aDOMEvent.clientY - 8) / 15)) }; + } + else if (aDOMEvent._overrideLocation) + location = aDOMEvent._overrideLocation; + else + location = { x:aDOMEvent.clientX, y:aDOMEvent.clientY }; + var deltaX = 0.0, + deltaY = 0.0, + windowNumber = 0, + timestamp = aDOMEvent.timeStamp ? aDOMEvent.timeStamp : new Date(), + modifierFlags = (aDOMEvent.shiftKey ? CPShiftKeyMask : 0) | + (aDOMEvent.ctrlKey ? CPControlKeyMask : 0) | + (aDOMEvent.altKey ? CPAlternateKeyMask : 0) | + (aDOMEvent.metaKey ? CPCommandKeyMask : 0); + _DOMScrollingElement.style.visibility = "visible"; + _DOMScrollingElement.style.top = (location.y - 15) + "px"; + _DOMScrollingElement.style.left = (location.x - 15) + "px"; + StopDOMEventPropagation = NO; + var theWindow = objj_msgSend(self, "hitTest:", location); + if (!theWindow) + return; + var windowNumber = objj_msgSend(theWindow, "windowNumber"); + location = objj_msgSend(theWindow, "convertBridgeToBase:", location); + var event = objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", CPScrollWheel, location, modifierFlags, timestamp, windowNumber, nil, -1, 1, 0); + event._DOMEvent = aDOMEvent; + setTimeout(function() + { + var deltaX = _DOMScrollingElement.scrollLeft - 150, + deltaY = _DOMScrollingElement.scrollTop - 150; + if (deltaX || deltaY) + { + event._deltaX = deltaX; + event._deltaY = deltaY; + objj_msgSend(CPApp, "sendEvent:", event); + } + _DOMScrollingElement.scrollLeft = 150; + _DOMScrollingElement.scrollTop = 150; + }, 0); + _hideDOMScrollingElementTimeout = setTimeout(function() + { + _DOMScrollingElement.style.visibility = "hidden"; + }, 300); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("resizeEvent:"), function $CPPlatformWindow__resizeEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(CPApp._activeMenu, "cancelTracking"); + var oldSize = objj_msgSend(self, "contentRect").size; + objj_msgSend(self, "updateFromNativeContentRect"); + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length; + while (levelCount--) + { + var windows = objj_msgSend(layers, "objectForKey:", levels[levelCount])._windows, + windowCount = windows.length; + while (windowCount--) + objj_msgSend(windows[windowCount], "resizeWithOldPlatformWindowSize:", oldSize); + } + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("touchEvent:"), function $CPPlatformWindow__touchEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (aDOMEvent.touches && (aDOMEvent.touches.length == 1 || (aDOMEvent.touches.length == 0 && aDOMEvent.changedTouches.length == 1))) + { + var newEvent = {}; + switch(aDOMEvent.type) + { + case CPDOMEventTouchStart: newEvent.type = CPDOMEventMouseDown; + break; + case CPDOMEventTouchEnd: newEvent.type = CPDOMEventMouseUp; + break; + case CPDOMEventTouchMove: newEvent.type = CPDOMEventMouseMoved; + break; + case CPDOMEventTouchCancel: newEvent.type = CPDOMEventMouseUp; + break; + } + var touch = aDOMEvent.touches.length ? aDOMEvent.touches[0] : aDOMEvent.changedTouches[0]; + newEvent.clientX = touch.clientX; + newEvent.clientY = touch.clientY; + newEvent.timestamp = aDOMEvent.timestamp; + newEvent.target = aDOMEvent.target; + newEvent.shiftKey = newEvent.ctrlKey = newEvent.altKey = newEvent.metaKey = false; + newEvent.preventDefault = function() { if (aDOMEvent.preventDefault) aDOMEvent.preventDefault() }; + newEvent.stopPropagation = function() { if (aDOMEvent.stopPropagation) aDOMEvent.stopPropagation() }; + objj_msgSend(self, "mouseEvent:", newEvent); + return; + } + else + { + if (aDOMEvent.preventDefault) + aDOMEvent.preventDefault(); + if (aDOMEvent.stopPropagation) + aDOMEvent.stopPropagation(); + } +} +},["void","DOMEvent"]), new objj_method(sel_getUid("mouseEvent:"), function $CPPlatformWindow__mouseEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + var type = _overriddenEventType || aDOMEvent.type; + if (type === "dblclick") + { + _overriddenEventType = CPDOMEventMouseDown; + objj_msgSend(self, "mouseEvent:", aDOMEvent); + _overriddenEventType = CPDOMEventMouseUp; + objj_msgSend(self, "mouseEvent:", aDOMEvent); + _overriddenEventType = nil; + return; + } + var event, + location = { x:aDOMEvent.clientX, y:aDOMEvent.clientY }, + timestamp = aDOMEvent.timeStamp ? aDOMEvent.timeStamp : new Date(), + sourceElement = (aDOMEvent.target || aDOMEvent.srcElement), + windowNumber = 0, + modifierFlags = (aDOMEvent.shiftKey ? CPShiftKeyMask : 0) | + (aDOMEvent.ctrlKey ? CPControlKeyMask : 0) | + (aDOMEvent.altKey ? CPAlternateKeyMask : 0) | + (aDOMEvent.metaKey ? CPCommandKeyMask : 0); + StopDOMEventPropagation = YES; + if (_mouseDownWindow) + windowNumber = objj_msgSend(_mouseDownWindow, "windowNumber"); + else + { + var theWindow = objj_msgSend(self, "hitTest:", location); + if ((aDOMEvent.type === CPDOMEventMouseDown) && theWindow) + _mouseDownWindow = theWindow; + windowNumber = objj_msgSend(theWindow, "windowNumber"); + } + if (windowNumber) + location = objj_msgSend(CPApp._windows[windowNumber], "convertPlatformWindowToBase:", location); + if (type === "mouseup") + { + if (_mouseIsDown) + { + event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseDownIsRightClick ? CPRightMouseUp : CPLeftMouseUp, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseUp, timestamp, location), 0); + _mouseIsDown = NO; + _lastMouseUp = event; + _mouseDownWindow = nil; + _mouseDownIsRightClick = NO; + } + if (_DOMEventMode) + { + _DOMEventMode = NO; + return; + } + } + else if (type === "mousedown") + { + var button = aDOMEvent.button; + _mouseDownIsRightClick = button == 2 || (CPBrowserIsOperatingSystem(CPMacOperatingSystem) && button == 0 && modifierFlags & CPControlKeyMask); + if (sourceElement.tagName === "INPUT" && sourceElement != _DOMFocusElement) + { + if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + _DOMBodyElement.setAttribute("draggable", "false"); + _DOMBodyElement.style["-khtml-user-drag"] = "none"; + } + _DOMEventMode = YES; + _mouseIsDown = YES; + objj_msgSend(CPApp, "sendEvent:", objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", _mouseDownIsRightClick ? CPRightMouseDown : CPLeftMouseDown, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseDown, timestamp, location), 0)); + objj_msgSend(CPApp, "sendEvent:", objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", _mouseDownIsRightClick ? CPRightMouseUp : CPLeftMouseUp, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseDown, timestamp, location), 0)); + return; + } + else if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + _DOMBodyElement.setAttribute("draggable", "true"); + _DOMBodyElement.style["-khtml-user-drag"] = "element"; + } + StopContextMenuDOMEventPropagation = YES; + event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseDownIsRightClick ? CPRightMouseDown : CPLeftMouseDown, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseDown, timestamp, location), 0); + _mouseIsDown = YES; + _lastMouseDown = event; + } + else + { + if (_DOMEventMode) + return; + event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseIsDown ? (_mouseDownIsRightClick ? CPRightMouseDragged : CPLeftMouseDragged) : CPMouseMoved, location, modifierFlags, timestamp, windowNumber, nil, -1, 1, 0); + } + var isDragging = objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "isDragging"); + if (event && (!isDragging || !supportsNativeDragAndDrop)) + { + event._DOMEvent = aDOMEvent; + objj_msgSend(CPApp, "sendEvent:", event); + } + if (StopDOMEventPropagation && (!supportsNativeDragAndDrop || type !== "mousedown" && !isDragging)) + CPDOMEventStop(aDOMEvent, self); + var hasTrackingEventListener = NO; + for (var i=0; i < CPApp._eventListeners.length; i++) + { + if (CPApp._eventListeners[i]._callback !== _CPRunModalLoop) + { + hasTrackingEventListener = YES; + break; + } + } + _DOMEventGuard.style.display = hasTrackingEventListener ? "" : "none"; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("contextMenuEvent:"), function $CPPlatformWindow__contextMenuEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (StopContextMenuDOMEventPropagation) + CPDOMEventStop(aDOMEvent, self); + return !StopContextMenuDOMEventPropagation; +} +},["void","DOMEvent"]), new objj_method(sel_getUid("orderedWindowsAtLevel:"), function $CPPlatformWindow__orderedWindowsAtLevel_(self, _cmd, aLevel) +{ with(self) +{ + var layer = objj_msgSend(self, "layerAtLevel:create:", aLevel, NO); + if (!layer) + return []; + return objj_msgSend(layer, "orderedWindows"); +} +},["CPArray","int"]), new objj_method(sel_getUid("layerAtLevel:create:"), function $CPPlatformWindow__layerAtLevel_create_(self, _cmd, aLevel, aFlag) +{ with(self) +{ + var layer = objj_msgSend(_windowLayers, "objectForKey:", aLevel); + if (!layer && aFlag) + { + layer = objj_msgSend(objj_msgSend(CPDOMWindowLayer, "alloc"), "initWithLevel:", aLevel); + objj_msgSend(_windowLayers, "setObject:forKey:", layer, aLevel); + var low = 0, + high = _windowLevels.length - 1, + middle; + while (low <= high) + { + middle = FLOOR((low + high) / 2); + if (_windowLevels[middle] > aLevel) + high = middle - 1; + else + low = middle + 1; + } + var insertionIndex = 0; + if (middle !== undefined) + insertionIndex = _windowLevels[middle] > aLevel ? middle : middle + 1 + objj_msgSend(_windowLevels, "insertObject:atIndex:", aLevel, insertionIndex); + layer._DOMElement.style.zIndex = aLevel; + _DOMBodyElement.appendChild(layer._DOMElement); + } + return layer; +} +},["CPDOMWindowLayer","int","BOOL"]), new objj_method(sel_getUid("order:window:relativeTo:"), function $CPPlatformWindow__order_window_relativeTo_(self, _cmd, aPlace, aWindow, otherWindow) +{ with(self) +{ + objj_msgSend(CPPlatform, "initializeScreenIfNecessary"); + var layer = objj_msgSend(self, "layerAtLevel:create:", objj_msgSend(aWindow, "level"), aPlace !== CPWindowOut); + if (aPlace === CPWindowOut) + return objj_msgSend(layer, "removeWindow:", aWindow); + var insertionIndex = CPNotFound; + if (otherWindow) + insertionIndex = aPlace === CPWindowAbove ? otherWindow._index + 1 : otherWindow._index; + objj_msgSend(layer, "insertWindow:atIndex:", aWindow, insertionIndex); +} +},["void","CPWindowOrderingMode","CPWindow","CPWindow"]), new objj_method(sel_getUid("_removeLayers"), function $CPPlatformWindow___removeLayers(self, _cmd) +{ with(self) +{ + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length; + while (levelCount--) + { + var layer = objj_msgSend(layers, "objectForKey:", levels[levelCount]); + _DOMBodyElement.removeChild(layer._DOMElement); + } +} +},["void"]), new objj_method(sel_getUid("_addLayers"), function $CPPlatformWindow___addLayers(self, _cmd) +{ with(self) +{ + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length; + while (levelCount--) + { + var layer = objj_msgSend(layers, "objectForKey:", levels[levelCount]); + _DOMBodyElement.appendChild(layer._DOMElement); + } +} +},["void"]), new objj_method(sel_getUid("_dragHitTest:pasteboard:"), function $CPPlatformWindow___dragHitTest_pasteboard_(self, _cmd, aPoint, aPasteboard) +{ with(self) +{ + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length; + while (levelCount--) + { + if (levels[levelCount] >= CPDraggingWindowLevel) + continue; + var windows = objj_msgSend(layers, "objectForKey:", levels[levelCount])._windows, + windowCount = windows.length; + while (windowCount--) + { + var theWindow = windows[windowCount]; + if (objj_msgSend(theWindow, "_sharesChromeWithPlatformWindow")) + return objj_msgSend(theWindow, "_dragHitTest:pasteboard:", aPoint, aPasteboard); + if (objj_msgSend(theWindow, "containsPoint:", aPoint)) + return objj_msgSend(theWindow, "_dragHitTest:pasteboard:", aPoint, aPasteboard); + } + } + return nil; +} +},["id","CPPoint","CPPasteboard"]), new objj_method(sel_getUid("_propagateCurrentDOMEvent:"), function $CPPlatformWindow___propagateCurrentDOMEvent_(self, _cmd, aFlag) +{ with(self) +{ + StopDOMEventPropagation = !aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("_willPropagateCurrentDOMEvent"), function $CPPlatformWindow___willPropagateCurrentDOMEvent(self, _cmd) +{ with(self) +{ + return !StopDOMEventPropagation; +} +},["BOOL"]), new objj_method(sel_getUid("_propagateContextMenuDOMEvent:"), function $CPPlatformWindow___propagateContextMenuDOMEvent_(self, _cmd, aFlag) +{ with(self) +{ + if (aFlag && CPBrowserIsEngine(CPGeckoBrowserEngine)) + StopDOMEventPropagation = !aFlag; + StopContextMenuDOMEventPropagation = !aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("_willPropagateContextMenuDOMEvent"), function $CPPlatformWindow___willPropagateContextMenuDOMEvent(self, _cmd) +{ with(self) +{ + return StopContextMenuDOMEventPropagation; +} +},["BOOL"]), new objj_method(sel_getUid("hitTest:"), function $CPPlatformWindow__hitTest_(self, _cmd, location) +{ with(self) +{ + if (self._only) + return self._only; + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length, + theWindow = nil; + while (levelCount-- && !theWindow) + { + var windows = objj_msgSend(layers, "objectForKey:", levels[levelCount])._windows, + windowCount = windows.length; + while (windowCount-- && !theWindow) + { + var candidateWindow = windows[windowCount]; + if (!candidateWindow._ignoresMouseEvents && objj_msgSend(candidateWindow, "containsPoint:", location)) + theWindow = candidateWindow; + } + } + return theWindow; +} +},["CPWindow","CPPoint"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("visiblePlatformWindows"), function $CPPlatformWindow__visiblePlatformWindows(self, _cmd) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "isVisible")) + { + var set = objj_msgSend(CPSet, "setWithSet:", PlatformWindows); + objj_msgSend(set, "addObject:", objj_msgSend(CPPlatformWindow, "primaryPlatformWindow")); + return set; + } + else + return PlatformWindows; +} +},["CPSet"]), new objj_method(sel_getUid("preventCharacterKeysFromPropagating:"), function $CPPlatformWindow__preventCharacterKeysFromPropagating_(self, _cmd, characters) +{ with(self) +{ + for (var i = characters.length; i > 0; i--) + CharacterKeysToPrevent[""+characters[i-1].toLowerCase()] = YES; +} +},["void","CPArray"]), new objj_method(sel_getUid("preventCharacterKeyFromPropagating:"), function $CPPlatformWindow__preventCharacterKeyFromPropagating_(self, _cmd, character) +{ with(self) +{ + CharacterKeysToPrevent[character.toLowerCase()] = YES; +} +},["void","CPString"]), new objj_method(sel_getUid("clearCharacterKeysToPreventFromPropagating"), function $CPPlatformWindow__clearCharacterKeysToPreventFromPropagating(self, _cmd) +{ with(self) +{ + CharacterKeysToPrevent = {}; +} +},["void"]), new objj_method(sel_getUid("preventKeyCodesFromPropagating:"), function $CPPlatformWindow__preventKeyCodesFromPropagating_(self, _cmd, keyCodes) +{ with(self) +{ + for (var i = keyCodes.length; i > 0; i--) + KeyCodesToPrevent[keyCodes[i-1]] = YES; +} +},["void","CPArray"]), new objj_method(sel_getUid("preventKeyCodeFromPropagating:"), function $CPPlatformWindow__preventKeyCodeFromPropagating_(self, _cmd, keyCode) +{ with(self) +{ + KeyCodesToPrevent[keyCode] = YES; +} +},["void","CPString"]), new objj_method(sel_getUid("clearKeyCodesToPreventFromPropagating"), function $CPPlatformWindow__clearKeyCodesToPreventFromPropagating(self, _cmd) +{ with(self) +{ + KeyCodesToPrevent = {}; +} +},["void"])]); +} +var CPEventClass = objj_msgSend(CPEvent, "class"); +var _CPEventFromNativeMouseEvent = function(aNativeEvent, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure) +{ + aNativeEvent.isa = CPEventClass; + aNativeEvent._type = anEventType; + aNativeEvent._location = aPoint; + aNativeEvent._modifierFlags = modifierFlags; + aNativeEvent._timestamp = aTimestamp; + aNativeEvent._windowNumber = aWindowNumber; + aNativeEvent._window = nil; + aNativeEvent._context = aGraphicsContext; + aNativeEvent._eventNumber = anEventNumber; + aNativeEvent._clickCount = aClickCount; + aNativeEvent._pressure = aPressure; + return aNativeEvent; +} +var CLICK_SPACE_DELTA = 5.0, + CLICK_TIME_DELTA = (typeof document != "undefined" && document.addEventListener) ? 350.0 : 1000.0; +var CPDOMEventGetClickCount = function(aComparisonEvent, aTimestamp, aLocation) +{ + if (!aComparisonEvent) + return 1; + var comparisonLocation = objj_msgSend(aComparisonEvent, "locationInWindow"); + return (aTimestamp - objj_msgSend(aComparisonEvent, "timestamp") < CLICK_TIME_DELTA && + ABS(comparisonLocation.x - aLocation.x) < CLICK_SPACE_DELTA && + ABS(comparisonLocation.y - aLocation.y) < CLICK_SPACE_DELTA) ? objj_msgSend(aComparisonEvent, "clickCount") + 1 : 1; +} +var CPDOMEventStop = function(aDOMEvent, aPlatformWindow) +{ + aDOMEvent.cancelBubble = true; + aDOMEvent.returnValue = false; + if (aDOMEvent.preventDefault) + aDOMEvent.preventDefault(); + if (aDOMEvent.stopPropagation) + aDOMEvent.stopPropagation(); + if (aDOMEvent.type === CPDOMEventMouseDown) + { + aPlatformWindow._DOMFocusElement.focus(); + aPlatformWindow._DOMFocusElement.blur(); + } +} +CPWindowObjectList= function() +{ + var platformWindows = objj_msgSend(CPPlatformWindow, "visiblePlatformWindows"), + platformWindowEnumerator = objj_msgSend(platformWindows, "objectEnumerator"), + platformWindow = nil, + windowObjects = []; + while (platformWindow = objj_msgSend(platformWindowEnumerator, "nextObject")) + { + var levels = platformWindow._windowLevels, + layers = platformWindow._windowLayers, + levelCount = levels.length; + while (levelCount--) + { + var windows = objj_msgSend(layers, "objectForKey:", levels[levelCount])._windows, + windowCount = windows.length; + while (windowCount--) + windowObjects.push(windows[windowCount]); + } + } + return windowObjects; +} +CPWindowList= function() +{ + var windowObjectList = CPWindowObjectList(), + windowList = []; + for (var i = 0, count = objj_msgSend(windowObjectList, "count"); i < count; i++) + windowList.push(objj_msgSend(windowObjectList[i], "windowNumber")); + return windowList; +} + +p;26;CPPlatformWindow+DOMKeys.jt;3269;@STATIC;1.0;t;3250;CPKeyCodes = { + BACKSPACE: 8, + TAB: 9, + NUM_CENTER: 12, + ENTER: 13, + SHIFT: 16, + CTRL: 17, + ALT: 18, + PAUSE: 19, + CAPS_LOCK: 20, + ESC: 27, + SPACE: 32, + PAGE_UP: 33, + PAGE_DOWN: 34, + END: 35, + HOME: 36, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + PRINT_SCREEN: 44, + INSERT: 45, + DELETE: 46, + ZERO: 48, + ONE: 49, + TWO: 50, + THREE: 51, + FOUR: 52, + FIVE: 53, + SIX: 54, + SEVEN: 55, + EIGHT: 56, + NINE: 57, + QUESTION_MARK: 63, + A: 65, + B: 66, + C: 67, + D: 68, + E: 69, + F: 70, + G: 71, + H: 72, + I: 73, + J: 74, + K: 75, + L: 76, + M: 77, + N: 78, + O: 79, + P: 80, + Q: 81, + R: 82, + S: 83, + T: 84, + U: 85, + V: 86, + W: 87, + X: 88, + Y: 89, + Z: 90, + META: 91, + CONTEXT_MENU: 93, + NUM_ZERO: 96, + NUM_ONE: 97, + NUM_TWO: 98, + NUM_THREE: 99, + NUM_FOUR: 100, + NUM_FIVE: 101, + NUM_SIX: 102, + NUM_SEVEN: 103, + NUM_EIGHT: 104, + NUM_NINE: 105, + NUM_MULTIPLY: 106, + NUM_PLUS: 107, + NUM_MINUS: 109, + NUM_PERIOD: 110, + NUM_DIVISION: 111, + F1: 112, + F2: 113, + F3: 114, + F4: 115, + F5: 116, + F6: 117, + F7: 118, + F8: 119, + F9: 120, + F10: 121, + F11: 122, + F12: 123, + NUMLOCK: 144, + SEMICOLON: 186, + DASH: 189, + EQUALS: 187, + COMMA: 188, + PERIOD: 190, + SLASH: 191, + APOSTROPHE: 192, + SINGLE_QUOTE: 222, + OPEN_SQUARE_BRACKET: 219, + BACKSLASH: 220, + CLOSE_SQUARE_BRACKET: 221, + WIN_KEY: 224, + MAC_FF_META: 224, + WIN_IME: 229 +}; +CPKeyCodes.firesKeyPressEvent = function(keyCode, opt_heldKeyCode, opt_shiftKey, opt_ctrlKey, opt_altKey) +{ + if (!CPFeatureIsCompatible(CPJavascriptRemedialKeySupport)) + return true; + if (CPBrowserIsOperatingSystem(CPMacOperatingSystem) && opt_altKey) + return CPKeyCodes.isCharacterKey(keyCode); + if (opt_altKey && !opt_ctrlKey) + return false; + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine) && !opt_shiftKey && (opt_ctrlKey || opt_altKey)) + return false; + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine) && opt_ctrlKey && opt_heldKeyCode == keyCode) + return false; + switch (keyCode) + { + case CPKeyCodes.ENTER: return true; + case CPKeyCodes.ESC: return !CPBrowserIsEngine(CPWebKitBrowserEngine); + } + return CPKeyCodes.isCharacterKey(keyCode); +}; +CPKeyCodes.isCharacterKey = function(keyCode) +{ + if (keyCode >= CPKeyCodes.ZERO && keyCode <= CPKeyCodes.NINE) + return true; + if (keyCode >= CPKeyCodes.NUM_ZERO && keyCode <= CPKeyCodes.NUM_MULTIPLY) + return true; + if (keyCode >= CPKeyCodes.A && keyCode <= CPKeyCodes.Z) + return true; + switch (keyCode) + { + case CPKeyCodes.SPACE: + case CPKeyCodes.QUESTION_MARK: + case CPKeyCodes.NUM_PLUS: + case CPKeyCodes.NUM_MINUS: + case CPKeyCodes.NUM_PERIOD: + case CPKeyCodes.NUM_DIVISION: + case CPKeyCodes.SEMICOLON: + case CPKeyCodes.DASH: + case CPKeyCodes.EQUALS: + case CPKeyCodes.COMMA: + case CPKeyCodes.PERIOD: + case CPKeyCodes.SLASH: + case CPKeyCodes.APOSTROPHE: + case CPKeyCodes.SINGLE_QUOTE: + case CPKeyCodes.OPEN_SQUARE_BRACKET: + case CPKeyCodes.BACKSLASH: + case CPKeyCodes.CLOSE_SQUARE_BRACKET: + return true; + default: + return false; + } +} + +e; ADDED Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLData.txt Index: Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLData.txt ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLData.txt +++ Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLData.txt @@ -0,0 +1,679 @@ +/* +Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR" + +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAIAAAAvP0KbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUeNpiunnvEdO7j5+Z/v//j4H/IbP/geh/EDEY+x+Sun//UNSj62f4z8B099YNgAADAA9PUNwzG//eAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAIAAAAvP0KbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADlJREFUeNpimL9qE9Pdh0+Y/v//D8T/mP79Q6chbBD9/x+MjwX/R7D/g9T/h9BgM/5D9BtqqgIEGAC2zE/UgDMaqgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAIAAADAusJtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCB1j2LNnD8P///8Zvnz5AsIAU6oK6qmqG6cAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAIAAAB2XpiaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1j2LNnzxcYAABDLQrJ2KbR7QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1j+PLlCwAFvALdifOWJQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAIAAAB2XpiaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1j+AIDe/bsAQBJFQrJwsQiEQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindow7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAIAAADAusJtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUCB1j+PLlCwMM79mzBwBaQArJvXzTegAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACYAAAASCAYAAAA31qwVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHpJREFUSMdj+P//P8NgxIPSUaMOG9kOi4+Px4WFoRhDbqAdtgSKB5XD8oH4PxTnDRaHOQDxHySH/YaKDajD5IH4KZKjYPgpVG5AHMYOxMexOAqGj0PV0N1hM/A4Coan0tthBUQ4CoYL6OUwJjxFBsOAFRejVdKow0jEAMbSS1vJwWj5AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACYAAAASCAYAAAA31qwVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH9JREFUSMdj+P//P8NgxAyjDht12KjDaIjj4+OZ6OIwoEUFQPyfSAxSy0Avh4HwVCIcNQOqlq4OYwfi43gcdRyqhu4OA2F5IH6KxVFPoXIMA+UwEHYA4t9IjvoDFWMYaIeBcB6Sw/KxyA+Yw0B4CRQzDDaHCUPxwDlstEoajBgAIvph233GDmUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUCB0FwbENgDAQwMCvmByJpbxIeipqR0pn7ga4gBt4gQZ41lqdc6oa4FPbe6c2QGpqaj/TuDbcxUWSYgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUCB0FwbENgDAQwMCvmByJpbxIeipqR0pn7gYIeIEbuKbqnNNaK+AZtb13asA3ampqQD8COzbceGNz5AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUCFtj2LNnz/8vX77AMQNQ4NX79+9RBNqvXLnyHyYIUsEGxL1A/BykHQCHWDaL8tTDxAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPMenuWindow/_CPMenuWindowRounded8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUCFtj+PLly38Y3rNnz38GGOf9+/cggVcMMM6VK1dAAl0MIGVA/ByIe4GYDQC0XjaO10uChwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPToolbarView/_CPToolbarViewBackground.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAA7CAIAAAA1lncVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUCB0FwQEBwEAMhDAO/1Je1YSUJX7fJyHDSkDKQMArBwZyJ5uVkWN254EDIQvvkiVhJWFDyuscs7KSsJJlYSXDLgErIwkJj6QErISEeZcOKwMBASMJ33s/zDJY0JkKjKMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAoAAAAPCAYAAADd/14OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUVJREFUKJFj0NDQWKGmpib1//9/BnyYwczM7L+RkdEuoAYdvApdXFz+u7q6/jc1NT2vqanphlOht7f3/+Dg4P8eHh7/LSwsnmhrayeoqqqyYCj08vI6FhER8T8kJOQ/kP3f2tr6k66ubhPQ3XwoCp2cnLiAJoIVh4WF/ff19f1vZ2f3V19ff7a6uroSXCGIALqTE6j4MEhxeHj4/4CAgP9AA/4bGxvvBrrbEegUQbjRQA/xABU/j4yM/A/SEBQUBPYkMFS2amlp2cAVWllZ9fr7+4MVwRQD+Wft7e1DgM6QASvS09PrdXR0BJsCUwQ0fZu7u7se3I0gRQ4ODmB3gRQA8a/AwMDpQHdLovja1tYWrAjkCSD+BLSuAmg6J0Y4enp6ghUBg+YeMGiigBqZccYMMLDPAQPbBm9cu7m57QE6Gm+CAGEA/dNCZSU2Z+AAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAoAAAAPCAYAAADd/14OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU1JREFUKM9jsLS0XGFmZib1//9/BnyYwdfX97+7u/suCwsLHbwKExMT/4Owt7f3eSsrKzecCrOysv6XlZX9T01N/e/v7//E1tY2wcTEhAVDYWZm5rGampr/FRUV/4Hs/yEhIZ8cHByaTE1N+VAUxsbGcpWWlh6rra39X1VV9T83N/d/RETEX2dn59nm5uZKcIUgAuhGTqDiwyDF1dXV/wsLC/8DDfjv4eGxG+huR6BTBOFGAxXzAN36vK6u7j/IKSUlJf+TkpL++/j4bLUBArjCoKCg3oKCgv8gU2GKgfyzkZGRIU5OTjJgRUBGb0xMzH+g9WBFIMVA07cBQ0IP7kaQoqioKLC7QKYA8a/i4uLpQKdIovg6PDwcrgjokU9A6yqApnNihGN6ejpYUWVl5T1g0EQBNTLjjBlgYJ/LyMiwwRvXycnJe4CO1iGUegAs+F709mxc3QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/_CPWindowView/_CPWindowViewResizeIndicator.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF9JREFUKJFj+P//PwOx2NjYOJIkxUDalSTFQMxPkmIQnyTF0tLSASQpBtLOJCkGYlmSFGP4gZBiBQWFIJIUw+OBWMVALMkABHZAhg1MMQcHhxeQtoMp5uLi8obyJUF8ACitf5AUaj8yAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/action_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABYAAAAOCAYAAAArMezNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZxJREFUeNpi+P//PwMyBgJmKN0PxCBGP5TPja4WH0Y2UBKIGxgZGQ8AaVaooTDMx87O3guk15FsMAcHxy6YQVDD4QazsLBsRuLvIcng0tLSrWiuxMBAy/8YGRndJclgIPasra29DTJAR0fnY19f3/W3b98enjhx4jUQH2RoUVHRTaC6VqINRoooMK6rqwN51x2IuYDYFcRHc30/UtxMQ5OrQDYYxcu3b9/2R7b92rVrAehqYHI3b96s4uXl/QUSk5GR+fb+/fs4uMFxcXGPkTUBFaYgG8zPz5+KLA9SjyTPW19ffwkkPnv27P1APgtyGGcD8f6UlJSHwBTwV1hY+DpQYTQo7QJxPJT/39jY+P2PHz8OQNXDLf727VtgQkLCIyDbAls6PgZMZn+hye0frpQBlLuJJbKYgDgLa6owMTG5B9McHBz8DNkwWGrh5OT8Y2ho+IzU5Nbq7+//vLy8/A7Qa2VoERUCMtzFxeXZp0+f+kg1GITL3717FwOkmWERihRRIcuXL58FpFnJMZgBFquwCEWLKA1iywqAAAMA5oG1QG1/ejsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/brightness_bar.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAXUAAAAUCAYAAAByIq2DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrt1DEKgDAMQNEMvf+VdRC3QhNpUOS9pW0CDg5/RMQRl/uMxWy2z+w6zupuNeu6V3Yd747Zm/Onu93f+9q/2TnrfGd3u+/VWWbXcWZ30/0IAH5D1AFEHQBRB0DUARB1AFEHQNQBEHUARB0AUQcQdQBEHQBRB0DUARB1AFEHQNQBEHUA8k4Pbf5S2jTRYAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/browser-leaf-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANJJREFUeNp0kMEKgkAQhmd1PYh5C3wNfZkeomNPEQQdu3bo1i06duzURW8d8hJkUQgFYqLp7vYbJRU48DMw880/s0tBEAx83+8opahNLAxDZHUrimJSluXY87wr/QWL41gZhkFZltEdkef5tKqqoeu6xwZKkkRZlkVwIbh9YAF4htoI8PYF2bb9mpBSElwaOE3TNdTj37s1TaN6NfLFNM3IcZwNyo8GwvEwkmfGWMQ5X6I0h3Z1j6MpsOKE6b2u64t38/DzPCHECmAf6rb901OAAQCWtKL7r7moLgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/browser-leaf.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAONJREFUeNpiUFZWLlJSUuL5//8/Ay7MqKen95+BgeH9jx8/pv3586fv7t277xjQAKOtre1/VlZWhm/fvjF8//79K1DxfKDijjt37jyFK3JxcfnPxcXFAJRg+PnzJ1gxEP8Fshf//v27G6j4GgtIJRMTEwMbGxsDCwsLAwcHBwM3NzczUGECUKOyqqpqGAuy3SDFjIyMDCYmJi8DAgKeGBgYnAQK/2JBUvDP1NT0RUhIyBMVFZXNQKFVQHwLJMcCtOavnZ3ds/Dw8AdSUlIboZKPUbz3+vXr3cCwyAJiEVzhBBBgAKZHhoa/n4e4AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/browser-resize-control.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAOCAIAAAB/6NG4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUeNpifP36NRMTEzMYMCEBRjBgAIP/YPDv3z8mBlIABaonTZr07ds3IKOvrw/C6O3thTAoNntUNRgwDpqYBwgwAFUPJZ6DFNTXAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/color_well.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACMAAAAPCAIAAADh1eFDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH1JREFUOI3t07EJgyEUBODHVbqAhXvY22cGXSAbpRFLC8loCiIkIfoyRHhW/7fAcXCHGONNXggBvfdSylNSrbW1hrUWgK+kvbfWGkT0kUdEIKK3PGY+lHS800veuU7XIv7BzFBKjTFEbzvnZGZYa3POD0kpJWMMnHN3ed77HwxWA6QUi5PsAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/New.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZNJREFUOI19kz9IAmEUwI8aaoqo1BaxWhoampMWazQS++PWEtTk1tIUOHbQkHZBTjY4eGpLKEE3JaLiDVficBwcSJSLTi4Owuu9jw8x79MHP+7ge+/3vXfffRIASBgzyByygCwjLsSLbCLbyAayhMxK48EFVOyCkeh0OmAYBnvHtTNkRyjhAtp5i5JrtRqjUChAIpEYCnH9WijhAmrbT4m6rjOKxSLIsjzalFjCBTRzgJKobULTNIjH4zAemHfOv828UNBsNhnlchnS6bRDwCW7yKJQYFkWo9FoQKlUAlVVIZlMgqIokEqlWHeYu4esCAWtVoth2zaYpskK6vU6VKtV9qTTwdx9xC0UtNvtqfARArzGKeh2uxM5ygQh8hIC3637a6Kg1+tN5Dh7AG+/lemCfr/v4CR3yLh4j8Kz/QpBNfyzdu+prD+sfjgEg8HAwWk+BE9WbohiZhijguGfKAqam7jUonDz+QjBbPh7vAN2F5AIcoXERHhjLpsEvjuPzmv+30Yu8fNjcuCT3QYV0+68RvoD0y0J9R+ff5MAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/NewHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYhJREFUOI19k71Lw0AUwIMOOrViGzcXFwcHwY+WfizVwcG9iFIpDmkkSyDQ1MFWyVJqKdRSQggdMnQJFEr/FgdBEEdB/Bue7x3P0jbXHvzIwb33u3fvcgoAKDjWkA0khiQQFdlF9pFDZA/ZRtaVxcECSlYnkwn8MxwOodvtijmulZCMVMIC2vmAgtvttqBer0OlUpkKcb0mlbCAys5SYKfTETQaDSiXyzBblVTCAjpzgYKobMJxHNA0bU7AkjvuzaZU0O/3Ba1WCyzLighYkke2pALP8wS9Xg+azSbYtg2GYYCu62CapqgOY8+QpFQwGAwEvu+D67oigXpCjaUv3Q7GniM7UkEQBCvhIxQ4JyqgHZaRqZ5A/iENyevY11JBGIZLydqn8BS8rBaMRqMIuVpKcOFcguk/wrGV/lVL8Xf1Nv4WEYzH4wg5LNvwalN0tyqYFUz/RBl0boIquHq9hyMr9bNYgXgLSBGxkGcZiWLsmwTJm/gH58y/RpZk+ZoiYPM+KZl25xzlDyJip/qGO0OBAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/Open.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgtJREFUOMulkz1rlFEQhZ+Ze3dDkGhcSZa4UYOFhU1iYaUWfiP+Bit/gVhYm970oj/DPyDEFBpEEPFziYKKySa7yO67eb/uHYvs5g22meZyYeacM2dmxMw4TCiHDAGOzDabd0+fWVgMIRQAu8Nh5/vGxnqa7nb+I1FgF/gJmJnhgeNXb9y+/+Dho1v9pB8xGCaD5O2b1+12++uOc17GVCqqIYZkbXX1xUb72zMgeEBbzZn62VNNer26AqjOTC2eP7eE7Ek8KHh6+hjLj5cbKytPngJ4IIpYabHEQglACBCKHGRcXhk9OVHHLCY2ct8D0u325M9mh16vV3EJmI0xKqA0KxgkwxowAWT+ZGv+2tzCuaX1D22KPENGrOPxighmRjRwqqhucfHKzUsfv7SfA/f87Nx86/L1Oyemjk4TQokA0cCrIk7I84IQDRGh7h1mMN1o+FerLxsAPsvScrOzbUlhkucFMmLda8GIZoQQERFq3mFm9LOS/iDJAXxRlrbzt08W65Sh3PfNzDAzVHX/P26vNCVNM6sAuj0bpiahLKu1GRkoIlis/IjRSIYpg2QYAbyKOkXUuQM3YYY6HamIiI5bijgnqIJzrgbgu9tb2+/X137PzrVqoSgjIghg2Gh8e281VkFU6z/an38BiHN+YWJy8gKIB4tV8qhwH6JaJxFqeZZ9yrP0nRz2nP8BeYUUSYTtIaYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/OpenHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeRJREFUOBGlwV1qE1EAhuH3O3MM1CiN/RFEBBFFULDWG92BV6IgrsD96CoEvVMXIS5AW1FBqJQmFWnaJs4kc+Z8Thtt9brPI9ucROCEBPTme70ny8vnb+Wca1qTqvo5GPTfp5QGQOCYgBL4BtS2icDyrZXVpw8ePb5bVSXYVGU5/frl88ZgsLUbQiH+kBSy8/jT2trb7X7/GZAioIXefHFhqcdoHAERQq9z5fKlq2COCQGnu6d59fLl/JvXb57TikCWnOyMc+ZAk6FJCQkw/+mcitgeGSdaEQj7o7F2hruMxyNmxIyZEX9NU0M1mUSgC4ziwuLS/YXzF2983ejTpBokBNi0DAIMBiQRNOTazdur3zf7L4CHsbewePHGyp2zc3Ndcs4gsE2hgIKoUyJnI4lYBDB0z54p1tc+nqMV67pOw909qgRNShySCIAxtmmykaAIBcaUqaEsqwmtmFLj/V8ltSM5Z2aMaRkkccAYcUBki2ldm1ZscuP9vRGTqck5c0QcEmBzSIJsmEynVNUk04oiFJIIgSO2CQoYY5sQBAKyKYIQEEI4RSvu7w1/fPuyvtM7t1jk3GRaAmyOiZYAIwQhdLa3NrdoKYRwPXY694QKcAYxY0DMGBD/6KSUPqR6+k62OYnfXED9QFof0dQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/Save.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVhJREFUeNqsUz1rwlAUvS8JAemUPZNZAiLonqGTPyV/oWPt2H+T2aUK/oAQyKDSzUFCSBarolF7z22faKWmYC8c7st995z78Yg6Ho90j1lhGMpBKXVS8n1f8NOiKIJ72e/3/cPh8CXwfdfvdru02+0gRM1mUwDLsoziOKZOp0PtdptWq9XzdDod8hVABqsRsNlsaLlcijdNkxzHETBB4vC4Q67neW/MfZQOqqqSSqgO2LYtVSeTicTX67XE4dEdzo1GA0IQGF4JYLbFYiHQBsJsNjvlWZZFmnchsN1uKc/z+s2fC4AIA7ksSwqC4CZ5PB6LgOZddIAF9Xq9mwKj0Uhyr0ZABxCoM+Qg92oE3cFfBPTC/6UDoygK+dBPWGfI0TsA10qShFqtFhmGIdsdDAa1T4hcvFiapqQ45jI813Wf2DuMB4b52wSMD0Y5n89f2b+re3/nTwEGACUKCdgz2++nAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPApplication/SaveHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXBJREFUOE+lk09qwlAQxscXCC7cBUGwJCErt0IJOYLF0Bt0I8FVD+Eduuo2i+57hB6gBLLLUhoiLlQUxP/G9w08iYjJogM/Xpz5vnkzkog8z+k/iOFwSLVajXq9Xq4IgiAfjUZ3oOb7/gf0YDAYkCAZrut+OY5DlmWRbdvUbrep1Wox9XqdJpMJn6g1m833fr//Ch9CnE4nHuVwONB2u6X9fk9CCGo0Gsxut+M8TtTO5zMZhvHted4bNzgej5zECTDacrmkNE0ZmJDHiRqecYG88AWXcwM8KNBssVhQkiRMlmWk6zqfqBW13Kw4AdZYrValQFP0CCTUj/V6TaZplgKNagDv3QrdbreUhyuoSaqiqL1ZQf2BVVHU3qygJqkKdfN1hfl8fk3ihaoKaNRl8Io4jmmz2fDLoWkaRVFUCjTQwgMvvoWn6XT6+StDJpIwDMeSvweMoYEWHniFHCmV/MhxnmezWUdiS8wHoNaBFh54L4mHAQ/Vw7dXAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImage/CPImageNameColorPanel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABoAAAAdCAYAAAC0T3x2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABxBJREFUeNqMlmtsHNUVx8+dufPetddrO07sRG1ik0SEQIwDJRSaAEn4QEQiA4oQoEgoUj+0qpDCN0BVVdQPqA++tFU/VVCpISIK0MhWFYQICBEeBVyqxjHgBIOx49jrXdv7mNfO7f/eGQcTXrV19s7dO3N+5/zPuXeWCSHou/72/P759bGRHIyN5p6mkbQ2ebIt0QTpWjTC9WDB0P2XYcdODT524bv8sG8D7f/VS7fA+ZPFNt6/6/qrqv2bf9iad7mx1jBMuT4ZheFSXI9GJkYXT4+/5ZWblz7kmv/4C/v+8Nr/BTr46JDZNMTv2gpi8P79t5jbe9s6Io2ohtsCjD5TT5FDgixKyCNGBq7/Vfmo9NybRxtlMfMio+jIsbv+Gn4r6MGfDxcTLk5s71/d89A9A70+1mfx4XOiGJYYRELmwxLSKILFxDE6IqEOZpGN5Wff+9v4Oxff+IKJaPDovmPzXwMdOjzsCE6n9+7Z2LP79r6eyQWihSYAcI7QSbMzk3MtwUeEfELkgkgoIBPQFmDXUJ5e/mRoamj0+CSJaNfRu082pH/tMjEST9+wdU3bj7b3dY+irNOzkKsKUIDFZupbR0w6rbQEwiVYjqhGDZqhEo3RZ3Rz30/W3NR9U5GJ8Oll/wr08H0nB9pz7MAdt/Vv+GQccgHSAKQptYvgUBpAXBpgUBEmlEmYDpRAdg2qU4Xm6TxNsDsH7l5f1IoHHnjh1oHLIBYmT+28fTubmCC9BIi/iHogYS1KTUdGPCYyADIBMpGHLJWhYClI1osB5lNVwb6gKX3vjYOMJdFTksEP7z2xrbCab3VbV3VMfCoobqKLUAsTYTPIpqM+HDAzg0jJZOMJpahQ0glcxRkoQb0C5BbQIq3tWtvRzju3Hnq+f5umReLeqwf6/KkLUKnKSMA5i1PJZDYqE2RkwizAbBBka9uqRwQyS5BZE5ktZxXjKgCySlP0Odvad2ugi+a9mhYmOxyn261MovCLqUxSIkOk12oOmAWzce0oEINRBpOgJKtVouSU4AT1WqJpyvcULUOIHVyPxCbuuzZH8Q0PD8epA2WooMVI1UNKZ2XyyWaI4VCDSeHSPKSI2ootGqMXG2S7rR52xCZuxKJzYZRrMfZNrofIA8xB5K6KHCNADp639RTiKJB0TKpSQlVNwz9TGE19AwcQL6CL1OC+aZPeyaX+NiC1CXTbEqJeA+c9adFNhOJIsMxGQnTZaanpcMwUIG1xPA33VWQxh9kUrqfx/TzllMw6cdBmvdj3uO4WZMQeTqgcZPSQjgvNbDPNxjFSsC43VOITt3AE6T5cNGCIEFuWYdRQGx042SgBZoYf1BwyqtwlfSz0y71dhltgyM6DJi7MQ8e5MAdgC2bKzSu7Ao6IY5NFMWlOgywDMBYiS2kSIC1GjWPVFtNlv+KSMc6R1plq/eOu61Ggei1zHmQG5xZ8cnl08zCFRLhJkzcisxg3OFXiZo10LjPz4TpQJoEe/kdHF+vI6Az3iB8XCwuH24qU8IrQ3ICRnQEs+NUs2eOBkoZiaGrKPYBFH98HgIcSukTMrpJl1omzBprFVxm2UiEJZoJ2hxvH1en93HXDp9f1/KDrx86WzUvwZbWh4DDWBkcFUFvgLIc6OEspiNXStsxhPQ+oh4dcfG9X8HCZhFFGvXL0/r+DsfFz8xfvOzi0S24JcomOzM5+fJKu3tLIL6JJlFRBGjnJ0xWAAK1pw5mBUaun0vnQOUAgAeYh7vGwHiO7vFTB8S+MlFoNS3/gK++jV7YN/4W38xt2du3tpzk/jT4PSB5jDs4dmIWIjSwjT6Qd04KAWhBQi2xV3FvAvLudTv298kEU1d+969A/fqoO1eV9jC5+RC/Fp99jr/53oPu2LXTpItq4jAgBCCqZLDAOZ6yavtvz6MIQjkMEFiErgUw6O+n1Zy6djar1iEztkW98lb993XCRRHyiWQwKN/fu2Ei1kiPKY8ScRaU9QfvLIDcDtUYk8gGxjUWiDs8f+uf5sWZSr2iOMbjvyKkvX+VX/lj50/pfWtc66/9YMyu7N3Tna30d7ZsoKWlU+wyr8zjdZzDWiRWxo1vxeE+OqI0n/5ma+Whketq1nOSVdz+v/uy3J87JVhUiy2QlaPkNLU8Y/ud1v9i1Tnee8PXFXrPYmNu82nAKTmh2dnid8uaZ8lypFDaCkdq0v9AsF3VbnJ8Mkt/8+tSnr6uDjtRxGMnXFljNlSB5SDtpE6I3IQysZafbe82NdsfuTiO5NqElz9P9VU0cO2UWzyUW1adEPPrBUvjq+3ONs7h/IW1TdSZV0x1ODYDC7wXBID6tykY597K3iJ85RIfQJdh8dv29oK9Il4FNWvF6yuacll9JqTRSpkZm4YrvLksn7WvN8A22/CNm5Xz5ZwNlY3LF/Eqj/wkwAC2fO4nxam4uAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImage/CPImageNameColorPanelHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABoAAAAdCAYAAAC0T3x2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABqhJREFUeNqMVkuMHEcZ/quqq7vntbO743jXm8WLs/YaOQ8nUswzQitMImJ8AokcLBHhK7cIWUHmAsGKZHzkgpAiBckckDghJQcc4TwIIg4iRBBZMrZje22v19nHPHr6VV3FV109m12CSWb0TVV3Vf3f/65h9Cmfx3/40wM5y48rli9qoZsF5fs0IxLSXBI8H0hfn5e+eunCyV9/8P/ksHstfO0Hp45kJv55s0b7H957f/zA7M5GzedeRwjPrq8WhYp1qq7eXRq+f+tiOGS9f8vQ/OTN53/3h89EtPi9F8OCq5fqYf7U1790wJufrrcL7EoMUc6B8pQhH4MkTQFEeGTo8vB2/42LbyRDr3eOC338T8+/mtyT6MnvnJ7OdfzK3gfGdy5+ec9MhvUufnJBVAAaIM8RMVJAQQLwjaYxJkHOzPmrr9+6tPHBihfSkXMnXlv+BNHTR880Uj288Niju+575KGpHatDokg7AqhOHCYwO1ZEBCINEEET2OnhqUacJqlO/7jzt9V3l/68Iuvs0B9PvBVZ+XxEpNLk5YXPT7T2zU91lu4QrXWJ0hhWWF+BkAHcuAMfwxIa2FRQQiltUJ9u0l36wtSByf2T+8eKJHl5JL8kenrxxcWmrw4//ODczO3bcBdIMni4sCQFMkw5EjECWZgSvBw1fhVsSykC2TKtsEf3HNrVKBqHnzx1cHGTCMxnHnpkL62sEO9bElhiUiyqCrBGgNAzFWgER8JLFGXcMtg2ANkqrfHHFr5KOknPWA7v24+/8ISsZ/N+fay9cgduQJF4vlOBwSJu47KFRGxJnqJynanILJFBvHJYtk5D2jG2o92k9vy3frbvCW5ydWz33pl8dZmYShiZyl0WrKgsgUUeRmnKvEBKu1GWVukSoiRyB22SKFi2Rh+xuZkHUe/FMU55fsj3J8JoFTEfOjeVgo2bj9wmMfoYfby3Bo8gt7nPVO60tqYUg6reaUlWmEMeU3pOZIEUCL4InLCRtj6SX7LqWTuLRu4rygQ3lePYJrY6tkDEpF/UhDZznlB6PLrBWYFsDztACALt3GM1DpiD5I7EL4mck1x8eFmO7jtKe12qESFSKc89afi4J6ymIElWUHbINjkJwZPugAfVg9AJLy3kLttEJZDhl23WUwbxCRTo4WkV83W871OIHT5mXkBio6ZVTQjZsBqHSIYQbgxBGkC69Jw1gXDE3BaSydC9C+I8g4gUWYbNZFtbDLFpmeqyzD8Q5CoNmDf0QuZdU9lgdlxMNGz1BxbwS4j6CQAfkIAHBVhmHYYCE2g7BerGRwwExDEFKxWsVSCwKMqGa9NiI8r6Ne4teTUmLyTZ7c6ecILS1AkPINSvICFT2NZtK9eSKGjO7ahd6/BjEl4CS611OUTbvpeXhCG+t5bipCbkBa/JgrNJNHim1WRGRJoFOdskkJDHbK7z3LlGA56tASxmeJ8r5+cALpMx3JySYFlJZi1ssKbJ1nvtelOeFW+vn7v+jfY3n9F+kc+hO1ilfRsP2xmYctobCDPIGJuaCkSZnaeOuFzDO2PjFOEMLOQxsrZB167nS2mU3Tr1wjsny9tyjAfPbXRv/p59bjarDY1f3nIid5qXlkCIgnA5dBYx62PsyaBIjn156hQo4hKsZr3gZ8uXB436mPw+VZlKr62f+/Do+FNfvFvcCe9rT3Uozp1wm01WWz1wRApjDqSVRVaw3WcqlK0FZ+stev+t6IrkxV9Pnnr79Lb7qMnDZ72+Vld7//qQJnx7QcETEDroE/V7RL2uQ9fOAXuX9Kp5z+7BXqugGKOL5/vXisFQBZw/+z+v8l/Nn56Oi+iVopW1FqYXdpuk55vBTaQxNJUQ5AHwP7HEuc66qIFGVMuJzbQQgyD7+3sr17VJ+/VWcOTEL99ZvtefE/6jXcdr9/udswPR/cquTj2eajV2G91HHd7Fch/dfaOMEWvB6jqOd1D7Tc/cWN+4cXltLQxr9Jera+mx375+LS6blDH6v4lG95ltc95zO797tM34jxMezfqtbGN23AvqQe61WsG43dyN+v2BSrMryXoa6UFb+OZmt6Bf/Obd5VerNlEVHimQqa1E6GrISYQLsMLawMTBcObgghw73BJ6QdMwDHg2rtHXIlZ0jaR0jfSVK7F681I3/Sf2rwE9qwcA03HZItIgSj6VCNgBTAOTthKqPUGlrRW0DuDvDH30WYm2ua4itvP6FvibFytt/teyhMNKaFq92+Y6i08kw5aRbYmh2FoK1Vxvu+U+fjYVRs/l+B8BBgCMykDM1OUJfQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewBottomLeftShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wUEOwUAUANA37S8JG7Fj5Qhu4KrOJyxEpJTpWHSW+l5ggwOOpZSzP8KkYDQjUJAxmBHIeOORUtphiQ6NKpDR44YT9thipQpkPHExuWONhSqQ0ZsMuKJDqwqM+CDjhRYNkipQkJHx9ccPCKMfJ5j/ZGcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewBottomRightShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wTsKAjEUAMAJvLt4LTsvayEeQAQbbRTEZd1PEgWLCLozUWv1T0ppjR2OYVlB9RaWDciokVJaaQomjHhgQA5sfFT0uOKMA3rkwFYzosMNF3SYA3tNxoQeHZ4ogZOmoiBjRkEJ3P2qvrwAKV0tKePvXOUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewBottomShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAJCAYAAADzRkbkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUCFtj+P//PwMDggACdRDRByKiQIQOiOAHEYwAbGEKQz1zHVUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewLeftShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAABCAYAAAAb4BS0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUCB1jYGBgEABiAyBOAAAB7QChuhy7UQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewRightShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCFtj+P//PwM2DAQJQGwAxAIAxNISj3z8C1sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewTopLeftShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUGBl1wbENwjAQAMD7f8sYlCoN+w9GyRxOgRuk+C78CzcCgUShoZAIS0OiY+CFgY6yNBQGTnyRSISloeHAe875cSNReOK0kUh0HDYSgcLDRvoJhI0L53oFmk+kBA4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewTopRightShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBJREFUGBl1wbEKwjAUAMB7aVAExUFw0f//vC6i1GASHYQuzV0gbOv+Ms5WHQ0VH1S0jLtVRcGCFxaUwMmqo6HhhhnP3Ht/2BARVxS8k7ELDpiSsSN2SMnYHhMiGQuEny/9fRhMYHBh/AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPImageView/CPImageViewTopShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAECAYAAABP2FU6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUCB1jYGBgYARiBgEQoQMieAEB6QBLHwsEZwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPMenuItem/CPMenuItemOnState.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAbElEQVQoFc2QQQ7AIAgESw98nW/4O55BdxNNkB6aEA8lGSXKiqxExNWJuyOi5idCEVFgwCfMdRuL5lRQYICuZSzXvUTTZS8iPuBZeNycgQ41xnaQ268cBTSCc/LLhLmue+7CpRPHZ/z8RLvjA8MnX72R/hSoAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZ0lEQVQoFc2QUQrAIAxDdR9e3Wvsdh6j6wOtWxkIxQ8DgRgNps0ikiK4IiEy5wSLtqnK1onGm2A5P6zqeeDZWxNvU3Xzqe7Z++3Luecwpr6eqziqFPWZicoQjTfuU+YQwfYZlyXCPz68ppV1+vunagAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpiZAiuZ2ZgYLAGYh0GhsA6h44tpzdfeP7lIxML038TCx11x1c/GflY/vz+w/35139uBoY/DCwM//4y//n7hwEEWBj+/2X+/QfG+fuX5ffvv1DOPyAHLvPvD1DZbySZ338QnD9/EHrgpjGxMzP++vr92w+QXUy6StLXjp+5cPnL12/fGe8+fSkXVjMh5Oq9JxqM////ZwQqlwZiIYAAAwAMX1XNMAlUgQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYAiuL2e48+H3f6Zb734yMP3985eB6c/fPwxMv/+AiN9/Yaw/v0FcIOvPH5gYWB2Iy7zvwWdVhv///xsDBBgAJJsuTOBf54IAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ5JREFUeNpiZAiuz2JgYLgCxEeZL+zbukdBXEhmz7mbT5le/WTks9BRd2Rh+m/C8vPXH4afDAzcf37/4Wb58/cPAxj8+8vM8vsPlPMfxPn9F8L5+5cFIfMPzPkN5fwBKUOS+fPnL7IyJKNB9vz89esHOzPjL5YvX799P3PxyhVdJelrzKde/ZbnZvl/YFVz/gaG////6wGxDBAzAgQYAO59XJBTIVY/AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJhJREFUeNpi1LewZWZgYLAGYh0GfXMbh5XrN21++fbDRxYmZiYTGxtbx39MLNwsf/784f7LwMj9988fBhaG//+Z//75ywACLP+BnN9//8A5IKUIzu/fCA4zqgyMw4Cmh/k31GgmVlbWX1+/fPkBspRJVUX52qED+y9//vz5O+Ojx4/l8ovKQm7fvavBCNTDCFQuDcRCAAEGADqxWcjpDiMNAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFRJREFUeNpi0LewLWf88uPXf8Zn7z7/Z3z0+sN/xvvP3/5nvPXk5X/Gaw+e/me8ePvhf6Y/f/4wMP0GEVDWXwamv2Du378MDKra+ksY////bwwQYAAEtTEizRGTJgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJZJREFUeNpi1LewzWJgYLgCxEeZL128tEdWVkbm8JGjT5n+MbHw2djYOjIxM5mw/P7zB6iCkfvPnz/cLH///GUAg///mVl+//0DZQM5f/7AOSwsv38jcZBkmKGmockwgPVAjQYr+wuU+QEErKysv5g+f/78/dCB/ZdVVZSvMegYmc0KDI0sevT4sRxIrR4QywAxI0CAAQBTdF49cw4ogQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIBJREFUeNpiZIAAISBWATGE9+7dO/Xr16+vGTg4OGyAjA+/f//+z/Tjxw8uFhYW/n///jGwAJUxgRggAOIw/v37F85BkWFClkFVhlMPXBkTDw/Pf6DFn0CyzN7e3mKsrKwcUlJSCgxv374VCA4Odufn5w9h/P//P0g5PxBLAwQYADkXPiP8F5MNAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNocxFEKgCAQRdF59dO+WkT7B0EEQRBhGERv1Pk4Zma31lpozokiArk7GmOg3jtqraFaKyqloJwzSilx7L3t7/OcwPUKMABbNDOyQBe/kwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpiYGBgMANiIQYQ+Pr16+u9e/dOBTKFGX7//v0fKPCBg4PDhunfv38MLCws/D9+/OBiAXGggInl79+/MA4jThk0ZSgy+E379evXJx4env9M3759+7B///71rq6ubxn4+flDgoOD3d++fSvA8P//fy0g5gdiBoAAAwDmKUtB/aWHewAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpiZIAAISBWYQQSwp6enk1iYmJhLBwcHJpARjQTExM/048fP7iAsvz//v1jYAEymEAMEABxGP/+/QvnoMjgUYZTDyOMw8TDw/P/z58/n0ACTK6urm9fvXq1/vfv3x8Y3r59KxAcHOzOz88fwvj//3+Qcn4glgYIMADyGjn6SjxcsAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAYAAADXnxW3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC9JREFUeNpiYGBgcGZMSkr6z/T//38Gpn///kGJv3//YnDRxOAECIQzAw3gAAgwAGRwKZNd4WBbAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAQCAYAAADTasWKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIBJREFUeNpiYGBgMANiISBmYI6Pj78gJSUlfufOnZNMQCAiJiYWzcHBocn0798/kAr+Hz9+cLFAOSDAxPL3718YhxFVBrcyJA4TTj2MYEv//PnziYeH5z/T79+/P7x69Wq9q6vrWwZ+fv6Q4OBg97dv3wow/P//XwuI+YGYASDAADufQ795H/vjAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif +Content-Transfer-Encoding:base64 + +R0lGODlhQABAAPcAAP///8zMzJmZmWZmZjMzM7u7u6qqqoiIiHd3d1VVVURERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBgAAACwAAAAAQABAAEAI/wABCBxIsKDBgwgTKlzIsKHDhxAbGphooCDFigQvRtwo8CJFgQUmFjAY0sBIAB4nckyYgIDLlzAVQEzp8eTKjAoUJMipAIFAAQkGBAVQAAGCkQIOKD1ZQIDTpzcfHkiQQEBBo0YtKsUYtavXr2DDih0YcuxXjR0/plVp9qFJhyFttkU4lafVhU2fyp1rEEHQAQMGYvX5U+mBu3wTK17MuLHjx5AZo42McDJKtWu5Jr4ol/NllSXZgrRsNqVD06UVuOSZk4ACxKdpiqZMe6CBATmp5hyQF2GBkQaePtUs1u8A2FMBBwYwWKDhA8SD721rPAFhgc0HJlUKu7Zzowe8i7cfT768+fPo06tfz34jae8lDb4XGdmzbcxE3zMOzXWyfcXxEcRfZpntRd9YKdmEFluT8TebWA6+1VCE082l30EXttdWSzB1KJNbsh0YlQGqucaaa90xFCJxZvl1HV4CsJgYULntlOJBwjmV2AE15maVXwmEp9VhP+UoQIUjssbbQMoFyRxWKD2XkXD7NXlXdgZISZkBfyXAVXZEPYdkYsotKRiUBGkJ2W99oamhUhrGKeecdNbpXUAAIfkEBQYAAAAsDAAVACUAHwBACP8AAQgcoECBAIEIEypcyLChw4cQGxoYkGCAxQQRBRrYyDFjAQQgERRAeKDkgYQCUh58aCABgZcwMWZ8WCCBzZs4Dcz0iBNBwpAIDpo8WUDlSoEFOOrcKXAoUwAGYMIc8LQqAqknqyYkWLCrV5laZx4YkDWjgZEOBVC0uLapxaMIiwpYqrQjRKBLnQKQm/IpUIV6ERoNq7DvUwFSEywl3PCqVAIKyjJeKEDBY8mTFxKkOrkmzs+LGXP1+jWzacJqK4KFqJQmgopsE/jcCDFpXbRIYa/NOjFk07IqE9ZdPBZBaLW+Aeg1ihthaIYH/v4uiTLlc4jRQUoODFXl9bQDfAIMNqlQbvOwAkrChRgQACH5BAUGAAAALAwADgAfACYAQAj/AAEIHEhQgAGCCBMmNKCgoYIBBQYqIEBxgMKLAzJq3BjxoseEBxCIFDngAIACHT+qBCDggEsBBQXIJFjAgM2PAihShLnyY4KGCX7y7Em0qEIBCA6kBGDApUuBMmcytXnQKEEDMqsa1UlAq1WFBrgi+HoA6E8FCWAmqPg1IYIEY62+3bgxgcW2YEcO8Gp0wEiRPAs45SmVKl+PLV8OjDrU8NKFLvkyXniY4ACKcfEinEgxgeaEaykqaDsX4WXRj1cCdRj3gM7RXweYbbj36ecDZxUM/cx7Lt2MdvH+3sj7KILdeAv8RbBX83K/BxNXtpkawF+TA50eiB5VoGGi2hd3F/dOdWV48VLJ3/R4Hj3y71YnFx+4/mJAACH5BAUGAAAALAwADAAWACgAQAj/AAEIHEiw4EADCRIYMEiwgAIFCRQcEKiAAAEFDAceGDAxo8cDIA8U8OjRgICTBA2oXJgx4sORAyteHChgQIIBOG8uHPAQQcEDCIIKHeqTpMCQIVkCOCngoFKGBU7CdKqS5NOBFi2SfPiQoEyMAAokTFhUYMSIPr8aNGATp82rBIESFWq0rl2BApCCbGrUwAG+A6MyFbgS7kGmTwvfLVh1cUyLYBkieNjx8cyMPCMO8AqZZGaIliNvRPB08lmBWQkIFOv2ZkcBXBMsfQg4LIKbrREIvlvzpmzHd+XOpUtS+NypwE0a/qgXOUO/ekUCMCnAucaQtZlWn77SqHaYij1qDU/ZPeN48o0dhwcOMyAAIfkEBQYAAAAsDAAMAB8AJQBACP8AAQgcSLDgwAIDBhQwyJBhwgEJBAhMoEBBAoEICGgkYKDhQAEIJHocabCAgJMiSao8aKBlx5UkHw4oSNEiQQMbCRBEwJPnAAQYEyQ4YHCAxosfDyhdypQoTIYoUS4U6PLlU4Ytr64sMJVgTaQ3U2JNkDCB1a8fc6bsicCpwIdDAaA1qlGBxwJsEczUCkBA06Vi+Qp+aiDqSat8TSKm6nJwQZddHZNEq/WA0MCUB2YksJchArIJgA7MLHejXY+fH46uCFbBRrB920a2rFoua4GuNXZ+mzcl6JkGhHbMTcBtwQN5BxhnqHSlgZ4DFkt27Pcv08HVrU9nuDAydcOOTRoTFlkgq9aoiKtuZ2x+u/r1768GBAAh+QQFBgAAACwMAAwAJgAfAEAI/wABCBxIsCBBBAgMKlyoECFCAwIHSBwg8ICCBAoUFGDI0IAAiBwHDlAwYGNIggZSgjzJsqHDghMpDiyQ8SJHAwdy6jyw8YBEAQYRZKRokYDRowk9CljKtGnLpypVPp06NabClS0LOERgEoDVgTUVhNwJdOBWoAMSJKAoFGOCgQYSHCVQtuDOnF0ZHphLQEFdgUqbLqVKuDDVAlFT5jVcECvjxwTTroUsUMCAhDAn2s2IueUBhwciaxZ5kSTVzy8jjgbg1vTNA38BWE79tXVn2UMJ3j0A0sBlhKo3YsxYdgBfAo4F7AaacuHSuMcTODa4c7HCvUgpGw4smKl2wN29fw8POX184vKPz6NPr9I65YAAIfkEBQYAAAAsDwAMACUAFgBACOgAAQgcSLAggAMHDCpcaBAhwoEIIiIQKCDBgIsMMwIooBFigokdBzpMSFAiyIEXMS4sIKClSwEUERpomOAjgIoKFNTMSTJkSAUEggodmsAnAJMGC3A0etBhSYkDDVgckGDmwpdWBY6cifTA1AEDCwzImTPrwJctQwrQmSBnUaZG1xIgmzOoArMaD0TsCZegAZkFkRKsmICvRgEOYUKE6pHqSbWJF0dEedEmQ5Z4/zo9yjhl4YKOz6JdWiBygckAqFKFSLatgoIG0AqYqTSjWLeuwV5+qba14b7Agy8EOrT4W+EUgdIlfjcgACH5BAUGAAAALAwADAAoACgAQAj/AAEIHEiwIEEBAgwqXMgQIcICAg9IPCDQAIKLCBhqFFjAwEaCBwZQ/EhS4wECKAlkLMmy5UaHCUFOLIhx5UYDOHN6BGDgoUEBA0QKHJAgKNEBMQF01Ml0Z8kECqJKnTrAJckBKVM6tcq168SRXX86lClxYIGaEG/mTCsQJsSvAATUJIgggd0EbA02fWq06FaCTXO6NHC38N28YRN3TZAVZYK/ihtGrRq5suXKAiQmjVzAJ1mwAxEgtdoT4Va4Aw9gBM2y9GbUAGqyZgi581gAqDGOHmhRaMG9A2/jHql7Z8iiQfEqXKoTsV6PdY0SReBcoU6+RTdfdsk8MGSNUKeKK6fs/btGwoYLV+86QAHl7QZPZlWgHf4BBY1Vwv/NOGX9/QAGKOCAra23UUAAIfkEBQYAAAAsFQAMAB8AJgBACP8AAQgcSNCAAYIIEyY0aHCggIcCBh6YeEChxYsIBSCIiLFjRgUgE1T02FEBgZMJMDI8SBAiR4kUSRZouHBiRAMIBiDYuZMkxgEJBggdKjQBAp8mT45EAFJBApA+FSI4OSCqQ4hWB65siRXmRJJbAbgEYIDiSIEHeB7NKtCATrUF2FokSreq3LsKJ7oN+VSB3awFkhL4KxDoWrYJThJQwNbAQ5ZZaXJ9iLDsAcgKGca9StkhxZcKZzLk/FLAZ7CjxXY1i7lAWtBaU3c2PXGzRrWEfRaIe+Atz7Ny3fLEjLd4R6B1ix62WiD5ULkIjBpv6bRvyrsDUIq13hc4yewnGQsYbN5UAXGPUxWfvytAMQHYeA24n14QPsGAACH5BAUGAAAALB4ADwAWACUAQAjzAAEIHDiwgAABBQgqXHhQwEADByJKXEgRgcWLGBEcUIhAgYIBAgckGEBypEOBCggQUECwgEcFCSjKFNjQwMyZBSRuvEnxwICdMlOuFHgApseEMw0kSGCTp1OBBmo+pdkQ6UABB5rexKrzwMmpYCtmvAiU4siSA7QOFMqyYwKYBBEsFYmULUGjCtQqVKmSot6pDb8CbhjWIGGwhg8S5BpRpmGbObtm5RlZomCnEP9OLTCWLM/OGMuG5bnUJGAAnM+WRGAVgACPDt/CJiqSJF2BfAkIfPsWAUEDCH6uVclyt1GQM+0OHGA0ZlDiCosq8P186OiAACH5BAUGAAAALBUADAAfACgAQAj/AAEIHEgQQIGCCBMqFGigoYGBDh8unLiwgICDFDNCHICgo8SECQiIVDAwgQIFCQYOWJkAgUaEEQvGfLmwIUYBOHNepJnwgM+fQA8IGHhAJAGSBhIkeDggQVOJAjpKdSlwgEiqJU+mJChA6QGeDB2CnTgzbMOxAGaWTasTrUCdQ932DPozrtyXPhcOPcBx6leECIwSEGgSZVWWfwUWOIDArgKjWwlrJYjAacuxhSPfhfhxs9nOYdGuLSB2bNmIGMGqLU3QwM6MZ9OytghXrmu4oMfqTO25N0K6Qe2CBe5TOM2oxu8a6IuAI2+EIQkM+K3UpYGpUhM+Fjk9M4ADTlcSKmTccTpBwVS9A+i60rxewXbVpw2vGeF2Ap3lHxavN7d+xc+9VMBKAWYUEAAh+QQFBgAAACwOABUAJgAfAEAI/wABCBxIsKDBgwUNIFzIsCFCAQoISJR4wGGBAxgzOhyooKMCggNCDhhYAIFJBAU2qjxYwIDLlylXyhRAs2ZNhQImEkigUGACBT8RABiQIMFIASeFDhSQsSLDngVFjpRJdePLl1WfYs260qZXmlAJFhigYKpDAwLCHkSgU6KCimQVKCUoIGTFi00xqj3Y8adTqQINJK36s2NMgYAJDuZa0CTjxwZbboWc8KpLypWvYka4d7PBrzc9g7bZ2TNDthOdMsSLsaGBBG13ohXAGWfeA7QJGog9FWJfAGOnnjRr4DbIjrk5/kyAWKTA4ckFMi09kOzy6s6fn1St0npZkNkFHhPYLhNBR+5Dww9EMCA6Y6JGqwYEADs= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldCancel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAB3WlDQ1BJQ0MgUHJvZmlsZQAAeAGtksFLG0EUxr9NEBWLlaKe9yBiIbZr1oBeJEZtkeYQYopVeomzaxJw12V3jQoe/Bs8CIVSKBXppfRo6SnQS3vwIGJr2/9CwYvI9psd0vTQ4MUHb/c3337zZubNAsl82fPWEgAcN/SLT3P6i6VlvfMnNPThPgbwuCwCb7pQyNPSJq6+0804HZW12pjayb0+FwS0FA39FcVZySuKS5I3Qy+kpypZVMsWeYec8kvFGfJ7cm9F8SfJK4q/Sq6Lipx7TjZcq+YCiS7yhGUHgpwlCysQDvmA/NJx1lk/ScSI8HzOTY6Qh2RfpAjUL4CpN/TvtbSlj8CHHDBw3dKGx7ndDPD5VUu7PI97pQ12BatmOi6n9RwBHftRdLkIdD4Ebn5E0fVRFN0ccu1fQONKbPj12MuDaMfc8C1jdWZVHTjhGRjxHf2fVV9ilwG8awDcCp7tAq+zwDAHD34DBXIpi4RpNlP1kFagOzdmpA0zIyfeaThrG7ynODr4vGe7zxf47mPmV/0nxSZb9uxck+1g7q+nFs6XmjpyGIOBNNNEBovqrvkV4xPs/RnhW+NL/a1U/o3Q3op7OLPubfu1SjXUp/mn2yl93hWPUnraMCbxB2AbgwprTB4MAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhUlEQVQ4Ee1US0rEQBCNHwYFUfzs/IGKXsAD6GJMwIuYla6SO2Sjh8gVIskBongEEUWEWQkKOpKIaHwvSfd00hnjZnbz4KUq1a+rO9VdMYwxRl2BiZYFFjC+DC6Bc6W2D/sKPoNvZUwzfyVehXoTZMIMpFa1XOAJ7IEaprRIEViD2QNnQDVZMVo8OzCL4Bf4XoQGz8mBK715eOsgF81c192hBSXKGN+nwQ2Qc1qxBUUXPHIc5yQDwjA8L2Nd+oxxTMRgt8FW7EPBxDlFIlrVF+Ol5ZxWHEAhE9MXCeu7V3SH8CtoqnFF8M+XyhlwDotfB68RTztHEATHpmmeRlF0wQD8M3yBYVnWZaHIn9qtUMaky4PIS4HTt+ufL8rCMaGD1Q6PV6qOHwTYcZ04jl/SNL22bftGiHzfv0uS5MrzvHvE2DQf4CP4CUoM6zx23S7YVCo5Gc43eAv21CD9ph0zzpqxo2ZBdlgdYqcPGNCSUjxsxyIRO2oFFD8h6rlo608ImjFGXIFfJ96OUFGBfFoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldCancelPressed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAABz2lDQ1BJQ0MgUHJvZmlsZQAAeAGtks9LG0EUx7+btBixSI2t5z2IpBDLmjUQLyU/oEXsIcQUa29x8hPcddlsogUP/g0eBEEKpUW8iEeLp4CX9uChiK2t/hUKXkTW7+wQ0kNDL30wzGfefOfNe28GCMdKjrMcAmDZnlt4ldXfLr7TB34hjBGMIoqZkmg6mXz+NSV97OYHNLl1Oilj9RH1cw+7vBDQ4hQ8qSlOS15SXJS86jkeNXXJol4qk9fJcbdYyJH3yMM1xV8kLyn+KrktavLsOdmwyw0bCEXIqXKlKchpsig3hUX+TE5Z1grjhy7JMeG4PBt+QB6XfeFMa18BLz5Qs9nzLR4A+1ng6W3PNzHNdJPA0XbPd30e9EobizSrZiIIpw0dAg+3fP96ARh4Btz99P3bQ9+/2+Xdv4HOjWi57UDLQrQTJvyPtapZRQe+swZa8EZ/Z9WXQGUAnzoAU8HcBrCTBia4iF4AeXIxjZBpdofqIaXAYHbKSBhmUh78r2Ytt/hOgclv+qhiv5nn/JgjVnVfFrqMLKZgIMFhIokF9Y7cxXSKfT0jfOsctz9Kz5/mVdaC/uRWnPduo1b39Ax/cSWuz9rieVxPGMYM7gG5lX3sSVNlhQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAadJREFUOBHtk7tKxFAQhrOKilvExgtoENRGUijEwsVKYSEPsG/gC8RXyVOk0idIYSexEFQWbUyhEfHWZBEvTfz/JCceyexupdUOfHvOzsyZTP7JMYyR/bUCjSEPWEB8FSyDOcD8J3ALYvAIRBtUeBMnHDArnjSMF/jPwLkUH5ec8G2AXWCCftZEwALvoNb5mHCKr78Fphhrt9uLXHXTfMxhLs/8MqljSrDOLBZwXffAtu00iqJ7+jzP23YcZz/Lsm4cxz242DnXBFQmFd5BdIYZPMiilmV1uLZaLWytTpIkh0EQXFdVik1X/y8V3kPCRJmUsVNV3DRNG0WPfN+PEM+AGv4k9qflmXyRNNbj6qDuY0GaFCsi+JU6XoGfUuQdUVP1+mmaXpWy9PAmSlPmPYChUrAoL0SDw+OgqClfX5dFGx47vwTqQdjKHX/BvwSaHB4L6INicfrCMMy/EuS9Aur7Birrp5O6IPm3XGUXG31on3Adg4si9PMracwob9IHoCzTgMYm9KK80iegVhS+wZNFnDdqDfDqzgPaM7gDN6B2leEb2T8p8A3yHYy8BAVcaAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldFind.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAABz2lDQ1BJQ0MgUHJvZmlsZQAAeAGtks9LG0EUx7+btBixSI2t5z2IpBDLmjUQLyU/oEXsIcQUa29x8hPcddlsogUP/g0eBEEKpUW8iEeLp4CX9uChiK2t/hUKXkTW7+wQ0kNDL30wzGfefOfNe28GCMdKjrMcAmDZnlt4ldXfLr7TB34hjBGMIoqZkmg6mXz+NSV97OYHNLl1Oilj9RH1cw+7vBDQ4hQ8qSlOS15SXJS86jkeNXXJol4qk9fJcbdYyJH3yMM1xV8kLyn+KrktavLsOdmwyw0bCEXIqXKlKchpsig3hUX+TE5Z1grjhy7JMeG4PBt+QB6XfeFMa18BLz5Qs9nzLR4A+1ng6W3PNzHNdJPA0XbPd30e9EobizSrZiIIpw0dAg+3fP96ARh4Btz99P3bQ9+/2+Xdv4HOjWi57UDLQrQTJvyPtapZRQe+swZa8EZ/Z9WXQGUAnzoAU8HcBrCTBia4iF4AeXIxjZBpdofqIaXAYHbKSBhmUh78r2Ytt/hOgclv+qhiv5nn/JgjVnVfFrqMLKZgIMFhIokF9Y7cxXSKfT0jfOsctz9Kz5/mVdaC/uRWnPduo1b39Ax/cSWuz9rieVxPGMYM7gG5lX3sSVNlhQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAZVJREFUSA3tk0srRVEUx69XRAxEMpYo8krKkAEjg/sFTEx9DwOfga8g+QZSHqXEQHkr8hh55f36/dxzdOice3WjFP/63b332uuutdfa+6RS//qTHSjIUrV7PdABjYHfJuMKLAbrLw1JSbQPQRqKoBDUMzzBFMzAC+SUAeLUi3EYrmEOpmEhWNcxtsMxHEBOFcd4WEU3uGdgT3wHnnoHrGYQ9LFtrrMqbEPUySRN4LgEl3ADt8FcW+jDNLeSKgmTW8FjJIz3YTKlj7TACHzWBIY1jWGwzw62RXWCp45Km9rODG+BDBj1m2T9lkCfuIs3cQX4dGuhBM6hEvqgH9yfhQ3wrk7hELrABKvwrmj20KjNgGkYANtlm5SHssX67MMYXECoNiYfErgRV4l2A+/BGRiwCkzkxzgP1VAPzbAM96BOMsPHXwMkyROXQymEp39g7gFMMgo1sAvj4CuMVVIlOvv+PaHPV66C0dfleh1awYq24Ai+VXagDBrAe7PibF1hOz8Z1FaaIOlTyC9yzL9+pIKYPL/A9AoeHk3/hvvtQQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSearchField/CPSearchFieldSearch.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAB3WlDQ1BJQ0MgUHJvZmlsZQAAeAGtksFLG0EUxr9NEBWLlaKe9yBiIbZr1oBeJEZtkeYQYopVeomzaxJw12V3jQoe/Bs8CIVSKBXppfRo6SnQS3vwIGJr2/9CwYvI9psd0vTQ4MUHb/c3337zZubNAsl82fPWEgAcN/SLT3P6i6VlvfMnNPThPgbwuCwCb7pQyNPSJq6+0804HZW12pjayb0+FwS0FA39FcVZySuKS5I3Qy+kpypZVMsWeYec8kvFGfJ7cm9F8SfJK4q/Sq6Lipx7TjZcq+YCiS7yhGUHgpwlCysQDvmA/NJx1lk/ScSI8HzOTY6Qh2RfpAjUL4CpN/TvtbSlj8CHHDBw3dKGx7ndDPD5VUu7PI97pQ12BatmOi6n9RwBHftRdLkIdD4Ebn5E0fVRFN0ccu1fQONKbPj12MuDaMfc8C1jdWZVHTjhGRjxHf2fVV9ilwG8awDcCp7tAq+zwDAHD34DBXIpi4RpNlP1kFagOzdmpA0zIyfeaThrG7ynODr4vGe7zxf47mPmV/0nxSZb9uxck+1g7q+nFs6XmjpyGIOBNNNEBovqrvkV4xPs/RnhW+NL/a1U/o3Q3op7OLPubfu1SjXUp/mn2yl93hWPUnraMCbxB2AbgwprTB4MAAAACXBIWXMAAAsTAAALEwEAmpwYAAABc0lEQVRIDe2TSytFURiGj0tyLxIxlaIUA8WUwkz5A36BPyI/RvgDBsqlTEwU4gzUGcstd8+Tteqotfc+nciAt57zrb3Wt7613m/vUyr96092oCHHtWvTMAEjIe+UeAwH8B7mCkPeIUvsXoYmaAyV3oivsAHbUNNBFkhphskVuIdd2IT98DxA1F0FrqBQzYkMbz0Frll4C55AXYBuFsGcw/BMyFZsQ3WGLRwFo72/hYeAY+diDsNipZxYIB6uA99B7P0L4+jKHHMLFYtVJ1rQtqjJz/DlN86ZU9MhqRfvxg6wWD/o9ga6YBbmwPUdOIPokmFaqZvorhP8fBfAFtky5aU81H1lWINryFXKiTezaBksYMFucM6b70EvDMEYHMEjZCrlJCZ7AdvSCo7NfQYP64FV6INLWAdbmlTKSUzUkUX9fP1T3oVx/JxPeB6HQTiHCnyrdKXDYZiHdsjrCsv1yaIt0Aapv0J9VTN2/YiDjLN+efoDgZRGxg70NQUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyBottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAARCAYAAAAcw8YSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCFtj+P//PwMDmQQQ2IAIDRAhASJ4QAQLAM+wJGk6yEDYAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKtJREFUOMu10r0OwjAMRtFrCIiBgYGBgYkn5mERtOmPWWwpShNEI7BkdfLR59QBCMABOAIn4AxcgKuq3vmiAj+ovyBqPVuvQrQAjC1JHJgMGNYgpQQD0Lesk6bogVcrMgIR6IBnyzqTrREtxWNtkjlBOmALbFof1teRlmNLEQdURG7A3jpYe0qpIenN+J/aZcMOSL4OH5CYDC+A2sX6VwySrKkhmmFkCKVhrzeOxUzF8ZZO7wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyBottomRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALFJREFUOMu9k8sOhCAMRSHhs/yo+ehZuHBhDKP4wE4nKZlaMFoWkpxgeJzcgjgAMHeatfaF3RtpkQ7pEY8Ed8tw0R6X7AQQVZKtIAKtZCVRZCJ1kpmJDok0kolEWRqNZEQCsrA0aomnNAuVFWvKGViaJNlrkoyFcsDhm2jYQqDJSAs32vTjw76zM+mEJIm4bDX/6y3eTi9iS1GSRTF2+E98QcJlXCrHTEoSTg4STsTZ/BcCN3bqE4blmQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAABCAYAAAA4u0VhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCB1jYGBgYAFiHiCWAGINILYB4hAgLvj//z8DMRgAsZ0fM9irjXgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAABCAYAAAA4u0VhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUCFtj+P//PwMxGAgKgDgEiG2AWAOIJYCYB4hZANHCHzOD2AJlAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyTop.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAARCAYAAAAcw8YSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUCB1jYGBgYAFiBh4QIQEiNECEDcP///8ZyCQAal8kaTS8tF4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyTopLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJVJREFUOMutkgEKgDAIRbdmbY3o/nfrMGuBhjODlIQPw/D1rEEYKyrn+PL8LlAGeCal94CBeMskkjC8FzVIFICE/SszBgRsAIGwSDi0YAo7g4C9QgAHck9trR3hQ8l1CFJ7ti8AbsJXKQjZLRAy4d9j9ZjIdcjGBaHfm9HGvA7dAbof2Wqi2cyedTQjs0lQQC6Iq36BnNGBBaWEiui/AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewHeavyTopRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALBJREFUOMulkWEOgjAMRjscgoYYf3gF738Jr2SCiqsbaUlTC7GzyQuD0MfXEgEggl1onK1ns6BfaUZFUvfL+0UyGBJuYt5EUiAnOW8ISuOUeRETwZVYclES2Vx4EiNdg/5oRMQb/FAhhKsQyMSrf8aqQQh4R0UaPJKTMeos8yZ5EK3YjyvJMXPP7GkNDe/IIzlkOurZ1Uo6GoNTNDXjtFYKb5KvBDXjaAHUJNmM+Hd9AEI6RFQh0+dCAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightBottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAJCAYAAADzRkbkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUCFtj+P//PwMDggACdRDRByKiQIQOiOAHEYwAbGEKQz1zHVUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightBottomLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wUEOwUAUANA37S8JG7Fj5Qhu4KrOJyxEpJTpWHSW+l5ggwOOpZSzP8KkYDQjUJAxmBHIeOORUtphiQ6NKpDR44YT9thipQpkPHExuWONhSqQ0ZsMuKJDqwqM+CDjhRYNkipQkJHx9ccPCKMfJ5j/ZGcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightBottomRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHBJREFUGBl1wTsKAjEUAMAJvLt4LTsvayEeQAQbbRTEZd1PEgWLCLozUWv1T0ppjR2OYVlB9RaWDciokVJaaQomjHhgQA5sfFT0uOKMA3rkwFYzosMNF3SYA3tNxoQeHZ4ogZOmoiBjRkEJ3P2qvrwAKV0tKePvXOUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCB1jYGBgEABiAyBO+P//PwM2DAD6GxKPgLbV2gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCFtj+P//PwM2DAQJQGwAxAIAxNISj3z8C1sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightTop.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAJCAYAAADzRkbkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1jYGBgYARiBgEQoQMieBn+///PgI0AAMt5Dzxv9Xo9AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightTopLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUGBl1wbENwjAQAMD7f8sYlCoN+w9GyRxOgRuk+C78CzcCgUShoZAIS0OiY+CFgY6yNBQGTnyRSISloeHAe875cSNReOK0kUh0HDYSgcLDRvoJhI0L53oFmk+kBA4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPShadowView/CPShadowViewLightTopRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBJREFUGBl1wbEKwjAUAMB7aVAExUFw0f//vC6i1GASHYQuzV0gbOv+Ms5WHQ0VH1S0jLtVRcGCFxaUwMmqo6HhhhnP3Ht/2BARVxS8k7ELDpiSsSN2SMnYHhMiGQuEny/9fRhMYHBh/AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSplitView/CPSplitViewHorizontal.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAAKCAIAAAD+RXMgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCFtjWgoDTKEwwPQPBpj+wgDTHxhAYmGTRYgdggEAPLVN4i1E+ZUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPSplitView/CPSplitViewVertical.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAoAAAADCAIAAAAlXwkiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCB1jXLp0qY2NDRMTEzMzMwsLC4SEMNauXctIkTQAwg4O0avWgU8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelBackgroundCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAYAAACaV7S8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUCB1jWr169X8mZ2dnBqZ///5Bif///zMw/f37F1kMLIsQA7MQXDQdRkZGjADPODEixZK7iAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelBackgroundLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAASCAYAAAB4i6/FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUGFdtUEsKQyEMTCBuBXe9gDvXPU+37xKFXkev6Oc5QoJtHYjiTDJJ5DEGlVJeRHTNeDIzgZOc8zuE8IkxkveeTGitXSklcs4tovdOgMzHQ0QWiQBQJchQArdZ4Zh2S9ghtdblq9kmgDwKsEGARIKKS9ARd5gV8DUumh+n2psDtgfIYwXI/TtM0Iq/PU5TAfxrobgByk2US+DqkeEAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelBackgroundRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAASCAYAAAB4i6/FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJNJREFUGFd9j8ENwyAMRe0qHLl3CNZhiEzRMXrtnU26AjOAxADg5KMa0QjlScGCh38MhxCEfojI9yxv7/2HU0rCzF2UUijGSDnn16O1RvhqrWStJecc9vt2tiNCo8gYg/ocQuM0YUMEDrFRupgPFFxeihEF9B+gd8xT/QksOpXWIa4MMd8Gy3FH1EosO8Ct4OsblAPXUJQLU51iKwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelSelectedCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAIAAAAVNSPrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUCFtjys/PZwoKCmJiZGRkAgFmZmY4jQ0jyyEBAK7qAuAYeB3qAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelSelectedLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAASCAYAAACeomSBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUCFuljbENwCAQAy27ov49aJnvB6FkrWcPmk9FFKQoTcrzST5mJsYY6e7J3nvOOVFrBSMCrTWYGbjWQikFJEGSkARJoKS9vpjfcF8f5ug86h9wATADFmAXDSbCAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelSelectedRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAMAAAASCAYAAACeomSBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFdJREFUCFuVjbENwCAQA637ipo9aJmPQShZC/ag+RSIAhFFSnk+y6aU4q01d3eRUtIYQ7VWJ8aonLN67wJQCEFzTmFmMjMBywArOMyGw/yB1+n7Z9e+4QHvjBZgBg89KgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelsViewCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAaCAIAAAD5ZqGGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUCFtjvnDhAnNmZiZzRkYGHOPio9MwNoyfnp7OnJaWxpyUlATGcXFxzLGxscxWVlYA/CwgVtHWuDgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelsViewLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAaCAYAAACD+r1hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAORJREFUOMuNUcENwzAItNv8K+WbAbJEv92s367Vf7JCvhkhdgpVziKY2EZCNvYdcNDt++60zfPs+N17P1D4ofuTzoFi1znDjiQjnV8C9QzkN3aTcNibvEfAJDaTcHy+UA0Vai09kFXqLFXI7pcaZBuadCkaJF25NKWsUpMGTSpN6UQG6bIluV3EVQ3NY5Wb1dMqarBI1ZZ0xaaWqlOyFpb2oNcPm6apSYO3hMO1Bi9PScAZY0wECf47fyIr7hCdgfEG4Em0Ab6xb9uWsjIRCbSGRAAwhJBIcg8nMPl9WRa3rmu20B+QCNBalqdZ1QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/_CPTabLabelsViewRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAaCAYAAACD+r1hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPVJREFUOMuVUrERgzAMtI3KVKHMELBAShZIk0FYIaNlAZowQbYAJzJn+WRjKeHvfBLwr5dkYJqmD8Ig3tbaJ8Yx5PGd6brOcAB9QFwwv2McUHjF8zIVAH9AUghnPA88t6ogkjKg02AEQCRQdcpPlIstcZEGqFRXxccdeMXS7a+1EvFQS9ocwNspXdS1Sq2JgpIkibIt8Q2JM2jbUWeotVSdQRpObYkTqEDf978dijl4+USCdV2zG2YulpEtiTaBcy4bNEbHKicReO93/1HTNGVLSQTLsmQOlCOCyseTRFtLwYXfdIRjlVOEeZ53q2vblhyI6GmGL+DHprPdSa8DAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBackgroundCenter.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1jeP36NQAFhgLCPZRjjwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBorder.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1jmD59OgADjgHGSFRdpwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBorderLeft.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCFtjZGBgYIZiVihmB+Hp06c/BAAH7ALGIwf97gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPTabView/CPTabViewBezelBorderRight.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUCFtjnD59+v/MzEx5BgaGn1D8G4r/AgCTpQkFeqUzkQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPToolbarItem/CPToolbarItemSeparator0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAaCAYAAACdM43SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEBJREFUCJl1j4EKADAEBRmb//9im9VTmim6TsIgInZ3GQEnL0QqYP5hRRFAMdabvpXj9pi6qxjFzXlq/SKCYXgDF+AD5ACr1RsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPToolbarItem/CPToolbarItemSeparator1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAYAAAD0In+KAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABFJREFUCB1jZGBgMP7//78vAApVA38fKzIUAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPToolbarItem/CPToolbarItemSeparator2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAaCAYAAACdM43SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUCFtjYmBgMP7//38DEwME/Acx/iMz/mJn/APi3wQYf4H4F0zkJ4rIX5gISVL/kNWgiqDY/gfm1D9wEQDwSTQ2I/IFQAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUOMut0ksOgCAMBFAHem1WHBwTVrXpDJ9o0gBKn4MRY4znzwunDb33ObbWcAvij4S47cFmA8QauxtZIxv1mxZANp9rHKRh9dmHBZaBReEMjFBJ5imMzSN6xFeEt74VwyJME0bMg9XdqxkKklKlqq6WYJaOYRGWYHZMDxhJKsFCQHOguWezT/1zKp0lKSWYJbQFOIO8L0oHneBhzz8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAATCAYAAABRC2cZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACVJREFUCJlj+P//PwMIMDKBSBDBxATjglnMqAQLnEDjsmBRzAgAI2YDUG/9aHsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUOMutklEOgCAMQ0fh2vxxb4yJmrG0QNQl/ZNnuw69d/tLSGRaa/ZGMDK11qRkk8GlJCR/pGDJQbfBDAoCggBJqIdlAlVgCfXOshOLrKCDu/OjEmBZuKSg6CwvgLMyBnfMGWweWTZ8w0qArmIacxeXvxuTwkFcqVPBxN0A+1KCbLMsIHRXamewdUR2b8/R7jyWbmKbO21JN34Oq/BktCvK5iYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUCFtjZGBgYGSAAEYoZkLDzGiYBQ0zI6llBAAGtQAx0/UgogAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA1JREFUCB1jYGBgMAAAADUAMcUHJsAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABMAAAABCAYAAAA8TpVcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUCFtjZGBg0Afif1D8F4r/oOG/SPgfGv4PwwB88RIDhNxONQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKRJREFUOMulklEOwyAMQ+O21+aLi0/t6JQZJ6QbUgRK8esDATODvQdGbVT7mI+xPlztrs49QAAEwXzwMRCBIQPv9f3tymXAlSXbpYbqLhk6HVcBTRhmUN//AK1gycfffgWubL9gEdAeQEHACeRh6m0iAIWGyjJ6UqokqHIFED80b8jACGoZLINUracMA6q98GQqnPWXmSxYgf+3+Ry992turcnsC77uBJ8gKQLbAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAYAAACaV7S8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCFtjYmBgMGACEv9BxF9U4g8qgSaGpvgf3BQwiwEAxvcQJujA9GgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/CPWindowShadow8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABMAAAASCAYAAAC5DOVpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUOMuVk0kOxCAMBPvg98wn+XaMc4mRx/EWpBaLoFTEhAD8AAiADYCfXC5sovv0jGjITpIgGNv+NDL07eKBIcCukVOukhmfXmG6mQeA1JKeD+zN2IGlAb9gX66KDMYNbFLt0My+na6yYTUvs+gNBbVdek3gbddBznitJRls+he0ZhhC/qwsDAEMHSQy21l1JhC1Ulj1EFMLC6nMyhZBLOzTgardIdHIhbP7OXcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindowResizeIndicator.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF9JREFUKJFj+P//PwOx2NjYOJIkxUDalSTFQMxPkmIQnyTF0tLSASQpBtLOJCkGYlmSFGP4gZBiBQWFIJIUw+OBWMVALMkABHZAhg1MMQcHhxeQtoMp5uLi8obyJUF8ACitf5AUaj8yAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/empty.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABBJREFUeNpi+P//PwNAgAEACPwC/tuiTRYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/FIXME_ImageShadow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdNJREFUeNrt3EFPwkAQhuHdpYB403jx//89Y9SIiNAus8msTGtbjCFe5p3kS1tSDn0y3Wwv0+ScA/X3aiC4EmCMsZxvJGtJ0kQTr5VNOkkr+ZLs5O092g4seA+Se0VcShYa74CtgdtLniVPkncLuJLcSR4lt5Ibg5icItquO5Suk2z1t7fhGpj0eq14GwVsHL/G9dU9aiPV82rSA4x609Jkpfckc48nvKDdVp+/4i3GAGsX1nWvMfHcgRWvNTZpqgNr0sTR6xqYBjuTyX1gHNm6eN/KxJFj/O1GOl649rAGzj4/XyJ8ygEIIIAUgAACCCAFIIAAAkgBCCCAAFIAAggggBSAAAIIIAUggAACSAEIIIAAUgACCCCAFIAAAgggBSCAAAIIIAUggAACSAEIIIAAUgACCCCA1PUA84Vrb5UvAeZBwuDcI1ge4PU8mgm8LvRHv5Wj5wmWnUme68A6L7TkGM7DB5Pj17ZTi9bkG3LYgXXYaslCf28DAxjrBN+DwfwB2OkNewWzw1e9z1CtjfWpOYwBVuUP07Z24KrnNbAuaQVvp07tELCovugfVgbPY/fNdWHBe9XzHuBeAbeBMfBhZnvXmqXuDFjmwmubUnzK/V+dAO2XkLvQMyBAAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/GenericFile.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFW0lEQVR4Ae2bPUhsRxTHZ11X12/UKCpEiDba+dWksbFPLeneexYpgggvXUACNkEwsX+VH4UQsBBSCmktg00I8gKKnU8xUfzY1c353ezxLebtvWfXe90vB45z986ZmXP+5z9n5q53Yy64xEQlLtKQrYN7PE3jTrrfiFBHXuoNM2S2t7e/mpyc/P7i4qLOoG9WyWQyLp1Ou1QqlSvp09PT3/f29n5ZWVn5TQYDjMhKEABEP3F9fT3c29s70draGroh9/f3D87f3t66m5sb19XVNdXT0/P1yMjIu6WlpR8ODw/PQp84O2AQAKglz8/PkxiGRFHu7u4cQMAIZUV9fX3T8PDw/OLiYvPc3Nx3Mu95FHNbKB0XilqAKtq+eDzuEHHaJRIJTxgMRgwODs6tra39JB87ip7Ap6MFAJ/u4TWp89QIgMCGy8tLNzo6+np9fT0SEMwAxGIxF7XgtDIAEOrq6pzkHy9RTk1NRQKCGYDwYu0/Uu5SAADyw9XVlWtra3Pj4+Ohg2AGIOro6/g4rcuAmvsKQEdHhweC5ISfBcZQcoIJAIlKRg2MuoYfgKBMoAaA5uZmBwDIxMTEq7BAMAHgT9pwWxVgZQIAcFCi5hzS3t7uCSBsbGw8mQllBQDOa1EgWAZ6RgAUQIAFADE2NvZkEMwAqEFR1jjP+DiqovPBAAo1AHR3d7vOzk5ywqvNzc2it8hIDziexQX8wVktuY7DgP39fe9cwDZJaWho8EBqaWkhJ7ze2trKzM7OvpWmgk6MZgDUIG/2CP9w+NG5iDYO88C0s7Pj5EjuXaOTTCYdzsOG/v5+19fX90Zygpufn397dnZmBsG0BISOz7YLqPMsAQAg0k1NTTwgOXlA8mgP9dkV0OWgdHx87A4ODjgrvFleXv5R4tMi8pFOPgEzM8BnjFCbFACNPpHmEETUGxsbPQaoDjVAkSjRhykDAwPfrK6uvl9YWFgVw9IiGT8Dyw4AjMUxjT40JwfABB6OcpcIevpZ+7FkhoaGvp2Zmfl1d3f3D7n/dADEmIclwERRFpyiAAARpxBhgOBYjMO6Q9CmW2TuI7X0G5yenv5SAPgTFfTyFTMDMEyNyzdYWPdxUOfjmuhDby3aRg0gOE87wnXWzs9EHwQ/dtQBcuqyBEDtgwUAQJSVDdqWddL7CAicFgGAOssQ/Q4TSuVdBmYAdOLnqNU5jTAOPS7apvcBCwAUNMkFOP7/jtohW5sAwAAmVMMejRHJx9y5iPCnSq4O7WojOQPhFn/8igkABlAQ/AaLqu2xo/nmyVLfcz7LgHyqD/cDKYKmGPDpEDwMUz4XgMBWmGVAoGFmBii9AkcsAwWcFyAC6Y+pJgaUgU8FmUCwBAQTa00M0PVvXYsFWRuBctZOEwNMAGBjJS2BQgJlBkBBiCBgJR2yKnNAIYhWLQCSt8JNgqBKMqyUYrW1cjyKCPmXJBgRsCUfVrbC8HNAIftrqRF4yQHGCNR8DjABoHtqJS0BIwGq82nQ6jx6NX8OqHkArDnAY1Ul5YCa3wZDPQhpUqkkBqjNQXXN54CaB8CUBJVGL0tAkaiiuuaXwAsAVcTmolyxMIDXY0zfrhRlQYk7WQAosYnRTl+1AOh3GEHwmc4B+mBRSecAtTkIgKplQJDj2m4CQCJv0tNBy6G22mxZApkPUo6Ojv6SV9AS8sKS6f/upQKBHUtekUmdnJx8EBt8X5LExiBnaOfnop+LfCHCy4f/vbgvF2Va+M0xzr8XORK5EMm7jQcBIH0dL+i3ibSL8OZluS8Hos5PXP8W+UckJZK3WABAB6eJvEU/72TP2EDEYQJg5I3+M9pTvlP9C04LfFSu/LkzAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUDTheme/WindowClose.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzZENjA2MTc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzZENjA2MDc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0eKROgAAAlxJREFUeNq0lM2LUmEUxr3qpDg2w5hfGTONobaoUYkICZnBFiGtyiaImZ1/gZtcuInoD3Dvol07Wyu6ioRahUJtLJJyIePXojTN1NvzyLkiFcymLvy4556P5z3ve+69iqqqun9xKf9VKBQKrdfr9fvT6fQq2KHPaDR+Ae8CgcCLWq02PE1IcTqd4X6/n5zNZnz+Cn5IzAQ2DAaDzmazPWu321U8q38TUlwu100kHMM+AV3wDfyU+Bo4C+zgvMPheI7ciiam11Ti8fhWt9u9C/MT+Ag+g5aInohN3wfGe73evUQiYVvuhR0BPbZEkUfgAbhdrVbVYrH40mKx7JNSqfSKPsbAIXPtdvtD1lLDKHrG4XB4UVblllR0997tdu/n8/nHTMBCUfrkzJhjGo1GbtaCibY1A6Yzx70vBzw6Ojp60mw233o8nluENn2IjeXs+pPJZCpCy470iqJwpGS0GJHJ1MWEZtoR0KZPRHh9F/SrU1tH63c6nU4TdoeOSqWSt1qt4Uaj8YbPXq83MhgMqtFo9FCEMDjHNiZXgD3QtqYGg0GupgC2q1Ck1Wq9TiaTTwlt+iRn8Ur4/f4ebvPVqZ0pl8s7SDyA6xIbADdABASEiPh2GTebzQeFQmGXtYtdaeMHG5lM5hqS9sAFwQW2BNeKfy+dTl9HzaY2fk2IrAF7LpcL+3y+K1K4yfMTaLsYy2azYeQ6tG5+F+LBm8A5jNqXSqXCsVjsMoq3CW36GOOCkqto9X98tPJKmKULs3xjOjngsbwiYxmKetr/SC+CxpXvcS7F0+WkVq5fAgwAsK9LC3k6I+YAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUDTheme/WindowCloseActive.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzZENjA2OTc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzZENjA2ODc5QzMxMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ehr59QAAAxVJREFUeNqsVEtLG2EUnVdeJiYmJDG2kgS0TUkUobiToghCXdUSspAqdutj51ZXunUndluQ0oV2U7rISukPsCA2GGktMaYk1DTvSTLJzKTnykzQrh345pu5r7n3nPMN2+l0mIe4OOaBLoFup6en+jtLa2try3Z0dBRttVqRdrvtJ4fBYEgbjcbE9PT0p83NzRpMHW0xY2NjDEujaYVYi8UixGKx5+l0+i3P8xwSaxzHtcipqqoRhW2Koqh+v//9wcHBt0ajIVOxe4X6+vr42dnZF7lc7o3NZiu4XK4KbBI6UagQOuNLpZKpUCjYa7Wau7+//0M8Hv8Km0KFBH2mjY0NF4rM9fb2Xg8ODpYDgYDqdrt5s9lM4zLNZlPO5/PS1dVVNZPJiNlsdm57e/v72tran9txNNa4YDD4GsHhoaGhGyxmfX39XaVSSZ6fn3+mgHA4/AofCe3s7CxfXl52sLwY/Rdg+EiT6x0JoigGnE7njc/nq3k8Hifa/22325+NjIyYKcBqtQbJ5vV6KbaI7hiM6dMIa+n087IsqyaTqYhkEUs5OTn5gsQsFdCK5MiGrlT46xi5BPBlnXm9I5DDiWi1jiQFYNeRUGVZtqtWPKtkA+gUIwmCIMNW17XYFSQFwSmhWBN7IxKJxJDwCDhlaNEz2cinxUhgtXpPkKQFYJFPpVKMJEn1YrEoYsxAuVz+cXZ2FqeA0dHRlw6H4wn5AEMdOFmHh4f/EtB3WTMeHx8/Xl1dfQrnDajvgT2ALq0DAwMNCgDdlmq1KgKCFOhvJBIJz+7u7s+ZmZlrAlvvSJ6YmCguLi6WDw8PjShQAnsSdk4XJJ55gKtCaw1oybawsFCdnJwsUG63I1J2KBQy4t0F6fv39/cVJJahrTYUflsIVPMY3YCuHNFolF9aWroG2IVkMindUzbobOOLpfn5eWVqasq1t7fnuLi4aKIwMcOMj4/34GPmlZWVGsYt4uxVAHqry+qdQ0unmNUIIBFatd2gxbbppGCJ2i4jr3v6hbv/FM3RhoPGkbSiukRUDQ8qoP7/P/onwAD1HZ96Rg2qRQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/minus_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAECAIAAADXmFKkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUeNpiYKAHYPz//z9+FQABBgBgSgL/1o3U+QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/plus_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAMCAYAAAC0qUeeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpi/P//PwMyYGRkhAsA5RiR5ZgYSAC0Uwxy0/+BdwYLlqBjQAo6VMVQdyOD/2h+ooeb0QXQ3YkMAAIMAKADEhQiIamgAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUWMPtl1EKwCAMQ3OeHc+7+539TNC6QZWWfMxBYCjSh6YRQRJK4QDYgVIKe6UD2IJPUZLk21y00BdsRd/+M74BoAKswATQxqN1ACYAqQekXSDPgdUF0YDY2bbII8Kq0SJNOgBchEsWwLvO6gB8BpHEA9IukOdAVsJ5QZGZ856jQtaN5zHrAADEygLY+QOwHUQpHpB2gTwHfv84vQHcG1BmjzmkMgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider_button_h.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ5JREFUWMPtl1EKgCAQROci3cl79rcXtAwE3YysdpmPVngQSvjAcSLknMEEIaBHSim3wHvoDQsicjBaswbthnXT0bMHncC6x6GgBeq8NSFwEqBmgHoL6D3wtTdciugOyyPC06BZhrQTWARTaIHZ9zQhcFlElAxQbwG9B+iF5dnzM0cFry/eTFg7AcAWLaDXQ+B1EblkgHoL6D3w+5/TDQIL6kKVaIANAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/standardApplicationIcon.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAM31JREFUeNrsXQd4VFXaPpmZJNPLnTs1jRIUERtiaCoEWKQoJaEJJIqhBsVC1RWxrO6669pd3fq77q6666pr76hIh5BAQgglkAbpCSQZAqTMf8+dc29uJpGamTPle/N8j5MhJmfOPefrJcLtdiMAABCeiAAGAAAAAwAAAMAAAAAAMAAAAAAMAAAAAAMAAADAAAAAADAAAAAADOCC/0BEBOwyAOAD9MTdpc4AfvfRVniSgYVeHBXBNvgHq6YMo8oAZPAIABIYOcoh/wWEARSwBWEvgSIk2tgD/eIchkOl5Q9w7z8heR8cRSEK0AAAwjmQcyrl/GgDg79/4P7n/88M5wMYgB/gBqJERPrjM6B46p2v73FY2XhFZBSyW8wG1hGTQjREmefnYL98Q2FuAkAUkjrkHEVFKdWPmsxm/g0DY0ZRlVWPci/fIT9zFp4TaACAEMLqqcMjyOWPXPWHd6fZWCYuWqXmpZJKrUb4+5WvviNoAXLy8wBgAIBQk/5GszXTaGY7/QP+3mSxLeVeRpOfAwADAISQ9Ocdf8t+88fRNqtliEaj62Sa4u/x+9y/Jwu+ANACgAEAQkz6O3v3W8WybLc/wDAMssTEz8FmAmgBwAAAoSX9FamZa/vpDYYhar2xW/+01sggs8Wagn9O0AJgB4EB9DAgFEQh7ISfe9Q1w0eusbLmcz4du5VFVyeNwL6AqA4zAPYRwoA9df0hvORvYA1AMXP5o33NZkuqyWI75w9rjWak0hlnjJg049ebP3vvDPdWG/fM4KmBBgAINqyZNkJQ/6OuumnEwzYre14JJZfLUK84p3bktLmZxBcgI78HAAwAEIzSn5PmVqVae5vOZL6g/wknBmkNxpnIExJUkN8DAAYACELpH4mleUKsUyuXyS/ITFUoolCsw+5c+erbaaAFAAMABLH0Hzl1jlXPmDNMrOWiXFV8YpDVsRB5nIEQEgQG0FMAT7CvSSr9h02YlhbvtOtk8ovz/+I0YSvL9F/y9GtCYpDc83thfyEKcDnXH/zJ/gKf+KMzsQs5uqRfwJgtyJ7QdzH38juOWpAnIgAADQAQqFibcrNY9LPy1XfS45wOZ1R09CX9Lq3BiEyMeey0xSshMQgYACDIpH80Y3OuMPIlv5eusuLQ4TXDk9cQX4CMMBgAMABAgEp/Pu33/uffnGK3mmOilGre7LpUMpqtyGBiUoZNSLEiCAkCAwAEh+1vtscuNjJsj/xCu9WCklPTcHpwJGgBwY0AcAKCF8kXeDj1FlH6L3nm9dF2K5uk1up65HcbzBZcKJTBvXyGo7MctbvhQYIGAAhM6W+L673EbLH0nNRQKJDTZtU9+NI/0gUtgDAcADAAQAA9W0XKktX9GIYZq9H3bKt/nB5stsc8hCAxCBgAIGDV/6irh41cY7WwvKnVk6RUqZHDZnHe99zfphItQA5aADAAQGCAT/udcd8jfVnWkmpkrT75I9ipyDrjFoEWAAzgMgDpoD1JEukfeeWgoZmekl/fADsVWcaUdNcjzw4iDID4AuA5QCrwhV5/8B37RPoPnzjdptLqZ+CGHr4Ep2GguH5X45DgLo5aER8RgIcAGgDA73hk+q2i9L916p2ZCbExOplc7lP5pWPMiLVYUqYtWSWkB4MfABgAgKL0l98y5U6rzmTOMJotftFibVYLumrwzUJikJwwIgAwAAAF6R81ePSkKThOj6W/PzgA7h6s1htmcGYHpAcDA7hoLwBQzzmT+MQfxmZfoTcxfnuCco7RxMfYtcMnpc4jWoDMw5DguYAT8HzXHxxGl41fzhgplvw++PI/+ZJflVrj1zXoTSzSM5YF3MtXkJgeDN2DQQMA+E0Q89Lf6lxhYFi/y7HI6GgUF+NwcgxI7BtIGBMAGADAx9KfT/td/KvXklnGxJf80tBm9QYGawGzESQGAQMA+F/623slrjZdZsOPyyGlRoNLhZMWPvmKOFAUtIDABpQDBzEenTlKlP6Lnnp1NL58OoOR6prMLIts8X2kfQPb4RmDBgDwsfS34pJflqXu08aDRnH14eSFD0HfQGAAAD88P8XUxSv5kl+13hgQi7JaLWjg0FFi30CiqQCAAQB8oP5HXj3k1jX40gVKaFtnNCOlRjtuyG3TIDEIGMB5vQBAl5ZAwhf9pC5bm8ip/ql82m+ArA0PFE3gB4rOEfsGehgWPDdIBPK+/uAfumism5UsSv8+A2+cxxLbP5Bg5PsGmr36BkJiEGgAgJ6Ap+R30gy+6OdCp/z69WDJcd9Ai275838XE4MI4wIAAwD0hPQfcfvMZb3jYnQKPOcvALVbPceY8DASBIlBwADAB9Cjtj8/6UdnYjL0DBuwhwvXI1jMJmfG+hdGEy1A7mFg8BzBBwA+gIvGY7NHiyW/97/wVprDatFF8A0/AncTcd9AR58rVyIYKAoaAKBHwCf+GC32lXrGHPCL1RmNiDWbk+ateUbsG0gYGQAYAOAipT9f8stJ//T4GP+X/F4qLBYWxSYOWAq+AGAA4APogYYfBtayyIA9/0GydJwYxFrYlCkd6cHgBwgQHwB1BnA5k2rDhR6bPUYs+lnwxMvJFpbtH6lS8bZ/sHxxa0aJ1yfNFZyB+DPBswUNAHCRtr8toe9qhmWDbvFaTmPBiUFDx8NYcTABABeM9Xd2kv6jHTZrkjZAin4uBnigaKzDqh085vbJhAHIyGcD0HwugeEDAFyI9Dc7Y+eYGCZoQ6c6I4sYuxMPFP078qQHt8HzBx8A0LltRD7td8qilYlmsyVFY2CC9rAp1WqEG5be9/s3cXowHxFYf+fYCPABgAkA6AaPzxkrhv76Dx6x1m4LnIq/SyWd0YR0DAt9A0EDAFwAeOk/dclqvuRXb7YG/QdSarTIbrMmZTz+0ijBF0AYHQB8AIAO6f8LScnvDfMsFnPIpE0zDIOwP4N7uQGRvoFwDsAHANSN7T90QqoVh8+0RjZkDh32Y2B/xqR77hf7BoIPAEwAAMETczuk//BJ0z0lvwr/zPnzF2F/Bm5lRnwBMvKZAcAAAEhS8qvWGWfiJJpQS4BV476Bar5voAVBYlA4MwDIB5eSRPpH3fvc39JinXanXBEZch9VLpOj+LgY7Yg7ZmQi0jHI89mhFiCsnIBQG94tSNGPfaXRzIbshzSYWKTSGmci6BsIJgAAoSfnjRNUf8Wy5/6WHh/rcEYpVSEr/eSRCn6gaOZv/yr2DSR7AAAGENbSP1pvYmdrjaaQV4ANZjMyWR3QNxB8AOFNRPLh5yGfv/6FZJvNkqRUaUP+o0dFq5GFNTnvXvf7ZKIFyD17AT4A8AGEqe1vi+uz2swP+ggP4L6B9oTEVciTGMQXCcG5ABMgbPBU2m1iye/sFU8Nxj30VHpDUDX8uJwvrcGIDAZD0sT5yxOJUJKRPQGACRA2aiAf+otNvHIpnvIbbltgsVjQgKSbxcSg8DkboAEAPEkwkXcseDDRzFpSAnHSj8/NANaK9EYmZfDYO6zEFwAaQDgwgHDP+X8qbbxY8nvFjcPX2qw2arKota2NJ1p/326zouG3zxITg/DeQC0AaADhIP0VN42bYtUbTKk6PvHH/9evtbUFZe/Y1ooJv6bSK4Bhkc7IZOC9QJAeDD6AUKdfpY+XFP3MyHTghh+UllNdWYlyNn5Vhqm2uprKGvCMwxiHVXtj8sTJghbg2SPwAfgKEAYMAOk/5LZpVo2BydAxdEJ/bZzaX1Zc1PrT/94uVev0iuETp/ey2R1U1oL7BhqtnfsGQkgQTICQw9N3TRCl/9CJ0zN7x8fq5AoFFRlUU1ONjubnVJ9qPNlcc7y0MW/7xvKamhoqa4lWq5HTbnVmPPnqFKIFyMleAYABhBz4tF+VVj9La2SoqaFY5f/hvTcLuG/OYNr+5QeFtdVV1NZjYMzIbI9ZhCA9GHwAoUhEovGe/6XP/jktLoZeyW9tdQ3K37mptPpYcQ33ThOmkoLciqIDeTVNjY1U1qTS6Pi+gXc9yqcH84lBnj0DHwD4AEJM+uvNtpV6hqV2FGo46b/9yw/3cS8bODpN3lbm7/ipsP/1N7EarY7KuoycFsDYY3DfQGGseDv4AsAECHo8c/dEseR3yW/+nJ4Q63RGKdVU1nKivh4VH8qvKsrPKea+reWoGvMEjuq3fPLvPWVFR1xnzpymsjaNwYRwUtTE+cvFvoFwesAECBWVj5f+OhMzW2MwUstCwXb+1k//k4V5gYQBVBEm0JC3ZcM+3hdAaX04MajfDUOEseIyD/MEEyCkGEA4Xf1n7p4klvymPfpcss1mS4pWa6msxXXKhSrLy1z7tv1wiDAA4fILDKB+2xfv7z1WVtpCKztQZWCQSqufMfgXk8W+gXD9Q00DCL/2b56S39jeqzkVl9q2Y89/1ref7OZeNuLLTi69QFgbONF0oq627MC+ktqaajpOErkc9YqL0w6dMF1MD/41ZqLAAcAHEGz49XxR+ivGpy+7wmAwJql0BiprOXv2LML2/aaP3tlDnH8nCNURZoDpJP63H/775lY+M5AScGGUWmfAfQOjEaQHgw8gFEp++9908xqLleXMXDcVwnb94T07DhHpf5Jc/pOEGQiEv2+sKC6sOHb0YGV9XR2VtcoUuG+g3bnomTfEvoEeZgoqQGj4AMJs0s/E+ffzJb8GSnP+WltbUVlJccuP77+1S8IA8H9xDoCLUJOUCWz99L2dtMwADANjQXqzdSGSJAZBNSCYAEGD39xzu9jr/4pBQ9fabPSGfGJ1fv/2jfmcfV8nkfqYAZxCnjyA0+S1wAQasKOw6niZ65TLRWXNkUoVslks/eeufVZIDJKTPQVcJmA4qH/AS3/c7CJapb5NpWeocf+62hq0e8OneRLp30CkPr74Z8laT5P3BHOgift/smIS+twap9ZQWbeJxX0D++C+gUJiUBsMFA0FEyDE6Tf33CEW/SRNSM2Mj4/TyuUyKqupqixHBdnbjnB2fTm5/IL630wufxu2EsjrU+TfeA1hz8av91dWHGuh1StArTMgvcGYNC49U0wMwnsLHoBgNwFC3/fnKfkdn2LVGpgMo5lu6O/H997c7mX744t+hlx8zADaiYQ9I9UCGutr6wq2/7SPZkQA9w3sf6NX30DgABAFCFR6NqND+t+QPDEtIdahQzI5ldXU19ehY0cOVlWWHKmQOvgkDKBd8kBayXunpMwia8OnudiEoDZEhO8baEwZNHqSpG8gcABwAgY2+MQfrZFZqDWaqbmb6zjJve2L93dILn8DcfSdFqT/mr9+7MYk0QI6+QIqOdPhQPa2wnqOCdD6HA67DQ2dmComBj2bMRmcgUHtAwjRsB85mHzJ74KnX0+Pi3E6FVHRVPYYe+/Ljh4+kb/th8Ju1H/B9peGpgQtQGAA4v+zb8v3+XW1tdTOi9bEIo3BfA+SJAZBGBA0gECW/tFGi32FUPJLq+NP7ubvciUX+aRE+vNTeVf/5WPv49hGtIBm8rONPAPY9sOhY0cL610cU6HxWXDXpBi7TZfx5GtiYtBvF4AWAD6AACJyIPm037vXvzjFabXEREarqCwHS/9jRYWuLZ+8myNR/5sktn+b5yc7/qfVf/lIMAMEX0CTxGxozNvybS6txqGYcHqw0Wp/CHXqGAQ+ADABAkut421/o8Wx2DPog1a7ryq0e8Nn2ZKQnlT68402Vv35I/fPfIY2oiE0S5hA4+aP380p45jK2bNnqHymaJUKOe02513rXphKtAD5bxdMiQATAEwA6vjdwimi9J+z9tnRDrstSanVUbn+La2tqLL8eMven74p8LL9XZLQX7fHEDMFCQOQ+gJ452Hh3l0HcXowLbmp55iqyeaEvoFgAgRsw48oa1yvVQye80cJNVWVqGAHn/Zb6yX9mzuk///c5/ksAhOQJgY1bPrfP7M8jUPpADNVlmWSUu97dBDZb5mH+YIJABoANek/VZT+t6Vn9jMYDEOUWiO1s4Uv6KaP3s5CXdN+zxAGcM4T6GEOYkhQMAN4PwBmKoV7swqrKyqofT6WtSJHnyuXghYAPoBAsuf4op9+Nwxfgw8orZHbOO33MHdBifTvLu23/UL2XxISFLQAMYlo4wf/2FbDMRlan1FtZPi+gePSxPTgCPABgAlAU53j034nzF/e18yaUw2UO/5s/OCt7V6hP6HiD1/o9pV/+tB9vs/k+RmeWXg7AxsqSwrLjx89VNnY0EDtc+LKysTrbloqOAOfWzQ1AkwAMAH8jucWTRNLfnsPvDHTZrNRO1O40reoYG9ZVUfab4Mk9Ccm/lwEpCFBqS+gae9PX+/1NA6l81lxZSXuG0jSg6FjEJgAdBt+4IOoVGtnKvUmaqox9s5nf/+5NO4vOP8Ez3/7ij9+6L5INdVbC+AZy+4Nn+2rKC1xuVxNVD6rTC5DcbEx2kFj7phHtAAZZsZgAoAG4Df8frEo/SNvum1aZu8EXPJLxyeF1fGigryq/ds3HvYK/TWjjsSfiwJmFqhzZmCnXgHZP3y2m2bHIJxnoTWaFxBnIGgB4AOgYvvLbxo31aoxmDJ0Znqhv9qaKoTV8m48/0Lor23FHz9wX6Kt2l1IsDF307f7q8qPteApwzSAayziY53Oe558VUwP9jBl8AGABuBz6Z8i2v4DR4yZgvPUIyIU1NJ+Kzl1nFP/81HXkt9Lsf0lWsAHP1cleBJHGorydh+uo5gerDexSMdYIDEIfAD00n71ZtsKLaeO0rL9cUhu9/efZ0ttdOSV+PPQGx+4L+OzCqaA0CxE1AK2ffH+LpohQYVSiawWtv+slb8SB4pi5gw+ADABfEbPL0kRS37nP/FKeq84pzNaRWfOH+72W82p4ds++88e1Lnm3yvt99I/70NvvC/1BZyWMhoccSg+kFt6or6O2kkycaYXG5OwGAVVkRCYAMEOXvobLJz0N7LUzlFNZSUq2LU5H3Ut+ZVI//fdPcSxW1HXxqGNOT98kUPTDFDrjMjEMGPHzlkEA0XBBPAtPb8kVUz7nbXqmWSWYWIUShWVs49n9x0rKWrZ8tE7u7qR/mcF6d+DKqt3rwCeAeDIw7Eier0CMFktNtRv0HCxbyB+TmACgAngK9WNl/6WmITVBoaltpa6mip0rHB/SdNJsehHavvzab8Pvv5fd0/8Lc/v6ZQY5JI6HPdt/T4XRyJo7YXaaEKcGTbuupHjJYlBYAKACdCDeGHpdIn0f3q002FL0uppFv1Uo03/+9c21H2v/1bU0fCzJyHtFdDhDPzsPznYF9Ha0kplL+QyOUqIj9cmjU8R0oNl5HkBwAToec8/Y49bglt905IfOAHnYM6OI1Xdd/vt0u+vJ+iBP/zX2xnYKTGoYNeWfdVVlfR6BZhZpNabMlAQ9A0EDSA41X9e+o+du7ifiTGNVWr11NbCd/z57pMc1H3DD77P/wN/eM/tI9W1u/qAxi0fv72rtrqS2p5EcFpAjMOmS3/sRTEx6MXM6RFgAoAJcNl4MXOGmPabeP3QNXzRDyXgkFtpYUFVcX5OsZfzTzrpxyfwMJUuiUH833edrK89kre7sI5yerCBta1AkBgEDKCHwRf9jEtflmhm2VStyUJNfcS2/66vPtyFOjft7JT2Sy6qL9U3qTNQ0EKasr/7NLuGWx+tvYlSqnFikHP6g0+MJlqAnDBvAPgALo2k0r/X1YMyrRSlP077rS4/5irYuekw6tzww2e2vzfd/9p73fUK4H0BRZxWUna4oNLV1Ehtj3Ardmt835UogMeKgwYQhA0/rh81wabUaGeo9CZ6tn9NFdrz4xe7vTz/nbr93v/af9x+2JP2brQA3hdwOGdbAR4lRmuPtHoDspiZpMlL14p9A19aNiMCfABgAlw0Xlo2U5T+N/5iSmbv+DidDM/5oyA1zp45i44XH3Ft//y/3mm/0kGf/jxd7d2HBN/Lxus8ffo0NQnLWKzI0bsf9A0EE6BHGn7wk35wiEnL0Cz5rUZHcrMOdSP9xbTf5a/+x+2PfcF/p5uQoLimgh0/5dGcKKwxMIgxW1JG37k4IPsGggYQBKr/y/eK0j8Kh5ZiHTZdhExBZbdaW1vQ8ZKjLVs/eXcXOmevf7+rsUKVYKchIlnffry3oqyYWq8ADKvVgnpdfd1cwRnoeZ5gAoAJcHHgE390ZstKDcWSXxz3P5i1Jd91ki+7E8d1SWz/tuWv/tuvJ4v8PcEXIJ0lyIcEjxceKME+C1p7puS0AA2ntV03agL0DQQT4OLo5XtniSW/aeteTE+IjXVGK9XUBEZdTS3as/GrPPTzab9uSqpsd+3Deea0+eO3t9ZW0asSVMgVKCE+TnvdyAnzCAOQ4ecKJgCYABeqonmkv8m8SGtiqO1UNd/rf8eR6tKj5aj7Xv9ttPb0vlfelYYEpb0CGrn1VpQcpNsrAPsCuGeH+wZGo4DqFQAmQMDilftmi0U/0x96MpmzJfsrolUU1f9qtOWjt7d72f5Sz387uYi0IJgBp5HXEJG9P361h6YZII+KQgmxMc60dS+kCREB8nzBBACc3/ZnYxJW444ztATFybo6VF50qKq6rKi7op8zyDcVf5eC7iYKNxzYtelQTfkxF05gotYwBPsCjMxsBCFB8AGcj6TSP/XBJ0c7bLYklc5IbZ9w6C/rm493oM5x/yaJ7d9278vvumnuGf77XlpAp4nCezd+nUUzJBit0iC71ZbEPc9Rgi8AP2fwAYAP4Jy2v8nqmGNgzNRWgjvsHC86fIKTooXdqP9Ubf+LmSi844v/5lSXl7W0tLZQW53RbEb4eaKA6RsIJkCggk/7HT1ncSLDsim89KckJuqqq9D+7RtzUdd+f6fJRWu/9+V33IGwaWQd3bUP57WAQ7u37qvjR4nR2Uv8HPHzHDUzA/oGggnQPb26/E4x9Nf7msFr7TY7tf3BNvOx4iOunV++Lx311SSx/dsQpdDfBYQEu50liEOZNIGfZ9/rh4p9A/HzBhMATADkXfQzZu4SvuRXbWIpdvypQrk/fZUtuURS6c+n/S576W13IO2fZz1dEoN4zQWHBAv37ijERUK0Vhitx30DVeOuHTnegqj3DQQTIKDw2v1zxKKfuCsHzrNY6I34xmm/uL9e/tbvC9A5034DEm7CoIQqQTEv4MDOTfvq62rohXXkcpSQEK8dNOb2TEQ6BpHnDiYAwCP9rxs10YqLfvD4aVq6NO71z9nMOO231kv6N3eW/oEHiRbQpUrwwK5Nh0sO5Fe5Ghuo7a3WaEZKrX4mkvQNBAZAxQfgDhiSSv/rkycu65MQp5MrFPTU/+pKtP3z97JQ17TfM4QBuANp/7yJMADpKDExPbhwz479NM0AmSISxTmdzjsf/l2aVAugsEegAQSY9Cclv8YMbPvTAk77LdqXU0ikf3dpv+1BsqfdJQY1Yqcm7hXQcvYstYXh7sEG1hrWfQOBARD84YG5YsnvnF8+lxbrsFOb8ssX/VRXo62fvitN+z1JPOpir//MF//lDuQ9JevrbpYgb8oU78s+WMuHBOnssSJKjaws65y2/LFkogXIyTkIGyhoL8AdWEeYFP1YVqqNnpJfGsCVviUH8spqOtJ+hay/Lv3+glALEH0B2Lzpe/2wgazNHokdczSgY1hkjum1inu5QdjbINrXUNAA6IetXn9wrhj3v/OR59IT4mKoTfnF4EN/m76Rxv0F559Y9LP0hX+6A7+S0o086xQTg5qlvgBs3pQfLSip40eJ0YFGb0RGgz7p1hnzE4lAlHnOA4QBww289NcYTLPVBhO1RTQ1nEQlB/OrDmVtPow6h/6aUUfiT7DBu1dAhxbw6b+31VGsD8BgrTbU97ohYmIQ+ADCSP6//uA8sehn6vL1yXabLSlSqaHmOa/hbOL8rd/vRV09/2Kv/yWcVA2mXspLOrSALlWC1WVF5eXFhZWNHOOjtec6xoLMFkvKqNkLE4kvICI85H8gcLvAaMnCq/+sM241w9JL/MFpv5VlJa68n77OR+eY8xekAxW9ewWIQ0T2b92wl3cGUoSFZVHcFQPnEQYgewMLhjDIBQ5rE+CNh9JE6T9hwYrBLMsmRWsN1NaDbeG8Td9kS7zlXbr9Lnn+H8HsohIiAp2qBHN/+joPMz6+VwAl4L6BOPR7zS3jwqpvIPgASOjPlpC4lGGt1ARka2sbqi4/3pL19Yfevf6DIe33vCCMS1ol2KlIiGN8u3GVIK39l8sjUazTqR0wfPRkUQvwCIiQRgCEAameafyAI0fOWsCX/Hqcf3TW42pqQDXHiyv6DxlpilKpz6q1BrfWZFbrWZtdozc2K7W6szKZ3O0O4hjVwt/9X0R7a6vsVOPJ6Kb6Wm1DXTXjOlFrb25qtLacbm5obaPL49RGBunN1oe4l39HYkgwtGOCEb7+gBER52aii3//FpUP/scV6RGEAarvfur1vw64emAqzcw/jMYT9ehMYx0KS0TIkVJv4sd50URNWRHKzd614P3n1/2baCpt3Bl1+/AcUhWeChS+4BnAQM7m0xkMqSpS8ksTcU4bsut7heXDaG13o0NVDdSfgZY7B0aLfRH38n/EXGkL5X2nbwJQ+Jt/8kh/vujnuuRJmXa7IyCs63rXWZ4A9BCt1iK73Z405b51oz565akvMW/ipHT7Ih9qAWHNACiFQnjpf82tt1nVOkMGtv2C2L8G6GEYTQwyWOy4b+AGogW0oxD1BYRdFOBPK+/qkP6jJmb27ZWgkysig2pIOZDvOwaZzZYUaXpwqN6HcA0D8iW/So12VjTFtF9A4IIzA1DCgBuEseIyIjiAAfS8BeC/lE/yEPmsv5mrf5MWGxPjlMujQOQBdaEonQn7A2YMvPkXYt9AaAgSQtJfx7ArcSmoG77gq5svmVyGevdK0F7LmYmIJAb9edXdEaABBCnIw8OXX8FJ//Re8XFOPOcPAPg5qIwMUml1Id03MNw0AF7645JfJafigaoLdC7C5mFcbKxzxqpfp4WqFhAWqcB/WT1f8PzL71j2y2SbzZYUpdKAiAOcFzoTi7Qm80IUounB4aQB8A0/zA5PyS9YufB1QWPFo5XIZrX2v33pw8lEYMqJQAEGEAyQSH/FiJT0KwwGY1KU1oAAgAuF0WxBbEwC7hsYch2DQn42oORzRvW+5qY1rNUK9i3QRZGSExh6TnCMmJYuDhTFggVmA/YMC/AxedJ+b5k+H8/5S9EyVjjTQBdNWHD0vnawV99AaAoa0PjrmnvEXv8JVw9aa7Pb4SgDXRLhvoE6gyllwLDRVhIRCAk/QKj7AHjpf/WIsdYopeo2nN0FAFwqHA47ujZ5kpgYRARMUCNkw4B/W5shFv1cM3J8Jp4GK5PJkRuK/gCXCKXBjFQ6wz0DRox9LX/zt6XcW+3uII8JhrIGQEp+x1tVOmMGVuEAgMuSlgrcN9Ch6z9kpNg3kAga0AACCVLpf9Ww5LTe8XE6JJMjqPkHXC40RnOXvoGgAQQm+MQftd64UKVnwI8F1DNVgko1inE4nFOWr59CtAB5MGsBIecD+L+HF4glv6krnk6Pj411yqKiQfYDeloLwH0DP0Skb2CwugJCVQPgi360jGWFhnKnX0DoIVqjQ3iIzJj0e28kQlRGBA9oADRBHgKf9otVtBiHLUYRrQTbH9DjMFusyJaQuIR7uRMJfQNBAwgc259T0RZrDGxQjtEDCnxS6hnEsJaUESlienAEMIBL9AH0BEml/8Qla0fj1s7RGi2IKoDPYLPZUWz/63DfQN4ZiM8gtAQLAOnPOOJWmVgrnFCAT4EzS5Vq7Yyrho8J2oGiIcEA3nxkoSj9h09L72cwGIZEaXQI4lZAviS5XIZwhumA4WPEseLkLIITkBIzi0oYOGgNa7FByi/AL1DrGaQxmBZwL19BnsSgdhREXudQyQPg035vTp3fl2HMqVrKab/HS4sQHnUN8D0YixU5YhPOO4TWZzZnVDTCuSbTHnwq7cMX1v2Fe6uV0wLcdz39JzcwAD/g779cJJb8xl517cM2POePIpoaTqJDe3ad+PS1X+XA9fQ9bp5+T+KI22fEsjZ6zx3nmmiMDE4MegsFWXpwKPgAeOl/1bDR1qho1W2ROhNVy7C2pgod2PZ9MfLEhvFhOAPkE8J725K38YviWk7bovnM5dEqvm/g+IWrhL6BMiKYQAPwk/SPHHjr+MxevRK0cpmMWq+l5lMuVFVW3Hwoa3MZVgUJtaNAaf8SGoggxHd5PlFVfqbsYF6VzRlrNZgYaovCfQNN9tjF3MvvUBAlBgW7D8DT8OOWcValVp+hNdG1/euqK1H+5m8KsCXA0WlBShGVEBhAzzEAGTm7uD2Xcv+W7w72HjiIKgOI1hqQ0WQaO3Ty3H7bPv5XHvLUB7QBA/AR3np0sSj9EweNmBIb4yQlv3TQcvYMKi85eipv41f53LcNHDVydIqoq63AAHr83OLLr+ZIV7xvd2ttxbFBdmecWqWhN+/BarOjhIE3ruEYQAY+EtwZbU//1R/dwAB8Bz7xR8ewK9QGM9UbVltTjUr37ynkXtZzVIPf4ugkYQJBmyseoBoAjrnjuW56jrDYby3YumGPPb73sBhNH2oLU5tw30BjypVDRj18YPsPpcGg+QUlAyDSny/5nfrAk+m94uOdUSoVtb1ua2tDFaVFLXu++ySLMIAKjqrIaxcxBUAD6DlEEQZgIsxVfjhry/6BIycMtsXERuLOPbSA+wZeM3LCUo4BrCdagDuQtYBg9gHw0l9rYleoDAzV61VfXYXKDuQWnmo8gSV/HUfVHFWS1y5ySIEB9Bwiifp/VjDBub1XH927M98R1+s6qyOG2sJw30Dsj+JePkPWF9B9A4NOA/jHuiWiEwiHXSysOYb2lF+c9JO38cssovLXEaolGsAp8AH0uAmAmf9psqeYGeCqLz0ndfcOGJpMlQFg7SMuxqmbfN/69I9feeJP+NlzZ9ad9tQbbmAAPWz7m+yxq3GzT5o7W1NZjorys4/UHS8pJwwAX/oTyOMIxNEA7ARsD9QDEIzgLpSMXH58DpRkv434GXDPotDiiOlrNNNrBKPitACd2YL7Br6JAjwxSBZkD14q/Uc7nY4ktd5IXfpnf/3hdnLZT5KL7yIXvw0uv28sR2JWnSF73Uj2vfFozvb8E3U1dB0UKjWyWizOcRkPjSYaipycXWAAXZ/khX9Jpb/B6lhixDn/FLtCnKyrRVWlhVV15aUV5PKfRB3hP5Hzw4zdnv2a99Tr+DC0EyZwmjBfngEc2bP9UEXpkfpmVxPVs6FjWMQ441cSh6X8584BaAAXN0aNl/5Dp8ztZzQxYyM1errSv6YK7dv49U5y6U9K1P7T5HC2zXvydTdUzvqAPAyglWgBAgPwMIHdW3NxUhZNqHVGZGEtScnzlg0iDED2z3VLIwJsNGDwmAD/fGypmPgTP+CGNTjpgub5O+VyocqSIyeO7t1xmBy8bqU/wKdoI3vdLDHBGvd+/1lOdcXxlpbWFqpnhGGtiI3tvVSqBYAJcHneX8XwlLsSGbMlVU077bemEhVmb8v9GenPh3946Q/wCcjeCgzgtJcvoKk4L2tfPeWSbKWBQXgiNdZYUYB2DAqK8eBS6e/sd3WmzW6jumJsX1aUHHXl/vBZjoQBSFN/SQYY6Oq+tgMkTOCUhAE04JBgfW019dNtsVoRd2bnCs5Az1mG8eAd1/8CfCqC9L9yaLItSqWZEak1UXXwYPuSO2DZkst/0sv2b5/7xB/c0D3Xt4T3+OecgTgkWJyfU8j7Aiguku8bqNFncGdX7BvodbbBBDgX/rU+U5T+A0b8IrNP7146mVxOTeZguxLbl4ezNhd4SX8h9AdJP/5XIQVn4CnJM2kq2PJddh3tXgGKSNS7V4K2/9DkeYQByMiZBhPgImx/OXf5rSqdIUNtpDvpp7aqEhXn7spvbjxZK3H+NRFHlCj94V76BxItQOoM5M2A44fziyuKD1e6mhrp+gL0ZqTWG3HfwOhAcwYGNAOQSP+ovoOGUS/5FYt+NvBFP1LnnyD9IeefDtqJL8A7MaipND+74ARlX4A8KgolxMc771j+eBoiEYFA0QIC3Ano2T/EF/2Y+ZJfmqivqULVJYdLiPSXJv40o46OsOCco+sMlGoBfEiwsuSoC/droAmV3oTUOsNs1CkkCE7An/Wf/Gv9MrHk94771qdjDhqpVPXYJKFLIaz+Z3/z0XYv598p4oDi23/Nefw1cP75mfCeEwbg7QzkzbOyA7kH+b6BFM+OQqlGNrs9aVzGilEdvoBlEaABnEd7whxTbTAtoi39T9TWoJL9OUfqy0vLvWx/SPwJHAhmQLPEDGjgTLZd9ZQzAzFwC3ODxbEEBVBiUEAygLcfXyYW/XAcM9lms/WXUy75xQUmR/dsz0fdJ/6I0h/uIB2QvRfSgzuZAZzJVld2MK8Qm3A0EanWIyPDjL3p9tlCYpAMGMB5pL/RFrsad1yliZP1dejY4YKqor07D6HOab/NIP0DCkJI8KyXFtBYsHVDdiAMa8Ep7PEDBq0hWgC+fxFhzgA6O3Q6S/+HRjud9iTccZWu868S5W/6ahfqWvIrhP7a5jz+KmT+USbPM+gSEuSfV/nh/KKK4kOVrqYGqmcpWs+gKKVy3BVJtwbEQNGAcwJKpb/WbJujM7FUHUynmppQbcVxV1HuLmnRj8AAOkp+wRkXECQxA06jzunBTaX5OQX1NTVU1yeTyVFCr97aATePE8aKU9UCAtEE4NN+h0yem8iY2RSP9KcnVXDRz8EdP+5GP1/y237n+lfB9g88Z2CLty8g94fPsytLj7rOnmmmeqbUBgZFq3UzkScxSAEMgOCdJ+4VQ3+x/a9ba3fQnfOHY8eVpUWuvB+/2OMl/aHff4CCMON2CQNwoY5eAU1Fe3fm0fYFyBSRKD4u1jlp2bo02lpAoGkAvPQfOjUtkWHZVKWBbtpvXU01OnYg9zDqWvTTDNI/KLQAoUpQ7BWwf8u3e6uOlbTgrE6a0HKmLe5ojSiHBAPGCUikP1/0Y+9zxTxcRkkTra0tnPQ/2rL3+093oe5Lfon0B+dboNGd619xe/kCmgRfAM7irC4pLKEdEvQMFGWdY+c/kEy0ADkNLSAA5gJ0lv64bDJaY8jAJb80yyXrqqpQUd7ufEnab4OX9G+b/dgrAdzxPewhDQmekpgBjTnffbyVMzH7mq10TUytkUVGe9wq7uUGRCmcHBAmwLtP3idK//7DRi9L7NNbR3O6CwZuJnFo58Y89POJP3D1AxiYOaOOkGCnXgH15aUVNWVFlU0NJ6muEdcHGAyGpMGTZiWijsSgiLBjAKhj2EO0UmvIUPJpv/RUyJrK43jOn5D2213RDyT+BAe8Q4JiElfh7s17cISHtrlisdpR3IAbpIlB4aUBSKR/FPaKxsXEUC355dX/6iq057tORT/etn87kTCA4HEGduoVcHDHj/tqjpe6zp45TXVxGsaCzKwlJWny3ETiCwhLDYBP/NEYzSv5OX8UgdN+q8uOVtVXlFWgrt1+zyCY8huMZoCgBQi9AjA1FeXSDwliYIe3vU//eYhCSJA2AxDj/pOWPZreKyHOGalSU1XKcNrv/s3f7ECd4/5S279t9mMvg/c/+BuHNhZs+W5P1bFiPiRIc4WROhNS6XQZVySN9Ht6cCBoALz0V+lNi1R6M9Wz4mps4It+inN3FXaj/kPabxDSrHUvSxODhI5BPGPHEZ7jh/IP81oAxXOnkEeiWGestu+gEZP9rQXIKEt/vuhnzPwHk+2BUPJbW4NK9+ccQN13++U7/pADBQgueDcOFSMC+Zu/yaoLgF4BKqMZaRl+oKhf+wbS1gBIyW/MaoOZbuIP7vWP88T3bfwy+2ds/zYEob+ghJcW0Kk+AEd6Ko4eKD1ZX0t1jVFKNeqdEO+cmPmokB7sl8QgWgxAlP63zF58o4Vlk6K1ekS76OfQzo3ZqHM7KReSFP2A9A8ZLaBTfQD33Pd4MgPp+iuidUak0htn+1MLoKkB8KE/NrbXUsZio7r1uNd/bcXxFk7670HQ6z+U0d0swYbi3F2H6iqPu/C8R5rnUKHSIIfdnsSZxKOQnxKDaGoAkUl33Okp+dWbqJ6KuqoKVLIvK19yKLp0+5217iXw/AcxeZ5fp4nCLgmzx1pAVn0NfV+AwcwivdkyB/mpSEhG6fLzoT/nldeutVEu+RV6/ef+8HkWOkfJL1yhEAkIdtYCxMahR7K37q+pOEa9SjBKa0RGsyXlxokz/dI3kBYDUPS7aaRVqzOkRutZqqcCT5CtLjly/l7/cIOCnmY++pL3LEFxiAh+/uWH9x+qpxwSxOSwO1DMFdcIY8V9agbIKFx+T9HP8DGZTqeTusqFQ0C5Gz7Zhrq2+2om0r+dHBxAaDoDxZZh+zd/sysQQoIKrQlFa7TTOSFpQT5ODKLBABRXDBllVWr1GdEBMOmntGDPEUnar5D1d4pICSj6CTFItABprwD+2eMqQe48FOJ8EJqQy+Wob+8+WiwkkY8Tg2R+vvyk5HdMZj++5FdBVdfC3P7g9u9zUNeS3zMg/UNeCxAyAzs1Di3O3Zl/oq6aur0SbeC0ALXW530D/a0B8CW/USrNLIXeRHWLcdFPZfHhqorCgmIv9R9KfsNHC+iSGIRDglWlRfW0Q4IRctw3MM45YekjPu0b6C8GIHr+J2T+Mg03RJTJKTf8wEU/W749Z6//mY++CKG/0I0JeIcExXFvRXu35wZCSFBjYpHaYFqIfBgS9GdLMF76awzMyrLjxxHCRBFnTjW5SvKyDqPOnn+Y8xde6K5KsGHfxi9z+g8bPexEbXUk7QXKFZH9k9OXJ3//1stfkPX2aEp6hK+b2kVwEC4/R0aOcNJ/PEe9OYrjyMYRbv6vRL7PfxY8wJjj13GEO/4UcYTNgDKOashBkIz6BoQwIsi51HGEW1DHctSLEE5QwRlqGuSfEl03OXdYI8Uh6WOSs3mcnE0X0U75S9sTd1fhx42OJKqMipDUuSEMcvC15G2TbDLm9vUIev2HO6RVgvgcnCCkIec1AvmnXZdbIt1lkruiJK+FAqEePZ/+YgAyQgryIeSowxMrjGnxx1qwVD9NpHwt0QLqUEfiTwv5GWAA4YHunIEnyJlQkcvfQoSVzE/n8yzqqD5FkvsiRz5wBPrTBxDhpeo0E47bjjq8nP6w+aQMoBp11PyD9A9fJtAq0QwxA1CTuyGMGvfn8A7peHMpI4iQUFAyAEHin5bYOWfJhvurDZLAAFxE/a8hf1/q/AMGEJ5agOAMPEEEkptcRA3yb5OONq+1dHc2I3rqnPrLCRhJNhFzVj1xumiImuXzggcvFUvKhBpQt9N+AGGGCHIOleSM6sg5pXFGvf0SQpi6U4ia51w9cHf9GQVQECag7MaxEeFHBtCKOrLAmsl/W1CHdxUYQHgyAMFHFUXOqeCojpTY3/5Cm0QTkJ5TQRNoDzYGIN3gSC/HBvIjAxDUvTbCCARqR+D8AybgOaOCsFJIJL+/J/a4JWdSek7bpOc0WBiA9ILLJBsdQfFhuyUb2S55DwBMINDOqdvrvKJgZAAAAKCnuUMwMAAAABDAKg8wAAAAGAAAAAAGAAAAgAEAAABgAAAAABgAAAAABgAAAIABAAAAYAAAAAAYAAAACGL8vwADAE4ag0JarbF5AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/wheel_black.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAXUAAAF1CAYAAAAX/XrIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAIGNJREFUeNrt3XtclGXe+PF7mAMDDA46tiioJCQeUhfBA6kRmbaap/KQUiyiBSGiZpkaPY/bQVS0pBQF8/HcKoouJBhqHjZSyfVFaq2k9fx+2dbP51E8my/EcuZ3De2arScOc7jvez5/vLfcNcLvfc3nde0199xINptNApTo75WlPuVntrT67Fxex73nV/b45EJu7K6LWYO2X8wYVXLxzWdKLs1M/OjSa899dPnVFzb974sTS8Rft4lf7xD//a5Lb8bvFr/v0wtZT5SJf+6g+OcPia/z5dmiVsfF12W+UCqGAFn59MSHlhX7MmLeKByXMvbdR5f0m9xuZ5cRzb4K6el3NqC1rtrgr7FqDZKty0SvnyOFqElam11kmpetq/hrt3+SxNKuL/vX/xej+Pc1vV93Lfwhv7O9Rjb7apj4fqaI7+s98f1tEt/n5+L75bqBqMOjFXzxX2GzilPjn1vaN7vfa+Gl7YY3OuXf2uu63iTZ7BoSZFfTGX7h11hjDe1ivPh4QsvyKQseWfq++PPtEX9OrjeIOlTjE7GLnb1tYtzo93qt7p4WfPR33fVVOhFtncLC3dDg39dK+1P0E02+S3mj24ZVYh5fsLsHUYfclZ/+q98bWyfED8nsujl8dMBJg0Vj9ZR415VRzMVfzKePmNOLYl4rxdz+r5gf6whEHW6zrjwn/IU1Q2dFTWrxhX9br58IeMP4iPm1EHMcNbHFF/PFXPeULwlnnYGow2nyDy8PHbdq8JxOKc2OG4PELtwsWYmx8/iJ+f6upeb6CDHv+WLue8X8WYcg6miQGVuSx0bPCCvzDfP6WctO3O07+WBxHZ4X12PllqQk1ieIOu5pc8WakGeX989qNdx8yh5xduPyZBLXxR75viPMp+b91x+yDorrxvoFUUeNVeXZHQdmRa8zd9NXsRtX7i7+QXH9ZmY9tK5UXE/WNVGHh1ldnhPeN7PrZlOErpqQq4uvuJ5txXV9bX63/L3iOrPeiTpUaseJLZZhSx/LDuhpuOJFyD0m8F3E9Z4nrvtxcf15HRB1qMDEwsTUFqMDThJyAj9YrIMPChJTeV0QdSjMsvLsjl1ntt+lD9JYtbzZiZv422+VFOvipZnt9uzn/J2oQ96e2xA31TLQ7zy7ctR2995HrJeVYt3w+iHqkImyylKfmHldN+tbaq4Tc9SHn1g3zcX6eV2so//hscNEHe6x/HBu+wdnhB7QEHI4OPCTxLo6eCinPa8zog4XeH1P+oDm8U2+J+ZwdtxHinW2Xaw3XndEHc44L98UP8UUa7zsxRufcKFGYr31FutunVh/vA6JOhwgYUPcVO8IXTU7c7h7595JrMMPeFOVqKN+kgrHphqjDVUaduaQ2c69u1iXm8T65HVK1FELqUXJY316Gq6wM4fcd+7RYp0WivXK65ao4zYmb5sY5xtrvEzMoSQmsV5jxLrdKtYvr2OiDiH70KLO5mGNThNzKD3uT4p1/LlYz7yuibpH2l+53ztsRugBiZhDZXGfNj30QKVY37zOibrH6JPTJ1cTpOENUKhWkFjfOWKd83on6qr2wpaUsfpI/VV25/AERqNkixTrvUise17/RF1V1lb8OcQ8POCUZOSFDs+M+/Bh5lMVR9eG0AOirni9Fz6yWjJz1AKYzZL1vXd7r6YLRF2R5u6f38P7YZ8fJZOGFzRw0xupD/c2/li2N7MHnSDqitHxrYjtxBy4S9z9JNtbf+q4nV4QdVl7acf0kdoOhmsEHahd2Du0017b8dFLI+kHUZedkCkPfE7MgfrFfUpayOd0hKjLQsa+eTG6CGM1QQcaFvaIjrrqfZ9kxNAVou42PebH5BNzwLFxnz+rRz59IeoulX+sINA0qMlZgg44J+yDHjedPfb3/EB6Q9SdblRe4jSNxYv7zgEnszTWWPNWjZpGd4i60wSnhn3F7hxw7a49dVzwV/SHqDvU2oqNIYZoU5Vk8uKFBrgh7NGRhqqKQzxmgKg7QHLRi0kai5bjFkAGxzFFeclJdImo11vE7F7FkpHjFkAujN6SbXZ6RDF9Iup11viZFj9w3ALI8DjGV7I982TjH+gUUa+Vdz5bEqXt4HONoAPyDnuHB7TXDuxZEEW3iPodJRZMSiXmgLLiXrAmMZV+EfVbxCwavJygA8o8Z1+UEbOcjhH1Gx6YEVVG0AFl79jTU9vspWdEXbIkhH5H0AF1hD3hyabfEXUP/YOXVv7NzxhruUzQAXWFPba78XLl96V+RN2DLD28tr22re9PvAgAdWp7v/anw/uWtifqHmBu2eJemiADnxAFVC7oPo21bPvcXkRdxV7dNWeAZNYRdMBDmE2SdXdB+gCirkKTtv0pjqADHnjO7iPZtq2fFEfUVWRswcupkknLAgc8OOwFy8d6xIeUVP8HfHr9+HSCDsAe9nWLnk4n6gr2xIqEtwk6gJvDviLzibeJulKDbuQedAC/ZTSoO+zqPHJZl8qRC4C77tjXL1TnUYwK3xSdxpuiAGoV9oL31ffmqbpuWyx5M46gA6hL2Ld9oK7bHVXzB0nf/Q4fLAJQZ2Y/ybo7Xz0fUFLFH2LO/qW9JLOeoAOod9jLitXxSAHF/wGWHt7YXhNkJOgAGiTIorEe3qP8h4Ap+psvrTzkp23biKctAnCIti20P1V+q+zH9io66sbYoMssRACOFPt742Wi7gZNEx78TjLpWIQAHMpklGwJj1sU+xOUFPlNt0mP3UvQATgz7DP++EAZUXeBmEXPLifoAFwR9kUzYpYTdSdKLHgtlaADcGXY/5KdqKhPnSrmG13w2Zoogg7AHWH/rHhBFFF3MG2HxtdYYADcoUML7TWi7kCNn3nwB3bpANy5W38mtvEPRN0BImYPLSboAOQQ9tnJEcVEvQGSi95Mkow8dRGAPBj1kq1oSXISUa+HtRUfhWgsPNMFgLxYTBprxadrQ4h6HRmim1exgADIUXQbQxVRr4Pg1J5fcewCQM7HMKkDg78i6rUwKm/6NMmkZ+EAkDWTt2TLmztqGlG/i41f7QrkHB2AUtjP14/tzw8k6ndgGhR+loUCQEkGRZrOEvXb6D7/mXyOXQAo8Rhmfkr3fKJ+k4x9q2MIOgAlh33fxowYov5PuojAahYGACWLaKmrJupCyJQ+n7NLB6CG3fqUISGfe3TUX9qxcCRBB6CmsO9Y9tJIj426tkNTHqcLQFU6NHfvY3rd9i/u+NaI7ZLJwCIAoLrd+qz4TiUeFfXMsj/3IOgA1Bz2svzMHh4Tde+H7/+RCw9AzR5+wPijR0S998LnV7NLB+AJu/WFqb1Xqzrqayt2hkhmb57tAsAjmI2StWK3a5+97tKom4dHnOJCA/Ako7sHnFRl1FOK3h7LsQsAjzuGMUi2ogUpY1UXdX1k8FUuMABPFBmsv6qqqMcuTl3GLh2AJ+/Wc9L65Koi6vsrj3trghrx5igAjxbkr7FWHtvvrfioh04fcoALCgCSbfrA0AOKjvqCA5ujJKOOiwkAglEn2Q5sXBCl2Kj7D404w4UEgF8N6eR/RpFRn1iSHcebowDwW/Y3TUvemxinuKgbY8MvcwEB4FaxYcbLiop68pZ3x3KWDgB33q1vmZucpJioG3qGXeHCAcCd9WxluKKIqCdsypwsmby5aABwt926XrIVzhqbKvuo67vfX8UFA4B76xasr5J11EflZUxjlw4Atd+t56WPmibbqGs7NOcHSQNAHXRo6tgfVO2wLxS/ad4UyajnIgFAHdg/ZbppZvwU2UXdGNue+9IBoB5i73fcfesO+SLTd64axFk6ANSP/Wx9V/aMQbKJepP4mO+5MABQf/Fdmnwvi6jnHNrenl06ADR8t364ILe926PeetqIg1wQAGi4aY+1PujWqJdWfuPHLh0AHLdbr/yi1M9tUY+a+0IBFwIAHGfuiKgCt0VdE9SYnz0KAA4U5KexuiXqcRvmT5VMRi4CADiQ/Qhmw/S4qS6Pum//Lhe4AADgeP1b+15wadQXH9rRmV06ADhvt35o4+LOLot6u5lj9jB4AHCemX9ot8dlUddYTLxBCgBOFORbvzdM6/GTjd6bzNELADiXyf70xlcTJjs96gGjY08ycABwvtHtAk46Nepbvj1s4ZnpAOAaRq1kO1G6xeK0qPfJeS2XQQOA6+Qk9Ml1WtQN0e34odIA4EI9Aw1XnBL13MN72vMGKQC4lv0N08Mba/9I3lpHvWvmpM0MGABcL3NI180Oj7ouIrSa4QKA60U00VU7NOrZ5bs6SkYDwwUAN7DfBVO+Prujw6IenfXKOgYLAO6TNeKhdQ6Lur5bW+56AQA36tJEf9UhUV9x5NNQjl4AwL2MXpLtyF9WhjY46v2XZ2QxUABwv+WJ/bMaHHXziEdPMUwAcL/hrc2nGhx1yeTDMAFABkxae5YbEPWkLSuTiDoAyCfqW9KTkuod9bAZ48oYJADIx4yeYWX1jrpX6+bXGSIAyEdrX6/r9Yr6ii/2h3ErIwDIS82tjfkrQusc9cGr3p7DAAFAflYmDppT56g3e2HE1wwPAOTnhQ7Nvq5z1DVBTa0MDwDkJ8hbY61T1HPLPwnnVkYAkCf7rY3lH+SG1zrqQ1dnzWJwACBfa8YNnVXrqAenPXuUoQGAfKV1Cj5a66h7hbX4maEBgHyF+Xj9XKuoF33zpVky+TI0AJAx+7n6NzuLzPeM+oSt6+IZGADIX3H6hPh7Rj1q7owChgUA8pfZr+vme0Y9YPQTJxkWAMjf6FYBJ+8ZdY3FzIeOAEABLLpbP4T0m1/kHzsUKBm9GRYAKID94V7HivID7xj1CcXreZMUABSkeMZv3yz9TdR7vffmBwwJAJRjdr/u6+8Y9eC0MXySFAAUZHjIfd/eMer6yA5XGRIAKEcrb+1Pd4w6nyQFAGXRaez5vk3Ul5bvDyfqAKAsBhH18lVLw2+JekpR3lgGBADKs3Vq6phbov5Y7jvZDAcAlGfR4Edzbol6ePrkvQwHAJTnuXatPr8l6o2eGnCa4QCA8nQ3+1y8JeqalkHXGQ4AKI9Z++szYH69DYZnvgCAIt18W2PNf2w89iUP8gIApUZdOFb4y4O9aqKesW93DIMBAOXaNz8j5kbUxxXmpTAUAFCugvHjUm5EvW9O1iKGAgDK9e6AR5fciHqHl9N2MhQAUK5JndvtvhH1ZqOGHWMoAKBcI1oEHr8RddPDD51lKACgXL0C/M7eiLouNKSaoQCAct1v0F27EXXJ14ehAICC+Wt++VTpL1E3GBgKACiYQfrlU6VEHQDUFPXSylN+RB0AlB/1yr2lftKWM6daMRAAUL6zW4taSXnnKjsyDABQvnOb8jpKq86f6cEwAED5zq9d1UPKOX82lmEAgPJdeD/nMSnr4rlBDAMAlO/iwqxBUsbFc6MYBgCoIOpzM0ZJb1w6n8AwAED5Lr31RoI089LFRIYBACqI+uszE6XJXx+fwDAAQPm+mTJ5gvT8gQMvMwwAUL4vx49/UYrbvv0/GQYAKN8nf/xjOjt1AFDTTn3y19+MZxgAoHwnX5meLM34fyefYxgAoHyXZr6eKL1x7mI8wwAAFUT9zVnxUsa5i3yiFABU4GLG3FFS1tkLTzAMAFC2RC+97WLWwkFSztkLsQwEAJQedYPtQu6yWGnVmfPdGAgAKD/q51et7SblVZ7jJx8BgAqifi5vU0ep6PRZfkYpACg+6t62s8UlLaTSU5U+ksHAUABA0VE3/lxZutdHstnEr4k6ACg+6jU9J+oAoHwGSWO7EXWNyd/KUABAufw1GuuNqGtbtb7GUABAuUJ1huobUTdF9z7DUABAuR4xNa68EfXmw+MqGAoAKNezzUP+fiPq7VJf/JihAIByTe0Qsf1G1B/NfHcJQwEA5crpO2jRjaiPyytMYSgAoFyF41JTbkQ9Y/e+GIYCAMq1L2N+zI2of/jNCYuk5wNIAKBEJsnLduLDEsuNqNf8DVEHAMVG/UbL//U3GnNjPlUKAArU2stw/Zao+3TpcYHhAIDyDG8UeOqWqIc8+/xBhgMAyvNaeJfSW6L+6NyFuQwHAJRnad8ns2+JeurGrWMYDgAoz9bUqWNuifqyvx0J4w4YAFAW+50vR5atDbsl6tzWCADKjPpvOn7zL7QteK46AChJd71/1R2jHjwm7ShDAgDlSAtuf/SOUe/91sLVDAkAlGNh74Gr7xj1ifnb4hgSAChHycT0uDtG/cOKby2Sr4lBAYAC/PIgrx2WO0b9l2fAWHgGDAAogEWjs/57w2+JesATo08yLACQv9EBrU7eM+pdX83czLAAQP4yu/bdfM+oT1i3NZ5hAYD8bZ2QHn/PqP/1H5V+vFkKAPJmkrS2yr8e8Ltn1O28Qtr+xNAAQL7aevn+dLt+3zbqLeInfsHQAEC+Jrbo/EWtoz703TWzGBoAyNeaoeNm1TrquZ+Uh0smM/erA4AMmSWdtTzng/BaR73mQ0hNg4g6AMhQS43x+p3afceoN3s65TjDAwD5SWn24PE6R33w26vmMDwAkJ9Vg8fOqXPUV+w7Eir5cL86AMiJ/f70IyvyQ+sc9Zr71Zu3vs4QAUA+wrx8f75bt+8a9bBxM8oYIgDIx4ywnmX1jnryyqIkyY9bGwFADuy3MhYlpyfVO+o1v4FzdQCQBft5+j2bfa/fYH50+CmGCQDuN9zc+lSDo94/Y3kWwwQA91vePzGrwVFfU1YRwhEMALiXSdLZKtZsCWlw1O30bbtVMVQAcJ9uektVbXpdq6hHv5K1jqECgPtkPTRincOinr2rvKNk5AgGANzBfvRSnr2+o8OibqcLjahmuADgehG6JtW1bXWto97txfn5DBcAXG9+tyfzHR71nJ3l4RzBAIBr1Ry95GwId3jU7Qzte15hyADgOj0NgVfq0uk6Rf2x/1yazZABwHWWPjYm22lR//Dz/9OYIxgAcA370cuJLaUWp0XdLiB29EmGDQDONzqg3cm6NrrOUU/MLkiVfHkcLwA4k1nSWwsT/yPV6VG30zQOIuoA4ERBGl9rffpcr6i3GzNzD0MHAOeZ2e4Pe1wW9eztPDYAAJzFJOlt5dl5HV0WdTu/qIHnGT4AON5Av9Dz9W1zvaMeN3/DVMmHN0wBwJHMksG6IW76VJdHveYN0yYtr3MRAMBxWmpM1xvS5QZFvev4eZu5CADgOPO6jtzstqiXfn3aR/LmDVMAcAT7G6SnS4/4uC3qdqFPzzjAxQCAhpse2vdAQ5vc4Kjnbj/cnt06ADR8l344t6C926Nu1yQm/nsuCgDUX3yTLt87oscOiXr6mj0DuL0RAOrHfhvjnvQlA2QTdTtj+9jLXBwAqLtY4/2XHdVih0U9ft6mKZytA0Dd2M/SN8XPnCK7qNvpWkZUc5EAoPYidIHVjuywQ6MeN5tHBwBAbZklb2te3GtTZRv1mh9OHRpdxcUCgHuLNrSocnSDHR71se8UpnK2DgB3Z5IMtsJxs1JkH/Wa3XpYzytcNAC4s56GVlec0V+nRD353aKx7NYB4M679KLkzLGKiXrNfevh3LcOALfTz6fNRWe112lRn5hdEicZ2K0DwL/v0ksmvhenuKjbNeoy7DQXEQB+NaxR59PO7K5To75oy6HO7NYB4Ndd+qFFhZ0VG/Wa560P4XnrAGA3PXTgAWc31+lR33/stF7TKIhPmQLwaEEaf2vl/mN6xUfdrk9aTi7HMAA8+dglp09arit665Ko2+mDI69ycQF4okh98FVXtdZlUR+/YOsYdusAPHGXvnV81hjVRd0uIHL0SS4yAE8yOqD7SVd21qVRX7uzIkTy5tG8ADyDWTJaK9buDlFt1O0eTlq0nGMYAOo/dvG2LeydutrVjXV51GueCxPKc2EAqFusMfyyO/rqlqhn/rmsB7t1AGrepZdl5vfwmKjbdRqZUULYAagx6Bmd/ljirra6Leo1P6g6kB9UDUBdInQtqt3ZVbdG/eVFHw/jbhgAamGWfKwfv7xsmMdG3a51v2kHCTsANQR9WuunDrq7qW6Pes0xTDMeIQBA2SJ1ra7KoaeyiPqcNWW9JAO7dQDK3aWXzcnvRdRvEh2ftU7SczcMAGWx3+2SFZ22Ti4tlU3U7Uxth5xhkQBQkqH+Xc/IqaOyivqHe09YNEYLxzAAFMGiMVlPfPi5hajfxajpedM4hgGghGOXvNGZU+XWUNlF3S64V9pRwg5AzkFPCx58VI79lGXU7QzNo6tYPADkKNrQpkqu7ZRt1Nd+VBGi8eZ8HYC8BGkaW4+uKQ0h6vWQ/GZREscwAORz7GK0FSUvSZJzN2UddbuIobOLJR1hB+D+oM+OSC6WezNlH3W7Jh3jvyfsANwZ9Pgmfb5XQi8VEfWa58NYeEwvAPeI0LWuVkorFRP1BWsOREl6ng8DwLXMkq/1wILiKKLuBImvFaRyDAPAlccuBWOXpCipk4qKut0j8YuXEXYArgj64kdeXaa0Riou6nZtYtP3chQDwJlHLultxuxVYh8VGXW7pg8mfMeOHYAzdugJTR//TqltVGzU7Xxa9LvIIgTgSP18oi4quYuKjnrpodM+WnOHayxEAI7QQdvqWmXptz5E3Y1y1peHa3xaXmdBAmiIlpr7rpfn7ApXehMVH3W7ue+X9dIYePgXgPqxaBpZy+YWy+JnjBL1f0p/Z/cASccdMQDqxiz5WXen5w9QSwtVE3W7F2ftGEnYAdQl6NsmfRCnpg6qKup246YXpkhabnUEcHcmycdWOG6Zoj4t6pFRt3s6bf00duwA7rZDX//0wmlq7J8qo243IGHF2+zYAdxuh75q4LxMtbZPtVG3e8IednbsAG7aoa94IvNtNXdP1VGvOYoZv34aO3YA9h36+qcXq/LIxaOiXvPm6dTCFHbsgCfv0E3WwnErVPemqMdG3W7Sn7bFEXbAM4O+bdJ6Vd22SNT/6dU5uwZodHzyFPAUFo3Zuju9QDUfLCLqtzF3cVkvjTfPigHUrqUm8HrZ3O2q+Og/Ub+HnNXl4Vo/nu4IqFUHbei18pxSxT+ci6jXQenfKn187ut3UfLizhhALUySr62fT8+Lp0v/oejH5xL1BmgamvCdpOUNVEANQU9o+qRif2IRUXegNl3T97JjB5Qd9PQ2ExT5M0WJupM8MmTxMsIOKDPoix+Zs4yOEfVbJE4qSOUoBlAOs+RvLRi7xiM+VETU6+mdJZ9F6fwiqiUv4g7IOeYRuvbVBxbsiaJbRL1WGgc/8wPHMYA8j1ueaTz0BzpF1OssotfsYsIOyCvosyPSi+kTUa+35BeLkjS6II5iADcL0gRai5LzkugSUW+wtRsrQgym6Cp27YA7dud+tmhDZFXF2kMh9IioO1Rwm7SjkoawA64Melrw80fpD1F3mlGJedM0Wo5jAFcct+SNWqX6H2pB1GXgw4++tfhbhp5h1w44Z3c+1L//mRMf/reF3hB1l4qOzVrH/eyA45ilRtas6Lnr6AtRd5s5b5f10hkjr0oa4g40JOaRus5Xy+Z86nHPPyfqMtU6/JWDhB2oX9Bfaf3iQTpC1GXn5ekfD9MZIqo5awdqd3YeoetU/fHLJcPoB1GXtU5dMkoIO3D3oM/q9HoJvSDqipH5dlkPb5+HfyTuwM0xN9ke9u71Y1nm3h50gqgrUu9HFq7mrB2wn52brQt7v7uaLhB1xVvzQUVIQOPRJyWJXTs8c3c+OmDUyYq1R0PoAVFXlZTxxWP0+sirxB2eEvNIsd63inXP65+oq1ps7OJlGg2PGoB6BYn1vVisc17vRN1j7N9f6R0WOv2AJBmJAFTDKNbzNLGuK8X65nVO1D1S1oIDUWb/oWc0HMlA4Uctg/2HnPlMrGde10QdwsQJxfF+xtjLxB1Ki3mMWLdbxPrldUzUcRupyUVJRkN0FXGHnPmJ9Rlt6HmlUKxXXrdEHbXwfGJBqlHfjbhDdjGPEusyL2HTZF6nRB318MdRedMM2g7XiDvcHfO2Yh2uFeuR1yVRhwM8F79pisn48I/EHa6OeW9j7OV1Yv3xOiTqcIKZM3YNat4k/nviDmfHfKRYZyVivfG6I+pwgeW5h9t3aP3KQS/iDgfHPE2sq4NiffE6I+pwg7LSSr+Ho+YW6DRBVgKP+oY8UKyfP4l19D9iPfG6IuqQiXFxeVMtvv0vaPiUKmrBW6yTWLFeVsZtmMrrh6hDzkcziw917tZu5h49u3f8G1+xHgI0FutLYn2UiXXC64WoQ2FSEzZNbhEw+iS7d3blg8U6WMX95UQd6rBjywnLU31ycgMMPa+we/ecXfnvDdFVc8V1Py6uP68Dog6VWpt7uH3frpmbTbqIai928KpiENezrbiur4rrW8YdLEQdnmdVdnnHgQ9lrTPru1UReOWG/EFx/WaK61gqrifrmqgDNTasPBL6bP/lWa3Mw09pxf9113JMI0s+4rrY9RXXaZ64XvtXHA5l/YKo455eea4wJTpsRpmvV+vr7OLdvxtvLq7D8+J6rBDXhfUJoo4GyV9+JGzc4FVzOjZ74WujJsjKLt75u3GLmPMwMe/5Yu57xfxZhyDqcN5RzdLD7V8YumZWZHDaUZNX2M86It/giDcXcxwp5jl/6OpZnyzlTU4QdbjRnqJvzG9M2Bo/pGvm5vCA0ScNGovYzXNkczt6MRd/MZ8+Yk6To+YUrBRzOyzmxzoCUYesbc8/FvjWhOL4gZH/semBJv3/4acN/slLMtjsPCHeRrH7tgvVR159Mjj1q1d6vffBcjGPv238KpD1AaIO1di0tDx8VmrxmGdj3nk/qsWzhwONv79k0JitXpLOZqe0XbedRdPyenSjp04/G56+N73v0uz3xZ/vY/Hn5HqDqMOj7dx4LHBFxr6YN8YVpiQ++m5Ov3aTdnb+3ZNft/KLPmfW3X/NoPG3asVO/1+cEeqbv75R/Pss2vuvtRH//ujfPfX10LZpe159fNnC98T3t0l8n59tPN6c6waiDjjAl6WnfcqLzrb6LO9cx70rzvX4a86Fx3ZlXRy0LePCqJI3LiWUzLyU+NFrl5I2v/y/qcuSjrzyF/HXbeLXO8R/v1P877vF7/tU/P4y8c8dFP/8IfF1vhRf75j4uswXSvX/AXO4pNyLosLqAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/wheel_button.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB39JREFUWMPFl12MXVUVx39773P2Oefembnz0XamrW21DQIWBOHFoEEMDz4SYyQYSI2JD0WCiSSSqIkPhleNKIaYGOFBY/yIPvlAVEB40ED9ACJNLRTascyUTuncmbnna3/5cPbcmQFU8IWbrOyTe5P7/+21/nutfUQIgffyk2w+PLL6NEMx4rxaYkme5XV1jlkvWFSneJ+fEl4MDywweUMjl27RcuOaXJQHpwgzAxADWJ0LvcWB77844/c+2ZfrJ6b84Nwkb7iwcRCxehm/Pomv5nHhEEFOA47BR+/dAni7jw4pAq5akSufLdXS515Tq1dPA7vRZGgkCgUo/Fxg7UhQK7c4znxJ+Okzgr0/x6ufBdIXxDvJwFvESZKzyflji2rpvlItH52nYB+7mEYzQUIfRQ9BD+gR6OHoYSkw5HL9cC5Pfi0xc7c70u95MfkjoHxHAAHIg55eVK8/8HJy6rjGqFnmmSKnICMjpSAhJ6WAGIECR46JUZCFGmVWj6j2uQetPXhjK6+9H8KF/woQgImQTf8pO//Q6WTlzgHzDAjkGDQCTUGOJieJEIIcyAnk2BgtBQ2JyaDMoBqSlK8eC20+aNTNx7Fh+T8C9INOH9NnvvWXdPnOXSwwQNDHUWAocGRoMjJyUnIUBZJiB4ChoEWHGuoM6gRqCbUkXX3xNq/6w3rq0/cQ2HgLgA6KE/rcsT9mr909YA8DFBM4+ttqmyHIySNAQo6MGfBjgJwG2WioNsUF1EBtyS4/c5dbOPJcO3fTd4SzOwFOpGtXPZYvfSVhJpkhpY+nj2cyrgWWHhZNQha9kCHJdgC0pK6GWkOTQK2iONB4qGqZvfSHL4e19MmgJv8KkHxz/SlkkOqMLj+zqOTR/cyTE8bu3gTpYymwZECGpkBvK4Hv3E+DaDU0atvOPVQOKgNmDnVh8VAiz97V7rnuOcAlE2GQj4Td/bx2ny/YRYGiIESILibwTODHRy1Hjc2YAz1ct3vbQJVCuSkeoHRQ2Q6gbKGeJD39wh2mf/0PgVPJ/VPX1V8sn71hWRZXzNNDI6KpOnMV40wEJscAnhxNEY9ijiULLTRlTLuAalM8Cpc1lBrMFHLp/F617/xNwKkE4HSS3Aoz5EhSQEOsbQdSxEz0YzZ6uGjINIIalG2g2ky9f6vwSMNGCqMMNhLUP0/fCjySAFxUvaM5GQpBEp2ZAikh1pwxSB+YwMfGk1Ag0KGFuux6Xelg1MIoh1ENG50g6ymsa9hQUBaof618aHwKhmJwMCOg4hcJ7HjeBNIxKxNjCEGGQLZVrLuFsom7TbZiLYF11YkPFYwyxOWN+TGAF1MzCoGAcchtod4EoYFebMPa2m7no7oTWVPdui67WBOwJmEoYJVuXROI2ve3+kBdgBD/1zwXJjq8zqHJocm6LljlUGVd1G+OHJptnVCshaELYg7RzYNxBPCAi2GBFmhDZ/IUyESCrnvQGjAWrAPnwbsugt8WIf6pIZCXYhNgMPSLF5w8bMWWoN0eAVrRCTcBSg/CgU67454YjSwLqFto2whjOhi7DcpZ8B7aijA5d3GcgV0j9+LZKvmEE90OLWBEJ9bSrQ1QBlAeggEpYjYDaCvJ67xzf9lCY7pobQdkXQQyYD2UPfz795/c9BZXWvfEicvc3cidaW5jM9MB0iiOg+Ag192xzwDtIG1TVJnDqIkdr4XaQNNCYzsAYzsoO4H94JVPpJsAB5U9sbv0Z4e1PNRXnWgWhTWdsPBdaqwDJaPX4qzRDnQr6DUZlAWMYhOqzBZIbbpsrI/w0/suugMLT49L0G6Ic9eq9ie/W8m/UaVROEASIIniwoG34AP0dDfwdgAY0E1KslmKUbMFUhuoYlaGOebje39Fm700Bnjg5kl3z29Hv9jv3B0rb6gjWQqJA7WZdt+JWwNJ0p22KoFCQgVoD9pC1kK/zhBVvhNg1ELdg0sVfvfCBXdg7lFhaXfcB26YMs83e8SDP32l993LIKUEGWvuojhAP4Om7sZ9JTsPZB4y221QNwq92QdGbdeKywLWaijz0Hzq4EPmxtlnROV2XkiME3x4wfz45d3NR/78QvaFJP4SLDgDzoHWsfZpvG3FqZuFDkCbLgtJnSHrYmv3awYuZbTX7/+1uWbiYWH8uPHtuBOWRoxuPGS+vvaanD15Mr3Ni64ntC0IGRud7sSrBPLtAJs+MJDWkrzKug670cIbLfbI7O/tNeGrorKXQiHe/lIqgLIVy1fsNcer82L93OnkrrqF2RR6GbR13H26bewTTes6H2gDuoW01qjVAqoWt8/9xn5A3CeqjVcRb3Mt/8HjQ5TcgmiMWN6/xx6f9v7v504m964uyUNFHyb7XQaqBAoFlYgeCFs+0C2kI9AjQT6pl93h7OHQq78vGn85iHfxZmSsGB3cb7/dXBSP92fcsWpZ3T68IPclKaQpZBq07PpEGiA1kDZxnQgr2WH3yzSER90BnpHLcXC8m1czAGMEwN/mZv0/vAoP77uajzVL8pPZSB71tVhw0LcBbKD0vXCBGX9SLPinwlA+5af9K1yiEuZ/TNP3+vX830UX5/xBVNUfAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/wheel_button_h.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABu9JREFUWMPFV2lsFVUUvrO+ve+9lkJLAwVEKgo/TA1qNEBYGtqCQpBFNBiCaFAD/sHoDyRRYkgkRDAQNUgiNhgEI1tZ2hSrREiEgIpBoYCUrbSF9m0z783uPXPvLEWg4B9f8vXcuTO533e+c+7tDGtZFvo/wTIMg/rDvEIdM7FpTNWsQ+MW1e4b0TBjb/mJWXuKry7YlUy/uiuZWb47eX3VvrKTaxuHb9988InXt/8w5tHdzeP4/taFH4v6+Y1pGlN97vCFT27kO5v+Uk9vuWl1vCQjqRoxqILl2CKeY2Mcy5Sblvy4ZnbOlbQ/PrvZfb1FVVObmptHP93f+ncV8OzRWcLYA0+t6JRv7rxotC/Ls8rQICpCEVSCQiiBAnjcFzBXbMdYyChD5uUluWz3d/t3PvbB4W+fjD2QgPqmJaXXem983aZeXpNn9WFhvChARFEk4JGIZcA4YEcyJjGM70cw4kiwkogzlHJdurBSznR8c2jLpCH3JWDRwfdL/1Y6tl4zUvNCTIKNo1KccRzx+C9ZPOoSCragf48BnBFGSElghJGZ66wvpNsb9m2cXXlPAauOfSn+rl5a32bdmhZDSbxcEpHs43jRmJ29X0SAQvSJssVYmFyNYAQR0qIYMcSkr4w3U2c37tv0RuKuAk7dOv/2aat7LiFN4pyLENQdHAhhAbxrvyPEgzMHkdHClDxEokoFdZ6ts3rPv3NHAbMb11T/ot9YyjJRLooFBO3sYjZx2BaQsLP1l8Kz3bOfMzGZRqFiAVqQAjuhiox+6eTi/SvrJ/QR8ErjBv66Kb98k2WGxWmzOd0ddF0gAHLebT5qOc1cxE8wepgQqkEvKiKOAkJGDHG9qYFGz43Fjavm87aAZT9uCyM2OPy8lJ0rYgKoNYFTYxBAXAjbzsQoWditfcBtPGyzEiLQApgUQ6FRFYkQXJbCpYvTOYUZawvYMGGB3GXpz6TD0cFRO0PH0pgrhrgRpy7Efdn7doQVITW36x7qmzlEBSJOGjsU6M0mzZ6uyW4JrhhmDaJ15Ow6OzX1i4i6DQli/FsOSsCaYY8YslfEvsQFHPM8uS5wyGi/6glIW3wVLMiCjRQ8jd62I0KCPhcE6oKdPZArNOsCTyMlxYQoz5FxnrXvGd3pka4AyQqVEQHEAdY39oOnvRGiQgLUKbvxFKfOAiXGhAWWkMssIYZrGMP9W/mkK8AygzHInsFANPrB+lzhaYkCtGF5I+RlnWd9YEiUGUIq4SghEvGclbOC3jmgiUT9fwCj0kaDNXTocoFA9cE/p/ngCsgzORPUyQSWA4nApDAwdAo1R6CDxbDNYM/r2A34H2DiaPmi5cQInQ+D04orIFJgOnW8mIFh+kFJYd4mxlHDUDJYcxrzUiFWXqCOYCG6IyZIBBiOKECQiMD32FBxyhUQ15g2WAxIdUoOhBq91uhYwShgcjlNHaDzml1XZ9v5RNhCAlRE0Iv4Gaao9IIrYCjDtSBKBBlD1LOEHIi0LMnazhyjgK81XCI1S0TB86a9zejWs088kZwHtgiROAIC7BhE3JDKVldAeYA9EssVuuQMzThLM8wSACFknsemySkqSvJAnICuhy0IIuhBpIrekeyUBwtVI4k0Wzag2RWgSua5h6Kh7yE7p7mc7JzMbethnPVI+0AG96gLICTvFxLwekQSkTisssnShNOugIbl9frgsPBViWF0ZFK03tR2J3vZ13ha3ifUgUzKYsmOC/RAUqgIcCLLIyMeTwllxZ/X7fiw0Od9YNe7045VDxS+wLW3cikiAMjztOnAfnBEl53G87J3mlS1ewgOH8Hrhzw9lmU7WtzYyq21hz5queMb0eiK4LpHkmiv1EtIIfNCmmQOQjSapVd3j1ijZQB3LEdAnu4M2CFZAVkjSluFkSVr7vpKtm75lEzVYHbZkLj1U6YHoVwvsf72xrvd/j4iJLotJSpCIuSoPH4iNHLAW7Wb3+y451vxjo+ntw8pFRYOijAHZCwg3Y3XodvOOQFdyykUvyDaIyZYn8bkORGxxZHWUEViYU3j0jP39V3Q+nVde9nA+PwRFcIaEZldUBIog0aPYeW2HeDaL9M5eLaXQSbH93KVkU+jgxLzph5d/OcDfRkdbxyfOXO89r2SRPSFoRVcA88oPVKKlKWQIv1h7xQH0KS4bCqUzdIyVjm7I5yMzqk/O2fZxFNzuh7408z5nTs35UiiSFgyaGBi8qjRgRXJEma/KKI20zBvGaoh6QQ9lmCd54qZQ8EqYWW8NDFlUEnZopqLNS39fhvezyf0kZNTCz+fnfLrnlM1a5suT6/f3z1j1O7U8wO2pWdGN2Osz8wsWd393MMrrkyf9tpv01a/2Dbp+Pjj1VJ/68LvH9f5eR16/VvHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAAlCAYAAACONvPuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjA1QjI4QTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MkE1MjFGODc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2k7HQAAAAKVJREFUeNpiZEAAIyCOAWINIBYDCTBCJRLExcXrFBQUBAUEBNjY2dmZGRkZGVigOrK0tLTEQaq+f//+/9u3b39AbJBklr6+vuqvX78YgKr/I1kDllRhY2NjB9L//v9HkQNL8jAxMTGiS4AAE5TGlIHqhMhi0ckCk6CR5L9///7jlMTpWrySBL1CnrGUSdIg+AYwynBKgsFg8CcTAx5AIwfhtRMgwABg9KLwDJeKlwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAlCAYAAACDKIOpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjA1QjI4RTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjA1QjI4RDc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lugQ8wAAADlJREFUeNpiYGBgOMPg7+//nendu3d/mf7//8+ARABlGdDFwMS/f//+Y5XAVEesEuzmYXMBSAwgwAAGDGVWQ3ijRgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAAlCAYAAACONvPuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjA1QjI5Mjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjA1QjI5MTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yLs/YAAAAL5JREFUeNq8UTsOwjAMdawqQhE7F0AMXXKU3qPH4CQMHAchRsauZQgdSVpq7KIuVRQJQXiSFfk9f2I9BQAneOPGceU4EtFZCFVV1YMT8N4/u64LTdPc27bdM3conHPDVKUUGGN0WZYbFmvOLyhdEuM4Qt/3FEIAa+2W6+tChAVIa73idxcTAREVP2uEOKaOaOeMqDhzX4h8H2UY+/EpuUXxcQkxPsPO5NjfWJbcGfOT/u3nzCEkkOlDyZ0vAQYApzrDr3PIkEgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjEwNDgxMzc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjEwNDgxMjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0BG1dwAAABpJREFUeNpiZGBgOCMvL6/5+/fvvwxoACDAAGiOBUKTvH+gAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjEwNDgxNzc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjEwNDgxNjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aFUCMAAAABVJREFUeNpilJKS+sQABEwMUAAQYAASUgFE0B817AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAABCAYAAAASC7TOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjEwNDgxQjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjEwNDgxQTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vZzRAQAAABpJREFUeNpilJKS+sSABlhZWZkfPnx4HSDAAClOBM5s/AWUAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAADCAYAAABfwxXFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMTY1NDg1Mjc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMTY1NDg1MTc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Sc/CAgAAAClJREFUeNpiZGBgOCMvL6/5+/fvvwxogAVMsLAwMWABjCCdDDgAQIABALFWBiGZGU1kAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRjE4MTIzMjc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRjE4MTIzMTc5QjIxMURGOTRBOUM2MzdGNkY1NTc0OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc2MkNBQkQyM0EyMDY4MTE4RjYyODQyQTVDMkY3NDA5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+paGDHwAAABhJREFUeNpikJKS+sTEysrKzAAEZwACDAAP1QIhnbQ19QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/HUD/CPWindowHUDBackground8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAcAAAADCAYAAABfwxXFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOTEwOURERjZGQUFGMzZEMiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMTY1NDg1Njc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMTY1NDg1NTc5QzExMURGOTlFOUVERTYwMkY2OEY2MyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE5QjU3REYxMTg2REM2ODM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5MTA5RERGNkZBQUYzNkQyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8Yt1RQAAACtJREFUeNpilJKS+sSABlhZWZkfPnx4nQXEQJdkYWFhAtGMQHyGAQcACDAAWtgFv4rp/QcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButton.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgJJREFUOE9dkzmPUlEYhmcSbbQ2sdBY2NpgqXZWdv4HLZyfYE/ClgkEQtjXAsMmS1gbKkJjKMYCGpZAQAts6AZH8vk9J/dOmDnJm3x5t3vOveeeicjZCc673e6TQCBw6fF4rpxO5xEww6HhOc2chh+kUqmPXq/3t8vlEg2JzgbMcGh48N4veJjNZr+43W7x+Xzi9/slGAxKKBQyYIZDw4OXjF1wPh6PX6l4jSkcDksikZB0Oo3RgBkOzSq6JkOWgsf5fP6bnlGi0ajoFoW1Wq2kXC4brNdrw6HhwUuGLAUv4vH4LwQlJZfLyXa7NYHlcmnAgkPDg5cMWQpeRyKRI1stlUpSLBYlmUzKfD43QRYzHBoevLFY7K9KDgreZjKZm0KhIPV6XZrNpjEtFovbAmY4NDx49b3cqPTGFFSr1b1taLfbstvtTHAymRiw4NDsB5CxCxzD4fBnpVKRVqsltVrNBGazmejRDJhZaHjwkiFrXuJ+v3ereLQLeNucmScBZji7AC8ZsuYzKj7oU36wPQycs9FoSKfTMWCGQ8ODlwxZc5EUzxQX+qmuBoPBsdfrSb/fvwM4tM1mw9YvrIy5SOYqK14qPh0Oh+p0Ov0zGo3+EQLMcKp9V89ny3t7lW3wgzxVvFd8VeQVfQvMcGh4TPh+gX2cR4rnCofinQVmOLQ7v/N/0NkPdZCIgQoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAe9JREFUOE9dk7vL0mEUx98Xaqk5aCgaWltsrLamtv4HRft5Q8Ur4v0+NLpLCIFQe4M4a4u/FBcXpwJpaZHoTU7nc/AJfR/4wuF7Ob9zHh+vROTqDNfj8fhBJpN573meHwwGj4AaDg3PeeY8fKfZbL5V849QKCThcPgCcGh48N5ucLfdbr/DFIlEJBqNSjwel0QiYaCGQ8ODl4xrcD2bzZ5p99+Yksmk6LiSy+WkUCgYqOHQ8OAlQ5YG97vd7sdYLCbpdFqy2axwVquV1Ot1w3q9Ng4ND14yZGnwpFQqfUcoFouG7XZrgeVyaeDAOR0vGbI0eJ5KpY6MWq1WpVKp2Mi+71uQQw2HhgevTvNHpQANXmrXm3K5LHrDXJA0Gg1bwR1qODQ8ePP5/I1KL6zBYDD4RWcMupvsdjsLLhYLAwcODQ9eMq5BYDKZfKvVatLpdOwLHHZnV+DuAQ0PXjJk7RL3+31fOx8RGZV9uXG+BKjh0PDgJUPWfkbFm/l8/pXx3BStVkt6vZ6B2n0dD14yZO0hKR4pvM1m4w+Hw2O/32fHC8Ch6ZtgdO+UsYdkT1nxVBE8HA6fptPpz9Fo9JcQoIZT7bN6Qifv/6fswB/koeK1oqT4oPhyAjUcGh4L327g1rmneKwIKF6dQA2HdvF3/gckQc2QEBVViQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApdJREFUeNp0Ul1LVFEU3efeuV/jOMM4Ew5qJgzlRAmOIxKTEP6A/oDRa0+B8ywiKCI++KD0C3zxByT0ZA+BYYw2DmKkWUaWY4JFaOrMvd572uvgiBQdWNxz91lr73X2PmJsbIzqa3R0VJSHh9s3pBz2qtUHvufdRFw3jG3Dtl/dFWKye3Jyd3x8XNY12hVxaGFk5HG5Wl09//37iR4EnaauawD2iOEMHHAvEwghIDaeT0wUDo+P55icNE2TLMsi27YVsEcMZ+CACw20QkopNufnc29KpdemlKZhGARomqaAFQSBgud5Cq4Q7r2envuZwcG3sBLeqlRGLCLT4mqqEn9v5HLU2tVFJCXtrq/T11KJQrUa6bpOolYzockQPUKCpHd6mq9bRvXrfX2UGRi4bG5XKkWCv/ucpO4KGmjxl5Cum0BlAISObJb+Xu3d3eqszhOeF+dwExw4lmlKIxRS1XFH2PzfAsf3ffJJmXKUHyceP1N3466iyuby8j/Cjysr6hwAN9zUdIY4HJzGW1q+He3sZCAOsZPPxSJ5rkvp3l7uoaRt/v++sUGxcPhyOlHWsPYMCX525nIvipXKLZ6VhgSN3My91VX6tLSkqjuOQ42RiEqOcUrbDqCBFlc4bOzoWORq6wH/wCImEovFKJlMKkSjURXDGTjgQgOteki8aWU8PCiXn35ZW8v4JyfqhV5duIre0BDwNLZS2ewzDi0w9vQIW8vn82jIYSSV2r/W1kbnmtbMVi23WhWSEzmJRBBPp3919vcvxtLpOea+ZFSmp6d9MTU1pewVCgX1qBh3GH2M24zmCwMHjPeMIuMd48fMzIxX45cZwkxd7vjs7Oz50NAQiEeMDxfJGi4SnMAhhOg8cyU00P4RYAAZ2RK8jm+p0AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApNJREFUeNpkUt9LU2EY/s7ZOcfNjUltYBmlGPkrNSOL0mCbE+xiXepNBBM0hY3RdXTdH2Db1aDhH9BVGPljwsQIyqWE1cy70FKsyGE7bDs7p/f53CeWBx7OOe95nud9v+e8UjgcZuJKpVLScix24U0+/6ik6z6jXL6EuqKqm5rDkbnldj+5PTX1dXR01BIa+ZhYeTYxcT+zu7tS3N9/IBlGqypJMoBn1PANHHD/MaCCmozFHm7t7U0T2auqKlMUheF+/BnfwAEXGmgly7KklWTy2qt0+rVqmprNZmMCkiTxLsRhlUrlCGVZLt0JBvt7x8ezGKU2u7HxWLMsTal2s9ntrCsQYO19fcw0Tba+vMw+ZTLMVioxwzAwiQZNL2P3YODV8/k+CDVN4wZdg4Osf3j4KNz6piZ+3yQTWT6MDRpo8eYxCgWPOC/G7hkYYP9fPX4/FwueVSyeovJpGDiosyXOzX+bopwwEHkIHpmh4ODz1Ho8erXIie9mZ08YvF9cPPxtxAHX6fXqvBmhcLa5eWt7ba1NdMiSQalcZld8Ph7iKolzFKSTMhLTQIMoYPDrZjD48nku10IRy+hQS2dcn5tjqzMzXIBwHfRnYA5DZreb0ECLI/zwtLQsXB8a+mCSswjK5XIxt9vN4XQ6uQk6gwMuNNDyRaKHc4S7m0tL0ez8fButrSxCExeWqaauzrwaDG60+v1PqfSCsG3b2dlhoVBI55M0Nn6/2NHBiqZZb1QqNfrBgWSRUV1Dg3m+u/t3YGRk4Uxn5zRx04Rvk5OTFWlsbIyPl0gk+FIRLhNuENqxQ9UBdgmfCW8JHwk/I5FIuUSbqSAUrGc0GjXi8TiIecKXqpmzavAHE0KI5IlrQQPtXwEGAI4lFJG9vogeAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmtJREFUeNp0UzuLmkEUne/zrati4ou1V4JrBAkpbARJsRYhvY1FmqSTsEUgKGhlYb9VBGH/QSBKMGLaECxiJJjOIuLqJoFofD9yzsRPtsnAYYY795y5586MUigUhDby+bxSr9fdvV7v5XK5fLRer88YNxgMX0wmUyMUCpXOz89visXiXuOot8j6SqXypNPpfJ7P5y8Qum80GlWCa8a4xxzmajwFaiKXyxmq1erT4XB4qdPphF6vF5wVRZFJ+/1ebLdbsdls5Oz3+59nMpnX2F8r2FTa7Xa42Wx+AtGEEwVBciqVkgK1Wk2KrFYrCQgtk8nkg1gs1mV51m63+wo+TRaLRdhsNgmKnJ6eSnCtxZnDXHLIpRf3YrFImM1mYbVaBWckiNlsdmwu7ZBIa6r6r23kkEuBu/DlOyiLRCIhvF6vuD3S6bScR6ORgFV5CG7JjdAdClgQ2LHb9E2P/xvcYw4t7XY7dtgir8PhcMxQhYPrRqMhJpMJTxAXFxeSWC6XBd6BsNvtsg+04XQ6pUcKzHw+Xx9XGKEybTBxOp0eT/Z4POLk5ET2gmAl5GBrToGfkUjk7Xg8DkNZ1a6Qo9/vy5lkivIq+RYgsiOHXLb0BhY+INCGr+Op7Hir1ZLgWhvMYS455MqHhEUAeDwYDJ7hH5yhRJWn4S+Iw1/QmrcLBoPdQCBwifAb4LuO5cXj8TnVUOY1NrcgewETylXpGQ3b4vn+ikaj71wu1xVy3wMDiG6VUqkkO5zNZuWjAsLAQ+Ae4DtUfg18BT4CXeAH/4G0ys9xuN8NTmXib+DbQcx2EPjDCklk55F7/M5/BRgAk6YORNXAcuoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnRJREFUeNpcU79rWlEYvc/fGiJaTVPTJYqLPKcQHGuGZtPVxcFIHcx/UJB0qAr9B0SX6tIsri0daouhS0BCpqrgEOzQxkDaQsUnjT7tORefpL1wvNf7fed83z33PuXo6EgYo9FoKKenp/7Ly8vn0+n06d3dXZT7Npvti9Pp/Li3t/cqnU7fZrPZpcFRDAGQLcViMXF9fV2dzWaPTCaTuD8Wi4WwWq2jQCBwfHJy8g4i87UAyNZyufxsOBxWzWazICigKIokL5dLKaDrusTu7u5xoVB4jfhMQVA5OztTm83mBTbsFotFECTn83kpUKvVpMh8PpfA+k8qldo/ODjosk/X+fl5ARXtGMLhcAicl+2KcDgswTX3GGMOc8kh14If/3g8jsMoGeTMI8DA9fn539g3vCGHXAr44Pg2yWw9k8mIUCj0j4GlUknOV1dX9EseB0b7sfWAAk60toC6lL5f+f9hxFiI3pFLAeH1erXJZOLmul6vC3TECtI8Dppp+EBwuN1ujTOrasFg8CtdZ9Lm5qbw+XzC4/GsK3PNPcaYw1xyEJqyg5+4jveDwUBFwESjjPvv9Xpypvsul0uene8AIgtyyOU72MDiSafTedlqtfaNN8DzwmkpwMq8BeMtHB4eXsRisRcIfVZWZjwGkv1+P99ut6MgmoxqxjVSFEKLeDzeVVW1iu23wDfzaDQSiURiij+3W1tbN9FoVMezfQjYNU0z8d7x/vVIJPIrmUx+2NnZeYPcT8B3iOpKLpeT7VUqFfmoABWIARFge+XjDdAHOkAX+MHvQF4pPxKeCxtztM3E38BgJbaxEpiwQxLpPHLXn/NfAQYAVxYSIuMwPrYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjdJREFUeNqEUzuLGlEYvTM+xvcj0ShYWkhYjSAhhRYBSWGXP5FeSRUICFpZWOgfGBDSpwuyGCFgFRaLNUMwXZrg4iYBIb5nzDk3juwuC7lwQL/vnPM97h2l0WgI+9TrdaXf78em0+mbzWbzYrfbZRl3uVxfNE0bZDKZVqVSuW42mwdbo94QO3VdfzmZTC5Xq9VrhJ643W6V4G/GmCOH3JOBoigUu3q93qv5fP4e/5Mej0d4vd5bYIw5csilhlrlcDgo4/H4bDgcXjidTg0VBeFwOISq/mvQsixhmqbYbrcS+/1+Uy6XnxYKBYMMn2EYbzGnxkp+v18iEAjcgh0nh1xqqOUssfV6/Zwt+nw+2SoI93aADk8xaqilwUMkE/acJJVKJRGPx8XNg9nFaDSSHBrilmIIP6CBF0HruPHTrHcPY9iX3A92QBOFWnkdoVBoCWHIbm8wGIjFYiHNeDgOOCISicgR2GU4HF4yR4NlIpH4PpvNcnaSRC6OFXl4XYyzOtsnjxqkVjT4lcvlPmDGM74LJrmP+w4NaYCOLGqoZc/XaO8TAmMm/3fIIZcaauUIwCSdTuuo7MZ3kMXC5Au9Wx0jWNls1kilUjo11Do4a7FYXNEtGAxeIWmC/AiVNFyVelyymUwmf+fz+fNoNPoOoY/Aj3a7bSqtVkvgSxO1Wk0+KoC7eAY8BhLHBq6Ar8BnwAB+djqdHQoIp33v3W53X61WSVwA345m/qPBH3ZIITcP7oEaav8KMADyzRBm/XofAgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAk1JREFUeNqEUj2LGlEUfTOOjhoVTDQrdpai2UKCrRax09YiIihYGPQHBFKKkB+gpNPCbGOzTUgREjSFCCHYJEMghRKL6MImAT9Gos6Yex4+GLbJg4POfefce+69TyqVSkycbrcrXV1dBSaTyfPdbvdkv9/HEXc4HF9dLtf7RCLxslAo3JbL5ZPQKBax0mg0sovF4tXhcAjJssxsNhu/MwzjcrVaXY5Go6fT6fQZcd9QkiPu5LPY3mw2K/P5/No0zRBVRFWmqiqH+MYdOOBCA610Op2k4XAY6/f7nyVJUhVFYQCqwwUOCeGCHY9HDtL8zefzj9PptAaGezwevyCyimpOp5NRvxz4f/cbHHChgRYzCKzX65SwjF9UB8gRd0AVuQOrK2igRYIHNPELq7hYLLJIJMKsZzabsV6vxzlISIMOUPg+ErjImklCGb2jX1ofu3sQgxAcuMHsoOVr9Pv9+na79Ql7nU6H6brOk/FVUdztdjOPx8PEen0+ny7egU52f2ia9gg9o4LX6+VDsx6xGbgADxoK71DyN63jrd1uN0U19ImKViAmHIILDbSI3AaDwY+ZTGaC7P874IALDbS8BcKXZDLZIeuOwWAQpxXJYoVWId2bqVRKi8ViHWigtS2XS5bNZndnJzfxeNyg4T2kSaubzYZ7DoVCRjQa/ZPL5d6Fw+HXFPpA+FmtVg2pUqnw/trtNn9UhBghSYgSLs4GbgjfCJ8IGuFXrVY7YLUKVoX3Xa/Xj61WC8QV4fs52b1zgi0cQojJE/cEDbT/BBgAoZsTVzzPeQgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardTop0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAApCAYAAAAWNlirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF1JREFUOI1jqa2tZQCB3NxceyBVBMTGQCzNAhLMycmp+P//fzsDEmABCoJUtjKgAZbv379P5uDgYMKQYGZm1kQXBEuAANB8TAlsgiND4t+/f6OW09/yISaBVZQsHQCsMHUPEsgdpgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardTop1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAApCAIAAAB7iNSFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUCFtjevXqFdP///+ZGBgYUGhi8b9//8gWw4eR3AMAjT9unIbIdHUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/CPWindow/Standard/CPWindowStandardTop2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAApCAYAAAAWNlirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF5JREFUOI1jefXq1X8GBoanQHwWiPuA+CAQM7D8/w8SZ5CGYj8grgTiDhYGTNAKxEdgOpAB048fPyZj08HAzMysg00HAwsIYJNAdtXwlfj379+o5fS3fIhJYBUlSwcAax55fnDttN0AAAAASUVORK5CYII= +*/ ADDED Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLPaths.txt Index: Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLPaths.txt ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLPaths.txt +++ Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLPaths.txt @@ -0,0 +1,1 @@ +@STATIC;1.0;u;57;Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.pngu;65;Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png105;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow1.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow1.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow3.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow3.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow4.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow4.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow5.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow5.pngu;42;Resources/_CPMenuWindow/_CPMenuWindow7.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindow7.pngu;50;Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.pngu;50;Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded0.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded0.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded2.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded2.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded6.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded6.pngu;49;Resources/_CPMenuWindow/_CPMenuWindowRounded8.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPMenuWindow/_CPMenuWindowRounded8.pngu;53;Resources/_CPToolbarView/_CPToolbarViewBackground.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPToolbarView/_CPToolbarViewBackground.pngu;67;Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.pngu;58;Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png98;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.pngu;56;Resources/_CPWindowView/_CPWindowViewResizeIndicator.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/_CPWindowView/_CPWindowViewResizeIndicator.pngu;27;Resources/action_button.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/action_button.pngu;28;Resources/brightness_bar.png68;mhtml:Browser.environment/MHTMLData.txt!Resources/brightness_bar.pngu;38;Resources/browser-leaf-highlighted.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/browser-leaf-highlighted.pngu;26;Resources/browser-leaf.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/browser-leaf.pngu;36;Resources/browser-resize-control.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/browser-resize-control.pngu;24;Resources/color_well.png64;mhtml:Browser.environment/MHTMLData.txt!Resources/color_well.pngu;31;Resources/CPApplication/New.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/New.pngu;42;Resources/CPApplication/NewHighlighted.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/NewHighlighted.pngu;32;Resources/CPApplication/Open.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/Open.pngu;43;Resources/CPApplication/OpenHighlighted.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/OpenHighlighted.pngu;32;Resources/CPApplication/Save.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/Save.pngu;43;Resources/CPApplication/SaveHighlighted.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/CPApplication/SaveHighlighted.pngu;43;Resources/CPImage/CPImageNameColorPanel.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImage/CPImageNameColorPanel.pngu;54;Resources/CPImage/CPImageNameColorPanelHighlighted.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImage/CPImageNameColorPanelHighlighted.pngu;53;Resources/CPImageView/CPImageViewBottomLeftShadow.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewBottomLeftShadow.pngu;54;Resources/CPImageView/CPImageViewBottomRightShadow.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewBottomRightShadow.pngu;49;Resources/CPImageView/CPImageViewBottomShadow.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewBottomShadow.pngu;47;Resources/CPImageView/CPImageViewLeftShadow.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewLeftShadow.pngu;48;Resources/CPImageView/CPImageViewRightShadow.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewRightShadow.pngu;50;Resources/CPImageView/CPImageViewTopLeftShadow.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewTopLeftShadow.pngu;51;Resources/CPImageView/CPImageViewTopRightShadow.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewTopRightShadow.pngu;46;Resources/CPImageView/CPImageViewTopShadow.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/CPImageView/CPImageViewTopShadow.pngu;42;Resources/CPMenuItem/CPMenuItemOnState.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/CPMenuItem/CPMenuItemOnState.pngu;53;Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/CPMenuItem/CPMenuItemOnStateHighlighted.pngu;67;Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.pngu;67;Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.pngu;67;Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.pngu;70;Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.pngu;70;Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.pngu;70;Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.pngu;75;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png115;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.pngu;75;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png115;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.pngu;75;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png115;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.pngu;78;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png118;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.pngu;78;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png118;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.pngu;78;Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png118;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.pngu;73;Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif113;mhtml:Browser.environment/MHTMLData.txt!Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gifu;47;Resources/CPSearchField/CPSearchFieldCancel.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldCancel.pngu;54;Resources/CPSearchField/CPSearchFieldCancelPressed.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldCancelPressed.pngu;45;Resources/CPSearchField/CPSearchFieldFind.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldFind.pngu;47;Resources/CPSearchField/CPSearchFieldSearch.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSearchField/CPSearchFieldSearch.pngu;50;Resources/CPShadowView/CPShadowViewHeavyBottom.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyBottom.pngu;54;Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyBottomLeft.pngu;55;Resources/CPShadowView/CPShadowViewHeavyBottomRight.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyBottomRight.pngu;48;Resources/CPShadowView/CPShadowViewHeavyLeft.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyLeft.pngu;49;Resources/CPShadowView/CPShadowViewHeavyRight.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyRight.pngu;47;Resources/CPShadowView/CPShadowViewHeavyTop.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyTop.pngu;51;Resources/CPShadowView/CPShadowViewHeavyTopLeft.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyTopLeft.pngu;52;Resources/CPShadowView/CPShadowViewHeavyTopRight.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewHeavyTopRight.pngu;50;Resources/CPShadowView/CPShadowViewLightBottom.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightBottom.pngu;54;Resources/CPShadowView/CPShadowViewLightBottomLeft.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightBottomLeft.pngu;55;Resources/CPShadowView/CPShadowViewLightBottomRight.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightBottomRight.pngu;48;Resources/CPShadowView/CPShadowViewLightLeft.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightLeft.pngu;49;Resources/CPShadowView/CPShadowViewLightRight.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightRight.pngu;47;Resources/CPShadowView/CPShadowViewLightTop.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightTop.pngu;51;Resources/CPShadowView/CPShadowViewLightTopLeft.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightTopLeft.pngu;52;Resources/CPShadowView/CPShadowViewLightTopRight.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPShadowView/CPShadowViewLightTopRight.pngu;47;Resources/CPSplitView/CPSplitViewHorizontal.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSplitView/CPSplitViewHorizontal.pngu;45;Resources/CPSplitView/CPSplitViewVertical.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/CPSplitView/CPSplitViewVertical.pngu;51;Resources/CPTabView/_CPTabLabelBackgroundCenter.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelBackgroundCenter.pngu;49;Resources/CPTabView/_CPTabLabelBackgroundLeft.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelBackgroundLeft.pngu;50;Resources/CPTabView/_CPTabLabelBackgroundRight.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelBackgroundRight.pngu;49;Resources/CPTabView/_CPTabLabelSelectedCenter.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelSelectedCenter.pngu;47;Resources/CPTabView/_CPTabLabelSelectedLeft.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelSelectedLeft.pngu;48;Resources/CPTabView/_CPTabLabelSelectedRight.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelSelectedRight.pngu;46;Resources/CPTabView/_CPTabLabelsViewCenter.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelsViewCenter.pngu;44;Resources/CPTabView/_CPTabLabelsViewLeft.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelsViewLeft.pngu;45;Resources/CPTabView/_CPTabLabelsViewRight.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/_CPTabLabelsViewRight.pngu;54;Resources/CPTabView/CPTabViewBezelBackgroundCenter.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBackgroundCenter.pngu;44;Resources/CPTabView/CPTabViewBezelBorder.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBorder.pngu;48;Resources/CPTabView/CPTabViewBezelBorderLeft.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBorderLeft.pngu;49;Resources/CPTabView/CPTabViewBezelBorderRight.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPTabView/CPTabViewBezelBorderRight.pngu;51;Resources/CPToolbarItem/CPToolbarItemSeparator0.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPToolbarItem/CPToolbarItemSeparator0.pngu;51;Resources/CPToolbarItem/CPToolbarItemSeparator1.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPToolbarItem/CPToolbarItemSeparator1.pngu;51;Resources/CPToolbarItem/CPToolbarItemSeparator2.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/CPToolbarItem/CPToolbarItemSeparator2.pngu;38;Resources/CPWindow/CPWindowShadow0.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow0.pngu;38;Resources/CPWindow/CPWindowShadow1.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow1.pngu;38;Resources/CPWindow/CPWindowShadow2.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow2.pngu;38;Resources/CPWindow/CPWindowShadow3.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow3.pngu;38;Resources/CPWindow/CPWindowShadow4.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow4.pngu;38;Resources/CPWindow/CPWindowShadow5.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow5.pngu;38;Resources/CPWindow/CPWindowShadow6.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow6.pngu;38;Resources/CPWindow/CPWindowShadow7.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow7.pngu;38;Resources/CPWindow/CPWindowShadow8.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/CPWindowShadow8.pngu;37;Resources/CPWindowResizeIndicator.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindowResizeIndicator.pngu;19;Resources/empty.png59;mhtml:Browser.environment/MHTMLData.txt!Resources/empty.pngu;31;Resources/FIXME_ImageShadow.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/FIXME_ImageShadow.pngu;25;Resources/GenericFile.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/GenericFile.pngu;34;Resources/HUDTheme/WindowClose.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/HUDTheme/WindowClose.pngu;40;Resources/HUDTheme/WindowCloseActive.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/HUDTheme/WindowCloseActive.pngu;26;Resources/minus_button.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/minus_button.pngu;25;Resources/plus_button.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/plus_button.pngu;27;Resources/slider_button.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/slider_button.pngu;29;Resources/slider_button_h.png69;mhtml:Browser.environment/MHTMLData.txt!Resources/slider_button_h.pngu;37;Resources/standardApplicationIcon.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/standardApplicationIcon.pngu;25;Resources/wheel_black.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/wheel_black.pngu;26;Resources/wheel_button.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/wheel_button.pngu;28;Resources/wheel_button_h.png68;mhtml:Browser.environment/MHTMLData.txt!Resources/wheel_button_h.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground0.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground0.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground1.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground1.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground2.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground2.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground3.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground3.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground4.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground4.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground5.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground5.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground6.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground6.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground7.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground7.pngu;49;Resources/CPWindow/HUD/CPWindowHUDBackground8.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/HUD/CPWindowHUDBackground8.pngu;59;Resources/CPWindow/Standard/CPWindowStandardCloseButton.png99;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButton.pngu;70;Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.pngu;66;Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png106;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.pngu;77;Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png117;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.pngu;62;Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png102;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.pngu;73;Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png113;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.pngu;62;Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png102;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.pngu;73;Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png113;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.pngu;52;Resources/CPWindow/Standard/CPWindowStandardTop0.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardTop0.pngu;52;Resources/CPWindow/Standard/CPWindowStandardTop1.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardTop1.pngu;52;Resources/CPWindow/Standard/CPWindowStandardTop2.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/CPWindow/Standard/CPWindowStandardTop2.png ADDED Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLTest.txt Index: Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLTest.txt ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLTest.txt +++ Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/MHTMLTest.txt @@ -0,0 +1,9 @@ +/* +Content-Type: multipart/related; boundary="_SEPARATOR_" + +--_SEPARATOR_ +Content-Location:test +Content-Transfer-Encoding:base64 + +R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== +*/ ADDED Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/dataURLs.txt Index: Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/dataURLs.txt ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/dataURLs.txt +++ Site/Site_Z/Frameworks/Debug/AppKit/Browser.environment/dataURLs.txt cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/CommonJS.environment/AppKit.sj Index: Site/Site_Z/Frameworks/Debug/AppKit/CommonJS.environment/AppKit.sj ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/CommonJS.environment/AppKit.sj +++ Site/Site_Z/Frameworks/Debug/AppKit/CommonJS.environment/AppKit.sj @@ -0,0 +1,38756 @@ +@STATIC;1.0;p;15;_CPCornerView.jt;1835;@STATIC;1.0;i;8;CPView.jt;1804; + +objj_executeFile("CPView.j", YES); + +{var the_class = objj_allocateClassPair(CPView, "_CPCornerView"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("layoutSubviews"), function $_CPCornerView__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); +} +},["void"]), new objj_method(sel_getUid("_init"), function $_CPCornerView___init(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); +} +},["void"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPCornerView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCornerView").super_class }, "initWithFrame:", aFrame) + + if (self) + objj_msgSend(self, "_init"); + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPCornerView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCornerView").super_class }, "initWithCoder:", aCoder); + + if (self) + objj_msgSend(self, "_init"); + + return self; +} +},["id","CPCoder"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $_CPCornerView__themeClass(self, _cmd) +{ with(self) +{ + return "cornerview"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $_CPCornerView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null")], ["background-color"]); +} +},["id"])]); +} + +p;18;_CPDisplayServer.jt;2124;@STATIC;1.0;t;2105;; +var displayObjects = [], + displayObjectsByUID = { }, + layoutObjects = [], + layoutObjectsByUID = { }, + runLoop = objj_msgSend(CPRunLoop, "mainRunLoop"); +_CPDisplayServerAddDisplayObject= function(anObject) +{ + var UID = objj_msgSend(anObject, "UID"); + if (typeof displayObjectsByUID[UID] !== "undefined") + return; + var index = displayObjects.length; + displayObjectsByUID[UID] = index; + displayObjects[index] = anObject; +} +_CPDisplayServerAddLayoutObject= function(anObject) +{ + var UID = objj_msgSend(anObject, "UID"); + if (typeof layoutObjectsByUID[UID] !== "undefined") + return; + var index = layoutObjects.length; + layoutObjectsByUID[UID] = index; + layoutObjects[index] = anObject; +} +{var the_class = objj_allocateClassPair(CPObject, "_CPDisplayServer"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("run"), function $_CPDisplayServer__run(self, _cmd) +{ with(self) +{ + while (layoutObjects.length || displayObjects.length) + { + var index = 0; + for (; index < layoutObjects.length; ++index) + { + var object = layoutObjects[index]; + delete layoutObjectsByUID[objj_msgSend(object, "UID")]; + objj_msgSend(object, "layoutIfNeeded"); + } + layoutObjects = []; + layoutObjectsByUID = { }; + index = 0; + for (; index < displayObjects.length; ++index) + { + if (layoutObjects.length) + break; + var object = displayObjects[index]; + delete displayObjectsByUID[objj_msgSend(object, "UID")]; + objj_msgSend(object, "displayIfNeeded"); + } + if (index === displayObjects.length) + { + displayObjects = []; + displayObjectsByUID = { }; + } + else + displayObjects.splice(0, index); + } + objj_msgSend(runLoop, "performSelector:target:argument:order:modes:", sel_getUid("run"), self, nil, 0, [CPDefaultRunLoopMode]); +} +},["void"])]); +} +objj_msgSend(_CPDisplayServer, "run"); + +p;21;_CPImageAndTextView.jt;11673;@STATIC;1.0;I;21;Foundation/CPString.ji;9;CPColor.ji;8;CPFont.ji;9;CPImage.ji;8;CPView.ji;11;CPControl.jt;11561;objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPColor.j", YES); +objj_executeFile("CPFont.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPControl.j", YES); +var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0, + _CPImageAndTextViewImageChangedFlag = 1 << 1, + _CPImageAndTextViewTextChangedFlag = 1 << 2, + _CPImageAndTextViewAlignmentChangedFlag = 1 << 3, + _CPImageAndTextViewVerticalAlignmentChangedFlag = 1 << 4, + _CPImageAndTextViewLineBreakModeChangedFlag = 1 << 5, + _CPImageAndTextViewTextColorChangedFlag = 1 << 6, + _CPImageAndTextViewFontChangedFlag = 1 << 7, + _CPImageAndTextViewTextShadowColorChangedFlag = 1 << 8, + _CPImageAndTextViewImagePositionChangedFlag = 1 << 9, + _CPImageAndTextViewImageScalingChangedFlag = 1 << 10; +{var the_class = objj_allocateClassPair(CPView, "_CPImageAndTextView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_alignment"), new objj_ivar("_verticalAlignment"), new objj_ivar("_lineBreakMode"), new objj_ivar("_textColor"), new objj_ivar("_font"), new objj_ivar("_textShadowColor"), new objj_ivar("_textShadowOffset"), new objj_ivar("_imagePosition"), new objj_ivar("_imageScaling"), new objj_ivar("_imageOffset"), new objj_ivar("_shouldDimImage"), new objj_ivar("_image"), new objj_ivar("_text"), new objj_ivar("_textSize"), new objj_ivar("_flags")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:control:"), function $_CPImageAndTextView__initWithFrame_control_(self, _cmd, aFrame, aControl) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPImageAndTextView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _textShadowOffset = { width:0.0, height:0.0 }; + objj_msgSend(self, "setVerticalAlignment:", CPTopVerticalTextAlignment); + if (aControl) + { + objj_msgSend(self, "setLineBreakMode:", objj_msgSend(aControl, "lineBreakMode")); + objj_msgSend(self, "setTextColor:", objj_msgSend(aControl, "textColor")); + objj_msgSend(self, "setAlignment:", objj_msgSend(aControl, "alignment")); + objj_msgSend(self, "setVerticalAlignment:", objj_msgSend(aControl, "verticalAlignment")); + objj_msgSend(self, "setFont:", objj_msgSend(aControl, "font")); + objj_msgSend(self, "setImagePosition:", objj_msgSend(aControl, "imagePosition")); + objj_msgSend(self, "setImageScaling:", objj_msgSend(aControl, "imageScaling")); + objj_msgSend(self, "setImageOffset:", objj_msgSend(aControl, "imageOffset")); + } + else + { + objj_msgSend(self, "setLineBreakMode:", CPLineBreakByClipping); + objj_msgSend(self, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(self, "setFont:", objj_msgSend(CPFont, "systemFontOfSize:", 12.0)); + objj_msgSend(self, "setImagePosition:", CPNoImage); + objj_msgSend(self, "setImageScaling:", CPScaleNone); + } + _textSize = NULL; + } + return self; +} +},["id","CGRect","CPControl"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPImageAndTextView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(self, "initWithFrame:control:", aFrame, nil); +} +},["id","CGRect"]), new objj_method(sel_getUid("setAlignment:"), function $_CPImageAndTextView__setAlignment_(self, _cmd, anAlignment) +{ with(self) +{ + if (_alignment === anAlignment) + return; + _alignment = anAlignment; +} +},["void","CPTextAlignment"]), new objj_method(sel_getUid("alignment"), function $_CPImageAndTextView__alignment(self, _cmd) +{ with(self) +{ + return _alignment; +} +},["CPTextAlignment"]), new objj_method(sel_getUid("setVerticalAlignment:"), function $_CPImageAndTextView__setVerticalAlignment_(self, _cmd, anAlignment) +{ with(self) +{ + if (_verticalAlignment === anAlignment) + return; + _verticalAlignment = anAlignment; + _flags |= _CPImageAndTextViewVerticalAlignmentChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPVerticalTextAlignment"]), new objj_method(sel_getUid("verticalAlignment"), function $_CPImageAndTextView__verticalAlignment(self, _cmd) +{ with(self) +{ + return _verticalAlignment; +} +},["unsigned"]), new objj_method(sel_getUid("setLineBreakMode:"), function $_CPImageAndTextView__setLineBreakMode_(self, _cmd, aLineBreakMode) +{ with(self) +{ + if (_lineBreakMode === aLineBreakMode) + return; + _lineBreakMode = aLineBreakMode; + _flags |= _CPImageAndTextViewLineBreakModeChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPLineBreakMode"]), new objj_method(sel_getUid("lineBreakMode"), function $_CPImageAndTextView__lineBreakMode(self, _cmd) +{ with(self) +{ + return _lineBreakMode; +} +},["CPLineBreakMode"]), new objj_method(sel_getUid("setImagePosition:"), function $_CPImageAndTextView__setImagePosition_(self, _cmd, anImagePosition) +{ with(self) +{ + if (_imagePosition == anImagePosition) + return; + if (_imagePosition == CPNoImage) + _flags |= _CPImageAndTextViewImageChangedFlag; + _imagePosition = anImagePosition; + _flags |= _CPImageAndTextViewImagePositionChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPCellImagePosition"]), new objj_method(sel_getUid("imagePosition"), function $_CPImageAndTextView__imagePosition(self, _cmd) +{ with(self) +{ + return _imagePosition; +} +},["CPCellImagePosition"]), new objj_method(sel_getUid("setImageScaling:"), function $_CPImageAndTextView__setImageScaling_(self, _cmd, anImageScaling) +{ with(self) +{ + if (_imageScaling == anImageScaling) + return; + _imageScaling = anImageScaling; + _flags |= _CPImageAndTextViewImageScalingChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPImageScaling"]), new objj_method(sel_getUid("imageScaling"), function $_CPImageAndTextView__imageScaling(self, _cmd) +{ with(self) +{ + return _imageScaling; +} +},["void"]), new objj_method(sel_getUid("setDimsImage:"), function $_CPImageAndTextView__setDimsImage_(self, _cmd, shouldDimImage) +{ with(self) +{ + shouldDimImage = !!shouldDimImage; + if (_shouldDimImage !== shouldDimImage) + { + _shouldDimImage = shouldDimImage; + objj_msgSend(self, "setNeedsLayout"); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("setTextColor:"), function $_CPImageAndTextView__setTextColor_(self, _cmd, aTextColor) +{ with(self) +{ + if (_textColor === aTextColor) + return; + _textColor = aTextColor; +} +},["void","CPColor"]), new objj_method(sel_getUid("textColor"), function $_CPImageAndTextView__textColor(self, _cmd) +{ with(self) +{ + return _textColor; +} +},["CPColor"]), new objj_method(sel_getUid("setFont:"), function $_CPImageAndTextView__setFont_(self, _cmd, aFont) +{ with(self) +{ + if (_font === aFont) + return; + _font = aFont; + _flags |= _CPImageAndTextViewFontChangedFlag; + _textSize = NULL; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPFont"]), new objj_method(sel_getUid("font"), function $_CPImageAndTextView__font(self, _cmd) +{ with(self) +{ + return _font; +} +},["CPFont"]), new objj_method(sel_getUid("setTextShadowColor:"), function $_CPImageAndTextView__setTextShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textShadowColor === aColor) + return; + _textShadowColor = aColor; + _flags |= _CPImageAndTextViewTextShadowColorChangedFlag; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPColor"]), new objj_method(sel_getUid("textShadowColor"), function $_CPImageAndTextView__textShadowColor(self, _cmd) +{ with(self) +{ + return _textShadowColor; +} +},["CPColor"]), new objj_method(sel_getUid("setTextShadowOffset:"), function $_CPImageAndTextView__setTextShadowOffset_(self, _cmd, anOffset) +{ with(self) +{ + if ((_textShadowOffset.width == anOffset.width && _textShadowOffset.height == anOffset.height)) + return; + _textShadowOffset = { width:anOffset.width, height:anOffset.height }; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CGSize"]), new objj_method(sel_getUid("textShadowOffset"), function $_CPImageAndTextView__textShadowOffset(self, _cmd) +{ with(self) +{ + return _textShadowOffset; +} +},["CGSize"]), new objj_method(sel_getUid("setImage:"), function $_CPImageAndTextView__setImage_(self, _cmd, anImage) +{ with(self) +{ + if (_image == anImage) + return; + if (objj_msgSend(_image, "delegate") === self) + objj_msgSend(_image, "setDelegate:", nil); + _image = anImage; + _flags |= _CPImageAndTextViewImageChangedFlag; + if (objj_msgSend(_image, "loadStatus") !== CPImageLoadStatusCompleted) + objj_msgSend(_image, "setDelegate:", self); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPImage"]), new objj_method(sel_getUid("setImageOffset:"), function $_CPImageAndTextView__setImageOffset_(self, _cmd, theImageOffset) +{ with(self) +{ + if (_imageOffset === theImageOffset) + return; + _imageOffset = theImageOffset; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","float"]), new objj_method(sel_getUid("imageOffset"), function $_CPImageAndTextView__imageOffset(self, _cmd) +{ with(self) +{ + return _imageOffset; +} +},["float"]), new objj_method(sel_getUid("imageDidLoad:"), function $_CPImageAndTextView__imageDidLoad_(self, _cmd, anImage) +{ with(self) +{ + if (anImage === _image) + { + _flags |= _CPImageAndTextViewImageChangedFlag; + objj_msgSend(self, "setNeedsLayout"); + } +} +},["void","id"]), new objj_method(sel_getUid("image"), function $_CPImageAndTextView__image(self, _cmd) +{ with(self) +{ + return _image; +} +},["CPImage"]), new objj_method(sel_getUid("setText:"), function $_CPImageAndTextView__setText_(self, _cmd, text) +{ with(self) +{ + if (_text === text) + return; + _text = text; + _flags |= _CPImageAndTextViewTextChangedFlag; + _textSize = NULL; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPString"]), new objj_method(sel_getUid("text"), function $_CPImageAndTextView__text(self, _cmd) +{ with(self) +{ + return _text; +} +},["CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPImageAndTextView__layoutSubviews(self, _cmd) +{ with(self) +{ + _flags = 0; +} +},["void"]), new objj_method(sel_getUid("sizeToFit"), function $_CPImageAndTextView__sizeToFit(self, _cmd) +{ with(self) +{ + var size = CGSizeMakeZero(); + if ((_imagePosition !== CPNoImage) && _image) + { + var imageSize = objj_msgSend(_image, "size"); + size.width += imageSize.width; + size.height += imageSize.height; + } + if ((_imagePosition !== CPImageOnly) && objj_msgSend(_text, "length") > 0) + { + if (!_textSize) + _textSize = objj_msgSend(_text, "sizeWithFont:", _font ? _font : objj_msgSend(CPFont, "systemFontOfSize:", 12.0)); + if (_imagePosition === CPImageLeft || _imagePosition === CPImageRight) + { + size.width += _textSize.width + _imageOffset; + size.height = MAX(size.height, _textSize.height); + } + else if (_imagePosition === CPImageAbove || _imagePosition === CPImageBelow) + { + size.width = MAX(size.width, _textSize.width); + size.height += _textSize.height + _imageOffset; + } + else + { + size.width = MAX(size.width, _textSize.width); + size.height = MAX(size.height, _textSize.height); + } + } + objj_msgSend(self, "setFrameSize:", size); +} +},["void"])]); +} + +p;29;_CPToolbarFlexibleSpaceItem.jt;1179;@STATIC;1.0;i;15;CPToolbarItem.jt;1140;objj_executeFile("CPToolbarItem.j", YES); +{var the_class = objj_allocateClassPair(CPToolbarItem, "_CPToolbarFlexibleSpaceItem"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithItemIdentifier:"), function $_CPToolbarFlexibleSpaceItem__initWithItemIdentifier_(self, _cmd, anIgnoredIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarFlexibleSpaceItem").super_class }, "initWithItemIdentifier:", CPToolbarFlexibleSpaceItemIdentifier); + if (self) + { + objj_msgSend(self, "setMinSize:", CGSizeMake(32.0, 32.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(10000.0, 32.0)); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPToolbarFlexibleSpaceItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPToolbarFlexibleSpaceItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +} + +p;25;_CPToolbarSeparatorItem.jt;1153;@STATIC;1.0;i;15;CPToolbarItem.jt;1114;objj_executeFile("CPToolbarItem.j", YES); +{var the_class = objj_allocateClassPair(CPToolbarItem, "_CPToolbarSeparatorItem"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithItemIdentifier:"), function $_CPToolbarSeparatorItem__initWithItemIdentifier_(self, _cmd, anIgnoredIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarSeparatorItem").super_class }, "initWithItemIdentifier:", CPToolbarSeparatorItemIdentifier); + if (self) + { + objj_msgSend(self, "setMinSize:", CGSizeMake(2.0, 0.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(2.0, 100000.0)); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPToolbarSeparatorItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPToolbarSeparatorItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +} + +p;26;_CPToolbarShowColorsItem.jt;1693;@STATIC;1.0;i;15;CPToolbarItem.jt;1654;objj_executeFile("CPToolbarItem.j", YES); +{var the_class = objj_allocateClassPair(CPToolbarItem, "_CPToolbarShowColorsItem"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithItemIdentifier:"), function $_CPToolbarShowColorsItem__initWithItemIdentifier_(self, _cmd, anIgnoredIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarShowColorsItem").super_class }, "initWithItemIdentifier:", CPToolbarShowColorsItemIdentifier); + if (self) + { + objj_msgSend(self, "setMinSize:", CGSizeMake(32.0, 32.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(32.0, 32.0)); + objj_msgSend(self, "setLabel:", "Colors"); + objj_msgSend(self, "setPaletteLabel:", "Show Colors"); + objj_msgSend(self, "setTarget:", CPApp); + objj_msgSend(self, "setAction:", sel_getUid("orderFrontColorPanel:")); + objj_msgSend(self, "setImage:", objj_msgSend(CPImage, "imageNamed:", CPImageNameColorPanel)); + objj_msgSend(self, "setAlternateImage:", objj_msgSend(CPImage, "imageNamed:", CPImageNameColorPanelHighlighted)); + objj_msgSend(self, "setToolTip:", "Show the Colors panel."); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPToolbarShowColorsItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPToolbarShowColorsItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +} + +p;21;_CPToolbarSpaceItem.jt;1128;@STATIC;1.0;i;15;CPToolbarItem.jt;1089;objj_executeFile("CPToolbarItem.j", YES); +{var the_class = objj_allocateClassPair(CPToolbarItem, "_CPToolbarSpaceItem"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithItemIdentifier:"), function $_CPToolbarSpaceItem__initWithItemIdentifier_(self, _cmd, anIgnoredIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarSpaceItem").super_class }, "initWithItemIdentifier:", CPToolbarSpaceItemIdentifier); + if (self) + { + objj_msgSend(self, "setMinSize:", CGSizeMake(32.0, 32.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(32.0, 32.0)); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPToolbarSpaceItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPToolbarSpaceItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +} + +p;8;AppKit.jt;4101;@STATIC;1.0;i;9;CALayer.ji;9;CPAlert.ji;13;CPAnimation.ji;15;CPApplication.ji;14;CPBezierPath.ji;7;CPBox.ji;11;CPBrowser.ji;10;CPButton.ji;13;CPButtonBar.ji;12;CPCheckBox.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;14;CPCibLoading.ji;22;CPCibOutletConnector.ji;12;CPClipView.ji;18;CPCollectionView.ji;22;CPCollectionViewItem.ji;9;CPColor.ji;14;CPColorPanel.ji;13;CPColorWell.ji;17;CPCompatibility.ji;11;CPControl.ji;10;CPCookie.ji;10;CPCursor.ji;12;CPDocument.ji;22;CPDocumentController.ji;9;CPEvent.ji;14;CPFlashMovie.ji;13;CPFlashView.ji;8;CPFont.ji;15;CPFontManager.ji;12;CPGeometry.ji;12;CPGraphics.ji;9;CPImage.ji;13;CPImageView.ji;14;CPKeyBinding.ji;8;CPMenu.ji;12;CPMenuItem.ji;13;CPOpenPanel.ji;15;CPOutlineView.ji;9;CPPanel.ji;14;CPPasteboard.ji;15;CPPopUpButton.ji;21;CPProgressIndicator.ji;9;CPRadio.ji;13;CPResponder.ji;12;CPScroller.ji;14;CPScrollView.ji;15;CPSearchField.ji;19;CPSecureTextField.ji;20;CPSegmentedControl.ji;10;CPShadow.ji;10;CPSlider.ji;13;CPSplitView.ji;15;CPTableColumn.ji;13;CPTableView.ji;11;CPTabView.ji;8;CPText.ji;13;CPTextField.ji;11;CPToolbar.ji;15;CPToolbarItem.ji;12;CPTreeNode.ji;8;CPView.ji;17;CPViewAnimation.ji;18;CPViewController.ji;11;CPWebView.ji;10;CPWindow.ji;20;CPWindowController.ji;19;CPArrayController.jt;2818;objj_executeFile("CALayer.j", YES); +objj_executeFile("CPAlert.j", YES); +objj_executeFile("CPAnimation.j", YES); +objj_executeFile("CPApplication.j", YES); +objj_executeFile("CPBezierPath.j", YES); +objj_executeFile("CPBox.j", YES); +objj_executeFile("CPBrowser.j", YES); +objj_executeFile("CPButton.j", YES); +objj_executeFile("CPButtonBar.j", YES); +objj_executeFile("CPCheckBox.j", YES); +objj_executeFile("CPCib.j", YES); +objj_executeFile("CPCibConnector.j", YES); +objj_executeFile("CPCibControlConnector.j", YES); +objj_executeFile("CPCibLoading.j", YES); +objj_executeFile("CPCibOutletConnector.j", YES); +objj_executeFile("CPClipView.j", YES); +objj_executeFile("CPCollectionView.j", YES); +objj_executeFile("CPCollectionViewItem.j", YES); +objj_executeFile("CPColor.j", YES); +objj_executeFile("CPColorPanel.j", YES); +objj_executeFile("CPColorWell.j", YES); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("CPControl.j", YES); +objj_executeFile("CPCookie.j", YES); +objj_executeFile("CPCursor.j", YES); +objj_executeFile("CPDocument.j", YES); +objj_executeFile("CPDocumentController.j", YES); +objj_executeFile("CPEvent.j", YES); +objj_executeFile("CPFlashMovie.j", YES); +objj_executeFile("CPFlashView.j", YES); +objj_executeFile("CPFont.j", YES); +objj_executeFile("CPFontManager.j", YES); +objj_executeFile("CPGeometry.j", YES); +objj_executeFile("CPGraphics.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPImageView.j", YES); +objj_executeFile("CPKeyBinding.j", YES); +objj_executeFile("CPMenu.j", YES); +objj_executeFile("CPMenuItem.j", YES); +objj_executeFile("CPOpenPanel.j", YES); +objj_executeFile("CPOutlineView.j", YES); +objj_executeFile("CPPanel.j", YES); +objj_executeFile("CPPasteboard.j", YES); +objj_executeFile("CPPopUpButton.j", YES); +objj_executeFile("CPProgressIndicator.j", YES); +objj_executeFile("CPRadio.j", YES); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPScroller.j", YES); +objj_executeFile("CPScrollView.j", YES); +objj_executeFile("CPSearchField.j", YES); +objj_executeFile("CPSecureTextField.j", YES); +objj_executeFile("CPSegmentedControl.j", YES); +objj_executeFile("CPShadow.j", YES); +objj_executeFile("CPSlider.j", YES); +objj_executeFile("CPSplitView.j", YES); +objj_executeFile("CPTableColumn.j", YES); +objj_executeFile("CPTableView.j", YES); +objj_executeFile("CPTabView.j", YES); +objj_executeFile("CPText.j", YES); +objj_executeFile("CPTextField.j", YES); +objj_executeFile("CPToolbar.j", YES); +objj_executeFile("CPToolbarItem.j", YES); +objj_executeFile("CPTreeNode.j", YES); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPViewAnimation.j", YES); +objj_executeFile("CPViewController.j", YES); +objj_executeFile("CPWebView.j", YES); +objj_executeFile("CPWindow.j", YES); +objj_executeFile("CPWindowController.j", YES); +objj_executeFile("CPArrayController.j", YES); + +p;17;CPAccordionView.jt;15213;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;32;Foundation/CPKeyValueObserving.jI;23;Foundation/CPIndexSet.jI;21;Foundation/CPString.jI;15;AppKit/CPView.jt;15031;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPKeyValueObserving.j", NO); +objj_executeFile("Foundation/CPIndexSet.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("AppKit/CPView.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPAccordionViewItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_identifier"), new objj_ivar("_view"), new objj_ivar("_label")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("identifier"), function $CPAccordionViewItem__identifier(self, _cmd) +{ with(self) +{ +return _identifier; +} +},["id"]), +new objj_method(sel_getUid("setIdentifier:"), function $CPAccordionViewItem__setIdentifier_(self, _cmd, newValue) +{ with(self) +{ +_identifier = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("view"), function $CPAccordionViewItem__view(self, _cmd) +{ with(self) +{ +return _view; +} +},["id"]), +new objj_method(sel_getUid("setView:"), function $CPAccordionViewItem__setView_(self, _cmd, newValue) +{ with(self) +{ +_view = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("label"), function $CPAccordionViewItem__label(self, _cmd) +{ with(self) +{ +return _label; +} +},["id"]), +new objj_method(sel_getUid("setLabel:"), function $CPAccordionViewItem__setLabel_(self, _cmd, newValue) +{ with(self) +{ +_label = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPAccordionViewItem__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithIdentifier:"), function $CPAccordionViewItem__initWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAccordionViewItem").super_class }, "init"); + if (self) + objj_msgSend(self, "setIdentifier:", anIdentifier); + return self; +} +},["id","CPString"])]); +} +{var the_class = objj_allocateClassPair(CPView, "CPAccordionView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_dirtyItemIndex"), new objj_ivar("_itemHeaderPrototype"), new objj_ivar("_items"), new objj_ivar("_itemViews"), new objj_ivar("_expandedItemIndexes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPAccordionView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAccordionView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _items = []; + _itemViews = []; + _expandedItemIndexes = objj_msgSend(CPIndexSet, "indexSet"); + objj_msgSend(self, "setItemHeaderPrototype:", objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:100.0, height:24.0 } })); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setItemHeaderPrototype:"), function $CPAccordionView__setItemHeaderPrototype_(self, _cmd, aView) +{ with(self) +{ + _itemHeaderPrototype = aView; +} +},["void","CPView"]), new objj_method(sel_getUid("itemHeaderPrototype"), function $CPAccordionView__itemHeaderPrototype(self, _cmd) +{ with(self) +{ + return _itemHeaderPrototype; +} +},["CPView"]), new objj_method(sel_getUid("items"), function $CPAccordionView__items(self, _cmd) +{ with(self) +{ + return _items; +} +},["CPArray"]), new objj_method(sel_getUid("addItem:"), function $CPAccordionView__addItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(self, "insertItem:atIndex:", anItem, _items.length); +} +},["void","CPAccordionViewItem"]), new objj_method(sel_getUid("insertItem:atIndex:"), function $CPAccordionView__insertItem_atIndex_(self, _cmd, anItem, anIndex) +{ with(self) +{ + objj_msgSend(_expandedItemIndexes, "addIndex:", anIndex); + var itemView = objj_msgSend(objj_msgSend(_CPAccordionItemView, "alloc"), "initWithAccordionView:", self); + objj_msgSend(itemView, "setIndex:", anIndex); + objj_msgSend(itemView, "setLabel:", objj_msgSend(anItem, "label")); + objj_msgSend(itemView, "setContentView:", objj_msgSend(anItem, "view")); + objj_msgSend(self, "addSubview:", itemView); + objj_msgSend(_items, "insertObject:atIndex:", anItem, anIndex); + objj_msgSend(_itemViews, "insertObject:atIndex:", itemView, anIndex); + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", anIndex); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPAccordionViewItem","CPInteger"]), new objj_method(sel_getUid("removeItem:"), function $CPAccordionView__removeItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(self, "removeItemAtIndex:", objj_msgSend(_items, "indexOfObjectIdenticalTo:", anItem)); +} +},["void","CPAccordionViewItem"]), new objj_method(sel_getUid("removeItemAtIndex:"), function $CPAccordionView__removeItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(_expandedItemIndexes, "removeIndex:", anIndex); + objj_msgSend(_itemViews[anIndex], "removeFromSuperview"); + objj_msgSend(_items, "removeObjectAtIndex:", anIndex); + objj_msgSend(_itemViews, "removeObjectAtIndex:", anIndex); + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", anIndex); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("removeAllItems"), function $CPAccordionView__removeAllItems(self, _cmd) +{ with(self) +{ + var count = _items.length; + while (count--) + objj_msgSend(self, "removeItemAtIndex:", count); +} +},["void"]), new objj_method(sel_getUid("expandItemAtIndex:"), function $CPAccordionView__expandItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (!objj_msgSend(_itemViews[anIndex], "isCollapsed")) + return; + objj_msgSend(_expandedItemIndexes, "addIndex:", anIndex); + objj_msgSend(_itemViews[anIndex], "setCollapsed:", NO); + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", anIndex); +} +},["void","CPInteger"]), new objj_method(sel_getUid("collapseItemAtIndex:"), function $CPAccordionView__collapseItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (objj_msgSend(_itemViews[anIndex], "isCollapsed")) + return; + objj_msgSend(_expandedItemIndexes, "removeIndex:", anIndex); + objj_msgSend(_itemViews[anIndex], "setCollapsed:", YES); + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", anIndex); +} +},["void","CPInteger"]), new objj_method(sel_getUid("toggleItemAtIndex:"), function $CPAccordionView__toggleItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + var itemView = _itemViews[anIndex]; + if (objj_msgSend(itemView, "isCollapsed")) + objj_msgSend(self, "expandItemAtIndex:", anIndex); + else + objj_msgSend(self, "collapseItemAtIndex:", anIndex); +} +},["void","CPInteger"]), new objj_method(sel_getUid("expandedItemIndexes"), function $CPAccordionView__expandedItemIndexes(self, _cmd) +{ with(self) +{ + return _expandedItemIndexes; +} +},["CPIndexSet"]), new objj_method(sel_getUid("collapsedItemIndexes"), function $CPAccordionView__collapsedItemIndexes(self, _cmd) +{ with(self) +{ + var indexSet = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, _items.length)); + objj_msgSend(indexSet, "removeIndexes:", _expandedIndexes); + return indexSet; +} +},["CPIndexSet"]), new objj_method(sel_getUid("setEnabled:forItemAtIndex:"), function $CPAccordionView__setEnabled_forItemAtIndex_(self, _cmd, isEnabled, anIndex) +{ with(self) +{ + var itemView = _itemViews[anIndex]; + if (!itemView) + return; + if (!isEnabled) + objj_msgSend(self, "collapseItemAtIndex:", anIndex); + else + objj_msgSend(self, "expandItemAtIndex:", anIndex); + objj_msgSend(itemView, "setEnabled:", isEnabled); +} +},["void","BOOL","CPInteger"]), new objj_method(sel_getUid("_invalidateItemsStartingAtIndex:"), function $CPAccordionView___invalidateItemsStartingAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (_dirtyItemIndex === CPNotFound) + _dirtyItemIndex = anIndex; + _dirtyItemIndex = MIN(_dirtyItemIndex, anIndex); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("setFrameSize:"), function $CPAccordionView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + var width = (objj_msgSend(self, "frame").size.width); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAccordionView").super_class }, "setFrameSize:", aSize); + if (width !== (objj_msgSend(self, "frame").size.width)) + objj_msgSend(self, "_invalidateItemsStartingAtIndex:", 0); +} +},["void","CGSize"]), new objj_method(sel_getUid("layoutSubviews"), function $CPAccordionView__layoutSubviews(self, _cmd) +{ with(self) +{ + if (_items.length <= 0) + return objj_msgSend(self, "setFrameSize:", { width:(objj_msgSend(self, "frame").size.width), height:0.0 }); + if (_dirtyItemIndex === CPNotFound) + return; + _dirtyItemIndex = MIN(_dirtyItemIndex, _items.length - 1); + var index = _dirtyItemIndex, + count = _itemViews.length, + width = (objj_msgSend(self, "bounds").size.width), + y = index > 0 ? CGRectGetMaxY(objj_msgSend(_itemViews[index - 1], "frame")) : 0.0; + _dirtyItemIndex = CPNotFound; + for (; index < count; ++index) + { + var itemView = _itemViews[index]; + objj_msgSend(itemView, "setFrameY:width:", y, width); + y = CGRectGetMaxY(objj_msgSend(itemView, "frame")); + } + objj_msgSend(self, "setFrameSize:", { width:(objj_msgSend(self, "frame").size.width), height:y }); +} +},["void"])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPAccordionItemView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_accordionView"), new objj_ivar("_isCollapsed"), new objj_ivar("_index"), new objj_ivar("_headerView"), new objj_ivar("_contentView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isCollapsed"), function $_CPAccordionItemView__isCollapsed(self, _cmd) +{ with(self) +{ +return _isCollapsed; +} +},["id"]), +new objj_method(sel_getUid("setCollapsed:"), function $_CPAccordionItemView__setCollapsed_(self, _cmd, newValue) +{ with(self) +{ +_isCollapsed = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("index"), function $_CPAccordionItemView__index(self, _cmd) +{ with(self) +{ +return _index; +} +},["id"]), +new objj_method(sel_getUid("setIndex:"), function $_CPAccordionItemView__setIndex_(self, _cmd, newValue) +{ with(self) +{ +_index = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithAccordionView:"), function $_CPAccordionItemView__initWithAccordionView_(self, _cmd, anAccordionView) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPAccordionItemView").super_class }, "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + if (self) + { + _accordionView = anAccordionView; + _isCollapsed = NO; + var bounds = objj_msgSend(self, "bounds"); + _headerView = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", objj_msgSend(_accordionView, "itemHeaderPrototype"))); + if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setTarget:")) && objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setAction:"))) + { + objj_msgSend(_headerView, "setTarget:", self); + objj_msgSend(_headerView, "setAction:", sel_getUid("toggle:")); + } + objj_msgSend(self, "addSubview:", _headerView); + } + return self; +} +},["id","CPAccordionView"]), new objj_method(sel_getUid("toggle:"), function $_CPAccordionItemView__toggle_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(_accordionView, "toggleItemAtIndex:", objj_msgSend(self, "index")); +} +},["void","id"]), new objj_method(sel_getUid("setLabel:"), function $_CPAccordionItemView__setLabel_(self, _cmd, aLabel) +{ with(self) +{ + if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setTitle:"))) + objj_msgSend(_headerView, "setTitle:", aLabel); + else if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setLabel:"))) + objj_msgSend(_headerView, "setLabel:", aLabel); + else if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setStringValue:"))) + objj_msgSend(_headerView, "setStringValue:", aLabel); +} +},["void","CPString"]), new objj_method(sel_getUid("setEnabled:"), function $_CPAccordionItemView__setEnabled_(self, _cmd, isEnabled) +{ with(self) +{ + if (objj_msgSend(_headerView, "respondsToSelector:", sel_getUid("setEnabled:"))) + objj_msgSend(_headerView, "setEnabled:", isEnabled); +} +},["void","BOOL"]), new objj_method(sel_getUid("setContentView:"), function $_CPAccordionItemView__setContentView_(self, _cmd, aView) +{ with(self) +{ + if (_contentView === aView) + return; + objj_msgSend(_contentView, "removeObserver:forKeyPath:", self, "frame"); + objj_msgSend(_contentView, "removeFromSuperview"); + _contentView = aView; + objj_msgSend(_contentView, "addObserver:forKeyPath:options:context:", self, "frame", CPKeyValueObservingOptionOld | CPKeyValueObservingOptionNew, NULL); + objj_msgSend(self, "addSubview:", _contentView); + objj_msgSend(_accordionView, "_invalidateItemsStartingAtIndex:", objj_msgSend(self, "index")); +} +},["void","CPView"]), new objj_method(sel_getUid("setFrameY:width:"), function $_CPAccordionItemView__setFrameY_width_(self, _cmd, aY, aWidth) +{ with(self) +{ + var headerHeight = (objj_msgSend(_headerView, "frame").size.height); + objj_msgSend(_headerView, "setFrameSize:", { width:aWidth, height:headerHeight }); + objj_msgSend(_contentView, "setFrameOrigin:", { x:0.0, y:headerHeight }); + if (objj_msgSend(self, "isCollapsed")) + objj_msgSend(self, "setFrame:", { origin: { x:0.0, y:aY }, size: { width:aWidth, height:headerHeight } }); + else + { + var contentHeight = (objj_msgSend(_contentView, "frame").size.height); + objj_msgSend(_contentView, "setFrameSize:", { width:aWidth, height:contentHeight }); + objj_msgSend(self, "setFrame:", { origin: { x:0.0, y:aY }, size: { width:aWidth, height:contentHeight + headerHeight } }); + } +} +},["void","float","float"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $_CPAccordionItemView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ +} +},["void","CGSize"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPAccordionItemView__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, aChange, aContext) +{ with(self) +{ + if (aKeyPath === "frame" && !CGRectEqualToRect(objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeOldKey), objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeNewKey))) + objj_msgSend(_accordionView, "_invalidateItemsStartingAtIndex:", objj_msgSend(self, "index")); +} +},["void","CPString","id","CPDictionary","id"])]); +} + +p;9;CPAlert.jt;16191;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;22;AppKit/CPApplication.jI;17;AppKit/CPButton.jI;16;AppKit/CPColor.jI;15;AppKit/CPFont.jI;16;AppKit/CPImage.jI;20;AppKit/CPImageView.jI;16;AppKit/CPPanel.jI;20;AppKit/CPTextField.jt;15937;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("AppKit/CPApplication.j", NO); +objj_executeFile("AppKit/CPButton.j", NO); +objj_executeFile("AppKit/CPColor.j", NO); +objj_executeFile("AppKit/CPFont.j", NO); +objj_executeFile("AppKit/CPImage.j", NO); +objj_executeFile("AppKit/CPImageView.j", NO); +objj_executeFile("AppKit/CPPanel.j", NO); +objj_executeFile("AppKit/CPTextField.j", NO); +CPWarningAlertStyle = 0; +CPInformationalAlertStyle = 1; +CPCriticalAlertStyle = 2; +{var the_class = objj_allocateClassPair(CPView, "CPAlert"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_alertPanel"), new objj_ivar("_messageLabel"), new objj_ivar("_informativeLabel"), new objj_ivar("_alertImageView"), new objj_ivar("_alertStyle"), new objj_ivar("_windowTitle"), new objj_ivar("_windowStyle"), new objj_ivar("_buttons"), new objj_ivar("_delegate"), new objj_ivar("_didEndSelector"), new objj_ivar("_modalDelegate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPAlert__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAlert").super_class }, "init")) + { + _buttons = objj_msgSend(CPArray, "array"); + _alertStyle = CPWarningAlertStyle; + _alertPanel = nil; + _windowStyle = nil; + _didEndSelector = nil; + _messageLabel = objj_msgSend(CPTextField, "labelWithTitle:", "Alert"); + _alertImageView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + _informativeLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + } + return self; +} +},["id"]), new objj_method(sel_getUid("setWindowStyle:"), function $CPAlert__setWindowStyle_(self, _cmd, styleMask) +{ with(self) +{ + _windowStyle = styleMask; + objj_msgSend(self, "setTheme:", (_windowStyle & CPHUDBackgroundWindowMask) ? objj_msgSend(CPTheme, "defaultHudTheme") : objj_msgSend(CPTheme, "defaultTheme")); + _alertPanel = nil; +} +},["void","int"]), new objj_method(sel_getUid("_createPanel"), function $CPAlert___createPanel(self, _cmd) +{ with(self) +{ + var frame = CGRectMakeZero(); + frame.size = objj_msgSend(self, "currentValueForThemeAttribute:", "size"); + _alertPanel = objj_msgSend(objj_msgSend(CPPanel, "alloc"), "initWithContentRect:styleMask:", frame, _windowStyle ? _windowStyle | CPTitledWindowMask : CPTitledWindowMask); + var contentView = objj_msgSend(_alertPanel, "contentView"), + count = objj_msgSend(_buttons, "count"); + if (count) + { + while (count--) + objj_msgSend(contentView, "addSubview:", _buttons[count]); + } + else + objj_msgSend(self, "addButtonWithTitle:", "OK"); + objj_msgSend(contentView, "addSubview:", _messageLabel); + objj_msgSend(contentView, "addSubview:", _alertImageView); + objj_msgSend(contentView, "addSubview:", _informativeLabel); +} +},["void"]), new objj_method(sel_getUid("setTitle:"), function $CPAlert__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + _windowTitle = aTitle; +} +},["void","CPString"]), new objj_method(sel_getUid("title"), function $CPAlert__title(self, _cmd) +{ with(self) +{ + return _windowTitle; +} +},["CPString"]), new objj_method(sel_getUid("windowStyle"), function $CPAlert__windowStyle(self, _cmd) +{ with(self) +{ + return _windowStyle; +} +},["int"]), new objj_method(sel_getUid("setDelegate:"), function $CPAlert__setDelegate_(self, _cmd, delegate) +{ with(self) +{ + _delegate = delegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPAlert__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["void"]), new objj_method(sel_getUid("setAlertStyle:"), function $CPAlert__setAlertStyle_(self, _cmd, style) +{ with(self) +{ + _alertStyle = style; +} +},["void","CPAlertStyle"]), new objj_method(sel_getUid("alertStyle"), function $CPAlert__alertStyle(self, _cmd) +{ with(self) +{ + return _alertStyle; +} +},["CPAlertStyle"]), new objj_method(sel_getUid("setMessageText:"), function $CPAlert__setMessageText_(self, _cmd, messageText) +{ with(self) +{ + objj_msgSend(_messageLabel, "setStringValue:", messageText); +} +},["void","CPString"]), new objj_method(sel_getUid("messageText"), function $CPAlert__messageText(self, _cmd) +{ with(self) +{ + return objj_msgSend(_messageLabel, "stringValue"); +} +},["CPString"]), new objj_method(sel_getUid("setInformativeText:"), function $CPAlert__setInformativeText_(self, _cmd, informativeText) +{ with(self) +{ + objj_msgSend(_informativeLabel, "setStringValue:", informativeText); +} +},["void","CPString"]), new objj_method(sel_getUid("informativeText"), function $CPAlert__informativeText(self, _cmd) +{ with(self) +{ + return objj_msgSend(_informativeLabel, "stringValue"); +} +},["CPString"]), new objj_method(sel_getUid("addButtonWithTitle:"), function $CPAlert__addButtonWithTitle_(self, _cmd, title) +{ with(self) +{ + var bounds = objj_msgSend(objj_msgSend(_alertPanel, "contentView"), "bounds"), + button = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMakeZero()), + _buttonCount = objj_msgSend(_buttons, "count"); + objj_msgSend(button, "setTitle:", title); + objj_msgSend(button, "setTarget:", self); + objj_msgSend(button, "setTag:", _buttonCount); + objj_msgSend(button, "setAction:", sel_getUid("_dismissAlert:")); + objj_msgSend(objj_msgSend(_alertPanel, "contentView"), "addSubview:", button); + if (_buttonCount == 0) + objj_msgSend(button, "setKeyEquivalent:", CPCarriageReturnCharacter); + else if (objj_msgSend(title, "lowercaseString") === "cancel") + objj_msgSend(button, "setKeyEquivalent:", CPEscapeFunctionKey); + else + objj_msgSend(button, "setKeyEquivalent:", nil); + objj_msgSend(_buttons, "insertObject:atIndex:", button, 0); +} +},["void","CPString"]), new objj_method(sel_getUid("layoutPanel"), function $CPAlert__layoutPanel(self, _cmd) +{ with(self) +{ + if (!_alertPanel) + objj_msgSend(self, "_createPanel"); + var inset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + iconOffset = objj_msgSend(self, "currentValueForThemeAttribute:", "image-offset"), + theTitle, + theImage; + switch (_alertStyle) + { + case CPWarningAlertStyle: theImage = objj_msgSend(self, "currentValueForThemeAttribute:", "warning-image"); + theTitle = "Warning"; + break; + case CPInformationalAlertStyle: theImage = objj_msgSend(self, "currentValueForThemeAttribute:", "information-image"); + theTitle = "Information"; + break; + case CPCriticalAlertStyle: theImage = objj_msgSend(self, "currentValueForThemeAttribute:", "error-image"); + theTitle = "Error"; + break; + } + objj_msgSend(_alertImageView, "setImage:", theImage); + var imageSize = theImage ? objj_msgSend(theImage, "size") : CGSizeMakeZero(); + objj_msgSend(_alertImageView, "setFrame:", CGRectMake(iconOffset.x, iconOffset.y, imageSize.width, imageSize.height)); + objj_msgSend(_alertPanel, "setTitle:", _windowTitle ? _windowTitle : theTitle); + objj_msgSend(_alertPanel, "setFloatingPanel:", YES); + objj_msgSend(_alertPanel, "center"); + objj_msgSend(_messageLabel, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-color")); + objj_msgSend(_messageLabel, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-font")); + objj_msgSend(_messageLabel, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-shadow-color")); + objj_msgSend(_messageLabel, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-shadow-offset")); + objj_msgSend(_messageLabel, "setAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "message-text-alignment")); + objj_msgSend(_messageLabel, "setLineBreakMode:", CPLineBreakByWordWrapping); + objj_msgSend(_informativeLabel, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "informative-text-color")); + objj_msgSend(_informativeLabel, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "informative-text-font")); + objj_msgSend(_informativeLabel, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "informative-text-shadow-color")); + objj_msgSend(_informativeLabel, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "informative-text-shadow-offset")); + objj_msgSend(_informativeLabel, "setLineBreakMode:", CPLineBreakByWordWrapping); + var bounds = objj_msgSend(objj_msgSend(_alertPanel, "contentView"), "bounds"), + offsetX = CGRectGetWidth(bounds) - inset.right, + informativeOffset = objj_msgSend(self, "currentValueForThemeAttribute:", "informative-offset"), + buttonOffset = objj_msgSend(self, "currentValueForThemeAttribute:", "button-offset"), + textWidth = offsetX - inset.left, + messageSize = objj_msgSend((objj_msgSend(_messageLabel, "stringValue") || " "), "sizeWithFont:inWidth:", objj_msgSend(_messageLabel, "font"), textWidth), + informationString = objj_msgSend(_informativeLabel, "stringValue"), + informativeSize = objj_msgSend((informationString || " "), "sizeWithFont:inWidth:", objj_msgSend(_informativeLabel, "font"), textWidth), + sizeWithFontCorrection = 6.0; + objj_msgSend(_messageLabel, "setFrame:", CGRectMake(inset.left, inset.top, textWidth, messageSize.height + sizeWithFontCorrection)); + objj_msgSend(_informativeLabel, "setFrame:", CGRectMake(inset.left, CGRectGetMaxY(objj_msgSend(_messageLabel, "frame")) + informativeOffset, textWidth, informativeSize.height + sizeWithFontCorrection)); + objj_msgSend(_informativeLabel, "setHidden:", !informationString); + var aRepresentativeButton = _buttons[0], + buttonY = MAX(CGRectGetMaxY(objj_msgSend(_alertImageView, "frame")), CGRectGetMaxY(informationString ? objj_msgSend(_informativeLabel, "frame") : objj_msgSend(_messageLabel, "frame"))) + buttonOffset; + objj_msgSend(aRepresentativeButton, "setTheme:", objj_msgSend(self, "theme")); + objj_msgSend(aRepresentativeButton, "sizeToFit"); + var minimumSize = objj_msgSend(self, "currentValueForThemeAttribute:", "size"), + desiredHeight = MAX(minimumSize.height, buttonY + CGRectGetHeight(objj_msgSend(aRepresentativeButton, "bounds")) + inset.bottom), + deltaY = desiredHeight - CGRectGetHeight(bounds), + frameSize = CGSizeMakeCopy(objj_msgSend(_alertPanel, "frame").size); + frameSize.height += deltaY; + objj_msgSend(_alertPanel, "setFrameSize:", frameSize); + var count = objj_msgSend(_buttons, "count"); + while (count--) + { + var button = _buttons[count]; + objj_msgSend(button, "setTheme:", objj_msgSend(self, "theme")); + objj_msgSend(button, "sizeToFit"); + var buttonBounds = objj_msgSend(button, "bounds"), + width = MAX(80.0, CGRectGetWidth(buttonBounds)), + height = CGRectGetHeight(buttonBounds); + offsetX -= width; + objj_msgSend(button, "setFrame:", CGRectMake(offsetX, buttonY, width, height)); + offsetX -= 10; + } +} +},["void"]), new objj_method(sel_getUid("runModal"), function $CPAlert__runModal(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "layoutPanel"); + objj_msgSend(CPApp, "runModalForWindow:", _alertPanel); +} +},["void"]), new objj_method(sel_getUid("beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:"), function $CPAlert__beginSheetModalForWindow_modalDelegate_didEndSelector_contextInfo_(self, _cmd, window, modalDelegate, alertDidEndSelector, contextInfo) +{ with(self) +{ + if (!(_windowStyle & CPDocModalWindowMask)) + objj_msgSend(self, "setWindowStyle:", CPDocModalWindowMask); + objj_msgSend(self, "layoutPanel"); + _didEndSelector = alertDidEndSelector; + _modalDelegate = modalDelegate; + objj_msgSend(CPApp, "beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:", _alertPanel, window, self, sel_getUid("_alertDidEnd:returnCode:contextInfo:"), contextInfo); +} +},["void","CPWindow","id","SEL","void"]), new objj_method(sel_getUid("beginSheetModalForWindow:"), function $CPAlert__beginSheetModalForWindow_(self, _cmd, window) +{ with(self) +{ + if (!(_windowStyle & CPDocModalWindowMask)) + objj_msgSend(self, "setWindowStyle:", CPDocModalWindowMask); + objj_msgSend(self, "layoutPanel"); + objj_msgSend(CPApp, "beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:", _alertPanel, window, self, sel_getUid("_alertDidEnd:returnCode:contextInfo:"), nil); +} +},["void","CPWindow"]), new objj_method(sel_getUid("_alertDidEnd:returnCode:contextInfo:"), function $CPAlert___alertDidEnd_returnCode_contextInfo_(self, _cmd, aSheet, returnCode, contextInfo) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("alertDidEnd:returnCode:"))) + objj_msgSend(_delegate, "alertDidEnd:returnCode:", self, returnCode); + if (_didEndSelector) + objj_msgSend(_modalDelegate, _didEndSelector, self, returnCode, contextInfo); + _didEndSelector = nil; + _modalDelegate = nil; +} +},["void","CPWindow","CPInteger","id"]), new objj_method(sel_getUid("_dismissAlert:"), function $CPAlert___dismissAlert_(self, _cmd, button) +{ with(self) +{ + if (objj_msgSend(_alertPanel, "isSheet")) + objj_msgSend(CPApp, "endSheet:returnCode:", _alertPanel, objj_msgSend(button, "tag")); + else + { + objj_msgSend(CPApp, "abortModal"); + objj_msgSend(_alertPanel, "close"); + objj_msgSend(self, "_alertDidEnd:returnCode:contextInfo:", nil, objj_msgSend(button, "tag"), nil); + } +} +},["void","CPButton"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPAlert__themeClass(self, _cmd) +{ with(self) +{ + return "alert"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPAlert__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [CGSizeMake(400.0, 110.0), CGInsetMake(15, 15, 15, 50), 6, 10, + CPJustifiedTextAlignment, objj_msgSend(CPColor, "blackColor"), objj_msgSend(CPFont, "boldSystemFontOfSize:", 13.0), objj_msgSend(CPNull, "null"), CGSizeMakeZero(), + CPJustifiedTextAlignment, objj_msgSend(CPColor, "blackColor"), objj_msgSend(CPFont, "systemFontOfSize:", 12.0), objj_msgSend(CPNull, "null"), CGSizeMakeZero(), + CGPointMake(15, 12), + objj_msgSend(CPNull, "null"), + objj_msgSend(CPNull, "null"), + objj_msgSend(CPNull, "null") + ], ["size", "content-inset", "informative-offset", "button-offset", + "message-text-alignment", "message-text-color", "message-text-font", "message-text-shadow-color", "message-text-shadow-offset", + "informative-text-alignment", "informative-text-color", "informative-text-font", "informative-text-shadow-color", "informative-text-shadow-offset", + "image-offset", + "information-image", + "warning-image", + "error-image" + ]); +} +},["id"])]); +} + +p;13;CPAnimation.jt;7502;@STATIC;1.0;I;21;Foundation/CPObject.ji;23;CAMediaTimingFunction.jt;7429;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CAMediaTimingFunction.j", YES); +CPAnimationEaseInOut = 0; +CPAnimationEaseIn = 1; +CPAnimationEaseOut = 2; +CPAnimationLinear = 3; +ACTUAL_FRAME_RATE = 0; +{var the_class = objj_allocateClassPair(CPObject, "CPAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_lastTime"), new objj_ivar("_duration"), new objj_ivar("_animationCurve"), new objj_ivar("_timingFunction"), new objj_ivar("_frameRate"), new objj_ivar("_progress"), new objj_ivar("_delegate"), new objj_ivar("_timer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithDuration:animationCurve:"), function $CPAnimation__initWithDuration_animationCurve_(self, _cmd, aDuration, anAnimationCurve) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAnimation").super_class }, "init"); + if (self) + { + _progress = 0.0; + _duration = MAX(0.0, aDuration); + _frameRate = 60.0; + objj_msgSend(self, "setAnimationCurve:", anAnimationCurve); + } + return self; +} +},["id","float","CPAnimationCurve"]), new objj_method(sel_getUid("setAnimationCurve:"), function $CPAnimation__setAnimationCurve_(self, _cmd, anAnimationCurve) +{ with(self) +{ + switch (anAnimationCurve) + { + case CPAnimationEaseInOut: timingFunctionName = kCAMediaTimingFunctionEaseInEaseOut; + break; + case CPAnimationEaseIn: timingFunctionName = kCAMediaTimingFunctionEaseIn; + break; + case CPAnimationEaseOut: timingFunctionName = kCAMediaTimingFunctionEaseOut; + break; + case CPAnimationLinear: timingFunctionName = kCAMediaTimingFunctionLinear; + break; + default: objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid value provided for animation curve"); + break; + } + _animationCurve = anAnimationCurve; + _timingFunction = objj_msgSend(CAMediaTimingFunction, "functionWithName:", timingFunctionName); +} +},["void","CPAnimationCurve"]), new objj_method(sel_getUid("animationCurve"), function $CPAnimation__animationCurve(self, _cmd) +{ with(self) +{ + return _animationCurve; +} +},["CPAnimationCurve"]), new objj_method(sel_getUid("setDuration:"), function $CPAnimation__setDuration_(self, _cmd, aDuration) +{ with(self) +{ + if (aDuration < 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "aDuration can't be negative"); + _duration = aDuration; +} +},["void","CPTimeInterval"]), new objj_method(sel_getUid("duration"), function $CPAnimation__duration(self, _cmd) +{ with(self) +{ + return _duration; +} +},["CPTimeInterval"]), new objj_method(sel_getUid("setFrameRate:"), function $CPAnimation__setFrameRate_(self, _cmd, frameRate) +{ with(self) +{ + if (frameRate < 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "frameRate can't be negative"); + _frameRate = frameRate; +} +},["void","float"]), new objj_method(sel_getUid("frameRate"), function $CPAnimation__frameRate(self, _cmd) +{ with(self) +{ + return _frameRate; +} +},["float"]), new objj_method(sel_getUid("delegate"), function $CPAnimation__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("setDelegate:"), function $CPAnimation__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("startAnimation"), function $CPAnimation__startAnimation(self, _cmd) +{ with(self) +{ + if (_timer || _delegate && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("animationShouldStart:")) && !objj_msgSend(_delegate, "animationShouldStart:", self)) + return; + if (_progress === 1.0) + _progress = 0.0; + ACTUAL_FRAME_RATE = 0; + _lastTime = new Date(); + _timer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", 0.0, self, sel_getUid("animationTimerDidFire:"), nil, YES); +} +},["void"]), new objj_method(sel_getUid("animationTimerDidFire:"), function $CPAnimation__animationTimerDidFire_(self, _cmd, aTimer) +{ with(self) +{ + var currentTime = new Date(), + progress = MIN(1.0, objj_msgSend(self, "currentProgress") + (currentTime - _lastTime) / (_duration * 1000.0)); + _lastTime = currentTime; + ++ACTUAL_FRAME_RATE; + objj_msgSend(self, "setCurrentProgress:", progress); + if (progress === 1.0) + { + objj_msgSend(_timer, "invalidate"); + _timer = nil; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("animationDidEnd:"))) + objj_msgSend(_delegate, "animationDidEnd:", self); + } +} +},["void","CPTimer"]), new objj_method(sel_getUid("stopAnimation"), function $CPAnimation__stopAnimation(self, _cmd) +{ with(self) +{ + if (!_timer) + return; + objj_msgSend(_timer, "invalidate"); + _timer = nil; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("animationDidStop:"))) + objj_msgSend(_delegate, "animationDidStop:", self); +} +},["void"]), new objj_method(sel_getUid("isAnimating"), function $CPAnimation__isAnimating(self, _cmd) +{ with(self) +{ + return _timer; +} +},["BOOL"]), new objj_method(sel_getUid("setCurrentProgress:"), function $CPAnimation__setCurrentProgress_(self, _cmd, aProgress) +{ with(self) +{ + _progress = aProgress; +} +},["void","float"]), new objj_method(sel_getUid("currentProgress"), function $CPAnimation__currentProgress(self, _cmd) +{ with(self) +{ + return _progress; +} +},["float"]), new objj_method(sel_getUid("currentValue"), function $CPAnimation__currentValue(self, _cmd) +{ with(self) +{ + var t = objj_msgSend(self, "currentProgress"); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("animation:valueForProgress:"))) + return objj_msgSend(_delegate, "animation:valueForProgress:", self, t); + var c1 = [], + c2 = []; + objj_msgSend(_timingFunction, "getControlPointAtIndex:values:", 1, c1); + objj_msgSend(_timingFunction, "getControlPointAtIndex:values:", 2, c2); + return CubicBezierAtTime(t,c1[0],c1[1],c2[0],c2[1],_duration); +} +},["float"])]); +} +var CubicBezierAtTime = CubicBezierAtTime= function(t,p1x,p1y,p2x,p2y,duration) +{ + var ax=0,bx=0,cx=0,ay=0,by=0,cy=0; + sampleCurveX= function(t) {return ((ax*t+bx)*t+cx)*t;}; + sampleCurveY= function(t) {return ((ay*t+by)*t+cy)*t;}; + sampleCurveDerivativeX= function(t) {return (3.0*ax*t+2.0*bx)*t+cx;}; + solveEpsilon= function(duration) {return 1.0/(200.0*duration);}; + solve= function(x,epsilon) {return sampleCurveY(solveCurveX(x,epsilon));}; + solveCurveX= function(x,epsilon) {var t0,t1,t2,x2,d2,i; + fabs= function(n) {if(n>=0) {return n;}else {return 0-n;}}; + for(t2=x, i=0; i<8; i++) {x2=sampleCurveX(t2)-x; if(fabs(x2)<epsilon) {return t2;} d2=sampleCurveDerivativeX(t2); if(fabs(d2)<1e-6) {break;} t2=t2-x2/d2;} + t0=0.0; t1=1.0; t2=x; if(t2<t0) {return t0;} if(t2>t1) {return t1;} + while(t0<t1) {x2=sampleCurveX(t2); if(fabs(x2-x)<epsilon) {return t2;} if(x>x2) {t0=t2;}else {t1=t2;} t2=(t1-t0)*.5+t0;} + return t2; + }; + cx=3.0*p1x; bx=3.0*(p2x-p1x)-cx; ax=1.0-cx-bx; cy=3.0*p1y; by=3.0*(p2y-p1y)-cy; ay=1.0-cy-by; + return solve(t, solveEpsilon(duration)); +}; + +p;15;CPApplication.jt;41007;@STATIC;1.0;I;21;Foundation/CPBundle.ji;17;CPCompatibility.ji;9;CPEvent.ji;8;CPMenu.ji;13;CPResponder.ji;22;CPDocumentController.ji;14;CPThemeBlend.ji;14;CPCibLoading.ji;12;CPPlatform.jt;40814;objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("CPEvent.j", YES); +objj_executeFile("CPMenu.j", YES); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPDocumentController.j", YES); +objj_executeFile("CPThemeBlend.j", YES); +objj_executeFile("CPCibLoading.j", YES); +objj_executeFile("CPPlatform.j", YES); +var CPMainCibFile = "CPMainCibFile", + CPMainCibFileHumanFriendly = "Main cib file base name"; +CPApp = nil; +CPApplicationWillFinishLaunchingNotification = "CPApplicationWillFinishLaunchingNotification"; +CPApplicationDidFinishLaunchingNotification = "CPApplicationDidFinishLaunchingNotification"; +CPApplicationWillTerminateNotification = "CPApplicationWillTerminateNotification"; +CPApplicationWillBecomeActiveNotification = "CPApplicationWillBecomeActiveNotification"; +CPApplicationDidBecomeActiveNotification = "CPApplicationDidBecomeActiveNotification"; +CPApplicationWillResignActiveNotification = "CPApplicationWillResignActiveNotification"; +CPApplicationDidResignActiveNotification = "CPApplicationDidResignActiveNotification"; +CPTerminateNow = YES; +CPTerminateCancel = NO; +CPTerminateLater = -1; +CPRunStoppedResponse = -1000; +CPRunAbortedResponse = -1001; +CPRunContinuesResponse = -1002; +{var the_class = objj_allocateClassPair(CPResponder, "CPApplication"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_eventListeners"), new objj_ivar("_currentEvent"), new objj_ivar("_windows"), new objj_ivar("_keyWindow"), new objj_ivar("_mainWindow"), new objj_ivar("_previousKeyWindow"), new objj_ivar("_previousMainWindow"), new objj_ivar("_mainMenu"), new objj_ivar("_documentController"), new objj_ivar("_currentSession"), new objj_ivar("_delegate"), new objj_ivar("_finishedLaunching"), new objj_ivar("_isActive"), new objj_ivar("_namedArgs"), new objj_ivar("_args"), new objj_ivar("_fullArgsString"), new objj_ivar("_applicationIconImage"), new objj_ivar("_aboutPanel"), new objj_ivar("_themeBlend")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("themeBlend"), function $CPApplication__themeBlend(self, _cmd) +{ with(self) +{ +return _themeBlend; +} +},["id"]), +new objj_method(sel_getUid("setThemeBlend:"), function $CPApplication__setThemeBlend_(self, _cmd, newValue) +{ with(self) +{ +_themeBlend = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPApplication__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPApplication").super_class }, "init"); + CPApp = self; + if (self) + { + _eventListeners = []; + _windows = []; + objj_msgSend(_windows, "addObject:", nil); + } + return self; +} +},["id"]), new objj_method(sel_getUid("setDelegate:"), function $CPApplication__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate == aDelegate) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"), + delegateNotifications = + [ + CPApplicationWillFinishLaunchingNotification, sel_getUid("applicationWillFinishLaunching:"), + CPApplicationDidFinishLaunchingNotification, sel_getUid("applicationDidFinishLaunching:"), + CPApplicationWillBecomeActiveNotification, sel_getUid("applicationWillBecomeActive:"), + CPApplicationDidBecomeActiveNotification, sel_getUid("applicationDidBecomeActive:"), + CPApplicationWillResignActiveNotification, sel_getUid("applicationWillResignActive:"), + CPApplicationDidResignActiveNotification, sel_getUid("applicationDidResignActive:"), + CPApplicationWillTerminateNotification, sel_getUid("applicationWillTerminate:") + ], + count = objj_msgSend(delegateNotifications, "count"); + if (_delegate) + { + var index = 0; + for (; index < count; index += 2) + { + var notificationName = delegateNotifications[index], + selector = delegateNotifications[index + 1]; + if (objj_msgSend(_delegate, "respondsToSelector:", selector)) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, notificationName, self); + } + } + _delegate = aDelegate; + var index = 0; + for (; index < count; index += 2) + { + var notificationName = delegateNotifications[index], + selector = delegateNotifications[index + 1]; + if (objj_msgSend(_delegate, "respondsToSelector:", selector)) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, selector, notificationName, self); + } +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPApplication__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("finishLaunching"), function $CPApplication__finishLaunching(self, _cmd) +{ with(self) +{ + window.status = " "; + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); + var bundle = objj_msgSend(CPBundle, "mainBundle"), + types = objj_msgSend(bundle, "objectForInfoDictionaryKey:", "CPBundleDocumentTypes"); + if (objj_msgSend(types, "count") > 0) + _documentController = objj_msgSend(CPDocumentController, "sharedDocumentController"); + var delegateClassName = objj_msgSend(bundle, "objectForInfoDictionaryKey:", "CPApplicationDelegateClass"); + if (delegateClassName) + { + var delegateClass = objj_getClass(delegateClassName); + if (delegateClass) + if (objj_msgSend(_documentController, "class") == delegateClass) + objj_msgSend(self, "setDelegate:", _documentController); + else + objj_msgSend(self, "setDelegate:", objj_msgSend(objj_msgSend(delegateClass, "alloc"), "init")); + } + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPApplicationWillFinishLaunchingNotification, self); + var needsUntitled = !!_documentController, + URLStrings = window.cpOpeningURLStrings && window.cpOpeningURLStrings(), + index = 0, + count = objj_msgSend(URLStrings, "count"); + for (; index < count; ++index) + needsUntitled = !objj_msgSend(self, "_openURL:", objj_msgSend(CPURL, "URLWithString:", URLStrings[index])) || needsUntitled; + if (needsUntitled && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("applicationShouldOpenUntitledFile:"))) + needsUntitled = objj_msgSend(_delegate, "applicationShouldOpenUntitledFile:", self); + if (needsUntitled) + objj_msgSend(_documentController, "newDocument:", self); + objj_msgSend(_documentController, "_updateRecentDocumentsMenu"); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPApplicationDidFinishLaunchingNotification, self); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + _finishedLaunching = YES; +} +},["void"]), new objj_method(sel_getUid("terminate:"), function $CPApplication__terminate_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPApplicationWillTerminateNotification, self); + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + objj_msgSend(objj_msgSend(CPDocumentController, "sharedDocumentController"), "closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:", self, sel_getUid("_documentController:didCloseAll:context:"), nil); + } + else + { + objj_msgSend(objj_msgSend(objj_msgSend(self, "keyWindow"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + } +} +},["void","id"]), new objj_method(sel_getUid("setApplicationIconImage:"), function $CPApplication__setApplicationIconImage_(self, _cmd, anImage) +{ with(self) +{ + _applicationIconImage = anImage; +} +},["void","CPImage"]), new objj_method(sel_getUid("applicationIconImage"), function $CPApplication__applicationIconImage(self, _cmd) +{ with(self) +{ + if (_applicationIconImage) + return _applicationIconImage; + var imagePath = objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "objectForInfoDictionaryKey:", "CPApplicationIcon"); + if (imagePath) + _applicationIconImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:", imagePath); + return _applicationIconImage; +} +},["CPImage"]), new objj_method(sel_getUid("orderFrontStandardAboutPanel:"), function $CPApplication__orderFrontStandardAboutPanel_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "orderFrontStandardAboutPanelWithOptions:", nil); +} +},["void","id"]), new objj_method(sel_getUid("orderFrontStandardAboutPanelWithOptions:"), function $CPApplication__orderFrontStandardAboutPanelWithOptions_(self, _cmd, options) +{ with(self) +{ + if (!_aboutPanel) + { + var mainInfo = objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "infoDictionary"), + applicationTitle = objj_msgSend(options, "objectForKey:", "ApplicationName") || objj_msgSend(mainInfo, "objectForKey:", "CPBundleName"), + applicationIcon = objj_msgSend(options, "objectForKey:", "ApplicationIcon") || objj_msgSend(self, "applicationIconImage"), + version = objj_msgSend(options, "objectForKey:", "Version") || objj_msgSend(mainInfo, "objectForKey:", "CPBundleVersion"), + applicationVersion = objj_msgSend(options, "objectForKey:", "ApplicationVersion") || objj_msgSend(mainInfo, "objectForKey:", "CPBundleShortVersionString"), + copyright = objj_msgSend(options, "objectForKey:", "Copyright") || objj_msgSend(mainInfo, "objectForKey:", "CPHumanReadableCopyright"); + var aboutPanelPath = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindowController, "class")), "pathForResource:", "AboutPanel.cib"), + aboutPanelController = objj_msgSend(CPWindowController, "alloc"), + aboutPanelController = objj_msgSend(aboutPanelController, "initWithWindowCibPath:owner:", aboutPanelPath, aboutPanelController), + aboutPanel = objj_msgSend(aboutPanelController, "window"), + contentView = objj_msgSend(aboutPanel, "contentView"), + imageView = objj_msgSend(contentView, "viewWithTag:", 1), + applicationLabel = objj_msgSend(contentView, "viewWithTag:", 2), + versionLabel = objj_msgSend(contentView, "viewWithTag:", 3), + copyrightLabel = objj_msgSend(contentView, "viewWithTag:", 4), + standardPath = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(self, "class")), "pathForResource:", "standardApplicationIcon.png"); + objj_msgSend(applicationLabel, "setFont:", objj_msgSend(CPFont, "boldSystemFontOfSize:", 14.0)); + objj_msgSend(applicationLabel, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(versionLabel, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(copyrightLabel, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(imageView, "setImage:", applicationIcon || objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", standardPath, CGSizeMake(256, 256))); + objj_msgSend(applicationLabel, "setStringValue:", applicationTitle || ""); + if (applicationVersion && version) + objj_msgSend(versionLabel, "setStringValue:", "Version " + applicationVersion + " (" + version + ")"); + else if (applicationVersion || version) + objj_msgSend(versionLabel, "setStringValue:", "Version " + (applicationVersion || version)); + else + objj_msgSend(versionLabel, "setStringValue:", ""); + objj_msgSend(copyrightLabel, "setStringValue:", copyright || ""); + objj_msgSend(aboutPanel, "center"); + _aboutPanel = aboutPanel; + } + objj_msgSend(_aboutPanel, "orderFront:", self); +} +},["void","CPDictionary"]), new objj_method(sel_getUid("_documentController:didCloseAll:context:"), function $CPApplication___documentController_didCloseAll_context_(self, _cmd, docController, didCloseAll, info) +{ with(self) +{ + if (didCloseAll) + { + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("applicationShouldTerminate:"))) + objj_msgSend(self, "replyToApplicationShouldTerminate:", objj_msgSend(_delegate, "applicationShouldTerminate:", self)); + else + objj_msgSend(self, "replyToApplicationShouldTerminate:", YES); + } +} +},["void","NSDocumentController*","BOOL","Object"]), new objj_method(sel_getUid("replyToApplicationShouldTerminate:"), function $CPApplication__replyToApplicationShouldTerminate_(self, _cmd, terminate) +{ with(self) +{ + if (terminate == CPTerminateNow) + { + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPApplicationWillTerminateNotification, self); + objj_msgSend(CPPlatform, "terminateApplication"); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("activateIgnoringOtherApps:"), function $CPApplication__activateIgnoringOtherApps_(self, _cmd, shouldIgnoreOtherApps) +{ with(self) +{ + objj_msgSend(self, "_willBecomeActive"); + objj_msgSend(CPPlatform, "activateIgnoringOtherApps:", shouldIgnoreOtherApps); + _isActive = YES; + objj_msgSend(self, "_willResignActive"); +} +},["void","BOOL"]), new objj_method(sel_getUid("deactivate"), function $CPApplication__deactivate(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_willResignActive"); + objj_msgSend(CPPlatform, "deactivate"); + _isActive = NO; + objj_msgSend(self, "_didResignActive"); +} +},["void"]), new objj_method(sel_getUid("isActive"), function $CPApplication__isActive(self, _cmd) +{ with(self) +{ + return _isActive; +} +},["void"]), new objj_method(sel_getUid("hideOtherApplications:"), function $CPApplication__hideOtherApplications_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(CPPlatform, "hideOtherApplications:", self); +} +},["void","id"]), new objj_method(sel_getUid("run"), function $CPApplication__run(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "finishLaunching"); +} +},["void"]), new objj_method(sel_getUid("runModalForWindow:"), function $CPApplication__runModalForWindow_(self, _cmd, aWindow) +{ with(self) +{ + objj_msgSend(self, "runModalSession:", objj_msgSend(self, "beginModalSessionForWindow:", aWindow)); +} +},["void","CPWindow"]), new objj_method(sel_getUid("stopModalWithCode:"), function $CPApplication__stopModalWithCode_(self, _cmd, aCode) +{ with(self) +{ + if (!_currentSession) + { + return; + } + _currentSession._state = aCode; + _currentSession = _currentSession._previous; + objj_msgSend(self, "_removeRunModalLoop"); +} +},["void","int"]), new objj_method(sel_getUid("_removeRunModalLoop"), function $CPApplication___removeRunModalLoop(self, _cmd) +{ with(self) +{ + var count = _eventListeners.length; + while (count--) + if (_eventListeners[count]._callback === _CPRunModalLoop) + { + _eventListeners.splice(count, 1); + return; + } +} +},["void"]), new objj_method(sel_getUid("stopModal"), function $CPApplication__stopModal(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "stopModalWithCode:", CPRunStoppedResponse) +} +},["void"]), new objj_method(sel_getUid("abortModal"), function $CPApplication__abortModal(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "stopModalWithCode:", CPRunAbortedResponse); +} +},["void"]), new objj_method(sel_getUid("beginModalSessionForWindow:"), function $CPApplication__beginModalSessionForWindow_(self, _cmd, aWindow) +{ with(self) +{ + return _CPModalSessionMake(aWindow, 0); +} +},["CPModalSession","CPWindow"]), new objj_method(sel_getUid("runModalSession:"), function $CPApplication__runModalSession_(self, _cmd, aModalSession) +{ with(self) +{ + aModalSession._previous = _currentSession; + _currentSession = aModalSession; + var theWindow = aModalSession._window; + objj_msgSend(theWindow, "center"); + objj_msgSend(theWindow, "makeKeyAndOrderFront:", self); + objj_msgSend(CPApp, "setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:", _CPRunModalLoop, CPAnyEventMask, nil, 0, NO); +} +},["void","CPModalSession"]), new objj_method(sel_getUid("modalWindow"), function $CPApplication__modalWindow(self, _cmd) +{ with(self) +{ + if (!_currentSession) + return nil; + return _currentSession._window; +} +},["CPWindow"]), new objj_method(sel_getUid("_handleKeyEquivalent:"), function $CPApplication___handleKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "keyWindow"), "performKeyEquivalent:", anEvent) || + objj_msgSend(_mainMenu, "performKeyEquivalent:", anEvent); +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("sendEvent:"), function $CPApplication__sendEvent_(self, _cmd, anEvent) +{ with(self) +{ + _currentEvent = anEvent; + var willPropagate = objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_willPropagateCurrentDOMEvent"); + objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", NO); + if (objj_msgSend(anEvent, "_couldBeKeyEquivalent") && objj_msgSend(self, "_handleKeyEquivalent:", anEvent)) + { + var characters = objj_msgSend(anEvent, "characters"), + modifierFlags = objj_msgSend(anEvent, "modifierFlags"); + if ((characters == "c" || characters == "x" || characters == "v") && (modifierFlags & CPPlatformActionKeyMask)) + objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + return; + } + objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", willPropagate); + if (_eventListeners.length) + { + if (_eventListeners[_eventListeners.length - 1]._mask & (1 << objj_msgSend(anEvent, "type"))) + _eventListeners.pop()._callback(anEvent); + return; + } + objj_msgSend(objj_msgSend(anEvent, "window"), "sendEvent:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("doCommandBySelector:"), function $CPApplication__doCommandBySelector_(self, _cmd, aSelector) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", aSelector)) + objj_msgSend(_delegate, "performSelector:", aSelector); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPApplication").super_class }, "doCommandBySelector:", aSelector); +} +},["void","SEL"]), new objj_method(sel_getUid("keyWindow"), function $CPApplication__keyWindow(self, _cmd) +{ with(self) +{ + return _keyWindow; +} +},["CPWindow"]), new objj_method(sel_getUid("mainWindow"), function $CPApplication__mainWindow(self, _cmd) +{ with(self) +{ + return _mainWindow; +} +},["CPWindow"]), new objj_method(sel_getUid("windowWithWindowNumber:"), function $CPApplication__windowWithWindowNumber_(self, _cmd, aWindowNumber) +{ with(self) +{ + return _windows[aWindowNumber]; +} +},["CPWindow","int"]), new objj_method(sel_getUid("windows"), function $CPApplication__windows(self, _cmd) +{ with(self) +{ + return _windows; +} +},["CPArray"]), new objj_method(sel_getUid("orderedWindows"), function $CPApplication__orderedWindows(self, _cmd) +{ with(self) +{ + return []; +} +},["CPArray"]), new objj_method(sel_getUid("hide:"), function $CPApplication__hide_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(CPPlatform, "hide:", self); +} +},["void","id"]), new objj_method(sel_getUid("mainMenu"), function $CPApplication__mainMenu(self, _cmd) +{ with(self) +{ + return _mainMenu; +} +},["CPMenu"]), new objj_method(sel_getUid("setMainMenu:"), function $CPApplication__setMainMenu_(self, _cmd, aMenu) +{ with(self) +{ + if (objj_msgSend(aMenu, "_menuName") === "CPMainMenu") + { + if (_mainMenu === aMenu) + return; + _mainMenu = aMenu; + if (objj_msgSend(CPPlatform, "supportsNativeMainMenu")) + window.cpSetMainMenu(_mainMenu); + } + else + objj_msgSend(aMenu, "_setMenuName:", "CPMainMenu"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("orderFrontColorPanel:"), function $CPApplication__orderFrontColorPanel_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPColorPanel, "sharedColorPanel"), "orderFront:", self); +} +},["void","id"]), new objj_method(sel_getUid("tryToPerform:with:"), function $CPApplication__tryToPerform_with_(self, _cmd, anAction, anObject) +{ with(self) +{ + if (!anAction) + return NO; + if (objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPApplication").super_class }, "tryToPerform:with:", anAction, anObject)) + return YES; + if(objj_msgSend(_delegate, "respondsToSelector:", anAction)) + { + objj_msgSend(_delegate, "performSelector:withObject:", anAction, anObject); + return YES; + } + return NO; +} +},["BOOL","SEL","id"]), new objj_method(sel_getUid("sendAction:to:from:"), function $CPApplication__sendAction_to_from_(self, _cmd, anAction, aTarget, aSender) +{ with(self) +{ + var target = objj_msgSend(self, "targetForAction:to:from:", anAction, aTarget, aSender); + if (!target) + return NO; + objj_msgSend(target, "performSelector:withObject:", anAction, aSender); + return YES; +} +},["BOOL","SEL","id","id"]), new objj_method(sel_getUid("targetForAction:to:from:"), function $CPApplication__targetForAction_to_from_(self, _cmd, anAction, aTarget, aSender) +{ with(self) +{ + if (!anAction) + return nil; + if (aTarget) + return aTarget; + return objj_msgSend(self, "targetForAction:", anAction); +} +},["id","SEL","id","id"]), new objj_method(sel_getUid("_targetForWindow:action:"), function $CPApplication___targetForWindow_action_(self, _cmd, aWindow, anAction) +{ with(self) +{ + var responder = objj_msgSend(aWindow, "firstResponder"), + checkWindow = YES; + while (responder) + { + if (objj_msgSend(responder, "respondsToSelector:", anAction)) + return responder; + if (responder == aWindow) + checkWindow = NO; + responder = objj_msgSend(responder, "nextResponder"); + } + if (checkWindow && objj_msgSend(aWindow, "respondsToSelector:", anAction)) + return aWindow; + var delegate = objj_msgSend(aWindow, "delegate"); + if (objj_msgSend(delegate, "respondsToSelector:", anAction)) + return delegate; + var windowController = objj_msgSend(aWindow, "windowController"); + if (objj_msgSend(windowController, "respondsToSelector:", anAction)) + return windowController; + var theDocument = objj_msgSend(windowController, "document"); + if (theDocument !== delegate && objj_msgSend(theDocument, "respondsToSelector:", anAction)) + return theDocument; + return nil; +} +},["id","CPWindow","SEL"]), new objj_method(sel_getUid("targetForAction:"), function $CPApplication__targetForAction_(self, _cmd, anAction) +{ with(self) +{ + if (!anAction) + return nil; + var target = objj_msgSend(self, "_targetForWindow:action:", objj_msgSend(self, "keyWindow"), anAction); + if (target) + return target; + target = objj_msgSend(self, "_targetForWindow:action:", objj_msgSend(self, "mainWindow"), anAction); + if (target) + return target; + if (objj_msgSend(self, "respondsToSelector:", anAction)) + return self; + if (objj_msgSend(_delegate, "respondsToSelector:", anAction)) + return _delegate; + if (objj_msgSend(_documentController, "respondsToSelector:", anAction)) + return _documentController; + return nil; +} +},["id","SEL"]), new objj_method(sel_getUid("setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:"), function $CPApplication__setCallback_forNextEventMatchingMask_untilDate_inMode_dequeue_(self, _cmd, aCallback, aMask, anExpiration, aMode, shouldDequeue) +{ with(self) +{ + _eventListeners.push(_CPEventListenerMake(aMask, aCallback)); +} +},["void","Function","unsignedint","CPDate","CPString","BOOL"]), new objj_method(sel_getUid("setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:"), function $CPApplication__setTarget_selector_forNextEventMatchingMask_untilDate_inMode_dequeue_(self, _cmd, aTarget, aSelector, aMask, anExpiration, aMode, shouldDequeue) +{ with(self) +{ + _eventListeners.push(_CPEventListenerMake(aMask, function (anEvent) { objj_msgSend(aTarget, aSelector, anEvent); })); +} +},["CPEvent","id","SEL","unsignedint","CPDate","CPString","BOOL"]), new objj_method(sel_getUid("currentEvent"), function $CPApplication__currentEvent(self, _cmd) +{ with(self) +{ + return _currentEvent; +} +},["CPEvent"]), new objj_method(sel_getUid("beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:"), function $CPApplication__beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(self, _cmd, aSheet, aWindow, aModalDelegate, aDidEndSelector, aContextInfo) +{ with(self) +{ + var styleMask = objj_msgSend(aSheet, "styleMask"); + if (!(styleMask & CPDocModalWindowMask)) + { + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Currently only CPDocModalWindowMask style mask is supported for attached sheets"); + return; + } + objj_msgSend(aWindow, "orderFront:", self); + objj_msgSend(aSheet, "setPlatformWindow:", objj_msgSend(aWindow, "platformWindow")); + objj_msgSend(aWindow, "_attachSheet:modalDelegate:didEndSelector:contextInfo:", aSheet, aModalDelegate, aDidEndSelector, aContextInfo); +} +},["void","CPWindow","CPWindow","id","SEL","id"]), new objj_method(sel_getUid("endSheet:returnCode:"), function $CPApplication__endSheet_returnCode_(self, _cmd, sheet, returnCode) +{ with(self) +{ + var count = objj_msgSend(_windows, "count"); + while (--count >= 0) + { + var aWindow = objj_msgSend(_windows, "objectAtIndex:", count); + var context = aWindow._sheetContext; + if (context != nil && context["sheet"] === sheet) + { + context["returnCode"] = returnCode; + objj_msgSend(aWindow, "_detachSheetWindow"); + return; + } + } +} +},["void","CPWindow","int"]), new objj_method(sel_getUid("endSheet:"), function $CPApplication__endSheet_(self, _cmd, sheet) +{ with(self) +{ + objj_msgSend(self, "endSheet:returnCode:", sheet, 0); +} +},["void","CPWindow"]), new objj_method(sel_getUid("arguments"), function $CPApplication__arguments(self, _cmd) +{ with(self) +{ + if(_fullArgsString !== window.location.hash) + objj_msgSend(self, "_reloadArguments"); + return _args; +} +},["CPArray"]), new objj_method(sel_getUid("setArguments:"), function $CPApplication__setArguments_(self, _cmd, args) +{ with(self) +{ + if(!args || args.length == 0) + { + _args = []; + window.location.hash = "#"; + return; + } + if(objj_msgSend(args, "class") != CPArray) + args = objj_msgSend(CPArray, "arrayWithObject:", args); + _args = args; + var toEncode = objj_msgSend(_args, "copy"); + for(var i=0, count = toEncode.length; i<count; i++) + toEncode[i] = encodeURIComponent(toEncode[i]); + var hash = objj_msgSend(toEncode, "componentsJoinedByString:", "/"); + window.location.hash = "#" + hash; +} +},["void","CPArray"]), new objj_method(sel_getUid("_reloadArguments"), function $CPApplication___reloadArguments(self, _cmd) +{ with(self) +{ + _fullArgsString = window.location.hash; + if (_fullArgsString.length) + { + var args = _fullArgsString.substring(1).split("/"); + for (var i = 0, count = args.length; i < count; i++) + args[i] = decodeURIComponent(args[i]); + _args = args; + } + else + _args = []; +} +},["void"]), new objj_method(sel_getUid("namedArguments"), function $CPApplication__namedArguments(self, _cmd) +{ with(self) +{ + return _namedArgs; +} +},["CPDictionary"]), new objj_method(sel_getUid("_openURL:"), function $CPApplication___openURL_(self, _cmd, aURL) +{ with(self) +{ + if (_delegate && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("application:openFile:"))) + { + CPLog.warn("application:openFile: is deprecated, use application:openURL: instead."); + return objj_msgSend(_delegate, "application:openFile:", self, objj_msgSend(aURL, "absoluteString")); + } + if (_delegate && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("application:openURL:"))) + return objj_msgSend(_delegate, "application:openURL:", self, aURL); + return !!objj_msgSend(_documentController, "openDocumentWithContentsOfURL:display:error:", aURL, YES, NULL); +} +},["BOOL","CPURL"]), new objj_method(sel_getUid("_willBecomeActive"), function $CPApplication___willBecomeActive(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPApplicationWillBecomeActiveNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_didBecomeActive"), function $CPApplication___didBecomeActive(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "keyWindow") && _previousKeyWindow && + objj_msgSend(objj_msgSend(self, "windows"), "indexOfObjectIdenticalTo:", _previousKeyWindow) !== CPNotFound) + objj_msgSend(_previousKeyWindow, "makeKeyWindow"); + if (!objj_msgSend(self, "mainWindow") && _previousMainWindow && + objj_msgSend(objj_msgSend(self, "windows"), "indexOfObjectIdenticalTo:", _previousMainWindow) !== CPNotFound) + objj_msgSend(_previousMainWindow, "makeMainWindow"); + if (objj_msgSend(self, "keyWindow")) + objj_msgSend(objj_msgSend(self, "keyWindow"), "orderFront:", self); + else if (objj_msgSend(self, "mainWindow")) + objj_msgSend(objj_msgSend(self, "mainWindow"), "makeKeyAndOrderFront:", self); + else + objj_msgSend(objj_msgSend(self, "mainMenu")._menuWindow, "makeKeyWindow"); + _previousKeyWindow = nil; + _previousMainWindow = nil; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPApplicationDidBecomeActiveNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_willResignActive"), function $CPApplication___willResignActive(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPApplicationWillResignActiveNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_didResignActive"), function $CPApplication___didResignActive(self, _cmd) +{ with(self) +{ + if (self._activeMenu) + objj_msgSend(self._activeMenu, "cancelTracking"); + if (objj_msgSend(self, "keyWindow")) + { + _previousKeyWindow = objj_msgSend(self, "keyWindow"); + objj_msgSend(_previousKeyWindow, "resignKeyWindow"); + } + if (objj_msgSend(self, "mainWindow")) + { + _previousMainWindow = objj_msgSend(self, "mainWindow"); + objj_msgSend(_previousMainWindow, "resignMainWindow"); + } + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPApplicationDidResignActiveNotification, self, nil); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sharedApplication"), function $CPApplication__sharedApplication(self, _cmd) +{ with(self) +{ + if (!CPApp) + CPApp = objj_msgSend(objj_msgSend(CPApplication, "alloc"), "init"); + return CPApp; +} +},["CPApplication"]), new objj_method(sel_getUid("defaultThemeName"), function $CPApplication__defaultThemeName(self, _cmd) +{ with(self) +{ + return (objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "objectForInfoDictionaryKey:", "CPDefaultTheme") || "Aristo"); +} +},["CPString"])]); +} +var _CPModalSessionMake = function(aWindow, aStopCode) +{ + return { _window:aWindow, _state:CPRunContinuesResponse , _previous:nil }; +} +var _CPEventListenerMake = function(anEventMask, aCallback) +{ + return { _mask:anEventMask, _callback:aCallback }; +} +_CPRunModalLoop = function(anEvent) +{ + objj_msgSend(CPApp, "setCallback:forNextEventMatchingMask:untilDate:inMode:dequeue:", _CPRunModalLoop, CPAnyEventMask, nil, 0, NO); + var theWindow = objj_msgSend(anEvent, "window"), + modalSession = CPApp._currentSession; + if (theWindow == modalSession._window || objj_msgSend(theWindow, "worksWhenModal")) + objj_msgSend(theWindow, "sendEvent:", anEvent); +} +CPApplicationMain= function(args, namedArgs) +{ + var mainBundle = objj_msgSend(CPBundle, "mainBundle"), + principalClass = objj_msgSend(mainBundle, "principalClass"); + if (!principalClass) + principalClass = objj_msgSend(CPApplication, "class"); + objj_msgSend(principalClass, "sharedApplication"); + if (objj_msgSend(args, "containsObject:", "debug")) + CPLogRegister(CPLogPopup); + CPApp._args = args; + CPApp._namedArgs = namedArgs; + objj_msgSend(_CPAppBootstrapper, "performActions"); +} +var _CPAppBootstrapperActions = nil; +{var the_class = objj_allocateClassPair(CPObject, "_CPAppBootstrapper"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("actions"), function $_CPAppBootstrapper__actions(self, _cmd) +{ with(self) +{ + return [sel_getUid("bootstrapPlatform"), sel_getUid("loadDefaultTheme"), sel_getUid("loadMainCibFile")]; +} +},["CPArray"]), new objj_method(sel_getUid("performActions"), function $_CPAppBootstrapper__performActions(self, _cmd) +{ with(self) +{ + if (!_CPAppBootstrapperActions) + _CPAppBootstrapperActions = objj_msgSend(self, "actions"); + while (_CPAppBootstrapperActions.length) + { + var action = _CPAppBootstrapperActions.shift(); + if (objj_msgSend(self, action)) + return; + } + objj_msgSend(CPApp, "run"); +} +},["void"]), new objj_method(sel_getUid("bootstrapPlatform"), function $_CPAppBootstrapper__bootstrapPlatform(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPPlatform, "bootstrap"); +} +},["BOOL"]), new objj_method(sel_getUid("loadDefaultTheme"), function $_CPAppBootstrapper__loadDefaultTheme(self, _cmd) +{ with(self) +{ + var defaultThemeName = objj_msgSend(CPApplication, "defaultThemeName"), + themeURL = nil; + if (defaultThemeName === "Aristo") + themeURL = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPApplication, "class")), "pathForResource:", defaultThemeName + ".blend"); + else + themeURL = objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", defaultThemeName + ".blend"); + var blend = objj_msgSend(objj_msgSend(CPThemeBlend, "alloc"), "initWithContentsOfURL:", themeURL); + objj_msgSend(blend, "loadWithDelegate:", self); + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("blendDidFinishLoading:"), function $_CPAppBootstrapper__blendDidFinishLoading_(self, _cmd, aThemeBlend) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPApplication, "sharedApplication"), "setThemeBlend:", aThemeBlend); + objj_msgSend(CPTheme, "setDefaultTheme:", objj_msgSend(CPTheme, "themeNamed:", objj_msgSend(CPApplication, "defaultThemeName"))); + objj_msgSend(self, "performActions"); +} +},["void","CPThemeBlend"]), new objj_method(sel_getUid("loadMainCibFile"), function $_CPAppBootstrapper__loadMainCibFile(self, _cmd) +{ with(self) +{ + var mainBundle = objj_msgSend(CPBundle, "mainBundle"), + mainCibFile = objj_msgSend(mainBundle, "objectForInfoDictionaryKey:", CPMainCibFile) || objj_msgSend(mainBundle, "objectForInfoDictionaryKey:", CPMainCibFileHumanFriendly); + if (mainCibFile) + { + objj_msgSend(mainBundle, "loadCibFile:externalNameTable:loadDelegate:", mainCibFile, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", CPApp, CPCibOwner), self); + return YES; + } + else + objj_msgSend(self, "loadCiblessBrowserMainMenu"); + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("loadCiblessBrowserMainMenu"), function $_CPAppBootstrapper__loadCiblessBrowserMainMenu(self, _cmd) +{ with(self) +{ + var mainMenu = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "initWithTitle:", "MainMenu"); + objj_msgSend(mainMenu, "setAutoenablesItems:", NO); + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPApplication, "class")), + newMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "New", sel_getUid("newDocument:"), "n"); + objj_msgSend(newMenuItem, "setImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/New.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(newMenuItem, "setAlternateImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/NewHighlighted.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(mainMenu, "addItem:", newMenuItem); + var openMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Open", sel_getUid("openDocument:"), "o"); + objj_msgSend(openMenuItem, "setImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/Open.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(openMenuItem, "setAlternateImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/OpenHighlighted.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(mainMenu, "addItem:", openMenuItem); + var saveMenu = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "initWithTitle:", "Save"), + saveMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Save", sel_getUid("saveDocument:"), nil); + objj_msgSend(saveMenuItem, "setImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/Save.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(saveMenuItem, "setAlternateImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPApplication/SaveHighlighted.png"), CGSizeMake(16.0, 16.0))); + objj_msgSend(saveMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Save", sel_getUid("saveDocument:"), "s")); + objj_msgSend(saveMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Save As", sel_getUid("saveDocumentAs:"), nil)); + objj_msgSend(saveMenuItem, "setSubmenu:", saveMenu); + objj_msgSend(mainMenu, "addItem:", saveMenuItem); + var editMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Edit", nil, nil), + editMenu = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "initWithTitle:", "Edit"), + undoMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Undo", sel_getUid("undo:"), CPUndoKeyEquivalent), + redoMenuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Redo", sel_getUid("redo:"), CPRedoKeyEquivalent); + objj_msgSend(undoMenuItem, "setKeyEquivalentModifierMask:", CPUndoKeyEquivalentModifierMask); + objj_msgSend(redoMenuItem, "setKeyEquivalentModifierMask:", CPRedoKeyEquivalentModifierMask); + objj_msgSend(editMenu, "addItem:", undoMenuItem); + objj_msgSend(editMenu, "addItem:", redoMenuItem); + objj_msgSend(editMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Cut", sel_getUid("cut:"), "x")), + objj_msgSend(editMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Copy", sel_getUid("copy:"), "c")), + objj_msgSend(editMenu, "addItem:", objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Paste", sel_getUid("paste:"), "v")); + objj_msgSend(editMenuItem, "setSubmenu:", editMenu); + objj_msgSend(editMenuItem, "setHidden:", YES); + objj_msgSend(mainMenu, "addItem:", editMenuItem); + objj_msgSend(mainMenu, "addItem:", objj_msgSend(CPMenuItem, "separatorItem")); + objj_msgSend(CPApp, "setMainMenu:", mainMenu); +} +},["void"]), new objj_method(sel_getUid("cibDidFinishLoading:"), function $_CPAppBootstrapper__cibDidFinishLoading_(self, _cmd, aCib) +{ with(self) +{ + objj_msgSend(self, "performActions"); +} +},["void","CPCib"]), new objj_method(sel_getUid("cibDidFailToLoad:"), function $_CPAppBootstrapper__cibDidFailToLoad_(self, _cmd, aCib) +{ with(self) +{ + throw new Error("Could not load main cib file (Did you forget to nib2cib it?)."); +} +},["void","CPCib"]), new objj_method(sel_getUid("reset"), function $_CPAppBootstrapper__reset(self, _cmd) +{ with(self) +{ + _CPAppBootstrapperActions = nil; +} +},["void"])]); +} + +p;19;CPArrayController.jt;24042;@STATIC;1.0;I;27;AppKit/CPObjectController.jI;26;AppKit/CPKeyValueBinding.jt;23959;objj_executeFile("AppKit/CPObjectController.j", NO); +objj_executeFile("AppKit/CPKeyValueBinding.j", NO); +{var the_class = objj_allocateClassPair(CPObjectController, "CPArrayController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_avoidsEmptySelection"), new objj_ivar("_clearsFilterPredicateOnInsertion"), new objj_ivar("_filterRestrictsInsertion"), new objj_ivar("_preservesSelection"), new objj_ivar("_selectsInsertedObjects"), new objj_ivar("_alwaysUsesMultipleValuesMarker"), new objj_ivar("_selectionIndexes"), new objj_ivar("_sortDescriptors"), new objj_ivar("_filterPredicate"), new objj_ivar("_arrangedObjects")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPArrayController__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPArrayController").super_class }, "init"); + if (self) + { + _selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("prepareContent"), function $CPArrayController__prepareContent(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_setContentArray:", [objj_msgSend(self, "newObject")]); +} +},["void"]), new objj_method(sel_getUid("preservesSelection"), function $CPArrayController__preservesSelection(self, _cmd) +{ with(self) +{ + return _preservesSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setPreservesSelection:"), function $CPArrayController__setPreservesSelection_(self, _cmd, value) +{ with(self) +{ + _preservesSelection = value; +} +},["void","BOOL"]), new objj_method(sel_getUid("selectsInsertedObjects"), function $CPArrayController__selectsInsertedObjects(self, _cmd) +{ with(self) +{ + return _selectsInsertedObjects; +} +},["BOOL"]), new objj_method(sel_getUid("setSelectsInsertedObjects:"), function $CPArrayController__setSelectsInsertedObjects_(self, _cmd, value) +{ with(self) +{ + _selectsInsertedObjects = value; +} +},["void","BOOL"]), new objj_method(sel_getUid("avoidsEmptySelection"), function $CPArrayController__avoidsEmptySelection(self, _cmd) +{ with(self) +{ + return _avoidsEmptySelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAvoidsEmptySelection:"), function $CPArrayController__setAvoidsEmptySelection_(self, _cmd, value) +{ with(self) +{ + _avoidsEmptySelection = value; +} +},["void","BOOL"]), new objj_method(sel_getUid("setContent:"), function $CPArrayController__setContent_(self, _cmd, value) +{ with(self) +{ + if(!objj_msgSend(value, "isKindOfClass:", objj_msgSend(CPArray, "class"))) + value = [value]; + var oldSelectedObjects = nil, + oldSelectionIndexes = nil; + if (objj_msgSend(self, "preservesSelection")) + oldSelectedObjects = objj_msgSend(self, "selectedObjects"); + else + oldSelectionIndexes = objj_msgSend(self, "selectionIndexes"); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "willChangeValueForKey:", "filterPredicate"); + _contentObject = value; + if(_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "__setFilterPredicate:", nil); + else + objj_msgSend(self, "_rearrangeObjects"); + if (objj_msgSend(self, "preservesSelection")) + objj_msgSend(self, "__setSelectedObjects:", oldSelectedObjects); + else + objj_msgSend(self, "__setSelectionIndexes:", oldSelectionIndexes); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "didChangeValueForKey:", "filterPredicate"); +} +},["void","id"]), new objj_method(sel_getUid("_setContentArray:"), function $CPArrayController___setContentArray_(self, _cmd, anArray) +{ with(self) +{ + objj_msgSend(self, "setContent:", anArray); +} +},["void","id"]), new objj_method(sel_getUid("_setContentSet:"), function $CPArrayController___setContentSet_(self, _cmd, aSet) +{ with(self) +{ + objj_msgSend(self, "setContent:", aSet); +} +},["void","id"]), new objj_method(sel_getUid("contentArray"), function $CPArrayController__contentArray(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "content"); +} +},["id"]), new objj_method(sel_getUid("contentSet"), function $CPArrayController__contentSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "content"); +} +},["id"]), new objj_method(sel_getUid("arrangeObjects:"), function $CPArrayController__arrangeObjects_(self, _cmd, objects) +{ with(self) +{ + var filterPredicate = objj_msgSend(self, "filterPredicate"), + sortDescriptors = objj_msgSend(self, "sortDescriptors"); + if (filterPredicate && sortDescriptors) + { + var sortedObjects = objj_msgSend(objects, "filteredArrayUsingPredicate:", filterPredicate); + objj_msgSend(sortedObjects, "sortUsingDescriptors:", sortDescriptors); + return sortedObjects; + } + else if (filterPredicate) + return objj_msgSend(objects, "filteredArrayUsingPredicate:", filterPredicate); + else if (sortDescriptors) + return objj_msgSend(objects, "sortedArrayUsingDescriptors:", sortDescriptors); + return objj_msgSend(objects, "copy"); +} +},["CPArray","CPArray"]), new objj_method(sel_getUid("rearrangeObjects"), function $CPArrayController__rearrangeObjects(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "arrangedObjects"); + objj_msgSend(self, "_rearrangeObjects"); + objj_msgSend(self, "didChangeValueForKey:", "arrangedObjects"); +} +},["void"]), new objj_method(sel_getUid("_rearrangeObjects"), function $CPArrayController___rearrangeObjects(self, _cmd) +{ with(self) +{ + var oldSelectedObjects = nil, + oldSelectionIndexes = nil; + if (objj_msgSend(self, "preservesSelection")) + oldSelectedObjects = objj_msgSend(self, "selectedObjects"); + else + oldSelectionIndexes = objj_msgSend(self, "selectionIndexes"); + objj_msgSend(self, "__setArrangedObjects:", objj_msgSend(self, "arrangeObjects:", objj_msgSend(self, "contentArray"))); + if (objj_msgSend(self, "preservesSelection")) + objj_msgSend(self, "__setSelectedObjects:", oldSelectedObjects); + else + objj_msgSend(self, "__setSelectionIndexes:", oldSelectionIndexes); +} +},["void"]), new objj_method(sel_getUid("__setArrangedObjects:"), function $CPArrayController____setArrangedObjects_(self, _cmd, value) +{ with(self) +{ + if (_arrangedObjects === value) + return; + _arrangedObjects = objj_msgSend(objj_msgSend(_CPObservableArray, "alloc"), "initWithArray:", value); +} +},["void","id"]), new objj_method(sel_getUid("arrangedObjects"), function $CPArrayController__arrangedObjects(self, _cmd) +{ with(self) +{ + return _arrangedObjects; +} +},["id"]), new objj_method(sel_getUid("sortDescriptors"), function $CPArrayController__sortDescriptors(self, _cmd) +{ with(self) +{ + return _sortDescriptors; +} +},["CPArray"]), new objj_method(sel_getUid("setSortDescriptors:"), function $CPArrayController__setSortDescriptors_(self, _cmd, value) +{ with(self) +{ + if (_sortDescriptors === value) + return; + _sortDescriptors = objj_msgSend(value, "copy"); + objj_msgSend(self, "_rearrangeObjects"); +} +},["void","CPArray"]), new objj_method(sel_getUid("filterPredicate"), function $CPArrayController__filterPredicate(self, _cmd) +{ with(self) +{ + return _filterPredicate; +} +},["CPPredicate"]), new objj_method(sel_getUid("setFilterPredicate:"), function $CPArrayController__setFilterPredicate_(self, _cmd, value) +{ with(self) +{ + objj_msgSend(self, "__setFilterPredicate:", value); +} +},["void","CPPredicate"]), new objj_method(sel_getUid("__setFilterPredicate:"), function $CPArrayController____setFilterPredicate_(self, _cmd, value) +{ with(self) +{ + if (_filterPredicate === value) + return; + _filterPredicate = value; + objj_msgSend(self, "_rearrangeObjects"); +} +},["void","CPPredicate"]), new objj_method(sel_getUid("alwaysUsesMultipleValuesMarker"), function $CPArrayController__alwaysUsesMultipleValuesMarker(self, _cmd) +{ with(self) +{ + return _alwaysUsesMultipleValuesMarker; +} +},["BOOL"]), new objj_method(sel_getUid("selectionIndex"), function $CPArrayController__selectionIndex(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectionIndexes, "firstIndex"); +} +},["unsigned"]), new objj_method(sel_getUid("setSelectionIndex:"), function $CPArrayController__setSelectionIndex_(self, _cmd, index) +{ with(self) +{ + return objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", index)); +} +},["BOOL","unsigned"]), new objj_method(sel_getUid("selectionIndexes"), function $CPArrayController__selectionIndexes(self, _cmd) +{ with(self) +{ + return _selectionIndexes; +} +},["CPIndexSet"]), new objj_method(sel_getUid("setSelectionIndexes:"), function $CPArrayController__setSelectionIndexes_(self, _cmd, indexes) +{ with(self) +{ + objj_msgSend(self, "__setSelectionIndexes:", indexes); +} +},["BOOL","CPIndexSet"]), new objj_method(sel_getUid("__setSelectionIndex:"), function $CPArrayController____setSelectionIndex_(self, _cmd, theIndex) +{ with(self) +{ + objj_msgSend(self, "__setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", theIndex)); +} +},["BOOL","int"]), new objj_method(sel_getUid("__setSelectionIndexes:"), function $CPArrayController____setSelectionIndexes_(self, _cmd, indexes) +{ with(self) +{ + if (!indexes) + indexes = objj_msgSend(CPIndexSet, "indexSet"); + if (!objj_msgSend(indexes, "count")) + { + if(_avoidsEmptySelection && objj_msgSend(objj_msgSend(self, "arrangedObjects"), "count")) + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", 0); + } + else + { + var objectsCount = objj_msgSend(objj_msgSend(self, "arrangedObjects"), "count"); + objj_msgSend(indexes, "removeIndexesInRange:", CPMakeRange(objectsCount, objj_msgSend(indexes, "lastIndex")+1)); + if(!objj_msgSend(indexes, "count") && _avoidsEmptySelection && objectsCount) + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", objectsCount-1); + } + if (objj_msgSend(_selectionIndexes, "isEqualToIndexSet:", indexes)) + return NO; + _selectionIndexes = objj_msgSend(indexes, "copy"); + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "selectionIndexes", self), "reverseSetValueFor:", "selectionIndexes"); + return YES; +} +},["BOOL","CPIndexSet"]), new objj_method(sel_getUid("selectedObjects"), function $CPArrayController__selectedObjects(self, _cmd) +{ with(self) +{ + var objects = objj_msgSend(objj_msgSend(self, "arrangedObjects"), "objectsAtIndexes:", objj_msgSend(self, "selectionIndexes")); + return objj_msgSend(_CPObservableArray, "arrayWithArray:", (objects || [])); +} +},["CPArray"]), new objj_method(sel_getUid("setSelectedObjects:"), function $CPArrayController__setSelectedObjects_(self, _cmd, objects) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "selectionIndexes"); + objj_msgSend(self, "_selectionWillChange"); + objj_msgSend(self, "__setSelectedObjects:", objects); + objj_msgSend(self, "didChangeValueForKey:", "selectionIndexes"); + objj_msgSend(self, "_selectionDidChange"); +} +},["BOOL","CPArray"]), new objj_method(sel_getUid("__setSelectedObjects:"), function $CPArrayController____setSelectedObjects_(self, _cmd, objects) +{ with(self) +{ + var set = objj_msgSend(CPIndexSet, "indexSet"), + count = objj_msgSend(objects, "count"), + arrangedObjects = objj_msgSend(self, "arrangedObjects"); + for (var i=0; i<count; i++) + { + var index = objj_msgSend(arrangedObjects, "indexOfObject:", objj_msgSend(objects, "objectAtIndex:", i)); + if (index !== CPNotFound) + objj_msgSend(set, "addIndex:", index); + } + objj_msgSend(self, "__setSelectionIndexes:", set); + return YES; +} +},["BOOL","CPArray"]), new objj_method(sel_getUid("canSelectPrevious"), function $CPArrayController__canSelectPrevious(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex") > 0 +} +},["BOOL"]), new objj_method(sel_getUid("selectPrevious:"), function $CPArrayController__selectPrevious_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex") - 1; + if (index >= 0) + objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", index)); +} +},["void","id"]), new objj_method(sel_getUid("canSelectNext"), function $CPArrayController__canSelectNext(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex") < objj_msgSend(objj_msgSend(self, "arrangedObjects"), "count") - 1; +} +},["BOOL"]), new objj_method(sel_getUid("selectNext:"), function $CPArrayController__selectNext_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex") + 1; + if (index < objj_msgSend(objj_msgSend(self, "arrangedObjects"), "count")) + objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", index)); +} +},["void","id"]), new objj_method(sel_getUid("addObject:"), function $CPArrayController__addObject_(self, _cmd, object) +{ with(self) +{ + if (!objj_msgSend(self, "canAdd")) + return; + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "willChangeValueForKey:", "filterPredicate"); + objj_msgSend(self, "willChangeValueForKey:", "content"); + objj_msgSend(_contentObject, "addObject:", object); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "__setFilterPredicate:", nil); + if (_filterPredicate === nil || objj_msgSend(_filterPredicate, "evaluateWithObject:", object)) + { + var pos = objj_msgSend(_arrangedObjects, "insertObject:inArraySortedByDescriptors:", object, _sortDescriptors); + if (_selectsInsertedObjects) + objj_msgSend(self, "__setSelectionIndex:", pos); + else + objj_msgSend(_selectionIndexes, "shiftIndexesStartingAtIndex:by:", pos, 1); + } + else + objj_msgSend(self, "_rearrangeObjects"); + objj_msgSend(self, "didChangeValueForKey:", "content"); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "didChangeValueForKey:", "filterPredicate"); +} +},["void","id"]), new objj_method(sel_getUid("insertObject:atArrangedObjectIndex:"), function $CPArrayController__insertObject_atArrangedObjectIndex_(self, _cmd, anObject, anIndex) +{ with(self) +{ + if (!objj_msgSend(self, "canAdd")) + return; + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "willChangeValueForKey:", "filterPredicate"); + objj_msgSend(self, "willChangeValueForKey:", "content"); + objj_msgSend(_contentObject, "insertObject:atIndex:", anObject, anIndex); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "__setFilterPredicate:", nil); + objj_msgSend(objj_msgSend(self, "arrangedObjects"), "insertObject:atIndex:", anObject, anIndex); + if (objj_msgSend(self, "selectsInsertedObjects")) + objj_msgSend(self, "__setSelectionIndex:", anIndex); + else + objj_msgSend(objj_msgSend(self, "selectionIndexes"), "shiftIndexesStartingAtIndex:by:", anIndex, 1); + if (objj_msgSend(self, "avoidsEmptySelection") && objj_msgSend(objj_msgSend(self, "selectionIndexes"), "count") <= 0 && objj_msgSend(_contentObject, "count") > 0) + objj_msgSend(self, "__setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", 0)); + objj_msgSend(self, "didChangeValueForKey:", "content"); + if (_clearsFilterPredicateOnInsertion) + objj_msgSend(self, "didChangeValueForKey:", "filterPredicate"); +} +},["void","id","int"]), new objj_method(sel_getUid("removeObject:"), function $CPArrayController__removeObject_(self, _cmd, object) +{ with(self) +{ + if (!objj_msgSend(self, "canRemove")) + return; + objj_msgSend(self, "willChangeValueForKey:", "content"); + objj_msgSend(_contentObject, "removeObject:", object); + if (_filterPredicate === nil || objj_msgSend(_filterPredicate, "evaluateWithObject:", object)) + { + var pos = objj_msgSend(_arrangedObjects, "indexOfObject:", object); + objj_msgSend(_arrangedObjects, "removeObjectAtIndex:", pos); + objj_msgSend(_selectionIndexes, "shiftIndexesStartingAtIndex:by:", pos, -1); + } + objj_msgSend(self, "didChangeValueForKey:", "content"); +} +},["void","id"]), new objj_method(sel_getUid("add:"), function $CPArrayController__add_(self, _cmd, sender) +{ with(self) +{ + if(!objj_msgSend(self, "canAdd")) + return; + objj_msgSend(self, "insert:", sender); +} +},["void","id"]), new objj_method(sel_getUid("insert:"), function $CPArrayController__insert_(self, _cmd, sender) +{ with(self) +{ + if(!objj_msgSend(self, "canInsert")) + return; + var newObject = objj_msgSend(self, "automaticallyPreparesContent") ? objj_msgSend(self, "newObject") : objj_msgSend(self, "_defaultNewObject"); + objj_msgSend(self, "addObject:", newObject); +} +},["void","id"]), new objj_method(sel_getUid("remove:"), function $CPArrayController__remove_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "removeObjects:", objj_msgSend(objj_msgSend(self, "arrangedObjects"), "objectsAtIndexes:", objj_msgSend(self, "selectionIndexes"))); +} +},["void","id"]), new objj_method(sel_getUid("removeObjectsAtArrangedObjectIndexes:"), function $CPArrayController__removeObjectsAtArrangedObjectIndexes_(self, _cmd, indexes) +{ with(self) +{ + objj_msgSend(self, "_removeObjects:", objj_msgSend(objj_msgSend(self, "arrangedObjects"), "objectsAtIndexes:", indexes)); +} +},["void","CPIndexSet"]), new objj_method(sel_getUid("addObjects:"), function $CPArrayController__addObjects_(self, _cmd, objects) +{ with(self) +{ + if(!objj_msgSend(self, "canAdd")) + return; + var contentArray = objj_msgSend(self, "contentArray"), + count = objj_msgSend(objects, "count"); + for (var i=0; i<count; i++) + objj_msgSend(contentArray, "addObject:", objj_msgSend(objects, "objectAtIndex:", i)); + objj_msgSend(self, "setContent:", contentArray); +} +},["void","CPArray"]), new objj_method(sel_getUid("removeObjects:"), function $CPArrayController__removeObjects_(self, _cmd, objects) +{ with(self) +{ + if(!objj_msgSend(self, "canRemove")) + return; + objj_msgSend(self, "_removeObjects:", objects); +} +},["void","CPArray"]), new objj_method(sel_getUid("_removeObjects:"), function $CPArrayController___removeObjects_(self, _cmd, objects) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "content"); + objj_msgSend(_contentObject, "removeObjectsInArray:", objects); + var arrangedObjects = objj_msgSend(self, "arrangedObjects"), + position = objj_msgSend(arrangedObjects, "indexOfObject:", objj_msgSend(objects, "objectAtIndex:", 0)); + objj_msgSend(arrangedObjects, "removeObjectsInArray:", objects); + var objectsCount = objj_msgSend(arrangedObjects, "count"), + selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + if (objj_msgSend(self, "preservesSelection") || objj_msgSend(self, "avoidsEmptySelection")) + { + selectionIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", position); + if (objectsCount <= 0) + selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + else if (position >= objectsCount) + selectionIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", objectsCount - 1); + } + _selectionIndexes = selectionIndexes; + objj_msgSend(self, "didChangeValueForKey:", "content"); +} +},["void","CPArray"]), new objj_method(sel_getUid("canInsert"), function $CPArrayController__canInsert(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isEditable"); +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPArrayController__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(CPArrayController, "class")) + return; + objj_msgSend(self, "exposeBinding:", "contentArray"); + objj_msgSend(self, "exposeBinding:", "contentSet"); +} +},["void"]), new objj_method(sel_getUid("keyPathsForValuesAffectingContentArray"), function $CPArrayController__keyPathsForValuesAffectingContentArray(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "content"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingArrangedObjects"), function $CPArrayController__keyPathsForValuesAffectingArrangedObjects(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "content", "filterPredicate", "sortDescriptors"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelection"), function $CPArrayController__keyPathsForValuesAffectingSelection(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndex"), function $CPArrayController__keyPathsForValuesAffectingSelectionIndex(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectionIndexes"), function $CPArrayController__keyPathsForValuesAffectingSelectionIndexes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "arrangedObjects"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingSelectedObjects"), function $CPArrayController__keyPathsForValuesAffectingSelectedObjects(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"), function $CPArrayController__keyPathsForValuesAffectingCanRemove(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectNext"), function $CPArrayController__keyPathsForValuesAffectingCanSelectNext(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanSelectPrevious"), function $CPArrayController__keyPathsForValuesAffectingCanSelectPrevious(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "selectionIndexes"); +} +},["CPSet"])]); +} +{ +var the_class = objj_getClass("CPArrayController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPArrayController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPArrayController__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPArrayController").super_class }, "initWithCoder:", coder); + if (self) + { + _avoidsEmptySelection = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerAvoidsEmptySelection"); + _clearsFilterPredicateOnInsertion = objj_msgSend(coder, "decodeBoolForKey:", "CPClearsFilterPredicateOnInsertion"); + _filterRestrictsInsertion = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerFilterRestrictsInsertion"); + _preservesSelection = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerPreservesSelection"); + _selectsInsertedObjects = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerSelectsInsertedObjects"); + _alwaysUsesMultipleValuesMarker = objj_msgSend(coder, "decodeBoolForKey:", "CPArrayControllerAlwaysUsesMultipleValuesMarker"); + if (objj_msgSend(self, "automaticallyPreparesContent")) + objj_msgSend(self, "prepareContent"); + else + objj_msgSend(self, "_setContentArray:", []); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("awakeFromCib"), function $CPArrayController__awakeFromCib(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_selectionWillChange"); + objj_msgSend(self, "_selectionDidChange"); +} +},["void"])]); +} + +p;14;CPBezierPath.jt;6649;@STATIC;1.0;I;26;AppKit/CPGraphicsContext.jI;21;Foundation/CPObject.jt;6573;objj_executeFile("AppKit/CPGraphicsContext.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +var DefaultLineWidth = 1.0; +{var the_class = objj_allocateClassPair(CPObject, "CPBezierPath"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_path"), new objj_ivar("_lineWidth")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPBezierPath__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBezierPath").super_class }, "init")) + { + _path = CGPathCreateMutable(); + _lineWidth = objj_msgSend(objj_msgSend(self, "class"), "defaultLineWidth"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("moveToPoint:"), function $CPBezierPath__moveToPoint_(self, _cmd, point) +{ with(self) +{ + CGPathMoveToPoint(_path, nil, point.x, point.y); +} +},["void","CGPoint"]), new objj_method(sel_getUid("lineToPoint:"), function $CPBezierPath__lineToPoint_(self, _cmd, point) +{ with(self) +{ + CGPathAddLineToPoint(_path, nil, point.x, point.y); +} +},["void","CGPoint"]), new objj_method(sel_getUid("curveToPoint:controlPoint1:controlPoint2:"), function $CPBezierPath__curveToPoint_controlPoint1_controlPoint2_(self, _cmd, endPoint, controlPoint1, controlPoint2) +{ with(self) +{ + CGPathAddCurveToPoint(_path, nil, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y); +} +},["void","CGPoint","CGPoint","CGPoint"]), new objj_method(sel_getUid("closePath"), function $CPBezierPath__closePath(self, _cmd) +{ with(self) +{ + CGPathCloseSubpath(_path); +} +},["void"]), new objj_method(sel_getUid("stroke"), function $CPBezierPath__stroke(self, _cmd) +{ with(self) +{ + var ctx = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextBeginPath(ctx); + CGContextAddPath(ctx, _path); + CGContextSetLineWidth(ctx, objj_msgSend(self, "lineWidth")); + CGContextClosePath(ctx); + CGContextStrokePath(ctx); +} +},["void"]), new objj_method(sel_getUid("fill"), function $CPBezierPath__fill(self, _cmd) +{ with(self) +{ + var ctx = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextBeginPath(ctx); + CGContextAddPath(ctx, _path); + CGContextSetLineWidth(ctx, objj_msgSend(self, "lineWidth")); + CGContextClosePath(ctx); + CGContextFillPath(ctx); +} +},["void"]), new objj_method(sel_getUid("lineWidth"), function $CPBezierPath__lineWidth(self, _cmd) +{ with(self) +{ + return _lineWidth; +} +},["float"]), new objj_method(sel_getUid("setLineWidth:"), function $CPBezierPath__setLineWidth_(self, _cmd, lineWidth) +{ with(self) +{ + _lineWidth = lineWidth; +} +},["void","float"]), new objj_method(sel_getUid("elementCount"), function $CPBezierPath__elementCount(self, _cmd) +{ with(self) +{ + return _path.count; +} +},["unsigned"]), new objj_method(sel_getUid("isEmpty"), function $CPBezierPath__isEmpty(self, _cmd) +{ with(self) +{ + return CGPathIsEmpty(_path); +} +},["BOOL"]), new objj_method(sel_getUid("currentPoint"), function $CPBezierPath__currentPoint(self, _cmd) +{ with(self) +{ + return CGPathGetCurrentPoint(_path); +} +},["CGPoint"]), new objj_method(sel_getUid("appendBezierPathWithPoints:count:"), function $CPBezierPath__appendBezierPathWithPoints_count_(self, _cmd, points, count) +{ with(self) +{ + CGPathAddLines(_path, nil, points, count); +} +},["void","CPArray","unsigned"]), new objj_method(sel_getUid("appendBezierPathWithRect:"), function $CPBezierPath__appendBezierPathWithRect_(self, _cmd, rect) +{ with(self) +{ + CGPathAddRect(_path, nil, rect); +} +},["void","CGRect"]), new objj_method(sel_getUid("appendBezierPathWithOvalInRect:"), function $CPBezierPath__appendBezierPathWithOvalInRect_(self, _cmd, rect) +{ with(self) +{ + CGPathAddPath(_path, nil, CGPathWithEllipseInRect(rect)); +} +},["void","CGRect"]), new objj_method(sel_getUid("appendBezierPathWithRoundedRect:xRadius:yRadius:"), function $CPBezierPath__appendBezierPathWithRoundedRect_xRadius_yRadius_(self, _cmd, rect, xRadius, yRadius) +{ with(self) +{ + CGPathAddPath(_path, nil, CGPathWithRoundedRectangleInRect(rect, xRadius, yRadius, YES, YES, YES, YES)); +} +},["void","CGRect","float","float"]), new objj_method(sel_getUid("appendBezierPath:"), function $CPBezierPath__appendBezierPath_(self, _cmd, other) +{ with(self) +{ + CGPathAddPath(_path, nil, other._path); +} +},["void","NSBezierPath*"]), new objj_method(sel_getUid("removeAllPoints"), function $CPBezierPath__removeAllPoints(self, _cmd) +{ with(self) +{ + _path = CGPathCreateMutable(); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("bezierPath"), function $CPBezierPath__bezierPath(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["CPBezierPath"]), new objj_method(sel_getUid("bezierPathWithOvalInRect:"), function $CPBezierPath__bezierPathWithOvalInRect_(self, _cmd, rect) +{ with(self) +{ + var path = objj_msgSend(self, "bezierPath"); + objj_msgSend(path, "appendBezierPathWithOvalInRect:", rect); + return path; +} +},["CPBezierPath","CGRect"]), new objj_method(sel_getUid("bezierPathWithRect:"), function $CPBezierPath__bezierPathWithRect_(self, _cmd, rect) +{ with(self) +{ + var path = objj_msgSend(self, "bezierPath"); + objj_msgSend(path, "appendBezierPathWithRect:", rect); + return path; +} +},["CPBezierPath","CGRect"]), new objj_method(sel_getUid("defaultLineWidth"), function $CPBezierPath__defaultLineWidth(self, _cmd) +{ with(self) +{ + return DefaultLineWidth; +} +},["float"]), new objj_method(sel_getUid("setDefaultLineWidth:"), function $CPBezierPath__setDefaultLineWidth_(self, _cmd, width) +{ with(self) +{ + DefaultLineWidth = width; +} +},["void","float"]), new objj_method(sel_getUid("fillRect:"), function $CPBezierPath__fillRect_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "bezierPathWithRect:", aRect), "fill"); +} +},["void","CGRect"]), new objj_method(sel_getUid("strokeRect:"), function $CPBezierPath__strokeRect_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "bezierPathWithRect:", aRect), "stroke"); +} +},["void","CGRect"]), new objj_method(sel_getUid("strokeLineFromPoint:toPoint:"), function $CPBezierPath__strokeLineFromPoint_toPoint_(self, _cmd, point1, point2) +{ with(self) +{ + var path = objj_msgSend(self, "bezierPath"); + objj_msgSend(path, "moveToPoint:", point1); + objj_msgSend(path, "lineToPoint:", point2); + objj_msgSend(path, "stroke"); +} +},["void","CGPoint","CGPoint"])]); +} + +p;7;CPBox.jt;9764;@STATIC;1.0;i;8;CPView.jt;9733;objj_executeFile("CPView.j", YES); +CPNoBorder = 0; +CPLineBorder = 1; +CPBezelBorder = 2; +CPGrooveBorder = 3; +{var the_class = objj_allocateClassPair(CPView, "CPBox"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_borderType"), new objj_ivar("_borderColor"), new objj_ivar("_fillColor"), new objj_ivar("_cornerRadius"), new objj_ivar("_borderWidth"), new objj_ivar("_contentMargin"), new objj_ivar("_contentView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPBox__initWithFrame_(self, _cmd, frameRect) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBox").super_class }, "initWithFrame:", frameRect); + if (self) + { + _borderType = CPBezelBorder; + _fillColor = objj_msgSend(CPColor, "clearColor"); + _borderColor = objj_msgSend(CPColor, "blackColor"); + _borderWidth = 1.0; + _contentMargin = CGSizeMake(0.0, 0.0); + _contentView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + objj_msgSend(self, "setAutoresizesSubviews:", YES); + objj_msgSend(self, "addSubview:", _contentView); + } + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("borderRect"), function $CPBox__borderRect(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "bounds"); +} +},["CPRect"]), new objj_method(sel_getUid("borderType"), function $CPBox__borderType(self, _cmd) +{ with(self) +{ + return _borderType; +} +},["CPBorderType"]), new objj_method(sel_getUid("setBorderType:"), function $CPBox__setBorderType_(self, _cmd, value) +{ with(self) +{ + _borderType = value; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPBorderType"]), new objj_method(sel_getUid("borderColor"), function $CPBox__borderColor(self, _cmd) +{ with(self) +{ + return _borderColor; +} +},["CPColor"]), new objj_method(sel_getUid("setBorderColor:"), function $CPBox__setBorderColor_(self, _cmd, color) +{ with(self) +{ + if (objj_msgSend(color, "isEqual:", _borderColor)) + return; + _borderColor = color; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("borderWidth"), function $CPBox__borderWidth(self, _cmd) +{ with(self) +{ + return _borderWidth; +} +},["float"]), new objj_method(sel_getUid("setBorderWidth:"), function $CPBox__setBorderWidth_(self, _cmd, width) +{ with(self) +{ + if (width === _borderWidth) + return; + _borderWidth = width; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float"]), new objj_method(sel_getUid("cornerRadius"), function $CPBox__cornerRadius(self, _cmd) +{ with(self) +{ + return _cornerRadius; +} +},["float"]), new objj_method(sel_getUid("setCornerRadius:"), function $CPBox__setCornerRadius_(self, _cmd, radius) +{ with(self) +{ + if (radius === _cornerRadius) + return; + _cornerRadius = radius; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float"]), new objj_method(sel_getUid("fillColor"), function $CPBox__fillColor(self, _cmd) +{ with(self) +{ + return _fillColor; +} +},["CPColor"]), new objj_method(sel_getUid("setFillColor:"), function $CPBox__setFillColor_(self, _cmd, color) +{ with(self) +{ + if (objj_msgSend(color, "isEqual:", _fillColor)) + return; + _fillColor = color; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("contentView"), function $CPBox__contentView(self, _cmd) +{ with(self) +{ + return _contentView; +} +},["CPView"]), new objj_method(sel_getUid("setContentView:"), function $CPBox__setContentView_(self, _cmd, aView) +{ with(self) +{ + if (aView === _contentView) + return; + objj_msgSend(aView, "setFrame:", CGRectInset(objj_msgSend(self, "bounds"), _contentMargin.width + _borderWidth, _contentMargin.height + _borderWidth)); + objj_msgSend(aView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + objj_msgSend(self, "replaceSubview:with:", _contentView, aView); + _contentView = aView; +} +},["void","CPView"]), new objj_method(sel_getUid("contentViewMargins"), function $CPBox__contentViewMargins(self, _cmd) +{ with(self) +{ + return _contentMargin; +} +},["CPSize"]), new objj_method(sel_getUid("setContentViewMargins:"), function $CPBox__setContentViewMargins_(self, _cmd, size) +{ with(self) +{ + if(size.width < 0 || size.height < 0) + objj_msgSend(CPException, "raise:reason:", CPGenericException, "Margins must be positive"); + _contentMargin = CGSizeMakeCopy(size); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPSize"]), new objj_method(sel_getUid("setFrameFromContentFrame:"), function $CPBox__setFrameFromContentFrame_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSend(self, "setFrame:", CGRectInset(aRect, -(_contentMargin.width + _borderWidth), -(_contentMargin.height + _borderWidth))); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPRect"]), new objj_method(sel_getUid("sizeToFit"), function $CPBox__sizeToFit(self, _cmd) +{ with(self) +{ + var contentFrame = objj_msgSend(_contentView, "frame"); + objj_msgSend(self, "setFrameSize:", CGSizeMake(contentFrame.size.width + _contentMargin.width * 2, + contentFrame.size.height + _contentMargin.height * 2)); + objj_msgSend(_contentView, "setFrameOrigin:", CGPointMake(_contentMargin.width, _contentMargin.height)); +} +},["void"]), new objj_method(sel_getUid("drawRect:"), function $CPBox__drawRect_(self, _cmd, rect) +{ with(self) +{ + if (_borderType === CPNoBorder) + return; + var bounds = objj_msgSend(self, "bounds"), + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetFillColor(context, objj_msgSend(self, "fillColor")); + switch (_borderType) + { + case CPBezelBorder: + var sides = [CPMinYEdge, CPMaxXEdge, CPMaxYEdge, CPMinXEdge], + sideGray = 190.0 / 255.0, + grays = [142.0 / 255.0, sideGray, sideGray, sideGray], + borderWidth = _borderWidth; + while (borderWidth--) + bounds = CPDrawTiledRects(bounds, bounds, sides, grays); + CGContextFillRect(context, bounds); + break; + default: + bounds = CGRectInset(bounds, _borderWidth / 2.0, _borderWidth / 2.0); + CGContextSetStrokeColor(context, objj_msgSend(self, "borderColor")); + CGContextSetLineWidth(context, _borderWidth); + CGContextFillRoundedRectangleInRect(context, bounds, _cornerRadius, YES, YES, YES, YES); + CGContextStrokeRoundedRectangleInRect(context, bounds, _cornerRadius, YES, YES, YES, YES); + break; + } +} +},["void","CPRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("boxEnclosingView:"), function $CPBox__boxEnclosingView_(self, _cmd, aView) +{ with(self) +{ + var box = objj_msgSend(objj_msgSend(self, "alloc"), "initWithFrame:", CGRectMakeZero()), + enclosingView = objj_msgSend(aView, "superview"); + objj_msgSend(box, "setFrameFromContentFrame:", objj_msgSend(aView, "frame")); + objj_msgSend(enclosingView, "replaceSubview:with:", aView, box); + objj_msgSend(box, "setContentView:", aView); + return box; +} +},["id","CPView"])]); +} +var CPBoxBorderTypeKey = "CPBoxBorderTypeKey", + CPBoxBorderColorKey = "CPBoxBorderColorKey", + CPBoxFillColorKey = "CPBoxFillColorKey", + CPBoxCornerRadiusKey = "CPBoxCornerRadiusKey", + CPBoxBorderWidthKey = "CPBoxBorderWidthKey", + CPBoxContentMarginKey = "CPBoxContentMarginKey"; +{ +var the_class = objj_getClass("CPBox") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPBox\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPBox__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBox").super_class }, "initWithCoder:", aCoder); + if (self) + { + _borderType = objj_msgSend(aCoder, "decodeIntForKey:", CPBoxBorderTypeKey); + _borderColor = objj_msgSend(aCoder, "decodeObjectForKey:", CPBoxBorderColorKey); + _fillColor = objj_msgSend(aCoder, "decodeObjectForKey:", CPBoxFillColorKey); + _cornerRadius = objj_msgSend(aCoder, "decodeFloatForKey:", CPBoxCornerRadiusKey); + _borderWidth = objj_msgSend(aCoder, "decodeFloatForKey:", CPBoxBorderWidthKey); + _contentMargin = objj_msgSend(aCoder, "decodeSizeForKey:", CPBoxContentMarginKey); + _contentView = objj_msgSend(self, "subviews")[0]; + objj_msgSend(self, "setAutoresizesSubviews:", YES); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPBox__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBox").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeInt:forKey:", _borderType, CPBoxBorderTypeKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _borderColor, CPBoxBorderColorKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _fillColor, CPBoxFillColorKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _cornerRadius, CPBoxCornerRadiusKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _borderWidth, CPBoxBorderWidthKey); + objj_msgSend(aCoder, "encodeSize:forKey:", _contentMargin, CPBoxContentMarginKey); +} +},["void","CPCoder"])]); +} + +p;11;CPBrowser.jt;46395;@STATIC;1.0;i;11;CPControl.ji;9;CPImage.ji;13;CPTableView.ji;14;CPScrollView.jt;46309;objj_executeFile("CPControl.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPTableView.j", YES); +objj_executeFile("CPScrollView.j", YES); +{var the_class = objj_allocateClassPair(CPControl, "CPBrowser"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_delegate"), new objj_ivar("_pathSeparator"), new objj_ivar("_contentView"), new objj_ivar("_horizontalScrollView"), new objj_ivar("_prototypeView"), new objj_ivar("_tableViews"), new objj_ivar("_tableDelegates"), new objj_ivar("_rootItem"), new objj_ivar("_delegateSupportsImages"), new objj_ivar("_doubleAction"), new objj_ivar("_allowsMultipleSelection"), new objj_ivar("_allowsEmptySelection"), new objj_ivar("_tableViewClass"), new objj_ivar("_rowHeight"), new objj_ivar("_imageWidth"), new objj_ivar("_leafWidth"), new objj_ivar("_minColumnWidth"), new objj_ivar("_defaultColumnWidth"), new objj_ivar("_columnWidths")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("doubleAction"), function $CPBrowser__doubleAction(self, _cmd) +{ with(self) +{ +return _doubleAction; +} +},["id"]), +new objj_method(sel_getUid("setDoubleAction:"), function $CPBrowser__setDoubleAction_(self, _cmd, newValue) +{ with(self) +{ +_doubleAction = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("tableViewClass"), function $CPBrowser__tableViewClass(self, _cmd) +{ with(self) +{ +return _tableViewClass; +} +},["id"]), +new objj_method(sel_getUid("setTableViewClass:"), function $CPBrowser__setTableViewClass_(self, _cmd, newValue) +{ with(self) +{ +_tableViewClass = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("defaultColumnWidth"), function $CPBrowser__defaultColumnWidth(self, _cmd) +{ with(self) +{ +return _defaultColumnWidth; +} +},["id"]), +new objj_method(sel_getUid("setDefaultColumnWidth:"), function $CPBrowser__setDefaultColumnWidth_(self, _cmd, newValue) +{ with(self) +{ +_defaultColumnWidth = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithFrame:"), function $CPBrowser__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBrowser").super_class }, "initWithFrame:", aFrame)) + { + _rowHeight = 23.0; + _defaultColumnWidth = 140.0; + _minColumnWidth = 80.0; + _imageWidth = 23.0; + _leafWidth = 13.0; + _columnWidths = []; + _pathSeparator = "/"; + _tableViews = []; + _tableDelegates = []; + _allowsMultipleSelection = YES; + _allowsEmptySelection = YES; + _tableViewClass = objj_msgSend(_CPBrowserTableView, "class"); + _prototypeView = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_prototypeView, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(_prototypeView, "setValue:forThemeAttribute:inState:", objj_msgSend(CPColor, "whiteColor"), "text-color", CPThemeStateSelectedDataView); + objj_msgSend(_prototypeView, "setLineBreakMode:", CPLineBreakByTruncatingTail); + _horizontalScrollView = objj_msgSend(objj_msgSend(CPScrollView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_horizontalScrollView, "setHasVerticalScroller:", NO); + objj_msgSend(_horizontalScrollView, "setAutohidesScrollers:", YES); + objj_msgSend(_horizontalScrollView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + _contentView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0, 0, 0, CGRectGetHeight(objj_msgSend(self, "bounds")))); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewHeightSizable); + objj_msgSend(_horizontalScrollView, "setDocumentView:", _contentView); + objj_msgSend(self, "addSubview:", _horizontalScrollView); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setPrototypeView:"), function $CPBrowser__setPrototypeView_(self, _cmd, aPrototypeView) +{ with(self) +{ + _prototypeView = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", + objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", aPrototypeView)); +} +},["void","CPView"]), new objj_method(sel_getUid("prototypeView"), function $CPBrowser__prototypeView(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", + objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _prototypeView)); +} +},["CPView"]), new objj_method(sel_getUid("setDelegate:"), function $CPBrowser__setDelegate_(self, _cmd, anObject) +{ with(self) +{ + _delegate = anObject; + _delegateSupportsImages = objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:imageValueForItem:")); + objj_msgSend(self, "loadColumnZero"); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPBrowser__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("tableViewInColumn:"), function $CPBrowser__tableViewInColumn_(self, _cmd, index) +{ with(self) +{ + return _tableViews[index]; +} +},["CPTableView","unsigned"]), new objj_method(sel_getUid("columnOfTableView:"), function $CPBrowser__columnOfTableView_(self, _cmd, aTableView) +{ with(self) +{ + return objj_msgSend(_tableViews, "indexOfObject:", aTableView); +} +},["unsigned","CPTableView"]), new objj_method(sel_getUid("loadColumnZero"), function $CPBrowser__loadColumnZero(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("rootItemForBrowser:"))) + _rootItem = objj_msgSend(_delegate, "rootItemForBrowser:", self); + else + _rootItem = nil; + objj_msgSend(self, "setLastColumn:", -1); + objj_msgSend(self, "addColumn"); +} +},["void"]), new objj_method(sel_getUid("setLastColumn:"), function $CPBrowser__setLastColumn_(self, _cmd, columnIndex) +{ with(self) +{ + if (columnIndex >= _tableViews.length) + return; + var oldValue = _tableViews.length - 1; + var indexPlusOne = columnIndex + 1; + objj_msgSend(objj_msgSend(_tableViews.slice(indexPlusOne), "valueForKey:", "enclosingScrollView"), "makeObjectsPerformSelector:", sel_getUid("removeFromSuperview")); + _tableViews = _tableViews.slice(0, indexPlusOne); + _tableDelegates = _tableDelegates.slice(0, indexPlusOne); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:didChangeLastColumn:toColumn:"))) + objj_msgSend(_delegate, "browser:didChangeLastColumn:toColumn:", self, oldValue, columnIndex); + objj_msgSend(self, "tile"); +} +},["void","int"]), new objj_method(sel_getUid("lastColumn"), function $CPBrowser__lastColumn(self, _cmd) +{ with(self) +{ + return _tableViews.length - 1; +} +},["int"]), new objj_method(sel_getUid("addColumn"), function $CPBrowser__addColumn(self, _cmd) +{ with(self) +{ + var lastIndex = objj_msgSend(self, "lastColumn"), + lastColumn = _tableViews[lastIndex], + selectionIndexes = objj_msgSend(lastColumn, "selectedRowIndexes"); + if (lastIndex >= 0 && objj_msgSend(selectionIndexes, "count") > 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Can't add column, column "+lastIndex+" has invalid selection."); + var index = lastIndex+1, + item = index === 0 ? _rootItem : objj_msgSend(_tableDelegates[lastIndex], "childAtIndex:", objj_msgSend(selectionIndexes, "firstIndex")); + if (index > 0 && item && objj_msgSend(self, "isLeafItem:", item)) + return; + var table = objj_msgSend(objj_msgSend(_tableViewClass, "alloc"), "initWithFrame:browser:", CGRectMakeZero(), self); + objj_msgSend(table, "setHeaderView:", nil); + objj_msgSend(table, "setCornerView:", nil); + objj_msgSend(table, "setAllowsMultipleSelection:", _allowsMultipleSelection); + objj_msgSend(table, "setAllowsEmptySelection:", _allowsEmptySelection); + objj_msgSend(table, "registerForDraggedTypes:", objj_msgSend(self, "registeredDraggedTypes")); + objj_msgSend(self, "_addTableColumnsToTableView:forColumnIndex:", table, index); + var delegate = objj_msgSend(objj_msgSend(_CPBrowserTableDelegate, "alloc"), "init"); + objj_msgSend(delegate, "_setDelegate:", _delegate); + objj_msgSend(delegate, "_setBrowser:", self); + objj_msgSend(delegate, "_setIndex:", index); + objj_msgSend(delegate, "_setItem:", item); + _tableViews[index] = table; + _tableDelegates[index] = delegate; + objj_msgSend(table, "setDelegate:", delegate); + objj_msgSend(table, "setDataSource:", delegate); + objj_msgSend(table, "setTarget:", delegate); + objj_msgSend(table, "setAction:", sel_getUid("_tableViewClicked:")); + objj_msgSend(table, "setDoubleAction:", sel_getUid("_tableViewDoubleClicked:")); + objj_msgSend(table, "setDraggingDestinationFeedbackStyle:", CPTableViewDraggingDestinationFeedbackStyleRegular); + var scrollView = objj_msgSend(objj_msgSend(_CPBrowserScrollView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(scrollView, "_setBrowser:", self); + objj_msgSend(scrollView, "setDocumentView:", table); + objj_msgSend(scrollView, "setHasHorizontalScroller:", NO); + objj_msgSend(scrollView, "setAutoresizingMask:", CPViewHeightSizable); + objj_msgSend(_contentView, "addSubview:", scrollView); + objj_msgSend(self, "tile"); + objj_msgSend(self, "scrollColumnToVisible:", index); +} +},["void"]), new objj_method(sel_getUid("_addTableColumnsToTableView:forColumnIndex:"), function $CPBrowser___addTableColumnsToTableView_forColumnIndex_(self, _cmd, aTableView, index) +{ with(self) +{ + if (_delegateSupportsImages) + { + var column = objj_msgSend(objj_msgSend(CPTableColumn, "alloc"), "initWithIdentifier:", "Image"), + view = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(view, "setImageScaling:", CPScaleProportionally); + objj_msgSend(column, "setDataView:", view); + objj_msgSend(column, "setResizingMask:", CPTableColumnNoResizing); + objj_msgSend(aTableView, "addTableColumn:", column); + } + var column = objj_msgSend(objj_msgSend(CPTableColumn, "alloc"), "initWithIdentifier:", "Content"); + objj_msgSend(column, "setDataView:", _prototypeView); + objj_msgSend(column, "setResizingMask:", CPTableColumnNoResizing); + objj_msgSend(aTableView, "addTableColumn:", column); + var column = objj_msgSend(objj_msgSend(CPTableColumn, "alloc"), "initWithIdentifier:", "Leaf"), + view = objj_msgSend(objj_msgSend(_CPBrowserLeafView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(view, "setBranchImage:", objj_msgSend(objj_msgSend(self, "class"), "branchImage")); + objj_msgSend(view, "setHighlightedBranchImage:", objj_msgSend(objj_msgSend(self, "class"), "highlightedBranchImage")); + objj_msgSend(column, "setDataView:", view); + objj_msgSend(column, "setResizingMask:", CPTableColumnNoResizing); + objj_msgSend(aTableView, "addTableColumn:", column); +} +},["void","CPTableView","unsigned"]), new objj_method(sel_getUid("reloadColumn:"), function $CPBrowser__reloadColumn_(self, _cmd, column) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "tableViewInColumn:", column), "reloadData"); +} +},["void","int"]), new objj_method(sel_getUid("tile"), function $CPBrowser__tile(self, _cmd) +{ with(self) +{ + var xOrigin = 0, + scrollerWidth = objj_msgSend(CPScroller, "scrollerWidth"), + height = CGRectGetHeight(objj_msgSend(_contentView, "bounds")); + for (var i = 0, count = _tableViews.length; i < count; i++) + { + var tableView = _tableViews[i], + scrollView = objj_msgSend(tableView, "enclosingScrollView"), + width = objj_msgSend(self, "widthOfColumn:", i), + tableHeight = CGRectGetHeight(objj_msgSend(tableView, "bounds")); + objj_msgSend(objj_msgSend(tableView, "tableColumnWithIdentifier:", "Image"), "setWidth:", _imageWidth); + objj_msgSend(objj_msgSend(tableView, "tableColumnWithIdentifier:", "Content"), "setWidth:", width - (_leafWidth + _delegateSupportsImages ? _imageWidth : 0) - scrollerWidth - scrollerWidth); + objj_msgSend(objj_msgSend(tableView, "tableColumnWithIdentifier:", "Leaf"), "setWidth:", _leafWidth); + objj_msgSend(tableView, "setRowHeight:", _rowHeight); + objj_msgSend(tableView, "setFrameSize:", CGSizeMake(width - scrollerWidth, tableHeight)); + objj_msgSend(scrollView, "setFrameOrigin:", CGPointMake(xOrigin, 0)); + objj_msgSend(scrollView, "setFrameSize:", CGSizeMake(width, height)); + xOrigin += width; + } + objj_msgSend(_contentView, "setFrameSize:", CGSizeMake(xOrigin, height)); +} +},["void"]), new objj_method(sel_getUid("rowAtPoint:"), function $CPBrowser__rowAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var column = objj_msgSend(self, "columnAtPoint:", aPoint); + if (column === -1) + return -1; + var tableView = _tableViews[column]; + return objj_msgSend(tableView, "rowAtPoint:", objj_msgSend(tableView, "convertPoint:fromView:", aPoint, self)); +} +},["unsigned","CGPoint"]), new objj_method(sel_getUid("columnAtPoint:"), function $CPBrowser__columnAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var adjustedPoint = objj_msgSend(_contentView, "convertPoint:fromView:", aPoint, self); + for (var i = 0, count = _tableViews.length; i < count; i++) + { + var frame = objj_msgSend(objj_msgSend(_tableViews[i], "enclosingScrollView"), "frame"); + if (CGRectContainsPoint(frame, adjustedPoint)) + return i; + } + return -1; +} +},["unsigned","CGPoint"]), new objj_method(sel_getUid("rectOfRow:inColumn:"), function $CPBrowser__rectOfRow_inColumn_(self, _cmd, aRow, aColumn) +{ with(self) +{ + var tableView = _tableViews[aColumn], + rect = objj_msgSend(tableView, "rectOfRow:", aRow); + rect.origin = objj_msgSend(self, "convertPoint:fromView:", rect.origin, tableView); + return rect; +} +},["CGRect","unsigned","unsigned"]), new objj_method(sel_getUid("itemAtRow:inColumn:"), function $CPBrowser__itemAtRow_inColumn_(self, _cmd, row, column) +{ with(self) +{ + return objj_msgSend(_tableDelegates[column], "childAtIndex:", row); +} +},["id","int","int"]), new objj_method(sel_getUid("isLeafItem:"), function $CPBrowser__isLeafItem_(self, _cmd, item) +{ with(self) +{ + return objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:isLeafItem:")) && objj_msgSend(_delegate, "browser:isLeafItem:", self, item); +} +},["BOOL","id"]), new objj_method(sel_getUid("parentForItemsInColumn:"), function $CPBrowser__parentForItemsInColumn_(self, _cmd, column) +{ with(self) +{ + return objj_msgSend(_tableDelegates[column], "_item"); +} +},["id","int"]), new objj_method(sel_getUid("selectedItems"), function $CPBrowser__selectedItems(self, _cmd) +{ with(self) +{ + var selectedColumn = objj_msgSend(self, "selectedColumn"), + selectedIndexes = objj_msgSend(self, "selectedRowIndexesInColumn:", selectedColumn), + set = objj_msgSend(CPSet, "set"), + index = objj_msgSend(selectedIndexes, "firstIndex"); + while (index !== CPNotFound) + { + objj_msgSend(set, "addObject:", objj_msgSend(self, "itemAtRow:inColumn:", index, selectedColumn)); + index = objj_msgSend(selectedIndexes, "indexGreaterThanIndex:", index); + } + return set; +} +},["CPSet"]), new objj_method(sel_getUid("selectedItem"), function $CPBrowser__selectedItem(self, _cmd) +{ with(self) +{ + var selectedColumn = objj_msgSend(self, "selectedColumn"), + selectedRow = objj_msgSend(self, "selectedRowInColumn:", selectedColumn); + return objj_msgSend(self, "itemAtRow:inColumn:", selectedRow, selectedColumn); +} +},["id"]), new objj_method(sel_getUid("trackMouse:"), function $CPBrowser__trackMouse_(self, _cmd, anEvent) +{ with(self) +{ +} +},["void","CPEvent"]), new objj_method(sel_getUid("_column:clickedRow:"), function $CPBrowser___column_clickedRow_(self, _cmd, columnIndex, rowIndex) +{ with(self) +{ + objj_msgSend(self, "setLastColumn:", columnIndex); + if (rowIndex >= 0) + objj_msgSend(self, "addColumn"); + objj_msgSend(self, "doClick:", self); +} +},["void","unsigned","unsigned"]), new objj_method(sel_getUid("sendAction"), function $CPBrowser__sendAction(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", _action, _target); +} +},["void"]), new objj_method(sel_getUid("doClick:"), function $CPBrowser__doClick_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", _action, _target); +} +},["void","id"]), new objj_method(sel_getUid("doDoubleClick:"), function $CPBrowser__doDoubleClick_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", _doubleAction, _target); +} +},["void","id"]), new objj_method(sel_getUid("keyDown:"), function $CPBrowser__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + var column = objj_msgSend(self, "selectedColumn"); + if (column === -1) + return; + objj_msgSend(_tableViews[column], "keyDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("columnContentWidthForColumnWidth:"), function $CPBrowser__columnContentWidthForColumnWidth_(self, _cmd, aWidth) +{ with(self) +{ + return aWidth - (_leafWidth + _delegateSupportsImages ? _imageWidth : 0) - objj_msgSend(CPScroller, "scrollerWidth"); +} +},["float","float"]), new objj_method(sel_getUid("columnWidthForColumnContentWidth:"), function $CPBrowser__columnWidthForColumnContentWidth_(self, _cmd, aWidth) +{ with(self) +{ + return aWidth + (_leafWidth + _delegateSupportsImages ? _imageWidth : 0) + objj_msgSend(CPScroller, "scrollerWidth"); +} +},["float","float"]), new objj_method(sel_getUid("setImageWidth:"), function $CPBrowser__setImageWidth_(self, _cmd, aWidth) +{ with(self) +{ + _imageWidth = aWidth; + objj_msgSend(self, "tile"); +} +},["void","float"]), new objj_method(sel_getUid("imageWidth"), function $CPBrowser__imageWidth(self, _cmd) +{ with(self) +{ + return _imageWidth; +} +},["float"]), new objj_method(sel_getUid("setMinColumnWidth:"), function $CPBrowser__setMinColumnWidth_(self, _cmd, minWidth) +{ with(self) +{ + _minColumnWidth = minWidth; + objj_msgSend(self, "tile"); +} +},["void","float"]), new objj_method(sel_getUid("minColumnWidth"), function $CPBrowser__minColumnWidth(self, _cmd) +{ with(self) +{ + return _minColumnWidth; +} +},["float"]), new objj_method(sel_getUid("setWidth:ofColumn:"), function $CPBrowser__setWidth_ofColumn_(self, _cmd, aWidth, column) +{ with(self) +{ + _columnWidths[column] = aWidth; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:didResizeColumn:"))) + objj_msgSend(_delegate, "browser:didResizeColumn:", self, column); + objj_msgSend(self, "tile"); +} +},["void","float","unsigned"]), new objj_method(sel_getUid("widthOfColumn:"), function $CPBrowser__widthOfColumn_(self, _cmd, column) +{ with(self) +{ + var width = _columnWidths[column]; + if (width == null) + width = _defaultColumnWidth; + return MAX(objj_msgSend(CPScroller, "scrollerWidth"), MAX(_minColumnWidth, width)); +} +},["float","unsigned"]), new objj_method(sel_getUid("setRowHeight:"), function $CPBrowser__setRowHeight_(self, _cmd, aHeight) +{ with(self) +{ + _rowHeight = aHeight; +} +},["void","float"]), new objj_method(sel_getUid("rowHeight"), function $CPBrowser__rowHeight(self, _cmd) +{ with(self) +{ + return _rowHeight; +} +},["float"]), new objj_method(sel_getUid("scrollColumnToVisible:"), function $CPBrowser__scrollColumnToVisible_(self, _cmd, columnIndex) +{ with(self) +{ + objj_msgSend(_contentView, "scrollRectToVisible:", objj_msgSend(objj_msgSend(objj_msgSend(self, "tableViewInColumn:", columnIndex), "enclosingScrollView"), "frame")); +} +},["void","unsigned"]), new objj_method(sel_getUid("autohidesScroller"), function $CPBrowser__autohidesScroller(self, _cmd) +{ with(self) +{ + return objj_msgSend(_horizontalScrollView, "autohidesScrollers"); +} +},["BOOL"]), new objj_method(sel_getUid("setAutohidesScroller:"), function $CPBrowser__setAutohidesScroller_(self, _cmd, shouldHide) +{ with(self) +{ + objj_msgSend(_horizontalScrollView, "setAutohidesScrollers:", shouldHide); +} +},["void","BOOL"]), new objj_method(sel_getUid("selectedRowInColumn:"), function $CPBrowser__selectedRowInColumn_(self, _cmd, columnIndex) +{ with(self) +{ + if (columnIndex > objj_msgSend(self, "lastColumn") || columnIndex < 0) + return -1; + return objj_msgSend(_tableViews[columnIndex], "selectedRow"); +} +},["unsigned","unsigned"]), new objj_method(sel_getUid("selectedColumn"), function $CPBrowser__selectedColumn(self, _cmd) +{ with(self) +{ + var column = objj_msgSend(self, "lastColumn"), + row = objj_msgSend(self, "selectedRowInColumn:", column); + if (row >= 0) + return column; + else + return column - 1; +} +},["unsigned"]), new objj_method(sel_getUid("selectRow:inColumn:"), function $CPBrowser__selectRow_inColumn_(self, _cmd, row, column) +{ with(self) +{ + var selectedIndexes = row === -1 ? objj_msgSend(CPIndexSet, "indexSet") : objj_msgSend(CPIndexSet, "indexSetWithIndex:", row); + objj_msgSend(self, "selectRowIndexes:inColumn:", selectedIndexes, column); +} +},["void","unsigned","unsigned"]), new objj_method(sel_getUid("allowsMultipleSelection"), function $CPBrowser__allowsMultipleSelection(self, _cmd) +{ with(self) +{ + return _allowsMultipleSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsMultipleSelection:"), function $CPBrowser__setAllowsMultipleSelection_(self, _cmd, shouldAllow) +{ with(self) +{ + if (_allowsMultipleSelection === shouldAllow) + return; + _allowsMultipleSelection = shouldAllow; + objj_msgSend(_tableViews, "makeObjectsPerformSelector:withObject:", sel_getUid("setAllowsMultipleSelection:"), shouldAllow); +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsEmptySelection"), function $CPBrowser__allowsEmptySelection(self, _cmd) +{ with(self) +{ + return _allowsEmptySelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsEmptySelection:"), function $CPBrowser__setAllowsEmptySelection_(self, _cmd, shouldAllow) +{ with(self) +{ + if (_allowsEmptySelection === shouldAllow) + return; + _allowsEmptySelection = shouldAllow; + objj_msgSend(_tableViews, "makeObjectsPerformSelector:withObject:", sel_getUid("setAllowsEmptySelection:"), shouldAllow); +} +},["void","BOOL"]), new objj_method(sel_getUid("selectedRowIndexesInColumn:"), function $CPBrowser__selectedRowIndexesInColumn_(self, _cmd, column) +{ with(self) +{ + if (column < 0 || column > objj_msgSend(self, "lastColumn") +1) + return objj_msgSend(CPIndexSet, "indexSet"); + return objj_msgSend(objj_msgSend(self, "tableViewInColumn:", column), "selectedRowIndexes"); +} +},["CPIndexSet","unsigned"]), new objj_method(sel_getUid("selectRowIndexes:inColumn:"), function $CPBrowser__selectRowIndexes_inColumn_(self, _cmd, indexSet, column) +{ with(self) +{ + if (column < 0 || column > objj_msgSend(self, "lastColumn") + 1) + return; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:selectionIndexesForProposedSelection:inColumn:"))) + indexSet = objj_msgSend(_delegate, "browser:selectionIndexesForProposedSelection:inColumn:", self, indexSet, column); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:shouldSelectRowIndexes:inColumn:")) && + !objj_msgSend(_delegate, "browser:shouldSelectRowIndexes:inColumn:", self, indexSet, column)) + return; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browserSelectionIsChanging:"))) + objj_msgSend(_delegate, "browserSelectionIsChanging:", self); + if (column > objj_msgSend(self, "lastColumn")) + objj_msgSend(self, "addColumn"); + objj_msgSend(self, "setLastColumn:", column); + objj_msgSend(objj_msgSend(self, "tableViewInColumn:", column), "selectRowIndexes:byExtendingSelection:", indexSet, NO); + objj_msgSend(self, "scrollColumnToVisible:", column); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browserSelectionDidChange:"))) + objj_msgSend(_delegate, "browserSelectionDidChange:", self); +} +},["void","CPIndexSet","unsigned"]), new objj_method(sel_getUid("setBackgroundColor:"), function $CPBrowser__setBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBrowser").super_class }, "setBackgroundColor:", aColor); + objj_msgSend(_contentView, "setBackgroundColor:", aColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPBrowser__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("registerForDraggedTypes:"), function $CPBrowser__registerForDraggedTypes_(self, _cmd, types) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBrowser").super_class }, "registerForDraggedTypes:", types); + objj_msgSend(_tableViews, "makeObjectsPerformSelector:withObject:", sel_getUid("registerForDraggedTypes:"), types); +} +},["void","CPArray"]), new objj_method(sel_getUid("canDragRowsWithIndexes:inColumn:withEvent:"), function $CPBrowser__canDragRowsWithIndexes_inColumn_withEvent_(self, _cmd, rowIndexes, columnIndex, dragEvent) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:canDragRowsWithIndexes:inColumn:withEvent:"))) + return objj_msgSend(_delegate, "browser:canDragRowsWithIndexes:inColumn:withEvent:", self, rowIndexes, columnIndex, dragEvent); + return YES; +} +},["BOOL","CPIndexSet","int","CPEvent"]), new objj_method(sel_getUid("draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"), function $CPBrowser__draggingImageForRowsWithIndexes_inColumn_withEvent_offset_(self, _cmd, rowIndexes, columnIndex, dragEvent, dragImageOffset) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"))) + return objj_msgSend(_delegate, "browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:", self, rowIndexes, columnIndex, dragEvent, dragImageOffset); + return nil; +} +},["CPImage","CPIndexSet","int","CPEvent","CGPoint"]), new objj_method(sel_getUid("draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"), function $CPBrowser__draggingViewForRowsWithIndexes_inColumn_withEvent_offset_(self, _cmd, rowIndexes, columnIndex, dragEvent, dragImageOffset) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:"))) + return objj_msgSend(_delegate, "browser:draggingViewForRowsWithIndexes:inColumn:withEvent:offset:", self, rowIndexes, columnIndex, dragEvent, dragImageOffset); + return nil; +} +},["CPView","CPIndexSet","int","CPEvent","CGPoint"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("branchImage"), function $CPBrowser__branchImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPBrowser, "class")), "pathForResource:", "browser-leaf.png"), CGSizeMake(9,9)); +} +},["CPImage"]), new objj_method(sel_getUid("highlightedBranchImage"), function $CPBrowser__highlightedBranchImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPBrowser, "class")), "pathForResource:", "browser-leaf-highlighted.png"), CGSizeMake(9,9)); +} +},["CPImage"])]); +} +var _CPBrowserResizeControlBackgroundImage = nil; +{var the_class = objj_allocateClassPair(CPView, "_CPBrowserResizeControl"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_mouseDownX"), new objj_ivar("_browser"), new objj_ivar("_index"), new objj_ivar("_width")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPBrowserResizeControl__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserResizeControl").super_class }, "initWithFrame:", aFrame)) + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(self, "class"), "backgroundImage"))); + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("mouseDown:"), function $_CPBrowserResizeControl__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + _mouseDownX = objj_msgSend(anEvent, "locationInWindow").x; + _browser = objj_msgSend(objj_msgSend(self, "superview"), "_browser"); + _index = objj_msgSend(_browser, "columnOfTableView:", objj_msgSend(objj_msgSend(self, "superview"), "documentView")); + _width = objj_msgSend(_browser, "widthOfColumn:", _index); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $_CPBrowserResizeControl__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + var deltaX = objj_msgSend(anEvent, "locationInWindow").x - _mouseDownX; + objj_msgSend(_browser, "setWidth:ofColumn:", _width + deltaX, _index); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $_CPBrowserResizeControl__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("backgroundImage"), function $_CPBrowserResizeControl__backgroundImage(self, _cmd) +{ with(self) +{ + if (!_CPBrowserResizeControlBackgroundImage) + { + var path = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(self, "class")), "pathForResource:", "browser-resize-control.png"); + _CPBrowserResizeControlBackgroundImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", path, CGSizeMake(15, 14)); + } + return _CPBrowserResizeControlBackgroundImage; +} +},["CPImage"])]); +} +{var the_class = objj_allocateClassPair(CPScrollView, "_CPBrowserScrollView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_resizeControl"), new objj_ivar("_browser")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_browser"), function $_CPBrowserScrollView___browser(self, _cmd) +{ with(self) +{ +return _browser; +} +},["id"]), +new objj_method(sel_getUid("_setBrowser:"), function $_CPBrowserScrollView___setBrowser_(self, _cmd, newValue) +{ with(self) +{ +_browser = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPBrowserScrollView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserScrollView").super_class }, "initWithFrame:", aFrame)) + { + _resizeControl = objj_msgSend(objj_msgSend(_CPBrowserResizeControl, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(self, "addSubview:", _resizeControl); + } + return self; +} +},["void","CGRect"]), new objj_method(sel_getUid("reflectScrolledClipView:"), function $_CPBrowserScrollView__reflectScrolledClipView_(self, _cmd, aClipView) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserScrollView").super_class }, "reflectScrolledClipView:", aClipView); + var frame = objj_msgSend(_verticalScroller, "frame"); + frame.size.height = CGRectGetHeight(objj_msgSend(self, "bounds")) - 14.0 - frame.origin.y; + objj_msgSend(_verticalScroller, "setFrameSize:", frame.size); + var resizeFrame = CGRectMake(CGRectGetMinX(frame), CGRectGetMaxY(frame), objj_msgSend(CPScroller, "scrollerWidth"), 14.0); + objj_msgSend(_resizeControl, "setFrame:", resizeFrame); +} +},["void","CPClipView"])]); +} +{var the_class = objj_allocateClassPair(CPTableView, "_CPBrowserTableView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_browser")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:browser:"), function $_CPBrowserTableView__initWithFrame_browser_(self, _cmd, aFrame, aBrowser) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "initWithFrame:", aFrame)) + _browser = aBrowser; + return self; +} +},["id","CGRect","CPBrowser"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $_CPBrowserTableView__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $_CPBrowserTableView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "mouseDown:", anEvent); + objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", _browser); +} +},["void","CPEvent"]), new objj_method(sel_getUid("browserView"), function $_CPBrowserTableView__browserView(self, _cmd) +{ with(self) +{ + return _browser; +} +},["CPView"]), new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"), function $_CPBrowserTableView__canDragRowsWithIndexes_atPoint_(self, _cmd, rowIndexes, mouseDownPoint) +{ with(self) +{ + return objj_msgSend(_browser, "canDragRowsWithIndexes:inColumn:withEvent:", rowIndexes, objj_msgSend(_browser, "columnOfTableView:", self), objj_msgSend(CPApp, "currentEvent")); +} +},["BOOL","CPIndexSet","CGPoint"]), new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"), function $_CPBrowserTableView__dragImageForRowsWithIndexes_tableColumns_event_offset_(self, _cmd, dragRows, theTableColumns, dragEvent, dragImageOffset) +{ with(self) +{ + return objj_msgSend(_browser, "draggingImageForRowsWithIndexes:inColumn:withEvent:offset:", dragRows, objj_msgSend(_browser, "columnOfTableView:", self), dragEvent, dragImageOffset) || + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "dragImageForRowsWithIndexes:tableColumns:event:offset:", dragRows, theTableColumns, dragEvent, dragImageOffset); +} +},["CPImage","CPIndexSet","CPArray","CPEvent","CPPointPointer"]), new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"), function $_CPBrowserTableView__dragViewForRowsWithIndexes_tableColumns_event_offset_(self, _cmd, dragRows, theTableColumns, dragEvent, dragViewOffset) +{ with(self) +{ + var count = theTableColumns.length; + while (count--) + { + if (objj_msgSend(theTableColumns[count], "identifier") === "Leaf") + objj_msgSend(theTableColumns, "removeObject:", theTableColumns[count]); + } + return objj_msgSend(_browser, "draggingViewForRowsWithIndexes:inColumn:withEvent:offset:", dragRows, objj_msgSend(_browser, "columnOfTableView:", self), dragEvent, dragViewOffset) || + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "dragViewForRowsWithIndexes:tableColumns:event:offset:", dragRows, theTableColumns, dragEvent, dragViewOffset); +} +},["CPView","CPIndexSet","CPArray","CPEvent","CPPoint"]), new objj_method(sel_getUid("moveUp:"), function $_CPBrowserTableView__moveUp_(self, _cmd, sender) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "moveUp:", sender); + objj_msgSend(_browser, "selectRow:inColumn:", objj_msgSend(self, "selectedRow"), objj_msgSend(_browser, "selectedColumn")); +} +},["void","id"]), new objj_method(sel_getUid("moveDown:"), function $_CPBrowserTableView__moveDown_(self, _cmd, sender) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableView").super_class }, "moveDown:", sender); + objj_msgSend(_browser, "selectRow:inColumn:", objj_msgSend(self, "selectedRow"), objj_msgSend(_browser, "selectedColumn")); +} +},["void","id"]), new objj_method(sel_getUid("moveLeft:"), function $_CPBrowserTableView__moveLeft_(self, _cmd, sender) +{ with(self) +{ + var previousColumn = objj_msgSend(_browser, "selectedColumn") - 1, + selectedRow = objj_msgSend(_browser, "selectedRowInColumn:", previousColumn); + objj_msgSend(_browser, "selectRow:inColumn:", selectedRow, previousColumn); +} +},["void","id"]), new objj_method(sel_getUid("moveRight:"), function $_CPBrowserTableView__moveRight_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(_browser, "selectRow:inColumn:", 0, objj_msgSend(_browser, "selectedColumn") + 1); +} +},["void","id"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPBrowserTableDelegate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_browser"), new objj_ivar("_index"), new objj_ivar("_delegate"), new objj_ivar("_item")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_browser"), function $_CPBrowserTableDelegate___browser(self, _cmd) +{ with(self) +{ +return _browser; +} +},["id"]), +new objj_method(sel_getUid("_setBrowser:"), function $_CPBrowserTableDelegate___setBrowser_(self, _cmd, newValue) +{ with(self) +{ +_browser = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("_index"), function $_CPBrowserTableDelegate___index(self, _cmd) +{ with(self) +{ +return _index; +} +},["id"]), +new objj_method(sel_getUid("_setIndex:"), function $_CPBrowserTableDelegate___setIndex_(self, _cmd, newValue) +{ with(self) +{ +_index = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("_delegate"), function $_CPBrowserTableDelegate___delegate(self, _cmd) +{ with(self) +{ +return _delegate; +} +},["id"]), +new objj_method(sel_getUid("_setDelegate:"), function $_CPBrowserTableDelegate___setDelegate_(self, _cmd, newValue) +{ with(self) +{ +_delegate = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("_item"), function $_CPBrowserTableDelegate___item(self, _cmd) +{ with(self) +{ +return _item; +} +},["id"]), +new objj_method(sel_getUid("_setItem:"), function $_CPBrowserTableDelegate___setItem_(self, _cmd, newValue) +{ with(self) +{ +_item = newValue; +} +},["void","id"]), new objj_method(sel_getUid("numberOfRowsInTableView:"), function $_CPBrowserTableDelegate__numberOfRowsInTableView_(self, _cmd, aTableView) +{ with(self) +{ + return objj_msgSend(_delegate, "browser:numberOfChildrenOfItem:", _browser, _item); +} +},["unsigned","CPTableView"]), new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"), function $_CPBrowserTableDelegate__tableView_objectValueForTableColumn_row_(self, _cmd, aTableView, column, row) +{ with(self) +{ + if (objj_msgSend(column, "identifier") === "Image") + return objj_msgSend(_delegate, "browser:imageValueForItem:", _browser, objj_msgSend(self, "childAtIndex:", row)); + else if (objj_msgSend(column, "identifier") === "Leaf") + return !objj_msgSend(_browser, "isLeafItem:", objj_msgSend(self, "childAtIndex:", row)); + else + return objj_msgSend(_delegate, "browser:objectValueForItem:", _browser, objj_msgSend(self, "childAtIndex:", row)); +} +},["void","CPTableView","CPTableColumn","unsigned"]), new objj_method(sel_getUid("_tableViewDoubleClicked:"), function $_CPBrowserTableDelegate___tableViewDoubleClicked_(self, _cmd, aTableView) +{ with(self) +{ + objj_msgSend(_browser, "doDoubleClick:", self); +} +},["void","CPTableView"]), new objj_method(sel_getUid("_tableViewClicked:"), function $_CPBrowserTableDelegate___tableViewClicked_(self, _cmd, aTableView) +{ with(self) +{ + var selectedIndexes = objj_msgSend(aTableView, "selectedRowIndexes"); + objj_msgSend(_browser, "_column:clickedRow:", _index, objj_msgSend(selectedIndexes, "count") === 1 ? objj_msgSend(selectedIndexes, "firstIndex") : -1); +} +},["void","CPTableView"]), new objj_method(sel_getUid("childAtIndex:"), function $_CPBrowserTableDelegate__childAtIndex_(self, _cmd, index) +{ with(self) +{ + return objj_msgSend(_delegate, "browser:child:ofItem:", _browser, index, _item); +} +},["id","unsigned"]), new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"), function $_CPBrowserTableDelegate__tableView_acceptDrop_row_dropOperation_(self, _cmd, aTableView, info, row, operation) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:acceptDrop:atRow:column:dropOperation:"))) + return objj_msgSend(_delegate, "browser:acceptDrop:atRow:column:dropOperation:", _browser, info, row, _index, operation); + else + return NO; +} +},["BOOL","CPTableView","id","int","CPTableViewDropOperation"]), new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"), function $_CPBrowserTableDelegate__tableView_validateDrop_proposedRow_proposedDropOperation_(self, _cmd, aTableView, info, row, operation) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:validateDrop:proposedRow:column:dropOperation:"))) + return objj_msgSend(_delegate, "browser:validateDrop:proposedRow:column:dropOperation:", _browser, info, row, _index, operation); + else + return CPDragOperationNone; +} +},["CPDragOperation","CPTableView","id","int","CPTableViewDropOperation"]), new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"), function $_CPBrowserTableDelegate__tableView_writeRowsWithIndexes_toPasteboard_(self, _cmd, aTableView, rowIndexes, pboard) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:"))) + return objj_msgSend(_delegate, "browser:writeRowsWithIndexes:inColumn:toPasteboard:", _browser, rowIndexes, _index, pboard); + else + return NO; +} +},["BOOL","CPTableView","CPIndexSet","CPPasteboard"]), new objj_method(sel_getUid("respondsToSelector:"), function $_CPBrowserTableDelegate__respondsToSelector_(self, _cmd, aSelector) +{ with(self) +{ + if (aSelector === sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")) + return objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("browser:writeRowsWithIndexes:inColumn:toPasteboard:")); + else + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserTableDelegate").super_class }, "respondsToSelector:", aSelector); +} +},["BOOL","SEL"])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPBrowserLeafView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isLeaf"), new objj_ivar("_branchImage"), new objj_ivar("_highlightedBranchImage")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isLeaf"), function $_CPBrowserLeafView__isLeaf(self, _cmd) +{ with(self) +{ +return _isLeaf; +} +},["id"]), +new objj_method(sel_getUid("branchImage"), function $_CPBrowserLeafView__branchImage(self, _cmd) +{ with(self) +{ +return _branchImage; +} +},["id"]), +new objj_method(sel_getUid("setBranchImage:"), function $_CPBrowserLeafView__setBranchImage_(self, _cmd, newValue) +{ with(self) +{ +_branchImage = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("highlightedBranchImage"), function $_CPBrowserLeafView__highlightedBranchImage(self, _cmd) +{ with(self) +{ +return _highlightedBranchImage; +} +},["id"]), +new objj_method(sel_getUid("setHighlightedBranchImage:"), function $_CPBrowserLeafView__setHighlightedBranchImage_(self, _cmd, newValue) +{ with(self) +{ +_highlightedBranchImage = newValue; +} +},["void","id"]), new objj_method(sel_getUid("objectValue"), function $_CPBrowserLeafView__objectValue(self, _cmd) +{ with(self) +{ + return _isLeaf; +} +},["BOOL"]), new objj_method(sel_getUid("setObjectValue:"), function $_CPBrowserLeafView__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + _isLeaf = !!aValue; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","id"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $_CPBrowserLeafView__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "image-view") + return CGRectInset(objj_msgSend(self, "bounds"), 1, 1); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserLeafView").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $_CPBrowserLeafView__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "image-view") + return objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserLeafView").super_class }, "createEphemeralSubviewNamed:", aName); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPBrowserLeafView__layoutSubviews(self, _cmd) +{ with(self) +{ + var imageView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "image-view", CPWindowAbove, nil); + var isHighlighted = objj_msgSend(self, "themeState") & CPThemeStateSelectedDataView; + objj_msgSend(imageView, "setImage:", _isLeaf ? (isHighlighted ? _highlightedBranchImage : _branchImage) : nil); + objj_msgSend(imageView, "setImageScaling:", CPScaleNone); +} +},["void"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPBrowserLeafView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserLeafView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeBool:forKey:", _isLeaf, "_CPBrowserLeafViewIsLeafKey"); + objj_msgSend(aCoder, "encodeObject:forKey:", _branchImage, "_CPBrowserLeafViewBranchImageKey"); + objj_msgSend(aCoder, "encodeObject:forKey:", _highlightedBranchImage, "_CPBrowserLeafViewHighlightedBranchImageKey"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPBrowserLeafView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBrowserLeafView").super_class }, "initWithCoder:", aCoder)) + { + _isLeaf = objj_msgSend(aCoder, "decodeBoolForKey:", "_CPBrowserLeafViewIsLeafKey"); + _branchImage = objj_msgSend(aCoder, "decodeObjectForKey:", "_CPBrowserLeafViewBranchImageKey"); + _highlightedBranchImage = objj_msgSend(aCoder, "decodeObjectForKey:", "_CPBrowserLeafViewHighlightedBranchImageKey"); + } + return self; +} +},["void","CPCoder"])]); +} + +p;10;CPButton.jt;26108;@STATIC;1.0;i;21;_CPImageAndTextView.ji;12;CGGeometry.ji;11;CPControl.ji;17;CPStringDrawing.ji;12;CPCheckBox.ji;9;CPRadio.jt;25977;objj_executeFile("_CPImageAndTextView.j", YES); +objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPControl.j", YES); +objj_executeFile("CPStringDrawing.j", YES); +CPRoundedBezelStyle = 1; +CPRegularSquareBezelStyle = 2; +CPThickSquareBezelStyle = 3; +CPThickerSquareBezelStyle = 4; +CPDisclosureBezelStyle = 5; +CPShadowlessSquareBezelStyle = 6; +CPCircularBezelStyle = 7; +CPTexturedSquareBezelStyle = 8; +CPHelpButtonBezelStyle = 9; +CPSmallSquareBezelStyle = 10; +CPTexturedRoundedBezelStyle = 11; +CPRoundRectBezelStyle = 12; +CPRecessedBezelStyle = 13; +CPRoundedDisclosureBezelStyle = 14; +CPHUDBezelStyle = -1; +CPMomentaryLightButton = 0; +CPPushOnPushOffButton = 1; +CPToggleButton = 2; +CPSwitchButton = 3; +CPRadioButton = 4; +CPMomentaryChangeButton = 5; +CPOnOffButton = 6; +CPMomentaryPushInButton = 7; +CPMomentaryPushButton = 0; +CPMomentaryLight = 7; +CPNoButtonMask = 0; +CPContentsButtonMask = 1; +CPPushInButtonMask = 2; +CPGrayButtonMask = 4; +CPBackgroundButtonMask = 8; +CPNoCellMask = CPNoButtonMask; +CPContentsCellMask = CPContentsButtonMask; +CPPushInCellMask = CPPushInButtonMask; +CPChangeGrayCellMask = CPGrayButtonMask; +CPChangeBackgroundCellMask = CPBackgroundButtonMask; +CPButtonStateMixed = CPThemeState("mixed"); +CPButtonDefaultHeight = 24.0; +CPButtonImageOffset = 3.0; +{var the_class = objj_allocateClassPair(CPControl, "CPButton"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_allowsMixedState"), new objj_ivar("_title"), new objj_ivar("_alternateTitle"), new objj_ivar("_showsStateBy"), new objj_ivar("_highlightsBy"), new objj_ivar("_imageDimsWhenDisabled"), new objj_ivar("_bezelStyle"), new objj_ivar("_controlSize"), new objj_ivar("_keyEquivalent"), new objj_ivar("_keyEquivalentModifierMask")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPButton__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "initWithFrame:", aFrame); + if (self) + { + objj_msgSend(self, "setValue:forThemeAttribute:", CPCenterTextAlignment, "alignment"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPCenterVerticalTextAlignment, "vertical-alignment"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPImageLeft, "image-position"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPScaleNone, "image-scaling"); + _controlSize = CPRegularControlSize; + _keyEquivalent = ""; + _keyEquivalentModifierMask = 0; + objj_msgSend(self, "setBordered:", YES); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("allowsMixedState"), function $CPButton__allowsMixedState(self, _cmd) +{ with(self) +{ + return _allowsMixedState; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsMixedState:"), function $CPButton__setAllowsMixedState_(self, _cmd, aFlag) +{ with(self) +{ + aFlag = !!aFlag; + if (_allowsMixedState === aFlag) + return; + _allowsMixedState = aFlag; + if (!_allowsMixedState && objj_msgSend(self, "state") === CPMixedState) + objj_msgSend(self, "setState:", CPOnState); +} +},["void","BOOL"]), new objj_method(sel_getUid("setObjectValue:"), function $CPButton__setObjectValue_(self, _cmd, anObjectValue) +{ with(self) +{ + if (!anObjectValue || anObjectValue === "" || (objj_msgSend(anObjectValue, "intValue") === 0)) + anObjectValue = CPOffState; + else if (!objj_msgSend(anObjectValue, "isKindOfClass:", objj_msgSend(CPNumber, "class"))) + anObjectValue = CPOnState; + else if (anObjectValue > CPOnState) + anObjectValue = CPOnState + else if (anObjectValue < CPOffState) + if (objj_msgSend(self, "allowsMixedState")) + anObjectValue = CPMixedState; + else + anObjectValue = CPOnState; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "setObjectValue:", anObjectValue); + switch (objj_msgSend(self, "objectValue")) + { + case CPMixedState: objj_msgSend(self, "unsetThemeState:", CPThemeStateSelected); + objj_msgSend(self, "setThemeState:", CPButtonStateMixed); + break; + case CPOnState: objj_msgSend(self, "unsetThemeState:", CPButtonStateMixed); + objj_msgSend(self, "setThemeState:", CPThemeStateSelected); + break; + case CPOffState: objj_msgSend(self, "unsetThemeState:", CPThemeStateSelected | CPButtonStateMixed); + } +} +},["void","id"]), new objj_method(sel_getUid("nextState"), function $CPButton__nextState(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "allowsMixedState")) + { + var value = objj_msgSend(self, "state"); + return value - ((value === -1) ? -2 : 1); + } + return 1 - objj_msgSend(self, "state"); +} +},["CPInteger"]), new objj_method(sel_getUid("setNextState"), function $CPButton__setNextState(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setState:", objj_msgSend(self, "nextState")); +} +},["void"]), new objj_method(sel_getUid("setState:"), function $CPButton__setState_(self, _cmd, aState) +{ with(self) +{ + objj_msgSend(self, "setIntValue:", aState); +} +},["void","CPInteger"]), new objj_method(sel_getUid("state"), function $CPButton__state(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "intValue"); +} +},["CPInteger"]), new objj_method(sel_getUid("setTitle:"), function $CPButton__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + if (_title === aTitle) + return; + _title = aTitle; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPString"]), new objj_method(sel_getUid("title"), function $CPButton__title(self, _cmd) +{ with(self) +{ + return _title; +} +},["CPString"]), new objj_method(sel_getUid("setAlternateTitle:"), function $CPButton__setAlternateTitle_(self, _cmd, aTitle) +{ with(self) +{ + if (_alternateTitle === aTitle) + return; + _alternateTitle = aTitle; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPString"]), new objj_method(sel_getUid("alternateTitle"), function $CPButton__alternateTitle(self, _cmd) +{ with(self) +{ + return _alternateTitle; +} +},["CPString"]), new objj_method(sel_getUid("setImage:"), function $CPButton__setImage_(self, _cmd, anImage) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", anImage, "image"); +} +},["void","CPImage"]), new objj_method(sel_getUid("image"), function $CPButton__image(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "valueForThemeAttribute:inState:", "image", CPThemeStateNormal); +} +},["CPImage"]), new objj_method(sel_getUid("setAlternateImage:"), function $CPButton__setAlternateImage_(self, _cmd, anImage) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:inState:", anImage, "image", CPThemeStateHighlighted); +} +},["void","CPImage"]), new objj_method(sel_getUid("alternateImage"), function $CPButton__alternateImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "valueForThemeAttribute:inState:", "image", CPThemeStateHighlighted); +} +},["CPImage"]), new objj_method(sel_getUid("setImageOffset:"), function $CPButton__setImageOffset_(self, _cmd, theImageOffset) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", theImageOffset, "image-offset"); +} +},["void","float"]), new objj_method(sel_getUid("imageOffset"), function $CPButton__imageOffset(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "valueForThemeAttribute:", "image-offset"); +} +},["float"]), new objj_method(sel_getUid("setShowsStateBy:"), function $CPButton__setShowsStateBy_(self, _cmd, aMask) +{ with(self) +{ + if (_showsStateBy === aMask) + return; + _showsStateBy = aMask; + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("showsStateBy"), function $CPButton__showsStateBy(self, _cmd) +{ with(self) +{ + return _showsStateBy; +} +},["CPInteger"]), new objj_method(sel_getUid("setHighlightsBy:"), function $CPButton__setHighlightsBy_(self, _cmd, aMask) +{ with(self) +{ + if (_highlightsBy === aMask) + return; + _highlightsBy = aMask; + if (objj_msgSend(self, "hasThemeState:", CPThemeStateHighlighted)) + { + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); + } +} +},["void","CPInteger"]), new objj_method(sel_getUid("setButtonType:"), function $CPButton__setButtonType_(self, _cmd, aButtonType) +{ with(self) +{ + switch (aButtonType) + { + case CPMomentaryLightButton: objj_msgSend(self, "setHighlightsBy:", CPChangeBackgroundCellMask); + objj_msgSend(self, "setShowsStateBy:", CPNoCellMask); + break; + case CPMomentaryPushInButton: objj_msgSend(self, "setHighlightsBy:", CPPushInCellMask | CPChangeGrayCellMask); + objj_msgSend(self, "setShowsStateBy:", CPNoCellMask); + break; + case CPMomentaryChangeButton: objj_msgSend(self, "setHighlightsBy:", CPContentsCellMask); + objj_msgSend(self, "setShowsStateBy:", CPNoCellMask); + break; + case CPPushOnPushOffButton: objj_msgSend(self, "setHighlightsBy:", CPPushInCellMask | CPChangeGrayCellMask); + objj_msgSend(self, "setShowsStateBy:", CPChangeBackgroundCellMask); + break; + case CPOnOffButton: objj_msgSend(self, "setHighlightsBy:", CPChangeBackgroundCellMask); + objj_msgSend(self, "setShowsStateBy:", CPChangeBackgroundCellMask); + break; + case CPToggleButton: objj_msgSend(self, "setHighlightsBy:", CPPushInCellMask | CPContentsCellMask); + objj_msgSend(self, "setShowsStateBy:", CPContentsCellMask); + break; + case CPSwitchButton: objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The CPSwitchButton type is not supported in Cappuccino, use the CPCheckBox class instead."); + case CPRadioButton: objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The CPRadioButton type is not supported in Cappuccino, use the CPRadio class instead."); + default: objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Unknown button type."); + } + objj_msgSend(self, "setImageDimsWhenDisabled:", YES); +} +},["void","CPButtonType"]), new objj_method(sel_getUid("setImageDimsWhenDisabled:"), function $CPButton__setImageDimsWhenDisabled_(self, _cmd, imageShouldDimWhenDisabled) +{ with(self) +{ + imageShouldDimWhenDisabled = !!imageShouldDimWhenDisabled; + if (_imageDimsWhenDisabled === imageShouldDimWhenDisabled) + return; + _imageDimsWhenDisabled = imageShouldDimWhenDisabled; + if (objj_msgSend(self, "hasThemeState:", CPThemeStateDisabled)) + { + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("imageDimsWhenDisabled"), function $CPButton__imageDimsWhenDisabled(self, _cmd) +{ with(self) +{ + return _imageDimsWhenDisabled; +} +},["BOOL"]), new objj_method(sel_getUid("startTrackingAt:"), function $CPButton__startTrackingAt_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSend(self, "highlight:", YES); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "startTrackingAt:", aPoint); +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"), function $CPButton__stopTracking_at_mouseIsUp_(self, _cmd, lastPoint, aPoint, mouseIsUp) +{ with(self) +{ + objj_msgSend(self, "highlight:", NO); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "stopTracking:at:mouseIsUp:", lastPoint, aPoint, mouseIsUp); + if (mouseIsUp && CGRectContainsPoint(objj_msgSend(self, "bounds"), aPoint)) + objj_msgSend(self, "setNextState"); +} +},["void","CGPoint","CGPoint","BOOL"]), new objj_method(sel_getUid("contentRectForBounds:"), function $CPButton__contentRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"); + if (((contentInset).top === 0 && (contentInset).right === 0 && (contentInset).bottom === 0 && (contentInset).left === 0)) + return bounds; + bounds.origin.x += contentInset.left; + bounds.origin.y += contentInset.top; + bounds.size.width -= contentInset.left + contentInset.right; + bounds.size.height -= contentInset.top + contentInset.bottom; + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("bezelRectForBounds:"), function $CPButton__bezelRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + if (!objj_msgSend(self, "isBordered")) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"); + if (((bezelInset).top === 0 && (bezelInset).right === 0 && (bezelInset).bottom === 0 && (bezelInset).left === 0)) + return bounds; + bounds.origin.x += bezelInset.left; + bounds.origin.y += bezelInset.top; + bounds.size.width -= bezelInset.left + bezelInset.right; + bounds.size.height -= bezelInset.top + bezelInset.bottom; + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("sizeToFit"), function $CPButton__sizeToFit(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "layoutSubviews"); + var size, + contentView = objj_msgSend(self, "ephemeralSubviewNamed:", "content-view"); + if (contentView) + { + objj_msgSend(contentView, "sizeToFit"); + size = objj_msgSend(contentView, "frameSize"); + } + else + size = objj_msgSend((objj_msgSend(self, "title") || " "), "sizeWithFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "font")); + var contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + minSize = objj_msgSend(self, "currentValueForThemeAttribute:", "min-size"), + maxSize = objj_msgSend(self, "currentValueForThemeAttribute:", "max-size"); + size.width = MAX(size.width + contentInset.left + contentInset.right, minSize.width); + size.height = MAX(size.height + contentInset.top + contentInset.bottom, minSize.height); + if (maxSize.width >= 0.0) + size.width = MIN(size.width, maxSize.width); + if (maxSize.height >= 0.0) + size.height = MIN(size.height, maxSize.height); + objj_msgSend(self, "setFrameSize:", size); +} +},["void"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPButton__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "bezel-view") + return objj_msgSend(self, "bezelRectForBounds:", objj_msgSend(self, "bounds")); + else if (aName === "content-view") + return objj_msgSend(self, "contentRectForBounds:", objj_msgSend(self, "bounds")); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPButton__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "bezel-view") + { + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; + } + else + return objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPButton__layoutSubviews(self, _cmd) +{ with(self) +{ + var bezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "bezel-view", CPWindowBelow, "content-view"); + objj_msgSend(bezelView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-color")); + var contentView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "content-view", CPWindowAbove, "bezel-view"); + if (contentView) + { + objj_msgSend(contentView, "setText:", (objj_msgSend(self, "hasThemeState:", CPThemeStateHighlighted) && _alternateTitle) ? _alternateTitle : _title); + objj_msgSend(contentView, "setImage:", objj_msgSend(self, "currentValueForThemeAttribute:", "image")); + objj_msgSend(contentView, "setImageOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "image-offset")); + objj_msgSend(contentView, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "font")); + objj_msgSend(contentView, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-color")); + objj_msgSend(contentView, "setAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "alignment")); + objj_msgSend(contentView, "setVerticalAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "vertical-alignment")); + objj_msgSend(contentView, "setLineBreakMode:", objj_msgSend(self, "currentValueForThemeAttribute:", "line-break-mode")); + objj_msgSend(contentView, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-color")); + objj_msgSend(contentView, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-offset")); + objj_msgSend(contentView, "setImagePosition:", objj_msgSend(self, "currentValueForThemeAttribute:", "image-position")); + objj_msgSend(contentView, "setImageScaling:", objj_msgSend(self, "currentValueForThemeAttribute:", "image-scaling")); + objj_msgSend(contentView, "setDimsImage:", objj_msgSend(self, "hasThemeState:", CPThemeStateDisabled) && _imageDimsWhenDisabled); + } +} +},["void"]), new objj_method(sel_getUid("setBordered:"), function $CPButton__setBordered_(self, _cmd, shouldBeBordered) +{ with(self) +{ + if (shouldBeBordered) + objj_msgSend(self, "setThemeState:", CPThemeStateBordered); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateBordered); +} +},["void","BOOL"]), new objj_method(sel_getUid("isBordered"), function $CPButton__isBordered(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateBordered); +} +},["BOOL"]), new objj_method(sel_getUid("setKeyEquivalent:"), function $CPButton__setKeyEquivalent_(self, _cmd, aString) +{ with(self) +{ + _keyEquivalent = aString || ""; + if (aString === CPNewlineCharacter || aString === CPCarriageReturnCharacter) + objj_msgSend(self, "setThemeState:", CPThemeStateDefault); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateDefault); +} +},["void","CPString"]), new objj_method(sel_getUid("viewWillMoveToWindow:"), function $CPButton__viewWillMoveToWindow_(self, _cmd, aWindow) +{ with(self) +{ + var selfWindow = objj_msgSend(self, "window"); + if (selfWindow === aWindow || aWindow === nil) + return; + if (objj_msgSend(selfWindow, "defaultButton") === self) + objj_msgSend(selfWindow, "setDefaultButton:", nil); + if (objj_msgSend(self, "keyEquivalent") === CPNewlineCharacter || objj_msgSend(self, "keyEquivalent") === CPCarriageReturnCharacter) + objj_msgSend(aWindow, "setDefaultButton:", self); +} +},["void","CPWindow"]), new objj_method(sel_getUid("keyEquivalent"), function $CPButton__keyEquivalent(self, _cmd) +{ with(self) +{ + return _keyEquivalent; +} +},["CPString"]), new objj_method(sel_getUid("setKeyEquivalentModifierMask:"), function $CPButton__setKeyEquivalentModifierMask_(self, _cmd, aMask) +{ with(self) +{ + _keyEquivalentModifierMask = aMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("keyEquivalentModifierMask"), function $CPButton__keyEquivalentModifierMask(self, _cmd) +{ with(self) +{ + return _keyEquivalentModifierMask; +} +},["unsigned"]), new objj_method(sel_getUid("performKeyEquivalent:"), function $CPButton__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "window"), "defaultButton") === self) + return NO; + if (!objj_msgSend(anEvent, "_triggersKeyEquivalent:withModifierMask:", objj_msgSend(self, "keyEquivalent"), objj_msgSend(self, "keyEquivalentModifierMask"))) + return NO; + objj_msgSend(self, "performClick:", nil); + return YES; +} +},["BOOL","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("buttonWithTitle:"), function $CPButton__buttonWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:theme:", aTitle, objj_msgSend(CPTheme, "defaultTheme")); +} +},["id","CPString"]), new objj_method(sel_getUid("buttonWithTitle:theme:"), function $CPButton__buttonWithTitle_theme_(self, _cmd, aTitle, aTheme) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(self, "alloc"), "init"); + objj_msgSend(button, "setTheme:", aTheme); + objj_msgSend(button, "setTitle:", aTitle); + objj_msgSend(button, "sizeToFit"); + return button; +} +},["id","CPString","CPTheme"]), new objj_method(sel_getUid("themeClass"), function $CPButton__themeClass(self, _cmd) +{ with(self) +{ + return "button"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPButton__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), 0.0, { top:(0), right:(0), bottom:(0), left:(0) }, { top:(0), right:(0), bottom:(0), left:(0) }, objj_msgSend(CPNull, "null")], ["image", "image-offset", "bezel-inset", "content-inset", "bezel-color"]); +} +},["id"])]); +} +{ +var the_class = objj_getClass("CPButton") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setBezelStyle:"), function $CPButton__setBezelStyle_(self, _cmd, aBezelStyle) +{ with(self) +{ +} +},["void","unsigned"]), new objj_method(sel_getUid("bezelStyle"), function $CPButton__bezelStyle(self, _cmd) +{ with(self) +{ +} +},["unsigned"])]); +} +var CPButtonImageKey = "CPButtonImageKey", + CPButtonAlternateImageKey = "CPButtonAlternateImageKey", + CPButtonTitleKey = "CPButtonTitleKey", + CPButtonAlternateTitleKey = "CPButtonAlternateTitleKey", + CPButtonIsBorderedKey = "CPButtonIsBorderedKey", + CPButtonAllowsMixedStateKey = "CPButtonAllowsMixedStateKey", + CPButtonImageDimsWhenDisabledKey = "CPButtonImageDimsWhenDisabledKey", + CPButtonImagePositionKey = "CPButtonImagePositionKey", + CPButtonKeyEquivalentKey = "CPButtonKeyEquivalentKey", + CPButtonKeyEquivalentMaskKey = "CPButtonKeyEquivalentMaskKey"; +{ +var the_class = objj_getClass("CPButton") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPButton\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPButton__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "initWithCoder:", aCoder); + if (self) + { + _controlSize = CPRegularControlSize; + _title = objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonTitleKey); + _alternateTitle = objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonAlternateTitleKey); + if (objj_msgSend(aCoder, "containsValueForKey:", CPButtonAllowsMixedStateKey)) + _allowsMixedState = objj_msgSend(aCoder, "decodeBoolForKey:", CPButtonAllowsMixedStateKey); + objj_msgSend(self, "setImageDimsWhenDisabled:", objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonImageDimsWhenDisabledKey)); + if (objj_msgSend(aCoder, "containsValueForKey:", CPButtonImagePositionKey)) + objj_msgSend(self, "setImagePosition:", objj_msgSend(aCoder, "decodeIntForKey:", CPButtonImagePositionKey)); + if (objj_msgSend(aCoder, "containsValueForKey:", CPButtonKeyEquivalentKey)) + objj_msgSend(self, "setKeyEquivalent:", CFData.decodeBase64ToUtf16String(objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonKeyEquivalentKey))); + _keyEquivalentModifierMask = objj_msgSend(aCoder, "decodeIntForKey:", CPButtonKeyEquivalentMaskKey); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPButton__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButton").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _title, CPButtonTitleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _alternateTitle, CPButtonAlternateTitleKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsMixedState, CPButtonAllowsMixedStateKey); + objj_msgSend(aCoder, "encodeBool:forKey:", objj_msgSend(self, "imageDimsWhenDisabled"), CPButtonImageDimsWhenDisabledKey); + objj_msgSend(aCoder, "encodeInt:forKey:", objj_msgSend(self, "imagePosition"), CPButtonImagePositionKey); + if (_keyEquivalent) + objj_msgSend(aCoder, "encodeObject:forKey:", CFData.encodeBase64Utf16String(_keyEquivalent), CPButtonKeyEquivalentKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _keyEquivalentModifierMask, CPButtonKeyEquivalentMaskKey); +} +},["void","CPCoder"])]); +} +objj_executeFile("CPCheckBox.j", YES); +objj_executeFile("CPRadio.j", YES); + +p;13;CPButtonBar.jt;13496;@STATIC;1.0;I;15;AppKit/CPView.jt;13456; + + +objj_executeFile("AppKit/CPView.j", NO); + + + + +{var the_class = objj_allocateClassPair(CPView, "CPButtonBar"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_hasResizeControl"), new objj_ivar("_resizeControlIsLeftAligned"), new objj_ivar("_buttons")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPButtonBar__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "initWithFrame:", aFrame); + + if (self) + { + _buttons = []; + objj_msgSend(self, "setNeedsLayout"); + } + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("awakeFromCib"), function $CPButtonBar__awakeFromCib(self, _cmd) +{ with(self) +{ + var view = objj_msgSend(self, "superview"), + subview = self; + + while (view) + { + if (objj_msgSend(view, "isKindOfClass:", objj_msgSend(CPSplitView, "class"))) + { + var viewIndex = objj_msgSend(objj_msgSend(view, "subviews"), "indexOfObject:", subview); + objj_msgSend(view, "setButtonBar:forDividerAtIndex:", self, viewIndex); + + break; + } + + subview = view; + view = objj_msgSend(view, "superview"); + } +} +},["void"]), new objj_method(sel_getUid("setButtons:"), function $CPButtonBar__setButtons_(self, _cmd, buttons) +{ with(self) +{ + _buttons = objj_msgSend(CPArray, "arrayWithArray:", buttons); + + for (var i = 0, count = objj_msgSend(_buttons, "count"); i < count; i++) + objj_msgSend(_buttons[i], "setBordered:", YES); + + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPArray"]), new objj_method(sel_getUid("buttons"), function $CPButtonBar__buttons(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPArray, "arrayWithArray:", _buttons); +} +},["CPArray"]), new objj_method(sel_getUid("setHasResizeControl:"), function $CPButtonBar__setHasResizeControl_(self, _cmd, shouldHaveResizeControl) +{ with(self) +{ + if (_hasResizeControl === shouldHaveResizeControl) + return; + + _hasResizeControl = !!shouldHaveResizeControl; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","BOOL"]), new objj_method(sel_getUid("hasResizeControl"), function $CPButtonBar__hasResizeControl(self, _cmd) +{ with(self) +{ + return _hasResizeControl; +} +},["BOOL"]), new objj_method(sel_getUid("setResizeControlIsLeftAligned:"), function $CPButtonBar__setResizeControlIsLeftAligned_(self, _cmd, shouldBeLeftAligned) +{ with(self) +{ + if (_resizeControlIsLeftAligned === shouldBeLeftAligned) + return; + + _resizeControlIsLeftAligned = !!shouldBeLeftAligned; + objj_msgSend(self, "setNeedsLayout"); +} +},["void","BOOL"]), new objj_method(sel_getUid("resizeControlIsLeftAligned"), function $CPButtonBar__resizeControlIsLeftAligned(self, _cmd) +{ with(self) +{ + return _resizeControlIsLeftAligned; +} +},["BOOL"]), new objj_method(sel_getUid("resizeControlFrame"), function $CPButtonBar__resizeControlFrame(self, _cmd) +{ with(self) +{ + var inset = objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-inset"), + size = objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-size"), + currentSize = objj_msgSend(self, "bounds"), + leftOrigin = _resizeControlIsLeftAligned ? 0 : currentSize.size.width - size.width - inset.right - inset.left; + + return CGRectMake(leftOrigin, 0, size.width + inset.left + inset.right, size.height + inset.top + inset.bottom); +} +},["CGRect"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPButtonBar__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "resize-control-view") + { + var inset = objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-inset"), + size = objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-size"), + currentSize = objj_msgSend(self, "bounds"); + + if (_resizeControlIsLeftAligned) + return CGRectMake(inset.left, inset.top, size.width, size.height); + else + return CGRectMake(currentSize.size.width - size.width - inset.right, inset.top, size.width, size.height); + } + + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPButtonBar__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "resize-control-view") + return objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero()); + + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "createEphemeralSubviewNamed:", aName); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPButtonBar__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-color")); + + var normalColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "button-bezel-color", CPThemeStateNormal), + highlightedColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "button-bezel-color", CPThemeStateHighlighted), + disabledColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "button-bezel-color", CPThemeStateDisabled), + textColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "button-text-color", CPThemeStateNormal); + + var buttonsNotHidden = objj_msgSend(CPArray, "arrayWithArray:", _buttons), + count = objj_msgSend(buttonsNotHidden, "count"); + + while (count--) + if (objj_msgSend(buttonsNotHidden[count], "isHidden")) + objj_msgSend(buttonsNotHidden, "removeObject:", buttonsNotHidden[count]); + + var currentButtonOffset = _resizeControlIsLeftAligned ? CGRectGetMaxX(objj_msgSend(self, "bounds")) + 1 : -1, + bounds = objj_msgSend(self, "bounds"), + height = CGRectGetHeight(bounds) - 1, + frameWidth = CGRectGetWidth(bounds), + resizeRect = _hasResizeControl ? objj_msgSend(self, "rectForEphemeralSubviewNamed:", "resize-control-view") : CGRectMakeZero(), + resizeWidth = CGRectGetWidth(resizeRect), + availableWidth = frameWidth - resizeWidth - 1; + + for (var i = 0, count = objj_msgSend(buttonsNotHidden, "count"); i < count; i++) + { + var button = buttonsNotHidden[i], + width = CGRectGetWidth(objj_msgSend(button, "frame")); + + if (availableWidth > width) + availableWidth -=width; + else + break; + + if (_resizeControlIsLeftAligned) + { + objj_msgSend(button, "setFrame:", CGRectMake(currentButtonOffset - width, 1, width, height)); + currentButtonOffset -= width - 1; + } + else + { + objj_msgSend(button, "setFrame:", CGRectMake(currentButtonOffset, 1, width, height)); + currentButtonOffset += width - 1; + } + + objj_msgSend(button, "setValue:forThemeAttribute:inState:", normalColor, "bezel-color", CPThemeStateNormal|CPThemeStateBordered); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", highlightedColor, "bezel-color", CPThemeStateHighlighted|CPThemeStateBordered); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", disabledColor, "bezel-color", CPThemeStateDisabled|CPThemeStateBordered); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", textColor, "text-color", CPThemeStateBordered); + + + objj_msgSend(button, "setValue:forThemeAttribute:inState:", normalColor, "bezel-color", CPThemeStateNormal|CPThemeStateBordered|CPPopUpButtonStatePullsDown); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", highlightedColor, "bezel-color", CPThemeStateHighlighted|CPThemeStateBordered|CPPopUpButtonStatePullsDown); + objj_msgSend(button, "setValue:forThemeAttribute:inState:", disabledColor, "bezel-color", CPThemeStateDisabled|CPThemeStateBordered|CPPopUpButtonStatePullsDown); + + objj_msgSend(self, "addSubview:", button); + } + + if (_hasResizeControl) + { + var resizeControlView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "resize-control-view", CPWindowAbove, nil); + + objj_msgSend(resizeControlView, "setAutoresizingMask:", _resizeControlIsLeftAligned ? CPViewMaxXMargin : CPViewMinXMargin); + objj_msgSend(resizeControlView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "resize-control-color")); + } +} +},["void"]), new objj_method(sel_getUid("setFrameSize:"), function $CPButtonBar__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CGSize"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("plusButton"), function $CPButtonBar__plusButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(0, 0, 35, 25)), + image = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPButtonBar, "class")), "pathForResource:", "plus_button.png"), CGSizeMake(11, 12)); + + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setImage:", image); + objj_msgSend(button, "setImagePosition:", CPImageOnly); + + return button; +} +},["id"]), new objj_method(sel_getUid("minusButton"), function $CPButtonBar__minusButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(0, 0, 35, 25)), + image = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPButtonBar, "class")), "pathForResource:", "minus_button.png"), CGSizeMake(11, 4)); + + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setImage:", image); + objj_msgSend(button, "setImagePosition:", CPImageOnly); + + return button; +} +},["id"]), new objj_method(sel_getUid("actionPopupButton"), function $CPButtonBar__actionPopupButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(CPPopUpButton, "alloc"), "initWithFrame:", CGRectMake(0, 0, 35, 25)), + image = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPButtonBar, "class")), "pathForResource:", "action_button.png"), CGSizeMake(22, 14)); + + objj_msgSend(button, "addItemWithTitle:", nil); + objj_msgSend(objj_msgSend(button, "lastItem"), "setImage:", image); + objj_msgSend(button, "setImagePosition:", CPImageOnly); + objj_msgSend(button, "setValue:forThemeAttribute:", CGInsetMake(0, 0, 0, 0), "content-inset"); + + objj_msgSend(button, "setPullsDown:", YES); + + return button; +} +},["id"]), new objj_method(sel_getUid("themeClass"), function $CPButtonBar__themeClass(self, _cmd) +{ with(self) +{ + return "button-bar"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPButtonBar__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [CGInsetMake(0.0, 0.0, 0.0, 0.0), CGSizeMakeZero(), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null")], ["resize-control-inset", "resize-control-size", "resize-control-color", "bezel-color", "button-bezel-color", "button-text-color"]); +} +},["id"])]); +} + +var CPButtonBarHasResizeControlKey = "CPButtonBarHasResizeControlKey", + CPButtonBarResizeControlIsLeftAlignedKey = "CPButtonBarResizeControlIsLeftAlignedKey", + CPButtonBarButtonsKey = "CPButtonBarButtonsKey"; + +{ +var the_class = objj_getClass("CPButtonBar") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPButtonBar\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("encodeWithCoder:"), function $CPButtonBar__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "encodeWithCoder:", aCoder); + + objj_msgSend(aCoder, "encodeBool:forKey:", _hasResizeControl, CPButtonBarHasResizeControlKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _resizeControlIsLeftAligned, CPButtonBarResizeControlIsLeftAlignedKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _buttons, CPButtonBarButtonsKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("initWithCoder:"), function $CPButtonBar__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPButtonBar").super_class }, "initWithCoder:", aCoder)) + { + _buttons = objj_msgSend(aCoder, "decodeObjectForKey:", CPButtonBarButtonsKey) || []; + _hasResizeControl = objj_msgSend(aCoder, "decodeBoolForKey:", CPButtonBarHasResizeControlKey); + _resizeControlIsLeftAligned = objj_msgSend(aCoder, "decodeBoolForKey:", CPButtonBarResizeControlIsLeftAlignedKey); + } + + return self; +} +},["id","CPCoder"])]); +} + +p;12;CPCheckBox.jt;2509;@STATIC;1.0;i;10;CPButton.jt;2475;objj_executeFile("CPButton.j", YES); +CPCheckBoxImageOffset = 4.0; +{var the_class = objj_allocateClassPair(CPButton, "CPCheckBox"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPCheckBox__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCheckBox").super_class }, "initWithFrame:", aFrame); + if (self) + { + objj_msgSend(self, "setHighlightsBy:", CPContentsCellMask); + objj_msgSend(self, "setShowsStateBy:", CPContentsCellMask); + objj_msgSend(self, "setImagePosition:", CPImageLeft); + objj_msgSend(self, "setAlignment:", CPLeftTextAlignment); + objj_msgSend(self, "setBordered:", NO); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("takeStateFromKeyPath:ofObjects:"), function $CPCheckBox__takeStateFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + var count = objects.length, + value = objj_msgSend(objects[0], "valueForKeyPath:", aKeyPath) ? CPOnState : CPOffState; + objj_msgSend(self, "setAllowsMixedState:", NO); + objj_msgSend(self, "setState:", value); + while (count-- > 1) + { + if (value !== (objj_msgSend(objects[count], "valueForKeyPath:", aKeyPath) ? CPOnState : CPOffState)) + { + objj_msgSend(self, "setAllowsMixedState:", YES); + objj_msgSend(self, "setState:", CPMixedState); + } + } +} +},["void","CPString","CPArray"]), new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"), function $CPCheckBox__takeValueFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + objj_msgSend(self, "takeStateFromKeyPath:ofObjects:", aKeyPath, objects); +} +},["void","CPString","CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("checkBoxWithTitle:theme:"), function $CPCheckBox__checkBoxWithTitle_theme_(self, _cmd, aTitle, aTheme) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:theme:", aTitle, aTheme); +} +},["id","CPString","CPTheme"]), new objj_method(sel_getUid("checkBoxWithTitle:"), function $CPCheckBox__checkBoxWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:", aTitle); +} +},["id","CPString"]), new objj_method(sel_getUid("themeClass"), function $CPCheckBox__themeClass(self, _cmd) +{ with(self) +{ + return "check-box"; +} +},["CPString"])]); +} + +p;12;CPClipView.jt;7063;@STATIC;1.0;i;8;CPView.jt;7032;objj_executeFile("CPView.j", YES); +{var the_class = objj_allocateClassPair(CPView, "CPClipView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_documentView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setDocumentView:"), function $CPClipView__setDocumentView_(self, _cmd, aView) +{ with(self) +{ + if (_documentView == aView) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_documentView) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPViewFrameDidChangeNotification, _documentView); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPViewBoundsDidChangeNotification, _documentView); + objj_msgSend(_documentView, "removeFromSuperview"); + } + _documentView = aView; + if (_documentView) + { + objj_msgSend(self, "addSubview:", _documentView); + objj_msgSend(_documentView, "setPostsFrameChangedNotifications:", YES); + objj_msgSend(_documentView, "setPostsBoundsChangedNotifications:", YES); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("viewFrameChanged:"), CPViewFrameDidChangeNotification, _documentView); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("viewBoundsChanged:"), CPViewBoundsDidChangeNotification, _documentView); + } +} +},["void","CPView"]), new objj_method(sel_getUid("documentView"), function $CPClipView__documentView(self, _cmd) +{ with(self) +{ + return _documentView; +} +},["id"]), new objj_method(sel_getUid("constrainScrollPoint:"), function $CPClipView__constrainScrollPoint_(self, _cmd, aPoint) +{ with(self) +{ + if (!_documentView) + return { x:0.0, y:0.0 }; + var documentFrame = objj_msgSend(_documentView, "frame"); + aPoint.x = MAX(0.0, MIN(aPoint.x, MAX((documentFrame.size.width) - (_bounds.size.width), 0.0))); + aPoint.y = MAX(0.0, MIN(aPoint.y, MAX((documentFrame.size.height) - (_bounds.size.height), 0.0))); + return aPoint; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("setBoundsOrigin:"), function $CPClipView__setBoundsOrigin_(self, _cmd, aPoint) +{ with(self) +{ + if ((_bounds.origin.x == aPoint.x && _bounds.origin.y == aPoint.y)) + return; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPClipView").super_class }, "setBoundsOrigin:", aPoint); + var superview = objj_msgSend(self, "superview"), + scrollViewClass = objj_getClass("CPScrollView"); + if(objj_msgSend(superview, "isKindOfClass:", scrollViewClass)) + objj_msgSend(superview, "reflectScrolledClipView:", self); +} +},["void","CGPoint"]), new objj_method(sel_getUid("scrollToPoint:"), function $CPClipView__scrollToPoint_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSend(self, "setBoundsOrigin:", objj_msgSend(self, "constrainScrollPoint:", aPoint)); +} +},["void","CGPoint"]), new objj_method(sel_getUid("viewBoundsChanged:"), function $CPClipView__viewBoundsChanged_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "_constrainScrollPoint"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("viewFrameChanged:"), function $CPClipView__viewFrameChanged_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "_constrainScrollPoint"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPClipView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPClipView").super_class }, "resizeSubviewsWithOldSize:", aSize); + objj_msgSend(self, "_constrainScrollPoint"); +} +},["void","CGSize"]), new objj_method(sel_getUid("_constrainScrollPoint"), function $CPClipView___constrainScrollPoint(self, _cmd) +{ with(self) +{ + var oldScrollPoint = objj_msgSend(self, "bounds").origin; + objj_msgSend(self, "scrollToPoint:", oldScrollPoint); + if (!CGPointEqualToPoint(oldScrollPoint, objj_msgSend(self, "bounds").origin)) + return; + var superview = objj_msgSend(self, "superview"), + scrollViewClass = objj_getClass("CPScrollView"); + if (objj_msgSend(superview, "isKindOfClass:", scrollViewClass)) + objj_msgSend(superview, "reflectScrolledClipView:", self); +} +},["void"]), new objj_method(sel_getUid("autoscroll:"), function $CPClipView__autoscroll_(self, _cmd, anEvent) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + eventLocation = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + superview = objj_msgSend(self, "superview"), + deltaX = 0, + deltaY = 0; + if (CGRectContainsPoint(bounds, eventLocation)) + return NO; + if (!objj_msgSend(superview, "isKindOfClass:", objj_msgSend(CPScrollView, "class")) || objj_msgSend(superview, "hasVerticalScroller")) + { + if (eventLocation.y < CGRectGetMinY(bounds)) + deltaY = CGRectGetMinY(bounds) - eventLocation.y; + else if (eventLocation.y > CGRectGetMaxY(bounds)) + deltaY = CGRectGetMaxY(bounds) - eventLocation.y; + if (deltaY < -bounds.size.height) + deltaY = -bounds.size.height; + if (deltaY > bounds.size.height) + deltaY = bounds.size.height; + } + if (!objj_msgSend(superview, "isKindOfClass:", objj_msgSend(CPScrollView, "class")) || objj_msgSend(superview, "hasHorizontalScroller")) + { + if (eventLocation.x < CGRectGetMinX(bounds)) + deltaX = CGRectGetMinX(bounds) - eventLocation.x; + else if (eventLocation.x > CGRectGetMaxX(bounds)) + deltaX = CGRectGetMaxX(bounds) - eventLocation.x; + if (deltaX < -bounds.size.width) + deltaX = -bounds.size.width; + if (deltaX > bounds.size.width) + deltaX = bounds.size.width; + } + return objj_msgSend(self, "scrollToPoint:", CGPointMake(bounds.origin.x - deltaX, bounds.origin.y - deltaY)); +} +},["BOOL","CPEvent"])]); +} +var CPClipViewDocumentViewKey = "CPScrollViewDocumentView"; +{ +var the_class = objj_getClass("CPClipView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPClipView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPClipView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPClipView").super_class }, "initWithCoder:", aCoder)) + objj_msgSend(self, "setDocumentView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPClipViewDocumentViewKey)); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPClipView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPClipView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _documentView, CPClipViewDocumentViewKey); +} +},["void","CPCoder"])]); +} + +p;18;CPCollectionView.jt;29016;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;Foundation/CPData.jI;23;Foundation/CPIndexSet.jI;28;Foundation/CPKeyedArchiver.jI;30;Foundation/CPKeyedUnarchiver.ji;8;CPView.ji;22;CPCollectionViewItem.jt;28812;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPData.j", NO); +objj_executeFile("Foundation/CPIndexSet.j", NO); +objj_executeFile("Foundation/CPKeyedArchiver.j", NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j", NO); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPCollectionViewItem.j", YES); +{var the_class = objj_allocateClassPair(CPView, "CPCollectionView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_content"), new objj_ivar("_items"), new objj_ivar("_itemData"), new objj_ivar("_itemPrototype"), new objj_ivar("_itemForDragging"), new objj_ivar("_cachedItems"), new objj_ivar("_maxNumberOfRows"), new objj_ivar("_maxNumberOfColumns"), new objj_ivar("_minItemSize"), new objj_ivar("_maxItemSize"), new objj_ivar("_backgroundColors"), new objj_ivar("_tileWidth"), new objj_ivar("_isSelectable"), new objj_ivar("_allowsMultipleSelection"), new objj_ivar("_allowsEmptySelection"), new objj_ivar("_selectionIndexes"), new objj_ivar("_itemSize"), new objj_ivar("_horizontalMargin"), new objj_ivar("_verticalMargin"), new objj_ivar("_numberOfRows"), new objj_ivar("_numberOfColumns"), new objj_ivar("_delegate"), new objj_ivar("_mouseDownEvent")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPCollectionView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCollectionView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _items = []; + _content = []; + _cachedItems = []; + _itemSize = CGSizeMakeZero(); + _minItemSize = CGSizeMakeZero(); + _maxItemSize = CGSizeMakeZero(); + objj_msgSend(self, "setBackgroundColors:", nil); + _verticalMargin = 5.0; + _tileWidth = -1.0; + _selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _allowsEmptySelection = YES; + _isSelectable = YES; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setItemPrototype:"), function $CPCollectionView__setItemPrototype_(self, _cmd, anItem) +{ with(self) +{ + _cachedItems = []; + _itemData = nil; + _itemForDragging = nil; + _itemPrototype = anItem; + objj_msgSend(self, "reloadContent"); +} +},["void","CPCollectionViewItem"]), new objj_method(sel_getUid("itemPrototype"), function $CPCollectionView__itemPrototype(self, _cmd) +{ with(self) +{ + return _itemPrototype; +} +},["CPCollectionViewItem"]), new objj_method(sel_getUid("newItemForRepresentedObject:"), function $CPCollectionView__newItemForRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + var item = nil; + if (_cachedItems.length) + item = _cachedItems.pop(); + else + { + if (!_itemData) + if (_itemPrototype) + _itemData = objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _itemPrototype); + item = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", _itemData); + } + objj_msgSend(item, "setRepresentedObject:", anObject); + objj_msgSend(objj_msgSend(item, "view"), "setFrameSize:", _itemSize); + return item; +} +},["CPCollectionViewItem","id"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPCollectionView__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("isFirstResponder"), function $CPCollectionView__isFirstResponder(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self; +} +},["BOOL"]), new objj_method(sel_getUid("setContent:"), function $CPCollectionView__setContent_(self, _cmd, anArray) +{ with(self) +{ + if (_content == anArray) + return; + _content = anArray; + objj_msgSend(self, "reloadContent"); +} +},["void","CPArray"]), new objj_method(sel_getUid("content"), function $CPCollectionView__content(self, _cmd) +{ with(self) +{ + return _content; +} +},["CPArray"]), new objj_method(sel_getUid("items"), function $CPCollectionView__items(self, _cmd) +{ with(self) +{ + return _items; +} +},["CPArray"]), new objj_method(sel_getUid("setSelectable:"), function $CPCollectionView__setSelectable_(self, _cmd, isSelectable) +{ with(self) +{ + if (_isSelectable == isSelectable) + return; + _isSelectable = isSelectable; + if (!_isSelectable) + { + var index = CPNotFound; + while ((index = objj_msgSend(_selectionIndexes, "indexGreaterThanIndex:", index)) != CPNotFound) + objj_msgSend(_items[index], "setSelected:", NO); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("isSelectable"), function $CPCollectionView__isSelectable(self, _cmd) +{ with(self) +{ + return _isSelectable; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsEmptySelection:"), function $CPCollectionView__setAllowsEmptySelection_(self, _cmd, shouldAllowEmptySelection) +{ with(self) +{ + _allowsEmptySelection = shouldAllowEmptySelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsEmptySelection"), function $CPCollectionView__allowsEmptySelection(self, _cmd) +{ with(self) +{ + return _allowsEmptySelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsMultipleSelection:"), function $CPCollectionView__setAllowsMultipleSelection_(self, _cmd, shouldAllowMultipleSelection) +{ with(self) +{ + _allowsMultipleSelection = shouldAllowMultipleSelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsMultipleSelection"), function $CPCollectionView__allowsMultipleSelection(self, _cmd) +{ with(self) +{ + return _allowsMultipleSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setSelectionIndexes:"), function $CPCollectionView__setSelectionIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + if (objj_msgSend(_selectionIndexes, "isEqual:", anIndexSet) || !_isSelectable) + return; + var index = CPNotFound; + while ((index = objj_msgSend(_selectionIndexes, "indexGreaterThanIndex:", index)) != CPNotFound) + objj_msgSend(_items[index], "setSelected:", NO); + _selectionIndexes = anIndexSet; + var index = CPNotFound; + while ((index = objj_msgSend(_selectionIndexes, "indexGreaterThanIndex:", index)) != CPNotFound) + objj_msgSend(_items[index], "setSelected:", YES); + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "selectionIndexes", self), "reverseSetValueFor:", "selectionIndexes"); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("collectionViewDidChangeSelection:"))) + objj_msgSend(_delegate, "collectionViewDidChangeSelection:", self); +} +},["void","CPIndexSet"]), new objj_method(sel_getUid("selectionIndexes"), function $CPCollectionView__selectionIndexes(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectionIndexes, "copy"); +} +},["CPIndexSet"]), new objj_method(sel_getUid("reloadContent"), function $CPCollectionView__reloadContent(self, _cmd) +{ with(self) +{ + var count = _items.length; + while (count--) + { + objj_msgSend(objj_msgSend(_items[count], "view"), "removeFromSuperview"); + objj_msgSend(_items[count], "setSelected:", NO); + _cachedItems.push(_items[count]); + } + _items = []; + if (!_itemPrototype || !_content) + return; + var index = 0; + count = _content.length; + for (; index < count; ++index) + { + _items.push(objj_msgSend(self, "newItemForRepresentedObject:", _content[index])); + objj_msgSend(self, "addSubview:", objj_msgSend(_items[index], "view")); + } + index = CPNotFound; + while ((index = objj_msgSend(_selectionIndexes, "indexGreaterThanIndex:", index)) != CPNotFound) + objj_msgSend(_items[index], "setSelected:", YES); + objj_msgSend(self, "tile"); +} +},["void"]), new objj_method(sel_getUid("tile"), function $CPCollectionView__tile(self, _cmd) +{ with(self) +{ + var width = CGRectGetWidth(objj_msgSend(self, "bounds")); + if (!objj_msgSend(_content, "count") || width == _tileWidth) + return; + var itemSize = CGSizeMakeCopy(_minItemSize); + _numberOfColumns = MAX(1.0, FLOOR(width / itemSize.width)); + if (_maxNumberOfColumns > 0) + _numberOfColumns = MIN(_maxNumberOfColumns, _numberOfColumns); + var remaining = width - _numberOfColumns * itemSize.width, + itemsNeedSizeUpdate = NO; + if (remaining > 0 && itemSize.width < _maxItemSize.width) + itemSize.width = MIN(_maxItemSize.width, itemSize.width + FLOOR(remaining / _numberOfColumns)); + if (_maxNumberOfColumns == 1 && itemSize.width < _maxItemSize.width && itemSize.width < width) + itemSize.width = MIN(_maxItemSize.width, width); + if (!CGSizeEqualToSize(_itemSize, itemSize)) + { + _itemSize = itemSize; + itemsNeedSizeUpdate = YES; + } + var index = 0, + count = _items.length; + if (_maxNumberOfColumns > 0 && _maxNumberOfRows > 0) + count = MIN(count, _maxNumberOfColumns * _maxNumberOfRows); + _numberOfRows = CEIL(count / _numberOfColumns); + _horizontalMargin = FLOOR((width - _numberOfColumns * itemSize.width) / (_numberOfColumns + 1)); + var x = _horizontalMargin, + y = -itemSize.height; + for (; index < count; ++index) + { + if (index % _numberOfColumns == 0) + { + x = _horizontalMargin; + y += _verticalMargin + itemSize.height; + } + var view = objj_msgSend(_items[index], "view"); + objj_msgSend(view, "setFrameOrigin:", CGPointMake(x, y)); + if (itemsNeedSizeUpdate) + objj_msgSend(view, "setFrameSize:", _itemSize); + x += itemSize.width + _horizontalMargin; + } + var superview = objj_msgSend(self, "superview"), + proposedHeight = y + itemSize.height + _verticalMargin; + if (objj_msgSend(superview, "isKindOfClass:", objj_msgSend(CPClipView, "class"))) + { + var superviewSize = objj_msgSend(superview, "bounds").size; + proposedHeight = MAX(superviewSize.height, proposedHeight); + } + _tileWidth = width; + objj_msgSend(self, "setFrameSize:", CGSizeMake(width, proposedHeight)); + _tileWidth = -1.0; +} +},["void"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPCollectionView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "tile"); +} +},["void","CGSize"]), new objj_method(sel_getUid("setMaxNumberOfRows:"), function $CPCollectionView__setMaxNumberOfRows_(self, _cmd, aMaxNumberOfRows) +{ with(self) +{ + if (_maxNumberOfRows == aMaxNumberOfRows) + return; + _maxNumberOfRows = aMaxNumberOfRows; + objj_msgSend(self, "tile"); +} +},["void","unsigned"]), new objj_method(sel_getUid("maxNumberOfRows"), function $CPCollectionView__maxNumberOfRows(self, _cmd) +{ with(self) +{ + return _maxNumberOfRows; +} +},["unsigned"]), new objj_method(sel_getUid("setMaxNumberOfColumns:"), function $CPCollectionView__setMaxNumberOfColumns_(self, _cmd, aMaxNumberOfColumns) +{ with(self) +{ + if (_maxNumberOfColumns == aMaxNumberOfColumns) + return; + _maxNumberOfColumns = aMaxNumberOfColumns; + objj_msgSend(self, "tile"); +} +},["void","unsigned"]), new objj_method(sel_getUid("maxNumberOfColumns"), function $CPCollectionView__maxNumberOfColumns(self, _cmd) +{ with(self) +{ + return _maxNumberOfColumns; +} +},["unsigned"]), new objj_method(sel_getUid("numberOfRows"), function $CPCollectionView__numberOfRows(self, _cmd) +{ with(self) +{ + return _numberOfRows; +} +},["unsigned"]), new objj_method(sel_getUid("numberOfColumns"), function $CPCollectionView__numberOfColumns(self, _cmd) +{ with(self) +{ + return _numberOfColumns; +} +},["unsigned"]), new objj_method(sel_getUid("setMinItemSize:"), function $CPCollectionView__setMinItemSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(_minItemSize, aSize)) + return; + _minItemSize = CGSizeMakeCopy(aSize); + objj_msgSend(self, "tile"); +} +},["void","CGSize"]), new objj_method(sel_getUid("minItemSize"), function $CPCollectionView__minItemSize(self, _cmd) +{ with(self) +{ + return _minItemSize; +} +},["CGSize"]), new objj_method(sel_getUid("setMaxItemSize:"), function $CPCollectionView__setMaxItemSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(_maxItemSize, aSize)) + return; + _maxItemSize = CGSizeMakeCopy(aSize); + objj_msgSend(self, "tile"); +} +},["void","CGSize"]), new objj_method(sel_getUid("maxItemSize"), function $CPCollectionView__maxItemSize(self, _cmd) +{ with(self) +{ + return _maxItemSize; +} +},["CGSize"]), new objj_method(sel_getUid("setBackgroundColors:"), function $CPCollectionView__setBackgroundColors_(self, _cmd, backgroundColors) +{ with(self) +{ + if (_backgroundColors === backgroundColors) + return; + _backgroundColors = backgroundColors; + if (!_backgroundColors) + _backgroundColors = objj_msgSend(CPColor, "whiteColor"); + if (objj_msgSend(_backgroundColors, "count") === 1) + objj_msgSend(self, "setBackgroundColor:", _backgroundColors[0]); + else + objj_msgSend(self, "setBackgroundColor:", nil); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPArray"]), new objj_method(sel_getUid("backgroundColors"), function $CPCollectionView__backgroundColors(self, _cmd) +{ with(self) +{ + return _backgroundColors; +} +},["CPArray"]), new objj_method(sel_getUid("mouseUp:"), function $CPCollectionView__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(_selectionIndexes, "count") && objj_msgSend(anEvent, "clickCount") == 2 && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("collectionView:didDoubleClickOnItemAtIndex:"))) + objj_msgSend(_delegate, "collectionView:didDoubleClickOnItemAtIndex:", self, objj_msgSend(_selectionIndexes, "firstIndex")); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDown:"), function $CPCollectionView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + _mouseDownEvent = anEvent; + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + row = FLOOR(location.y / (_itemSize.height + _verticalMargin)), + column = FLOOR(location.x / (_itemSize.width + _horizontalMargin)), + index = row * _numberOfColumns + column; + if (index >= 0 && index < _items.length) + { + if (_allowsMultipleSelection && (objj_msgSend(anEvent, "modifierFlags") & CPCommandKeyMask || objj_msgSend(anEvent, "modifierFlags") & CPShiftKeyMask)) + { + var indexes = objj_msgSend(_selectionIndexes, "copy"); + if (objj_msgSend(indexes, "containsIndex:", index)) + objj_msgSend(indexes, "removeIndex:", index); + else + objj_msgSend(indexes, "addIndex:", index); + } + else + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", index); + objj_msgSend(self, "setSelectionIndexes:", indexes); + } + else if (_allowsEmptySelection) + objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSet")); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $CPCollectionView__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + var locationInWindow = objj_msgSend(anEvent, "locationInWindow"), + mouseDownLocationInWindow = objj_msgSend(_mouseDownEvent, "locationInWindow"); + if ((ABS(locationInWindow.x - mouseDownLocationInWindow.x) < 3) && + (ABS(locationInWindow.y - mouseDownLocationInWindow.y) < 3)) + return; + if (!objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("collectionView:dragTypesForItemsAtIndexes:"))) + return; + if (!objj_msgSend(_selectionIndexes, "count")) + return; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("collectionView:canDragItemsAtIndexes:withEvent:")) && + !objj_msgSend(_delegate, "collectionView:canDragItemsAtIndexes:withEvent:", self, _selectionIndexes, _mouseDownEvent)) + return; + var dragTypes = objj_msgSend(_delegate, "collectionView:dragTypesForItemsAtIndexes:", self, _selectionIndexes); + objj_msgSend(objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard), "declareTypes:owner:", dragTypes, self); + if (!_itemForDragging) + _itemForDragging = objj_msgSend(self, "newItemForRepresentedObject:", _content[objj_msgSend(_selectionIndexes, "firstIndex")]); + else + objj_msgSend(_itemForDragging, "setRepresentedObject:", _content[objj_msgSend(_selectionIndexes, "firstIndex")]); + var view = objj_msgSend(_itemForDragging, "view"); + objj_msgSend(view, "setFrameSize:", _itemSize); + objj_msgSend(view, "setAlphaValue:", 0.7); + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", view, objj_msgSend(objj_msgSend(_items[objj_msgSend(_selectionIndexes, "firstIndex")], "view"), "frame").origin, CGSizeMakeZero(), _mouseDownEvent, nil, self, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("pasteboard:provideDataForType:"), function $CPCollectionView__pasteboard_provideDataForType_(self, _cmd, aPasteboard, aType) +{ with(self) +{ + objj_msgSend(aPasteboard, "setData:forType:", objj_msgSend(_delegate, "collectionView:dataForItemsAtIndexes:forType:", self, _selectionIndexes, aType), aType); +} +},["void","CPPasteboard","CPString"]), new objj_method(sel_getUid("setVerticalMargin:"), function $CPCollectionView__setVerticalMargin_(self, _cmd, aVerticalMargin) +{ with(self) +{ + if (_verticalMargin == aVerticalMargin) + return; + _verticalMargin = aVerticalMargin; + objj_msgSend(self, "tile"); +} +},["void","float"]), new objj_method(sel_getUid("verticalMargin"), function $CPCollectionView__verticalMargin(self, _cmd) +{ with(self) +{ + return _verticalMargin; +} +},["float"]), new objj_method(sel_getUid("setDelegate:"), function $CPCollectionView__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPCollectionView__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("itemAtIndex:"), function $CPCollectionView__itemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_items, "objectAtIndex:", anIndex); +} +},["CPCollectionViewItem","unsigned"]), new objj_method(sel_getUid("frameForItemAtIndex:"), function $CPCollectionView__frameForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "itemAtIndex:", anIndex), "view"), "frame"); +} +},["CGRect","unsigned"]), new objj_method(sel_getUid("frameForItemsAtIndexes:"), function $CPCollectionView__frameForItemsAtIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + var indexArray = [], + frame = CGRectNull; + objj_msgSend(anIndexSet, "getIndexes:maxCount:inIndexRange:", indexArray, -1, nil); + var index = 0, + count = objj_msgSend(indexArray, "count"); + for (; index < count; ++index) + frame = CGRectUnion(frame, objj_msgSend(self, "frameForItemAtIndex:", indexArray[index])); + return frame; +} +},["CGRect","CPIndexSet"])]); +} +{ +var the_class = objj_getClass("CPCollectionView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_modifySelectionWithNewIndex:direction:expand:"), function $CPCollectionView___modifySelectionWithNewIndex_direction_expand_(self, _cmd, anIndex, aDirection, shouldExpand) +{ with(self) +{ + anIndex = MIN(MAX(anIndex, 0), objj_msgSend(objj_msgSend(self, "items"), "count")-1); + if (_allowsMultipleSelection && shouldExpand) + { + var indexes = objj_msgSend(_selectionIndexes, "copy"), + bottomAnchor = objj_msgSend(indexes, "firstIndex"), + topAnchor = objj_msgSend(indexes, "lastIndex"); + if (aDirection === -1) + objj_msgSend(indexes, "addIndexesInRange:", CPMakeRange(anIndex, bottomAnchor - anIndex + 1)); + else + objj_msgSend(indexes, "addIndexesInRange:", CPMakeRange(topAnchor, anIndex - topAnchor + 1)); + } + else + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", anIndex); + objj_msgSend(self, "setSelectionIndexes:", indexes); + objj_msgSend(self, "_scrollToSelection"); +} +},["void","int","int","BOOL"]), new objj_method(sel_getUid("_scrollToSelection"), function $CPCollectionView___scrollToSelection(self, _cmd) +{ with(self) +{ + var frame = objj_msgSend(self, "frameForItemsAtIndexes:", objj_msgSend(self, "selectionIndexes")); + if (!CGRectIsNull(frame)) + objj_msgSend(self, "scrollRectToVisible:", frame); +} +},["void"]), new objj_method(sel_getUid("moveLeft:"), function $CPCollectionView__moveLeft_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index === CPNotFound) + index = objj_msgSend(objj_msgSend(self, "items"), "count"); + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", index - 1, -1, NO); +} +},["void","id"]), new objj_method(sel_getUid("moveLeftAndModifySelection:"), function $CPCollectionView__moveLeftAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index === CPNotFound) + index = objj_msgSend(objj_msgSend(self, "items"), "count"); + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", index - 1, -1, YES); +} +},["void","id"]), new objj_method(sel_getUid("moveRight:"), function $CPCollectionView__moveRight_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", objj_msgSend(objj_msgSend(self, "selectionIndexes"), "lastIndex") + 1, 1, NO); +} +},["void","id"]), new objj_method(sel_getUid("moveRightAndModifySelection:"), function $CPCollectionView__moveRightAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", objj_msgSend(objj_msgSend(self, "selectionIndexes"), "lastIndex") + 1, 1, YES); +} +},["void","id"]), new objj_method(sel_getUid("moveDown:"), function $CPCollectionView__moveDown_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", objj_msgSend(objj_msgSend(self, "selectionIndexes"), "lastIndex") + objj_msgSend(self, "numberOfColumns"), 1, NO); +} +},["void","id"]), new objj_method(sel_getUid("moveDownAndModifySelection:"), function $CPCollectionView__moveDownAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", objj_msgSend(objj_msgSend(self, "selectionIndexes"), "lastIndex") + objj_msgSend(self, "numberOfColumns"), 1, YES); +} +},["void","id"]), new objj_method(sel_getUid("moveUp:"), function $CPCollectionView__moveUp_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index == CPNotFound) + index = objj_msgSend(objj_msgSend(self, "items"), "count"); + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", index - objj_msgSend(self, "numberOfColumns"), -1, NO); +} +},["void","id"]), new objj_method(sel_getUid("moveUpAndModifySelection:"), function $CPCollectionView__moveUpAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index == CPNotFound) + index = objj_msgSend(objj_msgSend(self, "items"), "count"); + objj_msgSend(self, "_modifySelectionWithNewIndex:direction:expand:", index - objj_msgSend(self, "numberOfColumns"), -1, YES); +} +},["void","id"]), new objj_method(sel_getUid("deleteBackward:"), function $CPCollectionView__deleteBackward_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "delegate"), "respondsToSelector:", sel_getUid("collectionView:shouldDeleteItemsAtIndexes:"))) + { + objj_msgSend(objj_msgSend(self, "delegate"), "collectionView:shouldDeleteItemsAtIndexes:", self, objj_msgSend(self, "selectionIndexes")); + var index = objj_msgSend(objj_msgSend(self, "selectionIndexes"), "firstIndex"); + if (index > objj_msgSend(objj_msgSend(self, "content"), "count")-1) + objj_msgSend(self, "setSelectionIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", objj_msgSend(objj_msgSend(self, "content"), "count")-1)); + objj_msgSend(self, "_scrollToSelection"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } +} +},["void","id"]), new objj_method(sel_getUid("keyDown:"), function $CPCollectionView__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "interpretKeyEvents:", [anEvent]); +} +},["void","CPEvent"])]); +} +{ +var the_class = objj_getClass("CPCollectionView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("rectForItemAtIndex:"), function $CPCollectionView__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + _CPReportLenientDeprecation(objj_msgSend(self, "class"), _cmd, sel_getUid("frameForItemAtIndex:")); + return objj_msgSend(self, "frameForItemAtIndex:", anIndex); +} +},["CGRect","int"]), new objj_method(sel_getUid("rectForItemsAtIndexes:"), function $CPCollectionView__rectForItemsAtIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + _CPReportLenientDeprecation(objj_msgSend(self, "class"), _cmd, sel_getUid("frameForItemsAtIndexes:")); + return objj_msgSend(self, "frameForItemsAtIndexes:", anIndexSet); +} +},["CGRect","CPIndexSet"])]); +} +var CPCollectionViewMinItemSizeKey = "CPCollectionViewMinItemSizeKey", + CPCollectionViewMaxItemSizeKey = "CPCollectionViewMaxItemSizeKey", + CPCollectionViewVerticalMarginKey = "CPCollectionViewVerticalMarginKey", + CPCollectionViewMaxNumberOfRowsKey = "CPCollectionViewMaxNumberOfRowsKey", + CPCollectionViewMaxNumberOfColumnsKey = "CPCollectionViewMaxNumberOfColumnsKey", + CPCollectionViewSelectableKey = "CPCollectionViewSelectableKey", + CPCollectionViewBackgroundColorsKey = "CPCollectionViewBackgroundColorsKey"; +{ +var the_class = objj_getClass("CPCollectionView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCollectionView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPCollectionView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCollectionView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _items = []; + _content = []; + _cachedItems = []; + _itemSize = CGSizeMakeZero(); + _minItemSize = objj_msgSend(aCoder, "decodeSizeForKey:", CPCollectionViewMinItemSizeKey) || CGSizeMakeZero(); + _maxItemSize = objj_msgSend(aCoder, "decodeSizeForKey:", CPCollectionViewMaxItemSizeKey) || CGSizeMakeZero(); + _maxNumberOfRows = objj_msgSend(aCoder, "decodeIntForKey:", CPCollectionViewMaxNumberOfRowsKey) || 0; + _maxNumberOfColumns = objj_msgSend(aCoder, "decodeIntForKey:", CPCollectionViewMaxNumberOfColumnsKey) || 0; + _verticalMargin = objj_msgSend(aCoder, "decodeFloatForKey:", CPCollectionViewVerticalMarginKey); + _isSelectable = objj_msgSend(aCoder, "decodeBoolForKey:", CPCollectionViewSelectableKey); + objj_msgSend(self, "setBackgroundColors:", objj_msgSend(aCoder, "decodeObjectForKey:", CPCollectionViewBackgroundColorsKey)); + _tileWidth = -1.0; + _selectionIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _allowsEmptySelection = YES; + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPCollectionView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCollectionView").super_class }, "encodeWithCoder:", aCoder); + if (!CGSizeEqualToSize(_minItemSize, CGSizeMakeZero())) + objj_msgSend(aCoder, "encodeSize:forKey:", _minItemSize, CPCollectionViewMinItemSizeKey); + if (!CGSizeEqualToSize(_maxItemSize, CGSizeMakeZero())) + objj_msgSend(aCoder, "encodeSize:forKey:", _maxItemSize, CPCollectionViewMaxItemSizeKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _maxNumberOfRows, CPCollectionViewMaxNumberOfRowsKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _maxNumberOfColumns, CPCollectionViewMaxNumberOfColumnsKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isSelectable, CPCollectionViewSelectableKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _verticalMargin, CPCollectionViewVerticalMarginKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _backgroundColors, CPCollectionViewBackgroundColorsKey); +} +},["void","CPCoder"])]); +} + +p;22;CPCollectionViewItem.jt;1690;@STATIC;1.0;i;18;CPViewController.jt;1648;objj_executeFile("CPViewController.j", YES); +{var the_class = objj_allocateClassPair(CPViewController, "CPCollectionViewItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isSelected")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setRepresentedObject:"), function $CPCollectionViewItem__setRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCollectionViewItem").super_class }, "setRepresentedObject:", anObject); + var view = objj_msgSend(self, "view"); + if (objj_msgSend(view, "respondsToSelector:", sel_getUid("setRepresentedObject:"))) + objj_msgSend(view, "setRepresentedObject:", objj_msgSend(self, "representedObject")); +} +},["void","id"]), new objj_method(sel_getUid("setSelected:"), function $CPCollectionViewItem__setSelected_(self, _cmd, shouldBeSelected) +{ with(self) +{ + shouldBeSelected = !!shouldBeSelected; + if (_isSelected === shouldBeSelected) + return; + _isSelected = shouldBeSelected; + var view = objj_msgSend(self, "view"); + if (objj_msgSend(view, "respondsToSelector:", sel_getUid("setSelected:"))) + objj_msgSend(view, "setSelected:", objj_msgSend(self, "isSelected")); +} +},["void","BOOL"]), new objj_method(sel_getUid("isSelected"), function $CPCollectionViewItem__isSelected(self, _cmd) +{ with(self) +{ + return _isSelected; +} +},["BOOL"]), new objj_method(sel_getUid("collectionView"), function $CPCollectionViewItem__collectionView(self, _cmd) +{ with(self) +{ + return objj_msgSend(_view, "superview"); +} +},["CPCollectionView"])]); +} + +p;9;CPColor.jt;18340;@STATIC;1.0;I;21;Foundation/CPObject.ji;9;CGColor.ji;17;CPCompatibility.ji;9;CPImage.jt;18246;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CGColor.j", YES); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("CPImage.j", YES); +var _redComponent = 0, + _greenComponent = 1, + _blueComponent = 2, + _alphaCompnent = 3; +var _hueComponent = 0, + _saturationComponent = 1, + _brightnessComponent = 2; +var cachedBlackColor, + cachedRedColor, + cachedGreenColor, + cachedBlueColor, + cachedYellowColor, + cachedGrayColor, + cachedLightGrayColor, + cachedDarkGrayColor, + cachedWhiteColor, + cachedBrownColor, + cachedCyanColor, + cachedMagentaColor, + cachedOrangeColor, + cachedPurpleColor, + cachedShadowColor, + cachedClearColor; +{var the_class = objj_allocateClassPair(CPObject, "CPColor"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_components"), new objj_ivar("_patternImage"), new objj_ivar("_cssString")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initWithCSSString:"), function $CPColor___initWithCSSString_(self, _cmd, aString) +{ with(self) +{ + if (aString.indexOf("rgb") == CPNotFound) + return nil; + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColor").super_class }, "init"); + var startingIndex = aString.indexOf("("); + var parts = aString.substring(startingIndex+1).split(','); + _components = [ + parseInt(parts[0], 10) / 255.0, + parseInt(parts[1], 10) / 255.0, + parseInt(parts[2], 10) / 255.0, + parts[3] ? parseInt(parts[3], 10) / 255.0 : 1.0 + ]; + _cssString = aString; + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("_initWithRGBA:"), function $CPColor___initWithRGBA_(self, _cmd, components) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColor").super_class }, "init"); + if (self) + { + _components = components; + var hasAlpha = CPFeatureIsCompatible(CPCSSRGBAFeature) && _components[3] != 1.0; + _cssString = (hasAlpha ? "rgba(" : "rgb(") + + parseInt(_components[0] * 255.0) + ", " + + parseInt(_components[1] * 255.0) + ", " + + parseInt(_components[2] * 255.0) + + (hasAlpha ? (", " + _components[3]) : "") + ")"; + } + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("_initWithPatternImage:"), function $CPColor___initWithPatternImage_(self, _cmd, anImage) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColor").super_class }, "init"); + if (self) + { + _patternImage = anImage; + _cssString = "url(\"" + objj_msgSend(_patternImage, "filename") + "\")"; + _components = [0.0, 0.0, 0.0, 1.0]; + } + return self; +} +},["id","CPImage"]), new objj_method(sel_getUid("patternImage"), function $CPColor__patternImage(self, _cmd) +{ with(self) +{ + return _patternImage; +} +},["CPImage"]), new objj_method(sel_getUid("alphaComponent"), function $CPColor__alphaComponent(self, _cmd) +{ with(self) +{ + return _components[3]; +} +},["float"]), new objj_method(sel_getUid("blueComponent"), function $CPColor__blueComponent(self, _cmd) +{ with(self) +{ + return _components[2]; +} +},["float"]), new objj_method(sel_getUid("greenComponent"), function $CPColor__greenComponent(self, _cmd) +{ with(self) +{ + return _components[1]; +} +},["float"]), new objj_method(sel_getUid("redComponent"), function $CPColor__redComponent(self, _cmd) +{ with(self) +{ + return _components[0]; +} +},["float"]), new objj_method(sel_getUid("components"), function $CPColor__components(self, _cmd) +{ with(self) +{ + return _components; +} +},["CPArray"]), new objj_method(sel_getUid("colorWithAlphaComponent:"), function $CPColor__colorWithAlphaComponent_(self, _cmd, anAlphaComponent) +{ with(self) +{ + var components = _components.slice(); + components[components.length - 1] = anAlphaComponent; + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "_initWithRGBA:", components); +} +},["CPColor","float"]), new objj_method(sel_getUid("hsbComponents"), function $CPColor__hsbComponents(self, _cmd) +{ with(self) +{ + var red = ROUND(_components[_redComponent] * 255.0), + green = ROUND(_components[_greenComponent] * 255.0), + blue = ROUND(_components[_blueComponent] * 255.0); + var max = MAX(red, green, blue), + min = MIN(red, green, blue), + delta = max - min; + var brightness = max / 255.0, + saturation = (max != 0) ? delta / max : 0; + var hue; + if (saturation == 0) + { + hue = 0; + } + else + { + var rr = (max - red) / delta; + var gr = (max - green) / delta; + var br = (max - blue) / delta; + if (red == max) + hue = br - gr; + else if (green == max) + hue = 2 + rr - br; + else + hue = 4 + gr - rr; + hue /= 6; + if (hue < 0) + hue++; + } + return [ + ROUND(hue * 360.0), + ROUND(saturation * 100.0), + ROUND(brightness * 100.0) + ]; +} +},["CPArray"]), new objj_method(sel_getUid("cssString"), function $CPColor__cssString(self, _cmd) +{ with(self) +{ + return _cssString; +} +},["CPString"]), new objj_method(sel_getUid("hexString"), function $CPColor__hexString(self, _cmd) +{ with(self) +{ + return rgbToHex(objj_msgSend(self, "redComponent"), objj_msgSend(self, "greenComponent"), objj_msgSend(self, "blueComponent")) +} +},["CPString"]), new objj_method(sel_getUid("isEqual:"), function $CPColor__isEqual_(self, _cmd, aColor) +{ with(self) +{ + if (!aColor) + return NO; + if (aColor === self) + return YES; + return objj_msgSend(aColor, "isKindOfClass:", CPColor) && objj_msgSend(aColor, "cssString") === objj_msgSend(self, "cssString"); +} +},["BOOL","CPColor"]), new objj_method(sel_getUid("description"), function $CPColor__description(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColor").super_class }, "description")+" "+objj_msgSend(self, "cssString"); +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("colorWithRed:green:blue:alpha:"), function $CPColor__colorWithRed_green_blue_alpha_(self, _cmd, red, green, blue, alpha) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [red, green, blue, alpha]); +} +},["CPColor","float","float","float","float"]), new objj_method(sel_getUid("colorWithCalibratedRed:green:blue:alpha:"), function $CPColor__colorWithCalibratedRed_green_blue_alpha_(self, _cmd, red, green, blue, alpha) +{ with(self) +{ + return objj_msgSend(self, "colorWithRed:green:blue:alpha:", red, green, blue, alpha); +} +},["CPColor","float","float","float","float"]), new objj_method(sel_getUid("colorWithWhite:alpha:"), function $CPColor__colorWithWhite_alpha_(self, _cmd, white, alpha) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [white, white, white, alpha]); +} +},["CPColor","float","float"]), new objj_method(sel_getUid("colorWithCalibratedWhite:alpha:"), function $CPColor__colorWithCalibratedWhite_alpha_(self, _cmd, white, alpha) +{ with(self) +{ + return objj_msgSend(self, "colorWithWhite:alpha:", white, alpha); +} +},["CPColor","float","float"]), new objj_method(sel_getUid("colorWithHue:saturation:brightness:"), function $CPColor__colorWithHue_saturation_brightness_(self, _cmd, hue, saturation, brightness) +{ with(self) +{ + return objj_msgSend(self, "colorWithHue:saturation:brightness:alpha:", hue, saturation, brightness, 1.0); +} +},["CPColor","float","float","float"]), new objj_method(sel_getUid("colorWithHue:saturation:brightness:alpha:"), function $CPColor__colorWithHue_saturation_brightness_alpha_(self, _cmd, hue, saturation, brightness, alpha) +{ with(self) +{ + if (saturation === 0.0) + return objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", brightness / 100.0, alpha); + var f = hue % 60, + p = (brightness * (100 - saturation)) / 10000, + q = (brightness * (6000 - saturation * f)) / 600000, + t = (brightness * (6000 - saturation * (60 -f))) / 600000, + b = brightness / 100.0; + switch (FLOOR(hue / 60)) + { + case 0: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", b, t, p, alpha); + case 1: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", q, b, p, alpha); + case 2: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", p, b, t, alpha); + case 3: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", p, q, b, alpha); + case 4: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", t, p, b, alpha); + case 5: return objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", b, p, q, alpha); + } +} +},["CPColor","float","float","float","float"]), new objj_method(sel_getUid("colorWithHexString:"), function $CPColor__colorWithHexString_(self, _cmd, hex) +{ with(self) +{ + var rgba = hexToRGB(hex); + return rgba ? objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", rgba) : null; +} +},["CPColor","string"]), new objj_method(sel_getUid("blackColor"), function $CPColor__blackColor(self, _cmd) +{ with(self) +{ + if (!cachedBlackColor) + cachedBlackColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 0.0, 0.0, 1.0]); + return cachedBlackColor; +} +},["CPColor"]), new objj_method(sel_getUid("blueColor"), function $CPColor__blueColor(self, _cmd) +{ with(self) +{ + if (!cachedBlueColor) + cachedBlueColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 0.0, 1.0, 1.0]); + return cachedBlueColor; +} +},["CPColor"]), new objj_method(sel_getUid("darkGrayColor"), function $CPColor__darkGrayColor(self, _cmd) +{ with(self) +{ + if (!cachedDarkGrayColor) + cachedDarkGrayColor = objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 1.0 / 3.0, 1.0); + return cachedDarkGrayColor; +} +},["CPColor"]), new objj_method(sel_getUid("grayColor"), function $CPColor__grayColor(self, _cmd) +{ with(self) +{ + if (!cachedGrayColor) + cachedGrayColor = objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 0.5, 1.0); + return cachedGrayColor; +} +},["CPColor"]), new objj_method(sel_getUid("greenColor"), function $CPColor__greenColor(self, _cmd) +{ with(self) +{ + if (!cachedGreenColor) + cachedGreenColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 1.0, 0.0, 1.0]); + return cachedGreenColor; +} +},["CPColor"]), new objj_method(sel_getUid("lightGrayColor"), function $CPColor__lightGrayColor(self, _cmd) +{ with(self) +{ + if (!cachedLightGrayColor) + cachedLightGrayColor = objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 2.0 / 3.0, 1.0); + return cachedLightGrayColor; +} +},["CPColor"]), new objj_method(sel_getUid("redColor"), function $CPColor__redColor(self, _cmd) +{ with(self) +{ + if (!cachedRedColor) + cachedRedColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 0.0, 0.0, 1.0]); + return cachedRedColor; +} +},["CPColor"]), new objj_method(sel_getUid("whiteColor"), function $CPColor__whiteColor(self, _cmd) +{ with(self) +{ + if (!cachedWhiteColor) + cachedWhiteColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 1.0, 1.0, 1.0]); + return cachedWhiteColor; +} +},["CPColor"]), new objj_method(sel_getUid("yellowColor"), function $CPColor__yellowColor(self, _cmd) +{ with(self) +{ + if (!cachedYellowColor) + cachedYellowColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 1.0, 0.0, 1.0]); + return cachedYellowColor; +} +},["CPColor"]), new objj_method(sel_getUid("brownColor"), function $CPColor__brownColor(self, _cmd) +{ with(self) +{ + if (!cachedBrownColor) + cachedBrownColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.6, 0.4, 0.2, 1.0]); + return cachedBrownColor; +} +},["CPColor"]), new objj_method(sel_getUid("cyanColor"), function $CPColor__cyanColor(self, _cmd) +{ with(self) +{ + if (!cachedCyanColor) + cachedCyanColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 1.0, 1.0, 1.0]); + return cachedCyanColor; +} +},["CPColor"]), new objj_method(sel_getUid("magentaColor"), function $CPColor__magentaColor(self, _cmd) +{ with(self) +{ + if (!cachedMagentaColor) + cachedMagentaColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 0.0, 1.0, 1.0]); + return cachedMagentaColor; +} +},["CPColor"]), new objj_method(sel_getUid("orangeColor"), function $CPColor__orangeColor(self, _cmd) +{ with(self) +{ + if (!cachedOrangeColor) + cachedOrangeColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [1.0, 0.5, 0.0, 1.0]); + return cachedOrangeColor; +} +},["CPColor"]), new objj_method(sel_getUid("purpleColor"), function $CPColor__purpleColor(self, _cmd) +{ with(self) +{ + if (!cachedPurpleColor) + cachedPurpleColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.5, 0.0, 0.5, 1.0]); + return cachedPurpleColor; +} +},["CPColor"]), new objj_method(sel_getUid("shadowColor"), function $CPColor__shadowColor(self, _cmd) +{ with(self) +{ + if (!cachedShadowColor) + cachedShadowColor = objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.0, 0.0, 0.0, 1.0 / 3.0]); + return cachedShadowColor; +} +},["CPColor"]), new objj_method(sel_getUid("clearColor"), function $CPColor__clearColor(self, _cmd) +{ with(self) +{ + if (!cachedClearColor) + cachedClearColor = objj_msgSend(self, "colorWithCalibratedWhite:alpha:", 0.0, 0.0); + return cachedClearColor; +} +},["CPColor"]), new objj_method(sel_getUid("alternateSelectedControlColor"), function $CPColor__alternateSelectedControlColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.22, 0.46, 0.84, 1.0]); +} +},["CPColor"]), new objj_method(sel_getUid("secondarySelectedControlColor"), function $CPColor__secondarySelectedControlColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithRGBA:", [0.83, 0.83, 0.83, 1.0]); +} +},["CPColor"]), new objj_method(sel_getUid("colorWithPatternImage:"), function $CPColor__colorWithPatternImage_(self, _cmd, anImage) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithPatternImage:", anImage); +} +},["CPColor","CPImage"]), new objj_method(sel_getUid("colorWithCSSString:"), function $CPColor__colorWithCSSString_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPColor, "alloc"), "_initWithCSSString:", aString); +} +},["CPColor","CPString"])]); +} +{ +var the_class = objj_getClass("CPColor") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("set"), function $CPColor__set(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setFill"); + objj_msgSend(self, "setStroke"); +} +},["void"]), new objj_method(sel_getUid("setFill"), function $CPColor__setFill(self, _cmd) +{ with(self) +{ + var ctx = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetFillColor(ctx, self); +} +},["void"]), new objj_method(sel_getUid("setStroke"), function $CPColor__setStroke(self, _cmd) +{ with(self) +{ + var ctx = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetStrokeColor(ctx, self); +} +},["void"])]); +} +{ +var the_class = objj_getClass("CPColor") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +var meta_class = the_class.isa;class_addMethods(meta_class, [new objj_method(sel_getUid("randomColor"), function $CPColor__randomColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", RAND(), RAND(), RAND(), 1.0); +} +},["CPColor"])]); +} +var CPColorComponentsKey = "CPColorComponentsKey", + CPColorPatternImageKey = "CPColorPatternImageKey"; +{ +var the_class = objj_getClass("CPColor") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPColor\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPColor__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (objj_msgSend(aCoder, "containsValueForKey:", CPColorPatternImageKey)) + return objj_msgSend(self, "_initWithPatternImage:", objj_msgSend(aCoder, "decodeObjectForKey:", CPColorPatternImageKey)); + return objj_msgSend(self, "_initWithRGBA:", objj_msgSend(aCoder, "decodeObjectForKey:", CPColorComponentsKey)); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPColor__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_patternImage) + objj_msgSend(aCoder, "encodeObject:forKey:", _patternImage, CPColorPatternImageKey); + else + objj_msgSend(aCoder, "encodeObject:forKey:", _components, CPColorComponentsKey); +} +},["void","CPCoder"])]); +} +var hexCharacters = "0123456789ABCDEF"; +var hexToRGB = function(hex) +{ + if (hex.length == 3) + hex = hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt(1) + hex.charAt(2) + hex.charAt(2); + if (hex.length != 6) + return null; + hex = hex.toUpperCase(); + for (var i = 0; i < hex.length; i++) + if (hexCharacters.indexOf(hex.charAt(i)) == -1) + return null; + var red = (hexCharacters.indexOf(hex.charAt(0)) * 16 + hexCharacters.indexOf(hex.charAt(1))) / 255.0; + var green = (hexCharacters.indexOf(hex.charAt(2)) * 16 + hexCharacters.indexOf(hex.charAt(3))) / 255.0; + var blue = (hexCharacters.indexOf(hex.charAt(4)) * 16 + hexCharacters.indexOf(hex.charAt(5))) / 255.0; + return [red, green, blue, 1.0]; +}; +var rgbToHex = function(r,g,b) +{ + return byteToHex(r) + byteToHex(g) + byteToHex(b); +}; +var byteToHex = function(n) +{ + if (!n || isNaN(n)) + return "00"; + n = FLOOR(MIN(255, MAX(0, 256 * n))); + return hexCharacters.charAt((n - n % 16) / 16) + + hexCharacters.charAt(n % 16); +}; + +p;14;CPColorPanel.jt;23162;@STATIC;1.0;i;10;CPButton.ji;10;CPCookie.ji;9;CPPanel.ji;8;CPView.ji;15;CPColorPicker.ji;21;CPSliderColorPicker.jt;23041;objj_executeFile("CPButton.j", YES); +objj_executeFile("CPCookie.j", YES); +objj_executeFile("CPPanel.j", YES); +objj_executeFile("CPView.j", YES); +CPColorPanelColorDidChangeNotification = "CPColorPanelColorDidChangeNotification"; +var PREVIEW_HEIGHT = 20.0, + TOOLBAR_HEIGHT = 32.0, + SWATCH_HEIGHT = 14.0, + ICON_WIDTH = 32.0, + ICON_PADDING = 12.0; +var SharedColorPanel = nil, + ColorPickerClasses = []; +CPWheelColorPickerMode = 1; +CPSliderColorPickerMode = 2; +CPColorPickerViewWidth = 265, +CPColorPickerViewHeight = 370; +{var the_class = objj_allocateClassPair(CPPanel, "CPColorPanel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_toolbar"), new objj_ivar("_swatchView"), new objj_ivar("_previewView"), new objj_ivar("_opacitySlider"), new objj_ivar("_colorPickers"), new objj_ivar("_currentView"), new objj_ivar("_activePicker"), new objj_ivar("_color"), new objj_ivar("_target"), new objj_ivar("_action"), new objj_ivar("_mode")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPColorPanel__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorPanel").super_class }, "initWithContentRect:styleMask:", CGRectMake(500.0, 50.0, 219.0, 370.0), (CPTitledWindowMask | CPClosableWindowMask | CPResizableWindowMask)); + if (self) + { + objj_msgSend(objj_msgSend(self, "contentView"), "setBackgroundColor:", objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.95, 1.0)); + objj_msgSend(self, "setTitle:", "Color Panel"); + objj_msgSend(self, "setLevel:", CPFloatingWindowLevel); + objj_msgSend(self, "setFloatingPanel:", YES); + objj_msgSend(self, "setBecomesKeyOnlyIfNeeded:", YES); + objj_msgSend(self, "setMinSize:", CGSizeMake(219.0, 342.0)); + objj_msgSend(self, "setMaxSize:", CGSizeMake(323.0, 537.0)); + } + return self; +} +},["id"]), new objj_method(sel_getUid("setColor:"), function $CPColorPanel__setColor_(self, _cmd, aColor) +{ with(self) +{ + _color = aColor; + objj_msgSend(_previewView, "setBackgroundColor:", _color); + objj_msgSend(CPApp, "sendAction:to:from:", sel_getUid("changeColor:"), nil, self); + if (_target && _action) + objj_msgSend(CPApp, "sendAction:to:from:", _action, _target, self); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPColorPanelColorDidChangeNotification, self); + objj_msgSend(_activePicker, "setColor:", _color); + objj_msgSend(_opacitySlider, "setFloatValue:", objj_msgSend(_color, "alphaComponent")); +} +},["void","CPColor"]), new objj_method(sel_getUid("setColor:updatePicker:"), function $CPColorPanel__setColor_updatePicker_(self, _cmd, aColor, bool) +{ with(self) +{ + objj_msgSend(self, "setColor:", aColor); + if (bool) + objj_msgSend(_activePicker, "setColor:", _color); +} +},["void","CPColor","BOOL"]), new objj_method(sel_getUid("color"), function $CPColorPanel__color(self, _cmd) +{ with(self) +{ + return _color; +} +},["CPColor"]), new objj_method(sel_getUid("opacity"), function $CPColorPanel__opacity(self, _cmd) +{ with(self) +{ + return objj_msgSend(_opacitySlider, "floatValue"); +} +},["float"]), new objj_method(sel_getUid("setTarget:"), function $CPColorPanel__setTarget_(self, _cmd, aTarget) +{ with(self) +{ + _target = aTarget; +} +},["void","id"]), new objj_method(sel_getUid("target"), function $CPColorPanel__target(self, _cmd) +{ with(self) +{ + return _target; +} +},["id"]), new objj_method(sel_getUid("setAction:"), function $CPColorPanel__setAction_(self, _cmd, anAction) +{ with(self) +{ + _action = anAction; +} +},["void","selector"]), new objj_method(sel_getUid("action"), function $CPColorPanel__action(self, _cmd) +{ with(self) +{ + return _action; +} +},["selector"]), new objj_method(sel_getUid("setMode:"), function $CPColorPanel__setMode_(self, _cmd, mode) +{ with(self) +{ + _mode = mode; +} +},["void","CPColorPanelMode"]), new objj_method(sel_getUid("_setPicker:"), function $CPColorPanel___setPicker_(self, _cmd, sender) +{ with(self) +{ + var picker = _colorPickers[objj_msgSend(sender, "tag")], + view = objj_msgSend(picker, "provideNewView:", NO); + if (!view) + view = objj_msgSend(picker, "provideNewView:", YES); + if (view == _currentView) + return; + if (_currentView) + objj_msgSend(view, "setFrame:", objj_msgSend(_currentView, "frame")); + else + { + var height = (TOOLBAR_HEIGHT + 10 + PREVIEW_HEIGHT + 5 + SWATCH_HEIGHT + 32), + bounds = objj_msgSend(objj_msgSend(self, "contentView"), "bounds"); + objj_msgSend(view, "setFrameSize:", CPSizeMake(bounds.size.width - 10, bounds.size.height - height)); + objj_msgSend(view, "setFrameOrigin:", CPPointMake(5, height)); + } + objj_msgSend(_currentView, "removeFromSuperview"); + objj_msgSend(objj_msgSend(self, "contentView"), "addSubview:", view); + _currentView = view; + _activePicker = picker; + objj_msgSend(picker, "setColor:", objj_msgSend(self, "color")); +} +},["void","id"]), new objj_method(sel_getUid("mode"), function $CPColorPanel__mode(self, _cmd) +{ with(self) +{ + return _mode; +} +},["CPColorPanelMode"]), new objj_method(sel_getUid("orderFront:"), function $CPColorPanel__orderFront_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "_loadContentsIfNecessary"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorPanel").super_class }, "orderFront:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("_loadContentsIfNecessary"), function $CPColorPanel___loadContentsIfNecessary(self, _cmd) +{ with(self) +{ + if (_toolbar) + return; + if (!_color) + _color = objj_msgSend(CPColor, "whiteColor"); + _colorPickers = []; + var count = objj_msgSend(ColorPickerClasses, "count"); + for (var i = 0; i < count; i++) + { + var currentPickerClass = ColorPickerClasses[i], + currentPicker = objj_msgSend(objj_msgSend(currentPickerClass, "alloc"), "initWithPickerMask:colorPanel:", 0, self); + _colorPickers.push(currentPicker); + } + var contentView = objj_msgSend(self, "contentView"), + bounds = objj_msgSend(contentView, "bounds"); + _toolbar = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0, 6, CGRectGetWidth(bounds), TOOLBAR_HEIGHT)); + objj_msgSend(_toolbar, "setAutoresizingMask:", CPViewWidthSizable); + var totalToolbarWidth = count * ICON_WIDTH + (count - 1) * ICON_PADDING, + leftOffset = (CGRectGetWidth(bounds) - totalToolbarWidth) / 2.0, + buttonForLater = nil; + for (var i = 0; i < count; i++) + { + var image = objj_msgSend(_colorPickers[i], "provideNewButtonImage"), + highlightImage = objj_msgSend(_colorPickers[i], "provideNewAlternateButtonImage"), + button = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(leftOffset + i * (ICON_WIDTH + ICON_PADDING), 0, ICON_WIDTH, ICON_WIDTH)); + objj_msgSend(button, "setTag:", i); + objj_msgSend(button, "setTarget:", self); + objj_msgSend(button, "setAction:", sel_getUid("_setPicker:")); + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setAutoresizingMask:", CPViewMinXMargin|CPViewMaxXMargin); + objj_msgSend(button, "setImage:", image); + objj_msgSend(button, "setAlternateImage:", highlightImage); + objj_msgSend(_toolbar, "addSubview:", button); + if (!buttonForLater) + buttonForLater = button; + } + var previewBox = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(76, TOOLBAR_HEIGHT + 10, CGRectGetWidth(bounds) - 86, PREVIEW_HEIGHT)); + _previewView = objj_msgSend(objj_msgSend(_CPColorPanelPreview, "alloc"), "initWithFrame:", CGRectInset(objj_msgSend(previewBox, "bounds"), 2.0, 2.0)); + objj_msgSend(_previewView, "setColorPanel:", self); + objj_msgSend(_previewView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(previewBox, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.8, 1.0)); + objj_msgSend(previewBox, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(previewBox, "addSubview:", _previewView); + var _previewLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(10, TOOLBAR_HEIGHT + 10, 60, 15)); + objj_msgSend(_previewLabel, "setStringValue:", "Preview:"); + objj_msgSend(_previewLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(_previewLabel, "setAlignment:", CPRightTextAlignment); + var swatchBox = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(76, TOOLBAR_HEIGHT + 10 + PREVIEW_HEIGHT + 5, CGRectGetWidth(bounds) - 86, SWATCH_HEIGHT + 2.0)); + objj_msgSend(swatchBox, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.8, 1.0)); + objj_msgSend(swatchBox, "setAutoresizingMask:", CPViewWidthSizable); + _swatchView = objj_msgSend(objj_msgSend(_CPColorPanelSwatches, "alloc"), "initWithFrame:", CGRectInset(objj_msgSend(swatchBox, "bounds"), 1.0, 1.0)); + objj_msgSend(_swatchView, "setColorPanel:", self); + objj_msgSend(_swatchView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(swatchBox, "addSubview:", _swatchView); + var _swatchLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(10, TOOLBAR_HEIGHT + 8 + PREVIEW_HEIGHT + 6, 60, 15)); + objj_msgSend(_swatchLabel, "setStringValue:", "Swatches:"); + objj_msgSend(_swatchLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(_swatchLabel, "setAlignment:", CPRightTextAlignment); + var opacityLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(10, TOOLBAR_HEIGHT + PREVIEW_HEIGHT + 35, 60, 20)); + objj_msgSend(opacityLabel, "setStringValue:", "Opacity:"); + objj_msgSend(opacityLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(opacityLabel, "setAlignment:", CPRightTextAlignment); + _opacitySlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CGRectMake(76, TOOLBAR_HEIGHT + PREVIEW_HEIGHT + 34, CGRectGetWidth(bounds) - 86, 20.0)); + objj_msgSend(_opacitySlider, "setMinValue:", 0.0); + objj_msgSend(_opacitySlider, "setMaxValue:", 1.0); + objj_msgSend(_opacitySlider, "setTarget:", self); + objj_msgSend(_opacitySlider, "setAction:", sel_getUid("setOpacity:")); + objj_msgSend(contentView, "addSubview:", _toolbar); + objj_msgSend(contentView, "addSubview:", previewBox); + objj_msgSend(contentView, "addSubview:", _previewLabel); + objj_msgSend(contentView, "addSubview:", swatchBox); + objj_msgSend(contentView, "addSubview:", _swatchLabel); + objj_msgSend(contentView, "addSubview:", opacityLabel); + objj_msgSend(contentView, "addSubview:", _opacitySlider); + _target = nil; + _action = nil; + _activePicker = nil; + objj_msgSend(_previewView, "setBackgroundColor:", _color); + if (buttonForLater) + objj_msgSend(self, "_setPicker:", buttonForLater); +} +},["void"]), new objj_method(sel_getUid("setOpacity:"), function $CPColorPanel__setOpacity_(self, _cmd, sender) +{ with(self) +{ + var components = objj_msgSend(objj_msgSend(self, "color"), "components"), + alpha = objj_msgSend(sender, "floatValue"); + objj_msgSend(self, "setColor:updatePicker:", objj_msgSend(_color, "colorWithAlphaComponent:", alpha), YES); +} +},["void","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("provideColorPickerClass:"), function $CPColorPanel__provideColorPickerClass_(self, _cmd, aColorPickerSubclass) +{ with(self) +{ + ColorPickerClasses.push(aColorPickerSubclass); +} +},["void","Class"]), new objj_method(sel_getUid("sharedColorPanel"), function $CPColorPanel__sharedColorPanel(self, _cmd) +{ with(self) +{ + if (!SharedColorPanel) + SharedColorPanel = objj_msgSend(objj_msgSend(CPColorPanel, "alloc"), "init"); + return SharedColorPanel; +} +},["CPColorPanel"]), new objj_method(sel_getUid("setPickerMode:"), function $CPColorPanel__setPickerMode_(self, _cmd, mode) +{ with(self) +{ + var panel = objj_msgSend(CPColorPanel, "sharedColorPanel"); + objj_msgSend(panel, "setMode:", mode); +} +},["void","CPColorPanelMode"])]); +} +CPColorDragType = "CPColorDragType"; +var CPColorPanelSwatchesCookie = "CPColorPanelSwatchesCookie"; +{var the_class = objj_allocateClassPair(CPView, "_CPColorPanelSwatches"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_swatches"), new objj_ivar("_dragColor"), new objj_ivar("_colorPanel"), new objj_ivar("_swatchCookie")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPColorPanelSwatches__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPColorPanelSwatches").super_class }, "initWithFrame:", aFrame); + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(CPColor, "grayColor")); + objj_msgSend(self, "registerForDraggedTypes:", objj_msgSend(CPArray, "arrayWithObjects:", CPColorDragType)); + var whiteColor = objj_msgSend(CPColor, "whiteColor"); + _swatchCookie = objj_msgSend(objj_msgSend(CPCookie, "alloc"), "initWithName:", CPColorPanelSwatchesCookie); + var colorList = objj_msgSend(self, "startingColorList"); + _swatches = []; + for(var i=0; i < 50; i++) + { + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CPRectMake(13*i+1, 1, 12, 12)), + fillView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectInset(objj_msgSend(view, "bounds"), 1.0, 1.0)); + objj_msgSend(view, "setBackgroundColor:", whiteColor); + objj_msgSend(fillView, "setBackgroundColor:", (i < colorList.length) ? colorList[i] : whiteColor); + objj_msgSend(view, "addSubview:", fillView); + objj_msgSend(self, "addSubview:", view); + _swatches.push(view); + } + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("isOpaque"), function $_CPColorPanelSwatches__isOpaque(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("startingColorList"), function $_CPColorPanelSwatches__startingColorList(self, _cmd) +{ with(self) +{ + var cookieValue = objj_msgSend(_swatchCookie, "value"); + if(cookieValue == "") + { + return [ + objj_msgSend(CPColor, "blackColor"), + objj_msgSend(CPColor, "darkGrayColor"), + objj_msgSend(CPColor, "grayColor"), + objj_msgSend(CPColor, "lightGrayColor"), + objj_msgSend(CPColor, "whiteColor"), + objj_msgSend(CPColor, "redColor"), + objj_msgSend(CPColor, "greenColor"), + objj_msgSend(CPColor, "blueColor"), + objj_msgSend(CPColor, "yellowColor") + ]; + } + var cookieValue = eval(cookieValue); + var result = []; + for(var i=0; i<cookieValue.length; i++) + result.push(objj_msgSend(CPColor, "colorWithHexString:", cookieValue[i])); + return result; +} +},["CPArray"]), new objj_method(sel_getUid("saveColorList"), function $_CPColorPanelSwatches__saveColorList(self, _cmd) +{ with(self) +{ + var result = []; + for(var i=0; i<_swatches.length; i++) + result.push(objj_msgSend(objj_msgSend(objj_msgSend(_swatches[i], "subviews")[0], "backgroundColor"), "hexString")); + var future = new Date(); + future.setYear(2019); + objj_msgSend(_swatchCookie, "setValue:expires:domain:", JSON.stringify(result), future, nil); +} +},["CPArray"]), new objj_method(sel_getUid("setColorPanel:"), function $_CPColorPanelSwatches__setColorPanel_(self, _cmd, panel) +{ with(self) +{ + _colorPanel = panel; +} +},["void","CPColorPanel"]), new objj_method(sel_getUid("colorPanel"), function $_CPColorPanelSwatches__colorPanel(self, _cmd) +{ with(self) +{ + return _colorPanel; +} +},["CPColorPanel"]), new objj_method(sel_getUid("colorAtIndex:"), function $_CPColorPanelSwatches__colorAtIndex_(self, _cmd, index) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_swatches[index], "subviews")[0], "backgroundColor"); +} +},["CPColor","int"]), new objj_method(sel_getUid("setColor:atIndex:"), function $_CPColorPanelSwatches__setColor_atIndex_(self, _cmd, aColor, index) +{ with(self) +{ + objj_msgSend(objj_msgSend(_swatches[index], "subviews")[0], "setBackgroundColor:", aColor); + objj_msgSend(self, "saveColorList"); +} +},["void","CPColor","int"]), new objj_method(sel_getUid("mouseUp:"), function $_CPColorPanelSwatches__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + bounds = objj_msgSend(self, "bounds"); + if(!CGRectContainsPoint(bounds, point) || point.x > objj_msgSend(self, "bounds").size.width - 1 || point.x < 1) + return NO; + objj_msgSend(_colorPanel, "setColor:updatePicker:", objj_msgSend(self, "colorAtIndex:", FLOOR(point.x / 13)), YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $_CPColorPanelSwatches__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if(point.x > objj_msgSend(self, "bounds").size.width - 1 || point.x < 1) + return NO; + objj_msgSend(objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard), "declareTypes:owner:", objj_msgSend(CPArray, "arrayWithObject:", CPColorDragType), self); + var swatch = _swatches[FLOOR(point.x / 13)]; + _dragColor = objj_msgSend(objj_msgSend(swatch, "subviews")[0], "backgroundColor"); + var bounds = CPRectCreateCopy(objj_msgSend(swatch, "bounds")); + var dragView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", bounds), + dragFillView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectInset(bounds, 1.0, 1.0)); + objj_msgSend(dragView, "setBackgroundColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(dragFillView, "setBackgroundColor:", _dragColor); + objj_msgSend(dragView, "addSubview:", dragFillView); + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", dragView, CPPointMake(point.x - bounds.size.width / 2.0, point.y - bounds.size.height / 2.0), CPPointMake(0.0, 0.0), anEvent, nil, self, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("pasteboard:provideDataForType:"), function $_CPColorPanelSwatches__pasteboard_provideDataForType_(self, _cmd, aPasteboard, aType) +{ with(self) +{ + if(aType == CPColorDragType) + objj_msgSend(aPasteboard, "setData:forType:", objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _dragColor), aType); +} +},["void","CPPasteboard","CPString"]), new objj_method(sel_getUid("performDragOperation:"), function $_CPColorPanelSwatches__performDragOperation_(self, _cmd, aSender) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(aSender, "draggingLocation"), nil), + pasteboard = objj_msgSend(aSender, "draggingPasteboard"), + swatch = nil; + if(!objj_msgSend(pasteboard, "availableTypeFromArray:", [CPColorDragType]) || location.x > objj_msgSend(self, "bounds").size.width - 1 || location.x < 1) + return NO; + objj_msgSend(self, "setColor:atIndex:", objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(pasteboard, "dataForType:", CPColorDragType)), FLOOR(location.x / 13)); +} +},["void","id<CPDraggingInfo>"])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPColorPanelPreview"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_colorPanel")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPColorPanelPreview__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPColorPanelPreview").super_class }, "initWithFrame:", aFrame); + objj_msgSend(self, "registerForDraggedTypes:", objj_msgSend(CPArray, "arrayWithObjects:", CPColorDragType)); + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("setColorPanel:"), function $_CPColorPanelPreview__setColorPanel_(self, _cmd, aPanel) +{ with(self) +{ + _colorPanel = aPanel; +} +},["void","CPColorPanel"]), new objj_method(sel_getUid("colorPanel"), function $_CPColorPanelPreview__colorPanel(self, _cmd) +{ with(self) +{ + return _colorPanel; +} +},["CPColorPanel"]), new objj_method(sel_getUid("performDragOperation:"), function $_CPColorPanelPreview__performDragOperation_(self, _cmd, aSender) +{ with(self) +{ + var pasteboard = objj_msgSend(aSender, "draggingPasteboard"); + if (!objj_msgSend(pasteboard, "availableTypeFromArray:", [CPColorDragType])) + return NO; + var color = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(pasteboard, "dataForType:", CPColorDragType)); + objj_msgSend(_colorPanel, "setColor:updatePicker:", color, YES); +} +},["void","id<CPDraggingInfo>"]), new objj_method(sel_getUid("isOpaque"), function $_CPColorPanelPreview__isOpaque(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("mouseDragged:"), function $_CPColorPanelPreview__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + objj_msgSend(objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard), "declareTypes:owner:", [CPColorDragType], self); + var bounds = CPRectMake(0, 0, 15, 15); + var dragView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", bounds), + dragFillView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectInset(bounds, 1.0, 1.0)); + objj_msgSend(dragView, "setBackgroundColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(dragFillView, "setBackgroundColor:", objj_msgSend(self, "backgroundColor")); + objj_msgSend(dragView, "addSubview:", dragFillView); + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", dragView, CPPointMake(point.x - bounds.size.width / 2.0, point.y - bounds.size.height / 2.0), CPPointMake(0.0, 0.0), anEvent, nil, self, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("pasteboard:provideDataForType:"), function $_CPColorPanelPreview__pasteboard_provideDataForType_(self, _cmd, aPasteboard, aType) +{ with(self) +{ + if (aType == CPColorDragType) + objj_msgSend(aPasteboard, "setData:forType:", objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", objj_msgSend(self, "backgroundColor")), aType); +} +},["void","CPPasteboard","CPString"])]); +} +objj_executeFile("CPColorPicker.j", YES); +objj_executeFile("CPSliderColorPicker.j", YES); +objj_msgSend(CPColorPanel, "provideColorPickerClass:", CPColorWheelColorPicker); +objj_msgSend(CPColorPanel, "provideColorPickerClass:", CPSliderColorPicker); + +p;15;CPColorPicker.jt;13595;@STATIC;1.0;I;21;Foundation/CPObject.ji;14;CPColorPanel.jt;13530;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CPColorPanel.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPColorPicker"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_panel"), new objj_ivar("_mask")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithPickerMask:colorPanel:"), function $CPColorPicker__initWithPickerMask_colorPanel_(self, _cmd, aMask, aPanel) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorPicker").super_class }, "init"); + _panel = aPanel; + _mask = aMask; + return self; +} +},["id","int","CPColorPanel"]), new objj_method(sel_getUid("colorPanel"), function $CPColorPicker__colorPanel(self, _cmd) +{ with(self) +{ + return _panel; +} +},["CPColorPanel"]), new objj_method(sel_getUid("provideNewButtonImage"), function $CPColorPicker__provideNewButtonImage(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPImage"]), new objj_method(sel_getUid("setMode:"), function $CPColorPicker__setMode_(self, _cmd, mode) +{ with(self) +{ + return; +} +},["void","CPColorPanelMode"]), new objj_method(sel_getUid("setColor:"), function $CPColorPicker__setColor_(self, _cmd, aColor) +{ with(self) +{ + return; +} +},["void","CPColor"])]); +} +{var the_class = objj_allocateClassPair(CPColorPicker, "CPColorWheelColorPicker"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_pickerView"), new objj_ivar("_brightnessSlider"), new objj_ivar("_hueSaturationView"), new objj_ivar("_cachedColor")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithPickerMask:colorPanel:"), function $CPColorWheelColorPicker__initWithPickerMask_colorPanel_(self, _cmd, mask, owningColorPanel) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorWheelColorPicker").super_class }, "initWithPickerMask:colorPanel:", mask, owningColorPanel); +} +},["id","int","CPColorPanel"]), new objj_method(sel_getUid("initView"), function $CPColorWheelColorPicker__initView(self, _cmd) +{ with(self) +{ + aFrame = CPRectMake(0, 0, CPColorPickerViewWidth, CPColorPickerViewHeight); + _pickerView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", aFrame); + objj_msgSend(_pickerView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + _brightnessSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CGRectMake(0, (aFrame.size.height - 34), aFrame.size.width, 15)); + objj_msgSend(_brightnessSlider, "setValue:forThemeAttribute:", 15.0, "track-width"); + objj_msgSend(_brightnessSlider, "setValue:forThemeAttribute:", objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPColorPicker, "class")), "pathForResource:", "brightness_bar.png"))), "track-color"); + objj_msgSend(_brightnessSlider, "setMinValue:", 0.0); + objj_msgSend(_brightnessSlider, "setMaxValue:", 100.0); + objj_msgSend(_brightnessSlider, "setFloatValue:", 100.0); + objj_msgSend(_brightnessSlider, "setTarget:", self); + objj_msgSend(_brightnessSlider, "setAction:", sel_getUid("brightnessSliderDidChange:")); + objj_msgSend(_brightnessSlider, "setAutoresizingMask:", CPViewWidthSizable | CPViewMinYMargin); + _hueSaturationView = objj_msgSend(objj_msgSend(__CPColorWheel, "alloc"), "initWithFrame:", CPRectMake(0, 0, aFrame.size.width, aFrame.size.height - 38)); + objj_msgSend(_hueSaturationView, "setDelegate:", self); + objj_msgSend(_hueSaturationView, "setAutoresizingMask:", (CPViewWidthSizable | CPViewHeightSizable)); + objj_msgSend(_pickerView, "addSubview:", _hueSaturationView); + objj_msgSend(_pickerView, "addSubview:", _brightnessSlider); +} +},["id"]), new objj_method(sel_getUid("brightnessSliderDidChange:"), function $CPColorWheelColorPicker__brightnessSliderDidChange_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "updateColor"); +} +},["void","id"]), new objj_method(sel_getUid("colorWheelDidChange:"), function $CPColorWheelColorPicker__colorWheelDidChange_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "updateColor"); +} +},["void","id"]), new objj_method(sel_getUid("updateColor"), function $CPColorWheelColorPicker__updateColor(self, _cmd) +{ with(self) +{ + var hue = objj_msgSend(_hueSaturationView, "angle"), + saturation = objj_msgSend(_hueSaturationView, "distance"), + brightness = objj_msgSend(_brightnessSlider, "floatValue"); + objj_msgSend(_hueSaturationView, "setWheelBrightness:", brightness / 100.0); + objj_msgSend(_brightnessSlider, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithHue:saturation:brightness:", hue, saturation, 100)); + var colorPanel = objj_msgSend(self, "colorPanel"), + opacity = objj_msgSend(colorPanel, "opacity"); + _cachedColor = objj_msgSend(CPColor, "colorWithHue:saturation:brightness:alpha:", hue, saturation, brightness, opacity); + objj_msgSend(objj_msgSend(self, "colorPanel"), "setColor:", _cachedColor); +} +},["void"]), new objj_method(sel_getUid("supportsMode:"), function $CPColorWheelColorPicker__supportsMode_(self, _cmd, mode) +{ with(self) +{ + return (mode == CPWheelColorPickerMode) ? YES : NO; +} +},["BOOL","int"]), new objj_method(sel_getUid("currentMode"), function $CPColorWheelColorPicker__currentMode(self, _cmd) +{ with(self) +{ + return CPWheelColorPickerMode; +} +},["int"]), new objj_method(sel_getUid("provideNewView:"), function $CPColorWheelColorPicker__provideNewView_(self, _cmd, initialRequest) +{ with(self) +{ + if (initialRequest) + objj_msgSend(self, "initView"); + return _pickerView; +} +},["CPView","BOOL"]), new objj_method(sel_getUid("setColor:"), function $CPColorWheelColorPicker__setColor_(self, _cmd, newColor) +{ with(self) +{ + if (objj_msgSend(newColor, "isEqual:", _cachedColor)) + return; + var hsb = objj_msgSend(newColor, "hsbComponents"); + objj_msgSend(_hueSaturationView, "setPositionToColor:", newColor); + objj_msgSend(_brightnessSlider, "setFloatValue:", hsb[2]); + objj_msgSend(_hueSaturationView, "setWheelBrightness:", hsb[2] / 100.0); + objj_msgSend(_brightnessSlider, "setBackgroundColor:", objj_msgSend(CPColor, "colorWithHue:saturation:brightness:", hsb[0], hsb[1], 100)); +} +},["void","CPColor"]), new objj_method(sel_getUid("provideNewButtonImage"), function $CPColorWheelColorPicker__provideNewButtonImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "wheel_button.png"), CGSizeMake(32, 32)); +} +},["CPImage"]), new objj_method(sel_getUid("provideNewAlternateButtonImage"), function $CPColorWheelColorPicker__provideNewAlternateButtonImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "wheel_button_h.png"), CGSizeMake(32, 32)); +} +},["CPImage"])]); +} +{var the_class = objj_allocateClassPair(CPView, "__CPColorWheel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_wheelImage"), new objj_ivar("_blackWheelImage"), new objj_ivar("_crosshair"), new objj_ivar("_delegate"), new objj_ivar("_angle"), new objj_ivar("_distance"), new objj_ivar("_radius")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $__CPColorWheel__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("__CPColorWheel").super_class }, "initWithFrame:", aFrame); + var path = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "wheel.png"); + _wheelImage = new Image(); + _wheelImage.src = path; + _wheelImage.style.position = "absolute"; + path = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "wheel_black.png"); + _blackWheelImage = new Image(); + _blackWheelImage.src = path; + _blackWheelImage.style.opacity = "0"; + _blackWheelImage.style.filter = "alpha(opacity=0)" + _blackWheelImage.style.position = "absolute"; + objj_msgSend(self, "setWheelSize:", aFrame.size); + _crosshair = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CPRectMake(_radius - 2, _radius - 2, 4, 4)); + objj_msgSend(_crosshair, "setBackgroundColor:", objj_msgSend(CPColor, "blackColor")); + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectInset(objj_msgSend(_crosshair, "bounds"), 1.0, 1.0)); + objj_msgSend(view, "setBackgroundColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_crosshair, "addSubview:", view); + objj_msgSend(self, "addSubview:", _crosshair); + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("setWheelBrightness:"), function $__CPColorWheel__setWheelBrightness_(self, _cmd, brightness) +{ with(self) +{ + _blackWheelImage.style.opacity = 1.0 - brightness; + _blackWheelImage.style.filter = "alpha(opacity=" + (1.0 - brightness)*100 + ")" +} +},["void","float"]), new objj_method(sel_getUid("setFrameSize:"), function $__CPColorWheel__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("__CPColorWheel").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "setWheelSize:", aSize); +} +},["void","CPSize"]), new objj_method(sel_getUid("setWheelSize:"), function $__CPColorWheel__setWheelSize_(self, _cmd, aSize) +{ with(self) +{ + var min = MIN(aSize.width, aSize.height); + _blackWheelImage.style.width = min; + _blackWheelImage.style.height = min; + _blackWheelImage.width = min; + _blackWheelImage.height = min; + _blackWheelImage.style.top = (aSize.height - min) / 2.0 + "px"; + _blackWheelImage.style.left = (aSize.width - min) / 2.0 + "px"; + _wheelImage.style.width = min; + _wheelImage.style.height = min; + _wheelImage.width = min; + _wheelImage.height = min; + _wheelImage.style.top = (aSize.height - min) / 2.0 + "px"; + _wheelImage.style.left = (aSize.width - min) / 2.0 + "px"; + _radius = min / 2.0; + objj_msgSend(self, "setAngle:distance:", objj_msgSend(self, "degreesToRadians:", _angle), (_distance / 100.0) * _radius); +} +},["void","CPSize"]), new objj_method(sel_getUid("setDelegate:"), function $__CPColorWheel__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $__CPColorWheel__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("angle"), function $__CPColorWheel__angle(self, _cmd) +{ with(self) +{ + return _angle; +} +},["float"]), new objj_method(sel_getUid("distance"), function $__CPColorWheel__distance(self, _cmd) +{ with(self) +{ + return _distance; +} +},["float"]), new objj_method(sel_getUid("mouseDown:"), function $__CPColorWheel__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "reposition:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $__CPColorWheel__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "reposition:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("reposition:"), function $__CPColorWheel__reposition_(self, _cmd, anEvent) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + var midX = CGRectGetMidX(bounds); + var midY = CGRectGetMidY(bounds); + var distance = MIN(SQRT((location.x - midX)*(location.x - midX) + (location.y - midY)*(location.y - midY)), _radius); + var angle = ATAN2(location.y - midY, location.x - midX); + objj_msgSend(self, "setAngle:distance:", angle, distance); + objj_msgSend(_delegate, "colorWheelDidChange:", self); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setAngle:distance:"), function $__CPColorWheel__setAngle_distance_(self, _cmd, angle, distance) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + var midX = CGRectGetMidX(bounds); + var midY = CGRectGetMidY(bounds); + _angle = objj_msgSend(self, "radiansToDegrees:", angle); + _distance = (distance / _radius) * 100.0; + objj_msgSend(_crosshair, "setFrameOrigin:", CPPointMake(COS(angle) * distance + midX - 2.0, SIN(angle) * distance + midY - 2.0)); +} +},["void","int","float"]), new objj_method(sel_getUid("setPositionToColor:"), function $__CPColorWheel__setPositionToColor_(self, _cmd, aColor) +{ with(self) +{ + var hsb = objj_msgSend(aColor, "hsbComponents"), + bounds = objj_msgSend(self, "bounds"); + var angle = objj_msgSend(self, "degreesToRadians:", hsb[0]), + distance = (hsb[1] / 100.0) * _radius; + objj_msgSend(self, "setAngle:distance:", angle, distance); +} +},["void","CPColor"]), new objj_method(sel_getUid("radiansToDegrees:"), function $__CPColorWheel__radiansToDegrees_(self, _cmd, radians) +{ with(self) +{ + return ((-radians / PI) * 180 + 360) % 360; +} +},["int","float"]), new objj_method(sel_getUid("degreesToRadians:"), function $__CPColorWheel__degreesToRadians_(self, _cmd, degrees) +{ with(self) +{ + return -(((degrees - 360) / 180) * PI); +} +},["float","float"])]); +} + +p;13;CPColorWell.jt;8577;@STATIC;1.0;I;21;Foundation/CPString.ji;8;CPView.ji;9;CPColor.ji;14;CPColorPanel.jt;8488;objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPColor.j", YES); +objj_executeFile("CPColorPanel.j", YES); +var _CPColorWellDidBecomeExclusiveNotification = "_CPColorWellDidBecomeExclusiveNotification"; +{var the_class = objj_allocateClassPair(CPControl, "CPColorWell"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_active"), new objj_ivar("_bordered"), new objj_ivar("_color"), new objj_ivar("_wellView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPColorWell__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorWell").super_class }, "initWithFrame:", aFrame); + if (self) + { + _active = NO; + _bordered = YES; + _color = objj_msgSend(CPColor, "whiteColor"); + objj_msgSend(self, "drawBezelWithHighlight:", NO); + objj_msgSend(self, "drawWellInside:", CGRectInset(objj_msgSend(self, "bounds"), 3.0, 3.0)); + objj_msgSend(self, "_registerForNotifications"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("_registerForNotifications"), function $CPColorWell___registerForNotifications(self, _cmd) +{ with(self) +{ + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("colorWellDidBecomeExclusive:"), _CPColorWellDidBecomeExclusiveNotification, nil); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("colorPanelWillClose:"), CPWindowWillCloseNotification, objj_msgSend(CPColorPanel, "sharedColorPanel")); +} +},["void"]), new objj_method(sel_getUid("isBordered"), function $CPColorWell__isBordered(self, _cmd) +{ with(self) +{ + return _bordered; +} +},["BOOL"]), new objj_method(sel_getUid("setBordered:"), function $CPColorWell__setBordered_(self, _cmd, bordered) +{ with(self) +{ + if (_bordered == bordered) + return; + _bordered = bordered; + objj_msgSend(self, "drawWellInside:", CGRectInset(objj_msgSend(self, "bounds"), 3.0, 3.0)); +} +},["void","BOOL"]), new objj_method(sel_getUid("color"), function $CPColorWell__color(self, _cmd) +{ with(self) +{ + return _color; +} +},["CPColor"]), new objj_method(sel_getUid("setColor:"), function $CPColorWell__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (_color == aColor) + return; + _color = aColor; + objj_msgSend(self, "drawWellInside:", CGRectInset(objj_msgSend(self, "bounds"), 3.0, 3.0)); +} +},["void","CPColor"]), new objj_method(sel_getUid("takeColorFrom:"), function $CPColorWell__takeColorFrom_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "setColor:", objj_msgSend(aSender, "color")); +} +},["void","id"]), new objj_method(sel_getUid("activate:"), function $CPColorWell__activate_(self, _cmd, shouldBeExclusive) +{ with(self) +{ + if (shouldBeExclusive) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", _CPColorWellDidBecomeExclusiveNotification, self); + if (objj_msgSend(self, "isActive")) + return; + _active = YES; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "addObserver:selector:name:object:", self, sel_getUid("colorPanelDidChangeColor:"), CPColorPanelColorDidChangeNotification, objj_msgSend(CPColorPanel, "sharedColorPanel")); +} +},["void","BOOL"]), new objj_method(sel_getUid("deactivate"), function $CPColorWell__deactivate(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "isActive")) + return; + _active = NO; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "removeObserver:name:object:", self, CPColorPanelColorDidChangeNotification, objj_msgSend(CPColorPanel, "sharedColorPanel")); +} +},["void"]), new objj_method(sel_getUid("isActive"), function $CPColorWell__isActive(self, _cmd) +{ with(self) +{ + return _active; +} +},["BOOL"]), new objj_method(sel_getUid("drawBezelWithHighlight:"), function $CPColorWell__drawBezelWithHighlight_(self, _cmd, shouldHighlight) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("drawWellInside:"), function $CPColorWell__drawWellInside_(self, _cmd, aRect) +{ with(self) +{ + if (!_wellView) + { + _wellView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", aRect); + objj_msgSend(_wellView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(self, "addSubview:", _wellView); + } + else + objj_msgSend(_wellView, "setFrame:", aRect); + objj_msgSend(_wellView, "setBackgroundColor:", _color); +} +},["void","CGRect"]), new objj_method(sel_getUid("colorPanelDidChangeColor:"), function $CPColorWell__colorPanelDidChangeColor_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "takeColorFrom:", objj_msgSend(aNotification, "object")); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); +} +},["void","CPNotification"]), new objj_method(sel_getUid("colorWellDidBecomeExclusive:"), function $CPColorWell__colorWellDidBecomeExclusive_(self, _cmd, aNotification) +{ with(self) +{ + if (self != objj_msgSend(aNotification, "object")) + objj_msgSend(self, "deactivate"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("colorPanelWillClose:"), function $CPColorWell__colorPanelWillClose_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "deactivate"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("mouseDown:"), function $CPColorWell__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "drawBezelWithHighlight:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $CPColorWell__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "drawBezelWithHighlight:", CGRectContainsPoint(objj_msgSend(self, "bounds"), objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil))); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPColorWell__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "drawBezelWithHighlight:", NO); + if (!CGRectContainsPoint(objj_msgSend(self, "bounds"), objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil)) || !objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "activate:", YES); + var colorPanel = objj_msgSend(CPColorPanel, "sharedColorPanel"); + objj_msgSend(colorPanel, "setColor:", _color); + objj_msgSend(colorPanel, "orderFront:", self); +} +},["void","CPEvent"])]); +} +var CPColorWellColorKey = "CPColorWellColorKey", + CPColorWellBorderedKey = "CPColorWellBorderedKey"; +{ +var the_class = objj_getClass("CPColorWell") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPColorWell\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPColorWell__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorWell").super_class }, "initWithCoder:", aCoder); + if (self) + { + _active = NO; + _bordered = objj_msgSend(aCoder, "decodeBoolForKey:", CPColorWellBorderedKey); + _color = objj_msgSend(aCoder, "decodeObjectForKey:", CPColorWellColorKey); + objj_msgSend(self, "drawBezelWithHighlight:", NO); + objj_msgSend(self, "drawWellInside:", CGRectInset(objj_msgSend(self, "bounds"), 3.0, 3.0)); + objj_msgSend(self, "_registerForNotifications"); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPColorWell__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + var actualSubviews = _subviews; + _subviews = objj_msgSend(_subviews, "copy"); + objj_msgSend(_subviews, "removeObjectIdenticalTo:", _wellView); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPColorWell").super_class }, "encodeWithCoder:", aCoder); + _subviews = actualSubviews; + objj_msgSend(aCoder, "encodeObject:forKey:", _color, CPColorWellColorKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _bordered, CPColorWellBorderedKey); +} +},["void","CPCoder"])]); +} + +p;17;CPCompatibility.jt;5406;@STATIC;1.0;i;9;CPEvent.ji;12;CPPlatform.jt;5357;objj_executeFile("CPEvent.j", YES); +objj_executeFile("CPPlatform.j", YES); +CPUnknownBrowserEngine = 0; +CPGeckoBrowserEngine = 1; +CPInternetExplorerBrowserEngine = 2; +CPKHTMLBrowserEngine = 3; +CPOperaBrowserEngine = 4; +CPWebKitBrowserEngine = 5; +CPMacOperatingSystem = 0; +CPWindowsOperatingSystem = 1; +CPOtherOperatingSystem = 2; +CPCSSRGBAFeature = 1 << 5; +CPHTMLCanvasFeature = 1 << 6; +CPHTMLContentEditableFeature = 1 << 7; +CPHTMLDragAndDropFeature = 1 << 8; +CPJavascriptInnerTextFeature = 1 << 9; +CPJavascriptTextContentFeature = 1 << 10; +CPJavascriptClipboardEventsFeature = 1 << 11; +CPJavascriptClipboardAccessFeature = 1 << 12; +CPJavaScriptCanvasDrawFeature = 1 << 13; +CPJavaScriptCanvasTransformFeature = 1 << 14; +CPVMLFeature = 1 << 15; +CPJavascriptRemedialKeySupport = 1 << 16; +CPJavaScriptShadowFeature = 1 << 20; +CPJavaScriptNegativeMouseWheelValues = 1 << 22; +CPJavaScriptMouseWheelValues_8_15 = 1 << 23 +CPOpacityRequiresFilterFeature = 1 << 24; +CPInputTypeCanBeChangedFeature = 1 << 25; +CPHTML5DragAndDropSourceYOffBy1 = 1 << 26; +var USER_AGENT = "", + PLATFORM_ENGINE = CPUnknownBrowserEngine, + PLATFORM_FEATURES = 0; +PLATFORM_FEATURES |= CPInputTypeCanBeChangedFeature; +if (typeof window !== "undefined" && typeof window.navigator !== "undefined") + USER_AGENT = window.navigator.userAgent; +if (window.opera) +{ + PLATFORM_ENGINE = CPOperaBrowserEngine; + PLATFORM_FEATURES |= CPJavaScriptCanvasDrawFeature; +} +else if (window.attachEvent) +{ + PLATFORM_ENGINE = CPInternetExplorerBrowserEngine; + PLATFORM_FEATURES |= CPVMLFeature; + PLATFORM_FEATURES |= CPJavascriptRemedialKeySupport; + PLATFORM_FEATURES |= CPJavaScriptShadowFeature; + PLATFORM_FEATURES |= CPOpacityRequiresFilterFeature; + PLATFORM_FEATURES &= ~CPInputTypeCanBeChangedFeature; +} +else if (USER_AGENT.indexOf("AppleWebKit/") != -1) +{ + PLATFORM_ENGINE = CPWebKitBrowserEngine; + PLATFORM_FEATURES |= CPCSSRGBAFeature; + PLATFORM_FEATURES |= CPHTMLContentEditableFeature; + if (USER_AGENT.indexOf("Chrome") === -1) + PLATFORM_FEATURES |= CPHTMLDragAndDropFeature; + PLATFORM_FEATURES |= CPJavascriptClipboardEventsFeature; + PLATFORM_FEATURES |= CPJavascriptClipboardAccessFeature; + PLATFORM_FEATURES |= CPJavaScriptShadowFeature; + var versionStart = USER_AGENT.indexOf("AppleWebKit/") + "AppleWebKit/".length, + versionEnd = USER_AGENT.indexOf(" ", versionStart), + versionString = USER_AGENT.substring(versionStart, versionEnd), + versionDivision = versionString.indexOf('.'), + majorVersion = parseInt(versionString.substring(0, versionDivision)), + minorVersion = parseInt(versionString.substr(versionDivision + 1)); + if((USER_AGENT.indexOf("Safari") !== CPNotFound && (majorVersion > 525 || (majorVersion === 525 && minorVersion > 14))) || USER_AGENT.indexOf("Chrome") !== CPNotFound) + PLATFORM_FEATURES |= CPJavascriptRemedialKeySupport; + if (!objj_msgSend(CPPlatform, "isBrowser")) + PLATFORM_FEATURES |= CPJavascriptRemedialKeySupport; + if (majorVersion < 532 || (majorVersion === 532 && minorVersion < 6)) + PLATFORM_FEATURES |= CPHTML5DragAndDropSourceYOffBy1; +} +else if (USER_AGENT.indexOf("KHTML") != -1) +{ + PLATFORM_ENGINE = CPKHTMLBrowserEngine; +} +else if (USER_AGENT.indexOf("Gecko") !== -1) +{ + PLATFORM_ENGINE = CPGeckoBrowserEngine; + PLATFORM_FEATURES |= CPJavaScriptCanvasDrawFeature; + var index = USER_AGENT.indexOf("Firefox"), + version = (index === -1) ? 2.0 : parseFloat(USER_AGENT.substring(index + "Firefox".length + 1)); + if (version >= 3.0) + PLATFORM_FEATURES |= CPCSSRGBAFeature; + if (version < 3.0) + PLATFORM_FEATURES |= CPJavaScriptMouseWheelValues_8_15; +} +if (typeof document != "undefined") +{ + var canvasElement = document.createElement("canvas"); + if (canvasElement && canvasElement.getContext) + { + PLATFORM_FEATURES |= CPHTMLCanvasFeature; + var context = document.createElement("canvas").getContext("2d"); + if (context && context.setTransform && context.transform) + PLATFORM_FEATURES |= CPJavaScriptCanvasTransformFeature; + } + var DOMElement = document.createElement("div"); + if (DOMElement.innerText != undefined) + PLATFORM_FEATURES |= CPJavascriptInnerTextFeature; + else if (DOMElement.textContent != undefined) + PLATFORM_FEATURES |= CPJavascriptTextContentFeature; +} +CPFeatureIsCompatible= function(aFeature) +{ + return PLATFORM_FEATURES & aFeature; +} +CPBrowserIsEngine= function(anEngine) +{ + return PLATFORM_ENGINE === anEngine; +} +CPBrowserIsOperatingSystem= function(anOperatingSystem) +{ + return OPERATING_SYSTEM === anOperatingSystem; +} +OPERATING_SYSTEM = CPOtherOperatingSystem; +if (USER_AGENT.indexOf("Mac") !== -1) +{ + OPERATING_SYSTEM = CPMacOperatingSystem; + CPPlatformActionKeyMask = CPCommandKeyMask; + CPUndoKeyEquivalent = "z"; + CPRedoKeyEquivalent = "Z"; + CPUndoKeyEquivalentModifierMask = CPCommandKeyMask; + CPRedoKeyEquivalentModifierMask = CPCommandKeyMask; +} +else +{ + if (USER_AGENT.indexOf("Windows") !== -1) + OPERATING_SYSTEM = CPWindowsOperatingSystem; + CPPlatformActionKeyMask = CPControlKeyMask; + CPUndoKeyEquivalent = "z"; + CPRedoKeyEquivalent = "y"; + CPUndoKeyEquivalentModifierMask = CPControlKeyMask; + CPRedoKeyEquivalentModifierMask = CPControlKeyMask; +} + +p;11;CPControl.jt;27099;@STATIC;1.0;i;8;CPFont.ji;10;CPShadow.ji;8;CPView.ji;19;CPKeyValueBinding.jt;27016;objj_executeFile("CPFont.j", YES); +objj_executeFile("CPShadow.j", YES); +objj_executeFile("CPView.j", YES); +objj_executeFile("CPKeyValueBinding.j", YES); +CPLeftTextAlignment = 0; +CPRightTextAlignment = 1; +CPCenterTextAlignment = 2; +CPJustifiedTextAlignment = 3; +CPNaturalTextAlignment = 4; +CPRegularControlSize = 0; +CPSmallControlSize = 1; +CPMiniControlSize = 2; +CPLineBreakByWordWrapping = 0; +CPLineBreakByCharWrapping = 1; +CPLineBreakByClipping = 2; +CPLineBreakByTruncatingHead = 3; +CPLineBreakByTruncatingTail = 4; +CPLineBreakByTruncatingMiddle = 5; +CPTopVerticalTextAlignment = 1, +CPCenterVerticalTextAlignment = 2, +CPBottomVerticalTextAlignment = 3; +CPScaleProportionally = 0; +CPScaleToFit = 1; +CPScaleNone = 2; +CPNoImage = 0; +CPImageOnly = 1; +CPImageLeft = 2; +CPImageRight = 3; +CPImageBelow = 4; +CPImageAbove = 5; +CPImageOverlaps = 6; +CPOnState = 1; +CPOffState = 0; +CPMixedState = -1; +CPControlNormalBackgroundColor = "CPControlNormalBackgroundColor"; +CPControlSelectedBackgroundColor = "CPControlSelectedBackgroundColor"; +CPControlHighlightedBackgroundColor = "CPControlHighlightedBackgroundColor"; +CPControlDisabledBackgroundColor = "CPControlDisabledBackgroundColor"; +CPControlTextDidBeginEditingNotification = "CPControlTextDidBeginEditingNotification"; +CPControlTextDidChangeNotification = "CPControlTextDidChangeNotification"; +CPControlTextDidEndEditingNotification = "CPControlTextDidEndEditingNotification"; +var CPControlBlackColor = objj_msgSend(CPColor, "blackColor"); +{var the_class = objj_allocateClassPair(CPView, "CPControl"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_value"), new objj_ivar("_target"), new objj_ivar("_action"), new objj_ivar("_sendActionOn"), new objj_ivar("_sendsActionOnEndEditing"), new objj_ivar("_continuousTracking"), new objj_ivar("_trackingWasWithinFrame"), new objj_ivar("_trackingMouseDownFlags"), new objj_ivar("_previousTrackingLocation"), new objj_ivar("_toolTip")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("sendsActionOnEndEditing"), function $CPControl__sendsActionOnEndEditing(self, _cmd) +{ with(self) +{ +return _sendsActionOnEndEditing; +} +},["id"]), +new objj_method(sel_getUid("setSendsActionOnEndEditing:"), function $CPControl__setSendsActionOnEndEditing_(self, _cmd, newValue) +{ with(self) +{ +_sendsActionOnEndEditing = newValue; +} +},["void","id"]), new objj_method(sel_getUid("_reverseSetBinding"), function $CPControl___reverseSetBinding(self, _cmd) +{ with(self) +{ + var theBinding = objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", CPValueBinding, self); + objj_msgSend(theBinding, "reverseSetValueFor:", "objectValue"); +} +},["void"]), new objj_method(sel_getUid("_replacementKeyPathForBinding:"), function $CPControl___replacementKeyPathForBinding_(self, _cmd, aBinding) +{ with(self) +{ + if (aBinding === "value") + return "objectValue"; + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControl").super_class }, "_replacementKeyPathForBinding:", aBinding); +} +},["void","CPString"]), new objj_method(sel_getUid("initWithFrame:"), function $CPControl__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControl").super_class }, "initWithFrame:", aFrame); + if (self) + { + _sendActionOn = CPLeftMouseUpMask; + _trackingMouseDownFlags = 0; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setAction:"), function $CPControl__setAction_(self, _cmd, anAction) +{ with(self) +{ + _action = anAction; +} +},["void","SEL"]), new objj_method(sel_getUid("action"), function $CPControl__action(self, _cmd) +{ with(self) +{ + return _action; +} +},["SEL"]), new objj_method(sel_getUid("setTarget:"), function $CPControl__setTarget_(self, _cmd, aTarget) +{ with(self) +{ + _target = aTarget; +} +},["void","id"]), new objj_method(sel_getUid("target"), function $CPControl__target(self, _cmd) +{ with(self) +{ + return _target; +} +},["id"]), new objj_method(sel_getUid("sendAction:to:"), function $CPControl__sendAction_to_(self, _cmd, anAction, anObject) +{ with(self) +{ + objj_msgSend(self, "_reverseSetBinding"); + objj_msgSend(CPApp, "sendAction:to:from:", anAction, anObject, self); +} +},["void","SEL","id"]), new objj_method(sel_getUid("sendActionOn:"), function $CPControl__sendActionOn_(self, _cmd, mask) +{ with(self) +{ + var previousMask = _sendActionOn; + _sendActionOn = mask; + return previousMask; +} +},["int","int"]), new objj_method(sel_getUid("isContinuous"), function $CPControl__isContinuous(self, _cmd) +{ with(self) +{ + return (_sendActionOn & CPPeriodicMask) !== 0; +} +},["BOOL"]), new objj_method(sel_getUid("setContinuous:"), function $CPControl__setContinuous_(self, _cmd, flag) +{ with(self) +{ + if (flag) + _sendActionOn |= CPPeriodicMask; + else + _sendActionOn &= ~CPPeriodicMask; +} +},["void","BOOL"]), new objj_method(sel_getUid("tracksMouseOutsideOfFrame"), function $CPControl__tracksMouseOutsideOfFrame(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("trackMouse:"), function $CPControl__trackMouse_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + currentLocation = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + isWithinFrame = objj_msgSend(self, "tracksMouseOutsideOfFrame") || CGRectContainsPoint(objj_msgSend(self, "bounds"), currentLocation); + if (type === CPLeftMouseUp) + { + objj_msgSend(self, "stopTracking:at:mouseIsUp:", _previousTrackingLocation, currentLocation, YES); + _trackingMouseDownFlags = 0; + } + else + { + if (type === CPLeftMouseDown) + { + _trackingMouseDownFlags = objj_msgSend(anEvent, "modifierFlags"); + _continuousTracking = objj_msgSend(self, "startTrackingAt:", currentLocation); + } + else if (type === CPLeftMouseDragged) + { + if (isWithinFrame) + { + if (!_trackingWasWithinFrame) + _continuousTracking = objj_msgSend(self, "startTrackingAt:", currentLocation); + else if (_continuousTracking) + _continuousTracking = objj_msgSend(self, "continueTracking:at:", _previousTrackingLocation, currentLocation); + } + else + objj_msgSend(self, "stopTracking:at:mouseIsUp:", _previousTrackingLocation, currentLocation, NO); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackMouse:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); + } + if ((_sendActionOn & (1 << type)) && isWithinFrame) + objj_msgSend(self, "sendAction:to:", _action, _target); + _trackingWasWithinFrame = isWithinFrame; + _previousTrackingLocation = currentLocation; +} +},["void","CPEvent"]), new objj_method(sel_getUid("setState:"), function $CPControl__setState_(self, _cmd, state) +{ with(self) +{ +} +},["void","int"]), new objj_method(sel_getUid("nextState"), function $CPControl__nextState(self, _cmd) +{ with(self) +{ + return 0; +} +},["int"]), new objj_method(sel_getUid("performClick:"), function $CPControl__performClick_(self, _cmd, sender) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "highlight:", YES); + objj_msgSend(self, "setState:", objj_msgSend(self, "nextState")); + try + { + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + } + catch (e) + { + throw e; + } + finally + { + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", 0.1, self, sel_getUid("unhighlightButtonTimerDidFinish:"), nil, NO); + } +} +},["void","id"]), new objj_method(sel_getUid("unhighlightButtonTimerDidFinish:"), function $CPControl__unhighlightButtonTimerDidFinish_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "highlight:", NO); +} +},["void","id"]), new objj_method(sel_getUid("mouseDownFlags"), function $CPControl__mouseDownFlags(self, _cmd) +{ with(self) +{ + return _trackingMouseDownFlags; +} +},["unsigned"]), new objj_method(sel_getUid("startTrackingAt:"), function $CPControl__startTrackingAt_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSend(self, "highlight:", YES); + return (_sendActionOn & CPPeriodicMask) || (_sendActionOn & CPLeftMouseDraggedMask); +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("continueTracking:at:"), function $CPControl__continueTracking_at_(self, _cmd, lastPoint, aPoint) +{ with(self) +{ + return (_sendActionOn & CPPeriodicMask) || (_sendActionOn & CPLeftMouseDraggedMask); +} +},["BOOL","CGPoint","CGPoint"]), new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"), function $CPControl__stopTracking_at_mouseIsUp_(self, _cmd, lastPoint, aPoint, mouseIsUp) +{ with(self) +{ + objj_msgSend(self, "highlight:", NO); +} +},["void","CGPoint","CGPoint","BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $CPControl__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "trackMouse:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("objectValue"), function $CPControl__objectValue(self, _cmd) +{ with(self) +{ + return _value; +} +},["id"]), new objj_method(sel_getUid("setObjectValue:"), function $CPControl__setObjectValue_(self, _cmd, anObject) +{ with(self) +{ + _value = anObject; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","id"]), new objj_method(sel_getUid("floatValue"), function $CPControl__floatValue(self, _cmd) +{ with(self) +{ + var floatValue = parseFloat(_value, 10); + return isNaN(floatValue) ? 0.0 : floatValue; +} +},["float"]), new objj_method(sel_getUid("setFloatValue:"), function $CPControl__setFloatValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", aValue); +} +},["void","float"]), new objj_method(sel_getUid("doubleValue"), function $CPControl__doubleValue(self, _cmd) +{ with(self) +{ + var doubleValue = parseFloat(_value, 10); + return isNaN(doubleValue) ? 0.0 : doubleValue; +} +},["double"]), new objj_method(sel_getUid("setDoubleValue:"), function $CPControl__setDoubleValue_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anObject); +} +},["void","double"]), new objj_method(sel_getUid("intValue"), function $CPControl__intValue(self, _cmd) +{ with(self) +{ + var intValue = parseInt(_value, 10); + return isNaN(intValue) ? 0.0 : intValue; +} +},["int"]), new objj_method(sel_getUid("setIntValue:"), function $CPControl__setIntValue_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anObject); +} +},["void","int"]), new objj_method(sel_getUid("integerValue"), function $CPControl__integerValue(self, _cmd) +{ with(self) +{ + var intValue = parseInt(_value, 10); + return isNaN(intValue) ? 0.0 : intValue; +} +},["int"]), new objj_method(sel_getUid("setIntegerValue:"), function $CPControl__setIntegerValue_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anObject); +} +},["void","int"]), new objj_method(sel_getUid("stringValue"), function $CPControl__stringValue(self, _cmd) +{ with(self) +{ + return (_value === undefined || _value === nil) ? "" : String(_value); +} +},["CPString"]), new objj_method(sel_getUid("setStringValue:"), function $CPControl__setStringValue_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anObject); +} +},["void","CPString"]), new objj_method(sel_getUid("takeDoubleValueFrom:"), function $CPControl__takeDoubleValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("doubleValue"))) + objj_msgSend(self, "setDoubleValue:", objj_msgSend(sender, "doubleValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeFloatValueFrom:"), function $CPControl__takeFloatValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("floatValue"))) + objj_msgSend(self, "setFloatValue:", objj_msgSend(sender, "floatValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeIntegerValueFrom:"), function $CPControl__takeIntegerValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("integerValue"))) + objj_msgSend(self, "setIntegerValue:", objj_msgSend(sender, "integerValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeIntValueFrom:"), function $CPControl__takeIntValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("intValue"))) + objj_msgSend(self, "setIntValue:", objj_msgSend(sender, "intValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeObjectValueFrom:"), function $CPControl__takeObjectValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("objectValue"))) + objj_msgSend(self, "setObjectValue:", objj_msgSend(sender, "objectValue")); +} +},["void","id"]), new objj_method(sel_getUid("takeStringValueFrom:"), function $CPControl__takeStringValueFrom_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("stringValue"))) + objj_msgSend(self, "setStringValue:", objj_msgSend(sender, "stringValue")); +} +},["void","id"]), new objj_method(sel_getUid("textDidBeginEditing:"), function $CPControl__textDidBeginEditing_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPControlTextDidBeginEditingNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", objj_msgSend(note, "object"), "CPFieldEditor")); +} +},["void","CPNotification"]), new objj_method(sel_getUid("textDidChange:"), function $CPControl__textDidChange_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPControlTextDidChangeNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", objj_msgSend(note, "object"), "CPFieldEditor")); +} +},["void","CPNotification"]), new objj_method(sel_getUid("textDidEndEditing:"), function $CPControl__textDidEndEditing_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(self, "_reverseSetBinding"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPControlTextDidEndEditingNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", objj_msgSend(note, "object"), "CPFieldEditor")); +} +},["void","CPNotification"]), new objj_method(sel_getUid("setAlignment:"), function $CPControl__setAlignment_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "alignment");} +},["void","id"]), new objj_method(sel_getUid("alignment"), function $CPControl__alignment(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "alignment");} +},["id"]), new objj_method(sel_getUid("setVerticalAlignment:"), function $CPControl__setVerticalAlignment_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "vertical-alignment");} +},["void","id"]), new objj_method(sel_getUid("verticalAlignment"), function $CPControl__verticalAlignment(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "vertical-alignment");} +},["id"]), new objj_method(sel_getUid("setLineBreakMode:"), function $CPControl__setLineBreakMode_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "line-break-mode");} +},["void","id"]), new objj_method(sel_getUid("lineBreakMode"), function $CPControl__lineBreakMode(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "line-break-mode");} +},["id"]), new objj_method(sel_getUid("setTextColor:"), function $CPControl__setTextColor_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "text-color");} +},["void","id"]), new objj_method(sel_getUid("textColor"), function $CPControl__textColor(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "text-color");} +},["id"]), new objj_method(sel_getUid("setFont:"), function $CPControl__setFont_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "font");} +},["void","id"]), new objj_method(sel_getUid("font"), function $CPControl__font(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "font");} +},["id"]), new objj_method(sel_getUid("setTextShadowColor:"), function $CPControl__setTextShadowColor_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "text-shadow-color");} +},["void","id"]), new objj_method(sel_getUid("textShadowColor"), function $CPControl__textShadowColor(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "text-shadow-color");} +},["id"]), new objj_method(sel_getUid("setTextShadowOffset:"), function $CPControl__setTextShadowOffset_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "text-shadow-offset");} +},["void","id"]), new objj_method(sel_getUid("textShadowOffset"), function $CPControl__textShadowOffset(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "text-shadow-offset");} +},["id"]), new objj_method(sel_getUid("setImagePosition:"), function $CPControl__setImagePosition_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "image-position");} +},["void","id"]), new objj_method(sel_getUid("imagePosition"), function $CPControl__imagePosition(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "image-position");} +},["id"]), new objj_method(sel_getUid("setImageScaling:"), function $CPControl__setImageScaling_(self, _cmd, aValue) +{ with(self) +{objj_msgSend(self, "setValue:forThemeAttribute:", aValue, "image-scaling");} +},["void","id"]), new objj_method(sel_getUid("imageScaling"), function $CPControl__imageScaling(self, _cmd) +{ with(self) +{return objj_msgSend(self, "valueForThemeAttribute:", "image-scaling");} +},["id"]), new objj_method(sel_getUid("setEnabled:"), function $CPControl__setEnabled_(self, _cmd, isEnabled) +{ with(self) +{ + if (isEnabled) + objj_msgSend(self, "unsetThemeState:", CPThemeStateDisabled); + else + objj_msgSend(self, "setThemeState:", CPThemeStateDisabled); +} +},["void","BOOL"]), new objj_method(sel_getUid("isEnabled"), function $CPControl__isEnabled(self, _cmd) +{ with(self) +{ + return !objj_msgSend(self, "hasThemeState:", CPThemeStateDisabled); +} +},["BOOL"]), new objj_method(sel_getUid("highlight:"), function $CPControl__highlight_(self, _cmd, shouldHighlight) +{ with(self) +{ + objj_msgSend(self, "setHighlighted:", shouldHighlight); +} +},["void","BOOL"]), new objj_method(sel_getUid("setHighlighted:"), function $CPControl__setHighlighted_(self, _cmd, isHighlighted) +{ with(self) +{ + if (isHighlighted) + objj_msgSend(self, "setThemeState:", CPThemeStateHighlighted); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateHighlighted); +} +},["void","BOOL"]), new objj_method(sel_getUid("isHighlighted"), function $CPControl__isHighlighted(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateHighlighted); +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeAttributes"), function $CPControl__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [CPLeftTextAlignment, + CPTopVerticalTextAlignment, + CPLineBreakByClipping, + objj_msgSend(CPColor, "blackColor"), + objj_msgSend(CPFont, "systemFontOfSize:", 12.0), + objj_msgSend(CPNull, "null"), + { width:0.0, height:0.0 }, + CPImageLeft, + CPScaleToFit, + { width:0.0, height:0.0 }, + { width:-1.0, height:-1.0 }], ["alignment", + "vertical-alignment", + "line-break-mode", + "text-color", + "font", + "text-shadow-color", + "text-shadow-offset", + "image-position", + "image-scaling", + "min-size", + "max-size"]); +} +},["CPDictionary"]), new objj_method(sel_getUid("initialize"), function $CPControl__initialize(self, _cmd) +{ with(self) +{ + if (self === objj_msgSend(CPControl, "class")) + { + objj_msgSend(self, "exposeBinding:", "value"); + objj_msgSend(self, "exposeBinding:", "objectValue"); + objj_msgSend(self, "exposeBinding:", "stringValue"); + objj_msgSend(self, "exposeBinding:", "integerValue"); + objj_msgSend(self, "exposeBinding:", "intValue"); + objj_msgSend(self, "exposeBinding:", "doubleValue"); + objj_msgSend(self, "exposeBinding:", "floatValue"); + objj_msgSend(self, "exposeBinding:", "enabled"); + } +} +},["void"])]); +} +var CPControlValueKey = "CPControlValueKey", + CPControlControlStateKey = "CPControlControlStateKey", + CPControlIsEnabledKey = "CPControlIsEnabledKey", + CPControlTargetKey = "CPControlTargetKey", + CPControlActionKey = "CPControlActionKey", + CPControlSendActionOnKey = "CPControlSendActionOnKey", + CPControlSendsActionOnEndEditingKey = "CPControlSendsActionOnEndEditingKey"; +var __Deprecated__CPImageViewImageKey = "CPImageViewImageKey"; +{ +var the_class = objj_getClass("CPControl") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPControl\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPControl__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControl").super_class }, "initWithCoder:", aCoder); + if (self) + { + objj_msgSend(self, "setObjectValue:", objj_msgSend(aCoder, "decodeObjectForKey:", CPControlValueKey)); + objj_msgSend(self, "setTarget:", objj_msgSend(aCoder, "decodeObjectForKey:", CPControlTargetKey)); + objj_msgSend(self, "setAction:", objj_msgSend(aCoder, "decodeObjectForKey:", CPControlActionKey)); + objj_msgSend(self, "sendActionOn:", objj_msgSend(aCoder, "decodeIntForKey:", CPControlSendActionOnKey)); + objj_msgSend(self, "setSendsActionOnEndEditing:", objj_msgSend(aCoder, "decodeBoolForKey:", CPControlSendsActionOnEndEditingKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPControl__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControl").super_class }, "encodeWithCoder:", aCoder); + if (_sendsActionOnEndEditing) + objj_msgSend(aCoder, "encodeBool:forKey:", _sendsActionOnEndEditing, CPControlSendsActionOnEndEditingKey); + if (_value !== nil) + objj_msgSend(aCoder, "encodeObject:forKey:", _value, CPControlValueKey); + if (_target !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _target, CPControlTargetKey); + if (_action !== NULL) + objj_msgSend(aCoder, "encodeObject:forKey:", _action, CPControlActionKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _sendActionOn, CPControlSendActionOnKey); +} +},["void","CPCoder"])]); +} +var _CPControlSizeIdentifiers = [], + _CPControlCachedColorWithPatternImages = {}, + _CPControlCachedThreePartImagePattern = {}; +_CPControlSizeIdentifiers[CPRegularControlSize] = "Regular"; +_CPControlSizeIdentifiers[CPSmallControlSize] = "Small"; +_CPControlSizeIdentifiers[CPMiniControlSize] = "Mini"; +_CPControlIdentifierForControlSize= function(aControlSize) +{ + return _CPControlSizeIdentifiers[aControlSize]; +} +_CPControlColorWithPatternImage= function(sizes, aClassName) +{ + var index = 1, + count = arguments.length, + identifier = ""; + for (; index < count; ++index) + identifier += arguments[index]; + var color = _CPControlCachedColorWithPatternImages[identifier]; + if (!color) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPControl, "class")); + color = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", aClassName + "/" + identifier + ".png"), sizes[identifier])); + _CPControlCachedColorWithPatternImages[identifier] = color; + } + return color; +} +_CPControlThreePartImagePattern= function(isVertical, sizes, aClassName) +{ + var index = 2, + count = arguments.length, + identifier = ""; + for (; index < count; ++index) + identifier += arguments[index]; + var color = _CPControlCachedThreePartImagePattern[identifier]; + if (!color) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPControl, "class")), + path = aClassName + "/" + identifier; + sizes = sizes[identifier]; + color = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", path + "0.png"), sizes[0]), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", path + "1.png"), sizes[1]), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", path + "2.png"), sizes[2]) + ], isVertical)); + _CPControlCachedThreePartImagePattern[identifier] = color; + } + return color; +} + +p;14;CPController.jt;2511;@STATIC;1.0;t;2492;var CPControllerDeclaredKeysKey = "CPControllerDeclaredKeysKey"; +{var the_class = objj_allocateClassPair(CPObject, "CPController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_editors"), new objj_ivar("_declaredKeys")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPController__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPController").super_class }, "init"); + if (self) + { + _editors = []; + _declaredKeys = []; + } + return self; +} +},["id"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPController__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (objj_msgSend(_declaredKeys, "count") > 0) + objj_msgSend(aCoder, "encodeObject:forKey:", _declaredKeys, CPControllerDeclaredKeysKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("initWithCoder:"), function $CPController__initWithCoder_(self, _cmd, aDecoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPController").super_class }, "init"); + if (self) + { + _editors = []; + _declaredKeys = objj_msgSend(aDecoder, "decodeObjectForKey:", CPControllerDeclaredKeysKey) || []; + } + return nil; +} +},["id","CPCoder"]), new objj_method(sel_getUid("isEditing"), function $CPController__isEditing(self, _cmd) +{ with(self) +{ + return objj_msgSend(_editors, "count") > 0; +} +},["BOOL"]), new objj_method(sel_getUid("commitEditing"), function $CPController__commitEditing(self, _cmd) +{ with(self) +{ + var index = 0, + count = _editors.length; + for (; index < count; ++index) + if (!objj_msgSend(objj_msgSend(_editors, "objectAtIndex:", i), "commitEditing")) + return NO; + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("discardEditing"), function $CPController__discardEditing(self, _cmd) +{ with(self) +{ + objj_msgSend(_editors, "makeObjectsPerformSelector:", sel_getUid("discardEditing")); +} +},["void"]), new objj_method(sel_getUid("objectDidBeginEditing:"), function $CPController__objectDidBeginEditing_(self, _cmd, anEditor) +{ with(self) +{ + objj_msgSend(_editors, "addObject:", anEditor); +} +},["void","id"]), new objj_method(sel_getUid("objectDidEndEditing:"), function $CPController__objectDidEndEditing_(self, _cmd, anEditor) +{ with(self) +{ + objj_msgSend(_editors, "removeObject:", anEditor); +} +},["void","id"])]); +} + +p;10;CPCookie.jt;1762;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;1691;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPCookie"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_cookieName"), new objj_ivar("_cookieValue"), new objj_ivar("_expires")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithName:"), function $CPCookie__initWithName_(self, _cmd, aName) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCookie").super_class }, "init"); + _cookieName = aName; + _cookieValue = objj_msgSend(self, "_readCookieValue"); + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("value"), function $CPCookie__value(self, _cmd) +{ with(self) +{ + return _cookieValue; +} +},["CPString"]), new objj_method(sel_getUid("name"), function $CPCookie__name(self, _cmd) +{ with(self) +{ + return _cookieName; +} +},["CPString"]), new objj_method(sel_getUid("expires"), function $CPCookie__expires(self, _cmd) +{ with(self) +{ + return _expires; +} +},["CPString"]), new objj_method(sel_getUid("setValue:expires:domain:"), function $CPCookie__setValue_expires_domain_(self, _cmd, value, date, domain) +{ with(self) +{ + if(date) + var expires = "; expires="+date.toGMTString(); + else + var expires = ""; + if(domain) + domain = "; domain="+domain; + else + domain = ""; + _cookieValue = value; + _expires = expires; +} +},["void","CPString","CPDate","CPString"]), new objj_method(sel_getUid("_readCookieValue"), function $CPCookie___readCookieValue(self, _cmd) +{ with(self) +{ + return ""; +} +},["CPString"])]); +} + +p;10;CPCursor.jt;10454;@STATIC;1.0;t;10434;var currentCursor = nil, + cursorStack = [], + cursors = {}, + cursorURLFormat = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPCursor"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_cssString"), new objj_ivar("_isSetOnMouseEntered"), new objj_ivar("_isSetOnMouseExited")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isSetOnMouseEntered"), function $CPCursor__isSetOnMouseEntered(self, _cmd) +{ with(self) +{ +return _isSetOnMouseEntered; +} +},["id"]), +new objj_method(sel_getUid("setOnMouseEntered:"), function $CPCursor__setOnMouseEntered_(self, _cmd, newValue) +{ with(self) +{ +_isSetOnMouseEntered = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("isSetOnMouseExited"), function $CPCursor__isSetOnMouseExited(self, _cmd) +{ with(self) +{ +return _isSetOnMouseExited; +} +},["id"]), +new objj_method(sel_getUid("setOnMouseExited:"), function $CPCursor__setOnMouseExited_(self, _cmd, newValue) +{ with(self) +{ +_isSetOnMouseExited = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithCSSString:"), function $CPCursor__initWithCSSString_(self, _cmd, aString) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCursor").super_class }, "init")) + _cssString = aString; + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("_cssString"), function $CPCursor___cssString(self, _cmd) +{ with(self) +{ + return _cssString; +} +},["CPString"]), new objj_method(sel_getUid("initWithImage:hotSpot:"), function $CPCursor__initWithImage_hotSpot_(self, _cmd, image, hotSpot) +{ with(self) +{ + return objj_msgSend(self, "initWithCSSString:", "url(" + objj_msgSend(image, "filename") + ")"); +} +},["id","CPImage","CPPoint"]), new objj_method(sel_getUid("mouseEntered:"), function $CPCursor__mouseEntered_(self, _cmd, event) +{ with(self) +{ +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseExited:"), function $CPCursor__mouseExited_(self, _cmd, event) +{ with(self) +{ +} +},["void","CPEvent"]), new objj_method(sel_getUid("set"), function $CPCursor__set(self, _cmd) +{ with(self) +{ + currentCursor = self; +} +},["void"]), new objj_method(sel_getUid("push"), function $CPCursor__push(self, _cmd) +{ with(self) +{ + currentCursor = cursorStack.push(self); +} +},["void"]), new objj_method(sel_getUid("pop"), function $CPCursor__pop(self, _cmd) +{ with(self) +{ + objj_msgSend(CPCursor, "pop"); +} +},["void"]), new objj_method(sel_getUid("initWithCoder:"), function $CPCursor__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCursor").super_class }, "init")) + _cssString = objj_msgSend(coder, "decodeObjectForKey:", "CPCursorNameKey"); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPCursor__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _cssString, "CPCursorNameKey"); +} +},["void","CPCoder"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("currentCursor"), function $CPCursor__currentCursor(self, _cmd) +{ with(self) +{ + return currentCursor; +} +},["CPCursor"]), new objj_method(sel_getUid("cursorWithCSSString:"), function $CPCursor__cursorWithCSSString_(self, _cmd, cssString) +{ with(self) +{ + var cursor = cursors[cssString]; + if (typeof cursor == 'undefined') + { + cursor = objj_msgSend(objj_msgSend(CPCursor, "alloc"), "initWithCSSString:", cssString); + cursors[cssString] = cursor; + } + return cursor; +} +},["CPCursor","CPString"]), new objj_method(sel_getUid("cursorWithImageNamed:"), function $CPCursor__cursorWithImageNamed_(self, _cmd, imageName) +{ with(self) +{ + if (!cursorURLFormat) + { + cursorURLFormat = "url(" + objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", self), "resourcePath") + "/CPCursor/%@.cur)"; + if (CPBrowserIsEngine(CPGeckoBrowserEngine)) + cursorURLFormat += ", default"; + } + var url = objj_msgSend(CPString, "stringWithFormat:", cursorURLFormat, imageName); + return objj_msgSend(objj_msgSend(CPCursor, "alloc"), "initWithCSSString:", url); +} +},["CPCursor","CPString"]), new objj_method(sel_getUid("arrowCursor"), function $CPCursor__arrowCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "default"); +} +},["CPCursor"]), new objj_method(sel_getUid("crosshairCursor"), function $CPCursor__crosshairCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "crosshair"); +} +},["CPCursor"]), new objj_method(sel_getUid("IBeamCursor"), function $CPCursor__IBeamCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "text"); +} +},["CPCursor"]), new objj_method(sel_getUid("pointingHandCursor"), function $CPCursor__pointingHandCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "pointer"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeDownCursor"), function $CPCursor__resizeDownCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "s-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeUpCursor"), function $CPCursor__resizeUpCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "n-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeLeftCursor"), function $CPCursor__resizeLeftCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "w-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeRightCursor"), function $CPCursor__resizeRightCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "e-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeLeftRightCursor"), function $CPCursor__resizeLeftRightCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "col-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("resizeUpDownCursor"), function $CPCursor__resizeUpDownCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "row-resize"); +} +},["CPCursor"]), new objj_method(sel_getUid("operationNotAllowedCursor"), function $CPCursor__operationNotAllowedCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithCSSString:", "not-allowed"); +} +},["CPCursor"]), new objj_method(sel_getUid("dragCopyCursor"), function $CPCursor__dragCopyCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "copy"); +} +},["CPCursor"]), new objj_method(sel_getUid("dragLinkCursor"), function $CPCursor__dragLinkCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "alias"); +} +},["CPCursor"]), new objj_method(sel_getUid("contextualMenuCursor"), function $CPCursor__contextualMenuCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); + return objj_msgSend(CPCursor, "cursorWithCSSString:", "context-menu"); +} +},["CPCursor"]), new objj_method(sel_getUid("openHandCursor"), function $CPCursor__openHandCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPWebKitBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "-webkit-grab"); + else if (CPBrowserIsEngine(CPGeckoBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "-moz-grab"); + else if (CPBrowserIsEngine(CPOperaBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "move"); + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); +} +},["CPCursor"]), new objj_method(sel_getUid("closedHandCursor"), function $CPCursor__closedHandCursor(self, _cmd) +{ with(self) +{ + if (CPBrowserIsEngine(CPWebKitBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "-webkit-grabbing"); + else if (CPBrowserIsEngine(CPGeckoBrowserEngine)) + return objj_msgSend(CPCursor, "cursorWithCSSString:", "-moz-grabbing"); + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); +} +},["CPCursor"]), new objj_method(sel_getUid("disappearingItemCursor"), function $CPCursor__disappearingItemCursor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCursor, "cursorWithImageNamed:", CPStringFromSelector(_cmd)); +} +},["CPCursor"]), new objj_method(sel_getUid("hide"), function $CPCursor__hide(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_setCursorCSS:", "none"); +} +},["void"]), new objj_method(sel_getUid("unhide"), function $CPCursor__unhide(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_setCursorCSS:", objj_msgSend(currentCursor, "_cssString")); +} +},["void"]), new objj_method(sel_getUid("setHiddenUntilMouseMoves:"), function $CPCursor__setHiddenUntilMouseMoves_(self, _cmd, flag) +{ with(self) +{ + if (flag) + objj_msgSend(CPCursor, "hide"); + else + objj_msgSend(CPCursor, "unhide"); +} +},["void","BOOL"]), new objj_method(sel_getUid("_setCursorCSS:"), function $CPCursor___setCursorCSS_(self, _cmd, aString) +{ with(self) +{ +} +},["void","CPString"]), new objj_method(sel_getUid("pop"), function $CPCursor__pop(self, _cmd) +{ with(self) +{ + if (cursorStack.length > 1) + { + cursorStack.pop(); + currentCursor = cursorStack[cursorStack.length - 1]; + } +} +},["void"])]); +} + +p;12;CPDocument.jt;27855;@STATIC;1.0;I;21;Foundation/CPString.jI;20;Foundation/CPArray.ji;13;CPResponder.ji;13;CPSavePanel.ji;18;CPViewController.ji;20;CPWindowController.jt;27700;objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPSavePanel.j", YES); +objj_executeFile("CPViewController.j", YES); +objj_executeFile("CPWindowController.j", YES); +CPSaveOperation = 0; +CPSaveAsOperation = 1; +CPSaveToOperation = 2; +CPAutosaveOperation = 3; +CPChangeDone = 0; +CPChangeUndone = 1; +CPChangeCleared = 2; +CPChangeReadOtherContents = 3; +CPChangeAutosaved = 4; +CPDocumentWillSaveNotification = "CPDocumentWillSaveNotification"; +CPDocumentDidSaveNotification = "CPDocumentDidSaveNotification"; +CPDocumentDidFailToSaveNotification = "CPDocumentDidFailToSaveNotification"; +var CPDocumentUntitledCount = 0; +{var the_class = objj_allocateClassPair(CPResponder, "CPDocument"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window"), new objj_ivar("_view"), new objj_ivar("_viewControllersForWindowControllers"), new objj_ivar("_fileURL"), new objj_ivar("_fileType"), new objj_ivar("_windowControllers"), new objj_ivar("_untitledDocumentIndex"), new objj_ivar("_hasUndoManager"), new objj_ivar("_undoManager"), new objj_ivar("_changeCount"), new objj_ivar("_readConnection"), new objj_ivar("_writeRequest"), new objj_ivar("_canCloseAlert")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPDocument__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDocument").super_class }, "init"); + if (self) + { + _windowControllers = []; + _viewControllersForWindowControllers = objj_msgSend(CPDictionary, "dictionary"); + _hasUndoManager = YES; + _changeCount = 0; + objj_msgSend(self, "setNextResponder:", CPApp); + } + return self; +} +},["id"]), new objj_method(sel_getUid("initWithType:error:"), function $CPDocument__initWithType_error_(self, _cmd, aType, anError) +{ with(self) +{ + self = objj_msgSend(self, "init"); + if (self) + objj_msgSend(self, "setFileType:", aType); + return self; +} +},["id","CPString","{CPError}"]), new objj_method(sel_getUid("initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocument__initWithContentsOfURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, aType, aDelegate, aDidReadSelector, aContextInfo) +{ with(self) +{ + self = objj_msgSend(self, "init"); + if (self) + { + objj_msgSend(self, "setFileURL:", anAbsoluteURL); + objj_msgSend(self, "setFileType:", aType); + objj_msgSend(self, "readFromURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, aType, aDelegate, aDidReadSelector, aContextInfo); + } + return self; +} +},["id","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocument__initForURL_withContentsOfURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, absoluteContentsURL, aType, aDelegate, aDidReadSelector, aContextInfo) +{ with(self) +{ + self = objj_msgSend(self, "init"); + if (self) + { + objj_msgSend(self, "setFileURL:", anAbsoluteURL); + objj_msgSend(self, "setFileType:", aType); + objj_msgSend(self, "readFromURL:ofType:delegate:didReadSelector:contextInfo:", absoluteContentsURL, aType, aDelegate, aDidReadSelector, aContextInfo); + } + return self; +} +},["id","CPURL","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("dataOfType:error:"), function $CPDocument__dataOfType_error_(self, _cmd, aType, anError) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "dataOfType:error: must be overridden by the document subclass."); +} +},["CPData","CPString","{CPError}"]), new objj_method(sel_getUid("readFromData:ofType:error:"), function $CPDocument__readFromData_ofType_error_(self, _cmd, aData, aType, anError) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "readFromData:ofType: must be overridden by the document subclass."); +} +},["void","CPData","CPString","CPError"]), new objj_method(sel_getUid("viewControllerWillLoadCib:"), function $CPDocument__viewControllerWillLoadCib_(self, _cmd, aViewController) +{ with(self) +{ +} +},["void","CPViewController"]), new objj_method(sel_getUid("viewControllerDidLoadCib:"), function $CPDocument__viewControllerDidLoadCib_(self, _cmd, aViewController) +{ with(self) +{ +} +},["void","CPViewController"]), new objj_method(sel_getUid("firstEligibleExistingWindowController"), function $CPDocument__firstEligibleExistingWindowController(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPWindowController"]), new objj_method(sel_getUid("makeWindowControllers"), function $CPDocument__makeWindowControllers(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "makeViewAndWindowControllers"); +} +},["void"]), new objj_method(sel_getUid("makeViewAndWindowControllers"), function $CPDocument__makeViewAndWindowControllers(self, _cmd) +{ with(self) +{ + var viewCibName = objj_msgSend(self, "viewCibName"), + viewController = nil, + windowController = nil; + if (objj_msgSend(viewCibName, "length")) + viewController = objj_msgSend(objj_msgSend(CPViewController, "alloc"), "initWithCibName:bundle:owner:", viewCibName, nil, self); + if (viewController) + windowController = objj_msgSend(self, "firstEligibleExistingWindowController"); + if (!windowController) + { + var windowCibName = objj_msgSend(self, "windowCibName"); + if (objj_msgSend(windowCibName, "length")) + windowController = objj_msgSend(objj_msgSend(CPWindowController, "alloc"), "initWithWindowCibName:owner:", windowCibName, self); + else if (viewController) + { + var view = objj_msgSend(viewController, "view"), + viewFrame = objj_msgSend(view, "frame"); + viewFrame.origin = CGPointMake(50, 50); + var theWindow = objj_msgSend(objj_msgSend(CPWindow, "alloc"), "initWithContentRect:styleMask:", viewFrame, CPTitledWindowMask | CPClosableWindowMask | CPMiniaturizableWindowMask | CPResizableWindowMask); + windowController = objj_msgSend(objj_msgSend(CPWindowController, "alloc"), "initWithWindow:", theWindow); + } + } + if (windowController && viewController) + objj_msgSend(windowController, "setSupportsMultipleDocuments:", YES); + if (windowController) + objj_msgSend(self, "addWindowController:", windowController); + if (viewController) + objj_msgSend(self, "addViewController:forWindowController:", viewController, windowController); +} +},["void"]), new objj_method(sel_getUid("windowControllers"), function $CPDocument__windowControllers(self, _cmd) +{ with(self) +{ + return _windowControllers; +} +},["CPArray"]), new objj_method(sel_getUid("addWindowController:"), function $CPDocument__addWindowController_(self, _cmd, aWindowController) +{ with(self) +{ + objj_msgSend(_windowControllers, "addObject:", aWindowController); + if (objj_msgSend(aWindowController, "document") !== self) + objj_msgSend(aWindowController, "setDocument:", self); +} +},["void","CPWindowController"]), new objj_method(sel_getUid("removeWindowController:"), function $CPDocument__removeWindowController_(self, _cmd, aWindowController) +{ with(self) +{ + if (aWindowController) + objj_msgSend(_windowControllers, "removeObject:", aWindowController); + if (objj_msgSend(aWindowController, "document") === self) + objj_msgSend(aWindowController, "setDocument:", nil); +} +},["void","CPWindowController"]), new objj_method(sel_getUid("view"), function $CPDocument__view(self, _cmd) +{ with(self) +{ + return _view; +} +},["CPView"]), new objj_method(sel_getUid("viewControllers"), function $CPDocument__viewControllers(self, _cmd) +{ with(self) +{ + return objj_msgSend(_viewControllersForWindowControllers, "allValues"); +} +},["CPArray"]), new objj_method(sel_getUid("addViewController:forWindowController:"), function $CPDocument__addViewController_forWindowController_(self, _cmd, aViewController, aWindowController) +{ with(self) +{ + objj_msgSend(_viewControllersForWindowControllers, "setObject:forKey:", aViewController, objj_msgSend(aWindowController, "UID")); + if (objj_msgSend(aWindowController, "document") === self) + objj_msgSend(aWindowController, "setViewController:", aViewController); +} +},["void","CPViewController","CPWindowController"]), new objj_method(sel_getUid("removeViewController:"), function $CPDocument__removeViewController_(self, _cmd, aViewController) +{ with(self) +{ + objj_msgSend(_viewControllersForWindowControllers, "removeObject:", aViewController); +} +},["void","CPViewController"]), new objj_method(sel_getUid("viewControllerForWindowController:"), function $CPDocument__viewControllerForWindowController_(self, _cmd, aWindowController) +{ with(self) +{ + return objj_msgSend(_viewControllersForWindowControllers, "objectForKey:", objj_msgSend(aWindowController, "UID")); +} +},["CPViewController","CPWindowController"]), new objj_method(sel_getUid("showWindows"), function $CPDocument__showWindows(self, _cmd) +{ with(self) +{ + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("setDocument:"), self); + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("showWindow:"), self); +} +},["void"]), new objj_method(sel_getUid("displayName"), function $CPDocument__displayName(self, _cmd) +{ with(self) +{ + if (_fileURL) + return objj_msgSend(_fileURL, "lastPathComponent"); + if (!_untitledDocumentIndex) + _untitledDocumentIndex = ++CPDocumentUntitledCount; + if (_untitledDocumentIndex == 1) + return "Untitled"; + return "Untitled " + _untitledDocumentIndex; +} +},["CPString"]), new objj_method(sel_getUid("viewCibName"), function $CPDocument__viewCibName(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPString"]), new objj_method(sel_getUid("windowCibName"), function $CPDocument__windowCibName(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPString"]), new objj_method(sel_getUid("windowControllerDidLoadCib:"), function $CPDocument__windowControllerDidLoadCib_(self, _cmd, aWindowController) +{ with(self) +{ +} +},["void","CPWindowController"]), new objj_method(sel_getUid("windowControllerWillLoadCib:"), function $CPDocument__windowControllerWillLoadCib_(self, _cmd, aWindowController) +{ with(self) +{ +} +},["void","CPWindowController"]), new objj_method(sel_getUid("readFromURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocument__readFromURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, aType, aDelegate, aDidReadSelector, aContextInfo) +{ with(self) +{ + objj_msgSend(_readConnection, "cancel"); + _readConnection = objj_msgSend(CPURLConnection, "connectionWithRequest:delegate:", objj_msgSend(CPURLRequest, "requestWithURL:", anAbsoluteURL), self); + _readConnection.session = _CPReadSessionMake(aType, aDelegate, aDidReadSelector, aContextInfo); +} +},["void","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("fileURL"), function $CPDocument__fileURL(self, _cmd) +{ with(self) +{ + return _fileURL; +} +},["CPURL"]), new objj_method(sel_getUid("setFileURL:"), function $CPDocument__setFileURL_(self, _cmd, aFileURL) +{ with(self) +{ + if (_fileURL === aFileURL) + return; + _fileURL = aFileURL; + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:", sel_getUid("synchronizeWindowTitleWithDocumentName")); +} +},["void","CPURL"]), new objj_method(sel_getUid("saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:"), function $CPDocument__saveToURL_ofType_forSaveOperation_delegate_didSaveSelector_contextInfo_(self, _cmd, anAbsoluteURL, aTypeName, aSaveOperation, aDelegate, aDidSaveSelector, aContextInfo) +{ with(self) +{ + var data = objj_msgSend(self, "dataOfType:error:", objj_msgSend(self, "fileType"), nil), + oldChangeCount = _changeCount; + _writeRequest = objj_msgSend(CPURLRequest, "requestWithURL:", anAbsoluteURL); + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(_writeRequest, "setHTTPMethod:", "POST"); + else + objj_msgSend(_writeRequest, "setHTTPMethod:", "PUT"); + objj_msgSend(_writeRequest, "setHTTPBody:", objj_msgSend(data, "rawString")); + objj_msgSend(_writeRequest, "setValue:forHTTPHeaderField:", "close", "Connection"); + if (aSaveOperation === CPSaveOperation) + objj_msgSend(_writeRequest, "setValue:forHTTPHeaderField:", "true", "x-cappuccino-overwrite"); + if (aSaveOperation !== CPSaveToOperation) + objj_msgSend(self, "updateChangeCount:", CPChangeCleared); + var connection = objj_msgSend(CPURLConnection, "connectionWithRequest:delegate:", _writeRequest, self); + connection.session = _CPSaveSessionMake(anAbsoluteURL, aSaveOperation, oldChangeCount, aDelegate, aDidSaveSelector, aContextInfo, connection); +} +},["void","CPURL","CPString","CPSaveOperationType","id","SEL","id"]), new objj_method(sel_getUid("connection:didReceiveResponse:"), function $CPDocument__connection_didReceiveResponse_(self, _cmd, aConnection, aResponse) +{ with(self) +{ + if (!objj_msgSend(aResponse, "isKindOfClass:", objj_msgSend(CPHTTPURLResponse, "class"))) + return; + var statusCode = objj_msgSend(aResponse, "statusCode"); + if (statusCode === 200) + return; + var session = aConnection.session; + if (aConnection == _readConnection) + { + objj_msgSend(aConnection, "cancel"); + alert("There was an error retrieving the document."); + objj_msgSend(session.delegate, session.didReadSelector, self, NO, session.contextInfo); + } + else + { + if (statusCode == 409) + { + objj_msgSend(aConnection, "cancel"); + if (confirm("There already exists a file with that name, would you like to overwrite it?")) + { + objj_msgSend(_writeRequest, "setValue:forHTTPHeaderField:", "true", "x-cappuccino-overwrite"); + objj_msgSend(aConnection, "start"); + } + else + { + if (session.saveOperation != CPSaveToOperation) + { + _changeCount += session.changeCount; + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("setDocumentEdited:"), objj_msgSend(self, "isDocumentEdited")); + } + _writeRequest = nil; + objj_msgSend(session.delegate, session.didSaveSelector, self, NO, session.contextInfo); + objj_msgSend(self, "_sendDocumentSavedNotification:", NO); + } + } + } +} +},["void","CPURLConnection","CPURLResponse"]), new objj_method(sel_getUid("connection:didReceiveData:"), function $CPDocument__connection_didReceiveData_(self, _cmd, aConnection, aData) +{ with(self) +{ + var session = aConnection.session; + if (aConnection == _readConnection) + { + objj_msgSend(self, "readFromData:ofType:error:", objj_msgSend(CPData, "dataWithRawString:", aData), session.fileType, nil); + objj_msgSend(session.delegate, session.didReadSelector, self, YES, session.contextInfo); + } + else + { + if (session.saveOperation != CPSaveToOperation) + objj_msgSend(self, "setFileURL:", session.absoluteURL); + _writeRequest = nil; + objj_msgSend(session.delegate, session.didSaveSelector, self, YES, session.contextInfo); + objj_msgSend(self, "_sendDocumentSavedNotification:", YES); + } +} +},["void","CPURLConnection","CPString"]), new objj_method(sel_getUid("connection:didFailWithError:"), function $CPDocument__connection_didFailWithError_(self, _cmd, aConnection, anError) +{ with(self) +{ + var session = aConnection.session; + if (_readConnection == aConnection) + objj_msgSend(session.delegate, session.didReadSelector, self, NO, session.contextInfo); + else + { + if (session.saveOperation != CPSaveToOperation) + { + _changeCount += session.changeCount; + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("setDocumentEdited:"), objj_msgSend(self, "isDocumentEdited")); + } + _writeRequest = nil; + alert("There was an error saving the document."); + objj_msgSend(session.delegate, session.didSaveSelector, self, NO, session.contextInfo); + objj_msgSend(self, "_sendDocumentSavedNotification:", NO); + } +} +},["void","CPURLConnection","CPError"]), new objj_method(sel_getUid("connectionDidFinishLoading:"), function $CPDocument__connectionDidFinishLoading_(self, _cmd, aConnection) +{ with(self) +{ + if (_readConnection == aConnection) + _readConnection = nil; +} +},["void","CPURLConnection"]), new objj_method(sel_getUid("isDocumentEdited"), function $CPDocument__isDocumentEdited(self, _cmd) +{ with(self) +{ + return _changeCount != 0; +} +},["BOOL"]), new objj_method(sel_getUid("updateChangeCount:"), function $CPDocument__updateChangeCount_(self, _cmd, aChangeType) +{ with(self) +{ + if (aChangeType == CPChangeDone) + ++_changeCount; + else if (aChangeType == CPChangeUndone) + --_changeCount; + else if (aChangeType == CPChangeCleared) + _changeCount = 0; + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("setDocumentEdited:"), objj_msgSend(self, "isDocumentEdited")); +} +},["void","CPDocumentChangeType"]), new objj_method(sel_getUid("setFileType:"), function $CPDocument__setFileType_(self, _cmd, aType) +{ with(self) +{ + _fileType = aType; +} +},["void","CPString"]), new objj_method(sel_getUid("fileType"), function $CPDocument__fileType(self, _cmd) +{ with(self) +{ + return _fileType; +} +},["CPString"]), new objj_method(sel_getUid("hasUndoManager"), function $CPDocument__hasUndoManager(self, _cmd) +{ with(self) +{ + return _hasUndoManager; +} +},["BOOL"]), new objj_method(sel_getUid("setHasUndoManager:"), function $CPDocument__setHasUndoManager_(self, _cmd, aFlag) +{ with(self) +{ + if (_hasUndoManager == aFlag) + return; + _hasUndoManager = aFlag; + if (!_hasUndoManager) + objj_msgSend(self, "setUndoManager:", nil); +} +},["void","BOOL"]), new objj_method(sel_getUid("_undoManagerWillCloseGroup:"), function $CPDocument___undoManagerWillCloseGroup_(self, _cmd, aNotification) +{ with(self) +{ + var undoManager = objj_msgSend(aNotification, "object"); + if (objj_msgSend(undoManager, "isUndoing") || objj_msgSend(undoManager, "isRedoing")) + return; + objj_msgSend(self, "updateChangeCount:", CPChangeDone); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_undoManagerDidUndoChange:"), function $CPDocument___undoManagerDidUndoChange_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "updateChangeCount:", CPChangeUndone); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_undoManagerDidRedoChange:"), function $CPDocument___undoManagerDidRedoChange_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "updateChangeCount:", CPChangeDone); +} +},["void","CPNotification"]), new objj_method(sel_getUid("setUndoManager:"), function $CPDocument__setUndoManager_(self, _cmd, anUndoManager) +{ with(self) +{ + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_undoManager) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPUndoManagerDidUndoChangeNotification, _undoManager); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPUndoManagerDidRedoChangeNotification, _undoManager); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPUndoManagerWillCloseUndoGroupNotification, _undoManager); + } + _undoManager = anUndoManager; + if (_undoManager) + { + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_undoManagerDidUndoChange:"), CPUndoManagerDidUndoChangeNotification, _undoManager); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_undoManagerDidRedoChange:"), CPUndoManagerDidRedoChangeNotification, _undoManager); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_undoManagerWillCloseGroup:"), CPUndoManagerWillCloseUndoGroupNotification, _undoManager); + } +} +},["void","CPUndoManager"]), new objj_method(sel_getUid("undoManager"), function $CPDocument__undoManager(self, _cmd) +{ with(self) +{ + if (_hasUndoManager && !_undoManager) + objj_msgSend(self, "setUndoManager:", objj_msgSend(objj_msgSend(CPUndoManager, "alloc"), "init")); + return _undoManager; +} +},["CPUndoManager"]), new objj_method(sel_getUid("windowWillReturnUndoManager:"), function $CPDocument__windowWillReturnUndoManager_(self, _cmd, aWindow) +{ with(self) +{ + return objj_msgSend(self, "undoManager"); +} +},["CPUndoManager","CPWindow"]), new objj_method(sel_getUid("saveDocument:"), function $CPDocument__saveDocument_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "saveDocumentWithDelegate:didSaveSelector:contextInfo:", nil, nil, nil); +} +},["void","id"]), new objj_method(sel_getUid("saveDocumentWithDelegate:didSaveSelector:contextInfo:"), function $CPDocument__saveDocumentWithDelegate_didSaveSelector_contextInfo_(self, _cmd, delegate, didSaveSelector, contextInfo) +{ with(self) +{ + if (_fileURL) + { + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPDocumentWillSaveNotification, self); + objj_msgSend(self, "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:", _fileURL, objj_msgSend(self, "fileType"), CPSaveOperation, delegate, didSaveSelector, contextInfo); + } + else + objj_msgSend(self, "_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:", delegate, didSaveSelector, contextInfo); +} +},["void","id","SEL","Object"]), new objj_method(sel_getUid("saveDocumentAs:"), function $CPDocument__saveDocumentAs_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:", nil, nil, nil); +} +},["void","id"]), new objj_method(sel_getUid("_saveDocumentAsWithDelegate:didSaveSelector:contextInfo:"), function $CPDocument___saveDocumentAsWithDelegate_didSaveSelector_contextInfo_(self, _cmd, delegate, didSaveSelector, contextInfo) +{ with(self) +{ + var savePanel = objj_msgSend(CPSavePanel, "savePanel"), + response = objj_msgSend(savePanel, "runModal"); + if (!response) + return; + var saveURL = objj_msgSend(savePanel, "URL"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPDocumentWillSaveNotification, self); + objj_msgSend(self, "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:", saveURL, objj_msgSend(self, "fileType"), CPSaveAsOperation, delegate, didSaveSelector, contextInfo); +} +},["void","id","SEL","Object"]), new objj_method(sel_getUid("_sendDocumentSavedNotification:"), function $CPDocument___sendDocumentSavedNotification_(self, _cmd, didSave) +{ with(self) +{ + if (didSave) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPDocumentDidSaveNotification, self); + else + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPDocumentDidFailToSaveNotification, self); +} +},["void","BOOL"])]); +} +{ +var the_class = objj_getClass("CPDocument") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDocument\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("close"), function $CPDocument__close(self, _cmd) +{ with(self) +{ + objj_msgSend(_windowControllers, "makeObjectsPerformSelector:withObject:", sel_getUid("removeDocumentAndCloseIfNecessary:"), self); + objj_msgSend(objj_msgSend(CPDocumentController, "sharedDocumentController"), "removeDocument:", self); +} +},["void"]), new objj_method(sel_getUid("shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:"), function $CPDocument__shouldCloseWindowController_delegate_shouldCloseSelector_contextInfo_(self, _cmd, controller, delegate, selector, info) +{ with(self) +{ + if (objj_msgSend(controller, "shouldCloseDocument") || (objj_msgSend(_windowControllers, "count") < 2 && objj_msgSend(_windowControllers, "indexOfObject:", controller) !== CPNotFound)) + objj_msgSend(self, "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:", self, sel_getUid("_document:shouldClose:context:"), {delegate:delegate, selector:selector, context:info}); + else if (objj_msgSend(delegate, "respondsToSelector:", selector)) + objj_msgSend(delegate, selector, self, YES, info); +} +},["void","CPWindowController","id","SEL","Object"]), new objj_method(sel_getUid("_document:shouldClose:context:"), function $CPDocument___document_shouldClose_context_(self, _cmd, aDocument, shouldClose, context) +{ with(self) +{ + if (aDocument === self && shouldClose) + objj_msgSend(self, "close"); + objj_msgSend(context.delegate, context.selector, aDocument, shouldClose, context.context); +} +},["void","CPDocument","BOOL","Object"]), new objj_method(sel_getUid("canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:"), function $CPDocument__canCloseDocumentWithDelegate_shouldCloseSelector_contextInfo_(self, _cmd, aDelegate, aSelector, context) +{ with(self) +{ + if (!objj_msgSend(self, "isDocumentEdited")) + return objj_msgSend(aDelegate, "respondsToSelector:", aSelector) && objj_msgSend(aDelegate, aSelector, self, YES, context); + _canCloseAlert = objj_msgSend(objj_msgSend(CPAlert, "alloc"), "init"); + objj_msgSend(_canCloseAlert, "setDelegate:", self); + objj_msgSend(_canCloseAlert, "setAlertStyle:", CPWarningAlertStyle); + objj_msgSend(_canCloseAlert, "setTitle:", "Unsaved Document"); + objj_msgSend(_canCloseAlert, "setMessageText:", "Do you want to save the changes you've made to the document \"" + (objj_msgSend(self, "displayName") || objj_msgSend(self, "fileName")) + "\"?"); + objj_msgSend(_canCloseAlert, "addButtonWithTitle:", "Save"); + objj_msgSend(_canCloseAlert, "addButtonWithTitle:", "Cancel"); + objj_msgSend(_canCloseAlert, "addButtonWithTitle:", "Don't Save"); + _canCloseAlert._context = {delegate:aDelegate, selector:aSelector, context:context}; + objj_msgSend(_canCloseAlert, "runModal"); +} +},["void","id","SEL","Object"]), new objj_method(sel_getUid("alertDidEnd:returnCode:"), function $CPDocument__alertDidEnd_returnCode_(self, _cmd, alert, returnCode) +{ with(self) +{ + if (alert !== _canCloseAlert) + return; + var delegate = alert._context.delegate, + selector = alert._context.selector, + context = alert._context.context; + if (returnCode === 0) + objj_msgSend(self, "saveDocumentWithDelegate:didSaveSelector:contextInfo:", delegate, selector, context); + else + objj_msgSend(delegate, selector, self, returnCode === 2, context); + _canCloseAlert = nil; +} +},["void","CPAlert","int"])]); +} +var _CPReadSessionMake = function(aType, aDelegate, aDidReadSelector, aContextInfo) +{ + return { fileType:aType, delegate:aDelegate, didReadSelector:aDidReadSelector, contextInfo:aContextInfo }; +} +var _CPSaveSessionMake = function(anAbsoluteURL, aSaveOperation, aChangeCount, aDelegate, aDidSaveSelector, aContextInfo, aConnection) +{ + return { absoluteURL:anAbsoluteURL, saveOperation:aSaveOperation, changeCount:aChangeCount, delegate:aDelegate, didSaveSelector:aDidSaveSelector, contextInfo:aContextInfo, connection:aConnection }; +} + +p;22;CPDocumentController.jt;14881;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPBundle.ji;12;CPDocument.ji;13;CPOpenPanel.jt;14774;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("CPDocument.j", YES); +objj_executeFile("CPOpenPanel.j", YES);; +var CPSharedDocumentController = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPDocumentController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_documents"), new objj_ivar("_documentTypes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPDocumentController__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDocumentController").super_class }, "init"); + if (self) + { + _documents = objj_msgSend(objj_msgSend(CPArray, "alloc"), "init"); + if (!CPSharedDocumentController) + CPSharedDocumentController = self; + _documentTypes = objj_msgSend(objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "infoDictionary"), "objectForKey:", "CPBundleDocumentTypes"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("documentForURL:"), function $CPDocumentController__documentForURL_(self, _cmd, aURL) +{ with(self) +{ + var index = 0, + count = objj_msgSend(_documents, "count"); + for (; index < count; ++index) + { + var theDocument = _documents[index]; + if (objj_msgSend(objj_msgSend(theDocument, "fileURL"), "isEqual:", aURL)) + return theDocument; + } + return nil; +} +},["CPDocument","CPURL"]), new objj_method(sel_getUid("openUntitledDocumentOfType:display:"), function $CPDocumentController__openUntitledDocumentOfType_display_(self, _cmd, aType, shouldDisplay) +{ with(self) +{ + var theDocument = objj_msgSend(self, "makeUntitledDocumentOfType:error:", aType, nil); + if (theDocument) + objj_msgSend(self, "addDocument:", theDocument); + if (shouldDisplay) + { + objj_msgSend(theDocument, "makeWindowControllers"); + objj_msgSend(theDocument, "showWindows"); + } + return theDocument; +} +},["void","CPString","BOOL"]), new objj_method(sel_getUid("makeUntitledDocumentOfType:error:"), function $CPDocumentController__makeUntitledDocumentOfType_error_(self, _cmd, aType, anError) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "documentClassForType:", aType), "alloc"), "initWithType:error:", aType, anError); +} +},["CPDocument","CPString","{CPError}"]), new objj_method(sel_getUid("openDocumentWithContentsOfURL:display:error:"), function $CPDocumentController__openDocumentWithContentsOfURL_display_error_(self, _cmd, anAbsoluteURL, shouldDisplay, anError) +{ with(self) +{ + var result = objj_msgSend(self, "documentForURL:", anAbsoluteURL); + if (!result) + { + var type = objj_msgSend(self, "typeForContentsOfURL:error:", anAbsoluteURL, anError); + result = objj_msgSend(self, "makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, type, self, sel_getUid("document:didRead:contextInfo:"), objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", shouldDisplay, "shouldDisplay")); + objj_msgSend(self, "addDocument:", result); + if (result) + objj_msgSend(self, "noteNewRecentDocument:", result); + } + else if (shouldDisplay) + objj_msgSend(result, "showWindows"); + return result; +} +},["CPDocument","CPURL","BOOL","CPError"]), new objj_method(sel_getUid("reopenDocumentForURL:withContentsOfURL:error:"), function $CPDocumentController__reopenDocumentForURL_withContentsOfURL_error_(self, _cmd, anAbsoluteURL, absoluteContentsURL, anError) +{ with(self) +{ + return objj_msgSend(self, "makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, absoluteContentsURL, objj_msgSend(objj_msgSend(_documentTypes, "objectAtIndex:", 0), "objectForKey:", "CPBundleTypeName"), self, sel_getUid("document:didRead:contextInfo:"), nil); +} +},["CPDocument","CPURL","CPURL","CPError"]), new objj_method(sel_getUid("makeDocumentWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocumentController__makeDocumentWithContentsOfURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, aType, aDelegate, aSelector, aContextInfo) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "documentClassForType:", aType), "alloc"), "initWithContentsOfURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, aType, aDelegate, aSelector, aContextInfo); +} +},["CPDocument","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("makeDocumentForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:"), function $CPDocumentController__makeDocumentForURL_withContentsOfURL_ofType_delegate_didReadSelector_contextInfo_(self, _cmd, anAbsoluteURL, absoluteContentsURL, aType, aDelegate, aSelector, aContextInfo) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "documentClassForType:", aType), "alloc"), "initForURL:withContentsOfURL:ofType:delegate:didReadSelector:contextInfo:", anAbsoluteURL, absoluteContentsURL, aType, aDelegate, aSelector, aContextInfo); +} +},["CPDocument","CPURL","CPURL","CPString","id","SEL","id"]), new objj_method(sel_getUid("document:didRead:contextInfo:"), function $CPDocumentController__document_didRead_contextInfo_(self, _cmd, aDocument, didRead, aContextInfo) +{ with(self) +{ + if (!didRead) + return; + objj_msgSend(aDocument, "makeWindowControllers"); + if (objj_msgSend(aContextInfo, "objectForKey:", "shouldDisplay")) + objj_msgSend(aDocument, "showWindows"); +} +},["void","CPDocument","BOOL","id"]), new objj_method(sel_getUid("newDocument:"), function $CPDocumentController__newDocument_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "openUntitledDocumentOfType:display:", objj_msgSend(objj_msgSend(_documentTypes, "objectAtIndex:", 0), "objectForKey:", "CPBundleTypeName"), YES); +} +},["CFAction","id"]), new objj_method(sel_getUid("openDocument:"), function $CPDocumentController__openDocument_(self, _cmd, aSender) +{ with(self) +{ + var openPanel = objj_msgSend(CPOpenPanel, "openPanel"); + objj_msgSend(openPanel, "runModal"); + var URLs = objj_msgSend(openPanel, "URLs"), + index = 0, + count = objj_msgSend(URLs, "count"); + for (; index < count; ++index) + objj_msgSend(self, "openDocumentWithContentsOfURL:display:error:", objj_msgSend(CPURL, "URLWithString:", URLs[index]), YES, nil); +} +},["void","id"]), new objj_method(sel_getUid("documents"), function $CPDocumentController__documents(self, _cmd) +{ with(self) +{ + return _documents; +} +},["CPArray"]), new objj_method(sel_getUid("addDocument:"), function $CPDocumentController__addDocument_(self, _cmd, aDocument) +{ with(self) +{ + objj_msgSend(_documents, "addObject:", aDocument); +} +},["void","CPDocument"]), new objj_method(sel_getUid("removeDocument:"), function $CPDocumentController__removeDocument_(self, _cmd, aDocument) +{ with(self) +{ + objj_msgSend(_documents, "removeObjectIdenticalTo:", aDocument); +} +},["void","CPDocument"]), new objj_method(sel_getUid("defaultType"), function $CPDocumentController__defaultType(self, _cmd) +{ with(self) +{ + return objj_msgSend(_documentTypes[0], "objectForKey:", "CPBundleTypeName"); +} +},["CPString"]), new objj_method(sel_getUid("typeForContentsOfURL:error:"), function $CPDocumentController__typeForContentsOfURL_error_(self, _cmd, anAbsoluteURL, outError) +{ with(self) +{ + var index = 0, + count = _documentTypes.length, + extension = objj_msgSend(objj_msgSend(anAbsoluteURL, "pathExtension"), "lowercaseString"), + starType = nil; + for (; index < count; ++index) + { + var documentType = _documentTypes[index], + extensions = objj_msgSend(documentType, "objectForKey:", "CFBundleTypeExtensions"), + extensionIndex = 0, + extensionCount = extensions.length; + for (; extensionIndex < extensionCount; ++extensionIndex) + { + var thisExtension = objj_msgSend(extensions[extensionIndex], "lowercaseString"); + if (thisExtension === extension) + return objj_msgSend(documentType, "objectForKey:", "CPBundleTypeName"); + if (thisExtension === "****") + starType = objj_msgSend(documentType, "objectForKey:", "CPBundleTypeName"); + } + } + return starType || objj_msgSend(self, "defaultType"); +} +},["CPString","CPURL","CPError"]), new objj_method(sel_getUid("_infoForType:"), function $CPDocumentController___infoForType_(self, _cmd, aType) +{ with(self) +{ + var i = 0, + count = objj_msgSend(_documentTypes, "count"); + for (;i < count; ++i) + { + var documentType = _documentTypes[i]; + if (objj_msgSend(documentType, "objectForKey:", "CPBundleTypeName") == aType) + return documentType; + } + return nil; +} +},["CPDictionary","CPString"]), new objj_method(sel_getUid("documentClassForType:"), function $CPDocumentController__documentClassForType_(self, _cmd, aType) +{ with(self) +{ + var className = objj_msgSend(objj_msgSend(self, "_infoForType:", aType), "objectForKey:", "CPDocumentClass"); + return className ? CPClassFromString(className) : nil; +} +},["Class","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sharedDocumentController"), function $CPDocumentController__sharedDocumentController(self, _cmd) +{ with(self) +{ + if (!CPSharedDocumentController) + objj_msgSend(objj_msgSend(self, "alloc"), "init"); + return CPSharedDocumentController; +} +},["id"])]); +} +{ +var the_class = objj_getClass("CPDocumentController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:"), function $CPDocumentController__closeAllDocumentsWithDelegate_didCloseAllSelector_contextInfo_(self, _cmd, aDelegate, didCloseSelector, info) +{ with(self) +{ + var context = { + delegate: aDelegate, + selector: didCloseSelector, + context: info + }; + objj_msgSend(self, "_closeDocumentsStartingWith:shouldClose:context:", nil, YES, context); +} +},["void","id","SEL","Object"]), new objj_method(sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"), function $CPDocumentController___closeDocumentsStartingWith_shouldClose_context_(self, _cmd, aDocument, shouldClose, context) +{ with(self) +{ + if (shouldClose) + { + objj_msgSend(aDocument, "close"); + if (objj_msgSend(objj_msgSend(self, "documents"), "count") > 0) + { + objj_msgSend(objj_msgSend(objj_msgSend(self, "documents"), "lastObject"), "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:", self, sel_getUid("_closeDocumentsStartingWith:shouldClose:context:"), context); + return; + } + } + if (objj_msgSend(context.delegate, "respondsToSelector:", context.selector)) + objj_msgSend(context.delegate, context.selector, self, objj_msgSend(objj_msgSend(self, "documents"), "count") === 0, context.context); +} +},["void","CPDocument","BOOL","Object"])]); +} +{ +var the_class = objj_getClass("CPDocumentController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDocumentController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("recentDocumentURLs"), function $CPDocumentController__recentDocumentURLs(self, _cmd) +{ with(self) +{ + if (typeof window["cpRecentDocumentURLs"] === 'function') + return window.cpRecentDocumentURLs(); + return []; +} +},["CPArray"]), new objj_method(sel_getUid("clearRecentDocuments:"), function $CPDocumentController__clearRecentDocuments_(self, _cmd, sender) +{ with(self) +{ + if (typeof window["cpClearRecentDocuments"] === 'function') + window.cpClearRecentDocuments(); + objj_msgSend(self, "_updateRecentDocumentsMenu"); +} +},["void","id"]), new objj_method(sel_getUid("noteNewRecentDocument:"), function $CPDocumentController__noteNewRecentDocument_(self, _cmd, aDocument) +{ with(self) +{ + objj_msgSend(self, "noteNewRecentDocumentURL:", objj_msgSend(objj_msgSend(aDocument, "fileURL"), "absoluteString")); +} +},["void","CPDocument"]), new objj_method(sel_getUid("noteNewRecentDocumentURL:"), function $CPDocumentController__noteNewRecentDocumentURL_(self, _cmd, aURL) +{ with(self) +{ + if (typeof window["cpNoteNewRecentDocumentPath"] === 'function') + window.cpNoteNewRecentDocumentPath(aURL); + objj_msgSend(self, "_updateRecentDocumentsMenu"); +} +},["void","CPString"]), new objj_method(sel_getUid("_removeAllRecentDocumentsFromMenu:"), function $CPDocumentController___removeAllRecentDocumentsFromMenu_(self, _cmd, aMenu) +{ with(self) +{ + var items = objj_msgSend(aMenu, "itemArray"), + count = objj_msgSend(items, "count"); + while (count--) + { + var item = items[count]; + if (objj_msgSend(item, "action") === sel_getUid("_openRecentDocument:")) + objj_msgSend(aMenu, "removeItemAtIndex:", count); + } +} +},["void","CPMenu"]), new objj_method(sel_getUid("_updateRecentDocumentsMenu"), function $CPDocumentController___updateRecentDocumentsMenu(self, _cmd) +{ with(self) +{ + var menu = objj_msgSend(objj_msgSend(CPApp, "mainMenu"), "_menuWithName:", "_CPRecentDocumentsMenu"), + recentDocuments = objj_msgSend(self, "recentDocumentURLs"), + menuItems = objj_msgSend(menu, "itemArray"), + documentCount = objj_msgSend(recentDocuments, "count"), + menuItemCount = objj_msgSend(menuItems, "count"); + objj_msgSend(self, "_removeAllRecentDocumentsFromMenu:", menu); + if (menuItemCount) + { + if (!documentCount) + { + if (objj_msgSend(menuItems[0], "isSeparatorItem")) + objj_msgSend(menu, "removeItemAtIndex:", 0); + } + else + { + if (!objj_msgSend(menuItems[0], "isSeparatorItem")) + objj_msgSend(menu, "insertItem:atIndex:", objj_msgSend(CPMenuItem, "separatorItem"), 0); + } + } + while (documentCount--) + { + var path = recentDocuments[documentCount], + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", objj_msgSend(path, "lastPathComponent"), sel_getUid("_openRecentDocument:"), nil); + objj_msgSend(item, "setTag:", path); + objj_msgSend(menu, "insertItem:atIndex:", item, 0); + } +} +},["void"]), new objj_method(sel_getUid("_openRecentDocument:"), function $CPDocumentController___openRecentDocument_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "openDocumentWithContentsOfURL:display:error:", objj_msgSend(sender, "tag"), YES, nil); +} +},["void","id"])]); +} + +p;14;CPDragServer.jt;21628;@STATIC;1.0;I;15;AppKit/CPView.jI;16;AppKit/CPEvent.jI;21;AppKit/CPPasteboard.jI;20;AppKit/CPImageView.jt;21516;objj_executeFile("AppKit/CPView.j", NO); +objj_executeFile("AppKit/CPEvent.j", NO); +objj_executeFile("AppKit/CPPasteboard.j", NO); +objj_executeFile("AppKit/CPImageView.j", NO); +CPDragOperationNone = 0, +CPDragOperationCopy = 1 << 1, +CPDragOperationLink = 1 << 1, +CPDragOperationGeneric = 1 << 2, +CPDragOperationPrivate = 1 << 3, +CPDragOperationMove = 1 << 4, +CPDragOperationDelete = 1 << 5, +CPDragOperationEvery = -1; +var CPDragServerPreviousEvent = nil, + CPDragServerPeriodicUpdateInterval = 0.05; +var CPSharedDragServer = nil; +var CPDragServerSource = nil; +var CPDragServerDraggingInfo = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPDraggingInfo"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("draggingPasteboard"), function $CPDraggingInfo__draggingPasteboard(self, _cmd) +{ with(self) +{ + if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + return objj_msgSend(_CPDOMDataTransferPasteboard, "DOMDataTransferPasteboard"); + return objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingPasteboard"); +} +},["CPPasteboard"]), new objj_method(sel_getUid("draggingSource"), function $CPDraggingInfo__draggingSource(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingSource"); +} +},["id"]), new objj_method(sel_getUid("draggingLocation"), function $CPDraggingInfo__draggingLocation(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingLocation"); +} +},["CPPoint"]), new objj_method(sel_getUid("draggingDestinationWindow"), function $CPDraggingInfo__draggingDestinationWindow(self, _cmd) +{ with(self) +{ + return (objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingDestination"), "isKindOfClass:", objj_msgSend(CPWindow, "class")) ? objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingDestination") : objj_msgSend(objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggingDestination"), "window")); +} +},["CPWindow"]), new objj_method(sel_getUid("draggedImage"), function $CPDraggingInfo__draggedImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "draggedView"), "image"); +} +},["CPImage"]), new objj_method(sel_getUid("draggedImageLocation"), function $CPDraggingInfo__draggedImageLocation(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "draggedViewLocation"); +} +},["CGPoint"]), new objj_method(sel_getUid("draggedView"), function $CPDraggingInfo__draggedView(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "draggedView"); +} +},["CPView"]), new objj_method(sel_getUid("draggedViewLocation"), function $CPDraggingInfo__draggedViewLocation(self, _cmd) +{ with(self) +{ + var dragServer = objj_msgSend(CPDragServer, "sharedDragServer"); + return objj_msgSend((objj_msgSend(objj_msgSend(dragServer, "draggingDestination"), "isKindOfClass:", objj_msgSend(CPWindow, "class")) ? objj_msgSend(dragServer, "draggingDestination") : objj_msgSend(objj_msgSend(dragServer, "draggingDestination"), "window")), "convertPlatformWindowToBase:", objj_msgSend(objj_msgSend(dragServer, "draggedView"), "frame").origin); +} +},["CGPoint"])]); +} +var CPDraggingSource_draggedImage_movedTo_ = 1 << 0, + CPDraggingSource_draggedImage_endedAt_operation_ = 1 << 1, + CPDraggingSource_draggedView_movedTo_ = 1 << 2, + CPDraggingSource_draggedView_endedAt_operation_ = 1 << 3; +{var the_class = objj_allocateClassPair(CPObject, "CPDragServer"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isDragging"), new objj_ivar("_draggedWindow"), new objj_ivar("_draggedView"), new objj_ivar("_imageView"), new objj_ivar("_isDraggingImage"), new objj_ivar("_draggingOffset"), new objj_ivar("_draggingPasteboard"), new objj_ivar("_draggingSource"), new objj_ivar("_implementedDraggingSourceMethods"), new objj_ivar("_draggingLocation"), new objj_ivar("_draggingDestination"), new objj_ivar("_draggingDestinationWantsPeriodicUpdates"), new objj_ivar("_startDragLocation"), new objj_ivar("_shouldSlideBack"), new objj_ivar("_dragOperation"), new objj_ivar("_draggingUpdateTimer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isDragging"), function $CPDragServer__isDragging(self, _cmd) +{ with(self) +{ +return _isDragging; +} +},["id"]), +new objj_method(sel_getUid("draggedWindow"), function $CPDragServer__draggedWindow(self, _cmd) +{ with(self) +{ +return _draggedWindow; +} +},["id"]), +new objj_method(sel_getUid("draggedView"), function $CPDragServer__draggedView(self, _cmd) +{ with(self) +{ +return _draggedView; +} +},["id"]), +new objj_method(sel_getUid("draggingOffset"), function $CPDragServer__draggingOffset(self, _cmd) +{ with(self) +{ +return _draggingOffset; +} +},["id"]), +new objj_method(sel_getUid("draggingPasteboard"), function $CPDragServer__draggingPasteboard(self, _cmd) +{ with(self) +{ +return _draggingPasteboard; +} +},["id"]), +new objj_method(sel_getUid("draggingSource"), function $CPDragServer__draggingSource(self, _cmd) +{ with(self) +{ +return _draggingSource; +} +},["id"]), new objj_method(sel_getUid("init"), function $CPDragServer__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDragServer").super_class }, "init"); + if (self) + { + _draggedWindow = objj_msgSend(objj_msgSend(CPWindow, "alloc"), "initWithContentRect:styleMask:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }, CPBorderlessWindowMask); + objj_msgSend(_draggedWindow, "setLevel:", CPDraggingWindowLevel); + } + return self; +} +},["id"]), new objj_method(sel_getUid("draggingDestination"), function $CPDragServer__draggingDestination(self, _cmd) +{ with(self) +{ + return _draggingDestination; +} +},["id"]), new objj_method(sel_getUid("draggingLocation"), function $CPDragServer__draggingLocation(self, _cmd) +{ with(self) +{ + return _draggingLocation +} +},["CGPoint"]), new objj_method(sel_getUid("draggingStartedInPlatformWindow:globalLocation:"), function $CPDragServer__draggingStartedInPlatformWindow_globalLocation_(self, _cmd, aPlatformWindow, aLocation) +{ with(self) +{ + if (_isDraggingImage) + { + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedImage:beganAt:"))) + objj_msgSend(_draggingSource, "draggedImage:beganAt:", objj_msgSend(_draggedView, "image"), aLocation); + } + else + { + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedView:beganAt:"))) + objj_msgSend(_draggingSource, "draggedView:beganAt:", _draggedView, aLocation); + } + if (!objj_msgSend(CPPlatform, "supportsDragAndDrop")) + objj_msgSend(_draggedWindow, "orderFront:", self); +} +},["void","CPPlatformWindow","CGPoint"]), new objj_method(sel_getUid("draggingSourceUpdatedWithGlobalLocation:"), function $CPDragServer__draggingSourceUpdatedWithGlobalLocation_(self, _cmd, aGlobalLocation) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "supportsDragAndDrop")) + objj_msgSend(_draggedWindow, "setFrameOrigin:", { x:aGlobalLocation.x - _draggingOffset.width, y:aGlobalLocation.y - _draggingOffset.height }); + if (_implementedDraggingSourceMethods & CPDraggingSource_draggedImage_movedTo_) + objj_msgSend(_draggingSource, "draggedImage:movedTo:", objj_msgSend(_draggedView, "image"), aGlobalLocation); + else if (_implementedDraggingSourceMethods & CPDraggingSource_draggedView_movedTo_) + objj_msgSend(_draggingSource, "draggedView:movedTo:", _draggedView, aGlobalLocation); +} +},["void","CGPoint"]), new objj_method(sel_getUid("draggingUpdatedInPlatformWindow:location:"), function $CPDragServer__draggingUpdatedInPlatformWindow_location_(self, _cmd, aPlatformWindow, aLocation) +{ with(self) +{ + objj_msgSend(_draggingUpdateTimer, "invalidate"); + _draggingUpdateTimer = nil; + var dragOperation = CPDragOperationCopy; + var draggingDestination = objj_msgSend(aPlatformWindow, "_dragHitTest:pasteboard:", aLocation, objj_msgSend(CPDragServerDraggingInfo, "draggingPasteboard")); + if (draggingDestination) + _draggingLocation = objj_msgSend((objj_msgSend(draggingDestination, "isKindOfClass:", objj_msgSend(CPWindow, "class")) ? draggingDestination : objj_msgSend(draggingDestination, "window")), "convertPlatformWindowToBase:", aLocation); + if(draggingDestination !== _draggingDestination) + { + if (objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("draggingExited:"))) + objj_msgSend(_draggingDestination, "draggingExited:", CPDragServerDraggingInfo); + _draggingDestination = draggingDestination; + if (objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("wantsPeriodicDraggingUpdates"))) + _draggingDestinationWantsPeriodicUpdates = objj_msgSend(_draggingDestination, "wantsPeriodicDraggingUpdates"); + else + _draggingDestinationWantsPeriodicUpdates = YES; + if (objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("draggingEntered:"))) + dragOperation = objj_msgSend(_draggingDestination, "draggingEntered:", CPDragServerDraggingInfo); + } + else if (objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("draggingUpdated:"))) + dragOperation = objj_msgSend(_draggingDestination, "draggingUpdated:", CPDragServerDraggingInfo); + if (!_draggingDestination) + dragOperation = CPDragOperationNone; + else + { + if (_draggingDestinationWantsPeriodicUpdates) + _draggingUpdateTimer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", CPDragServerPeriodicUpdateInterval, self, sel_getUid("_sendPeriodicDraggingUpdate:"), objj_msgSend(CPDictionary, "dictionaryWithJSObject:", {platformWindow:aPlatformWindow, location:aLocation}), NO); + var scrollView = objj_msgSend(_draggingDestination, "isKindOfClass:", objj_msgSend(CPView, "class")) ? objj_msgSend(_draggingDestination, "enclosingScrollView") : nil; + if (scrollView) + { + var contentView = objj_msgSend(scrollView, "contentView"), + bounds = objj_msgSend(contentView, "bounds"), + insetBounds = CGRectInset(bounds, 10, 10), + eventLocation = objj_msgSend(contentView, "convertPoint:fromView:", _draggingLocation, nil), + deltaX = 0, + deltaY = 0; + if (!CGRectContainsPoint(insetBounds, eventLocation)) + { + if (objj_msgSend(scrollView, "hasVerticalScroller")) + { + if (eventLocation.y < CGRectGetMinY(insetBounds)) + deltaY = CGRectGetMinY(insetBounds) - eventLocation.y; + else if (eventLocation.y > CGRectGetMaxY(insetBounds)) + deltaY = CGRectGetMaxY(insetBounds) - eventLocation.y; + if (deltaY < -insetBounds.size.height) + deltaY = -insetBounds.size.height; + if (deltaY > insetBounds.size.height) + deltaY = insetBounds.size.height; + } + if (objj_msgSend(scrollView, "hasHorizontalScroller")) + { + if (eventLocation.x < CGRectGetMinX(insetBounds)) + deltaX = CGRectGetMinX(insetBounds) - eventLocation.x; + else if (eventLocation.x > CGRectGetMaxX(insetBounds)) + deltaX = CGRectGetMaxX(insetBounds) - eventLocation.x; + if (deltaX < -insetBounds.size.width) + deltaX = -insetBounds.size.width; + if (deltaX > insetBounds.size.width) + deltaX = insetBounds.size.width; + } + objj_msgSend(contentView, "scrollToPoint:", CGPointMake(bounds.origin.x - deltaX, bounds.origin.y - deltaY)); + } + } + } + return dragOperation; +} +},["CPDragOperation","CPPlatformWindow","CGPoint"]), new objj_method(sel_getUid("_sendPeriodicDraggingUpdate:"), function $CPDragServer___sendPeriodicDraggingUpdate_(self, _cmd, aTimer) +{ with(self) +{ + var userInfo = objj_msgSend(aTimer, "userInfo"); + _dragOperation = objj_msgSend(self, "draggingUpdatedInPlatformWindow:location:", objj_msgSend(userInfo, "objectForKey:", "platformWindow"), objj_msgSend(userInfo, "objectForKey:", "location")); +} +},["void","CPTimer"]), new objj_method(sel_getUid("draggingEndedInPlatformWindow:globalLocation:operation:"), function $CPDragServer__draggingEndedInPlatformWindow_globalLocation_operation_(self, _cmd, aPlatformWindow, aLocation, anOperation) +{ with(self) +{ + objj_msgSend(_draggingUpdateTimer, "invalidate"); + _draggingUpdateTimer = nil; + objj_msgSend(_draggedView, "removeFromSuperview"); + if (!objj_msgSend(CPPlatform, "supportsDragAndDrop")) + objj_msgSend(_draggedWindow, "orderOut:", self); + if (_implementedDraggingSourceMethods & CPDraggingSource_draggedImage_endedAt_operation_) + objj_msgSend(_draggingSource, "draggedImage:endedAt:operation:", objj_msgSend(_draggedView, "image"), aLocation, anOperation); + else if (_implementedDraggingSourceMethods & CPDraggingSource_draggedView_endedAt_operation_) + objj_msgSend(_draggingSource, "draggedView:endedAt:operation:", _draggedView, aLocation, anOperation); + _isDragging = NO; +} +},["void","CPPlatformWindow","CGPoint","CPDragOperation"]), new objj_method(sel_getUid("performDragOperationInPlatformWindow:"), function $CPDragServer__performDragOperationInPlatformWindow_(self, _cmd, aPlatformWindow) +{ with(self) +{ + if (_draggingDestination && + (!objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("prepareForDragOperation:")) || objj_msgSend(_draggingDestination, "prepareForDragOperation:", CPDragServerDraggingInfo)) && + (!objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("performDragOperation:")) || objj_msgSend(_draggingDestination, "performDragOperation:", CPDragServerDraggingInfo)) && + objj_msgSend(_draggingDestination, "respondsToSelector:", sel_getUid("concludeDragOperation:"))) + objj_msgSend(_draggingDestination, "concludeDragOperation:", CPDragServerDraggingInfo); +} +},["void","CPPlatformWindow"]), new objj_method(sel_getUid("dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:"), function $CPDragServer__dragView_fromWindow_at_offset_event_pasteboard_source_slideBack_(self, _cmd, aView, aWindow, viewLocation, mouseOffset, mouseDownEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + _isDragging = YES; + _draggedView = aView; + _draggingPasteboard = aPasteboard || objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard); + _draggingSource = aSourceObject; + _draggingDestination = nil; + _shouldSlideBack = slideBack; + var mouseDownWindow = objj_msgSend(mouseDownEvent, "window"), + mouseDownEventLocation = objj_msgSend(mouseDownEvent, "locationInWindow"); + if (mouseDownEventLocation) + { + if (mouseDownWindow) + mouseDownEventLocation = objj_msgSend(mouseDownWindow, "convertBaseToGlobal:", mouseDownEventLocation); + _draggingOffset = { width:mouseDownEventLocation.x - viewLocation.x, height:mouseDownEventLocation.y - viewLocation.y }; + } + else + _draggingOffset = { width:0.0, height:0.0 }; + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(_draggedWindow, "setPlatformWindow:", objj_msgSend(aWindow, "platformWindow")); + objj_msgSend(aView, "setFrameOrigin:", { x:0.0, y:0.0 }); + var mouseLocation = objj_msgSend(CPEvent, "mouseLocation"); + _startDragLocation = { x:mouseLocation.x - _draggingOffset.width, y:mouseLocation.y - _draggingOffset.height }; + objj_msgSend(_draggedWindow, "setFrameOrigin:", _startDragLocation); + objj_msgSend(_draggedWindow, "setFrameSize:", objj_msgSend(aView, "frame").size); + objj_msgSend(objj_msgSend(_draggedWindow, "contentView"), "addSubview:", aView); + _implementedDraggingSourceMethods = 0; + if (_draggedView === _imageView) + { + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedImage:movedTo:"))) + _implementedDraggingSourceMethods |= CPDraggingSource_draggedImage_movedTo_; + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedImage:endedAt:operation:"))) + _implementedDraggingSourceMethods |= CPDraggingSource_draggedImage_endedAt_operation_; + } + else + { + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedView:movedTo:"))) + _implementedDraggingSourceMethods |= CPDraggingSource_draggedView_movedTo_; + if (objj_msgSend(_draggingSource, "respondsToSelector:", sel_getUid("draggedView:endedAt:operation:"))) + _implementedDraggingSourceMethods |= CPDraggingSource_draggedView_endedAt_operation_; + } + if (!objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + objj_msgSend(self, "draggingStartedInPlatformWindow:globalLocation:", objj_msgSend(aWindow, "platformWindow"), mouseLocation); + objj_msgSend(self, "trackDragging:", mouseDownEvent); + } +} +},["void","CPView","CPWindow","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:"), function $CPDragServer__dragImage_fromWindow_at_offset_event_pasteboard_source_slideBack_(self, _cmd, anImage, aWindow, imageLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + _isDraggingImage = YES; + var imageSize = objj_msgSend(anImage, "size"); + if (!_imageView) + _imageView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:imageSize.width, height:imageSize.height } }); + objj_msgSend(_imageView, "setImage:", anImage); + objj_msgSend(self, "dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:", _imageView, aWindow, imageLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPImage","CPWindow","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("trackDragging:"), function $CPDragServer__trackDragging_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + platformWindow = objj_msgSend(_draggedWindow, "platformWindow"), + platformWindowLocation = objj_msgSend(objj_msgSend(anEvent, "window"), "convertBaseToPlatformWindow:", objj_msgSend(anEvent, "locationInWindow")); + if (type === CPLeftMouseUp) + { + if (_dragOperation !== CPDragOperationNone) + objj_msgSend(self, "performDragOperationInPlatformWindow:", platformWindow); + objj_msgSend(self, "draggingEndedInPlatformWindow:globalLocation:operation:", platformWindow, platformWindowLocation, _dragOperation); + return; + } + else if (type === CPKeyDown) + { + var keyCode = objj_msgSend(anEvent, "keyCode"); + if (keyCode === CPEscapeKeyCode) + { + _dragOperation = CPDragOperationNone; + objj_msgSend(self, "draggingEndedInPlatformWindow:globalLocation:operation:", platformWindow, CGPointMakeZero(), _dragOperation); + return; + } + } + else + { + objj_msgSend(self, "draggingSourceUpdatedWithGlobalLocation:", platformWindowLocation); + _dragOperation = objj_msgSend(self, "draggingUpdatedInPlatformWindow:location:", platformWindow, platformWindowLocation); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackDragging:"), CPMouseMovedMask | CPLeftMouseDraggedMask | CPLeftMouseUpMask | CPKeyDownMask, nil, 0, NO); +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPDragServer__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(CPDragServer, "class")) + return; + CPDragServerDraggingInfo = objj_msgSend(objj_msgSend(CPDraggingInfo, "alloc"), "init"); +} +},["void"]), new objj_method(sel_getUid("sharedDragServer"), function $CPDragServer__sharedDragServer(self, _cmd) +{ with(self) +{ + if (!CPSharedDragServer) + CPSharedDragServer = objj_msgSend(objj_msgSend(CPDragServer, "alloc"), "init"); + return CPSharedDragServer; +} +},["CPDragServer"])]); +} +{ +var the_class = objj_getClass("CPWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_dragHitTest:pasteboard:"), function $CPWindow___dragHitTest_pasteboard_(self, _cmd, aPoint, aPasteboard) +{ with(self) +{ + if (!_inclusiveRegisteredDraggedTypes) + return nil; + var adjustedPoint = objj_msgSend(self, "convertPlatformWindowToBase:", aPoint), + hitView = objj_msgSend(_windowView, "hitTest:", adjustedPoint); + while (hitView && !objj_msgSend(aPasteboard, "availableTypeFromArray:", objj_msgSend(hitView, "registeredDraggedTypes"))) + hitView = objj_msgSend(hitView, "superview"); + if (hitView) + return hitView; + if (objj_msgSend(aPasteboard, "availableTypeFromArray:", objj_msgSend(self, "registeredDraggedTypes"))) + return self; + return nil; +} +},["id","CGPoint","CPPasteboard"])]); +} + +p;9;CPEvent.jt;18147;@STATIC;1.0;I;21;Foundation/CPObject.ji;8;CPText.jt;18089;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CPText.j", YES); +CPLeftMouseDown = 1; +CPLeftMouseUp = 2; +CPRightMouseDown = 3; +CPRightMouseUp = 4; +CPMouseMoved = 5; +CPLeftMouseDragged = 6; +CPRightMouseDragged = 7; +CPMouseEntered = 8; +CPMouseExited = 9; +CPKeyDown = 10; +CPKeyUp = 11; +CPFlagsChanged = 12; +CPAppKitDefined = 13; +CPSystemDefined = 14; +CPApplicationDefined = 15; +CPPeriodic = 16; +CPCursorUpdate = 17; +CPScrollWheel = 22; +CPOtherMouseDown = 25; +CPOtherMouseUp = 26; +CPOtherMouseDragged = 27; +CPTouchStart = 28; +CPTouchMove = 29; +CPTouchEnd = 30; +CPTouchCancel = 31; +CPAlphaShiftKeyMask = 1 << 16; +CPShiftKeyMask = 1 << 17; +CPControlKeyMask = 1 << 18; +CPAlternateKeyMask = 1 << 19; +CPCommandKeyMask = 1 << 20; +CPNumericPadKeyMask = 1 << 21; +CPHelpKeyMask = 1 << 22; +CPFunctionKeyMask = 1 << 23; +CPDeviceIndependentModifierFlagsMask = 0xffff0000; +CPLeftMouseDownMask = 1 << CPLeftMouseDown; +CPLeftMouseUpMask = 1 << CPLeftMouseUp; +CPRightMouseDownMask = 1 << CPRightMouseDown; +CPRightMouseUpMask = 1 << CPRightMouseUp; +CPOtherMouseDownMask = 1 << CPOtherMouseDown; +CPOtherMouseUpMask = 1 << CPOtherMouseUp; +CPMouseMovedMask = 1 << CPMouseMoved; +CPLeftMouseDraggedMask = 1 << CPLeftMouseDragged; +CPRightMouseDraggedMask = 1 << CPRightMouseDragged; +CPOtherMouseDragged = 1 << CPOtherMouseDragged; +CPMouseEnteredMask = 1 << CPMouseEntered; +CPMouseExitedMask = 1 << CPMouseExited; +CPCursorUpdateMask = 1 << CPCursorUpdate; +CPKeyDownMask = 1 << CPKeyDown; +CPKeyUpMask = 1 << CPKeyUp; +CPFlagsChangedMask = 1 << CPFlagsChanged; +CPAppKitDefinedMask = 1 << CPAppKitDefined; +CPSystemDefinedMask = 1 << CPSystemDefined; +CPApplicationDefinedMask = 1 << CPApplicationDefined; +CPPeriodicMask = 1 << CPPeriodic; +CPScrollWheelMask = 1 << CPScrollWheel; +CPAnyEventMask = 0xffffffff; +CPUpArrowFunctionKey = "\uF700"; +CPDownArrowFunctionKey = "\uF701"; +CPLeftArrowFunctionKey = "\uF702"; +CPRightArrowFunctionKey = "\uF703"; +CPF1FunctionKey = "\uF704"; +CPF2FunctionKey = "\uF705"; +CPF3FunctionKey = "\uF706"; +CPF4FunctionKey = "\uF707"; +CPF5FunctionKey = "\uF708"; +CPF6FunctionKey = "\uF709"; +CPF7FunctionKey = "\uF70A"; +CPF8FunctionKey = "\uF70B"; +CPF9FunctionKey = "\uF70C"; +CPF10FunctionKey = "\uF70D"; +CPF11FunctionKey = "\uF70E"; +CPF12FunctionKey = "\uF70F"; +CPF13FunctionKey = "\uF710"; +CPF14FunctionKey = "\uF711"; +CPF15FunctionKey = "\uF712"; +CPF16FunctionKey = "\uF713"; +CPF17FunctionKey = "\uF714"; +CPF18FunctionKey = "\uF715"; +CPF19FunctionKey = "\uF716"; +CPF20FunctionKey = "\uF717"; +CPF21FunctionKey = "\uF718"; +CPF22FunctionKey = "\uF719"; +CPF23FunctionKey = "\uF71A"; +CPF24FunctionKey = "\uF71B"; +CPF25FunctionKey = "\uF71C"; +CPF26FunctionKey = "\uF71D"; +CPF27FunctionKey = "\uF71E"; +CPF28FunctionKey = "\uF71F"; +CPF29FunctionKey = "\uF720"; +CPF30FunctionKey = "\uF721"; +CPF31FunctionKey = "\uF722"; +CPF32FunctionKey = "\uF723"; +CPF33FunctionKey = "\uF724"; +CPF34FunctionKey = "\uF725"; +CPF35FunctionKey = "\uF726"; +CPInsertFunctionKey = "\uF727"; +CPDeleteFunctionKey = "\uF728"; +CPHomeFunctionKey = "\uF729"; +CPBeginFunctionKey = "\uF72A"; +CPEndFunctionKey = "\uF72B"; +CPPageUpFunctionKey = "\uF72C"; +CPPageDownFunctionKey = "\uF72D"; +CPPrintScreenFunctionKey = "\uF72E"; +CPScrollLockFunctionKey = "\uF72F"; +CPPauseFunctionKey = "\uF730"; +CPSysReqFunctionKey = "\uF731"; +CPBreakFunctionKey = "\uF732"; +CPResetFunctionKey = "\uF733"; +CPStopFunctionKey = "\uF734"; +CPMenuFunctionKey = "\uF735"; +CPUserFunctionKey = "\uF736"; +CPSystemFunctionKey = "\uF737"; +CPPrintFunctionKey = "\uF738"; +CPClearLineFunctionKey = "\uF739"; +CPClearDisplayFunctionKey = "\uF73A"; +CPInsertLineFunctionKey = "\uF73B"; +CPDeleteLineFunctionKey = "\uF73C"; +CPInsertCharFunctionKey = "\uF73D"; +CPDeleteCharFunctionKey = "\uF73E"; +CPPrevFunctionKey = "\uF73F"; +CPNextFunctionKey = "\uF740"; +CPSelectFunctionKey = "\uF741"; +CPExecuteFunctionKey = "\uF742"; +CPUndoFunctionKey = "\uF743"; +CPRedoFunctionKey = "\uF744"; +CPFindFunctionKey = "\uF745"; +CPHelpFunctionKey = "\uF746"; +CPModeSwitchFunctionKey = "\uF747"; +CPEscapeFunctionKey = "\u001B"; +CPDOMEventDoubleClick = "dblclick", +CPDOMEventMouseDown = "mousedown", +CPDOMEventMouseUp = "mouseup", +CPDOMEventMouseMoved = "mousemove", +CPDOMEventMouseDragged = "mousedrag", +CPDOMEventKeyUp = "keyup", +CPDOMEventKeyDown = "keydown", +CPDOMEventKeyPress = "keypress"; +CPDOMEventCopy = "copy"; +CPDOMEventPaste = "paste"; +CPDOMEventScrollWheel = "mousewheel"; +CPDOMEventTouchStart = "touchstart"; +CPDOMEventTouchMove = "touchmove"; +CPDOMEventTouchEnd = "touchend"; +CPDOMEventTouchCancel = "touchcancel"; +var _CPEventPeriodicEventPeriod = 0, + _CPEventPeriodicEventTimer = nil, + _CPEventUpperCaseRegex = new RegExp("[A-Z]"); +{var the_class = objj_allocateClassPair(CPObject, "CPEvent"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_type"), new objj_ivar("_location"), new objj_ivar("_modifierFlags"), new objj_ivar("_timestamp"), new objj_ivar("_context"), new objj_ivar("_eventNumber"), new objj_ivar("_clickCount"), new objj_ivar("_pressure"), new objj_ivar("_window"), new objj_ivar("_windowNumber"), new objj_ivar("_characters"), new objj_ivar("_isARepeat"), new objj_ivar("_keyCode"), new objj_ivar("_DOMEvent"), new objj_ivar("_deltaX"), new objj_ivar("_deltaY"), new objj_ivar("_deltaZ")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initMouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:"), function $CPEvent___initMouseEventWithType_location_modifierFlags_timestamp_windowNumber_context_eventNumber_clickCount_pressure_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPEvent").super_class }, "init"); + if (self) + { + _type = anEventType; + _location = CPPointCreateCopy(aPoint); + _modifierFlags = modifierFlags; + _timestamp = aTimestamp; + _context = aGraphicsContext; + _eventNumber = anEventNumber; + _clickCount = aClickCount; + _pressure = aPressure; + _window = objj_msgSend(CPApp, "windowWithWindowNumber:", aWindowNumber); + } + return self; +} +},["id","CPEventType","CPPoint","unsigned","CPTimeInterval","int","CPGraphicsContext","int","int","float"]), new objj_method(sel_getUid("_initKeyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:"), function $CPEvent___initKeyEventWithType_location_modifierFlags_timestamp_windowNumber_context_characters_charactersIgnoringModifiers_isARepeat_keyCode_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, characters, unmodCharacters, isARepeat, code) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPEvent").super_class }, "init"); + if (self) + { + _type = anEventType; + _location = CPPointCreateCopy(aPoint); + _modifierFlags = modifierFlags; + _timestamp = aTimestamp; + _context = aGraphicsContext; + _characters = characters; + _charactersIgnoringModifiers = unmodCharacters; + _isARepeat = isARepeat; + _keyCode = code; + _windowNumber = aWindowNumber; + } + return self; +} +},["id","CPEventType","CPPoint","unsignedint","CPTimeInterval","int","CPGraphicsContext","CPString","CPString","BOOL","unsignedshort"]), new objj_method(sel_getUid("_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:"), function $CPEvent___initOtherEventWithType_location_modifierFlags_timestamp_windowNumber_context_subtype_data1_data2_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, aSubtype, aData1, aData2) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPEvent").super_class }, "init"); + if (self) + { + _type = anEventType; + _location = CPPointCreateCopy(aPoint); + _modifierFlags = modifierFlags; + _timestamp = aTimestamp; + _context = aGraphicsContext; + _subtype = aSubtype; + _data1 = aData1; + _data2 = aData2; + } + return self; +} +},["id","CPEventType","CGPoint","unsigned","CPTimeInterval","int","CPGraphicsContext","short","int","int"]), new objj_method(sel_getUid("locationInWindow"), function $CPEvent__locationInWindow(self, _cmd) +{ with(self) +{ + return { x:_location.x, y:_location.y }; +} +},["CGPoint"]), new objj_method(sel_getUid("globalLocation"), function $CPEvent__globalLocation(self, _cmd) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"), + location = objj_msgSend(self, "locationInWindow"); + if (theWindow) + return objj_msgSend(theWindow, "convertBaseToGlobal:", location); + return location; +} +},["CGPoint"]), new objj_method(sel_getUid("modifierFlags"), function $CPEvent__modifierFlags(self, _cmd) +{ with(self) +{ + return _modifierFlags; +} +},["unsigned"]), new objj_method(sel_getUid("timestamp"), function $CPEvent__timestamp(self, _cmd) +{ with(self) +{ + return _timestamp; +} +},["CPTimeInterval"]), new objj_method(sel_getUid("type"), function $CPEvent__type(self, _cmd) +{ with(self) +{ + return _type; +} +},["CPEventType"]), new objj_method(sel_getUid("window"), function $CPEvent__window(self, _cmd) +{ with(self) +{ + if (!_window) + _window = objj_msgSend(CPApp, "windowWithWindowNumber:", _windowNumber); + return _window; +} +},["CPWindow"]), new objj_method(sel_getUid("windowNumber"), function $CPEvent__windowNumber(self, _cmd) +{ with(self) +{ + return _windowNumber; +} +},["int"]), new objj_method(sel_getUid("buttonNumber"), function $CPEvent__buttonNumber(self, _cmd) +{ with(self) +{ + if (_type === CPRightMouseDown || _type === CPRightMouseUp || _type === CPRightMouseDragged) + return 1; + return 0; +} +},["int"]), new objj_method(sel_getUid("clickCount"), function $CPEvent__clickCount(self, _cmd) +{ with(self) +{ + return _clickCount; +} +},["int"]), new objj_method(sel_getUid("characters"), function $CPEvent__characters(self, _cmd) +{ with(self) +{ + return _characters; +} +},["CPString"]), new objj_method(sel_getUid("charactersIgnoringModifiers"), function $CPEvent__charactersIgnoringModifiers(self, _cmd) +{ with(self) +{ + return _charactersIgnoringModifiers; +} +},["CPString"]), new objj_method(sel_getUid("isARepeat"), function $CPEvent__isARepeat(self, _cmd) +{ with(self) +{ + return _isARepeat; +} +},["BOOL"]), new objj_method(sel_getUid("keyCode"), function $CPEvent__keyCode(self, _cmd) +{ with(self) +{ + return _keyCode; +} +},["unsignedshort"]), new objj_method(sel_getUid("pressure"), function $CPEvent__pressure(self, _cmd) +{ with(self) +{ + return _pressure; +} +},["float"]), new objj_method(sel_getUid("_DOMEvent"), function $CPEvent___DOMEvent(self, _cmd) +{ with(self) +{ + return _DOMEvent; +} +},["DOMEvent"]), new objj_method(sel_getUid("deltaX"), function $CPEvent__deltaX(self, _cmd) +{ with(self) +{ + return _deltaX; +} +},["float"]), new objj_method(sel_getUid("deltaY"), function $CPEvent__deltaY(self, _cmd) +{ with(self) +{ + return _deltaY; +} +},["float"]), new objj_method(sel_getUid("deltaZ"), function $CPEvent__deltaZ(self, _cmd) +{ with(self) +{ + return _deltaZ; +} +},["float"]), new objj_method(sel_getUid("_triggersKeyEquivalent:withModifierMask:"), function $CPEvent___triggersKeyEquivalent_withModifierMask_(self, _cmd, aKeyEquivalent, aKeyEquivalentModifierMask) +{ with(self) +{ + if (!aKeyEquivalent) + return NO; + if (_CPEventUpperCaseRegex.test(aKeyEquivalent)) + aKeyEquivalentModifierMask |= CPShiftKeyMask; + if (CPBrowserIsOperatingSystem(CPWindowsOperatingSystem) && (aKeyEquivalentModifierMask & CPCommandKeyMask)) + { + aKeyEquivalentModifierMask |= CPControlKeyMask; + aKeyEquivalentModifierMask &= ~CPCommandKeyMask; + } + if ((_modifierFlags & (CPShiftKeyMask | CPAlternateKeyMask | CPCommandKeyMask | CPControlKeyMask)) !== aKeyEquivalentModifierMask) + return NO; + if (_characters === CPNewlineCharacter || _characters === CPCarriageReturnCharacter) + return CPNewlineCharacter === aKeyEquivalent || CPCarriageReturnCharacter === aKeyEquivalent; + return objj_msgSend(_characters, "caseInsensitiveCompare:", aKeyEquivalent) === CPOrderedSame; +} +},["BOOL","CPString",null]), new objj_method(sel_getUid("_couldBeKeyEquivalent"), function $CPEvent___couldBeKeyEquivalent(self, _cmd) +{ with(self) +{ + if (_type !== CPKeyDown) + return NO; + var characterCount = _characters.length; + if (!characterCount) + return NO; + if (_modifierFlags & (CPCommandKeyMask | CPControlKeyMask)) + return YES; + for(var i=0; i<characterCount; i++) + { + switch(_characters.charAt(i)) + { + case CPBackspaceCharacter: + case CPDeleteCharacter: + case CPDeleteFunctionKey: + case CPTabCharacter: + case CPCarriageReturnCharacter: + case CPNewlineCharacter: + case CPEscapeFunctionKey: + case CPPageUpFunctionKey: + case CPPageDownFunctionKey: + case CPLeftArrowFunctionKey: + case CPUpArrowFunctionKey: + case CPRightArrowFunctionKey: + case CPDownArrowFunctionKey: + return YES; + } + } + return NO; +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:"), function $CPEvent__keyEventWithType_location_modifierFlags_timestamp_windowNumber_context_characters_charactersIgnoringModifiers_isARepeat_keyCode_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, characters, unmodCharacters, repeatKey, code) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "_initKeyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, characters, unmodCharacters, repeatKey, code); +} +},["CPEvent","CPEventType","CGPoint","unsignedint","CPTimeInterval","int","CPGraphicsContext","CPString","CPString","BOOL","unsignedshort"]), new objj_method(sel_getUid("mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:"), function $CPEvent__mouseEventWithType_location_modifierFlags_timestamp_windowNumber_context_eventNumber_clickCount_pressure_(self, _cmd, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "_initMouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure); +} +},["id","CPEventType","CGPoint","unsigned","CPTimeInterval","int","CPGraphicsContext","int","int","float"]), new objj_method(sel_getUid("otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:"), function $CPEvent__otherEventWithType_location_modifierFlags_timestamp_windowNumber_context_subtype_data1_data2_(self, _cmd, anEventType, aLocation, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, aSubtype, aData1, aData2) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "_initOtherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", anEventType, aLocation, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, aSubtype, aData1, aData2); +} +},["CPEvent","CPEventType","CGPoint","unsigned","CPTimeInterval","int","CPGraphicsContext","short","int","int"]), new objj_method(sel_getUid("mouseLocation"), function $CPEvent__mouseLocation(self, _cmd) +{ with(self) +{ + var event = objj_msgSend(CPApp, "currentEvent"), + eventWindow = objj_msgSend(event, "window"); + if (eventWindow) + return objj_msgSend(eventWindow, "convertBaseToGlobal:", objj_msgSend(event, "locationInWindow")); + return objj_msgSend(event, "locationInWindow"); +} +},["CGPoint"]), new objj_method(sel_getUid("startPeriodicEventsAfterDelay:withPeriod:"), function $CPEvent__startPeriodicEventsAfterDelay_withPeriod_(self, _cmd, aDelay, aPeriod) +{ with(self) +{ + _CPEventPeriodicEventPeriod = aPeriod; + _CPEventPeriodicEventTimer = window.setTimeout(function() { _CPEventPeriodicEventTimer = window.setInterval(_CPEventFirePeriodEvent, aPeriod * 1000.0); }, aDelay * 1000.0); +} +},["void","CPTimeInterval","CPTimeInterval"]), new objj_method(sel_getUid("stopPeriodicEvents"), function $CPEvent__stopPeriodicEvents(self, _cmd) +{ with(self) +{ + if (_CPEventPeriodicEventTimer === nil) + return; + window.clearTimeout(_CPEventPeriodicEventTimer); + _CPEventPeriodicEventTimer = nil; +} +},["void"])]); +} +_CPEventFirePeriodEvent= function() +{ + objj_msgSend(CPApp, "sendEvent:", objj_msgSend(CPEvent, "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", CPPeriodic, { x:0.0, y:0.0 }, 0, 0, 0, nil, 0, 0, 0)); +} +var CPEventClass = objj_msgSend(CPEvent, "class"); +_CPEventFromNativeMouseEvent= function(aNativeEvent, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure) +{ + aNativeEvent.isa = CPEventClass; + aNativeEvent._type = anEventType; + aNativeEvent._location = aPoint; + aNativeEvent._modifierFlags = modifierFlags; + aNativeEvent._timestamp = aTimestamp; + aNativeEvent._windowNumber = aWindowNumber; + aNativeEvent._window = nil; + aNativeEvent._context = aGraphicsContext; + aNativeEvent._eventNumber = anEventNumber; + aNativeEvent._clickCount = aClickCount; + aNativeEvent._pressure = aPressure; + return aNativeEvent; +} + +p;14;CPFlashMovie.jt;1791;@STATIC;1.0;I;21;Foundation/CPObject.jt;1746;objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPFlashMovie"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_filename")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFile:"), function $CPFlashMovie__initWithFile_(self, _cmd, aFilename) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPFlashMovie").super_class }, "init"); + if (self) + _filename = aFilename; + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("filename"), function $CPFlashMovie__filename(self, _cmd) +{ with(self) +{ + return _filename; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("flashMovieWithFile:"), function $CPFlashMovie__flashMovieWithFile_(self, _cmd, aFilename) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithFile:", aFilename); +} +},["id","CPString"])]); +} +var CPFlashMovieFilenameKey = "CPFlashMovieFilenameKey"; +{ +var the_class = objj_getClass("CPFlashMovie") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPFlashMovie\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPFlashMovie__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + _filename = objj_msgSend(aCoder, "decodeObjectForKey:", CPFlashMovieFilenameKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPFlashMovie__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _filename, CPFlashMovieFilenameKey); +} +},["void","CPCoder"])]); +} + +p;13;CPFlashView.jt;3091;@STATIC;1.0;i;14;CPFlashMovie.ji;8;CPView.jt;3041;objj_executeFile("CPFlashMovie.j", YES); +objj_executeFile("CPView.j", YES); +var IEFlashCLSID = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; +{var the_class = objj_allocateClassPair(CPView, "CPFlashView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_flashMovie"), new objj_ivar("_params"), new objj_ivar("_paramElements")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPFlashView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPFlashView").super_class }, "initWithFrame:", aFrame); + if (self) + { + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setFlashMovie:"), function $CPFlashView__setFlashMovie_(self, _cmd, aFlashMovie) +{ with(self) +{ + if (_flashMovie == aFlashMovie) + return; + _flashMovie = aFlashMovie; +} +},["void","CPFlashMovie"]), new objj_method(sel_getUid("flashMovie"), function $CPFlashView__flashMovie(self, _cmd) +{ with(self) +{ + return _flashMovie; +} +},["CPFlashMovie"]), new objj_method(sel_getUid("setFlashVars:"), function $CPFlashView__setFlashVars_(self, _cmd, aDictionary) +{ with(self) +{ + var varString = "", + enumerator = objj_msgSend(aDictionary, "keyEnumerator"); + var key; + while (key = objj_msgSend(enumerator, "nextObject")) + varString = objj_msgSend(varString, "stringByAppendingFormat:", "&%@=%@", key, objj_msgSend(aDictionary, "objectForKey:", key)); + if (!_params) + _params = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(_params, "setObject:forKey:", varString, "flashvars"); + objj_msgSend(self, "setParameters:", _params); +} +},["void","CPDictionary"]), new objj_method(sel_getUid("flashVars"), function $CPFlashView__flashVars(self, _cmd) +{ with(self) +{ + return objj_msgSend(_params, "objectForKey:", "flashvars"); +} +},["CPDictionary"]), new objj_method(sel_getUid("setParameters:"), function $CPFlashView__setParameters_(self, _cmd, aDictionary) +{ with(self) +{ + _params = aDictionary; +} +},["void","CPDictionary"]), new objj_method(sel_getUid("parameters"), function $CPFlashView__parameters(self, _cmd) +{ with(self) +{ + return _params; +} +},["CPDictionary"]), new objj_method(sel_getUid("mouseDragged:"), function $CPFlashView__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDown:"), function $CPFlashView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPFlashView__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"])]); +} + +p;8;CPFont.jt;6597;@STATIC;1.0;t;6578;var _CPFonts = {}, + _CPFontSystemFontFace = "Arial, sans-serif", + _CPWrapRegExp = new RegExp("\\s*,\\s*", "g"); +{var the_class = objj_allocateClassPair(CPObject, "CPFont"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_name"), new objj_ivar("_size"), new objj_ivar("_ascender"), new objj_ivar("_descender"), new objj_ivar("_lineHeight"), new objj_ivar("_isBold"), new objj_ivar("_cssString")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initWithName:size:bold:"), function $CPFont___initWithName_size_bold_(self, _cmd, aName, aSize, isBold) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPFont").super_class }, "init"); + if (self) + { + _name = aName; + _size = aSize; + _ascender = 0; + _descender = 0; + _lineHeight = 0; + _isBold = isBold; + _cssString = (_isBold ? "bold " : "") + ROUND(_size) + "px " + ((_name === _CPFontSystemFontFace) ? _name : ("\"" + _name.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace)); + _CPFonts[_cssString] = self; + } + return self; +} +},["id","CPString","float","BOOL"]), new objj_method(sel_getUid("ascender"), function $CPFont__ascender(self, _cmd) +{ with(self) +{ + if (!_ascender) + objj_msgSend(self, "_getMetrics"); + return _ascender; +} +},["float"]), new objj_method(sel_getUid("descender"), function $CPFont__descender(self, _cmd) +{ with(self) +{ + if (!_descender) + objj_msgSend(self, "_getMetrics"); + return _descender; +} +},["float"]), new objj_method(sel_getUid("defaultLineHeightForFont"), function $CPFont__defaultLineHeightForFont(self, _cmd) +{ with(self) +{ + if (!_lineHeight) + objj_msgSend(self, "_getMetrics"); + return _lineHeight; +} +},["float"]), new objj_method(sel_getUid("size"), function $CPFont__size(self, _cmd) +{ with(self) +{ + return _size; +} +},["float"]), new objj_method(sel_getUid("cssString"), function $CPFont__cssString(self, _cmd) +{ with(self) +{ + return _cssString; +} +},["CPString"]), new objj_method(sel_getUid("familyName"), function $CPFont__familyName(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("isEqual:"), function $CPFont__isEqual_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(anObject, "isKindOfClass:", objj_msgSend(CPFont, "class")) && objj_msgSend(anObject, "cssString") === objj_msgSend(self, "cssString"); +} +},["BOOL","id"]), new objj_method(sel_getUid("description"), function $CPFont__description(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPString, "stringWithFormat:", "%@ %@ %f pt.", objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPFont").super_class }, "description"), objj_msgSend(self, "familyName"), objj_msgSend(self, "size")); +} +},["CPString"]), new objj_method(sel_getUid("_getMetrics"), function $CPFont___getMetrics(self, _cmd) +{ with(self) +{ + var metrics = objj_msgSend(CPString, "metricsOfFont:", self); + _ascender = objj_msgSend(metrics, "objectForKey:", "ascender"); + _descender = objj_msgSend(metrics, "objectForKey:", "descender"); + _lineHeight = objj_msgSend(metrics, "objectForKey:", "lineHeight"); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPFont__initialize(self, _cmd) +{ with(self) +{ + var systemFont = objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPView, "class")), "objectForInfoDictionaryKey:", "CPSystemFontFace"); + if (systemFont) + _CPFontSystemFontFace = systemFont; +} +},["void"]), new objj_method(sel_getUid("fontWithName:size:"), function $CPFont__fontWithName_size_(self, _cmd, aName, aSize) +{ with(self) +{ + return _CPFonts[(NO ? "bold " : "") + ROUND(aSize) + "px " + ((aName === _CPFontSystemFontFace) ? aName : ("\"" + aName.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace))] || objj_msgSend(objj_msgSend(CPFont, "alloc"), "_initWithName:size:bold:", aName, aSize, NO); +} +},["CPFont","CPString","float"]), new objj_method(sel_getUid("boldFontWithName:size:"), function $CPFont__boldFontWithName_size_(self, _cmd, aName, aSize) +{ with(self) +{ + return _CPFonts[(YES ? "bold " : "") + ROUND(aSize) + "px " + ((aName === _CPFontSystemFontFace) ? aName : ("\"" + aName.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace))] || objj_msgSend(objj_msgSend(CPFont, "alloc"), "_initWithName:size:bold:", aName, aSize, YES); +} +},["CPFont","CPString","float"]), new objj_method(sel_getUid("systemFontOfSize:"), function $CPFont__systemFontOfSize_(self, _cmd, aSize) +{ with(self) +{ + return _CPFonts[(NO ? "bold " : "") + ROUND(aSize) + "px " + ((_CPFontSystemFontFace === _CPFontSystemFontFace) ? _CPFontSystemFontFace : ("\"" + _CPFontSystemFontFace.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace))] || objj_msgSend(objj_msgSend(CPFont, "alloc"), "_initWithName:size:bold:", _CPFontSystemFontFace, aSize, NO); +} +},["CPFont","CPSize"]), new objj_method(sel_getUid("boldSystemFontOfSize:"), function $CPFont__boldSystemFontOfSize_(self, _cmd, aSize) +{ with(self) +{ + return _CPFonts[(YES ? "bold " : "") + ROUND(aSize) + "px " + ((_CPFontSystemFontFace === _CPFontSystemFontFace) ? _CPFontSystemFontFace : ("\"" + _CPFontSystemFontFace.replace(_CPWrapRegExp, '", "') + "\", " + _CPFontSystemFontFace))] || objj_msgSend(objj_msgSend(CPFont, "alloc"), "_initWithName:size:bold:", _CPFontSystemFontFace, aSize, YES); +} +},["CPFont","CPSize"])]); +} +var CPFontNameKey = "CPFontNameKey", + CPFontSizeKey = "CPFontSizeKey", + CPFontIsBoldKey = "CPFontIsBoldKey"; +{ +var the_class = objj_getClass("CPFont") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPFont\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPFont__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "_initWithName:size:bold:", objj_msgSend(aCoder, "decodeObjectForKey:", CPFontNameKey), objj_msgSend(aCoder, "decodeFloatForKey:", CPFontSizeKey), objj_msgSend(aCoder, "decodeBoolForKey:", CPFontIsBoldKey)); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPFont__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _name, CPFontNameKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _size, CPFontSizeKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isBold, CPFontIsBoldKey); +} +},["void","CPCoder"])]); +} + +p;15;CPFontManager.jt;4972;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPFont.jt;4907;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("AppKit/CPFont.j", NO); +var CPSharedFontManager = nil, + CPFontManagerFactory = Nil; +{var the_class = objj_allocateClassPair(CPObject, "CPFontManager"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_availableFonts")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("availableFonts"), function $CPFontManager__availableFonts(self, _cmd) +{ with(self) +{ + if (!_availableFonts) + { + _CPFontDetectSpan = document.createElement("span"); + _CPFontDetectSpan.fontSize = "24px"; + _CPFontDetectSpan.appendChild(document.createTextNode("mmmmmmmmmml")); + var div = document.createElement("div"); + div.style.position = "absolute"; + div.style.top = "-1000px"; + div.appendChild(_CPFontDetectSpan); + document.getElementsByTagName("body")[0].appendChild(div); + _CPFontDetectReferenceFonts = _CPFontDetectPickTwoDifferentFonts(["monospace", "serif", "sans-serif", "cursive"]); + _availableFonts = []; + for (var i = 0; i < _CPFontDetectAllFonts.length; i++) { + var available = _CPFontDetectFontAvailable(_CPFontDetectAllFonts[i]); + if (available) + _availableFonts.push(_CPFontDetectAllFonts[i]); + } + } + return _availableFonts; +} +},["CPArray"]), new objj_method(sel_getUid("fontWithNameIsAvailable:"), function $CPFontManager__fontWithNameIsAvailable_(self, _cmd, aFontName) +{ with(self) +{ + return _CPFontDetectFontAvailable(aFontName); +} +},["CPArray","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sharedFontManager"), function $CPFontManager__sharedFontManager(self, _cmd) +{ with(self) +{ + if (!CPSharedFontManager) + CPSharedFontManager = objj_msgSend(objj_msgSend(CPFontManagerFactory, "alloc"), "init"); + return CPSharedFontManager; +} +},["CPFontManager"]), new objj_method(sel_getUid("setFontManagerFactory:"), function $CPFontManager__setFontManagerFactory_(self, _cmd, aClass) +{ with(self) +{ + CPFontManagerFactory = aClass; +} +},["void","Class"])]); +} +var _CPFontDetectSpan, + _CPFontDetectReferenceFonts, + _CPFontDetectAllFonts = [ + "American Typewriter", + "Apple Chancery","Arial","Arial Black","Arial Narrow","Arial Rounded MT Bold","Arial Unicode MS", + "Big Caslon","Bitstream Vera Sans","Bitstream Vera Sans Mono","Bitstream Vera Serif", + "Brush Script MT", + "Cambria", + "Caslon","Castellar","Cataneo BT","Centaur","Century Gothic","Century Schoolbook","Century Schoolbook L", + "Comic Sans", "Comic Sans MS","Consolas","Constantia","Cooper Black","Copperplate","Copperplate Gothic Bold","Copperplate Gothic Light","Corbel","Courier","Courier New", + "Futura", + "Geneva","Georgia","Georgia Ref", "Geeza Pro", "Gigi","Gill Sans","Gill Sans MT","Gill Sans MT Condensed","Gill Sans MT Ext Condensed Bold","Gill Sans Ultra Bold","Gill Sans Ultra Bold Condensed", + "Helvetica","Helvetica Narrow","Helvetica Neue","Herculanum","High Tower Text","Highlight LET","Hoefler Text","Impact","Imprint MT Shadow", + "Lucida","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","Lucida Grande","Lucida Handwriting","Lucida Sans","Lucida Sans Typewriter","Lucida Sans Unicode", + "Marker Felt", + "Microsoft Sans Serif","Milano LET","Minion Web","MisterEarl BT","Mistral","Monaco","Monotype Corsiva","Monotype.com","New Century Schoolbook","New York","News Gothic MT", + "Papyrus", + "Tahoma","Techno","Tempus Sans ITC","Terminal","Textile","Times","Times New Roman","Tiranti Solid LET","Trebuchet MS", + "Verdana","Verdana Ref", + "Zapfino"]; +var _CPFontDetectFontAvailable = function(font) { + for (var i = 0; i < _CPFontDetectReferenceFonts.length; i++) + if (_CPFontDetectCompareFonts(_CPFontDetectReferenceFonts[i], font)) + return true; + return false; +} +var _CPFontDetectCache = {}; +var _CPFontDetectCompareFonts = function(fontA, fontB) { + var a; + if (_CPFontDetectCache[fontA]) { + a = _CPFontDetectCache[fontA]; + } else { + _CPFontDetectSpan.style.fontFamily = '"' + fontA + '"'; + _CPFontDetectCache[fontA] = a = { w: _CPFontDetectSpan.offsetWidth, h: _CPFontDetectSpan.offsetHeight }; + } + _CPFontDetectSpan.style.fontFamily= '"' + fontB + '", "' + fontA + '"'; + var bWidth = _CPFontDetectSpan.offsetWidth; + var bHeight = _CPFontDetectSpan.offsetHeight; + return (a.w != bWidth || a.h != bHeight); +} +var _CPFontDetectPickTwoDifferentFonts = function(candidates) { + for (var i = 0; i < candidates.length; i++) + for (var j = 0; j < i; j++) + if (_CPFontDetectCompareFonts(candidates[i], candidates[j])) + return [candidates[i], candidates[j]]; + return [candidates[0]]; +} +objj_msgSend(CPFontManager, "setFontManagerFactory:", objj_msgSend(CPFontManager, "class")); + +p;12;CPGeometry.jt;5646;@STATIC;1.0;i;12;CGGeometry.jt;5610;objj_executeFile("CGGeometry.j", YES); +CPMinXEdge = 0; +CPMinYEdge = 1; +CPMaxXEdge = 2; +CPMaxYEdge = 3; +CPMakePoint = CGPointMake; +CPMakeSize = CGSizeMake; +CPMakeRect = CGRectMake; +CPPointCreateCopy= function(aPoint) +{ + return { x: aPoint.x, y: aPoint.y }; +} +CPPointMake= function(x, y) +{ + return { x: x, y: y }; +} +CPRectInset= function(aRect, dX, dY) +{ + return CPRectMake( aRect.origin.x + dX, aRect.origin.y + dY, + aRect.size.width - 2 * dX, aRect.size.height - 2*dY); +} +CPRectIntegral= function(aRect) +{ + alert("CPRectIntegral unimplemented"); +} +CPRectIntersection= function(lhsRect, rhsRect) +{ + var intersection = CPRectMake( + Math.max(CPRectGetMinX(lhsRect), CPRectGetMinX(rhsRect)), + Math.max(CPRectGetMinY(lhsRect), CPRectGetMinY(rhsRect)), + 0, 0); + intersection.size.width = Math.min(CPRectGetMaxX(lhsRect), CPRectGetMaxX(rhsRect)) - CPRectGetMinX(intersection); + intersection.size.height = Math.min(CPRectGetMaxY(lhsRect), CPRectGetMaxY(rhsRect)) - CPRectGetMinY(intersection); + return CPRectIsEmpty(intersection) ? CPRectMakeZero() : intersection; +} +CPRectCreateCopy= function(aRect) +{ + return { origin: CPPointCreateCopy(aRect.origin), size: CPSizeCreateCopy(aRect.size) }; +} +CPRectMake= function(x, y, width, height) +{ + return { origin: CPPointMake(x, y), size: CPSizeMake(width, height) }; +} +CPRectOffset= function(aRect, dX, dY) +{ + return CPRectMake(aRect.origin.x + dX, aRect.origin.y + dY, aRect.size.width, aRect.size.height); +} +CPRectStandardize= function(aRect) +{ + var width = CPRectGetWidth(aRect), + height = CPRectGetHeight(aRect), + standardized = CPRectCreateCopy(aRect); + if (width < 0.0) + { + standardized.origin.x += width; + standardized.size.width = -width; + } + if (height < 0.0) + { + standardized.origin.y += height; + standardized.size.height = -height; + } + return standardized; +} +CPRectUnion= function(lhsRect, rhsRect) +{ + var minX = Math.min(CPRectGetMinX(lhsRect), CPRectGetMinX(rhsRect)), + minY = Math.min(CPRectGetMinY(lhsRect), CPRectGetMinY(rhsRect)), + maxX = Math.max(CPRectGetMaxX(lhsRect), CPRectGetMaxX(rhsRect)), + maxY = Math.max(CPRectGetMaxY(lhsRect), CPRectGetMaxY(rhsRect)); + return CPRectMake(minX, minY, maxX - minX, maxY - minY); +} +CPSizeCreateCopy= function(aSize) +{ + return { width: aSize.width, height: aSize.height }; +} +CPSizeMake= function(width, height) +{ + return { width: width, height: height }; +} +CPRectContainsPoint= function(aRect, aPoint) +{ + return aPoint.x >= CPRectGetMinX(aRect) && + aPoint.y >= CPRectGetMinY(aRect) && + aPoint.x < CPRectGetMaxX(aRect) && + aPoint.y < CPRectGetMaxY(aRect); +} +CPRectContainsRect= function(possibleOuter, possibleInner) +{ + return CGRectContainsRect(possibleOuter, possibleInner); +} +CPPointEqualToPoint= function(lhsPoint, rhsPoint) +{ + return lhsPoint.x == rhsPoint.x && lhsPoint.y == rhsPoint.y; +} +CPRectEqualToRect= function(lhsRect, rhsRect) +{ + return CPPointEqualToPoint(lhsRect.origin, rhsRect.origin) && + CPSizeEqualToSize(lhsRect.size, rhsRect.size); +} +CPRectGetHeight= function(aRect) +{ + return aRect.size.height; +} +CPRectGetMaxX= function(aRect) +{ + return aRect.origin.x + aRect.size.width; +} +CPRectGetMaxY= function(aRect) +{ + return aRect.origin.y + aRect.size.height; +} +CPRectGetMidX= function(aRect) +{ + return aRect.origin.x + (aRect.size.width) / 2.0; +} +CPRectGetMidY= function(aRect) +{ + return aRect.origin.y + (aRect.size.height) / 2.0; +} +CPRectGetMinX= function(aRect) +{ + return aRect.origin.x; +} +CPRectGetMinY= function(aRect) +{ + return aRect.origin.y; +} +CPRectGetWidth= function(aRect) +{ + return aRect.size.width; +} +CPRectIntersectsRect= function(lhsRect, rhsRect) +{ + return !CPRectIsEmpty(CPRectIntersection(lhsRect, rhsRect)); +} +CPRectIsEmpty= function(aRect) +{ + return aRect.size.width <= 0.0 || aRect.size.height <= 0.0; +} +CPRectIsNull= function(aRect) +{ + return aRect.size.width <= 0.0 || aRect.size.height <= 0.0; +} +CPDivideRect= function(inRect, slice, rem, amount, edge) +{ + CGRectDivide(inRect, slice, rem, amount, edge); +} +CPSizeEqualToSize= function(lhsSize, rhsSize) +{ + return lhsSize.width == rhsSize.width && lhsSize.height == rhsSize.height; +} +CPStringFromPoint= function(aPoint) +{ + return "{" + aPoint.x + ", " + aPoint.y + "}"; +} +CPStringFromSize= function(aSize) +{ + return "{" + aSize.width + ", " + aSize.height + "}"; +} +CPStringFromRect= function(aRect) +{ + return "{" + CPStringFromPoint(aRect.origin) + ", " + CPStringFromSize(aRect.size) + "}"; +} +CPPointFromString= function(aString) +{ + var comma = aString.indexOf(','); + return { x:parseFloat(aString.substr(1, comma - 1), 10), y:parseFloat(aString.substring(comma + 1, aString.length), 10) }; +} +CPSizeFromString= function(aString) +{ + var comma = aString.indexOf(','); + return { width:parseFloat(aString.substr(1, comma - 1), 10), height:parseFloat(aString.substring(comma + 1, aString.length), 10) }; +} +CPRectFromString= function(aString) +{ + var comma = aString.indexOf(',', aString.indexOf(',') + 1); + return { origin:CPPointFromString(aString.substr(1, comma - 1)), size:CPSizeFromString(aString.substring(comma + 2, aString.length)) }; +} +CPPointFromEvent= function(anEvent) +{ + return CPPointMake(anEvent.clientX, anEvent.clientY, 0); +} +CPSizeMakeZero= function() +{ + return CPSizeMake(0, 0); +} +CPRectMakeZero= function() +{ + return CPRectMake(0, 0, 0, 0); +} +CPPointMakeZero= function() +{ + return CPPointMake(0, 0, 0); +} + +p;12;CPGraphics.jt;2855;@STATIC;1.0;i;9;CPColor.ji;19;CPGraphicsContext.jt;2799;objj_executeFile("CPColor.j", YES); +objj_executeFile("CPGraphicsContext.j", YES); +CPDrawTiledRects= function( + boundsRect, + clipRect, + sides, + grays) +{ + if (sides.length != grays.length) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "sides (length: " + sides.length + ") and grays (length: " + grays.length + ") must have the same length."); + var colors = []; + for (var i = 0; i < grays.length; ++i) + colors.push(objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", grays[i], 1.0)); + return CPDrawColorTiledRects(boundsRect, clipRect, sides, colors); +} +CPDrawColorTiledRects= function( + boundsRect, + clipRect, + sides, + colors) +{ + if (sides.length != colors.length) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "sides (length: " + sides.length + ") and colors (length: " + colors.length + ") must have the same length."); + var resultRect = { origin: { x:boundsRect.origin.x, y:boundsRect.origin.y }, size: { width:boundsRect.size.width, height:boundsRect.size.height } }, + slice = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }, + remainder = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }, + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSaveGState(context); + CGContextSetLineWidth(context, 1.0); + for (var sideIndex = 0; sideIndex < sides.length; ++sideIndex) + { + var side = sides[sideIndex]; + CGRectDivide(resultRect, slice, remainder, 1.0, side); + resultRect = remainder; + slice = CGRectIntersection(slice, clipRect); + if ((slice.size.width <= 0.0 || slice.size.height <= 0.0)) + continue; + var minX, maxX, minY, maxY; + if (side == CPMinXEdge || side == CPMaxXEdge) + { + if ((slice.size.width) < 1.0) + continue; + minX = (slice.origin.x) + 0.5; + maxX = minX; + minY = (slice.origin.y); + maxY = (slice.origin.y + slice.size.height); + } + else + { + if ((slice.size.height) < 1.0) + continue; + minX = (slice.origin.x); + maxX = (slice.origin.x + slice.size.width); + minY = (slice.origin.y) + 0.5; + maxY = minY; + } + CGContextBeginPath(context); + CGContextMoveToPoint(context, minX, minY); + CGContextAddLineToPoint(context, maxX, maxY); + CGContextSetStrokeColor(context, colors[sideIndex]); + CGContextStrokePath(context); + } + CGContextRestoreGState(context); + return resultRect; +} + +p;19;CPGraphicsContext.jt;1564;@STATIC;1.0;t;1545;var CPGraphicsContextCurrent = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPGraphicsContext"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_graphicsPort")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithGraphicsPort:"), function $CPGraphicsContext__initWithGraphicsPort_(self, _cmd, aGraphicsPort) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPGraphicsContext").super_class }, "init"); + if (self) + _graphicsPort = aGraphicsPort; + return self; +} +},["id","CPContext"]), new objj_method(sel_getUid("graphicsPort"), function $CPGraphicsContext__graphicsPort(self, _cmd) +{ with(self) +{ + return _graphicsPort; +} +},["CGContext"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("currentContext"), function $CPGraphicsContext__currentContext(self, _cmd) +{ with(self) +{ + return CPGraphicsContextCurrent; +} +},["CPGraphicsContext"]), new objj_method(sel_getUid("setCurrentContext:"), function $CPGraphicsContext__setCurrentContext_(self, _cmd, aGraphicsContext) +{ with(self) +{ + CPGraphicsContextCurrent = aGraphicsContext; +} +},["void","CPGraphicsContext"]), new objj_method(sel_getUid("graphicsContextWithGraphicsPort:flipped:"), function $CPGraphicsContext__graphicsContextWithGraphicsPort_flipped_(self, _cmd, aContext, aFlag) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithGraphicsPort:", aContext); +} +},["CPGraphicsContext","CGContext","BOOL"])]); +} + +p;9;CPImage.jt;12602;@STATIC;1.0;I;21;Foundation/CPBundle.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.jI;21;Foundation/CPString.ji;12;CPGeometry.jt;12422;objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("Foundation/CPNotificationCenter.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPRunLoop.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPGeometry.j", YES); +CPImageLoadStatusInitialized = 0; +CPImageLoadStatusLoading = 1; +CPImageLoadStatusCompleted = 2; +CPImageLoadStatusCancelled = 3; +CPImageLoadStatusInvalidData = 4; +CPImageLoadStatusUnexpectedEOF = 5; +CPImageLoadStatusReadError = 6; +CPImageDidLoadNotification = "CPImageDidLoadNotification"; +CPImageNameColorPanel = "CPImageNameColorPanel"; +CPImageNameColorPanelHighlighted = "CPImageNameColorPanelHighlighted"; +var imagesForNames = { }, + AppKitImageForNames = { }; +AppKitImageForNames[CPImageNameColorPanel] = CGSizeMake(26.0, 29.0); +AppKitImageForNames[CPImageNameColorPanelHighlighted] = CGSizeMake(26.0, 29.0); +CPImageInBundle= function(aFilename, aSize, aBundle) +{ + if (!aBundle) + aBundle = objj_msgSend(CPBundle, "mainBundle"); + if (aSize) + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(aBundle, "pathForResource:", aFilename), aSize); + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:", objj_msgSend(aBundle, "pathForResource:", aFilename)); +} +CPAppKitImage= function(aFilename, aSize) +{ + return CPImageInBundle(aFilename, aSize, objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPView, "class"))); +} +{var the_class = objj_allocateClassPair(CPObject, "CPImage"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_size"), new objj_ivar("_filename"), new objj_ivar("_name"), new objj_ivar("_delegate"), new objj_ivar("_loadStatus"), new objj_ivar("_image")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPImage__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initByReferencingFile:size:", "", CGSizeMake(-1, -1)); +} +},["id"]), new objj_method(sel_getUid("initByReferencingFile:size:"), function $CPImage__initByReferencingFile_size_(self, _cmd, aFilename, aSize) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImage").super_class }, "init"); + if (self) + { + _size = CPSizeCreateCopy(aSize); + _filename = aFilename; + _loadStatus = CPImageLoadStatusInitialized; + } + return self; +} +},["id","CPString","CGSize"]), new objj_method(sel_getUid("initWithContentsOfFile:size:"), function $CPImage__initWithContentsOfFile_size_(self, _cmd, aFilename, aSize) +{ with(self) +{ + self = objj_msgSend(self, "initByReferencingFile:size:", aFilename, aSize); + if (self) + objj_msgSend(self, "load"); + return self; +} +},["id","CPString","CGSize"]), new objj_method(sel_getUid("initWithContentsOfFile:"), function $CPImage__initWithContentsOfFile_(self, _cmd, aFilename) +{ with(self) +{ + self = objj_msgSend(self, "initByReferencingFile:size:", aFilename, CGSizeMake(-1, -1)); + if (self) + objj_msgSend(self, "load"); + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("filename"), function $CPImage__filename(self, _cmd) +{ with(self) +{ + return _filename; +} +},["CPString"]), new objj_method(sel_getUid("setSize:"), function $CPImage__setSize_(self, _cmd, aSize) +{ with(self) +{ + _size = CGSizeMakeCopy(aSize); +} +},["void","CGSize"]), new objj_method(sel_getUid("size"), function $CPImage__size(self, _cmd) +{ with(self) +{ + return _size; +} +},["CGSize"]), new objj_method(sel_getUid("setName:"), function $CPImage__setName_(self, _cmd, aName) +{ with(self) +{ + if (_name === aName) + return YES; + if (imagesForNames[aName]) + return NO; + _name = aName; + imagesForNames[aName] = self; + return YES; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("name"), function $CPImage__name(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("setDelegate:"), function $CPImage__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPImage__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("loadStatus"), function $CPImage__loadStatus(self, _cmd) +{ with(self) +{ + return _loadStatus; +} +},["unsigned"]), new objj_method(sel_getUid("load"), function $CPImage__load(self, _cmd) +{ with(self) +{ + if (_loadStatus == CPImageLoadStatusLoading || _loadStatus == CPImageLoadStatusCompleted) + return; + _loadStatus = CPImageLoadStatusLoading; +} +},["void"]), new objj_method(sel_getUid("isThreePartImage"), function $CPImage__isThreePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("isNinePartImage"), function $CPImage__isNinePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("_derefFromImage"), function $CPImage___derefFromImage(self, _cmd) +{ with(self) +{ + _image.onload = null; + _image.onerror = null; + _image.onabort = null; +} +},["void"]), new objj_method(sel_getUid("_imageDidLoad"), function $CPImage___imageDidLoad(self, _cmd) +{ with(self) +{ + _loadStatus = CPImageLoadStatusCompleted; + if (!_size || (_size.width == -1 && _size.height == -1)) + _size = CGSizeMake(_image.width, _image.height); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPImageDidLoadNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("imageDidLoad:"))) + objj_msgSend(_delegate, "imageDidLoad:", self); +} +},["void"]), new objj_method(sel_getUid("_imageDidError"), function $CPImage___imageDidError(self, _cmd) +{ with(self) +{ + _loadStatus = CPImageLoadStatusReadError; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("imageDidError:"))) + objj_msgSend(_delegate, "imageDidError:", self); +} +},["void"]), new objj_method(sel_getUid("_imageDidAbort"), function $CPImage___imageDidAbort(self, _cmd) +{ with(self) +{ + _loadStatus = CPImageLoadStatusCancelled; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("imageDidAbort:"))) + objj_msgSend(_delegate, "imageDidAbort:", self); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("imageNamed:"), function $CPImage__imageNamed_(self, _cmd, aName) +{ with(self) +{ + var image = imagesForNames[aName]; + if (image) + return image; + var imageOrSize = AppKitImageForNames[aName]; + if (!imageOrSize) + return nil; + if (!imageOrSize.isa) + { + imageOrSize = CPAppKitImage("CPImage/" + aName + ".png", imageOrSize); + objj_msgSend(imageOrSize, "setName:", aName); + AppKitImageForNames[aName] = imageOrSize; + } + return imageOrSize; +} +},["id","CPString"])]); +} +{ +var the_class = objj_getClass("CPImage") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPImage\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPImage__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "initWithContentsOfFile:size:", objj_msgSend(aCoder, "decodeObjectForKey:", "CPFilename"), objj_msgSend(aCoder, "decodeSizeForKey:", "CPSize")); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPImage__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _filename, "CPFilename"); + objj_msgSend(aCoder, "encodeSize:forKey:", _size, "CPSize"); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPThreePartImage"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_imageSlices"), new objj_ivar("_isVertical")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithImageSlices:isVertical:"), function $CPThreePartImage__initWithImageSlices_isVertical_(self, _cmd, imageSlices, isVertical) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPThreePartImage").super_class }, "init"); + if (self) + { + _imageSlices = imageSlices; + _isVertical = isVertical; + } + return self; +} +},["id","CPArray","BOOL"]), new objj_method(sel_getUid("filename"), function $CPThreePartImage__filename(self, _cmd) +{ with(self) +{ + return ""; +} +},["CPString"]), new objj_method(sel_getUid("imageSlices"), function $CPThreePartImage__imageSlices(self, _cmd) +{ with(self) +{ + return _imageSlices; +} +},["CPArray"]), new objj_method(sel_getUid("isVertical"), function $CPThreePartImage__isVertical(self, _cmd) +{ with(self) +{ + return _isVertical; +} +},["BOOL"]), new objj_method(sel_getUid("isThreePartImage"), function $CPThreePartImage__isThreePartImage(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("isNinePartImage"), function $CPThreePartImage__isNinePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"])]); +} +var CPThreePartImageImageSlicesKey = "CPThreePartImageImageSlicesKey", + CPThreePartImageIsVerticalKey = "CPThreePartImageIsVerticalKey"; +{ +var the_class = objj_getClass("CPThreePartImage") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPThreePartImage\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPThreePartImage__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPThreePartImage").super_class }, "init"); + if (self) + { + _imageSlices = objj_msgSend(aCoder, "decodeObjectForKey:", CPThreePartImageImageSlicesKey); + _isVertical = objj_msgSend(aCoder, "decodeBoolForKey:", CPThreePartImageIsVerticalKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPThreePartImage__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _imageSlices, CPThreePartImageImageSlicesKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isVertical, CPThreePartImageIsVerticalKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPNinePartImage"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_imageSlices")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithImageSlices:"), function $CPNinePartImage__initWithImageSlices_(self, _cmd, imageSlices) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPNinePartImage").super_class }, "init"); + if (self) + _imageSlices = imageSlices; + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("filename"), function $CPNinePartImage__filename(self, _cmd) +{ with(self) +{ + return ""; +} +},["CPString"]), new objj_method(sel_getUid("imageSlices"), function $CPNinePartImage__imageSlices(self, _cmd) +{ with(self) +{ + return _imageSlices; +} +},["CPArray"]), new objj_method(sel_getUid("isThreePartImage"), function $CPNinePartImage__isThreePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("isNinePartImage"), function $CPNinePartImage__isNinePartImage(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"])]); +} +var CPNinePartImageImageSlicesKey = "CPNinePartImageImageSlicesKey"; +{ +var the_class = objj_getClass("CPNinePartImage") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPNinePartImage\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPNinePartImage__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPNinePartImage").super_class }, "init"); + if (self) + _imageSlices = objj_msgSend(aCoder, "decodeObjectForKey:", CPNinePartImageImageSlicesKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPNinePartImage__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _imageSlices, CPNinePartImageImageSlicesKey); +} +},["void","CPCoder"])]); +} + +p;13;CPImageView.jt;12803;@STATIC;1.0;I;33;Foundation/CPNotificationCenter.ji;11;CPControl.ji;9;CPImage.ji;14;CPShadowView.jt;12697;objj_executeFile("Foundation/CPNotificationCenter.j", NO); +objj_executeFile("CPControl.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPShadowView.j", YES); +CPScaleProportionally = 0; +CPScaleToFit = 1; +CPScaleNone = 2; +CPImageAlignCenter = 0; +CPImageAlignTop = 1; +CPImageAlignTopLeft = 2; +CPImageAlignTopRight = 3; +CPImageAlignLeft = 4; +CPImageAlignBottom = 5; +CPImageAlignBottomLeft = 6; +CPImageAlignBottomRight = 7; +CPImageAlignRight = 8; +var CPImageViewShadowBackgroundColor = nil, + CPImageViewEmptyPlaceholderImage = nil; +var LEFT_SHADOW_INSET = 3.0, + RIGHT_SHADOW_INSET = 3.0, + TOP_SHADOW_INSET = 3.0, + BOTTOM_SHADOW_INSET = 5.0, + VERTICAL_SHADOW_INSET = TOP_SHADOW_INSET + BOTTOM_SHADOW_INSET, + HORIZONTAL_SHADOW_INSET = LEFT_SHADOW_INSET + RIGHT_SHADOW_INSET; +{var the_class = objj_allocateClassPair(CPControl, "CPImageView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_DOMImageElement"), new objj_ivar("_hasShadow"), new objj_ivar("_shadowView"), new objj_ivar("_isEditable"), new objj_ivar("_imageRect"), new objj_ivar("_imageAlignment")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPImageView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "initWithFrame:", aFrame); + if (self) + { + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("image"), function $CPImageView__image(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "objectValue"); +} +},["CPImage"]), new objj_method(sel_getUid("setImage:"), function $CPImageView__setImage_(self, _cmd, anImage) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", anImage); +} +},["void","CPImage"]), new objj_method(sel_getUid("setObjectValue:"), function $CPImageView__setObjectValue_(self, _cmd, anImage) +{ with(self) +{ + var oldImage = objj_msgSend(self, "objectValue"); + if (oldImage === anImage) + return; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "setObjectValue:", anImage); + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (oldImage) + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPImageDidLoadNotification, oldImage); + var newImage = objj_msgSend(self, "objectValue"); + var size = objj_msgSend(newImage, "size"); + if (size && size.width === -1 && size.height === -1) + { + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("imageDidLoad:"), CPImageDidLoadNotification, newImage); + objj_msgSend(_shadowView, "setHidden:", YES); + } + else + { + objj_msgSend(self, "hideOrDisplayContents"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } +} +},["void","CPImage"]), new objj_method(sel_getUid("imageDidLoad:"), function $CPImageView__imageDidLoad_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "hideOrDisplayContents"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPNotification"]), new objj_method(sel_getUid("hasShadow"), function $CPImageView__hasShadow(self, _cmd) +{ with(self) +{ + return _hasShadow; +} +},["BOOL"]), new objj_method(sel_getUid("setHasShadow:"), function $CPImageView__setHasShadow_(self, _cmd, shouldHaveShadow) +{ with(self) +{ + if (_hasShadow == shouldHaveShadow) + return; + _hasShadow = shouldHaveShadow; + if (_hasShadow) + { + _shadowView = objj_msgSend(objj_msgSend(CPShadowView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(self, "addSubview:", _shadowView); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } + else + { + objj_msgSend(_shadowView, "removeFromSuperview"); + _shadowView = nil; + } + objj_msgSend(self, "hideOrDisplayContents"); +} +},["void","BOOL"]), new objj_method(sel_getUid("setImageAlignment:"), function $CPImageView__setImageAlignment_(self, _cmd, anImageAlignment) +{ with(self) +{ + if (_imageAlignment == anImageAlignment) + return; + _imageAlignment = anImageAlignment; + if (!objj_msgSend(self, "image")) + return; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPImageAlignment"]), new objj_method(sel_getUid("imageAlignment"), function $CPImageView__imageAlignment(self, _cmd) +{ with(self) +{ + return _imageAlignment; +} +},["unsigned"]), new objj_method(sel_getUid("setImageScaling:"), function $CPImageView__setImageScaling_(self, _cmd, anImageScaling) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "setImageScaling:", anImageScaling); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPImageScaling"]), new objj_method(sel_getUid("imageScaling"), function $CPImageView__imageScaling(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "image-scaling"); +} +},["unsigned"]), new objj_method(sel_getUid("hideOrDisplayContents"), function $CPImageView__hideOrDisplayContents(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "image")) + { + objj_msgSend(_shadowView, "setHidden:", YES); + } + else + { + objj_msgSend(_shadowView, "setHidden:", NO); + } +} +},["void"]), new objj_method(sel_getUid("imageRect"), function $CPImageView__imageRect(self, _cmd) +{ with(self) +{ + return _imageRect; +} +},["CGRect"]), new objj_method(sel_getUid("layoutSubviews"), function $CPImageView__layoutSubviews(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "image")) + return; + var bounds = objj_msgSend(self, "bounds"), + image = objj_msgSend(self, "image"), + imageScaling = objj_msgSend(self, "currentValueForThemeAttribute:", "image-scaling"), + x = 0.0, + y = 0.0, + insetWidth = (_hasShadow ? HORIZONTAL_SHADOW_INSET : 0.0), + insetHeight = (_hasShadow ? VERTICAL_SHADOW_INSET : 0.0), + boundsWidth = (bounds.size.width), + boundsHeight = (bounds.size.height), + width = boundsWidth - insetWidth, + height = boundsHeight - insetHeight; + if (imageScaling === CPScaleToFit) + { + } + else + { + var size = objj_msgSend(image, "size"); + if (size.width == -1 && size.height == -1) + return; + if (imageScaling === CPScaleProportionally) + { + if (width >= size.width && height >= size.height) + { + width = size.width; + height = size.height; + } + else + { + var imageRatio = size.width / size.height, + viewRatio = width / height; + if (viewRatio > imageRatio) + width = height * imageRatio; + else + height = width / imageRatio; + } + } + else + { + width = size.width; + height = size.height; + } + if (imageScaling == CPScaleNone) + { + } + var x, y; + switch (_imageAlignment) + { + case CPImageAlignLeft: + case CPImageAlignTopLeft: + case CPImageAlignBottomLeft: + x = 0.0; + break; + case CPImageAlignRight: + case CPImageAlignTopRight: + case CPImageAlignBottomRight: + x = boundsWidth - width; + break; + default: + x = (boundsWidth - width) / 2.0; + break; + } + switch (_imageAlignment) + { + case CPImageAlignTop: + case CPImageAlignTopLeft: + case CPImageAlignTopRight: + y = 0.0; + break; + case CPImageAlignBottom: + case CPImageAlignBottomLeft: + case CPImageAlignBottomRight: + y = boundsHeight - height; + break; + default: + y = (boundsHeight - height) / 2.0; + break; + } + } + _imageRect = { origin: { x:x, y:y }, size: { width:width, height:height } }; + if (_hasShadow) + objj_msgSend(_shadowView, "setFrame:", { origin: { x:x - LEFT_SHADOW_INSET, y:y - TOP_SHADOW_INSET }, size: { width:width + insetWidth, height:height + insetHeight } }); +} +},["void"]), new objj_method(sel_getUid("mouseDown:"), function $CPImageView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setEditable:"), function $CPImageView__setEditable_(self, _cmd, shouldBeEditable) +{ with(self) +{ + if (_isEditable === shouldBeEditable) + return; + _isEditable = shouldBeEditable; + if (_isEditable) + objj_msgSend(self, "registerForDraggedTypes:", [CPImagesPboardType]); + else + { + var draggedTypes = objj_msgSend(self, "registeredDraggedTypes"); + objj_msgSend(self, "unregisterDraggedTypes"); + objj_msgSend(draggedTypes, "removeObjectIdenticalTo:", CPImagesPboardType); + objj_msgSend(self, "registerForDraggedTypes:", draggedTypes); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("isEditable"), function $CPImageView__isEditable(self, _cmd) +{ with(self) +{ + return _isEditable; +} +},["BOOL"]), new objj_method(sel_getUid("performDragOperation:"), function $CPImageView__performDragOperation_(self, _cmd, aSender) +{ with(self) +{ + var images = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(objj_msgSend(aSender, "draggingPasteboard"), "dataForType:", CPImagesPboardType)); + if (objj_msgSend(images, "count")) + { + objj_msgSend(self, "setImage:", images[0]); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + } + return YES; +} +},["BOOL","CPDraggingInfo"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPImageView__initialize(self, _cmd) +{ with(self) +{ + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPView, "class")); + CPImageViewEmptyPlaceholderImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:", objj_msgSend(bundle, "pathForResource:", "empty.png")); +} +},["void"])]); +} +var CPImageViewImageKey = "CPImageViewImageKey", + CPImageViewImageScalingKey = "CPImageViewImageScalingKey", + CPImageViewImageAlignmentKey = "CPImageViewImageAlignmentKey", + CPImageViewHasShadowKey = "CPImageViewHasShadowKey", + CPImageViewIsEditableKey = "CPImageViewIsEditableKey"; +{ +var the_class = objj_getClass("CPImageView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPImageView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPImageView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "initWithCoder:", aCoder); + if (self) + { + objj_msgSend(self, "setHasShadow:", objj_msgSend(aCoder, "decodeBoolForKey:", CPImageViewHasShadowKey)); + objj_msgSend(self, "setImageAlignment:", objj_msgSend(aCoder, "decodeIntForKey:", CPImageViewImageAlignmentKey)); + if (objj_msgSend(aCoder, "decodeBoolForKey:", CPImageViewIsEditableKey) || NO) + objj_msgSend(self, "setEditable:", YES); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPImageView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_shadowView) + { + var actualSubviews = _subviews; + _subviews = objj_msgSend(_subviews, "copy"); + objj_msgSend(_subviews, "removeObjectIdenticalTo:", _shadowView); + } + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPImageView").super_class }, "encodeWithCoder:", aCoder); + if (_shadowView) + _subviews = actualSubviews; + objj_msgSend(aCoder, "encodeBool:forKey:", _hasShadow, CPImageViewHasShadowKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _imageAlignment, CPImageViewImageAlignmentKey); + if (_isEditable) + objj_msgSend(aCoder, "encodeBool:forKey:", _isEditable, CPImageViewIsEditableKey); +} +},["void","CPCoder"])]); +} + +p;14;CPKeyBinding.jt;11133;@STATIC;1.0;I;21;Foundation/CPObject.jt;11087;objj_executeFile("Foundation/CPObject.j", NO); +CPStandardKeyBindings = { + "@.": "cancelOperation:", + "^a": "moveToBeginningOfParagraph:", + "^$a": "moveToBeginningOfParagraphAndModifySelection:", + "^b": "moveBackward:", + "^$b": "moveBackwardAndModifySelection:", + "^~b": "moveWordBackward:", + "^~$b": "moveWordBackwardAndModifySelection:", + "^d": "deleteForward:", + "^e": "moveToEndOfParagraph:", + "^$e": "moveToEndOfParagraphAndModifySelection:", + "^f": "moveForward:", + "^$f": "moveForwardAndModifySelection:", + "^~f": "moveWordForward:", + "^~$f": "moveWordForwardAndModifySelection:", + "^h": "deleteBackward:", + "^k": "deleteToEndOfParagraph:", + "^l": "centerSelectionInVisibleArea:", + "^n": "moveDown:", + "^$n": "moveDownAndModifySelection:", + "^o": ["insertNewlineIgnoringFieldEditor:", "moveBackward:"], + "^p": "moveUp:", + "^$p": "moveUpAndModifySelection:", + "^t": "transpose:", + "^v": "pageDown:", + "^$v": "pageDownAndModifySelection:", + "^y": "yank:" +}; +CPStandardKeyBindings[CPNewlineCharacter] = "insertNewline:"; +CPStandardKeyBindings[CPCarriageReturnCharacter] = "insertNewline:"; +CPStandardKeyBindings[CPEnterCharacter] = "insertNewline:"; +CPStandardKeyBindings["~" + CPNewlineCharacter] = "insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~" + CPCarriageReturnCharacter] = "insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["~" + CPEnterCharacter] = "insertNewlineIgnoringFieldEditor:"; +CPStandardKeyBindings["^" + CPNewlineCharacter] = "insertLineBreak:"; +CPStandardKeyBindings["^" + CPCarriageReturnCharacter] = "insertLineBreak:"; +CPStandardKeyBindings["^" + CPEnterCharacter] = "insertLineBreak:"; +CPStandardKeyBindings[CPBackspaceCharacter] = "deleteBackward:"; +CPStandardKeyBindings["~" + CPBackspaceCharacter] = "deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteCharacter] = "deleteBackward:"; +CPStandardKeyBindings["@" + CPDeleteCharacter] = "deleteToBeginningOfLine:"; +CPStandardKeyBindings["~" + CPDeleteCharacter] = "deleteWordBackward:"; +CPStandardKeyBindings["^" + CPDeleteCharacter] = "deleteBackwardByDecomposingPreviousCharacter:"; +CPStandardKeyBindings["^~" + CPDeleteCharacter] = "deleteWordBackward:"; +CPStandardKeyBindings[CPDeleteFunctionKey] = "deleteForward:"; +CPStandardKeyBindings["~" + CPDeleteFunctionKey] = "deleteWordForward:"; +CPStandardKeyBindings[CPTabCharacter] = "insertTab:"; +CPStandardKeyBindings["~" + CPTabCharacter] = "insertTabIgnoringFieldEditor:"; +CPStandardKeyBindings["^" + CPTabCharacter] = "selectNextKeyView:"; +CPStandardKeyBindings[CPBackTabCharacter] = "insertBacktab:"; +CPStandardKeyBindings["^" + CPBackTabCharacter] = "selectPreviousKeyView:"; +CPStandardKeyBindings[CPEscapeFunctionKey] = "cancelOperation:"; +CPStandardKeyBindings["~" + CPEscapeFunctionKey] = "complete:"; +CPStandardKeyBindings[CPF5FunctionKey] = "complete:"; +CPStandardKeyBindings[CPLeftArrowFunctionKey] = "moveLeft:"; +CPStandardKeyBindings["~" + CPLeftArrowFunctionKey] = "moveWordLeft:"; +CPStandardKeyBindings["^" + CPLeftArrowFunctionKey] = "moveToLeftEndOfLine:"; +CPStandardKeyBindings["@" + CPLeftArrowFunctionKey] = "moveToLeftEndOfLine:"; +CPStandardKeyBindings["$" + CPLeftArrowFunctionKey] = "moveLeftAndModifySelection:"; +CPStandardKeyBindings["$~" + CPLeftArrowFunctionKey] = "moveWordLeftAndModifySelection:"; +CPStandardKeyBindings["$^" + CPLeftArrowFunctionKey] = "moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@" + CPLeftArrowFunctionKey] = "moveToLeftEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^" + CPLeftArrowFunctionKey] = "makeBaseWritingDirectionRightToLeft:"; +CPStandardKeyBindings["@^~" + CPLeftArrowFunctionKey] = "makeTextWritingDirectionRightToLeft:"; +CPStandardKeyBindings[CPRightArrowFunctionKey] = "moveRight:"; +CPStandardKeyBindings["~" + CPRightArrowFunctionKey] = "moveWordRight:"; +CPStandardKeyBindings["^" + CPRightArrowFunctionKey] = "moveToRightEndOfLine:"; +CPStandardKeyBindings["@" + CPRightArrowFunctionKey] = "moveToRightEndOfLine:"; +CPStandardKeyBindings["$" + CPRightArrowFunctionKey] = "moveRightAndModifySelection:"; +CPStandardKeyBindings["$~" + CPRightArrowFunctionKey] = "moveWordRightAndModifySelection:"; +CPStandardKeyBindings["$^" + CPRightArrowFunctionKey] = "moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["$@" + CPRightArrowFunctionKey] = "moveToRightEndOfLineAndModifySelection:"; +CPStandardKeyBindings["@^" + CPRightArrowFunctionKey] = "makeBaseWritingDirectionLeftToRight:"; +CPStandardKeyBindings["@^~" + CPRightArrowFunctionKey] = "makeTextWritingDirectionLeftToRight:"; +CPStandardKeyBindings[CPUpArrowFunctionKey] = "moveUp:"; +CPStandardKeyBindings["~" + CPUpArrowFunctionKey] = ["moveBackward:", "moveToBeginningOfParagraph:"]; +CPStandardKeyBindings["^" + CPUpArrowFunctionKey] = "scrollPageUp:"; +CPStandardKeyBindings["@" + CPUpArrowFunctionKey] = "moveToBeginningOfDocument:"; +CPStandardKeyBindings["$" + CPUpArrowFunctionKey] = "moveUpAndModifySelection:"; +CPStandardKeyBindings["$~" + CPUpArrowFunctionKey] = "moveParagraphBackwardAndModifySelection:"; +CPStandardKeyBindings["$@" + CPUpArrowFunctionKey] = "moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPDownArrowFunctionKey] = "moveDown:"; +CPStandardKeyBindings["~" + CPDownArrowFunctionKey] = ["moveForward:", "moveToEndOfParagraph:"]; +CPStandardKeyBindings["^" + CPDownArrowFunctionKey] = "scrollPageDown:"; +CPStandardKeyBindings["@" + CPDownArrowFunctionKey] = "moveToEndOfDocument:"; +CPStandardKeyBindings["$" + CPDownArrowFunctionKey] = "moveDownAndModifySelection:"; +CPStandardKeyBindings["$~" + CPDownArrowFunctionKey] = "moveParagraphForwardAndModifySelection:"; +CPStandardKeyBindings["$@" + CPDownArrowFunctionKey] = "moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings["@^" + CPDownArrowFunctionKey] = "makeBaseWritingDirectionNatural:"; +CPStandardKeyBindings["@^~" + CPDownArrowFunctionKey] = "makeTextWritingDirectionNatural:"; +CPStandardKeyBindings[CPHomeFunctionKey] = "scrollToBeginningOfDocument:"; +CPStandardKeyBindings["$" + CPHomeFunctionKey] = "moveToBeginningOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPEndFunctionKey] = "scrollToEndOfDocument:"; +CPStandardKeyBindings["$" + CPEndFunctionKey] = "moveToEndOfDocumentAndModifySelection:"; +CPStandardKeyBindings[CPPageUpFunctionKey] = "scrollPageUp:"; +CPStandardKeyBindings["~" + CPPageUpFunctionKey] = "pageUp:"; +CPStandardKeyBindings["$" + CPPageUpFunctionKey] = "pageUpAndModifySelection:"; +CPStandardKeyBindings[CPPageDownFunctionKey] = "scrollPageDown:"; +CPStandardKeyBindings["~" + CPPageDownFunctionKey] = "pageDown:"; +CPStandardKeyBindings["$" + CPPageDownFunctionKey] = "pageDownAndModifySelection:"; +var CPKeyBindingCache = {}; +{var the_class = objj_allocateClassPair(CPObject, "CPKeyBinding"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_key"), new objj_ivar("_modifierFlags"), new objj_ivar("_selectors"), new objj_ivar("_cacheName")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithKey:modifierFlags:selectors:"), function $CPKeyBinding__initWithKey_modifierFlags_selectors_(self, _cmd, aKey, aFlag, selectors) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPKeyBinding").super_class }, "init"); + if (self) + { + _key = aKey; + _modifierFlags = aFlag; + _selectors = selectors; + var cacheName = []; + if (_modifierFlags & CPCommandKeyMask) + cacheName.push("@"); + if (_modifierFlags & CPControlKeyMask) + cacheName.push("^"); + if (_modifierFlags & CPAlternateKeyMask) + cacheName.push("~"); + if (_modifierFlags & CPShiftKeyMask) + cacheName.push("$"); + cacheName.push(_key); + _cacheName = cacheName.join(""); + } + return self; +} +},["id","CPString","unsigned","CPArray"]), new objj_method(sel_getUid("key"), function $CPKeyBinding__key(self, _cmd) +{ with(self) +{ + return _key; +} +},["CPString"]), new objj_method(sel_getUid("modifierFlags"), function $CPKeyBinding__modifierFlags(self, _cmd) +{ with(self) +{ + return _modifierFlags; +} +},["unsigned"]), new objj_method(sel_getUid("selectors"), function $CPKeyBinding__selectors(self, _cmd) +{ with(self) +{ + return _selectors; +} +},["CPArray"]), new objj_method(sel_getUid("_cacheName"), function $CPKeyBinding___cacheName(self, _cmd) +{ with(self) +{ + return _cacheName; +} +},["CPString"]), new objj_method(sel_getUid("isEqual:"), function $CPKeyBinding__isEqual_(self, _cmd, rhs) +{ with(self) +{ + return _key === objj_msgSend(rhs, "key") && _modifierFlags === objj_msgSend(rhs, "modifierFlags"); +} +},["BOOL","CPKeyBinding"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPKeyBinding__initialize(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "class") !== CPKeyBinding) + return; + objj_msgSend(self, "createKeyBindingsFromJSObject:", CPStandardKeyBindings); +} +},["void"]), new objj_method(sel_getUid("createKeyBindingsFromJSObject:"), function $CPKeyBinding__createKeyBindingsFromJSObject_(self, _cmd, anObject) +{ with(self) +{ + var binding; + for (binding in anObject) + { + var components = binding.split(""), + modifierFlags = (objj_msgSend(components, "containsObject:", "$") ? CPShiftKeyMask : 0) | + (objj_msgSend(components, "containsObject:", "^") ? CPControlKeyMask : 0) | + (objj_msgSend(components, "containsObject:", "~") ? CPAlternateKeyMask : 0) | + (objj_msgSend(components, "containsObject:", "@") ? CPCommandKeyMask : 0); + var selectors = anObject[binding]; + if (!objj_msgSend(selectors, "isKindOfClass:", CPArray)) + selectors = [selectors]; + var keyBinding = objj_msgSend(objj_msgSend(self, "alloc"), "initWithKey:modifierFlags:selectors:", objj_msgSend(components, "lastObject"), modifierFlags, selectors); + objj_msgSend(self, "cacheKeyBinding:", keyBinding); + } +} +},["void","JSObject"]), new objj_method(sel_getUid("cacheKeyBinding:"), function $CPKeyBinding__cacheKeyBinding_(self, _cmd, aBinding) +{ with(self) +{ + if (!aBinding) + return; + CPKeyBindingCache[objj_msgSend(aBinding, "_cacheName")] = aBinding; +} +},["void","CPKeyBinding"]), new objj_method(sel_getUid("keyBindingForKey:modifierFlags:"), function $CPKeyBinding__keyBindingForKey_modifierFlags_(self, _cmd, aKey, aFlag) +{ with(self) +{ + var tempBinding = objj_msgSend(objj_msgSend(self, "alloc"), "initWithKey:modifierFlags:selectors:", aKey, aFlag, nil); + return CPKeyBindingCache[objj_msgSend(tempBinding, "_cacheName")]; +} +},["CPKeyBinding","CPString","unsigned"]), new objj_method(sel_getUid("selectorsForKey:modifierFlags:"), function $CPKeyBinding__selectorsForKey_modifierFlags_(self, _cmd, aKey, aFlag) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "keyBindingForKey:modifierFlags:", aKey, aFlag), "selectors"); +} +},["CPArray","CPString","unsigned"])]); +} + +p;19;CPKeyValueBinding.jt;18816;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;31;Foundation/CPValueTransformer.jt;18679;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPValueTransformer.j", NO); +var exposedBindingsMap = objj_msgSend(CPDictionary, "new"), + bindingsMap = objj_msgSend(CPDictionary, "new"); +var CPBindingOperationAnd = 0, + CPBindingOperationOr = 1; +{var the_class = objj_allocateClassPair(CPObject, "CPKeyValueBinding"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_info"), new objj_ivar("_source")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithBinding:name:to:keyPath:options:from:"), function $CPKeyValueBinding__initWithBinding_name_to_keyPath_options_from_(self, _cmd, aBinding, aName, aDestination, aKeyPath, options, aSource) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPKeyValueBinding").super_class }, "init"); + if (self) + { + _source = aSource; + _info = objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [aDestination, aKeyPath], [CPObservedObjectKey, CPObservedKeyPathKey]); + if (options) + objj_msgSend(_info, "setObject:forKey:", options, CPOptionsKey); + objj_msgSend(aDestination, "addObserver:forKeyPath:options:context:", self, aKeyPath, CPKeyValueObservingOptionNew, aBinding); + var bindings = objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(_source, "hash")); + if (!bindings) + { + bindings = objj_msgSend(CPDictionary, "new"); + objj_msgSend(bindingsMap, "setObject:forKey:", bindings, objj_msgSend(_source, "hash")); + } + objj_msgSend(bindings, "setObject:forKey:", self, aName); + objj_msgSend(self, "setValueFor:", aBinding); + } + return self; +} +},["id","CPString","CPString","id","CPString","CPDictionary","id"]), new objj_method(sel_getUid("setValueFor:"), function $CPKeyValueBinding__setValueFor_(self, _cmd, aBinding) +{ with(self) +{ + var destination = objj_msgSend(_info, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(_info, "objectForKey:", CPObservedKeyPathKey), + options = objj_msgSend(_info, "objectForKey:", CPOptionsKey), + newValue = objj_msgSend(destination, "valueForKeyPath:", keyPath); + newValue = objj_msgSend(self, "transformValue:withOptions:", newValue, options); + objj_msgSend(_source, "setValue:forKey:", newValue, aBinding); +} +},["void","CPString"]), new objj_method(sel_getUid("reverseSetValueFor:"), function $CPKeyValueBinding__reverseSetValueFor_(self, _cmd, aBinding) +{ with(self) +{ + var destination = objj_msgSend(_info, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(_info, "objectForKey:", CPObservedKeyPathKey), + options = objj_msgSend(_info, "objectForKey:", CPOptionsKey), + newValue = objj_msgSend(_source, "valueForKeyPath:", aBinding); + newValue = objj_msgSend(self, "reverseTransformValue:withOptions:", newValue, options); + objj_msgSend(destination, "setValue:forKeyPath:", newValue, keyPath); +} +},["void","CPString"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $CPKeyValueBinding__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, changes, context) +{ with(self) +{ + if (!changes) + return; + objj_msgSend(self, "setValueFor:", context); +} +},["void","CPString","id","CPDictionary","id"]), new objj_method(sel_getUid("transformValue:withOptions:"), function $CPKeyValueBinding__transformValue_withOptions_(self, _cmd, aValue, options) +{ with(self) +{ + var valueTransformerName, + valueTransformer, + placeholder; + var valueTransformerName = objj_msgSend(options, "objectForKey:", CPValueTransformerNameBindingOption), + valueTransformer; + if (valueTransformerName) + { + valueTransformer = objj_msgSend(CPValueTransformer, "valueTransformerForName:", valueTransformerName); + if (!valueTransformer) + { + var valueTransformerClass = CPClassFromString(valueTransformerName); + if (valueTransformerClass) + { + valueTransformer = objj_msgSend(objj_msgSend(valueTransformerClass, "alloc"), "init"); + objj_msgSend(valueTransformerClass, "setValueTransformer:forName:", valueTransformer, valueTransformerName); + } + } + } + else + valueTransformer = objj_msgSend(options, "objectForKey:", CPValueTransformerBindingOption); + if (valueTransformer) + aValue = objj_msgSend(valueTransformer, "transformedValue:", aValue); + switch (aValue) + { + case CPMultipleValuesMarker: return objj_msgSend(options, "objectForKey:", CPMultipleValuesPlaceholderBindingOption) || "Multiple Values"; + case CPNoSelectionMarker: return objj_msgSend(options, "objectForKey:", CPNoSelectionPlaceholderBindingOption) || "No Selection"; + case CPNotApplicableMarker: if (objj_msgSend(options, "objectForKey:", CPRaisesForNotApplicableKeysBindingOption)) + objj_msgSend(CPException, "raise:reason:", CPGenericException, "can't transform non applicable key on: "+_source+" value: "+aValue); + return objj_msgSend(options, "objectForKey:", CPNotApplicablePlaceholderBindingOption) || "Not Applicable"; + case nil: + case undefined: return objj_msgSend(options, "objectForKey:", CPNullPlaceholderBindingOption) || nil; + } + return aValue; +} +},["id","id","CPDictionary"]), new objj_method(sel_getUid("reverseTransformValue:withOptions:"), function $CPKeyValueBinding__reverseTransformValue_withOptions_(self, _cmd, aValue, options) +{ with(self) +{ + var valueTransformerName = objj_msgSend(options, "objectForKey:", CPValueTransformerNameBindingOption), + valueTransformer; + if (valueTransformerName) + valueTransformer = objj_msgSend(CPValueTransformer, "valueTransformerForName:", valueTransformerName); + else + valueTransformer = objj_msgSend(options, "objectForKey:", CPValueTransformerBindingOption); + if (valueTransformer && objj_msgSend(objj_msgSend(valueTransformer, "class"), "allowsReverseTransformation")) + aValue = objj_msgSend(valueTransformer, "transformedValue:", aValue); + return aValue; +} +},["id","id","CPDictionary"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("exposeBinding:forClass:"), function $CPKeyValueBinding__exposeBinding_forClass_(self, _cmd, aBinding, aClass) +{ with(self) +{ + var bindings = objj_msgSend(exposedBindingsMap, "objectForKey:", objj_msgSend(aClass, "hash")); + if (!bindings) + { + bindings = []; + objj_msgSend(exposedBindingsMap, "setObject:forKey:", bindings, objj_msgSend(aClass, "hash")); + } + bindings.push(aBinding); +} +},["void","CPString","Class"]), new objj_method(sel_getUid("exposedBindingsForClass:"), function $CPKeyValueBinding__exposedBindingsForClass_(self, _cmd, aClass) +{ with(self) +{ + return objj_msgSend(objj_msgSend(exposedBindingsMap, "objectForKey:", objj_msgSend(aClass, "hash")), "copy"); +} +},["CPArray","Class"]), new objj_method(sel_getUid("getBinding:forObject:"), function $CPKeyValueBinding__getBinding_forObject_(self, _cmd, aBinding, anObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(anObject, "hash")), "objectForKey:", aBinding); +} +},["CPKeyValueBinding","CPString","id"]), new objj_method(sel_getUid("infoForBinding:forObject:"), function $CPKeyValueBinding__infoForBinding_forObject_(self, _cmd, aBinding, anObject) +{ with(self) +{ + var theBinding = objj_msgSend(self, "getBinding:forObject:", aBinding, anObject); + if (theBinding) + return theBinding._info; + return nil; +} +},["CPDictionary","CPString","id"]), new objj_method(sel_getUid("allBindingsForObject:"), function $CPKeyValueBinding__allBindingsForObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(anObject, "hash")); +} +},["CPDictionary","id"]), new objj_method(sel_getUid("unbind:forObject:"), function $CPKeyValueBinding__unbind_forObject_(self, _cmd, aBinding, anObject) +{ with(self) +{ + var bindings = objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(anObject, "hash")); + if (!bindings) + return; + var theBinding = objj_msgSend(bindings, "objectForKey:", aBinding); + if (!theBinding) + return; + var infoDictionary = theBinding._info, + observedObject = objj_msgSend(infoDictionary, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(infoDictionary, "objectForKey:", CPObservedKeyPathKey); + objj_msgSend(observedObject, "removeObserver:forKeyPath:", theBinding, keyPath); + objj_msgSend(bindings, "removeObjectForKey:", aBinding); +} +},["void","CPString","id"]), new objj_method(sel_getUid("unbindAllForObject:"), function $CPKeyValueBinding__unbindAllForObject_(self, _cmd, anObject) +{ with(self) +{ + var bindings = objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(anObject, "hash")); + if (!bindings) + return; + var allKeys = objj_msgSend(bindings, "allKeys"), + count = allKeys.length; + while (count--) + objj_msgSend(anObject, "unbind:", objj_msgSend(bindings, "objectForKey:", allKeys[count])); + objj_msgSend(bindingsMap, "removeObjectForKey:", objj_msgSend(anObject, "hash")); +} +},["void","id"])]); +} +{ +var the_class = objj_getClass("CPObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("exposedBindings"), function $CPObject__exposedBindings(self, _cmd) +{ with(self) +{ + var exposedBindings = [], + theClass = objj_msgSend(self, "class"); + while(theClass) + { + var temp = objj_msgSend(CPKeyValueBinding, "exposedBindingsForClass:", theClass); + if (temp) + objj_msgSend(exposedBindings, "addObjectsFromArray:", temp); + theClass = objj_msgSend(theClass, "superclass"); + } + return exposedBindings; +} +},["CPArray"]), new objj_method(sel_getUid("valueClassForBinding:"), function $CPObject__valueClassForBinding_(self, _cmd, binding) +{ with(self) +{ + return objj_msgSend(CPString, "class"); +} +},["Class","CPString"]), new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"), function $CPObject__bind_toObject_withKeyPath_options_(self, _cmd, aBinding, anObject, aKeyPath, options) +{ with(self) +{ + if (!anObject || !aKeyPath) + return CPLog.error("Invalid object or path on "+self+" for "+aBinding); + objj_msgSend(self, "unbind:", aBinding); + objj_msgSend(objj_msgSend(CPKeyValueBinding, "alloc"), "initWithBinding:name:to:keyPath:options:from:", objj_msgSend(self, "_replacementKeyPathForBinding:", aBinding), aBinding, anObject, aKeyPath, options, self); +} +},["void","CPString","id","CPString","CPDictionary"]), new objj_method(sel_getUid("infoForBinding:"), function $CPObject__infoForBinding_(self, _cmd, aBinding) +{ with(self) +{ + return objj_msgSend(CPKeyValueBinding, "infoForBinding:forObject:", aBinding, self); +} +},["CPDictionary","CPString"]), new objj_method(sel_getUid("unbind:"), function $CPObject__unbind_(self, _cmd, aBinding) +{ with(self) +{ + objj_msgSend(CPKeyValueBinding, "unbind:forObject:", aBinding, self); +} +},["void","CPString"]), new objj_method(sel_getUid("_replacementKeyPathForBinding:"), function $CPObject___replacementKeyPathForBinding_(self, _cmd, binding) +{ with(self) +{ + return binding; +} +},["id","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("exposeBinding:"), function $CPObject__exposeBinding_(self, _cmd, aBinding) +{ with(self) +{ + objj_msgSend(CPKeyValueBinding, "exposeBinding:forClass:", aBinding, objj_msgSend(self, "class")); +} +},["void","CPString"])]); +} +{var the_class = objj_allocateClassPair(CPKeyValueBinding, "_CPKeyValueOrBinding"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setValueFor:"), function $_CPKeyValueOrBinding__setValueFor_(self, _cmd, aBinding) +{ with(self) +{ + var bindings = objj_msgSend(bindingsMap, "valueForKey:", objj_msgSend(_source, "hash")); + if (!bindings) + return; + objj_msgSend(_source, "setValue:forKey:", resolveMultipleValues(aBinding, bindings, CPBindingOperationOr), aBinding); +} +},["void","CPString"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPKeyValueOrBinding__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, changes, context) +{ with(self) +{ + objj_msgSend(self, "setValueFor:", context); +} +},["void","CPString","id","CPDictionary","id"])]); +} +{var the_class = objj_allocateClassPair(CPKeyValueBinding, "_CPKeyValueAndBinding"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setValueFor:"), function $_CPKeyValueAndBinding__setValueFor_(self, _cmd, aBinding) +{ with(self) +{ + var bindings = objj_msgSend(bindingsMap, "objectForKey:", objj_msgSend(_source, "hash")); + if (!bindings) + return; + objj_msgSend(_source, "setValue:forKey:", resolveMultipleValues(aBinding, bindings, CPBindingOperationAnd), aBinding); +} +},["void","CPString"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPKeyValueAndBinding__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObejct, changes, context) +{ with(self) +{ + objj_msgSend(self, "setValueFor:", context); +} +},["void","CPString","id","CPDictionary","id"])]); +} +var resolveMultipleValues = resolveMultipleValues= function( key, bindings, operation) +{ + var bindingName = key, + theBinding, + count = 1; + while (theBinding = objj_msgSend(bindings, "objectForKey:", bindingName)) + { + var infoDictionary = theBinding._info, + object = objj_msgSend(infoDictionary, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(infoDictionary, "objectForKey:", CPObservedKeyPathKey), + options = objj_msgSend(infoDictionary, "objectForKey:", CPOptionsKey); + var value = objj_msgSend(theBinding, "transformValue:withOptions:", objj_msgSend(object, "valueForKeyPath:", keyPath), options); + if (value == operation) + return operation; + bindingName = objj_msgSend(CPString, "stringWithFormat:", "%@%i", key, ++count); + } + return !operation; +} +var invokeAction = invokeAction= function( targetKey, argumentKey, bindings) +{ + var theBinding = objj_msgSend(bindings, "objectForKey:", targetKey), + infoDictionary = theBinding._info, + object = objj_msgSend(infoDictionary, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(infoDictionary, "objectForKey:", CPObservedKeyPathKey), + options = objj_msgSend(infoDictionary, "objectForKey:", CPOptionsKey), + target = objj_msgSend(object, "valueForKeyPath:", keyPath), + selector = objj_msgSend(options, "objectForKey:", CPSelectorNameBindingOption); + if (!target || !selector) + return; + var invocation = objj_msgSend(CPInvocation, "invocationWithMethodSignature:", objj_msgSend(target, "methodSignatureForSelector:", selector)); + objj_msgSend(invocation, "setSelector:", selector); + var bindingName = argumentKey + count = 1; + while (theBinding = objj_msgSend(bindings, "objectForKey:", bindingName)) + { + infoDictionary = theBinding._info; + keyPath = objj_msgSend(infoDictionary, "objectForKey:", CPObserverKeyPathKey); + object = objj_msgSend(objj_msgSend(infoDictionary, "objectForKey:", CPObservedObjectKey), "valueForKeyPath:", keyPath); + if (object) + objj_msgSend(invocation, "setArgument:atIndex:", object, ++count); + bindingName = objj_msgSend(CPString, "stringWithFormat:", "%@%i", argumentKey, count); + } + objj_msgSend(invocation, "invoke"); +} +CPObservedObjectKey = "CPObservedObjectKey"; +CPObservedKeyPathKey = "CPObservedKeyPathKey"; +CPOptionsKey = "CPOptionsKey"; +CPMultipleValuesMarker = "CPMultipleValuesMarker"; +CPNoSelectionMarker = "CPNoSelectionMarker"; +CPNotApplicableMarker = "CPNotApplicableMarker"; +CPAlignmentBinding = "CPAlignmentBinding"; +CPEditableBinding = "CPEditableBinding"; +CPEnabledBinding = "CPEnabledBinding"; +CPFontBinding = "CPFontBinding"; +CPHiddenBinding = "CPHiddenBinding"; +CPSelectedIndexBinding = "CPSelectedIndexBinding"; +CPTextColorBinding = "CPTextColorBinding"; +CPToolTipBinding = "CPToolTipBinding"; +CPValueBinding = "value"; +CPAllowsEditingMultipleValuesSelectionBindingOption = "CPAllowsEditingMultipleValuesSelectionBindingOption"; +CPAllowsNullArgumentBindingOption = "CPAllowsNullArgumentBindingOption"; +CPConditionallySetsEditableBindingOption = "CPConditionallySetsEditableBindingOption"; +CPConditionallySetsEnabledBindingOption = "CPConditionallySetsEnabledBindingOption"; +CPConditionallySetsHiddenBindingOption = "CPConditionallySetsHiddenBindingOption"; +CPContinuouslyUpdatesValueBindingOption = "CPContinuouslyUpdatesValueBindingOption"; +CPCreatesSortDescriptorBindingOption = "CPCreatesSortDescriptorBindingOption"; +CPDeletesObjectsOnRemoveBindingsOption = "CPDeletesObjectsOnRemoveBindingsOption"; +CPDisplayNameBindingOption = "CPDisplayNameBindingOption"; +CPDisplayPatternBindingOption = "CPDisplayPatternBindingOption"; +CPHandlesContentAsCompoundValueBindingOption = "CPHandlesContentAsCompoundValueBindingOption"; +CPInsertsNullPlaceholderBindingOption = "CPInsertsNullPlaceholderBindingOption"; +CPInvokesSeparatelyWithArrayObjectsBindingOption = "CPInvokesSeparatelyWithArrayObjectsBindingOption"; +CPMultipleValuesPlaceholderBindingOption = "CPMultipleValuesPlaceholderBindingOption"; +CPNoSelectionPlaceholderBindingOption = "CPNoSelectionPlaceholderBindingOption"; +CPNotApplicablePlaceholderBindingOption = "CPNotApplicablePlaceholderBindingOption"; +CPNullPlaceholderBindingOption = "CPNullPlaceholderBindingOption"; +CPPredicateFormatBindingOption = "CPPredicateFormatBindingOption"; +CPRaisesForNotApplicableKeysBindingOption = "CPRaisesForNotApplicableKeysBindingOption"; +CPSelectorNameBindingOption = "CPSelectorNameBindingOption"; +CPSelectsAllWhenSettingContentBindingOption = "CPSelectsAllWhenSettingContentBindingOption"; +CPValidatesImmediatelyBindingOption = "CPValidatesImmediatelyBindingOption"; +CPValueTransformerNameBindingOption = "CPValueTransformerNameBindingOption"; +CPValueTransformerBindingOption = "CPValueTransformerBindingOption"; + +p;20;CPObjectController.jt;26586;@STATIC;1.0;I;25;Foundation/CPDictionary.ji;14;CPController.jt;26517; + + +objj_executeFile("Foundation/CPDictionary.j", NO); + +objj_executeFile("CPController.j", YES); + + +{var the_class = objj_allocateClassPair(CPController, "CPObjectController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_contentObject"), new objj_ivar("_selection"), new objj_ivar("_objectClass"), new objj_ivar("_isEditable"), new objj_ivar("_automaticallyPreparesContent"), new objj_ivar("_observedKeys")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPObjectController__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithContent:", nil); +} +},["id"]), new objj_method(sel_getUid("initWithContent:"), function $CPObjectController__initWithContent_(self, _cmd, aContent) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPObjectController").super_class }, "init")) + { + objj_msgSend(self, "setContent:", aContent); + objj_msgSend(self, "setEditable:", YES); + objj_msgSend(self, "setObjectClass:", objj_msgSend(CPMutableDictionary, "class")); + + _observedKeys = objj_msgSend(objj_msgSend(CPCountedSet, "alloc"), "init"); + } + + return self; +} +},["id","id"]), new objj_method(sel_getUid("content"), function $CPObjectController__content(self, _cmd) +{ with(self) +{ + return _contentObject; +} +},["id"]), new objj_method(sel_getUid("setContent:"), function $CPObjectController__setContent_(self, _cmd, aContent) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "contentObject"); + objj_msgSend(self, "_selectionWillChange"); + + _contentObject = aContent; + + objj_msgSend(self, "didChangeValueForKey:", "contentObject"); + objj_msgSend(self, "_selectionDidChange"); +} +},["void","id"]), new objj_method(sel_getUid("_setContentObject:"), function $CPObjectController___setContentObject_(self, _cmd, aContent) +{ with(self) +{ + objj_msgSend(self, "setContent:", aContent); +} +},["void","id"]), new objj_method(sel_getUid("_contentObject"), function $CPObjectController___contentObject(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "content"); +} +},["id"]), new objj_method(sel_getUid("setAutomaticallyPreparesContent:"), function $CPObjectController__setAutomaticallyPreparesContent_(self, _cmd, shouldAutomaticallyPrepareContent) +{ with(self) +{ + _automaticallyPreparesContent = shouldAutomaticallyPrepareContent; +} +},["void","BOOL"]), new objj_method(sel_getUid("automaticallyPreparesContent"), function $CPObjectController__automaticallyPreparesContent(self, _cmd) +{ with(self) +{ + return _automaticallyPreparesContent; +} +},["BOOL"]), new objj_method(sel_getUid("prepareContent"), function $CPObjectController__prepareContent(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setContent:", objj_msgSend(self, "newObject")); +} +},["void"]), new objj_method(sel_getUid("setObjectClass:"), function $CPObjectController__setObjectClass_(self, _cmd, aClass) +{ with(self) +{ + _objectClass = aClass; +} +},["void","Class"]), new objj_method(sel_getUid("objectClass"), function $CPObjectController__objectClass(self, _cmd) +{ with(self) +{ + return _objectClass; +} +},["Class"]), new objj_method(sel_getUid("newObject"), function $CPObjectController__newObject(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "objectClass"), "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("addObject:"), function $CPObjectController__addObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "setContent:", anObject); + + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "contentObject", self), "reverseSetValueFor:", "contentObject"); +} +},["void","id"]), new objj_method(sel_getUid("removeObject:"), function $CPObjectController__removeObject_(self, _cmd, anObject) +{ with(self) +{ + if (objj_msgSend(self, "content") === anObject) + objj_msgSend(self, "setContent:", nil); + + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "contentObject", self), "reverseSetValueFor:", "contentObject"); +} +},["void","id"]), new objj_method(sel_getUid("add:"), function $CPObjectController__add_(self, _cmd, aSender) +{ with(self) +{ + + objj_msgSend(self, "addObject:", objj_msgSend(self, "newObject")); +} +},["void","id"]), new objj_method(sel_getUid("canAdd"), function $CPObjectController__canAdd(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isEditable"); +} +},["BOOL"]), new objj_method(sel_getUid("remove:"), function $CPObjectController__remove_(self, _cmd, aSender) +{ with(self) +{ + + objj_msgSend(self, "removeObject:", objj_msgSend(self, "content")); +} +},["void","id"]), new objj_method(sel_getUid("canRemove"), function $CPObjectController__canRemove(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isEditable") && objj_msgSend(objj_msgSend(self, "selectedObjects"), "count"); +} +},["BOOL"]), new objj_method(sel_getUid("setEditable:"), function $CPObjectController__setEditable_(self, _cmd, shouldBeEditable) +{ with(self) +{ + _isEditable = shouldBeEditable; +} +},["void","BOOL"]), new objj_method(sel_getUid("isEditable"), function $CPObjectController__isEditable(self, _cmd) +{ with(self) +{ + return _isEditable; +} +},["BOOL"]), new objj_method(sel_getUid("selectedObjects"), function $CPObjectController__selectedObjects(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_CPObservableArray, "alloc"), "initWithObjects:count:", [_contentObject], 1); +} +},["CPArray"]), new objj_method(sel_getUid("selection"), function $CPObjectController__selection(self, _cmd) +{ with(self) +{ + return _selection; +} +},["id"]), new objj_method(sel_getUid("_selectionWillChange"), function $CPObjectController___selectionWillChange(self, _cmd) +{ with(self) +{ + objj_msgSend(_selection, "controllerWillChange"); + objj_msgSend(self, "willChangeValueForKey:", "selection"); +} +},["void"]), new objj_method(sel_getUid("_selectionDidChange"), function $CPObjectController___selectionDidChange(self, _cmd) +{ with(self) +{ + if (_selection === undefined || _selection === nil) + _selection = objj_msgSend(objj_msgSend(CPControllerSelectionProxy, "alloc"), "initWithController:", self); + + objj_msgSend(_selection, "controllerDidChange"); + objj_msgSend(self, "didChangeValueForKey:", "selection"); +} +},["void"]), new objj_method(sel_getUid("observedKeys"), function $CPObjectController__observedKeys(self, _cmd) +{ with(self) +{ + return _observedKeys; +} +},["id"]), new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"), function $CPObjectController__addObserver_forKeyPath_options_context_(self, _cmd, anObserver, aKeyPath, options, context) +{ with(self) +{ + objj_msgSend(_observedKeys, "addObject:", aKeyPath); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPObjectController").super_class }, "addObserver:forKeyPath:options:context:", anObserver, aKeyPath, options, context); +} +},["void","id","CPString","CPKeyValueObservingOptions","id"]), new objj_method(sel_getUid("removeObserver:forKeyPath:"), function $CPObjectController__removeObserver_forKeyPath_(self, _cmd, anObserver, aKeyPath) +{ with(self) +{ + objj_msgSend(_observedKeys, "removeObject:", aKeyPath); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPObjectController").super_class }, "removeObserver:forKeyPath:", anObserver, aKeyPath); +} +},["void","id","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPObjectController__initialize(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "exposeBinding:", "editable"); + objj_msgSend(self, "exposeBinding:", "contentObject"); +} +},["id"]), new objj_method(sel_getUid("keyPathsForValuesAffectingContentObject"), function $CPObjectController__keyPathsForValuesAffectingContentObject(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "content"); +} +},["CPSet"]), new objj_method(sel_getUid("automaticallyNotifiesObserversForKey:"), function $CPObjectController__automaticallyNotifiesObserversForKey_(self, _cmd, aKey) +{ with(self) +{ + if (aKey === "contentObject") + return NO; + + return YES; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanAdd"), function $CPObjectController__keyPathsForValuesAffectingCanAdd(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObject:", "editable"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanInsert"), function $CPObjectController__keyPathsForValuesAffectingCanInsert(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObject:", "editable"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingCanRemove"), function $CPObjectController__keyPathsForValuesAffectingCanRemove(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "editable", "selection"); +} +},["CPSet"])]); +} + +var CPObjectControllerObjectClassNameKey = "CPObjectControllerObjectClassNameKey", + CPObjectControllerIsEditableKey = "CPObjectControllerIsEditableKey", + CPObjectControllerAutomaticallyPreparesContentKey = "CPObjectControllerAutomaticallyPreparesContentKey"; + +{ +var the_class = objj_getClass("CPObjectController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObjectController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPObjectController__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPObjectController").super_class }, "init"); + + if (self) + { + var objectClassName = objj_msgSend(aCoder, "decodeObjectForKey:", CPObjectControllerObjectClassNameKey), + objectClass = CPClassFromString(objectClassName); + + + + objj_msgSend(self, "setObjectClass:", objectClass); + objj_msgSend(self, "setEditable:", objj_msgSend(aCoder, "decodeBoolForKey:", CPObjectControllerIsEditableKey)); + objj_msgSend(self, "setAutomaticallyPreparesContent:", objj_msgSend(aCoder, "decodeBoolForKey:", CPObjectControllerAutomaticallyPreparesContentKey) || NO); + + _observedKeys = objj_msgSend(objj_msgSend(CPCountedSet, "alloc"), "init"); + } + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPObjectController__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", CPStringFromClass(objectClass), CPObjectControllerObjectClassNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "isEditable"), CPObjectControllerIsEditableKey); + + if (!objj_msgSend(self, "automaticallyPreparesContent")) + objj_msgSend(aCoder, "encodeBOOL:forKey:", YES, CPObjectControllerAutomaticallyPreparesContentKey); +} +},["void","CPCoder"])]); +} + +{var the_class = objj_allocateClassPair(CPObject, "_CPObservationProxy"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_keyPath"), new objj_ivar("_observer"), new objj_ivar("_object"), new objj_ivar("_notifyObject"), new objj_ivar("_context"), new objj_ivar("_options")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithKeyPath:observer:object:"), function $_CPObservationProxy__initWithKeyPath_observer_object_(self, _cmd, aKeyPath, anObserver, anObject) +{ with(self) +{ + if (self=objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservationProxy").super_class }, "init")) + { + _keyPath = aKeyPath; + _observer = anObserver; + _object = anObject; + } + + return self; +} +},["id","id","id","id"]), new objj_method(sel_getUid("observer"), function $_CPObservationProxy__observer(self, _cmd) +{ with(self) +{ + return _observer; +} +},["id"]), new objj_method(sel_getUid("keyPath"), function $_CPObservationProxy__keyPath(self, _cmd) +{ with(self) +{ + return _keyPath; +} +},["id"]), new objj_method(sel_getUid("context"), function $_CPObservationProxy__context(self, _cmd) +{ with(self) +{ + return _context; +} +},["id"]), new objj_method(sel_getUid("options"), function $_CPObservationProxy__options(self, _cmd) +{ with(self) +{ + return _options; +} +},["int"]), new objj_method(sel_getUid("setNotifyObject:"), function $_CPObservationProxy__setNotifyObject_(self, _cmd, notify) +{ with(self) +{ + _notifyObject = notify; +} +},["void","BOOL"]), new objj_method(sel_getUid("isEqual:"), function $_CPObservationProxy__isEqual_(self, _cmd, anObject) +{ with(self) +{ + if (objj_msgSend(anObject, "class") === objj_msgSend(self, "class")) + { + if (anObject._observer === _observer && objj_msgSend(anObject._keyPath, "isEqual:", _keyPath) && objj_msgSend(anObject._object, "isEqual:", _object)) + return YES; + } + + return NO; +} +},["BOOL","id"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPObservationProxy__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, change, context) +{ with(self) +{ + if (_notifyObject) + objj_msgSend(_object, "observeValueForKeyPath:ofObject:change:context:", _keyPath, _object, change, context); + + objj_msgSend(_observer, "observeValueForKeyPath:ofObject:change:context:", _keyPath, _object, change, context); +} +},["void","CPString","id","CPDictionary","id"]), new objj_method(sel_getUid("description"), function $_CPObservationProxy__description(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservationProxy").super_class }, "description") + objj_msgSend(CPString, "stringWithFormat:", "observation proxy for %@ on key path %@", _observer, _keyPath); +} +},["CPString"])]); +} + +{var the_class = objj_allocateClassPair(CPMutableArray, "_CPObservableArray"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_observationProxies")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("description"), function $_CPObservableArray__description(self, _cmd) +{ with(self) +{ + return "<_CPObservableArray: "+objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "description")+" >"; +} +},["CPString"]), new objj_method(sel_getUid("initWithArray:"), function $_CPObservableArray__initWithArray_(self, _cmd, anArray) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "initWithArray:", anArray)) + { + _observationProxies = []; + } + + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("initWithObjects:count:"), function $_CPObservableArray__initWithObjects_count_(self, _cmd, objects, count) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "initWithObjects:count:", objects, count)) + { + _observationProxies = []; + } + + return self; +} +},["id","CPArray","unsigned"]), new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"), function $_CPObservableArray__addObserver_forKeyPath_options_context_(self, _cmd, anObserver, aKeyPath, options, context) +{ with(self) +{ + if (aKeyPath.indexOf("@") === 0) + { + var proxy = objj_msgSend(objj_msgSend(_CPObservationProxy, "alloc"), "initWithKeyPath:observer:object:", aKeyPath, anObserver, self); + + proxy._options = options; + proxy._context = context; + + objj_msgSend(_observationProxies, "addObject:", proxy); + + var dotIndex = aKeyPath.indexOf("."), + remaining = aKeyPath.substring(dotIndex+1), + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "count"))); + + objj_msgSend(self, "addObserver:toObjectsAtIndexes:forKeyPath:options:context:", proxy, indexes, remaining, options, context); + } + else + { + var indexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "count"))); + objj_msgSend(self, "addObserver:toObjectsAtIndexes:forKeyPath:options:context:", anObserver, indexes, aKeyPath, options, context); + } +} +},["void","id","CPString","CPKeyValueObservingOptions","id"]), new objj_method(sel_getUid("removeObserver:forKeyPath:"), function $_CPObservableArray__removeObserver_forKeyPath_(self, _cmd, anObserver, aKeyPath) +{ with(self) +{ + if (aKeyPath.indexOf("@") === 0) + { + var proxy = objj_msgSend(objj_msgSend(_CPObservationProxy, "alloc"), "initWithKeyPath:observer:object:", aKeyPath, anObserver, self), + index = objj_msgSend(_observationProxies, "indexOfObject:", proxy); + + proxy = objj_msgSend(_observationProxies, "objectAtIndex:", index); + + var dotIndex = aKeyPath.indexOf("."), + remaining = aKeyPath.substring(dotIndex+1), + indexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "count"))); + + objj_msgSend(self, "removeObserver:fromObjectsAtIndexes:forKeyPath:", proxy, indexes, remaining); + } + else + { + var indexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "count"))); + objj_msgSend(self, "removeObserver:fromObjectsAtIndexes:forKeyPath:", anObserver, indexes, aKeyPath); + } +} +},["void","id","CPString"]), new objj_method(sel_getUid("insertObject:atIndex:"), function $_CPObservableArray__insertObject_atIndex_(self, _cmd, anObject, anIndex) +{ with(self) +{ + for (var i=0, count=objj_msgSend(_observationProxies, "count"); i<count; i++) + { + var proxy = objj_msgSend(_observationProxies, "objectAtIndex:", i), + keyPath = objj_msgSend(proxy, "keyPath"), + operator = keyPath.indexOf(".") === 0; + + if (operator) + objj_msgSend(self, "willChangeValueForKey:", keyPath); + + objj_msgSend(anObject, "addObserver:forKeyPath:options:context:", proxy, keyPath, objj_msgSend(proxy, "options"), objj_msgSend(proxy, "context")); + + if (operator) + objj_msgSend(self, "didChangeValueForKey:", keyPath); + } + + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "insertObject:atIndex:", anObject, anIndex); +} +},["void","id","unsigned"]), new objj_method(sel_getUid("removeObjectAtIndex:"), function $_CPObservableArray__removeObjectAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + for (var i=0, count=objj_msgSend(_observationProxies, "count"); i<count; i++) + { + var proxy = objj_msgSend(_observationProxies, "objectAtIndex:", i), + keyPath = objj_msgSend(proxy, "keyPath"), + operator = keyPath.indexOf(".") === 0; + + if (operator) + objj_msgSend(self, "willChangeValueForKey:", keyPath); + + objj_msgSend(anObject, "removeObserver:forKeyPath:", proxy, keyPath); + + if (operator) + objj_msgSend(self, "didChangeValueForKey:", keyPath); + } + + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "removeObjectAtIndex:", anIndex); +} +},["void","unsigned"]), new objj_method(sel_getUid("objectsAtIndexes:"), function $_CPObservableArray__objectsAtIndexes_(self, _cmd, theIndexes) +{ with(self) +{ + return objj_msgSend(_CPObservableArray, "arrayWithArray:", objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPObservableArray").super_class }, "objectsAtIndexes:", theIndexes)); +} +},["_CPObservableArray","CPIndexSet"]), new objj_method(sel_getUid("addObject:"), function $_CPObservableArray__addObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "insertObject:atIndex:", anObject, objj_msgSend(self, "count")); +} +},["void","id"]), new objj_method(sel_getUid("removeLastObject"), function $_CPObservableArray__removeLastObject(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "removeObjectAtIndex:", objj_msgSend(self, "count")); +} +},["void"]), new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"), function $_CPObservableArray__replaceObjectAtIndex_withObject_(self, _cmd, anIndex, anObject) +{ with(self) +{ + var currentObject = objj_msgSend(self, "objectAtIndex:", anIndex); + + for (var i=0, count=objj_msgSend(_observationProxies, "count"); i<count; i++) + { + var proxy = objj_msgSend(_observationProxies, "objectAtIndex:", i), + keyPath = objj_msgSend(proxy, "keyPath"), + operator = keyPath.indexOf(".") === 0; + + if (operator) + objj_msgSend(self, "willChangeValueForKey:", keyPath); + + objj_msgSend(currentObject, "removeObserver:forKeyPath:", proxy, keyPath); + objj_msgSend(anObject, "addObserver:forKeyPath:options:context:", proxy, keyPath, objj_msgSend(proxy, "options"), objj_msgSend(proxy, "context")); + + if (operator) + objj_msgSend(self, "didChangeValueForKey:", keyPath); + } + + objj_msgSend(self, "replaceObjectAtIndex:withObject:", anIndex, anObject); +} +},["void","unsigned","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $_CPObservableArray__alloc(self, _cmd) +{ with(self) +{ + var a = []; + a.isa = self; + + var ivars = class_copyIvarList(self), + count = ivars.length; + + while (count--) + a[ivar_getName(ivars[count])] = nil; + + return a; +} +},["id"])]); +} + +{var the_class = objj_allocateClassPair(CPObject, "CPControllerSelectionProxy"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_controller"), new objj_ivar("_keys"), new objj_ivar("_cachedValues"), new objj_ivar("_observationProxies")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithController:"), function $CPControllerSelectionProxy__initWithController_(self, _cmd, aController) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPControllerSelectionProxy").super_class }, "init")) + { + _cachedValues = objj_msgSend(CPDictionary, "dictionary"); + _observationProxies = objj_msgSend(CPArray, "array"); + _controller = aController; + } + + return self; +} +},["id","id"]), new objj_method(sel_getUid("valueForKey:"), function $CPControllerSelectionProxy__valueForKey_(self, _cmd, aKey) +{ with(self) +{ + var value = objj_msgSend(_cachedValues, "objectForKey:", aKey); + + if (value !== undefined && value !== nil) + return value; + + var allValues = objj_msgSend(objj_msgSend(_controller, "selectedObjects"), "valueForKeyPath:", aKey), + count = objj_msgSend(allValues, "count"); + + if (!count) + value = CPNoSelectionMarker; + else if (count === 1) + value = objj_msgSend(allValues, "objectAtIndex:", 0); + else + { + if (objj_msgSend(_controller, "alwaysUsesMultipleValuesMarker")) + value = CPMultipleValuesMarker; + else + { + value = objj_msgSend(allValues, "objectAtIndex:", 0); + + for (var i=0, count=objj_msgSend(allValues, "count"); i<count && value!=CPMultipleValuesMarker; i++) + { + if (!objj_msgSend(value, "isEqual:", objj_msgSend(allValues, "objectAtIndex:", i))) + value = CPMultipleValuesMarker; + } + } + } + + objj_msgSend(_cachedValues, "setValue:forKey:", value, aKey); + + return value; +} +},["id","CPString"]), new objj_method(sel_getUid("count"), function $CPControllerSelectionProxy__count(self, _cmd) +{ with(self) +{ + return objj_msgSend(_cachedValues, "count"); +} +},["unsigned"]), new objj_method(sel_getUid("keyEnumerator"), function $CPControllerSelectionProxy__keyEnumerator(self, _cmd) +{ with(self) +{ + return objj_msgSend(_cachedValues, "keyEnumerator"); +} +},["id"]), new objj_method(sel_getUid("setValue:forKey:"), function $CPControllerSelectionProxy__setValue_forKey_(self, _cmd, aValue, aKey) +{ with(self) +{ + objj_msgSend(objj_msgSend(_controller, "selectedObjects"), "setValue:forKey:", aValue, aKey); +} +},["void","id","CPString"]), new objj_method(sel_getUid("controllerWillChange"), function $CPControllerSelectionProxy__controllerWillChange(self, _cmd) +{ with(self) +{ + _keys = objj_msgSend(_cachedValues, "allKeys"); + + if (!_keys) + return; + + for (var i=0, count=_keys.length; i<count; i++) + objj_msgSend(self, "willChangeValueForKey:", _keys[i]); + + objj_msgSend(_cachedValues, "removeAllObjects"); +} +},["void"]), new objj_method(sel_getUid("controllerDidChange"), function $CPControllerSelectionProxy__controllerDidChange(self, _cmd) +{ with(self) +{ + objj_msgSend(_cachedValues, "removeAllObjects"); + + if (!_keys) + return; + + for (var i=0, count=_keys.length; i<count; i++) + objj_msgSend(self, "didChangeValueForKey:", _keys[i]); + + _keys = nil; +} +},["void"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $CPControllerSelectionProxy__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, change, context) +{ with(self) +{ + objj_msgSend(_cachedValues, "removeObjectForKey:", aKeyPath); +} +},["void","CPString","id","CPDictionary","id"]), new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"), function $CPControllerSelectionProxy__addObserver_forKeyPath_options_context_(self, _cmd, anObject, aKeyPath, options, context) +{ with(self) +{ + var proxy = objj_msgSend(objj_msgSend(_CPObservationProxy, "alloc"), "initWithKeyPath:observer:object:", aKeyPath, anObject, self); + + objj_msgSend(proxy, "setNotifyObject:", YES); + objj_msgSend(_observationProxies, "addObject:", proxy); + + objj_msgSend(objj_msgSend(_controller, "selectedObjects"), "addObserver:forKeyPath:options:context:", proxy, aKeyPath, options, context); +} +},["void","id","CPString","CPKeyValueObservingOptions","id"]), new objj_method(sel_getUid("removeObserver:forKeyPath:"), function $CPControllerSelectionProxy__removeObserver_forKeyPath_(self, _cmd, anObject, aKeyPath) +{ with(self) +{ + var proxy = objj_msgSend(objj_msgSend(_CPObservationProxy, "alloc"), "initWithKeyPath:observer:object:", aKeyPath, anObject, self), + index = objj_msgSend(_observationProxies, "indexOfObject:", proxy); + + objj_msgSend(objj_msgSend(_controller, "selectedObjects"), "removeObserver:forKeyPath:", objj_msgSend(_observationProxies, "objectAtIndex:", index), aKeyPath); + objj_msgSend(_observationProxies, "removeObjectAtIndex:", index); +} +},["void","id","CPString"])]); +} + +p;13;CPOpenPanel.jt;2958;@STATIC;1.0;I;16;AppKit/CPPanel.jt;2918; + + +objj_executeFile("AppKit/CPPanel.j", NO); + + +{var the_class = objj_allocateClassPair(CPPanel, "CPOpenPanel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_canChooseFiles"), new objj_ivar("_canChooseDirectories"), new objj_ivar("_allowsMultipleSelection"), new objj_ivar("_directoryURL"), new objj_ivar("_URLs")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("canChooseFiles"), function $CPOpenPanel__canChooseFiles(self, _cmd) +{ with(self) +{ +return _canChooseFiles; +} +},["id"]), +new objj_method(sel_getUid("setCanChooseFiles:"), function $CPOpenPanel__setCanChooseFiles_(self, _cmd, newValue) +{ with(self) +{ +_canChooseFiles = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("canChooseDirectories"), function $CPOpenPanel__canChooseDirectories(self, _cmd) +{ with(self) +{ +return _canChooseDirectories; +} +},["id"]), +new objj_method(sel_getUid("setCanChooseDirectories:"), function $CPOpenPanel__setCanChooseDirectories_(self, _cmd, newValue) +{ with(self) +{ +_canChooseDirectories = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("allowsMultipleSelection"), function $CPOpenPanel__allowsMultipleSelection(self, _cmd) +{ with(self) +{ +return _allowsMultipleSelection; +} +},["id"]), +new objj_method(sel_getUid("setAllowsMultipleSelection:"), function $CPOpenPanel__setAllowsMultipleSelection_(self, _cmd, newValue) +{ with(self) +{ +_allowsMultipleSelection = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("directoryURL"), function $CPOpenPanel__directoryURL(self, _cmd) +{ with(self) +{ +return _directoryURL; +} +},["id"]), +new objj_method(sel_getUid("setDirectoryURL:"), function $CPOpenPanel__setDirectoryURL_(self, _cmd, newValue) +{ with(self) +{ +_directoryURL = newValue; +} +},["void","id"]), new objj_method(sel_getUid("runModal"), function $CPOpenPanel__runModal(self, _cmd) +{ with(self) +{ + if (typeof window["cpOpenPanel"] === "function") + { + + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + + var options = { directoryURL: objj_msgSend(self, "directoryURL"), + canChooseFiles: objj_msgSend(self, "canChooseFiles"), + canChooseDirectories: objj_msgSend(self, "canChooseDirectories"), + allowsMultipleSelection: objj_msgSend(self, "allowsMultipleSelection") }; + + var result = window.cpOpenPanel(options); + + _URLs = result.URLs; + + return result.button; + } + + throw "-runModal is unimplemented."; +} +},["CPInteger"]), new objj_method(sel_getUid("URLs"), function $CPOpenPanel__URLs(self, _cmd) +{ with(self) +{ + return _URLs; +} +},["CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("openPanel"), function $CPOpenPanel__openPanel(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPOpenPanel, "alloc"), "init"); +} +},["id"])]); +} + +p;15;CPOutlineView.jt;59053;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.jt;58995;objj_executeFile("CPTableColumn.j", YES); +objj_executeFile("CPTableView.j", YES); +CPOutlineViewColumnDidMoveNotification = "CPOutlineViewColumnDidMoveNotification"; +CPOutlineViewColumnDidResizeNotification = "CPOutlineViewColumnDidResizeNotification"; +CPOutlineViewItemDidCollapseNotification = "CPOutlineViewItemDidCollapseNotification"; +CPOutlineViewItemDidExpandNotification = "CPOutlineViewItemDidExpandNotification"; +CPOutlineViewItemWillCollapseNotification = "CPOutlineViewItemWillCollapseNotification"; +CPOutlineViewItemWillExpandNotification = "CPOutlineViewItemWillExpandNotification"; +CPOutlineViewSelectionDidChangeNotification = "CPOutlineViewSelectionDidChangeNotification"; +CPOutlineViewSelectionIsChangingNotification = "CPOutlineViewSelectionIsChangingNotification"; +var CPOutlineViewDataSource_outlineView_setObjectValue_forTableColumn_byItem_ = 1 << 1, + CPOutlineViewDataSource_outlineView_shouldDeferDisplayingChildrenOfItem_ = 1 << 2, + CPOutlineViewDataSource_outlineView_acceptDrop_item_childIndex_ = 1 << 3, + CPOutlineViewDataSource_outlineView_validateDrop_proposedItem_proposedChildIndex_ = 1 << 4, + CPOutlineViewDataSource_outlineView_validateDrop_proposedRow_proposedDropOperation_ = 1 << 5, + CPOutlineViewDataSource_outlineView_namesOfPromisedFilesDroppedAtDestination_forDraggedItems_ = 1 << 6, + CPOutlineViewDataSource_outlineView_itemForPersistentObject_ = 1 << 7, + CPOutlineViewDataSource_outlineView_persistentObjectForItem_ = 1 << 8, + CPOutlineViewDataSource_outlineView_writeItems_toPasteboard_ = 1 << 9, + CPOutlineViewDataSource_outlineView_sortDescriptorsDidChange_ = 1 << 10; +var CPOutlineViewDelegate_outlineView_dataViewForTableColumn_item_ = 1 << 1, + CPOutlineViewDelegate_outlineView_didClickTableColumn_ = 1 << 2, + CPOutlineViewDelegate_outlineView_didDragTableColumn_ = 1 << 3, + CPOutlineViewDelegate_outlineView_heightOfRowByItem_ = 1 << 4, + CPOutlineViewDelegate_outlineView_isGroupItem_ = 1 << 5, + CPOutlineViewDelegate_outlineView_mouseDownInHeaderOfTableColumn_ = 1 << 6, + CPOutlineViewDelegate_outlineView_nextTypeSelectMatchFromItem_toItem_forString_ = 1 << 7, + CPOutlineViewDelegate_outlineView_selectionIndexesForProposedSelection_ = 1 << 8, + CPOutlineViewDelegate_outlineView_shouldCollapseItem_ = 1 << 9, + CPOutlineViewDelegate_outlineView_shouldEditTableColumn_item_ = 1 << 10, + CPOutlineViewDelegate_outlineView_shouldExpandItem_ = 1 << 11, + CPOutlineViewDelegate_outlineView_shouldReorderColumn_toColumn_ = 1 << 12, + CPOutlineViewDelegate_outlineView_shouldSelectItem_ = 1 << 13, + CPOutlineViewDelegate_outlineView_shouldSelectTableColumn_ = 1 << 14, + CPOutlineViewDelegate_outlineView_shouldShowOutlineViewForItem_ = 1 << 15, + CPOutlineViewDelegate_outlineView_shouldShowViewExpansionForTableColumn_item_ = 1 << 16, + CPOutlineViewDelegate_outlineView_shouldTrackView_forTableColumn_item_ = 1 << 17, + CPOutlineViewDelegate_outlineView_shouldTypeSelectForEvent_withCurrentSearchString_ = 1 << 18, + CPOutlineViewDelegate_outlineView_sizeToFitWidthOfColumn_ = 1 << 19, + CPOutlineViewDelegate_outlineView_toolTipForView_rect_tableColumn_item_mouseLocation_ = 1 << 20, + CPOutlineViewDelegate_outlineView_typeSelectStringForTableColumn_item_ = 1 << 21, + CPOutlineViewDelegate_outlineView_willDisplayOutlineView_forTableColumn_item_ = 1 << 22, + CPOutlineViewDelegate_outlineView_willDisplayView_forTableColumn_item_ = 1 << 23, + CPOutlineViewDelegate_selectionShouldChangeInOutlineView_ = 1 << 24; +CPOutlineViewDropOnItemIndex = -1; +{var the_class = objj_allocateClassPair(CPTableView, "CPOutlineView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_outlineViewDataSource"), new objj_ivar("_outlineViewDelegate"), new objj_ivar("_outlineTableColumn"), new objj_ivar("_indentationPerLevel"), new objj_ivar("_indentationMarkerFollowsDataView"), new objj_ivar("_implementedOutlineViewDataSourceMethods"), new objj_ivar("_implementedOutlineViewDelegateMethods"), new objj_ivar("_rootItemInfo"), new objj_ivar("_itemsForRows"), new objj_ivar("_itemInfosForItems"), new objj_ivar("_disclosureControlPrototype"), new objj_ivar("_disclosureControlsForRows"), new objj_ivar("_disclosureControlData"), new objj_ivar("_disclosureControlQueue"), new objj_ivar("_shouldRetargetItem"), new objj_ivar("_retargetedItem"), new objj_ivar("_shouldRetargetChildIndex"), new objj_ivar("_retargedChildIndex"), new objj_ivar("_dragHoverTimer"), new objj_ivar("_dropItem")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPOutlineView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _selectionHighlightStyle = CPTableViewSelectionHighlightStyleSourceList; + _rootItemInfo = { isExpanded:YES, isExpandable:NO, level:-1, row:-1, children:[], weight:0 }; + _itemsForRows = []; + _itemInfosForItems = { }; + _disclosureControlsForRows = []; + _retargetedItem = nil; + _shouldRetargetItem = NO; + _retargedChildIndex = nil; + _shouldRetargetChildIndex = NO; + _startHoverTime = nil; + objj_msgSend(self, "setIndentationPerLevel:", 16.0); + objj_msgSend(self, "setIndentationMarkerFollowsDataView:", YES); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "setDataSource:", objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource, "alloc"), "initWithOutlineView:", self)); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "setDelegate:", objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDelegate, "alloc"), "initWithOutlineView:", self)); + objj_msgSend(self, "setDisclosureControlPrototype:", objj_msgSend(objj_msgSend(CPDisclosureButton, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 10.0, 10.0))); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setDataSource:"), function $CPOutlineView__setDataSource_(self, _cmd, aDataSource) +{ with(self) +{ + if (_outlineViewDataSource === aDataSource) + return; + if (!objj_msgSend(aDataSource, "respondsToSelector:", sel_getUid("outlineView:child:ofItem:"))) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Data source must implement 'outlineView:child:ofItem:'"); + if (!objj_msgSend(aDataSource, "respondsToSelector:", sel_getUid("outlineView:isItemExpandable:"))) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Data source must implement 'outlineView:isItemExpandable:'"); + if (!objj_msgSend(aDataSource, "respondsToSelector:", sel_getUid("outlineView:numberOfChildrenOfItem:"))) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Data source must implement 'outlineView:numberOfChildrenOfItem:'"); + if (!objj_msgSend(aDataSource, "respondsToSelector:", sel_getUid("outlineView:objectValueForTableColumn:byItem:"))) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Data source must implement 'outlineView:objectValueForTableColumn:byItem:'"); + _outlineViewDataSource = aDataSource; + _implementedOutlineViewDataSourceMethods = 0; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:setObjectValue:forTableColumn:byItem:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_setObjectValue_forTableColumn_byItem_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:shouldDeferDisplayingChildrenOfItem:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_shouldDeferDisplayingChildrenOfItem_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:acceptDrop:item:childIndex:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_acceptDrop_item_childIndex_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:validateDrop:proposedItem:proposedChildIndex:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_validateDrop_proposedItem_proposedChildIndex_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:validateDrop:proposedRow:proposedDropOperation:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_validateDrop_proposedRow_proposedDropOperation_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_namesOfPromisedFilesDroppedAtDestination_forDraggedItems_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:itemForPersistentObject:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_itemForPersistentObject_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:persistentObjectForItem:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_persistentObjectForItem_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:writeItems:toPasteboard:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_writeItems_toPasteboard_; + if (objj_msgSend(_outlineViewDataSource, "respondsToSelector:", sel_getUid("outlineView:sortDescriptorsDidChange:"))) + _implementedOutlineViewDataSourceMethods |= CPOutlineViewDataSource_outlineView_sortDescriptorsDidChange_; + objj_msgSend(self, "reloadData"); +} +},["void","id"]), new objj_method(sel_getUid("dataSource"), function $CPOutlineView__dataSource(self, _cmd) +{ with(self) +{ + return _outlineViewDataSource; +} +},["id"]), new objj_method(sel_getUid("isExpandable:"), function $CPOutlineView__isExpandable_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return YES; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return NO; + return itemInfo.isExpandable; +} +},["BOOL","id"]), new objj_method(sel_getUid("isItemExpanded:"), function $CPOutlineView__isItemExpanded_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return YES; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return NO; + return itemInfo.isExpanded; +} +},["void","id"]), new objj_method(sel_getUid("expandItem:"), function $CPOutlineView__expandItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(self, "expandItem:expandChildren:", anItem, NO); +} +},["void","id"]), new objj_method(sel_getUid("expandItem:expandChildren:"), function $CPOutlineView__expandItem_expandChildren_(self, _cmd, anItem, shouldExpandChildren) +{ with(self) +{ + var itemInfo = null; + if (!anItem) + itemInfo = _rootItemInfo; + else + itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return; + if (!itemInfo.isExpanded) + { + objj_msgSend(self, "_noteItemWillExpand:", anItem); + itemInfo.isExpanded = YES; + objj_msgSend(self, "_noteItemDidExpand:", anItem); + objj_msgSend(self, "reloadItem:reloadChildren:", anItem, YES); + } + if (shouldExpandChildren) + { + var children = itemInfo.children, + childIndex = children.length; + while (childIndex--) + objj_msgSend(self, "expandItem:expandChildren:", children[childIndex], YES); + } +} +},["void","id","BOOL"]), new objj_method(sel_getUid("collapseItem:"), function $CPOutlineView__collapseItem_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return; + if (!itemInfo.isExpanded) + return; + objj_msgSend(self, "_noteItemWillCollapse:", anItem); + itemInfo.isExpanded = NO; + objj_msgSend(self, "_noteItemDidCollapse:", anItem); + objj_msgSend(self, "reloadItem:reloadChildren:", anItem, YES); +} +},["void","id"]), new objj_method(sel_getUid("reloadItem:"), function $CPOutlineView__reloadItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(self, "reloadItem:reloadChildren:", anItem, NO); +} +},["void","id"]), new objj_method(sel_getUid("reloadItem:reloadChildren:"), function $CPOutlineView__reloadItem_reloadChildren_(self, _cmd, anItem, shouldReloadChildren) +{ with(self) +{ + if (!!shouldReloadChildren || !anItem) + _loadItemInfoForItem(self, anItem); + else + _reloadItem(self, anItem); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "reloadData"); +} +},["void","id","BOOL"]), new objj_method(sel_getUid("itemAtRow:"), function $CPOutlineView__itemAtRow_(self, _cmd, aRow) +{ with(self) +{ + return _itemsForRows[aRow] || nil; +} +},["id","CPInteger"]), new objj_method(sel_getUid("rowForItem:"), function $CPOutlineView__rowForItem_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return _rootItemInfo.row; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return CPNotFound; + return itemInfo.row; +} +},["CPInteger","id"]), new objj_method(sel_getUid("setOutlineTableColumn:"), function $CPOutlineView__setOutlineTableColumn_(self, _cmd, aTableColumn) +{ with(self) +{ + if (_outlineTableColumn === aTableColumn) + return; + _outlineTableColumn = aTableColumn; + objj_msgSend(self, "reloadData"); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("outlineTableColumn"), function $CPOutlineView__outlineTableColumn(self, _cmd) +{ with(self) +{ + return _outlineTableColumn; +} +},["CPTableColumn"]), new objj_method(sel_getUid("levelForItem:"), function $CPOutlineView__levelForItem_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return _rootItemInfo.level; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return CPNotFound; + return itemInfo.level; +} +},["CPInteger","id"]), new objj_method(sel_getUid("levelForRow:"), function $CPOutlineView__levelForRow_(self, _cmd, aRow) +{ with(self) +{ + return objj_msgSend(self, "levelForItem:", objj_msgSend(self, "itemAtRow:", aRow)); +} +},["CPInteger","CPInteger"]), new objj_method(sel_getUid("setIndentationPerLevel:"), function $CPOutlineView__setIndentationPerLevel_(self, _cmd, anIndentationWidth) +{ with(self) +{ + if (_indentationPerLevel === anIndentationWidth) + return; + _indentationPerLevel = anIndentationWidth; + objj_msgSend(self, "reloadData"); +} +},["void","float"]), new objj_method(sel_getUid("indentationPerLevel"), function $CPOutlineView__indentationPerLevel(self, _cmd) +{ with(self) +{ + return _indentationPerLevel; +} +},["float"]), new objj_method(sel_getUid("setIndentationMarkerFollowsDataView:"), function $CPOutlineView__setIndentationMarkerFollowsDataView_(self, _cmd, indentationMarkerShouldFollowDataView) +{ with(self) +{ + if (_indentationMarkerFollowsDataView === indentationMarkerShouldFollowDataView) + return; + _indentationMarkerFollowsDataView = indentationMarkerShouldFollowDataView; + objj_msgSend(self, "reloadData"); +} +},["void","BOOL"]), new objj_method(sel_getUid("indentationMarkerFollowsDataView"), function $CPOutlineView__indentationMarkerFollowsDataView(self, _cmd) +{ with(self) +{ + return _indentationMarkerFollowsDataView; +} +},["BOOL"]), new objj_method(sel_getUid("parentForItem:"), function $CPOutlineView__parentForItem_(self, _cmd, anItem) +{ with(self) +{ + if (!anItem) + return nil; + var itemInfo = _itemInfosForItems[objj_msgSend(anItem, "UID")]; + if (!itemInfo) + return nil; + var parent = itemInfo.parent; + if (itemInfo[objj_msgSend(parent, "UID")] === _rootItemInfo) + parent = nil; + return parent; +} +},["id","id"]), new objj_method(sel_getUid("frameOfOutlineDataViewAtColumn:row:"), function $CPOutlineView__frameOfOutlineDataViewAtColumn_row_(self, _cmd, aColumn, aRow) +{ with(self) +{ + var frame = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "frameOfDataViewAtColumn:row:", aColumn, aRow), + indentationWidth = (objj_msgSend(self, "levelForRow:", aRow) + 1) * objj_msgSend(self, "indentationPerLevel"); + frame.origin.x += indentationWidth; + frame.size.width -= indentationWidth; + return frame; +} +},["CGRect","CPInteger","CPInteger"]), new objj_method(sel_getUid("_performSelection:forRow:context:"), function $CPOutlineView___performSelection_forRow_context_(self, _cmd, select, rowIndex, context) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_performSelection:forRow:context:", select, rowIndex, context); + var control = _disclosureControlsForRows[rowIndex], + selector = select ? "setThemeState:" : "unsetThemeState:"; + objj_msgSend(control, "performSelector:withObject:", CPSelectorFromString(selector), CPThemeStateSelected); +} +},["void","BOOL","CPInteger","id"]), new objj_method(sel_getUid("setDelegate:"), function $CPOutlineView__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_outlineViewDelegate === aDelegate) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_outlineViewDelegate) + { + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewColumnDidMove:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewColumnDidMoveNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewColumnDidResize:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewColumnDidResizeNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewSelectionDidChange:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewSelectionDidChangeNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewSelectionIsChanging:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewSelectionIsChangingNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemWillExpand:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewItemWillExpandNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemDidExpand:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewItemDidExpandNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemWillCollapse:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewItemWillCollapseNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemDidCollapse:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _outlineViewDelegate, CPOutlineViewItemDidCollapseNotification, self); + } + _outlineViewDelegate = aDelegate; + _implementedOutlineViewDelegateMethods = 0; + var delegateMethods = [ + CPOutlineViewDelegate_outlineView_dataViewForTableColumn_item_ , sel_getUid("outlineView:dataViewForTableColumn:item:"), + CPOutlineViewDelegate_outlineView_didClickTableColumn_ , sel_getUid("outlineView:didClickTableColumn:"), + CPOutlineViewDelegate_outlineView_didDragTableColumn_ , sel_getUid("outlineView:didDragTableColumn:"), + CPOutlineViewDelegate_outlineView_heightOfRowByItem_ , sel_getUid("outlineView:heightOfRowByItem:"), + CPOutlineViewDelegate_outlineView_isGroupItem_ , sel_getUid("outlineView:isGroupItem:"), + CPOutlineViewDelegate_outlineView_mouseDownInHeaderOfTableColumn_ , sel_getUid("outlineView:mouseDownInHeaderOfTableColumn:"), + CPOutlineViewDelegate_outlineView_nextTypeSelectMatchFromItem_toItem_forString_ , sel_getUid("outlineView:nextTypeSelectMatchFromItem:toItem:forString:"), + CPOutlineViewDelegate_outlineView_selectionIndexesForProposedSelection_ , sel_getUid("outlineView:selectionIndexesForProposedSelection:"), + CPOutlineViewDelegate_outlineView_shouldCollapseItem_ , sel_getUid("outlineView:shouldCollapseItem:"), + CPOutlineViewDelegate_outlineView_shouldEditTableColumn_item_ , sel_getUid("outlineView:shouldEditTableColumn:item:"), + CPOutlineViewDelegate_outlineView_shouldExpandItem_ , sel_getUid("outlineView:shouldExpandItem:"), + CPOutlineViewDelegate_outlineView_shouldReorderColumn_toColumn_ , sel_getUid("outlineView:shouldReorderColumn:toColumn:"), + CPOutlineViewDelegate_outlineView_shouldSelectItem_ , sel_getUid("outlineView:shouldSelectItem:"), + CPOutlineViewDelegate_outlineView_shouldSelectTableColumn_ , sel_getUid("outlineView:shouldSelectTableColumn:"), + CPOutlineViewDelegate_outlineView_shouldShowOutlineViewForItem_ , sel_getUid("outlineView:shouldShowOutlineViewForItem:"), + CPOutlineViewDelegate_outlineView_shouldShowViewExpansionForTableColumn_item_ , sel_getUid("outlineView:shouldShowViewExpansionForTableColumn:item:"), + CPOutlineViewDelegate_outlineView_shouldTrackView_forTableColumn_item_ , sel_getUid("outlineView:shouldTrackView:forTableColumn:item:"), + CPOutlineViewDelegate_outlineView_shouldTypeSelectForEvent_withCurrentSearchString_ , sel_getUid("outlineView:shouldTypeSelectForEvent:withCurrentSearchString:"), + CPOutlineViewDelegate_outlineView_sizeToFitWidthOfColumn_ , sel_getUid("outlineView:sizeToFitWidthOfColumn:"), + CPOutlineViewDelegate_outlineView_toolTipForView_rect_tableColumn_item_mouseLocation_, sel_getUid("outlineView:toolTipForView:rect:tableColumn:item:mouseLocation:"), + CPOutlineViewDelegate_outlineView_typeSelectStringForTableColumn_item_ , sel_getUid("outlineView:typeSelectStringForTableColumn:item:"), + CPOutlineViewDelegate_outlineView_willDisplayOutlineView_forTableColumn_item_ , sel_getUid("outlineView:willDisplayOutlineView:forTableColumn:item:"), + CPOutlineViewDelegate_outlineView_willDisplayView_forTableColumn_item_ , sel_getUid("outlineView:willDisplayView:forTableColumn:item:"), + CPOutlineViewDelegate_selectionShouldChangeInOutlineView_ , sel_getUid("selectionShouldChangeInOutlineView:") + ], + delegateCount = objj_msgSend(delegateMethods, "count"); + for (var i=0; i < delegateCount; i += 2) + { + var bitMask = delegateMethods[i], + selector = delegateMethods[i+1]; + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", selector)) + _implementedOutlineViewDelegateMethods |= bitMask; + } + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewColumnDidMove:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewColumnDidMove:"), CPOutlineViewColumnDidMoveNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewColumnDidResize:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewColumnDidMove:"), CPOutlineViewColumnDidResizeNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewSelectionDidChange:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewSelectionDidChange:"), CPOutlineViewSelectionDidChangeNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewSelectionIsChanging:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewSelectionIsChanging:"), CPOutlineViewSelectionIsChangingNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemWillExpand:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewItemWillExpand:"), CPOutlineViewItemWillExpandNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemDidExpand:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewItemDidExpand:"), CPOutlineViewItemDidExpandNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemWillCollapse:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewItemWillCollapse:"), CPOutlineViewItemWillCollapseNotification, self); + if (objj_msgSend(_outlineViewDelegate, "respondsToSelector:", sel_getUid("outlineViewItemDidCollapse:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _outlineViewDelegate, sel_getUid("outlineViewItemDidCollapse:"), CPOutlineViewItemDidCollapseNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPOutlineView__delegate(self, _cmd) +{ with(self) +{ + return _outlineViewDelegate; +} +},["id"]), new objj_method(sel_getUid("setDisclosureControlPrototype:"), function $CPOutlineView__setDisclosureControlPrototype_(self, _cmd, aControl) +{ with(self) +{ + _disclosureControlPrototype = aControl; + _disclosureControlData = nil; + _disclosureControlQueue = []; + objj_msgSend(self, "reloadData"); +} +},["void","CPControl"]), new objj_method(sel_getUid("reloadData"), function $CPOutlineView__reloadData(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "reloadItem:reloadChildren:", nil, YES); +} +},["void"]), new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"), function $CPOutlineView__frameOfDataViewAtColumn_row_(self, _cmd, aColumn, aRow) +{ with(self) +{ + var tableColumn = objj_msgSend(self, "tableColumns")[aColumn]; + if (tableColumn === _outlineTableColumn) + return objj_msgSend(self, "frameOfOutlineDataViewAtColumn:row:", aColumn, aRow); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "frameOfDataViewAtColumn:row:", aColumn, aRow); +} +},["CGRect","CPInteger","CPInteger"]), new objj_method(sel_getUid("setDropItem:dropChildIndex:"), function $CPOutlineView__setDropItem_dropChildIndex_(self, _cmd, theItem, theIndex) +{ with(self) +{ + if (_dropItem !== theItem && theIndex < 0 && objj_msgSend(self, "isExpandable:", theItem) && !objj_msgSend(self, "isItemExpanded:", theItem)) + { + if (_dragHoverTimer) + objj_msgSend(_dragHoverTimer, "invalidate"); + var autoExpandCallBack = function(){ + if (_dropItem) + { + objj_msgSend(_dropOperationFeedbackView, "blink"); + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", .3, objj_msgSend(self, "expandItem:", _dropItem), NO); + } + } + _dragHoverTimer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", .8, autoExpandCallBack, NO); + } + if (theIndex >= 0) + { + objj_msgSend(_dragHoverTimer, "invalidate"); + _dragHoverTimer = nil; + } + _dropItem = theItem; + _retargetedItem = theItem; + _shouldRetargetItem = YES; + _retargedChildIndex = theIndex; + _shouldRetargetChildIndex = YES; + var retargetedItemInfo = (_retargetedItem !== nil) ? _itemInfosForItems[objj_msgSend(_retargetedItem, "UID")] : _rootItemInfo; + if (_retargedChildIndex === objj_msgSend(retargetedItemInfo.children, "count")) + { + var retargetedChildItem = objj_msgSend(retargetedItemInfo.children, "lastObject"); + _retargetedDropRow = objj_msgSend(self, "rowForItem:", retargetedChildItem) + 1; + } + else + { + var retargetedChildItem = (_retargedChildIndex !== CPOutlineViewDropOnItemIndex) ? retargetedItemInfo.children[_retargedChildIndex] : _retargetedItem; + _retargetedDropRow = objj_msgSend(self, "rowForItem:", retargetedChildItem); + } +} +},["void","id","int"]), new objj_method(sel_getUid("_draggingEnded"), function $CPOutlineView___draggingEnded(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_draggingEnded"); + _dropItem = nil; + objj_msgSend(_dragHoverTimer, "invalidate"); + _dragHoverTimer = nil; +} +},["void"]), new objj_method(sel_getUid("_parentItemForUpperRow:andLowerRow:atMouseOffset:"), function $CPOutlineView___parentItemForUpperRow_andLowerRow_atMouseOffset_(self, _cmd, theUpperRowIndex, theLowerRowIndex, theOffset) +{ with(self) +{ + if (_shouldRetargetItem) + return _retargetedItem; + var lowerLevel = objj_msgSend(self, "levelForRow:", theLowerRowIndex) + upperItem = objj_msgSend(self, "itemAtRow:", theUpperRowIndex); + upperLevel = objj_msgSend(self, "levelForItem:", upperItem); + while (upperLevel > lowerLevel) + { + upperLevel = objj_msgSend(self, "levelForItem:", upperItem); + if (theOffset.x > (upperLevel + 1) * objj_msgSend(self, "indentationPerLevel")) + return objj_msgSend(self, "parentForItem:", upperItem); + upperItem = objj_msgSend(self, "parentForItem:", upperItem); + } + return objj_msgSend(self, "parentForItem:", objj_msgSend(self, "itemAtRow:", theLowerRowIndex)); +} +},["id","int","int","CPPoint"]), new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"), function $CPOutlineView___rectForDropHighlightViewBetweenUpperRow_andLowerRow_offset_(self, _cmd, theUpperRowIndex, theLowerRowIndex, theOffset) +{ with(self) +{ + var rect = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:", theUpperRowIndex, theLowerRowIndex, theOffset), + parentItem = objj_msgSend(self, "_parentItemForUpperRow:andLowerRow:atMouseOffset:", theUpperRowIndex, theLowerRowIndex, theOffset), + level = objj_msgSend(self, "levelForItem:", parentItem); + rect.origin.x = (level + 1) * objj_msgSend(self, "indentationPerLevel"); + rect.size.width -= rect.origin.x; + return rect; +} +},["CPRect","int","int","CPPoint"]), new objj_method(sel_getUid("_loadDataViewsInRows:columns:"), function $CPOutlineView___loadDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_loadDataViewsInRows:columns:", rows, columns); + var outlineColumn = objj_msgSend(objj_msgSend(self, "tableColumns"), "indexOfObjectIdenticalTo:", objj_msgSend(self, "outlineTableColumn")); + if (!objj_msgSend(columns, "containsIndex:", outlineColumn)) + return; + var rowArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + var rowIndex = 0, + rowsCount = rowArray.length; + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + item = _itemsForRows[row], + isExpandable = objj_msgSend(self, "isExpandable:", item); + if (!isExpandable) + continue; + var control = objj_msgSend(self, "_dequeueDisclosureControl"), + frame = objj_msgSend(control, "frame"), + dataViewFrame = objj_msgSend(self, "frameOfDataViewAtColumn:row:", outlineColumn, row); + frame.origin.x = _indentationMarkerFollowsDataView ? (dataViewFrame.origin.x) - (frame.size.width) : 0.0; + frame.origin.y = (dataViewFrame.origin.y); + frame.size.height = (dataViewFrame.size.height); + _disclosureControlsForRows[row] = control; + objj_msgSend(control, "setState:", objj_msgSend(self, "isItemExpanded:", item) ? CPOnState : CPOffState); + var selector = objj_msgSend(self, "isRowSelected:", row) ? "setThemeState:" : "unsetThemeState:"; + objj_msgSend(control, "performSelector:withObject:", CPSelectorFromString(selector), CPThemeStateSelected); + objj_msgSend(control, "setFrame:", frame); + objj_msgSend(self, "addSubview:", control); + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"), function $CPOutlineView___unloadDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "_unloadDataViewsInRows:columns:", rows, columns); + var outlineColumn = objj_msgSend(objj_msgSend(self, "tableColumns"), "indexOfObjectIdenticalTo:", objj_msgSend(self, "outlineTableColumn")); + if (!objj_msgSend(columns, "containsIndex:", outlineColumn)) + return; + var rowArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + var rowIndex = 0, + rowsCount = rowArray.length; + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + control = _disclosureControlsForRows[row]; + if (!control) + continue; + objj_msgSend(control, "removeFromSuperview"); + objj_msgSend(self, "_enqueueDisclosureControl:", control); + _disclosureControlsForRows[row] = nil; + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_toggleFromDisclosureControl:"), function $CPOutlineView___toggleFromDisclosureControl_(self, _cmd, aControl) +{ with(self) +{ + var controlFrame = objj_msgSend(aControl, "frame"), + item = objj_msgSend(self, "itemAtRow:", objj_msgSend(self, "rowAtPoint:", { x:(controlFrame.origin.x), y:(controlFrame.origin.y + (controlFrame.size.height) / 2.0) })); + if (objj_msgSend(self, "isItemExpanded:", item)) + objj_msgSend(self, "collapseItem:", item); + else + objj_msgSend(self, "expandItem:", item); +} +},["void","CPControl"]), new objj_method(sel_getUid("_enqueueDisclosureControl:"), function $CPOutlineView___enqueueDisclosureControl_(self, _cmd, aControl) +{ with(self) +{ + _disclosureControlQueue.push(aControl); +} +},["void","CPControl"]), new objj_method(sel_getUid("_dequeueDisclosureControl"), function $CPOutlineView___dequeueDisclosureControl(self, _cmd) +{ with(self) +{ + if (_disclosureControlQueue.length) + return _disclosureControlQueue.pop(); + if (!_disclosureControlData) + if (!_disclosureControlPrototype) + return nil; + else + _disclosureControlData = objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _disclosureControlPrototype); + var disclosureControl = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", _disclosureControlData); + objj_msgSend(disclosureControl, "setTarget:", self); + objj_msgSend(disclosureControl, "setAction:", sel_getUid("_toggleFromDisclosureControl:")); + return disclosureControl; +} +},["CPControl"]), new objj_method(sel_getUid("_noteSelectionIsChanging"), function $CPOutlineView___noteSelectionIsChanging(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewSelectionIsChangingNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_noteSelectionDidChange"), function $CPOutlineView___noteSelectionDidChange(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewSelectionDidChangeNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_noteItemWillExpand:"), function $CPOutlineView___noteItemWillExpand_(self, _cmd, item) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewItemWillExpandNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", item, "CPObject")); +} +},["void","id"]), new objj_method(sel_getUid("_noteItemDidExpand:"), function $CPOutlineView___noteItemDidExpand_(self, _cmd, item) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewItemDidExpandNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", item, "CPObject")); +} +},["void","id"]), new objj_method(sel_getUid("_noteItemWillCollapse:"), function $CPOutlineView___noteItemWillCollapse_(self, _cmd, item) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewItemWillCollapseNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", item, "CPObject")); +} +},["void","id"]), new objj_method(sel_getUid("_noteItemDidCollapse:"), function $CPOutlineView___noteItemDidCollapse_(self, _cmd, item) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPOutlineViewItemDidCollapseNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", item, "CPObject")); +} +},["void","id"])]); +} +var _reloadItem = function( anOutlineView, anItem) +{ + if (!anItem) + return; + with(anOutlineView) + { + var itemInfosForItems = _itemInfosForItems, + dataSource = _outlineViewDataSource, + itemUID = objj_msgSend(anItem, "UID"), + itemInfo = itemInfosForItems[itemUID]; + if (!itemInfo) + return []; + var parent = itemInfo.parent, + parentItemInfo = parent ? itemInfosForItems[objj_msgSend(parent, "UID")] : _rootItemInfo, + parentChildren = parentItemInfo.children, + index = objj_msgSend(parentChildren, "indexOfObjectIdenticalTo:", anItem), + newItem = objj_msgSend(dataSource, "outlineView:child:ofItem:", anOutlineView, index, parent); + if (anItem !== newItem) + { + itemInfosForItems[objj_msgSend(anItem, "UID")] = nil; + itemInfosForItems[objj_msgSend(newItem, "UID")] = itemInfo; + parentChildren[index] = newItem; + _itemsForRows[itemInfo.row] = newItem; + } + itemInfo.isExpandable = objj_msgSend(dataSource, "outlineView:isItemExpandable:", anOutlineView, newItem); + itemInfo.isExpanded = itemInfo.isExpandable && itemInfo.isExpanded; + } +} +var _loadItemInfoForItem = function( anOutlineView, anItem, isIntermediate) +{ + with(anOutlineView) + { + var itemInfosForItems = _itemInfosForItems, + dataSource = _outlineViewDataSource; + if (!anItem) + var itemInfo = _rootItemInfo; + else + { + var itemUID = objj_msgSend(anItem, "UID"), + itemInfo = itemInfosForItems[itemUID]; + if (!itemInfo) + return []; + itemInfo.isExpandable = objj_msgSend(dataSource, "outlineView:isItemExpandable:", anOutlineView, anItem); + if (!itemInfo.isExpandable && itemInfo.isExpanded) + { + itemInfo.isExpanded = NO; + itemInfo.children = []; + } + } + var weight = itemInfo.weight, + descendants = anItem ? [anItem] : []; + if (itemInfo.isExpanded && (!(_implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_shouldDeferDisplayingChildrenOfItem_) || + !objj_msgSend(dataSource, "outlineView:shouldDeferDisplayingChildrenOfItem:", anOutlineView, anItem))) + { + var index = 0, + count = objj_msgSend(dataSource, "outlineView:numberOfChildrenOfItem:", anOutlineView, anItem), + level = itemInfo.level + 1; + itemInfo.children = []; + for (; index < count; ++index) + { + var childItem = objj_msgSend(dataSource, "outlineView:child:ofItem:", anOutlineView, index, anItem), + childItemInfo = itemInfosForItems[objj_msgSend(childItem, "UID")]; + if (!childItemInfo) + { + childItemInfo = { isExpanded:NO, isExpandable:NO, children:[], weight:1 }; + itemInfosForItems[objj_msgSend(childItem, "UID")] = childItemInfo; + } + itemInfo.children[index] = childItem; + var childDescendants = _loadItemInfoForItem(anOutlineView, childItem, YES); + childItemInfo.parent = anItem; + childItemInfo.level = level; + descendants = descendants.concat(childDescendants); + } + } + itemInfo.weight = descendants.length; + if (!isIntermediate) + { + var index = MAX(itemInfo.row, 0), + itemsForRows = _itemsForRows; + descendants.unshift(index, weight); + itemsForRows.splice.apply(itemsForRows, descendants); + var count = itemsForRows.length; + for (; index < count; ++index) + itemInfosForItems[objj_msgSend(itemsForRows[index], "UID")].row = index; + var deltaWeight = itemInfo.weight - weight; + if (deltaWeight !== 0) + { + var parent = itemInfo.parent; + while (parent) + { + var parentItemInfo = itemInfosForItems[objj_msgSend(parent, "UID")]; + parentItemInfo.weight += deltaWeight; + parent = parentItemInfo.parent; + } + if (anItem) + _rootItemInfo.weight += deltaWeight; + } + } + } + return descendants; +} +{var the_class = objj_allocateClassPair(CPObject, "_CPOutlineViewTableViewDataSource"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_outlineView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithOutlineView:"), function $_CPOutlineViewTableViewDataSource__initWithOutlineView_(self, _cmd, anOutlineView) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPOutlineViewTableViewDataSource").super_class }, "init"); + if (self) + _outlineView = anOutlineView; + return self; +} +},["id","CPOutlineView"]), new objj_method(sel_getUid("numberOfRowsInTableView:"), function $_CPOutlineViewTableViewDataSource__numberOfRowsInTableView_(self, _cmd, anOutlineView) +{ with(self) +{ + return _outlineView._itemsForRows.length; +} +},["CPInteger","CPTableView"]), new objj_method(sel_getUid("tableView:objectValueForTableColumn:row:"), function $_CPOutlineViewTableViewDataSource__tableView_objectValueForTableColumn_row_(self, _cmd, aTableView, aTableColumn, aRow) +{ with(self) +{ + return objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:objectValueForTableColumn:byItem:", _outlineView, aTableColumn, _outlineView._itemsForRows[aRow]); +} +},["id","CPTableView","CPTableColumn","CPInteger"]), new objj_method(sel_getUid("tableView:setObjectValue:forTableColumn:row:"), function $_CPOutlineViewTableViewDataSource__tableView_setObjectValue_forTableColumn_row_(self, _cmd, aTableView, aValue, aColumn, aRow) +{ with(self) +{ + if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_setObjectValue_forTableColumn_byItem_)) + return; + objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:setObjectValue:forTableColumn:byItem:", _outlineView, aValue, aColumn, _outlineView._itemsForRows[aRow]); +} +},["void","CPTableView","id","CPTableColumn","CPInteger"]), new objj_method(sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"), function $_CPOutlineViewTableViewDataSource__tableView_writeRowsWithIndexes_toPasteboard_(self, _cmd, aTableColumn, theIndexes, thePasteboard) +{ with(self) +{ + if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_writeItems_toPasteboard_)) + return NO; + var rowIndexes = []; + objj_msgSend(theIndexes, "getIndexes:maxCount:inIndexRange:", rowIndexes, objj_msgSend(theIndexes, "count"), nil); + var rowIndex = objj_msgSend(rowIndexes, "count"), + items = []; + while (rowIndex--) + objj_msgSend(items, "addObject:", objj_msgSend(_outlineView, "itemAtRow:", objj_msgSend(rowIndexes, "objectAtIndex:", rowIndex))); + return objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:writeItems:toPasteboard:", _outlineView, items, thePasteboard); +} +},["BOOL","CPTableView","CPIndexSet","CPPasteboard"]), new objj_method(sel_getUid("_childIndexForDropOperation:row:offset:"), function $_CPOutlineViewTableViewDataSource___childIndexForDropOperation_row_offset_(self, _cmd, theDropOperation, theRow, theOffset) +{ with(self) +{ + if (_outlineView._shouldRetargetChildIndex) + return _outlineView._retargedChildIndex; + var childIndex = CPNotFound; + if (theDropOperation === CPTableViewDropAbove) + { + var parentItem = objj_msgSend(_outlineView, "_parentItemForUpperRow:andLowerRow:atMouseOffset:", theRow - 1, theRow, theOffset), + itemInfo = (parentItem !== nil) ? _outlineView._itemInfosForItems[objj_msgSend(parentItem, "UID")] : _outlineView._rootItemInfo, + children = itemInfo.children; + childIndex = objj_msgSend(children, "indexOfObject:", objj_msgSend(_outlineView, "itemAtRow:", theRow)); + if (childIndex === CPNotFound) + childIndex = children.length; + } + else if (theDropOperation === CPTableViewDropOn) + childIndex = -1; + return childIndex; +} +},["int","CPTableViewDropOperation","int","CPPoint"]), new objj_method(sel_getUid("_parentItemForDropOperation:row:offset:"), function $_CPOutlineViewTableViewDataSource___parentItemForDropOperation_row_offset_(self, _cmd, theDropOperation, theRow, theOffset) +{ with(self) +{ + if (theDropOperation === CPTableViewDropAbove) + return objj_msgSend(_outlineView, "_parentItemForUpperRow:andLowerRow:atMouseOffset:", theRow - 1, theRow, theOffset) + return objj_msgSend(_outlineView, "itemAtRow:", theRow); +} +},["void","CPTableViewDropOperation","int","CPPoint"]), new objj_method(sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"), function $_CPOutlineViewTableViewDataSource__tableView_validateDrop_proposedRow_proposedDropOperation_(self, _cmd, aTableView, theInfo, theRow, theOperation) +{ with(self) +{ + if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_validateDrop_proposedItem_proposedChildIndex_)) + return CPDragOperationNone; + _outlineView._retargetedItem = nil; + _outlineView._shouldRetargetItem = NO; + _outlineView._retargedChildIndex = nil; + _outlineView._shouldRetargetChildIndex = NO; + var location = objj_msgSend(_outlineView, "convertPoint:fromView:", objj_msgSend(theInfo, "draggingLocation"), nil), + parentItem = objj_msgSend(self, "_parentItemForDropOperation:row:offset:", theOperation, theRow, location), + childIndex = objj_msgSend(self, "_childIndexForDropOperation:row:offset:", theOperation, theRow, location); + return objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:validateDrop:proposedItem:proposedChildIndex:", _outlineView, theInfo, parentItem, childIndex); +} +},["CPDragOperation","CPTableView","id<CPDraggingInfo>","int","CPTableViewDropOperation"]), new objj_method(sel_getUid("tableView:acceptDrop:row:dropOperation:"), function $_CPOutlineViewTableViewDataSource__tableView_acceptDrop_row_dropOperation_(self, _cmd, aTableView, theInfo, theRow, theOperation) +{ with(self) +{ + if (!(_outlineView._implementedOutlineViewDataSourceMethods & CPOutlineViewDataSource_outlineView_acceptDrop_item_childIndex_)) + return NO; + var location = objj_msgSend(_outlineView, "convertPoint:fromView:", objj_msgSend(theInfo, "draggingLocation"), nil), + parentItem = objj_msgSend(self, "_parentItemForDropOperation:row:offset:", theOperation, theRow, location); + childIndex = objj_msgSend(self, "_childIndexForDropOperation:row:offset:", theOperation, theRow, location); + _outlineView._retargetedItem = nil; + _outlineView._shouldRetargetItem = NO; + _outlineView._retargedChildIndex = nil; + _outlineView._shouldRetargetChildIndex = NO; + return objj_msgSend(_outlineView._outlineViewDataSource, "outlineView:acceptDrop:item:childIndex:", _outlineView, theInfo, parentItem, childIndex); +} +},["BOOL","CPTableView","id<CPDraggingInfo>","int","CPTableViewDropOperation"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPOutlineViewTableViewDelegate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_outlineView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithOutlineView:"), function $_CPOutlineViewTableViewDelegate__initWithOutlineView_(self, _cmd, anOutlineView) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPOutlineViewTableViewDelegate").super_class }, "init"); + if (self) + _outlineView = anOutlineView; + return self; +} +},["id","CPOutlineView"]), new objj_method(sel_getUid("tableView:dataViewForTableColumn:row:"), function $_CPOutlineViewTableViewDelegate__tableView_dataViewForTableColumn_row_(self, _cmd, theTableView, theTableColumn, theRow) +{ with(self) +{ + var dataView = nil; + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_dataViewForTableColumn_item_)) + dataView = objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:dataViewForTableColumn:item:", _outlineView, theTableColumn, objj_msgSend(_outlineView, "itemAtRow:", theRow)); + if (!dataView) + dataView = objj_msgSend(theTableColumn, "dataViewForRow:", theRow); + return dataView; +} +},["CPView","CPTableView","CPTableColumn","int"]), new objj_method(sel_getUid("tableView:shouldSelectRow:"), function $_CPOutlineViewTableViewDelegate__tableView_shouldSelectRow_(self, _cmd, theTableView, theRow) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_shouldSelectItem_)) + return objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:shouldSelectItem:", _outlineView, objj_msgSend(_outlineView, "itemAtRow:", theRow)); + return YES; +} +},["BOOL","CPTableView","int"]), new objj_method(sel_getUid("tableView:shouldEditTableColumn:row:"), function $_CPOutlineViewTableViewDelegate__tableView_shouldEditTableColumn_row_(self, _cmd, aTableView, aColumn, aRow) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_shouldEditTableColumn_item_)) + return objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:shouldEditTableColumn:item:", _outlineView, aColumn, objj_msgSend(_outlineView, "itemAtRow:", aRow)); + return NO; +} +},["BOOL","CPTableView","CPTableColumn","int"]), new objj_method(sel_getUid("tableView:heightOfRow:"), function $_CPOutlineViewTableViewDelegate__tableView_heightOfRow_(self, _cmd, theTableView, theRow) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_heightOfRowByItem_)) + return objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:heightOfRowByItem:", _outlineView, objj_msgSend(_outlineView, "itemAtRow:", theRow)); + return objj_msgSend(theTableView, "rowHeight"); +} +},["float","CPTableView","int"]), new objj_method(sel_getUid("tableView:willDisplayView:forTableColumn:row:"), function $_CPOutlineViewTableViewDelegate__tableView_willDisplayView_forTableColumn_row_(self, _cmd, aTableView, aView, aTableColumn, aRowIndex) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_willDisplayView_forTableColumn_item_)) + { + var item = objj_msgSend(_outlineView, "itemAtRow:", aRowIndex); + objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:willDisplayView:forTableColumn:item:", _outlineView, aView, aTableColumn, item); + } +} +},["void","CPTableView","id","CPTableColumn","int"]), new objj_method(sel_getUid("tableView:isGroupRow:"), function $_CPOutlineViewTableViewDelegate__tableView_isGroupRow_(self, _cmd, aTableView, row) +{ with(self) +{ + if ((_outlineView._implementedOutlineViewDelegateMethods & CPOutlineViewDelegate_outlineView_isGroupItem_)) + return objj_msgSend(_outlineView._outlineViewDelegate, "outlineView:isGroupItem:", _outlineView, objj_msgSend(_outlineView, "itemAtRow:", theRow)); + return NO; +} +},["BOOL","CPTableView","int"])]); +} +{var the_class = objj_allocateClassPair(CPButton, "CPDisclosureButton"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_angle")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPDisclosureButton__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDisclosureButton").super_class }, "initWithFrame:", aFrame); + if (self) + objj_msgSend(self, "setBordered:", NO); + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setState:"), function $CPDisclosureButton__setState_(self, _cmd, aState) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDisclosureButton").super_class }, "setState:", aState); + if (objj_msgSend(self, "state") === CPOnState) + _angle = 0.0; + else + _angle = -PI_2; +} +},["void","CPState"]), new objj_method(sel_getUid("drawRect:"), function $CPDisclosureButton__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextBeginPath(context); + CGContextTranslateCTM(context, (bounds.size.width) / 2.0, (bounds.size.height) / 2.0); + CGContextRotateCTM(context, _angle); + CGContextTranslateCTM(context, -(bounds.size.width) / 2.0, -(bounds.size.height) / 2.0); + CGContextTranslateCTM(context, FLOOR(((bounds.size.width) - 9.0) / 2.0), FLOOR(((bounds.size.height) - 8.0) / 2.0)); + CGContextMoveToPoint(context, 0.0, 0.0); + CGContextAddLineToPoint(context, 9.0, 0.0); + CGContextAddLineToPoint(context, 4.5, 8.0); + CGContextAddLineToPoint(context, 0.0, 0.0); + CGContextClosePath(context); + CGContextSetFillColor(context, + colorForDisclosureTriangle(objj_msgSend(self, "hasThemeState:", CPThemeStateSelected), + objj_msgSend(self, "hasThemeState:", CPThemeStateHighlighted))); + CGContextFillPath(context); + CGContextBeginPath(context); + CGContextMoveToPoint(context, 0.0, 0.0); + if(_angle === 0.0) { + CGContextAddLineToPoint(context, 4.5, 8.0); + CGContextAddLineToPoint(context, 9.0, 0.0); + } else { + CGContextAddLineToPoint(context, 4.5, 8.0); + } + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 1.0, 0.8)); + CGContextStrokePath(context); +} +},["void","CGRect"])]); +} +var CPOutlineViewIndentationPerLevelKey = "CPOutlineViewIndentationPerLevelKey", + CPOutlineViewOutlineTableColumnKey = "CPOutlineViewOutlineTableColumnKey", + CPOutlineViewDataSourceKey = "CPOutlineViewDataSourceKey", + CPOutlineViewDelegateKey = "CPOutlineViewDelegateKey"; +{ +var the_class = objj_getClass("CPOutlineView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPOutlineView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPOutlineView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _rootItemInfo = { isExpanded:YES, isExpandable:NO, level:-1, row:-1, children:[], weight:0 }; + _itemsForRows = []; + _itemInfosForItems = { }; + _disclosureControlsForRows = []; + objj_msgSend(self, "setIndentationMarkerFollowsDataView:", YES); + objj_msgSend(self, "setDisclosureControlPrototype:", objj_msgSend(objj_msgSend(CPDisclosureButton, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 10.0, 10.0))); + _outlineTableColumn = objj_msgSend(aCoder, "decodeObjectForKey:", CPOutlineViewOutlineTableColumnKey); + _indentationPerLevel = objj_msgSend(aCoder, "decodeFloatForKey:", CPOutlineViewIndentationPerLevelKey); + _outlineViewDataSource = objj_msgSend(aCoder, "decodeObjectForKey:", CPOutlineViewDataSourceKey); + _outlineViewDelegate = objj_msgSend(aCoder, "decodeObjectForKey:", CPOutlineViewDelegateKey); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "setDataSource:", objj_msgSend(objj_msgSend(_CPOutlineViewTableViewDataSource, "alloc"), "initWithOutlineView:", self)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPOutlineView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOutlineView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _outlineTableColumn, CPOutlineViewOutlineTableColumnKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _indentationPerLevel, CPOutlineViewIndentationPerLevelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _outlineViewDataSource, CPOutlineViewDataSourceKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _outlineViewDelegate, CPOutlineViewDelegateKey); +} +},["void","CPCoder"])]); +} +var colorForDisclosureTriangle = function(isSelected, isHighlighted) { + return isSelected + ? (isHighlighted + ? objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 0.9, 1.0) + : objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 1.0, 1.0)) + : (isHighlighted + ? objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 0.4, 1.0) + : objj_msgSend(CPColor, "colorWithCalibratedWhite:alpha:", 0.5, 1.0)); +} + +p;9;CPPanel.jt;1754;@STATIC;1.0;i;10;CPWindow.jt;1720;objj_executeFile("CPWindow.j", YES); +CPOKButton = 1; +CPCancelButton = 0; +CPDocModalWindowMask = 1 << 6; +{var the_class = objj_allocateClassPair(CPWindow, "CPPanel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_becomesKeyOnlyIfNeeded"), new objj_ivar("_worksWhenModal")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isFloatingPanel"), function $CPPanel__isFloatingPanel(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "level") == CPFloatingWindowLevel; +} +},["BOOL"]), new objj_method(sel_getUid("setFloatingPanel:"), function $CPPanel__setFloatingPanel_(self, _cmd, isFloatingPanel) +{ with(self) +{ + objj_msgSend(self, "setLevel:", isFloatingPanel ? CPFloatingWindowLevel : CPNormalWindowLevel); +} +},["void","BOOL"]), new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"), function $CPPanel__becomesKeyOnlyIfNeeded(self, _cmd) +{ with(self) +{ + return _becomesKeyOnlyIfNeeded; +} +},["BOOL"]), new objj_method(sel_getUid("setBecomesKeyOnlyIfNeeded:"), function $CPPanel__setBecomesKeyOnlyIfNeeded_(self, _cmd, shouldBecomeKeyOnlyIfNeeded) +{ with(self) +{ + _becomesKeyOnlyIfNeeded = shouldBecomeKeyOnlyIfNeeded +} +},["void","BOOL"]), new objj_method(sel_getUid("worksWhenModal"), function $CPPanel__worksWhenModal(self, _cmd) +{ with(self) +{ + return _worksWhenModal; +} +},["BOOL"]), new objj_method(sel_getUid("setWorksWhenModal:"), function $CPPanel__setWorksWhenModal_(self, _cmd, shouldWorkWhenModal) +{ with(self) +{ + _worksWhenModal = shouldWorkWhenModal; +} +},["void","BOOL"]), new objj_method(sel_getUid("canBecomeMainWindow"), function $CPPanel__canBecomeMainWindow(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"])]); +} + +p;14;CPPasteboard.jt;9457;@STATIC;1.0;I;21;Foundation/CPObject.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;40;Foundation/CPPropertyListSerialization.jt;9312;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPPropertyListSerialization.j", NO); +CPGeneralPboard = "CPGeneralPboard"; +CPFontPboard = "CPFontPboard"; +CPRulerPboard = "CPRulerPboard"; +CPFindPboard = "CPFindPboard"; +CPDragPboard = "CPDragPboard"; +CPColorPboardType = "CPColorPboardType"; +CPFilenamesPboardType = "CPFilenamesPboardType"; +CPFontPboardType = "CPFontPboardType"; +CPHTMLPboardType = "CPHTMLPboardType"; +CPStringPboardType = "CPStringPboardType"; +CPURLPboardType = "CPURLPboardType"; +CPImagesPboardType = "CPImagesPboardType"; +CPVideosPboardType = "CPVideosPboardType"; +UTF8PboardType = "public.utf8-plain-text"; +CPImagePboardType = "CPImagePboardType"; +var CPPasteboards = nil, + supportsNativePasteboard = NO; +{var the_class = objj_allocateClassPair(CPObject, "CPPasteboard"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_types"), new objj_ivar("_owners"), new objj_ivar("_provided"), new objj_ivar("_changeCount"), new objj_ivar("_stateUID"), new objj_ivar("_nativePasteboard")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initWithName:"), function $CPPasteboard___initWithName_(self, _cmd, aName) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPasteboard").super_class }, "init"); + if (self) + { + _name = aName; + _types = []; + _owners = objj_msgSend(CPDictionary, "dictionary"); + _provided = objj_msgSend(CPDictionary, "dictionary"); + _changeCount = 0; + if (supportsNativePasteboard) + { + _nativePasteboard = window.cpPasteboardWithName(aName); + objj_msgSend(self, "_synchronizePasteboard"); + } + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("addTypes:owner:"), function $CPPasteboard__addTypes_owner_(self, _cmd, types, anOwner) +{ with(self) +{ + var i = 0, + count = types.length; + for (; i < count; ++i) + { + var type = types[i]; + if(!objj_msgSend(_owners, "objectForKey:", type)) + { + objj_msgSend(_types, "addObject:", type); + objj_msgSend(_provided, "removeObjectForKey:", type); + } + objj_msgSend(_owners, "setObject:forKey:", anOwner, type); + } + if (_nativePasteboard) + { + var nativeTypes = objj_msgSend(types, "copy"); + if (objj_msgSend(types, "containsObject:", CPStringPboardType)) + nativeTypes.push(UTF8PboardType); + _nativePasteboard.addTypes_(nativeTypes); + } + return ++_changeCount; +} +},["unsigned","CPArray","id"]), new objj_method(sel_getUid("declareTypes:owner:"), function $CPPasteboard__declareTypes_owner_(self, _cmd, types, anOwner) +{ with(self) +{ + objj_msgSend(self, "_declareTypes:owner:updateNativePasteboard:", types, anOwner, YES); +} +},["unsigned","CPArray","id"]), new objj_method(sel_getUid("_declareTypes:owner:updateNativePasteboard:"), function $CPPasteboard___declareTypes_owner_updateNativePasteboard_(self, _cmd, types, anOwner, shouldUpdate) +{ with(self) +{ + objj_msgSend(_types, "setArray:", types); + _owners = objj_msgSend(CPDictionary, "dictionary"); + _provided = objj_msgSend(CPDictionary, "dictionary"); + var count = _types.length; + while (count--) + objj_msgSend(_owners, "setObject:forKey:", anOwner, _types[count]); + if (_nativePasteboard && shouldUpdate) + { + var nativeTypes = objj_msgSend(types, "copy"); + if (objj_msgSend(types, "containsObject:", CPStringPboardType)) + nativeTypes.push(UTF8PboardType); + _nativePasteboard.declareTypes_(nativeTypes); + _changeCount = _nativePasteboard.changeCount(); + } + return ++_changeCount; +} +},["unsigned","CPArray","id","BOOL"]), new objj_method(sel_getUid("setData:forType:"), function $CPPasteboard__setData_forType_(self, _cmd, aData, aType) +{ with(self) +{ + objj_msgSend(_provided, "setObject:forKey:", aData, aType); + if (aType === CPStringPboardType) + objj_msgSend(self, "setData:forType:", aData, UTF8PboardType); + return YES; +} +},["BOOL","CPData","CPString"]), new objj_method(sel_getUid("setPropertyList:forType:"), function $CPPasteboard__setPropertyList_forType_(self, _cmd, aPropertyList, aType) +{ with(self) +{ + return objj_msgSend(self, "setData:forType:", objj_msgSend(CPPropertyListSerialization, "dataFromPropertyList:format:", aPropertyList, CPPropertyList280NorthFormat_v1_0), aType); +} +},["BOOL","id","CPString"]), new objj_method(sel_getUid("setString:forType:"), function $CPPasteboard__setString_forType_(self, _cmd, aString, aType) +{ with(self) +{ + objj_msgSend(self, "setPropertyList:forType:", aString, aType); +} +},["void","CPString","CPString"]), new objj_method(sel_getUid("availableTypeFromArray:"), function $CPPasteboard__availableTypeFromArray_(self, _cmd, anArray) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "types"), "firstObjectCommonWithArray:", anArray); +} +},["CPString","CPArray"]), new objj_method(sel_getUid("types"), function $CPPasteboard__types(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_synchronizePasteboard"); + return _types; +} +},["CPArray"]), new objj_method(sel_getUid("changeCount"), function $CPPasteboard__changeCount(self, _cmd) +{ with(self) +{ + return _changeCount; +} +},["unsigned"]), new objj_method(sel_getUid("dataForType:"), function $CPPasteboard__dataForType_(self, _cmd, aType) +{ with(self) +{ + var data = objj_msgSend(_provided, "objectForKey:", aType); + if (data) + return data; + var owner = objj_msgSend(_owners, "objectForKey:", aType); + if (owner) + { + objj_msgSend(owner, "pasteboard:provideDataForType:", self, aType); + return objj_msgSend(_provided, "objectForKey:", aType); + } + if (aType === CPStringPboardType) + return objj_msgSend(self, "dataForType:", UTF8PboardType); + return nil; +} +},["CPData","CPString"]), new objj_method(sel_getUid("_synchronizePasteboard"), function $CPPasteboard___synchronizePasteboard(self, _cmd) +{ with(self) +{ + if (_nativePasteboard && _nativePasteboard.changeCount() > _changeCount) + { + var nativeTypes = objj_msgSend(_nativePasteboard.types(), "copy"); + if (objj_msgSend(nativeTypes, "containsObject:", UTF8PboardType)) + nativeTypes.push(CPStringPboardType); + objj_msgSend(self, "_declareTypes:owner:updateNativePasteboard:", nativeTypes, self, NO); + _changeCount = _nativePasteboard.changeCount(); + } +} +},["void"]), new objj_method(sel_getUid("pasteboard:provideDataForType:"), function $CPPasteboard__pasteboard_provideDataForType_(self, _cmd, aPasteboard, aType) +{ with(self) +{ + if (aType === CPStringPboardType) + { + var string = _nativePasteboard.stringForType_(UTF8PboardType); + objj_msgSend(self, "setString:forType:", string, CPStringPboardType); + objj_msgSend(self, "setString:forType:", string, UTF8PboardType); + } + else + objj_msgSend(self, "setString:forType:", _nativePasteboard.stringForType_(aType), aType); +} +},["void","CPPasteboard","CPString"]), new objj_method(sel_getUid("propertyListForType:"), function $CPPasteboard__propertyListForType_(self, _cmd, aType) +{ with(self) +{ + var data = objj_msgSend(self, "dataForType:", aType); + if (data) + return objj_msgSend(CPPropertyListSerialization, "propertyListFromData:format:", data, CPPropertyList280NorthFormat_v1_0); + return nil; +} +},["id","CPString"]), new objj_method(sel_getUid("stringForType:"), function $CPPasteboard__stringForType_(self, _cmd, aType) +{ with(self) +{ + return objj_msgSend(self, "propertyListForType:", aType); +} +},["CPString","CPString"]), new objj_method(sel_getUid("_generateStateUID"), function $CPPasteboard___generateStateUID(self, _cmd) +{ with(self) +{ + var bits = 32; + _stateUID = ""; + while (bits--) + _stateUID += FLOOR(RAND() * 16.0).toString(16).toUpperCase(); + return _stateUID; +} +},["CPString"]), new objj_method(sel_getUid("_stateUID"), function $CPPasteboard___stateUID(self, _cmd) +{ with(self) +{ + return _stateUID; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPPasteboard__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPPasteboard, "class")) + return; + objj_msgSend(self, "setVersion:", 1.0); + CPPasteboards = objj_msgSend(CPDictionary, "dictionary"); + if (typeof window.cpPasteboardWithName !== "undefined") + supportsNativePasteboard = YES; +} +},["void"]), new objj_method(sel_getUid("generalPasteboard"), function $CPPasteboard__generalPasteboard(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPPasteboard, "pasteboardWithName:", CPGeneralPboard); +} +},["id"]), new objj_method(sel_getUid("pasteboardWithName:"), function $CPPasteboard__pasteboardWithName_(self, _cmd, aName) +{ with(self) +{ + var pasteboard = objj_msgSend(CPPasteboards, "objectForKey:", aName); + if (pasteboard) + return pasteboard; + pasteboard = objj_msgSend(objj_msgSend(CPPasteboard, "alloc"), "_initWithName:", aName); + objj_msgSend(CPPasteboards, "setObject:forKey:", pasteboard, aName); + return pasteboard; +} +},["id","CPString"])]); +} + +p;15;CPPopUpButton.jt;19331;@STATIC;1.0;i;10;CPButton.ji;12;CPGeometry.ji;8;CPMenu.ji;12;CPMenuItem.jt;19250;objj_executeFile("CPButton.j", YES); +objj_executeFile("CPGeometry.j", YES); +objj_executeFile("CPMenu.j", YES); +objj_executeFile("CPMenuItem.j", YES); +var VISIBLE_MARGIN = 7.0; +CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); +{var the_class = objj_allocateClassPair(CPButton, "CPPopUpButton"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_selectedIndex"), new objj_ivar("_preferredEdge"), new objj_ivar("_menu")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:pullsDown:"), function $CPPopUpButton__initWithFrame_pullsDown_(self, _cmd, aFrame, shouldPullDown) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "initWithFrame:", aFrame); + if (self) + { + _selectedIndex = CPNotFound; + _preferredEdge = CPMaxYEdge; + objj_msgSend(self, "setValue:forThemeAttribute:", CPImageLeft, "image-position"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPLeftTextAlignment, "alignment"); + objj_msgSend(self, "setValue:forThemeAttribute:", CPLineBreakByTruncatingTail, "line-break-mode"); + objj_msgSend(self, "setMenu:", objj_msgSend(objj_msgSend(CPMenu, "alloc"), "initWithTitle:", "")); + objj_msgSend(self, "setPullsDown:", shouldPullDown); + } + return self; +} +},["id","CGRect","BOOL"]), new objj_method(sel_getUid("initWithFrame:"), function $CPPopUpButton__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(self, "initWithFrame:pullsDown:", aFrame, NO); +} +},["id","CGRect"]), new objj_method(sel_getUid("setPullsDown:"), function $CPPopUpButton__setPullsDown_(self, _cmd, shouldPullDown) +{ with(self) +{ + if (shouldPullDown) + var changed = objj_msgSend(self, "setThemeState:", CPPopUpButtonStatePullsDown); + else + var changed = objj_msgSend(self, "unsetThemeState:", CPPopUpButtonStatePullsDown); + if (!changed) + return; + var items = objj_msgSend(_menu, "itemArray"); + if (objj_msgSend(items, "count") <= 0) + return; + objj_msgSend(items[0], "setHidden:", objj_msgSend(self, "pullsDown")); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","BOOL"]), new objj_method(sel_getUid("pullsDown"), function $CPPopUpButton__pullsDown(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPPopUpButtonStatePullsDown); +} +},["BOOL"]), new objj_method(sel_getUid("addItem:"), function $CPPopUpButton__addItem_(self, _cmd, anItem) +{ with(self) +{ + objj_msgSend(_menu, "addItem:", anItem); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("addItemWithTitle:"), function $CPPopUpButton__addItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(_menu, "addItemWithTitle:action:keyEquivalent:", aTitle, NULL, nil); +} +},["void","CPString"]), new objj_method(sel_getUid("addItemsWithTitles:"), function $CPPopUpButton__addItemsWithTitles_(self, _cmd, titles) +{ with(self) +{ + var index = 0, + count = objj_msgSend(titles, "count"); + for (; index < count; ++index) + objj_msgSend(self, "addItemWithTitle:", titles[index]); +} +},["void","CPArray"]), new objj_method(sel_getUid("insertItemWithTitle:atIndex:"), function $CPPopUpButton__insertItemWithTitle_atIndex_(self, _cmd, aTitle, anIndex) +{ with(self) +{ + var items = objj_msgSend(self, "itemArray"), + count = objj_msgSend(items, "count"); + while (count--) + if (objj_msgSend(items[count], "title") == aTitle) + objj_msgSend(self, "removeItemAtIndex:", count); + objj_msgSend(_menu, "insertItemWithTitle:action:keyEquivalent:atIndex:", aTitle, NULL, nil, anIndex); +} +},["void","CPString","int"]), new objj_method(sel_getUid("removeAllItems"), function $CPPopUpButton__removeAllItems(self, _cmd) +{ with(self) +{ + var count = objj_msgSend(_menu, "numberOfItems"); + while (count--) + objj_msgSend(_menu, "removeItemAtIndex:", 0); +} +},["void"]), new objj_method(sel_getUid("removeItemWithTitle:"), function $CPPopUpButton__removeItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(self, "removeItemAtIndex:", objj_msgSend(self, "indexOfItemWithTitle:", aTitle)); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","CPString"]), new objj_method(sel_getUid("removeItemAtIndex:"), function $CPPopUpButton__removeItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(_menu, "removeItemAtIndex:", anIndex); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","int"]), new objj_method(sel_getUid("selectedItem"), function $CPPopUpButton__selectedItem(self, _cmd) +{ with(self) +{ + if (_selectedIndex < 0 || _selectedIndex > objj_msgSend(self, "numberOfItems") - 1) + return nil; + return objj_msgSend(_menu, "itemAtIndex:", _selectedIndex); +} +},["CPMenuItem"]), new objj_method(sel_getUid("titleOfSelectedItem"), function $CPPopUpButton__titleOfSelectedItem(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "selectedItem"), "title"); +} +},["CPString"]), new objj_method(sel_getUid("indexOfSelectedItem"), function $CPPopUpButton__indexOfSelectedItem(self, _cmd) +{ with(self) +{ + return _selectedIndex; +} +},["int"]), new objj_method(sel_getUid("objectValue"), function $CPPopUpButton__objectValue(self, _cmd) +{ with(self) +{ + return _selectedIndex; +} +},["id"]), new objj_method(sel_getUid("selectItem:"), function $CPPopUpButton__selectItem_(self, _cmd, aMenuItem) +{ with(self) +{ + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(self, "indexOfItem:", aMenuItem)); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("selectItemAtIndex:"), function $CPPopUpButton__selectItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (_selectedIndex == anIndex) + return; + if (_selectedIndex >= 0 && !objj_msgSend(self, "pullsDown")) + objj_msgSend(objj_msgSend(self, "selectedItem"), "setState:", CPOffState); + _selectedIndex = anIndex; + if (_selectedIndex >= 0 && !objj_msgSend(self, "pullsDown")) + objj_msgSend(objj_msgSend(self, "selectedItem"), "setState:", CPOnState); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","int"]), new objj_method(sel_getUid("selectItemWithTag:"), function $CPPopUpButton__selectItemWithTag_(self, _cmd, aTag) +{ with(self) +{ + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(self, "indexOfItemWithTag:", aTag)); +} +},["void","int"]), new objj_method(sel_getUid("selectItemWithTitle:"), function $CPPopUpButton__selectItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(self, "indexOfItemWithTitle:", aTitle)); +} +},["void","CPString"]), new objj_method(sel_getUid("setObjectValue:"), function $CPPopUpButton__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(aValue, "intValue")); +} +},["void","id"]), new objj_method(sel_getUid("menu"), function $CPPopUpButton__menu(self, _cmd) +{ with(self) +{ + return _menu; +} +},["CPMenu"]), new objj_method(sel_getUid("setMenu:"), function $CPPopUpButton__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + if (_menu === aMenu) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_menu) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidAddItemNotification, _menu); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidChangeItemNotification, _menu); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidRemoveItemNotification, _menu); + } + _menu = aMenu; + if (_menu) + { + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidAddItem:"), CPMenuDidAddItemNotification, _menu); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidChangeItem:"), CPMenuDidChangeItemNotification, _menu); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidRemoveItem:"), CPMenuDidRemoveItemNotification, _menu); + } + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("numberOfItems"), function $CPPopUpButton__numberOfItems(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menu, "numberOfItems"); +} +},["int"]), new objj_method(sel_getUid("itemArray"), function $CPPopUpButton__itemArray(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menu, "itemArray"); +} +},["CPArray"]), new objj_method(sel_getUid("itemAtIndex:"), function $CPPopUpButton__itemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_menu, "itemAtIndex:", anIndex); +} +},["CPMenuItem","unsigned"]), new objj_method(sel_getUid("itemTitleAtIndex:"), function $CPPopUpButton__itemTitleAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_menu, "itemAtIndex:", anIndex), "title"); +} +},["CPString","unsigned"]), new objj_method(sel_getUid("itemTitles"), function $CPPopUpButton__itemTitles(self, _cmd) +{ with(self) +{ + var titles = [], + items = objj_msgSend(self, "itemArray"), + index = 0, + count = objj_msgSend(items, "count"); + for (; index < count; ++index) + titles.push(objj_msgSend(items[index], "title")); + return titles; +} +},["CPArray"]), new objj_method(sel_getUid("itemWithTitle:"), function $CPPopUpButton__itemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(_menu, "itemAtIndex:", objj_msgSend(_menu, "indexOfItemWithTitle:", aTitle)); +} +},["CPMenuItem","CPString"]), new objj_method(sel_getUid("lastItem"), function $CPPopUpButton__lastItem(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_menu, "itemArray"), "lastObject"); +} +},["CPMenuItem"]), new objj_method(sel_getUid("indexOfItem:"), function $CPPopUpButton__indexOfItem_(self, _cmd, aMenuItem) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItem:", aMenuItem); +} +},["int","CPMenuItem"]), new objj_method(sel_getUid("indexOfItemWithTag:"), function $CPPopUpButton__indexOfItemWithTag_(self, _cmd, aTag) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItemWithTag:", aTag); +} +},["int","int"]), new objj_method(sel_getUid("indexOfItemWithTitle:"), function $CPPopUpButton__indexOfItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItemWithTitle:", aTitle); +} +},["int","CPString"]), new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"), function $CPPopUpButton__indexOfItemWithRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItemWithRepresentedObject:", anObject); +} +},["int","id"]), new objj_method(sel_getUid("indexOfItemWithTarget:action:"), function $CPPopUpButton__indexOfItemWithTarget_action_(self, _cmd, aTarget, anAction) +{ with(self) +{ + return objj_msgSend(_menu, "indexOfItemWithTarget:action:", aTarget, anAction); +} +},["int","id","SEL"]), new objj_method(sel_getUid("preferredEdge"), function $CPPopUpButton__preferredEdge(self, _cmd) +{ with(self) +{ + return _preferredEdge; +} +},["CPRectEdge"]), new objj_method(sel_getUid("setPreferredEdge:"), function $CPPopUpButton__setPreferredEdge_(self, _cmd, aRectEdge) +{ with(self) +{ + _preferredEdge = aRectEdge; +} +},["void","CPRectEdge"]), new objj_method(sel_getUid("setTitle:"), function $CPPopUpButton__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + if (objj_msgSend(self, "title") === aTitle) + return; + if (objj_msgSend(self, "pullsDown")) + { + var items = objj_msgSend(_menu, "itemArray"); + if (objj_msgSend(items, "count") <= 0) + objj_msgSend(self, "addItemWithTitle:", aTitle); + else + { + objj_msgSend(items[0], "setTitle:", aTitle); + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); + } + } + else + { + var index = objj_msgSend(self, "indexOfItemWithTitle:", aTitle); + if (index < 0) + { + objj_msgSend(self, "addItemWithTitle:", aTitle); + index = objj_msgSend(self, "numberOfItems") - 1; + } + objj_msgSend(self, "selectItemAtIndex:", index); + } +} +},["void","CPString"]), new objj_method(sel_getUid("setImage:"), function $CPPopUpButton__setImage_(self, _cmd, anImage) +{ with(self) +{ +} +},["void","CPImage"]), new objj_method(sel_getUid("synchronizeTitleAndSelectedItem"), function $CPPopUpButton__synchronizeTitleAndSelectedItem(self, _cmd) +{ with(self) +{ + var item = nil; + if (objj_msgSend(self, "pullsDown")) + { + var items = objj_msgSend(_menu, "itemArray"); + if (objj_msgSend(items, "count") > 0) + item = items[0]; + } + else + item = objj_msgSend(self, "selectedItem"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "setImage:", objj_msgSend(item, "image")); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "setTitle:", objj_msgSend(item, "title")); +} +},["void"]), new objj_method(sel_getUid("menuDidAddItem:"), function $CPPopUpButton__menuDidAddItem_(self, _cmd, aNotification) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex"); + if (_selectedIndex < 0) + objj_msgSend(self, "selectItemAtIndex:", 0); + else if (index == _selectedIndex) + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); + else if (index < _selectedIndex) + ++_selectedIndex; + if (index == 0 && objj_msgSend(self, "pullsDown")) + { + var items = objj_msgSend(_menu, "itemArray"); + objj_msgSend(items[0], "setHidden:", YES); + if (items.length > 0) + objj_msgSend(items[1], "setHidden:", NO); + } + var item = objj_msgSend(_menu, "itemArray")[index], + action = objj_msgSend(item, "action"); + if (!action || (action === sel_getUid("_popUpItemAction:"))) + { + objj_msgSend(item, "setTarget:", self); + objj_msgSend(item, "setAction:", sel_getUid("_popUpItemAction:")); + } +} +},["void","CPNotification"]), new objj_method(sel_getUid("menuDidChangeItem:"), function $CPPopUpButton__menuDidChangeItem_(self, _cmd, aNotification) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex"); + if (objj_msgSend(self, "pullsDown") && index != 0) + return; + if (!objj_msgSend(self, "pullsDown") && index != _selectedIndex) + return; + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("menuDidRemoveItem:"), function $CPPopUpButton__menuDidRemoveItem_(self, _cmd, aNotification) +{ with(self) +{ + var numberOfItems = objj_msgSend(self, "numberOfItems"); + if (numberOfItems <= _selectedIndex && numberOfItems > 0) + objj_msgSend(self, "selectItemAtIndex:", numberOfItems - 1); + else + objj_msgSend(self, "synchronizeTitleAndSelectedItem"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("mouseDown:"), function $CPPopUpButton__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled") || !objj_msgSend(self, "numberOfItems")) + return; + objj_msgSend(self, "highlight:", YES); + var menu = objj_msgSend(self, "menu"), + bounds = objj_msgSend(self, "bounds"), + minimumWidth = CGRectGetWidth(bounds); + objj_msgSend(menu, "setFont:", objj_msgSend(self, "font")); + if (objj_msgSend(self, "pullsDown")) + { + var positionedItem = nil, + location = CGPointMake(0.0, CGRectGetMaxY(bounds)); + } + else + { + var contentRect = objj_msgSend(self, "contentRectForBounds:", bounds), + positionedItem = objj_msgSend(self, "selectedItem"), + standardLeftMargin = objj_msgSend(_CPMenuWindow, "_standardLeftMargin") + objj_msgSend(_CPMenuItemStandardView, "_standardLeftMargin"), + location = CGPointMake(CGRectGetMinX(contentRect) - standardLeftMargin, 0.0); + minimumWidth += standardLeftMargin; + objj_msgSend(menu, "_highlightItemAtIndex:", CPNotFound); + } + objj_msgSend(menu, "setMinimumWidth:", minimumWidth); + objj_msgSend(menu, "_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:", positionedItem, location, CGRectGetMinY(bounds), CGRectGetMaxY(bounds), self, function(aMenu) + { + objj_msgSend(self, "highlight:", NO); + var highlightedItem = objj_msgSend(aMenu, "highlightedItem"); + if (objj_msgSend(highlightedItem, "_isSelectable")) + objj_msgSend(self, "selectItem:", highlightedItem); + }); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_popUpItemAction:"), function $CPPopUpButton___popUpItemAction_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); +} +},["void","id"]), new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"), function $CPPopUpButton__takeValueFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + var count = objects.length, + value = objj_msgSend(objects[0], "valueForKeyPath:", aKeyPath); + objj_msgSend(self, "selectItemWithTag:", value); + objj_msgSend(self, "setEnabled:", YES); + while (count-- > 1) + { + if (value !== objj_msgSend(objects[count], "valueForKeyPath:", aKeyPath)) + { + objj_msgSend(objj_msgSend(self, "selectedItem"), "setState:", CPOffState); + } + } +} +},["void","CPString","CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPPopUpButton__themeClass(self, _cmd) +{ with(self) +{ + return "popup-button"; +} +},["CPString"])]); +} +var CPPopUpButtonMenuKey = "CPPopUpButtonMenuKey", + CPPopUpButtonSelectedIndexKey = "CPPopUpButtonSelectedIndexKey", + CPPopUpButtonPullsDownKey = "CPPopUpButtonPullsDownKey"; +{ +var the_class = objj_getClass("CPPopUpButton") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPPopUpButton\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPPopUpButton__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "initWithCoder:", aCoder); + if (self) + { + _selectedIndex = -1; + objj_msgSend(self, "setMenu:", objj_msgSend(aCoder, "decodeObjectForKey:", CPPopUpButtonMenuKey)); + objj_msgSend(self, "selectItemAtIndex:", objj_msgSend(aCoder, "decodeObjectForKey:", CPPopUpButtonSelectedIndexKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPPopUpButton__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPopUpButton").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _menu, CPPopUpButtonMenuKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _selectedIndex, CPPopUpButtonSelectedIndexKey); +} +},["void","CPCoder"])]); +} + +p;21;CPProgressIndicator.jt;12947;@STATIC;1.0;I;19;AppKit/CGGeometry.jI;20;AppKit/CPImageView.jI;15;AppKit/CPView.jt;12858;objj_executeFile("AppKit/CGGeometry.j", NO); +objj_executeFile("AppKit/CPImageView.j", NO); +objj_executeFile("AppKit/CPView.j", NO); +CPProgressIndicatorBarStyle = 0; +CPProgressIndicatorSpinningStyle = 1; +CPProgressIndicatorHUDBarStyle = 2; +var CPProgressIndicatorSpinningStyleColors = nil, + CPProgressIndicatorClassName = nil, + CPProgressIndicatorStyleIdentifiers = nil, + CPProgressIndicatorStyleSizes = nil; +{var the_class = objj_allocateClassPair(CPView, "CPProgressIndicator"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_minValue"), new objj_ivar("_maxValue"), new objj_ivar("_doubleValue"), new objj_ivar("_controlSize"), new objj_ivar("_isIndeterminate"), new objj_ivar("_style"), new objj_ivar("_isAnimating"), new objj_ivar("_isDisplayedWhenStoppedSet"), new objj_ivar("_isDisplayedWhenStopped"), new objj_ivar("_barView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPProgressIndicator__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPProgressIndicator").super_class }, "initWithFrame:", aFrame); + if (self) + { + _minValue = 0.0; + _maxValue = 100.0; + _doubleValue = 0.0; + _style = CPProgressIndicatorBarStyle; + _isDisplayedWhenStoppedSet = NO; + _controlSize = CPRegularControlSize; + objj_msgSend(self, "updateBackgroundColor"); + objj_msgSend(self, "drawBar"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setUsesThreadedAnimation:"), function $CPProgressIndicator__setUsesThreadedAnimation_(self, _cmd, aFlag) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("startAnimation:"), function $CPProgressIndicator__startAnimation_(self, _cmd, aSender) +{ with(self) +{ + _isAnimating = YES; + objj_msgSend(self, "_hideOrDisplay"); +} +},["void","id"]), new objj_method(sel_getUid("stopAnimation:"), function $CPProgressIndicator__stopAnimation_(self, _cmd, aSender) +{ with(self) +{ + _isAnimating = NO; + objj_msgSend(self, "_hideOrDisplay"); +} +},["void","id"]), new objj_method(sel_getUid("usesThreadedAnimation"), function $CPProgressIndicator__usesThreadedAnimation(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("incrementBy:"), function $CPProgressIndicator__incrementBy_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(self, "setDoubleValue:", _doubleValue + aValue); +} +},["void","double"]), new objj_method(sel_getUid("setDoubleValue:"), function $CPProgressIndicator__setDoubleValue_(self, _cmd, aValue) +{ with(self) +{ + _doubleValue = MIN(MAX(aValue, _minValue), _maxValue); + objj_msgSend(self, "drawBar"); +} +},["void","double"]), new objj_method(sel_getUid("doubleValue"), function $CPProgressIndicator__doubleValue(self, _cmd) +{ with(self) +{ + return _doubleValue; +} +},["double"]), new objj_method(sel_getUid("setMinValue:"), function $CPProgressIndicator__setMinValue_(self, _cmd, aValue) +{ with(self) +{ + _minValue = aValue; +} +},["void","double"]), new objj_method(sel_getUid("minValue"), function $CPProgressIndicator__minValue(self, _cmd) +{ with(self) +{ + return _minValue; +} +},["double"]), new objj_method(sel_getUid("setMaxValue:"), function $CPProgressIndicator__setMaxValue_(self, _cmd, aValue) +{ with(self) +{ + _maxValue = aValue; +} +},["void","double"]), new objj_method(sel_getUid("maxValue"), function $CPProgressIndicator__maxValue(self, _cmd) +{ with(self) +{ + return _maxValue; +} +},["double"]), new objj_method(sel_getUid("setControlSize:"), function $CPProgressIndicator__setControlSize_(self, _cmd, aControlSize) +{ with(self) +{ + if (_controlSize == aControlSize) + return; + _controlSize = aControlSize; + objj_msgSend(self, "updateBackgroundColor"); +} +},["void","CPControlSize"]), new objj_method(sel_getUid("controlSize"), function $CPProgressIndicator__controlSize(self, _cmd) +{ with(self) +{ + return _controlSize; +} +},["CPControlSize"]), new objj_method(sel_getUid("setControlTint:"), function $CPProgressIndicator__setControlTint_(self, _cmd, aControlTint) +{ with(self) +{ +} +},["void","CPControlTint"]), new objj_method(sel_getUid("controlTint"), function $CPProgressIndicator__controlTint(self, _cmd) +{ with(self) +{ + return 0; +} +},["CPControlTint"]), new objj_method(sel_getUid("setBezeled:"), function $CPProgressIndicator__setBezeled_(self, _cmd, isBezeled) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("isBezeled"), function $CPProgressIndicator__isBezeled(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("setIndeterminate:"), function $CPProgressIndicator__setIndeterminate_(self, _cmd, isIndeterminate) +{ with(self) +{ + if (_isIndeterminate == isIndeterminate) + return; + _isIndeterminate = isIndeterminate; + objj_msgSend(self, "updateBackgroundColor"); +} +},["void","BOOL"]), new objj_method(sel_getUid("isIndeterminate"), function $CPProgressIndicator__isIndeterminate(self, _cmd) +{ with(self) +{ + return _isIndeterminate; +} +},["BOOL"]), new objj_method(sel_getUid("setStyle:"), function $CPProgressIndicator__setStyle_(self, _cmd, aStyle) +{ with(self) +{ + if (_style == aStyle) + return; + _style = aStyle; + objj_msgSend(self, "updateBackgroundColor"); +} +},["void","CPProgressIndicatorStyle"]), new objj_method(sel_getUid("sizeToFit"), function $CPProgressIndicator__sizeToFit(self, _cmd) +{ with(self) +{ + if (_style == CPProgressIndicatorSpinningStyle) + objj_msgSend(self, "setFrameSize:", objj_msgSend(objj_msgSend(CPProgressIndicatorSpinningStyleColors[_controlSize], "patternImage"), "size")); + else + objj_msgSend(self, "setFrameSize:", CGSizeMake(CGRectGetWidth(objj_msgSend(self, "frame")), CPProgressIndicatorStyleSizes[ + CPProgressIndicatorClassName + "BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle] + + _CPControlIdentifierForControlSize(_controlSize)][0].height)); +} +},["void"]), new objj_method(sel_getUid("setDisplayedWhenStopped:"), function $CPProgressIndicator__setDisplayedWhenStopped_(self, _cmd, isDisplayedWhenStopped) +{ with(self) +{ + if (_isDisplayedWhenStoppedSet && _isDisplayedWhenStopped == isDisplayedWhenStopped) + return; + _isDisplayedWhenStoppedSet = YES; + _isDisplayedWhenStopped = isDisplayedWhenStopped; + objj_msgSend(self, "_hideOrDisplay"); +} +},["void","BOOL"]), new objj_method(sel_getUid("isDisplayedWhenStopped"), function $CPProgressIndicator__isDisplayedWhenStopped(self, _cmd) +{ with(self) +{ + if (_isDisplayedWhenStoppedSet) + return _isDisplayedWhenStopped; + if (_style == CPProgressIndicatorBarStyle || _style == CPProgressIndicatorHUDBarStyle) + return YES; + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("_hideOrDisplay"), function $CPProgressIndicator___hideOrDisplay(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setHidden:", !_isAnimating && !objj_msgSend(self, "isDisplayedWhenStopped")); +} +},["void"]), new objj_method(sel_getUid("setFrameSize:"), function $CPProgressIndicator__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPProgressIndicator").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "drawBar"); +} +},["void","CGSize"]), new objj_method(sel_getUid("drawBar"), function $CPProgressIndicator__drawBar(self, _cmd) +{ with(self) +{ + if (_style == CPProgressIndicatorSpinningStyle) + return; + if (!_barView) + { + _barView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 16.0)); + objj_msgSend(self, "addSubview:", _barView); + } + objj_msgSend(_barView, "setBackgroundColor:", _CPControlThreePartImagePattern( + NO, + CPProgressIndicatorStyleSizes, + CPProgressIndicatorClassName, + "Bar", + CPProgressIndicatorStyleIdentifiers[_style], + _CPControlIdentifierForControlSize(_controlSize))); + var width = CGRectGetWidth(objj_msgSend(self, "bounds")), + barWidth = width * ((_doubleValue - _minValue) / (_maxValue - _minValue)); + if (barWidth > 0.0 && barWidth < 4.0) + barWidth = 4.0; + objj_msgSend(_barView, "setFrameSize:", CGSizeMake(barWidth, 16.0)); +} +},["void"]), new objj_method(sel_getUid("updateBackgroundColor"), function $CPProgressIndicator__updateBackgroundColor(self, _cmd) +{ with(self) +{ + if (YES) + { + if (_style == CPProgressIndicatorSpinningStyle) + { + objj_msgSend(_barView, "removeFromSuperview"); + _barView = nil; + objj_msgSend(self, "setBackgroundColor:", CPProgressIndicatorSpinningStyleColors[_controlSize]); + } + else + { + objj_msgSend(self, "setBackgroundColor:", _CPControlThreePartImagePattern( + NO, + CPProgressIndicatorStyleSizes, + CPProgressIndicatorClassName, + "BezelBorder", + CPProgressIndicatorStyleIdentifiers[_style], + _CPControlIdentifierForControlSize(_controlSize))); + objj_msgSend(self, "drawBar"); + } + } + else + objj_msgSend(self, "setBackgroundColor:", nil); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPProgressIndicator__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPProgressIndicator, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + CPProgressIndicatorSpinningStyleColors = []; + CPProgressIndicatorSpinningStyleColors[CPMiniControlSize] = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", + objj_msgSend(bundle, "pathForResource:", "CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"), CGSizeMake(64.0, 64.0))); + CPProgressIndicatorSpinningStyleColors[CPSmallControlSize] = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", + objj_msgSend(bundle, "pathForResource:", "CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"), CGSizeMake(64.0, 64.0))); + CPProgressIndicatorSpinningStyleColors[CPRegularControlSize] = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", + objj_msgSend(bundle, "pathForResource:", "CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"), CGSizeMake(64.0, 64.0))); + CPProgressIndicatorBezelBorderViewPool = []; + var start = CPProgressIndicatorBarStyle, + end = CPProgressIndicatorHUDBarStyle; + for (; start <= end; ++start) + { + CPProgressIndicatorBezelBorderViewPool[start] = []; + CPProgressIndicatorBezelBorderViewPool[start][CPMiniControlSize] = []; + CPProgressIndicatorBezelBorderViewPool[start][CPSmallControlSize] = []; + CPProgressIndicatorBezelBorderViewPool[start][CPRegularControlSize] = []; + } + CPProgressIndicatorClassName = objj_msgSend(self, "className"); + CPProgressIndicatorStyleIdentifiers = []; + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle] = "Bar"; + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorSpinningStyle] = "Spinny"; + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle] = "HUDBar"; + var regularIdentifier = _CPControlIdentifierForControlSize(CPRegularControlSize), + smallIdentifier = _CPControlIdentifierForControlSize(CPSmallControlSize), + miniIdentifier = _CPControlIdentifierForControlSize(CPMiniControlSize); + CPProgressIndicatorStyleSizes = []; + var prefixes = [ + CPProgressIndicatorClassName + "BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle], + CPProgressIndicatorClassName + "Bar" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle], + CPProgressIndicatorClassName + "BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle], + CPProgressIndicatorClassName + "Bar" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle] + ]; + for (var i = 0, count = prefixes.length; i<count; i++) + { + var prefix = prefixes[i]; + CPProgressIndicatorStyleSizes[prefix + regularIdentifier] = [{ width:3.0, height:16.0 }, { width:1.0, height:16.0 }, { width:3.0, height:16.0 }]; + CPProgressIndicatorStyleSizes[prefix + smallIdentifier] = [{ width:3.0, height:16.0 }, { width:1.0, height:16.0 }, { width:3.0, height:16.0 }]; + CPProgressIndicatorStyleSizes[prefix + miniIdentifier] = [{ width:3.0, height:16.0 }, { width:1.0, height:16.0 }, { width:3.0, height:16.0 }]; + } +} +},["void"])]); +} + +p;9;CPRadio.jt;7889;@STATIC;1.0;I;21;Foundation/CPObject.jI;18;Foundation/CPSet.ji;10;CPButton.jt;7806;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPSet.j", NO); +objj_executeFile("CPButton.j", YES); +CPRadioImageOffset = 4.0; +{var the_class = objj_allocateClassPair(CPButton, "CPRadio"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_radioGroup")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:radioGroup:"), function $CPRadio__initWithFrame_radioGroup_(self, _cmd, aFrame, aRadioGroup) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadio").super_class }, "initWithFrame:", aFrame); + if (self) + { + objj_msgSend(self, "setRadioGroup:", aRadioGroup); + objj_msgSend(self, "setHighlightsBy:", CPContentsCellMask); + objj_msgSend(self, "setShowsStateBy:", CPContentsCellMask); + objj_msgSend(self, "setImagePosition:", CPImageLeft); + objj_msgSend(self, "setAlignment:", CPLeftTextAlignment); + objj_msgSend(self, "setBordered:", YES); + } + return self; +} +},["id","CGRect","CPRadioGroup"]), new objj_method(sel_getUid("initWithFrame:"), function $CPRadio__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(self, "initWithFrame:radioGroup:", aFrame, objj_msgSend(CPRadioGroup, "new")); +} +},["id","CGRect"]), new objj_method(sel_getUid("nextState"), function $CPRadio__nextState(self, _cmd) +{ with(self) +{ + return CPOnState; +} +},["CPInteger"]), new objj_method(sel_getUid("setRadioGroup:"), function $CPRadio__setRadioGroup_(self, _cmd, aRadioGroup) +{ with(self) +{ + if (_radioGroup === aRadioGroup) + return; + objj_msgSend(_radioGroup, "_removeRadio:", self); + _radioGroup = aRadioGroup; + objj_msgSend(_radioGroup, "_addRadio:", self); +} +},["void","CPRadioGroup"]), new objj_method(sel_getUid("radioGroup"), function $CPRadio__radioGroup(self, _cmd) +{ with(self) +{ + return _radioGroup; +} +},["CPRadioGroup"]), new objj_method(sel_getUid("setObjectValue:"), function $CPRadio__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadio").super_class }, "setObjectValue:", aValue); + if (objj_msgSend(self, "state") === CPOnState) + objj_msgSend(_radioGroup, "_setSelectedRadio:", self); +} +},["void","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("radioWithTitle:theme:"), function $CPRadio__radioWithTitle_theme_(self, _cmd, aTitle, aTheme) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:theme:", aTitle, aTheme); +} +},["id","CPString","CPTheme"]), new objj_method(sel_getUid("radioWithTitle:"), function $CPRadio__radioWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(self, "buttonWithTitle:", aTitle); +} +},["id","CPString"]), new objj_method(sel_getUid("standardButtonWithTitle:"), function $CPRadio__standardButtonWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + var button = objj_msgSend(objj_msgSend(CPRadio, "alloc"), "init"); + objj_msgSend(button, "setTitle:", aTitle); + return button; +} +},["CPButton","CPString"]), new objj_method(sel_getUid("themeClass"), function $CPRadio__themeClass(self, _cmd) +{ with(self) +{ + return "radio"; +} +},["CPString"])]); +} +var CPRadioRadioGroupKey = "CPRadioRadioGroupKey"; +{ +var the_class = objj_getClass("CPRadio") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPRadio\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPRadio__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadio").super_class }, "initWithCoder:", aCoder); + if (self) + _radioGroup = objj_msgSend(aCoder, "decodeObjectForKey:", CPRadioRadioGroupKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPRadio__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadio").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _radioGroup, CPRadioRadioGroupKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPRadioGroup"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_radios"), new objj_ivar("_selectedRadio"), new objj_ivar("_target"), new objj_ivar("_action")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("target"), function $CPRadioGroup__target(self, _cmd) +{ with(self) +{ +return _target; +} +},["id"]), +new objj_method(sel_getUid("setTarget:"), function $CPRadioGroup__setTarget_(self, _cmd, newValue) +{ with(self) +{ +_target = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("action"), function $CPRadioGroup__action(self, _cmd) +{ with(self) +{ +return _action; +} +},["id"]), +new objj_method(sel_getUid("setAction:"), function $CPRadioGroup__setAction_(self, _cmd, newValue) +{ with(self) +{ +_action = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPRadioGroup__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadioGroup").super_class }, "init"); + if (self) + { + _radios = objj_msgSend(CPSet, "set"); + _selectedRadio = nil; + } + return self; +} +},["id"]), new objj_method(sel_getUid("_addRadio:"), function $CPRadioGroup___addRadio_(self, _cmd, aRadio) +{ with(self) +{ + objj_msgSend(_radios, "addObject:", aRadio); + if (objj_msgSend(aRadio, "state") === CPOnState) + objj_msgSend(self, "_setSelectedRadio:", aRadio); +} +},["void","CPRadio"]), new objj_method(sel_getUid("_removeRadio:"), function $CPRadioGroup___removeRadio_(self, _cmd, aRadio) +{ with(self) +{ + if (_selectedRadio === aRadio) + _selectedRadio = nil; + objj_msgSend(_radios, "removeObject:", aRadio); +} +},["void","CPRadio"]), new objj_method(sel_getUid("_setSelectedRadio:"), function $CPRadioGroup___setSelectedRadio_(self, _cmd, aRadio) +{ with(self) +{ + if (_selectedRadio === aRadio) + return; + objj_msgSend(_selectedRadio, "setState:", CPOffState); + _selectedRadio = aRadio; + objj_msgSend(CPApp, "sendAction:to:from:", _action, _target, self); +} +},["void","CPRadio"]), new objj_method(sel_getUid("selectedRadio"), function $CPRadioGroup__selectedRadio(self, _cmd) +{ with(self) +{ + return _selectedRadio; +} +},["CPRadio"]), new objj_method(sel_getUid("radios"), function $CPRadioGroup__radios(self, _cmd) +{ with(self) +{ + return objj_msgSend(_radios, "allObjects"); +} +},["CPArray"])]); +} +var CPRadioGroupRadiosKey = "CPRadioGroupRadiosKey", + CPRadioGroupSelectedRadioKey = "CPRadioGroupSelectedRadioKey"; +{ +var the_class = objj_getClass("CPRadioGroup") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPRadioGroup\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPRadioGroup__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRadioGroup").super_class }, "init"); + if (self) + { + _radios = objj_msgSend(aCoder, "decodeObjectForKey:", CPRadioGroupRadiosKey); + _selectedRadio = objj_msgSend(aCoder, "decodeObjectForKey:", CPRadioGroupSelectedRadioKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPRadioGroup__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _radios, CPRadioGroupRadiosKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _selectedRadio, CPRadioGroupSelectedRadioKey); +} +},["void","CPCoder"])]); +} + +p;13;CPResponder.jt;8679;@STATIC;1.0;I;21;Foundation/CPObject.jt;8634;objj_executeFile("Foundation/CPObject.j", NO); +CPDeleteKeyCode = 8; +CPTabKeyCode = 9; +CPReturnKeyCode = 13; +CPEscapeKeyCode = 27; +CPSpaceKeyCode = 32; +CPPageUpKeyCode = 33; +CPPageDownKeyCode = 34; +CPLeftArrowKeyCode = 37; +CPUpArrowKeyCode = 38; +CPRightArrowKeyCode = 39; +CPDownArrowKeyCode = 40; +CPDeleteForwardKeyCode = 46; +{var the_class = objj_allocateClassPair(CPObject, "CPResponder"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menu"), new objj_ivar("_nextResponder")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("acceptsFirstResponder"), function $CPResponder__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("becomeFirstResponder"), function $CPResponder__becomeFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("resignFirstResponder"), function $CPResponder__resignFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("setNextResponder:"), function $CPResponder__setNextResponder_(self, _cmd, aResponder) +{ with(self) +{ + _nextResponder = aResponder; +} +},["void","CPResponder"]), new objj_method(sel_getUid("nextResponder"), function $CPResponder__nextResponder(self, _cmd) +{ with(self) +{ + return _nextResponder; +} +},["CPResponder"]), new objj_method(sel_getUid("interpretKeyEvents:"), function $CPResponder__interpretKeyEvents_(self, _cmd, events) +{ with(self) +{ + var index = 0, + count = objj_msgSend(events, "count"); + for (; index < count; ++index) + { + var event = events[index], + modifierFlags = objj_msgSend(event, "modifierFlags"), + character = objj_msgSend(event, "charactersIgnoringModifiers"), + selectorNames = objj_msgSend(CPKeyBinding, "selectorsForKey:modifierFlags:", character, modifierFlags); + if (selectorNames) + { + for (var s = 0, scount = selectorNames.length; s < scount; s++) + { + var selector = selectorNames[s]; + if (!selector) + continue; + objj_msgSend(self, "doCommandBySelector:", CPSelectorFromString(selector)); + } + } + else if (!(modifierFlags & (CPCommandKeyMask | CPControlKeyMask)) && objj_msgSend(self, "respondsToSelector:", sel_getUid("insertText:"))) + objj_msgSend(self, "insertText:", objj_msgSend(event, "characters")); + } +} +},["void","CPArray"]), new objj_method(sel_getUid("mouseDown:"), function $CPResponder__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("rightMouseDown:"), function $CPResponder__rightMouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $CPResponder__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPResponder__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("rightMouseUp:"), function $CPResponder__rightMouseUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseMoved:"), function $CPResponder__mouseMoved_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseEntered:"), function $CPResponder__mouseEntered_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseExited:"), function $CPResponder__mouseExited_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("scrollWheel:"), function $CPResponder__scrollWheel_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("keyDown:"), function $CPResponder__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("keyUp:"), function $CPResponder__keyUp_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("flagsChanged:"), function $CPResponder__flagsChanged_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(_nextResponder, "performSelector:withObject:", _cmd, anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("performKeyEquivalent:"), function $CPResponder__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + return NO; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("insertLineBreak:"), function $CPResponder__insertLineBreak_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "insertNewline:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("insertNewline:"), function $CPResponder__insertNewline_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "nextResponder"), "insertNewline:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("cancel:"), function $CPResponder__cancel_(self, _cmd, sender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("insertTab:"), function $CPResponder__insertTab_(self, _cmd, sender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("insertBackTab:"), function $CPResponder__insertBackTab_(self, _cmd, sender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("insertText:"), function $CPResponder__insertText_(self, _cmd, aString) +{ with(self) +{ +} +},["void","CPString"]), new objj_method(sel_getUid("doCommandBySelector:"), function $CPResponder__doCommandBySelector_(self, _cmd, aSelector) +{ with(self) +{ + if (objj_msgSend(self, "respondsToSelector:", aSelector)) + objj_msgSend(self, "performSelector:", aSelector); + else + objj_msgSend(_nextResponder, "doCommandBySelector:", aSelector); +} +},["void","SEL"]), new objj_method(sel_getUid("tryToPerform:with:"), function $CPResponder__tryToPerform_with_(self, _cmd, aSelector, anObject) +{ with(self) +{ + if(objj_msgSend(self, "respondsToSelector:", aSelector)) + { + objj_msgSend(self, "performSelector:withObject:", aSelector, anObject); + return YES; + } + return objj_msgSend(_nextResponder, "tryToPerform:with:", aSelector, anObject); +} +},["BOOL","SEL","id"]), new objj_method(sel_getUid("setMenu:"), function $CPResponder__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + _menu = aMenu; +} +},["void","CPMenu"]), new objj_method(sel_getUid("menu"), function $CPResponder__menu(self, _cmd) +{ with(self) +{ + return _menu; +} +},["CPMenu"]), new objj_method(sel_getUid("undoManager"), function $CPResponder__undoManager(self, _cmd) +{ with(self) +{ + return objj_msgSend(_nextResponder, "performSelector:", _cmd); +} +},["CPUndoManager"]), new objj_method(sel_getUid("noResponderFor:"), function $CPResponder__noResponderFor_(self, _cmd, anEventSelector) +{ with(self) +{ +} +},["void","SEL"])]); +} +var CPResponderNextResponderKey = "CPResponderNextResponderKey"; +{ +var the_class = objj_getClass("CPResponder") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPResponder\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPResponder__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPResponder").super_class }, "init"); + if (self) + _nextResponder = objj_msgSend(aCoder, "decodeObjectForKey:", CPResponderNextResponderKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPResponder__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_nextResponder !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _nextResponder, CPResponderNextResponderKey); +} +},["void","CPCoder"])]); +} + +p;13;CPSavePanel.jt;3955;@STATIC;1.0;I;16;AppKit/CPPanel.jt;3915; + + +objj_executeFile("AppKit/CPPanel.j", NO); + + +{var the_class = objj_allocateClassPair(CPPanel, "CPSavePanel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_URL"), new objj_ivar("_isExtensionHidden"), new objj_ivar("_canSelectHiddenExtension"), new objj_ivar("_allowsOtherFileTypes"), new objj_ivar("_canCreateDirectories"), new objj_ivar("_allowedFileTypes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isExtensionHidden"), function $CPSavePanel__isExtensionHidden(self, _cmd) +{ with(self) +{ +return _isExtensionHidden; +} +},["id"]), +new objj_method(sel_getUid("setExtensionHidden:"), function $CPSavePanel__setExtensionHidden_(self, _cmd, newValue) +{ with(self) +{ +_isExtensionHidden = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("canSelectHiddenExtension"), function $CPSavePanel__canSelectHiddenExtension(self, _cmd) +{ with(self) +{ +return _canSelectHiddenExtension; +} +},["id"]), +new objj_method(sel_getUid("setCanSelectHiddenExtension:"), function $CPSavePanel__setCanSelectHiddenExtension_(self, _cmd, newValue) +{ with(self) +{ +_canSelectHiddenExtension = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("allowsOtherFileTypes"), function $CPSavePanel__allowsOtherFileTypes(self, _cmd) +{ with(self) +{ +return _allowsOtherFileTypes; +} +},["id"]), +new objj_method(sel_getUid("setAllowsOtherFileTypes:"), function $CPSavePanel__setAllowsOtherFileTypes_(self, _cmd, newValue) +{ with(self) +{ +_allowsOtherFileTypes = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("canCreateDirectories"), function $CPSavePanel__canCreateDirectories(self, _cmd) +{ with(self) +{ +return _canCreateDirectories; +} +},["id"]), +new objj_method(sel_getUid("setCanCreateDirectories:"), function $CPSavePanel__setCanCreateDirectories_(self, _cmd, newValue) +{ with(self) +{ +_canCreateDirectories = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("allowedFileTypes"), function $CPSavePanel__allowedFileTypes(self, _cmd) +{ with(self) +{ +return _allowedFileTypes; +} +},["id"]), +new objj_method(sel_getUid("setAllowedFileTypes:"), function $CPSavePanel__setAllowedFileTypes_(self, _cmd, newValue) +{ with(self) +{ +_allowedFileTypes = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPSavePanel__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSavePanel").super_class }, "init")) + { + _canCreateDirectories = YES; + } + + return self; +} +},["id"]), new objj_method(sel_getUid("runModal"), function $CPSavePanel__runModal(self, _cmd) +{ with(self) +{ + + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + + if (typeof window["cpSavePanel"] === "function") + { + var resultObject = window.cpSavePanel({ + isExtensionHidden: _isExtensionHidden, + canSelectHiddenExtension: _canSelectHiddenExtension, + allowsOtherFileTypes: _allowsOtherFileTypes, + canCreateDirectories: _canCreateDirectories, + allowedFileTypes: _allowedFileTypes + }), + result = resultObject.button; + + _URL = result ? objj_msgSend(CPURL, "URLWithString:", resultObject.URL) : nil; + } + else + { + + var documentName = window.prompt("Document Name:"), + result = documentName !== null; + + _URL = result ? objj_msgSend(objj_msgSend(self, "class"), "proposedFileURLWithDocumentName:", documentName) : nil; + } + + return result; +} +},["CPInteger"]), new objj_method(sel_getUid("URL"), function $CPSavePanel__URL(self, _cmd) +{ with(self) +{ + return _URL; +} +},["CPURL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("savePanel"), function $CPSavePanel__savePanel(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPSavePanel, "alloc"), "init"); +} +},["id"])]); +} + +p;10;CPScreen.jt;456;@STATIC;1.0;I;21;Foundation/CPObject.jt;412; + + +objj_executeFile("Foundation/CPObject.j", NO); + + + + +{var the_class = objj_allocateClassPair(CPObject, "CPScreen"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("visibleFrame"), function $CPScreen__visibleFrame(self, _cmd) +{ with(self) +{ + + + + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + +} +},["CGRect"])]); +} + +p;12;CPScroller.jt;24471;@STATIC;1.0;i;11;CPControl.jt;24435;objj_executeFile("CPControl.j", YES); +CPScrollerNoPart = 0; +CPScrollerDecrementPage = 1; +CPScrollerKnob = 2; +CPScrollerIncrementPage = 3; +CPScrollerDecrementLine = 4; +CPScrollerIncrementLine = 5; +CPScrollerKnobSlot = 6; +CPScrollerIncrementArrow = 0; +CPScrollerDecrementArrow = 1; +CPNoScrollerParts = 0; +CPOnlyScrollerArrows = 1; +CPAllScrollerParts = 2; +var PARTS_ARRANGEMENT = [CPScrollerKnobSlot, CPScrollerDecrementLine, CPScrollerIncrementLine, CPScrollerKnob], + NAMES_FOR_PARTS = {}, + PARTS_FOR_NAMES = {}; +NAMES_FOR_PARTS[CPScrollerDecrementLine] = "decrement-line"; +NAMES_FOR_PARTS[CPScrollerIncrementLine] = "increment-line"; +NAMES_FOR_PARTS[CPScrollerKnobSlot] = "knob-slot"; +NAMES_FOR_PARTS[CPScrollerKnob] = "knob"; +{var the_class = objj_allocateClassPair(CPControl, "CPScroller"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_controlSize"), new objj_ivar("_usableParts"), new objj_ivar("_partRects"), new objj_ivar("_isVertical"), new objj_ivar("_knobProportion"), new objj_ivar("_hitPart"), new objj_ivar("_trackingPart"), new objj_ivar("_trackingFloatValue"), new objj_ivar("_trackingStartPoint")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isVertical"), function $CPScroller__isVertical(self, _cmd) +{ with(self) +{ +return _isVertical; +} +},["id"]), new objj_method(sel_getUid("initWithFrame:"), function $CPScroller__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "initWithFrame:", aFrame); + if (self) + { + _controlSize = CPRegularControlSize; + _partRects = []; + objj_msgSend(self, "setFloatValue:", 0.0); + objj_msgSend(self, "setKnobProportion:", 1.0); + _hitPart = CPScrollerNoPart; + objj_msgSend(self, "_calculateIsVertical"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setControlSize:"), function $CPScroller__setControlSize_(self, _cmd, aControlSize) +{ with(self) +{ + if (_controlSize == aControlSize) + return; + _controlSize = aControlSize; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPControlSize"]), new objj_method(sel_getUid("controlSize"), function $CPScroller__controlSize(self, _cmd) +{ with(self) +{ + return _controlSize; +} +},["CPControlSize"]), new objj_method(sel_getUid("setObjectValue:"), function $CPScroller__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "setObjectValue:", MIN(1.0, MAX(0.0, +aValue))); +} +},["void","id"]), new objj_method(sel_getUid("setKnobProportion:"), function $CPScroller__setKnobProportion_(self, _cmd, aProportion) +{ with(self) +{ + _knobProportion = MIN(1.0, MAX(0.0001, aProportion)); + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","float"]), new objj_method(sel_getUid("knobProportion"), function $CPScroller__knobProportion(self, _cmd) +{ with(self) +{ + return _knobProportion; +} +},["float"]), new objj_method(sel_getUid("currentValueForThemeAttribute:"), function $CPScroller__currentValueForThemeAttribute_(self, _cmd, anAttributeName) +{ with(self) +{ + var themeState = _themeState; + if (NAMES_FOR_PARTS[_hitPart] + "-color" !== anAttributeName) + themeState &= ~CPThemeStateHighlighted; + return objj_msgSend(self, "valueForThemeAttribute:inState:", anAttributeName, themeState); +} +},["id","CPString"]), new objj_method(sel_getUid("rectForPart:"), function $CPScroller__rectForPart_(self, _cmd, aPart) +{ with(self) +{ + if (aPart == CPScrollerNoPart) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + return _partRects[aPart]; +} +},["CGRect","CPScrollerPart"]), new objj_method(sel_getUid("testPart:"), function $CPScroller__testPart_(self, _cmd, aPoint) +{ with(self) +{ + aPoint = objj_msgSend(self, "convertPoint:fromView:", aPoint, nil); + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerKnob), aPoint)) + return CPScrollerKnob; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerDecrementPage), aPoint)) + return CPScrollerDecrementPage; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerIncrementPage), aPoint)) + return CPScrollerIncrementPage; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerDecrementLine), aPoint)) + return CPScrollerDecrementLine; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerIncrementLine), aPoint)) + return CPScrollerIncrementLine; + if (CGRectContainsPoint(objj_msgSend(self, "rectForPart:", CPScrollerKnobSlot), aPoint)) + return CPScrollerKnobSlot; + return CPScrollerNoPart; +} +},["CPScrollerPart","CGPoint"]), new objj_method(sel_getUid("checkSpaceForParts"), function $CPScroller__checkSpaceForParts(self, _cmd) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + if (_knobProportion === 1.0) + { + _usableParts = CPNoScrollerParts; + _partRects[CPScrollerDecrementPage] = CGRectMakeZero(); + _partRects[CPScrollerKnob] = CGRectMakeZero(); + _partRects[CPScrollerIncrementPage] = CGRectMakeZero(); + _partRects[CPScrollerDecrementLine] = CGRectMakeZero(); + _partRects[CPScrollerIncrementLine] = CGRectMakeZero(); + _partRects[CPScrollerKnobSlot] = CGRectMakeCopy(bounds); + return; + } + _usableParts = CPAllScrollerParts; + var knobInset = objj_msgSend(self, "currentValueForThemeAttribute:", "knob-inset"), + trackInset = objj_msgSend(self, "currentValueForThemeAttribute:", "track-inset"), + width = (bounds.size.width), + height = (bounds.size.height); + if (objj_msgSend(self, "isVertical")) + { + var decrementLineSize = objj_msgSend(self, "currentValueForThemeAttribute:", "decrement-line-size"), + incrementLineSize = objj_msgSend(self, "currentValueForThemeAttribute:", "increment-line-size"), + effectiveDecrementLineHeight = decrementLineSize.height + trackInset.top, + effectiveIncrementLineHeight = incrementLineSize.height + trackInset.bottom, + slotHeight = height - effectiveDecrementLineHeight - effectiveIncrementLineHeight, + minimumKnobLength = objj_msgSend(self, "currentValueForThemeAttribute:", "minimum-knob-length"), + knobWidth = width - knobInset.left - knobInset.right, + knobHeight = MAX(minimumKnobLength, (slotHeight * _knobProportion)), + knobLocation = effectiveDecrementLineHeight + (slotHeight - knobHeight) * objj_msgSend(self, "floatValue"); + _partRects[CPScrollerDecrementPage] = { origin: { x:0.0, y:effectiveDecrementLineHeight }, size: { width:width, height:knobLocation - effectiveDecrementLineHeight } }; + _partRects[CPScrollerKnob] = { origin: { x:knobInset.left, y:knobLocation }, size: { width:knobWidth, height:knobHeight } }; + _partRects[CPScrollerIncrementPage] = { origin: { x:0.0, y:knobLocation + knobHeight }, size: { width:width, height:height - (knobLocation + knobHeight) - effectiveIncrementLineHeight } }; + _partRects[CPScrollerKnobSlot] = { origin: { x:trackInset.left, y:effectiveDecrementLineHeight }, size: { width:width - trackInset.left - trackInset.right, height:slotHeight } }; + _partRects[CPScrollerDecrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:decrementLineSize.width, height:decrementLineSize.height } }; + _partRects[CPScrollerIncrementLine] = { origin: { x:0.0, y:height - incrementLineSize.height }, size: { width:incrementLineSize.width, height:incrementLineSize.height } }; + if(height < knobHeight + decrementLineSize.height + incrementLineSize.height + trackInset.top + trackInset.bottom) + _partRects[CPScrollerKnob] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if(height < decrementLineSize.height + incrementLineSize.height - 2) + { + _partRects[CPScrollerIncrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _partRects[CPScrollerDecrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _partRects[CPScrollerKnobSlot] = { origin: { x:trackInset.left, y:0 }, size: { width:width - trackInset.left - trackInset.right, height:height } }; + } + } + else + { + var decrementLineSize = objj_msgSend(self, "currentValueForThemeAttribute:", "decrement-line-size"), + incrementLineSize = objj_msgSend(self, "currentValueForThemeAttribute:", "increment-line-size"), + effectiveDecrementLineWidth = decrementLineSize.width + trackInset.left, + effectiveIncrementLineWidth = incrementLineSize.width + trackInset.right; + slotWidth = width - effectiveDecrementLineWidth - effectiveIncrementLineWidth, + minimumKnobLength = objj_msgSend(self, "currentValueForThemeAttribute:", "minimum-knob-length"), + knobWidth = MAX(minimumKnobLength, (slotWidth * _knobProportion)), + knobHeight = height - knobInset.top - knobInset.bottom, + knobLocation = effectiveDecrementLineWidth + (slotWidth - knobWidth) * objj_msgSend(self, "floatValue"); + _partRects[CPScrollerDecrementPage] = { origin: { x:effectiveDecrementLineWidth, y:0.0 }, size: { width:knobLocation - effectiveDecrementLineWidth, height:height } }; + _partRects[CPScrollerKnob] = { origin: { x:knobLocation, y:knobInset.top }, size: { width:knobWidth, height:knobHeight } }; + _partRects[CPScrollerIncrementPage] = { origin: { x:knobLocation + knobWidth, y:0.0 }, size: { width:width - (knobLocation + knobWidth) - effectiveIncrementLineWidth, height:height } }; + _partRects[CPScrollerKnobSlot] = { origin: { x:effectiveDecrementLineWidth, y:trackInset.top }, size: { width:slotWidth, height:height - trackInset.top - trackInset.bottom } }; + _partRects[CPScrollerDecrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:decrementLineSize.width, height:decrementLineSize.height } }; + _partRects[CPScrollerIncrementLine] = { origin: { x:width - incrementLineSize.width, y:0.0 }, size: { width:incrementLineSize.width, height:incrementLineSize.height } }; + if(width < knobWidth + decrementLineSize.width + incrementLineSize.width + trackInset.left + trackInset.right) + _partRects[CPScrollerKnob] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if(width < decrementLineSize.width + incrementLineSize.width - 2) + { + _partRects[CPScrollerIncrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _partRects[CPScrollerDecrementLine] = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _partRects[CPScrollerKnobSlot] = { origin: { x:0.0, y:0.0 }, size: { width:width, height:slotHeight } }; + } + } +} +},["void"]), new objj_method(sel_getUid("usableParts"), function $CPScroller__usableParts(self, _cmd) +{ with(self) +{ + return _usableParts; +} +},["CPUsableScrollerParts"]), new objj_method(sel_getUid("drawArrow:highlight:"), function $CPScroller__drawArrow_highlight_(self, _cmd, anArrow, shouldHighlight) +{ with(self) +{ +} +},["void","CPScrollerArrow","BOOL"]), new objj_method(sel_getUid("drawKnob"), function $CPScroller__drawKnob(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("drawKnobSlot"), function $CPScroller__drawKnobSlot(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("createViewForPart:"), function $CPScroller__createViewForPart_(self, _cmd, aPart) +{ with(self) +{ + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; +} +},["CPView","CPScrollerPart"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPScroller__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + return _partRects[aName]; +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPScroller__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPScroller__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "checkSpaceForParts"); + var index = 0, + count = PARTS_ARRANGEMENT.length; + for (; index < count; ++index) + { + var part = PARTS_ARRANGEMENT[index]; + if (index === 0) + view = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", part, CPWindowBelow, PARTS_ARRANGEMENT[index + 1]); + else + view = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", part, CPWindowAbove, PARTS_ARRANGEMENT[index - 1]); + if (view) + objj_msgSend(view, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", NAMES_FOR_PARTS[part] + "-color")); + } +} +},["void"]), new objj_method(sel_getUid("drawParts"), function $CPScroller__drawParts(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "drawKnobSlot"); + objj_msgSend(self, "drawKnob"); + objj_msgSend(self, "drawArrow:highlight:", CPScrollerDecrementArrow, NO); + objj_msgSend(self, "drawArrow:highlight:", CPScrollerIncrementArrow, NO); +} +},["void"]), new objj_method(sel_getUid("hitPart"), function $CPScroller__hitPart(self, _cmd) +{ with(self) +{ + return _hitPart; +} +},["CPScrollerPart"]), new objj_method(sel_getUid("trackKnob:"), function $CPScroller__trackKnob_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + if (type === CPLeftMouseUp) + { + _hitPart = CPScrollerNoPart; + return; + } + if (type === CPLeftMouseDown) + { + _trackingFloatValue = objj_msgSend(self, "floatValue"); + _trackingStartPoint = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + } + else if (type === CPLeftMouseDragged) + { + var knobRect = objj_msgSend(self, "rectForPart:", CPScrollerKnob), + knobSlotRect = objj_msgSend(self, "rectForPart:", CPScrollerKnobSlot), + remainder = !objj_msgSend(self, "isVertical") ? ((knobSlotRect.size.width) - (knobRect.size.width)) : ((knobSlotRect.size.height) - (knobRect.size.height)); + if (remainder <= 0) + objj_msgSend(self, "setFloatValue:", 0.0); + else + { + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + delta = !objj_msgSend(self, "isVertical") ? location.x - _trackingStartPoint.x : location.y - _trackingStartPoint.y; + objj_msgSend(self, "setFloatValue:", _trackingFloatValue + delta / remainder); + } + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackKnob:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackScrollButtons:"), function $CPScroller__trackScrollButtons_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + if (type === CPLeftMouseUp) + { + objj_msgSend(self, "highlight:", NO); + objj_msgSend(CPEvent, "stopPeriodicEvents"); + _hitPart = CPScrollerNoPart; + return; + } + if (type === CPLeftMouseDown) + { + _trackingPart = objj_msgSend(self, "hitPart"); + _trackingStartPoint = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if (objj_msgSend(anEvent, "modifierFlags") & CPAlternateKeyMask) + { + if (_trackingPart == CPScrollerDecrementLine) + _hitPart = CPScrollerDecrementPage; + else if (_trackingPart == CPScrollerIncrementLine) + _hitPart = CPScrollerIncrementPage; + else if (_trackingPart == CPScrollerDecrementPage || _trackingPart == CPScrollerIncrementPage) + { + var knobRect = objj_msgSend(self, "rectForPart:", CPScrollerKnob), + knobWidth = !objj_msgSend(self, "isVertical") ? (knobRect.size.width) : (knobRect.size.height), + knobSlotRect = objj_msgSend(self, "rectForPart:", CPScrollerKnobSlot), + remainder = (!objj_msgSend(self, "isVertical") ? (knobSlotRect.size.width) : (knobSlotRect.size.height)) - knobWidth; + objj_msgSend(self, "setFloatValue:", ((!objj_msgSend(self, "isVertical") ? _trackingStartPoint.x - (knobSlotRect.origin.x) : _trackingStartPoint.y - (knobSlotRect.origin.y)) - knobWidth / 2.0) / remainder); + _hitPart = CPScrollerKnob; + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + return objj_msgSend(self, "trackKnob:", anEvent); + } + } + objj_msgSend(self, "highlight:", YES); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + objj_msgSend(CPEvent, "startPeriodicEventsAfterDelay:withPeriod:", 0.5, 0.04); + } + else if (type === CPLeftMouseDragged) + { + _trackingStartPoint = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if (_trackingPart == CPScrollerDecrementPage || _trackingPart == CPScrollerIncrementPage) + { + var hitPart = objj_msgSend(self, "testPart:", objj_msgSend(anEvent, "locationInWindow")); + if (hitPart == CPScrollerDecrementPage || hitPart == CPScrollerIncrementPage) + { + _trackingPart = hitPart; + _hitPart = hitPart; + } + } + objj_msgSend(self, "highlight:", CGRectContainsPoint(objj_msgSend(self, "rectForPart:", _trackingPart), _trackingStartPoint)); + } + else if (type == CPPeriodic && CGRectContainsPoint(objj_msgSend(self, "rectForPart:", _trackingPart), _trackingStartPoint)) + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackScrollButtons:"), CPPeriodicMask | CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_calculateIsVertical"), function $CPScroller___calculateIsVertical(self, _cmd) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + width = (bounds.size.width), + height = (bounds.size.height); + _isVertical = width < height ? 1 : (width > height ? 0 : -1); + if (_isVertical === 1) + objj_msgSend(self, "setThemeState:", CPThemeStateVertical); + else if (_isVertical === 0) + objj_msgSend(self, "unsetThemeState:", CPThemeStateVertical); +} +},["void"]), new objj_method(sel_getUid("setFrameSize:"), function $CPScroller__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "checkSpaceForParts"); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CGSize"]), new objj_method(sel_getUid("mouseDown:"), function $CPScroller__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + _hitPart = objj_msgSend(self, "testPart:", objj_msgSend(anEvent, "locationInWindow")); + switch (_hitPart) + { + case CPScrollerKnob: return objj_msgSend(self, "trackKnob:", anEvent); + case CPScrollerDecrementLine: + case CPScrollerIncrementLine: + case CPScrollerDecrementPage: + case CPScrollerIncrementPage: return objj_msgSend(self, "trackScrollButtons:", anEvent); + } +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPScroller__themeClass(self, _cmd) +{ with(self) +{ + return "scroller"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPScroller__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithJSObject:", { + "scroller-width": 15.0, + "knob-slot-color": objj_msgSend(CPColor, "lightGrayColor"), + "decrement-line-color": objj_msgSend(CPNull, "null"), + "increment-line-color": objj_msgSend(CPNull, "null"), + "knob-color": objj_msgSend(CPColor, "grayColor"), + "decrement-line-size":{ width:0.0, height:0.0 }, + "increment-line-size":{ width:0.0, height:0.0 }, + "track-inset":{ top:(0), right:(0), bottom:(0), left:(0) }, + "knob-inset": { top:(0), right:(0), bottom:(0), left:(0) }, + "minimum-knob-length":21.0 + }) +} +},["id"]), new objj_method(sel_getUid("scrollerWidth"), function $CPScroller__scrollerWidth(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(CPScroller, "alloc"), "init"), "currentValueForThemeAttribute:", "scroller-width"); +} +},["float"]), new objj_method(sel_getUid("scrollerWidthForControlSize:"), function $CPScroller__scrollerWidthForControlSize_(self, _cmd, aControlSize) +{ with(self) +{ + return objj_msgSend(self, "scrollerWidth"); +} +},["float","CPControlSize"])]); +} +var CPScrollerControlSizeKey = "CPScrollerControlSize", + CPScrollerKnobProportionKey = "CPScrollerKnobProportion"; +{ +var the_class = objj_getClass("CPScroller") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPScroller__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "initWithCoder:", aCoder)) + { + _controlSize = CPRegularControlSize; + if (objj_msgSend(aCoder, "containsValueForKey:", CPScrollerControlSizeKey)) + _controlSize = objj_msgSend(aCoder, "decodeIntForKey:", CPScrollerControlSizeKey); + _knobProportion = 1.0; + if (objj_msgSend(aCoder, "containsValueForKey:", CPScrollerKnobProportionKey)) + _knobProportion = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollerKnobProportionKey); + _partRects = []; + _hitPart = CPScrollerNoPart; + objj_msgSend(self, "_calculateIsVertical"); + var frame = objj_msgSend(self, "frame"), + scrollerWidth = objj_msgSend(CPScroller, "scrollerWidth"); + if (objj_msgSend(self, "isVertical") && CGRectGetWidth(frame) !== scrollerWidth) + frame.size.width = scrollerWidth; + if (!objj_msgSend(self, "isVertical") && CGRectGetHeight(frame) !== scrollerWidth) + frame.size.height = scrollerWidth; + objj_msgSend(self, "setFrame:", frame); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPScroller__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScroller").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeInt:forKey:", _controlSize, CPScrollerControlSizeKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _knobProportion, CPScrollerKnobProportionKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPScroller") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPScroller\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setFloatValue:knobProportion:"), function $CPScroller__setFloatValue_knobProportion_(self, _cmd, aValue, aProportion) +{ with(self) +{ + objj_msgSend(self, "setFloatValue:", aValue); + objj_msgSend(self, "setKnobProportion:", aProportion); +} +},["void","float","float"])]); +} + +p;14;CPScrollView.jt;39646;@STATIC;1.0;i;8;CPView.ji;12;CPClipView.ji;12;CPScroller.jt;39580;objj_executeFile("CPView.j", YES); +objj_executeFile("CPClipView.j", YES); +objj_executeFile("CPScroller.j", YES); +{var the_class = objj_allocateClassPair(CPView, "CPScrollView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_contentView"), new objj_ivar("_headerClipView"), new objj_ivar("_cornerView"), new objj_ivar("_bottomCornerView"), new objj_ivar("_hasVerticalScroller"), new objj_ivar("_hasHorizontalScroller"), new objj_ivar("_autohidesScrollers"), new objj_ivar("_verticalScroller"), new objj_ivar("_horizontalScroller"), new objj_ivar("_recursionCount"), new objj_ivar("_verticalLineScroll"), new objj_ivar("_verticalPageScroll"), new objj_ivar("_horizontalLineScroll"), new objj_ivar("_horizontalPageScroll"), new objj_ivar("_borderType")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPScrollView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScrollView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _verticalLineScroll = 10.0; + _verticalPageScroll = 10.0; + _horizontalLineScroll = 10.0; + _horizontalPageScroll = 10.0; + _borderType = CPNoBorder; + _contentView = objj_msgSend(objj_msgSend(CPClipView, "alloc"), "initWithFrame:", objj_msgSend(self, "_insetBounds")); + objj_msgSend(self, "addSubview:", _contentView); + _headerClipView = objj_msgSend(objj_msgSend(CPClipView, "alloc"), "init"); + objj_msgSend(self, "addSubview:", _headerClipView); + _bottomCornerView = objj_msgSend(objj_msgSend(CPView, "alloc"), "init"); + objj_msgSend(self, "addSubview:", _bottomCornerView); + objj_msgSend(self, "setHasVerticalScroller:", YES); + objj_msgSend(self, "setHasHorizontalScroller:", YES); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("_insetBounds"), function $CPScrollView___insetBounds(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "_insetBounds:borderType:", objj_msgSend(self, "bounds"), _borderType); +} +},["CGRect"]), new objj_method(sel_getUid("contentSize"), function $CPScrollView__contentSize(self, _cmd) +{ with(self) +{ + return objj_msgSend(_contentView, "frame").size; +} +},["CGRect"]), new objj_method(sel_getUid("documentView"), function $CPScrollView__documentView(self, _cmd) +{ with(self) +{ + return objj_msgSend(_contentView, "documentView"); +} +},["id"]), new objj_method(sel_getUid("setContentView:"), function $CPScrollView__setContentView_(self, _cmd, aContentView) +{ with(self) +{ + if (_contentView !== aContentView || !aContentView) + return; + var documentView = objj_msgSend(aContentView, "documentView"); + if (documentView) + objj_msgSend(documentView, "removeFromSuperview"); + objj_msgSend(_contentView, "removeFromSuperview"); + _contentView = aContentView; + objj_msgSend(_contentView, "setDocumentView:", documentView); + objj_msgSend(self, "addSubview:", _contentView); + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CPClipView"]), new objj_method(sel_getUid("contentView"), function $CPScrollView__contentView(self, _cmd) +{ with(self) +{ + return _contentView; +} +},["CPClipView"]), new objj_method(sel_getUid("setDocumentView:"), function $CPScrollView__setDocumentView_(self, _cmd, aView) +{ with(self) +{ + objj_msgSend(_contentView, "setDocumentView:", aView); + objj_msgSend(self, "_updateCornerAndHeaderView"); + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CPView"]), new objj_method(sel_getUid("reflectScrolledClipView:"), function $CPScrollView__reflectScrolledClipView_(self, _cmd, aClipView) +{ with(self) +{ + if(_contentView !== aClipView) + return; + if (_recursionCount > 5) + return; + ++_recursionCount; + var documentView = objj_msgSend(self, "documentView"); + if (!documentView) + { + if (_autohidesScrollers) + { + objj_msgSend(_verticalScroller, "setHidden:", YES); + objj_msgSend(_horizontalScroller, "setHidden:", YES); + } + else + { + } + objj_msgSend(_contentView, "setFrame:", objj_msgSend(self, "_insetBounds")); + objj_msgSend(_headerClipView, "setFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + --_recursionCount; + return; + } + var documentFrame = objj_msgSend(documentView, "frame"), + contentFrame = objj_msgSend(self, "_insetBounds"), + headerClipViewFrame = objj_msgSend(self, "_headerClipViewFrame"), + headerClipViewHeight = (headerClipViewFrame.size.height); + contentFrame.origin.y += headerClipViewHeight; + contentFrame.size.height -= headerClipViewHeight; + var difference = { width:(documentFrame.size.width) - (contentFrame.size.width), height:(documentFrame.size.height) - (contentFrame.size.height) }, + verticalScrollerWidth = (objj_msgSend(_verticalScroller, "frame").size.width), + horizontalScrollerHeight = (objj_msgSend(_horizontalScroller, "frame").size.height), + hasVerticalScroll = difference.height > 0.0, + hasHorizontalScroll = difference.width > 0.0, + shouldShowVerticalScroller = _hasVerticalScroller && (!_autohidesScrollers || hasVerticalScroll), + shouldShowHorizontalScroller = _hasHorizontalScroller && (!_autohidesScrollers || hasHorizontalScroll); + if (shouldShowVerticalScroller) + { + difference.width += verticalScrollerWidth; + hasHorizontalScroll = difference.width > 0.0; + shouldShowHorizontalScroller = _hasHorizontalScroller && (!_autohidesScrollers || hasHorizontalScroll); + } + if (shouldShowHorizontalScroller) + { + difference.height += horizontalScrollerHeight; + hasVerticalScroll = difference.height > 0.0; + shouldShowVerticalScroller = _hasVerticalScroller && (!_autohidesScrollers || hasVerticalScroll); + } + objj_msgSend(_verticalScroller, "setHidden:", !shouldShowVerticalScroller); + objj_msgSend(_verticalScroller, "setEnabled:", hasVerticalScroll); + objj_msgSend(_horizontalScroller, "setHidden:", !shouldShowHorizontalScroller); + objj_msgSend(_horizontalScroller, "setEnabled:", hasHorizontalScroll); + if (shouldShowVerticalScroller) + contentFrame.size.width -= verticalScrollerWidth; + if (shouldShowHorizontalScroller) + contentFrame.size.height -= horizontalScrollerHeight; + var scrollPoint = objj_msgSend(_contentView, "bounds").origin, + wasShowingVerticalScroller = !objj_msgSend(_verticalScroller, "isHidden"), + wasShowingHorizontalScroller = !objj_msgSend(_horizontalScroller, "isHidden"); + if (shouldShowVerticalScroller) + { + var verticalScrollerY = + MAX((contentFrame.origin.y), MAX((objj_msgSend(self, "_cornerViewFrame").origin.y + objj_msgSend(self, "_cornerViewFrame").size.height), (headerClipViewFrame.origin.y + headerClipViewFrame.size.height))); + var verticalScrollerHeight = (contentFrame.origin.y + contentFrame.size.height) - verticalScrollerY; + objj_msgSend(_verticalScroller, "setFloatValue:", (difference.height <= 0.0) ? 0.0 : scrollPoint.y / difference.height); + objj_msgSend(_verticalScroller, "setKnobProportion:", (contentFrame.size.height) / (documentFrame.size.height)); + objj_msgSend(_verticalScroller, "setFrame:", { origin: { x:(contentFrame.origin.x + contentFrame.size.width), y:verticalScrollerY }, size: { width:verticalScrollerWidth, height:verticalScrollerHeight } }); + } + else if (wasShowingVerticalScroller) + { + objj_msgSend(_verticalScroller, "setFloatValue:", 0.0); + objj_msgSend(_verticalScroller, "setKnobProportion:", 1.0); + } + if (shouldShowHorizontalScroller) + { + objj_msgSend(_horizontalScroller, "setFloatValue:", (difference.width <= 0.0) ? 0.0 : scrollPoint.x / difference.width); + objj_msgSend(_horizontalScroller, "setKnobProportion:", (contentFrame.size.width) / (documentFrame.size.width)); + objj_msgSend(_horizontalScroller, "setFrame:", { origin: { x:(contentFrame.origin.x), y:(contentFrame.origin.y + contentFrame.size.height) }, size: { width:(contentFrame.size.width), height:horizontalScrollerHeight } }); + } + else if (wasShowingHorizontalScroller) + { + objj_msgSend(_horizontalScroller, "setFloatValue:", 0.0); + objj_msgSend(_horizontalScroller, "setKnobProportion:", 1.0); + } + objj_msgSend(_contentView, "setFrame:", contentFrame); + objj_msgSend(_headerClipView, "setFrame:", headerClipViewFrame); + objj_msgSend(_cornerView, "setFrame:", objj_msgSend(self, "_cornerViewFrame")); + objj_msgSend(objj_msgSend(self, "bottomCornerView"), "setFrame:", objj_msgSend(self, "_bottomCornerViewFrame")); + objj_msgSend(objj_msgSend(self, "bottomCornerView"), "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "bottom-corner-color")); + --_recursionCount; +} +},["void","CPClipView"]), new objj_method(sel_getUid("setBorderType:"), function $CPScrollView__setBorderType_(self, _cmd, borderType) +{ with(self) +{ + if (_borderType == borderType) + return; + _borderType = borderType; + objj_msgSend(self, "reflectScrolledClipView:", _contentView); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPBorderType"]), new objj_method(sel_getUid("borderType"), function $CPScrollView__borderType(self, _cmd) +{ with(self) +{ + return _borderType; +} +},["CPBorderType"]), new objj_method(sel_getUid("setHorizontalScroller:"), function $CPScrollView__setHorizontalScroller_(self, _cmd, aScroller) +{ with(self) +{ + if (_horizontalScroller === aScroller) + return; + objj_msgSend(_horizontalScroller, "removeFromSuperview"); + objj_msgSend(_horizontalScroller, "setTarget:", nil); + objj_msgSend(_horizontalScroller, "setAction:", nil); + _horizontalScroller = aScroller; + objj_msgSend(_horizontalScroller, "setTarget:", self); + objj_msgSend(_horizontalScroller, "setAction:", sel_getUid("_horizontalScrollerDidScroll:")); + objj_msgSend(self, "addSubview:", _horizontalScroller); + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CPScroller"]), new objj_method(sel_getUid("horizontalScroller"), function $CPScrollView__horizontalScroller(self, _cmd) +{ with(self) +{ + return _horizontalScroller; +} +},["CPScroller"]), new objj_method(sel_getUid("setHasHorizontalScroller:"), function $CPScrollView__setHasHorizontalScroller_(self, _cmd, shouldHaveHorizontalScroller) +{ with(self) +{ + if (_hasHorizontalScroller === shouldHaveHorizontalScroller) + return; + _hasHorizontalScroller = shouldHaveHorizontalScroller; + if (_hasHorizontalScroller && !_horizontalScroller) + { + var bounds = objj_msgSend(self, "_insetBounds"); + objj_msgSend(self, "setHorizontalScroller:", objj_msgSend(objj_msgSend(CPScroller, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, MAX((bounds.size.width), objj_msgSend(CPScroller, "scrollerWidth") + 1), objj_msgSend(CPScroller, "scrollerWidth")))); + objj_msgSend(objj_msgSend(self, "horizontalScroller"), "setFrameSize:", CGSizeMake((bounds.size.width), objj_msgSend(CPScroller, "scrollerWidth"))); + } + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","BOOL"]), new objj_method(sel_getUid("hasHorizontalScroller"), function $CPScrollView__hasHorizontalScroller(self, _cmd) +{ with(self) +{ + return _hasHorizontalScroller; +} +},["BOOL"]), new objj_method(sel_getUid("setVerticalScroller:"), function $CPScrollView__setVerticalScroller_(self, _cmd, aScroller) +{ with(self) +{ + if (_verticalScroller === aScroller) + return; + objj_msgSend(_verticalScroller, "removeFromSuperview"); + objj_msgSend(_verticalScroller, "setTarget:", nil); + objj_msgSend(_verticalScroller, "setAction:", nil); + _verticalScroller = aScroller; + objj_msgSend(_verticalScroller, "setTarget:", self); + objj_msgSend(_verticalScroller, "setAction:", sel_getUid("_verticalScrollerDidScroll:")); + objj_msgSend(self, "addSubview:", _verticalScroller); + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CPScroller"]), new objj_method(sel_getUid("verticalScroller"), function $CPScrollView__verticalScroller(self, _cmd) +{ with(self) +{ + return _verticalScroller; +} +},["CPScroller"]), new objj_method(sel_getUid("setHasVerticalScroller:"), function $CPScrollView__setHasVerticalScroller_(self, _cmd, shouldHaveVerticalScroller) +{ with(self) +{ + if (_hasVerticalScroller === shouldHaveVerticalScroller) + return; + _hasVerticalScroller = shouldHaveVerticalScroller; + if (_hasVerticalScroller && !_verticalScroller) + { + var bounds = objj_msgSend(self, "_insetBounds"); + objj_msgSend(self, "setVerticalScroller:", objj_msgSend(objj_msgSend(CPScroller, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:objj_msgSend(CPScroller, "scrollerWidth"), height:MAX((bounds.size.height), objj_msgSend(CPScroller, "scrollerWidth") + 1) } })); + objj_msgSend(objj_msgSend(self, "verticalScroller"), "setFrameSize:", CGSizeMake(objj_msgSend(CPScroller, "scrollerWidth"), (bounds.size.height))); + } + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","BOOL"]), new objj_method(sel_getUid("hasVerticalScroller"), function $CPScrollView__hasVerticalScroller(self, _cmd) +{ with(self) +{ + return _hasVerticalScroller; +} +},["BOOL"]), new objj_method(sel_getUid("setAutohidesScrollers:"), function $CPScrollView__setAutohidesScrollers_(self, _cmd, autohidesScrollers) +{ with(self) +{ + if (_autohidesScrollers == autohidesScrollers) + return; + _autohidesScrollers = autohidesScrollers; + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","BOOL"]), new objj_method(sel_getUid("autohidesScrollers"), function $CPScrollView__autohidesScrollers(self, _cmd) +{ with(self) +{ + return _autohidesScrollers; +} +},["BOOL"]), new objj_method(sel_getUid("_updateCornerAndHeaderView"), function $CPScrollView___updateCornerAndHeaderView(self, _cmd) +{ with(self) +{ + var documentView = objj_msgSend(self, "documentView"), + currentHeaderView = objj_msgSend(self, "_headerView"), + documentHeaderView = objj_msgSend(documentView, "respondsToSelector:", sel_getUid("headerView")) ? objj_msgSend(documentView, "headerView") : nil; + if (currentHeaderView !== documentHeaderView) + { + objj_msgSend(currentHeaderView, "removeFromSuperview"); + objj_msgSend(_headerClipView, "setDocumentView:", documentHeaderView); + } + var documentCornerView = objj_msgSend(documentView, "respondsToSelector:", sel_getUid("cornerView")) ? objj_msgSend(documentView, "cornerView") : nil; + if (_cornerView !== documentCornerView) + { + objj_msgSend(_cornerView, "removeFromSuperview"); + _cornerView = documentCornerView; + if (_cornerView) + objj_msgSend(self, "addSubview:", _cornerView); + } + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void"]), new objj_method(sel_getUid("_headerView"), function $CPScrollView___headerView(self, _cmd) +{ with(self) +{ + return objj_msgSend(_headerClipView, "documentView"); +} +},["CPView"]), new objj_method(sel_getUid("_cornerViewFrame"), function $CPScrollView___cornerViewFrame(self, _cmd) +{ with(self) +{ + if (!_cornerView) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var bounds = objj_msgSend(self, "_insetBounds"), + frame = objj_msgSend(_cornerView, "frame"); + frame.origin.x = (bounds.origin.x + bounds.size.width) - (frame.size.width); + frame.origin.y = (bounds.origin.y); + return frame; +} +},["CGRect"]), new objj_method(sel_getUid("_headerClipViewFrame"), function $CPScrollView___headerClipViewFrame(self, _cmd) +{ with(self) +{ + var headerView = objj_msgSend(self, "_headerView"); + if (!headerView) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var frame = objj_msgSend(self, "_insetBounds"); + frame.size.height = (objj_msgSend(headerView, "frame").size.height); + frame.size.width -= (objj_msgSend(self, "_cornerViewFrame").size.width); + return frame; +} +},["CGRect"]), new objj_method(sel_getUid("_bottomCornerViewFrame"), function $CPScrollView___bottomCornerViewFrame(self, _cmd) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "horizontalScroller"), "isHidden") || objj_msgSend(objj_msgSend(self, "verticalScroller"), "isHidden")) + return CGRectMakeZero(); + var verticalFrame = objj_msgSend(objj_msgSend(self, "verticalScroller"), "frame"), + bottomCornerFrame = CGRectMakeZero(); + bottomCornerFrame.origin.x = CGRectGetMinX(verticalFrame); + bottomCornerFrame.origin.y = CGRectGetMaxY(verticalFrame); + bottomCornerFrame.size.width = objj_msgSend(CPScroller, "scrollerWidth"); + bottomCornerFrame.size.height = objj_msgSend(CPScroller, "scrollerWidth"); + return bottomCornerFrame; +} +},["CGRect"]), new objj_method(sel_getUid("setBottomCornerView:"), function $CPScrollView__setBottomCornerView_(self, _cmd, aBottomCornerView) +{ with(self) +{ + if (_bottomCornerView === aBottomCornerView) + return; + objj_msgSend(_bottomCornerView, "removeFromSuperview"); + objj_msgSend(aBottomCornerView, "setFrame:", objj_msgSend(self, "_bottomCornerViewFrame")); + objj_msgSend(self, "addSubview:", aBottomCornerView); + _bottomCornerView = aBottomCornerView; + objj_msgSend(self, "_updateCornerAndHeaderView"); +} +},["void","CPView"]), new objj_method(sel_getUid("bottomCornerView"), function $CPScrollView__bottomCornerView(self, _cmd) +{ with(self) +{ + return _bottomCornerView; +} +},["CPView"]), new objj_method(sel_getUid("_verticalScrollerDidScroll:"), function $CPScrollView___verticalScrollerDidScroll_(self, _cmd, aScroller) +{ with(self) +{ + var value = objj_msgSend(aScroller, "floatValue"), + documentFrame = objj_msgSend(objj_msgSend(_contentView, "documentView"), "frame"), + contentBounds = objj_msgSend(_contentView, "bounds"); + switch (objj_msgSend(_verticalScroller, "hitPart")) + { + case CPScrollerDecrementLine: contentBounds.origin.y -= _verticalLineScroll; + break; + case CPScrollerIncrementLine: contentBounds.origin.y += _verticalLineScroll; + break; + case CPScrollerDecrementPage: contentBounds.origin.y -= (contentBounds.size.height) - _verticalPageScroll; + break; + case CPScrollerIncrementPage: contentBounds.origin.y += (contentBounds.size.height) - _verticalPageScroll; + break; + case CPScrollerKnobSlot: + case CPScrollerKnob: + default: contentBounds.origin.y = ROUND(value * ((documentFrame.size.height) - (contentBounds.size.height))); + } + objj_msgSend(_contentView, "scrollToPoint:", contentBounds.origin); +} +},["void","CPScroller"]), new objj_method(sel_getUid("_horizontalScrollerDidScroll:"), function $CPScrollView___horizontalScrollerDidScroll_(self, _cmd, aScroller) +{ with(self) +{ + var value = objj_msgSend(aScroller, "floatValue"), + documentFrame = objj_msgSend(objj_msgSend(self, "documentView"), "frame"), + contentBounds = objj_msgSend(_contentView, "bounds"); + switch (objj_msgSend(_horizontalScroller, "hitPart")) + { + case CPScrollerDecrementLine: contentBounds.origin.x -= _horizontalLineScroll; + break; + case CPScrollerIncrementLine: contentBounds.origin.x += _horizontalLineScroll; + break; + case CPScrollerDecrementPage: contentBounds.origin.x -= (contentBounds.size.width) - _horizontalPageScroll; + break; + case CPScrollerIncrementPage: contentBounds.origin.x += (contentBounds.size.width) - _horizontalPageScroll; + break; + case CPScrollerKnobSlot: + case CPScrollerKnob: + default: contentBounds.origin.x = ROUND(value * ((documentFrame.size.width) - (contentBounds.size.width))); + } + objj_msgSend(_contentView, "scrollToPoint:", contentBounds.origin); + objj_msgSend(_headerClipView, "scrollToPoint:", CGPointMake(contentBounds.origin.x, 0.0)); +} +},["void","CPScroller"]), new objj_method(sel_getUid("tile"), function $CPScrollView__tile(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPScrollView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "reflectScrolledClipView:", _contentView); +} +},["void","CGSize"]), new objj_method(sel_getUid("setLineScroll:"), function $CPScrollView__setLineScroll_(self, _cmd, aLineScroll) +{ with(self) +{ + objj_msgSend(self, "setHorizonalLineScroll:", aLineScroll); + objj_msgSend(self, "setVerticalLineScroll:", aLineScroll); +} +},["void","float"]), new objj_method(sel_getUid("lineScroll"), function $CPScrollView__lineScroll(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "horizontalLineScroll"); +} +},["float"]), new objj_method(sel_getUid("setHorizontalLineScroll:"), function $CPScrollView__setHorizontalLineScroll_(self, _cmd, aLineScroll) +{ with(self) +{ + _horizontalLineScroll = aLineScroll; +} +},["void","float"]), new objj_method(sel_getUid("horizontalLineScroll"), function $CPScrollView__horizontalLineScroll(self, _cmd) +{ with(self) +{ + return _horizontalLineScroll; +} +},["float"]), new objj_method(sel_getUid("setVerticalLineScroll:"), function $CPScrollView__setVerticalLineScroll_(self, _cmd, aLineScroll) +{ with(self) +{ + _verticalLineScroll = aLineScroll; +} +},["void","float"]), new objj_method(sel_getUid("verticalLineScroll"), function $CPScrollView__verticalLineScroll(self, _cmd) +{ with(self) +{ + return _verticalLineScroll; +} +},["float"]), new objj_method(sel_getUid("setPageScroll:"), function $CPScrollView__setPageScroll_(self, _cmd, aPageScroll) +{ with(self) +{ + objj_msgSend(self, "setHorizontalPageScroll:", aPageScroll); + objj_msgSend(self, "setVerticalPageScroll:", aPageScroll); +} +},["void","float"]), new objj_method(sel_getUid("pageScroll"), function $CPScrollView__pageScroll(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "horizontalPageScroll"); +} +},["float"]), new objj_method(sel_getUid("setHorizontalPageScroll:"), function $CPScrollView__setHorizontalPageScroll_(self, _cmd, aPageScroll) +{ with(self) +{ + _horizontalPageScroll = aPageScroll; +} +},["void","float"]), new objj_method(sel_getUid("horizontalPageScroll"), function $CPScrollView__horizontalPageScroll(self, _cmd) +{ with(self) +{ + return _horizontalPageScroll; +} +},["float"]), new objj_method(sel_getUid("setVerticalPageScroll:"), function $CPScrollView__setVerticalPageScroll_(self, _cmd, aPageScroll) +{ with(self) +{ + _verticalPageScroll = aPageScroll; +} +},["void","float"]), new objj_method(sel_getUid("verticalPageScroll"), function $CPScrollView__verticalPageScroll(self, _cmd) +{ with(self) +{ + return _verticalPageScroll; +} +},["float"]), new objj_method(sel_getUid("drawRect:"), function $CPScrollView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScrollView").super_class }, "drawRect:", aRect); + if (_borderType == CPNoBorder) + return; + var strokeRect = objj_msgSend(self, "bounds"), + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetLineWidth(context, 1); + switch (_borderType) + { + case CPLineBorder: + CGContextSetStrokeColor(context, objj_msgSend(self, "currentValueForThemeAttribute:", "border-color")); + CGContextStrokeRect(context, { origin: { x:strokeRect.origin.x + 0.5, y:strokeRect.origin.y + 0.5 }, size: { width:strokeRect.size.width - 2 * 0.5, height:strokeRect.size.height - 2 * 0.5 } }); + break; + case CPBezelBorder: + objj_msgSend(self, "_drawGrayBezelInContext:bounds:", context, strokeRect); + break; + case CPGrooveBorder: + objj_msgSend(self, "_drawGrooveInContext:bounds:", context, strokeRect); + break; + default: + break; + } +} +},["void","CPRect"]), new objj_method(sel_getUid("_drawGrayBezelInContext:bounds:"), function $CPScrollView___drawGrayBezelInContext_bounds_(self, _cmd, context, aRect) +{ with(self) +{ + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 142.0/255.0, 1.0)); + var y = (aRect.origin.y) + 0.5; + CGContextMoveToPoint(context, (aRect.origin.x), y); + CGContextAddLineToPoint(context, (aRect.origin.x) + 1.0, y); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 192.0/255.0, 1.0)); + CGContextMoveToPoint(context, (aRect.origin.x) + 1.0, y); + CGContextAddLineToPoint(context, (aRect.origin.x + aRect.size.width) - 1.0, y); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 142.0/255.0, 1.0)); + CGContextMoveToPoint(context, (aRect.origin.x + aRect.size.width) - 1.0, y); + CGContextAddLineToPoint(context, (aRect.origin.x + aRect.size.width), y); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 190.0/255.0, 1.0)); + var x = (aRect.origin.x + aRect.size.width) - 0.5; + CGContextMoveToPoint(context, x, (aRect.origin.y) + 1.0); + CGContextAddLineToPoint(context, x, (aRect.origin.y + aRect.size.height)); + CGContextMoveToPoint(context, x - 0.5, (aRect.origin.y + aRect.size.height) - 0.5); + CGContextAddLineToPoint(context, (aRect.origin.x), (aRect.origin.y + aRect.size.height) - 0.5); + x = (aRect.origin.x) + 0.5; + CGContextMoveToPoint(context, x, (aRect.origin.y + aRect.size.height)); + CGContextAddLineToPoint(context, x, (aRect.origin.y) + 1.0); + CGContextStrokePath(context); +} +},["void","CGContext","CGRect"]), new objj_method(sel_getUid("_drawGrooveInContext:bounds:"), function $CPScrollView___drawGrooveInContext_bounds_(self, _cmd, context, aRect) +{ with(self) +{ + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 159.0/255.0, 1.0)); + var y = (aRect.origin.y) + 0.5; + CGContextMoveToPoint(context, (aRect.origin.x), y); + CGContextAddLineToPoint(context, (aRect.origin.x + aRect.size.width), y); + var x = (aRect.origin.x + aRect.size.width) - 1.5; + CGContextMoveToPoint(context, x, (aRect.origin.y) + 2.0); + CGContextAddLineToPoint(context, x, (aRect.origin.y + aRect.size.height) - 1.0); + y = (aRect.origin.y + aRect.size.height) - 1.5; + CGContextMoveToPoint(context, (aRect.origin.x + aRect.size.width) - 1.0, y); + CGContextAddLineToPoint(context, (aRect.origin.x) + 2.0, y); + x = (aRect.origin.x) + 0.5; + CGContextMoveToPoint(context, x, (aRect.origin.y + aRect.size.height)); + CGContextAddLineToPoint(context, x, (aRect.origin.y)); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "whiteColor")); + var rect = { origin: { x:aRect.origin.x + 1.0, y:aRect.origin.y + 1.0 }, size: { width:aRect.size.width, height:aRect.size.height } }; + rect.size.width -= 1.0; + rect.size.height -= 1.0; + CGContextStrokeRect(context, { origin: { x:rect.origin.x + 0.5, y:rect.origin.y + 0.5 }, size: { width:rect.size.width - 2 * 0.5, height:rect.size.height - 2 * 0.5 } }); + CGContextBeginPath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithWhite:alpha:", 192.0/255.0, 1.0)); + y = (aRect.origin.y) + 2.5; + CGContextMoveToPoint(context, (aRect.origin.x) + 2.0, y); + CGContextAddLineToPoint(context, (aRect.origin.x + aRect.size.width) - 2.0, y); + CGContextStrokePath(context); +} +},["void","CGContext","CGRect"]), new objj_method(sel_getUid("scrollWheel:"), function $CPScrollView__scrollWheel_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "_respondToScrollWheelEventWithDeltaX:deltaY:", objj_msgSend(anEvent, "deltaX"), objj_msgSend(anEvent, "deltaY")); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_respondToScrollWheelEventWithDeltaX:deltaY:"), function $CPScrollView___respondToScrollWheelEventWithDeltaX_deltaY_(self, _cmd, deltaX, deltaY) +{ with(self) +{ + var documentFrame = objj_msgSend(objj_msgSend(self, "documentView"), "frame"), + contentBounds = objj_msgSend(_contentView, "bounds"), + contentFrame = objj_msgSend(_contentView, "frame"), + enclosingScrollView = objj_msgSend(self, "enclosingScrollView"); + contentBounds.origin.x = ROUND(contentBounds.origin.x + deltaX); + contentBounds.origin.y = ROUND(contentBounds.origin.y + deltaY); + var constrainedOrigin = objj_msgSend(_contentView, "constrainScrollPoint:", CGPointCreateCopy(contentBounds.origin)), + extraX = contentBounds.origin.x - constrainedOrigin.x, + extraY = contentBounds.origin.y - constrainedOrigin.y; + objj_msgSend(_contentView, "scrollToPoint:", constrainedOrigin); + objj_msgSend(_headerClipView, "scrollToPoint:", CGPointMake(constrainedOrigin.x, 0.0)); + if (extraX || extraY) + objj_msgSend(enclosingScrollView, "_respondToScrollWheelEventWithDeltaX:deltaY:", extraX, extraY); +} +},["void","float","float"]), new objj_method(sel_getUid("keyDown:"), function $CPScrollView__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "interpretKeyEvents:", [anEvent]); +} +},["void","CPEvent"]), new objj_method(sel_getUid("pageUp:"), function $CPScrollView__pageUp_(self, _cmd, sender) +{ with(self) +{ + var contentBounds = objj_msgSend(_contentView, "bounds"); + objj_msgSend(self, "moveByOffset:", CGSizeMake(0.0, -((contentBounds.size.height) - _verticalPageScroll))); +} +},["void","id"]), new objj_method(sel_getUid("pageDown:"), function $CPScrollView__pageDown_(self, _cmd, sender) +{ with(self) +{ + var contentBounds = objj_msgSend(_contentView, "bounds"); + objj_msgSend(self, "moveByOffset:", CGSizeMake(0.0, (contentBounds.size.height) - _verticalPageScroll)); +} +},["void","id"]), new objj_method(sel_getUid("moveLeft:"), function $CPScrollView__moveLeft_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveByOffset:", CGSizeMake(-_horizontalLineScroll, 0.0)); +} +},["void","id"]), new objj_method(sel_getUid("moveRight:"), function $CPScrollView__moveRight_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveByOffset:", CGSizeMake(_horizontalLineScroll, 0.0)); +} +},["void","id"]), new objj_method(sel_getUid("moveUp:"), function $CPScrollView__moveUp_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveByOffset:", CGSizeMake(0.0, -_verticalLineScroll)); +} +},["void","id"]), new objj_method(sel_getUid("moveDown:"), function $CPScrollView__moveDown_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveByOffset:", CGSizeMake(0.0, _verticalLineScroll)); +} +},["void","id"]), new objj_method(sel_getUid("moveByOffset:"), function $CPScrollView__moveByOffset_(self, _cmd, aSize) +{ with(self) +{ + var documentFrame = objj_msgSend(objj_msgSend(self, "documentView"), "frame"), + contentBounds = objj_msgSend(_contentView, "bounds"); + contentBounds.origin.x += aSize.width; + contentBounds.origin.y += aSize.height; + objj_msgSend(_contentView, "scrollToPoint:", contentBounds.origin); + objj_msgSend(_headerClipView, "scrollToPoint:", CGPointMake(contentBounds.origin, 0)); +} +},["void","CGSize"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPScrollView__themeClass(self, _cmd) +{ with(self) +{ + return "scrollview" +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPScrollView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithJSObject:", { + "bottom-corner-color": objj_msgSend(CPColor, "whiteColor"), + "border-color": objj_msgSend(CPColor, "blackColor") + }); +} +},["CPDictionary"]), new objj_method(sel_getUid("contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:"), function $CPScrollView__contentSizeForFrameSize_hasHorizontalScroller_hasVerticalScroller_borderType_(self, _cmd, frameSize, hFlag, vFlag, borderType) +{ with(self) +{ + var bounds = objj_msgSend(self, "_insetBounds:borderType:", { origin: { x:0.0, y:0.0 }, size: { width:frameSize.width, height:frameSize.height } }, borderType), + scrollerWidth = objj_msgSend(CPScroller, "scrollerWidth"); + if (hFlag) + bounds.size.height -= scrollerWidth; + if (vFlag) + bounds.size.width -= scrollerWidth; + return bounds.size; +} +},["CGSize","CGSize","BOOL","BOOL","CPBorderType"]), new objj_method(sel_getUid("frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:"), function $CPScrollView__frameSizeForContentSize_hasHorizontalScroller_hasVerticalScroller_borderType_(self, _cmd, contentSize, hFlag, vFlag, borderType) +{ with(self) +{ + var bounds = objj_msgSend(self, "_insetBounds:borderType:", { origin: { x:0.0, y:0.0 }, size: { width:contentSize.width, height:contentSize.height } }, borderType), + widthInset = contentSize.width - bounds.size.width, + heightInset = contentSize.height - bounds.size.height, + frameSize = { width:contentSize.width + widthInset, height:contentSize.height + heightInset }, + scrollerWidth = objj_msgSend(CPScroller, "scrollerWidth"); + if (hFlag) + frameSize.height -= scrollerWidth; + if (vFlag) + frameSize.width -= scrollerWidth; + return frameSize; +} +},["CGSize","CGSize","BOOL","BOOL","CPBorderType"]), new objj_method(sel_getUid("_insetBounds:borderType:"), function $CPScrollView___insetBounds_borderType_(self, _cmd, bounds, borderType) +{ with(self) +{ + switch (borderType) + { + case CPLineBorder: + case CPBezelBorder: + return { origin: { x:bounds.origin.x + 1.0, y:bounds.origin.y + 1.0 }, size: { width:bounds.size.width - 2 * 1.0, height:bounds.size.height - 2 * 1.0 } }; + case CPGrooveBorder: + bounds = { origin: { x:bounds.origin.x + 2.0, y:bounds.origin.y + 2.0 }, size: { width:bounds.size.width - 2 * 2.0, height:bounds.size.height - 2 * 2.0 } }; + ++bounds.origin.y; + --bounds.size.height; + return bounds; + case CPNoBorder: + default: + return bounds; + } +} +},["CGRect","CGRect","CPBorderType"])]); +} +var CPScrollViewContentViewKey = "CPScrollViewContentView", + CPScrollViewHeaderClipViewKey = "CPScrollViewHeaderClipViewKey", + CPScrollViewVLineScrollKey = "CPScrollViewVLineScroll", + CPScrollViewHLineScrollKey = "CPScrollViewHLineScroll", + CPScrollViewVPageScrollKey = "CPScrollViewVPageScroll", + CPScrollViewHPageScrollKey = "CPScrollViewHPageScroll", + CPScrollViewHasVScrollerKey = "CPScrollViewHasVScroller", + CPScrollViewHasHScrollerKey = "CPScrollViewHasHScroller", + CPScrollViewVScrollerKey = "CPScrollViewVScroller", + CPScrollViewHScrollerKey = "CPScrollViewHScroller", + CPScrollViewAutohidesScrollerKey = "CPScrollViewAutohidesScroller", + CPScrollViewCornerViewKey = "CPScrollViewCornerViewKey", + CPScrollViewBorderTypeKey = "CPScrollViewBorderTypeKey"; +{ +var the_class = objj_getClass("CPScrollView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPScrollView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPScrollView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScrollView").super_class }, "initWithCoder:", aCoder)) + { + _verticalLineScroll = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollViewVLineScrollKey); + _verticalPageScroll = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollViewVPageScrollKey); + _horizontalLineScroll = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollViewHLineScrollKey); + _horizontalPageScroll = objj_msgSend(aCoder, "decodeFloatForKey:", CPScrollViewHPageScrollKey); + _contentView = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewContentViewKey); + _headerClipView = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewHeaderClipViewKey); + if (!_headerClipView) + { + _headerClipView = objj_msgSend(objj_msgSend(CPClipView, "alloc"), "init"); + objj_msgSend(self, "addSubview:", _headerClipView); + } + _bottomCornerView = objj_msgSend(objj_msgSend(CPView, "alloc"), "init"); + objj_msgSend(self, "addSubview:", _bottomCornerView); + _verticalScroller = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewVScrollerKey); + _horizontalScroller = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewHScrollerKey); + _hasVerticalScroller = objj_msgSend(aCoder, "decodeBoolForKey:", CPScrollViewHasVScrollerKey); + _hasHorizontalScroller = objj_msgSend(aCoder, "decodeBoolForKey:", CPScrollViewHasHScrollerKey); + _autohidesScrollers = objj_msgSend(aCoder, "decodeBoolForKey:", CPScrollViewAutohidesScrollerKey); + _borderType = objj_msgSend(aCoder, "decodeIntForKey:", CPScrollViewBorderTypeKey); + _cornerView = objj_msgSend(aCoder, "decodeObjectForKey:", CPScrollViewCornerViewKey); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "performSelector:target:argument:order:modes:", sel_getUid("reflectScrolledClipView:"), self, _contentView, 0, [CPDefaultRunLoopMode]); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPScrollView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScrollView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _contentView, CPScrollViewContentViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _headerClipView, CPScrollViewHeaderClipViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _verticalScroller, CPScrollViewVScrollerKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _horizontalScroller, CPScrollViewHScrollerKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _verticalLineScroll, CPScrollViewVLineScrollKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _verticalPageScroll, CPScrollViewVPageScrollKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _horizontalLineScroll, CPScrollViewHLineScrollKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _horizontalPageScroll, CPScrollViewHPageScrollKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _hasVerticalScroller, CPScrollViewHasVScrollerKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _hasHorizontalScroller, CPScrollViewHasHScrollerKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _autohidesScrollers, CPScrollViewAutohidesScrollerKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _cornerView, CPScrollViewCornerViewKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _borderType, CPScrollViewBorderTypeKey); +} +},["void","CPCoder"])]); +} + +p;15;CPSearchField.jt;30187;@STATIC;1.0;i;13;CPTextField.jt;30149;objj_executeFile("CPTextField.j", YES); +CPSearchFieldRecentsTitleMenuItemTag = 1000; +CPSearchFieldRecentsMenuItemTag = 1001; +CPSearchFieldClearRecentsMenuItemTag = 1002; +CPSearchFieldNoRecentsMenuItemTag = 1003; +CPSearchFieldSeparatorMenuItemTag = 1004; +var CPSearchFieldSearchImage = nil, + CPSearchFieldFindImage = nil, + CPSearchFieldCancelImage = nil, + CPSearchFieldCancelPressedImage = nil; +var SEARCH_BUTTON_DEFAULT_WIDTH = 25.0, + CANCEL_BUTTON_DEFAULT_WIDTH = 22.0, + BUTTON_DEFAULT_HEIGHT = 22.0; +var RECENT_SEARCH_PREFIX = " "; +{var the_class = objj_allocateClassPair(CPTextField, "CPSearchField"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_searchButton"), new objj_ivar("_cancelButton"), new objj_ivar("_searchMenuTemplate"), new objj_ivar("_searchMenu"), new objj_ivar("_recentsAutosaveName"), new objj_ivar("_recentSearches"), new objj_ivar("_maximumRecents"), new objj_ivar("_sendsWholeSearchString"), new objj_ivar("_sendsSearchStringImmediately"), new objj_ivar("_canResignFirstResponder"), new objj_ivar("_partialStringTimer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPSearchField__initWithFrame_(self, _cmd, frame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "initWithFrame:", frame)) + { + _maximumRecents = 10; + _sendsWholeSearchString = NO; + _sendsSearchStringImmediately = NO; + _recentsAutosaveName = nil; + objj_msgSend(self, "_init"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("_init"), function $CPSearchField___init(self, _cmd) +{ with(self) +{ + _recentSearches = objj_msgSend(CPArray, "array"); + objj_msgSend(self, "setBezeled:", YES); + objj_msgSend(self, "setBezelStyle:", CPTextFieldRoundedBezel); + objj_msgSend(self, "setBordered:", YES); + objj_msgSend(self, "setEditable:", YES); + objj_msgSend(self, "setDelegate:", self); + objj_msgSend(self, "setContinuous:", YES); + var bounds = objj_msgSend(self, "bounds"), + cancelButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", objj_msgSend(self, "cancelButtonRectForBounds:", bounds)), + searchButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", objj_msgSend(self, "searchButtonRectForBounds:", bounds)); + objj_msgSend(self, "setCancelButton:", cancelButton); + objj_msgSend(self, "resetCancelButton"); + objj_msgSend(self, "setSearchButton:", searchButton); + objj_msgSend(self, "resetSearchButton"); + _canResignFirstResponder = YES; +} +},["void"]), new objj_method(sel_getUid("setSearchButton:"), function $CPSearchField__setSearchButton_(self, _cmd, button) +{ with(self) +{ + if (button != _searchButton) + { + objj_msgSend(_searchButton, "removeFromSuperview"); + _searchButton = button; + objj_msgSend(_searchButton, "setFrame:", objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds"))); + objj_msgSend(_searchButton, "setAutoresizingMask:", CPViewMaxXMargin); + objj_msgSend(self, "addSubview:", _searchButton); + } +} +},["void","CPButton"]), new objj_method(sel_getUid("searchButton"), function $CPSearchField__searchButton(self, _cmd) +{ with(self) +{ + return _searchButton; +} +},["CPButton"]), new objj_method(sel_getUid("resetSearchButton"), function $CPSearchField__resetSearchButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(self, "searchButton"), + searchButtonImage = (_searchMenuTemplate === nil) ? CPSearchFieldSearchImage : CPSearchFieldFindImage; + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setImageScaling:", CPScaleToFit); + objj_msgSend(button, "setImage:", searchButtonImage); + objj_msgSend(button, "setAutoresizingMask:", CPViewMaxXMargin); +} +},["void"]), new objj_method(sel_getUid("setCancelButton:"), function $CPSearchField__setCancelButton_(self, _cmd, button) +{ with(self) +{ + if (button != _cancelButton) + { + objj_msgSend(_cancelButton, "removeFromSuperview"); + _cancelButton = button; + objj_msgSend(_cancelButton, "setFrame:", objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds"))); + objj_msgSend(_cancelButton, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_cancelButton, "setTarget:", self); + objj_msgSend(_cancelButton, "setAction:", sel_getUid("_searchFieldCancel:")); + objj_msgSend(self, "_updateCancelButtonVisibility"); + objj_msgSend(self, "addSubview:", _cancelButton); + } +} +},["void","CPButton"]), new objj_method(sel_getUid("cancelButton"), function $CPSearchField__cancelButton(self, _cmd) +{ with(self) +{ + return _cancelButton; +} +},["CPButton"]), new objj_method(sel_getUid("resetCancelButton"), function $CPSearchField__resetCancelButton(self, _cmd) +{ with(self) +{ + var button = objj_msgSend(self, "cancelButton"); + objj_msgSend(button, "setBordered:", NO); + objj_msgSend(button, "setImageScaling:", CPScaleToFit); + objj_msgSend(button, "setImage:", CPSearchFieldCancelImage); + objj_msgSend(button, "setAlternateImage:", CPSearchFieldCancelPressedImage); + objj_msgSend(button, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(button, "setTarget:", self); + objj_msgSend(button, "setAction:", sel_getUid("_searchFieldCancel:")); +} +},["void"]), new objj_method(sel_getUid("searchTextRectForBounds:"), function $CPSearchField__searchTextRectForBounds_(self, _cmd, rect) +{ with(self) +{ + var leftOffset = 0, + width = (rect.size.width), + bounds = objj_msgSend(self, "bounds"); + if (_searchButton) + { + var searchBounds = objj_msgSend(self, "searchButtonRectForBounds:", bounds); + leftOffset = (searchBounds.origin.x + searchBounds.size.width) + 2; + } + if (_cancelButton) + { + var cancelRect = objj_msgSend(self, "cancelButtonRectForBounds:", bounds); + width = (cancelRect.origin.x) - leftOffset; + } + return { origin: { x:leftOffset, y:(rect.origin.y) }, size: { width:width, height:(rect.size.height) } }; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("searchButtonRectForBounds:"), function $CPSearchField__searchButtonRectForBounds_(self, _cmd, rect) +{ with(self) +{ + return { origin: { x:5, y:((rect.size.height) - BUTTON_DEFAULT_HEIGHT) / 2 }, size: { width:SEARCH_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT } }; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("cancelButtonRectForBounds:"), function $CPSearchField__cancelButtonRectForBounds_(self, _cmd, rect) +{ with(self) +{ + return { origin: { x:(rect.size.width) - CANCEL_BUTTON_DEFAULT_WIDTH - 5, y:((rect.size.height) - CANCEL_BUTTON_DEFAULT_WIDTH) / 2 }, size: { width:BUTTON_DEFAULT_HEIGHT, height:BUTTON_DEFAULT_HEIGHT } }; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("searchMenuTemplate"), function $CPSearchField__searchMenuTemplate(self, _cmd) +{ with(self) +{ + return _searchMenuTemplate; +} +},["CPMenu"]), new objj_method(sel_getUid("setSearchMenuTemplate:"), function $CPSearchField__setSearchMenuTemplate_(self, _cmd, aMenu) +{ with(self) +{ + _searchMenuTemplate = aMenu; + objj_msgSend(self, "resetSearchButton"); + objj_msgSend(self, "_loadRecentSearchList"); + objj_msgSend(self, "_updateSearchMenu"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("sendsWholeSearchString"), function $CPSearchField__sendsWholeSearchString(self, _cmd) +{ with(self) +{ + return _sendsWholeSearchString; +} +},["BOOL"]), new objj_method(sel_getUid("setSendsWholeSearchString:"), function $CPSearchField__setSendsWholeSearchString_(self, _cmd, flag) +{ with(self) +{ + _sendsWholeSearchString = flag; +} +},["void","BOOL"]), new objj_method(sel_getUid("sendsSearchStringImmediately"), function $CPSearchField__sendsSearchStringImmediately(self, _cmd) +{ with(self) +{ + return _sendsSearchStringImmediately; +} +},["BOOL"]), new objj_method(sel_getUid("setSendsSearchStringImmediately:"), function $CPSearchField__setSendsSearchStringImmediately_(self, _cmd, flag) +{ with(self) +{ + _sendsSearchStringImmediately = flag; +} +},["void","BOOL"]), new objj_method(sel_getUid("maximumRecents"), function $CPSearchField__maximumRecents(self, _cmd) +{ with(self) +{ + return _maximumRecents; +} +},["int"]), new objj_method(sel_getUid("setMaximumRecents:"), function $CPSearchField__setMaximumRecents_(self, _cmd, max) +{ with(self) +{ + if (max > 254) + max = 254; + else if (max < 0) + max = 10; + _maximumRecents = max; +} +},["void","int"]), new objj_method(sel_getUid("recentSearches"), function $CPSearchField__recentSearches(self, _cmd) +{ with(self) +{ + return _recentSearches; +} +},["CPArray"]), new objj_method(sel_getUid("setRecentSearches:"), function $CPSearchField__setRecentSearches_(self, _cmd, searches) +{ with(self) +{ + var max = MIN(objj_msgSend(self, "maximumRecents"), objj_msgSend(searches, "count")), + searches = objj_msgSend(searches, "subarrayWithRange:", CPMakeRange(0, max)); + _recentSearches = searches; + objj_msgSend(self, "_autosaveRecentSearchList"); +} +},["void","CPArray"]), new objj_method(sel_getUid("recentsAutosaveName"), function $CPSearchField__recentsAutosaveName(self, _cmd) +{ with(self) +{ + return _recentsAutosaveName; +} +},["CPString"]), new objj_method(sel_getUid("setRecentsAutosaveName:"), function $CPSearchField__setRecentsAutosaveName_(self, _cmd, name) +{ with(self) +{ + if (_recentsAutosaveName != nil) + objj_msgSend(self, "_deregisterForAutosaveNotification"); + _recentsAutosaveName = name; + if (_recentsAutosaveName != nil) + objj_msgSend(self, "_registerForAutosaveNotification"); +} +},["void","CPString"]), new objj_method(sel_getUid("contentRectForBounds:"), function $CPSearchField__contentRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var superbounds = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "contentRectForBounds:", bounds); + return objj_msgSend(self, "searchTextRectForBounds:", superbounds); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("menu"), function $CPSearchField__menu(self, _cmd) +{ with(self) +{ + return _searchMenu; +} +},["CPMenu"]), new objj_method(sel_getUid("isOpaque"), function $CPSearchField__isOpaque(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "isOpaque") && objj_msgSend(_cancelButton, "isOpaque") && objj_msgSend(_searchButton, "isOpaque"); +} +},["BOOL"]), new objj_method(sel_getUid("_updateCancelButtonVisibility"), function $CPSearchField___updateCancelButtonVisibility(self, _cmd) +{ with(self) +{ + objj_msgSend(_cancelButton, "setHidden:", (objj_msgSend(objj_msgSend(self, "stringValue"), "length") === 0)); +} +},["void"]), new objj_method(sel_getUid("controlTextDidChange:"), function $CPSearchField__controlTextDidChange_(self, _cmd, aNotification) +{ with(self) +{ + if (!objj_msgSend(self, "sendsWholeSearchString")) + { + if (objj_msgSend(self, "sendsSearchStringImmediately")) + objj_msgSend(self, "_sendPartialString"); + else + { + objj_msgSend(_partialStringTimer, "invalidate"); + var timeInterval = objj_msgSend(CPSearchField, "_keyboardDelayForPartialSearchString:", objj_msgSend(self, "stringValue")); + _partialStringTimer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", timeInterval, self, sel_getUid("_sendPartialString"), nil, NO); + } + } + objj_msgSend(self, "_updateCancelButtonVisibility"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_sendAction:"), function $CPSearchField___sendAction_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); +} +},["void","id"]), new objj_method(sel_getUid("sendAction:to:"), function $CPSearchField__sendAction_to_(self, _cmd, anAction, anObject) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "sendAction:to:", anAction, anObject); + objj_msgSend(_partialStringTimer, "invalidate"); + objj_msgSend(self, "_addStringToRecentSearches:", objj_msgSend(self, "stringValue")); + objj_msgSend(self, "_updateCancelButtonVisibility"); +} +},["void","SEL","id"]), new objj_method(sel_getUid("_addStringToRecentSearches:"), function $CPSearchField___addStringToRecentSearches_(self, _cmd, string) +{ with(self) +{ + if (string === nil || string === "" || objj_msgSend(_recentSearches, "containsObject:", string)) + return; + var searches = objj_msgSend(CPMutableArray, "arrayWithArray:", _recentSearches); + objj_msgSend(searches, "addObject:", string); + objj_msgSend(self, "setRecentSearches:", searches); + objj_msgSend(self, "_updateSearchMenu"); +} +},["void","CPString"]), new objj_method(sel_getUid("hitTest:"), function $CPSearchField__hitTest_(self, _cmd, aPoint) +{ with(self) +{ + if ((aPoint.x >= (objj_msgSend(self, "frame").origin.x) && aPoint.y >= (objj_msgSend(self, "frame").origin.y) && aPoint.x < (objj_msgSend(self, "frame").origin.x + objj_msgSend(self, "frame").size.width) && aPoint.y < (objj_msgSend(self, "frame").origin.y + objj_msgSend(self, "frame").size.height))) + return self; + else + return nil; +} +},["CPView","CGPoint"]), new objj_method(sel_getUid("resignFirstResponder"), function $CPSearchField__resignFirstResponder(self, _cmd) +{ with(self) +{ + return _canResignFirstResponder && objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "resignFirstResponder"); +} +},["BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $CPSearchField__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var location = objj_msgSend(anEvent, "locationInWindow"), + point = objj_msgSend(self, "convertPoint:fromView:", location, nil); + if ((point.x >= (objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.x) && point.y >= (objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.y) && point.x < (objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.x + objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).size.width) && point.y < (objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.y + objj_msgSend(self, "searchButtonRectForBounds:", objj_msgSend(self, "bounds")).size.height))) + { + if (_searchMenuTemplate == nil) + objj_msgSend(self, "_sendAction:", self); + else + objj_msgSend(self, "_showMenu"); + } + else if ((point.x >= (objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.x) && point.y >= (objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.y) && point.x < (objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.x + objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).size.width) && point.y < (objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).origin.y + objj_msgSend(self, "cancelButtonRectForBounds:", objj_msgSend(self, "bounds")).size.height))) + objj_msgSend(_cancelButton, "mouseDown:", anEvent); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("defaultSearchMenuTemplate"), function $CPSearchField__defaultSearchMenuTemplate(self, _cmd) +{ with(self) +{ + var template = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "init"), + item; + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Recent Searches", nil, ""); + objj_msgSend(item, "setTag:", CPSearchFieldRecentsTitleMenuItemTag); + objj_msgSend(item, "setEnabled:", NO); + objj_msgSend(template, "addItem:", item); + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Recent search item", sel_getUid("_searchFieldSearch:"), ""); + objj_msgSend(item, "setTag:", CPSearchFieldRecentsMenuItemTag); + objj_msgSend(item, "setTarget:", self); + objj_msgSend(template, "addItem:", item); + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "Clear Recent Searches", sel_getUid("_searchFieldClearRecents:"), ""); + objj_msgSend(item, "setTag:", CPSearchFieldClearRecentsMenuItemTag); + objj_msgSend(item, "setTarget:", self); + objj_msgSend(template, "addItem:", item); + item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", "No Recent Searches", nil, ""); + objj_msgSend(item, "setTag:", CPSearchFieldNoRecentsMenuItemTag); + objj_msgSend(item, "setEnabled:", NO); + objj_msgSend(template, "addItem:", item); + return template; +} +},["CPMenu"]), new objj_method(sel_getUid("_updateSearchMenu"), function $CPSearchField___updateSearchMenu(self, _cmd) +{ with(self) +{ + if (_searchMenuTemplate === nil) + return; + var menu = objj_msgSend(objj_msgSend(CPMenu, "alloc"), "init"), + countOfRecents = objj_msgSend(_recentSearches, "count"), + numberOfItems = objj_msgSend(_searchMenuTemplate, "numberOfItems"); + for (var i = 0; i < numberOfItems; i++) + { + var item = objj_msgSend(objj_msgSend(_searchMenuTemplate, "itemAtIndex:", i), "copy"); + switch (objj_msgSend(item, "tag")) + { + case CPSearchFieldRecentsTitleMenuItemTag: + if (countOfRecents === 0) + continue; + if (objj_msgSend(menu, "numberOfItems") > 0) + objj_msgSend(self, "_addSeparatorToMenu:", menu); + break; + case CPSearchFieldRecentsMenuItemTag: + { + var itemAction = sel_getUid("_searchFieldSearch:"); + for (var recentIndex = 0; recentIndex < countOfRecents; ++recentIndex) + { + var recentItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", RECENT_SEARCH_PREFIX + objj_msgSend(_recentSearches, "objectAtIndex:", recentIndex), itemAction, objj_msgSend(item, "keyEquivalent")); + objj_msgSend(item, "setTarget:", self); + objj_msgSend(menu, "addItem:", recentItem); + } + continue; + } + case CPSearchFieldClearRecentsMenuItemTag: + if (countOfRecents === 0) + continue; + if (objj_msgSend(menu, "numberOfItems") > 0) + objj_msgSend(self, "_addSeparatorToMenu:", menu); + objj_msgSend(item, "setAction:", sel_getUid("_searchFieldClearRecents:")); + objj_msgSend(item, "setTarget:", self); + break; + case CPSearchFieldNoRecentsMenuItemTag: + if (countOfRecents !== 0) + continue; + if (objj_msgSend(menu, "numberOfItems") > 0) + objj_msgSend(self, "_addSeparatorToMenu:", menu); + break; + case CPSearchFieldSeparatorMenuItemTag: + item = objj_msgSend(CPMenuItem, "separatorItem"); + objj_msgSend(item, "setEnabled:", NO); + objj_msgSend(menu, "addItem:", item); + continue; + } + objj_msgSend(item, "setEnabled:", (objj_msgSend(item, "isEnabled") && objj_msgSend(item, "action") != nil && objj_msgSend(item, "target") != nil)); + objj_msgSend(menu, "addItem:", item); + } + objj_msgSend(menu, "setDelegate:", self); + _searchMenu = menu; +} +},["void"]), new objj_method(sel_getUid("_addSeparatorToMenu:"), function $CPSearchField___addSeparatorToMenu_(self, _cmd, aMenu) +{ with(self) +{ + var separator = objj_msgSend(CPMenuItem, "separatorItem"); + objj_msgSend(separator, "setEnabled:", NO); + objj_msgSend(aMenu, "addItem:", separator); +} +},["void","CPMenu"]), new objj_method(sel_getUid("menuWillOpen:"), function $CPSearchField__menuWillOpen_(self, _cmd, menu) +{ with(self) +{ + _canResignFirstResponder = NO; +} +},["void","CPMenu"]), new objj_method(sel_getUid("menuDidClose:"), function $CPSearchField__menuDidClose_(self, _cmd, menu) +{ with(self) +{ + _canResignFirstResponder = YES; + objj_msgSend(self, "becomeFirstResponder"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("_showMenu"), function $CPSearchField___showMenu(self, _cmd) +{ with(self) +{ + if (_searchMenu === nil || objj_msgSend(_searchMenu, "numberOfItems") === 0 || !objj_msgSend(self, "isEnabled")) + return; + var aFrame = objj_msgSend(objj_msgSend(self, "superview"), "convertRect:toView:", objj_msgSend(self, "frame"), nil), + location = CPMakePoint(aFrame.origin.x + 10, aFrame.origin.y + aFrame.size.height - 4); + var anEvent = objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", CPRightMouseDown, location, 0, objj_msgSend(objj_msgSend(CPApp, "currentEvent"), "timestamp"), objj_msgSend(objj_msgSend(self, "window"), "windowNumber"), nil, 1, 1, 0); + objj_msgSend(self, "selectAll:", nil); + objj_msgSend(CPMenu, "popUpContextMenu:withEvent:forView:", _searchMenu, anEvent, self); +} +},["void"]), new objj_method(sel_getUid("_sendPartialString"), function $CPSearchField___sendPartialString(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + objj_msgSend(_partialStringTimer, "invalidate"); +} +},["void"]), new objj_method(sel_getUid("_searchFieldCancel:"), function $CPSearchField___searchFieldCancel_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", ""); + objj_msgSend(self, "_sendPartialString"); + objj_msgSend(self, "_updateCancelButtonVisibility"); +} +},["void","id"]), new objj_method(sel_getUid("_searchFieldSearch:"), function $CPSearchField___searchFieldSearch_(self, _cmd, sender) +{ with(self) +{ + var searchString = objj_msgSend(objj_msgSend(sender, "title"), "substringFromIndex:", objj_msgSend(RECENT_SEARCH_PREFIX, "length")); + if (objj_msgSend(sender, "tag") != CPSearchFieldRecentsMenuItemTag) + objj_msgSend(self, "_addStringToRecentSearches:", searchString); + objj_msgSend(self, "setObjectValue:", searchString); + objj_msgSend(self, "_sendPartialString"); + objj_msgSend(self, "selectAll:", nil); + objj_msgSend(self, "_updateCancelButtonVisibility"); +} +},["void","id"]), new objj_method(sel_getUid("_searchFieldClearRecents:"), function $CPSearchField___searchFieldClearRecents_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "setRecentSearches:", objj_msgSend(CPArray, "array")); + objj_msgSend(self, "_updateSearchMenu"); + objj_msgSend(self, "setStringValue:", ""); + objj_msgSend(self, "_updateCancelButtonVisibility"); + } +},["void","id"]), new objj_method(sel_getUid("_registerForAutosaveNotification"), function $CPSearchField___registerForAutosaveNotification(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "addObserver:selector:name:object:", self, sel_getUid("_updateAutosavedRecents:"), "CPAutosavedRecentsChangedNotification", nil); +} +},["void"]), new objj_method(sel_getUid("_deregisterForAutosaveNotification"), function $CPSearchField___deregisterForAutosaveNotification(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "removeObserver:name:object:", self, "CPAutosavedRecentsChangedNotification", nil); +} +},["void"]), new objj_method(sel_getUid("_autosaveRecentSearchList"), function $CPSearchField___autosaveRecentSearchList(self, _cmd) +{ with(self) +{ + if (_recentsAutosaveName != nil) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", "CPAutosavedRecentsChangedNotification", _recentsAutosaveName); +} +},["void"]), new objj_method(sel_getUid("_updateAutosavedRecents:"), function $CPSearchField___updateAutosavedRecents_(self, _cmd, notification) +{ with(self) +{ + var list = objj_msgSend(self, "recentSearches"), + name = objj_msgSend(notification, "object"), + bundle_name = objj_msgSend(objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "infoDictionary"), "objectForKey:", "CPBundleName"), + cookie_name = objj_msgSend(bundle_name, "lowercaseString") + "." + objj_msgSend(notification, "object"), + cookie = objj_msgSend(objj_msgSend(CPCookie, "alloc"), "initWithName:", cookie_name), + cookie_value = objj_msgSend(list, "componentsJoinedByString:", ","); + objj_msgSend(cookie, "setValue:expires:domain:", cookie_value, objj_msgSend(objj_msgSend(CPDate, "alloc"), "initWithTimeIntervalSinceNow:", 3600*24*365), (window.location.href.hostname)); +} +},["void","id"]), new objj_method(sel_getUid("_loadRecentSearchList"), function $CPSearchField___loadRecentSearchList(self, _cmd) +{ with(self) +{ + var list, + name = objj_msgSend(self, "recentsAutosaveName"); + if (name === nil) + return; + var bundle_name = objj_msgSend(objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "infoDictionary"), "objectForKey:", "CPBundleName"), + cookie_name = objj_msgSend(bundle_name, "lowercaseString") + "." + name, + cookie = objj_msgSend(objj_msgSend(CPCookie, "alloc"), "initWithName:", cookie_name); + if (cookie != nil) + { + var cookie_value = objj_msgSend(cookie, "value"); + list = (cookie_value != "") ? objj_msgSend(cookie_value, "componentsSeparatedByString:", ",") : objj_msgSend(CPArray, "array"); + _recentSearches = list; + } +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPSearchField__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPSearchField, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + CPSearchFieldSearchImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSearchField/CPSearchFieldSearch.png"), { width:SEARCH_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT }); + CPSearchFieldFindImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSearchField/CPSearchFieldFind.png"), { width:SEARCH_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT }); + CPSearchFieldCancelImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSearchField/CPSearchFieldCancel.png"), { width:CANCEL_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT }); + CPSearchFieldCancelPressedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSearchField/CPSearchFieldCancelPressed.png"), { width:CANCEL_BUTTON_DEFAULT_WIDTH, height:BUTTON_DEFAULT_HEIGHT }); +} +},["void"]), new objj_method(sel_getUid("_keyboardDelayForPartialSearchString:"), function $CPSearchField___keyboardDelayForPartialSearchString_(self, _cmd, string) +{ with(self) +{ + return (6 - MIN(objj_msgSend(string, "length"),4))/10; +} +},["double","CPString"])]); +} +var CPRecentsAutosaveNameKey = "CPRecentsAutosaveNameKey", + CPSendsWholeSearchStringKey = "CPSendsWholeSearchStringKey", + CPSendsSearchStringImmediatelyKey = "CPSendsSearchStringImmediatelyKey", + CPMaximumRecentsKey = "CPMaximumRecentsKey", + CPSearchMenuTemplateKey = "CPSearchMenuTemplateKey"; +{ +var the_class = objj_getClass("CPSearchField") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSearchField\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("encodeWithCoder:"), function $CPSearchField__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(_searchButton, "removeFromSuperview"); + objj_msgSend(_cancelButton, "removeFromSuperview"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "encodeWithCoder:", coder); + if (_searchButton) + objj_msgSend(self, "addSubview:", _searchButton); + if (_cancelButton) + objj_msgSend(self, "addSubview:", _cancelButton); + objj_msgSend(coder, "encodeBool:forKey:", _sendsWholeSearchString, CPSendsWholeSearchStringKey); + objj_msgSend(coder, "encodeBool:forKey:", _sendsSearchStringImmediately, CPSendsSearchStringImmediatelyKey); + objj_msgSend(coder, "encodeInt:forKey:", _maximumRecents, CPMaximumRecentsKey); + if (_recentsAutosaveName) + objj_msgSend(coder, "encodeObject:forKey:", _recentsAutosaveName, CPRecentsAutosaveNameKey); + if (_searchMenuTemplate) + objj_msgSend(coder, "encodeObject:forKey:", _searchMenuTemplate, CPSearchMenuTemplateKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("initWithCoder:"), function $CPSearchField__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSearchField").super_class }, "initWithCoder:", coder)) + { + _recentsAutosaveName = objj_msgSend(coder, "decodeObjectForKey:", CPRecentsAutosaveNameKey); + _sendsWholeSearchString = objj_msgSend(coder, "decodeBoolForKey:", CPSendsWholeSearchStringKey); + _sendsSearchStringImmediately = objj_msgSend(coder, "decodeBoolForKey:", CPSendsSearchStringImmediatelyKey); + _maximumRecents = objj_msgSend(coder, "decodeIntForKey:", CPMaximumRecentsKey); + var template = objj_msgSend(coder, "decodeObjectForKey:", CPSearchMenuTemplateKey); + if (template) + objj_msgSend(self, "setSearchMenuTemplate:", template); + objj_msgSend(self, "_init"); + } + return self; +} +},["id","CPCoder"])]); +} + +p;19;CPSecureTextField.jt;390;@STATIC;1.0;i;13;CPTextField.jt;354; + + +objj_executeFile("CPTextField.j", YES); + + + + +{var the_class = objj_allocateClassPair(CPTextField, "CPSecureTextField"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isSecure"), function $CPSecureTextField__isSecure(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"])]); +} + +p;20;CPSegmentedControl.jt;34164;@STATIC;1.0;I;20;Foundation/CPArray.ji;11;CPControl.jt;34103;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("CPControl.j", YES); +CPSegmentSwitchTrackingSelectOne = 0; +CPSegmentSwitchTrackingSelectAny = 1; +CPSegmentSwitchTrackingMomentary = 2; +{var the_class = objj_allocateClassPair(CPControl, "CPSegmentedControl"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_segments"), new objj_ivar("_themeStates"), new objj_ivar("_selectedSegment"), new objj_ivar("_segmentStyle"), new objj_ivar("_trackingMode"), new objj_ivar("_trackingSegment"), new objj_ivar("_trackingHighlighted")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPSegmentedControl__initWithFrame_(self, _cmd, aRect) +{ with(self) +{ + _segments = []; + _themeStates = []; + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "initWithFrame:", aRect); + if (self) + { + _selectedSegment = -1; + _trackingMode = CPSegmentSwitchTrackingSelectOne; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("selectedTag"), function $CPSegmentedControl__selectedTag(self, _cmd) +{ with(self) +{ + return objj_msgSend(_segments[_selectedSegment], "tag"); +} +},["int"]), new objj_method(sel_getUid("setSegmentCount:"), function $CPSegmentedControl__setSegmentCount_(self, _cmd, aCount) +{ with(self) +{ + if (_segments.length == aCount) + return; + var height = CGRectGetHeight(objj_msgSend(self, "bounds")); + if (_segments.length < aCount) + { + for (var index = _segments.length; index < aCount; ++index) + { + _segments[index] = objj_msgSend(objj_msgSend(_CPSegmentItem, "alloc"), "init"); + _themeStates[index] = CPThemeStateNormal; + } + } + else if (aCount < _segments.length) + { + _segments.length = aCount; + _themeStates.length = aCount; + } + if (_selectedSegment >= _segments.length) + _selectedSegment = -1; + objj_msgSend(self, "tileWithChangedSegment:", 0); +} +},["void","unsigned"]), new objj_method(sel_getUid("segmentCount"), function $CPSegmentedControl__segmentCount(self, _cmd) +{ with(self) +{ + return _segments.length; +} +},["unsigned"]), new objj_method(sel_getUid("setSelectedSegment:"), function $CPSegmentedControl__setSelectedSegment_(self, _cmd, aSegment) +{ with(self) +{ + objj_msgSend(self, "setSelected:forSegment:", YES, aSegment); +} +},["void","unsigned"]), new objj_method(sel_getUid("selectedSegment"), function $CPSegmentedControl__selectedSegment(self, _cmd) +{ with(self) +{ + return _selectedSegment; +} +},["unsigned"]), new objj_method(sel_getUid("selectSegmentWithTag:"), function $CPSegmentedControl__selectSegmentWithTag_(self, _cmd, aTag) +{ with(self) +{ + var index = 0; + for (; index < _segments.length; ++index) + if (_segments[index].tag == aTag) + { + objj_msgSend(self, "setSelectedSegment:", index); + return YES; + } + return NO; +} +},["BOOL","int"]), new objj_method(sel_getUid("isTracking"), function $CPSegmentedControl__isTracking(self, _cmd) +{ with(self) +{ +} +},["BOOL"]), new objj_method(sel_getUid("setTrackingMode:"), function $CPSegmentedControl__setTrackingMode_(self, _cmd, aTrackingMode) +{ with(self) +{ + if (_trackingMode == aTrackingMode) + return; + _trackingMode = aTrackingMode; + if (_trackingMode == CPSegmentSwitchTrackingSelectOne) + { + var index = 0, + selected = NO; + for (; index < _segments.length; ++index) + if (objj_msgSend(_segments[index], "selected")) + if (selected) + objj_msgSend(self, "setSelected:forSegment:", NO, index); + else + selected = YES; + } + else if (_trackingMode == CPSegmentSwitchTrackingMomentary) + { + var index = 0; + for (; index < _segments.length; ++index) + if (objj_msgSend(_segments[index], "selected")) + objj_msgSend(self, "setSelected:forSegment:", NO, index); + } +} +},["void","CPSegmentSwitchTracking"]), new objj_method(sel_getUid("trackingMode"), function $CPSegmentedControl__trackingMode(self, _cmd) +{ with(self) +{ + return _trackingMode; +} +},["CPSegmentSwitchTracking"]), new objj_method(sel_getUid("setWidth:forSegment:"), function $CPSegmentedControl__setWidth_forSegment_(self, _cmd, aWidth, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setWidth:", aWidth); + objj_msgSend(self, "tileWithChangedSegment:", aSegment); +} +},["void","float","unsigned"]), new objj_method(sel_getUid("widthForSegment:"), function $CPSegmentedControl__widthForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "width"); +} +},["float","unsigned"]), new objj_method(sel_getUid("setImage:forSegment:"), function $CPSegmentedControl__setImage_forSegment_(self, _cmd, anImage, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setImage:", anImage); + objj_msgSend(self, "tileWithChangedSegment:", aSegment); +} +},["void","CPImage","unsigned"]), new objj_method(sel_getUid("imageForSegment:"), function $CPSegmentedControl__imageForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "image"); +} +},["CPImage","unsigned"]), new objj_method(sel_getUid("setLabel:forSegment:"), function $CPSegmentedControl__setLabel_forSegment_(self, _cmd, aLabel, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setLabel:", aLabel); + objj_msgSend(self, "tileWithChangedSegment:", aSegment); +} +},["void","CPString","unsigned"]), new objj_method(sel_getUid("labelForSegment:"), function $CPSegmentedControl__labelForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "label"); +} +},["CPString","unsigned"]), new objj_method(sel_getUid("setMenu:forSegment:"), function $CPSegmentedControl__setMenu_forSegment_(self, _cmd, aMenu, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setMenu:", aMenu); +} +},["void","CPMenu","unsigned"]), new objj_method(sel_getUid("menuForSegment:"), function $CPSegmentedControl__menuForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "menu"); +} +},["CPMenu","unsigned"]), new objj_method(sel_getUid("setSelected:forSegment:"), function $CPSegmentedControl__setSelected_forSegment_(self, _cmd, isSelected, aSegment) +{ with(self) +{ + var segment = _segments[aSegment]; + if (objj_msgSend(segment, "selected") == isSelected) + return; + objj_msgSend(segment, "setSelected:", isSelected); + _themeStates[aSegment] = isSelected ? CPThemeStateSelected : CPThemeStateNormal; + if (isSelected) + { + var oldSelectedSegment = _selectedSegment; + _selectedSegment = aSegment; + if (_trackingMode == CPSegmentSwitchTrackingSelectOne && oldSelectedSegment != aSegment && oldSelectedSegment != -1) + { + objj_msgSend(_segments[oldSelectedSegment], "setSelected:", NO); + _themeStates[oldSelectedSegment] = CPThemeStateNormal; + objj_msgSend(self, "drawSegmentBezel:highlight:", oldSelectedSegment, NO); + } + } + if (_trackingMode != CPSegmentSwitchTrackingMomentary) + objj_msgSend(self, "drawSegmentBezel:highlight:", aSegment, NO); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","BOOL","unsigned"]), new objj_method(sel_getUid("isSelectedForSegment:"), function $CPSegmentedControl__isSelectedForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "selected"); +} +},["BOOL","unsigned"]), new objj_method(sel_getUid("setEnabled:forSegment:"), function $CPSegmentedControl__setEnabled_forSegment_(self, _cmd, isEnabled, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setEnabled:", isEnabled); + if (isEnabled) + _themeStates[aSegment] &= ~CPThemeStateDisabled; + else + _themeStates[aSegment] |= CPThemeStateDisabled; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","BOOL","unsigned"]), new objj_method(sel_getUid("isEnabledForSegment:"), function $CPSegmentedControl__isEnabledForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "enabled"); +} +},["BOOL","unsigned"]), new objj_method(sel_getUid("setTag:forSegment:"), function $CPSegmentedControl__setTag_forSegment_(self, _cmd, aTag, aSegment) +{ with(self) +{ + objj_msgSend(_segments[aSegment], "setTag:", aTag); +} +},["void","int","unsigned"]), new objj_method(sel_getUid("tagForSegment:"), function $CPSegmentedControl__tagForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(_segments[aSegment], "tag"); +} +},["int","unsigned"]), new objj_method(sel_getUid("drawSegmentBezel:highlight:"), function $CPSegmentedControl__drawSegmentBezel_highlight_(self, _cmd, aSegment, shouldHighlight) +{ with(self) +{ + if (shouldHighlight) + _themeStates[aSegment] |= CPThemeStateHighlighted; + else + _themeStates[aSegment] &= ~CPThemeStateHighlighted; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","int","BOOL"]), new objj_method(sel_getUid("_leftOffsetForSegment:"), function $CPSegmentedControl___leftOffsetForSegment_(self, _cmd, segment) +{ with(self) +{ + var bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"); + if (segment == 0) + return bezelInset.left; + var thickness = objj_msgSend(self, "currentValueForThemeAttribute:", "divider-thickness"); + return objj_msgSend(self, "_leftOffsetForSegment:", segment - 1) + objj_msgSend(self, "widthForSegment:", segment - 1) + thickness; +} +},["float","unsigned"]), new objj_method(sel_getUid("_indexOfLastSegment"), function $CPSegmentedControl___indexOfLastSegment(self, _cmd) +{ with(self) +{ + var lastSegmentIndex = objj_msgSend(_segments, "count") - 1; + if (lastSegmentIndex < 0) + lastSegmentIndex = 0; + return lastSegmentIndex; +} +},["unsigned"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPSegmentedControl__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + var height = objj_msgSend(self, "currentValueForThemeAttribute:", "default-height"), + contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"), + bounds = objj_msgSend(self, "bounds"); + if (aName === "left-segment-bezel") + { + return CGRectMake(bezelInset.left, bezelInset.top, contentInset.left, height); + } + else if (aName === "right-segment-bezel") + { + return CPRectMake(CGRectGetWidth(objj_msgSend(self, "bounds")) - contentInset.right, + bezelInset.top, + contentInset.right, + height); + } + else if (aName.indexOf("segment-bezel") === 0) + { + var segment = parseInt(aName.substring("segment-bezel-".length), 10), + frame = CGRectCreateCopy(objj_msgSend(_segments[segment], "frame")); + if (segment === 0) + { + frame.origin.x += contentInset.left; + frame.size.width -= contentInset.left; + } + if (segment === _segments.length - 1) + frame.size.width = CGRectGetWidth(objj_msgSend(self, "bounds")) - contentInset.right - frame.origin.x; + return frame; + } + else if (aName.indexOf("divider-bezel") === 0) + { + var segment = parseInt(aName.substring("divider-bezel-".length), 10), + width = objj_msgSend(self, "widthForSegment:", segment), + left = objj_msgSend(self, "_leftOffsetForSegment:", segment), + thickness = objj_msgSend(self, "currentValueForThemeAttribute:", "divider-thickness"); + return CGRectMake(left + width, bezelInset.top, thickness, height); + } + else if (aName.indexOf("segment-content") === 0) + { + var segment = parseInt(aName.substring("segment-content-".length), 10); + return objj_msgSend(self, "contentFrameForSegment:", segment); + } + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPSegmentedControl__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName.substring(0, "segment-content".length) == "segment-content") + return objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + return objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPSegmentedControl__layoutSubviews(self, _cmd) +{ with(self) +{ + if (_segments.length <= 0) + return; + var themeState = _themeStates[0]; + themeState |= _themeState & CPThemeStateDisabled; + var leftCapColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "left-segment-bezel-color", themeState); + var leftBezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "left-segment-bezel", CPWindowBelow, nil); + objj_msgSend(leftBezelView, "setBackgroundColor:", leftCapColor); + var themeState = _themeStates[_themeStates.length - 1]; + themeState |= _themeState & CPThemeStateDisabled; + var rightCapColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "right-segment-bezel-color", themeState); + var rightBezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "right-segment-bezel", CPWindowBelow, nil); + objj_msgSend(rightBezelView, "setBackgroundColor:", rightCapColor); + for (var i=0, count = _themeStates.length; i<count; i++) + { + var themeState = _themeStates[i]; + themeState |= _themeState & CPThemeStateDisabled; + var bezelColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "center-segment-bezel-color", themeState); + var bezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "segment-bezel-"+i, CPWindowBelow, nil); + objj_msgSend(bezelView, "setBackgroundColor:", bezelColor); + var segment = _segments[i]; + var contentView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "segment-content-"+i, CPWindowAbove, "segment-bezel-"+i); + objj_msgSend(contentView, "setText:", objj_msgSend(segment, "label")); + objj_msgSend(contentView, "setImage:", objj_msgSend(segment, "image")); + objj_msgSend(contentView, "setFont:", objj_msgSend(self, "valueForThemeAttribute:inState:", "font", themeState)); + objj_msgSend(contentView, "setTextColor:", objj_msgSend(self, "valueForThemeAttribute:inState:", "text-color", themeState)); + objj_msgSend(contentView, "setAlignment:", objj_msgSend(self, "valueForThemeAttribute:inState:", "alignment", themeState)); + objj_msgSend(contentView, "setVerticalAlignment:", objj_msgSend(self, "valueForThemeAttribute:inState:", "vertical-alignment", themeState)); + objj_msgSend(contentView, "setLineBreakMode:", objj_msgSend(self, "valueForThemeAttribute:inState:", "line-break-mode", themeState)); + objj_msgSend(contentView, "setTextShadowColor:", objj_msgSend(self, "valueForThemeAttribute:inState:", "text-shadow-color", themeState)); + objj_msgSend(contentView, "setTextShadowOffset:", objj_msgSend(self, "valueForThemeAttribute:inState:", "text-shadow-offset", themeState)); + objj_msgSend(contentView, "setImageScaling:", objj_msgSend(self, "valueForThemeAttribute:inState:", "image-scaling", themeState)); + if (objj_msgSend(segment, "image") && objj_msgSend(segment, "label")) + objj_msgSend(contentView, "setImagePosition:", objj_msgSend(self, "valueForThemeAttribute:inState:", "image-position", themeState)); + else if (objj_msgSend(segment, "image")) + objj_msgSend(contentView, "setImagePosition:", CPImageOnly); + if (i == count - 1) + continue; + var borderState = _themeStates[i] | _themeStates[i+1]; + borderState = (borderState & CPThemeStateSelected & ~CPThemeStateHighlighted) ? CPThemeStateSelected : CPThemeStateNormal; + borderState |= _themeState & CPThemeStateDisabled; + var borderColor = objj_msgSend(self, "valueForThemeAttribute:inState:", "divider-bezel-color", borderState); + var borderView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "divider-bezel-"+i, CPWindowBelow, nil); + objj_msgSend(borderView, "setBackgroundColor:", borderColor); + } +} +},["void"]), new objj_method(sel_getUid("drawSegment:highlight:"), function $CPSegmentedControl__drawSegment_highlight_(self, _cmd, aSegment, shouldHighlight) +{ with(self) +{ +} +},["void","int","BOOL"]), new objj_method(sel_getUid("tileWithChangedSegment:"), function $CPSegmentedControl__tileWithChangedSegment_(self, _cmd, aSegment) +{ with(self) +{ + if (aSegment >= _segments.length) + return; + var segment = _segments[aSegment], + segmentWidth = objj_msgSend(segment, "width"), + themeState = _themeStates[aSegment] | (_themeState & CPThemeStateDisabled), + contentInset = objj_msgSend(self, "valueForThemeAttribute:inState:", "content-inset", themeState), + font = objj_msgSend(self, "valueForThemeAttribute:inState:", "font", themeState); + if (!segmentWidth) + { + if (objj_msgSend(segment, "image") && objj_msgSend(segment, "label")) + segmentWidth = objj_msgSend(objj_msgSend(segment, "label"), "sizeWithFont:", font).width + objj_msgSend(objj_msgSend(segment, "image"), "size").width + contentInset.left + contentInset.right; + else if (segment.image) + segmentWidth = objj_msgSend(objj_msgSend(segment, "image"), "size").width + contentInset.left + contentInset.right; + else if (segment.label) + segmentWidth = objj_msgSend(objj_msgSend(segment, "label"), "sizeWithFont:", font).width + contentInset.left + contentInset.right; + else + segmentWidth = 0.0; + } + var delta = segmentWidth - CGRectGetWidth(objj_msgSend(segment, "frame")); + if (!delta) + { + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + return; + } + var frame = objj_msgSend(self, "frame"); + objj_msgSend(self, "setFrameSize:", CGSizeMake(CGRectGetWidth(frame) + delta, CGRectGetHeight(frame))); + objj_msgSend(segment, "setWidth:", segmentWidth); + objj_msgSend(segment, "setFrame:", objj_msgSend(self, "frameForSegment:", aSegment)); + var index = aSegment + 1; + for (; index < _segments.length; ++index) + { + objj_msgSend(_segments[index], "frame").origin.x += delta; + objj_msgSend(self, "drawSegmentBezel:highlight:", index, NO); + objj_msgSend(self, "drawSegment:highlight:", index, NO); + } + objj_msgSend(self, "drawSegmentBezel:highlight:", aSegment, NO); + objj_msgSend(self, "drawSegment:highlight:", aSegment, NO); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","unsigned"]), new objj_method(sel_getUid("frameForSegment:"), function $CPSegmentedControl__frameForSegment_(self, _cmd, aSegment) +{ with(self) +{ + return objj_msgSend(self, "bezelFrameForSegment:", aSegment); +} +},["CGRect","unsigned"]), new objj_method(sel_getUid("bezelFrameForSegment:"), function $CPSegmentedControl__bezelFrameForSegment_(self, _cmd, aSegment) +{ with(self) +{ + var height = objj_msgSend(self, "currentValueForThemeAttribute:", "default-height"), + bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"), + width = objj_msgSend(self, "widthForSegment:", aSegment), + left = objj_msgSend(self, "_leftOffsetForSegment:", aSegment); + return CGRectMake(left, bezelInset.top, width, height); +} +},["CGRect","unsigned"]), new objj_method(sel_getUid("contentFrameForSegment:"), function $CPSegmentedControl__contentFrameForSegment_(self, _cmd, aSegment) +{ with(self) +{ + var height = objj_msgSend(self, "currentValueForThemeAttribute:", "default-height"), + contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + width = objj_msgSend(self, "widthForSegment:", aSegment), + left = objj_msgSend(self, "_leftOffsetForSegment:", aSegment); + return CGRectMake(left + contentInset.left, contentInset.top, width - contentInset.left - contentInset.right, height - contentInset.top - contentInset.bottom); +} +},["CGRect","unsigned"]), new objj_method(sel_getUid("testSegment:"), function $CPSegmentedControl__testSegment_(self, _cmd, aPoint) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", aPoint, nil), + count = _segments.length; + while (count--) + if (CGRectContainsPoint(objj_msgSend(_segments[count], "frame"), aPoint)) + return count; + if (_segments.length) + { + var adjustedLastFrame = CGRectCreateCopy(objj_msgSend(_segments[_segments.length - 1], "frame")); + adjustedLastFrame.size.width = CGRectGetWidth(objj_msgSend(self, "bounds")) - adjustedLastFrame.origin.x; + if (CGRectContainsPoint(adjustedLastFrame, aPoint)) + return _segments.length - 1; + } + return -1; +} +},["unsigned","CGPoint"]), new objj_method(sel_getUid("mouseDown:"), function $CPSegmentedControl__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isEnabled")) + return; + objj_msgSend(self, "trackSegment:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPSegmentedControl__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackSegment:"), function $CPSegmentedControl__trackSegment_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if (type == CPLeftMouseUp) + { + if (_trackingSegment == -1) + return; + if (_trackingSegment === objj_msgSend(self, "testSegment:", location)) + { + if (_trackingMode == CPSegmentSwitchTrackingSelectAny) + { + objj_msgSend(self, "setSelected:forSegment:", !objj_msgSend(self, "isSelectedForSegment:", _trackingSegment), _trackingSegment); + _selectedSegment = _trackingSegment; + } + else + objj_msgSend(self, "setSelected:forSegment:", YES, _trackingSegment); + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + if (_trackingMode == CPSegmentSwitchTrackingMomentary) + { + objj_msgSend(self, "setSelected:forSegment:", NO, _trackingSegment); + _selectedSegment = -1; + } + } + objj_msgSend(self, "drawSegmentBezel:highlight:", _trackingSegment, NO); + _trackingSegment = -1; + return; + } + if (type == CPLeftMouseDown) + { + var trackingSegment = objj_msgSend(self, "testSegment:", location); + if (trackingSegment > -1 && objj_msgSend(self, "isEnabledForSegment:", trackingSegment)) + { + _trackingHighlighted = YES; + _trackingSegment = trackingSegment; + objj_msgSend(self, "drawSegmentBezel:highlight:", _trackingSegment, YES); + } + } + else if (type == CPLeftMouseDragged) + { + if (_trackingSegment == -1) + return; + var highlighted = objj_msgSend(self, "testSegment:", location) === _trackingSegment; + if (highlighted != _trackingHighlighted) + { + _trackingHighlighted = highlighted; + objj_msgSend(self, "drawSegmentBezel:highlight:", _trackingSegment, _trackingHighlighted); + } + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackSegment:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setFont:"), function $CPSegmentedControl__setFont_(self, _cmd, aFont) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "setFont:", aFont); + objj_msgSend(self, "tileWithChangedSegment:", 0); +} +},["void","CPFont"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPSegmentedControl__themeClass(self, _cmd) +{ with(self) +{ + return "segmented-control"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPSegmentedControl__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [CPCenterTextAlignment, CPCenterVerticalTextAlignment, CPImageLeft, CPScaleNone, { top:(0), right:(0), bottom:(0), left:(0) }, { top:(0), right:(0), bottom:(0), left:(0) }, objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), 1.0, 24.0], ["alignment", "vertical-alignment", "image-position", "image-scaling", "bezel-inset", "content-inset", "left-segment-bezel-color", "right-segment-bezel-color", "center-segment-bezel-color", "divider-bezel-color", "divider-thickness", "default-height"]); +} +},["id"])]); +} +var CPSegmentedControlSegmentsKey = "CPSegmentedControlSegmentsKey", + CPSegmentedControlSelectedKey = "CPSegmentedControlSelectedKey", + CPSegmentedControlSegmentStyleKey = "CPSegmentedControlSegmentStyleKey", + CPSegmentedControlTrackingModeKey = "CPSegmentedControlTrackingModeKey"; +{ +var the_class = objj_getClass("CPSegmentedControl") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSegmentedControl\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPSegmentedControl__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "initWithCoder:", aCoder); + if (self) + { + var frame = objj_msgSend(self, "frame"), + originalWidth = frame.size.width; + frame.size.width = 0; + objj_msgSend(self, "setFrame:", frame); + _segments = objj_msgSend(aCoder, "decodeObjectForKey:", CPSegmentedControlSegmentsKey); + _segmentStyle = objj_msgSend(aCoder, "decodeIntForKey:", CPSegmentedControlSegmentStyleKey); + _themeStates = []; + if (objj_msgSend(aCoder, "containsValueForKey:", CPSegmentedControlSelectedKey)) + _selectedSegment = objj_msgSend(aCoder, "decodeIntForKey:", CPSegmentedControlSelectedKey); + else + _selectedSegment = -1; + if (objj_msgSend(aCoder, "containsValueForKey:", CPSegmentedControlTrackingModeKey)) + _trackingMode = objj_msgSend(aCoder, "decodeIntForKey:", CPSegmentedControlTrackingModeKey); + else + _trackingMode = CPSegmentSwitchTrackingSelectOne; + for (var i = 0; i < _segments.length; i++) + { + _themeStates[i] = objj_msgSend(_segments[i], "selected") ? CPThemeStateSelected : CPThemeStateNormal; + objj_msgSend(self, "tileWithChangedSegment:", i); + } + var difference = MAX(originalWidth - objj_msgSend(self, "frame").size.width, 0.0), + remainingWidth = FLOOR(difference / _segments.length); + for (var i=0; i < _segments.length; i++) + objj_msgSend(self, "setWidth:forSegment:", objj_msgSend(_segments[i], "width") + remainingWidth, i); + objj_msgSend(self, "tileWithChangedSegment:", 0); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPSegmentedControl__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSegmentedControl").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _segments, CPSegmentedControlSegmentsKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _selectedSegment, CPSegmentedControlSelectedKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _segmentStyle, CPSegmentedControlSegmentStyleKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _trackingMode, CPSegmentedControlTrackingModeKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPSegmentItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("image"), new objj_ivar("label"), new objj_ivar("menu"), new objj_ivar("selected"), new objj_ivar("enabled"), new objj_ivar("tag"), new objj_ivar("width"), new objj_ivar("frame")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("image"), function $_CPSegmentItem__image(self, _cmd) +{ with(self) +{ +return image; +} +},["id"]), +new objj_method(sel_getUid("setImage:"), function $_CPSegmentItem__setImage_(self, _cmd, newValue) +{ with(self) +{ +image = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("label"), function $_CPSegmentItem__label(self, _cmd) +{ with(self) +{ +return label; +} +},["id"]), +new objj_method(sel_getUid("setLabel:"), function $_CPSegmentItem__setLabel_(self, _cmd, newValue) +{ with(self) +{ +label = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("menu"), function $_CPSegmentItem__menu(self, _cmd) +{ with(self) +{ +return menu; +} +},["id"]), +new objj_method(sel_getUid("setMenu:"), function $_CPSegmentItem__setMenu_(self, _cmd, newValue) +{ with(self) +{ +menu = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("selected"), function $_CPSegmentItem__selected(self, _cmd) +{ with(self) +{ +return selected; +} +},["id"]), +new objj_method(sel_getUid("setSelected:"), function $_CPSegmentItem__setSelected_(self, _cmd, newValue) +{ with(self) +{ +selected = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("enabled"), function $_CPSegmentItem__enabled(self, _cmd) +{ with(self) +{ +return enabled; +} +},["id"]), +new objj_method(sel_getUid("setEnabled:"), function $_CPSegmentItem__setEnabled_(self, _cmd, newValue) +{ with(self) +{ +enabled = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("tag"), function $_CPSegmentItem__tag(self, _cmd) +{ with(self) +{ +return tag; +} +},["id"]), +new objj_method(sel_getUid("setTag:"), function $_CPSegmentItem__setTag_(self, _cmd, newValue) +{ with(self) +{ +tag = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("width"), function $_CPSegmentItem__width(self, _cmd) +{ with(self) +{ +return width; +} +},["id"]), +new objj_method(sel_getUid("setWidth:"), function $_CPSegmentItem__setWidth_(self, _cmd, newValue) +{ with(self) +{ +width = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("frame"), function $_CPSegmentItem__frame(self, _cmd) +{ with(self) +{ +return frame; +} +},["id"]), +new objj_method(sel_getUid("setFrame:"), function $_CPSegmentItem__setFrame_(self, _cmd, newValue) +{ with(self) +{ +frame = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $_CPSegmentItem__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPSegmentItem").super_class }, "init")) + { + image = nil; + label = ""; + menu = nil; + selected = NO; + enabled = YES; + tag = -1; + width = 0; + frame = CGRectMakeZero(); + } + return self; +} +},["id"])]); +} +var CPSegmentItemImageKey = "CPSegmentItemImageKey", + CPSegmentItemLabelKey = "CPSegmentItemLabelKey", + CPSegmentItemMenuKey = "CPSegmentItemMenuKey", + CPSegmentItemSelectedKey = "CPSegmentItemSelectedKey", + CPSegmentItemEnabledKey = "CPSegmentItemEnabledKey", + CPSegmentItemTagKey = "CPSegmentItemTagKey", + CPSegmentItemWidthKey = "CPSegmentItemWidthKey"; +{ +var the_class = objj_getClass("_CPSegmentItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPSegmentItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPSegmentItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPSegmentItem").super_class }, "init"); + if (self) + { + image = objj_msgSend(aCoder, "decodeObjectForKey:", CPSegmentItemImageKey); + label = objj_msgSend(aCoder, "decodeObjectForKey:", CPSegmentItemLabelKey); + menu = objj_msgSend(aCoder, "decodeObjectForKey:", CPSegmentItemMenuKey); + selected = objj_msgSend(aCoder, "decodeBoolForKey:", CPSegmentItemSelectedKey); + enabled = objj_msgSend(aCoder, "decodeBoolForKey:", CPSegmentItemEnabledKey); + tag = objj_msgSend(aCoder, "decodeIntForKey:", CPSegmentItemTagKey); + width = objj_msgSend(aCoder, "decodeFloatForKey:", CPSegmentItemWidthKey); + frame = CGRectMakeZero(); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPSegmentItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", image, CPSegmentItemImageKey); + objj_msgSend(aCoder, "encodeObject:forKey:", label, CPSegmentItemLabelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", menu, CPSegmentItemMenuKey); + objj_msgSend(aCoder, "encodeBool:forKey:", selected, CPSegmentItemSelectedKey); + objj_msgSend(aCoder, "encodeBool:forKey:", enabled, CPSegmentItemEnabledKey); + objj_msgSend(aCoder, "encodeInt:forKey:", tag, CPSegmentItemTagKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", width, CPSegmentItemWidthKey); +} +},["void","CPCoder"])]); +} + +p;10;CPShadow.jt;1965;@STATIC;1.0;I;21;Foundation/CPObject.jt;1920;objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPShadow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_offset"), new objj_ivar("_blurRadius"), new objj_ivar("_color"), new objj_ivar("_cssString")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_initWithOffset:blurRadius:color:"), function $CPShadow___initWithOffset_blurRadius_color_(self, _cmd, anOffset, aBlurRadius, aColor) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPShadow").super_class }, "init"); + if (self) + { + _offset = anOffset; + _blurRadius = aBlurRadius; + _color = aColor; + _cssString = objj_msgSend(_color, "cssString") + " " + Math.round(anOffset.width) + "px " + Math.round(anOffset.height) + "px " + Math.round(_blurRadius) + "px"; + } + return self; +} +},["id","CPSize","float","CPColor"]), new objj_method(sel_getUid("shadowOffset"), function $CPShadow__shadowOffset(self, _cmd) +{ with(self) +{ + return _offset; +} +},["CGSize"]), new objj_method(sel_getUid("shadowBlurRadius"), function $CPShadow__shadowBlurRadius(self, _cmd) +{ with(self) +{ + return _blurRadius; +} +},["float"]), new objj_method(sel_getUid("shadowColor"), function $CPShadow__shadowColor(self, _cmd) +{ with(self) +{ + return _color; +} +},["CPColor"]), new objj_method(sel_getUid("cssString"), function $CPShadow__cssString(self, _cmd) +{ with(self) +{ + return _cssString; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("shadowWithOffset:blurRadius:color:"), function $CPShadow__shadowWithOffset_blurRadius_color_(self, _cmd, anOffset, aBlurRadius, aColor) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPShadow, "alloc"), "_initWithOffset:blurRadius:color:", anOffset, aBlurRadius, aColor); +} +},["id","CGSize","float","CPColor"])]); +} + +p;14;CPShadowView.jt;9679;@STATIC;1.0;I;21;Foundation/CPBundle.ji;12;CGGeometry.ji;9;CPImage.ji;13;CPImageView.ji;8;CPView.jt;9574;objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPImageView.j", YES); +objj_executeFile("CPView.j", YES); +CPLightShadow = 0; +CPHeavyShadow = 1; +var CPShadowViewLightBackgroundColor = nil, + CPShadowViewHeavyBackgroundColor = nil; +var LIGHT_LEFT_INSET = 3.0, + LIGHT_RIGHT_INSET = 3.0, + LIGHT_TOP_INSET = 3.0, + LIGHT_BOTTOM_INSET = 5.0, + HEAVY_LEFT_INSET = 7.0, + HEAVY_RIGHT_INSET = 7.0, + HEAVY_TOP_INSET = 5.0, + HEAVY_BOTTOM_INSET = 5.0; +{var the_class = objj_allocateClassPair(CPView, "CPShadowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_weight")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPShadowView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPShadowView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _weight = CPLightShadow; + objj_msgSend(self, "setBackgroundColor:", CPShadowViewLightBackgroundColor); + objj_msgSend(self, "setHitTests:", NO); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setWeight:"), function $CPShadowView__setWeight_(self, _cmd, aWeight) +{ with(self) +{ + if (_weight == aWeight) + return; + _weight = aWeight; + if (_weight == CPLightShadow) + objj_msgSend(self, "setBackgroundColor:", CPShadowViewLightBackgroundColor); + else + objj_msgSend(self, "setBackgroundColor:", CPShadowViewHeavyBackgroundColor); +} +},["void","CPShadowWeight"]), new objj_method(sel_getUid("leftInset"), function $CPShadowView__leftInset(self, _cmd) +{ with(self) +{ + return _weight == CPLightShadow ? LIGHT_LEFT_INSET : HEAVY_LEFT_INSET; +} +},["float"]), new objj_method(sel_getUid("rightInset"), function $CPShadowView__rightInset(self, _cmd) +{ with(self) +{ + return _weight == CPLightShadow ? LIGHT_RIGHT_INSET : HEAVY_RIGHT_INSET; +} +},["float"]), new objj_method(sel_getUid("topInset"), function $CPShadowView__topInset(self, _cmd) +{ with(self) +{ + return _weight == CPLightShadow ? LIGHT_TOP_INSET : HEAVY_TOP_INSET; +} +},["float"]), new objj_method(sel_getUid("bottomInset"), function $CPShadowView__bottomInset(self, _cmd) +{ with(self) +{ + return _weight == CPLightShadow ? LIGHT_BOTTOM_INSET : HEAVY_BOTTOM_INSET; +} +},["float"]), new objj_method(sel_getUid("horizontalInset"), function $CPShadowView__horizontalInset(self, _cmd) +{ with(self) +{ + if (_weight == CPLightShadow) + return LIGHT_LEFT_INSET + LIGHT_RIGHT_INSET; + return HEAVY_LEFT_INSET + HEAVY_RIGHT_INSET; +} +},["float"]), new objj_method(sel_getUid("verticalInset"), function $CPShadowView__verticalInset(self, _cmd) +{ with(self) +{ + if (_weight == CPLightShadow) + return LIGHT_TOP_INSET + LIGHT_BOTTOM_INSET; + return HEAVY_TOP_INSET + HEAVY_BOTTOM_INSET; +} +},["float"]), new objj_method(sel_getUid("frameForContentFrame:"), function $CPShadowView__frameForContentFrame_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "frameForContentFrame:withWeight:", aFrame, _weight); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("setFrameForContentFrame:"), function $CPShadowView__setFrameForContentFrame_(self, _cmd, aFrame) +{ with(self) +{ + objj_msgSend(self, "setFrame:", objj_msgSend(self, "frameForContentFrame:", aFrame)); +} +},["void","CGRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPShadowView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPShadowView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(self, "class")); + CPShadowViewLightBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightTopLeft.png"), CGSizeMake(9.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightTop.png"), CGSizeMake(1.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightTopRight.png"), CGSizeMake(9.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightLeft.png"), CGSizeMake(9.0, 1.0)), + nil, + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightRight.png"), CGSizeMake(9.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightBottomLeft.png"), CGSizeMake(9.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightBottom.png"), CGSizeMake(1.0, 9.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewLightBottomRight.png"), CGSizeMake(9.0, 9.0)) + ])); + CPShadowViewHeavyBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyTopLeft.png"), CGSizeMake(17.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyTop.png"), CGSizeMake(1.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyTopRight.png"), CGSizeMake(17.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyLeft.png"), CGSizeMake(17.0, 1.0)), + nil, + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyRight.png"), CGSizeMake(17.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyBottomLeft.png"), CGSizeMake(17.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyBottom.png"), CGSizeMake(1.0, 17.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPShadowView/CPShadowViewHeavyBottomRight.png"), CGSizeMake(17.0, 17.0)) + ])); +} +},["void"]), new objj_method(sel_getUid("shadowViewEnclosingView:"), function $CPShadowView__shadowViewEnclosingView_(self, _cmd, aView) +{ with(self) +{ + return objj_msgSend(self, "shadowViewEnclosingView:withWeight:", aView, CPLightShadow); +} +},["id","CPView"]), new objj_method(sel_getUid("shadowViewEnclosingView:withWeight:"), function $CPShadowView__shadowViewEnclosingView_withWeight_(self, _cmd, aView, aWeight) +{ with(self) +{ + var shadowView = objj_msgSend(objj_msgSend(CPShadowView, "alloc"), "initWithFrame:", objj_msgSend(aView, "frame")); + objj_msgSend(shadowView, "setWeight:", aWeight); + var size = objj_msgSend(shadowView, "frame").size, + width = size.width - objj_msgSend(shadowView, "leftInset") - objj_msgSend(shadowView, "rightInset"), + height = size.height - objj_msgSend(shadowView, "topInset") - objj_msgSend(shadowView, "bottomInset"), + enclosingView = objj_msgSend(aView, "superview"); + objj_msgSend(shadowView, "setHitTests:", objj_msgSend(aView, "hitTests")); + objj_msgSend(shadowView, "setAutoresizingMask:", objj_msgSend(aView, "autoresizingMask")); + objj_msgSend(aView, "removeFromSuperview"); + objj_msgSend(shadowView, "addSubview:", aView); + objj_msgSend(aView, "setFrame:", CGRectMake(objj_msgSend(shadowView, "leftInset"), objj_msgSend(shadowView, "topInset"), width, height)) + objj_msgSend(enclosingView, "addSubview:", shadowView); + return shadowView; +} +},["id","CPView","CPShadowWeight"]), new objj_method(sel_getUid("frameForContentFrame:withWeight:"), function $CPShadowView__frameForContentFrame_withWeight_(self, _cmd, aFrame, aWeight) +{ with(self) +{ + if (aWeight == CPLightShadow) + return CGRectMake((aFrame.origin.x) - LIGHT_LEFT_INSET, (aFrame.origin.y) - LIGHT_TOP_INSET, (aFrame.size.width) + LIGHT_LEFT_INSET + LIGHT_RIGHT_INSET, (aFrame.size.height) + LIGHT_TOP_INSET + LIGHT_BOTTOM_INSET); + else + return CGRectMake((aFrame.origin.x) - HEAVY_LEFT_INSET, (aFrame.origin.y) - HEAVY_TOP_INSET, (aFrame.size.width) + HEAVY_LEFT_INSET + HEAVY_RIGHT_INSET, (aFrame.size.height) + HEAVY_TOP_INSET + HEAVY_BOTTOM_INSET); +} +},["CGRect","CGRect","CPShadowWeight"])]); +} + +p;10;CPSlider.jt;16903;@STATIC;1.0;i;11;CPControl.jt;16867;objj_executeFile("CPControl.j", YES); +CPLinearSlider = 0; +CPCircularSlider = 1; +{var the_class = objj_allocateClassPair(CPControl, "CPSlider"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_minValue"), new objj_ivar("_maxValue"), new objj_ivar("_altIncrementValue"), new objj_ivar("_isVertical")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPSlider__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "initWithFrame:", aFrame); + if (self) + { + _minValue = 0.0; + _maxValue = 100.0; + objj_msgSend(self, "setObjectValue:", 50.0); + objj_msgSend(self, "setContinuous:", YES); + objj_msgSend(self, "_recalculateIsVertical"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setMinValue:"), function $CPSlider__setMinValue_(self, _cmd, aMinimumValue) +{ with(self) +{ + if (_minValue === aMinimumValue) + return; + _minValue = aMinimumValue; + var doubleValue = objj_msgSend(self, "doubleValue"); + if (doubleValue < _minValue) + objj_msgSend(self, "setDoubleValue:", _minValue); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float"]), new objj_method(sel_getUid("minValue"), function $CPSlider__minValue(self, _cmd) +{ with(self) +{ + return _minValue; +} +},["float"]), new objj_method(sel_getUid("setMaxValue:"), function $CPSlider__setMaxValue_(self, _cmd, aMaximumValue) +{ with(self) +{ + if (_maxValue === aMaximumValue) + return; + _maxValue = aMaximumValue; + var doubleValue = objj_msgSend(self, "doubleValue"); + if (doubleValue > _maxValue) + objj_msgSend(self, "setDoubleValue:", _maxValue); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float"]), new objj_method(sel_getUid("maxValue"), function $CPSlider__maxValue(self, _cmd) +{ with(self) +{ + return _maxValue; +} +},["float"]), new objj_method(sel_getUid("setObjectValue:"), function $CPSlider__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "setObjectValue:", MIN(MAX(aValue, _minValue), _maxValue)); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","id"]), new objj_method(sel_getUid("setSliderType:"), function $CPSlider__setSliderType_(self, _cmd, aSliderType) +{ with(self) +{ + if (aSliderType === CPCircularSlider) + objj_msgSend(self, "setThemeState:", CPThemeStateCircular); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateCircular); +} +},["void","CPSliderType"]), new objj_method(sel_getUid("sliderType"), function $CPSlider__sliderType(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateCircular) ? CPCircularSlider : CPLinearSlider; +} +},["CPSliderType"]), new objj_method(sel_getUid("trackRectForBounds:"), function $CPSlider__trackRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + if (objj_msgSend(self, "hasThemeState:", CPThemeStateCircular)) + { + var originalBounds = CGRectCreateCopy(bounds); + bounds.size.width = MIN(bounds.size.width, bounds.size.height); + bounds.size.height = bounds.size.width; + if (bounds.size.width < originalBounds.size.width) + bounds.origin.x += (originalBounds.size.width - bounds.size.width) / 2.0; + else + bounds.origin.y += (originalBounds.size.height - bounds.size.height) / 2.0; + } + else + { + var trackWidth = objj_msgSend(self, "currentValueForThemeAttribute:", "track-width"); + if (trackWidth <= 0) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if (objj_msgSend(self, "isVertical")) + { + bounds.origin.x = ((bounds.size.width) - trackWidth) / 2.0; + bounds.size.width = trackWidth; + } + else + { + bounds.origin.y = ((bounds.size.height) - trackWidth) / 2.0; + bounds.size.height = trackWidth; + } + } + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("knobRectForBounds:"), function $CPSlider__knobRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var knobSize = objj_msgSend(self, "currentValueForThemeAttribute:", "knob-size"); + if (knobSize.width <= 0 || knobSize.height <= 0) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var knobRect = { origin: { x:0.0, y:0.0 }, size: { width:knobSize.width, height:knobSize.height } }, + trackRect = objj_msgSend(self, "trackRectForBounds:", bounds); + if (!trackRect || (trackRect.size.width <= 0.0 || trackRect.size.height <= 0.0)) + trackRect = bounds; + if (objj_msgSend(self, "hasThemeState:", CPThemeStateCircular)) + { + var angle = 3*PI_2 - (1.0 - objj_msgSend(self, "doubleValue") - _minValue) / (_maxValue - _minValue) * PI2, + radius = CGRectGetWidth(trackRect) / 2.0 - 8.0; + knobRect.origin.x = radius * COS(angle) + CGRectGetMidX(trackRect) - 3.0; + knobRect.origin.y = radius * SIN(angle) + CGRectGetMidY(trackRect) - 2.0; + } + else if (objj_msgSend(self, "isVertical")) + { + knobRect.origin.x = (trackRect.origin.x + (trackRect.size.width) / 2.0) - knobSize.width / 2.0; + knobRect.origin.y = ((_maxValue - objj_msgSend(self, "doubleValue")) / (_maxValue - _minValue)) * ((trackRect.size.height) - knobSize.height); + } + else + { + knobRect.origin.x = ((objj_msgSend(self, "doubleValue") - _minValue) / (_maxValue - _minValue)) * ((trackRect.size.width) - knobSize.width); + knobRect.origin.y = (trackRect.origin.y + (trackRect.size.height) / 2.0) - knobSize.height / 2.0; + } + return knobRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPSlider__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "track-view") + return objj_msgSend(self, "trackRectForBounds:", objj_msgSend(self, "bounds")); + else if (aName === "knob-view") + return objj_msgSend(self, "knobRectForBounds:", objj_msgSend(self, "bounds")); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPSlider__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "track-view" || aName === "knob-view") + { + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "init"); + objj_msgSend(view, "setHitTests:", NO); + return view; + } + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "createEphemeralSubviewNamed:", aName); +} +},["CPView","CPString"]), new objj_method(sel_getUid("setAltIncrementValue:"), function $CPSlider__setAltIncrementValue_(self, _cmd, anAltIncrementValue) +{ with(self) +{ + _altIncrementValue = anAltIncrementValue; +} +},["void","float"]), new objj_method(sel_getUid("altIncrementValue"), function $CPSlider__altIncrementValue(self, _cmd) +{ with(self) +{ + return _altIncrementValue; +} +},["float"]), new objj_method(sel_getUid("setFrameSize:"), function $CPSlider__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "_recalculateIsVertical"); +} +},["void","CGSize"]), new objj_method(sel_getUid("_recalculateIsVertical"), function $CPSlider___recalculateIsVertical(self, _cmd) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + width = (bounds.size.width), + height = (bounds.size.height); + _isVertical = width < height ? 1 : (width > height ? 0 : -1); + if (_isVertical === 1) + objj_msgSend(self, "setThemeState:", CPThemeStateVertical); + else if (_isVertical === 0) + objj_msgSend(self, "unsetThemeState:", CPThemeStateVertical); +} +},["void"]), new objj_method(sel_getUid("isVertical"), function $CPSlider__isVertical(self, _cmd) +{ with(self) +{ + return _isVertical; +} +},["int"]), new objj_method(sel_getUid("layoutSubviews"), function $CPSlider__layoutSubviews(self, _cmd) +{ with(self) +{ + var trackView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "track-view", CPWindowBelow, "knob-view"); + if (trackView) + objj_msgSend(trackView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "track-color")); + var knobView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "knob-view", CPWindowAbove, "track-view"); + if (knobView) + objj_msgSend(knobView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "knob-color")); +} +},["void"]), new objj_method(sel_getUid("tracksMouseOutsideOfFrame"), function $CPSlider__tracksMouseOutsideOfFrame(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("_valueAtPoint:"), function $CPSlider___valueAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + knobRect = objj_msgSend(self, "knobRectForBounds:", bounds), + trackRect = objj_msgSend(self, "trackRectForBounds:", bounds); + if (objj_msgSend(self, "hasThemeState:", CPThemeStateCircular)) + { + var knobWidth = (knobRect.size.width); + trackRect.origin.x += knobWidth / 2; + trackRect.size.width -= knobWidth; + var minValue = objj_msgSend(self, "minValue"), + dx = aPoint.x - (trackRect.origin.x + (trackRect.size.width) / 2.0), + dy = aPoint.y - (trackRect.origin.y + (trackRect.size.height) / 2.0); + return MAX(0.0, MIN(1.0, 1.0 - (3 * PI_2 - ATAN2(dy, dx)) % PI2 / PI2)) * (objj_msgSend(self, "maxValue") - minValue) + minValue; + } + else if (objj_msgSend(self, "isVertical")) + { + var knobHeight = (knobRect.size.height); + trackRect.origin.y += knobHeight / 2; + trackRect.size.height -= knobHeight; + var minValue = objj_msgSend(self, "minValue"); + return MAX(0.0, MIN(1.0, ((trackRect.origin.y + trackRect.size.height) - aPoint.y) / (trackRect.size.height))) * (objj_msgSend(self, "maxValue") - minValue) + minValue; + } + else + { + var knobWidth = (knobRect.size.width); + trackRect.origin.x += knobWidth / 2; + trackRect.size.width -= knobWidth; + var minValue = objj_msgSend(self, "minValue"); + return MAX(0.0, MIN(1.0, (aPoint.x - (trackRect.origin.x)) / (trackRect.size.width))) * (objj_msgSend(self, "maxValue") - minValue) + minValue; + } +} +},["float","CGPoint"]), new objj_method(sel_getUid("startTrackingAt:"), function $CPSlider__startTrackingAt_(self, _cmd, aPoint) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + knobRect = objj_msgSend(self, "knobRectForBounds:", { origin: { x:bounds.origin.x, y:bounds.origin.y }, size: { width:bounds.size.width, height:bounds.size.height } }); + if ((aPoint.x >= (knobRect.origin.x) && aPoint.y >= (knobRect.origin.y) && aPoint.x < (knobRect.origin.x + knobRect.size.width) && aPoint.y < (knobRect.origin.y + knobRect.size.height))) + _dragOffset = { width:(knobRect.origin.x + (knobRect.size.width) / 2.0) - aPoint.x, height:(knobRect.origin.y + (knobRect.size.height) / 2.0) - aPoint.y }; + else + { + var trackRect = objj_msgSend(self, "trackRectForBounds:", bounds); + if (trackRect && (aPoint.x >= (trackRect.origin.x) && aPoint.y >= (trackRect.origin.y) && aPoint.x < (trackRect.origin.x + trackRect.size.width) && aPoint.y < (trackRect.origin.y + trackRect.size.height))) + { + _dragOffset = { width:0.0, height:0.0 }; + objj_msgSend(self, "setObjectValue:", objj_msgSend(self, "_valueAtPoint:", aPoint)); + } + else + return NO; + } + objj_msgSend(self, "setHighlighted:", YES); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + return YES; +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("continueTracking:at:"), function $CPSlider__continueTracking_at_(self, _cmd, lastPoint, aPoint) +{ with(self) +{ + objj_msgSend(self, "setObjectValue:", objj_msgSend(self, "_valueAtPoint:", { x:aPoint.x + _dragOffset.width, y:aPoint.y + _dragOffset.height })); + return YES; +} +},["BOOL","CGPoint","CGPoint"]), new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"), function $CPSlider__stopTracking_at_mouseIsUp_(self, _cmd, lastPoint, aPoint, mouseIsUp) +{ with(self) +{ + objj_msgSend(self, "setHighlighted:", NO); + if (objj_msgSend(_target, "respondsToSelector:", sel_getUid("sliderDidFinish:"))) + objj_msgSend(_target, "sliderDidFinish:", self); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CGPoint","CGPoint","BOOL"]), new objj_method(sel_getUid("setContinuous:"), function $CPSlider__setContinuous_(self, _cmd, flag) +{ with(self) +{ + if (flag) + _sendActionOn |= CPLeftMouseDraggedMask; + else + _sendActionOn &= ~CPLeftMouseDraggedMask; +} +},["void","BOOL"]), new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"), function $CPSlider__takeValueFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + var count = objects.length, + value = objj_msgSend(objects[0], "valueForKeyPath:", aKeyPath); + objj_msgSend(self, "setObjectValue:", value); + while (count-- > 1) + if (value !== (objj_msgSend(objects[count], "valueForKeyPath:", aKeyPath))) + return objj_msgSend(self, "setFloatValue:", 1.0); +} +},["void","CPString","CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPSlider__themeClass(self, _cmd) +{ with(self) +{ + return "slider"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPSlider__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), { width:0.0, height:0.0 }, 0.0, objj_msgSend(CPNull, "null")], ["knob-color", "knob-size", "track-width", "track-color"]); +} +},["id"])]); +} +var CPSliderMinValueKey = "CPSliderMinValueKey", + CPSliderMaxValueKey = "CPSliderMaxValueKey", + CPSliderAltIncrValueKey = "CPSliderAltIncrValueKey"; +{ +var the_class = objj_getClass("CPSlider") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPSlider__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + _minValue = objj_msgSend(aCoder, "decodeDoubleForKey:", CPSliderMinValueKey); + _maxValue = objj_msgSend(aCoder, "decodeDoubleForKey:", CPSliderMaxValueKey); + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "initWithCoder:", aCoder); + if (self) + { + _altIncrementValue = objj_msgSend(aCoder, "decodeDoubleForKey:", CPSliderAltIncrValueKey); + objj_msgSend(self, "setContinuous:", YES); + objj_msgSend(self, "_recalculateIsVertical"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPSlider__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSlider").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeDouble:forKey:", _minValue, CPSliderMinValueKey); + objj_msgSend(aCoder, "encodeDouble:forKey:", _maxValue, CPSliderMaxValueKey); + objj_msgSend(aCoder, "encodeDouble:forKey:", _altIncrementValue, CPSliderAltIncrValueKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPSlider") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSlider\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("value"), function $CPSlider__value(self, _cmd) +{ with(self) +{ + CPLog.warn("[CPSlider value] is deprecated, use doubleValue or objectValue instead."); + return objj_msgSend(self, "doubleValue"); +} +},["id"]), new objj_method(sel_getUid("setValue:"), function $CPSlider__setValue_(self, _cmd, aValue) +{ with(self) +{ + CPLog.warn("[CPSlider setValue:] is deprecated, use setDoubleValue: or setObjectValue: instead."); + objj_msgSend(self, "setObjectValue:", aValue); +} +},["void","id"])]); +} + +p;21;CPSliderColorPicker.jt;17653;@STATIC;1.0;i;15;CPColorPicker.jt;17613;objj_executeFile("CPColorPicker.j", YES); +{var the_class = objj_allocateClassPair(CPColorPicker, "CPSliderColorPicker"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_contentView"), new objj_ivar("_redSlider"), new objj_ivar("_greenSlider"), new objj_ivar("_blueSlider"), new objj_ivar("_hueSlider"), new objj_ivar("_saturationSlider"), new objj_ivar("_brightnessSlider"), new objj_ivar("_rgbLabel"), new objj_ivar("_hsbLabel"), new objj_ivar("_redLabel"), new objj_ivar("_greenLabel"), new objj_ivar("_blueLabel"), new objj_ivar("_hueLabel"), new objj_ivar("_saturationLabel"), new objj_ivar("_brightnessLabel"), new objj_ivar("_hexLabel"), new objj_ivar("_hexValue"), new objj_ivar("_hexValue"), new objj_ivar("_redValue"), new objj_ivar("_greenValue"), new objj_ivar("_blueValue"), new objj_ivar("_hueValue"), new objj_ivar("_saturationValue"), new objj_ivar("_brightnessValue")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithPickerMask:colorPanel:"), function $CPSliderColorPicker__initWithPickerMask_colorPanel_(self, _cmd, mask, owningColorPanel) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSliderColorPicker").super_class }, "initWithPickerMask:colorPanel:", mask, owningColorPanel); +} +},["id","int","CPColorPanel"]), new objj_method(sel_getUid("initView"), function $CPSliderColorPicker__initView(self, _cmd) +{ with(self) +{ + aFrame = CPRectMake(0, 0, CPColorPickerViewWidth, CPColorPickerViewHeight); + _contentView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", aFrame); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + _rgbLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 10, 100, 20)); + objj_msgSend(_rgbLabel, "setStringValue:", "Red, Green, Blue"); + objj_msgSend(_rgbLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _redLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 35, 15, 20)); + objj_msgSend(_redLabel, "setStringValue:", "R"); + objj_msgSend(_redLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _redSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 35, aFrame.size.width - 70, 20)); + objj_msgSend(_redSlider, "setMaxValue:", 1.0); + objj_msgSend(_redSlider, "setMinValue:", 0.0); + objj_msgSend(_redSlider, "setTarget:", self); + objj_msgSend(_redSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_redSlider, "setAutoresizingMask:", CPViewWidthSizable); + _redValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 30, 45, 29)); + objj_msgSend(_redValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_redValue, "setEditable:", YES); + objj_msgSend(_redValue, "setBezeled:", YES); + objj_msgSend(_redValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _redValue); + _greenLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 58, 15, 20)); + objj_msgSend(_greenLabel, "setStringValue:", "G"); + objj_msgSend(_greenLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _greenSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 58, aFrame.size.width - 70, 20)); + objj_msgSend(_greenSlider, "setMaxValue:", 1.0); + objj_msgSend(_greenSlider, "setMinValue:", 0.0); + objj_msgSend(_greenSlider, "setTarget:", self); + objj_msgSend(_greenSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_greenSlider, "setAutoresizingMask:", CPViewWidthSizable); + _greenValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 53, 45, 29)); + objj_msgSend(_greenValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_greenValue, "setEditable:", YES); + objj_msgSend(_greenValue, "setBezeled:", YES); + objj_msgSend(_greenValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _greenValue); + _blueLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 81, 15, 20)); + objj_msgSend(_blueLabel, "setStringValue:", "B"); + objj_msgSend(_blueLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _blueSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 81, aFrame.size.width - 70, 20)); + objj_msgSend(_blueSlider, "setMaxValue:", 1.0); + objj_msgSend(_blueSlider, "setMinValue:", 0.0); + objj_msgSend(_blueSlider, "setTarget:", self); + objj_msgSend(_blueSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_blueSlider, "setAutoresizingMask:", CPViewWidthSizable); + _blueValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 76, 45, 29)); + objj_msgSend(_blueValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_blueValue, "setEditable:", YES); + objj_msgSend(_blueValue, "setBezeled:", YES); + objj_msgSend(_blueValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _blueValue); + _hsbLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 120, 190, 20)); + objj_msgSend(_hsbLabel, "setStringValue:", "Hue, Saturation, Brightness"); + objj_msgSend(_hsbLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _hueLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 145, 15, 20)); + objj_msgSend(_hueLabel, "setStringValue:", "H"); + objj_msgSend(_hueLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _hueSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 145, aFrame.size.width - 70, 20)); + objj_msgSend(_hueSlider, "setMaxValue:", 359.0); + objj_msgSend(_hueSlider, "setMinValue:", 0.0); + objj_msgSend(_hueSlider, "setTarget:", self); + objj_msgSend(_hueSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_hueSlider, "setAutoresizingMask:", CPViewWidthSizable); + _hueValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 140, 45, 29)); + objj_msgSend(_hueValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_hueValue, "setEditable:", YES); + objj_msgSend(_hueValue, "setBezeled:", YES); + objj_msgSend(_hueValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _hueValue); + _saturationLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 168, 15, 20)); + objj_msgSend(_saturationLabel, "setStringValue:", "S"); + objj_msgSend(_saturationLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _saturationSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 168, aFrame.size.width - 70, 20)); + objj_msgSend(_saturationSlider, "setMaxValue:", 100.0); + objj_msgSend(_saturationSlider, "setMinValue:", 0.0); + objj_msgSend(_saturationSlider, "setTarget:", self); + objj_msgSend(_saturationSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_saturationSlider, "setAutoresizingMask:", CPViewWidthSizable); + _saturationValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 163, 45, 29)); + objj_msgSend(_saturationValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_saturationValue, "setEditable:", YES); + objj_msgSend(_saturationValue, "setBezeled:", YES); + objj_msgSend(_saturationValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _saturationValue); + _brightnessLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 191, 15, 20)); + objj_msgSend(_brightnessLabel, "setStringValue:", "B"); + objj_msgSend(_brightnessLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _brightnessSlider = objj_msgSend(objj_msgSend(CPSlider, "alloc"), "initWithFrame:", CPRectMake(15, 191, aFrame.size.width - 70, 20)); + objj_msgSend(_brightnessSlider, "setMaxValue:", 100.0); + objj_msgSend(_brightnessSlider, "setMinValue:", 0.0); + objj_msgSend(_brightnessSlider, "setTarget:", self); + objj_msgSend(_brightnessSlider, "setAction:", sel_getUid("sliderChanged:")); + objj_msgSend(_brightnessSlider, "setAutoresizingMask:", CPViewWidthSizable); + _brightnessValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(aFrame.size.width - 45, 186, 45, 29)); + objj_msgSend(_brightnessValue, "setAutoresizingMask:", CPViewMinXMargin); + objj_msgSend(_brightnessValue, "setEditable:", YES); + objj_msgSend(_brightnessValue, "setBezeled:", YES); + objj_msgSend(_brightnessValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _brightnessValue); + _hexLabel = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CPRectMake(0, 230, 30, 20)); + objj_msgSend(_hexLabel, "setStringValue:", "Hex"); + objj_msgSend(_hexLabel, "setTextColor:", objj_msgSend(CPColor, "blackColor")); + _hexValue = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(32, 225, 80, 29)); + objj_msgSend(_hexValue, "setEditable:", YES); + objj_msgSend(_hexValue, "setBezeled:", YES); + objj_msgSend(_hexValue, "setDelegate:", self); + objj_msgSend(_contentView, "addSubview:", _hexValue); + objj_msgSend(_contentView, "addSubview:", _rgbLabel); + objj_msgSend(_contentView, "addSubview:", _redLabel); + objj_msgSend(_contentView, "addSubview:", _greenLabel); + objj_msgSend(_contentView, "addSubview:", _blueLabel); + objj_msgSend(_contentView, "addSubview:", _redSlider); + objj_msgSend(_contentView, "addSubview:", _greenSlider); + objj_msgSend(_contentView, "addSubview:", _blueSlider); + objj_msgSend(_contentView, "addSubview:", _hsbLabel); + objj_msgSend(_contentView, "addSubview:", _hueLabel); + objj_msgSend(_contentView, "addSubview:", _saturationLabel); + objj_msgSend(_contentView, "addSubview:", _brightnessLabel); + objj_msgSend(_contentView, "addSubview:", _hueSlider); + objj_msgSend(_contentView, "addSubview:", _saturationSlider); + objj_msgSend(_contentView, "addSubview:", _brightnessSlider); + objj_msgSend(_contentView, "addSubview:", _hexLabel); +} +},["id"]), new objj_method(sel_getUid("provideNewView:"), function $CPSliderColorPicker__provideNewView_(self, _cmd, initialRequest) +{ with(self) +{ + if (initialRequest) + objj_msgSend(self, "initView"); + return _contentView; +} +},["CPView","BOOL"]), new objj_method(sel_getUid("currentMode"), function $CPSliderColorPicker__currentMode(self, _cmd) +{ with(self) +{ + return CPSliderColorPickerMode; +} +},["int"]), new objj_method(sel_getUid("supportsMode:"), function $CPSliderColorPicker__supportsMode_(self, _cmd, mode) +{ with(self) +{ + return (mode == CPSliderColorPickerMode) ? YES : NO; +} +},["BOOL","int"]), new objj_method(sel_getUid("sliderChanged:"), function $CPSliderColorPicker__sliderChanged_(self, _cmd, sender) +{ with(self) +{ + var newColor, + colorPanel = objj_msgSend(self, "colorPanel"), + alpha = objj_msgSend(colorPanel, "opacity"); + switch(sender) + { + case _hueSlider: + case _saturationSlider: + case _brightnessSlider: newColor = objj_msgSend(CPColor, "colorWithHue:saturation:brightness:alpha:", objj_msgSend(_hueSlider, "floatValue"), objj_msgSend(_saturationSlider, "floatValue"), objj_msgSend(_brightnessSlider, "floatValue"), alpha); + objj_msgSend(self, "updateRGBSliders:", newColor); + break; + case _redSlider: + case _greenSlider: + case _blueSlider: newColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", objj_msgSend(_redSlider, "floatValue"), objj_msgSend(_greenSlider, "floatValue"), objj_msgSend(_blueSlider, "floatValue"), alpha); + objj_msgSend(self, "updateHSBSliders:", newColor); + break; + } + objj_msgSend(self, "updateLabels"); + objj_msgSend(self, "updateHex:", newColor); + objj_msgSend(colorPanel, "setColor:", newColor); +} +},["void","id"]), new objj_method(sel_getUid("setColor:"), function $CPSliderColorPicker__setColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(self, "updateRGBSliders:", aColor); + objj_msgSend(self, "updateHSBSliders:", aColor); + objj_msgSend(self, "updateHex:", aColor); + objj_msgSend(self, "updateLabels"); +} +},["void","CPColor"]), new objj_method(sel_getUid("updateHSBSliders:"), function $CPSliderColorPicker__updateHSBSliders_(self, _cmd, aColor) +{ with(self) +{ + var hsb = objj_msgSend(aColor, "hsbComponents"); + objj_msgSend(_hueSlider, "setFloatValue:", hsb[0]); + objj_msgSend(_saturationSlider, "setFloatValue:", hsb[1]); + objj_msgSend(_brightnessSlider, "setFloatValue:", hsb[2]); +} +},["void","CPColor"]), new objj_method(sel_getUid("updateHex:"), function $CPSliderColorPicker__updateHex_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(_hexValue, "setStringValue:", objj_msgSend(aColor, "hexString")); +} +},["void","CPColor"]), new objj_method(sel_getUid("updateRGBSliders:"), function $CPSliderColorPicker__updateRGBSliders_(self, _cmd, aColor) +{ with(self) +{ + var rgb = objj_msgSend(aColor, "components"); + objj_msgSend(_redSlider, "setFloatValue:", rgb[0]); + objj_msgSend(_greenSlider, "setFloatValue:", rgb[1]); + objj_msgSend(_blueSlider, "setFloatValue:", rgb[2]); +} +},["void","CPColor"]), new objj_method(sel_getUid("updateLabels"), function $CPSliderColorPicker__updateLabels(self, _cmd) +{ with(self) +{ + objj_msgSend(_hueValue, "setStringValue:", ROUND(objj_msgSend(_hueSlider, "floatValue"))); + objj_msgSend(_saturationValue, "setStringValue:", ROUND(objj_msgSend(_saturationSlider, "floatValue"))); + objj_msgSend(_brightnessValue, "setStringValue:", ROUND(objj_msgSend(_brightnessSlider, "floatValue"))); + objj_msgSend(_redValue, "setStringValue:", ROUND(objj_msgSend(_redSlider, "floatValue") * 255)); + objj_msgSend(_greenValue, "setStringValue:", ROUND(objj_msgSend(_greenSlider, "floatValue") * 255)); + objj_msgSend(_blueValue, "setStringValue:", ROUND(objj_msgSend(_blueSlider, "floatValue") * 255)); +} +},["void"]), new objj_method(sel_getUid("provideNewButtonImage"), function $CPSliderColorPicker__provideNewButtonImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "slider_button.png"), CGSizeMake(32, 32)); +} +},["CPImage"]), new objj_method(sel_getUid("provideNewAlternateButtonImage"), function $CPSliderColorPicker__provideNewAlternateButtonImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", CPColorPicker), "pathForResource:", "slider_button_h.png"), CGSizeMake(32, 32)); +} +},["CPImage"]), new objj_method(sel_getUid("controlTextDidEndEditing:"), function $CPSliderColorPicker__controlTextDidEndEditing_(self, _cmd, aNotification) +{ with(self) +{ + var field = objj_msgSend(aNotification, "object"), + value = objj_msgSend(objj_msgSend(field, "stringValue"), "stringByTrimmingWhitespace"); + if (field === _hexValue) { + var newColor = objj_msgSend(CPColor, "colorWithHexString:", value); + if (newColor) { + objj_msgSend(self, "setColor:", newColor); + objj_msgSend(objj_msgSend(self, "colorPanel"), "setColor:", newColor); + } + } else { + switch(field) { + case _redValue: objj_msgSend(_redSlider, "setFloatValue:", MAX(MIN(ROUND(value), 255) / 255.0, 0)); + objj_msgSend(self, "sliderChanged:", _redSlider); + break; + case _greenValue: objj_msgSend(_greenSlider, "setFloatValue:", MAX(MIN(ROUND(value), 255) / 255.0, 0)); + objj_msgSend(self, "sliderChanged:", _greenSlider); + break; + case _blueValue: objj_msgSend(_blueSlider, "setFloatValue:", MAX(MIN(ROUND(value), 255) / 255.0, 0)); + objj_msgSend(self, "sliderChanged:", _blueSlider); + break; + case _hueValue: objj_msgSend(_hueSlider, "setFloatValue:", MAX(MIN(ROUND(value), 360), 0)); + objj_msgSend(self, "sliderChanged:", _hueSlider); + break; + case _saturationValue: objj_msgSend(_saturationSlider, "setFloatValue:", MAX(MIN(ROUND(value), 100), 0)); + objj_msgSend(self, "sliderChanged:", _saturationSlider); + break; + case _brightnessValue: objj_msgSend(_brightnessSlider, "setFloatValue:", MAX(MIN(ROUND(value), 100), 0)); + objj_msgSend(self, "sliderChanged:", _brightnessSlider); + break; + } + } +} +},["void","CPNotification"])]); +} + +p;13;CPSplitView.jt;30365;@STATIC;1.0;i;13;CPButtonBar.ji;9;CPImage.ji;8;CPView.jt;30302;objj_executeFile("CPButtonBar.j", YES); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPView.j", YES); +CPSplitViewDidResizeSubviewsNotification = "CPSplitViewDidResizeSubviewsNotification"; +CPSplitViewWillResizeSubviewsNotification = "CPSplitViewWillResizeSubviewsNotification"; +var CPSplitViewHorizontalImage = nil, + CPSplitViewVerticalImage = nil; +{var the_class = objj_allocateClassPair(CPView, "CPSplitView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_delegate"), new objj_ivar("_isVertical"), new objj_ivar("_isPaneSplitter"), new objj_ivar("_currentDivider"), new objj_ivar("_initialOffset"), new objj_ivar("_preCollapsePosition"), new objj_ivar("_originComponent"), new objj_ivar("_sizeComponent"), new objj_ivar("_DOMDividerElements"), new objj_ivar("_dividerImagePath"), new objj_ivar("_drawingDivider"), new objj_ivar("_needsResizeSubviews"), new objj_ivar("_buttonBars")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPSplitView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "initWithFrame:", aFrame)) + { + _currentDivider = CPNotFound; + _DOMDividerElements = []; + _buttonBars = []; + objj_msgSend(self, "_setVertical:", YES); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("dividerThickness"), function $CPSplitView__dividerThickness(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", objj_msgSend(self, "isPaneSplitter") ? "pane-divider-thickness" : "divider-thickness"); +} +},["float"]), new objj_method(sel_getUid("isVertical"), function $CPSplitView__isVertical(self, _cmd) +{ with(self) +{ + return _isVertical; +} +},["BOOL"]), new objj_method(sel_getUid("setVertical:"), function $CPSplitView__setVertical_(self, _cmd, shouldBeVertical) +{ with(self) +{ + if (!objj_msgSend(self, "_setVertical:", shouldBeVertical)) + return; + var frame = objj_msgSend(self, "frame"), + dividerThickness = objj_msgSend(self, "dividerThickness"); + objj_msgSend(self, "_postNotificationWillResize"); + var eachSize = ROUND((frame.size[_sizeComponent] - dividerThickness * (_subviews.length - 1)) / _subviews.length), + index = 0, + count = _subviews.length; + if (objj_msgSend(self, "isVertical")) + for (; index < count; ++index) + objj_msgSend(_subviews[index], "setFrame:", CGRectMake(ROUND((eachSize + dividerThickness) * index), 0, eachSize, frame.size.height)); + else + for (; index < count; ++index) + objj_msgSend(_subviews[index], "setFrame:", CGRectMake(0, ROUND((eachSize + dividerThickness) * index), frame.size.width, eachSize)); + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "_postNotificationDidResize"); +} +},["void","BOOL"]), new objj_method(sel_getUid("_setVertical:"), function $CPSplitView___setVertical_(self, _cmd, shouldBeVertical) +{ with(self) +{ + var changed = (_isVertical != shouldBeVertical); + _isVertical = shouldBeVertical; + _originComponent = objj_msgSend(self, "isVertical") ? "x" : "y"; + _sizeComponent = objj_msgSend(self, "isVertical") ? "width" : "height"; + _dividerImagePath = objj_msgSend(self, "isVertical") ? objj_msgSend(CPSplitViewVerticalImage, "filename") : objj_msgSend(CPSplitViewHorizontalImage, "filename"); + return changed; +} +},["BOOL","BOOL"]), new objj_method(sel_getUid("isPaneSplitter"), function $CPSplitView__isPaneSplitter(self, _cmd) +{ with(self) +{ + return _isPaneSplitter; +} +},["BOOL"]), new objj_method(sel_getUid("setIsPaneSplitter:"), function $CPSplitView__setIsPaneSplitter_(self, _cmd, shouldBePaneSplitter) +{ with(self) +{ + if (_isPaneSplitter == shouldBePaneSplitter) + return; + _isPaneSplitter = shouldBePaneSplitter; + if(_DOMDividerElements[_drawingDivider]) + objj_msgSend(self, "_setupDOMDivider"); + _needsResizeSubviews = YES; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","BOOL"]), new objj_method(sel_getUid("didAddSubview:"), function $CPSplitView__didAddSubview_(self, _cmd, aSubview) +{ with(self) +{ + _needsResizeSubviews = YES; +} +},["void","CPView"]), new objj_method(sel_getUid("isSubviewCollapsed:"), function $CPSplitView__isSubviewCollapsed_(self, _cmd, subview) +{ with(self) +{ + return objj_msgSend(subview, "frame").size[_sizeComponent] < 1 ? YES : NO; +} +},["BOOL","CPView"]), new objj_method(sel_getUid("rectOfDividerAtIndex:"), function $CPSplitView__rectOfDividerAtIndex_(self, _cmd, aDivider) +{ with(self) +{ + var frame = objj_msgSend(_subviews[aDivider], "frame"), + rect = CGRectMakeZero(); + rect.size = objj_msgSend(self, "frame").size; + rect.size[_sizeComponent] = objj_msgSend(self, "dividerThickness"); + rect.origin[_originComponent] = frame.origin[_originComponent] + frame.size[_sizeComponent]; + return rect; +} +},["CGRect","int"]), new objj_method(sel_getUid("effectiveRectOfDividerAtIndex:"), function $CPSplitView__effectiveRectOfDividerAtIndex_(self, _cmd, aDivider) +{ with(self) +{ + var realRect = objj_msgSend(self, "rectOfDividerAtIndex:", aDivider); + var padding = 2; + realRect.size[_sizeComponent] += padding * 2; + realRect.origin[_originComponent] -= padding; + return realRect; +} +},["CGRect","int"]), new objj_method(sel_getUid("drawRect:"), function $CPSplitView__drawRect_(self, _cmd, rect) +{ with(self) +{ + var count = objj_msgSend(_subviews, "count") - 1; + while ((count--) > 0) + { + _drawingDivider = count; + objj_msgSend(self, "drawDividerInRect:", objj_msgSend(self, "rectOfDividerAtIndex:", count)); + } +} +},["void","CGRect"]), new objj_method(sel_getUid("drawDividerInRect:"), function $CPSplitView__drawDividerInRect_(self, _cmd, aRect) +{ with(self) +{ +} +},["void","CGRect"]), new objj_method(sel_getUid("_setupDOMDivider"), function $CPSplitView___setupDOMDivider(self, _cmd) +{ with(self) +{ + if (_isPaneSplitter) + { + _DOMDividerElements[_drawingDivider].style.backgroundColor = "#A5A5A5"; + _DOMDividerElements[_drawingDivider].style.backgroundImage = ""; + } + else + { + _DOMDividerElements[_drawingDivider].style.backgroundColor = ""; + _DOMDividerElements[_drawingDivider].style.backgroundImage = "url('"+_dividerImagePath+"')"; + } +} +},["void"]), new objj_method(sel_getUid("viewWillDraw"), function $CPSplitView__viewWillDraw(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_adjustSubviewsWithCalculatedSize"); +} +},["void"]), new objj_method(sel_getUid("_adjustSubviewsWithCalculatedSize"), function $CPSplitView___adjustSubviewsWithCalculatedSize(self, _cmd) +{ with(self) +{ + if (!_needsResizeSubviews) + return; + _needsResizeSubviews = NO; + var subviews = objj_msgSend(self, "subviews"), + count = subviews.length, + oldSize = CGSizeMakeZero(); + if (objj_msgSend(self, "isVertical")) + { + oldSize.width += objj_msgSend(self, "dividerThickness") * (count - 1); + oldSize.height = CGRectGetHeight(objj_msgSend(self, "frame")); + } + else + { + oldSize.width = CGRectGetWidth(objj_msgSend(self, "frame")); + oldSize.height += objj_msgSend(self, "dividerThickness") * (count - 1); + } + while (count--) + oldSize[_sizeComponent] += objj_msgSend(subviews[count], "frame").size[_sizeComponent]; + objj_msgSend(self, "resizeSubviewsWithOldSize:", oldSize); +} +},["void"]), new objj_method(sel_getUid("cursorAtPoint:hitDividerAtIndex:"), function $CPSplitView__cursorAtPoint_hitDividerAtIndex_(self, _cmd, aPoint, anIndex) +{ with(self) +{ + var frame = objj_msgSend(_subviews[anIndex], "frame"), + startPosition = frame.origin[_originComponent] + frame.size[_sizeComponent], + effectiveRect = objj_msgSend(self, "effectiveRectOfDividerAtIndex:", anIndex), + buttonBar = _buttonBars[anIndex], + buttonBarRect = null, + additionalRect = null; + if (buttonBar != null) + { + buttonBarRect = objj_msgSend(buttonBar, "resizeControlFrame"); + buttonBarRect.origin = objj_msgSend(self, "convertPoint:fromView:", buttonBarRect.origin, buttonBar); + } + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:"))) + effectiveRect = objj_msgSend(_delegate, "splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:", self, effectiveRect, effectiveRect, anIndex); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:additionalEffectiveRectOfDividerAtIndex:"))) + additionalRect = objj_msgSend(_delegate, "splitView:additionalEffectiveRectOfDividerAtIndex:", self, anIndex); + return CGRectContainsPoint(effectiveRect, aPoint) || + (additionalRect && CGRectContainsPoint(additionalRect, aPoint)) || + (buttonBarRect && CGRectContainsPoint(buttonBarRect, aPoint)); +} +},["BOOL","CPPoint","int"]), new objj_method(sel_getUid("hitTest:"), function $CPSplitView__hitTest_(self, _cmd, aPoint) +{ with(self) +{ + if (objj_msgSend(self, "isHidden") || !objj_msgSend(self, "hitTests") || !CGRectContainsPoint(objj_msgSend(self, "frame"), aPoint)) + return nil; + var point = objj_msgSend(self, "convertPoint:fromView:", aPoint, objj_msgSend(self, "superview")); + var count = objj_msgSend(_subviews, "count") - 1; + for (var i = 0; i < count; i++) + { + if (objj_msgSend(self, "cursorAtPoint:hitDividerAtIndex:", point, i)) + return self; + } + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "hitTest:", aPoint); +} +},["CPView","CGPoint"]), new objj_method(sel_getUid("trackDivider:"), function $CPSplitView__trackDivider_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + if (type == CPLeftMouseUp) + { + if (_currentDivider != CPNotFound) + { + _currentDivider = CPNotFound; + objj_msgSend(self, "_updateResizeCursor:", anEvent); + objj_msgSend(self, "_postNotificationDidResize"); + } + return; + } + if (type == CPLeftMouseDown) + { + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + _currentDivider = CPNotFound; + var count = objj_msgSend(_subviews, "count") - 1; + for (var i = 0; i < count; i++) + { + var frame = objj_msgSend(_subviews[i], "frame"), + startPosition = frame.origin[_originComponent] + frame.size[_sizeComponent]; + if (objj_msgSend(self, "cursorAtPoint:hitDividerAtIndex:", point, i)) + { + if (objj_msgSend(anEvent, "clickCount") == 2 && + objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:canCollapseSubview:")) && + objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:"))) + { + var minPosition = objj_msgSend(self, "minPossiblePositionOfDividerAtIndex:", i), + maxPosition = objj_msgSend(self, "maxPossiblePositionOfDividerAtIndex:", i); + if (objj_msgSend(_delegate, "splitView:canCollapseSubview:", self, _subviews[i]) && objj_msgSend(_delegate, "splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:", self, _subviews[i], i)) + { + if (objj_msgSend(self, "isSubviewCollapsed:", _subviews[i])) + objj_msgSend(self, "setPosition:ofDividerAtIndex:", _preCollapsePosition ? _preCollapsePosition : (minPosition + (maxPosition - minPosition) / 2), i); + else + objj_msgSend(self, "setPosition:ofDividerAtIndex:", minPosition, i); + } + else if (objj_msgSend(_delegate, "splitView:canCollapseSubview:", self, _subviews[i+1]) && objj_msgSend(_delegate, "splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:", self, _subviews[i+1], i)) + { + if (objj_msgSend(self, "isSubviewCollapsed:", _subviews[i+1])) + objj_msgSend(self, "setPosition:ofDividerAtIndex:", _preCollapsePosition ? _preCollapsePosition : (minPosition + (maxPosition - minPosition) / 2), i); + else + objj_msgSend(self, "setPosition:ofDividerAtIndex:", maxPosition, i); + } + } + else + { + _currentDivider = i; + _initialOffset = startPosition - point[_originComponent]; + objj_msgSend(self, "_postNotificationWillResize"); + } + } + } + if (_currentDivider === CPNotFound) + return; + } + else if (type == CPLeftMouseDragged && _currentDivider != CPNotFound) + { + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + objj_msgSend(self, "setPosition:ofDividerAtIndex:", (point[_originComponent] + _initialOffset), _currentDivider); + objj_msgSend(self, "_updateResizeCursor:", anEvent); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackDivider:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDown:"), function $CPSplitView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "trackDivider:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $CPSplitView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("mouseEntered:"), function $CPSplitView__mouseEntered_(self, _cmd, anEvent) +{ with(self) +{ + if (_currentDivider == CPNotFound) + objj_msgSend(self, "_updateResizeCursor:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseMoved:"), function $CPSplitView__mouseMoved_(self, _cmd, anEvent) +{ with(self) +{ + if (_currentDivider == CPNotFound) + objj_msgSend(self, "_updateResizeCursor:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseExited:"), function $CPSplitView__mouseExited_(self, _cmd, anEvent) +{ with(self) +{ + if (_currentDivider == CPNotFound) + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_updateResizeCursor:"), function $CPSplitView___updateResizeCursor_(self, _cmd, anEvent) +{ with(self) +{ + var point = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil); + if (objj_msgSend(anEvent, "type") === CPLeftMouseUp && !objj_msgSend(objj_msgSend(self, "window"), "acceptsMouseMovedEvents")) + { + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); + return; + } + for (var i = 0, count = objj_msgSend(_subviews, "count") - 1; i < count; i++) + { + if (_currentDivider === i || (_currentDivider == CPNotFound && objj_msgSend(self, "cursorAtPoint:hitDividerAtIndex:", point, i))) + { + var frame = objj_msgSend(_subviews[i], "frame"), + size = frame.size[_sizeComponent], + startPosition = frame.origin[_originComponent] + size, + canShrink = objj_msgSend(self, "_realPositionForPosition:ofDividerAtIndex:", startPosition-1, i) < startPosition, + canGrow = objj_msgSend(self, "_realPositionForPosition:ofDividerAtIndex:", startPosition+1, i) > startPosition, + cursor = objj_msgSend(CPCursor, "arrowCursor"); + if (size === 0) + canGrow = YES; + else if (!canShrink && + objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:canCollapseSubview:")) && + objj_msgSend(_delegate, "splitView:canCollapseSubview:", self, _subviews[i])) + canShrink = YES; + if (_isVertical && canShrink && canGrow) + cursor = objj_msgSend(CPCursor, "resizeLeftRightCursor"); + else if (_isVertical && canShrink) + cursor = objj_msgSend(CPCursor, "resizeLeftCursor"); + else if (_isVertical && canGrow) + cursor = objj_msgSend(CPCursor, "resizeRightCursor"); + else if (canShrink && canGrow) + cursor = objj_msgSend(CPCursor, "resizeUpDownCursor"); + else if (canShrink) + cursor = objj_msgSend(CPCursor, "resizeUpCursor"); + else if (canGrow) + cursor = objj_msgSend(CPCursor, "resizeDownCursor"); + objj_msgSend(cursor, "set"); + return; + } + } + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("maxPossiblePositionOfDividerAtIndex:"), function $CPSplitView__maxPossiblePositionOfDividerAtIndex_(self, _cmd, dividerIndex) +{ with(self) +{ + var frame = objj_msgSend(_subviews[dividerIndex + 1], "frame"); + if (dividerIndex + 1 < objj_msgSend(_subviews, "count") - 1) + return frame.origin[_originComponent] + frame.size[_sizeComponent] - objj_msgSend(self, "dividerThickness"); + else + return objj_msgSend(self, "frame").size[_sizeComponent] - objj_msgSend(self, "dividerThickness"); +} +},["float","int"]), new objj_method(sel_getUid("minPossiblePositionOfDividerAtIndex:"), function $CPSplitView__minPossiblePositionOfDividerAtIndex_(self, _cmd, dividerIndex) +{ with(self) +{ + if (dividerIndex > 0) + { + var frame = objj_msgSend(_subviews[dividerIndex - 1], "frame"); + return frame.origin[_originComponent] + frame.size[_sizeComponent] + objj_msgSend(self, "dividerThickness"); + } + else + return 0; +} +},["float","int"]), new objj_method(sel_getUid("_realPositionForPosition:ofDividerAtIndex:"), function $CPSplitView___realPositionForPosition_ofDividerAtIndex_(self, _cmd, position, dividerIndex) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:constrainSplitPosition:ofSubviewAt:"))) + position = objj_msgSend(_delegate, "splitView:constrainSplitPosition:ofSubviewAt:", self, position, dividerIndex); + var proposedMax = objj_msgSend(self, "maxPossiblePositionOfDividerAtIndex:", dividerIndex), + proposedMin = objj_msgSend(self, "minPossiblePositionOfDividerAtIndex:", dividerIndex), + actualMax = proposedMax, + actualMin = proposedMin; + if(objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:constrainMinCoordinate:ofSubviewAt:"))) + actualMin = objj_msgSend(_delegate, "splitView:constrainMinCoordinate:ofSubviewAt:", self, proposedMin, dividerIndex); + if(objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:constrainMaxCoordinate:ofSubviewAt:"))) + actualMax = objj_msgSend(_delegate, "splitView:constrainMaxCoordinate:ofSubviewAt:", self, proposedMax, dividerIndex); + var viewA = _subviews[dividerIndex], + realPosition = MAX(MIN(position, actualMax), actualMin); + if (position < proposedMin + (actualMin - proposedMin) / 2) + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:canCollapseSubview:"))) + if (objj_msgSend(_delegate, "splitView:canCollapseSubview:", self, viewA)) + realPosition = proposedMin; + return realPosition; +} +},["int","float","int"]), new objj_method(sel_getUid("setPosition:ofDividerAtIndex:"), function $CPSplitView__setPosition_ofDividerAtIndex_(self, _cmd, position, dividerIndex) +{ with(self) +{ + objj_msgSend(self, "_adjustSubviewsWithCalculatedSize"); + var realPosition = objj_msgSend(self, "_realPositionForPosition:ofDividerAtIndex:", position, dividerIndex); + var viewA = _subviews[dividerIndex], + frameA = objj_msgSend(viewA, "frame"), + viewB = _subviews[dividerIndex + 1], + frameB = objj_msgSend(viewB, "frame"); + _preCollapsePosition = 0; + var preSize = frameA.size[_sizeComponent]; + frameA.size[_sizeComponent] = realPosition - frameA.origin[_originComponent]; + if (preSize !== 0 && frameA.size[_sizeComponent] === 0) + _preCollapsePosition = preSize; + objj_msgSend(_subviews[dividerIndex], "setFrame:", frameA); + preSize = frameB.size[_sizeComponent]; + frameB.size[_sizeComponent] = frameB.origin[_originComponent] + frameB.size[_sizeComponent] - realPosition - objj_msgSend(self, "dividerThickness"); + if (preSize !== 0 && frameB.size[_sizeComponent] === 0) + _preCollapsePosition = preSize; + frameB.origin[_originComponent] = realPosition + objj_msgSend(self, "dividerThickness"); + objj_msgSend(_subviews[dividerIndex + 1], "setFrame:", frameB); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","float","int"]), new objj_method(sel_getUid("setFrameSize:"), function $CPSplitView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "_adjustSubviewsWithCalculatedSize"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CGSize"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPSplitView__resizeSubviewsWithOldSize_(self, _cmd, oldSize) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitView:resizeSubviewsWithOldSize:"))) + { + objj_msgSend(_delegate, "splitView:resizeSubviewsWithOldSize:", self, oldSize); + return; + } + objj_msgSend(self, "_postNotificationWillResize"); + var index = 0, + count = objj_msgSend(_subviews, "count"), + bounds = objj_msgSend(self, "bounds"), + dividerThickness = objj_msgSend(self, "dividerThickness"), + totalDividers = count - 1, + totalSizableSpace = 0, + nonSizableSpace = 0, + lastSizableIndex = -1, + totalSizablePanes = 0, + isVertical = objj_msgSend(self, "isVertical"); + for (index = 0; index < count; ++index) + { + var view = _subviews[index], + isSizable = isVertical ? objj_msgSend(view, "autoresizingMask") & CPViewWidthSizable : objj_msgSend(view, "autoresizingMask") & CPViewHeightSizable; + if (isSizable) + { + totalSizableSpace += objj_msgSend(view, "frame").size[_sizeComponent]; + lastSizableIndex = index; + totalSizablePanes++; + } + } + if (totalSizablePanes === count) + totalSizableSpace = 0; + var nonSizableSpace = totalSizableSpace ? bounds.size[_sizeComponent] - totalSizableSpace : 0, + remainingFlexibleSpace = bounds.size[_sizeComponent] - oldSize[_sizeComponent], + oldDimension = (oldSize[_sizeComponent]- totalDividers*dividerThickness - nonSizableSpace), + ratio = oldDimension <= 0 ? 0 : (bounds.size[_sizeComponent] - totalDividers*dividerThickness - nonSizableSpace) / oldDimension; + for (index = 0; index < count; ++index) + { + var view = _subviews[index], + viewFrame = CGRectMakeCopy(bounds), + isSizable = isVertical ? objj_msgSend(view, "autoresizingMask") & CPViewWidthSizable : objj_msgSend(view, "autoresizingMask") & CPViewHeightSizable; + if (index + 1 == count) + viewFrame.size[_sizeComponent] = bounds.size[_sizeComponent] - viewFrame.origin[_originComponent]; + else if (totalSizableSpace && isSizable && lastSizableIndex === index) + viewFrame.size[_sizeComponent] = MAX(0, ROUND(objj_msgSend(view, "frame").size[_sizeComponent] + remainingFlexibleSpace)) + else if (isSizable || !totalSizableSpace) + { + viewFrame.size[_sizeComponent] = MAX(0, ROUND(ratio * objj_msgSend(view, "frame").size[_sizeComponent])); + remainingFlexibleSpace -= (viewFrame.size[_sizeComponent] - objj_msgSend(view, "frame").size[_sizeComponent]); + } + else if (totalSizableSpace && !isSizable) + viewFrame.size[_sizeComponent] = objj_msgSend(view, "frame").size[_sizeComponent]; + bounds.origin[_originComponent] += viewFrame.size[_sizeComponent] + dividerThickness; + objj_msgSend(view, "setFrame:", viewFrame); + } + objj_msgSend(self, "_postNotificationDidResize"); +} +},["void","CPSize"]), new objj_method(sel_getUid("setDelegate:"), function $CPSplitView__setDelegate_(self, _cmd, delegate) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitViewDidResizeSubviews:"))) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "removeObserver:name:object:", _delegate, CPSplitViewDidResizeSubviewsNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitViewWillResizeSubviews:"))) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "removeObserver:name:object:", _delegate, CPSplitViewWillResizeSubviewsNotification, self); + _delegate = delegate; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitViewDidResizeSubviews:"))) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "addObserver:selector:name:object:", _delegate, sel_getUid("splitViewDidResizeSubviews:"), CPSplitViewDidResizeSubviewsNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("splitViewWillResizeSubviews:"))) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "addObserver:selector:name:object:", _delegate, sel_getUid("splitViewWillResizeSubviews:"), CPSplitViewWillResizeSubviewsNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("setButtonBar:forDividerAtIndex:"), function $CPSplitView__setButtonBar_forDividerAtIndex_(self, _cmd, aButtonBar, dividerIndex) +{ with(self) +{ + if (!aButtonBar) + { + _buttonBars[dividerIndex] = nil; + return; + } + var view = objj_msgSend(aButtonBar, "superview"), + subview = aButtonBar; + while (view && view !== self) + { + subview = view; + view = objj_msgSend(view, "superview"); + } + if (view !== self) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "CPSplitView button bar must be a subview of the split view."); + var viewIndex = objj_msgSend(objj_msgSend(self, "subviews"), "indexOfObject:", subview); + objj_msgSend(aButtonBar, "setHasResizeControl:", YES); + objj_msgSend(aButtonBar, "setResizeControlIsLeftAligned:", dividerIndex < viewIndex); + _buttonBars[dividerIndex] = aButtonBar; +} +},["void","CPButtonBar","unsigned"]), new objj_method(sel_getUid("_postNotificationWillResize"), function $CPSplitView___postNotificationWillResize(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPSplitViewWillResizeSubviewsNotification, self); +} +},["void"]), new objj_method(sel_getUid("_postNotificationDidResize"), function $CPSplitView___postNotificationDidResize(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPSplitViewDidResizeSubviewsNotification, self); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPSplitView__themeClass(self, _cmd) +{ with(self) +{ + return "splitview"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPSplitView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [10.0, 1.0], ["divider-thickness", "pane-divider-thickness"]); +} +},["id"]), new objj_method(sel_getUid("initialize"), function $CPSplitView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPSplitView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + CPSplitViewHorizontalImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSplitView/CPSplitViewHorizontal.png"), CPSizeMake(5.0, 10.0)); + CPSplitViewVerticalImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPSplitView/CPSplitViewVertical.png"), CPSizeMake(10.0, 5.0)); +} +},["void"])]); +} +var CPSplitViewDelegateKey = "CPSplitViewDelegateKey", + CPSplitViewIsVerticalKey = "CPSplitViewIsVerticalKey", + CPSplitViewIsPaneSplitterKey = "CPSplitViewIsPaneSplitterKey", + CPSplitViewButtonBarsKey = "CPSplitViewButtonBarsKey"; +{ +var the_class = objj_getClass("CPSplitView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSplitView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPSplitView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _currentDivider = CPNotFound; + _DOMDividerElements = []; + _buttonBars = objj_msgSend(aCoder, "decodeObjectForKey:", CPSplitViewButtonBarsKey) || []; + _delegate = objj_msgSend(aCoder, "decodeObjectForKey:", CPSplitViewDelegateKey); + _isPaneSplitter = objj_msgSend(aCoder, "decodeBoolForKey:", CPSplitViewIsPaneSplitterKey); + objj_msgSend(self, "_setVertical:", objj_msgSend(aCoder, "decodeBoolForKey:", CPSplitViewIsVerticalKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPSplitView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSplitView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _delegate, CPSplitViewDelegateKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isVertical, CPSplitViewIsVerticalKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isPaneSplitter, CPSplitViewIsPaneSplitterKey); +} +},["void","CPCoder"])]); +} + +p;17;CPStringDrawing.jt;1222;@STATIC;1.0;I;21;Foundation/CPString.ji;18;CPPlatformString.jt;1154;objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPPlatformString.j", YES); +{ +var the_class = objj_getClass("CPString") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPString\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("cssString"), function $CPString__cssString(self, _cmd) +{ with(self) +{ + return self; +} +},["CPString"]), new objj_method(sel_getUid("sizeWithFont:"), function $CPString__sizeWithFont_(self, _cmd, aFont) +{ with(self) +{ + return objj_msgSend(self, "sizeWithFont:inWidth:", aFont, NULL); +} +},["CGSize","CPFont"]), new objj_method(sel_getUid("sizeWithFont:inWidth:"), function $CPString__sizeWithFont_inWidth_(self, _cmd, aFont, aWidth) +{ with(self) +{ + return objj_msgSend(CPPlatformString, "sizeOfString:withFont:forWidth:", self, aFont, aWidth); +} +},["CGSize","CPFont","float"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("metricsOfFont:"), function $CPString__metricsOfFont_(self, _cmd, aFont) +{ with(self) +{ + return objj_msgSend(CPPlatformString, "metricsOfFont:", aFont); +} +},["CPDictionary","CPFont"])]); +} + +p;15;CPTableColumn.jt;18834;@STATIC;1.0;I;25;Foundation/CPDictionary.jI;21;Foundation/CPObject.jI;29;Foundation/CPSortDescriptor.jI;21;Foundation/CPString.ji;19;CPTableHeaderView.jt;18674;objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPSortDescriptor.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPTableHeaderView.j", YES); +CPTableColumnNoResizing = 0; +CPTableColumnAutoresizingMask = 1 << 0; +CPTableColumnUserResizingMask = 1 << 1; +{var the_class = objj_allocateClassPair(CPObject, "CPTableColumn"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_tableView"), new objj_ivar("_headerView"), new objj_ivar("_dataView"), new objj_ivar("_dataViewData"), new objj_ivar("_width"), new objj_ivar("_minWidth"), new objj_ivar("_maxWidth"), new objj_ivar("_resizingMask"), new objj_ivar("_identifier"), new objj_ivar("_isEditable"), new objj_ivar("_sortDescriptorPrototype"), new objj_ivar("_isHidden"), new objj_ivar("_headerToolTip"), new objj_ivar("_disableResizingPosting")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("disableResizingPosting"), function $CPTableColumn__disableResizingPosting(self, _cmd) +{ with(self) +{ +return _disableResizingPosting; +} +},["id"]), +new objj_method(sel_getUid("setDisableResizingPosting:"), function $CPTableColumn__setDisableResizingPosting_(self, _cmd, newValue) +{ with(self) +{ +_disableResizingPosting = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPTableColumn__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithIdentifier:"), function $CPTableColumn__initWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableColumn").super_class }, "init"); + if (self) + { + _dataViewData = { }; + _width = 100.0; + _minWidth = 10.0; + _maxWidth = 1000000.0; + _resizingMask = CPTableColumnAutoresizingMask | CPTableColumnUserResizingMask; + _disableResizingPosting = NO; + objj_msgSend(self, "setIdentifier:", anIdentifier); + var header = objj_msgSend(objj_msgSend(_CPTableColumnHeaderView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(self, "setHeaderView:", header); + objj_msgSend(self, "setDataView:", objj_msgSend(CPTextField, "new")); + } + return self; +} +},["id","id"]), new objj_method(sel_getUid("setTableView:"), function $CPTableColumn__setTableView_(self, _cmd, aTableView) +{ with(self) +{ + _tableView = aTableView; +} +},["void","CPTableView"]), new objj_method(sel_getUid("tableView"), function $CPTableColumn__tableView(self, _cmd) +{ with(self) +{ + return _tableView; +} +},["CPTableView"]), new objj_method(sel_getUid("setWidth:"), function $CPTableColumn__setWidth_(self, _cmd, aWidth) +{ with(self) +{ + aWidth = +aWidth; + if (_width === aWidth) + return; + var newWidth = MIN(MAX(aWidth, objj_msgSend(self, "minWidth")), objj_msgSend(self, "maxWidth")); + if (_width === newWidth) + return; + var oldWidth = _width; + _width = newWidth; + var tableView = objj_msgSend(self, "tableView"); + if (tableView) + { + var index = objj_msgSend(objj_msgSend(tableView, "tableColumns"), "indexOfObjectIdenticalTo:", self), + dirtyTableColumnRangeIndex = tableView._dirtyTableColumnRangeIndex; + if (dirtyTableColumnRangeIndex < 0) + tableView._dirtyTableColumnRangeIndex = index; + else + tableView._dirtyTableColumnRangeIndex = MIN(index, tableView._dirtyTableColumnRangeIndex); + var rows = tableView._exposedRows, + columns = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(index, objj_msgSend(tableView._exposedColumns, "lastIndex") - index + 1)); + objj_msgSend(tableView, "_layoutDataViewsInRows:columns:", rows, columns); + objj_msgSend(tableView, "tile"); + if (!_disableResizingPosting) + objj_msgSend(self, "_postDidResizeNotificationWithOldWidth:", oldWidth); + } +} +},["void","float"]), new objj_method(sel_getUid("width"), function $CPTableColumn__width(self, _cmd) +{ with(self) +{ + return _width; +} +},["float"]), new objj_method(sel_getUid("setMinWidth:"), function $CPTableColumn__setMinWidth_(self, _cmd, aMinWidth) +{ with(self) +{ + aMinWidth = +aMinWidth; + if (_minWidth === aMinWidth) + return; + _minWidth = aMinWidth; + var width = objj_msgSend(self, "width"), + newWidth = MAX(width, objj_msgSend(self, "minWidth")); + if (width !== newWidth) + objj_msgSend(self, "setWidth:", newWidth); +} +},["void","float"]), new objj_method(sel_getUid("minWidth"), function $CPTableColumn__minWidth(self, _cmd) +{ with(self) +{ + return _minWidth; +} +},["float"]), new objj_method(sel_getUid("setMaxWidth:"), function $CPTableColumn__setMaxWidth_(self, _cmd, aMaxWidth) +{ with(self) +{ + aMaxWidth = +aMaxWidth; + if (_maxWidth === aMaxWidth) + return; + _maxWidth = aMaxWidth; + var width = objj_msgSend(self, "width"), + newWidth = MIN(width, objj_msgSend(self, "maxWidth")); + if (width !== newWidth) + objj_msgSend(self, "setWidth:", newWidth); +} +},["void","float"]), new objj_method(sel_getUid("maxWidth"), function $CPTableColumn__maxWidth(self, _cmd) +{ with(self) +{ + return _maxWidth; +} +},["float"]), new objj_method(sel_getUid("setResizingMask:"), function $CPTableColumn__setResizingMask_(self, _cmd, aResizingMask) +{ with(self) +{ + _resizingMask = aResizingMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("resizingMask"), function $CPTableColumn__resizingMask(self, _cmd) +{ with(self) +{ + return _resizingMask; +} +},["unsigned"]), new objj_method(sel_getUid("sizeToFit"), function $CPTableColumn__sizeToFit(self, _cmd) +{ with(self) +{ + var width = (objj_msgSend(_headerView, "frame").size.width); + if (width < objj_msgSend(self, "minWidth")) + objj_msgSend(self, "setMinWidth:", width); + else if (width > objj_msgSend(self, "maxWidth")) + objj_msgSend(self, "setMaxWidth:", width) + if (_width !== width) + objj_msgSend(self, "setWidth:", width); +} +},["void"]), new objj_method(sel_getUid("setHeaderView:"), function $CPTableColumn__setHeaderView_(self, _cmd, aView) +{ with(self) +{ + if (!aView) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Attempt to set nil header view on " + objj_msgSend(self, "description")); + _headerView = aView; + var tableHeaderView = objj_msgSend(_tableView, "headerView"); + objj_msgSend(tableHeaderView, "setNeedsLayout"); + objj_msgSend(tableHeaderView, "setNeedsDisplay:", YES); +} +},["void","CPView"]), new objj_method(sel_getUid("headerView"), function $CPTableColumn__headerView(self, _cmd) +{ with(self) +{ + return _headerView; +} +},["CPView"]), new objj_method(sel_getUid("setDataView:"), function $CPTableColumn__setDataView_(self, _cmd, aView) +{ with(self) +{ + if (_dataView === aView) + return; + if (_dataView) + _dataViewData[objj_msgSend(_dataView, "UID")] = nil; + objj_msgSend(aView, "setThemeState:", CPThemeStateTableDataView); + _dataView = aView; + _dataViewData[objj_msgSend(aView, "UID")] = objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", aView); +} +},["void","CPView"]), new objj_method(sel_getUid("dataView"), function $CPTableColumn__dataView(self, _cmd) +{ with(self) +{ + return _dataView; +} +},["CPView"]), new objj_method(sel_getUid("dataViewForRow:"), function $CPTableColumn__dataViewForRow_(self, _cmd, aRowIndex) +{ with(self) +{ + return objj_msgSend(self, "dataView"); +} +},["id","int"]), new objj_method(sel_getUid("_newDataViewForRow:"), function $CPTableColumn___newDataViewForRow_(self, _cmd, aRowIndex) +{ with(self) +{ + var dataView = objj_msgSend(self, "dataViewForRow:", aRowIndex), + dataViewUID = objj_msgSend(dataView, "UID"); + var x = objj_msgSend(self, "tableView")._cachedDataViews[dataViewUID]; + if (x && x.length) + return x.pop(); + if (!_dataViewData[dataViewUID]) + _dataViewData[dataViewUID] = objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", dataView); + var newDataView = objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", _dataViewData[dataViewUID]); + newDataView.identifier = dataViewUID; + objj_msgSend(newDataView, "setAutoresizingMask:", CPViewNotSizable); + return newDataView; +} +},["id","int"]), new objj_method(sel_getUid("setIdentifier:"), function $CPTableColumn__setIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + _identifier = anIdentifier; +} +},["void","id"]), new objj_method(sel_getUid("identifier"), function $CPTableColumn__identifier(self, _cmd) +{ with(self) +{ + return _identifier; +} +},["id"]), new objj_method(sel_getUid("setEditable:"), function $CPTableColumn__setEditable_(self, _cmd, shouldBeEditable) +{ with(self) +{ + _isEditable = shouldBeEditable; +} +},["void","BOOL"]), new objj_method(sel_getUid("isEditable"), function $CPTableColumn__isEditable(self, _cmd) +{ with(self) +{ + return _isEditable; +} +},["BOOL"]), new objj_method(sel_getUid("setSortDescriptorPrototype:"), function $CPTableColumn__setSortDescriptorPrototype_(self, _cmd, aSortDescriptor) +{ with(self) +{ + _sortDescriptorPrototype = aSortDescriptor; +} +},["void","CPSortDescriptor"]), new objj_method(sel_getUid("sortDescriptorPrototype"), function $CPTableColumn__sortDescriptorPrototype(self, _cmd) +{ with(self) +{ + return _sortDescriptorPrototype; +} +},["CPSortDescriptor"]), new objj_method(sel_getUid("setHidden:"), function $CPTableColumn__setHidden_(self, _cmd, shouldBeHidden) +{ with(self) +{ + shouldBeHidden = !!shouldBeHidden + if (_isHidden === shouldBeHidden) + return; + _isHidden = shouldBeHidden; + objj_msgSend(objj_msgSend(self, "headerView"), "setHidden:", shouldBeHidden); + objj_msgSend(objj_msgSend(self, "tableView"), "_tableColumnVisibilityDidChange:", self); +} +},["void","BOOL"]), new objj_method(sel_getUid("isHidden"), function $CPTableColumn__isHidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("setHeaderToolTip:"), function $CPTableColumn__setHeaderToolTip_(self, _cmd, aToolTip) +{ with(self) +{ + _headerToolTip = aToolTip; +} +},["void","CPString"]), new objj_method(sel_getUid("headerToolTip"), function $CPTableColumn__headerToolTip(self, _cmd) +{ with(self) +{ + return _headerToolTip; +} +},["CPString"]), new objj_method(sel_getUid("_postDidResizeNotificationWithOldWidth:"), function $CPTableColumn___postDidResizeNotificationWithOldWidth_(self, _cmd, oldWidth) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPTableViewColumnDidResizeNotification, objj_msgSend(self, "tableView"), objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [self, oldWidth], ["CPTableColumn", "CPOldWidth"])); +} +},["void","float"])]); +} +{ +var the_class = objj_getClass("CPTableColumn") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("bind:toObject:withKeyPath:options:"), function $CPTableColumn__bind_toObject_withKeyPath_options_(self, _cmd, aBinding, anObject, aKeyPath, options) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableColumn").super_class }, "bind:toObject:withKeyPath:options:", aBinding, anObject, aKeyPath, options); + if (!objj_msgSend(aBinding, "isEqual:", "someListOfExceptedBindings(notAcceptedBindings)")) + objj_msgSend(objj_msgSend(self, "tableView"), "_establishBindingsIfUnbound:", anObject); +} +},["void","CPString","id","CPString","CPDictionary"]), new objj_method(sel_getUid("prepareDataView:forRow:"), function $CPTableColumn__prepareDataView_forRow_(self, _cmd, aDataView, aRow) +{ with(self) +{ + var bindingsDictionary = objj_msgSend(CPKeyValueBinding, "allBindingsForObject:", self), + keys = objj_msgSend(bindingsDictionary, "allKeys"); + for (var i=0, count = objj_msgSend(keys, "count"); i<count; i++) + { + var bindingName = keys[i], + bindingPath = objj_msgSend(aDataView, "_replacementKeyPathForBinding:", bindingName), + binding = objj_msgSend(bindingsDictionary, "objectForKey:", bindingName), + bindingInfo = binding._info, + destination = objj_msgSend(bindingInfo, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(bindingInfo, "objectForKey:", CPObservedKeyPathKey), + dotIndex = keyPath.lastIndexOf("."), + value; + if (dotIndex === CPNotFound) + value = objj_msgSend(objj_msgSend(destination, "valueForKeyPath:", keyPath), "objectAtIndex:", aRow); + else + { + var firstPart = keyPath.substring(0, dotIndex), + secondPart = keyPath.substring(dotIndex+1), + firstValue = objj_msgSend(destination, "valueForKeyPath:", firstPart); + if (objj_msgSend(firstValue, "isKindOfClass:", CPArray)) + value = objj_msgSend(objj_msgSend(firstValue, "objectAtIndex:", aRow), "valueForKeyPath:", secondPart); + else + value = objj_msgSend(objj_msgSend(firstValue, "valueForKeyPath:", secondPart), "objectAtIndex:", aRow); + } + value = objj_msgSend(binding, "transformValue:withOptions:", value, objj_msgSend(bindingInfo, "objectForKey:", CPOptionsKey)); + objj_msgSend(aDataView, "setValue:forKey:", value, bindingPath); + } +} +},["void","CPView","unsigned"]), new objj_method(sel_getUid("setValue:"), function $CPTableColumn__setValue_(self, _cmd, content) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "tableView"), "reloadData"); +} +},["void","CPArray"])]); +} +var CPTableColumnIdentifierKey = "CPTableColumnIdentifierKey", + CPTableColumnHeaderViewKey = "CPTableColumnHeaderViewKey", + CPTableColumnDataViewKey = "CPTableColumnDataViewKey", + CPTableColumnWidthKey = "CPTableColumnWidthKey", + CPTableColumnMinWidthKey = "CPTableColumnMinWidthKey", + CPTableColumnMaxWidthKey = "CPTableColumnMaxWidthKey", + CPTableColumnResizingMaskKey = "CPTableColumnResizingMaskKey", + CPTableColumnIsHiddenKey = "CPTableColumnIsHiddenKey", + CPSortDescriptorPrototypeKey = "CPSortDescriptorPrototypeKey", + CPTableColumnIsEditableKey = "CPTableColumnIsEditableKey"; +{ +var the_class = objj_getClass("CPTableColumn") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTableColumn__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableColumn").super_class }, "init"); + if (self) + { + _dataViewData = { }; + _width = objj_msgSend(aCoder, "decodeFloatForKey:", CPTableColumnWidthKey); + _minWidth = objj_msgSend(aCoder, "decodeFloatForKey:", CPTableColumnMinWidthKey); + _maxWidth = objj_msgSend(aCoder, "decodeFloatForKey:", CPTableColumnMaxWidthKey); + objj_msgSend(self, "setIdentifier:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableColumnIdentifierKey)); + objj_msgSend(self, "setHeaderView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableColumnHeaderViewKey)); + objj_msgSend(self, "setDataView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableColumnDataViewKey)); + objj_msgSend(self, "setHeaderView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableColumnHeaderViewKey)); + _resizingMask = objj_msgSend(aCoder, "decodeIntForKey:", CPTableColumnResizingMaskKey); + _isHidden = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableColumnIsHiddenKey); + _isEditable = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableColumnIsEditableKey); + _sortDescriptorPrototype = objj_msgSend(aCoder, "decodeObjectForKey:", CPSortDescriptorPrototypeKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTableColumn__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _identifier, CPTableColumnIdentifierKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _width, CPTableColumnWidthKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _minWidth, CPTableColumnMinWidthKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _maxWidth, CPTableColumnMaxWidthKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _headerView, CPTableColumnHeaderViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _dataView, CPTableColumnDataViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _resizingMask, CPTableColumnResizingMaskKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isHidden, CPTableColumnIsHiddenKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isEditable, CPTableColumnIsEditableKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _sortDescriptorPrototype, CPSortDescriptorPrototypeKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPTableColumn") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableColumn\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setHeaderCell:"), function $CPTableColumn__setHeaderCell_(self, _cmd, aView) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "setHeaderCell: is not supported. -setHeaderCell:aView instead."); +} +},["void","CPView"]), new objj_method(sel_getUid("headerCell"), function $CPTableColumn__headerCell(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "headCell is not supported. -headerView instead."); +} +},["CPView"]), new objj_method(sel_getUid("setDataCell:"), function $CPTableColumn__setDataCell_(self, _cmd, aView) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "setDataCell: is not supported. Use -setHeaderCell:aView instead."); +} +},["void","CPView"]), new objj_method(sel_getUid("dataCell"), function $CPTableColumn__dataCell(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "dataCell is not supported. Use -dataCell instead."); +} +},["CPView"]), new objj_method(sel_getUid("dataCellForRow:"), function $CPTableColumn__dataCellForRow_(self, _cmd, row) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "dataCellForRow: is not supported. Use -dataViewForRow:row instead."); +} +},["id","int"])]); +} + +p;19;CPTableHeaderView.jt;31219;@STATIC;1.0;i;15;CPTableColumn.ji;13;CPTableView.ji;8;CPView.jt;31149;objj_executeFile("CPTableColumn.j", YES); +objj_executeFile("CPTableView.j", YES); +objj_executeFile("CPView.j", YES); +{var the_class = objj_allocateClassPair(CPView, "_CPTableColumnHeaderView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_textField")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPTableColumnHeaderView__initWithFrame_(self, _cmd, frame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTableColumnHeaderView").super_class }, "initWithFrame:", frame); + if (self) + objj_msgSend(self, "_init"); + return self; +} +},["void","CGRect"]), new objj_method(sel_getUid("_init"), function $_CPTableColumnHeaderView___init(self, _cmd) +{ with(self) +{ + _textField = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(_textField, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + objj_msgSend(_textField, "setLineBreakMode:", CPLineBreakByTruncatingTail); + objj_msgSend(_textField, "setAlignment:", CPLeftTextAlignment); + objj_msgSend(_textField, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(self, "addSubview:", _textField); +} +},["void"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPTableColumnHeaderView__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); + var inset = objj_msgSend(self, "currentValueForThemeAttribute:", "text-inset"), + bounds = objj_msgSend(self, "bounds"); + objj_msgSend(_textField, "setFrame:", { origin: { x:inset.right, y:inset.top }, size: { width:bounds.size.width - inset.right - inset.left, height:bounds.size.height - inset.top - inset.bottom } }); + objj_msgSend(_textField, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-color")); + objj_msgSend(_textField, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-font")); + objj_msgSend(_textField, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-color")); + objj_msgSend(_textField, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-offset")); + objj_msgSend(_textField, "setAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-alignment")); +} +},["void"]), new objj_method(sel_getUid("setStringValue:"), function $_CPTableColumnHeaderView__setStringValue_(self, _cmd, string) +{ with(self) +{ + objj_msgSend(_textField, "setText:", string); +} +},["void","CPString"]), new objj_method(sel_getUid("stringValue"), function $_CPTableColumnHeaderView__stringValue(self, _cmd) +{ with(self) +{ + return objj_msgSend(_textField, "text"); +} +},["CPString"]), new objj_method(sel_getUid("textField"), function $_CPTableColumnHeaderView__textField(self, _cmd) +{ with(self) +{ + return _textField; +} +},["void"]), new objj_method(sel_getUid("sizeToFit"), function $_CPTableColumnHeaderView__sizeToFit(self, _cmd) +{ with(self) +{ + objj_msgSend(_textField, "sizeToFit"); +} +},["void"]), new objj_method(sel_getUid("setFont:"), function $_CPTableColumnHeaderView__setFont_(self, _cmd, aFont) +{ with(self) +{ + objj_msgSend(_textField, "setFont:", aFont); +} +},["void","CPFont"]), new objj_method(sel_getUid("_setIndicatorImage:"), function $_CPTableColumnHeaderView___setIndicatorImage_(self, _cmd, anImage) +{ with(self) +{ + if (anImage) + { + objj_msgSend(_textField, "setImage:", anImage); + objj_msgSend(_textField, "setImagePosition:", CPImageRight); + } + else + { + objj_msgSend(_textField, "setImagePosition:", CPNoImage); + } +} +},["void","CPImage"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $_CPTableColumnHeaderView__themeClass(self, _cmd) +{ with(self) +{ + return "columnHeader"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $_CPTableColumnHeaderView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), CGInsetMakeZero(), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), CGSizeMakeZero()], ["background-color", "text-alignment", "text-inset", "text-color", "text-font", "text-shadow-color", "text-shadow-offset"]); +} +},["id"])]); +} +var _CPTableColumnHeaderViewStringValueKey = "_CPTableColumnHeaderViewStringValueKey", + _CPTableColumnHeaderViewFontKey = "_CPTableColumnHeaderViewFontKey", + _CPTableColumnHeaderViewImageKey = "_CPTableColumnHeaderViewImageKey"; +{ +var the_class = objj_getClass("_CPTableColumnHeaderView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPTableColumnHeaderView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPTableColumnHeaderView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTableColumnHeaderView").super_class }, "initWithCoder:", aCoder)) + { + objj_msgSend(self, "_init"); + objj_msgSend(self, "_setIndicatorImage:", objj_msgSend(aCoder, "decodeObjectForKey:", _CPTableColumnHeaderViewImageKey)); + objj_msgSend(self, "setStringValue:", objj_msgSend(aCoder, "decodeObjectForKey:", _CPTableColumnHeaderViewStringValueKey)); + objj_msgSend(self, "setFont:", objj_msgSend(aCoder, "decodeObjectForKey:", _CPTableColumnHeaderViewFontKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPTableColumnHeaderView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTableColumnHeaderView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_textField, "text"), _CPTableColumnHeaderViewStringValueKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_textField, "image"), _CPTableColumnHeaderViewImageKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_textField, "font"), _CPTableColumnHeaderViewFontKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPView, "CPTableHeaderView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_mouseDownLocation"), new objj_ivar("_previousTrackingLocation"), new objj_ivar("_activeColumn"), new objj_ivar("_pressedColumn"), new objj_ivar("_isResizing"), new objj_ivar("_isDragging"), new objj_ivar("_isTrackingColumn"), new objj_ivar("_drawsColumnLines"), new objj_ivar("_columnOldWidth"), new objj_ivar("_tableView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("tableView"), function $CPTableHeaderView__tableView(self, _cmd) +{ with(self) +{ +return _tableView; +} +},["id"]), +new objj_method(sel_getUid("setTableView:"), function $CPTableHeaderView__setTableView_(self, _cmd, newValue) +{ with(self) +{ +_tableView = newValue; +} +},["void","id"]), new objj_method(sel_getUid("_init"), function $CPTableHeaderView___init(self, _cmd) +{ with(self) +{ + _mouseDownLocation = { x:0.0, y:0.0 }; + _previousTrackingLocation = { x:0.0, y:0.0 }; + _activeColumn = -1; + _pressedColumn = -1; + _isResizing = NO; + _isDragging = NO; + _isTrackingColumn = NO; + _drawsColumnLines = YES; + _columnOldWidth = 0.0; + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); +} +},["void"]), new objj_method(sel_getUid("initWithFrame:"), function $CPTableHeaderView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableHeaderView").super_class }, "initWithFrame:", aFrame); + if (self) + objj_msgSend(self, "_init"); + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("columnAtPoint:"), function $CPTableHeaderView__columnAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(_tableView, "columnAtPoint:", CGPointMake(aPoint.x, aPoint.y)); +} +},["int","CGPoint"]), new objj_method(sel_getUid("headerRectOfColumn:"), function $CPTableHeaderView__headerRectOfColumn_(self, _cmd, aColumnIndex) +{ with(self) +{ + var headerRect = objj_msgSend(self, "bounds"), + columnRect = objj_msgSend(_tableView, "rectOfColumn:", aColumnIndex); + headerRect.origin.x = (columnRect.origin.x); + headerRect.size.width = (columnRect.size.width); + return headerRect; +} +},["CGRect","int"]), new objj_method(sel_getUid("setDrawsColumnLines:"), function $CPTableHeaderView__setDrawsColumnLines_(self, _cmd, aFlag) +{ with(self) +{ + _drawsColumnLines = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("drawsColumnLines"), function $CPTableHeaderView__drawsColumnLines(self, _cmd) +{ with(self) +{ + return _drawsColumnLines; +} +},["BOOL"]), new objj_method(sel_getUid("_cursorRectForColumn:"), function $CPTableHeaderView___cursorRectForColumn_(self, _cmd, column) +{ with(self) +{ + if (column == -1 || !(objj_msgSend(_tableView._tableColumns[column], "resizingMask") & CPTableColumnUserResizingMask)) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + var rect = objj_msgSend(self, "headerRectOfColumn:", column); + rect.origin.x = (rect.origin.x + rect.size.width) - 5; + rect.size.width = 20; + return rect; +} +},["CGRect","int"]), new objj_method(sel_getUid("_setPressedColumn:"), function $CPTableHeaderView___setPressedColumn_(self, _cmd, column) +{ with(self) +{ + if (_pressedColumn != -1) + { + var headerView = objj_msgSend(_tableView._tableColumns[_pressedColumn], "headerView"); + objj_msgSend(headerView, "unsetThemeState:", CPThemeStateHighlighted); + } + if (column != -1) + { + var headerView = objj_msgSend(_tableView._tableColumns[column], "headerView"); + objj_msgSend(headerView, "setThemeState:", CPThemeStateHighlighted); + } + _pressedColumn = column; +} +},["void","CPInteger"]), new objj_method(sel_getUid("mouseDown:"), function $CPTableHeaderView__mouseDown_(self, _cmd, theEvent) +{ with(self) +{ + objj_msgSend(self, "trackMouse:", theEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackMouse:"), function $CPTableHeaderView__trackMouse_(self, _cmd, theEvent) +{ with(self) +{ + var type = objj_msgSend(theEvent, "type"), + currentLocation = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(theEvent, "locationInWindow"), nil); + currentLocation.x -= 5.0; + var columnIndex = objj_msgSend(self, "columnAtPoint:", currentLocation), + shouldResize = objj_msgSend(self, "shouldResizeTableColumn:at:", columnIndex, { x:currentLocation.x + 5.0, y:currentLocation.y }); + if (type === CPLeftMouseUp) + { + if (shouldResize) + objj_msgSend(self, "stopResizingTableColumn:at:", _activeColumn, currentLocation); + else if (objj_msgSend(self, "_shouldStopTrackingTableColumn:at:", columnIndex, currentLocation)) + { + objj_msgSend(_tableView, "_didClickTableColumn:modifierFlags:", columnIndex, objj_msgSend(theEvent, "modifierFlags")); + objj_msgSend(self, "stopTrackingTableColumn:at:", columnIndex, currentLocation); + _isTrackingColumn = NO; + } + objj_msgSend(self, "_updateResizeCursor:", objj_msgSend(CPApp, "currentEvent")); + _activeColumn = CPNotFound; + return; + } + if (type === CPLeftMouseDown) + { + if (columnIndex === -1) + return; + _mouseDownLocation = currentLocation; + _activeColumn = columnIndex; + objj_msgSend(_tableView, "_sendDelegateDidMouseDownInHeader:", columnIndex); + if (shouldResize) + objj_msgSend(self, "startResizingTableColumn:at:", columnIndex, currentLocation); + else + { + objj_msgSend(self, "startTrackingTableColumn:at:", columnIndex, currentLocation); + _isTrackingColumn = YES; + } + } + else if (type === CPLeftMouseDragged) + { + if (shouldResize) + objj_msgSend(self, "continueResizingTableColumn:at:", _activeColumn, currentLocation); + else + { + if (_activeColumn === columnIndex && (currentLocation.x >= (objj_msgSend(self, "headerRectOfColumn:", columnIndex).origin.x) && currentLocation.y >= (objj_msgSend(self, "headerRectOfColumn:", columnIndex).origin.y) && currentLocation.x < (objj_msgSend(self, "headerRectOfColumn:", columnIndex).origin.x + objj_msgSend(self, "headerRectOfColumn:", columnIndex).size.width) && currentLocation.y < (objj_msgSend(self, "headerRectOfColumn:", columnIndex).origin.y + objj_msgSend(self, "headerRectOfColumn:", columnIndex).size.height))) + { + if (_isTrackingColumn && _pressedColumn !== -1) + { + if (!objj_msgSend(self, "continueTrackingTableColumn:at:", columnIndex, currentLocation)) + return; + } else + objj_msgSend(self, "startTrackingTableColumn:at:", columnIndex, currentLocation); + } else if (_isTrackingColumn && _pressedColumn !== -1) + objj_msgSend(self, "stopTrackingTableColumn:at:", _activeColumn, currentLocation); + } + } + _previousTrackingLocation = currentLocation; + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackMouse:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("startTrackingTableColumn:at:"), function $CPTableHeaderView__startTrackingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + objj_msgSend(self, "_setPressedColumn:", aColumnIndex); +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("continueTrackingTableColumn:at:"), function $CPTableHeaderView__continueTrackingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + if (objj_msgSend(self, "_shouldDragTableColumn:at:", aColumnIndex, aPoint)) + { + var columnRect = objj_msgSend(self, "headerRectOfColumn:", aColumnIndex), + offset = { x:0.0, y:0.0 }, + view = objj_msgSend(_tableView, "_dragViewForColumn:event:offset:", aColumnIndex, objj_msgSend(CPApp, "currentEvent"), offset), + viewLocation = { x:0.0, y:0.0 }; + viewLocation.x = ( (columnRect.origin.x) + offset.x ) + ( aPoint.x - _mouseDownLocation.x ); + viewLocation.y = (columnRect.origin.y) + offset.y; + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", view, viewLocation, { width:0.0, height:0.0 }, objj_msgSend(CPApp, "currentEvent"), objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard), self, YES); + return NO; + } + return YES; +} +},["BOOL","int","CGPoint"]), new objj_method(sel_getUid("_shouldStopTrackingTableColumn:at:"), function $CPTableHeaderView___shouldStopTrackingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + return _isTrackingColumn && _activeColumn === aColumnIndex && + (aPoint.x >= (objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).origin.x) && aPoint.y >= (objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).origin.y) && aPoint.x < (objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).origin.x + objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).size.width) && aPoint.y < (objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).origin.y + objj_msgSend(self, "headerRectOfColumn:", aColumnIndex).size.height)); +} +},["BOOL","int","CGPoint"]), new objj_method(sel_getUid("stopTrackingTableColumn:at:"), function $CPTableHeaderView__stopTrackingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + objj_msgSend(self, "_setPressedColumn:", CPNotFound); + objj_msgSend(self, "_updateResizeCursor:", objj_msgSend(CPApp, "currentEvent")); +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("_shouldDragTableColumn:at:"), function $CPTableHeaderView___shouldDragTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + return objj_msgSend(_tableView, "allowsColumnReordering") && ABS(aPoint.x - _mouseDownLocation.x) >= 10.0; +} +},["BOOL","int","CGPoint"]), new objj_method(sel_getUid("_headerRectOfLastVisibleColumn"), function $CPTableHeaderView___headerRectOfLastVisibleColumn(self, _cmd) +{ with(self) +{ + var tableColumns = objj_msgSend(_tableView, "tableColumns"), + columnIndex = objj_msgSend(tableColumns, "count"); + while (columnIndex--) + { + var tableColumn = objj_msgSend(tableColumns, "objectAtIndex:", columnIndex); + if (!objj_msgSend(tableColumn, "isHidden")) + return objj_msgSend(self, "headerRectOfColumn:", columnIndex); + } + return nil; +} +},["CGRect"]), new objj_method(sel_getUid("_constrainDragView:at:"), function $CPTableHeaderView___constrainDragView_at_(self, _cmd, theDragView, aPoint) +{ with(self) +{ + var tableColumns = objj_msgSend(_tableView, "tableColumns"), + lastColumnRect = objj_msgSend(self, "_headerRectOfLastVisibleColumn"), + activeColumnRect = objj_msgSend(self, "headerRectOfColumn:", _activeColumn), + dragWindow = objj_msgSend(theDragView, "window"), + frame = objj_msgSend(dragWindow, "frame"); + frame.origin = objj_msgSend(objj_msgSend(self, "window"), "convertGlobalToBase:", frame.origin); + frame.origin = objj_msgSend(self, "convertPoint:fromView:", frame.origin, nil); + frame.origin.x = MAX(0.0, MIN((frame.origin.x), (lastColumnRect.origin.x + lastColumnRect.size.width) - (activeColumnRect.size.width))); + frame.origin.y = (lastColumnRect.origin.y); + frame.origin = objj_msgSend(self, "convertPoint:toView:", frame.origin, nil); + frame.origin = objj_msgSend(objj_msgSend(self, "window"), "convertBaseToGlobal:", frame.origin); + objj_msgSend(dragWindow, "setFrame:", frame); +} +},["void","CPView","CGPoint"]), new objj_method(sel_getUid("_moveColumn:toColumn:"), function $CPTableHeaderView___moveColumn_toColumn_(self, _cmd, aFromIndex, aToIndex) +{ with(self) +{ + objj_msgSend(_tableView, "moveColumn:toColumn:", aFromIndex, aToIndex); + _activeColumn = aToIndex; + _pressedColumn = _activeColumn; +} +},["void","int","int"]), new objj_method(sel_getUid("draggedView:beganAt:"), function $CPTableHeaderView__draggedView_beganAt_(self, _cmd, aView, aPoint) +{ with(self) +{ + _isDragging = YES; + var column = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", _activeColumn); + objj_msgSend(objj_msgSend(column, "headerView"), "setHidden:", YES); + objj_msgSend(_tableView, "_setDraggedColumn:", column); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPView","CGPoint"]), new objj_method(sel_getUid("draggedView:movedTo:"), function $CPTableHeaderView__draggedView_movedTo_(self, _cmd, aView, aPoint) +{ with(self) +{ + objj_msgSend(self, "_constrainDragView:at:", aView, aPoint); + var dragWindow = objj_msgSend(aView, "window"), + dragWindowFrame = objj_msgSend(dragWindow, "frame"); + var hoverPoint = CGPointCreateCopy(aPoint); + if (aPoint.x < _previousTrackingLocation.x) + hoverPoint = { x:(dragWindowFrame.origin.x), y:(dragWindowFrame.origin.y) }; + else if (aPoint.x > _previousTrackingLocation.x) + hoverPoint = { x:(dragWindowFrame.origin.x + dragWindowFrame.size.width), y:(dragWindowFrame.origin.y) }; + hoverPoint = objj_msgSend(objj_msgSend(self, "window"), "convertGlobalToBase:", hoverPoint); + hoverPoint = objj_msgSend(self, "convertPoint:fromView:", hoverPoint, nil); + var hoveredColumn = objj_msgSend(self, "columnAtPoint:", hoverPoint); + if (hoveredColumn !== -1) + { + var columnRect = objj_msgSend(self, "headerRectOfColumn:", hoveredColumn), + columnCenterPoint = objj_msgSend(self, "convertPoint:fromView:", CGPointMake((columnRect.origin.x + (columnRect.size.width) / 2.0), (columnRect.origin.y + (columnRect.size.height) / 2.0)), self); + if (hoveredColumn < _activeColumn && hoverPoint.x < columnCenterPoint.x) + objj_msgSend(self, "_moveColumn:toColumn:", _activeColumn, hoveredColumn); + else if (hoveredColumn > _activeColumn && hoverPoint.x > columnCenterPoint.x) + objj_msgSend(self, "_moveColumn:toColumn:", _activeColumn, hoveredColumn); + } + _previousTrackingLocation = aPoint; +} +},["void","CPView","CGPoint"]), new objj_method(sel_getUid("draggedView:endedAt:operation:"), function $CPTableHeaderView__draggedView_endedAt_operation_(self, _cmd, aView, aLocation, anOperation) +{ with(self) +{ + _isDragging = NO; + _isTrackingColumn = NO; + objj_msgSend(_tableView, "_setDraggedColumn:", nil); + objj_msgSend(objj_msgSend(objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", _activeColumn), "headerView"), "setHidden:", NO); + objj_msgSend(self, "stopTrackingTableColumn:at:", _activeColumn, aLocation); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPImage","CGPoint","CPDragOperation"]), new objj_method(sel_getUid("shouldResizeTableColumn:at:"), function $CPTableHeaderView__shouldResizeTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + if (_isResizing) + return YES; + if (_isTrackingColumn) + return NO; + return objj_msgSend(_tableView, "allowsColumnResizing") && (aPoint.x >= (objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).origin.x) && aPoint.y >= (objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).origin.y) && aPoint.x < (objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).origin.x + objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).size.width) && aPoint.y < (objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).origin.y + objj_msgSend(self, "_cursorRectForColumn:", aColumnIndex).size.height)); +} +},["BOOL","int","CGPoint"]), new objj_method(sel_getUid("startResizingTableColumn:at:"), function $CPTableHeaderView__startResizingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + _isResizing = YES; + var tableColumn = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", aColumnIndex); + objj_msgSend(tableColumn, "setDisableResizingPosting:", YES); + objj_msgSend(_tableView, "setDisableAutomaticResizing:", YES); +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("continueResizingTableColumn:at:"), function $CPTableHeaderView__continueResizingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + var tableColumn = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", aColumnIndex), + newWidth = objj_msgSend(tableColumn, "width") + aPoint.x - _previousTrackingLocation.x; + if (newWidth < objj_msgSend(tableColumn, "minWidth")) + objj_msgSend(objj_msgSend(CPCursor, "resizeRightCursor"), "set"); + else if (newWidth > objj_msgSend(tableColumn, "maxWidth")) + objj_msgSend(objj_msgSend(CPCursor, "resizeLeftCursor"), "set"); + else + { + _tableView._lastColumnShouldSnap = NO; + objj_msgSend(tableColumn, "setWidth:", newWidth); + objj_msgSend(objj_msgSend(CPCursor, "resizeLeftRightCursor"), "set"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("stopResizingTableColumn:at:"), function $CPTableHeaderView__stopResizingTableColumn_at_(self, _cmd, aColumnIndex, aPoint) +{ with(self) +{ + var tableColumn = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", aColumnIndex); + objj_msgSend(tableColumn, "_postDidResizeNotificationWithOldWidth:", _columnOldWidth); + objj_msgSend(tableColumn, "setDisableResizingPosting:", NO); + objj_msgSend(_tableView, "setDisableAutomaticResizing:", NO); + _isResizing = NO; +} +},["void","int","CGPoint"]), new objj_method(sel_getUid("_updateResizeCursor:"), function $CPTableHeaderView___updateResizeCursor_(self, _cmd, theEvent) +{ with(self) +{ + if (!objj_msgSend(_tableView, "allowsColumnResizing") || (objj_msgSend(theEvent, "type") === CPLeftMouseUp && !objj_msgSend(objj_msgSend(self, "window"), "acceptsMouseMovedEvents"))) + { + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); + return; + } + var mouseLocation = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(theEvent, "locationInWindow"), nil), + mouseOverLocation = CGPointMake(mouseLocation.x - 5, mouseLocation.y), + overColumn = objj_msgSend(self, "columnAtPoint:", mouseOverLocation); + if (overColumn >= 0 && (mouseLocation.x >= (objj_msgSend(self, "_cursorRectForColumn:", overColumn).origin.x) && mouseLocation.y >= (objj_msgSend(self, "_cursorRectForColumn:", overColumn).origin.y) && mouseLocation.x < (objj_msgSend(self, "_cursorRectForColumn:", overColumn).origin.x + objj_msgSend(self, "_cursorRectForColumn:", overColumn).size.width) && mouseLocation.y < (objj_msgSend(self, "_cursorRectForColumn:", overColumn).origin.y + objj_msgSend(self, "_cursorRectForColumn:", overColumn).size.height))) + { + var tableColumn = objj_msgSend(objj_msgSend(_tableView, "tableColumns"), "objectAtIndex:", overColumn), + width = objj_msgSend(tableColumn, "width"); + if (width == objj_msgSend(tableColumn, "minWidth")) + objj_msgSend(objj_msgSend(CPCursor, "resizeRightCursor"), "set"); + else if (width == objj_msgSend(tableColumn, "maxWidth")) + objj_msgSend(objj_msgSend(CPCursor, "resizeLeftCursor"), "set"); + else + objj_msgSend(objj_msgSend(CPCursor, "resizeLeftRightCursor"), "set"); + } + else + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseEntered:"), function $CPTableHeaderView__mouseEntered_(self, _cmd, theEvent) +{ with(self) +{ + objj_msgSend(self, "_updateResizeCursor:", theEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseMoved:"), function $CPTableHeaderView__mouseMoved_(self, _cmd, theEvent) +{ with(self) +{ + objj_msgSend(self, "_updateResizeCursor:", theEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseExited:"), function $CPTableHeaderView__mouseExited_(self, _cmd, theEvent) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPCursor, "arrowCursor"), "set"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("layoutSubviews"), function $CPTableHeaderView__layoutSubviews(self, _cmd) +{ with(self) +{ + var tableColumns = objj_msgSend(_tableView, "tableColumns"), + count = objj_msgSend(tableColumns, "count"); + for (var i = 0; i < count; i++) + { + var column = objj_msgSend(tableColumns, "objectAtIndex:", i), + headerView = objj_msgSend(column, "headerView"); + var frame = objj_msgSend(self, "headerRectOfColumn:", i); + frame.size.height -= 0.5; + if (i > 0) + { + frame.origin.x += 0.5; + frame.size.width -= 1; + } + objj_msgSend(headerView, "setFrame:", frame); + if(objj_msgSend(headerView, "superview") != self) + objj_msgSend(self, "addSubview:", headerView); + } + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "background-color")); +} +},["void"]), new objj_method(sel_getUid("drawRect:"), function $CPTableHeaderView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + if (!_tableView || !objj_msgSend(self, "drawsColumnLines")) + return; + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + exposedColumnIndexes = objj_msgSend(_tableView, "columnIndexesInRect:", aRect), + columnsArray = [], + tableColumns = objj_msgSend(_tableView, "tableColumns"), + exposedTableColumns = _tableView._exposedColumns, + firstIndex = objj_msgSend(exposedTableColumns, "firstIndex"), + exposedRange = CPMakeRange(firstIndex, objj_msgSend(exposedTableColumns, "lastIndex") - firstIndex + 1); + CGContextSetLineWidth(context, 1); + CGContextSetStrokeColor(context, objj_msgSend(self, "currentValueForThemeAttribute:", "divider-color")); + objj_msgSend(exposedColumnIndexes, "getIndexes:maxCount:inIndexRange:", columnsArray, -1, exposedRange); + var columnArrayIndex = 0, + columnArrayCount = columnsArray.length, + columnMaxX; + CGContextBeginPath(context); + for(; columnArrayIndex < columnArrayCount; columnArrayIndex++) + { + var columnIndex = columnsArray[columnArrayIndex], + columnToStroke = objj_msgSend(self, "headerRectOfColumn:", columnIndex); + columnMaxX = (columnToStroke.origin.x + columnToStroke.size.width); + CGContextMoveToPoint(context, ROUND(columnMaxX) + 0.5, ROUND((columnToStroke.origin.y))); + CGContextAddLineToPoint(context, ROUND(columnMaxX) + 0.5, ROUND((columnToStroke.origin.y + columnToStroke.size.height))); + } + CGContextClosePath(context); + CGContextStrokePath(context); +} +},["void","CGRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPTableHeaderView__themeClass(self, _cmd) +{ with(self) +{ + return "tableHeaderRow"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPTableHeaderView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), objj_msgSend(CPColor, "grayColor")], ["background-color", "divider-color"]); +} +},["id"])]); +} +var CPTableHeaderViewTableViewKey = "CPTableHeaderViewTableViewKey", + CPTableHeaderViewDrawsColumnLines = "CPTableHeaderViewDrawsColumnLines"; +{ +var the_class = objj_getClass("CPTableHeaderView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableHeaderView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTableHeaderView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableHeaderView").super_class }, "initWithCoder:", aCoder)) + { + objj_msgSend(self, "_init"); + _tableView = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableHeaderViewTableViewKey); + _drawsColumnLines = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableHeaderViewDrawsColumnLines); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTableHeaderView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableHeaderView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _tableView, CPTableHeaderViewTableViewKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _drawsColumnLines, CPTableHeaderViewDrawsColumnLines); +} +},["void","CPCoder"])]); +} + +p;13;CPTableView.jt;141459;@STATIC;1.0;I;20;Foundation/CPArray.jI;19;AppKit/CGGradient.ji;11;CPControl.ji;15;CPTableColumn.ji;15;_CPCornerView.ji;12;CPScroller.jt;141316;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("AppKit/CGGradient.j", NO); +objj_executeFile("CPControl.j", YES); +objj_executeFile("CPTableColumn.j", YES); +objj_executeFile("_CPCornerView.j", YES); +objj_executeFile("CPScroller.j", YES); +CPTableViewColumnDidMoveNotification = "CPTableViewColumnDidMoveNotification"; +CPTableViewColumnDidResizeNotification = "CPTableViewColumnDidResizeNotification"; +CPTableViewSelectionDidChangeNotification = "CPTableViewSelectionDidChangeNotification"; +CPTableViewSelectionIsChangingNotification = "CPTableViewSelectionIsChangingNotification"; +var CPTableViewDataSource_numberOfRowsInTableView_ = 1 << 0, + CPTableViewDataSource_tableView_objectValueForTableColumn_row_ = 1 << 1, + CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_ = 1 << 2, + CPTableViewDataSource_tableView_acceptDrop_row_dropOperation_ = 1 << 3, + CPTableViewDataSource_tableView_namesOfPromisedFilesDroppedAtDestination_forDraggedRowsWithIndexes_ = 1 << 4, + CPTableViewDataSource_tableView_validateDrop_proposedRow_proposedDropOperation_ = 1 << 5, + CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_ = 1 << 6, + CPTableViewDataSource_tableView_sortDescriptorsDidChange_ = 1 << 7; +var CPTableViewDelegate_selectionShouldChangeInTableView_ = 1 << 0, + CPTableViewDelegate_tableView_dataViewForTableColumn_row_ = 1 << 1, + CPTableViewDelegate_tableView_didClickTableColumn_ = 1 << 2, + CPTableViewDelegate_tableView_didDragTableColumn_ = 1 << 3, + CPTableViewDelegate_tableView_heightOfRow_ = 1 << 4, + CPTableViewDelegate_tableView_isGroupRow_ = 1 << 5, + CPTableViewDelegate_tableView_mouseDownInHeaderOfTableColumn_ = 1 << 6, + CPTableViewDelegate_tableView_nextTypeSelectMatchFromRow_toRow_forString_ = 1 << 7, + CPTableViewDelegate_tableView_selectionIndexesForProposedSelection_ = 1 << 8, + CPTableViewDelegate_tableView_shouldEditTableColumn_row_ = 1 << 9, + CPTableViewDelegate_tableView_shouldSelectRow_ = 1 << 10, + CPTableViewDelegate_tableView_shouldSelectTableColumn_ = 1 << 11, + CPTableViewDelegate_tableView_shouldShowViewExpansionForTableColumn_row_ = 1 << 12, + CPTableViewDelegate_tableView_shouldTrackView_forTableColumn_row_ = 1 << 13, + CPTableViewDelegate_tableView_shouldTypeSelectForEvent_withCurrentSearchString_ = 1 << 14, + CPTableViewDelegate_tableView_toolTipForView_rect_tableColumn_row_mouseLocation_ = 1 << 15, + CPTableViewDelegate_tableView_typeSelectStringForTableColumn_row_ = 1 << 16, + CPTableViewDelegate_tableView_willDisplayView_forTableColumn_row_ = 1 << 17, + CPTableViewDelegate_tableViewSelectionDidChange_ = 1 << 18, + CPTableViewDelegate_tableViewSelectionIsChanging_ = 1 << 19; +CPTableViewDraggingDestinationFeedbackStyleNone = -1; +CPTableViewDraggingDestinationFeedbackStyleRegular = 0; +CPTableViewDraggingDestinationFeedbackStyleSourceList = 1; +CPTableViewDropOn = 0; +CPTableViewDropAbove = 1; +CPSourceListGradient = "CPSourceListGradient"; +CPSourceListTopLineColor = "CPSourceListTopLineColor"; +CPSourceListBottomLineColor = "CPSourceListBottomLineColor"; +CPTableViewSelectionHighlightStyleNone = -1; +CPTableViewSelectionHighlightStyleRegular = 0; +CPTableViewSelectionHighlightStyleSourceList = 1; +CPTableViewGridNone = 0; +CPTableViewSolidVerticalGridLineMask = 1 << 0; +CPTableViewSolidHorizontalGridLineMask = 1 << 1; +CPTableViewNoColumnAutoresizing = 0; +CPTableViewUniformColumnAutoresizingStyle = 1; +CPTableViewSequentialColumnAutoresizingStyle = 2; +CPTableViewReverseSequentialColumnAutoresizingStyle = 3; +CPTableViewLastColumnOnlyAutoresizingStyle = 4; +CPTableViewFirstColumnOnlyAutoresizingStyle = 5; +{var the_class = objj_allocateClassPair(CPView, "_CPTableDrawView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_tableView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithTableView:"), function $_CPTableDrawView__initWithTableView_(self, _cmd, aTableView) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTableDrawView").super_class }, "init"); + if (self) + _tableView = aTableView; + return self; +} +},["id","CPTableView"]), new objj_method(sel_getUid("drawRect:"), function $_CPTableDrawView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var frame = objj_msgSend(self, "frame"), + context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextTranslateCTM(context, -(frame.origin.x), -(frame.origin.y)); + objj_msgSend(_tableView, "_drawRect:", aRect); +} +},["void","CGRect"])]); +} +{var the_class = objj_allocateClassPair(CPControl, "CPTableView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_dataSource"), new objj_ivar("_implementedDataSourceMethods"), new objj_ivar("_delegate"), new objj_ivar("_implementedDelegateMethods"), new objj_ivar("_tableColumns"), new objj_ivar("_tableColumnRanges"), new objj_ivar("_dirtyTableColumnRangeIndex"), new objj_ivar("_numberOfHiddenColumns"), new objj_ivar("_reloadAllRows"), new objj_ivar("_objectValues"), new objj_ivar("_exposedRows"), new objj_ivar("_exposedColumns"), new objj_ivar("_dataViewsForTableColumns"), new objj_ivar("_cachedDataViews"), new objj_ivar("_allowsColumnReordering"), new objj_ivar("_allowsColumnResizing"), new objj_ivar("_allowsColumnSelection"), new objj_ivar("_allowsMultipleSelection"), new objj_ivar("_allowsEmptySelection"), new objj_ivar("_sortDescriptors"), new objj_ivar("_intercellSpacing"), new objj_ivar("_rowHeight"), new objj_ivar("_usesAlternatingRowBackgroundColors"), new objj_ivar("_alternatingRowBackgroundColors"), new objj_ivar("_selectionHighlightStyle"), new objj_ivar("_currentHighlightedTableColumn"), new objj_ivar("_gridStyleMask"), new objj_ivar("_numberOfRows"), new objj_ivar("_headerView"), new objj_ivar("_cornerView"), new objj_ivar("_selectedColumnIndexes"), new objj_ivar("_selectedRowIndexes"), new objj_ivar("_selectionAnchorRow"), new objj_ivar("_lastSelectedRow"), new objj_ivar("_previouslySelectedRowIndexes"), new objj_ivar("_startTrackingPoint"), new objj_ivar("_startTrackingTimestamp"), new objj_ivar("_trackingPointMovedOutOfClickSlop"), new objj_ivar("_editingCellIndex"), new objj_ivar("_tableDrawView"), new objj_ivar("_doubleAction"), new objj_ivar("_clickedRow"), new objj_ivar("_columnAutoResizingStyle"), new objj_ivar("_lastTrackedRowIndex"), new objj_ivar("_originalMouseDownPoint"), new objj_ivar("_verticalMotionCanDrag"), new objj_ivar("_destinationDragStyle"), new objj_ivar("_isSelectingSession"), new objj_ivar("_draggedRowIndexes"), new objj_ivar("_dropOperationFeedbackView"), new objj_ivar("_dragOperationDefaultMask"), new objj_ivar("_retargetedDropRow"), new objj_ivar("_retargetedDropOperation"), new objj_ivar("_disableAutomaticResizing"), new objj_ivar("_lastColumnShouldSnap"), new objj_ivar("_implementsCustomDrawRow"), new objj_ivar("_draggedColumn"), new objj_ivar("_differedColumnDataToRemove")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("disableAutomaticResizing"), function $CPTableView__disableAutomaticResizing(self, _cmd) +{ with(self) +{ +return _disableAutomaticResizing; +} +},["id"]), +new objj_method(sel_getUid("setDisableAutomaticResizing:"), function $CPTableView__setDisableAutomaticResizing_(self, _cmd, newValue) +{ with(self) +{ +_disableAutomaticResizing = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithFrame:"), function $CPTableView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _allowsColumnReordering = YES; + _allowsColumnResizing = YES; + _allowsMultipleSelection = NO; + _allowsEmptySelection = YES; + _allowsColumnSelection = NO; + _disableAutomaticResizing = NO; + _selectionHighlightStyle = CPTableViewSelectionHighlightStyleRegular; + objj_msgSend(self, "setUsesAlternatingRowBackgroundColors:", NO); + objj_msgSend(self, "setAlternatingRowBackgroundColors:", + [objj_msgSend(CPColor, "whiteColor"), objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", 245.0 / 255.0, 249.0 / 255.0, 252.0 / 255.0, 1.0)]); + _tableColumns = []; + _tableColumnRanges = []; + _dirtyTableColumnRangeIndex = CPNotFound; + _numberOfHiddenColumns = 0; + _intercellSpacing = { width:3.0, height:2.0 }; + _rowHeight = 23.0; + objj_msgSend(self, "setGridColor:", objj_msgSend(CPColor, "colorWithHexString:", "dce0e2")); + objj_msgSend(self, "setGridStyleMask:", CPTableViewGridNone); + _headerView = objj_msgSend(objj_msgSend(CPTableHeaderView, "alloc"), "initWithFrame:", CGRectMake(0, 0, objj_msgSend(self, "bounds").size.width, _rowHeight)); + objj_msgSend(_headerView, "setTableView:", self); + _cornerView = nil; + _lastSelectedRow = -1; + _currentHighlightedTableColumn = nil; + _sortDescriptors = objj_msgSend(CPArray, "array"); + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _verticalMotionCanDrag = YES; + _isSelectingSession = NO; + _retargetedDropRow = nil; + _retargetedDropOperation = nil; + _dragOperationDefaultMask = nil; + _destinationDragStyle = CPTableViewDraggingDestinationFeedbackStyleRegular; + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(self, "_init"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("_init"), function $CPTableView___init(self, _cmd) +{ with(self) +{ + _tableViewFlags = 0; + _selectedColumnIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _selectedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + _dropOperationFeedbackView = objj_msgSend(objj_msgSend(_CPDropOperationDrawingView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(_dropOperationFeedbackView, "setTableView:", self); + _lastColumnShouldSnap = NO; + if (!_alternatingRowBackgroundColors) + _alternatingRowBackgroundColors = [objj_msgSend(CPColor, "whiteColor"), objj_msgSend(CPColor, "colorWithHexString:", "e4e7ff")]; + _selectionHighlightColor = objj_msgSend(CPColor, "colorWithHexString:", "5f83b9"); + _tableColumnRanges = []; + _dirtyTableColumnRangeIndex = 0; + _numberOfHiddenColumns = 0; + _objectValues = { }; + _dataViewsForTableColumns = { }; + _dataViews= []; + _numberOfRows = 0; + _exposedRows = objj_msgSend(CPIndexSet, "indexSet"); + _exposedColumns = objj_msgSend(CPIndexSet, "indexSet"); + _cachedDataViews = { }; + _tableDrawView = objj_msgSend(objj_msgSend(_CPTableDrawView, "alloc"), "initWithTableView:", self); + objj_msgSend(_tableDrawView, "setBackgroundColor:", objj_msgSend(CPColor, "clearColor")); + objj_msgSend(self, "addSubview:", _tableDrawView); + if (!_headerView) + _headerView = objj_msgSend(objj_msgSend(CPTableHeaderView, "alloc"), "initWithFrame:", CGRectMake(0, 0, objj_msgSend(self, "bounds").size.width, _rowHeight)); + objj_msgSend(_headerView, "setTableView:", self); + if (!_cornerView) + _cornerView = objj_msgSend(objj_msgSend(_CPCornerView, "alloc"), "initWithFrame:", CGRectMake(0, 0, objj_msgSend(CPScroller, "scrollerWidth"), CGRectGetHeight(objj_msgSend(_headerView, "frame")))); + _draggedColumn = nil; + _differedColumnDataToRemove = [ ]; + _implementsCustomDrawRow = objj_msgSend(self, "implementsSelector:", sel_getUid("drawRow:clipRect:")); +} +},["void"]), new objj_method(sel_getUid("setDataSource:"), function $CPTableView__setDataSource_(self, _cmd, aDataSource) +{ with(self) +{ + if (_dataSource === aDataSource) + return; + _dataSource = aDataSource; + _implementedDataSourceMethods = 0; + if (!_dataSource) + return; + var hasContentBinding = !!objj_msgSend(self, "infoForBinding:", "content"); + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("numberOfRowsInTableView:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_numberOfRowsInTableView_; + else if (!hasContentBinding) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, objj_msgSend(aDataSource, "description") + " does not implement numberOfRowsInTableView:."); + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:objectValueForTableColumn:row:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_objectValueForTableColumn_row_; + else if (!hasContentBinding) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, objj_msgSend(aDataSource, "description") + " does not implement tableView:objectValueForTableColumn:row:"); + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:setObjectValue:forTableColumn:row:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:acceptDrop:row:dropOperation:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_acceptDrop_row_dropOperation_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_namesOfPromisedFilesDroppedAtDestination_forDraggedRowsWithIndexes_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:validateDrop:proposedRow:proposedDropOperation:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_validateDrop_proposedRow_proposedDropOperation_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:writeRowsWithIndexes:toPasteboard:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_; + if (objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:sortDescriptorsDidChange:"))) + _implementedDataSourceMethods |= CPTableViewDataSource_tableView_sortDescriptorsDidChange_; + objj_msgSend(self, "reloadData"); +} +},["void","id"]), new objj_method(sel_getUid("dataSource"), function $CPTableView__dataSource(self, _cmd) +{ with(self) +{ + return _dataSource; +} +},["id"]), new objj_method(sel_getUid("reloadDataForRowIndexes:columnIndexes:"), function $CPTableView__reloadDataForRowIndexes_columnIndexes_(self, _cmd, rowIndexes, columnIndexes) +{ with(self) +{ + objj_msgSend(self, "reloadData"); +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("reloadData"), function $CPTableView__reloadData(self, _cmd) +{ with(self) +{ + _reloadAllRows = YES; + _objectValues = { }; + objj_msgSend(self, "noteNumberOfRowsChanged"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void"]), new objj_method(sel_getUid("setDoubleAction:"), function $CPTableView__setDoubleAction_(self, _cmd, anAction) +{ with(self) +{ + _doubleAction = anAction; +} +},["void","SEL"]), new objj_method(sel_getUid("doubleAction"), function $CPTableView__doubleAction(self, _cmd) +{ with(self) +{ + return _doubleAction; +} +},["SEL"]), new objj_method(sel_getUid("clickedRow"), function $CPTableView__clickedRow(self, _cmd) +{ with(self) +{ + return _clickedRow; +} +},["CPInteger"]), new objj_method(sel_getUid("setAllowsColumnReordering:"), function $CPTableView__setAllowsColumnReordering_(self, _cmd, shouldAllowColumnReordering) +{ with(self) +{ + _allowsColumnReordering = !!shouldAllowColumnReordering; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsColumnReordering"), function $CPTableView__allowsColumnReordering(self, _cmd) +{ with(self) +{ + return _allowsColumnReordering; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsColumnResizing:"), function $CPTableView__setAllowsColumnResizing_(self, _cmd, shouldAllowColumnResizing) +{ with(self) +{ + _allowsColumnResizing = !!shouldAllowColumnResizing; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsColumnResizing"), function $CPTableView__allowsColumnResizing(self, _cmd) +{ with(self) +{ + return _allowsColumnResizing; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsMultipleSelection:"), function $CPTableView__setAllowsMultipleSelection_(self, _cmd, shouldAllowMultipleSelection) +{ with(self) +{ + _allowsMultipleSelection = !!shouldAllowMultipleSelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsMultipleSelection"), function $CPTableView__allowsMultipleSelection(self, _cmd) +{ with(self) +{ + return _allowsMultipleSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsEmptySelection:"), function $CPTableView__setAllowsEmptySelection_(self, _cmd, shouldAllowEmptySelection) +{ with(self) +{ + _allowsEmptySelection = !!shouldAllowEmptySelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsEmptySelection"), function $CPTableView__allowsEmptySelection(self, _cmd) +{ with(self) +{ + return _allowsEmptySelection; +} +},["BOOL"]), new objj_method(sel_getUid("setAllowsColumnSelection:"), function $CPTableView__setAllowsColumnSelection_(self, _cmd, shouldAllowColumnSelection) +{ with(self) +{ + _allowsColumnSelection = !!shouldAllowColumnSelection; +} +},["void","BOOL"]), new objj_method(sel_getUid("allowsColumnSelection"), function $CPTableView__allowsColumnSelection(self, _cmd) +{ with(self) +{ + return _allowsColumnSelection; +} +},["BOOL"]), new objj_method(sel_getUid("setIntercellSpacing:"), function $CPTableView__setIntercellSpacing_(self, _cmd, aSize) +{ with(self) +{ + if ((_intercellSpacing.width == aSize.width && _intercellSpacing.height == aSize.height)) + return; + _intercellSpacing = { width:aSize.width, height:aSize.height }; + _dirtyTableColumnRangeIndex = 0; + objj_msgSend(self, "_recalculateTableColumnRanges"); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(_headerView, "setNeedsDisplay:", YES); + objj_msgSend(_headerView, "setNeedsLayout"); +} +},["void","CGSize"]), new objj_method(sel_getUid("setThemeState:"), function $CPTableView__setThemeState_(self, _cmd, astae) +{ with(self) +{ +} +},["void","int"]), new objj_method(sel_getUid("intercellSpacing"), function $CPTableView__intercellSpacing(self, _cmd) +{ with(self) +{ + return { width:_intercellSpacing.width, height:_intercellSpacing.height }; +} +},["CGSize"]), new objj_method(sel_getUid("setRowHeight:"), function $CPTableView__setRowHeight_(self, _cmd, aRowHeight) +{ with(self) +{ + aRowHeight = +aRowHeight; + if (_rowHeight === aRowHeight) + return; + _rowHeight = MAX(0.0, aRowHeight); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","unsigned"]), new objj_method(sel_getUid("rowHeight"), function $CPTableView__rowHeight(self, _cmd) +{ with(self) +{ + return _rowHeight; +} +},["unsigned"]), new objj_method(sel_getUid("setUsesAlternatingRowBackgroundColors:"), function $CPTableView__setUsesAlternatingRowBackgroundColors_(self, _cmd, shouldUseAlternatingRowBackgroundColors) +{ with(self) +{ + _usesAlternatingRowBackgroundColors = shouldUseAlternatingRowBackgroundColors; +} +},["void","BOOL"]), new objj_method(sel_getUid("usesAlternatingRowBackgroundColors"), function $CPTableView__usesAlternatingRowBackgroundColors(self, _cmd) +{ with(self) +{ + return _usesAlternatingRowBackgroundColors; +} +},["BOOL"]), new objj_method(sel_getUid("setAlternatingRowBackgroundColors:"), function $CPTableView__setAlternatingRowBackgroundColors_(self, _cmd, alternatingRowBackgroundColors) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", alternatingRowBackgroundColors, "alternating-row-colors"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPArray"]), new objj_method(sel_getUid("alternatingRowBackgroundColors"), function $CPTableView__alternatingRowBackgroundColors(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "alternating-row-colors"); +} +},["CPArray"]), new objj_method(sel_getUid("selectionHighlightStyle"), function $CPTableView__selectionHighlightStyle(self, _cmd) +{ with(self) +{ + return _selectionHighlightStyle; +} +},["unsigned"]), new objj_method(sel_getUid("setSelectionHighlightStyle:"), function $CPTableView__setSelectionHighlightStyle_(self, _cmd, aSelectionHighlightStyle) +{ with(self) +{ + if (aSelectionHighlightStyle == CPTableViewSelectionHighlightStyleSourceList && !CPFeatureIsCompatible(CPHTMLCanvasFeature)) + return; + _selectionHighlightStyle = aSelectionHighlightStyle; + objj_msgSend(self, "setNeedsDisplay:", YES); + if (aSelectionHighlightStyle === CPTableViewSelectionHighlightStyleSourceList) + _destinationDragStyle = CPTableViewDraggingDestinationFeedbackStyleSourceList; + else + _destinationDragStyle = CPTableViewDraggingDestinationFeedbackStyleRegular; +} +},["void","unsigned"]), new objj_method(sel_getUid("setSelectionHighlightColor:"), function $CPTableView__setSelectionHighlightColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", aColor, "selection-color"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("selectionHighlightColor"), function $CPTableView__selectionHighlightColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "selection-color"); +} +},["CPColor"]), new objj_method(sel_getUid("setSelectionGradientColors:"), function $CPTableView__setSelectionGradientColors_(self, _cmd, aDictionary) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", aDictionary, "sourcelist-selection-color"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPDictionary"]), new objj_method(sel_getUid("selectionGradientColors"), function $CPTableView__selectionGradientColors(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "sourcelist-selection-color"); +} +},["CPDictionary"]), new objj_method(sel_getUid("setGridColor:"), function $CPTableView__setGridColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(self, "setValue:forThemeAttribute:", aColor, "grid-color"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("gridColor"), function $CPTableView__gridColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "grid-color");; +} +},["CPColor"]), new objj_method(sel_getUid("setGridStyleMask:"), function $CPTableView__setGridStyleMask_(self, _cmd, aGrideStyleMask) +{ with(self) +{ + if (_gridStyleMask === aGrideStyleMask) + return; + _gridStyleMask = aGrideStyleMask; + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","unsigned"]), new objj_method(sel_getUid("gridStyleMask"), function $CPTableView__gridStyleMask(self, _cmd) +{ with(self) +{ + return _gridStyleMask; +} +},["unsigned"]), new objj_method(sel_getUid("addTableColumn:"), function $CPTableView__addTableColumn_(self, _cmd, aTableColumn) +{ with(self) +{ + objj_msgSend(_tableColumns, "addObject:", aTableColumn); + objj_msgSend(aTableColumn, "setTableView:", self); + if (_dirtyTableColumnRangeIndex < 0) + _dirtyTableColumnRangeIndex = (_tableColumns.length) - 1; + else + _dirtyTableColumnRangeIndex = MIN((_tableColumns.length) - 1, _dirtyTableColumnRangeIndex); + objj_msgSend(self, "tile"); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("removeTableColumn:"), function $CPTableView__removeTableColumn_(self, _cmd, aTableColumn) +{ with(self) +{ + if (objj_msgSend(aTableColumn, "tableView") !== self) + return; + var index = objj_msgSend(_tableColumns, "indexOfObjectIdenticalTo:", aTableColumn); + if (index === CPNotFound) + return; + objj_msgSend(_differedColumnDataToRemove, "addObject:", {"column":aTableColumn, "shouldBeHidden": objj_msgSend(aTableColumn, "isHidden")}); + objj_msgSend(aTableColumn, "setHidden:", YES); + objj_msgSend(aTableColumn, "setTableView:", nil); + var tableColumnUID = objj_msgSend(aTableColumn, "UID"); + if (_objectValues[tableColumnUID]) + _objectValues[tableColumnUID] = nil; + if (_dirtyTableColumnRangeIndex < 0) + _dirtyTableColumnRangeIndex = index; + else + _dirtyTableColumnRangeIndex = MIN(index, _dirtyTableColumnRangeIndex); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("_setDraggedColumn:"), function $CPTableView___setDraggedColumn_(self, _cmd, aColumn) +{ with(self) +{ + if (_draggedColumn === aColumn) + return; + _draggedColumn = aColumn; + objj_msgSend(self, "reloadDataForRowIndexes:columnIndexes:", _exposedRows, objj_msgSend(CPIndexSet, "indexSetWithIndex:", objj_msgSend(_tableColumns, "indexOfObject:", aColumn))); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("moveColumn:toColumn:"), function $CPTableView__moveColumn_toColumn_(self, _cmd, fromIndex, toIndex) +{ with(self) +{ + fromIndex = +fromIndex; + toIndex = +toIndex; + if (fromIndex === toIndex) + return; + if (_dirtyTableColumnRangeIndex < 0) + _dirtyTableColumnRangeIndex = MIN(fromIndex, toIndex); + else + _dirtyTableColumnRangeIndex = MIN(fromIndex, toIndex, _dirtyTableColumnRangeIndex); + var tableColumn = _tableColumns[fromIndex]; + objj_msgSend(_tableColumns, "removeObjectAtIndex:", fromIndex); + objj_msgSend(_tableColumns, "insertObject:atIndex:", tableColumn, toIndex); + objj_msgSend(objj_msgSend(self, "headerView"), "setNeedsLayout"); + objj_msgSend(objj_msgSend(self, "headerView"), "setNeedsDisplay:", YES); + var rowIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "numberOfRows"))), + columnIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(fromIndex, toIndex)); + objj_msgSend(self, "reloadDataForRowIndexes:columnIndexes:", rowIndexes, columnIndexes); +} +},["void","unsigned","unsigned"]), new objj_method(sel_getUid("_tableColumnVisibilityDidChange:"), function $CPTableView___tableColumnVisibilityDidChange_(self, _cmd, aColumn) +{ with(self) +{ + var columnIndex = objj_msgSend(objj_msgSend(self, "tableColumns"), "indexOfObjectIdenticalTo:", aColumn); + if (_dirtyTableColumnRangeIndex < 0) + _dirtyTableColumnRangeIndex = columnIndex; + else + _dirtyTableColumnRangeIndex = MIN(columnIndex, _dirtyTableColumnRangeIndex); + objj_msgSend(objj_msgSend(self, "headerView"), "setNeedsLayout"); + objj_msgSend(objj_msgSend(self, "headerView"), "setNeedsDisplay:", YES); + var rowIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(0, objj_msgSend(self, "numberOfRows"))); + objj_msgSend(self, "reloadDataForRowIndexes:columnIndexes:", rowIndexes, objj_msgSend(CPIndexSet, "indexSetWithIndex:", columnIndex)); +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("tableColumns"), function $CPTableView__tableColumns(self, _cmd) +{ with(self) +{ + return _tableColumns; +} +},["CPArray"]), new objj_method(sel_getUid("columnWithIdentifier:"), function $CPTableView__columnWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + var index = 0, + count = (_tableColumns.length); + for (; index < count; ++index) + if (objj_msgSend(_tableColumns[index], "identifier") === anIdentifier) + return index; + return CPNotFound; +} +},["CPInteger","CPString"]), new objj_method(sel_getUid("tableColumnWithIdentifier:"), function $CPTableView__tableColumnWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + var index = objj_msgSend(self, "columnWithIdentifier:", anIdentifier); + if (index === CPNotFound) + return nil; + return _tableColumns[index]; +} +},["CPTableColumn","CPString"]), new objj_method(sel_getUid("selectColumnIndexes:byExtendingSelection:"), function $CPTableView__selectColumnIndexes_byExtendingSelection_(self, _cmd, columns, shouldExtendSelection) +{ with(self) +{ + if ((objj_msgSend(columns, "firstIndex") != CPNotFound && objj_msgSend(columns, "firstIndex") < 0) || objj_msgSend(columns, "lastIndex") >= objj_msgSend(self, "numberOfColumns")) + return; + if (objj_msgSend(_selectedRowIndexes, "count") > 0) + { + objj_msgSend(self, "_updateHighlightWithOldRows:newRows:", _selectedRowIndexes, objj_msgSend(CPIndexSet, "indexSet")); + _selectedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + } + var previousSelectedIndexes = objj_msgSend(_selectedColumnIndexes, "copy"); + if (shouldExtendSelection) + objj_msgSend(_selectedColumnIndexes, "addIndexes:", columns); + else + _selectedColumnIndexes = objj_msgSend(columns, "copy"); + objj_msgSend(self, "_updateHighlightWithOldColumns:newColumns:", previousSelectedIndexes, _selectedColumnIndexes); + objj_msgSend(self, "setNeedsDisplay:", YES); + if (_headerView) + objj_msgSend(_headerView, "setNeedsDisplay:", YES); + objj_msgSend(self, "_noteSelectionDidChange"); +} +},["void","CPIndexSet","BOOL"]), new objj_method(sel_getUid("_setSelectedRowIndexes:"), function $CPTableView___setSelectedRowIndexes_(self, _cmd, rows) +{ with(self) +{ + if (objj_msgSend(_selectedRowIndexes, "isEqualToIndexSet:", rows)) + return; + var previousSelectedIndexes = _selectedRowIndexes; + _lastSelectedRow = (objj_msgSend(rows, "count") > 0) ? objj_msgSend(rows, "lastIndex") : -1; + _selectedRowIndexes = objj_msgSend(rows, "copy"); + objj_msgSend(self, "_updateHighlightWithOldRows:newRows:", previousSelectedIndexes, _selectedRowIndexes); + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(objj_msgSend(CPKeyValueBinding, "getBinding:forObject:", "selectionIndexes", self), "reverseSetValueFor:", "selectedRowIndexes"); + objj_msgSend(self, "_noteSelectionDidChange"); +} +},["void","CPIndexSet"]), new objj_method(sel_getUid("selectRowIndexes:byExtendingSelection:"), function $CPTableView__selectRowIndexes_byExtendingSelection_(self, _cmd, rows, shouldExtendSelection) +{ with(self) +{ + if (objj_msgSend(rows, "isEqualToIndexSet:", _selectedRowIndexes) || + ((objj_msgSend(rows, "firstIndex") != CPNotFound && objj_msgSend(rows, "firstIndex") < 0) || objj_msgSend(rows, "lastIndex") >= objj_msgSend(self, "numberOfRows"))) + return; + if (objj_msgSend(_selectedColumnIndexes, "count") > 0) + { + objj_msgSend(self, "_updateHighlightWithOldColumns:newColumns:", _selectedColumnIndexes, objj_msgSend(CPIndexSet, "indexSet")); + _selectedColumnIndexes = objj_msgSend(CPIndexSet, "indexSet"); + if (_headerView) + objj_msgSend(_headerView, "setNeedsDisplay:", YES); + } + var newSelectedIndexes; + if (shouldExtendSelection) + { + newSelectedIndexes = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(newSelectedIndexes, "addIndexes:", rows); + } + else + newSelectedIndexes = objj_msgSend(rows, "copy"); + objj_msgSend(self, "_setSelectedRowIndexes:", newSelectedIndexes); +} +},["void","CPIndexSet","BOOL"]), new objj_method(sel_getUid("_updateHighlightWithOldRows:newRows:"), function $CPTableView___updateHighlightWithOldRows_newRows_(self, _cmd, oldRows, newRows) +{ with(self) +{ + var firstExposedRow = objj_msgSend(_exposedRows, "firstIndex"), + exposedLength = objj_msgSend(_exposedRows, "lastIndex") - firstExposedRow + 1, + deselectRows = [], + selectRows = [], + deselectRowIndexes = objj_msgSend(oldRows, "copy"), + selectRowIndexes = objj_msgSend(newRows, "copy"); + objj_msgSend(deselectRowIndexes, "removeMatches:", selectRowIndexes); + objj_msgSend(deselectRowIndexes, "getIndexes:maxCount:inIndexRange:", deselectRows, -1, CPMakeRange(firstExposedRow, exposedLength)); + objj_msgSend(selectRowIndexes, "getIndexes:maxCount:inIndexRange:", selectRows, -1, CPMakeRange(firstExposedRow, exposedLength)); + for (var identifier in _dataViewsForTableColumns) + { + var dataViewsInTableColumn = _dataViewsForTableColumns[identifier], + count = deselectRows.length; + while (count--) + objj_msgSend(self, "_performSelection:forRow:context:", NO, deselectRows[count], dataViewsInTableColumn); + count = selectRows.length; + while (count--) + objj_msgSend(self, "_performSelection:forRow:context:", YES, selectRows[count], dataViewsInTableColumn); + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_performSelection:forRow:context:"), function $CPTableView___performSelection_forRow_context_(self, _cmd, select, rowIndex, context) +{ with(self) +{ + var view = context[rowIndex], + selector = select ? "setThemeState:" : "unsetThemeState:"; + objj_msgSend(view, "performSelector:withObject:", CPSelectorFromString(selector), CPThemeStateSelectedDataView); +} +},["void","BOOL","CPInteger","id"]), new objj_method(sel_getUid("_updateHighlightWithOldColumns:newColumns:"), function $CPTableView___updateHighlightWithOldColumns_newColumns_(self, _cmd, oldColumns, newColumns) +{ with(self) +{ + var firstExposedColumn = objj_msgSend(_exposedColumns, "firstIndex"), + exposedLength = objj_msgSend(_exposedColumns, "lastIndex") - firstExposedColumn +1, + deselectColumns = [], + selectColumns = [], + deselectColumnIndexes = objj_msgSend(oldColumns, "copy"), + selectColumnIndexes = objj_msgSend(newColumns, "copy"), + selectRows = []; + objj_msgSend(deselectColumnIndexes, "removeMatches:", selectColumnIndexes); + objj_msgSend(deselectColumnIndexes, "getIndexes:maxCount:inIndexRange:", deselectColumns, -1, CPMakeRange(firstExposedColumn, exposedLength)); + objj_msgSend(selectColumnIndexes, "getIndexes:maxCount:inIndexRange:", selectColumns, -1, CPMakeRange(firstExposedColumn, exposedLength)); + objj_msgSend(_exposedRows, "getIndexes:maxCount:inIndexRange:", selectRows, -1, nil); + var rowsCount = selectRows.length, + count = deselectColumns.length; + while (count--) + { + var columnIndex = deselectColumns[count], + identifier = objj_msgSend(_tableColumns[columnIndex], "UID"), + dataViewsInTableColumn = _dataViewsForTableColumns[identifier]; + for (var i = 0; i < rowsCount; i++) + { + var rowIndex = selectRows[i], + dataView = dataViewsInTableColumn[rowIndex]; + objj_msgSend(dataView, "unsetThemeState:", CPThemeStateSelectedDataView); + } + if (_headerView) + { + var headerView = objj_msgSend(_tableColumns[columnIndex], "headerView"); + objj_msgSend(headerView, "unsetThemeState:", CPThemeStateSelected); + } + } + count = selectColumns.length; + while (count--) + { + var columnIndex = selectColumns[count], + identifier = objj_msgSend(_tableColumns[columnIndex], "UID"), + dataViewsInTableColumn = _dataViewsForTableColumns[identifier]; + for (var i = 0; i < rowsCount; i++) + { + var rowIndex = selectRows[i], + dataView = dataViewsInTableColumn[rowIndex]; + objj_msgSend(dataView, "setThemeState:", CPThemeStateSelectedDataView); + } + if (_headerView) + { + var headerView = objj_msgSend(_tableColumns[columnIndex], "headerView"); + objj_msgSend(headerView, "setThemeState:", CPThemeStateSelected); + } + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("selectedColumn"), function $CPTableView__selectedColumn(self, _cmd) +{ with(self) +{ + objj_msgSend(_selectedColumnIndexes, "lastIndex"); +} +},["int"]), new objj_method(sel_getUid("selectedColumnIndexes"), function $CPTableView__selectedColumnIndexes(self, _cmd) +{ with(self) +{ + return _selectedColumnIndexes; +} +},["CPIndexSet"]), new objj_method(sel_getUid("selectedRow"), function $CPTableView__selectedRow(self, _cmd) +{ with(self) +{ + return _lastSelectedRow; +} +},["int"]), new objj_method(sel_getUid("selectedRowIndexes"), function $CPTableView__selectedRowIndexes(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectedRowIndexes, "copy"); +} +},["CPIndexSet"]), new objj_method(sel_getUid("deselectColumn:"), function $CPTableView__deselectColumn_(self, _cmd, aColumn) +{ with(self) +{ + var selectedColumnIndexes = objj_msgSend(_selectedColumnIndexes, "copy"); + objj_msgSend(selectedColumnIndexes, "removeIndex:", aColumn); + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", selectedColumnIndexes, NO); + objj_msgSend(self, "_noteSelectionDidChange"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("deselectRow:"), function $CPTableView__deselectRow_(self, _cmd, aRow) +{ with(self) +{ + var selectedRowIndexes = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(selectedRowIndexes, "removeIndex:", aRow); + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", selectedRowIndexes, NO); + objj_msgSend(self, "_noteSelectionDidChange"); +} +},["void","CPInteger"]), new objj_method(sel_getUid("numberOfSelectedColumns"), function $CPTableView__numberOfSelectedColumns(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectedColumnIndexes, "count"); +} +},["CPInteger"]), new objj_method(sel_getUid("numberOfSelectedRows"), function $CPTableView__numberOfSelectedRows(self, _cmd) +{ with(self) +{ + return objj_msgSend(_selectedRowIndexes, "count"); +} +},["CPInteger"]), new objj_method(sel_getUid("isColumnSelected:"), function $CPTableView__isColumnSelected_(self, _cmd, aColumn) +{ with(self) +{ + return objj_msgSend(_selectedColumnIndexes, "containsIndex:", aColumn); +} +},["BOOL","CPInteger"]), new objj_method(sel_getUid("isRowSelected:"), function $CPTableView__isRowSelected_(self, _cmd, aRow) +{ with(self) +{ + return objj_msgSend(_selectedRowIndexes, "containsIndex:", aRow); +} +},["BOOL","CPInteger"]), new objj_method(sel_getUid("deselectAll"), function $CPTableView__deselectAll(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSet"), NO); + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSet"), NO); +} +},["void"]), new objj_method(sel_getUid("numberOfColumns"), function $CPTableView__numberOfColumns(self, _cmd) +{ with(self) +{ + return (_tableColumns.length); +} +},["int"]), new objj_method(sel_getUid("numberOfRows"), function $CPTableView__numberOfRows(self, _cmd) +{ with(self) +{ + if (_numberOfRows) + return _numberOfRows; + var contentBindingInfo = objj_msgSend(self, "infoForBinding:", "content"); + if (contentBindingInfo) + { + var destination = objj_msgSend(contentBindingInfo, "objectForKey:", CPObservedObjectKey), + keyPath = objj_msgSend(contentBindingInfo, "objectForKey:", CPObservedKeyPathKey); + return objj_msgSend(objj_msgSend(destination, "valueForKeyPath:", keyPath), "count"); + } + else if (_dataSource) + return objj_msgSend(_dataSource, "numberOfRowsInTableView:", self); + return 0; +} +},["int"]), new objj_method(sel_getUid("editColumn:row:withEvent:select:"), function $CPTableView__editColumn_row_withEvent_select_(self, _cmd, columnIndex, rowIndex, theEvent, flag) +{ with(self) +{ + if (!objj_msgSend(self, "isRowSelected:", rowIndex)) + objj_msgSend(objj_msgSend(CPException, "exceptionWithName:reason:userInfo:", "Error", "Attempt to edit row="+rowIndex+" when not selected.", nil), "raise"); + _editingCellIndex = CGPointMake(columnIndex, rowIndex); + objj_msgSend(self, "reloadDataForRowIndexes:columnIndexes:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", rowIndex), objj_msgSend(CPIndexSet, "indexSetWithIndex:", columnIndex)); +} +},["void","CPInteger","CPInteger","CPEvent","BOOL"]), new objj_method(sel_getUid("editedColumn"), function $CPTableView__editedColumn(self, _cmd) +{ with(self) +{ + if (!_editingCellIndex) + return CPNotFound; + return _editingCellIndex.x; +} +},["CPInteger"]), new objj_method(sel_getUid("editedRow"), function $CPTableView__editedRow(self, _cmd) +{ with(self) +{ + if (!_editingCellIndex) + return CPNotFound; + return _editingCellIndex.y; +} +},["CPInteger"]), new objj_method(sel_getUid("cornerView"), function $CPTableView__cornerView(self, _cmd) +{ with(self) +{ + return _cornerView; +} +},["CPView"]), new objj_method(sel_getUid("setCornerView:"), function $CPTableView__setCornerView_(self, _cmd, aView) +{ with(self) +{ + if (_cornerView === aView) + return; + _cornerView = aView; + var scrollView = objj_msgSend(objj_msgSend(self, "superview"), "superview"); + if (objj_msgSend(scrollView, "isKindOfClass:", objj_msgSend(CPScrollView, "class")) && objj_msgSend(scrollView, "documentView") === self) + objj_msgSend(scrollView, "_updateCornerAndHeaderView"); +} +},["void","CPView"]), new objj_method(sel_getUid("headerView"), function $CPTableView__headerView(self, _cmd) +{ with(self) +{ + return _headerView; +} +},["CPView"]), new objj_method(sel_getUid("setHeaderView:"), function $CPTableView__setHeaderView_(self, _cmd, aHeaderView) +{ with(self) +{ + if (_headerView === aHeaderView) + return; + objj_msgSend(_headerView, "setTableView:", nil); + _headerView = aHeaderView; + if (_headerView) + { + objj_msgSend(_headerView, "setTableView:", self); + objj_msgSend(_headerView, "setFrameSize:", { width:(objj_msgSend(self, "frame").size.width), height:(objj_msgSend(_headerView, "frame").size.height) }); + } + var scrollView = objj_msgSend(objj_msgSend(self, "superview"), "superview"); + if (objj_msgSend(scrollView, "isKindOfClass:", objj_msgSend(CPScrollView, "class")) && objj_msgSend(scrollView, "documentView") === self) + objj_msgSend(scrollView, "_updateCornerAndHeaderView"); +} +},["void","CPView"]), new objj_method(sel_getUid("_recalculateTableColumnRanges"), function $CPTableView___recalculateTableColumnRanges(self, _cmd) +{ with(self) +{ + if (_dirtyTableColumnRangeIndex < 0) + return; + _numberOfHiddenColumns = 0; + var index = _dirtyTableColumnRangeIndex, + count = (_tableColumns.length), + x = index === 0 ? 0.0 : CPMaxRange(_tableColumnRanges[index - 1]); + for (; index < count; ++index) + { + var tableColumn = _tableColumns[index]; + if (objj_msgSend(tableColumn, "isHidden")) + { + _numberOfHiddenColumns += 1; + _tableColumnRanges[index] = CPMakeRange(x, 0.0); + } + else + { + var width = objj_msgSend(_tableColumns[index], "width") + _intercellSpacing.width; + _tableColumnRanges[index] = CPMakeRange(x, width); + x += width; + } + } + _tableColumnRanges.length = count; + _dirtyTableColumnRangeIndex = CPNotFound; +} +},["void"]), new objj_method(sel_getUid("rectOfColumn:"), function $CPTableView__rectOfColumn_(self, _cmd, aColumnIndex) +{ with(self) +{ + aColumnIndex = +aColumnIndex; + var column = objj_msgSend(objj_msgSend(self, "tableColumns"), "objectAtIndex:", aColumnIndex); + if (objj_msgSend(column, "isHidden") || aColumnIndex < 0 || aColumnIndex >= (_tableColumns.length)) + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var range = _tableColumnRanges[aColumnIndex]; + return { origin: { x:range.location, y:0.0 }, size: { width:range.length, height:CGRectGetHeight(objj_msgSend(self, "bounds")) } }; +} +},["CGRect","CPInteger"]), new objj_method(sel_getUid("rectOfRow:"), function $CPTableView__rectOfRow_(self, _cmd, aRowIndex) +{ with(self) +{ + var height = _rowHeight + _intercellSpacing.height; + return { origin: { x:0.0, y:aRowIndex * height }, size: { width:(objj_msgSend(self, "bounds").size.width), height:height } }; +} +},["CGRect","CPInteger"]), new objj_method(sel_getUid("rowsInRect:"), function $CPTableView__rowsInRect_(self, _cmd, aRect) +{ with(self) +{ + if (_numberOfRows <= 0) + return CPMakeRange(0, 0); + var bounds = objj_msgSend(self, "bounds"); + if (!CGRectIntersectsRect(aRect, bounds)) + return CPMakeRange(0, 0); + var firstRow = objj_msgSend(self, "rowAtPoint:", aRect.origin); + if (firstRow < 0) + firstRow = 0; + var lastRow = objj_msgSend(self, "rowAtPoint:", { x:0.0, y:(aRect.origin.y + aRect.size.height) }); + if (lastRow < 0) + lastRow = _numberOfRows - 1; + return CPMakeRange(firstRow, lastRow - firstRow + 1); +} +},["CPRange","CGRect"]), new objj_method(sel_getUid("columnIndexesInRect:"), function $CPTableView__columnIndexesInRect_(self, _cmd, aRect) +{ with(self) +{ + var column = MAX(0, objj_msgSend(self, "columnAtPoint:", { x:aRect.origin.x, y:0.0 })), + lastColumn = objj_msgSend(self, "columnAtPoint:", { x:(aRect.origin.x + aRect.size.width), y:0.0 }); + if (lastColumn === CPNotFound) + lastColumn = (_tableColumns.length) - 1; + if (_numberOfHiddenColumns <= 0) + return objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(column, lastColumn - column + 1)); + var indexSet = objj_msgSend(CPIndexSet, "indexSet"); + for (; column <= lastColumn; ++column) + { + var tableColumn = _tableColumns[column]; + if (!objj_msgSend(tableColumn, "isHidden")) + objj_msgSend(indexSet, "addIndex:", column); + } + return indexSet; +} +},["CPIndexSet","CGRect"]), new objj_method(sel_getUid("columnAtPoint:"), function $CPTableView__columnAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + if (!(aPoint.x >= (bounds.origin.x) && aPoint.y >= (bounds.origin.y) && aPoint.x < (bounds.origin.x + bounds.size.width) && aPoint.y < (bounds.origin.y + bounds.size.height))) + return CPNotFound; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var x = aPoint.x, + low = 0, + high = _tableColumnRanges.length - 1; + while (low <= high) + { + var middle = FLOOR(low + (high - low) / 2), + range = _tableColumnRanges[middle]; + if (x < range.location) + high = middle - 1; + else if (x >= CPMaxRange(range)) + low = middle + 1; + else + { + var numberOfColumns = _tableColumnRanges.length; + while (middle < numberOfColumns && objj_msgSend(_tableColumns[middle], "isHidden")) + ++middle; + if (middle < numberOfColumns) + return middle; + return CPNotFound; + } + } + return CPNotFound; +} +},["CPInteger","CGPoint"]), new objj_method(sel_getUid("rowAtPoint:"), function $CPTableView__rowAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var y = aPoint.y, + row = FLOOR(y / (_rowHeight + _intercellSpacing.height)); + if (row >= _numberOfRows) + return -1; + return row; +} +},["CPInteger","CGPoint"]), new objj_method(sel_getUid("frameOfDataViewAtColumn:row:"), function $CPTableView__frameOfDataViewAtColumn_row_(self, _cmd, aColumn, aRow) +{ with(self) +{ + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var tableColumnRange = _tableColumnRanges[aColumn], + rectOfRow = objj_msgSend(self, "rectOfRow:", aRow), + leftInset = FLOOR(_intercellSpacing.width / 2.0), + topInset = FLOOR(_intercellSpacing.height / 2.0); + return { origin: { x:tableColumnRange.location + leftInset, y:(rectOfRow.origin.y) + topInset }, size: { width:tableColumnRange.length - _intercellSpacing.width, height:(rectOfRow.size.height) - _intercellSpacing.height } }; +} +},["CGRect","CPInteger","CPInteger"]), new objj_method(sel_getUid("resizeWithOldSuperviewSize:"), function $CPTableView__resizeWithOldSuperviewSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "resizeWithOldSuperviewSize:", aSize); + if (_disableAutomaticResizing) + return; + var mask = _columnAutoResizingStyle; + if (mask === CPTableViewUniformColumnAutoresizingStyle) + objj_msgSend(self, "_resizeAllColumnUniformlyWithOldSize:", aSize); + else if (mask === CPTableViewLastColumnOnlyAutoresizingStyle) + objj_msgSend(self, "sizeLastColumnToFit"); + else if (mask === CPTableViewFirstColumnOnlyAutoresizingStyle) + objj_msgSend(self, "_autoResizeFirstColumn"); +} +},["void","CGSize"]), new objj_method(sel_getUid("_autoResizeFirstColumn"), function $CPTableView___autoResizeFirstColumn(self, _cmd) +{ with(self) +{ + var superview = objj_msgSend(self, "superview"); + if (!superview) + return; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var count = (_tableColumns.length), + columnToResize = nil, + totalWidth = 0, + i = 0; + for (; i < count; i++) + { + var column = _tableColumns[i]; + if (!objj_msgSend(column, "isHidden")) + { + if (!columnToResize) + columnToResize = column; + totalWidth += objj_msgSend(column, "width") + _intercellSpacing.width; + } + } + if (columnToResize) + { + var superviewSize = objj_msgSend(superview, "bounds").size, + newWidth = superviewSize.width - totalWidth; + newWidth += objj_msgSend(columnToResize, "width"); + newWidth = MAX(objj_msgSend(columnToResize, "minWidth"), newWidth); + newWidth = MIN(objj_msgSend(columnToResize, "maxWidth"), newWidth); + objj_msgSend(columnToResize, "setWidth:", FLOOR(newWidth)); + } + objj_msgSend(self, "setNeedsLayout"); +} +},["void"]), new objj_method(sel_getUid("_resizeAllColumnUniformlyWithOldSize:"), function $CPTableView___resizeAllColumnUniformlyWithOldSize_(self, _cmd, oldSize) +{ with(self) +{ + var superview = objj_msgSend(self, "superview"); + if (!superview) + return; + var superviewSize = objj_msgSend(superview, "bounds").size; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var count = (_tableColumns.length), + visColumns = objj_msgSend(objj_msgSend(CPArray, "alloc"), "init"), + buffer = 0.0; + for (var i = 0; i < count; i++) + { + var tableColumn = _tableColumns[i]; + if (!objj_msgSend(tableColumn, "isHidden") && (objj_msgSend(tableColumn, "resizingMask") & CPTableColumnAutoresizingMask)) + objj_msgSend(visColumns, "addObject:", i); + } + count = objj_msgSend(visColumns, "count"); + if (count > 0) + { + var maxXofColumns = CGRectGetMaxX(objj_msgSend(self, "rectOfColumn:", visColumns[count - 1])); + if (!_lastColumnShouldSnap && (maxXofColumns >= superviewSize.width && maxXofColumns <= oldSize.width || maxXofColumns <= superviewSize.width && maxXofColumns >= oldSize.width)) + { + _lastColumnShouldSnap = YES; + objj_msgSend(self, "_resizeAllColumnUniformlyWithOldSize:", CGSizeMake(maxXofColumns, 0)); + } + if (!_lastColumnShouldSnap) + return; + for (var i = 0; i < count; i++) + { + var column = visColumns[i], + columnToResize = _tableColumns[column], + currentBuffer = buffer / (count - i), + realNewWidth = (objj_msgSend(columnToResize, "width") / oldSize.width * objj_msgSend(superview, "bounds").size.width) + currentBuffer, + newWidth = realNewWidth; + newWidth = MAX(objj_msgSend(columnToResize, "minWidth"), newWidth); + newWidth = MIN(objj_msgSend(columnToResize, "maxWidth"), newWidth); + buffer -= currentBuffer; + buffer += realNewWidth - newWidth; + objj_msgSend(columnToResize, "setWidth:", newWidth); + } + if (buffer !== 0) + _lastColumnShouldSnap = NO; + } + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CGSize"]), new objj_method(sel_getUid("setColumnAutoresizingStyle:"), function $CPTableView__setColumnAutoresizingStyle_(self, _cmd, style) +{ with(self) +{ + _columnAutoResizingStyle = style; +} +},["void","unsigned"]), new objj_method(sel_getUid("columnAutoresizingStyle"), function $CPTableView__columnAutoresizingStyle(self, _cmd) +{ with(self) +{ + return _columnAutoResizingStyle; +} +},["unsigned"]), new objj_method(sel_getUid("sizeLastColumnToFit"), function $CPTableView__sizeLastColumnToFit(self, _cmd) +{ with(self) +{ + var superview = objj_msgSend(self, "superview"); + if (!superview) + return; + var superviewSize = objj_msgSend(superview, "bounds").size; + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var count = (_tableColumns.length); + while (count-- && objj_msgSend(_tableColumns[count], "isHidden")) ; + if (count >= 0) + { + var columnToResize = _tableColumns[count], + newSize = MAX(0.0, superviewSize.width - CGRectGetMinX(objj_msgSend(self, "rectOfColumn:", count)) - _intercellSpacing.width); + if (newSize > 0) + { + newSize = MAX(objj_msgSend(columnToResize, "minWidth"), newSize); + newSize = MIN(objj_msgSend(columnToResize, "maxWidth"), newSize); + objj_msgSend(columnToResize, "setWidth:", newSize); + } + } + objj_msgSend(self, "setNeedsLayout"); +} +},["void"]), new objj_method(sel_getUid("noteNumberOfRowsChanged"), function $CPTableView__noteNumberOfRowsChanged(self, _cmd) +{ with(self) +{ + var oldNumberOfRows = _numberOfRows; + _numberOfRows = nil; + _numberOfRows = objj_msgSend(self, "numberOfRows"); + var hangingSelections = oldNumberOfRows - _numberOfRows; + if (hangingSelections > 0) + { + objj_msgSend(_selectedRowIndexes, "removeIndexesInRange:", CPMakeRange(_numberOfRows, hangingSelections)); + objj_msgSend(self, "_noteSelectionDidChange"); + } + objj_msgSend(self, "tile"); +} +},["void"]), new objj_method(sel_getUid("tile"), function $CPTableView__tile(self, _cmd) +{ with(self) +{ + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var width = _tableColumnRanges.length > 0 ? CPMaxRange(objj_msgSend(_tableColumnRanges, "lastObject")) : 0.0, + height = (_rowHeight + _intercellSpacing.height) * _numberOfRows, + superview = objj_msgSend(self, "superview"); + if (objj_msgSend(superview, "isKindOfClass:", objj_msgSend(CPClipView, "class"))) + { + var superviewSize = objj_msgSend(superview, "bounds").size; + width = MAX(superviewSize.width, width); + height = MAX(superviewSize.height, height); + } + objj_msgSend(self, "setFrameSize:", { width:width, height:height }); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void"]), new objj_method(sel_getUid("scrollRowToVisible:"), function $CPTableView__scrollRowToVisible_(self, _cmd, rowIndex) +{ with(self) +{ + objj_msgSend(self, "scrollRectToVisible:", objj_msgSend(self, "rectOfRow:", rowIndex)); +} +},["void","int"]), new objj_method(sel_getUid("scrollColumnToVisible:"), function $CPTableView__scrollColumnToVisible_(self, _cmd, columnIndex) +{ with(self) +{ + objj_msgSend(self, "scrollRectToVisible:", objj_msgSend(self, "rectOfColumn:", columnIndex)); +} +},["void","int"]), new objj_method(sel_getUid("setDelegate:"), function $CPTableView__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate === aDelegate) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_delegate) + { + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewColumnDidMove:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTableViewColumnDidMoveNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewColumnDidResize:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTableViewColumnDidResizeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewSelectionDidChange:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTableViewSelectionDidChangeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewSelectionIsChanging:"))) + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTableViewSelectionIsChangingNotification, self); + } + _delegate = aDelegate; + _implementedDelegateMethods = 0; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("selectionShouldChangeInTableView:"))) + _implementedDelegateMethods |= CPTableViewDelegate_selectionShouldChangeInTableView_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:dataViewForTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_dataViewForTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:didClickTableColumn:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_didClickTableColumn_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:didDragTableColumn:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_didDragTableColumn_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:heightOfRow:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_heightOfRow_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:isGroupRow:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_isGroupRow_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:mouseDownInHeaderOfTableColumn:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_mouseDownInHeaderOfTableColumn_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:nextTypeSelectMatchFromRow:toRow:forString:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_nextTypeSelectMatchFromRow_toRow_forString_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:selectionIndexesForProposedSelection:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_selectionIndexesForProposedSelection_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldEditTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldEditTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldSelectRow:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldSelectRow_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldSelectTableColumn:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldSelectTableColumn_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldShowViewExpansionForTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldShowViewExpansionForTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldTrackView:forTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldTrackView_forTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:shouldTypeSelectForEvent:withCurrentSearchString:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_shouldTypeSelectForEvent_withCurrentSearchString_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:toolTipForView:rect:tableColumn:row:mouseLocation:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_toolTipForView_rect_tableColumn_row_mouseLocation_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:typeSelectStringForTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_typeSelectStringForTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableView:willDisplayView:forTableColumn:row:"))) + _implementedDelegateMethods |= CPTableViewDelegate_tableView_willDisplayView_forTableColumn_row_; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewColumnDidMove:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("tableViewColumnDidMove:"), CPTableViewColumnDidMoveNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewColumnDidResize:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("tableViewColumnDidResize:"), CPTableViewColumnDidResizeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewSelectionDidChange:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("tableViewSelectionDidChange:"), CPTableViewSelectionDidChangeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewSelectionIsChanging:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("tableViewSelectionIsChanging:"), CPTableViewSelectionIsChangingNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPTableView__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("_sendDelegateDidClickColumn:"), function $CPTableView___sendDelegateDidClickColumn_(self, _cmd, column) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_didClickTableColumn_) + objj_msgSend(_delegate, "tableView:didClickTableColumn:", self, _tableColumns[column]); +} +},["void","int"]), new objj_method(sel_getUid("_sendDelegateDidDragColumn:"), function $CPTableView___sendDelegateDidDragColumn_(self, _cmd, column) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_didDragTableColumn_) + objj_msgSend(_delegate, "tableView:didDragTableColumn:", self, _tableColumns[column]); +} +},["void","int"]), new objj_method(sel_getUid("_sendDelegateDidMouseDownInHeader:"), function $CPTableView___sendDelegateDidMouseDownInHeader_(self, _cmd, column) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_mouseDownInHeaderOfTableColumn_) + objj_msgSend(_delegate, "tableView:mouseDownInHeaderOfTableColumn:", self, _tableColumns[column]); +} +},["void","int"]), new objj_method(sel_getUid("_sendDataSourceSortDescriptorsDidChange:"), function $CPTableView___sendDataSourceSortDescriptorsDidChange_(self, _cmd, oldDescriptors) +{ with(self) +{ + if (_implementedDataSourceMethods & CPTableViewDataSource_tableView_sortDescriptorsDidChange_) + objj_msgSend(_dataSource, "tableView:sortDescriptorsDidChange:", self, oldDescriptors); +} +},["void","CPArray"]), new objj_method(sel_getUid("_didClickTableColumn:modifierFlags:"), function $CPTableView___didClickTableColumn_modifierFlags_(self, _cmd, clickedColumn, modifierFlags) +{ with(self) +{ + objj_msgSend(self, "_sendDelegateDidClickColumn:", clickedColumn); + if (_allowsColumnSelection) + { + objj_msgSend(self, "_noteSelectionIsChanging"); + if (modifierFlags & CPCommandKeyMask) + { + if (objj_msgSend(self, "isColumnSelected:", clickedColumn)) + objj_msgSend(self, "deselectColumn:", clickedColumn); + else if (objj_msgSend(self, "allowsMultipleSelection") == YES) + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", clickedColumn), YES); + return; + } + else if (modifierFlags & CPShiftKeyMask) + { + var startColumn = MIN(clickedColumn, objj_msgSend(_selectedColumnIndexes, "lastIndex")), + endColumn = MAX(clickedColumn, objj_msgSend(_selectedColumnIndexes, "firstIndex")); + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(startColumn, endColumn - startColumn + 1)), YES); + return; + } + else + objj_msgSend(self, "selectColumnIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", clickedColumn), NO); + } + objj_msgSend(self, "_changeSortDescriptorsForClickOnColumn:", clickedColumn); +} +},["void","int","unsigned"]), new objj_method(sel_getUid("_changeSortDescriptorsForClickOnColumn:"), function $CPTableView___changeSortDescriptorsForClickOnColumn_(self, _cmd, column) +{ with(self) +{ + var tableColumn = objj_msgSend(_tableColumns, "objectAtIndex:", column), + newMainSortDescriptor = objj_msgSend(tableColumn, "sortDescriptorPrototype"); + if (!newMainSortDescriptor) + return; + var oldMainSortDescriptor = nil, + oldSortDescriptors = objj_msgSend(self, "sortDescriptors"), + newSortDescriptors = objj_msgSend(CPArray, "arrayWithArray:", oldSortDescriptors), + e = objj_msgSend(newSortDescriptors, "objectEnumerator"), + descriptor = nil, + outdatedDescriptors = objj_msgSend(CPArray, "array"); + if (objj_msgSend(_sortDescriptors, "count") > 0) + oldMainSortDescriptor = objj_msgSend(objj_msgSend(self, "sortDescriptors"), "objectAtIndex:", 0); + while ((descriptor = objj_msgSend(e, "nextObject")) != nil) + { + if (objj_msgSend(objj_msgSend(descriptor, "key"), "isEqual:", objj_msgSend(newMainSortDescriptor, "key"))) + objj_msgSend(outdatedDescriptors, "addObject:", descriptor); + } + if (objj_msgSend(objj_msgSend(newMainSortDescriptor, "key"), "isEqual:", objj_msgSend(oldMainSortDescriptor, "key"))) + newMainSortDescriptor = objj_msgSend(oldMainSortDescriptor, "reversedSortDescriptor"); + objj_msgSend(newSortDescriptors, "removeObjectsInArray:", outdatedDescriptors); + objj_msgSend(newSortDescriptors, "insertObject:atIndex:", newMainSortDescriptor, 0); + var image = objj_msgSend(newMainSortDescriptor, "ascending") ? objj_msgSend(self, "_tableHeaderSortImage") : objj_msgSend(self, "_tableHeaderReverseSortImage"); + objj_msgSend(self, "setIndicatorImage:inTableColumn:", nil, _currentHighlightedTableColumn); + objj_msgSend(self, "setIndicatorImage:inTableColumn:", image, tableColumn); + objj_msgSend(self, "setHighlightedTableColumn:", tableColumn); + objj_msgSend(self, "setSortDescriptors:", newSortDescriptors); +} +},["void","int"]), new objj_method(sel_getUid("setIndicatorImage:inTableColumn:"), function $CPTableView__setIndicatorImage_inTableColumn_(self, _cmd, anImage, aTableColumn) +{ with(self) +{ + if (aTableColumn) + { + var headerView = objj_msgSend(aTableColumn, "headerView"); + if (objj_msgSend(headerView, "respondsToSelector:", sel_getUid("_setIndicatorImage:"))) + objj_msgSend(headerView, "_setIndicatorImage:", anImage); + } +} +},["void","CPImage","CPTableColumn"]), new objj_method(sel_getUid("_tableHeaderSortImage"), function $CPTableView___tableHeaderSortImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "sort-image"); +} +},["CPImage"]), new objj_method(sel_getUid("_tableHeaderReverseSortImage"), function $CPTableView___tableHeaderReverseSortImage(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "currentValueForThemeAttribute:", "sort-image-reversed"); +} +},["CPImage"]), new objj_method(sel_getUid("highlightedTableColumn"), function $CPTableView__highlightedTableColumn(self, _cmd) +{ with(self) +{ + return _currentHighlightedTableColumn; +} +},["CPTableColumn"]), new objj_method(sel_getUid("setHighlightedTableColumn:"), function $CPTableView__setHighlightedTableColumn_(self, _cmd, aTableColumn) +{ with(self) +{ + if (_currentHighlightedTableColumn == aTableColumn) + return; + if (_headerView) + { + if (_currentHighlightedTableColumn != nil) + objj_msgSend(objj_msgSend(_currentHighlightedTableColumn, "headerView"), "unsetThemeState:", CPThemeStateSelected); + if (aTableColumn != nil) + objj_msgSend(objj_msgSend(aTableColumn, "headerView"), "setThemeState:", CPThemeStateSelected); + } + _currentHighlightedTableColumn = aTableColumn; +} +},["void","CPTableColumn"]), new objj_method(sel_getUid("canDragRowsWithIndexes:atPoint:"), function $CPTableView__canDragRowsWithIndexes_atPoint_(self, _cmd, rowIndexes, mouseDownPoint) +{ with(self) +{ + return YES; +} +},["BOOL","CPIndexSet","CGPoint"]), new objj_method(sel_getUid("dragImageForRowsWithIndexes:tableColumns:event:offset:"), function $CPTableView__dragImageForRowsWithIndexes_tableColumns_event_offset_(self, _cmd, dragRows, theTableColumns, dragEvent, dragImageOffset) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", "Frameworks/AppKit/Resources/GenericFile.png", CGSizeMake(32,32)); +} +},["CPImage","CPIndexSet","CPArray","CPEvent","CPPointPointer"]), new objj_method(sel_getUid("dragViewForRowsWithIndexes:tableColumns:event:offset:"), function $CPTableView__dragViewForRowsWithIndexes_tableColumns_event_offset_(self, _cmd, theDraggedRows, theTableColumns, theDragEvent, dragViewOffset) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"), + view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", bounds); + objj_msgSend(view, "setAlphaValue:", 0.7); + var columnIndex = objj_msgSend(theTableColumns, "count"); + while (columnIndex--) + { + var tableColumn = objj_msgSend(theTableColumns, "objectAtIndex:", columnIndex), + row = objj_msgSend(theDraggedRows, "firstIndex"); + while (row !== CPNotFound) + { + var dataView = objj_msgSend(self, "_newDataViewForRow:tableColumn:", row, tableColumn); + objj_msgSend(dataView, "setFrame:", objj_msgSend(self, "frameOfDataViewAtColumn:row:", columnIndex, row)); + objj_msgSend(dataView, "setObjectValue:", objj_msgSend(self, "_objectValueForTableColumn:row:", tableColumn, row)); + objj_msgSend(tableColumn, "prepareDataView:forRow:", dataView, row); + objj_msgSend(view, "addSubview:", dataView); + row = objj_msgSend(theDraggedRows, "indexGreaterThanIndex:", row); + } + } + var dragPoint = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(theDragEvent, "locationInWindow"), nil); + dragViewOffset.x = CGRectGetWidth(bounds) / 2 - dragPoint.x; + dragViewOffset.y = CGRectGetHeight(bounds) / 2 - dragPoint.y; + return view; +} +},["CPView","CPIndexSet","CPArray","CPEvent","CPPointPointer"]), new objj_method(sel_getUid("_dragViewForColumn:event:offset:"), function $CPTableView___dragViewForColumn_event_offset_(self, _cmd, theColumnIndex, theDragEvent, theDragViewOffset) +{ with(self) +{ + var dragView = objj_msgSend(objj_msgSend(_CPColumnDragView, "alloc"), "initWithLineColor:", objj_msgSend(self, "gridColor")), + tableColumn = objj_msgSend(objj_msgSend(self, "tableColumns"), "objectAtIndex:", theColumnIndex), + bounds = CPRectMake(0.0, 0.0, objj_msgSend(tableColumn, "width"), (objj_msgSend(self, "visibleRect").size.height) + 23.0), + columnRect = objj_msgSend(self, "rectOfColumn:", theColumnIndex), + headerView = objj_msgSend(tableColumn, "headerView"), + row = objj_msgSend(_exposedRows, "firstIndex"); + while (row !== CPNotFound) + { + var dataView = objj_msgSend(self, "_newDataViewForRow:tableColumn:", row, tableColumn), + dataViewFrame = objj_msgSend(self, "frameOfDataViewAtColumn:row:", theColumnIndex, row); + dataViewFrame.origin.x = 0.0; + dataViewFrame.origin.y = ( (dataViewFrame.origin.y) - (objj_msgSend(self, "visibleRect").origin.y) ) + 23.0; + objj_msgSend(dataView, "setFrame:", dataViewFrame); + objj_msgSend(dataView, "setObjectValue:", objj_msgSend(self, "_objectValueForTableColumn:row:", tableColumn, row)); + objj_msgSend(dragView, "addSubview:", dataView); + row = objj_msgSend(_exposedRows, "indexGreaterThanIndex:", row); + } + var headerFrame = objj_msgSend(headerView, "frame"); + headerFrame.origin = { x:0.0, y:0.0 }; + var columnHeaderView = objj_msgSend(objj_msgSend(_CPTableColumnHeaderView, "alloc"), "initWithFrame:", headerFrame); + objj_msgSend(columnHeaderView, "setStringValue:", objj_msgSend(headerView, "stringValue")); + objj_msgSend(columnHeaderView, "setThemeState:", objj_msgSend(headerView, "themeState")); + objj_msgSend(dragView, "addSubview:", columnHeaderView); + objj_msgSend(dragView, "setBackgroundColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(dragView, "setAlphaValue:", 0.7); + objj_msgSend(dragView, "setFrame:", bounds); + return dragView; +} +},["CPView","int","CPEvent","CPPointPointer"]), new objj_method(sel_getUid("setDraggingSourceOperationMask:forLocal:"), function $CPTableView__setDraggingSourceOperationMask_forLocal_(self, _cmd, mask, isLocal) +{ with(self) +{ + _dragOperationDefaultMask = mask; +} +},["void","CPDragOperation","BOOL"]), new objj_method(sel_getUid("setDropRow:dropOperation:"), function $CPTableView__setDropRow_dropOperation_(self, _cmd, row, operation) +{ with(self) +{ + if (row > objj_msgSend(self, "numberOfRows") && operation === CPTableViewDropOn) + { + var numberOfRows = objj_msgSend(self, "numberOfRows") + 1, + reason = "Attempt to set dropRow=" + row + + " dropOperation=CPTableViewDropOn when [0 - " + numberOfRows + "] is valid range of rows."; + objj_msgSend(objj_msgSend(CPException, "exceptionWithName:reason:userInfo:", "Error", reason, nil), "raise"); + } + _retargetedDropRow = row; + _retargetedDropOperation = operation; +} +},["void","CPInteger","CPTableViewDropOperation"]), new objj_method(sel_getUid("setDraggingDestinationFeedbackStyle:"), function $CPTableView__setDraggingDestinationFeedbackStyle_(self, _cmd, aStyle) +{ with(self) +{ + _destinationDragStyle = aStyle; +} +},["void","CPTableViewDraggingDestinationFeedbackStyle"]), new objj_method(sel_getUid("draggingDestinationFeedbackStyle"), function $CPTableView__draggingDestinationFeedbackStyle(self, _cmd) +{ with(self) +{ + return _destinationDragStyle; +} +},["CPTableViewDraggingDestinationFeedbackStyle"]), new objj_method(sel_getUid("setVerticalMotionCanBeginDrag:"), function $CPTableView__setVerticalMotionCanBeginDrag_(self, _cmd, aFlag) +{ with(self) +{ + _verticalMotionCanDrag = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("verticalMotionCanBeginDrag"), function $CPTableView__verticalMotionCanBeginDrag(self, _cmd) +{ with(self) +{ + return _verticalMotionCanDrag; +} +},["BOOL"]), new objj_method(sel_getUid("setSortDescriptors:"), function $CPTableView__setSortDescriptors_(self, _cmd, sortDescriptors) +{ with(self) +{ + var oldSortDescriptors = objj_msgSend(self, "sortDescriptors"), + newSortDescriptors = nil; + if (sortDescriptors == nil) + newSortDescriptors = objj_msgSend(CPArray, "array"); + else + newSortDescriptors = objj_msgSend(CPArray, "arrayWithArray:", sortDescriptors); + if (objj_msgSend(newSortDescriptors, "isEqual:", oldSortDescriptors)) + return; + _sortDescriptors = newSortDescriptors; + objj_msgSend(self, "_sendDataSourceSortDescriptorsDidChange:", oldSortDescriptors); +} +},["void","CPArray"]), new objj_method(sel_getUid("sortDescriptors"), function $CPTableView__sortDescriptors(self, _cmd) +{ with(self) +{ + return _sortDescriptors; +} +},["CPArray"]), new objj_method(sel_getUid("_objectValueForTableColumn:row:"), function $CPTableView___objectValueForTableColumn_row_(self, _cmd, aTableColumn, aRowIndex) +{ with(self) +{ + var tableColumnUID = objj_msgSend(aTableColumn, "UID"), + tableColumnObjectValues = _objectValues[tableColumnUID]; + if (!tableColumnObjectValues) + { + tableColumnObjectValues = []; + _objectValues[tableColumnUID] = tableColumnObjectValues; + } + var objectValue = tableColumnObjectValues[aRowIndex]; + if (objectValue === undefined && (_implementedDataSourceMethods & CPTableViewDataSource_tableView_objectValueForTableColumn_row_)) + { + objectValue = objj_msgSend(_dataSource, "tableView:objectValueForTableColumn:row:", self, aTableColumn, aRowIndex); + tableColumnObjectValues[aRowIndex] = objectValue; + } + return objectValue; +} +},["id","CPTableColumn","CPInteger"]), new objj_method(sel_getUid("load"), function $CPTableView__load(self, _cmd) +{ with(self) +{ + if (_reloadAllRows) + { + objj_msgSend(self, "_unloadDataViewsInRows:columns:", _exposedRows, _exposedColumns); + _exposedRows = objj_msgSend(CPIndexSet, "indexSet"); + _exposedColumns = objj_msgSend(CPIndexSet, "indexSet"); + _reloadAllRows = NO; + } + var exposedRect = objj_msgSend(self, "visibleRect"), + exposedRows = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", objj_msgSend(self, "rowsInRect:", exposedRect)), + exposedColumns = objj_msgSend(self, "columnIndexesInRect:", exposedRect), + obscuredRows = objj_msgSend(_exposedRows, "copy"), + obscuredColumns = objj_msgSend(_exposedColumns, "copy"); + objj_msgSend(obscuredRows, "removeIndexes:", exposedRows); + objj_msgSend(obscuredColumns, "removeIndexes:", exposedColumns); + var newlyExposedRows = objj_msgSend(exposedRows, "copy"), + newlyExposedColumns = objj_msgSend(exposedColumns, "copy"); + objj_msgSend(newlyExposedRows, "removeIndexes:", _exposedRows); + objj_msgSend(newlyExposedColumns, "removeIndexes:", _exposedColumns); + var previouslyExposedRows = objj_msgSend(exposedRows, "copy"), + previouslyExposedColumns = objj_msgSend(exposedColumns, "copy"); + objj_msgSend(previouslyExposedRows, "removeIndexes:", newlyExposedRows); + objj_msgSend(previouslyExposedColumns, "removeIndexes:", newlyExposedColumns); + objj_msgSend(self, "_unloadDataViewsInRows:columns:", previouslyExposedRows, obscuredColumns); + objj_msgSend(self, "_unloadDataViewsInRows:columns:", obscuredRows, previouslyExposedColumns); + objj_msgSend(self, "_unloadDataViewsInRows:columns:", obscuredRows, obscuredColumns); + objj_msgSend(self, "_unloadDataViewsInRows:columns:", newlyExposedRows, newlyExposedColumns); + objj_msgSend(self, "_loadDataViewsInRows:columns:", previouslyExposedRows, newlyExposedColumns); + objj_msgSend(self, "_loadDataViewsInRows:columns:", newlyExposedRows, previouslyExposedColumns); + objj_msgSend(self, "_loadDataViewsInRows:columns:", newlyExposedRows, newlyExposedColumns); + _exposedRows = exposedRows; + _exposedColumns = exposedColumns; + objj_msgSend(_tableDrawView, "setFrame:", exposedRect); + objj_msgSend(self, "setNeedsDisplay:", YES); + for (var identifier in _cachedDataViews) + { + var dataViews = _cachedDataViews[identifier], + count = dataViews.length; + while (count--) + objj_msgSend(dataViews[count], "removeFromSuperview"); + } + if (objj_msgSend(_differedColumnDataToRemove, "count")) + { + for (var i = 0; i < _differedColumnDataToRemove.length; i++) + { + var data = _differedColumnDataToRemove[i], + column = data.column; + objj_msgSend(column, "setHidden:", data.shouldBeHidden); + objj_msgSend(_tableColumns, "removeObject:", column); + } + objj_msgSend(_differedColumnDataToRemove, "removeAllObjects"); + } +} +},["void"]), new objj_method(sel_getUid("_unloadDataViewsInRows:columns:"), function $CPTableView___unloadDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + if (!objj_msgSend(rows, "count") || !objj_msgSend(columns, "count")) + return; + var rowArray = [], + columnArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + objj_msgSend(columns, "getIndexes:maxCount:inIndexRange:", columnArray, -1, nil); + var columnIndex = 0, + columnsCount = columnArray.length; + for (; columnIndex < columnsCount; ++columnIndex) + { + var column = columnArray[columnIndex], + tableColumn = _tableColumns[column], + tableColumnUID = objj_msgSend(tableColumn, "UID"), + rowIndex = 0, + rowsCount = rowArray.length; + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + dataViews = _dataViewsForTableColumns[tableColumnUID]; + if (!dataViews || row >= dataViews.length) + continue; + var dataView = objj_msgSend(dataViews, "objectAtIndex:", row); + objj_msgSend(dataViews, "replaceObjectAtIndex:withObject:", row, nil); + objj_msgSend(self, "_enqueueReusableDataView:", dataView); + } + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_loadDataViewsInRows:columns:"), function $CPTableView___loadDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + if (!objj_msgSend(rows, "count") || !objj_msgSend(columns, "count")) + return; + var rowArray = [], + rowRects = [], + columnArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + objj_msgSend(columns, "getIndexes:maxCount:inIndexRange:", columnArray, -1, nil); + if (_dirtyTableColumnRangeIndex !== CPNotFound) objj_msgSend(self, "_recalculateTableColumnRanges");; + var columnIndex = 0, + columnsCount = columnArray.length; + for (; columnIndex < columnsCount; ++columnIndex) + { + var column = columnArray[columnIndex], + tableColumn = _tableColumns[column]; + if (objj_msgSend(tableColumn, "isHidden") || tableColumn === _draggedColumn) + continue; + var tableColumnUID = objj_msgSend(tableColumn, "UID"); + if (!_dataViewsForTableColumns[tableColumnUID]) + _dataViewsForTableColumns[tableColumnUID] = []; + var rowIndex = 0, + rowsCount = rowArray.length, + isColumnSelected = objj_msgSend(_selectedColumnIndexes, "containsIndex:", column); + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + dataView = objj_msgSend(self, "_newDataViewForRow:tableColumn:", row, tableColumn), + isButton = objj_msgSend(dataView, "isKindOfClass:", objj_msgSend(CPButton, "class")), + isTextField = objj_msgSend(dataView, "isKindOfClass:", objj_msgSend(CPTextField, "class")); + objj_msgSend(dataView, "setFrame:", objj_msgSend(self, "frameOfDataViewAtColumn:row:", column, row)); + objj_msgSend(dataView, "setObjectValue:", objj_msgSend(self, "_objectValueForTableColumn:row:", tableColumn, row)); + objj_msgSend(tableColumn, "prepareDataView:forRow:", dataView, row); + if (isColumnSelected || objj_msgSend(self, "isRowSelected:", row)) + objj_msgSend(dataView, "setThemeState:", CPThemeStateSelectedDataView); + else + objj_msgSend(dataView, "unsetThemeState:", CPThemeStateSelectedDataView); + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_willDisplayView_forTableColumn_row_) + objj_msgSend(_delegate, "tableView:willDisplayView:forTableColumn:row:", self, dataView, tableColumn, row); + if (objj_msgSend(dataView, "superview") !== self) + objj_msgSend(self, "addSubview:", dataView); + _dataViewsForTableColumns[tableColumnUID][row] = dataView; + if (isButton || (_editingCellIndex && _editingCellIndex.x === column && _editingCellIndex.y === row)) + { + if (!isButton) + _editingCellIndex = undefined; + if (isTextField) + { + objj_msgSend(dataView, "setEditable:", YES); + objj_msgSend(dataView, "setSendsActionOnEndEditing:", YES); + objj_msgSend(dataView, "setSelectable:", YES); + objj_msgSend(dataView, "selectText:", nil); + } + objj_msgSend(dataView, "setTarget:", self); + objj_msgSend(dataView, "setAction:", sel_getUid("_commitDataViewObjectValue:")); + dataView.tableViewEditedColumnObj = tableColumn; + dataView.tableViewEditedRowIndex = row; + } + else if (isTextField) + { + objj_msgSend(dataView, "setEditable:", NO); + objj_msgSend(dataView, "setSelectable:", NO); + } + } + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_layoutDataViewsInRows:columns:"), function $CPTableView___layoutDataViewsInRows_columns_(self, _cmd, rows, columns) +{ with(self) +{ + var rowArray = [], + columnArray = []; + objj_msgSend(rows, "getIndexes:maxCount:inIndexRange:", rowArray, -1, nil); + objj_msgSend(columns, "getIndexes:maxCount:inIndexRange:", columnArray, -1, nil); + var columnIndex = 0, + columnsCount = columnArray.length; + for (; columnIndex < columnsCount; ++columnIndex) + { + var column = columnArray[columnIndex], + tableColumn = _tableColumns[column], + tableColumnUID = objj_msgSend(tableColumn, "UID"), + dataViewsForTableColumn = _dataViewsForTableColumns[tableColumnUID], + columnRange = _tableColumnRanges[column], + rowIndex = 0, + rowsCount = rowArray.length; + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + dataView = dataViewsForTableColumn[row]; + objj_msgSend(dataView, "setFrame:", objj_msgSend(self, "frameOfDataViewAtColumn:row:", column, row)); + } + } +} +},["void","CPIndexSet","CPIndexSet"]), new objj_method(sel_getUid("_commitDataViewObjectValue:"), function $CPTableView___commitDataViewObjectValue_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(_dataSource, "tableView:setObjectValue:forTableColumn:row:", self, objj_msgSend(sender, "objectValue"), sender.tableViewEditedColumnObj, sender.tableViewEditedRowIndex); + if (objj_msgSend(sender, "respondsToSelector:", sel_getUid("setEditable:"))) + objj_msgSend(sender, "setEditable:", NO); +} +},["void","id"]), new objj_method(sel_getUid("_newDataViewForRow:tableColumn:"), function $CPTableView___newDataViewForRow_tableColumn_(self, _cmd, aRow, aTableColumn) +{ with(self) +{ + if ((_implementedDelegateMethods & CPTableViewDelegate_tableView_dataViewForTableColumn_row_)) + { + var dataView = objj_msgSend(_delegate, "tableView:dataViewForTableColumn:row:", self, aTableColumn, aRow); + objj_msgSend(aTableColumn, "setDataView:", dataView); + } + return objj_msgSend(aTableColumn, "_newDataViewForRow:", aRow); +} +},["CPView","CPInteger","CPTableColumn"]), new objj_method(sel_getUid("_enqueueReusableDataView:"), function $CPTableView___enqueueReusableDataView_(self, _cmd, aDataView) +{ with(self) +{ + if (!aDataView) + return; + var identifier = aDataView.identifier; + if (!_cachedDataViews[identifier]) + _cachedDataViews[identifier] = [aDataView]; + else + _cachedDataViews[identifier].push(aDataView); +} +},["void","CPView"]), new objj_method(sel_getUid("setFrameSize:"), function $CPTableView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "setFrameSize:", aSize); + if (_headerView) + objj_msgSend(_headerView, "setFrameSize:", { width:(objj_msgSend(self, "frame").size.width), height:(objj_msgSend(_headerView, "frame").size.height) }); +} +},["void","CGSize"]), new objj_method(sel_getUid("setNeedsDisplay:"), function $CPTableView__setNeedsDisplay_(self, _cmd, aFlag) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "setNeedsDisplay:", aFlag); + objj_msgSend(_tableDrawView, "setNeedsDisplay:", aFlag); +} +},["void","BOOL"]), new objj_method(sel_getUid("_drawRect:"), function $CPTableView___drawRect_(self, _cmd, aRect) +{ with(self) +{ + var exposedRect = objj_msgSend(self, "visibleRect"); + objj_msgSend(self, "drawBackgroundInClipRect:", exposedRect); + objj_msgSend(self, "drawGridInClipRect:", exposedRect); + objj_msgSend(self, "highlightSelectionInClipRect:", exposedRect); + if (_implementsCustomDrawRow) + objj_msgSend(self, "_drawRows:clipRect:", _exposedRows, exposedRect); +} +},["void","CGRect"]), new objj_method(sel_getUid("drawBackgroundInClipRect:"), function $CPTableView__drawBackgroundInClipRect_(self, _cmd, aRect) +{ with(self) +{ + if (!_usesAlternatingRowBackgroundColors) + return; + var rowColors = objj_msgSend(self, "alternatingRowBackgroundColors"), + colorCount = objj_msgSend(rowColors, "count"); + if (colorCount === 0) + return; + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + if (colorCount === 1) + { + CGContextSetFillColor(context, rowColors[0]); + CGContextFillRect(context, aRect); + return; + } + var exposedRows = objj_msgSend(self, "rowsInRect:", aRect), + firstRow = exposedRows.location, + lastRow = CPMaxRange(exposedRows) - 1, + colorIndex = MIN(exposedRows.length, colorCount), + heightFilled = 0.0; + while (colorIndex--) + { + var row = firstRow - firstRow % colorCount + colorIndex, + fillRect = nil; + CGContextBeginPath(context); + for (; row <= lastRow; row += colorCount) + if (row >= firstRow) + CGContextAddRect(context, CGRectIntersection(aRect, fillRect = objj_msgSend(self, "rectOfRow:", row))); + if (row - colorCount === lastRow) + heightFilled = (fillRect.origin.y + fillRect.size.height); + CGContextClosePath(context); + CGContextSetFillColor(context, rowColors[colorIndex]); + CGContextFillPath(context); + } + var totalHeight = (aRect.origin.y + aRect.size.height); + if (heightFilled >= totalHeight || _rowHeight <= 0.0) + return; + var rowHeight = _rowHeight + _intercellSpacing.height, + fillRect = { origin: { x:(aRect.origin.x), y:(aRect.origin.y) + heightFilled }, size: { width:(aRect.size.width), height:rowHeight } }; + for (row = lastRow + 1; heightFilled < totalHeight; ++row) + { + CGContextSetFillColor(context, rowColors[row % colorCount]); + CGContextFillRect(context, fillRect); + heightFilled += rowHeight; + fillRect.origin.y += rowHeight; + } +} +},["void","CGRect"]), new objj_method(sel_getUid("drawGridInClipRect:"), function $CPTableView__drawGridInClipRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + gridStyleMask = objj_msgSend(self, "gridStyleMask"); + if (!(gridStyleMask & (CPTableViewSolidHorizontalGridLineMask | CPTableViewSolidVerticalGridLineMask))) + return; + CGContextBeginPath(context); + if (gridStyleMask & CPTableViewSolidHorizontalGridLineMask) + { + var exposedRows = objj_msgSend(self, "rowsInRect:", aRect), + row = exposedRows.location, + lastRow = CPMaxRange(exposedRows) - 1, + rowY = -0.5, + minX = (aRect.origin.x), + maxX = (aRect.origin.x + aRect.size.width); + for (; row <= lastRow; ++row) + { + var rowRect = objj_msgSend(self, "rectOfRow:", row), + rowY = (rowRect.origin.y + rowRect.size.height) - 0.5; + CGContextMoveToPoint(context, minX, rowY); + CGContextAddLineToPoint(context, maxX, rowY); + } + if (_rowHeight > 0.0) + { + var rowHeight = _rowHeight + _intercellSpacing.height, + totalHeight = (aRect.origin.y + aRect.size.height); + while (rowY < totalHeight) + { + rowY += rowHeight; + CGContextMoveToPoint(context, minX, rowY); + CGContextAddLineToPoint(context, maxX, rowY); + } + } + } + if (gridStyleMask & CPTableViewSolidVerticalGridLineMask) + { + var exposedColumnIndexes = objj_msgSend(self, "columnIndexesInRect:", aRect), + columnsArray = []; + objj_msgSend(exposedColumnIndexes, "getIndexes:maxCount:inIndexRange:", columnsArray, -1, nil); + var columnArrayIndex = 0, + columnArrayCount = columnsArray.length, + minY = (aRect.origin.y), + maxY = (aRect.origin.y + aRect.size.height); + for (; columnArrayIndex < columnArrayCount; ++columnArrayIndex) + { + var columnRect = objj_msgSend(self, "rectOfColumn:", columnsArray[columnArrayIndex]), + columnX = (columnRect.origin.x + columnRect.size.width) + 0.5; + CGContextMoveToPoint(context, columnX, minY); + CGContextAddLineToPoint(context, columnX, maxY); + } + } + CGContextClosePath(context); + CGContextSetStrokeColor(context, objj_msgSend(self, "gridColor")); + CGContextStrokePath(context); +} +},["void","CGRect"]), new objj_method(sel_getUid("highlightSelectionInClipRect:"), function $CPTableView__highlightSelectionInClipRect_(self, _cmd, aRect) +{ with(self) +{ + if (_selectionHighlightStyle === CPTableViewSelectionHighlightStyleNone) + return; + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + indexes = [], + rectSelector = sel_getUid("rectOfRow:"); + if (objj_msgSend(_selectedRowIndexes, "count") >= 1) + { + var exposedRows = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", objj_msgSend(self, "rowsInRect:", aRect)), + firstRow = objj_msgSend(exposedRows, "firstIndex"), + exposedRange = CPMakeRange(firstRow, objj_msgSend(exposedRows, "lastIndex") - firstRow + 1); + objj_msgSend(_selectedRowIndexes, "getIndexes:maxCount:inIndexRange:", indexes, -1, exposedRange); + } + else if (objj_msgSend(_selectedColumnIndexes, "count") >= 1) + { + rectSelector = sel_getUid("rectOfColumn:"); + var exposedColumns = objj_msgSend(self, "columnIndexesInRect:", aRect), + firstColumn = objj_msgSend(exposedColumns, "firstIndex"), + exposedRange = CPMakeRange(firstColumn, objj_msgSend(exposedColumns, "lastIndex") - firstColumn + 1); + objj_msgSend(_selectedColumnIndexes, "getIndexes:maxCount:inIndexRange:", indexes, -1, exposedRange); + } + var count = count2 = objj_msgSend(indexes, "count"); + if (!count) + return; + var drawGradient = (_selectionHighlightStyle === CPTableViewSelectionHighlightStyleSourceList && objj_msgSend(_selectedRowIndexes, "count") >= 1), + deltaHeight = 0.5 * (_gridStyleMask & CPTableViewSolidHorizontalGridLineMask); + CGContextBeginPath(context); + var gradientCache = objj_msgSend(self, "selectionGradientColors"), + topLineColor = objj_msgSend(gradientCache, "objectForKey:", CPSourceListTopLineColor), + bottomLineColor = objj_msgSend(gradientCache, "objectForKey:", CPSourceListBottomLineColor), + gradientColor = objj_msgSend(gradientCache, "objectForKey:", CPSourceListGradient); + while (count--) + { + var rowRect = CGRectIntersection(objj_msgSend(self, rectSelector, indexes[count]), aRect); + CGContextAddRect(context, rowRect); + if (drawGradient) + { + var minX = (rowRect.origin.x), + minY = (rowRect.origin.y), + maxX = (rowRect.origin.x + rowRect.size.width), + maxY = (rowRect.origin.y + rowRect.size.height) - deltaHeight; + CGContextDrawLinearGradient(context, gradientColor, rowRect.origin, CGPointMake(minX, maxY), 0); + CGContextClosePath(context); + CGContextBeginPath(context); + CGContextMoveToPoint(context, minX, minY); + CGContextAddLineToPoint(context, maxX, minY); + CGContextClosePath(context); + CGContextSetStrokeColor(context, topLineColor); + CGContextStrokePath(context); + CGContextBeginPath(context); + CGContextMoveToPoint(context, minX, maxY); + CGContextAddLineToPoint(context, maxX, maxY - 1); + CGContextClosePath(context); + CGContextSetStrokeColor(context, bottomLineColor); + CGContextStrokePath(context); + } + } + CGContextClosePath(context); + if (!drawGradient) + { + objj_msgSend(objj_msgSend(self, "selectionHighlightColor"), "setFill"); + CGContextFillPath(context); + } + CGContextBeginPath(context); + var gridStyleMask = objj_msgSend(self, "gridStyleMask"); + for(var i = 0; i < count2; i++) + { + var rect = objj_msgSend(self, rectSelector, indexes[i]), + minX = CGRectGetMinX(rect) - 0.5, + maxX = CGRectGetMaxX(rect) - 0.5, + minY = CGRectGetMinY(rect) - 0.5, + maxY = CGRectGetMaxY(rect) - 0.5; + if (objj_msgSend(_selectedRowIndexes, "count") >= 1 && gridStyleMask & CPTableViewSolidVerticalGridLineMask) + { + var exposedColumns = objj_msgSend(self, "columnIndexesInRect:", aRect), + exposedColumnIndexes = [], + firstExposedColumn = objj_msgSend(exposedColumns, "firstIndex"), + exposedRange = CPMakeRange(firstExposedColumn, objj_msgSend(exposedColumns, "lastIndex") - firstExposedColumn + 1); + objj_msgSend(exposedColumns, "getIndexes:maxCount:inIndexRange:", exposedColumnIndexes, -1, exposedRange); + var exposedColumnCount = objj_msgSend(exposedColumnIndexes, "count"); + for (var c = firstExposedColumn; c < exposedColumnCount; c++) + { + var colRect = objj_msgSend(self, "rectOfColumn:", exposedColumnIndexes[c]), + colX = CGRectGetMaxX(colRect) + 0.5; + CGContextMoveToPoint(context, colX, minY); + CGContextAddLineToPoint(context, colX, maxY); + } + } + if (objj_msgSend(indexes, "containsObject:", indexes[i] + 1)) + { + CGContextMoveToPoint(context, minX, maxY); + CGContextAddLineToPoint(context, maxX, maxY); + } + } + CGContextClosePath(context); + CGContextSetStrokeColor(context, objj_msgSend(self, "currentValueForThemeAttribute:", "highlighted-grid-color")); + CGContextStrokePath(context); +} +},["void","CGRect"]), new objj_method(sel_getUid("_drawRows:clipRect:"), function $CPTableView___drawRows_clipRect_(self, _cmd, rowsIndexes, clipRect) +{ with(self) +{ + var row = objj_msgSend(rowsIndexes, "firstIndex"); + while (row !== CPNotFound) + { + objj_msgSend(self, "drawRow:clipRect:", row, CGRectIntersection(clipRect, objj_msgSend(self, "rectOfRow:", row))); + row = objj_msgSend(rowsIndexes, "indexGreaterThanIndex:", row); + } +} +},["void","CPIndexSet","CGRect"]), new objj_method(sel_getUid("drawRow:clipRect:"), function $CPTableView__drawRow_clipRect_(self, _cmd, row, rect) +{ with(self) +{ +} +},["void","CPInteger","CGRect"]), new objj_method(sel_getUid("layoutSubviews"), function $CPTableView__layoutSubviews(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "load"); +} +},["void"]), new objj_method(sel_getUid("viewWillMoveToSuperview:"), function $CPTableView__viewWillMoveToSuperview_(self, _cmd, aView) +{ with(self) +{ + var superview = objj_msgSend(self, "superview"), + defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (superview) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPViewFrameDidChangeNotification, superview); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPViewBoundsDidChangeNotification, superview); + } + if (aView) + { + objj_msgSend(aView, "setPostsFrameChangedNotifications:", YES); + objj_msgSend(aView, "setPostsBoundsChangedNotifications:", YES); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("superviewFrameChanged:"), CPViewFrameDidChangeNotification, aView); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("superviewBoundsChanged:"), CPViewBoundsDidChangeNotification, aView); + } +} +},["void","CPView"]), new objj_method(sel_getUid("superviewBoundsChanged:"), function $CPTableView__superviewBoundsChanged_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("superviewFrameChanged:"), function $CPTableView__superviewFrameChanged_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(self, "tile"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("tracksMouseOutsideOfFrame"), function $CPTableView__tracksMouseOutsideOfFrame(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("startTrackingAt:"), function $CPTableView__startTrackingAt_(self, _cmd, aPoint) +{ with(self) +{ + var row = objj_msgSend(self, "rowAtPoint:", aPoint); + if (row < 0 && _allowsEmptySelection) + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSet"), NO); + objj_msgSend(self, "_noteSelectionIsChanging"); + if (objj_msgSend(self, "mouseDownFlags") & CPShiftKeyMask) + _selectionAnchorRow = (ABS(objj_msgSend(_selectedRowIndexes, "firstIndex") - row) < ABS(objj_msgSend(_selectedRowIndexes, "lastIndex") - row)) ? + objj_msgSend(_selectedRowIndexes, "firstIndex") : objj_msgSend(_selectedRowIndexes, "lastIndex"); + else + _selectionAnchorRow = row; + _startTrackingPoint = aPoint; + _startTrackingTimestamp = new Date(); + if (_implementedDataSourceMethods & CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_) + _trackingPointMovedOutOfClickSlop = NO; + if (row >= 0 && !(_implementedDataSourceMethods & CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_)) + objj_msgSend(self, "_updateSelectionWithMouseAtRow:", row); + objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", self); + return YES; +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("trackMouse:"), function $CPTableView__trackMouse_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(_draggedRowIndexes, "count")) + { + objj_msgSend(self, "autoscroll:", anEvent); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "trackMouse:", anEvent); + } + else + objj_msgSend(CPApp, "sendEvent:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("continueTracking:at:"), function $CPTableView__continueTracking_at_(self, _cmd, lastPoint, aPoint) +{ with(self) +{ + var row = objj_msgSend(self, "rowAtPoint:", aPoint); + if (!_isSelectingSession && _implementedDataSourceMethods & CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_) + { + if (row >= 0 && (ABS(_startTrackingPoint.x - aPoint.x) > 3 || (_verticalMotionCanDrag && ABS(_startTrackingPoint.y - aPoint.y) > 3)) || + (objj_msgSend(_selectedRowIndexes, "containsIndex:", row))) + { + if (objj_msgSend(_selectedRowIndexes, "containsIndex:", row)) + _draggedRowIndexes = objj_msgSend(objj_msgSend(CPIndexSet, "alloc"), "initWithIndexSet:", _selectedRowIndexes); + else + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSetWithIndex:", row); + var pboard = objj_msgSend(CPPasteboard, "pasteboardWithName:", CPDragPboard); + if (objj_msgSend(self, "canDragRowsWithIndexes:atPoint:", _draggedRowIndexes, aPoint) && objj_msgSend(_dataSource, "tableView:writeRowsWithIndexes:toPasteboard:", self, _draggedRowIndexes, pboard)) + { + var currentEvent = objj_msgSend(CPApp, "currentEvent"), + offset = CPPointMakeZero(), + tableColumns = objj_msgSend(_tableColumns, "objectsAtIndexes:", _exposedColumns); + var view = objj_msgSend(self, "dragViewForRowsWithIndexes:tableColumns:event:offset:", _draggedRowIndexes, tableColumns, currentEvent, offset); + if (!view) + { + var image = objj_msgSend(self, "dragImageForRowsWithIndexes:tableColumns:event:offset:", _draggedRowIndexes, tableColumns, currentEvent, offset); + view = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CPMakeRect(0, 0, objj_msgSend(image, "size").width, objj_msgSend(image, "size").height)); + objj_msgSend(view, "setImage:", image); + } + var bounds = objj_msgSend(view, "bounds"), + viewLocation = CPPointMake(aPoint.x - CGRectGetWidth(bounds) / 2 + offset.x, aPoint.y - CGRectGetHeight(bounds) / 2 + offset.y); + objj_msgSend(self, "dragView:at:offset:event:pasteboard:source:slideBack:", view, viewLocation, CPPointMakeZero(), objj_msgSend(CPApp, "currentEvent"), pboard, self, YES); + _startTrackingPoint = nil; + return NO; + } + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + } + else if (ABS(_startTrackingPoint.x - aPoint.x) < 5 && ABS(_startTrackingPoint.y - aPoint.y) < 5) + return YES; + } + _isSelectingSession = YES; + if (row >= 0 && row !== _lastTrackedRowIndex) + { + _lastTrackedRowIndex = row; + objj_msgSend(self, "_updateSelectionWithMouseAtRow:", row); + } + if ((_implementedDataSourceMethods & CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_) + && !_trackingPointMovedOutOfClickSlop) + { + var CLICK_SPACE_DELTA = 5.0; + if (ABS(aPoint.x - _startTrackingPoint.x) > CLICK_SPACE_DELTA + || ABS(aPoint.y - _startTrackingPoint.y) > CLICK_SPACE_DELTA) + { + _trackingPointMovedOutOfClickSlop = YES; + } + } + return YES; +} +},["BOOL","CGPoint","CGPoint"]), new objj_method(sel_getUid("stopTracking:at:mouseIsUp:"), function $CPTableView__stopTracking_at_mouseIsUp_(self, _cmd, lastPoint, aPoint, mouseIsUp) +{ with(self) +{ + _isSelectingSession = NO; + var CLICK_TIME_DELTA = 1000, + columnIndex, + column, + rowIndex, + shouldEdit = YES; + if (_implementedDataSourceMethods & CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_) + { + rowIndex = objj_msgSend(self, "rowAtPoint:", aPoint); + if (rowIndex !== -1) + { + if (objj_msgSend(_draggedRowIndexes, "count") > 0) + { + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + return; + } + _previouslySelectedRowIndexes = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(self, "_updateSelectionWithMouseAtRow:", rowIndex); + } + } + if (mouseIsUp + && (_implementedDataSourceMethods & CPTableViewDataSource_tableView_setObjectValue_forTableColumn_row_) + && !_trackingPointMovedOutOfClickSlop + && (objj_msgSend(objj_msgSend(CPApp, "currentEvent"), "clickCount") > 1)) + { + columnIndex = objj_msgSend(self, "columnAtPoint:", lastPoint); + if (columnIndex !== -1) + { + column = _tableColumns[columnIndex]; + if (objj_msgSend(column, "isEditable")) + { + rowIndex = objj_msgSend(self, "rowAtPoint:", aPoint); + if (rowIndex !== -1) + { + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_shouldEditTableColumn_row_) + shouldEdit = objj_msgSend(_delegate, "tableView:shouldEditTableColumn:row:", self, column, rowIndex); + if (shouldEdit) + { + objj_msgSend(self, "editColumn:row:withEvent:select:", columnIndex, rowIndex, nil, YES); + return; + } + } + } + } + } + if (objj_msgSend(objj_msgSend(CPApp, "currentEvent"), "clickCount") === 2 && _doubleAction) + { + _clickedRow = objj_msgSend(self, "rowAtPoint:", aPoint); + objj_msgSend(self, "sendAction:to:", _doubleAction, _target); + } +} +},["void","CGPoint","CGPoint","BOOL"]), new objj_method(sel_getUid("draggingEntered:"), function $CPTableView__draggingEntered_(self, _cmd, sender) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(sender, "draggingLocation"), nil), + dropOperation = objj_msgSend(self, "_proposedDropOperationAtPoint:", location), + row = objj_msgSend(self, "_proposedRowAtPoint:", location); + if (_retargetedDropRow !== nil) + row = _retargetedDropRow; + var draggedTypes = objj_msgSend(self, "registeredDraggedTypes"), + count = objj_msgSend(draggedTypes, "count"), + i = 0; + for (; i < count; i++) + { + if (objj_msgSend(objj_msgSend(objj_msgSend(sender, "draggingPasteboard"), "types"), "containsObject:", objj_msgSend(draggedTypes, "objectAtIndex:", i))) + return objj_msgSend(self, "_validateDrop:proposedRow:proposedDropOperation:", sender, row, dropOperation); + } + return CPDragOperationNone; +} +},["CPDragOperation","id"]), new objj_method(sel_getUid("draggingExited:"), function $CPTableView__draggingExited_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(_dropOperationFeedbackView, "removeFromSuperview"); +} +},["void","id"]), new objj_method(sel_getUid("draggingEnded:"), function $CPTableView__draggingEnded_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_draggingEnded"); +} +},["void","id"]), new objj_method(sel_getUid("_draggingEnded"), function $CPTableView___draggingEnded(self, _cmd) +{ with(self) +{ + _retargetedDropOperation = nil; + _retargetedDropRow = nil; + _draggedRowIndexes = objj_msgSend(CPIndexSet, "indexSet"); + objj_msgSend(_dropOperationFeedbackView, "removeFromSuperview"); +} +},["void"]), new objj_method(sel_getUid("wantsPeriodicDraggingUpdates"), function $CPTableView__wantsPeriodicDraggingUpdates(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("_proposedDropOperationAtPoint:"), function $CPTableView___proposedDropOperationAtPoint_(self, _cmd, theDragPoint) +{ with(self) +{ + if (_retargetedDropOperation !== nil) + return _retargetedDropOperation; + var row = objj_msgSend(self, "_proposedRowAtPoint:", theDragPoint), + rowRect = objj_msgSend(self, "rectOfRow:", row); + if (objj_msgSend(self, "intercellSpacing").height < 5.0) + rowRect = CPRectInset(rowRect, 0.0, 5.0 - objj_msgSend(self, "intercellSpacing").height); + if (CGRectContainsPoint(rowRect, theDragPoint) && row < _numberOfRows) + return CPTableViewDropOn; + return CPTableViewDropAbove; +} +},["CPTableViewDropOperation","CGPoint"]), new objj_method(sel_getUid("_proposedRowAtPoint:"), function $CPTableView___proposedRowAtPoint_(self, _cmd, dragPoint) +{ with(self) +{ + var row = FLOOR(dragPoint.y / ( _rowHeight + _intercellSpacing.height )), + lowerRow = row + 1, + rect = objj_msgSend(self, "rectOfRow:", row), + bottomPoint = CGRectGetMaxY(rect), + bottomThirty = bottomPoint - ((bottomPoint - CGRectGetMinY(rect)) * 0.3); + if (dragPoint.y > MAX(bottomThirty, bottomPoint - 6)) + row = lowerRow; + if (row >= objj_msgSend(self, "numberOfRows")) + row = objj_msgSend(self, "numberOfRows"); + return row; +} +},["CPInteger","CGPoint"]), new objj_method(sel_getUid("_validateDrop:proposedRow:proposedDropOperation:"), function $CPTableView___validateDrop_proposedRow_proposedDropOperation_(self, _cmd, info, row, dropOperation) +{ with(self) +{ + if (_implementedDataSourceMethods & CPTableViewDataSource_tableView_validateDrop_proposedRow_proposedDropOperation_) + return objj_msgSend(_dataSource, "tableView:validateDrop:proposedRow:proposedDropOperation:", self, info, row, dropOperation); + return CPDragOperationNone; +} +},["void","id","CPInteger","CPTableViewDropOperation"]), new objj_method(sel_getUid("_rectForDropHighlightViewOnRow:"), function $CPTableView___rectForDropHighlightViewOnRow_(self, _cmd, theRowIndex) +{ with(self) +{ + if (theRowIndex >= objj_msgSend(self, "numberOfRows")) + theRowIndex = objj_msgSend(self, "numberOfRows") - 1; + return objj_msgSend(self, "rectOfRow:", theRowIndex); +} +},["CPRect","int"]), new objj_method(sel_getUid("_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:"), function $CPTableView___rectForDropHighlightViewBetweenUpperRow_andLowerRow_offset_(self, _cmd, theUpperRowIndex, theLowerRowIndex, theOffset) +{ with(self) +{ + if (theLowerRowIndex > objj_msgSend(self, "numberOfRows")) + theLowerRowIndex = objj_msgSend(self, "numberOfRows"); + return objj_msgSend(self, "rectOfRow:", theLowerRowIndex); +} +},["CPRect","int","int","CPPoint"]), new objj_method(sel_getUid("draggingUpdated:"), function $CPTableView__draggingUpdated_(self, _cmd, sender) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(sender, "draggingLocation"), nil), + dropOperation = objj_msgSend(self, "_proposedDropOperationAtPoint:", location), + numberOfRows = objj_msgSend(self, "numberOfRows"), + row = objj_msgSend(self, "_proposedRowAtPoint:", location), + dragOperation = objj_msgSend(self, "_validateDrop:proposedRow:proposedDropOperation:", sender, row, dropOperation), + exposedClipRect = objj_msgSend(self, "visibleRect"); + if (_retargetedDropRow !== nil) + row = _retargetedDropRow; + if (dropOperation === CPTableViewDropOn && row >= objj_msgSend(self, "numberOfRows")) + row = objj_msgSend(self, "numberOfRows") - 1; + var rect = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if (row === -1) + rect = exposedClipRect; + else if (dropOperation === CPTableViewDropAbove) + rect = objj_msgSend(self, "_rectForDropHighlightViewBetweenUpperRow:andLowerRow:offset:", row - 1, row, location); + else + rect = objj_msgSend(self, "_rectForDropHighlightViewOnRow:", row); + objj_msgSend(_dropOperationFeedbackView, "setDropOperation:", row !== -1 ? dropOperation : CPDragOperationNone); + objj_msgSend(_dropOperationFeedbackView, "setHidden:", (dragOperation == CPDragOperationNone)); + objj_msgSend(_dropOperationFeedbackView, "setFrame:", rect); + objj_msgSend(_dropOperationFeedbackView, "setCurrentRow:", row); + objj_msgSend(self, "addSubview:", _dropOperationFeedbackView); + return dragOperation; +} +},["CPDragOperation","id"]), new objj_method(sel_getUid("prepareForDragOperation:"), function $CPTableView__prepareForDragOperation_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(_dropOperationFeedbackView, "removeFromSuperview"); + return (_implementedDataSourceMethods & CPTableViewDataSource_tableView_validateDrop_proposedRow_proposedDropOperation_); +} +},["BOOL","id"]), new objj_method(sel_getUid("performDragOperation:"), function $CPTableView__performDragOperation_(self, _cmd, sender) +{ with(self) +{ + var location = objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(sender, "draggingLocation"), nil), + operation = objj_msgSend(self, "_proposedDropOperationAtPoint:", location), + row = _retargetedDropRow; + if (row === nil) + var row = objj_msgSend(self, "_proposedRowAtPoint:", location); + return objj_msgSend(_dataSource, "tableView:acceptDrop:row:dropOperation:", self, sender, row, operation); +} +},["BOOL","id"]), new objj_method(sel_getUid("concludeDragOperation:"), function $CPTableView__concludeDragOperation_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "reloadData"); +} +},["void","id"]), new objj_method(sel_getUid("draggedImage:endedAt:operation:"), function $CPTableView__draggedImage_endedAt_operation_(self, _cmd, anImage, aLocation, anOperation) +{ with(self) +{ + if(objj_msgSend(_dataSource, "respondsToSelector:", sel_getUid("tableView:didEndDraggedImage:atPosition:operation:"))) + objj_msgSend(_dataSource, "tableView:didEndDraggedImage:atPosition:operation:", self, anImage, aLocation, anOperation); +} +},["void","CPImage","CGPoint","CPDragOperation"]), new objj_method(sel_getUid("draggedView:endedAt:operation:"), function $CPTableView__draggedView_endedAt_operation_(self, _cmd, aView, aLocation, anOperation) +{ with(self) +{ + objj_msgSend(self, "_draggingEnded"); + objj_msgSend(self, "draggedImage:endedAt:operation:", aView, aLocation, anOperation); +} +},["void","CPImage","CGPoint","CPDragOperation"]), new objj_method(sel_getUid("_updateSelectionWithMouseAtRow:"), function $CPTableView___updateSelectionWithMouseAtRow_(self, _cmd, aRow) +{ with(self) +{ + if(aRow < 0) + return; + var newSelection, + shouldExtendSelection = NO; + if (objj_msgSend(self, "mouseDownFlags") & (CPCommandKeyMask | CPControlKeyMask | CPAlternateKeyMask)) + { + if (objj_msgSend(_selectedRowIndexes, "containsIndex:", aRow)) + { + newSelection = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(newSelection, "removeIndex:", aRow); + } + else if (_allowsMultipleSelection) + { + newSelection = objj_msgSend(_selectedRowIndexes, "copy"); + objj_msgSend(newSelection, "addIndex:", aRow); + } + else + newSelection = objj_msgSend(CPIndexSet, "indexSetWithIndex:", aRow); + } + else if (_allowsMultipleSelection) + { + newSelection = objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(MIN(aRow, _selectionAnchorRow), ABS(aRow - _selectionAnchorRow) + 1)); + shouldExtendSelection = objj_msgSend(self, "mouseDownFlags") & CPShiftKeyMask && + ((_lastSelectedRow == objj_msgSend(_selectedRowIndexes, "lastIndex") && aRow > _lastSelectedRow) || + (_lastSelectedRow == objj_msgSend(_selectedRowIndexes, "firstIndex") && aRow < _lastSelectedRow)); + } + else if (aRow >= 0 && aRow < _numberOfRows) + newSelection = objj_msgSend(CPIndexSet, "indexSetWithIndex:", aRow); + else + newSelection = objj_msgSend(CPIndexSet, "indexSet"); + if (objj_msgSend(newSelection, "isEqualToIndexSet:", _selectedRowIndexes)) + return; + if (_implementedDelegateMethods & CPTableViewDelegate_selectionShouldChangeInTableView_ && + !objj_msgSend(_delegate, "selectionShouldChangeInTableView:", self)) + return; + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_selectionIndexesForProposedSelection_) + newSelection = objj_msgSend(_delegate, "tableView:selectionIndexesForProposedSelection:", self, newSelection); + if (_implementedDelegateMethods & CPTableViewDelegate_tableView_shouldSelectRow_) + { + var indexArray = []; + objj_msgSend(newSelection, "getIndexes:maxCount:inIndexRange:", indexArray, -1, nil); + var indexCount = indexArray.length; + while (indexCount--) + { + var index = indexArray[indexCount]; + if (!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, index)) + objj_msgSend(newSelection, "removeIndex:", index); + } + if (objj_msgSend(newSelection, "count") === 0) + return; + } + if (!_allowsEmptySelection && objj_msgSend(newSelection, "count") === 0) + return; + if (objj_msgSend(newSelection, "isEqualToIndexSet:", _selectedRowIndexes)) + return; + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", newSelection, shouldExtendSelection); +} +},["void","CPInteger"]), new objj_method(sel_getUid("_noteSelectionIsChanging"), function $CPTableView___noteSelectionIsChanging(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPTableViewSelectionIsChangingNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("_noteSelectionDidChange"), function $CPTableView___noteSelectionDidChange(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPTableViewSelectionDidChangeNotification, self, nil); +} +},["void"]), new objj_method(sel_getUid("becomeFirstResponder"), function $CPTableView__becomeFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPTableView__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("keyDown:"), function $CPTableView__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + objj_msgSend(self, "interpretKeyEvents:", [anEvent]); +} +},["void","CPEvent"]), new objj_method(sel_getUid("moveDown:"), function $CPTableView__moveDown_(self, _cmd, sender) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_selectionShouldChangeInTableView_ && + !objj_msgSend(_delegate, "selectionShouldChangeInTableView:", self)) + return; + var anEvent = objj_msgSend(CPApp, "currentEvent"); + if(objj_msgSend(objj_msgSend(self, "selectedRowIndexes"), "count") > 0) + { + var extend = NO; + if((objj_msgSend(anEvent, "modifierFlags") & CPShiftKeyMask) && _allowsMultipleSelection) + extend = YES; + var i = objj_msgSend(objj_msgSend(self, "selectedRowIndexes"), "lastIndex"); + if(i<objj_msgSend(self, "numberOfRows") - 1) + i++; + } + else + { + var extend = NO; + if(objj_msgSend(self, "numberOfRows") > 0) + var i = 0; + } + if(_implementedDelegateMethods & CPTableViewDelegate_tableView_shouldSelectRow_) + { + while((!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, i)) && i<objj_msgSend(self, "numberOfRows")) + { + i++; + } + if(!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, i)) + return; + } + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", i), extend); + if(i >= 0) + objj_msgSend(self, "scrollRowToVisible:", i); +} +},["void","id"]), new objj_method(sel_getUid("moveDownAndModifySelection:"), function $CPTableView__moveDownAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveDown:", sender); +} +},["void","id"]), new objj_method(sel_getUid("moveUp:"), function $CPTableView__moveUp_(self, _cmd, sender) +{ with(self) +{ + if (_implementedDelegateMethods & CPTableViewDelegate_selectionShouldChangeInTableView_ && + !objj_msgSend(_delegate, "selectionShouldChangeInTableView:", self)) + return; + var anEvent = objj_msgSend(CPApp, "currentEvent"); + if(objj_msgSend(objj_msgSend(self, "selectedRowIndexes"), "count") > 0) + { + var extend = NO; + if((objj_msgSend(anEvent, "modifierFlags") & CPShiftKeyMask) && _allowsMultipleSelection) + extend = YES; + var i = objj_msgSend(objj_msgSend(self, "selectedRowIndexes"), "firstIndex"); + if(i > 0) + i--; + } + else + { + var extend = NO; + if(objj_msgSend(self, "numberOfRows") > 0) + var i = objj_msgSend(self, "numberOfRows") - 1; + } + if(_implementedDelegateMethods & CPTableViewDelegate_tableView_shouldSelectRow_) + { + while((!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, i)) && i > 0) + { + i--; + } + if(!objj_msgSend(_delegate, "tableView:shouldSelectRow:", self, i)) + return; + } + objj_msgSend(self, "selectRowIndexes:byExtendingSelection:", objj_msgSend(CPIndexSet, "indexSetWithIndex:", i), extend); + if(i >= 0) + objj_msgSend(self, "scrollRowToVisible:", i); +} +},["void","id"]), new objj_method(sel_getUid("moveUpAndModifySelection:"), function $CPTableView__moveUpAndModifySelection_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "moveUp:", sender); +} +},["void","id"]), new objj_method(sel_getUid("deleteBackward:"), function $CPTableView__deleteBackward_(self, _cmd, sender) +{ with(self) +{ + if(objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tableViewDeleteKeyPressed:"))) + objj_msgSend(_delegate, "tableViewDeleteKeyPressed:", self); +} +},["void","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPTableView__themeClass(self, _cmd) +{ with(self) +{ + return "tableview"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPTableView__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null"), objj_msgSend(CPNull, "null")], ["alternating-row-colors", "grid-color", "highlighted-grid-color", "selection-color", "sourcelist-selection-color", "sort-image", "sort-image-reversed"]); +} +},["id"])]); +} +{ +var the_class = objj_getClass("CPTableView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_replacementKeyPathForBinding:"), function $CPTableView___replacementKeyPathForBinding_(self, _cmd, aBinding) +{ with(self) +{ + if (aBinding === "selectionIndexes") + return "selectedRowIndexes"; + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "_replacementKeyPathForBinding:", aBinding); +} +},["CPString","CPString"]), new objj_method(sel_getUid("_establishBindingsIfUnbound:"), function $CPTableView___establishBindingsIfUnbound_(self, _cmd, destination) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "infoForBinding:", "content"), "objectForKey:", CPObservedObjectKey) !== destination) + objj_msgSend(self, "bind:toObject:withKeyPath:options:", "content", destination, "arrangedObjects", nil); + if (objj_msgSend(objj_msgSend(self, "infoForBinding:", "selectionIndexes"), "objectForKey:", CPObservedObjectKey) !== destination) + objj_msgSend(self, "bind:toObject:withKeyPath:options:", "selectionIndexes", destination, "selectionIndexes", nil); +} +},["void","id"]), new objj_method(sel_getUid("setContent:"), function $CPTableView__setContent_(self, _cmd, content) +{ with(self) +{ + objj_msgSend(self, "reloadData"); +} +},["void","CPArray"])]); +} +var CPTableViewDataSourceKey = "CPTableViewDataSourceKey", + CPTableViewDelegateKey = "CPTableViewDelegateKey", + CPTableViewHeaderViewKey = "CPTableViewHeaderViewKey", + CPTableViewTableColumnsKey = "CPTableViewTableColumnsKey", + CPTableViewRowHeightKey = "CPTableViewRowHeightKey", + CPTableViewIntercellSpacingKey = "CPTableViewIntercellSpacingKey", + CPTableViewSelectionHighlightStyleKey = "CPTableViewSelectionHighlightStyleKey", + CPTableViewMultipleSelectionKey = "CPTableViewMultipleSelectionKey", + CPTableViewEmptySelectionKey = "CPTableViewEmptySelectionKey", + CPTableViewColumnReorderingKey = "CPTableViewColumnReorderingKey", + CPTableViewColumnResizingKey = "CPTableViewColumnResizingKey", + CPTableViewColumnSelectionKey = "CPTableViewColumnSelectionKey", + CPTableViewColumnAutoresizingStyleKey = "CPTableViewColumnAutoresizingStyleKey", + CPTableViewGridColorKey = "CPTableViewGridColorKey", + CPTableViewGridStyleMaskKey = "CPTableViewGridStyleMaskKey", + CPTableViewUsesAlternatingBackgroundKey = "CPTableViewUsesAlternatingBackgroundKey", + CPTableViewAlternatingRowColorsKey = "CPTableViewAlternatingRowColorsKey", + CPTableViewHeaderViewKey = "CPTableViewHeaderViewKey", + CPTableViewCornerViewKey = "CPTableViewCornerViewKey"; +{ +var the_class = objj_getClass("CPTableView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTableView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTableView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _allowsColumnReordering = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewColumnReorderingKey); + _allowsColumnResizing = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewColumnResizingKey); + _allowsMultipleSelection = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewMultipleSelectionKey); + _allowsEmptySelection = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewEmptySelectionKey); + _allowsColumnSelection = objj_msgSend(aCoder, "decodeBoolForKey:", CPTableViewColumnSelectionKey); + _selectionHighlightStyle = objj_msgSend(aCoder, "decodeIntForKey:", CPTableViewSelectionHighlightStyleKey); + _columnAutoResizingStyle = objj_msgSend(aCoder, "decodeIntForKey:", CPTableViewColumnAutoresizingStyleKey); + _tableColumns = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewTableColumnsKey) || []; + objj_msgSend(_tableColumns, "makeObjectsPerformSelector:withObject:", sel_getUid("setTableView:"), self); + if (objj_msgSend(aCoder, "containsValueForKey:", CPTableViewRowHeightKey)) + _rowHeight = objj_msgSend(aCoder, "decodeFloatForKey:", CPTableViewRowHeightKey); + else + _rowHeight = 23.0; + _intercellSpacing = objj_msgSend(aCoder, "decodeSizeForKey:", CPTableViewIntercellSpacingKey) || { width:3.0, height:2.0 }; + objj_msgSend(self, "setGridColor:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewGridColorKey)); + _gridStyleMask = objj_msgSend(aCoder, "decodeIntForKey:", CPTableViewGridStyleMaskKey) || CPTableViewGridNone; + _usesAlternatingRowBackgroundColors = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewUsesAlternatingBackgroundKey); + objj_msgSend(self, "setAlternatingRowBackgroundColors:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewAlternatingRowColorsKey)); + _headerView = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewHeaderViewKey); + _cornerView = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewCornerViewKey); + if (_cornerView) + objj_msgSend(_cornerView, "setHidden:", NO); + _dataSource = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewDataSourceKey); + _delegate = objj_msgSend(aCoder, "decodeObjectForKey:", CPTableViewDelegateKey); + objj_msgSend(self, "_init"); + objj_msgSend(self, "viewWillMoveToSuperview:", objj_msgSend(self, "superview")); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTableView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTableView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _dataSource, CPTableViewDataSourceKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _delegate, CPTableViewDelegateKey); + objj_msgSend(aCoder, "encodeFloat:forKey:", _rowHeight, CPTableViewRowHeightKey); + objj_msgSend(aCoder, "encodeSize:forKey:", _intercellSpacing, CPTableViewIntercellSpacingKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _selectionHighlightStyle, CPTableViewSelectionHighlightStyleKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _columnAutoResizingStyle, CPTableViewColumnAutoresizingStyleKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsMultipleSelection, CPTableViewMultipleSelectionKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsEmptySelection, CPTableViewEmptySelectionKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsColumnReordering, CPTableViewColumnReorderingKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsColumnResizing, CPTableViewColumnResizingKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsColumnSelection, CPTableViewColumnSelectionKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _tableColumns, CPTableViewTableColumnsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "gridColor"), CPTableViewGridColorKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _gridStyleMask, CPTableViewGridStyleMaskKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _usesAlternatingRowBackgroundColors, CPTableViewUsesAlternatingBackgroundKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "alternatingRowBackgroundColors"), CPTableViewAlternatingRowColorsKey) + objj_msgSend(aCoder, "encodeObject:forKey:", _cornerView, CPTableViewCornerViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _headerView, CPTableViewHeaderViewKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPIndexSet") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("removeMatches:"), function $CPIndexSet__removeMatches_(self, _cmd, otherSet) +{ with(self) +{ + var firstindex = objj_msgSend(self, "firstIndex"); + var index = MIN(firstindex,objj_msgSend(otherSet, "firstIndex")); + var switchFlag = (index == firstindex); + while(index != CPNotFound) + { + var indexSet = (switchFlag) ? otherSet : self; + otherIndex = objj_msgSend(indexSet, "indexGreaterThanOrEqualToIndex:", index); + if (otherIndex == index) + { + objj_msgSend(self, "removeIndex:", index); + objj_msgSend(otherSet, "removeIndex:", index); + } + index = otherIndex; + switchFlag = !switchFlag; + } +} +},["void",null])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPDropOperationDrawingView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("dropOperation"), new objj_ivar("tableView"), new objj_ivar("currentRow"), new objj_ivar("isBlinking")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("dropOperation"), function $_CPDropOperationDrawingView__dropOperation(self, _cmd) +{ with(self) +{ +return dropOperation; +} +},["id"]), +new objj_method(sel_getUid("setDropOperation:"), function $_CPDropOperationDrawingView__setDropOperation_(self, _cmd, newValue) +{ with(self) +{ +dropOperation = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("tableView"), function $_CPDropOperationDrawingView__tableView(self, _cmd) +{ with(self) +{ +return tableView; +} +},["id"]), +new objj_method(sel_getUid("setTableView:"), function $_CPDropOperationDrawingView__setTableView_(self, _cmd, newValue) +{ with(self) +{ +tableView = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("currentRow"), function $_CPDropOperationDrawingView__currentRow(self, _cmd) +{ with(self) +{ +return currentRow; +} +},["id"]), +new objj_method(sel_getUid("setCurrentRow:"), function $_CPDropOperationDrawingView__setCurrentRow_(self, _cmd, newValue) +{ with(self) +{ +currentRow = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("isBlinking"), function $_CPDropOperationDrawingView__isBlinking(self, _cmd) +{ with(self) +{ +return isBlinking; +} +},["id"]), +new objj_method(sel_getUid("setIsBlinking:"), function $_CPDropOperationDrawingView__setIsBlinking_(self, _cmd, newValue) +{ with(self) +{ +isBlinking = newValue; +} +},["void","id"]), new objj_method(sel_getUid("drawRect:"), function $_CPDropOperationDrawingView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + if(tableView._destinationDragStyle === CPTableViewDraggingDestinationFeedbackStyleNone || isBlinking) + return; + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithHexString:", "4886ca")); + CGContextSetLineWidth(context, 3); + if (currentRow === -1) + { + CGContextStrokeRect(context, objj_msgSend(self, "bounds")); + } + else if (dropOperation === CPTableViewDropOn) + { + var selectedRows = objj_msgSend(tableView, "selectedRowIndexes"), + newRect = { origin: { x:aRect.origin.x + 2, y:aRect.origin.y + 2 }, size: { width:aRect.size.width - 4, height:aRect.size.height - 5 } }; + if(objj_msgSend(selectedRows, "containsIndex:", currentRow)) + { + CGContextSetLineWidth(context, 2); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "whiteColor")); + } + else + { + CGContextSetFillColor(context, objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", 72/255, 134/255, 202/255, 0.25)); + CGContextFillRoundedRectangleInRect(context, newRect, 8, YES, YES, YES, YES); + } + CGContextStrokeRoundedRectangleInRect(context, newRect, 8, YES, YES, YES, YES); + } + else if (dropOperation === CPTableViewDropAbove) + { + objj_msgSend(self, "setFrameOrigin:", CGPointMake(_frame.origin.x, _frame.origin.y - 8)); + var selectedRows = objj_msgSend(tableView, "selectedRowIndexes"); + if(objj_msgSend(selectedRows, "containsIndex:", currentRow - 1) || objj_msgSend(selectedRows, "containsIndex:", currentRow)) + { + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "whiteColor")); + CGContextSetLineWidth(context, 4); + CGContextStrokeEllipseInRect(context, { origin: { x:aRect.origin.x + 4, y:aRect.origin.y + 4 }, size: { width:8, height:8 } }); + CGContextBeginPath(context); + CGContextMoveToPoint(context, 10, aRect.origin.y + 8); + CGContextAddLineToPoint(context, aRect.size.width - aRect.origin.y - 8, aRect.origin.y + 8); + CGContextClosePath(context); + CGContextStrokePath(context); + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "colorWithHexString:", "4886ca")); + CGContextSetLineWidth(context, 3); + } + CGContextStrokeEllipseInRect(context, { origin: { x:aRect.origin.x + 4, y:aRect.origin.y + 4 }, size: { width:8, height:8 } }); + CGContextBeginPath(context); + CGContextMoveToPoint(context, 10, aRect.origin.y + 8); + CGContextAddLineToPoint(context, aRect.size.width - aRect.origin.y - 8, aRect.origin.y + 8); + CGContextClosePath(context); + CGContextStrokePath(context); + } +} +},["void","CGRect"]), new objj_method(sel_getUid("blink"), function $_CPDropOperationDrawingView__blink(self, _cmd) +{ with(self) +{ + if (dropOperation !== CPTableViewDropOn) + return; + isBlinking = YES; + var showCallback = function() { + objj_msgSend(self, "setHidden:", NO) + isBlinking = NO; + } + var hideCallback = function() { + objj_msgSend(self, "setHidden:", YES) + isBlinking = YES; + } + objj_msgSend(self, "setHidden:", YES); + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", 0.1, showCallback, NO); + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", 0.19, hideCallback, NO); + objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", 0.27, showCallback, NO); +} +},["void"])]); +} +{var the_class = objj_allocateClassPair(CPView, "_CPColumnDragView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_lineColor")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLineColor:"), function $_CPColumnDragView__initWithLineColor_(self, _cmd, aColor) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPColumnDragView").super_class }, "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + if (self) + _lineColor = aColor; + return self; +} +},["id","CPColor"]), new objj_method(sel_getUid("drawRect:"), function $_CPColumnDragView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + CGContextSetStrokeColor(context, _lineColor); + var points = [ + { x:0.5, y:0 }, + { x:0.5, y:aRect.size.height } + ]; + CGContextStrokeLineSegments(context, points, 2); + points = [ + { x:aRect.size.width - 0.5, y:0 }, + { x:aRect.size.width - 0.5, y:aRect.size.height } + ]; + CGContextStrokeLineSegments(context, points, 2); +} +},["void","CGRect"])]); +} + +p;11;CPTabView.jt;27368;@STATIC;1.0;i;13;CPImageView.ji;15;CPTabViewItem.ji;8;CPView.jt;27298;objj_executeFile("CPImageView.j", YES); +objj_executeFile("CPTabViewItem.j", YES); +objj_executeFile("CPView.j", YES); +CPTopTabsBezelBorder = 0; +CPNoTabsBezelBorder = 4; +CPNoTabsLineBorder = 5; +CPNoTabsNoBorder = 6; +var CPTabViewBezelBorderLeftImage = nil, + CPTabViewBackgroundCenterImage = nil, + CPTabViewBezelBorderRightImage = nil, + CPTabViewBezelBorderColor = nil, + CPTabViewBezelBorderBackgroundColor = nil; +var LEFT_INSET = 7.0, + RIGHT_INSET = 7.0; +var CPTabViewDidSelectTabViewItemSelector = 1, + CPTabViewShouldSelectTabViewItemSelector = 2, + CPTabViewWillSelectTabViewItemSelector = 4, + CPTabViewDidChangeNumberOfTabViewItemsSelector = 8; +{var the_class = objj_allocateClassPair(CPView, "CPTabView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_labelsView"), new objj_ivar("_backgroundView"), new objj_ivar("_separatorView"), new objj_ivar("_auxiliaryView"), new objj_ivar("_contentView"), new objj_ivar("_tabViewItems"), new objj_ivar("_selectedTabViewItem"), new objj_ivar("_tabViewType"), new objj_ivar("_delegate"), new objj_ivar("_delegateSelectors")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPTabView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _tabViewType = CPTopTabsBezelBorder; + _tabViewItems = []; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $CPTabView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ + if (_tabViewType != CPTopTabsBezelBorder || _labelsView) + return; + objj_msgSend(self, "_createBezelBorder"); + objj_msgSend(self, "layoutSubviews"); +} +},["void"]), new objj_method(sel_getUid("_createBezelBorder"), function $CPTabView___createBezelBorder(self, _cmd) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + _labelsView = objj_msgSend(objj_msgSend(_CPTabLabelsView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), 0.0)); + objj_msgSend(_labelsView, "setTabView:", self); + objj_msgSend(_labelsView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(self, "addSubview:", _labelsView); + _backgroundView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_backgroundView, "setBackgroundColor:", CPTabViewBezelBorderBackgroundColor); + objj_msgSend(_backgroundView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(self, "addSubview:", _backgroundView); + _separatorView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_separatorView, "setBackgroundColor:", objj_msgSend(objj_msgSend(self, "class"), "bezelBorderColor")); + objj_msgSend(_separatorView, "setAutoresizingMask:", CPViewWidthSizable | CPViewMaxYMargin); + objj_msgSend(self, "addSubview:", _separatorView); +} +},["void"]), new objj_method(sel_getUid("layoutSubviews"), function $CPTabView__layoutSubviews(self, _cmd) +{ with(self) +{ + if (_tabViewType == CPTopTabsBezelBorder) + { + var backgroundRect = objj_msgSend(self, "bounds"), + labelsViewHeight = objj_msgSend(_CPTabLabelsView, "height"); + backgroundRect.origin.y += labelsViewHeight; + backgroundRect.size.height -= labelsViewHeight; + objj_msgSend(_backgroundView, "setFrame:", backgroundRect); + var auxiliaryViewHeight = 5.0; + if (_auxiliaryView) + { + auxiliaryViewHeight = CGRectGetHeight(objj_msgSend(_auxiliaryView, "frame")); + objj_msgSend(_auxiliaryView, "setFrame:", CGRectMake(LEFT_INSET, labelsViewHeight, CGRectGetWidth(backgroundRect) - LEFT_INSET - RIGHT_INSET, auxiliaryViewHeight)); + } + objj_msgSend(_separatorView, "setFrame:", CGRectMake(LEFT_INSET, labelsViewHeight + auxiliaryViewHeight, CGRectGetWidth(backgroundRect) - LEFT_INSET - RIGHT_INSET, 1.0)); + } + objj_msgSend(_contentView, "setFrame:", objj_msgSend(self, "contentRect")); +} +},["void"]), new objj_method(sel_getUid("addTabViewItem:"), function $CPTabView__addTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + objj_msgSend(self, "insertTabViewItem:atIndex:", aTabViewItem, objj_msgSend(_tabViewItems, "count")); +} +},["void","CPTabViewItem"]), new objj_method(sel_getUid("insertTabViewItem:atIndex:"), function $CPTabView__insertTabViewItem_atIndex_(self, _cmd, aTabViewItem, anIndex) +{ with(self) +{ + if (!_labelsView) + objj_msgSend(self, "_createBezelBorder"); + objj_msgSend(_tabViewItems, "insertObject:atIndex:", aTabViewItem, anIndex); + objj_msgSend(_labelsView, "tabView:didAddTabViewItem:", self, aTabViewItem); + objj_msgSend(aTabViewItem, "_setTabView:", self); + if (objj_msgSend(_tabViewItems, "count") == 1) + objj_msgSend(self, "selectFirstTabViewItem:", self); + if (_delegateSelectors & CPTabViewDidChangeNumberOfTabViewItemsSelector) + objj_msgSend(_delegate, "tabViewDidChangeNumberOfTabViewItems:", self); +} +},["void","CPTabViewItem","unsigned"]), new objj_method(sel_getUid("removeTabViewItem:"), function $CPTabView__removeTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + var index = objj_msgSend(self, "indexOfTabViewItem:", aTabViewItem); + objj_msgSend(_tabViewItems, "removeObjectIdenticalTo:", aTabViewItem); + objj_msgSend(_labelsView, "tabView:didRemoveTabViewItemAtIndex:", self, index); + objj_msgSend(aTabViewItem, "_setTabView:", nil); + if (_delegateSelectors & CPTabViewDidChangeNumberOfTabViewItemsSelector) + objj_msgSend(_delegate, "tabViewDidChangeNumberOfTabViewItems:", self); +} +},["void","CPTabViewItem"]), new objj_method(sel_getUid("indexOfTabViewItem:"), function $CPTabView__indexOfTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + return objj_msgSend(_tabViewItems, "indexOfObjectIdenticalTo:", aTabViewItem); +} +},["int","CPTabViewItem"]), new objj_method(sel_getUid("indexOfTabViewItemWithIdentifier:"), function $CPTabView__indexOfTabViewItemWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + var index = 0, + count = objj_msgSend(_tabViewItems, "count"); + for (; index < count; ++index) + if (objj_msgSend(objj_msgSend(_tabViewItems[index], "identifier"), "isEqual:", anIdentifier)) + return index; + return index; +} +},["int","CPString"]), new objj_method(sel_getUid("numberOfTabViewItems"), function $CPTabView__numberOfTabViewItems(self, _cmd) +{ with(self) +{ + return objj_msgSend(_tabViewItems, "count"); +} +},["unsigned"]), new objj_method(sel_getUid("tabViewItemAtIndex:"), function $CPTabView__tabViewItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return _tabViewItems[anIndex]; +} +},["CPTabViewItem","unsigned"]), new objj_method(sel_getUid("tabViewItems"), function $CPTabView__tabViewItems(self, _cmd) +{ with(self) +{ + return _tabViewItems; +} +},["CPArray"]), new objj_method(sel_getUid("selectFirstTabViewItem:"), function $CPTabView__selectFirstTabViewItem_(self, _cmd, aSender) +{ with(self) +{ + var count = objj_msgSend(_tabViewItems, "count"); + if (count) + objj_msgSend(self, "selectTabViewItemAtIndex:", 0); +} +},["void","id"]), new objj_method(sel_getUid("selectLastTabViewItem:"), function $CPTabView__selectLastTabViewItem_(self, _cmd, aSender) +{ with(self) +{ + var count = objj_msgSend(_tabViewItems, "count"); + if (count) + objj_msgSend(self, "selectTabViewItemAtIndex:", count - 1); +} +},["void","id"]), new objj_method(sel_getUid("selectNextTabViewItem:"), function $CPTabView__selectNextTabViewItem_(self, _cmd, aSender) +{ with(self) +{ + if (!_selectedTabViewItem) + return; + var index = objj_msgSend(self, "indexOfTabViewItem:", _selectedTabViewItem), + count = objj_msgSend(_tabViewItems, "count"); + objj_msgSend(self, "selectTabViewItemAtIndex:", index + 1 % count); +} +},["void","id"]), new objj_method(sel_getUid("selectPreviousTabViewItem:"), function $CPTabView__selectPreviousTabViewItem_(self, _cmd, aSender) +{ with(self) +{ + if (!_selectedTabViewItem) + return; + var index = objj_msgSend(self, "indexOfTabViewItem:", _selectedTabViewItem), + count = objj_msgSend(_tabViewItems, "count"); + objj_msgSend(self, "selectTabViewItemAtIndex:", index == 0 ? count : index - 1); +} +},["void","id"]), new objj_method(sel_getUid("selectTabViewItem:"), function $CPTabView__selectTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + if ((_delegateSelectors & CPTabViewShouldSelectTabViewItemSelector) && !objj_msgSend(_delegate, "tabView:shouldSelectTabViewItem:", self, aTabViewItem)) + return; + if (_delegateSelectors & CPTabViewWillSelectTabViewItemSelector) + objj_msgSend(_delegate, "tabView:willSelectTabViewItem:", self, aTabViewItem); + if (_selectedTabViewItem) + { + _selectedTabViewItem._tabState = CPBackgroundTab; + objj_msgSend(_labelsView, "tabView:didChangeStateOfTabViewItem:", self, _selectedTabViewItem); + } + _selectedTabViewItem = aTabViewItem; + _selectedTabViewItem._tabState = CPSelectedTab; + var _previousContentView = _contentView; + _contentView = objj_msgSend(_selectedTabViewItem, "view"); + if (_previousContentView !== _contentView) + { + objj_msgSend(_previousContentView, "removeFromSuperview"); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(self, "addSubview:", _contentView); + } + var _previousAuxiliaryView = _auxiliaryView; + _auxiliaryView = objj_msgSend(_selectedTabViewItem, "auxiliaryView"); + if (_previousAuxiliaryView !== _auxiliaryView) + { + objj_msgSend(_previousAuxiliaryView, "removeFromSuperview"); + objj_msgSend(_auxiliaryView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(self, "addSubview:", _auxiliaryView); + } + objj_msgSend(_labelsView, "tabView:didChangeStateOfTabViewItem:", self, _selectedTabViewItem); + objj_msgSend(self, "layoutSubviews"); + if (_delegateSelectors & CPTabViewDidSelectTabViewItemSelector) + objj_msgSend(_delegate, "tabView:didSelectTabViewItem:", self, aTabViewItem); +} +},["void","CPTabViewItem"]), new objj_method(sel_getUid("selectTabViewItemAtIndex:"), function $CPTabView__selectTabViewItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(self, "selectTabViewItem:", _tabViewItems[anIndex]); +} +},["void","unsigned"]), new objj_method(sel_getUid("selectedTabViewItem"), function $CPTabView__selectedTabViewItem(self, _cmd) +{ with(self) +{ + return _selectedTabViewItem; +} +},["CPTabViewItem"]), new objj_method(sel_getUid("setTabViewType:"), function $CPTabView__setTabViewType_(self, _cmd, aTabViewType) +{ with(self) +{ + if (_tabViewType == aTabViewType) + return; + _tabViewType = aTabViewType; + if (_tabViewType == CPNoTabsBezelBorder || _tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder) + objj_msgSend(_labelsView, "removeFromSuperview"); + else if (_labelsView && !objj_msgSend(_labelsView, "superview")) + objj_msgSend(self, "addSubview:", _labelsView); + if (_tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder) + objj_msgSend(_backgroundView, "removeFromSuperview"); + else if (_backgroundView && !objj_msgSend(_backgroundView, "superview")) + objj_msgSend(self, "addSubview:", _backgroundView); + objj_msgSend(self, "layoutSubviews"); +} +},["void","CPTabViewType"]), new objj_method(sel_getUid("tabViewType"), function $CPTabView__tabViewType(self, _cmd) +{ with(self) +{ + return _tabViewType; +} +},["CPTabViewType"]), new objj_method(sel_getUid("contentRect"), function $CPTabView__contentRect(self, _cmd) +{ with(self) +{ + var contentRect = CGRectMakeCopy(objj_msgSend(self, "bounds")); + if (_tabViewType == CPTopTabsBezelBorder) + { + var labelsViewHeight = objj_msgSend(_CPTabLabelsView, "height"), + auxiliaryViewHeight = _auxiliaryView ? CGRectGetHeight(objj_msgSend(_auxiliaryView, "frame")) : 5.0, + separatorViewHeight = 1.0; + contentRect.origin.y += labelsViewHeight + auxiliaryViewHeight + separatorViewHeight; + contentRect.size.height -= labelsViewHeight + auxiliaryViewHeight + separatorViewHeight * 2.0; + contentRect.origin.x += LEFT_INSET; + contentRect.size.width -= LEFT_INSET + RIGHT_INSET; + } + return contentRect; +} +},["CGRect"]), new objj_method(sel_getUid("delegate"), function $CPTabView__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("setDelegate:"), function $CPTabView__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate == aDelegate) + return; + _delegate = aDelegate; + _delegateSelectors = 0; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tabView:shouldSelectTabViewItem:"))) + _delegateSelectors |= CPTabViewShouldSelectTabViewItemSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tabView:willSelectTabViewItem:"))) + _delegateSelectors |= CPTabViewWillSelectTabViewItemSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tabView:didSelectTabViewItem:"))) + _delegateSelectors |= CPTabViewDidSelectTabViewItemSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("tabViewDidChangeNumberOfTabViewItems:"))) + _delegateSelectors |= CPTabViewDidChangeNumberOfTabViewItemsSelector; +} +},["void","id"]), new objj_method(sel_getUid("mouseDown:"), function $CPTabView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var location = objj_msgSend(_labelsView, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil), + tabViewItem = objj_msgSend(_labelsView, "representedTabViewItemAtPoint:", location); + if (tabViewItem) + objj_msgSend(self, "selectTabViewItem:", tabViewItem); +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPTabView__initialize(self, _cmd) +{ with(self) +{ + if (self != CPTabView) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self), + emptyImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initByReferencingFile:size:", "", CGSizeMake(7.0, 0.0)), + backgroundImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/CPTabViewBezelBackgroundCenter.png"), CGSizeMake(1.0, 1.0)), + bezelBorderLeftImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/CPTabViewBezelBorderLeft.png"), CGSizeMake(7.0, 1.0)), + bezerBorderImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/CPTabViewBezelBorder.png"), CGSizeMake(1.0, 1.0)), + bezelBorderRightImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/CPTabViewBezelBorderRight.png"), CGSizeMake(7.0, 1.0)); + CPTabViewBezelBorderBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + emptyImage, + emptyImage, + emptyImage, + bezelBorderLeftImage, + backgroundImage, + bezelBorderRightImage, + bezelBorderLeftImage, + bezerBorderImage, + bezelBorderRightImage + ])); + CPTabViewBezelBorderColor = objj_msgSend(CPColor, "colorWithPatternImage:", bezerBorderImage); +} +},["void"]), new objj_method(sel_getUid("bezelBorderColor"), function $CPTabView__bezelBorderColor(self, _cmd) +{ with(self) +{ + return CPTabViewBezelBorderColor; +} +},["CPColor"])]); +} +var CPTabViewItemsKey = "CPTabViewItemsKey", + CPTabViewSelectedItemKey = "CPTabViewSelectedItemKey", + CPTabViewTypeKey = "CPTabViewTypeKey", + CPTabViewDelegateKey = "CPTabViewDelegateKey"; +{ +var the_class = objj_getClass("CPTabView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTabView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTabView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabView").super_class }, "initWithCoder:", aCoder)) + { + _tabViewType = objj_msgSend(aCoder, "decodeIntForKey:", CPTabViewTypeKey); + _tabViewItems = []; + objj_msgSend(self, "_createBezelBorder"); + var items = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemsKey); + for (var i = 0; items && i < items.length; i++) + objj_msgSend(self, "insertTabViewItem:atIndex:", items[i], i); + var selected = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewSelectedItemKey); + if (selected) + objj_msgSend(self, "selectTabViewItem:", selected); + objj_msgSend(self, "setDelegate:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewDelegateKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTabView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + var actualSubviews = _subviews; + _subviews = []; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabView").super_class }, "encodeWithCoder:", aCoder); + _subviews = actualSubviews; + objj_msgSend(aCoder, "encodeObject:forKey:", _tabViewItems, CPTabViewItemsKey);; + objj_msgSend(aCoder, "encodeObject:forKey:", _selectedTabViewItem, CPTabViewSelectedItemKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _tabViewType, CPTabViewTypeKey); + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _delegate, CPTabViewDelegateKey); +} +},["void","CPCoder"])]); +} +var _CPTabLabelsViewBackgroundColor = nil, + _CPTabLabelsViewInsideMargin = 10.0, + _CPTabLabelsViewOutsideMargin = 15.0; +{var the_class = objj_allocateClassPair(CPView, "_CPTabLabelsView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_tabView"), new objj_ivar("_tabLabels")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPTabLabelsView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTabLabelsView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _tabLabels = []; + objj_msgSend(self, "setBackgroundColor:", _CPTabLabelsViewBackgroundColor); + objj_msgSend(self, "setFrameSize:", CGSizeMake(CGRectGetWidth(aFrame), 26.0)); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setTabView:"), function $_CPTabLabelsView__setTabView_(self, _cmd, aTabView) +{ with(self) +{ + _tabView = aTabView; +} +},["void","CPTabView"]), new objj_method(sel_getUid("tabView"), function $_CPTabLabelsView__tabView(self, _cmd) +{ with(self) +{ + return _tabView; +} +},["CPTabView"]), new objj_method(sel_getUid("tabView:didAddTabViewItem:"), function $_CPTabLabelsView__tabView_didAddTabViewItem_(self, _cmd, aTabView, aTabViewItem) +{ with(self) +{ + var label = objj_msgSend(objj_msgSend(_CPTabLabel, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(label, "setTabViewItem:", aTabViewItem); + _tabLabels.push(label); + objj_msgSend(self, "addSubview:", label); + objj_msgSend(self, "layoutSubviews"); +} +},["void","CPTabView","CPTabViewItem"]), new objj_method(sel_getUid("tabView:didRemoveTabViewItemAtIndex:"), function $_CPTabLabelsView__tabView_didRemoveTabViewItemAtIndex_(self, _cmd, aTabView, index) +{ with(self) +{ + var label = _tabLabels[index]; + objj_msgSend(_tabLabels, "removeObjectAtIndex:", index); + objj_msgSend(label, "removeFromSuperview"); + objj_msgSend(self, "layoutSubviews"); +} +},["void","CPTabView","unsigned"]), new objj_method(sel_getUid("tabView:didChangeStateOfTabViewItem:"), function $_CPTabLabelsView__tabView_didChangeStateOfTabViewItem_(self, _cmd, aTabView, aTabViewItem) +{ with(self) +{ + objj_msgSend(_tabLabels[objj_msgSend(aTabView, "indexOfTabViewItem:", aTabViewItem)], "setTabState:", objj_msgSend(aTabViewItem, "tabState")); + } +},["void","CPTabView","CPTabViewItem"]), new objj_method(sel_getUid("representedTabViewItemAtPoint:"), function $_CPTabLabelsView__representedTabViewItemAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var index = 0, + count = _tabLabels.length; + for (; index < count; ++index) + { + var label = _tabLabels[index]; + if (CGRectContainsPoint(objj_msgSend(label, "frame"), aPoint)) + return objj_msgSend(label, "tabViewItem"); + } + return nil; +} +},["CPTabViewItem","CGPoint"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPTabLabelsView__layoutSubviews(self, _cmd) +{ with(self) +{ + var index = 0, + count = _tabLabels.length, + width = ((objj_msgSend(self, "bounds").size.width) - (count - 1) * _CPTabLabelsViewInsideMargin - 2 * _CPTabLabelsViewOutsideMargin) / count, + x = _CPTabLabelsViewOutsideMargin; + for (; index < count; ++index) + { + var label = _tabLabels[index], + frame = { origin: { x:x, y:8.0 }, size: { width:width, height:18.0 } }; + objj_msgSend(label, "setFrame:", frame); + x = (frame.origin.x + frame.size.width) + _CPTabLabelsViewInsideMargin; + } +} +},["void"]), new objj_method(sel_getUid("setFrameSize:"), function $_CPTabLabelsView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(objj_msgSend(self, "frame").size, aSize)) + return; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTabLabelsView").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "layoutSubviews"); +} +},["void","CGSize"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPTabLabelsView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPTabLabelsView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + _CPTabLabelsViewBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelsViewLeft.png"), CGSizeMake(12.0, 26.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelsViewCenter.png"), CGSizeMake(1.0, 26.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelsViewRight.png"), CGSizeMake(12.0, 26.0)) + ], NO)); +} +},["void"]), new objj_method(sel_getUid("height"), function $_CPTabLabelsView__height(self, _cmd) +{ with(self) +{ + return 26.0; +} +},["float"])]); +} +var _CPTabLabelBackgroundColor = nil, + _CPTabLabelSelectedBackgroundColor = nil; +{var the_class = objj_allocateClassPair(CPView, "_CPTabLabel"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_tabViewItem"), new objj_ivar("_labelField")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPTabLabel__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTabLabel").super_class }, "initWithFrame:", aFrame); + if (self) + { + _labelField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_labelField, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(_labelField, "setFrame:", CGRectMake(5.0, 0.0, CGRectGetWidth(aFrame) - 10.0, 20.0)); + objj_msgSend(_labelField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_labelField, "setFont:", objj_msgSend(CPFont, "boldSystemFontOfSize:", 11.0)); + objj_msgSend(self, "addSubview:", _labelField); + objj_msgSend(self, "setTabState:", CPBackgroundTab); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setTabState:"), function $_CPTabLabel__setTabState_(self, _cmd, aTabState) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", aTabState == CPSelectedTab ? _CPTabLabelSelectedBackgroundColor : _CPTabLabelBackgroundColor); +} +},["void","CPTabState"]), new objj_method(sel_getUid("setTabViewItem:"), function $_CPTabLabel__setTabViewItem_(self, _cmd, aTabViewItem) +{ with(self) +{ + _tabViewItem = aTabViewItem; + objj_msgSend(self, "update"); +} +},["void","CPTabViewItem"]), new objj_method(sel_getUid("tabViewItem"), function $_CPTabLabel__tabViewItem(self, _cmd) +{ with(self) +{ + return _tabViewItem; +} +},["CPTabViewItem"]), new objj_method(sel_getUid("update"), function $_CPTabLabel__update(self, _cmd) +{ with(self) +{ + objj_msgSend(_labelField, "setStringValue:", objj_msgSend(_tabViewItem, "label")); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPTabLabel__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPTabLabel, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + _CPTabLabelBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelBackgroundLeft.png"), CGSizeMake(6.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelBackgroundCenter.png"), CGSizeMake(1.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelBackgroundRight.png"), CGSizeMake(6.0, 18.0)) + ], NO)); + _CPTabLabelSelectedBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelSelectedLeft.png"), CGSizeMake(3.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelSelectedCenter.png"), CGSizeMake(1.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPTabView/_CPTabLabelSelectedRight.png"), CGSizeMake(3.0, 18.0)) + ], NO)); +} +},["void"])]); +} + +p;15;CPTabViewItem.jt;4321;@STATIC;1.0;I;21;Foundation/CPObject.jI;15;AppKit/CPView.jt;4256;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("AppKit/CPView.j", NO); +CPSelectedTab = 0; +CPBackgroundTab = 1; +CPPressedTab = 2; +{var the_class = objj_allocateClassPair(CPObject, "CPTabViewItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_identifier"), new objj_ivar("_label"), new objj_ivar("_view"), new objj_ivar("_auxiliaryView"), new objj_ivar("_tabView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPTabViewItem__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithIdentifier:"), function $CPTabViewItem__initWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabViewItem").super_class }, "init"); + if (self) + _identifier = anIdentifier; + return self; +} +},["id","id"]), new objj_method(sel_getUid("setLabel:"), function $CPTabViewItem__setLabel_(self, _cmd, aLabel) +{ with(self) +{ + _label = aLabel; +} +},["void","CPString"]), new objj_method(sel_getUid("label"), function $CPTabViewItem__label(self, _cmd) +{ with(self) +{ + return _label; +} +},["CPString"]), new objj_method(sel_getUid("tabState"), function $CPTabViewItem__tabState(self, _cmd) +{ with(self) +{ + return _tabState; +} +},["CPTabState"]), new objj_method(sel_getUid("setIdentifier:"), function $CPTabViewItem__setIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + _identifier = anIdentifier; +} +},["void","id"]), new objj_method(sel_getUid("identifier"), function $CPTabViewItem__identifier(self, _cmd) +{ with(self) +{ + return _identifier; +} +},["id"]), new objj_method(sel_getUid("setView:"), function $CPTabViewItem__setView_(self, _cmd, aView) +{ with(self) +{ + _view = aView; +} +},["void","CPView"]), new objj_method(sel_getUid("view"), function $CPTabViewItem__view(self, _cmd) +{ with(self) +{ + return _view; +} +},["CPView"]), new objj_method(sel_getUid("setAuxiliaryView:"), function $CPTabViewItem__setAuxiliaryView_(self, _cmd, anAuxiliaryView) +{ with(self) +{ + _auxiliaryView = anAuxiliaryView; +} +},["void","CPView"]), new objj_method(sel_getUid("auxiliaryView"), function $CPTabViewItem__auxiliaryView(self, _cmd) +{ with(self) +{ + return _auxiliaryView; +} +},["CPView"]), new objj_method(sel_getUid("tabView"), function $CPTabViewItem__tabView(self, _cmd) +{ with(self) +{ + return _tabView; +} +},["CPTabView"]), new objj_method(sel_getUid("_setTabView:"), function $CPTabViewItem___setTabView_(self, _cmd, aView) +{ with(self) +{ + _tabView = aView; +} +},["void","CPTabView"])]); +} +var CPTabViewItemIdentifierKey = "CPTabViewItemIdentifierKey", + CPTabViewItemLabelKey = "CPTabViewItemLabelKey", + CPTabViewItemViewKey = "CPTabViewItemViewKey", + CPTabViewItemAuxViewKey = "CPTabViewItemAuxViewKey"; +{ +var the_class = objj_getClass("CPTabViewItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTabViewItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTabViewItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTabViewItem").super_class }, "init"); + if (self) + { + _identifier = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemIdentifierKey); + _label = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemLabelKey); + _view = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemViewKey); + _auxiliaryView = objj_msgSend(aCoder, "decodeObjectForKey:", CPTabViewItemAuxViewKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTabViewItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _identifier, CPTabViewItemIdentifierKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _label, CPTabViewItemLabelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _view, CPTabViewItemViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _auxiliaryView, CPTabViewItemAuxViewKey); +} +},["void","CPCoder"])]); +} + +p;8;CPText.jt;317;@STATIC;1.0;i;8;CPView.jt;287;objj_executeFile("CPView.j", YES); +CPEnterCharacter = "\u0003"; +CPBackspaceCharacter = "\u0008"; +CPTabCharacter = "\u0009"; +CPNewlineCharacter = "\u000a"; +CPFormFeedCharacter = "\u000c"; +CPCarriageReturnCharacter = "\u000d"; +CPBackTabCharacter = "\u0019"; +CPDeleteCharacter = "\u007f"; + +p;13;CPTextField.jt;36294;@STATIC;1.0;i;11;CPControl.ji;17;CPStringDrawing.ji;17;CPCompatibility.ji;21;_CPImageAndTextView.jt;36188;objj_executeFile("CPControl.j", YES); +objj_executeFile("CPStringDrawing.j", YES); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("_CPImageAndTextView.j", YES); +CPTextFieldSquareBezel = 0; +CPTextFieldRoundedBezel = 1; +CPTextFieldDidFocusNotification = "CPTextFieldDidFocusNotification"; +CPTextFieldDidBlurNotification = "CPTextFieldDidBlurNotification"; +var CPSecureTextFieldCharacter = "\u2022"; +{ +var the_class = objj_getClass("CPString") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPString\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("string"), function $CPString__string(self, _cmd) +{ with(self) +{ + return self; +} +},["CPString"])]); +} +CPTextFieldStateRounded = CPThemeState("rounded"); +CPTextFieldStatePlaceholder = CPThemeState("placeholder"); +{var the_class = objj_allocateClassPair(CPControl, "CPTextField"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isEditing"), new objj_ivar("_isEditable"), new objj_ivar("_isSelectable"), new objj_ivar("_isSecure"), new objj_ivar("_drawsBackground"), new objj_ivar("_textFieldBackgroundColor"), new objj_ivar("_placeholderString"), new objj_ivar("_delegate"), new objj_ivar("_textDidChangeValue"), new objj_ivar("_bezelStyle"), new objj_ivar("_isBordered"), new objj_ivar("_controlSize")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $CPTextField__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "initWithFrame:", aFrame); + if (self) + { + objj_msgSend(self, "setStringValue:", ""); + objj_msgSend(self, "setPlaceholderString:", ""); + _sendActionOn = CPKeyUpMask | CPKeyDownMask; + objj_msgSend(self, "setValue:forThemeAttribute:", CPLeftTextAlignment, "alignment"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setEditable:"), function $CPTextField__setEditable_(self, _cmd, shouldBeEditable) +{ with(self) +{ + if (_isEditable === shouldBeEditable) + return; + _isEditable = shouldBeEditable; + if(shouldBeEditable) + _isSelectable = YES; + if (!shouldBeEditable && objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self) + objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", nil); +} +},["void","BOOL"]), new objj_method(sel_getUid("isEditable"), function $CPTextField__isEditable(self, _cmd) +{ with(self) +{ + return _isEditable; +} +},["BOOL"]), new objj_method(sel_getUid("setEnabled:"), function $CPTextField__setEnabled_(self, _cmd, shouldBeEnabled) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "setEnabled:", shouldBeEnabled); + if (!shouldBeEnabled && objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self) + objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", nil); +} +},["void","BOOL"]), new objj_method(sel_getUid("setSelectable:"), function $CPTextField__setSelectable_(self, _cmd, aFlag) +{ with(self) +{ + _isSelectable = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("isSelectable"), function $CPTextField__isSelectable(self, _cmd) +{ with(self) +{ + return _isSelectable; +} +},["BOOL"]), new objj_method(sel_getUid("setSecure:"), function $CPTextField__setSecure_(self, _cmd, aFlag) +{ with(self) +{ + _isSecure = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("isSecure"), function $CPTextField__isSecure(self, _cmd) +{ with(self) +{ + return _isSecure; +} +},["BOOL"]), new objj_method(sel_getUid("setBezeled:"), function $CPTextField__setBezeled_(self, _cmd, shouldBeBezeled) +{ with(self) +{ + if (shouldBeBezeled) + objj_msgSend(self, "setThemeState:", CPThemeStateBezeled); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateBezeled); +} +},["void","BOOL"]), new objj_method(sel_getUid("isBezeled"), function $CPTextField__isBezeled(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateBezeled); +} +},["BOOL"]), new objj_method(sel_getUid("setBezelStyle:"), function $CPTextField__setBezelStyle_(self, _cmd, aBezelStyle) +{ with(self) +{ + var shouldBeRounded = aBezelStyle === CPTextFieldRoundedBezel; + if (shouldBeRounded) + objj_msgSend(self, "setThemeState:", CPTextFieldStateRounded); + else + objj_msgSend(self, "unsetThemeState:", CPTextFieldStateRounded); +} +},["void","CPTextFieldBezelStyle"]), new objj_method(sel_getUid("bezelStyle"), function $CPTextField__bezelStyle(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "hasThemeState:", CPTextFieldStateRounded)) + return CPTextFieldRoundedBezel; + return CPTextFieldSquareBezel; +} +},["CPTextFieldBezelStyle"]), new objj_method(sel_getUid("setBordered:"), function $CPTextField__setBordered_(self, _cmd, shouldBeBordered) +{ with(self) +{ + if (shouldBeBordered) + objj_msgSend(self, "setThemeState:", CPThemeStateBordered); + else + objj_msgSend(self, "unsetThemeState:", CPThemeStateBordered); +} +},["void","BOOL"]), new objj_method(sel_getUid("isBordered"), function $CPTextField__isBordered(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "hasThemeState:", CPThemeStateBordered); +} +},["BOOL"]), new objj_method(sel_getUid("setDrawsBackground:"), function $CPTextField__setDrawsBackground_(self, _cmd, shouldDrawBackground) +{ with(self) +{ + if (_drawsBackground == shouldDrawBackground) + return; + _drawsBackground = shouldDrawBackground; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","BOOL"]), new objj_method(sel_getUid("drawsBackground"), function $CPTextField__drawsBackground(self, _cmd) +{ with(self) +{ + return _drawsBackground; +} +},["BOOL"]), new objj_method(sel_getUid("setTextFieldBackgroundColor:"), function $CPTextField__setTextFieldBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textFieldBackgroundColor == aColor) + return; + _textFieldBackgroundColor = aColor; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("textFieldBackgroundColor"), function $CPTextField__textFieldBackgroundColor(self, _cmd) +{ with(self) +{ + return _textFieldBackgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPTextField__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isEditable") && objj_msgSend(self, "isEnabled"); +} +},["BOOL"]), new objj_method(sel_getUid("becomeFirstResponder"), function $CPTextField__becomeFirstResponder(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setThemeState:", CPThemeStateEditing); + objj_msgSend(self, "_updatePlaceholderState"); + objj_msgSend(self, "setNeedsLayout"); + _isEditing = NO; + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("resignFirstResponder"), function $CPTextField__resignFirstResponder(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "unsetThemeState:", CPThemeStateEditing); + objj_msgSend(self, "_updatePlaceholderState"); + objj_msgSend(self, "setNeedsLayout"); + if (_isEditing) + { + _isEditing = NO; + objj_msgSend(self, "textDidEndEditing:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPControlTextDidEndEditingNotification, self, nil)); + if (objj_msgSend(self, "sendsActionOnEndEditing")) + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + } + objj_msgSend(self, "textDidBlur:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPTextFieldDidBlurNotification, self, nil)); + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("needsPanelToBecomeKey"), function $CPTextField__needsPanelToBecomeKey(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $CPTextField__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(self, "isEditable") && objj_msgSend(self, "isEnabled")) + return objj_msgSend(objj_msgSend(self, "window"), "makeFirstResponder:", self); + else if (objj_msgSend(self, "isSelectable")) + { + if (document.attachEvent) + { + CPTextFieldCachedSelectStartFunction = objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.onselectstart; + CPTextFieldCachedDragFunction = objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.ondrag; + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.ondrag = function () {}; + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.onselectstart = function () {}; + } + return objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + } + else + return objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseUp:"), function $CPTextField__mouseUp_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isSelectable") && (!objj_msgSend(self, "isEditable") || !objj_msgSend(self, "isEnabled"))) + objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseUp:", anEvent); + else if (objj_msgSend(self, "isSelectable")) + { + if (document.attachEvent) + { + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.ondrag = CPTextFieldCachedDragFunction; + objj_msgSend(objj_msgSend(self, "window"), "platformWindow")._DOMBodyElement.onselectstart = CPTextFieldCachedSelectStartFunction; + CPTextFieldCachedSelectStartFunction = nil + CPTextFieldCachedDragFunction = nil; + } + return objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + } +} +},["void","CPEvent"]), new objj_method(sel_getUid("mouseDragged:"), function $CPTextField__mouseDragged_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(self, "isSelectable") && (!objj_msgSend(self, "isEditable") || !objj_msgSend(self, "isEnabled"))) + objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDragged:", anEvent); + else if (objj_msgSend(self, "isSelectable")) + return objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("keyUp:"), function $CPTextField__keyUp_(self, _cmd, anEvent) +{ with(self) +{ + var oldValue = objj_msgSend(self, "stringValue"); + objj_msgSend(self, "_setStringValue:", objj_msgSend(self, "_inputElement").value); + if (oldValue !== objj_msgSend(self, "stringValue")) + { + if (!_isEditing) + { + _isEditing = YES; + objj_msgSend(self, "textDidBeginEditing:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPControlTextDidBeginEditingNotification, self, nil)); + } + objj_msgSend(self, "textDidChange:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPControlTextDidChangeNotification, self, nil)); + } + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("keyDown:"), function $CPTextField__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(anEvent, "keyCode") === CPReturnKeyCode) + { + if (_isEditing) + { + _isEditing = NO; + objj_msgSend(self, "textDidEndEditing:", objj_msgSend(CPNotification, "notificationWithName:object:userInfo:", CPControlTextDidEndEditingNotification, self, nil)); + } + objj_msgSend(self, "sendAction:to:", objj_msgSend(self, "action"), objj_msgSend(self, "target")); + objj_msgSend(self, "selectText:", nil); + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", NO); + } + else if (objj_msgSend(anEvent, "keyCode") === CPTabKeyCode) + { + if (objj_msgSend(anEvent, "modifierFlags") & CPShiftKeyMask) + objj_msgSend(objj_msgSend(self, "window"), "selectPreviousKeyView:", self); + else + objj_msgSend(objj_msgSend(self, "window"), "selectNextKeyView:", self); + if (objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "firstResponder"), "respondsToSelector:", sel_getUid("selectText:"))) + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "firstResponder"), "selectText:", self); + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", NO); + } + else + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "_propagateCurrentDOMEvent:", YES); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","CPEvent"]), new objj_method(sel_getUid("textDidBlur:"), function $CPTextField__textDidBlur_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotification:", note); +} +},["void","CPNotification"]), new objj_method(sel_getUid("textDidFocus:"), function $CPTextField__textDidFocus_(self, _cmd, note) +{ with(self) +{ + if(objj_msgSend(note, "object") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotification:", note); +} +},["void","CPNotification"]), new objj_method(sel_getUid("objectValue"), function $CPTextField__objectValue(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "objectValue"); +} +},["id"]), new objj_method(sel_getUid("_setStringValue:"), function $CPTextField___setStringValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "objectValue"); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "setObjectValue:", String(aValue)); + objj_msgSend(self, "_updatePlaceholderState"); + objj_msgSend(self, "didChangeValueForKey:", "objectValue"); +} +},["void","id"]), new objj_method(sel_getUid("setObjectValue:"), function $CPTextField__setObjectValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "setObjectValue:", aValue); + objj_msgSend(self, "_updatePlaceholderState"); +} +},["void","id"]), new objj_method(sel_getUid("_updatePlaceholderState"), function $CPTextField___updatePlaceholderState(self, _cmd) +{ with(self) +{ + var string = objj_msgSend(self, "stringValue"); + if ((!string || string.length === 0) && !objj_msgSend(self, "hasThemeState:", CPThemeStateEditing)) + objj_msgSend(self, "setThemeState:", CPTextFieldStatePlaceholder); + else + objj_msgSend(self, "unsetThemeState:", CPTextFieldStatePlaceholder); +} +},["void"]), new objj_method(sel_getUid("setPlaceholderString:"), function $CPTextField__setPlaceholderString_(self, _cmd, aStringValue) +{ with(self) +{ + if (_placeholderString === aStringValue) + return; + _placeholderString = aStringValue; + if (objj_msgSend(self, "hasThemeState:", CPTextFieldStatePlaceholder)) + { + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + } +} +},["void","CPString"]), new objj_method(sel_getUid("placeholderString"), function $CPTextField__placeholderString(self, _cmd) +{ with(self) +{ + return _placeholderString; +} +},["CPString"]), new objj_method(sel_getUid("sizeToFit"), function $CPTextField__sizeToFit(self, _cmd) +{ with(self) +{ + var size = objj_msgSend((objj_msgSend(self, "stringValue") || " "), "sizeWithFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "font")), + contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"), + minSize = objj_msgSend(self, "currentValueForThemeAttribute:", "min-size"), + maxSize = objj_msgSend(self, "currentValueForThemeAttribute:", "max-size"); + size.width = MAX(size.width + contentInset.left + contentInset.right, minSize.width); + size.height = MAX(size.height + contentInset.top + contentInset.bottom, minSize.height); + if (maxSize.width >= 0.0) + size.width = MIN(size.width, maxSize.width); + if (maxSize.height >= 0.0) + size.height = MIN(size.height, maxSize.height); + if (objj_msgSend(self, "isEditable")) + size.width = CGRectGetWidth(objj_msgSend(self, "frame")); + objj_msgSend(self, "setFrameSize:", size); +} +},["void"]), new objj_method(sel_getUid("selectText:"), function $CPTextField__selectText_(self, _cmd, sender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("copy:"), function $CPTextField__copy_(self, _cmd, sender) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + var selectedRange = objj_msgSend(self, "selectedRange"); + if (selectedRange.length < 1) + return; + var pasteboard = objj_msgSend(CPPasteboard, "generalPasteboard"), + stringValue = objj_msgSend(self, "stringValue"), + stringForPasting = objj_msgSend(stringValue, "substringWithRange:", selectedRange); + objj_msgSend(pasteboard, "declareTypes:owner:", [CPStringPboardType], nil); + objj_msgSend(pasteboard, "setString:forType:", stringForPasting, CPStringPboardType); + } +} +},["void","id"]), new objj_method(sel_getUid("cut:"), function $CPTextField__cut_(self, _cmd, sender) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + objj_msgSend(self, "copy:", sender); + objj_msgSend(self, "deleteBackward:", sender); + } +} +},["void","id"]), new objj_method(sel_getUid("paste:"), function $CPTextField__paste_(self, _cmd, sender) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + var pasteboard = objj_msgSend(CPPasteboard, "generalPasteboard"); + if (!objj_msgSend(objj_msgSend(pasteboard, "types"), "containsObject:", CPStringPboardType)) + return; + objj_msgSend(self, "deleteBackward:", sender); + var selectedRange = objj_msgSend(self, "selectedRange"), + stringValue = objj_msgSend(self, "stringValue"), + pasteString = objj_msgSend(pasteboard, "stringForType:", CPStringPboardType), + newValue = objj_msgSend(stringValue, "stringByReplacingCharactersInRange:withString:", selectedRange, pasteString); + objj_msgSend(self, "setStringValue:", newValue); + objj_msgSend(self, "setSelectedRange:", CPMakeRange(selectedRange.location+pasteString.length, 0)); + } +} +},["void","id"]), new objj_method(sel_getUid("selectedRange"), function $CPTextField__selectedRange(self, _cmd) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "window"), "firstResponder") !== self) + return CPMakeRange(0, 0); + try + { + var inputElement = objj_msgSend(self, "_inputElement"), + selectionStart = inputElement.selectionStart, + selectionEnd = inputElement.selectionEnd; + if (objj_msgSend(selectionStart, "isKindOfClass:", CPNumber)) + return CPMakeRange(selectionStart, selectionEnd - selectionStart); + var theDocument = inputElement.ownerDocument || inputElement.document, + selectionRange = theDocument.selection.createRange(), + range = inputElement.createTextRange(); + if (range.inRange(selectionRange)) + { + range.setEndPoint('EndToStart', selectionRange); + return CPMakeRange(range.text.length, selectionRange.text.length); + } + } + catch (e) + { + } + return CGMakeRange(0, 0); +} +},["CPRange"]), new objj_method(sel_getUid("setSelectedRange:"), function $CPTextField__setSelectedRange_(self, _cmd, aRange) +{ with(self) +{ + if (!objj_msgSend(objj_msgSend(self, "window"), "firstResponder") === self) + return; + var inputElement = objj_msgSend(self, "_inputElement"); + try + { + if (objj_msgSend(inputElement.selectionStart, "isKindOfClass:", CPNumber)) + { + inputElement.selectionStart = aRange.location; + inputElement.selectionEnd = CPMaxRange(aRange); + } + else + { + var theDocument = inputElement.ownerDocument || inputElement.document, + existingRange = theDocument.selection.createRange(), + range = inputElement.createTextRange(); + if (range.inRange(existingRange)) + { + range.collapse(true); + range.move('character', aRange.location); + range.moveEnd('character', aRange.length); + range.select(); + } + } + } + catch (e) + { + } +} +},["void","CPRange"]), new objj_method(sel_getUid("selectAll:"), function $CPTextField__selectAll_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "selectText:", sender); +} +},["void","id"]), new objj_method(sel_getUid("deleteBackward:"), function $CPTextField__deleteBackward_(self, _cmd, sender) +{ with(self) +{ + var selectedRange = objj_msgSend(self, "selectedRange"), + stringValue = objj_msgSend(self, "stringValue"), + newValue = objj_msgSend(stringValue, "stringByReplacingCharactersInRange:withString:", selectedRange, ""); + objj_msgSend(self, "setStringValue:", newValue); + objj_msgSend(self, "setSelectedRange:", CPMakeRange(selectedRange.location, 0)); +} +},["void","id"]), new objj_method(sel_getUid("setDelegate:"), function $CPTextField__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_delegate) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPControlTextDidBeginEditingNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPControlTextDidChangeNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPControlTextDidEndEditingNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTextFieldDidFocusNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPTextFieldDidBlurNotification, self); + } + _delegate = aDelegate; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidBeginEditing:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidBeginEditing:"), CPControlTextDidBeginEditingNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidChange:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidChange:"), CPControlTextDidChangeNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidEndEditing:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidEndEditing:"), CPControlTextDidEndEditingNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidFocus:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidFocus:"), CPTextFieldDidFocusNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("controlTextDidBlur:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("controlTextDidBlur:"), CPTextFieldDidBlurNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPTextField__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("contentRectForBounds:"), function $CPTextField__contentRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var contentInset = objj_msgSend(self, "currentValueForThemeAttribute:", "content-inset"); + if (!contentInset) + return bounds; + bounds.origin.x += contentInset.left; + bounds.origin.y += contentInset.top; + bounds.size.width -= contentInset.left + contentInset.right; + bounds.size.height -= contentInset.top + contentInset.bottom; + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("bezelRectForBounds:"), function $CPTextField__bezelRectForBounds_(self, _cmd, bounds) +{ with(self) +{ + var bezelInset = objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-inset"); + if (((bezelInset).top === 0 && (bezelInset).right === 0 && (bezelInset).bottom === 0 && (bezelInset).left === 0)) + return bounds; + bounds.origin.x += bezelInset.left; + bounds.origin.y += bezelInset.top; + bounds.size.width -= bezelInset.left + bezelInset.right; + bounds.size.height -= bezelInset.top + bezelInset.bottom; + return bounds; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPTextField__rectForEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "bezel-view") + return objj_msgSend(self, "bezelRectForBounds:", objj_msgSend(self, "bounds")); + else if (aName === "content-view") + return objj_msgSend(self, "contentRectForBounds:", objj_msgSend(self, "bounds")); + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "rectForEphemeralSubviewNamed:", aName); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPTextField__createEphemeralSubviewNamed_(self, _cmd, aName) +{ with(self) +{ + if (aName === "bezel-view") + { + var view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; + } + else + { + var view = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }); + objj_msgSend(view, "setHitTests:", NO); + return view; + } + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "createEphemeralSubviewNamed:", aName); +} +},["CPView","CPString"]), new objj_method(sel_getUid("layoutSubviews"), function $CPTextField__layoutSubviews(self, _cmd) +{ with(self) +{ + var bezelView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "bezel-view", CPWindowBelow, "content-view"); + if (bezelView) + objj_msgSend(bezelView, "setBackgroundColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "bezel-color")); + var contentView = objj_msgSend(self, "layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:", "content-view", CPWindowAbove, "bezel-view"); + if (contentView) + { + objj_msgSend(contentView, "setHidden:", objj_msgSend(self, "hasThemeState:", CPThemeStateEditing)); + var string = ""; + if (objj_msgSend(self, "hasThemeState:", CPTextFieldStatePlaceholder)) + string = objj_msgSend(self, "placeholderString"); + else + { + string = objj_msgSend(self, "stringValue"); + if (objj_msgSend(self, "isSecure")) + string = secureStringForString(string); + } + objj_msgSend(contentView, "setText:", string); + objj_msgSend(contentView, "setTextColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-color")); + objj_msgSend(contentView, "setFont:", objj_msgSend(self, "currentValueForThemeAttribute:", "font")); + objj_msgSend(contentView, "setAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "alignment")); + objj_msgSend(contentView, "setVerticalAlignment:", objj_msgSend(self, "currentValueForThemeAttribute:", "vertical-alignment")); + objj_msgSend(contentView, "setLineBreakMode:", objj_msgSend(self, "currentValueForThemeAttribute:", "line-break-mode")); + objj_msgSend(contentView, "setTextShadowColor:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-color")); + objj_msgSend(contentView, "setTextShadowOffset:", objj_msgSend(self, "currentValueForThemeAttribute:", "text-shadow-offset")); + } +} +},["void"]), new objj_method(sel_getUid("takeValueFromKeyPath:ofObjects:"), function $CPTextField__takeValueFromKeyPath_ofObjects_(self, _cmd, aKeyPath, objects) +{ with(self) +{ + var count = objects.length, + value = objj_msgSend(objects[0], "valueForKeyPath:", aKeyPath); + objj_msgSend(self, "setStringValue:", value); + objj_msgSend(self, "setPlaceholderString:", ""); + while (count-- > 1) + if (value !== objj_msgSend(objects[count], "valueForKeyPath:", aKeyPath)) + { + objj_msgSend(self, "setPlaceholderString:", "Multiple Values"); + objj_msgSend(self, "setStringValue:", ""); + } +} +},["void","CPString","CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:"), function $CPTextField__textFieldWithStringValue_placeholder_width_(self, _cmd, aStringValue, aPlaceholder, aWidth) +{ with(self) +{ + return objj_msgSend(self, "textFieldWithStringValue:placeholder:width:theme:", aStringValue, aPlaceholder, aWidth, objj_msgSend(CPTheme, "defaultTheme")); +} +},["CPTextField","CPString","CPString","float"]), new objj_method(sel_getUid("textFieldWithStringValue:placeholder:width:theme:"), function $CPTextField__textFieldWithStringValue_placeholder_width_theme_(self, _cmd, aStringValue, aPlaceholder, aWidth, aTheme) +{ with(self) +{ + var textField = objj_msgSend(objj_msgSend(self, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, aWidth, 29.0)); + objj_msgSend(textField, "setTheme:", aTheme); + objj_msgSend(textField, "setStringValue:", aStringValue); + objj_msgSend(textField, "setPlaceholderString:", aPlaceholder); + objj_msgSend(textField, "setBordered:", YES); + objj_msgSend(textField, "setBezeled:", YES); + objj_msgSend(textField, "setEditable:", YES); + objj_msgSend(textField, "sizeToFit"); + return textField; +} +},["CPTextField","CPString","CPString","float","CPTheme"]), new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:"), function $CPTextField__roundedTextFieldWithStringValue_placeholder_width_(self, _cmd, aStringValue, aPlaceholder, aWidth) +{ with(self) +{ + return objj_msgSend(self, "roundedTextFieldWithStringValue:placeholder:width:theme:", aStringValue, aPlaceholder, aWidth, objj_msgSend(CPTheme, "defaultTheme")); +} +},["CPTextField","CPString","CPString","float"]), new objj_method(sel_getUid("roundedTextFieldWithStringValue:placeholder:width:theme:"), function $CPTextField__roundedTextFieldWithStringValue_placeholder_width_theme_(self, _cmd, aStringValue, aPlaceholder, aWidth, aTheme) +{ with(self) +{ + var textField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, aWidth, 29.0)); + objj_msgSend(textField, "setTheme:", aTheme); + objj_msgSend(textField, "setStringValue:", aStringValue); + objj_msgSend(textField, "setPlaceholderString:", aPlaceholder); + objj_msgSend(textField, "setBezelStyle:", CPTextFieldRoundedBezel); + objj_msgSend(textField, "setBordered:", YES); + objj_msgSend(textField, "setBezeled:", YES); + objj_msgSend(textField, "setEditable:", YES); + objj_msgSend(textField, "sizeToFit"); + return textField; +} +},["CPTextField","CPString","CPString","float","CPTheme"]), new objj_method(sel_getUid("labelWithTitle:"), function $CPTextField__labelWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + return objj_msgSend(self, "labelWithTitle:theme:", aTitle, objj_msgSend(CPTheme, "defaultTheme")); +} +},["CPTextField","CPString"]), new objj_method(sel_getUid("labelWithTitle:theme:"), function $CPTextField__labelWithTitle_theme_(self, _cmd, aTitle, aTheme) +{ with(self) +{ + var textField = objj_msgSend(objj_msgSend(self, "alloc"), "init"); + objj_msgSend(textField, "setStringValue:", aTitle); + objj_msgSend(textField, "sizeToFit"); + return textField; +} +},["CPTextField","CPString","CPTheme"]), new objj_method(sel_getUid("themeClass"), function $CPTextField__themeClass(self, _cmd) +{ with(self) +{ + return "textfield"; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPTextField__themeAttributes(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [{ top:(0), right:(0), bottom:(0), left:(0) }, { top:(2.0), right:(2.0), bottom:(2.0), left:(2.0) }, objj_msgSend(CPNull, "null")], ["bezel-inset", "content-inset", "bezel-color"]); +} +},["id"])]); +} +var secureStringForString = function(aString) +{ + if (!aString) + return ""; + return Array(aString.length+1).join(CPSecureTextFieldCharacter); +} +var CPTextFieldIsEditableKey = "CPTextFieldIsEditableKey", + CPTextFieldIsSelectableKey = "CPTextFieldIsSelectableKey", + CPTextFieldIsBorderedKey = "CPTextFieldIsBorderedKey", + CPTextFieldIsBezeledKey = "CPTextFieldIsBezeledKey", + CPTextFieldBezelStyleKey = "CPTextFieldBezelStyleKey", + CPTextFieldDrawsBackgroundKey = "CPTextFieldDrawsBackgroundKey", + CPTextFieldLineBreakModeKey = "CPTextFieldLineBreakModeKey", + CPTextFieldAlignmentKey = "CPTextFieldAlignmentKey", + CPTextFieldBackgroundColorKey = "CPTextFieldBackgroundColorKey", + CPTextFieldPlaceholderStringKey = "CPTextFieldPlaceholderStringKey"; +{ +var the_class = objj_getClass("CPTextField") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTextField\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTextField__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "initWithCoder:", aCoder); + if (self) + { + objj_msgSend(self, "setEditable:", objj_msgSend(aCoder, "decodeBoolForKey:", CPTextFieldIsEditableKey)); + objj_msgSend(self, "setSelectable:", objj_msgSend(aCoder, "decodeBoolForKey:", CPTextFieldIsSelectableKey)); + objj_msgSend(self, "setDrawsBackground:", objj_msgSend(aCoder, "decodeBoolForKey:", CPTextFieldDrawsBackgroundKey)); + objj_msgSend(self, "setTextFieldBackgroundColor:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTextFieldBackgroundColorKey)); + objj_msgSend(self, "setLineBreakMode:", objj_msgSend(aCoder, "decodeIntForKey:", CPTextFieldLineBreakModeKey)); + objj_msgSend(self, "setAlignment:", objj_msgSend(aCoder, "decodeIntForKey:", CPTextFieldAlignmentKey)); + objj_msgSend(self, "setPlaceholderString:", objj_msgSend(aCoder, "decodeObjectForKey:", CPTextFieldPlaceholderStringKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTextField__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTextField").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeBool:forKey:", _isEditable, CPTextFieldIsEditableKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isSelectable, CPTextFieldIsSelectableKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _drawsBackground, CPTextFieldDrawsBackgroundKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _textFieldBackgroundColor, CPTextFieldBackgroundColorKey); + objj_msgSend(aCoder, "encodeInt:forKey:", objj_msgSend(self, "lineBreakMode"), CPTextFieldLineBreakModeKey); + objj_msgSend(aCoder, "encodeInt:forKey:", objj_msgSend(self, "alignment"), CPTextFieldAlignmentKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _placeholderString, CPTextFieldPlaceholderStringKey); +} +},["void","CPCoder"])]); +} + +p;9;CPTheme.jt;20517;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;30;Foundation/CPKeyedUnarchiver.jt;20410;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPKeyedUnarchiver.j", NO); +var CPThemesByName = { }, + CPThemeDefaultTheme = nil, + CPThemeDefaultHudTheme = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPTheme"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_name"), new objj_ivar("_attributes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithName:"), function $CPTheme__initWithName_(self, _cmd, aName) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTheme").super_class }, "init"); + if (self) + { + _name = aName; + _attributes = objj_msgSend(CPDictionary, "dictionary"); + CPThemesByName[_name] = self; + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("name"), function $CPTheme__name(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("classNames"), function $CPTheme__classNames(self, _cmd) +{ with(self) +{ + return objj_msgSend(_attributes, "allKeys"); +} +},["CPArray"]), new objj_method(sel_getUid("attributesForClass:"), function $CPTheme__attributesForClass_(self, _cmd, aClass) +{ with(self) +{ + if (!aClass) + return nil; + var className = nil; + if (objj_msgSend(aClass, "isKindOfClass:", objj_msgSend(CPString, "class"))) + { + var theClass = CPClassFromString(aClass); + if (theClass) + aClass = theClass; + else + className = aClass; + } + if (!className) + { + if (objj_msgSend(aClass, "isKindOfClass:", objj_msgSend(CPView, "class"))) + { + if (objj_msgSend(aClass, "respondsToSelector:", sel_getUid("themeClass"))) + className = objj_msgSend(aClass, "themeClass"); + else + return nil; + } + else + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "aClass must be a class object or a string."); + } + return objj_msgSend(_attributes, "objectForKey:", className); +} +},["CPDictionary","id"]), new objj_method(sel_getUid("attributeNamesForClass:"), function $CPTheme__attributeNamesForClass_(self, _cmd, aClass) +{ with(self) +{ + var attributes = objj_msgSend(self, "attributesForClass:", aClass); + if (attributes) + return objj_msgSend(attributes, "allKeys"); + else + return objj_msgSend(CPArray, "array"); +} +},["CPDictionary","id"]), new objj_method(sel_getUid("attributeWithName:forClass:"), function $CPTheme__attributeWithName_forClass_(self, _cmd, aName, aClass) +{ with(self) +{ + var attributes = objj_msgSend(self, "attributesForClass:", aClass); + if (!attributes) + return nil; + return objj_msgSend(attributes, "objectForKey:", aName); +} +},["_CPThemeAttribute","CPString","id"]), new objj_method(sel_getUid("valueForAttributeWithName:forClass:"), function $CPTheme__valueForAttributeWithName_forClass_(self, _cmd, aName, aClass) +{ with(self) +{ + return objj_msgSend(self, "valueForAttributeWithName:inState:forClass:", aName, CPThemeStateNormal, aClass); +} +},["id","CPString","id"]), new objj_method(sel_getUid("valueForAttributeWithName:inState:forClass:"), function $CPTheme__valueForAttributeWithName_inState_forClass_(self, _cmd, aName, aState, aClass) +{ with(self) +{ + var attribute = objj_msgSend(self, "attributeWithName:forClass:", aName, aClass); + if (!attribute) + return nil; + return objj_msgSend(attribute, "valueForState:", aState); +} +},["id","CPString","CPThemeState","id"]), new objj_method(sel_getUid("takeThemeFromObject:"), function $CPTheme__takeThemeFromObject_(self, _cmd, anObject) +{ with(self) +{ + var attributes = objj_msgSend(anObject, "_themeAttributeDictionary"), + attributeName = nil, + attributeNames = objj_msgSend(attributes, "keyEnumerator"), + objectThemeClass = objj_msgSend(objj_msgSend(anObject, "class"), "themeClass"); + while (attributeName = objj_msgSend(attributeNames, "nextObject")) + objj_msgSend(self, "_recordAttribute:forClass:", objj_msgSend(attributes, "objectForKey:", attributeName), objectThemeClass); +} +},["void","id"]), new objj_method(sel_getUid("_recordAttribute:forClass:"), function $CPTheme___recordAttribute_forClass_(self, _cmd, anAttribute, aClass) +{ with(self) +{ + if (!objj_msgSend(anAttribute, "hasValues")) + return; + var attributes = objj_msgSend(_attributes, "objectForKey:", aClass); + if (!attributes) + { + attributes = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(_attributes, "setObject:forKey:", attributes, aClass); + } + var name = objj_msgSend(anAttribute, "name"), + existingAttribute = objj_msgSend(attributes, "objectForKey:", name); + if (existingAttribute) + objj_msgSend(attributes, "setObject:forKey:", objj_msgSend(existingAttribute, "attributeMergedWithAttribute:", anAttribute), name); + else + objj_msgSend(attributes, "setObject:forKey:", anAttribute, name); +} +},["void","_CPThemeAttribute","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("setDefaultTheme:"), function $CPTheme__setDefaultTheme_(self, _cmd, aTheme) +{ with(self) +{ + CPThemeDefaultTheme = aTheme; +} +},["void","CPTheme"]), new objj_method(sel_getUid("defaultTheme"), function $CPTheme__defaultTheme(self, _cmd) +{ with(self) +{ + return CPThemeDefaultTheme; +} +},["CPTheme"]), new objj_method(sel_getUid("setDefaultHudTheme:"), function $CPTheme__setDefaultHudTheme_(self, _cmd, aTheme) +{ with(self) +{ + CPThemeDefaultHudTheme = aTheme; +} +},["void","CPTheme"]), new objj_method(sel_getUid("defaultHudTheme"), function $CPTheme__defaultHudTheme(self, _cmd) +{ with(self) +{ + if (!CPThemeDefaultHudTheme) + CPThemeDefaultHudTheme = objj_msgSend(CPTheme, "themeNamed:", objj_msgSend(objj_msgSend(self, "defaultTheme"), "name") + "-HUD"); + return CPThemeDefaultHudTheme; +} +},["CPTheme"]), new objj_method(sel_getUid("themeNamed:"), function $CPTheme__themeNamed_(self, _cmd, aName) +{ with(self) +{ + return CPThemesByName[aName]; +} +},["CPTheme","CPString"])]); +} +var CPThemeNameKey = "CPThemeNameKey", + CPThemeAttributesKey = "CPThemeAttributesKey"; +{ +var the_class = objj_getClass("CPTheme") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTheme\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTheme__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTheme").super_class }, "init"); + if (self) + { + _name = objj_msgSend(aCoder, "decodeObjectForKey:", CPThemeNameKey); + _attributes = objj_msgSend(aCoder, "decodeObjectForKey:", CPThemeAttributesKey); + CPThemesByName[_name] = self; + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTheme__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _name, CPThemeNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _attributes, CPThemeAttributesKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPKeyedUnarchiver, "_CPThemeKeyedUnarchiver"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_bundle")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initForReadingWithData:bundle:"), function $_CPThemeKeyedUnarchiver__initForReadingWithData_bundle_(self, _cmd, data, aBundle) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPThemeKeyedUnarchiver").super_class }, "initForReadingWithData:", data); + if (self) + _bundle = aBundle; + return self; +} +},["id","CPData","CPBundle"]), new objj_method(sel_getUid("bundle"), function $_CPThemeKeyedUnarchiver__bundle(self, _cmd) +{ with(self) +{ + return _bundle; +} +},["CPBundle"]), new objj_method(sel_getUid("awakenCustomResources"), function $_CPThemeKeyedUnarchiver__awakenCustomResources(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"])]); +} +var CPThemeStates = {}, + CPThemeStateNames = {}, + CPThemeStateCount = 0; +CPThemeState= function(aStateName) +{ + var state = CPThemeStates[aStateName]; + if (state === undefined) + { + if (aStateName.indexOf('+') === -1) + state = 1 << CPThemeStateCount++; + else + { + var state = 0, + states = aStateName.split('+'), + count = states.length; + while (count--) + { + var stateName = states[count], + individualState = CPThemeStates[stateName]; + if (individualState === undefined) + { + individualState = 1 << CPThemeStateCount++; + CPThemeStates[stateName] = individualState; + CPThemeStateNames[individualState] = stateName; + } + state |= individualState; + } + } + CPThemeStates[aStateName] = state; + CPThemeStateNames[state] = aStateName; + } + return state; +} +CPThemeStateName= function(aState) +{ + var name = CPThemeStateNames[aState]; + if (name !== undefined) + return name; + if (!(aState & (aState - 1))) + return ""; + var state = 1, + name = ""; + for (; state < aState; state <<= 1) + if (aState & state) + name += (name.length === 0 ? '' : '+') + CPThemeStateNames[state]; + CPThemeStateNames[aState] = name; + return name; +} +CPThemeStateNames[0] = "normal"; +CPThemeStateNormal = CPThemeStates["normal"] = 0; +CPThemeStateDisabled = CPThemeState("disabled"); +CPThemeStateHighlighted = CPThemeState("highlighted"); +CPThemeStateSelected = CPThemeState("selected"); +CPThemeStateTableDataView = CPThemeState("tableDataView"); +CPThemeStateSelectedDataView = CPThemeStateSelectedTableDataView = CPThemeState("selectedTableDataView"); +CPThemeStateBezeled = CPThemeState("bezeled"); +CPThemeStateBordered = CPThemeState("bordered"); +CPThemeStateEditable = CPThemeState("editable"); +CPThemeStateEditing = CPThemeState("editing"); +CPThemeStateVertical = CPThemeState("vertical"); +CPThemeStateDefault = CPThemeState("default"); +CPThemeStateCircular = CPThemeState("circular"); +{var the_class = objj_allocateClassPair(CPObject, "_CPThemeAttribute"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_name"), new objj_ivar("_defaultValue"), new objj_ivar("_values"), new objj_ivar("_cache"), new objj_ivar("_parentAttribute")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("values"), function $_CPThemeAttribute__values(self, _cmd) +{ with(self) +{ +return _values; +} +},["id"]), new objj_method(sel_getUid("initWithName:defaultValue:"), function $_CPThemeAttribute__initWithName_defaultValue_(self, _cmd, aName, aDefaultValue) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPThemeAttribute").super_class }, "init"); + if (self) + { + _cache = { }; + _name = aName; + _defaultValue = aDefaultValue; + _values = objj_msgSend(CPDictionary, "dictionary"); + } + return self; +} +},["id","CPString","id"]), new objj_method(sel_getUid("name"), function $_CPThemeAttribute__name(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("defaultValue"), function $_CPThemeAttribute__defaultValue(self, _cmd) +{ with(self) +{ + return _defaultValue; +} +},["id"]), new objj_method(sel_getUid("hasValues"), function $_CPThemeAttribute__hasValues(self, _cmd) +{ with(self) +{ + return objj_msgSend(_values, "count") > 0; +} +},["BOOL"]), new objj_method(sel_getUid("isTrivial"), function $_CPThemeAttribute__isTrivial(self, _cmd) +{ with(self) +{ + return (objj_msgSend(_values, "count") === 1) && (Number(objj_msgSend(_values, "allKeys")[0]) === CPThemeStateNormal); +} +},["BOOL"]), new objj_method(sel_getUid("setValue:"), function $_CPThemeAttribute__setValue_(self, _cmd, aValue) +{ with(self) +{ + _cache = {}; + if (aValue === undefined || aValue === nil) + _values = objj_msgSend(CPDictionary, "dictionary"); + else + _values = objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", aValue, String(CPThemeStateNormal)); +} +},["void","id"]), new objj_method(sel_getUid("setValue:forState:"), function $_CPThemeAttribute__setValue_forState_(self, _cmd, aValue, aState) +{ with(self) +{ + _cache = { }; + if ((aValue === undefined) || (aValue === nil)) + objj_msgSend(_values, "removeObjectForKey:", String(aState)); + else + objj_msgSend(_values, "setObject:forKey:", aValue, String(aState)); +} +},["void","id","CPThemeState"]), new objj_method(sel_getUid("value"), function $_CPThemeAttribute__value(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "valueForState:", CPThemeStateNormal); +} +},["id"]), new objj_method(sel_getUid("valueForState:"), function $_CPThemeAttribute__valueForState_(self, _cmd, aState) +{ with(self) +{ + var value = _cache[aState]; + if (value !== undefined) + return value; + value = objj_msgSend(_values, "objectForKey:", String(aState)); + if ((value === undefined || value === nil) && aState !== CPThemeStateNormal) + { + if (aState & (aState - 1)) + { + var highestOneCount = 0, + states = objj_msgSend(_values, "allKeys"), + count = states.length; + while (count--) + { + var state = Number(states[count]); + if ((state & aState) === state) + { + var oneCount = cachedNumberOfOnes[state]; + if (oneCount === undefined) + oneCount = numberOfOnes(state); + if (oneCount > highestOneCount) + { + highestOneCount = oneCount; + value = objj_msgSend(_values, "objectForKey:", String(state)); + } + } + } + } + if (value === undefined || value === nil) + value = objj_msgSend(_values, "objectForKey:", String(CPThemeStateNormal)); + } + if (value === undefined || value === nil) + value = objj_msgSend(_parentAttribute, "valueForState:", aState); + if (value === undefined || value === nil) + value = _defaultValue; + _cache[aState] = value; + return value; +} +},["id","CPThemeState"]), new objj_method(sel_getUid("setParentAttribute:"), function $_CPThemeAttribute__setParentAttribute_(self, _cmd, anAttribute) +{ with(self) +{ + if (_parentAttribute === anAttribute) + return; + _cache = { }; + _parentAttribute = anAttribute; +} +},["void","_CPThemeAttribute"]), new objj_method(sel_getUid("attributeMergedWithAttribute:"), function $_CPThemeAttribute__attributeMergedWithAttribute_(self, _cmd, anAttribute) +{ with(self) +{ + var mergedAttribute = objj_msgSend(objj_msgSend(_CPThemeAttribute, "alloc"), "initWithName:defaultValue:", _name, _defaultValue); + mergedAttribute._values = objj_msgSend(_values, "copy"); + objj_msgSend(mergedAttribute._values, "addEntriesFromDictionary:", anAttribute._values); + return mergedAttribute; +} +},["_CPThemeAttribute","_CPThemeAttribute"])]); +} +{ +var the_class = objj_getClass("_CPThemeAttribute") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPThemeAttribute\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPThemeAttribute__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPThemeAttribute").super_class }, "init"); + if (self) + { + _cache = {}; + _name = objj_msgSend(aCoder, "decodeObjectForKey:", "name"); + _values = objj_msgSend(CPDictionary, "dictionary"); + if (objj_msgSend(aCoder, "containsValueForKey:", "value")) + { + var state = CPThemeStateNormal; + if (objj_msgSend(aCoder, "containsValueForKey:", "state")) + state = CPThemeState(objj_msgSend(aCoder, "decodeObjectForKey:", "state")); + objj_msgSend(_values, "setObject:forKey:", objj_msgSend(aCoder, "decodeObjectForKey:", "value"), state); + } + else + { + var encodedValues = objj_msgSend(aCoder, "decodeObjectForKey:", "values"), + keys = objj_msgSend(encodedValues, "allKeys"), + count = keys.length; + while (count--) + { + var key = keys[count]; + objj_msgSend(_values, "setObject:forKey:", objj_msgSend(encodedValues, "objectForKey:", key), CPThemeState(key)); + } + } + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPThemeAttribute__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _name, "name"); + var keys = objj_msgSend(_values, "allKeys"), + count = keys.length; + if (count === 1) + { + var onlyKey = keys[0]; + if (Number(onlyKey) !== CPThemeStateNormal) + objj_msgSend(aCoder, "encodeObject:forKey:", CPThemeStateName(Number(onlyKey)), "state"); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_values, "objectForKey:", onlyKey), "value"); + } + else + { + var encodedValues = objj_msgSend(CPDictionary, "dictionary"); + while (count--) + { + var key = keys[count]; + objj_msgSend(encodedValues, "setObject:forKey:", objj_msgSend(_values, "objectForKey:", key), CPThemeStateName(Number(key))); + } + objj_msgSend(aCoder, "encodeObject:forKey:", encodedValues, "values"); + } +} +},["void","CPCoder"])]); +} +var cachedNumberOfOnes = [ 0 , 1 , 1 , 2 , 1 , 2 , 2 , + 3 , 1 , 2 , 2 , 3 , 2 , 3 , + 3 , 4 , 1 , 2 , 2 , 3 , 2 , + 3 , 3 , 4 , 2 , 3 , 3 , 4 , + 3 , 4 , 4 , 5 , 1 , 2 , 2 , + 3 , 2 , 3 , 3 , 4 , 2 , 3 , + 3 , 4 , 3 , 4 , 4 , 5 , 2 , + 3 , 3 , 4 , 3 , 4 , 4 , 5 , + 3 , 4 , 4 , 5 , 4 , 5 , 5 , + 6 ]; +var numberOfOnes = function(aNumber) +{ + var count = 0, + slot = aNumber; + while (aNumber) + { + ++count; + aNumber &= (aNumber - 1); + } + cachedNumberOfOnes[slot] = count; + return count; +} +numberOfOnes.displayName = "numberOfOnes"; +CPThemeAttributeEncode= function(aCoder, aThemeAttribute) +{ + var values = aThemeAttribute._values, + count = objj_msgSend(values, "count"), + key = "$a" + objj_msgSend(aThemeAttribute, "name"); + if (count === 1) + { + var state = objj_msgSend(values, "allKeys")[0]; + if (Number(state) === 0) + { + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(values, "objectForKey:", state), key); + return YES; + } + } + if (count >= 1) + { + objj_msgSend(aCoder, "encodeObject:forKey:", aThemeAttribute, key); + return YES; + } + return NO; +} +CPThemeAttributeDecode= function(aCoder, anAttributeName, aDefaultValue, aTheme, aClass) +{ + var key = "$a" + anAttributeName; + if (!objj_msgSend(aCoder, "containsValueForKey:", key)) + var attribute = objj_msgSend(objj_msgSend(_CPThemeAttribute, "alloc"), "initWithName:defaultValue:", anAttributeName, aDefaultValue); + else + { + var attribute = objj_msgSend(aCoder, "decodeObjectForKey:", key); + if (!attribute.isa || !objj_msgSend(attribute, "isKindOfClass:", objj_msgSend(_CPThemeAttribute, "class"))) + { + var themeAttribute = objj_msgSend(objj_msgSend(_CPThemeAttribute, "alloc"), "initWithName:defaultValue:", anAttributeName, aDefaultValue); + objj_msgSend(themeAttribute, "setValue:", attribute); + attribute = themeAttribute; + } + } + if (aTheme && aClass) + objj_msgSend(attribute, "setParentAttribute:", objj_msgSend(aTheme, "attributeWithName:forClass:", anAttributeName, aClass)); + return attribute; +} + +p;14;CPThemeBlend.jt;2447;@STATIC;1.0;I;21;Foundation/CPObject.jI;16;AppKit/CPTheme.jI;29;AppKit/_CPCibCustomResource.jI;30;AppKit/_CPCibKeyedUnarchiver.jt;2312;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("AppKit/CPTheme.j", NO); +objj_executeFile("AppKit/_CPCibCustomResource.j", NO); +objj_executeFile("AppKit/_CPCibKeyedUnarchiver.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPThemeBlend"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_bundle"), new objj_ivar("_themes"), new objj_ivar("_loadDelegate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithContentsOfURL:"), function $CPThemeBlend__initWithContentsOfURL_(self, _cmd, aURL) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPThemeBlend").super_class }, "init"); + if (self) + { + _bundle = objj_msgSend(objj_msgSend(CPBundle, "alloc"), "initWithPath:", aURL); + } + return self; +} +},["id","CPURL"]), new objj_method(sel_getUid("themes"), function $CPThemeBlend__themes(self, _cmd) +{ with(self) +{ + return _themes; +} +},["CPArray"]), new objj_method(sel_getUid("themeNames"), function $CPThemeBlend__themeNames(self, _cmd) +{ with(self) +{ + var names = []; + for (var i = 0; i < _themes.length; ++i) + names.push(_themes[i].substring(0, _themes[i].indexOf(".keyedtheme"))); + return names; +} +},["CPArray"]), new objj_method(sel_getUid("loadWithDelegate:"), function $CPThemeBlend__loadWithDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _loadDelegate = aDelegate; + objj_msgSend(_bundle, "loadWithDelegate:", self); +} +},["void","id"]), new objj_method(sel_getUid("bundleDidFinishLoading:"), function $CPThemeBlend__bundleDidFinishLoading_(self, _cmd, aBundle) +{ with(self) +{ + _themes = objj_msgSend(_bundle, "objectForInfoDictionaryKey:", "CPKeyedThemes"); + var count = _themes.length; + while (count--) + { + var path = objj_msgSend(aBundle, "pathForResource:", _themes[count]), + unarchiver = objj_msgSend(objj_msgSend(_CPThemeKeyedUnarchiver, "alloc"), "initForReadingWithData:bundle:", objj_msgSend(objj_msgSend(CPURL, "URLWithString:", path), "staticResourceData"), _bundle); + objj_msgSend(unarchiver, "decodeObjectForKey:", "root"); + objj_msgSend(unarchiver, "finishDecoding"); + } + objj_msgSend(_loadDelegate, "blendDidFinishLoading:", self); +} +},["void","CPBundle"])]); +} + +p;11;CPToolbar.jt;35870;@STATIC;1.0;I;21;Foundation/CPObject.ji;15;CPPopUpButton.ji;15;CPToolbarItem.jt;35784;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CPPopUpButton.j", YES); +objj_executeFile("CPToolbarItem.j", YES); +CPToolbarDisplayModeDefault = 0; +CPToolbarDisplayModeIconAndLabel = 1; +CPToolbarDisplayModeIconOnly = 2; +CPToolbarDisplayModeLabelOnly = 3; +var CPToolbarsByIdentifier = nil; +var CPToolbarConfigurationsByIdentifier = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPToolbar"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_identifier"), new objj_ivar("_displayMode"), new objj_ivar("_showsBaselineSeparator"), new objj_ivar("_allowsUserCustomization"), new objj_ivar("_isVisible"), new objj_ivar("_delegate"), new objj_ivar("_itemIdentifiers"), new objj_ivar("_identifiedItems"), new objj_ivar("_defaultItems"), new objj_ivar("_allowedItems"), new objj_ivar("_selectableItems"), new objj_ivar("_items"), new objj_ivar("_itemsSortedByVisibilityPriority"), new objj_ivar("_toolbarView"), new objj_ivar("_window")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPToolbar__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithIdentifier:"), function $CPToolbar__initWithIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPToolbar").super_class }, "init"); + if (self) + { + _items = []; + _identifier = anIdentifier; + _isVisible = YES; + objj_msgSend(CPToolbar, "_addToolbar:forIdentifier:", self, _identifier); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("setDisplayMode:"), function $CPToolbar__setDisplayMode_(self, _cmd, aDisplayMode) +{ with(self) +{ +} +},["void","CPToolbarDisplayMode"]), new objj_method(sel_getUid("identifier"), function $CPToolbar__identifier(self, _cmd) +{ with(self) +{ + return _identifier; +} +},["CPString"]), new objj_method(sel_getUid("delegate"), function $CPToolbar__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("isVisible"), function $CPToolbar__isVisible(self, _cmd) +{ with(self) +{ + return _isVisible; +} +},["BOOL"]), new objj_method(sel_getUid("setVisible:"), function $CPToolbar__setVisible_(self, _cmd, aFlag) +{ with(self) +{ + if (_isVisible === aFlag) + return; + _isVisible = aFlag; + objj_msgSend(_window, "_noteToolbarChanged"); +} +},["void","BOOL"]), new objj_method(sel_getUid("_window"), function $CPToolbar___window(self, _cmd) +{ with(self) +{ + return _window; +} +},["CPWindow"]), new objj_method(sel_getUid("_setWindow:"), function $CPToolbar___setWindow_(self, _cmd, aWindow) +{ with(self) +{ + _window = aWindow; +} +},["void","CPWindow"]), new objj_method(sel_getUid("setDelegate:"), function $CPToolbar__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate === aDelegate) + return; + _delegate = aDelegate; + objj_msgSend(self, "_reloadToolbarItems"); +} +},["void","id"]), new objj_method(sel_getUid("_loadConfiguration"), function $CPToolbar___loadConfiguration(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("_toolbarView"), function $CPToolbar___toolbarView(self, _cmd) +{ with(self) +{ + if (!_toolbarView) + { + _toolbarView = objj_msgSend(objj_msgSend(_CPToolbarView, "alloc"), "initWithFrame:", CPRectMake(0.0, 0.0, 1200.0, 59.0)); + objj_msgSend(_toolbarView, "setToolbar:", self); + objj_msgSend(_toolbarView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_toolbarView, "reloadToolbarItems"); + } + return _toolbarView; +} +},["CPView"]), new objj_method(sel_getUid("_reloadToolbarItems"), function $CPToolbar___reloadToolbarItems(self, _cmd) +{ with(self) +{ + _itemIdentifiers = objj_msgSend(_defaultItems, "valueForKey:", "itemIdentifier") || []; + if (_delegate) + { + var itemIdentifiersFromDelegate = objj_msgSend(objj_msgSend(_delegate, "toolbarDefaultItemIdentifiers:", self), "mutableCopy"); + if (itemIdentifiersFromDelegate) + _itemIdentifiers = objj_msgSend(_itemIdentifiers, "arrayByAddingObjectsFromArray:", itemIdentifiersFromDelegate); + } + var index = 0, + count = objj_msgSend(_itemIdentifiers, "count"); + _items = []; + for (; index < count; ++index) + { + var identifier = _itemIdentifiers[index], + item = objj_msgSend(CPToolbarItem, "_standardItemWithItemIdentifier:", identifier); + if (!item) + item = objj_msgSend(_identifiedItems, "objectForKey:", identifier); + if (!item && _delegate) + item = objj_msgSend(_delegate, "toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:", self, identifier, YES); + item = objj_msgSend(item, "copy"); + if (item === nil) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Toolbar delegate " + _delegate + " returned nil toolbar item for identifier \"" + identifier + "\""); + item._toolbar = self; + objj_msgSend(_items, "addObject:", item); + } + _itemsSortedByVisibilityPriority = objj_msgSend(_items, "sortedArrayUsingFunction:context:", _CPToolbarItemVisibilityPriorityCompare, NULL); + objj_msgSend(_toolbarView, "reloadToolbarItems"); +} +},["void"]), new objj_method(sel_getUid("items"), function $CPToolbar__items(self, _cmd) +{ with(self) +{ + return _items; +} +},["CPArray"]), new objj_method(sel_getUid("visibleItems"), function $CPToolbar__visibleItems(self, _cmd) +{ with(self) +{ + return objj_msgSend(_toolbarView, "visibleItems"); +} +},["CPArray"]), new objj_method(sel_getUid("itemsSortedByVisibilityPriority"), function $CPToolbar__itemsSortedByVisibilityPriority(self, _cmd) +{ with(self) +{ + return _itemsSortedByVisibilityPriority; +} +},["CPArray"]), new objj_method(sel_getUid("validateVisibleItems"), function $CPToolbar__validateVisibleItems(self, _cmd) +{ with(self) +{ + var toolbarItems = objj_msgSend(self, "visibleItems"), + count = objj_msgSend(toolbarItems, "count"); + while (count--) + objj_msgSend(toolbarItems[count], "validate"); +} +},["void"]), new objj_method(sel_getUid("_itemForItemIdentifier:willBeInsertedIntoToolbar:"), function $CPToolbar___itemForItemIdentifier_willBeInsertedIntoToolbar_(self, _cmd, identifier, toolbar) +{ with(self) +{ + var item = objj_msgSend(_identifiedItems, "objectForKey:", identifier); + if (!item) + { + item = objj_msgSend(CPToolbarItem, "_standardItemWithItemIdentifier:", identifier); + if (_delegate && !item) + { + item = objj_msgSend(objj_msgSend(_delegate, "toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:", self, identifier, toolbar), "copy"); + if (!item) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Toolbar delegate " + _delegate + " returned nil toolbar item for identifier " + identifier); + } + objj_msgSend(_identifiedItems, "setObject:forKey:", item, identifier); + } + return item; +} +},["id","CPString","BOOL"]), new objj_method(sel_getUid("_itemsWithIdentifiers:"), function $CPToolbar___itemsWithIdentifiers_(self, _cmd, identifiers) +{ with(self) +{ + var items = []; + for (var i = 0; i < identifiers.length; i++) + objj_msgSend(items, "addObject:", objj_msgSend(self, "_itemForItemIdentifier:willBeInsertedIntoToolbar:", identifiers[i], NO)); + return items; +} +},["id","CPArray"]), new objj_method(sel_getUid("_defaultToolbarItems"), function $CPToolbar___defaultToolbarItems(self, _cmd) +{ with(self) +{ + if (!_defaultItems && objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("toolbarDefaultItemIdentifiers:"))) + { + _defaultItems = []; + var identifiers = objj_msgSend(_delegate, "toolbarDefaultItemIdentifiers:", self), + index = 0, + count = objj_msgSend(identifiers, "count"); + for (; index < count; ++index) + objj_msgSend(_defaultItems, "addObject:", objj_msgSend(self, "_itemForItemIdentifier:willBeInsertedIntoToolbar:", identifiers[index], NO)); + } + return _defaultItems; +} +},["id"]), new objj_method(sel_getUid("toolbarItemDidChange:"), function $CPToolbar__toolbarItemDidChange_(self, _cmd, anItem) +{ with(self) +{ + if (objj_msgSend(_identifiedItems, "objectForKey:", objj_msgSend(anItem, "itemIdentifier"))) + objj_msgSend(_identifiedItems, "setObject:forKey:", anItem, objj_msgSend(anItem, "itemIdentifier")); + var index = 0, + count = objj_msgSend(_items, "count"); + for (; index <= count; ++index) + { + var item = _items[index]; + if (objj_msgSend(item, "itemIdentifier") === objj_msgSend(anItem, "itemIdentifier")) + { + _items[index] = anItem; + _itemsSortedByVisibilityPriority = objj_msgSend(_items, "sortedArrayUsingFunction:context:", _CPToolbarItemVisibilityPriorityCompare, NULL); + objj_msgSend(_toolbarView, "reloadToolbarItems"); + } + } +} +},["void","CPToolbarItem"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPToolbar__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPToolbar, "class")) + return; + CPToolbarsByIdentifier = objj_msgSend(CPDictionary, "dictionary"); + CPToolbarConfigurationsByIdentifier = objj_msgSend(CPDictionary, "dictionary"); +} +},["void"]), new objj_method(sel_getUid("_addToolbar:forIdentifier:"), function $CPToolbar___addToolbar_forIdentifier_(self, _cmd, toolbar, identifier) +{ with(self) +{ + var toolbarsSharingIdentifier = objj_msgSend(CPToolbarsByIdentifier, "objectForKey:", identifier); + if (!toolbarsSharingIdentifier) + { + toolbarsSharingIdentifier = [] + objj_msgSend(CPToolbarsByIdentifier, "setObject:forKey:", toolbarsSharingIdentifier, identifier); + } + objj_msgSend(toolbarsSharingIdentifier, "addObject:", toolbar); +} +},["void","CPToolbar","CPString"])]); +} +var CPToolbarIdentifierKey = "CPToolbarIdentifierKey", + CPToolbarDisplayModeKey = "CPToolbarDisplayModeKey", + CPToolbarShowsBaselineSeparatorKey = "CPToolbarShowsBaselineSeparatorKey", + CPToolbarAllowsUserCustomizationKey = "CPToolbarAllowsUserCustomizationKey", + CPToolbarIsVisibleKey = "CPToolbarIsVisibleKey", + CPToolbarDelegateKey = "CPToolbarDelegateKey", + CPToolbarIdentifiedItemsKey = "CPToolbarIdentifiedItemsKey", + CPToolbarDefaultItemsKey = "CPToolbarDefaultItemsKey", + CPToolbarAllowedItemsKey = "CPToolbarAllowedItemsKey", + CPToolbarSelectableItemsKey = "CPToolbarSelectableItemsKey"; +{ +var the_class = objj_getClass("CPToolbar") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPToolbar\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPToolbar__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPToolbar").super_class }, "init"); + if (self) + { + _identifier = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarIdentifierKey); + _displayMode = objj_msgSend(aCoder, "decodeIntForKey:", CPToolbarDisplayModeKey); + _showsBaselineSeparator = objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarShowsBaselineSeparatorKey); + _allowsUserCustomization = objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarAllowsUserCustomizationKey); + _isVisible = objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarIsVisibleKey); + _identifiedItems = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarIdentifiedItemsKey); + _defaultItems = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarDefaultItemsKey); + _allowedItems = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarAllowedItemsKey); + _selectableItems = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarSelectableItemsKey); + objj_msgSend(objj_msgSend(_identifiedItems, "allValues"), "makeObjectsPerformSelector:withObject:", sel_getUid("_setToolbar:"), self); + _items = []; + objj_msgSend(CPToolbar, "_addToolbar:forIdentifier:", self, _identifier); + objj_msgSend(self, "setDelegate:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarDelegateKey)); + objj_msgSend(self, "_reloadToolbarItems"); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPToolbar__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _identifier, CPToolbarIdentifierKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _displayMode, CPToolbarDisplayModeKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _showsBaselineSeparator, CPToolbarShowsBaselineSeparatorKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _allowsUserCustomization, CPToolbarAllowsUserCustomizationKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _isVisible, CPToolbarIsVisibleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _identifiedItems, CPToolbarIdentifiedItemsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _defaultItems, CPToolbarDefaultItemsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _allowedItems, CPToolbarAllowedItemsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _selectableItems, CPToolbarSelectableItemsKey); + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _delegate, CPToolbarDelegateKey); +} +},["void","CPCoder"])]); +} +var _CPToolbarViewBackgroundColor = nil, + _CPToolbarViewExtraItemsImage = nil, + _CPToolbarViewExtraItemsAlternateImage = nil; +var TOOLBAR_TOP_MARGIN = 5.0, + TOOLBAR_ITEM_MARGIN = 10.0, + TOOLBAR_EXTRA_ITEMS_WIDTH = 20.0; +var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) +{ + return { index:anIndex, view:aView, label:aLabel, minWidth:aMinWidth }; +} +{var the_class = objj_allocateClassPair(CPView, "_CPToolbarView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_toolbar"), new objj_ivar("_flexibleWidthIndexes"), new objj_ivar("_visibleFlexibleWidthIndexes"), new objj_ivar("_itemInfos"), new objj_ivar("_viewsForToolbarItems"), new objj_ivar("_visibleItems"), new objj_ivar("_invisibleItems"), new objj_ivar("_additionalItemsButton"), new objj_ivar("_labelColor"), new objj_ivar("_labelShadowColor"), new objj_ivar("_minWidth"), new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("visibleItems"), function $_CPToolbarView__visibleItems(self, _cmd) +{ with(self) +{ +return _visibleItems; +} +},["id"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPToolbarView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _minWidth = 0; + _labelColor = objj_msgSend(CPColor, "blackColor"); + _labelShadowColor = objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.75); + _additionalItemsButton = objj_msgSend(objj_msgSend(CPPopUpButton, "alloc"), "initWithFrame:pullsDown:", CGRectMake(0.0, 0.0, 10.0, 15.0), YES); + objj_msgSend(_additionalItemsButton, "setBordered:", NO); + objj_msgSend(_additionalItemsButton, "setImagePosition:", CPImageOnly); + objj_msgSend(objj_msgSend(_additionalItemsButton, "menu"), "setShowsStateColumn:", NO); + objj_msgSend(objj_msgSend(_additionalItemsButton, "menu"), "setAutoenablesItems:", NO); + objj_msgSend(_additionalItemsButton, "setAlternateImage:", _CPToolbarViewExtraItemsAlternateImage); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("setToolbar:"), function $_CPToolbarView__setToolbar_(self, _cmd, aToolbar) +{ with(self) +{ + _toolbar = aToolbar; +} +},["void","CPToolbar"]), new objj_method(sel_getUid("toolbar"), function $_CPToolbarView__toolbar(self, _cmd) +{ with(self) +{ + return _toolbar; +} +},["CPToolbar"]), new objj_method(sel_getUid("FIXME_setIsHUD:"), function $_CPToolbarView__FIXME_setIsHUD_(self, _cmd, shouldBeHUD) +{ with(self) +{ + if (_FIXME_isHUD === shouldBeHUD) + return; + _FIXME_isHUD = shouldBeHUD; + var items = objj_msgSend(_toolbar, "items"), + count = objj_msgSend(items, "count"); + while (count--) + objj_msgSend(objj_msgSend(self, "viewForItem:", items[count]), "FIXME_setIsHUD:", shouldBeHUD); +} +},["void","BOOL"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $_CPToolbarView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "tile"); +} +},["void","CGSize"]), new objj_method(sel_getUid("viewForItem:"), function $_CPToolbarView__viewForItem_(self, _cmd, anItem) +{ with(self) +{ + return _viewsForToolbarItems[objj_msgSend(anItem, "UID")] || nil; +} +},["_CPToolbarItemView","CPToolbarItem"]), new objj_method(sel_getUid("tile"), function $_CPToolbarView__tile(self, _cmd) +{ with(self) +{ + var items = objj_msgSend(_toolbar, "items"), + itemsWidth = CGRectGetWidth(objj_msgSend(self, "bounds")), + minWidth = _minWidth, + invisibleItemsSortedByPriority = []; + _visibleItems = items; + if (itemsWidth < minWidth) + { + itemsWidth -= TOOLBAR_EXTRA_ITEMS_WIDTH; + _visibleItems = objj_msgSend(_visibleItems, "copy"); + var itemsSortedByVisibilityPriority = objj_msgSend(_toolbar, "itemsSortedByVisibilityPriority"), + count = itemsSortedByVisibilityPriority.length; + while (minWidth > itemsWidth && count) + { + var item = itemsSortedByVisibilityPriority[--count], + view = objj_msgSend(self, "viewForItem:", item); + minWidth -= objj_msgSend(view, "minSize").width + TOOLBAR_ITEM_MARGIN; + objj_msgSend(_visibleItems, "removeObjectIdenticalTo:", item); + objj_msgSend(invisibleItemsSortedByPriority, "addObject:", item); + objj_msgSend(view, "setHidden:", YES); + objj_msgSend(view, "FIXME_setIsHUD:", _FIXME_isHUD); + } + } + var count = objj_msgSend(items, "count"), + height = 0.0; + while (count--) + { + var view = objj_msgSend(self, "viewForItem:", items[count]), + minSize = objj_msgSend(view, "minSize"); + if (height < minSize.height) + height = minSize.height; + } + var count = _visibleItems.length + flexibleItemIndexes = objj_msgSend(CPIndexSet, "indexSet"); + while (count--) + { + var item = _visibleItems[count], + view = objj_msgSend(self, "viewForItem:", item), + minSize = objj_msgSend(view, "minSize"); + if (minSize.width !== objj_msgSend(view, "maxSize").width) + objj_msgSend(flexibleItemIndexes, "addIndex:", count); + else + objj_msgSend(view, "setFrameSize:", CGSizeMake(minSize.width, height)); + objj_msgSend(view, "setHidden:", NO); + } + var remainingSpace = itemsWidth - minWidth, + proportionate = 0.0; + while (remainingSpace && objj_msgSend(flexibleItemIndexes, "count")) + { + proportionate += remainingSpace / objj_msgSend(flexibleItemIndexes, "count"); + remainingSpace = 0.0; + var index = CPNotFound; + while ((index = objj_msgSend(flexibleItemIndexes, "indexGreaterThanIndex:", index)) !== CPNotFound) + { + var item = _visibleItems[index], + view = objj_msgSend(self, "viewForItem:", item), + proposedWidth = objj_msgSend(view, "minSize").width + proportionate, + constrainedWidth = MIN(proposedWidth, objj_msgSend(view, "maxSize").width); + if (constrainedWidth < proposedWidth) + { + objj_msgSend(flexibleItemIndexes, "removeIndex:", index); + remainingSpace += proposedWidth - constrainedWidth; + } + objj_msgSend(view, "setFrameSize:", CGSizeMake(constrainedWidth, height)); + } + } + var index = 0, + count = _visibleItems.length, + x = TOOLBAR_ITEM_MARGIN; + for (; index < count; ++index) + { + var view = objj_msgSend(self, "viewForItem:", _visibleItems[index]), + viewWidth = CGRectGetWidth(objj_msgSend(view, "frame")); + objj_msgSend(view, "setFrame:", CGRectMake(x, 0.0, viewWidth, height)); + x += viewWidth + TOOLBAR_ITEM_MARGIN; + } + var needsAdditionalItemsButton = NO; + if (objj_msgSend(invisibleItemsSortedByPriority, "count")) + { + var index = 0, + count = objj_msgSend(items, "count"); + _invisibleItems = []; + for (; index < count; ++index) + { + var item = items[index]; + if (objj_msgSend(invisibleItemsSortedByPriority, "indexOfObjectIdenticalTo:", item) !== CPNotFound) + { + objj_msgSend(_invisibleItems, "addObject:", item); + var identifier = objj_msgSend(item, "itemIdentifier"); + if (identifier !== CPToolbarSpaceItemIdentifier && + identifier !== CPToolbarFlexibleSpaceItemIdentifier && + identifier !== CPToolbarSeparatorItemIdentifier) + needsAdditionalItemsButton = YES; + } + } + } + if (needsAdditionalItemsButton) + { + objj_msgSend(_additionalItemsButton, "setFrameOrigin:", CGPointMake(itemsWidth + 5.0, (CGRectGetHeight(objj_msgSend(self, "bounds")) - CGRectGetHeight(objj_msgSend(_additionalItemsButton, "frame"))) / 2.0)); + objj_msgSend(self, "addSubview:", _additionalItemsButton); + objj_msgSend(_additionalItemsButton, "removeAllItems"); + objj_msgSend(_additionalItemsButton, "addItemWithTitle:", "Additional Items"); + objj_msgSend(objj_msgSend(_additionalItemsButton, "itemArray")[0], "setImage:", _CPToolbarViewExtraItemsImage); + var index = 0, + count = objj_msgSend(_invisibleItems, "count"), + hasNonSeparatorItem = NO; + for (; index < count; ++index) + { + var item = _invisibleItems[index], + identifier = objj_msgSend(item, "itemIdentifier"); + if (identifier === CPToolbarSpaceItemIdentifier || + identifier === CPToolbarFlexibleSpaceItemIdentifier) + continue; + if (identifier === CPToolbarSeparatorItemIdentifier) + { + if (hasNonSeparatorItem) + objj_msgSend(_additionalItemsButton, "addItem:", objj_msgSend(CPMenuItem, "separatorItem")); + continue; + } + hasNonSeparatorItem = YES; + var menuItem = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", objj_msgSend(item, "label"), objj_msgSend(item, "action"), nil); + objj_msgSend(menuItem, "setImage:", objj_msgSend(item, "image")); + objj_msgSend(menuItem, "setTarget:", objj_msgSend(item, "target")); + objj_msgSend(menuItem, "setEnabled:", objj_msgSend(item, "isEnabled")); + objj_msgSend(_additionalItemsButton, "addItem:", menuItem); + } + } + else + objj_msgSend(_additionalItemsButton, "removeFromSuperview"); +} +},["void"]), new objj_method(sel_getUid("reloadToolbarItems"), function $_CPToolbarView__reloadToolbarItems(self, _cmd) +{ with(self) +{ + var subviews = objj_msgSend(self, "subviews"), + count = subviews.length; + while (count--) + objj_msgSend(subviews[count], "removeFromSuperview"); + var items = objj_msgSend(_toolbar, "items"), + index = 0; + count = items.length; + _minWidth = TOOLBAR_ITEM_MARGIN; + _viewsForToolbarItems = { }; + for (; index < count; ++index) + { + var item = items[index], + view = objj_msgSend(objj_msgSend(_CPToolbarItemView, "alloc"), "initWithToolbarItem:toolbar:", item, self); + _viewsForToolbarItems[objj_msgSend(item, "UID")] = view; + objj_msgSend(self, "addSubview:", view); + _minWidth += objj_msgSend(view, "minSize").width + TOOLBAR_ITEM_MARGIN; + } + objj_msgSend(self, "tile"); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPToolbarView__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(_CPToolbarView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + _CPToolbarViewExtraItemsImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPToolbarView/_CPToolbarViewExtraItemsImage.png"), CPSizeMake(10.0, 15.0)); + _CPToolbarViewExtraItemsAlternateImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png"), CGSizeMake(10.0, 15.0)); +} +},["void"])]); +} +var _CPToolbarItemVisibilityPriorityCompare = function(lhs, rhs) +{ + var lhsVisibilityPriority = objj_msgSend(lhs, "visibilityPriority"), + rhsVisibilityPriority = objj_msgSend(rhs, "visibilityPriority"); + if (lhsVisibilityPriority == rhsVisibilityPriority) + return CPOrderedSame; + if (lhsVisibilityPriority > rhsVisibilityPriority) + return CPOrderedAscending; + return CPOrderedDescending; +} +var TOP_MARGIN = 5.0, + LABEL_MARGIN = 2.0; +{var the_class = objj_allocateClassPair(CPControl, "_CPToolbarItemView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_minSize"), new objj_ivar("_maxSize"), new objj_ivar("_labelSize"), new objj_ivar("_toolbarItem"), new objj_ivar("_toolbar"), new objj_ivar("_imageView"), new objj_ivar("_view"), new objj_ivar("_labelField"), new objj_ivar("_FIXME_isHUD")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("minSize"), function $_CPToolbarItemView__minSize(self, _cmd) +{ with(self) +{ +return _minSize; +} +},["id"]), +new objj_method(sel_getUid("maxSize"), function $_CPToolbarItemView__maxSize(self, _cmd) +{ with(self) +{ +return _maxSize; +} +},["id"]), new objj_method(sel_getUid("initWithToolbarItem:toolbar:"), function $_CPToolbarItemView__initWithToolbarItem_toolbar_(self, _cmd, aToolbarItem, aToolbar) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarItemView").super_class }, "init"); + if (self) + { + _toolbarItem = aToolbarItem; + _labelField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_labelField, "setFont:", objj_msgSend(CPFont, "systemFontOfSize:", 11.0)); + objj_msgSend(_labelField, "setTextColor:", objj_msgSend(self, "FIXME_labelColor")); + objj_msgSend(_labelField, "setTextShadowColor:", objj_msgSend(self, "FIXME_labelShadowColor")); + objj_msgSend(_labelField, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_labelField, "setAutoresizingMask:", CPViewWidthSizable | CPViewMinXMargin); + objj_msgSend(self, "addSubview:", _labelField); + objj_msgSend(self, "updateFromItem"); + _toolbar = aToolbar; + var keyPaths = ["label", "image", "alternateImage", "minSize", "maxSize", "target", "action", "enabled"], + index = 0, + count = objj_msgSend(keyPaths, "count"); + for (; index < count; ++index) + objj_msgSend(_toolbarItem, "addObserver:forKeyPath:options:context:", self, keyPaths[index], 0, NULL); + } + return self; +} +},["id","CPToolbarItem","CPToolbar"]), new objj_method(sel_getUid("FIXME_setIsHUD:"), function $_CPToolbarItemView__FIXME_setIsHUD_(self, _cmd, shouldBeHUD) +{ with(self) +{ + _FIXME_isHUD = shouldBeHUD; + objj_msgSend(_labelField, "setTextColor:", objj_msgSend(self, "FIXME_labelColor")); + objj_msgSend(_labelField, "setTextShadowColor:", objj_msgSend(self, "FIXME_labelShadowColor")); +} +},["void","BOOL"]), new objj_method(sel_getUid("updateFromItem"), function $_CPToolbarItemView__updateFromItem(self, _cmd) +{ with(self) +{ + var identifier = objj_msgSend(_toolbarItem, "itemIdentifier"); + if (identifier === CPToolbarSpaceItemIdentifier || + identifier === CPToolbarFlexibleSpaceItemIdentifier || + identifier === CPToolbarSeparatorItemIdentifier) + { + objj_msgSend(_view, "removeFromSuperview"); + objj_msgSend(_imageView, "removeFromSuperview"); + _minSize = objj_msgSend(_toolbarItem, "minSize"); + _maxSize = objj_msgSend(_toolbarItem, "maxSize"); + if (identifier === CPToolbarSeparatorItemIdentifier) + { + _view = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 2.0, 32.0)); + sizes = {}; + sizes["CPToolbarItemSeparator"] = [CGSizeMake(2.0, 26.0), CGSizeMake(2.0, 1.0), CGSizeMake(2.0, 26.0)]; + objj_msgSend(_view, "setBackgroundColor:", _CPControlThreePartImagePattern(YES, sizes, "CPToolbarItem", "Separator")); + objj_msgSend(self, "addSubview:", _view); + } + return; + } + objj_msgSend(self, "setTarget:", objj_msgSend(_toolbarItem, "target")); + objj_msgSend(self, "setAction:", objj_msgSend(_toolbarItem, "action")); + var view = objj_msgSend(_toolbarItem, "view") || nil; + if (view !== _view) + { + if (!view) + objj_msgSend(_view, "removeFromSuperview"); + else + { + objj_msgSend(self, "addSubview:", view); + objj_msgSend(_imageView, "removeFromSuperview"); + } + _view = view; + } + if (!_view) + { + if (!_imageView) + { + _imageView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_imageView, "setImageScaling:", CPScaleNone); + objj_msgSend(self, "addSubview:", _imageView); + } + objj_msgSend(_imageView, "setImage:", objj_msgSend(_toolbarItem, "image")); + } + var minSize = objj_msgSend(_toolbarItem, "minSize"), + maxSize = objj_msgSend(_toolbarItem, "maxSize"); + objj_msgSend(_labelField, "setStringValue:", objj_msgSend(_toolbarItem, "label")); + objj_msgSend(_labelField, "sizeToFit"); + objj_msgSend(self, "setEnabled:", objj_msgSend(_toolbarItem, "isEnabled")); + _labelSize = objj_msgSend(_labelField, "frame").size; + _minSize = CGSizeMake(MAX(_labelSize.width, minSize.width), _labelSize.height + minSize.height + LABEL_MARGIN + TOP_MARGIN); + _maxSize = CGSizeMake(MAX(_labelSize.width, minSize.width), 100000000.0); + objj_msgSend(_toolbar, "tile"); +} +},["void"]), new objj_method(sel_getUid("layoutSubviews"), function $_CPToolbarItemView__layoutSubviews(self, _cmd) +{ with(self) +{ + var identifier = objj_msgSend(_toolbarItem, "itemIdentifier"); + if (identifier === CPToolbarSpaceItemIdentifier || + identifier === CPToolbarFlexibleSpaceItemIdentifier) + return; + var bounds = objj_msgSend(self, "bounds"), + width = (bounds.size.width); + if (identifier === CPToolbarSeparatorItemIdentifier) + return objj_msgSend(_view, "setFrame:", CGRectMake(ROUND((width - 2.0) / 2.0), 0.0, 2.0, (bounds.size.height))); + var view = _view || _imageView, + itemMaxSize = objj_msgSend(_toolbarItem, "maxSize"), + height = (bounds.size.height) - _labelSize.height - LABEL_MARGIN - TOP_MARGIN, + viewWidth = MIN(itemMaxSize.width, width), + viewHeight = MIN(itemMaxSize.height, height); + objj_msgSend(view, "setFrame:", CGRectMake( ROUND((width - viewWidth) / 2.0), + TOP_MARGIN + ROUND((height - viewHeight) / 2.0), + viewWidth, + viewHeight)); + objj_msgSend(_labelField, "setFrameOrigin:", CGPointMake(ROUND((width - _labelSize.width) / 2.0), TOP_MARGIN + height + LABEL_MARGIN)); +} +},["void"]), new objj_method(sel_getUid("mouseDown:"), function $_CPToolbarItemView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(_toolbarItem, "view")) + return objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDown:", anEvent); + var identifier = objj_msgSend(_toolbarItem, "itemIdentifier"); + if (identifier === CPToolbarSpaceItemIdentifier || + identifier === CPToolbarFlexibleSpaceItemIdentifier || + identifier === CPToolbarSeparatorItemIdentifier) + return objj_msgSend(objj_msgSend(self, "nextResponder"), "mouseDown:", anEvent); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarItemView").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setEnabled:"), function $_CPToolbarItemView__setEnabled_(self, _cmd, shouldBeEnabled) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarItemView").super_class }, "setEnabled:", shouldBeEnabled); + if (shouldBeEnabled) + { + objj_msgSend(_imageView, "setAlphaValue:", 1.0); + objj_msgSend(_labelField, "setAlphaValue:", 1.0); + } + else + { + objj_msgSend(_imageView, "setAlphaValue:", 0.5); + objj_msgSend(_labelField, "setAlphaValue:", 0.5); + } + objj_msgSend(_toolbar, "tile"); +} +},["void","BOOL"]), new objj_method(sel_getUid("FIXME_labelColor"), function $_CPToolbarItemView__FIXME_labelColor(self, _cmd) +{ with(self) +{ + if (_FIXME_isHUD) + return objj_msgSend(CPColor, "whiteColor"); + return objj_msgSend(CPColor, "blackColor"); +} +},["CPColor"]), new objj_method(sel_getUid("FIXME_labelShadowColor"), function $_CPToolbarItemView__FIXME_labelShadowColor(self, _cmd) +{ with(self) +{ + if (_FIXME_isHUD) + return objj_msgSend(self, "isHighlighted") ? objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.5) : objj_msgSend(CPColor, "clearColor"); + return objj_msgSend(self, "isHighlighted") ? objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.0, 0.3) : objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.75); +} +},["CPColor"]), new objj_method(sel_getUid("setHighlighted:"), function $_CPToolbarItemView__setHighlighted_(self, _cmd, shouldBeHighlighted) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPToolbarItemView").super_class }, "setHighlighted:", shouldBeHighlighted); + if (shouldBeHighlighted) + { + var alternateImage = objj_msgSend(_toolbarItem, "alternateImage"); + if (alternateImage) + objj_msgSend(_imageView, "setImage:", alternateImage); + objj_msgSend(_labelField, "setTextShadowOffset:", CGSizeMakeZero()); + } + else + { + var image = objj_msgSend(_toolbarItem, "image"); + if (image) + objj_msgSend(_imageView, "setImage:", image); + objj_msgSend(_labelField, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + } + objj_msgSend(_labelField, "setTextShadowColor:", objj_msgSend(self, "FIXME_labelShadowColor")); +} +},["void","BOOL"]), new objj_method(sel_getUid("sendAction:to:"), function $_CPToolbarItemView__sendAction_to_(self, _cmd, anAction, aSender) +{ with(self) +{ + objj_msgSend(CPApp, "sendAction:to:from:", anAction, aSender, _toolbarItem); +} +},["void","SEL","id"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPToolbarItemView__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, aChange, aContext) +{ with(self) +{ + if (aKeyPath === "enabled") + objj_msgSend(self, "setEnabled:", objj_msgSend(anObject, "isEnabled")); + else if (aKeyPath === "target") + objj_msgSend(self, "setTarget:", objj_msgSend(anObject, "target")); + else if (aKeyPath === "action") + objj_msgSend(self, "setAction:", objj_msgSend(anObject, "action")); + else + objj_msgSend(self, "updateFromItem"); +} +},["void","CPString","id","CPDictionary","id"])]); +} + +p;15;CPToolbarItem.jt;18874;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jI;16;AppKit/CPImage.jI;15;AppKit/CPView.ji;29;_CPToolbarFlexibleSpaceItem.ji;26;_CPToolbarShowColorsItem.ji;25;_CPToolbarSeparatorItem.ji;21;_CPToolbarSpaceItem.jt;18640;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("AppKit/CPImage.j", NO); +objj_executeFile("AppKit/CPView.j", NO); +CPToolbarItemVisibilityPriorityStandard = 0; +CPToolbarItemVisibilityPriorityLow = -1000; +CPToolbarItemVisibilityPriorityHigh = 1000; +CPToolbarItemVisibilityPriorityUser = 2000; +CPToolbarSeparatorItemIdentifier = "CPToolbarSeparatorItem"; +CPToolbarSpaceItemIdentifier = "CPToolbarSpaceItem"; +CPToolbarFlexibleSpaceItemIdentifier = "CPToolbarFlexibleSpaceItem"; +CPToolbarShowColorsItemIdentifier = "CPToolbarShowColorsItem"; +CPToolbarShowFontsItemIdentifier = "CPToolbarShowFontsItem"; +CPToolbarCustomizeToolbarItemIdentifier = "CPToolbarCustomizeToolbarItem"; +CPToolbarPrintItemIdentifier = "CPToolbarPrintItem"; +{var the_class = objj_allocateClassPair(CPObject, "CPToolbarItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_itemIdentifier"), new objj_ivar("_toolbar"), new objj_ivar("_label"), new objj_ivar("_paletteLabel"), new objj_ivar("_toolTip"), new objj_ivar("_tag"), new objj_ivar("_target"), new objj_ivar("_action"), new objj_ivar("_isEnabled"), new objj_ivar("_image"), new objj_ivar("_alternateImage"), new objj_ivar("_view"), new objj_ivar("_minSize"), new objj_ivar("_maxSize"), new objj_ivar("_visibilityPriority"), new objj_ivar("_autovalidates")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPToolbarItem__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithItemIdentifier:", ""); +} +},["id"]), new objj_method(sel_getUid("initWithItemIdentifier:"), function $CPToolbarItem__initWithItemIdentifier_(self, _cmd, anItemIdentifier) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPToolbarItem").super_class }, "init"); + if (self) + { + _itemIdentifier = anItemIdentifier; + _tag = 0; + _isEnabled = YES; + _minSize = CGSizeMakeZero(); + _maxSize = CGSizeMakeZero(); + _visibilityPriority = CPToolbarItemVisibilityPriorityStandard; + _autovalidates = YES; + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("itemIdentifier"), function $CPToolbarItem__itemIdentifier(self, _cmd) +{ with(self) +{ + return _itemIdentifier; +} +},["CPString"]), new objj_method(sel_getUid("toolbar"), function $CPToolbarItem__toolbar(self, _cmd) +{ with(self) +{ + return _toolbar; +} +},["CPToolbar"]), new objj_method(sel_getUid("_setToolbar:"), function $CPToolbarItem___setToolbar_(self, _cmd, aToolbar) +{ with(self) +{ + _toolbar = aToolbar; +} +},["void","CPToolbar"]), new objj_method(sel_getUid("label"), function $CPToolbarItem__label(self, _cmd) +{ with(self) +{ + return _label; +} +},["CPString"]), new objj_method(sel_getUid("setLabel:"), function $CPToolbarItem__setLabel_(self, _cmd, aLabel) +{ with(self) +{ + _label = aLabel; +} +},["void","CPString"]), new objj_method(sel_getUid("paletteLabel"), function $CPToolbarItem__paletteLabel(self, _cmd) +{ with(self) +{ + return _paletteLabel; +} +},["CPString"]), new objj_method(sel_getUid("setPaletteLabel:"), function $CPToolbarItem__setPaletteLabel_(self, _cmd, aPaletteLabel) +{ with(self) +{ + _paletteLabel = aPaletteLabel; +} +},["void","CPString"]), new objj_method(sel_getUid("toolTip"), function $CPToolbarItem__toolTip(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("toolTip"))) + return objj_msgSend(_view, "toolTip"); + return _toolTip; +} +},["CPString"]), new objj_method(sel_getUid("setToolTip:"), function $CPToolbarItem__setToolTip_(self, _cmd, aToolTip) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setToolTip:"))) + objj_msgSend(_view, "setToolTip:", aToolTip); + _toolTip = aToolTip; +} +},["void","CPString"]), new objj_method(sel_getUid("tag"), function $CPToolbarItem__tag(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("tag"))) + return objj_msgSend(_view, "tag"); + return _tag; +} +},["int"]), new objj_method(sel_getUid("setTag:"), function $CPToolbarItem__setTag_(self, _cmd, aTag) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setTag:"))) + objj_msgSend(_view, "setTag:", aTag); + _tag = aTag; +} +},["void","int"]), new objj_method(sel_getUid("target"), function $CPToolbarItem__target(self, _cmd) +{ with(self) +{ + if (_view) + return objj_msgSend(_view, "respondsToSelector:", sel_getUid("target")) ? objj_msgSend(_view, "target") : nil; + return _target; +} +},["id"]), new objj_method(sel_getUid("setTarget:"), function $CPToolbarItem__setTarget_(self, _cmd, aTarget) +{ with(self) +{ + if (!_view) + _target = aTarget; + else if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setTarget:"))) + objj_msgSend(_view, "setTarget:", aTarget); +} +},["void","id"]), new objj_method(sel_getUid("action"), function $CPToolbarItem__action(self, _cmd) +{ with(self) +{ + if (_view) + return objj_msgSend(_view, "respondsToSelector:", sel_getUid("action")) ? objj_msgSend(_view, "action") : nil; + return _action; +} +},["SEL"]), new objj_method(sel_getUid("setAction:"), function $CPToolbarItem__setAction_(self, _cmd, anAction) +{ with(self) +{ + if (!_view) + _action = anAction; + else if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setAction:"))) + objj_msgSend(_view, "setAction:", anAction); +} +},["void","SEL"]), new objj_method(sel_getUid("isEnabled"), function $CPToolbarItem__isEnabled(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("isEnabled"))) + return objj_msgSend(_view, "isEnabled"); + return _isEnabled; +} +},["BOOL"]), new objj_method(sel_getUid("setEnabled:"), function $CPToolbarItem__setEnabled_(self, _cmd, shouldBeEnabled) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setEnabled:"))) + objj_msgSend(_view, "setEnabled:", shouldBeEnabled); + _isEnabled = shouldBeEnabled; +} +},["void","BOOL"]), new objj_method(sel_getUid("image"), function $CPToolbarItem__image(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("image"))) + return objj_msgSend(_view, "image"); + return _image; +} +},["CPImage"]), new objj_method(sel_getUid("setImage:"), function $CPToolbarItem__setImage_(self, _cmd, anImage) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setImage:"))) + objj_msgSend(_view, "setImage:", anImage); + _image = anImage; + if (!_image) + return; + if (_minSize.width === 0 && _minSize.height === 0 && + _maxSize.width === 0 && _maxSize.height === 0) + { + var imageSize = objj_msgSend(_image, "size"); + if (imageSize.width > 0 || imageSize.height > 0) + { + objj_msgSend(self, "setMinSize:", imageSize); + objj_msgSend(self, "setMaxSize:", imageSize); + } + } +} +},["void","CPImage"]), new objj_method(sel_getUid("setAlternateImage:"), function $CPToolbarItem__setAlternateImage_(self, _cmd, anImage) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setAlternateImage:"))) + objj_msgSend(_view, "setAlternateImage:", anImage); + _alternateImage = anImage; +} +},["void","CPImage"]), new objj_method(sel_getUid("alternateImage"), function $CPToolbarItem__alternateImage(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("alternateIamge"))) + return objj_msgSend(_view, "alternateImage"); + return _alternateImage; +} +},["CPImage"]), new objj_method(sel_getUid("view"), function $CPToolbarItem__view(self, _cmd) +{ with(self) +{ + return _view; +} +},["CPView"]), new objj_method(sel_getUid("setView:"), function $CPToolbarItem__setView_(self, _cmd, aView) +{ with(self) +{ + if (_view == aView) + return; + _view = aView; + if (_view) + { + if (_tag !== 0 && objj_msgSend(_view, "respondsToSelector:", sel_getUid("setTag:"))) + objj_msgSend(_view, "setTag:", _tag); + _target = nil; + _action = nil; + } +} +},["void","CPView"]), new objj_method(sel_getUid("minSize"), function $CPToolbarItem__minSize(self, _cmd) +{ with(self) +{ + return _minSize; +} +},["CGSize"]), new objj_method(sel_getUid("setMinSize:"), function $CPToolbarItem__setMinSize_(self, _cmd, aMinSize) +{ with(self) +{ + if(!aMinSize.height || !aMinSize.width) + return; + _minSize = CGSizeMakeCopy(aMinSize); + _maxSize = CGSizeMake(MAX(_minSize.width, _maxSize.width), MAX(_minSize.height, _maxSize.height)); +} +},["void","CGSize"]), new objj_method(sel_getUid("maxSize"), function $CPToolbarItem__maxSize(self, _cmd) +{ with(self) +{ + return _maxSize; +} +},["CGSize"]), new objj_method(sel_getUid("setMaxSize:"), function $CPToolbarItem__setMaxSize_(self, _cmd, aMaxSize) +{ with(self) +{ + if(!aMaxSize.height || !aMaxSize.width) + return; + _maxSize = CGSizeMakeCopy(aMaxSize); + _minSize = CGSizeMake(MIN(_minSize.width, _maxSize.width), MIN(_minSize.height, _maxSize.height)); +} +},["void","CGSize"]), new objj_method(sel_getUid("visibilityPriority"), function $CPToolbarItem__visibilityPriority(self, _cmd) +{ with(self) +{ + return _visibilityPriority; +} +},["int"]), new objj_method(sel_getUid("setVisibilityPriority:"), function $CPToolbarItem__setVisibilityPriority_(self, _cmd, aVisibilityPriority) +{ with(self) +{ + _visibilityPriority = aVisibilityPriority; +} +},["void","int"]), new objj_method(sel_getUid("validate"), function $CPToolbarItem__validate(self, _cmd) +{ with(self) +{ + var action = objj_msgSend(self, "action"), + target = objj_msgSend(self, "target"); + if (_view) + { + if (objj_msgSend(target, "respondsToSelector:", sel_getUid("validateToolbarItem:"))) + objj_msgSend(self, "setEnabled:", objj_msgSend(target, "validateToolbarItem:", self)); + return; + } + if (!action) + return objj_msgSend(self, "setEnabled:", NO); + if (target && !objj_msgSend(target, "respondsToSelector:", action)) + return objj_msgSend(self, "setEnabled:", NO); + target = objj_msgSend(CPApp, "targetForAction:to:from:", action, target, self); + if (!target) + return objj_msgSend(self, "setEnabled:", NO); + if (objj_msgSend(target, "respondsToSelector:", sel_getUid("validateToolbarItem:"))) + objj_msgSend(self, "setEnabled:", objj_msgSend(target, "validateToolbarItem:", self)); + else + objj_msgSend(self, "setEnabled:", YES); +} +},["void"]), new objj_method(sel_getUid("autovalidates"), function $CPToolbarItem__autovalidates(self, _cmd) +{ with(self) +{ + return _autovalidates; +} +},["BOOL"]), new objj_method(sel_getUid("setAutovalidates:"), function $CPToolbarItem__setAutovalidates_(self, _cmd, shouldAutovalidate) +{ with(self) +{ + _autovalidates = !!shouldAutovalidate; +} +},["void","BOOL"])]); +} +var CPToolbarItemItemIdentifierKey = "CPToolbarItemItemIdentifierKey", + CPToolbarItemLabelKey = "CPToolbarItemLabelKey", + CPToolbarItemPaletteLabelKey = "CPToolbarItemPaletteLabelKey", + CPToolbarItemToolTipKey = "CPToolbarItemToolTipKey", + CPToolbarItemTagKey = "CPToolbarItemTagKey", + CPToolbarItemTargetKey = "CPToolbarItemTargetKey", + CPToolbarItemActionKey = "CPToolbarItemActionKey", + CPToolbarItemEnabledKey = "CPToolbarItemEnabledKey", + CPToolbarItemImageKey = "CPToolbarItemImageKey", + CPToolbarItemAlternateImageKey = "CPToolbarItemAlternateImageKey", + CPToolbarItemViewKey = "CPToolbarItemViewKey", + CPToolbarItemMinSizeKey = "CPToolbarItemMinSizeKey", + CPToolbarItemMaxSizeKey = "CPToolbarItemMaxSizeKey", + CPToolbarItemVisibilityPriorityKey = "CPToolbarItemVisibilityPriorityKey", + CPToolbarItemAutovalidatesKey = "CPToolbarItemAutovalidatesKey"; +{ +var the_class = objj_getClass("CPToolbarItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPToolbarItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPToolbarItem").super_class }, "init"); + if (self) + { + _itemIdentifier = objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemItemIdentifierKey); + _minSize = objj_msgSend(aCoder, "decodeSizeForKey:", CPToolbarItemMinSizeKey); + _maxSize = objj_msgSend(aCoder, "decodeSizeForKey:", CPToolbarItemMaxSizeKey); + objj_msgSend(self, "setLabel:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemLabelKey)); + objj_msgSend(self, "setPaletteLabel:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemPaletteLabelKey)); + objj_msgSend(self, "setToolTip:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemToolTipKey)); + objj_msgSend(self, "setTag:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemTagKey)); + objj_msgSend(self, "setTarget:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemTargetKey)); + objj_msgSend(self, "setAction:", CPSelectorFromString(objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemActionKey))); + objj_msgSend(self, "setEnabled:", objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarItemEnabledKey)); + objj_msgSend(self, "setImage:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemImageKey)); + objj_msgSend(self, "setAlternateImage:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemAlternateImageKey)); + objj_msgSend(self, "setView:", objj_msgSend(aCoder, "decodeObjectForKey:", CPToolbarItemViewKey)); + objj_msgSend(self, "setVisibilityPriority:", objj_msgSend(aCoder, "decodeIntForKey:", CPToolbarItemVisibilityPriorityKey)); + objj_msgSend(self, "setAutovalidates:", objj_msgSend(aCoder, "decodeBoolForKey:", CPToolbarItemAutovalidatesKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPToolbarItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _itemIdentifier, CPToolbarItemItemIdentifierKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "label"), CPToolbarItemLabelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "paletteLabel"), CPToolbarItemPaletteLabelKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "toolTip"), CPToolbarItemToolTipKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "tag"), CPToolbarItemTagKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "target"), CPToolbarItemTargetKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "action"), CPToolbarItemActionKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "isEnabled"), CPToolbarItemEnabledKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "image"), CPToolbarItemImageKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "alternateImage"), CPToolbarItemAlternateImageKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "view"), CPToolbarItemViewKey); + objj_msgSend(aCoder, "encodeSize:forKey:", objj_msgSend(self, "minSize"), CPToolbarItemMinSizeKey); + objj_msgSend(aCoder, "encodeSize:forKey:", objj_msgSend(self, "maxSize"), CPToolbarItemMaxSizeKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "visibilityPriority"), CPToolbarItemVisibilityPriorityKey); + objj_msgSend(aCoder, "encodeBool:forKey:", objj_msgSend(self, "autovalidates"), CPToolbarItemAutovalidatesKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPToolbarItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("copy"), function $CPToolbarItem__copy(self, _cmd) +{ with(self) +{ + var copy = objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "initWithItemIdentifier:", _itemIdentifier); + if (_view) + objj_msgSend(copy, "setView:", objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", _view))); + objj_msgSend(copy, "_setToolbar:", _toolbar); + objj_msgSend(copy, "setLabel:", _label); + objj_msgSend(copy, "setPaletteLabel:", _paletteLabel); + objj_msgSend(copy, "setToolTip:", objj_msgSend(self, "toolTip")); + objj_msgSend(copy, "setTag:", objj_msgSend(self, "tag")); + objj_msgSend(copy, "setTarget:", objj_msgSend(self, "target")); + objj_msgSend(copy, "setAction:", objj_msgSend(self, "action")); + objj_msgSend(copy, "setEnabled:", objj_msgSend(self, "isEnabled")); + objj_msgSend(copy, "setImage:", objj_msgSend(self, "image")); + objj_msgSend(copy, "setAlternateImage:", objj_msgSend(self, "alternateImage")); + objj_msgSend(copy, "setMinSize:", _minSize); + objj_msgSend(copy, "setMaxSize:", _maxSize); + objj_msgSend(copy, "setVisibilityPriority:", objj_msgSend(self, "visibilityPriority")); + objj_msgSend(copy, "setAutovalidates:", objj_msgSend(self, "autovalidates")); + return copy; +} +},["id"])]); +} +{ +var the_class = objj_getClass("CPToolbarItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPToolbarItem\""); +var meta_class = the_class.isa;class_addMethods(meta_class, [new objj_method(sel_getUid("_standardItemWithItemIdentifier:"), function $CPToolbarItem___standardItemWithItemIdentifier_(self, _cmd, anItemIdentifier) +{ with(self) +{ + switch (anItemIdentifier) + { + case CPToolbarSeparatorItemIdentifier: return objj_msgSend(_CPToolbarSeparatorItem, "new"); + case CPToolbarSpaceItemIdentifier: return objj_msgSend(_CPToolbarSpaceItem, "new"); + case CPToolbarFlexibleSpaceItemIdentifier: return objj_msgSend(_CPToolbarFlexibleSpaceItem, "new"); + case CPToolbarShowColorsItemIdentifier: return objj_msgSend(_CPToolbarShowColorsItem, "new"); + case CPToolbarShowFontsItemIdentifier: return nil; + case CPToolbarCustomizeToolbarItemIdentifier: return nil; + case CPToolbarPrintItemIdentifier: return nil; + } + return nil; +} +},["CPToolbarItem","CPString"])]); +} +objj_executeFile("_CPToolbarFlexibleSpaceItem.j", YES); +objj_executeFile("_CPToolbarShowColorsItem.j", YES); +objj_executeFile("_CPToolbarSeparatorItem.j", YES); +objj_executeFile("_CPToolbarSpaceItem.j", YES); + +p;12;CPTreeNode.jt;5250;@STATIC;1.0;I;21;Foundation/CPObject.jt;5205; + + +objj_executeFile("Foundation/CPObject.j", NO); + + +{var the_class = objj_allocateClassPair(CPObject, "CPTreeNode"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_representedObject"), new objj_ivar("_parentNode"), new objj_ivar("_childNodes")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("representedObject"), function $CPTreeNode__representedObject(self, _cmd) +{ with(self) +{ +return _representedObject; +} +},["id"]), +new objj_method(sel_getUid("parentNode"), function $CPTreeNode__parentNode(self, _cmd) +{ with(self) +{ +return _parentNode; +} +},["id"]), new objj_method(sel_getUid("initWithRepresentedObject:"), function $CPTreeNode__initWithRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTreeNode").super_class }, "init"); + + if (self) + { + _representedObject = anObject; + _childNodes = []; + } + + return self; +} +},["id","id"]), new objj_method(sel_getUid("isLeaf"), function $CPTreeNode__isLeaf(self, _cmd) +{ with(self) +{ + return objj_msgSend(_childNodes, "count") <= 0; +} +},["BOOL"]), new objj_method(sel_getUid("childNodes"), function $CPTreeNode__childNodes(self, _cmd) +{ with(self) +{ + return objj_msgSend(_childNodes, "copy"); +} +},["CPArray"]), new objj_method(sel_getUid("mutableChildNodes"), function $CPTreeNode__mutableChildNodes(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "mutableArrayValueForKey:", "childNodes"); +} +},["CPMutableArray"]), new objj_method(sel_getUid("insertObject:inChildNodesAtIndex:"), function $CPTreeNode__insertObject_inChildNodesAtIndex_(self, _cmd, aTreeNode, anIndex) +{ with(self) +{ + objj_msgSend(objj_msgSend(aTreeNode._parentNode, "mutableChildNodes"), "removeObjectIdenticalTo:", aTreeNode); + + aTreeNode._parentNode = self; + + objj_msgSend(_childNodes, "insertObject:atIndex:", aTreeNode, anIndex); +} +},["void","id","CPInteger"]), new objj_method(sel_getUid("removeObjectFromChildNodesAtIndex:"), function $CPTreeNode__removeObjectFromChildNodesAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(_childNodes, "objectAtIndex:", anIndex)._parentNode = nil; + + objj_msgSend(_childNodes, "removeObjectAtIndex:", anIndex); +} +},["void","CPInteger"]), new objj_method(sel_getUid("replaceObjectFromChildNodesAtIndex:withObject:"), function $CPTreeNode__replaceObjectFromChildNodesAtIndex_withObject_(self, _cmd, anIndex, aTreeNode) +{ with(self) +{ + var oldTreeNode = objj_msgSend(_childNodes, "objectAtIndex:", anIndex); + + oldTreeNode._parentNode = nil; + aTreeNode._parentNode = self; + + objj_msgSend(_childNodes, "replaceObjectAtIndex:withObject:", anIndex, aTreeNode); +} +},["void","CPInteger","id"]), new objj_method(sel_getUid("objectInChildNodesAtIndex:"), function $CPTreeNode__objectInChildNodesAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return _childNodes[anIndex]; +} +},["id","CPInteger"]), new objj_method(sel_getUid("sortWithSortDescriptors:recursively:"), function $CPTreeNode__sortWithSortDescriptors_recursively_(self, _cmd, sortDescriptors, shouldSortRecursively) +{ with(self) +{ + objj_msgSend(_childNodes, "sortUsingDescriptors:", sortDescriptors); + + if (!shouldSortRecursively) + return; + + var count = objj_msgSend(_childNodes, "count"); + + while (count--) + objj_msgSend(_childNodes[count], "sortWithSortDescriptors:recursively:", sortDescriptors, YES); +} +},["void","CPArray","BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("treeNodeWithRepresentedObject:"), function $CPTreeNode__treeNodeWithRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithRepresentedObject:", anObject); +} +},["id","id"])]); +} + +var CPTreeNodeRepresentedObjectKey = "CPTreeNodeRepresentedObjectKey", + CPTreeNodeParentNodeKey = "CPTreeNodeParentNodeKey", + CPTreeNodeChildNodesKey = "CPTreeNodeChildNodesKey"; + +{ +var the_class = objj_getClass("CPTreeNode") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPTreeNode\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPTreeNode__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTreeNode").super_class }, "init"); + + if (self) + { + _representedObject = objj_msgSend(aCoder, "decodeObjectForKey:", CPTreeNodeRepresentedObjectKey); + _parentNode = objj_msgSend(aCoder, "decodeObjectForKey:", CPTreeNodeParentNodeKey); + _childNodes = objj_msgSend(aCoder, "decodeObjectForKey:", CPTreeNodeChildNodesKey); + } + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPTreeNode__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _representedObject, CPTreeNodeRepresentedObjectKey); + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _parentNode, CPTreeNodeParentNodeKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _childNodes, CPTreeNodeChildNodesKey); +} +},["void","CPCoder"])]); +} + +p;8;CPView.jt;68146;@STATIC;1.0;I;20;Foundation/CPArray.jI;26;Foundation/CPObjJRuntime.ji;19;CGAffineTransform.ji;12;CGGeometry.ji;9;CPColor.ji;12;CPGeometry.ji;19;CPGraphicsContext.ji;13;CPResponder.ji;9;CPTheme.ji;18;_CPDisplayServer.jt;67921;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPObjJRuntime.j", NO); +objj_executeFile("CGAffineTransform.j", YES); +objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPColor.j", YES); +objj_executeFile("CPGeometry.j", YES); +objj_executeFile("CPGraphicsContext.j", YES); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPTheme.j", YES); +objj_executeFile("_CPDisplayServer.j", YES); +CPViewNotSizable = 0; +CPViewMinXMargin = 1; +CPViewWidthSizable = 2; +CPViewMaxXMargin = 4; +CPViewMinYMargin = 8; +CPViewHeightSizable = 16; +CPViewMaxYMargin = 32; +CPViewBoundsDidChangeNotification = "CPViewBoundsDidChangeNotification"; +CPViewFrameDidChangeNotification = "CPViewFrameDidChangeNotification"; +var CachedNotificationCenter = nil, + CachedThemeAttributes = nil; +var CPViewFlags = { }, + CPViewHasCustomDrawRect = 1 << 0, + CPViewHasCustomLayoutSubviews = 1 << 1; +{var the_class = objj_allocateClassPair(CPResponder, "CPView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window"), new objj_ivar("_superview"), new objj_ivar("_subviews"), new objj_ivar("_graphicsContext"), new objj_ivar("_tag"), new objj_ivar("_frame"), new objj_ivar("_bounds"), new objj_ivar("_boundsTransform"), new objj_ivar("_inverseBoundsTransform"), new objj_ivar("_registeredDraggedTypes"), new objj_ivar("_registeredDraggedTypesArray"), new objj_ivar("_isHidden"), new objj_ivar("_hitTests"), new objj_ivar("_clipsToBounds"), new objj_ivar("_postsFrameChangedNotifications"), new objj_ivar("_postsBoundsChangedNotifications"), new objj_ivar("_inhibitFrameAndBoundsChangedNotifications"), new objj_ivar("_dirtyRect"), new objj_ivar("_opacity"), new objj_ivar("_backgroundColor"), new objj_ivar("_autoresizesSubviews"), new objj_ivar("_autoresizingMask"), new objj_ivar("_layer"), new objj_ivar("_wantsLayer"), new objj_ivar("_isInFullScreenMode"), new objj_ivar("_fullScreenModeState"), new objj_ivar("_needsLayout"), new objj_ivar("_ephemeralSubviews"), new objj_ivar("_theme"), new objj_ivar("_themeAttributes"), new objj_ivar("_themeState"), new objj_ivar("_ephemeralSubviewsForNames"), new objj_ivar("_ephereralSubviews"), new objj_ivar("_nextKeyView"), new objj_ivar("_previousKeyView"), new objj_ivar("_viewClassFlags")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setupViewFlags"), function $CPView__setupViewFlags(self, _cmd) +{ with(self) +{ + var theClass = objj_msgSend(self, "class"), + classUID = objj_msgSend(theClass, "UID"); + if (CPViewFlags[classUID] === undefined) + { + var flags = 0; + if (objj_msgSend(theClass, "instanceMethodForSelector:", sel_getUid("drawRect:")) !== objj_msgSend(CPView, "instanceMethodForSelector:", sel_getUid("drawRect:"))) + flags |= CPViewHasCustomDrawRect; + if (objj_msgSend(theClass, "instanceMethodForSelector:", sel_getUid("layoutSubviews")) !== objj_msgSend(CPView, "instanceMethodForSelector:", sel_getUid("layoutSubviews"))) + flags |= CPViewHasCustomLayoutSubviews; + CPViewFlags[classUID] = flags; + } + _viewClassFlags = CPViewFlags[classUID]; +} +},["void"]), new objj_method(sel_getUid("init"), function $CPView__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithFrame:", CGRectMakeZero()); +} +},["id"]), new objj_method(sel_getUid("initWithFrame:"), function $CPView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "init"); + if (self) + { + var width = (aFrame.size.width), + height = (aFrame.size.height); + _subviews = []; + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; + _tag = -1; + _frame = { origin: { x:aFrame.origin.x, y:aFrame.origin.y }, size: { width:aFrame.size.width, height:aFrame.size.height } }; + _bounds = { origin: { x:0.0, y:0.0 }, size: { width:width, height:height } }; + _autoresizingMask = CPViewNotSizable; + _autoresizesSubviews = YES; + _clipsToBounds = YES; + _opacity = 1.0; + _isHidden = NO; + _hitTests = YES; + _theme = objj_msgSend(CPTheme, "defaultTheme"); + _themeState = CPThemeStateNormal; + objj_msgSend(self, "setupViewFlags"); + objj_msgSend(self, "_loadThemeAttributes"); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("superview"), function $CPView__superview(self, _cmd) +{ with(self) +{ + return _superview; +} +},["CPView"]), new objj_method(sel_getUid("subviews"), function $CPView__subviews(self, _cmd) +{ with(self) +{ + return objj_msgSend(_subviews, "copy"); +} +},["CPArray"]), new objj_method(sel_getUid("window"), function $CPView__window(self, _cmd) +{ with(self) +{ + return _window; +} +},["CPWindow"]), new objj_method(sel_getUid("addSubview:"), function $CPView__addSubview_(self, _cmd, aSubview) +{ with(self) +{ + objj_msgSend(self, "_insertSubview:atIndex:", aSubview, CPNotFound); +} +},["void","CPView"]), new objj_method(sel_getUid("addSubview:positioned:relativeTo:"), function $CPView__addSubview_positioned_relativeTo_(self, _cmd, aSubview, anOrderingMode, anotherView) +{ with(self) +{ + var index = anotherView ? objj_msgSend(_subviews, "indexOfObjectIdenticalTo:", anotherView) : CPNotFound; + if (index === CPNotFound) + index = (anOrderingMode === CPWindowAbove) ? objj_msgSend(_subviews, "count") : 0; + else if (anOrderingMode === CPWindowAbove) + ++index; + objj_msgSend(self, "_insertSubview:atIndex:", aSubview, index); +} +},["void","CPView","CPWindowOrderingMode","CPView"]), new objj_method(sel_getUid("_insertSubview:atIndex:"), function $CPView___insertSubview_atIndex_(self, _cmd, aSubview, anIndex) +{ with(self) +{ + var count = _subviews.length; + objj_msgSend(objj_msgSend(self, "window"), "_dirtyKeyViewLoop"); + if (aSubview._superview == self) + { + var index = objj_msgSend(_subviews, "indexOfObjectIdenticalTo:", aSubview); + if (index === anIndex || index === count - 1 && anIndex === count) + return; + objj_msgSend(_subviews, "removeObjectAtIndex:", index); + if (anIndex > index) + --anIndex; + --count; + } + else + { + objj_msgSend(aSubview, "removeFromSuperview"); + objj_msgSend(aSubview, "_setWindow:", _window); + objj_msgSend(aSubview, "viewWillMoveToSuperview:", self); + aSubview._superview = self; + } + if (anIndex === CPNotFound || anIndex >= count) + { + _subviews.push(aSubview); + } + else + { + _subviews.splice(anIndex, 0, aSubview); + } + objj_msgSend(aSubview, "setNextResponder:", self); + objj_msgSend(aSubview, "viewDidMoveToSuperview"); + objj_msgSend(self, "didAddSubview:", aSubview); +} +},["void","CPView","int"]), new objj_method(sel_getUid("didAddSubview:"), function $CPView__didAddSubview_(self, _cmd, aSubview) +{ with(self) +{ +} +},["void","CPView"]), new objj_method(sel_getUid("removeFromSuperview"), function $CPView__removeFromSuperview(self, _cmd) +{ with(self) +{ + if (!_superview) + return; + objj_msgSend(objj_msgSend(self, "window"), "_dirtyKeyViewLoop"); + objj_msgSend(_superview, "willRemoveSubview:", self); + objj_msgSend(_superview._subviews, "removeObject:", self); + _superview = nil; + objj_msgSend(self, "_setWindow:", nil); +} +},["void"]), new objj_method(sel_getUid("replaceSubview:with:"), function $CPView__replaceSubview_with_(self, _cmd, aSubview, aView) +{ with(self) +{ + if (aSubview._superview != self) + return; + var index = objj_msgSend(_subviews, "indexOfObjectIdenticalTo:", aSubview); + objj_msgSend(aSubview, "removeFromSuperview"); + objj_msgSend(self, "_insertSubview:atIndex:", aView, index); +} +},["void","CPView","CPView"]), new objj_method(sel_getUid("setSubviews:"), function $CPView__setSubviews_(self, _cmd, newSubviews) +{ with(self) +{ + if (!newSubviews) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "newSubviews cannot be nil in -[CPView setSubviews:]"); + if (objj_msgSend(_subviews, "isEqual:", newSubviews)) + return; + if (objj_msgSend(_subviews, "count") === 0) + { + var index = 0, + count = objj_msgSend(newSubviews, "count"); + for (; index < count; ++index) + objj_msgSend(self, "addSubview:", newSubviews[index]); + return; + } + if (objj_msgSend(newSubviews, "count") === 0) + { + var count = objj_msgSend(_subviews, "count"); + while (count--) + objj_msgSend(_subviews[count], "removeFromSuperview"); + return; + } + var removedSubviews = objj_msgSend(CPMutableSet, "setWithArray:", _subviews); + objj_msgSend(removedSubviews, "removeObjectsInArray:", newSubviews); + objj_msgSend(removedSubviews, "makeObjectsPerformSelector:", sel_getUid("removeFromSuperview")); + var addedSubviews = objj_msgSend(CPMutableSet, "setWithArray:", newSubviews); + objj_msgSend(addedSubviews, "removeObjectsInArray:", _subviews); + var addedSubview = nil, + addedSubviewEnumerator = objj_msgSend(addedSubviews, "objectEnumerator"); + while (addedSubview = objj_msgSend(addedSubviewEnumerator, "nextObject")) + objj_msgSend(self, "addSubview:", addedSubview); + if (objj_msgSend(_subviews, "isEqual:", newSubviews)) + return; + _subviews = objj_msgSend(newSubviews, "copy"); +} +},["void","CPArray"]), new objj_method(sel_getUid("_setWindow:"), function $CPView___setWindow_(self, _cmd, aWindow) +{ with(self) +{ + if (_window === aWindow) + return; + objj_msgSend(objj_msgSend(self, "window"), "_dirtyKeyViewLoop"); + if (objj_msgSend(_window, "firstResponder") === self) + objj_msgSend(_window, "makeFirstResponder:", nil); + objj_msgSend(self, "viewWillMoveToWindow:", aWindow); + if (_registeredDraggedTypes) + { + objj_msgSend(_window, "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + objj_msgSend(aWindow, "_noteRegisteredDraggedTypes:", _registeredDraggedTypes); + } + _window = aWindow; + var count = objj_msgSend(_subviews, "count"); + while (count--) + objj_msgSend(_subviews[count], "_setWindow:", aWindow); + objj_msgSend(self, "viewDidMoveToWindow"); + objj_msgSend(objj_msgSend(self, "window"), "_dirtyKeyViewLoop"); +} +},["void","CPWindow"]), new objj_method(sel_getUid("isDescendantOf:"), function $CPView__isDescendantOf_(self, _cmd, aView) +{ with(self) +{ + var view = self; + do + { + if (view == aView) + return YES; + } while(view = objj_msgSend(view, "superview")) + return NO; +} +},["BOOL","CPView"]), new objj_method(sel_getUid("viewDidMoveToSuperview"), function $CPView__viewDidMoveToSuperview(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $CPView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("viewWillMoveToSuperview:"), function $CPView__viewWillMoveToSuperview_(self, _cmd, aView) +{ with(self) +{ +} +},["void","CPView"]), new objj_method(sel_getUid("viewWillMoveToWindow:"), function $CPView__viewWillMoveToWindow_(self, _cmd, aWindow) +{ with(self) +{ +} +},["void","CPWindow"]), new objj_method(sel_getUid("willRemoveSubview:"), function $CPView__willRemoveSubview_(self, _cmd, aView) +{ with(self) +{ +} +},["void","CPView"]), new objj_method(sel_getUid("enclosingMenuItem"), function $CPView__enclosingMenuItem(self, _cmd) +{ with(self) +{ + var view = self; + while (view && !objj_msgSend(view, "isKindOfClass:", objj_msgSend(_CPMenuItemView, "class"))) + view = objj_msgSend(view, "superview"); + if (view) + return view._menuItem; + return nil; +} +},["CPMenuItem"]), new objj_method(sel_getUid("setTag:"), function $CPView__setTag_(self, _cmd, aTag) +{ with(self) +{ + _tag = aTag; +} +},["void","CPInteger"]), new objj_method(sel_getUid("tag"), function $CPView__tag(self, _cmd) +{ with(self) +{ + return _tag; +} +},["CPInteger"]), new objj_method(sel_getUid("viewWithTag:"), function $CPView__viewWithTag_(self, _cmd, aTag) +{ with(self) +{ + if (objj_msgSend(self, "tag") == aTag) + return self; + var index = 0, + count = _subviews.length; + for (; index < count; ++index) + { + var view = objj_msgSend(_subviews[index], "viewWithTag:", aTag); + if (view) + return view; + } + return nil; +} +},["CPView","CPInteger"]), new objj_method(sel_getUid("isFlipped"), function $CPView__isFlipped(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("setFrame:"), function $CPView__setFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (((_frame.origin.x == aFrame.origin.x && _frame.origin.y == aFrame.origin.y) && (_frame.size.width == aFrame.size.width && _frame.size.height == aFrame.size.height))) + return; + _inhibitFrameAndBoundsChangedNotifications = YES; + objj_msgSend(self, "setFrameOrigin:", aFrame.origin); + objj_msgSend(self, "setFrameSize:", aFrame.size); + _inhibitFrameAndBoundsChangedNotifications = NO; + if (_postsFrameChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewFrameDidChangeNotification, self); +} +},["void","CGRect"]), new objj_method(sel_getUid("frame"), function $CPView__frame(self, _cmd) +{ with(self) +{ + return { origin: { x:_frame.origin.x, y:_frame.origin.y }, size: { width:_frame.size.width, height:_frame.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("frameOrigin"), function $CPView__frameOrigin(self, _cmd) +{ with(self) +{ + return { x:_frame.origin.x, y:_frame.origin.y }; +} +},["CGPoint"]), new objj_method(sel_getUid("frameSize"), function $CPView__frameSize(self, _cmd) +{ with(self) +{ + return { width:_frame.size.width, height:_frame.size.height }; +} +},["CGSize"]), new objj_method(sel_getUid("setCenter:"), function $CPView__setCenter_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSend(self, "setFrameOrigin:", CGPointMake(aPoint.x - _frame.size.width / 2.0, aPoint.y - _frame.size.height / 2.0)); +} +},["void","CGPoint"]), new objj_method(sel_getUid("center"), function $CPView__center(self, _cmd) +{ with(self) +{ + return CGPointMake(_frame.size.width / 2.0 + _frame.origin.x, _frame.size.height / 2.0 + _frame.origin.y); +} +},["CGPoint"]), new objj_method(sel_getUid("setFrameOrigin:"), function $CPView__setFrameOrigin_(self, _cmd, aPoint) +{ with(self) +{ + var origin = _frame.origin; + if (!aPoint || (origin.x == aPoint.x && origin.y == aPoint.y)) + return; + origin.x = aPoint.x; + origin.y = aPoint.y; + if (_postsFrameChangedNotifications && !_inhibitFrameAndBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewFrameDidChangeNotification, self); +} +},["void","CGPoint"]), new objj_method(sel_getUid("setFrameSize:"), function $CPView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + var size = _frame.size; + if (!aSize || (size.width == aSize.width && size.height == aSize.height)) + return; + var oldSize = { width:size.width, height:size.height }; + size.width = aSize.width; + size.height = aSize.height; + if (YES) + { + _bounds.size.width = aSize.width; + _bounds.size.height = aSize.height; + } + if (_layer) + objj_msgSend(_layer, "_owningViewBoundsChanged"); + if (_autoresizesSubviews) + objj_msgSend(self, "resizeSubviewsWithOldSize:", oldSize); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + if (_postsFrameChangedNotifications && !_inhibitFrameAndBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewFrameDidChangeNotification, self); +} +},["void","CGSize"]), new objj_method(sel_getUid("setBounds:"), function $CPView__setBounds_(self, _cmd, bounds) +{ with(self) +{ + if (((_bounds.origin.x == bounds.origin.x && _bounds.origin.y == bounds.origin.y) && (_bounds.size.width == bounds.size.width && _bounds.size.height == bounds.size.height))) + return; + _inhibitFrameAndBoundsChangedNotifications = YES; + objj_msgSend(self, "setBoundsOrigin:", bounds.origin); + objj_msgSend(self, "setBoundsSize:", bounds.size); + _inhibitFrameAndBoundsChangedNotifications = NO; + if (_postsBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewBoundsDidChangeNotification, self); +} +},["void","CGRect"]), new objj_method(sel_getUid("bounds"), function $CPView__bounds(self, _cmd) +{ with(self) +{ + return { origin: { x:_bounds.origin.x, y:_bounds.origin.y }, size: { width:_bounds.size.width, height:_bounds.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("boundsOrigin"), function $CPView__boundsOrigin(self, _cmd) +{ with(self) +{ + return { x:_bounds.origin.x, y:_bounds.origin.y }; +} +},["CGPoint"]), new objj_method(sel_getUid("boundsSize"), function $CPView__boundsSize(self, _cmd) +{ with(self) +{ + return { width:_bounds.size.width, height:_bounds.size.height }; +} +},["CGSize"]), new objj_method(sel_getUid("setBoundsOrigin:"), function $CPView__setBoundsOrigin_(self, _cmd, aPoint) +{ with(self) +{ + var origin = _bounds.origin; + if ((origin.x == aPoint.x && origin.y == aPoint.y)) + return; + origin.x = aPoint.x; + origin.y = aPoint.y; + if (origin.x != 0 || origin.y != 0) + { + _boundsTransform = { a:1.0, b:0.0, c:0.0, d:1.0, tx:-origin.x, ty:-origin.y }; + _inverseBoundsTransform = CGAffineTransformInvert(_boundsTransform); + } + else + { + _boundsTransform = nil; + _inverseBoundsTransform = nil; + } + if (_postsBoundsChangedNotifications && !_inhibitFrameAndBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewBoundsDidChangeNotification, self); +} +},["void","CGPoint"]), new objj_method(sel_getUid("setBoundsSize:"), function $CPView__setBoundsSize_(self, _cmd, aSize) +{ with(self) +{ + var size = _bounds.size; + if ((size.width == aSize.width && size.height == aSize.height)) + return; + var frameSize = _frame.size; + if (!(size.width == frameSize.width && size.height == frameSize.height)) + { + var origin = _bounds.origin; + origin.x /= size.width / frameSize.width; + origin.y /= size.height / frameSize.height; + } + size.width = aSize.width; + size.height = aSize.height; + if (!(size.width == frameSize.width && size.height == frameSize.height)) + { + var origin = _bounds.origin; + origin.x *= size.width / frameSize.width; + origin.y *= size.height / frameSize.height; + } + if (_postsBoundsChangedNotifications && !_inhibitFrameAndBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewBoundsDidChangeNotification, self); +} +},["void","CGSize"]), new objj_method(sel_getUid("resizeWithOldSuperviewSize:"), function $CPView__resizeWithOldSuperviewSize_(self, _cmd, aSize) +{ with(self) +{ + var mask = objj_msgSend(self, "autoresizingMask"); + if(mask == CPViewNotSizable) + return; + var frame = _superview._frame, + newFrame = { origin: { x:_frame.origin.x, y:_frame.origin.y }, size: { width:_frame.size.width, height:_frame.size.height } }, + dX = ((frame.size.width) - aSize.width) / + (((mask & CPViewMinXMargin) ? 1 : 0) + (mask & CPViewWidthSizable ? 1 : 0) + (mask & CPViewMaxXMargin ? 1 : 0)), + dY = ((frame.size.height) - aSize.height) / + ((mask & CPViewMinYMargin ? 1 : 0) + (mask & CPViewHeightSizable ? 1 : 0) + (mask & CPViewMaxYMargin ? 1 : 0)); + if (mask & CPViewMinXMargin) + newFrame.origin.x += dX; + if (mask & CPViewWidthSizable) + newFrame.size.width += dX; + if (mask & CPViewMinYMargin) + newFrame.origin.y += dY; + if (mask & CPViewHeightSizable) + newFrame.size.height += dY; + objj_msgSend(self, "setFrame:", newFrame); +} +},["void","CGSize"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $CPView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + var count = _subviews.length; + while (count--) + objj_msgSend(_subviews[count], "resizeWithOldSuperviewSize:", aSize); +} +},["void","CGSize"]), new objj_method(sel_getUid("setAutoresizesSubviews:"), function $CPView__setAutoresizesSubviews_(self, _cmd, aFlag) +{ with(self) +{ + _autoresizesSubviews = !!aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("autoresizesSubviews"), function $CPView__autoresizesSubviews(self, _cmd) +{ with(self) +{ + return _autoresizesSubviews; +} +},["BOOL"]), new objj_method(sel_getUid("setAutoresizingMask:"), function $CPView__setAutoresizingMask_(self, _cmd, aMask) +{ with(self) +{ + _autoresizingMask = aMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("autoresizingMask"), function $CPView__autoresizingMask(self, _cmd) +{ with(self) +{ + return _autoresizingMask; +} +},["unsigned"]), new objj_method(sel_getUid("enterFullScreenMode"), function $CPView__enterFullScreenMode(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "enterFullScreenMode:withOptions:", nil, nil); +} +},["BOOL"]), new objj_method(sel_getUid("enterFullScreenMode:withOptions:"), function $CPView__enterFullScreenMode_withOptions_(self, _cmd, aScreen, options) +{ with(self) +{ + _fullScreenModeState = _CPViewFullScreenModeStateMake(self); + var fullScreenWindow = objj_msgSend(objj_msgSend(CPWindow, "alloc"), "initWithContentRect:styleMask:", objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "contentBounds"), CPBorderlessWindowMask); + objj_msgSend(fullScreenWindow, "setLevel:", CPScreenSaverWindowLevel); + objj_msgSend(fullScreenWindow, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + var contentView = objj_msgSend(fullScreenWindow, "contentView"); + objj_msgSend(contentView, "setBackgroundColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(contentView, "addSubview:", self); + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(self, "setFrame:", CGRectMakeCopy(objj_msgSend(contentView, "bounds"))); + objj_msgSend(fullScreenWindow, "makeKeyAndOrderFront:", self); + objj_msgSend(fullScreenWindow, "makeFirstResponder:", self); + _isInFullScreenMode = YES; + return YES; +} +},["BOOL","CPScreen","CPDictionary"]), new objj_method(sel_getUid("exitFullScreenMode"), function $CPView__exitFullScreenMode(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "exitFullScreenModeWithOptions:", nil); +} +},["void"]), new objj_method(sel_getUid("exitFullScreenModeWithOptions:"), function $CPView__exitFullScreenModeWithOptions_(self, _cmd, options) +{ with(self) +{ + if (!_isInFullScreenMode) + return; + _isInFullScreenMode = NO; + objj_msgSend(self, "setFrame:", _fullScreenModeState.frame); + objj_msgSend(self, "setAutoresizingMask:", _fullScreenModeState.autoresizingMask); + objj_msgSend(_fullScreenModeState.superview, "_insertSubview:atIndex:", self, _fullScreenModeState.index); + objj_msgSend(objj_msgSend(self, "window"), "orderOut:", self); +} +},["void","CPDictionary"]), new objj_method(sel_getUid("isInFullScreenMode"), function $CPView__isInFullScreenMode(self, _cmd) +{ with(self) +{ + return _isInFullScreenMode; +} +},["BOOL"]), new objj_method(sel_getUid("setHidden:"), function $CPView__setHidden_(self, _cmd, aFlag) +{ with(self) +{ + aFlag = !!aFlag; + if(_isHidden === aFlag) + return; + _isHidden = aFlag; + if (aFlag) + { + var view = objj_msgSend(_window, "firstResponder"); + if (objj_msgSend(view, "isKindOfClass:", objj_msgSend(CPView, "class"))) + { + do + { + if (self == view) + { + objj_msgSend(_window, "makeFirstResponder:", objj_msgSend(self, "nextValidKeyView")); + break; + } + } + while (view = objj_msgSend(view, "superview")); + } + objj_msgSend(self, "_notifyViewDidHide"); + } + else + { + objj_msgSend(self, "_notifyViewDidUnhide"); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("_notifyViewDidHide"), function $CPView___notifyViewDidHide(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "viewDidHide"); + var count = objj_msgSend(_subviews, "count"); + while (count--) + objj_msgSend(_subviews[count], "_notifyViewDidHide"); +} +},["void"]), new objj_method(sel_getUid("_notifyViewDidUnhide"), function $CPView___notifyViewDidUnhide(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "viewDidUnhide"); + var count = objj_msgSend(_subviews, "count"); + while (count--) + objj_msgSend(_subviews[count], "_notifyViewDidUnhide"); +} +},["void"]), new objj_method(sel_getUid("isHidden"), function $CPView__isHidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("setClipsToBounds:"), function $CPView__setClipsToBounds_(self, _cmd, shouldClip) +{ with(self) +{ + if (_clipsToBounds === shouldClip) + return; + _clipsToBounds = shouldClip; +} +},["void","BOOL"]), new objj_method(sel_getUid("clipsToBounds"), function $CPView__clipsToBounds(self, _cmd) +{ with(self) +{ + return _clipsToBounds; +} +},["BOOL"]), new objj_method(sel_getUid("setAlphaValue:"), function $CPView__setAlphaValue_(self, _cmd, anAlphaValue) +{ with(self) +{ + if (_opacity == anAlphaValue) + return; + _opacity = anAlphaValue; +} +},["void","float"]), new objj_method(sel_getUid("alphaValue"), function $CPView__alphaValue(self, _cmd) +{ with(self) +{ + return _opacity; +} +},["float"]), new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"), function $CPView__isHiddenOrHasHiddenAncestor(self, _cmd) +{ with(self) +{ + var view = self; + while (view && !objj_msgSend(view, "isHidden")) + view = objj_msgSend(view, "superview"); + return view !== nil; +} +},["BOOL"]), new objj_method(sel_getUid("viewDidHide"), function $CPView__viewDidHide(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("viewDidUnhide"), function $CPView__viewDidUnhide(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("acceptsFirstMouse:"), function $CPView__acceptsFirstMouse_(self, _cmd, anEvent) +{ with(self) +{ + return YES; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("hitTests"), function $CPView__hitTests(self, _cmd) +{ with(self) +{ + return _hitTests; +} +},["BOOL"]), new objj_method(sel_getUid("setHitTests:"), function $CPView__setHitTests_(self, _cmd, shouldHitTest) +{ with(self) +{ + _hitTests = !!shouldHitTest; +} +},["void","BOOL"]), new objj_method(sel_getUid("hitTest:"), function $CPView__hitTest_(self, _cmd, aPoint) +{ with(self) +{ + if(_isHidden || !_hitTests || !CPRectContainsPoint(_frame, aPoint)) + return nil; + var view = nil, + i = _subviews.length, + adjustedPoint = { x:aPoint.x - (_frame.origin.x), y:aPoint.y - (_frame.origin.y) }; + if (_inverseBoundsTransform) + adjustedPoint = { x:adjustedPoint.x * _inverseBoundsTransform.a + adjustedPoint.y * _inverseBoundsTransform.c + _inverseBoundsTransform.tx, y:adjustedPoint.x * _inverseBoundsTransform.b + adjustedPoint.y * _inverseBoundsTransform.d + _inverseBoundsTransform.ty }; + while (i--) + if (view = objj_msgSend(_subviews[i], "hitTest:", adjustedPoint)) + return view; + return self; +} +},["CPView","CPPoint"]), new objj_method(sel_getUid("needsPanelToBecomeKey"), function $CPView__needsPanelToBecomeKey(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("mouseDownCanMoveWindow"), function $CPView__mouseDownCanMoveWindow(self, _cmd) +{ with(self) +{ + return !objj_msgSend(self, "isOpaque"); +} +},["BOOL"]), new objj_method(sel_getUid("mouseDown:"), function $CPView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(self, "mouseDownCanMoveWindow")) + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("rightMouseDown:"), function $CPView__rightMouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var menu = objj_msgSend(self, "menuForEvent:", anEvent); + if (menu) + objj_msgSend(CPMenu, "popUpContextMenu:withEvent:forView:", menu, anEvent, self); + else if (objj_msgSend(objj_msgSend(self, "nextResponder"), "isKindOfClass:", CPView)) + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "rightMouseDown:", anEvent); + else + objj_msgSend(objj_msgSend(objj_msgSend(anEvent, "window"), "platformWindow"), "_propagateContextMenuDOMEvent:", YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("menuForEvent:"), function $CPView__menuForEvent_(self, _cmd, anEvent) +{ with(self) +{ + return objj_msgSend(self, "menu") || objj_msgSend(objj_msgSend(self, "class"), "defaultMenu"); +} +},["CPMenu","CPEvent"]), new objj_method(sel_getUid("setBackgroundColor:"), function $CPView__setBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + if (_backgroundColor == aColor) + return; + if (aColor == objj_msgSend(CPNull, "null")) + aColor = nil; + _backgroundColor = aColor; +} +},["void","CPColor"]), new objj_method(sel_getUid("backgroundColor"), function $CPView__backgroundColor(self, _cmd) +{ with(self) +{ + return _backgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("convertPoint:fromView:"), function $CPView__convertPoint_fromView_(self, _cmd, aPoint, aView) +{ with(self) +{ + return CGPointApplyAffineTransform(aPoint, _CPViewGetTransform(aView, self)); +} +},["CGPoint","CGPoint","CPView"]), new objj_method(sel_getUid("convertPoint:toView:"), function $CPView__convertPoint_toView_(self, _cmd, aPoint, aView) +{ with(self) +{ + return CGPointApplyAffineTransform(aPoint, _CPViewGetTransform(self, aView)); +} +},["CGPoint","CGPoint","CPView"]), new objj_method(sel_getUid("convertSize:fromView:"), function $CPView__convertSize_fromView_(self, _cmd, aSize, aView) +{ with(self) +{ + return CGSizeApplyAffineTransform(aSize, _CPViewGetTransform(aView, self)); +} +},["CGSize","CGSize","CPView"]), new objj_method(sel_getUid("convertSize:toView:"), function $CPView__convertSize_toView_(self, _cmd, aSize, aView) +{ with(self) +{ + return CGSizeApplyAffineTransform(aSize, _CPViewGetTransform(self, aView)); +} +},["CGSize","CGSize","CPView"]), new objj_method(sel_getUid("convertRect:fromView:"), function $CPView__convertRect_fromView_(self, _cmd, aRect, aView) +{ with(self) +{ + return CGRectApplyAffineTransform(aRect, _CPViewGetTransform(aView, self)); +} +},["CGRect","CGRect","CPView"]), new objj_method(sel_getUid("convertRect:toView:"), function $CPView__convertRect_toView_(self, _cmd, aRect, aView) +{ with(self) +{ + return CGRectApplyAffineTransform(aRect, _CPViewGetTransform(self, aView)); +} +},["CGRect","CGRect","CPView"]), new objj_method(sel_getUid("setPostsFrameChangedNotifications:"), function $CPView__setPostsFrameChangedNotifications_(self, _cmd, shouldPostFrameChangedNotifications) +{ with(self) +{ + shouldPostFrameChangedNotifications = !!shouldPostFrameChangedNotifications; + if (_postsFrameChangedNotifications === shouldPostFrameChangedNotifications) + return; + _postsFrameChangedNotifications = shouldPostFrameChangedNotifications; + if (_postsFrameChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewFrameDidChangeNotification, self); +} +},["void","BOOL"]), new objj_method(sel_getUid("postsFrameChangedNotifications"), function $CPView__postsFrameChangedNotifications(self, _cmd) +{ with(self) +{ + return _postsFrameChangedNotifications; +} +},["BOOL"]), new objj_method(sel_getUid("setPostsBoundsChangedNotifications:"), function $CPView__setPostsBoundsChangedNotifications_(self, _cmd, shouldPostBoundsChangedNotifications) +{ with(self) +{ + shouldPostBoundsChangedNotifications = !!shouldPostBoundsChangedNotifications; + if (_postsBoundsChangedNotifications === shouldPostBoundsChangedNotifications) + return; + _postsBoundsChangedNotifications = shouldPostBoundsChangedNotifications; + if (_postsBoundsChangedNotifications) + objj_msgSend(CachedNotificationCenter, "postNotificationName:object:", CPViewBoundsDidChangeNotification, self); +} +},["void","BOOL"]), new objj_method(sel_getUid("postsBoundsChangedNotifications"), function $CPView__postsBoundsChangedNotifications(self, _cmd) +{ with(self) +{ + return _postsBoundsChangedNotifications; +} +},["BOOL"]), new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"), function $CPView__dragImage_at_offset_event_pasteboard_source_slideBack_(self, _cmd, anImage, aLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + objj_msgSend(_window, "dragImage:at:offset:event:pasteboard:source:slideBack:", anImage, objj_msgSend(self, "convertPoint:toView:", aLocation, nil), mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPImage","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"), function $CPView__dragView_at_offset_event_pasteboard_source_slideBack_(self, _cmd, aView, aLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + objj_msgSend(_window, "dragView:at:offset:event:pasteboard:source:slideBack:", aView, objj_msgSend(self, "convertPoint:toView:", aLocation, nil), mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPView","CPPoint","CPSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("registerForDraggedTypes:"), function $CPView__registerForDraggedTypes_(self, _cmd, pasteboardTypes) +{ with(self) +{ + if (!pasteboardTypes || !objj_msgSend(pasteboardTypes, "count")) + return; + var theWindow = objj_msgSend(self, "window"); + objj_msgSend(theWindow, "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + objj_msgSend(_registeredDraggedTypes, "addObjectsFromArray:", pasteboardTypes); + objj_msgSend(theWindow, "_noteRegisteredDraggedTypes:", _registeredDraggedTypes); + _registeredDraggedTypesArray = nil; +} +},["void","CPArray"]), new objj_method(sel_getUid("registeredDraggedTypes"), function $CPView__registeredDraggedTypes(self, _cmd) +{ with(self) +{ + if (!_registeredDraggedTypesArray) + _registeredDraggedTypesArray = objj_msgSend(_registeredDraggedTypes, "allObjects"); + return _registeredDraggedTypesArray; +} +},["CPArray"]), new objj_method(sel_getUid("unregisterDraggedTypes"), function $CPView__unregisterDraggedTypes(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; +} +},["void"]), new objj_method(sel_getUid("drawRect:"), function $CPView__drawRect_(self, _cmd, aRect) +{ with(self) +{ +} +},["void","CPRect"]), new objj_method(sel_getUid("setNeedsDisplay:"), function $CPView__setNeedsDisplay_(self, _cmd, aFlag) +{ with(self) +{ + if (aFlag) + objj_msgSend(self, "setNeedsDisplayInRect:", objj_msgSend(self, "bounds")); +} +},["void","BOOL"]), new objj_method(sel_getUid("setNeedsDisplayInRect:"), function $CPView__setNeedsDisplayInRect_(self, _cmd, aRect) +{ with(self) +{ + if (!(_viewClassFlags & CPViewHasCustomDrawRect)) + return; + if ((aRect.size.width <= 0.0 || aRect.size.height <= 0.0)) + return; + if (_dirtyRect && !(_dirtyRect.size.width <= 0.0 || _dirtyRect.size.height <= 0.0)) + _dirtyRect = CGRectUnion(aRect, _dirtyRect); + else + _dirtyRect = { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; + _CPDisplayServerAddDisplayObject(self); +} +},["void","CPRect"]), new objj_method(sel_getUid("needsDisplay"), function $CPView__needsDisplay(self, _cmd) +{ with(self) +{ + return _dirtyRect && !(_dirtyRect.size.width <= 0.0 || _dirtyRect.size.height <= 0.0); +} +},["BOOL"]), new objj_method(sel_getUid("displayIfNeeded"), function $CPView__displayIfNeeded(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "needsDisplay")) + objj_msgSend(self, "displayRect:", _dirtyRect); +} +},["void"]), new objj_method(sel_getUid("display"), function $CPView__display(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "displayRect:", objj_msgSend(self, "visibleRect")); +} +},["void"]), new objj_method(sel_getUid("displayIfNeededInRect:"), function $CPView__displayIfNeededInRect_(self, _cmd, aRect) +{ with(self) +{ + if (objj_msgSend(self, "needsDisplay")) + objj_msgSend(self, "displayRect:", aRect); +} +},["void","CGRect"]), new objj_method(sel_getUid("displayRect:"), function $CPView__displayRect_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSend(self, "viewWillDraw"); + objj_msgSend(self, "displayRectIgnoringOpacity:inContext:", aRect, nil); + _dirtyRect = NULL; +} +},["void","CPRect"]), new objj_method(sel_getUid("displayRectIgnoringOpacity:inContext:"), function $CPView__displayRectIgnoringOpacity_inContext_(self, _cmd, aRect, aGraphicsContext) +{ with(self) +{ + if (objj_msgSend(self, "isHidden")) + return; +} +},["void","CGRect","CPGraphicsContext"]), new objj_method(sel_getUid("viewWillDraw"), function $CPView__viewWillDraw(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("lockFocus"), function $CPView__lockFocus(self, _cmd) +{ with(self) +{ + if (!_graphicsContext) + { + var graphicsPort = CGBitmapGraphicsContextCreate(); + _DOMContentsElement = graphicsPort.DOMElement; + _DOMContentsElement.style.zIndex = -100; + _DOMContentsElement.style.overflow = "hidden"; + _DOMContentsElement.style.position = "absolute"; + _DOMContentsElement.style.visibility = "visible"; + _DOMContentsElement.width = ROUND((_frame.size.width)); + _DOMContentsElement.height = ROUND((_frame.size.height)); + _DOMContentsElement.style.top = "0px"; + _DOMContentsElement.style.left = "0px"; + _DOMContentsElement.style.width = ROUND((_frame.size.width)) + "px"; + _DOMContentsElement.style.height = ROUND((_frame.size.height)) + "px"; + _graphicsContext = objj_msgSend(CPGraphicsContext, "graphicsContextWithGraphicsPort:flipped:", graphicsPort, YES); + } + objj_msgSend(CPGraphicsContext, "setCurrentContext:", _graphicsContext); + CGContextSaveGState(objj_msgSend(_graphicsContext, "graphicsPort")); +} +},["void"]), new objj_method(sel_getUid("unlockFocus"), function $CPView__unlockFocus(self, _cmd) +{ with(self) +{ + CGContextRestoreGState(objj_msgSend(_graphicsContext, "graphicsPort")); + objj_msgSend(CPGraphicsContext, "setCurrentContext:", nil); +} +},["void"]), new objj_method(sel_getUid("setNeedsLayout"), function $CPView__setNeedsLayout(self, _cmd) +{ with(self) +{ + if (!(_viewClassFlags & CPViewHasCustomLayoutSubviews)) + return; + _needsLayout = YES; + _CPDisplayServerAddLayoutObject(self); +} +},["void"]), new objj_method(sel_getUid("layoutIfNeeded"), function $CPView__layoutIfNeeded(self, _cmd) +{ with(self) +{ + if (_needsLayout) + { + _needsLayout = NO; + objj_msgSend(self, "layoutSubviews"); + } +} +},["void"]), new objj_method(sel_getUid("layoutSubviews"), function $CPView__layoutSubviews(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("isOpaque"), function $CPView__isOpaque(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("visibleRect"), function $CPView__visibleRect(self, _cmd) +{ with(self) +{ + if (!_superview) + return _bounds; + return CGRectIntersection(objj_msgSend(self, "convertRect:fromView:", objj_msgSend(_superview, "visibleRect"), _superview), _bounds); +} +},["CGRect"]), new objj_method(sel_getUid("_enclosingClipView"), function $CPView___enclosingClipView(self, _cmd) +{ with(self) +{ + var superview = _superview, + clipViewClass = objj_msgSend(CPClipView, "class"); + while(superview && !objj_msgSend(superview, "isKindOfClass:", clipViewClass)) + superview = superview._superview; + return superview; +} +},["CPScrollView"]), new objj_method(sel_getUid("scrollPoint:"), function $CPView__scrollPoint_(self, _cmd, aPoint) +{ with(self) +{ + var clipView = objj_msgSend(self, "_enclosingClipView"); + if (!clipView) + return; + objj_msgSend(clipView, "scrollToPoint:", objj_msgSend(self, "convertPoint:toView:", aPoint, clipView)); +} +},["void","CGPoint"]), new objj_method(sel_getUid("scrollRectToVisible:"), function $CPView__scrollRectToVisible_(self, _cmd, aRect) +{ with(self) +{ + var visibleRect = objj_msgSend(self, "visibleRect"); + aRect = CGRectIntersection(aRect, _bounds); + if ((aRect.size.width <= 0.0 || aRect.size.height <= 0.0) || CGRectContainsRect(visibleRect, aRect)) + return NO; + var enclosingClipView = objj_msgSend(self, "_enclosingClipView"); + if (!enclosingClipView) + return NO; + var scrollPoint = { x:visibleRect.origin.x, y:visibleRect.origin.y }; + if ((aRect.origin.x) <= (visibleRect.origin.x)) + scrollPoint.x = (aRect.origin.x); + else if ((aRect.origin.x + aRect.size.width) > (visibleRect.origin.x + visibleRect.size.width)) + scrollPoint.x += (aRect.origin.x + aRect.size.width) - (visibleRect.origin.x + visibleRect.size.width); + if ((aRect.origin.y) <= (visibleRect.origin.y)) + scrollPoint.y = CGRectGetMinY(aRect); + else if ((aRect.origin.y + aRect.size.height) > (visibleRect.origin.y + visibleRect.size.height)) + scrollPoint.y += (aRect.origin.y + aRect.size.height) - (visibleRect.origin.y + visibleRect.size.height); + objj_msgSend(enclosingClipView, "scrollToPoint:", CGPointMake(scrollPoint.x, scrollPoint.y)); + return YES; +} +},["BOOL","CGRect"]), new objj_method(sel_getUid("autoscroll:"), function $CPView__autoscroll_(self, _cmd, anEvent) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "superview"), "autoscroll:", anEvent); +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("adjustScroll:"), function $CPView__adjustScroll_(self, _cmd, proposedVisibleRect) +{ with(self) +{ + return proposedVisibleRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("scrollRect:by:"), function $CPView__scrollRect_by_(self, _cmd, aRect, anAmount) +{ with(self) +{ +} +},["void","CGRect","float"]), new objj_method(sel_getUid("enclosingScrollView"), function $CPView__enclosingScrollView(self, _cmd) +{ with(self) +{ + var superview = _superview, + scrollViewClass = objj_msgSend(CPScrollView, "class"); + while(superview && !objj_msgSend(superview, "isKindOfClass:", scrollViewClass)) + superview = superview._superview; + return superview; +} +},["CPScrollView"]), new objj_method(sel_getUid("scrollClipView:toPoint:"), function $CPView__scrollClipView_toPoint_(self, _cmd, aClipView, aPoint) +{ with(self) +{ + objj_msgSend(aClipView, "scrollToPoint:", aPoint); +} +},["void","CPClipView","CGPoint"]), new objj_method(sel_getUid("reflectScrolledClipView:"), function $CPView__reflectScrolledClipView_(self, _cmd, aClipView) +{ with(self) +{ +} +},["void","CPClipView"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPView__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(CPView, "class")) + return; + CachedNotificationCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); +} +},["void"]), new objj_method(sel_getUid("keyPathsForValuesAffectingFrame"), function $CPView__keyPathsForValuesAffectingFrame(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "frameOrigin", "frameSize"); +} +},["CPSet"]), new objj_method(sel_getUid("keyPathsForValuesAffectingBounds"), function $CPView__keyPathsForValuesAffectingBounds(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "setWithObjects:", "boundsOrigin", "boundsSize"); +} +},["CPSet"]), new objj_method(sel_getUid("defaultMenu"), function $CPView__defaultMenu(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPMenu"])]); +} +{ +var the_class = objj_getClass("CPView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("performKeyEquivalent:"), function $CPView__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + var count = objj_msgSend(_subviews, "count"); + while (count--) + if (objj_msgSend(_subviews[count], "performKeyEquivalent:", anEvent)) + return YES; + return NO; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("canBecomeKeyView"), function $CPView__canBecomeKeyView(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "acceptsFirstResponder") && !objj_msgSend(self, "isHiddenOrHasHiddenAncestor"); +} +},["BOOL"]), new objj_method(sel_getUid("nextKeyView"), function $CPView__nextKeyView(self, _cmd) +{ with(self) +{ + return _nextKeyView; +} +},["CPView"]), new objj_method(sel_getUid("nextValidKeyView"), function $CPView__nextValidKeyView(self, _cmd) +{ with(self) +{ + var result = objj_msgSend(self, "nextKeyView"); + while (result && !objj_msgSend(result, "canBecomeKeyView")) + result = objj_msgSend(result, "nextKeyView"); + return result; +} +},["CPView"]), new objj_method(sel_getUid("previousKeyView"), function $CPView__previousKeyView(self, _cmd) +{ with(self) +{ + return _previousKeyView; +} +},["CPView"]), new objj_method(sel_getUid("previousValidKeyView"), function $CPView__previousValidKeyView(self, _cmd) +{ with(self) +{ + var result = objj_msgSend(self, "previousKeyView"); + while (result && !objj_msgSend(result, "canBecomeKeyView")) + result = objj_msgSend(result, "previousKeyView"); + return result; +} +},["CPView"]), new objj_method(sel_getUid("_setPreviousKeyView:"), function $CPView___setPreviousKeyView_(self, _cmd, previous) +{ with(self) +{ + _previousKeyView = previous; +} +},["void","CPView"]), new objj_method(sel_getUid("setNextKeyView:"), function $CPView__setNextKeyView_(self, _cmd, next) +{ with(self) +{ + _nextKeyView = next; + objj_msgSend(_nextKeyView, "_setPreviousKeyView:", self); +} +},["void","CPView"])]); +} +{ +var the_class = objj_getClass("CPView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setLayer:"), function $CPView__setLayer_(self, _cmd, aLayer) +{ with(self) +{ + if (_layer == aLayer) + return; + if (_layer) + { + _layer._owningView = nil; + } + _layer = aLayer; + if (_layer) + { + var bounds = CGRectMakeCopy(objj_msgSend(self, "bounds")); + objj_msgSend(_layer, "_setOwningView:", self); + } +} +},["void","CALayer"]), new objj_method(sel_getUid("layer"), function $CPView__layer(self, _cmd) +{ with(self) +{ + return _layer; +} +},["CALayer"]), new objj_method(sel_getUid("setWantsLayer:"), function $CPView__setWantsLayer_(self, _cmd, aFlag) +{ with(self) +{ + _wantsLayer = !!aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("wantsLayer"), function $CPView__wantsLayer(self, _cmd) +{ with(self) +{ + return _wantsLayer; +} +},["BOOL"])]); +} +{ +var the_class = objj_getClass("CPView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("themeState"), function $CPView__themeState(self, _cmd) +{ with(self) +{ + return _themeState; +} +},["unsigned"]), new objj_method(sel_getUid("hasThemeState:"), function $CPView__hasThemeState_(self, _cmd, aState) +{ with(self) +{ + return !!(_themeState & ((typeof aState === "string") ? CPThemeState(aState) : aState)); +} +},["BOOL","CPThemeState"]), new objj_method(sel_getUid("setThemeState:"), function $CPView__setThemeState_(self, _cmd, aState) +{ with(self) +{ + var newState = (typeof aState === "string") ? CPThemeState(aState) : aState; + if (_themeState & newState) + return NO; + _themeState |= newState; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + return YES; +} +},["BOOL","CPThemeState"]), new objj_method(sel_getUid("unsetThemeState:"), function $CPView__unsetThemeState_(self, _cmd, aState) +{ with(self) +{ + var newState = ((typeof aState === "string") ? CPThemeState(aState) : aState); + if (!(_themeState & newState)) + return NO; + _themeState &= ~newState; + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); + return YES; +} +},["BOOL","CPThemeState"]), new objj_method(sel_getUid("_loadThemeAttributes"), function $CPView___loadThemeAttributes(self, _cmd) +{ with(self) +{ + var theClass = objj_msgSend(self, "class"), + attributes = objj_msgSend(theClass, "_themeAttributes"), + count = attributes.length; + if (!count) + return; + var theme = objj_msgSend(self, "theme"), + themeClass = objj_msgSend(theClass, "themeClass"); + _themeAttributes = {}; + while (count--) + { + var attributeName = attributes[count--], + attribute = objj_msgSend(objj_msgSend(_CPThemeAttribute, "alloc"), "initWithName:defaultValue:", attributeName, attributes[count]); + objj_msgSend(attribute, "setParentAttribute:", objj_msgSend(theme, "attributeWithName:forClass:", attributeName, themeClass)); + _themeAttributes[attributeName] = attribute; + } +} +},["void"]), new objj_method(sel_getUid("setTheme:"), function $CPView__setTheme_(self, _cmd, aTheme) +{ with(self) +{ + if (_theme === aTheme) + return; + _theme = aTheme; + objj_msgSend(self, "viewDidChangeTheme"); +} +},["void","CPTheme"]), new objj_method(sel_getUid("theme"), function $CPView__theme(self, _cmd) +{ with(self) +{ + return _theme; +} +},["CPTheme"]), new objj_method(sel_getUid("viewDidChangeTheme"), function $CPView__viewDidChangeTheme(self, _cmd) +{ with(self) +{ + if (!_themeAttributes) + return; + var theme = objj_msgSend(self, "theme"), + themeClass = objj_msgSend(objj_msgSend(self, "class"), "themeClass"); + for (var attributeName in _themeAttributes) + if (_themeAttributes.hasOwnProperty(attributeName)) + objj_msgSend(_themeAttributes[attributeName], "setParentAttribute:", objj_msgSend(theme, "attributeWithName:forClass:", attributeName, themeClass)); + objj_msgSend(self, "setNeedsLayout"); + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void"]), new objj_method(sel_getUid("_themeAttributeDictionary"), function $CPView___themeAttributeDictionary(self, _cmd) +{ with(self) +{ + var dictionary = objj_msgSend(CPDictionary, "dictionary"); + if (_themeAttributes) + { + var theme = objj_msgSend(self, "theme"); + for (var attributeName in _themeAttributes) + if (_themeAttributes.hasOwnProperty(attributeName)) + objj_msgSend(dictionary, "setObject:forKey:", _themeAttributes[attributeName], attributeName); + } + return dictionary; +} +},["CPDictionary"]), new objj_method(sel_getUid("setValue:forThemeAttribute:inState:"), function $CPView__setValue_forThemeAttribute_inState_(self, _cmd, aValue, aName, aState) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + var currentValue = objj_msgSend(self, "currentValueForThemeAttribute:", aName); + objj_msgSend(_themeAttributes[aName], "setValue:forState:", aValue, aState); + if (objj_msgSend(self, "currentValueForThemeAttribute:", aName) === currentValue) + return; + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","id","CPString","CPThemeState"]), new objj_method(sel_getUid("setValue:forThemeAttribute:"), function $CPView__setValue_forThemeAttribute_(self, _cmd, aValue, aName) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + var currentValue = objj_msgSend(self, "currentValueForThemeAttribute:", aName); + objj_msgSend(_themeAttributes[aName], "setValue:", aValue); + if (objj_msgSend(self, "currentValueForThemeAttribute:", aName) === currentValue) + return; + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","id","CPString"]), new objj_method(sel_getUid("valueForThemeAttribute:inState:"), function $CPView__valueForThemeAttribute_inState_(self, _cmd, aName, aState) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + return objj_msgSend(_themeAttributes[aName], "valueForState:", aState); +} +},["id","CPString","CPThemeState"]), new objj_method(sel_getUid("valueForThemeAttribute:"), function $CPView__valueForThemeAttribute_(self, _cmd, aName) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + return objj_msgSend(_themeAttributes[aName], "value"); +} +},["id","CPString"]), new objj_method(sel_getUid("currentValueForThemeAttribute:"), function $CPView__currentValueForThemeAttribute_(self, _cmd, aName) +{ with(self) +{ + if (!_themeAttributes || !_themeAttributes[aName]) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, objj_msgSend(self, "className") + " does not contain theme attribute '" + aName + "'"); + return objj_msgSend(_themeAttributes[aName], "valueForState:", _themeState); +} +},["id","CPString"]), new objj_method(sel_getUid("createEphemeralSubviewNamed:"), function $CPView__createEphemeralSubviewNamed_(self, _cmd, aViewName) +{ with(self) +{ + return nil; +} +},["CPView","CPString"]), new objj_method(sel_getUid("rectForEphemeralSubviewNamed:"), function $CPView__rectForEphemeralSubviewNamed_(self, _cmd, aViewName) +{ with(self) +{ + return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; +} +},["CGRect","CPString"]), new objj_method(sel_getUid("layoutEphemeralSubviewNamed:positioned:relativeToEphemeralSubviewNamed:"), function $CPView__layoutEphemeralSubviewNamed_positioned_relativeToEphemeralSubviewNamed_(self, _cmd, aViewName, anOrderingMode, relativeToViewName) +{ with(self) +{ + if (!_ephemeralSubviewsForNames) + { + _ephemeralSubviewsForNames = {}; + _ephemeralSubviews = objj_msgSend(CPSet, "set"); + } + var frame = objj_msgSend(self, "rectForEphemeralSubviewNamed:", aViewName); + if (frame && !(frame.size.width <= 0.0 || frame.size.height <= 0.0)) + { + if (!_ephemeralSubviewsForNames[aViewName]) + { + _ephemeralSubviewsForNames[aViewName] = objj_msgSend(self, "createEphemeralSubviewNamed:", aViewName); + objj_msgSend(_ephemeralSubviews, "addObject:", _ephemeralSubviewsForNames[aViewName]); + if (_ephemeralSubviewsForNames[aViewName]) + objj_msgSend(self, "addSubview:positioned:relativeTo:", _ephemeralSubviewsForNames[aViewName], anOrderingMode, _ephemeralSubviewsForNames[relativeToViewName]); + } + if (_ephemeralSubviewsForNames[aViewName]) + objj_msgSend(_ephemeralSubviewsForNames[aViewName], "setFrame:", frame); + } + else if (_ephemeralSubviewsForNames[aViewName]) + { + objj_msgSend(_ephemeralSubviewsForNames[aViewName], "removeFromSuperview"); + objj_msgSend(_ephemeralSubviews, "removeObject:", _ephemeralSubviewsForNames[aViewName]); + delete _ephemeralSubviewsForNames[aViewName]; + } + return _ephemeralSubviewsForNames[aViewName]; +} +},["CPView","CPString","CPWindowOrderingMode","CPString"]), new objj_method(sel_getUid("ephemeralSubviewNamed:"), function $CPView__ephemeralSubviewNamed_(self, _cmd, aViewName) +{ with(self) +{ + if (!_ephemeralSubviewsForNames) + return nil; + return (_ephemeralSubviewsForNames[aViewName] || nil); +} +},["CPView","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("themeClass"), function $CPView__themeClass(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPString"]), new objj_method(sel_getUid("themeAttributes"), function $CPView__themeAttributes(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPDictionary"]), new objj_method(sel_getUid("_themeAttributes"), function $CPView___themeAttributes(self, _cmd) +{ with(self) +{ + if (!CachedThemeAttributes) + CachedThemeAttributes = {}; + var theClass = objj_msgSend(self, "class"), + CPViewClass = objj_msgSend(CPView, "class"), + attributes = [], + nullValue = objj_msgSend(CPNull, "null"); + for (; theClass && theClass !== CPViewClass; theClass = objj_msgSend(theClass, "superclass")) + { + var cachedAttributes = CachedThemeAttributes[class_getName(theClass)]; + if (cachedAttributes) + { + attributes = attributes.length ? attributes.concat(cachedAttributes) : attributes; + CachedThemeAttributes[objj_msgSend(self, "className")] = attributes; + break; + } + var attributeDictionary = objj_msgSend(theClass, "themeAttributes"); + if (!attributeDictionary) + continue; + var attributeKeys = objj_msgSend(attributeDictionary, "allKeys"), + attributeCount = attributeKeys.length; + while (attributeCount--) + { + var attributeName = attributeKeys[attributeCount], + attributeValue = objj_msgSend(attributeDictionary, "objectForKey:", attributeName); + attributes.push(attributeValue === nullValue ? nil : attributeValue); + attributes.push(attributeName); + } + } + return attributes; +} +},["CPArray"])]); +} +var CPViewAutoresizingMaskKey = "CPViewAutoresizingMask", + CPViewAutoresizesSubviewsKey = "CPViewAutoresizesSubviews", + CPViewBackgroundColorKey = "CPViewBackgroundColor", + CPViewBoundsKey = "CPViewBoundsKey", + CPViewFrameKey = "CPViewFrameKey", + CPViewHitTestsKey = "CPViewHitTestsKey", + CPViewIsHiddenKey = "CPViewIsHiddenKey", + CPViewOpacityKey = "CPViewOpacityKey", + CPViewSubviewsKey = "CPViewSubviewsKey", + CPViewSuperviewKey = "CPViewSuperviewKey", + CPViewTagKey = "CPViewTagKey", + CPViewThemeStateKey = "CPViewThemeStateKey", + CPViewWindowKey = "CPViewWindowKey", + CPViewNextKeyViewKey = "CPViewNextKeyViewKey", + CPViewPreviousKeyViewKey = "CPViewPreviousKeyViewKey"; +{ +var the_class = objj_getClass("CPView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + _frame = objj_msgSend(aCoder, "decodeRectForKey:", CPViewFrameKey); + _bounds = objj_msgSend(aCoder, "decodeRectForKey:", CPViewBoundsKey); + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _tag = objj_msgSend(aCoder, "containsValueForKey:", CPViewTagKey) ? objj_msgSend(aCoder, "decodeIntForKey:", CPViewTagKey) : -1; + _window = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewWindowKey); + _subviews = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewSubviewsKey) || []; + _superview = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewSuperviewKey); + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; + _autoresizingMask = objj_msgSend(aCoder, "decodeIntForKey:", CPViewAutoresizingMaskKey) || CPViewNotSizable; + _autoresizesSubviews = !objj_msgSend(aCoder, "containsValueForKey:", CPViewAutoresizesSubviewsKey) || objj_msgSend(aCoder, "decodeBoolForKey:", CPViewAutoresizesSubviewsKey); + _hitTests = !objj_msgSend(aCoder, "containsValueForKey:", CPViewHitTestsKey) || objj_msgSend(aCoder, "decodeObjectForKey:", CPViewHitTestsKey); + if (objj_msgSend(aCoder, "containsValueForKey:", CPViewIsHiddenKey)) + objj_msgSend(self, "setHidden:", objj_msgSend(aCoder, "decodeBoolForKey:", CPViewIsHiddenKey)); + else + _isHidden = NO; + if (objj_msgSend(aCoder, "containsValueForKey:", CPViewOpacityKey)) + objj_msgSend(self, "setAlphaValue:", objj_msgSend(aCoder, "decodeIntForKey:", CPViewOpacityKey)); + else + _opacity = 1.0; + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(aCoder, "decodeObjectForKey:", CPViewBackgroundColorKey)); + objj_msgSend(self, "setupViewFlags"); + _theme = objj_msgSend(CPTheme, "defaultTheme"); + _themeState = CPThemeState(objj_msgSend(aCoder, "decodeIntForKey:", CPViewThemeStateKey)); + _themeAttributes = {}; + var theClass = objj_msgSend(self, "class"), + themeClass = objj_msgSend(theClass, "themeClass"), + attributes = objj_msgSend(theClass, "_themeAttributes"), + count = attributes.length; + while (count--) + { + var attributeName = attributes[count--]; + _themeAttributes[attributeName] = CPThemeAttributeDecode(aCoder, attributeName, attributes[count], _theme, themeClass); + } + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPView").super_class }, "encodeWithCoder:", aCoder); + if (_tag !== -1) + objj_msgSend(aCoder, "encodeInt:forKey:", _tag, CPViewTagKey); + objj_msgSend(aCoder, "encodeRect:forKey:", _frame, CPViewFrameKey); + objj_msgSend(aCoder, "encodeRect:forKey:", _bounds, CPViewBoundsKey); + if (_window !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _window, CPViewWindowKey); + var count = objj_msgSend(_subviews, "count"), + encodedSubviews = _subviews; + if (count > 0 && objj_msgSend(_ephemeralSubviews, "count") > 0) + { + encodedSubviews = objj_msgSend(encodedSubviews, "copy"); + while (count--) + if (objj_msgSend(_ephemeralSubviews, "containsObject:", encodedSubviews[count])) + encodedSubviews.splice(count, 1); + } + if (encodedSubviews.length > 0) + objj_msgSend(aCoder, "encodeObject:forKey:", encodedSubviews, CPViewSubviewsKey); + if (_superview !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", _superview, CPViewSuperviewKey); + if (_autoresizingMask !== CPViewNotSizable) + objj_msgSend(aCoder, "encodeInt:forKey:", _autoresizingMask, CPViewAutoresizingMaskKey); + if (!_autoresizesSubviews) + objj_msgSend(aCoder, "encodeBool:forKey:", _autoresizesSubviews, CPViewAutoresizesSubviewsKey); + if (_backgroundColor !== nil) + objj_msgSend(aCoder, "encodeObject:forKey:", _backgroundColor, CPViewBackgroundColorKey); + if (_hitTests !== YES) + objj_msgSend(aCoder, "encodeBool:forKey:", _hitTests, CPViewHitTestsKey); + if (_opacity !== 1.0) + objj_msgSend(aCoder, "encodeFloat:forKey:", _opacity, CPViewOpacityKey); + if (_isHidden) + objj_msgSend(aCoder, "encodeBool:forKey:", _isHidden, CPViewIsHiddenKey); + var nextKeyView = objj_msgSend(self, "nextKeyView"); + if (nextKeyView !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", nextKeyView, CPViewNextKeyViewKey); + var previousKeyView = objj_msgSend(self, "previousKeyView"); + if (previousKeyView !== nil) + objj_msgSend(aCoder, "encodeConditionalObject:forKey:", previousKeyView, CPViewPreviousKeyViewKey); + objj_msgSend(aCoder, "encodeInt:forKey:", CPThemeStateName(_themeState), CPViewThemeStateKey); + for (var attributeName in _themeAttributes) + if (_themeAttributes.hasOwnProperty(attributeName)) + CPThemeAttributeEncode(aCoder, _themeAttributes[attributeName]); +} +},["void","CPCoder"])]); +} +var _CPViewFullScreenModeStateMake = function(aView) +{ + var superview = aView._superview; + return { autoresizingMask:aView._autoresizingMask, frame:CGRectMakeCopy(aView._frame), index:(superview ? objj_msgSend(superview._subviews, "indexOfObjectIdenticalTo:", aView) : 0), superview:superview }; +} +var _CPViewGetTransform = function( fromView, toView) +{ + var transform = CGAffineTransformMakeIdentity(), + sameWindow = YES, + fromWindow = nil, + toWindow = nil; + if (fromView) + { + var view = fromView; + while (view && view != toView) + { + var frame = view._frame; + transform.tx += (frame.origin.x); + transform.ty += (frame.origin.y); + if (view._boundsTransform) + { + var tx = transform.tx * view._boundsTransform.a + transform.ty * view._boundsTransform.c + view._boundsTransform.tx;transform.ty = transform.tx * view._boundsTransform.b + transform.ty * view._boundsTransform.d + view._boundsTransform.ty;transform.tx = tx;var a = transform.a * view._boundsTransform.a + transform.b * view._boundsTransform.c, b = transform.a * view._boundsTransform.b + transform.b * view._boundsTransform.d, c = transform.c * view._boundsTransform.a + transform.d * view._boundsTransform.c;transform.d = transform.c * view._boundsTransform.b + transform.d * view._boundsTransform.d;transform.a = a;transform.b = b;transform.c = c;; + } + view = view._superview; + } + if (view === toView) + return transform; + else if (fromView && toView) + { + fromWindow = objj_msgSend(fromView, "window"); + toWindow = objj_msgSend(toView, "window"); + if (fromWindow && toWindow && fromWindow !== toWindow) + { + sameWindow = NO; + var frame = objj_msgSend(fromWindow, "frame"); + transform.tx += (frame.origin.x); + transform.ty += (frame.origin.y); + } + } + } + var view = toView; + while (view) + { + var frame = view._frame; + transform.tx -= (frame.origin.x); + transform.ty -= (frame.origin.y); + if (view._boundsTransform) + { + var tx = transform.tx * view._inverseBoundsTransform.a + transform.ty * view._inverseBoundsTransform.c + view._inverseBoundsTransform.tx;transform.ty = transform.tx * view._inverseBoundsTransform.b + transform.ty * view._inverseBoundsTransform.d + view._inverseBoundsTransform.ty;transform.tx = tx;var a = transform.a * view._inverseBoundsTransform.a + transform.b * view._inverseBoundsTransform.c, b = transform.a * view._inverseBoundsTransform.b + transform.b * view._inverseBoundsTransform.d, c = transform.c * view._inverseBoundsTransform.a + transform.d * view._inverseBoundsTransform.c;transform.d = transform.c * view._inverseBoundsTransform.b + transform.d * view._inverseBoundsTransform.d;transform.a = a;transform.b = b;transform.c = c;; + } + view = view._superview; + } + if (!sameWindow) + { + var frame = objj_msgSend(toWindow, "frame"); + transform.tx -= (frame.origin.x); + transform.ty -= (frame.origin.y); + } + return transform; +} + +p;17;CPViewAnimation.jt;7291;@STATIC;1.0;I;20;AppKit/CPAnimation.jt;7247;objj_executeFile("AppKit/CPAnimation.j", NO); +CPViewAnimationTargetKey = "CPViewAnimationTarget"; +CPViewAnimationStartFrameKey = "CPViewAnimationStartFrame"; +CPViewAnimationEndFrameKey = "CPViewAnimationEndFrame"; +CPViewAnimationEffectKey = "CPViewAnimationEffect"; +CPViewAnimationFadeInEffect = "CPViewAnimationFadeIn"; +CPViewAnimationFadeOutEffect = "CPViewAnimationFadeOut"; +{var the_class = objj_allocateClassPair(CPAnimation, "CPViewAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_viewAnimations")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithViewAnimations:"), function $CPViewAnimation__initWithViewAnimations_(self, _cmd, viewAnimations) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewAnimation").super_class }, "initWithDuration:animationCurve:", 0.5, CPAnimationLinear)) + { + objj_msgSend(self, "setViewAnimations:", viewAnimations); + } + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("startAnimation"), function $CPViewAnimation__startAnimation(self, _cmd) +{ with(self) +{ + var animationIndex = objj_msgSend(_viewAnimations, "count"); + while (animationIndex--) + { + var dictionary = objj_msgSend(_viewAnimations, "objectAtIndex:", animationIndex), + view = objj_msgSend(self, "_targetView:", dictionary), + startFrame = objj_msgSend(self, "_startFrame:", dictionary); + objj_msgSend(view, "setFrame:", startFrame); + var effect = objj_msgSend(self, "_effect:", dictionary); + if (effect === CPViewAnimationFadeInEffect) + { + objj_msgSend(view, "setAlphaValue:", 0.0); + objj_msgSend(view, "setHidden:", NO); + } + else if (effect === CPViewAnimationFadeOutEffect) + objj_msgSend(view, "setAlphaValue:", 1.0); + } + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewAnimation").super_class }, "startAnimation"); +} +},["void"]), new objj_method(sel_getUid("setCurrentProgress:"), function $CPViewAnimation__setCurrentProgress_(self, _cmd, progress) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewAnimation").super_class }, "setCurrentProgress:", progress); + var animationIndex = objj_msgSend(_viewAnimations, "count"); + while (animationIndex--) + { + var dictionary = objj_msgSend(_viewAnimations, "objectAtIndex:", animationIndex), + view = objj_msgSend(self, "_targetView:", dictionary), + startFrame = objj_msgSend(self, "_startFrame:", dictionary), + endFrame = objj_msgSend(self, "_endFrame:", dictionary), + differenceFrame = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + differenceFrame.origin.x = endFrame.origin.x - startFrame.origin.x; + differenceFrame.origin.y = endFrame.origin.y - startFrame.origin.y; + differenceFrame.size.width = endFrame.size.width - startFrame.size.width; + differenceFrame.size.height = endFrame.size.height - startFrame.size.height; + var intermediateFrame = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + intermediateFrame.origin.x = startFrame.origin.x + differenceFrame.origin.x * progress; + intermediateFrame.origin.y = startFrame.origin.y + differenceFrame.origin.y * progress; + intermediateFrame.size.width = startFrame.size.width + differenceFrame.size.width * progress; + intermediateFrame.size.height = startFrame.size.height + differenceFrame.size.height * progress; + objj_msgSend(view, "setFrame:", intermediateFrame); + var effect = objj_msgSend(self, "_effect:", dictionary); + if (effect === CPViewAnimationFadeInEffect) + objj_msgSend(view, "setAlphaValue:", 1.0 * progress); + else if (effect === CPViewAnimationFadeOutEffect) + objj_msgSend(view, "setAlphaValue:", 1.0 + ( 0.0 - 1.0 ) * progress); + if (progress === 1.0) + objj_msgSend(view, "setHidden:", (endFrame.size.width <= 0.0 || endFrame.size.height <= 0.0) || objj_msgSend(view, "alphaValue") === 0.0); + } +} +},["void","CPAnimationProgress"]), new objj_method(sel_getUid("stopAnimation"), function $CPViewAnimation__stopAnimation(self, _cmd) +{ with(self) +{ + var animationIndex = objj_msgSend(_viewAnimations, "count"); + while (animationIndex--) + { + var dictionary = objj_msgSend(_viewAnimations, "objectAtIndex:", animationIndex), + view = objj_msgSend(self, "_targetView:", dictionary), + endFrame = objj_msgSend(self, "_endFrame:", dictionary); + objj_msgSend(view, "setFrame:", endFrame); + var effect = objj_msgSend(self, "_effect:", dictionary); + if (effect === CPViewAnimationFadeInEffect) + objj_msgSend(view, "setAlphaValue:", 1.0); + else if (effect === CPViewAnimationFadeOutEffect) + objj_msgSend(view, "setAlphaValue:", 0.0); + objj_msgSend(view, "setHidden:", (endFrame.size.width <= 0.0 || endFrame.size.height <= 0.0) || objj_msgSend(view, "alphaValue") === 0.0); + } + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewAnimation").super_class }, "stopAnimation"); +} +},["void"]), new objj_method(sel_getUid("_targetView:"), function $CPViewAnimation___targetView_(self, _cmd, dictionary) +{ with(self) +{ + var targetView = objj_msgSend(dictionary, "valueForKey:", CPViewAnimationTargetKey); + if (!targetView) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, objj_msgSend(CPString, "stringWithFormat:", "view animation: %@ does not have a target view", objj_msgSend(dictionary, "description"))); + return targetView; +} +},["id","CPDictionary"]), new objj_method(sel_getUid("_startFrame:"), function $CPViewAnimation___startFrame_(self, _cmd, dictionary) +{ with(self) +{ + var startFrame = objj_msgSend(dictionary, "valueForKey:", CPViewAnimationStartFrameKey); + if (!startFrame) + return objj_msgSend(objj_msgSend(self, "_targetView:", dictionary), "frame"); + return startFrame; +} +},["CGRect","CPDictionary"]), new objj_method(sel_getUid("_endFrame:"), function $CPViewAnimation___endFrame_(self, _cmd, dictionary) +{ with(self) +{ + var endFrame = objj_msgSend(dictionary, "valueForKey:", CPViewAnimationEndFrameKey); + if (!endFrame) + return objj_msgSend(objj_msgSend(self, "_targetView:", dictionary), "frame"); + return endFrame; +} +},["CGRect","CPDictionary"]), new objj_method(sel_getUid("_effect:"), function $CPViewAnimation___effect_(self, _cmd, dictionary) +{ with(self) +{ + return objj_msgSend(dictionary, "valueForKey:", CPViewAnimationEffectKey); +} +},["CPString","CPDictionary"]), new objj_method(sel_getUid("viewAnimations"), function $CPViewAnimation__viewAnimations(self, _cmd) +{ with(self) +{ + return _viewAnimations; +} +},["CPArray"]), new objj_method(sel_getUid("setViewAnimations:"), function $CPViewAnimation__setViewAnimations_(self, _cmd, viewAnimations) +{ with(self) +{ + if (viewAnimations != _viewAnimations) + { + objj_msgSend(self, "stopAnimation"); + _viewAnimations = objj_msgSend(viewAnimations, "copy"); + } +} +},["void","CPArray"])]); +} + +p;18;CPViewController.jt;8017;@STATIC;1.0;I;20;AppKit/CPResponder.jt;7973;objj_executeFile("AppKit/CPResponder.j", NO); +var CPViewControllerCachedCibs; +{var the_class = objj_allocateClassPair(CPResponder, "CPViewController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_view"), new objj_ivar("_isLoading"), new objj_ivar("_representedObject"), new objj_ivar("_title"), new objj_ivar("_cibName"), new objj_ivar("_cibBundle"), new objj_ivar("_cibExternalNameTable")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("view"), function $CPViewController__view(self, _cmd) +{ with(self) +{ +return _view; +} +},["id"]), +new objj_method(sel_getUid("setView:"), function $CPViewController__setView_(self, _cmd, newValue) +{ with(self) +{ +_view = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("representedObject"), function $CPViewController__representedObject(self, _cmd) +{ with(self) +{ +return _representedObject; +} +},["id"]), +new objj_method(sel_getUid("setRepresentedObject:"), function $CPViewController__setRepresentedObject_(self, _cmd, newValue) +{ with(self) +{ +_representedObject = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("title"), function $CPViewController__title(self, _cmd) +{ with(self) +{ +return _title; +} +},["id"]), +new objj_method(sel_getUid("setTitle:"), function $CPViewController__setTitle_(self, _cmd, newValue) +{ with(self) +{ +_title = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("cibName"), function $CPViewController__cibName(self, _cmd) +{ with(self) +{ +return _cibName; +} +},["id"]), +new objj_method(sel_getUid("cibBundle"), function $CPViewController__cibBundle(self, _cmd) +{ with(self) +{ +return _cibBundle; +} +},["id"]), +new objj_method(sel_getUid("cibExternalNameTable"), function $CPViewController__cibExternalNameTable(self, _cmd) +{ with(self) +{ +return _cibExternalNameTable; +} +},["id"]), new objj_method(sel_getUid("init"), function $CPViewController__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithCibName:bundle:", nil, nil); +} +},["id"]), new objj_method(sel_getUid("initWithCibName:bundle:"), function $CPViewController__initWithCibName_bundle_(self, _cmd, aCibNameOrNil, aCibBundleOrNil) +{ with(self) +{ + return objj_msgSend(self, "initWithCibName:bundle:externalNameTable:", aCibNameOrNil, aCibBundleOrNil, nil); +} +},["id","CPString","CPBundle"]), new objj_method(sel_getUid("initWithCibName:bundle:owner:"), function $CPViewController__initWithCibName_bundle_owner_(self, _cmd, aCibNameOrNil, aCibBundleOrNil, anOwner) +{ with(self) +{ + return objj_msgSend(self, "initWithCibName:bundle:externalNameTable:", aCibNameOrNil, aCibBundleOrNil, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anOwner, CPCibOwner)); +} +},["id","CPString","CPBundle","id"]), new objj_method(sel_getUid("initWithCibName:bundle:externalNameTable:"), function $CPViewController__initWithCibName_bundle_externalNameTable_(self, _cmd, aCibNameOrNil, aCibBundleOrNil, anExternalNameTable) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewController").super_class }, "init"); + if (self) + { + _cibName = aCibNameOrNil; + _cibBundle = aCibBundleOrNil || objj_msgSend(CPBundle, "mainBundle"); + _cibExternalNameTable = anExternalNameTable || objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", self, CPCibOwner); + _isLoading = NO; + } + return self; +} +},["id","CPString","CPBundle","CPDictionary"]), new objj_method(sel_getUid("loadView"), function $CPViewController__loadView(self, _cmd) +{ with(self) +{ + if (_view) + return; + var cib = objj_msgSend(CPViewControllerCachedCibs, "objectForKey:", _cibName); + if (!cib) + { + cib = objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithContentsOfURL:", objj_msgSend(_cibBundle, "pathForResource:", _cibName + ".cib")); + objj_msgSend(CPViewControllerCachedCibs, "setObject:forKey:", cib, _cibName); + } + objj_msgSend(cib, "instantiateCibWithExternalNameTable:", _cibExternalNameTable); +} +},["void"]), new objj_method(sel_getUid("view"), function $CPViewController__view(self, _cmd) +{ with(self) +{ + if (!_view) + { + _isLoading = YES; + var cibOwner = objj_msgSend(_cibExternalNameTable, "objectForKey:", CPCibOwner); + if (objj_msgSend(cibOwner, "respondsToSelector:", sel_getUid("viewControllerWillLoadCib:"))) + objj_msgSend(cibOwner, "viewControllerWillLoadCib:", self); + objj_msgSend(self, "loadView"); + if (_view === nil && objj_msgSend(cibOwner, "isKindOfClass:", objj_msgSend(CPDocument, "class"))) + objj_msgSend(self, "setView:", objj_msgSend(cibOwner, "valueForKey:", "view")); + if (!_view) + { + var reason = objj_msgSend(CPString, "stringWithFormat:", "View for %@ could not be loaded from Cib or no view specified. Override loadView to load the view manually.", self); + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, reason); + } + if (objj_msgSend(cibOwner, "respondsToSelector:", sel_getUid("viewControllerDidLoadCib:"))) + objj_msgSend(cibOwner, "viewControllerDidLoadCib:", self); + _isLoading = NO; + objj_msgSend(self, "viewDidLoad"); + } + return _view; +} +},["CPView"]), new objj_method(sel_getUid("viewDidLoad"), function $CPViewController__viewDidLoad(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("setView:"), function $CPViewController__setView_(self, _cmd, aView) +{ with(self) +{ + var viewWasLoaded = !_view; + _view = aView; + if (!_isLoading && viewWasLoaded) + objj_msgSend(self, "viewDidLoad"); +} +},["void","CPView"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPViewController__initialize(self, _cmd) +{ with(self) +{ + if (self === CPViewController) + CPViewControllerCachedCibs = objj_msgSend(CPDictionary, "dictionary"); +} +},["void"])]); +} +var CPViewControllerViewKey = "CPViewControllerViewKey", + CPViewControllerTitleKey = "CPViewControllerTitleKey", + CPViewControllerCibNameKey = "CPViewControllerCibNameKey", + CPViewControllerBundleKey = "CPViewControllerBundleKey"; +{ +var the_class = objj_getClass("CPViewController") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPViewController\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPViewController__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewController").super_class }, "initWithCoder:", aCoder); + if (self) + { + _view = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewControllerViewKey); + _title = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewControllerTitleKey); + _cibName = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewControllerCibNameKey); + var bundlePath = objj_msgSend(aCoder, "decodeObjectForKey:", CPViewControllerBundleKey); + _cibBundle = bundlePath ? objj_msgSend(CPBundle, "bundleWithPath:", bundlePath) : objj_msgSend(CPBundle, "mainBundle"); + _cibExternalNameTable = objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", self, CPCibOwner); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPViewController__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPViewController").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _view, CPViewControllerViewKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _title, CPViewControllerTitleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _cibName, CPViewControllerCibNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(_cibBundle, "bundlePath"), CPViewControllerBundleKey); +} +},["void","CPCoder"])]); +} + +p;11;CPWebView.jt;20103;@STATIC;1.0;I;15;AppKit/CPView.jt;20063;objj_executeFile("AppKit/CPView.j", NO); +CPWebViewProgressStartedNotification = "CPWebViewProgressStartedNotification"; +CPWebViewProgressFinishedNotification = "CPWebViewProgressFinishedNotification"; +CPWebViewScrollAppKit = 1; +CPWebViewScrollNative = 2; +{var the_class = objj_allocateClassPair(CPView, "CPWebView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_scrollView"), new objj_ivar("_frameView"), new objj_ivar("_iframe"), new objj_ivar("_mainFrameURL"), new objj_ivar("_backwardStack"), new objj_ivar("_forwardStack"), new objj_ivar("_ignoreLoadStart"), new objj_ivar("_ignoreLoadEnd"), new objj_ivar("_downloadDelegate"), new objj_ivar("_frameLoadDelegate"), new objj_ivar("_policyDelegate"), new objj_ivar("_resourceLoadDelegate"), new objj_ivar("_UIDelegate"), new objj_ivar("_wso"), new objj_ivar("_url"), new objj_ivar("_html"), new objj_ivar("_loadCallback"), new objj_ivar("_scrollMode"), new objj_ivar("_scrollSize"), new objj_ivar("_loadHTMLStringTimer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:frameName:groupName:"), function $CPWebView__initWithFrame_frameName_groupName_(self, _cmd, frameRect, frameName, groupName) +{ with(self) +{ + if (self = objj_msgSend(self, "initWithFrame:", frameRect)) + { + _iframe.name = frameName; + } + return self +} +},["id","CPRect","CPString","CPString"]), new objj_method(sel_getUid("initWithFrame:"), function $CPWebView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebView").super_class }, "initWithFrame:", aFrame)) + { + _mainFrameURL = nil; + _backwardStack = []; + _forwardStack = []; + _scrollMode = CPWebViewScrollNative; + objj_msgSend(self, "_initDOMWithFrame:", aFrame); + } + return self; +} +},["id","CPRect"]), new objj_method(sel_getUid("_initDOMWithFrame:"), function $CPWebView___initDOMWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + _ignoreLoadStart = YES; + _ignoreLoadEnd = YES; + _iframe = document.createElement("iframe"); + _iframe.name = "iframe_" + Math.floor(Math.random()*10000); + _iframe.style.width = "100%"; + _iframe.style.height = "100%"; + _iframe.style.borderWidth = "0px"; + _iframe.frameBorder = "0"; + objj_msgSend(self, "setDrawsBackground:", YES); + _loadCallback = function() { + if (!_ignoreLoadStart) + { + objj_msgSend(self, "_startedLoading"); + if (_mainFrameURL) + objj_msgSend(_backwardStack, "addObject:", _mainFrameURL); + _mainFrameURL = _iframe.src; + _mainFrameURL = _iframe.src; + objj_msgSend(_forwardStack, "removeAllObjects"); + } + else + _ignoreLoadStart = NO; + if (!_ignoreLoadEnd) + { + objj_msgSend(self, "_finishedLoading"); + } + else + _ignoreLoadEnd = NO; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + } + if (_iframe.addEventListener) + _iframe.addEventListener("load", _loadCallback, false); + else if (_iframe.attachEvent) + _iframe.attachEvent("onload", _loadCallback); + _frameView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_frameView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + _scrollView = objj_msgSend(objj_msgSend(CPScrollView, "alloc"), "initWithFrame:", objj_msgSend(self, "bounds")); + objj_msgSend(_scrollView, "setAutohidesScrollers:", YES); + objj_msgSend(_scrollView, "setAutoresizingMask:", CPViewWidthSizable|CPViewHeightSizable); + objj_msgSend(_scrollView, "setDocumentView:", _frameView); + _frameView._DOMElement.appendChild(_iframe); + objj_msgSend(self, "_setScrollMode:", _scrollMode); + objj_msgSend(self, "addSubview:", _scrollView); +} +},["id","CPRect"]), new objj_method(sel_getUid("setFrameSize:"), function $CPWebView__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebView").super_class }, "setFrameSize:", aSize); + objj_msgSend(self, "_resizeWebFrame"); +} +},["void","CPSize"]), new objj_method(sel_getUid("_attachScrollEventIfNecessary"), function $CPWebView___attachScrollEventIfNecessary(self, _cmd) +{ with(self) +{ + if (_scrollMode !== CPWebViewScrollAppKit) + return; + var win = null; + try { win = objj_msgSend(self, "DOMWindow"); } catch (e) {} + if (win && win.addEventListener) + { + var scrollEventHandler = function(anEvent) + { + var frameBounds = objj_msgSend(self, "bounds"), + frameCenter = CGPointMake(CGRectGetMidX(frameBounds), CGRectGetMidY(frameBounds)), + windowOrigin = objj_msgSend(self, "convertPoint:toView:", frameCenter, nil), + globalOrigin = objj_msgSend(objj_msgSend(self, "window"), "convertBaseToBridge:", windowOrigin); + anEvent._overrideLocation = globalOrigin; + objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "platformWindow"), "scrollEvent:", anEvent); + }; + win.addEventListener("DOMMouseScroll", scrollEventHandler, false); + } +} +},["void"]), new objj_method(sel_getUid("_resizeWebFrame"), function $CPWebView___resizeWebFrame(self, _cmd) +{ with(self) +{ + if (_scrollMode === CPWebViewScrollAppKit) + { + if (_scrollSize) + { + objj_msgSend(_frameView, "setFrameSize:", _scrollSize); + } + else + { + var visibleRect = objj_msgSend(_frameView, "visibleRect"); + objj_msgSend(_frameView, "setFrameSize:", CGSizeMake(CGRectGetMaxX(visibleRect), CGRectGetMaxY(visibleRect))); + var win = null; + try { win = objj_msgSend(self, "DOMWindow"); } catch (e) {} + if (win && win.document && win.document.body) + { + var width = win.document.body.scrollWidth, + height = win.document.body.scrollHeight; + _iframe.setAttribute("width", width); + _iframe.setAttribute("height", height); + objj_msgSend(_frameView, "setFrameSize:", CGSizeMake(width, height)); + } + else + { + CPLog.warn("using default size 800*1600"); + objj_msgSend(_frameView, "setFrameSize:", CGSizeMake(800, 1600)); + } + objj_msgSend(_frameView, "scrollRectToVisible:", visibleRect); + } + } +} +},["void"]), new objj_method(sel_getUid("setScrollMode:"), function $CPWebView__setScrollMode_(self, _cmd, aScrollMode) +{ with(self) +{ + if (_scrollMode == aScrollMode) + return; + objj_msgSend(self, "_setScrollMode:", aScrollMode); +} +},["void","int"]), new objj_method(sel_getUid("_setScrollMode:"), function $CPWebView___setScrollMode_(self, _cmd, aScrollMode) +{ with(self) +{ + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine)) + _scrollMode = CPWebViewScrollNative; + else + _scrollMode = aScrollMode; + _ignoreLoadStart = YES; + _ignoreLoadEnd = YES; + var parent = _iframe.parentNode; + parent.removeChild(_iframe); + if (_scrollMode === CPWebViewScrollAppKit) + { + objj_msgSend(_scrollView, "setHasHorizontalScroller:", YES); + objj_msgSend(_scrollView, "setHasVerticalScroller:", YES); + _iframe.setAttribute("scrolling", "no"); + } + else + { + objj_msgSend(_scrollView, "setHasHorizontalScroller:", NO); + objj_msgSend(_scrollView, "setHasVerticalScroller:", NO); + _iframe.setAttribute("scrolling", "auto"); + objj_msgSend(_frameView, "setFrameSize:", objj_msgSend(_scrollView, "bounds").size); + } + parent.appendChild(_iframe); +} +},["void","int"]), new objj_method(sel_getUid("loadHTMLString:"), function $CPWebView__loadHTMLString_(self, _cmd, aString) +{ with(self) +{ + objj_msgSend(self, "loadHTMLString:baseURL:", aString, nil); +} +},["void","CPString"]), new objj_method(sel_getUid("loadHTMLString:baseURL:"), function $CPWebView__loadHTMLString_baseURL_(self, _cmd, aString, URL) +{ with(self) +{ + objj_msgSend(self, "_setScrollMode:", CPWebViewScrollAppKit); + objj_msgSend(_frameView, "setFrameSize:", objj_msgSend(_scrollView, "contentSize")); + objj_msgSend(self, "_startedLoading"); + _ignoreLoadStart = YES; + _ignoreLoadEnd = NO; + _url = null; + _html = aString; + objj_msgSend(self, "_load"); +} +},["void","CPString","CPURL"]), new objj_method(sel_getUid("_loadMainFrameURL"), function $CPWebView___loadMainFrameURL(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_setScrollMode:", CPWebViewScrollNative); + objj_msgSend(self, "_startedLoading"); + _ignoreLoadStart = YES; + _ignoreLoadEnd = NO; + _url = _mainFrameURL; + _html = null; + objj_msgSend(self, "_load"); +} +},["void"]), new objj_method(sel_getUid("_load"), function $CPWebView___load(self, _cmd) +{ with(self) +{ + if (_url) + { + _iframe.src = _url; + } + else if (_html) + { + _iframe.src = ""; + if (_loadHTMLStringTimer !== nil) + { + window.clearTimeout(_loadHTMLStringTimer); + _loadHTMLStringTimer = nil; + } + _loadHTMLStringTimer = window.setTimeout(function() + { + var win = objj_msgSend(self, "DOMWindow"); + if (win) + win.document.write(_html); + window.setTimeout(_loadCallback, 1); + }, 0); + } +} +},["void"]), new objj_method(sel_getUid("_startedLoading"), function $CPWebView___startedLoading(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWebViewProgressStartedNotification, self); + if (objj_msgSend(_frameLoadDelegate, "respondsToSelector:", sel_getUid("webView:didStartProvisionalLoadForFrame:"))) + objj_msgSend(_frameLoadDelegate, "webView:didStartProvisionalLoadForFrame:", self, nil); +} +},["void"]), new objj_method(sel_getUid("_finishedLoading"), function $CPWebView___finishedLoading(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_resizeWebFrame"); + objj_msgSend(self, "_attachScrollEventIfNecessary"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWebViewProgressFinishedNotification, self); + if (objj_msgSend(_frameLoadDelegate, "respondsToSelector:", sel_getUid("webView:didFinishLoadForFrame:"))) + objj_msgSend(_frameLoadDelegate, "webView:didFinishLoadForFrame:", self, nil); +} +},["void"]), new objj_method(sel_getUid("mainFrameURL"), function $CPWebView__mainFrameURL(self, _cmd) +{ with(self) +{ + return _mainFrameURL; +} +},["CPString"]), new objj_method(sel_getUid("setMainFrameURL:"), function $CPWebView__setMainFrameURL_(self, _cmd, URLString) +{ with(self) +{ + if (_mainFrameURL) + objj_msgSend(_backwardStack, "addObject:", _mainFrameURL); + _mainFrameURL = URLString; + objj_msgSend(_forwardStack, "removeAllObjects"); + objj_msgSend(self, "_loadMainFrameURL"); +} +},["void","CPString"]), new objj_method(sel_getUid("goBack"), function $CPWebView__goBack(self, _cmd) +{ with(self) +{ + if (_backwardStack.length > 0) + { + if (_mainFrameURL) + objj_msgSend(_forwardStack, "addObject:", _mainFrameURL); + _mainFrameURL = objj_msgSend(_backwardStack, "lastObject"); + objj_msgSend(_backwardStack, "removeLastObject"); + objj_msgSend(self, "_loadMainFrameURL"); + return YES; + } + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("goForward"), function $CPWebView__goForward(self, _cmd) +{ with(self) +{ + if (_forwardStack.length > 0) + { + if (_mainFrameURL) + objj_msgSend(_backwardStack, "addObject:", _mainFrameURL); + _mainFrameURL = objj_msgSend(_forwardStack, "lastObject"); + objj_msgSend(_forwardStack, "removeLastObject"); + objj_msgSend(self, "_loadMainFrameURL"); + return YES; + } + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("canGoBack"), function $CPWebView__canGoBack(self, _cmd) +{ with(self) +{ + return (_backwardStack.length > 0); +} +},["BOOL"]), new objj_method(sel_getUid("canGoForward"), function $CPWebView__canGoForward(self, _cmd) +{ with(self) +{ + return (_forwardStack.length > 0); +} +},["BOOL"]), new objj_method(sel_getUid("backForwardList"), function $CPWebView__backForwardList(self, _cmd) +{ with(self) +{ + return { back: _backwardStack, forward: _forwardStack }; +} +},["WebBackForwardList"]), new objj_method(sel_getUid("close"), function $CPWebView__close(self, _cmd) +{ with(self) +{ + _iframe.parentNode.removeChild(_iframe); +} +},["void"]), new objj_method(sel_getUid("DOMWindow"), function $CPWebView__DOMWindow(self, _cmd) +{ with(self) +{ + return (_iframe.contentDocument && _iframe.contentDocument.defaultView) || _iframe.contentWindow; +} +},["DOMWindow"]), new objj_method(sel_getUid("windowScriptObject"), function $CPWebView__windowScriptObject(self, _cmd) +{ with(self) +{ + var win = objj_msgSend(self, "DOMWindow"); + if (!_wso || win != objj_msgSend(_wso, "window")) + { + if (win) + _wso = objj_msgSend(objj_msgSend(CPWebScriptObject, "alloc"), "initWithWindow:", win); + else + _wso = nil; + } + return _wso; +} +},["CPWebScriptObject"]), new objj_method(sel_getUid("stringByEvaluatingJavaScriptFromString:"), function $CPWebView__stringByEvaluatingJavaScriptFromString_(self, _cmd, script) +{ with(self) +{ + var result = objj_msgSend(self, "objectByEvaluatingJavaScriptFromString:", script); + return result ? String(result) : nil; +} +},["CPString","CPString"]), new objj_method(sel_getUid("objectByEvaluatingJavaScriptFromString:"), function $CPWebView__objectByEvaluatingJavaScriptFromString_(self, _cmd, script) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "windowScriptObject"), "evaluateWebScript:", script); +} +},["JSObject","CPString"]), new objj_method(sel_getUid("computedStyleForElement:pseudoElement:"), function $CPWebView__computedStyleForElement_pseudoElement_(self, _cmd, element, pseudoElement) +{ with(self) +{ + var win = objj_msgSend(objj_msgSend(self, "windowScriptObject"), "window"); + if (win) + { + return win.document.defaultView.getComputedStyle(element, pseudoElement); + } + return nil; +} +},["DOMCSSStyleDeclaration","DOMElement","CPString"]), new objj_method(sel_getUid("drawsBackground"), function $CPWebView__drawsBackground(self, _cmd) +{ with(self) +{ + return _iframe.style.backgroundColor != ""; +} +},["BOOL"]), new objj_method(sel_getUid("setDrawsBackground:"), function $CPWebView__setDrawsBackground_(self, _cmd, drawsBackround) +{ with(self) +{ + _iframe.style.backgroundColor = drawsBackround ? "white" : ""; +} +},["void","BOOL"]), new objj_method(sel_getUid("takeStringURLFrom:"), function $CPWebView__takeStringURLFrom_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "setMainFrameURL:", objj_msgSend(sender, "stringValue")); +} +},["IBAction","id"]), new objj_method(sel_getUid("goBack:"), function $CPWebView__goBack_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "goBack"); +} +},["IBAction","id"]), new objj_method(sel_getUid("goForward:"), function $CPWebView__goForward_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "goForward"); +} +},["IBAction","id"]), new objj_method(sel_getUid("stopLoading:"), function $CPWebView__stopLoading_(self, _cmd, sender) +{ with(self) +{ +} +},["IBAction","id"]), new objj_method(sel_getUid("reload:"), function $CPWebView__reload_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "_loadMainFrameURL"); +} +},["IBAction","id"]), new objj_method(sel_getUid("print:"), function $CPWebView__print_(self, _cmd, sender) +{ with(self) +{ + try + { + objj_msgSend(self, "DOMWindow").print(); + } + catch (e) + { + alert('Please click the webpage and select "Print" from the "File" menu'); + } +} +},["IBAction","id"]), new objj_method(sel_getUid("downloadDelegate"), function $CPWebView__downloadDelegate(self, _cmd) +{ with(self) +{ + return _downloadDelegate; +} +},["id"]), new objj_method(sel_getUid("setDownloadDelegate:"), function $CPWebView__setDownloadDelegate_(self, _cmd, anObject) +{ with(self) +{ + _downloadDelegate = anObject; +} +},["void","id"]), new objj_method(sel_getUid("frameLoadDelegate"), function $CPWebView__frameLoadDelegate(self, _cmd) +{ with(self) +{ + return _frameLoadDelegate; +} +},["id"]), new objj_method(sel_getUid("setFrameLoadDelegate:"), function $CPWebView__setFrameLoadDelegate_(self, _cmd, anObject) +{ with(self) +{ + _frameLoadDelegate = anObject; +} +},["void","id"]), new objj_method(sel_getUid("policyDelegate"), function $CPWebView__policyDelegate(self, _cmd) +{ with(self) +{ + return _policyDelegate; +} +},["id"]), new objj_method(sel_getUid("setPolicyDelegate:"), function $CPWebView__setPolicyDelegate_(self, _cmd, anObject) +{ with(self) +{ + _policyDelegate = anObject; +} +},["void","id"]), new objj_method(sel_getUid("resourceLoadDelegate"), function $CPWebView__resourceLoadDelegate(self, _cmd) +{ with(self) +{ + return _resourceLoadDelegate; +} +},["id"]), new objj_method(sel_getUid("setResourceLoadDelegate:"), function $CPWebView__setResourceLoadDelegate_(self, _cmd, anObject) +{ with(self) +{ + _resourceLoadDelegate = anObject; +} +},["void","id"]), new objj_method(sel_getUid("UIDelegate"), function $CPWebView__UIDelegate(self, _cmd) +{ with(self) +{ + return _UIDelegate; +} +},["id"]), new objj_method(sel_getUid("setUIDelegate:"), function $CPWebView__setUIDelegate_(self, _cmd, anObject) +{ with(self) +{ + _UIDelegate = anObject; +} +},["void","id"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPWebScriptObject"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithWindow:"), function $CPWebScriptObject__initWithWindow_(self, _cmd, aWindow) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebScriptObject").super_class }, "init")) + { + _window = aWindow; + } + return self; +} +},["id","Window"]), new objj_method(sel_getUid("callWebScriptMethod:withArguments:"), function $CPWebScriptObject__callWebScriptMethod_withArguments_(self, _cmd, methodName, args) +{ with(self) +{ + if (typeof _window[methodName] == "function") + { + try { + return _window[methodName].apply(args); + } catch (e) { + } + } + return undefined; +} +},["id","CPString","CPArray"]), new objj_method(sel_getUid("evaluateWebScript:"), function $CPWebScriptObject__evaluateWebScript_(self, _cmd, script) +{ with(self) +{ + try { + return _window.eval(script); + } catch (e) { + } + return undefined; +} +},["id","CPString"]), new objj_method(sel_getUid("window"), function $CPWebScriptObject__window(self, _cmd) +{ with(self) +{ + return _window; +} +},["Window"])]); +} +{ +var the_class = objj_getClass("CPWebView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWebView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPWebView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebView").super_class }, "initWithCoder:", aCoder); + if (self) + { + _mainFrameURL = nil; + _backwardStack = []; + _forwardStack = []; + _scrollMode = CPWebViewScrollNative; + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(CPColor, "whiteColor")); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPWebView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + var actualSubviews = _subviews; + _subviews = []; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebView").super_class }, "encodeWithCoder:", aCoder); + _subviews = actualSubviews; +} +},["void","CPCoder"])]); +} + +p;20;CPWindowController.jt;13133;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;13;CPResponder.ji;10;CPWindow.ji;12;CPDocument.jt;13011;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPWindow.j", YES); +objj_executeFile("CPDocument.j", YES); +{var the_class = objj_allocateClassPair(CPResponder, "CPWindowController"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window"), new objj_ivar("_documents"), new objj_ivar("_document"), new objj_ivar("_shouldCloseDocument"), new objj_ivar("_supportsMultipleDocuments"), new objj_ivar("_cibOwner"), new objj_ivar("_windowCibName"), new objj_ivar("_windowCibPath"), new objj_ivar("_viewController"), new objj_ivar("_viewControllerContainerView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPWindowController__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithWindow:", nil); +} +},["id"]), new objj_method(sel_getUid("initWithWindow:"), function $CPWindowController__initWithWindow_(self, _cmd, aWindow) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWindowController").super_class }, "init"); + if (self) + { + objj_msgSend(self, "setWindow:", aWindow); + objj_msgSend(self, "setShouldCloseDocument:", NO); + objj_msgSend(self, "setNextResponder:", CPApp); + _documents = []; + } + return self; +} +},["id","CPWindow"]), new objj_method(sel_getUid("initWithWindowCibName:"), function $CPWindowController__initWithWindowCibName_(self, _cmd, aWindowCibName) +{ with(self) +{ + return objj_msgSend(self, "initWithWindowCibName:owner:", aWindowCibName, self); +} +},["id","CPString"]), new objj_method(sel_getUid("initWithWindowCibName:owner:"), function $CPWindowController__initWithWindowCibName_owner_(self, _cmd, aWindowCibName, anOwner) +{ with(self) +{ + self = objj_msgSend(self, "initWithWindow:", nil); + if (self) + { + _cibOwner = anOwner; + _windowCibName = aWindowCibName; + } + return self; +} +},["id","CPString","id"]), new objj_method(sel_getUid("initWithWindowCibPath:owner:"), function $CPWindowController__initWithWindowCibPath_owner_(self, _cmd, aWindowCibPath, anOwner) +{ with(self) +{ + self = objj_msgSend(self, "initWithWindow:", nil); + if (self) + { + _cibOwner = anOwner; + _windowCibPath = aWindowCibPath; + } + return self; +} +},["id","CPString","id"]), new objj_method(sel_getUid("loadWindow"), function $CPWindowController__loadWindow(self, _cmd) +{ with(self) +{ + if (_window) + return; + objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "loadCibFile:externalNameTable:", objj_msgSend(self, "windowCibPath"), objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", _cibOwner, CPCibOwner)); +} +},["void"]), new objj_method(sel_getUid("showWindow:"), function $CPWindowController__showWindow_(self, _cmd, aSender) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"); + if (objj_msgSend(theWindow, "respondsToSelector:", sel_getUid("becomesKeyOnlyIfNeeded")) && objj_msgSend(theWindow, "becomesKeyOnlyIfNeeded")) + objj_msgSend(theWindow, "orderFront:", aSender); + else + objj_msgSend(theWindow, "makeKeyAndOrderFront:", aSender); +} +},["@action","id"]), new objj_method(sel_getUid("isWindowLoaded"), function $CPWindowController__isWindowLoaded(self, _cmd) +{ with(self) +{ + return _window !== nil; +} +},["BOOL"]), new objj_method(sel_getUid("window"), function $CPWindowController__window(self, _cmd) +{ with(self) +{ + if (!_window) + { + objj_msgSend(self, "windowWillLoad"); + objj_msgSend(_document, "windowControllerWillLoadCib:", self); + objj_msgSend(self, "loadWindow"); + if (_window === nil && objj_msgSend(_cibOwner, "isKindOfClass:", objj_msgSend(CPDocument, "class"))) + objj_msgSend(self, "setWindow:", objj_msgSend(_cibOwner, "valueForKey:", "window")); + if (!_window) + { + var reason = objj_msgSend(CPString, "stringWithFormat:", "Window for %@ could not be loaded from Cib or no window specified. Override loadWindow to load the window manually.", self); + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, reason); + } + objj_msgSend(self, "windowDidLoad"); + objj_msgSend(_document, "windowControllerDidLoadCib:", self); + objj_msgSend(self, "synchronizeWindowTitleWithDocumentName"); + } + return _window; +} +},["CPWindow"]), new objj_method(sel_getUid("setWindow:"), function $CPWindowController__setWindow_(self, _cmd, aWindow) +{ with(self) +{ + objj_msgSend(_window, "setWindowController:", nil); + _window = aWindow; + objj_msgSend(_window, "setWindowController:", self); + objj_msgSend(_window, "setNextResponder:", self); +} +},["void","CPWindow"]), new objj_method(sel_getUid("windowDidLoad"), function $CPWindowController__windowDidLoad(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("windowWillLoad"), function $CPWindowController__windowWillLoad(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("setDocument:"), function $CPWindowController__setDocument_(self, _cmd, aDocument) +{ with(self) +{ + if (_document === aDocument) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_document) + { + if (!objj_msgSend(self, "supportsMultipleDocuments")) + objj_msgSend(self, "removeDocument:", _document); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPDocumentWillSaveNotification, _document); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPDocumentDidSaveNotification, _document); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPDocumentDidFailToSaveNotification, _document); + } + _document = aDocument; + if (_document) + { + objj_msgSend(self, "addDocument:", _document); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_documentWillSave:"), CPDocumentWillSaveNotification, _document); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_documentDidSave:"), CPDocumentDidSaveNotification, _document); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("_documentDidFailToSave:"), CPDocumentDidFailToSaveNotification, _document); + objj_msgSend(self, "setDocumentEdited:", objj_msgSend(_document, "isDocumentEdited")); + } + var viewController = objj_msgSend(_document, "viewControllerForWindowController:", self); + if (viewController) + objj_msgSend(self, "setViewController:", viewController); + objj_msgSend(self, "synchronizeWindowTitleWithDocumentName"); +} +},["void","CPDocument"]), new objj_method(sel_getUid("setSupportsMultipleDocuments:"), function $CPWindowController__setSupportsMultipleDocuments_(self, _cmd, shouldSupportMultipleDocuments) +{ with(self) +{ + _supportsMultipleDocuments = shouldSupportMultipleDocuments; +} +},["void","BOOL"]), new objj_method(sel_getUid("supportsMultipleDocuments"), function $CPWindowController__supportsMultipleDocuments(self, _cmd) +{ with(self) +{ + return _supportsMultipleDocuments; +} +},["BOOL"]), new objj_method(sel_getUid("addDocument:"), function $CPWindowController__addDocument_(self, _cmd, aDocument) +{ with(self) +{ + if (aDocument && !objj_msgSend(_documents, "containsObject:", aDocument)) + objj_msgSend(_documents, "addObject:", aDocument); +} +},["void","CPDocument"]), new objj_method(sel_getUid("removeDocument:"), function $CPWindowController__removeDocument_(self, _cmd, aDocument) +{ with(self) +{ + var index = objj_msgSend(_documents, "indexOfObjectIdenticalTo:", aDocument); + if (index === CPNotFound) + return; + objj_msgSend(_documents, "removeObjectAtIndex:", index); + if (_document === aDocument && objj_msgSend(_documents, "count")) + objj_msgSend(self, "setDocument:", objj_msgSend(_documents, "objectAtIndex:", MIN(index, objj_msgSend(_documents, "count") - 1))); +} +},["void","CPDocument"]), new objj_method(sel_getUid("removeDocumentAndCloseIfNecessary:"), function $CPWindowController__removeDocumentAndCloseIfNecessary_(self, _cmd, aDocument) +{ with(self) +{ + objj_msgSend(self, "removeDocument:", aDocument); + if (!objj_msgSend(_documents, "count")) + objj_msgSend(self, "close"); +} +},["void","CPDocument"]), new objj_method(sel_getUid("documents"), function $CPWindowController__documents(self, _cmd) +{ with(self) +{ + return _documents; +} +},["CPArray"]), new objj_method(sel_getUid("setViewControllerContainerView:"), function $CPWindowController__setViewControllerContainerView_(self, _cmd, aView) +{ with(self) +{ + _viewControllerContainerView = aView; +} +},["void","CPView"]), new objj_method(sel_getUid("viewControllerContainerView"), function $CPWindowController__viewControllerContainerView(self, _cmd) +{ with(self) +{ + return _viewControllerContainerView; +} +},["void"]), new objj_method(sel_getUid("setViewController:"), function $CPWindowController__setViewController_(self, _cmd, aViewController) +{ with(self) +{ + var containerView = objj_msgSend(self, "viewControllerContainerView") || objj_msgSend(objj_msgSend(self, "window"), "contentView"), + view = objj_msgSend(_viewController, "view"), + frame = view ? objj_msgSend(view, "frame") : objj_msgSend(containerView, "bounds"); + objj_msgSend(view, "removeFromSuperview"); + _viewController = aViewController; + view = objj_msgSend(_viewController, "view"); + if (view) + { + objj_msgSend(view, "setFrame:", frame); + objj_msgSend(containerView, "addSubview:", view); + } +} +},["void","CPViewController"]), new objj_method(sel_getUid("viewController"), function $CPWindowController__viewController(self, _cmd) +{ with(self) +{ + return _viewController; +} +},["CPViewController"]), new objj_method(sel_getUid("_documentWillSave:"), function $CPWindowController___documentWillSave_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "setDocumentSaving:", YES); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_documentDidSave:"), function $CPWindowController___documentDidSave_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "setDocumentSaving:", NO); +} +},["void","CPNotification"]), new objj_method(sel_getUid("_documentDidFailToSave:"), function $CPWindowController___documentDidFailToSave_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "setDocumentSaving:", NO); +} +},["void","CPNotification"]), new objj_method(sel_getUid("document"), function $CPWindowController__document(self, _cmd) +{ with(self) +{ + return _document; +} +},["CPDocument"]), new objj_method(sel_getUid("setDocumentEdited:"), function $CPWindowController__setDocumentEdited_(self, _cmd, isEdited) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "setDocumentEdited:", isEdited); +} +},["void","BOOL"]), new objj_method(sel_getUid("close"), function $CPWindowController__close(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "window"), "close"); +} +},["void"]), new objj_method(sel_getUid("setShouldCloseDocument:"), function $CPWindowController__setShouldCloseDocument_(self, _cmd, shouldCloseDocument) +{ with(self) +{ + _shouldCloseDocument = shouldCloseDocument; +} +},["void","BOOL"]), new objj_method(sel_getUid("shouldCloseDocument"), function $CPWindowController__shouldCloseDocument(self, _cmd) +{ with(self) +{ + return _shouldCloseDocument; +} +},["BOOL"]), new objj_method(sel_getUid("owner"), function $CPWindowController__owner(self, _cmd) +{ with(self) +{ + return _cibOwner; +} +},["id"]), new objj_method(sel_getUid("windowCibName"), function $CPWindowController__windowCibName(self, _cmd) +{ with(self) +{ + if (_windowCibName) + return _windowCibName; + return objj_msgSend(objj_msgSend(_windowCibPath, "lastPathComponent"), "stringByDeletingPathExtension"); +} +},["CPString"]), new objj_method(sel_getUid("windowCibPath"), function $CPWindowController__windowCibPath(self, _cmd) +{ with(self) +{ + if (_windowCibPath) + return _windowCibPath; + return objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", _windowCibName + ".cib"); +} +},["CPString"]), new objj_method(sel_getUid("synchronizeWindowTitleWithDocumentName"), function $CPWindowController__synchronizeWindowTitleWithDocumentName(self, _cmd) +{ with(self) +{ + if (!_document || !_window) + return; + objj_msgSend(_window, "setTitle:", objj_msgSend(self, "windowTitleForDocumentDisplayName:", objj_msgSend(_document, "displayName"))); +} +},["void"]), new objj_method(sel_getUid("windowTitleForDocumentDisplayName:"), function $CPWindowController__windowTitleForDocumentDisplayName_(self, _cmd, aDisplayName) +{ with(self) +{ + return aDisplayName; +} +},["CPString","CPString"])]); +} + +p;20;_CPCibClassSwapper.jt;2145;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;2074;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +var _CPCibClassSwapperClassNameKey = "_CPCibClassSwapperClassNameKey", + _CPCibClassSwapperOriginalClassNameKey = "_CPCibClassSwapperOriginalClassNameKey"; +{var the_class = objj_allocateClassPair(CPObject, "_CPCibClassSwapper"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("allocObjectWithCoder:className:"), function $_CPCibClassSwapper__allocObjectWithCoder_className_(self, _cmd, aCoder, aClassName) +{ with(self) +{ + var theClass = objj_msgSend(aCoder, "classForClassName:", aClassName); + if (!theClass) + { + theClass = objj_lookUpClass(aClassName); + if (!theClass) + return nil; + } + return objj_msgSend(theClass, "alloc"); +} +},["void","CPCoder","CPString"]), new objj_method(sel_getUid("allocWithCoder:"), function $_CPCibClassSwapper__allocWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (objj_msgSend(aCoder, "respondsToSelector:", sel_getUid("usesOriginalClasses")) && objj_msgSend(aCoder, "usesOriginalClasses")) + { + var theClassName = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibClassSwapperOriginalClassNameKey), + object = objj_msgSend(self, "allocObjectWithCoder:className:", aCoder, theClassName); + } + else + { + var theClassName = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibClassSwapperClassNameKey), + object = objj_msgSend(self, "allocObjectWithCoder:className:", aCoder, theClassName); + if (!object) + { + CPLog.error("Unable to find class " + theClassName + " in cib file."); + object = objj_msgSend(self, "allocObjectWithCoder:className:", aCoder, objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibClassSwapperOriginalClassNameKey)); + } + } + if (!object) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Unable to find class " + theClassName + " in cib file."); + return object; +} +},["id","CPCoder"])]); +} + +p;20;_CPCibCustomObject.jt;2567;@STATIC;1.0;I;21;Foundation/CPObject.jt;2522; + + +objj_executeFile("Foundation/CPObject.j", NO); + + +var _CPCibCustomObjectClassName = "_CPCibCustomObjectClassName"; + +{var the_class = objj_allocateClassPair(CPObject, "_CPCibCustomObject"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_className")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("customClassName"), function $_CPCibCustomObject__customClassName(self, _cmd) +{ with(self) +{ + return _className; +} +},["CPString"]), new objj_method(sel_getUid("setCustomClassName:"), function $_CPCibCustomObject__setCustomClassName_(self, _cmd, aClassName) +{ with(self) +{ + _className = aClassName; +} +},["void","CPString"]), new objj_method(sel_getUid("description"), function $_CPCibCustomObject__description(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomObject").super_class }, "description") + " (" + objj_msgSend(self, "customClassName") + ')'; +} +},["CPString"])]); +} + +{ +var the_class = objj_getClass("_CPCibCustomObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPCibCustomObject__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomObject").super_class }, "init"); + + if (self) + _className = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomObjectClassName); + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibCustomObject__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _className, _CPCibCustomObjectClassName); +} +},["void","CPCoder"]), new objj_method(sel_getUid("_cibInstantiate"), function $_CPCibCustomObject___cibInstantiate(self, _cmd) +{ with(self) +{ + var theClass = CPClassFromString(_className); + + + if (theClass === objj_msgSend(self, "class")) + { + _className = "CPObject"; + + return self; + } + + if (!theClass) + { + + CPLog("Unknown class \"" + _className + "\" in cib file"); + + theClass = objj_msgSend(CPObject, "class"); + } + + if (theClass === objj_msgSend(CPApplication, "class")) + return objj_msgSend(CPApplication, "sharedApplication"); + + return objj_msgSend(objj_msgSend(theClass, "alloc"), "init"); +} +},["id"])]); +} + +p;22;_CPCibCustomResource.jt;4626;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.jt;4555;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +var _CPCibCustomResourceClassNameKey = "_CPCibCustomResourceClassNameKey", + _CPCibCustomResourceResourceNameKey = "_CPCibCustomResourceResourceNameKey", + _CPCibCustomResourcePropertiesKey = "_CPCibCustomResourcePropertiesKey"; +{var the_class = objj_allocateClassPair(CPObject, "_CPCibCustomResource"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_className"), new objj_ivar("_resourceName"), new objj_ivar("_properties")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithClassName:resourceName:properties:"), function $_CPCibCustomResource__initWithClassName_resourceName_properties_(self, _cmd, aClassName, aResourceName, properties) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomResource").super_class }, "init"); + if (self) + { + _className = aClassName; + _resourceName = aResourceName; + _properties = properties; + } + return self; +} +},["id","CPString","CPString","CPDictionary"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPCibCustomResource__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomResource").super_class }, "init"); + if (self) + { + _className = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomResourceClassNameKey); + _resourceName = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomResourceResourceNameKey); + _properties = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomResourcePropertiesKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibCustomResource__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _className, _CPCibCustomResourceClassNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _resourceName, _CPCibCustomResourceResourceNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _properties, _CPCibCustomResourcePropertiesKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("awakeAfterUsingCoder:"), function $_CPCibCustomResource__awakeAfterUsingCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (objj_msgSend(aCoder, "respondsToSelector:", sel_getUid("bundle")) && + (!objj_msgSend(aCoder, "respondsToSelector:", sel_getUid("awakenCustomResources")) || objj_msgSend(aCoder, "awakenCustomResources"))) + if (_className === "CPImage") + return objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(aCoder, "bundle"), "pathForResource:", _resourceName), _properties.valueForKey("size")); + return self; +} +},["id","CPCoder"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("imageResourceWithName:size:"), function $_CPCibCustomResource__imageResourceWithName_size_(self, _cmd, aResourceName, aSize) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithClassName:resourceName:properties:", "CPImage", aResourceName, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", aSize, "size")); +} +},["id","CPString","CGSize"])]); +} +{ +var the_class = objj_getClass("_CPCibCustomResource") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomResource\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("filename"), function $_CPCibCustomResource__filename(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", _resourceName); +} +},["CPString"]), new objj_method(sel_getUid("size"), function $_CPCibCustomResource__size(self, _cmd) +{ with(self) +{ + return objj_msgSend(_properties, "objectForKey:", "size"); +} +},["CGSize"]), new objj_method(sel_getUid("isThreePartImage"), function $_CPCibCustomResource__isThreePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("isNinePartImage"), function $_CPCibCustomResource__isNinePartImage(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("loadStatus"), function $_CPCibCustomResource__loadStatus(self, _cmd) +{ with(self) +{ + return CPImageLoadStatusCompleted; +} +},["unsigned"]), new objj_method(sel_getUid("delegate"), function $_CPCibCustomResource__delegate(self, _cmd) +{ with(self) +{ + return nil; +} +},["id"])]); +} + +p;18;_CPCibCustomView.jt;3499;@STATIC;1.0;i;8;CPView.jt;3468;objj_executeFile("CPView.j", YES); +{var the_class = objj_allocateClassPair(CPView, "_CPCibCustomView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_className")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("customClassName"), function $_CPCibCustomView__customClassName(self, _cmd) +{ with(self) +{ + return _className; +} +},["CPString"]), new objj_method(sel_getUid("setCustomClassName:"), function $_CPCibCustomView__setCustomClassName_(self, _cmd, aClassName) +{ with(self) +{ + if (_className === aClassName) + return; + _className = aClassName; + objj_msgSend(self, "setNeedsDisplay:", YES); + objj_msgSend(self, "setNeedsLayout"); +} +},["void","CPString"])]); +} +var _CPCibCustomViewClassNameKey = "_CPCibCustomViewClassNameKey"; +{ +var the_class = objj_getClass("_CPCibCustomView") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibCustomView\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPCibCustomView__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomView").super_class }, "initWithCoder:", aCoder); + if (self) + _className = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibCustomViewClassNameKey); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibCustomView__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibCustomView").super_class }, "encodeWithCoder:", aCoder); + objj_msgSend(aCoder, "encodeObject:forKey:", _className, _CPCibCustomViewClassNameKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("customClassName"), function $_CPCibCustomView__customClassName(self, _cmd) +{ with(self) +{ + return _className; +} +},["CPString"]), new objj_method(sel_getUid("_cibInstantiate"), function $_CPCibCustomView___cibInstantiate(self, _cmd) +{ with(self) +{ + var theClass = CPClassFromString(_className); + if (!theClass) + { + CPLog("Unknown class \"" + _className + "\" in cib file, using CPView instead."); + theClass = objj_msgSend(CPView, "class"); + } + if (theClass === objj_msgSend(self, "class")) + { + _className = "CPView"; + return self; + } + var view = objj_msgSend(objj_msgSend(theClass, "alloc"), "initWithFrame:", objj_msgSend(self, "frame")); + if (view) + { + objj_msgSend(view, "setBounds:", objj_msgSend(self, "bounds")); + var subviews = objj_msgSend(self, "subviews"), + index = 0, + count = subviews.length; + for (; index < count; ++index) + objj_msgSend(view, "addSubview:", subviews[index]); + objj_msgSend(view, "setAutoresizingMask:", objj_msgSend(self, "autoresizingMask")); + objj_msgSend(view, "setAutoresizesSubviews:", objj_msgSend(self, "autoresizesSubviews")); + objj_msgSend(view, "setHitTests:", objj_msgSend(self, "hitTests")); + objj_msgSend(view, "setHidden:", objj_msgSend(self, "isHidden")); + objj_msgSend(view, "setAlphaValue:", objj_msgSend(self, "alphaValue")); + objj_msgSend(_superview, "replaceSubview:with:", self, view); + objj_msgSend(view, "setBackgroundColor:", objj_msgSend(self, "backgroundColor")); + } + return view; +} +},["id"])]); +} + +p;23;_CPCibKeyedUnarchiver.jt;2385;@STATIC;1.0;I;30;Foundation/CPKeyedUnarchiver.jt;2331; + + +objj_executeFile("Foundation/CPKeyedUnarchiver.j", NO); + + +{var the_class = objj_allocateClassPair(CPKeyedUnarchiver, "_CPCibKeyedUnarchiver"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_bundle"), new objj_ivar("_awakenCustomResources"), new objj_ivar("_externalObjectsForProxyIdentifiers")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initForReadingWithData:bundle:awakenCustomResources:"), function $_CPCibKeyedUnarchiver__initForReadingWithData_bundle_awakenCustomResources_(self, _cmd, data, aBundle, shouldAwakenCustomResources) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibKeyedUnarchiver").super_class }, "initForReadingWithData:", data); + + if (self) + { + _bundle = aBundle; + _awakenCustomResources = shouldAwakenCustomResources; + + objj_msgSend(self, "setDelegate:", self); + } + + return self; +} +},["id","CPData","CPBundle","BOOL"]), new objj_method(sel_getUid("bundle"), function $_CPCibKeyedUnarchiver__bundle(self, _cmd) +{ with(self) +{ + return _bundle; +} +},["CPBundle"]), new objj_method(sel_getUid("awakenCustomResources"), function $_CPCibKeyedUnarchiver__awakenCustomResources(self, _cmd) +{ with(self) +{ + return _awakenCustomResources; +} +},["BOOL"]), new objj_method(sel_getUid("setExternalObjectsForProxyIdentifiers:"), function $_CPCibKeyedUnarchiver__setExternalObjectsForProxyIdentifiers_(self, _cmd, externalObjectsForProxyIdentifiers) +{ with(self) +{ + _externalObjectsForProxyIdentifiers = externalObjectsForProxyIdentifiers; +} +},["void","CPDictionary"]), new objj_method(sel_getUid("externalObjectForProxyIdentifier:"), function $_CPCibKeyedUnarchiver__externalObjectForProxyIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + return objj_msgSend(_externalObjectsForProxyIdentifiers, "objectForKey:", anIdentifier); +} +},["id","CPString"]), new objj_method(sel_getUid("replaceObjectAtUID:withObject:"), function $_CPCibKeyedUnarchiver__replaceObjectAtUID_withObject_(self, _cmd, aUID, anObject) +{ with(self) +{ + _objects[aUID] = anObject; +} +},["void","int","id"]), new objj_method(sel_getUid("objectAtUID:"), function $_CPCibKeyedUnarchiver__objectAtUID_(self, _cmd, aUID) +{ with(self) +{ + return _objects[aUID]; +} +},["id","int"])]); +} + +p;18;_CPCibObjectData.jt;9737;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;7;CPCib.ji;16;CPCibConnector.ji;23;CPCibControlConnector.ji;22;CPCibOutletConnector.jt;9554;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPCib.j", YES); +objj_executeFile("CPCibConnector.j", YES); +objj_executeFile("CPCibControlConnector.j", YES); +objj_executeFile("CPCibOutletConnector.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "_CPCibObjectData"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_namesKeys"), new objj_ivar("_namesValues"), new objj_ivar("_accessibilityConnectors"), new objj_ivar("_accessibilityOidsKeys"), new objj_ivar("_accessibilityOidsValues"), new objj_ivar("_classesKeys"), new objj_ivar("_classesValues"), new objj_ivar("_connections"), new objj_ivar("_fontManager"), new objj_ivar("_framework"), new objj_ivar("_nextOid"), new objj_ivar("_objectsKeys"), new objj_ivar("_objectsValues"), new objj_ivar("_oidKeys"), new objj_ivar("_oidValues"), new objj_ivar("_fileOwner"), new objj_ivar("_visibleWindows"), new objj_ivar("_replacementObjects")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $_CPCibObjectData__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibObjectData").super_class }, "init"); + if (self) + { + _namesKeys = []; + _namesValues = []; + _classesKeys = []; + _classesValues = []; + _connections = []; + _framework = ""; + _nextOid = []; + _objectsKeys = []; + _objectsValues = []; + _oidKeys = []; + _oidValues = []; + _fileOwner = nil; + _visibleWindows = objj_msgSend(CPSet, "set"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("displayVisibleWindows"), function $_CPCibObjectData__displayVisibleWindows(self, _cmd) +{ with(self) +{ + var object = nil, + objectEnumerator = objj_msgSend(_visibleWindows, "objectEnumerator"); + while (object = objj_msgSend(objectEnumerator, "nextObject")) + objj_msgSend(_replacementObjects[objj_msgSend(object, "UID")], "makeKeyAndOrderFront:", self); +} +},["void"])]); +} +var _CPCibObjectDataNamesKeysKey = "_CPCibObjectDataNamesKeysKey", + _CPCibObjectDataNamesValuesKey = "_CPCibObjectDataNamesValuesKey", + _CPCibObjectDataAccessibilityConnectorsKey = "_CPCibObjectDataAccessibilityConnectors", + _CPCibObjectDataAccessibilityOidsKeysKey = "_CPCibObjectDataAccessibilityOidsKeys", + _CPCibObjectDataAccessibilityOidsValuesKey = "_CPCibObjectDataAccessibilityOidsValues", + _CPCibObjectDataClassesKeysKey = "_CPCibObjectDataClassesKeysKey", + _CPCibObjectDataClassesValuesKey = "_CPCibObjectDataClassesValuesKey", + _CPCibObjectDataConnectionsKey = "_CPCibObjectDataConnectionsKey", + _CPCibObjectDataFontManagerKey = "_CPCibObjectDataFontManagerKey", + _CPCibObjectDataFrameworkKey = "_CPCibObjectDataFrameworkKey", + _CPCibObjectDataNextOidKey = "_CPCibObjectDataNextOidKey", + _CPCibObjectDataObjectsKeysKey = "_CPCibObjectDataObjectsKeysKey", + _CPCibObjectDataObjectsValuesKey = "_CPCibObjectDataObjectsValuesKey", + _CPCibObjectDataOidKeysKey = "_CPCibObjectDataOidKeysKey", + _CPCibObjectDataOidValuesKey = "_CPCibObjectDataOidValuesKey", + _CPCibObjectDataFileOwnerKey = "_CPCibObjectDataFileOwnerKey", + _CPCibObjectDataVisibleWindowsKey = "_CPCibObjectDataVisibleWindowsKey"; +{ +var the_class = objj_getClass("_CPCibObjectData") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibObjectData\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPCibObjectData__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibObjectData").super_class }, "init"); + if (self) + { + _replacementObjects = {}; + _namesKeys = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataNamesKeysKey); + _namesValues = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataNamesValuesKey); + _classesKeys = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataClassesKeysKey); + _classesValues = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataClassesValuesKey); + _connections = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataConnectionsKey); + _framework = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataFrameworkKey); + _nextOid = objj_msgSend(aCoder, "decodeIntForKey:", _CPCibObjectDataNextOidKey); + _objectsKeys = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataObjectsKeysKey); + _objectsValues = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataObjectsValuesKey); + _oidKeys = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataOidKeysKey); + _oidValues = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataOidValuesKey); + _fileOwner = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataFileOwnerKey); + _visibleWindows = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibObjectDataVisibleWindowsKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibObjectData__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _namesKeys, _CPCibObjectDataNamesKeysKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _namesValues, _CPCibObjectDataNamesValuesKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _classesKeys, _CPCibObjectDataClassesKeysKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _classesValues, _CPCibObjectDataClassesValuesKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _connections, _CPCibObjectDataConnectionsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _framework, _CPCibObjectDataFrameworkKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _nextOid, _CPCibObjectDataNextOidKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _objectsKeys, _CPCibObjectDataObjectsKeysKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _objectsValues, _CPCibObjectDataObjectsValuesKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _oidKeys, _CPCibObjectDataOidKeysKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _oidValues, _CPCibObjectDataOidValuesKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _fileOwner, _CPCibObjectDataFileOwnerKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _visibleWindows, _CPCibObjectDataVisibleWindowsKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("instantiateWithOwner:topLevelObjects:"), function $_CPCibObjectData__instantiateWithOwner_topLevelObjects_(self, _cmd, anOwner, topLevelObjects) +{ with(self) +{ + var count = objj_msgSend(_objectsKeys, "count"); + while (count--) + { + var object = _objectsKeys[count], + parent = _objectsValues[count], + instantiatedObject = object; + if (objj_msgSend(object, "respondsToSelector:", sel_getUid("_cibInstantiate"))) + { + var instantiatedObject = objj_msgSend(object, "_cibInstantiate"); + if (instantiatedObject !== object) + { + _replacementObjects[objj_msgSend(object, "UID")] = instantiatedObject; + if (objj_msgSend(instantiatedObject, "isKindOfClass:", objj_msgSend(CPView, "class"))) + { + var clipView = objj_msgSend(instantiatedObject, "superview"); + if (objj_msgSend(clipView, "isKindOfClass:", objj_msgSend(CPClipView, "class"))) + { + var scrollView = objj_msgSend(clipView, "superview"); + if (objj_msgSend(scrollView, "isKindOfClass:", objj_msgSend(CPScrollView, "class"))) + objj_msgSend(scrollView, "setDocumentView:", instantiatedObject); + } + } + } + } + if (topLevelObjects && parent === _fileOwner && object !== _fileOwner) + topLevelObjects.push(instantiatedObject); + } +} +},["void","id","CPMutableArray"]), new objj_method(sel_getUid("establishConnectionsWithOwner:topLevelObjects:"), function $_CPCibObjectData__establishConnectionsWithOwner_topLevelObjects_(self, _cmd, anOwner, topLevelObjects) +{ with(self) +{ + _replacementObjects[objj_msgSend(_fileOwner, "UID")] = anOwner; + var index = 0, + count = _connections.length; + for (; index < count; ++index) + { + var connection = _connections[index]; + objj_msgSend(connection, "replaceObjects:", _replacementObjects); + objj_msgSend(connection, "establishConnection"); + } +} +},["void","id","CPMutableArray"]), new objj_method(sel_getUid("awakeWithOwner:topLevelObjects:"), function $_CPCibObjectData__awakeWithOwner_topLevelObjects_(self, _cmd, anOwner, topLevelObjects) +{ with(self) +{ + var count = objj_msgSend(_objectsKeys, "count"); + while (count--) + { + var object = _objectsKeys[count], + instantiatedObject = _replacementObjects[objj_msgSend(object, "UID")]; + if (instantiatedObject) + object = instantiatedObject; + if (object !== anOwner && objj_msgSend(object, "respondsToSelector:", sel_getUid("awakeFromCib"))) + objj_msgSend(object, "awakeFromCib"); + } + if (objj_msgSend(anOwner, "respondsToSelector:", sel_getUid("awakeFromCib"))) + objj_msgSend(anOwner, "awakeFromCib"); +} +},["void","id","CPMutableArray"])]); +} + +p;19;_CPCibProxyObject.jt;1404;@STATIC;1.0;I;21;Foundation/CPObject.jt;1359; + + +objj_executeFile("Foundation/CPObject.j", NO); + + +{var the_class = objj_allocateClassPair(CPObject, "_CPCibProxyObject"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_identifier")]); +objj_registerClassPair(the_class); +} + +var _CPCibProxyObjectIdentifierKey = "CPIdentifier"; + +{ +var the_class = objj_getClass("_CPCibProxyObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPCibProxyObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPCibProxyObject__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibProxyObject").super_class }, "init"); + + if (self) + _identifier = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibProxyObjectIdentifierKey); + + if (objj_msgSend(aCoder, "respondsToSelector:", sel_getUid("externalObjectForProxyIdentifier:"))) + return objj_msgSend(aCoder, "externalObjectForProxyIdentifier:", _identifier); + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibProxyObject__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _identifier, _CPCibProxyObjectIdentifierKey); +} +},["void","CPCoder"])]); +} + +p;22;_CPCibWindowTemplate.jt;6738;@STATIC;1.0;I;21;Foundation/CPObject.jt;6693; + + +objj_executeFile("Foundation/CPObject.j", NO); + + +var _CPCibWindowTemplateMinSizeKey = "_CPCibWindowTemplateMinSizeKey", + _CPCibWindowTemplateMaxSizeKey = "_CPCibWindowTemplateMaxSizeKey", + + _CPCibWindowTemplateViewClassKey = "_CPCibWindowTemplateViewClassKey", + _CPCibWindowTemplateWindowClassKey = "_CPCibWindowTemplateWindowClassKey", + + _CPCibWindowTemplateWindowRectKey = "_CPCibWindowTemplateWindowRectKey", + _CPCibWindowTemplateWindowStyleMaskKey = "_CPCibWindowTempatStyleMaskKey", + _CPCibWindowTemplateWindowTitleKey = "_CPCibWindowTemplateWindowTitleKey", + _CPCibWindowTemplateWindowViewKey = "_CPCibWindowTemplateWindowViewKey", + + _CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop = "_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop"; + _CPCibWindowTemplateWindowIsFullPlatformWindowKey = "_CPCibWindowTemplateWindowIsFullPlatformWindowKey"; + +{var the_class = objj_allocateClassPair(CPObject, "_CPCibWindowTemplate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_minSize"), new objj_ivar("_maxSize"), new objj_ivar("_viewClass"), new objj_ivar("_windowClass"), new objj_ivar("_windowRect"), new objj_ivar("_windowStyleMask"), new objj_ivar("_windowTitle"), new objj_ivar("_windowView"), new objj_ivar("_windowAutorecalculatesKeyViewLoop"), new objj_ivar("_windowIsFullPlatformWindow")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $_CPCibWindowTemplate__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibWindowTemplate").super_class }, "init"); + + if (self) + { + _windowClass = "CPWindow"; + _windowRect = CGRectMake(0.0, 0.0, 400.0, 200.0); + _windowStyleMask = CPTitledWindowMask | CPClosableWindowMask | CPMiniaturizableWindowMask | CPResizableWindowMask; + + _windowTitle = "Window"; + _windowView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 400.0, 200.0)); + + _windowIsFullPlatformWindow = NO; + } + + return self; +} +},["id"]), new objj_method(sel_getUid("initWithCoder:"), function $_CPCibWindowTemplate__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPCibWindowTemplate").super_class }, "init"); + + if (self) + { + if (objj_msgSend(aCoder, "containsValueForKey:", _CPCibWindowTemplateMinSizeKey)) + _minSize = objj_msgSend(aCoder, "decodeSizeForKey:", _CPCibWindowTemplateMinSizeKey); + if (objj_msgSend(aCoder, "containsValueForKey:", _CPCibWindowTemplateMaxSizeKey)) + _maxSize = objj_msgSend(aCoder, "decodeSizeForKey:", _CPCibWindowTemplateMaxSizeKey); + + _viewClass = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateViewClassKey); + + _windowClass = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowClassKey); + _windowRect = objj_msgSend(aCoder, "decodeRectForKey:", _CPCibWindowTemplateWindowRectKey); + _windowStyleMask = objj_msgSend(aCoder, "decodeIntForKey:", _CPCibWindowTemplateWindowStyleMaskKey); + + _windowTitle = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowTitleKey); + _windowView = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowViewKey); + + _windowAutorecalculatesKeyViewLoop = !!objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop); + _windowIsFullPlatformWindow = !!objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibWindowTemplateWindowIsFullPlatformWindowKey); + } + + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPCibWindowTemplate__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_minSize) + objj_msgSend(aCoder, "encodeSize:forKey:", _minSize, _CPCibWindowTemplateMinSizeKey); + if (_maxSize) + objj_msgSend(aCoder, "encodeSize:forKey:", _maxSize, _CPCibWindowTemplateMaxSizeKey); + + objj_msgSend(aCoder, "encodeObject:forKey:", _viewClass, _CPCibWindowTemplateViewClassKey); + + objj_msgSend(aCoder, "encodeObject:forKey:", _windowClass, _CPCibWindowTemplateWindowClassKey); + objj_msgSend(aCoder, "encodeRect:forKey:", _windowRect, _CPCibWindowTemplateWindowRectKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _windowStyleMask, _CPCibWindowTemplateWindowStyleMaskKey); + + objj_msgSend(aCoder, "encodeObject:forKey:", _windowTitle, _CPCibWindowTemplateWindowTitleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _windowView, _CPCibWindowTemplateWindowViewKey); + + if (_windowAutorecalculatesKeyViewLoop) + objj_msgSend(aCoder, "encodeObject:forKey:", _windowAutorecalculatesKeyViewLoop, _CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop); + + if (_windowIsFullPlatformWindow) + objj_msgSend(aCoder, "encodeObject:forKey:", _windowIsFullPlatformWindow, _CPCibWindowTemplateWindowIsFullPlatformWindowKey); +} +},["void","CPCoder"]), new objj_method(sel_getUid("customClassName"), function $_CPCibWindowTemplate__customClassName(self, _cmd) +{ with(self) +{ + return _windowClass; +} +},["CPString"]), new objj_method(sel_getUid("setCustomClassName:"), function $_CPCibWindowTemplate__setCustomClassName_(self, _cmd, aClassName) +{ with(self) +{ + _windowClass = aClassName; +} +},["void","CPString"]), new objj_method(sel_getUid("windowClass"), function $_CPCibWindowTemplate__windowClass(self, _cmd) +{ with(self) +{ + return _windowClass; +} +},["CPString"]), new objj_method(sel_getUid("_cibInstantiate"), function $_CPCibWindowTemplate___cibInstantiate(self, _cmd) +{ with(self) +{ + var windowClass = CPClassFromString(objj_msgSend(self, "windowClass")); + + + + + + var theWindow = objj_msgSend(objj_msgSend(windowClass, "alloc"), "initWithContentRect:styleMask:", _windowRect, _windowStyleMask); + + if (_minSize) + objj_msgSend(theWindow, "setMinSize:", _minSize); + if (_maxSize) + objj_msgSend(theWindow, "setMaxSize:", _maxSize); + + + objj_msgSend(theWindow, "setTitle:", _windowTitle); + + + objj_msgSend(_windowView, "setAutoresizesSubviews:", NO); + + objj_msgSend(theWindow, "setContentView:", _windowView); + + objj_msgSend(_windowView, "setAutoresizesSubviews:", YES); + + if (objj_msgSend(_viewClass, "isKindOfClass:", objj_msgSend(CPToolbar, "class"))) + { + objj_msgSend(theWindow, "setToolbar:", _viewClass); + } + + objj_msgSend(theWindow, "setAutorecalculatesKeyViewLoop:", _windowAutorecalculatesKeyViewLoop); + objj_msgSend(theWindow, "setFullBridge:", _windowIsFullPlatformWindow); + + return theWindow; +} +},["id"])]); +} + +p;7;CPCib.jt;7458;@STATIC;1.0;I;21;Foundation/CPObject.jI;28;Foundation/CPURLConnection.jI;25;Foundation/CPURLRequest.ji;20;_CPCibClassSwapper.ji;20;_CPCibCustomObject.ji;22;_CPCibCustomResource.ji;18;_CPCibCustomView.ji;23;_CPCibKeyedUnarchiver.ji;18;_CPCibObjectData.ji;19;_CPCibProxyObject.ji;22;_CPCibWindowTemplate.jt;7148;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPURLConnection.j", NO); +objj_executeFile("Foundation/CPURLRequest.j", NO); +objj_executeFile("_CPCibClassSwapper.j", YES); +objj_executeFile("_CPCibCustomObject.j", YES); +objj_executeFile("_CPCibCustomResource.j", YES); +objj_executeFile("_CPCibCustomView.j", YES); +objj_executeFile("_CPCibKeyedUnarchiver.j", YES); +objj_executeFile("_CPCibObjectData.j", YES); +objj_executeFile("_CPCibProxyObject.j", YES); +objj_executeFile("_CPCibWindowTemplate.j", YES); +CPCibOwner = "CPCibOwner", +CPCibTopLevelObjects = "CPCibTopLevelObjects", +CPCibReplacementClasses = "CPCibReplacementClasses", +CPCibExternalObjects = "CPCibExternalObjects"; +var CPCibObjectDataKey = "CPCibObjectDataKey"; +{var the_class = objj_allocateClassPair(CPObject, "CPCib"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_data"), new objj_ivar("_bundle"), new objj_ivar("_awakenCustomResources"), new objj_ivar("_loadDelegate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithContentsOfURL:"), function $CPCib__initWithContentsOfURL_(self, _cmd, aURL) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCib").super_class }, "init"); + if (self) + { + _data = objj_msgSend(CPURLConnection, "sendSynchronousRequest:returningResponse:", objj_msgSend(CPURLRequest, "requestWithURL:", aURL), nil); + _awakenCustomResources = YES; + } + return self; +} +},["id","CPURL"]), new objj_method(sel_getUid("initWithContentsOfURL:loadDelegate:"), function $CPCib__initWithContentsOfURL_loadDelegate_(self, _cmd, aURL, aLoadDelegate) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCib").super_class }, "init"); + if (self) + { + objj_msgSend(CPURLConnection, "connectionWithRequest:delegate:", objj_msgSend(CPURLRequest, "requestWithURL:", aURL), self); + _awakenCustomResources = YES; + _loadDelegate = aLoadDelegate; + } + return self; +} +},["id","CPURL","id"]), new objj_method(sel_getUid("initWithCibNamed:bundle:"), function $CPCib__initWithCibNamed_bundle_(self, _cmd, aName, aBundle) +{ with(self) +{ + if (!objj_msgSend(aName, "hasSuffix:", ".cib")) + aName = objj_msgSend(aName, "stringByAppendingString:", ".cib"); + self = objj_msgSend(self, "initWithContentsOfURL:", objj_msgSend(aBundle || objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", aName)); + if (self) + _bundle = aBundle; + return self; +} +},["id","CPString","CPBundle"]), new objj_method(sel_getUid("initWithCibNamed:bundle:loadDelegate:"), function $CPCib__initWithCibNamed_bundle_loadDelegate_(self, _cmd, aName, aBundle, aLoadDelegate) +{ with(self) +{ + if (!objj_msgSend(aName, "hasSuffix:", ".cib")) + aName = objj_msgSend(aName, "stringByAppendingString:", ".cib"); + self = objj_msgSend(self, "initWithContentsOfURL:loadDelegate:", objj_msgSend(aBundle || objj_msgSend(CPBundle, "mainBundle"), "pathForResource:", aName), aLoadDelegate); + if (self) + _bundle = aBundle; + return self; +} +},["id","CPString","CPBundle","id"]), new objj_method(sel_getUid("_setAwakenCustomResources:"), function $CPCib___setAwakenCustomResources_(self, _cmd, shouldAwakenCustomResources) +{ with(self) +{ + _awakenCustomResources = shouldAwakenCustomResources; +} +},["void","BOOL"]), new objj_method(sel_getUid("_awakenCustomResources"), function $CPCib___awakenCustomResources(self, _cmd) +{ with(self) +{ + return _awakenCustomResources; +} +},["BOOL"]), new objj_method(sel_getUid("instantiateCibWithExternalNameTable:"), function $CPCib__instantiateCibWithExternalNameTable_(self, _cmd, anExternalNameTable) +{ with(self) +{ + var bundle = _bundle, + owner = objj_msgSend(anExternalNameTable, "objectForKey:", CPCibOwner); + if (!bundle && owner) + bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(owner, "class")); + var unarchiver = objj_msgSend(objj_msgSend(_CPCibKeyedUnarchiver, "alloc"), "initForReadingWithData:bundle:awakenCustomResources:", _data, bundle, _awakenCustomResources), + replacementClasses = objj_msgSend(anExternalNameTable, "objectForKey:", CPCibReplacementClasses); + if (replacementClasses) + { + var key = nil, + keyEnumerator = objj_msgSend(replacementClasses, "keyEnumerator"); + while (key = objj_msgSend(keyEnumerator, "nextObject")) + objj_msgSend(unarchiver, "setClass:forClassName:", objj_msgSend(replacementClasses, "objectForKey:", key), key); + } + objj_msgSend(unarchiver, "setExternalObjectsForProxyIdentifiers:", objj_msgSend(anExternalNameTable, "objectForKey:", CPCibExternalObjects)); + var objectData = objj_msgSend(unarchiver, "decodeObjectForKey:", CPCibObjectDataKey); + if (!objectData || !objj_msgSend(objectData, "isKindOfClass:", objj_msgSend(_CPCibObjectData, "class"))) + return NO; + var topLevelObjects = objj_msgSend(anExternalNameTable, "objectForKey:", CPCibTopLevelObjects); + objj_msgSend(objectData, "instantiateWithOwner:topLevelObjects:", owner, topLevelObjects); + objj_msgSend(objectData, "establishConnectionsWithOwner:topLevelObjects:", owner, topLevelObjects); + objj_msgSend(objectData, "awakeWithOwner:topLevelObjects:", owner, topLevelObjects); + objj_msgSend(objectData, "displayVisibleWindows"); + return YES; +} +},["BOOL","CPDictionary"]), new objj_method(sel_getUid("instantiateCibWithOwner:topLevelObjects:"), function $CPCib__instantiateCibWithOwner_topLevelObjects_(self, _cmd, anOwner, topLevelObjects) +{ with(self) +{ + return objj_msgSend(self, "instantiateCibWithExternalNameTable:", objj_msgSend(CPDictionary, "dictionaryWithObjectsAndKeys:", anOwner, CPCibOwner, topLevelObjects, CPCibTopLevelObjects)); +} +},["BOOL","id","CPArray"])]); +} +{ +var the_class = objj_getClass("CPCib") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCib\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("connection:didReceiveData:"), function $CPCib__connection_didReceiveData_(self, _cmd, aConnection, data) +{ with(self) +{ + if (!data) + return objj_msgSend(self, "connection:didFailWithError:", aConnection, nil); + _data = objj_msgSend(CPData, "dataWithRawString:", data); +} +},["void","CPURLConnection","CPString"]), new objj_method(sel_getUid("connection:didFailWithError:"), function $CPCib__connection_didFailWithError_(self, _cmd, aConnection, anError) +{ with(self) +{ + if (objj_msgSend(_loadDelegate, "respondsToSelector:", sel_getUid("cibDidFailToLoad:"))) + objj_msgSend(_loadDelegate, "cibDidFailToLoad:", self); + _loadDelegate = nil; +} +},["void","CPURLConnection","CPError"]), new objj_method(sel_getUid("connectionDidFinishLoading:"), function $CPCib__connectionDidFinishLoading_(self, _cmd, aConnection) +{ with(self) +{ + if (objj_msgSend(_loadDelegate, "respondsToSelector:", sel_getUid("cibDidFinishLoading:"))) + objj_msgSend(_loadDelegate, "cibDidFinishLoading:", self); + _loadDelegate = nil; +} +},["void","CPURLConnection"])]); +} + +p;16;CPCibConnector.jt;3624;@STATIC;1.0;I;21;Foundation/CPObject.jI;29;Foundation/CPKeyValueCoding.jt;3545;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPKeyValueCoding.j", NO); +var _CPCibConnectorSourceKey = "_CPCibConnectorSourceKey", + _CPCibConnectorDestinationKey = "_CPCibConnectorDestinationKey", + _CPCibConnectorLabelKey = "_CPCibConnectorLabelKey"; +{var the_class = objj_allocateClassPair(CPObject, "CPCibConnector"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_source"), new objj_ivar("_destination"), new objj_ivar("_label")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("source"), function $CPCibConnector__source(self, _cmd) +{ with(self) +{ +return _source; +} +},["id"]), +new objj_method(sel_getUid("setSource:"), function $CPCibConnector__setSource_(self, _cmd, newValue) +{ with(self) +{ +_source = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("destination"), function $CPCibConnector__destination(self, _cmd) +{ with(self) +{ +return _destination; +} +},["id"]), +new objj_method(sel_getUid("setDestination:"), function $CPCibConnector__setDestination_(self, _cmd, newValue) +{ with(self) +{ +_destination = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("label"), function $CPCibConnector__label(self, _cmd) +{ with(self) +{ +return _label; +} +},["id"]), +new objj_method(sel_getUid("setLabel:"), function $CPCibConnector__setLabel_(self, _cmd, newValue) +{ with(self) +{ +_label = newValue; +} +},["void","id"]), new objj_method(sel_getUid("replaceObject:withObject:"), function $CPCibConnector__replaceObject_withObject_(self, _cmd, anObject, anotherObject) +{ with(self) +{ + if (_source === anObject) + _source = anotherObject; + if (_destination === anObject) + _destination = anotherObject; +} +},["void","id","id"]), new objj_method(sel_getUid("replaceObjects:"), function $CPCibConnector__replaceObjects_(self, _cmd, replacementObjects) +{ with(self) +{ + var replacement = replacementObjects[objj_msgSend(_source, "UID")]; + if (replacement !== undefined) + _source = replacement; + replacement = replacementObjects[objj_msgSend(_destination, "UID")]; + if (replacement !== undefined) + _destination = replacement; +} +},["void","Object"])]); +} +{ +var the_class = objj_getClass("CPCibConnector") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCibConnector\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPCibConnector__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCibConnector").super_class }, "init"); + if (self) + { + _source = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibConnectorSourceKey); + _destination = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibConnectorDestinationKey); + _label = objj_msgSend(aCoder, "decodeObjectForKey:", _CPCibConnectorLabelKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPCibConnector__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _source, _CPCibConnectorSourceKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _destination, _CPCibConnectorDestinationKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _label, _CPCibConnectorLabelKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPCibConnector, "_CPCibConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;23;CPCibControlConnector.jt;2033;@STATIC;1.0;i;16;CPCibConnector.jt;1993;objj_executeFile("CPCibConnector.j", YES); +{var the_class = objj_allocateClassPair(CPCibConnector, "CPCibControlConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("establishConnection"), function $CPCibControlConnector__establishConnection(self, _cmd) +{ with(self) +{ + var selectorName = _label, + selectorNameLength = objj_msgSend(selectorName, "length"); + if (selectorNameLength && selectorName.charAt(selectorNameLength - 1) !== ':') + selectorName += ':'; + var selector = CPSelectorFromString(selectorName); + if (!selector) + { + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "-[" + objj_msgSend(self, "className") + ' ' + _cmd + "] selector " + selectorName + " does not exist."); + } + if (_destination && !objj_msgSend(_destination, "respondsToSelector:", selector)) + { + CPLog.warn("Could not connect the action " + selector + " to target of class " + objj_msgSend(_destination, "className")); + return; + } + if (objj_msgSend(_source, "respondsToSelector:", sel_getUid("setAction:"))) + objj_msgSend(_source, sel_getUid("setAction:"), selector); + else + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "-[" + objj_msgSend(self, "className") + ' ' + _cmd + "] " + objj_msgSend(_source, "description") + " does not respond to setAction:"); + if (objj_msgSend(_source, "respondsToSelector:", sel_getUid("setTarget:"))) + objj_msgSend(_source, sel_getUid("setTarget:"), _destination); + else + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "-[" + objj_msgSend(self, "className") + ' ' + _cmd + "] " + objj_msgSend(_source, "description") + " does not respond to setTarget:"); +} +},["void"])]); +} +{var the_class = objj_allocateClassPair(CPCibControlConnector, "_CPCibControlConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;14;CPCibLoading.jt;5086;@STATIC;1.0;I;21;Foundation/CPBundle.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;4985;objj_executeFile("Foundation/CPBundle.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +var CPCibOwner = "CPCibOwner"; +{ +var the_class = objj_getClass("CPObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("awakeFromCib"), function $CPObject__awakeFromCib(self, _cmd) +{ with(self) +{ +} +},["void"])]); +} +{ +var the_class = objj_getClass("CPBundle") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPBundle\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("loadCibFile:externalNameTable:"), function $CPBundle__loadCibFile_externalNameTable_(self, _cmd, aFileName, aNameTable) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithContentsOfURL:", aFileName), "instantiateCibWithExternalNameTable:", aNameTable); +} +},["CPCib","CPString","CPDictionary"]), new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"), function $CPBundle__loadCibFile_externalNameTable_loadDelegate_(self, _cmd, aFileName, aNameTable, aDelegate) +{ with(self) +{ + return (objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithCibNamed:bundle:loadDelegate:", aFileName, self, objj_msgSend(objj_msgSend(_CPCibLoadDelegate, "alloc"), "initWithLoadDelegate:externalNameTable:", aDelegate, aNameTable))); +} +},["CPCib","CPString","CPDictionary","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("loadCibFile:externalNameTable:"), function $CPBundle__loadCibFile_externalNameTable_(self, _cmd, anAbsolutePath, aNameTable) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithContentsOfURL:", anAbsolutePath), "instantiateCibWithExternalNameTable:", aNameTable); +} +},["CPCib","CPString","CPDictionary"]), new objj_method(sel_getUid("loadCibNamed:owner:"), function $CPBundle__loadCibNamed_owner_(self, _cmd, aName, anOwner) +{ with(self) +{ + if (!objj_msgSend(aName, "hasSuffix:", ".cib")) + aName = objj_msgSend(aName, "stringByAppendingString:", ".cib"); + var bundle = anOwner ? objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(anOwner, "class")) : objj_msgSend(CPBundle, "mainBundle"), + path = objj_msgSend(bundle, "pathForResource:", aName); + return objj_msgSend(self, "loadCibFile:externalNameTable:", path, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anOwner, CPCibOwner)); +} +},["CPCib","CPString","id"]), new objj_method(sel_getUid("loadCibFile:externalNameTable:loadDelegate:"), function $CPBundle__loadCibFile_externalNameTable_loadDelegate_(self, _cmd, anAbsolutePath, aNameTable, aDelegate) +{ with(self) +{ + return (objj_msgSend(objj_msgSend(CPCib, "alloc"), "initWithContentsOfURL:loadDelegate:", anAbsolutePath, objj_msgSend(objj_msgSend(_CPCibLoadDelegate, "alloc"), "initWithLoadDelegate:externalNameTable:", aDelegate, aNameTable))); +} +},["CPCib","CPString","CPDictionary",null]), new objj_method(sel_getUid("loadCibNamed:owner:loadDelegate:"), function $CPBundle__loadCibNamed_owner_loadDelegate_(self, _cmd, aName, anOwner, aDelegate) +{ with(self) +{ + if (!objj_msgSend(aName, "hasSuffix:", ".cib")) + aName = objj_msgSend(aName, "stringByAppendingString:", ".cib"); + var bundle = anOwner ? objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(anOwner, "class")) : objj_msgSend(CPBundle, "mainBundle"), + path = objj_msgSend(bundle, "pathForResource:", aName); + return objj_msgSend(self, "loadCibFile:externalNameTable:loadDelegate:", path, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anOwner, CPCibOwner), aDelegate); +} +},["CPCib","CPString","id","id"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPCibLoadDelegate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_loadDelegate"), new objj_ivar("_externalNameTable")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLoadDelegate:externalNameTable:"), function $_CPCibLoadDelegate__initWithLoadDelegate_externalNameTable_(self, _cmd, aLoadDelegate, anExternalNameTable) +{ with(self) +{ + self = objj_msgSend(self, "init"); + if (self) + { + _loadDelegate = aLoadDelegate; + _externalNameTable = anExternalNameTable; + } + return self; +} +},["id","id","id"]), new objj_method(sel_getUid("cibDidFinishLoading:"), function $_CPCibLoadDelegate__cibDidFinishLoading_(self, _cmd, aCib) +{ with(self) +{ + objj_msgSend(aCib, "instantiateCibWithExternalNameTable:", _externalNameTable); + objj_msgSend(_loadDelegate, "cibDidFinishLoading:", aCib); +} +},["void","CPCib"]), new objj_method(sel_getUid("cibDidFailToLoad:"), function $_CPCibLoadDelegate__cibDidFailToLoad_(self, _cmd, aCib) +{ with(self) +{ + objj_msgSend(_loadDelegate, "cibDidFailToLoad:", aCib); +} +},["void","CPCib"])]); +} + +p;22;CPCibOutletConnector.jt;932;@STATIC;1.0;i;16;CPCibConnector.jt;893;objj_executeFile("CPCibConnector.j", YES); +{var the_class = objj_allocateClassPair(CPCibConnector, "CPCibOutletConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("establishConnection"), function $CPCibOutletConnector__establishConnection(self, _cmd) +{ with(self) +{ + try + { + objj_msgSend(_source, "setValue:forKey:", _destination, _label); + } + catch (anException) + { + if (objj_msgSend(anException, "name") === CPUndefinedKeyException) + CPLog.warn("Could not connect the outlet " + _label + " of target of class " + objj_msgSend(_source, "className")); + else + throw anException; + } +} +},["void"])]); +} +{var the_class = objj_allocateClassPair(CPCibOutletConnector, "_CPCibOutletConnector"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;13;CAAnimation.jt;5760;@STATIC;1.0;I;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;23;CAMediaTimingFunction.jt;5661;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CAMediaTimingFunction.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CAAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isRemovedOnCompletion"), new objj_ivar("_delegate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CAAnimation__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CAAnimation").super_class }, "init"); + if (self) + _isRemovedOnCompletion = YES; + return self; +} +},["id"]), new objj_method(sel_getUid("shouldArchiveValueForKey:"), function $CAAnimation__shouldArchiveValueForKey_(self, _cmd, aKey) +{ with(self) +{ + return YES; +} +},["void","CPString"]), new objj_method(sel_getUid("setRemovedOnCompletion:"), function $CAAnimation__setRemovedOnCompletion_(self, _cmd, isRemovedOnCompletion) +{ with(self) +{ + _isRemovedOnCompletion = isRemovedOnCompletion; +} +},["void","BOOL"]), new objj_method(sel_getUid("removedOnCompletion"), function $CAAnimation__removedOnCompletion(self, _cmd) +{ with(self) +{ + return _isRemovedOnCompletion; +} +},["BOOL"]), new objj_method(sel_getUid("isRemovedOnCompletion"), function $CAAnimation__isRemovedOnCompletion(self, _cmd) +{ with(self) +{ + return _isRemovedOnCompletion; +} +},["BOOL"]), new objj_method(sel_getUid("timingFunction"), function $CAAnimation__timingFunction(self, _cmd) +{ with(self) +{ + return nil; +} +},["CAMediaTimingFunction"]), new objj_method(sel_getUid("setDelegate:"), function $CAAnimation__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CAAnimation__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("runActionForKey:object:arguments:"), function $CAAnimation__runActionForKey_object_arguments_(self, _cmd, aKey, anObject, arguments) +{ with(self) +{ + objj_msgSend(anObject, "addAnimation:forKey:", self, aKey); +} +},["void","CPString","id","CPDictionary"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("animation"), function $CAAnimation__animation(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("defaultValueForKey:"), function $CAAnimation__defaultValueForKey_(self, _cmd, aKey) +{ with(self) +{ + return nil; +} +},["id","CPString"])]); +} +{var the_class = objj_allocateClassPair(CAAnimation, "CAPropertyAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_keyPath"), new objj_ivar("_isCumulative"), new objj_ivar("_isAdditive")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setKeyPath:"), function $CAPropertyAnimation__setKeyPath_(self, _cmd, aKeyPath) +{ with(self) +{ + _keyPath = aKeyPath; +} +},["void","CPString"]), new objj_method(sel_getUid("keyPath"), function $CAPropertyAnimation__keyPath(self, _cmd) +{ with(self) +{ + return _keyPath; +} +},["CPString"]), new objj_method(sel_getUid("setCumulative:"), function $CAPropertyAnimation__setCumulative_(self, _cmd, isCumulative) +{ with(self) +{ + _isCumulative = isCumulative; +} +},["void","BOOL"]), new objj_method(sel_getUid("cumulative"), function $CAPropertyAnimation__cumulative(self, _cmd) +{ with(self) +{ + return _isCumulative; +} +},["BOOL"]), new objj_method(sel_getUid("isCumulative"), function $CAPropertyAnimation__isCumulative(self, _cmd) +{ with(self) +{ + return _isCumulative; +} +},["BOOL"]), new objj_method(sel_getUid("setAdditive:"), function $CAPropertyAnimation__setAdditive_(self, _cmd, isAdditive) +{ with(self) +{ + _isAdditive = isAdditive; +} +},["void","BOOL"]), new objj_method(sel_getUid("additive"), function $CAPropertyAnimation__additive(self, _cmd) +{ with(self) +{ + return _isAdditive; +} +},["BOOL"]), new objj_method(sel_getUid("isAdditive"), function $CAPropertyAnimation__isAdditive(self, _cmd) +{ with(self) +{ + return _isAdditive; +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("animationWithKeyPath:"), function $CAPropertyAnimation__animationWithKeyPath_(self, _cmd, aKeyPath) +{ with(self) +{ + var animation = objj_msgSend(self, "animation"); + objj_msgSend(animation, "setKeyPath:", aKeyPath); + return animation; +} +},["id","CPString"])]); +} +{var the_class = objj_allocateClassPair(CAPropertyAnimation, "CABasicAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_fromValue"), new objj_ivar("_toValue"), new objj_ivar("_byValue")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setFromValue:"), function $CABasicAnimation__setFromValue_(self, _cmd, aValue) +{ with(self) +{ + _fromValue = aValue; +} +},["void","id"]), new objj_method(sel_getUid("fromValue"), function $CABasicAnimation__fromValue(self, _cmd) +{ with(self) +{ + return _fromValue; +} +},["id"]), new objj_method(sel_getUid("setToValue:"), function $CABasicAnimation__setToValue_(self, _cmd, aValue) +{ with(self) +{ + _toValue = aValue; +} +},["void","id"]), new objj_method(sel_getUid("toValue"), function $CABasicAnimation__toValue(self, _cmd) +{ with(self) +{ + return _toValue; +} +},["id"]), new objj_method(sel_getUid("setByValue:"), function $CABasicAnimation__setByValue_(self, _cmd, aValue) +{ with(self) +{ + _byValue = aValue; +} +},["void","id"]), new objj_method(sel_getUid("byValue"), function $CABasicAnimation__byValue(self, _cmd) +{ with(self) +{ + return _byValue; +} +},["id"])]); +} + +p;16;CABackingStore.jt;980;@STATIC;1.0;i;12;CGGeometry.ji;17;CPCompatibility.jt;923;objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPCompatibility.j", YES); +CABackingStoreGetContext= function(aBackingStore) +{ + return aBackingStore.context; +} +if (CPFeatureIsCompatible(CPHTMLCanvasFeature)) +{ +CABackingStoreCreate = function() +{ + var DOMElement = document.createElement("canvas"); + DOMElement.style.position = "absolute"; + return { context:DOMElement.getContext("2d"), buffer:DOMElement, _image:DOMElement }; +} +CABackingStoreSetSize = function(aBackingStore, aSize) +{ + var buffer = aBackingStore.buffer; + buffer.width = aSize.width; + buffer.height = aSize.height; + buffer.style.width = aSize.width + "px";; + buffer.style.height = aSize.height + "px";; +} +} +else +{ +CABackingStoreCreate = function() +{ + var context = CGBitmapGraphicsContextCreate(); + context.buffer = ""; + return { context:context }; +} +CABackingStoreSetSize = function(aBackingStore, aSize) +{ +} +} + +p;14;CAFlashLayer.jt;1191;@STATIC;1.0;i;9;CALayer.ji;14;CPFlashMovie.jt;1140;objj_executeFile("CALayer.j", YES); +objj_executeFile("CPFlashMovie.j", YES); +{var the_class = objj_allocateClassPair(CALayer, "CAFlashLayer"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_flashMovie")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setFlashMovie:"), function $CAFlashLayer__setFlashMovie_(self, _cmd, aFlashMovie) +{ with(self) +{ + if (_flashMovie == aFlashMovie) + return; + _flashMovie = aFlashMovie; + _DOMElement.innerHTML = "<object width = \"100%\" height = \"100%\"><param name = \"movie\" value = \"" + + aFlashMovie._fileName + + "\"></param><param name = \"wmode\" value = \"transparent\"></param><embed src = \"" + + aFlashMovie._fileName + "\" type = \"application/x-shockwave-flash\" wmode = \"transparent\" width = \"100%\" height = \"100%\"></embed></object>"; +} +},["void","CPFlashMovie"]), new objj_method(sel_getUid("flashMovie"), function $CAFlashLayer__flashMovie(self, _cmd) +{ with(self) +{ + return _flashMovie; +} +},["CPFlashMovie"])]); +} + +p;9;CALayer.jt;37568;@STATIC;1.0;I;21;Foundation/CPObject.jI;23;AppKit/CABackingStore.jI;18;AppKit/CGContext.jI;19;AppKit/CGGeometry.ji;12;CGGeometry.jt;37430;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("AppKit/CABackingStore.j", NO); +objj_executeFile("AppKit/CGContext.j", NO); +objj_executeFile("AppKit/CGGeometry.j", NO); +objj_executeFile("CGGeometry.j", YES); +CGAffineTransformMake= function(a, b, c, d, tx, ty) { return { a:a, b:b, c:c, d:d, tx:tx, ty:ty }; } +CGAffineTransformMakeIdentity= function() { return { a:1.0, b:0.0, c:0.0, d:1.0, tx:0.0, ty:0.0 }; } +CGAffineTransformMakeCopy= function(anAffineTransform) { return { a:anAffineTransform.a, b:anAffineTransform.b, c:anAffineTransform.c, d:anAffineTransform.d, tx:anAffineTransform.tx, ty:anAffineTransform.ty }; } +CGAffineTransformMakeScale= function(sx, sy) { return { a:sx, b:0.0, c:0.0, d:sy, tx:0.0, ty:0.0 }; } +CGAffineTransformMakeTranslation= function(tx, ty) { return { a:1.0, b:0.0, c:0.0, d:1.0, tx:tx, ty:ty }; } +CGAffineTransformTranslate= function(aTransform, tx, ty) { return { a:aTransform.a, b:aTransform.b, c:aTransform.c, d:aTransform.d, tx:aTransform.tx + aTransform.a * tx + aTransform.c * ty, ty:aTransform.ty + aTransform.b * tx + aTransform.d * ty }; } +CGAffineTransformScale= function(aTransform, sx, sy) { return { a:aTransform.a * sx, b:aTransform.b * sx, c:aTransform.c * sy, d:aTransform.d * sy, tx:aTransform.tx, ty:aTransform.ty }; } +CGAffineTransformConcat= function(lhs, rhs) { return { a:lhs.a * rhs.a + lhs.b * rhs.c, b:lhs.a * rhs.b + lhs.b * rhs.d, c:lhs.c * rhs.a + lhs.d * rhs.c, d:lhs.c * rhs.b + lhs.d * rhs.d, tx:lhs.tx * rhs.a + lhs.ty * rhs.c + rhs.tx, ty:lhs.tx * rhs.b + lhs.ty * rhs.d + rhs.ty }; } +CGPointApplyAffineTransform= function(aPoint, aTransform) { return { x:aPoint.x * aTransform.a + aPoint.y * aTransform.c + aTransform.tx, y:aPoint.x * aTransform.b + aPoint.y * aTransform.d + aTransform.ty }; } +CGSizeApplyAffineTransform= function(aSize, aTransform) { return { width:aSize.width * aTransform.a + aSize.height * aTransform.c, height:aSize.width * aTransform.b + aSize.height * aTransform.d }; } +CGAffineTransformIsIdentity= function(aTransform) { return (aTransform.a == 1 && aTransform.b == 0 && aTransform.c == 0 && aTransform.d == 1 && aTransform.tx == 0 && aTransform.ty == 0); } +CGAffineTransformEqualToTransform= function(lhs, rhs) { return (lhs.a == rhs.a && lhs.b == rhs.b && lhs.c == rhs.c && lhs.d == rhs.d && lhs.tx == rhs.tx && lhs.ty == rhs.ty); } +CGStringCreateWithCGAffineTransform= function(aTransform) { return (" [[ " + aTransform.a + ", " + aTransform.b + ", 0 ], [ " + aTransform.c + ", " + aTransform.d + ", 0 ], [ " + aTransform.tx + ", " + aTransform.ty + ", 1]]"); } +CGAffineTransformCreateCopy= function(aTransform) +{ + return { a:aTransform.a, b:aTransform.b, c:aTransform.c, d:aTransform.d, tx:aTransform.tx, ty:aTransform.ty }; +} +CGAffineTransformMakeRotation= function(anAngle) +{ + var sin = SIN(anAngle), + cos = COS(anAngle); + return { a:cos, b:sin, c:-sin, d:cos, tx:0.0, ty:0.0 }; +} +CGAffineTransformRotate= function(aTransform, anAngle) +{ + var sin = SIN(anAngle), + cos = COS(anAngle); + return { + a:aTransform.a * cos + aTransform.c * sin, + b:aTransform.b * cos + aTransform.d * sin, + c:aTransform.c * cos - aTransform.a * sin, + d:aTransform.d * cos - aTransform.b * sin, + tx:aTransform.tx, + ty:aTransform.ty + }; +} +CGAffineTransformInvert= function(aTransform) +{ + var determinant = 1 / (aTransform.a * aTransform.d - aTransform.b * aTransform.c); + return { + a:determinant * aTransform.d, + b:-determinant * aTransform.b, + c:-determinant * aTransform.c, + d:determinant * aTransform.a, + tx:determinant * (aTransform.c * aTransform.ty - aTransform.d * aTransform.tx), + ty:determinant * (aTransform.b * aTransform.tx - aTransform.a * aTransform.ty) + }; +} +CGRectApplyAffineTransform= function(aRect, anAffineTransform) +{ + var top = (aRect.origin.y), + left = (aRect.origin.x), + right = (aRect.origin.x + aRect.size.width), + bottom = (aRect.origin.y + aRect.size.height), + topLeft = CGPointApplyAffineTransform({ x:left, y:top }, anAffineTransform), + topRight = CGPointApplyAffineTransform({ x:right, y:top }, anAffineTransform), + bottomLeft = CGPointApplyAffineTransform({ x:left, y:bottom }, anAffineTransform), + bottomRight = CGPointApplyAffineTransform({ x:right, y:bottom }, anAffineTransform), + minX = MIN(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x), + maxX = MAX(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x), + minY = MIN(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y), + maxY = MAX(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y); + return { origin: { x:minX, y:minY }, size: { width:(maxX - minX), height:(maxY - minY) } }; +} +CPStringFromCGAffineTransform= function(anAffineTransform) +{ + return '{' + anAffineTransform.a + ", " + anAffineTransform.b + ", " + anAffineTransform.c + ", " + anAffineTransform.d + ", " + anAffineTransform.tx + ", " + anAffineTransform.ty + '}'; +} +var CALayerGeometryBoundsMask = 1, + CALayerGeometryPositionMask = 2, + CALayerGeometryAnchorPointMask = 4, + CALayerGeometryAffineTransformMask = 8, + CALayerGeometryParentSublayerTransformMask = 16; +var USE_BUFFER = NO; +var CALayerFrameOriginUpdateMask = 1, + CALayerFrameSizeUpdateMask = 2, + CALayerZPositionUpdateMask = 4, + CALayerDisplayUpdateMask = 8, + CALayerCompositeUpdateMask = 16, + CALayerDOMUpdateMask = CALayerZPositionUpdateMask | CALayerFrameOriginUpdateMask | CALayerFrameSizeUpdateMask; +var CALayerRegisteredRunLoopUpdates = nil; +{var the_class = objj_allocateClassPair(CPObject, "CALayer"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_frame"), new objj_ivar("_bounds"), new objj_ivar("_position"), new objj_ivar("_zPosition"), new objj_ivar("_anchorPoint"), new objj_ivar("_affineTransform"), new objj_ivar("_sublayerTransform"), new objj_ivar("_sublayerTransformForSublayers"), new objj_ivar("_backingStoreFrame"), new objj_ivar("_standardBackingStoreFrame"), new objj_ivar("_hasSublayerTransform"), new objj_ivar("_hasCustomBackingStoreFrame"), new objj_ivar("_opacity"), new objj_ivar("_isHidden"), new objj_ivar("_backgroundColor"), new objj_ivar("_superlayer"), new objj_ivar("_sublayers"), new objj_ivar("_runLoopUpdateMask"), new objj_ivar("_needsDisplayOnBoundsChange"), new objj_ivar("_delegate"), new objj_ivar("_delegateRespondsToDisplayLayerSelector"), new objj_ivar("_delegateRespondsToDrawLayerInContextSelector"), new objj_ivar("_DOMElement"), new objj_ivar("_DOMContentsElement"), new objj_ivar("_contents"), new objj_ivar("_context"), new objj_ivar("_owningView"), new objj_ivar("_transformToLayer"), new objj_ivar("_transformFromLayer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CALayer__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CALayer").super_class }, "init"); + + if (self) + { + _frame = CGRectMakeZero(); + + _backingStoreFrame = CGRectMakeZero(); + _standardBackingStoreFrame = CGRectMakeZero(); + + _bounds = CGRectMakeZero(); + _position = CGPointMakeZero(); + _zPosition = 0.0; + _anchorPoint = CGPointMake(0.5, 0.5); + _affineTransform = CGAffineTransformMakeIdentity(); + _sublayerTransform = CGAffineTransformMakeIdentity(); + + _transformToLayer = CGAffineTransformMakeIdentity(); + _transformFromLayer = CGAffineTransformMakeIdentity(); + + _opacity = 1.0; + _isHidden = NO; + _masksToBounds = NO; + + _sublayers = []; + + _DOMElement = document.createElement("div"); + + _DOMElement.style.overflow = "visible"; + _DOMElement.style.position = "absolute"; + _DOMElement.style.visibility = "visible"; + _DOMElement.style.top = "0px"; + _DOMElement.style.left = "0px"; + _DOMElement.style.zIndex = 0; + _DOMElement.style.width = "0px"; + _DOMElement.style.height = "0px"; + } + + return self; +} +},["id"]), new objj_method(sel_getUid("setBounds:"), function $CALayer__setBounds_(self, _cmd, aBounds) +{ with(self) +{ + if (CGRectEqualToRect(_bounds, aBounds)) + return; + + var oldOrigin = _bounds.origin; + + _bounds = { origin: { x:aBounds.origin.x, y:aBounds.origin.y }, size: { width:aBounds.size.width, height:aBounds.size.height } }; + + if (_hasSublayerTransform) + _CALayerUpdateSublayerTransformForSublayers(self); + _CALayerRecalculateGeometry(self, CALayerGeometryBoundsMask); +} +},["void","CGRect"]), new objj_method(sel_getUid("bounds"), function $CALayer__bounds(self, _cmd) +{ with(self) +{ + return _bounds; +} +},["CGRect"]), new objj_method(sel_getUid("setPosition:"), function $CALayer__setPosition_(self, _cmd, aPosition) +{ with(self) +{ + if (CGPointEqualToPoint(_position, aPosition)) + return; + _position = { x:aPosition.x, y:aPosition.y }; + _CALayerRecalculateGeometry(self, CALayerGeometryPositionMask); +} +},["void","CGPoint"]), new objj_method(sel_getUid("position"), function $CALayer__position(self, _cmd) +{ with(self) +{ + return _position; +} +},["CGPoint"]), new objj_method(sel_getUid("setZPosition:"), function $CALayer__setZPosition_(self, _cmd, aZPosition) +{ with(self) +{ + if (_zPosition == aZPosition) + return; + _zPosition = aZPosition; + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerZPositionUpdateMask); +} +},["void","int"]), new objj_method(sel_getUid("setAnchorPoint:"), function $CALayer__setAnchorPoint_(self, _cmd, anAnchorPoint) +{ with(self) +{ + anAnchorPoint = { x:anAnchorPoint.x, y:anAnchorPoint.y }; + anAnchorPoint.x = MIN(1.0, MAX(0.0, anAnchorPoint.x)); + anAnchorPoint.y = MIN(1.0, MAX(0.0, anAnchorPoint.y)); + if (CGPointEqualToPoint(_anchorPoint, anAnchorPoint)) + return; + _anchorPoint = anAnchorPoint; + if (_hasSublayerTransform) + _CALayerUpdateSublayerTransformForSublayers(self); + if (_owningView) + _position = CGPointMake((_bounds.size.width) * _anchorPoint.x, (_bounds.size.height) * _anchorPoint.y); + _CALayerRecalculateGeometry(self, CALayerGeometryAnchorPointMask); +} +},["void","CGPoint"]), new objj_method(sel_getUid("anchorPoint"), function $CALayer__anchorPoint(self, _cmd) +{ with(self) +{ + return _anchorPoint; +} +},["CGPoint"]), new objj_method(sel_getUid("setAffineTransform:"), function $CALayer__setAffineTransform_(self, _cmd, anAffineTransform) +{ with(self) +{ + if (CGAffineTransformEqualToTransform(_affineTransform, anAffineTransform)) + return; + _affineTransform = { a:anAffineTransform.a, b:anAffineTransform.b, c:anAffineTransform.c, d:anAffineTransform.d, tx:anAffineTransform.tx, ty:anAffineTransform.ty }; + _CALayerRecalculateGeometry(self, CALayerGeometryAffineTransformMask); +} +},["void","CGAffineTransform"]), new objj_method(sel_getUid("affineTransform"), function $CALayer__affineTransform(self, _cmd) +{ with(self) +{ + return _affineTransform; +} +},["CGAffineTransform"]), new objj_method(sel_getUid("setSublayerTransform:"), function $CALayer__setSublayerTransform_(self, _cmd, anAffineTransform) +{ with(self) +{ + if (CGAffineTransformEqualToTransform(_sublayerTransform, anAffineTransform)) + return; + var hadSublayerTransform = _hasSublayerTransform; + _sublayerTransform = { a:anAffineTransform.a, b:anAffineTransform.b, c:anAffineTransform.c, d:anAffineTransform.d, tx:anAffineTransform.tx, ty:anAffineTransform.ty }; + _hasSublayerTransform = !(_sublayerTransform.a == 1 && _sublayerTransform.b == 0 && _sublayerTransform.c == 0 && _sublayerTransform.d == 1 && _sublayerTransform.tx == 0 && _sublayerTransform.ty == 0); + if (_hasSublayerTransform) + { + _CALayerUpdateSublayerTransformForSublayers(self); + var index = _sublayers.length; + while (index--) + _CALayerRecalculateGeometry(_sublayers[index], CALayerGeometryParentSublayerTransformMask); + } +} +},["void","CGAffineTransform"]), new objj_method(sel_getUid("sublayerTransform"), function $CALayer__sublayerTransform(self, _cmd) +{ with(self) +{ + return _sublayerTransform; +} +},["CGAffineTransform"]), new objj_method(sel_getUid("transformToLayer"), function $CALayer__transformToLayer(self, _cmd) +{ with(self) +{ + return _transformToLayer; +} +},["CGAffineTransform"]), new objj_method(sel_getUid("setFrame:"), function $CALayer__setFrame_(self, _cmd, aFrame) +{ with(self) +{ + alert("FIXME IMPLEMENT"); +} +},["void","CGRect"]), new objj_method(sel_getUid("frame"), function $CALayer__frame(self, _cmd) +{ with(self) +{ + if (!_frame) + _frame = objj_msgSend(self, "convertRect:toLayer:", _bounds, _superlayer); + return _frame; +} +},["CGRect"]), new objj_method(sel_getUid("backingStoreFrame"), function $CALayer__backingStoreFrame(self, _cmd) +{ with(self) +{ + return _backingStoreFrame; +} +},["CGRect"]), new objj_method(sel_getUid("setBackingStoreFrame:"), function $CALayer__setBackingStoreFrame_(self, _cmd, aFrame) +{ with(self) +{ + _hasCustomBackingStoreFrame = (aFrame != nil); + if (aFrame == nil) + aFrame = CGRectMakeCopy(_standardBackingStoreFrame); + else + { + if (_superlayer) + { + aFrame = objj_msgSend(_superlayer, "convertRect:toLayer:", aFrame, nil); + var bounds = objj_msgSend(_superlayer, "bounds"), + frame = objj_msgSend(_superlayer, "convertRect:toLayer:", bounds, nil); + aFrame.origin.x -= (frame.origin.x); + aFrame.origin.y -= (frame.origin.y); + } + else + aFrame = CGRectMakeCopy(aFrame); + } + if (!CGPointEqualToPoint(_backingStoreFrame.origin, aFrame.origin)) + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerFrameOriginUpdateMask); + if (!CGSizeEqualToSize(_backingStoreFrame.size, aFrame.size)) + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerFrameSizeUpdateMask); + _backingStoreFrame = aFrame; +} +},["void","CGRect"]), new objj_method(sel_getUid("contents"), function $CALayer__contents(self, _cmd) +{ with(self) +{ + return _contents; +} +},["CGImage"]), new objj_method(sel_getUid("setContents:"), function $CALayer__setContents_(self, _cmd, contents) +{ with(self) +{ + if (_contents == contents) + return; + _contents = contents; + objj_msgSend(self, "composite"); +} +},["void","CGImage"]), new objj_method(sel_getUid("composite"), function $CALayer__composite(self, _cmd) +{ with(self) +{ + if (USE_BUFFER && !_contents || !_context) + return; + CGContextClearRect(_context, { origin: { x:0.0, y:0.0 }, size: { width:(_backingStoreFrame.size.width), height:(_backingStoreFrame.size.height) } }); + var transform = _transformFromLayer; + if (_superlayer) + { + var superlayerTransform = _CALayerGetTransform(_superlayer, nil), + superlayerOrigin = CGPointApplyAffineTransform(_superlayer._bounds.origin, superlayerTransform); + transform = CGAffineTransformConcat(transform, superlayerTransform); + transform.tx -= superlayerOrigin.x; + transform.ty -= superlayerOrigin.y; + } + transform.tx -= (_backingStoreFrame.origin.x); + transform.ty -= (_backingStoreFrame.origin.y); + CGContextSaveGState(_context); + CGContextConcatCTM(_context, transform); + if (USE_BUFFER) + { + _context.drawImage(_contents.buffer, (_bounds.origin.x), (_bounds.origin.y)); + } + else + objj_msgSend(self, "drawInContext:", _context); + CGContextRestoreGState(_context); +} +},["void"]), new objj_method(sel_getUid("display"), function $CALayer__display(self, _cmd) +{ with(self) +{ + if (!_context) + { + _context = CGBitmapGraphicsContextCreate(); + _DOMContentsElement = _context.DOMElement; + _DOMContentsElement.style.zIndex = -100; + _DOMContentsElement.style.overflow = "hidden"; + _DOMContentsElement.style.position = "absolute"; + _DOMContentsElement.style.visibility = "visible"; + _DOMContentsElement.width = ROUND((_backingStoreFrame.size.width)); + _DOMContentsElement.height = ROUND((_backingStoreFrame.size.height)); + _DOMContentsElement.style.top = "0px"; + _DOMContentsElement.style.left = "0px"; + _DOMContentsElement.style.width = ROUND((_backingStoreFrame.size.width)) + "px"; + _DOMContentsElement.style.height = ROUND((_backingStoreFrame.size.height)) + "px"; + _DOMElement.appendChild(_DOMContentsElement); + } + if (USE_BUFFER) + { + if (_delegateRespondsToDisplayLayerSelector) + return objj_msgSend(_delegate, "displayInLayer:", self); + if ((_backingStoreFrame.size.width) == 0.0 || (_backingStoreFrame.size.height) == 0.0) + return; + if (!_contents) + _contents = CABackingStoreCreate(); + CABackingStoreSetSize(_contents, _bounds.size); + objj_msgSend(self, "drawInContext:", CABackingStoreGetContext(_contents)); + } + objj_msgSend(self, "composite"); +} +},["void"]), new objj_method(sel_getUid("drawInContext:"), function $CALayer__drawInContext_(self, _cmd, aContext) +{ with(self) +{ + if (_backgroundColor) + { + CGContextSetFillColor(aContext, _backgroundColor); + CGContextFillRect(aContext, _bounds); + } + if (_delegateRespondsToDrawLayerInContextSelector) + objj_msgSend(_delegate, "drawLayer:inContext:", self, aContext); +} +},["void","CGContext"]), new objj_method(sel_getUid("opacity"), function $CALayer__opacity(self, _cmd) +{ with(self) +{ + return _opacity; +} +},["float"]), new objj_method(sel_getUid("setOpacity:"), function $CALayer__setOpacity_(self, _cmd, anOpacity) +{ with(self) +{ + if (_opacity == anOpacity) + return; + _opacity = anOpacity; + _DOMElement.style.opacity = anOpacity; + _DOMElement.style.filter = "alpha(opacity=" + anOpacity * 100 + ")"; +} +},["void","float"]), new objj_method(sel_getUid("setHidden:"), function $CALayer__setHidden_(self, _cmd, isHidden) +{ with(self) +{ + _isHidden = isHidden; + _DOMElement.style.display = isHidden ? "none" : "block"; +} +},["void","BOOL"]), new objj_method(sel_getUid("hidden"), function $CALayer__hidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("isHidden"), function $CALayer__isHidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("setMasksToBounds:"), function $CALayer__setMasksToBounds_(self, _cmd, masksToBounds) +{ with(self) +{ + if (_masksToBounds == masksToBounds) + return; + _masksToBounds = masksToBounds; + _DOMElement.style.overflow = _masksToBounds ? "hidden" : "visible"; +} +},["void","BOOL"]), new objj_method(sel_getUid("setBackgroundColor:"), function $CALayer__setBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + _backgroundColor = aColor; + objj_msgSend(self, "setNeedsDisplay"); +} +},["void","CPColor"]), new objj_method(sel_getUid("backgroundColor"), function $CALayer__backgroundColor(self, _cmd) +{ with(self) +{ + return _backgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("sublayers"), function $CALayer__sublayers(self, _cmd) +{ with(self) +{ + return _sublayers; +} +},["CPArray"]), new objj_method(sel_getUid("superlayer"), function $CALayer__superlayer(self, _cmd) +{ with(self) +{ + return _superlayer; +} +},["CALayer"]), new objj_method(sel_getUid("addSublayer:"), function $CALayer__addSublayer_(self, _cmd, aLayer) +{ with(self) +{ + objj_msgSend(self, "insertSublayer:atIndex:", aLayer, _sublayers.length); + return; + if (_DOMContentsElement && aLayer._zPosition > _DOMContentsElement.style.zIndex) _DOMContentsElement.style.zIndex -= 100.0;; + objj_msgSend(_sublayers, "addObject:", aLayer); + _DOMElement.appendChild(aLayer._DOMElement); +} +},["void","CALayer"]), new objj_method(sel_getUid("removeFromSuperlayer"), function $CALayer__removeFromSuperlayer(self, _cmd) +{ with(self) +{ + if (_owningView) + objj_msgSend(_owningView, "setLayer:", nil); + if (!_superlayer) + return; + _superlayer._DOMElement.removeChild(_DOMElement); + objj_msgSend(_superlayer._sublayers, "removeObject:", self); + _superlayer = nil; +} +},["void"]), new objj_method(sel_getUid("insertSublayer:atIndex:"), function $CALayer__insertSublayer_atIndex_(self, _cmd, aLayer, anIndex) +{ with(self) +{ + if (!aLayer) + return; + var superlayer = objj_msgSend(aLayer, "superlayer"); + if (superlayer == self) + { + var index = objj_msgSend(_sublayers, "indexOfObjectIdenticalTo:", aLayer); + if (index == anIndex) + return; + objj_msgSend(_sublayers, "removeObjectAtIndex:", index); + if (index < anIndex) + --anIndex; + } + else if (superlayer != nil) + objj_msgSend(aLayer, "removeFromSuperlayer"); + if (_DOMContentsElement && aLayer._zPosition > _DOMContentsElement.style.zIndex) _DOMContentsElement.style.zIndex -= 100.0;; + objj_msgSend(_sublayers, "insertObject:atIndex:", aLayer, anIndex); + if (anIndex >= _sublayers.length - 1) + _DOMElement.appendChild(aLayer._DOMElement); + else + _DOMElement.insertBefore(aLayer._DOMElement, _sublayers[anIndex + 1]._DOMElement); + aLayer._superlayer = self; + if (self != superlayer) + _CALayerRecalculateGeometry(aLayer, 0xFFFFFFF); +} +},["void","CALayer","unsigned"]), new objj_method(sel_getUid("insertSublayer:below:"), function $CALayer__insertSublayer_below_(self, _cmd, aLayer, aSublayer) +{ with(self) +{ + var index = aSublayer ? objj_msgSend(_sublayers, "indexOfObjectIdenticalTo:", aSublayer) : 0; + objj_msgSend(self, "insertSublayer:atIndex:", aLayer, index == CPNotFound ? _sublayers.length : index); +} +},["void","CALayer","CALayer"]), new objj_method(sel_getUid("insertSublayer:above:"), function $CALayer__insertSublayer_above_(self, _cmd, aLayer, aSublayer) +{ with(self) +{ + var index = aSublayer ? objj_msgSend(_sublayers, "indexOfObjectIdenticalTo:", aSublayer) : _sublayers.length; + if (index == CPNotFound) + objj_msgSend(CPException, "raise:reason:", "CALayerNotFoundException", "aSublayer is not a sublayer of this layer"); + objj_msgSend(_sublayers, "insertObject:atIndex:", aLayer, index == CPNotFound ? _sublayers.length : index + 1); +} +},["void","CALayer","CALayer"]), new objj_method(sel_getUid("replaceSublayer:with:"), function $CALayer__replaceSublayer_with_(self, _cmd, aSublayer, aLayer) +{ with(self) +{ + if (aSublayer == aLayer) + return; + if (aSublayer._superlayer != self) + { + alert("EXCEPTION"); + return; + } + if (_DOMContentsElement && aLayer._zPosition > _DOMContentsElement.style.zIndex) _DOMContentsElement.style.zIndex -= 100.0;; + objj_msgSend(_sublayers, "replaceObjectAtIndex:withObject:", objj_msgSend(_sublayers, "indexOfObjectIdenticalTo:", aSublayer), aLayer); + _DOMElement.replaceChild(aSublayer._DOMElement, aLayer._DOMElement); +} +},["void","CALayer","CALayer"]), new objj_method(sel_getUid("registerRunLoopUpdateWithMask:"), function $CALayer__registerRunLoopUpdateWithMask_(self, _cmd, anUpdateMask) +{ with(self) +{ + if (CALayerRegisteredRunLoopUpdates == nil) + { + CALayerRegisteredRunLoopUpdates = {}; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "performSelector:target:argument:order:modes:", sel_getUid("runLoopUpdateLayers"), CALayer, nil, 0, [CPDefaultRunLoopMode]); + } + _runLoopUpdateMask |= anUpdateMask; + CALayerRegisteredRunLoopUpdates[objj_msgSend(self, "UID")] = self; +} +},["void","unsigned"]), new objj_method(sel_getUid("setNeedsComposite"), function $CALayer__setNeedsComposite(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerCompositeUpdateMask); +} +},["void"]), new objj_method(sel_getUid("setNeedsDisplay"), function $CALayer__setNeedsDisplay(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "registerRunLoopUpdateWithMask:", CALayerDisplayUpdateMask); +} +},["void"]), new objj_method(sel_getUid("setNeedsDisplayOnBoundsChange:"), function $CALayer__setNeedsDisplayOnBoundsChange_(self, _cmd, needsDisplayOnBoundsChange) +{ with(self) +{ + _needsDisplayOnBoundsChange = needsDisplayOnBoundsChange; +} +},["void","BOOL"]), new objj_method(sel_getUid("needsDisplayOnBoundsChange"), function $CALayer__needsDisplayOnBoundsChange(self, _cmd) +{ with(self) +{ + return _needsDisplayOnBoundsChange; +} +},["BOOL"]), new objj_method(sel_getUid("setNeedsDisplayInRect:"), function $CALayer__setNeedsDisplayInRect_(self, _cmd, aRect) +{ with(self) +{ + _dirtyRect = aRect; + objj_msgSend(self, "display"); +} +},["void","CGRect"]), new objj_method(sel_getUid("convertPoint:fromLayer:"), function $CALayer__convertPoint_fromLayer_(self, _cmd, aPoint, aLayer) +{ with(self) +{ + return CGPointApplyAffineTransform(aPoint, _CALayerGetTransform(aLayer, self)); +} +},["CGPoint","CGPoint","CALayer"]), new objj_method(sel_getUid("convertPoint:toLayer:"), function $CALayer__convertPoint_toLayer_(self, _cmd, aPoint, aLayer) +{ with(self) +{ + return CGPointApplyAffineTransform(aPoint, _CALayerGetTransform(self, aLayer)); +} +},["CGPoint","CGPoint","CALayer"]), new objj_method(sel_getUid("convertRect:fromLayer:"), function $CALayer__convertRect_fromLayer_(self, _cmd, aRect, aLayer) +{ with(self) +{ + return CGRectApplyAffineTransform(aRect, _CALayerGetTransform(aLayer, self)); +} +},["CGRect","CGRect","CALayer"]), new objj_method(sel_getUid("convertRect:toLayer:"), function $CALayer__convertRect_toLayer_(self, _cmd, aRect, aLayer) +{ with(self) +{ + return CGRectApplyAffineTransform(aRect, _CALayerGetTransform(self, aLayer)); +} +},["CGRect","CGRect","CALayer"]), new objj_method(sel_getUid("containsPoint:"), function $CALayer__containsPoint_(self, _cmd, aPoint) +{ with(self) +{ + return (aPoint.x >= (_bounds.origin.x) && aPoint.y >= (_bounds.origin.y) && aPoint.x < (_bounds.origin.x + _bounds.size.width) && aPoint.y < (_bounds.origin.y + _bounds.size.height)); +} +},["BOOL","CGPoint"]), new objj_method(sel_getUid("hitTest:"), function $CALayer__hitTest_(self, _cmd, aPoint) +{ with(self) +{ + if (_isHidden) + return nil; + var point = CGPointApplyAffineTransform(aPoint, _transformToLayer); + if (!(point.x >= (_bounds.origin.x) && point.y >= (_bounds.origin.y) && point.x < (_bounds.origin.x + _bounds.size.width) && point.y < (_bounds.origin.y + _bounds.size.height))) + return nil; + var layer = nil, + index = _sublayers.length; + while (index--) + if (layer = objj_msgSend(_sublayers[index], "hitTest:", point)) + return layer; + return self; +} +},["CALayer","CGPoint"]), new objj_method(sel_getUid("setDelegate:"), function $CALayer__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + if (_delegate == aDelegate) + return; + _delegate = aDelegate; + _delegateRespondsToDisplayLayerSelector = objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("displayLayer:")); + _delegateRespondsToDrawLayerInContextSelector = objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("drawLayer:inContext:")); + if (_delegateRespondsToDisplayLayerSelector || _delegateRespondsToDrawLayerInContextSelector) + objj_msgSend(self, "setNeedsDisplay"); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CALayer__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("_setOwningView:"), function $CALayer___setOwningView_(self, _cmd, anOwningView) +{ with(self) +{ + _owningView = anOwningView; + if (_owningView) + { + _owningView = anOwningView; + _bounds.size = CGSizeMakeCopy(objj_msgSend(_owningView, "bounds").size); + _position = CGPointMake((_bounds.size.width) * _anchorPoint.x, (_bounds.size.height) * _anchorPoint.y); + } + _CALayerRecalculateGeometry(self, CALayerGeometryPositionMask | CALayerGeometryBoundsMask); +} +},["void","CPView"]), new objj_method(sel_getUid("_owningViewBoundsChanged"), function $CALayer___owningViewBoundsChanged(self, _cmd) +{ with(self) +{ + _bounds.size = CGSizeMakeCopy(objj_msgSend(_owningView, "bounds").size); + _position = CGPointMake((_bounds.size.width) * _anchorPoint.x, (_bounds.size.height) * _anchorPoint.y); + _CALayerRecalculateGeometry(self, CALayerGeometryPositionMask | CALayerGeometryBoundsMask); +} +},["void"]), new objj_method(sel_getUid("_update"), function $CALayer___update(self, _cmd) +{ with(self) +{ + window.loop = true; + var mask = _runLoopUpdateMask; + if (mask & CALayerDOMUpdateMask) + _CALayerUpdateDOM(self, mask); + if (mask & CALayerDisplayUpdateMask) + objj_msgSend(self, "display"); + else if (mask & CALayerFrameSizeUpdateMask || mask & CALayerCompositeUpdateMask) + objj_msgSend(self, "composite"); + _runLoopUpdateMask = 0; + window.loop = false; +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("layer"), function $CALayer__layer(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "init"); +} +},["CALayer"]), new objj_method(sel_getUid("runLoopUpdateLayers"), function $CALayer__runLoopUpdateLayers(self, _cmd) +{ with(self) +{ + for (UID in CALayerRegisteredRunLoopUpdates) + { + var layer = CALayerRegisteredRunLoopUpdates[UID], + mask = layer._runLoopUpdateMask; + if (mask & CALayerDOMUpdateMask) + _CALayerUpdateDOM(layer, mask); + if (mask & CALayerDisplayUpdateMask) + objj_msgSend(layer, "display"); + else if (mask & CALayerFrameSizeUpdateMask || mask & CALayerCompositeUpdateMask) + objj_msgSend(layer, "composite"); + layer._runLoopUpdateMask = 0; + } + window.loop= false; + CALayerRegisteredRunLoopUpdates = nil; +} +},["void"])]); +} +_CALayerUpdateSublayerTransformForSublayers= function(aLayer) +{ + var bounds = aLayer._bounds, + anchorPoint = aLayer._anchorPoint, + translateX = (bounds.size.width) * anchorPoint.x, + translateY = (bounds.size.height) * anchorPoint.y; + aLayer._sublayerTransformForSublayers = CGAffineTransformConcat( + CGAffineTransformMakeTranslation(-translateX, -translateY), + CGAffineTransformConcat(aLayer._sublayerTransform, + CGAffineTransformMakeTranslation(translateX, translateY))); +} +_CALayerUpdateDOM= function(aLayer, aMask) +{ + var DOMElementStyle = aLayer._DOMElement.style; + if (aMask & CALayerZPositionUpdateMask) + DOMElementStyle.zIndex = aLayer._zPosition; + var frame = aLayer._backingStoreFrame; + if (aMask & CALayerFrameOriginUpdateMask) + { + DOMElementStyle.top = ROUND((frame.origin.y)) + "px"; + DOMElementStyle.left = ROUND((frame.origin.x)) + "px"; + } + if (aMask & CALayerFrameSizeUpdateMask) + { + var width = MAX(0.0, ROUND((frame.size.width))), + height = MAX(0.0, ROUND((frame.size.height))), + DOMContentsElement = aLayer._DOMContentsElement; + DOMElementStyle.width = width + "px"; + DOMElementStyle.height = height + "px"; + if (DOMContentsElement) + { + DOMContentsElement.width = width; + DOMContentsElement.height = height; + DOMContentsElement.style.width = width + "px"; + DOMContentsElement.style.height = height + "px"; + } + } +} +_CALayerRecalculateGeometry= function(aLayer, aGeometryChange) +{ + var bounds = aLayer._bounds, + superlayer = aLayer._superlayer, + width = (bounds.size.width), + height = (bounds.size.height), + position = aLayer._position, + anchorPoint = aLayer._anchorPoint, + affineTransform = aLayer._affineTransform, + backingStoreFrameSize = { width:aLayer._backingStoreFrame.width, height:aLayer._backingStoreFrame.height }, + hasCustomBackingStoreFrame = aLayer._hasCustomBackingStoreFrame; + aLayer._transformFromLayer = CGAffineTransformConcat( + CGAffineTransformMakeTranslation(-width * anchorPoint.x - (aLayer._bounds.origin.x), -height * anchorPoint.y - (aLayer._bounds.origin.y)), + CGAffineTransformConcat(affineTransform, + CGAffineTransformMakeTranslation(position.x, position.y))); + if (superlayer && superlayer._hasSublayerTransform) + { + var tx = aLayer._transformFromLayer.tx * superlayer._sublayerTransformForSublayers.a + aLayer._transformFromLayer.ty * superlayer._sublayerTransformForSublayers.c + superlayer._sublayerTransformForSublayers.tx;aLayer._transformFromLayer.ty = aLayer._transformFromLayer.tx * superlayer._sublayerTransformForSublayers.b + aLayer._transformFromLayer.ty * superlayer._sublayerTransformForSublayers.d + superlayer._sublayerTransformForSublayers.ty;aLayer._transformFromLayer.tx = tx;var a = aLayer._transformFromLayer.a * superlayer._sublayerTransformForSublayers.a + aLayer._transformFromLayer.b * superlayer._sublayerTransformForSublayers.c, b = aLayer._transformFromLayer.a * superlayer._sublayerTransformForSublayers.b + aLayer._transformFromLayer.b * superlayer._sublayerTransformForSublayers.d, c = aLayer._transformFromLayer.c * superlayer._sublayerTransformForSublayers.a + aLayer._transformFromLayer.d * superlayer._sublayerTransformForSublayers.c;aLayer._transformFromLayer.d = aLayer._transformFromLayer.c * superlayer._sublayerTransformForSublayers.b + aLayer._transformFromLayer.d * superlayer._sublayerTransformForSublayers.d;aLayer._transformFromLayer.a = a;aLayer._transformFromLayer.b = b;aLayer._transformFromLayer.c = c;; + } + aLayer._transformToLayer = CGAffineTransformInvert(aLayer._transformFromLayer); + aLayer._frame = nil; + aLayer._standardBackingStoreFrame = objj_msgSend(aLayer, "convertRect:toLayer:", bounds, nil); + if (superlayer) + { + var bounds = objj_msgSend(superlayer, "bounds"), + frame = objj_msgSend(superlayer, "convertRect:toLayer:", bounds, nil); + aLayer._standardBackingStoreFrame.origin.x -= (frame.origin.x); + aLayer._standardBackingStoreFrame.origin.y -= (frame.origin.y); + } + var origin = aLayer._standardBackingStoreFrame.origin, + size = aLayer._standardBackingStoreFrame.size; + origin.x = FLOOR(origin.x); + origin.y = FLOOR(origin.y); + size.width = CEIL(size.width) + 1.0; + size.height = CEIL(size.height) + 1.0; + if (!hasCustomBackingStoreFrame) + { + var backingStoreFrame = CGRectMakeCopy(aLayer._standardBackingStoreFrame); + if (ROUND((backingStoreFrame.origin.x)) != ROUND((aLayer._backingStoreFrame.origin.x)) || + ROUND((backingStoreFrame.origin.y)) != ROUND((aLayer._backingStoreFrame.origin.y))) + objj_msgSend(aLayer, "registerRunLoopUpdateWithMask:", CALayerFrameOriginUpdateMask); + if (((backingStoreFrame.size.width) != ROUND((aLayer._backingStoreFrame.size.width)) || + (backingStoreFrame.size.height) != ROUND((aLayer._backingStoreFrame.size.height)))) + objj_msgSend(aLayer, "registerRunLoopUpdateWithMask:", CALayerFrameSizeUpdateMask); + aLayer._backingStoreFrame = backingStoreFrame; + } + if (aGeometryChange & CALayerGeometryBoundsMask && aLayer._needsDisplayOnBoundsChange) + objj_msgSend(aLayer, "setNeedsDisplay"); + else if (hasCustomBackingStoreFrame || (aGeometryChange & ~(CALayerGeometryPositionMask | CALayerGeometryAnchorPointMask))) + objj_msgSend(aLayer, "setNeedsComposite"); + var sublayers = aLayer._sublayers, + index = 0, + count = sublayers.length; + for (; index < count; ++index) + _CALayerRecalculateGeometry(sublayers[index], aGeometryChange); +} +_CALayerGetTransform= function(fromLayer, toLayer) +{ + var transform = CGAffineTransformMakeIdentity(); + if (fromLayer) + { + var layer = fromLayer; + while (layer && layer != toLayer) + { + var transformFromLayer = layer._transformFromLayer; + var tx = transform.tx * transformFromLayer.a + transform.ty * transformFromLayer.c + transformFromLayer.tx;transform.ty = transform.tx * transformFromLayer.b + transform.ty * transformFromLayer.d + transformFromLayer.ty;transform.tx = tx;var a = transform.a * transformFromLayer.a + transform.b * transformFromLayer.c, b = transform.a * transformFromLayer.b + transform.b * transformFromLayer.d, c = transform.c * transformFromLayer.a + transform.d * transformFromLayer.c;transform.d = transform.c * transformFromLayer.b + transform.d * transformFromLayer.d;transform.a = a;transform.b = b;transform.c = c;; + layer = layer._superlayer; + } + if (layer == toLayer) + return transform; + } + var layers = [], + layer = toLayer; + while (layer) + { + layers.push(layer); + layer = layer._superlayer; + } + var index = layers.length; + while (index--) + { + var transformToLayer = layers[index]._transformToLayer; + var tx = transform.tx * transformToLayer.a + transform.ty * transformToLayer.c + transformToLayer.tx;transform.ty = transform.tx * transformToLayer.b + transform.ty * transformToLayer.d + transformToLayer.ty;transform.tx = tx;var a = transform.a * transformToLayer.a + transform.b * transformToLayer.c, b = transform.a * transformToLayer.b + transform.b * transformToLayer.d, c = transform.c * transformToLayer.a + transform.d * transformToLayer.c;transform.d = transform.c * transformToLayer.b + transform.d * transformToLayer.d;transform.a = a;transform.b = b;transform.c = c;; + } + return transform; +} + +p;23;CAMediaTimingFunction.jt;3377;@STATIC;1.0;I;21;Foundation/CPObject.jI;25;Foundation/CPDictionary.jI;21;Foundation/CPString.jt;3276;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +kCAMediaTimingFunctionLinear = "kCAMediaTimingFunctionLinear"; +kCAMediaTimingFunctionEaseIn = "kCAMediaTimingFunctionEaseIn"; +kCAMediaTimingFunctionEaseOut = "kCAMediaTimingFunctionEaseOut"; +kCAMediaTimingFunctionEaseInEaseOut = "kCAMediaTimingFunctionEaseInEaseOut"; +var CAMediaNamedTimingFunctions = nil; +{var the_class = objj_allocateClassPair(CPObject, "CAMediaTimingFunction"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_c1x"), new objj_ivar("_c1y"), new objj_ivar("_c2x"), new objj_ivar("_c2y")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithControlPoints::::"), function $CAMediaTimingFunction__initWithControlPoints____(self, _cmd, c1x, c1y, c2x, c2y) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CAMediaTimingFunction").super_class }, "init"); + if (self) + { + _c1x = c1x; + _c1y = c1y; + _c2x = c2x; + _c2y = c2y; + } + return self; +} +},["id","float","float","float","float"]), new objj_method(sel_getUid("getControlPointAtIndex:values:"), function $CAMediaTimingFunction__getControlPointAtIndex_values_(self, _cmd, anIndex, reference) +{ with(self) +{ + if (anIndex == 0) + { + reference[0] = 0; + reference[1] = 0; + } + else if (anIndex == 1) + { + reference[0] = _c1x; + reference[1] = _c1y; + } + else if (anIndex == 2) + { + reference[0] = _c2x; + reference[1] = _c2y; + } + else + { + reference[0] = 1.0; + reference[1] = 1.0; + } +} +},["void","unsigned","float[2]"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("functionWithName:"), function $CAMediaTimingFunction__functionWithName_(self, _cmd, aName) +{ with(self) +{ + if (!CAMediaNamedTimingFunctions) + { + CAMediaNamedTimingFunctions = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(CAMediaNamedTimingFunctions, "setObject:forKey:", objj_msgSend(CAMediaTimingFunction, "functionWithControlPoints::::", 0.0 , 0.0 , 1.0 , 1.0), kCAMediaTimingFunctionLinear); + objj_msgSend(CAMediaNamedTimingFunctions, "setObject:forKey:", objj_msgSend(CAMediaTimingFunction, "functionWithControlPoints::::", 0.42 , 0.0 , 1.0 , 1.0), kCAMediaTimingFunctionEaseIn); + objj_msgSend(CAMediaNamedTimingFunctions, "setObject:forKey:", objj_msgSend(CAMediaTimingFunction, "functionWithControlPoints::::", 0.0 , 0.0 , 0.58 , 1.0), kCAMediaTimingFunctionEaseOut); + objj_msgSend(CAMediaNamedTimingFunctions, "setObject:forKey:", objj_msgSend(CAMediaTimingFunction, "functionWithControlPoints::::", 0.42 , 0.0 , 0.58 , 1.0), kCAMediaTimingFunctionEaseInEaseOut); + } + return objj_msgSend(CAMediaNamedTimingFunctions, "objectForKey:", aName); +} +},["id","CPString"]), new objj_method(sel_getUid("functionWithControlPoints::::"), function $CAMediaTimingFunction__functionWithControlPoints____(self, _cmd, c1x, c1y, c2x, c2y) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithControlPoints::::", c1x , c1y , c2x , c2y); +} +},["id","float","float","float","float"])]); +} + +p;19;CGAffineTransform.jt;4904;@STATIC;1.0;i;12;CGGeometry.jt;4868;objj_executeFile("CGGeometry.j", YES); +CGAffineTransformMake= function(a, b, c, d, tx, ty) { return { a:a, b:b, c:c, d:d, tx:tx, ty:ty }; } +CGAffineTransformMakeIdentity= function() { return { a:1.0, b:0.0, c:0.0, d:1.0, tx:0.0, ty:0.0 }; } +CGAffineTransformMakeCopy= function(anAffineTransform) { return { a:anAffineTransform.a, b:anAffineTransform.b, c:anAffineTransform.c, d:anAffineTransform.d, tx:anAffineTransform.tx, ty:anAffineTransform.ty }; } +CGAffineTransformMakeScale= function(sx, sy) { return { a:sx, b:0.0, c:0.0, d:sy, tx:0.0, ty:0.0 }; } +CGAffineTransformMakeTranslation= function(tx, ty) { return { a:1.0, b:0.0, c:0.0, d:1.0, tx:tx, ty:ty }; } +CGAffineTransformTranslate= function(aTransform, tx, ty) { return { a:aTransform.a, b:aTransform.b, c:aTransform.c, d:aTransform.d, tx:aTransform.tx + aTransform.a * tx + aTransform.c * ty, ty:aTransform.ty + aTransform.b * tx + aTransform.d * ty }; } +CGAffineTransformScale= function(aTransform, sx, sy) { return { a:aTransform.a * sx, b:aTransform.b * sx, c:aTransform.c * sy, d:aTransform.d * sy, tx:aTransform.tx, ty:aTransform.ty }; } +CGAffineTransformConcat= function(lhs, rhs) { return { a:lhs.a * rhs.a + lhs.b * rhs.c, b:lhs.a * rhs.b + lhs.b * rhs.d, c:lhs.c * rhs.a + lhs.d * rhs.c, d:lhs.c * rhs.b + lhs.d * rhs.d, tx:lhs.tx * rhs.a + lhs.ty * rhs.c + rhs.tx, ty:lhs.tx * rhs.b + lhs.ty * rhs.d + rhs.ty }; } +CGPointApplyAffineTransform= function(aPoint, aTransform) { return { x:aPoint.x * aTransform.a + aPoint.y * aTransform.c + aTransform.tx, y:aPoint.x * aTransform.b + aPoint.y * aTransform.d + aTransform.ty }; } +CGSizeApplyAffineTransform= function(aSize, aTransform) { return { width:aSize.width * aTransform.a + aSize.height * aTransform.c, height:aSize.width * aTransform.b + aSize.height * aTransform.d }; } +CGAffineTransformIsIdentity= function(aTransform) { return (aTransform.a == 1 && aTransform.b == 0 && aTransform.c == 0 && aTransform.d == 1 && aTransform.tx == 0 && aTransform.ty == 0); } +CGAffineTransformEqualToTransform= function(lhs, rhs) { return (lhs.a == rhs.a && lhs.b == rhs.b && lhs.c == rhs.c && lhs.d == rhs.d && lhs.tx == rhs.tx && lhs.ty == rhs.ty); } +CGStringCreateWithCGAffineTransform= function(aTransform) { return (" [[ " + aTransform.a + ", " + aTransform.b + ", 0 ], [ " + aTransform.c + ", " + aTransform.d + ", 0 ], [ " + aTransform.tx + ", " + aTransform.ty + ", 1]]"); } +CGAffineTransformCreateCopy= function(aTransform) +{ + return { a:aTransform.a, b:aTransform.b, c:aTransform.c, d:aTransform.d, tx:aTransform.tx, ty:aTransform.ty }; +} +CGAffineTransformMakeRotation= function(anAngle) +{ + var sin = SIN(anAngle), + cos = COS(anAngle); + return { a:cos, b:sin, c:-sin, d:cos, tx:0.0, ty:0.0 }; +} +CGAffineTransformRotate= function(aTransform, anAngle) +{ + var sin = SIN(anAngle), + cos = COS(anAngle); + return { + a:aTransform.a * cos + aTransform.c * sin, + b:aTransform.b * cos + aTransform.d * sin, + c:aTransform.c * cos - aTransform.a * sin, + d:aTransform.d * cos - aTransform.b * sin, + tx:aTransform.tx, + ty:aTransform.ty + }; +} +CGAffineTransformInvert= function(aTransform) +{ + var determinant = 1 / (aTransform.a * aTransform.d - aTransform.b * aTransform.c); + return { + a:determinant * aTransform.d, + b:-determinant * aTransform.b, + c:-determinant * aTransform.c, + d:determinant * aTransform.a, + tx:determinant * (aTransform.c * aTransform.ty - aTransform.d * aTransform.tx), + ty:determinant * (aTransform.b * aTransform.tx - aTransform.a * aTransform.ty) + }; +} +CGRectApplyAffineTransform= function(aRect, anAffineTransform) +{ + var top = (aRect.origin.y), + left = (aRect.origin.x), + right = (aRect.origin.x + aRect.size.width), + bottom = (aRect.origin.y + aRect.size.height), + topLeft = CGPointApplyAffineTransform({ x:left, y:top }, anAffineTransform), + topRight = CGPointApplyAffineTransform({ x:right, y:top }, anAffineTransform), + bottomLeft = CGPointApplyAffineTransform({ x:left, y:bottom }, anAffineTransform), + bottomRight = CGPointApplyAffineTransform({ x:right, y:bottom }, anAffineTransform), + minX = MIN(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x), + maxX = MAX(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x), + minY = MIN(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y), + maxY = MAX(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y); + return { origin: { x:minX, y:minY }, size: { width:(maxX - minX), height:(maxY - minY) } }; +} +CPStringFromCGAffineTransform= function(anAffineTransform) +{ + return '{' + anAffineTransform.a + ", " + anAffineTransform.b + ", " + anAffineTransform.c + ", " + anAffineTransform.d + ", " + anAffineTransform.tx + ", " + anAffineTransform.ty + '}'; +} + +p;9;CGColor.jt;3106;@STATIC;1.0;i;14;CGColorSpace.jt;3068;objj_executeFile("CGColorSpace.j", YES); +var CFTypeGlobalCount = 0; +CFHashCode= function(aCFObject) +{ + if (!aCFObject.hash) + aCFObject.hash = ++CFTypeGlobalCount; + return aCFObject; +} +kCGColorWhite = "kCGColorWhite"; +kCGColorBlack = "kCGColorBlack"; +kCGColorClear = "kCGColorClear"; +var _CGColorMap = { }; +CGColorGetConstantColor= function(aColorName) +{ + alert("FIX ME"); +} +CGColorRetain= function(aColor) +{ + return aColor; +} +CGColorRelease= function() +{ +} +CGColorCreate= function(aColorSpace, components) +{ + if (!aColorSpace || !components) + return NULL; + var components = components.slice(); + CGColorSpaceStandardizeComponents(aColorSpace, components); + var UID = CFHashCode(aColorSpace) + components.join(""); + if (_CGColorMap[UID]) + return _CGColorMap[UID]; + return _CGColorMap[UID] = { colorspace:aColorSpace, pattern:NULL, components:components }; +} +CGColorCreateCopy= function(aColor) +{ + return aColor; +} +CGColorCreateGenericGray= function(gray, alpha) +{ + return CGColorCreate(0, [gray, alpha]); +} +CGColorCreateGenericRGB= function(red, green, blue, alpha) +{ + return CGColorCreate(0, [red, green, blue, alpha]); +} +CGColorCreateGenericCMYK= function(cyan, magenta, yellow, black, alpha) +{ + return CGColorCreate(0, [cyan, magenta, yellow, black, alpha]); +} +CGColorCreateCopyWithAlpha= function(aColor, anAlpha) +{ + var components = aColor.components; + if (!aColor || anAlpha == components[components.length - 1]) + return aColor; + if (aColor.pattern) + var copy = CGColorCreateWithPattern(aColor.colorspace, aColor.pattern, components); + else + var copy = CGColorCreate(aColor.colorspace, components); + copy.components[components.length - 1] = anAlpha; + return copy; +} +CGColorCreateWithPattern= function(aColorSpace, aPattern, components) +{ + if (!aColorSpace || !aPattern || !components) + return NULL; + return { colorspace:aColorSpace, pattern:aPattern, components:components.slice() }; +} +CGColorEqualToColor= function(lhs, rhs) +{ + if (lhs == rhs) + return true; + if (!lhs || !rhs) + return false; + var lhsComponents = lhs.components, + rhsComponents = rhs.components, + lhsComponentCount = lhsComponents.length; + if (lhsComponentCount != rhsComponents.length) + return false; + while (lhsComponentCount--) + if (lhsComponents[lhsComponentCount] != rhsComponents[lhsComponentCount]) + return false; + if (lhs.pattern != rhs.pattern) + return false; + if (CGColorSpaceEqualToColorSpace(lhs.colorspace, rhs.colorspace)) + return false; + return true; +} +CGColorGetAlpha= function(aColor) +{ + var components = aColor.components; + return components[components.length - 1]; +} +CGColorGetColorSpace= function(aColor) +{ + return aColor.colorspace; +} +CGColorGetComponents= function(aColor) +{ + return aColor.components; +} +CGColorGetNumberOfComponents= function(aColor) +{ + return aColor.components.length; +} +CGColorGetPattern= function(aColor) +{ + return aColor.pattern; +} + +p;14;CGColorSpace.jt;4691;@STATIC;1.0;t;4672;kCGColorSpaceModelUnknown = -1; +kCGColorSpaceModelMonochrome = 0; +kCGColorSpaceModelRGB = 1; +kCGColorSpaceModelCMYK = 2; +kCGColorSpaceModelLab = 3; +kCGColorSpaceModelDeviceN = 4; +kCGColorSpaceModelIndexed = 5; +kCGColorSpaceModelPattern = 6; +kCGColorSpaceGenericGray = "CGColorSpaceGenericGray"; +kCGColorSpaceGenericRGB = "CGColorSpaceGenericRGB"; +kCGColorSpaceGenericCMYK = "CGColorSpaceGenericCMYK"; +kCGColorSpaceGenericRGBLinear = "CGColorSpaceGenericRGBLinear"; +kCGColorSpaceGenericRGBHDR = "CGColorSpaceGenericRGBHDR"; +kCGColorSpaceAdobeRGB1998 = "CGColorSpaceAdobeRGB1998"; +kCGColorSpaceSRGB = "CGColorSpaceSRGB"; +var _CGNamedColorSpaces = {}; +CGColorSpaceCreateCalibratedGray= function(aWhitePoint, aBlackPoint, gamma) +{ + return { model:kCGColorSpaceModelMonochrome, count:1, base:NULL }; +} +CGColorSpaceCreateCalibratedRGB= function(aWhitePoint, aBlackPoint, gamma) +{ + return { model:kCGColorSpaceModelRGB, count:1, base:NULL }; +} +CGColorSpaceCreateICCBased= function(aComponentCount, range, profile, alternate) +{ + return NULL; +} +CGColorSpaceCreateLab= function(aWhitePoint, aBlackPoint, aRange) +{ + return NULL; +} +CGColorSpaceCreateDeviceCMYK= function() +{ + return CGColorSpaceCreateWithName(kCGColorSpaceGenericCMYK); +} +CGColorSpaceCreateDeviceGray= function() +{ + return CGColorSpaceCreateWithName(kCGColorSpaceGenericGray); +} +CGColorSpaceCreateDeviceRGB= function() +{ + return CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); +} +CGColorSpaceCreateWithPlatformColorSpace= function() +{ + return NULL; +} +CGColorSpaceCreateIndexed= function(aBaseColorSpace, lastIndex, colorTable) +{ + return NULL; +} +CGColorSpaceCreatePattern= function(aBaseColorSpace) +{ + if (aBaseColorSpace) + return { model:kCGColorSpaceModelPattern, count:aBaseColorSpace.count, base:aBaseColorSpace }; + return { model:kCGColorSpaceModelPattern, count:0, base:NULL }; +} +CGColorSpaceCreateWithName= function(aName) +{ + var colorSpace = _CGNamedColorSpaces[aName]; + if (colorSpace) + return colorSpace; + switch (aName) + { + case kCGColorSpaceGenericGray: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelMonochrome, count:1, base:NULL }; + case kCGColorSpaceGenericRGB: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + case kCGColorSpaceGenericCMYK: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelCMYK, count:4, base:NULL }; + case kCGColorSpaceGenericRGBLinear: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + case kCGColorSpaceGenericRGBHDR: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + case kCGColorSpaceAdobeRGB1998: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + case kCGColorSpaceSRGB: return _CGNamedColorSpaces[aName] = { model:kCGColorSpaceModelRGB, count:3, base:NULL }; + } + return NULL; +} +CGColorSpaceCopyICCProfile= function(aColorSpace) +{ + return NULL; +} +CGColorSpaceGetNumberOfComponents= function(aColorSpace) +{ + return aColorSpace.count; +} +CGColorSpaceGetTypeID= function(aColorSpace) +{ +} +CGColorSpaceGetModel= function(aColorSpace) +{ + return aColorSpace.model; +} +CGColorSpaceGetBaseColorSpace= function(aColorSpace) +{ +} +CGColorSpaceGetColorTableCount= function(aColorSpace) +{ +} +CGColorSpaceGetColorTable= function(aColorSpace) +{ +} +CGColorSpaceRelease= function(aColorSpace) +{ +} +CGColorSpaceRetain= function(aColorSpace) +{ + return aColorSpace; +} +CGColorSpaceStandardizeComponents= function(aColorSpace, components) +{ + var count = aColorSpace.count; + { if (count > components.length) { components[count] = 1; return; } var component = components[count]; if (component < 0) components[count] = 0; else if (component > 1) components[count] = 1; else components[count] = ROUND(component * 1000) / 1000; }; + if (aColorSpace.base) + aColorSpace = aColorSpace.base; + switch (aColorSpace.model) + { + case kCGColorSpaceModelMonochrome: + case kCGColorSpaceModelRGB: + case kCGColorSpaceModelCMYK: + case kCGColorSpaceModelDeviceN: while (count--) + { if (count > components.length) { components[count] = 1; return; } var component = components[count]; if (component < 0) components[count] = 0; else if (component > 1) components[count] = 1; else components[count] = ROUND(component * 255) / 255; }; + break; + case kCGColorSpaceModelIndexed: + case kCGColorSpaceModelLab: + case kCGColorSpaceModelPattern: break; + } +} + +p;11;CGContext.jt;31561;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.ji;8;CGPath.jt;31488;objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CGAffineTransform.j", YES); +objj_executeFile("CGPath.j", YES); +kCGLineCapButt = 0; +kCGLineCapRound = 1; +kCGLineCapSquare = 2; +kCGLineJoinMiter = 0; +kCGLineJoinRound = 1; +kCGLineJoinBevel = 2; +kCGPathFill = 0; +kCGPathEOFill = 1; +kCGPathStroke = 2; +kCGPathFillStroke = 3; +kCGPathEOFillStroke = 4; +kCGBlendModeNormal = 0; +kCGBlendModeMultiply = 1; +kCGBlendModeScreen = 2; +kCGBlendModeOverlay = 3; +kCGBlendModeDarken = 4; +kCGBlendModeLighten = 5; +kCGBlendModeColorDodge = 6; +kCGBlendModeColorBurn = 7; +kCGBlendModeSoftLight = 8; +kCGBlendModeHardLight = 9; +kCGBlendModeDifference = 10; +kCGBlendModeExclusion = 11; +kCGBlendModeHue = 12; +kCGBlendModeSaturation = 13; +kCGBlendModeColor = 14; +kCGBlendModeLuminosity = 15; +kCGBlendModeClear = 16; +kCGBlendModeCopy = 17; +kCGBlendModeSourceIn = 18; +kCGBlendModeSourceOut = 19; +kCGBlendModeSourceAtop = 20; +kCGBlendModeDestinationOver = 21; +kCGBlendModeDestinationIn = 22; +kCGBlendModeDestinationOut = 23; +kCGBlendModeDestinationAtop = 24; +kCGBlendModeXOR = 25; +kCGBlendModePlusDarker = 26; +kCGBlendModePlusLighter = 27; +CGContextRelease= function() +{ +} +CGContextRetain= function(aContext) +{ + return aContext; +} +if (!CPFeatureIsCompatible(CPHTMLCanvasFeature)) +{ +CGGStateCreate= function() +{ + return { alpha:1.0, strokeStyle:"#000", fillStyle:"#ccc", lineWidth:1.0, lineJoin:kCGLineJoinMiter, lineCap:kCGLineCapButt, miterLimit:10.0, globalAlpha:1.0, + blendMode:kCGBlendModeNormal, + shadowOffset:{ width:0.0, height:0.0 }, shadowBlur:0.0, shadowColor:NULL, CTM:{ a:1.0, b:0.0, c:0.0, d:1.0, tx:0.0, ty:0.0 } }; +} +CGGStateCreateCopy= function(aGState) +{ + return { alpha:aGState.alpha, strokeStyle:aGState.strokeStyle, fillStyle:aGState.fillStyle, lineWidth:aGState.lineWidth, + lineJoin:aGState.lineJoin, lineCap:aGState.lineCap, miterLimit:aGState.miterLimit, globalAlpha:aGState.globalAlpha, + blendMode:aGState.blendMode, + shadowOffset:aGState.shadowOffset, shadowBlur:aGState.shadowBlur, shadowColor:aGState.shadowColor, CTM:{ a:aGState.CTM.a, b:aGState.CTM.b, c:aGState.CTM.c, d:aGState.CTM.d, tx:aGState.CTM.tx, ty:aGState.CTM.ty } }; +} +CGBitmapGraphicsContextCreate= function() +{ + return { DOMElement:document.createElement("div"), path:NULL, gState:CGGStateCreate(), gStateStack:[] }; +} +CGContextSaveGState= function(aContext) +{ + aContext.gStateStack.push(CGGStateCreateCopy(aContext.gState)); +} +CGContextRestoreGState= function(aContext) +{ + aContext.gState = aContext.gStateStack.pop(); +} +CGContextSetLineCap= function(aContext, aLineCap) +{ + aContext.gState.lineCap = aLineCap; +} +CGContextSetLineJoin= function(aContext, aLineJoin) +{ + aContext.gState.lineJoin = aLineJoin; +} +CGContextSetLineWidth= function(aContext, aLineWidth) +{ + aContext.gState.lineWidth = aLineWidth; +} +CGContextSetMiterLimit= function(aContext, aMiterLimit) +{ + aContext.gState.miterLimit = aMiterLimit; +} +CGContextSetBlendMode= function(aContext, aBlendMode) +{ + aContext.gState.blendMode = aBlendMode; +} +CGContextAddArc= function(aContext, x, y, radius, startAngle, endAngle, clockwise) +{ + CGPathAddArc(aContext.path, aContext.gState.CTM, x, y, radius, startAngle, endAngle, clockwise); +} +CGContextAddArcToPoint= function(aContext, x1, y1, x2, y2, radius) +{ + CGPathAddArcToPoint(aContext.path, aContext.gState.CTM, x1, y1, x2, y2, radius); +} +CGContextAddCurveToPoint= function(aContext, cp1x, cp1y, cp2x, cp2y, x, y) +{ + CGPathAddCurveToPoint(aContext.path, aContext.gState.CTM, cp1x, cp1y, cp2x, cp2y, x, y); +} +CGContextAddLines= function(aContext, points, count) +{ + CGPathAddLines(aContext.path, aContext.gState.CTM, points, count); +} +CGContextAddLineToPoint= function(aContext, x, y) +{ + CGPathAddLineToPoint(aContext.path, aContext.gState.CTM, x, y); +} +CGContextAddPath= function(aContext, aPath) +{ + if (!aContext || CGPathIsEmpty(aPath)) + return; + if (!aContext.path) + aContext.path = CGPathCreateMutable(); + CGPathAddPath(aContext.path, aContext.gState.CTM, aPath); +} +CGContextAddQuadCurveToPoint= function(aContext, cpx, cpy, x, y) +{ + CGPathAddQuadCurveToPoint(aContext.path, aContext.gState.CTM, cpx, cpy, x, y); +} +CGContextAddRect= function(aContext, aRect) +{ + CGPathAddRect(aContext.path, aContext.gState.CTM, aRect); +} +CGContextAddRects= function(aContext, rects, count) +{ + CGPathAddRects(aContext.path, aContext.gState.CTM, rects, count); +} +CGContextBeginPath= function(aContext) +{ + aContext.path = CGPathCreateMutable(); +} +CGContextClosePath= function(aContext) +{ + CGPathCloseSubpath(aContext.path); +} +CGContextMoveToPoint= function(aContext, x, y) +{ + if (!aContext.path) + aContext.path = CGPathCreateMutable(); + CGPathMoveToPoint(aContext.path, aContext.gState.CTM, x, y); +} +CGContextFillRect= function(aContext, aRect) +{ + CGContextFillRects(aContext, [aRect], 1); +} +CGContextFillRects= function(aContext, rects, count) +{ + if (arguments[2] === undefined) + var count = rects.length; + CGContextBeginPath(aContext); + CGContextAddRects(aContext, rects, count); + CGContextClosePath(aContext); + CGContextDrawPath(aContext, kCGPathFill); +} +CGContextStrokeRect= function(aContext, aRect) +{ + CGContextBeginPath(aContext); + CGContextAddRect(aContext, aRect); + CGContextClosePath(aContext); + CGContextDrawPath(aContext, kCGPathStroke); +} +CGContextStrokeRectWithWidth= function(aContext, aRect, aWidth) +{ + CGContextSaveGState(aContext); + CGContextSetLineWidth(aContext, aWidth); + CGContextStrokeRect(aContext, aRect); + CGContextRestoreGState(aContext); +} +CGContextConcatCTM= function(aContext, aTransform) +{ + var CTM = aContext.gState.CTM; + var tx = CTM.tx * aTransform.a + CTM.ty * aTransform.c + aTransform.tx;CTM.ty = CTM.tx * aTransform.b + CTM.ty * aTransform.d + aTransform.ty;CTM.tx = tx;var a = CTM.a * aTransform.a + CTM.b * aTransform.c, b = CTM.a * aTransform.b + CTM.b * aTransform.d, c = CTM.c * aTransform.a + CTM.d * aTransform.c;CTM.d = CTM.c * aTransform.b + CTM.d * aTransform.d;CTM.a = a;CTM.b = b;CTM.c = c;; +} +CGContextGetCTM= function(aContext) +{ + return aContext.gState.CTM; +} +CGContextRotateCTM= function(aContext, anAngle) +{ + var gState = aContext.gState; + gState.CTM = CGAffineTransformRotate(gState.CTM, anAngle); +} +CGContextScaleCTM= function(aContext, sx, sy) +{ + var gState = aContext.gState; + gState.CTM = { a:gState.CTM.a * sx, b:gState.CTM.b * sx, c:gState.CTM.c * sy, d:gState.CTM.d * sy, tx:gState.CTM.tx, ty:gState.CTM.ty }; +} +CGContextTranslateCTM= function(aContext, tx, ty) +{ + var gState = aContext.gState; + gState.CTM = { a:gState.CTM.a, b:gState.CTM.b, c:gState.CTM.c, d:gState.CTM.d, tx:gState.CTM.tx + gState.CTM.a * tx + gState.CTM.c * ty, ty:gState.CTM.ty + gState.CTM.b * tx + gState.CTM.d * ty }; +} +CGContextSetShadow= function(aContext, aSize, aBlur) +{ + var gState = aContext.gState; + gState.shadowOffset = { width:aSize.width, height:aSize.height }; + gState.shadowBlur = aBlur; + gState.shadowColor = objj_msgSend(CPColor, "shadowColor"); +} +CGContextSetShadowWithColor= function(aContext, aSize, aBlur, aColor) +{ + var gState = aContext.gState; + gState.shadowOffset = { width:aSize.width, height:aSize.height }; + gState.shadowBlur = aBlur; + gState.shadowColor = aColor; +} +CGContextSetAlpha= function(aContext, anAlpha) +{ + aContext.gState.alpha = MAX(MIN(anAlpha, 1.0), 0.0); +} +} +CGContextEOFillPath= function(aContext) +{ + CGContextDrawPath(aContext, kCGPathEOFill); +} +CGContextFillPath= function(aContext) +{ + CGContextDrawPath(aContext, kCGPathFill); +} +var KAPPA = 4.0 * ((SQRT2 - 1.0) / 3.0); +CGContextAddEllipseInRect= function(aContext, aRect) +{ + CGContextBeginPath(aContext); + CGContextAddPath(aContext, CGPathWithEllipseInRect(aRect)); + CGContextClosePath(aContext); +} +CGContextFillEllipseInRect= function(aContext, aRect) +{ + CGContextBeginPath(aContext); + CGContextAddEllipseInRect(aContext, aRect); + CGContextClosePath(aContext); + CGContextFillPath(aContext); +} +CGContextStrokeEllipseInRect= function(aContext, aRect) +{ + CGContextBeginPath(aContext); + CGContextAddEllipseInRect(aContext, aRect); + CGContextClosePath(aContext); + CGContextStrokePath(aContext); +} +CGContextStrokePath= function(aContext) +{ + CGContextDrawPath(aContext, kCGPathStroke); +} +CGContextStrokeLineSegments= function(aContext, points, count) +{ + var i = 0; + if (arguments["count"] == NULL) + var count = points.length; + CGContextBeginPath(aContext); + for (; i < count; i += 2) + { + CGContextMoveToPoint(aContext, points[i].x, points[i].y); + CGContextAddLineToPoint(aContext, points[i + 1].x, points[i + 1].y); + } + CGContextStrokePath(aContext); +} +CGContextSetFillColor= function(aContext, aColor) +{ + if (aColor) + aContext.gState.fillStyle = objj_msgSend(aColor, "cssString"); +} +CGContextSetStrokeColor= function(aContext, aColor) +{ + if (aColor) + aContext.gState.strokeStyle = objj_msgSend(aColor, "cssString"); +} +CGContextFillRoundedRectangleInRect= function(aContext, aRect, aRadius, ne, se, sw, nw) +{ + CGContextBeginPath(aContext); + CGContextAddPath(aContext, CGPathWithRoundedRectangleInRect(aRect, aRadius, aRadius, ne, se, sw, nw)); + CGContextClosePath(aContext); + CGContextFillPath(aContext); +} +CGContextStrokeRoundedRectangleInRect= function(aContext, aRect, aRadius, ne, se, sw, nw) +{ + CGContextBeginPath(aContext); + CGContextAddPath(aContext, CGPathWithRoundedRectangleInRect(aRect, aRadius, aRadius, ne, se, sw, nw)); + CGContextClosePath(aContext); + CGContextStrokePath(aContext); +} +if (CPFeatureIsCompatible(CPHTMLCanvasFeature)) +{ +var CANVAS_LINECAP_TABLE = [ "butt", "round", "square" ], + CANVAS_LINEJOIN_TABLE = [ "miter", "round", "bevel" ], + CANVAS_COMPOSITE_TABLE = [ "source-over", "source-over", "source-over", "source-over", "darker", + "lighter", "source-over", "source-over", "source-over", "source-over", + "source-over", "source-over", "source-over", "source-over", "source-over", + "source-over", "source-over", + "copy", "source-in", "source-out", "source-atop", + "destination-over", "destination-in", "destination-out", "destination-atop", + "xor", "source-over", "source-over" ]; +CGContextSaveGState= function(aContext) +{ + aContext.save(); +} +CGContextRestoreGState= function(aContext) +{ + aContext.restore(); +} +CGContextSetLineCap= function(aContext, aLineCap) +{ + aContext.lineCap = CANVAS_LINECAP_TABLE[aLineCap]; +} +CGContextSetLineJoin= function(aContext, aLineJoin) +{ + aContext.lineJoin = CANVAS_LINEJOIN_TABLE[aLineJoin]; +} +CGContextSetLineWidth= function(aContext, aLineWidth) +{ + aContext.lineWidth = aLineWidth; +} +CGContextSetMiterLimit= function(aContext, aMiterLimit) +{ + aContext.miterLimit = aMiterLimit; +} +CGContextSetBlendMode= function(aContext, aBlendMode) +{ + aContext.globalCompositeOperation = CANVAS_COMPOSITE_TABLE[aBlendMode]; +} +CGContextAddArc= function(aContext, x, y, radius, startAngle, endAngle, clockwise) +{ + aContext.arc(x, y, radius, startAngle, endAngle, !clockwise); +} +CGContextAddArcToPoint= function(aContext, x1, y1, x2, y2, radius) +{ + aContext.arcTo(x1, y1, x2, y2, radius); +} +CGContextAddCurveToPoint= function(aContext, cp1x, cp1y, cp2x, cp2y, x, y) +{ + aContext.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); +} +CGContextAddLineToPoint= function(aContext, x, y) +{ + aContext.lineTo(x, y); +} +CGContextAddPath= function(aContext, aPath) +{ + if (!aContext || CGPathIsEmpty(aPath)) + return; + var elements = aPath.elements, + i = 0, + count = aPath.count; + for (; i < count; ++i) + { + var element = elements[i], + type = element.type; + switch (type) + { + case kCGPathElementMoveToPoint: aContext.moveTo(element.x, element.y); + break; + case kCGPathElementAddLineToPoint: aContext.lineTo(element.x, element.y); + break; + case kCGPathElementAddQuadCurveToPoint: aContext.quadraticCurveTo(element.cpx, element.cpy, element.x, element.y); + break; + case kCGPathElementAddCurveToPoint: aContext.bezierCurveTo(element.cp1x, element.cp1y, element.cp2x, element.cp2y, element.x, element.y); + break; + case kCGPathElementCloseSubpath: aContext.closePath(); + break; + case kCGPathElementAddArc: aContext.arc(element.x, element.y, element.radius, element.startAngle, element.endAngle, element.clockwise); + break; + case kCGPathElementAddArcTo: + break; + } + } +} +CGContextAddRect= function(aContext, aRect) +{ + aContext.rect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +CGContextAddRects= function(aContext, rects, count) +{ + var i = 0; + if (arguments["count"] == NULL) + var count = rects.length; + for (; i < count; ++i) + { + var rect = rects[i]; + aContext.rect((rect.origin.x), (rect.origin.y), (rect.size.width), (rect.size.height)); + } +} +CGContextBeginPath= function(aContext) +{ + aContext.beginPath(); +} +CGContextClosePath= function(aContext) +{ + aContext.closePath(); +} +CGContextMoveToPoint= function(aContext, x, y) +{ + aContext.moveTo(x, y); +} +CGContextClearRect= function(aContext, aRect) +{ + aContext.clearRect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +CGContextDrawPath= function(aContext, aMode) +{ + if (aMode == kCGPathFill || aMode == kCGPathFillStroke) + aContext.fill(); + else if (aMode == kCGPathEOFill || aMode == kCGPathEOFillStroke) + alert("not implemented!!!"); + if (aMode == kCGPathStroke || aMode == kCGPathFillStroke || aMode == kCGPathEOFillStroke) + aContext.stroke(); +} +CGContextFillRect= function(aContext, aRect) +{ + aContext.fillRect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +CGContextFillRects= function(aContext, rects, count) +{ + var i = 0; + if (arguments["count"] == NULL) + var count = rects.length; + for (; i < count; ++i) + { + var rect = rects[i]; + aContext.fillRect((rect.origin.x), (rect.origin.y), (rect.size.width), (rect.size.height)); + } +} +CGContextStrokeRect= function(aContext, aRect) +{ + aContext.strokeRect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +CGContextClip= function(aContext) +{ + aContext.clip(); +} +CGContextClipToRect= function(aContext, aRect) +{ + aContext.beginPath(); + aContext.rect((aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); + aContext.closePath(); + aContext.clip(); +} +CGContextClipToRects= function(aContext, rects, count) +{ + if (arguments["count"] == NULL) + var count = rects.length; + aContext.beginPath(); + CGContextAddRects(aContext, rects, count); + aContext.clip(); +} +CGContextSetAlpha= function(aContext, anAlpha) +{ + aContext.globalAlpha = anAlpha; +} +CGContextSetFillColor= function(aContext, aColor) +{ + aContext.fillStyle = objj_msgSend(aColor, "cssString"); +} +CGContextSetStrokeColor= function(aContext, aColor) +{ + aContext.strokeStyle = objj_msgSend(aColor, "cssString"); +} +CGContextSetShadow= function(aContext, aSize, aBlur) +{ + aContext.shadowOffsetX = aSize.width; + aContext.shadowOffsetY = aSize.height; + aContext.shadowBlur = aBlur; +} +CGContextSetShadowWithColor= function(aContext, aSize, aBlur, aColor) +{ + aContext.shadowOffsetX = aSize.width; + aContext.shadowOffsetY = aSize.height; + aContext.shadowBlur = aBlur; + aContext.shadowColor = objj_msgSend(aColor, "cssString"); +} +CGContextRotateCTM= function(aContext, anAngle) +{ + aContext.rotate(anAngle); +} +CGContextScaleCTM= function(aContext, sx, sy) +{ + aContext.scale(sx, sy); +} +CGContextTranslateCTM= function(aContext, tx, ty) +{ + aContext.translate(tx, ty); +} +eigen= function(anAffineTransform) +{ + alert("IMPLEMENT ME!"); +} +if (CPFeatureIsCompatible(CPJavaScriptCanvasTransformFeature)) +{ +CGContextConcatCTM = function(aContext, anAffineTransform) +{ + aContext.transform(anAffineTransform.a, anAffineTransform.b, anAffineTransform.c, anAffineTransform.d, anAffineTransform.tx, anAffineTransform.ty); +} +} +else +{ +CGContextConcatCTM = function(aContext, anAffineTransform) +{ + var a = anAffineTransform.a, + b = anAffineTransform.b, + c = anAffineTransform.c, + d = anAffineTransform.d, + tx = anAffineTransform.tx, + ty = anAffineTransform.ty, + sx = 1.0, + sy = 1.0, + a1 = 0.0, + a2 = 0.0; + if (b == 0.0 && c == 0.0) + { + sx = a; + sy = d; + } + else if (a * b == -c * d) + { + var sign = (a * d < 0.0 || b * c > 0.0) ? -1.0 : 1.0, a2 = (ATAN2(b, d) + ATAN2(-sign * c, sign * a)) / 2.0, cos = COS(a2), sin = SIN(a2); if (cos == 0) { sx = -c / sin; sy = b / sin; } else if (sin == 0) { sx = a / cos; sy = d / cos; } else { abs_cos = ABS(cos); abs_sin = ABS(sin); sx = (abs_cos * a / cos + abs_sin * -c / sin) / (abs_cos + abs_sin); sy = (abs_cos * d / cos + abs_sin * b / sin) / (abs_cos + abs_sin); } + } + else if (a * c == -b * d) + { + var sign = (a * d < 0.0 || b * c > 0.0) ? -1.0 : 1.0; a1 = (Math.atan2(sign * b, sign * a) + Math.atan2(-c, d)) / 2.0, cos = COS(a1), sin = SIN(a1); if (cos == 0) { sx = b / sin; sy = -c / sin; } else if (sin == 0) { sx = a / cos; sy = d / cos; } else { abs_cos = ABS(cos); abs_sin = ABS(sin); sx = (abs_cos * a / cos + abs_sin * b / sin) / (abs_cos + abs_sin); sy = (abs_cos * d / cos + abs_sin * -c / sin) / (abs_cos + abs_sin); } + } + else + { + var transpose = CGAffineTransformMake(a, c, b, d, 0.0, 0.0), + u = eigen(CGAffineTransformConcat(anAffineTransform, transpose)), + v = eigen(CGAffineTransformConcat(transpose, anAffineTransform)), + U = CGAffineTransformMake(u.vector_1.x, u.vector_2.x, u.vector_1.y, u.vector_2.y, 0.0, 0.0), + VT = CGAffineTransformMake(v.vector_1.x, v.vector_1.y, v.vector_2.x, v.vector_2.y, 0.0, 0.0), + S = CGAffineTransformConcat(CGAffineTransformConcat(CGAffineTransformInvert(U), anAffineTransform), CGAffineTransformInvert(VT)); + a = VT.a; + b = VT.b; + c = VT.c; + d = VT.d; + var sign = (a * d < 0.0 || b * c > 0.0) ? -1.0 : 1.0, a2 = (ATAN2(b, d) + ATAN2(-sign * c, sign * a)) / 2.0, cos = COS(a2), sin = SIN(a2); if (cos == 0) { sx = -c / sin; sy = b / sin; } else if (sin == 0) { sx = a / cos; sy = d / cos; } else { abs_cos = ABS(cos); abs_sin = ABS(sin); sx = (abs_cos * a / cos + abs_sin * -c / sin) / (abs_cos + abs_sin); sy = (abs_cos * d / cos + abs_sin * b / sin) / (abs_cos + abs_sin); } + S.a *= sx; + S.d *= sy; + a = U.a; + b = U.b; + c = U.c; + d = U.d; + var sign = (a * d < 0.0 || b * c > 0.0) ? -1.0 : 1.0; a1 = (Math.atan2(sign * b, sign * a) + Math.atan2(-c, d)) / 2.0, cos = COS(a1), sin = SIN(a1); if (cos == 0) { sx = b / sin; sy = -c / sin; } else if (sin == 0) { sx = a / cos; sy = d / cos; } else { abs_cos = ABS(cos); abs_sin = ABS(sin); sx = (abs_cos * a / cos + abs_sin * b / sin) / (abs_cos + abs_sin); sy = (abs_cos * d / cos + abs_sin * -c / sin) / (abs_cos + abs_sin); } + sx = S.a * sx; + sy = S.d * sy; + } + if (tx != 0 || ty != 0) + CGContextTranslateCTM(aContext, tx, ty); + if (a1 != 0.0) + CGContextRotateCTM(aContext, a1); + if (sx != 1.0 || sy != 1.0) + CGContextScaleCTM(aContext, sx, sy); + if (a2 != 0.0) + CGContextRotateCTM(aContext, a2); +} +} +CGContextDrawImage= function(aContext, aRect, anImage) +{ + aContext.drawImage(anImage._image, (aRect.origin.x), (aRect.origin.y), (aRect.size.width), (aRect.size.height)); +} +to_string= function(aColor) +{ + return "rgba(" + ROUND(aColor.components[0] * 255) + ", " + ROUND(aColor.components[1] * 255) + ", " + ROUND(255 * aColor.components[2]) + ", " + aColor.components[3] + ")"; +} +CGContextDrawLinearGradient= function(aContext, aGradient, aStartPoint, anEndPoint, options) +{ + var colors = aGradient.colors, + count = colors.length, + linearGradient = aContext.createLinearGradient(aStartPoint.x, aStartPoint.y, anEndPoint.x, anEndPoint.y); + while (count--) + linearGradient.addColorStop(aGradient.locations[count], to_string(colors[count])); + aContext.fillStyle = linearGradient; + aContext.fill(); +} +CGBitmapGraphicsContextCreate= function() +{ + var DOMElement = document.createElement("canvas"), + context = DOMElement.getContext("2d"); + context.DOMElement = DOMElement; + return context; +} +} +else if (CPFeatureIsCompatible(CPVMLFeature)) +{ +var VML_TRUTH_TABLE = [ "f", "t"], + VML_LINECAP_TABLE = [ "flat", "round", "square" ], + VML_LINEJOIN_TABLE = [ "miter", "round", "bevel" ], + VML_ELEMENT_TABLE = [ " m ", " l ", "qb", " c ", " x ", [" at ", " wa "]]; +var _CGBitmapGraphicsContextCreate = CGBitmapGraphicsContextCreate; +CGBitmapGraphicsContextCreate= function() +{ + document.namespaces.add("cg_vml_", "urn:schemas-microsoft-com:vml"); + document.createStyleSheet().cssText = "cg_vml_\\:*{behavior:url(#default#VML)}"; + CGBitmapGraphicsContextCreate = _CGBitmapGraphicsContextCreate; + return _CGBitmapGraphicsContextCreate(); +} +CGContextClearRect= function(aContext, aRect) +{ + if (aContext.buffer != nil) + aContext.buffer = ""; + else + aContext.DOMElement.innerHTML = ""; + aContext.path = NULL; +} +var W = 10.0, + H = 10.0, + Z = 10.0, + Z_2 = Z / 2.0; +CGContextDrawImage= function(aContext, aRect, anImage) +{ + var string = ""; + if (anImage.buffer != nil) + string = anImage.buffer; + else + { + var ctm = aContext.gState.CTM, + origin = CGPointApplyAffineTransform(aRect.origin, ctm), + similarity = ctm.a == ctm.d && ctm.b == -ctm.c, + vml = ["<cg_vml_:group coordsize=\"1,1\" coordorigin=\"0,0\" style=\"width:1;height:1;position:absolute"]; + { + var transformedRect = CGRectApplyAffineTransform(aRect, ctm); + vml.push( ";padding:0 ", ROUND((transformedRect.origin.x + transformedRect.size.width)), "px ", ROUND((transformedRect.origin.y + transformedRect.size.height)), + "px 0;filter:progid:DXImageTransform.Microsoft.Matrix(", + "M11='", ctm.a, "',M12='", ctm.c, "',M21='", ctm.b, "',M22='", ctm.d, "',", + "Dx='", ROUND(origin.x), "', Dy='", ROUND(origin.y), "', sizingmethod='clip');"); + } + vml.push( "\"><cg_vml_:image src=\"", anImage._image.src, + "\" style=\"width:", (aRect.size.width), "px;height:", (aRect.size.height), + "px;\"/></g_vml_:group>"); + string = vml.join(""); + } + if (aContext.buffer != nil) + aContext.buffer += string; + else + aContext.DOMElement.insertAdjacentHTML("BeforeEnd", string); +} +CGContextDrawPath= function(aContext, aMode) +{ + if (!aContext || CGPathIsEmpty(aContext.path)) + return; + var elements = aContext.path.elements, + i = 0, + count = aContext.path.count, + gState = aContext.gState, + fill = (aMode == kCGPathFill || aMode == kCGPathFillStroke) ? 1 : 0, + stroke = (aMode == kCGPathStroke || aMode == kCGPathFillStroke) ? 1 : 0, + opacity = gState.alpha, + vml = [ "<cg_vml_:shape", + " fillcolor=\"", gState.fillStyle, + "\" filled=\"", VML_TRUTH_TABLE[fill], + "\" style=\"position:absolute;width:", W, ";height:", H, + ";\" coordorigin=\"0 0\" coordsize=\"", Z * W, " ", Z * H, + "\" stroked=\"", VML_TRUTH_TABLE[stroke], + "\" strokeweight=\"", gState.lineWidth, + "\" strokecolor=\"", gState.strokeStyle, + "\" path=\""]; + for (; i < count; ++i) + { + var element = elements[i], + type = element.type; + switch(type) + { + case kCGPathElementMoveToPoint: + case kCGPathElementAddLineToPoint: vml.push(VML_ELEMENT_TABLE[type], (ROUND(Z * (element.x) - Z_2)), ',', (ROUND(Z * (element.y) - Z_2))); + break; + case kCGPathElementAddQuadCurveToPoint: vml.push(VML_ELEMENT_TABLE[type], + (ROUND(Z * (element.cpx) - Z_2)), ',', (ROUND(Z * (element.cpy) - Z_2)), ',', + (ROUND(Z * (element.x) - Z_2)), ',', (ROUND(Z * (element.y) - Z_2))); + break; + case kCGPathElementAddCurveToPoint: vml.push(VML_ELEMENT_TABLE[type], + (ROUND(Z * (element.cp1x) - Z_2)), ',', (ROUND(Z * (element.cp1y) - Z_2)), ',', + (ROUND(Z * (element.cp2x) - Z_2)), ',', (ROUND(Z * (element.cp2y) - Z_2)), ',', + (ROUND(Z * (element.x) - Z_2)), ',', (ROUND(Z * (element.y) - Z_2))); + break; + case kCGPathElementCloseSubpath: vml.push(VML_ELEMENT_TABLE[type]); + break; + case kCGPathElementAddArc: var x = element.x, + y = element.y, + radius = element.radius, + clockwise = element.clockwise ? 1 : 0, + endAngle = element.endAngle, + startAngle = element.startAngle, + start = { x:x + radius * COS(startAngle), y:y + radius * SIN(startAngle) }; + if (startAngle == endAngle && !clockwise) + { + vml.push(VML_ELEMENT_TABLE[kCGPathElementMoveToPoint], (ROUND(Z * (start.x) - Z_2)), ',', (ROUND(Z * (start.y) - Z_2))); + continue; + } + var end = { x:x + radius * COS(endAngle), y:y + radius * SIN(endAngle) }; + if (clockwise && startAngle != endAngle && (start.x == end.x && start.y == end.y)) + if (start.x >= x) + { + if (start.y < y) + start.x += 0.125; + else + start.y += 0.125; + } + else + { + if (end.y <= y) + end.x += 0.125; + else + end.y += 0.125; + } + vml.push(VML_ELEMENT_TABLE[type][clockwise], + (ROUND(Z * (x - radius) - Z_2)), ',', (ROUND(Z * (y - radius) - Z_2)), " ", + (ROUND(Z * (x + radius) - Z_2)), ',', (ROUND(Z * (y + radius) - Z_2)), " ", + (ROUND(Z * (start.x) - Z_2)), ',', (ROUND(Z * (start.y) - Z_2)), " ", + (ROUND(Z * (end.x) - Z_2)), ',', (ROUND(Z * (end.y) - Z_2))); + break; + case kCGPathElementAddArcTo: break; + } + } + vml.push("\">"); + if (gState.gradient) + vml.push(gState.gradient) + else if (fill) + vml.push("<cg_vml_:fill color=\"", gState.fillStyle, "\" opacity=\"", opacity, "\" />"); + if (stroke) + vml.push( "<cg_vml_:stroke opacity=\"", opacity, + "\" joinstyle=\"", VML_LINEJOIN_TABLE[gState.lineJoin], + "\" miterlimit=\"", gState.miterLimit, + "\" endcap=\"", VML_LINECAP_TABLE[gState.lineCap], + "\" weight=\"", gState.lineWidth, "", + "px\" color=\"", gState.strokeStyle,"\" />"); + var shadowColor = gState.shadowColor; + if (shadowColor) + { + var shadowOffset = gState.shadowOffset; + vml.push("<cg_vml_:shadow on=\"t\" offset=\"", + shadowOffset.width, "pt ", shadowOffset.height, "pt\" opacity=\"", objj_msgSend(shadowColor, "alphaComponent"), "\" color=black />"); + } + vml.push("</cg_vml_:shape>"); + aContext.path = NULL; + if (aContext.buffer != nil) + aContext.buffer += vml.join(""); + else + aContext.DOMElement.insertAdjacentHTML("BeforeEnd", vml.join("")); +} +to_string= function(aColor) +{ + return "rgb(" + ROUND(aColor.components[0] * 255) + ", " + ROUND(aColor.components[1] * 255) + ", " + ROUND(255 * aColor.components[2]) + ")"; +} +CGContextDrawLinearGradient= function(aContext, aGradient, aStartPoint, anEndPoint, options) +{ + if (!aContext || !aGradient) + return; + var vml = nil; + if (aGradient.vml_gradient) + { + var stops = objj_msgSend(objj_msgSend(aGradient.vml_gradient, "stops"), "sortedArrayUsingSelector:", sel_getUid("comparePosition:")), + count = objj_msgSend(stops, "count"); + vml = ["<cg_vml_:fill type=\"gradient\" method=\"linear sigma\" "]; + vml.push("angle=\"" + (objj_msgSend(aGradient.vml_gradient, "angle") + 90) +"\" "); + vml.push("colors=\""); + for (var i = 0; i < count; i++) + { + vml.push((objj_msgSend(stops[i], "position")*100).toFixed(0)+"% "); + vml.push(objj_msgSend(objj_msgSend(objj_msgSend(stops[i], "color"), "colorForSlideBase:", nil), "cssString")); + if (i < count-1) + vml.push(","); + } + vml.push("\" />"); + } + else + { + var colors = aGradient.colors, + count = colors.length; + vml = ["<cg_vml_:fill type=\"gradient\" "]; + vml.push("colors=\""); + for (var i = 0; i < count; i++) + vml.push((aGradient.locations[i]*100).toFixed(0)+"% "+to_string(colors[i])+(i<count-1 ? "," : "")); + vml.push("\" />"); + } + aContext.gState.gradient = vml.join(""); +} +} + +p;12;CGGeometry.jt;9124;@STATIC;1.0;t;9105;CGPointMake= function(x, y) { return { x:x, y:y }; } +CGPointMakeZero= function() { return { x:0.0, y:0.0 }; } +CGPointMakeCopy= function(aPoint) { return { x:aPoint.x, y:aPoint.y }; } +CGPointCreateCopy= function(aPoint) { return { x:aPoint.x, y:aPoint.y }; } +CGPointEqualToPoint= function(lhsPoint, rhsPoint) { return (lhsPoint.x == rhsPoint.x && lhsPoint.y == rhsPoint.y); } +CGStringFromPoint= function(aPoint) { return ("{" + aPoint.x + ", " + aPoint.y + "}"); } +CGSizeMake= function(width, height) { return { width:width, height:height }; } +CGSizeMakeZero= function() { return { width:0.0, height:0.0 }; } +CGSizeMakeCopy= function(aSize) { return { width:aSize.width, height:aSize.height }; } +CGSizeCreateCopy= function(aSize) { return { width:aSize.width, height:aSize.height }; } +CGSizeEqualToSize= function(lhsSize, rhsSize) { return (lhsSize.width == rhsSize.width && lhsSize.height == rhsSize.height); } +CGStringFromSize= function(aSize) { return ("{" + aSize.width + ", " + aSize.height + "}"); } +CGRectMake= function(x, y, width, height) { return { origin: { x:x, y:y }, size: { width:width, height:height } }; } +CGRectMakeZero= function() { return { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; } +CGRectMakeCopy= function(aRect) { return { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; } +CGRectCreateCopy= function(aRect) { return { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; } +CGRectEqualToRect= function(lhsRect, rhsRect) { return ((lhsRect.origin.x == rhsRect.origin.x && lhsRect.origin.y == rhsRect.origin.y) && (lhsRect.size.width == rhsRect.size.width && lhsRect.size.height == rhsRect.size.height)); } +CGStringFromRect= function(aRect) { return ("{" + ("{" + aRect.origin.x + ", " + aRect.origin.y + "}") + ", " + ("{" + aRect.size.width + ", " + aRect.size.height + "}") + "}"); } +CGRectOffset= function(aRect, dX, dY) { return { origin: { x:aRect.origin.x + dX, y:aRect.origin.y + dY }, size: { width:aRect.size.width, height:aRect.size.height } }; } +CGRectInset= function(aRect, dX, dY) { return { origin: { x:aRect.origin.x + dX, y:aRect.origin.y + dY }, size: { width:aRect.size.width - 2 * dX, height:aRect.size.height - 2 * dY } }; } +CGRectGetHeight= function(aRect) { return (aRect.size.height); } +CGRectGetMaxX= function(aRect) { return (aRect.origin.x + aRect.size.width); } +CGRectGetMaxY= function(aRect) { return (aRect.origin.y + aRect.size.height); } +CGRectGetMidX= function(aRect) { return (aRect.origin.x + (aRect.size.width) / 2.0); } +CGRectGetMidY= function(aRect) { return (aRect.origin.y + (aRect.size.height) / 2.0); } +CGRectGetMinX= function(aRect) { return (aRect.origin.x); } +CGRectGetMinY= function(aRect) { return (aRect.origin.y); } +CGRectGetWidth= function(aRect) { return (aRect.size.width); } +CGRectIsEmpty= function(aRect) { return (aRect.size.width <= 0.0 || aRect.size.height <= 0.0); } +CGRectIsNull= function(aRect) { return (aRect.size.width <= 0.0 || aRect.size.height <= 0.0); } +CGRectContainsPoint= function(aRect, aPoint) { return (aPoint.x >= (aRect.origin.x) && aPoint.y >= (aRect.origin.y) && aPoint.x < (aRect.origin.x + aRect.size.width) && aPoint.y < (aRect.origin.y + aRect.size.height)); } +CGInsetMake= function(top, right, bottom, left) { return { top:(top), right:(right), bottom:(bottom), left:(left) }; } +CGInsetMakeZero= function() { return { top:(0), right:(0), bottom:(0), left:(0) }; } +CGInsetMakeCopy= function(anInset) { return { top:(anInset.top), right:(anInset.right), bottom:(anInset.bottom), left:(anInset.left) }; } +CGInsetIsEmpty= function(anInset) { return ((anInset).top === 0 && (anInset).right === 0 && (anInset).bottom === 0 && (anInset).left === 0); } +CGInsetEqualToInset= function(lhsInset, rhsInset) { return ((lhsInset).top === (rhsInset).top && (lhsInset).right === (rhsInset).right && (lhsInset).bottom === (rhsInset).bottom && (lhsInset).left === (rhsInset).left); } +CGMinXEdge = 0; +CGMinYEdge = 1; +CGMaxXEdge = 2; +CGMaxYEdge = 3; +CGRectNull = { origin: { x:Infinity, y:Infinity }, size: { width:0.0, height:0.0 } }; +CGRectDivide= function(inRect, slice, rem, amount, edge) +{ + slice.origin = { x:inRect.origin.x, y:inRect.origin.y }; + slice.size = { width:inRect.size.width, height:inRect.size.height }; + rem.origin = { x:inRect.origin.x, y:inRect.origin.y }; + rem.size = { width:inRect.size.width, height:inRect.size.height }; + switch (edge) + { + case CGMinXEdge: + slice.size.width = amount; + rem.origin.x += amount; + rem.size.width -= amount; + break; + case CGMaxXEdge: + slice.origin.x = (slice.origin.x + slice.size.width) - amount; + slice.size.width = amount; + rem.size.width -= amount; + break; + case CGMinYEdge: + slice.size.height = amount; + rem.origin.y += amount; + rem.size.height -= amount; + break; + case CGMaxYEdge: + slice.origin.y = (slice.origin.y + slice.size.height) - amount; + slice.size.height = amount; + rem.size.height -= amount; + } +} +CGRectContainsRect= function(lhsRect, rhsRect) +{ + var union = CGRectUnion(lhsRect, rhsRect); + return ((union.origin.x == lhsRect.origin.x && union.origin.y == lhsRect.origin.y) && (union.size.width == lhsRect.size.width && union.size.height == lhsRect.size.height)); +} +CGRectIntersectsRect= function(lhsRect, rhsRect) +{ + var intersection = CGRectIntersection(lhsRect, rhsRect); + return !(intersection.size.width <= 0.0 || intersection.size.height <= 0.0); +} +CGRectIntegral= function(aRect) +{ + aRect = CGRectStandardize(aRect); + var x = FLOOR((aRect.origin.x)), + y = FLOOR((aRect.origin.y)); + aRect.size.width = CEIL((aRect.origin.x + aRect.size.width)) - x; + aRect.size.height = CEIL((aRect.origin.y + aRect.size.height)) - y; + aRect.origin.x = x; + aRect.origin.y = y; + return aRect; +} +CGRectIntersection= function(lhsRect, rhsRect) +{ + var intersection = { origin: { x:MAX((lhsRect.origin.x), (rhsRect.origin.x)), y:MAX((lhsRect.origin.y), (rhsRect.origin.y)) }, size: { width:0, height:0 } }; + intersection.size.width = MIN((lhsRect.origin.x + lhsRect.size.width), (rhsRect.origin.x + rhsRect.size.width)) - (intersection.origin.x); + intersection.size.height = MIN((lhsRect.origin.y + lhsRect.size.height), (rhsRect.origin.y + rhsRect.size.height)) - (intersection.origin.y); + return (intersection.size.width <= 0.0 || intersection.size.height <= 0.0) ? { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } } : intersection; +} +CGRectStandardize= function(aRect) +{ + var width = (aRect.size.width), + height = (aRect.size.height), + standardized = { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; + if (width < 0.0) + { + standardized.origin.x += width; + standardized.size.width = -width; + } + if (height < 0.0) + { + standardized.origin.y += height; + standardized.size.height = -height; + } + return standardized; +} +CGRectUnion= function(lhsRect, rhsRect) +{ + var lhsRectIsNull = !lhsRect || lhsRect === CGRectNull, + rhsRectIsNull = !rhsRect || rhsRect === CGRectNull; + if (lhsRectIsNull) + return rhsRectIsNull ? CGRectNull : rhsRect; + if (rhsRectIsNull) + return lhsRectIsNull ? CGRectNull : lhsRect; + var minX = MIN((lhsRect.origin.x), (rhsRect.origin.x)), + minY = MIN((lhsRect.origin.y), (rhsRect.origin.y)), + maxX = MAX((lhsRect.origin.x + lhsRect.size.width), (rhsRect.origin.x + rhsRect.size.width)), + maxY = MAX((lhsRect.origin.y + lhsRect.size.height), (rhsRect.origin.y + rhsRect.size.height)); + return { origin: { x:minX, y:minY }, size: { width:maxX - minX, height:maxY - minY } }; +} +CGPointFromString= function(aString) +{ + var comma = aString.indexOf(','); + return { x:parseInt(aString.substr(1, comma - 1)), y:parseInt(aString.substring(comma + 1, aString.length)) }; +} +CGSizeFromString= function(aString) +{ + var comma = aString.indexOf(','); + return { width:parseInt(aString.substr(1, comma - 1)), height:parseInt(aString.substring(comma + 1, aString.length)) }; +} +CGRectFromString= function(aString) +{ + var comma = aString.indexOf(',', aString.indexOf(',') + 1); + return { origin:CGPointFromString(aString.substr(1, comma - 1)), size:CGSizeFromString(aString.substring(comma + 2, aString.length)) }; +} +CGPointFromEvent= function(anEvent) +{ + return { x:anEvent.clientX, y:anEvent.clientY }; +} +CGInsetFromString= function(aString) +{ + var numbers = aString.substr(1, aString.length - 2).split(','); + return { top:(parseFloat(numbers[0])), right:(parseFloat(numbers[1])), bottom:(parseFloat(numbers[2])), left:(parseFloat(numbers[3])) }; +} +CGInsetFromCPString = CGInsetFromString; +CPStringFromCGInset= function(anInset) +{ + return '{' + anInset.top + ", " + anInset.left + ", " + anInset.bottom + ", " + anInset.right + '}'; +} + +p;12;CGGradient.jt;876;@STATIC;1.0;i;9;CGColor.ji;14;CGColorSpace.jt;826;objj_executeFile("CGColor.j", YES); +objj_executeFile("CGColorSpace.j", YES); +kCGGradientDrawsBeforeStartLocation = 1 << 0; +kCGGradientDrawsAfterEndLocation = 1 << 1; +CGGradientCreateWithColorComponents= function(aColorSpace, components, locations, count) +{ + if (arguments["count"] == NULL) + var count = locations.length; + var colors = []; + while (count--) + { + var offset = count * 4; + colors[count] = CGColorCreate(aColorSpace, components.slice(offset, offset + 4)); + } + return CGGradientCreateWithColors(aColorSpace, colors, locations); +} +CGGradientCreateWithColors= function(aColorSpace, colors, locations) +{ + return { colorspace:aColorSpace, colors:colors, locations:locations }; +} +CGGradientRelease= function() +{ +} +CGGradientRetain= function(aGradient) +{ + return aGradient; +} + +p;8;CGPath.jt;12249;@STATIC;1.0;i;12;CGGeometry.ji;19;CGAffineTransform.jt;12188;objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CGAffineTransform.j", YES); +kCGPathElementMoveToPoint = 0; +kCGPathElementAddLineToPoint = 1; +kCGPathElementAddQuadCurveToPoint = 2; +kCGPathElementAddCurveToPoint = 3; +kCGPathElementCloseSubpath = 4; +kCGPathElementAddArc = 5; +kCGPathElementAddArcToPoint = 6; +CGPathCreateMutable= function() +{ + return { count:0, start:NULL, current:NULL, elements:[] }; +} +CGPathCreateMutableCopy= function(aPath) +{ + var path = CGPathCreateMutable(); + CGPathAddPath(path, aPath); + return path; +} +CGPathCreateCopy= function(aPath) +{ + return CGPathCreateMutableCopy(aPath); +} +CGPathRelease= function(aPath) +{ +} +CGPathRetain= function(aPath) +{ + return aPath; +} +CGPathAddArc= function(aPath, aTransform, x, y, aRadius, aStartAngle, anEndAngle, isClockwise) +{ + if (aTransform && !(aTransform.a == 1 && aTransform.b == 0 && aTransform.c == 0 && aTransform.d == 1 && aTransform.tx == 0 && aTransform.ty == 0)) + { + var center = { x:x, y:y }, + end = { x:COS(anEndAngle), y:SIN(anEndAngle) }, + start = { x:COS(aStartAngle), y:SIN(aStartAngle) }; + end = { x:end.x * aTransform.a + end.y * aTransform.c + aTransform.tx, y:end.x * aTransform.b + end.y * aTransform.d + aTransform.ty }; + start = { x:start.x * aTransform.a + start.y * aTransform.c + aTransform.tx, y:start.x * aTransform.b + start.y * aTransform.d + aTransform.ty }; + center = { x:center.x * aTransform.a + center.y * aTransform.c + aTransform.tx, y:center.x * aTransform.b + center.y * aTransform.d + aTransform.ty }; + x = center.x; + y = center.y; + var oldEndAngle = anEndAngle, + oldStartAngle = aStartAngle; + anEndAngle = ATAN2(end.y - aTransform.ty, end.x - aTransform.tx); + aStartAngle = ATAN2(start.y - aTransform.ty, start.x - aTransform.tx); + if (anEndAngle == aStartAngle && oldEndAngle != oldStartAngle) + if (oldStartAngle > oldEndAngle) + anEndAngle = anEndAngle - PI2; + else + aStartAngle = aStartAngle - PI2; + aRadius = { width:aRadius, height:0 }; + aRadius = { width:aRadius.width * aTransform.a + aRadius.height * aTransform.c, height:aRadius.width * aTransform.b + aRadius.height * aTransform.d }; + aRadius = SQRT(aRadius.width * aRadius.width + aRadius.height * aRadius.height); + } + aPath.current = { x:x + aRadius * COS(anEndAngle), y:y + aRadius * SIN(anEndAngle) }; + aPath.elements[aPath.count++] = { type:kCGPathElementAddArc, x:x, y:y, radius:aRadius, startAngle:aStartAngle, endAngle:anEndAngle }; +} +CGPathAddArcToPoint= function(aPath, aTransform, x1, y1, x2, y2, aRadius) +{ +} +CGPathAddCurveToPoint= function(aPath, aTransform, cp1x, cp1y, cp2x, cp2y, x, y) +{ + var cp1 = { x:cp1x, y:cp1y }, + cp2 = { x:cp2x, y:cp2y }, + end = { x:x, y:y }; + if (aTransform) + { + cp1 = { x:cp1.x * aTransform.a + cp1.y * aTransform.c + aTransform.tx, y:cp1.x * aTransform.b + cp1.y * aTransform.d + aTransform.ty }; + cp2 = { x:cp2.x * aTransform.a + cp2.y * aTransform.c + aTransform.tx, y:cp2.x * aTransform.b + cp2.y * aTransform.d + aTransform.ty }; + end = { x:end.x * aTransform.a + end.y * aTransform.c + aTransform.tx, y:end.x * aTransform.b + end.y * aTransform.d + aTransform.ty }; + } + aPath.current = end; + aPath.elements[aPath.count++] = { type:kCGPathElementAddCurveToPoint, cp1x:cp1.x, cp1y:cp1.y, cp2x:cp2.x, cp2y:cp2.y, x:end.x, y:end.y }; +} +CGPathAddLines= function(aPath, aTransform, points, count) +{ + var i = 1; + if (arguments["count"] == NULL) + var count = points.length; + if (!aPath || count < 2) + return; + CGPathMoveToPoint(aPath, aTransform, points[0].x, points[0].y); + for (; i < count; ++i) + CGPathAddLineToPoint(aPath, aTransform, points[i].x, points[i].y); +} +CGPathAddLineToPoint= function(aPath, aTransform, x, y) +{ + var point = { x:x, y:y }; + if (aTransform != NULL) + point = { x:point.x * aTransform.a + point.y * aTransform.c + aTransform.tx, y:point.x * aTransform.b + point.y * aTransform.d + aTransform.ty }; + aPath.elements[aPath.count++] = { type: kCGPathElementAddLineToPoint, x:point.x, y:point.y }; + aPath.current = point; +} +CGPathAddPath= function(aPath, aTransform, anotherPath) +{ + for (var i = 0, count = anotherPath.count; i < count; ++i) + { + var element = anotherPath.elements[i]; + switch (element.type) + { + case kCGPathElementAddLineToPoint: CGPathAddLineToPoint(aPath, aTransform, element.x, element.y); + break; + case kCGPathElementAddCurveToPoint: CGPathAddCurveToPoint(aPath, aTransform, + element.cp1x, element.cp1y, + element.cp2x, element.cp2y, + element.x, element.y); + break; + case kCGPathElementAddArc: CGPathAddArc(aPath, aTransform, element.x, element.y, + element.radius, element.startAngle, + element.endAngle, element.isClockwise); + break; + case kCGPathElementAddQuadCurveToPoint: CGPathAddQuadCurveToPoint(aPath, aTransform, + element.cpx, element.cpy, + element.x, element.y); + break; + case kCGPathElementMoveToPoint: CGPathMoveToPoint(aPath, aTransform, element.x, element.y); + break; + case kCGPathElementCloseSubpath: CGPathCloseSubpath(aPath); + break; + } + } +} +CGPathAddQuadCurveToPoint= function(aPath, aTransform, cpx, cpy, x, y) +{ + var cp = { x:cpx, y:cpy }, + end = { x:x, y:y }; + if (aTransform) + { + cp = { x:cp.x * aTransform.a + cp.y * aTransform.c + aTransform.tx, y:cp.x * aTransform.b + cp.y * aTransform.d + aTransform.ty }; + end = { x:end.x * aTransform.a + end.y * aTransform.c + aTransform.tx, y:end.x * aTransform.b + end.y * aTransform.d + aTransform.ty }; + } + aPath.elements[aPath.count++] = { type:kCGPathElementAddQuadCurveToPoint, cpx:cp.x, cpy:cp.y, x:end.x, y:end.y } + aPath.current = end; +} +CGPathAddRect= function(aPath, aTransform, aRect) +{ + CGPathAddRects(aPath, aTransform, [aRect], 1); +} +CGPathAddRects= function(aPath, aTransform, rects, count) +{ + var i = 0; + if (arguments["count"] == NULL) + var count = rects.length; + for (; i < count; ++i) + { + var rect = rects[i]; + CGPathMoveToPoint(aPath, aTransform, (rect.origin.x), (rect.origin.y)); + CGPathAddLineToPoint(aPath, aTransform, (rect.origin.x + rect.size.width), (rect.origin.y)); + CGPathAddLineToPoint(aPath, aTransform, (rect.origin.x + rect.size.width), (rect.origin.y + rect.size.height)); + CGPathAddLineToPoint(aPath, aTransform, (rect.origin.x), (rect.origin.y + rect.size.height)); + CGPathCloseSubpath(aPath); + } +} +CGPathMoveToPoint= function(aPath, aTransform, x, y) +{ + var point = { x:x, y:y }, + count = aPath.count; + if (aTransform != NULL) + point = { x:point.x * aTransform.a + point.y * aTransform.c + aTransform.tx, y:point.x * aTransform.b + point.y * aTransform.d + aTransform.ty }; + aPath.start = point; + aPath.current = point; + var previous = aPath.elements[count - 1]; + if (count != 0 && previous.type == kCGPathElementMoveToPoint) + { + previous.x = point.x; + previous.y = point.y; + } + else + aPath.elements[aPath.count++] = { type:kCGPathElementMoveToPoint, x:point.x, y:point.y }; +} +var KAPPA = 4.0 * ((SQRT2 - 1.0) / 3.0); +CGPathWithEllipseInRect= function(aRect) +{ + var path = CGPathCreateMutable(); + if ((aRect.size.width) == (aRect.size.height)) + CGPathAddArc(path, nil, (aRect.origin.x + (aRect.size.width) / 2.0), (aRect.origin.y + (aRect.size.height) / 2.0), (aRect.size.width) / 2.0, 0.0, 2 * PI, YES); + else + { + var axis = { width:(aRect.size.width) / 2.0, height:(aRect.size.height) / 2.0 }, + center = { x:(aRect.origin.x) + axis.width, y:(aRect.origin.y) + axis.height }; + CGPathMoveToPoint(path, nil, center.x, center.y - axis.height); + CGPathAddCurveToPoint(path, nil, center.x + (KAPPA * axis.width), center.y - axis.height, center.x + axis.width, center.y - (KAPPA * axis.height), center.x + axis.width, center.y); + CGPathAddCurveToPoint(path, nil, center.x + axis.width, center.y + (KAPPA * axis.height), center.x + (KAPPA * axis.width), center.y + axis.height, center.x, center.y + axis.height); + CGPathAddCurveToPoint(path, nil, center.x - (KAPPA * axis.width), center.y + axis.height, center.x - axis.width, center.y + (KAPPA * axis.height), center.x - axis.width, center.y); + CGPathAddCurveToPoint(path, nil, center.x - axis.width, center.y - (KAPPA * axis.height), center.x - (KAPPA * axis.width), center.y - axis.height, center.x, center.y - axis.height); + } + CGPathCloseSubpath(path); + return path; +} +CGPathWithRoundedRectangleInRect= function(aRect, xRadius, yRadius , ne, se, sw, nw) +{ + var path = CGPathCreateMutable(), + xMin = (aRect.origin.x), + xMax = (aRect.origin.x + aRect.size.width), + yMin = (aRect.origin.y), + yMax = (aRect.origin.y + aRect.size.height); + CGPathMoveToPoint(path, nil, xMin + xRadius, yMin); + if (ne) + { + CGPathAddLineToPoint(path, nil, xMax - xRadius, yMin); + CGPathAddCurveToPoint(path, nil, xMax - xRadius, yMin, xMax, yMin, xMax, yMin + xRadius); + } + else + CGPathAddLineToPoint(path, nil, xMax, yMin); + if (se) + { + CGPathAddLineToPoint(path, nil, xMax, yMax - xRadius); + CGPathAddCurveToPoint(path, nil, xMax, yMax - xRadius, xMax, yMax, xMax - xRadius, yMax); + } + else + CGPathAddLineToPoint(path, nil, xMax, yMax); + if (sw) + { + CGPathAddLineToPoint(path, nil, xMin + xRadius, yMax); + CGPathAddCurveToPoint(path, nil, xMin + xRadius, yMax, xMin, yMax, xMin, yMax - xRadius); + } + else + CGPathAddLineToPoint(path, nil, xMin, yMax); + if (nw) + { + CGPathAddLineToPoint(path, nil, xMin, yMin + xRadius); + CGPathAddCurveToPoint(path, nil, xMin, yMin + xRadius, xMin, yMin, xMin + xRadius, yMin); + } else + CGPathAddLineToPoint(path, nil, xMin, yMin); + CGPathCloseSubpath(path); + return path; +} +CGPathCloseSubpath= function(aPath) +{ + var count = aPath.count; + if (count == 0 || aPath.elements[count - 1].type == kCGPathElementCloseSubpath) + return; + aPath.elements[aPath.count++] = { type:kCGPathElementCloseSubpath, points:[aPath.start] }; +} +CGPathEqualToPath= function(aPath, anotherPath) +{ + if (aPath == anotherPath) + return YES; + if (aPath.count != anotherPath.count || !(aPath.start.x == anotherPath.start.x && aPath.start.y == anotherPath.start.y) || !(aPath.current.x == anotherPath.current.x && aPath.current.y == anotherPath.current.y)) + return NO; + var i = 0, + count = aPath.count; + for (; i < count; ++i) + { + var element = aPath[i], + anotherElement = anotherPath[i]; + if (element.type != anotherElement.type) + return NO; + if ((element.type == kCGPathElementAddArc || element.type == kCGPathElementAddArcToPoint) && + element.radius != anotherElement.radius) + return NO; + var j = element.points.length; + while (j--) + if (!(element.points[j].x == anotherElement.points[j].x && element.points[j].y == anotherElement.points[j].y)) + return NO; + } + return YES; +} +CGPathGetCurrentPoint= function(aPath) +{ + return { x:aPath.current.x, y:aPath.current.y }; +} +CGPathIsEmpty= function(aPath) +{ + return !aPath || aPath.count == 0; +} + +p;18;_CPMenuBarWindow.jt;19091;@STATIC;1.0;i;15;_CPMenuWindow.jt;19051; + + + + + +objj_executeFile("_CPMenuWindow.j", YES); + + +var MENUBAR_HEIGHT = 28.0, + MENUBAR_MARGIN = 10.0, + MENUBAR_LEFT_MARGIN = 10.0, + MENUBAR_RIGHT_MARGIN = 10.0; + +var _CPMenuBarWindowBackgroundColor = nil, + _CPMenuBarWindowFont = nil; + +{var the_class = objj_allocateClassPair(CPPanel, "_CPMenuBarWindow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menu"), new objj_ivar("_highlightView"), new objj_ivar("_menuItemViews"), new objj_ivar("_trackingMenuItem"), new objj_ivar("_iconImageView"), new objj_ivar("_titleField"), new objj_ivar("_textColor"), new objj_ivar("_titleColor"), new objj_ivar("_textShadowColor"), new objj_ivar("_titleShadowColor"), new objj_ivar("_highlightColor"), new objj_ivar("_highlightTextColor"), new objj_ivar("_highlightTextShadowColor")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $_CPMenuBarWindow__init(self, _cmd) +{ with(self) +{ + + var contentRect = objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "contentBounds"); + + contentRect.size.height = MENUBAR_HEIGHT; + + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuBarWindow").super_class }, "initWithContentRect:styleMask:", contentRect, CPBorderlessWindowMask); + + if (self) + { + objj_msgSend(self, "setLevel:", CPMainMenuWindowLevel); + objj_msgSend(self, "setAutoresizingMask:", CPWindowWidthSizable); + + var contentView = objj_msgSend(self, "contentView"); + + objj_msgSend(contentView, "setAutoresizesSubviews:", NO); + + objj_msgSend(self, "setBecomesKeyOnlyIfNeeded:", YES); + + + _iconImageView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 16.0, 16.0)); + + objj_msgSend(contentView, "addSubview:", _iconImageView); + + _titleField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + + objj_msgSend(_titleField, "setFont:", objj_msgSend(CPFont, "boldSystemFontOfSize:", 13.0)); + objj_msgSend(_titleField, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(_titleField, "setTextShadowOffset:", CGSizeMake(0, 1)); + + objj_msgSend(contentView, "addSubview:", _titleField); + } + + return self; +} +},["id"]), new objj_method(sel_getUid("setTitle:"), function $_CPMenuBarWindow__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(_titleField, "setStringValue:", aTitle); + objj_msgSend(_titleField, "sizeToFit"); + objj_msgSend(self, "tile"); +} +},["void","CPString"]), new objj_method(sel_getUid("setIconImage:"), function $_CPMenuBarWindow__setIconImage_(self, _cmd, anImage) +{ with(self) +{ + objj_msgSend(_iconImageView, "setImage:", anImage); + objj_msgSend(_iconImageView, "setHidden:", anImage == nil); + objj_msgSend(self, "tile"); +} +},["void","CPImage"]), new objj_method(sel_getUid("setIconImageAlphaValue:"), function $_CPMenuBarWindow__setIconImageAlphaValue_(self, _cmd, anAlphaValue) +{ with(self) +{ + objj_msgSend(_iconImageView, "setAlphaValue:", anAlphaValue); +} +},["void","float"]), new objj_method(sel_getUid("setColor:"), function $_CPMenuBarWindow__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (!aColor) + { + if (!_CPMenuBarWindowBackgroundColor) + _CPMenuBarWindowBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(_CPMenuBarWindow, "class")), "pathForResource:", "_CPMenuBarWindow/_CPMenuBarWindowBackground.png"), CGSizeMake(1.0, 28.0))); + objj_msgSend(objj_msgSend(self, "contentView"), "setBackgroundColor:", _CPMenuBarWindowBackgroundColor); + } + else + objj_msgSend(objj_msgSend(self, "contentView"), "setBackgroundColor:", aColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("setTextColor:"), function $_CPMenuBarWindow__setTextColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textColor == aColor) + return; + _textColor = aColor; + objj_msgSend(_menuItemViews, "makeObjectsPerformSelector:withObject:", sel_getUid("setTextColor:"), _textColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("setTitleColor:"), function $_CPMenuBarWindow__setTitleColor_(self, _cmd, aColor) +{ with(self) +{ + if (_titleColor == aColor) + return; + _titleColor = aColor; + objj_msgSend(_titleField, "setTextColor:", aColor ? aColor : objj_msgSend(CPColor, "blackColor")); +} +},["void","CPColor"]), new objj_method(sel_getUid("setTextShadowColor:"), function $_CPMenuBarWindow__setTextShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textShadowColor == aColor) + return; + _textShadowColor = aColor; + objj_msgSend(_menuItemViews, "makeObjectsPerformSelector:withObject:", sel_getUid("setTextShadowColor:"), _textShadowColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("setTitleShadowColor:"), function $_CPMenuBarWindow__setTitleShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_titleShadowColor == aColor) + return; + _titleShadowColor = aColor; + objj_msgSend(_titleField, "setTextShadowColor:", aColor ? aColor : objj_msgSend(CPColor, "whiteColor")); +} +},["void","CPColor"]), new objj_method(sel_getUid("setHighlightColor:"), function $_CPMenuBarWindow__setHighlightColor_(self, _cmd, aColor) +{ with(self) +{ + if (_highlightColor == aColor) + return; + _highlightColor = aColor; +} +},["void","CPColor"]), new objj_method(sel_getUid("setHighlightTextColor:"), function $_CPMenuBarWindow__setHighlightTextColor_(self, _cmd, aColor) +{ with(self) +{ + if (_highlightTextColor == aColor) + return; + _highlightTextColor = aColor; +} +},["void","CPColor"]), new objj_method(sel_getUid("setHighlightTextShadowColor:"), function $_CPMenuBarWindow__setHighlightTextShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_highlightTextShadowColor == aColor) + return; + _highlightTextShadowColor = aColor; +} +},["void","CPColor"]), new objj_method(sel_getUid("setMenu:"), function $_CPMenuBarWindow__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + if (_menu == aMenu) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + if (_menu) + { + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidAddItemNotification, _menu); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidChangeItemNotification, _menu); + objj_msgSend(defaultCenter, "removeObserver:name:object:", self, CPMenuDidRemoveItemNotification, _menu); + var items = objj_msgSend(_menu, "itemArray"), + count = items.length; + while (count--) + objj_msgSend(objj_msgSend(items[count], "_menuItemView"), "removeFromSuperview"); + } + _menu = aMenu; + if (_menu) + { + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidAddItem:"), CPMenuDidAddItemNotification, _menu); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidChangeItem:"), CPMenuDidChangeItemNotification, _menu); + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", self, sel_getUid("menuDidRemoveItem:"), CPMenuDidRemoveItemNotification, _menu); + } + _menuItemViews = []; + var contentView = objj_msgSend(self, "contentView"), + items = objj_msgSend(_menu, "itemArray"), + count = items.length; + for (index = 0; index < count; ++index) + { + var item = items[index], + menuItemView = objj_msgSend(item, "_menuItemView"); + _menuItemViews.push(menuItemView); + objj_msgSend(menuItemView, "setTextColor:", _textColor); + objj_msgSend(menuItemView, "setHidden:", objj_msgSend(item, "isHidden")); + objj_msgSend(menuItemView, "synchronizeWithMenuItem"); + objj_msgSend(contentView, "addSubview:", menuItemView); + } + objj_msgSend(self, "tile"); +} +},["void","CPMenu"]), new objj_method(sel_getUid("menuDidChangeItem:"), function $_CPMenuBarWindow__menuDidChangeItem_(self, _cmd, aNotification) +{ with(self) +{ + var menuItem = objj_msgSend(_menu, "itemAtIndex:", objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex")), + menuItemView = objj_msgSend(menuItem, "_menuItemView"); + objj_msgSend(menuItemView, "setHidden:", objj_msgSend(menuItem, "isHidden")); + objj_msgSend(menuItemView, "synchronizeWithMenuItem"); + objj_msgSend(self, "tile"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("menuDidAddItem:"), function $_CPMenuBarWindow__menuDidAddItem_(self, _cmd, aNotification) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex"), + menuItem = objj_msgSend(_menu, "itemAtIndex:", index), + menuItemView = objj_msgSend(menuItem, "_menuItemView"); + objj_msgSend(_menuItemViews, "insertObject:atIndex:", menuItemView, index); + objj_msgSend(menuItemView, "setTextColor:", _textColor); + objj_msgSend(menuItemView, "setHidden:", objj_msgSend(menuItem, "isHidden")); + objj_msgSend(menuItemView, "synchronizeWithMenuItem"); + objj_msgSend(objj_msgSend(self, "contentView"), "addSubview:", menuItemView); + objj_msgSend(self, "tile"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("menuDidRemoveItem:"), function $_CPMenuBarWindow__menuDidRemoveItem_(self, _cmd, aNotification) +{ with(self) +{ + var index = objj_msgSend(objj_msgSend(aNotification, "userInfo"), "objectForKey:", "CPMenuItemIndex"), + menuItemView = objj_msgSend(_menuItemViews, "objectAtIndex:", index); + objj_msgSend(_menuItemViews, "removeObjectAtIndex:", index); + objj_msgSend(menuItemView, "removeFromSuperview"); + objj_msgSend(self, "tile"); +} +},["void","CPNotification"]), new objj_method(sel_getUid("mouseDown:"), function $_CPMenuBarWindow__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var constraintRect = CGRectInset(objj_msgSend(objj_msgSend(self, "platformWindow"), "visibleFrame"), 5.0, 0.0); + constraintRect.size.height -= 5.0; + objj_msgSend(objj_msgSend(_CPMenuManager, "sharedMenuManager"), "beginTracking:menuContainer:constraintRect:callback:", anEvent, self, constraintRect, function(aMenuContainer, aMenu) + { + objj_msgSend(aMenu, "_performActionOfHighlightedItemChain"); + objj_msgSend(aMenu, "_highlightItemAtIndex:", CPNotFound); + }); +} +},["void","CPEvent"]), new objj_method(sel_getUid("font"), function $_CPMenuBarWindow__font(self, _cmd) +{ with(self) +{ + objj_msgSend(CPFont, "systemFontOfSize:", 12.0); +} +},["CPFont"]), new objj_method(sel_getUid("tile"), function $_CPMenuBarWindow__tile(self, _cmd) +{ with(self) +{ + var items = objj_msgSend(_menu, "itemArray"), + index = 0, + count = items.length, + x = MENUBAR_LEFT_MARGIN, + y = 0.0, + isLeftAligned = YES; + for (; index < count; ++index) + { + var item = items[index]; + if (objj_msgSend(item, "isSeparatorItem")) + { + x = CGRectGetWidth(objj_msgSend(self, "frame")) - MENUBAR_RIGHT_MARGIN; + isLeftAligned = NO; + continue; + } + if (objj_msgSend(item, "isHidden")) + continue; + var menuItemView = objj_msgSend(item, "_menuItemView"), + frame = objj_msgSend(menuItemView, "frame"); + if (isLeftAligned) + { + objj_msgSend(menuItemView, "setFrame:", CGRectMake(x, 0.0, CGRectGetWidth(frame), MENUBAR_HEIGHT)); + x += CGRectGetWidth(objj_msgSend(menuItemView, "frame")); + } + else + { + objj_msgSend(menuItemView, "setFrame:", CGRectMake(x - CGRectGetWidth(frame), 0.0, CGRectGetWidth(frame), MENUBAR_HEIGHT)); + x = CGRectGetMinX(objj_msgSend(menuItemView, "frame")); + } + } + var bounds = objj_msgSend(objj_msgSend(self, "contentView"), "bounds"), + titleFrame = objj_msgSend(_titleField, "frame"); + if (objj_msgSend(_iconImageView, "isHidden")) + objj_msgSend(_titleField, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - CGRectGetWidth(titleFrame)) / 2.0, (CGRectGetHeight(bounds) - CGRectGetHeight(titleFrame)) / 2.0)); + else + { + var iconFrame = objj_msgSend(_iconImageView, "frame"), + iconWidth = CGRectGetWidth(iconFrame), + totalWidth = iconWidth + CGRectGetWidth(titleFrame); + objj_msgSend(_iconImageView, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - totalWidth) / 2.0, (CGRectGetHeight(bounds) - CGRectGetHeight(iconFrame)) / 2.0)); + objj_msgSend(_titleField, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - totalWidth) / 2.0 + iconWidth, (CGRectGetHeight(bounds) - CGRectGetHeight(titleFrame)) / 2.0)); + } +} +},["void"]), new objj_method(sel_getUid("setFrame:display:animate:"), function $_CPMenuBarWindow__setFrame_display_animate_(self, _cmd, aRect, shouldDisplay, shouldAnimate) +{ with(self) +{ + var size = objj_msgSend(self, "frame").size; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuBarWindow").super_class }, "setFrame:display:animate:", aRect, shouldDisplay, shouldAnimate); + if (!(size.width == aRect.size.width && size.height == aRect.size.height)) + objj_msgSend(self, "tile"); +} +},["void","CGRect","BOOL","BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPMenuBarWindow__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPMenuBarWindow, "class")) + return; + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + _CPMenuBarWindowFont = objj_msgSend(CPFont, "boldSystemFontOfSize:", 12.0); +} +},["void"]), new objj_method(sel_getUid("font"), function $_CPMenuBarWindow__font(self, _cmd) +{ with(self) +{ + return _CPMenuBarWindowFont; +} +},["CPFont"])]); +} +{ +var the_class = objj_getClass("_CPMenuBarWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPMenuBarWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("isMenuBar"), function $_CPMenuBarWindow__isMenuBar(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("globalFrame"), function $_CPMenuBarWindow__globalFrame(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "frame"); +} +},["CGRect"]), new objj_method(sel_getUid("scrollingStateForPoint:"), function $_CPMenuBarWindow__scrollingStateForPoint_(self, _cmd, aGlobalLocation) +{ with(self) +{ + return _CPMenuManagerScrollingStateNone; +} +},["_CPManagerScrollingState","CGPoint"]), new objj_method(sel_getUid("itemIndexAtPoint:"), function $_CPMenuBarWindow__itemIndexAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var items = objj_msgSend(_menu, "itemArray"), + index = items.length; + while (index--) + { + var item = items[index]; + if (objj_msgSend(item, "isHidden") || objj_msgSend(item, "isSeparatorItem")) + continue; + if (CGRectContainsPoint(objj_msgSend(self, "rectForItemAtIndex:", index), aPoint)) + return index; + } + return CPNotFound; +} +},["CPInteger","CGPoint"]), new objj_method(sel_getUid("rectForItemAtIndex:"), function $_CPMenuBarWindow__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + var menuItem = objj_msgSend(_menu, "itemAtIndex:", anIndex === CPNotFound ? 0 : anIndex); + return objj_msgSend(objj_msgSend(menuItem, "_menuItemView"), "frame"); +} +},["CGRect","CPInteger"])]); +} +{var the_class = objj_allocateClassPair(_CPMenuView, "_CPMenuBarView"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("rectForItemAtIndex:"), function $_CPMenuBarView__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_menuItemViews[anIndex === CPNotFound ? 0 : anIndex], "frame"); +} +},["CGRect","int"]), new objj_method(sel_getUid("itemIndexAtPoint:"), function $_CPMenuBarView__itemIndexAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + if (!CGRectContainsPoint(bounds, aPoint)) + return CPNotFound; + var x = aPoint.x, + low = 0, + high = _visibleMenuItemInfos.length - 1; + while (low <= high) + { + var middle = FLOOR(low + (high - low) / 2), + info = _visibleMenuItemInfos[middle], + frame = objj_msgSend(info.view, "frame"); + if (x < CGRectGetMinX(frame)) + high = middle - 1; + else if (x > CGRectGetMaxX(frame)) + low = middle + 1; + else + return info.index; + } + return CPNotFound; +} +},["int","CGPoint"]), new objj_method(sel_getUid("tile"), function $_CPMenuBarView__tile(self, _cmd) +{ with(self) +{ + var items = objj_msgSend(_menu, "itemArray"), + index = 0, + count = items.length, + x = MENUBAR_LEFT_MARGIN, + y = 0.0, + isLeftAligned = YES; + for (; index < count; ++index) + { + var item = items[index]; + if (objj_msgSend(item, "isSeparatorItem")) + { + x = CGRectGetWidth(objj_msgSend(self, "frame")) - MENUBAR_RIGHT_MARGIN; + isLeftAligned = NO; + continue; + } + if (objj_msgSend(item, "isHidden")) + continue; + var menuItemView = objj_msgSend(item, "_menuItemView"), + frame = objj_msgSend(menuItemView, "frame"); + if (isLeftAligned) + { + objj_msgSend(menuItemView, "setFrameOrigin:", CGPointMake(x, (MENUBAR_HEIGHT - 1.0 - CGRectGetHeight(frame)) / 2.0)); + x += CGRectGetWidth(objj_msgSend(menuItemView, "frame")) + MENUBAR_MARGIN; + } + else + { + objj_msgSend(menuItemView, "setFrameOrigin:", CGPointMake(x - CGRectGetWidth(frame), (MENUBAR_HEIGHT - 1.0 - CGRectGetHeight(frame)) / 2.0)); + x = CGRectGetMinX(objj_msgSend(menuItemView, "frame")) - MENUBAR_MARGIN; + } + } + var bounds = objj_msgSend(objj_msgSend(self, "contentView"), "bounds"), + titleFrame = objj_msgSend(_titleField, "frame"); + if (objj_msgSend(_iconImageView, "isHidden")) + objj_msgSend(_titleField, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - CGRectGetWidth(titleFrame)) / 2.0, (CGRectGetHeight(bounds) - CGRectGetHeight(titleFrame)) / 2.0)); + else + { + var iconFrame = objj_msgSend(_iconImageView, "frame"), + iconWidth = CGRectGetWidth(iconFrame), + totalWidth = iconWidth + CGRectGetWidth(titleFrame); + objj_msgSend(_iconImageView, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - totalWidth) / 2.0, (CGRectGetHeight(bounds) - CGRectGetHeight(iconFrame)) / 2.0)); + objj_msgSend(_titleField, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - totalWidth) / 2.0 + iconWidth, (CGRectGetHeight(bounds) - CGRectGetHeight(titleFrame)) / 2.0)); + } +} +},["void"])]); +} + +p;16;_CPMenuManager.jt;13202;@STATIC;1.0;I;21;Foundation/CPObject.jt;13156; + + + + +objj_executeFile("Foundation/CPObject.j", NO); + + +_CPMenuManagerScrollingStateUp = -1, +_CPMenuManagerScrollingStateDown = 1, +_CPMenuManagerScrollingStateNone = 0; + +var STICKY_TIME_INTERVAL = 500; + +var SharedMenuManager = nil; + +{var the_class = objj_allocateClassPair(CPObject, "_CPMenuManager"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_startTime"), new objj_ivar("_scrollingState"), new objj_ivar("_lastGlobalLocation"), new objj_ivar("_lastMouseOverMenuView"), new objj_ivar("_constraintRect"), new objj_ivar("_menuContainerStack"), new objj_ivar("_trackingCallback")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $_CPMenuManager__init(self, _cmd) +{ with(self) +{ + if (SharedMenuManager) + return SharedMenuManager; + + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuManager").super_class }, "init"); +} +},["id"]), new objj_method(sel_getUid("trackingMenuContainer"), function $_CPMenuManager__trackingMenuContainer(self, _cmd) +{ with(self) +{ + return _menuContainerStack[0]; +} +},["id"]), new objj_method(sel_getUid("trackingMenu"), function $_CPMenuManager__trackingMenu(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "trackingMenuContainer"), "menu"); +} +},["CPMenu"]), new objj_method(sel_getUid("beginTracking:menuContainer:constraintRect:callback:"), function $_CPMenuManager__beginTracking_menuContainer_constraintRect_callback_(self, _cmd, anEvent, aMenuContainer, aRect, aCallback) +{ with(self) +{ + var menu = objj_msgSend(aMenuContainer, "menu"); + + CPApp._activeMenu = menu; + + _startTime = objj_msgSend(anEvent, "timestamp"); + _scrollingState = _CPMenuManagerScrollingStateNone; + + _constraintRect = aRect; + _menuContainerStack = [aMenuContainer]; + _trackingCallback = aCallback; + + if (menu === objj_msgSend(CPApp, "mainMenu")) + { + var globalLocation = objj_msgSend(anEvent, "globalLocation"); + + + var menuLocation = objj_msgSend(aMenuContainer, "convertGlobalToBase:", globalLocation); + + + var activeItemIndex = objj_msgSend(aMenuContainer, "itemIndexAtPoint:", menuLocation), + activeItem = activeItemIndex !== CPNotFound ? objj_msgSend(menu, "itemAtIndex:", activeItemIndex) : nil; + + _menuBarButtonItemIndex = activeItemIndex; + _menuBarButtonMenuContainer = aMenuContainer; + + if (objj_msgSend(activeItem, "_isMenuBarButton")) + return objj_msgSend(self, "trackMenuBarButtonEvent:", anEvent); + } + + objj_msgSend(self, "trackEvent:", anEvent); +} +},["void","CPEvent","id","CGRect","Function"]), new objj_method(sel_getUid("trackEvent:"), function $_CPMenuManager__trackEvent_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + trackingMenu = objj_msgSend(self, "trackingMenu"); + + + if (type === CPAppKitDefined) + return objj_msgSend(self, "completeTracking"); + + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackEvent:"), CPPeriodicMask | CPMouseMovedMask | CPLeftMouseDraggedMask | CPLeftMouseUpMask | CPAppKitDefinedMask, nil, nil, YES); + + + var globalLocation = type === CPPeriodic ? _lastGlobalLocation : objj_msgSend(anEvent, "globalLocation"); + + + _lastGlobalLocation = globalLocation; + + + var activeMenuContainer = objj_msgSend(self, "menuContainerForPoint:", globalLocation), + activeMenu = objj_msgSend(activeMenuContainer, "menu"), + menuLocation = objj_msgSend(activeMenuContainer, "convertGlobalToBase:", globalLocation); + + + var activeItemIndex = activeMenuContainer ? objj_msgSend(activeMenuContainer, "itemIndexAtPoint:", menuLocation) : CPNotFound, + activeItem = activeItemIndex !== CPNotFound ? objj_msgSend(activeMenu, "itemAtIndex:", activeItemIndex) : nil; + + + if (!objj_msgSend(activeItem, "isEnabled") || objj_msgSend(activeItem, "_isMenuBarButton")) + { + activeItemIndex = CPNotFound; + activeItem = nil; + } + + var mouseOverMenuView = objj_msgSend(activeItem, "view"); + + if (type === CPPeriodic) + { + if (_scrollingState === _CPMenuManagerScrollingStateUp) + objj_msgSend(activeMenuContainer, "scrollUp"); + + else if (_scrollingState === _CPMenuManagerScrollingStateDown) + objj_msgSend(activeMenuContainer, "scrollDown"); + } + + + if (mouseOverMenuView) + { + if (!_lastMouseOverMenuView) + objj_msgSend(activeMenu, "_highlightItemAtIndex:", CPNotFound); + + if (_lastMouseOverMenuView != mouseOverMenuView) + { + objj_msgSend(mouseOverMenuView, "mouseExited:", anEvent); + + objj_msgSend(_lastMouseOverMenuView, "mouseEntered:", anEvent); + + _lastMouseOverMenuView = mouseOverMenuView; + } + + var menuContainerWindow = activeMenuContainer; + + if (!objj_msgSend(menuContainerWindow, "isKindOfClass:", objj_msgSend(CPWindow, "class"))) + menuContainerWindow = objj_msgSend(menuContainerWindow, "window"); + + objj_msgSend(menuContainerWindow, "sendEvent:", objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", type, menuLocation, objj_msgSend(anEvent, "modifierFlags"), objj_msgSend(anEvent, "timestamp"), menuContainerWindow, nil, 0, objj_msgSend(anEvent, "clickCount"), objj_msgSend(anEvent, "pressure"))); + } + else + { + if (_lastMouseOverMenuView) + { + objj_msgSend(_lastMouseOverMenuView, "mouseExited:", anEvent); + _lastMouseOverMenuView = nil; + } + + objj_msgSend(activeMenu, "_highlightItemAtIndex:", activeItemIndex); + + if (type === CPMouseMoved || type === CPLeftMouseDragged || type === CPLeftMouseDown) + { + var oldScrollingState = _scrollingState; + + _scrollingState = objj_msgSend(activeMenuContainer, "scrollingStateForPoint:", globalLocation); + + if (_scrollingState !== oldScrollingState) + { + if (_scrollingState === _CPMenuManagerScrollingStateNone) + objj_msgSend(CPEvent, "stopPeriodicEvents"); + + else if (oldScrollingState === _CPMenuManagerScrollingStateNone) + objj_msgSend(CPEvent, "startPeriodicEventsAfterDelay:withPeriod:", 0.0, 0.04); + } + } + else if (type === CPLeftMouseUp && (objj_msgSend(anEvent, "timestamp") - _startTime > STICKY_TIME_INTERVAL)) + objj_msgSend(trackingMenu, "cancelTracking"); + } + + + if (objj_msgSend(activeItem, "hasSubmenu")) + { + var activeItemRect = objj_msgSend(activeMenuContainer, "rectForItemAtIndex:", activeItemIndex); + + if (objj_msgSend(activeMenuContainer, "isMenuBar")) + var newMenuOrigin = CGPointMake(CGRectGetMinX(activeItemRect), CGRectGetMaxY(activeItemRect)); + else + var newMenuOrigin = CGPointMake(CGRectGetMaxX(activeItemRect), CGRectGetMinY(activeItemRect)); + + newMenuOrigin = objj_msgSend(activeMenuContainer, "convertBaseToGlobal:", newMenuOrigin); + + objj_msgSend(self, "showMenu:fromMenu:atPoint:", objj_msgSend(activeItem, "submenu"), objj_msgSend(activeItem, "menu"), newMenuOrigin); + } + + + + else + objj_msgSend(self, "showMenu:fromMenu:atPoint:", nil, activeMenu, CGPointMakeZero()); +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackMenuBarButtonEvent:"), function $_CPMenuManager__trackMenuBarButtonEvent_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + + if (type === CPAppKitDefined) + return objj_msgSend(self, "completeTracking"); + + var globalLocation = objj_msgSend(anEvent, "globalLocation"); + + + var menu = objj_msgSend(self, "trackingMenu"), + trackingMenuContainer = objj_msgSend(self, "trackingMenuContainer"), + menuLocation = objj_msgSend(trackingMenuContainer, "convertGlobalToBase:", globalLocation); + + if (objj_msgSend(trackingMenuContainer, "itemIndexAtPoint:", menuLocation) === _menuBarButtonItemIndex) + objj_msgSend(menu, "_highlightItemAtIndex:", _menuBarButtonItemIndex); + + else + objj_msgSend(menu, "_highlightItemAtIndex:", CPNotFound); + + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackMenuBarButtonEvent:"), CPPeriodicMask | CPMouseMovedMask | CPLeftMouseDraggedMask | CPLeftMouseUpMask | CPAppKitDefinedMask, nil, nil, YES); + + if (type === CPLeftMouseUp) + objj_msgSend(menu, "cancelTracking"); +} +},["void","CPEvent"]), new objj_method(sel_getUid("completeTracking"), function $_CPMenuManager__completeTracking(self, _cmd) +{ with(self) +{ + var trackingMenu = objj_msgSend(self, "trackingMenu"); + + + objj_msgSend(CPEvent, "stopPeriodicEvents"); + + + var highlightedItem = objj_msgSend(trackingMenu, "highlightedItem"); + + + objj_msgSend(self, "showMenu:fromMenu:atPoint:", nil, trackingMenu, nil); + + var delegate = objj_msgSend(trackingMenu, "delegate"); + + if (objj_msgSend(delegate, "respondsToSelector:", sel_getUid("menuDidClose:"))) + objj_msgSend(delegate, "menuDidClose:", trackingMenu); + + if (_trackingCallback) + _trackingCallback(objj_msgSend(self, "trackingMenuContainer"), trackingMenu); + + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPMenuDidEndTrackingNotification, trackingMenu); + + CPApp._activeMenu = nil; +} +},["void"]), new objj_method(sel_getUid("menuContainerForPoint:"), function $_CPMenuManager__menuContainerForPoint_(self, _cmd, aGlobalLocation) +{ with(self) +{ + var count = objj_msgSend(_menuContainerStack, "count"), + firstMenuContainer = _menuContainerStack[0]; + + + if (count === 1) + return firstMenuContainer; + + var firstMenuWindowIndex = 0, + lastMenuWindowIndex = count - 1; + + + if (objj_msgSend(firstMenuContainer, "isMenuBar")) + { + if (CGRectContainsPoint(objj_msgSend(firstMenuContainer, "globalFrame"), aGlobalLocation)) + return firstMenuContainer; + + firstMenuWindowIndex = 1; + } + + var index = count, + x = aGlobalLocation.x, + closerDeltaX = Infinity, + closerMenuContainer = nil; + + while (index-- > firstMenuWindowIndex) + { + var menuContainer = _menuContainerStack[index], + menuContainerFrame = objj_msgSend(menuContainer, "globalFrame"), + menuContainerMinX = (menuContainerFrame.origin.x), + menuContainerMaxX = (menuContainerFrame.origin.x + menuContainerFrame.size.width); + + + if (x < menuContainerMaxX && x >= menuContainerMinX) + return menuContainer; + + + if (index === firstMenuWindowIndex || index === lastMenuWindowIndex) + { + var deltaX = ABS(x < menuContainerMinX ? menuContainerMinX - x : menuContainerMaxX - x); + + if (deltaX < closerDeltaX) + { + closerMenuContainer = menuContainer; + closerDeltaX = deltaX; + } + } + } + + return closerMenuContainer; +} +},["id","float"]), new objj_method(sel_getUid("showMenu:fromMenu:atPoint:"), function $_CPMenuManager__showMenu_fromMenu_atPoint_(self, _cmd, newMenu, baseMenu, aGlobalLocation) +{ with(self) +{ + var count = _menuContainerStack.length, + index = count; + + + while (index--) + { + var menuContainer = _menuContainerStack[index], + menu = objj_msgSend(menuContainer, "menu"); + + + if (menu === baseMenu) + break; + + + if (menu === newMenu) + return objj_msgSend(newMenu, "_highlightItemAtIndex:", CPNotFound); + + objj_msgSend(menuContainer, "orderOut:", self); + objj_msgSend(menuContainer, "setMenu:", nil); + + objj_msgSend(_CPMenuWindow, "poolMenuWindow:", menuContainer); + objj_msgSend(_menuContainerStack, "removeObjectAtIndex:", index); + } + + if (!newMenu) + return; + + + objj_msgSend(newMenu, "_highlightItemAtIndex:", CPNotFound); + + var menuWindow = objj_msgSend(_CPMenuWindow, "menuWindowWithMenu:font:", newMenu, objj_msgSend(_menuContainerStack[0], "font")); + + objj_msgSend(_menuContainerStack, "addObject:", menuWindow); + + objj_msgSend(menuWindow, "setConstraintRect:", _constraintRect); + + + if (baseMenu === objj_msgSend(self, "trackingMenu") && objj_msgSend(objj_msgSend(self, "trackingMenuContainer"), "isMenuBar")) + objj_msgSend(menuWindow, "setBackgroundStyle:", _CPMenuWindowMenuBarBackgroundStyle); + else + objj_msgSend(menuWindow, "setBackgroundStyle:", _CPMenuWindowPopUpBackgroundStyle); + + objj_msgSend(menuWindow, "setFrameOrigin:", aGlobalLocation); + objj_msgSend(menuWindow, "orderFront:", self); +} +},["void","CPMenu","CPMenu","CGPoint"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sharedMenuManager"), function $_CPMenuManager__sharedMenuManager(self, _cmd) +{ with(self) +{ + if (!SharedMenuManager) + SharedMenuManager = objj_msgSend(objj_msgSend(_CPMenuManager, "alloc"), "init"); + + return SharedMenuManager; +} +},["_CPMenuManager"])]); +} + +p;15;_CPMenuWindow.jt;24240;@STATIC;1.0;t;24220; + + + + + +var _CPMenuWindowPool = [], + _CPMenuWindowPoolCapacity = 5, + + _CPMenuWindowBackgroundColors = []; + +_CPMenuWindowMenuBarBackgroundStyle = 0; +_CPMenuWindowPopUpBackgroundStyle = 1; +_CPMenuWindowAttachedMenuBackgroundStyle = 2; + +var STICKY_TIME_INTERVAL = 500, + + TOP_MARGIN = 5.0, + LEFT_MARGIN = 1.0, + RIGHT_MARGIN = 1.0, + BOTTOM_MARGIN = 5.0, + + SCROLL_INDICATOR_HEIGHT = 16.0; + + + + +{var the_class = objj_allocateClassPair(CPWindow, "_CPMenuWindow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuView"), new objj_ivar("_menuClipView"), new objj_ivar("_moreAboveView"), new objj_ivar("_moreBelowView"), new objj_ivar("_unconstrainedFrame"), new objj_ivar("_constraintRect")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithContentRect:styleMask:"), function $_CPMenuWindow__initWithContentRect_styleMask_(self, _cmd, aRect, aStyleMask) +{ with(self) +{ + _constraintRect = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _unconstrainedFrame = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "initWithContentRect:styleMask:", aRect, CPBorderlessWindowMask); + + if (self) + { + objj_msgSend(self, "setLevel:", CPPopUpMenuWindowLevel); + objj_msgSend(self, "setHasShadow:", YES); + objj_msgSend(self, "setShadowStyle:", CPMenuWindowShadowStyle); + objj_msgSend(self, "setAcceptsMouseMovedEvents:", YES); + + var contentView = objj_msgSend(self, "contentView"); + + _menuView = objj_msgSend(objj_msgSend(_CPMenuView, "alloc"), "initWithFrame:", CGRectMakeZero()); + + _menuClipView = objj_msgSend(objj_msgSend(CPClipView, "alloc"), "initWithFrame:", CGRectMake(LEFT_MARGIN, TOP_MARGIN, 0.0, 0.0)); + objj_msgSend(_menuClipView, "setDocumentView:", _menuView); + + objj_msgSend(contentView, "addSubview:", _menuClipView); + + _moreAboveView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + + objj_msgSend(_moreAboveView, "setImage:", _CPMenuWindowMoreAboveImage); + objj_msgSend(_moreAboveView, "setFrameSize:", objj_msgSend(_CPMenuWindowMoreAboveImage, "size")); + + objj_msgSend(contentView, "addSubview:", _moreAboveView); + + _moreBelowView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMakeZero()); + + objj_msgSend(_moreBelowView, "setImage:", _CPMenuWindowMoreBelowImage); + objj_msgSend(_moreBelowView, "setFrameSize:", objj_msgSend(_CPMenuWindowMoreBelowImage, "size")); + + objj_msgSend(contentView, "addSubview:", _moreBelowView); + + objj_msgSend(self, "setShadowStyle:", CPWindowShadowStyleMenu); + } + + return self; +} +},["id","CGRect","unsigned"]), new objj_method(sel_getUid("setFont:"), function $_CPMenuWindow__setFont_(self, _cmd, aFont) +{ with(self) +{ + objj_msgSend(_menuView, "setFont:", aFont); +} +},["void","CPFont"]), new objj_method(sel_getUid("font"), function $_CPMenuWindow__font(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menuView, "font"); +} +},["CPFont"]), new objj_method(sel_getUid("setBackgroundStyle:"), function $_CPMenuWindow__setBackgroundStyle_(self, _cmd, aBackgroundStyle) +{ with(self) +{ + objj_msgSend(self, "setBackgroundColor:", objj_msgSend(objj_msgSend(self, "class"), "backgroundColorForBackgroundStyle:", aBackgroundStyle)); +} +},["void","_CPMenuWindowBackgroundStyle"]), new objj_method(sel_getUid("setMenu:"), function $_CPMenuWindow__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + objj_msgSend(aMenu, "_setMenuWindow:", self); + objj_msgSend(_menuView, "setMenu:", aMenu); + + var menuViewSize = objj_msgSend(_menuView, "frame").size; + + objj_msgSend(self, "setFrameSize:", CGSizeMake(LEFT_MARGIN + menuViewSize.width + RIGHT_MARGIN, TOP_MARGIN + menuViewSize.height + BOTTOM_MARGIN)); + + objj_msgSend(_menuView, "scrollPoint:", CGPointMake(0.0, 0.0)); + objj_msgSend(_menuClipView, "setFrame:", CGRectMake(LEFT_MARGIN, TOP_MARGIN, menuViewSize.width, menuViewSize.height)); +} +},["void","CPMenu"]), new objj_method(sel_getUid("setMinWidth:"), function $_CPMenuWindow__setMinWidth_(self, _cmd, aWidth) +{ with(self) +{ + var size = objj_msgSend(self, "unconstrainedFrame").size; + + objj_msgSend(self, "setFrameSize:", CGSizeMake(MAX(size.width, aWidth), size.height)); +} +},["void","float"]), new objj_method(sel_getUid("menu"), function $_CPMenuWindow__menu(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menuView, "menu"); +} +},["CPMenu"]), new objj_method(sel_getUid("orderFront:"), function $_CPMenuWindow__orderFront_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "setFrame:", _unconstrainedFrame); + + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "orderFront:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("setConstraintRect:"), function $_CPMenuWindow__setConstraintRect_(self, _cmd, aRect) +{ with(self) +{ + _constraintRect = aRect; + + objj_msgSend(self, "setFrame:", _unconstrainedFrame); +} +},["void","CGRect"]), new objj_method(sel_getUid("unconstrainedFrame"), function $_CPMenuWindow__unconstrainedFrame(self, _cmd) +{ with(self) +{ + return { origin: { x:_unconstrainedFrame.origin.x, y:_unconstrainedFrame.origin.y }, size: { width:_unconstrainedFrame.size.width, height:_unconstrainedFrame.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("setFrameOrigin:"), function $_CPMenuWindow__setFrameOrigin_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "setFrame:", { origin: { x:aPoint.x, y:aPoint.y }, size: { width:(_unconstrainedFrame.size.width), height:(_unconstrainedFrame.size.height) } }); +} +},["void","CGPoint"]), new objj_method(sel_getUid("setFrameSize:"), function $_CPMenuWindow__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "setFrame:", { origin: { x:(_unconstrainedFrame.origin.x), y:(_unconstrainedFrame.origin.y) }, size: { width:aSize.width, height:aSize.height } }); +} +},["void","CGSize"]), new objj_method(sel_getUid("setFrame:display:animate:"), function $_CPMenuWindow__setFrame_display_animate_(self, _cmd, aFrame, shouldDisplay, shouldAnimate) +{ with(self) +{ + + + _unconstrainedFrame = { origin: { x:aFrame.origin.x, y:aFrame.origin.y }, size: { width:aFrame.size.width, height:aFrame.size.height } }; + + var constrainedFrame = CGRectIntersection(_unconstrainedFrame, _constraintRect); + + + + constrainedFrame.origin.x = CGRectGetMinX(_unconstrainedFrame); + constrainedFrame.size.width = CGRectGetWidth(_unconstrainedFrame); + + if (CGRectGetWidth(constrainedFrame) > CGRectGetWidth(_constraintRect)) + constrainedFrame.size.width = CGRectGetWidth(_constraintRect); + + if (CGRectGetMaxX(constrainedFrame) > CGRectGetMaxX(_constraintRect)) + constrainedFrame.origin.x -= CGRectGetMaxX(constrainedFrame) - CGRectGetMaxX(_constraintRect); + + if (CGRectGetMinX(constrainedFrame) < CGRectGetMinX(_constraintRect)) + constrainedFrame.origin.x = CGRectGetMinX(_constraintRect); + + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuWindow").super_class }, "setFrame:display:animate:", constrainedFrame, shouldDisplay, shouldAnimate); + + + var menuViewOrigin = CGPointMake(CGRectGetMinX(aFrame) + LEFT_MARGIN, CGRectGetMinY(aFrame) + TOP_MARGIN), + moreAbove = menuViewOrigin.y < CGRectGetMinY(constrainedFrame) + TOP_MARGIN, + moreBelow = menuViewOrigin.y + CGRectGetHeight(objj_msgSend(_menuView, "frame")) > CGRectGetMaxY(constrainedFrame) - BOTTOM_MARGIN, + + topMargin = TOP_MARGIN, + bottomMargin = BOTTOM_MARGIN, + + contentView = objj_msgSend(self, "contentView"), + bounds = objj_msgSend(contentView, "bounds"); + + if (moreAbove) + { + topMargin += SCROLL_INDICATOR_HEIGHT; + + var frame = objj_msgSend(_moreAboveView, "frame"); + + objj_msgSend(_moreAboveView, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - CGRectGetWidth(frame)) / 2.0, (TOP_MARGIN + SCROLL_INDICATOR_HEIGHT - CGRectGetHeight(frame)) / 2.0)); + } + + objj_msgSend(_moreAboveView, "setHidden:", !moreAbove); + + if (moreBelow) + { + bottomMargin += SCROLL_INDICATOR_HEIGHT; + + objj_msgSend(_moreBelowView, "setFrameOrigin:", CGPointMake((CGRectGetWidth(bounds) - CGRectGetWidth(objj_msgSend(_moreBelowView, "frame"))) / 2.0, CGRectGetHeight(bounds) - SCROLL_INDICATOR_HEIGHT - BOTTOM_MARGIN)); + } + + objj_msgSend(_moreBelowView, "setHidden:", !moreBelow); + + var clipFrame = CGRectMake(LEFT_MARGIN, topMargin, CGRectGetWidth(constrainedFrame) - LEFT_MARGIN - RIGHT_MARGIN, CGRectGetHeight(constrainedFrame) - topMargin - bottomMargin) + + objj_msgSend(_menuClipView, "setFrame:", clipFrame); + objj_msgSend(_menuView, "setFrameSize:", CGSizeMake(CGRectGetWidth(clipFrame), CGRectGetHeight(objj_msgSend(_menuView, "frame")))); + + objj_msgSend(_menuView, "scrollPoint:", CGPointMake(0.0, objj_msgSend(self, "convertBaseToGlobal:", clipFrame.origin).y - menuViewOrigin.y)); +} +},["void","CGRect","BOOL","BOOL"]), new objj_method(sel_getUid("hasMinimumNumberOfVisibleItems"), function $_CPMenuWindow__hasMinimumNumberOfVisibleItems(self, _cmd) +{ with(self) +{ + var visibleRect = objj_msgSend(_menuView, "visibleRect"); + + + if (CGRectIsEmpty(visibleRect)) + return NO; + + var numberOfUnhiddenItems = objj_msgSend(_menuView, "numberOfUnhiddenItems"), + minimumNumberOfVisibleItems = MIN(numberOfUnhiddenItems, 3), + count = 0, + index = objj_msgSend(_menuView, "itemIndexAtPoint:", objj_msgSend(_menuView, "convertPoint:fromView:", objj_msgSend(_menuClipView, "frame").origin, nil)); + + for (; index < numberOfUnhiddenItems && count < minimumNumberOfVisibleItems; ++index) + { + var itemRect = objj_msgSend(_menuView, "rectForUnhiddenItemAtIndex:", index), + visibleItemRect = CGRectIntersection(visibleRect, itemRect); + + + if (CGRectIsEmpty(visibleItemRect)) + break; + + + if (CGRectEqualToRect(visibleItemRect, itemRect)) + ++count; + } + + return count >= minimumNumberOfVisibleItems; +} +},["BOOL"]), new objj_method(sel_getUid("canScrollUp"), function $_CPMenuWindow__canScrollUp(self, _cmd) +{ with(self) +{ + return !objj_msgSend(_moreAboveView, "isHidden"); +} +},["BOOL"]), new objj_method(sel_getUid("canScrollDown"), function $_CPMenuWindow__canScrollDown(self, _cmd) +{ with(self) +{ + return !objj_msgSend(_moreBelowView, "isHidden"); +} +},["BOOL"]), new objj_method(sel_getUid("canScroll"), function $_CPMenuWindow__canScroll(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "canScrollUp") || objj_msgSend(self, "canScrollDown"); +} +},["BOOL"]), new objj_method(sel_getUid("scrollUp"), function $_CPMenuWindow__scrollUp(self, _cmd) +{ with(self) +{ + if (CGRectGetMinY(_unconstrainedFrame) >= CGRectGetMinY(_constraintRect)) + return; + + _unconstrainedFrame.origin.y += 10; + + objj_msgSend(self, "setFrame:", _unconstrainedFrame); +} +},["void"]), new objj_method(sel_getUid("scrollDown"), function $_CPMenuWindow__scrollDown(self, _cmd) +{ with(self) +{ + if (CGRectGetMaxY(_unconstrainedFrame) <= CGRectGetHeight(_constraintRect)) + return; + + _unconstrainedFrame.origin.y -= 10; + + objj_msgSend(self, "setFrame:", _unconstrainedFrame); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("menuWindowWithMenu:font:"), function $_CPMenuWindow__menuWindowWithMenu_font_(self, _cmd, aMenu, aFont) +{ with(self) +{ + var menuWindow = nil; + + if (_CPMenuWindowPool.length) + { + menuWindow = _CPMenuWindowPool.pop(); + + + objj_msgSend(menuWindow, "setFrameOrigin:", CGPointMakeZero()); + } + else + menuWindow = objj_msgSend(objj_msgSend(_CPMenuWindow, "alloc"), "init"); + + objj_msgSend(menuWindow, "setFont:", aFont); + objj_msgSend(menuWindow, "setMenu:", aMenu); + objj_msgSend(menuWindow, "setMinWidth:", objj_msgSend(aMenu, "minimumWidth")); + + return menuWindow; +} +},["id","CPMenu","CPFont"]), new objj_method(sel_getUid("poolMenuWindow:"), function $_CPMenuWindow__poolMenuWindow_(self, _cmd, aMenuWindow) +{ with(self) +{ + if (!aMenuWindow || _CPMenuWindowPool.length >= _CPMenuWindowPoolCapacity) + return; + + _CPMenuWindowPool.push(aMenuWindow); +} +},["void","_CPMenuWindow"]), new objj_method(sel_getUid("initialize"), function $_CPMenuWindow__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPMenuWindow, "class")) + return; + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + _CPMenuWindowMoreAboveImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowMoreAbove.png"), CGSizeMake(38.0, 18.0)); + _CPMenuWindowMoreBelowImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowMoreBelow.png"), CGSizeMake(38.0, 18.0)); +} +},["void"]), new objj_method(sel_getUid("_standardLeftMargin"), function $_CPMenuWindow___standardLeftMargin(self, _cmd) +{ with(self) +{ + return LEFT_MARGIN; +} +},["float"]), new objj_method(sel_getUid("backgroundColorForBackgroundStyle:"), function $_CPMenuWindow__backgroundColorForBackgroundStyle_(self, _cmd, aBackgroundStyle) +{ with(self) +{ + var color = _CPMenuWindowBackgroundColors[aBackgroundStyle]; + + if (!color) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(self, "class")); + + if (aBackgroundStyle == _CPMenuWindowPopUpBackgroundStyle) + color = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded0.png"), CGSizeMake(4.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow1.png"), CGSizeMake(1.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded2.png"), CGSizeMake(4.0, 4.0)), + + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow3.png"), CGSizeMake(4.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow4.png"), CGSizeMake(1.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow5.png"), CGSizeMake(4.0, 1.0)), + + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded6.png"), CGSizeMake(4.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow7.png"), CGSizeMake(1.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded8.png"), CGSizeMake(4.0, 4.0)) + ])); + + else if (aBackgroundStyle == _CPMenuWindowMenuBarBackgroundStyle) + color = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow3.png"), CGSizeMake(4.0, 0.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow4.png"), CGSizeMake(1.0, 0.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow5.png"), CGSizeMake(4.0, 0.0)), + + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow3.png"), CGSizeMake(4.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow4.png"), CGSizeMake(1.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow5.png"), CGSizeMake(4.0, 1.0)), + + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded6.png"), CGSizeMake(4.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindow7.png"), CGSizeMake(1.0, 4.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuWindow/_CPMenuWindowRounded8.png"), CGSizeMake(4.0, 4.0)) + ])); + + _CPMenuWindowBackgroundColors[aBackgroundStyle] = color; + } + + return color; +} +},["CPColor","_CPMenuWindowBackgroundStyle"])]); +} + +{ +var the_class = objj_getClass("_CPMenuWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPMenuWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("globalFrame"), function $_CPMenuWindow__globalFrame(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "frame"); +} +},["CGRect"]), new objj_method(sel_getUid("isMenuBar"), function $_CPMenuWindow__isMenuBar(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("scrollingStateForPoint:"), function $_CPMenuWindow__scrollingStateForPoint_(self, _cmd, aGlobalLocation) +{ with(self) +{ + var frame = objj_msgSend(self, "frame"); + + if (!objj_msgSend(self, "canScroll")) + return _CPMenuManagerScrollingStateNone; + + + if (aGlobalLocation.y < CGRectGetMinY(frame) + TOP_MARGIN + SCROLL_INDICATOR_HEIGHT) + return _CPMenuManagerScrollingStateUp; + + + if (aGlobalLocation.y > CGRectGetMaxY(frame) - BOTTOM_MARGIN - SCROLL_INDICATOR_HEIGHT) + return _CPMenuManagerScrollingStateDown; + + return _CPMenuManagerScrollingStateNone; +} +},["_CPManagerScrollingState","CGPoint"]), new objj_method(sel_getUid("deltaYForItemAtIndex:"), function $_CPMenuWindow__deltaYForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return TOP_MARGIN + CGRectGetMinY(objj_msgSend(_menuView, "rectForItemAtIndex:", anIndex)); +} +},["float","int"]), new objj_method(sel_getUid("rectForItemAtIndex:"), function $_CPMenuWindow__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_menuView, "convertRect:toView:", objj_msgSend(_menuView, "rectForItemAtIndex:", anIndex), nil); +} +},["CGPoint","int"]), new objj_method(sel_getUid("itemIndexAtPoint:"), function $_CPMenuWindow__itemIndexAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + + if (!CGRectContainsPoint(objj_msgSend(_menuClipView, "bounds"), objj_msgSend(_menuClipView, "convertPoint:fromView:", aPoint, nil))) + return NO; + + return objj_msgSend(_menuView, "itemIndexAtPoint:", objj_msgSend(_menuView, "convertPoint:fromView:", aPoint, nil)); +} +},["int","CGPoint"])]); +} + + + + + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuItemViews"), new objj_ivar("_visibleMenuItemInfos"), new objj_ivar("_font")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("font"), function $_CPMenuView__font(self, _cmd) +{ with(self) +{ +return _font; +} +},["id"]), +new objj_method(sel_getUid("setFont:"), function $_CPMenuView__setFont_(self, _cmd, newValue) +{ with(self) +{ +_font = newValue; +} +},["void","id"]), new objj_method(sel_getUid("numberOfUnhiddenItems"), function $_CPMenuView__numberOfUnhiddenItems(self, _cmd) +{ with(self) +{ + return _visibleMenuItemInfos.length; +} +},["unsigned"]), new objj_method(sel_getUid("rectForUnhiddenItemAtIndex:"), function $_CPMenuView__rectForUnhiddenItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(self, "rectForItemAtIndex:", _visibleMenuItemInfos[anIndex].index); +} +},["CGRect","int"]), new objj_method(sel_getUid("rectForItemAtIndex:"), function $_CPMenuView__rectForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_menuItemViews[anIndex === CPNotFound ? 0 : anIndex], "frame"); +} +},["CGRect","int"]), new objj_method(sel_getUid("itemIndexAtPoint:"), function $_CPMenuView__itemIndexAtPoint_(self, _cmd, aPoint) +{ with(self) +{ + var x = aPoint.x, + bounds = objj_msgSend(self, "bounds"); + + if (x < CGRectGetMinX(bounds) || x > CGRectGetMaxX(bounds)) + return CPNotFound; + + var y = aPoint.y, + low = 0, + high = _visibleMenuItemInfos.length - 1; + + while (low <= high) + { + var middle = FLOOR(low + (high - low) / 2), + info = _visibleMenuItemInfos[middle] + frame = objj_msgSend(info.view, "frame"); + + if (y < CGRectGetMinY(frame)) + high = middle - 1; + + else if (y > CGRectGetMaxY(frame)) + low = middle + 1; + + else + return info.index; + } + + return CPNotFound; +} +},["int","CGPoint"]), new objj_method(sel_getUid("tile"), function $_CPMenuView__tile(self, _cmd) +{ with(self) +{ + objj_msgSend(_menuItemViews, "makeObjectsPerformSelector:", sel_getUid("removeFromSuperview")); + + _menuItemViews = []; + _visibleMenuItemInfos = []; + + var menu = objj_msgSend(self, "menu"); + + if (!menu) + return; + + var items = objj_msgSend(menu, "itemArray"), + index = 0, + count = objj_msgSend(items, "count"), + maxWidth = 0, + y = 0, + showsStateColumn = objj_msgSend(menu, "showsStateColumn"); + + for (; index < count; ++index) + { + var item = items[index], + view = objj_msgSend(item, "_menuItemView"); + + _menuItemViews.push(view); + + if (objj_msgSend(item, "isHidden")) + continue; + + _visibleMenuItemInfos.push({ view:view, index:index }); + + objj_msgSend(view, "setFont:", _font); + objj_msgSend(view, "setShowsStateColumn:", showsStateColumn); + objj_msgSend(view, "synchronizeWithMenuItem"); + + objj_msgSend(view, "setFrameOrigin:", CGPointMake(0.0, y)); + + objj_msgSend(self, "addSubview:", view); + + var size = objj_msgSend(view, "minSize"), + width = size.width; + + if (maxWidth < width) + maxWidth = width; + + y += size.height; + } + + for (index = 0; index < count; ++index) + { + var view = _menuItemViews[index]; + + objj_msgSend(view, "setFrameSize:", CGSizeMake(maxWidth, CGRectGetHeight(objj_msgSend(view, "frame")))); + } + + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(self, "setFrameSize:", CGSizeMake(maxWidth, y)); + objj_msgSend(self, "setAutoresizesSubviews:", YES); +} +},["void"]), new objj_method(sel_getUid("setMenu:"), function $_CPMenuView__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuView").super_class }, "setMenu:", aMenu); + objj_msgSend(self, "tile"); +} +},["void","CPMenu"])]); +} + +p;8;CPMenu.jt;34164;@STATIC;1.0;I;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jI;33;Foundation/CPNotificationCenter.jI;21;Foundation/CPString.ji;16;_CPMenuManager.ji;15;CPApplication.ji;12;CPClipView.ji;12;CPMenuItem.ji;9;CPPanel.ji;18;_CPMenuBarWindow.ji;15;_CPMenuWindow.jt;33894;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPNotificationCenter.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("_CPMenuManager.j", YES); +objj_executeFile("CPApplication.j", YES); +objj_executeFile("CPClipView.j", YES); +objj_executeFile("CPMenuItem.j", YES); +objj_executeFile("CPPanel.j", YES); +CPMenuDidAddItemNotification = "CPMenuDidAddItemNotification"; +CPMenuDidChangeItemNotification = "CPMenuDidChangeItemNotification"; +CPMenuDidRemoveItemNotification = "CPMenuDidRemoveItemNotification"; +CPMenuDidEndTrackingNotification = "CPMenuDidEndTrackingNotification"; +var MENUBAR_HEIGHT = 28.0; +var _CPMenuBarVisible = NO, + _CPMenuBarTitle = "", + _CPMenuBarIconImage = nil, + _CPMenuBarIconImageAlphaValue = 1.0, + _CPMenuBarAttributes = nil, + _CPMenuBarSharedWindow = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPMenu"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_supermenu"), new objj_ivar("_title"), new objj_ivar("_name"), new objj_ivar("_font"), new objj_ivar("_minimumWidth"), new objj_ivar("_items"), new objj_ivar("_autoenablesItems"), new objj_ivar("_showsStateColumn"), new objj_ivar("_delegate"), new objj_ivar("_highlightedIndex"), new objj_ivar("_menuWindow")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("menuBarHeight"), function $CPMenu__menuBarHeight(self, _cmd) +{ with(self) +{ + if (self === objj_msgSend(CPApp, "mainMenu")) + return MENUBAR_HEIGHT; + return 0.0; +} +},["float"]), new objj_method(sel_getUid("initWithTitle:"), function $CPMenu__initWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPMenu").super_class }, "init"); + if (self) + { + _title = aTitle; + _items = []; + _autoenablesItems = YES; + _showsStateColumn = YES; + objj_msgSend(self, "setMinimumWidth:", 0); + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("init"), function $CPMenu__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithTitle:", ""); +} +},["id"]), new objj_method(sel_getUid("insertItem:atIndex:"), function $CPMenu__insertItem_atIndex_(self, _cmd, aMenuItem, anIndex) +{ with(self) +{ + var menu = objj_msgSend(aMenuItem, "menu"); + if (menu) + if (menu !== self) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "Attempted to insert item into menu that was already in another menu."); + else + return; + objj_msgSend(aMenuItem, "setMenu:", self); + objj_msgSend(_items, "insertObject:atIndex:", aMenuItem, anIndex); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPMenuDidAddItemNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anIndex, "CPMenuItemIndex")); +} +},["void","CPMenuItem","unsigned"]), new objj_method(sel_getUid("insertItemWithTitle:action:keyEquivalent:atIndex:"), function $CPMenu__insertItemWithTitle_action_keyEquivalent_atIndex_(self, _cmd, aTitle, anAction, aKeyEquivalent, anIndex) +{ with(self) +{ + var item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "initWithTitle:action:keyEquivalent:", aTitle, anAction, aKeyEquivalent); + objj_msgSend(self, "insertItem:atIndex:", item, anIndex); + return item; +} +},["CPMenuItem","CPString","SEL","CPString","unsigned"]), new objj_method(sel_getUid("addItem:"), function $CPMenu__addItem_(self, _cmd, aMenuItem) +{ with(self) +{ + objj_msgSend(self, "insertItem:atIndex:", aMenuItem, objj_msgSend(_items, "count")); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("addItemWithTitle:action:keyEquivalent:"), function $CPMenu__addItemWithTitle_action_keyEquivalent_(self, _cmd, aTitle, anAction, aKeyEquivalent) +{ with(self) +{ + return objj_msgSend(self, "insertItemWithTitle:action:keyEquivalent:atIndex:", aTitle, anAction, aKeyEquivalent, objj_msgSend(_items, "count")); +} +},["CPMenuItem","CPString","SEL","CPString"]), new objj_method(sel_getUid("removeItem:"), function $CPMenu__removeItem_(self, _cmd, aMenuItem) +{ with(self) +{ + objj_msgSend(self, "removeItemAtIndex:", objj_msgSend(_items, "indexOfObjectIdenticalTo:", aMenuItem)); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("removeItemAtIndex:"), function $CPMenu__removeItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (anIndex < 0 || anIndex >= _items.length) + return; + objj_msgSend(_items[anIndex], "setMenu:", nil); + objj_msgSend(_items, "removeObjectAtIndex:", anIndex); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPMenuDidRemoveItemNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", anIndex, "CPMenuItemIndex")); +} +},["void","unsigned"]), new objj_method(sel_getUid("itemChanged:"), function $CPMenu__itemChanged_(self, _cmd, aMenuItem) +{ with(self) +{ + if (objj_msgSend(aMenuItem, "menu") != self) + return; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:userInfo:", CPMenuDidChangeItemNotification, self, objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", objj_msgSend(_items, "indexOfObjectIdenticalTo:", aMenuItem), "CPMenuItemIndex")); +} +},["void","CPMenuItem"]), new objj_method(sel_getUid("itemWithTag:"), function $CPMenu__itemWithTag_(self, _cmd, aTag) +{ with(self) +{ + var index = objj_msgSend(self, "indexOfItemWithTag:", aTag); + if (index == CPNotFound) + return nil; + return _items[index]; +} +},["CPMenuItem","int"]), new objj_method(sel_getUid("itemWithTitle:"), function $CPMenu__itemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + var index = objj_msgSend(self, "indexOfItemWithTitle:", aTitle); + if (index == CPNotFound) + return nil; + return _items[index]; +} +},["CPMenuItem","CPString"]), new objj_method(sel_getUid("itemAtIndex:"), function $CPMenu__itemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(_items, "objectAtIndex:", anIndex); +} +},["CPMenuItem","int"]), new objj_method(sel_getUid("numberOfItems"), function $CPMenu__numberOfItems(self, _cmd) +{ with(self) +{ + return objj_msgSend(_items, "count"); +} +},["unsigned"]), new objj_method(sel_getUid("itemArray"), function $CPMenu__itemArray(self, _cmd) +{ with(self) +{ + return _items; +} +},["CPArray"]), new objj_method(sel_getUid("indexOfItem:"), function $CPMenu__indexOfItem_(self, _cmd, aMenuItem) +{ with(self) +{ + if (objj_msgSend(aMenuItem, "menu") !== self) + return CPNotFound; + return objj_msgSend(_items, "indexOfObjectIdenticalTo:", aMenuItem); +} +},["int","CPMenuItem"]), new objj_method(sel_getUid("indexOfItemWithTitle:"), function $CPMenu__indexOfItemWithTitle_(self, _cmd, aTitle) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + if (objj_msgSend(_items[index], "title") === aTitle) + return index; + return CPNotFound; +} +},["int","CPString"]), new objj_method(sel_getUid("indexOfItemWithTag:"), function $CPMenu__indexOfItemWithTag_(self, _cmd, aTag) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + if (objj_msgSend(_items[index], "tag") == aTag) + return index; + return CPNotFound; +} +},["int","int"]), new objj_method(sel_getUid("indexOfItemWithTarget:andAction:"), function $CPMenu__indexOfItemWithTarget_andAction_(self, _cmd, aTarget, anAction) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + { + var item = _items[index]; + if (objj_msgSend(item, "target") == aTarget && (!anAction || objj_msgSend(item, "action") == anAction)) + return index; + } + return CPNotFound; +} +},["int","id","SEL"]), new objj_method(sel_getUid("indexOfItemWithRepresentedObject:"), function $CPMenu__indexOfItemWithRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + if (objj_msgSend(objj_msgSend(_items[index], "representedObject"), "isEqual:", anObject)) + return index; + return CPNotFound; +} +},["int","id"]), new objj_method(sel_getUid("indexOfItemWithSubmenu:"), function $CPMenu__indexOfItemWithSubmenu_(self, _cmd, aMenu) +{ with(self) +{ + var index = 0, + count = _items.length; + for (; index < count; ++index) + if (objj_msgSend(_items[index], "submenu") == aMenu) + return index; + return CPNotFound; +} +},["int","CPMenu"]), new objj_method(sel_getUid("setSubmenu:forItem:"), function $CPMenu__setSubmenu_forItem_(self, _cmd, aMenu, aMenuItem) +{ with(self) +{ + objj_msgSend(aMenuItem, "setTarget:", aMenuItem); + objj_msgSend(aMenuItem, "setAction:", sel_getUid("submenuAction:")); + objj_msgSend(aMenuItem, "setSubmenu:", aMenu); +} +},["void","CPMenu","CPMenuItem"]), new objj_method(sel_getUid("submenuAction:"), function $CPMenu__submenuAction_(self, _cmd, aSender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("supermenu"), function $CPMenu__supermenu(self, _cmd) +{ with(self) +{ + return _supermenu; +} +},["CPMenu"]), new objj_method(sel_getUid("setSupermenu:"), function $CPMenu__setSupermenu_(self, _cmd, aMenu) +{ with(self) +{ + _supermenu = aMenu; +} +},["void","CPMenu"]), new objj_method(sel_getUid("isTornOff"), function $CPMenu__isTornOff(self, _cmd) +{ with(self) +{ + return !_supermenu || self == objj_msgSend(CPApp, "mainMenu"); +} +},["BOOL"]), new objj_method(sel_getUid("setAutoenablesItems:"), function $CPMenu__setAutoenablesItems_(self, _cmd, aFlag) +{ with(self) +{ + _autoenablesItems = aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("autoenablesItems"), function $CPMenu__autoenablesItems(self, _cmd) +{ with(self) +{ + return _autoenablesItems; +} +},["BOOL"]), new objj_method(sel_getUid("update"), function $CPMenu__update(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("setTitle:"), function $CPMenu__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + _title = aTitle; +} +},["void","CPString"]), new objj_method(sel_getUid("title"), function $CPMenu__title(self, _cmd) +{ with(self) +{ + return _title; +} +},["CPString"]), new objj_method(sel_getUid("setMinimumWidth:"), function $CPMenu__setMinimumWidth_(self, _cmd, aMinimumWidth) +{ with(self) +{ + _minimumWidth = aMinimumWidth; +} +},["void","float"]), new objj_method(sel_getUid("minimumWidth"), function $CPMenu__minimumWidth(self, _cmd) +{ with(self) +{ + return _minimumWidth; +} +},["float"]), new objj_method(sel_getUid("_performActionOfHighlightedItemChain"), function $CPMenu___performActionOfHighlightedItemChain(self, _cmd) +{ with(self) +{ + var highlightedItem = objj_msgSend(self, "highlightedItem"); + while (objj_msgSend(highlightedItem, "submenu") && objj_msgSend(highlightedItem, "action") === sel_getUid("submenuAction:")) + highlightedItem = objj_msgSend(objj_msgSend(highlightedItem, "submenu"), "highlightedItem"); + if (highlightedItem && objj_msgSend(highlightedItem, "isEnabled")) + objj_msgSend(CPApp, "sendAction:to:from:", objj_msgSend(highlightedItem, "action"), objj_msgSend(highlightedItem, "target"), highlightedItem); +} +},["void"]), new objj_method(sel_getUid("popUpMenuPositioningItem:atLocation:inView:callback:"), function $CPMenu__popUpMenuPositioningItem_atLocation_inView_callback_(self, _cmd, anItem, aLocation, aView, aCallback) +{ with(self) +{ + objj_msgSend(self, "_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:", anItem, aLocation, aLocation.y, aLocation.y, aView, aCallback); +} +},["void","CPMenuItem","CGPoint","CPView","Function"]), new objj_method(sel_getUid("_popUpMenuPositioningItem:atLocation:topY:bottomY:inView:callback:"), function $CPMenu___popUpMenuPositioningItem_atLocation_topY_bottomY_inView_callback_(self, _cmd, anItem, aLocation, aTopY, aBottomY, aView, aCallback) +{ with(self) +{ + var itemIndex = 0; + if (anItem) + { + itemIndex = objj_msgSend(self, "indexOfItem:", anItem); + if (itemIndex === CPNotFound) + throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, menu item " + + anItem + " is not present in menu " + self; + } + var theWindow = objj_msgSend(aView, "window"); + if (aView && !theWindow) + throw "In call to popUpMenuPositioningItem:atLocation:inView:callback:, view is not in any window."; + var delegate = objj_msgSend(self, "delegate"); + if (objj_msgSend(delegate, "respondsToSelector:", sel_getUid("menuWillOpen:"))) + objj_msgSend(delegate, "menuWillOpen:", aMenu); + if (aView) + aLocation = objj_msgSend(theWindow, "convertBaseToGlobal:", objj_msgSend(aView, "convertPoint:toView:", aLocation, nil)); + var menuWindow = objj_msgSend(_CPMenuWindow, "menuWindowWithMenu:font:", self, objj_msgSend(self, "font")); + objj_msgSend(menuWindow, "setBackgroundStyle:", _CPMenuWindowPopUpBackgroundStyle); + if (anItem) + aLocation.y -= objj_msgSend(menuWindow, "deltaYForItemAtIndex:", itemIndex); + var constraintRect = objj_msgSend(CPMenu, "_constraintRectForView:", aView); + objj_msgSend(menuWindow, "setFrameOrigin:", aLocation); + objj_msgSend(menuWindow, "setConstraintRect:", constraintRect); + if (!objj_msgSend(menuWindow, "hasMinimumNumberOfVisibleItems")) + { + var unconstrainedFrame = objj_msgSend(menuWindow, "unconstrainedFrame"), + unconstrainedY = CGRectGetMinY(unconstrainedFrame); + if (unconstrainedY >= CGRectGetMaxY(constraintRect) || objj_msgSend(menuWindow, "canScrollDown")) + { + if (aView) + aTopY = objj_msgSend(theWindow, "convertBaseToGlobal:", objj_msgSend(aView, "convertPoint:toView:", CGPointMake(0.0, aTopY), nil)).y; + unconstrainedFrame.origin.y = MIN(CGRectGetMaxY(constraintRect), aTopY) - CGRectGetHeight(unconstrainedFrame); + } + else if (unconstrainedY < CGRectGetMinY(constraintRect) || objj_msgSend(menuWindow, "canScrollUp")) + { + if (aView) + aBottomY = objj_msgSend(theWindow, "convertBaseToGlobal:", objj_msgSend(aView, "convertPoint:toView:", CGPointMake(0.0, aBottomY), nil)).y; + unconstrainedFrame.origin.y = MAX(CGRectGetMinY(constraintRect), aBottomY); + } + objj_msgSend(menuWindow, "setFrameOrigin:", CGRectIntersection(unconstrainedFrame, constraintRect).origin); + } + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(menuWindow, "setPlatformWindow:", objj_msgSend(objj_msgSend(aView, "window"), "platformWindow")); + objj_msgSend(menuWindow, "orderFront:", self); + objj_msgSend(objj_msgSend(_CPMenuManager, "sharedMenuManager"), "beginTracking:menuContainer:constraintRect:callback:", objj_msgSend(CPApp, "currentEvent"), menuWindow, constraintRect, objj_msgSend(CPMenu, "trackingCallbackWithCallback:", aCallback)); +} +},["void","CPMenuItem","CGPoint","float","float","CPView","Function"]), new objj_method(sel_getUid("setShowsStateColumn:"), function $CPMenu__setShowsStateColumn_(self, _cmd, shouldShowStateColumn) +{ with(self) +{ + _showsStateColumn = shouldShowStateColumn; +} +},["void","BOOL"]), new objj_method(sel_getUid("showsStateColumn"), function $CPMenu__showsStateColumn(self, _cmd) +{ with(self) +{ + return _showsStateColumn; +} +},["BOOL"]), new objj_method(sel_getUid("highlightedItem"), function $CPMenu__highlightedItem(self, _cmd) +{ with(self) +{ + return _highlightedIndex >= 0 ? _items[_highlightedIndex] : nil; +} +},["CPMenuItem"]), new objj_method(sel_getUid("setDelegate:"), function $CPMenu__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPMenu__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("cancelTracking"), function $CPMenu__cancelTracking(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "performSelector:target:argument:order:modes:", sel_getUid("_fireCancelTrackingEvent"), self, nil, 0, [CPDefaultRunLoopMode]); +} +},["void"]), new objj_method(sel_getUid("_fireCancelTrackingEvent"), function $CPMenu___fireCancelTrackingEvent(self, _cmd) +{ with(self) +{ + objj_msgSend(CPApp, "sendEvent:", objj_msgSend(CPEvent, "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:", CPAppKitDefined, { x:0.0, y:0.0 }, 0, 0, 0, 0, 0, 0, 0)); + objj_msgSend(_CPDisplayServer, "run"); +} +},["void"]), new objj_method(sel_getUid("_setMenuWindow:"), function $CPMenu___setMenuWindow_(self, _cmd, aMenuWindow) +{ with(self) +{ + _menuWindow = aMenuWindow; +} +},["void","_CPMenuWindow"]), new objj_method(sel_getUid("setFont:"), function $CPMenu__setFont_(self, _cmd, aFont) +{ with(self) +{ + _font = aFont; +} +},["void","CPFont"]), new objj_method(sel_getUid("font"), function $CPMenu__font(self, _cmd) +{ with(self) +{ + return _font; +} +},["CPFont"]), new objj_method(sel_getUid("performKeyEquivalent:"), function $CPMenu__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + if (_autoenablesItems) + objj_msgSend(self, "update"); + var index = 0, + count = _items.length, + characters = objj_msgSend(anEvent, "charactersIgnoringModifiers"), + modifierFlags = objj_msgSend(anEvent, "modifierFlags"); + for(; index < count; ++index) + { + var item = _items[index], + modifierMask = objj_msgSend(item, "keyEquivalentModifierMask"); + if (objj_msgSend(anEvent, "_triggersKeyEquivalent:withModifierMask:", objj_msgSend(item, "keyEquivalent"), objj_msgSend(item, "keyEquivalentModifierMask"))) + { + if (objj_msgSend(item, "isEnabled")) + objj_msgSend(self, "performActionForItemAtIndex:", index); + else + { + } + return YES; + } + if (objj_msgSend(objj_msgSend(item, "submenu"), "performKeyEquivalent:", anEvent)) + return YES; + } + return NO; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("performActionForItemAtIndex:"), function $CPMenu__performActionForItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + var item = _items[anIndex]; + objj_msgSend(CPApp, "sendAction:to:from:", objj_msgSend(item, "action"), objj_msgSend(item, "target"), item); +} +},["void","unsigned"]), new objj_method(sel_getUid("_itemIsHighlighted:"), function $CPMenu___itemIsHighlighted_(self, _cmd, aMenuItem) +{ with(self) +{ + return _items[_highlightedIndex] == aMenuItem; +} +},["BOOL","CPMenuItem"]), new objj_method(sel_getUid("_highlightItemAtIndex:"), function $CPMenu___highlightItemAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (_highlightedIndex === anIndex) + return; + if (_highlightedIndex !== CPNotFound) + objj_msgSend(objj_msgSend(_items[_highlightedIndex], "_menuItemView"), "highlight:", NO); + _highlightedIndex = anIndex; + if (_highlightedIndex !== CPNotFound) + objj_msgSend(objj_msgSend(_items[_highlightedIndex], "_menuItemView"), "highlight:", YES); +} +},["void","int"]), new objj_method(sel_getUid("_setMenuName:"), function $CPMenu___setMenuName_(self, _cmd, aName) +{ with(self) +{ + if (_name === aName) + return; + _name = aName; + if (_name === "CPMainMenu") + objj_msgSend(CPApp, "setMainMenu:", self); +} +},["void","CPString"]), new objj_method(sel_getUid("_menuName"), function $CPMenu___menuName(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("awakeFromCib"), function $CPMenu__awakeFromCib(self, _cmd) +{ with(self) +{ + if (_name === "_CPMainMenu") + { + objj_msgSend(self, "_setMenuName:", "CPMainMenu"); + objj_msgSend(CPMenu, "setMenuBarVisible:", YES); + } +} +},["void"]), new objj_method(sel_getUid("_menuWithName:"), function $CPMenu___menuWithName_(self, _cmd, aName) +{ with(self) +{ + if (aName === _name) + return self; + for (var i = 0, count = objj_msgSend(_items, "count"); i < count; i++) + { + var menu = objj_msgSend(objj_msgSend(_items[i], "submenu"), "_menuWithName:", aName); + if (menu) + return menu; + } + return nil; +} +},["void","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPMenu__initialize(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "class"), "setMenuBarAttributes:", objj_msgSend(CPDictionary, "dictionary")); +} +},["void"]), new objj_method(sel_getUid("menuBarVisible"), function $CPMenu__menuBarVisible(self, _cmd) +{ with(self) +{ + return _CPMenuBarVisible; +} +},["BOOL"]), new objj_method(sel_getUid("setMenuBarVisible:"), function $CPMenu__setMenuBarVisible_(self, _cmd, menuBarShouldBeVisible) +{ with(self) +{ + if (_CPMenuBarVisible === menuBarShouldBeVisible) + return; + _CPMenuBarVisible = menuBarShouldBeVisible; + if (objj_msgSend(CPPlatform, "supportsNativeMainMenu")) + return; + if (menuBarShouldBeVisible) + { + if (!_CPMenuBarSharedWindow) + _CPMenuBarSharedWindow = objj_msgSend(objj_msgSend(_CPMenuBarWindow, "alloc"), "init"); + objj_msgSend(_CPMenuBarSharedWindow, "setMenu:", objj_msgSend(CPApp, "mainMenu")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitle:", _CPMenuBarTitle); + objj_msgSend(_CPMenuBarSharedWindow, "setIconImage:", _CPMenuBarIconImage); + objj_msgSend(_CPMenuBarSharedWindow, "setIconImageAlphaValue:", _CPMenuBarIconImageAlphaValue); + objj_msgSend(_CPMenuBarSharedWindow, "setColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarBackgroundColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTextColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTextColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitleColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTitleColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTextShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTextShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitleShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTitleShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightTextColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightTextColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightTextShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightTextShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "orderFront:", self); + } + else + objj_msgSend(_CPMenuBarSharedWindow, "orderOut:", self); +} +},["void","BOOL"]), new objj_method(sel_getUid("setMenuBarTitle:"), function $CPMenu__setMenuBarTitle_(self, _cmd, aTitle) +{ with(self) +{ + _CPMenuBarTitle = aTitle; + objj_msgSend(_CPMenuBarSharedWindow, "setTitle:", _CPMenuBarTitle); +} +},["void","CPString"]), new objj_method(sel_getUid("menuBarTitle"), function $CPMenu__menuBarTitle(self, _cmd) +{ with(self) +{ + return _CPMenuBarTitle; +} +},["CPString"]), new objj_method(sel_getUid("setMenuBarIconImage:"), function $CPMenu__setMenuBarIconImage_(self, _cmd, anImage) +{ with(self) +{ + _CPMenuBarImage = anImage; + objj_msgSend(_CPMenuBarSharedWindow, "setIconImage:", anImage); +} +},["void","CPImage"]), new objj_method(sel_getUid("menuBarIconImage"), function $CPMenu__menuBarIconImage(self, _cmd) +{ with(self) +{ + return _CPMenuBarImage; +} +},["CPImage"]), new objj_method(sel_getUid("setMenuBarAttributes:"), function $CPMenu__setMenuBarAttributes_(self, _cmd, attributes) +{ with(self) +{ + if (_CPMenuBarAttributes == attributes) + return; + _CPMenuBarAttributes = objj_msgSend(attributes, "copy"); + var textColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarTextColor"), + titleColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarTitleColor"), + textShadowColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarTextShadowColor"), + titleShadowColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarTitleShadowColor"), + highlightColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarHighlightColor"), + highlightTextColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarHighlightTextColor"), + highlightTextShadowColor = objj_msgSend(attributes, "objectForKey:", "CPMenuBarHighlightTextShadowColor"); + if (!textColor && titleColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", titleColor, "CPMenuBarTextColor"); + else if (textColor && !titleColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", textColor, "CPMenuBarTitleColor"); + else if (!textColor && !titleColor) + { + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", 0.051, 0.2, 0.275, 1.0), "CPMenuBarTextColor"); + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "colorWithRed:green:blue:alpha:", 0.051, 0.2, 0.275, 1.0), "CPMenuBarTitleColor"); + } + if (!textShadowColor && titleShadowColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", titleShadowColor, "CPMenuBarTextShadowColor"); + else if (textShadowColor && !titleShadowColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", textShadowColor, "CPMenuBarTitleShadowColor"); + else if (!textShadowColor && !titleShadowColor) + { + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "whiteColor"), "CPMenuBarTextShadowColor"); + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "whiteColor"), "CPMenuBarTitleShadowColor"); + } + if (!highlightColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 94.0/255.0, 130.0/255.0, 186.0/255.0, 1.0), "CPMenuBarHighlightColor"); + if (!highlightTextColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "whiteColor"), "CPMenuBarHighlightTextColor"); + if (!highlightTextShadowColor) + objj_msgSend(_CPMenuBarAttributes, "setObject:forKey:", objj_msgSend(CPColor, "blackColor"), "CPMenuBarHighlightTextShadowColor"); + if (_CPMenuBarSharedWindow) + { + objj_msgSend(_CPMenuBarSharedWindow, "setColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarBackgroundColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTextColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTextColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitleColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTitleColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTextShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTextShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setTitleShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarTitleShadowColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightTextColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightTextColor")); + objj_msgSend(_CPMenuBarSharedWindow, "setHighlightTextShadowColor:", objj_msgSend(_CPMenuBarAttributes, "objectForKey:", "CPMenuBarHighlightTextShadowColor")); + } +} +},["void","CPDictionary"]), new objj_method(sel_getUid("menuBarAttributes"), function $CPMenu__menuBarAttributes(self, _cmd) +{ with(self) +{ + return _CPMenuBarAttributes; +} +},["CPDictionary"]), new objj_method(sel_getUid("_setMenuBarIconImageAlphaValue:"), function $CPMenu___setMenuBarIconImageAlphaValue_(self, _cmd, anAlphaValue) +{ with(self) +{ + _CPMenuBarIconImageAlphaValue = anAlphaValue; + objj_msgSend(_CPMenuBarSharedWindow, "setIconImageAlphaValue:", anAlphaValue); +} +},["void","float"]), new objj_method(sel_getUid("menuBarHeight"), function $CPMenu__menuBarHeight(self, _cmd) +{ with(self) +{ + return MENUBAR_HEIGHT; +} +},["float"]), new objj_method(sel_getUid("_constraintRectForView:"), function $CPMenu___constraintRectForView_(self, _cmd, aView) +{ with(self) +{ + if (objj_msgSend(CPPlatform, "isBrowser")) + return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(aView, "window"), "platformWindow"), "contentBounds"), 5.0, 5.0); + return CGRectInset(objj_msgSend(objj_msgSend(objj_msgSend(aView, "window"), "screen"), "visibleFrame"), 5.0, 5.0); +} +},["CGRect","CPView"]), new objj_method(sel_getUid("trackingCallbackWithCallback:"), function $CPMenu__trackingCallbackWithCallback_(self, _cmd, aCallback) +{ with(self) +{ + return function(aMenuWindow, aMenu) + { + objj_msgSend(aMenuWindow, "setMenu:", nil); + objj_msgSend(aMenuWindow, "orderOut:", self); + objj_msgSend(_CPMenuWindow, "poolMenuWindow:", aMenuWindow); + if (aCallback) + aCallback(aMenu); + objj_msgSend(aMenu, "_performActionOfHighlightedItemChain"); + } +} +},["Function","Function"]), new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:"), function $CPMenu__popUpContextMenu_withEvent_forView_(self, _cmd, aMenu, anEvent, aView) +{ with(self) +{ + objj_msgSend(self, "popUpContextMenu:withEvent:forView:withFont:", aMenu, anEvent, aView, nil); +} +},["void","CPMenu","CPEvent","CPView"]), new objj_method(sel_getUid("popUpContextMenu:withEvent:forView:withFont:"), function $CPMenu__popUpContextMenu_withEvent_forView_withFont_(self, _cmd, aMenu, anEvent, aView, aFont) +{ with(self) +{ + var delegate = objj_msgSend(aMenu, "delegate"); + if (objj_msgSend(delegate, "respondsToSelector:", sel_getUid("menuWillOpen:"))) + objj_msgSend(delegate, "menuWillOpen:", aMenu); + if (!aFont) + aFont = objj_msgSend(CPFont, "systemFontOfSize:", 12.0); + var theWindow = objj_msgSend(aView, "window"), + menuWindow = objj_msgSend(_CPMenuWindow, "menuWindowWithMenu:font:", aMenu, aFont); + objj_msgSend(menuWindow, "setBackgroundStyle:", _CPMenuWindowPopUpBackgroundStyle); + var constraintRect = objj_msgSend(CPMenu, "_constraintRectForView:", aView), + aLocation = objj_msgSend(objj_msgSend(anEvent, "window"), "convertBaseToGlobal:", objj_msgSend(anEvent, "locationInWindow")); + objj_msgSend(menuWindow, "setConstraintRect:", constraintRect); + objj_msgSend(menuWindow, "setFrameOrigin:", aLocation); + if (!objj_msgSend(menuWindow, "hasMinimumNumberOfVisibleItems")) + { + var unconstrainedFrame = objj_msgSend(menuWindow, "unconstrainedFrame"), + unconstrainedY = CGRectGetMinY(unconstrainedFrame); + if (unconstrainedY >= CGRectGetMaxY(constraintRect) || objj_msgSend(menuWindow, "canScrollDown")) + unconstrainedFrame.origin.y = MIN(CGRectGetMaxY(constraintRect), aLocation.y) - CGRectGetHeight(unconstrainedFrame); + else if (unconstrainedY < CGRectGetMinY(constraintRect) || objj_msgSend(menuWindow, "canScrollUp")) + unconstrainedFrame.origin.y = MAX(CGRectGetMinY(constraintRect), aLocation.y); + objj_msgSend(menuWindow, "setFrameOrigin:", CGRectIntersection(unconstrainedFrame, constraintRect).origin); + } + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(menuWindow, "setPlatformWindow:", objj_msgSend(objj_msgSend(aView, "window"), "platformWindow")); + objj_msgSend(menuWindow, "orderFront:", self); + objj_msgSend(objj_msgSend(_CPMenuManager, "sharedMenuManager"), "beginTracking:menuContainer:constraintRect:callback:", anEvent, menuWindow, objj_msgSend(CPMenu, "_constraintRectForView:", aView), objj_msgSend(CPMenu, "trackingCallbackWithCallback:", nil)); +} +},["void","CPMenu","CPEvent","CPView","CPFont"])]); +} +var CPMenuTitleKey = "CPMenuTitleKey", + CPMenuNameKey = "CPMenuNameKey", + CPMenuItemsKey = "CPMenuItemsKey", + CPMenuShowsStateColumnKey = "CPMenuShowsStateColumnKey"; +{ +var the_class = objj_getClass("CPMenu") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPMenu\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPMenu__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPMenu").super_class }, "init"); + if (self) + { + _title = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuTitleKey); + _items = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemsKey); + objj_msgSend(self, "_setMenuName:", objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuNameKey)); + _showsStateColumn = !objj_msgSend(aCoder, "containsValueForKey:", CPMenuShowsStateColumnKey) || objj_msgSend(aCoder, "decodeBoolForKey:", CPMenuShowsStateColumnKey); + objj_msgSend(self, "setMinimumWidth:", 0); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPMenu__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _title, CPMenuTitleKey); + if (_name) + objj_msgSend(aCoder, "encodeObject:forKey:", _name, CPMenuNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _items, CPMenuItemsKey); + if (!_showsStateColumn) + objj_msgSend(aCoder, "encodeBool:forKey:", _showsStateColumn, CPMenuShowsStateColumnKey); +} +},["void","CPCoder"])]); +} +objj_executeFile("_CPMenuBarWindow.j", YES); +objj_executeFile("_CPMenuWindow.j", YES); + +p;24;_CPMenuItemMenuBarView.jt;10736;@STATIC;1.0;t;10716; + +var HORIZONTAL_MARGIN = 8.0, + SUBMENU_INDICATOR_MARGIN = 3.0, + VERTICAL_MARGIN = 4.0; + +var SelectionColor = nil, + SUBMENU_INDICATOR_COLOR = nil, + _CPMenuItemSelectionColor = nil, + _CPMenuItemTextShadowColor = nil, + + _CPMenuItemDefaultStateImages = [], + _CPMenuItemDefaultStateHighlightedImages = []; + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemMenuBarView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuItem"), new objj_ivar("_font"), new objj_ivar("_textColor"), new objj_ivar("_textShadowColor"), new objj_ivar("_isDirty"), new objj_ivar("_imageAndTextView"), new objj_ivar("_submenuIndicatorView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("menuItem"), function $_CPMenuItemMenuBarView__menuItem(self, _cmd) +{ with(self) +{ +return _menuItem; +} +},["id"]), +new objj_method(sel_getUid("setMenuItem:"), function $_CPMenuItemMenuBarView__setMenuItem_(self, _cmd, newValue) +{ with(self) +{ +_menuItem = newValue; +} +},["void","id"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPMenuItemMenuBarView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuItemMenuBarView").super_class }, "initWithFrame:", aFrame); + + if (self) + { + _imageAndTextView = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", CGRectMake(HORIZONTAL_MARGIN, 0.0, 0.0, 0.0)); + + objj_msgSend(_imageAndTextView, "setImagePosition:", CPImageLeft); + objj_msgSend(_imageAndTextView, "setImageOffset:", 3.0); + objj_msgSend(_imageAndTextView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_imageAndTextView, "setAutoresizingMask:", CPViewMinYMargin | CPViewMaxYMargin); + + objj_msgSend(self, "addSubview:", _imageAndTextView); + + _submenuIndicatorView = objj_msgSend(objj_msgSend(_CPMenuItemMenuBarSubmenuIndicatorView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 9.0, 6.0)); + + objj_msgSend(_submenuIndicatorView, "setAutoresizingMask:", CPViewMinYMargin | CPViewMaxYMargin); + + objj_msgSend(self, "addSubview:", _submenuIndicatorView); + + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + } + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("textColor"), function $_CPMenuItemMenuBarView__textColor(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "isEnabled")) + return objj_msgSend(CPColor, "lightGrayColor"); + + return _textColor || objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 70.0 / 255.0, 69.0 / 255.0, 69.0 / 255.0, 1.0); +} +},["CPColor"]), new objj_method(sel_getUid("textShadowColor"), function $_CPMenuItemMenuBarView__textShadowColor(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "isEnabled")) + return objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.8, 0.8); + + return _textShadowColor || objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.8); +} +},["CPColor"]), new objj_method(sel_getUid("update"), function $_CPMenuItemMenuBarView__update(self, _cmd) +{ with(self) +{ + var x = HORIZONTAL_MARGIN, + height = 0.0; + + objj_msgSend(_imageAndTextView, "setFont:", objj_msgSend(_menuItem, "font") || objj_msgSend(_CPMenuBarWindow, "font")); + objj_msgSend(_imageAndTextView, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setText:", objj_msgSend(_menuItem, "title")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + objj_msgSend(_imageAndTextView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_imageAndTextView, "sizeToFit"); + + var imageAndTextViewFrame = objj_msgSend(_imageAndTextView, "frame"); + + imageAndTextViewFrame.origin.x = x; + x += CGRectGetWidth(imageAndTextViewFrame); + height = MAX(height, CGRectGetHeight(imageAndTextViewFrame)); + + var hasSubmenuIndicator = objj_msgSend(_menuItem, "hasSubmenu") && objj_msgSend(_menuItem, "action"); + + if (hasSubmenuIndicator) + { + objj_msgSend(_submenuIndicatorView, "setHidden:", NO); + objj_msgSend(_submenuIndicatorView, "setColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_submenuIndicatorView, "setShadowColor:", objj_msgSend(self, "textShadowColor")); + + var submenuViewFrame = objj_msgSend(_submenuIndicatorView, "frame"); + + submenuViewFrame.origin.x = x + SUBMENU_INDICATOR_MARGIN; + + x = CGRectGetMaxX(submenuViewFrame); + height = MAX(height, CGRectGetHeight(submenuViewFrame)); + } + else + objj_msgSend(_submenuIndicatorView, "setHidden:", YES); + + height += 2.0 * VERTICAL_MARGIN; + + imageAndTextViewFrame.origin.y = FLOOR((height - CGRectGetHeight(imageAndTextViewFrame)) / 2.0); + objj_msgSend(_imageAndTextView, "setFrame:", imageAndTextViewFrame); + + if (hasSubmenuIndicator) + { + submenuViewFrame.origin.y = FLOOR((height - CGRectGetHeight(submenuViewFrame)) / 2.0) + 1.0; + objj_msgSend(_submenuIndicatorView, "setFrame:", submenuViewFrame); + } + + _minSize = CGSizeMake(x + HORIZONTAL_MARGIN, height); + + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(self, "setFrameSize:", _minSize); + objj_msgSend(self, "setAutoresizesSubviews:", YES); +} +},["void"]), new objj_method(sel_getUid("highlight:"), function $_CPMenuItemMenuBarView__highlight_(self, _cmd, shouldHighlight) +{ with(self) +{ + + if (!objj_msgSend(_menuItem, "isEnabled")) + shouldHighlight = NO; + + if (shouldHighlight) + { + if (!objj_msgSend(_menuItem, "_isMenuBarButton")) + objj_msgSend(self, "setBackgroundColor:", SelectionColor); + + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "alternateImage") || objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_imageAndTextView, "setTextShadowColor:", _CPMenuItemTextShadowColor); + + objj_msgSend(_submenuIndicatorView, "setColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_submenuIndicatorView, "setShadowColor:", objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.1, 0.7)); + } + else + { + objj_msgSend(self, "setBackgroundColor:", nil); + + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + + objj_msgSend(_submenuIndicatorView, "setColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_submenuIndicatorView, "setShadowColor:", objj_msgSend(self, "textShadowColor")); + } +} +},["void","BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPMenuItemMenuBarView__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(_CPMenuItemMenuBarView, "class")) + return; + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + SelectionColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png"), CGSizeMake(1.0, 28.0))); + + SUBMENU_INDICATOR_COLOR = objj_msgSend(CPColor, "grayColor"); + + _CPMenuItemSelectionColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 95.0 / 255.0, 131.0 / 255.0, 185.0 / 255.0, 1.0); + _CPMenuItemTextShadowColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 26.0 / 255.0, 73.0 / 255.0, 109.0 / 255.0, 1.0); + + _CPMenuItemDefaultStateImages[CPOffState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPOffState] = nil; + + _CPMenuItemDefaultStateImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnState.png"), CGSizeMake(14.0, 14.0)); + _CPMenuItemDefaultStateHighlightedImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnStateHighlighted.png"), CGSizeMake(14.0, 14.0)); + + _CPMenuItemDefaultStateImages[CPMixedState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPMixedState] = nil; +} +},["void"]), new objj_method(sel_getUid("view"), function $_CPMenuItemMenuBarView__view(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"])]); +} + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemMenuBarSubmenuIndicatorView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_color"), new objj_ivar("_shadowColor")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setColor:"), function $_CPMenuItemMenuBarSubmenuIndicatorView__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (_color === aColor) + return; + + _color = aColor; + + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("setShadowColor:"), function $_CPMenuItemMenuBarSubmenuIndicatorView__setShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_shadowColor === aColor) + return; + + _shadowColor = aColor; + + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("drawRect:"), function $_CPMenuItemMenuBarSubmenuIndicatorView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + bounds = objj_msgSend(self, "bounds"); + + bounds.size.height -= 1.0; + bounds.size.width -= 2.0; + bounds.origin.x += 1.0; + + CGContextBeginPath(context); + + CGContextMoveToPoint(context, CGRectGetMinX(bounds), CGRectGetMinY(bounds)); + CGContextAddLineToPoint(context, CGRectGetMaxX(bounds), CGRectGetMinY(bounds)); + CGContextAddLineToPoint(context, CGRectGetMidX(bounds), CGRectGetMaxY(bounds)); + + CGContextClosePath(context); + + CGContextSetShadowWithColor(context, CGSizeMake(0.0, 1.0), 1.1, _shadowColor || objj_msgSend(CPColor, "whiteColor")); + CGContextSetFillColor(context, _color || objj_msgSend(CPColor, "blackColor")); + CGContextFillPath(context); +} +},["void","CGRect"])]); +} + +p;26;_CPMenuItemSeparatorView.jt;1544;@STATIC;1.0;I;15;AppKit/CPView.jt;1505; + + +objj_executeFile("AppKit/CPView.j", NO); + + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemSeparatorView"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPMenuItemSeparatorView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuItemSeparatorView").super_class }, "initWithFrame:", aFrame); + + if (self) + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable); + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("drawRect:"), function $_CPMenuItemSeparatorView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + bounds = objj_msgSend(self, "bounds"); + + CGContextBeginPath(context); + + CGContextMoveToPoint(context, CGRectGetMinX(bounds), FLOOR(CGRectGetMidY(bounds)) - 0.5); + CGContextAddLineToPoint(context, CGRectGetMaxX(bounds), FLOOR(CGRectGetMidY(bounds)) - 0.5); + + CGContextSetStrokeColor(context, objj_msgSend(CPColor, "lightGrayColor")); + CGContextStrokePath(context); +} +},["void","CGRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("view"), function $_CPMenuItemSeparatorView__view(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 10.0)); +} +},["id"])]); +} + +p;25;_CPMenuItemStandardView.jt;13391;@STATIC;1.0;t;13371; + +var LEFT_MARGIN = 3.0, + RIGHT_MARGIN = 14.0 + 3.0, + STATE_COLUMN_WIDTH = 14.0, + INDENTATION_WIDTH = 17.0, + VERTICAL_MARGIN = 4.0, + + RIGHT_COLUMNS_MARGIN = 30.0, + KEY_EQUIVALENT_MARGIN = 10.0; + +var SUBMENU_INDICATOR_COLOR = nil, + _CPMenuItemSelectionColor = nil, + _CPMenuItemTextShadowColor = nil, + + _CPMenuItemDefaultStateImages = [], + _CPMenuItemDefaultStateHighlightedImages = []; + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemStandardView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuItem"), new objj_ivar("_font"), new objj_ivar("_textColor"), new objj_ivar("_textShadowColor"), new objj_ivar("_minSize"), new objj_ivar("_isDirty"), new objj_ivar("_stateView"), new objj_ivar("_imageAndTextView"), new objj_ivar("_keyEquivalentView"), new objj_ivar("_submenuIndicatorView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("menuItem"), function $_CPMenuItemStandardView__menuItem(self, _cmd) +{ with(self) +{ +return _menuItem; +} +},["id"]), +new objj_method(sel_getUid("setMenuItem:"), function $_CPMenuItemStandardView__setMenuItem_(self, _cmd, newValue) +{ with(self) +{ +_menuItem = newValue; +} +},["void","id"]), +new objj_method(sel_getUid("minSize"), function $_CPMenuItemStandardView__minSize(self, _cmd) +{ with(self) +{ +return _minSize; +} +},["id"]), new objj_method(sel_getUid("initWithFrame:"), function $_CPMenuItemStandardView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuItemStandardView").super_class }, "initWithFrame:", aFrame); + + if (self) + { + _stateView = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 0.0)); + + objj_msgSend(_stateView, "setImageScaling:", CPScaleNone); + + objj_msgSend(self, "addSubview:", _stateView); + + _imageAndTextView = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 0.0)); + + objj_msgSend(_imageAndTextView, "setImagePosition:", CPImageLeft); + objj_msgSend(_imageAndTextView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + + objj_msgSend(self, "addSubview:", _imageAndTextView); + + _keyEquivalentView = objj_msgSend(objj_msgSend(_CPImageAndTextView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 0.0, 0.0)); + + objj_msgSend(_keyEquivalentView, "setImagePosition:", CPNoImage); + objj_msgSend(_keyEquivalentView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_keyEquivalentView, "setAutoresizingMask:", CPViewMinXMargin); + + objj_msgSend(self, "addSubview:", _keyEquivalentView); + + _submenuIndicatorView = objj_msgSend(objj_msgSend(_CPMenuItemSubmenuIndicatorView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, 8.0, 10.0)); + + objj_msgSend(_submenuIndicatorView, "setColor:", SUBMENU_INDICATOR_COLOR); + objj_msgSend(_submenuIndicatorView, "setAutoresizingMask:", CPViewMinXMargin); + + objj_msgSend(self, "addSubview:", _submenuIndicatorView); + + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable); + } + + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("textColor"), function $_CPMenuItemStandardView__textColor(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "isEnabled")) + return objj_msgSend(CPColor, "lightGrayColor"); + + return _textColor || objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 70.0 / 255.0, 69.0 / 255.0, 69.0 / 255.0, 1.0); +} +},["CPColor"]), new objj_method(sel_getUid("textShadowColor"), function $_CPMenuItemStandardView__textShadowColor(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "isEnabled")) + return nil; + + return _textShadowColor || objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.8); +} +},["CPColor"]), new objj_method(sel_getUid("setFont:"), function $_CPMenuItemStandardView__setFont_(self, _cmd, aFont) +{ with(self) +{ + _font = aFont; +} +},["void","CPFont"]), new objj_method(sel_getUid("update"), function $_CPMenuItemStandardView__update(self, _cmd) +{ with(self) +{ + var x = LEFT_MARGIN + objj_msgSend(_menuItem, "indentationLevel") * INDENTATION_WIDTH, + height = 0.0, + hasStateColumn = objj_msgSend(objj_msgSend(_menuItem, "menu"), "showsStateColumn"); + + if (hasStateColumn) + { + objj_msgSend(_stateView, "setHidden:", NO); + objj_msgSend(_stateView, "setImage:", _CPMenuItemDefaultStateImages[objj_msgSend(_menuItem, "state")] || nil); + + x += STATE_COLUMN_WIDTH; + } + else + objj_msgSend(_stateView, "setHidden:", YES); + + objj_msgSend(_imageAndTextView, "setFont:", objj_msgSend(_menuItem, "font") || _font); + objj_msgSend(_imageAndTextView, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setText:", objj_msgSend(_menuItem, "title")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + objj_msgSend(_imageAndTextView, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_imageAndTextView, "sizeToFit"); + + var imageAndTextViewFrame = objj_msgSend(_imageAndTextView, "frame"); + + imageAndTextViewFrame.origin.x = x; + x += CGRectGetWidth(imageAndTextViewFrame); + height = MAX(height, CGRectGetHeight(imageAndTextViewFrame)); + + var hasKeyEquivalent = !!objj_msgSend(_menuItem, "keyEquivalent"), + hasSubmenu = objj_msgSend(_menuItem, "hasSubmenu"); + + if (hasKeyEquivalent || hasSubmenu) + x += RIGHT_COLUMNS_MARGIN; + + if (hasKeyEquivalent) + { + objj_msgSend(_keyEquivalentView, "setFont:", objj_msgSend(_menuItem, "font") || _font); + objj_msgSend(_keyEquivalentView, "setVerticalAlignment:", CPCenterVerticalTextAlignment); + objj_msgSend(_keyEquivalentView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_keyEquivalentView, "setText:", objj_msgSend(_menuItem, "keyEquivalentStringRepresentation")); + objj_msgSend(_keyEquivalentView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_keyEquivalentView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + objj_msgSend(_keyEquivalentView, "setTextShadowOffset:", CGSizeMake(0, 1)); + objj_msgSend(_keyEquivalentView, "setFrameOrigin:", CGPointMake(x, VERTICAL_MARGIN)); + objj_msgSend(_keyEquivalentView, "sizeToFit"); + + var keyEquivalentViewFrame = objj_msgSend(_keyEquivalentView, "frame"); + + keyEquivalentViewFrame.origin.x = x; + x += CGRectGetWidth(keyEquivalentViewFrame); + height = MAX(height, CGRectGetHeight(keyEquivalentViewFrame)); + + if (hasSubmenu) + x += RIGHT_COLUMNS_MARGIN; + } + else + objj_msgSend(_keyEquivalentView, "setHidden:", YES); + + if (hasSubmenu) + { + objj_msgSend(_submenuIndicatorView, "setHidden:", NO); + + var submenuViewFrame = objj_msgSend(_submenuIndicatorView, "frame"); + + submenuViewFrame.origin.x = x; + + x += CGRectGetWidth(submenuViewFrame); + height = MAX(height, CGRectGetHeight(submenuViewFrame)); + } + else + objj_msgSend(_submenuIndicatorView, "setHidden:", YES); + + height += 2.0 * VERTICAL_MARGIN; + + imageAndTextViewFrame.origin.y = FLOOR((height - CGRectGetHeight(imageAndTextViewFrame)) / 2.0); + objj_msgSend(_imageAndTextView, "setFrame:", imageAndTextViewFrame); + + if (hasStateColumn) + objj_msgSend(_stateView, "setFrameSize:", CGSizeMake(STATE_COLUMN_WIDTH, height)); + + if (hasKeyEquivalent) + { + keyEquivalentViewFrame.origin.y = FLOOR((height - CGRectGetHeight(keyEquivalentViewFrame)) / 2.0); + objj_msgSend(_keyEquivalentView, "setFrame:", keyEquivalentViewFrame); + } + + if (hasSubmenu) + { + submenuViewFrame.origin.y = FLOOR((height - CGRectGetHeight(submenuViewFrame)) / 2.0); + objj_msgSend(_submenuIndicatorView, "setFrame:", submenuViewFrame); + } + + _minSize = CGSizeMake(x + RIGHT_MARGIN, height); + + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(self, "setFrameSize:", _minSize); + objj_msgSend(self, "setAutoresizesSubviews:", YES); +} +},["void"]), new objj_method(sel_getUid("highlight:"), function $_CPMenuItemStandardView__highlight_(self, _cmd, shouldHighlight) +{ with(self) +{ + + if (!objj_msgSend(_menuItem, "isEnabled")) + return; + + if (shouldHighlight) + { + objj_msgSend(self, "setBackgroundColor:", _CPMenuItemSelectionColor); + + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "alternateImage") || objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_keyEquivalentView, "setTextColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_submenuIndicatorView, "setColor:", objj_msgSend(CPColor, "whiteColor")); + + objj_msgSend(_imageAndTextView, "setTextShadowColor:", _CPMenuItemTextShadowColor); + objj_msgSend(_keyEquivalentView, "setTextShadowColor:", _CPMenuItemTextShadowColor); + } + else + { + objj_msgSend(self, "setBackgroundColor:", nil); + + objj_msgSend(_imageAndTextView, "setImage:", objj_msgSend(_menuItem, "image")); + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_keyEquivalentView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_submenuIndicatorView, "setColor:", SUBMENU_INDICATOR_COLOR); + + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + objj_msgSend(_keyEquivalentView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + } + + if (objj_msgSend(objj_msgSend(_menuItem, "menu"), "showsStateColumn")) + { + if (shouldHighlight) + objj_msgSend(_stateView, "setImage:", _CPMenuItemDefaultStateHighlightedImages[objj_msgSend(_menuItem, "state")] || nil); + else + objj_msgSend(_stateView, "setImage:", _CPMenuItemDefaultStateImages[objj_msgSend(_menuItem, "state")] || nil); + } +} +},["void","BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPMenuItemStandardView__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(_CPMenuItemStandardView, "class")) + return; + + SUBMENU_INDICATOR_COLOR = objj_msgSend(CPColor, "grayColor"); + + _CPMenuItemSelectionColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 95.0 / 255.0, 131.0 / 255.0, 185.0 / 255.0, 1.0); + _CPMenuItemTextShadowColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 26.0 / 255.0, 73.0 / 255.0, 109.0 / 255.0, 1.0); + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + _CPMenuItemDefaultStateImages[CPOffState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPOffState] = nil; + + _CPMenuItemDefaultStateImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnState.png"), CGSizeMake(14.0, 14.0)); + _CPMenuItemDefaultStateHighlightedImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnStateHighlighted.png"), CGSizeMake(14.0, 14.0)); + + _CPMenuItemDefaultStateImages[CPMixedState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPMixedState] = nil; +} +},["void"]), new objj_method(sel_getUid("view"), function $_CPMenuItemStandardView__view(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("_standardLeftMargin"), function $_CPMenuItemStandardView___standardLeftMargin(self, _cmd) +{ with(self) +{ + return LEFT_MARGIN + STATE_COLUMN_WIDTH; +} +},["float"])]); +} + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemSubmenuIndicatorView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_color")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setColor:"), function $_CPMenuItemSubmenuIndicatorView__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (_color === aColor) + return; + + _color = aColor; + + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("drawRect:"), function $_CPMenuItemSubmenuIndicatorView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"), + bounds = objj_msgSend(self, "bounds"); + + CGContextBeginPath(context); + + CGContextMoveToPoint(context, CGRectGetMinX(bounds), CGRectGetMinY(bounds)); + CGContextAddLineToPoint(context, CGRectGetMaxX(bounds), CGRectGetMidY(bounds)); + CGContextAddLineToPoint(context, CGRectGetMinX(bounds), CGRectGetMaxY(bounds)); + + CGContextClosePath(context); + + CGContextSetFillColor(context, _color); + CGContextFillPath(context); +} +},["void","CGRect"])]); +} + +p;17;_CPMenuItemView.jt;9096;@STATIC;1.0;i;26;_CPMenuItemSeparatorView.ji;25;_CPMenuItemStandardView.ji;24;_CPMenuItemMenuBarView.jt;8987; + + +objj_executeFile("_CPMenuItemSeparatorView.j", YES); +objj_executeFile("_CPMenuItemStandardView.j", YES); +objj_executeFile("_CPMenuItemMenuBarView.j", YES); + + +var LEFT_MARGIN = 3.0, + RIGHT_MARGIN = 16.0, + STATE_COLUMN_WIDTH = 14.0, + INDENTATION_WIDTH = 17.0, + VERTICAL_MARGIN = 4.0; + +var _CPMenuItemSelectionColor = nil, + _CPMenuItemTextShadowColor = nil, + + _CPMenuItemDefaultStateImages = [], + _CPMenuItemDefaultStateHighlightedImages = []; + + + + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_menuItem"), new objj_ivar("_view"), new objj_ivar("_font"), new objj_ivar("_textColor"), new objj_ivar("_textShadowColor"), new objj_ivar("_minSize"), new objj_ivar("_isDirty"), new objj_ivar("_showsStateColumn"), new objj_ivar("_stateView"), new objj_ivar("_imageAndTextView"), new objj_ivar("_submenuView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:forMenuItem:"), function $_CPMenuItemView__initWithFrame_forMenuItem_(self, _cmd, aFrame, aMenuItem) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPMenuItemView").super_class }, "initWithFrame:", aFrame); + + if (self) + { + _menuItem = aMenuItem; + _showsStateColumn = YES; + _isDirty = YES; + + objj_msgSend(self, "setAutoresizingMask:", CPViewWidthSizable); + + objj_msgSend(self, "synchronizeWithMenuItem"); + } + + return self; +} +},["id","CGRect","CPMenuItem"]), new objj_method(sel_getUid("minSize"), function $_CPMenuItemView__minSize(self, _cmd) +{ with(self) +{ + return _minSize; +} +},["CGSize"]), new objj_method(sel_getUid("setDirty"), function $_CPMenuItemView__setDirty(self, _cmd) +{ with(self) +{ + _isDirty = YES; +} +},["void"]), new objj_method(sel_getUid("synchronizeWithMenuItem"), function $_CPMenuItemView__synchronizeWithMenuItem(self, _cmd) +{ with(self) +{ + var menuItemView = objj_msgSend(_menuItem, "view"); + + if (objj_msgSend(_menuItem, "isSeparatorItem")) + { + if (!objj_msgSend(_view, "isKindOfClass:", objj_msgSend(_CPMenuItemSeparatorView, "class"))) + { + objj_msgSend(_view, "removeFromSuperview"); + _view = objj_msgSend(_CPMenuItemSeparatorView, "view"); + } + } + else if (menuItemView) + { + if (_view !== menuItemView) + { + objj_msgSend(_view, "removeFromSuperview"); + _view = menuItemView; + } + } + + else if (objj_msgSend(_menuItem, "menu") == objj_msgSend(CPApp, "mainMenu")) + { + if (!objj_msgSend(_view, "isKindOfClass:", objj_msgSend(_CPMenuItemMenuBarView, "class"))) + { + objj_msgSend(_view, "removeFromSuperview"); + _view = objj_msgSend(_CPMenuItemMenuBarView, "view"); + } + + objj_msgSend(_view, "setMenuItem:", _menuItem); + } + else + { + if (!objj_msgSend(_view, "isKindOfClass:", objj_msgSend(_CPMenuItemStandardView, "class"))) + { + objj_msgSend(_view, "removeFromSuperview"); + _view = objj_msgSend(_CPMenuItemStandardView, "view"); + } + + objj_msgSend(_view, "setMenuItem:", _menuItem); + } + + if (objj_msgSend(_view, "superview") !== self) + objj_msgSend(self, "addSubview:", _view); + + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("update"))) + objj_msgSend(_view, "update"); + + _minSize = objj_msgSend(_view, "frame").size; + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(self, "setFrameSize:", _minSize); + objj_msgSend(self, "setAutoresizesSubviews:", YES); +} +},["void"]), new objj_method(sel_getUid("setShowsStateColumn:"), function $_CPMenuItemView__setShowsStateColumn_(self, _cmd, shouldShowStateColumn) +{ with(self) +{ + _showsStateColumn = shouldShowStateColumn; +} +},["void","BOOL"]), new objj_method(sel_getUid("highlight:"), function $_CPMenuItemView__highlight_(self, _cmd, shouldHighlight) +{ with(self) +{ + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("highlight:"))) + objj_msgSend(_view, "highlight:", shouldHighlight); +} +},["void","BOOL"]), new objj_method(sel_getUid("eventOnSubmenu:"), function $_CPMenuItemView__eventOnSubmenu_(self, _cmd, anEvent) +{ with(self) +{ + if (!objj_msgSend(_menuItem, "hasSubmenu")) + return NO; + + return CGRectContainsPoint(objj_msgSend(_submenuView, "frame"), objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil)); +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("isHidden"), function $_CPMenuItemView__isHidden(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menuItem, "isHidden"); +} +},["BOOL"]), new objj_method(sel_getUid("menuItem"), function $_CPMenuItemView__menuItem(self, _cmd) +{ with(self) +{ + return _menuItem; +} +},["CPMenuItem"]), new objj_method(sel_getUid("setFont:"), function $_CPMenuItemView__setFont_(self, _cmd, aFont) +{ with(self) +{ + if (_font === aFont) + return; + + _font = aFont; + + if (objj_msgSend(_view, "respondsToSelector:", sel_getUid("setFont:"))) + objj_msgSend(_view, "setFont:", aFont); + + objj_msgSend(self, "setDirty"); +} +},["void","CPFont"]), new objj_method(sel_getUid("setTextColor:"), function $_CPMenuItemView__setTextColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textColor == aColor) + return; + + _textColor = aColor; + + objj_msgSend(_imageAndTextView, "setTextColor:", objj_msgSend(self, "textColor")); + objj_msgSend(_submenuView, "setColor:", objj_msgSend(self, "textColor")); +} +},["void","CPColor"]), new objj_method(sel_getUid("textColor"), function $_CPMenuItemView__textColor(self, _cmd) +{ with(self) +{ + return nil; +} +},["CPColor"]), new objj_method(sel_getUid("setTextShadowColor:"), function $_CPMenuItemView__setTextShadowColor_(self, _cmd, aColor) +{ with(self) +{ + if (_textShadowColor == aColor) + return; + + _textShadowColor = aColor; + + objj_msgSend(_imageAndTextView, "setTextShadowColor:", objj_msgSend(self, "textShadowColor")); + +} +},["void","CPColor"]), new objj_method(sel_getUid("textShadowColor"), function $_CPMenuItemView__textShadowColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(_menuItem, "isEnabled") ? (_textShadowColor ? _textShadowColor : objj_msgSend(CPColor, "colorWithWhite:alpha:", 1.0, 0.8)) : objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.8, 0.8); +} +},["CPColor"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPMenuItemView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPMenuItemView, "class")) + return; + + _CPMenuItemSelectionColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 95.0 / 255.0, 131.0 / 255.0, 185.0 / 255.0, 1.0); + _CPMenuItemTextShadowColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 26.0 / 255.0, 73.0 / 255.0, 109.0 / 255.0, 1.0); + + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + + _CPMenuItemDefaultStateImages[CPOffState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPOffState] = nil; + + _CPMenuItemDefaultStateImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnState.png"), CGSizeMake(14.0, 14.0)); + _CPMenuItemDefaultStateHighlightedImages[CPOnState] = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPMenuItem/CPMenuItemOnStateHighlighted.png"), CGSizeMake(14.0, 14.0)); + + _CPMenuItemDefaultStateImages[CPMixedState] = nil; + _CPMenuItemDefaultStateHighlightedImages[CPMixedState] = nil; +} +},["void"]), new objj_method(sel_getUid("leftMargin"), function $_CPMenuItemView__leftMargin(self, _cmd) +{ with(self) +{ + return LEFT_MARGIN + STATE_COLUMN_WIDTH; +} +},["float"])]); +} + +{var the_class = objj_allocateClassPair(CPView, "_CPMenuItemArrowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_color")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setColor:"), function $_CPMenuItemArrowView__setColor_(self, _cmd, aColor) +{ with(self) +{ + if (_color == aColor) + return; + + _color = aColor; + + objj_msgSend(self, "setNeedsDisplay:", YES); +} +},["void","CPColor"]), new objj_method(sel_getUid("drawRect:"), function $_CPMenuItemArrowView__drawRect_(self, _cmd, aRect) +{ with(self) +{ + var context = objj_msgSend(objj_msgSend(CPGraphicsContext, "currentContext"), "graphicsPort"); + + CGContextBeginPath(context); + + CGContextMoveToPoint(context, 1.0, 4.0); + CGContextAddLineToPoint(context, 9.0, 4.0); + CGContextAddLineToPoint(context, 5.0, 8.0); + CGContextAddLineToPoint(context, 1.0, 4.0); + + CGContextClosePath(context); + + CGContextSetFillColor(context, _color); + CGContextFillPath(context); +} +},["void","CGRect"])]); +} + +p;12;CPMenuItem.jt;23487;@STATIC;1.0;I;20;Foundation/CPCoder.jI;21;Foundation/CPObject.jI;21;Foundation/CPString.ji;9;CPImage.ji;8;CPMenu.ji;8;CPView.ji;17;_CPMenuItemView.jt;23331;objj_executeFile("Foundation/CPCoder.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("CPImage.j", YES); +objj_executeFile("CPMenu.j", YES); +objj_executeFile("CPView.j", YES); +objj_executeFile("_CPMenuItemView.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPMenuItem"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_isSeparator"), new objj_ivar("_title"), new objj_ivar("_font"), new objj_ivar("_target"), new objj_ivar("_action"), new objj_ivar("_isEnabled"), new objj_ivar("_isHidden"), new objj_ivar("_tag"), new objj_ivar("_state"), new objj_ivar("_image"), new objj_ivar("_alternateImage"), new objj_ivar("_onStateImage"), new objj_ivar("_offStateImage"), new objj_ivar("_mixedStateImage"), new objj_ivar("_submenu"), new objj_ivar("_menu"), new objj_ivar("_keyEquivalent"), new objj_ivar("_keyEquivalentModifierMask"), new objj_ivar("_mnemonicLocation"), new objj_ivar("_isAlternate"), new objj_ivar("_indentationLevel"), new objj_ivar("_toolTip"), new objj_ivar("_representedObject"), new objj_ivar("_view"), new objj_ivar("_menuItemView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPMenuItem__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithTitle:action:keyEquivalent:", "", nil, nil); +} +},["id"]), new objj_method(sel_getUid("initWithTitle:action:keyEquivalent:"), function $CPMenuItem__initWithTitle_action_keyEquivalent_(self, _cmd, aTitle, anAction, aKeyEquivalent) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPMenuItem").super_class }, "init"); + if (self) + { + _isSeparator = NO; + _title = aTitle; + _action = anAction; + _isEnabled = YES; + _tag = 0; + _state = CPOffState; + _keyEquivalent = aKeyEquivalent || ""; + _keyEquivalentModifierMask = CPPlatformActionKeyMask; + _indentationLevel = 0; + _mnemonicLocation = CPNotFound; + } + return self; +} +},["id","CPString","SEL","CPString"]), new objj_method(sel_getUid("setEnabled:"), function $CPMenuItem__setEnabled_(self, _cmd, isEnabled) +{ with(self) +{ + if (objj_msgSend(_menu, "autoenablesItems")) + return; + _isEnabled = isEnabled; + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","BOOL"]), new objj_method(sel_getUid("isEnabled"), function $CPMenuItem__isEnabled(self, _cmd) +{ with(self) +{ + return _isEnabled; +} +},["BOOL"]), new objj_method(sel_getUid("setHidden:"), function $CPMenuItem__setHidden_(self, _cmd, isHidden) +{ with(self) +{ + if (_isHidden == isHidden) + return; + _isHidden = isHidden; + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","BOOL"]), new objj_method(sel_getUid("isHidden"), function $CPMenuItem__isHidden(self, _cmd) +{ with(self) +{ + return _isHidden; +} +},["BOOL"]), new objj_method(sel_getUid("isHiddenOrHasHiddenAncestor"), function $CPMenuItem__isHiddenOrHasHiddenAncestor(self, _cmd) +{ with(self) +{ + if (_isHidden) + return YES; + var supermenu = objj_msgSend(_menu, "supermenu"); + if (objj_msgSend(objj_msgSend(supermenu, "itemAtIndex:", objj_msgSend(supermenu, "indexOfItemWithSubmenu:", _menu)), "isHiddenOrHasHiddenAncestor")) + return YES; + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("setTarget:"), function $CPMenuItem__setTarget_(self, _cmd, aTarget) +{ with(self) +{ + _target = aTarget; +} +},["void","id"]), new objj_method(sel_getUid("target"), function $CPMenuItem__target(self, _cmd) +{ with(self) +{ + return _target; +} +},["id"]), new objj_method(sel_getUid("setAction:"), function $CPMenuItem__setAction_(self, _cmd, anAction) +{ with(self) +{ + _action = anAction; +} +},["void","SEL"]), new objj_method(sel_getUid("action"), function $CPMenuItem__action(self, _cmd) +{ with(self) +{ + return _action; +} +},["SEL"]), new objj_method(sel_getUid("setTitle:"), function $CPMenuItem__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + _mnemonicLocation = CPNotFound; + if (_title == aTitle) + return; + _title = aTitle; + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPString"]), new objj_method(sel_getUid("title"), function $CPMenuItem__title(self, _cmd) +{ with(self) +{ + return _title; +} +},["CPString"]), new objj_method(sel_getUid("setTextColor:"), function $CPMenuItem__setTextColor_(self, _cmd, aColor) +{ with(self) +{ +} +},["void","CPString"]), new objj_method(sel_getUid("setFont:"), function $CPMenuItem__setFont_(self, _cmd, aFont) +{ with(self) +{ + if (_font == aFont) + return; + _font = aFont; + objj_msgSend(_menu, "itemChanged:", self); + objj_msgSend(_menuItemView, "setDirty"); +} +},["void","CPFont"]), new objj_method(sel_getUid("font"), function $CPMenuItem__font(self, _cmd) +{ with(self) +{ + return _font; +} +},["CPFont"]), new objj_method(sel_getUid("setTag:"), function $CPMenuItem__setTag_(self, _cmd, aTag) +{ with(self) +{ + _tag = aTag; +} +},["void","int"]), new objj_method(sel_getUid("tag"), function $CPMenuItem__tag(self, _cmd) +{ with(self) +{ + return _tag; +} +},["int"]), new objj_method(sel_getUid("setState:"), function $CPMenuItem__setState_(self, _cmd, aState) +{ with(self) +{ + if (_state == aState) + return; + _state = aState; + objj_msgSend(_menu, "itemChanged:", self); + objj_msgSend(_menuItemView, "setDirty"); +} +},["void","int"]), new objj_method(sel_getUid("state"), function $CPMenuItem__state(self, _cmd) +{ with(self) +{ + return _state; +} +},["int"]), new objj_method(sel_getUid("setImage:"), function $CPMenuItem__setImage_(self, _cmd, anImage) +{ with(self) +{ + if (_image == anImage) + return; + _image = anImage; + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPImage"]), new objj_method(sel_getUid("image"), function $CPMenuItem__image(self, _cmd) +{ with(self) +{ + return _image; +} +},["CPImage"]), new objj_method(sel_getUid("setAlternateImage:"), function $CPMenuItem__setAlternateImage_(self, _cmd, anImage) +{ with(self) +{ + _alternateImage = anImage; +} +},["void","CPImage"]), new objj_method(sel_getUid("alternateImage"), function $CPMenuItem__alternateImage(self, _cmd) +{ with(self) +{ + return _alternateImage; +} +},["CPImage"]), new objj_method(sel_getUid("setOnStateImage:"), function $CPMenuItem__setOnStateImage_(self, _cmd, anImage) +{ with(self) +{ + if (_onStateImage == anImage) + return; + _onStateImage = anImage; + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPImage"]), new objj_method(sel_getUid("onStateImage"), function $CPMenuItem__onStateImage(self, _cmd) +{ with(self) +{ + return _onStateImage; +} +},["CPImage"]), new objj_method(sel_getUid("setOffStateImage:"), function $CPMenuItem__setOffStateImage_(self, _cmd, anImage) +{ with(self) +{ + if (_offStateImage == anImage) + return; + _offStateImage = anImage; + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPImage"]), new objj_method(sel_getUid("offStateImage"), function $CPMenuItem__offStateImage(self, _cmd) +{ with(self) +{ + return _offStateImage; +} +},["CPImage"]), new objj_method(sel_getUid("setMixedStateImage:"), function $CPMenuItem__setMixedStateImage_(self, _cmd, anImage) +{ with(self) +{ + if (_mixedStateImage == anImage) + return; + _mixedStateImage = anImage; + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPImage"]), new objj_method(sel_getUid("mixedStateImage"), function $CPMenuItem__mixedStateImage(self, _cmd) +{ with(self) +{ + return _mixedStateImage; +} +},["CPImage"]), new objj_method(sel_getUid("setSubmenu:"), function $CPMenuItem__setSubmenu_(self, _cmd, aMenu) +{ with(self) +{ + if (_submenu === aMenu) + return; + var supermenu = objj_msgSend(_submenu, "supermenu"); + if (supermenu) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Can't add submenu \"" + objj_msgSend(aMenu, "title") + "\" to item \"" + objj_msgSend(self, "title") + "\", because it is already submenu of \"" + objj_msgSend(objj_msgSend(aMenu, "supermenu"), "title") + "\""); + _submenu = aMenu; + if (_submenu) + { + objj_msgSend(_submenu, "setSupermenu:", _menu); + objj_msgSend(self, "setTarget:", _menu); + objj_msgSend(self, "setAction:", sel_getUid("submenuAction:")); + } + else + { + objj_msgSend(self, "setTarget:", nil); + objj_msgSend(self, "setAction:", NULL); + } + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPMenu"]), new objj_method(sel_getUid("submenu"), function $CPMenuItem__submenu(self, _cmd) +{ with(self) +{ + return _submenu; +} +},["CPMenu"]), new objj_method(sel_getUid("hasSubmenu"), function $CPMenuItem__hasSubmenu(self, _cmd) +{ with(self) +{ + return _submenu ? YES : NO; +} +},["BOOL"]), new objj_method(sel_getUid("isSeparatorItem"), function $CPMenuItem__isSeparatorItem(self, _cmd) +{ with(self) +{ + return _isSeparator; +} +},["BOOL"]), new objj_method(sel_getUid("setMenu:"), function $CPMenuItem__setMenu_(self, _cmd, aMenu) +{ with(self) +{ + _menu = aMenu; +} +},["void","CPMenu"]), new objj_method(sel_getUid("menu"), function $CPMenuItem__menu(self, _cmd) +{ with(self) +{ + return _menu; +} +},["CPMenu"]), new objj_method(sel_getUid("setKeyEquivalent:"), function $CPMenuItem__setKeyEquivalent_(self, _cmd, aString) +{ with(self) +{ + _keyEquivalent = aString || ""; +} +},["void","CPString"]), new objj_method(sel_getUid("keyEquivalent"), function $CPMenuItem__keyEquivalent(self, _cmd) +{ with(self) +{ + return _keyEquivalent; +} +},["CPString"]), new objj_method(sel_getUid("setKeyEquivalentModifierMask:"), function $CPMenuItem__setKeyEquivalentModifierMask_(self, _cmd, aMask) +{ with(self) +{ + _keyEquivalentModifierMask = aMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("keyEquivalentModifierMask"), function $CPMenuItem__keyEquivalentModifierMask(self, _cmd) +{ with(self) +{ + return _keyEquivalentModifierMask; +} +},["unsigned"]), new objj_method(sel_getUid("keyEquivalentStringRepresentation"), function $CPMenuItem__keyEquivalentStringRepresentation(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_keyEquivalent, "length")) + return ""; + var string = _keyEquivalent.toUpperCase(), + needsShift = _keyEquivalentModifierMask & CPShiftKeyMask || + (string === _keyEquivalent && _keyEquivalent.toLowerCase() !== _keyEquivalent.toUpperCase()); + if (CPBrowserIsOperatingSystem(CPMacOperatingSystem)) + { + if (_keyEquivalentModifierMask & CPCommandKeyMask) + string = "⌘" + string; + if (needsShift) + string = "⇧" + string; + if (_keyEquivalentModifierMask & CPAlternateKeyMask) + string = "⌥" + string; + if (_keyEquivalentModifierMask & CPControlKeyMask) + string = "^" + string; + } + else + { + if (needsShift) + string = "Shift-" + string; + if (_keyEquivalentModifierMask & CPAlternateKeyMask) + string = "Alt-" + string; + if (_keyEquivalentModifierMask & CPControlKeyMask || _keyEquivalentModifierMask & CPCommandKeyMask) + string = "Ctrl-" + string; + } + return string; +} +},["CPString"]), new objj_method(sel_getUid("setMnemonicLocation:"), function $CPMenuItem__setMnemonicLocation_(self, _cmd, aLocation) +{ with(self) +{ + _mnemonicLocation = aLocation; +} +},["void","unsigned"]), new objj_method(sel_getUid("mnemonicLocation"), function $CPMenuItem__mnemonicLocation(self, _cmd) +{ with(self) +{ + return _mnemonicLocation; +} +},["unsigned"]), new objj_method(sel_getUid("setTitleWithMnemonicLocation:"), function $CPMenuItem__setTitleWithMnemonicLocation_(self, _cmd, aTitle) +{ with(self) +{ + var location = objj_msgSend(aTitle, "rangeOfString:", "&").location; + if (location == CPNotFound) + objj_msgSend(self, "setTitle:", aTitle); + else + { + objj_msgSend(self, "setTitle:", objj_msgSend(aTitle, "substringToIndex:", location) + objj_msgSend(aTitle, "substringFromIndex:", location + 1)); + objj_msgSend(self, "setMnemonicLocation:", location); + } +} +},["void","CPString"]), new objj_method(sel_getUid("mnemonic"), function $CPMenuItem__mnemonic(self, _cmd) +{ with(self) +{ + return _mnemonicLocation == CPNotFound ? "" : objj_msgSend(_title, "characterAtIndex:", _mnemonicLocation); +} +},["CPString"]), new objj_method(sel_getUid("setAlternate:"), function $CPMenuItem__setAlternate_(self, _cmd, isAlternate) +{ with(self) +{ + _isAlternate = isAlternate; +} +},["void","BOOL"]), new objj_method(sel_getUid("isAlternate"), function $CPMenuItem__isAlternate(self, _cmd) +{ with(self) +{ + return _isAlternate; +} +},["BOOL"]), new objj_method(sel_getUid("setIndentationLevel:"), function $CPMenuItem__setIndentationLevel_(self, _cmd, aLevel) +{ with(self) +{ + if (aLevel < 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "setIndentationLevel: argument must be greater than or equal to 0."); + _indentationLevel = MIN(15, aLevel); +} +},["void","unsigned"]), new objj_method(sel_getUid("indentationLevel"), function $CPMenuItem__indentationLevel(self, _cmd) +{ with(self) +{ + return _indentationLevel; +} +},["unsigned"]), new objj_method(sel_getUid("setToolTip:"), function $CPMenuItem__setToolTip_(self, _cmd, aToolTip) +{ with(self) +{ + _toolTip = aToolTip; +} +},["void","CPString"]), new objj_method(sel_getUid("toolTip"), function $CPMenuItem__toolTip(self, _cmd) +{ with(self) +{ + return _toolTip; +} +},["CPString"]), new objj_method(sel_getUid("setRepresentedObject:"), function $CPMenuItem__setRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + _representedObject = anObject; +} +},["void","id"]), new objj_method(sel_getUid("representedObject"), function $CPMenuItem__representedObject(self, _cmd) +{ with(self) +{ + return _representedObject; +} +},["id"]), new objj_method(sel_getUid("setView:"), function $CPMenuItem__setView_(self, _cmd, aView) +{ with(self) +{ + if (_view === aView) + return; + _view = aView; + objj_msgSend(_menuItemView, "setDirty"); + objj_msgSend(_menu, "itemChanged:", self); +} +},["void","CPView"]), new objj_method(sel_getUid("view"), function $CPMenuItem__view(self, _cmd) +{ with(self) +{ + return _view; +} +},["CPView"]), new objj_method(sel_getUid("isHighlighted"), function $CPMenuItem__isHighlighted(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "menu"), "highlightedItem") == self; +} +},["BOOL"]), new objj_method(sel_getUid("copy"), function $CPMenuItem__copy(self, _cmd) +{ with(self) +{ + var item = objj_msgSend(objj_msgSend(CPMenuItem, "alloc"), "init"); + item._isSeparator = _isSeparator; + objj_msgSend(item, "setTitle:", _title); + objj_msgSend(item, "setFont:", _font); + objj_msgSend(item, "setTarget:", _target); + objj_msgSend(item, "setAction:", _action); + objj_msgSend(item, "setEnabled:", _isEnabled); + objj_msgSend(item, "setHidden:", _isHidden) + objj_msgSend(item, "setTag:", _tag); + objj_msgSend(item, "setState:", _state); + objj_msgSend(item, "setImage:", _image); + objj_msgSend(item, "setAlternateImage:", _alternateImage); + objj_msgSend(item, "setOnStateImage:", _onStateImage); + objj_msgSend(item, "setOffStateImage:", _offStateImage); + objj_msgSend(item, "setMixedStateImage:", _mixedStateImage); + objj_msgSend(item, "setKeyEquivalent:", _keyEquivalent); + objj_msgSend(item, "setKeyEquivalentModifierMask:", _keyEquivalentModifierMask); + objj_msgSend(item, "setMnemonicLocation:", _mnemonicLocation); + objj_msgSend(item, "setAlternate:", _isAlternate); + objj_msgSend(item, "setIndentationLevel:", _indentationLevel); + objj_msgSend(item, "setToolTip:", _toolTip); + objj_msgSend(item, "setRepresentedObject:", _representedObject); + return item; +} +},["id"]), new objj_method(sel_getUid("mutableCopy"), function $CPMenuItem__mutableCopy(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "copy"); +} +},["id"]), new objj_method(sel_getUid("_menuItemView"), function $CPMenuItem___menuItemView(self, _cmd) +{ with(self) +{ + if (!_menuItemView) + _menuItemView = objj_msgSend(objj_msgSend(_CPMenuItemView, "alloc"), "initWithFrame:forMenuItem:", CGRectMakeZero(), self); + return _menuItemView; +} +},["id"]), new objj_method(sel_getUid("_isSelectable"), function $CPMenuItem___isSelectable(self, _cmd) +{ with(self) +{ + return !objj_msgSend(self, "submenu") || objj_msgSend(self, "action") !== sel_getUid("submenuAction:") || objj_msgSend(self, "target") !== objj_msgSend(self, "menu"); +} +},["BOOL"]), new objj_method(sel_getUid("_isMenuBarButton"), function $CPMenuItem___isMenuBarButton(self, _cmd) +{ with(self) +{ + return !objj_msgSend(self, "submenu") && objj_msgSend(self, "menu") === objj_msgSend(CPApp, "mainMenu"); +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("separatorItem"), function $CPMenuItem__separatorItem(self, _cmd) +{ with(self) +{ + var separatorItem = objj_msgSend(objj_msgSend(self, "alloc"), "initWithTitle:action:keyEquivalent:", "", nil, nil); + separatorItem._isSeparator = YES; + return separatorItem; +} +},["CPMenuItem"])]); +} +var CPMenuItemIsSeparatorKey = "CPMenuItemIsSeparatorKey", + CPMenuItemTitleKey = "CPMenuItemTitleKey", + CPMenuItemTargetKey = "CPMenuItemTargetKey", + CPMenuItemActionKey = "CPMenuItemActionKey", + CPMenuItemIsEnabledKey = "CPMenuItemIsEnabledKey", + CPMenuItemIsHiddenKey = "CPMenuItemIsHiddenKey", + CPMenuItemTagKey = "CPMenuItemTagKey", + CPMenuItemStateKey = "CPMenuItemStateKey", + CPMenuItemImageKey = "CPMenuItemImageKey", + CPMenuItemAlternateImageKey = "CPMenuItemAlternateImageKey", + CPMenuItemSubmenuKey = "CPMenuItemSubmenuKey", + CPMenuItemMenuKey = "CPMenuItemMenuKey", + CPMenuItemKeyEquivalentKey = "CPMenuItemKeyEquivalentKey", + CPMenuItemKeyEquivalentModifierMaskKey = "CPMenuItemKeyEquivalentModifierMaskKey", + CPMenuItemIndentationLevelKey = "CPMenuItemIndentationLevelKey", + CPMenuItemRepresentedObjectKey = "CPMenuItemRepresentedObjectKey", + CPMenuItemViewKey = "CPMenuItemViewKey"; +{ +var the_class = objj_getClass("CPMenuItem") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPMenuItem\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPMenuItem__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPMenuItem").super_class }, "init"); + if (self) + { + _isSeparator = objj_msgSend(aCoder, "containsValueForKey:", CPMenuItemIsSeparatorKey) && objj_msgSend(aCoder, "decodeBoolForKey:", CPMenuItemIsSeparatorKey); + _title = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemTitleKey); + _target = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemTargetKey); + _action = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemActionKey); + _isEnabled = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemIsEnabledKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemIsEnabledKey)) : (YES); + _isHidden = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemIsHiddenKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemIsHiddenKey)) : (NO); + _tag = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemTagKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemTagKey)) : (0); + _state = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemStateKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemStateKey)) : (CPOffState); + _image = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemImageKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemImageKey)) : (nil); + _alternateImage = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemAlternateImageKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemAlternateImageKey)) : (nil); + _menu = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemMenuKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemMenuKey)) : (nil); + objj_msgSend(self, "setSubmenu:", objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemSubmenuKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemSubmenuKey)) : (nil)); + _keyEquivalent = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemKeyEquivalentKey) || ""; + _keyEquivalentModifierMask = objj_msgSend(aCoder, "decodeObjectForKey:", CPMenuItemKeyEquivalentModifierMaskKey) || 0; + objj_msgSend(self, "setIndentationLevel:", objj_msgSend(aCoder, "decodeIntForKey:", CPMenuItemIndentationLevelKey) || 0); + _representedObject = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemRepresentedObjectKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemRepresentedObjectKey)) : (nil); + _view = objj_msgSend(aCoder, "containsValueForKey:", (CPMenuItemViewKey)) ? objj_msgSend(aCoder, "decodeObjectForKey:", (CPMenuItemViewKey)) : (nil); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPMenuItem__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (_isSeparator) + objj_msgSend(aCoder, "encodeBool:forKey:", _isSeparator, CPMenuItemIsSeparatorKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _title, CPMenuItemTitleKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _target, CPMenuItemTargetKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _action, CPMenuItemActionKey); + if ((_isEnabled) !== (YES)) objj_msgSend(aCoder, "encodeObject:forKey:", (_isEnabled), (CPMenuItemIsEnabledKey));; + if ((_isHidden) !== (NO)) objj_msgSend(aCoder, "encodeObject:forKey:", (_isHidden), (CPMenuItemIsHiddenKey));; + if ((_tag) !== (0)) objj_msgSend(aCoder, "encodeObject:forKey:", (_tag), (CPMenuItemTagKey));; + if ((_state) !== (CPOffState)) objj_msgSend(aCoder, "encodeObject:forKey:", (_state), (CPMenuItemStateKey));; + if ((_image) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_image), (CPMenuItemImageKey));; + if ((_alternateImage) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_alternateImage), (CPMenuItemAlternateImageKey));; + if ((_submenu) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_submenu), (CPMenuItemSubmenuKey));; + if ((_menu) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_menu), (CPMenuItemMenuKey));; + if (_keyEquivalent && _keyEquivalent.length) + objj_msgSend(aCoder, "encodeObject:forKey:", _keyEquivalent, CPMenuItemKeyEquivalentKey); + if (_keyEquivalentModifierMask) + objj_msgSend(aCoder, "encodeObject:forKey:", _keyEquivalentModifierMask, CPMenuItemKeyEquivalentModifierMaskKey); + if (_indentationLevel > 0) + objj_msgSend(aCoder, "encodeInt:forKey:", _indentationLevel, CPMenuItemIndentationLevelKey); + if ((_representedObject) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_representedObject), (CPMenuItemRepresentedObjectKey));; + if ((_view) !== (nil)) objj_msgSend(aCoder, "encodeObject:forKey:", (_view), (CPMenuItemViewKey));; +} +},["void","CPCoder"])]); +} + +p;31;_CPBorderlessBridgeWindowView.jt;2765;@STATIC;1.0;i;15;_CPWindowView.jt;2726;objj_executeFile("_CPWindowView.j", YES); +var _CPToolbarViewBackgroundColor = nil; +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPBorderlessBridgeWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_toolbarBackgroundView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("setShowsResizeIndicator:"), function $_CPBorderlessBridgeWindowView__setShowsResizeIndicator_(self, _cmd, shouldShowResizeIndicator) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("tile"), function $_CPBorderlessBridgeWindowView__tile(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPBorderlessBridgeWindowView").super_class }, "tile"); + var theWindow = objj_msgSend(self, "window"), + bounds = objj_msgSend(self, "bounds"); + objj_msgSend(objj_msgSend(theWindow, "contentView"), "setFrame:", CGRectMake(0.0, objj_msgSend(self, "toolbarMaxY"), CGRectGetWidth(bounds), CGRectGetHeight(bounds) - objj_msgSend(self, "toolbarMaxY"))); + if (!objj_msgSend(objj_msgSend(theWindow, "toolbar"), "isVisible")) + { + objj_msgSend(_toolbarBackgroundView, "removeFromSuperview"); + _toolbarBackgroundView = nil; + return; + } + if (!_toolbarBackgroundView) + { + _toolbarBackgroundView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_toolbarBackgroundView, "setBackgroundColor:", objj_msgSend(objj_msgSend(self, "class"), "toolbarBackgroundColor")); + objj_msgSend(_toolbarBackgroundView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(self, "addSubview:positioned:relativeTo:", _toolbarBackgroundView, CPWindowBelow, nil); + } + var frame = CGRectMakeZero(), + toolbarOffset = objj_msgSend(self, "toolbarOffset"); + frame.origin = CGPointMake(toolbarOffset.width, toolbarOffset.height); + frame.size = objj_msgSend(_toolbarView, "frame").size; + objj_msgSend(_toolbarBackgroundView, "setFrame:", frame); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("toolbarBackgroundColor"), function $_CPBorderlessBridgeWindowView__toolbarBackgroundColor(self, _cmd) +{ with(self) +{ + if (!_CPToolbarViewBackgroundColor) + _CPToolbarViewBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(_CPBorderlessBridgeWindowView, "class")), "pathForResource:", "_CPToolbarView/_CPToolbarViewBackground.png"), CGSizeMake(1.0, 59.0))); + return _CPToolbarViewBackgroundColor; +} +},["CPColor"])]); +} + +p;25;_CPBorderlessWindowView.jt;228;@STATIC;1.0;i;15;_CPWindowView.jt;190;objj_executeFile("_CPWindowView.j", YES); +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPBorderlessWindowView"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;23;_CPDocModalWindowView.jt;2147;@STATIC;1.0;i;15;_CPWindowView.jt;2108; + + +objj_executeFile("_CPWindowView.j", YES); + +var _CPStandardWindowViewBodyBackgroundColor = nil; + +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPDocModalWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_bodyView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:styleMask:"), function $_CPDocModalWindowView__initWithFrame_styleMask_(self, _cmd, aFrame, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPDocModalWindowView").super_class }, "initWithFrame:styleMask:", aFrame, aStyleMask); + + if (self) + { + var theClass = objj_msgSend(self, "class"), + bounds = objj_msgSend(self, "bounds"); + + _bodyView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), CGRectGetHeight(bounds))); + + objj_msgSend(_bodyView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(_bodyView, "setBackgroundColor:", objj_msgSend(theClass, "bodyBackgroundColor")); + objj_msgSend(_bodyView, "setHitTests:", NO); + + objj_msgSend(self, "addSubview:", _bodyView); + } + + return self; +} +},["id","CPRect","unsigned"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPDocModalWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + return aFrameRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPDocModalWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + return aContentRect; +} +},["CGRect","CGRect"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("bodyBackgroundColor"), function $_CPDocModalWindowView__bodyBackgroundColor(self, _cmd) +{ with(self) +{ + if (!_CPStandardWindowViewBodyBackgroundColor) + _CPStandardWindowViewBodyBackgroundColor = objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.96, 0.9); + + return _CPStandardWindowViewBodyBackgroundColor; +} +},["CPColor"])]); +} + +p;18;_CPHUDWindowView.jt;9402;@STATIC;1.0;t;9383;var _CPHUDWindowViewBackgroundColor = nil, + CPHUDCloseButtonImage = nil; +var HUD_TITLEBAR_HEIGHT = 26.0; +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPHUDWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_toolbarView"), new objj_ivar("_titleField"), new objj_ivar("_closeButton")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPHUDWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + var contentRect = objj_msgSend(objj_msgSend(self, "class"), "contentRectForFrameRect:", aFrameRect); + if (objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "toolbar"), "isVisible")) + { + toolbarHeight = CGRectGetHeight(objj_msgSend(objj_msgSend(self, "toolbarView"), "frame")); + contentRect.origin.y += toolbarHeight; + contentRect.size.height -= toolbarHeight; + } + return contentRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPHUDWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + var frameRect = objj_msgSend(objj_msgSend(self, "class"), "frameRectForContentRect:", aContentRect); + if (objj_msgSend(objj_msgSend(objj_msgSend(self, "window"), "toolbar"), "isVisible")) + { + toolbarHeight = CGRectGetHeight(objj_msgSend(objj_msgSend(self, "toolbarView"), "frame")); + frameRect.origin.y -= toolbarHeight; + frameRect.size.height += toolbarHeight; + } + return frameRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("initWithFrame:styleMask:"), function $_CPHUDWindowView__initWithFrame_styleMask_(self, _cmd, aFrame, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPHUDWindowView").super_class }, "initWithFrame:styleMask:", aFrame, aStyleMask); + if (self) + { + var bounds = objj_msgSend(self, "bounds"); + objj_msgSend(self, "setBackgroundColor:", _CPHUDWindowViewBackgroundColor); + _titleField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_titleField, "setHitTests:", NO); + objj_msgSend(_titleField, "setFont:", objj_msgSend(CPFont, "systemFontOfSize:", 11.0)); + objj_msgSend(_titleField, "setTextColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_titleField, "setTextShadowColor:", objj_msgSend(CPColor, "blackColor")); + objj_msgSend(_titleField, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_titleField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_titleField, "setLineBreakMode:", CPLineBreakByTruncatingTail); + objj_msgSend(_titleField, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(_titleField, "setStringValue:", "Untitled"); + objj_msgSend(_titleField, "sizeToFit"); + objj_msgSend(_titleField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_titleField, "setStringValue:", ""); + objj_msgSend(_titleField, "setFrame:", CGRectMake(20.0, 3.0, CGRectGetWidth(objj_msgSend(self, "bounds")) - 40.0, CGRectGetHeight(objj_msgSend(_titleField, "frame")))); + objj_msgSend(self, "addSubview:", _titleField); + if (_styleMask & CPClosableWindowMask) + { + var closeSize = objj_msgSend(_CPHUDWindowViewCloseImage, "size"); + _closeButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(8.0, 5.0, closeSize.width, closeSize.height)); + objj_msgSend(_closeButton, "setBordered:", NO); + objj_msgSend(_closeButton, "setImage:", _CPHUDWindowViewCloseImage); + objj_msgSend(_closeButton, "setAlternateImage:", _CPHUDWindowViewCloseActiveImage); + objj_msgSend(self, "addSubview:", _closeButton); + } + objj_msgSend(self, "setResizeIndicatorOffset:", CGSizeMake(5.0, 5.0)); + } + return self; +} +},["id","CPRect","unsigned"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $_CPHUDWindowView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ + objj_msgSend(_closeButton, "setTarget:", objj_msgSend(self, "window")); + objj_msgSend(_closeButton, "setAction:", sel_getUid("performClose:")); +} +},["void"]), new objj_method(sel_getUid("setTitle:"), function $_CPHUDWindowView__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(_titleField, "setStringValue:", aTitle); +} +},["void","CPString"]), new objj_method(sel_getUid("toolbarView"), function $_CPHUDWindowView__toolbarView(self, _cmd) +{ with(self) +{ + return _toolbarView; +} +},["_CPToolbarView"]), new objj_method(sel_getUid("toolbarLabelColor"), function $_CPHUDWindowView__toolbarLabelColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPColor, "whiteColor"); +} +},["CPColor"]), new objj_method(sel_getUid("toolbarLabelShadowColor"), function $_CPHUDWindowView__toolbarLabelShadowColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPColor, "blackColor"); +} +},["CPColor"]), new objj_method(sel_getUid("toolbarOffset"), function $_CPHUDWindowView__toolbarOffset(self, _cmd) +{ with(self) +{ + return CGSizeMake(0.0, HUD_TITLEBAR_HEIGHT); +} +},["CGSize"]), new objj_method(sel_getUid("tile"), function $_CPHUDWindowView__tile(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPHUDWindowView").super_class }, "tile"); + var theWindow = objj_msgSend(self, "window"), + bounds = objj_msgSend(self, "bounds"), + width = CGRectGetWidth(bounds); + objj_msgSend(_titleField, "setFrame:", CGRectMake(20.0, 3.0, width - 40.0, CGRectGetHeight(objj_msgSend(_titleField, "frame")))); + var maxY = objj_msgSend(self, "toolbarMaxY"); + objj_msgSend(objj_msgSend(theWindow, "contentView"), "setFrameOrigin:", CGPointMake(0.0, maxY, width, CGRectGetHeight(bounds) - maxY)); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPHUDWindowView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPHUDWindowView, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", self); + _CPHUDWindowViewBackgroundColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground0.png"), CPSizeMake(7.0, 37.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground1.png"), CPSizeMake(1.0, 37.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground2.png"), CPSizeMake(7.0, 37.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground3.png"), CPSizeMake(7.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground4.png"), CPSizeMake(2.0, 2.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground5.png"), CPSizeMake(7.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground6.png"), CPSizeMake(7.0, 3.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground7.png"), CPSizeMake(1.0, 3.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/HUD/CPWindowHUDBackground8.png"), CPSizeMake(7.0, 3.0)) + ])); + _CPHUDWindowViewCloseImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "HUDTheme/WindowClose.png"), CPSizeMake(18.0, 18.0)); + _CPHUDWindowViewCloseActiveImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "HUDTheme/WindowCloseActive.png"), CPSizeMake(18.0, 18.0)); +} +},["void"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPHUDWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + var contentRect = CGRectMakeCopy(aFrameRect), + titleBarHeight = HUD_TITLEBAR_HEIGHT; + contentRect.origin.y += titleBarHeight; + contentRect.size.height -= titleBarHeight; + return contentRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPHUDWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + var frameRect = CGRectMakeCopy(aContentRect), + titleBarHeight = HUD_TITLEBAR_HEIGHT; + frameRect.origin.y -= titleBarHeight; + frameRect.size.height += titleBarHeight; + return frameRect; +} +},["CGRect","CGRect"])]); +} + +p;23;_CPStandardWindowView.jt;17553;@STATIC;1.0;i;15;_CPWindowView.jt;17513;objj_executeFile("_CPWindowView.j", YES); +var GRADIENT_HEIGHT = 41.0; +var _CPTexturedWindowHeadGradientColor = nil, + _CPTexturedWindowHeadSolidColor = nil; +{var the_class = objj_allocateClassPair(CPView, "_CPTexturedWindowHeadView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_gradientView"), new objj_ivar("_solidView"), new objj_ivar("_dividerView")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFrame:"), function $_CPTexturedWindowHeadView__initWithFrame_(self, _cmd, aFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPTexturedWindowHeadView").super_class }, "initWithFrame:", aFrame); + if (self) + { + var theClass = objj_msgSend(self, "class"), + bounds = objj_msgSend(self, "bounds"); + _gradientView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), GRADIENT_HEIGHT)); + objj_msgSend(_gradientView, "setBackgroundColor:", objj_msgSend(theClass, "gradientColor")); + objj_msgSend(self, "addSubview:", _gradientView); + _solidView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, GRADIENT_HEIGHT, CGRectGetWidth(bounds), CGRectGetHeight(bounds) - GRADIENT_HEIGHT)); + objj_msgSend(_solidView, "setBackgroundColor:", objj_msgSend(theClass, "solidColor")); + objj_msgSend(self, "addSubview:", _solidView); + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("resizeSubviewsWithOldSize:"), function $_CPTexturedWindowHeadView__resizeSubviewsWithOldSize_(self, _cmd, aSize) +{ with(self) +{ + var bounds = objj_msgSend(self, "bounds"); + objj_msgSend(_gradientView, "setFrameSize:", CGSizeMake(CGRectGetWidth(bounds), GRADIENT_HEIGHT)); + objj_msgSend(_solidView, "setFrameSize:", CGSizeMake(CGRectGetWidth(bounds), CGRectGetHeight(bounds) - GRADIENT_HEIGHT)); +} +},["void","CGSize"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("gradientColor"), function $_CPTexturedWindowHeadView__gradientColor(self, _cmd) +{ with(self) +{ + if (!_CPTexturedWindowHeadGradientColor) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(_CPWindowView, "class")); + _CPTexturedWindowHeadGradientColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPThreePartImage, "alloc"), "initWithImageSlices:isVertical:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardTop0.png"), CGSizeMake(6.0, 41.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardTop1.png"), CGSizeMake(1.0, 41.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardTop2.png"), CGSizeMake(6.0, 41.0)) + ], NO + )); + } + return _CPTexturedWindowHeadGradientColor; +} +},["CPColor"]), new objj_method(sel_getUid("solidColor"), function $_CPTexturedWindowHeadView__solidColor(self, _cmd) +{ with(self) +{ + if (!_CPTexturedWindowHeadSolidColor) + _CPTexturedWindowHeadSolidColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 195.0 / 255.0, 195.0 / 255.0, 195.0 / 255.0, 1.0); + return _CPTexturedWindowHeadSolidColor; +} +},["CPColor"])]); +} +var _CPStandardWindowViewBodyBackgroundColor = nil, + _CPStandardWindowViewDividerBackgroundColor = nil, + _CPStandardWindowViewTitleBackgroundColor = nil, + _CPStandardWindowViewCloseButtonImage = nil, + _CPStandardWindowViewCloseButtonHighlightedImage = nil, + _CPStandardWindowViewCloseButtonUnsavedImage = nil, + _CPStandardWindowViewCloseButtonUnsavedHighlightedImage = nil, + _CPStandardWindowViewMinimizeButtonImage = nil, + _CPStandardWindowViewMinimizeButtonHighlightedImage = nil; +var STANDARD_GRADIENT_HEIGHT = 41.0; + STANDARD_TITLEBAR_HEIGHT = 25.0; +{var the_class = objj_allocateClassPair(_CPWindowView, "_CPStandardWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_headView"), new objj_ivar("_dividerView"), new objj_ivar("_bodyView"), new objj_ivar("_toolbarView"), new objj_ivar("_titleField"), new objj_ivar("_closeButton"), new objj_ivar("_minimizeButton"), new objj_ivar("_isDocumentEdited")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPStandardWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + var contentRect = objj_msgSend(objj_msgSend(self, "class"), "contentRectForFrameRect:", aFrameRect), + theToolbar = objj_msgSend(objj_msgSend(self, "window"), "toolbar"); + if (objj_msgSend(theToolbar, "isVisible")) + { + toolbarHeight = CGRectGetHeight(objj_msgSend(objj_msgSend(theToolbar, "_toolbarView"), "frame")); + contentRect.origin.y += toolbarHeight; + contentRect.size.height -= toolbarHeight; + } + return contentRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPStandardWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + var frameRect = objj_msgSend(objj_msgSend(self, "class"), "frameRectForContentRect:", aContentRect), + theToolbar = objj_msgSend(objj_msgSend(self, "window"), "toolbar"); + if (objj_msgSend(theToolbar, "isVisible")) + { + toolbarHeight = CGRectGetHeight(objj_msgSend(objj_msgSend(theToolbar, "_toolbarView"), "frame")); + frameRect.origin.y -= toolbarHeight; + frameRect.size.height += toolbarHeight; + } + return frameRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("initWithFrame:styleMask:"), function $_CPStandardWindowView__initWithFrame_styleMask_(self, _cmd, aFrame, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPStandardWindowView").super_class }, "initWithFrame:styleMask:", aFrame, aStyleMask); + if (self) + { + var theClass = objj_msgSend(self, "class"), + bounds = objj_msgSend(self, "bounds"); + _headView = objj_msgSend(objj_msgSend(_CPTexturedWindowHeadView, "alloc"), "initWithFrame:", CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), objj_msgSend(objj_msgSend(self, "class"), "titleBarHeight"))); + objj_msgSend(_headView, "setAutoresizingMask:", CPViewWidthSizable);; + objj_msgSend(_headView, "setHitTests:", NO); + objj_msgSend(self, "addSubview:", _headView); + _dividerView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, CGRectGetMaxY(objj_msgSend(_headView, "frame")), CGRectGetWidth(bounds), 1.0)); + objj_msgSend(_dividerView, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_dividerView, "setBackgroundColor:", objj_msgSend(theClass, "dividerBackgroundColor")); + objj_msgSend(_dividerView, "setHitTests:", NO); + objj_msgSend(self, "addSubview:", _dividerView); + var y = CGRectGetMaxY(objj_msgSend(_dividerView, "frame")); + _bodyView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(0.0, y, CGRectGetWidth(bounds), CGRectGetHeight(bounds) - y)); + objj_msgSend(_bodyView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(_bodyView, "setBackgroundColor:", objj_msgSend(theClass, "bodyBackgroundColor")); + objj_msgSend(_bodyView, "setHitTests:", NO); + objj_msgSend(self, "addSubview:", _bodyView); + objj_msgSend(self, "setResizeIndicatorOffset:", CGSizeMake(2.0, 2.0)); + _titleField = objj_msgSend(objj_msgSend(CPTextField, "alloc"), "initWithFrame:", CGRectMakeZero()); + objj_msgSend(_titleField, "setFont:", objj_msgSend(CPFont, "boldSystemFontOfSize:", 12.0)); + objj_msgSend(_titleField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_titleField, "setLineBreakMode:", CPLineBreakByTruncatingTail); + objj_msgSend(_titleField, "setAlignment:", CPCenterTextAlignment); + objj_msgSend(_titleField, "setTextShadowColor:", objj_msgSend(CPColor, "whiteColor")); + objj_msgSend(_titleField, "setTextShadowOffset:", CGSizeMake(0.0, 1.0)); + objj_msgSend(_titleField, "setStringValue:", "Untitled"); + objj_msgSend(_titleField, "sizeToFit"); + objj_msgSend(_titleField, "setAutoresizingMask:", CPViewWidthSizable); + objj_msgSend(_titleField, "setStringValue:", ""); + objj_msgSend(self, "addSubview:", _titleField); + if (_styleMask & CPClosableWindowMask) + { + if (!_CPStandardWindowViewCloseButtonImage) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")); + _CPStandardWindowViewCloseButtonImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardCloseButton.png"), CGSizeMake(16.0, 16.0)); + _CPStandardWindowViewCloseButtonHighlightedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png"), CGSizeMake(16.0, 16.0)); + _CPStandardWindowViewCloseButtonUnsavedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png"), CGSizeMake(16.0, 16.0)); + _CPStandardWindowViewCloseButtonUnsavedHighlightedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png"), CGSizeMake(16.0, 16.0)); + } + _closeButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(8.0, 7.0, 16.0, 16.0)); + objj_msgSend(_closeButton, "setBordered:", NO); + objj_msgSend(self, "_updateCloseButton"); + objj_msgSend(self, "addSubview:", _closeButton); + } + if (_styleMask & CPMiniaturizableWindowMask && !objj_msgSend(CPPlatform, "isBrowser")) + { + if (!_CPStandardWindowViewMinimizeButtonImage) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")); + _CPStandardWindowViewMinimizeButtonImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardMinimizeButton.png"), CGSizeMake(16.0, 16.0)); + _CPStandardWindowViewMinimizeButtonHighlightedImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png"), CGSizeMake(16.0, 16.0)); + } + _minimizeButton = objj_msgSend(objj_msgSend(CPButton, "alloc"), "initWithFrame:", CGRectMake(27.0, 7.0, 16.0, 16.0)); + objj_msgSend(_minimizeButton, "setBordered:", NO); + objj_msgSend(_minimizeButton, "setImage:", _CPStandardWindowViewMinimizeButtonImage); + objj_msgSend(_minimizeButton, "setAlternateImage:", _CPStandardWindowViewMinimizeButtonHighlightedImage); + objj_msgSend(self, "addSubview:", _minimizeButton); + } + objj_msgSend(self, "tile"); + } + return self; +} +},["id","CPRect","unsigned"]), new objj_method(sel_getUid("viewDidMoveToWindow"), function $_CPStandardWindowView__viewDidMoveToWindow(self, _cmd) +{ with(self) +{ + objj_msgSend(_closeButton, "setTarget:", objj_msgSend(self, "window")); + objj_msgSend(_closeButton, "setAction:", sel_getUid("performClose:")); + objj_msgSend(_minimizeButton, "setTarget:", objj_msgSend(self, "window")); + objj_msgSend(_minimizeButton, "setAction:", sel_getUid("performMiniaturize:")); +} +},["void"]), new objj_method(sel_getUid("toolbarOffset"), function $_CPStandardWindowView__toolbarOffset(self, _cmd) +{ with(self) +{ + return CGSizeMake(0.0, objj_msgSend(objj_msgSend(self, "class"), "titleBarHeight")); +} +},["CGSize"]), new objj_method(sel_getUid("tile"), function $_CPStandardWindowView__tile(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPStandardWindowView").super_class }, "tile"); + var theWindow = objj_msgSend(self, "window"), + bounds = objj_msgSend(self, "bounds"), + width = CGRectGetWidth(bounds); + objj_msgSend(_headView, "setFrameSize:", CGSizeMake(width, objj_msgSend(self, "toolbarMaxY"))); + objj_msgSend(_dividerView, "setFrame:", CGRectMake(0.0, CGRectGetMaxY(objj_msgSend(_headView, "frame")), width, 1.0)); + var dividerMaxY = CGRectGetMaxY(objj_msgSend(_dividerView, "frame")); + objj_msgSend(_bodyView, "setFrame:", CGRectMake(0.0, dividerMaxY, width, CGRectGetHeight(bounds) - dividerMaxY)); + var leftOffset = 8; + if (_closeButton) + leftOffset += 19.0; + if (_minimizeButton) + leftOffset += 19.0; + objj_msgSend(_titleField, "setFrame:", CGRectMake(leftOffset, 5.0, width - leftOffset*2.0, CGRectGetHeight(objj_msgSend(_titleField, "frame")))); + objj_msgSend(objj_msgSend(theWindow, "contentView"), "setFrameOrigin:", CGPointMake(0.0, CGRectGetMaxY(objj_msgSend(_dividerView, "frame")))); +} +},["void"]), new objj_method(sel_getUid("_updateCloseButton"), function $_CPStandardWindowView___updateCloseButton(self, _cmd) +{ with(self) +{ + if (_isDocumentEdited) + { + objj_msgSend(_closeButton, "setImage:", _CPStandardWindowViewCloseButtonUnsavedImage); + objj_msgSend(_closeButton, "setAlternateImage:", _CPStandardWindowViewCloseButtonUnsavedHighlightedImage); + } + else + { + objj_msgSend(_closeButton, "setImage:", _CPStandardWindowViewCloseButtonImage); + objj_msgSend(_closeButton, "setAlternateImage:", _CPStandardWindowViewCloseButtonHighlightedImage); + } +} +},["void"]), new objj_method(sel_getUid("setDocumentEdited:"), function $_CPStandardWindowView__setDocumentEdited_(self, _cmd, isEdited) +{ with(self) +{ + _isDocumentEdited = isEdited; + objj_msgSend(self, "_updateCloseButton"); +} +},["void","BOOL"]), new objj_method(sel_getUid("setTitle:"), function $_CPStandardWindowView__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + objj_msgSend(_titleField, "setStringValue:", aTitle); +} +},["void","CPString"]), new objj_method(sel_getUid("mouseDown:"), function $_CPStandardWindowView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + if (CGRectContainsPoint(objj_msgSend(_headView, "frame"), objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil))) + return objj_msgSend(self, "trackMoveWithEvent:", anEvent); + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPStandardWindowView").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("bodyBackgroundColor"), function $_CPStandardWindowView__bodyBackgroundColor(self, _cmd) +{ with(self) +{ + if (!_CPStandardWindowViewBodyBackgroundColor) + _CPStandardWindowViewBodyBackgroundColor = objj_msgSend(CPColor, "colorWithWhite:alpha:", 0.96, 1.0); + return _CPStandardWindowViewBodyBackgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("dividerBackgroundColor"), function $_CPStandardWindowView__dividerBackgroundColor(self, _cmd) +{ with(self) +{ + if (!_CPStandardWindowViewDividerBackgroundColor) + _CPStandardWindowViewDividerBackgroundColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 125.0 / 255.0, 125.0 / 255.0, 125.0 / 255.0, 1.0); + return _CPStandardWindowViewDividerBackgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("titleColor"), function $_CPStandardWindowView__titleColor(self, _cmd) +{ with(self) +{ + if (!_CPStandardWindowViewTitleBackgroundColor) + _CPStandardWindowViewTitleBackgroundColor = objj_msgSend(CPColor, "colorWithCalibratedRed:green:blue:alpha:", 44.0 / 255.0, 44.0 / 255.0, 44.0 / 255.0, 1.0); + return _CPStandardWindowViewTitleBackgroundColor; +} +},["CPColor"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPStandardWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + var contentRect = CGRectMakeCopy(aFrameRect), + titleBarHeight = objj_msgSend(self, "titleBarHeight") + 1.0; + contentRect.origin.y += titleBarHeight; + contentRect.size.height -= titleBarHeight; + return contentRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPStandardWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + var frameRect = CGRectMakeCopy(aContentRect), + titleBarHeight = objj_msgSend(self, "titleBarHeight") + 1.0; + frameRect.origin.y -= titleBarHeight; + frameRect.size.height += titleBarHeight; + return frameRect; +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("titleBarHeight"), function $_CPStandardWindowView__titleBarHeight(self, _cmd) +{ with(self) +{ + return STANDARD_TITLEBAR_HEIGHT; +} +},["float"])]); +} + +p;15;_CPWindowView.jt;13278;@STATIC;1.0;i;8;CPView.ji;13;CPImageView.jt;13228;objj_executeFile("CPView.j", YES); +objj_executeFile("CPImageView.j", YES); +var _CPWindowViewResizeIndicatorImage = nil; +{var the_class = objj_allocateClassPair(CPView, "_CPWindowView"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_styleMask"), new objj_ivar("_resizeIndicator"), new objj_ivar("_resizeIndicatorOffset"), new objj_ivar("_toolbarView"), new objj_ivar("_toolbarOffset"), new objj_ivar("_resizeFrame"), new objj_ivar("_mouseDraggedPoint"), new objj_ivar("_cachedScreenFrame")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "contentRectForFrameRect:", aFrameRect); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "frameRectForContentRect:", aContentRect); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("initWithFrame:styleMask:"), function $_CPWindowView__initWithFrame_styleMask_(self, _cmd, aFrame, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowView").super_class }, "initWithFrame:", aFrame); + if (self) + { + _styleMask = aStyleMask; + _resizeIndicatorOffset = CGSizeMakeZero(); + _toolbarOffset = CGSizeMakeZero(); + } + return self; +} +},["id","CPRect","unsigned"]), new objj_method(sel_getUid("setDocumentEdited:"), function $_CPWindowView__setDocumentEdited_(self, _cmd, isEdited) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("setTitle:"), function $_CPWindowView__setTitle_(self, _cmd, aTitle) +{ with(self) +{ +} +},["void","CPString"]), new objj_method(sel_getUid("acceptsFirstMouse:"), function $_CPWindowView__acceptsFirstMouse_(self, _cmd, anEvent) +{ with(self) +{ + return YES; +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("mouseDown:"), function $_CPWindowView__mouseDown_(self, _cmd, anEvent) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"); + if ((_styleMask & CPResizableWindowMask) && _resizeIndicator) + { + var frame = objj_msgSend(_resizeIndicator, "frame"); + if (CGRectContainsPoint(frame, objj_msgSend(self, "convertPoint:fromView:", objj_msgSend(anEvent, "locationInWindow"), nil))) + return objj_msgSend(self, "trackResizeWithEvent:", anEvent); + } + if (objj_msgSend(theWindow, "isMovableByWindowBackground")) + objj_msgSend(self, "trackMoveWithEvent:", anEvent); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowView").super_class }, "mouseDown:", anEvent); +} +},["void","CPEvent"]), new objj_method(sel_getUid("trackResizeWithEvent:"), function $_CPWindowView__trackResizeWithEvent_(self, _cmd, anEvent) +{ with(self) +{ + var location = objj_msgSend(anEvent, "locationInWindow"), + type = objj_msgSend(anEvent, "type"); + if (type === CPLeftMouseUp) + return; + var theWindow = objj_msgSend(self, "window"); + if (type === CPLeftMouseDown) + { + var frame = objj_msgSend(theWindow, "frame"); + _resizeFrame = CGRectMake(location.x, location.y, CGRectGetWidth(frame), CGRectGetHeight(frame)); + } + else if (type === CPLeftMouseDragged) + { + var newSize = CGSizeMake(CGRectGetWidth(_resizeFrame) + location.x - CGRectGetMinX(_resizeFrame), CGRectGetHeight(_resizeFrame) + location.y - CGRectGetMinY(_resizeFrame)); + if (theWindow._isSheet && theWindow._parentView && (theWindow._frame.size.width !== newSize.width)) + objj_msgSend(theWindow._parentView, "_setAttachedSheetFrameOrigin"); + objj_msgSend(theWindow, "setFrameSize:", newSize); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackResizeWithEvent:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("_pointWithinScreenFrame:"), function $_CPWindowView___pointWithinScreenFrame_(self, _cmd, aPoint) +{ with(self) +{ + if (!objj_msgSend(CPPlatform, "isBrowser")) + return aPoint; + var visibleFrame = _cachedScreenFrame; + if (!visibleFrame) + visibleFrame = objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "visibleFrame"); + var minPointY = 0; + if(objj_msgSend(CPMenu, "menuBarVisible")) + minPointY = objj_msgSend(objj_msgSend(CPApp, "mainMenu"), "menuBarHeight"); + var restrictedPoint = CGPointMake(0, 0); + restrictedPoint.x = MIN(MAX(aPoint.x, -_frame.size.width + 4.0), CGRectGetMaxX(visibleFrame) - 4.0); + restrictedPoint.y = MIN(MAX(aPoint.y, minPointY), CGRectGetMaxY(visibleFrame) - 8.0); + return restrictedPoint; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("trackMoveWithEvent:"), function $_CPWindowView__trackMoveWithEvent_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"); + if (type === CPLeftMouseUp) + { + _cachedScreenFrame = nil; + return; + } + else if (type === CPLeftMouseDown) + { + _mouseDraggedPoint = objj_msgSend(objj_msgSend(self, "window"), "convertBaseToGlobal:", objj_msgSend(anEvent, "locationInWindow")); + _cachedScreenFrame = objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "visibleFrame"); + } + else if (type === CPLeftMouseDragged) + { + var theWindow = objj_msgSend(self, "window"), + frame = objj_msgSend(theWindow, "frame"), + location = objj_msgSend(theWindow, "convertBaseToGlobal:", objj_msgSend(anEvent, "locationInWindow")), + origin = objj_msgSend(self, "_pointWithinScreenFrame:", CGPointMake((frame.origin.x) + (location.x - _mouseDraggedPoint.x), + (frame.origin.y) + (location.y - _mouseDraggedPoint.y))); + objj_msgSend(theWindow, "setFrameOrigin:", origin); + _mouseDraggedPoint = objj_msgSend(self, "_pointWithinScreenFrame:", location); + } + objj_msgSend(CPApp, "setTarget:selector:forNextEventMatchingMask:untilDate:inMode:dequeue:", self, sel_getUid("trackMoveWithEvent:"), CPLeftMouseDraggedMask | CPLeftMouseUpMask, nil, nil, YES); +} +},["void","CPEvent"]), new objj_method(sel_getUid("setShowsResizeIndicator:"), function $_CPWindowView__setShowsResizeIndicator_(self, _cmd, shouldShowResizeIndicator) +{ with(self) +{ + if (shouldShowResizeIndicator) + { + var size = objj_msgSend(_CPWindowViewResizeIndicatorImage, "size"), + boundsSize = objj_msgSend(self, "frame").size; + _resizeIndicator = objj_msgSend(objj_msgSend(CPImageView, "alloc"), "initWithFrame:", CGRectMake(boundsSize.width - size.width - _resizeIndicatorOffset.width, boundsSize.height - size.height - _resizeIndicatorOffset.height, size.width, size.height)); + objj_msgSend(_resizeIndicator, "setImage:", _CPWindowViewResizeIndicatorImage); + objj_msgSend(_resizeIndicator, "setAutoresizingMask:", CPViewMinXMargin | CPViewMinYMargin); + objj_msgSend(self, "addSubview:", _resizeIndicator); + } + else + { + objj_msgSend(_resizeIndicator, "removeFromSuperview"); + _resizeIndicator = nil; + } +} +},["void","BOOL"]), new objj_method(sel_getUid("showsResizeIndicator"), function $_CPWindowView__showsResizeIndicator(self, _cmd) +{ with(self) +{ + return _resizeIndicator !== nil; +} +},["BOOL"]), new objj_method(sel_getUid("setResizeIndicatorOffset:"), function $_CPWindowView__setResizeIndicatorOffset_(self, _cmd, anOffset) +{ with(self) +{ + if (CGSizeEqualToSize(_resizeIndicatorOffset, anOffset)) + return; + _resizeIndicatorOffset = anOffset; + if (!_resizeIndicator) + return; + var size = objj_msgSend(_resizeIndicator, "frame").size, + boundsSize = objj_msgSend(self, "frame").size; + objj_msgSend(_resizeIndicator, "setFrameOrigin:", CGPointMake(boundsSize.width - size.width - anOffset.width, boundsSize.height - size.height - anOffset.height)); +} +},["void","CGSize"]), new objj_method(sel_getUid("resizeIndicatorOffset"), function $_CPWindowView__resizeIndicatorOffset(self, _cmd) +{ with(self) +{ + return _resizeIndicatorOffset; +} +},["CGSize"]), new objj_method(sel_getUid("windowDidChangeDocumentEdited"), function $_CPWindowView__windowDidChangeDocumentEdited(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("windowDidChangeDocumentSaving"), function $_CPWindowView__windowDidChangeDocumentSaving(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("showsToolbar"), function $_CPWindowView__showsToolbar(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("toolbarOffset"), function $_CPWindowView__toolbarOffset(self, _cmd) +{ with(self) +{ + return _toolbarOffset; +} +},["CGSize"]), new objj_method(sel_getUid("toolbarLabelColor"), function $_CPWindowView__toolbarLabelColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPColor, "blackColor"); +} +},["CPColor"]), new objj_method(sel_getUid("toolbarMaxY"), function $_CPWindowView__toolbarMaxY(self, _cmd) +{ with(self) +{ + if (!_toolbarView || objj_msgSend(_toolbarView, "isHidden")) + return objj_msgSend(self, "toolbarOffset").height; + return CGRectGetMaxY(objj_msgSend(_toolbarView, "frame")); +} +},["float"]), new objj_method(sel_getUid("toolbarView"), function $_CPWindowView__toolbarView(self, _cmd) +{ with(self) +{ + return _toolbarView; +} +},["_CPToolbarView"]), new objj_method(sel_getUid("tile"), function $_CPWindowView__tile(self, _cmd) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"), + bounds = objj_msgSend(self, "bounds"), + width = CGRectGetWidth(bounds); + if (objj_msgSend(objj_msgSend(theWindow, "toolbar"), "isVisible")) + { + var toolbarView = objj_msgSend(self, "toolbarView"), + toolbarOffset = objj_msgSend(self, "toolbarOffset"); + objj_msgSend(toolbarView, "setFrame:", CGRectMake(toolbarOffset.width, toolbarOffset.height, width, CGRectGetHeight(objj_msgSend(toolbarView, "frame")))); + } + if (objj_msgSend(self, "showsResizeIndicator")) + { + var size = objj_msgSend(_resizeIndicator, "frame").size, + boundsSize = objj_msgSend(self, "bounds").size; + objj_msgSend(_resizeIndicator, "setFrameOrigin:", CGPointMake(boundsSize.width - size.width - _resizeIndicatorOffset.width, boundsSize.height - size.height - _resizeIndicatorOffset.height)); + } +} +},["void"]), new objj_method(sel_getUid("noteToolbarChanged"), function $_CPWindowView__noteToolbarChanged(self, _cmd) +{ with(self) +{ + var theWindow = objj_msgSend(self, "window"), + toolbar = objj_msgSend(theWindow, "toolbar"), + toolbarView = objj_msgSend(toolbar, "_toolbarView"); + if (_toolbarView !== toolbarView) + { + objj_msgSend(_toolbarView, "removeFromSuperview"); + if (toolbarView) + { + objj_msgSend(toolbarView, "removeFromSuperview"); + objj_msgSend(toolbarView, "FIXME_setIsHUD:", _styleMask & CPHUDBackgroundWindowMask); + objj_msgSend(self, "addSubview:", toolbarView); + } + _toolbarView = toolbarView; + } + objj_msgSend(toolbarView, "setHidden:", !objj_msgSend(self, "showsToolbar") || !objj_msgSend(toolbar, "isVisible")); + if (theWindow) + { + var contentRect = objj_msgSend(self, "convertRect:toView:", objj_msgSend(objj_msgSend(theWindow, "contentView"), "frame"), nil); + contentRect.origin = objj_msgSend(theWindow, "convertBaseToGlobal:", contentRect.origin); + objj_msgSend(self, "setAutoresizesSubviews:", NO); + objj_msgSend(theWindow, "setFrame:", objj_msgSend(theWindow, "frameRectForContentRect:", contentRect)); + objj_msgSend(self, "setAutoresizesSubviews:", YES); + } + objj_msgSend(self, "tile"); +} +},["void"]), new objj_method(sel_getUid("didAddSubview:"), function $_CPWindowView__didAddSubview_(self, _cmd, aView) +{ with(self) +{ + if (!_resizeIndicator || aView === _resizeIndicator) + return; + objj_msgSend(self, "addSubview:", _resizeIndicator); +} +},["void","CPView"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $_CPWindowView__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(_CPWindowView, "class")) + return; + _CPWindowViewResizeIndicatorImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")), "pathForResource:", "_CPWindowView/_CPWindowViewResizeIndicator.png"), CGSizeMake(12.0, 12.0)); +} +},["void"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $_CPWindowView__contentRectForFrameRect_(self, _cmd, aFrameRect) +{ with(self) +{ + return CGRectMakeCopy(aFrameRect); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $_CPWindowView__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + return CGRectMakeCopy(aContentRect); +} +},["CGRect","CGRect"])]); +} + +p;10;CPWindow.jt;84873;@STATIC;1.0;I;25;Foundation/CPCountedSet.jI;33;Foundation/CPNotificationCenter.jI;26;Foundation/CPUndoManager.ji;12;CGGeometry.ji;13;CPAnimation.ji;13;CPResponder.ji;10;CPScreen.ji;18;CPPlatformWindow.ji;15;_CPWindowView.ji;23;_CPStandardWindowView.ji;23;_CPDocModalWindowView.ji;18;_CPHUDWindowView.ji;25;_CPBorderlessWindowView.ji;31;_CPBorderlessBridgeWindowView.ji;14;CPDragServer.ji;8;CPView.jt;84467;objj_executeFile("Foundation/CPCountedSet.j", NO); +objj_executeFile("Foundation/CPNotificationCenter.j", NO); +objj_executeFile("Foundation/CPUndoManager.j", NO); +objj_executeFile("CGGeometry.j", YES); +objj_executeFile("CPAnimation.j", YES); +objj_executeFile("CPResponder.j", YES); +objj_executeFile("CPScreen.j", YES); +objj_executeFile("CPPlatformWindow.j", YES); +CPBorderlessWindowMask = 0; +CPTitledWindowMask = 1 << 0; +CPClosableWindowMask = 1 << 1; +CPMiniaturizableWindowMask = 1 << 2; +CPResizableWindowMask = 1 << 3; +CPTexturedBackgroundWindowMask = 1 << 8; +CPBorderlessBridgeWindowMask = 1 << 20; +CPHUDBackgroundWindowMask = 1 << 21; +CPWindowNotSizable = 0; +CPWindowMinXMargin = 1; +CPWindowWidthSizable = 2; +CPWindowMaxXMargin = 4; +CPWindowMinYMargin = 8; +CPWindowHeightSizable = 16; +CPWindowMaxYMargin = 32; +CPBackgroundWindowLevel = -1; +CPNormalWindowLevel = 0; +CPFloatingWindowLevel = 3; +CPSubmenuWindowLevel = 3; +CPTornOffMenuWindowLevel = 3; +CPMainMenuWindowLevel = 24; +CPStatusWindowLevel = 25; +CPModalPanelWindowLevel = 8; +CPPopUpMenuWindowLevel = 101; +CPDraggingWindowLevel = 500; +CPScreenSaverWindowLevel = 1000; +CPWindowOut = 0; +CPWindowAbove = 1; +CPWindowBelow = 2; +CPWindowWillCloseNotification = "CPWindowWillCloseNotification"; +CPWindowDidBecomeMainNotification = "CPWindowDidBecomeMainNotification"; +CPWindowDidResignMainNotification = "CPWindowDidResignMainNotification"; +CPWindowDidBecomeKeyNotification = "CPWindowDidBecomeKeyNotification"; +CPWindowDidResignKeyNotification = "CPWindowDidResignKeyNotification"; +CPWindowDidResizeNotification = "CPWindowDidResizeNotification"; +CPWindowDidMoveNotification = "CPWindowDidMoveNotification"; +CPWindowWillBeginSheetNotification = "CPWindowWillBeginSheetNotification"; +CPWindowDidEndSheetNotification = "CPWindowDidEndSheetNotification"; +CPWindowDidMiniaturizeNotification = "CPWindowDidMiniaturizeNotification"; +CPWindowWillMiniaturizeNotification = "CPWindowWillMiniaturizeNotification"; +CPWindowDidDeminiaturizeNotification = "CPWindowDidDeminiaturizeNotification"; +CPWindowShadowStyleStandard = 0; +CPWindowShadowStyleMenu = 1; +CPWindowShadowStylePanel = 2; +var SHADOW_MARGIN_LEFT = 20.0, + SHADOW_MARGIN_RIGHT = 19.0, + SHADOW_MARGIN_TOP = 10.0, + SHADOW_MARGIN_BOTTOM = 10.0, + SHADOW_DISTANCE = 5.0, + _CPWindowShadowColor = nil; +var CPWindowSaveImage = nil, + CPWindowSavingImage = nil; +var CPWindowResizeTime = 0.2; +{var the_class = objj_allocateClassPair(CPResponder, "CPWindow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_platformWindow"), new objj_ivar("_windowNumber"), new objj_ivar("_styleMask"), new objj_ivar("_frame"), new objj_ivar("_level"), new objj_ivar("_isVisible"), new objj_ivar("_isMiniaturized"), new objj_ivar("_isAnimating"), new objj_ivar("_hasShadow"), new objj_ivar("_isMovableByWindowBackground"), new objj_ivar("_shadowStyle"), new objj_ivar("_showsResizeIndicator"), new objj_ivar("_isDocumentEdited"), new objj_ivar("_isDocumentSaving"), new objj_ivar("_shadowView"), new objj_ivar("_windowView"), new objj_ivar("_contentView"), new objj_ivar("_toolbarView"), new objj_ivar("_mouseEnteredStack"), new objj_ivar("_leftMouseDownView"), new objj_ivar("_rightMouseDownView"), new objj_ivar("_toolbar"), new objj_ivar("_firstResponder"), new objj_ivar("_initialFirstResponder"), new objj_ivar("_delegate"), new objj_ivar("_title"), new objj_ivar("_acceptsMouseMovedEvents"), new objj_ivar("_ignoresMouseEvents"), new objj_ivar("_windowController"), new objj_ivar("_minSize"), new objj_ivar("_maxSize"), new objj_ivar("_undoManager"), new objj_ivar("_representedURL"), new objj_ivar("_registeredDraggedTypes"), new objj_ivar("_registeredDraggedTypesArray"), new objj_ivar("_inclusiveRegisteredDraggedTypes"), new objj_ivar("_defaultButton"), new objj_ivar("_defaultButtonEnabled"), new objj_ivar("_autorecalculatesKeyViewLoop"), new objj_ivar("_keyViewLoopIsDirty"), new objj_ivar("_sharesChromeWithPlatformWindow"), new objj_ivar("_autoresizingMask"), new objj_ivar("_delegateRespondsToWindowWillReturnUndoManagerSelector"), new objj_ivar("_isFullPlatformWindow"), new objj_ivar("_fullPlatformWindowSession"), new objj_ivar("_sheetContext"), new objj_ivar("_parentView"), new objj_ivar("_isSheet"), new objj_ivar("_frameAnimation")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPWindow__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithContentRect:styleMask:", { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }, CPTitledWindowMask); +} +},["id"]), new objj_method(sel_getUid("initWithContentRect:styleMask:"), function $CPWindow__initWithContentRect_styleMask_(self, _cmd, aContentRect, aStyleMask) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWindow").super_class }, "init"); + if (self) + { + var windowViewClass = objj_msgSend(objj_msgSend(self, "class"), "_windowViewClassForStyleMask:", aStyleMask); + _frame = objj_msgSend(windowViewClass, "frameRectForContentRect:", aContentRect); + objj_msgSend(self, "_setSharesChromeWithPlatformWindow:", !objj_msgSend(CPPlatform, "isBrowser")); + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(self, "setPlatformWindow:", objj_msgSend(CPPlatformWindow, "primaryPlatformWindow")); + else + { + if ((aStyleMask & CPBorderlessBridgeWindowMask) && aContentRect.size.width === 0 && aContentRect.size.height === 0) + { + var visibleFrame = objj_msgSend(objj_msgSend(objj_msgSend(CPScreen, "alloc"), "init"), "visibleFrame"); + _frame.size.height = MIN(768.0, visibleFrame.size.height); + _frame.size.width = MIN(1024.0, visibleFrame.size.width); + _frame.origin.x = (visibleFrame.size.width - _frame.size.width) / 2; + _frame.origin.y = (visibleFrame.size.height - _frame.size.height) / 2; + } + objj_msgSend(self, "setPlatformWindow:", objj_msgSend(objj_msgSend(CPPlatformWindow, "alloc"), "initWithContentRect:", _frame)); + objj_msgSend(self, "platformWindow")._only = self; + } + _isFullPlatformWindow = NO; + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; + _isSheet = NO; + _windowNumber = objj_msgSend(CPApp._windows, "count"); + CPApp._windows[_windowNumber] = self; + _styleMask = aStyleMask; + objj_msgSend(self, "setLevel:", CPNormalWindowLevel); + _minSize = CGSizeMake(0.0, 0.0); + _maxSize = CGSizeMake(1000000.0, 1000000.0); + _windowView = objj_msgSend(objj_msgSend(windowViewClass, "alloc"), "initWithFrame:styleMask:", CGRectMake(0.0, 0.0, CGRectGetWidth(_frame), CGRectGetHeight(_frame)), aStyleMask); + objj_msgSend(_windowView, "_setWindow:", self); + objj_msgSend(_windowView, "setNextResponder:", self); + objj_msgSend(self, "setMovableByWindowBackground:", aStyleMask & CPHUDBackgroundWindowMask); + objj_msgSend(self, "setContentView:", objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMakeZero())); + _firstResponder = self; + objj_msgSend(self, "setNextResponder:", CPApp); + objj_msgSend(self, "setHasShadow:", aStyleMask !== CPBorderlessWindowMask); + if (aStyleMask & CPBorderlessBridgeWindowMask) + objj_msgSend(self, "setFullPlatformWindow:", YES); + _defaultButtonEnabled = YES; + _keyViewLoopIsDirty = YES; + objj_msgSend(self, "setShowsResizeIndicator:", _styleMask & CPResizableWindowMask); + } + return self; +} +},["id","CGRect","unsignedint"]), new objj_method(sel_getUid("platformWindow"), function $CPWindow__platformWindow(self, _cmd) +{ with(self) +{ + return _platformWindow; +} +},["CPPlatformWindow"]), new objj_method(sel_getUid("setPlatformWindow:"), function $CPWindow__setPlatformWindow_(self, _cmd, aPlatformWindow) +{ with(self) +{ + _platformWindow = aPlatformWindow; +} +},["void","CPPlatformWindow"]), new objj_method(sel_getUid("awakeFromCib"), function $CPWindow__awakeFromCib(self, _cmd) +{ with(self) +{ + _keyViewLoopIsDirty = !objj_msgSend(self, "_hasKeyViewLoop"); +} +},["void"]), new objj_method(sel_getUid("_setWindowView:"), function $CPWindow___setWindowView_(self, _cmd, aWindowView) +{ with(self) +{ + if (_windowView === aWindowView) + return; + var oldWindowView = _windowView; + _windowView = aWindowView; + if (oldWindowView) + { + objj_msgSend(oldWindowView, "_setWindow:", nil); + objj_msgSend(oldWindowView, "noteToolbarChanged"); + } + if (_windowView) + { + var contentRect = objj_msgSend(_contentView, "convertRect:toView:", objj_msgSend(_contentView, "bounds"), nil); + contentRect.origin = objj_msgSend(self, "convertBaseToGlobal:", contentRect.origin); + objj_msgSend(_windowView, "_setWindow:", self); + objj_msgSend(_windowView, "setNextResponder:", self); + objj_msgSend(_windowView, "addSubview:", _contentView); + objj_msgSend(_windowView, "setTitle:", _title); + objj_msgSend(_windowView, "noteToolbarChanged"); + objj_msgSend(_windowView, "setShowsResizeIndicator:", objj_msgSend(self, "showsResizeIndicator")); + objj_msgSend(self, "setFrame:", objj_msgSend(self, "frameRectForContentRect:", contentRect)); + } +} +},["void","CPView"]), new objj_method(sel_getUid("setFullPlatformWindow:"), function $CPWindow__setFullPlatformWindow_(self, _cmd, shouldBeFullPlatformWindow) +{ with(self) +{ + if (!objj_msgSend(_platformWindow, "supportsFullPlatformWindows")) + return; + shouldBeFullPlatformWindow = !!shouldBeFullPlatformWindow; + if (_isFullPlatformWindow === shouldBeFullPlatformWindow) + return; + _isFullPlatformWindow = shouldBeFullPlatformWindow; + if (_isFullPlatformWindow) + { + _fullPlatformWindowSession = _CPWindowFullPlatformWindowSessionMake(_windowView, objj_msgSend(self, "contentRectForFrameRect:", objj_msgSend(self, "frame")), objj_msgSend(self, "hasShadow"), objj_msgSend(self, "level")); + var fullPlatformWindowViewClass = objj_msgSend(objj_msgSend(self, "class"), "_windowViewClassForFullPlatformWindowStyleMask:", _styleMask), + windowView = objj_msgSend(objj_msgSend(fullPlatformWindowViewClass, "alloc"), "initWithFrame:styleMask:", CGRectMakeZero(), _styleMask); + objj_msgSend(self, "_setWindowView:", windowView); + objj_msgSend(self, "setLevel:", CPBackgroundWindowLevel); + objj_msgSend(self, "setHasShadow:", NO); + objj_msgSend(self, "setAutoresizingMask:", CPWindowWidthSizable | CPWindowHeightSizable); + objj_msgSend(self, "setFrame:", objj_msgSend(_platformWindow, "visibleFrame")); + } + else + { + var windowView = _fullPlatformWindowSession.windowView; + objj_msgSend(self, "_setWindowView:", windowView); + objj_msgSend(self, "setLevel:", _fullPlatformWindowSession.level); + objj_msgSend(self, "setHasShadow:", _fullPlatformWindowSession.hasShadow); + objj_msgSend(self, "setAutoresizingMask:", CPWindowNotSizable); + objj_msgSend(self, "setFrame:", objj_msgSend(windowView, "frameRectForContentRect:", _fullPlatformWindowSession.contentRect)); + } +} +},["void","BOOL"]), new objj_method(sel_getUid("isFullPlatformWindow"), function $CPWindow__isFullPlatformWindow(self, _cmd) +{ with(self) +{ + return _isFullPlatformWindow; +} +},["BOOL"]), new objj_method(sel_getUid("styleMask"), function $CPWindow__styleMask(self, _cmd) +{ with(self) +{ + return _styleMask; +} +},["unsigned"]), new objj_method(sel_getUid("contentRectForFrameRect:"), function $CPWindow__contentRectForFrameRect_(self, _cmd, aFrame) +{ with(self) +{ + return objj_msgSend(_windowView, "contentRectForFrameRect:", aFrame); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frameRectForContentRect:"), function $CPWindow__frameRectForContentRect_(self, _cmd, aContentRect) +{ with(self) +{ + return objj_msgSend(_windowView, "frameRectForContentRect:", aContentRect); +} +},["CGRect","CGRect"]), new objj_method(sel_getUid("frame"), function $CPWindow__frame(self, _cmd) +{ with(self) +{ + return { origin: { x:_frame.origin.x, y:_frame.origin.y }, size: { width:_frame.size.width, height:_frame.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("_setClippedFrame:display:animate:"), function $CPWindow___setClippedFrame_display_animate_(self, _cmd, aFrame, shouldDisplay, shouldAnimate) +{ with(self) +{ + aFrame.size.width = MIN(MAX(aFrame.size.width, _minSize.width), _maxSize.width) + aFrame.size.height = MIN(MAX(aFrame.size.height, _minSize.height), _maxSize.height); + objj_msgSend(self, "setFrame:display:animate:", aFrame, shouldDisplay, shouldAnimate); +} +},["void","CGRect","BOOL","BOOL"]), new objj_method(sel_getUid("setFrame:display:animate:"), function $CPWindow__setFrame_display_animate_(self, _cmd, aFrame, shouldDisplay, shouldAnimate) +{ with(self) +{ + aFrame = { origin: { x:aFrame.origin.x, y:aFrame.origin.y }, size: { width:aFrame.size.width, height:aFrame.size.height } }; + var value = aFrame.origin.x, + delta = value - FLOOR(value); + if (delta) + aFrame.origin.x = value > 0.879 ? CEIL(value) : FLOOR(value); + value = aFrame.origin.y; + delta = value - FLOOR(value); + if (delta) + aFrame.origin.y = value > 0.879 ? CEIL(value) : FLOOR(value); + value = aFrame.size.width; + delta = value - FLOOR(value); + if (delta) + aFrame.size.width = value > 0.15 ? CEIL(value) : FLOOR(value); + value = aFrame.size.height; + delta = value - FLOOR(value); + if (delta) + aFrame.size.height = value > 0.15 ? CEIL(value) : FLOOR(value); + if (shouldAnimate) + { + objj_msgSend(_frameAnimation, "stopAnimation"); + _frameAnimation = objj_msgSend(objj_msgSend(_CPWindowFrameAnimation, "alloc"), "initWithWindow:targetFrame:", self, aFrame); + objj_msgSend(_frameAnimation, "startAnimation"); + } + else + { + var origin = _frame.origin, + newOrigin = aFrame.origin; + if (!(origin.x == newOrigin.x && origin.y == newOrigin.y)) + { + origin.x = newOrigin.x; + origin.y = newOrigin.y; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidMoveNotification, self); + } + var size = _frame.size, + newSize = aFrame.size; + if (!(size.width == newSize.width && size.height == newSize.height)) + { + size.width = newSize.width; + size.height = newSize.height; + objj_msgSend(_windowView, "setFrameSize:", size); + if (_hasShadow) + objj_msgSend(_shadowView, "setFrameSize:", { width:SHADOW_MARGIN_LEFT + size.width + SHADOW_MARGIN_RIGHT, height:SHADOW_MARGIN_BOTTOM + size.height + SHADOW_MARGIN_TOP + SHADOW_DISTANCE }); + if (!_isAnimating) + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidResizeNotification, self); + } + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + objj_msgSend(_platformWindow, "setContentRect:", _frame); + } +} +},["void","CGRect","BOOL","BOOL"]), new objj_method(sel_getUid("setFrame:display:"), function $CPWindow__setFrame_display_(self, _cmd, aFrame, shouldDisplay) +{ with(self) +{ + objj_msgSend(self, "_setClippedFrame:display:animate:", aFrame, shouldDisplay, NO); +} +},["void","CGRect","BOOL"]), new objj_method(sel_getUid("setFrame:"), function $CPWindow__setFrame_(self, _cmd, aFrame) +{ with(self) +{ + objj_msgSend(self, "_setClippedFrame:display:animate:", aFrame, YES, NO); +} +},["void","CGRect"]), new objj_method(sel_getUid("setFrameOrigin:"), function $CPWindow__setFrameOrigin_(self, _cmd, anOrigin) +{ with(self) +{ + objj_msgSend(self, "_setClippedFrame:display:animate:", { origin: { x:anOrigin.x, y:anOrigin.y }, size: { width:(_frame.size.width), height:(_frame.size.height) } }, YES, NO); +} +},["void","CGPoint"]), new objj_method(sel_getUid("setFrameSize:"), function $CPWindow__setFrameSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "_setClippedFrame:display:animate:", { origin: { x:(_frame.origin.x), y:(_frame.origin.y) }, size: { width:aSize.width, height:aSize.height } }, YES, NO); +} +},["void","CGSize"]), new objj_method(sel_getUid("orderFront:"), function $CPWindow__orderFront_(self, _cmd, aSender) +{ with(self) +{ + if (_firstResponder === self || !_firstResponder) + objj_msgSend(self, "makeFirstResponder:", objj_msgSend(self, "initialFirstResponder")); + if (!CPApp._keyWindow) + objj_msgSend(self, "makeKeyWindow"); + if (!CPApp._mainWindow) + objj_msgSend(self, "makeMainWindow"); +} +},["void","id"]), new objj_method(sel_getUid("orderBack:"), function $CPWindow__orderBack_(self, _cmd, aSender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("orderOut:"), function $CPWindow__orderOut_(self, _cmd, aSender) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowWillClose:"))) + objj_msgSend(_delegate, "windowWillClose:", self); + objj_msgSend(self, "_updateMainAndKeyWindows"); +} +},["void","id"]), new objj_method(sel_getUid("orderWindow:relativeTo:"), function $CPWindow__orderWindow_relativeTo_(self, _cmd, aPlace, otherWindowNumber) +{ with(self) +{ +} +},["void","CPWindowOrderingMode","int"]), new objj_method(sel_getUid("setLevel:"), function $CPWindow__setLevel_(self, _cmd, aLevel) +{ with(self) +{ + if (aLevel === _level) + return; + objj_msgSend(_platformWindow, "moveWindow:fromLevel:toLevel:", self, _level, aLevel); + _level = aLevel; + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + objj_msgSend(_platformWindow, "setLevel:", aLevel); +} +},["void","int"]), new objj_method(sel_getUid("level"), function $CPWindow__level(self, _cmd) +{ with(self) +{ + return _level; +} +},["int"]), new objj_method(sel_getUid("isVisible"), function $CPWindow__isVisible(self, _cmd) +{ with(self) +{ + return _isVisible; +} +},["BOOL"]), new objj_method(sel_getUid("showsResizeIndicator"), function $CPWindow__showsResizeIndicator(self, _cmd) +{ with(self) +{ + return _showsResizeIndicator; +} +},["BOOL"]), new objj_method(sel_getUid("setShowsResizeIndicator:"), function $CPWindow__setShowsResizeIndicator_(self, _cmd, shouldShowResizeIndicator) +{ with(self) +{ + shouldShowResizeIndicator = !!shouldShowResizeIndicator; + if (_showsResizeIndicator === shouldShowResizeIndicator) + return; + _showsResizeIndicator = shouldShowResizeIndicator; + objj_msgSend(_windowView, "setShowsResizeIndicator:", objj_msgSend(self, "showsResizeIndicator")); +} +},["void","BOOL"]), new objj_method(sel_getUid("resizeIndicatorOffset"), function $CPWindow__resizeIndicatorOffset(self, _cmd) +{ with(self) +{ + return objj_msgSend(_windowView, "resizeIndicatorOffset"); +} +},["CGSize"]), new objj_method(sel_getUid("setResizeIndicatorOffset:"), function $CPWindow__setResizeIndicatorOffset_(self, _cmd, anOffset) +{ with(self) +{ + objj_msgSend(_windowView, "setResizeIndicatorOffset:", anOffset); +} +},["void","CGSize"]), new objj_method(sel_getUid("setContentView:"), function $CPWindow__setContentView_(self, _cmd, aView) +{ with(self) +{ + if (_contentView) + objj_msgSend(_contentView, "removeFromSuperview"); + var bounds = CGRectMake(0.0, 0.0, CGRectGetWidth(_frame), CGRectGetHeight(_frame)); + _contentView = aView; + objj_msgSend(_contentView, "setFrame:", objj_msgSend(self, "contentRectForFrameRect:", bounds)); + objj_msgSend(_contentView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + objj_msgSend(_windowView, "addSubview:", _contentView); +} +},["void","CPView"]), new objj_method(sel_getUid("contentView"), function $CPWindow__contentView(self, _cmd) +{ with(self) +{ + return _contentView; +} +},["CPView"]), new objj_method(sel_getUid("setAlphaValue:"), function $CPWindow__setAlphaValue_(self, _cmd, aValue) +{ with(self) +{ + objj_msgSend(_windowView, "setAlphaValue:", aValue); +} +},["void","float"]), new objj_method(sel_getUid("alphaValue"), function $CPWindow__alphaValue(self, _cmd) +{ with(self) +{ + return objj_msgSend(_windowView, "alphaValue"); +} +},["float"]), new objj_method(sel_getUid("setBackgroundColor:"), function $CPWindow__setBackgroundColor_(self, _cmd, aColor) +{ with(self) +{ + objj_msgSend(_windowView, "setBackgroundColor:", aColor); +} +},["void","CPColor"]), new objj_method(sel_getUid("backgroundColor"), function $CPWindow__backgroundColor(self, _cmd) +{ with(self) +{ + return objj_msgSend(_windowView, "backgroundColor"); +} +},["CPColor"]), new objj_method(sel_getUid("setMinSize:"), function $CPWindow__setMinSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(_minSize, aSize)) + return; + _minSize = CGSizeCreateCopy(aSize); + var size = CGSizeMakeCopy(objj_msgSend(self, "frame").size), + needsFrameChange = NO; + if (size.width < _minSize.width) + { + size.width = _minSize.width; + needsFrameChange = YES; + } + if (size.height < _minSize.height) + { + size.height = _minSize.height; + needsFrameChange = YES; + } + if (needsFrameChange) + objj_msgSend(self, "setFrameSize:", size); +} +},["void","CGSize"]), new objj_method(sel_getUid("minSize"), function $CPWindow__minSize(self, _cmd) +{ with(self) +{ + return _minSize; +} +},["CGSize"]), new objj_method(sel_getUid("setMaxSize:"), function $CPWindow__setMaxSize_(self, _cmd, aSize) +{ with(self) +{ + if (CGSizeEqualToSize(_maxSize, aSize)) + return; + _maxSize = CGSizeCreateCopy(aSize); + var size = CGSizeMakeCopy(objj_msgSend(self, "frame").size), + needsFrameChange = NO; + if (size.width > _maxSize.width) + { + size.width = _maxSize.width; + needsFrameChange = YES; + } + if (size.height > _maxSize.height) + { + size.height = _maxSize.height; + needsFrameChange = YES; + } + if (needsFrameChange) + objj_msgSend(self, "setFrameSize:", size); +} +},["void","CGSize"]), new objj_method(sel_getUid("maxSize"), function $CPWindow__maxSize(self, _cmd) +{ with(self) +{ + return _maxSize; +} +},["CGSize"]), new objj_method(sel_getUid("hasShadow"), function $CPWindow__hasShadow(self, _cmd) +{ with(self) +{ + return _hasShadow; +} +},["BOOL"]), new objj_method(sel_getUid("_updateShadow"), function $CPWindow___updateShadow(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + { + if (_shadowView) + { + _shadowView = nil; + } + objj_msgSend(_platformWindow, "setHasShadow:", _hasShadow); + return; + } + if (_hasShadow && !_shadowView) + { + var bounds = objj_msgSend(_windowView, "bounds"); + _shadowView = objj_msgSend(objj_msgSend(CPView, "alloc"), "initWithFrame:", CGRectMake(-SHADOW_MARGIN_LEFT, -SHADOW_MARGIN_TOP + SHADOW_DISTANCE, + SHADOW_MARGIN_LEFT + CGRectGetWidth(bounds) + SHADOW_MARGIN_RIGHT, SHADOW_MARGIN_TOP + CGRectGetHeight(bounds) + SHADOW_MARGIN_BOTTOM)); + if (!_CPWindowShadowColor) + { + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")); + _CPWindowShadowColor = objj_msgSend(CPColor, "colorWithPatternImage:", objj_msgSend(objj_msgSend(CPNinePartImage, "alloc"), "initWithImageSlices:", + [ + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow0.png"), CGSizeMake(20.0, 19.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow1.png"), CGSizeMake(1.0, 19.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow2.png"), CGSizeMake(19.0, 19.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow3.png"), CGSizeMake(20.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow4.png"), CGSizeMake(1.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow5.png"), CGSizeMake(19.0, 1.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow6.png"), CGSizeMake(20.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow7.png"), CGSizeMake(1.0, 18.0)), + objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPWindow/CPWindowShadow8.png"), CGSizeMake(19.0, 18.0)) + ])); + } + objj_msgSend(_shadowView, "setBackgroundColor:", _CPWindowShadowColor); + objj_msgSend(_shadowView, "setAutoresizingMask:", CPViewWidthSizable | CPViewHeightSizable); + } + else if (!_hasShadow && _shadowView) + { + _shadowView = nil; + } +} +},["void"]), new objj_method(sel_getUid("setHasShadow:"), function $CPWindow__setHasShadow_(self, _cmd, shouldHaveShadow) +{ with(self) +{ + if (_hasShadow === shouldHaveShadow) + return; + _hasShadow = shouldHaveShadow; + objj_msgSend(self, "_updateShadow"); +} +},["void","BOOL"]), new objj_method(sel_getUid("setShadowStyle:"), function $CPWindow__setShadowStyle_(self, _cmd, aStyle) +{ with(self) +{ + _shadowStyle = aStyle; + objj_msgSend(objj_msgSend(self, "platformWindow"), "setShadowStyle:", _shadowStyle); +} +},["void","unsigned"]), new objj_method(sel_getUid("setDelegate:"), function $CPWindow__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidResignKeyNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidBecomeKeyNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidBecomeMainNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidResignMainNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidMoveNotification, self); + objj_msgSend(defaultCenter, "removeObserver:name:object:", _delegate, CPWindowDidResizeNotification, self); + _delegate = aDelegate; + _delegateRespondsToWindowWillReturnUndoManagerSelector = objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowWillReturnUndoManager:")); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidResignKey:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidResignKey:"), CPWindowDidResignKeyNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidBecomeKey:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidBecomeKey:"), CPWindowDidBecomeKeyNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidBecomeMain:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidBecomeMain:"), CPWindowDidBecomeMainNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidResignMain:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidResignMain:"), CPWindowDidResignMainNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidMove:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidMove:"), CPWindowDidMoveNotification, self); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowDidResize:"))) + objj_msgSend(defaultCenter, "addObserver:selector:name:object:", _delegate, sel_getUid("windowDidResize:"), CPWindowDidResizeNotification, self); +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPWindow__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("setWindowController:"), function $CPWindow__setWindowController_(self, _cmd, aWindowController) +{ with(self) +{ + _windowController = aWindowController; +} +},["void","CPWindowController"]), new objj_method(sel_getUid("windowController"), function $CPWindow__windowController(self, _cmd) +{ with(self) +{ + return _windowController; +} +},["CPWindowController"]), new objj_method(sel_getUid("doCommandBySelector:"), function $CPWindow__doCommandBySelector_(self, _cmd, aSelector) +{ with(self) +{ + if (objj_msgSend(_delegate, "respondsToSelector:", aSelector)) + objj_msgSend(_delegate, "performSelector:", aSelector); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWindow").super_class }, "doCommandBySelector:", aSelector); +} +},["void","SEL"]), new objj_method(sel_getUid("acceptsFirstResponder"), function $CPWindow__acceptsFirstResponder(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("initialFirstResponder"), function $CPWindow__initialFirstResponder(self, _cmd) +{ with(self) +{ + return _initialFirstResponder; +} +},["id"]), new objj_method(sel_getUid("setInitialFirstResponder:"), function $CPWindow__setInitialFirstResponder_(self, _cmd, aResponder) +{ with(self) +{ + _initialFirstResponder = aResponder; +} +},["void","id"]), new objj_method(sel_getUid("makeFirstResponder:"), function $CPWindow__makeFirstResponder_(self, _cmd, aResponder) +{ with(self) +{ + if (_firstResponder === aResponder) + return YES; + if(!objj_msgSend(_firstResponder, "resignFirstResponder")) + return NO; + if(!aResponder || !objj_msgSend(aResponder, "acceptsFirstResponder") || !objj_msgSend(aResponder, "becomeFirstResponder")) + { + _firstResponder = self; + return NO; + } + _firstResponder = aResponder; + return YES; +} +},["BOOL","CPResponder"]), new objj_method(sel_getUid("firstResponder"), function $CPWindow__firstResponder(self, _cmd) +{ with(self) +{ + return _firstResponder; +} +},["CPResponder"]), new objj_method(sel_getUid("acceptsMouseMovedEvents"), function $CPWindow__acceptsMouseMovedEvents(self, _cmd) +{ with(self) +{ + return _acceptsMouseMovedEvents; +} +},["BOOL"]), new objj_method(sel_getUid("setAcceptsMouseMovedEvents:"), function $CPWindow__setAcceptsMouseMovedEvents_(self, _cmd, shouldAcceptMouseMovedEvents) +{ with(self) +{ + _acceptsMouseMovedEvents = shouldAcceptMouseMovedEvents; +} +},["void","BOOL"]), new objj_method(sel_getUid("ignoresMouseEvents"), function $CPWindow__ignoresMouseEvents(self, _cmd) +{ with(self) +{ + return _ignoresMouseEvents; +} +},["BOOL"]), new objj_method(sel_getUid("setIgnoresMouseEvents:"), function $CPWindow__setIgnoresMouseEvents_(self, _cmd, shouldIgnoreMouseEvents) +{ with(self) +{ + _ignoresMouseEvents = shouldIgnoreMouseEvents; +} +},["void","BOOL"]), new objj_method(sel_getUid("title"), function $CPWindow__title(self, _cmd) +{ with(self) +{ + return _title; +} +},["CPString"]), new objj_method(sel_getUid("setTitle:"), function $CPWindow__setTitle_(self, _cmd, aTitle) +{ with(self) +{ + _title = aTitle; + objj_msgSend(_windowView, "setTitle:", aTitle); + objj_msgSend(self, "_synchronizeMenuBarTitleWithWindowTitle"); +} +},["void","CPString"]), new objj_method(sel_getUid("setTitleWithRepresentedFilename:"), function $CPWindow__setTitleWithRepresentedFilename_(self, _cmd, aFilePath) +{ with(self) +{ + objj_msgSend(self, "setRepresentedFilename:", aFilePath); + objj_msgSend(self, "setTitle:", objj_msgSend(aFilePath, "lastPathComponent")); +} +},["void","CPString"]), new objj_method(sel_getUid("setRepresentedFilename:"), function $CPWindow__setRepresentedFilename_(self, _cmd, aFilePath) +{ with(self) +{ + objj_msgSend(self, "setRepresentedURL:", aFilePath); +} +},["void","CPString"]), new objj_method(sel_getUid("representedFilename"), function $CPWindow__representedFilename(self, _cmd) +{ with(self) +{ + return _representedURL; +} +},["CPString"]), new objj_method(sel_getUid("setRepresentedURL:"), function $CPWindow__setRepresentedURL_(self, _cmd, aURL) +{ with(self) +{ + _representedURL = aURL; +} +},["void","CPURL"]), new objj_method(sel_getUid("representedURL"), function $CPWindow__representedURL(self, _cmd) +{ with(self) +{ + return _representedURL; +} +},["CPURL"]), new objj_method(sel_getUid("screen"), function $CPWindow__screen(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPScreen, "alloc"), "init"); +} +},["CPScreen"]), new objj_method(sel_getUid("setMovableByWindowBackground:"), function $CPWindow__setMovableByWindowBackground_(self, _cmd, shouldBeMovableByWindowBackground) +{ with(self) +{ + _isMovableByWindowBackground = shouldBeMovableByWindowBackground; +} +},["void","BOOL"]), new objj_method(sel_getUid("isMovableByWindowBackground"), function $CPWindow__isMovableByWindowBackground(self, _cmd) +{ with(self) +{ + return _isMovableByWindowBackground; +} +},["BOOL"]), new objj_method(sel_getUid("center"), function $CPWindow__center(self, _cmd) +{ with(self) +{ + if (_isFullPlatformWindow) + return; + var size = objj_msgSend(self, "frame").size, + containerSize = objj_msgSend(CPPlatform, "isBrowser") ? objj_msgSend(_platformWindow, "contentBounds").size : objj_msgSend(objj_msgSend(self, "screen"), "visibleFrame").size; + var origin = CGPointMake((containerSize.width - size.width) / 2.0, (containerSize.height - size.height) / 2.0); + if (origin.x < 0.0) + origin.x = 0.0; + if (origin.y < 0.0) + origin.y = 0.0; + objj_msgSend(self, "setFrameOrigin:", origin); +} +},["void"]), new objj_method(sel_getUid("sendEvent:"), function $CPWindow__sendEvent_(self, _cmd, anEvent) +{ with(self) +{ + var type = objj_msgSend(anEvent, "type"), + point = objj_msgSend(anEvent, "locationInWindow"); + switch (type) + { + case CPFlagsChanged: return objj_msgSend(objj_msgSend(self, "firstResponder"), "flagsChanged:", anEvent); + case CPKeyUp: return objj_msgSend(objj_msgSend(self, "firstResponder"), "keyUp:", anEvent); + case CPKeyDown: objj_msgSend(objj_msgSend(self, "firstResponder"), "keyDown:", anEvent); + if (!objj_msgSend(self, "disableKeyEquivalentForDefaultButton")) + if (objj_msgSend(anEvent, "_triggersKeyEquivalent:withModifierMask:", objj_msgSend(objj_msgSend(self, "defaultButton"), "keyEquivalent"), objj_msgSend(objj_msgSend(self, "defaultButton"), "keyEquivalentModifierMask"))) + objj_msgSend(objj_msgSend(self, "defaultButton"), "performClick:", self); + return; + case CPScrollWheel: return objj_msgSend(objj_msgSend(_windowView, "hitTest:", point), "scrollWheel:", anEvent); + case CPLeftMouseUp: + case CPRightMouseUp: var hitTestedView = _leftMouseDownView, + selector = type == CPRightMouseUp ? sel_getUid("rightMouseUp:") : sel_getUid("mouseUp:"); + if (!hitTestedView) + hitTestedView = objj_msgSend(_windowView, "hitTest:", point); + objj_msgSend(hitTestedView, "performSelector:withObject:", selector, anEvent); + _leftMouseDownView = nil; + return; + case CPLeftMouseDown: + case CPRightMouseDown: _leftMouseDownView = objj_msgSend(_windowView, "hitTest:", point); + if (_leftMouseDownView != _firstResponder && objj_msgSend(_leftMouseDownView, "acceptsFirstResponder")) + objj_msgSend(self, "makeFirstResponder:", _leftMouseDownView); + objj_msgSend(CPApp, "activateIgnoringOtherApps:", YES); + var theWindow = objj_msgSend(anEvent, "window"), + selector = type == CPRightMouseDown ? sel_getUid("rightMouseDown:") : sel_getUid("mouseDown:"); + if (objj_msgSend(theWindow, "isKeyWindow") || objj_msgSend(theWindow, "becomesKeyOnlyIfNeeded") && !objj_msgSend(_leftMouseDownView, "needsPanelToBecomeKey")) + return objj_msgSend(_leftMouseDownView, "performSelector:withObject:", selector, anEvent); + else + { + objj_msgSend(self, "makeKeyAndOrderFront:", self); + if (objj_msgSend(_leftMouseDownView, "acceptsFirstMouse:", anEvent)) + return objj_msgSend(_leftMouseDownView, "performSelector:withObject:", selector, anEvent); + } + break; + case CPLeftMouseDragged: + case CPRightMouseDragged: if (!_leftMouseDownView) + return objj_msgSend(objj_msgSend(_windowView, "hitTest:", point), "mouseDragged:", anEvent); + var selector; + if (type == CPRightMouseDragged) + { + selector = sel_getUid("rightMouseDragged:") + if (!objj_msgSend(_leftMouseDownView, "respondsToSelector:", selector)) + selector = nil; + } + if (!selector) + selector = sel_getUid("mouseDragged:") + return objj_msgSend(_leftMouseDownView, "performSelector:withObject:", selector, anEvent); + case CPMouseMoved: if (!_acceptsMouseMovedEvents) + return; + if (!_mouseEnteredStack) + _mouseEnteredStack = []; + var hitTestView = objj_msgSend(_windowView, "hitTest:", point); + if (objj_msgSend(_mouseEnteredStack, "count") && objj_msgSend(_mouseEnteredStack, "lastObject") === hitTestView) + return objj_msgSend(hitTestView, "mouseMoved:", anEvent); + var view = hitTestView, + mouseEnteredStack = []; + while (view) + { + mouseEnteredStack.unshift(view); + view = objj_msgSend(view, "superview"); + } + var deviation = MIN(_mouseEnteredStack.length, mouseEnteredStack.length); + while (deviation--) + if (_mouseEnteredStack[deviation] === mouseEnteredStack[deviation]) + break; + var index = deviation + 1, + count = _mouseEnteredStack.length; + if (index < count) + { + var event = objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", CPMouseExited, point, objj_msgSend(anEvent, "modifierFlags"), objj_msgSend(anEvent, "timestamp"), _windowNumber, nil, -1, 1, 0); + for (; index < count; ++index) + objj_msgSend(_mouseEnteredStack[index], "mouseExited:", event); + } + index = deviation + 1; + count = mouseEnteredStack.length; + if (index < count) + { + var event = objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", CPMouseEntered, point, objj_msgSend(anEvent, "modifierFlags"), objj_msgSend(anEvent, "timestamp"), _windowNumber, nil, -1, 1, 0); + for (; index < count; ++index) + objj_msgSend(mouseEnteredStack[index], "mouseEntered:", event); + } + _mouseEnteredStack = mouseEnteredStack; + objj_msgSend(hitTestView, "mouseMoved:", anEvent); + } +} +},["void","CPEvent"]), new objj_method(sel_getUid("windowNumber"), function $CPWindow__windowNumber(self, _cmd) +{ with(self) +{ + return _windowNumber; +} +},["int"]), new objj_method(sel_getUid("becomeKeyWindow"), function $CPWindow__becomeKeyWindow(self, _cmd) +{ with(self) +{ + CPApp._keyWindow = self; + if (_firstResponder !== self && objj_msgSend(_firstResponder, "respondsToSelector:", sel_getUid("becomeKeyWindow"))) + objj_msgSend(_firstResponder, "becomeKeyWindow"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidBecomeKeyNotification, self); +} +},["void"]), new objj_method(sel_getUid("canBecomeKeyWindow"), function $CPWindow__canBecomeKeyWindow(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("isKeyWindow"), function $CPWindow__isKeyWindow(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPApp, "keyWindow") == self; +} +},["BOOL"]), new objj_method(sel_getUid("makeKeyAndOrderFront:"), function $CPWindow__makeKeyAndOrderFront_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "orderFront:", self); + objj_msgSend(self, "makeKeyWindow"); + objj_msgSend(self, "makeMainWindow"); +} +},["void","id"]), new objj_method(sel_getUid("makeKeyWindow"), function $CPWindow__makeKeyWindow(self, _cmd) +{ with(self) +{ + if (objj_msgSend(CPApp, "keyWindow") === self || !objj_msgSend(self, "canBecomeKeyWindow")) + return; + objj_msgSend(objj_msgSend(CPApp, "keyWindow"), "resignKeyWindow"); + objj_msgSend(self, "becomeKeyWindow"); +} +},["void"]), new objj_method(sel_getUid("resignKeyWindow"), function $CPWindow__resignKeyWindow(self, _cmd) +{ with(self) +{ + if (_firstResponder !== self && objj_msgSend(_firstResponder, "respondsToSelector:", sel_getUid("resignKeyWindow"))) + objj_msgSend(_firstResponder, "resignKeyWindow"); + if (CPApp._keyWindow === self) + CPApp._keyWindow = nil; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidResignKeyNotification, self); +} +},["void"]), new objj_method(sel_getUid("dragImage:at:offset:event:pasteboard:source:slideBack:"), function $CPWindow__dragImage_at_offset_event_pasteboard_source_slideBack_(self, _cmd, anImage, imageLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:", anImage, self, objj_msgSend(self, "convertBaseToGlobal:", imageLocation), mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPImage","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("_noteRegisteredDraggedTypes:"), function $CPWindow___noteRegisteredDraggedTypes_(self, _cmd, pasteboardTypes) +{ with(self) +{ + if (!pasteboardTypes) + return; + if (!_inclusiveRegisteredDraggedTypes) + _inclusiveRegisteredDraggedTypes = objj_msgSend(CPCountedSet, "set"); + objj_msgSend(_inclusiveRegisteredDraggedTypes, "unionSet:", pasteboardTypes); +} +},["void","CPSet"]), new objj_method(sel_getUid("_noteUnregisteredDraggedTypes:"), function $CPWindow___noteUnregisteredDraggedTypes_(self, _cmd, pasteboardTypes) +{ with(self) +{ + if (!pasteboardTypes) + return; + objj_msgSend(_inclusiveRegisteredDraggedTypes, "minusSet:", pasteboardTypes); + if (objj_msgSend(_inclusiveRegisteredDraggedTypes, "count") === 0) + _inclusiveRegisteredDraggedTypes = nil; +} +},["void","CPSet"]), new objj_method(sel_getUid("dragView:at:offset:event:pasteboard:source:slideBack:"), function $CPWindow__dragView_at_offset_event_pasteboard_source_slideBack_(self, _cmd, aView, viewLocation, mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "dragView:fromWindow:at:offset:event:pasteboard:source:slideBack:", aView, self, objj_msgSend(self, "convertBaseToGlobal:", viewLocation), mouseOffset, anEvent, aPasteboard, aSourceObject, slideBack); +} +},["void","CPView","CGPoint","CGSize","CPEvent","CPPasteboard","id","BOOL"]), new objj_method(sel_getUid("registerForDraggedTypes:"), function $CPWindow__registerForDraggedTypes_(self, _cmd, pasteboardTypes) +{ with(self) +{ + if (!pasteboardTypes) + return; + objj_msgSend(self, "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + objj_msgSend(_registeredDraggedTypes, "addObjectsFromArray:", pasteboardTypes); + objj_msgSend(self, "_noteRegisteredDraggedTypes:", _registeredDraggedTypes); + _registeredDraggedTypesArray = nil; +} +},["void","CPArray"]), new objj_method(sel_getUid("registeredDraggedTypes"), function $CPWindow__registeredDraggedTypes(self, _cmd) +{ with(self) +{ + if (!_registeredDraggedTypesArray) + _registeredDraggedTypesArray = objj_msgSend(_registeredDraggedTypes, "allObjects"); + return _registeredDraggedTypesArray; +} +},["CPArray"]), new objj_method(sel_getUid("unregisterDraggedTypes"), function $CPWindow__unregisterDraggedTypes(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_noteUnregisteredDraggedTypes:", _registeredDraggedTypes); + _registeredDraggedTypes = objj_msgSend(CPSet, "set"); + _registeredDraggedTypesArray = []; +} +},["void"]), new objj_method(sel_getUid("setDocumentEdited:"), function $CPWindow__setDocumentEdited_(self, _cmd, isDocumentEdited) +{ with(self) +{ + if (_isDocumentEdited == isDocumentEdited) + return; + _isDocumentEdited = isDocumentEdited; + objj_msgSend(CPMenu, "_setMenuBarIconImageAlphaValue:", _isDocumentEdited ? 0.5 : 1.0); + objj_msgSend(_windowView, "setDocumentEdited:", isDocumentEdited); +} +},["void","BOOL"]), new objj_method(sel_getUid("isDocumentEdited"), function $CPWindow__isDocumentEdited(self, _cmd) +{ with(self) +{ + return _isDocumentEdited; +} +},["BOOL"]), new objj_method(sel_getUid("setDocumentSaving:"), function $CPWindow__setDocumentSaving_(self, _cmd, isDocumentSaving) +{ with(self) +{ + if (_isDocumentSaving == isDocumentSaving) + return; + _isDocumentSaving = isDocumentSaving; + objj_msgSend(self, "_synchronizeSaveMenuWithDocumentSaving"); + objj_msgSend(_windowView, "windowDidChangeDocumentSaving"); +} +},["void","BOOL"]), new objj_method(sel_getUid("isDocumentSaving"), function $CPWindow__isDocumentSaving(self, _cmd) +{ with(self) +{ + return _isDocumentSaving; +} +},["BOOL"]), new objj_method(sel_getUid("_synchronizeSaveMenuWithDocumentSaving"), function $CPWindow___synchronizeSaveMenuWithDocumentSaving(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "isMainWindow")) + return; + var mainMenu = objj_msgSend(CPApp, "mainMenu"), + index = objj_msgSend(mainMenu, "indexOfItemWithTitle:", _isDocumentSaving ? "Save" : "Saving..."); + if (index == CPNotFound) + return; + var item = objj_msgSend(mainMenu, "itemAtIndex:", index); + if (_isDocumentSaving) + { + CPWindowSaveImage = objj_msgSend(item, "image"); + objj_msgSend(item, "setTitle:", "Saving..."); + objj_msgSend(item, "setImage:", CPWindowSavingImage); + objj_msgSend(item, "setEnabled:", NO); + } + else + { + objj_msgSend(item, "setTitle:", "Save"); + objj_msgSend(item, "setImage:", CPWindowSaveImage); + objj_msgSend(item, "setEnabled:", YES); + } +} +},["void"]), new objj_method(sel_getUid("performMiniaturize:"), function $CPWindow__performMiniaturize_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(self, "miniaturize:", aSender); +} +},["void","id"]), new objj_method(sel_getUid("miniaturize:"), function $CPWindow__miniaturize_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowWillMiniaturizeNotification, self); + objj_msgSend(objj_msgSend(self, "platformWindow"), "miniaturize:", sender); + objj_msgSend(self, "_updateMainAndKeyWindows"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidMiniaturizeNotification, self); + _isMiniaturized = YES; +} +},["void","id"]), new objj_method(sel_getUid("deminiaturize:"), function $CPWindow__deminiaturize_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "platformWindow"), "deminiaturize:", sender); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidDeminiaturizeNotification, self); + _isMiniaturized = NO; +} +},["void","id"]), new objj_method(sel_getUid("isMiniaturized"), function $CPWindow__isMiniaturized(self, _cmd) +{ with(self) +{ + return _isMiniaturized; +} +},["void"]), new objj_method(sel_getUid("performClose:"), function $CPWindow__performClose_(self, _cmd, aSender) +{ with(self) +{ + if (!(_styleMask & CPClosableWindowMask)) + return; + if (objj_msgSend(self, "isFullBridge")) + { + var event = objj_msgSend(CPApp, "currentEvent"); + if (objj_msgSend(event, "type") === CPKeyDown && objj_msgSend(event, "characters") === "w" && (objj_msgSend(event, "modifierFlags") & CPPlatformActionKeyMask)) + { + objj_msgSend(objj_msgSend(self, "platformWindow"), "_propagateCurrentDOMEvent:", YES); + return; + } + } + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("windowShouldClose:"))) + { + if (!objj_msgSend(_delegate, "windowShouldClose:", self)) + return; + } + else if (objj_msgSend(self, "respondsToSelector:", sel_getUid("windowShouldClose:")) && !objj_msgSend(self, "windowShouldClose:", self)) + return; + var documents = objj_msgSend(_windowController, "documents"); + if (objj_msgSend(documents, "count")) + { + var index = objj_msgSend(documents, "indexOfObject:", objj_msgSend(_windowController, "document")); + objj_msgSend(documents[index], "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:", _windowController, self, sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"), {documents:objj_msgSend(documents, "copy"), visited:0, index:index}); + } + else + objj_msgSend(self, "close"); +} +},["void","id"]), new objj_method(sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"), function $CPWindow___windowControllerContainingDocument_shouldClose_contextInfo_(self, _cmd, document, shouldClose, context) +{ with(self) +{ + if (shouldClose) + { + var windowController = objj_msgSend(self, "windowController"), + documents = context.documents, + count = objj_msgSend(documents, "count"), + visited = ++context.visited, + index = ++context.index % count; + objj_msgSend(document, "removeWindowController:", windowController); + if (visited < count) + { + objj_msgSend(windowController, "setDocument:", documents[index]); + objj_msgSend(documents[index], "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:", _windowController, self, sel_getUid("_windowControllerContainingDocument:shouldClose:contextInfo:"), context); + } + else + objj_msgSend(self, "close"); + } +} +},["void","CPDocument","BOOL","Object"]), new objj_method(sel_getUid("close"), function $CPWindow__close(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowWillCloseNotification, self); + objj_msgSend(self, "orderOut:", nil); +} +},["void"]), new objj_method(sel_getUid("isMainWindow"), function $CPWindow__isMainWindow(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPApp, "mainWindow") == self; +} +},["BOOL"]), new objj_method(sel_getUid("canBecomeMainWindow"), function $CPWindow__canBecomeMainWindow(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "isVisible")) + return YES; + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("makeMainWindow"), function $CPWindow__makeMainWindow(self, _cmd) +{ with(self) +{ + if (objj_msgSend(CPApp, "mainWindow") === self || !objj_msgSend(self, "canBecomeMainWindow")) + return; + objj_msgSend(objj_msgSend(CPApp, "mainWindow"), "resignMainWindow"); + objj_msgSend(self, "becomeMainWindow"); +} +},["void"]), new objj_method(sel_getUid("becomeMainWindow"), function $CPWindow__becomeMainWindow(self, _cmd) +{ with(self) +{ + CPApp._mainWindow = self; + objj_msgSend(self, "_synchronizeMenuBarTitleWithWindowTitle"); + objj_msgSend(self, "_synchronizeSaveMenuWithDocumentSaving"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidBecomeMainNotification, self); +} +},["void"]), new objj_method(sel_getUid("resignMainWindow"), function $CPWindow__resignMainWindow(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidResignMainNotification, self); + if (CPApp._mainWindow === self) + CPApp._mainWindow = nil; +} +},["void"]), new objj_method(sel_getUid("_updateMainAndKeyWindows"), function $CPWindow___updateMainAndKeyWindows(self, _cmd) +{ with(self) +{ + var allWindows = objj_msgSend(CPApp, "orderedWindows"), + windowCount = objj_msgSend(allWindows, "count"); + if (objj_msgSend(self, "isKeyWindow")) + { + var keyWindow = objj_msgSend(CPApp, "keyWindow"); + objj_msgSend(self, "resignKeyWindow"); + if (keyWindow && keyWindow !== self && objj_msgSend(keyWindow, "canBecomeKeyWindow")) + objj_msgSend(keyWindow, "makeKeyWindow"); + else + { + var mainMenu = objj_msgSend(CPApp, "mainMenu"), + menuBarClass = objj_getClass("_CPMenuBarWindow"), + menuWindow; + for (var i = 0; i < windowCount; i++) + { + var currentWindow = allWindows[i]; + if (objj_msgSend(currentWindow, "isKindOfClass:", menuBarClass)) + menuWindow = currentWindow; + if (currentWindow === self || currentWindow === menuWindow) + continue; + if (objj_msgSend(currentWindow, "isVisible") && objj_msgSend(currentWindow, "canBecomeKeyWindow")) + { + objj_msgSend(currentWindow, "makeKeyWindow"); + break; + } + } + if (!objj_msgSend(CPApp, "keyWindow")) + objj_msgSend(menuWindow, "makeKeyWindow"); + } + } + if (objj_msgSend(self, "isMainWindow")) + { + var mainWindow = objj_msgSend(CPApp, "mainWindow"); + objj_msgSend(self, "resignMainWindow"); + if (mainWindow && mainWindow !== self && objj_msgSend(mainWindow, "canBecomeMainWindow")) + objj_msgSend(mainWindow, "makeMainWindow"); + else + { + var mainMenu = objj_msgSend(CPApp, "mainMenu"), + menuBarClass = objj_getClass("_CPMenuBarWindow"), + menuWindow; + for (var i = 0; i < windowCount; i++) + { + var currentWindow = allWindows[i]; + if (objj_msgSend(currentWindow, "isKindOfClass:", menuBarClass)) + menuWindow = currentWindow; + if (currentWindow === self || currentWindow === menuWindow) + continue; + if (objj_msgSend(currentWindow, "isVisible") && objj_msgSend(currentWindow, "canBecomeMainWindow")) + { + objj_msgSend(currentWindow, "makeMainWindow"); + break; + } + } + } + } +} +},["void"]), new objj_method(sel_getUid("toolbar"), function $CPWindow__toolbar(self, _cmd) +{ with(self) +{ + return _toolbar; +} +},["CPToolbar"]), new objj_method(sel_getUid("setToolbar:"), function $CPWindow__setToolbar_(self, _cmd, aToolbar) +{ with(self) +{ + if (_toolbar === aToolbar) + return; + objj_msgSend(objj_msgSend(aToolbar, "_window"), "setToolbar:", nil); + objj_msgSend(_toolbar, "_setWindow:", nil); + _toolbar = aToolbar; + objj_msgSend(_toolbar, "_setWindow:", self); + objj_msgSend(self, "_noteToolbarChanged"); +} +},["void","CPToolbar"]), new objj_method(sel_getUid("toggleToolbarShown:"), function $CPWindow__toggleToolbarShown_(self, _cmd, aSender) +{ with(self) +{ + var toolbar = objj_msgSend(self, "toolbar"); + objj_msgSend(toolbar, "setVisible:", !objj_msgSend(toolbar, "isVisible")); +} +},["void","id"]), new objj_method(sel_getUid("_noteToolbarChanged"), function $CPWindow___noteToolbarChanged(self, _cmd) +{ with(self) +{ + var frame = CGRectMakeCopy(objj_msgSend(self, "frame")), + newFrame; + objj_msgSend(_windowView, "noteToolbarChanged"); + if (_isFullPlatformWindow) + newFrame = objj_msgSend(_platformWindow, "visibleFrame"); + else + { + newFrame = CGRectMakeCopy(objj_msgSend(self, "frame")); + newFrame.origin = frame.origin; + } + objj_msgSend(self, "setFrame:", newFrame); +} +},["void"]), new objj_method(sel_getUid("_setFrame:delegate:duration:curve:"), function $CPWindow___setFrame_delegate_duration_curve_(self, _cmd, aFrame, delegate, duration, curve) +{ with(self) +{ + objj_msgSend(_frameAnimation, "stopAnimation"); + _frameAnimation = objj_msgSend(objj_msgSend(_CPWindowFrameAnimation, "alloc"), "initWithWindow:targetFrame:", self, aFrame); + objj_msgSend(_frameAnimation, "setDelegate:", delegate); + objj_msgSend(_frameAnimation, "setAnimationCurve:", curve); + objj_msgSend(_frameAnimation, "setDuration:", duration); + objj_msgSend(_frameAnimation, "startAnimation"); +} +},["void","CGRect","id","int","CPAnimationCurve"]), new objj_method(sel_getUid("animationResizeTime:"), function $CPWindow__animationResizeTime_(self, _cmd, newWindowFrame) +{ with(self) +{ + return CPWindowResizeTime; +} +},["CPTimeInterval","CGRect"]), new objj_method(sel_getUid("_setAttachedSheetFrameOrigin"), function $CPWindow___setAttachedSheetFrameOrigin(self, _cmd) +{ with(self) +{ + var attachedSheet = objj_msgSend(self, "attachedSheet"); + var contentRect = objj_msgSend(objj_msgSend(self, "contentView"), "frame"), + sheetFrame = CGRectMakeCopy(objj_msgSend(attachedSheet, "frame")); + sheetFrame.origin.y = CGRectGetMinY(_frame) + CGRectGetMinY(contentRect); + sheetFrame.origin.x = CGRectGetMinX(_frame) + FLOOR((CGRectGetWidth(_frame) - CGRectGetWidth(sheetFrame)) / 2.0); + objj_msgSend(attachedSheet, "setFrame:display:animate:", sheetFrame, YES, NO); +} +},["void"]), new objj_method(sel_getUid("_attachSheet:modalDelegate:didEndSelector:contextInfo:"), function $CPWindow___attachSheet_modalDelegate_didEndSelector_contextInfo_(self, _cmd, aSheet, aModalDelegate, aDidEndSelector, aContextInfo) +{ with(self) +{ + var sheetFrame = objj_msgSend(aSheet, "frame"); + _sheetContext = {"sheet":aSheet, "modalDelegate":aModalDelegate, "endSelector":aDidEndSelector, "contextInfo":aContextInfo, "frame":CGRectMakeCopy(sheetFrame), "returnCode":-1, "opened": NO}; + objj_msgSend(self, "_attachSheetWindow:", aSheet); +} +},["void","CPWindow","id","SEL","id"]), new objj_method(sel_getUid("_attachSheetWindow:"), function $CPWindow___attachSheetWindow_(self, _cmd, aSheet) +{ with(self) +{ + var sheetFrame = objj_msgSend(aSheet, "frame"), + frame = objj_msgSend(self, "frame"), + sheetContent = objj_msgSend(aSheet, "contentView"); + objj_msgSend(self, "_setUpMasksForView:", sheetContent); + aSheet._isSheet = YES; + aSheet._parentView = self; + var originx = frame.origin.x + FLOOR((frame.size.width - sheetFrame.size.width)/2), + originy = frame.origin.y + objj_msgSend(objj_msgSend(self, "contentView"), "frame").origin.y, + startFrame = CGRectMake(originx, originy, sheetFrame.size.width, 0), + endFrame = CGRectMake(originx, originy, sheetFrame.size.width, sheetFrame.size.height); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowWillBeginSheetNotification, self); + objj_msgSend(CPApp, "runModalForWindow:", aSheet); + objj_msgSend(aSheet, "orderFront:", self); + objj_msgSend(aSheet, "setFrame:display:animate:", startFrame, YES, NO); + _sheetContext["opened"] = YES; + objj_msgSend(aSheet, "_setFrame:delegate:duration:curve:", endFrame, self, objj_msgSend(self, "animationResizeTime:", endFrame), CPAnimationEaseOut); + objj_msgSend(aSheet, "becomeKeyWindow"); +} +},["void","CPWindow"]), new objj_method(sel_getUid("_detachSheetWindow"), function $CPWindow___detachSheetWindow(self, _cmd) +{ with(self) +{ + var sheet = objj_msgSend(self, "attachedSheet"), + startFrame = objj_msgSend(sheet, "frame"), + endFrame = CGRectMakeCopy(startFrame); + endFrame.size.height = 0; + _sheetContext["frame"] = startFrame; + var sheetContent = objj_msgSend(sheet, "contentView"); + objj_msgSend(self, "_setUpMasksForView:", sheetContent); + _sheetContext["opened"] = NO; + objj_msgSend(sheet, "_setFrame:delegate:duration:curve:", endFrame, self, objj_msgSend(self, "animationResizeTime:", endFrame), CPAnimationEaseIn); +} +},["void"]), new objj_method(sel_getUid("animationDidEnd:"), function $CPWindow__animationDidEnd_(self, _cmd, anim) +{ with(self) +{ + var sheet = _sheetContext["sheet"]; + if (anim._window != sheet) + return; + var sheetContent = objj_msgSend(sheet, "contentView"); + if (_sheetContext["opened"] === YES) + { + objj_msgSend(self, "_restoreMasksForView:", sheetContent); + return; + } + objj_msgSend(CPApp, "stopModal"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPWindowDidEndSheetNotification, self); + objj_msgSend(sheet, "orderOut:", self); + var lastFrame = _sheetContext["frame"]; + objj_msgSend(sheet, "setFrame:", lastFrame); + objj_msgSend(self, "_restoreMasksForView:", sheetContent); + var delegate = _sheetContext["modalDelegate"], + endSelector = _sheetContext["endSelector"], + returnCode = _sheetContext["returnCode"], + contextInfo = _sheetContext["contextInfo"]; + _sheetContext = nil; + sheet._parentView = nil; + if (delegate != nil && endSelector != nil) + objj_msgSend(delegate, endSelector, sheet, returnCode, contextInfo); +} +},["void","id"]), new objj_method(sel_getUid("_setUpMasksForView:"), function $CPWindow___setUpMasksForView_(self, _cmd, aView) +{ with(self) +{ + var views = objj_msgSend(aView, "subviews"); + objj_msgSend(views, "addObject:", aView); + for (var i = 0, count = objj_msgSend(views, "count"); i < count; i++) + { + var view = objj_msgSend(views, "objectAtIndex:", i), + mask = objj_msgSend(view, "autoresizingMask"), + maskToAdd = (mask & CPViewMinYMargin) ? 128 : CPViewMinYMargin; + objj_msgSend(view, "setAutoresizingMask:", (mask | maskToAdd)); + } +} +},["void","CPView"]), new objj_method(sel_getUid("_restoreMasksForView:"), function $CPWindow___restoreMasksForView_(self, _cmd, aView) +{ with(self) +{ + var views = objj_msgSend(aView, "subviews"); + objj_msgSend(views, "addObject:", aView); + for (var i = 0, count = objj_msgSend(views, "count"); i < count; i++) + { + var view = objj_msgSend(views, "objectAtIndex:", i), + mask = objj_msgSend(view, "autoresizingMask"), + maskToRemove = (mask & 128) ? 128 : CPViewMinYMargin; + objj_msgSend(view, "setAutoresizingMask:", (mask & (~ maskToRemove))); + } +} +},["void","CPView"]), new objj_method(sel_getUid("attachedSheet"), function $CPWindow__attachedSheet(self, _cmd) +{ with(self) +{ + if (_sheetContext === nil) + return nil; + return _sheetContext["sheet"]; +} +},["CPWindow"]), new objj_method(sel_getUid("isSheet"), function $CPWindow__isSheet(self, _cmd) +{ with(self) +{ + return _isSheet; +} +},["BOOL"]), new objj_method(sel_getUid("becomesKeyOnlyIfNeeded"), function $CPWindow__becomesKeyOnlyIfNeeded(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("worksWhenModal"), function $CPWindow__worksWhenModal(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("performKeyEquivalent:"), function $CPWindow__performKeyEquivalent_(self, _cmd, anEvent) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "contentView"), "performKeyEquivalent:", anEvent); +} +},["BOOL","CPEvent"]), new objj_method(sel_getUid("keyDown:"), function $CPWindow__keyDown_(self, _cmd, anEvent) +{ with(self) +{ + if (objj_msgSend(anEvent, "_couldBeKeyEquivalent") && objj_msgSend(self, "performKeyEquivalent:", anEvent)) + return; + objj_msgSend(self, "interpretKeyEvents:", [anEvent]); +} +},["void","CPEvent"]), new objj_method(sel_getUid("insertTab:"), function $CPWindow__insertTab_(self, _cmd, sender) +{ with(self) +{ + objj_msgSend(self, "selectNextKeyView:", nil); +} +},["void","id"]), new objj_method(sel_getUid("_dirtyKeyViewLoop"), function $CPWindow___dirtyKeyViewLoop(self, _cmd) +{ with(self) +{ + if (_autorecalculatesKeyViewLoop) + _keyViewLoopIsDirty = YES; +} +},["void"]), new objj_method(sel_getUid("_hasKeyViewLoop"), function $CPWindow___hasKeyViewLoop(self, _cmd) +{ with(self) +{ + var subviews = []; + objj_msgSend(self, "_appendSubviewsOf:toArray:", _contentView, subviews); + for (var i = 0, count = objj_msgSend(subviews, "count"); i<count; i++) + { + if (subviews[i]._nextKeyView) + return YES; + } + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("recalculateKeyViewLoop"), function $CPWindow__recalculateKeyViewLoop(self, _cmd) +{ with(self) +{ + var subviews = []; + objj_msgSend(self, "_appendSubviewsOf:toArray:", _contentView, subviews); + var keyViewOrder = objj_msgSend(subviews, "sortedArrayUsingFunction:context:", keyViewComparator, _contentView), + count = objj_msgSend(keyViewOrder, "count"); + for (var i=0; i<count; i++) + objj_msgSend(keyViewOrder[i], "setNextKeyView:", keyViewOrder[(i+1)%count]); + _keyViewLoopIsDirty = NO; +} +},["void"]), new objj_method(sel_getUid("_appendSubviewsOf:toArray:"), function $CPWindow___appendSubviewsOf_toArray_(self, _cmd, aView, anArray) +{ with(self) +{ + var subviews = objj_msgSend(aView, "subviews"), + count = objj_msgSend(subviews, "count"); + while (count--) + objj_msgSend(self, "_appendSubviewsOf:toArray:", subviews[count], anArray); + objj_msgSend(anArray, "addObject:", aView); +} +},["void","CPView","CPArray"]), new objj_method(sel_getUid("setAutorecalculatesKeyViewLoop:"), function $CPWindow__setAutorecalculatesKeyViewLoop_(self, _cmd, shouldRecalculate) +{ with(self) +{ + if (_autorecalculatesKeyViewLoop === shouldRecalculate) + return; + _autorecalculatesKeyViewLoop = shouldRecalculate; + if (_keyViewLoopIsDirty) + objj_msgSend(self, "recalculateKeyViewLoop"); + else if (_autorecalculatesKeyViewLoop) + objj_msgSend(self, "_dirtyKeyViewLoop"); +} +},["void","BOOL"]), new objj_method(sel_getUid("autorecalculatesKeyViewLoop"), function $CPWindow__autorecalculatesKeyViewLoop(self, _cmd) +{ with(self) +{ + return _autorecalculatesKeyViewLoop; +} +},["BOOL"]), new objj_method(sel_getUid("selectNextKeyView:"), function $CPWindow__selectNextKeyView_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(_firstResponder, "isKindOfClass:", objj_msgSend(CPView, "class"))) + objj_msgSend(self, "selectKeyViewFollowingView:", _firstResponder); +} +},["void","id"]), new objj_method(sel_getUid("selectPreviousKeyView:"), function $CPWindow__selectPreviousKeyView_(self, _cmd, sender) +{ with(self) +{ + if (objj_msgSend(_firstResponder, "isKindOfClass:", objj_msgSend(CPView, "class"))) + objj_msgSend(self, "selectKeyViewPrecedingView:", _firstResponder); +} +},["void","id"]), new objj_method(sel_getUid("selectKeyViewFollowingView:"), function $CPWindow__selectKeyViewFollowingView_(self, _cmd, aView) +{ with(self) +{ + if (_keyViewLoopIsDirty) + objj_msgSend(self, "recalculateKeyViewLoop"); + objj_msgSend(self, "makeFirstResponder:", objj_msgSend(aView, "nextValidKeyView")); +} +},["void","CPView"]), new objj_method(sel_getUid("selectKeyViewPrecedingView:"), function $CPWindow__selectKeyViewPrecedingView_(self, _cmd, aView) +{ with(self) +{ + if (_keyViewLoopIsDirty) + objj_msgSend(self, "recalculateKeyViewLoop"); + objj_msgSend(self, "makeFirstResponder:", objj_msgSend(aView, "previousValidKeyView")); +} +},["void","CPView"]), new objj_method(sel_getUid("setDefaultButtonCell:"), function $CPWindow__setDefaultButtonCell_(self, _cmd, aButton) +{ with(self) +{ + objj_msgSend(self, "setDefaultButton:", aButton); +} +},["void","CPButton"]), new objj_method(sel_getUid("defaultButtonCell"), function $CPWindow__defaultButtonCell(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "defaultButton"); +} +},["CPButton"]), new objj_method(sel_getUid("setDefaultButton:"), function $CPWindow__setDefaultButton_(self, _cmd, aButton) +{ with(self) +{ + if (_defaultButton === aButton) + return; + if (objj_msgSend(_defaultButton, "keyEquivalent") === CPCarriageReturnCharacter) + objj_msgSend(_defaultButton, "setKeyEquivalent:", nil); + _defaultButton = aButton; + if (objj_msgSend(_defaultButton, "keyEquivalent") !== CPCarriageReturnCharacter) + objj_msgSend(_defaultButton, "setKeyEquivalent:", CPCarriageReturnCharacter); +} +},["void","CPButton"]), new objj_method(sel_getUid("defaultButton"), function $CPWindow__defaultButton(self, _cmd) +{ with(self) +{ + return _defaultButton; +} +},["CPButton"]), new objj_method(sel_getUid("enableKeyEquivalentForDefaultButton"), function $CPWindow__enableKeyEquivalentForDefaultButton(self, _cmd) +{ with(self) +{ + _defaultButtonEnabled = YES; +} +},["void"]), new objj_method(sel_getUid("enableKeyEquivalentForDefaultButtonCell"), function $CPWindow__enableKeyEquivalentForDefaultButtonCell(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "enableKeyEquivalentForDefaultButton"); +} +},["void"]), new objj_method(sel_getUid("disableKeyEquivalentForDefaultButton"), function $CPWindow__disableKeyEquivalentForDefaultButton(self, _cmd) +{ with(self) +{ + _defaultButtonEnabled = NO; +} +},["void"]), new objj_method(sel_getUid("disableKeyEquivalentForDefaultButtonCell"), function $CPWindow__disableKeyEquivalentForDefaultButtonCell(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "disableKeyEquivalentForDefaultButton"); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPWindow__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPWindow, "class")) + return; + var bundle = objj_msgSend(CPBundle, "bundleForClass:", objj_msgSend(CPWindow, "class")); + CPWindowSavingImage = objj_msgSend(objj_msgSend(CPImage, "alloc"), "initWithContentsOfFile:size:", objj_msgSend(bundle, "pathForResource:", "CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif"), CGSizeMake(16.0, 16.0)) +} +},["void"]), new objj_method(sel_getUid("_windowViewClassForStyleMask:"), function $CPWindow___windowViewClassForStyleMask_(self, _cmd, aStyleMask) +{ with(self) +{ + if (aStyleMask & CPHUDBackgroundWindowMask) + return _CPHUDWindowView; + else if (aStyleMask === CPBorderlessWindowMask) + return _CPBorderlessWindowView; + else if (aStyleMask & CPDocModalWindowMask) + return _CPDocModalWindowView; + return _CPStandardWindowView; +} +},["Class","unsigned"]), new objj_method(sel_getUid("_windowViewClassForFullPlatformWindowStyleMask:"), function $CPWindow___windowViewClassForFullPlatformWindowStyleMask_(self, _cmd, aStyleMask) +{ with(self) +{ + return _CPBorderlessBridgeWindowView; +} +},["Class","unsigned"]), new objj_method(sel_getUid("frameRectForContentRect:styleMask:"), function $CPWindow__frameRectForContentRect_styleMask_(self, _cmd, aContentRect, aStyleMask) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "_windowViewClassForStyleMask:", aStyleMask), "frameRectForContentRect:", aContentRect); +} +},["CGRect","CGRect","unsigned"])]); +} +var keyViewComparator = function(a, b, context) +{ + var viewBounds = objj_msgSend(a, "convertRect:toView:", objj_msgSend(a, "bounds"), nil), + otherBounds = objj_msgSend(b, "convertRect:toView:", objj_msgSend(b, "bounds"), nil); + if (CGRectGetMinY(viewBounds) < CGRectGetMinY(otherBounds)) + return -1; + else if (CGRectGetMinY(viewBounds) == CGRectGetMinY(otherBounds) && CGRectGetMinX(viewBounds) < CGRectGetMinX(otherBounds)) + return -1; + else if (CGRectGetMinX(viewBounds) == CGRectGetMinX(otherBounds) && CGRectGetMinX(viewBounds) == CGRectGetMinX(otherBounds)) + return 0; + else + return 1; +} +{ +var the_class = objj_getClass("CPWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_synchronizeMenuBarTitleWithWindowTitle"), function $CPWindow___synchronizeMenuBarTitleWithWindowTitle(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(_windowController, "document") || !objj_msgSend(self, "isMainWindow")) + return; + objj_msgSend(CPMenu, "setMenuBarTitle:", _title); +} +},["void"])]); +} +{ +var the_class = objj_getClass("CPWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("resizeWithOldPlatformWindowSize:"), function $CPWindow__resizeWithOldPlatformWindowSize_(self, _cmd, aSize) +{ with(self) +{ + if (objj_msgSend(self, "isFullPlatformWindow")) + return objj_msgSend(self, "setFrame:", objj_msgSend(_platformWindow, "visibleFrame")); + if (_autoresizingMask == CPWindowNotSizable) + return; + var frame = objj_msgSend(_platformWindow, "contentBounds"), + newFrame = CGRectMakeCopy(_frame), + dX = (CGRectGetWidth(frame) - aSize.width) / + (((_autoresizingMask & CPWindowMinXMargin) ? 1 : 0) + (_autoresizingMask & CPWindowWidthSizable ? 1 : 0) + (_autoresizingMask & CPWindowMaxXMargin ? 1 : 0)), + dY = (CGRectGetHeight(frame) - aSize.height) / + ((_autoresizingMask & CPWindowMinYMargin ? 1 : 0) + (_autoresizingMask & CPWindowHeightSizable ? 1 : 0) + (_autoresizingMask & CPWindowMaxYMargin ? 1 : 0)); + if (_autoresizingMask & CPWindowMinXMargin) + newFrame.origin.x += dX; + if (_autoresizingMask & CPWindowWidthSizable) + newFrame.size.width += dX; + if (_autoresizingMask & CPWindowMinYMargin) + newFrame.origin.y += dY; + if (_autoresizingMask & CPWindowHeightSizable) + newFrame.size.height += dY; + objj_msgSend(self, "setFrame:", newFrame); +} +},["void","CGSize"]), new objj_method(sel_getUid("setAutoresizingMask:"), function $CPWindow__setAutoresizingMask_(self, _cmd, anAutoresizingMask) +{ with(self) +{ + _autoresizingMask = anAutoresizingMask; +} +},["void","unsigned"]), new objj_method(sel_getUid("autoresizingMask"), function $CPWindow__autoresizingMask(self, _cmd) +{ with(self) +{ + return _autoresizingMask; +} +},["unsigned"]), new objj_method(sel_getUid("convertBaseToGlobal:"), function $CPWindow__convertBaseToGlobal_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(CPPlatform, "isBrowser") ? objj_msgSend(self, "convertBaseToPlatformWindow:", aPoint) : objj_msgSend(self, "convertBaseToScreen:", aPoint); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertGlobalToBase:"), function $CPWindow__convertGlobalToBase_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(CPPlatform, "isBrowser") ? objj_msgSend(self, "convertPlatformWindowToBase:", aPoint) : objj_msgSend(self, "convertScreenToBase:", aPoint); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertBaseToPlatformWindow:"), function $CPWindow__convertBaseToPlatformWindow_(self, _cmd, aPoint) +{ with(self) +{ + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + return aPoint; + var origin = objj_msgSend(self, "frame").origin; + return { x:aPoint.x + origin.x, y:aPoint.y + origin.y }; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertPlatformWindowToBase:"), function $CPWindow__convertPlatformWindowToBase_(self, _cmd, aPoint) +{ with(self) +{ + if (objj_msgSend(self, "_sharesChromeWithPlatformWindow")) + return aPoint; + var origin = objj_msgSend(self, "frame").origin; + return { x:aPoint.x - origin.x, y:aPoint.y - origin.y }; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertScreenToBase:"), function $CPWindow__convertScreenToBase_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(self, "convertPlatformWindowToBase:", objj_msgSend(_platformWindow, "convertScreenToBase:", aPoint)); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertBaseToScreen:"), function $CPWindow__convertBaseToScreen_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(_platformWindow, "convertBaseToScreen:", objj_msgSend(self, "convertBaseToPlatformWindow:", aPoint)); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("_setSharesChromeWithPlatformWindow:"), function $CPWindow___setSharesChromeWithPlatformWindow_(self, _cmd, shouldShareFrameWithPlatformWindow) +{ with(self) +{ + if (shouldShareFrameWithPlatformWindow && objj_msgSend(CPPlatform, "isBrowser")) + return; + _sharesChromeWithPlatformWindow = shouldShareFrameWithPlatformWindow; + objj_msgSend(self, "_updateShadow"); +} +},["void","BOOL"]), new objj_method(sel_getUid("_sharesChromeWithPlatformWindow"), function $CPWindow___sharesChromeWithPlatformWindow(self, _cmd) +{ with(self) +{ + return _sharesChromeWithPlatformWindow; +} +},["BOOL"]), new objj_method(sel_getUid("undoManager"), function $CPWindow__undoManager(self, _cmd) +{ with(self) +{ + if (_undoManager) + return _undoManager; + var documentUndoManager = objj_msgSend(objj_msgSend(_windowController, "document"), "undoManager"); + if (documentUndoManager) + return documentUndoManager; + if (_delegateRespondsToWindowWillReturnUndoManagerSelector) + return objj_msgSend(_delegate, "windowWillReturnUndoManager:", self); + if (!_undoManager) + _undoManager = objj_msgSend(objj_msgSend(CPUndoManager, "alloc"), "init"); + return _undoManager; +} +},["CPUndoManager"]), new objj_method(sel_getUid("undo:"), function $CPWindow__undo_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "undoManager"), "undo"); +} +},["void","id"]), new objj_method(sel_getUid("redo:"), function $CPWindow__redo_(self, _cmd, aSender) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "undoManager"), "redo"); +} +},["void","id"]), new objj_method(sel_getUid("containsPoint:"), function $CPWindow__containsPoint_(self, _cmd, aPoint) +{ with(self) +{ + return CGRectContainsPoint(_frame, aPoint); +} +},["BOOL","CGPoint"])]); +} +{ +var the_class = objj_getClass("CPWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setFullBridge:"), function $CPWindow__setFullBridge_(self, _cmd, shouldBeFullBridge) +{ with(self) +{ + objj_msgSend(self, "setFullPlatformWindow:", shouldBeFullBridge); +} +},["void","BOOL"]), new objj_method(sel_getUid("isFullBridge"), function $CPWindow__isFullBridge(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "isFullPlatformWindow"); +} +},["BOOL"]), new objj_method(sel_getUid("convertBaseToBridge:"), function $CPWindow__convertBaseToBridge_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(self, "convertBaseToPlatformWindow:", aPoint); +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertBridgeToBase:"), function $CPWindow__convertBridgeToBase_(self, _cmd, aPoint) +{ with(self) +{ + return objj_msgSend(self, "convertPlatformWindowToBase:", aPoint); +} +},["CGPoint","CGPoint"])]); +} +var interpolate = function(fromValue, toValue, progress) +{ + return fromValue + (toValue - fromValue) * progress; +} +{var the_class = objj_allocateClassPair(CPAnimation, "_CPWindowFrameAnimation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_window"), new objj_ivar("_startFrame"), new objj_ivar("_targetFrame")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithWindow:targetFrame:"), function $_CPWindowFrameAnimation__initWithWindow_targetFrame_(self, _cmd, aWindow, aTargetFrame) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowFrameAnimation").super_class }, "initWithDuration:animationCurve:", objj_msgSend(aWindow, "animationResizeTime:", aTargetFrame), CPAnimationLinear); + if (self) + { + _window = aWindow; + _targetFrame = CGRectMakeCopy(aTargetFrame); + _startFrame = CGRectMakeCopy(objj_msgSend(_window, "frame")); + } + return self; +} +},["id","CPWindow","CGRect"]), new objj_method(sel_getUid("startAnimation"), function $_CPWindowFrameAnimation__startAnimation(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowFrameAnimation").super_class }, "startAnimation"); + _window._isAnimating = YES; +} +},["void"]), new objj_method(sel_getUid("setCurrentProgress:"), function $_CPWindowFrameAnimation__setCurrentProgress_(self, _cmd, aProgress) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPWindowFrameAnimation").super_class }, "setCurrentProgress:", aProgress); + var value = objj_msgSend(self, "currentValue"); + if (value == 1.0) + _window._isAnimating = NO; + var newFrame = CGRectMake(interpolate(CGRectGetMinX(_startFrame), CGRectGetMinX(_targetFrame), value), + interpolate(CGRectGetMinY(_startFrame), CGRectGetMinY(_targetFrame), value), + interpolate(CGRectGetWidth(_startFrame), CGRectGetWidth(_targetFrame), value), + interpolate(CGRectGetHeight(_startFrame), CGRectGetHeight(_targetFrame), value)); + objj_msgSend(_window, "setFrame:display:animate:", newFrame, YES, NO); +} +},["void","float"])]); +} +_CPWindowFullPlatformWindowSessionMake= function(aWindowView, aContentRect, hasShadow, aLevel) +{ + return { windowView:aWindowView, contentRect:aContentRect, hasShadow:hasShadow, level:aLevel }; +} +CPStandardWindowShadowStyle = 0; +CPMenuWindowShadowStyle = 1; +CPPanelWindowShadowStyle = 2; +CPCustomWindowShadowStyle = 3; +objj_executeFile("_CPWindowView.j", YES); +objj_executeFile("_CPStandardWindowView.j", YES); +objj_executeFile("_CPDocModalWindowView.j", YES); +objj_executeFile("_CPHUDWindowView.j", YES); +objj_executeFile("_CPBorderlessWindowView.j", YES); +objj_executeFile("_CPBorderlessBridgeWindowView.j", YES); +objj_executeFile("CPDragServer.j", YES); +objj_executeFile("CPView.j", YES); + +p;12;CPPlatform.jt;1867;@STATIC;1.0;I;21;Foundation/CPObject.jt;1822;objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPBasePlatform"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("bootstrap"), function $CPBasePlatform__bootstrap(self, _cmd) +{ with(self) +{ + objj_msgSend(CPPlatformString, "bootstrap"); + objj_msgSend(CPPlatformWindow, "setPrimaryPlatformWindow:", objj_msgSend(objj_msgSend(CPPlatformWindow, "alloc"), "_init")); +} +},["void"]), new objj_method(sel_getUid("isBrowser"), function $CPBasePlatform__isBrowser(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("supportsDragAndDrop"), function $CPBasePlatform__supportsDragAndDrop(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("supportsNativeMainMenu"), function $CPBasePlatform__supportsNativeMainMenu(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("terminateApplication"), function $CPBasePlatform__terminateApplication(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("activateIgnoringOtherApps:"), function $CPBasePlatform__activateIgnoringOtherApps_(self, _cmd, shouldIgnoreOtherApps) +{ with(self) +{ +} +},["void","BOOL"]), new objj_method(sel_getUid("deactivate"), function $CPBasePlatform__deactivate(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("hideOtherApplications:"), function $CPBasePlatform__hideOtherApplications_(self, _cmd, aSender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("hide:"), function $CPBasePlatform__hide_(self, _cmd, aSender) +{ with(self) +{ +} +},["void","id"])]); +} +{var the_class = objj_allocateClassPair(CPBasePlatform, "CPPlatform"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;18;CPPlatformString.jt;796;@STATIC;1.0;I;21;Foundation/CPObject.jt;752;objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPBasePlatformString"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("bootstrap"), function $CPBasePlatformString__bootstrap(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("sizeOfString:withFont:forWidth:"), function $CPBasePlatformString__sizeOfString_withFont_forWidth_(self, _cmd, aString, aFont, aWidth) +{ with(self) +{ + return { width:0.0, height:0.0 }; +} +},["CGSize","CPString","CPFont","float"])]); +} +{var the_class = objj_allocateClassPair(CPBasePlatformString, "CPPlatformString"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;18;CPPlatformWindow.jt;5928;@STATIC;1.0;I;21;Foundation/CPObject.jt;5883;objj_executeFile("Foundation/CPObject.j", NO); +var PrimaryPlatformWindow = NULL; +{var the_class = objj_allocateClassPair(CPObject, "CPPlatformWindow"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_contentRect"), new objj_ivar("_level"), new objj_ivar("_hasShadow"), new objj_ivar("_shadowStyle")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithContentRect:"), function $CPPlatformWindow__initWithContentRect_(self, _cmd, aRect) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPlatformWindow").super_class }, "init"); + if (self) + { + _contentRect = { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; + } + return self; +} +},["id","CGRect"]), new objj_method(sel_getUid("init"), function $CPPlatformWindow__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithContentRect:", { origin: { x:0.0, y:0.0 }, size: { width:400.0, height:500.0 } }); +} +},["id"]), new objj_method(sel_getUid("contentRect"), function $CPPlatformWindow__contentRect(self, _cmd) +{ with(self) +{ + return { origin: { x:_contentRect.origin.x, y:_contentRect.origin.y }, size: { width:_contentRect.size.width, height:_contentRect.size.height } }; +} +},["CGRect"]), new objj_method(sel_getUid("contentBounds"), function $CPPlatformWindow__contentBounds(self, _cmd) +{ with(self) +{ + var contentBounds = objj_msgSend(self, "contentRect"); + contentBounds.origin = { x:0.0, y:0.0 }; + return contentBounds; +} +},["CGRect"]), new objj_method(sel_getUid("visibleFrame"), function $CPPlatformWindow__visibleFrame(self, _cmd) +{ with(self) +{ + var frame = objj_msgSend(self, "contentBounds"); + frame.origin = CGPointMakeZero(); + if (objj_msgSend(CPMenu, "menuBarVisible") && objj_msgSend(CPPlatformWindow, "primaryPlatformWindow") === self) + { + var menuBarHeight = objj_msgSend(objj_msgSend(CPApp, "mainMenu"), "menuBarHeight"); + frame.origin.y += menuBarHeight; + frame.size.height -= menuBarHeight; + } + return frame; +} +},["CGRect"]), new objj_method(sel_getUid("usableContentFrame"), function $CPPlatformWindow__usableContentFrame(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "visibleFrame"); +} +},["CGRect"]), new objj_method(sel_getUid("setContentRect:"), function $CPPlatformWindow__setContentRect_(self, _cmd, aRect) +{ with(self) +{ + if (!aRect || ((_contentRect.origin.x == aRect.origin.x && _contentRect.origin.y == aRect.origin.y) && (_contentRect.size.width == aRect.size.width && _contentRect.size.height == aRect.size.height))) + return; + _contentRect = { origin: { x:aRect.origin.x, y:aRect.origin.y }, size: { width:aRect.size.width, height:aRect.size.height } }; +} +},["void","CGRect"]), new objj_method(sel_getUid("updateFromNativeContentRect"), function $CPPlatformWindow__updateFromNativeContentRect(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "setContentRect:", objj_msgSend(self, "nativeContentRect")); +} +},["void"]), new objj_method(sel_getUid("convertBaseToScreen:"), function $CPPlatformWindow__convertBaseToScreen_(self, _cmd, aPoint) +{ with(self) +{ + var contentRect = objj_msgSend(self, "contentRect"); + return { x:aPoint.x + (contentRect.origin.x), y:aPoint.y + (contentRect.origin.y) }; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("convertScreenToBase:"), function $CPPlatformWindow__convertScreenToBase_(self, _cmd, aPoint) +{ with(self) +{ + var contentRect = objj_msgSend(self, "contentRect"); + return { x:aPoint.x - (contentRect.origin.x), y:aPoint.y - (contentRect.origin.y) }; +} +},["CGPoint","CGPoint"]), new objj_method(sel_getUid("isVisible"), function $CPPlatformWindow__isVisible(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("deminiaturize:"), function $CPPlatformWindow__deminiaturize_(self, _cmd, sender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("miniaturize:"), function $CPPlatformWindow__miniaturize_(self, _cmd, sender) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("moveWindow:fromLevel:toLevel:"), function $CPPlatformWindow__moveWindow_fromLevel_toLevel_(self, _cmd, aWindow, fromLevel, toLevel) +{ with(self) +{ +} +},["void","CPWindow","int","int"]), new objj_method(sel_getUid("setLevel:"), function $CPPlatformWindow__setLevel_(self, _cmd, aLevel) +{ with(self) +{ + _level = aLevel; +} +},["void","CPInteger"]), new objj_method(sel_getUid("setHasShadow:"), function $CPPlatformWindow__setHasShadow_(self, _cmd, shouldHaveShadow) +{ with(self) +{ + _hasShadow = shouldHaveShadow; +} +},["void","BOOL"]), new objj_method(sel_getUid("setShadowStyle:"), function $CPPlatformWindow__setShadowStyle_(self, _cmd, aStyle) +{ with(self) +{ + _shadowStyle = aStyle; +} +},["void","int"]), new objj_method(sel_getUid("supportsFullPlatformWindows"), function $CPPlatformWindow__supportsFullPlatformWindows(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPPlatform, "isBrowser"); +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("visiblePlatformWindows"), function $CPPlatformWindow__visiblePlatformWindows(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPSet, "set"); +} +},["CPSet"]), new objj_method(sel_getUid("supportsMultipleInstances"), function $CPPlatformWindow__supportsMultipleInstances(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("primaryPlatformWindow"), function $CPPlatformWindow__primaryPlatformWindow(self, _cmd) +{ with(self) +{ + return PrimaryPlatformWindow; +} +},["CPPlatformWindow"]), new objj_method(sel_getUid("setPrimaryPlatformWindow:"), function $CPPlatformWindow__setPrimaryPlatformWindow_(self, _cmd, aPlatformWindow) +{ with(self) +{ + PrimaryPlatformWindow = aPlatformWindow; +} +},["void","CPPlatformWindow"])]); +} + +p;18;CPDOMWindowLayer.jt;3062;@STATIC;1.0;I;20;Foundation/CPArray.jI;21;Foundation/CPObject.jt;2992;objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPDOMWindowLayer"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_level"), new objj_ivar("_windows"), new objj_ivar("_DOMElement")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLevel:"), function $CPDOMWindowLayer__initWithLevel_(self, _cmd, aLevel) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDOMWindowLayer").super_class }, "init"); + if (self) + { + _level = aLevel; + _windows = []; + _DOMElement = document.createElement("div"); + _DOMElement.style.position = "absolute"; + _DOMElement.style.top = "0px"; + _DOMElement.style.left = "0px"; + _DOMElement.style.width = "1px"; + _DOMElement.style.height = "1px"; + } + return self; +} +},["id","int"]), new objj_method(sel_getUid("level"), function $CPDOMWindowLayer__level(self, _cmd) +{ with(self) +{ + return _level; +} +},["int"]), new objj_method(sel_getUid("removeWindow:"), function $CPDOMWindowLayer__removeWindow_(self, _cmd, aWindow) +{ with(self) +{ + if (!aWindow._isVisible) + return; + var index = aWindow._index, + count = _windows.length - 1; + _DOMElement.removeChild(aWindow._DOMElement); + objj_msgSend(_windows, "removeObjectAtIndex:", aWindow._index); + for (; index < count; ++index) + { + _windows[index]._index = index; + _windows[index]._DOMElement.style.zIndex = index; + } + aWindow._isVisible = NO; +} +},["void","CPWindow"]), new objj_method(sel_getUid("insertWindow:atIndex:"), function $CPDOMWindowLayer__insertWindow_atIndex_(self, _cmd, aWindow, anIndex) +{ with(self) +{ + var count = objj_msgSend(_windows, "count"), + zIndex = (anIndex == CPNotFound ? count : anIndex), + isVisible = aWindow._isVisible; + if (isVisible) + { + zIndex = MIN(zIndex, aWindow._index); + objj_msgSend(_windows, "removeObjectAtIndex:", aWindow._index); + } + else + ++count; + if (anIndex == CPNotFound || anIndex >= count) + objj_msgSend(_windows, "addObject:", aWindow); + else + objj_msgSend(_windows, "insertObject:atIndex:", aWindow, anIndex); + for (; zIndex < count; ++zIndex) + { + _windows[zIndex]._index = zIndex; + _windows[zIndex]._DOMElement.style.zIndex = zIndex; + } + if (aWindow._DOMElement.parentNode !== _DOMElement) + { + _DOMElement.appendChild(aWindow._DOMElement); + aWindow._isVisible = YES; + if (objj_msgSend(aWindow, "isFullBridge")) + objj_msgSend(aWindow, "setFrame:", objj_msgSend(aWindow._platformWindow, "usableContentFrame")); + } +} +},["void","CPWindow","unsigned"]), new objj_method(sel_getUid("orderedWindows"), function $CPDOMWindowLayer__orderedWindows(self, _cmd) +{ with(self) +{ + return _windows; +} +},["CPArray"])]); +} + +p;22;CPPlatformWindow+DOM.jt;54859;@STATIC;1.0;I;21;Foundation/CPObject.jI;22;Foundation/CPRunLoop.ji;9;CPEvent.ji;8;CPText.ji;17;CPCompatibility.ji;18;CPDOMWindowLayer.ji;12;CPPlatform.ji;18;CPPlatformWindow.ji;26;CPPlatformWindow+DOMKeys.jt;54645;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("Foundation/CPRunLoop.j", NO); +objj_executeFile("CPEvent.j", YES); +objj_executeFile("CPText.j", YES); +objj_executeFile("CPCompatibility.j", YES); +objj_executeFile("CPDOMWindowLayer.j", YES); +objj_executeFile("CPPlatform.j", YES); +objj_executeFile("CPPlatformWindow.j", YES); +objj_executeFile("CPPlatformWindow+DOMKeys.j", YES); +var PlatformWindows = objj_msgSend(CPSet, "set"); +var CPDOMEventGetClickCount, + CPDOMEventStop, + StopDOMEventPropagation, + StopContextMenuDOMEventPropagation; +var KeyCodesToPrevent = {}, + CharacterKeysToPrevent = {}, + KeyCodesToAllow = {}, + MozKeyCodeToKeyCodeMap = { + 61: 187, + 59: 186 + }, + KeyCodesToUnicodeMap = {}; +KeyCodesToPrevent[CPKeyCodes.A] = YES; +KeyCodesToAllow[CPKeyCodes.F1] = YES; +KeyCodesToAllow[CPKeyCodes.F2] = YES; +KeyCodesToAllow[CPKeyCodes.F3] = YES; +KeyCodesToAllow[CPKeyCodes.F4] = YES; +KeyCodesToAllow[CPKeyCodes.F5] = YES; +KeyCodesToAllow[CPKeyCodes.F6] = YES; +KeyCodesToAllow[CPKeyCodes.F7] = YES; +KeyCodesToAllow[CPKeyCodes.F8] = YES; +KeyCodesToAllow[CPKeyCodes.F9] = YES; +KeyCodesToAllow[CPKeyCodes.F10] = YES; +KeyCodesToAllow[CPKeyCodes.F11] = YES; +KeyCodesToAllow[CPKeyCodes.F12] = YES; +KeyCodesToUnicodeMap[CPKeyCodes.BACKSPACE] = CPDeleteCharacter; +KeyCodesToUnicodeMap[CPKeyCodes.DELETE] = CPDeleteFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.TAB] = CPTabCharacter; +KeyCodesToUnicodeMap[CPKeyCodes.ENTER] = CPCarriageReturnCharacter; +KeyCodesToUnicodeMap[CPKeyCodes.ESC] = CPEscapeFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.PAGE_UP] = CPPageUpFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.PAGE_DOWN] = CPPageDownFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.LEFT] = CPLeftArrowFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.UP] = CPUpArrowFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.RIGHT] = CPRightArrowFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.DOWN] = CPDownArrowFunctionKey; +KeyCodesToUnicodeMap[CPKeyCodes.SEMICOLON] = ";"; +KeyCodesToUnicodeMap[CPKeyCodes.DASH] = "-"; +KeyCodesToUnicodeMap[CPKeyCodes.EQUALS] = "="; +KeyCodesToUnicodeMap[CPKeyCodes.COMMA] = ","; +KeyCodesToUnicodeMap[CPKeyCodes.PERIOD] = "."; +KeyCodesToUnicodeMap[CPKeyCodes.SLASH] = "/"; +KeyCodesToUnicodeMap[CPKeyCodes.APOSTROPHE] = "`"; +KeyCodesToUnicodeMap[CPKeyCodes.SINGLE_QUOTE] = "'"; +KeyCodesToUnicodeMap[CPKeyCodes.OPEN_SQUARE_BRACKET] = "["; +KeyCodesToUnicodeMap[CPKeyCodes.BACKSLASH] = "\\"; +KeyCodesToUnicodeMap[CPKeyCodes.CLOSE_SQUARE_BRACKET] = "]"; +var ModifierKeyCodes = [ + CPKeyCodes.META, + CPKeyCodes.MAC_FF_META, + CPKeyCodes.CTRL, + CPKeyCodes.ALT, + CPKeyCodes.SHIFT +]; +var supportsNativeDragAndDrop = objj_msgSend(CPPlatform, "supportsDragAndDrop"); +{ +var the_class = objj_getClass("CPPlatformWindow") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPPlatformWindow\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_init"), function $CPPlatformWindow___init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPlatformWindow").super_class }, "init"); + if (self) + { + _DOMWindow = window; + _contentRect = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + _windowLevels = []; + _windowLayers = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(self, "registerDOMWindow"); + objj_msgSend(self, "updateFromNativeContentRect"); + _charCodes = {}; + } + return self; +} +},["id"]), new objj_method(sel_getUid("nativeContentRect"), function $CPPlatformWindow__nativeContentRect(self, _cmd) +{ with(self) +{ + if (!_DOMWindow) + return objj_msgSend(self, "contentRect"); + if (_DOMWindow.cpFrame) + return _DOMWindow.cpFrame(); + var contentRect = { origin: { x:0.0, y:0.0 }, size: { width:0.0, height:0.0 } }; + if (window.screenTop) + contentRect.origin = { x:_DOMWindow.screenLeft, y:_DOMWindow.screenTop }; + else if (window.screenX) + contentRect.origin = { x:_DOMWindow.screenX, y:_DOMWindow.screenY }; + if (_DOMWindow.innerWidth) + contentRect.size = { width:_DOMWindow.innerWidth, height:_DOMWindow.innerHeight }; + else if (document.documentElement && document.documentElement.clientWidth) + contentRect.size = { width:_DOMWindow.document.documentElement.clientWidth, height:_DOMWindow.document.documentElement.clientHeight }; + else + contentRect.size = { width:_DOMWindow.document.body.clientWidth, height:_DOMWindow.document.body.clientHeight }; + return contentRect; +} +},["CGRect"]), new objj_method(sel_getUid("updateNativeContentRect"), function $CPPlatformWindow__updateNativeContentRect(self, _cmd) +{ with(self) +{ + if (!_DOMWindow) + return; + if (typeof _DOMWindow["cpSetFrame"] === "function") + return _DOMWindow.cpSetFrame(objj_msgSend(self, "contentRect")); + var origin = objj_msgSend(self, "contentRect").origin, + nativeOrigin = objj_msgSend(self, "nativeContentRect").origin; + if (origin.x !== nativeOrigin.x || origin.y !== nativeOrigin.y) + { + _DOMWindow.moveBy(origin.x - nativeOrigin.x, origin.y - nativeOrigin.y); + } + var size = objj_msgSend(self, "contentRect").size, + nativeSize = objj_msgSend(self, "nativeContentRect").size; + if (size.width !== nativeSize.width || size.height !== nativeSize.height) + { + _DOMWindow.resizeBy(size.width - nativeSize.width, size.height - nativeSize.height); + } +} +},["void"]), new objj_method(sel_getUid("orderBack:"), function $CPPlatformWindow__orderBack_(self, _cmd, aSender) +{ with(self) +{ + if (_DOMWindow) + _DOMWindow.blur(); +} +},["void","id"]), new objj_method(sel_getUid("createDOMElements"), function $CPPlatformWindow__createDOMElements(self, _cmd) +{ with(self) +{ + var theDocument = _DOMWindow.document; + _DOMFocusElement = theDocument.createElement("input"); + _DOMFocusElement.style.position = "absolute"; + _DOMFocusElement.style.zIndex = "-1000"; + _DOMFocusElement.style.opacity = "0"; + _DOMFocusElement.style.filter = "alpha(opacity=0)"; + _DOMFocusElement.className = "cpdontremove"; + _DOMBodyElement.appendChild(_DOMFocusElement); + _DOMPasteboardElement = theDocument.createElement("textarea"); + _DOMPasteboardElement.style.position = "absolute"; + _DOMPasteboardElement.style.top = "-10000px"; + _DOMPasteboardElement.style.zIndex = "999"; + _DOMPasteboardElement.className = "cpdontremove"; + _DOMBodyElement.appendChild(_DOMPasteboardElement); + _DOMPasteboardElement.blur(); + _DOMEventGuard = theDocument.createElement("div"); + _DOMEventGuard.style.position = "absolute"; + _DOMEventGuard.style.top = "0px"; + _DOMEventGuard.style.left = "0px"; + _DOMEventGuard.style.width = "100%"; + _DOMEventGuard.style.height = "100%"; + _DOMEventGuard.style.zIndex = "999"; + _DOMEventGuard.style.display = "none"; + _DOMEventGuard.className = "cpdontremove"; + _DOMBodyElement.appendChild(_DOMEventGuard); + _DOMScrollingElement = theDocument.createElement("div"); + _DOMScrollingElement.style.position = "absolute"; + _DOMScrollingElement.style.visibility = "hidden"; + _DOMScrollingElement.style.zIndex = "998"; + _DOMScrollingElement.style.height = "60px"; + _DOMScrollingElement.style.width = "60px"; + _DOMScrollingElement.style.overflow = "scroll"; + _DOMScrollingElement.style.opacity = "0"; + _DOMScrollingElement.style.filter = "alpha(opacity=0)"; + _DOMScrollingElement.className = "cpdontremove"; + _DOMBodyElement.appendChild(_DOMScrollingElement); + var _DOMInnerScrollingElement = theDocument.createElement("div"); + _DOMInnerScrollingElement.style.width = "400px"; + _DOMInnerScrollingElement.style.height = "400px"; + _DOMScrollingElement.appendChild(_DOMInnerScrollingElement); + _DOMScrollingElement.scrollTop = 150; + _DOMScrollingElement.scrollLeft = 150; +} +},["void"]), new objj_method(sel_getUid("registerDOMWindow"), function $CPPlatformWindow__registerDOMWindow(self, _cmd) +{ with(self) +{ + var theDocument = _DOMWindow.document; + _DOMBodyElement = theDocument.getElementById("cappuccino-body") || theDocument.body; + if (supportsNativeDragAndDrop) + _DOMBodyElement.style["-khtml-user-select"] = "none"; + _DOMBodyElement.webkitTouchCallout = "none"; + objj_msgSend(self, "createDOMElements"); + objj_msgSend(self, "_addLayers"); + var theClass = objj_msgSend(self, "class"), + dragEventImplementation = class_getMethodImplementation(theClass, sel_getUid("dragEvent:")), + dragEventCallback = function (anEvent) { dragEventImplementation(self, nil, anEvent); }, + resizeEventSelector = sel_getUid("resizeEvent:"), + resizeEventImplementation = class_getMethodImplementation(theClass, resizeEventSelector), + resizeEventCallback = function (anEvent) { resizeEventImplementation(self, nil, anEvent); }, + copyEventSelector = sel_getUid("copyEvent:"), + copyEventImplementation = class_getMethodImplementation(theClass, copyEventSelector), + copyEventCallback = function (anEvent) {copyEventImplementation(self, nil, anEvent); }, + pasteEventSelector = sel_getUid("pasteEvent:"), + pasteEventImplementation = class_getMethodImplementation(theClass, pasteEventSelector), + pasteEventCallback = function (anEvent) {pasteEventImplementation(self, nil, anEvent); }, + keyEventSelector = sel_getUid("keyEvent:"), + keyEventImplementation = class_getMethodImplementation(theClass, keyEventSelector), + keyEventCallback = function (anEvent) { keyEventImplementation(self, nil, anEvent); }, + mouseEventSelector = sel_getUid("mouseEvent:"), + mouseEventImplementation = class_getMethodImplementation(theClass, mouseEventSelector), + mouseEventCallback = function (anEvent) { mouseEventImplementation(self, nil, anEvent); }, + contextMenuEventSelector = sel_getUid("contextMenuEvent:"), + contextMenuEventImplementation = class_getMethodImplementation(theClass, contextMenuEventSelector), + contextMenuEventCallback = function (anEvent) { return contextMenuEventImplementation(self, nil, anEvent); }, + scrollEventSelector = sel_getUid("scrollEvent:"), + scrollEventImplementation = class_getMethodImplementation(theClass, scrollEventSelector), + scrollEventCallback = function (anEvent) { scrollEventImplementation(self, nil, anEvent); }, + touchEventSelector = sel_getUid("touchEvent:"), + touchEventImplementation = class_getMethodImplementation(theClass, touchEventSelector), + touchEventCallback = function (anEvent) { touchEventImplementation(self, nil, anEvent); }; + if (theDocument.addEventListener) + { + if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + theDocument.addEventListener("dragstart", dragEventCallback, NO); + theDocument.addEventListener("drag", dragEventCallback, NO); + theDocument.addEventListener("dragend", dragEventCallback, NO); + theDocument.addEventListener("dragover", dragEventCallback, NO); + theDocument.addEventListener("dragleave", dragEventCallback, NO); + theDocument.addEventListener("drop", dragEventCallback, NO); + } + theDocument.addEventListener("mouseup", mouseEventCallback, NO); + theDocument.addEventListener("mousedown", mouseEventCallback, NO); + theDocument.addEventListener("mousemove", mouseEventCallback, NO); + theDocument.addEventListener("contextmenu", contextMenuEventCallback, NO); + theDocument.addEventListener("beforecopy", copyEventCallback, NO); + theDocument.addEventListener("beforecut", copyEventCallback, NO); + theDocument.addEventListener("beforepaste", pasteEventCallback, NO); + theDocument.addEventListener("keyup", keyEventCallback, NO); + theDocument.addEventListener("keydown", keyEventCallback, NO); + theDocument.addEventListener("keypress", keyEventCallback, NO); + theDocument.addEventListener("touchstart", touchEventCallback, NO); + theDocument.addEventListener("touchend", touchEventCallback, NO); + theDocument.addEventListener("touchmove", touchEventCallback, NO); + theDocument.addEventListener("touchcancel", touchEventCallback, NO); + _DOMWindow.addEventListener("DOMMouseScroll", scrollEventCallback, NO); + _DOMWindow.addEventListener("mousewheel", scrollEventCallback, NO); + _DOMWindow.addEventListener("resize", resizeEventCallback, NO); + _DOMWindow.addEventListener("unload", function() + { + objj_msgSend(self, "updateFromNativeContentRect"); + objj_msgSend(self, "_removeLayers"); + theDocument.removeEventListener("mouseup", mouseEventCallback, NO); + theDocument.removeEventListener("mousedown", mouseEventCallback, NO); + theDocument.removeEventListener("mousemove", mouseEventCallback, NO); + theDocument.removeEventListener("contextmenu", contextMenuEventCallback, NO); + theDocument.removeEventListener("keyup", keyEventCallback, NO); + theDocument.removeEventListener("keydown", keyEventCallback, NO); + theDocument.removeEventListener("keypress", keyEventCallback, NO); + theDocument.removeEventListener("beforecopy", copyEventCallback, NO); + theDocument.removeEventListener("beforecut", copyEventCallback, NO); + theDocument.removeEventListener("beforepaste", pasteEventCallback, NO); + theDocument.removeEventListener("touchstart", touchEventCallback, NO); + theDocument.removeEventListener("touchend", touchEventCallback, NO); + theDocument.removeEventListener("touchmove", touchEventCallback, NO); + _DOMWindow.removeEventListener("resize", resizeEventCallback, NO); + _DOMWindow.removeEventListener("DOMMouseScroll", scrollEventCallback, NO); + _DOMWindow.removeEventListener("mousewheel", scrollEventCallback, NO); + objj_msgSend(PlatformWindows, "removeObject:", self); + self._DOMWindow = nil; + }, NO); + } + else + { + theDocument.attachEvent("onmouseup", mouseEventCallback); + theDocument.attachEvent("onmousedown", mouseEventCallback); + theDocument.attachEvent("onmousemove", mouseEventCallback); + theDocument.attachEvent("ondblclick", mouseEventCallback); + theDocument.attachEvent("oncontextmenu", contextMenuEventCallback); + theDocument.attachEvent("onkeyup", keyEventCallback); + theDocument.attachEvent("onkeydown", keyEventCallback); + theDocument.attachEvent("onkeypress", keyEventCallback); + _DOMWindow.attachEvent("onresize", resizeEventCallback); + _DOMWindow.onmousewheel = scrollEventCallback; + theDocument.onmousewheel = scrollEventCallback; + _DOMBodyElement.ondrag = function () { return NO; }; + _DOMBodyElement.onselectstart = function () { return _DOMWindow.event.srcElement === _DOMPasteboardElement; }; + _DOMWindow.attachEvent("onbeforeunload", function() + { + objj_msgSend(self, "updateFromNativeContentRect"); + objj_msgSend(self, "_removeLayers"); + theDocument.detachEvent("onmouseup", mouseEventCallback); + theDocument.detachEvent("onmousedown", mouseEventCallback); + theDocument.detachEvent("onmousemove", mouseEventCallback); + theDocument.detachEvent("ondblclick", mouseEventCallback); + theDocument.detachEvent("oncontextmenu", contextMenuEventCallback); + theDocument.detachEvent("onkeyup", keyEventCallback); + theDocument.detachEvent("onkeydown", keyEventCallback); + theDocument.detachEvent("onkeypress", keyEventCallback); + _DOMWindow.detachEvent("onresize", resizeEventCallback); + _DOMWindow.onmousewheel = NULL; + theDocument.onmousewheel = NULL; + _DOMBodyElement.ondrag = NULL; + _DOMBodyElement.onselectstart = NULL; + objj_msgSend(PlatformWindows, "removeObject:", self); + self._DOMWindow = nil; + }, NO); + } +} +},["void"]), new objj_method(sel_getUid("orderFront:"), function $CPPlatformWindow__orderFront_(self, _cmd, aSender) +{ with(self) +{ + if (_DOMWindow) + return _DOMWindow.focus(); + _DOMWindow = window.open("", "_blank", "menubar=no,location=no,resizable=yes,scrollbars=no,status=no,left=" + (_contentRect.origin.x) + ",top=" + (_contentRect.origin.y) + ",width=" + (_contentRect.size.width) + ",height=" + (_contentRect.size.height)); + objj_msgSend(PlatformWindows, "addObject:", self); + _DOMWindow.document.write("<!DOCTYPE html><html lang='en'><head></head><body style='background-color:transparent;'></body></html>"); + _DOMWindow.document.close(); + if (!objj_msgSend(CPPlatform, "isBrowser")) + { + _DOMWindow.cpWindowNumber = objj_msgSend(self._only, "windowNumber"); + _DOMWindow.cpSetFrame(_contentRect); + _DOMWindow.cpSetLevel(_level); + _DOMWindow.cpSetHasShadow(_hasShadow); + _DOMWindow.cpSetShadowStyle(_shadowStyle); + } + objj_msgSend(self, "registerDOMWindow"); + _DOMBodyElement.style.cursor = objj_msgSend(objj_msgSend(CPCursor, "currentCursor"), "_cssString"); +} +},["void","id"]), new objj_method(sel_getUid("orderOut:"), function $CPPlatformWindow__orderOut_(self, _cmd, aSender) +{ with(self) +{ + if (!_DOMWindow) + return; + _DOMWindow.close(); +} +},["void","id"]), new objj_method(sel_getUid("dragEvent:"), function $CPPlatformWindow__dragEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + var type = aDOMEvent.type, + dragServer = objj_msgSend(CPDragServer, "sharedDragServer"), + location = { x:aDOMEvent.clientX, y:aDOMEvent.clientY }, + pasteboard = objj_msgSend(_CPDOMDataTransferPasteboard, "DOMDataTransferPasteboard"); + objj_msgSend(pasteboard, "_setDataTransfer:", aDOMEvent.dataTransfer); + if (aDOMEvent.type === "dragstart") + { + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + objj_msgSend(pasteboard, "_setPasteboard:", objj_msgSend(dragServer, "draggingPasteboard")); + var draggedWindow = objj_msgSend(dragServer, "draggedWindow"), + draggedWindowFrame = objj_msgSend(draggedWindow, "frame"), + DOMDragElement = draggedWindow._DOMElement; + DOMDragElement.style.left = -(draggedWindowFrame.size.width) + "px"; + DOMDragElement.style.top = -(draggedWindowFrame.size.height) + "px"; + var parentNode = DOMDragElement.parentNode; + if (parentNode) + parentNode.removeChild(DOMDragElement); + _DOMBodyElement.appendChild(DOMDragElement); + var draggingOffset = objj_msgSend(dragServer, "draggingOffset"); + aDOMEvent.dataTransfer.setDragImage(DOMDragElement, draggingOffset.width, draggingOffset.height); + aDOMEvent.dataTransfer.effectAllowed = "all"; + objj_msgSend(dragServer, "draggingStartedInPlatformWindow:globalLocation:", self, objj_msgSend(CPPlatform, "isBrowser") ? location : { x:aDOMEvent.screenX, y:aDOMEvent.screenY }); + } + else if (type === "drag") + { + var y = aDOMEvent.screenY; + if (CPFeatureIsCompatible(CPHTML5DragAndDropSourceYOffBy1)) + y -= 1; + objj_msgSend(dragServer, "draggingSourceUpdatedWithGlobalLocation:", objj_msgSend(CPPlatform, "isBrowser") ? location : { x:aDOMEvent.screenX, y:y }); + } + else if (type === "dragover" || type === "dragleave") + { + if (aDOMEvent.preventDefault) + aDOMEvent.preventDefault(); + var dropEffect = "none", + dragOperation = objj_msgSend(dragServer, "draggingUpdatedInPlatformWindow:location:", self, location); + if (dragOperation === CPDragOperationMove || dragOperation === CPDragOperationGeneric || dragOperation === CPDragOperationPrivate) + dropEffect = "move"; + else if (dragOperation === CPDragOperationCopy) + dropEffect = "copy"; + else if (dragOperation === CPDragOperationLink) + dropEffect = "link"; + aDOMEvent.dataTransfer.dropEffect = dropEffect; + } + else if (type === "dragend") + { + var dropEffect = aDOMEvent.dataTransfer.dropEffect; + if (dropEffect === "move") + dragOperation = CPDragOperationMove; + else if (dropEffect === "copy") + dragOperation = CPDragOperationCopy; + else if (dropEffect === "link") + dragOperation = CPDragOperationLink; + else + dragOperation = CPDragOperationNone; + objj_msgSend(dragServer, "draggingEndedInPlatformWindow:globalLocation:operation:", self, objj_msgSend(CPPlatform, "isBrowser") ? location : { x:aDOMEvent.screenX, y:aDOMEvent.screenY }, dragOperation); + } + else + { + objj_msgSend(dragServer, "performDragOperationInPlatformWindow:", self); + if (aDOMEvent.preventDefault) + aDOMEvent.preventDefault(); + if (aDOMEvent.stopPropagation) + aDOMEvent.stopPropagation(); + } + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("keyEvent:"), function $CPPlatformWindow__keyEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + var event, + timestamp = aDOMEvent.timeStamp || new Date(), + sourceElement = aDOMEvent.target || aDOMEvent.srcElement, + windowNumber = objj_msgSend(objj_msgSend(CPApp, "keyWindow"), "windowNumber"), + modifierFlags = (aDOMEvent.shiftKey ? CPShiftKeyMask : 0) | + (aDOMEvent.ctrlKey ? CPControlKeyMask : 0) | + (aDOMEvent.altKey ? CPAlternateKeyMask : 0) | + (aDOMEvent.metaKey ? CPCommandKeyMask : 0); + StopDOMEventPropagation = YES; + if (!(CharacterKeysToPrevent[String.fromCharCode(aDOMEvent.keyCode || aDOMEvent.charCode).toLowerCase()] || KeyCodesToPrevent[aDOMEvent.keyCode])) + { + if ((modifierFlags & (CPControlKeyMask | CPCommandKeyMask)) || KeyCodesToAllow[aDOMEvent.keyCode]) + StopDOMEventPropagation = NO; + } + var isNativePasteEvent = NO, + isNativeCopyOrCutEvent = NO, + overrideCharacters = nil; + switch (aDOMEvent.type) + { + case "keydown": + if (aDOMEvent.keyCode in MozKeyCodeToKeyCodeMap) + _keyCode = MozKeyCodeToKeyCodeMap[aDOMEvent.keyCode]; + else + _keyCode = aDOMEvent.keyCode; + var characters; + if (aDOMEvent.which === 0 || aDOMEvent.charCode === 0) + characters = KeyCodesToUnicodeMap[_keyCode]; + if (!characters) + characters = String.fromCharCode(_keyCode).toLowerCase(); + overrideCharacters = (modifierFlags & CPShiftKeyMask || _capsLockActive) ? characters.toUpperCase() : characters; + if (_keyCode === CPKeyCodes.CAPS_LOCK) + _capsLockActive = YES; + if (objj_msgSend(ModifierKeyCodes, "containsObject:", _keyCode)) + { + event = objj_msgSend(CPEvent, "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", CPFlagsChanged, location, modifierFlags, timestamp, windowNumber, nil, nil, nil, NO, _keyCode); + break; + } + else if (modifierFlags & (CPControlKeyMask | CPCommandKeyMask)) + { + var eligibleForCopyPaste = objj_msgSend(self, "_validateCopyCutOrPasteEvent:flags:", aDOMEvent, modifierFlags); + if (characters === "v" && eligibleForCopyPaste) + { + if (!_ignoreNativePastePreparation) + { + _DOMPasteboardElement.select(); + _DOMPasteboardElement.value = ""; + } + isNativePasteEvent = YES; + } + else if ((characters == "c" || characters == "x") && eligibleForCopyPaste) + { + isNativeCopyOrCutEvent = YES; + if (_ignoreNativeCopyOrCutEvent) + break; + } + } + else if (CPKeyCodes.firesKeyPressEvent(_keyCode, _lastKey, aDOMEvent.shiftKey, aDOMEvent.ctrlKey, aDOMEvent.altKey)) + { + StopDOMEventPropagation = NO; + break; + } + else + { + } + case "keypress": + if (aDOMEvent.type === "keypress" && (modifierFlags & (CPControlKeyMask | CPCommandKeyMask))) + break; + var keyCode = _keyCode, + charCode = aDOMEvent.keyCode || aDOMEvent.charCode, + isARepeat = (_charCodes[keyCode] != nil); + _lastKey = keyCode; + _charCodes[keyCode] = charCode; + var characters = overrideCharacters; + if (!characters && (aDOMEvent.which === 0 || aDOMEvent.charCode === 0)) + characters = KeyCodesToUnicodeMap[charCode]; + if (!characters) + characters = String.fromCharCode(charCode); + charactersIgnoringModifiers = characters.toLowerCase(); + if (!overrideCharacters && (modifierFlags & CPCommandKeyMask) && ((modifierFlags & CPShiftKeyMask) || _capsLockActive)) + characters = characters.toUpperCase(); + event = objj_msgSend(CPEvent, "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", CPKeyDown, location, modifierFlags, timestamp, windowNumber, nil, characters, charactersIgnoringModifiers, isARepeat, charCode); + if (isNativePasteEvent) + { + _pasteboardKeyDownEvent = event; + window.setNativeTimeout(function () { objj_msgSend(self, "_checkPasteboardElement") }, 0); + } + break; + case "keyup": var keyCode = aDOMEvent.keyCode, + charCode = _charCodes[keyCode]; + _keyCode = -1; + _lastKey = -1; + _charCodes[keyCode] = nil; + _ignoreNativeCopyOrCutEvent = NO; + _ignoreNativePastePreparation = NO; + if (keyCode === CPKeyCodes.CAPS_LOCK) + _capsLockActive = NO; + if (objj_msgSend(ModifierKeyCodes, "containsObject:", keyCode)) + break; + var characters = KeyCodesToUnicodeMap[charCode] || String.fromCharCode(charCode), + charactersIgnoringModifiers = characters.toLowerCase(); + if (!(modifierFlags & CPShiftKeyMask) && (modifierFlags & CPCommandKeyMask) && !_capsLockActive) + characters = charactersIgnoringModifiers; + event = objj_msgSend(CPEvent, "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", CPKeyUp, location, modifierFlags, timestamp, windowNumber, nil, characters, charactersIgnoringModifiers, NO, keyCode); + break; + } + if (event && !isNativePasteEvent) + { + event._DOMEvent = aDOMEvent; + objj_msgSend(CPApp, "sendEvent:", event); + if (isNativeCopyOrCutEvent) + { + objj_msgSend(self, "_primePasteboardElement"); + } + } + if (StopDOMEventPropagation) + CPDOMEventStop(aDOMEvent, self); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("copyEvent:"), function $CPPlatformWindow__copyEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (objj_msgSend(self, "_validateCopyCutOrPasteEvent:flags:", aDOMEvent, CPPlatformActionKeyMask) && !_ignoreNativeCopyOrCutEvent) + { + var cut = aDOMEvent.type === "beforecut", + keyCode = cut ? CPKeyCodes.X : CPKeyCodes.C, + characters = cut ? "x" : "c", + timestamp = aDOMEvent.timeStamp ? aDOMEvent.timeStamp : new Date(), + windowNumber = objj_msgSend(objj_msgSend(CPApp, "keyWindow"), "windowNumber"), + modifierFlags = CPPlatformActionKeyMask; + event = objj_msgSend(CPEvent, "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:", CPKeyDown, location, modifierFlags, timestamp, windowNumber, nil, characters, characters, NO, keyCode); + event._DOMEvent = aDOMEvent; + objj_msgSend(CPApp, "sendEvent:", event); + objj_msgSend(self, "_primePasteboardElement"); + _ignoreNativeCopyOrCutEvent = YES; + } + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("pasteEvent:"), function $CPPlatformWindow__pasteEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (objj_msgSend(self, "_validateCopyCutOrPasteEvent:flags:", aDOMEvent, CPPlatformActionKeyMask)) + { + _DOMPasteboardElement.focus(); + _DOMPasteboardElement.select(); + _DOMPasteboardElement.value = ""; + _ignoreNativePastePreparation = YES; + } + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("_validateCopyCutOrPasteEvent:flags:"), function $CPPlatformWindow___validateCopyCutOrPasteEvent_flags_(self, _cmd, aDOMEvent, modifierFlags) +{ with(self) +{ + return ( + ((aDOMEvent.target || aDOMEvent.srcElement).nodeName.toUpperCase() !== "INPUT" && + (aDOMEvent.target || aDOMEvent.srcElement).nodeName.toUpperCase() !== "TEXTAREA" + ) || aDOMEvent.target === _DOMPasteboardElement + ) && + (modifierFlags & CPPlatformActionKeyMask); +} +},["void","DOMEvent","unsigned"]), new objj_method(sel_getUid("_primePasteboardElement"), function $CPPlatformWindow___primePasteboardElement(self, _cmd) +{ with(self) +{ + var pasteboard = objj_msgSend(CPPasteboard, "generalPasteboard"), + types = objj_msgSend(pasteboard, "types"); + if (types.length) + { + if (objj_msgSend(types, "indexOfObjectIdenticalTo:", CPStringPboardType) != CPNotFound) + _DOMPasteboardElement.value = objj_msgSend(pasteboard, "stringForType:", CPStringPboardType); + else + _DOMPasteboardElement.value = objj_msgSend(pasteboard, "_generateStateUID"); + _DOMPasteboardElement.focus(); + _DOMPasteboardElement.select(); + window.setNativeTimeout(function() { objj_msgSend(self, "_clearPasteboardElement"); }, 0); + } +} +},["void"]), new objj_method(sel_getUid("_checkPasteboardElement"), function $CPPlatformWindow___checkPasteboardElement(self, _cmd) +{ with(self) +{ + var value = _DOMPasteboardElement.value; + if (objj_msgSend(value, "length")) + { + var pasteboard = objj_msgSend(CPPasteboard, "generalPasteboard"); + if (objj_msgSend(pasteboard, "_stateUID") != value) + { + objj_msgSend(pasteboard, "declareTypes:owner:", [CPStringPboardType], self); + objj_msgSend(pasteboard, "setString:forType:", value, CPStringPboardType); + } + } + objj_msgSend(self, "_clearPasteboardElement"); + objj_msgSend(CPApp, "sendEvent:", _pasteboardKeyDownEvent); + _pasteboardKeyDownEvent = nil; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void"]), new objj_method(sel_getUid("_clearPasteboardElement"), function $CPPlatformWindow___clearPasteboardElement(self, _cmd) +{ with(self) +{ + _DOMPasteboardElement.value = ""; + _DOMPasteboardElement.blur(); +} +},["void"]), new objj_method(sel_getUid("scrollEvent:"), function $CPPlatformWindow__scrollEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (_hideDOMScrollingElementTimeout) + { + clearTimeout(_hideDOMScrollingElementTimeout); + _hideDOMScrollingElementTimeout = nil; + } + if (!aDOMEvent) + aDOMEvent = window.event; + var location = nil; + if (CPFeatureIsCompatible(CPJavaScriptMouseWheelValues_8_15)) + { + var x = aDOMEvent._offsetX || 0.0, + y = aDOMEvent._offsetY || 0.0, + element = aDOMEvent.target; + while (element.nodeType !== 1) + element = element.parentNode; + if (element.offsetParent) + { + do + { + x += element.offsetLeft; + y += element.offsetTop; + } while (element = element.offsetParent); + } + location = { x:(x + ((aDOMEvent.clientX - 8) / 15)), y:(y + ((aDOMEvent.clientY - 8) / 15)) }; + } + else if (aDOMEvent._overrideLocation) + location = aDOMEvent._overrideLocation; + else + location = { x:aDOMEvent.clientX, y:aDOMEvent.clientY }; + var deltaX = 0.0, + deltaY = 0.0, + windowNumber = 0, + timestamp = aDOMEvent.timeStamp ? aDOMEvent.timeStamp : new Date(), + modifierFlags = (aDOMEvent.shiftKey ? CPShiftKeyMask : 0) | + (aDOMEvent.ctrlKey ? CPControlKeyMask : 0) | + (aDOMEvent.altKey ? CPAlternateKeyMask : 0) | + (aDOMEvent.metaKey ? CPCommandKeyMask : 0); + _DOMScrollingElement.style.visibility = "visible"; + _DOMScrollingElement.style.top = (location.y - 15) + "px"; + _DOMScrollingElement.style.left = (location.x - 15) + "px"; + StopDOMEventPropagation = NO; + var theWindow = objj_msgSend(self, "hitTest:", location); + if (!theWindow) + return; + var windowNumber = objj_msgSend(theWindow, "windowNumber"); + location = objj_msgSend(theWindow, "convertBridgeToBase:", location); + var event = objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", CPScrollWheel, location, modifierFlags, timestamp, windowNumber, nil, -1, 1, 0); + event._DOMEvent = aDOMEvent; + setTimeout(function() + { + var deltaX = _DOMScrollingElement.scrollLeft - 150, + deltaY = _DOMScrollingElement.scrollTop - 150; + if (deltaX || deltaY) + { + event._deltaX = deltaX; + event._deltaY = deltaY; + objj_msgSend(CPApp, "sendEvent:", event); + } + _DOMScrollingElement.scrollLeft = 150; + _DOMScrollingElement.scrollTop = 150; + }, 0); + _hideDOMScrollingElementTimeout = setTimeout(function() + { + _DOMScrollingElement.style.visibility = "hidden"; + }, 300); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("resizeEvent:"), function $CPPlatformWindow__resizeEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (objj_msgSend(CPPlatform, "isBrowser")) + objj_msgSend(CPApp._activeMenu, "cancelTracking"); + var oldSize = objj_msgSend(self, "contentRect").size; + objj_msgSend(self, "updateFromNativeContentRect"); + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length; + while (levelCount--) + { + var windows = objj_msgSend(layers, "objectForKey:", levels[levelCount])._windows, + windowCount = windows.length; + while (windowCount--) + objj_msgSend(windows[windowCount], "resizeWithOldPlatformWindowSize:", oldSize); + } + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("touchEvent:"), function $CPPlatformWindow__touchEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (aDOMEvent.touches && (aDOMEvent.touches.length == 1 || (aDOMEvent.touches.length == 0 && aDOMEvent.changedTouches.length == 1))) + { + var newEvent = {}; + switch(aDOMEvent.type) + { + case CPDOMEventTouchStart: newEvent.type = CPDOMEventMouseDown; + break; + case CPDOMEventTouchEnd: newEvent.type = CPDOMEventMouseUp; + break; + case CPDOMEventTouchMove: newEvent.type = CPDOMEventMouseMoved; + break; + case CPDOMEventTouchCancel: newEvent.type = CPDOMEventMouseUp; + break; + } + var touch = aDOMEvent.touches.length ? aDOMEvent.touches[0] : aDOMEvent.changedTouches[0]; + newEvent.clientX = touch.clientX; + newEvent.clientY = touch.clientY; + newEvent.timestamp = aDOMEvent.timestamp; + newEvent.target = aDOMEvent.target; + newEvent.shiftKey = newEvent.ctrlKey = newEvent.altKey = newEvent.metaKey = false; + newEvent.preventDefault = function() { if (aDOMEvent.preventDefault) aDOMEvent.preventDefault() }; + newEvent.stopPropagation = function() { if (aDOMEvent.stopPropagation) aDOMEvent.stopPropagation() }; + objj_msgSend(self, "mouseEvent:", newEvent); + return; + } + else + { + if (aDOMEvent.preventDefault) + aDOMEvent.preventDefault(); + if (aDOMEvent.stopPropagation) + aDOMEvent.stopPropagation(); + } +} +},["void","DOMEvent"]), new objj_method(sel_getUid("mouseEvent:"), function $CPPlatformWindow__mouseEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + var type = _overriddenEventType || aDOMEvent.type; + if (type === "dblclick") + { + _overriddenEventType = CPDOMEventMouseDown; + objj_msgSend(self, "mouseEvent:", aDOMEvent); + _overriddenEventType = CPDOMEventMouseUp; + objj_msgSend(self, "mouseEvent:", aDOMEvent); + _overriddenEventType = nil; + return; + } + var event, + location = { x:aDOMEvent.clientX, y:aDOMEvent.clientY }, + timestamp = aDOMEvent.timeStamp ? aDOMEvent.timeStamp : new Date(), + sourceElement = (aDOMEvent.target || aDOMEvent.srcElement), + windowNumber = 0, + modifierFlags = (aDOMEvent.shiftKey ? CPShiftKeyMask : 0) | + (aDOMEvent.ctrlKey ? CPControlKeyMask : 0) | + (aDOMEvent.altKey ? CPAlternateKeyMask : 0) | + (aDOMEvent.metaKey ? CPCommandKeyMask : 0); + StopDOMEventPropagation = YES; + if (_mouseDownWindow) + windowNumber = objj_msgSend(_mouseDownWindow, "windowNumber"); + else + { + var theWindow = objj_msgSend(self, "hitTest:", location); + if ((aDOMEvent.type === CPDOMEventMouseDown) && theWindow) + _mouseDownWindow = theWindow; + windowNumber = objj_msgSend(theWindow, "windowNumber"); + } + if (windowNumber) + location = objj_msgSend(CPApp._windows[windowNumber], "convertPlatformWindowToBase:", location); + if (type === "mouseup") + { + if (_mouseIsDown) + { + event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseDownIsRightClick ? CPRightMouseUp : CPLeftMouseUp, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseUp, timestamp, location), 0); + _mouseIsDown = NO; + _lastMouseUp = event; + _mouseDownWindow = nil; + _mouseDownIsRightClick = NO; + } + if (_DOMEventMode) + { + _DOMEventMode = NO; + return; + } + } + else if (type === "mousedown") + { + var button = aDOMEvent.button; + _mouseDownIsRightClick = button == 2 || (CPBrowserIsOperatingSystem(CPMacOperatingSystem) && button == 0 && modifierFlags & CPControlKeyMask); + if (sourceElement.tagName === "INPUT" && sourceElement != _DOMFocusElement) + { + if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + _DOMBodyElement.setAttribute("draggable", "false"); + _DOMBodyElement.style["-khtml-user-drag"] = "none"; + } + _DOMEventMode = YES; + _mouseIsDown = YES; + objj_msgSend(CPApp, "sendEvent:", objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", _mouseDownIsRightClick ? CPRightMouseDown : CPLeftMouseDown, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseDown, timestamp, location), 0)); + objj_msgSend(CPApp, "sendEvent:", objj_msgSend(CPEvent, "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:", _mouseDownIsRightClick ? CPRightMouseUp : CPLeftMouseUp, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseDown, timestamp, location), 0)); + return; + } + else if (objj_msgSend(CPPlatform, "supportsDragAndDrop")) + { + _DOMBodyElement.setAttribute("draggable", "true"); + _DOMBodyElement.style["-khtml-user-drag"] = "element"; + } + StopContextMenuDOMEventPropagation = YES; + event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseDownIsRightClick ? CPRightMouseDown : CPLeftMouseDown, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseDown, timestamp, location), 0); + _mouseIsDown = YES; + _lastMouseDown = event; + } + else + { + if (_DOMEventMode) + return; + event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseIsDown ? (_mouseDownIsRightClick ? CPRightMouseDragged : CPLeftMouseDragged) : CPMouseMoved, location, modifierFlags, timestamp, windowNumber, nil, -1, 1, 0); + } + var isDragging = objj_msgSend(objj_msgSend(CPDragServer, "sharedDragServer"), "isDragging"); + if (event && (!isDragging || !supportsNativeDragAndDrop)) + { + event._DOMEvent = aDOMEvent; + objj_msgSend(CPApp, "sendEvent:", event); + } + if (StopDOMEventPropagation && (!supportsNativeDragAndDrop || type !== "mousedown" && !isDragging)) + CPDOMEventStop(aDOMEvent, self); + var hasTrackingEventListener = NO; + for (var i=0; i < CPApp._eventListeners.length; i++) + { + if (CPApp._eventListeners[i]._callback !== _CPRunModalLoop) + { + hasTrackingEventListener = YES; + break; + } + } + _DOMEventGuard.style.display = hasTrackingEventListener ? "" : "none"; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void","DOMEvent"]), new objj_method(sel_getUid("contextMenuEvent:"), function $CPPlatformWindow__contextMenuEvent_(self, _cmd, aDOMEvent) +{ with(self) +{ + if (StopContextMenuDOMEventPropagation) + CPDOMEventStop(aDOMEvent, self); + return !StopContextMenuDOMEventPropagation; +} +},["void","DOMEvent"]), new objj_method(sel_getUid("orderedWindowsAtLevel:"), function $CPPlatformWindow__orderedWindowsAtLevel_(self, _cmd, aLevel) +{ with(self) +{ + var layer = objj_msgSend(self, "layerAtLevel:create:", aLevel, NO); + if (!layer) + return []; + return objj_msgSend(layer, "orderedWindows"); +} +},["CPArray","int"]), new objj_method(sel_getUid("layerAtLevel:create:"), function $CPPlatformWindow__layerAtLevel_create_(self, _cmd, aLevel, aFlag) +{ with(self) +{ + var layer = objj_msgSend(_windowLayers, "objectForKey:", aLevel); + if (!layer && aFlag) + { + layer = objj_msgSend(objj_msgSend(CPDOMWindowLayer, "alloc"), "initWithLevel:", aLevel); + objj_msgSend(_windowLayers, "setObject:forKey:", layer, aLevel); + var low = 0, + high = _windowLevels.length - 1, + middle; + while (low <= high) + { + middle = FLOOR((low + high) / 2); + if (_windowLevels[middle] > aLevel) + high = middle - 1; + else + low = middle + 1; + } + var insertionIndex = 0; + if (middle !== undefined) + insertionIndex = _windowLevels[middle] > aLevel ? middle : middle + 1 + objj_msgSend(_windowLevels, "insertObject:atIndex:", aLevel, insertionIndex); + layer._DOMElement.style.zIndex = aLevel; + _DOMBodyElement.appendChild(layer._DOMElement); + } + return layer; +} +},["CPDOMWindowLayer","int","BOOL"]), new objj_method(sel_getUid("order:window:relativeTo:"), function $CPPlatformWindow__order_window_relativeTo_(self, _cmd, aPlace, aWindow, otherWindow) +{ with(self) +{ + objj_msgSend(CPPlatform, "initializeScreenIfNecessary"); + var layer = objj_msgSend(self, "layerAtLevel:create:", objj_msgSend(aWindow, "level"), aPlace !== CPWindowOut); + if (aPlace === CPWindowOut) + return objj_msgSend(layer, "removeWindow:", aWindow); + var insertionIndex = CPNotFound; + if (otherWindow) + insertionIndex = aPlace === CPWindowAbove ? otherWindow._index + 1 : otherWindow._index; + objj_msgSend(layer, "insertWindow:atIndex:", aWindow, insertionIndex); +} +},["void","CPWindowOrderingMode","CPWindow","CPWindow"]), new objj_method(sel_getUid("_removeLayers"), function $CPPlatformWindow___removeLayers(self, _cmd) +{ with(self) +{ + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length; + while (levelCount--) + { + var layer = objj_msgSend(layers, "objectForKey:", levels[levelCount]); + _DOMBodyElement.removeChild(layer._DOMElement); + } +} +},["void"]), new objj_method(sel_getUid("_addLayers"), function $CPPlatformWindow___addLayers(self, _cmd) +{ with(self) +{ + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length; + while (levelCount--) + { + var layer = objj_msgSend(layers, "objectForKey:", levels[levelCount]); + _DOMBodyElement.appendChild(layer._DOMElement); + } +} +},["void"]), new objj_method(sel_getUid("_dragHitTest:pasteboard:"), function $CPPlatformWindow___dragHitTest_pasteboard_(self, _cmd, aPoint, aPasteboard) +{ with(self) +{ + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length; + while (levelCount--) + { + if (levels[levelCount] >= CPDraggingWindowLevel) + continue; + var windows = objj_msgSend(layers, "objectForKey:", levels[levelCount])._windows, + windowCount = windows.length; + while (windowCount--) + { + var theWindow = windows[windowCount]; + if (objj_msgSend(theWindow, "_sharesChromeWithPlatformWindow")) + return objj_msgSend(theWindow, "_dragHitTest:pasteboard:", aPoint, aPasteboard); + if (objj_msgSend(theWindow, "containsPoint:", aPoint)) + return objj_msgSend(theWindow, "_dragHitTest:pasteboard:", aPoint, aPasteboard); + } + } + return nil; +} +},["id","CPPoint","CPPasteboard"]), new objj_method(sel_getUid("_propagateCurrentDOMEvent:"), function $CPPlatformWindow___propagateCurrentDOMEvent_(self, _cmd, aFlag) +{ with(self) +{ + StopDOMEventPropagation = !aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("_willPropagateCurrentDOMEvent"), function $CPPlatformWindow___willPropagateCurrentDOMEvent(self, _cmd) +{ with(self) +{ + return !StopDOMEventPropagation; +} +},["BOOL"]), new objj_method(sel_getUid("_propagateContextMenuDOMEvent:"), function $CPPlatformWindow___propagateContextMenuDOMEvent_(self, _cmd, aFlag) +{ with(self) +{ + if (aFlag && CPBrowserIsEngine(CPGeckoBrowserEngine)) + StopDOMEventPropagation = !aFlag; + StopContextMenuDOMEventPropagation = !aFlag; +} +},["void","BOOL"]), new objj_method(sel_getUid("_willPropagateContextMenuDOMEvent"), function $CPPlatformWindow___willPropagateContextMenuDOMEvent(self, _cmd) +{ with(self) +{ + return StopContextMenuDOMEventPropagation; +} +},["BOOL"]), new objj_method(sel_getUid("hitTest:"), function $CPPlatformWindow__hitTest_(self, _cmd, location) +{ with(self) +{ + if (self._only) + return self._only; + var levels = _windowLevels, + layers = _windowLayers, + levelCount = levels.length, + theWindow = nil; + while (levelCount-- && !theWindow) + { + var windows = objj_msgSend(layers, "objectForKey:", levels[levelCount])._windows, + windowCount = windows.length; + while (windowCount-- && !theWindow) + { + var candidateWindow = windows[windowCount]; + if (!candidateWindow._ignoresMouseEvents && objj_msgSend(candidateWindow, "containsPoint:", location)) + theWindow = candidateWindow; + } + } + return theWindow; +} +},["CPWindow","CPPoint"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("visiblePlatformWindows"), function $CPPlatformWindow__visiblePlatformWindows(self, _cmd) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(CPPlatformWindow, "primaryPlatformWindow"), "isVisible")) + { + var set = objj_msgSend(CPSet, "setWithSet:", PlatformWindows); + objj_msgSend(set, "addObject:", objj_msgSend(CPPlatformWindow, "primaryPlatformWindow")); + return set; + } + else + return PlatformWindows; +} +},["CPSet"]), new objj_method(sel_getUid("preventCharacterKeysFromPropagating:"), function $CPPlatformWindow__preventCharacterKeysFromPropagating_(self, _cmd, characters) +{ with(self) +{ + for (var i = characters.length; i > 0; i--) + CharacterKeysToPrevent[""+characters[i-1].toLowerCase()] = YES; +} +},["void","CPArray"]), new objj_method(sel_getUid("preventCharacterKeyFromPropagating:"), function $CPPlatformWindow__preventCharacterKeyFromPropagating_(self, _cmd, character) +{ with(self) +{ + CharacterKeysToPrevent[character.toLowerCase()] = YES; +} +},["void","CPString"]), new objj_method(sel_getUid("clearCharacterKeysToPreventFromPropagating"), function $CPPlatformWindow__clearCharacterKeysToPreventFromPropagating(self, _cmd) +{ with(self) +{ + CharacterKeysToPrevent = {}; +} +},["void"]), new objj_method(sel_getUid("preventKeyCodesFromPropagating:"), function $CPPlatformWindow__preventKeyCodesFromPropagating_(self, _cmd, keyCodes) +{ with(self) +{ + for (var i = keyCodes.length; i > 0; i--) + KeyCodesToPrevent[keyCodes[i-1]] = YES; +} +},["void","CPArray"]), new objj_method(sel_getUid("preventKeyCodeFromPropagating:"), function $CPPlatformWindow__preventKeyCodeFromPropagating_(self, _cmd, keyCode) +{ with(self) +{ + KeyCodesToPrevent[keyCode] = YES; +} +},["void","CPString"]), new objj_method(sel_getUid("clearKeyCodesToPreventFromPropagating"), function $CPPlatformWindow__clearKeyCodesToPreventFromPropagating(self, _cmd) +{ with(self) +{ + KeyCodesToPrevent = {}; +} +},["void"])]); +} +var CPEventClass = objj_msgSend(CPEvent, "class"); +var _CPEventFromNativeMouseEvent = function(aNativeEvent, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure) +{ + aNativeEvent.isa = CPEventClass; + aNativeEvent._type = anEventType; + aNativeEvent._location = aPoint; + aNativeEvent._modifierFlags = modifierFlags; + aNativeEvent._timestamp = aTimestamp; + aNativeEvent._windowNumber = aWindowNumber; + aNativeEvent._window = nil; + aNativeEvent._context = aGraphicsContext; + aNativeEvent._eventNumber = anEventNumber; + aNativeEvent._clickCount = aClickCount; + aNativeEvent._pressure = aPressure; + return aNativeEvent; +} +var CLICK_SPACE_DELTA = 5.0, + CLICK_TIME_DELTA = (typeof document != "undefined" && document.addEventListener) ? 350.0 : 1000.0; +var CPDOMEventGetClickCount = function(aComparisonEvent, aTimestamp, aLocation) +{ + if (!aComparisonEvent) + return 1; + var comparisonLocation = objj_msgSend(aComparisonEvent, "locationInWindow"); + return (aTimestamp - objj_msgSend(aComparisonEvent, "timestamp") < CLICK_TIME_DELTA && + ABS(comparisonLocation.x - aLocation.x) < CLICK_SPACE_DELTA && + ABS(comparisonLocation.y - aLocation.y) < CLICK_SPACE_DELTA) ? objj_msgSend(aComparisonEvent, "clickCount") + 1 : 1; +} +var CPDOMEventStop = function(aDOMEvent, aPlatformWindow) +{ + aDOMEvent.cancelBubble = true; + aDOMEvent.returnValue = false; + if (aDOMEvent.preventDefault) + aDOMEvent.preventDefault(); + if (aDOMEvent.stopPropagation) + aDOMEvent.stopPropagation(); + if (aDOMEvent.type === CPDOMEventMouseDown) + { + aPlatformWindow._DOMFocusElement.focus(); + aPlatformWindow._DOMFocusElement.blur(); + } +} +CPWindowObjectList= function() +{ + var platformWindows = objj_msgSend(CPPlatformWindow, "visiblePlatformWindows"), + platformWindowEnumerator = objj_msgSend(platformWindows, "objectEnumerator"), + platformWindow = nil, + windowObjects = []; + while (platformWindow = objj_msgSend(platformWindowEnumerator, "nextObject")) + { + var levels = platformWindow._windowLevels, + layers = platformWindow._windowLayers, + levelCount = levels.length; + while (levelCount--) + { + var windows = objj_msgSend(layers, "objectForKey:", levels[levelCount])._windows, + windowCount = windows.length; + while (windowCount--) + windowObjects.push(windows[windowCount]); + } + } + return windowObjects; +} +CPWindowList= function() +{ + var windowObjectList = CPWindowObjectList(), + windowList = []; + for (var i = 0, count = objj_msgSend(windowObjectList, "count"); i < count; i++) + windowList.push(objj_msgSend(windowObjectList[i], "windowNumber")); + return windowList; +} + +p;26;CPPlatformWindow+DOMKeys.jt;3269;@STATIC;1.0;t;3250;CPKeyCodes = { + BACKSPACE: 8, + TAB: 9, + NUM_CENTER: 12, + ENTER: 13, + SHIFT: 16, + CTRL: 17, + ALT: 18, + PAUSE: 19, + CAPS_LOCK: 20, + ESC: 27, + SPACE: 32, + PAGE_UP: 33, + PAGE_DOWN: 34, + END: 35, + HOME: 36, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + PRINT_SCREEN: 44, + INSERT: 45, + DELETE: 46, + ZERO: 48, + ONE: 49, + TWO: 50, + THREE: 51, + FOUR: 52, + FIVE: 53, + SIX: 54, + SEVEN: 55, + EIGHT: 56, + NINE: 57, + QUESTION_MARK: 63, + A: 65, + B: 66, + C: 67, + D: 68, + E: 69, + F: 70, + G: 71, + H: 72, + I: 73, + J: 74, + K: 75, + L: 76, + M: 77, + N: 78, + O: 79, + P: 80, + Q: 81, + R: 82, + S: 83, + T: 84, + U: 85, + V: 86, + W: 87, + X: 88, + Y: 89, + Z: 90, + META: 91, + CONTEXT_MENU: 93, + NUM_ZERO: 96, + NUM_ONE: 97, + NUM_TWO: 98, + NUM_THREE: 99, + NUM_FOUR: 100, + NUM_FIVE: 101, + NUM_SIX: 102, + NUM_SEVEN: 103, + NUM_EIGHT: 104, + NUM_NINE: 105, + NUM_MULTIPLY: 106, + NUM_PLUS: 107, + NUM_MINUS: 109, + NUM_PERIOD: 110, + NUM_DIVISION: 111, + F1: 112, + F2: 113, + F3: 114, + F4: 115, + F5: 116, + F6: 117, + F7: 118, + F8: 119, + F9: 120, + F10: 121, + F11: 122, + F12: 123, + NUMLOCK: 144, + SEMICOLON: 186, + DASH: 189, + EQUALS: 187, + COMMA: 188, + PERIOD: 190, + SLASH: 191, + APOSTROPHE: 192, + SINGLE_QUOTE: 222, + OPEN_SQUARE_BRACKET: 219, + BACKSLASH: 220, + CLOSE_SQUARE_BRACKET: 221, + WIN_KEY: 224, + MAC_FF_META: 224, + WIN_IME: 229 +}; +CPKeyCodes.firesKeyPressEvent = function(keyCode, opt_heldKeyCode, opt_shiftKey, opt_ctrlKey, opt_altKey) +{ + if (!CPFeatureIsCompatible(CPJavascriptRemedialKeySupport)) + return true; + if (CPBrowserIsOperatingSystem(CPMacOperatingSystem) && opt_altKey) + return CPKeyCodes.isCharacterKey(keyCode); + if (opt_altKey && !opt_ctrlKey) + return false; + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine) && !opt_shiftKey && (opt_ctrlKey || opt_altKey)) + return false; + if (CPBrowserIsEngine(CPInternetExplorerBrowserEngine) && opt_ctrlKey && opt_heldKeyCode == keyCode) + return false; + switch (keyCode) + { + case CPKeyCodes.ENTER: return true; + case CPKeyCodes.ESC: return !CPBrowserIsEngine(CPWebKitBrowserEngine); + } + return CPKeyCodes.isCharacterKey(keyCode); +}; +CPKeyCodes.isCharacterKey = function(keyCode) +{ + if (keyCode >= CPKeyCodes.ZERO && keyCode <= CPKeyCodes.NINE) + return true; + if (keyCode >= CPKeyCodes.NUM_ZERO && keyCode <= CPKeyCodes.NUM_MULTIPLY) + return true; + if (keyCode >= CPKeyCodes.A && keyCode <= CPKeyCodes.Z) + return true; + switch (keyCode) + { + case CPKeyCodes.SPACE: + case CPKeyCodes.QUESTION_MARK: + case CPKeyCodes.NUM_PLUS: + case CPKeyCodes.NUM_MINUS: + case CPKeyCodes.NUM_PERIOD: + case CPKeyCodes.NUM_DIVISION: + case CPKeyCodes.SEMICOLON: + case CPKeyCodes.DASH: + case CPKeyCodes.EQUALS: + case CPKeyCodes.COMMA: + case CPKeyCodes.PERIOD: + case CPKeyCodes.SLASH: + case CPKeyCodes.APOSTROPHE: + case CPKeyCodes.SINGLE_QUOTE: + case CPKeyCodes.OPEN_SQUARE_BRACKET: + case CPKeyCodes.BACKSLASH: + case CPKeyCodes.CLOSE_SQUARE_BRACKET: + return true; + default: + return false; + } +} + +e; ADDED Site/Site_Z/Frameworks/Debug/AppKit/Info.plist Index: Site/Site_Z/Frameworks/Debug/AppKit/Info.plist ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Info.plist +++ Site/Site_Z/Frameworks/Debug/AppKit/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;18;CPBundleIdentifierS;15;com.280n.AppKitK;29;CPBundleInfoDictionaryVersiond;1;6K;12;CPBundleNameS;6;AppKitK;19;CPBundlePackageTypeS;4;FMWKK;15;CPBundleVersionS;5;0.8.1K;20;CPBundleEnvironmentsA;S;7;BrowserS;8;CommonJSE;K;18;CPBundleExecutableS;9;AppKit.sjK;36;CPBundleEnvironmentsWithImageSpritesA;S;7;BrowserE;E; ADDED Site/Site_Z/Frameworks/Debug/AppKit/LICENSE Index: Site/Site_Z/Frameworks/Debug/AppKit/LICENSE ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/LICENSE +++ Site/Site_Z/Frameworks/Debug/AppKit/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/AboutPanel.cib Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/AboutPanel.cib ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/AboutPanel.cib +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/AboutPanel.cib @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;K;21;CPCibObjectRecordsKeyD;K;6;CP$UIDd;1;4E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;6E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;7E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;8E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;2;10E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;11E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;12E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;13E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;15E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;17E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;19E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;54E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;56E;E;E;S;16;IBCocoaFrameworkd;3;461D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;57E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;18E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;58E;E;D;K;10;$classnameS;15;CibObjectRecordK;8;$classesA;S;15;CibObjectRecordS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;59E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;60E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;62E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;63E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;64E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;48E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;65E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;66E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;67E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;68E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;69E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;47E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;70E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;71E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;72E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;73E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;74E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;46E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;75E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;76E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;77E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;78E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;1;0E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;79E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;80E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;42E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;81E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;44E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;53E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;60E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;82E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;17E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;51E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;39E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;83E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;42E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;52E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;60E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;84E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;39E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;50E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;24;CibObjectRecordParentKeyD;K;6;CP$UIDd;2;60E;K;26;CibObjectRecordChildrenKeyD;K;6;CP$UIDd;2;85E;K;24;CibObjectRecordObjectKeyD;K;6;CP$UIDd;2;40E;K;23;CibObjectRecordLabelKeyD;K;6;CP$UIDd;2;51E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;86E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;87E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;88E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;89E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;90E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;91E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;93E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;94E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;96E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;92E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;97E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;E;D;K;10;$classnameS;11;CPImageViewK;8;$classesA;S;11;CPImageViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;99E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;100E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;101E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;102E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;105E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;106E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;107E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;108E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;109E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;6;$afontD;K;6;CP$UIDd;3;112E;K;12;$atext-colorD;K;6;CP$UIDd;3;114E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;115E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;116E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;117E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;117E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;118E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;119E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;120E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;6;$afontD;K;6;CP$UIDd;3;121E;K;12;$atext-colorD;K;6;CP$UIDd;3;122E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;123E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;116E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;117E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;117E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;42E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;124E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;125E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;95E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;42E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;110E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;98E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;12;$atext-colorD;K;6;CP$UIDd;3;128E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;129E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;116E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;117E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;117E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;12;File's OwnerS;6;WindowS;11;ApplicationS;4;ViewS;10;Image viewS;10;Text fieldD;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;17E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;39E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;130E;E;S;18;CPWindowControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;5;ArrayD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;47E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;47E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;42E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;26;{3.40282e+38, 3.40282e+38}S;8;CPWindowS;22;{{72, 57}, {219, 263}}d;1;7S;0;S;13;CPApplicationS;5;$nullS;21;{{0, 26}, {219, 263}}S;20;{{0, 0}, {219, 263}}S;5;$nullD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;d;2;18S;6;normalS;1;1S;24;{{45.5, 16}, {128, 128}}S;20;{{0, 0}, {128, 128}}d;2;37d;1;0D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;104E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;131E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;132E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;134E;E;d;1;4S;1;2S;22;{{16, 165}, {187, 25}}S;19;{{0, 0}, {187, 25}}d;2;36D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;135E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;136E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;117E;E;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;137E;E;S;7;AppNamed;4;3072F;S;1;3S;22;{{16, 194}, {187, 20}}S;19;{{0, 0}, {187, 20}}D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;135E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;136E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;138E;E;S;19;Version XXX (build)S;1;4S;22;{{16, 222}, {187, 22}}S;19;{{0, 0}, {187, 22}}D;K;6;$classD;K;6;CP$UIDd;3;111E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;135E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;136E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;139E;E;S;9;CopyrightS;6;windowS;7;CPImageS;8;Icon.pngD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;133E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;141E;E;E;S;5;Ariald;2;13D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;142E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;142E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;142E;E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;140E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;143E;E;d;1;1S;24;{"width":-1,"height":-1}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/Aristo.blend.sj cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLData.txt @@ -0,0 +1,1189 @@ +/* +Content-Type: multipart/related; boundary="_ANY_STRING_WILL_DO_AS_A_SEPARATOR" + +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/alert-error.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABmxJREFUeNrUWV1sFFUUPjs7u9vttvRvZ1sMygJCSynRF3kh0UQfePGFxESfTEx80AQlEEKMhtlMlRcl1uATCdF3XnzAmBAf1JgYf6KILaVUoD/Q0h9Kf2a2uzu/njMz226b0s7cO5B4k5O72+6e8333fOfMvXdjjuPARiMWi8FWY6hre/WljKYA/yig9Qb9cOeNyQ3/LvIg8NdDbn5+j5Lt3gGigAth2+EdCQKYtgMPBu8pC3/fhjDEIieF8OWWg0hI2gax4bug6wazr3gyAVmpCRz0N9/PR4yZVP++Drm5Z5ciSQ3gTM+BUSyvpI5lWLEKiLoJktQCDvp92H+HmRgTqWt7O+SWnt1KTmoEe3YOzGKFi1BVy4ZWAtGxISe1IrHdyhwjsdCkru5tl1t78kquLQMmZshcjoDQKjPQ1TKI1hzkspSxvPJgYCQ0sVCk/ny2XW47sAsJNYAx+zBiQqsZ01HKovPQI4bxZkMSC0zqjz05ua0bM9SaAX3mMRGqzZhWxkbqEbMx7uz14MQCkfp1d07O7s8r7a31LiEjBCFq1TfnizCzrEOuPgmdLRmv9Qck5iCx9mwzOBh/enA0EDFhqw/8skuSpa6dSq6lHioz81ChFbRsXEUnkF1dMsA8+iZ0nb/ozn8tGoG/S3EoHsWl+ITDdhwZDexNFnXTTP2cz8q5zp1Ke7NHyCiFl1z22GnY+9obEI/H4enDL8K/+TzYX50LJUVvIeehvQ0zhnjuD22esdijtkk/5SX5qa5nlA6Uiz63AHqJrYZSl36ERklySVmWBcWFBSgdPRy+zHDblkynIInEplDOk0PjhZdGZ3tDyQ/Tq2zHJ3wZu1ylGE5ytZZIJEAURdwJCe4cJ98MflwpIg7CQ7gIX2j5WZgVZ3EZHVXA4ehy5ZkpaMhm17wnkKxd0UY8dYjLYqkpC7+jL5fBRMnwjNIYtuLunlVS4yNgsWx6awbhshwApkxVJcczrKlJN9N0lKG5MnoHBE6fhIsxUw6uqGdcADAzVfnSbN0bx2cP50IRLmZStCIWn1Tg7tgaUg7Jj9OnxZ6p1S7FM4S7o2tIxSbG+bPvZoqlplzp2dxFbd2fAEuvuK1d1zTQp6e4d4YeLmb5ecapFVgaGYHUgR5QsUlw+3NdMtaUSd3Ptl3jHdrIHch2HwDt9q1I/JEPk7Wmouh+NCojHhl9bCQSfxZzTUXV/ahBDFwD9Z+r7hyFP4vnORVF96OxcOU716IaNvNzyoZIut/jGB4uVvlFUFMG+hkuGaAhkAzu1DvTCUjEYhHUFKv8LM94xq1kPXR/8iFI+/fDg+FhGDj7MXQby5x7P55tEq0omsWxUz8oK/Dc697Jd+cLhyDd1ARLx99hv8mlwyZh2oTUIw+Ji7bTN6aVQEikkJfAdrBD6zxyBNLpNNTV1bnzvpdfYfZFOAgP4SJ8oUn1LuuF/oXFvknD5CJWGbzuri6dfGku/XuTixDhIVyEj+U2ST1bMgoDC0tIzIBYMulJ0e+IQW3o5HGY/v6Ku5ml+caxd0P7oLgUn3AQHsJ1Np1QQ1+81Pw+1Xg6lVC6tzWc6IgLYJbLXDXGUkMiSncKe/jgktb3acUo9NZ5hM6UdObLTJUcnVpUwWpsOLE9mQL7CRFzZYvxJgwLbqha3zndLBRSomptcWcS9NpZJYcnlzSwnxCxFUKm7RL63DALZ5KiGuSxKYSIo5Lj66raN4FSEFLYPLD4q7elURr5Jf8Uh+JR3I8ScXX957h/IKgS+8KwCu9pKtiZx5OxlQxRDRW1vi8Nu/BBQlAtCL4JEBjiqhRoQNP6JuxoM7aSIfRL/inOaVFwJbeR8XS/lT+ts6a344Lck8m8v4N2IJwZowzFscvdw9cDxeL5i5ZNV8qL7g2mb6fiwhqwn5kWt/yISML/DlkcA184qmmNhzKZt7oaG0EwTfb9nCjCkK7D78Xi19/YzgXyj5ahQzjti73DeLCr4jCk6LMptDrftqG1IoDLk1pRaoLiq7qPIMxhRfAdJ720fPub41zGl1n/X0t0qetbyQ7oWoygtksI5BLOP/grm/ZXOfBJgnygFdFm/dcbZzPgnX6YmhLWyS/lE0j4C53y50TIBmT78qJEV/zZ8MlVauW3XgSPxM7RKIQai9XMVQt8hVFjds1s17yvtS1JiQzBa0nCJu+Z7mi2eM8nv//z+E+AAQCtbACM76VJFwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/alert-info.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACUpJREFUeNrUWmtsHFcVPrOzMzu768d6/fYmdhLnRZzQNO6DqkEpbSSiqK1IhVSUQqEKCooSUSFVwA9EVX40QuqDgiCVgqCQJiK0qJVKKKSgJii0SkWbhyDOy/Hasb3ep/c17zsznDuZNa6x453ZTSSOdHzvzOy9c757HvfcM2Ysy4K5xDAMLERPH74Ai1AMeYvDG5CXI3fNej7m8Fnkk8inkKegSnrliXUz/flkp+QHl2Ra5ny3eeSdyN8IC9yWrpYQdETC0BgMgBDggPeztgB0sRSd9Koa6S1KyuZUXtyXnJZAUsmfcexryEehDuQalGX+D6jdyD9cHWuJ9XW2QCgUAFExQNQMSIkmqHkJiGkBXVRqAJzfBwHWB0E+CP2xMHx2hR+KorQtPjW97VqisB/nehb50G0FZRpGpbsS+Xdre1sH+7qiYIAPMpIOpekiasO0gRDEb2JrzrISHwJj8Q/iAg7bAOeDJsEPK5Z0wLKu6PLRRO63VyZyu/CnTzpmehtA3dDUNuTDg2uWRKORRpjIK1BUCMiaOaOVBccjk0/5L0Be1CFd1NBcWeiLtUM4yG/55PLkaXz8GPKHtwGUsQ+bn9x/Rz+r4/ChRAlk1bDBeCWCypfRXIsyA3mJQDf6492fWdp1+t/xE/j4W46/3RpQu1798Ptrlrbt72xrQVMzIFMsgYY2ZllQF0JcoBPUuKpDR5MAm+9YySfSuV9fvp4O4uMDdQf11M9P7Vze3bK/LdoMY2huBVFDAUy4FUTQbycQnNjAQxcu4MX41M8c/zpWN1Bf/+mJdaZBftkWbYF4DgGVVTCqNDeDChgfg3w2B5HWKMSW9QLLsouOkw3TXjRqmnev72dPn714CB1wEB+NLDbWt9gPvvry31iDkCPrV/UG02hyuaIMmk5sYavh0YsXYWNUhb1bY3YbHxqqeqyq6ZDJi5BTLRhYubQF5agq1DOLZRQ7X/jLnlV93b/gI60wlSnhyrkzuY2BFGz/XD/wPA+apsG7p4fhjNLhag6OY6GnrRGKqSTEJ1JPHHnmi0dullHcFNTjP/4TjyNH7ty0oWcyK4GCDuyWnvl8I8S62lEwDgj6SSqdheffz7ueJxTkobOJh7PnLlxGAdcd/d52w1OaRHTtyeW9PT3TuI/IimpvpK6FCYVAEATw+Xy2L/n5gG1abkmUcC8UOOjuiK4en0rvwFtvegoUaMPfFJqaIZUvg67rniJZrqRCTyczYwH02jCI63noOkyjHG2RCJCx8d2eQD367O97AwJ/L2Y+IMvqgva7GE3mRBhwklk6RwITWEIMT3OJhgJNDQKmXdaDKF+UrpkrUERTtzd1dkCphEJ41BKlTFGxUytqfrSdQJBoAZ7nK6A8ra0tbHIq+RBevuEOFNHvZwMClGTF3gy9UiKvVPJFu01hjlfLfKKkYm4Ypv6+xTUozMbXGBYDmqp6cuwZTZWZGdO1QZX0mjSlIQt+zpbPtU8ZhrlCI5a9t1g1JHfJMnxKU+mybod2r0TnIEGOLnS/a1CmSSLUTHTi3Z9sTZWInRkEg0EoY8DJlpWa5mNMBmUyUFOkyRWozXteYVG9rKbVZiq2xmkmOpWHpsYGuJ7M1zwfjaJ0oXFb4FzlfqcOPG1gxEMmdvitla+nCzfyQARXj/l0DXPPm5jQwj6l6yWi6RF6fLdqPDCNpUs2qEnco2rVFN0aDI36pV50DYoQ9SrR5bto9aiW6EfpWkaGC6NpGE7jnmfUBsrP+FFTdO9UR1yD0jX1qq4iKJOtKVrZ5jyUsLkeRDWlqRpNDq64B6XIp+VS/iu+ULRmk6krYbYvFXOgKdIHrkEpxfS7xenmlyPhVjzlmp79ivpkITEJqHXgMENp7o6Br4qT70KRj/ExkE8nDDE7/lfXoOInXr+66pHvnDU1eSMtYHr1K5Kdgr0Pr4eVS9phZDILB4+dA669x5s/+f1A5DIQVfn7+Ad/mPJy9DB0uXRIyqc3+sJtQPcsL9ra8+gmeGzroH3yvQezk+aGELx4/JonLfE8C+XsJGhS4ZBTQnRfo8gM/eNX+cRoymdRQKZ9DnLLW+9bD9FoFCJ4DqLtA/eu8zQPHt5R7QoU0hPDybPH3/BceClPDBVUqfCSNJ20VW86ZuiGR1JlW0t0PG2vZyXXc1ALoePF3BRoYv4FJTdRrqVEZmXOHT8AbOBrUX9ggPUFXSe4Pzp8CgNEAB7ctBLePzMMz712EqOp4crsOMzKjXIOCqnrH02eOvKbmqtJlKLrt24OtC59L7psg0DLw+Q2hXgbEIZwwW9BNv6vkpyOP5C/cOKTmRX3Uk2ardHWu3Z8uzm2+kWusR0UjcyYxa0ERAs1oYAfsiPnDSJO78qdeed1J0e+KShf1ZH5n2+9mh+/tF8tJCHg9+HOztrVJTx31Z3pvCyLPojbmZRLgC4VfoCAjrbdt7Mqu3XzgUDKffz28wZ5WPQFxp6L9g2wFpqGqqp11RhNg2hAYU0ZMvEh3VTK3y2cP3aw5Z7HlWr3SsbtN1+kcMPah77EhiMHIrFVjVagGRTlRh2iFnD0nRQQrRGCPI1ZyHCKlLO7xUsn3mse/LI0U3j5+L+Vsbp98228c4dYOvPWm0Lf4LWcQQ42tPcOCE3toJt+OzK6BVfxHTvsAwEtNwZiZuIjLTu6Vx0/dx7fp5mmu2ymGk0xDs+9pgvSGlz9had8XGhfuH1JJ9/UAZZfsAuf1FQowLkgKxqhQOyKLe4/jC6CWkyDlJkYNzXxJfnKSfpBO+sEBcvhGQVVrr1GP8YJJhVm5/TpkTrCsHy3v2P1I0wgvI0TGgb4xigEGtsAr4HhgvhLfubrPCZuYOkyWCoCKWWQs3hLPGOp5eN68tIfMQOmOR09AOoOKNPh2X3zBiZvoHyORirMOUz79N8M0AGgmW5lyO20ZfxCP8MJazEV78OJorimYXw/P2t6Fe+LKFIOTDKKAC9YRBtxqq1p5GnqOvSg4FTEiANQd/oVNuvmUwtlHrawmFlZRJlEpi+dpFpEbpjzHiqciJx3gCSda61ue1wdzI9qAbUBAUdzIRpPnHsh5x47p8BEtSA5YEpOX3EWpgLwlpnfzQJFxTyZWWCZWWZaAc7OGW85AlaErJiVNUt4a9bRwnWg8FdpWvONZmanLHPuz9efb975+lDFfffm9/9O/xFgANbLi7lf3e3qAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/alert-warning.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAADUAAAAuCAYAAACI91EoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB/BJREFUeNrUWVtsI1cZ/sbXxB7f4ji+29m1t9lsspulUakglUAUJJQ8AYpEFwkhRBGIF7SVqJBBlZD6lKdIeSgI9gEhIVGVB1SKoFqxquBxoVVp2a2yJI2dbLPO1beZ8cyc4Z9xsl3HdmI7zmZzpE/jM55z/vOf//zf+c4MhyZl9earOIEySfiQIOCEi6XZTU3Temnjc4S/WV1BXi6uV+n3LOFPJ+mU6YQnbYDwpm/sq/zQZ78J/9Wv2aj+OiH92J3SI9ULqIy96hqeHHCE/NTrCvr8fXBf+LyNMTbfKxvNcJLL7yoHvOg+HwPYe9BYARznhCuRgrSZnBY2Pp6hZ/78+CLVAzBNW/CNPmsGdw+askQ37kNTV+jPj+CMJ/T/5+k5m9Yje4+ieU7pkToervHh9BQfoxSSV6kuEljtqnyC/kEZ7sR4ipbhSz2w1YCTyCmeBjvHxyLkQJaiVKQosYfQlDI5moVrOKgbytDz0V7n1Ek4lfGcuxyxe0o0+Dw5Itc5BaZAkzdhsT6A78LTTiKTuSfdqTThuicVAqo5MLVC91gjGC3D6ho8KR/6feEXqM1zj8Gp7kCBmB+4OGkzaasUoC0jKvVR2odK/28D0jKx4bB+a4Ham3uVVr2M1IxjKDHtSTqJD7KAKhqDbw0JmnQf/JAGd3J0gtp//0lbfrShavPuJO1JwhLlzO7ewNmhMEhEXIYnGaSq9opOMifmFO0hHUEhavaeH0s5PSJYlfYjViWobUCm5x/AZs3DmxoPUl+ZTm03Qy8URZR2vIw3GaAokXKQy/q0fDpBTMMf31rHck7EcKwPX58OwmTiPrXFiEyEZfjPT2JrUbtOt35DWDxVlU4z87PgpUmnlbSdKhGFa3Ld/7974xP8+verD+sVQcW3vxGq76O6BbN1CYGxp23r79+e5zjMnKagNfSdP8nTbOvkIDXkzT9vi3V9G/WD+aVWwSo5DERt4EPJaZ10To0oaGkthK48Y4Zwl8a1Q0tJacgbjrPW9a3XG3NLIYoncqnchS8R1fvVVbztNJy65olfmPINSVDLaySJKEqq2oCBAUf9AUuvN3kOShWqsA6ez8OfGk+R0nipt+zHtKPAq6o254vTOam8SGlUaknb8Yizrm+j3oriZSKNMpFGgtf1b4bsRNsYSwO6jVQm8NTliNOWgyJu0JFCbknb0WA9F+n1lhRP/SjiJqzsfwhdutq1LuzGKUPfDQ1badl9bMzuYcoh6Ktn0oh+CD5MaSgi9ZvDUEIBP9idLuzYKT2JI+NXbGbxHphIya0qh6qG+BAOOMWOUBqkC8UCULwHf01pkC7UzD1QFKwVZtzh6HQgXIFSpL1Hbk4OjyLoFGC11Mzo1yAvHtlGJw2lvA6fdxMD51ITZPc7h4ypAZ1EytB3gwkvWIGiJBWbUvhB0OgQjbpr+aRfqd6OhGLVMtmhDZlUCNn9RSe6sG2ndIoNXkinPI77UCsbNKPyESp8HwpioX6jX+NqHEfaaEf9q8I2HKYVhEbSEa12Sj6GU0SLB0A7IjLBuIlmLwetKhypwOvyKmyv0bl+7aCdJhNpFFYRThhjuk5INxlbA9pS6aTC56LjaaetugS5sn0ohTel9cAenQfQUTuNSEgRCjBXlhC7nLaptPzbUentLL+rvM/zQjQmEDmsEzlUO5ptHZMjVvzkx5/BM6O2jttCkSEX1hEOF+GNBNvShUeqdPq5MJQkcthepFwq1tZ7hyVk38X0hAlakaIsd96eiSWyv4xgYhRbOU1X8W/T7Wq3Kv3aYDI0FRzYhFrcMKi2PXKohyYSk21QLkqVrtrr0VJLm/D1UX49FT9SFx4WKaJQzIXiFqg7OTpVCLW3GqdUVEkEt7OGSNyL1TvI0PB/q3916jRSmdjFaMTNZaGUdmubYqf5QJAkhuuvSXj+ZQE/WhBRrrCu+tHtK6UCbGIWycuxQ3VhK6cMfRdLCpB37xvUSlTUFd5+V8V7S7Xj/Z2shr/cVrvuy1Aau+uk9HfgCXha6sIWRw/Mn5sI28yFLInLUtdR0uHy1x89eL+z6770/FIrlJ/bWYSH+1u+LzQfdOjWr16c8Ue9r6TPFVDN6xutdKw3i8mkA2Wri5ahhqlnPfjWF8ikUD7WG1ONiMMzaIXABkLlHTouA+/Xna4frfz9l9+jIzQ+vPLcYMpTvQN5e7s2Q8cpZMGSiMHk5sFKJISXs8cnHOJ0q9eLsuMi/vXO1hpVR+huqenbJP3TSnx0KOW3rUHa3DtWHLfQ+JXlld5SIfWpFgtwO7JIjCYjK//NZ+juTxsidfO170ZpAu9OfcXpNOc/glIoniqFtxMtM++AKTKCd/4q6Bvx2P77wn2i4BRFe/n8lUGnXVgl6txTDsaHsicUBmlUYCbBm54YtNH4f/78D25wehz05ceNjc2aJFkZ4/sFUuEFSkSl9p3xSS80TpXG63aVUFWUS7ofX/7hDWaZnZ01LS/n+7Pr3ncji9qXPBE7HA4nzkpRTHYsLe5iNV/5t8Ox3U/+CJZ8Pm+2WJjrxs3cm7kN78gtl/WLJq7/zHhFC0rcLj34x63/7L5hsfS5yJ/qQ/az2R3lt27v3FBk+Q+0K5vOilMcxzGL1Vzudzh3uL2UsQQCAZWWX9HKaauOPn7L7Ky9uTlDTpHg4VRiCEFWuGIsFlC5faLg+RWLyeQ12e0ShzNWJMmuMbbDSqWE8sEHr7P/CzAAN77WZZ8SpakAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUCFtj2rt3L5OVlRXTt2/fmP79+8f0//9/MI2M//79i5WNjY9sxoULFwBPdEPtOkpElQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZJREFUeNpi2Lt370yG79+/z2T69u0bA9O/f/8YmP7//w9loRF///7Fw8UphmbohQsXGAACDAAFaUdSlQta6wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH9JREFUeNpi3Lt3LwsDA4M3EFsBsQDL////faWkpDykpaUZ2NjYGJiAAtbi4uIMf//+Zfj27RsDy79//3iBmAEGQFoYQBguAJJFUUGmAMhK2muhiRnIAqAg/Pz7928GWEAxAWWPPn/+nOHXr19glaAg3Pz69WsWIDYD6uADCDAAuvWepGgKK5MAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHtJREFUeNpi3Lt370wGBoYPQHwMiLeyWFlZMfz69Uvg6dOnXs+ePWNi+vbtG8Pfv38ZxMXFGf7//2/N8u/fPwYYALJ5WYCicAEQG10FWQIgK2mvhSZmYAjAAujPnz+gAPoMVgHivHz5EqTiOMuFCxdACj4B8Skg3ggQYACEzZ6gbOTDXgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUCFtjKi0tZbK0tGRiZGQEYxCA0TCAzmdmZsYpB+NLSEgw7d69GwDfyAUd/UzAZgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAINJREFUGFeVjbENwkAQBOf2z+fQEdLJuDIiS9RgiQhEIVT34TdBRPACAd5wtLNr27YFcAVW4Ohmds/MyzzPRAQu6bwsC8MwAOBmdogIXnFJSOqBmf1odKCUsnfjo/IGSil7le72P+XrhiS1cRxxdyQhM3u01pimiczEJd1qrVFrPQH5BFHNEV7zubdvAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIhJREFUGFeVjbENg1AUA89+X1BSRUIKizBPZqAiVSahyhLME/SlvwFNUoUmCAWX1p2tYRjewAuYgEfq+551Xa/Lsow557Ak6rqm6zps35IkAKqqQtIl2eYb22zEVvwQh0VEnN2IiB0iIs4qh7f7yn8btokIbBe3bUvTNJRSkDSleZ4BMvC0ff8ANOUZTP6A0qkAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHZJREFUGFe1kDEKgDAMRf8QcoNSaW/mJHgJJ8WDeJSep0P3LqWtyaCgo2DgLT8vCYRCCAxgFSbBU+99d84t3nswMzSYrbWotSLnDGqtGQFXqQHlDrT7MD4GevL/kV92vB+USimGiG7jiDEu+lcN1dhSSiyMIgwn4zCUe/hU7cUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHlJREFUGFdj2bt3738GBoanQLwAiJtYrKysGH79+iX99OnT6mfPnjGzfPv2jYGRkZFBXFycASiYzPLv3z8GGACyRVn+//8PFwCx0VWQJfD37186aKGJGRgCsAD68+cPKIBeg1WAOC9fvgSpWMBy4cIFkIIXQLwMiGsAfrObQPFrrDEAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAaCAIAAAD5ZqGGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABxJREFUCFtj2Hv8MsOLj78ZHr79QxK+/vw3KRgAe89HUPF0VZwAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiePHxN9PPP4xMDAwMTAz/gZgRiWbAjr/9+o9TDgsGCDAAAzMJ6g6yR1MAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABpJREFUeNpifP/1D+OrT39Jwo/f/SEFAwQYAODeRsIBHh3QAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpi2nfi8vuvf5gYwGDQUwABBgCRZQVstXD5TQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiev/1z74Tl5kYwGDQUwABBgCS+gVsJvl2BwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpinrNoJROvgAgTAwMDE8N/IGZEohmw4x+//+OUw4IBAgwAAtMHPgLjCOMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpiXLdl97t375gYwGDQUwABBgBZowUZrYKqmQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABdJREFUeNpinLNopZCQMBMDGAx6CiDAAH9oAlBHNVNpAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpi2Hfi8osPv5kYwGDQUwABBgCHXwVdauGiRQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAIAAACUxWgrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUeNpievHh174Tl5kYwGDQUwABBgCJfwVeVOih6QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/buttonbar-resize-control.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAKCAYAAAB8OZQwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF1JREFUeNpUT0EOgCAM6/r/MzceoB/UoKEyJihNljVtRwNT3tQAn5T3zomGckO+YcFp1vWAwqPeUAQtRPyg0MCqLzk4/VqaPfDnlvPRRbeXqh5v1lHq/MB5VT0CDACNvzl3e/9MRwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAL1JREFUeNrEkrsKwkAQRWfDsF0kVYrd/7AwPyCKHytiuaUK/kZIQjrRKq+Ndwpb8wJdOGwzZ+7Msqrve5p72DnHuPdgA6IRzgNcwZmRfDDGbK21pLUeNOu6jrIs2+V5HnDXdUkcx9S2LTVNMygrpUjq0zRN2HsfosHkfcWTZJoji7Ncln1/L4s4Z2zx/jj20td+VVUVMvOkfcUL8FMuRVEQGtBnim9IndTDu0nyqSxLBms0XY0IfoI7OL4FGACS4bkP/RnUSQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMNJREFUeNrEkkEKgzAQRdMkZO9CDHizrgpeotDS0t6j4Kq38DiVSHUZRImxfwrtsmpcNPAYGOblEzKbcRxZ6JFFUSjUE9iBdIbzADm4SiRfkiTZa62ZUmrS7Ps+NcYcqqoSchiGLIoi1rYts9ZOypxzRvNlWWbSex93XTf7nQh7V/Io+dtYcsj5s+ycC5NJDEkmb13yahl/Fiw/sXKxEGKRSB5H6q2ua9rZT/MnNEfz8HJKPjdNo8AWl+oZwQbcwfElwADuQbxR1tcjhAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-mixed-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUpJREFUeNqckj1Lw1AUhk/Sq7WU2LpYKRQHPyq4OEiHdhdRHF39Qf4aRZyEDoIVhYLgorgoNv0wFNRU0/Tek3hOanQItE0vPFwI75M3595ovu/DtEscn9QE7ftEmchO4LwTNeJceJ53sFZY2i0u5yGVnB1rOu4g+/jS3Ht6besCESuLuRy0HAD15Y7/VF0Dzj88mxWWjQ+X51YTzYkEV7AnFCpg4i52BCoFUsWX2RNKIUiJwYP65UXeapkZTYuG+UoLK8Xu5nb5LWgmj+T/5vv6zUbX6qzqCRFtkgPo2fbd+lbpVw6aJckyCKQzCzBjEHOpiOx+9yCZNv6y7A2b5bB55/CoSlt11KxhVoUzM7FPm2dGnPK0MWhWtuv2jYQQsa6JPZ3+lKu22YC+04dwhFFwjvPkXQv08MzqNAVRopfOT1D8SdwSpz8CDAB8Kd6AIP4Z1gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-mixed-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUVJREFUeNqcks9Kw0AQxifJJiaiVMFotBWLXjx59OSTeBJ8CUFR9Og7CD159im8exFUBBWqpkFaa5Q2+yfObKM95JCkAx9Zlu+Xb2d2jTRNYdJi51fXDn6PUXuoegmmjWqhzphS6nRtce6guTQPrs0KyQEX9aewe/jc6VlMSrnvTTlw/9YFLmQhbDMLap4DxBHsh724dJ/oh8Ewoa/PhBR6o2oRx6QQelG1iGMC++Rc6Y2Xxzv4/IjAMIycma7UX25AsNocJSOH8Dj54fYGwtc2mFZ+6pInsLEZw8JKI4N1MtcLKm+mBsH6LNiul4OHPzE47vS/l7hRcnZFW9s7xYPKvOKvZzHJtKlnKcfJlaYtdbKIuEh80zRLg/ik6diRiQ/kot+PIUnoBKpQ5CM/ci0mlTyJv78c1C7+NCgR/I66RB39CjAAFHjbsmAj4HkAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-mixed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUZJREFUeNqckrFKw1AUhk+Sa2wFcaoNLVUpFTs5uugDODo7CX0JQVF09B2ETs4+hAhuOggWO1Q0bUpxENQkvfcknpMYHSom6b38BA7/l//+N9HCMIRplzi7vDbpeUTaI1UzMDapTToVQRCcrNas/bXlChRnzVTS9cfVzlP/4PHZMQQithbLZRi4AOrDTz+qrgH7H3p2i+HSm8+9VaaeSOII5oRCBay8ixmBSoFU+WHmhFIIUmI06N7fwutwANof5pB2ZakOtUYzTiaO4N/ku5sr6HU7oBtiMkmOYX1jE6yVxjccJUuCZTQozC+AVW/CTKE4Afuf7zSf+/EyFyfLOHlreye1a+JVSWdW7tvmzohT3jZGyWrk+17JECLXZ2JOpz/l3LFfwHM9SCr8J/axn7i2wACPR8O+Sdqll1oZgh3SBenwS4ABALu11aydNvk+AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-selected-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAiFJREFUeNqUU1trE0EYPU0n5tLdtcYmaVPabCNaQdOElJbSkL5Ia7F4Af+RbyooBEHQCl4exBfxgljwRSSxoC8WqmJTqmJra6u0SchlszO7zuya1kIa9IPzsN98Z853hrMtpmnif8oX7ve1tJLzJqO3yaVHrwnvTXGMcrQ3IzJGoR5P0M2tLVIrFZ3EMIzTh3s6J/vDIXhc+5qqptNpVEHI/u4I/EqbRBhjyUAwiNUKQEvansS3mZd4/moWSpeKvt5uxAbiAQcny3nNhFajYJQ1xMqXz3hw7w4kfwiSLOPsmXPgG8uEch8Ce1WtpuHWtSsgykEQdxumTk5AUhSL42CUQv+DG5cvoJDPb38L3J++joJuwiW3YzAWhRqJWH3Bc1C+lq4zrK+u4f38PKavXoSm6VYv82IGHz4twHvAj4C/A6PJlNUXEDxOthV+/VyH3BnGRr6Ih3dv4utSDjPPnkDq6ILL7cHE+DgMnon6RoJHKOUqHCE1ghOTp5DJZvFxIYfc4iI8viD36cVYKgmvJFlz9RI8Yinr9oMdPRZFuVLFu7k5gAfP4XTiyKE+9PSq2zM7ZEvZ3r9eA/EEyuUKlr4tQ/G6MTg0sut8h8xAROSEh78rMTSMSrmEaCxu+TQobRhVsXZR06pyKyG7DkdSY7ZCgwww+8GKImHZtZVlVLnXuoVmEHNinvNmCTPY040f3wnHML9U+Ye/ssDxhuPxbwEGAExxWB6CMBpMAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-selected-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhNJREFUeNqUk01rE1EUht9O70ySaRMT7CQTU2tiYiwxftdU0F/iRsW1exeidNOF/gFRChVEwYJBUIKgWwMiFqwgilgCtUmIbdIkte3MvRPPnWpDqY164YW555znfHDP9N1+WsT/nMmrF0f6+tmtjuCXmeM4GtlukC6RYr1AITji2VNWvdHQrNWWV8ITB8LBa/FICF6V9ax6994U1sG0PbGDMAIDBhNCXPF5NHwu12FzsSv4YfYtXr2ZRSAax7BpYGwsd0jCRrXR7lnxe7WMF4UCBsMx6LqO82fH8cMSBuM0ByXYFbRtC/nHj6AFDTDvAM6dPuEmaK7VoQjOIRNIzUzfQbvd2rpLFfIzWIMKjz+I0cR+RPeZrl1yCqc5bdvBUm0JX+dLePLgPqwN7treFV9j/lsFeshAKODH0cwR1y4lOYI3KzQay/CbI1gh8OXzPMoLJRQJHhyKQtM8yJ08BgedblfEMc5t9yMcjeFMbhzvP35CabGKhcVn8O01aU4dxzNpeH0+N+73kRxzK/96ong8gXXLxpd+eu8OoKgqhiNDiIQjWzFd2K0sqI2uI5VMugkqyyvQVQWj6fQ2fxcWYELwHVkPp1LYmJtDMpGA43RI4o+rKtuu2dwyFEXZ5sxmM5tBDt8B0krLtmsKLchUs9mGZckOnL9Kxsl44qaZcMTN9mpLI12gpOY//JUV0kPS9Z8CDACMI0E9p2np0QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image-selected.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgtJREFUKFOV0V9Ik1EYBvBzNeiyLrsYddGoJYmmIkl0oYktikzFnLN0xpJBXxYtmqE2dY7JliuGRovQTc3J1FolbWGpodUMYQ2K/tk/MRwEFXkRXTyd98A+GOKyix8f3/s+z+HAYQDY/1ivVCk3bFYP8u86Zh+dVnBt3AKHVNoDk8jQHPm9aVcRNqbn3WK24ce2QOQtYkvLePf9T0pSixPbNDqklxlRUGuaZm1DE/GpTz8R/riMsflfq7J472JLQSl2Vp1F6YVOtPofxZnl5jjuvPmRkudhDOq9ZciokLDHaIHv2QdQjzX2hTD66tuq/NFF5B6uwY6SOmTXmNFx+4mYU4819NzDUGxJ2Kc/hd6n8/I/OXSyEeoD1ciuPo8614A8px47dz2I/rlFuMNRKHPysbv8BHzPF8RMutQLVWE5so6asN/kgHf2i5gT6rEzV0fQE/kMy8ADbD+ox9YiLYqlZvEsqvwSZGrrkWdowmV+OOUSqMcktx+emfeC1BVAZuVpcUCaplI8SY6+AWZfSM7IWd5jRlc/uiZfy447+8Q1s6pMoqizepL2CdRjBocXV8ZfJtG2epBraEZhvQ2d4diKPaEeq7XfgDP0IonjfhTFZheaBidW7BKox45Zr8XbgxHYx+bWjPLUY7qWbpvUPQLL8Ayswdl/ohzlea+DVVx0Kzgn95XDGlCO8oq/2QGjSdgwyFQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/check-box-image.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK9JREFUKJHFkjEKwyAUhuUNuUED0ms4eZ0eo4VS6NwbFHoRz+CQKwRSyewQiJr3l3Rr0dShw4cSvk/lEUopiV8hY0zDXJmeSQX0q98Qn3CRUh6VUnuttcgBDz46CiEc2rYV8zwL730WePDRUYxxx5vXR6w53h46Kgm+UR/jKVupj0sH9Wlwf3x27bTHaZo2Ras/4g+7D8MgSg+AB5+7B24+O+duXdc9rbUiBzz43J0WHcymW5LxdgkAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUCFtj6tpwjCnYwZTpzodfTP/+/Qfif0x/gRhM/wWx/0JoOBvGB9JoapD1gsy6eu4kADbzQ5rojOveAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEBJREFUeNpi6NpwbCbD3Q+/ZzLd+fCLgenfv/8g4h8D018QAWH9BXP/wlhIXITYX6gONMVoRoGNv3ruJANAgAEAzhtGyJPGg6AAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKZJREFUeNpi7NpwjIWBgcEbiK2AWIDl379/vqqyEh7qcpIMnOxsDCz///+3FpcQZ3j5k5Hhz/dfDCAVvJ9/MwJV/2MAAZAAAwjDAFjgL7oAmoq/DH//IgmAOH+BggRU/EU3A1nL378gLX/R3IFqBpoKiLX4HAbxC4Yt+D2HaigTUODz71+/GGAqQQJHXz57yvDrJ0jwPziQN7999ZwFiM2AOvgAAgwA2zedN71ws+cAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKdJREFUeNqUkD0KAjEQRr9IWuv1Lt7QG+wttBA8wYoWdhaiNlqsCxbLWsgmmYkZ/4hxQQx8EF7ezCRRo3GRA6hDipCp2tc2v7YGm0OJ7fE06+1qg6pVyAYZvPdDzexhJFBg5n4AjNeSvaYUfBsUA5ISegM57DAi8DCikqcR96C0B3cZzL/Gfkzh9B6EP55Pzgm43L/QWYtzVQqY6/VqIUITsgyZ3AQYACwxo+jE5WFHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUCFtjCquZyKRtbM7ExMjEBCWYmMEkkGYGsZmhNIgPZYNomDiSGmS9qkJsTGv2nQIA4IwFK30tWVsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJhJREFUGJVjDKuZyMbAwFAHxAlALM3CxMTUKCQqXiEsLsHAwsrGwMLIyJgsJinDwMzCwgACIBWirGysDDAAEmAAYRQBZnQBFBXMzMwMzMwYWpiRBdBUgDjMmGYwo5nBjF8FM6otYENR3YHVWnwOI+h9IJ/pNS8w9FhZmBmgqpnmvnr1kkGKi4FBVQgSyPV3nrxkA+IooA4JAD9CEUzrpwlHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUGNONjzsOgWEURM+d+fwRpYTEo1UpFXZiA5ZBZQd2oFJZgwXYh8RPWIBHqET8nrecnMyZG4Px9AqsgRkwSd1en/Pp2Nrnm9Fhl1sKkWVl6o02ETFMUgCgrISkWpLE/SSRXAxeCT8C2yTLnwnJz6W2SLYLHX6x+JvFxR3vtf5B/Pe+FZS5IGmnTjWjWYHtNkfSLC2WK4ANMI+I8Q10tBpanttAIQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKNJREFUGFdj6dpwjI2BgaEOiBOAWJrl379/jaqyEhXqcpIMnOxsDCz///9PFpcQZ3j5k5Hhz/dfDCAVop9/MwJV/2MAAZAAAwjDAFjgL7oAmoq/DH//IgmAOH+BggRU/EU3A1nL378gLShm/EM3A00FxFp8DoP4BcMW/J7D9P7r379+iTKzsMAF5r589rRCRFySgYWVFRzI9W9fPWcD4iigAgkAAWSTEqdsRP0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/default-button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKBJREFUGNOVjzsKwlAQRc+TtwWJ+3MbVlbiKlJZuwrBxs5C1EaRJGiRTvKZ+yz88IyCOOXhzL0zbjpfBOAEpMDY7csmXKuazSFje8wnvV1ZU1SOZJAQQhh6KVArUOOQ1PeSeI4kvHXBp2ExMLzJXsDsqxGBuxGtPIw4w7oZ+mZIv2rfWtS9w/jjfWtbJJ29FGibhkuRISn169USIAdmwOgGxHqjvh+HJ8QAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAIAAAAL5hHIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhJREFUCB1j7u/vZ87JyWEuKioC44SEBABISgbNtp1KFwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUeNpi7O/vn8mkoqLCwCQhIcHAxMPDw8D05csXBoAAAwBIogYEjN3jQgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUeNpirKysFODm5o5iY2PTZWFhYWIRFhZOAGJNXl5eBqAgA4uQkJCSuLg4Az8/PwMrKysDEzs7+z0uLi4GHh4eMGb6+fPnom/fvl398uULAwgDBBgAx68Ss6bQhHIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi7Ovrm/n3799/P3/+vPz169dlLCoqKgy/fv1i+vz5s/7bt285WSQkJBh+//7NwMXFxQAESiw8PDxggT9//jCws7PfY/ny5QtY4Nu3b1eB5iwBCDAA1UAuSStF1W0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFRJREFUCB1jrKyslObm5p7GxsbmzcLCwszY09OzS1hY2JWXl5cBKMjAOG/evM8SEhI8/Pz8DKysrAyMS5cu3SUtLe0qKCgIEQCqkAOqmAlU4QFSAQDMoQ//dMukywAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/horizontal-track-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFVJREFUCB1FyjEKwCAMQNHktIUexsMECl27egBvENBB0ASHRIotXfrHx8cQwrrfzOwYY+xIRMvdQVWh1nphjHHNOaH3DqUUx5TSB601YOb/EJEz57w9xYtAc8FdpUUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAAwSURBVHjaYjAzM/vP9OvXLwYmBgYGBqb///8jE9jE8CvBawrzhw8fGBn+//8vBRgAxTY3eCgJOmQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAAwSURBVHjaYjAzM2tg+vXrFwMTAwMDA9P///+RCWxi+JXgNYX5w4cPDAz////nBQwAi5c260232L8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACESURBVHjarI67CgIxEEXPzE4UH4RtLRYhZBs/QRv/v8yvpDSbsdpGBEH2lOdyuVeAlHO+j+M4qereVPUSY7wuyxJaa2jvPbh7cHcADKD3zooBrOlXoXzwu7KF+GN2i6dqZs3dX6sYUkrHWuvJzM4iMlBKOczzfDOzB/AUdxdgBwRA3gMATndJshnCq34AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACHSURBVHjarI4tDsJAFIS/bl5DENSjVtVwgBoMR+N0HGB1FVhE1SZs6RsMrQBBQjpuvmR+qq7rzu7+GIbh1vf9JZRSmKZp0zRNDCHsDUASQO3utb3NDFnArC8Q+NDvyBrgj9k1ni4dkkYze5ok3L3knK8xxjvAycyObdseUkrbStIOEDAC5TUAKxFgMuA5pPMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAAzSURBVHjaYlBTU/vP9Pv3bwYmRkZGBiYGBgYoC0GgiWFTgl8HXIz5xYsXjAz///+XAgwAKVgKjcWlLqMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACGSURBVHjatJAxCsJQEETfrIsJCSkEBeF3gX8BW8HKG3gUwdoz5i5fm5BNYxorEX3lGwaGEXBOKV3btj0CnZvZoa7r0ziOTURg0zQ1QAMgCQOICBZ8ST4Xxht/qfxCfLPU3Z8R8ZCEJFZ9329LKbuqqvaS1gzDsMk5X9z9BtwVEQK619E2DwBfRh57l5xeoQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACLSURBVHjatI4xCsJAEEXfDFMsAS9gs6TZA3gAz+YFPEquYKWHsLBMvxATi4QZGwWxEtHX/cf/8KWUEsAwjuOp7/u9zvPMsiyrlNJWVTcqIjxo3L3RZ4oIAOyl8aFQ3vjL5Bfim6cigogQEZOZ3QzA3a+11mPO+SzAzsymtm0vXdcdJCLWgAMTMNwHACs+L3xeMd7tAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACJSURBVHjarI4xCgIxFERfvh+LwC4RFKxDcgFbwcobeBTB2jPuVQLabPK3SiOCIPvKNwwzDrimlO4hhLOIDCoip3EcL7VWP88z0lrzZubNDAAFaK3RUYCefhXCB78ra4g/Ztd4Kqr6NrNXF5sY476UclDVo3NuyzRNu5zzTVUfwNOZmQMGwAOyDACRI0tKhkhIygAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACKSURBVHjarI49CgIxFIQn4VUL5gA2S65gkdKzeQGPkitY6SGEeIfAyhMCebONu4UWgux088H8uJQSzWyqtd5KKWffWkPvfRdCOHrvDwIAJAFgMLNB3maBWMGiL+Dxod+RLcAfs1s8XTtIqoi8hCTM7Kmq13Ec7w7ASUQ0xvjIOV8cyT0AA6AApnkA8SJiRCHFwrsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAA/SURBVHjaZIvBCYBAEMSGKfS0Fdu4fk6saR8TPwsK9wmEEI/jxFUlB2RAJmlNIkPkZA8ftoN/QGp97nUZmO8AYzNFSPGK8tYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAAA8SURBVHjaZIuxCYBAAMTC9e7kJOooP/cXFwsFhW8CIYTjvEbmnKRKVGL7aluiJe0aPiyH/yA8CrCjbvcAE+tBokS7K5QAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACLSURBVHjapI5LDoJAEAWrhx7xdwEjYDIJG4+gmHj/JXeRBTLdbowLXBh1+SqpyhMgdd3lVDdNHWMsNYSw21fVAYjjOKJmFhGJ2QwABbDneAGfA3OfgTfF54r539HP4Ken/kU0qOo05Xx3wIEipbQehtumLJdbESno+37Vtu1RVc/AVdxdgAUQAXkMAA50T0Ivt9NcAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACVSURBVHjanI4xDsIwFEOd8CvEgOiKqBSWLO0JEAsnAY7CGXOEzIWpU0q+GVAlyIKoF0uWn+XF+XK9tV13qDf1PsY42JQSACx3TeOstVtREiBhjKlUtRKSAIDJhar41Bv5CsoGWSJaIDNGfweznvLf0QnIOY8i8hRVRc45Pe59dM71AHASkaP3vg0hrAzJNQACGAGk1wAfU2M6/egpmAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUeNpkjMEJACAMA5OM4Syiqzl4obYoWDCPcOEg6GO6zAyKQASiks4kLynpiVJFJPEX54X5DSy4e9sCDABELwjMR/gd5wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNqkkL0KQjEMRpO0OBQq3F4F50JBHV0FJ9/ARxGcfcY+jA79u4ku0kEvGEighy8HGgSA83a3v7pxPBKR1TwOg3On1prJOYOutRqGhgEgImiQkge86wWQCOATUA9k93uC+sRv6QwwQ9on8C8paa2fpZSH/Fhaee9XKaX10tqNUmoBMcYhhHDh5I037sjHFaPlNqKYBBgAFyshPM4kBT4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJRJREFUeNpitLGz///v37/P796+PXrj+rVepj9//jD8//+fV1BIyI6JicmIBUgwgAAjIyMXUCUXCyMDFPz/D6ZYGKEqYACuBS4A1EtABRO6CsKGEiFAhKHoKhgpNxTmW2BQfmNhYfkO1vLn9+8vTx4/OiIvL38TJNkAlClTVVUNvnTpkiAjMMSlgIL/gPgbEH8GCDAA2UIwblDGBeAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACgSURBVHjapI4xCsJAFAUn2Z9m0UbtjCEXSGNrtPIGOYr3ygUshICdYis5glpYKYTNXxuxiIWo5RuY4QmwzPP5apIksyiK+hKG4XQcxwvANk2DqKolCGyrCoAA6HO8gO8C9b4D3hTfVdT/Hf0Mfnrqv4mKyN217c0YYwEkTdPj5XyqBsNRbozpSVmWVVEUctjvNs45K1mWXeu6XgNbIHwMAL4rWK1r13/GAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/default-button-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAGtiAAB0NgAA9OoAAII3AABrSwAA4yUAADEyAAATrPYeey8AAACcSURBVHjanI4xCsJAFERn118FxNQaCGlN5wFyFPUOXsAL7RWsvISFzXaCsVFWCPw/FhLQNGKmGRjmDTNZb7Zc1vUun+VNjPHiu64DgOmiKBrv/UqMBEg45zIzy4QkAKB3oRk+9Ua+gmGDHCI2QEaM/g5GPeW/oz2gqklEnmJmUNXHrb0ey7I8OQB7EUlVVZ1DCAdHcg7AACQA99cA7LNl9l3/HpoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUeNpiEhUVPcOkoqJylklTU/Mei5yc3HumR48eCQIEGABLxgeqlrkYjQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiFhUVTWPW19eXYtLU1HzPJCcn951ZSUlJGSDAADTlBJ4jXpdLAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFhJREFUeNokiEEKwCAMwGAtFqQWj4p7jN/rF/3BYIdd6mA4mbBADgkSUVhWRNwBYKKIVPk5nHMDY4ycUrpyzua9H7jiXHOWUm5mfkFVn9ZaMDPqvW+fAAMAgxAYEA9uUqQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAF9JREFUeNoMyjEKgCAUBmB7/mBQtjlEeAAHzxV4yo4SGLg1ifZCocYPvsEYs/feqbV2MfMhvfeb1roCmIUQK5xzdykFKaWJiBZYa5+cs6y1yn+8iDGOP6CU4hDC+QkwABcBJR2ZJ8maAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpiZGdnlwTiBhYWFgtmZuY/jKKiojP5+PhkgfgtGxvbDxYBAQEJILgvKSn5iouL6ycLkHMTKPhHWlr6PQ8Pz0/mzs7OT7du3ZL6+vUrz7dv31gBAgwAuQcYxkfD6eQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/horizontal-track-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGNJREFUeNoAVQCq/wQVFRXN/f39BPz8/Mj5+fmAAy0tLTUNDQ3tBAQEGAAAADIEKSkp3fb29gfn5+fyAgICHAQdHR3v9PT0B/f39wcAAAD1AuPj4xHm5uYRBwcH8mpqaq0CDABLliXpqWUbNwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/knob-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAADRUlEQVRIie2VS28bZRSGn5l4xhPHjY1jN4lrJZAUEhmDuKhkw4oKiajcsgB100WFEF2yYUPX5R+wqFDFIhuKAJWLCAgVIdQFEjtUoTqJExcsFF87GU/GM+PxZxYeOxPLUemmK470ro70nDPvd84Z+D8edkj/IS8Bsi8J6ALCV9fXA8H7wNCHV64sJU5MnVbD2nRYVZKO2665jl1uNOvbH12+nAe8QKH7wiUgtLq6Gj/7+puvLC08sZhJz5BMxEkk4jQaOrWGTumfPfI7m4Wb39z4YWNj4x7QGS4wNgp8/vzFmbOvnrvwwnPPTj+59DhuR1DfNyn+vYfd9hgf11iczxCdmEhEE6lcy3O3iltb9v3gY0Dk4ruX3l4583w8HJlgt1TGMC1sx6UjBLbjYpgW5brO5OQJpmIxRVEjUzd//H5zuPsgXALUS+9/8MzKypmnuiGVfeMAIcSxMg9adGWZ2GT0kWQqY/7+262y7z8AoQBcBtSTM7PLghCWZQ0SjVqN9WtX+fP2H2RzT3PhnfdIJJMAeJ6LqmpMzaSywG16D9zpA4NwRVXDKddzcV1voPVrV2nUKiwsLNCoVfj0k4+P5E3LQlHUJKAGmcOdj0kSmhAghDdImIZOOp1G0zRs26ZSqeB5h3khBF0k1bd5JBxAatm2Y9t2WJYPPyqby2HoOrIso2ka2WwO13WPwB2n1WZotIO2AHSb9f2GaZp4njfQ6mtrpDNzCCFIZ+Y4t/bWkbxpmpgN4x5DoxjsXACdnWL+r5OnZmdD6mHKtAWrb6wRjUQwLYu9Sg03YIth6BS287v0HnLktAig/e0X1+/MP7a0LMtyLBqNAuC5HjvFEqPCMAx2C9t73924vgm4QfioDZV1vdpMn5qfQ5JCiqIcO+e6rlOvVp2vv/rsl6au1wGL3iiOhHcB6tWqu13Il1PJ6biiqlGE6J2/bhfP83BaLQzD4O5Oofzl5+u/lkulMmAOdz58uCTfqnEgCsRefOnl048uLs/H4vFJRQmp7bbn7uu6USzcuXvr55+2AANoAi2G1v/Yq0hvISLAhF9MoTddAmj7sAPfCmcYfBx84H2gSH9B+j+Ljm+BywPe81FF+uqH4Ojf6OHHv8wPry1u2L4DAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/knob-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABBlJREFUeNq0lctvG1UUxn8zY2emTtI2D5PEdWqnlEo0RKVVoVWRKCAhxCNFVBEPIYHEsgv+ADbddNdtF4CQWCAQSLBgA0tQQYi2Saw09EHVUidxEtuJk9SP8dh3xsPmjDtJG2DDlY6ujo7ud8/57rnf0Xzf5/9akfe/+WO7mCamA0bI98U8oBXyHwTfBlSXWBQwgQ7xdQF0gSbQAJT4ra2XbAUPQDuAGNAJdMluSgWegNaAquy2XBZc8gC4LpnuAHYCvWJ9wC6JB6sF3ANKYutAGahLJa0weJBxDOgBBoEhoE/LZsa09aUxnGqKppOkw8phdc35PYlZP314FtgNLElVCDUK8MPglmSYANJU1wa49tO7YyNDh8eeOkFqb5LhZIKF3FJ6bj6Xnr124+TVS99lGH3+S7p6TXkrT6jxAM84NHFGE467JeO0vzq/r5X54aPxF55Jn3r1JUwrRtVpkM3l8TWNeH8/x44+SQfe0M2LPx7X+pIZzez0AEdMAS3j0MQZQ3juBZK0vEH38vcfTrz24sCjBw6QXcxTrtk4jSatVgun0aRcsymWNkgOJ+ndGTNvXvolbuwdux566Abg6kKJKZn3qhu/Hj1ycH9qV98jFFZKuK67rRVWSgwkhjnyWPKwun7xqDx+t+DpwQcx5TG7VP7O0/GBAWq2jVIKpRSF/DLnz53lg7ff4Py5sxTyy+1YzbZJJJOo5dvH5c06hWZDD3WKCaCq6+moabUPK6X44rOPWVspMDIywtpKgc8/ubAp7msGqraRkuawpKX1cLfoAK7jdBtGBKXcdlNXyxskEgksy6LRaFAoFjfFdd3AdZyYuEaAFQl9ihaA5/uVSqXSbVlW+/Djo09Q3ljHMAxM0+TgwVGUUu14vV7H87HFDTRnk1Y0AOjozBaWlzaV/cqp0+wZTuF5HnuGU4yffnNTvJhfhuiOOQFvt2IkpBU2UIsMpidv3741Fh8cvE+L4/Py66fpisWo2jb54irKvU/LrT9vEk3s/10koSY64wWZN4AKUOo5Nn45O7+4cG1mBle5uMqlXne4O5dj9sYt7s7lqNeddmxmapJc6V6m5/j4pOhMRfBaAXhTFG5VMyIb/Sff+nR6erKcmbqCct1tLTN1hatXZ8rx5975SoBXBacZ/NCw5PoA0d1xYqnRqezkz/HS0vyQoetEIlF0XcexbQrLi8xMTzJfLGX2jJ+5YMaHl4AFoCjq2ARa2ntfz4ZVsTOkigmgt3Dx2yOVv2ZOqOpG2ndVtxaJVqJdu7Pd+w79NvDsxLRkvAgURHrtQBUD8O30vD+k51vXvRAVa/+k50GvK6HGlZYqAytSkRWaRI50RUU4/tdJFL7Ak70uF5hSlRYaBg2x5n+doWyZ7EEFxkPGnBf62Q+d/n8PAPiyIDwt8vw5AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAKQWlDQ1BJQ0MgUHJvZmlsZQAAeAGdlndUU9kWh8+9N73QEiIgJfQaegkg0jtIFQRRiUmAUAKGhCZ2RAVGFBEpVmRUwAFHhyJjRRQLg4Ji1wnyEFDGwVFEReXdjGsJ7601896a/cdZ39nnt9fZZ+9917oAUPyCBMJ0WAGANKFYFO7rwVwSE8vE9wIYEAEOWAHA4WZmBEf4RALU/L09mZmoSMaz9u4ugGS72yy/UCZz1v9/kSI3QyQGAApF1TY8fiYX5QKUU7PFGTL/BMr0lSkyhjEyFqEJoqwi48SvbPan5iu7yZiXJuShGlnOGbw0noy7UN6aJeGjjAShXJgl4GejfAdlvVRJmgDl9yjT0/icTAAwFJlfzOcmoWyJMkUUGe6J8gIACJTEObxyDov5OWieAHimZ+SKBIlJYqYR15hp5ejIZvrxs1P5YjErlMNN4Yh4TM/0tAyOMBeAr2+WRQElWW2ZaJHtrRzt7VnW5mj5v9nfHn5T/T3IevtV8Sbsz55BjJ5Z32zsrC+9FgD2JFqbHbO+lVUAtG0GQOXhrE/vIADyBQC03pzzHoZsXpLE4gwnC4vs7GxzAZ9rLivoN/ufgm/Kv4Y595nL7vtWO6YXP4EjSRUzZUXlpqemS0TMzAwOl89k/fcQ/+PAOWnNycMsnJ/AF/GF6FVR6JQJhIlou4U8gViQLmQKhH/V4X8YNicHGX6daxRodV8AfYU5ULhJB8hvPQBDIwMkbj96An3rWxAxCsi+vGitka9zjzJ6/uf6Hwtcim7hTEEiU+b2DI9kciWiLBmj34RswQISkAd0oAo0gS4wAixgDRyAM3AD3iAAhIBIEAOWAy5IAmlABLJBPtgACkEx2AF2g2pwANSBetAEToI2cAZcBFfADXALDIBHQAqGwUswAd6BaQiC8BAVokGqkBakD5lC1hAbWgh5Q0FQOBQDxUOJkBCSQPnQJqgYKoOqoUNQPfQjdBq6CF2D+qAH0CA0Bv0BfYQRmALTYQ3YALaA2bA7HAhHwsvgRHgVnAcXwNvhSrgWPg63whfhG/AALIVfwpMIQMgIA9FGWAgb8URCkFgkAREha5EipAKpRZqQDqQbuY1IkXHkAwaHoWGYGBbGGeOHWYzhYlZh1mJKMNWYY5hWTBfmNmYQM4H5gqVi1bGmWCesP3YJNhGbjS3EVmCPYFuwl7ED2GHsOxwOx8AZ4hxwfrgYXDJuNa4Etw/XjLuA68MN4SbxeLwq3hTvgg/Bc/BifCG+Cn8cfx7fjx/GvyeQCVoEa4IPIZYgJGwkVBAaCOcI/YQRwjRRgahPdCKGEHnEXGIpsY7YQbxJHCZOkxRJhiQXUiQpmbSBVElqIl0mPSa9IZPJOmRHchhZQF5PriSfIF8lD5I/UJQoJhRPShxFQtlOOUq5QHlAeUOlUg2obtRYqpi6nVpPvUR9Sn0vR5Mzl/OX48mtk6uRa5Xrl3slT5TXl3eXXy6fJ18hf0r+pvy4AlHBQMFTgaOwVqFG4bTCPYVJRZqilWKIYppiiWKD4jXFUSW8koGStxJPqUDpsNIlpSEaQtOledK4tE20Otpl2jAdRzek+9OT6cX0H+i99AllJWVb5SjlHOUa5bPKUgbCMGD4M1IZpYyTjLuMj/M05rnP48/bNq9pXv+8KZX5Km4qfJUilWaVAZWPqkxVb9UU1Z2qbapP1DBqJmphatlq+9Uuq43Pp893ns+dXzT/5PyH6rC6iXq4+mr1w+o96pMamhq+GhkaVRqXNMY1GZpumsma5ZrnNMe0aFoLtQRa5VrntV4wlZnuzFRmJbOLOaGtru2nLdE+pN2rPa1jqLNYZ6NOs84TXZIuWzdBt1y3U3dCT0svWC9fr1HvoT5Rn62fpL9Hv1t/ysDQINpgi0GbwaihiqG/YZ5ho+FjI6qRq9Eqo1qjO8Y4Y7ZxivE+41smsImdSZJJjclNU9jU3lRgus+0zwxr5mgmNKs1u8eisNxZWaxG1qA5wzzIfKN5m/krCz2LWIudFt0WXyztLFMt6ywfWSlZBVhttOqw+sPaxJprXWN9x4Zq42Ozzqbd5rWtqS3fdr/tfTuaXbDdFrtOu8/2DvYi+yb7MQc9h3iHvQ732HR2KLuEfdUR6+jhuM7xjOMHJ3snsdNJp9+dWc4pzg3OowsMF/AX1C0YctFx4bgccpEuZC6MX3hwodRV25XjWuv6zE3Xjed2xG3E3dg92f24+ysPSw+RR4vHlKeT5xrPC16Il69XkVevt5L3Yu9q76c+Oj6JPo0+E752vqt9L/hh/QL9dvrd89fw5/rX+08EOASsCegKpARGBFYHPgsyCRIFdQTDwQHBu4IfL9JfJFzUFgJC/EN2hTwJNQxdFfpzGC4sNKwm7Hm4VXh+eHcELWJFREPEu0iPyNLIR4uNFksWd0bJR8VF1UdNRXtFl0VLl1gsWbPkRoxajCCmPRYfGxV7JHZyqffS3UuH4+ziCuPuLjNclrPs2nK15anLz66QX8FZcSoeGx8d3xD/iRPCqeVMrvRfuXflBNeTu4f7kufGK+eN8V34ZfyRBJeEsoTRRJfEXYljSa5JFUnjAk9BteB1sl/ygeSplJCUoykzqdGpzWmEtPi000IlYYqwK10zPSe9L8M0ozBDuspp1e5VE6JA0ZFMKHNZZruYjv5M9UiMJJslg1kLs2qy3mdHZZ/KUcwR5vTkmuRuyx3J88n7fjVmNXd1Z752/ob8wTXuaw6thdauXNu5Tnddwbrh9b7rj20gbUjZ8MtGy41lG99uit7UUaBRsL5gaLPv5sZCuUJR4b0tzlsObMVsFWzt3WazrWrblyJe0fViy+KK4k8l3JLr31l9V/ndzPaE7b2l9qX7d+B2CHfc3em681iZYlle2dCu4F2t5czyovK3u1fsvlZhW3FgD2mPZI+0MqiyvUqvakfVp+qk6oEaj5rmvep7t+2d2sfb17/fbX/TAY0DxQc+HhQcvH/I91BrrUFtxWHc4azDz+ui6rq/Z39ff0TtSPGRz0eFR6XHwo911TvU1zeoN5Q2wo2SxrHjccdv/eD1Q3sTq+lQM6O5+AQ4ITnx4sf4H++eDDzZeYp9qukn/Z/2ttBailqh1tzWibakNml7THvf6YDTnR3OHS0/m/989Iz2mZqzymdLz5HOFZybOZ93fvJCxoXxi4kXhzpXdD66tOTSna6wrt7LgZevXvG5cqnbvfv8VZerZ645XTt9nX297Yb9jdYeu56WX+x+aem172296XCz/ZbjrY6+BX3n+l37L972un3ljv+dGwOLBvruLr57/17cPel93v3RB6kPXj/Mejj9aP1j7OOiJwpPKp6qP6391fjXZqm99Oyg12DPs4hnj4a4Qy//lfmvT8MFz6nPK0a0RupHrUfPjPmM3Xqx9MXwy4yX0+OFvyn+tveV0auffnf7vWdiycTwa9HrmT9K3qi+OfrW9m3nZOjk03dp76anit6rvj/2gf2h+2P0x5Hp7E/4T5WfjT93fAn88ngmbWbm3/eE8/ul8iYiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD00lEQVRIDdVUX2hTZxQ/Sc29N7G1bdKKjda2SKRNa0mZQ18qooXS4SwWN0TFPbiHMZQN9jK2PW6DPQ3ZHhwIgr4ogjZatQXng30XdIWqUVttMU2bJjc3/+7NTZP9zm1yk7tWEMSHHfjd737fOef3ne9853y2YrFIH0rsH4qYef+/5BvelhYbBDpGDcB2DJ7zJeVLWOE5C8Y1YltvHbycLiaTfvz51+HGhqZBUZR6BcHRmcvpTzRNfRyXoxO//PRDEDYqkAdPAaNF1pCXiKWh4eH2g4OHznX5fAPbvC3kcTeQp7GBluMyLcdkmn8TpulQ6N7fE2Pf3A0GZ8Cq/XcDS1rKxCe+ON23t39fcHeg19PRtp3iiRSFo3F6/jpMG10S1Tqd9FFgF7kb6wdEQXgAv4E7o6NPMVo2MMmh4Hw6nE6nu2/3ngsf9wU8gtNF/zzjoCoiKylizEeWcJJ66tvV40kqyu8gPwarOGh0nMC4g+pS5H/n6a+/Pb7Tt6MzreUpsrRM+Xz+rWC9hivt9vv3n/3u+5PsD3CQhpiRY8b/tZ7mpiNFWw2lM5lVC3xjy1G6dOE8TU89pq6eXjr15Vfk9jQZel3XSRBEcjc3H8XCFYAvWGNldeRM7hJEya/BgZ3KuAzi2FKEOjo6jPHiX3+aOrZJZrLkEMRO+G8EzIDNHyxyPYuowk2FQpEKBS7lVUkpMnm9XpIkiTRNo8jiIsgr+tUU22phLQDMY0g1OefKrqrZpKqqdTU1pg11dfeQIseJ10RRJL+/24i8xEErKyvYVE1jzk5mzqvTwjdcSMTkF+l02nLsTw6P0NbWNoOEx09HPrfo2V6JJ7isjI7FaEh15KzQZl+GJrds9QY2OCqqlFqkoeERqnW5KIWLXliMko4qKksiIdOL0NP7mOcA5jGkwrD6XmRuj14Ltu3wHUHut9XV1RlGeeR35tV8ycU6KIpCM89Dj8ZuXL0FDafG3LU6LbyYQl0vjo/d+G0hvJCMxWJGhBzlemB9ZCGSHB+7fg6+S+wP6IAh5ttS6lC+bTewfXNLS2Do8GdnWtvae1xod4cgkN1uRxUVSM/lKJPN0tyr2anxm9f/iITnH8JnDogDZoea5FgkbMAnkQDeoAVo7T8wONTu29m/qb6hVXAIrpyeyygJeW429Gxy8v7EHdgw6RuAiS1vi4UcyuoNOOHchs0Ab1ZuEE4f5zYGcCqigAJYiDGnNeTGYuU957eCSblBRIBPxu82tzfnlzfJAu/2nsPQkNIdcENwRTmAcoNwP3C58cXxKfgRNF5B/Ftk3cgtFu8x+Rc1XeEgwmSoOwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-down-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAa5JREFUeNrcUstqwlAQneTG2DyaaCKUrmxtRDdC6T/5JX6BK7eu3Ll36Qf4C0LWIlQkouZlz4RckRZai6t24HCTO3NmzswdhYh6juN4qqqmQKJpWgzwmQKZECLHfY44yrJMTdNUABpQ0fjydDopjMtvRp7nirTyX2UgiUBotSDDBJw5oEpwEHMAkon5jquCrOm6fq+VlwLSsk/Egsx+PlkFV2S5gG5Z1mNBtm1bj6KIykpMOJWKimplOyxXS5KkijmYwEvhaLfbAX50OHXOKk8OlDgej3dxHBtIYtVqtR5oKjf+0Gq13hqNhgNntNvtlFK+QFXur1ImrBqG4fi+34M6F36SAyNUtpvN5mu9Xg9Xq9X7druNWS23YZpmxXVdH0N6RkJupeCcydLQ/xOCnzgA1ejylCRpKt1gf5T8ZWB4U8KkeSnOQ2JgiD+Tu90u9ft9frrz3eFwoMFgQHjC72Uvl0sKw5C3jjqdDgVBQIvFgtbr9XU9TyaTQrbnebTf72k6nV4/sM1mQ6PRiLDPNBwOC9lXDUzabDYj7DHN5/PfPxVPeDwe/8cNu4n8IcAA4WwjSMEpNj8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-down-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcZJREFUeNrcUr1qwlAUPkluYjQlUIsVO0iHBMG1L1A6lK7t5tZnEB/CydXF1QdwanHq4EvoUHATHQQxNTZ//c5tIkKhtTi1Bz7uveee7/x89ypE1LBt21FV1QfehBAewKsPvGuaFsAfIY6iKBJhGBqACeQFO5MkURnYKtmeEcexqigKA8dEwVkDBJIYgC3JMAOXIaBl4CCQ4pTIiQk+HRVzIJrAhUidObQWIEgHBAeBFDGZ73nlLrgiyBZwAveVJJumafm+n6SVeD4mJWli8TlZwu3mgyCw4TuDHreSXKlU7qbT6TMuOYggkpp2kEuTKVwV5wJwahhGg0eTZARfVqvV+8Vi8bRer7l1HsMHMeTiqQ4G4s7R5QP2ZS6SCUYILpdKpUfLsl5Wq9XrZrPx+HVYMF3XC6jmgnyDyjyD5OzImSHzNQKvOQit0v7K2DeVjrA/Sv4iGIvjeZ5UNBOJARF/JtfrdWo2m/z2Ox9+H7VaLZrNZt+3PR6PaTKZkOu6VKvVyHEcGo1GNJ/PD5u51+vJVovFohyh3+8fLthyuaROp0Pb7Zba7Tbhtx0mWGaDwYDwXWk4HP7+qbjtbrf7H3/YUeQPAQYATq8uCgYHvXQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-down-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc1JREFUeNrcUrtOAkEUvbs7LI9dlleUxAYLCDRU/gCxMLbaGRsbvoQvoKKloqOWcj+AX8AQSgIJISDLPj133SVGE8VQ6SQnM3PnnnvPnBmJiB4Mw6jKsmwBr0KILcCzBdiKojiIe8gjz/OE67oqkALSgoNBEMgMLKV4zfB9X5YkiYFtIGGvAAJFVOQaIRlDxaELKDE4CSQ/InJhQiyBjkmQU6qqXogomIQ0B0kJQHASSB6T+ZxnVsEdQdYAXdO0q5Cs67q22WyCqBPfj0lBVFi83yxguWnHcQz4UAJuQjm1Wu0WGx2HOqpmo1nnRCAL5Pb7fcG27SKKnOXz+UfQlLAzXL1sNpt3s9nseblcsnS+hgUVLjePfFAzmcx5Lpe7R6wMRRQbRuhcrlQqT4VCwZzP5y/r9XrLr8OGgZQBqQaTrpnECJvSp4H7t5Db4gTIp49zTIqHTCeMP0r+YhjelOA0/4qDSQyY+DO50WhQu93mpzvELMuiTqdDeMLvZU8mE5pOp/zrqF6vU7VapfF4TIvF4rg7DwaDUHaxWKTdbkfD4fB4w1arFfV6PcJ/pm63G8o+yrB4jEYjKpVKZJrm75+KHe73+//xh51EfhNgACA6JNNWltjcAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAYAAAAlH6X5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC9JREFUeNpiYGBg4GD09/f/z/T+/XsGpn///kGJv3//IrPQuAh1YOLXr18MAAEGAHdlKH321oJgAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-knob-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARFJREFUeNqEkj1ug0AQhfcvFhC0yLJA2FKKKAUlHUVKUDq3LtK78BmS2r0Ln8c+gC+RLj0U/C+ZsUDCgOORnnal/fTm7c7SpmkIpZQMirbiINbuiSDjwkMeBMHKtu1vzvkazJZXh4Ezgk9RFG00TTsURbEAEWSG8BUMw3ALbseyLElVVbfZWhhp4fu+5zjOJU1TTSk1yid6F5qZprlDEF2nSvSzQpcPBLuM/8LQ+nWY8x7MAVR1XT+EsZo8z39g9e7BrF3x6irLsjO+ArpPqXs67GBKKd9c1z0xxuQj5yKO498kSb667Nilr5uhgAzQHAazNgxjjx3wqPsOo3GDnkFS1/UXy7I+hRDv+JFAzp8AAwCqDI1JAuEnqwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-knob-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASVJREFUeNqMkT9KxUAQxmdf1iAWqQU7+1whBC8QSO0BLCwFL+AJvIGNlQQClhIs7HMDyxiIGpH8N9n4zXP3WbxncOCD2Z3ffju7I4hon35jhiZIcR6GIa8piqJ1UQRBMG/IeX6ZpinKsuwqTdM3Poi6iuP4B/Y8bwMLIci2bVbetu15kiT32P7SN9FKKUVGcCVAVNf1oWVZd77vn4LZY24LNhqGgbquIynlteu6x+AsvnjFbrukDxw4jnOm3YVkp7+CD8D9BKnNS8kuS4FHH5m+/wOTfuByGxx93z+bfNGZXQE/6qnOi86ofWCaN2YwO2GMnaWqqrpomuaVf2IL1hA7vmOKl0VRPGC7hsZ1G/yXGsyhbBzHp7Isb9Frju1PqDM9fwswACNF1jCNRpSTAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAYAAAAlH6X5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNo8i7kRACAMw4xD2twxCPvvRghPKHChkwoDQKeZNd5NiognBlX15fy2Epv3AUZESZDuXtPqEWAAAbEUmbnlEr0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-horizontal-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAYAAAAlH6X5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAENJREFUeNoUy8ENwCAMQ1HLIYJThuhW3X+GFlAaqdiHr3cxANwtIi6eLZrZqzx09yktaUufUjwPsKpMaczMLo1fgAEADawUxddyoEQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-left-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbhJREFUeNq0VFtqwlAQnTw0UbCISj+kO9D+dAVxCxZxEYJr6BIEt+EyXINfrS2p0HylKiHmdb09ExILJWkF7cAhgZmcc+fMnShEdE//GLplWY/XIDoej+Fms3l1HMdVVVUoinJk6EhcTC6E8Far1XMURb6maTGIBWtCSJ4lgA+pWq2WpeV6vc7JQ5DGAJOmxL8K4GTk+z71ej2ybbuwBvmP3W53YHIgAnmS2wNIlQWKwMSVSoUmkwlNp1Mqq3Nd95NJ2Ro+PT91Xf9GUQdsyWAwoNFoRN1u90RWFPv9nm1JGCBMsnf2P+1AZxt+BhMPh0PqdDrUaDSYhIrqssNE6JQJBQMdiFyAh1xo0WKxoPl8TtvtNh0uCkstQl7jQTPYdyaGyAkqn6wIy+WSxuMxzWYz8jyPyurq9boppVQgwKB0sJlIalO/33/665o2m820m6IIw/Ady/UCm3zDMA54RpiFyAXO2gPclNIcCO9M03QwihgdxdkWy3RBpCSt3W5b/HIBFAjcBEHgJklyugmZbaS1Wq1LBZjHqNVqt7x36CRAB7mOcpV/URYmBv6AObzFcWyjG+5I/RJgAC85tuyF4bVKAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-left-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcdJREFUeNq0lLtOAlEQhucsC1TEcGvgDWgIlc8Ale0GGl6A14DnwNYHUAtiYWJntNdY0GziskT2fvcf3Ni4J5K4nuTPwGH45razgog0+scjhsNhVgYoy7LDbrfb7Pf7V0VRQiFEBMVqmqZ/hoOhb7fb6yRJdpVKxQU4xHWMQMlJAeI4JlVVpXxd128ANwC3AHWhCPcJF6ZwAJkY7DgODQYDqY/neY+QCajFASCHg3AlSMqRVhCGITWbTVosFjQajWg+nxf62bb9BqDHwBzsw8ZoUwKlhQH4bjKZ0HQ6pV6v951t0fF9/wPAAPKRsZ9/jvMgqYre/fjTbDYjTdOo0+lQo9Ggw+FARX75fOxqtRrxk8NCBWz5ewKlhTNYr9e0Wq3INE2q1WoER+kMAKzzMLlwbgtnjjtWxFI4syJtNhsaj8e0XC7JsiyS+SH7M+yAwjt1XCy0hbMHnIMlot/v/7porVbrWI2kRQ+u694i0Hu9XjdhHcwi4CpO3gPDMKS/AXIO2BOqcSCP+89V5NstythkBXO6CILgEo92lH0dni1XEYlut5uV9F77QLuuYJ/RJhtw3o1QtNvtrMy3J7K/g7kH/IXn8CnAADDPYRM6gNQFAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-left-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc5JREFUeNq0VM1KAmEUvTOOvyCpuHLtTvdt9Q1CcBH4BoLP0Dv4CG19gGoRLYRcRStXZSAuhKZJzSbnv3MmMYiZCrILh0/n3jn33nPnfoqIHMs/mtJoNIJ9EPm+v5rNZpfz+fxeVVVbURQHcDU4/kzued58PB6f2bb9lEgkTBDbeOwikferBHhRUqlUbPGTyeQcMTrIX0BqAg7zAsG3CVCZmKYptVpNptNpZAz8N8vl0iD5NsGG0gAe4KtMEAUSJ5NJ6Xa70uv1JC7OMIwHkL5RGlbPU9O0T0R1QEmazaa0222pVCo7sihbrVZLEFusHISb7W/qzy58jTJ8NRK3Wi0pl8uSz+dJIlFx22LW6NThl0OgA5787wHREg0GA+n3+7JYLMLhIjBWIvjTHCaHTd1ZOZIQDqHFVTYcDmU0Gkmn0wm7iYvL5XIH6/Va5U6Fi8XBonqQh0NW6vX6j4tWKBTCbqLMsqxrLNcFZHpMp9MGzlfMwmIXv94DfCmxPhAeZjKZW8ziFV2+UX9WTl8QBMo+NlktFotHuq6fIokTfBhna4VzKJVKJ3ggfwEsn81m6zh1JHlGB7u7TqlWq8E+b0/IdOU4ztB13TveR+8CDAA4ZHMC9dTxrwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-right-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcRJREFUeNq0VEtuwkAM9WQCoQRICK3aErWLSCBRpScox2CPOAg7rsAxWHMVVgguwEd0gYDM9DlNFhVJP4JasjyTxO95nj0RRPRK/2hmrVbztNYGu1LKbDabtu/7bSFE6RoEwnXdNwALrJlEYl2AWWEYvhiGcXMpgSyXy48AilCxwl7zwyiKCGTvlUrlHpGyfL/fk5SS8t6nLqvV6h2DwzWI4ggTu91OQz4yTbOWldhqtWixWMQkyMkncBynwcBwzeCpdNwTRIVTPGQlDodD6nQ6NJvNaL1eE/LjxDOCer3ucQUMnhIkTZeHw8HwPM/PIhgMBhQEAXW7XSoWizSfz1NpvzgUMCP1aUYCrhLJ1Ol0ijgpy3AyYgk59nq9uCfT6fR8TKEhg4lERwGiuOHcCEwT77PHD9/jPS2XSxqNRvEJMu8B65+MqE5kYv15bAUmzMo7wXa7pfF4TJPJ5PuLxkDphoETl+y2bd/mnaDf79Nms/n5JqNCvsECehtYy+PxWEA0Mb4u+vOUR7BarX73q0iBEXldgFuQrQSCdh74n/5FXDGAUgILujcgTQiJSjxmFxNw9dxky7IcVP2M6oN0hq9hHwIMAA2mcW+/QfMYAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-right-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAc1JREFUeNq0VE1rwkAQnc0mJrFqFKEIllJKWwqV1J5KobdevXirP8WfIP4Pj+q/8SDVYy+iVgTTxCR9o/Fk0g+0A481cee9eTO7EUTUoH8MNZfLXYVhqAJaEAR6oVA4LRaLNSFE/hgC0jTNR6w+CBnBarVyF4vFG4Qv8d6EMB0CmU6nHxRF8UDusRAQwgkB74Zh2EmJrusS8n4WyGazdyBfswMk8BrwH3ASwp3Au7O4RNu2aTweb0Q4EgUsy7phYmDTIuxlKNFcPLi4j0tstVpUqVRoMBjQbDZLFFIRDtoh8SDZxXZPmELCp+M4H9yuuCiVSlQul6larVK/36dut0vYv3+KEC5IFECNyGXUsjXC830/ViCTyRAOwmZtNBq0XC6p1+vtC0gpecAKwOQCQvzsb5SkFEkOsIc0TaPRaETNZpOGw2H8PeDeR70LeAZiqyR4DnBnJTmYz+fUbrep0+l8f9G4mF1RIObh8jxSDMRtkoN6vU7T6fTnm4wKVZ4B+s2/dc/z0lhN2L+Amackgclk8rtPBYg1EGpYDeAEyKH6PNpTSyL/07cIFZsgSoHYBLKo+lrX9VcW4XN8sAC3hdsEnIP8GXg5RuW7+BJgAINQm2YEYuEWAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-right-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAYAAAD+pA/bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdlJREFUeNq0VLFOwlAUve1rqW1py0AMAWOMsUZi0DgZEzdXRgad+BI2foHPYCT8CosEJgcSoLAgpa3nFlikFQ34kpvb19d3zr3nvFeJiN7oH4di2/ZVFEUKQg3DUCsWi6elUqkqSVLuGARC1/VH5ACAHOF8Pl+ORqP3fD5/ifc6iOmQEIZhPMiy7APcZyJEFAQBL35ks9m7tI2LxYKEEPsJLMu6BfiKOwAR55AX0EkE+SRFUc6SNrquS4PBICbBnnQCx3GuGRgRS4QOOGT2BdlHF/dJGxuNBpXLZer1ejSZTAj7Y82/f4cClQXMFZgI7mL9TZTBhs/ZbOYVCoVE8/g9DgNVKhXqdDrU7XbJ9/3dU4SxBIGMUDbgYiPZCsNnP5IGOiNIGOdarRZ7wiQ7BNCQDZYRDC6BiOcBT1RV5XkiAeuOdRoOh9RsNqnf7yffA9Z+o13IHkhrJol9wAlz0jrwPI9arRa12+2fLxoXsy0KwGwu+5HhME3zJq2Der1O0+l0/01GhQp7AL35WYNRBrKO43sBf57SCMbj8e9+FQBWAaginyBMhA3ZciCopoH/6V+EinUAZQCsIyzo7kKaV0iU43N8MAHLwlnTtHNU/YzqX7aX5BjjS4ABAEDnkWqhfTpFAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-up-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZJJREFUeNrUlMtrwkAQxiePxiZ48FHTggUvvaZ49uTRiwgW8Spe/XuVHgslB0tTQoIk5rX9JiSQqqXYXuzCZJbZ+e1OJt9GIiJrOBw+ZVlGh5am6Rd/aDL9YVwgLISgIAh+B0uSRJPJhJIkOQ/m7o7HY5pOp9Tr9c6DW60WzWYz6na7tFqtvj39CI7jmBaLBXU6nXwTy7JoNBrl3/VHuN/v02AwoHq9TpqmUaPRoOVySaZpHsHqYWC9XtN8Pj+psH8gksuGj7odRdG767pvvu8H0PcVh3Rdv4bdybJ8cxJGYrLdbl9s23ag6xiJKcIZ5iIMQ99xnI9ms2kahvFQcmoBBpvN5hlJoaIoe4AMJwBzuMhRPM+zd7ud2263HxEyFDxu+QQshAD2gCNVVSP4BD5m4zlXgo1SHhCMC/Xd5zCEr2Mx4hPLZPgUvmoZ1llmAvqPa7WaphZ3l0tMi93zJJ6XUFk6r/FPgu86+NcSLptTNVFswiYqjeXcGNV7JSzKBJ5XQFEYlysBzLgaeAmvGn4KMABFtPy+67Pl0wAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-up-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZRJREFUeNrslL9OwlAUxs9tSzHKAARSEnbioHQicWF2ZGpA4gN0553cfQM34+ykMTFG4mgbobS0va3fKcU/SKJoYhwk+fgup+d3enpuL4KIjkzTPEmShFYlpXznq1LoB58/CKdpSmEYfg8uFAo0GAyyYW0E8yQty6J+v0+tVmsz2DAMGg6H1Gw2aTQafR2O45hs26Z6vU7VapXa7Tb1er1sBp/CnU6Hut0ulUol0nWdyuVyVqzRaHyAxf8b9ouwtmafrzzPuwyCwMHebiM00TStAplY766FkRi4rnvmOM61EMJXFGWOsMQ6wVY9+L5/UywW91DkEPGtFxjg43g8Po2iyFFVdQJwBgUAY4hPhkCOjq4uoFscmmPEaiq+9jkJlR0AT4CnqD6Fz+AsH2vuJEReiCKsO6wPMhg/KrjosZDsITmAz+GsMFeE63Jx6BIPvpO1jSpzVl49hnNixACLn3uRJiQfEHiK9s+XMP9lZM/3VigQ50pe55ryIBXc/X4Jyzwh5buwuEWO5VoOTXIncBVynwUYAA6xEqaxcbksAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-up-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAYAAAAlBadpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaZJREFUeNrslD1PwnAQxq8vKVIZKAgLA6uDjYyGiU0WQkLCYOJAWPle7n4DN+NsQqIxMcZgwoA0lNLy75vPYfEFNAZNjIMkD9fc/37X6/EUiYiOarXaSRRFtKowDN/FVcn0g88fhOM4Jtd1vwdLkkTNZpOCINgM5u02Gg1qtVpULpc3g3O5HLXbbSqVStTr9T69+xrs+z51Oh0qFAqLJqZpUr1eX/yuX8KVSoWq1SplMhnSNI2y2Sx1u10qFovre/l32C/C6mpCCHFlWdalbdtj+FtHyk6n0wa0L8vy7ocwCr3hcHg2GAyu4WsXhXN2Kq4jz/MeRqPRjWEYe7quHyK/9QIDfOz3+6coGiuKYgOcQR7AAArZD6jRJpPJheM4t/l8/hi5HQVfJhTgYAxgAniqquoUcYbIcnHNkwg0EjCMgEHu4L6DBQzjGzh0WCh2UOwhzhFZIpGPc54igv+dVCq1rSbv7pyVdA8QudBngMXP/VwmhfwngRijwfkSFjw6H74VGgSJote9xrxIGePfL+EwKYj5LiwekXOJlksLeRJEBY9qPQkwAH6xFG4uskBeAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-knob-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP9JREFUeNqUUL1qwzAQ1vkfAu7YxU/Sx/BrZOnWtc+QN8iSsdCxe/HYLoVMBmGoQwZjE2PLxJbVO2GBKIU6go87Sd93d98BYyxK0/Rc13UspWTzPGuYnKKdm/9xHIWDYsznwnEoXX9Q863FWPHN9/3VQqUUm6bpXYurqtqFYdh5nrdWLJqm2ZNYZVl2EkJsgyBg/xWgrn3fP3ddx13zmOf5MUmSzyiKHpBwZxZDZMtn2bbtU1mWr3i9GDExFOc8R8IhjmPABW5c170HABJ9DcPwUhTFI1r8QG6LEPBrKrJBBWl7wRJNA4kYEdclSvjDFixwLOipLehJwfZ06/kRYABTY58KWRsFmgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAYAAAAB3PQ6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUeNpiZGBg4AgKCvr+7t07hn///sHx379/4TQyGyb/+/dvBoAAAwB0aihkcGml8AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-knob-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARBJREFUeNqUkbtKxEAUhudkZieERSQIQSFWKSwt04gpxFha+QA+gtY+h4XPYGdlY+Mr2FsETGERMOR+Gf8ZRllWi90fPphJznfOZELsb8jiWMg+V2C26LWiNVEXcyCAtDj2nZZ6ywgmWhNFFEV7YRjeKqXO5nk+HseRdV331jTNa5ZlD1VVfaKuAi2tiIskSc49z7tv2/YQAtPiNE0MTQzYfxRFcZfn+Qvqv7j9JpGm6ZXruo8Qd/u+N8WYblhZ70gpL1GXlWX5rmUnjuN93/ef67qWwzD8Sv+hwzk/xZAnc6NBENzgmEt9zE1CRB6GXRsZnS70xE0DmQkhToyMHOmL2SZocPDzDxdsy0BefgswANTzkXd08tnFAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAYAAAAB3PQ6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADlJREFUeNosyrsNACAMQ8F820gMwv67kQQwEsXpuTAT0YyIISKlqgnL3d+u3w0HP+puBslMQ+0KMACg5xR+0/xvkgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/scroller-vertical-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAYAAAAB3PQ6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNoMyrENACAIBVEEiVYM4VbuP4OKQRJ/cXnNFSKaZjaY2UVko6WqBzq88KHER5kpqEZEg/0LMACqFRSole+PrAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNpiMDMz+8/069cvBiYGIGD6//8/MoFNDL8SvKYwf/jwgZERyJICCDAAxTs3eXOW1tsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNpiMjMz28/069cvBiYGIGD6//8/MoFNDL8SvKYwf/jwgZEByBIGCDAAqR83M1ta/ucAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYGBg2M8EJBjoQTADMSPz////HwMEGABruwTRxWVztwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIZJREFUeNpiZGBgkFZRUckTEBDQYWJi4mIBEmZ8fHz6f//+Zf/z5w8D079///j////PDsQMIMACIoCCDDAAFoDJYhVgYkADhLVQQ4AMa6nhUiYWFpafQIGfMAFmJSUlrs+fPwsBJYQYGRlZGS5dusSuqqpqBxSIACpIYITqZwNiLpAOgAADABBQSostyhMHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiNDMz2//v379vHz58uHLnzp1JLL9+/WJgZGTk4uPj02diYjJjYQCC////gyh2oEp+FigHJsgAF4ABDAEmBjRAWAs1BMiwlhouhZsBlPjJwsLyE6wCGHTfv337dllBQeEuSDIBKBOhqqpqd+nSJXZGoAphoOBfIP4GxL8AAgwAD0RdoB6ph54AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYmBg+M8EJBjoQTADMSPD////pQACDACI0wRH0uIsCAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpiiItP+M/069cvBqZ///8zMP0HE//+Qbn/QKz//0Hcf5gSCAJDx39kif8MDBAu85PHjxkZgLJSAAEGAGF5RJzjY1IbAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpijotP2M/069cvBqZ///8zMP0HE//+Qbn/QKz//0Hcf5gSCAJDx39kif8MDBAu85PHjxmZgbKPAQIMAEa5RStdv6aRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYmBg2M8EJBjoQTADMSPz////HwMEGABsqwTTd4K/0AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJNJREFUeNqkTrEKAjEMTWpKqyCKq+dBh26Cg+vpZ4ij39yPObhiE1MQhzqIGngheXkvCQLAcRhOl13f7621CzLGxG3XHXTgcs5AzOwB0RVmqEE18bN5EdISLNIQbxZpLSx/L/1M/PSpfLHUENF0L2WqpopZCGE9juPKOb9BRAsppWWM8azKqwpuqBdQi7nCK/AhwACtz1AKJyXHLwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAJVJREFUeNqcjjEKwkAURF/WDxHBExjYamtv4DmsTO5qThA9QdKJWirJsv9bSEDTiJlmYJg3zAKogADkwEUOZVXGGB9d257r+ujcMAwAq01RbJ1zQdQMzMiyLFfVpZgZAKOLqfKpN/IVTBtmU0QnyIzR38Gsp/bv6AiklHoR6UVVSSk977fryXvfAVQisg8h7JqmWb8GAJDqY/rl9HS9AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUeNpijItP2P/79+9vjx89unLkyOFVTL9+/WIAAi5pGRl9JiYmVZZ///8zMAAxIyMj+79//zhY/oMEGEBiEJrl/79/DMgAogVFAF3F///oWv6haSHDUMICZLn0P6mGwjT8/fv3JwsLy0+wFiDn+7u3by7Ly8s/BkkmAGUiVFVV7S5dusTLCLRFGBSkQPwDiL8DBBgApSFphTgm62sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUeNpiYmBg+M8EJBjoQTADMSPD////pQACDACI0wRH0uIsCAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJZJREFUeNpiZGBgcLGxsS2WlZOzZmVl5WVhYmIykpaRsQNKcP369YuB5d+/f1wMjIxcf//9YwABFhDxD8qBC/xHF/j3/z+aAIaW/+ha/v2n2FDCAmS59D8JhjKxsLB8//P37zeQJhBmVlRUFP327ZsoOzuHBCMjIxvDpUuXBFVVVYOBKsuAChoYgTYwAhm8oFAHGQEQYABQ6FDZFd6uyQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNpijotP+K+lrV0swC9g9+jRo5dMv379YgACXmkZGTsmJiYjln///zMwADEjIyPXv3//uFj+gwQYQGIQmuX/v38MyACiBUUAXcX//+ha/qFpIcNQwgJkufQ/iYYygTSA8J+/f7+xsLB8ZwJp+f3795c3r18dkpeXv8kIlGwAynxTVFS8u3bt2n2MQFukgIIgg74B8WeAAAMAKAhm4pQzrFgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRJREFUeNpiZGBgUAGCyQICAtZMTEy8LEDCg4+Pz+7v379cf/78YWD69++fyP///7mAmAEEWEAEUJABBsACMFmsAkwMaICwFmoIkGEtNVzKxMLC8h0o8A0mwKykpMT7+fNnSaCEBCMjIxvDpUuXOFVVVYOBAmVABQ2MUP0cQMwHMhMgwAC+qEtf0TB9pwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiUlNT+8/0+/dvBiZGRkYGJgYggLAQBJoYNiX4dcDFmF+8eMHI/P///1sAAQYAKxcLUpcjeNUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNJREFUeNpiUFNT+8+gqKj4n4mRkZGBiQEIICwEgSaGTQl+HXAx5hcvXjAy/v//XwogwAB2Swj9RrJOegAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRJREFUeNpiZGBgcJGWli7m5ua2BrJ5WZiYmIw4ODjs/vz5w/X//38Gpn///nEBZUCYgZGRkYEJxADJwAALTIZ4ASYGNEATLdQQIMelLCws34EB9A0kCMLMioqKot++fRNlZ2eXAAqwMVy6dElQVVU1GKiyDKijgRGoHGQALzSgmQACDABfaR58r+agPwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIRJREFUeNpiVFNT+8/AwPD569evR58+fdrL9Pv3b4Y/f/7wcnBw2DExMRkxMTIyMkAB179//7iYYLz///+DaRYkFUQKMDGgAZpooYYAOS4FCYAwMIC+sbCwfAebAQy6Lx8+fDgkLy9/E8RvAMqUqaqqBl+6dEmQEahUCqQIiL+BogMgwAAPLi475A3jcQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiZGBgUJGWlp7Mzc1tDWTzsjAxMXlwcHDY/fnzh+v///8MTP/+/RMBynABMQMjIyMDE4gBkoEBFpgM8QJMDGiAJlqoIUCOS1lYWL4DA+gbSBCEmZWUlHi/fv0qyc7OLgEUYGO4dOkSp6qqajBQZRlQRwMjNDw5gJgPZCZAgAEAjMsekNnyoBIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-pushed-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiVFNT+8/AwPD569evR58+fZrL8vv3bwZGRkZeDg4OOyYmJg8mIIcBCrj+/fsnwgTj/f//H0yzIKkgUoCJAQ3QRAs1BMhxKUgAhIEB9I2FheU72Axg0H358OHDIQUFhYsg9Q1AmW+Kiop3165du40RqFQKKPgHiD8B8Q+AAAMAvLgsezVKBIMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/segmented-control-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiMTMz+//v37/PHz58OHrnzp1cll+/fjEwMjLy8vHx2TExMXmwMADB////QRQXUKUIC5QDE2SAC8AAhgATAxogrIUaAmRYSw2Xws0ASnxjYWH5DlYBDLov3759O6KgoHARJNkAlClTVVUNvnTpEicjUIUUUPAPEH8C4h8AAQYAaEheCvo+JpcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFiklEQVRYCc1XbUxbZRQ+pS1toYUKjPFZBQaDZAiMkC1blG1ZnCZiZsyS7YfGHy5GEx0xfmXRHyZmMWp0OmNi9Jf+cEaNZGPOIm5jGWS4sYEY+RCGq3x25avf7e2H53l3by0DBzKa7CRP7nvf3nuep+c957zvVUWjUbobLOluEAENmpUKUbHxswDE4z21DOXPRPg+LCPEV9xzwFcWctVyz8kCQKZl6J5/6dXNFktRg9FofDCqIkOyVlvO8xSUpH5VlHxut/u8zTZy8tMP3r3C0wGGxIgsJ+i2QliEIsDwxltH9uUWWg5nZ2XeZynIp7ycbFKr1ZRhTmceopm5eQqHwzQ+aSfb6BjZHdN/TYyNvvP2m69/wz/7GBKLQZSWtCWFxEVB/8T+Jyvqd+76orS0pKp8QwmZzWk0O++ieZeXIpEIef3400Qpeh0lJSVRuimF7kk30Tw/MzA0TAODQz1tZ8888/3xr/r4MT9jyegsEiKLwPobXnz58CNlFRWfb6mtTivIzyPb+BT5AkH+aXkz6JKpMDebxsYnqLOr2znY13fw4/ePnOY3EZ3wrUu1lBCISHm28ZVHKyurv6zfVqfxh6Lk8niXZ1/iCVNqCuk1KmrruBTq7e1+6rOj7zXzY14WgsSO2QIhck4YHt93oGbHQ3tObt9SZ3b7JQqFFrwTe3mlA41GTUa9lto7L82da7E2/PDt11f5XV98ziilR/KSoDLStj5Q/0nNpk3mWZePgkFJ5ALyYbWAD/iCT/gGB0Mrc/LwZk8QA3lseK7xtQMbyzZUSdwyUAWrJb/1PfiCT/gGB/MZ4vlFQ4uPRlFxUaNOb6CAXA2KyrW4BlgMfIOD/X3H8DO3qCJladAx9fufPrg7NyenMBSOUpiXIhGAb3CAC5wMcMdavCjXvPz8XUlqDUVYeSINHOBiDpSzhxFR9hohxJhqrOKuJCKRSCHgEFw38wTckiIEV12yXm9B20ZiJdLAAS5wMoQGRYjYU1SkSsHpBLmRSAMHuPiCdiHyNF6IWpQcR4MzOZE6cDYQbYFJsCwLhAhiKRT0SVLIhNAl0kRPYa54DiUiWIuw2+kZ8wf85Xo9qipxxhwELmZAMoo8iBcizc44BnxebzkfdhKngj0zB4GLh+LQBDKxPnzF0S5w/drQRQ/vsuEwN7MEwstCbCPDv4JT5o41NITId6blx46quq1TRpNxfaKWx+/3k8PhmPrFeuoCOBmiVyhLI4Tw5NwfPVeOZ2RkHkrWJvPt2pvL6SJwsOc5xiIhKG0c4+aszU3NxaXlDRqNpthkMvHU2pnL5aLJ8bERcLBXCAGn+LASOSIf25A4TsZU6+nmo/Ypu4dP5Gu28cEXfLacOvEhOGQuHKj/FcKTMJQRQuX4s//3yx1tPx+7YbeHWc0dn0ngA77gE77BIXPFWriSI+JLiDuqEpWJzvbzVq6cpO07dr+QkZlpMK5ymdy8HDPT0772c63HLl+8YGUBEwxEPhYNHtOCM6uYUKnQVrEPrGNYCu8t3rznsb2HsnPyLKkpqZSswz61vAUDAfJ4PWSfHLdZTzR99Pf1a/jgsjFuMG5/eIZ7+bQGMTjKZTDyGAXbdu5++P7q2r1paeYMvUEvBGFP0srNT5IksYdAgN/nJ6dzbua37q6mjrOtP/H7o4xxxgxDVIqSG3wvbFFEMCuLQSKj1+Ogm8VYz1hXUVlTVVJWXpuVnbOR9yQtL1kOzxMvwSTvIZLDPjkwPNjf1dd7tYen8e+RmMgJLAeqZGUfWPxgzFgQxKDfIzqoZbMMiEtlQKiSZ+jOIMKJC6QoT8DFQBT+/ycnvxSzuOhAEBIEogCM0fVEC+ArKgCfgWjbIAYwvvOPcHYSM1kQDirIn3jEC0GHjgdSQfSJmKP/GPwDy9LPcQuXXBoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-disabled-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFRElEQVRYCc2X309bZRjH3x5O20MppQxcS4GhtCsQGKg4R5YtccFEoxmJJku48kajF+7CJUvmhVcmxpiY7GbeGP+AXalhUYcbYYm4sMFcNjdYurIJg/JjFEo5lEN7OPh8X87pWgu0uJ1kT/L0/HrP8/30eZ/3x7FsbGyw58GE5wECDGKhIBYyvS2O+ANwnBv3kVq4pjtPNWW8oJRb8rXTAQxx8aOTp6sCAX/QWeKsI12rVbJXkjBLKWvzxJSSV+TxcHgs9MO5b6fptmpA5QPaEUSHKKJg4udfft1cU1179IXKcve+mhrm8+5loiCwPW43PWZsIRZjqqaxyMwcm5icZI/nF2PT01MDX31x5g49BtD6TjBbgmRkQezq7q7sfOOtrsD+em9joJ653S4Wi8ksJieYRsIJRQEHc0gSEwjM7XRQGyeLU5t74TAL3X8w03elt6fn/HnKGAcCT0535YBkQFg/PXUm0NTc3HWwvc1e4/OxicgcU5JJLpzvR7LZ2D7fXjYZibChG7fWRu/e7fnu7Ddhei9FngOzFQiK0PrxyVPB1lfb3zt66KCgqBqTE4l82ls+dzocTBIF9se1Ie32Xzd++v7c2RA1TBEJijptWcNXz4Z4/MQJT/OB1ncPtbcJC9QFcVnm3YCu2K3jXcRALMREbFIXda1cEP0BCtN+5EjnOy+3tEgLcYUlqSt2K/7f9oiBWIiJ2NAgL8qEycwIhqj4yWenW4JBvxeVoGnqU0M8gVIZYiI2NKBFbsxBmxOaTgYou/9Ff4eNRkBSKawo6Z2CLakmGWJDg14aIVdJmxduZkbE7g8+rPdUectUGvWYE0xxig0NaBFIemY3TgBk9VbXviQIIu8SujbNoAEtEjCG87oBwuuj1OX00qzE68I0CgQmDa6VUScGCDIiSjapTKQxr9K8YaZBA1rQJOflYYAgI4LFIlg5AtWHmYbo0IImTqGVBcKHGrIhmAxC4aFFlgOCmyyZWkupqmrH4mWmAQJamRpGRrAaasvyyrKiKHaJxrqZRhoMWtAk5ytxFshidH4+kaittNmM2+bgJGgBhdZWICBT/wmHJv37GxqdTqc5BHpUgDx6ODYFTfJ0seAx0qNeuXzxUXQhSiv+5qbnyTqx+1V3u3cRGxp9vb9MQFPXTo8aUKF4lNGbw3fK3eUdNtrYmGHxeJxBA1rk0OQZySwG0Cm9v/aE/A1NDaIolrtcLrr17AwQszPTi9CgqACBJjc+TrH80RXI1shXLvVeGJyfe5yUaVPzrBY+xELMS7/9PAgNXUvTtTenV7oJ43VCx8T9kZHIQP/v1+lFLfEUuzOjThADsRATsaFBnq4POk/XCN/N0t5gne4hK8tDgwNhorUcPtb5+p7yCmvJ/+ymFeqOhcVo6mp/3/Xha3+GEVvXyPq82HbzTI0d5GXVdXVVbx9/v8Pj8ZUV00YYG5tCLEmT1iqNkNnZyNLFCz8OTo2P44NriRzZyNk8bwWCRQiORamYvJTcdfjYm4G21tcaS8tKi6ViiVltBEQVZhM3Rxd2X6iyVFJhyirNnEvLq7duD9+72n8ZWYiTIxOr5IV9TlBDWhn5dy5gMKqw0UV2SuBNB17x+ANBX4XHVyGKlqISp4vPfityXFbVjfXobCQ6Fg5FRv++OUvtUZRwZAFdzuvCKFC6TltORtJP6EQH4p+cdAkg9Asc58gYQI0VEqMOQvjHEMXwhBsAWTVB97NsRxC0zMgOBCEMBwQA4Xw/QUeMOhQ7HDCAggMQScDzbS0viPGmDoRLAEHcOGaCGPORceQEeCmf/Qt/gODdNKcAsQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-disabled-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpilJSU5GNjY/NmYWFR+fPnz51fv35tZeHl5fUXEhJS5uDgYPjx44f6+/fv2VmAArKioqIMrKysDL9//2ZgZGSUZQKqeAzUzsDMzMwAokF8JqCWTUBz7vz7948BRAP56wECDACARibFW62AbgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/slider-circular-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpilJSUlGZjY5vGwsLi8efPnx2/fv3KYuHl5Z0vJCTkysHBwfDjxw+/9+/f87MABSxFRUUZWFlZGX7//s3AyMhoyQRUcRyonYGZmZkBRIP4TEAtKUBzdvz7948BRAP5cQABBgC1gCaMj8SIGAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFpJREFUeNpiVlBQ+OXr6/vP399fC8h2//jx4wEmfn7+c9euXXP48uUL+9WrVx15eHjOM6WlpZX/+fOHa926dRNBdFZWVgnj////2RgYGOSBmA+IPwHxQ4AAAwBD7SPhd4irzgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpilpeX/x8cHPzD399fW0lJyeXdu3dHAAIMAExLCKH400byAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-disabled-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFpJREFUeNpiUVBQqLW1tT0IpL89fPiQ89ChQ05M/Pz8z69du6bw5csX5qtXryry8PA8Z0pLS9vz588f1nXr1nmC6KysrF2M////Z2ZgYBAAYnYg/gnEHwACDABY9SRUSyy5EAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpilJeXb3B2dt4jJyf3/dGjR5x79+51AQgwAEsRCN8VvtvtAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-disabled-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHVJREFUeNpilJeX52NgYPAGYhUgvgPEWxkVFBTigAx+Tk7OV9+/fxcDsr+wAAl5GRmZ84KCgt/fv3//5fHjx8ZM////Z5aSkvqioqLyRVpa+itQERMTkGDg4uL6w8PD8xdoxB8QHyzIBJRjZmb+zwRRwwAQYACJUxySG2T8dAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/HUD/vertical-track-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAG5JREFUeNpilJeXl2ZgYJgGxB5AvAOIs5gYGRkXALEmFxfXVhANxMuYgDL2MjIye1VUVG4A6T3///+3ZgISrFJSUi+Agi+kpaVfAhUxg1QyALX+5OHh+cnJyfkTxAcLMjEx/WdmZv4PokF8gAADANpxGPrplMnhAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/knob-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwxJREFUeNrUVUtrE1EUnlcmM0nTTJqEtiqhFMF2I4gIShduVGhdCKJ/oS5ciOC/UARBLUpFpRYKFbvRNpQKilsfUBdpG4htbEyTNPPIc5J5XO8ZJmFM0jZddOGBw+Tm3vvdc7/znXNJhBBxVEYRR2hHCs40fpAk2TpH2k47HMbAo+FwZHvTGlQz+9yI7uvr498urjwSfN4rHEOH3AzF1nSzrurGrlwsL9+YuHRHFMWqfYjZhgKntCQVgLlnM3OXV2MbSiqVQhgAlUolVK/XrS+M4X+Yh3Ww3klxE7MFnOrv7/fOLryfXNuIm9lsFqmqiqrVKqpUKqhcLltfGMP/MA/rnr6avTY4OOhpHNDAZFo4Zs5dGBs4PXLycTAgkB6Ph9A0bc+Eeb1ea9/5s2dmBEE4lU6nNWcOnGqhIpGI9/bde1MBX4/L7XYThmE0o+jkMM9xHBEWfL6HU9MvAoGAxw6yTYp0MBjsDfX2jLEsS5im2bXDASG/7+LQ0JDgFImTFhpfU+BcNE9RlLWpWwMZcyzNw348zHYEZxiGJwlkXesw4NYBiCBdLhdn10MbuFUwGuYRuITouzVYr+k6wjegnZw7wa3KK1VUtVarcZDQbg3rnyhV1RpOsuGsVmd4hq7r1d/pTAxr+VAJxfontrbTq1i2ql2t7eB4kbww9+aBKBcMXIldAReLRSK9K1bnXk/fh/17gufz+UIum02sfPr8UpRkBBv30znMS7KCotHok0KhsLW5uQngeifOzWQyWcaVtv3l4/K8LObL4+MTtwZCGgc6xkogGhKFqsXlT+zsSurS0uLUzx/forlcbluSpIqT89aE6plMRqJpen31+1fzV3w9fvX6zcnI8WMjPR6OZTC4jsFx0uvJ1J+1D+/mn8uyHMPAcfxVHC3YlqfdtBz9HKhiR0dHA+Fw+ITf749g/Q9g78WRszjyOk58AfuOoihJiDgWi0kgmkbbbWJ2AG/2c+gVw8PDfp7nA1BgdoFYqsImJRIJxabin35+EHjrS8R0eIn0g14i8r99/f8KMABYnUshETxaoQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/knob-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA1VJREFUSMe1lWtIVFEQx5fMB2WSRmQFIhQVGQjSm5JIJFRIyzQypOiDYBBZmq0PqKwwM0W38LX4WB9pobuWpi5ppZTiquuT1LW1NM0KMqIH2Zdp5jZXdu1eti99+DGcmTn/e87cc+YoqvrfK2RYhDggSxFXZCWyiq0r+x04T1JDTtSRBTwQb8QXCUAOsvVlvwfnOUp9ZKGwPeLCk7Yjocg5JB0pRMrZprM/lPM8eJ69nDgF3JBNSBByEalAhpA5BCyYYz/F45FAZCPvwn6h+GJkOeKFhCPZSB8JFXeMQ07LIGQ1dMPN2nbB0pj8/CEjkoEc5g+4iCUSxZcg65BDSA4yXWGchuymXihpHQT90BQYJj+DafaXYGlMfopTHua/RjJ5x1QiJ1Hcjk/AXuQKMlbWNQmp2ueg6zZD38ef8GL6BzyZ+A6N498ES2PyU5zyKnqmgHeqRHZwee0U/KfXI5FIfVX/DKTp2qG2xwxP33yFOtMXWShe3WmCjPousUT3uKyepEviy5BtSDIymd86DOpmI9SNzoJu+JNNKK+guQfy20ZI3MQ/2AdxJvEViD/XGm7gNks7xuD+4Id5Cp4Ngd/xaFjrvUuwNLaM3+00C/N49SpkP+mSuDsSglRSMLGkATSGSfxR7+bZFxENG/zDwSv4lGD3HI2yims6JyBJ0yiKV/BlcyfxNcgRpIaC5/O0UILilmwJioStJ+JhZ9QlwW4OiLCKF6N4bL5OFK/my7X6r5XH5msht20U1O3meQLPXhOEd0dfFeyBMylW8dzWEYgt0Emu3KrmyWV6SKszQE7r6Dw0Dkm6LQiTlYrTPKmaW56Wt1lNRogvegSqlpf/zIXCesjW90meFqtzXtk3AzG51ZBY/hgy9AM2UWqaIAEPgdw5F2+oL9/QV0VYx6hbGojDFaU1GGWhOOVpDBOyN1Syt5TihDj1AzitqoKE8mZI0XbA9YddgqUx+Sle+kdYtrfIdcUB2momdsGYvBo4maqGY5fvCJbG5OdS9Nrqigp+siz7uZJraFrQy0VMHFdyvmw/l3qJqHZh/PdVfH5r2KrYH8Z5Nl8iyzfUiXfhycfKDwnmmxfMYx+Ou3G+zTfUEjs+ps580dy5Vbjz2JnjdrKvPwD8N34D1L0Qnrdlo6IAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAs9JREFUSMdj+P//PwOtMMPQNxwLYARiJiBmBWIOIOYGYh4ozQEVZ4KqQwGEDIcZylM0aWlU/aJti1pW7rvQse7ILxAN4oPEoZbBLCHKcJBCDu+EHLX6xTt2Lj185f/hm0//X3/+8f/rr3/ANIgPEgfJg9RBfcJEyHCQAs7Q3GqLpuV7X++4cO//3fe//p998f3/wcff/m+//wVMg/ggcZA8SJ1HbKYOsgXYDAeFHZuAqIRE9YKtV3devP//6OMv/zff+ogTg+S3nr3zv3z2+j1AvcLQIGLEZjgzEPMlN04qWrj/wv+tt979X3/9LUEMUrdg//n/SY0T84H6eUGux2Y4GxCLF0xedmTpyTv/V11+CcezDlz57xyd+V9a3xJMg/jI8qvO3P0P0gfSDzIHm+GcQKxQPGPdh4WnHv1feu4ZHDtEZf5Xcw37r+2fBKZtwtNQ5BeefPgfqO8tSD/IHGyGg5KVWtGMdf8XAA1Hxjresf9N4sv+W6TVg2ktzygU+flAwwunr/0N1K8KMgeb4aDw0siesOTj9EM3/88+dheOvfJbwAZbZTaDaffcJhT56Qdv/M/qX/weqF8dZA5Ol8c1TDrdufnU/2kHb8IxiB9QPRlsMIjGJg/Sh8/l4DB3jc/rLJu39f+kvdeIxqVzt/x3jsluwRfm4NTCys5hGVM/6UHVkt3/e3deIogrFu74H1rWcQqo1wxfagGnc1DQqBhZJUQ3TPlQAnRR57ZzODFIHqROSlU7DKhPBV86Z4S6XhSI9cTkVaL88hrOZk1a8b9yyZ7/TeuO/2/ddBpMg/ggcZA8UF0EUL0OoRwKL1ug3tMFYhcT7/B+n7z6S2HV/Z8jG6b8B9EgPkgcJA81WIxQ2YJSKkJdAvKqKdQQPyAOhNIuUHEVqDqiSkX08pwX6ipQKgAVrRpQWgEqzktqeY6tJuKE5gNeKM1JUk005CpoACn7Zz8845ivAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-arrows-pullsdown.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAGCAYAAAARx7TFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUCFtjcMlpNnDObv7mkt383xmKQWwwzgGK5zQbM/z//194zvrdM5AkwBikePrq7bOB8iIgRSCsXDt9+VaIZBNYUeWUJbuB4qogeZgihm8/fpintEy/ADItoXHqtW8/flrB5OCKgJjx4bNXQWmtM87defw8HMTHpgiE2YDYDYjZkcUBl+OOeCK3v4cAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-arrows.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAPCAYAAAA2yOUNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANVJREFUKJFj+P//PwMMu2Q387jkNK8D0kLI4gzIHLfc1s1ARf/d8lp3Omc3M2MoAgo2ghQAaTAGsrtQFAEFQpAkkXE4WBFQwsAlp+U7zBSwJJR2hYgbgEwSBuIkIE7DgkHiwigOx4WpqAjkMKCDv7lkI3k/G+74b0BsDHb4nPW7ZyBJ/If5dPrq7bOB8iIwI5Vrpy/fCpFsAiuqnLJkN1BcFcVN3378ME9pmX4BZFpC49Rr3378tMLmcMaHz14FpbXOOHfn8XNQSDPi8h0bELsBMTuyOAC+nGWQKm0f4QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-disabled-right-pullsdown.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXlJREFUeNrslkFLAkEYht9d91hgrORCRKeCiqJDRGK2GIVYxw4d+kf9g/5FHax/YNShW9ohSINyRTNZ01zdmW1mV+3mbsVslz74mDnNM+837zcz0slZ/hRio8kyzzKnUEpxvLcpjNSxetFi6WX//smQFcdxUHi1hMEUWUJc01AsV5KuMkodYbAeW7vHRsaZHMAoRAdnuDASJixEZQSEhAEjUDiIsIno4Jw/UBYC7EuZTxkbjQYucxeghGDYkdJgjCgRZLJZqKrqq0wmhJdxfE6rUzg62B1BJMmbcPBhJg0tpiLIOrLbZ2R8diwbEzENO4l1D+J4+vSNNUTjM2hbfd81XOsPqX7x1iZYWFqEUauj8FDC/NwslldWUXvvBjyzkfWDGaRqdqGnkqyMEra3EjDMD7HWN1oW0noKz80O26TzPet7d2Pwpub7eqybP7uuvDMLo88I/p+Y35XQtjmjJfxbYPf7qFcrHHblfnjubq9FCuPWvWF5/inAAMMzdZSyHBqHAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAghJREFUeNq8ls9KG1EUxr9JZuGiKcaJNdCFSEoWCl1YqEpaaaoitILg1idw2Tfo2jfoW6jYRcCaukiqrUg2bUTI6KgYrY5ObDPJJHMn3juJ/0C8c9tOD5xkhsydX75zv3NmpNm57Af4GwbNLM2PsuM4mB4b9I1kWrX2/M7Bm83dw4DcaDTwQ7d8g8kBCV3RKPJaMeEqc5yGb7AavXeNflNOqAVz4HcwRoB9EIGsWhYWFhZRNk2hdYwjrCyVSqFQ2IZNbExMvIUkSSLKCAhxPOXq6hpUdRvs/pqmIZPJel7LOLJ7Qg94oaoq1r+tN09aYnK5HJSIglgsxl3POPKlsvtC13Wkl9NNyE3j0uOVzysIhR5CURROGS+VcWBd9N+/fzeDu7aHtin2S1VYtuNRGaeMZo1g67j+l9Z3lbEyEt/7jDFc6/PK+K+a2pMywzCQ/rQE2759HdvDYDCIV69HEA6HucoCTevfn51KGFPjySvXSy0Qi8nRYTyKdPCnCPHY1OVqHW3tnUgO9F/TaLx49hQPIlH3d09N3ZyNfIOclivoicdxeKJjs6DhSfdjxHv7cHReEd0zbwYpGiYSQwPuPEwMPsf+WVncjSKD+KBUwcvEEPZOfws9B6+mPhGAsSIUfpb+zPr/4+FJbJsxfvn+WmDX6zg5KjLYF/eF5/vGmp/Czml+pTl/IcAAabQiHJYP3UgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-right-pullsdown.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXJJREFUSMftlk9LAkEchl/30KlDoemCRUUopBQeQogSsYQOHTp0iM59jLoEnTr0EUztC/Qpgi5eoqBTFyt1tULR3HF3ppndJTrlWMx2aeHhN7uw8/Du/NnRTi+vmGKqnBPOmEYpxf5mWhk766lofDp8yD3HGmMMdy1TGdUeENF1cM+Bk4xSpgxiUbwR8Dad8mT+4MhsH/iU+ZjMhm1T5QiP5twIoWrsP0nmE26yIRhNA+VSCcVCAeceRY+LcgkNozG0Dy+Z+IzfEw5OYm87D3EFBAG3wXjZ3cpBDwUh04+7zobE75kWxkM6NlZXXAljjjibTmEiEkXXHEiMGZVLJnjt9hFPLCKxMMd9AcRmZ5BcWsYLfy7bhzf15ai3+8hm1pCMzSOfy6DWfpffRX4y9WsdE7ksF3XI6FPf3RvlFyexLDw0204d5b0vY+bHOrPx/4v5FQNCRDXUHwtMgvrTo5AVnQPPbeVaGfc3lVqr8XzGPUcfblj1AECuvN0AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/popup-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABsAAAAYCAYAAAALQIb7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAfBJREFUSIm9ls0rBGEcx7+7Bzk4eNlli7ylzUtJFGkRUY7KzdmFcuDAhULtycHf4LRecpBc1sHLgYi0JcqupS0WszteYmftrJnxzDPrLWWeofHUp9/M8+s33/k13+d5xjq1tK2YzAXBTUizyrKMnvZ60+hqqsl3FuSOEp1Jq6IoOOYTpnEhAHkOB4hOL+1MlhXTEF9k3Isg17I9JfY/UDHJAM+JBJaXVxATBEN172JG8Hq9OA0GSVyFJElGO5NIkczEzs4uzs7OYbEAoVAIW1vbzLWqjpXeqII6BE4D2N/bBxS8D5/PB3/Az1Sv6jB1xnERrK+tAxZ8HUR4c2OT5tk70yHPloOJoX64hwfgHhnQYup6fLCP5lmeo3WmgyAm4Y884oT7jjqv5vWekepMwn+hrTNGR/0Fan2WN+J5HosL85jzeL4wP+uh89FolK0zzfo/Y8/JQndnGzWg5Y2UM7s6WpBry9bfRVitH3tOIj3TjraG2g81MprqqpFhc9A8k/W1vVHfkbexOEqcTpSXFtH1VVaYD2dlFfinOFP9p2/G9pGv7gW4GhtQUVaM1mYXwncxAyaRjG/E4Yc4ml2NuCTR9CNGfJEQ5B5oNP2I+Q1JUVRjxPzfgoSIm/ClKjZDf3iODnZN4+Tw4JrnrqaJztgraPK+AKe0hD8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi9JREFUeNqUVLuO2kAUvcYGgs3yCi+zCYhiSzZK42xDScsPJKIhFV8Q8SF0NGxER4NQ/oBmU0SQIiQFQghjBApRADvYPJx7kb2CrDZiR7ow4/E5OvfM8TDwcDDNZvPa6XRmHA5HkmXZy91uJ+/3++Fms/maz+e7+I55AjheVKtVfyKReBeJRK5DoRB4vV4QBAFUVYXVagXz+Rxms1l3PB5/LBaLv20ca5PVajUxHo9/SKVSyXQ6DW63GxiGAcMwANUAz/OA5IDqYqjqJpvNfm61WjqBOfrJ5XJcIBB4j+CLcDgMmqad9Ift3M+j0SiYpnmh6/pbXFaoNQepKBQKUiwWe+Hz+QA3D6DHivaDwSCg6gyqvyE8KWHRRIn63263cO7w+/3gcrne4PTuQILjJRI9iQS9IeAl4YmEwR4F2ngKCQ00mLfbYbBPDYvnOO5sAswMndwfm8TEHMiLxeKKjD13LJdLyo9C+AOJoihdURSvKAvnDgwdyLL8hfAUNqbT6fyUJCmD5no9Hg/l4L81mUyg3+9/L5fLnxCvE4m5Xq9NJBhh0DK4dlHUHyNA1TAajdRGo3E7GAx+kT127M1er6dNp9NvGLoIuv7cPkaKPplIHhABKvhRr9dv2+32hFQQljn6EInQjSWUSqXXyWTyFXokYhZ4TCp+CZoyHA47lUqFfFCx1nTKxyT3GaJ2sJ5Z/5z1jF6mEBkW2LCePbwK/lHFWnPGuj+odlad3Cd/BRgAYjwouXetfmAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjNJREFUeNqMVEurUlEY3cfjO5PjO0UkCCKCiqLxnTnpktUwCidySRz5K/wJRgMnDmxkkdWooBo4bdCFi83UUkFS8/3W1pJjeL3FPR8s4Xj2t/Zaa3/7SOJsSYVCIWIwGA51Ot0dWZZvLJfL49Vq9XU+n7+PRCIFrFmfath9yGQy/kAg8MLpdN632+3CYrFsMB6PN+j1eqLdbr+t1+vPYrFYY59Eymaz1zwez2e/3+91uVxiOp2KxWKxgV6v38BkMolWqyUajUazUqncjcfjP6lKT4ZwOGxSFOUlVHi3C3eLRKzBYCDMZrPw+XxebPIcfz3kax1+dNFo9Aks3Fqv12I0Ggn4/y/4HlkJt9t9CPVP6YJK9AjxMQIUCE5oKQQt0COMRiNJciQxgOA2d9nK1lJcj76b7CeJDBtOWuEOWovrQaSwnyQSQurAioNetRY3nM1m3W0m6+FweIzADpi81ppMJgJ9J9sjXuLc3zkcjgOGpbV43LVa7RX7OWxGzMilVCr1AcN21WaznUvQ7/cFpvZTMpnk6fySKQfSVlDxDcN2D89WHN0muH+h2+2KTqfTyufzR+Vy+QedyeplWpVKpU6z2fwYDAavIODLbJAk6W+IzIB3Bwq+5HK5o2Kx+J2u2Cvt3CEGchFwJhKJR6FQ6IHVar2OWVBA8hvBn1Sr1TfpdPo11vBe9DnyFCHt2WXQFpXsAmDiHFAMMAWGavNYJTj7KdhTZVAJJNUyieYqTn1P/ggwAOPnK9ASMplRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-selected-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAutJREFUeNp8VF1IU1Ec/9+vbffO2aabk63JJvMrFEeiVj4EFhI99Bp90FM9SL1G0EsE0ktvgQlJD0kIRkT4YPQUBD0kCJImpuGcc6tdt7ldN+/u7rn3ds7YplPswu/cc+7//H7/j/M/l4LjD/Vkai7Emcw9NMv6aJrx6roW0xGKqkVl6emdq4t4j1FDOLwYfTZh97S23271untamhzgrK/DsEJSymPkYEvchY1YYim+sfZ24vFopsJjKmIPnr/2NPuDjwY6A77e9gBorAV2EQ2RPRWKwIJVECDocYGFY9ySxp5r6+1fWPgyVyBklgwdZ89zDrf37mBXwFbX4IKVHbkmP0nVQMKf4nje0NgEfW26rbCfv4WXLzEQiYS68XBsqKcjOGRpcIOkINAN/UTkixowFgF4xmjyhS6k5z9/jJJIWJNF6GeFOsgratV7JrUDM5PjsLq8CJ3dIbh+7z7YG10lm4oABFs9cGZ+EC+/03jgaIY7jSgTqDjsCqZfjUNUTIHd31V6T028qLHLGgsUzXoJn0TC6IYhGCUPqBpJMpuDeo8fWDMPSJEhLW7X2Ml+zOMJn4hQiiLLckHmWZatbmoJdkBaVoHGW4iQL9iJRQ7SRSo+NUUmp0ORdIxcZjchZbM4TFTFxcsj0Oxygq6h0nt45EqNXZIkyGUzIuET11piK7zi9gX8PC5u5SHz4eFLNUeNkHaQrijCn/D6EuGXmi26+iPb0t3XzZjMgpkXQNf1/yIR34bN1eXw7PjYJ0zPERFDQ6qBmydldTZ3AUVxvNV6Yp8QgVhkQ/724c07Kfk3gflKpe31VDyyL0Z+bwoOl0s3wE6uFVUqGQVqUYUcrkEiFoXNX8uRrzOT7+PrP6PYmCdc6tBFJPWxYTgGrt0MuQPtZ3jbKSfDchYcaUHeyyYT4bWV+dlpcovTJA1SJpIJdeQ3QIQsZTErhrnsgLSFUva8h1EoCxz/FRyJiivf8ooIORq14v0w4Z8AAwCwpYb8ccIJGgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-selected-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvpJREFUeNp8VF1Ik1EYfr+//Tg3N3U457T5tygUc5YgdBlRCRZ00Q/VhTchdNOFN91EIN50HSLRRUGCSWKGo7wJgqikMIoiZ6nT+bPcj9v3uW/fz87pnDGnK+vA830c3vd53+e857wvA38v9vajwFnBYOxmeb6dZblWhLJfkK7PaqoydefamWfEB+0lMHs3fYNDNe4G37DXVdntqbRBhbUEykvNEJdkiIlpCEdTsLQRnVpbCF4futW3usPjdoLduPugxeVteutv8hxpdleCKGuwGhfhWzgGUkYFgeehweUAi8ngk7DhanPbsScfXwVSlMzTz0F/l9lRVTPS0Vjj1DHAu2C46HwxUc8pWYjEodpRCm1elzOT3h4mph4ClSphL/UP9B5qPNArKjokiHSM8T+RSiugZBFU2CxNdf7jyzMvJz5RJUaDqeSioumgIa2QPbWVgBdPR2HpZxC8jT44df4C2OyOnE3P6lBqFEAwmq+Q7WOWfEwsJ7RJMgmioQIC42OwKWXAXn84938+Nlpkj6VkYFi+lfKpEgFhbEc4Cyi7W4dURgOb2wu80Qy6IoMYWckp2FmY3jPGNsqnQVhFkZOqqpaxLFtwqq71goR5YDk+F6i6rh50fTcIQghURRYpn7KQtJWYy2QU4pQtoN3vJ2/EQtTpUG61wNGOjiI79ZeSW/OUT5VokeXF6bIKZ6eN4wqZjCYz+Ntaiq5az+6eV9pOw/rifIDyKYtZ+f55vaG96zTHG+wcCYQQ/i8kaRs2wqH3k/cGBgk/SoMQxRomj2fJ4fGeYFjGxJNSYYz2hSSJkEjEk2/GH95MRTfmqCguX2g9thba+hX6MVPmqm1keIMbY4aQIAdaA0VRQRRFiIRDH16P3u9fm/86Sx8z5TJ7GtFE4CTwdPZcPldV7ztptpY1cLxgJUpFWUwuRBaD0zOTIxPEZ4Vgk0ChIpg/xoCBwJYPVkFgyTcpreh2PjMl08ZT9x0FO/OEXk5emZDf0/lBeyKTz140T34LMAAJdqAwng0CqAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image-selected.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlxJREFUOMtjYMAETPWLtgW2rNg7p23NwbMd6478AtEgPkgcJM+AD2S2TZduXrF3y9LDV/4fvvn0//XnH/+//voHTIP4IHGQPEgdNv2MOd1zdZpW7Hu148K9/3ff//p/9sX3/wcff/u//f4XMA3ig8RB8iB1ac1T5EH64CaoG1ly1S7acWnnxfv/jz7+8n/zrY84MUh+69k7/6vmbd4B1MoGD4OcvgUZC/df+L/11rv/66+/JYhB6hbsP/8/t39hCiyMOIumrTqw9OSd/6suv4TjWQeu/HeOzvwvrW8JpkF8ZPlVZ+7+B+kD6QcZIlgyc/37hace/V967hkcO0Rl/ldzDfuv7Z8Epm3C01DkF558+L94xrq3IP0gQ8SKZqz7vwBoCDLW8Y79bxJf9t8irR5Ma3lGocjPBxpSOH3tb5B+kCES2ROXfph+6Ob/2cfuwrFXfgvYAKvMZjDtntuEIj/94I3/2ROWvAPpB7skvnHKyc7Np/5PO3gTjkH8gOrJYANANDZ5kD6YSwQ9kouby+Zt/T9p7zWicencLf/dEvLrYWHCyc7JrRtTP/l+1ZLd/3t3XiKIKxbu+B9W3nUCqFcTFjugeBZTM7WLim6Y8qEEaEPntnM4MUgepE5W08AXqE8EOS+xA7GCuKJakH9B0+msSSv+Vy7Z879p3fH/rZtOg2kQHyQOkgepA6qXQ06xDNA8wAmVsDLzi+ryzW+4EFbT/ymyYcp/EA3ig8RB8kAsC8QcKHkHCbBBnQjyqw0QuwOxF5S2gYqLoLsAG2CCukoQGn0SUFoQKo5RngAAHC8qpFnABTYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/radio-image.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeNJREFUOMuVU7tLqnEYtigJpJJTS0JtDUHQpEPnDC7Oxz8haHNpqk1cxUkELwQuOnhbVI6oIFGCoiAYitfBQVDMS4LgcM7y9j4fvw+62Onrg4eX9/I8v4ff7/1Uqo/fWjKZ/J1Op2+z2Wwll8v9RUSOOvqq/31+v/+Ah5OVSoV6vR6Nx2NaLpdSRI46+phbxV8LBAInPPDUbDZpsVjQfD6n2WxGk8lEishRRx9zPp/v8I0rk8m0xVYf2+02TadTGo1GnwL9RqNB8Xj8D1M3ZI31YDB4WS6XaTgc0mAw+BKYK5VKxO4vZDfqcDicg3q/31eMVqtF4IEPEU0sFpt1u13p8pSi0+kQ88bgQ2QnGo0SRL4DiEQikX/gQ2SX7+S5Xq9LFpWiVqsR8ybgS074uR4KhQJBSCkwD57sRGOz2a4TiQRVq1XF4Ccmq9V6Jd+JWqvVHnk8ng4vkbSVXyGVSpHT6bxjrk5+nXVYMpvNJq/XO4Uj7MxnQB9zRqPxnHnbr7d2k7Gv1+t/ORyO+1AoRJlMhvL5PBWLRSkiRx19g8Hwk+f3Xm+sSqipRePYYrHc2O32gsvlmrvdbkJEjjr6jB/i4JV/9IawqBPDp4wzEY9Fffu9g5V/tHClEc+3K6JG1D+c/gLaLHWQM6f6bgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-down-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARxJREFUeNrcU7tuhDAQ9AtQQBQ5IQokCkDi/7+Fz4CChgiO8yNjb8idTiKPMpkCY+3s7uzY5uM4SimFEDJAHOABLMBa65zDV/jFOXYOF6J3tl9D9hnbHvAd7QPOeMZYrbWKomhdV8Q4h9p7AolGggkICUbFcbxtV20MO6by8zqHDZShuNagGuqjEL5cXqdpQiOywDcQEpkYBJxQ2CklEfJsiCnLcp7n201j2GCg4YyUWCKQPPWxKFUUxbK8bdfNoDW3UAL3JQJelyPH1KMJWZam6QtJJMaTs4L9Bn+VrZ4uxjAMy7LQNs/zvu9Pa8PjruvoAuCEmqb5RkmWZVVV4aeu6yRJvlJCAG/fd9yFH00JJW3bfj6z/3A67wIMAMmK0TcxpouqAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-down-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXdJREFUeNrcUs9PwjAYXbt2gIpHQzDGg1e8YkiEAzGRi/yB+Cdx8OTFRKPyQ4MSYWNs/bHV1y0SYoLEo74t/dr0fa/vaz/S7/c9zyt8AXPGGOfcdV1KKSEkTdMkg5SS2phaOBtgjMkTtNYZG1HbiI1v1BVPKRUsQpYYR0pFqas1zxNWyI5MldbSQk3e3pnLiyL0IQOjcIwBc0JoagxxHOTHgBDQfhqMWaG0Gy38KI4JJSgMxCS1haA+2IKHOIqFFEEQDsavVumgejR8vM8kcQNGeQq/ZRtj2VZa3NzeYWnZhWLp8Phk8jIMF0tcEM9AM+1EJzM/eHgehcsITJbXzj0PJ8w/pkJEWmnJpEtdofQ8WEymMyFVTmPr97Wzty+8Is6NhIjjEAO+dQJ1foO/ymbfeqjXux6ORvmyWq1etNsbtdHQ3e4VGsa+AOet5vkWJ5VK5axex6TRaJTL5Z+c5Gi1mr7vn9ZqUortVcJJp3OJrvo/r/MpwADuwwM0qCfRHAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-down-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrcUj1vwjAUjB0nLQSK0qUfKR1Yy1IGysgIKwsj/4g/lnZlZ0ViQGocx3bsnhOKKlpadWxPkf3i3L1378UkTdMwDM/egZgxFgSB7/uUUkKIMaasIKWkbjcO3glYa2uB1pq6CLt2Knw4oh54SinkZqgopaLU1zqoBQdUJY3SWjoozjmLotZms0EayOAYC2JCqLGWeB70AigK5MbOOp2L7XabC0EoQWMglsY1gv5gCx5ELgpZ4AwChtN+/yF9fuE8ryZgVajwOLa1ji0EKjSbDdR0ddvt9tNwuFqtsleOAQUVaJW71CWhXiuKIAaT1r1DOhg8du+7mHHO8yzLUArURvP8Mo7RUk1jH+d1l9zeXF/B9H6i1eywHgjU+w3+Kpsd3aHlcrler+vXXq+3WCxO5saw5/N5PV1c9Nls9oOTJEnG4zGCyWQSx/F3TmpMp9PdbjcajT5f9y+6hBP4gav/83feBBgAu4vyDSWkLFcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiWrpyHcP12/eZXr15x/T792+mX79+gfHPn0D86yeQhuFfcDmgOmZWLl6AAAMA0ScnvzgM/74AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNo8ybEJACAQBEG8/ltSbEILUMz99O8eRAOzZTblUtOYC9sMEQGSkAR3viYdfo36TyG01o8AAwDxoyq9365oKwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVZJREFUeNp8kr1OAkEUhe/8sLvCgIPgClYUGhKjhSE2FmJrYWFhbCzURKzUWuNrWPgcPoHhDeyMMTzBEmBlZ4R1x5nNYpDInuQkk5nv3ntyM6jZbMKUkDbWpnf3DyeU0kOM8ZZSqm4e6QxIL1tX667rPjKW32eMgeM4safhGDw7v6iXy8vtUqnMFzmHMAxhrC37/T+wGW277spTcanILdsG3/dhVjTpmrm+uW1lc9ldQigIIeA/0aSrRQg5NnWj0QjmaQJnhJQbhUhpeJwOc86d4TAoRFEExmkw6vV630EgPqUUTMdJhZWx/BJvg4HfyLFcKmzmhjKQz57nNWy9tnkitVrNrI50Oh/vlerqns5cNQWT/NM28O+foJS8IoSPFCjbsZ25sMkN3a7nE4JfdO2mlLISd8EojhCpCFDy61CSf0E7r13YbuycZizrQJ/XlIrv4EeAAQDMloUiXiKSSQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWZJREFUeNp8krtOAkEUhg/LKIRGwAZ8Agpbe9/AN5DCzkvvE6hPgb0WJDYW3qiNRhvUGBpZIZpw21mX3bnteGZZ0BDXk5xszuw3/znzz6SurhsaAELMZ611UwhePzo8qGMt43XzP4pU2+4go4ExBkEQgOu64HlfjW63s3Vcq9nxpmiDNXIccCgFISUsZjJQKpWgWFxeL5dX7jar1QoyxIgamCilohbTr4+ZyWYhny8UpFQnWK7F4yhLCAHz6fs+pAmBXC5X2d7ZqyK4YNQtie3/Ss45qDAEQtIbMWwRzgUkBZ4bGOerM9i0TYoQlT1vvBQf0sA8EeaT+enMDf6Psktd4/3L1GcihUyEB4MBKo/Pp7eZOLMBh6Nh6+bywngtItjYNB+9Xg/6/b7z+dHdxXL8A6sJbMYJWADUofg+6O17+23fttuvv2BNms2nyYtKgaND3RKcnT0+3J/iknHBxWTxdcO3AAMAyTPqDXZdVhcAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAV5JREFUeNpiZEAFjEDMBMQs8xcvD2djZfNlZGLS/f//vzpMElkhS2tHt6qsrOxUAUEhBwEBAQZubm4GLi4usAIWZIV1jS3q0tIyhyWlpAWERUQZfv/+zfDj52+GL9/eoSgGWc0uKyc/U1RcXICdk4vh3fsPDOiABWoq64TJ09J4efmsmFlYGb58+cqADbBATWVjZmYJZWBiYvjx4ycDLgBTzPr56zctob//GX7+/IVfsaioGMfHz5/5/v77y/D311+8ihlfv3719/NnoEu/fuVhYWHBq/g/CH/79vXmu3fvjPn5+fEq/gfEf75++rz52bPnxhwcnDgVM0ODjvnalYu35RVV7f79+ycJirG/f/9iYGbkNAF076X/jMyBQA3s2DTAFIPczfDyxbPPLMzMB4HhrfP16zcJsCmMkOQDNACekBih7gc5mBeI+exdPGPYODk9//9nUAFikBgDQIABAM09iIFDDek1AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-knob-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAsAAAAPCAYAAAAyPTUwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAW5JREFUeNp8ks1Kw0AQxydhU6sGxINUPVQUDz149e4b+ACCgl59AEEsehc8+AaFHvzAghfxIuLFIh4traalh0KaVpO0zYfm29mYlCKkA8Pu7Px2dvc/yxQvbgIA8NGrEPgVy7ZKu9tbJYzdaJ3mQ2OqQjNAA9M0Q1dVFfo99bHREPZO8ketaFO4ge1+KfApq2A5LkykJyGbXYL5hcWNleXV18P8cQ4ZQotSmDiOEx4Rj9TSU9Mwl8nM2q53ieF6dB2PtW0b/ruuG8CSFPA8nzs9O99BkKPVCU0mmev7wKW4TZwW6OHEspLhIGDAMH/WososQakSYc/3YKBpM9EjEbaSYZrTdGMwVGMcrCgKaq/XYp3H3lmSOqBrg7u4m4lqSJIE3W6nfl0sUK2dRFgURWi32/1WU9jH0BzCox00DANkWYaeqrzUa28Hwnv1YwQOyHO5/PejGKaPv65uf5u3Tw/3V7hEVdCoKFG74VeAAQDaxdSLiOs7LQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNJREFUeNo8iTEKADAIxEL9/0udRUSF9pYGMuQOdz/CzCQRQWZSVXQ3M8PuftXa338FGABp7SMpb2OFxQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-horizontal-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAPCAIAAACqfTKuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUeNo8xtsJwAAIwECMr/0HcyJRS/vRwEGoKiLik5n/mxnujqryJiLcHbvLzNDdjwADAARbDu/0NmM1AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-left-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASVJREFUeNqcU8mugzAMzFpx58KR//8jbiAOoFZtD6AHElk6JEDdBam8iYSSGI/Hjs37vmfHMQV4j63nEdbaQxTG2vvtbq0RQkopAge+TB1jMeZ8ucBVyRkiIJqUD/p+Af68Xm8zC7AS4XiY6G8YnHNKY82gcgDhv2Ecx6Io3i+HESoiiyJcEV8UNU1T13XMhd5DzuL0Wp0lNZjpuaqqtm2xQfDoTK0iMMhVxQsRDYvK5XmeJMmmiFrnyjLO+BO7RNjDnGVZmqZlWX4QSc/CWi8pF++6jhLTaHCgqZkApfTppD9f7b3Y8biFolZUzRjrnDUG/uimZ+DdPtprLq3VNBlwOYfZ4iFfEQtyoCE3LheAMY26F0UY4n9Mv3PLO+A7V4rzhwADAFzx4BgPjY4eAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-left-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAY1JREFUeNqUk0tPwkAUhUvn0dJpBTHqVv0FsNWYaFzJX3ZlIgFZFgIbE6MxRCLBWA3Q0nY8bSXC4IOedjGZO/P13EcLV9dNLb9kHBJNMkoY1Qkhuq5Tx3FyIaIonLyNia4Z3OCcUUp1HaACjaIoF+XjdYT7ppE8nCWgQio6n883B028MSiWVYRMw2CMISlQEMoBisKAU2pZli0EQIbBUR3sf4H8IFi/8+Z5jZtGvX65vEm10CiaAqTUUWbnO+r7vkJx3c5tu43vKCFLIC3GOOMww3lWnV9BzVar1+tjgaNKiJUF46lYwqOUrIBms5XTtWrNNIuu60oplVBWDggZoeMokOJoppw+OjzY39vtdLpKaDr1hRCa1GIpNSkLCy1Aa59NdgmtVatKaDgaV7bL6HIUhpi+OI7/79qPGgxfdiolzGDaryQvLLIEk4Fc79of6vbvKuUSGkdo8n8hRcZkNpPk5OwCLjd8Yf9x8OzYYsu2l2uEzpDj0/M4j4IguH948rx3GLGFBQ4oKP+nAAMAB7f00otUtiAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-left-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXdJREFUeNqck0tuwjAURbHjT0iCxDbYAntgieyBEUJihsSk7QS1bAAxKNARJITExu513CIaaEV6FVmWX3J83ydkvV63muuQpunhYIw15hwEAaWUlGXZCJGfTsu3ZX7KpZBCcMYYpQARUhRFA0qePz2/4P52GMpQCu5ApBIzxjxIsdYuFq+gRFEbCqXknLukCEG0Aeh9s1FKRXGUxDFAUgpUB+ceRM/3tN1uh8Nh7XC3+0A6cQS18YTIrpKodMfRbDYbj8e4pxaCHRSFCy6qj311LlGmtb5+ezQazedzbHDhdQgFwsr97dzxGAt+gOD5GjQYDLrd7nQ6xb4WujQIBUbHUaC/QFC/3+/1epPJpBZCTs6XbRm3WvItHyWr1erBrmXZEU+SxJ1OgoKjzN7UV/tvHf0mdOmY5xjganwcApsLqwEIwgSlWVaURcDc/4UUObd+JhsMZDV7YEVKa1WqgHovLW+K7ff7f/z9Wmk4AMVa47pJ6acAAwDbUso/kA6gwAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-right-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT9JREFUeNqck0uLgzAUhfMSXAkdOiCi4Mb//39cua6MGxdK8+pJ0mZipjDjHEK10fvl3nuudJ5n60UIpZQUXuS8BGMMEGsNWFprKSUX4uNy4ZyfAoHDOMdyEkLgTkl1u82AnssonoyMjDHU1UeVUl/L8nm9/gcEAYQEHYoQsLZtK8vyRGlRKC0U6K9833d71DiOPzeDXLMjFc5xXyMoWhss7+a3Fq+u6+q6DokfXEv/G5ckZ8zViH6j2DR5/GJzmqZ1XYdhSI8RKRgPKA3tdkK70lfDPfbbtm2a5jV970Cvt62/WD9iB1BVVX3fwwHjlQbSdF7CY/h1v0ulpCgKkXgaDEkbfOhRPC3MkVIayxhH58eMYhYZ4gmKbPOU9svii8sC3sbnoJCOd8lZjjn6NTIHITYUhmahO5nlf9dDgAEAn/cvPZYArNYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-right-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYpJREFUeNqck01PwjAYx9eu2xLjNATjh2CRC+IBT/Kp5Woi8bCLBw9GphINRoMMonR9WVufbbhsxAPzn6Z76dNf/8/TloRhqLVWSslUy1QpCyFMrOYirutqbQBl2ylGhguhpNw/bGPbbgwyBkCaEIIxBkMsYcv5m986bsQinufBA1iQneM4NuAQNpR+LT/3Dlr/AUEPrI0vy1pTyhOKidMgteLN5MopKCu/1uuEc2Gq0Zej0flg4Pv+HyBQ+aFzX0CR0uOOIFwAqxodRY+TSXTW73e7JwihGgjqUn5kjhBSSjuucHLx5ffWylLK6/F4NpsNhxc1kF3ZGvCCKwJ7jNUcFbkHnU4QBFtDm9LWoiFeZ/VKEsY5qw4dtduQFNQoTSW0GqhMVeeCjVNpJqj2x3zB68ue9nrQb/3cgMyvslsiJRiGBopXq/f5ojgWO20/zC9ONrgQQnABW84pTW7v7hljDQ5kASrsCAGdjOPV1U24pkmzuwZzTV4aKO305fUhep48TXfPqNSPAAMAXbEphoLM6uIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-right-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX1JREFUeNqUk99ugjAUxtfSwtggGRn3voC7cZmXZpdGn8G38wV8D6/0xjvvJZnJUEoLtPuAiIpbJicN9M/Jr9/52pLlcqm1LoqCUotS4vu+53kP3YPZtq21ASrPcynldxy7rvvW7zuO0wlENpuNMaYWpZRKpUxFioXh8KMTi2y3W/zAAgiiABKJOCaJ6z6+DwYdSqu3BQhfsBhjlFL0wdrtojB87eBR3TNVVBRSVqp1FEVB8HKZPZ/Pp9NpEAS/gBDNQFe6QMkyR3IllUL/Mnu9Xq9Wq/F4PBqNauFnEOe8GZSKCCkKzW2F+SIvXWvtjJNdLBZwdjabXYEsyzor0ppeBLcZXGuBkP9ZRWuJtRSWuqBMl35xxlvZvV5vMpmEYVifzNXxZ1nWyMEalCdJEseHw+Ho+c9PrnvvqZlTgAJomko0xAMxjm3flvYnCKn1zYavuNlSSTRM4sndTylLQw2NHDBEKmQqGbNuvfsH9LXfm9NDgztCiMa1TvEjwADa4Bo+zuuFWwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-up-arrow-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQ5JREFUeNrUk9FuwyAMRbFxHvIn+f8PSpTkKe1DOilSUyhk16bTJjStm7SH7UpERj6+gCG0bVvbts6544NyzlUAxRjZ/UR/msaBhmHA91v0siwn03M6hDBNE4J5nhE/ofu+TykhQKfHcayyUs27rqtu59/0+9doqZp9ve7oIBE5cp7ZizDiikanLpeX/baLB8NKO0Ib0y1g2jTyTsPsdD7jfTQiMPNcChweChqeUg4hihXoWNcVqEAw8cVd7fGucD/McMuHXZPg/4n3u/cKizdrbNd7WxkFmVS5SLAK8gqa2Fgi3YnZG0xwR3wIxgPixwb0gIYWlfNpALok3vrwiUoWgZpa/Vd3VFzKOq8CDACjBLiBGK0ZHAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-up-arrow-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNrUU0tLw0AQ3sdkk2wa21qfrYoogjcPnvwP9Rd7sArV9iC1YKEtggcRRC1iiX1lk3WygaK9VMGDftnM7Ga++XYzk9CTs0vf96MoCg3Gk8nYYDRKDF7pk0kYqjBk5Cf402ytdbV6gfZb7JtWq93pdLrd+ewgCGq1Ok6azeZwOJzDPq1UsOo4UUo1GtczUZhZH5fLM935N/X+NfaXmsSRAh3ZrsU8Gzs5GAyfX17xi51lax2P3vuMxK7rWAiwKKP57MLaytL9w2P79o6YJoCRjN56TwK49KTrSlsI5DPGYh0rFe1sby4X8uf1qyD9G4J+T1hcSul5XgZHBkcCP+P76DyvsJg/OjxItDEfMxzHldJNlKWLwkII1CaEqkhxzgFgs1Tc2igCJ7FtC8exbTu5LcMFsDhnlFKIAR1mcuD7e7tgARcG+GoIDJgwNR4t0UTgJrgsra9CSkLgjngyZEzrlc4xQCysp87lsownajxV+kydJtD0JAYfAgwAo0qgTdQcI7EAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-up-arrow.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAYCAIAAACqZzA+AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAU5JREFUeNrkkj1vgzAQhrF9/sB05v//gGSJlCE/IIK2azNkz5YiAflQAAN9baQkytC0W6Uewpzxc3f2vWa73S5N03Ech2B932N0zvXBrg5+1nXNo9/Yn6ZxoPl8jvFH9Hq9zvM8y7LndFVVy+USzmq1Qsue0LPZrGkaOG3bLhaLh1X2X9X5xuh+Upblfl9cmgvnnDGmlTKxkUSPNBq13W4/i8IYI6XkzD+dc5eywvQlsTcacry+vaPhSWLj2CKlD+B8GNH4Hqv14ZiEAE9/bDYQx1qbeNxqDVqBhmRQBzuBrnA8DYVOp3NsYgsw9iMSK+VpKO16J4Qgoq7rXNfR4XA0WhmjtfavDCyRFMIflAbCB5GCBMQn3AEVTKIkEQ/twDu1BQXGSKGI3xhonJ2CoaK/ZYzdblzwsRDJMYpwCsOFzyamTPfoNYBNOwn2JcAAJXXV9kM4kCMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUlJREFUeNqMkb1OwzAQxy+OExgZeAAk1IWhon0V1oqB12BkR0LiEUCCCioxQFmYIR2YWkqFBFKqxpQ25It8f5gzShADlWrrZ/vs+/vsO+n0vMObzQZ8zD8hTVNIkuSHOEaSGOeK5PdMoPW0gnDO7SzLQJIkWLYJfwDJI6gZ+L4PCqVLi4MgwGD8laRp1jZNE1RVWVos/OMwvJaZMRnUtxs7lNJ1qij47wzyPF/IeDyG6Tvr3XWvDoj2cB/NZ9PWRNctz3WAELIwomEYwBhz3l6G+2g6Mg78tnsz26zVLlbU1XrB8w2RkCzLgWOPoggsywJd12HKmDbsP+49P/VHqPOqFItZZEw9PDrelanSCsJoy3bcNe/Ls0M/GLmu3bk8O2mjjy9yhiR/6yPW4s1KiYrI5V6B5EKApCXFf8WtLqkQNi8vqBA2fAswAMMZzeG4WyTTAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUeNpiXLpynZGR4as3737//v0LDH7+/AWEMAAR+wWUPX7iBECAAQBhgCfi/ZM1bwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-disabled-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUdJREFUeNqUUT1PwzAQvThplzIwsJUhA1kY+Av9EawVAzPwBxj5NxVi69iqG0qZS+gABCGQkihtonwotZMzvspBXZCKpeezfe+dz8/GZDqTjuNAkqbQNA0IIaCua+BcbNdCcOB0JurfHEXvxUMmpUxIZBgG7DuIr0bG1LSoqgosy9pbvNlsKLwxVWWUqpb/Iya+4HxsHvR6ixPHOTcZO6IC9CZEVK3hNiI20GC7RgjDEFareP7kPt4xz3uukmQ9jKJwXZYFMMb+vDGOY0L6/fV5Sw2Ytm3LuetG/eP+fcfqnkmQNhmiTVGuc8jyDIIgoBtd//318sP3l2SYMRgMiENW06O7V9c3F4yZQyU6zYvisCzLRBm0LIr8YTadjBSnUCipbituC1DPHY2ugqnPkH6IBApCA3ctlpqAOllpoaFzuAPaw48AAwDbB9BTAAnfJQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpi3LvvgKqq6oePH//+/fv79+8/f/78+vUbDED0HyAEC/75++fq1WsAAQYAbM4oZ81Xt6sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-disabled-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUpJREFUeNqUkbtKA0EUQO88drNJdjMJSSyUoGghmkJE1HJrsfKBGEtLn5Wf4FfY2lvYqaT3B8TCkPULEtiwI/uY8Y5sEUQxXjjMneGemTszxPd9+BYEoTkkR+eoHJMD/0EyaxZiI2xMzpAYSZDUbMLHRJPbJ6dnHcb4VhzHbfkhF6JI9qWUr1JG3e7T4x3WRDkxwba/xMNOZ67Vmr0ploq+UhqyTAGlFMJRCKMwhMFwCMPB4Lnfe7sKgn4PndCcxs4vLlc8z3sQ1WqNcwvwVCSBJEmg6DjAGINy2QXO+GaaZvca9P57ELzQpaVlB53bZnOqViqVQSkFv0W9XjeI6ZnWNU4F3dndO3Zdd9GrVLDVDP6KRqMBnlfZWF1bP6LY0oEQAtI0hUnD1Fu2vW2+pu3gvf4jFwoFM8xTQkjVPIjWemKZWxzrQXwKMAAaxXA5BvQ04AAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-knob-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAKCAYAAABrGwT5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVNJREFUeNpiZMAEjEDMBMWMUPwfiv9B8X+YQnRNLEDMCsRsQMyMpPkvEP8C4t9A/AdkCCOSRpAmtp7+SZEsrGye37591/7y7avy5y9f73/59PnGly+f9q1etmg9UM03KP4FcxZLcVmFgrq61mxuXh77v//+M/z584+BmYWZ4f3792D88uUrhjevXp28euls6fWrl+8C9XwGOYtlwuSpBgryiofEJCQ0eHj5GZiZWRiYmJgZ/v77C6SZGNjZ2Rn4+QWA/H8yzGwcQYwM//a/ef3qE7O5hSWXo7PrDikZGRlOLm6GX79+M/z9+xcr5uLiAtEcTMysGnduXtvB3NrRmyEsLBwjKirGAPQnTo3IBnz99k1aUET0PRMrK0sYUDPYRmIBSD07J6c30///DNrc3NwMv//8IVozyPb//xmVmBgZGQVYWFiAnP9Ea2ZlZQWp5wcIMAAiP6Ghx1+GGwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-track-disabled.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpifP36NRMTEzMYMCEBRjBgAIP/YPDv3z+AAAMArN8L7foJbfsAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scroller-vertical-track.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAABCAIAAACOvmNtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBJREFUeNokxsEJADAIA0Cise4/mBNJtNDe61BV58nMH5IR4e5mBmB3Z0ZSd18BBgDIAA7SuCPczwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/scrollview-bottom-corner-color.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAIAAAC0tAIdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiPHPmDAPRgAWIjY2NiVTNxEAKGFU9qpoYABBgABtHAx0Ze9+BAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUCFtj2rt3L5OTkxPTt2/fmP79+8f0//9/MI2M//79i5WNjY9sxokTJwBXtEPtiHmeoQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpi2Lt370yG////z2T69u0bA9O/f/8YmIBcKAuN+Pv3Lx4uTjE0Q0+cOMEAEGAAD7lHUquXzXYAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpi2Lt370ym////MyAR//79gxJoXDTi79+/eGSxGQC3AyDAAN4mR4fIJKx/AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUeNpi3Lt3LwsDA4M3EFsBsQDL////fWVlZT3k5eUZ2NnZGZiAAtYyMjIM//79Y/j27RsDC5DBC+LAAEgLAwjDBUCyKCrIFPj79y8dtNDEDGQBUBB+/vXrFwMsoJiAskefPHnC8PPnT7BKUBBufv78OQsQmwF18AEEGAD19p6n4TmfGAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHlJREFUeNpi3Lt370wGBoYPQHwMiLcy/v//f+bPnz8ZHj58yPD48eMdTN++fWP49+8fg4yMDANQ0poFxIEBIJuXBSgKFwCx0VWQJfD37186aKGJGRgCsAD6/fs3KIA+g1WAOM+ePQOpOMpy4sQJkIJPQHwKiDcDBBgAYcihtIbGbDIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUCFtj2rt3L9P////h+N+/f2CMzEbGf//+xRDDpgdqHgArhUbwsMigfwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADVJREFUCFtj6tpwjCnS2Yzp2tufTP/+/Qfif0x/gRhM/wWx/0JoOBvGB9JoapD1gsy6eu4kADcbQ5oyd/JRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9JREFUeNpi6tpwbCZTpLMZA9O1tz8ZmP79+w8i/jEw/QURENZfMPcvjIXERYj9hepAU4xmFNj4q+dOMgAEGACr+UQz3IvZcgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADJJREFUeNpi6tpwbCbTv3//GJj+///PAGFhEH8ZmP7+xcb6C1UCZiEkEGLYzANZBBBgAL41RzPloL1CAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKVJREFUeNpi7NpwjIWBgcEbiK2AWIDl379/vhpyEh6aClIMXOxsDCz///+3FpeQYHjyjYHhz5efDCAVvB9+ARUz/AMRYAEGEIYBsMBfdAE0FX8Z/v5FEgBx/gIFCaj4i24Gspa/f0Fa/qK5A9UMNBUQa/E5DOIXDFvwew7VUCagwOffv34xwFSCBI6/fPaU4ddPkOB/cCBvfPvqORMQmwF18AEEGADSXZ0uKgg45QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-disabled-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKdJREFUeNqUkEsKwjAQhv9Ktq7tXbyhN+gtdCF4goou3PlYiooPqCAWCm0zE2d8EWNBDPwQvnwzkyTq9dMEwEWSSobRNrdJUVZYrvdYbY6j1uJcYlcAnTiGc65rmB0qjfjM3BbAeC3dGwrBt0E+IC2hN9DDBsMDD8MreRp+Dwp7cJPB/GvsxxQO70H44/lkrYL8/oW2rpGdDgrGZj6bqHCVTCWDmwADABEdo9VXvegQAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-divider.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACtJREFUCFtj6tpwjOnfv39M////B9Oo+C/T37/o9F+wHIiGicH46PqBZgIAEU5GmoIeoQQAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUGFdj6dpwjI2BgaEOiBOAWJrl379/jRpyEhWaClIMXOxsDCz///9PFpeQYHjyjYHhz5efDCAVoh9+ARUz/AMRYAEGEIYBsMBfdAE0FX8Z/v5FEgBx/gIFCaj4i24Gspa/f0FaUMz4h24GmgqItfgcBvELhi34PYfp/de/f/0SZWZhgQssePnsaamIuCQDCysrOJBr3r56zgzEUUAFEgD4NZMFqr7d7gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ9JREFUGNOVjzsKwlAQRU/kbUHM/tyGlZW4ilTWrkKwsfNTit+IWgmBJG/us/BDjAFxysOZe2ei4XgSgD2QAP1oe/MhywuW6wOrTTpoLa45uww6cUwIoeukQKFAAUhqO0m8RhLO6uDbsCownMnewKzRqICHUVl5GtUMq2eoyZB+1X60qH6H8cf75j2Szk4K+LLkcjoiKXHz2RQgBUZA7w6pZqOrnOa4eAAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUGFdj2rt3LxsQtwDxEyD+z/T///9GGRmZamtra2knJycGkEAyUIDh379/DN++fWNgAjJEQZy/f/+CBUEqGJAxSAUDMiZXAGQDDNNOC03MQBEABsrrX79+oQTQ3CdPnjD8/PkTrqL++fPnfWfPnn1x4sQJBgBuoxapBuMd2gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUCJljmjx5MpOFhQUTIyMjEwjAaGTAzMyMk48uBzODh4eHae/evQACDwVlbTA8UgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-highlighted-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUCFtjCquZyKRtbM7ExMjEBCWYmMEkkGYGsZmhNIgPZYNomDiSGmS9OqLsTEt3nwQA4LgFKynwVH4AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-highlighted-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJlJREFUGJVjCauZyMbAwFAHxAlALM3CxMTUKCQqXiEsLsHAwsrGwMLIyJgsJinDwMzCwgACIBWirGysDDAAEmAAYRQBZnQBFBXMzMwMzMwYWpiRBdBUgDjMmGYwo5nBjF8FM6otYENR3YHVWnwOI8r7r/nZGEW//2Ni+PPvP1hg7uuXLyq0FaUZONkhgVx/8/FLNiCOAuqQAAAUvBbWQgxxhgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-highlighted-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKJJREFUGFeNj8ENAQEQRd/8GYvEdSVCogBuDjrRgDLsSQc6cKEJFShEspsNBSA4CdZKzPHlzf8zNstWd+AArIFljCZTrpdz/1jki1NZuGQiSVp0ewPMbB6SAaCkgaQ0JPEcSYRXwbfhL+DuhMt/G5J/hrqLcPc34NWVWuOjxat31Ne+Z9QZ/70fMtq6IanUOG0y7BhlkSNpHZvdHiAHtmaWPQB3Dxpmsh5qIwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHZJREFUGJVjmjx5MhsQtwDxEyD+z8TIyNgoKSlZbWRkJG1hYcEAEkiWlpZmYGdnZwCyGZiAQBTEAdIQDBJFxkxwGQQmS4CZmRmO6WgGNaxFwcBAeQ0NGHgAzX327BkDKysrAw8PD1hF/ePHj/sOHz78Yu/evQwAKaocei2dPwMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-pushed-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHpJREFUGJVjmjx58n8gfgLELUDMxmRhYcFgZGQkLSkpWc3IyNjIBCQY2NnZGaSlpRmA7GQmIGAAYZAgkBYFq0DGcBVImGQBZmZmBhimoxnUsBZDABoosAB6zcTDw8PAysrK8OzZM5DEAqa9e/cyHD58+MXjx4/7gCpqACrxHHpLd88mAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/segmented-control-bezel-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAQAAAAYCAYAAADd5VyeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHRJREFUGFdj3Lt3738GBoanQLwAiJsY/wPBz58/GR4+fMjw+PHjDqZv374x/Pv3j0FGRoYBKJfMAuLAAJAtygIUhQuA2OgqyBL4+/cvHbTQxAwMAVgA/f79GxRAr8EqQJxnz56BVMxlOXHiBEjBCyBeBsT1APoAoYpapz15AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA5dJREFUWMPNmMtLG0Ecx2eDRopFGijUVCpeSnvxVKSn/geFXAIVLJ7EQntoCsWKPQqpLYgQjW9UtCD4QOv7GYOoSUWJokERUfGBDxRBQw/SMP19hxGs7K6JZiGBD4bZ33y/38zOzM7KOOcsHoiLEPEZJJpPc3Nz0sDAQBbxjngvwfcsXBsfH2eRcpsgSk9Pj214ePjX6OhoyO/386WlJb68vCzAd7ThGmpQiz5jY2NMj2iCKJ2dnS+HhoZ+z83N8Z2dHX5+fs5DoZD4e3Z2JrjahhrUog/6QoMCMjUiDWKiX/aJfuHF5uamMDk9PeXHx8e6oAa16IO+0IDWyMgIu04kQRDCtbi4yA8ODoTB0dFRVKAP+kIDWtCkUWJXuSmIqaOjw7GwsMBPTk744eHhnYAGtKAJ7cHBQXaJXhClqanpVV9f38X29jbf39+PCdCCJrTh0d/fz4BekMTu7m7/6uoq39vbiynQhDY8KBQDWkGUxsZG+9TUFN/d3TUEaMNDbgeaQRLb2to8wWBQDKURQBsecuTVg9hstoddXV1/sey2trYMAdrwkF6qQZSysrLXtLb5xsaGocADXvBUC5JQWVn5eWJigq+vrxsKPKqqqr7AUy2ImYJ883q9fG1tzVDgAS94qgVJKi8vL/F4PHxlZcVQ4AEveKoGKS0t/UrPBjGzjQQe8NIKYi4qKrLTTBaPdCOBB7y0bk1CZmZmBm3BYTwX8KAyAmjDA15ak1UhLG632zc5OckDgYAhQBse8NJavvgkFxYWfqDDDJ+fnzcEaMMDXg0NDZpbvJl4TDM6gE0Hp6xYAk1owwNe9fX12g89IiU/P/9NbW1tGMM4OzsbE6AFTWjDA151dXX6xwDiEc3qEjrI8JmZGXEovgvQgBY0oQ2PmpoaBnQPRsQ9Ir24uPhne3u72JJ9Pt+tQF9oQAuaUluprq5m4MajInGfyCgoKPhBszzc29vLp6eno4IOPlghYWhAS2qaaHtnl0R0eJYd07Ozs9/SThhsaWnhdLwT9xsHHDVwDTWoRZ+cnJxcORIiBAVjV4n4dUIOJe7rs7y8vI9Op9Prcrn+0NLjra2t/4E2XEMNaqnPcyJVapgqKirYdaJ6wZITGDPdSjy1WCwv7HZ7rsPhcBLfJU60Wa3WLNTI2hTZV6Fly9S41SunFE0mHshRSiOeSNJkm0XWiAA0QkyPO72Ey1AJcgNMkphlmxKNUNz9W+Ifu9qUIf+T8EoAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-disabled-bezel.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABCRJREFUeNrsWElLW1EUfi9DY4yCimgcUBtUuihtN666iYlBA6LYLOoPcOO09SeI2J0TKKIiCC1oF7oJiaXdZOFGbG2xZKGxzvMYM+f1fOl7ksQk5mkCLnrhkDfd833vO+eee15YjuOYpzDY/0TiEWFZNulJ09PTsvz8/FI6LCOT8JeDZH+Oj4+3S0pK/Mn60ul0oV+ZGNLz8/OvFArFW4lE8iI7O1uhUqluXwAv5HQ6Gblc7vH7/b89Ho+tqanpx+LiIpcqRdi5ubkKAm0lFSoKCwuZnJyc0POYGz5fuHZ+fs4cHBwwpI6DyH00mUwOq9Uak1BdXV1SRKCCnlR4V11dLSUiDL0tEwgEEr6dVCplZDIZiDB2uz1A6nwmdb5YLJY7ZAwGw71EQOJ9eXl5LVSA42AwKCoBKYQh4lBnc3PzK5H5ZDabI8jU19f/ezZeOGZnZ3VlZWW1paWlIZJQQQhFsoY5mAsf8AWfDQ0NbPgzt6RjkZiamqrMyMgw5eXlMV6vN6TEYww+4As+4dtoNLLCPWHEWjUSSkZTZWWlFLEWG45EeQOfFCoTnX4gNSISLVoRdnJy8jUl5fOsrCzRobjP4BO+gdHY2MgmUkRCy1Sbm5ubMiWiB3wDgw6/E0YgJpHm5mYlFaSqzMzMtBGBb2AAi1S6jkWE1Wq1GmIric7oVA9gAKulpWWV44EiiFDhUhPbtKkhDGDQCiqiw5/YHaKJIHFVWPfpJsJvBZk8ZvBOjlABCmXyfSX8sYPHiCjlEUSo8Lh9Pl/aFQEGsOISOTk52b+5uUk7EWAAKx6R4MLCwibtshxkE9MoiRlYJBcXFxywhPyIJsKtrq66qH/YuLy81FDjkxYiV1dXaKA2gCWsmDtEkK9bW1tLarUa9SQtRI6OjhhgAGtiYoKLt9cE+vr6VnZ3d7cohinfa+ATvoEBrER7Ddatm2QzU3Fro6LDkqVECbfbzTgcDoTfjFNghVfvaCK44xsbG7PTLmmhHqK+uLg41Gk9tm4cHh6CiAW+gTE6OsqFKxILAXddvb2939bW1pZ2dnYYl8v14HBgLnzAF3zCNzCi97N4PStOnpFl9fT0aKlvNVCrx6LLEjPOzs7Qq3Jk1v7+fpDAbusdGRm5ZdDe3n5/88yTUbW2tlbV1NQYCwoKikAGSzteuCA3lujp6SnCsbe8vGyemZlBOJwgMTw8HLGtd3R0JPc5weeREtbW1vZSo9G8oU4LHZxcqVRGPIwwXF9f+8g21tfXV8bHx3+hkPLh8A8NDd3pLTo7O5P/wOJzSU6mgFGXpdTr9UXUnavDPzm3t7f3bTbb/t7eHsA9vPlwb3BwMGaD09XVJfrbVyAEhaT8r4S/Lqw4JLqfLwP4DQ4MDCTssLq7ux/+Ec6DszFWXZAnxInZe57U3xJ/BRgARVYyv4nD3moAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-disabled-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGhJREFUeNpiVFNTE+Dk5IxiY2PT/vXr19Xv378vYxEVFU2QkpLS5OHhYfj69av+06dPOVmkpaWV5OXlGYCqGYCqGBgZGZWYgCrugQRYWFjAEiA+05cvXxb9+PHj6p8/fxhANJA/HyDAALRmJzIlcakAAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/slider-circular-knob.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUCB1jUFNTk9bX199oamr6E0SD+AzW1ta7QkND/ycmJv4PCwv7D+QfYAAyPpeWlv6vq6v7D6LDw8N/MiQlJe0CCTQ1NYElkpOTwSrlysrKtoMkQDRQpRwAeJEtgtzX+HUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/spinner.gif +Content-Transfer-Encoding:base64 + +R0lGODlhEAAQAPQAAO7u7gAAAODg4IGBgdHR0UFBQXJycgAAAFJSUiEhIaGhobKyshISEpKSkgMDAzIyMmFhYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAAKAAEALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQACgACACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQACgADACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkEAAoABAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkEAAoABQAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkEAAoABgAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAAKAAcALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkEAAoACAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAAKAAkALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQACgAKACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQACgALACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-ascending.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAYAAAArzdW1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAK1JREFUeNpi/P//PwMhwITG59DX1+8B0bgUseTl5YUyMzMXJwMBkM+KTZHAvXv36kVFRRlevHhRCuQLoStiLS8vj/7z54+yoKAgw79//+QLCgoSYKbBFAleuXKlhJeXl4GDg4OBh4eH4datW3lAE8VgiliBbkkB6pYBKWBiYgIrBAKp9vZ2kNvYWEBuefv2rZ+qquoXfn5+TkZGRgZQsACt/f7u3TtvoPx0gAADAHykNUXFhlgVAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-descending.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAYAAAArzdW1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANdJREFUeNpi/P//P4+JicnuX79+WTAyMjLAAFCcgY2N7cSZM2dcWYB8/rKysiOLFi2yYGVlhSv6/fs3Q0JCwkGQPEjRj7CwsOsXL1789OzZMz6Qaf/+/WOQl5d/HxISchMkzwQkPgLxBR8fn30g3SAAUgTk7wYyz4PkQYr+APEDS0vLjcrKyu///v3LoKam9sbU1HQzUPwhSJ4J6gSYabu/f//+39/ffzuQfxGIP8F9AcWCQBy2cuXKtUA6GIj5YXKMIAIKmIFYFoglgPgZED8BOQ8kARBgAHkkbCsrrUGyAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-highlighted-pressed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADtJREFUeNo8i8sNACAMQpH9p6oTGb2oB7Sx9kD4vFDMKufalEQAxHVB2SVEvvIczPfHlZ/fnY3ejgADAPV/LBeRV6LeAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-highlighted.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACtJREFUeNpi/vT5C9OPHz+Z/v//z8TAwACmYRiZz8AAonHLo/M/fngHEGAAmHc1lNgXMmwAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview-pressed.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiOHPmDBMDAwPT////cdIwjIuPRT3LkydPAAIMAGirLBgXU933AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableview-headerview.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAXCAIAAABF+LJYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNocw4kNwCAMADHd/qtlF74QfqgaS+a9x//e68857L1Za/k5J2MMeu+01jAzaq2oqi+lkHMmpeRjjIQQEJFPgAEAIdRCSGGFwR8AAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/tableviewselection.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAZCAIAAAB/8tMoAAAACXBIWXMAAAsTAAALEwEAmpwYAAAPU2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarVd5NNT/17+f2W2DsWYda7KF7LLvawyyFY2ZsTVmxhhEZElJaeGbRKlot6QokZISlbRIUigVXy1oQSIxvz/0/X6f5/c7z3nOc85z/3if1/ue+7r3de95n3PPG0CcTOVwmCgAiGfxuBRXB3JwSCgZ/xKwIAwSYAFaVFoix97X1wv+R5t9DggAQK8elcNhwv/NiNzgkFAARBcAJKOXsR0ASEYu4wAAkEzhcXgASAwASNJiqHQAJB0AdLkBFEcA5BwAEKOXcRMAECOX8T0AICbTonkAyAsAHIlFj2UB4CcAcDZ0RiINgKgLAHR6Ii0egHgAAOUQH8+mA4g9AwAtGofLAxD7BQDqwSGh5GXJUWgAywcAuMF/fJvnAOryAVSm//GpDwBIdQJUBf3jm6YAAgCI9OPEqDVGAACACDsAYF/z+dOaAPgigMVCPn+hks9fPAmAHgJoY9KSuMm/54UgDwH+t/tyz78NjQCgAEAZ4mEEiUAmUaXoEIw2VhqHxksSrAUYgieEJkUciEdFf4mzSeOSVKlJmSjZablUBYziQWV58nFVfbUWDVvNdi33Va06rrot+sqrSwzRRlvWPDUxNS03m7Zwsiy2+mRtY5Nie8UecbBzDHc65PzA5bObkLu2h4snzSvTu8Sned1bPxRlpb9XwObAnesrgm4G94dMh63YYLjRMZwakb6piHo68irtAX2AMR61ECMQKxGnsFmFqRm/mmXENueYJVhwjRJ1eKuSVJJlUyS3CG5ZTP2cNrj1fvrVjPPbDmZmZsVle+eYblfOFcz9uqNn55W8g7u259N3O+9RK0AVfNw7um/hgEKhadG6P8IPJhXvPlRT0nK4p3So7MtRgXLZY+rHTU64VARUhp+MOZVyeuuZvLMHzu05v7+qsLqopqi2/EJpXdHFgku59Vsbki4nXKE1rr/q1WTXbHRNrYXUsnR94sZAa+vNi22Hbm27Hd3uf2dth2aneOf83eF7LfdPd+1+wOsOeqj3cPZR9eONT8SetPewnyo/7evNebb62eu+gudWz8f7S194vFh4eXYgeFBwsHmI8UrqVffr1OFVw2/eHHhr93bq3dmR0FHiaOef28ZMxiben/5A/6j2cfBT2Xj4hNrE6GTN55Qvjl+JXz98a5o6MM2e8ftuMavzQ2dOb972Z8xC1SJxqYnPBwAxMAce3EbIyC6EjypCm6InMDewR3H78YcItQK9QmhhT5FC4hsxa/EjEjjJzVIPZcxla+Xk5NMVRpTslM+oiKjGqHVrGGjmrRxapaXN1WnXk9QPWF1sMGSktibY+KTJgBmYW1okW1ZY3Vs7ZaNi62sXbV/kUOd4z2nEeclVzs3M3deD4cnzyvIu8Dm+rt63ze8B5bn/WMBU4Oz6pWCREFKoRJjCBpWNCuHyEfKb5KnKkXI0KboEQyAKouajP8e8i30R1735OrMmvpy1j53FSUyI5volOvEMk5SShZPnU0a3PE29kXZ2a3H6jozYbRsyXbIMs+Vy0DmT24dy+3YM7/ya9ysfu1twj3iB4l7dfSb7bQ7YFboXhf1BPUgv5hzaWrLj8J7S/WUnjlQcrStvOdZx/NGJ5xWvKkdOTpz6eQZ9lnCOeF62SqvauMa61v0CpS74IuNSUn16Q+7lfVfKGquv3mi63dx97V3L2PXZVsJNUpvCLe3bVu1+dxgd3M70u1vv0e47dql0LT7o6b7wMO8R7bHtE+knH3ran5b3cp459cn1fXne1l/yIu6lzQBp4NXgpaG8VxGvjYfxw+/eXH675x11xGxUePTDn51jp99nf9j4ce0n8jh2fHKie7Lxc+WXgq9bvsVMhU77zrh/t5+1/GEyZzJv/nPtgvUvl0XfJSrfg88HACIYAA3OwjzijzSjdFDn0UboDgwdK4K9g8vE2xMECW8FrguWCWUJs0ToxA2i68UCxSmkYImNklSpOOlUmTzZwhXlcvXytxQ6FfuVPil/I8+pImpC6gQNkqboSmEtuVUC2hgdRGdad0JvSP/+6kaDcsMsI8YaR2N9E4LJO9M2swrzXAu6pYOVvNX3tX3WjTYHbVl2bvY6DojDkON1p6POKS4+rnpuQm5j7m0epZ4cLxdvBe9ZnwfrTvhu8fOgqFNm/e8HHAtMWO8QRAoaDW4IyQr1D1MMe7/h8sbscL8I5YgPmy5SUyOdaaK0l/STDGaUYdT36OaYzFifOIm4/s3lzNh47fivrCb2No5XAilhgHs6kcWzSRJIepZcmcLaYp6KSe1JK98an26dIZIxtK06My2Lkq2aPZNzb/vR3OQdrjsVds7kde+qzE/dTdmjXYAqGNjbsK94P/uAWyG5cL7o+R9NB4uLuYc8SlYexhweLr1RduxI0tGgcpNjksfhBKpCuJJ0UvKUzGn5M8pnlc/Jn5etkqqWrJGolbwgVSd7Uf6SfL1Ug8xl5StajXpX9ZqMmx2u+bVQryfe2NlafvNu2/CthXb1Ox4daZ2X7n68r9616UFl99wj/8cXe8SepvRO9+X3S7xoGEgYWvNqcXjhHWbUdaz6o+WE5Ze9003zdXw+wPLuAwDAmQIcjgAIUQTwcwUoWAuw0hxAahOArwhAgAWg9CUB+X4bEIf9f++PFWAJoZAO5XALRhAMooV4IRzkINKMDKNwKH1UICoDdRr1BDWPVkP7oTPQVeiXGALGHBODKcM8wqKx5th47EnsIE4K54vbg7uLJ+Bd8TvwdwkihPWEMsKIgJ4AT+COoJQgXbBBCC8UIdQkTBKOF74noiGyR2SaGES8JqohWi4mLLZV7Ks4S3ySFE/6KsGTmJfcLiUsdUBaRvqUjL7MNVlP2eEVyXKCcqfk7eVfKnAUJRSblUKUfimfIq8jL6lUqW5UI6l1qGdomGv80Gxemanlskpo1UvtUzqpuh56WvpY/eHVHQbnDHcbpaxhGG8w8TddZ+Zs7mLhbuljtWltrHWKTY5thV2z/ZDDZyeSs4VLtGuRW5X7aY8Dntlead4cn+R1Cb4JfgwKy58dkBlYsH5vUEnwhZDboT1hYxv44UoR1puCqDmRlbT7DHSUYTQ9piy2dzMwHeJ3sZ5w5BNiuVcSl5I2JTduEUllpT1JN8k4mSmetS2bv52ZO7kzPm8iP2b3lwLO3rn9uYVaRfUHPYv7SraVuh4JKGce31Fx9eTjM5hz5lUJNacvjFxa0RB15djV99fWXk9sfXxLpJ3acfUe0hXSffzReI91b35fywvSgN9Q9us7b6ZGZP50e0/5mDy+bTLjS9K30GnlmbHZ0jnd+bMLAr8oi+FLWXw+ABhCFByCDviGKCHuCA85jnQhsygyyguVhjqLeoZGo43QVHQRugM9j9HDbMIcwjzE4rEO2AzsdexPnAUuFXcDD3gnfD7+KUGBEENoEhAQCBWoFlgSDBK8JCQkxBC6JawhnC38TsRT5BqRTMwjzorGir4S8xPrELcUv0EyIV2RsJK4Jekm2SMVJjUmnSSDlzkmay77fAVHTkiuSt5bfkahTNFGcVzpmLKn8hz5okqcqrLqoFqFeqTGSo0JzYsrs7TWrVJc9UP7kc4Z3V16Ufquqw0M5AxxhjNGI2ueGrebtJleNmswb7Cot2y2al3baf3M5o3tJ3uMA9FxpZON8waXNNcSt1r3eo8qz2qvOu9mn7vrenz7/YYp3wKQQKX1ekHmwYEhvND8sMoNNze+jcBtUqJ6RsbR9tIbGEPR+BjT2Ki40s23mVMsbTaNU57wMBF4VknJyZdSplLN0xK21qb/2GabuTPrQY7Idp/cih1Tefq7duf371Eq4O59sJ98ILHw9h+iByOLb5eoHC4rszsyXl52PKJCqrL3VMEZ73Pq599X19UW1G26ZNagcHmmcaip+drl6+Wt2W3022F31nYa3yN3SXSLPJx7PNzT0dvYd65/z0vmoMcrm2HpN1Pvno3WjuV8WP9JaXx8suVL3jfvaeJM12zxnPdPkYXriyw+HwAsIAWuwAyyBklA6pEZlAlqC+oGGoV2Re9FP8coY5iYJiwOG4Q9j13A+eBO4/j4YPxFghghkfBUwFigXBAvyBUcFgoQuiNsLdwkoivSQDQmXhV1FH0gFi42Lb6bpEvqlkiWlJXsksqQNpB+K1MiS1khuaJfrlg+REFNYUrxmlKhMo28RkVIZUK1U+2Uep4GWzNspZeWzSp9bR0dVV01PSV9rdV6BmaGbkZha9jG+03Omj42+2GhbOlqlbi21nrMVslug/0Rh2EnXedMl2ducu48j14vDe99PhO+FL8a/xUBGYEfgtyDm0NVw4o2EsLTIqapUZEDdH/G42ifmJtxTptb4+1YjRy7hLZEW97dZJ+U3tSItE/pqRlzmXnZ8jn1ua47HufRds3vPlpgtPfZfm6hcNG1g5TixZKjpaSy5COD5b7Hbp0wrTh/UulU5RnNs1Xn9asaasxqr9fZXeyod294e4XbONuU1rzY8scNjdZzbdq3atr179R1GtytuU/sKugWesh9NPLEr+diL/EZs+9+v8aLrJfPB2WHgl8dft3/Ruot5V3eyIXR9j8Hx/gfpD6qfVIdV5lQnlT8vOLz4pfXX1u/lU/FTBtOT89c+h4/S57t+5E0Jzx3at54/uZPz59dCxYL537J/Er/dW9RajFy8cLiwpLr0oGll3w1PpPfyOcDLP+XAABA0JHNZHPJXo5O8P9r8cykv2qQAECYFemz7jf+wOH5BgCANAD8TEz2dwYAMQBELCrWxf03JtOpTp4AoACAGKTFOPoAgDAA4hXFdaEsc5HgOKqHLwAQARAWgxXov5wfSecwfb1+430cngMFAGQBkBOMROe/YprSYgKCfnO7uEmUQABQB0BebGZ7Un7X+kVnOP3WhiKwmD5ey3VRsrE89wAAkARA6YMLUIEL0cAAPfACR3D6fZKBCmRwBDZwgQGJ4AKjwIXov6PWwyhwIfbfWHoQBVTgQjIwIBE2wxhwIT4iNocL5H/LTgM2JAETGJAEXINqg48Gv/6OcQQ2MIEN/7A8/8PzV55/YmOBDuz/lp8JbOBGxOZw4+ujkg+zUy3Xx2A0MUYYE4wDxhpjg7EAMkYaIwd6GGOMOcYeY4uxwphgLB5NXJ34u87yfCL/7tPzL83AANZ/zIz2X9TA8v8dAAAnBnA0HwCg/dK5/3hrPMYWHgCAI5uTyo2NjuGR7TkcJkOX7M6i6euSjQwMLOBf/0ZN7hNwtO8AAAAgY0hSTQAAbZgAAHOOAADi5AAAhvsAAHXhAADNcwAAMq0AABrd66B7UwAAAD9JREFUeNpUirENgDAQxKLrKCiYi72Yjo3y9tOkIJVl2eN+3lznkTkr2ilcJEXH5eCvGTXYAUIZNNDR/QO+AQD8FEZFeDuoxQAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAIAAACOpGH9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1jWLRqJ8OFq3cYPnz8zPD//3+qYKBZAMWVP/kpEKROAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-focused-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAYAAADtlXTHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADdJREFUCB1jWHjqkTwDkIgHEftAxH+GRat3/Wc4f/XOf4Z3Hz79Z/jz9x+NCLDxYCthloOdoQAAdj5sTxjpYWAAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-focused-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAAeCAYAAADKO/UvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApdJREFUSMed1UtPE1EYBuAaMS7QhMiCxhjdqBtxqT/AG0tNcGGicaEu5EeoS9l7CySmBakhphIjJRHkqlQoNG2RAikU7CW2tbYULKD09vqe4TQ0k+l1kmc575zvnG++o+uaCejKOEAH6TAdpUbS0wk6SafKvXyIjlATnaWLdJVu0C26Q3eLBdRRvfzieWqh+/SEXlIv9dMQjWgFiK830Gm6RG30nMYpTFDTCjhG56iVntIXShu+raFjYBYd5jG8No/A0PsJXe8G0U3qEhpkwG3qpIBx2odOiw1v3g/j46AVo5MOTNkXYJ/zwOlegWvBi8JNrJcltMqAmMHqhaFvHAPD05hxLsGzGkQwFMWv3wnEE5tIbCSxsZlEYRl6uQeiBL8IMH0Yx8SUS3k5Gksgub2D3VQKmUwWuVwOOew9+RCximZ6SBNGmx89/V9hnXXDF4zgT3Ib6XRGeVHr0clGapLn/4xSxiGHsgIRsLX9F5lsFtqv74eITjxD92jUOPUDlhEbPN6AsgIRUO7RyVa+QI/oZ9eYGzbHkrJ5SgllI/ZCRF9coReiccyjDmUVya2donugFSL24zqZRMiQdU45xn+7qYoC8iHH6Sb1iZBJ+6JSijjGmkNsLg9i65vIVliKupy3IsTqXK4ppLFwYz/PemoqJ3/Ejylknl5RNla0dzUhhc021m3zYdEbrPqI821/TbZ92mJfVX64apqt8Ads2xtCfjg8waraXj0K2sUw6pnxYdkfrvgHLDaU4iYGza+FKxoF6vHYXDgeu1na8HwAoej6/lDKag8l9aBull3cLgd1podhg98DcK1F4A3FNcdjsSvjstxs0YgTFKnkyih1eT2Ql9creXlZSl1eWteovpZrVB1WV+pC/w9TNVqlMEGHagAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-focused-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAABEAAAAeCAYAAADKO/UvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoFJREFUSMellUtPU1EQx0uAsEASIgubaHRj3IhbPwBG3ZpgjInGDW78FC71AygEEtMWITaGGiIlsdgioKVP+5CHaS21D9PW2lJqLUb6GP9Tz60V6eWWnuR3d/eXmTlzZlQ6Z+wMOA1OATUYAH2gB3SCDqCSgz93wG1wE1wDl8FFcA6cAMdAt5yMPxawAOaAHoyC+2AEXAUXRIS9oKuZhA4gCZbAI3APDIGzoF9E9a9k8rmJdECjf0VPZiw0PvOGxuddpFkNs6wEVsADMAzOg+P7RSrfRoi865/I7Q+Qzb1Bi+889NJkpacGM00YHaS1R1gWAxPglhD1N6am2skXKLdToGwuT1+/5SieSFNgK05O70eaN9tJ82KJNNYQizJCNCxS65WKrSKcKlOtUrlcoV97e1Qo7lI6k6vJlm0+mp6ti6IitSFR7O66ZP9hYalUpu+FIkXiKbK61mlq7i1pHVEWLYtiD4rr7zhQIkVXrlToR/FnTcQRaRc8UrH51q6IPupsKpEOizgiTs1oQaFtn0lc/4hoyJ5DJRwRp8Y14mLrLH6WpERDcmf3HSqRasTFDiIaw6JHasgx8UQGFEn48K19wfWbV/2SRC/emlqxhGvDKdneb0qSWXADnFQsqSClzHaenOjstiVWb1CSPGs9HXQzP4vXrnoko0curMEelEbF0a54MxSnSUekvWYzurfaa3tPAFE4aw9w5UgPMBhN0pSzPpwetjwK1sJJmv4jyCobSpW/QymR3ibzWkxKoXE8DsqOx1AiS75wikwfYgi/9nNZ1IBTuC4E/w/qJisjJSbYY1HES7Iro2F5GcXLHBONdLeV5SW3RtVK16jcQu9SstB/A7wYWu6etp7HAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-left.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA0AAAAWCAYAAAAb+hYkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdFJREFUOMuVlNtLAlEQxucp6CnoKQj6w4L+gKC3iqR66E5IN6Ky6EZKmYaR0c2yoMjMXNJASbtApUTZxbVVS9t1mnPKiDJcB/bt/M7MfOf7FmpbRiD71bXqoKF9DJq7J6FzwFDaN2quHplesk7MrgjT8+vyjNmGevq+gXoCGrvGoaPfUDw4YdEYFjbFZZsDd/aP0Sn4UTgJosd3jl7/xSdU3zbKb9cOG8umjOuuVfshHnlOMXgZwtBtBO8fovgUjWFUlFCMScg7MKBHZyqftWxd7zq9/HDkMYpSIompdBplWcFMJoMZ/Cw+knbIWESAy+H24VXoDl+kBL6/y/xgroL2fj3QSBrWgQHxxCvKioK5j39BtHTJqt35FLy44R0YkK+AJKx0HZ/yZflImL/AuuGwsi5SPPnvDn8geocAk/UtlUa1BQeCX2SjMVlVQ25vQHx8jqGicrQsFCgYovGsBY9HQlQxIZhdVEMkeQl5TSxIcv2CDcjRGmZQ1Y9LNgKKQhF1E1TbiELHDAt7zpPy6/BdWJVheTSGjTC3aIcDt6+CQFfeaGRD2KszcZA6FtOoTbSj+B1C5VcIf8Ud6AcCa9uHTJzSs8tQTfg2skIXeH7G/QMDueJzvPRB+QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-rounded-right.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAA0AAAAWCAYAAAAb+hYkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUOMudlNtLAlEQxs9T4FPgUyD0/wm9VRTVQ3ciuhGlRlakmF0oMjSxrCgyNS0VrLQLFEp00VzbLNRdp5kto6Jy7cDZp/3tN/PNfMsM8w6Yxjs1axf0JqtfM7VsGdDNq7uGjMqWngnW0DHG6tq0rLZVI10AYCx4dA6B8Bn4Q1Fw+49gc/cQVhwuMC6sccP6xcbOQaOiqXuc1b+DEsSleUhxPCRTabi9T0Hs+g6iFzHYD5yAzemBSbPd2ztqriLV+nbdG4QPKNAtFEAQRMjmcsBnnuEukZLgbXcQTIvrV33aORWBH9D3Qx/I5wV45DNwGbsBly9MoLd3xFzxK1RUF0QRnjIvEkiKWGrjn1DxEEiKVKrN6U6iOZUlIVKkUqlHMsew4FCXhIo9kjmnqIbjsMiC6JCrcRzHlisQlw1Rb1Si5+A4KxsSscTEQ5o2hy8b8gUjEfnl4bbQmuF+/suI8izHAXNoednDLXuN/BgVheyFvYrfxHfcIRUurLxoIODd84WrZ5acDMP4QwjFLyHksKRmVFAQ0K+dYx8h/Bx3fDGAtlpxMWuwaeXqhofhD0dS+Bz3V7HA8uslKDy0AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAADCAIAAAA2iEnWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABxJREFUCB1jmTNnDicnJ4uMjIywsDALEEtKSgIALM0DDeT4y3sAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAIAAADdv/LVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABRJREFUCB1jWLVqFZOWlhbDx48fARyiBVLivNzsAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAADCAIAAAA2iEnWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1jWrp06Zw5c5jU1NRkZGSYJCUlhYWFAUybBRTduo1wAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAIAAAB7QOjdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1juHLlysePHwESGQVQhb5n0gAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1j+P//PwAF/gL+n8otEwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAIAAAB7QOjdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUCB1j/Pjx4+PHjwETfwV+HAwP5QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCB1jvHLliqysLOPp06clJSUBLX0FglncIWUAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAIAAAAW4yFwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABBJREFUCB1j+P//P9OnT58AF6oF1hwiRUMAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUCB1j/vjxY0xMDHNOTs779+8BN9MH/68NXLgAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-0.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHCAYAAAArkDztAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGZJREFUCB0FwcsJg0AUAMAJ+9YPgUV4IIhevHizBhtIk2kjJeSYEtJGLpmJ5/t7Q0HFgA41UHDHhBmJFqiYsOPEgTUwYMaJBy70gQ6JA9fv8+rHcRSoaFjRb9smMwUKBjTITMuy+AM42wji1WBJjgAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-1.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAHCAYAAADJTCeUAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACZJREFUCB1jXnjqkTxzYGqhP4joBRELmaNcLRuY6+vrG5jb29sbAOK+DN7MoThrAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-2.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHCAYAAAArkDztAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAG9JREFUCB0FwbEKgmAYAMCDPrHJXWp27AFa2trber0eJdpa23QIhAaDH0IQS4m6i9O1XWPGhDdmfANb9Eh44oUhcMQDNW64Ywoc8MEZMKCPaC7GccyzzX6HGg3aqKpKSklHjhUKZFGWJeh+oMASiz+A7SOInCfK3QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-3.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB5JREFUCB1jWHjqkQIQxwPxfiD+f+XKlf8fP378DwDW+RK/bGv6kwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-4.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxJREFUCB1j+P//PwAF/gL+n8otEwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-5.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB1JREFUCB1j+Pjx4/8rV678X3jqEQjvB+J4IFYAAP2REr8fi4n2AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-6.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUCFtjWHjqkTgQewDxZCD+cfr06f9Pnjz5zwDkCAKxKRDnAvFOkCQQgyU4gVgeiB2gkiCd60ASLEDMD5U0hRobBpJghEpyQo0F2SkDAHWKUDJqcdSvAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-7.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAYAAACEhIafAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABpJREFUCB1j+Pjx43+GhacegYk9IFYciJAHAM/uDz+C0SZ2AAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/textfield-bezel-square-focused-8.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAYAAAAFCAYAAABmWJ3mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUCFtjePLkyf/Tp0//X3jq0Q8gngzEHkAszgAkYII7gTgXiE2BWBAksQ6qEiToAMTyQMwJkgiDajeFCvIDMQtIQgZkJkg7SCVIEIgZAdauUDJ/hcSRAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAERJREFUCB1j2rx58//Tp0//v379OpgG8Zn+////C4gZkPBfpl+/fh38/fs3AxI+wvT58+eUjx8/7vjw4QMDiP706VMcAOlpQfMaZOfrAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAIAAACZnPOkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUCB1j3rx5cxEYJCQk+Pn5AQA+dAbTLdUgHwAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-disabled-bottom.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAExJREFUeNpMxbsNgDAMBcCH6wzg1amQWCGzUMEAKf1JZSMCdClOt9RaV2ZGKQW9d7TWQGOM+4PJQxFxZiYmF7n7rqqHiODfzLZXgAEAth07HqinDKIAAAAASUVORK5CYII= +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-disabled-center.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi3Lx580wJCQkGHh4ehi9fvjC8ePGCASDAAFQeCLRojHkfAAAAAElFTkSuQmCC +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-disabled-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpirKysFODi4opiZmbW/vv379Vv374tYxEWFk4QEhLSZGdnZ/j586f+u3fvOEGCquLi4gxA1QxAVQyMjIwqLLy8vCz8/PwMPDw8DKysrAzfv39nYmJjYwNzkDETUDkDOgYIMABjBxggiQuq/QAAAABJRU5ErkJggg== +--_ANY_STRING_WILL_DO_AS_A_SEPARATOR +Content-Location:Resources/vertical-track-top.png +Content-Transfer-Encoding:base64 + +iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUCB1jqqyslG5ubt7Y1tb2E0SD+EzCwsLzpaWl/eTl5dlANJC/FCRoLyEhwQAUYADRQL4NEy8vLxs/Pz+DoKAgA4jm4+NjZmJjY2NgZWVFwUyMjIwM6BgAhF0QgRCnPUsAAAAASUVORK5CYII= +*/ ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLPaths.txt @@ -0,0 +1,1 @@ +@STATIC;1.0;u;25;Resources/alert-error.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/alert-error.pngu;24;Resources/alert-info.png64;mhtml:Browser.environment/MHTMLData.txt!Resources/alert-info.pngu;27;Resources/alert-warning.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/alert-warning.pngu;33;Resources/button-bezel-center.png73;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-center.pngu;42;Resources/button-bezel-disabled-center.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-disabled-center.pngu;40;Resources/button-bezel-disabled-left.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-disabled-left.pngu;41;Resources/button-bezel-disabled-right.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-disabled-right.pngu;45;Resources/button-bezel-highlighted-center.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-highlighted-center.pngu;43;Resources/button-bezel-highlighted-left.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-highlighted-left.pngu;44;Resources/button-bezel-highlighted-right.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-highlighted-right.pngu;31;Resources/button-bezel-left.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-left.pngu;32;Resources/button-bezel-right.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/button-bezel-right.pngu;29;Resources/buttonbar-bezel.png69;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-bezel.pngu;43;Resources/buttonbar-button-bezel-center.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-center.pngu;52;Resources/buttonbar-button-bezel-disabled-center.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-disabled-center.pngu;50;Resources/buttonbar-button-bezel-disabled-left.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-disabled-left.pngu;51;Resources/buttonbar-button-bezel-disabled-right.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-disabled-right.pngu;55;Resources/buttonbar-button-bezel-highlighted-center.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-highlighted-center.pngu;53;Resources/buttonbar-button-bezel-highlighted-left.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-highlighted-left.pngu;54;Resources/buttonbar-button-bezel-highlighted-right.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-highlighted-right.pngu;41;Resources/buttonbar-button-bezel-left.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-left.pngu;42;Resources/buttonbar-button-bezel-right.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-button-bezel-right.pngu;38;Resources/buttonbar-resize-control.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/buttonbar-resize-control.pngu;38;Resources/check-box-image-disabled.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-disabled.pngu;41;Resources/check-box-image-highlighted.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-highlighted.pngu;44;Resources/check-box-image-mixed-disabled.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-mixed-disabled.pngu;47;Resources/check-box-image-mixed-highlighted.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-mixed-highlighted.pngu;35;Resources/check-box-image-mixed.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-mixed.pngu;47;Resources/check-box-image-selected-disabled.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-selected-disabled.pngu;50;Resources/check-box-image-selected-highlighted.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-selected-highlighted.pngu;38;Resources/check-box-image-selected.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image-selected.pngu;29;Resources/check-box-image.png69;mhtml:Browser.environment/MHTMLData.txt!Resources/check-box-image.pngu;41;Resources/default-button-bezel-center.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-center.pngu;50;Resources/default-button-bezel-disabled-center.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-disabled-center.pngu;48;Resources/default-button-bezel-disabled-left.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-disabled-left.pngu;49;Resources/default-button-bezel-disabled-right.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-disabled-right.pngu;53;Resources/default-button-bezel-highlighted-center.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-highlighted-center.pngu;51;Resources/default-button-bezel-highlighted-left.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-highlighted-left.pngu;52;Resources/default-button-bezel-highlighted-right.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-highlighted-right.pngu;39;Resources/default-button-bezel-left.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-left.pngu;40;Resources/default-button-bezel-right.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/default-button-bezel-right.pngu;37;Resources/horizontal-track-center.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-center.pngu;46;Resources/horizontal-track-disabled-center.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-disabled-center.pngu;44;Resources/horizontal-track-disabled-left.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-disabled-left.pngu;45;Resources/horizontal-track-disabled-right.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-disabled-right.pngu;35;Resources/horizontal-track-left.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-left.pngu;36;Resources/horizontal-track-right.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/horizontal-track-right.pngu;37;Resources/HUD/button-bezel-center.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-center.pngu;46;Resources/HUD/button-bezel-disabled-center.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-disabled-center.pngu;44;Resources/HUD/button-bezel-disabled-left.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-disabled-left.pngu;45;Resources/HUD/button-bezel-disabled-right.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-disabled-right.pngu;49;Resources/HUD/button-bezel-highlighted-center.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-highlighted-center.pngu;47;Resources/HUD/button-bezel-highlighted-left.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-highlighted-left.pngu;48;Resources/HUD/button-bezel-highlighted-right.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-highlighted-right.pngu;35;Resources/HUD/button-bezel-left.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-left.pngu;36;Resources/HUD/button-bezel-right.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/button-bezel-right.pngu;45;Resources/HUD/default-button-bezel-center.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-center.pngu;54;Resources/HUD/default-button-bezel-disabled-center.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-disabled-center.pngu;52;Resources/HUD/default-button-bezel-disabled-left.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-disabled-left.pngu;53;Resources/HUD/default-button-bezel-disabled-right.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-disabled-right.pngu;57;Resources/HUD/default-button-bezel-highlighted-center.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-highlighted-center.pngu;55;Resources/HUD/default-button-bezel-highlighted-left.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-highlighted-left.pngu;56;Resources/HUD/default-button-bezel-highlighted-right.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-highlighted-right.pngu;43;Resources/HUD/default-button-bezel-left.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-left.pngu;44;Resources/HUD/default-button-bezel-right.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/default-button-bezel-right.pngu;41;Resources/HUD/horizontal-track-center.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-center.pngu;50;Resources/HUD/horizontal-track-disabled-center.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-disabled-center.pngu;48;Resources/HUD/horizontal-track-disabled-left.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-disabled-left.pngu;49;Resources/HUD/horizontal-track-disabled-right.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-disabled-right.pngu;39;Resources/HUD/horizontal-track-left.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-left.pngu;40;Resources/HUD/horizontal-track-right.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/horizontal-track-right.pngu;31;Resources/HUD/knob-disabled.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/knob-disabled.pngu;34;Resources/HUD/knob-highlighted.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/knob-highlighted.pngu;22;Resources/HUD/knob.png62;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/knob.pngu;46;Resources/HUD/scroller-down-arrow-disabled.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-down-arrow-disabled.pngu;49;Resources/HUD/scroller-down-arrow-highlighted.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-down-arrow-highlighted.pngu;37;Resources/HUD/scroller-down-arrow.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-down-arrow.pngu;49;Resources/HUD/scroller-horizontal-knob-center.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-knob-center.pngu;47;Resources/HUD/scroller-horizontal-knob-left.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-knob-left.pngu;48;Resources/HUD/scroller-horizontal-knob-right.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-knob-right.pngu;52;Resources/HUD/scroller-horizontal-track-disabled.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-track-disabled.pngu;43;Resources/HUD/scroller-horizontal-track.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-horizontal-track.pngu;46;Resources/HUD/scroller-left-arrow-disabled.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-left-arrow-disabled.pngu;49;Resources/HUD/scroller-left-arrow-highlighted.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-left-arrow-highlighted.pngu;37;Resources/HUD/scroller-left-arrow.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-left-arrow.pngu;47;Resources/HUD/scroller-right-arrow-disabled.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-right-arrow-disabled.pngu;50;Resources/HUD/scroller-right-arrow-highlighted.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-right-arrow-highlighted.pngu;38;Resources/HUD/scroller-right-arrow.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-right-arrow.pngu;44;Resources/HUD/scroller-up-arrow-disabled.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-up-arrow-disabled.pngu;47;Resources/HUD/scroller-up-arrow-highlighted.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-up-arrow-highlighted.pngu;35;Resources/HUD/scroller-up-arrow.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-up-arrow.pngu;47;Resources/HUD/scroller-vertical-knob-bottom.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-knob-bottom.pngu;47;Resources/HUD/scroller-vertical-knob-center.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-knob-center.pngu;44;Resources/HUD/scroller-vertical-knob-top.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-knob-top.pngu;50;Resources/HUD/scroller-vertical-track-disabled.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-track-disabled.pngu;41;Resources/HUD/scroller-vertical-track.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/scroller-vertical-track.pngu;48;Resources/HUD/segmented-control-bezel-center.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-center.pngu;57;Resources/HUD/segmented-control-bezel-disabled-center.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-center.pngu;58;Resources/HUD/segmented-control-bezel-disabled-divider.png98;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-divider.pngu;55;Resources/HUD/segmented-control-bezel-disabled-left.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-left.pngu;56;Resources/HUD/segmented-control-bezel-disabled-right.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-disabled-right.pngu;49;Resources/HUD/segmented-control-bezel-divider.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-divider.pngu;60;Resources/HUD/segmented-control-bezel-highlighted-center.png100;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-center.pngu;69;Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png109;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-center.pngu;70;Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png110;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.pngu;67;Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-left.pngu;73;Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png113;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.pngu;68;Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png108;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-disabled-right.pngu;61;Resources/HUD/segmented-control-bezel-highlighted-divider.png101;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-divider.pngu;58;Resources/HUD/segmented-control-bezel-highlighted-left.png98;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-left.pngu;59;Resources/HUD/segmented-control-bezel-highlighted-right.png99;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-highlighted-right.pngu;46;Resources/HUD/segmented-control-bezel-left.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-left.pngu;55;Resources/HUD/segmented-control-bezel-pushed-center.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-center.pngu;67;Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png107;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-highlighted-center.pngu;65;Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png105;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-highlighted-left.pngu;66;Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png106;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-highlighted-right.pngu;53;Resources/HUD/segmented-control-bezel-pushed-left.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-left.pngu;54;Resources/HUD/segmented-control-bezel-pushed-right.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-pushed-right.pngu;47;Resources/HUD/segmented-control-bezel-right.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/segmented-control-bezel-right.pngu;39;Resources/HUD/slider-circular-bezel.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-bezel.pngu;48;Resources/HUD/slider-circular-disabled-bezel.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-disabled-bezel.pngu;47;Resources/HUD/slider-circular-disabled-knob.png87;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-disabled-knob.pngu;38;Resources/HUD/slider-circular-knob.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/slider-circular-knob.pngu;39;Resources/HUD/vertical-track-bottom.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-bottom.pngu;39;Resources/HUD/vertical-track-center.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-center.pngu;48;Resources/HUD/vertical-track-disabled-bottom.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-disabled-bottom.pngu;48;Resources/HUD/vertical-track-disabled-center.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-disabled-center.pngu;45;Resources/HUD/vertical-track-disabled-top.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-disabled-top.pngu;36;Resources/HUD/vertical-track-top.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/HUD/vertical-track-top.pngu;27;Resources/knob-disabled.png67;mhtml:Browser.environment/MHTMLData.txt!Resources/knob-disabled.pngu;30;Resources/knob-highlighted.png70;mhtml:Browser.environment/MHTMLData.txt!Resources/knob-highlighted.pngu;18;Resources/knob.png58;mhtml:Browser.environment/MHTMLData.txt!Resources/knob.pngu;36;Resources/popup-arrows-pullsdown.png76;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-arrows-pullsdown.pngu;26;Resources/popup-arrows.png66;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-arrows.pngu;50;Resources/popup-bezel-disabled-right-pullsdown.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-disabled-right-pullsdown.pngu;40;Resources/popup-bezel-disabled-right.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-disabled-right.pngu;41;Resources/popup-bezel-right-pullsdown.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-right-pullsdown.pngu;31;Resources/popup-bezel-right.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/popup-bezel-right.pngu;34;Resources/radio-image-disabled.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-disabled.pngu;37;Resources/radio-image-highlighted.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-highlighted.pngu;43;Resources/radio-image-selected-disabled.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-selected-disabled.pngu;46;Resources/radio-image-selected-highlighted.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-selected-highlighted.pngu;34;Resources/radio-image-selected.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image-selected.pngu;25;Resources/radio-image.png65;mhtml:Browser.environment/MHTMLData.txt!Resources/radio-image.pngu;42;Resources/scroller-down-arrow-disabled.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-down-arrow-disabled.pngu;45;Resources/scroller-down-arrow-highlighted.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-down-arrow-highlighted.pngu;33;Resources/scroller-down-arrow.png73;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-down-arrow.pngu;45;Resources/scroller-horizontal-knob-center.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-center.pngu;54;Resources/scroller-horizontal-knob-disabled-center.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-disabled-center.pngu;52;Resources/scroller-horizontal-knob-disabled-left.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-disabled-left.pngu;53;Resources/scroller-horizontal-knob-disabled-right.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-disabled-right.pngu;43;Resources/scroller-horizontal-knob-left.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-left.pngu;44;Resources/scroller-horizontal-knob-right.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-knob-right.pngu;48;Resources/scroller-horizontal-track-disabled.png88;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-track-disabled.pngu;39;Resources/scroller-horizontal-track.png79;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-horizontal-track.pngu;42;Resources/scroller-left-arrow-disabled.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-left-arrow-disabled.pngu;45;Resources/scroller-left-arrow-highlighted.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-left-arrow-highlighted.pngu;33;Resources/scroller-left-arrow.png73;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-left-arrow.pngu;43;Resources/scroller-right-arrow-disabled.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-right-arrow-disabled.pngu;46;Resources/scroller-right-arrow-highlighted.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-right-arrow-highlighted.pngu;34;Resources/scroller-right-arrow.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-right-arrow.pngu;40;Resources/scroller-up-arrow-disabled.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-up-arrow-disabled.pngu;43;Resources/scroller-up-arrow-highlighted.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-up-arrow-highlighted.pngu;31;Resources/scroller-up-arrow.png71;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-up-arrow.pngu;43;Resources/scroller-vertical-knob-bottom.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-bottom.pngu;43;Resources/scroller-vertical-knob-center.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-center.pngu;52;Resources/scroller-vertical-knob-disabled-bottom.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-disabled-bottom.pngu;52;Resources/scroller-vertical-knob-disabled-center.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-disabled-center.pngu;49;Resources/scroller-vertical-knob-disabled-top.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-disabled-top.pngu;40;Resources/scroller-vertical-knob-top.png80;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-knob-top.pngu;46;Resources/scroller-vertical-track-disabled.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-track-disabled.pngu;37;Resources/scroller-vertical-track.png77;mhtml:Browser.environment/MHTMLData.txt!Resources/scroller-vertical-track.pngu;44;Resources/scrollview-bottom-corner-color.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/scrollview-bottom-corner-color.pngu;44;Resources/segmented-control-bezel-center.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-center.pngu;53;Resources/segmented-control-bezel-disabled-center.png93;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-center.pngu;54;Resources/segmented-control-bezel-disabled-divider.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-divider.pngu;51;Resources/segmented-control-bezel-disabled-left.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-left.pngu;52;Resources/segmented-control-bezel-disabled-right.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-disabled-right.pngu;45;Resources/segmented-control-bezel-divider.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-divider.pngu;56;Resources/segmented-control-bezel-highlighted-center.png96;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-center.pngu;65;Resources/segmented-control-bezel-highlighted-disabled-center.png105;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-center.pngu;66;Resources/segmented-control-bezel-highlighted-disabled-divider.png106;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-divider.pngu;63;Resources/segmented-control-bezel-highlighted-disabled-left.png103;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-left.pngu;64;Resources/segmented-control-bezel-highlighted-disabled-right.png104;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-disabled-right.pngu;57;Resources/segmented-control-bezel-highlighted-divider.png97;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-divider.pngu;54;Resources/segmented-control-bezel-highlighted-left.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-left.pngu;55;Resources/segmented-control-bezel-highlighted-right.png95;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-highlighted-right.pngu;42;Resources/segmented-control-bezel-left.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-left.pngu;51;Resources/segmented-control-bezel-pushed-center.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-center.pngu;63;Resources/segmented-control-bezel-pushed-highlighted-center.png103;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-highlighted-center.pngu;61;Resources/segmented-control-bezel-pushed-highlighted-left.png101;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-highlighted-left.pngu;62;Resources/segmented-control-bezel-pushed-highlighted-right.png102;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-highlighted-right.pngu;49;Resources/segmented-control-bezel-pushed-left.png89;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-left.pngu;50;Resources/segmented-control-bezel-pushed-right.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-pushed-right.pngu;43;Resources/segmented-control-bezel-right.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/segmented-control-bezel-right.pngu;35;Resources/slider-circular-bezel.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-bezel.pngu;44;Resources/slider-circular-disabled-bezel.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-disabled-bezel.pngu;43;Resources/slider-circular-disabled-knob.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-disabled-knob.pngu;34;Resources/slider-circular-knob.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/slider-circular-knob.pngu;21;Resources/spinner.gif61;mhtml:Browser.environment/MHTMLData.txt!Resources/spinner.gifu;44;Resources/tableview-headerview-ascending.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-ascending.pngu;45;Resources/tableview-headerview-descending.png85;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-descending.pngu;54;Resources/tableview-headerview-highlighted-pressed.png94;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-highlighted-pressed.pngu;46;Resources/tableview-headerview-highlighted.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-highlighted.pngu;42;Resources/tableview-headerview-pressed.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview-pressed.pngu;34;Resources/tableview-headerview.png74;mhtml:Browser.environment/MHTMLData.txt!Resources/tableview-headerview.pngu;32;Resources/tableviewselection.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/tableviewselection.pngu;44;Resources/textfield-bezel-rounded-center.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-center.pngu;52;Resources/textfield-bezel-rounded-focused-center.png92;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-focused-center.pngu;50;Resources/textfield-bezel-rounded-focused-left.png90;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-focused-left.pngu;51;Resources/textfield-bezel-rounded-focused-right.png91;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-focused-right.pngu;42;Resources/textfield-bezel-rounded-left.png82;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-left.pngu;43;Resources/textfield-bezel-rounded-right.png83;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-rounded-right.pngu;38;Resources/textfield-bezel-square-0.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-0.pngu;38;Resources/textfield-bezel-square-1.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-1.pngu;38;Resources/textfield-bezel-square-2.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-2.pngu;38;Resources/textfield-bezel-square-3.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-3.pngu;38;Resources/textfield-bezel-square-4.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-4.pngu;38;Resources/textfield-bezel-square-5.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-5.pngu;38;Resources/textfield-bezel-square-6.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-6.pngu;38;Resources/textfield-bezel-square-7.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-7.pngu;38;Resources/textfield-bezel-square-8.png78;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-8.pngu;46;Resources/textfield-bezel-square-focused-0.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-0.pngu;46;Resources/textfield-bezel-square-focused-1.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-1.pngu;46;Resources/textfield-bezel-square-focused-2.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-2.pngu;46;Resources/textfield-bezel-square-focused-3.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-3.pngu;46;Resources/textfield-bezel-square-focused-4.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-4.pngu;46;Resources/textfield-bezel-square-focused-5.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-5.pngu;46;Resources/textfield-bezel-square-focused-6.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-6.pngu;46;Resources/textfield-bezel-square-focused-7.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-7.pngu;46;Resources/textfield-bezel-square-focused-8.png86;mhtml:Browser.environment/MHTMLData.txt!Resources/textfield-bezel-square-focused-8.pngu;35;Resources/vertical-track-bottom.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-bottom.pngu;35;Resources/vertical-track-center.png75;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-center.pngu;44;Resources/vertical-track-disabled-bottom.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-disabled-bottom.pngu;44;Resources/vertical-track-disabled-center.png84;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-disabled-center.pngu;41;Resources/vertical-track-disabled-top.png81;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-disabled-top.pngu;32;Resources/vertical-track-top.png72;mhtml:Browser.environment/MHTMLData.txt!Resources/vertical-track-top.png ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/MHTMLTest.txt @@ -0,0 +1,9 @@ +/* +Content-Type: multipart/related; boundary="_SEPARATOR_" + +--_SEPARATOR_ +Content-Location:test +Content-Transfer-Encoding:base64 + +R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== +*/ ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Browser.environment/dataURLs.txt cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/CommonJS.environment/Aristo.blend.sj @@ -0,0 +1,1 @@ +@STATIC;1.0;e; ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Info.plist Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Info.plist ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Info.plist +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;26;CPApplicationDelegateClassS;20;BKShowcaseControllerK;12;CPBundleNameS;12;Aristo.blendK;14;BKLearnMoreURLS;28;http://cappuccino.org/aristoK;22;BKLearnMoreButtonTitleS;16;Aristo Home PageK;16;CPPrincipalClassS;13;CPApplicationK;29;CPBundleInfoDictionaryVersiond;1;6K;18;CPBundleIdentifierS;21;com.280n.blend.AristoK;15;CPBundleVersionf;3;0.1K;19;CPBundlePackageTypeS;4;BLNDK;20;CPBundleEnvironmentsA;S;7;BrowserS;8;CommonJSE;K;18;CPBundleExecutableS;15;Aristo.blend.sjK;36;CPBundleEnvironmentsWithImageSpritesA;S;7;BrowserE;K;13;CPKeyedThemesA;S;17;Aristo.keyedthemeS;21;Aristo-HUD.keyedthemeE;E; ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/default-button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/horizontal-track-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-down-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-knob-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-horizontal-track.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-left-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-right-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-up-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-knob-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/scroller-vertical-track.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right copy.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-pushed-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/segmented-control-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-disabled-knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/slider-circular-knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-disabled-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/HUD/vertical-track-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-error.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-error.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-error.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-error.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-info.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-info.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-info.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-info.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-warning.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-warning.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-warning.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/alert-warning.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/buttonbar-resize-control.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-mixed.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image-selected.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/check-box-image.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/default-button-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/horizontal-track-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-arrows-pullsdown.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-arrows.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right-pullsdown.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right-pullsdown.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/popup-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image-selected.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/radio-image.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-down-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-knob-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-horizontal-track.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-left-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-right-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-up-arrow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-disabled-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-knob-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track-disabled.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scroller-vertical-track.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/scrollview-bottom-corner-color.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-disabled-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-divider.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-highlighted-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-pushed-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/segmented-control-bezel-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-bezel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-disabled-knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/slider-circular-knob.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/spinner.gif Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/spinner.gif ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/spinner.gif +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/spinner.gif cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-ascending.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-descending.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted-pressed.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview-pressed.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableview-headerview.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/tableviewselection.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-focused-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-left.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-rounded-right.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/textfield-bezel-square-focused-8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-bottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-center.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-disabled-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/Aristo.blend/Resources/vertical-track-top.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/New.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/New.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/New.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/New.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/NewHighlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/NewHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/NewHighlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/NewHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/Open.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/Open.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/Open.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/Open.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/OpenHighlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/OpenHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/OpenHighlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/OpenHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/Save.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/Save.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/Save.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/Save.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/SaveHighlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/SaveHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/SaveHighlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPApplication/SaveHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/closedHandCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/closedHandCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/closedHandCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/closedHandCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/contextualMenuCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/contextualMenuCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/contextualMenuCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/contextualMenuCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/disappearingItemCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/disappearingItemCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/disappearingItemCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/disappearingItemCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/dragCopyCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/dragCopyCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/dragCopyCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/dragCopyCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/dragLinkCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/dragLinkCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/dragLinkCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/dragLinkCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/openHandCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/openHandCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/openHandCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/openHandCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeDownCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeDownCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeDownCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeDownCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeLeftCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeLeftCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeLeftCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeLeftCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeRightCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeRightCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeRightCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeRightCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeUpCursor.cur Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeUpCursor.cur ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeUpCursor.cur +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPCursor/resizeUpCursor.cur cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImage/CPImageNameColorPanel.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImage/CPImageNameColorPanel.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImage/CPImageNameColorPanel.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImage/CPImageNameColorPanel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImage/CPImageNameColorPanelHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomLeftShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomRightShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewBottomShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewLeftShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewRightShadow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewRightShadow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewRightShadow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewRightShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopLeftShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopRightShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopShadow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopShadow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopShadow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPImageView/CPImageViewTopShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPMenuItem/CPMenuItemOnState.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPMenuItem/CPMenuItemOnStateHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarBarRegular2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBarHUDBarRegular2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderBarRegular2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorBezelBorderHUDBarRegular2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPProgressIndicator/CPProgressIndicatorSpinningStyleRegular.gif cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldCancel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldCancelPressed.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldFind.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldFind.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldFind.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldFind.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSearchField/CPSearchFieldSearch.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyBottomRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTop.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewHeavyTopRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottom.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottomLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightBottomRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTop.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTopLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPShadowView/CPShadowViewLightTopRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSplitView/CPSplitViewHorizontal.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSplitView/CPSplitViewVertical.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSplitView/CPSplitViewVertical.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSplitView/CPSplitViewVertical.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPSplitView/CPSplitViewVertical.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBackgroundCenter.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorder.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorderLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/CPTabViewBezelBorderRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundCenter.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelBackgroundRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedCenter.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelSelectedRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewCenter.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewLeft.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPTabView/_CPTabLabelsViewRight.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPToolbarItem/CPToolbarItemSeparator2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow3.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow3.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow3.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow4.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow4.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow4.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow5.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow5.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow5.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow6.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow6.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow6.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow7.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow7.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow7.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow8.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow8.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow8.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/CPWindowShadow8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/HUD/CPWindowHUDBackground8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButton.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsaved.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardCloseButtonUnsavedHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButton.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMaximizeButtonHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButton.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardMinimizeButtonHighlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindow/Standard/CPWindowStandardTop2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindowResizeIndicator.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindowResizeIndicator.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindowResizeIndicator.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/CPWindowResizeIndicator.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/FIXME_ImageShadow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/FIXME_ImageShadow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/FIXME_ImageShadow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/FIXME_ImageShadow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/GenericFile.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/GenericFile.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/GenericFile.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/GenericFile.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/HUDTheme/WindowClose.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/HUDTheme/WindowClose.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/HUDTheme/WindowClose.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/HUDTheme/WindowClose.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/HUDTheme/WindowCloseActive.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/HUDTheme/WindowCloseActive.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/HUDTheme/WindowCloseActive.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/HUDTheme/WindowCloseActive.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackground.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuBarWindow/_CPMenuBarWindowBackgroundSelected.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow1.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow3.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow4.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow5.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindow7.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreAbove.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowMoreBelow.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded0.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded2.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded6.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPMenuWindow/_CPMenuWindowRounded8.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewBackground.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPToolbarView/_CPToolbarViewExtraItemsImage.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/_CPWindowView/_CPWindowViewResizeIndicator.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/action_button.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/action_button.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/action_button.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/action_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/brightness_bar.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/brightness_bar.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/brightness_bar.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/brightness_bar.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-leaf-highlighted.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-leaf-highlighted.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-leaf-highlighted.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-leaf-highlighted.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-leaf.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-leaf.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-leaf.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-leaf.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-resize-control.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-resize-control.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-resize-control.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/browser-resize-control.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/color_well.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/color_well.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/color_well.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/color_well.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/empty.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/empty.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/empty.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/empty.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/minus_button.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/minus_button.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/minus_button.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/minus_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/plus_button.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/plus_button.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/plus_button.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/plus_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/slider_button.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/slider_button.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/slider_button.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/slider_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/slider_button_h.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/slider_button_h.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/slider_button_h.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/slider_button_h.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/standardApplicationIcon.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/standardApplicationIcon.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/standardApplicationIcon.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/standardApplicationIcon.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_black.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_black.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_black.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_black.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_button.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_button.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_button.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_button.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_button_h.png Index: Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_button_h.png ================================================================== --- Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_button_h.png +++ Site/Site_Z/Frameworks/Debug/AppKit/Resources/wheel_button_h.png cannot compute difference between binary files ADDED Site/Site_Z/Frameworks/Debug/Foundation/Info.plist Index: Site/Site_Z/Frameworks/Debug/Foundation/Info.plist ================================================================== --- Site/Site_Z/Frameworks/Debug/Foundation/Info.plist +++ Site/Site_Z/Frameworks/Debug/Foundation/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;18;CPBundleIdentifierS;19;com.280n.FoundationK;29;CPBundleInfoDictionaryVersiond;1;6K;12;CPBundleNameS;10;FoundationK;19;CPBundlePackageTypeS;4;FMWKK;15;CPBundleVersionS;5;0.8.1K;20;CPBundleEnvironmentsA;S;4;ObjJE;K;18;CPBundleExecutableS;13;Foundation.sjK;36;CPBundleEnvironmentsWithImageSpritesA;E;E; ADDED Site/Site_Z/Frameworks/Debug/Foundation/LICENSE Index: Site/Site_Z/Frameworks/Debug/Foundation/LICENSE ================================================================== --- Site/Site_Z/Frameworks/Debug/Foundation/LICENSE +++ Site/Site_Z/Frameworks/Debug/Foundation/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site_Z/Frameworks/Debug/Foundation/ObjJ.environment/Foundation.sj Index: Site/Site_Z/Frameworks/Debug/Foundation/ObjJ.environment/Foundation.sj ================================================================== --- Site/Site_Z/Frameworks/Debug/Foundation/ObjJ.environment/Foundation.sj +++ Site/Site_Z/Frameworks/Debug/Foundation/ObjJ.environment/Foundation.sj @@ -0,0 +1,15149 @@ +@STATIC;1.0;p;13;CPArray+KVO.jt;18610;@STATIC;1.0;i;9;CPArray.ji;8;CPNull.jt;18565;objj_executeFile("CPArray.j", YES); +objj_executeFile("CPNull.j", YES); +{ +var the_class = objj_getClass("CPObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("mutableArrayValueForKey:"), function $CPObject__mutableArrayValueForKey_(self, _cmd, aKey) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_CPKVCArray, "alloc"), "initWithKey:forProxyObject:", aKey, self); +} +},["id","id"]), new objj_method(sel_getUid("mutableArrayValueForKeyPath:"), function $CPObject__mutableArrayValueForKeyPath_(self, _cmd, aKeyPath) +{ with(self) +{ + var dotIndex = aKeyPath.indexOf("."); + if (dotIndex < 0) + return objj_msgSend(self, "mutableArrayValueForKey:", aKeyPath); + var firstPart = aKeyPath.substring(0, dotIndex), + lastPart = aKeyPath.substring(dotIndex + 1); + return objj_msgSend(objj_msgSend(self, "valueForKeyPath:", firstPart), "valueForKeyPath:", lastPart); +} +},["id","id"])]); +} +{var the_class = objj_allocateClassPair(CPArray, "_CPKVCArray"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_proxyObject"), new objj_ivar("_key"), new objj_ivar("_insertSEL"), new objj_ivar("_insert"), new objj_ivar("_removeSEL"), new objj_ivar("_remove"), new objj_ivar("_replaceSEL"), new objj_ivar("_replace"), new objj_ivar("_insertManySEL"), new objj_ivar("_insertMany"), new objj_ivar("_removeManySEL"), new objj_ivar("_removeMany"), new objj_ivar("_replaceManySEL"), new objj_ivar("_replaceMany"), new objj_ivar("_objectAtIndexSEL"), new objj_ivar("_objectAtIndex"), new objj_ivar("_countSEL"), new objj_ivar("_count"), new objj_ivar("_accessSEL"), new objj_ivar("_access"), new objj_ivar("_setSEL"), new objj_ivar("_set")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithKey:forProxyObject:"), function $_CPKVCArray__initWithKey_forProxyObject_(self, _cmd, aKey, anObject) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPKVCArray").super_class }, "init"); + _key = aKey; + _proxyObject = anObject; + var capitalizedKey = _key.charAt(0).toUpperCase() + _key.substring(1); + _insertSEL = sel_getName("insertObject:in"+capitalizedKey+"AtIndex:"); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _insertSEL)) + _insert = objj_msgSend(_proxyObject, "methodForSelector:", _insertSEL); + _removeSEL = sel_getName("removeObjectFrom"+capitalizedKey+"AtIndex:"); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _removeSEL)) + _remove = objj_msgSend(_proxyObject, "methodForSelector:", _removeSEL); + _replaceSEL = sel_getName("replaceObjectFrom"+capitalizedKey+"AtIndex:withObject:"); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _replaceSEL)) + _replace = objj_msgSend(_proxyObject, "methodForSelector:", _replaceSEL); + _insertManySEL = sel_getName("insertObjects:in"+capitalizedKey+"AtIndexes:"); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _insertManySEL)) + _insertMany = objj_msgSend(_proxyObject, "methodForSelector:", _insertManySEL); + _removeManySEL = sel_getName("removeObjectsFrom"+capitalizedKey+"AtIndexes:"); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _removeManySEL)) + _remove = objj_msgSend(_proxyObject, "methodForSelector:", _removeManySEL); + _replaceManySEL = sel_getName("replaceObjectsFrom"+capitalizedKey+"AtIndexes:withObjects:"); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _replaceManySEL)) + _replace = objj_msgSend(_proxyObject, "methodForSelector:", _replaceManySEL); + _objectAtIndexSEL = sel_getName("objectIn"+capitalizedKey+"AtIndex:"); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _objectAtIndexSEL)) + _objectAtIndex = objj_msgSend(_proxyObject, "methodForSelector:", _objectAtIndexSEL); + _countSEL = sel_getName("countOf"+capitalizedKey); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _countSEL)) + _count = objj_msgSend(_proxyObject, "methodForSelector:", _countSEL); + _accessSEL = sel_getName(_key); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _accessSEL)) + _access = objj_msgSend(_proxyObject, "methodForSelector:", _accessSEL); + _setSEL = sel_getName("set"+capitalizedKey+":"); + if (objj_msgSend(_proxyObject, "respondsToSelector:", _setSEL)) + _set = objj_msgSend(_proxyObject, "methodForSelector:", _setSEL); + return self; +} +},["id","id","id"]), new objj_method(sel_getUid("copy"), function $_CPKVCArray__copy(self, _cmd) +{ with(self) +{ + var i = 0, + theCopy = [], + count = objj_msgSend(self, "count"); + for (; i < count; i++) + objj_msgSend(theCopy, "addObject:", objj_msgSend(self, "objectAtIndex:", i)); + return theCopy; +} +},["id"]), new objj_method(sel_getUid("_representedObject"), function $_CPKVCArray___representedObject(self, _cmd) +{ with(self) +{ + if (_access) + return _access(_proxyObject, _accessSEL); + return objj_msgSend(_proxyObject, "valueForKey:", _key); +} +},["id"]), new objj_method(sel_getUid("_setRepresentedObject:"), function $_CPKVCArray___setRepresentedObject_(self, _cmd, anObject) +{ with(self) +{ + if (_set) + return _set(_proxyObject, _setSEL, anObject); + objj_msgSend(_proxyObject, "setValue:forKey:", anObject, _key); +} +},["void","id"]), new objj_method(sel_getUid("count"), function $_CPKVCArray__count(self, _cmd) +{ with(self) +{ + if (_count) + return _count(_proxyObject, _countSEL); + return objj_msgSend(objj_msgSend(self, "_representedObject"), "count"); +} +},["unsigned"]), new objj_method(sel_getUid("indexOfObject:inRange:"), function $_CPKVCArray__indexOfObject_inRange_(self, _cmd, anObject, aRange) +{ with(self) +{ + var index = aRange.location, + count = aRange.length, + shouldIsEqual = !!anObject.isa; + for (; index < count; ++index) + { + var object = objj_msgSend(self, "objectAtIndex:", index); + if (anObject === object || shouldIsEqual && !!object.isa && objj_msgSend(anObject, "isEqual:", object)) + return index; + } + return CPNotFound; +} +},["int","CPObject","CPRange"]), new objj_method(sel_getUid("indexOfObject:"), function $_CPKVCArray__indexOfObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(self, "indexOfObject:inRange:", anObject, CPMakeRange(0, objj_msgSend(self, "count"))); +} +},["int","CPObject"]), new objj_method(sel_getUid("indexOfObjectIdenticalTo:inRange:"), function $_CPKVCArray__indexOfObjectIdenticalTo_inRange_(self, _cmd, anObject, aRange) +{ with(self) +{ + var index = aRange.location, + count = aRange.length; + for (; index < count; ++index) + if (anObject === objj_msgSend(self, "objectAtIndex:", index)) + return index; + return CPNotFound; +} +},["int","CPObject","CPRange"]), new objj_method(sel_getUid("indexOfObjectIdenticalTo:"), function $_CPKVCArray__indexOfObjectIdenticalTo_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(self, "indexOfObjectIdenticalTo:inRange:", anObject, CPMakeRange(0, objj_msgSend(self, "count"))); +} +},["int","CPObject"]), new objj_method(sel_getUid("objectAtIndex:"), function $_CPKVCArray__objectAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (_objectAtIndex) + return _objectAtIndex(_proxyObject, _objectAtIndexSEL, anIndex); + return objj_msgSend(objj_msgSend(self, "_representedObject"), "objectAtIndex:", anIndex); +} +},["id","unsigned"]), new objj_method(sel_getUid("addObject:"), function $_CPKVCArray__addObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "insertObject:atIndex:", anObject, objj_msgSend(self, "count")); +} +},["void","id"]), new objj_method(sel_getUid("addObjectsFromArray:"), function $_CPKVCArray__addObjectsFromArray_(self, _cmd, anArray) +{ with(self) +{ + var index = 0, + count = objj_msgSend(anArray, "count"); + objj_msgSend(self, "insertObjects:atIndexes:", anArray, objj_msgSend(CPIndexSet, "indexSetWithIndexesInRange:", CPMakeRange(objj_msgSend(self, "count"), count))); +} +},["void","CPArray"]), new objj_method(sel_getUid("insertObject:atIndex:"), function $_CPKVCArray__insertObject_atIndex_(self, _cmd, anObject, anIndex) +{ with(self) +{ + objj_msgSend(self, "insertObjects:atIndexes:", [anObject], objj_msgSend(CPIndexSet, "indexSetWithIndex:", anIndex)); +} +},["void","id","unsigned"]), new objj_method(sel_getUid("insertObjects:atIndexes:"), function $_CPKVCArray__insertObjects_atIndexes_(self, _cmd, theObjects, theIndexes) +{ with(self) +{ + if (_insertMany) + _insertMany(_proxyObject, _insertManySEL, theObjects, theIndexes); + else if (_insert) + { + var indexesArray = []; + objj_msgSend(theIndexes, "getIndexes:maxCount:inIndexRange:", indexesArray, -1, nil); + for (var index = 0; index < objj_msgSend(indexesArray, "count"); index++) + { + var objectIndex = objj_msgSend(indexesArray, "objectAtIndex:", index), + object = objj_msgSend(theObjects, "objectAtIndex:", index); + _insert(_proxyObject, _insertSEL, object, objectIndex); + } + } + else + { + var target = objj_msgSend(objj_msgSend(self, "_representedObject"), "copy"); + objj_msgSend(target, "insertObjects:atIndexes:", theObjects, theIndexes); + objj_msgSend(self, "_setRepresentedObject:", target); + } +} +},["void","CPArray","CPIndexSet"]), new objj_method(sel_getUid("removeObject:"), function $_CPKVCArray__removeObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "removeObject:inRange:", anObject, CPMakeRange(0, objj_msgSend(self, "count"))); +} +},["void","id"]), new objj_method(sel_getUid("removeLastObject"), function $_CPKVCArray__removeLastObject(self, _cmd) +{ with(self) +{ + if (_remove) + return _remove(_proxyObject, _removeSEL, objj_msgSend(self, "count") - 1); + var target = objj_msgSend(objj_msgSend(self, "_representedObject"), "copy"); + objj_msgSend(target, "removeLastObject"); + objj_msgSend(self, "_setRepresentedObject:", target); +} +},["void"]), new objj_method(sel_getUid("removeObjectAtIndex:"), function $_CPKVCArray__removeObjectAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (_remove) + return _remove(_proxyObject, _removeSEL, anIndex); + var target = objj_msgSend(objj_msgSend(self, "_representedObject"), "copy"); + objj_msgSend(target, "removeObjectAtIndex:", anIndex); + objj_msgSend(self, "_setRepresentedObject:", target); +} +},["void","unsigned"]), new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"), function $_CPKVCArray__replaceObjectAtIndex_withObject_(self, _cmd, anIndex, anObject) +{ with(self) +{ + if (_replace) + return _replace(_proxyObject, _replaceSEL, anIndex, anObject); + var target = objj_msgSend(objj_msgSend(self, "_representedObject"), "copy"); + objj_msgSend(target, "replaceObjectAtIndex:withObject:", anIndex, anObject); + objj_msgSend(self, "_setRepresentedObject:", target); +} +},["void","unsigned","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $_CPKVCArray__alloc(self, _cmd) +{ with(self) +{ + var array = []; + array.isa = self; + var ivars = class_copyIvarList(self), + count = ivars.length; + while (count--) + array[ivar_getName(ivars[count])] = nil; + return array; +} +},["id"])]); +} +{ +var the_class = objj_getClass("CPArray") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("valueForKey:"), function $CPArray__valueForKey_(self, _cmd, aKey) +{ with(self) +{ + if (aKey.indexOf("@") === 0) + { + if (aKey.indexOf(".") !== -1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "called valueForKey: on an array with a complex key ("+aKey+"). use valueForKeyPath:"); + if (aKey == "@count") + return length; + return nil; + } + else + { + var newArray = [], + enumerator = objj_msgSend(self, "objectEnumerator"), + object; + while ((object = objj_msgSend(enumerator, "nextObject")) !== nil) + { + var value = objj_msgSend(object, "valueForKey:", aKey); + if (value === nil || value === undefined) + value = objj_msgSend(CPNull, "null"); + newArray.push(value); + } + return newArray; + } +} +},["id","CPString"]), new objj_method(sel_getUid("valueForKeyPath:"), function $CPArray__valueForKeyPath_(self, _cmd, aKeyPath) +{ with(self) +{ + if (aKeyPath.indexOf("@") === 0) + { + var dotIndex = aKeyPath.indexOf("."), + operator, + parameter; + if (dotIndex !== -1) + { + operator = aKeyPath.substring(1, dotIndex); + parameter = aKeyPath.substring(dotIndex + 1); + } + else + operator = aKeyPath.substring(1); + if (kvoOperators[operator]) + return kvoOperators[operator](self, _cmd, parameter); + return nil; + } + else + { + var newArray = [], + enumerator = objj_msgSend(self, "objectEnumerator"), + object; + while ((object = objj_msgSend(enumerator, "nextObject")) !== nil) + { + var value = objj_msgSend(object, "valueForKeyPath:", aKeyPath); + if (value === nil || value === undefined) + value = objj_msgSend(CPNull, "null"); + newArray.push(value); + } + return newArray; + } +} +},["id","CPString"]), new objj_method(sel_getUid("setValue:forKey:"), function $CPArray__setValue_forKey_(self, _cmd, aValue, aKey) +{ with(self) +{ + var enumerator = objj_msgSend(self, "objectEnumerator"), + object; + while (object = objj_msgSend(enumerator, "nextObject")) + objj_msgSend(object, "setValue:forKey:", aValue, aKey); +} +},["void","id","CPString"]), new objj_method(sel_getUid("setValue:forKeyPath:"), function $CPArray__setValue_forKeyPath_(self, _cmd, aValue, aKeyPath) +{ with(self) +{ + var enumerator = objj_msgSend(self, "objectEnumerator"), + object; + while (object = objj_msgSend(enumerator, "nextObject")) + objj_msgSend(object, "setValue:forKeyPath:", aValue, aKeyPath); +} +},["void","id","CPString"])]); +} +var kvoOperators = []; +var avgOperator, maxOperator, minOperator, countOperator, sumOperator; +kvoOperators["avg"] = avgOperator= function(self, _cmd, param) +{ + var objects = objj_msgSend(self, "valueForKeyPath:", param), + length = objj_msgSend(objects, "count"), + index = length; + average = 0.0; + if (!length) + return 0; + while (index--) + average += objj_msgSend(objects[index], "doubleValue"); + return average / length; +} +kvoOperators["max"] = maxOperator= function(self, _cmd, param) +{ + var objects = objj_msgSend(self, "valueForKeyPath:", param), + index = objj_msgSend(objects, "count") - 1, + max = objj_msgSend(objects, "lastObject"); + while (index--) + { + var item = objects[index]; + if (objj_msgSend(max, "compare:", item) < 0) + max = item; + } + return max; +} +kvoOperators["min"] = minOperator= function(self, _cmd, param) +{ + var objects = objj_msgSend(self, "valueForKeyPath:", param), + index = objj_msgSend(objects, "count") - 1, + min = objj_msgSend(objects, "lastObject"); + while (index--) + { + var item = objects[index]; + if (objj_msgSend(min, "compare:", item) > 0) + min = item; + } + return min; +} +kvoOperators["count"] = countOperator= function(self, _cmd, param) +{ + return objj_msgSend(self, "count"); +} +kvoOperators["sum"] = sumOperator= function(self, _cmd, param) +{ + var objects = objj_msgSend(self, "valueForKeyPath:", param), + index = objj_msgSend(objects, "count"), + sum = 0.0; + while (index--) + sum += objj_msgSend(objects[index], "doubleValue"); + return sum; +} +{ +var the_class = objj_getClass("CPArray") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("addObserver:toObjectsAtIndexes:forKeyPath:options:context:"), function $CPArray__addObserver_toObjectsAtIndexes_forKeyPath_options_context_(self, _cmd, anObserver, indexes, aKeyPath, options, context) +{ with(self) +{ + var index = objj_msgSend(indexes, "firstIndex"); + while (index >= 0) + { + objj_msgSend(self[index], "addObserver:forKeyPath:options:context:", anObserver, aKeyPath, options, context); + index = objj_msgSend(indexes, "indexGreaterThanIndex:", index); + } +} +},["void","id","CPIndexSet","CPString","unsigned","id"]), new objj_method(sel_getUid("removeObserver:fromObjectsAtIndexes:forKeyPath:"), function $CPArray__removeObserver_fromObjectsAtIndexes_forKeyPath_(self, _cmd, anObserver, indexes, aKeyPath) +{ with(self) +{ + var index = objj_msgSend(indexes, "firstIndex"); + while (index >= 0) + { + objj_msgSend(self[index], "removeObserver:forKeyPath:", anObserver, aKeyPath); + index = objj_msgSend(indexes, "indexGreaterThanIndex:", index); + } +} +},["void","id","CPIndexSet","CPString"]), new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"), function $CPArray__addObserver_forKeyPath_options_context_(self, _cmd, observer, aKeyPath, options, context) +{ with(self) +{ + if (objj_msgSend(isa, "instanceMethodForSelector:", _cmd) === objj_msgSend(CPArray, "instanceMethodForSelector:", _cmd)) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Unsupported method on CPArray"); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPArray").super_class }, "addObserver:forKeyPath:options:context:", observer, aKeyPath, options, context); +} +},["void","id","CPString","unsigned","id"]), new objj_method(sel_getUid("removeObserver:forKeyPath:"), function $CPArray__removeObserver_forKeyPath_(self, _cmd, observer, aKeyPath) +{ with(self) +{ + if (objj_msgSend(isa, "instanceMethodForSelector:", _cmd) === objj_msgSend(CPArray, "instanceMethodForSelector:", _cmd)) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Unsupported method on CPArray"); + else + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPArray").super_class }, "removeObserver:forKeyPath:", observer, aKeyPath); +} +},["void","id","CPString"])]); +} + +p;9;CPArray.jt;32564;@STATIC;1.0;i;14;CPEnumerator.ji;13;CPException.ji;10;CPObject.ji;9;CPRange.ji;18;CPSortDescriptor.jt;32456;objj_executeFile("CPEnumerator.j", YES); +objj_executeFile("CPException.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPRange.j", YES); +objj_executeFile("CPSortDescriptor.j", YES); +CPEnumerationNormal = 0; +CPEnumerationConcurrent = 1 << 0; +CPEnumerationReverse = 1 << 1; +{var the_class = objj_allocateClassPair(CPEnumerator, "_CPArrayEnumerator"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_array"), new objj_ivar("_index")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithArray:"), function $_CPArrayEnumerator__initWithArray_(self, _cmd, anArray) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPArrayEnumerator").super_class }, "init"); + if (self) + { + _array = anArray; + _index = -1; + } + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("nextObject"), function $_CPArrayEnumerator__nextObject(self, _cmd) +{ with(self) +{ + if (++_index >= objj_msgSend(_array, "count")) + return nil; + return objj_msgSend(_array, "objectAtIndex:", _index); +} +},["id"])]); +} +{var the_class = objj_allocateClassPair(CPEnumerator, "_CPReverseArrayEnumerator"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_array"), new objj_ivar("_index")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithArray:"), function $_CPReverseArrayEnumerator__initWithArray_(self, _cmd, anArray) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPReverseArrayEnumerator").super_class }, "init"); + if (self) + { + _array = anArray; + _index = objj_msgSend(_array, "count"); + } + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("nextObject"), function $_CPReverseArrayEnumerator__nextObject(self, _cmd) +{ with(self) +{ + if (--_index < 0) + return nil; + return objj_msgSend(_array, "objectAtIndex:", _index); +} +},["id"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPArray"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPArray__init(self, _cmd) +{ with(self) +{ + return self; +} +},["id"]), new objj_method(sel_getUid("initWithArray:"), function $CPArray__initWithArray_(self, _cmd, anArray) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPArray").super_class }, "init"); + if (self) + objj_msgSend(self, "setArray:", anArray); + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("initWithArray:copyItems:"), function $CPArray__initWithArray_copyItems_(self, _cmd, anArray, copyItems) +{ with(self) +{ + if (!copyItems) + return objj_msgSend(self, "initWithArray:", anArray); + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPArray").super_class }, "init"); + if (self) + { + var index = 0, + count = objj_msgSend(anArray, "count"); + for (; index < count; ++index) + { + if (anArray[index].isa) + self[index] = objj_msgSend(anArray[index], "copy"); + else + self[index] = anArray[index]; + } + } + return self; +} +},["id","CPArray","BOOL"]), new objj_method(sel_getUid("initWithObjects:"), function $CPArray__initWithObjects_(self, _cmd, anArray) +{ with(self) +{ + var i = 2, + count = arguments.length; + for (; i < count; ++i) + push(arguments[i]); + return self; +} +},["id","Array"]), new objj_method(sel_getUid("initWithObjects:count:"), function $CPArray__initWithObjects_count_(self, _cmd, objects, aCount) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPArray").super_class }, "init"); + if (self) + { + var index = 0; + for (; index < aCount; ++index) + push(objects[index]); + } + return self; +} +},["id","id","unsigned"]), new objj_method(sel_getUid("containsObject:"), function $CPArray__containsObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(self, "indexOfObject:", anObject) != CPNotFound; +} +},["BOOL","id"]), new objj_method(sel_getUid("count"), function $CPArray__count(self, _cmd) +{ with(self) +{ + return length; +} +},["int"]), new objj_method(sel_getUid("indexOfObject:"), function $CPArray__indexOfObject_(self, _cmd, anObject) +{ with(self) +{ + var i = 0, + count = length; + if (anObject && anObject.isa) + { + for (; i < count; ++i) + if (objj_msgSend(self[i], "isEqual:", anObject)) + return i; + } + else if (self.indexOf) + return indexOf(anObject); + else + for (; i < count; ++i) + if (self[i] === anObject) + return i; + return CPNotFound; +} +},["int","id"]), new objj_method(sel_getUid("indexOfObject:inRange:"), function $CPArray__indexOfObject_inRange_(self, _cmd, anObject, aRange) +{ with(self) +{ + var i = aRange.location, + count = MIN(CPMaxRange(aRange), length); + if (anObject && anObject.isa) + { + for (; i < count; ++i) + if (objj_msgSend(self[i], "isEqual:", anObject)) + return i; + } + else + for (; i < count; ++i) + if (self[i] === anObject) + return i; + return CPNotFound; +} +},["int","id","CPRange"]), new objj_method(sel_getUid("indexOfObjectIdenticalTo:"), function $CPArray__indexOfObjectIdenticalTo_(self, _cmd, anObject) +{ with(self) +{ + if (self.indexOf) + return indexOf(anObject); + else + { + var index = 0, + count = length; + for (; index < count; ++index) + if (self[index] === anObject) + return index; + } + return CPNotFound; +} +},["int","id"]), new objj_method(sel_getUid("indexOfObjectIdenticalTo:inRange:"), function $CPArray__indexOfObjectIdenticalTo_inRange_(self, _cmd, anObject, aRange) +{ with(self) +{ + if (self.indexOf) + { + var index = indexOf(anObject, aRange.location); + if (CPLocationInRange(index, aRange)) + return index; + } + else + { + var index = aRange.location, + count = MIN(CPMaxRange(aRange), length); + for (; index < count; ++index) + if (self[index] == anObject) + return index; + } + return CPNotFound; +} +},["int","id","CPRange"]), new objj_method(sel_getUid("indexOfObjectPassingTest:"), function $CPArray__indexOfObjectPassingTest_(self, _cmd, predicate) +{ with(self) +{ + return objj_msgSend(self, "indexOfObjectWithOptions:passingTest:context:", CPEnumerationNormal, predicate, undefined); +} +},["unsigned","Function"]), new objj_method(sel_getUid("indexOfObjectPassingTest:context:"), function $CPArray__indexOfObjectPassingTest_context_(self, _cmd, predicate, aContext) +{ with(self) +{ + return objj_msgSend(self, "indexOfObjectWithOptions:passingTest:context:", CPEnumerationNormal, predicate, aContext); +} +},["unsigned","Function","id"]), new objj_method(sel_getUid("indexOfObjectWithOptions:passingTest:"), function $CPArray__indexOfObjectWithOptions_passingTest_(self, _cmd, opts, predicate) +{ with(self) +{ + return objj_msgSend(self, "indexOfObjectWithOptions:passingTest:context:", opts, predicate, undefined); +} +},["unsigned","CPEnumerationOptions","Function"]), new objj_method(sel_getUid("indexOfObjectWithOptions:passingTest:context:"), function $CPArray__indexOfObjectWithOptions_passingTest_context_(self, _cmd, opts, predicate, aContext) +{ with(self) +{ + var start, stop, increment; + if (opts & CPEnumerationReverse) + { + start = objj_msgSend(self, "count") - 1; + stop = -1; + increment = -1; + } + else + { + start = 0; + stop = objj_msgSend(self, "count"); + increment = 1; + } + for (var i = start; i != stop; i += increment) + { + var result = predicate(objj_msgSend(self, "objectAtIndex:", i), i, aContext); + if (typeof result === 'boolean' && result) + return i; + else if (typeof result === 'object' && result == nil) + return CPNotFound; + } + return CPNotFound; +} +},["unsigned","CPEnumerationOptions","Function","id"]), new objj_method(sel_getUid("indexOfObject:sortedBySelector:"), function $CPArray__indexOfObject_sortedBySelector_(self, _cmd, anObject, aSelector) +{ with(self) +{ + return objj_msgSend(self, "indexOfObject:sortedByFunction:", anObject, function(lhs, rhs) { objj_msgSend(lhs, aSelector, rhs); }); +} +},["unsigned","id","SEL"]), new objj_method(sel_getUid("indexOfObject:sortedByFunction:"), function $CPArray__indexOfObject_sortedByFunction_(self, _cmd, anObject, aFunction) +{ with(self) +{ + return objj_msgSend(self, "indexOfObject:sortedByFunction:context:", anObject, aFunction, nil); +} +},["unsigned","id","Function"]), new objj_method(sel_getUid("indexOfObject:sortedByFunction:context:"), function $CPArray__indexOfObject_sortedByFunction_context_(self, _cmd, anObject, aFunction, aContext) +{ with(self) +{ + var result = objj_msgSend(self, "_indexOfObject:sortedByFunction:context:", anObject, aFunction, aContext); + return result >= 0 ? result : CPNotFound; +} +},["unsigned","id","Function","id"]), new objj_method(sel_getUid("_indexOfObject:sortedByFunction:context:"), function $CPArray___indexOfObject_sortedByFunction_context_(self, _cmd, anObject, aFunction, aContext) +{ with(self) +{ + if (!aFunction) + return CPNotFound; + if (length === 0) + return -1; + var mid, + c, + first = 0, + last = length - 1; + while (first <= last) + { + mid = FLOOR((first + last) / 2); + c = aFunction(anObject, self[mid], aContext); + if (c > 0) + first = mid + 1; + else if (c < 0) + last = mid - 1; + else + { + while (mid < length - 1 && aFunction(anObject, self[mid + 1], aContext) == CPOrderedSame) + mid++; + return mid; + } + } + return -first - 1; +} +},["unsigned","id","Function","id"]), new objj_method(sel_getUid("indexOfObject:sortedByDescriptors:"), function $CPArray__indexOfObject_sortedByDescriptors_(self, _cmd, anObject, descriptors) +{ with(self) +{ + var count = objj_msgSend(descriptors, "count"); + return objj_msgSend(self, "indexOfObject:sortedByFunction:", anObject, function(lhs, rhs) + { + var i = 0, + result = CPOrderedSame; + while (i < count) + if ((result = objj_msgSend(descriptors[i++], "compareObject:withObject:", lhs, rhs)) != CPOrderedSame) + return result; + return result; + }); +} +},["unsigned","id","CPArray"]), new objj_method(sel_getUid("insertObject:inArraySortedByDescriptors:"), function $CPArray__insertObject_inArraySortedByDescriptors_(self, _cmd, anObject, descriptors) +{ with(self) +{ + if (!descriptors || !objj_msgSend(descriptors, "count")) + { + objj_msgSend(self, "addObject:", anObject); + return objj_msgSend(self, "count") - 1; + } + var index = objj_msgSend(self, "_insertObject:sortedByFunction:context:", anObject, function(lhs, rhs) + { + var i = 0, + count = objj_msgSend(descriptors, "count"), + result = CPOrderedSame; + while (i < count) + if((result = objj_msgSend(descriptors[i++], "compareObject:withObject:", lhs, rhs)) != CPOrderedSame) + return result; + return result; + }, nil); + if (index < 0) + index = -result-1; + objj_msgSend(self, "insertObject:atIndex:", anObject, index); + return index; +} +},["unsigned","id","CPArray"]), new objj_method(sel_getUid("lastObject"), function $CPArray__lastObject(self, _cmd) +{ with(self) +{ + var count = objj_msgSend(self, "count"); + if (!count) + return nil; + return self[count - 1]; +} +},["id"]), new objj_method(sel_getUid("objectAtIndex:"), function $CPArray__objectAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (anIndex >= length || anIndex < 0) + objj_msgSend(CPException, "raise:reason:", CPRangeException, "index (" + anIndex + ") beyond bounds (" + length + ")"); + return self[anIndex]; +} +},["id","int"]), new objj_method(sel_getUid("objectsAtIndexes:"), function $CPArray__objectsAtIndexes_(self, _cmd, indexes) +{ with(self) +{ + var index = CPNotFound, + objects = []; + while ((index = objj_msgSend(indexes, "indexGreaterThanIndex:", index)) !== CPNotFound) + objj_msgSend(objects, "addObject:", objj_msgSend(self, "objectAtIndex:", index)); + return objects; +} +},["CPArray","CPIndexSet"]), new objj_method(sel_getUid("objectEnumerator"), function $CPArray__objectEnumerator(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_CPArrayEnumerator, "alloc"), "initWithArray:", self); +} +},["CPEnumerator"]), new objj_method(sel_getUid("reverseObjectEnumerator"), function $CPArray__reverseObjectEnumerator(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_CPReverseArrayEnumerator, "alloc"), "initWithArray:", self); +} +},["CPEnumerator"]), new objj_method(sel_getUid("makeObjectsPerformSelector:"), function $CPArray__makeObjectsPerformSelector_(self, _cmd, aSelector) +{ with(self) +{ + if (!aSelector) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "makeObjectsPerformSelector: 'aSelector' can't be nil"); + var index = 0, + count = length; + for (; index < count; ++index) + objj_msgSend(self[index], aSelector); +} +},["void","SEL"]), new objj_method(sel_getUid("makeObjectsPerformSelector:withObject:"), function $CPArray__makeObjectsPerformSelector_withObject_(self, _cmd, aSelector, anObject) +{ with(self) +{ + if (!aSelector) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "makeObjectsPerformSelector:withObject 'aSelector' can't be nil"); + var index = 0, + count = length; + for (; index < count; ++index) + objj_msgSend(self[index], aSelector, anObject); +} +},["void","SEL","id"]), new objj_method(sel_getUid("makeObjectsPerformSelector:withObjects:"), function $CPArray__makeObjectsPerformSelector_withObjects_(self, _cmd, aSelector, objects) +{ with(self) +{ + if (!aSelector) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "makeObjectsPerformSelector:withObjects: 'aSelector' can't be nil"); + var index = 0, + count = length, + argumentsArray = [nil, aSelector].concat(objects || []); + for (; index < count; ++index) + { + argumentsArray[0] = self[index]; + objj_msgSend.apply(this, argumentsArray); + } +} +},["void","SEL","CPArray"]), new objj_method(sel_getUid("firstObjectCommonWithArray:"), function $CPArray__firstObjectCommonWithArray_(self, _cmd, anArray) +{ with(self) +{ + if (!objj_msgSend(anArray, "count") || !objj_msgSend(self, "count")) + return nil; + var i = 0, + count = objj_msgSend(self, "count"); + for (; i < count; ++i) + if (objj_msgSend(anArray, "containsObject:", self[i])) + return self[i]; + return nil; +} +},["id","CPArray"]), new objj_method(sel_getUid("isEqualToArray:"), function $CPArray__isEqualToArray_(self, _cmd, anArray) +{ with(self) +{ + if (self === anArray) + return YES; + if (anArray === nil || length !== anArray.length) + return NO; + var index = 0, + count = objj_msgSend(self, "count"); + for (; index < count; ++index) + { + var lhs = self[index], + rhs = anArray[index]; + if (lhs !== rhs && (lhs && !lhs.isa || rhs && !rhs.isa || !objj_msgSend(lhs, "isEqual:", rhs))) + return NO; + } + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("isEqual:"), function $CPArray__isEqual_(self, _cmd, anObject) +{ with(self) +{ + if (self === anObject) + return YES; + if (!objj_msgSend(anObject, "isKindOfClass:", objj_msgSend(CPArray, "class"))) + return NO; + return objj_msgSend(self, "isEqualToArray:", anObject); +} +},["BOOL","id"]), new objj_method(sel_getUid("arrayByAddingObject:"), function $CPArray__arrayByAddingObject_(self, _cmd, anObject) +{ with(self) +{ + var array = objj_msgSend(self, "copy"); + array.push(anObject); + return array; +} +},["CPArray","id"]), new objj_method(sel_getUid("arrayByAddingObjectsFromArray:"), function $CPArray__arrayByAddingObjectsFromArray_(self, _cmd, anArray) +{ with(self) +{ + return slice(0).concat(anArray); +} +},["CPArray","CPArray"]), new objj_method(sel_getUid("subarrayWithRange:"), function $CPArray__subarrayWithRange_(self, _cmd, aRange) +{ with(self) +{ + if (aRange.location < 0 || CPMaxRange(aRange) > length) + objj_msgSend(CPException, "raise:reason:", CPRangeException, "subarrayWithRange: aRange out of bounds"); + return slice(aRange.location, CPMaxRange(aRange)); +} +},["CPArray","CPRange"]), new objj_method(sel_getUid("sortedArrayUsingDescriptors:"), function $CPArray__sortedArrayUsingDescriptors_(self, _cmd, descriptors) +{ with(self) +{ + var sorted = objj_msgSend(self, "copy"); + objj_msgSend(sorted, "sortUsingDescriptors:", descriptors); + return sorted; +} +},["CPArray","CPArray"]), new objj_method(sel_getUid("sortedArrayUsingFunction:"), function $CPArray__sortedArrayUsingFunction_(self, _cmd, aFunction) +{ with(self) +{ + return objj_msgSend(self, "sortedArrayUsingFunction:context:", aFunction, nil); +} +},["CPArray","Function"]), new objj_method(sel_getUid("sortedArrayUsingFunction:context:"), function $CPArray__sortedArrayUsingFunction_context_(self, _cmd, aFunction, aContext) +{ with(self) +{ + var sorted = objj_msgSend(self, "copy"); + objj_msgSend(sorted, "sortUsingFunction:context:", aFunction, aContext); + return sorted; +} +},["CPArray","Function","id"]), new objj_method(sel_getUid("sortedArrayUsingSelector:"), function $CPArray__sortedArrayUsingSelector_(self, _cmd, aSelector) +{ with(self) +{ + var sorted = objj_msgSend(self, "copy"); + objj_msgSend(sorted, "sortUsingSelector:", aSelector); + return sorted; +} +},["CPArray","SEL"]), new objj_method(sel_getUid("componentsJoinedByString:"), function $CPArray__componentsJoinedByString_(self, _cmd, aString) +{ with(self) +{ + return join(aString); +} +},["CPString","CPString"]), new objj_method(sel_getUid("description"), function $CPArray__description(self, _cmd) +{ with(self) +{ + var index = 0, + count = objj_msgSend(self, "count"), + description = '('; + for (; index < count; ++index) + { + if (index === 0) + description += '\n'; + var object = objj_msgSend(self, "objectAtIndex:", index), + objectDescription = object && object.isa ? objj_msgSend(object, "description") : String(object); + description += "\t" + objectDescription.split('\n').join("\n\t"); + if (index !== count - 1) + description += ", "; + description += '\n'; + } + return description + ')'; +} +},["CPString"]), new objj_method(sel_getUid("pathsMatchingExtensions:"), function $CPArray__pathsMatchingExtensions_(self, _cmd, filterTypes) +{ with(self) +{ + var index = 0, + count = objj_msgSend(self, "count"), + array = []; + for (; index < count; ++index) + if (self[index].isa && objj_msgSend(self[index], "isKindOfClass:", objj_msgSend(CPString, "class")) && objj_msgSend(filterTypes, "containsObject:", objj_msgSend(self[index], "pathExtension"))) + array.push(self[index]); + return array; +} +},["CPArray","CPArray"]), new objj_method(sel_getUid("setValue:forKey:"), function $CPArray__setValue_forKey_(self, _cmd, aValue, aKey) +{ with(self) +{ + var i = 0, + count = objj_msgSend(self, "count"); + for (; i < count; ++i) + objj_msgSend(self[i], "setValue:forKey:", aValue, aKey); +} +},["void","id","CPString"]), new objj_method(sel_getUid("valueForKey:"), function $CPArray__valueForKey_(self, _cmd, aKey) +{ with(self) +{ + var i = 0, + count = objj_msgSend(self, "count"), + array = []; + for (; i < count; ++i) + array.push(objj_msgSend(self[i], "valueForKey:", aKey)); + return array; +} +},["CPArray","CPString"]), new objj_method(sel_getUid("copy"), function $CPArray__copy(self, _cmd) +{ with(self) +{ + return slice(0); +} +},["id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $CPArray__alloc(self, _cmd) +{ with(self) +{ + return []; +} +},["id"]), new objj_method(sel_getUid("array"), function $CPArray__array(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("arrayWithArray:"), function $CPArray__arrayWithArray_(self, _cmd, anArray) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithArray:", anArray); +} +},["id","CPArray"]), new objj_method(sel_getUid("arrayWithObject:"), function $CPArray__arrayWithObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithObjects:", anObject); +} +},["id","id"]), new objj_method(sel_getUid("arrayWithObjects:"), function $CPArray__arrayWithObjects_(self, _cmd, anObject) +{ with(self) +{ + var i = 2, + array = objj_msgSend(objj_msgSend(self, "alloc"), "init"), + count = arguments.length; + for (; i < count; ++i) + array.push(arguments[i]); + return array; +} +},["id","id"]), new objj_method(sel_getUid("arrayWithObjects:count:"), function $CPArray__arrayWithObjects_count_(self, _cmd, objects, aCount) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithObjects:count:", objects, aCount); +} +},["id","id","unsigned"])]); +} +{ +var the_class = objj_getClass("CPArray") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCapacity:"), function $CPArray__initWithCapacity_(self, _cmd, aCapacity) +{ with(self) +{ + return self; +} +},["id","unsigned"]), new objj_method(sel_getUid("addObject:"), function $CPArray__addObject_(self, _cmd, anObject) +{ with(self) +{ + push(anObject); +} +},["void","id"]), new objj_method(sel_getUid("addObjectsFromArray:"), function $CPArray__addObjectsFromArray_(self, _cmd, anArray) +{ with(self) +{ + splice.apply(self, [length, 0].concat(anArray)); +} +},["void","CPArray"]), new objj_method(sel_getUid("insertObject:atIndex:"), function $CPArray__insertObject_atIndex_(self, _cmd, anObject, anIndex) +{ with(self) +{ + splice(anIndex, 0, anObject); +} +},["void","id","int"]), new objj_method(sel_getUid("insertObjects:atIndexes:"), function $CPArray__insertObjects_atIndexes_(self, _cmd, objects, indexes) +{ with(self) +{ + var indexesCount = objj_msgSend(indexes, "count"), + objectsCount = objj_msgSend(objects, "count"); + if (indexesCount !== objectsCount) + objj_msgSend(CPException, "raise:reason:", CPRangeException, "the counts of the passed-in array (" + objectsCount + ") and index set (" + indexesCount + ") must be identical."); + var lastIndex = objj_msgSend(indexes, "lastIndex"); + if (lastIndex >= objj_msgSend(self, "count") + indexesCount) + objj_msgSend(CPException, "raise:reason:", CPRangeException, "the last index (" + lastIndex + ") must be less than the sum of the original count (" + objj_msgSend(self, "count") + ") and the insertion count (" + indexesCount + ")."); + var index = 0, + currentIndex = objj_msgSend(indexes, "firstIndex"); + for (; index < objectsCount; ++index, currentIndex = objj_msgSend(indexes, "indexGreaterThanIndex:", currentIndex)) + objj_msgSend(self, "insertObject:atIndex:", objects[index], currentIndex); +} +},["void","CPArray","CPIndexSet"]), new objj_method(sel_getUid("insertObject:inArraySortedByDescriptors:"), function $CPArray__insertObject_inArraySortedByDescriptors_(self, _cmd, anObject, descriptors) +{ with(self) +{ + var count = objj_msgSend(descriptors, "count"); + var index = objj_msgSend(self, "_indexOfObject:sortedByFunction:context:", anObject, function(lhs, rhs) + { + var i = 0, + result = CPOrderedSame; + while (i < count) + if((result = objj_msgSend(descriptors[i++], "compareObject:withObject:", lhs, rhs)) != CPOrderedSame) + return result; + return result; + }, nil); + if (index < 0) + index = -index - 1; + objj_msgSend(self, "insertObject:atIndex:", anObject, index); + return index; +} +},["unsigned","id","CPArray"]), new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"), function $CPArray__replaceObjectAtIndex_withObject_(self, _cmd, anIndex, anObject) +{ with(self) +{ + self[anIndex] = anObject; +} +},["void","int","id"]), new objj_method(sel_getUid("replaceObjectsAtIndexes:withObjects:"), function $CPArray__replaceObjectsAtIndexes_withObjects_(self, _cmd, anIndexSet, objects) +{ with(self) +{ + var i = 0, + index = objj_msgSend(anIndexSet, "firstIndex"); + while (index != CPNotFound) + { + objj_msgSend(self, "replaceObjectAtIndex:withObject:", index, objects[i++]); + index = objj_msgSend(anIndexSet, "indexGreaterThanIndex:", index); + } +} +},["void","CPIndexSet","CPArray"]), new objj_method(sel_getUid("replaceObjectsInRange:withObjectsFromArray:range:"), function $CPArray__replaceObjectsInRange_withObjectsFromArray_range_(self, _cmd, aRange, anArray, otherRange) +{ with(self) +{ + if (!otherRange.location && otherRange.length == objj_msgSend(anArray, "count")) + objj_msgSend(self, "replaceObjectsInRange:withObjectsFromArray:", aRange, anArray); + else + splice.apply(self, [aRange.location, aRange.length].concat(objj_msgSend(anArray, "subarrayWithRange:", otherRange))); +} +},["void","CPRange","CPArray","CPRange"]), new objj_method(sel_getUid("replaceObjectsInRange:withObjectsFromArray:"), function $CPArray__replaceObjectsInRange_withObjectsFromArray_(self, _cmd, aRange, anArray) +{ with(self) +{ + splice.apply(self, [aRange.location, aRange.length].concat(anArray)); +} +},["void","CPRange","CPArray"]), new objj_method(sel_getUid("setArray:"), function $CPArray__setArray_(self, _cmd, anArray) +{ with(self) +{ + if (self == anArray) + return; + splice.apply(self, [0, length].concat(anArray)); +} +},["void","CPArray"]), new objj_method(sel_getUid("removeAllObjects"), function $CPArray__removeAllObjects(self, _cmd) +{ with(self) +{ + splice(0, length); +} +},["void"]), new objj_method(sel_getUid("removeLastObject"), function $CPArray__removeLastObject(self, _cmd) +{ with(self) +{ + pop(); +} +},["void"]), new objj_method(sel_getUid("removeObject:"), function $CPArray__removeObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "removeObject:inRange:", anObject, CPMakeRange(0, length)); +} +},["void","id"]), new objj_method(sel_getUid("removeObject:inRange:"), function $CPArray__removeObject_inRange_(self, _cmd, anObject, aRange) +{ with(self) +{ + var index; + while ((index = objj_msgSend(self, "indexOfObject:inRange:", anObject, aRange)) != CPNotFound) + { + objj_msgSend(self, "removeObjectAtIndex:", index); + aRange = CPIntersectionRange(CPMakeRange(index, length - index), aRange); + } +} +},["void","id","CPRange"]), new objj_method(sel_getUid("removeObjectAtIndex:"), function $CPArray__removeObjectAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + splice(anIndex, 1); +} +},["void","int"]), new objj_method(sel_getUid("removeObjectsAtIndexes:"), function $CPArray__removeObjectsAtIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + var index = objj_msgSend(anIndexSet, "lastIndex"); + while (index != CPNotFound) + { + objj_msgSend(self, "removeObjectAtIndex:", index); + index = objj_msgSend(anIndexSet, "indexLessThanIndex:", index); + } +} +},["void","CPIndexSet"]), new objj_method(sel_getUid("removeObjectIdenticalTo:"), function $CPArray__removeObjectIdenticalTo_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "removeObjectIdenticalTo:inRange:", anObject, CPMakeRange(0, objj_msgSend(self, "count"))); +} +},["void","id"]), new objj_method(sel_getUid("removeObjectIdenticalTo:inRange:"), function $CPArray__removeObjectIdenticalTo_inRange_(self, _cmd, anObject, aRange) +{ with(self) +{ + var index, + count = objj_msgSend(self, "count"); + while ((index = objj_msgSend(self, "indexOfObjectIdenticalTo:inRange:", anObject, aRange)) !== CPNotFound) + { + objj_msgSend(self, "removeObjectAtIndex:", index); + aRange = CPIntersectionRange(CPMakeRange(index, (--count) - index), aRange); + } +} +},["void","id","CPRange"]), new objj_method(sel_getUid("removeObjectsInArray:"), function $CPArray__removeObjectsInArray_(self, _cmd, anArray) +{ with(self) +{ + var index = 0, + count = objj_msgSend(anArray, "count"); + for (; index < count; ++index) + objj_msgSend(self, "removeObject:", anArray[index]); +} +},["void","CPArray"]), new objj_method(sel_getUid("removeObjectsInRange:"), function $CPArray__removeObjectsInRange_(self, _cmd, aRange) +{ with(self) +{ + splice(aRange.location, aRange.length); +} +},["void","CPRange"]), new objj_method(sel_getUid("exchangeObjectAtIndex:withObjectAtIndex:"), function $CPArray__exchangeObjectAtIndex_withObjectAtIndex_(self, _cmd, anIndex, otherIndex) +{ with(self) +{ + var temporary = self[anIndex]; + self[anIndex] = self[otherIndex]; + self[otherIndex] = temporary; +} +},["void","unsigned","unsigned"]), new objj_method(sel_getUid("sortUsingDescriptors:"), function $CPArray__sortUsingDescriptors_(self, _cmd, descriptors) +{ with(self) +{ + objj_msgSend(self, "sortUsingFunction:context:", compareObjectsUsingDescriptors, descriptors); +} +},["CPArray","CPArray"]), new objj_method(sel_getUid("sortUsingFunction:context:"), function $CPArray__sortUsingFunction_context_(self, _cmd, aFunction, aContext) +{ with(self) +{ + var h, i, j, k, l, m, n = objj_msgSend(self, "count"), o; + var A, B = []; + for (h = 1; h < n; h += h) + { + for (m = n - 1 - h; m >= 0; m -= h + h) + { + l = m - h + 1; + if (l < 0) + l = 0; + for (i = 0, j = l; j <= m; i++, j++) + B[i] = self[j]; + for (i = 0, k = l; k < j && j <= m + h; k++) + { + A = self[j]; + o = aFunction(A, B[i], aContext); + if (o == CPOrderedDescending || o == CPOrderedSame) + self[k] = B[i++]; + else + { + self[k] = A; + j++; + } + } + while (k < j) + self[k++] = B[i++]; + } + } +} +},["void","Function","id"]), new objj_method(sel_getUid("sortUsingSelector:"), function $CPArray__sortUsingSelector_(self, _cmd, aSelector) +{ with(self) +{ + objj_msgSend(self, "sortUsingFunction:context:", selectorCompare, aSelector); +} +},["void","SEL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("arrayWithCapacity:"), function $CPArray__arrayWithCapacity_(self, _cmd, aCapacity) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithCapacity:", aCapacity); +} +},["CPArray","unsigned"])]); +} +var selectorCompare = selectorCompare= function(object1, object2, selector) +{ + return objj_msgSend(object1, "performSelector:withObject:", selector, object2); +} +var compareObjectsUsingDescriptors= compareObjectsUsingDescriptors= function(lhs, rhs, descriptors) +{ + var result = CPOrderedSame, + i = 0, + n = objj_msgSend(descriptors, "count"); + while (i < n && result === CPOrderedSame) + result = objj_msgSend(descriptors[i++], "compareObject:withObject:", lhs, rhs); + return result; +} +{ +var the_class = objj_getClass("CPArray") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPArray__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(aCoder, "decodeObjectForKey:", "CP.objects"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPArray__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "_encodeArrayOfObjects:forKey:", self, "CP.objects"); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPArray, "CPMutableArray"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} +Array.prototype.isa = CPArray; +objj_msgSend(CPArray, "initialize"); + +p;20;CPAttributedString.jt;20904;@STATIC;1.0;i;14;CPDictionary.ji;10;CPObject.ji;9;CPRange.ji;10;CPString.jt;20822;objj_executeFile("CPDictionary.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPRange.j", YES); +objj_executeFile("CPString.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPAttributedString"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_string"), new objj_ivar("_rangeEntries")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithString:"), function $CPAttributedString__initWithString_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(self, "initWithString:attributes:", aString, nil); +} +},["id","CPString"]), new objj_method(sel_getUid("initWithAttributedString:"), function $CPAttributedString__initWithAttributedString_(self, _cmd, aString) +{ with(self) +{ + var string = objj_msgSend(self, "initWithString:attributes:", "", nil); + objj_msgSend(string, "setAttributedString:", aString); + return string; +} +},["id","CPAttributedString"]), new objj_method(sel_getUid("initWithString:attributes:"), function $CPAttributedString__initWithString_attributes_(self, _cmd, aString, attributes) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPAttributedString").super_class }, "init"); + if (self) + { + if (!attributes) + attributes = objj_msgSend(CPDictionary, "dictionary"); + _string = ""+aString; + _rangeEntries = [makeRangeEntry(CPMakeRange(0, _string.length), attributes)]; + } + return self; +} +},["id","CPString","CPDictionary"]), new objj_method(sel_getUid("string"), function $CPAttributedString__string(self, _cmd) +{ with(self) +{ + return _string; +} +},["CPString"]), new objj_method(sel_getUid("mutableString"), function $CPAttributedString__mutableString(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "string"); +} +},["CPString"]), new objj_method(sel_getUid("length"), function $CPAttributedString__length(self, _cmd) +{ with(self) +{ + return _string.length; +} +},["unsigned"]), new objj_method(sel_getUid("_indexOfEntryWithIndex:"), function $CPAttributedString___indexOfEntryWithIndex_(self, _cmd, anIndex) +{ with(self) +{ + if (anIndex < 0 || anIndex > _string.length || anIndex === undefined) + return CPNotFound; + var sortFunction = function(index, entry) + { + if (CPLocationInRange(index, entry.range)) + return CPOrderedSame; + else if (CPMaxRange(entry.range) <= index) + return CPOrderedDescending; + else + return CPOrderedAscending; + } + return objj_msgSend(_rangeEntries, "indexOfObject:sortedByFunction:", anIndex, sortFunction); +} +},["unsigned","unsigned"]), new objj_method(sel_getUid("attributesAtIndex:effectiveRange:"), function $CPAttributedString__attributesAtIndex_effectiveRange_(self, _cmd, anIndex, aRange) +{ with(self) +{ + var entryIndex = objj_msgSend(self, "_indexOfEntryWithIndex:", anIndex); + if (entryIndex == CPNotFound) + return nil; + var matchingRange = _rangeEntries[entryIndex]; + if (aRange) + { + aRange.location = matchingRange.range.location; + aRange.length = matchingRange.range.length; + } + return matchingRange.attributes; +} +},["CPDictionary","unsigned","CPRangePointer"]), new objj_method(sel_getUid("attributesAtIndex:longestEffectiveRange:inRange:"), function $CPAttributedString__attributesAtIndex_longestEffectiveRange_inRange_(self, _cmd, anIndex, aRange, rangeLimit) +{ with(self) +{ + var startingEntryIndex = objj_msgSend(self, "_indexOfEntryWithIndex:", anIndex); + if (startingEntryIndex == CPNotFound) + return nil; + if (!aRange) + return _rangeEntries[startingEntryIndex].attributes; + if (CPRangeInRange(_rangeEntries[startingEntryIndex].range, rangeLimit)) + { + aRange.location = rangeLimit.location; + aRange.length = rangeLimit.length; + return _rangeEntries[startingEntryIndex].attributes; + } + var nextRangeIndex = startingEntryIndex - 1, + currentEntry = _rangeEntries[startingEntryIndex], + comparisonDict = currentEntry.attributes; + while (nextRangeIndex >= 0) + { + var nextEntry = _rangeEntries[nextRangeIndex]; + if (CPMaxRange(nextEntry.range) > rangeLimit.location && objj_msgSend(nextEntry.attributes, "isEqualToDictionary:", comparisonDict)) + { + currentEntry = nextEntry; + nextRangeIndex--; + } + else + break; + } + aRange.location = MAX(currentEntry.range.location, rangeLimit.location); + currentEntry = _rangeEntries[startingEntryIndex]; + nextRangeIndex = startingEntryIndex + 1; + while (nextRangeIndex < _rangeEntries.length) + { + var nextEntry = _rangeEntries[nextRangeIndex]; + if (nextEntry.range.location < CPMaxRange(rangeLimit) && objj_msgSend(nextEntry.attributes, "isEqualToDictionary:", comparisonDict)) + { + currentEntry = nextEntry; + nextRangeIndex++; + } + else + break; + } + aRange.length = MIN(CPMaxRange(currentEntry.range), CPMaxRange(rangeLimit)) - aRange.location; + return comparisonDict; +} +},["CPDictionary","unsigned","CPRangePointer","CPRange"]), new objj_method(sel_getUid("attribute:atIndex:effectiveRange:"), function $CPAttributedString__attribute_atIndex_effectiveRange_(self, _cmd, attribute, index, aRange) +{ with(self) +{ + if (!attribute) + { + if (aRange) + { + aRange.location = 0; + aRange.length = _string.length; + } + return nil; + } + return objj_msgSend(objj_msgSend(self, "attributesAtIndex:effectiveRange:", index, aRange), "valueForKey:", attribute); +} +},["id","CPString","unsigned","CPRangePointer"]), new objj_method(sel_getUid("attribute:atIndex:longestEffectiveRange:inRange:"), function $CPAttributedString__attribute_atIndex_longestEffectiveRange_inRange_(self, _cmd, attribute, anIndex, aRange, rangeLimit) +{ with(self) +{ + var startingEntryIndex = objj_msgSend(self, "_indexOfEntryWithIndex:", anIndex); + if (startingEntryIndex == CPNotFound || !attribute) + return nil; + if (!aRange) + return objj_msgSend(_rangeEntries[startingEntryIndex].attributes, "objectForKey:", attribute); + if (CPRangeInRange(_rangeEntries[startingEntryIndex].range, rangeLimit)) + { + aRange.location = rangeLimit.location; + aRange.length = rangeLimit.length; + return objj_msgSend(_rangeEntries[startingEntryIndex].attributes, "objectForKey:", attribute); + } + var nextRangeIndex = startingEntryIndex - 1, + currentEntry = _rangeEntries[startingEntryIndex], + comparisonAttribute = objj_msgSend(currentEntry.attributes, "objectForKey:", attribute); + while (nextRangeIndex >= 0) + { + var nextEntry = _rangeEntries[nextRangeIndex]; + if (CPMaxRange(nextEntry.range) > rangeLimit.location && isEqual(comparisonAttribute, objj_msgSend(nextEntry.attributes, "objectForKey:", attribute))) + { + currentEntry = nextEntry; + nextRangeIndex--; + } + else + break; + } + aRange.location = MAX(currentEntry.range.location, rangeLimit.location); + currentEntry = _rangeEntries[startingEntryIndex]; + nextRangeIndex = startingEntryIndex + 1; + while (nextRangeIndex < _rangeEntries.length) + { + var nextEntry = _rangeEntries[nextRangeIndex]; + if (nextEntry.range.location < CPMaxRange(rangeLimit) && isEqual(comparisonAttribute, objj_msgSend(nextEntry.attributes, "objectForKey:", attribute))) + { + currentEntry = nextEntry; + nextRangeIndex++; + } + else + break; + } + aRange.length = MIN(CPMaxRange(currentEntry.range), CPMaxRange(rangeLimit)) - aRange.location; + return comparisonAttribute; +} +},["id","CPString","unsigned","CPRangePointer","CPRange"]), new objj_method(sel_getUid("isEqualToAttributedString:"), function $CPAttributedString__isEqualToAttributedString_(self, _cmd, aString) +{ with(self) +{ + if (!aString) + return NO; + if (_string != objj_msgSend(aString, "string")) + return NO; + var myRange = CPMakeRange(), + comparisonRange = CPMakeRange(), + myAttributes = objj_msgSend(self, "attributesAtIndex:effectiveRange:", 0, myRange), + comparisonAttributes = objj_msgSend(aString, "attributesAtIndex:effectiveRange:", 0, comparisonRange), + length = _string.length; + while (CPMaxRange(CPUnionRange(myRange, comparisonRange)) < length) + { + if (CPIntersectionRange(myRange, comparisonRange).length > 0 && !objj_msgSend(myAttributes, "isEqualToDictionary:", comparisonAttributes)) + return NO; + if (CPMaxRange(myRange) < CPMaxRange(comparisonRange)) + myAttributes = objj_msgSend(self, "attributesAtIndex:effectiveRange:", CPMaxRange(myRange), myRange); + else + comparisonAttributes = objj_msgSend(aString, "attributesAtIndex:effectiveRange:", CPMaxRange(comparisonRange), comparisonRange); + } + return YES; +} +},["BOOL","CPAttributedString"]), new objj_method(sel_getUid("isEqual:"), function $CPAttributedString__isEqual_(self, _cmd, anObject) +{ with(self) +{ + if (anObject == self) + return YES; + if (objj_msgSend(anObject, "isKindOfClass:", objj_msgSend(self, "class"))) + return objj_msgSend(self, "isEqualToAttributedString:", anObject); + return NO; +} +},["BOOL","id"]), new objj_method(sel_getUid("attributedSubstringFromRange:"), function $CPAttributedString__attributedSubstringFromRange_(self, _cmd, aRange) +{ with(self) +{ + if (!aRange || CPMaxRange(aRange) > _string.length || aRange.location < 0) + objj_msgSend(CPException, "raise:reason:", CPRangeException, "tried to get attributedSubstring for an invalid range: "+(aRange?CPStringFromRange(aRange):"nil")); + var newString = objj_msgSend(objj_msgSend(CPAttributedString, "alloc"), "initWithString:", _string.substring(aRange.location, CPMaxRange(aRange))), + entryIndex = objj_msgSend(self, "_indexOfEntryWithIndex:", aRange.location), + currentRangeEntry = _rangeEntries[entryIndex], + lastIndex = CPMaxRange(aRange); + newString._rangeEntries = []; + while (currentRangeEntry && CPMaxRange(currentRangeEntry.range) < lastIndex) + { + var newEntry = copyRangeEntry(currentRangeEntry); + newEntry.range.location -= aRange.location; + if (newEntry.range.location < 0) + { + newEntry.range.length += newEntry.range.location; + newEntry.range.location = 0; + } + newString._rangeEntries.push(newEntry); + currentRangeEntry = _rangeEntries[++entryIndex]; + } + if (currentRangeEntry) + { + var newRangeEntry = copyRangeEntry(currentRangeEntry); + newRangeEntry.range.length = CPMaxRange(aRange) - newRangeEntry.range.location; + newRangeEntry.range.location -= aRange.location; + if (newRangeEntry.range.location < 0) + { + newRangeEntry.range.length += newRangeEntry.range.location; + newRangeEntry.range.location = 0; + } + newString._rangeEntries.push(newRangeEntry); + } + return newString; +} +},["CPAttributedString","CPRange"]), new objj_method(sel_getUid("replaceCharactersInRange:withString:"), function $CPAttributedString__replaceCharactersInRange_withString_(self, _cmd, aRange, aString) +{ with(self) +{ + if (!aString) + aString = ""; + var startingIndex = objj_msgSend(self, "_indexOfEntryWithIndex:", aRange.location), + startingRangeEntry = _rangeEntries[startingIndex], + endingIndex = objj_msgSend(self, "_indexOfEntryWithIndex:", MAX(CPMaxRange(aRange) - 1, 0)), + endingRangeEntry = _rangeEntries[endingIndex], + additionalLength = aString.length - aRange.length; + _string = _string.substring(0, aRange.location) + aString + _string.substring(CPMaxRange(aRange)); + if (startingIndex == endingIndex) + startingRangeEntry.range.length += additionalLength; + else + { + endingRangeEntry.range.length = CPMaxRange(endingRangeEntry.range) - CPMaxRange(aRange); + endingRangeEntry.range.location = CPMaxRange(aRange); + startingRangeEntry.range.length = CPMaxRange(aRange) - startingRangeEntry.range.location; + _rangeEntries.splice(startingIndex, endingIndex - startingIndex); + } + endingIndex = startingIndex + 1; + while(endingIndex < _rangeEntries.length) + _rangeEntries[endingIndex++].range.location+=additionalLength; +} +},["void","CPRange","CPString"]), new objj_method(sel_getUid("deleteCharactersInRange:"), function $CPAttributedString__deleteCharactersInRange_(self, _cmd, aRange) +{ with(self) +{ + objj_msgSend(self, "replaceCharactersInRange:withString:", aRange, nil); +} +},["void","CPRange"]), new objj_method(sel_getUid("setAttributes:range:"), function $CPAttributedString__setAttributes_range_(self, _cmd, aDictionary, aRange) +{ with(self) +{ + var startingEntryIndex = objj_msgSend(self, "_indexOfRangeEntryForIndex:splitOnMaxIndex:", aRange.location, YES), + endingEntryIndex = objj_msgSend(self, "_indexOfRangeEntryForIndex:splitOnMaxIndex:", CPMaxRange(aRange), YES), + current = startingEntryIndex; + if (endingEntryIndex == CPNotFound) + endingEntryIndex = _rangeEntries.length; + while (current < endingEntryIndex) + _rangeEntries[current++].attributes = objj_msgSend(aDictionary, "copy"); + objj_msgSend(self, "_coalesceRangeEntriesFromIndex:toIndex:", startingEntryIndex, endingEntryIndex); +} +},["void","CPDictionary","CPRange"]), new objj_method(sel_getUid("addAttributes:range:"), function $CPAttributedString__addAttributes_range_(self, _cmd, aDictionary, aRange) +{ with(self) +{ + var startingEntryIndex = objj_msgSend(self, "_indexOfRangeEntryForIndex:splitOnMaxIndex:", aRange.location, YES), + endingEntryIndex = objj_msgSend(self, "_indexOfRangeEntryForIndex:splitOnMaxIndex:", CPMaxRange(aRange), YES), + current = startingEntryIndex; + if (endingEntryIndex == CPNotFound) + endingEntryIndex = _rangeEntries.length; + while (current < endingEntryIndex) + { + var keys = objj_msgSend(aDictionary, "allKeys"), + count = objj_msgSend(keys, "count"); + while (count--) + objj_msgSend(_rangeEntries[current].attributes, "setObject:forKey:", objj_msgSend(aDictionary, "objectForKey:", keys[count]), keys[count]); + current++; + } + objj_msgSend(self, "_coalesceRangeEntriesFromIndex:toIndex:", startingEntryIndex, endingEntryIndex); +} +},["void","CPDictionary","CPRange"]), new objj_method(sel_getUid("addAttribute:value:range:"), function $CPAttributedString__addAttribute_value_range_(self, _cmd, anAttribute, aValue, aRange) +{ with(self) +{ + objj_msgSend(self, "addAttributes:range:", objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", aValue, anAttribute), aRange); +} +},["void","CPString","id","CPRange"]), new objj_method(sel_getUid("removeAttribute:range:"), function $CPAttributedString__removeAttribute_range_(self, _cmd, anAttribute, aRange) +{ with(self) +{ + var startingEntryIndex = objj_msgSend(self, "_indexOfRangeEntryForIndex:splitOnMaxIndex:", aRange.location, YES), + endingEntryIndex = objj_msgSend(self, "_indexOfRangeEntryForIndex:splitOnMaxIndex:", CPMaxRange(aRange), YES), + current = startingEntryIndex; + if (endingEntryIndex == CPNotFound) + endingEntryIndex = _rangeEntries.length; + while (current < endingEntryIndex) + objj_msgSend(_rangeEntries[current++].attributes, "removeObjectForKey:", anAttribute); + objj_msgSend(self, "_coalesceRangeEntriesFromIndex:toIndex:", startingEntryIndex, endingEntryIndex); +} +},["void","CPString","CPRange"]), new objj_method(sel_getUid("appendAttributedString:"), function $CPAttributedString__appendAttributedString_(self, _cmd, aString) +{ with(self) +{ + objj_msgSend(self, "insertAttributedString:atIndex:", aString, _string.length); +} +},["void","CPAttributedString"]), new objj_method(sel_getUid("insertAttributedString:atIndex:"), function $CPAttributedString__insertAttributedString_atIndex_(self, _cmd, aString, anIndex) +{ with(self) +{ + if (anIndex < 0 || anIndex > objj_msgSend(self, "length")) + objj_msgSend(CPException, "raise:reason:", CPRangeException, "tried to insert attributed string at an invalid index: "+anIndex); + var entryIndexOfNextEntry = objj_msgSend(self, "_indexOfRangeEntryForIndex:splitOnMaxIndex:", anIndex, YES), + otherRangeEntries = aString._rangeEntries, + length = objj_msgSend(aString, "length"); + if (entryIndexOfNextEntry == CPNotFound) + entryIndexOfNextEntry = _rangeEntries.length; + _string = _string.substring(0, anIndex) + aString._string + _string.substring(anIndex); + var current = entryIndexOfNextEntry; + while (current < _rangeEntries.length) + _rangeEntries[current++].range.location += length; + var newRangeEntryCount = otherRangeEntries.length, + index = 0; + while (index < newRangeEntryCount) + { + var entryCopy = copyRangeEntry(otherRangeEntries[index++]); + entryCopy.range.location += anIndex; + _rangeEntries.splice(entryIndexOfNextEntry - 1 + index, 0, entryCopy); + } +} +},["void","CPAttributedString","unsigned"]), new objj_method(sel_getUid("replaceCharactersInRange:withAttributedString:"), function $CPAttributedString__replaceCharactersInRange_withAttributedString_(self, _cmd, aRange, aString) +{ with(self) +{ + objj_msgSend(self, "deleteCharactersInRange:", aRange); + objj_msgSend(self, "insertAttributedString:atIndex:", aString, aRange.location); +} +},["void","CPRange","CPAttributedString"]), new objj_method(sel_getUid("setAttributedString:"), function $CPAttributedString__setAttributedString_(self, _cmd, aString) +{ with(self) +{ + _string = aString._string; + _rangeEntries = []; + var i = 0, + count = aString._rangeEntries.length; + for (; i < count; i++) + _rangeEntries.push(copyRangeEntry(aString._rangeEntries[i])); +} +},["void","CPAttributedString"]), new objj_method(sel_getUid("_indexOfRangeEntryForIndex:splitOnMaxIndex:"), function $CPAttributedString___indexOfRangeEntryForIndex_splitOnMaxIndex_(self, _cmd, characterIndex, split) +{ with(self) +{ + var index = objj_msgSend(self, "_indexOfEntryWithIndex:", characterIndex); + if (index < 0) + return index; + var rangeEntry = _rangeEntries[index]; + if (rangeEntry.range.location == characterIndex || (CPMaxRange(rangeEntry.range) - 1 == characterIndex && !split)) + return index; + var newEntries = splitRangeEntryAtIndex(rangeEntry, characterIndex); + _rangeEntries.splice(index, 1, newEntries[0], newEntries[1]); + index++; + return index; +} +},["Number","unsigned","BOOL"]), new objj_method(sel_getUid("_coalesceRangeEntriesFromIndex:toIndex:"), function $CPAttributedString___coalesceRangeEntriesFromIndex_toIndex_(self, _cmd, start, end) +{ with(self) +{ + var current = start; + if (end >= _rangeEntries.length) + end = _rangeEntries.length - 1; + while (current < end) + { + var a = _rangeEntries[current], + b = _rangeEntries[current + 1]; + if (objj_msgSend(a.attributes, "isEqualToDictionary:", b.attributes)) + { + a.range.length = CPMaxRange(b.range) - a.range.location; + _rangeEntries.splice(current + 1, 1); + end--; + } + else + current++; + } +} +},["void","unsigned","unsigned"]), new objj_method(sel_getUid("beginEditing"), function $CPAttributedString__beginEditing(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("endEditing"), function $CPAttributedString__endEditing(self, _cmd) +{ with(self) +{ +} +},["void"])]); +} +{var the_class = objj_allocateClassPair(CPAttributedString, "CPMutableAttributedString"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} +var isEqual = isEqual= function(a, b) +{ + if (a == b) + return YES; + if (objj_msgSend(a, "respondsToSelector:", sel_getUid("isEqual:")) && objj_msgSend(a, "isEqual:", b)) + return YES; + return NO; +} +var makeRangeEntry = makeRangeEntry= function( aRange, attributes) +{ + return {range:aRange, attributes:objj_msgSend(attributes, "copy")}; +} +var copyRangeEntry = copyRangeEntry= function( aRangeEntry) +{ + return makeRangeEntry(CPCopyRange(aRangeEntry.range), objj_msgSend(aRangeEntry.attributes, "copy")); +} +var splitRangeEntry = splitRangeEntryAtIndex= function( aRangeEntry, anIndex) +{ + var newRangeEntry = copyRangeEntry(aRangeEntry), + cachedIndex = CPMaxRange(aRangeEntry.range); + aRangeEntry.range.length = anIndex - aRangeEntry.range.location; + newRangeEntry.range.location = anIndex; + newRangeEntry.range.length = cachedIndex - anIndex; + newRangeEntry.attributes = objj_msgSend(newRangeEntry.attributes, "copy"); + return [aRangeEntry, newRangeEntry]; +} + +p;10;CPBundle.jt;5609;@STATIC;1.0;i;14;CPDictionary.ji;10;CPObject.jt;5556;objj_executeFile("CPDictionary.j", YES); +objj_executeFile("CPObject.j", YES); +var CPBundlesForURLStrings = { }; +{var the_class = objj_allocateClassPair(CPObject, "CPBundle"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_bundle"), new objj_ivar("_delegate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithURL:"), function $CPBundle__initWithURL_(self, _cmd, aURL) +{ with(self) +{ + aURL = new CFURL(aURL); + var URLString = aURL.absoluteString(), + existingBundle = CPBundlesForURLStrings[URLString]; + if (existingBundle) + return existingBundle; + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBundle").super_class }, "init"); + if (self) + { + _bundle = new CFBundle(aURL); + CPBundlesForURLStrings[URLString] = self; + } + return self; +} +},["id","CPURL"]), new objj_method(sel_getUid("initWithPath:"), function $CPBundle__initWithPath_(self, _cmd, aPath) +{ with(self) +{ + return objj_msgSend(self, "initWithURL:", aPath); +} +},["id","CPString"]), new objj_method(sel_getUid("classNamed:"), function $CPBundle__classNamed_(self, _cmd, aString) +{ with(self) +{ +} +},["Class","CPString"]), new objj_method(sel_getUid("bundleURL"), function $CPBundle__bundleURL(self, _cmd) +{ with(self) +{ + return _bundle.bundleURL(); +} +},["CPURL"]), new objj_method(sel_getUid("bundlePath"), function $CPBundle__bundlePath(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "bundleURL"), "path"); +} +},["CPString"]), new objj_method(sel_getUid("resourcePath"), function $CPBundle__resourcePath(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "resourceURL"), "path"); +} +},["CPString"]), new objj_method(sel_getUid("resourceURL"), function $CPBundle__resourceURL(self, _cmd) +{ with(self) +{ + return _bundle.resourcesDirectoryURL(); +} +},["CPURL"]), new objj_method(sel_getUid("principalClass"), function $CPBundle__principalClass(self, _cmd) +{ with(self) +{ + var className = objj_msgSend(self, "objectForInfoDictionaryKey:", "CPPrincipalClass"); + return className ? CPClassFromString(className) : Nil; +} +},["Class"]), new objj_method(sel_getUid("bundleIdentifier"), function $CPBundle__bundleIdentifier(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "objectForInfoDictionaryKey:", "CPBundleIdentifier"); +} +},["CPString"]), new objj_method(sel_getUid("isLoaded"), function $CPBundle__isLoaded(self, _cmd) +{ with(self) +{ + return _bundle.isLoaded(); +} +},["BOOL"]), new objj_method(sel_getUid("pathForResource:"), function $CPBundle__pathForResource_(self, _cmd, aFilename) +{ with(self) +{ + return _bundle.pathForResource(aFilename); +} +},["CPString","CPString"]), new objj_method(sel_getUid("infoDictionary"), function $CPBundle__infoDictionary(self, _cmd) +{ with(self) +{ + return _bundle.infoDictionary(); +} +},["CPDictionary"]), new objj_method(sel_getUid("objectForInfoDictionaryKey:"), function $CPBundle__objectForInfoDictionaryKey_(self, _cmd, aKey) +{ with(self) +{ + return _bundle.valueForInfoDictionaryKey(aKey); +} +},["id","CPString"]), new objj_method(sel_getUid("loadWithDelegate:"), function $CPBundle__loadWithDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; + _bundle.addEventListener("load", function() + { + objj_msgSend(_delegate, "bundleDidFinishLoading:", self); + }); + _bundle.addEventListener("error", function() + { + CPLog.error("Could not find bundle: " + self); + }); + _bundle.load(YES); +} +},["void","id"]), new objj_method(sel_getUid("staticResourceURLs"), function $CPBundle__staticResourceURLs(self, _cmd) +{ with(self) +{ + var staticResourceURLs = [], + staticResources = _bundle.staticResources(), + index = 0, + count = objj_msgSend(staticResources, "count"); + for (; index < count; ++index) + objj_msgSend(staticResourceURLs, "addObject:", staticResources[index].URL()); + return staticResourceURLs; +} +},["CPArray"]), new objj_method(sel_getUid("environments"), function $CPBundle__environments(self, _cmd) +{ with(self) +{ + return _bundle.environments(); +} +},["CPArray"]), new objj_method(sel_getUid("mostEligibleEnvironment"), function $CPBundle__mostEligibleEnvironment(self, _cmd) +{ with(self) +{ + return _bundle.mostEligibleEnvironment(); +} +},["CPString"]), new objj_method(sel_getUid("description"), function $CPBundle__description(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPBundle").super_class }, "description") + "(" + objj_msgSend(self, "bundlePath") + ")"; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("bundleWithURL:"), function $CPBundle__bundleWithURL_(self, _cmd, aURL) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithURL:", aURL); +} +},["CPBundle","CPURL"]), new objj_method(sel_getUid("bundleWithPath:"), function $CPBundle__bundleWithPath_(self, _cmd, aPath) +{ with(self) +{ + return objj_msgSend(self, "bundleWithURL:", aPath); +} +},["CPBundle","CPString"]), new objj_method(sel_getUid("bundleForClass:"), function $CPBundle__bundleForClass_(self, _cmd, aClass) +{ with(self) +{ + return objj_msgSend(self, "bundleWithURL:", CFBundle.bundleForClass(aClass).bundleURL()); +} +},["CPBundle","Class"]), new objj_method(sel_getUid("mainBundle"), function $CPBundle__mainBundle(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPBundle, "bundleWithPath:", CFBundle.mainBundle().bundleURL()); +} +},["CPBundle"])]); +} + +p;16;CPCharacterSet.jt;34109;@STATIC;1.0;I;21;Foundation/CPObject.jt;34063;objj_executeFile("Foundation/CPObject.j", NO); +var _builtInCharacterSets = {}; +{var the_class = objj_allocateClassPair(CPObject, "CPCharacterSet"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_inverted")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPCharacterSet__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCharacterSet").super_class }, "init"); + _inverted = NO; + return self; +} +},["id"]), new objj_method(sel_getUid("invert"), function $CPCharacterSet__invert(self, _cmd) +{ with(self) +{ + _inverted = !_inverted; +} +},["void"]), new objj_method(sel_getUid("characterIsMember:"), function $CPCharacterSet__characterIsMember_(self, _cmd, aCharacter) +{ with(self) +{ +} +},["BOOL","CPString"]), new objj_method(sel_getUid("hasMemberInPlane:"), function $CPCharacterSet__hasMemberInPlane_(self, _cmd, aPlane) +{ with(self) +{ +} +},["BOOL","int"]), new objj_method(sel_getUid("_setInverted:"), function $CPCharacterSet___setInverted_(self, _cmd, flag) +{ with(self) +{ + _inverted = flag; +} +},["void",null])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("characterSetWithCharactersInString:"), function $CPCharacterSet__characterSetWithCharactersInString_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_CPStringContentCharacterSet, "alloc"), "initWithString:", aString); +} +},["id","CPString"]), new objj_method(sel_getUid("characterSetWithRange:"), function $CPCharacterSet__characterSetWithRange_(self, _cmd, aRange) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_CPRangeCharacterSet, "alloc"), "initWithRange:", aRange); +} +},["id","CPRange"]), new objj_method(sel_getUid("alphanumericCharacterSet"), function $CPCharacterSet__alphanumericCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("controlCharacterSet"), function $CPCharacterSet__controlCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("decimalDigitCharacterSet"), function $CPCharacterSet__decimalDigitCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("decomposableCharacterSet"), function $CPCharacterSet__decomposableCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("illegalCharacterSet"), function $CPCharacterSet__illegalCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("letterCharacterSet"), function $CPCharacterSet__letterCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("lowercaseLetterCharacterSet"), function $CPCharacterSet__lowercaseLetterCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("nonBaseCharacterSet"), function $CPCharacterSet__nonBaseCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("punctuationCharacterSet"), function $CPCharacterSet__punctuationCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("uppercaseLetterCharacterSet"), function $CPCharacterSet__uppercaseLetterCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("whitespaceAndNewlineCharacterSet"), function $CPCharacterSet__whitespaceAndNewlineCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("whitespaceCharacterSet"), function $CPCharacterSet__whitespaceCharacterSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPCharacterSet, "_sharedCharacterSetWithName:", _cmd); +} +},["id"]), new objj_method(sel_getUid("_sharedCharacterSetWithName:"), function $CPCharacterSet___sharedCharacterSetWithName_(self, _cmd, csname) +{ with(self) +{ + var cs = _builtInCharacterSets[csname]; + if(cs == nil) + { + var i, + ranges = objj_msgSend(CPArray, "array"), + rangeArray = eval(csname); + for(i = 0; i < rangeArray.length; i+= 2) + { + var loc = rangeArray[i]; + var length = rangeArray[i+1]; + var range = CPMakeRange(loc,length); + objj_msgSend(ranges, "addObject:", range); + } + cs = objj_msgSend(objj_msgSend(_CPRangeCharacterSet, "alloc"), "initWithRanges:", ranges); + _builtInCharacterSets[csname] = cs; + } + return cs; +} +},["id","id"])]); +} +{var the_class = objj_allocateClassPair(CPCharacterSet, "_CPRangeCharacterSet"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_ranges")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithRange:"), function $_CPRangeCharacterSet__initWithRange_(self, _cmd, r) +{ with(self) +{ + return objj_msgSend(self, "initWithRanges:", objj_msgSend(CPArray, "arrayWithObject:", r)); +} +},["id","CPRange"]), new objj_method(sel_getUid("initWithRanges:"), function $_CPRangeCharacterSet__initWithRanges_(self, _cmd, ranges) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPRangeCharacterSet").super_class }, "init")) + { + _ranges = ranges; + } + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("copy"), function $_CPRangeCharacterSet__copy(self, _cmd) +{ with(self) +{ + var set = objj_msgSend(objj_msgSend(_CPRangeCharacterSet, "alloc"), "initWithRanges:", _ranges); + objj_msgSend(set, "_setInverted:", _inverted); + return set; +} +},["id"]), new objj_method(sel_getUid("invertedSet"), function $_CPRangeCharacterSet__invertedSet(self, _cmd) +{ with(self) +{ + var set = objj_msgSend(objj_msgSend(_CPRangeCharacterSet, "alloc"), "initWithRanges:", _ranges); + objj_msgSend(set, "invert"); + return set; +} +},["id"]), new objj_method(sel_getUid("characterIsMember:"), function $_CPRangeCharacterSet__characterIsMember_(self, _cmd, aCharacter) +{ with(self) +{ + c = aCharacter.charCodeAt(0); + var enu = objj_msgSend(_ranges, "objectEnumerator"); + var range; + while (range = objj_msgSend(enu, "nextObject")) + { + if (CPLocationInRange(c, range)) + return !_inverted; + } + return _inverted; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("hasMemberInPlane:"), function $_CPRangeCharacterSet__hasMemberInPlane_(self, _cmd, plane) +{ with(self) +{ + var maxPlane = Math.floor((range.start + range.length - 1) / 65536); + return (plane <= maxPlane); +} +},["BOOL","int"]), new objj_method(sel_getUid("addCharactersInRange:"), function $_CPRangeCharacterSet__addCharactersInRange_(self, _cmd, aRange) +{ with(self) +{ + objj_msgSend(_ranges, "addObject:", aRange); +} +},["void","CPRange"]), new objj_method(sel_getUid("addCharactersInString:"), function $_CPRangeCharacterSet__addCharactersInString_(self, _cmd, aString) +{ with(self) +{ + var i; + for(i = 0; i < aString.length; i++) + { + var code = aString.charCodeAt(i); + var range = CPMakeRange(code,1); + objj_msgSend(_ranges, "addObject:", range); + } +} +},["void","CPString"])]); +} +{var the_class = objj_allocateClassPair(CPCharacterSet, "_CPStringContentCharacterSet"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_string")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithString:"), function $_CPStringContentCharacterSet__initWithString_(self, _cmd, s) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPStringContentCharacterSet").super_class }, "init")) + { + _string = s; + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("copy"), function $_CPStringContentCharacterSet__copy(self, _cmd) +{ with(self) +{ + var set = objj_msgSend(objj_msgSend(_CPStringContentCharacterSet, "alloc"), "initWithString:", _string); + objj_msgSend(set, "_setInverted:", _inverted); + return set; +} +},["id"]), new objj_method(sel_getUid("invertedSet"), function $_CPStringContentCharacterSet__invertedSet(self, _cmd) +{ with(self) +{ + var set = objj_msgSend(objj_msgSend(_CPStringContentCharacterSet, "alloc"), "initWithString:", _string); + objj_msgSend(set, "invert"); + return set; +} +},["id"]), new objj_method(sel_getUid("characterIsMember:"), function $_CPStringContentCharacterSet__characterIsMember_(self, _cmd, c) +{ with(self) +{ + return (_string.indexOf(c.charAt(0)) != -1) == !_inverted; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("description"), function $_CPStringContentCharacterSet__description(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPStringContentCharacterSet").super_class }, "description") + " { string = '" + _string + "'}"; +} +},["CPString"]), new objj_method(sel_getUid("hasMemberInPlane:"), function $_CPStringContentCharacterSet__hasMemberInPlane_(self, _cmd, plane) +{ with(self) +{ + return plane == 0; +} +},["BOOL","int"]), new objj_method(sel_getUid("addCharactersInRange:"), function $_CPStringContentCharacterSet__addCharactersInRange_(self, _cmd, aRange) +{ with(self) +{ + var i; + for(i = aRange.location; i < aRange.location + aRange.length; i++) + { + var s = String.fromCharCode(i); + if (!objj_msgSend(self, "characterIsMember:", s)) + _string = objj_msgSend(_string, "stringByAppendingString:", s); + } +} +},["void","CPRange"]), new objj_method(sel_getUid("addCharactersInString:"), function $_CPStringContentCharacterSet__addCharactersInString_(self, _cmd, aString) +{ with(self) +{ + var i; + for(i = 0; i < aString.length; i++) + { + var s = aString.charAt(i); + if (!objj_msgSend(self, "characterIsMember:", s)) + _string = objj_msgSend(_string, "stringByAppendingString:", s); + } +} +},["void","CPString"])]); +} +_CPCharacterSetTrimAtBeginning = 1 << 1; +_CPCharacterSetTrimAtEnd = 1 << 2; +{ +var the_class = objj_getClass("CPString") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPString\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("componentsSeparatedByCharactersInSet:"), function $CPString__componentsSeparatedByCharactersInSet_(self, _cmd, separator) +{ with(self) +{ + if (!separator) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "componentsSeparatedByCharactersInSet: the separator can't be 'nil'"); + var components = objj_msgSend(CPMutableArray, "array"), + componentRange = CPMakeRange(0, 0); + for (var i=0; i < self.length; i++) + { + if (objj_msgSend(separator, "characterIsMember:", self.charAt(i))) + { + componentRange.length = i - componentRange.location; + objj_msgSend(components, "addObject:", objj_msgSend(self, "substringWithRange:", componentRange)); + componentRange.location += componentRange.length + 1; + } + } + componentRange.length = self.length - componentRange.location; + objj_msgSend(components, "addObject:", objj_msgSend(self, "substringWithRange:", componentRange)); + return components; +} +},["CPArray","CPCharacterSet"]), new objj_method(sel_getUid("stringByTrimmingCharactersInSet:"), function $CPString__stringByTrimmingCharactersInSet_(self, _cmd, set) +{ with(self) +{ + return objj_msgSend(self, "_stringByTrimmingCharactersInSet:options:", set, _CPCharacterSetTrimAtBeginning | _CPCharacterSetTrimAtEnd); +} +},["id","CPCharacterSet"]), new objj_method(sel_getUid("_stringByTrimmingCharactersInSet:options:"), function $CPString___stringByTrimmingCharactersInSet_options_(self, _cmd, set, options) +{ with(self) +{ + var str = self; + if (options & _CPCharacterSetTrimAtBeginning) + { + var cutEdgeBeginning = 0; + while (cutEdgeBeginning < self.length && objj_msgSend(set, "characterIsMember:", self.charAt(cutEdgeBeginning))) + cutEdgeBeginning++; + str = str.substr(cutEdgeBeginning); + } + if (options & _CPCharacterSetTrimAtEnd) + { + var cutEdgeEnd = str.length; + while (cutEdgeEnd > 0 && objj_msgSend(set, "characterIsMember:", self.charAt(cutEdgeEnd))) + cutEdgeEnd--; + str = str.substr(0, cutEdgeEnd + 1); + } + return str; +} +},["id","CPCharacterSet","int"])]); +} +alphanumericCharacterSet = [ +48,10, +65,26, +97,26, +170,1, +178,2, +181,1, +185,2, +188,3, +192,23, +216,31, +248,458, +710,12, +736,5, +750,1, +768,112, +890,4, +902,1, +904,3, +908,1, +910,20, +931,44, +976,38, +1015,139, +1155,4, +1160,140, +1329,38, +1369,1, +1377,39, +1425,45, +1471,1, +1473,2, +1476,2, +1479,1, +1488,27, +1520,3, +1552,6, +1569,26, +1600,31, +1632,10, +1646,102, +1749,8, +1758,11, +1770,19, +1791,1, +1808,59, +1869,33, +1920,50, +1984,54, +2042,1, +2305,57, +2364,18, +2384,5, +2392,12, +2406,10, +2427,5, +2433,3, +2437,8, +2447,2, +2451,22, +2474,7, +2482,1, +2486,4, +2492,9, +2503,2, +2507,4, +2519,1, +2524,2, +2527,5, +2534,12, +2548,6, +2561,3, +2565,6, +2575,2, +2579,22, +2602,7, +2610,2, +2613,2, +2616,2, +2620,1, +2622,5, +2631,2, +2635,3, +2649,4, +2654,1, +2662,15, +2689,3, +2693,9, +2703,3, +2707,22, +2730,7, +2738,2, +2741,5, +2748,10, +2759,3, +2763,3, +2768,1, +2784,4, +2790,10, +2817,3, +2821,8, +2831,2, +2835,22, +2858,7, +2866,2, +2869,5, +2876,8, +2887,2, +2891,3, +2902,2, +2908,2, +2911,3, +2918,10, +2929,1, +2946,2, +2949,6, +2958,3, +2962,4, +2969,2, +2972,1, +2974,2, +2979,2, +2984,3, +2990,12, +3006,5, +3014,3, +3018,4, +3031,1, +3046,13, +3073,3, +3077,8, +3086,3, +3090,23, +3114,10, +3125,5, +3134,7, +3142,3, +3146,4, +3157,2, +3168,2, +3174,10, +3202,2, +3205,8, +3214,3, +3218,23, +3242,10, +3253,5, +3260,9, +3270,3, +3274,4, +3285,2, +3294,1, +3296,4, +3302,10, +3330,2, +3333,8, +3342,3, +3346,23, +3370,16, +3390,6, +3398,3, +3402,4, +3415,1, +3424,2, +3430,10, +3458,2, +3461,18, +3482,24, +3507,9, +3517,1, +3520,7, +3530,1, +3535,6, +3542,1, +3544,8, +3570,2, +3585,58, +3648,15, +3664,10, +3713,2, +3716,1, +3719,2, +3722,1, +3725,1, +3732,4, +3737,7, +3745,3, +3749,1, +3751,1, +3754,2, +3757,13, +3771,3, +3776,5, +3782,1, +3784,6, +3792,10, +3804,2, +3840,1, +3864,2, +3872,20, +3893,1, +3895,1, +3897,1, +3902,10, +3913,34, +3953,20, +3974,6, +3984,8, +3993,36, +4038,1, +4096,34, +4131,5, +4137,2, +4140,7, +4150,4, +4160,10, +4176,10, +4256,38, +4304,43, +4348,1, +4352,90, +4447,68, +4520,82, +4608,73, +4682,4, +4688,7, +4696,1, +4698,4, +4704,41, +4746,4, +4752,33, +4786,4, +4792,7, +4800,1, +4802,4, +4808,15, +4824,57, +4882,4, +4888,67, +4959,1, +4969,20, +4992,16, +5024,85, +5121,620, +5743,8, +5761,26, +5792,75, +5870,3, +5888,13, +5902,7, +5920,21, +5952,20, +5984,13, +5998,3, +6002,2, +6016,52, +6070,30, +6103,1, +6108,2, +6112,10, +6128,10, +6155,3, +6160,10, +6176,88, +6272,42, +6400,29, +6432,12, +6448,12, +6470,40, +6512,5, +6528,42, +6576,26, +6608,10, +6656,28, +6912,76, +6992,10, +7019,9, +7424,203, +7678,158, +7840,90, +7936,22, +7960,6, +7968,38, +8008,6, +8016,8, +8025,1, +8027,1, +8029,1, +8031,31, +8064,53, +8118,7, +8126,1, +8130,3, +8134,7, +8144,4, +8150,6, +8160,13, +8178,3, +8182,7, +8304,2, +8308,6, +8319,11, +8336,5, +8400,32, +8450,1, +8455,1, +8458,10, +8469,1, +8473,5, +8484,1, +8486,1, +8488,1, +8490,4, +8495,11, +8508,4, +8517,5, +8526,1, +8531,50, +9312,60, +9450,22, +10102,30, +11264,47, +11312,47, +11360,13, +11380,4, +11392,101, +11517,1, +11520,38, +11568,54, +11631,1, +11648,23, +11680,7, +11688,7, +11696,7, +11704,7, +11712,7, +11720,7, +11728,7, +11736,7, +12293,3, +12321,15, +12337,5, +12344,5, +12353,86, +12441,2, +12445,3, +12449,90, +12540,4, +12549,40, +12593,94, +12690,4, +12704,24, +12784,16, +12832,10, +12881,15, +12928,10, +12977,15, +13312,6582, +19968,20924, +40960,1165, +42775,4, +43008,40, +43072,52, +44032,11172, +63744,302, +64048,59, +64112,106, +64256,7, +64275,5, +64285,12, +64298,13, +64312,5, +64318,1, +64320,2, +64323,2, +64326,108, +64467,363, +64848,64, +64914,54, +65008,12, +65024,16, +65056,4, +65136,5, +65142,135, +65296,10, +65313,26, +65345,26, +65382,89, +65474,6, +65482,6, +65490,6 +]; +controlCharacterSet = [ +0,32, +127,33, +173,1, +1536,4, +1757,1, +1807,1, +6068,2, +8203,5, +8234,5, +8288,4, +8298,6, +65279,1 +]; +decimalDigitCharacterSet = [ +48,10, +1632,10, +1776,10, +1984,10, +2406,10, +2534,10, +2662,10, +2790,10, +2918,10, +3046,10, +3174,10, +3302,10, +3430,10, +3664,10, +3792,10, +3872,10, +4160,10, +6112,10, +6160,10, +6470,10, +6608,10, +6992,10 +]; +decomposableCharacterSet = [ +192,6, +199,9, +209,6, +217,5, +224,6, +231,9, +241,6, +249,5, +255,17, +274,20, +296,9, +308,4, +313,6, +323,6, +332,6, +340,18, +360,23, +416,2, +431,2, +461,16, +478,6, +486,11, +500,2, +504,36, +542,2, +550,14, +832,2, +835,2, +884,1, +894,1, +901,6, +908,1, +910,3, +938,7, +970,5, +979,2, +1024,2, +1027,1, +1031,1, +1036,3, +1049,1, +1081,1, +1104,2, +1107,1, +1111,1, +1116,3, +1142,2, +1217,2, +1232,4, +1238,2, +1242,6, +1250,6, +1258,12, +1272,2, +1570,5, +1728,1, +1730,1, +1747,1, +2345,1, +2353,1, +2356,1, +2392,8, +2507,2, +2524,2, +2527,1, +2611,1, +2614,1, +2649,3, +2654,1, +2888,1, +2891,2, +2908,2, +2964,1, +3018,3, +3144,1, +3264,1, +3271,2, +3274,2, +3402,3, +3546,1, +3548,3, +3907,1, +3917,1, +3922,1, +3927,1, +3932,1, +3945,1, +3955,1, +3957,2, +3960,1, +3969,1, +3987,1, +3997,1, +4002,1, +4007,1, +4012,1, +4025,1, +4134,1, +6918,1, +6920,1, +6922,1, +6924,1, +6926,1, +6930,1, +6971,1, +6973,1, +6976,2, +6979,1, +7680,154, +7835,1, +7840,90, +7936,22, +7960,6, +7968,38, +8008,6, +8016,8, +8025,1, +8027,1, +8029,1, +8031,31, +8064,53, +8118,7, +8126,1, +8129,4, +8134,14, +8150,6, +8157,19, +8178,3, +8182,8, +8192,2, +8486,1, +8490,2, +8602,2, +8622,1, +8653,3, +8708,1, +8713,1, +8716,1, +8740,1, +8742,1, +8769,1, +8772,1, +8775,1, +8777,1, +8800,1, +8802,1, +8813,5, +8820,2, +8824,2, +8832,2, +8836,2, +8840,2, +8876,4, +8928,4, +8938,4, +9001,2, +10972,1, +12364,1, +12366,1, +12368,1, +12370,1, +12372,1, +12374,1, +12376,1, +12378,1, +12380,1, +12382,1, +12384,1, +12386,1, +12389,1, +12391,1, +12393,1, +12400,2, +12403,2, +12406,2, +12409,2, +12412,2, +12436,1, +12446,1, +12460,1, +12462,1, +12464,1, +12466,1, +12468,1, +12470,1, +12472,1, +12474,1, +12476,1, +12478,1, +12480,1, +12482,1, +12485,1, +12487,1, +12489,1, +12496,2, +12499,2, +12502,2, +12505,2, +12508,2, +12532,1, +12535,4, +12542,1, +44032,11172, +63744,270, +64016,1, +64018,1, +64021,10, +64032,1, +64034,1, +64037,2, +64042,4, +64048,59, +64112,106, +64285,1, +64287,1, +64298,13, +64312,5, +64318,1, +64320,2, +64323,2 +]; +illegalCharacterSet = [ +880,4, +886,4, +895,5, +907,1, +909,1, +930,1, +975,1, +1159,1, +1300,29, +1367,2, +1376,1, +1416,1, +1419,6, +1480,8, +1515,5, +1525,11, +1540,7, +1558,5, +1564,2, +1568,1, +1595,5, +1631,1, +1806,1, +1867,2, +1902,18, +1970,14, +2043,262, +2362,2, +2382,2, +2389,3, +2417,10, +2432,1, +2436,1, +2445,2, +2449,2, +2473,1, +2481,1, +2483,3, +2490,2, +2501,2, +2505,2, +2511,8, +2520,4, +2526,1, +2532,2, +2555,6, +2564,1, +2571,4, +2577,2, +2601,1, +2609,1, +2612,1, +2615,1, +2618,2, +2621,1, +2627,4, +2633,2, +2638,11, +2653,1, +2655,7, +2677,12, +2692,1, +2702,1, +2706,1, +2729,1, +2737,1, +2740,1, +2746,2, +2758,1, +2762,1, +2766,2, +2769,15, +2788,2, +2800,1, +2802,15, +2820,1, +2829,2, +2833,2, +2857,1, +2865,1, +2868,1, +2874,2, +2884,3, +2889,2, +2894,8, +2904,4, +2910,1, +2914,4, +2930,16, +2948,1, +2955,3, +2961,1, +2966,3, +2971,1, +2973,1, +2976,3, +2981,3, +2987,3, +3002,4, +3011,3, +3017,1, +3022,9, +3032,14, +3067,6, +3076,1, +3085,1, +3089,1, +3113,1, +3124,1, +3130,4, +3141,1, +3145,1, +3150,7, +3159,9, +3170,4, +3184,18, +3204,1, +3213,1, +3217,1, +3241,1, +3252,1, +3258,2, +3269,1, +3273,1, +3278,7, +3287,7, +3295,1, +3300,2, +3312,1, +3315,15, +3332,1, +3341,1, +3345,1, +3369,1, +3386,4, +3396,2, +3401,1, +3406,9, +3416,8, +3426,4, +3440,18, +3460,1, +3479,3, +3506,1, +3516,1, +3518,2, +3527,3, +3531,4, +3541,1, +3543,1, +3552,18, +3573,12, +3643,4, +3676,37, +3715,1, +3717,2, +3721,1, +3723,2, +3726,6, +3736,1, +3744,1, +3748,1, +3750,1, +3752,2, +3756,1, +3770,1, +3774,2, +3781,1, +3783,1, +3790,2, +3802,2, +3806,34, +3912,1, +3947,6, +3980,4, +3992,1, +4029,1, +4045,2, +4050,46, +4130,1, +4136,1, +4139,1, +4147,3, +4154,6, +4186,70, +4294,10, +4349,3, +4442,5, +4515,5, +4602,6, +4681,1, +4686,2, +4695,1, +4697,1, +4702,2, +4745,1, +4750,2, +4785,1, +4790,2, +4799,1, +4801,1, +4806,2, +4823,1, +4881,1, +4886,2, +4955,4, +4989,3, +5018,6, +5109,12, +5751,9, +5789,3, +5873,15, +5901,1, +5909,11, +5943,9, +5972,12, +5997,1, +6001,1, +6004,12, +6110,2, +6122,6, +6138,6, +6159,1, +6170,6, +6264,8, +6314,86, +6429,3, +6444,4, +6460,4, +6465,3, +6510,2, +6517,11, +6570,6, +6602,6, +6618,4, +6684,2, +6688,224, +6988,4, +7037,387, +7627,51, +7836,4, +7930,6, +7958,2, +7966,2, +8006,2, +8014,2, +8024,1, +8026,1, +8028,1, +8030,1, +8062,2, +8117,1, +8133,1, +8148,2, +8156,1, +8176,2, +8181,1, +8191,1, +8292,6, +8306,2, +8335,1, +8341,11, +8374,26, +8432,16, +8527,4, +8581,11, +9192,24, +9255,25, +9291,21, +9885,3, +9907,78, +9989,1, +9994,2, +10024,1, +10060,1, +10062,1, +10067,3, +10071,1, +10079,2, +10133,3, +10160,1, +10175,1, +10187,5, +10220,4, +11035,5, +11044,220, +11311,1, +11359,1, +11373,7, +11384,8, +11499,14, +11558,10, +11622,9, +11632,16, +11671,9, +11687,1, +11695,1, +11703,1, +11711,1, +11719,1, +11727,1, +11735,1, +11743,33, +11800,4, +11806,98, +11930,1, +12020,12, +12246,26, +12284,4, +12352,1, +12439,2, +12544,5, +12589,4, +12687,1, +12728,8, +12752,32, +12831,1, +12868,12, +13055,1, +19894,10, +40892,68, +42125,3, +42183,569, +42779,5, +42786,222, +43052,20, +43128,904, +55204,92, +64046,2, +64107,5, +64218,38, +64263,12, +64280,5, +64311,1, +64317,1, +64319,1, +64322,1, +64325,1, +64434,33, +64832,16, +64912,2, +64968,40, +65022,2, +65050,6, +65060,12, +65107,1, +65127,1, +65132,4, +65141,1, +65277,2, +65280,1, +65471,3, +65480,2, +65488,2, +65496,2, +65501,3, +65511,1, +65519,10 +]; +letterCharacterSet = [ +65,26, +97,26, +170,1, +181,1, +186,1, +192,23, +216,31, +248,458, +710,12, +736,5, +750,1, +768,112, +890,4, +902,1, +904,3, +908,1, +910,20, +931,44, +976,38, +1015,139, +1155,4, +1160,140, +1329,38, +1369,1, +1377,39, +1425,45, +1471,1, +1473,2, +1476,2, +1479,1, +1488,27, +1520,3, +1552,6, +1569,26, +1600,31, +1646,102, +1749,8, +1758,11, +1770,6, +1786,3, +1791,1, +1808,59, +1869,33, +1920,50, +1994,44, +2042,1, +2305,57, +2364,18, +2384,5, +2392,12, +2427,5, +2433,3, +2437,8, +2447,2, +2451,22, +2474,7, +2482,1, +2486,4, +2492,9, +2503,2, +2507,4, +2519,1, +2524,2, +2527,5, +2544,2, +2561,3, +2565,6, +2575,2, +2579,22, +2602,7, +2610,2, +2613,2, +2616,2, +2620,1, +2622,5, +2631,2, +2635,3, +2649,4, +2654,1, +2672,5, +2689,3, +2693,9, +2703,3, +2707,22, +2730,7, +2738,2, +2741,5, +2748,10, +2759,3, +2763,3, +2768,1, +2784,4, +2817,3, +2821,8, +2831,2, +2835,22, +2858,7, +2866,2, +2869,5, +2876,8, +2887,2, +2891,3, +2902,2, +2908,2, +2911,3, +2929,1, +2946,2, +2949,6, +2958,3, +2962,4, +2969,2, +2972,1, +2974,2, +2979,2, +2984,3, +2990,12, +3006,5, +3014,3, +3018,4, +3031,1, +3073,3, +3077,8, +3086,3, +3090,23, +3114,10, +3125,5, +3134,7, +3142,3, +3146,4, +3157,2, +3168,2, +3202,2, +3205,8, +3214,3, +3218,23, +3242,10, +3253,5, +3260,9, +3270,3, +3274,4, +3285,2, +3294,1, +3296,4, +3330,2, +3333,8, +3342,3, +3346,23, +3370,16, +3390,6, +3398,3, +3402,4, +3415,1, +3424,2, +3458,2, +3461,18, +3482,24, +3507,9, +3517,1, +3520,7, +3530,1, +3535,6, +3542,1, +3544,8, +3570,2, +3585,58, +3648,15, +3713,2, +3716,1, +3719,2, +3722,1, +3725,1, +3732,4, +3737,7, +3745,3, +3749,1, +3751,1, +3754,2, +3757,13, +3771,3, +3776,5, +3782,1, +3784,6, +3804,2, +3840,1, +3864,2, +3893,1, +3895,1, +3897,1, +3902,10, +3913,34, +3953,20, +3974,6, +3984,8, +3993,36, +4038,1, +4096,34, +4131,5, +4137,2, +4140,7, +4150,4, +4176,10, +4256,38, +4304,43, +4348,1, +4352,90, +4447,68, +4520,82, +4608,73, +4682,4, +4688,7, +4696,1, +4698,4, +4704,41, +4746,4, +4752,33, +4786,4, +4792,7, +4800,1, +4802,4, +4808,15, +4824,57, +4882,4, +4888,67, +4959,1, +4992,16, +5024,85, +5121,620, +5743,8, +5761,26, +5792,75, +5888,13, +5902,7, +5920,21, +5952,20, +5984,13, +5998,3, +6002,2, +6016,52, +6070,30, +6103,1, +6108,2, +6155,3, +6176,88, +6272,42, +6400,29, +6432,12, +6448,12, +6480,30, +6512,5, +6528,42, +6576,26, +6656,28, +6912,76, +7019,9, +7424,203, +7678,158, +7840,90, +7936,22, +7960,6, +7968,38, +8008,6, +8016,8, +8025,1, +8027,1, +8029,1, +8031,31, +8064,53, +8118,7, +8126,1, +8130,3, +8134,7, +8144,4, +8150,6, +8160,13, +8178,3, +8182,7, +8305,1, +8319,1, +8336,5, +8400,32, +8450,1, +8455,1, +8458,10, +8469,1, +8473,5, +8484,1, +8486,1, +8488,1, +8490,4, +8495,11, +8508,4, +8517,5, +8526,1, +8579,2, +11264,47, +11312,47, +11360,13, +11380,4, +11392,101, +11520,38, +11568,54, +11631,1, +11648,23, +11680,7, +11688,7, +11696,7, +11704,7, +11712,7, +11720,7, +11728,7, +11736,7, +12293,2, +12330,6, +12337,5, +12347,2, +12353,86, +12441,2, +12445,3, +12449,90, +12540,4, +12549,40, +12593,94, +12704,24, +12784,16, +13312,6582, +19968,20924, +40960,1165, +42775,4, +43008,40, +43072,52, +44032,11172, +63744,302, +64048,59, +64112,106, +64256,7, +64275,5, +64285,12, +64298,13, +64312,5, +64318,1, +64320,2, +64323,2, +64326,108, +64467,363, +64848,64, +64914,54, +65008,12, +65024,16, +65056,4, +65136,5, +65142,135, +65313,26, +65345,26, +65382,89, +65474,6, +65482,6, +65490,6 +]; +lowercaseLetterCharacterSet = [ +97,26, +170,1, +181,1, +186,1, +223,24, +248,8, +257,1, +259,1, +261,1, +263,1, +265,1, +267,1, +269,1, +271,1, +273,1, +275,1, +277,1, +279,1, +281,1, +283,1, +285,1, +287,1, +289,1, +291,1, +293,1, +295,1, +297,1, +299,1, +301,1, +303,1, +305,1, +307,1, +309,1, +311,2, +314,1, +316,1, +318,1, +320,1, +322,1, +324,1, +326,1, +328,2, +331,1, +333,1, +335,1, +337,1, +339,1, +341,1, +343,1, +345,1, +347,1, +349,1, +351,1, +353,1, +355,1, +357,1, +359,1, +361,1, +363,1, +365,1, +367,1, +369,1, +371,1, +373,1, +375,1, +378,1, +380,1, +382,3, +387,1, +389,1, +392,1, +396,2, +402,1, +405,1, +409,3, +414,1, +417,1, +419,1, +421,1, +424,1, +426,2, +429,1, +432,1, +436,1, +438,1, +441,2, +445,3, +454,1, +457,1, +460,1, +462,1, +464,1, +466,1, +468,1, +470,1, +472,1, +474,1, +476,2, +479,1, +481,1, +483,1, +485,1, +487,1, +489,1, +491,1, +493,1, +495,2, +499,1, +501,1, +505,1, +507,1, +509,1, +511,1, +513,1, +515,1, +517,1, +519,1, +521,1, +523,1, +525,1, +527,1, +529,1, +531,1, +533,1, +535,1, +537,1, +539,1, +541,1, +543,1, +545,1, +547,1, +549,1, +551,1, +553,1, +555,1, +557,1, +559,1, +561,1, +563,7, +572,1, +575,2, +578,1, +583,1, +585,1, +587,1, +589,1, +591,69, +661,27, +891,3, +912,1, +940,35, +976,2, +981,3, +985,1, +987,1, +989,1, +991,1, +993,1, +995,1, +997,1, +999,1, +1001,1, +1003,1, +1005,1, +1007,5, +1013,1, +1016,1, +1019,2, +1072,48, +1121,1, +1123,1, +1125,1, +1127,1, +1129,1, +1131,1, +1133,1, +1135,1, +1137,1, +1139,1, +1141,1, +1143,1, +1145,1, +1147,1, +1149,1, +1151,1, +1153,1, +1163,1, +1165,1, +1167,1, +1169,1, +1171,1, +1173,1, +1175,1, +1177,1, +1179,1, +1181,1, +1183,1, +1185,1, +1187,1, +1189,1, +1191,1, +1193,1, +1195,1, +1197,1, +1199,1, +1201,1, +1203,1, +1205,1, +1207,1, +1209,1, +1211,1, +1213,1, +1215,1, +1218,1, +1220,1, +1222,1, +1224,1, +1226,1, +1228,1, +1230,2, +1233,1, +1235,1, +1237,1, +1239,1, +1241,1, +1243,1, +1245,1, +1247,1, +1249,1, +1251,1, +1253,1, +1255,1, +1257,1, +1259,1, +1261,1, +1263,1, +1265,1, +1267,1, +1269,1, +1271,1, +1273,1, +1275,1, +1277,1, +1279,1, +1281,1, +1283,1, +1285,1, +1287,1, +1289,1, +1291,1, +1293,1, +1295,1, +1297,1, +1299,1, +1377,39, +7424,44, +7522,22, +7545,34, +7681,1, +7683,1, +7685,1, +7687,1, +7689,1, +7691,1, +7693,1, +7695,1, +7697,1, +7699,1, +7701,1, +7703,1, +7705,1, +7707,1, +7709,1, +7711,1, +7713,1, +7715,1, +7717,1, +7719,1, +7721,1, +7723,1, +7725,1, +7727,1, +7729,1, +7731,1, +7733,1, +7735,1, +7737,1, +7739,1, +7741,1, +7743,1, +7745,1, +7747,1, +7749,1, +7751,1, +7753,1, +7755,1, +7757,1, +7759,1, +7761,1, +7763,1, +7765,1, +7767,1, +7769,1, +7771,1, +7773,1, +7775,1, +7777,1, +7779,1, +7781,1, +7783,1, +7785,1, +7787,1, +7789,1, +7791,1, +7793,1, +7795,1, +7797,1, +7799,1, +7801,1, +7803,1, +7805,1, +7807,1, +7809,1, +7811,1, +7813,1, +7815,1, +7817,1, +7819,1, +7821,1, +7823,1, +7825,1, +7827,1, +7829,7, +7841,1, +7843,1, +7845,1, +7847,1, +7849,1, +7851,1, +7853,1, +7855,1, +7857,1, +7859,1, +7861,1, +7863,1, +7865,1, +7867,1, +7869,1, +7871,1, +7873,1, +7875,1, +7877,1, +7879,1, +7881,1, +7883,1, +7885,1, +7887,1, +7889,1, +7891,1, +7893,1, +7895,1, +7897,1, +7899,1, +7901,1, +7903,1, +7905,1, +7907,1, +7909,1, +7911,1, +7913,1, +7915,1, +7917,1, +7919,1, +7921,1, +7923,1, +7925,1, +7927,1, +7929,1, +7936,8, +7952,6, +7968,8, +7984,8, +8000,6, +8016,8, +8032,8, +8048,14, +8064,8, +8080,8, +8096,8, +8112,5, +8118,2, +8126,1, +8130,3, +8134,2, +8144,4, +8150,2, +8160,8, +8178,3, +8182,2, +8305,1, +8319,1, +8458,1, +8462,2, +8467,1, +8495,1, +8500,1, +8505,1, +8508,2, +8518,4, +8526,1, +8580,1, +11312,47, +11361,1, +11365,2, +11368,1, +11370,1, +11372,1, +11380,1, +11382,2, +11393,1, +11395,1, +11397,1, +11399,1, +11401,1, +11403,1, +11405,1, +11407,1, +11409,1, +11411,1, +11413,1, +11415,1, +11417,1, +11419,1, +11421,1, +11423,1, +11425,1, +11427,1, +11429,1, +11431,1, +11433,1, +11435,1, +11437,1, +11439,1, +11441,1, +11443,1, +11445,1, +11447,1, +11449,1, +11451,1, +11453,1, +11455,1, +11457,1, +11459,1, +11461,1, +11463,1, +11465,1, +11467,1, +11469,1, +11471,1, +11473,1, +11475,1, +11477,1, +11479,1, +11481,1, +11483,1, +11485,1, +11487,1, +11489,1, +11491,2, +11520,38, +64256,7, +64275,5 +]; +nonBaseCharacterSet = [ +768,112, +1155,4, +1160,2, +1425,45, +1471,1, +1473,2, +1476,2, +1479,1, +1552,6, +1611,20, +1648,1, +1750,7, +1758,7, +1767,2, +1770,4, +1809,1, +1840,27, +1958,11, +2027,9, +2305,3, +2364,1, +2366,16, +2385,4, +2402,2, +2433,3, +2492,1, +2494,7, +2503,2, +2507,3, +2519,1, +2530,2, +2561,3, +2620,1, +2622,5, +2631,2, +2635,3, +2672,2, +2689,3, +2748,1, +2750,8, +2759,3, +2763,3, +2786,2, +2817,3, +2876,1, +2878,6, +2887,2, +2891,3, +2902,2, +2946,1, +3006,5, +3014,3, +3018,4, +3031,1, +3073,3, +3134,7, +3142,3, +3146,4, +3157,2, +3202,2, +3260,1, +3262,7, +3270,3, +3274,4, +3285,2, +3298,2, +3330,2, +3390,6, +3398,3, +3402,4, +3415,1, +3458,2, +3530,1, +3535,6, +3542,1, +3544,8, +3570,2, +3633,1, +3636,7, +3655,8, +3761,1, +3764,6, +3771,2, +3784,6, +3864,2, +3893,1, +3895,1, +3897,1, +3902,2, +3953,20, +3974,2, +3984,8, +3993,36, +4038,1, +4140,7, +4150,4, +4182,4, +4959,1, +5906,3, +5938,3, +5970,2, +6002,2, +6070,30, +6109,1, +6155,3, +6313,1, +6432,12, +6448,12, +6576,17, +6600,2, +6679,5, +6912,5, +6964,17, +7019,9, +7616,11, +7678,2, +8400,32, +12330,6, +12441,2, +43010,1, +43014,1, +43019,1, +43043,5, +64286,1, +65024,16 +]; +punctuationCharacterSet = [ +33,3, +37,6, +44,4, +58,2, +63,2, +91,3, +95,1, +123,1, +125,1, +161,1, +171,1, +183,1, +187,1, +191,1, +894,1, +903,1, +1370,6, +1417,2, +1470,1, +1472,1, +1475,1, +1478,1, +1523,2, +1548,2, +1563,1, +1566,2, +1642,4, +1748,1, +1792,14, +2039,3, +2404,2, +2416,1, +3572,1, +3663,1, +3674,2, +3844,15, +3898,4, +3973,1, +4048,2, +4170,6, +4347,1, +4961,8, +5741,2, +5787,2, +5867,3, +5941,2, +6100,3, +6104,3, +6144,11, +6468,2, +6622,2, +6686,2, +7002,7, +8208,24, +8240,20, +8261,13, +8275,12, +8317,2, +8333,2, +9001,2, +10088,14, +10181,2, +10214,6, +10627,22, +10712,4, +10748,2, +11513,4, +11518,2, +11776,24, +11804,2, +12289,3, +12296,10, +12308,12, +12336,1, +12349,1, +12448,1, +12539,1, +43124,4, +64830,2, +65040,10, +65072,35, +65108,14, +65123,1, +65128,1, +65130,2, +65281,3, +65285,6, +65292,4, +65306,2, +65311,2, +65339,3, +65343,1, +65371,1, +65373,1 +]; +uppercaseLetterCharacterSet = [ +65,26, +192,23, +216,7, +256,1, +258,1, +260,1, +262,1, +264,1, +266,1, +268,1, +270,1, +272,1, +274,1, +276,1, +278,1, +280,1, +282,1, +284,1, +286,1, +288,1, +290,1, +292,1, +294,1, +296,1, +298,1, +300,1, +302,1, +304,1, +306,1, +308,1, +310,1, +313,1, +315,1, +317,1, +319,1, +321,1, +323,1, +325,1, +327,1, +330,1, +332,1, +334,1, +336,1, +338,1, +340,1, +342,1, +344,1, +346,1, +348,1, +350,1, +352,1, +354,1, +356,1, +358,1, +360,1, +362,1, +364,1, +366,1, +368,1, +370,1, +372,1, +374,1, +376,2, +379,1, +381,1, +385,2, +388,1, +390,2, +393,3, +398,4, +403,2, +406,3, +412,2, +415,2, +418,1, +420,1, +422,2, +425,1, +428,1, +430,2, +433,3, +437,1, +439,2, +444,1, +452,2, +455,2, +458,2, +461,1, +463,1, +465,1, +467,1, +469,1, +471,1, +473,1, +475,1, +478,1, +480,1, +482,1, +484,1, +486,1, +488,1, +490,1, +492,1, +494,1, +497,2, +500,1, +502,3, +506,1, +508,1, +510,1, +512,1, +514,1, +516,1, +518,1, +520,1, +522,1, +524,1, +526,1, +528,1, +530,1, +532,1, +534,1, +536,1, +538,1, +540,1, +542,1, +544,1, +546,1, +548,1, +550,1, +552,1, +554,1, +556,1, +558,1, +560,1, +562,1, +570,2, +573,2, +577,1, +579,4, +584,1, +586,1, +588,1, +590,1, +902,1, +904,3, +908,1, +910,2, +913,17, +931,9, +978,3, +984,1, +986,1, +988,1, +990,1, +992,1, +994,1, +996,1, +998,1, +1000,1, +1002,1, +1004,1, +1006,1, +1012,1, +1015,1, +1017,2, +1021,51, +1120,1, +1122,1, +1124,1, +1126,1, +1128,1, +1130,1, +1132,1, +1134,1, +1136,1, +1138,1, +1140,1, +1142,1, +1144,1, +1146,1, +1148,1, +1150,1, +1152,1, +1162,1, +1164,1, +1166,1, +1168,1, +1170,1, +1172,1, +1174,1, +1176,1, +1178,1, +1180,1, +1182,1, +1184,1, +1186,1, +1188,1, +1190,1, +1192,1, +1194,1, +1196,1, +1198,1, +1200,1, +1202,1, +1204,1, +1206,1, +1208,1, +1210,1, +1212,1, +1214,1, +1216,2, +1219,1, +1221,1, +1223,1, +1225,1, +1227,1, +1229,1, +1232,1, +1234,1, +1236,1, +1238,1, +1240,1, +1242,1, +1244,1, +1246,1, +1248,1, +1250,1, +1252,1, +1254,1, +1256,1, +1258,1, +1260,1, +1262,1, +1264,1, +1266,1, +1268,1, +1270,1, +1272,1, +1274,1, +1276,1, +1278,1, +1280,1, +1282,1, +1284,1, +1286,1, +1288,1, +1290,1, +1292,1, +1294,1, +1296,1, +1298,1, +1329,38, +4256,38, +7680,1, +7682,1, +7684,1, +7686,1, +7688,1, +7690,1, +7692,1, +7694,1, +7696,1, +7698,1, +7700,1, +7702,1, +7704,1, +7706,1, +7708,1, +7710,1, +7712,1, +7714,1, +7716,1, +7718,1, +7720,1, +7722,1, +7724,1, +7726,1, +7728,1, +7730,1, +7732,1, +7734,1, +7736,1, +7738,1, +7740,1, +7742,1, +7744,1, +7746,1, +7748,1, +7750,1, +7752,1, +7754,1, +7756,1, +7758,1, +7760,1, +7762,1, +7764,1, +7766,1, +7768,1, +7770,1, +7772,1, +7774,1, +7776,1, +7778,1, +7780,1, +7782,1, +7784,1, +7786,1, +7788,1, +7790,1, +7792,1, +7794,1, +7796,1, +7798,1, +7800,1, +7802,1, +7804,1, +7806,1, +7808,1, +7810,1, +7812,1, +7814,1, +7816,1, +7818,1, +7820,1, +7822,1, +7824,1, +7826,1, +7828,1, +7840,1, +7842,1, +7844,1, +7846,1, +7848,1, +7850,1, +7852,1, +7854,1, +7856,1, +7858,1, +7860,1, +7862,1, +7864,1, +7866,1, +7868,1, +7870,1, +7872,1, +7874,1, +7876,1, +7878,1, +7880,1, +7882,1, +7884,1, +7886,1, +7888,1, +7890,1, +7892,1, +7894,1, +7896,1, +7898,1, +7900,1, +7902,1, +7904,1, +7906,1, +7908,1, +7910,1, +7912,1, +7914,1, +7916,1, +7918,1, +7920,1, +7922,1, +7924,1, +7926,1, +7928,1, +7944,8, +7960,6, +7976,8, +7992,8, +8008,6, +8025,1, +8027,1, +8029,1, +8031,1, +8040,8, +8072,8, +8088,8, +8104,8, +8120,5, +8136,5, +8152,4, +8168,5, +8184,5, +8450,1, +8455,1, +8459,3, +8464,3, +8469,1, +8473,5, +8484,1, +8486,1, +8488,1, +8490,4, +8496,4, +8510,2, +8517,1, +8579,1, +11264,47, +11360,1, +11362,3, +11367,1, +11369,1, +11371,1, +11381,1, +11392,1, +11394,1, +11396,1, +11398,1, +11400,1, +11402,1, +11404,1, +11406,1, +11408,1, +11410,1, +11412,1, +11414,1, +11416,1, +11418,1, +11420,1, +11422,1, +11424,1, +11426,1, +11428,1, +11430,1, +11432,1, +11434,1, +11436,1, +11438,1, +11440,1, +11442,1, +11444,1, +11446,1, +11448,1, +11450,1, +11452,1, +11454,1, +11456,1, +11458,1, +11460,1, +11462,1, +11464,1, +11466,1, +11468,1, +11470,1, +11472,1, +11474,1, +11476,1, +11478,1, +11480,1, +11482,1, +11484,1, +11486,1, +11488,1, +11490,1 +]; +whitespaceAndNewlineCharacterSet = [ +9,5, +32,1, +133,1, +160,1, +5760,1, +8192,12, +8232,2, +8239,1, +8287,1 +]; +whitespaceCharacterSet = [ +9,1, +32,1, +160,1, +5760,1, +8192,12, +8239,1, +8287,1 +]; + +p;9;CPCoder.jt;2792;@STATIC;1.0;i;13;CPException.ji;10;CPObject.jt;2740;objj_executeFile("CPException.j", YES); +objj_executeFile("CPObject.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPCoder"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("allowsKeyedCoding"), function $CPCoder__allowsKeyedCoding(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("encodeValueOfObjCType:at:"), function $CPCoder__encodeValueOfObjCType_at_(self, _cmd, aType, anObject) +{ with(self) +{ + CPInvalidAbstractInvocation(); +} +},["void","CPString","id"]), new objj_method(sel_getUid("encodeDataObject:"), function $CPCoder__encodeDataObject_(self, _cmd, aData) +{ with(self) +{ + CPInvalidAbstractInvocation(); +} +},["void","CPData"]), new objj_method(sel_getUid("encodeObject:"), function $CPCoder__encodeObject_(self, _cmd, anObject) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("encodePoint:"), function $CPCoder__encodePoint_(self, _cmd, aPoint) +{ with(self) +{ + objj_msgSend(self, "encodeNumber:", aPoint.x); + objj_msgSend(self, "encodeNumber:", aPoint.y); +} +},["void","CPPoint"]), new objj_method(sel_getUid("encodeRect:"), function $CPCoder__encodeRect_(self, _cmd, aRect) +{ with(self) +{ + objj_msgSend(self, "encodePoint:", aRect.origin); + objj_msgSend(self, "encodeSize:", aRect.size); +} +},["void","CGRect"]), new objj_method(sel_getUid("encodeSize:"), function $CPCoder__encodeSize_(self, _cmd, aSize) +{ with(self) +{ + objj_msgSend(self, "encodeNumber:", aSize.width); + objj_msgSend(self, "encodeNumber:", aSize.height); +} +},["void","CPSize"]), new objj_method(sel_getUid("encodePropertyList:"), function $CPCoder__encodePropertyList_(self, _cmd, aPropertyList) +{ with(self) +{ +} +},["void","id"]), new objj_method(sel_getUid("encodeRootObject:"), function $CPCoder__encodeRootObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "encodeObject:", anObject); +} +},["void","id"]), new objj_method(sel_getUid("encodeBycopyObject:"), function $CPCoder__encodeBycopyObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "encodeObject:", anObject); +} +},["void","id"]), new objj_method(sel_getUid("encodeConditionalObject:"), function $CPCoder__encodeConditionalObject_(self, _cmd, anObject) +{ with(self) +{ + objj_msgSend(self, "encodeObject:", anObject); +} +},["void","id"])]); +} +{ +var the_class = objj_getClass("CPObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("awakeAfterUsingCoder:"), function $CPObject__awakeAfterUsingCoder_(self, _cmd, aDecoder) +{ with(self) +{ + return self; +} +},["id","CPCoder"])]); +} + +p;14;CPCountedSet.jt;1832;@STATIC;1.0;i;7;CPSet.jt;1802;objj_executeFile("CPSet.j", YES); +{var the_class = objj_allocateClassPair(CPMutableSet, "CPCountedSet"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_counts")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("addObject:"), function $CPCountedSet__addObject_(self, _cmd, anObject) +{ with(self) +{ + if (!_counts) + _counts = {}; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCountedSet").super_class }, "addObject:", anObject); + var UID = objj_msgSend(anObject, "UID"); + if (_counts[UID] === undefined) + _counts[UID] = 1; + else + ++_counts[UID]; +} +},["void","id"]), new objj_method(sel_getUid("removeObject:"), function $CPCountedSet__removeObject_(self, _cmd, anObject) +{ with(self) +{ + if (!_counts) + return; + var UID = objj_msgSend(anObject, "UID"); + if (_counts[UID] === undefined) + return; + else + { + --_counts[UID]; + if (_counts[UID] === 0) + { + delete _counts[UID]; + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCountedSet").super_class }, "removeObject:", anObject); + } + } +} +},["void","id"]), new objj_method(sel_getUid("removeAllObjects"), function $CPCountedSet__removeAllObjects(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCountedSet").super_class }, "removeAllObjects"); + _counts = {}; +} +},["void"]), new objj_method(sel_getUid("countForObject:"), function $CPCountedSet__countForObject_(self, _cmd, anObject) +{ with(self) +{ + if (!_counts) + _counts = {}; + var UID = objj_msgSend(anObject, "UID"); + if (_counts[UID] === undefined) + return 0; + return _counts[UID]; +} +},["unsigned","id"])]); +} + +p;8;CPData.jt;6116;@STATIC;1.0;i;10;CPObject.ji;10;CPString.jt;6067;objj_executeFile("CPObject.j", YES); +objj_executeFile("CPString.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPData"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithRawString:"), function $CPData__initWithRawString_(self, _cmd, aString) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPData").super_class }, "init"); + if (self) + objj_msgSend(self, "setRawString:", aString); + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithPlistObject:"), function $CPData__initWithPlistObject_(self, _cmd, aPlistObject) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPData").super_class }, "init"); + if (self) + objj_msgSend(self, "setPlistObject:", aPlistObject); + return self; +} +},["id","id"]), new objj_method(sel_getUid("initWithPlistObject:format:"), function $CPData__initWithPlistObject_format_(self, _cmd, aPlistObject, aFormat) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPData").super_class }, "init"); + if (self) + objj_msgSend(self, "setPlistObject:format:", aPlistObject, aFormat); + return self; +} +},["id","id",null]), new objj_method(sel_getUid("initWithJSONObject:"), function $CPData__initWithJSONObject_(self, _cmd, anObject) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPData").super_class }, "init"); + if (self) + objj_msgSend(self, "setJSONObject:", anObject); + return self; +} +},["id","Object"]), new objj_method(sel_getUid("rawString"), function $CPData__rawString(self, _cmd) +{ with(self) +{ + return self.rawString(); +} +},["CPString"]), new objj_method(sel_getUid("plistObject"), function $CPData__plistObject(self, _cmd) +{ with(self) +{ + return self.propertyList(); +} +},["id"]), new objj_method(sel_getUid("JSONObject"), function $CPData__JSONObject(self, _cmd) +{ with(self) +{ + return self.JSONObject(); +} +},["Object"]), new objj_method(sel_getUid("length"), function $CPData__length(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "rawString"), "length"); +} +},["int"]), new objj_method(sel_getUid("description"), function $CPData__description(self, _cmd) +{ with(self) +{ + return self.toString(); +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $CPData__alloc(self, _cmd) +{ with(self) +{ + return new CFMutableData(); +} +},["id"]), new objj_method(sel_getUid("data"), function $CPData__data(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["CPData"]), new objj_method(sel_getUid("dataWithRawString:"), function $CPData__dataWithRawString_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithRawString:", aString); +} +},["CPData","CPString"]), new objj_method(sel_getUid("dataWithPlistObject:"), function $CPData__dataWithPlistObject_(self, _cmd, aPlistObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithPlistObject:", aPlistObject); +} +},["CPData","id"]), new objj_method(sel_getUid("dataWithPlistObject:format:"), function $CPData__dataWithPlistObject_format_(self, _cmd, aPlistObject, aFormat) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithPlistObject:format:", aPlistObject, aFormat); +} +},["CPData","id","CPPropertyListFormat"]), new objj_method(sel_getUid("dataWithJSONObject:"), function $CPData__dataWithJSONObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithJSONObject:", anObject); +} +},["CPData","Object"])]); +} +{ +var the_class = objj_getClass("CPData") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPData\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("setRawString:"), function $CPData__setRawString_(self, _cmd, aString) +{ with(self) +{ + self.setRawString(aString); +} +},["void","CPString"]), new objj_method(sel_getUid("setPlistObject:"), function $CPData__setPlistObject_(self, _cmd, aPlistObject) +{ with(self) +{ + self.setPropertyList(aPlistObject); +} +},["void","id"]), new objj_method(sel_getUid("setPlistObject:format:"), function $CPData__setPlistObject_format_(self, _cmd, aPlistObject, aFormat) +{ with(self) +{ + self.setPropertyList(aPlistObject, aFormat); +} +},["void","id","CPPropertyListFormat"]), new objj_method(sel_getUid("setJSONObject:"), function $CPData__setJSONObject_(self, _cmd, anObject) +{ with(self) +{ + self.setJSONObject(anObject); +} +},["void","Object"])]); +} +{ +var the_class = objj_getClass("CPData") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPData\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithString:"), function $CPData__initWithString_(self, _cmd, aString) +{ with(self) +{ + _CPReportLenientDeprecation(self, _cmd, sel_getUid("initWithRawString:")); + return objj_msgSend(self, "initWithRawString:", aString); +} +},["id","CPString"]), new objj_method(sel_getUid("setString:"), function $CPData__setString_(self, _cmd, aString) +{ with(self) +{ + _CPReportLenientDeprecation(self, _cmd, sel_getUid("setRawString:")); + objj_msgSend(self, "setRawString:", aString); +} +},["void","CPString"]), new objj_method(sel_getUid("string"), function $CPData__string(self, _cmd) +{ with(self) +{ + _CPReportLenientDeprecation(self, _cmd, sel_getUid("rawString")); + return objj_msgSend(self, "rawString"); +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("dataWithString:"), function $CPData__dataWithString_(self, _cmd, aString) +{ with(self) +{ + _CPReportLenientDeprecation(self, _cmd, sel_getUid("dataWithRawString:")); + return objj_msgSend(self, "dataWithRawString:", aString); +} +},["id","CPString"])]); +} +CFData.prototype.isa = CPData; +CFMutableData.prototype.isa = CPData; + +p;8;CPDate.jt;7440;@STATIC;1.0;i;10;CPObject.ji;10;CPString.jt;7391;objj_executeFile("CPObject.j", YES); +objj_executeFile("CPString.j", YES); +var CPDateReferenceDate = new Date(Date.UTC(2001, 1, 1, 0, 0, 0, 0)); +{var the_class = objj_allocateClassPair(CPObject, "CPDate"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithTimeIntervalSinceNow:"), function $CPDate__initWithTimeIntervalSinceNow_(self, _cmd, seconds) +{ with(self) +{ + self = new Date((new Date()).getTime() + seconds * 1000); + return self; +} +},["id","CPTimeInterval"]), new objj_method(sel_getUid("initWithTimeIntervalSince1970:"), function $CPDate__initWithTimeIntervalSince1970_(self, _cmd, seconds) +{ with(self) +{ + self = new Date(seconds * 1000); + return self; +} +},["id","CPTimeInterval"]), new objj_method(sel_getUid("initWithTimeIntervalSinceReferenceDate:"), function $CPDate__initWithTimeIntervalSinceReferenceDate_(self, _cmd, seconds) +{ with(self) +{ + self = objj_msgSend(self, "initWithTimeInterval:sinceDate:", seconds, CPDateReferenceDate); + return self; +} +},["id","CPTimeInterval"]), new objj_method(sel_getUid("initWithTimeInterval:sinceDate:"), function $CPDate__initWithTimeInterval_sinceDate_(self, _cmd, seconds, refDate) +{ with(self) +{ + self = new Date(refDate.getTime() + seconds * 1000); + return self; +} +},["id","CPTimeInterval","CPDate"]), new objj_method(sel_getUid("initWithString:"), function $CPDate__initWithString_(self, _cmd, description) +{ with(self) +{ + var format = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}) ([-+])(\d{2})(\d{2})/, + d = description.match(new RegExp(format)); + if (!d || d.length != 10) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "initWithString: the string must be of YYYY-MM-DD HH:MM:SS ±HHMM format"); + var date = new Date(d[1], d[2] - 1, d[3]), + timeZoneOffset = (Number(d[8]) * 60 + Number(d[9])) * (d[7] === '-' ? -1 : 1); + date.setHours(d[4]); + date.setMinutes(d[5]); + date.setSeconds(d[6]); + self = new Date(date.getTime() + (timeZoneOffset - date.getTimezoneOffset()) * 60 * 1000); + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("timeIntervalSinceDate:"), function $CPDate__timeIntervalSinceDate_(self, _cmd, anotherDate) +{ with(self) +{ + return (self.getTime() - anotherDate.getTime()) / 1000.0; +} +},["CPTimeInterval","CPDate"]), new objj_method(sel_getUid("timeIntervalSinceNow"), function $CPDate__timeIntervalSinceNow(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "timeIntervalSinceDate:", objj_msgSend(CPDate, "date")); +} +},["CPTimeInterval"]), new objj_method(sel_getUid("timeIntervalSince1970"), function $CPDate__timeIntervalSince1970(self, _cmd) +{ with(self) +{ + return self.getTime() / 1000.0; +} +},["CPTimeInterval"]), new objj_method(sel_getUid("timeIntervalSinceReferenceDate"), function $CPDate__timeIntervalSinceReferenceDate(self, _cmd) +{ with(self) +{ + return (self.getTime() - CPDateReferenceDate.getTime()) / 1000.0; +} +},["CPTimeInterval"]), new objj_method(sel_getUid("isEqual:"), function $CPDate__isEqual_(self, _cmd, aDate) +{ with(self) +{ + if (self === aDate) + return YES; + if (!aDate || !objj_msgSend(aDate, "isKindOfClass:", objj_msgSend(CPDate, "class"))) + return NO; + return objj_msgSend(self, "isEqualToDate:", aDate); +} +},["BOOL","CPDate"]), new objj_method(sel_getUid("isEqualToDate:"), function $CPDate__isEqualToDate_(self, _cmd, aDate) +{ with(self) +{ + if (!aDate) + return NO; + return !(self < aDate || self > aDate); +} +},["BOOL","CPDate"]), new objj_method(sel_getUid("compare:"), function $CPDate__compare_(self, _cmd, anotherDate) +{ with(self) +{ + return (self > anotherDate) ? CPOrderedDescending : ((self < anotherDate) ? CPOrderedAscending : CPOrderedSame); +} +},["CPComparisonResult","CPDate"]), new objj_method(sel_getUid("earlierDate:"), function $CPDate__earlierDate_(self, _cmd, anotherDate) +{ with(self) +{ + return (self < anotherDate) ? self : anotherDate; +} +},["CPDate","CPDate"]), new objj_method(sel_getUid("laterDate:"), function $CPDate__laterDate_(self, _cmd, anotherDate) +{ with(self) +{ + return (self > anotherDate) ? self : anotherDate; +} +},["CPDate","CPDate"]), new objj_method(sel_getUid("description"), function $CPDate__description(self, _cmd) +{ with(self) +{ + var positive = self.getTimezoneOffset() >= 0, + hours = FLOOR(self.getTimezoneOffset() / 60), + minutes = self.getTimezoneOffset() - hours * 60; + return objj_msgSend(CPString, "stringWithFormat:", "%04d-%02d-%02d %02d:%02d:%02d %s%02d%02d", self.getFullYear(), self.getMonth()+1, self.getDate(), self.getHours(), self.getMinutes(), self.getSeconds(), positive ? "+" : "-", ABS(hours), ABS(minutes)); +} +},["CPString"]), new objj_method(sel_getUid("copy"), function $CPDate__copy(self, _cmd) +{ with(self) +{ + return new Date(self.getTime()); +} +},["id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $CPDate__alloc(self, _cmd) +{ with(self) +{ + return new Date; +} +},["id"]), new objj_method(sel_getUid("date"), function $CPDate__date(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("dateWithTimeIntervalSinceNow:"), function $CPDate__dateWithTimeIntervalSinceNow_(self, _cmd, seconds) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDate, "alloc"), "initWithTimeIntervalSinceNow:", seconds); +} +},["id","CPTimeInterval"]), new objj_method(sel_getUid("dateWithTimeIntervalSince1970:"), function $CPDate__dateWithTimeIntervalSince1970_(self, _cmd, seconds) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDate, "alloc"), "initWithTimeIntervalSince1970:", seconds); +} +},["id","CPTimeInterval"]), new objj_method(sel_getUid("dateWithTimeIntervalSinceReferenceDate:"), function $CPDate__dateWithTimeIntervalSinceReferenceDate_(self, _cmd, seconds) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDate, "alloc"), "initWithTimeIntervalSinceReferenceDate:", seconds); +} +},["id","CPTimeInterval"]), new objj_method(sel_getUid("distantPast"), function $CPDate__distantPast(self, _cmd) +{ with(self) +{ + return new Date(-10000, 1, 1, 0, 0, 0, 0); +} +},["id"]), new objj_method(sel_getUid("distantFuture"), function $CPDate__distantFuture(self, _cmd) +{ with(self) +{ + return new Date(10000, 1, 1, 0, 0, 0, 0); +} +},["id"]), new objj_method(sel_getUid("timeIntervalSinceReferenceDate"), function $CPDate__timeIntervalSinceReferenceDate(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPDate, "date"), "timeIntervalSinceReferenceDate"); +} +},["CPTimeInterval"])]); +} +var CPDateTimeKey = "CPDateTimeKey"; +{ +var the_class = objj_getClass("CPDate") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDate\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPDate__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self) + { + self.setTime(objj_msgSend(aCoder, "decodeIntForKey:", CPDateTimeKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPDate__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeInt:forKey:", self.getTime(), CPDateTimeKey); +} +},["void","CPCoder"])]); +} +Date.prototype.isa = CPDate; + +p;14;CPDictionary.jt;12564;@STATIC;1.0;i;9;CPArray.ji;14;CPEnumerator.ji;13;CPException.ji;10;CPObject.jt;12479;objj_executeFile("CPArray.j", YES); +objj_executeFile("CPEnumerator.j", YES); +objj_executeFile("CPException.j", YES); +objj_executeFile("CPObject.j", YES); +{var the_class = objj_allocateClassPair(CPEnumerator, "_CPDictionaryValueEnumerator"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_keyEnumerator"), new objj_ivar("_dictionary")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithDictionary:"), function $_CPDictionaryValueEnumerator__initWithDictionary_(self, _cmd, aDictionary) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPDictionaryValueEnumerator").super_class }, "init"); + if (self) + { + _keyEnumerator = objj_msgSend(aDictionary, "keyEnumerator"); + _dictionary = aDictionary; + } + return self; +} +},["id","CPDictionary"]), new objj_method(sel_getUid("nextObject"), function $_CPDictionaryValueEnumerator__nextObject(self, _cmd) +{ with(self) +{ + var key = objj_msgSend(_keyEnumerator, "nextObject"); + if (!key) + return nil; + return objj_msgSend(_dictionary, "objectForKey:", key); +} +},["id"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPDictionary"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithDictionary:"), function $CPDictionary__initWithDictionary_(self, _cmd, aDictionary) +{ with(self) +{ + var key = "", + dictionary = objj_msgSend(objj_msgSend(CPDictionary, "alloc"), "init"); + for (key in aDictionary._buckets) + objj_msgSend(dictionary, "setObject:forKey:", objj_msgSend(aDictionary, "objectForKey:", key), key); + return dictionary; +} +},["id","CPDictionary"]), new objj_method(sel_getUid("initWithObjects:forKeys:"), function $CPDictionary__initWithObjects_forKeys_(self, _cmd, objects, keyArray) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDictionary").super_class }, "init"); + if (objj_msgSend(objects, "count") != objj_msgSend(keyArray, "count")) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Counts are different.(" + objj_msgSend(objects, "count") + "!=" + objj_msgSend(keyArray, "count") + ")"); + if (self) + { + var i = objj_msgSend(keyArray, "count"); + while (i--) + objj_msgSend(self, "setObject:forKey:", objects[i], keyArray[i]); + } + return self; +} +},["id","CPArray","CPArray"]), new objj_method(sel_getUid("initWithObjectsAndKeys:"), function $CPDictionary__initWithObjectsAndKeys_(self, _cmd, firstObject) +{ with(self) +{ + var argCount = arguments.length; + if (argCount % 2 !== 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Key-value count is mismatched. (" + argCount + " arguments passed)"); + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDictionary").super_class }, "init"); + if (self) + { + var index = 2; + for (; index < argCount; index += 2) + { + var value = arguments[index]; + if (value === nil) + break; + objj_msgSend(self, "setObject:forKey:", value, arguments[index + 1]); + } + } + return self; +} +},["id","id"]), new objj_method(sel_getUid("copy"), function $CPDictionary__copy(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDictionary, "dictionaryWithDictionary:", self); +} +},["CPDictionary"]), new objj_method(sel_getUid("count"), function $CPDictionary__count(self, _cmd) +{ with(self) +{ + return _count; +} +},["int"]), new objj_method(sel_getUid("allKeys"), function $CPDictionary__allKeys(self, _cmd) +{ with(self) +{ + return objj_msgSend(_keys, "copy"); +} +},["CPArray"]), new objj_method(sel_getUid("allValues"), function $CPDictionary__allValues(self, _cmd) +{ with(self) +{ + var index = _keys.length, + values = []; + while (index--) + values.push(self.valueForKey(_keys[index])); + return values; +} +},["CPArray"]), new objj_method(sel_getUid("allKeysForObject:"), function $CPDictionary__allKeysForObject_(self, _cmd, anObject) +{ with(self) +{ + var count = _keys.length, + index = 0, + matchingKeys = [], + thisKey = nil, + thisValue = nil; + for (; index < count; ++index) + { + thisKey = _keys[index], + thisValue = _buckets[thisKey]; + if (thisValue.isa && anObject && anObject.isa && objj_msgSend(thisValue, "respondsToSelector:", sel_getUid("isEqual:")) && objj_msgSend(thisValue, "isEqual:", anObject)) + matchingKeys.push(thisKey); + else if (thisValue === anObject) + matchingKeys.push(thisKey); + } + return matchingKeys; +} +},["CPArray","id"]), new objj_method(sel_getUid("keyEnumerator"), function $CPDictionary__keyEnumerator(self, _cmd) +{ with(self) +{ + return objj_msgSend(_keys, "objectEnumerator"); +} +},["CPEnumerator"]), new objj_method(sel_getUid("objectEnumerator"), function $CPDictionary__objectEnumerator(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(_CPDictionaryValueEnumerator, "alloc"), "initWithDictionary:", self); +} +},["CPEnumerator"]), new objj_method(sel_getUid("isEqualToDictionary:"), function $CPDictionary__isEqualToDictionary_(self, _cmd, aDictionary) +{ with(self) +{ + if (self === aDictionary) + return YES; + var count = objj_msgSend(self, "count"); + if (count !== objj_msgSend(aDictionary, "count")) + return NO; + var index = count; + while (index--) + { + var currentKey = _keys[index], + lhsObject = _buckets[currentKey], + rhsObject = aDictionary._buckets[currentKey]; + if (lhsObject === rhsObject) + continue; + if (lhsObject && lhsObject.isa && rhsObject && rhsObject.isa && objj_msgSend(lhsObject, "respondsToSelector:", sel_getUid("isEqual:")) && objj_msgSend(lhsObject, "isEqual:", rhsObject)) + continue; + return NO; + } + return YES; +} +},["BOOL","CPDictionary"]), new objj_method(sel_getUid("isEqual:"), function $CPDictionary__isEqual_(self, _cmd, anObject) +{ with(self) +{ + if (self === anObject) + return YES; + if (!objj_msgSend(anObject, "isKindOfClass:", objj_msgSend(CPDictionary, "class"))) + return NO; + return objj_msgSend(self, "isEqualToDictionary:", anObject); +} +},["BOOL","id"]), new objj_method(sel_getUid("objectForKey:"), function $CPDictionary__objectForKey_(self, _cmd, aKey) +{ with(self) +{ + var object = _buckets[aKey]; + return (object === undefined) ? nil : object; +} +},["id","id"]), new objj_method(sel_getUid("removeAllObjects"), function $CPDictionary__removeAllObjects(self, _cmd) +{ with(self) +{ + self.removeAllValues(); +} +},["void"]), new objj_method(sel_getUid("removeObjectForKey:"), function $CPDictionary__removeObjectForKey_(self, _cmd, aKey) +{ with(self) +{ + self.removeValueForKey(aKey); +} +},["void","id"]), new objj_method(sel_getUid("removeObjectsForKeys:"), function $CPDictionary__removeObjectsForKeys_(self, _cmd, keysForRemoval) +{ with(self) +{ + var index = keysForRemoval.length; + while (index--) + objj_msgSend(self, "removeObjectForKey:", keysForRemoval[index]); +} +},["void","CPArray"]), new objj_method(sel_getUid("setObject:forKey:"), function $CPDictionary__setObject_forKey_(self, _cmd, anObject, aKey) +{ with(self) +{ + self.setValueForKey(aKey, anObject); +} +},["void","id","id"]), new objj_method(sel_getUid("addEntriesFromDictionary:"), function $CPDictionary__addEntriesFromDictionary_(self, _cmd, aDictionary) +{ with(self) +{ + if (!aDictionary) + return; + var keys = objj_msgSend(aDictionary, "allKeys"), + index = objj_msgSend(keys, "count"); + while (index--) + { + var key = keys[index]; + objj_msgSend(self, "setObject:forKey:", objj_msgSend(aDictionary, "objectForKey:", key), key); + } +} +},["void","CPDictionary"]), new objj_method(sel_getUid("description"), function $CPDictionary__description(self, _cmd) +{ with(self) +{ + return self.toString(); +} +},["CPString"]), new objj_method(sel_getUid("containsKey:"), function $CPDictionary__containsKey_(self, _cmd, aKey) +{ with(self) +{ + var value = objj_msgSend(self, "objectForKey:", aKey); + return ((value !== nil) && (value !== undefined)); +} +},["BOOL","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $CPDictionary__alloc(self, _cmd) +{ with(self) +{ + return new CFMutableDictionary(); +} +},["id"]), new objj_method(sel_getUid("dictionary"), function $CPDictionary__dictionary(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("dictionaryWithDictionary:"), function $CPDictionary__dictionaryWithDictionary_(self, _cmd, aDictionary) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithDictionary:", aDictionary); +} +},["id","CPDictionary"]), new objj_method(sel_getUid("dictionaryWithObject:forKey:"), function $CPDictionary__dictionaryWithObject_forKey_(self, _cmd, anObject, aKey) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithObjects:forKeys:", [anObject], [aKey]); +} +},["id","id","id"]), new objj_method(sel_getUid("dictionaryWithObjects:forKeys:"), function $CPDictionary__dictionaryWithObjects_forKeys_(self, _cmd, objects, keys) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithObjects:forKeys:", objects, keys); +} +},["id","CPArray","CPArray"]), new objj_method(sel_getUid("dictionaryWithJSObject:"), function $CPDictionary__dictionaryWithJSObject_(self, _cmd, object) +{ with(self) +{ + return objj_msgSend(self, "dictionaryWithJSObject:recursively:", object, NO); +} +},["id","JSObject"]), new objj_method(sel_getUid("dictionaryWithJSObject:recursively:"), function $CPDictionary__dictionaryWithJSObject_recursively_(self, _cmd, object, recursively) +{ with(self) +{ + var key = "", + dictionary = objj_msgSend(objj_msgSend(self, "alloc"), "init"); + for (key in object) + { + if (!object.hasOwnProperty(key)) + continue; + var value = object[key]; + if (value === null) + { + objj_msgSend(dictionary, "setObject:forKey:", objj_msgSend(CPNull, "null"), key); + continue; + } + if (recursively) + { + if (value.constructor === Object) + value = objj_msgSend(CPDictionary, "dictionaryWithJSObject:recursively:", value, YES); + else if (objj_msgSend(value, "isKindOfClass:", CPArray)) + { + var newValue = [], + i = 0, + count = value.length; + for (; i < count; i++) + { + var thisValue = value[i]; + if (thisValue.constructor === Object) + newValue.push(objj_msgSend(CPDictionary, "dictionaryWithJSObject:recursively:", thisValue, YES)); + else + newValue.push(thisValue); + } + value = newValue; + } + } + objj_msgSend(dictionary, "setObject:forKey:", value, key); + } + return dictionary; +} +},["id","JSObject","BOOL"]), new objj_method(sel_getUid("dictionaryWithObjectsAndKeys:"), function $CPDictionary__dictionaryWithObjectsAndKeys_(self, _cmd, firstObject) +{ with(self) +{ + arguments[0] = objj_msgSend(self, "alloc"); + arguments[1] = sel_getUid("initWithObjectsAndKeys:"); + return objj_msgSend.apply(this, arguments); +} +},["id","id"])]); +} +{ +var the_class = objj_getClass("CPDictionary") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDictionary\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPDictionary__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(aCoder, "_decodeDictionaryOfObjectsForKey:", "CP.objects"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPDictionary__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "_encodeDictionaryOfObjects:forKey:", self, "CP.objects"); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPDictionary, "CPMutableDictionary"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} +CFDictionary.prototype.isa = CPDictionary; +CFMutableDictionary.prototype.isa = CPMutableDictionary; + +p;14;CPEnumerator.jt;503;@STATIC;1.0;i;10;CPObject.jt;470;objj_executeFile("CPObject.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPEnumerator"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("nextObject"), function $CPEnumerator__nextObject(self, _cmd) +{ with(self) +{ + return nil; +} +},["id"]), new objj_method(sel_getUid("allObjects"), function $CPEnumerator__allObjects(self, _cmd) +{ with(self) +{ + return []; +} +},["CPArray"])]); +} + +p;13;CPException.jt;4919;@STATIC;1.0;i;9;CPCoder.ji;10;CPObject.ji;10;CPString.jt;4857;objj_executeFile("CPCoder.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPString.j", YES); +CPInvalidArgumentException = "CPInvalidArgumentException"; +CPUnsupportedMethodException = "CPUnsupportedMethodException"; +CPRangeException = "CPRangeException"; +CPInternalInconsistencyException = "CPInternalInconsistencyException"; +{var the_class = objj_allocateClassPair(CPObject, "CPException"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_userInfo")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithName:reason:userInfo:"), function $CPException__initWithName_reason_userInfo_(self, _cmd, aName, aReason, aUserInfo) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPException").super_class }, "init"); + if (self) + { + name = aName; + message = aReason; + _userInfo = aUserInfo; + } + return self; +} +},["id","CPString","CPString","CPDictionary"]), new objj_method(sel_getUid("name"), function $CPException__name(self, _cmd) +{ with(self) +{ + return name; +} +},["CPString"]), new objj_method(sel_getUid("reason"), function $CPException__reason(self, _cmd) +{ with(self) +{ + return message; +} +},["CPString"]), new objj_method(sel_getUid("userInfo"), function $CPException__userInfo(self, _cmd) +{ with(self) +{ + return _userInfo; +} +},["CPDictionary"]), new objj_method(sel_getUid("description"), function $CPException__description(self, _cmd) +{ with(self) +{ + return message; +} +},["CPString"]), new objj_method(sel_getUid("raise"), function $CPException__raise(self, _cmd) +{ with(self) +{ + throw self; +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $CPException__alloc(self, _cmd) +{ with(self) +{ + return new Error(); +} +},["id"]), new objj_method(sel_getUid("raise:reason:"), function $CPException__raise_reason_(self, _cmd, aName, aReason) +{ with(self) +{ + objj_msgSend(objj_msgSend(self, "exceptionWithName:reason:userInfo:", aName, aReason, nil), "raise"); +} +},["void","CPString","CPString"]), new objj_method(sel_getUid("exceptionWithName:reason:userInfo:"), function $CPException__exceptionWithName_reason_userInfo_(self, _cmd, aName, aReason, aUserInfo) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithName:reason:userInfo:", aName, aReason, aUserInfo); +} +},["CPException","CPString","CPString","CPDictionary"])]); +} +{ +var the_class = objj_getClass("CPException") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPException\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("copy"), function $CPException__copy(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "exceptionWithName:reason:userInfo:", name, message, _userInfo); +} +},["id"])]); +} +var CPExceptionNameKey = "CPExceptionNameKey", + CPExceptionReasonKey = "CPExceptionReasonKey", + CPExceptionUserInfoKey = "CPExceptionUserInfoKey"; +{ +var the_class = objj_getClass("CPException") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPException\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPException__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPException").super_class }, "init"); + if (self) + { + name = objj_msgSend(aCoder, "decodeObjectForKey:", CPExceptionNameKey); + message = objj_msgSend(aCoder, "decodeObjectForKey:", CPExceptionReasonKey); + _userInfo = objj_msgSend(aCoder, "decodeObjectForKey:", CPExceptionUserInfoKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPException__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", name, CPExceptionNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", message, CPExceptionReasonKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _userInfo, CPExceptionUserInfoKey); +} +},["void","CPCoder"])]); +} +Error.prototype.isa = CPException; +Error.prototype._userInfo = NULL; +objj_msgSend(CPException, "initialize"); +_CPRaiseInvalidAbstractInvocation= function(anObject, aSelector) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "*** -" + sel_getName(aSelector) + " cannot be sent to an abstract object of class " + objj_msgSend(anObject, "className") + ": Create a concrete instance!"); +} +_CPReportLenientDeprecation= function( aClass, oldSelector, newSelector) +{ + CPLog.warn("[" + CPStringFromClass(aClass) + " " + CPStringFromSelector(oldSelector) + "] is deprecated, using " + CPStringFromSelector(newSelector) + " instead."); +} + +p;13;CPFormatter.jt;2449;@STATIC;1.0;I;21;Foundation/CPObject.jt;2404;objj_executeFile("Foundation/CPObject.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPFormatter"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("stringForObjectValue:"), function $CPFormatter__stringForObjectValue_(self, _cmd, anObject) +{ with(self) +{ + _CPRaiseInvalidAbstractInvocation(self, sel_getUid("stringForObjectValue:")); + return nil; +} +},["CPString","id"]), new objj_method(sel_getUid("editingStringForObjectValue:"), function $CPFormatter__editingStringForObjectValue_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(self, "stringForObjectValue:", anObject); +} +},["CPString","id"]), new objj_method(sel_getUid("getObjectValue:forString:errorDescription:"), function $CPFormatter__getObjectValue_forString_errorDescription_(self, _cmd, anObject, aString, anError) +{ with(self) +{ + _CPRaiseInvalidAbstractInvocation(self, sel_getUid("getObjectValue:forString:errorDescription:")); + return NO; +} +},["BOOL","id","CPString","CPString"]), new objj_method(sel_getUid("isPartialStringValid:newEditingString:errorDescription:"), function $CPFormatter__isPartialStringValid_newEditingString_errorDescription_(self, _cmd, aPartialString, aNewString, anError) +{ with(self) +{ + _CPRaiseInvalidAbstractInvocation(self, sel_getUid("isPartialStringValid:newEditingString:errorDescription:")); + return NO; +} +},["BOOL","CPString","CPString","CPString"]), new objj_method(sel_getUid("isPartialStringValue:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"), function $CPFormatter__isPartialStringValue_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_(self, _cmd, aPartialString, aProposedSelectedRange, originalString, originalSelectedRange, anError) +{ with(self) +{ + _CPRaiseInvalidAbstractInvocation(self, sel_getUid("isPartialStringValue:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:")); + return NO; +} +},["BOOL","CPString","CPRange","CPString","CPRange","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $CPFormatter__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPFormatter__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +} + +p;21;CPFunctionOperation.jt;1859;@STATIC;1.0;I;21;Foundation/CPObject.ji;13;CPOperation.jt;1796;objj_executeFile("Foundation/CPObject.j", NO); +objj_executeFile("CPOperation.j", YES); +{var the_class = objj_allocateClassPair(CPOperation, "CPFunctionOperation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_functions")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("main"), function $CPFunctionOperation__main(self, _cmd) +{ with(self) +{ + if (_functions && objj_msgSend(_functions, "count") > 0) + { + var i = 0, + count = objj_msgSend(_functions, "count"); + for (; i < count; i++) + { + var func = objj_msgSend(_functions, "objectAtIndex:", i); + func(); + } + } +} +},["void"]), new objj_method(sel_getUid("init"), function $CPFunctionOperation__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPFunctionOperation").super_class }, "init")) + { + _functions = []; + } + return self; +} +},["id"]), new objj_method(sel_getUid("addExecutionFunction:"), function $CPFunctionOperation__addExecutionFunction_(self, _cmd, jsFunction) +{ with(self) +{ + objj_msgSend(_functions, "addObject:", jsFunction); +} +},["void","JSObject"]), new objj_method(sel_getUid("executionFunctions"), function $CPFunctionOperation__executionFunctions(self, _cmd) +{ with(self) +{ + return _functions; +} +},["CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("functionOperationWithFunction:"), function $CPFunctionOperation__functionOperationWithFunction_(self, _cmd, jsFunction) +{ with(self) +{ + functionOp = objj_msgSend(objj_msgSend(CPFunctionOperation, "alloc"), "init"); + objj_msgSend(functionOp, "addExecutionFunction:", jsFunction); + return functionOp; +} +},["id","JSObject"])]); +} + +p;12;CPIndexSet.jt;21433;@STATIC;1.0;i;10;CPObject.ji;9;CPRange.jt;21385;objj_executeFile("CPObject.j", YES); +objj_executeFile("CPRange.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPIndexSet"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_count"), new objj_ivar("_ranges")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPIndexSet__init(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "initWithIndexesInRange:", { location:(0), length:0 }); +} +},["id"]), new objj_method(sel_getUid("initWithIndex:"), function $CPIndexSet__initWithIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(self, "initWithIndexesInRange:", { location:(anIndex), length:1 }); +} +},["id","CPInteger"]), new objj_method(sel_getUid("initWithIndexesInRange:"), function $CPIndexSet__initWithIndexesInRange_(self, _cmd, aRange) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPIndexSet").super_class }, "init"); + if (self) + { + _count = MAX(0, aRange.length); + if (_count > 0) + _ranges = [aRange]; + else + _ranges = []; + } + return self; +} +},["id","CPRange"]), new objj_method(sel_getUid("initWithIndexSet:"), function $CPIndexSet__initWithIndexSet_(self, _cmd, anIndexSet) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPIndexSet").super_class }, "init"); + if (self) + { + _count = objj_msgSend(anIndexSet, "count"); + _ranges = []; + var otherRanges = anIndexSet._ranges, + otherRangesCount = otherRanges.length; + while (otherRangesCount--) + _ranges[otherRangesCount] = { location:(otherRanges[otherRangesCount]).location, length:(otherRanges[otherRangesCount]).length }; + } + return self; +} +},["id","CPIndexSet"]), new objj_method(sel_getUid("isEqual:"), function $CPIndexSet__isEqual_(self, _cmd, anObject) +{ with(self) +{ + if (self === anObject) + return YES; + if (!anObject || !objj_msgSend(anObject, "isKindOfClass:", objj_msgSend(CPIndexSet, "class"))) + return NO; + return objj_msgSend(self, "isEqualToIndexSet:", anObject); +} +},["BOOL","id"]), new objj_method(sel_getUid("isEqualToIndexSet:"), function $CPIndexSet__isEqualToIndexSet_(self, _cmd, anIndexSet) +{ with(self) +{ + if (!anIndexSet) + return NO; + if (self === anIndexSet) + return YES; + var rangesCount = _ranges.length, + otherRanges = anIndexSet._ranges; + if (rangesCount !== otherRanges.length || _count !== anIndexSet._count) + return NO; + while (rangesCount--) + if (!CPEqualRanges(_ranges[rangesCount], otherRanges[rangesCount])) + return NO; + return YES; +} +},["BOOL","CPIndexSet"]), new objj_method(sel_getUid("isEqual:"), function $CPIndexSet__isEqual_(self, _cmd, anObject) +{ with(self) +{ + return self === anObject || + objj_msgSend(anObject, "isKindOfClass:", objj_msgSend(self, "class")) && + objj_msgSend(self, "isEqualToIndexSet:", anObject); +} +},["BOOL","id"]), new objj_method(sel_getUid("containsIndex:"), function $CPIndexSet__containsIndex_(self, _cmd, anIndex) +{ with(self) +{ + return positionOfIndex(_ranges, anIndex) !== CPNotFound; +} +},["BOOL","CPInteger"]), new objj_method(sel_getUid("containsIndexesInRange:"), function $CPIndexSet__containsIndexesInRange_(self, _cmd, aRange) +{ with(self) +{ + if (aRange.length <= 0) + return NO; + if (_count < aRange.length) + return NO; + var rangeIndex = positionOfIndex(_ranges, aRange.location); + if (rangeIndex === CPNotFound) + return NO; + var range = _ranges[rangeIndex]; + return CPIntersectionRange(range, aRange).length === aRange.length; +} +},["BOOL","CPRange"]), new objj_method(sel_getUid("containsIndexes:"), function $CPIndexSet__containsIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + var otherCount = anIndexSet._count; + if (otherCount <= 0) + return YES; + if (_count < otherCount) + return NO; + var otherRanges = anIndexSet._ranges, + otherRangesCount = otherRanges.length; + while (otherRangesCount--) + if (!objj_msgSend(self, "containsIndexesInRange:", otherRanges[otherRangesCount])) + return NO; + return YES; +} +},["BOOL","CPIndexSet"]), new objj_method(sel_getUid("intersectsIndexesInRange:"), function $CPIndexSet__intersectsIndexesInRange_(self, _cmd, aRange) +{ with(self) +{ + if (_count <= 0) + return NO; + var lhsRangeIndex = assumedPositionOfIndex(_ranges, aRange.location); + if (FLOOR(lhsRangeIndex) === lhsRangeIndex) + return YES; + var rhsRangeIndex = assumedPositionOfIndex(_ranges, ((aRange).location + (aRange).length) - 1); + if (FLOOR(rhsRangeIndex) === rhsRangeIndex) + return YES; + return lhsRangeIndex !== rhsRangeIndex; +} +},["BOOL","CPRange"]), new objj_method(sel_getUid("count"), function $CPIndexSet__count(self, _cmd) +{ with(self) +{ + return _count; +} +},["int"]), new objj_method(sel_getUid("firstIndex"), function $CPIndexSet__firstIndex(self, _cmd) +{ with(self) +{ + if (_count > 0) + return _ranges[0].location; + return CPNotFound; +} +},["CPInteger"]), new objj_method(sel_getUid("lastIndex"), function $CPIndexSet__lastIndex(self, _cmd) +{ with(self) +{ + if (_count > 0) + return ((_ranges[_ranges.length - 1]).location + (_ranges[_ranges.length - 1]).length) - 1; + return CPNotFound; +} +},["CPInteger"]), new objj_method(sel_getUid("indexGreaterThanIndex:"), function $CPIndexSet__indexGreaterThanIndex_(self, _cmd, anIndex) +{ with(self) +{ + ++anIndex; + var rangeIndex = assumedPositionOfIndex(_ranges, anIndex); + if (rangeIndex === CPNotFound) + return CPNotFound; + rangeIndex = CEIL(rangeIndex); + if (rangeIndex >= _ranges.length) + return CPNotFound; + var range = _ranges[rangeIndex]; + if (CPLocationInRange(anIndex, range)) + return anIndex; + return range.location; +} +},["CPInteger","CPInteger"]), new objj_method(sel_getUid("indexLessThanIndex:"), function $CPIndexSet__indexLessThanIndex_(self, _cmd, anIndex) +{ with(self) +{ + --anIndex; + var rangeIndex = assumedPositionOfIndex(_ranges, anIndex); + if (rangeIndex === CPNotFound) + return CPNotFound; + rangeIndex = FLOOR(rangeIndex); + if (rangeIndex < 0) + return CPNotFound; + var range = _ranges[rangeIndex]; + if (CPLocationInRange(anIndex, range)) + return anIndex; + return ((range).location + (range).length) - 1; +} +},["CPInteger","CPInteger"]), new objj_method(sel_getUid("indexGreaterThanOrEqualToIndex:"), function $CPIndexSet__indexGreaterThanOrEqualToIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(self, "indexGreaterThanIndex:", anIndex - 1); +} +},["CPInteger","CPInteger"]), new objj_method(sel_getUid("indexLessThanOrEqualToIndex:"), function $CPIndexSet__indexLessThanOrEqualToIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(self, "indexLessThanIndex:", anIndex + 1); +} +},["CPInteger","CPInteger"]), new objj_method(sel_getUid("getIndexes:maxCount:inIndexRange:"), function $CPIndexSet__getIndexes_maxCount_inIndexRange_(self, _cmd, anArray, aMaxCount, aRange) +{ with(self) +{ + if (!_count || aMaxCount === 0 || aRange && !aRange.length) + { + if (aRange) + aRange.length = 0; + return 0; + } + var total = 0; + if (aRange) + { + var firstIndex = aRange.location, + lastIndex = ((aRange).location + (aRange).length) - 1, + rangeIndex = CEIL(assumedPositionOfIndex(_ranges, firstIndex)), + lastRangeIndex = FLOOR(assumedPositionOfIndex(_ranges, lastIndex)); + } + else + { + var firstIndex = objj_msgSend(self, "firstIndex"), + lastIndex = objj_msgSend(self, "lastIndex"), + rangeIndex = 0, + lastRangeIndex = _ranges.length - 1; + } + while (rangeIndex <= lastRangeIndex) + { + var range = _ranges[rangeIndex], + index = MAX(firstIndex, range.location), + maxRange = MIN(lastIndex + 1, ((range).location + (range).length)); + for (; index < maxRange; ++index) + { + anArray[total++] = index; + if (total === aMaxCount) + { + if (aRange) + { + aRange.location = index + 1; + aRange.length = lastIndex + 1 - index - 1; + } + return aMaxCount; + } + } + ++rangeIndex; + } + if (aRange) + { + aRange.location = CPNotFound; + aRange.length = 0; + } + return total; +} +},["CPInteger","CPArray","CPInteger","CPRange"]), new objj_method(sel_getUid("description"), function $CPIndexSet__description(self, _cmd) +{ with(self) +{ + var description = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPIndexSet").super_class }, "description"); + if (_count) + { + var index = 0, + count = _ranges.length; + description += "[number of indexes: " + _count + " (in " + count; + if (count === 1) + description += " range), indexes: ("; + else + description += " ranges), indexes: ("; + for (; index < count; ++index) + { + var range = _ranges[index]; + description += range.location; + if (range.length > 1) + description += "-" + (CPMaxRange(range) - 1); + if (index + 1 < count) + description += " "; + } + description += ")]"; + } + else + description += "(no indexes)"; + return description; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("indexSet"), function $CPIndexSet__indexSet(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("indexSetWithIndex:"), function $CPIndexSet__indexSetWithIndex_(self, _cmd, anIndex) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithIndex:", anIndex); +} +},["id","int"]), new objj_method(sel_getUid("indexSetWithIndexesInRange:"), function $CPIndexSet__indexSetWithIndexesInRange_(self, _cmd, aRange) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithIndexesInRange:", aRange); +} +},["id","CPRange"])]); +} +{ +var the_class = objj_getClass("CPIndexSet") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("addIndex:"), function $CPIndexSet__addIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(self, "addIndexesInRange:", { location:(anIndex), length:1 }); +} +},["void","CPInteger"]), new objj_method(sel_getUid("addIndexes:"), function $CPIndexSet__addIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + var otherRanges = anIndexSet._ranges, + otherRangesCount = otherRanges.length; + while (otherRangesCount--) + objj_msgSend(self, "addIndexesInRange:", otherRanges[otherRangesCount]); +} +},["void","CPIndexSet"]), new objj_method(sel_getUid("addIndexesInRange:"), function $CPIndexSet__addIndexesInRange_(self, _cmd, aRange) +{ with(self) +{ + if (aRange.length <= 0) + return; + if (_count <= 0) + { + _count = aRange.length; + _ranges = [aRange]; + return; + } + var rangeCount = _ranges.length, + lhsRangeIndex = assumedPositionOfIndex(_ranges, aRange.location - 1), + lhsRangeIndexCEIL = CEIL(lhsRangeIndex); + if (lhsRangeIndexCEIL === lhsRangeIndex && lhsRangeIndexCEIL < rangeCount) + aRange = CPUnionRange(aRange, _ranges[lhsRangeIndexCEIL]); + var rhsRangeIndex = assumedPositionOfIndex(_ranges, CPMaxRange(aRange)), + rhsRangeIndexFLOOR = FLOOR(rhsRangeIndex); + if (rhsRangeIndexFLOOR === rhsRangeIndex && rhsRangeIndexFLOOR >= 0) + aRange = CPUnionRange(aRange, _ranges[rhsRangeIndexFLOOR]); + var removalCount = rhsRangeIndexFLOOR - lhsRangeIndexCEIL + 1; + if (removalCount === _ranges.length) + { + _ranges = [aRange]; + _count = aRange.length; + } + else if (removalCount === 1) + { + if (lhsRangeIndexCEIL < _ranges.length) + _count -= _ranges[lhsRangeIndexCEIL].length; + _count += aRange.length; + _ranges[lhsRangeIndexCEIL] = aRange; + } + else + { + if (removalCount > 0) + { + var removal = lhsRangeIndexCEIL, + lastRemoval = lhsRangeIndexCEIL + removalCount - 1; + for (; removal <= lastRemoval; ++removal) + _count -= _ranges[removal].length; + objj_msgSend(_ranges, "removeObjectsInRange:", { location:(lhsRangeIndexCEIL), length:removalCount }); + } + objj_msgSend(_ranges, "insertObject:atIndex:", aRange, lhsRangeIndexCEIL); + _count += aRange.length; + } +} +},["void","CPRange"]), new objj_method(sel_getUid("removeIndex:"), function $CPIndexSet__removeIndex_(self, _cmd, anIndex) +{ with(self) +{ + objj_msgSend(self, "removeIndexesInRange:", { location:(anIndex), length:1 }); +} +},["void","CPInteger"]), new objj_method(sel_getUid("removeIndexes:"), function $CPIndexSet__removeIndexes_(self, _cmd, anIndexSet) +{ with(self) +{ + var otherRanges = anIndexSet._ranges, + otherRangesCount = otherRanges.length; + while (otherRangesCount--) + objj_msgSend(self, "removeIndexesInRange:", otherRanges[otherRangesCount]); +} +},["void","CPIndexSet"]), new objj_method(sel_getUid("removeAllIndexes"), function $CPIndexSet__removeAllIndexes(self, _cmd) +{ with(self) +{ + _ranges = []; + _count = 0; +} +},["void"]), new objj_method(sel_getUid("removeIndexesInRange:"), function $CPIndexSet__removeIndexesInRange_(self, _cmd, aRange) +{ with(self) +{ + if (aRange.length <= 0) + return; + if (_count <= 0) + return; + var rangeCount = _ranges.length, + lhsRangeIndex = assumedPositionOfIndex(_ranges, aRange.location), + lhsRangeIndexCEIL = CEIL(lhsRangeIndex); + if (lhsRangeIndex === lhsRangeIndexCEIL && lhsRangeIndexCEIL < rangeCount) + { + var existingRange = _ranges[lhsRangeIndexCEIL]; + if (aRange.location !== existingRange.location) + { + var maxRange = CPMaxRange(aRange), + existingMaxRange = CPMaxRange(existingRange); + existingRange.length = aRange.location - existingRange.location; + if (maxRange < existingMaxRange) + { + _count -= aRange.length; + objj_msgSend(_ranges, "insertObject:atIndex:", { location:(maxRange), length:existingMaxRange - maxRange }, lhsRangeIndexCEIL + 1); + return; + } + else + { + _count -= existingMaxRange - aRange.location; + lhsRangeIndexCEIL += 1; + } + } + } + var rhsRangeIndex = assumedPositionOfIndex(_ranges, CPMaxRange(aRange) - 1), + rhsRangeIndexFLOOR = FLOOR(rhsRangeIndex); + if (rhsRangeIndex === rhsRangeIndexFLOOR && rhsRangeIndexFLOOR >= 0) + { + var maxRange = CPMaxRange(aRange), + existingRange = _ranges[rhsRangeIndexFLOOR], + existingMaxRange = CPMaxRange(existingRange); + if (maxRange !== existingMaxRange) + { + _count -= maxRange - existingRange.location; + rhsRangeIndexFLOOR -= 1; + existingRange.location = maxRange; + existingRange.length = existingMaxRange - maxRange; + } + } + var removalCount = rhsRangeIndexFLOOR - lhsRangeIndexCEIL + 1; + if (removalCount > 0) + { + var removal = lhsRangeIndexCEIL, + lastRemoval = lhsRangeIndexCEIL + removalCount - 1; + for (; removal <= lastRemoval; ++removal) + _count -= _ranges[removal].length; + objj_msgSend(_ranges, "removeObjectsInRange:", { location:(lhsRangeIndexCEIL), length:removalCount }); + } +} +},["void","CPRange"]), new objj_method(sel_getUid("shiftIndexesStartingAtIndex:by:"), function $CPIndexSet__shiftIndexesStartingAtIndex_by_(self, _cmd, anIndex, aDelta) +{ with(self) +{ + if (!_count || aDelta == 0) + return; + var i = _ranges.length - 1, + shifted = CPMakeRange(CPNotFound, 0); + for (; i >= 0; --i) + { + var range = _ranges[i], + maximum = CPMaxRange(range); + if (anIndex >= maximum) + break; + if (anIndex > range.location) + { + shifted = CPMakeRange(anIndex + aDelta, maximum - anIndex); + range.length = anIndex - range.location; + if (aDelta > 0) + objj_msgSend(_ranges, "insertObject:atIndex:", shifted, i + 1); + else if (shifted.location < 0) + { + shifted.length = CPMaxRange(shifted); + shifted.location = 0; + } + break; + } + if ((range.location += aDelta) < 0) + { + range.length = CPMaxRange(range); + range.location = 0; + } + } + if (aDelta < 0) + { + var j = i + 1, + count = _ranges.length, + shifts = []; + for (; j < count; ++j) + { + objj_msgSend(shifts, "addObject:", _ranges[j]); + _count -= _ranges[j].length; + } + if ((j = i + 1) < count) + { + objj_msgSend(_ranges, "removeObjectsInRange:", CPMakeRange(j, count - j)); + for (j = 0, count = shifts.length; j < count; ++j) + objj_msgSend(self, "addIndexesInRange:", shifts[j]); + } + if (shifted.location != CPNotFound) + objj_msgSend(self, "addIndexesInRange:", shifted); + } +} +},["void","CPInteger","int"])]); +} +var CPIndexSetCountKey = "CPIndexSetCountKey", + CPIndexSetRangeStringsKey = "CPIndexSetRangeStringsKey"; +{ +var the_class = objj_getClass("CPIndexSet") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPIndexSet__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPIndexSet").super_class }, "init"); + if (self) + { + _count = objj_msgSend(aCoder, "decodeIntForKey:", CPIndexSetCountKey); + _ranges = []; + var rangeStrings = objj_msgSend(aCoder, "decodeObjectForKey:", CPIndexSetRangeStringsKey), + index = 0, + count = rangeStrings.length; + for (; index < count; ++index) + _ranges.push(CPRangeFromString(rangeStrings[index])); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPIndexSet__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeInt:forKey:", _count, CPIndexSetCountKey); + var index = 0, + count = _ranges.length, + rangeStrings = []; + for (; index < count; ++index) + rangeStrings[index] = CPStringFromRange(_ranges[index]); + objj_msgSend(aCoder, "encodeObject:forKey:", rangeStrings, CPIndexSetRangeStringsKey); +} +},["void","CPCoder"])]); +} +{ +var the_class = objj_getClass("CPIndexSet") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("copy"), function $CPIndexSet__copy(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "initWithIndexSet:", self); +} +},["id"]), new objj_method(sel_getUid("mutableCopy"), function $CPIndexSet__mutableCopy(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "initWithIndexSet:", self); +} +},["id"])]); +} +{var the_class = objj_allocateClassPair(CPIndexSet, "CPMutableIndexSet"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} +var positionOfIndex = function(ranges, anIndex) +{ + var low = 0, + high = ranges.length - 1; + while (low <= high) + { + var middle = FLOOR(low + (high - low) / 2), + range = ranges[middle]; + if (anIndex < range.location) + high = middle - 1; + else if (anIndex >= CPMaxRange(range)) + low = middle + 1; + else + return middle; + } + return CPNotFound; +} +var assumedPositionOfIndex = function(ranges, anIndex) +{ + var count = ranges.length; + if (count <= 0) + return CPNotFound; + var low = 0, + high = count * 2; + while (low <= high) + { + var middle = FLOOR(low + (high - low) / 2), + position = middle / 2, + positionFLOOR = FLOOR(position); + if (position === positionFLOOR) + { + if (positionFLOOR - 1 >= 0 && anIndex < CPMaxRange(ranges[positionFLOOR - 1])) + high = middle - 1; + else if (positionFLOOR < count && anIndex >= ranges[positionFLOOR].location) + low = middle + 1; + else + return positionFLOOR - 0.5; + } + else + { + var range = ranges[positionFLOOR]; + if (anIndex < range.location) + high = middle - 1; + else if (anIndex >= CPMaxRange(range)) + low = middle + 1; + else + return positionFLOOR; + } + } + return CPNotFound; +} + +p;14;CPInvocation.jt;4019;@STATIC;1.0;i;13;CPException.ji;10;CPObject.jt;3967;objj_executeFile("CPException.j", YES); +objj_executeFile("CPObject.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPInvocation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_returnValue"), new objj_ivar("_arguments"), new objj_ivar("_methodSignature")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithMethodSignature:"), function $CPInvocation__initWithMethodSignature_(self, _cmd, aMethodSignature) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPInvocation").super_class }, "init"); + if (self) + { + _arguments = []; + _methodSignature = aMethodSignature; + } + return self; +} +},["id","CPMethodSignature"]), new objj_method(sel_getUid("setSelector:"), function $CPInvocation__setSelector_(self, _cmd, aSelector) +{ with(self) +{ + _arguments[1] = aSelector; +} +},["void","SEL"]), new objj_method(sel_getUid("selector"), function $CPInvocation__selector(self, _cmd) +{ with(self) +{ + return _arguments[1]; +} +},["SEL"]), new objj_method(sel_getUid("setTarget:"), function $CPInvocation__setTarget_(self, _cmd, aTarget) +{ with(self) +{ + _arguments[0] = aTarget; +} +},["void","id"]), new objj_method(sel_getUid("target"), function $CPInvocation__target(self, _cmd) +{ with(self) +{ + return _arguments[0]; +} +},["id"]), new objj_method(sel_getUid("setArgument:atIndex:"), function $CPInvocation__setArgument_atIndex_(self, _cmd, anArgument, anIndex) +{ with(self) +{ + _arguments[anIndex] = anArgument; +} +},["void","id","unsigned"]), new objj_method(sel_getUid("argumentAtIndex:"), function $CPInvocation__argumentAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return _arguments[anIndex]; +} +},["id","unsigned"]), new objj_method(sel_getUid("setReturnValue:"), function $CPInvocation__setReturnValue_(self, _cmd, aReturnValue) +{ with(self) +{ + _returnValue = aReturnValue; +} +},["void","id"]), new objj_method(sel_getUid("returnValue"), function $CPInvocation__returnValue(self, _cmd) +{ with(self) +{ + return _returnValue; +} +},["id"]), new objj_method(sel_getUid("invoke"), function $CPInvocation__invoke(self, _cmd) +{ with(self) +{ + _returnValue = objj_msgSend.apply(objj_msgSend, _arguments); +} +},["void"]), new objj_method(sel_getUid("invokeWithTarget:"), function $CPInvocation__invokeWithTarget_(self, _cmd, aTarget) +{ with(self) +{ + _arguments[0] = aTarget; + _returnValue = objj_msgSend.apply(objj_msgSend, _arguments); +} +},["void","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("invocationWithMethodSignature:"), function $CPInvocation__invocationWithMethodSignature_(self, _cmd, aMethodSignature) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithMethodSignature:", aMethodSignature); +} +},["id","CPMethodSignature"])]); +} +var CPInvocationArguments = "CPInvocationArguments", + CPInvocationReturnValue = "CPInvocationReturnValue"; +{ +var the_class = objj_getClass("CPInvocation") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPInvocation\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPInvocation__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPInvocation").super_class }, "init"); + if (self) + { + _returnValue = objj_msgSend(aCoder, "decodeObjectForKey:", CPInvocationReturnValue); + _arguments = objj_msgSend(aCoder, "decodeObjectForKey:", CPInvocationArguments); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPInvocation__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _returnValue, CPInvocationReturnValue); + objj_msgSend(aCoder, "encodeObject:forKey:", _arguments, CPInvocationArguments); +} +},["void","CPCoder"])]); +} + +p;23;CPInvocationOperation.jt;2098;@STATIC;1.0;i;14;CPInvocation.ji;10;CPObject.ji;13;CPOperation.jt;2027;objj_executeFile("CPInvocation.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPOperation.j", YES); +{var the_class = objj_allocateClassPair(CPOperation, "CPInvocationOperation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_invocation")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("main"), function $CPInvocationOperation__main(self, _cmd) +{ with(self) +{ + if (_invocation) + { + objj_msgSend(_invocation, "invoke"); + } +} +},["void"]), new objj_method(sel_getUid("init"), function $CPInvocationOperation__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPInvocationOperation").super_class }, "init")) + { + _invocation = nil; + } + return self; +} +},["id"]), new objj_method(sel_getUid("initWithInvocation:"), function $CPInvocationOperation__initWithInvocation_(self, _cmd, inv) +{ with(self) +{ + if (self = objj_msgSend(self, "init")) + { + _invocation = inv; + } + return self; +} +},["id","CPInvocation"]), new objj_method(sel_getUid("initWithTarget:selector:object:"), function $CPInvocationOperation__initWithTarget_selector_object_(self, _cmd, target, sel, arg) +{ with(self) +{ + var inv = objj_msgSend(objj_msgSend(CPInvocation, "alloc"), "initWithMethodSignature:", nil); + objj_msgSend(inv, "setTarget:", target); + objj_msgSend(inv, "setSelector:", sel); + objj_msgSend(inv, "setArgument:atIndex:", arg, 2); + return objj_msgSend(self, "initWithInvocation:", inv); +} +},["id","id","SEL","id"]), new objj_method(sel_getUid("invocation"), function $CPInvocationOperation__invocation(self, _cmd) +{ with(self) +{ + return _invocation; +} +},["CPInvocation"]), new objj_method(sel_getUid("result"), function $CPInvocationOperation__result(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "isFinished") && _invocation) + { + return objj_msgSend(_invocation, "returnValue"); + } + return nil; +} +},["id"])]); +} + +p;19;CPJSONPConnection.jt;5177;@STATIC;1.0;i;10;CPObject.jt;5143;objj_executeFile("CPObject.j", YES); +CPJSONPConnectionCallbacks = {}; +CPJSONPCallbackReplacementString = "${JSONP_CALLBACK}"; +{var the_class = objj_allocateClassPair(CPObject, "CPJSONPConnection"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_request"), new objj_ivar("_delegate"), new objj_ivar("_callbackParameter"), new objj_ivar("_scriptTag")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithRequest:callback:delegate:"), function $CPJSONPConnection__initWithRequest_callback_delegate_(self, _cmd, aRequest, aString, aDelegate) +{ with(self) +{ + return objj_msgSend(self, "initWithRequest:callback:delegate:startImmediately:", aRequest, aString, aDelegate, NO); +} +},["id","CPURLRequest","CPString","id"]), new objj_method(sel_getUid("initWithRequest:callback:delegate:startImmediately:"), function $CPJSONPConnection__initWithRequest_callback_delegate_startImmediately_(self, _cmd, aRequest, aString, aDelegate, shouldStartImmediately) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPJSONPConnection").super_class }, "init"); + _request = aRequest; + _delegate = aDelegate; + _callbackParameter = aString; + if (!_callbackParameter && objj_msgSend(objj_msgSend(_request, "URL"), "absoluteString").indexOf(CPJSONPCallbackReplacementString) < 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "JSONP source specified without callback parameter or CPJSONPCallbackReplacementString in URL."); + if (shouldStartImmediately) + objj_msgSend(self, "start"); + return self; +} +},["id","CPURLRequest","CPString","id","BOOL"]), new objj_method(sel_getUid("start"), function $CPJSONPConnection__start(self, _cmd) +{ with(self) +{ + try + { + CPJSONPConnectionCallbacks["callback"+objj_msgSend(self, "UID")] = function(data) + { + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("connection:didReceiveData:"))) + objj_msgSend(_delegate, "connection:didReceiveData:", self, data); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("connectionDidFinishLoading:"))) + objj_msgSend(_delegate, "connectionDidFinishLoading:", self); + objj_msgSend(self, "removeScriptTag"); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); + }; + var head = document.getElementsByTagName("head").item(0), + source = objj_msgSend(objj_msgSend(_request, "URL"), "absoluteString"); + if (_callbackParameter) + { + source += (source.indexOf('?') < 0) ? "?" : "&"; + source += _callbackParameter+"=CPJSONPConnectionCallbacks.callback"+objj_msgSend(self, "UID"); + } + else if (source.indexOf(CPJSONPCallbackReplacementString) >= 0) + { + source = objj_msgSend(source, "stringByReplacingOccurrencesOfString:withString:", CPJSONPCallbackReplacementString, "CPJSONPConnectionCallbacks.callback"+objj_msgSend(self, "UID")); + } + else + return; + _scriptTag = document.createElement("script"); + _scriptTag.setAttribute("type", "text/javascript"); + _scriptTag.setAttribute("charset", "utf-8"); + _scriptTag.setAttribute("src", source); + head.appendChild(_scriptTag); + } + catch (exception) + { + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("connection:didFailWithError:"))) + objj_msgSend(_delegate, "connection:didFailWithError:", self, exception); + objj_msgSend(self, "removeScriptTag"); + } +} +},["void"]), new objj_method(sel_getUid("removeScriptTag"), function $CPJSONPConnection__removeScriptTag(self, _cmd) +{ with(self) +{ + var head = document.getElementsByTagName("head").item(0); + if(_scriptTag && _scriptTag.parentNode == head) + head.removeChild(_scriptTag); + CPJSONPConnectionCallbacks["callback" + objj_msgSend(self, "UID")] = nil; + delete CPJSONPConnectionCallbacks["callback" + objj_msgSend(self, "UID")]; +} +},["void"]), new objj_method(sel_getUid("cancel"), function $CPJSONPConnection__cancel(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "removeScriptTag"); +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sendRequest:callback:delegate:"), function $CPJSONPConnection__sendRequest_callback_delegate_(self, _cmd, aRequest, callbackParameter, aDelegate) +{ with(self) +{ + return objj_msgSend(self, "connectionWithRequest:callback:delegate:", aRequest, callbackParameter, aDelegate); +} +},["CPJSONPConnection","CPURLRequest","CPString","id"]), new objj_method(sel_getUid("connectionWithRequest:callback:delegate:"), function $CPJSONPConnection__connectionWithRequest_callback_delegate_(self, _cmd, aRequest, callbackParameter, aDelegate) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "initWithRequest:callback:delegate:startImmediately:", aRequest, callbackParameter, aDelegate, YES); +} +},["CPJSONPConnection","CPURLRequest","CPString","id"])]); +} + +p;17;CPKeyedArchiver.jt;16894;@STATIC;1.0;i;9;CPArray.ji;9;CPCoder.ji;8;CPData.ji;14;CPDictionary.ji;10;CPNumber.ji;10;CPString.ji;9;CPValue.jt;16774;objj_executeFile("CPArray.j", YES); +objj_executeFile("CPCoder.j", YES); +objj_executeFile("CPData.j", YES); +objj_executeFile("CPDictionary.j", YES); +objj_executeFile("CPNumber.j", YES); +objj_executeFile("CPString.j", YES); +objj_executeFile("CPValue.j", YES); +var CPArchiverReplacementClassNames = nil; +var _CPKeyedArchiverDidEncodeObjectSelector = 1, + _CPKeyedArchiverWillEncodeObjectSelector = 2, + _CPKeyedArchiverWillReplaceObjectWithObjectSelector = 4, + _CPKeyedArchiverDidFinishSelector = 8, + _CPKeyedArchiverWillFinishSelector = 16; +var _CPKeyedArchiverNullString = "$null", + _CPKeyedArchiverNullReference = nil, + _CPKeyedArchiverUIDKey = "CP$UID", + _CPKeyedArchiverTopKey = "$top", + _CPKeyedArchiverObjectsKey = "$objects", + _CPKeyedArchiverArchiverKey = "$archiver", + _CPKeyedArchiverVersionKey = "$version", + _CPKeyedArchiverClassNameKey = "$classname", + _CPKeyedArchiverClassesKey = "$classes", + _CPKeyedArchiverClassKey = "$class"; +var _CPKeyedArchiverStringClass = Nil, + _CPKeyedArchiverNumberClass = Nil; +{var the_class = objj_allocateClassPair(CPValue, "_CPKeyedArchiverValue"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} +{var the_class = objj_allocateClassPair(CPCoder, "CPKeyedArchiver"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_delegate"), new objj_ivar("_delegateSelectors"), new objj_ivar("_data"), new objj_ivar("_objects"), new objj_ivar("_UIDs"), new objj_ivar("_conditionalUIDs"), new objj_ivar("_replacementObjects"), new objj_ivar("_replacementClassNames"), new objj_ivar("_plistObject"), new objj_ivar("_plistObjects"), new objj_ivar("_outputFormat")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initForWritingWithMutableData:"), function $CPKeyedArchiver__initForWritingWithMutableData_(self, _cmd, data) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPKeyedArchiver").super_class }, "init"); + if (self) + { + _data = data; + _objects = []; + _UIDs = objj_msgSend(CPDictionary, "dictionary"); + _conditionalUIDs = objj_msgSend(CPDictionary, "dictionary"); + _replacementObjects = objj_msgSend(CPDictionary, "dictionary"); + _data = data; + _plistObject = objj_msgSend(CPDictionary, "dictionary"); + _plistObjects = objj_msgSend(CPArray, "arrayWithObject:", _CPKeyedArchiverNullString); + } + return self; +} +},["id","CPMutableData"]), new objj_method(sel_getUid("finishEncoding"), function $CPKeyedArchiver__finishEncoding(self, _cmd) +{ with(self) +{ + if (_delegate && _delegateSelectors & _CPKeyedArchiverWillFinishSelector) + objj_msgSend(_delegate, "archiverWillFinish:", self); + var i = 0, + topObject = _plistObject, + classes = []; + for (; i < _objects.length; ++i) + { + var object = _objects[i], + theClass = objj_msgSend(object, "classForKeyedArchiver"); + _plistObject = _plistObjects[objj_msgSend(_UIDs, "objectForKey:", objj_msgSend(object, "UID"))]; + objj_msgSend(object, "encodeWithCoder:", self); + if (_delegate && _delegateSelectors & _CPKeyedArchiverDidEncodeObjectSelector) + objj_msgSend(_delegate, "archiver:didEncodeObject:", self, object); + } + _plistObject = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(_plistObject, "setObject:forKey:", topObject, _CPKeyedArchiverTopKey); + objj_msgSend(_plistObject, "setObject:forKey:", _plistObjects, _CPKeyedArchiverObjectsKey); + objj_msgSend(_plistObject, "setObject:forKey:", objj_msgSend(self, "className"), _CPKeyedArchiverArchiverKey); + objj_msgSend(_plistObject, "setObject:forKey:", "100000", _CPKeyedArchiverVersionKey); + objj_msgSend(_data, "setPlistObject:", _plistObject); + if (_delegate && _delegateSelectors & _CPKeyedArchiverDidFinishSelector) + objj_msgSend(_delegate, "archiverDidFinish:", self); +} +},["void"]), new objj_method(sel_getUid("outputFormat"), function $CPKeyedArchiver__outputFormat(self, _cmd) +{ with(self) +{ + return _outputFormat; +} +},["CPPropertyListFormat"]), new objj_method(sel_getUid("setOutputFormat:"), function $CPKeyedArchiver__setOutputFormat_(self, _cmd, aPropertyListFormat) +{ with(self) +{ + _outputFormat = aPropertyListFormat; +} +},["void","CPPropertyListFormat"]), new objj_method(sel_getUid("encodeBool:forKey:"), function $CPKeyedArchiver__encodeBool_forKey_(self, _cmd, aBOOL, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, aBOOL, NO), aKey); +} +},["void","BOOL","CPString"]), new objj_method(sel_getUid("encodeDouble:forKey:"), function $CPKeyedArchiver__encodeDouble_forKey_(self, _cmd, aDouble, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, aDouble, NO), aKey); +} +},["void","double","CPString"]), new objj_method(sel_getUid("encodeFloat:forKey:"), function $CPKeyedArchiver__encodeFloat_forKey_(self, _cmd, aFloat, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, aFloat, NO), aKey); +} +},["void","float","CPString"]), new objj_method(sel_getUid("encodeInt:forKey:"), function $CPKeyedArchiver__encodeInt_forKey_(self, _cmd, anInt, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, anInt, NO), aKey); +} +},["void","float","CPString"]), new objj_method(sel_getUid("setDelegate:"), function $CPKeyedArchiver__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("archiver:didEncodeObject:"))) + _delegateSelectors |= _CPKeyedArchiverDidEncodeObjectSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("archiver:willEncodeObject:"))) + _delegateSelectors |= _CPKeyedArchiverWillEncodeObjectSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("archiver:willReplaceObject:withObject:"))) + _delegateSelectors |= _CPKeyedArchiverWillReplaceObjectWithObjectSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("archiver:didFinishEncoding:"))) + _delegateSelectors |= _CPKeyedArchiverDidFinishEncodingSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("archiver:willFinishEncoding:"))) + _delegateSelectors |= _CPKeyedArchiverWillFinishEncodingSelector; +} +},["void","id"]), new objj_method(sel_getUid("delegate"), function $CPKeyedArchiver__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("encodePoint:forKey:"), function $CPKeyedArchiver__encodePoint_forKey_(self, _cmd, aPoint, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, CPStringFromPoint(aPoint), NO), aKey); +} +},["void","CGPoint","CPString"]), new objj_method(sel_getUid("encodeRect:forKey:"), function $CPKeyedArchiver__encodeRect_forKey_(self, _cmd, aRect, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, CPStringFromRect(aRect), NO), aKey); +} +},["void","CGRect","CPString"]), new objj_method(sel_getUid("encodeSize:forKey:"), function $CPKeyedArchiver__encodeSize_forKey_(self, _cmd, aSize, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, CPStringFromSize(aSize), NO), aKey); +} +},["void","CGSize","CPString"]), new objj_method(sel_getUid("encodeConditionalObject:forKey:"), function $CPKeyedArchiver__encodeConditionalObject_forKey_(self, _cmd, anObject, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, anObject, YES), aKey); +} +},["void","id","CPString"]), new objj_method(sel_getUid("encodeNumber:forKey:"), function $CPKeyedArchiver__encodeNumber_forKey_(self, _cmd, aNumber, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, aNumber, NO), aKey); +} +},["void","CPNumber","CPString"]), new objj_method(sel_getUid("encodeObject:forKey:"), function $CPKeyedArchiver__encodeObject_forKey_(self, _cmd, anObject, aKey) +{ with(self) +{ + objj_msgSend(_plistObject, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, anObject, NO), aKey); +} +},["void","id","CPString"]), new objj_method(sel_getUid("_encodeArrayOfObjects:forKey:"), function $CPKeyedArchiver___encodeArrayOfObjects_forKey_(self, _cmd, objects, aKey) +{ with(self) +{ + var i = 0, + count = objects.length, + references = objj_msgSend(CPArray, "arrayWithCapacity:", count); + for (; i < count; ++i) + objj_msgSend(references, "addObject:", _CPKeyedArchiverEncodeObject(self, objects[i], NO)); + objj_msgSend(_plistObject, "setObject:forKey:", references, aKey); +} +},["void","CPArray","CPString"]), new objj_method(sel_getUid("_encodeDictionaryOfObjects:forKey:"), function $CPKeyedArchiver___encodeDictionaryOfObjects_forKey_(self, _cmd, aDictionary, aKey) +{ with(self) +{ + var key, + keys = objj_msgSend(aDictionary, "keyEnumerator"), + references = objj_msgSend(CPDictionary, "dictionary"); + while (key = objj_msgSend(keys, "nextObject")) + objj_msgSend(references, "setObject:forKey:", _CPKeyedArchiverEncodeObject(self, objj_msgSend(aDictionary, "objectForKey:", key), NO), key); + objj_msgSend(_plistObject, "setObject:forKey:", references, aKey); +} +},["void","CPDictionary","CPString"]), new objj_method(sel_getUid("setClassName:forClass:"), function $CPKeyedArchiver__setClassName_forClass_(self, _cmd, aClassName, aClass) +{ with(self) +{ + if (!_replacementClassNames) + _replacementClassNames = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(_replacementClassNames, "setObject:forKey:", aClassName, CPStringFromClass(aClass)); +} +},["void","CPString","Class"]), new objj_method(sel_getUid("classNameForClass:"), function $CPKeyedArchiver__classNameForClass_(self, _cmd, aClass) +{ with(self) +{ + if (!_replacementClassNames) + return aClass.name; + var className = objj_msgSend(_replacementClassNames, "objectForKey:", CPStringFromClass(aClassName)); + return className ? className : aClass.name; +} +},["CPString","Class"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPKeyedArchiver__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPKeyedArchiver, "class")) + return; + _CPKeyedArchiverStringClass = objj_msgSend(CPString, "class"); + _CPKeyedArchiverNumberClass = objj_msgSend(CPNumber, "class"); + _CPKeyedArchiverNullReference = objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", 0, _CPKeyedArchiverUIDKey); +} +},["void"]), new objj_method(sel_getUid("allowsKeyedCoding"), function $CPKeyedArchiver__allowsKeyedCoding(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("archivedDataWithRootObject:"), function $CPKeyedArchiver__archivedDataWithRootObject_(self, _cmd, anObject) +{ with(self) +{ + var data = objj_msgSend(CPData, "dataWithPlistObject:", nil), + archiver = objj_msgSend(objj_msgSend(self, "alloc"), "initForWritingWithMutableData:", data); + objj_msgSend(archiver, "encodeObject:forKey:", anObject, "root"); + objj_msgSend(archiver, "finishEncoding"); + return data; +} +},["CPData","id"]), new objj_method(sel_getUid("setClassName:forClass:"), function $CPKeyedArchiver__setClassName_forClass_(self, _cmd, aClassName, aClass) +{ with(self) +{ + if (!CPArchiverReplacementClassNames) + CPArchiverReplacementClassNames = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(CPArchiverReplacementClassNames, "setObject:forKey:", aClassName, CPStringFromClass(aClass)); +} +},["void","CPString","Class"]), new objj_method(sel_getUid("classNameForClass:"), function $CPKeyedArchiver__classNameForClass_(self, _cmd, aClass) +{ with(self) +{ + if (!CPArchiverReplacementClassNames) + return aClass.name; + var className = objj_msgSend(CPArchiverReplacementClassNames, "objectForKey:", CPStringFromClass(aClassName)); + return className ? className : aClass.name; +} +},["CPString","Class"])]); +} +var _CPKeyedArchiverEncodeObject = function(self, anObject, isConditional) +{ + if (anObject !== nil && !anObject.isa) + anObject = objj_msgSend(_CPKeyedArchiverValue, "valueWithJSObject:", anObject); + var GUID = objj_msgSend(anObject, "UID"), + object = objj_msgSend(self._replacementObjects, "objectForKey:", GUID); + if (object === nil) + { + object = objj_msgSend(anObject, "replacementObjectForKeyedArchiver:", self); + if (self._delegate) + { + if (object !== anObject && self._delegateSelectors & _CPKeyedArchiverWillReplaceObjectWithObjectSelector) + objj_msgSend(self._delegate, "archiver:willReplaceObject:withObject:", self, anObject, object); + if (self._delegateSelectors & _CPKeyedArchiverWillEncodeObjectSelector) + { + anObject = objj_msgSend(self._delegate, "archiver:willEncodeObject:", self, object); + if (anObject !== object && self._delegateSelectors & _CPKeyedArchiverWillReplaceObjectWithObjectSelector) + objj_msgSend(self._delegate, "archiver:willReplaceObject:withObject:", self, object, anObject); + object = anObject; + } + } + objj_msgSend(self._replacementObjects, "setObject:forKey:", object, GUID); + } + if (object === nil) + return _CPKeyedArchiverNullReference; + var UID = objj_msgSend(self._UIDs, "objectForKey:", GUID = objj_msgSend(object, "UID")); + if (UID === nil) + { + if (isConditional) + { + if ((UID = objj_msgSend(self._conditionalUIDs, "objectForKey:", GUID)) === nil) + { + objj_msgSend(self._conditionalUIDs, "setObject:forKey:", UID = objj_msgSend(self._plistObjects, "count"), GUID); + objj_msgSend(self._plistObjects, "addObject:", _CPKeyedArchiverNullString); + } + } + else + { + var theClass = objj_msgSend(object, "classForKeyedArchiver"), + plistObject = nil; + if ((theClass === _CPKeyedArchiverStringClass) || (theClass === _CPKeyedArchiverNumberClass)) + plistObject = object; + else + { + plistObject = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(self._objects, "addObject:", object); + var className = objj_msgSend(self, "classNameForClass:", theClass); + if (!className) + className = objj_msgSend(objj_msgSend(self, "class"), "classNameForClass:", theClass); + if (!className) + className = theClass.name; + else + theClass = CPClassFromString(className); + var classUID = objj_msgSend(self._UIDs, "objectForKey:", className); + if (!classUID) + { + var plistClass = objj_msgSend(CPDictionary, "dictionary"), + hierarchy = []; + objj_msgSend(plistClass, "setObject:forKey:", className, _CPKeyedArchiverClassNameKey); + do + { + objj_msgSend(hierarchy, "addObject:", CPStringFromClass(theClass)); + } while (theClass = objj_msgSend(theClass, "superclass")); + objj_msgSend(plistClass, "setObject:forKey:", hierarchy, _CPKeyedArchiverClassesKey); + classUID = objj_msgSend(self._plistObjects, "count"); + objj_msgSend(self._plistObjects, "addObject:", plistClass); + objj_msgSend(self._UIDs, "setObject:forKey:", classUID, className); + } + objj_msgSend(plistObject, "setObject:forKey:", objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", classUID, _CPKeyedArchiverUIDKey), _CPKeyedArchiverClassKey); + } + UID = objj_msgSend(self._conditionalUIDs, "objectForKey:", GUID); + if (UID !== nil) + { + objj_msgSend(self._UIDs, "setObject:forKey:", UID, GUID); + objj_msgSend(self._plistObjects, "replaceObjectAtIndex:withObject:", UID, plistObject); + } + else + { + objj_msgSend(self._UIDs, "setObject:forKey:", UID = objj_msgSend(self._plistObjects, "count"), GUID); + objj_msgSend(self._plistObjects, "addObject:", plistObject); + } + } + } + return objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", UID, _CPKeyedArchiverUIDKey); +} + +p;19;CPKeyedUnarchiver.jt;14373;@STATIC;1.0;i;9;CPCoder.ji;8;CPNull.jt;14328;objj_executeFile("CPCoder.j", YES); +objj_executeFile("CPNull.j", YES); +CPInvalidUnarchiveOperationException = "CPInvalidUnarchiveOperationException"; +var _CPKeyedUnarchiverCannotDecodeObjectOfClassNameOriginalClassesSelector = 1 << 0, + _CPKeyedUnarchiverDidDecodeObjectSelector = 1 << 1, + _CPKeyedUnarchiverWillReplaceObjectWithObjectSelector = 1 << 2, + _CPKeyedUnarchiverWillFinishSelector = 1 << 3, + _CPKeyedUnarchiverDidFinishSelector = 1 << 4, + CPKeyedUnarchiverDelegate_unarchiver_cannotDecodeObjectOfClassName_originalClasses_ = 1 << 5; +var _CPKeyedArchiverNullString = "$null" + _CPKeyedArchiverUIDKey = "CP$UID", + _CPKeyedArchiverTopKey = "$top", + _CPKeyedArchiverObjectsKey = "$objects", + _CPKeyedArchiverArchiverKey = "$archiver", + _CPKeyedArchiverVersionKey = "$version", + _CPKeyedArchiverClassNameKey = "$classname", + _CPKeyedArchiverClassesKey = "$classes", + _CPKeyedArchiverClassKey = "$class"; +var CPArrayClass = Nil, + CPMutableArrayClass = Nil, + CPStringClass = Nil, + CPDictionaryClass = Nil, + CPMutableDictionaryClass = Nil, + CPNumberClass = Nil, + CPDataClass = Nil, + _CPKeyedArchiverValueClass = Nil; +{var the_class = objj_allocateClassPair(CPCoder, "CPKeyedUnarchiver"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_delegate"), new objj_ivar("_delegateSelectors"), new objj_ivar("_data"), new objj_ivar("_replacementClasses"), new objj_ivar("_objects"), new objj_ivar("_archive"), new objj_ivar("_plistObject"), new objj_ivar("_plistObjects")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initForReadingWithData:"), function $CPKeyedUnarchiver__initForReadingWithData_(self, _cmd, data) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPKeyedUnarchiver").super_class }, "init"); + if (self) + { + _archive = objj_msgSend(data, "plistObject"); + _objects = [objj_msgSend(CPNull, "null")]; + _plistObject = objj_msgSend(_archive, "objectForKey:", _CPKeyedArchiverTopKey); + _plistObjects = objj_msgSend(_archive, "objectForKey:", _CPKeyedArchiverObjectsKey); + _replacementClasses = new CFMutableDictionary(); + } + return self; +} +},["id","CPData"]), new objj_method(sel_getUid("containsValueForKey:"), function $CPKeyedUnarchiver__containsValueForKey_(self, _cmd, aKey) +{ with(self) +{ + return _plistObject.valueForKey(aKey) != nil; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("_decodeDictionaryOfObjectsForKey:"), function $CPKeyedUnarchiver___decodeDictionaryOfObjectsForKey_(self, _cmd, aKey) +{ with(self) +{ + var object = _plistObject.valueForKey(aKey), + objectClass = (object != nil) && object.isa; + if (objectClass === CPDictionaryClass || objectClass === CPMutableDictionaryClass) + { + var keys = object.keys(), + index = 0, + count = keys.length, + dictionary = new CFMutableDictionary(); + for (; index < count; ++index) + { + var key = keys[index]; + dictionary.setValueForKey(key, _CPKeyedUnarchiverDecodeObjectAtIndex(self, object.valueForKey(key).valueForKey(_CPKeyedArchiverUIDKey))); + } + return dictionary; + } + return nil; +} +},["CPDictionary","CPString"]), new objj_method(sel_getUid("decodeBoolForKey:"), function $CPKeyedUnarchiver__decodeBoolForKey_(self, _cmd, aKey) +{ with(self) +{ + return !!objj_msgSend(self, "decodeObjectForKey:", aKey); +} +},["BOOL","CPString"]), new objj_method(sel_getUid("decodeFloatForKey:"), function $CPKeyedUnarchiver__decodeFloatForKey_(self, _cmd, aKey) +{ with(self) +{ + return objj_msgSend(self, "decodeObjectForKey:", aKey); +} +},["float","CPString"]), new objj_method(sel_getUid("decodeDoubleForKey:"), function $CPKeyedUnarchiver__decodeDoubleForKey_(self, _cmd, aKey) +{ with(self) +{ + return objj_msgSend(self, "decodeObjectForKey:", aKey); +} +},["double","CPString"]), new objj_method(sel_getUid("decodeIntForKey:"), function $CPKeyedUnarchiver__decodeIntForKey_(self, _cmd, aKey) +{ with(self) +{ + return objj_msgSend(self, "decodeObjectForKey:", aKey); +} +},["int","CPString"]), new objj_method(sel_getUid("decodePointForKey:"), function $CPKeyedUnarchiver__decodePointForKey_(self, _cmd, aKey) +{ with(self) +{ + var object = objj_msgSend(self, "decodeObjectForKey:", aKey); + if (object) + return CPPointFromString(object); + else + return CPPointMake(0.0, 0.0); +} +},["CGPoint","CPString"]), new objj_method(sel_getUid("decodeRectForKey:"), function $CPKeyedUnarchiver__decodeRectForKey_(self, _cmd, aKey) +{ with(self) +{ + var object = objj_msgSend(self, "decodeObjectForKey:", aKey); + if (object) + return CPRectFromString(object); + else + return CPRectMakeZero(); +} +},["CGRect","CPString"]), new objj_method(sel_getUid("decodeSizeForKey:"), function $CPKeyedUnarchiver__decodeSizeForKey_(self, _cmd, aKey) +{ with(self) +{ + var object = objj_msgSend(self, "decodeObjectForKey:", aKey); + if (object) + return CPSizeFromString(object); + else + return CPSizeMake(0.0, 0.0); +} +},["CGSize","CPString"]), new objj_method(sel_getUid("decodeObjectForKey:"), function $CPKeyedUnarchiver__decodeObjectForKey_(self, _cmd, aKey) +{ with(self) +{ + var object = _plistObject.valueForKey(aKey), + objectClass = (object != nil) && object.isa; + if (objectClass === CPDictionaryClass || objectClass === CPMutableDictionaryClass) + return _CPKeyedUnarchiverDecodeObjectAtIndex(self, object.valueForKey(_CPKeyedArchiverUIDKey)); + else if (objectClass === CPNumberClass || objectClass === CPDataClass || objectClass === CPStringClass) + return object; + else if (objectClass === CPArrayClass || objectClass === CPMutableArrayClass) + { + var index = 0, + count = object.length, + array = []; + for (; index < count; ++index) + array[index] = _CPKeyedUnarchiverDecodeObjectAtIndex(self, object[index].valueForKey(_CPKeyedArchiverUIDKey)); + return array; + } + return nil; +} +},["id","CPString"]), new objj_method(sel_getUid("decodeBytesForKey:"), function $CPKeyedUnarchiver__decodeBytesForKey_(self, _cmd, aKey) +{ with(self) +{ + var data = objj_msgSend(self, "decodeObjectForKey:", aKey); + if (!data) + return nil; + var objectClass = data.isa; + if (objectClass === CPDataClass) + return data.bytes; + return nil; +} +},["id","CPString"]), new objj_method(sel_getUid("finishDecoding"), function $CPKeyedUnarchiver__finishDecoding(self, _cmd) +{ with(self) +{ + if (_delegateSelectors & _CPKeyedUnarchiverWillFinishSelector) + objj_msgSend(_delegate, "unarchiverWillFinish:", self); + if (_delegateSelectors & _CPKeyedUnarchiverDidFinishSelector) + objj_msgSend(_delegate, "unarchiverDidFinish:", self); +} +},["void"]), new objj_method(sel_getUid("delegate"), function $CPKeyedUnarchiver__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("setDelegate:"), function $CPKeyedUnarchiver__setDelegate_(self, _cmd, aDelegate) +{ with(self) +{ + _delegate = aDelegate; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("unarchiver:cannotDecodeObjectOfClassName:originalClasses:"))) + _delegateSelectors |= _CPKeyedUnarchiverCannotDecodeObjectOfClassNameOriginalClassesSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("unarchiver:didDecodeObject:"))) + _delegateSelectors |= _CPKeyedUnarchiverDidDecodeObjectSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("unarchiver:willReplaceObject:withObject:"))) + _delegateSelectors |= _CPKeyedUnarchiverWillReplaceObjectWithObjectSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("unarchiverWillFinish:"))) + _delegateSelectors |= _CPKeyedUnarchiverWilFinishSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("unarchiverDidFinish:"))) + _delegateSelectors |= _CPKeyedUnarchiverDidFinishSelector; + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("unarchiver:cannotDecodeObjectOfClassName:originalClasses:"))) + _delegateSelectors |= CPKeyedUnarchiverDelegate_unarchiver_cannotDecodeObjectOfClassName_originalClasses_; +} +},["void","id"]), new objj_method(sel_getUid("setClass:forClassName:"), function $CPKeyedUnarchiver__setClass_forClassName_(self, _cmd, aClass, aClassName) +{ with(self) +{ + _replacementClasses.setValueForKey(aClassName, aClass); +} +},["void","Class","CPString"]), new objj_method(sel_getUid("classForClassName:"), function $CPKeyedUnarchiver__classForClassName_(self, _cmd, aClassName) +{ with(self) +{ + return _replacementClasses.valueForKey(aClassName); +} +},["Class","CPString"]), new objj_method(sel_getUid("allowsKeyedCoding"), function $CPKeyedUnarchiver__allowsKeyedCoding(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPKeyedUnarchiver__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(CPKeyedUnarchiver, "class")) + return; + CPArrayClass = objj_msgSend(CPArray, "class"); + CPMutableArrayClass = objj_msgSend(CPMutableArray, "class"); + CPStringClass = objj_msgSend(CPString, "class"); + CPDictionaryClass = objj_msgSend(CPDictionary, "class"); + CPMutableDictionaryClass = objj_msgSend(CPMutableDictionary, "class"); + CPNumberClass = objj_msgSend(CPNumber, "class"); + CPDataClass = objj_msgSend(CPData, "class"); + _CPKeyedArchiverValueClass = objj_msgSend(_CPKeyedArchiverValue, "class"); +} +},["void"]), new objj_method(sel_getUid("unarchiveObjectWithData:"), function $CPKeyedUnarchiver__unarchiveObjectWithData_(self, _cmd, aData) +{ with(self) +{ + if (!aData) + { + CPLog.error("Null data passed to -[CPKeyedUnarchiver unarchiveObjectWithData:]."); + return nil; + } + var unarchiver = objj_msgSend(objj_msgSend(self, "alloc"), "initForReadingWithData:", aData), + object = objj_msgSend(unarchiver, "decodeObjectForKey:", "root"); + objj_msgSend(unarchiver, "finishDecoding"); + return object; +} +},["id","CPData"]), new objj_method(sel_getUid("unarchiveObjectWithFile:"), function $CPKeyedUnarchiver__unarchiveObjectWithFile_(self, _cmd, aFilePath) +{ with(self) +{ +} +},["id","CPString"]), new objj_method(sel_getUid("unarchiveObjectWithFile:asynchronously:"), function $CPKeyedUnarchiver__unarchiveObjectWithFile_asynchronously_(self, _cmd, aFilePath, aFlag) +{ with(self) +{ +} +},["id","CPString","BOOL"])]); +} +var _CPKeyedUnarchiverDecodeObjectAtIndex = function(self, anIndex) +{ + var object = self._objects[anIndex]; + if (object) + if (object === self._objects[0]) + return nil; + else + return object; + var object, + plistObject = self._plistObjects[anIndex], + plistObjectClass = plistObject.isa; + if (plistObjectClass === CPDictionaryClass || plistObjectClass === CPMutableDictionaryClass) + { + var plistClass = self._plistObjects[plistObject.valueForKey(_CPKeyedArchiverClassKey).valueForKey(_CPKeyedArchiverUIDKey)], + className = plistClass.valueForKey(_CPKeyedArchiverClassNameKey), + classes = plistClass.valueForKey(_CPKeyedArchiverClassesKey), + theClass = objj_msgSend(self, "classForClassName:", className); + if (!theClass) + theClass = CPClassFromString(className); + if (!theClass && (self._delegateSelectors & CPKeyedUnarchiverDelegate_unarchiver_cannotDecodeObjectOfClassName_originalClasses_)) + theClass = objj_msgSend(_delegate, "unarchiver:cannotDecodeObjectOfClassName:originalClasses:", self, className, classes); + if (!theClass) + objj_msgSend(CPException, "raise:reason:", CPInvalidUnarchiveOperationException, "-[CPKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (" + className + ")"); + var savedPlistObject = self._plistObject; + self._plistObject = plistObject; + object = objj_msgSend(theClass, "allocWithCoder:", self); + self._objects[anIndex] = object; + var processedObject = objj_msgSend(object, "initWithCoder:", self); + self._plistObject = savedPlistObject; + if (processedObject !== object) + { + if (self._delegateSelectors & _CPKeyedUnarchiverWillReplaceObjectWithObjectSelector) + objj_msgSend(self._delegate, "unarchiver:willReplaceObject:withObject:", self, object, processedObject); + object = processedObject; + self._objects[anIndex] = processedObject; + } + processedObject = objj_msgSend(object, "awakeAfterUsingCoder:", self); + if (processedObject !== object) + { + if (self._delegateSelectors & _CPKeyedUnarchiverWillReplaceObjectWithObjectSelector) + objj_msgSend(self._delegate, "unarchiver:willReplaceObject:withObject:", self, object, processedObject); + object = processedObject; + self._objects[anIndex] = processedObject; + } + if (self._delegate) + { + if (self._delegateSelectors & _CPKeyedUnarchiverDidDecodeObjectSelector) + processedObject = objj_msgSend(self._delegate, "unarchiver:didDecodeObject:", self, object); + if (processedObject != object) + { + if (self._delegateSelectors & _CPKeyedUnarchiverWillReplaceObjectWithObjectSelector) + objj_msgSend(self._delegate, "unarchiver:willReplaceObject:withObject:", self, object, processedObject); + object = processedObject; + self._objects[anIndex] = processedObject; + } + } + } + else + { + self._objects[anIndex] = object = plistObject; + if (objj_msgSend(object, "class") === CPStringClass) + { + if (object === _CPKeyedArchiverNullString) + { + self._objects[anIndex] = self._objects[0]; + return nil; + } + else + self._objects[anIndex] = object = plistObject; + } + } + if ((object != nil) && (object.isa === _CPKeyedArchiverValueClass)) + object = objj_msgSend(object, "JSObject"); + return object; +} + +p;18;CPKeyValueCoding.jt;10876;@STATIC;1.0;i;9;CPArray.ji;14;CPDictionary.ji;8;CPNull.ji;10;CPObject.ji;21;CPKeyValueObserving.ji;13;CPArray+KVO.jt;10753;objj_executeFile("CPArray.j", YES); +objj_executeFile("CPDictionary.j", YES); +objj_executeFile("CPNull.j", YES); +objj_executeFile("CPObject.j", YES); +var CPObjectAccessorsForClass = nil, + CPObjectModifiersForClass = nil; +CPUndefinedKeyException = "CPUndefinedKeyException"; +CPTargetObjectUserInfoKey = "CPTargetObjectUserInfoKey"; +CPUnknownUserInfoKey = "CPUnknownUserInfoKey"; +var CPObjectAccessorsForClassKey = "$CPObjectAccessorsForClassKey", + CPObjectModifiersForClassKey = "$CPObjectModifiersForClassKey"; +{ +var the_class = objj_getClass("CPObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_ivarForKey:"), function $CPObject___ivarForKey_(self, _cmd, aKey) +{ with(self) +{ + var ivar = '_' + aKey; + if (typeof self[ivar] != "undefined") + return ivar; + var isKey = "is" + aKey.charAt(0).toUpperCase() + aKey.substr(1); + ivar = '_' + isKey; + if (typeof self[ivar] != "undefined") + return ivar; + ivar = aKey; + if (typeof self[ivar] != "undefined") + return ivar; + ivar = isKey; + if (typeof self[ivar] != "undefined") + return ivar; + return nil; +} +},["CPString","CPString"]), new objj_method(sel_getUid("valueForKey:"), function $CPObject__valueForKey_(self, _cmd, aKey) +{ with(self) +{ + var theClass = objj_msgSend(self, "class"), + selector = _accessorForKey(theClass, aKey); + if (selector) + return objj_msgSend(self, selector); + if (objj_msgSend(theClass, "accessInstanceVariablesDirectly")) + { + var ivar = objj_msgSend(self, "_ivarForKey:", aKey); + if (ivar) + return self[ivar]; + } + return objj_msgSend(self, "valueForUndefinedKey:", aKey); +} +},["id","CPString"]), new objj_method(sel_getUid("valueForKeyPath:"), function $CPObject__valueForKeyPath_(self, _cmd, aKeyPath) +{ with(self) +{ + var firstDotIndex = aKeyPath.indexOf("."); + if (firstDotIndex === -1) + return objj_msgSend(self, "valueForKey:", aKeyPath); + var firstKeyComponent = aKeyPath.substring(0, firstDotIndex), + remainingKeyPath = aKeyPath.substring(firstDotIndex + 1), + value = objj_msgSend(self, "valueForKey:", firstKeyComponent); + return objj_msgSend(value, "valueForKeyPath:", remainingKeyPath); +} +},["id","CPString"]), new objj_method(sel_getUid("dictionaryWithValuesForKeys:"), function $CPObject__dictionaryWithValuesForKeys_(self, _cmd, keys) +{ with(self) +{ + var index = 0, + count = keys.length, + dictionary = objj_msgSend(CPDictionary, "dictionary"); + for (; index < count; ++index) + { + var key = keys[index], + value = objj_msgSend(self, "valueForKey:", key); + if (value === nil) + objj_msgSend(dictionary, "setObject:forKey:", objj_msgSend(CPNull, "null"), key); + else + objj_msgSend(dictionary, "setObject:forKey:", value, key); + } + return dictionary; +} +},["CPDictionary","CPArray"]), new objj_method(sel_getUid("valueForUndefinedKey:"), function $CPObject__valueForUndefinedKey_(self, _cmd, aKey) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPException, "exceptionWithName:reason:userInfo:", CPUndefinedKeyException, objj_msgSend(self, "description") + " is not key value coding-compliant for the key " + aKey, objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [self, aKey], [CPTargetObjectUserInfoKey, CPUnknownUserInfoKey])), "raise"); +} +},["id","CPString"]), new objj_method(sel_getUid("setValue:forKeyPath:"), function $CPObject__setValue_forKeyPath_(self, _cmd, aValue, aKeyPath) +{ with(self) +{ + if (!aKeyPath) aKeyPath = "self"; + var i = 0, + keys = aKeyPath.split("."), + count = keys.length - 1, + owner = self; + for (; i < count; ++i) + owner = objj_msgSend(owner, "valueForKey:", keys[i]); + objj_msgSend(owner, "setValue:forKey:", aValue, keys[i]); +} +},["void","id","CPString"]), new objj_method(sel_getUid("setValue:forKey:"), function $CPObject__setValue_forKey_(self, _cmd, aValue, aKey) +{ with(self) +{ + var theClass = objj_msgSend(self, "class"), + selector = objj_msgSend(theClass, "_modifierForKey:", aKey); + if (selector) + return objj_msgSend(self, selector, aValue); + if (objj_msgSend(theClass, "accessInstanceVariablesDirectly")) + { + var ivar = objj_msgSend(self, "_ivarForKey:", aKey); + if (ivar) + { + objj_msgSend(self, "willChangeValueForKey:", aKey); + self[ivar] = aValue; + objj_msgSend(self, "didChangeValueForKey:", aKey); + return; + } + } + objj_msgSend(self, "setValue:forUndefinedKey:", aValue, aKey); +} +},["void","id","CPString"]), new objj_method(sel_getUid("setValue:forUndefinedKey:"), function $CPObject__setValue_forUndefinedKey_(self, _cmd, aValue, aKey) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPException, "exceptionWithName:reason:userInfo:", CPUndefinedKeyException, objj_msgSend(self, "description") + " is not key value coding-compliant for the key " + aKey, objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [self, aKey], [CPTargetObjectUserInfoKey, CPUnknownUserInfoKey])), "raise"); +} +},["void","id","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("accessInstanceVariablesDirectly"), function $CPObject__accessInstanceVariablesDirectly(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("_accessorForKey:"), function $CPObject___accessorForKey_(self, _cmd, aKey) +{ with(self) +{ + var selector = nil, + accessors = isa[CPObjectAccessorsForClassKey]; + if (accessors) + { + selector = accessors[aKey]; + if (selector) + return selector === objj_msgSend(CPNull, "null") ? nil : selector; + } + else + accessors = isa[CPObjectAccessorsForClassKey] = {}; + var capitalizedKey = aKey.charAt(0).toUpperCase() + aKey.substr(1); + if (objj_msgSend(self, "instancesRespondToSelector:", selector = CPSelectorFromString("get" + capitalizedKey)) || + objj_msgSend(self, "instancesRespondToSelector:", selector = CPSelectorFromString(aKey)) || + objj_msgSend(self, "instancesRespondToSelector:", selector = CPSelectorFromString("is" + capitalizedKey)) || + objj_msgSend(self, "instancesRespondToSelector:", selector = CPSelectorFromString("_get" + capitalizedKey)) || + objj_msgSend(self, "instancesRespondToSelector:", selector = CPSelectorFromString("_" + aKey)) || + objj_msgSend(self, "instancesRespondToSelector:", selector = CPSelectorFromString("_is" + capitalizedKey))) + { + accessors[aKey] = selector; + return selector; + } + accessors[aKey] = objj_msgSend(CPNull, "null"); + return nil; +} +},["SEL","CPString"]), new objj_method(sel_getUid("_modifierForKey:"), function $CPObject___modifierForKey_(self, _cmd, aKey) +{ with(self) +{ + if (!CPObjectModifiersForClass) + CPObjectModifiersForClass = objj_msgSend(CPDictionary, "dictionary"); + var UID = objj_msgSend(isa, "UID"), + selector = nil, + modifiers = objj_msgSend(CPObjectModifiersForClass, "objectForKey:", UID); + if (modifiers) + { + selector = objj_msgSend(modifiers, "objectForKey:", aKey); + if (selector) + return selector === objj_msgSend(CPNull, "null") ? nil : selector; + } + else + { + modifiers = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(CPObjectModifiersForClass, "setObject:forKey:", modifiers, UID); + } + if (selector) + return selector === objj_msgSend(CPNull, "null") ? nil : selector; + var capitalizedKey = aKey.charAt(0).toUpperCase() + aKey.substr(1) + ':'; + if (objj_msgSend(self, "instancesRespondToSelector:", selector = CPSelectorFromString("set" + capitalizedKey)) || + objj_msgSend(self, "instancesRespondToSelector:", selector = CPSelectorFromString("_set" + capitalizedKey))) + { + objj_msgSend(modifiers, "setObject:forKey:", selector, aKey); + return selector; + } + objj_msgSend(modifiers, "setObject:forKey:", objj_msgSend(CPNull, "null"), aKey); + return nil; +} +},["SEL","CPString"])]); +} +var Null = objj_msgSend(CPNull, "null"); +var _accessorForKey = function(theClass, aKey) +{ + var selector = nil, + accessors = theClass.isa[CPObjectAccessorsForClassKey]; + if (accessors) + { + selector = accessors[aKey]; + if (selector) + return selector === Null ? nil : selector; + } + else + accessors = theClass.isa[CPObjectAccessorsForClassKey] = {}; + var capitalizedKey = aKey.charAt(0).toUpperCase() + aKey.substr(1); + if (objj_msgSend(theClass, "instancesRespondToSelector:", selector = CPSelectorFromString("get" + capitalizedKey)) || + objj_msgSend(theClass, "instancesRespondToSelector:", selector = CPSelectorFromString(aKey)) || + objj_msgSend(theClass, "instancesRespondToSelector:", selector = CPSelectorFromString("is" + capitalizedKey)) || + objj_msgSend(theClass, "instancesRespondToSelector:", selector = CPSelectorFromString("_get" + capitalizedKey)) || + objj_msgSend(theClass, "instancesRespondToSelector:", selector = CPSelectorFromString("_" + aKey)) || + objj_msgSend(theClass, "instancesRespondToSelector:", selector = CPSelectorFromString("_is" + capitalizedKey))) + { + accessors[aKey] = selector; + return selector; + } + accessors[aKey] = Null; + return nil; +} +{ +var the_class = objj_getClass("CPDictionary") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDictionary\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("valueForKey:"), function $CPDictionary__valueForKey_(self, _cmd, aKey) +{ with(self) +{ + if (objj_msgSend(aKey, "hasPrefix:", "@")) + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPDictionary").super_class }, "valueForKey:", aKey.substr(1)); + return objj_msgSend(self, "objectForKey:", aKey); +} +},["id","CPString"]), new objj_method(sel_getUid("setValue:forKey:"), function $CPDictionary__setValue_forKey_(self, _cmd, aValue, aKey) +{ with(self) +{ + objj_msgSend(self, "setObject:forKey:", aValue, aKey); +} +},["void","id","CPString"])]); +} +{ +var the_class = objj_getClass("CPNull") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPNull\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("valueForKey:"), function $CPNull__valueForKey_(self, _cmd, aKey) +{ with(self) +{ + return self; +} +},["id","CPString"])]); +} +objj_executeFile("CPKeyValueObserving.j", YES); +objj_executeFile("CPArray+KVO.j", YES); + +p;21;CPKeyValueObserving.jt;28365;@STATIC;1.0;i;9;CPArray.ji;14;CPDictionary.ji;13;CPException.ji;8;CPNull.ji;10;CPObject.ji;7;CPSet.ji;13;CPArray+KVO.jt;28239;objj_executeFile("CPArray.j", YES); +objj_executeFile("CPDictionary.j", YES); +objj_executeFile("CPException.j", YES); +objj_executeFile("CPNull.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPSet.j", YES); +{ +var the_class = objj_getClass("CPObject") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("willChangeValueForKey:"), function $CPObject__willChangeValueForKey_(self, _cmd, aKey) +{ with(self) +{ +} +},["void","CPString"]), new objj_method(sel_getUid("didChangeValueForKey:"), function $CPObject__didChangeValueForKey_(self, _cmd, aKey) +{ with(self) +{ +} +},["void","CPString"]), new objj_method(sel_getUid("willChange:valuesAtIndexes:forKey:"), function $CPObject__willChange_valuesAtIndexes_forKey_(self, _cmd, change, indexes, key) +{ with(self) +{ +} +},["void","CPKeyValueChange","CPIndexSet","CPString"]), new objj_method(sel_getUid("didChange:valuesAtIndexes:forKey:"), function $CPObject__didChange_valuesAtIndexes_forKey_(self, _cmd, change, indexes, key) +{ with(self) +{ +} +},["void","CPKeyValueChange","CPIndexSet","CPString"]), new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"), function $CPObject__addObserver_forKeyPath_options_context_(self, _cmd, anObserver, aPath, options, aContext) +{ with(self) +{ + if (!anObserver || !aPath) + return; + objj_msgSend(objj_msgSend(_CPKVOProxy, "proxyForObject:", self), "_addObserver:forKeyPath:options:context:", anObserver, aPath, options, aContext); +} +},["void","id","CPString","unsigned","id"]), new objj_method(sel_getUid("removeObserver:forKeyPath:"), function $CPObject__removeObserver_forKeyPath_(self, _cmd, anObserver, aPath) +{ with(self) +{ + if (!anObserver || !aPath) + return; + objj_msgSend(self[KVOProxyKey], "_removeObserver:forKeyPath:", anObserver, aPath); +} +},["void","id","CPString"]), new objj_method(sel_getUid("applyChange:toKeyPath:"), function $CPObject__applyChange_toKeyPath_(self, _cmd, aChange, aKeyPath) +{ with(self) +{ + var changeKind = objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeKindKey); + if (changeKind === CPKeyValueChangeSetting) + { + var value = objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeNewKey); + objj_msgSend(self, "setValue:forKeyPath:", value === objj_msgSend(CPNull, "null") ? nil : value, aKeyPath); + } + else if (changeKind === CPKeyValueChangeInsertion) + objj_msgSend(objj_msgSend(self, "mutableArrayValueForKeyPath:", aKeyPath), "insertObjects:atIndexes:", objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeNewKey), objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeIndexesKey)); + else if (changeKind === CPKeyValueChangeRemoval) + objj_msgSend(objj_msgSend(self, "mutableArrayValueForKeyPath:", aKeyPath), "removeObjectsAtIndexes:", objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeIndexesKey)); + else if (changeKind === CPKeyValueChangeReplacement) + objj_msgSend(objj_msgSend(self, "mutableArrayValueForKeyPath:", aKeyPath), "replaceObjectAtIndexes:withObjects:", objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeIndexesKey), objj_msgSend(aChange, "objectForKey:", CPKeyValueChangeNewKey)); +} +},["void","CPDictionary","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("automaticallyNotifiesObserversForKey:"), function $CPObject__automaticallyNotifiesObserversForKey_(self, _cmd, aKey) +{ with(self) +{ + return YES; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("keyPathsForValuesAffectingValueForKey:"), function $CPObject__keyPathsForValuesAffectingValueForKey_(self, _cmd, aKey) +{ with(self) +{ + var capitalizedKey = aKey.charAt(0).toUpperCase() + aKey.substring(1); + selector = "keyPathsForValuesAffecting" + capitalizedKey; + if (objj_msgSend(objj_msgSend(self, "class"), "respondsToSelector:", selector)) + return objj_msgSend(objj_msgSend(self, "class"), selector); + return objj_msgSend(CPSet, "set"); +} +},["CPSet","CPString"])]); +} +{ +var the_class = objj_getClass("CPDictionary") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPDictionary\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("inverseChangeDictionary"), function $CPDictionary__inverseChangeDictionary(self, _cmd) +{ with(self) +{ + var inverseChangeDictionary = objj_msgSend(self, "mutableCopy"), + changeKind = objj_msgSend(self, "objectForKey:", CPKeyValueChangeKindKey); + if (changeKind === CPKeyValueChangeSetting || changeKind === CPKeyValueChangeReplacement) + { + objj_msgSend(inverseChangeDictionary, "setObject:forKey:", objj_msgSend(self, "objectForKey:", CPKeyValueChangeOldKey), CPKeyValueChangeNewKey); + objj_msgSend(inverseChangeDictionary, "setObject:forKey:", objj_msgSend(self, "objectForKey:", CPKeyValueChangeNewKey), CPKeyValueChangeOldKey); + } + else if (changeKind === CPKeyValueChangeInsertion) + { + objj_msgSend(inverseChangeDictionary, "setObject:forKey:", CPKeyValueChangeRemoval, CPKeyValueChangeKindKey); + objj_msgSend(inverseChangeDictionary, "setObject:forKey:", objj_msgSend(self, "objectForKey:", CPKeyValueChangeNewKey), CPKeyValueChangeOldKey); + objj_msgSend(inverseChangeDictionary, "removeObjectForKey:", CPKeyValueChangeNewKey); + } + else if (changeKind === CPKeyValueChangeRemoval) + { + objj_msgSend(inverseChangeDictionary, "setObject:forKey:", CPKeyValueChangeInsertion, CPKeyValueChangeKindKey); + objj_msgSend(inverseChangeDictionary, "setObject:forKey:", objj_msgSend(self, "objectForKey:", CPKeyValueChangeOldKey), CPKeyValueChangeNewKey); + objj_msgSend(inverseChangeDictionary, "removeObjectForKey:", CPKeyValueChangeOldKey); + } + return inverseChangeDictionary; +} +},["CPDictionary"])]); +} +CPKeyValueObservingOptionNew = 1 << 0; +CPKeyValueObservingOptionOld = 1 << 1; +CPKeyValueObservingOptionInitial = 1 << 2; +CPKeyValueObservingOptionPrior = 1 << 3; +CPKeyValueChangeKindKey = "CPKeyValueChangeKindKey"; +CPKeyValueChangeNewKey = "CPKeyValueChangeNewKey"; +CPKeyValueChangeOldKey = "CPKeyValueChangeOldKey"; +CPKeyValueChangeIndexesKey = "CPKeyValueChangeIndexesKey"; +CPKeyValueChangeNotificationIsPriorKey = "CPKeyValueChangeNotificationIsPriorKey"; +CPKeyValueChangeSetting = 1; +CPKeyValueChangeInsertion = 2; +CPKeyValueChangeRemoval = 3; +CPKeyValueChangeReplacement = 4; +var kvoNewAndOld = CPKeyValueObservingOptionNew|CPKeyValueObservingOptionOld, + DependentKeysKey = "$KVODEPENDENT", + KVOProxyKey = "$KVOPROXY"; +{var the_class = objj_allocateClassPair(CPObject, "_CPKVOProxy"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_targetObject"), new objj_ivar("_nativeClass"), new objj_ivar("_changesForKey"), new objj_ivar("_observersForKey"), new objj_ivar("_observersForKeyLength"), new objj_ivar("_replacedKeys")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithTarget:"), function $_CPKVOProxy__initWithTarget_(self, _cmd, aTarget) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPKVOProxy").super_class }, "init"); + _targetObject = aTarget; + _nativeClass = objj_msgSend(aTarget, "class"); + _observersForKey = {}; + _changesForKey = {}; + _observersForKeyLength = 0; + return self; +} +},["id","id"]), new objj_method(sel_getUid("_replaceClass"), function $_CPKVOProxy___replaceClass(self, _cmd) +{ with(self) +{ + var currentClass = _nativeClass, + kvoClassName = "$KVO_" + class_getName(_nativeClass), + existingKVOClass = objj_lookUpClass(kvoClassName); + if (existingKVOClass) + { + _targetObject.isa = existingKVOClass; + _replacedKeys = existingKVOClass._replacedKeys; + return; + } + var kvoClass = objj_allocateClassPair(currentClass, kvoClassName); + objj_registerClassPair(kvoClass); + _replacedKeys = objj_msgSend(CPSet, "set"); + kvoClass._replacedKeys = _replacedKeys; + var methodList = _CPKVOModelSubclass.method_list, + count = methodList.length, + i = 0; + for (; i < count; i++) + { + var method = methodList[i]; + class_addMethod(kvoClass, method_getName(method), method_getImplementation(method), ""); + } + if (objj_msgSend(_targetObject, "isKindOfClass:", objj_msgSend(CPDictionary, "class"))) + { + var methodList = _CPKVOModelDictionarySubclass.method_list, + count = methodList.length, + i = 0; + for (; i < count; i++) + { + var method = methodList[i]; + class_addMethod(kvoClass, method_getName(method), method_getImplementation(method), ""); + } + } + _targetObject.isa = kvoClass; +} +},["void"]), new objj_method(sel_getUid("_replaceSetterForKey:"), function $_CPKVOProxy___replaceSetterForKey_(self, _cmd, aKey) +{ with(self) +{ + if (objj_msgSend(_replacedKeys, "containsObject:", aKey) || !objj_msgSend(_nativeClass, "automaticallyNotifiesObserversForKey:", aKey)) + return; + var currentClass = _nativeClass, + capitalizedKey = aKey.charAt(0).toUpperCase() + aKey.substring(1), + found = false, + replacementMethods = [ + "set" + capitalizedKey + ":", _kvoMethodForMethod, + "_set" + capitalizedKey + ":", _kvoMethodForMethod, + "insertObject:in" + capitalizedKey + "AtIndex:", _kvoInsertMethodForMethod, + "replaceObjectIn" + capitalizedKey + "AtIndex:withObject:", _kvoReplaceMethodForMethod, + "removeObjectFrom" + capitalizedKey + "AtIndex:", _kvoRemoveMethodForMethod + ]; + var i = 0, + count = replacementMethods.length; + for (; i < count; i += 2) + { + var theSelector = sel_getName(replacementMethods[i]), + theReplacementMethod = replacementMethods[i + 1]; + if (objj_msgSend(_nativeClass, "instancesRespondToSelector:", theSelector)) + { + var theMethod = class_getInstanceMethod(_nativeClass, theSelector); + class_addMethod(_targetObject.isa, theSelector, theReplacementMethod(aKey, theMethod), ""); + objj_msgSend(_replacedKeys, "addObject:", aKey); + } + } + var affectingKeys = objj_msgSend(objj_msgSend(_nativeClass, "keyPathsForValuesAffectingValueForKey:", aKey), "allObjects"), + affectingKeysCount = affectingKeys ? affectingKeys.length : 0; + if (!affectingKeysCount) + return; + var dependentKeysForClass = _nativeClass[DependentKeysKey]; + if (!dependentKeysForClass) + { + dependentKeysForClass = {}; + _nativeClass[DependentKeysKey] = dependentKeysForClass; + } + while (affectingKeysCount--) + { + var affectingKey = affectingKeys[affectingKeysCount], + affectedKeys = dependentKeysForClass[affectingKey]; + if (!affectedKeys) + { + affectedKeys = objj_msgSend(CPSet, "new"); + dependentKeysForClass[affectingKey] = affectedKeys; + } + objj_msgSend(affectedKeys, "addObject:", aKey); + objj_msgSend(self, "_replaceSetterForKey:", affectingKey); + } +} +},["void","CPString"]), new objj_method(sel_getUid("_addObserver:forKeyPath:options:context:"), function $_CPKVOProxy___addObserver_forKeyPath_options_context_(self, _cmd, anObserver, aPath, options, aContext) +{ with(self) +{ + if (!anObserver) + return; + var forwarder = nil; + if (aPath.indexOf('.') != CPNotFound) + forwarder = objj_msgSend(objj_msgSend(_CPKVOForwardingObserver, "alloc"), "initWithKeyPath:object:observer:options:context:", aPath, _targetObject, anObserver, options, aContext); + else + objj_msgSend(self, "_replaceSetterForKey:", aPath); + var observers = _observersForKey[aPath]; + if (!observers) + { + observers = objj_msgSend(CPDictionary, "dictionary"); + _observersForKey[aPath] = observers; + _observersForKeyLength++; + } + objj_msgSend(observers, "setObject:forKey:", _CPKVOInfoMake(anObserver, options, aContext, forwarder), objj_msgSend(anObserver, "UID")); + if (options & CPKeyValueObservingOptionInitial) + { + var newValue = objj_msgSend(_targetObject, "valueForKeyPath:", aPath); + if (newValue === nil || newValue === undefined) + newValue = objj_msgSend(CPNull, "null"); + var changes = objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", newValue, CPKeyValueChangeNewKey); + objj_msgSend(anObserver, "observeValueForKeyPath:ofObject:change:context:", aPath, self, changes, aContext); + } +} +},["void","id","CPString","unsigned","id"]), new objj_method(sel_getUid("_removeObserver:forKeyPath:"), function $_CPKVOProxy___removeObserver_forKeyPath_(self, _cmd, anObserver, aPath) +{ with(self) +{ + var observers = _observersForKey[aPath]; + if (aPath.indexOf('.') != CPNotFound) + { + var forwarder = objj_msgSend(observers, "objectForKey:", objj_msgSend(anObserver, "UID")).forwarder; + objj_msgSend(forwarder, "finalize"); + } + objj_msgSend(observers, "removeObjectForKey:", objj_msgSend(anObserver, "UID")); + if (!objj_msgSend(observers, "count")) + { + _observersForKeyLength--; + delete _observersForKey[aPath]; + } + if (!_observersForKeyLength) + { + _targetObject.isa = _nativeClass; + delete _targetObject[KVOProxyKey]; + } +} +},["void","id","CPString"]), new objj_method(sel_getUid("_sendNotificationsForKey:changeOptions:isBefore:"), function $_CPKVOProxy___sendNotificationsForKey_changeOptions_isBefore_(self, _cmd, aKey, changeOptions, isBefore) +{ with(self) +{ + var changes = _changesForKey[aKey]; + if (isBefore) + { + changes = changeOptions; + var indexes = objj_msgSend(changes, "objectForKey:", CPKeyValueChangeIndexesKey); + if (indexes) + { + var type = objj_msgSend(changes, "objectForKey:", CPKeyValueChangeKindKey); + if (type === CPKeyValueChangeReplacement || type === CPKeyValueChangeRemoval) + { + var newValues = objj_msgSend(objj_msgSend(_targetObject, "mutableArrayValueForKeyPath:", aKey), "objectsAtIndexes:", indexes); + objj_msgSend(changes, "setValue:forKey:", newValues, CPKeyValueChangeOldKey); + } + } + else + { + var oldValue = objj_msgSend(_targetObject, "valueForKey:", aKey); + if (oldValue === nil || oldValue === undefined) + oldValue = objj_msgSend(CPNull, "null"); + objj_msgSend(changes, "setObject:forKey:", oldValue, CPKeyValueChangeOldKey); + } + objj_msgSend(changes, "setObject:forKey:", 1, CPKeyValueChangeNotificationIsPriorKey); + _changesForKey[aKey] = changes; + } + else + { + if (!changes) + changes = objj_msgSend(CPDictionary, "new"); + objj_msgSend(changes, "removeObjectForKey:", CPKeyValueChangeNotificationIsPriorKey); + var indexes = objj_msgSend(changes, "objectForKey:", CPKeyValueChangeIndexesKey); + if (indexes) + { + var type = objj_msgSend(changes, "objectForKey:", CPKeyValueChangeKindKey); + if (type == CPKeyValueChangeReplacement || type == CPKeyValueChangeInsertion) + { + var newValues = objj_msgSend(objj_msgSend(_targetObject, "mutableArrayValueForKeyPath:", aKey), "objectsAtIndexes:", indexes); + objj_msgSend(changes, "setValue:forKey:", newValues, CPKeyValueChangeNewKey); + } + } + else + { + var newValue = objj_msgSend(_targetObject, "valueForKey:", aKey); + if (newValue === nil || newValue === undefined) + newValue = objj_msgSend(CPNull, "null"); + objj_msgSend(changes, "setObject:forKey:", newValue, CPKeyValueChangeNewKey); + } + } + var observers = objj_msgSend(_observersForKey[aKey], "allValues"), + count = observers ? observers.length : 0; + while (count--) + { + var observerInfo = observers[count]; + if (isBefore && (observerInfo.options & CPKeyValueObservingOptionPrior)) + objj_msgSend(observerInfo.observer, "observeValueForKeyPath:ofObject:change:context:", aKey, _targetObject, changes, observerInfo.context); + else if (!isBefore) + objj_msgSend(observerInfo.observer, "observeValueForKeyPath:ofObject:change:context:", aKey, _targetObject, changes, observerInfo.context); + } + var dependentKeysMap = _nativeClass[DependentKeysKey]; + if (!dependentKeysMap) + return; + var dependentKeyPaths = objj_msgSend(dependentKeysMap[aKey], "allObjects"); + if (!dependentKeyPaths) + return; + var index = 0, + count = objj_msgSend(dependentKeyPaths, "count"); + for (; index < count; ++index) + { + var keyPath = dependentKeyPaths[index]; + objj_msgSend(self, "_sendNotificationsForKey:changeOptions:isBefore:", keyPath, isBefore ? objj_msgSend(changeOptions, "copy") : _changesForKey[keyPath], isBefore); + } +} +},["void","CPString","CPDictionary","BOOL"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("proxyForObject:"), function $_CPKVOProxy__proxyForObject_(self, _cmd, anObject) +{ with(self) +{ + var proxy = anObject[KVOProxyKey]; + if (proxy) + return proxy; + proxy = objj_msgSend(objj_msgSend(self, "alloc"), "initWithTarget:", anObject); + objj_msgSend(proxy, "_replaceClass"); + anObject[KVOProxyKey] = proxy; + return proxy; +} +},["id","CPObject"])]); +} +{var the_class = objj_allocateClassPair(Nil, "_CPKVOModelSubclass"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("willChangeValueForKey:"), function $_CPKVOModelSubclass__willChangeValueForKey_(self, _cmd, aKey) +{ with(self) +{ + var superClass = objj_msgSend(self, "class"), + methodSelector = sel_getUid("willChangeValueForKey:"), + methodImp = class_getMethodImplementation(superClass, methodSelector); + methodImp(self, methodSelector, aKey); + if (!aKey) + return; + var changeOptions = objj_msgSend(CPDictionary, "dictionaryWithObject:forKey:", CPKeyValueChangeSetting, CPKeyValueChangeKindKey); + objj_msgSend(objj_msgSend(_CPKVOProxy, "proxyForObject:", self), "_sendNotificationsForKey:changeOptions:isBefore:", aKey, changeOptions, YES); +} +},["void","CPString"]), new objj_method(sel_getUid("didChangeValueForKey:"), function $_CPKVOModelSubclass__didChangeValueForKey_(self, _cmd, aKey) +{ with(self) +{ + var superClass = objj_msgSend(self, "class"), + methodSelector = sel_getUid("didChangeValueForKey:"), + methodImp = class_getMethodImplementation(superClass, methodSelector); + methodImp(self, methodSelector, aKey); + if (!aKey) + return; + objj_msgSend(objj_msgSend(_CPKVOProxy, "proxyForObject:", self), "_sendNotificationsForKey:changeOptions:isBefore:", aKey, nil, NO); +} +},["void","CPString"]), new objj_method(sel_getUid("willChange:valuesAtIndexes:forKey:"), function $_CPKVOModelSubclass__willChange_valuesAtIndexes_forKey_(self, _cmd, change, indexes, aKey) +{ with(self) +{ + var superClass = objj_msgSend(self, "class"), + methodSelector = sel_getUid("willChange:valuesAtIndexes:forKey:"), + methodImp = class_getMethodImplementation(superClass, methodSelector); + methodImp(self, methodSelector, change, indexes, aKey); + if (!aKey) + return; + var changeOptions = objj_msgSend(CPDictionary, "dictionaryWithObjects:forKeys:", [change, indexes], [CPKeyValueChangeKindKey, CPKeyValueChangeIndexesKey]); + objj_msgSend(objj_msgSend(_CPKVOProxy, "proxyForObject:", self), "_sendNotificationsForKey:changeOptions:isBefore:", aKey, changeOptions, YES); +} +},["void","CPKeyValueChange","CPIndexSet","CPString"]), new objj_method(sel_getUid("didChange:valuesAtIndexes:forKey:"), function $_CPKVOModelSubclass__didChange_valuesAtIndexes_forKey_(self, _cmd, change, indexes, aKey) +{ with(self) +{ + var superClass = objj_msgSend(self, "class"), + methodSelector = sel_getUid("didChange:valuesAtIndexes:forKey:"), + methodImp = class_getMethodImplementation(superClass, methodSelector); + methodImp(self, methodSelector, change, indexes, aKey); + if (!aKey) + return; + objj_msgSend(objj_msgSend(_CPKVOProxy, "proxyForObject:", self), "_sendNotificationsForKey:changeOptions:isBefore:", aKey, nil, NO); +} +},["void","CPKeyValueChange","CPIndexSet","CPString"]), new objj_method(sel_getUid("class"), function $_CPKVOModelSubclass__class(self, _cmd) +{ with(self) +{ + return self[KVOProxyKey]._nativeClass; +} +},["Class"]), new objj_method(sel_getUid("superclass"), function $_CPKVOModelSubclass__superclass(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "superclass"); +} +},["Class"]), new objj_method(sel_getUid("isKindOfClass:"), function $_CPKVOModelSubclass__isKindOfClass_(self, _cmd, aClass) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "class"), "isSubclassOfClass:", aClass); +} +},["BOOL","Class"]), new objj_method(sel_getUid("isMemberOfClass:"), function $_CPKVOModelSubclass__isMemberOfClass_(self, _cmd, aClass) +{ with(self) +{ + return objj_msgSend(self, "class") == aClass; +} +},["BOOL","Class"]), new objj_method(sel_getUid("className"), function $_CPKVOModelSubclass__className(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "class").name; +} +},["CPString"])]); +} +{var the_class = objj_allocateClassPair(Nil, "_CPKVOModelDictionarySubclass"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("removeAllObjects"), function $_CPKVOModelDictionarySubclass__removeAllObjects(self, _cmd) +{ with(self) +{ + var keys = objj_msgSend(self, "allKeys"), + count = objj_msgSend(keys, "count"), + i = 0; + for (; i < count; i++) + objj_msgSend(self, "willChangeValueForKey:", keys[i]); + var superClass = objj_msgSend(self, "class"), + methodSelector = sel_getUid("removeAllObjects"), + methodImp = class_getMethodImplementation(superClass, methodSelector); + methodImp(self, methodSelector); + for (i = 0; i < count; i++) + objj_msgSend(self, "didChangeValueForKey:", keys[i]); +} +},["void"]), new objj_method(sel_getUid("removeObjectForKey:"), function $_CPKVOModelDictionarySubclass__removeObjectForKey_(self, _cmd, aKey) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", aKey); + var superClass = objj_msgSend(self, "class"), + methodSelector = sel_getUid("removeObjectForKey:"), + methodImp = class_getMethodImplementation(superClass, methodSelector); + methodImp(self, methodSelector, aKey); + objj_msgSend(self, "didChangeValueForKey:", aKey); +} +},["void","id"]), new objj_method(sel_getUid("setObject:forKey:"), function $_CPKVOModelDictionarySubclass__setObject_forKey_(self, _cmd, anObject, aKey) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", aKey); + var superClass = objj_msgSend(self, "class"), + methodSelector = sel_getUid("setObject:forKey:"), + methodImp = class_getMethodImplementation(superClass, methodSelector); + methodImp(self, methodSelector, anObject, aKey); + objj_msgSend(self, "didChangeValueForKey:", aKey); +} +},["void","id","id"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPKVOForwardingObserver"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_object"), new objj_ivar("_observer"), new objj_ivar("_context"), new objj_ivar("_firstPart"), new objj_ivar("_secondPart"), new objj_ivar("_value")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithKeyPath:object:observer:options:context:"), function $_CPKVOForwardingObserver__initWithKeyPath_object_observer_options_context_(self, _cmd, aKeyPath, anObject, anObserver, options, aContext) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPKVOForwardingObserver").super_class }, "init"); + _context = aContext; + _observer = anObserver; + _object = anObject; + var dotIndex = aKeyPath.indexOf('.'); + if (dotIndex == CPNotFound) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Created _CPKVOForwardingObserver without compound key path: "+aKeyPath); + _firstPart = aKeyPath.substring(0, dotIndex); + _secondPart = aKeyPath.substring(dotIndex + 1); + objj_msgSend(_object, "addObserver:forKeyPath:options:context:", self, _firstPart, kvoNewAndOld, nil); + _value = objj_msgSend(_object, "valueForKey:", _firstPart); + if (_value) + objj_msgSend(_value, "addObserver:forKeyPath:options:context:", self, _secondPart, kvoNewAndOld, nil); + return self; +} +},["id","CPString","id","id","unsigned","id"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $_CPKVOForwardingObserver__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, changes, aContext) +{ with(self) +{ + if (aKeyPath === _firstPart) + { + objj_msgSend(_observer, "observeValueForKeyPath:ofObject:change:context:", _firstPart, _object, changes, _context); + if (_value) + objj_msgSend(_value, "removeObserver:forKeyPath:", self, _secondPart); + _value = objj_msgSend(_object, "valueForKey:", _firstPart); + if (_value) + objj_msgSend(_value, "addObserver:forKeyPath:options:context:", self, _secondPart, kvoNewAndOld, nil); + } + else + { + objj_msgSend(_observer, "observeValueForKeyPath:ofObject:change:context:", _firstPart+"."+aKeyPath, _object, changes, _context); + } +} +},["void","CPString","id","CPDictionary","id"]), new objj_method(sel_getUid("finalize"), function $_CPKVOForwardingObserver__finalize(self, _cmd) +{ with(self) +{ + if (_value) + objj_msgSend(_value, "removeObserver:forKeyPath:", self, _secondPart); + objj_msgSend(_object, "removeObserver:forKeyPath:", self, _firstPart); + _object = nil; + _observer = nil; + _context = nil; + _value = nil; +} +},["void"])]); +} +var _CPKVOInfoMake = _CPKVOInfoMake= function(anObserver, theOptions, aContext, aForwarder) +{ + return { + observer: anObserver, + options: theOptions, + context: aContext, + forwarder: aForwarder + }; +} +var _kvoMethodForMethod = _kvoMethodForMethod= function(theKey, theMethod) +{ + return function(self, _cmd, object) + { + objj_msgSend(self, "willChangeValueForKey:", theKey); + theMethod.method_imp(self, _cmd, object); + objj_msgSend(self, "didChangeValueForKey:", theKey); + } +} +var _kvoInsertMethodForMethod = _kvoInsertMethodForMethod= function(theKey, theMethod) +{ + return function(self, _cmd, object, index) + { + objj_msgSend(self, "willChange:valuesAtIndexes:forKey:", CPKeyValueChangeInsertion, objj_msgSend(CPIndexSet, "indexSetWithIndex:", index), theKey); + theMethod.method_imp(self, _cmd, object, index); + objj_msgSend(self, "didChange:valuesAtIndexes:forKey:", CPKeyValueChangeInsertion, objj_msgSend(CPIndexSet, "indexSetWithIndex:", index), theKey); + } +} +var _kvoReplaceMethodForMethod = _kvoReplaceMethodForMethod= function(theKey, theMethod) +{ + return function(self, _cmd, index, object) + { + objj_msgSend(self, "willChange:valuesAtIndexes:forKey:", CPKeyValueChangeReplacement, objj_msgSend(CPIndexSet, "indexSetWithIndex:", index), theKey); + theMethod.method_imp(self, _cmd, index, object); + objj_msgSend(self, "didChange:valuesAtIndexes:forKey:", CPKeyValueChangeReplacement, objj_msgSend(CPIndexSet, "indexSetWithIndex:", index), theKey); + } +} +var _kvoRemoveMethodForMethod = _kvoRemoveMethodForMethod= function(theKey, theMethod) +{ + return function(self, _cmd, index) + { + objj_msgSend(self, "willChange:valuesAtIndexes:forKey:", CPKeyValueChangeRemoval, objj_msgSend(CPIndexSet, "indexSetWithIndex:", index), theKey); + theMethod.method_imp(self, _cmd, index); + objj_msgSend(self, "didChange:valuesAtIndexes:forKey:", CPKeyValueChangeRemoval, objj_msgSend(CPIndexSet, "indexSetWithIndex:", index), theKey); + } +} +objj_executeFile("CPArray+KVO.j", YES); + +p;7;CPLog.jt;17;@STATIC;1.0;t;1; +p;16;CPNotification.jt;2273;@STATIC;1.0;i;13;CPException.ji;10;CPObject.jt;2221;objj_executeFile("CPException.j", YES); +objj_executeFile("CPObject.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPNotification"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_name"), new objj_ivar("_object"), new objj_ivar("_userInfo")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPNotification__init(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPUnsupportedMethodException, "CPNotification's init method should not be used"); +} +},["id"]), new objj_method(sel_getUid("initWithName:object:userInfo:"), function $CPNotification__initWithName_object_userInfo_(self, _cmd, aNotificationName, anObject, aUserInfo) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPNotification").super_class }, "init"); + if (self) + { + _name = aNotificationName; + _object = anObject; + _userInfo = aUserInfo; + } + return self; +} +},["id","CPString","id","CPDictionary"]), new objj_method(sel_getUid("name"), function $CPNotification__name(self, _cmd) +{ with(self) +{ + return _name; +} +},["CPString"]), new objj_method(sel_getUid("object"), function $CPNotification__object(self, _cmd) +{ with(self) +{ + return _object; +} +},["id"]), new objj_method(sel_getUid("userInfo"), function $CPNotification__userInfo(self, _cmd) +{ with(self) +{ + return _userInfo; +} +},["CPDictionary"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("notificationWithName:object:userInfo:"), function $CPNotification__notificationWithName_object_userInfo_(self, _cmd, aNotificationName, anObject, aUserInfo) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithName:object:userInfo:", aNotificationName, anObject, aUserInfo); +} +},["CPNotification","CPString","id","CPDictionary"]), new objj_method(sel_getUid("notificationWithName:object:"), function $CPNotification__notificationWithName_object_(self, _cmd, aNotificationName, anObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithName:object:userInfo:", aNotificationName, anObject, nil); +} +},["CPNotification","CPString","id"])]); +} + +p;22;CPNotificationCenter.jt;10356;@STATIC;1.0;i;9;CPArray.ji;14;CPDictionary.ji;13;CPException.ji;16;CPNotification.ji;8;CPNull.jt;10253;objj_executeFile("CPArray.j", YES); +objj_executeFile("CPDictionary.j", YES); +objj_executeFile("CPException.j", YES); +objj_executeFile("CPNotification.j", YES); +objj_executeFile("CPNull.j", YES); +var CPNotificationDefaultCenter = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPNotificationCenter"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_namedRegistries"), new objj_ivar("_unnamedRegistry")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPNotificationCenter__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPNotificationCenter").super_class }, "init"); + if (self) + { + _namedRegistries = objj_msgSend(CPDictionary, "dictionary"); + _unnamedRegistry = objj_msgSend(objj_msgSend(_CPNotificationRegistry, "alloc"), "init"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("addObserver:selector:name:object:"), function $CPNotificationCenter__addObserver_selector_name_object_(self, _cmd, anObserver, aSelector, aNotificationName, anObject) +{ with(self) +{ + var registry, + observer = objj_msgSend(objj_msgSend(_CPNotificationObserver, "alloc"), "initWithObserver:selector:", anObserver, aSelector); + if (aNotificationName == nil) + registry = _unnamedRegistry; + else if (!(registry = objj_msgSend(_namedRegistries, "objectForKey:", aNotificationName))) + { + registry = objj_msgSend(objj_msgSend(_CPNotificationRegistry, "alloc"), "init"); + objj_msgSend(_namedRegistries, "setObject:forKey:", registry, aNotificationName); + } + objj_msgSend(registry, "addObserver:object:", observer, anObject); +} +},["void","id","SEL","CPString","id"]), new objj_method(sel_getUid("removeObserver:"), function $CPNotificationCenter__removeObserver_(self, _cmd, anObserver) +{ with(self) +{ + var name = nil, + names = objj_msgSend(_namedRegistries, "keyEnumerator"); + while (name = objj_msgSend(names, "nextObject")) + objj_msgSend(objj_msgSend(_namedRegistries, "objectForKey:", name), "removeObserver:object:", anObserver, nil); + objj_msgSend(_unnamedRegistry, "removeObserver:object:", anObserver, nil); +} +},["void","id"]), new objj_method(sel_getUid("removeObserver:name:object:"), function $CPNotificationCenter__removeObserver_name_object_(self, _cmd, anObserver, aNotificationName, anObject) +{ with(self) +{ + if (aNotificationName == nil) + { + var name = nil, + names = objj_msgSend(_namedRegistries, "keyEnumerator"); + while (name = objj_msgSend(names, "nextObject")) + objj_msgSend(objj_msgSend(_namedRegistries, "objectForKey:", name), "removeObserver:object:", anObserver, anObject); + objj_msgSend(_unnamedRegistry, "removeObserver:object:", anObserver, anObject); + } + else + objj_msgSend(objj_msgSend(_namedRegistries, "objectForKey:", aNotificationName), "removeObserver:object:", anObserver, anObject); +} +},["void","id","CPString","id"]), new objj_method(sel_getUid("postNotification:"), function $CPNotificationCenter__postNotification_(self, _cmd, aNotification) +{ with(self) +{ + if (!aNotification) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "postNotification: does not except 'nil' notifications"); + _CPNotificationCenterPostNotification(self, aNotification); +} +},["void","CPNotification"]), new objj_method(sel_getUid("postNotificationName:object:userInfo:"), function $CPNotificationCenter__postNotificationName_object_userInfo_(self, _cmd, aNotificationName, anObject, aUserInfo) +{ with(self) +{ + _CPNotificationCenterPostNotification(self, objj_msgSend(objj_msgSend(CPNotification, "alloc"), "initWithName:object:userInfo:", aNotificationName, anObject, aUserInfo)); +} +},["void","CPString","id","CPDictionary"]), new objj_method(sel_getUid("postNotificationName:object:"), function $CPNotificationCenter__postNotificationName_object_(self, _cmd, aNotificationName, anObject) +{ with(self) +{ + _CPNotificationCenterPostNotification(self, objj_msgSend(objj_msgSend(CPNotification, "alloc"), "initWithName:object:userInfo:", aNotificationName, anObject, nil)); +} +},["void","CPString","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("defaultCenter"), function $CPNotificationCenter__defaultCenter(self, _cmd) +{ with(self) +{ + if (!CPNotificationDefaultCenter) + CPNotificationDefaultCenter = objj_msgSend(objj_msgSend(CPNotificationCenter, "alloc"), "init"); + return CPNotificationDefaultCenter; +} +},["CPNotificationCenter"])]); +} +var _CPNotificationCenterPostNotification = function( self, aNotification) +{ + objj_msgSend(self._unnamedRegistry, "postNotification:", aNotification); + objj_msgSend(objj_msgSend(self._namedRegistries, "objectForKey:", objj_msgSend(aNotification, "name")), "postNotification:", aNotification); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPNotificationRegistry"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_objectObservers"), new objj_ivar("_observerRemovalCount")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $_CPNotificationRegistry__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPNotificationRegistry").super_class }, "init"); + if (self) + { + _observerRemovalCount = 0; + _objectObservers = objj_msgSend(CPDictionary, "dictionary"); + } + return self; +} +},["id"]), new objj_method(sel_getUid("addObserver:object:"), function $_CPNotificationRegistry__addObserver_object_(self, _cmd, anObserver, anObject) +{ with(self) +{ + if (!anObject) + anObject = objj_msgSend(CPNull, "null"); + var observers = objj_msgSend(_objectObservers, "objectForKey:", objj_msgSend(anObject, "UID")); + if (!observers) + { + observers = []; + objj_msgSend(_objectObservers, "setObject:forKey:", observers, objj_msgSend(anObject, "UID")); + } + observers.push(anObserver); +} +},["void","_CPNotificationObserver","id"]), new objj_method(sel_getUid("removeObserver:object:"), function $_CPNotificationRegistry__removeObserver_object_(self, _cmd, anObserver, anObject) +{ with(self) +{ + var removedKeys = []; + if (anObject == nil) + { + var key = nil, + keys = objj_msgSend(_objectObservers, "keyEnumerator"); + while (key = objj_msgSend(keys, "nextObject")) + { + var observers = objj_msgSend(_objectObservers, "objectForKey:", key), + count = observers ? observers.length : 0; + while (count--) + if (objj_msgSend(observers[count], "observer") == anObserver) + { + ++_observerRemovalCount; + observers.splice(count, 1); + } + if (!observers || observers.length == 0) + removedKeys.push(key); + } + } + else + { + var key = objj_msgSend(anObject, "UID"), + observers = objj_msgSend(_objectObservers, "objectForKey:", key); + count = observers ? observers.length : 0; + while (count--) + if (objj_msgSend(observers[count], "observer") == anObserver) + { + ++_observerRemovalCount; + observers.splice(count, 1) + } + if (!observers || observers.length == 0) + removedKeys.push(key); + } + var count = removedKeys.length; + while (count--) + objj_msgSend(_objectObservers, "removeObjectForKey:", removedKeys[count]); +} +},["void","id","id"]), new objj_method(sel_getUid("postNotification:"), function $_CPNotificationRegistry__postNotification_(self, _cmd, aNotification) +{ with(self) +{ + var observerRemovalCount = _observerRemovalCount, + object = objj_msgSend(aNotification, "object"), + observers = nil; + if (object != nil && (observers = objj_msgSend(objj_msgSend(_objectObservers, "objectForKey:", objj_msgSend(object, "UID")), "copy"))) + { + var currentObservers = observers, + count = observers.length; + while (count--) + { + var observer = observers[count]; + if ((observerRemovalCount === _observerRemovalCount) || objj_msgSend(currentObservers, "indexOfObjectIdenticalTo:", observer) !== CPNotFound) + objj_msgSend(observer, "postNotification:", aNotification); + } + } + observers = objj_msgSend(objj_msgSend(_objectObservers, "objectForKey:", objj_msgSend(objj_msgSend(CPNull, "null"), "UID")), "copy"); + if (!observers) + return; + var observerRemovalCount = _observerRemovalCount, + count = observers.length, + currentObservers = observers; + while (count--) + { + var observer = observers[count]; + if ((observerRemovalCount === _observerRemovalCount) || objj_msgSend(currentObservers, "indexOfObjectIdenticalTo:", observer) !== CPNotFound) + objj_msgSend(observer, "postNotification:", aNotification); + } +} +},["void","CPNotification"]), new objj_method(sel_getUid("count"), function $_CPNotificationRegistry__count(self, _cmd) +{ with(self) +{ + return objj_msgSend(_objectObservers, "count"); +} +},["unsigned"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "_CPNotificationObserver"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_observer"), new objj_ivar("_selector")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithObserver:selector:"), function $_CPNotificationObserver__initWithObserver_selector_(self, _cmd, anObserver, aSelector) +{ with(self) +{ + if (self) + { + _observer = anObserver; + _selector = aSelector; + } + return self; +} +},["id","id","SEL"]), new objj_method(sel_getUid("observer"), function $_CPNotificationObserver__observer(self, _cmd) +{ with(self) +{ + return _observer; +} +},["id"]), new objj_method(sel_getUid("postNotification:"), function $_CPNotificationObserver__postNotification_(self, _cmd, aNotification) +{ with(self) +{ + objj_msgSend(_observer, "performSelector:withObject:", _selector, aNotification); +} +},["void","CPNotification"])]); +} + +p;8;CPNull.jt;1103;@STATIC;1.0;i;10;CPObject.jt;1069;objj_executeFile("CPObject.j", YES); +var CPNullSharedNull = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPNull"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("isEqual:"), function $CPNull__isEqual_(self, _cmd, anObject) +{ with(self) +{ + if (self === anObject) + return YES; + return objj_msgSend(anObject, "isKindOfClass:", objj_msgSend(CPNull, "class")); +} +},["BOOL","id"]), new objj_method(sel_getUid("initWithCoder:"), function $CPNull__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(CPNull, "null"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPNull__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ +} +},["void","CPCoder"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("null"), function $CPNull__null(self, _cmd) +{ with(self) +{ + if (!CPNullSharedNull) + CPNullSharedNull = objj_msgSend(objj_msgSend(CPNull, "alloc"), "init"); + return CPNullSharedNull; +} +},["CPNull"])]); +} + +p;10;CPNumber.jt;9294;@STATIC;1.0;i;10;CPObject.ji;15;CPObjJRuntime.jt;9240;objj_executeFile("CPObject.j", YES); +objj_executeFile("CPObjJRuntime.j", YES); +var __placeholder = new Number(), + CPNumberUIDs = new CFMutableDictionary(); +{var the_class = objj_allocateClassPair(CPObject, "CPNumber"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithBool:"), function $CPNumber__initWithBool_(self, _cmd, aBoolean) +{ with(self) +{ + return aBoolean; +} +},["id","BOOL"]), new objj_method(sel_getUid("initWithChar:"), function $CPNumber__initWithChar_(self, _cmd, aChar) +{ with(self) +{ + if (aChar.charCodeAt) + return aChar.charCodeAt(0); + return aChar; +} +},["id","char"]), new objj_method(sel_getUid("initWithDouble:"), function $CPNumber__initWithDouble_(self, _cmd, aDouble) +{ with(self) +{ + return aDouble; +} +},["id","double"]), new objj_method(sel_getUid("initWithFloat:"), function $CPNumber__initWithFloat_(self, _cmd, aFloat) +{ with(self) +{ + return aFloat; +} +},["id","float"]), new objj_method(sel_getUid("initWithInt:"), function $CPNumber__initWithInt_(self, _cmd, anInt) +{ with(self) +{ + return anInt; +} +},["id","int"]), new objj_method(sel_getUid("initWithLong:"), function $CPNumber__initWithLong_(self, _cmd, aLong) +{ with(self) +{ + return aLong; +} +},["id","long"]), new objj_method(sel_getUid("initWithLongLong:"), function $CPNumber__initWithLongLong_(self, _cmd, aLongLong) +{ with(self) +{ + return aLongLong; +} +},["id","longlong"]), new objj_method(sel_getUid("initWithShort:"), function $CPNumber__initWithShort_(self, _cmd, aShort) +{ with(self) +{ + return aShort; +} +},["id","short"]), new objj_method(sel_getUid("initWithUnsignedChar:"), function $CPNumber__initWithUnsignedChar_(self, _cmd, aChar) +{ with(self) +{ + if (aChar.charCodeAt) + return aChar.charCodeAt(0); + return aChar; +} +},["id","unsignedchar"]), new objj_method(sel_getUid("initWithUnsignedInt:"), function $CPNumber__initWithUnsignedInt_(self, _cmd, anUnsignedInt) +{ with(self) +{ + return anUnsignedInt; +} +},["id","unsigned"]), new objj_method(sel_getUid("initWithUnsignedLong:"), function $CPNumber__initWithUnsignedLong_(self, _cmd, anUnsignedLong) +{ with(self) +{ + return anUnsignedLong; +} +},["id","unsignedlong"]), new objj_method(sel_getUid("initWithUnsignedShort:"), function $CPNumber__initWithUnsignedShort_(self, _cmd, anUnsignedShort) +{ with(self) +{ + return anUnsignedShort; +} +},["id","unsignedshort"]), new objj_method(sel_getUid("UID"), function $CPNumber__UID(self, _cmd) +{ with(self) +{ + var UID = CPNumberUIDs.valueForKey(self); + if (!UID) + { + UID = objj_generateObjectUID(); + CPNumberUIDs.setValueForKey(self, UID); + } + return UID + ""; +} +},["CPString"]), new objj_method(sel_getUid("boolValue"), function $CPNumber__boolValue(self, _cmd) +{ with(self) +{ + return self ? true : false; +} +},["BOOL"]), new objj_method(sel_getUid("charValue"), function $CPNumber__charValue(self, _cmd) +{ with(self) +{ + return String.fromCharCode(self); +} +},["char"]), new objj_method(sel_getUid("decimalValue"), function $CPNumber__decimalValue(self, _cmd) +{ with(self) +{ + throw new Error("decimalValue: NOT YET IMPLEMENTED"); +} +},["CPDecimal"]), new objj_method(sel_getUid("descriptionWithLocale:"), function $CPNumber__descriptionWithLocale_(self, _cmd, aDictionary) +{ with(self) +{ + if (!aDictionary) return toString(); + throw new Error("descriptionWithLocale: NOT YET IMPLEMENTED"); +} +},["CPString","CPDictionary"]), new objj_method(sel_getUid("description"), function $CPNumber__description(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "descriptionWithLocale:", nil); +} +},["CPString"]), new objj_method(sel_getUid("doubleValue"), function $CPNumber__doubleValue(self, _cmd) +{ with(self) +{ + if (typeof self == "boolean") return self ? 1 : 0; + return self; +} +},["double"]), new objj_method(sel_getUid("floatValue"), function $CPNumber__floatValue(self, _cmd) +{ with(self) +{ + if (typeof self == "boolean") return self ? 1 : 0; + return self; +} +},["float"]), new objj_method(sel_getUid("intValue"), function $CPNumber__intValue(self, _cmd) +{ with(self) +{ + if (typeof self == "boolean") return self ? 1 : 0; + return self; +} +},["int"]), new objj_method(sel_getUid("longLongValue"), function $CPNumber__longLongValue(self, _cmd) +{ with(self) +{ + if (typeof self == "boolean") return self ? 1 : 0; + return self; +} +},["longlong"]), new objj_method(sel_getUid("longValue"), function $CPNumber__longValue(self, _cmd) +{ with(self) +{ + if (typeof self == "boolean") return self ? 1 : 0; + return self; +} +},["long"]), new objj_method(sel_getUid("shortValue"), function $CPNumber__shortValue(self, _cmd) +{ with(self) +{ + if (typeof self == "boolean") return self ? 1 : 0; + return self; +} +},["short"]), new objj_method(sel_getUid("stringValue"), function $CPNumber__stringValue(self, _cmd) +{ with(self) +{ + return toString(); +} +},["CPString"]), new objj_method(sel_getUid("unsignedCharValue"), function $CPNumber__unsignedCharValue(self, _cmd) +{ with(self) +{ + return String.fromCharCode(self); +} +},["unsignedchar"]), new objj_method(sel_getUid("unsignedIntValue"), function $CPNumber__unsignedIntValue(self, _cmd) +{ with(self) +{ + if (typeof self == "boolean") return self ? 1 : 0; + return self; +} +},["unsignedint"]), new objj_method(sel_getUid("unsignedLongValue"), function $CPNumber__unsignedLongValue(self, _cmd) +{ with(self) +{ + if (typeof self == "boolean") return self ? 1 : 0; + return self; +} +},["unsignedlong"]), new objj_method(sel_getUid("unsignedShortValue"), function $CPNumber__unsignedShortValue(self, _cmd) +{ with(self) +{ + if (typeof self == "boolean") return self ? 1 : 0; + return self; +} +},["unsignedshort"]), new objj_method(sel_getUid("compare:"), function $CPNumber__compare_(self, _cmd, aNumber) +{ with(self) +{ + if (self > aNumber) return CPOrderedDescending; + else if (self < aNumber) return CPOrderedAscending; + return CPOrderedSame; +} +},["CPComparisonResult","CPNumber"]), new objj_method(sel_getUid("isEqualToNumber:"), function $CPNumber__isEqualToNumber_(self, _cmd, aNumber) +{ with(self) +{ + return self == aNumber; +} +},["BOOL","CPNumber"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $CPNumber__alloc(self, _cmd) +{ with(self) +{ + return __placeholder; +} +},["id"]), new objj_method(sel_getUid("numberWithBool:"), function $CPNumber__numberWithBool_(self, _cmd, aBoolean) +{ with(self) +{ + return aBoolean; +} +},["id","BOOL"]), new objj_method(sel_getUid("numberWithChar:"), function $CPNumber__numberWithChar_(self, _cmd, aChar) +{ with(self) +{ + if (aChar.charCodeAt) + return aChar.charCodeAt(0); + return aChar; +} +},["id","char"]), new objj_method(sel_getUid("numberWithDouble:"), function $CPNumber__numberWithDouble_(self, _cmd, aDouble) +{ with(self) +{ + return aDouble; +} +},["id","double"]), new objj_method(sel_getUid("numberWithFloat:"), function $CPNumber__numberWithFloat_(self, _cmd, aFloat) +{ with(self) +{ + return aFloat; +} +},["id","float"]), new objj_method(sel_getUid("numberWithInt:"), function $CPNumber__numberWithInt_(self, _cmd, anInt) +{ with(self) +{ + return anInt; +} +},["id","int"]), new objj_method(sel_getUid("numberWithLong:"), function $CPNumber__numberWithLong_(self, _cmd, aLong) +{ with(self) +{ + return aLong; +} +},["id","long"]), new objj_method(sel_getUid("numberWithLongLong:"), function $CPNumber__numberWithLongLong_(self, _cmd, aLongLong) +{ with(self) +{ + return aLongLong; +} +},["id","longlong"]), new objj_method(sel_getUid("numberWithShort:"), function $CPNumber__numberWithShort_(self, _cmd, aShort) +{ with(self) +{ + return aShort; +} +},["id","short"]), new objj_method(sel_getUid("numberWithUnsignedChar:"), function $CPNumber__numberWithUnsignedChar_(self, _cmd, aChar) +{ with(self) +{ + if (aChar.charCodeAt) + return aChar.charCodeAt(0); + return aChar; +} +},["id","unsignedchar"]), new objj_method(sel_getUid("numberWithUnsignedInt:"), function $CPNumber__numberWithUnsignedInt_(self, _cmd, anUnsignedInt) +{ with(self) +{ + return anUnsignedInt; +} +},["id","unsigned"]), new objj_method(sel_getUid("numberWithUnsignedLong:"), function $CPNumber__numberWithUnsignedLong_(self, _cmd, anUnsignedLong) +{ with(self) +{ + return anUnsignedLong; +} +},["id","unsignedlong"]), new objj_method(sel_getUid("numberWithUnsignedShort:"), function $CPNumber__numberWithUnsignedShort_(self, _cmd, anUnsignedShort) +{ with(self) +{ + return anUnsignedShort; +} +},["id","unsignedshort"])]); +} +{ +var the_class = objj_getClass("CPNumber") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPNumber\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPNumber__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(aCoder, "decodeNumber"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPNumber__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeNumber:forKey:", self, "self"); +} +},["void","CPCoder"])]); +} +Number.prototype.isa = CPNumber; +Boolean.prototype.isa = CPNumber; +objj_msgSend(CPNumber, "initialize"); + +p;10;CPObject.jt;10234;@STATIC;1.0;t;10214;{var the_class = objj_allocateClassPair(Nil, "CPObject"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("isa")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPObject__init(self, _cmd) +{ with(self) +{ + return self; +} +},["id"]), new objj_method(sel_getUid("copy"), function $CPObject__copy(self, _cmd) +{ with(self) +{ + return self; +} +},["id"]), new objj_method(sel_getUid("mutableCopy"), function $CPObject__mutableCopy(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "copy"); +} +},["id"]), new objj_method(sel_getUid("dealloc"), function $CPObject__dealloc(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("class"), function $CPObject__class(self, _cmd) +{ with(self) +{ + return isa; +} +},["Class"]), new objj_method(sel_getUid("isKindOfClass:"), function $CPObject__isKindOfClass_(self, _cmd, aClass) +{ with(self) +{ + return objj_msgSend(isa, "isSubclassOfClass:", aClass); +} +},["BOOL","Class"]), new objj_method(sel_getUid("isMemberOfClass:"), function $CPObject__isMemberOfClass_(self, _cmd, aClass) +{ with(self) +{ + return self.isa === aClass; +} +},["BOOL","Class"]), new objj_method(sel_getUid("isProxy"), function $CPObject__isProxy(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("respondsToSelector:"), function $CPObject__respondsToSelector_(self, _cmd, aSelector) +{ with(self) +{ + return !!class_getInstanceMethod(isa, aSelector); +} +},["BOOL","SEL"]), new objj_method(sel_getUid("implementsSelector:"), function $CPObject__implementsSelector_(self, _cmd, aSelector) +{ with(self) +{ + var methods = class_copyMethodList(isa), + count = methods.length; + while (count--) + if (method_getName(methods[count]) === aSelector) + return YES; + return NO; +} +},["BOOL","SEL"]), new objj_method(sel_getUid("methodForSelector:"), function $CPObject__methodForSelector_(self, _cmd, aSelector) +{ with(self) +{ + return class_getMethodImplementation(isa, aSelector); +} +},["IMP","SEL"]), new objj_method(sel_getUid("methodSignatureForSelector:"), function $CPObject__methodSignatureForSelector_(self, _cmd, aSelector) +{ with(self) +{ + return nil; +} +},["CPMethodSignature","SEL"]), new objj_method(sel_getUid("description"), function $CPObject__description(self, _cmd) +{ with(self) +{ + return "<" + class_getName(isa) + " 0x" + objj_msgSend(CPString, "stringWithHash:", objj_msgSend(self, "UID")) + ">"; +} +},["CPString"]), new objj_method(sel_getUid("performSelector:"), function $CPObject__performSelector_(self, _cmd, aSelector) +{ with(self) +{ + return objj_msgSend(self, aSelector); +} +},["id","SEL"]), new objj_method(sel_getUid("performSelector:withObject:"), function $CPObject__performSelector_withObject_(self, _cmd, aSelector, anObject) +{ with(self) +{ + return objj_msgSend(self, aSelector, anObject); +} +},["id","SEL","id"]), new objj_method(sel_getUid("performSelector:withObject:withObject:"), function $CPObject__performSelector_withObject_withObject_(self, _cmd, aSelector, anObject, anotherObject) +{ with(self) +{ + return objj_msgSend(self, aSelector, anObject, anotherObject); +} +},["id","SEL","id","id"]), new objj_method(sel_getUid("forwardInvocation:"), function $CPObject__forwardInvocation_(self, _cmd, anInvocation) +{ with(self) +{ + objj_msgSend(self, "doesNotRecognizeSelector:", objj_msgSend(anInvocation, "selector")); +} +},["void","CPInvocation"]), new objj_method(sel_getUid("forward::"), function $CPObject__forward__(self, _cmd, aSelector, args) +{ with(self) +{ + var signature = objj_msgSend(self, "methodSignatureForSelector:", aSelector); + if (signature) + { + invocation = objj_msgSend(CPInvocation, "invocationWithMethodSignature:", signature); + objj_msgSend(invocation, "setTarget:", self); + objj_msgSend(invocation, "setSelector:", aSelector); + var index = 2, + count = args.length; + for (; index < count; ++index) + objj_msgSend(invocation, "setArgument:atIndex:", args[index], index); + objj_msgSend(self, "forwardInvocation:", invocation); + return objj_msgSend(invocation, "returnValue"); + } + objj_msgSend(self, "doesNotRecognizeSelector:", aSelector); +} +},["void","SEL","marg_list"]), new objj_method(sel_getUid("doesNotRecognizeSelector:"), function $CPObject__doesNotRecognizeSelector_(self, _cmd, aSelector) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, + (class_isMetaClass(isa) ? "+" : "-") + " [" + objj_msgSend(self, "className") + " " + aSelector + "] unrecognized selector sent to " + + (class_isMetaClass(isa) ? "class" : "instance") + " 0x" + objj_msgSend(CPString, "stringWithHash:", objj_msgSend(self, "UID"))); +} +},["void","SEL"]), new objj_method(sel_getUid("awakeAfterUsingCoder:"), function $CPObject__awakeAfterUsingCoder_(self, _cmd, aCoder) +{ with(self) +{ + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("classForKeyedArchiver"), function $CPObject__classForKeyedArchiver(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "classForCoder"); +} +},["Class"]), new objj_method(sel_getUid("classForCoder"), function $CPObject__classForCoder(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "class"); +} +},["Class"]), new objj_method(sel_getUid("replacementObjectForArchiver:"), function $CPObject__replacementObjectForArchiver_(self, _cmd, anArchiver) +{ with(self) +{ + return objj_msgSend(self, "replacementObjectForCoder:", anArchiver); +} +},["id","CPArchiver"]), new objj_method(sel_getUid("replacementObjectForKeyedArchiver:"), function $CPObject__replacementObjectForKeyedArchiver_(self, _cmd, anArchiver) +{ with(self) +{ + return objj_msgSend(self, "replacementObjectForCoder:", anArchiver); +} +},["id","CPKeyedArchiver"]), new objj_method(sel_getUid("replacementObjectForCoder:"), function $CPObject__replacementObjectForCoder_(self, _cmd, aCoder) +{ with(self) +{ + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("className"), function $CPObject__className(self, _cmd) +{ with(self) +{ + return isa.name; +} +},["CPString"]), new objj_method(sel_getUid("autorelease"), function $CPObject__autorelease(self, _cmd) +{ with(self) +{ + return self; +} +},["id"]), new objj_method(sel_getUid("hash"), function $CPObject__hash(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "UID"); +} +},["unsigned"]), new objj_method(sel_getUid("UID"), function $CPObject__UID(self, _cmd) +{ with(self) +{ + if (typeof self._UID === "undefined") + self._UID = objj_generateObjectUID(); + return _UID + ""; +} +},["CPString"]), new objj_method(sel_getUid("isEqual:"), function $CPObject__isEqual_(self, _cmd, anObject) +{ with(self) +{ + return self === anObject || objj_msgSend(self, "UID") === objj_msgSend(anObject, "UID"); +} +},["BOOL","id"]), new objj_method(sel_getUid("retain"), function $CPObject__retain(self, _cmd) +{ with(self) +{ + return self; +} +},["id"]), new objj_method(sel_getUid("release"), function $CPObject__release(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("self"), function $CPObject__self(self, _cmd) +{ with(self) +{ + return self; +} +},["id"]), new objj_method(sel_getUid("superclass"), function $CPObject__superclass(self, _cmd) +{ with(self) +{ + return isa.super_class; +} +},["Class"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("load"), function $CPObject__load(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("initialize"), function $CPObject__initialize(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("new"), function $CPObject__new(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("alloc"), function $CPObject__alloc(self, _cmd) +{ with(self) +{ + return class_createInstance(self); +} +},["id"]), new objj_method(sel_getUid("allocWithCoder:"), function $CPObject__allocWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "alloc"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("class"), function $CPObject__class(self, _cmd) +{ with(self) +{ + return self; +} +},["Class"]), new objj_method(sel_getUid("superclass"), function $CPObject__superclass(self, _cmd) +{ with(self) +{ + return super_class; +} +},["Class"]), new objj_method(sel_getUid("isSubclassOfClass:"), function $CPObject__isSubclassOfClass_(self, _cmd, aClass) +{ with(self) +{ + var theClass = self; + for (; theClass; theClass = theClass.super_class) + if (theClass === aClass) + return YES; + return NO; +} +},["BOOL","Class"]), new objj_method(sel_getUid("isKindOfClass:"), function $CPObject__isKindOfClass_(self, _cmd, aClass) +{ with(self) +{ + return objj_msgSend(self, "isSubclassOfClass:", aClass); +} +},["BOOL","Class"]), new objj_method(sel_getUid("isMemberOfClass:"), function $CPObject__isMemberOfClass_(self, _cmd, aClass) +{ with(self) +{ + return self === aClass; +} +},["BOOL","Class"]), new objj_method(sel_getUid("instancesRespondToSelector:"), function $CPObject__instancesRespondToSelector_(self, _cmd, aSelector) +{ with(self) +{ + return !!class_getInstanceMethod(self, aSelector); +} +},["BOOL","SEL"]), new objj_method(sel_getUid("instanceMethodForSelector:"), function $CPObject__instanceMethodForSelector_(self, _cmd, aSelector) +{ with(self) +{ + return class_getMethodImplementation(self, aSelector); +} +},["IMP","SEL"]), new objj_method(sel_getUid("description"), function $CPObject__description(self, _cmd) +{ with(self) +{ + return class_getName(isa); +} +},["CPString"]), new objj_method(sel_getUid("setVersion:"), function $CPObject__setVersion_(self, _cmd, aVersion) +{ with(self) +{ + version = aVersion; + return self; +} +},["id","int"]), new objj_method(sel_getUid("version"), function $CPObject__version(self, _cmd) +{ with(self) +{ + return version; +} +},["int"])]); +} +objj_class.prototype.toString = objj_object.prototype.toString = function() +{ + if (this.isa && class_getInstanceMethod(this.isa, "description") != NULL) + return objj_msgSend(this, "description"); + else + return String(this) + " (-description not implemented)"; +} + +p;15;CPObjJRuntime.jt;484;@STATIC;1.0;t;466;CPStringFromSelector= function(aSelector) +{ + return sel_getName(aSelector); +} +CPSelectorFromString= function(aSelectorName) +{ + return sel_registerName(aSelectorName); +} +CPClassFromString= function(aClassName) +{ + return objj_getClass(aClassName); +} +CPStringFromClass= function(aClass) +{ + return class_getName(aClass); +} +CPOrderedAscending = -1; +CPOrderedSame = 0; +CPOrderedDescending = 1; +CPNotFound = -1; +MIN = Math.min; +MAX = Math.max; +ABS = Math.abs; + +p;13;CPOperation.jt;6037;@STATIC;1.0;i;10;CPObject.jt;6003;objj_executeFile("CPObject.j", YES); +CPOperationQueuePriorityVeryLow = -8; +CPOperationQueuePriorityLow = -4; +CPOperationQueuePriorityNormal = 0; +CPOperationQueuePriorityHigh = 4; +CPOperationQueuePriorityVeryHigh = 8; +{var the_class = objj_allocateClassPair(CPObject, "CPOperation"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("operations"), new objj_ivar("_cancelled"), new objj_ivar("_executing"), new objj_ivar("_finished"), new objj_ivar("_ready"), new objj_ivar("_queuePriority"), new objj_ivar("_completionFunction"), new objj_ivar("_dependencies")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("main"), function $CPOperation__main(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("init"), function $CPOperation__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOperation").super_class }, "init")) + { + _cancelled = NO; + _executing = NO; + _finished = NO; + _ready = YES; + _dependencies = objj_msgSend(objj_msgSend(CPArray, "alloc"), "init"); + _queuePriority = CPOperationQueuePriorityNormal; + } + return self; +} +},["id"]), new objj_method(sel_getUid("start"), function $CPOperation__start(self, _cmd) +{ with(self) +{ + if (!_cancelled) + { + objj_msgSend(self, "willChangeValueForKey:", "isExecuting"); + _executing = YES; + objj_msgSend(self, "didChangeValueForKey:", "isExecuting"); + objj_msgSend(self, "main"); + if (_completionFunction) + { + _completionFunction(); + } + objj_msgSend(self, "willChangeValueForKey:", "isExecuting"); + _executing = NO; + objj_msgSend(self, "didChangeValueForKey:", "isExecuting"); + objj_msgSend(self, "willChangeValueForKey:", "isFinished"); + _finished = YES; + objj_msgSend(self, "didChangeValueForKey:", "isFinished"); + } +} +},["void"]), new objj_method(sel_getUid("isCancelled"), function $CPOperation__isCancelled(self, _cmd) +{ with(self) +{ + return _cancelled; +} +},["BOOL"]), new objj_method(sel_getUid("isExecuting"), function $CPOperation__isExecuting(self, _cmd) +{ with(self) +{ + return _executing; +} +},["BOOL"]), new objj_method(sel_getUid("isFinished"), function $CPOperation__isFinished(self, _cmd) +{ with(self) +{ + return _finished; +} +},["BOOL"]), new objj_method(sel_getUid("isConcurrent"), function $CPOperation__isConcurrent(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("isReady"), function $CPOperation__isReady(self, _cmd) +{ with(self) +{ + return _ready; +} +},["BOOL"]), new objj_method(sel_getUid("completionFunction"), function $CPOperation__completionFunction(self, _cmd) +{ with(self) +{ + return _completionFunction; +} +},["JSObject"]), new objj_method(sel_getUid("setCompletionFunction:"), function $CPOperation__setCompletionFunction_(self, _cmd, aJavaScriptFunction) +{ with(self) +{ + _completionFunction = aJavaScriptFunction; +} +},["void","JSObject"]), new objj_method(sel_getUid("addDependency:"), function $CPOperation__addDependency_(self, _cmd, anOperation) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "dependencies"); + objj_msgSend(anOperation, "addObserver:forKeyPath:options:context:", self, "isFinished", (CPKeyValueObservingOptionNew), NULL); + objj_msgSend(_dependencies, "addObject:", anOperation); + objj_msgSend(self, "didChangeValueForKey:", "dependencies"); + objj_msgSend(self, "_updateIsReadyState"); +} +},["void","CPOperation"]), new objj_method(sel_getUid("removeDependency:"), function $CPOperation__removeDependency_(self, _cmd, anOperation) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "dependencies"); + objj_msgSend(_dependencies, "removeObject:", anOperation); + objj_msgSend(anOperation, "removeObserver:forKeyPath:", self, "isFinished"); + objj_msgSend(self, "didChangeValueForKey:", "dependencies"); + objj_msgSend(self, "_updateIsReadyState"); +} +},["void","CPOperation"]), new objj_method(sel_getUid("dependencies"), function $CPOperation__dependencies(self, _cmd) +{ with(self) +{ + return _dependencies; +} +},["CPArray"]), new objj_method(sel_getUid("waitUntilFinished"), function $CPOperation__waitUntilFinished(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("cancel"), function $CPOperation__cancel(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "isCancelled"); + _cancelled = YES; + objj_msgSend(self, "didChangeValueForKey:", "isCancelled"); +} +},["void"]), new objj_method(sel_getUid("setQueuePriority:"), function $CPOperation__setQueuePriority_(self, _cmd, priority) +{ with(self) +{ + _queuePriority = priority; +} +},["void","int"]), new objj_method(sel_getUid("queuePriority"), function $CPOperation__queuePriority(self, _cmd) +{ with(self) +{ + return _queuePriority; +} +},["int"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $CPOperation__observeValueForKeyPath_ofObject_change_context_(self, _cmd, keyPath, object, change, context) +{ with(self) +{ + if (keyPath == "isFinished") + { + objj_msgSend(self, "_updateIsReadyState"); + } +} +},["void","CPString","id","CPDictionary","void"]), new objj_method(sel_getUid("_updateIsReadyState"), function $CPOperation___updateIsReadyState(self, _cmd) +{ with(self) +{ + var newReady = YES; + if (_dependencies && objj_msgSend(_dependencies, "count") > 0) + { + var i = 0; + for (i = 0; i < objj_msgSend(_dependencies, "count"); i++) + { + if (!objj_msgSend(objj_msgSend(_dependencies, "objectAtIndex:", i), "isFinished")) + { + newReady = NO; + } + } + } + if (newReady != _ready) + { + objj_msgSend(self, "willChangeValueForKey:", "isReady"); + _ready = newReady; + objj_msgSend(self, "didChangeValueForKey:", "isReady"); + } +} +},["void"])]); +} + +p;18;CPOperationQueue.jt;7953;@STATIC;1.0;i;21;CPFunctionOperation.ji;23;CPInvocationOperation.ji;10;CPObject.ji;13;CPOperation.jt;7847;objj_executeFile("CPFunctionOperation.j", YES); +objj_executeFile("CPInvocationOperation.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPOperation.j", YES); +var cpOperationMainQueue = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPOperationQueue"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_operations"), new objj_ivar("_suspended"), new objj_ivar("_name"), new objj_ivar("_timer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("name"), function $CPOperationQueue__name(self, _cmd) +{ with(self) +{ +return _name; +} +},["id"]), +new objj_method(sel_getUid("setName:"), function $CPOperationQueue__setName_(self, _cmd, newValue) +{ with(self) +{ +_name = newValue; +} +},["void","id"]), new objj_method(sel_getUid("init"), function $CPOperationQueue__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPOperationQueue").super_class }, "init")) + { + _operations = objj_msgSend(objj_msgSend(CPArray, "alloc"), "init"); + _suspended = NO; + _currentlyModifyingOps = NO; + _timer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", 0.01, self, sel_getUid("_runNextOpsInQueue"), nil, YES); + } + return self; +} +},["id"]), new objj_method(sel_getUid("_runNextOpsInQueue"), function $CPOperationQueue___runNextOpsInQueue(self, _cmd) +{ with(self) +{ + if (!_suspended && objj_msgSend(self, "operationCount") > 0) + { + var i = 0, + count = objj_msgSend(_operations, "count"); + for (; i < count; i++) + { + var op = objj_msgSend(_operations, "objectAtIndex:", i); + if (objj_msgSend(op, "isReady") && !objj_msgSend(op, "isCancelled") && !objj_msgSend(op, "isFinished") && !objj_msgSend(op, "isExecuting")) + { + objj_msgSend(op, "start"); + } + } + } +} +},["void"]), new objj_method(sel_getUid("_enableTimer:"), function $CPOperationQueue___enableTimer_(self, _cmd, enable) +{ with(self) +{ + if (!enable) + { + if (_timer) + { + objj_msgSend(_timer, "invalidate"); + _timer = nil; + } + } + else + { + if (!_timer) + { + _timer = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:", 0.01, self, sel_getUid("_runNextOpsInQueue"), nil, YES); + } + } +} +},["void","BOOL"]), new objj_method(sel_getUid("addOperation:"), function $CPOperationQueue__addOperation_(self, _cmd, anOperation) +{ with(self) +{ + objj_msgSend(self, "willChangeValueForKey:", "operations"); + objj_msgSend(self, "willChangeValueForKey:", "operationCount"); + objj_msgSend(_operations, "addObject:", anOperation); + objj_msgSend(self, "_sortOpsByPriority:", _operations); + objj_msgSend(self, "didChangeValueForKey:", "operations"); + objj_msgSend(self, "didChangeValueForKey:", "operationCount"); +} +},["void","CPOperation"]), new objj_method(sel_getUid("addOperations:waitUntilFinished:"), function $CPOperationQueue__addOperations_waitUntilFinished_(self, _cmd, ops, wait) +{ with(self) +{ + if (ops) + { + if (wait) + { + objj_msgSend(self, "_sortOpsByPriority:", ops); + objj_msgSend(self, "_runOpsSynchronously:", ops); + } + objj_msgSend(_operations, "addObjectsFromArray:", ops); + objj_msgSend(self, "_sortOpsByPriority:", _operations); + } +} +},["void","CPArray","BOOL"]), new objj_method(sel_getUid("addOperationWithFunction:"), function $CPOperationQueue__addOperationWithFunction_(self, _cmd, aFunction) +{ with(self) +{ + objj_msgSend(self, "addOperation:", objj_msgSend(CPFunctionOperation, "functionOperationWithFunction:", aFunction)); +} +},["void","JSObject"]), new objj_method(sel_getUid("operations"), function $CPOperationQueue__operations(self, _cmd) +{ with(self) +{ + return _operations; +} +},["CPArray"]), new objj_method(sel_getUid("operationCount"), function $CPOperationQueue__operationCount(self, _cmd) +{ with(self) +{ + if (_operations) + { + return objj_msgSend(_operations, "count"); + } + return 0; +} +},["int"]), new objj_method(sel_getUid("cancelAllOperations"), function $CPOperationQueue__cancelAllOperations(self, _cmd) +{ with(self) +{ + if (_operations) + { + var i = 0, + count = objj_msgSend(_operations, "count"); + for (; i < count; i++) + { + objj_msgSend(objj_msgSend(_operations, "objectAtIndex:", i), "cancel"); + } + } +} +},["void"]), new objj_method(sel_getUid("waitUntilAllOperationsAreFinished"), function $CPOperationQueue__waitUntilAllOperationsAreFinished(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_enableTimer:", NO); + objj_msgSend(self, "_runOpsSynchronously:", _operations); + if (!_suspended) + { + objj_msgSend(self, "_enableTimer:", YES); + } +} +},["void"]), new objj_method(sel_getUid("maxConcurrentOperationCount"), function $CPOperationQueue__maxConcurrentOperationCount(self, _cmd) +{ with(self) +{ + return 1; +} +},["int"]), new objj_method(sel_getUid("setSuspended:"), function $CPOperationQueue__setSuspended_(self, _cmd, suspend) +{ with(self) +{ + _suspended = suspend; + objj_msgSend(self, "_enableTimer:", !suspend); +} +},["void","BOOL"]), new objj_method(sel_getUid("isSuspended"), function $CPOperationQueue__isSuspended(self, _cmd) +{ with(self) +{ + return _suspended; +} +},["BOOL"]), new objj_method(sel_getUid("_sortOpsByPriority:"), function $CPOperationQueue___sortOpsByPriority_(self, _cmd, someOps) +{ with(self) +{ + if (someOps) + { + objj_msgSend(someOps, "sortUsingFunction:context:", function(lhs, rhs) + { + if (objj_msgSend(lhs, "queuePriority") < objj_msgSend(rhs, "queuePriority")) + { + return 1; + } + else + { + if (objj_msgSend(lhs, "queuePriority") > objj_msgSend(rhs, "queuePriority")) + { + return -1; + } + else + { + return 0; + } + } + }, nil); + } +} +},["void","CPArray"]), new objj_method(sel_getUid("_runOpsSynchronously:"), function $CPOperationQueue___runOpsSynchronously_(self, _cmd, ops) +{ with(self) +{ + if (ops) + { + var keepGoing = YES; + while (keepGoing) + { + var i = 0, + count = objj_msgSend(ops, "count"); + keepGoing = NO; + for (; i < count; i++) + { + var op = objj_msgSend(ops, "objectAtIndex:", i); + if (objj_msgSend(op, "isReady") && !objj_msgSend(op, "isCancelled") && !objj_msgSend(op, "isFinished") && !objj_msgSend(op, "isExecuting")) + { + objj_msgSend(op, "start"); + } + } + for (i = 0; i < count; i++) + { + var op = objj_msgSend(ops, "objectAtIndex:", i); + if (!objj_msgSend(op, "isFinished") && !objj_msgSend(op, "isCancelled")) + { + keepGoing = YES; + } + } + } + } +} +},["void","CPArray"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("mainQueue"), function $CPOperationQueue__mainQueue(self, _cmd) +{ with(self) +{ + if (!cpOperationMainQueue) + { + cpOperationMainQueue = objj_msgSend(objj_msgSend(CPOperationQueue, "alloc"), "init"); + objj_msgSend(cpOperationMainQueue, "setName:", "main"); + } + return cpOperationMainQueue; +} +},["CPOperationQueue"]), new objj_method(sel_getUid("currentQueue"), function $CPOperationQueue__currentQueue(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPOperationQueue, "mainQueue"); +} +},["CPOperationQueue"])]); +} + +p;29;CPPropertyListSerialization.jt;2204;@STATIC;1.0;i;10;CPObject.jt;2170;objj_executeFile("CPObject.j", YES); +CPPropertyListUnknownFormat = 0; +CPPropertyListOpenStepFormat = kCFPropertyListOpenStepFormat; +CPPropertyListXMLFormat_v1_0 = kCFPropertyListXMLFormat_v1_0; +CPPropertyListBinaryFormat_v1_0 = kCFPropertyListBinaryFormat_v1_0; +CPPropertyList280NorthFormat_v1_0 = kCFPropertyList280NorthFormat_v1_0; +{var the_class = objj_allocateClassPair(CPObject, "CPPropertyListSerialization"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(meta_class, [new objj_method(sel_getUid("dataFromPropertyList:format:"), function $CPPropertyListSerialization__dataFromPropertyList_format_(self, _cmd, aPlist, aFormat) +{ with(self) +{ + return CPPropertyListCreateData(aPlist, aFormat); +} +},["CPData","id","CPPropertyListFormat"]), new objj_method(sel_getUid("propertyListFromData:format:"), function $CPPropertyListSerialization__propertyListFromData_format_(self, _cmd, data, aFormat) +{ with(self) +{ + return CPPropertyListCreateFromData(data, aFormat); +} +},["id","CPData","CPPropertyListFormat"])]); +} +{ +var the_class = objj_getClass("CPPropertyListSerialization") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPPropertyListSerialization\""); +var meta_class = the_class.isa;class_addMethods(meta_class, [new objj_method(sel_getUid("dataFromPropertyList:format:errorDescription:"), function $CPPropertyListSerialization__dataFromPropertyList_format_errorDescription_(self, _cmd, aPlist, aFormat, anErrorString) +{ with(self) +{ + _CPReportLenientDeprecation(self, _cmd, sel_getUid("dataFromPropertyList:format:")); + return objj_msgSend(self, "dataFromPropertyList:format:", aPlist, aFormat); +} +},["CPData","id","CPPropertyListFormat","id"]), new objj_method(sel_getUid("propertyListFromData:format:errorDescription:"), function $CPPropertyListSerialization__propertyListFromData_format_errorDescription_(self, _cmd, data, aFormat, errorString) +{ with(self) +{ + _CPReportLenientDeprecation(self, _cmd, sel_getUid("propertyListFromData:format:")); + return objj_msgSend(self, "propertyListFromData:format:", data, aFormat); +} +},["id","CPData","CPPropertyListFormat","id"])]); +} + +p;9;CPProxy.jt;5133;@STATIC;1.0;i;13;CPException.ji;14;CPInvocation.ji;10;CPString.jt;5062;objj_executeFile("CPException.j", YES); +objj_executeFile("CPInvocation.j", YES); +objj_executeFile("CPString.j", YES); +{var the_class = objj_allocateClassPair(Nil, "CPProxy"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("methodSignatureForSelector:"), function $CPProxy__methodSignatureForSelector_(self, _cmd, aSelector) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "-methodSignatureForSelector: called on abstract CPProxy class."); +} +},["CPMethodSignature","SEL"]), new objj_method(sel_getUid("forwardInvocation:"), function $CPProxy__forwardInvocation_(self, _cmd, anInvocation) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "-forwardInvocation: called on abstract CPProxy class."); +} +},["void","CPInvocation"]), new objj_method(sel_getUid("forward::"), function $CPProxy__forward__(self, _cmd, aSelector, args) +{ with(self) +{ + return objj_msgSend(CPObject, "methodForSelector:", _cmd)(self, _cmd, aSelector, args); +} +},["void","SEL","marg_list"]), new objj_method(sel_getUid("hash"), function $CPProxy__hash(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "UID"); +} +},["unsigned"]), new objj_method(sel_getUid("UID"), function $CPProxy__UID(self, _cmd) +{ with(self) +{ + if (typeof self._UID === "undefined") + self._UID = objj_generateObjectUID(); + return _UID; +} +},["unsigned"]), new objj_method(sel_getUid("isEqual:"), function $CPProxy__isEqual_(self, _cmd, anObject) +{ with(self) +{ + return self === object; +} +},["BOOL","id"]), new objj_method(sel_getUid("self"), function $CPProxy__self(self, _cmd) +{ with(self) +{ + return self; +} +},["id"]), new objj_method(sel_getUid("class"), function $CPProxy__class(self, _cmd) +{ with(self) +{ + return isa; +} +},["Class"]), new objj_method(sel_getUid("superclass"), function $CPProxy__superclass(self, _cmd) +{ with(self) +{ + return class_getSuperclass(isa); +} +},["Class"]), new objj_method(sel_getUid("performSelector:"), function $CPProxy__performSelector_(self, _cmd, aSelector) +{ with(self) +{ + return objj_msgSend(self, aSelector); +} +},["id","SEL"]), new objj_method(sel_getUid("performSelector:withObject:"), function $CPProxy__performSelector_withObject_(self, _cmd, aSelector, anObject) +{ with(self) +{ + return objj_msgSend(self, aSelector, anObject); +} +},["id","SEL","id"]), new objj_method(sel_getUid("performSelector:withObject:withObject:"), function $CPProxy__performSelector_withObject_withObject_(self, _cmd, aSelector, anObject, anotherObject) +{ with(self) +{ + return objj_msgSend(self, aSelector, anObject, anotherObject); +} +},["id","SEL","id","id"]), new objj_method(sel_getUid("isProxy"), function $CPProxy__isProxy(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("isKindOfClass:"), function $CPProxy__isKindOfClass_(self, _cmd, aClass) +{ with(self) +{ + var signature = objj_msgSend(self, "methodSignatureForSelector:", _cmd), + invocation = objj_msgSend(CPInvocation, "invocationWithMethodSignature:", signature); + objj_msgSend(self, "forwardInvocation:", invocation); + return objj_msgSend(invocation, "returnValue"); +} +},["BOOL","Class"]), new objj_method(sel_getUid("isMemberOfClass:"), function $CPProxy__isMemberOfClass_(self, _cmd, aClass) +{ with(self) +{ + var signature = objj_msgSend(self, "methodSignatureForSelector:", _cmd), + invocation = objj_msgSend(CPInvocation, "invocationWithMethodSignature:", signature); + objj_msgSend(self, "forwardInvocation:", invocation); + return objj_msgSend(invocation, "returnValue"); +} +},["BOOL","Class"]), new objj_method(sel_getUid("respondsToSelector:"), function $CPProxy__respondsToSelector_(self, _cmd, aSelector) +{ with(self) +{ + var signature = objj_msgSend(self, "methodSignatureForSelector:", _cmd), + invocation = objj_msgSend(CPInvocation, "invocationWithMethodSignature:", signature); + objj_msgSend(self, "forwardInvocation:", invocation); + return objj_msgSend(invocation, "returnValue"); +} +},["BOOL","SEL"]), new objj_method(sel_getUid("description"), function $CPProxy__description(self, _cmd) +{ with(self) +{ + return "<" + class_getName(isa) + " 0x" + objj_msgSend(CPString, "stringWithHash:", objj_msgSend(self, "UID")) + ">"; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("load"), function $CPProxy__load(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("initialize"), function $CPProxy__initialize(self, _cmd) +{ with(self) +{ +} +},["void"]), new objj_method(sel_getUid("class"), function $CPProxy__class(self, _cmd) +{ with(self) +{ + return self; +} +},["Class"]), new objj_method(sel_getUid("alloc"), function $CPProxy__alloc(self, _cmd) +{ with(self) +{ + return class_createInstance(self); +} +},["id"]), new objj_method(sel_getUid("respondsToSelector:"), function $CPProxy__respondsToSelector_(self, _cmd, selector) +{ with(self) +{ + return !!class_getInstanceMethod(isa, aSelector); +} +},["BOOL","SEL"])]); +} + +p;9;CPRange.jt;1733;@STATIC;1.0;t;1714;CPMakeRange= function(location, length) +{ + return { location: location, length: length }; +} +CPCopyRange= function(aRange) +{ + return { location: aRange.location, length: aRange.length }; +} +CPMakeRangeCopy= function(aRange) +{ + return { location:aRange.location, length:aRange.length }; +} +CPEmptyRange= function(aRange) +{ + return aRange.length === 0; +} +CPMaxRange= function(aRange) +{ + return aRange.location + aRange.length; +} +CPEqualRanges= function(lhsRange, rhsRange) +{ + return ((lhsRange.location === rhsRange.location) && (lhsRange.length === rhsRange.length)); +} +CPLocationInRange= function(aLocation, aRange) +{ + return (aLocation >= aRange.location) && (aLocation < CPMaxRange(aRange)); +} +CPUnionRange= function(lhsRange, rhsRange) +{ + var location = MIN(lhsRange.location, rhsRange.location); + return CPMakeRange(location, MAX(CPMaxRange(lhsRange), CPMaxRange(rhsRange)) - location); +} +CPIntersectionRange= function(lhsRange, rhsRange) +{ + if(CPMaxRange(lhsRange) < rhsRange.location || CPMaxRange(rhsRange) < lhsRange.location) + return CPMakeRange(0, 0); + var location = MAX(lhsRange.location, rhsRange.location); + return CPMakeRange(location, MIN(CPMaxRange(lhsRange), CPMaxRange(rhsRange)) - location); +} +CPRangeInRange= function(lhsRange, rhsRange) +{ + return (lhsRange.location <= rhsRange.location && CPMaxRange(lhsRange) >= CPMaxRange(rhsRange)); +} +CPStringFromRange= function(aRange) +{ + return "{" + aRange.location + ", " + aRange.length + "}"; +} +CPRangeFromString= function(aString) +{ + var comma = aString.indexOf(','); + return { location:parseInt(aString.substr(1, comma - 1)), length:parseInt(aString.substring(comma + 1, aString.length)) }; +} + +p;11;CPRunLoop.jt;10673;@STATIC;1.0;i;9;CPArray.ji;10;CPObject.ji;10;CPString.jt;10610;objj_executeFile("CPArray.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPString.j", YES); +CPDefaultRunLoopMode = "CPDefaultRunLoopMode"; +_CPRunLoopPerformCompare= function(lhs, rhs) +{ + return objj_msgSend(rhs, "order") - objj_msgSend(lhs, "order"); +} +var _CPRunLoopPerformPool = [], + _CPRunLoopPerformPoolCapacity = 5; +{var the_class = objj_allocateClassPair(CPObject, "_CPRunLoopPerform"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_target"), new objj_ivar("_selector"), new objj_ivar("_argument"), new objj_ivar("_order"), new objj_ivar("_runLoopModes"), new objj_ivar("_isValid")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithSelector:target:argument:order:modes:"), function $_CPRunLoopPerform__initWithSelector_target_argument_order_modes_(self, _cmd, aSelector, aTarget, anArgument, anOrder, modes) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPRunLoopPerform").super_class }, "init"); + if (self) + { + _selector = aSelector; + _target = aTarget; + _argument = anArgument; + _order = anOrder; + _runLoopModes = modes; + _isValid = YES; + } + return self; +} +},["id","SEL","SEL","id","unsigned","CPArray"]), new objj_method(sel_getUid("selector"), function $_CPRunLoopPerform__selector(self, _cmd) +{ with(self) +{ + return _selector; +} +},["SEL"]), new objj_method(sel_getUid("target"), function $_CPRunLoopPerform__target(self, _cmd) +{ with(self) +{ + return _target; +} +},["id"]), new objj_method(sel_getUid("argument"), function $_CPRunLoopPerform__argument(self, _cmd) +{ with(self) +{ + return _argument; +} +},["id"]), new objj_method(sel_getUid("order"), function $_CPRunLoopPerform__order(self, _cmd) +{ with(self) +{ + return _order; +} +},["unsigned"]), new objj_method(sel_getUid("fireInMode:"), function $_CPRunLoopPerform__fireInMode_(self, _cmd, aRunLoopMode) +{ with(self) +{ + if (!_isValid) + return YES; + if (objj_msgSend(_runLoopModes, "containsObject:", aRunLoopMode)) + { + objj_msgSend(_target, "performSelector:withObject:", _selector, _argument); + return YES; + } + return NO; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("invalidate"), function $_CPRunLoopPerform__invalidate(self, _cmd) +{ with(self) +{ + _isValid = NO; +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("_poolPerform:"), function $_CPRunLoopPerform___poolPerform_(self, _cmd, aPerform) +{ with(self) +{ + if (!aPerform || _CPRunLoopPerformPool.length >= _CPRunLoopPerformPoolCapacity) + return; + _CPRunLoopPerformPool.push(aPerform); +} +},["void","_CPRunLoopPerform"]), new objj_method(sel_getUid("performWithSelector:target:argument:order:modes:"), function $_CPRunLoopPerform__performWithSelector_target_argument_order_modes_(self, _cmd, aSelector, aTarget, anArgument, anOrder, modes) +{ with(self) +{ + if (_CPRunLoopPerformPool.length) + { + var perform = _CPRunLoopPerformPool.pop(); + perform._target = aTarget; + perform._selector = aSelector; + perform._argument = anArgument; + perform._order = anOrder; + perform._runLoopModes = modes; + perform._isValid = YES; + return perform; + } + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithSelector:target:argument:order:modes:", aSelector, aTarget, anArgument, anOrder, modes); +} +},["_CPRunLoopPerform","SEL","id","id","unsigned","CPArray"])]); +} +var CPRunLoopLastNativeRunLoop = 0; +{var the_class = objj_allocateClassPair(CPObject, "CPRunLoop"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_runLoopLock"), new objj_ivar("_timersForModes"), new objj_ivar("_nativeTimersForModes"), new objj_ivar("_nextTimerFireDatesForModes"), new objj_ivar("_didAddTimer"), new objj_ivar("_effectiveDate"), new objj_ivar("_orderedPerforms"), new objj_ivar("_runLoopInsuranceTimer")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPRunLoop__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPRunLoop").super_class }, "init"); + if (self) + { + _orderedPerforms = []; + _timersForModes = {}; + _nativeTimersForModes = {}; + _nextTimerFireDatesForModes = {}; + } + return self; +} +},["id"]), new objj_method(sel_getUid("performSelector:target:argument:order:modes:"), function $CPRunLoop__performSelector_target_argument_order_modes_(self, _cmd, aSelector, aTarget, anArgument, anOrder, modes) +{ with(self) +{ + var perform = objj_msgSend(_CPRunLoopPerform, "performWithSelector:target:argument:order:modes:", aSelector, aTarget, anArgument, anOrder, modes), + count = _orderedPerforms.length; + while (count--) + if (anOrder < objj_msgSend(_orderedPerforms[count], "order")) + break; + _orderedPerforms.splice(count + 1, 0, perform); +} +},["void","SEL","id","id","int","CPArray"]), new objj_method(sel_getUid("cancelPerformSelector:target:argument:"), function $CPRunLoop__cancelPerformSelector_target_argument_(self, _cmd, aSelector, aTarget, anArgument) +{ with(self) +{ + var count = _orderedPerforms.length; + while (count--) + { + var perform = _orderedPerforms[count]; + if (objj_msgSend(perform, "selector") === aSelector && objj_msgSend(perform, "target") == aTarget && objj_msgSend(perform, "argument") == anArgument) + objj_msgSend(_orderedPerforms[count], "invalidate"); + } +} +},["void","SEL","id","id"]), new objj_method(sel_getUid("performSelectors"), function $CPRunLoop__performSelectors(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void"]), new objj_method(sel_getUid("addTimer:forMode:"), function $CPRunLoop__addTimer_forMode_(self, _cmd, aTimer, aMode) +{ with(self) +{ + if (_timersForModes[aMode]) + _timersForModes[aMode].push(aTimer); + else + _timersForModes[aMode] = [aTimer]; + _didAddTimer = YES; + if (!aTimer._lastNativeRunLoopsForModes) + aTimer._lastNativeRunLoopsForModes = {}; + aTimer._lastNativeRunLoopsForModes[aMode] = CPRunLoopLastNativeRunLoop; + if (objj_msgSend(CFBundle.environments(), "indexOfObject:", ("Browser")) !== CPNotFound) + { + if (!_runLoopInsuranceTimer) + _runLoopInsuranceTimer = window.setNativeTimeout(function() + { + objj_msgSend(self, "limitDateForMode:", CPDefaultRunLoopMode); + }, 0); + } +} +},["void","CPTimer","CPString"]), new objj_method(sel_getUid("limitDateForMode:"), function $CPRunLoop__limitDateForMode_(self, _cmd, aMode) +{ with(self) +{ + if (_runLoopLock) + return; + _runLoopLock = YES; + if (objj_msgSend(CFBundle.environments(), "indexOfObject:", ("Browser")) !== CPNotFound) + { + if (_runLoopInsuranceTimer) + { + window.clearNativeTimeout(_runLoopInsuranceTimer); + _runLoopInsuranceTimer = nil; + } + } + var now = _effectiveDate ? objj_msgSend(_effectiveDate, "laterDate:", objj_msgSend(CPDate, "date")) : objj_msgSend(CPDate, "date"), + nextFireDate = nil, + nextTimerFireDate = _nextTimerFireDatesForModes[aMode]; + if (_didAddTimer || nextTimerFireDate && nextTimerFireDate <= now) + { + _didAddTimer = NO; + if (_nativeTimersForModes[aMode] !== nil) + { + window.clearNativeTimeout(_nativeTimersForModes[aMode]); + _nativeTimersForModes[aMode] = nil; + } + var timers = _timersForModes[aMode], + index = timers.length; + _timersForModes[aMode] = nil; + while (index--) + { + var timer = timers[index]; + if (timer._lastNativeRunLoopsForModes[aMode] < CPRunLoopLastNativeRunLoop && timer._isValid && timer._fireDate <= now) + objj_msgSend(timer, "fire"); + if (timer._isValid) + nextFireDate = (nextFireDate === nil) ? timer._fireDate : objj_msgSend(nextFireDate, "earlierDate:", timer._fireDate); + else + { + timer._lastNativeRunLoopsForModes[aMode] = 0; + timers.splice(index, 1); + } + } + var newTimers = _timersForModes[aMode]; + if (newTimers && newTimers.length) + { + index = newTimers.length; + while (index--) + { + var timer = newTimers[index]; + if (objj_msgSend(timer, "isValid")) + nextFireDate = (nextFireDate === nil) ? timer._fireDate : objj_msgSend(nextFireDate, "earlierDate:", timer._fireDate); + else + newTimers.splice(index, 1); + } + _timersForModes[aMode] = newTimers.concat(timers); + } + else + _timersForModes[aMode] = timers; + _nextTimerFireDatesForModes[aMode] = nextFireDate; + if (_nextTimerFireDatesForModes[aMode] !== nil) + _nativeTimersForModes[aMode] = window.setNativeTimeout(function() { _effectiveDate = nextFireDate; _nativeTimersForModes[aMode] = nil; ++CPRunLoopLastNativeRunLoop; objj_msgSend(self, "limitDateForMode:", aMode); _effectiveDate = nil; }, MAX(0, objj_msgSend(nextFireDate, "timeIntervalSinceNow") * 1000)); + } + var performs = _orderedPerforms, + index = performs.length; + _orderedPerforms = []; + while (index--) + { + var perform = performs[index]; + if (objj_msgSend(perform, "fireInMode:", CPDefaultRunLoopMode)) + { + objj_msgSend(_CPRunLoopPerform, "_poolPerform:", perform); + performs.splice(index, 1); + } + } + if (_orderedPerforms.length) + { + _orderedPerforms = _orderedPerforms.concat(performs); + _orderedPerforms.sort(_CPRunLoopPerformCompare); + } + else + _orderedPerforms = performs; + _runLoopLock = NO; + return nextFireDate; +} +},["CPDate","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPRunLoop__initialize(self, _cmd) +{ with(self) +{ + if (self != objj_msgSend(CPRunLoop, "class")) + return; + CPMainRunLoop = objj_msgSend(objj_msgSend(CPRunLoop, "alloc"), "init"); +} +},["void"]), new objj_method(sel_getUid("currentRunLoop"), function $CPRunLoop__currentRunLoop(self, _cmd) +{ with(self) +{ + return CPMainRunLoop; +} +},["CPRunLoop"]), new objj_method(sel_getUid("mainRunLoop"), function $CPRunLoop__mainRunLoop(self, _cmd) +{ with(self) +{ + return CPMainRunLoop; +} +},["CPRunLoop"])]); +} + +p;11;CPScanner.jt;11465;@STATIC;1.0;I;27;Foundation/CPCharacterSet.jt;11413;objj_executeFile("Foundation/CPCharacterSet.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPScanner"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_string"), new objj_ivar("_locale"), new objj_ivar("_scanLocation"), new objj_ivar("_caseSensitive"), new objj_ivar("_charactersToBeSkipped")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithString:"), function $CPScanner__initWithString_(self, _cmd, aString) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScanner").super_class }, "init")) + { + _string = objj_msgSend(aString, "copy"); + _scanLocation = 0; + _charactersToBeSkipped = objj_msgSend(CPCharacterSet, "whitespaceCharacterSet"); + _caseSensitive = NO; + } + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("copy"), function $CPScanner__copy(self, _cmd) +{ with(self) +{ + var copy = objj_msgSend(objj_msgSend(CPScanner, "alloc"), "initWithString:", objj_msgSend(self, "string")); + objj_msgSend(copy, "setCharactersToBeSkipped:", objj_msgSend(self, "charactersToBeSkipped")); + objj_msgSend(copy, "setCaseSensitive:", objj_msgSend(self, "caseSensitive")); + objj_msgSend(copy, "setLocale:", objj_msgSend(self, "locale")); + objj_msgSend(copy, "setScanLocation:", objj_msgSend(self, "scanLocation")); + return copy; +} +},["id"]), new objj_method(sel_getUid("locale"), function $CPScanner__locale(self, _cmd) +{ with(self) +{ + return _locale; +} +},["CPDictionary"]), new objj_method(sel_getUid("setLocale:"), function $CPScanner__setLocale_(self, _cmd, aLocale) +{ with(self) +{ + _locale = aLocale; +} +},["void","CPDictionary"]), new objj_method(sel_getUid("setCaseSensitive:"), function $CPScanner__setCaseSensitive_(self, _cmd, flag) +{ with(self) +{ + _caseSensitive = flag; +} +},["void","BOOL"]), new objj_method(sel_getUid("caseSensitive"), function $CPScanner__caseSensitive(self, _cmd) +{ with(self) +{ + return _caseSensitive; +} +},["BOOL"]), new objj_method(sel_getUid("string"), function $CPScanner__string(self, _cmd) +{ with(self) +{ + return _string; +} +},["CPString"]), new objj_method(sel_getUid("charactersToBeSkipped"), function $CPScanner__charactersToBeSkipped(self, _cmd) +{ with(self) +{ + return _charactersToBeSkipped; +} +},["CPCharacterSet"]), new objj_method(sel_getUid("setCharactersToBeSkipped:"), function $CPScanner__setCharactersToBeSkipped_(self, _cmd, c) +{ with(self) +{ + _charactersToBeSkipped = c; +} +},["void","CPCharacterSet"]), new objj_method(sel_getUid("isAtEnd"), function $CPScanner__isAtEnd(self, _cmd) +{ with(self) +{ + return _scanLocation == _string.length; +} +},["BOOL"]), new objj_method(sel_getUid("scanLocation"), function $CPScanner__scanLocation(self, _cmd) +{ with(self) +{ + return _scanLocation; +} +},["int"]), new objj_method(sel_getUid("setScanLocation:"), function $CPScanner__setScanLocation_(self, _cmd, aLocation) +{ with(self) +{ + if (aLocation > _string.length) + aLocation = _string.length; + else if (aLocation < 0) + aLocation = 0; + _scanLocation = aLocation; +} +},["void","int"]), new objj_method(sel_getUid("_performScanWithSelector:withObject:into:"), function $CPScanner___performScanWithSelector_withObject_into_(self, _cmd, s, arg, ref) +{ with(self) +{ + var ret = objj_msgSend(self, "performSelector:withObject:", s, arg); + if (ref != nil) + ref(ret); + return ret != NULL; +} +},["BOOL","SEL","id","id"]), new objj_method(sel_getUid("scanCharactersFromSet:intoString:"), function $CPScanner__scanCharactersFromSet_intoString_(self, _cmd, scanSet, ref) +{ with(self) +{ + return objj_msgSend(self, "_performScanWithSelector:withObject:into:", sel_getUid("scanCharactersFromSet:"), scanSet, ref); +} +},["BOOL","CPCharacterSet","id"]), new objj_method(sel_getUid("scanCharactersFromSet:"), function $CPScanner__scanCharactersFromSet_(self, _cmd, scanSet) +{ with(self) +{ + return objj_msgSend(self, "_scanWithSet:breakFlag:", scanSet, NO); +} +},["CPString","CPCharacterSet"]), new objj_method(sel_getUid("scanUpToCharactersFromSet:intoString:"), function $CPScanner__scanUpToCharactersFromSet_intoString_(self, _cmd, scanSet, ref) +{ with(self) +{ + return objj_msgSend(self, "_performScanWithSelector:withObject:into:", sel_getUid("scanUpToCharactersFromSet:"), scanSet, ref); +} +},["BOOL","CPCharacterSet","id"]), new objj_method(sel_getUid("scanUpToCharactersFromSet:"), function $CPScanner__scanUpToCharactersFromSet_(self, _cmd, scanSet) +{ with(self) +{ + return objj_msgSend(self, "_scanWithSet:breakFlag:", scanSet, YES); +} +},["CPString","CPCharacterSet"]), new objj_method(sel_getUid("_scanWithSet:breakFlag:"), function $CPScanner___scanWithSet_breakFlag_(self, _cmd, scanSet, stop) +{ with(self) +{ + if (objj_msgSend(self, "isAtEnd")) + return nil; + var current = objj_msgSend(self, "scanLocation"); + var str = nil; + while (current < _string.length) + { + var c = (_string.charAt(current)); + if (objj_msgSend(scanSet, "characterIsMember:", c) == stop) + break; + if (!objj_msgSend(_charactersToBeSkipped, "characterIsMember:", c)) + { + if (!str) + str = ''; + str += c; + } + current++; + } + if (str) + objj_msgSend(self, "setScanLocation:", current); + return str; +} +},["CPString","CPCharacterSet","BOOL"]), new objj_method(sel_getUid("_movePastCharactersToBeSkipped"), function $CPScanner___movePastCharactersToBeSkipped(self, _cmd) +{ with(self) +{ + var current = objj_msgSend(self, "scanLocation"); + var string = objj_msgSend(self, "string"); + var toSkip = objj_msgSend(self, "charactersToBeSkipped"); + while (current < string.length) + { + if (!objj_msgSend(toSkip, "characterIsMember:", string.charAt(current))) + break; + current++; + } + objj_msgSend(self, "setScanLocation:", current); +} +},["void"]), new objj_method(sel_getUid("scanString:intoString:"), function $CPScanner__scanString_intoString_(self, _cmd, aString, ref) +{ with(self) +{ + return objj_msgSend(self, "_performScanWithSelector:withObject:into:", sel_getUid("scanString:"), aString, ref); +} +},["BOOL","CPString","id"]), new objj_method(sel_getUid("scanString:"), function $CPScanner__scanString_(self, _cmd, s) +{ with(self) +{ + objj_msgSend(self, "_movePastCharactersToBeSkipped"); + if (objj_msgSend(self, "isAtEnd")) + return nil; + var currentStr = objj_msgSend(self, "string").substr(objj_msgSend(self, "scanLocation"), s.length); + if ((_caseSensitive && currentStr != s) || (!_caseSensitive && (currentStr.toLowerCase() != s.toLowerCase()))) + { + return nil; + } + else + { + objj_msgSend(self, "setScanLocation:", objj_msgSend(self, "scanLocation") + s.length); + return s; + } +} +},["CPString","CPString"]), new objj_method(sel_getUid("scanUpToString:intoString:"), function $CPScanner__scanUpToString_intoString_(self, _cmd, aString, ref) +{ with(self) +{ + return objj_msgSend(self, "_performScanWithSelector:withObject:into:", sel_getUid("scanUpToString:"), aString, ref); +} +},["BOOL","CPString","id"]), new objj_method(sel_getUid("scanUpToString:"), function $CPScanner__scanUpToString_(self, _cmd, s) +{ with(self) +{ + var current = objj_msgSend(self, "scanLocation"), str = objj_msgSend(self, "string"); + var captured = nil; + while (current < str.length) + { + var currentStr = str.substr(current, s.length); + if (currentStr == s || (!_caseSensitive && currentStr.toLowerCase() == s.toLowerCase())) + break; + if (!captured) + captured = ''; + captured += str.charAt(current); + current++; + } + if (captured) + objj_msgSend(self, "setScanLocation:", current); + if (objj_msgSend(self, "charactersToBeSkipped")) + captured = objj_msgSend(captured, "_stringByTrimmingCharactersInSet:options:", objj_msgSend(self, "charactersToBeSkipped"), _CPCharacterSetTrimAtBeginning); + return captured; +} +},["CPString","CPString"]), new objj_method(sel_getUid("scanFloat"), function $CPScanner__scanFloat(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_movePastCharactersToBeSkipped"); + var str = objj_msgSend(self, "string"), current = objj_msgSend(self, "scanLocation"); + if (objj_msgSend(self, "isAtEnd")) + return 0; + var s = str.substring(current, str.length); + var f = parseFloat(s); + if (f) + { + var pos, foundDash = NO; + var separatorCode = 45; + for(pos = current; pos < current + str.length; pos++) + { + var charCode = str.charCodeAt(pos); + if (charCode == separatorCode) + { + if (foundDash == YES) + break; + foundDash = YES; + } + else if (charCode < 48 || charCode > 57 || (charCode == 45 && pos != current)) + break; + } + objj_msgSend(self, "setScanLocation:", pos); + return f; + } + return nil; +} +},["float"]), new objj_method(sel_getUid("scanInt"), function $CPScanner__scanInt(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_movePastCharactersToBeSkipped"); + var str = objj_msgSend(self, "string"), current = objj_msgSend(self, "scanLocation"); + if (objj_msgSend(self, "isAtEnd")) + return 0; + var s = str.substring(current, str.length); + var i = parseInt(s); + if (i) + { + var pos, foundDash = NO; + for (pos = current; pos < current + str.length; pos++) + { + var charCode = str.charCodeAt(pos); + if (charCode == 46) + { + if (foundDash == YES) + break; + foundDash = YES; + } + else if (charCode < 48 || charCode > 57 || (charCode == 45 && pos != current)) + break; + } + objj_msgSend(self, "setScanLocation:", pos); + return i; + } + return nil; +} +},["int"]), new objj_method(sel_getUid("scanInt:"), function $CPScanner__scanInt_(self, _cmd, intoInt) +{ with(self) +{ + return objj_msgSend(self, "_performScanWithSelector:withObject:into:", sel_getUid("scanInt"), nil, intoInt); +} +},["BOOL","int"]), new objj_method(sel_getUid("scanFloat:"), function $CPScanner__scanFloat_(self, _cmd, intoFloat) +{ with(self) +{ + return objj_msgSend(self, "_performScanWithSelector:withObject:into:", sel_getUid("scanFloat"), nil, intoFloat); +} +},["BOOL","float"]), new objj_method(sel_getUid("scanDouble:"), function $CPScanner__scanDouble_(self, _cmd, intoDouble) +{ with(self) +{ + return objj_msgSend(self, "scanFloat:", intoDouble); +} +},["BOOL","float"]), new objj_method(sel_getUid("description"), function $CPScanner__description(self, _cmd) +{ with(self) +{ + return objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPScanner").super_class }, "description") + " {" + CPStringFromClass(objj_msgSend(self, "class")) + ", state = '" + (objj_msgSend(self, "string").substr(0, _scanLocation) + "{{ SCAN LOCATION ->}}" + objj_msgSend(self, "string").substr(_scanLocation)) + "'; }"; +} +},["void"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("scannerWithString:"), function $CPScanner__scannerWithString_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithString:", aString); +} +},["id","CPString"])]); +} + +p;7;CPSet.jt;11707;@STATIC;1.0;i;9;CPArray.ji;14;CPEnumerator.ji;10;CPNumber.ji;10;CPObject.jt;11625;objj_executeFile("CPArray.j", YES); +objj_executeFile("CPEnumerator.j", YES); +objj_executeFile("CPNumber.j", YES); +objj_executeFile("CPObject.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPSet"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_contents"), new objj_ivar("_count")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPSet__init(self, _cmd) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSet").super_class }, "init")) + { + _count = 0; + _contents = {}; + } + return self; +} +},["id"]), new objj_method(sel_getUid("initWithArray:"), function $CPSet__initWithArray_(self, _cmd, anArray) +{ with(self) +{ + if (self = objj_msgSend(self, "init")) + { + var count = anArray.length; + while (count--) + objj_msgSend(self, "addObject:", anArray[count]); + } + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("initWithObjects:count:"), function $CPSet__initWithObjects_count_(self, _cmd, objects, count) +{ with(self) +{ + return objj_msgSend(self, "initWithArray:", objects.splice(0, count)); +} +},["id","id","unsigned"]), new objj_method(sel_getUid("initWithObjects:"), function $CPSet__initWithObjects_(self, _cmd, anObject) +{ with(self) +{ + if (self = objj_msgSend(self, "init")) + { + var argLength = arguments.length, + i = 2; + for (; i < argLength && (argument = arguments[i]) != nil; ++i) + objj_msgSend(self, "addObject:", argument); + } + return self; +} +},["id","id"]), new objj_method(sel_getUid("initWithSet:"), function $CPSet__initWithSet_(self, _cmd, aSet) +{ with(self) +{ + return objj_msgSend(self, "initWithSet:copyItems:", aSet, NO); +} +},["id","CPSet"]), new objj_method(sel_getUid("initWithSet:copyItems:"), function $CPSet__initWithSet_copyItems_(self, _cmd, aSet, shouldCopyItems) +{ with(self) +{ + self = objj_msgSend(self, "init"); + if (!aSet) + return self; + var contents = aSet._contents, + property; + for (property in contents) + { + if (contents.hasOwnProperty(property)) + { + if (shouldCopyItems) + objj_msgSend(self, "addObject:", objj_msgSend(contents[property], "copy")); + else + objj_msgSend(self, "addObject:", contents[property]); + } + } + return self; +} +},["id","CPSet","BOOL"]), new objj_method(sel_getUid("allObjects"), function $CPSet__allObjects(self, _cmd) +{ with(self) +{ + var array = [], + property; + for (property in _contents) + { + if (_contents.hasOwnProperty(property)) + array.push(_contents[property]); + } + return array; +} +},["CPArray"]), new objj_method(sel_getUid("anyObject"), function $CPSet__anyObject(self, _cmd) +{ with(self) +{ + var property; + for (property in _contents) + { + if (_contents.hasOwnProperty(property)) + return _contents[property]; + } + return nil; +} +},["id"]), new objj_method(sel_getUid("containsObject:"), function $CPSet__containsObject_(self, _cmd, anObject) +{ with(self) +{ + var obj = _contents[objj_msgSend(anObject, "UID")]; + if (obj !== undefined && objj_msgSend(obj, "isEqual:", anObject)) + return YES; + return NO; +} +},["BOOL","id"]), new objj_method(sel_getUid("count"), function $CPSet__count(self, _cmd) +{ with(self) +{ + return _count; +} +},["unsigned"]), new objj_method(sel_getUid("intersectsSet:"), function $CPSet__intersectsSet_(self, _cmd, aSet) +{ with(self) +{ + if (self === aSet) + return YES; + var objects = objj_msgSend(aSet, "allObjects"), + count = objj_msgSend(objects, "count"); + while (count--) + if (objj_msgSend(self, "containsObject:", objects[count])) + return YES; + return NO; +} +},["BOOL","CPSet"]), new objj_method(sel_getUid("isEqualToSet:"), function $CPSet__isEqualToSet_(self, _cmd, set) +{ with(self) +{ + return self === set || (objj_msgSend(self, "count") === objj_msgSend(set, "count") && objj_msgSend(set, "isSubsetOfSet:", self)); +} +},["BOOL","CPSet"]), new objj_method(sel_getUid("isSubsetOfSet:"), function $CPSet__isSubsetOfSet_(self, _cmd, set) +{ with(self) +{ + var items = objj_msgSend(self, "allObjects"), + i = 0, + count = items.length; + for (; i < count; i++) + { + if (!objj_msgSend(set, "containsObject:", items[i])) + return NO; + } + return YES; +} +},["BOOL","CPSet"]), new objj_method(sel_getUid("makeObjectsPerformSelector:"), function $CPSet__makeObjectsPerformSelector_(self, _cmd, aSelector) +{ with(self) +{ + objj_msgSend(self, "makeObjectsPerformSelector:withObject:", aSelector, nil); +} +},["void","SEL"]), new objj_method(sel_getUid("makeObjectsPerformSelector:withObject:"), function $CPSet__makeObjectsPerformSelector_withObject_(self, _cmd, aSelector, argument) +{ with(self) +{ + var items = objj_msgSend(self, "allObjects"), + i = 0, + count = items.length; + for (; i < count; i++) + { + objj_msgSend(items[i], "performSelector:withObject:", aSelector, argument); + } +} +},["void","SEL","id"]), new objj_method(sel_getUid("member:"), function $CPSet__member_(self, _cmd, object) +{ with(self) +{ + if (objj_msgSend(self, "containsObject:", object)) + return object; + return nil; +} +},["id","id"]), new objj_method(sel_getUid("objectEnumerator"), function $CPSet__objectEnumerator(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "allObjects"), "objectEnumerator"); +} +},["CPEnumerator"]), new objj_method(sel_getUid("initWithCapacity:"), function $CPSet__initWithCapacity_(self, _cmd, numItems) +{ with(self) +{ + self = objj_msgSend(self, "init"); + return self; +} +},["id","unsigned"]), new objj_method(sel_getUid("setSet:"), function $CPSet__setSet_(self, _cmd, set) +{ with(self) +{ + objj_msgSend(self, "removeAllObjects"); + objj_msgSend(self, "addObjectsFromArray:", objj_msgSend(set, "allObjects")); +} +},["void","CPSet"]), new objj_method(sel_getUid("addObject:"), function $CPSet__addObject_(self, _cmd, anObject) +{ with(self) +{ + if (objj_msgSend(self, "containsObject:", anObject)) + return; + _contents[objj_msgSend(anObject, "UID")] = anObject; + _count++; +} +},["void","id"]), new objj_method(sel_getUid("addObjectsFromArray:"), function $CPSet__addObjectsFromArray_(self, _cmd, objects) +{ with(self) +{ + var count = objj_msgSend(objects, "count"); + while (count--) + objj_msgSend(self, "addObject:", objects[count]); +} +},["void","CPArray"]), new objj_method(sel_getUid("removeObject:"), function $CPSet__removeObject_(self, _cmd, anObject) +{ with(self) +{ + if (objj_msgSend(self, "containsObject:", anObject)) + { + delete _contents[objj_msgSend(anObject, "UID")]; + _count--; + } +} +},["void","id"]), new objj_method(sel_getUid("removeObjectsInArray:"), function $CPSet__removeObjectsInArray_(self, _cmd, objects) +{ with(self) +{ + var count = objj_msgSend(objects, "count"); + while (count--) + objj_msgSend(self, "removeObject:", objects[count]); +} +},["void","CPArray"]), new objj_method(sel_getUid("removeAllObjects"), function $CPSet__removeAllObjects(self, _cmd) +{ with(self) +{ + _contents = {}; + _count = 0; +} +},["void"]), new objj_method(sel_getUid("intersectSet:"), function $CPSet__intersectSet_(self, _cmd, set) +{ with(self) +{ + var items = objj_msgSend(self, "allObjects"), + i = 0, + count = items.length; + for (; i < count; i++) + { + if (!objj_msgSend(set, "containsObject:", items[i])) + objj_msgSend(self, "removeObject:", items[i]); + } +} +},["void","CPSet"]), new objj_method(sel_getUid("minusSet:"), function $CPSet__minusSet_(self, _cmd, set) +{ with(self) +{ + var items = objj_msgSend(set, "allObjects"), + i = 0, + count = items.length; + for (; i < count; i++) + { + if (objj_msgSend(self, "containsObject:", items[i])) + objj_msgSend(self, "removeObject:", items[i]); + } +} +},["void","CPSet"]), new objj_method(sel_getUid("unionSet:"), function $CPSet__unionSet_(self, _cmd, set) +{ with(self) +{ + var items = objj_msgSend(set, "allObjects"), + i = 0, + count = items.length; + for (; i < count; i++) + { + objj_msgSend(self, "addObject:", items[i]); + } +} +},["void","CPSet"]), new objj_method(sel_getUid("description"), function $CPSet__description(self, _cmd) +{ with(self) +{ + return "{(" + objj_msgSend(self, "allObjects").join(", ") + ")}"; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("set"), function $CPSet__set(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("setWithArray:"), function $CPSet__setWithArray_(self, _cmd, array) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithArray:", array); +} +},["id","CPArray"]), new objj_method(sel_getUid("setWithObject:"), function $CPSet__setWithObject_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithArray:", [anObject]); +} +},["id","id"]), new objj_method(sel_getUid("setWithObjects:count:"), function $CPSet__setWithObjects_count_(self, _cmd, objects, count) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithObjects:count:", objects, count); +} +},["id","id","unsigned"]), new objj_method(sel_getUid("setWithObjects:"), function $CPSet__setWithObjects_(self, _cmd, anObject) +{ with(self) +{ + var set = objj_msgSend(objj_msgSend(self, "alloc"), "init"), + argLength = arguments.length, + i = 2; + for (; i < argLength && ((argument = arguments[i]) !== nil); ++i) + objj_msgSend(set, "addObject:", argument); + return set; +} +},["id","id"]), new objj_method(sel_getUid("setWithSet:"), function $CPSet__setWithSet_(self, _cmd, set) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithSet:", set); +} +},["id","CPSet"]), new objj_method(sel_getUid("setWithCapacity:"), function $CPSet__setWithCapacity_(self, _cmd, numItems) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithCapacity:", numItems); +} +},["id","unsigned"])]); +} +{ +var the_class = objj_getClass("CPSet") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSet\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("copy"), function $CPSet__copy(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPSet, "alloc"), "initWithSet:", self); +} +},["id"]), new objj_method(sel_getUid("mutableCopy"), function $CPSet__mutableCopy(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "copy"); +} +},["id"])]); +} +var CPSetObjectsKey = "CPSetObjectsKey"; +{ +var the_class = objj_getClass("CPSet") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSet\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPSet__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "initWithArray:", objj_msgSend(aCoder, "decodeObjectForKey:", CPSetObjectsKey)); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPSet__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", objj_msgSend(self, "allObjects"), CPSetObjectsKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPSet, "CPMutableSet"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +} + +p;18;CPSortDescriptor.jt;4443;@STATIC;1.0;i;10;CPObject.ji;15;CPObjJRuntime.jt;4389;objj_executeFile("CPObject.j", YES); +objj_executeFile("CPObjJRuntime.j", YES); +CPOrderedAscending = -1; +CPOrderedSame = 0; +CPOrderedDescending = 1; +{var the_class = objj_allocateClassPair(CPObject, "CPSortDescriptor"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_key"), new objj_ivar("_selector"), new objj_ivar("_ascending")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithKey:ascending:"), function $CPSortDescriptor__initWithKey_ascending_(self, _cmd, aKey, isAscending) +{ with(self) +{ + return objj_msgSend(self, "initWithKey:ascending:selector:", aKey, isAscending, sel_getUid("compare:")); +} +},["id","CPString","BOOL"]), new objj_method(sel_getUid("initWithKey:ascending:selector:"), function $CPSortDescriptor__initWithKey_ascending_selector_(self, _cmd, aKey, isAscending, aSelector) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSortDescriptor").super_class }, "init"); + if (self) + { + _key = aKey; + _ascending = isAscending; + _selector = aSelector; + } + return self; +} +},["id","CPString","BOOL","SEL"]), new objj_method(sel_getUid("ascending"), function $CPSortDescriptor__ascending(self, _cmd) +{ with(self) +{ + return _ascending; +} +},["BOOL"]), new objj_method(sel_getUid("key"), function $CPSortDescriptor__key(self, _cmd) +{ with(self) +{ + return _key; +} +},["CPString"]), new objj_method(sel_getUid("selector"), function $CPSortDescriptor__selector(self, _cmd) +{ with(self) +{ + return _selector; +} +},["SEL"]), new objj_method(sel_getUid("compareObject:withObject:"), function $CPSortDescriptor__compareObject_withObject_(self, _cmd, lhsObject, rhsObject) +{ with(self) +{ + return (_ascending ? 1 : -1) * objj_msgSend(objj_msgSend(lhsObject, "valueForKeyPath:", _key), "performSelector:withObject:", _selector, objj_msgSend(rhsObject, "valueForKeyPath:", _key)); +} +},["CPComparisonResult","id","id"]), new objj_method(sel_getUid("reversedSortDescriptor"), function $CPSortDescriptor__reversedSortDescriptor(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(objj_msgSend(self, "class"), "alloc"), "initWithKey:ascending:selector:", _key, !_ascending, _selector); +} +},["id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sortDescriptorWithKey:ascending:"), function $CPSortDescriptor__sortDescriptorWithKey_ascending_(self, _cmd, aKey, isAscending) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithKey:ascending:", aKey, isAscending); +} +},["id","CPString","BOOL"]), new objj_method(sel_getUid("sortDescriptorWithKey:ascending:selector:"), function $CPSortDescriptor__sortDescriptorWithKey_ascending_selector_(self, _cmd, aKey, isAscending, aSelector) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithKey:ascending:selector:", aKey, isAscending, aSelector); +} +},["id","CPString","BOOL","SEL"])]); +} +var CPSortDescriptorKeyKey = "CPSortDescriptorKeyKey", + CPSortDescriptorAscendingKey = "CPSortDescriptorAscendingKey", + CPSortDescriptorSelectorKey = "CPSortDescriptorSelectorKey"; +{ +var the_class = objj_getClass("CPSortDescriptor") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSortDescriptor\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPSortDescriptor__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + if (self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPSortDescriptor").super_class }, "init")) + { + _key = objj_msgSend(aCoder, "decodeObjectForKey:", CPSortDescriptorKeyKey); + _ascending = objj_msgSend(aCoder, "decodeBoolForKey:", CPSortDescriptorAscendingKey); + _selector = CPSelectorFromString(objj_msgSend(aCoder, "decodeObjectForKey:", CPSortDescriptorSelectorKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPSortDescriptor__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _key, CPSortDescriptorKeyKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _ascending, CPSortDescriptorAscendingKey); + objj_msgSend(aCoder, "encodeObject:forKey:", CPStringFromSelector(_selector), CPSortDescriptorSelectorKey); +} +},["void","CPCoder"])]); +} + +p;10;CPString.jt;17360;@STATIC;1.0;i;13;CPException.ji;10;CPObject.ji;18;CPSortDescriptor.ji;9;CPValue.jt;17271;objj_executeFile("CPException.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPSortDescriptor.j", YES); +objj_executeFile("CPValue.j", YES); +CPCaseInsensitiveSearch = 1; +CPLiteralSearch = 2; +CPBackwardsSearch = 4; +CPAnchoredSearch = 8; +CPNumericSearch = 64; +CPDiacriticInsensitiveSearch = 128; +var CPStringUIDs = new CFMutableDictionary(); +var CPStringRegexSpecialCharacters = [ + '/', '.', '*', '+', '?', '|', '$', '^', + '(', ')', '[', ']', '{', '}', '\\' + ], + CPStringRegexEscapeExpression = new RegExp("(\\" + CPStringRegexSpecialCharacters.join("|\\") + ")", 'g'), + CPStringRegexTrimWhitespace = new RegExp("(^\\s+|\\s+$)", 'g'); +{var the_class = objj_allocateClassPair(CPObject, "CPString"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithString:"), function $CPString__initWithString_(self, _cmd, aString) +{ with(self) +{ + return String(aString); +} +},["id","CPString"]), new objj_method(sel_getUid("initWithFormat:"), function $CPString__initWithFormat_(self, _cmd, format) +{ with(self) +{ + if (!format) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "initWithFormat: the format can't be 'nil'"); + self = ObjectiveJ.sprintf.apply(this, Array.prototype.slice.call(arguments, 2)); + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("description"), function $CPString__description(self, _cmd) +{ with(self) +{ + return self; +} +},["CPString"]), new objj_method(sel_getUid("length"), function $CPString__length(self, _cmd) +{ with(self) +{ + return length; +} +},["int"]), new objj_method(sel_getUid("characterAtIndex:"), function $CPString__characterAtIndex_(self, _cmd, anIndex) +{ with(self) +{ + return charAt(anIndex); +} +},["CPString","unsigned"]), new objj_method(sel_getUid("stringByAppendingFormat:"), function $CPString__stringByAppendingFormat_(self, _cmd, format) +{ with(self) +{ + if (!format) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "initWithFormat: the format can't be 'nil'"); + return self + ObjectiveJ.sprintf.apply(this, Array.prototype.slice.call(arguments, 2)); +} +},["CPString","CPString"]), new objj_method(sel_getUid("stringByAppendingString:"), function $CPString__stringByAppendingString_(self, _cmd, aString) +{ with(self) +{ + return self + aString; +} +},["CPString","CPString"]), new objj_method(sel_getUid("stringByPaddingToLength:withString:startingAtIndex:"), function $CPString__stringByPaddingToLength_withString_startingAtIndex_(self, _cmd, aLength, aString, anIndex) +{ with(self) +{ + if (length == aLength) + return self; + if (aLength < length) + return substr(0, aLength); + var string = self, + substring = aString.substring(anIndex), + difference = aLength - length; + while ((difference -= substring.length) >= 0) + string += substring; + if (-difference < substring.length) + string += substring.substring(0, -difference); + return string; +} +},["CPString","unsigned","CPString","unsigned"]), new objj_method(sel_getUid("componentsSeparatedByString:"), function $CPString__componentsSeparatedByString_(self, _cmd, aString) +{ with(self) +{ + return split(aString); +} +},["CPArray","CPString"]), new objj_method(sel_getUid("substringFromIndex:"), function $CPString__substringFromIndex_(self, _cmd, anIndex) +{ with(self) +{ + return substr(anIndex); +} +},["CPString","unsigned"]), new objj_method(sel_getUid("substringWithRange:"), function $CPString__substringWithRange_(self, _cmd, aRange) +{ with(self) +{ + return substr(aRange.location, aRange.length); +} +},["CPString","CPRange"]), new objj_method(sel_getUid("substringToIndex:"), function $CPString__substringToIndex_(self, _cmd, anIndex) +{ with(self) +{ + return substring(0, anIndex); +} +},["CPString","unsigned"]), new objj_method(sel_getUid("rangeOfString:"), function $CPString__rangeOfString_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(self, "rangeOfString:options:", aString, 0); +} +},["CPRange","CPString"]), new objj_method(sel_getUid("rangeOfString:options:"), function $CPString__rangeOfString_options_(self, _cmd, aString, aMask) +{ with(self) +{ + return objj_msgSend(self, "rangeOfString:options:range:", aString, aMask, nil); +} +},["CPRange","CPString","int"]), new objj_method(sel_getUid("rangeOfString:options:range:"), function $CPString__rangeOfString_options_range_(self, _cmd, aString, aMask, aRange) +{ with(self) +{ + var string = (aRange == nil) ? self : objj_msgSend(self, "substringWithRange:", aRange), + location = CPNotFound; + if (aMask & CPCaseInsensitiveSearch) + { + string = string.toLowerCase(); + aString = aString.toLowerCase(); + } + if (aMask & CPBackwardsSearch) + location = string.lastIndexOf(aString, aMask & CPAnchoredSearch ? length - aString.length : 0); + else if (aMask & CPAnchoredSearch) + location = string.substr(0, aString.length).indexOf(aString) != CPNotFound ? 0 : CPNotFound; + else + location = string.indexOf(aString); + return CPMakeRange(location, location == CPNotFound ? 0 : aString.length); +} +},["CPRange","CPString","int","CPrange"]), new objj_method(sel_getUid("stringByEscapingRegexControlCharacters"), function $CPString__stringByEscapingRegexControlCharacters(self, _cmd) +{ with(self) +{ + return self.replace(CPStringRegexEscapeExpression, "\\$1"); +} +},["CPString"]), new objj_method(sel_getUid("stringByReplacingOccurrencesOfString:withString:"), function $CPString__stringByReplacingOccurrencesOfString_withString_(self, _cmd, target, replacement) +{ with(self) +{ + return self.replace(new RegExp(objj_msgSend(target, "stringByEscapingRegexControlCharacters"), "g"), replacement); +} +},["CPString","CPString","CPString"]), new objj_method(sel_getUid("stringByReplacingOccurrencesOfString:withString:options:range:"), function $CPString__stringByReplacingOccurrencesOfString_withString_options_range_(self, _cmd, target, replacement, options, searchRange) +{ with(self) +{ + var start = substring(0, searchRange.location), + stringSegmentToSearch = substr(searchRange.location, searchRange.length), + end = substring(searchRange.location + searchRange.length, self.length), + target = objj_msgSend(target, "stringByEscapingRegexControlCharacters"), + regExp; + if (options & CPCaseInsensitiveSearch) + regExp = new RegExp(target, "gi"); + else + regExp = new RegExp(target, "g"); + return start + '' + stringSegmentToSearch.replace(regExp, replacement) + '' + end; +} +},["CPString","CPString","CPString","int","CPRange"]), new objj_method(sel_getUid("stringByReplacingCharactersInRange:withString:"), function $CPString__stringByReplacingCharactersInRange_withString_(self, _cmd, range, replacement) +{ with(self) +{ + return '' + substring(0, range.location) + replacement + substring(range.location + range.length, self.length); +} +},["CPString","CPRange","CPString"]), new objj_method(sel_getUid("stringByTrimmingWhitespace"), function $CPString__stringByTrimmingWhitespace(self, _cmd) +{ with(self) +{ + return self.replace(CPStringRegexTrimWhitespace, ""); +} +},["CPString"]), new objj_method(sel_getUid("compare:"), function $CPString__compare_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(self, "compare:options:", aString, nil); +} +},["CPComparisonResult","CPString"]), new objj_method(sel_getUid("caseInsensitiveCompare:"), function $CPString__caseInsensitiveCompare_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(self, "compare:options:", aString, CPCaseInsensitiveSearch); +} +},["CPComparisonResult","CPString"]), new objj_method(sel_getUid("compare:options:"), function $CPString__compare_options_(self, _cmd, aString, aMask) +{ with(self) +{ + var lhs = self, + rhs = aString; + if (aMask & CPCaseInsensitiveSearch) + { + lhs = lhs.toLowerCase(); + rhs = rhs.toLowerCase(); + } + if(aMask & CPDiacriticInsensitiveSearch) + { + lhs = lhs.stripDiacritics(); + rhs = rhs.stripDiacritics(); + } + if (lhs < rhs) + return CPOrderedAscending; + else if (lhs > rhs) + return CPOrderedDescending; + return CPOrderedSame; +} +},["CPComparisonResult","CPString","int"]), new objj_method(sel_getUid("compare:options:range:"), function $CPString__compare_options_range_(self, _cmd, aString, aMask, range) +{ with(self) +{ + var lhs = objj_msgSend(self, "substringWithRange:", range), + rhs = aString; + return objj_msgSend(lhs, "compare:options:", rhs, aMask); +} +},["CPComparisonResult","CPString","int","CPRange"]), new objj_method(sel_getUid("hasPrefix:"), function $CPString__hasPrefix_(self, _cmd, aString) +{ with(self) +{ + return aString && aString != "" && indexOf(aString) == 0; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("hasSuffix:"), function $CPString__hasSuffix_(self, _cmd, aString) +{ with(self) +{ + return aString && aString != "" && length >= aString.length && lastIndexOf(aString) == (length - aString.length); +} +},["BOOL","CPString"]), new objj_method(sel_getUid("isEqual:"), function $CPString__isEqual_(self, _cmd, anObject) +{ with(self) +{ + if (self === anObject) + return YES; + if (!anObject || !objj_msgSend(anObject, "isKindOfClass:", objj_msgSend(CPString, "class"))) + return NO; + return objj_msgSend(self, "isEqualToString:", anObject); +} +},["BOOL","id"]), new objj_method(sel_getUid("isEqualToString:"), function $CPString__isEqualToString_(self, _cmd, aString) +{ with(self) +{ + return self == aString; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("UID"), function $CPString__UID(self, _cmd) +{ with(self) +{ + var UID = CPStringUIDs.valueForKey(self); + if (!UID) + { + UID = objj_generateObjectUID(); + CPStringUIDs.setValueForKey(self, UID); + } + return UID + ""; +} +},["unsigned"]), new objj_method(sel_getUid("commonPrefixWithString:"), function $CPString__commonPrefixWithString_(self, _cmd, aString) +{ with(self) +{ + return objj_msgSend(self, "commonPrefixWithString:options:", aString, 0); +} +},["CPString","CPString"]), new objj_method(sel_getUid("commonPrefixWithString:options:"), function $CPString__commonPrefixWithString_options_(self, _cmd, aString, aMask) +{ with(self) +{ + var len = 0, + lhs = self, + rhs = aString, + min = MIN(objj_msgSend(lhs, "length"), objj_msgSend(rhs, "length")); + if (aMask & CPCaseInsensitiveSearch) + { + lhs = objj_msgSend(lhs, "lowercaseString"); + rhs = objj_msgSend(rhs, "lowercaseString"); + } + for (; len < min; len++ ) + { + if ( objj_msgSend(lhs, "characterAtIndex:", len) !== objj_msgSend(rhs, "characterAtIndex:", len) ) + break; + } + return objj_msgSend(self, "substringToIndex:", len); +} +},["CPString","CPString","int"]), new objj_method(sel_getUid("capitalizedString"), function $CPString__capitalizedString(self, _cmd) +{ with(self) +{ + var parts = self.split(/\b/g), + i = 0, + count = parts.length; + for (; i < count; i++) + { + if (i == 0 || (/\s$/).test(parts[i - 1])) + parts[i] = parts[i].substring(0, 1).toUpperCase() + parts[i].substring(1).toLowerCase(); + else + parts[i] = parts[i].toLowerCase(); + } + return parts.join(""); +} +},["CPString"]), new objj_method(sel_getUid("lowercaseString"), function $CPString__lowercaseString(self, _cmd) +{ with(self) +{ + return toLowerCase(); +} +},["CPString"]), new objj_method(sel_getUid("uppercaseString"), function $CPString__uppercaseString(self, _cmd) +{ with(self) +{ + return toUpperCase(); +} +},["CPString"]), new objj_method(sel_getUid("doubleValue"), function $CPString__doubleValue(self, _cmd) +{ with(self) +{ + return parseFloat(self, 10); +} +},["double"]), new objj_method(sel_getUid("boolValue"), function $CPString__boolValue(self, _cmd) +{ with(self) +{ + var replaceRegExp = new RegExp("^\\s*[\\+,\\-]?0*"); + return RegExp("^[Y,y,t,T,1-9]").test(self.replace(replaceRegExp, '')); +} +},["BOOL"]), new objj_method(sel_getUid("floatValue"), function $CPString__floatValue(self, _cmd) +{ with(self) +{ + return parseFloat(self, 10); +} +},["float"]), new objj_method(sel_getUid("intValue"), function $CPString__intValue(self, _cmd) +{ with(self) +{ + return parseInt(self, 10); +} +},["int"]), new objj_method(sel_getUid("pathComponents"), function $CPString__pathComponents(self, _cmd) +{ with(self) +{ + var result = split('/'); + if (result[0] === "") + result[0] = "/"; + if (result[result.length - 1] === "") + result.pop(); + return result; +} +},["CPArray"]), new objj_method(sel_getUid("pathExtension"), function $CPString__pathExtension(self, _cmd) +{ with(self) +{ + if (lastIndexOf('.') === CPNotFound) + return ""; + return substr(lastIndexOf('.') + 1); +} +},["CPString"]), new objj_method(sel_getUid("lastPathComponent"), function $CPString__lastPathComponent(self, _cmd) +{ with(self) +{ + var components = objj_msgSend(self, "pathComponents"); + return components[components.length - 1]; +} +},["CPString"]), new objj_method(sel_getUid("stringByDeletingLastPathComponent"), function $CPString__stringByDeletingLastPathComponent(self, _cmd) +{ with(self) +{ + var path = self, + start = length - 1; + while (path.charAt(start) === '/') + start--; + path = path.substr(0, path.lastIndexOf('/', start)); + if (path === "" && charAt(0) === '/') + return '/'; + return path; +} +},["CPString"]), new objj_method(sel_getUid("stringByDeletingPathExtension"), function $CPString__stringByDeletingPathExtension(self, _cmd) +{ with(self) +{ + var extension = objj_msgSend(self, "pathExtension"); + if (extension === "") + return self; + if (lastIndexOf('.') < 1) + return self; + return substr(0, objj_msgSend(self, "length") - (extension.length + 1)); +} +},["CPString"]), new objj_method(sel_getUid("stringByStandardizingPath"), function $CPString__stringByStandardizingPath(self, _cmd) +{ with(self) +{ + return objj_standardize_path(self); +} +},["CPString"]), new objj_method(sel_getUid("copy"), function $CPString__copy(self, _cmd) +{ with(self) +{ + return new String(self); +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $CPString__alloc(self, _cmd) +{ with(self) +{ + return new String; +} +},["id"]), new objj_method(sel_getUid("string"), function $CPString__string(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "init"); +} +},["id"]), new objj_method(sel_getUid("stringWithHash:"), function $CPString__stringWithHash_(self, _cmd, aHash) +{ with(self) +{ + var hashString = parseInt(aHash, 10).toString(16); + return "000000".substring(0, MAX(6 - hashString.length, 0)) + hashString; +} +},["id","unsigned"]), new objj_method(sel_getUid("stringWithString:"), function $CPString__stringWithString_(self, _cmd, aString) +{ with(self) +{ + if (!aString) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "stringWithString: the string can't be 'nil'"); + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithString:", aString); +} +},["id","CPString"]), new objj_method(sel_getUid("stringWithFormat:"), function $CPString__stringWithFormat_(self, _cmd, format) +{ with(self) +{ + if (!format) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "initWithFormat: the format can't be 'nil'"); + return ObjectiveJ.sprintf.apply(this, Array.prototype.slice.call(arguments, 2)); +} +},["id","CPString"])]); +} +{ +var the_class = objj_getClass("CPString") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPString\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("objectFromJSON"), function $CPString__objectFromJSON(self, _cmd) +{ with(self) +{ + return JSON.parse(self); +} +},["JSObject"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("JSONFromObject:"), function $CPString__JSONFromObject_(self, _cmd, anObject) +{ with(self) +{ + return JSON.stringify(anObject); +} +},["CPString","JSObject"])]); +} +{ +var the_class = objj_getClass("CPString") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPString\""); +var meta_class = the_class.isa;class_addMethods(meta_class, [new objj_method(sel_getUid("UUID"), function $CPString__UUID(self, _cmd) +{ with(self) +{ + var g = "", + i = 0; + for (; i < 32; i++) + g += FLOOR(RAND() * 0xF).toString(0xF); + return g; +} +},["CPString"])]); +} +var diacritics = [[192,198],[224,230],[231,231],[232,235],[236,239],[242,246],[249,252]]; +var normalized = [65,97,99,101,105,111,117]; +String.prototype.stripDiacritics = function () +{ + var output = ""; + for (var indexSource = 0; indexSource < this.length; indexSource++) + { + var code = this.charCodeAt(indexSource); + for (var i = 0; i < diacritics.length; i++) + { + var drange = diacritics[i]; + if (code >= drange[0] && code <= drange[drange.length-1]) + { + code = normalized[i]; + break; + } + } + output += String.fromCharCode(code); + } + return output; +} +String.prototype.isa = CPString; + +p;9;CPTimer.jt;8613;@STATIC;1.0;i;8;CPDate.ji;14;CPInvocation.ji;10;CPObject.ji;11;CPRunLoop.jt;8532;objj_executeFile("CPDate.j", YES); +objj_executeFile("CPInvocation.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPRunLoop.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPTimer"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_timeInterval"), new objj_ivar("_invocation"), new objj_ivar("_callback"), new objj_ivar("_repeats"), new objj_ivar("_isValid"), new objj_ivar("_fireDate"), new objj_ivar("_userInfo")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithFireDate:interval:invocation:repeats:"), function $CPTimer__initWithFireDate_interval_invocation_repeats_(self, _cmd, aDate, seconds, anInvocation, shouldRepeat) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTimer").super_class }, "init"); + if (self) + { + _timeInterval = seconds; + _invocation = anInvocation; + _repeats = shouldRepeat; + _isValid = YES; + _fireDate = aDate; + } + return self; +} +},["id","CPDate","CPTimeInterval","CPInvocation","BOOL"]), new objj_method(sel_getUid("initWithFireDate:interval:target:selector:userInfo:repeats:"), function $CPTimer__initWithFireDate_interval_target_selector_userInfo_repeats_(self, _cmd, aDate, seconds, aTarget, aSelector, userInfo, shouldRepeat) +{ with(self) +{ + var invocation = objj_msgSend(CPInvocation, "invocationWithMethodSignature:", 1); + objj_msgSend(invocation, "setTarget:", aTarget); + objj_msgSend(invocation, "setSelector:", aSelector); + objj_msgSend(invocation, "setArgument:atIndex:", self, 2); + self = objj_msgSend(self, "initWithFireDate:interval:invocation:repeats:", aDate, seconds, invocation, shouldRepeat); + if (self) + _userInfo = userInfo; + return self; +} +},["id","CPDate","CPTimeInterval","id","SEL","id","BOOL"]), new objj_method(sel_getUid("initWithFireDate:interval:callback:repeats:"), function $CPTimer__initWithFireDate_interval_callback_repeats_(self, _cmd, aDate, seconds, aFunction, shouldRepeat) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPTimer").super_class }, "init"); + if (self) + { + _timeInterval = seconds; + _callback = aFunction; + _repeats = shouldRepeat; + _isValid = YES; + _fireDate = aDate; + } + return self; +} +},["id","CPDate","CPTimeInterval","Function","BOOL"]), new objj_method(sel_getUid("timeInterval"), function $CPTimer__timeInterval(self, _cmd) +{ with(self) +{ + return _timeInterval; +} +},["CPTimeInterval"]), new objj_method(sel_getUid("fireDate"), function $CPTimer__fireDate(self, _cmd) +{ with(self) +{ + return _fireDate; +} +},["CPDate"]), new objj_method(sel_getUid("setFireDate:"), function $CPTimer__setFireDate_(self, _cmd, aDate) +{ with(self) +{ + _fireDate = aDate; +} +},["void","CPDate"]), new objj_method(sel_getUid("fire"), function $CPTimer__fire(self, _cmd) +{ with(self) +{ + if (!_isValid) + return; + if (_callback) + _callback(); + else + objj_msgSend(_invocation, "invoke"); + if (!_isValid) + return; + if (_repeats) + _fireDate = objj_msgSend(CPDate, "dateWithTimeIntervalSinceNow:", _timeInterval); + else + objj_msgSend(self, "invalidate"); +} +},["void"]), new objj_method(sel_getUid("isValid"), function $CPTimer__isValid(self, _cmd) +{ with(self) +{ + return _isValid; +} +},["BOOL"]), new objj_method(sel_getUid("invalidate"), function $CPTimer__invalidate(self, _cmd) +{ with(self) +{ + _isValid = NO; + _userInfo = nil; + _invocation = nil; + _callback = nil; +} +},["void"]), new objj_method(sel_getUid("userInfo"), function $CPTimer__userInfo(self, _cmd) +{ with(self) +{ + return _userInfo; +} +},["id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("scheduledTimerWithTimeInterval:invocation:repeats:"), function $CPTimer__scheduledTimerWithTimeInterval_invocation_repeats_(self, _cmd, seconds, anInvocation, shouldRepeat) +{ with(self) +{ + var timer = objj_msgSend(objj_msgSend(self, "alloc"), "initWithFireDate:interval:invocation:repeats:", objj_msgSend(CPDate, "dateWithTimeIntervalSinceNow:", seconds), seconds, anInvocation, shouldRepeat); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "addTimer:forMode:", timer, CPDefaultRunLoopMode); + return timer; +} +},["CPTimer","CPTimeInterval","CPInvocation","BOOL"]), new objj_method(sel_getUid("scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:"), function $CPTimer__scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_(self, _cmd, seconds, aTarget, aSelector, userInfo, shouldRepeat) +{ with(self) +{ + var timer = objj_msgSend(objj_msgSend(self, "alloc"), "initWithFireDate:interval:target:selector:userInfo:repeats:", objj_msgSend(CPDate, "dateWithTimeIntervalSinceNow:", seconds), seconds, aTarget, aSelector, userInfo, shouldRepeat); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "addTimer:forMode:", timer, CPDefaultRunLoopMode); + return timer; +} +},["CPTimer","CPTimeInterval","id","SEL","id","BOOL"]), new objj_method(sel_getUid("scheduledTimerWithTimeInterval:callback:repeats:"), function $CPTimer__scheduledTimerWithTimeInterval_callback_repeats_(self, _cmd, seconds, aFunction, shouldRepeat) +{ with(self) +{ + var timer = objj_msgSend(objj_msgSend(self, "alloc"), "initWithFireDate:interval:callback:repeats:", objj_msgSend(CPDate, "dateWithTimeIntervalSinceNow:", seconds), seconds, aFunction, shouldRepeat); + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "addTimer:forMode:", timer, CPDefaultRunLoopMode); + return timer; +} +},["CPTimer","CPTimeInterval","Function","BOOL"]), new objj_method(sel_getUid("timerWithTimeInterval:invocation:repeats:"), function $CPTimer__timerWithTimeInterval_invocation_repeats_(self, _cmd, seconds, anInvocation, shouldRepeat) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithFireDate:interval:invocation:repeats:", objj_msgSend(CPDate, "dateWithTimeIntervalSinceNow:", seconds), seconds, anInvocation, shouldRepeat); +} +},["CPTimer","CPTimeInterval","CPInvocation","BOOL"]), new objj_method(sel_getUid("timerWithTimeInterval:target:selector:userInfo:repeats:"), function $CPTimer__timerWithTimeInterval_target_selector_userInfo_repeats_(self, _cmd, seconds, aTarget, aSelector, userInfo, shouldRepeat) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithFireDate:interval:target:selector:userInfo:repeats:", objj_msgSend(CPDate, "dateWithTimeIntervalSinceNow:", seconds), seconds, aTarget, aSelector, userInfo, shouldRepeat); +} +},["CPTimer","CPTimeInterval","id","SEL","id","BOOL"]), new objj_method(sel_getUid("timerWithTimeInterval:callback:repeats:"), function $CPTimer__timerWithTimeInterval_callback_repeats_(self, _cmd, seconds, aFunction, shouldRepeat) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithFireDate:interval:callback:repeats:", objj_msgSend(CPDate, "dateWithTimeIntervalSinceNow:", seconds), seconds, aFunction, shouldRepeat); +} +},["CPTimer","CPTimeInterval","Function","BOOL"])]); +} +var CPTimersTimeoutID = 1000, + CPTimersForTimeoutIDs = {}; +var _CPTimerBridgeTimer = function(codeOrFunction, aDelay, shouldRepeat, functionArgs) +{ + var timeoutID = CPTimersTimeoutID++, + theFunction = nil; + if (typeof codeOrFunction === "string") + theFunction = function() { new Function(codeOrFunction)(); if (!shouldRepeat) CPTimersForTimeoutIDs[timeoutID] = nil; } + else + { + if (!functionArgs) + functionArgs = []; + theFunction = function() { codeOrFunction.apply(window, functionArgs); if (!shouldRepeat) CPTimersForTimeoutIDs[timeoutID] = nil; } + } + CPTimersForTimeoutIDs[timeoutID] = objj_msgSend(CPTimer, "scheduledTimerWithTimeInterval:callback:repeats:", aDelay / 1000, theFunction, shouldRepeat); + return timeoutID; +} +window.setTimeout = function(codeOrFunction, aDelay) +{ + return _CPTimerBridgeTimer(codeOrFunction, aDelay, NO, Array.prototype.slice.apply(arguments, [2])); +} +window.clearTimeout = function(aTimeoutID) +{ + var timer = CPTimersForTimeoutIDs[aTimeoutID]; + if (timer) + objj_msgSend(timer, "invalidate"); + CPTimersForTimeoutIDs[aTimeoutID] = nil; +} +window.setInterval = function(codeOrFunction, aDelay, functionArgs) +{ + return _CPTimerBridgeTimer(codeOrFunction, aDelay, YES, Array.prototype.slice.apply(arguments, [2])); +} +window.clearInterval = function(aTimeoutID) +{ + window.clearTimeout(aTimeoutID); +} + +p;15;CPUndoManager.jt;24990;@STATIC;1.0;i;14;CPInvocation.ji;10;CPObject.ji;9;CPProxy.jt;24923;objj_executeFile("CPInvocation.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPProxy.j", YES); +var CPUndoManagerNormal = 0, + CPUndoManagerUndoing = 1, + CPUndoManagerRedoing = 2; +CPUndoManagerCheckpointNotification = "CPUndoManagerCheckpointNotification"; +CPUndoManagerDidOpenUndoGroupNotification = "CPUndoManagerDidOpenUndoGroupNotification"; +CPUndoManagerDidRedoChangeNotification = "CPUndoManagerDidRedoChangeNotification"; +CPUndoManagerDidUndoChangeNotification = "CPUndoManagerDidUndoChangeNotification"; +CPUndoManagerWillCloseUndoGroupNotification = "CPUndoManagerWillCloseUndoGroupNotification"; +CPUndoManagerWillRedoChangeNotification = "CPUndoManagerWillRedoChangeNotification"; +CPUndoManagerWillUndoChangeNotification = "CPUndoManagerWillUndoChangeNotification"; +CPUndoCloseGroupingRunLoopOrdering = 350000; +var _CPUndoGroupingPool = [], + _CPUndoGroupingPoolCapacity = 5; +{var the_class = objj_allocateClassPair(CPObject, "_CPUndoGrouping"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_parent"), new objj_ivar("_invocations"), new objj_ivar("_actionName")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithParent:"), function $_CPUndoGrouping__initWithParent_(self, _cmd, anUndoGrouping) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPUndoGrouping").super_class }, "init"); + if (self) + { + _parent = anUndoGrouping; + _invocations = []; + _actionName = ""; + } + return self; +} +},["id","_CPUndoGrouping"]), new objj_method(sel_getUid("parent"), function $_CPUndoGrouping__parent(self, _cmd) +{ with(self) +{ + return _parent; +} +},["_CPUndoGrouping"]), new objj_method(sel_getUid("addInvocation:"), function $_CPUndoGrouping__addInvocation_(self, _cmd, anInvocation) +{ with(self) +{ + _invocations.push(anInvocation); +} +},["void","CPInvocation"]), new objj_method(sel_getUid("addInvocationsFromArray:"), function $_CPUndoGrouping__addInvocationsFromArray_(self, _cmd, invocations) +{ with(self) +{ + objj_msgSend(_invocations, "addObjectsFromArray:", invocations); +} +},["void","CPArray"]), new objj_method(sel_getUid("removeInvocationsWithTarget:"), function $_CPUndoGrouping__removeInvocationsWithTarget_(self, _cmd, aTarget) +{ with(self) +{ + var index = _invocations.length; + while (index--) + if (objj_msgSend(_invocations[index], "target") == aTarget) + _invocations.splice(index, 1); +} +},["BOOL","id"]), new objj_method(sel_getUid("invocations"), function $_CPUndoGrouping__invocations(self, _cmd) +{ with(self) +{ + return _invocations; +} +},["CPArray"]), new objj_method(sel_getUid("invoke"), function $_CPUndoGrouping__invoke(self, _cmd) +{ with(self) +{ + var index = _invocations.length; + while (index--) + objj_msgSend(_invocations[index], "invoke"); +} +},["void"]), new objj_method(sel_getUid("setActionName:"), function $_CPUndoGrouping__setActionName_(self, _cmd, aName) +{ with(self) +{ + _actionName = aName; +} +},["void","CPString"]), new objj_method(sel_getUid("actionName"), function $_CPUndoGrouping__actionName(self, _cmd) +{ with(self) +{ + return _actionName; +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("_poolUndoGrouping:"), function $_CPUndoGrouping___poolUndoGrouping_(self, _cmd, anUndoGrouping) +{ with(self) +{ + if (!anUndoGrouping || _CPUndoGroupingPool.length >= _CPUndoGroupingPoolCapacity) + return; + _CPUndoGroupingPool.push(anUndoGrouping); +} +},["void","_CPUndoGrouping"]), new objj_method(sel_getUid("undoGroupingWithParent:"), function $_CPUndoGrouping__undoGroupingWithParent_(self, _cmd, anUndoGrouping) +{ with(self) +{ + if (_CPUndoGroupingPool.length) + { + var grouping = _CPUndoGroupingPool.pop(); + grouping._parent = anUndoGrouping; + if (grouping._invocations.length) + grouping._invocations = []; + return grouping; + } + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithParent:", anUndoGrouping); +} +},["id","_CPUndoGrouping"])]); +} +var _CPUndoGroupingParentKey = "_CPUndoGroupingParentKey", + _CPUndoGroupingInvocationsKey = "_CPUndoGroupingInvocationsKey", + _CPUndoGroupingActionNameKey = "_CPUndoGroupingActionNameKey"; +{ +var the_class = objj_getClass("_CPUndoGrouping") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"_CPUndoGrouping\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $_CPUndoGrouping__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("_CPUndoGrouping").super_class }, "init"); + if (self) + { + _parent = objj_msgSend(aCoder, "decodeObjectForKey:", _CPUndoGroupingParentKey); + _invocations = objj_msgSend(aCoder, "decodeObjectForKey:", _CPUndoGroupingInvocationsKey); + _actionName = objj_msgSend(aCoder, "decodeObjectForKey:", _CPUndoGroupingActionNameKey); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $_CPUndoGrouping__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _parent, _CPUndoGroupingParentKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _invocations, _CPUndoGroupingInvocationsKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _actionName, _CPUndoGroupingActionNameKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPObject, "CPUndoManager"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_redoStack"), new objj_ivar("_undoStack"), new objj_ivar("_groupsByEvent"), new objj_ivar("_disableCount"), new objj_ivar("_levelsOfUndo"), new objj_ivar("_currentGrouping"), new objj_ivar("_state"), new objj_ivar("_preparedTarget"), new objj_ivar("_undoManagerProxy"), new objj_ivar("_runLoopModes"), new objj_ivar("_registeredWithRunLoop")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPUndoManager__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPUndoManager").super_class }, "init"); + if (self) + { + _redoStack = []; + _undoStack = []; + _state = CPUndoManagerNormal; + objj_msgSend(self, "setRunLoopModes:", [CPDefaultRunLoopMode]); + objj_msgSend(self, "setGroupsByEvent:", YES); + _undoManagerProxy = objj_msgSend(_CPUndoManagerProxy, "alloc"); + _undoManagerProxy._undoManager = self; + } + return self; +} +},["id"]), new objj_method(sel_getUid("_addUndoInvocation:"), function $CPUndoManager___addUndoInvocation_(self, _cmd, anInvocation) +{ with(self) +{ + if (!_currentGrouping) + if (objj_msgSend(self, "groupsByEvent")) + objj_msgSend(self, "_beginUndoGroupingForEvent"); + else + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "No undo group is currently open"); + objj_msgSend(_currentGrouping, "addInvocation:", anInvocation); + if (_state === CPUndoManagerNormal) + objj_msgSend(_redoStack, "removeAllObjects"); +} +},["void","CPInvocation"]), new objj_method(sel_getUid("registerUndoWithTarget:selector:object:"), function $CPUndoManager__registerUndoWithTarget_selector_object_(self, _cmd, aTarget, aSelector, anObject) +{ with(self) +{ + if (_disableCount > 0) + return; + var invocation = objj_msgSend(CPInvocation, "invocationWithMethodSignature:", nil); + objj_msgSend(invocation, "setTarget:", aTarget); + objj_msgSend(invocation, "setSelector:", aSelector); + objj_msgSend(invocation, "setArgument:atIndex:", anObject, 2); + objj_msgSend(self, "_addUndoInvocation:", invocation); +} +},["void","id","SEL","id"]), new objj_method(sel_getUid("prepareWithInvocationTarget:"), function $CPUndoManager__prepareWithInvocationTarget_(self, _cmd, aTarget) +{ with(self) +{ + _preparedTarget = aTarget; + return _undoManagerProxy; +} +},["id","id"]), new objj_method(sel_getUid("_methodSignatureOfPreparedTargetForSelector:"), function $CPUndoManager___methodSignatureOfPreparedTargetForSelector_(self, _cmd, aSelector) +{ with(self) +{ + if (objj_msgSend(_preparedTarget, "respondsToSelector:", aSelector)) + return 1; + return nil; +} +},["CPMethodSignature","SEL"]), new objj_method(sel_getUid("_forwardInvocationToPreparedTarget:"), function $CPUndoManager___forwardInvocationToPreparedTarget_(self, _cmd, anInvocation) +{ with(self) +{ + if (_disableCount > 0) + return; + objj_msgSend(anInvocation, "setTarget:", _preparedTarget); + objj_msgSend(self, "_addUndoInvocation:", anInvocation); + _preparedTarget = nil; +} +},["void","CPInvocation"]), new objj_method(sel_getUid("canRedo"), function $CPUndoManager__canRedo(self, _cmd) +{ with(self) +{ + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPUndoManagerCheckpointNotification, self); + return objj_msgSend(_redoStack, "count") > 0; +} +},["BOOL"]), new objj_method(sel_getUid("canUndo"), function $CPUndoManager__canUndo(self, _cmd) +{ with(self) +{ + if (_undoStack.length > 0) + return YES; + return objj_msgSend(objj_msgSend(_currentGrouping, "invocations"), "count") > 0; +} +},["BOOL"]), new objj_method(sel_getUid("undo"), function $CPUndoManager__undo(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "groupingLevel") === 1) + objj_msgSend(self, "endUndoGrouping"); + objj_msgSend(self, "undoNestedGroup"); +} +},["void"]), new objj_method(sel_getUid("undoNestedGroup"), function $CPUndoManager__undoNestedGroup(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_undoStack, "count") <= 0) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPUndoManagerCheckpointNotification, self); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPUndoManagerWillUndoChangeNotification, self); + var undoGrouping = _undoStack.pop(), + actionName = objj_msgSend(undoGrouping, "actionName"); + _state = CPUndoManagerUndoing; + objj_msgSend(self, "_beginUndoGrouping"); + objj_msgSend(undoGrouping, "invoke"); + objj_msgSend(self, "endUndoGrouping"); + objj_msgSend(_CPUndoGrouping, "_poolUndoGrouping:", undoGrouping); + _state = CPUndoManagerNormal; + objj_msgSend(objj_msgSend(_redoStack, "lastObject"), "setActionName:", actionName); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPUndoManagerDidUndoChangeNotification, self); +} +},["void"]), new objj_method(sel_getUid("redo"), function $CPUndoManager__redo(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_redoStack, "count") <= 0) + return; + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPUndoManagerCheckpointNotification, self); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPUndoManagerWillRedoChangeNotification, self); + var oldUndoGrouping = _currentGrouping, + undoGrouping = _redoStack.pop(), + actionName = objj_msgSend(undoGrouping, "actionName"); + _currentGrouping = nil; + _state = CPUndoManagerRedoing; + objj_msgSend(self, "_beginUndoGrouping"); + objj_msgSend(undoGrouping, "invoke"); + objj_msgSend(self, "endUndoGrouping"); + objj_msgSend(_CPUndoGrouping, "_poolUndoGrouping:", undoGrouping); + _currentGrouping = oldUndoGrouping; + _state = CPUndoManagerNormal; + objj_msgSend(objj_msgSend(_undoStack, "lastObject"), "setActionName:", actionName); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPUndoManagerDidRedoChangeNotification, self); +} +},["void"]), new objj_method(sel_getUid("beginUndoGrouping"), function $CPUndoManager__beginUndoGrouping(self, _cmd) +{ with(self) +{ + if (!_currentGrouping && objj_msgSend(self, "groupsByEvent")) + objj_msgSend(self, "_beginUndoGroupingForEvent"); + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPUndoManagerCheckpointNotification, self); + objj_msgSend(self, "_beginUndoGrouping"); +} +},["void"]), new objj_method(sel_getUid("_beginUndoGroupingForEvent"), function $CPUndoManager___beginUndoGroupingForEvent(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "_beginUndoGrouping"); + objj_msgSend(self, "_registerWithRunLoop"); +} +},["void"]), new objj_method(sel_getUid("_beginUndoGrouping"), function $CPUndoManager___beginUndoGrouping(self, _cmd) +{ with(self) +{ + _currentGrouping = objj_msgSend(_CPUndoGrouping, "undoGroupingWithParent:", _currentGrouping); +} +},["void"]), new objj_method(sel_getUid("endUndoGrouping"), function $CPUndoManager__endUndoGrouping(self, _cmd) +{ with(self) +{ + if (!_currentGrouping) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "endUndoGrouping. No undo group is currently open."); + var defaultCenter = objj_msgSend(CPNotificationCenter, "defaultCenter"); + objj_msgSend(defaultCenter, "postNotificationName:object:", CPUndoManagerCheckpointNotification, self); + var parent = objj_msgSend(_currentGrouping, "parent"); + if (!parent && objj_msgSend(_currentGrouping, "invocations").length > 0) + { + objj_msgSend(defaultCenter, "postNotificationName:object:", CPUndoManagerWillCloseUndoGroupNotification, self); + var stack = _state === CPUndoManagerUndoing ? _redoStack : _undoStack; + stack.push(_currentGrouping); + if (_levelsOfUndo > 0 && stack.length > _levelsOfUndo) + stack.splice(0, 1); + } + else + { + objj_msgSend(parent, "addInvocationsFromArray:", objj_msgSend(_currentGrouping, "invocations")); + objj_msgSend(_CPUndoGrouping, "_poolUndoGrouping:", _currentGrouping); + } + _currentGrouping = parent; +} +},["void"]), new objj_method(sel_getUid("enableUndoRegistration"), function $CPUndoManager__enableUndoRegistration(self, _cmd) +{ with(self) +{ + if (_disableCount <= 0) + objj_msgSend(CPException, "raise:reason:", CPInternalInconsistencyException, "enableUndoRegistration. There are no disable messages in effect right now."); + _disableCount--; +} +},["void"]), new objj_method(sel_getUid("groupsByEvent"), function $CPUndoManager__groupsByEvent(self, _cmd) +{ with(self) +{ + return _groupsByEvent; +} +},["BOOL"]), new objj_method(sel_getUid("setGroupsByEvent:"), function $CPUndoManager__setGroupsByEvent_(self, _cmd, aFlag) +{ with(self) +{ + aFlag = !!aFlag; + if (_groupsByEvent === aFlag) + return; + _groupsByEvent = aFlag; + if (!objj_msgSend(self, "groupsByEvent")) + objj_msgSend(self, "_unregisterWithRunLoop"); +} +},["void","BOOL"]), new objj_method(sel_getUid("groupingLevel"), function $CPUndoManager__groupingLevel(self, _cmd) +{ with(self) +{ + var grouping = _currentGrouping, + level = _currentGrouping ? 1 : 0; + while (grouping = objj_msgSend(grouping, "parent")) + ++level; + return level; +} +},["unsigned"]), new objj_method(sel_getUid("disableUndoRegistration"), function $CPUndoManager__disableUndoRegistration(self, _cmd) +{ with(self) +{ + ++_disableCount; +} +},["void"]), new objj_method(sel_getUid("isUndoRegistrationEnabled"), function $CPUndoManager__isUndoRegistrationEnabled(self, _cmd) +{ with(self) +{ + return _disableCount == 0; +} +},["BOOL"]), new objj_method(sel_getUid("isUndoing"), function $CPUndoManager__isUndoing(self, _cmd) +{ with(self) +{ + return _state === CPUndoManagerUndoing; +} +},["BOOL"]), new objj_method(sel_getUid("isRedoing"), function $CPUndoManager__isRedoing(self, _cmd) +{ with(self) +{ + return _state === CPUndoManagerRedoing; +} +},["BOOL"]), new objj_method(sel_getUid("removeAllActions"), function $CPUndoManager__removeAllActions(self, _cmd) +{ with(self) +{ + _redoStack = []; + _undoStack = []; + _disableCount = 0; +} +},["void"]), new objj_method(sel_getUid("removeAllActionsWithTarget:"), function $CPUndoManager__removeAllActionsWithTarget_(self, _cmd, aTarget) +{ with(self) +{ + objj_msgSend(_currentGrouping, "removeInvocationsWithTarget:", aTarget); + var index = _redoStack.length; + while (index--) + { + var grouping = _redoStack[index]; + objj_msgSend(grouping, "removeInvocationsWithTarget:", aTarget); + if (!objj_msgSend(grouping, "invocations").length) + _redoStack.splice(index, 1); + } + index = _undoStack.length; + while (index--) + { + var grouping = _undoStack[index]; + objj_msgSend(grouping, "removeInvocationsWithTarget:", aTarget); + if (!objj_msgSend(grouping, "invocations").length) + _undoStack.splice(index, 1); + } +} +},["void","id"]), new objj_method(sel_getUid("setActionName:"), function $CPUndoManager__setActionName_(self, _cmd, anActionName) +{ with(self) +{ + if (anActionName !== nil && _currentGrouping) + objj_msgSend(_currentGrouping, "setActionName:", anActionName); +} +},["void","CPString"]), new objj_method(sel_getUid("redoActionName"), function $CPUndoManager__redoActionName(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "canRedo")) + return nil; + return objj_msgSend(objj_msgSend(_redoStack, "lastObject"), "actionName"); +} +},["CPString"]), new objj_method(sel_getUid("redoMenuItemTitle"), function $CPUndoManager__redoMenuItemTitle(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "redoMenuTitleForUndoActionName:", objj_msgSend(self, "redoActionName")); +} +},["CPString"]), new objj_method(sel_getUid("redoMenuTitleForUndoActionName:"), function $CPUndoManager__redoMenuTitleForUndoActionName_(self, _cmd, anActionName) +{ with(self) +{ + if (anActionName || anActionName === 0) + return "Redo " + anActionName; + return "Redo"; +} +},["CPString","CPString"]), new objj_method(sel_getUid("undoActionName"), function $CPUndoManager__undoActionName(self, _cmd) +{ with(self) +{ + if (!objj_msgSend(self, "canUndo")) + return nil; + return objj_msgSend(objj_msgSend(_undoStack, "lastObject"), "actionName"); +} +},["CPString"]), new objj_method(sel_getUid("undoMenuItemTitle"), function $CPUndoManager__undoMenuItemTitle(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "undoMenuTitleForUndoActionName:", objj_msgSend(self, "undoActionName")); +} +},["CPString"]), new objj_method(sel_getUid("undoMenuTitleForUndoActionName:"), function $CPUndoManager__undoMenuTitleForUndoActionName_(self, _cmd, anActionName) +{ with(self) +{ + if (anActionName || anActionName === 0) + return "Undo " + anActionName; + return "Undo"; +} +},["CPString","CPString"]), new objj_method(sel_getUid("runLoopModes"), function $CPUndoManager__runLoopModes(self, _cmd) +{ with(self) +{ + return _runLoopModes; +} +},["CPArray"]), new objj_method(sel_getUid("setRunLoopModes:"), function $CPUndoManager__setRunLoopModes_(self, _cmd, modes) +{ with(self) +{ + _runLoopModes = objj_msgSend(modes, "copy"); + if (_registeredWithRunLoop) + { + objj_msgSend(self, "_unregisterWithRunLoop"); + objj_msgSend(self, "_registerWithRunLoop"); + } +} +},["void","CPArray"]), new objj_method(sel_getUid("_runLoopEndUndoGrouping"), function $CPUndoManager___runLoopEndUndoGrouping(self, _cmd) +{ with(self) +{ + objj_msgSend(self, "endUndoGrouping"); + _registeredWithRunLoop = NO; +} +},["void"]), new objj_method(sel_getUid("_registerWithRunLoop"), function $CPUndoManager___registerWithRunLoop(self, _cmd) +{ with(self) +{ + if (_registeredWithRunLoop) + return; + _registeredWithRunLoop = YES; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "performSelector:target:argument:order:modes:", sel_getUid("_runLoopEndUndoGrouping"), self, nil, CPUndoCloseGroupingRunLoopOrdering, _runLoopModes); +} +},["void"]), new objj_method(sel_getUid("_unregisterWithRunLoop"), function $CPUndoManager___unregisterWithRunLoop(self, _cmd) +{ with(self) +{ + if (!_registeredWithRunLoop) + return; + _registeredWithRunLoop = NO; + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "cancelPerformSelector:target:argument:", sel_getUid("_runLoopEndUndoGrouping"), self, nil); +} +},["void"]), new objj_method(sel_getUid("observeChangesForKeyPath:ofObject:"), function $CPUndoManager__observeChangesForKeyPath_ofObject_(self, _cmd, aKeyPath, anObject) +{ with(self) +{ + objj_msgSend(anObject, "addObserver:forKeyPath:options:context:", self, aKeyPath, CPKeyValueObservingOptionOld | CPKeyValueObservingOptionNew, NULL); +} +},["void","CPString","id"]), new objj_method(sel_getUid("stopObservingChangesForKeyPath:ofObject:"), function $CPUndoManager__stopObservingChangesForKeyPath_ofObject_(self, _cmd, aKeyPath, anObject) +{ with(self) +{ + objj_msgSend(anObject, "removeObserver:forKeyPath:", self, aKeyPath); +} +},["void","CPString","id"]), new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"), function $CPUndoManager__observeValueForKeyPath_ofObject_change_context_(self, _cmd, aKeyPath, anObject, aChange, aContext) +{ with(self) +{ + var before = objj_msgSend(aChange, "valueForKey:", CPKeyValueChangeOldKey), + after = objj_msgSend(aChange, "valueForKey:", CPKeyValueChangeNewKey); + if (before === after || (before !== nil && before.isa && (after === nil || after.isa) && objj_msgSend(before, "isEqual:", after))) + return; + objj_msgSend(objj_msgSend(self, "prepareWithInvocationTarget:", anObject), "applyChange:toKeyPath:", objj_msgSend(aChange, "inverseChangeDictionary"), aKeyPath); +} +},["void","CPString","id","CPDictionary","id"])]); +} +var CPUndoManagerRedoStackKey = "CPUndoManagerRedoStackKey", + CPUndoManagerUndoStackKey = "CPUndoManagerUndoStackKey", + CPUndoManagerLevelsOfUndoKey = "CPUndoManagerLevelsOfUndoKey", + CPUndoManagerActionNameKey = "CPUndoManagerActionNameKey", + CPUndoManagerCurrentGroupingKey = "CPUndoManagerCurrentGroupingKey", + CPUndoManagerRunLoopModesKey = "CPUndoManagerRunLoopModesKey", + CPUndoManagerGroupsByEventKey = "CPUndoManagerGroupsByEventKey"; +{ +var the_class = objj_getClass("CPUndoManager") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPUndoManager\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPUndoManager__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPUndoManager").super_class }, "init"); + if (self) + { + _redoStack = objj_msgSend(aCoder, "decodeObjectForKey:", CPUndoManagerRedoStackKey); + _undoStack = objj_msgSend(aCoder, "decodeObjectForKey:", CPUndoManagerUndoStackKey); + _levelsOfUndo = objj_msgSend(aCoder, "decodeObjectForKey:", CPUndoManagerLevelsOfUndoKey); + _actionName = objj_msgSend(aCoder, "decodeObjectForKey:", CPUndoManagerActionNameKey); + _currentGrouping = objj_msgSend(aCoder, "decodeObjectForKey:", CPUndoManagerCurrentGroupingKey); + _state = CPUndoManagerNormal; + objj_msgSend(self, "setRunLoopModes:", objj_msgSend(aCoder, "decodeObjectForKey:", CPUndoManagerRunLoopModesKey)); + objj_msgSend(self, "setGroupsByEvent:", objj_msgSend(aCoder, "decodeBoolForKey:", CPUndoManagerGroupsByEventKey)); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPUndoManager__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _redoStack, CPUndoManagerRedoStackKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _undoStack, CPUndoManagerUndoStackKey); + objj_msgSend(aCoder, "encodeInt:forKey:", _levelsOfUndo, CPUndoManagerLevelsOfUndoKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _actionName, CPUndoManagerActionNameKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _currentGrouping, CPUndoManagerCurrentGroupingKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _runLoopModes, CPUndoManagerRunLoopModesKey); + objj_msgSend(aCoder, "encodeBool:forKey:", _groupsByEvent, CPUndoManagerGroupsByEventKey); +} +},["void","CPCoder"])]); +} +{var the_class = objj_allocateClassPair(CPProxy, "_CPUndoManagerProxy"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_undoManager")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("methodSignatureForSelector:"), function $_CPUndoManagerProxy__methodSignatureForSelector_(self, _cmd, aSelector) +{ with(self) +{ + return objj_msgSend(_undoManager, "_methodSignatureOfPreparedTargetForSelector:", aSelector); +} +},["CPMethodSignature","SEL"]), new objj_method(sel_getUid("forwardInvocation:"), function $_CPUndoManagerProxy__forwardInvocation_(self, _cmd, anInvocation) +{ with(self) +{ + objj_msgSend(_undoManager, "_forwardInvocationToPreparedTarget:", anInvocation); +} +},["void","CPInvocation"])]); +} + +p;7;CPURL.jt;8106;@STATIC;1.0;i;10;CPObject.jt;8072;objj_executeFile("CPObject.j", YES); +CPURLNameKey = "CPURLNameKey"; +CPURLLocalizedNameKey = "CPURLLocalizedNameKey"; +CPURLIsRegularFileKey = "CPURLIsRegularFileKey"; +CPURLIsDirectoryKey = "CPURLIsDirectoryKey"; +CPURLIsSymbolicLinkKey = "CPURLIsSymbolicLinkKey"; +CPURLIsVolumeKey = "CPURLIsVolumeKey"; +CPURLIsPackageKey = "CPURLIsPackageKey"; +CPURLIsSystemImmutableKey = "CPURLIsSystemImmutableKey"; +CPURLIsUserImmutableKey = "CPURLIsUserImmutableKey"; +CPURLIsHiddenKey = "CPURLIsHiddenKey"; +CPURLHasHiddenExtensionKey = "CPURLHasHiddenExtensionKey"; +CPURLCreationDateKey = "CPURLCreationDateKey"; +CPURLContentAccessDateKey = "CPURLContentAccessDateKey"; +CPURLContentModificationDateKey = "CPURLContentModificationDateKey"; +CPURLAttributeModificationDateKey = "CPURLAttributeModificationDateKey"; +CPURLLinkCountKey = "CPURLLinkCountKey"; +CPURLParentDirectoryURLKey = "CPURLParentDirectoryURLKey"; +CPURLVolumeURLKey = "CPURLTypeIdentifierKey"; +CPURLTypeIdentifierKey = "CPURLTypeIdentifierKey"; +CPURLLocalizedTypeDescriptionKey = "CPURLLocalizedTypeDescriptionKey"; +CPURLLabelNumberKey = "CPURLLabelNumberKey"; +CPURLLabelColorKey = "CPURLLabelColorKey"; +CPURLLocalizedLabelKey = "CPURLLocalizedLabelKey"; +CPURLEffectiveIconKey = "CPURLEffectiveIconKey"; +CPURLCustomIconKey = "CPURLCustomIconKey"; +{var the_class = objj_allocateClassPair(CPObject, "CPURL"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPURL__init(self, _cmd) +{ with(self) +{ + return nil; +} +},["id"]), new objj_method(sel_getUid("initWithScheme:host:path:"), function $CPURL__initWithScheme_host_path_(self, _cmd, aScheme, aHost, aPath) +{ with(self) +{ + var URLString = (aScheme ? aScheme + ":" : "") + (aHost ? aHost + "//" : "") + (aPath || ""); + return objj_msgSend(self, "initWithString:", URLString); +} +},["id","CPString","CPString","CPString"]), new objj_method(sel_getUid("initWithString:"), function $CPURL__initWithString_(self, _cmd, URLString) +{ with(self) +{ + return objj_msgSend(self, "initWithString:relativeToURL:", URLString, nil); +} +},["id","CPString"]), new objj_method(sel_getUid("initWithString:relativeToURL:"), function $CPURL__initWithString_relativeToURL_(self, _cmd, URLString, aBaseURL) +{ with(self) +{ + return new CFURL(URLString, aBaseURL); +} +},["id","CPString","CPURL"]), new objj_method(sel_getUid("absoluteURL"), function $CPURL__absoluteURL(self, _cmd) +{ with(self) +{ + return self.absoluteURL(); +} +},["CPURL"]), new objj_method(sel_getUid("baseURL"), function $CPURL__baseURL(self, _cmd) +{ with(self) +{ + return self.baseURL(); +} +},["CPURL"]), new objj_method(sel_getUid("absoluteString"), function $CPURL__absoluteString(self, _cmd) +{ with(self) +{ + return self.absoluteString(); +} +},["CPString"]), new objj_method(sel_getUid("relativeString"), function $CPURL__relativeString(self, _cmd) +{ with(self) +{ + return self.string(); +} +},["CPString"]), new objj_method(sel_getUid("path"), function $CPURL__path(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "absoluteURL").path(); +} +},["CPString"]), new objj_method(sel_getUid("pathComponents"), function $CPURL__pathComponents(self, _cmd) +{ with(self) +{ + var path = self.pathComponents(); + return objj_msgSend(path, "copy"); +} +},["CPArray"]), new objj_method(sel_getUid("relativePath"), function $CPURL__relativePath(self, _cmd) +{ with(self) +{ + return self.path(); +} +},["CPString"]), new objj_method(sel_getUid("scheme"), function $CPURL__scheme(self, _cmd) +{ with(self) +{ + return self.scheme(); +} +},["CPString"]), new objj_method(sel_getUid("user"), function $CPURL__user(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "absoluteURL").user(); +} +},["CPString"]), new objj_method(sel_getUid("password"), function $CPURL__password(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "absoluteURL").password(); +} +},["CPString"]), new objj_method(sel_getUid("host"), function $CPURL__host(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "absoluteURL").domain(); +} +},["CPString"]), new objj_method(sel_getUid("port"), function $CPURL__port(self, _cmd) +{ with(self) +{ + var portNumber = objj_msgSend(self, "absoluteURL").portNumber(); + if (portNumber === -1) + return nil; + return portNumber; +} +},["Number"]), new objj_method(sel_getUid("parameterString"), function $CPURL__parameterString(self, _cmd) +{ with(self) +{ + return self.queryString(); +} +},["CPString"]), new objj_method(sel_getUid("fragment"), function $CPURL__fragment(self, _cmd) +{ with(self) +{ + return self.fragment(); +} +},["CPString"]), new objj_method(sel_getUid("isEqual:"), function $CPURL__isEqual_(self, _cmd, anObject) +{ with(self) +{ + return objj_msgSend(self, "relativeString") === objj_msgSend(anObject, "relativeString") && + (objj_msgSend(self, "baseURL") === objj_msgSend(anObject, "baseURL") || objj_msgSend(objj_msgSend(self, "baseURL"), "isEqual:", objj_msgSend(anObject, "baseURL"))); +} +},["BOOL","id"]), new objj_method(sel_getUid("lastPathComponent"), function $CPURL__lastPathComponent(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "absoluteURL").lastPathComponent(); +} +},["CPString"]), new objj_method(sel_getUid("pathExtension"), function $CPURL__pathExtension(self, _cmd) +{ with(self) +{ + return self.pathExtension(); +} +},["CPString"]), new objj_method(sel_getUid("standardizedURL"), function $CPURL__standardizedURL(self, _cmd) +{ with(self) +{ + return self.standardizedURL(); +} +},["CPURL"]), new objj_method(sel_getUid("isFileURL"), function $CPURL__isFileURL(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "scheme") === "file"; +} +},["BOOL"]), new objj_method(sel_getUid("description"), function $CPURL__description(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "absoluteString"); +} +},["CPString"]), new objj_method(sel_getUid("resourceValueForKey:"), function $CPURL__resourceValueForKey_(self, _cmd, aKey) +{ with(self) +{ + return self.resourcePropertyForKey(aKey); +} +},["id","CPString"]), new objj_method(sel_getUid("setResourceValue:forKey:"), function $CPURL__setResourceValue_forKey_(self, _cmd, anObject, aKey) +{ with(self) +{ + return self.setResourcePropertyForKey(aKey, anObject); +} +},["id","id","CPString"]), new objj_method(sel_getUid("staticResourceData"), function $CPURL__staticResourceData(self, _cmd) +{ with(self) +{ + return self.staticResourceData(); +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("alloc"), function $CPURL__alloc(self, _cmd) +{ with(self) +{ + return new CFURL(); +} +},["id"]), new objj_method(sel_getUid("URLWithString:"), function $CPURL__URLWithString_(self, _cmd, URLString) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithString:", URLString); +} +},["id","CPString"]), new objj_method(sel_getUid("URLWithString:relativeToURL:"), function $CPURL__URLWithString_relativeToURL_(self, _cmd, URLString, aBaseURL) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithString:relativeToURL:", URLString, aBaseURL); +} +},["id","CPString","CPURL"])]); +} +var CPURLURLStringKey = "CPURLURLStringKey", + CPURLBaseURLKey = "CPURLBaseURLKey"; +{ +var the_class = objj_getClass("CPURL") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPURL\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPURL__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + return objj_msgSend(self, "initWithString:relativeToURL:", objj_msgSend(aCoder, "decodeObjectForKey:", CPURLURLStringKey), objj_msgSend(aCoder, "decodeObjectForKey:", CPURLBaseURLKey)); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPURL__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", _baseURL, CPURLBaseURLKey); + objj_msgSend(aCoder, "encodeObject:forKey:", _string, CPURLURLStringKey); +} +},["void","CPCoder"])]); +} +CFURL.prototype.isa = objj_msgSend(CPURL, "class"); + +p;17;CPURLConnection.jt;7933;@STATIC;1.0;i;10;CPObject.ji;11;CPRunLoop.ji;14;CPURLRequest.ji;15;CPURLResponse.jt;7844;objj_executeFile("CPObject.j", YES); +objj_executeFile("CPRunLoop.j", YES); +objj_executeFile("CPURLRequest.j", YES); +objj_executeFile("CPURLResponse.j", YES); +var CPURLConnectionDelegate = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPURLConnection"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_request"), new objj_ivar("_delegate"), new objj_ivar("_isCanceled"), new objj_ivar("_isLocalFileConnection"), new objj_ivar("_HTTPRequest")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithRequest:delegate:startImmediately:"), function $CPURLConnection__initWithRequest_delegate_startImmediately_(self, _cmd, aRequest, aDelegate, shouldStartImmediately) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPURLConnection").super_class }, "init"); + if (self) + { + _request = aRequest; + _delegate = aDelegate; + _isCanceled = NO; + var URL = objj_msgSend(_request, "URL"), + scheme = objj_msgSend(URL, "scheme"); + _isLocalFileConnection = scheme === "file" || + ((scheme === "http" || scheme === "https:") && + window.location && + (window.location.protocol === "file:" || window.location.protocol === "app:")); + _HTTPRequest = new CFHTTPRequest(); + if (shouldStartImmediately) + objj_msgSend(self, "start"); + } + return self; +} +},["id","CPURLRequest","id","BOOL"]), new objj_method(sel_getUid("initWithRequest:delegate:"), function $CPURLConnection__initWithRequest_delegate_(self, _cmd, aRequest, aDelegate) +{ with(self) +{ + return objj_msgSend(self, "initWithRequest:delegate:startImmediately:", aRequest, aDelegate, YES); +} +},["id","CPURLRequest","id"]), new objj_method(sel_getUid("delegate"), function $CPURLConnection__delegate(self, _cmd) +{ with(self) +{ + return _delegate; +} +},["id"]), new objj_method(sel_getUid("start"), function $CPURLConnection__start(self, _cmd) +{ with(self) +{ + _isCanceled = NO; + try + { + _HTTPRequest.open(objj_msgSend(_request, "HTTPMethod"), objj_msgSend(objj_msgSend(_request, "URL"), "absoluteString"), YES); + _HTTPRequest.onreadystatechange = function() { objj_msgSend(self, "_readyStateDidChange"); } + var fields = objj_msgSend(_request, "allHTTPHeaderFields"), + key = nil, + keys = objj_msgSend(fields, "keyEnumerator"); + while (key = objj_msgSend(keys, "nextObject")) + _HTTPRequest.setRequestHeader(key, objj_msgSend(fields, "objectForKey:", key)); + _HTTPRequest.send(objj_msgSend(_request, "HTTPBody")); + } + catch (anException) + { + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("connection:didFailWithError:"))) + objj_msgSend(_delegate, "connection:didFailWithError:", self, anException); + } +} +},["void"]), new objj_method(sel_getUid("cancel"), function $CPURLConnection__cancel(self, _cmd) +{ with(self) +{ + _isCanceled = YES; + try + { + _HTTPRequest.abort(); + } + catch (anException) + { + } +} +},["void"]), new objj_method(sel_getUid("isLocalFileConnection"), function $CPURLConnection__isLocalFileConnection(self, _cmd) +{ with(self) +{ + return _isLocalFileConnection; +} +},["BOOL"]), new objj_method(sel_getUid("_readyStateDidChange"), function $CPURLConnection___readyStateDidChange(self, _cmd) +{ with(self) +{ + if (_HTTPRequest.readyState() === CFHTTPRequest.CompleteState) + { + var statusCode = _HTTPRequest.status(), + URL = objj_msgSend(_request, "URL"); + if (statusCode === 401 && objj_msgSend(CPURLConnectionDelegate, "respondsToSelector:", sel_getUid("connectionDidReceiveAuthenticationChallenge:"))) + objj_msgSend(CPURLConnectionDelegate, "connectionDidReceiveAuthenticationChallenge:", self); + else + { + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("connection:didReceiveResponse:"))) + { + if (_isLocalFileConnection) + objj_msgSend(_delegate, "connection:didReceiveResponse:", self, objj_msgSend(objj_msgSend(CPURLResponse, "alloc"), "initWithURL:", URL)); + else + { + var response = objj_msgSend(objj_msgSend(CPHTTPURLResponse, "alloc"), "initWithURL:", URL); + objj_msgSend(response, "_setStatusCode:", statusCode); + objj_msgSend(_delegate, "connection:didReceiveResponse:", self, response); + } + } + if (!_isCanceled) + { + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("connection:didReceiveData:"))) + objj_msgSend(_delegate, "connection:didReceiveData:", self, _HTTPRequest.responseText()); + if (objj_msgSend(_delegate, "respondsToSelector:", sel_getUid("connectionDidFinishLoading:"))) + objj_msgSend(_delegate, "connectionDidFinishLoading:", self); + } + } + } + objj_msgSend(objj_msgSend(CPRunLoop, "currentRunLoop"), "limitDateForMode:", CPDefaultRunLoopMode); +} +},["void"]), new objj_method(sel_getUid("_HTTPRequest"), function $CPURLConnection___HTTPRequest(self, _cmd) +{ with(self) +{ + return _HTTPRequest; +} +},["HTTPRequest"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("setClassDelegate:"), function $CPURLConnection__setClassDelegate_(self, _cmd, delegate) +{ with(self) +{ + CPURLConnectionDelegate = delegate; +} +},["void","id"]), new objj_method(sel_getUid("sendSynchronousRequest:returningResponse:"), function $CPURLConnection__sendSynchronousRequest_returningResponse_(self, _cmd, aRequest, aURLResponse) +{ with(self) +{ + try + { + var request = new CFHTTPRequest(); + request.open(objj_msgSend(aRequest, "HTTPMethod"), objj_msgSend(objj_msgSend(aRequest, "URL"), "absoluteString"), NO); + var fields = objj_msgSend(aRequest, "allHTTPHeaderFields"), + key = nil, + keys = objj_msgSend(fields, "keyEnumerator"); + while (key = objj_msgSend(keys, "nextObject")) + request.setRequestHeader(key, objj_msgSend(fields, "objectForKey:", key)); + request.send(objj_msgSend(aRequest, "HTTPBody")); + return objj_msgSend(CPData, "dataWithRawString:", request.responseText()); + } + catch (anException) + { + } + return nil; +} +},["CPData","CPURLRequest","{CPURLResponse}"]), new objj_method(sel_getUid("connectionWithRequest:delegate:"), function $CPURLConnection__connectionWithRequest_delegate_(self, _cmd, aRequest, aDelegate) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithRequest:delegate:", aRequest, aDelegate); +} +},["CPURLConnection","CPURLRequest","id"])]); +} +{ +var the_class = objj_getClass("CPURLConnection") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPURLConnection\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("_XMLHTTPRequest"), function $CPURLConnection___XMLHTTPRequest(self, _cmd) +{ with(self) +{ + _CPReportLenientDeprecation(self, _cmd, sel_getUid("_HTTPRequest")); + return objj_msgSend(self, "_HTTPRequest"); +} +},["HTTPRequest"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("sendSynchronousRequest:returningResponse:error:"), function $CPURLConnection__sendSynchronousRequest_returningResponse_error_(self, _cmd, aRequest, aURLResponse, anError) +{ with(self) +{ + _CPReportLenientDeprecation(self, _cmd, sel_getUid("sendSynchronousRequest:returningResponse:")); + return objj_msgSend(self, "sendSynchronousRequest:returningResponse:", aRequest, aURLResponse); +} +},["CPData","CPURLRequest","{CPURLResponse}","id"])]); +} + +p;14;CPURLRequest.jt;3001;@STATIC;1.0;i;10;CPObject.jt;2967;objj_executeFile("CPObject.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPURLRequest"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_URL"), new objj_ivar("_HTTPBody"), new objj_ivar("_HTTPMethod"), new objj_ivar("_HTTPHeaderFields")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithURL:"), function $CPURLRequest__initWithURL_(self, _cmd, aURL) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPURLRequest").super_class }, "init"); + if (self) + { + objj_msgSend(self, "setURL:", aURL); + _HTTPBody = ""; + _HTTPMethod = "GET"; + _HTTPHeaderFields = objj_msgSend(CPDictionary, "dictionary"); + objj_msgSend(self, "setValue:forHTTPHeaderField:", "Thu, 01 Jan 1970 00:00:00 GMT", "If-Modified-Since"); + objj_msgSend(self, "setValue:forHTTPHeaderField:", "no-cache", "Cache-Control"); + objj_msgSend(self, "setValue:forHTTPHeaderField:", "XMLHttpRequest", "X-Requested-With"); + } + return self; +} +},["id","CPURL"]), new objj_method(sel_getUid("URL"), function $CPURLRequest__URL(self, _cmd) +{ with(self) +{ + return _URL; +} +},["CPURL"]), new objj_method(sel_getUid("setURL:"), function $CPURLRequest__setURL_(self, _cmd, aURL) +{ with(self) +{ + _URL = new CFURL(aURL); +} +},["void","CPURL"]), new objj_method(sel_getUid("setHTTPBody:"), function $CPURLRequest__setHTTPBody_(self, _cmd, anHTTPBody) +{ with(self) +{ + _HTTPBody = anHTTPBody; +} +},["void","CPString"]), new objj_method(sel_getUid("HTTPBody"), function $CPURLRequest__HTTPBody(self, _cmd) +{ with(self) +{ + return _HTTPBody; +} +},["CPString"]), new objj_method(sel_getUid("setHTTPMethod:"), function $CPURLRequest__setHTTPMethod_(self, _cmd, anHTTPMethod) +{ with(self) +{ + _HTTPMethod = anHTTPMethod; +} +},["void","CPString"]), new objj_method(sel_getUid("HTTPMethod"), function $CPURLRequest__HTTPMethod(self, _cmd) +{ with(self) +{ + return _HTTPMethod; +} +},["CPString"]), new objj_method(sel_getUid("allHTTPHeaderFields"), function $CPURLRequest__allHTTPHeaderFields(self, _cmd) +{ with(self) +{ + return _HTTPHeaderFields; +} +},["CPDictionary"]), new objj_method(sel_getUid("valueForHTTPHeaderField:"), function $CPURLRequest__valueForHTTPHeaderField_(self, _cmd, aField) +{ with(self) +{ + return objj_msgSend(_HTTPHeaderFields, "objectForKey:", aField); +} +},["CPString","CPString"]), new objj_method(sel_getUid("setValue:forHTTPHeaderField:"), function $CPURLRequest__setValue_forHTTPHeaderField_(self, _cmd, aValue, aField) +{ with(self) +{ + objj_msgSend(_HTTPHeaderFields, "setObject:forKey:", aValue, aField); +} +},["void","CPString","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("requestWithURL:"), function $CPURLRequest__requestWithURL_(self, _cmd, aURL) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPURLRequest, "alloc"), "initWithURL:", aURL); +} +},["id","CPURL"])]); +} + +p;15;CPURLResponse.jt;1272;@STATIC;1.0;i;10;CPObject.jt;1238;objj_executeFile("CPObject.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPURLResponse"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_URL")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithURL:"), function $CPURLResponse__initWithURL_(self, _cmd, aURL) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPURLResponse").super_class }, "init"); + if (self) + _URL = aURL; + return self; +} +},["id","CPURL"]), new objj_method(sel_getUid("URL"), function $CPURLResponse__URL(self, _cmd) +{ with(self) +{ + return _URL; +} +},["CPURL"])]); +} +{var the_class = objj_allocateClassPair(CPURLResponse, "CPHTTPURLResponse"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_statusCode")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("_setStatusCode:"), function $CPHTTPURLResponse___setStatusCode_(self, _cmd, aStatusCode) +{ with(self) +{ + _statusCode = aStatusCode; +} +},["id","int"]), new objj_method(sel_getUid("statusCode"), function $CPHTTPURLResponse__statusCode(self, _cmd) +{ with(self) +{ + return _statusCode; +} +},["int"])]); +} + +p;22;CPUserSessionManager.jt;2641;@STATIC;1.0;i;10;CPObject.ji;10;CPString.jt;2592;objj_executeFile("CPObject.j", YES); +objj_executeFile("CPString.j", YES); +CPUserSessionUndeterminedStatus = 0; +CPUserSessionLoggedInStatus = 1; +CPUserSessionLoggedOutStatus = 2; +CPUserSessionManagerStatusDidChangeNotification = "CPUserSessionManagerStatusDidChangeNotification"; +CPUserSessionManagerUserIdentifierDidChangeNotification = "CPUserSessionManagerUserIdentifierDidChangeNotification"; +var CPDefaultUserSessionManager = nil; +{var the_class = objj_allocateClassPair(CPObject, "CPUserSessionManager"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_status"), new objj_ivar("_userIdentifier")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPUserSessionManager__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPUserSessionManager").super_class }, "init"); + if (self) + _status = CPUserSessionUndeterminedStatus; + return self; +} +},["id"]), new objj_method(sel_getUid("status"), function $CPUserSessionManager__status(self, _cmd) +{ with(self) +{ + return _status; +} +},["CPUserSessionStatus"]), new objj_method(sel_getUid("setStatus:"), function $CPUserSessionManager__setStatus_(self, _cmd, aStatus) +{ with(self) +{ + if (_status == aStatus) + return; + _status = aStatus; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPUserSessionManagerStatusDidChangeNotification, self); + if (_status != CPUserSessionLoggedInStatus) + objj_msgSend(self, "setUserIdentifier:", nil); +} +},["void","CPUserSessionStatus"]), new objj_method(sel_getUid("userIdentifier"), function $CPUserSessionManager__userIdentifier(self, _cmd) +{ with(self) +{ + return _userIdentifier; +} +},["CPString"]), new objj_method(sel_getUid("setUserIdentifier:"), function $CPUserSessionManager__setUserIdentifier_(self, _cmd, anIdentifier) +{ with(self) +{ + if (_userIdentifier == anIdentifier) + return; + _userIdentifier = anIdentifier; + objj_msgSend(objj_msgSend(CPNotificationCenter, "defaultCenter"), "postNotificationName:object:", CPUserSessionManagerUserIdentifierDidChangeNotification, self); +} +},["void","CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("defaultManager"), function $CPUserSessionManager__defaultManager(self, _cmd) +{ with(self) +{ + if (!CPDefaultUserSessionManager) + CPDefaultUserSessionManager = objj_msgSend(objj_msgSend(CPUserSessionManager, "alloc"), "init"); + return CPDefaultUserSessionManager; +} +},["id"])]); +} + +p;9;CPValue.jt;2273;@STATIC;1.0;i;9;CPCoder.ji;10;CPObject.jt;2226;objj_executeFile("CPCoder.j", YES); +objj_executeFile("CPObject.j", YES); +{var the_class = objj_allocateClassPair(CPObject, "CPValue"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_JSObject")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithJSObject:"), function $CPValue__initWithJSObject_(self, _cmd, aJSObject) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPValue").super_class }, "init"); + if (self) + _JSObject = aJSObject; + return self; +} +},["id","JSObject"]), new objj_method(sel_getUid("JSObject"), function $CPValue__JSObject(self, _cmd) +{ with(self) +{ + return _JSObject; +} +},["JSObject"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("valueWithJSObject:"), function $CPValue__valueWithJSObject_(self, _cmd, aJSObject) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithJSObject:", aJSObject); +} +},["id","JSObject"])]); +} +var CPValueValueKey = "CPValueValueKey"; +{ +var the_class = objj_getClass("CPValue") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPValue\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPValue__initWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPValue").super_class }, "init"); + if (self) + _JSObject = JSON.parse(objj_msgSend(aCoder, "decodeObjectForKey:", CPValueValueKey)); + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPValue__encodeWithCoder_(self, _cmd, aCoder) +{ with(self) +{ + objj_msgSend(aCoder, "encodeObject:forKey:", JSON.stringify(_JSObject), CPValueValueKey); +} +},["void","CPCoder"])]); +} +CPJSObjectCreateJSON= function(aJSObject) +{ + CPLog.warn("CPJSObjectCreateJSON deprecated, use JSON.stringify() or CPString's objectFromJSON"); + return JSON.stringify(aJSObject); +} +CPJSObjectCreateWithJSON= function(aString) +{ + CPLog.warn("CPJSObjectCreateWithJSON deprecated, use JSON.parse() or CPString's JSONFromObject"); + return JSON.parse(aString); +} + +p;20;CPValueTransformer.jt;6927;@STATIC;1.0;i;10;CPObject.ji;14;CPDictionary.jt;6874;objj_executeFile("CPObject.j", YES); +objj_executeFile("CPDictionary.j", YES); +var transformerMap = objj_msgSend(CPDictionary, "dictionary"); +{var the_class = objj_allocateClassPair(CPObject, "CPValueTransformer"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("reverseTransformedValue:"), function $CPValueTransformer__reverseTransformedValue_(self, _cmd, aValue) +{ with(self) +{ + if (objj_msgSend(objj_msgSend(self, "class"), "allowsReverseTransformation")) + { + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, (self+" is not reversible.")); + } + return objj_msgSend(self, "transformedValue:", aValue); +} +},["id","id"]), new objj_method(sel_getUid("transformedValue:"), function $CPValueTransformer__transformedValue_(self, _cmd, aValue) +{ with(self) +{ + return nil; +} +},["id","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("initialize"), function $CPValueTransformer__initialize(self, _cmd) +{ with(self) +{ + if (self !== objj_msgSend(CPValueTransformer, "class")) + return; + objj_msgSend(CPValueTransformer, "setValueTransformer:forName:", objj_msgSend(objj_msgSend(CPNegateBooleanTransformer, "alloc"), "init"), CPNegateBooleanTransformerName); + objj_msgSend(CPValueTransformer, "setValueTransformer:forName:", objj_msgSend(objj_msgSend(CPIsNilTransformer, "alloc"), "init"), CPIsNilTransformerName); + objj_msgSend(CPValueTransformer, "setValueTransformer:forName:", objj_msgSend(objj_msgSend(CPIsNotNilTransformer, "alloc"), "init"), CPIsNotNilTransformerName); + objj_msgSend(CPValueTransformer, "setValueTransformer:forName:", objj_msgSend(objj_msgSend(CPUnarchiveFromDataTransformer, "alloc"), "init"), CPUnarchiveFromDataTransformerName); +} +},["void"]), new objj_method(sel_getUid("setValueTransformer:forName:"), function $CPValueTransformer__setValueTransformer_forName_(self, _cmd, transformer, aName) +{ with(self) +{ + objj_msgSend(transformerMap, "setObject:forKey:", transformer, aName); +} +},["void","CPValueTransformer","CPString"]), new objj_method(sel_getUid("valueTransformerForName:"), function $CPValueTransformer__valueTransformerForName_(self, _cmd, aName) +{ with(self) +{ + return objj_msgSend(transformerMap, "objectForKey:", aName); +} +},["CPValueTransformer","CPString"]), new objj_method(sel_getUid("valueTransformerNames"), function $CPValueTransformer__valueTransformerNames(self, _cmd) +{ with(self) +{ + return objj_msgSend(transformerMap, "allKeys"); +} +},["CPArray"]), new objj_method(sel_getUid("allowsReverseTransformation"), function $CPValueTransformer__allowsReverseTransformation(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("transformedValueClass"), function $CPValueTransformer__transformedValueClass(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPObject, "class"); +} +},["Class"])]); +} +{var the_class = objj_allocateClassPair(CPValueTransformer, "CPNegateBooleanTransformer"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("reverseTransformedValue:"), function $CPNegateBooleanTransformer__reverseTransformedValue_(self, _cmd, aValue) +{ with(self) +{ + return !objj_msgSend(aValue, "boolValue"); +} +},["id","id"]), new objj_method(sel_getUid("transformedValue:"), function $CPNegateBooleanTransformer__transformedValue_(self, _cmd, aValue) +{ with(self) +{ + return !objj_msgSend(aValue, "boolValue"); +} +},["id","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("allowsReverseTransformation"), function $CPNegateBooleanTransformer__allowsReverseTransformation(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("transformedValueClass"), function $CPNegateBooleanTransformer__transformedValueClass(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPNumber, "class"); +} +},["Class"])]); +} +{var the_class = objj_allocateClassPair(CPValueTransformer, "CPIsNilTransformer"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("transformedValue:"), function $CPIsNilTransformer__transformedValue_(self, _cmd, aValue) +{ with(self) +{ + return aValue === nil || aValue === undefined; +} +},["id","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("allowsReverseTransformation"), function $CPIsNilTransformer__allowsReverseTransformation(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("transformedValueClass"), function $CPIsNilTransformer__transformedValueClass(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPNumber, "class"); +} +},["Class"])]); +} +{var the_class = objj_allocateClassPair(CPValueTransformer, "CPIsNotNilTransformer"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("transformedValue:"), function $CPIsNotNilTransformer__transformedValue_(self, _cmd, aValue) +{ with(self) +{ + return aValue !== nil && aValue !== undefined; +} +},["id","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("allowsReverseTransformation"), function $CPIsNotNilTransformer__allowsReverseTransformation(self, _cmd) +{ with(self) +{ + return NO; +} +},["BOOL"]), new objj_method(sel_getUid("transformedValueClass"), function $CPIsNotNilTransformer__transformedValueClass(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPNumber, "class"); +} +},["Class"])]); +} +{var the_class = objj_allocateClassPair(CPValueTransformer, "CPUnarchiveFromDataTransformer"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("reverseTransformedValue:"), function $CPUnarchiveFromDataTransformer__reverseTransformedValue_(self, _cmd, aValue) +{ with(self) +{ + return objj_msgSend(CPKeyedArchiver, "archivedDataWithRootObject:", aValue); +} +},["id","id"]), new objj_method(sel_getUid("transformedValue:"), function $CPUnarchiveFromDataTransformer__transformedValue_(self, _cmd, aValue) +{ with(self) +{ + return objj_msgSend(CPKeyedUnarchiver, "unarchiveObjectWithData:", aValue); +} +},["id","id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("allowsReverseTransformation"), function $CPUnarchiveFromDataTransformer__allowsReverseTransformation(self, _cmd) +{ with(self) +{ + return YES; +} +},["BOOL"]), new objj_method(sel_getUid("transformedValueClass"), function $CPUnarchiveFromDataTransformer__transformedValueClass(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPData, "class"); +} +},["Class"])]); +} +CPNegateBooleanTransformerName = "CPNegateBooleanTransformerName"; +CPIsNilTransformerName = "CPIsNilTransformerName"; +CPIsNotNilTransformerName = "CPIsNotNilTransformerName"; +CPUnarchiveFromDataTransformerName = "CPUnarchiveFromDataTransformerName"; + +p;17;CPWebDAVManager.jt;6966;@STATIC;1.0;t;6947;var setURLResourceValuesForKeysFromProperties = function(aURL, keys, properties) +{ + var resourceType = objj_msgSend(properties, "objectForKey:", "resourcetype"); + if (resourceType === CPWebDAVManagerCollectionResourceType) + { + objj_msgSend(aURL, "setResourceValue:forKey:", YES, CPURLIsDirectoryKey); + objj_msgSend(aURL, "setResourceValue:forKey:", NO, CPURLIsRegularFileKey); + } + else if (resourceType === CPWebDAVManagerNonCollectionResourceType) + { + objj_msgSend(aURL, "setResourceValue:forKey:", NO, CPURLIsDirectoryKey); + objj_msgSend(aURL, "setResourceValue:forKey:", YES, CPURLIsRegularFileKey); + } + var displayName = objj_msgSend(properties, "objectForKey:", "displayname"); + if (displayName !== nil) + { + objj_msgSend(aURL, "setResourceValue:forKey:", displayName, CPURLNameKey); + objj_msgSend(aURL, "setResourceValue:forKey:", displayName, CPURLLocalizedNameKey); + } +} +CPWebDAVManagerCollectionResourceType = 1; +CPWebDAVManagerNonCollectionResourceType = 0; +{var the_class = objj_allocateClassPair(CPObject, "CPWebDAVManager"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_blocksForConnections")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPWebDAVManager__init(self, _cmd) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPWebDAVManager").super_class }, "init"); + if (self) + _blocksForConnections = objj_msgSend(CPDictionary, "dictionary"); + return self; +} +},["id"]), new objj_method(sel_getUid("contentsOfDirectoryAtURL:includingPropertiesForKeys:options:block:"), function $CPWebDAVManager__contentsOfDirectoryAtURL_includingPropertiesForKeys_options_block_(self, _cmd, aURL, keys, aMask, aBlock) +{ with(self) +{ + var properties = [], + count = objj_msgSend(keys, "count"); + while (count--) + properties.push(WebDAVPropertiesForURLKeys[keys[count]]); + var makeContents = function(aURL, response) + { + var contents = [], + URLString = nil, + URLStrings = objj_msgSend(response, "keyEnumerator"); + while (URLString = objj_msgSend(URLStrings, "nextObject")) + { + var URL = objj_msgSend(CPURL, "URLWithString:", URLString), + properties = objj_msgSend(response, "objectForKey:", URLString); + if (!objj_msgSend(objj_msgSend(URL, "absoluteString"), "isEqual:", objj_msgSend(aURL, "absoluteString"))) + { + contents.push(URL); + setURLResourceValuesForKeysFromProperties(URL, keys, properties); + } + } + return contents; + } + if (!aBlock) + return makeContents(aURL, response); + objj_msgSend(self, "PROPFIND:properties:depth:block:", aURL, properties, 1, function(aURL, response) + { + aBlock(aURL, makeContents(aURL, response)); + }); +} +},["CPArray","CPURL","CPArray","CPDirectoryEnumerationOptions","Function"]), new objj_method(sel_getUid("PROPFIND:properties:depth:block:"), function $CPWebDAVManager__PROPFIND_properties_depth_block_(self, _cmd, aURL, properties, aDepth, aBlock) +{ with(self) +{ + var request = objj_msgSend(CPURLRequest, "requestWithURL:", aURL); + objj_msgSend(request, "setHTTPMethod:", "PROPFIND"); + objj_msgSend(request, "setValue:forHTTPHeaderField:", aDepth, "Depth"); + var HTTPBody = ["<?xml version=\"1.0\"?><a:propfind xmlns:a=\"DAV:\">"], + index = 0, + count = properties.length; + for (; index < count; ++index) + HTTPBody.push("<a:prop><a:", properties[index], "/></a:prop>"); + HTTPBody.push("</a:propfind>"); + objj_msgSend(request, "setHTTPBody:", HTTPBody.join("")); + if (!aBlock) + return parsePROPFINDResponse(objj_msgSend(objj_msgSend(CPURLConnection, "sendSynchronousRequest:returningResponse:", request, nil), "rawString")); + else + { + var connection = objj_msgSend(CPURLConnection, "connectionWithRequest:delegate:", request, self); + objj_msgSend(_blocksForConnections, "setObject:forKey:", aBlock, objj_msgSend(connection, "UID")); + } +} +},["CPDictionary","CPURL","CPDictionary","CPString","Function"]), new objj_method(sel_getUid("connection:didReceiveData:"), function $CPWebDAVManager__connection_didReceiveData_(self, _cmd, aURLConnection, aString) +{ with(self) +{ + var block = objj_msgSend(_blocksForConnections, "objectForKey:", objj_msgSend(aURLConnection, "UID")); + block(objj_msgSend(aURLConnection._request, "URL"), parsePROPFINDResponse(aString)); +} +},["void","CPURLConnection","CPString"])]); +} +var WebDAVPropertiesForURLKeys = { }; +WebDAVPropertiesForURLKeys[CPURLNameKey] = "displayname"; +WebDAVPropertiesForURLKeys[CPURLLocalizedNameKey] = "displayname"; +WebDAVPropertiesForURLKeys[CPURLIsRegularFileKey] = "resourcetype"; +WebDAVPropertiesForURLKeys[CPURLIsDirectoryKey] = "resourcetype"; +var XMLDocumentFromString = function(anXMLString) +{ + if (typeof window["ActiveXObject"] !== "undefined") + { + var XMLDocument = new ActiveXObject("Microsoft.XMLDOM"); + XMLDocument.async = false; + XMLDocument.loadXML(anXMLString); + return XMLDocument; + } + return new DOMParser().parseFromString(anXMLString,"text/xml"); +} +var parsePROPFINDResponse = function(anXMLString) +{ + var XMLDocument = XMLDocumentFromString(anXMLString), + responses = XMLDocument.getElementsByTagNameNS("*", "response"), + responseIndex = 0, + responseCount = responses.length; + var propertiesForURLs = objj_msgSend(CPDictionary, "dictionary"); + for (; responseIndex < responseCount; ++responseIndex) + { + var response = responses[responseIndex], + elements = response.getElementsByTagNameNS("*", "prop").item(0).childNodes, + index = 0, + count = elements.length, + properties = objj_msgSend(CPDictionary, "dictionary"); + for (; index < count; ++index) + { + var element = elements[index]; + if (element.nodeType === 8 || element.nodeType === 3) + continue; + var nodeName = element.nodeName, + colonIndex = nodeName.lastIndexOf(':'); + if (colonIndex > -1) + nodeName = nodeName.substr(colonIndex + 1); + if (nodeName === "resourcetype") + objj_msgSend(properties, "setObject:forKey:", element.firstChild ? CPWebDAVManagerCollectionResourceType : CPWebDAVManagerNonCollectionResourceType, nodeName); + else + objj_msgSend(properties, "setObject:forKey:", element.firstChild.nodeValue, nodeName); + } + var href = response.getElementsByTagNameNS("*", "href").item(0); + objj_msgSend(propertiesForURLs, "setObject:forKey:", properties, href.firstChild.nodeValue); + } + return propertiesForURLs; +} +var mapURLsAndProperties = function( properties, ignoredURL) +{ +} + +p;12;Foundation.jt;2730;@STATIC;1.0;i;9;CPArray.ji;10;CPBundle.ji;16;CPCharacterSet.ji;9;CPCoder.ji;23;CPComparisonPredicate.ji;21;CPCompoundPredicate.ji;8;CPData.ji;8;CPDate.ji;14;CPDictionary.ji;14;CPEnumerator.ji;13;CPException.ji;13;CPFormatter.ji;14;CPExpression.ji;12;CPIndexSet.ji;14;CPInvocation.ji;19;CPJSONPConnection.ji;17;CPKeyedArchiver.ji;19;CPKeyedUnarchiver.ji;18;CPKeyValueCoding.ji;21;CPKeyValueObserving.ji;16;CPNotification.ji;22;CPNotificationCenter.ji;8;CPNull.ji;10;CPNumber.ji;10;CPObject.ji;15;CPObjJRuntime.ji;13;CPOperation.ji;18;CPOperationQueue.ji;13;CPPredicate.ji;29;CPPropertyListSerialization.ji;9;CPRange.ji;11;CPRunLoop.ji;11;CPScanner.ji;7;CPSet.ji;18;CPSortDescriptor.ji;10;CPString.ji;9;CPTimer.ji;15;CPUndoManager.ji;7;CPURL.ji;17;CPURLConnection.ji;14;CPURLRequest.ji;15;CPURLResponse.ji;22;CPUserSessionManager.ji;9;CPValue.ji;20;CPValueTransformer.jt;1856;objj_executeFile("CPArray.j", YES); +objj_executeFile("CPBundle.j", YES); +objj_executeFile("CPCharacterSet.j", YES); +objj_executeFile("CPCoder.j", YES); +objj_executeFile("CPComparisonPredicate.j", YES); +objj_executeFile("CPCompoundPredicate.j", YES); +objj_executeFile("CPData.j", YES); +objj_executeFile("CPDate.j", YES); +objj_executeFile("CPDictionary.j", YES); +objj_executeFile("CPEnumerator.j", YES); +objj_executeFile("CPException.j", YES); +objj_executeFile("CPFormatter.j", YES); +objj_executeFile("CPExpression.j", YES); +objj_executeFile("CPIndexSet.j", YES); +objj_executeFile("CPInvocation.j", YES); +objj_executeFile("CPJSONPConnection.j", YES); +objj_executeFile("CPKeyedArchiver.j", YES); +objj_executeFile("CPKeyedUnarchiver.j", YES); +objj_executeFile("CPKeyValueCoding.j", YES); +objj_executeFile("CPKeyValueObserving.j", YES); +objj_executeFile("CPNotification.j", YES); +objj_executeFile("CPNotificationCenter.j", YES); +objj_executeFile("CPNull.j", YES); +objj_executeFile("CPNumber.j", YES); +objj_executeFile("CPObject.j", YES); +objj_executeFile("CPObjJRuntime.j", YES); +objj_executeFile("CPOperation.j", YES); +objj_executeFile("CPOperationQueue.j", YES); +objj_executeFile("CPPredicate.j", YES); +objj_executeFile("CPPropertyListSerialization.j", YES); +objj_executeFile("CPRange.j", YES); +objj_executeFile("CPRunLoop.j", YES); +objj_executeFile("CPScanner.j", YES); +objj_executeFile("CPSet.j", YES); +objj_executeFile("CPSortDescriptor.j", YES); +objj_executeFile("CPString.j", YES); +objj_executeFile("CPTimer.j", YES); +objj_executeFile("CPUndoManager.j", YES); +objj_executeFile("CPURL.j", YES); +objj_executeFile("CPURLConnection.j", YES); +objj_executeFile("CPURLRequest.j", YES); +objj_executeFile("CPURLResponse.j", YES); +objj_executeFile("CPUserSessionManager.j", YES); +objj_executeFile("CPValue.j", YES); +objj_executeFile("CPValueTransformer.j", YES); + +p;23;CPComparisonPredicate.jt;18740;@STATIC;1.0;i;9;CPArray.ji;8;CPNull.ji;10;CPString.ji;14;CPEnumerator.ji;13;CPPredicate.ji;14;CPExpression.ji;23;CPExpression_operator.jt;18596; + +objj_executeFile("CPArray.j", YES); +objj_executeFile("CPNull.j", YES); +objj_executeFile("CPString.j", YES); +objj_executeFile("CPEnumerator.j", YES); +objj_executeFile("CPPredicate.j", YES); +objj_executeFile("CPExpression.j", YES); +objj_executeFile("CPExpression_operator.j", YES); + + + + + + +CPDirectPredicateModifier = 0; + + + + + + + +CPAllPredicateModifier = 1; + + + + + + + +CPAnyPredicateModifier = 2; + + + + + + +CPCaseInsensitivePredicateOption = 1; + + + + + +CPDiacriticInsensitivePredicateOption = 2; +CPDiacriticInsensitiveSearch = 128; + + + + + + +CPLessThanPredicateOperatorType = 0; + + + + + +CPLessThanOrEqualToPredicateOperatorType = 1; + + + + + +CPGreaterThanPredicateOperatorType = 2; + + + + + +CPGreaterThanOrEqualToPredicateOperatorType = 3; + + + + + +CPEqualToPredicateOperatorType = 4; + + + + + +CPNotEqualToPredicateOperatorType = 5; + + + + + +CPMatchesPredicateOperatorType = 6; + + + + + +CPLikePredicateOperatorType = 7; + + + + + +CPBeginsWithPredicateOperatorType = 8; + + + + + +CPEndsWithPredicateOperatorType = 9; + + + + + + + +CPInPredicateOperatorType = 10; + + + + + + + +CPCustomSelectorPredicateOperatorType = 11; + + + + + + + +CPContainsPredicateOperatorType = 99; + + + + + + + +CPBetweenPredicateOperatorType = 100; + +var CPComparisonPredicateModifier; +var CPPredicateOperatorType; +{var the_class = objj_allocateClassPair(CPPredicate, "CPComparisonPredicate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_left"), new objj_ivar("_right"), new objj_ivar("_modifier"), new objj_ivar("_type"), new objj_ivar("_options"), new objj_ivar("_customSelector")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLeftExpression:rightExpression:customSelector:"), function $CPComparisonPredicate__initWithLeftExpression_rightExpression_customSelector_(self, _cmd, left, right, selector) +{ with(self) +{ + _left = left; + _right = right; + _modifier = CPDirectPredicateModifier; + _type = CPCustomSelectorPredicateOperatorType; + _options = 0; + _customSelector = selector; + return self; +} +},["id","CPExpression","CPExpression","SEL"]), new objj_method(sel_getUid("initWithLeftExpression:rightExpression:modifier:type:options:"), function $CPComparisonPredicate__initWithLeftExpression_rightExpression_modifier_type_options_(self, _cmd, left, right, modifier, type, options) +{ with(self) +{ + _left = left; + _right = right; + _modifier = modifier; + _type = type; + _options = (type != CPMatchesPredicateOperatorType && + type != CPLikePredicateOperatorType && + type != CPBeginsWithPredicateOperatorType && + type != CPEndsWithPredicateOperatorType && + type != CPInPredicateOperatorType && + type != CPContainsPredicateOperatorType) ? 0 : options; + _customSelector = NULL; + return self; +} +},["id","CPExpression","CPExpression","CPComparisonPredicateModifier","CPPredicateOperatorType","unsigned"]), new objj_method(sel_getUid("comparisonPredicateModifier"), function $CPComparisonPredicate__comparisonPredicateModifier(self, _cmd) +{ with(self) +{ + return _modifier; +} +},["CPComparisonPredicateModifier"]), new objj_method(sel_getUid("customSelector"), function $CPComparisonPredicate__customSelector(self, _cmd) +{ with(self) +{ + return _customSelector; +} +},["SEL"]), new objj_method(sel_getUid("leftExpression"), function $CPComparisonPredicate__leftExpression(self, _cmd) +{ with(self) +{ + return _left; +} +},["CPExpression"]), new objj_method(sel_getUid("options"), function $CPComparisonPredicate__options(self, _cmd) +{ with(self) +{ + return _options; +} +},["unsigned"]), new objj_method(sel_getUid("predicateOperatorType"), function $CPComparisonPredicate__predicateOperatorType(self, _cmd) +{ with(self) +{ + return _type; +} +},["CPPredicateOperatorType"]), new objj_method(sel_getUid("rightExpression"), function $CPComparisonPredicate__rightExpression(self, _cmd) +{ with(self) +{ + return _right; +} +},["CPExpression"]), new objj_method(sel_getUid("predicateFormat"), function $CPComparisonPredicate__predicateFormat(self, _cmd) +{ with(self) +{ + var modifier; + switch (_modifier) + { + case CPDirectPredicateModifier: + modifier = ""; + break; + case CPAllPredicateModifier: + modifier = "ALL "; + break; + case CPAnyPredicateModifier: + modifier = "ANY "; + break; + default: + modifier = ""; + break; + } + var options; + switch (_options) + { + case CPCaseInsensitivePredicateOption: + options = "[c]"; + break; + case CPDiacriticInsensitivePredicateOption: + options = "[d]"; + break; + case CPCaseInsensitivePredicateOption | CPDiacriticInsensitivePredicateOption: + options = "[cd]"; + break; + default: + options = ""; + break; + } + var operator; + switch (_type) + { + case CPLessThanPredicateOperatorType: + operator = "<"; + break; + case CPLessThanOrEqualToPredicateOperatorType: + operator = "<="; + break; + case CPGreaterThanPredicateOperatorType: + operator = ">"; + break; + case CPGreaterThanOrEqualToPredicateOperatorType: + operator = ">="; + break; + case CPEqualToPredicateOperatorType: + operator = "=="; + break; + case CPNotEqualToPredicateOperatorType: + operator = "!="; + break; + case CPMatchesPredicateOperatorType: + operator = "MATCHES"; + break; + case CPLikePredicateOperatorType: + operator = "LIKE"; + break; + case CPBeginsWithPredicateOperatorType: + operator = "BEGINSWITH"; + break; + case CPEndsWithPredicateOperatorType: + operator = "ENDSWITH"; + break; + case CPInPredicateOperatorType: + operator = "IN"; + break; + case CPContainsPredicateOperatorType: + operator = "CONTAINS"; + break; + case CPCustomSelectorPredicateOperatorType: + operator = CPStringFromSelector(_customSelector); + break; + } + return objj_msgSend(CPString, "stringWithFormat:", "%s%s %s%s %s",modifier,objj_msgSend(_left, "description"),operator,options,objj_msgSend(_right, "description")); +} +},["CPString"]), new objj_method(sel_getUid("predicateWithSubstitutionVariables:"), function $CPComparisonPredicate__predicateWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + var left = objj_msgSend(_left, "_expressionWithSubstitutionVariables:", variables), + right = objj_msgSend(_right, "_expressionWithSubstitutionVariables:", variables); + if (_type != CPCustomSelectorPredicateOperatorType) + return objj_msgSend(CPComparisonPredicate, "predicateWithLeftExpression:rightExpression:modifier:type:options:", left, right, _modifier, _type, _options); + else + return objj_msgSend(CPComparisonPredicate, "predicateWithLeftExpression:rightExpression:customSelector:", left, right, _customSelector); +} +},["CPPredicate","CPDictionary"]), new objj_method(sel_getUid("_evaluateValue:rightValue:"), function $CPComparisonPredicate___evaluateValue_rightValue_(self, _cmd, lhs, rhs) +{ with(self) +{ + var leftIsNil = (lhs == nil || objj_msgSend(lhs, "isEqual:", objj_msgSend(CPNull, "null"))), + rightIsNil = (rhs == nil || objj_msgSend(rhs, "isEqual:", objj_msgSend(CPNull, "null"))); + if ((leftIsNil || rightIsNil) && _type != CPCustomSelectorPredicateOperatorType) + return (leftIsNil == rightIsNil && + (_type == CPEqualToPredicateOperatorType || + _type == CPLessThanOrEqualToPredicateOperatorType || + _type == CPGreaterThanOrEqualToPredicateOperatorType)); + var string_compare_options = 0; + switch (_type) + { + case CPLessThanPredicateOperatorType: + return (objj_msgSend(lhs, "compare:", rhs) == CPOrderedAscending); + case CPLessThanOrEqualToPredicateOperatorType: + return (objj_msgSend(lhs, "compare:", rhs) != CPOrderedDescending); + case CPGreaterThanPredicateOperatorType: + return (objj_msgSend(lhs, "compare:", rhs) == CPOrderedDescending); + case CPGreaterThanOrEqualToPredicateOperatorType: + return (objj_msgSend(lhs, "compare:", rhs) != CPOrderedAscending); + case CPEqualToPredicateOperatorType: + return objj_msgSend(lhs, "isEqual:", rhs); + case CPNotEqualToPredicateOperatorType: + return (!objj_msgSend(lhs, "isEqual:", rhs)); + case CPMatchesPredicateOperatorType: + var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g"; + if (_options & CPDiacriticInsensitivePredicateOption) + { + lhs = lhs.stripDiacritics(); + rhs = rhs.stripDiacritics(); + } + return (new RegExp(rhs,commut)).test(lhs); + case CPLikePredicateOperatorType: + if (_options & CPDiacriticInsensitivePredicateOption) + { + lhs = lhs.stripDiacritics(); + rhs = rhs.stripDiacritics(); + } + var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g"; + var reg = new RegExp(rhs.escapeForRegExp(),commut); + return reg.test(lhs); + case CPBeginsWithPredicateOperatorType: + var range = CPMakeRange(0,objj_msgSend(rhs, "length")); + if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch; + if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch; + return (objj_msgSend(lhs, "compare:options:range:", rhs, string_compare_options, range) == CPOrderedSame); + case CPEndsWithPredicateOperatorType: + var range = CPMakeRange(objj_msgSend(lhs, "length") - objj_msgSend(rhs, "length"),objj_msgSend(rhs, "length")); + if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch; + if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch; + return (objj_msgSend(lhs, "compare:options:range:", rhs, string_compare_options, range) == CPOrderedSame); + case CPInPredicateOperatorType: + if (!objj_msgSend(rhs, "isKindOfClass:", objj_msgSend(CPString, "class"))) + { + if (!objj_msgSend(rhs, "respondsToSelector:", sel_getUid("objectEnumerator"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The right hand side for an IN operator must be a collection"); + var e = objj_msgSend(rhs, "objectEnumerator"), + value; + while (value = objj_msgSend(e, "nextObject")) + if (objj_msgSend(value, "isEqual:", lhs)) + return YES; + return NO; + } + if (_options & CPCaseInsensitivePredicateOption) + string_compare_options |= CPCaseInsensitiveSearch; + if (_options & CPDiacriticInsensitivePredicateOption) + string_compare_options |= CPDiacriticInsensitiveSearch; + return (objj_msgSend(rhs, "rangeOfString:options:", lhs, string_compare_options).location != CPNotFound); + case CPCustomSelectorPredicateOperatorType: + return objj_msgSend(lhs, "performSelector:withObject:", _customSelector, rhs); + case CPContainsPredicateOperatorType: + if (!objj_msgSend(lhs, "isKindOfClass:", objj_msgSend(CPString, "class"))) + { + if (!objj_msgSend(lhs, "respondsToSelector:", sel_getUid("objectEnumerator"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The left hand side for a CONTAINS operator must be a collection or a string"); + var e = objj_msgSend(lhs, "objectEnumerator"), + value; + while (value = objj_msgSend(e, "nextObject")) + if (objj_msgSend(value, "isEqual:", rhs)) + return YES; + return NO; + } + if (_options & CPCaseInsensitivePredicateOption) + string_compare_options |= CPCaseInsensitiveSearch; + if (_options & CPDiacriticInsensitivePredicateOption) + string_compare_options |= CPDiacriticInsensitiveSearch; + return (objj_msgSend(lhs, "rangeOfString:options:", rhs, string_compare_options).location != CPNotFound); + case CPBetweenPredicateOperatorType: + if (objj_msgSend(lhs, "count") < 2) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The right hand side for a BETWEEN operator must contain 2 objects"); + var lower = objj_msgSend(rhs, "objectAtIndex:", 0), + upper = objj_msgSend(rhs, "objectAtIndex:", 1); + return (objj_msgSend(lhs, "compare:", lower) == CPOrderedDescending && objj_msgSend(lhs, "compare:", upper) == CPOrderedAscending); + default: + return NO; + } +} +},["BOOL",null,null]), new objj_method(sel_getUid("evaluateWithObject:"), function $CPComparisonPredicate__evaluateWithObject_(self, _cmd, object) +{ with(self) +{ + return objj_msgSend(self, "evaluateWithObject:substitutionVariables:", object, nil); +} +},["BOOL","id"]), new objj_method(sel_getUid("evaluateWithObject:substitutionVariables:"), function $CPComparisonPredicate__evaluateWithObject_substitutionVariables_(self, _cmd, object, variables) +{ with(self) +{ + var left = _left, + right = _right; + if (variables != nil) + { + left = objj_msgSend(left, "_expressionWithSubstitutionVariables:", variables); + right = objj_msgSend(right, "_expressionWithSubstitutionVariables:", variables); + } + var leftValue = objj_msgSend(left, "expressionValueWithObject:context:", object, nil), + rightValue = objj_msgSend(right, "expressionValueWithObject:context:", object, nil); + if (_modifier == CPDirectPredicateModifier) + return objj_msgSend(self, "_evaluateValue:rightValue:", leftValue, rightValue); + else + { + if (!objj_msgSend(leftValue, "respondsToSelector:", sel_getUid("objectEnumerator"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The left hand side for an ALL or ANY operator must be either a CPArray or a CPSet"); + var e = objj_msgSend(leftValue, "objectEnumerator"), + result = (_modifier == CPAllPredicateModifier), + value; + while (value = objj_msgSend(e, "nextObject")) + { + var eval = objj_msgSend(self, "_evaluateValue:rightValue:", value, rightValue); + if (eval != result) + return eval; + } + return result; + } +} +},["BOOL","id","CPDictionary"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("predicateWithLeftExpression:rightExpression:customSelector:"), function $CPComparisonPredicate__predicateWithLeftExpression_rightExpression_customSelector_(self, _cmd, left, right, selector) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithLeftExpression:rightExpression:customSelector:", left, right, selector); +} +},["CPPredicate","CPExpression","CPExpression","SEL"]), new objj_method(sel_getUid("predicateWithLeftExpression:rightExpression:modifier:type:options:"), function $CPComparisonPredicate__predicateWithLeftExpression_rightExpression_modifier_type_options_(self, _cmd, left, right, modifier, type, options) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithLeftExpression:rightExpression:modifier:type:options:", left, right, modifier, type, options); +} +},["CPPredicate","CPExpression","CPExpression","CPComparisonPredicateModifier","int","unsigned"])]); +} +{ +var the_class = objj_getClass("CPComparisonPredicate") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPComparisonPredicate\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPComparisonPredicate__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPComparisonPredicate").super_class }, "init"); + if (self != nil) + { + _left = objj_msgSend(coder, "decodeObjectForKey:", "CPComparisonPredicateLeftExpression"); + _right = objj_msgSend(coder, "decodeObjectForKey:", "CPComparisonPredicateRightExpression"); + _modifier = objj_msgSend(coder, "decodeIntForKey:", "CPComparisonPredicateModifier"); + _type = objj_msgSend(coder, "decodeIntForKey:", "CPComparisonPredicateType"); + _options = objj_msgSend(coder, "decodeIntForKey:", "CPComparisonPredicateOptions"); + _customSelector = objj_msgSend(coder, "decodeObjectForKey:", "CPComparisonPredicateCustomSelector"); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPComparisonPredicate__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _left, "CPComparisonPredicateLeftExpression"); + objj_msgSend(coder, "encodeObject:forKey:", _right, "CPComparisonPredicateRightExpression"); + objj_msgSend(coder, "encodeInt:forKey:", _modifier, "CPComparisonPredicateModifier"); + objj_msgSend(coder, "encodeInt:forKey:", _type, "CPComparisonPredicateType"); + objj_msgSend(coder, "encodeInt:forKey:", _options, "CPComparisonPredicateOptions"); + objj_msgSend(coder, "encodeObject:forKey:", _customSelector, "CPComparisonPredicateCustomSelector"); +} +},["void","CPCoder"])]); +} +var source = ['*','?','(',')','{','}','.','+','|','/','$','^']; +var dest = ['.*','.?','\\(','\\)','\\{','\\}','\\.','\\+','\\|','\\/','\\$','\\^']; +String.prototype.escapeForRegExp = function() +{ + var foundChar = false; + for (var i = 0; i < source.length; ++i) + { + if (this.indexOf(source[i]) !== -1) + { + foundChar = true; + break; + } + } + if (!foundChar) + return this; + var result = "", + sourceIndex; + for (var i = 0; i < this.length; ++i) + { + var sourceIndex = source.indexOf(this.charAt(i)); + if (sourceIndex !== -1) + result += dest[sourceIndex]; + else + result += this.charAt(i); + } + return result; +} + +p;21;CPCompoundPredicate.jt;7167;@STATIC;1.0;i;13;CPPredicate.jI;20;Foundation/CPArray.jI;21;Foundation/CPString.jt;7079; + +objj_executeFile("CPPredicate.j", YES); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPString.j", NO); + + + + + + +CPNotPredicateType = 0; + + + + + +CPAndPredicateType = 1; + + + + + +CPOrPredicateType = 2; + +var CPCompoundPredicateType; +{var the_class = objj_allocateClassPair(CPPredicate, "CPCompoundPredicate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_type"), new objj_ivar("_predicates")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithType:subpredicates:"), function $CPCompoundPredicate__initWithType_subpredicates_(self, _cmd, type, predicates) +{ with(self) +{ + _type = type; + _predicates = predicates; + return self; +} +},["id","CPCompoundPredicateType","CPArray"]), new objj_method(sel_getUid("compoundPredicateType"), function $CPCompoundPredicate__compoundPredicateType(self, _cmd) +{ with(self) +{ + return _type; +} +},["CPCompoundPredicateType"]), new objj_method(sel_getUid("subpredicates"), function $CPCompoundPredicate__subpredicates(self, _cmd) +{ with(self) +{ + return _predicates; +} +},["CPArray"]), new objj_method(sel_getUid("predicateWithSubstitutionVariables:"), function $CPCompoundPredicate__predicateWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + var subp = objj_msgSend(CPArray, "array"), + count = objj_msgSend(subp, "count"); + i; + for (i = 0; i < count; i++) + { + var p = objj_msgSend(subp, "objectAtIndex:", i), + sp = objj_msgSend(p, "predicateWithSubstitutionVariables:", variables); + objj_msgSend(subp, "addObject:", sp); + } + return objj_msgSend(objj_msgSend(CPCompoundPredicate, "alloc"), "initWithType:subpredicates:", _type, subp); +} +},["CPPredicate","CPDictionary"]), new objj_method(sel_getUid("predicateFormat"), function $CPCompoundPredicate__predicateFormat(self, _cmd) +{ with(self) +{ + var result = "", + args = objj_msgSend(CPArray, "array"), + count = objj_msgSend(_predicates, "count"), + i; + if (count == 0) + return "TRUPREDICATE"; + for (i = 0; i < count; i++) + { + var subpredicate = objj_msgSend(_predicates, "objectAtIndex:", i), + precedence = objj_msgSend(subpredicate, "predicateFormat"); + if (objj_msgSend(subpredicate, "isKindOfClass:", objj_msgSend(CPCompoundPredicate, "class")) && objj_msgSend(objj_msgSend(subpredicate, "subpredicates"), "count")> 1 && objj_msgSend(subpredicate, "compoundPredicateType") != _type) + precedence = objj_msgSend(CPString, "stringWithFormat:", "(%s)",precedence); + if (precedence != nil) + objj_msgSend(args, "addObject:", precedence); + } + switch (_type) + { + case CPNotPredicateType: + result += "NOT %s" + objj_msgSend(args, "objectAtIndex:", 0); + break; + case CPAndPredicateType: + result += objj_msgSend(args, "objectAtIndex:", 0); + var count = objj_msgSend(args, "count"); + for (var j = 1; j < count; j++) + result += " AND " + objj_msgSend(args, "objectAtIndex:", j); + break; + case CPOrPredicateType: + result += objj_msgSend(args, "objectAtIndex:", 0); + var count = objj_msgSend(args, "count"); + for (var j = 1; j < count; j++) + result += " OR " + objj_msgSend(args, "objectAtIndex:", j); + break; + } + return result; +} +},["CPString"]), new objj_method(sel_getUid("evaluateWithObject:"), function $CPCompoundPredicate__evaluateWithObject_(self, _cmd, object) +{ with(self) +{ + return objj_msgSend(self, "evaluateWithObject:substitutionVariables:", object, nil); +} +},["BOOL","id"]), new objj_method(sel_getUid("evaluateWithObject:substitutionVariables:"), function $CPCompoundPredicate__evaluateWithObject_substitutionVariables_(self, _cmd, object, variables) +{ with(self) +{ + var result = NO, + count = objj_msgSend(_predicates, "count"), + i; + if (count == 0) + return YES; + for (i = 0; i < count; i++) + { + var predicate = objj_msgSend(_predicates, "objectAtIndex:", i); + switch (_type) + { + case CPNotPredicateType: + return !objj_msgSend(predicate, "evaluateWithObject:substitutionVariables:", object, variables); + case CPAndPredicateType: + if (i == 0) + result = objj_msgSend(predicate, "evaluateWithObject:substitutionVariables:", object, variables); + else + result = result && objj_msgSend(predicate, "evaluateWithObject:substitutionVariables:", object, variables); + if (!result) + return NO; + break; + case CPOrPredicateType: + if (objj_msgSend(predicate, "evaluateWithObject:substitutionVariables:", object, variables)) + return YES; + break; + } + } + return result; +} +},["BOOL","id","CPDictionary"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("notPredicateWithSubpredicate:"), function $CPCompoundPredicate__notPredicateWithSubpredicate_(self, _cmd, predicate) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithType:subpredicates:", CPNotPredicateType, objj_msgSend(CPArray, "arrayWithObject:", predicate)); +} +},["CPPredicate","CPPredicate"]), new objj_method(sel_getUid("andPredicateWithSubpredicates:"), function $CPCompoundPredicate__andPredicateWithSubpredicates_(self, _cmd, subpredicates) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithType:subpredicates:", CPAndPredicateType, subpredicates); +} +},["CPPredicate","CPArray"]), new objj_method(sel_getUid("orPredicateWithSubpredicates:"), function $CPCompoundPredicate__orPredicateWithSubpredicates_(self, _cmd, predicates) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithType:subpredicates:", CPOrPredicateType, predicates); +} +},["CPPredicate","CPArray"])]); +} +{ +var the_class = objj_getClass("CPCompoundPredicate") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPCompoundPredicate\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("initWithCoder:"), function $CPCompoundPredicate__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPCompoundPredicate").super_class }, "init"); + if (self != nil) + { + _predicates = objj_msgSend(coder, "decodeObjectForKey:", "CPCompoundPredicateSubpredicates"); + _type = objj_msgSend(coder, "decodeIntForKey:", "CPCompoundPredicateType"); + } + return self; +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPCompoundPredicate__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _predicates, "CPCompoundPredicateSubpredicates"); + objj_msgSend(coder, "encodeInt:forKey:", _type, "CPCompoundPredicateType"); +} +},["void","CPCoder"])]); +} + +p;14;CPExpression.jt;6937;@STATIC;1.0;I;21;Foundation/CPString.jI;20;Foundation/CPArray.jI;29;Foundation/CPKeyValueCoding.jI;25;Foundation/CPDictionary.jI;20;Foundation/CPCoder.ji;23;CPExpression_constant.ji;19;CPExpression_self.ji;23;CPExpression_variable.ji;22;CPExpression_keypath.ji;23;CPExpression_function.ji;24;CPExpression_aggregate.ji;23;CPExpression_unionset.ji;27;CPExpression_intersectset.ji;23;CPExpression_minusset.jt;6526; + +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPKeyValueCoding.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPCoder.j", NO); + + + + +CPConstantValueExpressionType = 0; + + + +CPEvaluatedObjectExpressionType = 1; + + + +CPVariableExpressionType = 2; + + + +CPKeyPathExpressionType = 3; + + + +CPFunctionExpressionType = 4; + + + +CPAggregateExpressionType = 5; + + + +CPSubqueryExpressionType = 6; + + + +CPUnionSetExpressionType = 7; + + + +CPIntersectSetExpressionType = 8; + + + +CPMinusSetExpressionType = 9; +{var the_class = objj_allocateClassPair(CPObject, "CPExpression"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_type")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithExpressionType:"), function $CPExpression__initWithExpressionType_(self, _cmd, type) +{ with(self) +{ + _type = type; + return self; +} +},["id","int"]), new objj_method(sel_getUid("expressionType"), function $CPExpression__expressionType(self, _cmd) +{ with(self) +{ + return _type; +} +},["int"]), new objj_method(sel_getUid("constantValue"), function $CPExpression__constantValue(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "self is not of CPConstantValueExpressionType"); + return nil; +} +},["id"]), new objj_method(sel_getUid("variable"), function $CPExpression__variable(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "self is not of CPVariableExpressionType"); + return nil; +} +},["CPString"]), new objj_method(sel_getUid("keyPath"), function $CPExpression__keyPath(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "self is not of CPKeyPathExpressionType"); + return nil; +} +},["CPString"]), new objj_method(sel_getUid("function"), function $CPExpression__function(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "self is not of CPFunctionExpressionType"); + return nil; +} +},["CPString"]), new objj_method(sel_getUid("arguments"), function $CPExpression__arguments(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "self is not of CPFunctionExpressionType"); + return nil; +} +},["CPArray"]), new objj_method(sel_getUid("collection"), function $CPExpression__collection(self, _cmd) +{ with(self) +{ + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "self is not of CPAggregateExpressionType"); + return nil; +} +},["id"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("expressionForConstantValue:"), function $CPExpression__expressionForConstantValue_(self, _cmd, value) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_constant, "alloc"), "initWithValue:", value); +} +},["CPExpression","id"]), new objj_method(sel_getUid("expressionForEvaluatedObject"), function $CPExpression__expressionForEvaluatedObject(self, _cmd) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_self, "alloc"), "init"); +} +},["CPExpression"]), new objj_method(sel_getUid("expressionForVariable:"), function $CPExpression__expressionForVariable_(self, _cmd, string) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_variable, "alloc"), "initWithVariable:", string); +} +},["CPExpression","CPString"]), new objj_method(sel_getUid("expressionForKeyPath:"), function $CPExpression__expressionForKeyPath_(self, _cmd, keyPath) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_keypath, "alloc"), "initWithKeyPath:", keyPath); +} +},["CPExpression","CPString"]), new objj_method(sel_getUid("expressionForAggregate:"), function $CPExpression__expressionForAggregate_(self, _cmd, collection) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_aggregate, "alloc"), "initWithAggregate:", collection); +} +},["CPExpression","CPArray"]), new objj_method(sel_getUid("expressionForUnionSet:with:"), function $CPExpression__expressionForUnionSet_with_(self, _cmd, left, right) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_unionset, "alloc"), "initWithLeft:right:", left, right); +} +},["CPExpression","CPExpression","CPExpression"]), new objj_method(sel_getUid("expressionForIntersectSet:with:"), function $CPExpression__expressionForIntersectSet_with_(self, _cmd, left, right) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_intersectset, "alloc"), "initWithLeft:right:", left, right); +} +},["CPExpression","CPExpression","CPExpression"]), new objj_method(sel_getUid("expressionForMinusSet:with:"), function $CPExpression__expressionForMinusSet_with_(self, _cmd, left, right) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_minusset, "alloc"), "initWithLeft:right:", left, right); +} +},["CPExpression","CPExpression","CPExpression"]), new objj_method(sel_getUid("expressionForFunction:arguments:"), function $CPExpression__expressionForFunction_arguments_(self, _cmd, function_name, parameters) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_function, "alloc"), "initWithSelector:arguments:", CPSelectorFromString(function_name), parameters); +} +},["CPExpression","CPString","CPArray"]), new objj_method(sel_getUid("expressionForFunction:selectorName:arguments:"), function $CPExpression__expressionForFunction_selectorName_arguments_(self, _cmd, target, function_name, parameters) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPExpression_function, "alloc"), "initWithTarget:selector:arguments:", target, CPSelectorFromString(function_name), parameters); +} +},["CPExpression","CPExpression","CPString","CPArray"]), new objj_method(sel_getUid("expressionForSubquery:usingIteratorVariable:predicate:"), function $CPExpression__expressionForSubquery_usingIteratorVariable_predicate_(self, _cmd, expression, variable, predicate) +{ with(self) +{ + return nil; +} +},["CPExpression","CPExpression","CPString","id"])]); +} +objj_executeFile("CPExpression_constant.j", YES); +objj_executeFile("CPExpression_self.j", YES); +objj_executeFile("CPExpression_variable.j", YES); +objj_executeFile("CPExpression_keypath.j", YES); +objj_executeFile("CPExpression_function.j", YES); +objj_executeFile("CPExpression_aggregate.j", YES); +objj_executeFile("CPExpression_unionset.j", YES); +objj_executeFile("CPExpression_intersectset.j", YES); +objj_executeFile("CPExpression_minusset.j", YES); + +p;24;CPExpression_aggregate.jt;4501;@STATIC;1.0;i;14;CPExpression.jI;20;Foundation/CPArray.jI;21;Foundation/CPString.jt;4412; + + +objj_executeFile("CPExpression.j", YES); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPString.j", NO); + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_aggregate"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_aggregate")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithAggregate:"), function $CPExpression_aggregate__initWithAggregate_(self, _cmd, collection) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_aggregate").super_class }, "initWithExpressionType:", CPAggregateExpressionType); + _aggregate = collection; + return self; +} +},["id","CPArray"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_aggregate__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + var aggregate = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionAggregate"); + return objj_msgSend(self, "initWithAggregate:", aggregate); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_aggregate__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _aggregate, "CPExpressionAggregate"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_aggregate__isEqual_(self, _cmd, object) +{ with(self) +{ + if (self == object) + return YES; + + if (object.isa != self.isa || objj_msgSend(object, "expressionType") != objj_msgSend(self, "expressionType") || !objj_msgSend(objj_msgSend(object, "collection"), "isEqual:", objj_msgSend(self, "collection"))) + return NO; + + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("collection"), function $CPExpression_aggregate__collection(self, _cmd) +{ with(self) +{ + return _aggregate; +} +},["id"]), new objj_method(sel_getUid("rightExpression"), function $CPExpression_aggregate__rightExpression(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_aggregate, "count") > 0) + return objj_msgSend(_aggregate, "lastObject"); + + return nil; +} +},["CPExpression"]), new objj_method(sel_getUid("leftExpression"), function $CPExpression_aggregate__leftExpression(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_aggregate, "count") > 0) + return objj_msgSend(_aggregate, "objectAtIndex:", 0); + + return nil; +} +},["CPExpression"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_aggregate__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + var eval_array = objj_msgSend(CPArray, "array"), + collection = objj_msgSend(_aggregate, "objectEnumerator"), + exp; + + while (exp = objj_msgSend(collection, "nextObject")) + { + var eval = objj_msgSend(exp, "expressionValueWithObject:context:", object, context); + if (eval != nil)objj_msgSend(eval_array, "addObject:", eval); + } + + return eval_array; +} +},["id","id","CPDictionary"]), new objj_method(sel_getUid("description"), function $CPExpression_aggregate__description(self, _cmd) +{ with(self) +{ + var i, + count = objj_msgSend(_aggregate, "count"), + result = "{"; + + for (i = 0; i < count; i++) + result = result + objj_msgSend(CPString, "stringWithFormat:", "%s%s", objj_msgSend(objj_msgSend(_aggregate, "objectAtIndex:", i), "description"), (i + 1 < count) ? ", " : ""); + + result = result + "}"; + + return result; +} +},["CPString"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_aggregate___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + var subst_array = objj_msgSend(CPArray, "array"), + count = objj_msgSend(_aggregate, "count"), + i; + + for (i = 0; i < count; i++) + objj_msgSend(subst_array, "addObject:", objj_msgSend(objj_msgSend(_aggregate, "objectAtIndex:", i), "_expressionWithSubstitutionVariables:", variables)); + + return objj_msgSend(CPExpression, "expressionForAggregate:", subst_array); +} +},["CPExpression","CPDictionary"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("expressionForAggregate:"), function $CPExpression_aggregate__expressionForAggregate_(self, _cmd, collection) +{ with(self) +{ + return objj_msgSend(objj_msgSend(self, "alloc"), "initWithAggregate:", collection); +} +},["CPExpression","CPArray"])]); +} + +p;25;CPExpression_assignment.jt;4071;@STATIC;1.0;i;14;CPExpression.ji;23;CPExpression_variable.jI;21;Foundation/CPString.jt;3979; + + +objj_executeFile("CPExpression.j", YES); +objj_executeFile("CPExpression_variable.j", YES); +objj_executeFile("Foundation/CPString.j", NO); + + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_assignment"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_assignmentVariable"), new objj_ivar("_subexpression")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithAssignmentVariable:expression:"), function $CPExpression_assignment__initWithAssignmentVariable_expression_(self, _cmd, variable, expression) +{ with(self) +{ + _assignmentVariable = objj_msgSend(CPExpression, "expressionForVariable:", variable); + _subexpression = expression; + + return self; +} +},["id","CPString","CPExpression"]), new objj_method(sel_getUid("initWithAssignmentExpression:expression:"), function $CPExpression_assignment__initWithAssignmentExpression_expression_(self, _cmd, variableExpression, expression) +{ with(self) +{ + _assignmentVariable = variableExpression; + _subexpression = expression; + + return self; +} +},["id","CPExpression","CPExpression"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_assignment__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + var variable = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionAssignmentVariable"); + var expression = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionAssignmentExpression"); + + return objj_msgSend(self, "initWithAssignmentVariable:expression:", variable, expression); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_assignment__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _assignmentVariable, "CPExpressionAssignmentVariable"); + objj_msgSend(coder, "encodeObject:forKey:", _subexpression, "CPExpressionAssignmentExpression"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_assignment__isEqual_(self, _cmd, object) +{ with(self) +{ + if (self == object) + return YES; + + if (object.isa != self.isa || objj_msgSend(object, "expressionType") != objj_msgSend(self, "expressionType") || !objj_msgSend(objj_msgSend(object, "subexpression"), "isEqual:", objj_msgSend(self, "subexpression")) || !objj_msgSend(objj_msgSend(object, "variable"), "isEqualToString:", objj_msgSend(self, "variable"))) + return NO; + + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("assignmentVariable"), function $CPExpression_assignment__assignmentVariable(self, _cmd) +{ with(self) +{ + return _assignmentVariable; +} +},["CPExpression"]), new objj_method(sel_getUid("subexpression"), function $CPExpression_assignment__subexpression(self, _cmd) +{ with(self) +{ + return _subexpression; +} +},["CPExpression"]), new objj_method(sel_getUid("variable"), function $CPExpression_assignment__variable(self, _cmd) +{ with(self) +{ + return objj_msgSend(_assignmentVariable, "variable"); +} +},["CPString"]), new objj_method(sel_getUid("description"), function $CPExpression_assignment__description(self, _cmd) +{ with(self) +{ + var pretty = objj_msgSend(_expression, "description"); + + if (objj_msgSend(_subexpression, "isKindOfClass:", objj_msgSend(CPExpression_operator, "class"))) + pretty = objj_msgSend(CPString, "stringWithFormat:", "(%@)", pretty); + + return objj_msgSend(CPString, "stringWithFormat:", "%@ := %@", objj_msgSend(self, "variable"), pretty); +} +},["CPString"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_assignment__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + + return nil; +} +},["id","id","id"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_assignment___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + + return nil; +} +},["CPExpression","CPDictionary"])]); +} + +p;23;CPExpression_constant.jt;2634;@STATIC;1.0;i;14;CPExpression.jI;25;Foundation/CPDictionary.jt;2566; + + +objj_executeFile("CPExpression.j", YES); +objj_executeFile("Foundation/CPDictionary.j", NO); + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_constant"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_value")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithValue:"), function $CPExpression_constant__initWithValue_(self, _cmd, value) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_constant").super_class }, "initWithExpressionType:", CPConstantValueExpressionType); + _value = value; + + return self; +} +},["id","id"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_constant__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + var value = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionConstantValue"); + + return objj_msgSend(self, "initWithValue:", value); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_constant__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _value, "CPExpressionConstantValue"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_constant__isEqual_(self, _cmd, object) +{ with(self) +{ + if (self == object) + return YES; + + if (object.isa != self.isa || objj_msgSend(object, "expressionType") != objj_msgSend(self, "expressionType") || !objj_msgSend(objj_msgSend(object, "constantValue"), "isEqual:", objj_msgSend(self, "constantValue"))) + return NO; + + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("constantValue"), function $CPExpression_constant__constantValue(self, _cmd) +{ with(self) +{ + return _value; +} +},["id"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_constant__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + return _value; +} +},["id",null,"CPDictionary"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_constant___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + return self; +} +},["CPExpression","CPDictionary"]), new objj_method(sel_getUid("description"), function $CPExpression_constant__description(self, _cmd) +{ with(self) +{ + if (objj_msgSend(_value, "isKindOfClass:", objj_msgSend(CPString, "class"))) + return "\"" + _value + "\""; + + return objj_msgSend(_value, "description"); +} +},["CPString"])]); +} + +p;23;CPExpression_function.jt;15815;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jt;15695; + + +objj_executeFile("CPExpression.j", YES); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_function"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_operand"), new objj_ivar("_selector"), new objj_ivar("_arguments"), new objj_ivar("_argc")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithSelector:arguments:"), function $CPExpression_function__initWithSelector_arguments_(self, _cmd, aselector, parameters) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_function").super_class }, "initWithExpressionType:", CPFunctionExpressionType); + + if (!objj_msgSend(self, "respondsToSelector:", aselector)) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Unknown function implementation: " + aselector); + + _selector = aselector; + _operand = nil; + _arguments = parameters; + _argc = objj_msgSend(parameters, "count"); + + return self; +} +},["id","SEL","CPArray"]), new objj_method(sel_getUid("initWithTarget:selector:arguments:"), function $CPExpression_function__initWithTarget_selector_arguments_(self, _cmd, targetExpression, aselector, parameters) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_function").super_class }, "initWithExpressionType:", CPFunctionExpressionType); + + var target = objj_msgSend(targetExpression, "expressionValueWithObject:context:", object, context); + if (!objj_msgSend(target, "respondsToSelector:", aselector)) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Unknown function implementation: " + aselector); + + _selector = aselector; + _operand = targetExpression; + _arguments = parameters; + _argc = objj_msgSend(parameters, "count"); + + return self; +} +},["id","CPExpression","SEL","CPArray"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_function__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + var selector = CPSelectorFromString(objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionFunctionName")); + var arguments = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionFunctionArguments"); + + return objj_msgSend(self, "initWithSelector:arguments:", selector, arguments); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_function__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", objj_msgSend(self, "_function"), "CPExpressionFunctionName"); + objj_msgSend(coder, "encodeObject:forKey:", _arguments, "CPExpressionArguments"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_function__isEqual_(self, _cmd, object) +{ with(self) +{ + if (self == object) + return YES; + + if (object.isa != self.isa || objj_msgSend(object, "expressionType") != objj_msgSend(self, "expressionType") || !objj_msgSend(objj_msgSend(object, "_function"), "isEqualToString:", objj_msgSend(self, "_function")) || !objj_msgSend(objj_msgSend(object, "operand"), "isEqual:", objj_msgSend(self, "operand")) || !objj_msgSend(objj_msgSend(object, "arguments"), "isEqualToArray:", objj_msgSend(self, "arguments"))) + return NO; + + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("_function"), function $CPExpression_function___function(self, _cmd) +{ with(self) +{ + return CPStringFromSelector(_selector); +} +},["CPString"]), new objj_method(sel_getUid("function"), function $CPExpression_function__function(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "_function"); +} +},["CPString"]), new objj_method(sel_getUid("arguments"), function $CPExpression_function__arguments(self, _cmd) +{ with(self) +{ + return _arguments; +} +},["CPArray"]), new objj_method(sel_getUid("operand"), function $CPExpression_function__operand(self, _cmd) +{ with(self) +{ + return _operand; +} +},["CPExpression"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_function__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + var eval_args = objj_msgSend(CPArray, "array"), + i; + + for (i = 0; i < _argc; i++) + { + var arg = objj_msgSend(objj_msgSend(_arguments, "objectAtIndex:", i), "expressionValueWithObject:context:", object, context); + if (arg != nil) + objj_msgSend(eval_args, "addObject:", arg); + } + + var target = (_operand == nil) ? self : objj_msgSend(_operand, "expressionValueWithObject:context:", object, context); + return objj_msgSend(target, "performSelector:withObject:", _selector, eval_args); +} +},["id","id","CPDictionary"]), new objj_method(sel_getUid("description"), function $CPExpression_function__description(self, _cmd) +{ with(self) +{ + var result = objj_msgSend(CPString, "stringWithFormat:", "%@ %s(", objj_msgSend(_operand, "description"), objj_msgSend(self, "_function")), + i; + + for (i = 0; i < _argc; i++) + result = result + objj_msgSend(_arguments, "objectAtIndex:", i) + (i+1<_argc) ? ", " : ""; + + result = result + ")"; + + return result ; +} +},["CPString"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_function___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + var array = objj_msgSend(CPArray, "array"), + i; + + for (i = 0; i < _argc; i++) + objj_msgSend(array, "addObject:", objj_msgSend(objj_msgSend(_arguments, "objectAtIndex:", i), "_expressionWithSubstitutionVariables:", variables)); + + return objj_msgSend(CPExpression, "expressionForFunction:selectorName:arguments:", objj_msgSend(self, "operand"), objj_msgSend(self, "_function"), array); +} +},["CPExpression","CPDictionary"]), new objj_method(sel_getUid("sum:"), function $CPExpression_function__sum_(self, _cmd, parameters) +{ with(self) +{ + if (_argc < 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var i, + sum = 0.0; + + for (i = 0; i < _argc; i++) + sum += objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", i), "doubleValue"); + + return objj_msgSend(CPNumber, "numberWithDouble:", sum); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("count:"), function $CPExpression_function__count_(self, _cmd, parameters) +{ with(self) +{ + if (_argc < 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + return objj_msgSend(CPNumber, "numberWithUnsignedInt:", objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "count")); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("min:"), function $CPExpression_function__min_(self, _cmd, parameters) +{ with(self) +{ + if (_argc < 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + return MIN(objj_msgSend(parameters, "objectAtIndex:", 0),objj_msgSend(parameters, "objectAtIndex:", 1)); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("max:"), function $CPExpression_function__max_(self, _cmd, parameters) +{ with(self) +{ + if (_argc < 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + return MAX(objj_msgSend(parameters, "objectAtIndex:", 0),objj_msgSend(parameters, "objectAtIndex:", 1)); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("average:"), function $CPExpression_function__average_(self, _cmd, parameters) +{ with(self) +{ + if (_argc < 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var i, + sum = 0.0; + + for (i = 0; i < _argc; i++) + sum += objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", i), "doubleValue"); + + return objj_msgSend(CPNumber, "numberWithDouble:", sum / _argc); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("add::"), function $CPExpression_function__add__(self, _cmd, to, parameters) +{ with(self) +{ + if (_argc != 2) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var left = objj_msgSend(parameters, "objectAtIndex:", 0), + right = objj_msgSend(parameters, "objectAtIndex:", 1); + + return objj_msgSend(CPNumber, "numberWithDouble:", objj_msgSend(left, "doubleValue") + objj_msgSend(right, "doubleValue")); +} +},["CPNumber",null,"CPArray"]), new objj_method(sel_getUid("from::"), function $CPExpression_function__from__(self, _cmd, subtract, parameters) +{ with(self) +{ + if (_argc != 2) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var left = objj_msgSend(parameters, "objectAtIndex:", 0), + right = objj_msgSend(parameters, "objectAtIndex:", 1); + + return objj_msgSend(CPNumber, "numberWithDouble:", objj_msgSend(left, "doubleValue") - objj_msgSend(right, "doubleValue")); +} +},["CPNumber",null,"CPArray"]), new objj_method(sel_getUid("multiply::"), function $CPExpression_function__multiply__(self, _cmd, by, parameters) +{ with(self) +{ + if (_argc != 2) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var left = objj_msgSend(parameters, "objectAtIndex:", 0), + right = objj_msgSend(parameters, "objectAtIndex:", 1); + + return objj_msgSend(CPNumber, "numberWithDouble:", objj_msgSend(left, "doubleValue") * objj_msgSend(right, "doubleValue")); +} +},["CPNumber",null,"CPArray"]), new objj_method(sel_getUid("divide::"), function $CPExpression_function__divide__(self, _cmd, by, parameters) +{ with(self) +{ + if (_argc != 2) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var left = objj_msgSend(parameters, "objectAtIndex:", 0), + right = objj_msgSend(parameters, "objectAtIndex:", 1); + + return objj_msgSend(CPNumber, "numberWithDouble:", objj_msgSend(left, "doubleValue") / objj_msgSend(right, "doubleValue")); +} +},["CPNumber",null,"CPArray"]), new objj_method(sel_getUid("sqrt:"), function $CPExpression_function__sqrt_(self, _cmd, parameters) +{ with(self) +{ + if (_argc != 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var num = objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "doubleValue"); + + return objj_msgSend(CPNumber, "numberWithDouble:", SQRT(num)); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("raise::"), function $CPExpression_function__raise__(self, _cmd, to, parameters) +{ with(self) +{ + if (_argc < 2) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var num = objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "doubleValue"), + power = objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 1), "doubleValue"); + + return objj_msgSend(CPNumber, "numberWithDouble:", POW(num,power)); +} +},["CPNumber",null,"CPArray"]), new objj_method(sel_getUid("abs:"), function $CPExpression_function__abs_(self, _cmd, parameters) +{ with(self) +{ + if (_argc != 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var num = objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "doubleValue"); + + return objj_msgSend(CPNumber, "numberWithDouble:", ABS(num)); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("now"), function $CPExpression_function__now(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPDate, "date"); +} +},["CPDate"]), new objj_method(sel_getUid("ln:"), function $CPExpression_function__ln_(self, _cmd, parameters) +{ with(self) +{ + if (_argc != 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var num = objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "doubleValue"); + + return objj_msgSend(CPNumber, "numberWithDouble:", Math.log(num)); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("exp:"), function $CPExpression_function__exp_(self, _cmd, parameters) +{ with(self) +{ + if (_argc != 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var num = objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "doubleValue"); + + return objj_msgSend(CPNumber, "numberWithDouble:", EXP(num)); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("ceiling:"), function $CPExpression_function__ceiling_(self, _cmd, parameters) +{ with(self) +{ + if (_argc != 1) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var num = objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "doubleValue"); + + return objj_msgSend(CPNumber, "numberWithDouble:", CEIL(num)); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("random"), function $CPExpression_function__random(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPNumber, "numberWithDouble:", RAND()); +} +},["CPNumber"]), new objj_method(sel_getUid("modulus::"), function $CPExpression_function__modulus__(self, _cmd, by, parameters) +{ with(self) +{ + if (_argc != 2) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var left = objj_msgSend(parameters, "objectAtIndex:", 0), + right = objj_msgSend(parameters, "objectAtIndex:", 1); + + return objj_msgSend(CPNumber, "numberWithInt:", (objj_msgSend(left, "intValue") % objj_msgSend(right, "intValue"))); +} +},["CPNumber",null,"CPArray"]), new objj_method(sel_getUid("first:"), function $CPExpression_function__first_(self, _cmd, parameters) +{ with(self) +{ + if (_argc == 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + return objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "objectAtIndex:", 0); +} +},["id","CPArray"]), new objj_method(sel_getUid("last:"), function $CPExpression_function__last_(self, _cmd, parameters) +{ with(self) +{ + if (_argc == 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + return objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "lastObject"); +} +},["id","CPArray"]), new objj_method(sel_getUid("chs:"), function $CPExpression_function__chs_(self, _cmd, parameters) +{ with(self) +{ + if (_argc == 0) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + return objj_msgSend(CPNumber, "numberWithInt:", - objj_msgSend(objj_msgSend(parameters, "objectAtIndex:", 0), "intValue")); +} +},["CPNumber","CPArray"]), new objj_method(sel_getUid("index:"), function $CPExpression_function__index_(self, _cmd, parameters) +{ with(self) +{ + if (_argc < 2) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid number of parameters"); + + var left = objj_msgSend(parameters, "objectAtIndex:", 0), + right = objj_msgSend(parameters, "objectAtIndex:", 1); + + if (objj_msgSend(left, "isKindOfClass:", objj_msgSend(CPDictionary, "class"))) + return objj_msgSend(left, "objectForKey:", right); + else + return objj_msgSend(left, "objectAtIndex:", objj_msgSend(right, "intValue")); +} +},["id","CPArray"])]); +} + +p;27;CPExpression_intersectset.jt;4166;@STATIC;1.0;i;14;CPExpression.jt;4128; + + +objj_executeFile("CPExpression.j", YES); + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_intersectset"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_left"), new objj_ivar("_right")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLeft:right:"), function $CPExpression_intersectset__initWithLeft_right_(self, _cmd, left, right) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_intersectset").super_class }, "initWithExpressionType:", CPIntersectSetExpressionType); + _left = left ; + _right = right; + + return self; +} +},["id","CPExpression","CPExpression"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_intersectset__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + var left = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionUnionSetLeftExpression"); + var right = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionUnionSetRightExpression"); + + return objj_msgSend(self, "initWithLeft:right:", left, right); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_intersectset__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _left, "CPExpressionUnionSetLeftExpression"); + objj_msgSend(coder, "encodeObject:forKey:", _right, "CPExpressionUnionSetRightExpression"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_intersectset__isEqual_(self, _cmd, object) +{ with(self) +{ + if (self == object) + return YES; + + if (object.isa != self.isa || objj_msgSend(object, "expressionType") != objj_msgSend(self, "expressionType") || !objj_msgSend(objj_msgSend(object, "leftExpression"), "isEqual:", objj_msgSend(self, "leftExpression")) || !objj_msgSend(objj_msgSend(object, "rightExpression"), "isEqual:", objj_msgSend(self, "rightExpression"))) + return NO; + + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_intersectset__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + var right = objj_msgSend(_right, "expressionValueWithObject:context:", object, context); + if (!objj_msgSend(right, "respondsToSelector:", sel_getUid("objectEnumerator"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The right expression for a CPIntersectSetExpressionType expression must be either a CPArray, CPDictionary or CPSet"); + + var left = objj_msgSend(_left, "expressionValueWithObject:context:", object, context); + if (!objj_msgSend(left, "isKindOfClass:", objj_msgSend(CPSet, "set"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The left expression for a CPIntersectSetExpressionType expression must a CPSet"); + + var set = objj_msgSend(CPSet, "setWithSet:", left), + e = objj_msgSend(right, "objectEnumerator"), + item; + + while (item = objj_msgSend(e, "nextObject")) + if (objj_msgSend(left, "containsObject:", item)) + objj_msgSend(set, "addObject:", item); + + return objj_msgSend(CPExpression, "expressionForConstantValue:", set); +} +},["id",null,"CPDictionary"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_intersectset___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + return self; +} +},["CPExpression","CPDictionary"]), new objj_method(sel_getUid("leftExpression"), function $CPExpression_intersectset__leftExpression(self, _cmd) +{ with(self) +{ + return _left; +} +},["CPExpression"]), new objj_method(sel_getUid("rightExpression"), function $CPExpression_intersectset__rightExpression(self, _cmd) +{ with(self) +{ + return _right; +} +},["CPExpression"]), new objj_method(sel_getUid("description"), function $CPExpression_intersectset__description(self, _cmd) +{ with(self) +{ + return objj_msgSend(_left, "description") +" INTERSECT "+ objj_msgSend(_right, "description"); +} +},["CPString"])]); +} + +p;22;CPExpression_keypath.jt;2604;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;29;Foundation/CPKeyValueCoding.jt;2506; + + +objj_executeFile("CPExpression.j", YES); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPKeyValueCoding.j", NO); + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_keypath"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_keyPath")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithKeyPath:"), function $CPExpression_keypath__initWithKeyPath_(self, _cmd, keyPath) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_keypath").super_class }, "initWithExpressionType:", CPKeyPathExpressionType); + _keyPath = keyPath ; + + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_keypath__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + var keyPath = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionKeyPath"); + + return objj_msgSend(self, "initWithKeyPath:", keyPath); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_keypath__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _keyPath, "CPExpressionKeyPath"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_keypath__isEqual_(self, _cmd, object) +{ with(self) +{ + if (self == object) + return YES; + + if (object.isa != self.isa || objj_msgSend(object, "expressionType") != objj_msgSend(self, "expressionType") || !objj_msgSend(objj_msgSend(object, "keyPath"), "isEqualToString:", objj_msgSend(self, "keyPath"))) + return NO; + + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("keyPath"), function $CPExpression_keypath__keyPath(self, _cmd) +{ with(self) +{ + return _keyPath; +} +},["CPString"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_keypath__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + return objj_msgSend(object, "valueForKeyPath:", _keyPath); +} +},["id",null,"CPDictionary"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_keypath___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + return self; +} +},["CPExpression","CPDictionary"]), new objj_method(sel_getUid("description"), function $CPExpression_keypath__description(self, _cmd) +{ with(self) +{ + return _keyPath; +} +},["CPString"])]); +} + +p;23;CPExpression_minusset.jt;3978;@STATIC;1.0;i;14;CPExpression.jt;3940; + + +objj_executeFile("CPExpression.j", YES); + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_minusset"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLeft:right:"), function $CPExpression_minusset__initWithLeft_right_(self, _cmd, left, right) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_minusset").super_class }, "initWithExpressionType:", CPMinusSetExpressionType); + _left = left ; + _right = right; + + return self; +} +},["id","CPExpression","CPExpression"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_minusset__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + var left = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionMinusSetLeftExpression"); + var right = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionMinusSetRightExpression"); + + return objj_msgSend(self, "initWithLeft:right:", left, right); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_minusset__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _left, "CPExpressionMinusSetLeftExpression"); + objj_msgSend(coder, "encodeObject:forKey:", _right, "CPExpressionMinusSetRightExpression"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_minusset__isEqual_(self, _cmd, object) +{ with(self) +{ + if (self == object) + return YES; + + if (object.isa != self.isa || objj_msgSend(object, "expressionType") != objj_msgSend(self, "expressionType") || !objj_msgSend(objj_msgSend(object, "leftExpression"), "isEqual:", objj_msgSend(self, "leftExpression")) || !objj_msgSend(objj_msgSend(object, "rightExpression"), "isEqual:", objj_msgSend(self, "rightExpression"))) + return NO; + + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_minusset__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + var right = objj_msgSend(_right, "expressionValueWithObject:context:", object, context); + if (!objj_msgSend(right, "respondsToSelector:", sel_getUid("objectEnumerator"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The right expression for a CPIntersectSetExpressionType expression must be either a CPArray, CPDictionary or CPSet"); + + var left = objj_msgSend(_left, "expressionValueWithObject:context:", object, context); + if (!objj_msgSend(left, "isKindOfClass:", objj_msgSend(CPSet, "set"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The left expression for a CPIntersectSetExpressionType expression must a CPSet"); + + var set = objj_msgSend(CPSet, "setWithSet:", left), + e = objj_msgSend(right, "objectEnumerator"), + item; + + while (item = objj_msgSend(e, "nextObject")) + objj_msgSend(set, "removeObject:", item); + + return objj_msgSend(CPExpression, "expressionForConstantValue:", set); +} +},["id",null,"CPDictionary"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_minusset___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + return self; +} +},["CPExpression","CPDictionary"]), new objj_method(sel_getUid("leftExpression"), function $CPExpression_minusset__leftExpression(self, _cmd) +{ with(self) +{ + return _left; +} +},["CPExpression"]), new objj_method(sel_getUid("rightExpression"), function $CPExpression_minusset__rightExpression(self, _cmd) +{ with(self) +{ + return _right; +} +},["CPExpression"]), new objj_method(sel_getUid("description"), function $CPExpression_minusset__description(self, _cmd) +{ with(self) +{ + return objj_msgSend(_left, "description") +" MINUS "+ objj_msgSend(_right, "description"); +} +},["CPString"])]); +} + +p;23;CPExpression_operator.jt;5979;@STATIC;1.0;i;14;CPExpression.jI;20;Foundation/CPArray.jI;21;Foundation/CPString.jI;25;Foundation/CPDictionary.jt;5860; + + +objj_executeFile("CPExpression.j", YES); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); + +var CPExpressionOperatorNegate = "CPExpressionOperatorNegate"; +var CPExpressionOperatorAdd = "CPExpressionOperatorAdd"; +var CPExpressionOperatorSubtract = "CPExpressionOperatorSubtract"; +var CPExpressionOperatorMultiply = "CPExpressionOperatorMultiply"; +var CPExpressionOperatorDivide = "CPExpressionOperatorDivide"; +var CPExpressionOperatorExp = "CPExpressionOperatorExp"; +var CPExpressionOperatorAssign = "CPExpressionOperatorAssign"; +var CPExpressionOperatorKeypath = "CPExpressionOperatorKeypath"; +var CPExpressionOperatorIndex = "CPExpressionOperatorIndex"; +var CPExpressionOperatorIndexFirst = "CPExpressionOperatorIndexFirst"; +var CPExpressionOperatorIndexLast = "CPExpressionOperatorIndexLast"; +var CPExpressionOperatorIndexSize = "CPExpressionOperatorIndexSize"; + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_operator"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_operator"), new objj_ivar("_arguments")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithOperator:arguments:"), function $CPExpression_operator__initWithOperator_arguments_(self, _cmd, operator, arguments) +{ with(self) +{ + _operator = operator; + _arguments = arguments; + return self; +} +},["id","int","CPArray"]), new objj_method(sel_getUid("arguments"), function $CPExpression_operator__arguments(self, _cmd) +{ with(self) +{ + return _arguments; +} +},["CPArray"]), new objj_method(sel_getUid("description"), function $CPExpression_operator__description(self, _cmd) +{ with(self) +{ + var result = objj_msgSend(CPString, "string"), + args = objj_msgSend(CPArray, "array"), + count = objj_msgSend(_arguments, "count"), + i; + + for (i = 0; i < count; i++) + { + var check = objj_msgSend(_arguments, "objectAtIndex:", i), + precedence = objj_msgSend(check, "description"); + + if (objj_msgSend(check, "isKindOfClass:", objj_msgSend(CPExpression_operator, "class"))) + precedence = objj_msgSend(CPString, "stringWithFormat:", "(%@)", precedence); + + objj_msgSend(args, "addObject:", precedence); + } + + switch (_operator) + { + case CPExpressionOperatorNegate : + result = result + objj_msgSend(CPString, "stringWithFormat:", "-%@", objj_msgSend(args, "objectAtIndex:", 0)); + break; + case CPExpressionOperatorAdd : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@ + %@", objj_msgSend(args, "objectAtIndex:", 0), objj_msgSend(args, "objectAtIndex:", 1)); + break; + case CPExpressionOperatorSubtract : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@ - %@", objj_msgSend(args, "objectAtIndex:", 0), objj_msgSend(args, "objectAtIndex:", 1)); + break; + case CPExpressionOperatorMultiply : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@ * %@", objj_msgSend(args, "objectAtIndex:", 0), objj_msgSend(args, "objectAtIndex:", 1)); + break; + case CPExpressionOperatorDivide : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@ / %@", objj_msgSend(args, "objectAtIndex:", 0), objj_msgSend(args, "objectAtIndex:", 1)); + break; + case CPExpressionOperatorExp : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@ ** %@", objj_msgSend(args, "objectAtIndex:", 0), objj_msgSend(args, "objectAtIndex:", 1)); + break; + case CPExpressionOperatorAssign : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@ := %@", objj_msgSend(args, "objectAtIndex:", 0), objj_msgSend(args, "objectAtIndex:", 1)); + break; + case CPExpressionOperatorKeypath : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@.%@", objj_msgSend(args, "objectAtIndex:", 0), objj_msgSend(args, "objectAtIndex:", 1)); + break; + case CPExpressionOperatorIndex : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@[%@]", objj_msgSend(args, "objectAtIndex:", 0), objj_msgSend(args, "objectAtIndex:", 1)); + break; + case CPExpressionOperatorIndexFirst : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@[FIRST]", objj_msgSend(args, "objectAtIndex:", 0)); + break; + case CPExpressionOperatorIndexLast : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@[LAST]", objj_msgSend(args, "objectAtIndex:", 0)); + break; + case CPExpressionOperatorIndexSize : + result = result + objj_msgSend(CPString, "stringWithFormat:", "%@[SIZE]", objj_msgSend(args, "objectAtIndex:", 0)); + break; + } + + return result; +} +},["CPString"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_operator___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + var array = objj_msgSend(CPArray, "array"), + count = objj_msgSend(_arguments, "count"), + i; + + for (i = 0; i < count; i++) + objj_msgSend(array, "addObject:", objj_msgSend(objj_msgSend(_arguments, "objectAtIndex:", i), "_expressionWithSubstitutionVariables:", variables)); + + return objj_msgSend(CPExpression_operator, "expressionForOperator:arguments:", _operator, array); +} +},["CPExpression","CPDictionary"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("expressionForOperator:arguments:"), function $CPExpression_operator__expressionForOperator_arguments_(self, _cmd, operator, arguments) +{ with(self) +{ + return objj_msgSend(self, "initWithOperator:arguments:", operator, arguments); +} +},["CPExpression","CPExpressionOperator","CPArray"])]); +} + +p;19;CPExpression_self.jt;1875;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;25;Foundation/CPDictionary.jI;20;Foundation/CPCoder.jt;1756; + + +objj_executeFile("CPExpression.j", YES); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); +objj_executeFile("Foundation/CPCoder.j", NO); + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_self"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("init"), function $CPExpression_self__init(self, _cmd) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_self").super_class }, "initWithExpressionType:", CPEvaluatedObjectExpressionType); + + return self; +} +},["id"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_self__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + return objj_msgSend(self, "init"); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_self__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_self__isEqual_(self, _cmd, object) +{ with(self) +{ + return (object == self); +} +},["BOOL","id"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_self__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + return object; +} +},["id",null,"CPDictionary"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_self___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + return self; +} +},["CPExpression","CPDictionary"]), new objj_method(sel_getUid("description"), function $CPExpression_self__description(self, _cmd) +{ with(self) +{ + return "SELF"; +} +},["CPString"])]); +} + +p;23;CPExpression_unionset.jt;4013;@STATIC;1.0;i;14;CPExpression.jt;3975; + + +objj_executeFile("CPExpression.j", YES); + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_unionset"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithLeft:right:"), function $CPExpression_unionset__initWithLeft_right_(self, _cmd, left, right) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_unionset").super_class }, "initWithExpressionType:", CPUnionSetExpressionType); + _left = left; + _right = right; + + return self; +} +},["id","CPExpression","CPExpression"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_unionset__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + var left = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionUnionSetLeftExpression"), + right = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionUnionSetRightExpression"); + + return objj_msgSend(self, "initWithLeft:right:", left, right); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_unionset__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _left, "CPExpressionUnionSetLeftExpression"); + objj_msgSend(coder, "encodeObject:forKey:", _right, "CPExpressionUnionSetRightExpression"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_unionset__isEqual_(self, _cmd, object) +{ with(self) +{ + if (self == object) + return YES; + + if (object.isa != self.isa + || objj_msgSend(object, "expressionType") != objj_msgSend(self, "expressionType") + || !objj_msgSend(objj_msgSend(object, "leftExpression"), "isEqual:", objj_msgSend(self, "leftExpression")) + || !objj_msgSend(objj_msgSend(object, "rightExpression"), "isEqual:", objj_msgSend(self, "rightExpression"))) + return NO; + + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_unionset__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + var right = objj_msgSend(_right, "expressionValueWithObject:context:", object, context); + if (!objj_msgSend(right, "respondsToSelector:", sel_getUid("objectEnumerator"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The right expression for a CPIntersectSetExpressionType expression must be either a CPArray, CPDictionary or CPSet"); + + var left = objj_msgSend(_left, "expressionValueWithObject:context:", object, context); + if (!objj_msgSend(left, "isKindOfClass:", objj_msgSend(CPSet, "set"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "The left expression for a CPIntersectSetExpressionType expression must a CPSet"); + + var unionset = objj_msgSend(CPSet, "setWithSet:", left), + e = objj_msgSend(right, "objectEnumerator"), + item; + + while (item = objj_msgSend(e, "nextObject")) + objj_msgSend(unionset, "addObject:", item); + + return objj_msgSend(CPExpression, "expressionForConstantValue:", unionset); +} +},["id",null,"CPDictionary"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_unionset___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + return self; +} +},["CPExpression","CPDictionary"]), new objj_method(sel_getUid("leftExpression"), function $CPExpression_unionset__leftExpression(self, _cmd) +{ with(self) +{ + return _left; +} +},["CPExpression"]), new objj_method(sel_getUid("rightExpression"), function $CPExpression_unionset__rightExpression(self, _cmd) +{ with(self) +{ + return _right; +} +},["CPExpression"]), new objj_method(sel_getUid("description"), function $CPExpression_unionset__description(self, _cmd) +{ with(self) +{ + return objj_msgSend(_left, "description") +" UNION "+ objj_msgSend(_right, "description"); +} +},["CPString"])]); +} + +p;23;CPExpression_variable.jt;2882;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;25;Foundation/CPDictionary.jt;2788; + + +objj_executeFile("CPExpression.j", YES); +objj_executeFile("Foundation/CPString.j", NO); +objj_executeFile("Foundation/CPDictionary.j", NO); + +{var the_class = objj_allocateClassPair(CPExpression, "CPExpression_variable"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_variable")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithVariable:"), function $CPExpression_variable__initWithVariable_(self, _cmd, variable) +{ with(self) +{ + objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPExpression_variable").super_class }, "initWithExpressionType:", CPVariableExpressionType); + _variable = objj_msgSend(variable, "copy"); + + return self; +} +},["id","CPString"]), new objj_method(sel_getUid("initWithCoder:"), function $CPExpression_variable__initWithCoder_(self, _cmd, coder) +{ with(self) +{ + var variable = objj_msgSend(coder, "decodeObjectForKey:", "CPExpressionVariable"); + return objj_msgSend(self, "initWithVariable:", variable); +} +},["id","CPCoder"]), new objj_method(sel_getUid("encodeWithCoder:"), function $CPExpression_variable__encodeWithCoder_(self, _cmd, coder) +{ with(self) +{ + objj_msgSend(coder, "encodeObject:forKey:", _variable, "CPExpressionVariable"); +} +},["void","CPCoder"]), new objj_method(sel_getUid("isEqual:"), function $CPExpression_variable__isEqual_(self, _cmd, object) +{ with(self) +{ + if (self == object) + return YES; + + if (object.isa != self.isa || objj_msgSend(object, "expressionType") != objj_msgSend(self, "expressionType") || !objj_msgSend(objj_msgSend(object, "variable"), "isEqualToString:", objj_msgSend(self, "variable"))) + return NO; + + return YES; +} +},["BOOL","id"]), new objj_method(sel_getUid("variable"), function $CPExpression_variable__variable(self, _cmd) +{ with(self) +{ + return _variable; +} +},["CPString"]), new objj_method(sel_getUid("expressionValueWithObject:context:"), function $CPExpression_variable__expressionValueWithObject_context_(self, _cmd, object, context) +{ with(self) +{ + return objj_msgSend(context, "objectForKey:", _variable); +} +},["id",null,"CPDictionary"]), new objj_method(sel_getUid("description"), function $CPExpression_variable__description(self, _cmd) +{ with(self) +{ + return objj_msgSend(CPString, "stringWithFormat:", "$%s", _variable); +} +},["CPString"]), new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"), function $CPExpression_variable___expressionWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ + var aconstant = objj_msgSend(variables, "objectForKey:", _variable); + + if (aconstant != nil) + return objj_msgSend(CPExpression, "expressionForConstantValue:", aconstant); + + return self; +} +},["CPExpression","CPDictionary"])]); +} + +p;13;CPPredicate.jt;32901;@STATIC;1.0;I;20;Foundation/CPValue.jI;20;Foundation/CPArray.jI;18;Foundation/CPSet.jI;19;Foundation/CPNull.jI;22;Foundation/CPScanner.ji;21;CPCompoundPredicate.ji;23;CPComparisonPredicate.ji;14;CPExpression.ji;23;CPExpression_operator.ji;24;CPExpression_aggregate.ji;25;CPExpression_assignment.jt;32597; + + +objj_executeFile("Foundation/CPValue.j", NO); +objj_executeFile("Foundation/CPArray.j", NO); +objj_executeFile("Foundation/CPSet.j", NO); +objj_executeFile("Foundation/CPNull.j", NO); +objj_executeFile("Foundation/CPScanner.j", NO); +{var the_class = objj_allocateClassPair(CPObject, "CPPredicate"), +meta_class = the_class.isa;objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("predicateWithSubstitutionVariables:"), function $CPPredicate__predicateWithSubstitutionVariables_(self, _cmd, variables) +{ with(self) +{ +} +},["CPPredicate","CPDictionary"]), new objj_method(sel_getUid("evaluateWithObject:"), function $CPPredicate__evaluateWithObject_(self, _cmd, object) +{ with(self) +{ +} +},["BOOL","id"]), new objj_method(sel_getUid("evaluateWithObject:substitutionVariables:"), function $CPPredicate__evaluateWithObject_substitutionVariables_(self, _cmd, object, variables) +{ with(self) +{ +} +},["BOOL","id","CPDictionary"]), new objj_method(sel_getUid("predicateFormat"), function $CPPredicate__predicateFormat(self, _cmd) +{ with(self) +{ +} +},["CPString"]), new objj_method(sel_getUid("description"), function $CPPredicate__description(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "predicateFormat"); +} +},["CPString"])]); +class_addMethods(meta_class, [new objj_method(sel_getUid("predicateWithFormat:"), function $CPPredicate__predicateWithFormat_(self, _cmd, format) +{ with(self) +{ + if (!format) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, _cmd + " the format can't be 'nil'"); + var args = Array.prototype.slice.call(arguments, 3); + return objj_msgSend(self, "predicateWithFormat:argumentArray:", arguments[2], args); +} +},["CPPredicate","CPString"]), new objj_method(sel_getUid("predicateWithFormat:argumentArray:"), function $CPPredicate__predicateWithFormat_argumentArray_(self, _cmd, format, args) +{ with(self) +{ + if (!format) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, _cmd + " the format can't be 'nil'"); + var s = objj_msgSend(objj_msgSend(CPPredicateScanner, "alloc"), "initWithString:args:", format, args), + p = objj_msgSend(s, "parse"); + return p; +} +},["CPPredicate","CPString","CPArray"]), new objj_method(sel_getUid("predicateWithFormat:arguments:"), function $CPPredicate__predicateWithFormat_arguments_(self, _cmd, format, argList) +{ with(self) +{ + return nil; +} +},["CPPredicate","CPString","va_list"]), new objj_method(sel_getUid("predicateWithValue:"), function $CPPredicate__predicateWithValue_(self, _cmd, value) +{ with(self) +{ + return objj_msgSend(objj_msgSend(CPPredicate_BOOL, "alloc"), "initWithBool:", value); +} +},["CPPredicate","BOOL"])]); +} +{var the_class = objj_allocateClassPair(CPPredicate, "CPPredicate_BOOL"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_value")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithBool:"), function $CPPredicate_BOOL__initWithBool_(self, _cmd, value) +{ with(self) +{ + _value = value; + return self; +} +},["id","BOOL"]), new objj_method(sel_getUid("evaluateObject:"), function $CPPredicate_BOOL__evaluateObject_(self, _cmd, object) +{ with(self) +{ + return _value; +} +},["BOOL","id"]), new objj_method(sel_getUid("predicateFormat"), function $CPPredicate_BOOL__predicateFormat(self, _cmd) +{ with(self) +{ + return (_value) ? "TRUEPREDICATE" : "FALSEPREDICATE"; +} +},["CPString"])]); +} +{ +var the_class = objj_getClass("CPArray") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("filteredArrayUsingPredicate:"), function $CPArray__filteredArrayUsingPredicate_(self, _cmd, predicate) +{ with(self) +{ + var count = objj_msgSend(self, "count"), + result = objj_msgSend(CPArray, "array"), + i; + for (i = 0; i < count; i++) + { + var object = self[i]; + if (objj_msgSend(predicate, "evaluateWithObject:", object)) + result.push(object); + } + return result; +} +},["CPArray","CPPredicate"]), new objj_method(sel_getUid("filterUsingPredicate:"), function $CPArray__filterUsingPredicate_(self, _cmd, predicate) +{ with(self) +{ + var count = objj_msgSend(self, "count"); + while (count--) + { + if (!objj_msgSend(predicate, "evaluateWithObject:", self[count])) + splice(count, 1); + } +} +},["void","CPPredicate"])]); +} +{ +var the_class = objj_getClass("CPSet") +if(!the_class) throw new SyntaxError("*** Could not find definition for class \"CPSet\""); +var meta_class = the_class.isa;class_addMethods(the_class, [new objj_method(sel_getUid("filteredSetUsingPredicate:"), function $CPSet__filteredSetUsingPredicate_(self, _cmd, predicate) +{ with(self) +{ + var count = objj_msgSend(self, "count"), + result = objj_msgSend(CPSet, "set"), + i; + for (i = 0; i < count; i++) + { + var object = objj_msgSend(self, "objectAtIndex:", i); + if (objj_msgSend(predicate, "evaluateWithObject:", object)) + objj_msgSend(result, "addObject:", object); + } + return result; +} +},["CPSet","CPPredicate"]), new objj_method(sel_getUid("filterUsingPredicate:"), function $CPSet__filterUsingPredicate_(self, _cmd, predicate) +{ with(self) +{ + var count = objj_msgSend(self, "count"); + while (--count >= 0) + { + var object = objj_msgSend(self, "objectAtIndex:", count); + if (!objj_msgSend(predicate, "evaluateWithObject:", object)) + objj_msgSend(self, "removeObjectAtIndex:", count); + } +} +},["void","CPPredicate"])]); +} +{var the_class = objj_allocateClassPair(CPScanner, "CPPredicateScanner"), +meta_class = the_class.isa;class_addIvars(the_class, [new objj_ivar("_args"), new objj_ivar("_retrieved")]); +objj_registerClassPair(the_class); +class_addMethods(the_class, [new objj_method(sel_getUid("initWithString:args:"), function $CPPredicateScanner__initWithString_args_(self, _cmd, format, args) +{ with(self) +{ + self = objj_msgSendSuper({ receiver:self, super_class:objj_getClass("CPPredicateScanner").super_class }, "initWithString:", format); + if (self != nil) + { + _args = objj_msgSend(args, "objectEnumerator"); + } + return self; +} +},["id","CPString","CPArray"]), new objj_method(sel_getUid("nextArg"), function $CPPredicateScanner__nextArg(self, _cmd) +{ with(self) +{ + return objj_msgSend(_args, "nextObject"); +} +},["id"]), new objj_method(sel_getUid("scanPredicateKeyword:"), function $CPPredicateScanner__scanPredicateKeyword_(self, _cmd, key) +{ with(self) +{ + var loc = objj_msgSend(self, "scanLocation"); + var c; + objj_msgSend(self, "setCaseSensitive:", NO); + if (!objj_msgSend(self, "scanString:intoString:", key, NULL)) + return NO; + if (objj_msgSend(self, "isAtEnd")) + return YES; + c = objj_msgSend(objj_msgSend(self, "string"), "characterAtIndex:", objj_msgSend(self, "scanLocation")); + if (!objj_msgSend(objj_msgSend(CPCharacterSet, "alphanumericCharacterSet"), "characterIsMember:", c)) + return YES; + objj_msgSend(self, "setScanLocation:", loc); + return NO; +} +},["BOOL","CPString"]), new objj_method(sel_getUid("parse"), function $CPPredicateScanner__parse(self, _cmd) +{ with(self) +{ + var r = nil; + try + { + objj_msgSend(self, "setCharactersToBeSkipped:", objj_msgSend(CPCharacterSet, "whitespaceCharacterSet")); + r = objj_msgSend(self, "parsePredicate"); + } + catch(error) + { + CPLogConsole("Parsing failed for "+objj_msgSend(self, "string")+" with " + error); + } + finally + { + if (!objj_msgSend(self, "isAtEnd")) + CPLogConsole("Format string contains extra characters: \""+objj_msgSend(self, "string")+"\""); + } + return r; +} +},["CPPredicate"]), new objj_method(sel_getUid("parsePredicate"), function $CPPredicateScanner__parsePredicate(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "parseAnd"); +} +},["CPPredicate"]), new objj_method(sel_getUid("parseAnd"), function $CPPredicateScanner__parseAnd(self, _cmd) +{ with(self) +{ + var l = objj_msgSend(self, "parseOr"); + while (objj_msgSend(self, "scanPredicateKeyword:", "AND") || objj_msgSend(self, "scanPredicateKeyword:", "&&")) + { + var r = objj_msgSend(self, "parseOr"); + if (objj_msgSend(r, "isKindOfClass:", objj_msgSend(CPCompoundPredicate, "class")) && objj_msgSend(r, "compoundPredicateType") == CPAndPredicateType) + { + if (objj_msgSend(l, "isKindOfClass:", objj_msgSend(CPCompoundPredicate, "class")) && objj_msgSend(l, "compoundPredicateType") == CPAndPredicateType) + { + objj_msgSend(objj_msgSend(l, "subpredicates"), "addObjectsFromArray:", objj_msgSend(r, "subpredicates")); + } + else + { + objj_msgSend(objj_msgSend(r, "subpredicates"), "insertObject:atIndex:", l, 0); + l = r; + } + } + else if (objj_msgSend(l, "isKindOfClass:", objj_msgSend(CPCompoundPredicate, "class")) && objj_msgSend(l, "compoundPredicateType") == CPAndPredicateType) + { + objj_msgSend(objj_msgSend(l, "subpredicates"), "addObject:", r); + } + else + { + l = objj_msgSend(CPCompoundPredicate, "andPredicateWithSubpredicates:", objj_msgSend(CPArray, "arrayWithObjects:", l, r)); + } + } + return l; +} +},["CPPredicate"]), new objj_method(sel_getUid("parseNot"), function $CPPredicateScanner__parseNot(self, _cmd) +{ with(self) +{ + if (objj_msgSend(self, "scanString:intoString:", "(", NULL)) + { + var r = objj_msgSend(self, "parsePredicate"); + if (!objj_msgSend(self, "scanString:intoString:", ")", NULL)) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Missing ) in compound predicate"); + return r; + } + if (objj_msgSend(self, "scanPredicateKeyword:", "NOT") || objj_msgSend(self, "scanPredicateKeyword:", "!")) + { + return objj_msgSend(CPCompoundPredicate, "notPredicateWithSubpredicate:", objj_msgSend(self, "parseNot")); + } + if (objj_msgSend(self, "scanPredicateKeyword:", "TRUEPREDICATE")) + { + return objj_msgSend(CPPredicate, "predicateWithValue:", YES); + } + if (objj_msgSend(self, "scanPredicateKeyword:", "FALSEPREDICATE")) + { + return objj_msgSend(CPPredicate, "predicateWithValue:", NO); + } + return objj_msgSend(self, "parseComparison"); +} +},["CPPredicate"]), new objj_method(sel_getUid("parseOr"), function $CPPredicateScanner__parseOr(self, _cmd) +{ with(self) +{ + var l = objj_msgSend(self, "parseNot"); + while (objj_msgSend(self, "scanPredicateKeyword:", "OR") || objj_msgSend(self, "scanPredicateKeyword:", "||")) + { + var r = objj_msgSend(self, "parseNot"); + if (objj_msgSend(r, "isKindOfClass:", objj_msgSend(CPCompoundPredicate, "class")) && objj_msgSend(r, "compoundPredicateType") == CPOrPredicateType) + { + if (objj_msgSend(l, "isKindOfClass:", objj_msgSend(CPCompoundPredicate, "class")) && objj_msgSend(l, "compoundPredicateType") == CPOrPredicateType) + { + objj_msgSend(objj_msgSend(l, "subpredicates"), "addObjectsFromArray:", objj_msgSend(r, "subpredicates")); + } + else + { + objj_msgSend(objj_msgSend(r, "subpredicates"), "insertObject:atIndex:", l, 0); + l = r; + } + } + else if (objj_msgSend(l, "isKindOfClass:", objj_msgSend(CPCompoundPredicate, "class")) && objj_msgSend(l, "compoundPredicateType") == CPOrPredicateType) + { + objj_msgSend(objj_msgSend(l, "subpredicates"), "addObject:", r); + } + else + { + l = objj_msgSend(CPCompoundPredicate, "orPredicateWithSubpredicates:", objj_msgSend(CPArray, "arrayWithObjects:", l, r)); + } + } + return l; +} +},["CPPredicate"]), new objj_method(sel_getUid("parseComparison"), function $CPPredicateScanner__parseComparison(self, _cmd) +{ with(self) +{ + var modifier = CPDirectPredicateModifier, + type = 0, + opts = 0, + left, + right, + p, + negate = NO, + swap = NO; + if (objj_msgSend(self, "scanPredicateKeyword:", "ANY")) + { + modifier = CPAnyPredicateModifier; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "ALL")) + { + modifier = CPAllPredicateModifier; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "NONE")) + { + modifier = CPAnyPredicateModifier; + negate = YES; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "SOME")) + { + modifier = CPAllPredicateModifier; + negate = YES; + } + left = objj_msgSend(self, "parseExpression"); + if (objj_msgSend(self, "scanString:intoString:", "!=", NULL) || objj_msgSend(self, "scanString:intoString:", "<>", NULL)) + { + type = CPNotEqualToPredicateOperatorType; + } + else if (objj_msgSend(self, "scanString:intoString:", "<=", NULL) || objj_msgSend(self, "scanString:intoString:", "=<", NULL)) + { + type = CPLessThanOrEqualToPredicateOperatorType; + } + else if (objj_msgSend(self, "scanString:intoString:", ">=", NULL) || objj_msgSend(self, "scanString:intoString:", "=>", NULL)) + { + type = CPGreaterThanOrEqualToPredicateOperatorType; + } + else if (objj_msgSend(self, "scanString:intoString:", "<", NULL)) + { + type = CPLessThanPredicateOperatorType; + } + else if (objj_msgSend(self, "scanString:intoString:", ">", NULL)) + { + type = CPGreaterThanPredicateOperatorType; + } + else if (objj_msgSend(self, "scanString:intoString:", "==", NULL) || objj_msgSend(self, "scanString:intoString:", "=", NULL)) + { + type = CPEqualToPredicateOperatorType; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "MATCHES")) + { + type = CPMatchesPredicateOperatorType; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "LIKE")) + { + type = CPLikePredicateOperatorType; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "BEGINSWITH")) + { + type = CPBeginsWithPredicateOperatorType; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "ENDSWITH")) + { + type = CPEndsWithPredicateOperatorType; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "IN")) + { + type = CPInPredicateOperatorType; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "CONTAINS")) + { + type = CPInPredicateOperatorType; + swap = YES; + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "BETWEEN")) + { + var exp = objj_msgSend(self, "parseSimpleExpression"), + a = objj_msgSend(exp, "constantValue"), + lower, upper, + lexp, uexp, + lp, up; + if (!objj_msgSend(a, "isKindOfClass:", objj_msgSend(CPArray, "class"))) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "BETWEEN operator requires array argument"); + lower = objj_msgSend(a, "objectAtIndex:", 0); + upper = objj_msgSend(a, "objectAtIndex:", 1); + lexp = objj_msgSend(CPExpression, "expressionForConstantValue:", lower); + uexp = objj_msgSend(CPExpression, "expressionForConstantValue:", upper); + lp = objj_msgSend(CPComparisonPredicate, "predicateWithLeftExpression:rightExpression:modifier:type:options:", left, lexp, modifier, CPGreaterThanPredicateOperatorType, opts); + up = objj_msgSend(CPComparisonPredicate, "predicateWithLeftExpression:rightExpression:modifier:type:options:", left, uexp, modifier, CPLessThanPredicateOperatorType, opts); + return objj_msgSend(CPCompoundPredicate, "andPredicateWithSubpredicates:", + objj_msgSend(CPArray, "arrayWithObjects:", lp, up)); + } + else + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid comparison predicate: "+ objj_msgSend(objj_msgSend(self, "string"), "substringFromIndex:", objj_msgSend(self, "scanLocation"))); + if (objj_msgSend(self, "scanString:intoString:", "[cd]", NULL)) + { + opts = CPCaseInsensitivePredicateOption | CPDiacriticInsensitivePredicateOption; + } + else if (objj_msgSend(self, "scanString:intoString:", "[c]", NULL)) + { + opts = CPCaseInsensitivePredicateOption; + } + else if (objj_msgSend(self, "scanString:intoString:", "[d]", NULL)) + { + opts = CPDiacriticInsensitivePredicateOption; + } + right = objj_msgSend(self, "parseExpression"); + if (swap == YES) + { + var tmp = left; + left = right; + right = tmp; + } + p = objj_msgSend(CPComparisonPredicate, "predicateWithLeftExpression:rightExpression:modifier:type:options:", left, right, modifier, type, opts); + return negate ? objj_msgSend(CPCompoundPredicate, "notPredicateWithSubpredicate:", p):p; +} +},["CPPredicate"]), new objj_method(sel_getUid("parseExpression"), function $CPPredicateScanner__parseExpression(self, _cmd) +{ with(self) +{ + return objj_msgSend(self, "parseBinaryExpression"); +} +},["CPExpression"]), new objj_method(sel_getUid("parseSimpleExpression"), function $CPPredicateScanner__parseSimpleExpression(self, _cmd) +{ with(self) +{ + var identifier, + location, + ident, + dbl; + if (objj_msgSend(self, "scanDouble:", function(newValue){ var oldValue = dbl; if (typeof newValue != 'undefined') dbl = newValue; return oldValue;})) + return objj_msgSend(CPExpression, "expressionForConstantValue:", objj_msgSend(CPNumber, "numberWithDouble:", dbl)); + if (objj_msgSend(self, "scanString:intoString:", "-", NULL)) + return objj_msgSend(CPExpression, "expressionForFunction:arguments:", "chs", objj_msgSend(CPArray, "arrayWithObject:", objj_msgSend(self, "parseExpression"))); + if (objj_msgSend(self, "scanString:intoString:", "(", NULL)) + { + var arg = objj_msgSend(self, "parseExpression"); + if (!objj_msgSend(self, "scanString:intoString:", ")", NULL)) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Missing ) in expression"); + return arg; + } + if (objj_msgSend(self, "scanString:intoString:", "{", NULL)) + { + var a = objj_msgSend(CPMutableArray, "arrayWithCapacity:", 10); + if (objj_msgSend(self, "scanString:intoString:", "}", NULL)) + return objj_msgSend(CPExpression, "expressionForConstantValue:", a); + objj_msgSend(a, "addObject:", objj_msgSend(self, "parseExpression")); + while (objj_msgSend(self, "scanString:intoString:", ",", NULL)) + objj_msgSend(a, "addObject:", objj_msgSend(self, "parseExpression")); + if (!objj_msgSend(self, "scanString:intoString:", "}", NULL)) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Missing } in aggregate"); + return objj_msgSend(CPExpression, "expressionForConstantValue:", a); + } + if (objj_msgSend(self, "scanPredicateKeyword:", "NULL") || objj_msgSend(self, "scanPredicateKeyword:", "NIL")) + { + return objj_msgSend(CPExpression, "expressionForConstantValue:", objj_msgSend(CPNull, "null")); + } + if (objj_msgSend(self, "scanPredicateKeyword:", "TRUE") || objj_msgSend(self, "scanPredicateKeyword:", "YES")) + { + return objj_msgSend(CPExpression, "expressionForConstantValue:", objj_msgSend(CPNumber, "numberWithBool:", YES)); + } + if (objj_msgSend(self, "scanPredicateKeyword:", "FALSE") || objj_msgSend(self, "scanPredicateKeyword:", "NO")) + { + return objj_msgSend(CPExpression, "expressionForConstantValue:", objj_msgSend(CPNumber, "numberWithBool:", NO)); + } + if (objj_msgSend(self, "scanPredicateKeyword:", "SELF")) + { + return objj_msgSend(CPExpression, "expressionForEvaluatedObject"); + } + if (objj_msgSend(self, "scanString:intoString:", "$", NULL)) + { + var variable = objj_msgSend(self, "parseExpression"); + if (!objj_msgSend(variable, "keyPath")) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid variable identifier: " + variable); + return objj_msgSend(CPExpression, "expressionForVariable:", objj_msgSend(variable, "keyPath")); + } + location = objj_msgSend(self, "scanLocation"); + if (objj_msgSend(self, "scanString:intoString:", "%", NULL)) + { + if (objj_msgSend(self, "isAtEnd") == NO) + { + var c = objj_msgSend(objj_msgSend(self, "string"), "characterAtIndex:", objj_msgSend(self, "scanLocation")); + switch (c) + { + case '%': + location = objj_msgSend(self, "scanLocation"); + break; + case 'K': + objj_msgSend(self, "setScanLocation:", objj_msgSend(self, "scanLocation") + 1); + return objj_msgSend(CPExpression, "expressionForKeyPath:", objj_msgSend(self, "nextArg")); + case '@': + case 'c': + case 'C': + case 'd': + case 'D': + case 'i': + case 'o': + case 'O': + case 'u': + case 'U': + case 'x': + case 'X': + case 'e': + case 'E': + case 'f': + case 'g': + case 'G': + objj_msgSend(self, "setScanLocation:", objj_msgSend(self, "scanLocation") + 1); + return objj_msgSend(CPExpression, "expressionForConstantValue:", objj_msgSend(self, "nextArg")); + case 'h': + objj_msgSend(self, "scanString:intoString:", "h", NULL); + if (objj_msgSend(self, "isAtEnd") == NO) + { + c = objj_msgSend(objj_msgSend(self, "string"), "characterAtIndex:", objj_msgSend(self, "scanLocation")); + if (c == 'i' || c == 'u') + { + objj_msgSend(self, "setScanLocation:", objj_msgSend(self, "scanLocation") + 1); + return objj_msgSend(CPExpression, "expressionForConstantValue:", objj_msgSend(self, "nextArg")); + } + } + break; + case 'q': + objj_msgSend(self, "scanString:intoString:", "q", NULL); + if (objj_msgSend(self, "isAtEnd") == NO) + { + c = objj_msgSend(objj_msgSend(self, "string"), "characterAtIndex:", objj_msgSend(self, "scanLocation")); + if (c == 'i' || c == 'u' || c == 'x' || c == 'X') + { + objj_msgSend(self, "setScanLocation:", objj_msgSend(self, "scanLocation") + 1); + return objj_msgSend(CPExpression, "expressionForConstantValue:", objj_msgSend(self, "nextArg")); + } + } + break; + } + } + objj_msgSend(self, "setScanLocation:", location); + } + if (objj_msgSend(self, "scanString:intoString:", "\"", NULL)) + { + var skip = objj_msgSend(self, "charactersToBeSkipped"), + str; + objj_msgSend(self, "setCharactersToBeSkipped:", nil); + if (objj_msgSend(self, "scanUpToString:intoString:", "\"", function(newValue){ var oldValue = str; if (typeof newValue != 'undefined') str = newValue; return oldValue;}) == NO) + { + objj_msgSend(self, "setCharactersToBeSkipped:", skip); + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid double quoted literal at "+location); + } + objj_msgSend(self, "scanString:intoString:", "\"", NULL); + objj_msgSend(self, "setCharactersToBeSkipped:", skip); + return objj_msgSend(CPExpression, "expressionForConstantValue:", str); + } + if (objj_msgSend(self, "scanString:intoString:", "'", NULL)) + { + var skip = objj_msgSend(self, "charactersToBeSkipped"), + str; + objj_msgSend(self, "setCharactersToBeSkipped:", nil); + if (objj_msgSend(self, "scanUpToString:intoString:", "'", function(newValue){ var oldValue = str; if (typeof newValue != 'undefined') str = newValue; return oldValue;}) == NO) + { + objj_msgSend(self, "setCharactersToBeSkipped:", skip); + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid single quoted literal at "+location); + } + objj_msgSend(self, "scanString:intoString:", "'", NULL); + objj_msgSend(self, "setCharactersToBeSkipped:", skip); + return objj_msgSend(CPExpression, "expressionForConstantValue:", str); + } + if (objj_msgSend(self, "scanString:intoString:", "@", NULL)) + { + var e = objj_msgSend(self, "parseExpression"); + if (!objj_msgSend(e, "keyPath")) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid keypath identifier: "+e); + return objj_msgSend(CPExpression, "expressionForKeyPath:", objj_msgSend(e, "keyPath")+"@"); + } + objj_msgSend(self, "scanString:intoString:", "#", NULL); + if (!identifier) + identifier = objj_msgSend(CPCharacterSet, "characterSetWithCharactersInString:", "_$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + if (!objj_msgSend(self, "scanCharactersFromSet:intoString:", identifier, function(newValue){ var oldValue = ident; if (typeof newValue != 'undefined') ident = newValue; return oldValue;})) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Missing identifier: "+objj_msgSend(objj_msgSend(self, "string"), "substringFromIndex:", objj_msgSend(self, "scanLocation"))); + return objj_msgSend(CPExpression, "expressionForKeyPath:", ident); +} +},["CPExpression"]), new objj_method(sel_getUid("parseFunctionalExpression"), function $CPPredicateScanner__parseFunctionalExpression(self, _cmd) +{ with(self) +{ + var left = objj_msgSend(self, "parseSimpleExpression"); + while (YES) + { + if (objj_msgSend(self, "scanString:intoString:", "(", NULL)) + { + var args = objj_msgSend(CPMutableArray, "arrayWithCapacity:", 5); + if (!objj_msgSend(left, "keyPath")) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid function identifier: " + left); + if (!objj_msgSend(self, "scanString:intoString:", ")", NULL)) + { + objj_msgSend(args, "addObject:", objj_msgSend(self, "parseExpression")); + while (objj_msgSend(self, "scanString:intoString:", ",", NULL)) + { + objj_msgSend(args, "addObject:", objj_msgSend(self, "parseExpression")); + } + if (!objj_msgSend(self, "scanString:intoString:", ")", NULL)) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Missing ) in function arguments"); + } + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", objj_msgSend(left, "keyPath"), args); + } + else if (objj_msgSend(self, "scanString:intoString:", "[", NULL)) + { + if (objj_msgSend(self, "scanPredicateKeyword:", "FIRST")) + { + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", "first", objj_msgSend(CPArray, "arrayWithObject:", objj_msgSend(self, "parseExpression"))); + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "LAST")) + { + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", "last", objj_msgSend(CPArray, "arrayWithObject:", objj_msgSend(self, "parseExpression"))); + } + else if (objj_msgSend(self, "scanPredicateKeyword:", "SIZE")) + { + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", "count", objj_msgSend(CPArray, "arrayWithObject:", objj_msgSend(self, "parseExpression"))); + } + else + { + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", "index", objj_msgSend(CPArray, "arrayWithObjects:", left, objj_msgSend(self, "parseExpression"))); + } + if (!objj_msgSend(self, "scanString:intoString:", "]", NULL)) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Missing ] in index argument"); + } + else if (objj_msgSend(self, "scanString:intoString:", ".", NULL)) + { + if (!objj_msgSend(left, "keyPath")) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid left keypath:" + left); + var right = objj_msgSend(self, "parseExpression"); + if (!objj_msgSend(right, "keyPath")) + objj_msgSend(CPException, "raise:reason:", CPInvalidArgumentException, "Invalid right keypath:" + right); + left = objj_msgSend(CPExpression, "expressionForKeyPath:", objj_msgSend(left, "keyPath")+ "." + objj_msgSend(right, "keyPath")); + } + else + { + return left; + } + } +} +},["CPExpression"]), new objj_method(sel_getUid("parsePowerExpression"), function $CPPredicateScanner__parsePowerExpression(self, _cmd) +{ with(self) +{ + var left = objj_msgSend(self, "parseFunctionalExpression"); + while (YES) + { + var right; + if (objj_msgSend(self, "scanString:intoString:", "**", NULL)) + { + right = objj_msgSend(self, "parseFunctionalExpression"); + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", "pow", objj_msgSend(CPArray, "arrayWithObjects:", left, right)); + } + else + { + return left; + } + } +} +},["CPExpression"]), new objj_method(sel_getUid("parseMultiplicationExpression"), function $CPPredicateScanner__parseMultiplicationExpression(self, _cmd) +{ with(self) +{ + var left = objj_msgSend(self, "parsePowerExpression"); + while (YES) + { + var right; + if (objj_msgSend(self, "scanString:intoString:", "*", NULL)) + { + right = objj_msgSend(self, "parsePowerExpression"); + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", "_mul", objj_msgSend(CPArray, "arrayWithObjects:", left, right)); + } + else if (objj_msgSend(self, "scanString:intoString:", "/", NULL)) + { + right = objj_msgSend(self, "parsePowerExpression"); + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", "_div", objj_msgSend(CPArray, "arrayWithObjects:", left, right)); + } + else + { + return left; + } + } +} +},["CPExpression"]), new objj_method(sel_getUid("parseAdditionExpression"), function $CPPredicateScanner__parseAdditionExpression(self, _cmd) +{ with(self) +{ + var left = objj_msgSend(self, "parseMultiplicationExpression"); + while (YES) + { + var right; + if (objj_msgSend(self, "scanString:intoString:", "+", NULL)) + { + right = objj_msgSend(self, "parseMultiplicationExpression"); + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", "_add", objj_msgSend(CPArray, "arrayWithObjects:", left, right)); + } + else if (objj_msgSend(self, "scanString:intoString:", "-", NULL)) + { + right = objj_msgSend(self, "parseMultiplicationExpression"); + left = objj_msgSend(CPExpression, "expressionForFunction:arguments:", "_sub", objj_msgSend(CPArray, "arrayWithObjects:", left, right)); + } + else + { + return left; + } + } +} +},["CPExpression"]), new objj_method(sel_getUid("parseBinaryExpression"), function $CPPredicateScanner__parseBinaryExpression(self, _cmd) +{ with(self) +{ + var left = objj_msgSend(self, "parseAdditionExpression"); + while (YES) + { + var right; + if (objj_msgSend(self, "scanString:intoString:", ":=", NULL)) + { + right = objj_msgSend(self, "parseAdditionExpression"); + } + else + { + return left; + } + } +} +},["CPExpression"])]); +} +objj_executeFile("CPCompoundPredicate.j", YES); +objj_executeFile("CPComparisonPredicate.j", YES); +objj_executeFile("CPExpression.j", YES); +objj_executeFile("CPExpression_operator.j", YES); +objj_executeFile("CPExpression_aggregate.j", YES); +objj_executeFile("CPExpression_assignment.j", YES); + +e; ADDED Site/Site_Z/Frameworks/Debug/Objective-J/LICENSE Index: Site/Site_Z/Frameworks/Debug/Objective-J/LICENSE ================================================================== --- Site/Site_Z/Frameworks/Debug/Objective-J/LICENSE +++ Site/Site_Z/Frameworks/Debug/Objective-J/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site_Z/Frameworks/Debug/Objective-J/Objective-J.js Index: Site/Site_Z/Frameworks/Debug/Objective-J/Objective-J.js ================================================================== --- Site/Site_Z/Frameworks/Debug/Objective-J/Objective-J.js +++ Site/Site_Z/Frameworks/Debug/Objective-J/Objective-J.js @@ -0,0 +1,4595 @@ +/* + * Objective-J.js + * Objective-J + * + * Created by Francisco Tolmasky. + * Copyright 2008-2010, 280 North, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + + + + +var ObjectiveJ = { }; + +(function (global, exports) +{ +if (!this.JSON) { + JSON = {}; +} +(function () { + function f(n) { + return n < 10 ? '0' + n : n; + } + if (typeof Date.prototype.toJSON !== 'function') { + Date.prototype.toJSON = function (key) { + return this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z'; + }; + String.prototype.toJSON = + Number.prototype.toJSON = + Boolean.prototype.toJSON = function (key) { + return this.valueOf(); + }; + } + var cx = new RegExp('[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]', "g"); + var escapable = new RegExp('[\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]', "g"); + var gap, + indent, + meta = { + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + function quote(string) { + escapable.lastIndex = 0; + return escapable.test(string) ? + '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : + '"' + string + '"'; + } + function str(key, holder) { + var i, + k, + v, + length, + mind = gap, + partial, + value = holder[key]; + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + switch (typeof value) { + case 'string': + return quote(value); + case 'number': + return isFinite(value) ? String(value) : 'null'; + case 'boolean': + case 'null': + return String(value); + case 'object': + if (!value) { + return 'null'; + } + gap += indent; + partial = []; + if (Object.prototype.toString.apply(value) === '[object Array]') { + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + v = partial.length === 0 ? '[]' : + gap ? '[\n' + gap + + partial.join(',\n' + gap) + '\n' + + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + k = rep[i]; + if (typeof k === 'string') { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + v = partial.length === 0 ? '{}' : + gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + + mind + '}' : '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + if (typeof JSON.stringify !== 'function') { + JSON.stringify = function (value, replacer, space) { + var i; + gap = ''; + indent = ''; + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + } else if (typeof space === 'string') { + indent = space; + } + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + return str('', {'': value}); + }; + } + if (typeof JSON.parse !== 'function') { + JSON.parse = function (text, reviver) { + var j; + function walk(holder, key) { + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + if (/^[\],:{}\s]*$/. +test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). +replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). +replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + j = eval('(' + text + ')'); + return typeof reviver === 'function' ? + walk({'': j}, '') : j; + } + throw new SyntaxError('JSON.parse'); + }; + } +}()); +var formatRegex = new RegExp("([^%]+|%[\\+\\-\\ \\#0]*[0-9\\*]*(.[0-9\\*]+)?[hlL]?[cbBdieEfgGosuxXpn%@])", "g"); +var tagRegex = new RegExp("(%)([\\+\\-\\ \\#0]*)([0-9\\*]*)((.[0-9\\*]+)?)([hlL]?)([cbBdieEfgGosuxXpn%@])"); +exports.sprintf = function(format) +{ + var format = arguments[0], + tokens = format.match(formatRegex), + index = 0, + result = "", + arg = 1; + for (var i = 0; i < tokens.length; i++) + { + var t = tokens[i]; + if (format.substring(index, index + t.length) != t) + { + return result; + } + index += t.length; + if (t.charAt(0) != "%") + { + result += t; + } + else + { + var subtokens = t.match(tagRegex); + if (subtokens.length != 8 || subtokens[0] != t) + { + return result; + } + var percentSign = subtokens[1], + flags = subtokens[2], + widthString = subtokens[3], + precisionString = subtokens[4], + length = subtokens[6], + specifier = subtokens[7]; + var width = null; + if (widthString == "*") + width = arguments[arg++]; + else if (widthString != "") + width = Number(widthString); + var precision = null; + if (precisionString == ".*") + precision = arguments[arg++]; + else if (precisionString != "") + precision = Number(precisionString.substring(1)); + var leftJustify = (flags.indexOf("-") >= 0); + var padZeros = (flags.indexOf("0") >= 0); + var subresult = ""; + if (RegExp("[bBdiufeExXo]").test(specifier)) + { + var num = Number(arguments[arg++]); + var sign = ""; + if (num < 0) + { + sign = "-"; + } + else + { + if (flags.indexOf("+") >= 0) + sign = "+"; + else if (flags.indexOf(" ") >= 0) + sign = " "; + } + if (specifier == "d" || specifier == "i" || specifier == "u") + { + var number = String(Math.abs(Math.floor(num))); + subresult = justify(sign, "", number, "", width, leftJustify, padZeros) + } + if (specifier == "f") + { + var number = String((precision != null) ? Math.abs(num).toFixed(precision) : Math.abs(num)); + var suffix = (flags.indexOf("#") >= 0 && number.indexOf(".") < 0) ? "." : ""; + subresult = justify(sign, "", number, suffix, width, leftJustify, padZeros); + } + if (specifier == "e" || specifier == "E") + { + var number = String(Math.abs(num).toExponential(precision != null ? precision : 21)); + var suffix = (flags.indexOf("#") >= 0 && number.indexOf(".") < 0) ? "." : ""; + subresult = justify(sign, "", number, suffix, width, leftJustify, padZeros); + } + if (specifier == "x" || specifier == "X") + { + var number = String(Math.abs(num).toString(16)); + var prefix = (flags.indexOf("#") >= 0 && num != 0) ? "0x" : ""; + subresult = justify(sign, prefix, number, "", width, leftJustify, padZeros); + } + if (specifier == "b" || specifier == "B") + { + var number = String(Math.abs(num).toString(2)); + var prefix = (flags.indexOf("#") >= 0 && num != 0) ? "0b" : ""; + subresult = justify(sign, prefix, number, "", width, leftJustify, padZeros); + } + if (specifier == "o") + { + var number = String(Math.abs(num).toString(8)); + var prefix = (flags.indexOf("#") >= 0 && num != 0) ? "0" : ""; + subresult = justify(sign, prefix, number, "", width, leftJustify, padZeros); + } + if (RegExp("[A-Z]").test(specifier)) + subresult = subresult.toUpperCase(); + else + subresult = subresult.toLowerCase(); + } + else + { + var subresult = ""; + if (specifier == "%") + subresult = "%"; + else if (specifier == "c") + subresult = String(arguments[arg++]).charAt(0); + else if (specifier == "s" || specifier == "@") + subresult = String(arguments[arg++]); + else if (specifier == "p" || specifier == "n") + { + arg++; + subresult = ""; + } + subresult = justify("", "", subresult, "", width, leftJustify, false); + } + result += subresult; + } + } + return result; +} +function justify(sign, prefix, string, suffix, width, leftJustify, padZeros) +{ + var length = (sign.length + prefix.length + string.length + suffix.length); + if (leftJustify) + { + return sign + prefix + string + suffix + pad(width - length, " "); + } + else + { + if (padZeros) + return sign + prefix + pad(width - length, "0") + string + suffix; + else + return pad(width - length, " ") + sign + prefix + string + suffix; + } +} +function pad(n, ch) +{ + return Array(MAX(0,n)+1).join(ch); +} +CPLogDisable = false; +var CPLogDefaultTitle = "Cappuccino"; +var CPLogLevels = ["fatal", "error", "warn", "info", "debug", "trace"]; +var CPLogDefaultLevel = CPLogLevels[3]; +var _CPLogLevelsInverted = {}; +for (var i = 0; i < CPLogLevels.length; i++) + _CPLogLevelsInverted[CPLogLevels[i]] = i; +var _CPLogRegistrations = {}; +CPLogRegister = function(aProvider, aMaxLevel, aFormatter) +{ + CPLogRegisterRange(aProvider, CPLogLevels[0], aMaxLevel || CPLogLevels[CPLogLevels.length-1], aFormatter); +} +CPLogRegisterRange = function(aProvider, aMinLevel, aMaxLevel, aFormatter) +{ + var min = _CPLogLevelsInverted[aMinLevel]; + var max = _CPLogLevelsInverted[aMaxLevel]; + if (min !== undefined && max !== undefined && min <= max) + for (var i = min; i <= max; i++) + CPLogRegisterSingle(aProvider, CPLogLevels[i], aFormatter); +} +CPLogRegisterSingle = function(aProvider, aLevel, aFormatter) +{ + if (!_CPLogRegistrations[aLevel]) + _CPLogRegistrations[aLevel] = []; + for (var i = 0; i < _CPLogRegistrations[aLevel].length; i++) + if (_CPLogRegistrations[aLevel][i][0] === aProvider) + { + _CPLogRegistrations[aLevel][i][1] = aFormatter; + return; + } + _CPLogRegistrations[aLevel].push([aProvider, aFormatter]); +} +CPLogUnregister = function(aProvider) { + for (var aLevel in _CPLogRegistrations) + for (var i = 0; i < _CPLogRegistrations[aLevel].length; i++) + if (_CPLogRegistrations[aLevel][i][0] === aProvider) + _CPLogRegistrations[aLevel].splice(i--, 1); +} +function _CPLogDispatch(parameters, aLevel, aTitle) +{ + if (aTitle == undefined) + aTitle = CPLogDefaultTitle; + if (aLevel == undefined) + aLevel = CPLogDefaultLevel; + var message = (typeof parameters[0] == "string" && parameters.length > 1) ? exports.sprintf.apply(null, parameters) : String(parameters[0]); + if (_CPLogRegistrations[aLevel]) + for (var i = 0; i < _CPLogRegistrations[aLevel].length; i++) + { + var logger = _CPLogRegistrations[aLevel][i]; + logger[0](message, aLevel, aTitle, logger[1]); + } +} +CPLog = function() { _CPLogDispatch(arguments); } +for (var i = 0; i < CPLogLevels.length; i++) + CPLog[CPLogLevels[i]] = (function(level) { return function() { _CPLogDispatch(arguments, level); }; })(CPLogLevels[i]); +var _CPFormatLogMessage = function(aString, aLevel, aTitle) +{ + var now = new Date(); + aLevel = ( aLevel == null ? '' : ' [' + CPLogColorize(aLevel, aLevel) + ']' ); + if (typeof exports.sprintf == "function") + return exports.sprintf("%4d-%02d-%02d %02d:%02d:%02d.%03d %s%s: %s", + now.getFullYear(), now.getMonth() + 1, now.getDate(), + now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds(), + aTitle, aLevel, aString); + else + return now + " " + aTitle + aLevel + ": " + aString; +} +CPLogConsole = function(aString, aLevel, aTitle, aFormatter) +{ + if (typeof console != "undefined") + { + var message = (aFormatter || _CPFormatLogMessage)(aString, aLevel, aTitle); + var logger = { + "fatal": "error", + "error": "error", + "warn": "warn", + "info": "info", + "debug": "debug", + "trace": "debug" + }[aLevel]; + if (logger && console[logger]) + console[logger](message); + else if (console.log) + console.log(message); + } +} +CPLogColorize = function(aString, aLevel) +{ + return aString; +} +CPLogAlert = function(aString, aLevel, aTitle, aFormatter) +{ + if (typeof alert != "undefined" && !CPLogDisable) + { + var message = (aFormatter || _CPFormatLogMessage)(aString, aLevel, aTitle); + CPLogDisable = !confirm(message + "\n\n(Click cancel to stop log alerts)"); + } +} +var CPLogWindow = null; +CPLogPopup = function(aString, aLevel, aTitle, aFormatter) +{ + try { + if (CPLogDisable || window.open == undefined) + return; + if (!CPLogWindow || !CPLogWindow.document) + { + CPLogWindow = window.open("", "_blank", "width=600,height=400,status=no,resizable=yes,scrollbars=yes"); + if (!CPLogWindow) { + CPLogDisable = !confirm(aString + "\n\n(Disable pop-up blocking for CPLog window; Click cancel to stop log alerts)"); + return; + } + _CPLogInitPopup(CPLogWindow); + } + var logDiv = CPLogWindow.document.createElement("div"); + logDiv.setAttribute("class", aLevel || "fatal"); + var message = (aFormatter || _CPFormatLogMessage)(aString, aFormatter ? aLevel : null, aTitle); + logDiv.appendChild(CPLogWindow.document.createTextNode(message)); + CPLogWindow.log.appendChild(logDiv); + if (CPLogWindow.focusEnabled.checked) + CPLogWindow.focus(); + if (CPLogWindow.blockEnabled.checked) + CPLogWindow.blockEnabled.checked = CPLogWindow.confirm(message+"\nContinue blocking?"); + if (CPLogWindow.scrollEnabled.checked) + CPLogWindow.scrollToBottom(); + } catch(e) { + } +} +var CPLogPopupStyle ='<style type="text/css" media="screen"> body{font:10px Monaco,Courier,"Courier New",monospace,mono;padding-top:15px;} div > .fatal,div > .error,div > .warn,div > .info,div > .debug,div > .trace{display:none;overflow:hidden;white-space:pre;padding:0px 5px 0px 5px;margin-top:2px;-moz-border-radius:5px;-webkit-border-radius:5px;} div[wrap="yes"] > div{white-space:normal;} .fatal{background-color:#ffb2b3;} .error{background-color:#ffe2b2;} .warn{background-color:#fdffb2;} .info{background-color:#e4ffb2;} .debug{background-color:#a0e5a0;} .trace{background-color:#99b9ff;} .enfatal .fatal,.enerror .error,.enwarn .warn,.eninfo .info,.endebug .debug,.entrace .trace{display:block;} div#header{background-color:rgba(240,240,240,0.82);position:fixed;top:0px;left:0px;width:100%;border-bottom:1px solid rgba(0,0,0,0.33);text-align:center;} ul#enablers{display:inline-block;margin:1px 15px 0 15px;padding:2px 0 2px 0;} ul#enablers li{display:inline;padding:0px 5px 0px 5px;margin-left:4px;-moz-border-radius:5px;-webkit-border-radius:5px;} [enabled="no"]{opacity:0.25;} ul#options{display:inline-block;margin:0 15px 0px 15px;padding:0 0px;} ul#options li{margin:0 0 0 0;padding:0 0 0 0;display:inline;} </style>'; +function _CPLogInitPopup(logWindow) +{ + var doc = logWindow.document; + doc.writeln("<html><head><title>"+CPLogPopupStyle+""); + doc.title = CPLogDefaultTitle + " Run Log"; + var head = doc.getElementsByTagName("head")[0]; + var body = doc.getElementsByTagName("body")[0]; + var base = window.location.protocol + "//" + window.location.host + window.location.pathname; + base = base.substring(0,base.lastIndexOf("/")+1); + var div = doc.createElement("div"); + div.setAttribute("id", "header"); + body.appendChild(div); + var ul = doc.createElement("ul"); + ul.setAttribute("id", "enablers"); + div.appendChild(ul); + for (var i = 0; i < CPLogLevels.length; i++) { + var li = doc.createElement("li"); + li.setAttribute("id", "en"+CPLogLevels[i]); + li.setAttribute("class", CPLogLevels[i]); + li.setAttribute("onclick", "toggle(this);"); + li.setAttribute("enabled", "yes"); + li.appendChild(doc.createTextNode(CPLogLevels[i])); + ul.appendChild(li); + } + var ul = doc.createElement("ul"); + ul.setAttribute("id", "options"); + div.appendChild(ul); + var options = {"focus":["Focus",false], "block":["Block",false], "wrap":["Wrap",false], "scroll":["Scroll",true], "close":["Close",true]}; + for (o in options) { + var li = doc.createElement("li"); + ul.appendChild(li); + logWindow[o+"Enabled"] = doc.createElement("input"); + logWindow[o+"Enabled"].setAttribute("id", o); + logWindow[o+"Enabled"].setAttribute("type", "checkbox"); + if (options[o][1]) + logWindow[o+"Enabled"].setAttribute("checked", "checked"); + li.appendChild(logWindow[o+"Enabled"]); + var label = doc.createElement("label"); + label.setAttribute("for", o); + label.appendChild(doc.createTextNode(options[o][0])); + li.appendChild(label); + } + logWindow.log = doc.createElement("div"); + logWindow.log.setAttribute("class", "enerror endebug enwarn eninfo enfatal entrace"); + body.appendChild(logWindow.log); + logWindow.toggle = function(elem) { + var enabled = (elem.getAttribute("enabled") == "yes") ? "no" : "yes"; + elem.setAttribute("enabled", enabled); + if (enabled == "yes") + logWindow.log.className += " " + elem.id + else + logWindow.log.className = logWindow.log.className.replace(new RegExp("[\\s]*"+elem.id, "g"), ""); + } + logWindow.scrollToBottom = function() { + logWindow.scrollTo(0, body.offsetHeight); + } + logWindow.wrapEnabled.addEventListener("click", function() { + logWindow.log.setAttribute("wrap", logWindow.wrapEnabled.checked ? "yes" : "no"); + }, false); + logWindow.addEventListener("keydown", function(e) { + var e = e || logWindow.event; + if (e.keyCode == 75 && (e.ctrlKey || e.metaKey)) { + while (logWindow.log.firstChild) { + logWindow.log.removeChild(logWindow.log.firstChild); + } + e.preventDefault(); + } + }, "false"); + window.addEventListener("unload", function() { + if (logWindow && logWindow.closeEnabled && logWindow.closeEnabled.checked) { + CPLogDisable = true; + logWindow.close(); + } + }, false); + logWindow.addEventListener("unload", function() { + if (!CPLogDisable) { + CPLogDisable = !confirm("Click cancel to stop logging"); + } + }, false); +} +CPLogDefault = (typeof window === "object" && window.console) ? CPLogConsole : CPLogPopup; +var undefined; +if (typeof window !== "undefined") +{ + window.setNativeTimeout = window.setTimeout; + window.clearNativeTimeout = window.clearTimeout; + window.setNativeInterval = window.setInterval; + window.clearNativeInterval = window.clearInterval; +} +NO = false; +YES = true; +nil = null; +Nil = null; +NULL = null; +ABS = Math.abs; +ASIN = Math.asin; +ACOS = Math.acos; +ATAN = Math.atan; +ATAN2 = Math.atan2; +SIN = Math.sin; +COS = Math.cos; +TAN = Math.tan; +EXP = Math.exp; +POW = Math.pow; +CEIL = Math.ceil; +FLOOR = Math.floor; +ROUND = Math.round; +MIN = Math.min; +MAX = Math.max; +RAND = Math.random; +SQRT = Math.sqrt; +E = Math.E; +LN2 = Math.LN2; +LN10 = Math.LN10; +LOG2E = Math.LOG2E; +LOG10E = Math.LOG10E; +PI = Math.PI; +PI2 = Math.PI * 2.0; +PI_2 = Math.PI / 2.0; +SQRT1_2 = Math.SQRT1_2; +SQRT2 = Math.SQRT2; +function EventDispatcher( anOwner) +{ + this._eventListenersForEventNames = { }; + this._owner = anOwner; +} +EventDispatcher.prototype.addEventListener = function( anEventName, anEventListener) +{ + var eventListenersForEventNames = this._eventListenersForEventNames; + if (!hasOwnProperty.call(eventListenersForEventNames, anEventName)) + { + var eventListenersForEventName = []; + eventListenersForEventNames[anEventName] = eventListenersForEventName; + } + else + var eventListenersForEventName = eventListenersForEventNames[anEventName]; + var index = eventListenersForEventName.length; + while (index--) + if (eventListenersForEventName[index] === anEventListener) + return; + eventListenersForEventName.push(anEventListener); +} +EventDispatcher.prototype.removeEventListener = function( anEventName, anEventListener) +{ + var eventListenersForEventNames = this._eventListenersForEventNames; + if (!hasOwnProperty.call(eventListenersForEventNames, anEventName)) + return; + var eventListenersForEventName = eventListenersForEventNames[anEventName], + index = eventListenersForEventName.length; + while (index--) + if (eventListenersForEventName[index] === anEventListener) + return eventListenersForEventName.splice(index, 1); +} +EventDispatcher.prototype.dispatchEvent = function( anEvent) +{ + var type = anEvent.type, + eventListenersForEventNames = this._eventListenersForEventNames; + if (hasOwnProperty.call(eventListenersForEventNames, type)) + { + var eventListenersForEventName = this._eventListenersForEventNames[type], + index = 0, + count = eventListenersForEventName.length; + for (; index < count; ++index) + eventListenersForEventName[index](anEvent); + } + var manual = (this._owner || this)["on" + type]; + if (manual) + manual(anEvent); +} +var asynchronousTimeoutCount = 0, + asynchronousTimeoutId = null, + asynchronousFunctionQueue = []; +function Asynchronous( aFunction) +{ + var currentAsynchronousTimeoutCount = asynchronousTimeoutCount; + if (asynchronousTimeoutId === null) + { + window.setNativeTimeout(function() + { + var queue = asynchronousFunctionQueue, + index = 0, + count = asynchronousFunctionQueue.length; + ++asynchronousTimeoutCount; + asynchronousTimeoutId = null; + asynchronousFunctionQueue = []; + for (; index < count; ++index) + queue[index](); + }, 0); + } + return function() + { + var args = arguments; + if (asynchronousTimeoutCount > currentAsynchronousTimeoutCount) + aFunction.apply(this, args); + else + asynchronousFunctionQueue.push(function() { aFunction.apply(this, args) }); + }; +} +var NativeRequest = null; +if (window.ActiveXObject !== undefined) +{ + var MSXML_XMLHTTP_OBJECTS = ["Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP.6.0"], + index = MSXML_XMLHTTP_OBJECTS.length; + while (index--) + { + try + { + var MSXML_XMLHTTP = MSXML_XMLHTTP_OBJECTS[index]; + new ActiveXObject(MSXML_XMLHTTP); + NativeRequest = function() + { + return new ActiveXObject(MSXML_XMLHTTP); + } + break; + } + catch (anException) + { + } + } +} +if (!NativeRequest) + NativeRequest = window.XMLHttpRequest; +CFHTTPRequest = function() +{ + this._isOpen = false; + this._requestHeaders = {}; + this._mimeType = null; + this._eventDispatcher = new EventDispatcher(this); + this._nativeRequest = new NativeRequest(); + var self = this; + this._stateChangeHandler = function() + { + determineAndDispatchHTTPRequestEvents(self); + } + this._nativeRequest.onreadystatechange = this._stateChangeHandler; + if (CFHTTPRequest.AuthenticationDelegate !== nil) + this._eventDispatcher.addEventListener("HTTP403", function(){CFHTTPRequest.AuthenticationDelegate(self)}); +} +CFHTTPRequest.UninitializedState = 0; +CFHTTPRequest.LoadingState = 1; +CFHTTPRequest.LoadedState = 2; +CFHTTPRequest.InteractiveState = 3; +CFHTTPRequest.CompleteState = 4; +CFHTTPRequest.AuthenticationDelegate = nil; +CFHTTPRequest.prototype.status = function() +{ + try + { + return this._nativeRequest.status || 0; + } + catch (anException) + { + return 0; + } +} +CFHTTPRequest.prototype.statusText = function() +{ + try + { + return this._nativeRequest.statusText || ""; + } + catch (anException) + { + return ""; + } +} +CFHTTPRequest.prototype.readyState = function() +{ + return this._nativeRequest.readyState; +} +CFHTTPRequest.prototype.success = function() +{ + var status = this.status(); + if (status >= 200 && status < 300) + return YES; + return status === 0 && this.responseText() && this.responseText().length; +} +CFHTTPRequest.prototype.responseXML = function() +{ + var responseXML = this._nativeRequest.responseXML; + if (responseXML && (NativeRequest === window.XMLHttpRequest)) + return responseXML; + return parseXML(this.responseText()); +} +CFHTTPRequest.prototype.responsePropertyList = function() +{ + var responseText = this.responseText(); + if (CFPropertyList.sniffedFormatOfString(responseText) === CFPropertyList.FormatXML_v1_0) + return CFPropertyList.propertyListFromXML(this.responseXML()); + return CFPropertyList.propertyListFromString(responseText); +} +CFHTTPRequest.prototype.responseText = function() +{ + return this._nativeRequest.responseText; +} +CFHTTPRequest.prototype.setRequestHeader = function( aHeader, aValue) +{ + this._requestHeaders[aHeader] = aValue; +} +CFHTTPRequest.prototype.getResponseHeader = function( aHeader) +{ + return this._nativeRequest.getResponseHeader(aHeader); +} +CFHTTPRequest.prototype.getAllResponseHeaders = function() +{ + return this._nativeRequest.getAllResponseHeaders(); +} +CFHTTPRequest.prototype.overrideMimeType = function( aMimeType) +{ + this._mimeType = aMimeType; +} +CFHTTPRequest.prototype.open = function( aMethod, aURL, isAsynchronous, aUser, aPassword) +{ + this._isOpen = true; + this._URL = aURL; + this._async = isAsynchronous; + this._method = aMethod; + this._user = aUser; + this._password = aPassword; + return this._nativeRequest.open(aMethod, aURL, isAsynchronous, aUser, aPassword); +} +CFHTTPRequest.prototype.send = function( aBody) +{ + if (!this._isOpen) + { + delete this._nativeRequest.onreadystatechange; + this._nativeRequest.open(this._method, this._URL, this._async, this._user, this._password); + this._nativeRequest.onreadystatechange = this._stateChangeHandler; + } + for (var i in this._requestHeaders) + { + if (this._requestHeaders.hasOwnProperty(i)) + this._nativeRequest.setRequestHeader(i, this._requestHeaders[i]); + } + if (this._mimeType && "overrideMimeType" in this._nativeRequest) + this._nativeRequest.overrideMimeType(this._mimeType); + this._isOpen = false; + try + { + return this._nativeRequest.send(aBody); + } + catch (anException) + { + this._eventDispatcher.dispatchEvent({ type:"failure", request:this }); + } +} +CFHTTPRequest.prototype.abort = function() +{ + this._isOpen = false; + return this._nativeRequest.abort(); +} +CFHTTPRequest.prototype.addEventListener = function( anEventName, anEventListener) +{ + this._eventDispatcher.addEventListener(anEventName, anEventListener); +} +CFHTTPRequest.prototype.removeEventListener = function( anEventName, anEventListener) +{ + this._eventDispatcher.removeEventListener(anEventName, anEventListener); +} +function determineAndDispatchHTTPRequestEvents( aRequest) +{ + var eventDispatcher = aRequest._eventDispatcher; + eventDispatcher.dispatchEvent({ type:"readystatechange", request:aRequest}); + var nativeRequest = aRequest._nativeRequest, + readyStates = ["uninitialized", "loading", "loaded", "interactive", "complete"]; + if (readyStates[aRequest.readyState()] === "complete") + { + var status = "HTTP" + aRequest.status(); + eventDispatcher.dispatchEvent({ type:status, request:aRequest }); + var result = aRequest.success() ? "success" : "failure"; + eventDispatcher.dispatchEvent({ type:result, request:aRequest }); + eventDispatcher.dispatchEvent({ type:readyStates[aRequest.readyState()], request:aRequest}); + } + else + eventDispatcher.dispatchEvent({ type:readyStates[aRequest.readyState()], request:aRequest}); +} +function FileRequest( aURL, onsuccess, onfailure) +{ + var request = new CFHTTPRequest(); + if (aURL.pathExtension() === "plist") + request.overrideMimeType("text/xml"); + if (exports.asyncLoader) + { + request.onsuccess = Asynchronous(onsuccess); + request.onfailure = Asynchronous(onfailure); + } + else + { + request.onsuccess = onsuccess; + request.onfailure = onfailure; + } + request.open("GET", aURL.absoluteString(), exports.asyncLoader); + request.send(""); +} +exports.asyncLoader = YES; +exports.Asynchronous = Asynchronous; +exports.determineAndDispatchHTTPRequestEvents = determineAndDispatchHTTPRequestEvents; +var OBJECT_COUNT = 0; +objj_generateObjectUID = function() +{ + return OBJECT_COUNT++; +} +CFPropertyList = function() +{ + this._UID = objj_generateObjectUID(); +} +CFPropertyList.DTDRE = /^\s*(?:<\?\s*xml\s+version\s*=\s*\"1.0\"[^>]*\?>\s*)?(?:<\!DOCTYPE[^>]*>\s*)?/i +CFPropertyList.XMLRE = /^\s*(?:<\?\s*xml\s+version\s*=\s*\"1.0\"[^>]*\?>\s*)?(?:<\!DOCTYPE[^>]*>\s*)?<\s*plist[^>]*\>/i; +CFPropertyList.FormatXMLDTD = "\n"; +CFPropertyList.Format280NorthMagicNumber = "280NPLIST"; +CFPropertyList.FormatOpenStep = 1, +CFPropertyList.FormatXML_v1_0 = 100, +CFPropertyList.FormatBinary_v1_0 = 200, +CFPropertyList.Format280North_v1_0 = -1000; +CFPropertyList.sniffedFormatOfString = function( aString) +{ + if (aString.match(CFPropertyList.XMLRE)) + return CFPropertyList.FormatXML_v1_0; + if (aString.substr(0, CFPropertyList.Format280NorthMagicNumber.length) === CFPropertyList.Format280NorthMagicNumber) + return CFPropertyList.Format280North_v1_0; + return NULL; +} +CFPropertyList.dataFromPropertyList = function( aPropertyList, aFormat) +{ + var data = new CFMutableData(); + data.setRawString(CFPropertyList.stringFromPropertyList(aPropertyList, aFormat)); + return data; +} +CFPropertyList.stringFromPropertyList = function( aPropertyList, aFormat) +{ + if (!aFormat) + aFormat = CFPropertyList.Format280North_v1_0; + var serializers = CFPropertyListSerializers[aFormat]; + return serializers["start"]() + + serializePropertyList(aPropertyList, serializers) + + serializers["finish"](); +} +function serializePropertyList( aPropertyList, serializers) +{ + var type = typeof aPropertyList, + valueOf = aPropertyList.valueOf(), + typeValueOf = typeof valueOf; + if (type !== typeValueOf) + { + type = typeValueOf; + aPropertyList = valueOf; + } + if (aPropertyList === YES || aPropertyList === NO) + type = "boolean"; + else if (type === "number") + { + if (FLOOR(aPropertyList) === aPropertyList) + type = "integer"; + else + type = "real"; + } + else if (type !== "string") + { + if (aPropertyList.slice) + type = "array"; + else + type = "dictionary"; + } + return serializers[type](aPropertyList, serializers); +} +var CFPropertyListSerializers = { }; +CFPropertyListSerializers[CFPropertyList.FormatXML_v1_0] = +{ + "start": function() + { + return CFPropertyList.FormatXMLDTD + ""; + }, + "finish": function() + { + return ""; + }, + "string": function( aString) + { + return "" + encodeHTMLComponent(aString) + "";; + }, + "boolean" : function( aBoolean) + { + return aBoolean ? "" : ""; + }, + "integer": function( anInteger) + { + return "" + anInteger + ""; + }, + "real": function( aFloat) + { + return "" + aFloat + ""; + }, + "array": function( anArray, serializers) + { + var index = 0, + count = anArray.length, + string = ""; + for (; index < count; ++index) + string += serializePropertyList(anArray[index], serializers); + return string + ""; + }, + "dictionary": function( aDictionary, serializers) + { + var keys = aDictionary._keys, + index = 0, + count = keys.length, + string = ""; + for (; index < count; ++index) + { + var key = keys[index]; + string += "" + key + ""; + string += serializePropertyList(aDictionary.valueForKey(key), serializers); + } + return string + ""; + } +} +var ARRAY_MARKER = "A", + DICTIONARY_MARKER = "D", + FLOAT_MARKER = "f", + INTEGER_MARKER = "d", + STRING_MARKER = "S", + TRUE_MARKER = "T", + FALSE_MARKER = "F", + KEY_MARKER = "K", + END_MARKER = "E"; +CFPropertyListSerializers[CFPropertyList.Format280North_v1_0] = +{ + "start": function() + { + return CFPropertyList.Format280NorthMagicNumber + ";1.0;"; + }, + "finish": function() + { + return ""; + }, + "string" : function( aString) + { + return STRING_MARKER + ';' + aString.length + ';' + aString; + }, + "boolean" : function( aBoolean) + { + return (aBoolean ? TRUE_MARKER : FALSE_MARKER) + ';'; + }, + "integer": function( anInteger) + { + var string = "" + anInteger; + return INTEGER_MARKER + ';' + string.length + ';' + string; + }, + "real": function( aFloat) + { + var string = "" + aFloat; + return FLOAT_MARKER + ';' + string.length + ';' + string; + }, + "array": function( anArray, serializers) + { + var index = 0, + count = anArray.length, + string = ARRAY_MARKER + ';'; + for (; index < count; ++index) + string += serializePropertyList(anArray[index], serializers); + return string + END_MARKER + ';'; + }, + "dictionary": function( aDictionary, serializers) + { + var keys = aDictionary._keys, + index = 0, + count = keys.length, + string = DICTIONARY_MARKER +';'; + for (; index < count; ++index) + { + var key = keys[index]; + string += KEY_MARKER + ';' + key.length + ';' + key; + string += serializePropertyList(aDictionary.valueForKey(key), serializers); + } + return string + END_MARKER + ';'; + } +} +var XML_XML = "xml", + XML_DOCUMENT = "#document", + PLIST_PLIST = "plist", + PLIST_KEY = "key", + PLIST_DICTIONARY = "dict", + PLIST_ARRAY = "array", + PLIST_STRING = "string", + PLIST_BOOLEAN_TRUE = "true", + PLIST_BOOLEAN_FALSE = "false", + PLIST_NUMBER_REAL = "real", + PLIST_NUMBER_INTEGER = "integer", + PLIST_DATA = "data"; +var _plist_traverseNextNode = function(anXMLNode, stayWithin, stack) +{ + var node = anXMLNode; + node = (node.firstChild); if (node !== NULL && ((node.nodeType) === 8 || (node.nodeType) === 3)) while ((node = (node.nextSibling)) && ((node.nodeType) === 8 || (node.nodeType) === 3)) ;; + if (node) + return node; + if ((String(anXMLNode.nodeName)) === PLIST_ARRAY || (String(anXMLNode.nodeName)) === PLIST_DICTIONARY) + stack.pop(); + else + { + if (node === stayWithin) + return NULL; + node = anXMLNode; + while ((node = (node.nextSibling)) && ((node.nodeType) === 8 || (node.nodeType) === 3)) ;; + if (node) + return node; + } + node = anXMLNode; + while (node) + { + var next = node; + while ((next = (next.nextSibling)) && ((next.nodeType) === 8 || (next.nodeType) === 3)) ;; + if (next) + return next; + var node = (node.parentNode); + if (stayWithin && node === stayWithin) + return NULL; + stack.pop(); + } + return NULL; +} +CFPropertyList.propertyListFromData = function( aData, aFormat) +{ + return CFPropertyList.propertyListFromString(aData.rawString(), aFormat); +} +CFPropertyList.propertyListFromString = function( aString, aFormat) +{ + if (!aFormat) + aFormat = CFPropertyList.sniffedFormatOfString(aString); + if (aFormat === CFPropertyList.FormatXML_v1_0) + return CFPropertyList.propertyListFromXML(aString); + if (aFormat === CFPropertyList.Format280North_v1_0) + return propertyListFrom280NorthString(aString); + return NULL; +} +var ARRAY_MARKER = "A", + DICTIONARY_MARKER = "D", + FLOAT_MARKER = "f", + INTEGER_MARKER = "d", + STRING_MARKER = "S", + TRUE_MARKER = "T", + FALSE_MARKER = "F", + KEY_MARKER = "K", + END_MARKER = "E"; +function propertyListFrom280NorthString( aString) +{ + var stream = new MarkedStream(aString), + marker = NULL, + key = "", + object = NULL, + plistObject = NULL, + containers = [], + currentContainer = NULL; + while (marker = stream.getMarker()) + { + if (marker === END_MARKER) + { + containers.pop(); + continue; + } + var count = containers.length; + if (count) + currentContainer = containers[count - 1]; + if (marker === KEY_MARKER) + { + key = stream.getString(); + marker = stream.getMarker(); + } + switch (marker) + { + case ARRAY_MARKER: object = [] + containers.push(object); + break; + case DICTIONARY_MARKER: object = new CFMutableDictionary(); + containers.push(object); + break; + case FLOAT_MARKER: object = parseFloat(stream.getString()); + break; + case INTEGER_MARKER: object = parseInt(stream.getString(), 10); + break; + case STRING_MARKER: object = stream.getString(); + break; + case TRUE_MARKER: object = YES; + break; + case FALSE_MARKER: object = NO; + break; + default: throw new Error("*** " + marker + " marker not recognized in Plist."); + } + if (!plistObject) + plistObject = object; + else if (currentContainer) + if (currentContainer.slice) + currentContainer.push(object); + else + currentContainer.setValueForKey(key, object); + } + return plistObject; +} +function encodeHTMLComponent( aString) +{ + return aString.replace(/&/g,'&').replace(/"/g, '"').replace(/'/g, ''').replace(//g,'>'); +} +function decodeHTMLComponent( aString) +{ + return aString.replace(/"/g, '"').replace(/'/g, '\'').replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&'); +} +function parseXML( aString) +{ + if (window.DOMParser) + return (new window.DOMParser().parseFromString(aString, "text/xml").documentElement); + else if (window.ActiveXObject) + { + XMLNode = new ActiveXObject("Microsoft.XMLDOM"); + var matches = aString.match(CFPropertyList.DTDRE); + if (matches) + aString = aString.substr(matches[0].length); + XMLNode.loadXML(aString); + return XMLNode + } + return NULL; +} +CFPropertyList.propertyListFromXML = function( aStringOrXMLNode) +{ + var XMLNode = aStringOrXMLNode; + if (aStringOrXMLNode.valueOf && typeof aStringOrXMLNode.valueOf() === "string") + XMLNode = parseXML(aStringOrXMLNode); + while (((String(XMLNode.nodeName)) === XML_DOCUMENT) || ((String(XMLNode.nodeName)) === XML_XML)) + XMLNode = (XMLNode.firstChild); if (XMLNode !== NULL && ((XMLNode.nodeType) === 8 || (XMLNode.nodeType) === 3)) while ((XMLNode = (XMLNode.nextSibling)) && ((XMLNode.nodeType) === 8 || (XMLNode.nodeType) === 3)) ;; + if (((XMLNode.nodeType) === 10)) + while ((XMLNode = (XMLNode.nextSibling)) && ((XMLNode.nodeType) === 8 || (XMLNode.nodeType) === 3)) ;; + if (!((String(XMLNode.nodeName)) === PLIST_PLIST)) + return NULL; + var key = "", + object = NULL, + plistObject = NULL, + plistNode = XMLNode, + containers = [], + currentContainer = NULL; + while (XMLNode = _plist_traverseNextNode(XMLNode, plistNode, containers)) + { + var count = containers.length; + if (count) + currentContainer = containers[count - 1]; + if ((String(XMLNode.nodeName)) === PLIST_KEY) + { + key = ((String((XMLNode.firstChild).nodeValue))); + while ((XMLNode = (XMLNode.nextSibling)) && ((XMLNode.nodeType) === 8 || (XMLNode.nodeType) === 3)) ;; + } + switch (String((String(XMLNode.nodeName)))) + { + case PLIST_ARRAY: object = [] + containers.push(object); + break; + case PLIST_DICTIONARY: object = new CFMutableDictionary(); + containers.push(object); + break; + case PLIST_NUMBER_REAL: object = parseFloat(((String((XMLNode.firstChild).nodeValue)))); + break; + case PLIST_NUMBER_INTEGER: object = parseInt(((String((XMLNode.firstChild).nodeValue))), 10); + break; + case PLIST_STRING: if ((XMLNode.getAttribute("type") === "base64")) + object = (XMLNode.firstChild) ? CFData.decodeBase64ToString(((String((XMLNode.firstChild).nodeValue)))) : ""; + else + object = decodeHTMLComponent((XMLNode.firstChild) ? ((String((XMLNode.firstChild).nodeValue))) : ""); + break; + case PLIST_BOOLEAN_TRUE: object = YES; + break; + case PLIST_BOOLEAN_FALSE: object = NO; + break; + case PLIST_DATA: object = new CFMutableData(); + object.bytes = (XMLNode.firstChild) ? CFData.decodeBase64ToArray(((String((XMLNode.firstChild).nodeValue))), YES) : []; + break; + default: throw new Error("*** " + (String(XMLNode.nodeName)) + " tag not recognized in Plist."); + } + if (!plistObject) + plistObject = object; + else if (currentContainer) + if (currentContainer.slice) + currentContainer.push(object); + else + currentContainer.setValueForKey(key, object); + } + return plistObject; +} +kCFPropertyListOpenStepFormat = CFPropertyList.FormatOpenStep; +kCFPropertyListXMLFormat_v1_0 = CFPropertyList.FormatXML_v1_0; +kCFPropertyListBinaryFormat_v1_0 = CFPropertyList.FormatBinary_v1_0; +kCFPropertyList280NorthFormat_v1_0 = CFPropertyList.Format280North_v1_0; +CFPropertyListCreate = function() +{ + return new CFPropertyList(); +} +CFPropertyListCreateFromXMLData = function( data) +{ + return CFPropertyList.propertyListFromData(data, CFPropertyList.FormatXML_v1_0); +} +CFPropertyListCreateXMLData = function( aPropertyList) +{ + return CFPropertyList.dataFromPropertyList(aPropertyList, CFPropertyList.FormatXML_v1_0); +} +CFPropertyListCreateFrom280NorthData = function( data) +{ + return CFPropertyList.propertyListFromData(data, CFPropertyList.Format280North_v1_0); +} +CFPropertyListCreate280NorthData = function( aPropertyList) +{ + return CFPropertyList.dataFromPropertyList(aPropertyList, CFPropertyList.Format280North_v1_0); +} +CPPropertyListCreateFromData = function( data, aFormat) +{ + return CFPropertyList.propertyListFromData(data, aFormat); +} +CPPropertyListCreateData = function( aPropertyList, aFormat) +{ + return CFPropertyList.dataFromPropertyList(aPropertyList, aFormat); +} +CFDictionary = function( aDictionary) +{ + this._keys = []; + this._count = 0; + this._buckets = { }; + this._UID = objj_generateObjectUID(); +} +var indexOf = Array.prototype.indexOf, + hasOwnProperty = Object.prototype.hasOwnProperty; +CFDictionary.prototype.copy = function() +{ + return this; +} +CFDictionary.prototype.mutableCopy = function() +{ + var newDictionary = new CFMutableDictionary(), + keys = this._keys, + count = this._count; + newDictionary._keys = keys.slice(); + newDictionary._count = count; + var index = 0, + buckets = this._buckets, + newBuckets = newDictionary._buckets; + for (; index < count; ++index) + { + var key = keys[index]; + newBuckets[key] = buckets[key]; + } + return newDictionary; +} +CFDictionary.prototype.containsKey = function( aKey) +{ + return hasOwnProperty.apply(this._buckets, [aKey]); +} +CFDictionary.prototype.containsKey.displayName = "CFDictionary.prototype.containsKey"; +CFDictionary.prototype.containsValue = function( anObject) +{ + var keys = this._keys, + buckets = this._buckets, + index = 0, + count = keys.length; + for (; index < count; ++index) + if (buckets[keys[index]] === anObject) + return YES; + return NO; +} +CFDictionary.prototype.containsValue.displayName = "CFDictionary.prototype.containsValue"; +CFDictionary.prototype.count = function() +{ + return this._count; +} +CFDictionary.prototype.count.displayName = "CFDictionary.prototype.count"; +CFDictionary.prototype.countOfKey = function( aKey) +{ + return this.containsKey(aKey) ? 1 : 0; +} +CFDictionary.prototype.countOfKey.displayName = "CFDictionary.prototype.countOfKey"; +CFDictionary.prototype.countOfValue = function( anObject) +{ + var keys = this._keys, + buckets = this._buckets, + index = 0, + count = keys.length, + countOfValue = 0; + for (; index < count; ++index) + if (buckets[keys[index]] === anObject) + ++countOfValue; + return countOfValue; +} +CFDictionary.prototype.countOfValue.displayName = "CFDictionary.prototype.countOfValue"; +CFDictionary.prototype.keys = function() +{ + return this._keys.slice(); +} +CFDictionary.prototype.keys.displayName = "CFDictionary.prototype.keys"; +CFDictionary.prototype.valueForKey = function( aKey) +{ + var buckets = this._buckets; + if (!hasOwnProperty.apply(buckets, [aKey])) + return nil; + return buckets[aKey]; +} +CFDictionary.prototype.valueForKey.displayName = "CFDictionary.prototype.valueForKey"; +CFDictionary.prototype.toString = function() +{ + var string = "{\n", + keys = this._keys, + index = 0, + count = this._count; + for (; index < count; ++index) + { + var key = keys[index]; + string += "\t" + key + " = \"" + String(this.valueForKey(key)).split('\n').join("\n\t") + "\"\n"; + } + return string + "}"; +} +CFDictionary.prototype.toString.displayName = "CFDictionary.prototype.toString"; +CFMutableDictionary = function( aDictionary) +{ + CFDictionary.apply(this, []); +} +CFMutableDictionary.prototype = new CFDictionary(); +CFMutableDictionary.prototype.copy = function() +{ + return this.mutableCopy(); +} +CFMutableDictionary.prototype.addValueForKey = function( aKey, aValue) +{ + if (this.containsKey(aKey)) + return; + ++this._count; + this._keys.push(aKey); + this._buckets[aKey] = aValue; +} +CFMutableDictionary.prototype.addValueForKey.displayName = "CFMutableDictionary.prototype.addValueForKey"; +CFMutableDictionary.prototype.removeValueForKey = function( aKey) +{ + var indexOfKey = -1; + if (indexOf) + indexOfKey = indexOf.call(this._keys, aKey); + else + { + var keys = this._keys, + index = 0, + count = keys.length; + for (; index < count; ++index) + if (keys[index] === aKey) + { + indexOfKey = index; + break; + } + } + if (indexOfKey === -1) + return; + --this._count; + this._keys.splice(indexOfKey, 1); + delete this._buckets[aKey]; +} +CFMutableDictionary.prototype.removeValueForKey.displayName = "CFMutableDictionary.prototype.removeValueForKey"; +CFMutableDictionary.prototype.removeAllValues = function() +{ + this._count = 0; + this._keys = []; + this._buckets = { }; +} +CFMutableDictionary.prototype.removeAllValues.displayName = "CFMutableDictionary.prototype.removeAllValues"; +CFMutableDictionary.prototype.replaceValueForKey = function( aKey, aValue) +{ + if (!this.containsKey(aKey)) + return; + this._buckets[aKey] = aValue; +} +CFMutableDictionary.prototype.replaceValueForKey.displayName = "CFMutableDictionary.prototype.replaceValueForKey"; +CFMutableDictionary.prototype.setValueForKey = function( aKey, aValue) +{ + if (aValue === nil || aValue === undefined) + this.removeValueForKey(aKey); + else if (this.containsKey(aKey)) + this.replaceValueForKey(aKey, aValue); + else + this.addValueForKey(aKey, aValue); +} +CFMutableDictionary.prototype.setValueForKey.displayName = "CFMutableDictionary.prototype.setValueForKey"; +CFData = function() +{ + this._rawString = NULL; + this._propertyList = NULL; + this._propertyListFormat = NULL; + this._JSONObject = NULL; + this._bytes = NULL; + this._base64 = NULL; +} +CFData.prototype.propertyList = function() +{ + if (!this._propertyList) + this._propertyList = CFPropertyList.propertyListFromString(this.rawString()); + return this._propertyList; +} +CFData.prototype.JSONObject = function() +{ + if (!this._JSONObject) + { + try + { + this._JSONObject = JSON.parse(this.rawString()); + } + catch (anException) + { + } + } + return this._JSONObject; +} +CFData.prototype.rawString = function() +{ + if (this._rawString === NULL) + { + if (this._propertyList) + this._rawString = CFPropertyList.stringFromPropertyList(this._propertyList, this._propertyListFormat); + else if (this._JSONObject) + this._rawString = JSON.stringify(this._JSONObject); + else + throw new Error("Can't convert data to string."); + } + return this._rawString; +} +CFData.prototype.bytes = function() +{ + return this._bytes; +} +CFData.prototype.base64 = function() +{ + return this._base64; +} +CFMutableData = function() +{ + CFData.call(this); +} +CFMutableData.prototype = new CFData(); +function clearMutableData( aData) +{ + this._rawString = NULL; + this._propertyList = NULL; + this._propertyListFormat = NULL; + this._JSONObject = NULL; + this._bytes = NULL; + this._base64 = NULL; +} +CFMutableData.prototype.setPropertyList = function( aPropertyList, aFormat) +{ + clearMutableData(this); + this._propertyList = aPropertyList; + this._propertyListFormat = aFormat; +} +CFMutableData.prototype.setJSONObject = function( anObject) +{ + clearMutableData(this); + this._JSONObject = anObject +} +CFMutableData.prototype.setRawString = function( aString) +{ + clearMutableData(this); + this._rawString = aString; +} +CFMutableData.prototype.setBytes = function( bytes) +{ + clearMutableData(this); + this._bytes = bytes; +} +CFMutableData.prototype.setBase64String = function( aBase64String) +{ + clearMutableData(this); + this._base64 = aBase64String; +} +var base64_map_to = [ + "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z", + "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z", + "0","1","2","3","4","5","6","7","8","9","+","/","="], + base64_map_from = []; +for (var i = 0; i < base64_map_to.length; i++) + base64_map_from[base64_map_to[i].charCodeAt(0)] = i; +CFData.decodeBase64ToArray = function(input, strip) +{ + if (strip) + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + var pad = (input[input.length-1] == "=" ? 1 : 0) + (input[input.length-2] == "=" ? 1 : 0), + length = input.length, + output = []; + var i = 0; + while (i < length) + { + var bits = (base64_map_from[input.charCodeAt(i++)] << 18) | + (base64_map_from[input.charCodeAt(i++)] << 12) | + (base64_map_from[input.charCodeAt(i++)] << 6) | + (base64_map_from[input.charCodeAt(i++)]); + output.push((bits & 0xFF0000) >> 16); + output.push((bits & 0xFF00) >> 8); + output.push(bits & 0xFF); + } + if (pad > 0) + return output.slice(0, -1 * pad); + return output; +} +CFData.encodeBase64Array = function(input) +{ + var pad = (3 - (input.length % 3)) % 3, + length = input.length + pad, + output = []; + if (pad > 0) input.push(0); + if (pad > 1) input.push(0); + var i = 0; + while (i < length) + { + var bits = (input[i++] << 16) | + (input[i++] << 8) | + (input[i++]); + output.push(base64_map_to[(bits & 0xFC0000) >> 18]); + output.push(base64_map_to[(bits & 0x3F000) >> 12]); + output.push(base64_map_to[(bits & 0xFC0) >> 6]); + output.push(base64_map_to[bits & 0x3F]); + } + if (pad > 0) + { + output[output.length-1] = "="; + input.pop(); + } + if (pad > 1) + { + output[output.length-2] = "="; + input.pop(); + } + return output.join(""); +} +CFData.decodeBase64ToString = function(input, strip) +{ + return CFData.bytesToString(CFData.decodeBase64ToArray(input, strip)); +} +CFData.decodeBase64ToUtf16String = function(input, strip) +{ + return CFData.bytesToUtf16String(CFData.decodeBase64ToArray(input, strip)); +} +CFData.bytesToString = function(bytes) +{ + return String.fromCharCode.apply(NULL, bytes); +} +CFData.encodeBase64String = function(input) +{ + var temp = []; + for (var i = 0; i < input.length; i++) + temp.push(input.charCodeAt(i)); + return CFData.encodeBase64Array(temp); +} +CFData.bytesToUtf16String = function(bytes) +{ + var temp = []; + for (var i = 0; i < bytes.length; i+=2) + temp.push(bytes[i+1] << 8 | bytes[i]); + return String.fromCharCode.apply(NULL, temp); +} +CFData.encodeBase64Utf16String = function(input) +{ + var temp = []; + for (var i = 0; i < input.length; i++) + { + var c = input.charCodeAt(i); + temp.push(input.charCodeAt(i) & 0xFF); + temp.push((input.charCodeAt(i) & 0xFF00) >> 8); + } + return CFData.encodeBase64Array(temp); +} +var CFURLsForCachedUIDs, + CFURLPartsForURLStrings, + CFURLCachingEnableCount = 0; +function enableCFURLCaching() +{ + if (++CFURLCachingEnableCount !== 1) + return; + CFURLsForCachedUIDs = { }; + CFURLPartsForURLStrings = { }; +} +function disableCFURLCaching() +{ + CFURLCachingEnableCount = MAX(CFURLCachingEnableCount - 1, 0); + if (CFURLCachingEnableCount !== 0) + return; + delete CFURLsForCachedUIDs; + delete CFURLPartsForURLStrings; +} +var URL_RE = new RegExp( + "^" + + "(?:" + + "([^:/?#]+):" + + ")?" + + "(?:" + + "(//)" + + "(" + + "(?:" + + "(" + + "([^:@]*)" + + ":?" + + "([^:@]*)" + + ")?" + + "@" + + ")?" + + "([^:/?#]*)" + + "(?::(\\d*))?" + + ")" + + ")?" + + "([^?#]*)" + + "(?:\\?([^#]*))?" + + "(?:#(.*))?" +); +var URI_KEYS = +[ + "url", + "scheme", + "authorityRoot", + "authority", + "userInfo", + "user", + "password", + "domain", + "portNumber", + "path", + "queryString", + "fragment" +]; +function CFURLGetParts( aURL) +{ + if (aURL._parts) + return aURL._parts; + var URLString = aURL.string(), + isMHTMLURL = URLString.match(/^mhtml:/); + if (isMHTMLURL) + URLString = URLString.substr("mhtml:".length); + if (CFURLCachingEnableCount > 0 && hasOwnProperty.call(CFURLPartsForURLStrings, URLString)) + { + aURL._parts = CFURLPartsForURLStrings[URLString]; + return aURL._parts; + } + aURL._parts = { }; + var parts = aURL._parts, + results = URL_RE.exec(URLString), + index = results.length; + while (index--) + parts[URI_KEYS[index]] = results[index] || NULL; + parts.portNumber = parseInt(parts.portNumber, 10); + if (isNaN(parts.portNumber)) + parts.portNumber = -1; + parts.pathComponents = []; + if (parts.path) + { + var split = parts.path.split("/"), + pathComponents = parts.pathComponents, + index = 0, + count = split.length; + for (; index < count; ++index) + { + var component = split[index]; + if (component) + pathComponents.push(component); + else if (index === 0) + pathComponents.push("/"); + } + parts.pathComponents = pathComponents; + } + if (isMHTMLURL) + { + parts.url = "mhtml:" + parts.url; + parts.scheme = "mhtml:" + parts.scheme; + } + if (CFURLCachingEnableCount > 0) + CFURLPartsForURLStrings[URLString] = parts; + return parts; +} +CFURL = function( aURL, aBaseURL) +{ + aURL = aURL || ""; + if (aURL instanceof CFURL) + { + if (!aBaseURL) + return aURL; + var existingBaseURL = aURL.baseURL(); + if (existingBaseURL) + aBaseURL = new CFURL(existingBaseURL.absoluteURL(), aBaseURL); + aURL = aURL.string(); + } + if (CFURLCachingEnableCount > 0) + { + var cacheUID = aURL + " " + (aBaseURL && aBaseURL.UID() || ""); + if (hasOwnProperty.call(CFURLsForCachedUIDs, cacheUID)) + return CFURLsForCachedUIDs[cacheUID]; + CFURLsForCachedUIDs[cacheUID] = this; + } + if (aURL.match(/^data:/)) + { + var parts = { }, + index = URI_KEYS.length; + while (index--) + parts[URI_KEYS[index]] = ""; + parts.url = aURL; + parts.scheme = "data"; + parts.pathComponents = []; + this._parts = parts; + this._standardizedURL = this; + this._absoluteURL = this; + } + this._UID = objj_generateObjectUID(); + this._string = aURL; + this._baseURL = aBaseURL; +} +CFURL.displayName = "CFURL"; +CFURL.prototype.UID = function() +{ + return this._UID; +} +CFURL.prototype.UID.displayName = "CFURL.prototype.UID"; +var URLMap = { }; +CFURL.prototype.mappedURL = function() +{ + return URLMap[this.absoluteString()] || this; +} +CFURL.prototype.mappedURL.displayName = "CFURL.prototype.mappedURL"; +CFURL.setMappedURLForURL = function( fromURL, toURL) +{ + URLMap[fromURL.absoluteString()] = toURL; +} +CFURL.setMappedURLForURL.displayName = "CFURL.setMappedURLForURL"; +CFURL.prototype.schemeAndAuthority = function() +{ + var string = "", + scheme = this.scheme(); + if (scheme) + string += scheme + ":"; + var authority = this.authority(); + if (authority) + string += "//" + authority; + return string; +} +CFURL.prototype.schemeAndAuthority.displayName = "CFURL.prototype.schemeAndAuthority"; +CFURL.prototype.absoluteString = function() +{ + if (this._absoluteString === undefined) + this._absoluteString = this.absoluteURL().string(); + return this._absoluteString; +} +CFURL.prototype.absoluteString.displayName = "CFURL.prototype.absoluteString"; +CFURL.prototype.toString = function() +{ + return this.absoluteString(); +} +CFURL.prototype.toString.displayName = "CFURL.prototype.toString"; +function resolveURL(aURL) +{ + aURL = aURL.standardizedURL(); + var baseURL = aURL.baseURL(); + if (!baseURL) + return aURL; + var parts = ((aURL)._parts || CFURLGetParts(aURL)), + resolvedParts, + absoluteBaseURL = baseURL.absoluteURL(), + baseParts = ((absoluteBaseURL)._parts || CFURLGetParts(absoluteBaseURL)); + if (parts.scheme || parts.authority) + resolvedParts = parts; + else + { + resolvedParts = { }; + resolvedParts.scheme = baseParts.scheme; + resolvedParts.authority = baseParts.authority; + resolvedParts.userInfo = baseParts.userInfo; + resolvedParts.user = baseParts.user; + resolvedParts.password = baseParts.password; + resolvedParts.domain = baseParts.domain; + resolvedParts.portNumber = baseParts.portNumber; + resolvedParts.queryString = parts.queryString; + resolvedParts.fragment = parts.fragment; + var pathComponents = parts.pathComponents + if (pathComponents.length && pathComponents[0] === "/") + { + resolvedParts.path = parts.path; + resolvedParts.pathComponents = pathComponents; + } + else + { + var basePathComponents = baseParts.pathComponents, + resolvedPathComponents = basePathComponents.concat(pathComponents); + if (!baseURL.hasDirectoryPath() && basePathComponents.length) + resolvedPathComponents.splice(basePathComponents.length - 1, 1); + if (pathComponents.length && (pathComponents[0] === ".." || pathComponents[0] === ".")) + standardizePathComponents(resolvedPathComponents, YES); + resolvedParts.pathComponents = resolvedPathComponents; + resolvedParts.path = pathFromPathComponents(resolvedPathComponents, pathComponents.length <= 0 || aURL.hasDirectoryPath()); + } + } + var resolvedString = URLStringFromParts(resolvedParts), + resolvedURL = new CFURL(resolvedString); + resolvedURL._parts = resolvedParts; + resolvedURL._standardizedURL = resolvedURL; + resolvedURL._standardizedString = resolvedString; + resolvedURL._absoluteURL = resolvedURL; + resolvedURL._absoluteString = resolvedString; + return resolvedURL; +} +function pathFromPathComponents( pathComponents, isDirectoryPath) +{ + var path = pathComponents.join("/"); + if (path.length && path.charAt(0) === "/") + path = path.substr(1); + if (isDirectoryPath) + path += "/"; + return path; +} +function standardizePathComponents( pathComponents, inPlace) +{ + var index = 0, + resultIndex = 0, + count = pathComponents.length, + result = inPlace ? pathComponents : [], + startsWithPeriod = NO; + for (; index < count; ++index) + { + var component = pathComponents[index]; + if (component === "") + continue; + if (component === ".") + { + startsWithPeriod = resultIndex === 0; + continue; + } + if (component !== ".." || resultIndex === 0 || result[resultIndex - 1] === "..") + { + result[resultIndex] = component; + resultIndex++; + continue; + } + if (resultIndex > 0 && result[resultIndex - 1] !== "/") + --resultIndex; + } + if (startsWithPeriod && resultIndex === 0) + result[resultIndex++] = "."; + result.length = resultIndex; + return result; +} +function URLStringFromParts( parts) +{ + var string = "", + scheme = parts.scheme; + if (scheme) + string += scheme + ":"; + var authority = parts.authority; + if (authority) + string += "//" + authority; + string += parts.path; + var queryString = parts.queryString; + if (queryString) + string += "?" + queryString; + var fragment = parts.fragment; + if (fragment) + string += "#" + fragment; + return string; +} +CFURL.prototype.absoluteURL = function() +{ + if (this._absoluteURL === undefined) + this._absoluteURL = resolveURL(this); + return this._absoluteURL; +} +CFURL.prototype.absoluteURL.displayName = "CFURL.prototype.absoluteURL"; +CFURL.prototype.standardizedURL = function() +{ + if (this._standardizedURL === undefined) + { + var parts = ((this)._parts || CFURLGetParts(this)), + pathComponents = parts.pathComponents, + standardizedPathComponents = standardizePathComponents(pathComponents, NO); + var standardizedPath = pathFromPathComponents(standardizedPathComponents, this.hasDirectoryPath()); + if (parts.path === standardizedPath) + this._standardizedURL = this; + else + { + var standardizedParts = CFURLPartsCreateCopy(parts); + standardizedParts.pathComponents = standardizedPathComponents; + standardizedParts.path = standardizedPath; + var standardizedURL = new CFURL(URLStringFromParts(standardizedParts), this.baseURL()); + standardizedURL._parts = standardizedParts; + standardizedURL._standardizedURL = standardizedURL; + this._standardizedURL = standardizedURL; + } + } + return this._standardizedURL; +} +CFURL.prototype.standardizedURL.displayName = "CFURL.prototype.standardizedURL"; +function CFURLPartsCreateCopy(parts) +{ + var copiedParts = { }, + count = URI_KEYS.length; + while (count--) + { + var partName = URI_KEYS[count]; + copiedParts[partName] = parts[partName]; + } + return copiedParts; +} +CFURL.prototype.string = function() +{ + return this._string; +} +CFURL.prototype.string.displayName = "CFURL.prototype.string"; +CFURL.prototype.authority = function() +{ + var authority = ((this)._parts || CFURLGetParts(this)).authority; + if (authority) + return authority; + var baseURL = this.baseURL(); + return baseURL && baseURL.authority() || ""; +} +CFURL.prototype.authority.displayName = "CFURL.prototype.authority"; +CFURL.prototype.hasDirectoryPath = function() +{ + var hasDirectoryPath = this._hasDirectoryPath; + if (hasDirectoryPath === undefined) + { + var path = this.path(); + if (!path) + return NO; + if (path.charAt(path.length - 1) === "/") + return YES; + var lastPathComponent = this.lastPathComponent(); + hasDirectoryPath = lastPathComponent === "." || lastPathComponent === ".."; + this._hasDirectoryPath = hasDirectoryPath; + } + return hasDirectoryPath; +} +CFURL.prototype.hasDirectoryPath.displayName = "CFURL.prototype.hasDirectoryPath"; +CFURL.prototype.hostName = function() +{ + return this.authority(); +} +CFURL.prototype.hostName.displayName = "CFURL.prototype.hostName"; +CFURL.prototype.fragment = function() +{ + return ((this)._parts || CFURLGetParts(this)).fragment; +} +CFURL.prototype.fragment.displayName = "CFURL.prototype.fragment"; +CFURL.prototype.lastPathComponent = function() +{ + if (this._lastPathComponent === undefined) + { + var pathComponents = this.pathComponents(), + pathComponentCount = pathComponents.length; + if (!pathComponentCount) + this._lastPathComponent = ""; + else + this._lastPathComponent = pathComponents[pathComponentCount - 1]; + } + return this._lastPathComponent; +} +CFURL.prototype.lastPathComponent.displayName = "CFURL.prototype.lastPathComponent"; +CFURL.prototype.path = function() +{ + return ((this)._parts || CFURLGetParts(this)).path; +} +CFURL.prototype.path.displayName = "CFURL.prototype.path"; +CFURL.prototype.pathComponents = function() +{ + return ((this)._parts || CFURLGetParts(this)).pathComponents; +} +CFURL.prototype.pathComponents.displayName = "CFURL.prototype.pathComponents"; +CFURL.prototype.pathExtension = function() +{ + var lastPathComponent = this.lastPathComponent(); + if (!lastPathComponent) + return NULL; + lastPathComponent = lastPathComponent.replace(/^\.*/, ''); + var index = lastPathComponent.lastIndexOf("."); + return index <= 0 ? "" : lastPathComponent.substring(index + 1); +} +CFURL.prototype.pathExtension.displayName = "CFURL.prototype.pathExtension"; +CFURL.prototype.queryString = function() +{ + return ((this)._parts || CFURLGetParts(this)).queryString; +} +CFURL.prototype.queryString.displayName = "CFURL.prototype.queryString"; +CFURL.prototype.scheme = function() +{ + var scheme = this._scheme; + if (scheme === undefined) + { + scheme = ((this)._parts || CFURLGetParts(this)).scheme; + if (!scheme) + { + var baseURL = this.baseURL(); + scheme = baseURL && baseURL.scheme(); + } + this._scheme = scheme; + } + return scheme; +} +CFURL.prototype.scheme.displayName = "CFURL.prototype.scheme"; +CFURL.prototype.user = function() +{ + return ((this)._parts || CFURLGetParts(this)).user; +} +CFURL.prototype.user.displayName = "CFURL.prototype.user"; +CFURL.prototype.password = function() +{ + return ((this)._parts || CFURLGetParts(this)).password; +} +CFURL.prototype.password.displayName = "CFURL.prototype.password"; +CFURL.prototype.portNumber = function() +{ + return ((this)._parts || CFURLGetParts(this)).portNumber; +} +CFURL.prototype.portNumber.displayName = "CFURL.prototype.portNumber"; +CFURL.prototype.domain = function() +{ + return ((this)._parts || CFURLGetParts(this)).domain; +} +CFURL.prototype.domain.displayName = "CFURL.prototype.domain"; +CFURL.prototype.baseURL = function() +{ + return this._baseURL; +} +CFURL.prototype.baseURL.displayName = "CFURL.prototype.baseURL"; +CFURL.prototype.asDirectoryPathURL = function() +{ + if (this.hasDirectoryPath()) + return this; + var lastPathComponent = this.lastPathComponent(); + if (lastPathComponent !== "/") + lastPathComponent = "./" + lastPathComponent; + return new CFURL(lastPathComponent + "/", this); +} +CFURL.prototype.asDirectoryPathURL.displayName = "CFURL.prototype.asDirectoryPathURL"; +function CFURLGetResourcePropertiesForKeys( aURL) +{ + if (!aURL._resourcePropertiesForKeys) + aURL._resourcePropertiesForKeys = new CFMutableDictionary(); + return aURL._resourcePropertiesForKeys; +} +CFURL.prototype.resourcePropertyForKey = function( aKey) +{ + return CFURLGetResourcePropertiesForKeys(this).valueForKey(aKey); +} +CFURL.prototype.resourcePropertyForKey.displayName = "CFURL.prototype.resourcePropertyForKey"; +CFURL.prototype.setResourcePropertyForKey = function( aKey, aValue) +{ + CFURLGetResourcePropertiesForKeys(this).setValueForKey(aKey, aValue); +} +CFURL.prototype.setResourcePropertyForKey.displayName = "CFURL.prototype.setResourcePropertyForKey"; +CFURL.prototype.staticResourceData = function() +{ + var data = new CFMutableData(); + data.setRawString(StaticResource.resourceAtURL(this).contents()); + return data; +} +CFURL.prototype.staticResourceData.displayName = "CFURL.prototype.staticResourceData"; +function MarkedStream( aString) +{ + this._string = aString; + var index = aString.indexOf(";"); + this._magicNumber = aString.substr(0, index); + this._location = aString.indexOf(";", ++index); + this._version = aString.substring(index, this._location++); +} +MarkedStream.prototype.magicNumber = function() +{ + return this._magicNumber; +} +MarkedStream.prototype.magicNumber.displayName = "MarkedStream.prototype.magicNumber"; +MarkedStream.prototype.version = function() +{ + return this._version; +} +MarkedStream.prototype.version.displayName = "MarkedStream.prototype.version"; +MarkedStream.prototype.getMarker = function() +{ + var string = this._string, + location = this._location; + if (location >= string.length) + return null; + var next = string.indexOf(';', location); + if (next < 0) + return null; + var marker = string.substring(location, next); + if (marker === 'e') + return null; + this._location = next + 1; + return marker; +} +MarkedStream.prototype.getMarker.displayName = "MarkedStream.prototype.getMarker"; +MarkedStream.prototype.getString = function() +{ + var string = this._string, + location = this._location; + if (location >= string.length) + return null; + var next = string.indexOf(';', location); + if (next < 0) + return null; + var size = parseInt(string.substring(location, next), 10), + text = string.substr(next + 1, size); + this._location = next + 1 + size; + return text; +} +MarkedStream.prototype.getString.displayName = "MarkedStream.prototype.getString"; +var CFBundleUnloaded = 0, + CFBundleLoading = 1 << 0, + CFBundleLoadingInfoPlist = 1 << 1, + CFBundleLoadingExecutable = 1 << 2, + CFBundleLoadingSpritedImages = 1 << 3, + CFBundleLoaded = 1 << 4; +var CFBundlesForURLStrings = { }, + CFBundlesForClasses = { }, + CFCacheBuster = new Date().getTime(), + CFTotalBytesLoaded = 0, + CPApplicationSizeInBytes = 0; +CFBundle = function( aURL) +{ + aURL = makeAbsoluteURL(aURL).asDirectoryPathURL(); + var URLString = aURL.absoluteString(), + existingBundle = CFBundlesForURLStrings[URLString]; + if (existingBundle) + return existingBundle; + CFBundlesForURLStrings[URLString] = this; + this._bundleURL = aURL; + this._resourcesDirectoryURL = new CFURL("Resources/", aURL); + this._staticResource = NULL; + this._isValid = NO; + this._loadStatus = CFBundleUnloaded; + this._loadRequests = []; + this._infoDictionary = new CFDictionary(); + this._eventDispatcher = new EventDispatcher(this); +} +CFBundle.displayName = "CFBundle"; +CFBundle.environments = function() +{ + return ["Browser","ObjJ"]; +} +CFBundle.environments.displayName = "CFBundle.environments"; +CFBundle.bundleContainingURL = function( aURL) +{ + aURL = new CFURL(".", makeAbsoluteURL(aURL)); + var previousURLString, + URLString = aURL.absoluteString(); + while (!previousURLString || previousURLString !== URLString) + { + var bundle = CFBundlesForURLStrings[URLString]; + if (bundle && bundle._isValid) + return bundle; + aURL = new CFURL("..", aURL); + previousURLString = URLString; + URLString = aURL.absoluteString(); + } + return NULL; +} +CFBundle.bundleContainingURL.displayName = "CFBundle.bundleContainingURL"; +CFBundle.mainBundle = function() +{ + return new CFBundle(mainBundleURL); +} +CFBundle.mainBundle.displayName = "CFBundle.mainBundle"; +function addClassToBundle(aClass, aBundle) +{ + if (aBundle) + CFBundlesForClasses[aClass.name] = aBundle; +} +CFBundle.bundleForClass = function( aClass) +{ + return CFBundlesForClasses[aClass.name] || CFBundle.mainBundle(); +} +CFBundle.bundleForClass.displayName = "CFBundle.bundleForClass"; +CFBundle.prototype.bundleURL = function() +{ + return this._bundleURL; +} +CFBundle.prototype.bundleURL.displayName = "CFBundle.prototype.bundleURL"; +CFBundle.prototype.resourcesDirectoryURL = function() +{ + return this._resourcesDirectoryURL; +} +CFBundle.prototype.resourcesDirectoryURL.displayName = "CFBundle.prototype.resourcesDirectoryURL"; +CFBundle.prototype.resourceURL = function( aResourceName, aType, aSubDirectory) + { + if (aType) + aResourceName = aResourceName + "." + aType; + if (aSubDirectory) + aResourceName = aSubDirectory + "/" + aResourceName; + var resourceURL = (new CFURL(aResourceName, this.resourcesDirectoryURL())).mappedURL(); + return resourceURL.absoluteURL(); +} +CFBundle.prototype.resourceURL.displayName = "CFBundle.prototype.resourceURL"; +CFBundle.prototype.mostEligibleEnvironmentURL = function() +{ + if (this._mostEligibleEnvironmentURL === undefined) + this._mostEligibleEnvironmentURL = new CFURL(this.mostEligibleEnvironment() + ".environment/", this.bundleURL()); + return this._mostEligibleEnvironmentURL; +} +CFBundle.prototype.mostEligibleEnvironmentURL.displayName = "CFBundle.prototype.mostEligibleEnvironmentURL"; +CFBundle.prototype.executableURL = function() +{ + if (this._executableURL === undefined) + { + var executableSubPath = this.valueForInfoDictionaryKey("CPBundleExecutable"); + if (!executableSubPath) + this._executableURL = NULL; + else + this._executableURL = new CFURL(executableSubPath, this.mostEligibleEnvironmentURL()); + } + return this._executableURL; +} +CFBundle.prototype.executableURL.displayName = "CFBundle.prototype.executableURL"; +CFBundle.prototype.infoDictionary = function() +{ + return this._infoDictionary; +} +CFBundle.prototype.infoDictionary.displayName = "CFBundle.prototype.infoDictionary"; +CFBundle.prototype.valueForInfoDictionaryKey = function( aKey) +{ + return this._infoDictionary.valueForKey(aKey); +} +CFBundle.prototype.valueForInfoDictionaryKey.displayName = "CFBundle.prototype.valueForInfoDictionaryKey"; +CFBundle.prototype.hasSpritedImages = function() +{ + var environments = this._infoDictionary.valueForKey("CPBundleEnvironmentsWithImageSprites") || [], + index = environments.length, + mostEligibleEnvironment = this.mostEligibleEnvironment(); + while (index--) + if (environments[index] === mostEligibleEnvironment) + return YES; + return NO; +} +CFBundle.prototype.hasSpritedImages.displayName = "CFBundle.prototype.hasSpritedImages"; +CFBundle.prototype.environments = function() +{ + return this._infoDictionary.valueForKey("CPBundleEnvironments") || ["ObjJ"]; +} +CFBundle.prototype.environments.displayName = "CFBundle.prototype.environments"; +CFBundle.prototype.mostEligibleEnvironment = function( environments) +{ + environments = environments || this.environments(); + var objj_environments = CFBundle.environments(), + index = 0, + count = objj_environments.length, + innerCount = environments.length; + for(; index < count; ++index) + { + var innerIndex = 0, + environment = objj_environments[index]; + for (; innerIndex < innerCount; ++innerIndex) + if(environment === environments[innerIndex]) + return environment; + } + return NULL; +} +CFBundle.prototype.mostEligibleEnvironment.displayName = "CFBundle.prototype.mostEligibleEnvironment"; +CFBundle.prototype.isLoading = function() +{ + return this._loadStatus & CFBundleLoading; +} +CFBundle.prototype.isLoaded = function() +{ + return this._loadStatus & CFBundleLoaded; +} +CFBundle.prototype.isLoading.displayName = "CFBundle.prototype.isLoading"; +CFBundle.prototype.load = function( shouldExecute) +{ + if (this._loadStatus !== CFBundleUnloaded) + return; + this._loadStatus = CFBundleLoading | CFBundleLoadingInfoPlist; + var self = this, + bundleURL = this.bundleURL(), + parentURL = new CFURL("..", bundleURL); + if (parentURL.absoluteString() === bundleURL.absoluteString()) + parentURL = parentURL.schemeAndAuthority(); + StaticResource.resolveResourceAtURL(parentURL, YES, function(aStaticResource) + { + var resourceName = bundleURL.absoluteURL().lastPathComponent(); + self._staticResource = aStaticResource._children[resourceName] || + new StaticResource(bundleURL, aStaticResource, YES, NO); + function onsuccess( anEvent) + { + self._loadStatus &= ~CFBundleLoadingInfoPlist; + var infoDictionary = anEvent.request.responsePropertyList(); + self._isValid = !!infoDictionary || CFBundle.mainBundle() === self; + if (infoDictionary) + self._infoDictionary = infoDictionary; + if (!self._infoDictionary) + { + finishBundleLoadingWithError(self, new Error("Could not load bundle at \"" + path + "\"")); + return; + } + if (self === CFBundle.mainBundle() && self.valueForInfoDictionaryKey("CPApplicationSize")) + CPApplicationSizeInBytes = self.valueForInfoDictionaryKey("CPApplicationSize").valueForKey("executable") || 0; + loadExecutableAndResources(self, shouldExecute); + } + function onfailure() + { + self._isValid = CFBundle.mainBundle() === self; + self._loadStatus = CFBundleUnloaded; + finishBundleLoadingWithError(self, new Error("Could not load bundle at \"" + self.bundleURL() + "\"")); + } + new FileRequest(new CFURL("Info.plist", self.bundleURL()), onsuccess, onfailure); + }); +} +CFBundle.prototype.load.displayName = "CFBundle.prototype.load"; +function finishBundleLoadingWithError( aBundle, anError) +{ + resolveStaticResource(aBundle._staticResource); + aBundle._eventDispatcher.dispatchEvent( + { + type:"error", + error:anError, + bundle:aBundle + }); +} +function loadExecutableAndResources( aBundle, shouldExecute) +{ + if (!aBundle.mostEligibleEnvironment()) + return failure(); + loadExecutableForBundle(aBundle, success, failure); + loadSpritedImagesForBundle(aBundle, success, failure); + if (aBundle._loadStatus === CFBundleLoading) + return success(); + function failure( anError) + { + var loadRequests = aBundle._loadRequests, + count = loadRequests.length; + while (count--) + loadRequests[count].abort(); + this._loadRequests = []; + aBundle._loadStatus = CFBundleUnloaded; + finishBundleLoadingWithError(aBundle, anError || new Error("Could not recognize executable code format in Bundle " + aBundle)); + } + function success() + { + if ((typeof CPApp === "undefined" || !CPApp || !CPApp._finishedLaunching) && + typeof OBJJ_PROGRESS_CALLBACK === "function" && CPApplicationSizeInBytes) + { + OBJJ_PROGRESS_CALLBACK(MAX(MIN(1.0, CFTotalBytesLoaded / CPApplicationSizeInBytes), 0.0), CPApplicationSizeInBytes, aBundle.bundlePath()) + } + if (aBundle._loadStatus === CFBundleLoading) + aBundle._loadStatus = CFBundleLoaded; + else + return; + resolveStaticResource(aBundle._staticResource); + function complete() + { + aBundle._eventDispatcher.dispatchEvent( + { + type:"load", + bundle:aBundle + }); + } + if (shouldExecute) + executeBundle(aBundle, complete); + else + complete(); + } +} +function loadExecutableForBundle( aBundle, success, failure) +{ + var executableURL = aBundle.executableURL(); + if (!executableURL) + return; + aBundle._loadStatus |= CFBundleLoadingExecutable; + new FileRequest(executableURL, function( anEvent) + { + try + { + CFTotalBytesLoaded += anEvent.request.responseText().length; + decompileStaticFile(aBundle, anEvent.request.responseText(), executableURL); + aBundle._loadStatus &= ~CFBundleLoadingExecutable; + success(); + } + catch(anException) + { + failure(anException); + } + }, failure); +} +function spritedImagesTestURLStringForBundle( aBundle) +{ + return "mhtml:" + new CFURL("MHTMLTest.txt", aBundle.mostEligibleEnvironmentURL()); +} +function spritedImagesURLForBundle( aBundle) +{ + if (CFBundleSupportedSpriteType === CFBundleDataURLSpriteType) + return new CFURL("dataURLs.txt", aBundle.mostEligibleEnvironmentURL()); + if (CFBundleSupportedSpriteType === CFBundleMHTMLSpriteType || + CFBundleSupportedSpriteType === CFBundleMHTMLUncachedSpriteType) + return new CFURL("MHTMLPaths.txt", aBundle.mostEligibleEnvironmentURL()); + return NULL; +} +function loadSpritedImagesForBundle( aBundle, success, failure) +{ + if (!aBundle.hasSpritedImages()) + return; + aBundle._loadStatus |= CFBundleLoadingSpritedImages; + if (!CFBundleHasTestedSpriteSupport()) + return CFBundleTestSpriteSupport(spritedImagesTestURLStringForBundle(aBundle), function() + { + loadSpritedImagesForBundle(aBundle, success, failure); + }); + var spritedImagesURL = spritedImagesURLForBundle(aBundle); + if (!spritedImagesURL) + { + aBundle._loadStatus &= ~CFBundleLoadingSpritedImages; + return success(); + } + new FileRequest(spritedImagesURL, function( anEvent) + { + try + { + CFTotalBytesLoaded += anEvent.request.responseText().length; + decompileStaticFile(aBundle, anEvent.request.responseText(), spritedImagesURL); + aBundle._loadStatus &= ~CFBundleLoadingSpritedImages; + } + catch(anException) + { + failure(anException); + } + success(); + }, failure); +} +var CFBundleSpriteSupportListeners = [], + CFBundleSupportedSpriteType = -1, + CFBundleNoSpriteType = 0, + CFBundleDataURLSpriteType = 1, + CFBundleMHTMLSpriteType = 2, + CFBundleMHTMLUncachedSpriteType = 3; +function CFBundleHasTestedSpriteSupport() +{ + return CFBundleSupportedSpriteType !== -1; +} +function CFBundleTestSpriteSupport( MHTMLPath, aCallback) +{ + if (CFBundleHasTestedSpriteSupport()) + return; + CFBundleSpriteSupportListeners.push(aCallback); + if (CFBundleSpriteSupportListeners.length > 1) + return; + CFBundleSpriteSupportListeners.push(function() + { + var size = 0, + sizeDictionary = CFBundle.mainBundle().valueForInfoDictionaryKey("CPApplicationSize"); + if (!sizeDictionary) + return; + switch (CFBundleSupportedSpriteType) + { + case CFBundleDataURLSpriteType: + size = sizeDictionary.valueForKey("data"); + break; + case CFBundleMHTMLSpriteType: + case CFBundleMHTMLUncachedSpriteType: + size = sizeDictionary.valueForKey("mhtml"); + break; + } + CPApplicationSizeInBytes += size; + }) + CFBundleTestSpriteTypes([ + CFBundleDataURLSpriteType, + "data:image/gif;base64,R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==", + CFBundleMHTMLSpriteType, + MHTMLPath+"!test", + CFBundleMHTMLUncachedSpriteType, + MHTMLPath+"?"+CFCacheBuster+"!test" + ]); +} +function CFBundleNotifySpriteSupportListeners() +{ + var count = CFBundleSpriteSupportListeners.length; + while (count--) + CFBundleSpriteSupportListeners[count](); +} +function CFBundleTestSpriteTypes( spriteTypes) +{ + if (spriteTypes.length < 2) + { + CFBundleSupportedSpriteType = CFBundleNoSpriteType; + CFBundleNotifySpriteSupportListeners(); + return; + } + var image = new Image(); + image.onload = function() + { + if (image.width === 1 && image.height === 1) + { + CFBundleSupportedSpriteType = spriteTypes[0]; + CFBundleNotifySpriteSupportListeners(); + } + else + image.onerror(); + } + image.onerror = function() + { + CFBundleTestSpriteTypes(spriteTypes.slice(2)); + } + image.src = spriteTypes[1]; +} +function executeBundle( aBundle, aCallback) +{ + var staticResources = [aBundle._staticResource]; + function executeStaticResources(index) + { + for (; index < staticResources.length; ++index) + { + var staticResource = staticResources[index]; + if (staticResource.isNotFound()) + continue; + if (staticResource.isFile()) + { + var executable = new FileExecutable(staticResource.URL()); + if (executable.hasLoadedFileDependencies()) + executable.execute(); + else + { + executable.loadFileDependencies(function() + { + executeStaticResources(index); + }); + return; + } + } + else + { + if (staticResource.URL().absoluteString() === aBundle.resourcesDirectoryURL().absoluteString()) + continue; + var children = staticResource.children(); + for (var name in children) + if (hasOwnProperty.call(children, name)) + staticResources.push(children[name]); + } + } + aCallback(); + } + executeStaticResources(0); +} +var STATIC_MAGIC_NUMBER = "@STATIC", + MARKER_PATH = "p", + MARKER_URI = "u", + MARKER_CODE = "c", + MARKER_TEXT = "t", + MARKER_IMPORT_STD = 'I', + MARKER_IMPORT_LOCAL = 'i'; +function decompileStaticFile( aBundle, aString, aPath) +{ + var stream = new MarkedStream(aString); + if (stream.magicNumber() !== STATIC_MAGIC_NUMBER) + throw new Error("Could not read static file: " + aPath); + if (stream.version() !== "1.0") + throw new Error("Could not read static file: " + aPath); + var marker, + bundleURL = aBundle.bundleURL(), + file = NULL; + while (marker = stream.getMarker()) + { + var text = stream.getString(); + if (marker === MARKER_PATH) + { + var fileURL = new CFURL(text, bundleURL), + parent = StaticResource.resourceAtURL(new CFURL(".", fileURL), YES); + file = new StaticResource(fileURL, parent, NO, YES); + } + else if (marker === MARKER_URI) + { + var URL = new CFURL(text, bundleURL), + mappedURLString = stream.getString(); + if (mappedURLString.indexOf("mhtml:") === 0) + { + mappedURLString = "mhtml:" + new CFURL(mappedURLString.substr("mhtml:".length), bundleURL); + if (CFBundleSupportedSpriteType === CFBundleMHTMLUncachedSpriteType) + { + var exclamationIndex = mappedURLString.indexOf("!"), + firstPart = mappedURLString.substring(0, exclamationIndex), + lastPart = mappedURLString.substring(exclamationIndex); + mappedURLString = firstPart + "?" + CFCacheBuster + lastPart; + } + } + CFURL.setMappedURLForURL(URL, new CFURL(mappedURLString)); + var parent = StaticResource.resourceAtURL(new CFURL(".", URL), YES); + new StaticResource(URL, parent, NO, YES); + } + else if (marker === MARKER_TEXT) + file.write(text); + } +} +CFBundle.prototype.addEventListener = function( anEventName, anEventListener) +{ + this._eventDispatcher.addEventListener(anEventName, anEventListener); +} +CFBundle.prototype.addEventListener.displayName = "CFBundle.prototype.addEventListener"; +CFBundle.prototype.removeEventListener = function( anEventName, anEventListener) +{ + this._eventDispatcher.removeEventListener(anEventName, anEventListener); +} +CFBundle.prototype.removeEventListener.displayName = "CFBundle.prototype.removeEventListener"; +CFBundle.prototype.onerror = function( anEvent) +{ + throw anEvent.error; +} +CFBundle.prototype.onerror.displayName = "CFBundle.prototype.onerror"; +CFBundle.prototype.bundlePath = function() +{ + return this._bundleURL.absoluteURL().path(); +} +CFBundle.prototype.path = function() +{ + CPLog.warn("CFBundle.prototype.path is deprecated, use CFBundle.prototype.bundlePath instead."); + return this.bundlePath.apply(this, arguments); +} +CFBundle.prototype.pathForResource = function(aResource) +{ + return this.resourceURL(aResource).absoluteString(); +} +var rootResources = { }; +function StaticResource( aURL, aParent, isDirectory, isResolved) +{ + this._parent = aParent; + this._eventDispatcher = new EventDispatcher(this); + var name = aURL.absoluteURL().lastPathComponent() || aURL.schemeAndAuthority(); + this._name = name; + this._URL = aURL; + this._isResolved = !!isResolved; + if (isDirectory) + this._URL = this._URL.asDirectoryPathURL(); + if (!aParent) + rootResources[name] = this; + this._isDirectory = !!isDirectory; + this._isNotFound = NO; + if (aParent) + aParent._children[name] = this; + if (isDirectory) + this._children = { }; + else + this._contents = ""; +} +StaticResource.rootResources = function() +{ + return rootResources; +} +exports.StaticResource = StaticResource; +function resolveStaticResource( aResource) +{ + aResource._isResolved = YES; + aResource._eventDispatcher.dispatchEvent( + { + type:"resolve", + staticResource:aResource + }); +} +StaticResource.prototype.resolve = function() +{ + if (this.isDirectory()) + { + var bundle = new CFBundle(this.URL()); + bundle.onerror = function() { }; + bundle.load(NO); + } + else + { + var self = this; + function onsuccess( anEvent) + { + self._contents = anEvent.request.responseText(); + resolveStaticResource(self); + } + function onfailure() + { + self._isNotFound = YES; + resolveStaticResource(self); + } + new FileRequest(this.URL(), onsuccess, onfailure); + } +} +StaticResource.prototype.name = function() +{ + return this._name; +} +StaticResource.prototype.URL = function() +{ + return this._URL; +} +StaticResource.prototype.contents = function() +{ + return this._contents; +} +StaticResource.prototype.children = function() +{ + return this._children; +} +StaticResource.prototype.parent = function() +{ + return this._parent; +} +StaticResource.prototype.isResolved = function() +{ + return this._isResolved; +} +StaticResource.prototype.write = function( aString) +{ + this._contents += aString; +} +function rootResourceForAbsoluteURL( anAbsoluteURL) +{ + var schemeAndAuthority = anAbsoluteURL.schemeAndAuthority(), + resource = rootResources[schemeAndAuthority]; + if (!resource) + resource = new StaticResource(new CFURL(schemeAndAuthority), NULL, YES, YES); + return resource; +} +StaticResource.resourceAtURL = function( aURL, resolveAsDirectoriesIfNecessary) +{ + aURL = makeAbsoluteURL(aURL).absoluteURL(); + var resource = rootResourceForAbsoluteURL(aURL), + components = aURL.pathComponents(), + index = 0, + count = components.length; + for (; index < count; ++index) + { + var name = components[index]; + if (hasOwnProperty.call(resource._children, name)) + resource = resource._children[name]; + else if (resolveAsDirectoriesIfNecessary) + { + if (name !== "/") + name = "./" + name; + resource = new StaticResource(new CFURL(name, resource.URL()), resource, YES, YES); + } + else + throw new Error("Static Resource at " + aURL + " is not resolved (\"" + name + "\")"); + } + return resource; +} +StaticResource.prototype.resourceAtURL = function( aURL, resolveAsDirectoriesIfNecessary) +{ + return StaticResource.resourceAtURL(new CFURL(aURL, this.URL()), resolveAsDirectoriesIfNecessary); +} +StaticResource.resolveResourceAtURL = function( aURL, isDirectory, aCallback) +{ + aURL = makeAbsoluteURL(aURL).absoluteURL(); + resolveResourceComponents(rootResourceForAbsoluteURL(aURL), isDirectory, aURL.pathComponents(), 0, aCallback); +} +StaticResource.prototype.resolveResourceAtURL = function( aURL, isDirectory, aCallback) +{ + StaticResource.resolveResourceAtURL(new CFURL(aURL, this.URL()).absoluteURL(), isDirectory, aCallback); +} +function resolveResourceComponents( aResource, isDirectory, components, index, aCallback) +{ + var count = components.length; + for (; index < count; ++index) + { + var name = components[index], + child = hasOwnProperty.call(aResource._children, name) && aResource._children[name]; + if (!child) + { + child = new StaticResource(new CFURL(name, aResource.URL()), aResource, index + 1 < count || isDirectory , NO); + child.resolve(); + } + if (!child.isResolved()) + return child.addEventListener("resolve", function() + { + resolveResourceComponents(aResource, isDirectory, components, index, aCallback); + }); + if (child.isNotFound()) + return aCallback(null, new Error("File not found: " + components.join("/"))); + if ((index + 1 < count) && child.isFile()) + return aCallback(null, new Error("File is not a directory: " + components.join("/"))); + aResource = child; + } + aCallback(aResource); +} +function resolveResourceAtURLSearchingIncludeURLs( aURL, anIndex, aCallback) +{ + var includeURLs = StaticResource.includeURLs(), + searchURL = new CFURL(aURL, includeURLs[anIndex]).absoluteURL(); + StaticResource.resolveResourceAtURL(searchURL, NO, function( aStaticResource) + { + if (!aStaticResource) + { + if (anIndex + 1 < includeURLs.length) + resolveResourceAtURLSearchingIncludeURLs(aURL, anIndex + 1, aCallback); + else + aCallback(NULL); + return; + } + aCallback(aStaticResource); + }); +} +StaticResource.resolveResourceAtURLSearchingIncludeURLs = function( aURL, aCallback) +{ + resolveResourceAtURLSearchingIncludeURLs(aURL, 0, aCallback); +} +StaticResource.prototype.addEventListener = function( anEventName, anEventListener) +{ + this._eventDispatcher.addEventListener(anEventName, anEventListener); +} +StaticResource.prototype.removeEventListener = function( anEventName, anEventListener) +{ + this._eventDispatcher.removeEventListener(anEventName, anEventListener); +} +StaticResource.prototype.isNotFound = function() +{ + return this._isNotFound; +} +StaticResource.prototype.isFile = function() +{ + return !this._isDirectory; +} +StaticResource.prototype.isDirectory = function() +{ + return this._isDirectory; +} +StaticResource.prototype.toString = function( includeNotFounds) +{ + if (this.isNotFound()) + return ""; + var string = this.name(); + if (this.isDirectory()) + { + var children = this._children; + for (var name in children) + if (children.hasOwnProperty(name)) + { + var child = children[name]; + if (includeNotFounds || !child.isNotFound()) + string += "\n\t" + children[name].toString(includeNotFounds).split('\n').join("\n\t"); + } + } + return string; +} +var includeURLs = NULL; +StaticResource.includeURLs = function() +{ + if (includeURLs) + return includeURLs; + var includeURLs = []; + if (!global.OBJJ_INCLUDE_PATHS && !global.OBJJ_INCLUDE_URLS) + includeURLs = ["Frameworks", "Frameworks/Debug"]; + else + includeURLs = (global.OBJJ_INCLUDE_PATHS || []).concat(global.OBJJ_INCLUDE_URLS || []); + var count = includeURLs.length; + while (count--) + includeURLs[count] = new CFURL(includeURLs[count]).asDirectoryPathURL(); + return includeURLs; +} +var TOKEN_ACCESSORS = "accessors", + TOKEN_CLASS = "class", + TOKEN_END = "end", + TOKEN_FUNCTION = "function", + TOKEN_IMPLEMENTATION = "implementation", + TOKEN_IMPORT = "import", + TOKEN_EACH = "each", + TOKEN_OUTLET = "outlet", + TOKEN_ACTION = "action", + TOKEN_NEW = "new", + TOKEN_SELECTOR = "selector", + TOKEN_SUPER = "super", + TOKEN_VAR = "var", + TOKEN_IN = "in", + TOKEN_PRAGMA = "pragma", + TOKEN_MARK = "mark", + TOKEN_EQUAL = '=', + TOKEN_PLUS = '+', + TOKEN_MINUS = '-', + TOKEN_COLON = ':', + TOKEN_COMMA = ',', + TOKEN_PERIOD = '.', + TOKEN_ASTERISK = '*', + TOKEN_SEMICOLON = ';', + TOKEN_LESS_THAN = '<', + TOKEN_OPEN_BRACE = '{', + TOKEN_CLOSE_BRACE = '}', + TOKEN_GREATER_THAN = '>', + TOKEN_OPEN_BRACKET = '[', + TOKEN_DOUBLE_QUOTE = '"', + TOKEN_PREPROCESSOR = '@', + TOKEN_HASH = '#', + TOKEN_CLOSE_BRACKET = ']', + TOKEN_QUESTION_MARK = '?', + TOKEN_OPEN_PARENTHESIS = '(', + TOKEN_CLOSE_PARENTHESIS = ')', + TOKEN_WHITESPACE = /^(?:(?:\s+$)|(?:\/(?:\/|\*)))/, + TOKEN_NUMBER = /^[+-]?\d+(([.]\d+)*([eE][+-]?\d+))?$/, + TOKEN_IDENTIFIER = /^[a-zA-Z_$](\w|$)*$/; +function Lexer( aString) +{ + this._index = -1; + this._tokens = (aString + '\n').match(/\/\/.*(\r|\n)?|\/\*(?:.|\n|\r)*?\*\/|\w+\b|[+-]?\d+(([.]\d+)*([eE][+-]?\d+))?|"[^"\\]*(\\[\s\S][^"\\]*)*"|'[^'\\]*(\\[\s\S][^'\\]*)*'|\s+|./g); + this._context = []; + return this; +} +Lexer.prototype.push = function() +{ + this._context.push(this._index); +} +Lexer.prototype.pop = function() +{ + this._index = this._context.pop(); +} +Lexer.prototype.peek = function(shouldSkipWhitespace) +{ + if (shouldSkipWhitespace) + { + this.push(); + var token = this.skip_whitespace(); + this.pop(); + return token; + } + return this._tokens[this._index + 1]; +} +Lexer.prototype.next = function() +{ + return this._tokens[++this._index]; +} +Lexer.prototype.previous = function() +{ + return this._tokens[--this._index]; +} +Lexer.prototype.last = function() +{ + if (this._index < 0) + return NULL; + return this._tokens[this._index - 1]; +} +Lexer.prototype.skip_whitespace = function(shouldMoveBackwards) +{ + var token; + if (shouldMoveBackwards) + while ((token = this.previous()) && TOKEN_WHITESPACE.test(token)) ; + else + while ((token = this.next()) && TOKEN_WHITESPACE.test(token)) ; + return token; +} +exports.Lexer = Lexer; +function StringBuffer() +{ + this.atoms = []; +} +StringBuffer.prototype.toString = function() +{ + return this.atoms.join(""); +} +exports.preprocess = function( aString, aURL, flags) +{ + return new Preprocessor(aString, aURL, flags).executable(); +} +exports.eval = function( aString) +{ + return eval(exports.preprocess(aString).code()); +} +var Preprocessor = function( aString, aURL, flags) +{ + this._URL = new CFURL(aURL); + aString = aString.replace(/^#[^\n]+\n/, "\n"); + this._currentSelector = ""; + this._currentClass = ""; + this._currentSuperClass = ""; + this._currentSuperMetaClass = ""; + this._buffer = new StringBuffer(); + this._preprocessed = NULL; + this._dependencies = []; + this._tokens = new Lexer(aString); + this._flags = flags; + this._classMethod = false; + this._executable = NULL; + this._classLookupTable = {}; + this._classVars = {}; + var classObject = new objj_class(); + for (var i in classObject) + this._classVars[i] = 1; + this.preprocess(this._tokens, this._buffer); +} +Preprocessor.prototype.setClassInfo = function(className, superClassName, ivars) +{ + this._classLookupTable[className] = { superClassName:superClassName, ivars:ivars }; +} +Preprocessor.prototype.getClassInfo = function(className) +{ + return this._classLookupTable[className]; +} +Preprocessor.prototype.allIvarNamesForClassName = function(className) +{ + var names = {}, + classInfo = this.getClassInfo(className); + while (classInfo) + { + for (var i in classInfo.ivars) + names[i] = 1; + classInfo = this.getClassInfo(classInfo.superClassName); + } + return names; +} +exports.Preprocessor = Preprocessor; +Preprocessor.Flags = { }; +Preprocessor.Flags.IncludeDebugSymbols = 1 << 0; +Preprocessor.Flags.IncludeTypeSignatures = 1 << 1; +Preprocessor.prototype.executable = function() +{ + if (!this._executable) + this._executable = new Executable(this._buffer.toString(), this._dependencies, this._URL); + return this._executable; +} +Preprocessor.prototype.accessors = function(tokens) +{ + var token = tokens.skip_whitespace(), + attributes = {}; + if (token != TOKEN_OPEN_PARENTHESIS) + { + tokens.previous(); + return attributes; + } + while ((token = tokens.skip_whitespace()) != TOKEN_CLOSE_PARENTHESIS) + { + var name = token, + value = true; + if (!/^\w+$/.test(name)) + throw new SyntaxError(this.error_message("*** @accessors attribute name not valid.")); + if ((token = tokens.skip_whitespace()) == TOKEN_EQUAL) + { + value = tokens.skip_whitespace(); + if (!/^\w+$/.test(value)) + throw new SyntaxError(this.error_message("*** @accessors attribute value not valid.")); + if (name == "setter") + { + if ((token = tokens.next()) != TOKEN_COLON) + throw new SyntaxError(this.error_message("*** @accessors setter attribute requires argument with \":\" at end of selector name.")); + value += ":"; + } + token = tokens.skip_whitespace(); + } + attributes[name] = value; + if (token == TOKEN_CLOSE_PARENTHESIS) + break; + if (token != TOKEN_COMMA) + throw new SyntaxError(this.error_message("*** Expected ',' or ')' in @accessors attribute list.")); + } + return attributes; +} +Preprocessor.prototype.brackets = function( tokens, aStringBuffer) +{ + var tuples = []; + while (this.preprocess(tokens, NULL, NULL, NULL, tuples[tuples.length] = [])) ; + if (tuples[0].length === 1) + { + aStringBuffer.atoms[aStringBuffer.atoms.length] = '['; + aStringBuffer.atoms[aStringBuffer.atoms.length] = tuples[0][0]; + aStringBuffer.atoms[aStringBuffer.atoms.length] = ']'; + } + else + { + var selector = new StringBuffer(); + if (tuples[0][0].atoms[0] == TOKEN_SUPER) + { + aStringBuffer.atoms[aStringBuffer.atoms.length] = "objj_msgSendSuper("; + aStringBuffer.atoms[aStringBuffer.atoms.length] = "{ receiver:self, super_class:" + (this._classMethod ? this._currentSuperMetaClass : this._currentSuperClass ) + " }"; + } + else + { + aStringBuffer.atoms[aStringBuffer.atoms.length] = "objj_msgSend("; + aStringBuffer.atoms[aStringBuffer.atoms.length] = tuples[0][0]; + } + selector.atoms[selector.atoms.length] = tuples[0][1]; + var index = 1, + count = tuples.length, + marg_list = new StringBuffer(); + for(; index < count; ++index) + { + var pair = tuples[index]; + selector.atoms[selector.atoms.length] = pair[1]; + marg_list.atoms[marg_list.atoms.length] = ", " + pair[0]; + } + aStringBuffer.atoms[aStringBuffer.atoms.length] = ", \""; + aStringBuffer.atoms[aStringBuffer.atoms.length] = selector; + aStringBuffer.atoms[aStringBuffer.atoms.length] = '\"'; + aStringBuffer.atoms[aStringBuffer.atoms.length] = marg_list; + aStringBuffer.atoms[aStringBuffer.atoms.length] = ')'; + } +} +Preprocessor.prototype.directive = function(tokens, aStringBuffer, allowedDirectivesFlags) +{ + var buffer = aStringBuffer ? aStringBuffer : new StringBuffer(), + token = tokens.next(); + if (token.charAt(0) == TOKEN_DOUBLE_QUOTE) + buffer.atoms[buffer.atoms.length] = token; + else if (token === TOKEN_CLASS) + { + tokens.skip_whitespace(); + return; + } + else if (token === TOKEN_IMPLEMENTATION) + this.implementation(tokens, buffer); + else if (token === TOKEN_IMPORT) + this._import(tokens); + else if (token === TOKEN_SELECTOR) + this.selector(tokens, buffer); + if (!aStringBuffer) + return buffer; +} +Preprocessor.prototype.hash = function(tokens, aStringBuffer) +{ + var buffer = aStringBuffer ? aStringBuffer : new StringBuffer(), + token = tokens.next(); + if (token === TOKEN_PRAGMA) + { + token = tokens.skip_whitespace(); + if (token === TOKEN_MARK) + { + while ((token = tokens.next()).indexOf("\n") < 0); + } + } + else + throw new SyntaxError(this.error_message("*** Expected \"pragma\" to follow # but instead saw \"" + token + "\".")); +} +Preprocessor.prototype.implementation = function(tokens, aStringBuffer) +{ + var buffer = aStringBuffer, + token = "", + category = NO, + class_name = tokens.skip_whitespace(), + superclass_name = "Nil", + instance_methods = new StringBuffer(), + class_methods = new StringBuffer(); + if (!(/^\w/).test(class_name)) + throw new Error(this.error_message("*** Expected class name, found \"" + class_name + "\".")); + this._currentSuperClass = "objj_getClass(\"" + class_name + "\").super_class"; + this._currentSuperMetaClass = "objj_getMetaClass(\"" + class_name + "\").super_class"; + this._currentClass = class_name; + this._currentSelector = ""; + if ((token = tokens.skip_whitespace()) == TOKEN_OPEN_PARENTHESIS) + { + token = tokens.skip_whitespace(); + if (token == TOKEN_CLOSE_PARENTHESIS) + throw new SyntaxError(this.error_message("*** Can't Have Empty Category Name for class \"" + class_name + "\".")); + if (tokens.skip_whitespace() != TOKEN_CLOSE_PARENTHESIS) + throw new SyntaxError(this.error_message("*** Improper Category Definition for class \"" + class_name + "\".")); + buffer.atoms[buffer.atoms.length] = "{\nvar the_class = objj_getClass(\"" + class_name + "\")\n"; + buffer.atoms[buffer.atoms.length] = "if(!the_class) throw new SyntaxError(\"*** Could not find definition for class \\\"" + class_name + "\\\"\");\n"; + buffer.atoms[buffer.atoms.length] = "var meta_class = the_class.isa;"; + } + else + { + if(token == TOKEN_COLON) + { + token = tokens.skip_whitespace(); + if (!TOKEN_IDENTIFIER.test(token)) + throw new SyntaxError(this.error_message("*** Expected class name, found \"" + token + "\".")); + superclass_name = token; + token = tokens.skip_whitespace(); + } + buffer.atoms[buffer.atoms.length] = "{var the_class = objj_allocateClassPair(" + superclass_name + ", \"" + class_name + "\"),\nmeta_class = the_class.isa;"; + if (token == TOKEN_OPEN_BRACE) + { + var ivar_names = {}, + ivar_count = 0, + declaration = [], + attributes, + accessors = {}; + while((token = tokens.skip_whitespace()) && token != TOKEN_CLOSE_BRACE) + { + if (token === TOKEN_PREPROCESSOR) + { + token = tokens.next(); + if (token === TOKEN_ACCESSORS) + attributes = this.accessors(tokens); + else if (token !== TOKEN_OUTLET) + throw new SyntaxError(this.error_message("*** Unexpected '@' token in ivar declaration ('@"+token+"').")); + } + else if (token == TOKEN_SEMICOLON) + { + if (ivar_count++ === 0) + buffer.atoms[buffer.atoms.length] = "class_addIvars(the_class, ["; + else + buffer.atoms[buffer.atoms.length] = ", "; + var name = declaration[declaration.length - 1]; + buffer.atoms[buffer.atoms.length] = "new objj_ivar(\"" + name + "\")"; + ivar_names[name] = 1; + declaration = []; + if (attributes) + { + accessors[name] = attributes; + attributes = NULL; + } + } + else + declaration.push(token); + } + if (declaration.length) + throw new SyntaxError(this.error_message("*** Expected ';' in ivar declaration, found '}'.")); + if (ivar_count) + buffer.atoms[buffer.atoms.length] = "]);\n"; + if (!token) + throw new SyntaxError(this.error_message("*** Expected '}'")); + this.setClassInfo(class_name, superclass_name === "Nil" ? null : superclass_name, ivar_names); + var ivar_names = this.allIvarNamesForClassName(class_name); + for (ivar_name in accessors) + { + var accessor = accessors[ivar_name], + property = accessor["property"] || ivar_name; + var getterName = accessor["getter"] || property, + getterCode = "(id)" + getterName + "\n{\nreturn " + ivar_name + ";\n}"; + if (instance_methods.atoms.length !== 0) + instance_methods.atoms[instance_methods.atoms.length] = ",\n"; + instance_methods.atoms[instance_methods.atoms.length] = this.method(new Lexer(getterCode), ivar_names); + if (accessor["readonly"]) + continue; + var setterName = accessor["setter"]; + if (!setterName) + { + var start = property.charAt(0) == '_' ? 1 : 0; + setterName = (start ? "_" : "") + "set" + property.substr(start, 1).toUpperCase() + property.substring(start + 1) + ":"; + } + var setterCode = "(void)" + setterName + "(id)newValue\n{\n"; + if (accessor["copy"]) + setterCode += "if (" + ivar_name + " !== newValue)\n" + ivar_name + " = [newValue copy];\n}"; + else + setterCode += ivar_name + " = newValue;\n}"; + if (instance_methods.atoms.length !== 0) + instance_methods.atoms[instance_methods.atoms.length] = ",\n"; + instance_methods.atoms[instance_methods.atoms.length] = this.method(new Lexer(setterCode), ivar_names); + } + } + else + tokens.previous(); + buffer.atoms[buffer.atoms.length] = "objj_registerClassPair(the_class);\n"; + } + if (!ivar_names) + var ivar_names = this.allIvarNamesForClassName(class_name); + while ((token = tokens.skip_whitespace())) + { + if (token == TOKEN_PLUS) + { + this._classMethod = true; + if (class_methods.atoms.length !== 0) + class_methods.atoms[class_methods.atoms.length] = ", "; + class_methods.atoms[class_methods.atoms.length] = this.method(tokens, this._classVars); + } + else if (token == TOKEN_MINUS) + { + this._classMethod = false; + if (instance_methods.atoms.length !== 0) + instance_methods.atoms[instance_methods.atoms.length] = ", "; + instance_methods.atoms[instance_methods.atoms.length] = this.method(tokens, ivar_names); + } + else if (token == TOKEN_HASH) + { + this.hash(tokens, buffer); + } + else if (token == TOKEN_PREPROCESSOR) + { + if ((token = tokens.next()) == TOKEN_END) + break; + else + throw new SyntaxError(this.error_message("*** Expected \"@end\", found \"@" + token + "\".")); + } + } + if (instance_methods.atoms.length !== 0) + { + buffer.atoms[buffer.atoms.length] = "class_addMethods(the_class, ["; + buffer.atoms[buffer.atoms.length] = instance_methods; + buffer.atoms[buffer.atoms.length] = "]);\n"; + } + if (class_methods.atoms.length !== 0) + { + buffer.atoms[buffer.atoms.length] = "class_addMethods(meta_class, ["; + buffer.atoms[buffer.atoms.length] = class_methods; + buffer.atoms[buffer.atoms.length] = "]);\n"; + } + buffer.atoms[buffer.atoms.length] = '}'; + this._currentClass = ""; +} +Preprocessor.prototype._import = function(tokens) +{ + var URLString = "", + token = tokens.skip_whitespace(), + isQuoted = (token !== TOKEN_LESS_THAN); + if (token === TOKEN_LESS_THAN) + { + while ((token = tokens.next()) && token !== TOKEN_GREATER_THAN) + URLString += token; + if (!token) + throw new SyntaxError(this.error_message("*** Unterminated import statement.")); + } + else if (token.charAt(0) === TOKEN_DOUBLE_QUOTE) + URLString = token.substr(1, token.length - 2); + else + throw new SyntaxError(this.error_message("*** Expecting '<' or '\"', found \"" + token + "\".")); + this._buffer.atoms[this._buffer.atoms.length] = "objj_executeFile(\""; + this._buffer.atoms[this._buffer.atoms.length] = URLString; + this._buffer.atoms[this._buffer.atoms.length] = isQuoted ? "\", YES);" : "\", NO);"; + this._dependencies.push(new FileDependency(new CFURL(URLString), isQuoted)); +} +Preprocessor.prototype.method = function( tokens, ivar_names) +{ + var buffer = new StringBuffer(), + token, + selector = "", + parameters = [], + types = [null]; + ivar_names = ivar_names || {}; + while ((token = tokens.skip_whitespace()) && token !== TOKEN_OPEN_BRACE && token !== TOKEN_SEMICOLON) + { + if (token == TOKEN_COLON) + { + var type = ""; + selector += token; + token = tokens.skip_whitespace(); + if (token == TOKEN_OPEN_PARENTHESIS) + { + while ((token = tokens.skip_whitespace()) && token != TOKEN_CLOSE_PARENTHESIS) + type += token; + token = tokens.skip_whitespace(); + } + types[parameters.length + 1] = type || null; + parameters[parameters.length] = token; + if (token in ivar_names) + throw new SyntaxError(this.error_message("*** Method ( "+selector+" ) uses a parameter name that is already in use ( "+token+" )")); + } + else if (token == TOKEN_OPEN_PARENTHESIS) + { + var type = ""; + while ((token = tokens.skip_whitespace()) && token != TOKEN_CLOSE_PARENTHESIS) + type += token; + types[0] = type || null; + } + else if (token == TOKEN_COMMA) + { + if ((token = tokens.skip_whitespace()) != TOKEN_PERIOD || tokens.next() != TOKEN_PERIOD || tokens.next() != TOKEN_PERIOD) + throw new SyntaxError(this.error_message("*** Argument list expected after ','.")); + } + else + selector += token; + } + if (token === TOKEN_SEMICOLON) + { + token = tokens.skip_whitespace(); + if (token !== TOKEN_OPEN_BRACE) + { + throw new SyntaxError(this.error_message("Invalid semi-colon in method declaration. "+ + "Semi-colons are allowed only to terminate the method signature, before the open brace.")); + } + } + var index = 0, + count = parameters.length; + buffer.atoms[buffer.atoms.length] = "new objj_method(sel_getUid(\""; + buffer.atoms[buffer.atoms.length] = selector; + buffer.atoms[buffer.atoms.length] = "\"), function"; + this._currentSelector = selector; + if (this._flags & Preprocessor.Flags.IncludeDebugSymbols) + buffer.atoms[buffer.atoms.length] = " $" + this._currentClass + "__" + selector.replace(/:/g, "_"); + buffer.atoms[buffer.atoms.length] = "(self, _cmd"; + for (; index < count; ++index) + { + buffer.atoms[buffer.atoms.length] = ", "; + buffer.atoms[buffer.atoms.length] = parameters[index]; + } + buffer.atoms[buffer.atoms.length] = ")\n{ with(self)\n{"; + buffer.atoms[buffer.atoms.length] = this.preprocess(tokens, NULL, TOKEN_CLOSE_BRACE, TOKEN_OPEN_BRACE); + buffer.atoms[buffer.atoms.length] = "}\n}"; + if (this._flags & Preprocessor.Flags.IncludeDebugSymbols) + buffer.atoms[buffer.atoms.length] = ","+JSON.stringify(types); + buffer.atoms[buffer.atoms.length] = ")"; + this._currentSelector = ""; + return buffer; +} +Preprocessor.prototype.preprocess = function(tokens, aStringBuffer, terminator, instigator, tuple) +{ + var buffer = aStringBuffer ? aStringBuffer : new StringBuffer(), + count = 0, + token = ""; + if (tuple) + { + tuple[0] = buffer; + var bracket = false, + closures = [0, 0, 0]; + } + while ((token = tokens.next()) && ((token !== terminator) || count)) + { + if (tuple) + { + if (token === TOKEN_QUESTION_MARK) + ++closures[2]; + else if (token === TOKEN_OPEN_BRACE) + ++closures[0]; + else if (token === TOKEN_CLOSE_BRACE) + --closures[0]; + else if (token === TOKEN_OPEN_PARENTHESIS) + ++closures[1]; + else if (token === TOKEN_CLOSE_PARENTHESIS) + --closures[1]; + else if ((token === TOKEN_COLON && closures[2]-- === 0 || + (bracket = (token === TOKEN_CLOSE_BRACKET))) && + closures[0] === 0 && closures[1] === 0) + { + tokens.push(); + var label = bracket ? tokens.skip_whitespace(true) : tokens.previous(), + isEmptyLabel = TOKEN_WHITESPACE.test(label); + if (isEmptyLabel || TOKEN_IDENTIFIER.test(label) && TOKEN_WHITESPACE.test(tokens.previous())) + { + tokens.push(); + var last = tokens.skip_whitespace(true), + operatorCheck = true, + isDoubleOperator = false; + if (last === '+' || last === '-'){ + if (tokens.previous() !== last) + operatorCheck = false; + else + { + last = tokens.skip_whitespace(true); + isDoubleOperator = true; + }} + tokens.pop(); + tokens.pop(); + if (operatorCheck && ( + (!isDoubleOperator && (last === TOKEN_CLOSE_BRACE)) || + last === TOKEN_CLOSE_PARENTHESIS || last === TOKEN_CLOSE_BRACKET || + last === TOKEN_PERIOD || TOKEN_NUMBER.test(last) || + last.charAt(last.length - 1) === '\"' || last.charAt(last.length - 1) === '\'' || + TOKEN_IDENTIFIER.test(last) && !/^(new|return|case|var)$/.test(last))) + { + if (isEmptyLabel) + tuple[1] = ':'; + else + { + tuple[1] = label; + if (!bracket) + tuple[1] += ':'; + var count = buffer.atoms.length; + while (buffer.atoms[count--] !== label) ; + buffer.atoms.length = count; + } + return !bracket; + } + if (bracket) + return NO; + } + tokens.pop(); + if (bracket) + return NO; + } + closures[2] = MAX(closures[2], 0); + } + if (instigator) + { + if (token === instigator) + ++count; + else if (token === terminator) + --count; + } + if (token === TOKEN_FUNCTION) + { + var accumulator = ""; + while ((token = tokens.next()) && token !== TOKEN_OPEN_PARENTHESIS && !(/^\w/).test(token)) + accumulator += token; + if (token === TOKEN_OPEN_PARENTHESIS) + { + if (instigator === TOKEN_OPEN_PARENTHESIS) + ++count; + buffer.atoms[buffer.atoms.length] = "function" + accumulator + '('; + if (tuple) + ++closures[1]; + } + else + { + buffer.atoms[buffer.atoms.length] = token + "= function"; + } + } + else if (token == TOKEN_PREPROCESSOR) + this.directive(tokens, buffer); + else if (token == TOKEN_HASH) + this.hash(tokens, buffer); + else if (token == TOKEN_OPEN_BRACKET) + this.brackets(tokens, buffer); + else + buffer.atoms[buffer.atoms.length] = token; + } + if (tuple) + throw new SyntaxError(this.error_message("*** Expected ']' - Unterminated message send or array.")); + if (!aStringBuffer) + return buffer; +} +Preprocessor.prototype.selector = function(tokens, aStringBuffer) +{ + var buffer = aStringBuffer ? aStringBuffer : new StringBuffer(); + buffer.atoms[buffer.atoms.length] = "sel_getUid(\""; + if (tokens.skip_whitespace() != TOKEN_OPEN_PARENTHESIS) + throw new SyntaxError(this.error_message("*** Expected '('")); + var selector = tokens.skip_whitespace(); + if (selector == TOKEN_CLOSE_PARENTHESIS) + throw new SyntaxError(this.error_message("*** Unexpected ')', can't have empty @selector()")); + aStringBuffer.atoms[aStringBuffer.atoms.length] = selector; + var token, + starting = true; + while ((token = tokens.next()) && token != TOKEN_CLOSE_PARENTHESIS) + { + if (starting && /^\d+$/.test(token) || !(/^(\w|$|\:)/.test(token))) + { + if (!(/\S/).test(token)) + if (tokens.skip_whitespace() == TOKEN_CLOSE_PARENTHESIS) + break; + else + throw new SyntaxError(this.error_message("*** Unexpected whitespace in @selector().")); + else + throw new SyntaxError(this.error_message("*** Illegal character '" + token + "' in @selector().")); + } + buffer.atoms[buffer.atoms.length] = token; + starting = (token == TOKEN_COLON); + } + buffer.atoms[buffer.atoms.length] = "\")"; + if (!aStringBuffer) + return buffer; +} +Preprocessor.prototype.error_message = function(errorMessage) +{ + return errorMessage + " "; +} +function FileDependency( aURL, isLocal) +{ + this._URL = aURL; + this._isLocal = isLocal; +} +exports.FileDependency = FileDependency; +FileDependency.prototype.URL = function() +{ + return this._URL; +} +FileDependency.prototype.isLocal = function() +{ + return this._isLocal; +} +FileDependency.prototype.toMarkedString = function() +{ + var URLString = this.URL().absoluteString(); + return (this.isLocal() ? MARKER_IMPORT_LOCAL : MARKER_IMPORT_STD) + ";" + + URLString.length + ";" + URLString; +} +FileDependency.prototype.toString = function() +{ + return (this.isLocal() ? "LOCAL: " : "STD: ") + this.URL(); +} +var ExecutableUnloadedFileDependencies = 0, + ExecutableLoadingFileDependencies = 1, + ExecutableLoadedFileDependencies = 2, + AnonymousExecutableCount = 0; +function Executable( aCode, fileDependencies, aURL, aFunction) +{ + if (arguments.length === 0) + return this; + this._code = aCode; + this._function = aFunction || NULL; + this._URL = makeAbsoluteURL(aURL || new CFURL("(Anonymous" + (AnonymousExecutableCount++) + ")")); + this._fileDependencies = fileDependencies; + if (fileDependencies.length) + { + this._fileDependencyStatus = ExecutableUnloadedFileDependencies; + this._fileDependencyCallbacks = []; + } + else + this._fileDependencyStatus = ExecutableLoadedFileDependencies; + if (this._function) + return; + this.setCode(aCode); +} +exports.Executable = Executable; +Executable.prototype.path = function() +{ + return this.URL().path(); +} +Executable.prototype.URL = function() +{ + return this._URL; +} +Executable.prototype.URL.displayName = "Executable.prototype.URL"; +Executable.prototype.functionParameters = function() +{ + var functionParameters = ["global", "objj_executeFile", "objj_importFile"]; + return functionParameters; +} +Executable.prototype.functionParameters.displayName = "Executable.prototype.functionParameters"; +Executable.prototype.functionArguments = function() +{ + var functionArguments = [global, this.fileExecuter(), this.fileImporter()]; + return functionArguments; +} +Executable.prototype.functionArguments.displayName = "Executable.prototype.functionArguments"; +Executable.prototype.execute = function() +{ + var oldContextBundle = CONTEXT_BUNDLE; + CONTEXT_BUNDLE = CFBundle.bundleContainingURL(this.URL()); + var result = this._function.apply(global, this.functionArguments()); + CONTEXT_BUNDLE = oldContextBundle; + return result; +} +Executable.prototype.execute.displayName = "Executable.prototype.execute"; +Executable.prototype.code = function() +{ + return this._code; +} +Executable.prototype.code.displayName = "Executable.prototype.code"; +Executable.prototype.setCode = function(code) +{ + this._code = code; + var parameters = this.functionParameters().join(","); + var absoluteString = this.URL().absoluteString(); + code += "/**/\n//@ sourceURL=" + absoluteString; + this._function = new Function(parameters, code); + this._function.displayName = absoluteString; +} +Executable.prototype.setCode.displayName = "Executable.prototype.setCode"; +Executable.prototype.fileDependencies = function() +{ + return this._fileDependencies; +} +Executable.prototype.fileDependencies.displayName = "Executable.prototype.fileDependencies"; +Executable.prototype.hasLoadedFileDependencies = function() +{ + return this._fileDependencyStatus === ExecutableLoadedFileDependencies; +} +Executable.prototype.hasLoadedFileDependencies.displayName = "Executable.prototype.hasLoadedFileDependencies"; +var fileDependencyLoadCount = 0, + fileDependencyExecutables = [], + fileDependencyMarkers = { }; +Executable.prototype.loadFileDependencies = function(aCallback) +{ + var status = this._fileDependencyStatus; + if (aCallback) + { + if (status === ExecutableLoadedFileDependencies) + return aCallback(); + this._fileDependencyCallbacks.push(aCallback); + } + if (status === ExecutableUnloadedFileDependencies) + { + if (fileDependencyLoadCount) + throw "Can't load"; + loadFileDependenciesForExecutable(this); + } +} +Executable.prototype.loadFileDependencies.displayName = "Executable.prototype.loadFileDependencies"; +function loadFileDependenciesForExecutable( anExecutable) +{ + fileDependencyExecutables.push(anExecutable); + anExecutable._fileDependencyStatus = ExecutableLoadingFileDependencies; + var fileDependencies = anExecutable.fileDependencies(), + index = 0, + count = fileDependencies.length, + referenceURL = anExecutable.referenceURL(), + referenceURLString = referenceURL.absoluteString(), + fileExecutableSearcher = anExecutable.fileExecutableSearcher(); + fileDependencyLoadCount += count; + for (; index < count; ++index) + { + var fileDependency = fileDependencies[index], + isQuoted = fileDependency.isLocal(), + URL = fileDependency.URL(), + marker = (isQuoted && (referenceURLString + " ") || "") + URL; + if (fileDependencyMarkers[marker]) + { + if (--fileDependencyLoadCount === 0) + fileExecutableDependencyLoadFinished(); + continue; + } + fileDependencyMarkers[marker] = YES; + fileExecutableSearcher(URL, isQuoted, fileExecutableSearchFinished); + } +} +function fileExecutableSearchFinished( aFileExecutable) +{ + --fileDependencyLoadCount; + if (aFileExecutable._fileDependencyStatus === ExecutableUnloadedFileDependencies) + loadFileDependenciesForExecutable(aFileExecutable); + else if (fileDependencyLoadCount === 0) + fileExecutableDependencyLoadFinished(); +} +function fileExecutableDependencyLoadFinished() +{ + var executables = fileDependencyExecutables, + index = 0, + count = executables.length; + fileDependencyExecutables = []; + for (; index < count; ++index) + executables[index]._fileDependencyStatus = ExecutableLoadedFileDependencies; + for (index = 0; index < count; ++index) + { + var executable = executables[index], + callbacks = executable._fileDependencyCallbacks, + callbackIndex = 0, + callbackCount = callbacks.length; + for (; callbackIndex < callbackCount; ++callbackIndex) + callbacks[callbackIndex](); + executable._fileDependencyCallbacks = []; + } +} +Executable.prototype.referenceURL = function() +{ + if (this._referenceURL === undefined) + this._referenceURL = new CFURL(".", this.URL()); + return this._referenceURL; +} +Executable.prototype.referenceURL.displayName = "Executable.prototype.referenceURL"; +Executable.prototype.fileImporter = function() +{ + return Executable.fileImporterForURL(this.referenceURL()); +} +Executable.prototype.fileImporter.displayName = "Executable.prototype.fileImporter"; +Executable.prototype.fileExecuter = function() +{ + return Executable.fileExecuterForURL(this.referenceURL()); +} +Executable.prototype.fileExecuter.displayName = "Executable.prototype.fileExecuter"; +Executable.prototype.fileExecutableSearcher = function() +{ + return Executable.fileExecutableSearcherForURL(this.referenceURL()); +} +Executable.prototype.fileExecutableSearcher.displayName = "Executable.prototype.fileExecutableSearcher"; +var cachedFileExecuters = { }; +Executable.fileExecuterForURL = function( aURL) +{ + var referenceURL = makeAbsoluteURL(aURL), + referenceURLString = referenceURL.absoluteString(), + cachedFileExecuter = cachedFileExecuters[referenceURLString]; + if (!cachedFileExecuter) + { + cachedFileExecuter = function( aURL, isQuoted, shouldForce) + { + Executable.fileExecutableSearcherForURL(referenceURL)(aURL, isQuoted, + function( aFileExecutable) + { + if (!aFileExecutable.hasLoadedFileDependencies()) + throw "No executable loaded for file at URL " + aURL; + aFileExecutable.execute(shouldForce); + }); + } + cachedFileExecuters[referenceURLString] = cachedFileExecuter; + } + return cachedFileExecuter; +} +Executable.fileExecuterForURL.displayName = "Executable.fileExecuterForURL"; +var cachedFileImporters = { }; +Executable.fileImporterForURL = function( aURL) +{ + var referenceURL = makeAbsoluteURL(aURL), + referenceURLString = referenceURL.absoluteString(), + cachedFileImporter = cachedFileImporters[referenceURLString]; + if (!cachedFileImporter) + { + cachedFileImporter = function( aURL, isQuoted, aCallback) + { + enableCFURLCaching(); + Executable.fileExecutableSearcherForURL(referenceURL)(aURL, isQuoted, + function( aFileExecutable) + { + aFileExecutable.loadFileDependencies(function() + { + aFileExecutable.execute(); + disableCFURLCaching(); + if (aCallback) + aCallback(); + }); + }); + } + cachedFileImporters[referenceURLString] = cachedFileImporter; + } + return cachedFileImporter; +} +Executable.fileImporterForURL.displayName = "Executable.fileImporterForURL"; +var cachedFileExecutableSearchers = { }, + cachedFileExecutableSearchResults = { }; +Executable.fileExecutableSearcherForURL = function( referenceURL) +{ + var referenceURLString = referenceURL.absoluteString(), + cachedFileExecutableSearcher = cachedFileExecutableSearchers[referenceURLString], + cachedSearchResults = { }; + if (!cachedFileExecutableSearcher) + { + cachedFileExecutableSearcher = function( aURL, isQuoted, success) + { + var cacheUID = (isQuoted && referenceURL || "") + aURL, + cachedResult = cachedFileExecutableSearchResults[cacheUID]; + if (cachedResult) + return completed(cachedResult); + var isAbsoluteURL = (aURL instanceof CFURL) && aURL.scheme(); + if (isQuoted || isAbsoluteURL) + { + if (!isAbsoluteURL) + aURL = new CFURL(aURL, referenceURL); + StaticResource.resolveResourceAtURL(aURL, NO, completed); + } + else + StaticResource.resolveResourceAtURLSearchingIncludeURLs(aURL, completed); + function completed( aStaticResource) + { + if (!aStaticResource) + throw new Error("Could not load file at " + aURL); + cachedFileExecutableSearchResults[cacheUID] = aStaticResource; + success(new FileExecutable(aStaticResource.URL())); + } + }; + cachedFileExecutableSearchers[referenceURLString] = cachedFileExecutableSearcher; + } + return cachedFileExecutableSearcher; +} +Executable.fileExecutableSearcherForURL.displayName = "Executable.fileExecutableSearcherForURL"; +var FileExecutablesForURLStrings = { }; +function FileExecutable( aURL) +{ + aURL = makeAbsoluteURL(aURL); + var URLString = aURL.absoluteString(), + existingFileExecutable = FileExecutablesForURLStrings[URLString]; + if (existingFileExecutable) + return existingFileExecutable; + FileExecutablesForURLStrings[URLString] = this; + var fileContents = StaticResource.resourceAtURL(aURL).contents(), + executable = NULL, + extension = aURL.pathExtension(); + if (fileContents.match(/^@STATIC;/)) + executable = decompile(fileContents, aURL); + else if (extension === "j" || !extension) + executable = exports.preprocess(fileContents, aURL, Preprocessor.Flags.IncludeDebugSymbols); + else + executable = new Executable(fileContents, [], aURL); + Executable.apply(this, [executable.code(), executable.fileDependencies(), aURL, executable._function]); + this._hasExecuted = NO; +} +exports.FileExecutable = FileExecutable; +FileExecutable.prototype = new Executable(); +FileExecutable.prototype.execute = function( shouldForce) +{ + if (this._hasExecuted && !shouldForce) + return; + this._hasExecuted = YES; + Executable.prototype.execute.call(this); +} +FileExecutable.prototype.execute.displayName = "FileExecutable.prototype.execute"; +FileExecutable.prototype.hasExecuted = function() +{ + return this._hasExecuted; +} +FileExecutable.prototype.hasExecuted.displayName = "FileExecutable.prototype.hasExecuted"; +function decompile( aString, aURL) +{ + var stream = new MarkedStream(aString); + var marker = NULL, + code = "", + dependencies = []; + while (marker = stream.getMarker()) + { + var text = stream.getString(); + if (marker === MARKER_TEXT) + code += text; + else if (marker === MARKER_IMPORT_STD) + dependencies.push(new FileDependency(new CFURL(text), NO)); + else if (marker === MARKER_IMPORT_LOCAL) + dependencies.push(new FileDependency(new CFURL(text), YES)); + } + var fn = FileExecutable._lookupCachedFunction(aURL) + if (fn) + return new Executable(code, dependencies, aURL, fn); + return new Executable(code, dependencies, aURL); +} +var FunctionCache = { }; +FileExecutable._cacheFunction = function( aURL, fn) +{ + aURL = typeof aURL === "string" ? aURL : aURL.absoluteString(); + FunctionCache[aURL] = fn; +} +FileExecutable._lookupCachedFunction = function( aURL) +{ + aURL = typeof aURL === "string" ? aURL : aURL.absoluteString(); + return FunctionCache[aURL]; +} +var CLS_CLASS = 0x1, + CLS_META = 0x2, + CLS_INITIALIZED = 0x4, + CLS_INITIALIZING = 0x8; +objj_ivar = function( aName, aType) +{ + this.name = aName; + this.type = aType; +} +objj_ivar.displayName = "objj_ivar"; +objj_method = function( aName, anImplementation, types) +{ + this.name = aName; + this.method_imp = anImplementation; + this.types = types; +} +objj_method.displayName = "objj_method"; +objj_class = function(displayName) +{ + this.isa = NULL; + this.super_class = NULL; + this.sub_classes = []; + this.name = NULL; + this.info = 0; + this.ivars = []; + this.method_list = []; + this.method_hash = {}; + this.method_store = function() { }; + this.method_dtable = this.method_store.prototype; + eval("this.allocator = function " + (displayName || "OBJJ_OBJECT").replace(/\W/g, "_") + "() { }"); + this._UID = -1; +} +objj_class.displayName = "objj_class"; +objj_object = function() +{ + this.isa = NULL; + this._UID = -1; +} +objj_object.displayName = "objj_object"; +class_getName = function( aClass) +{ + if (aClass == Nil) + return ""; + return aClass.name; +} +class_getName.displayName = "class_getName"; +class_isMetaClass = function( aClass) +{ + if (!aClass) + return NO; + return ((aClass.info & (CLS_META))); +} +class_isMetaClass.displayName = "class_isMetaClass"; +class_getSuperclass = function( aClass) +{ + if (aClass == Nil) + return Nil; + return aClass.super_class; +} +class_getSuperclass.displayName = "class_getSuperclass" +class_setSuperclass = function( aClass, aSuperClass) +{ + aClass.super_class = aSuperClass; + aClass.isa.super_class = aSuperClass.isa; +} +class_setSuperclass.displayName = "class_setSuperclass"; +class_addIvar = function( aClass, aName, aType) +{ + var thePrototype = aClass.allocator.prototype; + if (typeof thePrototype[aName] != "undefined") + return NO; + aClass.ivars.push(new objj_ivar(aName, aType)); + thePrototype[aName] = NULL; + return YES; +} +class_addIvar.displayName = "class_addIvar"; +class_addIvars = function( aClass, ivars) +{ + var index = 0, + count = ivars.length, + thePrototype = aClass.allocator.prototype; + for (; index < count; ++index) + { + var ivar = ivars[index], + name = ivar.name; + if (typeof thePrototype[name] === "undefined") + { + aClass.ivars.push(ivar); + thePrototype[name] = NULL; + } + } +} +class_addIvars.displayName = "class_addIvars"; +class_copyIvarList = function( aClass) +{ + return aClass.ivars.slice(0); +} +class_copyIvarList.displayName = "class_copyIvarList"; +class_addMethod = function( aClass, aName, anImplementation, types) +{ + if (aClass.method_hash[aName]) + return NO; + var method = new objj_method(aName, anImplementation, types); + aClass.method_list.push(method); + aClass.method_dtable[aName] = method; + method.method_imp.displayName = (((aClass.info & (CLS_META))) ? '+' : '-') + " [" + class_getName(aClass) + ' ' + method_getName(method) + ']'; + if (!((aClass.info & (CLS_META))) && (((aClass.info & (CLS_META))) ? aClass : aClass.isa).isa === (((aClass.info & (CLS_META))) ? aClass : aClass.isa)) + class_addMethod((((aClass.info & (CLS_META))) ? aClass : aClass.isa), aName, anImplementation, types); + return YES; +} +class_addMethod.displayName = "class_addMethod"; +class_addMethods = function( aClass, methods) +{ + var index = 0, + count = methods.length, + method_list = aClass.method_list, + method_dtable = aClass.method_dtable; + for (; index < count; ++index) + { + var method = methods[index]; + if (aClass.method_hash[method.name]) + continue; + method_list.push(method); + method_dtable[method.name] = method; + method.method_imp.displayName = (((aClass.info & (CLS_META))) ? '+' : '-') + " [" + class_getName(aClass) + ' ' + method_getName(method) + ']'; + } + if (!((aClass.info & (CLS_META))) && (((aClass.info & (CLS_META))) ? aClass : aClass.isa).isa === (((aClass.info & (CLS_META))) ? aClass : aClass.isa)) + class_addMethods((((aClass.info & (CLS_META))) ? aClass : aClass.isa), methods); +} +class_addMethods.displayName = "class_addMethods"; +class_getInstanceMethod = function( aClass, aSelector) +{ + if (!aClass || !aSelector) + return NULL; + var method = aClass.method_dtable[aSelector]; + return method ? method : NULL; +} +class_getInstanceMethod.displayName = "class_getInstanceMethod"; +class_getClassMethod = function( aClass, aSelector) +{ + if (!aClass || !aSelector) + return NULL; + var method = (((aClass.info & (CLS_META))) ? aClass : aClass.isa).method_dtable[aSelector]; + return method ? method : NULL; +} +class_getClassMethod.displayName = "class_getClassMethod"; +class_respondsToSelector = function( aClass, aSelector) +{ + return class_getClassMethod(aClass, aSelector) != NULL; +} +class_respondsToSelector.displayName = "class_respondsToSelector"; +class_copyMethodList = function( aClass) +{ + return aClass.method_list.slice(0); +} +class_copyMethodList.displayName = "class_copyMethodList"; +class_replaceMethod = function( aClass, aSelector, aMethodImplementation) +{ + if (!aClass || !aSelector) + return NULL; + var method = aClass.method_dtable[aSelector], + method_imp = NULL; + if (method) + method_imp = method.method_imp; + method.method_imp = aMethodImplementation; + return method_imp; +} +class_replaceMethod.displayName = "class_replaceMethod"; +var _class_initialize = function( aClass) +{ + var meta = (((aClass.info & (CLS_META))) ? aClass : aClass.isa); + if ((aClass.info & (CLS_META))) + aClass = objj_getClass(aClass.name); + if (aClass.super_class && !((((aClass.super_class.info & (CLS_META))) ? aClass.super_class : aClass.super_class.isa).info & (CLS_INITIALIZED))) + _class_initialize(aClass.super_class); + if (!(meta.info & (CLS_INITIALIZED)) && !(meta.info & (CLS_INITIALIZING))) + { + meta.info = (meta.info | (CLS_INITIALIZING)) & ~(0); + objj_msgSend(aClass, "initialize"); + meta.info = (meta.info | (CLS_INITIALIZED)) & ~(CLS_INITIALIZING); + } +} +var _objj_forward = new objj_method("forward", function(self, _cmd) +{ + return objj_msgSend(self, "forward::", _cmd, arguments); +}); +class_getMethodImplementation = function( aClass, aSelector) +{ + if (!((((aClass.info & (CLS_META))) ? aClass : aClass.isa).info & (CLS_INITIALIZED))) _class_initialize(aClass); var method = aClass.method_dtable[aSelector]; if (!method) method = _objj_forward; var implementation = method.method_imp;; + return implementation; +} +class_getMethodImplementation.displayName = "class_getMethodImplementation"; +var REGISTERED_CLASSES = { }; +objj_allocateClassPair = function( superclass, aName) +{ + var classObject = new objj_class(aName), + metaClassObject = new objj_class(aName), + rootClassObject = classObject; + if (superclass) + { + rootClassObject = superclass; + while (rootClassObject.superclass) + rootClassObject = rootClassObject.superclass; + classObject.allocator.prototype = new superclass.allocator; + classObject.method_store.prototype = new superclass.method_store; + classObject.method_dtable = classObject.method_store.prototype; + metaClassObject.method_store.prototype = new superclass.isa.method_store; + metaClassObject.method_dtable = metaClassObject.method_store.prototype; + classObject.super_class = superclass; + metaClassObject.super_class = superclass.isa; + } + else + classObject.allocator.prototype = new objj_object(); + classObject.isa = metaClassObject; + classObject.name = aName; + classObject.info = CLS_CLASS; + classObject._UID = objj_generateObjectUID(); + metaClassObject.isa = rootClassObject.isa; + metaClassObject.name = aName; + metaClassObject.info = CLS_META; + metaClassObject._UID = objj_generateObjectUID(); + return classObject; +} +objj_allocateClassPair.displayName = "objj_allocateClassPair"; +var CONTEXT_BUNDLE = nil; +objj_registerClassPair = function( aClass) +{ + global[aClass.name] = aClass; + REGISTERED_CLASSES[aClass.name] = aClass; + addClassToBundle(aClass, CONTEXT_BUNDLE); +} +objj_registerClassPair.displayName = "objj_registerClassPair"; +class_createInstance = function( aClass) +{ + if (!aClass) + throw new Error("*** Attempting to create object with Nil class."); + var object = new aClass.allocator(); + object.isa = aClass; + object._UID = objj_generateObjectUID(); + return object; +} +class_createInstance.displayName = "class_createInstance"; +var prototype_bug = function() { } +prototype_bug.prototype.member = false; +with (new prototype_bug()) + member = true; +if (new prototype_bug().member) +{ +var fast_class_createInstance = class_createInstance; +class_createInstance = function( aClass) +{ + var object = fast_class_createInstance(aClass); + if (object) + { + var theClass = object.isa, + actualClass = theClass; + while (theClass) + { + var ivars = theClass.ivars; + count = ivars.length; + while (count--) + object[ivars[count].name] = NULL; + theClass = theClass.super_class; + } + object.isa = actualClass; + } + return object; +} +} +object_getClassName = function( anObject) +{ + if (!anObject) + return ""; + var theClass = anObject.isa; + return theClass ? class_getName(theClass) : ""; +} +object_getClassName.displayName = "object_getClassName"; +objj_lookUpClass = function( aName) +{ + var theClass = REGISTERED_CLASSES[aName]; + return theClass ? theClass : Nil; +} +objj_lookUpClass.displayName = "objj_lookUpClass"; +objj_getClass = function( aName) +{ + var theClass = REGISTERED_CLASSES[aName]; + if (!theClass) + { + } + return theClass ? theClass : Nil; +} +objj_getClass.displayName = "objj_getClass"; +objj_getMetaClass = function( aName) +{ + var theClass = objj_getClass(aName); + return (((theClass.info & (CLS_META))) ? theClass : theClass.isa); +} +objj_getMetaClass.displayName = "objj_getMetaClass"; +ivar_getName = function(anIvar) +{ + return anIvar.name; +} +ivar_getName.displayName = "ivar_getName"; +ivar_getTypeEncoding = function(anIvar) +{ + return anIvar.type; +} +ivar_getTypeEncoding.displayName = "ivar_getTypeEncoding"; +objj_msgSend = function( aReceiver, aSelector) +{ + if (aReceiver == nil) + return nil; + var isa = aReceiver.isa; + if (!((((isa.info & (CLS_META))) ? isa : isa.isa).info & (CLS_INITIALIZED))) _class_initialize(isa); var method = isa.method_dtable[aSelector]; if (!method) method = _objj_forward; var implementation = method.method_imp;; + switch(arguments.length) + { + case 2: return implementation(aReceiver, aSelector); + case 3: return implementation(aReceiver, aSelector, arguments[2]); + case 4: return implementation(aReceiver, aSelector, arguments[2], arguments[3]); + } + return implementation.apply(aReceiver, arguments); +} +objj_msgSend.displayName = "objj_msgSend"; +objj_msgSendSuper = function( aSuper, aSelector) +{ + var super_class = aSuper.super_class; + arguments[0] = aSuper.receiver; + if (!((((super_class.info & (CLS_META))) ? super_class : super_class.isa).info & (CLS_INITIALIZED))) _class_initialize(super_class); var method = super_class.method_dtable[aSelector]; if (!method) method = _objj_forward; var implementation = method.method_imp;; + return implementation.apply(aSuper.receiver, arguments); +} +objj_msgSendSuper.displayName = "objj_msgSendSuper"; +method_getName = function( aMethod) +{ + return aMethod.name; +} +method_getName.displayName = "method_getName"; +method_getImplementation = function( aMethod) +{ + return aMethod.method_imp; +} +method_getImplementation.displayName = "method_getImplementation"; +method_setImplementation = function( aMethod, anImplementation) +{ + var oldImplementation = aMethod.method_imp; + aMethod.method_imp = anImplementation; + return oldImplementation; +} +method_setImplementation.displayName = "method_setImplementation"; +method_exchangeImplementations = function( lhs, rhs) +{ + var lhs_imp = method_getImplementation(lhs), + rhs_imp = method_getImplementation(rhs); + method_setImplementation(lhs, rhs_imp); + method_setImplementation(rhs, lhs_imp); +} +method_exchangeImplementations.displayName = "method_exchangeImplementations"; +sel_getName = function(aSelector) +{ + return aSelector ? aSelector : ""; +} +sel_getName.displayName = "sel_getName"; +sel_getUid = function( aName) +{ + return aName; +} +sel_getUid.displayName = "sel_getUid"; +sel_isEqual = function( lhs, rhs) +{ + return lhs === rhs; +} +sel_isEqual.displayName = "sel_isEqual"; +sel_registerName = function( aName) +{ + return aName; +} +sel_registerName.displayName = "sel_registerName"; +objj_eval = function( aString) +{ + var url = exports.pageURL; + var asyncLoaderSaved = exports.asyncLoader; + exports.asyncLoader = NO; + var executable = exports.preprocess(aString, url, 0); + if (!executable.hasLoadedFileDependencies()) + executable.loadFileDependencies(); + global._objj_eval_scope = {}; + global._objj_eval_scope.objj_executeFile = Executable.fileExecuterForURL(url); + global._objj_eval_scope.objj_importFile = Executable.fileImporterForURL(url); + var code = "with(_objj_eval_scope){" + executable._code + "\n//*/\n}"; + var result; + result = eval(code); + exports.asyncLoader = asyncLoaderSaved; + return result; +} +exports.objj_eval = objj_eval; +CPLogRegister(CPLogDefault); +function objj_debug_object_format(aReceiver) +{ + return (aReceiver && aReceiver.isa) ? exports.sprintf("<%s %#08x>", (((aReceiver.info & (CLS_META))) ? aReceiver : aReceiver.isa).name, aReceiver._UID) : String(aReceiver); +} +function objj_debug_message_format(aReceiver, aSelector) +{ + return exports.sprintf("[%s %s]", objj_debug_object_format(aReceiver), aSelector); +} +var objj_msgSend_original = objj_msgSend, + objj_msgSendSuper_original = objj_msgSendSuper; +objj_msgSend_reset = function() +{ + objj_msgSend = objj_msgSend_original; + objj_msgSendSuper = objj_msgSendSuper_original; +} +objj_msgSend_decorate = function() +{ + var index = 0, + count = arguments.length; + for (; index < count; ++index) + { + objj_msgSend = arguments[index](objj_msgSend); + objj_msgSendSuper = arguments[index](objj_msgSendSuper); + } +} +objj_msgSend_set_decorators = function() +{ + objj_msgSend_reset(); + objj_msgSend_decorate.apply(NULL, arguments); +} +var objj_backtrace = []; +objj_backtrace_print = function( aStream) +{ + var index = 0, + count = objj_backtrace.length; + for (; index < count; ++index) + { + var frame = objj_backtrace[index]; + aStream(objj_debug_message_format(frame.receiver, frame.selector)); + } +} +objj_backtrace_decorator = function(msgSend) +{ + return function(aReceiverOrSuper, aSelector) + { + var aReceiver = aReceiverOrSuper && (aReceiverOrSuper.receiver || aReceiverOrSuper); + objj_backtrace.push({ receiver: aReceiver, selector : aSelector }); + try + { + return msgSend.apply(NULL, arguments); + } + catch (anException) + { + CPLog.warn("Exception " + anException + " in " + objj_debug_message_format(aReceiver, aSelector)); + objj_backtrace_print(CPLog.warn); + throw anException; + } + finally + { + objj_backtrace.pop(); + } + } +} +objj_supress_exceptions_decorator = function(msgSend) +{ + return function(aReceiverOrSuper, aSelector) + { + var aReceiver = aReceiverOrSuper && (aReceiverOrSuper.receiver || aReceiverOrSuper); + try + { + return msgSend.apply(NULL, arguments); + } + catch (anException) + { + CPLog.warn("Exception " + anException + " in " + objj_debug_message_format(aReceiver, aSelector)); + } + } +} +var objj_typechecks_reported = {}, + objj_typecheck_prints_backtrace = NO; +objj_typecheck_decorator = function(msgSend) +{ + return function(aReceiverOrSuper, aSelector) + { + var aReceiver = aReceiverOrSuper && (aReceiverOrSuper.receiver || aReceiverOrSuper); + if (!aReceiver) + return msgSend.apply(NULL, arguments); + var types = aReceiver.isa.method_dtable[aSelector].types; + for (var i = 2; i < arguments.length; i++) + { + try + { + objj_debug_typecheck(types[i-1], arguments[i]); + } + catch (e) + { + var key = [(((aReceiver.info & (CLS_META))) ? aReceiver : aReceiver.isa).name, aSelector, i, e].join(";"); + if (!objj_typechecks_reported[key]) { + objj_typechecks_reported[key] = YES; + CPLog.warn("Type check failed on argument " + (i-2) + " of " + objj_debug_message_format(aReceiver, aSelector) + ": " + e); + if (objj_typecheck_prints_backtrace) + objj_backtrace_print(CPLog.warn); + } + } + } + var result = msgSend.apply(NULL, arguments); + try + { + objj_debug_typecheck(types[0], result); + } + catch (e) + { + var key = [(((aReceiver.info & (CLS_META))) ? aReceiver : aReceiver.isa).name, aSelector, "ret", e].join(";"); + if (!objj_typechecks_reported[key]) { + objj_typechecks_reported[key] = YES; + CPLog.warn("Type check failed on return val of " + objj_debug_message_format(aReceiver, aSelector) + ": " + e); + if (objj_typecheck_prints_backtrace) + objj_backtrace_print(CPLog.warn); + } + } + return result; + } +} +objj_debug_typecheck = function(expectedType, object) +{ + var objjClass; + if (!expectedType) + { + return; + } + else if (expectedType === "id") + { + if (object !== undefined) + return; + } + else if (expectedType === "void") + { + if (object === undefined) + return; + } + else if (objjClass = objj_getClass(expectedType)) + { + if (object === nil) + { + return; + } + else if (object !== undefined && object.isa) + { + var theClass = object.isa; + for (; theClass; theClass = theClass.super_class) + if (theClass === objjClass) + return; + } + } + else + { + return; + } + var actualType; + if (object === NULL) + actualType = "null"; + else if (object === undefined) + actualType = "void"; + else if (object.isa) + actualType = (((object.info & (CLS_META))) ? object : object.isa).name; + else + actualType = typeof object; + throw ("expected=" + expectedType + ", actual=" + actualType); +} +enableCFURLCaching(); +var pageURL = new CFURL(window.location.href), + DOMBaseElements = document.getElementsByTagName("base"), + DOMBaseElementsCount = DOMBaseElements.length; +if (DOMBaseElementsCount > 0) +{ + var DOMBaseElement = DOMBaseElements[DOMBaseElementsCount - 1], + DOMBaseElementHref = DOMBaseElement && DOMBaseElement.getAttribute("href"); + if (DOMBaseElementHref) + pageURL = new CFURL(DOMBaseElementHref, pageURL); +} +var mainFileURL = new CFURL(window.OBJJ_MAIN_FILE || "main.j"), + mainBundleURL = new CFURL(".", new CFURL(mainFileURL, pageURL)).absoluteURL(), + assumedResolvedURL = new CFURL("..", mainBundleURL).absoluteURL(); +if (mainBundleURL === assumedResolvedURL) + assumedResolvedURL = new CFURL(assumedResolvedURL.schemeAndAuthority()); +StaticResource.resourceAtURL(assumedResolvedURL, YES); +exports.pageURL = pageURL; +exports.bootstrap = function() +{ + resolveMainBundleURL(); +} +function resolveMainBundleURL() +{ + StaticResource.resolveResourceAtURL(mainBundleURL, YES, function( aResource) + { + var includeURLs = StaticResource.includeURLs(), + index = 0, + count = includeURLs.length; + for (; index < count; ++index) + aResource.resourceAtURL(includeURLs[index], YES); + Executable.fileImporterForURL(mainBundleURL)(mainFileURL.lastPathComponent(), YES, function() + { + disableCFURLCaching(); + afterDocumentLoad(function() + { + var hashString = window.location.hash.substring(1), + args = []; + if (hashString.length) + { + args = hashString.split("/"); + for (var i = 0, count = args.length; i < count; i++) + args[i] = decodeURIComponent(args[i]); + } + var namedArgsArray = window.location.search.substring(1).split("&"), + namedArgs = new CFMutableDictionary(); + for (var i = 0, count = namedArgsArray.length; i < count; i++) + { + var thisArg = namedArgsArray[i].split("="); + if (!thisArg[0]) + continue; + if (thisArg[1] == null) + thisArg[1] = true; + namedArgs.setValueForKey(decodeURIComponent(thisArg[0]), decodeURIComponent(thisArg[1])); + } + main(args, namedArgs); + }); + }); + }); +} +var documentLoaded = NO; +function afterDocumentLoad( aFunction) +{ + if (documentLoaded) + return aFunction(); + if (window.addEventListener) + window.addEventListener("load", aFunction, NO); + else if (window.attachEvent) + window.attachEvent("onload", aFunction); +} +afterDocumentLoad(function() +{ + documentLoaded = YES; +}); +if (typeof OBJJ_AUTO_BOOTSTRAP === "undefined" || OBJJ_AUTO_BOOTSTRAP) + exports.bootstrap(); +function makeAbsoluteURL( aURL) +{ + if (aURL instanceof CFURL && aURL.scheme()) + return aURL; + return new CFURL(aURL, mainBundleURL); +} +objj_importFile = Executable.fileImporterForURL(mainBundleURL); +objj_executeFile = Executable.fileExecuterForURL(mainBundleURL); +objj_import = function() +{ + CPLog.warn("objj_import is deprecated, use objj_importFile instead"); + objj_importFile.apply(this, arguments); +} +})(window, ObjectiveJ); ADDED Site/Site_Z/Frameworks/Foundation/Info.plist Index: Site/Site_Z/Frameworks/Foundation/Info.plist ================================================================== --- Site/Site_Z/Frameworks/Foundation/Info.plist +++ Site/Site_Z/Frameworks/Foundation/Info.plist @@ -0,0 +1,1 @@ +280NPLIST;1.0;D;K;18;CPBundleIdentifierS;19;com.280n.FoundationK;29;CPBundleInfoDictionaryVersiond;1;6K;12;CPBundleNameS;10;FoundationK;19;CPBundlePackageTypeS;4;FMWKK;15;CPBundleVersionS;5;0.8.1K;20;CPBundleEnvironmentsA;S;4;ObjJE;K;18;CPBundleExecutableS;13;Foundation.sjK;36;CPBundleEnvironmentsWithImageSpritesA;E;E; ADDED Site/Site_Z/Frameworks/Foundation/LICENSE Index: Site/Site_Z/Frameworks/Foundation/LICENSE ================================================================== --- Site/Site_Z/Frameworks/Foundation/LICENSE +++ Site/Site_Z/Frameworks/Foundation/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site_Z/Frameworks/Foundation/ObjJ.environment/Foundation.sj Index: Site/Site_Z/Frameworks/Foundation/ObjJ.environment/Foundation.sj ================================================================== --- Site/Site_Z/Frameworks/Foundation/ObjJ.environment/Foundation.sj +++ Site/Site_Z/Frameworks/Foundation/ObjJ.environment/Foundation.sj @@ -0,0 +1,10742 @@ +@STATIC;1.0;p;13;CPArray+KVO.jt;13001;@STATIC;1.0;i;9;CPArray.ji;8;CPNull.jt;12956; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPNull.j",YES); +var _1=objj_getClass("CPObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("mutableArrayValueForKey:"),function(_3,_4,_5){ +with(_3){ +return objj_msgSend(objj_msgSend(_CPKVCArray,"alloc"),"initWithKey:forProxyObject:",_5,_3); +} +}),new objj_method(sel_getUid("mutableArrayValueForKeyPath:"),function(_6,_7,_8){ +with(_6){ +var _9=_8.indexOf("."); +if(_9<0){ +return objj_msgSend(_6,"mutableArrayValueForKey:",_8); +} +var _a=_8.substring(0,_9),_b=_8.substring(_9+1); +return objj_msgSend(objj_msgSend(_6,"valueForKeyPath:",_a),"valueForKeyPath:",_b); +} +})]); +var _1=objj_allocateClassPair(CPArray,"_CPKVCArray"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_proxyObject"),new objj_ivar("_key"),new objj_ivar("_insertSEL"),new objj_ivar("_insert"),new objj_ivar("_removeSEL"),new objj_ivar("_remove"),new objj_ivar("_replaceSEL"),new objj_ivar("_replace"),new objj_ivar("_insertManySEL"),new objj_ivar("_insertMany"),new objj_ivar("_removeManySEL"),new objj_ivar("_removeMany"),new objj_ivar("_replaceManySEL"),new objj_ivar("_replaceMany"),new objj_ivar("_objectAtIndexSEL"),new objj_ivar("_objectAtIndex"),new objj_ivar("_countSEL"),new objj_ivar("_count"),new objj_ivar("_accessSEL"),new objj_ivar("_access"),new objj_ivar("_setSEL"),new objj_ivar("_set")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKey:forProxyObject:"),function(_c,_d,_e,_f){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("_CPKVCArray").super_class},"init"); +_key=_e; +_proxyObject=_f; +var _10=_key.charAt(0).toUpperCase()+_key.substring(1); +_insertSEL=sel_getName("insertObject:in"+_10+"AtIndex:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_insertSEL)){ +_insert=objj_msgSend(_proxyObject,"methodForSelector:",_insertSEL); +} +_removeSEL=sel_getName("removeObjectFrom"+_10+"AtIndex:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_removeSEL)){ +_remove=objj_msgSend(_proxyObject,"methodForSelector:",_removeSEL); +} +_replaceSEL=sel_getName("replaceObjectFrom"+_10+"AtIndex:withObject:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_replaceSEL)){ +_replace=objj_msgSend(_proxyObject,"methodForSelector:",_replaceSEL); +} +_insertManySEL=sel_getName("insertObjects:in"+_10+"AtIndexes:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_insertManySEL)){ +_insertMany=objj_msgSend(_proxyObject,"methodForSelector:",_insertManySEL); +} +_removeManySEL=sel_getName("removeObjectsFrom"+_10+"AtIndexes:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_removeManySEL)){ +_remove=objj_msgSend(_proxyObject,"methodForSelector:",_removeManySEL); +} +_replaceManySEL=sel_getName("replaceObjectsFrom"+_10+"AtIndexes:withObjects:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_replaceManySEL)){ +_replace=objj_msgSend(_proxyObject,"methodForSelector:",_replaceManySEL); +} +_objectAtIndexSEL=sel_getName("objectIn"+_10+"AtIndex:"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_objectAtIndexSEL)){ +_objectAtIndex=objj_msgSend(_proxyObject,"methodForSelector:",_objectAtIndexSEL); +} +_countSEL=sel_getName("countOf"+_10); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_countSEL)){ +_count=objj_msgSend(_proxyObject,"methodForSelector:",_countSEL); +} +_accessSEL=sel_getName(_key); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_accessSEL)){ +_access=objj_msgSend(_proxyObject,"methodForSelector:",_accessSEL); +} +_setSEL=sel_getName("set"+_10+":"); +if(objj_msgSend(_proxyObject,"respondsToSelector:",_setSEL)){ +_set=objj_msgSend(_proxyObject,"methodForSelector:",_setSEL); +} +return _c; +} +}),new objj_method(sel_getUid("copy"),function(_11,_12){ +with(_11){ +var i=0,_13=[],_14=objj_msgSend(_11,"count"); +for(;i<_14;i++){ +objj_msgSend(_13,"addObject:",objj_msgSend(_11,"objectAtIndex:",i)); +} +return _13; +} +}),new objj_method(sel_getUid("_representedObject"),function(_15,_16){ +with(_15){ +if(_access){ +return _access(_proxyObject,_accessSEL); +} +return objj_msgSend(_proxyObject,"valueForKey:",_key); +} +}),new objj_method(sel_getUid("_setRepresentedObject:"),function(_17,_18,_19){ +with(_17){ +if(_set){ +return _set(_proxyObject,_setSEL,_19); +} +objj_msgSend(_proxyObject,"setValue:forKey:",_19,_key); +} +}),new objj_method(sel_getUid("count"),function(_1a,_1b){ +with(_1a){ +if(_count){ +return _count(_proxyObject,_countSEL); +} +return objj_msgSend(objj_msgSend(_1a,"_representedObject"),"count"); +} +}),new objj_method(sel_getUid("indexOfObject:inRange:"),function(_1c,_1d,_1e,_1f){ +with(_1c){ +var _20=_1f.location,_21=_1f.length,_22=!!_1e.isa; +for(;_20<_21;++_20){ +var _23=objj_msgSend(_1c,"objectAtIndex:",_20); +if(_1e===_23||_22&&!!_23.isa&&objj_msgSend(_1e,"isEqual:",_23)){ +return _20; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObject:"),function(_24,_25,_26){ +with(_24){ +return objj_msgSend(_24,"indexOfObject:inRange:",_26,CPMakeRange(0,objj_msgSend(_24,"count"))); +} +}),new objj_method(sel_getUid("indexOfObjectIdenticalTo:inRange:"),function(_27,_28,_29,_2a){ +with(_27){ +var _2b=_2a.location,_2c=_2a.length; +for(;_2b<_2c;++_2b){ +if(_29===objj_msgSend(_27,"objectAtIndex:",_2b)){ +return _2b; +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObjectIdenticalTo:"),function(_2d,_2e,_2f){ +with(_2d){ +return objj_msgSend(_2d,"indexOfObjectIdenticalTo:inRange:",_2f,CPMakeRange(0,objj_msgSend(_2d,"count"))); +} +}),new objj_method(sel_getUid("objectAtIndex:"),function(_30,_31,_32){ +with(_30){ +if(_objectAtIndex){ +return _objectAtIndex(_proxyObject,_objectAtIndexSEL,_32); +} +return objj_msgSend(objj_msgSend(_30,"_representedObject"),"objectAtIndex:",_32); +} +}),new objj_method(sel_getUid("addObject:"),function(_33,_34,_35){ +with(_33){ +objj_msgSend(_33,"insertObject:atIndex:",_35,objj_msgSend(_33,"count")); +} +}),new objj_method(sel_getUid("addObjectsFromArray:"),function(_36,_37,_38){ +with(_36){ +var _39=0,_3a=objj_msgSend(_38,"count"); +objj_msgSend(_36,"insertObjects:atIndexes:",_38,objj_msgSend(CPIndexSet,"indexSetWithIndexesInRange:",CPMakeRange(objj_msgSend(_36,"count"),_3a))); +} +}),new objj_method(sel_getUid("insertObject:atIndex:"),function(_3b,_3c,_3d,_3e){ +with(_3b){ +objj_msgSend(_3b,"insertObjects:atIndexes:",[_3d],objj_msgSend(CPIndexSet,"indexSetWithIndex:",_3e)); +} +}),new objj_method(sel_getUid("insertObjects:atIndexes:"),function(_3f,_40,_41,_42){ +with(_3f){ +if(_insertMany){ +_insertMany(_proxyObject,_insertManySEL,_41,_42); +}else{ +if(_insert){ +var _43=[]; +objj_msgSend(_42,"getIndexes:maxCount:inIndexRange:",_43,-1,nil); +for(var _44=0;_440){ +min=_90; +} +} +return min; +}; +_69["count"]=_7d=function(_91,_92,_93){ +return objj_msgSend(_91,"count"); +}; +_69["sum"]=_7e=function(_94,_95,_96){ +var _97=objj_msgSend(_94,"valueForKeyPath:",_96),_98=objj_msgSend(_97,"count"),sum=0; +while(_98--){ +sum+=objj_msgSend(_97[_98],"doubleValue"); +} +return sum; +}; +var _1=objj_getClass("CPArray"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("addObserver:toObjectsAtIndexes:forKeyPath:options:context:"),function(_99,_9a,_9b,_9c,_9d,_9e,_9f){ +with(_99){ +var _a0=objj_msgSend(_9c,"firstIndex"); +while(_a0>=0){ +objj_msgSend(_99[_a0],"addObserver:forKeyPath:options:context:",_9b,_9d,_9e,_9f); +_a0=objj_msgSend(_9c,"indexGreaterThanIndex:",_a0); +} +} +}),new objj_method(sel_getUid("removeObserver:fromObjectsAtIndexes:forKeyPath:"),function(_a1,_a2,_a3,_a4,_a5){ +with(_a1){ +var _a6=objj_msgSend(_a4,"firstIndex"); +while(_a6>=0){ +objj_msgSend(_a1[_a6],"removeObserver:forKeyPath:",_a3,_a5); +_a6=objj_msgSend(_a4,"indexGreaterThanIndex:",_a6); +} +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_a7,_a8,_a9,_aa,_ab,_ac){ +with(_a7){ +if(objj_msgSend(isa,"instanceMethodForSelector:",_a8)===objj_msgSend(CPArray,"instanceMethodForSelector:",_a8)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unsupported method on CPArray"); +}else{ +objj_msgSendSuper({receiver:_a7,super_class:objj_getClass("CPArray").super_class},"addObserver:forKeyPath:options:context:",_a9,_aa,_ab,_ac); +} +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_ad,_ae,_af,_b0){ +with(_ad){ +if(objj_msgSend(isa,"instanceMethodForSelector:",_ae)===objj_msgSend(CPArray,"instanceMethodForSelector:",_ae)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unsupported method on CPArray"); +}else{ +objj_msgSendSuper({receiver:_ad,super_class:objj_getClass("CPArray").super_class},"removeObserver:forKeyPath:",_af,_b0); +} +} +})]); +p;9;CPArray.jt;21105;@STATIC;1.0;i;14;CPEnumerator.ji;13;CPException.ji;10;CPObject.ji;9;CPRange.ji;18;CPSortDescriptor.jt;20997; +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPRange.j",YES); +objj_executeFile("CPSortDescriptor.j",YES); +CPEnumerationNormal=0; +CPEnumerationConcurrent=1<<0; +CPEnumerationReverse=1<<1; +var _1=objj_allocateClassPair(CPEnumerator,"_CPArrayEnumerator"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_array"),new objj_ivar("_index")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithArray:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPArrayEnumerator").super_class},"init"); +if(_3){ +_array=_5; +_index=-1; +} +return _3; +} +}),new objj_method(sel_getUid("nextObject"),function(_6,_7){ +with(_6){ +if(++_index>=objj_msgSend(_array,"count")){ +return nil; +} +return objj_msgSend(_array,"objectAtIndex:",_index); +} +})]); +var _1=objj_allocateClassPair(CPEnumerator,"_CPReverseArrayEnumerator"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_array"),new objj_ivar("_index")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithArray:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("_CPReverseArrayEnumerator").super_class},"init"); +if(_8){ +_array=_a; +_index=objj_msgSend(_array,"count"); +} +return _8; +} +}),new objj_method(sel_getUid("nextObject"),function(_b,_c){ +with(_b){ +if(--_index<0){ +return nil; +} +return objj_msgSend(_array,"objectAtIndex:",_index); +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPArray"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_d,_e){ +with(_d){ +return _d; +} +}),new objj_method(sel_getUid("initWithArray:"),function(_f,_10,_11){ +with(_f){ +_f=objj_msgSendSuper({receiver:_f,super_class:objj_getClass("CPArray").super_class},"init"); +if(_f){ +objj_msgSend(_f,"setArray:",_11); +} +return _f; +} +}),new objj_method(sel_getUid("initWithArray:copyItems:"),function(_12,_13,_14,_15){ +with(_12){ +if(!_15){ +return objj_msgSend(_12,"initWithArray:",_14); +} +_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPArray").super_class},"init"); +if(_12){ +var _16=0,_17=objj_msgSend(_14,"count"); +for(;_16<_17;++_16){ +if(_14[_16].isa){ +_12[_16]=objj_msgSend(_14[_16],"copy"); +}else{ +_12[_16]=_14[_16]; +} +} +} +return _12; +} +}),new objj_method(sel_getUid("initWithObjects:"),function(_18,_19,_1a){ +with(_18){ +var i=2,_1b=arguments.length; +for(;i<_1b;++i){ +push(arguments[i]); +} +return _18; +} +}),new objj_method(sel_getUid("initWithObjects:count:"),function(_1c,_1d,_1e,_1f){ +with(_1c){ +_1c=objj_msgSendSuper({receiver:_1c,super_class:objj_getClass("CPArray").super_class},"init"); +if(_1c){ +var _20=0; +for(;_20<_1f;++_20){ +push(_1e[_20]); +} +} +return _1c; +} +}),new objj_method(sel_getUid("containsObject:"),function(_21,_22,_23){ +with(_21){ +return objj_msgSend(_21,"indexOfObject:",_23)!=CPNotFound; +} +}),new objj_method(sel_getUid("count"),function(_24,_25){ +with(_24){ +return length; +} +}),new objj_method(sel_getUid("indexOfObject:"),function(_26,_27,_28){ +with(_26){ +var i=0,_29=length; +if(_28&&_28.isa){ +for(;i<_29;++i){ +if(objj_msgSend(_26[i],"isEqual:",_28)){ +return i; +} +} +}else{ +if(_26.indexOf){ +return indexOf(_28); +}else{ +for(;i<_29;++i){ +if(_26[i]===_28){ +return i; +} +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObject:inRange:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +var i=_2d.location,_2e=MIN(CPMaxRange(_2d),length); +if(_2c&&_2c.isa){ +for(;i<_2e;++i){ +if(objj_msgSend(_2a[i],"isEqual:",_2c)){ +return i; +} +} +}else{ +for(;i<_2e;++i){ +if(_2a[i]===_2c){ +return i; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObjectIdenticalTo:"),function(_2f,_30,_31){ +with(_2f){ +if(_2f.indexOf){ +return indexOf(_31); +}else{ +var _32=0,_33=length; +for(;_32<_33;++_32){ +if(_2f[_32]===_31){ +return _32; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObjectIdenticalTo:inRange:"),function(_34,_35,_36,_37){ +with(_34){ +if(_34.indexOf){ +var _38=indexOf(_36,_37.location); +if(CPLocationInRange(_38,_37)){ +return _38; +} +}else{ +var _38=_37.location,_39=MIN(CPMaxRange(_37),length); +for(;_38<_39;++_38){ +if(_34[_38]==_36){ +return _38; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObjectPassingTest:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(_3a,"indexOfObjectWithOptions:passingTest:context:",CPEnumerationNormal,_3c,undefined); +} +}),new objj_method(sel_getUid("indexOfObjectPassingTest:context:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +return objj_msgSend(_3d,"indexOfObjectWithOptions:passingTest:context:",CPEnumerationNormal,_3f,_40); +} +}),new objj_method(sel_getUid("indexOfObjectWithOptions:passingTest:"),function(_41,_42,_43,_44){ +with(_41){ +return objj_msgSend(_41,"indexOfObjectWithOptions:passingTest:context:",_43,_44,undefined); +} +}),new objj_method(sel_getUid("indexOfObjectWithOptions:passingTest:context:"),function(_45,_46,_47,_48,_49){ +with(_45){ +var _4a,_4b,_4c; +if(_47&CPEnumerationReverse){ +_4a=objj_msgSend(_45,"count")-1; +_4b=-1; +_4c=-1; +}else{ +_4a=0; +_4b=objj_msgSend(_45,"count"); +_4c=1; +} +for(var i=_4a;i!=_4b;i+=_4c){ +var _4d=_48(objj_msgSend(_45,"objectAtIndex:",i),i,_49); +if(typeof _4d==="boolean"&&_4d){ +return i; +}else{ +if(typeof _4d==="object"&&_4d==nil){ +return CPNotFound; +} +} +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexOfObject:sortedBySelector:"),function(_4e,_4f,_50,_51){ +with(_4e){ +return objj_msgSend(_4e,"indexOfObject:sortedByFunction:",_50,function(lhs,rhs){ +objj_msgSend(lhs,_51,rhs); +}); +} +}),new objj_method(sel_getUid("indexOfObject:sortedByFunction:"),function(_52,_53,_54,_55){ +with(_52){ +return objj_msgSend(_52,"indexOfObject:sortedByFunction:context:",_54,_55,nil); +} +}),new objj_method(sel_getUid("indexOfObject:sortedByFunction:context:"),function(_56,_57,_58,_59,_5a){ +with(_56){ +var _5b=objj_msgSend(_56,"_indexOfObject:sortedByFunction:context:",_58,_59,_5a); +return _5b>=0?_5b:CPNotFound; +} +}),new objj_method(sel_getUid("_indexOfObject:sortedByFunction:context:"),function(_5c,_5d,_5e,_5f,_60){ +with(_5c){ +if(!_5f){ +return CPNotFound; +} +if(length===0){ +return -1; +} +var mid,c,_61=0,_62=length-1; +while(_61<=_62){ +mid=FLOOR((_61+_62)/2); +c=_5f(_5e,_5c[mid],_60); +if(c>0){ +_61=mid+1; +}else{ +if(c<0){ +_62=mid-1; +}else{ +while(mid=length||_75<0){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"index ("+_75+") beyond bounds ("+length+")"); +} +return _73[_75]; +} +}),new objj_method(sel_getUid("objectsAtIndexes:"),function(_76,_77,_78){ +with(_76){ +var _79=CPNotFound,_7a=[]; +while((_79=objj_msgSend(_78,"indexGreaterThanIndex:",_79))!==CPNotFound){ +objj_msgSend(_7a,"addObject:",objj_msgSend(_76,"objectAtIndex:",_79)); +} +return _7a; +} +}),new objj_method(sel_getUid("objectEnumerator"),function(_7b,_7c){ +with(_7b){ +return objj_msgSend(objj_msgSend(_CPArrayEnumerator,"alloc"),"initWithArray:",_7b); +} +}),new objj_method(sel_getUid("reverseObjectEnumerator"),function(_7d,_7e){ +with(_7d){ +return objj_msgSend(objj_msgSend(_CPReverseArrayEnumerator,"alloc"),"initWithArray:",_7d); +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:"),function(_7f,_80,_81){ +with(_7f){ +if(!_81){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"makeObjectsPerformSelector: 'aSelector' can't be nil"); +} +var _82=0,_83=length; +for(;_82<_83;++_82){ +objj_msgSend(_7f[_82],_81); +} +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:withObject:"),function(_84,_85,_86,_87){ +with(_84){ +if(!_86){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"makeObjectsPerformSelector:withObject 'aSelector' can't be nil"); +} +var _88=0,_89=length; +for(;_88<_89;++_88){ +objj_msgSend(_84[_88],_86,_87); +} +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:withObjects:"),function(_8a,_8b,_8c,_8d){ +with(_8a){ +if(!_8c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"makeObjectsPerformSelector:withObjects: 'aSelector' can't be nil"); +} +var _8e=0,_8f=length,_90=[nil,_8c].concat(_8d||[]); +for(;_8e<_8f;++_8e){ +_90[0]=_8a[_8e]; +objj_msgSend.apply(this,_90); +} +} +}),new objj_method(sel_getUid("firstObjectCommonWithArray:"),function(_91,_92,_93){ +with(_91){ +if(!objj_msgSend(_93,"count")||!objj_msgSend(_91,"count")){ +return nil; +} +var i=0,_94=objj_msgSend(_91,"count"); +for(;i<_94;++i){ +if(objj_msgSend(_93,"containsObject:",_91[i])){ +return _91[i]; +} +} +return nil; +} +}),new objj_method(sel_getUid("isEqualToArray:"),function(_95,_96,_97){ +with(_95){ +if(_95===_97){ +return YES; +} +if(_97===nil||length!==_97.length){ +return NO; +} +var _98=0,_99=objj_msgSend(_95,"count"); +for(;_98<_99;++_98){ +var lhs=_95[_98],rhs=_97[_98]; +if(lhs!==rhs&&(lhs&&!lhs.isa||rhs&&!rhs.isa||!objj_msgSend(lhs,"isEqual:",rhs))){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("isEqual:"),function(_9a,_9b,_9c){ +with(_9a){ +if(_9a===_9c){ +return YES; +} +if(!objj_msgSend(_9c,"isKindOfClass:",objj_msgSend(CPArray,"class"))){ +return NO; +} +return objj_msgSend(_9a,"isEqualToArray:",_9c); +} +}),new objj_method(sel_getUid("arrayByAddingObject:"),function(_9d,_9e,_9f){ +with(_9d){ +var _a0=objj_msgSend(_9d,"copy"); +_a0.push(_9f); +return _a0; +} +}),new objj_method(sel_getUid("arrayByAddingObjectsFromArray:"),function(_a1,_a2,_a3){ +with(_a1){ +return slice(0).concat(_a3); +} +}),new objj_method(sel_getUid("subarrayWithRange:"),function(_a4,_a5,_a6){ +with(_a4){ +if(_a6.location<0||CPMaxRange(_a6)>length){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"subarrayWithRange: aRange out of bounds"); +} +return slice(_a6.location,CPMaxRange(_a6)); +} +}),new objj_method(sel_getUid("sortedArrayUsingDescriptors:"),function(_a7,_a8,_a9){ +with(_a7){ +var _aa=objj_msgSend(_a7,"copy"); +objj_msgSend(_aa,"sortUsingDescriptors:",_a9); +return _aa; +} +}),new objj_method(sel_getUid("sortedArrayUsingFunction:"),function(_ab,_ac,_ad){ +with(_ab){ +return objj_msgSend(_ab,"sortedArrayUsingFunction:context:",_ad,nil); +} +}),new objj_method(sel_getUid("sortedArrayUsingFunction:context:"),function(_ae,_af,_b0,_b1){ +with(_ae){ +var _b2=objj_msgSend(_ae,"copy"); +objj_msgSend(_b2,"sortUsingFunction:context:",_b0,_b1); +return _b2; +} +}),new objj_method(sel_getUid("sortedArrayUsingSelector:"),function(_b3,_b4,_b5){ +with(_b3){ +var _b6=objj_msgSend(_b3,"copy"); +objj_msgSend(_b6,"sortUsingSelector:",_b5); +return _b6; +} +}),new objj_method(sel_getUid("componentsJoinedByString:"),function(_b7,_b8,_b9){ +with(_b7){ +return join(_b9); +} +}),new objj_method(sel_getUid("description"),function(_ba,_bb){ +with(_ba){ +var _bc=0,_bd=objj_msgSend(_ba,"count"),_be="("; +for(;_bc<_bd;++_bc){ +if(_bc===0){ +_be+="\n"; +} +var _bf=objj_msgSend(_ba,"objectAtIndex:",_bc),_c0=_bf&&_bf.isa?objj_msgSend(_bf,"description"):String(_bf); +_be+="\t"+_c0.split("\n").join("\n\t"); +if(_bc!==_bd-1){ +_be+=", "; +} +_be+="\n"; +} +return _be+")"; +} +}),new objj_method(sel_getUid("pathsMatchingExtensions:"),function(_c1,_c2,_c3){ +with(_c1){ +var _c4=0,_c5=objj_msgSend(_c1,"count"),_c6=[]; +for(;_c4<_c5;++_c4){ +if(_c1[_c4].isa&&objj_msgSend(_c1[_c4],"isKindOfClass:",objj_msgSend(CPString,"class"))&&objj_msgSend(_c3,"containsObject:",objj_msgSend(_c1[_c4],"pathExtension"))){ +_c6.push(_c1[_c4]); +} +} +return _c6; +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_c7,_c8,_c9,_ca){ +with(_c7){ +var i=0,_cb=objj_msgSend(_c7,"count"); +for(;i<_cb;++i){ +objj_msgSend(_c7[i],"setValue:forKey:",_c9,_ca); +} +} +}),new objj_method(sel_getUid("valueForKey:"),function(_cc,_cd,_ce){ +with(_cc){ +var i=0,_cf=objj_msgSend(_cc,"count"),_d0=[]; +for(;i<_cf;++i){ +_d0.push(objj_msgSend(_cc[i],"valueForKey:",_ce)); +} +return _d0; +} +}),new objj_method(sel_getUid("copy"),function(_d1,_d2){ +with(_d1){ +return slice(0); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_d3,_d4){ +with(_d3){ +return []; +} +}),new objj_method(sel_getUid("array"),function(_d5,_d6){ +with(_d5){ +return objj_msgSend(objj_msgSend(_d5,"alloc"),"init"); +} +}),new objj_method(sel_getUid("arrayWithArray:"),function(_d7,_d8,_d9){ +with(_d7){ +return objj_msgSend(objj_msgSend(_d7,"alloc"),"initWithArray:",_d9); +} +}),new objj_method(sel_getUid("arrayWithObject:"),function(_da,_db,_dc){ +with(_da){ +return objj_msgSend(objj_msgSend(_da,"alloc"),"initWithObjects:",_dc); +} +}),new objj_method(sel_getUid("arrayWithObjects:"),function(_dd,_de,_df){ +with(_dd){ +var i=2,_e0=objj_msgSend(objj_msgSend(_dd,"alloc"),"init"),_e1=arguments.length; +for(;i<_e1;++i){ +_e0.push(arguments[i]); +} +return _e0; +} +}),new objj_method(sel_getUid("arrayWithObjects:count:"),function(_e2,_e3,_e4,_e5){ +with(_e2){ +return objj_msgSend(objj_msgSend(_e2,"alloc"),"initWithObjects:count:",_e4,_e5); +} +})]); +var _1=objj_getClass("CPArray"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCapacity:"),function(_e6,_e7,_e8){ +with(_e6){ +return _e6; +} +}),new objj_method(sel_getUid("addObject:"),function(_e9,_ea,_eb){ +with(_e9){ +push(_eb); +} +}),new objj_method(sel_getUid("addObjectsFromArray:"),function(_ec,_ed,_ee){ +with(_ec){ +splice.apply(_ec,[length,0].concat(_ee)); +} +}),new objj_method(sel_getUid("insertObject:atIndex:"),function(_ef,_f0,_f1,_f2){ +with(_ef){ +splice(_f2,0,_f1); +} +}),new objj_method(sel_getUid("insertObjects:atIndexes:"),function(_f3,_f4,_f5,_f6){ +with(_f3){ +var _f7=objj_msgSend(_f6,"count"),_f8=objj_msgSend(_f5,"count"); +if(_f7!==_f8){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"the counts of the passed-in array ("+_f8+") and index set ("+_f7+") must be identical."); +} +var _f9=objj_msgSend(_f6,"lastIndex"); +if(_f9>=objj_msgSend(_f3,"count")+_f7){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"the last index ("+_f9+") must be less than the sum of the original count ("+objj_msgSend(_f3,"count")+") and the insertion count ("+_f7+")."); +} +var _fa=0,_fb=objj_msgSend(_f6,"firstIndex"); +for(;_fa<_f8;++_fa,_fb=objj_msgSend(_f6,"indexGreaterThanIndex:",_fb)){ +objj_msgSend(_f3,"insertObject:atIndex:",_f5[_fa],_fb); +} +} +}),new objj_method(sel_getUid("insertObject:inArraySortedByDescriptors:"),function(_fc,_fd,_fe,_ff){ +with(_fc){ +var _100=objj_msgSend(_ff,"count"); +var _101=objj_msgSend(_fc,"_indexOfObject:sortedByFunction:context:",_fe,function(lhs,rhs){ +var i=0,_102=CPOrderedSame; +while(i<_100){ +if((_102=objj_msgSend(_ff[i++],"compareObject:withObject:",lhs,rhs))!=CPOrderedSame){ +return _102; +} +} +return _102; +},nil); +if(_101<0){ +_101=-_101-1; +} +objj_msgSend(_fc,"insertObject:atIndex:",_fe,_101); +return _101; +} +}),new objj_method(sel_getUid("replaceObjectAtIndex:withObject:"),function(self,_103,_104,_105){ +with(self){ +self[_104]=_105; +} +}),new objj_method(sel_getUid("replaceObjectsAtIndexes:withObjects:"),function(self,_106,_107,_108){ +with(self){ +var i=0,_109=objj_msgSend(_107,"firstIndex"); +while(_109!=CPNotFound){ +objj_msgSend(self,"replaceObjectAtIndex:withObject:",_109,_108[i++]); +_109=objj_msgSend(_107,"indexGreaterThanIndex:",_109); +} +} +}),new objj_method(sel_getUid("replaceObjectsInRange:withObjectsFromArray:range:"),function(self,_10a,_10b,_10c,_10d){ +with(self){ +if(!_10d.location&&_10d.length==objj_msgSend(_10c,"count")){ +objj_msgSend(self,"replaceObjectsInRange:withObjectsFromArray:",_10b,_10c); +}else{ +splice.apply(self,[_10b.location,_10b.length].concat(objj_msgSend(_10c,"subarrayWithRange:",_10d))); +} +} +}),new objj_method(sel_getUid("replaceObjectsInRange:withObjectsFromArray:"),function(self,_10e,_10f,_110){ +with(self){ +splice.apply(self,[_10f.location,_10f.length].concat(_110)); +} +}),new objj_method(sel_getUid("setArray:"),function(self,_111,_112){ +with(self){ +if(self==_112){ +return; +} +splice.apply(self,[0,length].concat(_112)); +} +}),new objj_method(sel_getUid("removeAllObjects"),function(self,_113){ +with(self){ +splice(0,length); +} +}),new objj_method(sel_getUid("removeLastObject"),function(self,_114){ +with(self){ +pop(); +} +}),new objj_method(sel_getUid("removeObject:"),function(self,_115,_116){ +with(self){ +objj_msgSend(self,"removeObject:inRange:",_116,CPMakeRange(0,length)); +} +}),new objj_method(sel_getUid("removeObject:inRange:"),function(self,_117,_118,_119){ +with(self){ +var _11a; +while((_11a=objj_msgSend(self,"indexOfObject:inRange:",_118,_119))!=CPNotFound){ +objj_msgSend(self,"removeObjectAtIndex:",_11a); +_119=CPIntersectionRange(CPMakeRange(_11a,length-_11a),_119); +} +} +}),new objj_method(sel_getUid("removeObjectAtIndex:"),function(self,_11b,_11c){ +with(self){ +splice(_11c,1); +} +}),new objj_method(sel_getUid("removeObjectsAtIndexes:"),function(self,_11d,_11e){ +with(self){ +var _11f=objj_msgSend(_11e,"lastIndex"); +while(_11f!=CPNotFound){ +objj_msgSend(self,"removeObjectAtIndex:",_11f); +_11f=objj_msgSend(_11e,"indexLessThanIndex:",_11f); +} +} +}),new objj_method(sel_getUid("removeObjectIdenticalTo:"),function(self,_120,_121){ +with(self){ +objj_msgSend(self,"removeObjectIdenticalTo:inRange:",_121,CPMakeRange(0,objj_msgSend(self,"count"))); +} +}),new objj_method(sel_getUid("removeObjectIdenticalTo:inRange:"),function(self,_122,_123,_124){ +with(self){ +var _125,_126=objj_msgSend(self,"count"); +while((_125=objj_msgSend(self,"indexOfObjectIdenticalTo:inRange:",_123,_124))!==CPNotFound){ +objj_msgSend(self,"removeObjectAtIndex:",_125); +_124=CPIntersectionRange(CPMakeRange(_125,(--_126)-_125),_124); +} +} +}),new objj_method(sel_getUid("removeObjectsInArray:"),function(self,_127,_128){ +with(self){ +var _129=0,_12a=objj_msgSend(_128,"count"); +for(;_129<_12a;++_129){ +objj_msgSend(self,"removeObject:",_128[_129]); +} +} +}),new objj_method(sel_getUid("removeObjectsInRange:"),function(self,_12b,_12c){ +with(self){ +splice(_12c.location,_12c.length); +} +}),new objj_method(sel_getUid("exchangeObjectAtIndex:withObjectAtIndex:"),function(self,_12d,_12e,_12f){ +with(self){ +var _130=self[_12e]; +self[_12e]=self[_12f]; +self[_12f]=_130; +} +}),new objj_method(sel_getUid("sortUsingDescriptors:"),function(self,_131,_132){ +with(self){ +objj_msgSend(self,"sortUsingFunction:context:",_133,_132); +} +}),new objj_method(sel_getUid("sortUsingFunction:context:"),function(self,_134,_135,_136){ +with(self){ +var h,i,j,k,l,m,n=objj_msgSend(self,"count"),o; +var A,B=[]; +for(h=1;h=0;m-=h+h){ +l=m-h+1; +if(l<0){ +l=0; +} +for(i=0,j=l;j<=m;i++,j++){ +B[i]=self[j]; +} +for(i=0,k=l;k_string.length||_17===undefined){ +return CPNotFound; +} +var _18=function(_19,_1a){ +if(CPLocationInRange(_19,_1a.range)){ +return CPOrderedSame; +}else{ +if(CPMaxRange(_1a.range)<=_19){ +return CPOrderedDescending; +}else{ +return CPOrderedAscending; +} +} +}; +return objj_msgSend(_rangeEntries,"indexOfObject:sortedByFunction:",_17,_18); +} +}),new objj_method(sel_getUid("attributesAtIndex:effectiveRange:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +var _1f=objj_msgSend(_1b,"_indexOfEntryWithIndex:",_1d); +if(_1f==CPNotFound){ +return nil; +} +var _20=_rangeEntries[_1f]; +if(_1e){ +_1e.location=_20.range.location; +_1e.length=_20.range.length; +} +return _20.attributes; +} +}),new objj_method(sel_getUid("attributesAtIndex:longestEffectiveRange:inRange:"),function(_21,_22,_23,_24,_25){ +with(_21){ +var _26=objj_msgSend(_21,"_indexOfEntryWithIndex:",_23); +if(_26==CPNotFound){ +return nil; +} +if(!_24){ +return _rangeEntries[_26].attributes; +} +if(CPRangeInRange(_rangeEntries[_26].range,_25)){ +_24.location=_25.location; +_24.length=_25.length; +return _rangeEntries[_26].attributes; +} +var _27=_26-1,_28=_rangeEntries[_26],_29=_28.attributes; +while(_27>=0){ +var _2a=_rangeEntries[_27]; +if(CPMaxRange(_2a.range)>_25.location&&objj_msgSend(_2a.attributes,"isEqualToDictionary:",_29)){ +_28=_2a; +_27--; +}else{ +break; +} +} +_24.location=MAX(_28.range.location,_25.location); +_28=_rangeEntries[_26]; +_27=_26+1; +while(_27<_rangeEntries.length){ +var _2a=_rangeEntries[_27]; +if(_2a.range.location=0){ +var _3a=_rangeEntries[_37]; +if(CPMaxRange(_3a.range)>_35.location&&_3b(_39,objj_msgSend(_3a.attributes,"objectForKey:",_32))){ +_38=_3a; +_37--; +}else{ +break; +} +} +_34.location=MAX(_38.range.location,_35.location); +_38=_rangeEntries[_36]; +_37=_36+1; +while(_37<_rangeEntries.length){ +var _3a=_rangeEntries[_37]; +if(_3a.range.location0&&!objj_msgSend(_41,"isEqualToDictionary:",_42)){ +return NO; +} +if(CPMaxRange(_3f)_string.length||_49.location<0){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"tried to get attributedSubstring for an invalid range: "+(_49?CPStringFromRange(_49):"nil")); +} +var _4a=objj_msgSend(objj_msgSend(CPAttributedString,"alloc"),"initWithString:",_string.substring(_49.location,CPMaxRange(_49))),_4b=objj_msgSend(_47,"_indexOfEntryWithIndex:",_49.location),_4c=_rangeEntries[_4b],_4d=CPMaxRange(_49); +_4a._rangeEntries=[]; +while(_4c&&CPMaxRange(_4c.range)<_4d){ +var _4e=_4f(_4c); +_4e.range.location-=_49.location; +if(_4e.range.location<0){ +_4e.range.length+=_4e.range.location; +_4e.range.location=0; +} +_4a._rangeEntries.push(_4e); +_4c=_rangeEntries[++_4b]; +} +if(_4c){ +var _50=_4f(_4c); +_50.range.length=CPMaxRange(_49)-_50.range.location; +_50.range.location-=_49.location; +if(_50.range.location<0){ +_50.range.length+=_50.range.location; +_50.range.location=0; +} +_4a._rangeEntries.push(_50); +} +return _4a; +} +}),new objj_method(sel_getUid("replaceCharactersInRange:withString:"),function(_51,_52,_53,_54){ +with(_51){ +if(!_54){ +_54=""; +} +var _55=objj_msgSend(_51,"_indexOfEntryWithIndex:",_53.location),_56=_rangeEntries[_55],_57=objj_msgSend(_51,"_indexOfEntryWithIndex:",MAX(CPMaxRange(_53)-1,0)),_58=_rangeEntries[_57],_59=_54.length-_53.length; +_string=_string.substring(0,_53.location)+_54+_string.substring(CPMaxRange(_53)); +if(_55==_57){ +_56.range.length+=_59; +}else{ +_58.range.length=CPMaxRange(_58.range)-CPMaxRange(_53); +_58.range.location=CPMaxRange(_53); +_56.range.length=CPMaxRange(_53)-_56.range.location; +_rangeEntries.splice(_55,_57-_55); +} +_57=_55+1; +while(_57<_rangeEntries.length){ +_rangeEntries[_57++].range.location+=_59; +} +} +}),new objj_method(sel_getUid("deleteCharactersInRange:"),function(_5a,_5b,_5c){ +with(_5a){ +objj_msgSend(_5a,"replaceCharactersInRange:withString:",_5c,nil); +} +}),new objj_method(sel_getUid("setAttributes:range:"),function(_5d,_5e,_5f,_60){ +with(_5d){ +var _61=objj_msgSend(_5d,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",_60.location,YES),_62=objj_msgSend(_5d,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",CPMaxRange(_60),YES),_63=_61; +if(_62==CPNotFound){ +_62=_rangeEntries.length; +} +while(_63<_62){ +_rangeEntries[_63++].attributes=objj_msgSend(_5f,"copy"); +} +objj_msgSend(_5d,"_coalesceRangeEntriesFromIndex:toIndex:",_61,_62); +} +}),new objj_method(sel_getUid("addAttributes:range:"),function(_64,_65,_66,_67){ +with(_64){ +var _68=objj_msgSend(_64,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",_67.location,YES),_69=objj_msgSend(_64,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",CPMaxRange(_67),YES),_6a=_68; +if(_69==CPNotFound){ +_69=_rangeEntries.length; +} +while(_6a<_69){ +var _6b=objj_msgSend(_66,"allKeys"),_6c=objj_msgSend(_6b,"count"); +while(_6c--){ +objj_msgSend(_rangeEntries[_6a].attributes,"setObject:forKey:",objj_msgSend(_66,"objectForKey:",_6b[_6c]),_6b[_6c]); +} +_6a++; +} +objj_msgSend(_64,"_coalesceRangeEntriesFromIndex:toIndex:",_68,_69); +} +}),new objj_method(sel_getUid("addAttribute:value:range:"),function(_6d,_6e,_6f,_70,_71){ +with(_6d){ +objj_msgSend(_6d,"addAttributes:range:",objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_70,_6f),_71); +} +}),new objj_method(sel_getUid("removeAttribute:range:"),function(_72,_73,_74,_75){ +with(_72){ +var _76=objj_msgSend(_72,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",_75.location,YES),_77=objj_msgSend(_72,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",CPMaxRange(_75),YES),_78=_76; +if(_77==CPNotFound){ +_77=_rangeEntries.length; +} +while(_78<_77){ +objj_msgSend(_rangeEntries[_78++].attributes,"removeObjectForKey:",_74); +} +objj_msgSend(_72,"_coalesceRangeEntriesFromIndex:toIndex:",_76,_77); +} +}),new objj_method(sel_getUid("appendAttributedString:"),function(_79,_7a,_7b){ +with(_79){ +objj_msgSend(_79,"insertAttributedString:atIndex:",_7b,_string.length); +} +}),new objj_method(sel_getUid("insertAttributedString:atIndex:"),function(_7c,_7d,_7e,_7f){ +with(_7c){ +if(_7f<0||_7f>objj_msgSend(_7c,"length")){ +objj_msgSend(CPException,"raise:reason:",CPRangeException,"tried to insert attributed string at an invalid index: "+_7f); +} +var _80=objj_msgSend(_7c,"_indexOfRangeEntryForIndex:splitOnMaxIndex:",_7f,YES),_81=_7e._rangeEntries,_82=objj_msgSend(_7e,"length"); +if(_80==CPNotFound){ +_80=_rangeEntries.length; +} +_string=_string.substring(0,_7f)+_7e._string+_string.substring(_7f); +var _83=_80; +while(_83<_rangeEntries.length){ +_rangeEntries[_83++].range.location+=_82; +} +var _84=_81.length,_85=0; +while(_85<_84){ +var _86=_4f(_81[_85++]); +_86.range.location+=_7f; +_rangeEntries.splice(_80-1+_85,0,_86); +} +} +}),new objj_method(sel_getUid("replaceCharactersInRange:withAttributedString:"),function(_87,_88,_89,_8a){ +with(_87){ +objj_msgSend(_87,"deleteCharactersInRange:",_89); +objj_msgSend(_87,"insertAttributedString:atIndex:",_8a,_89.location); +} +}),new objj_method(sel_getUid("setAttributedString:"),function(_8b,_8c,_8d){ +with(_8b){ +_string=_8d._string; +_rangeEntries=[]; +var i=0,_8e=_8d._rangeEntries.length; +for(;i<_8e;i++){ +_rangeEntries.push(_4f(_8d._rangeEntries[i])); +} +} +}),new objj_method(sel_getUid("_indexOfRangeEntryForIndex:splitOnMaxIndex:"),function(_8f,_90,_91,_92){ +with(_8f){ +var _93=objj_msgSend(_8f,"_indexOfEntryWithIndex:",_91); +if(_93<0){ +return _93; +} +var _94=_rangeEntries[_93]; +if(_94.range.location==_91||(CPMaxRange(_94.range)-1==_91&&!_92)){ +return _93; +} +var _95=splitRangeEntryAtIndex(_94,_91); +_rangeEntries.splice(_93,1,_95[0],_95[1]); +_93++; +return _93; +} +}),new objj_method(sel_getUid("_coalesceRangeEntriesFromIndex:toIndex:"),function(_96,_97,_98,end){ +with(_96){ +var _99=_98; +if(end>=_rangeEntries.length){ +end=_rangeEntries.length-1; +} +while(_990&&objj_msgSend(set,"characterIsMember:",_69.charAt(_6d))){ +_6d--; +} +str=str.substr(0,_6d+1); +} +return str; +} +})]); +alphanumericCharacterSet=[48,10,65,26,97,26,170,1,178,2,181,1,185,2,188,3,192,23,216,31,248,458,710,12,736,5,750,1,768,112,890,4,902,1,904,3,908,1,910,20,931,44,976,38,1015,139,1155,4,1160,140,1329,38,1369,1,1377,39,1425,45,1471,1,1473,2,1476,2,1479,1,1488,27,1520,3,1552,6,1569,26,1600,31,1632,10,1646,102,1749,8,1758,11,1770,19,1791,1,1808,59,1869,33,1920,50,1984,54,2042,1,2305,57,2364,18,2384,5,2392,12,2406,10,2427,5,2433,3,2437,8,2447,2,2451,22,2474,7,2482,1,2486,4,2492,9,2503,2,2507,4,2519,1,2524,2,2527,5,2534,12,2548,6,2561,3,2565,6,2575,2,2579,22,2602,7,2610,2,2613,2,2616,2,2620,1,2622,5,2631,2,2635,3,2649,4,2654,1,2662,15,2689,3,2693,9,2703,3,2707,22,2730,7,2738,2,2741,5,2748,10,2759,3,2763,3,2768,1,2784,4,2790,10,2817,3,2821,8,2831,2,2835,22,2858,7,2866,2,2869,5,2876,8,2887,2,2891,3,2902,2,2908,2,2911,3,2918,10,2929,1,2946,2,2949,6,2958,3,2962,4,2969,2,2972,1,2974,2,2979,2,2984,3,2990,12,3006,5,3014,3,3018,4,3031,1,3046,13,3073,3,3077,8,3086,3,3090,23,3114,10,3125,5,3134,7,3142,3,3146,4,3157,2,3168,2,3174,10,3202,2,3205,8,3214,3,3218,23,3242,10,3253,5,3260,9,3270,3,3274,4,3285,2,3294,1,3296,4,3302,10,3330,2,3333,8,3342,3,3346,23,3370,16,3390,6,3398,3,3402,4,3415,1,3424,2,3430,10,3458,2,3461,18,3482,24,3507,9,3517,1,3520,7,3530,1,3535,6,3542,1,3544,8,3570,2,3585,58,3648,15,3664,10,3713,2,3716,1,3719,2,3722,1,3725,1,3732,4,3737,7,3745,3,3749,1,3751,1,3754,2,3757,13,3771,3,3776,5,3782,1,3784,6,3792,10,3804,2,3840,1,3864,2,3872,20,3893,1,3895,1,3897,1,3902,10,3913,34,3953,20,3974,6,3984,8,3993,36,4038,1,4096,34,4131,5,4137,2,4140,7,4150,4,4160,10,4176,10,4256,38,4304,43,4348,1,4352,90,4447,68,4520,82,4608,73,4682,4,4688,7,4696,1,4698,4,4704,41,4746,4,4752,33,4786,4,4792,7,4800,1,4802,4,4808,15,4824,57,4882,4,4888,67,4959,1,4969,20,4992,16,5024,85,5121,620,5743,8,5761,26,5792,75,5870,3,5888,13,5902,7,5920,21,5952,20,5984,13,5998,3,6002,2,6016,52,6070,30,6103,1,6108,2,6112,10,6128,10,6155,3,6160,10,6176,88,6272,42,6400,29,6432,12,6448,12,6470,40,6512,5,6528,42,6576,26,6608,10,6656,28,6912,76,6992,10,7019,9,7424,203,7678,158,7840,90,7936,22,7960,6,7968,38,8008,6,8016,8,8025,1,8027,1,8029,1,8031,31,8064,53,8118,7,8126,1,8130,3,8134,7,8144,4,8150,6,8160,13,8178,3,8182,7,8304,2,8308,6,8319,11,8336,5,8400,32,8450,1,8455,1,8458,10,8469,1,8473,5,8484,1,8486,1,8488,1,8490,4,8495,11,8508,4,8517,5,8526,1,8531,50,9312,60,9450,22,10102,30,11264,47,11312,47,11360,13,11380,4,11392,101,11517,1,11520,38,11568,54,11631,1,11648,23,11680,7,11688,7,11696,7,11704,7,11712,7,11720,7,11728,7,11736,7,12293,3,12321,15,12337,5,12344,5,12353,86,12441,2,12445,3,12449,90,12540,4,12549,40,12593,94,12690,4,12704,24,12784,16,12832,10,12881,15,12928,10,12977,15,13312,6582,19968,20924,40960,1165,42775,4,43008,40,43072,52,44032,11172,63744,302,64048,59,64112,106,64256,7,64275,5,64285,12,64298,13,64312,5,64318,1,64320,2,64323,2,64326,108,64467,363,64848,64,64914,54,65008,12,65024,16,65056,4,65136,5,65142,135,65296,10,65313,26,65345,26,65382,89,65474,6,65482,6,65490,6]; +controlCharacterSet=[0,32,127,33,173,1,1536,4,1757,1,1807,1,6068,2,8203,5,8234,5,8288,4,8298,6,65279,1]; +decimalDigitCharacterSet=[48,10,1632,10,1776,10,1984,10,2406,10,2534,10,2662,10,2790,10,2918,10,3046,10,3174,10,3302,10,3430,10,3664,10,3792,10,3872,10,4160,10,6112,10,6160,10,6470,10,6608,10,6992,10]; +decomposableCharacterSet=[192,6,199,9,209,6,217,5,224,6,231,9,241,6,249,5,255,17,274,20,296,9,308,4,313,6,323,6,332,6,340,18,360,23,416,2,431,2,461,16,478,6,486,11,500,2,504,36,542,2,550,14,832,2,835,2,884,1,894,1,901,6,908,1,910,3,938,7,970,5,979,2,1024,2,1027,1,1031,1,1036,3,1049,1,1081,1,1104,2,1107,1,1111,1,1116,3,1142,2,1217,2,1232,4,1238,2,1242,6,1250,6,1258,12,1272,2,1570,5,1728,1,1730,1,1747,1,2345,1,2353,1,2356,1,2392,8,2507,2,2524,2,2527,1,2611,1,2614,1,2649,3,2654,1,2888,1,2891,2,2908,2,2964,1,3018,3,3144,1,3264,1,3271,2,3274,2,3402,3,3546,1,3548,3,3907,1,3917,1,3922,1,3927,1,3932,1,3945,1,3955,1,3957,2,3960,1,3969,1,3987,1,3997,1,4002,1,4007,1,4012,1,4025,1,4134,1,6918,1,6920,1,6922,1,6924,1,6926,1,6930,1,6971,1,6973,1,6976,2,6979,1,7680,154,7835,1,7840,90,7936,22,7960,6,7968,38,8008,6,8016,8,8025,1,8027,1,8029,1,8031,31,8064,53,8118,7,8126,1,8129,4,8134,14,8150,6,8157,19,8178,3,8182,8,8192,2,8486,1,8490,2,8602,2,8622,1,8653,3,8708,1,8713,1,8716,1,8740,1,8742,1,8769,1,8772,1,8775,1,8777,1,8800,1,8802,1,8813,5,8820,2,8824,2,8832,2,8836,2,8840,2,8876,4,8928,4,8938,4,9001,2,10972,1,12364,1,12366,1,12368,1,12370,1,12372,1,12374,1,12376,1,12378,1,12380,1,12382,1,12384,1,12386,1,12389,1,12391,1,12393,1,12400,2,12403,2,12406,2,12409,2,12412,2,12436,1,12446,1,12460,1,12462,1,12464,1,12466,1,12468,1,12470,1,12472,1,12474,1,12476,1,12478,1,12480,1,12482,1,12485,1,12487,1,12489,1,12496,2,12499,2,12502,2,12505,2,12508,2,12532,1,12535,4,12542,1,44032,11172,63744,270,64016,1,64018,1,64021,10,64032,1,64034,1,64037,2,64042,4,64048,59,64112,106,64285,1,64287,1,64298,13,64312,5,64318,1,64320,2,64323,2]; +illegalCharacterSet=[880,4,886,4,895,5,907,1,909,1,930,1,975,1,1159,1,1300,29,1367,2,1376,1,1416,1,1419,6,1480,8,1515,5,1525,11,1540,7,1558,5,1564,2,1568,1,1595,5,1631,1,1806,1,1867,2,1902,18,1970,14,2043,262,2362,2,2382,2,2389,3,2417,10,2432,1,2436,1,2445,2,2449,2,2473,1,2481,1,2483,3,2490,2,2501,2,2505,2,2511,8,2520,4,2526,1,2532,2,2555,6,2564,1,2571,4,2577,2,2601,1,2609,1,2612,1,2615,1,2618,2,2621,1,2627,4,2633,2,2638,11,2653,1,2655,7,2677,12,2692,1,2702,1,2706,1,2729,1,2737,1,2740,1,2746,2,2758,1,2762,1,2766,2,2769,15,2788,2,2800,1,2802,15,2820,1,2829,2,2833,2,2857,1,2865,1,2868,1,2874,2,2884,3,2889,2,2894,8,2904,4,2910,1,2914,4,2930,16,2948,1,2955,3,2961,1,2966,3,2971,1,2973,1,2976,3,2981,3,2987,3,3002,4,3011,3,3017,1,3022,9,3032,14,3067,6,3076,1,3085,1,3089,1,3113,1,3124,1,3130,4,3141,1,3145,1,3150,7,3159,9,3170,4,3184,18,3204,1,3213,1,3217,1,3241,1,3252,1,3258,2,3269,1,3273,1,3278,7,3287,7,3295,1,3300,2,3312,1,3315,15,3332,1,3341,1,3345,1,3369,1,3386,4,3396,2,3401,1,3406,9,3416,8,3426,4,3440,18,3460,1,3479,3,3506,1,3516,1,3518,2,3527,3,3531,4,3541,1,3543,1,3552,18,3573,12,3643,4,3676,37,3715,1,3717,2,3721,1,3723,2,3726,6,3736,1,3744,1,3748,1,3750,1,3752,2,3756,1,3770,1,3774,2,3781,1,3783,1,3790,2,3802,2,3806,34,3912,1,3947,6,3980,4,3992,1,4029,1,4045,2,4050,46,4130,1,4136,1,4139,1,4147,3,4154,6,4186,70,4294,10,4349,3,4442,5,4515,5,4602,6,4681,1,4686,2,4695,1,4697,1,4702,2,4745,1,4750,2,4785,1,4790,2,4799,1,4801,1,4806,2,4823,1,4881,1,4886,2,4955,4,4989,3,5018,6,5109,12,5751,9,5789,3,5873,15,5901,1,5909,11,5943,9,5972,12,5997,1,6001,1,6004,12,6110,2,6122,6,6138,6,6159,1,6170,6,6264,8,6314,86,6429,3,6444,4,6460,4,6465,3,6510,2,6517,11,6570,6,6602,6,6618,4,6684,2,6688,224,6988,4,7037,387,7627,51,7836,4,7930,6,7958,2,7966,2,8006,2,8014,2,8024,1,8026,1,8028,1,8030,1,8062,2,8117,1,8133,1,8148,2,8156,1,8176,2,8181,1,8191,1,8292,6,8306,2,8335,1,8341,11,8374,26,8432,16,8527,4,8581,11,9192,24,9255,25,9291,21,9885,3,9907,78,9989,1,9994,2,10024,1,10060,1,10062,1,10067,3,10071,1,10079,2,10133,3,10160,1,10175,1,10187,5,10220,4,11035,5,11044,220,11311,1,11359,1,11373,7,11384,8,11499,14,11558,10,11622,9,11632,16,11671,9,11687,1,11695,1,11703,1,11711,1,11719,1,11727,1,11735,1,11743,33,11800,4,11806,98,11930,1,12020,12,12246,26,12284,4,12352,1,12439,2,12544,5,12589,4,12687,1,12728,8,12752,32,12831,1,12868,12,13055,1,19894,10,40892,68,42125,3,42183,569,42779,5,42786,222,43052,20,43128,904,55204,92,64046,2,64107,5,64218,38,64263,12,64280,5,64311,1,64317,1,64319,1,64322,1,64325,1,64434,33,64832,16,64912,2,64968,40,65022,2,65050,6,65060,12,65107,1,65127,1,65132,4,65141,1,65277,2,65280,1,65471,3,65480,2,65488,2,65496,2,65501,3,65511,1,65519,10]; +letterCharacterSet=[65,26,97,26,170,1,181,1,186,1,192,23,216,31,248,458,710,12,736,5,750,1,768,112,890,4,902,1,904,3,908,1,910,20,931,44,976,38,1015,139,1155,4,1160,140,1329,38,1369,1,1377,39,1425,45,1471,1,1473,2,1476,2,1479,1,1488,27,1520,3,1552,6,1569,26,1600,31,1646,102,1749,8,1758,11,1770,6,1786,3,1791,1,1808,59,1869,33,1920,50,1994,44,2042,1,2305,57,2364,18,2384,5,2392,12,2427,5,2433,3,2437,8,2447,2,2451,22,2474,7,2482,1,2486,4,2492,9,2503,2,2507,4,2519,1,2524,2,2527,5,2544,2,2561,3,2565,6,2575,2,2579,22,2602,7,2610,2,2613,2,2616,2,2620,1,2622,5,2631,2,2635,3,2649,4,2654,1,2672,5,2689,3,2693,9,2703,3,2707,22,2730,7,2738,2,2741,5,2748,10,2759,3,2763,3,2768,1,2784,4,2817,3,2821,8,2831,2,2835,22,2858,7,2866,2,2869,5,2876,8,2887,2,2891,3,2902,2,2908,2,2911,3,2929,1,2946,2,2949,6,2958,3,2962,4,2969,2,2972,1,2974,2,2979,2,2984,3,2990,12,3006,5,3014,3,3018,4,3031,1,3073,3,3077,8,3086,3,3090,23,3114,10,3125,5,3134,7,3142,3,3146,4,3157,2,3168,2,3202,2,3205,8,3214,3,3218,23,3242,10,3253,5,3260,9,3270,3,3274,4,3285,2,3294,1,3296,4,3330,2,3333,8,3342,3,3346,23,3370,16,3390,6,3398,3,3402,4,3415,1,3424,2,3458,2,3461,18,3482,24,3507,9,3517,1,3520,7,3530,1,3535,6,3542,1,3544,8,3570,2,3585,58,3648,15,3713,2,3716,1,3719,2,3722,1,3725,1,3732,4,3737,7,3745,3,3749,1,3751,1,3754,2,3757,13,3771,3,3776,5,3782,1,3784,6,3804,2,3840,1,3864,2,3893,1,3895,1,3897,1,3902,10,3913,34,3953,20,3974,6,3984,8,3993,36,4038,1,4096,34,4131,5,4137,2,4140,7,4150,4,4176,10,4256,38,4304,43,4348,1,4352,90,4447,68,4520,82,4608,73,4682,4,4688,7,4696,1,4698,4,4704,41,4746,4,4752,33,4786,4,4792,7,4800,1,4802,4,4808,15,4824,57,4882,4,4888,67,4959,1,4992,16,5024,85,5121,620,5743,8,5761,26,5792,75,5888,13,5902,7,5920,21,5952,20,5984,13,5998,3,6002,2,6016,52,6070,30,6103,1,6108,2,6155,3,6176,88,6272,42,6400,29,6432,12,6448,12,6480,30,6512,5,6528,42,6576,26,6656,28,6912,76,7019,9,7424,203,7678,158,7840,90,7936,22,7960,6,7968,38,8008,6,8016,8,8025,1,8027,1,8029,1,8031,31,8064,53,8118,7,8126,1,8130,3,8134,7,8144,4,8150,6,8160,13,8178,3,8182,7,8305,1,8319,1,8336,5,8400,32,8450,1,8455,1,8458,10,8469,1,8473,5,8484,1,8486,1,8488,1,8490,4,8495,11,8508,4,8517,5,8526,1,8579,2,11264,47,11312,47,11360,13,11380,4,11392,101,11520,38,11568,54,11631,1,11648,23,11680,7,11688,7,11696,7,11704,7,11712,7,11720,7,11728,7,11736,7,12293,2,12330,6,12337,5,12347,2,12353,86,12441,2,12445,3,12449,90,12540,4,12549,40,12593,94,12704,24,12784,16,13312,6582,19968,20924,40960,1165,42775,4,43008,40,43072,52,44032,11172,63744,302,64048,59,64112,106,64256,7,64275,5,64285,12,64298,13,64312,5,64318,1,64320,2,64323,2,64326,108,64467,363,64848,64,64914,54,65008,12,65024,16,65056,4,65136,5,65142,135,65313,26,65345,26,65382,89,65474,6,65482,6,65490,6]; +lowercaseLetterCharacterSet=[97,26,170,1,181,1,186,1,223,24,248,8,257,1,259,1,261,1,263,1,265,1,267,1,269,1,271,1,273,1,275,1,277,1,279,1,281,1,283,1,285,1,287,1,289,1,291,1,293,1,295,1,297,1,299,1,301,1,303,1,305,1,307,1,309,1,311,2,314,1,316,1,318,1,320,1,322,1,324,1,326,1,328,2,331,1,333,1,335,1,337,1,339,1,341,1,343,1,345,1,347,1,349,1,351,1,353,1,355,1,357,1,359,1,361,1,363,1,365,1,367,1,369,1,371,1,373,1,375,1,378,1,380,1,382,3,387,1,389,1,392,1,396,2,402,1,405,1,409,3,414,1,417,1,419,1,421,1,424,1,426,2,429,1,432,1,436,1,438,1,441,2,445,3,454,1,457,1,460,1,462,1,464,1,466,1,468,1,470,1,472,1,474,1,476,2,479,1,481,1,483,1,485,1,487,1,489,1,491,1,493,1,495,2,499,1,501,1,505,1,507,1,509,1,511,1,513,1,515,1,517,1,519,1,521,1,523,1,525,1,527,1,529,1,531,1,533,1,535,1,537,1,539,1,541,1,543,1,545,1,547,1,549,1,551,1,553,1,555,1,557,1,559,1,561,1,563,7,572,1,575,2,578,1,583,1,585,1,587,1,589,1,591,69,661,27,891,3,912,1,940,35,976,2,981,3,985,1,987,1,989,1,991,1,993,1,995,1,997,1,999,1,1001,1,1003,1,1005,1,1007,5,1013,1,1016,1,1019,2,1072,48,1121,1,1123,1,1125,1,1127,1,1129,1,1131,1,1133,1,1135,1,1137,1,1139,1,1141,1,1143,1,1145,1,1147,1,1149,1,1151,1,1153,1,1163,1,1165,1,1167,1,1169,1,1171,1,1173,1,1175,1,1177,1,1179,1,1181,1,1183,1,1185,1,1187,1,1189,1,1191,1,1193,1,1195,1,1197,1,1199,1,1201,1,1203,1,1205,1,1207,1,1209,1,1211,1,1213,1,1215,1,1218,1,1220,1,1222,1,1224,1,1226,1,1228,1,1230,2,1233,1,1235,1,1237,1,1239,1,1241,1,1243,1,1245,1,1247,1,1249,1,1251,1,1253,1,1255,1,1257,1,1259,1,1261,1,1263,1,1265,1,1267,1,1269,1,1271,1,1273,1,1275,1,1277,1,1279,1,1281,1,1283,1,1285,1,1287,1,1289,1,1291,1,1293,1,1295,1,1297,1,1299,1,1377,39,7424,44,7522,22,7545,34,7681,1,7683,1,7685,1,7687,1,7689,1,7691,1,7693,1,7695,1,7697,1,7699,1,7701,1,7703,1,7705,1,7707,1,7709,1,7711,1,7713,1,7715,1,7717,1,7719,1,7721,1,7723,1,7725,1,7727,1,7729,1,7731,1,7733,1,7735,1,7737,1,7739,1,7741,1,7743,1,7745,1,7747,1,7749,1,7751,1,7753,1,7755,1,7757,1,7759,1,7761,1,7763,1,7765,1,7767,1,7769,1,7771,1,7773,1,7775,1,7777,1,7779,1,7781,1,7783,1,7785,1,7787,1,7789,1,7791,1,7793,1,7795,1,7797,1,7799,1,7801,1,7803,1,7805,1,7807,1,7809,1,7811,1,7813,1,7815,1,7817,1,7819,1,7821,1,7823,1,7825,1,7827,1,7829,7,7841,1,7843,1,7845,1,7847,1,7849,1,7851,1,7853,1,7855,1,7857,1,7859,1,7861,1,7863,1,7865,1,7867,1,7869,1,7871,1,7873,1,7875,1,7877,1,7879,1,7881,1,7883,1,7885,1,7887,1,7889,1,7891,1,7893,1,7895,1,7897,1,7899,1,7901,1,7903,1,7905,1,7907,1,7909,1,7911,1,7913,1,7915,1,7917,1,7919,1,7921,1,7923,1,7925,1,7927,1,7929,1,7936,8,7952,6,7968,8,7984,8,8000,6,8016,8,8032,8,8048,14,8064,8,8080,8,8096,8,8112,5,8118,2,8126,1,8130,3,8134,2,8144,4,8150,2,8160,8,8178,3,8182,2,8305,1,8319,1,8458,1,8462,2,8467,1,8495,1,8500,1,8505,1,8508,2,8518,4,8526,1,8580,1,11312,47,11361,1,11365,2,11368,1,11370,1,11372,1,11380,1,11382,2,11393,1,11395,1,11397,1,11399,1,11401,1,11403,1,11405,1,11407,1,11409,1,11411,1,11413,1,11415,1,11417,1,11419,1,11421,1,11423,1,11425,1,11427,1,11429,1,11431,1,11433,1,11435,1,11437,1,11439,1,11441,1,11443,1,11445,1,11447,1,11449,1,11451,1,11453,1,11455,1,11457,1,11459,1,11461,1,11463,1,11465,1,11467,1,11469,1,11471,1,11473,1,11475,1,11477,1,11479,1,11481,1,11483,1,11485,1,11487,1,11489,1,11491,2,11520,38,64256,7,64275,5]; +nonBaseCharacterSet=[768,112,1155,4,1160,2,1425,45,1471,1,1473,2,1476,2,1479,1,1552,6,1611,20,1648,1,1750,7,1758,7,1767,2,1770,4,1809,1,1840,27,1958,11,2027,9,2305,3,2364,1,2366,16,2385,4,2402,2,2433,3,2492,1,2494,7,2503,2,2507,3,2519,1,2530,2,2561,3,2620,1,2622,5,2631,2,2635,3,2672,2,2689,3,2748,1,2750,8,2759,3,2763,3,2786,2,2817,3,2876,1,2878,6,2887,2,2891,3,2902,2,2946,1,3006,5,3014,3,3018,4,3031,1,3073,3,3134,7,3142,3,3146,4,3157,2,3202,2,3260,1,3262,7,3270,3,3274,4,3285,2,3298,2,3330,2,3390,6,3398,3,3402,4,3415,1,3458,2,3530,1,3535,6,3542,1,3544,8,3570,2,3633,1,3636,7,3655,8,3761,1,3764,6,3771,2,3784,6,3864,2,3893,1,3895,1,3897,1,3902,2,3953,20,3974,2,3984,8,3993,36,4038,1,4140,7,4150,4,4182,4,4959,1,5906,3,5938,3,5970,2,6002,2,6070,30,6109,1,6155,3,6313,1,6432,12,6448,12,6576,17,6600,2,6679,5,6912,5,6964,17,7019,9,7616,11,7678,2,8400,32,12330,6,12441,2,43010,1,43014,1,43019,1,43043,5,64286,1,65024,16]; +punctuationCharacterSet=[33,3,37,6,44,4,58,2,63,2,91,3,95,1,123,1,125,1,161,1,171,1,183,1,187,1,191,1,894,1,903,1,1370,6,1417,2,1470,1,1472,1,1475,1,1478,1,1523,2,1548,2,1563,1,1566,2,1642,4,1748,1,1792,14,2039,3,2404,2,2416,1,3572,1,3663,1,3674,2,3844,15,3898,4,3973,1,4048,2,4170,6,4347,1,4961,8,5741,2,5787,2,5867,3,5941,2,6100,3,6104,3,6144,11,6468,2,6622,2,6686,2,7002,7,8208,24,8240,20,8261,13,8275,12,8317,2,8333,2,9001,2,10088,14,10181,2,10214,6,10627,22,10712,4,10748,2,11513,4,11518,2,11776,24,11804,2,12289,3,12296,10,12308,12,12336,1,12349,1,12448,1,12539,1,43124,4,64830,2,65040,10,65072,35,65108,14,65123,1,65128,1,65130,2,65281,3,65285,6,65292,4,65306,2,65311,2,65339,3,65343,1,65371,1,65373,1]; +uppercaseLetterCharacterSet=[65,26,192,23,216,7,256,1,258,1,260,1,262,1,264,1,266,1,268,1,270,1,272,1,274,1,276,1,278,1,280,1,282,1,284,1,286,1,288,1,290,1,292,1,294,1,296,1,298,1,300,1,302,1,304,1,306,1,308,1,310,1,313,1,315,1,317,1,319,1,321,1,323,1,325,1,327,1,330,1,332,1,334,1,336,1,338,1,340,1,342,1,344,1,346,1,348,1,350,1,352,1,354,1,356,1,358,1,360,1,362,1,364,1,366,1,368,1,370,1,372,1,374,1,376,2,379,1,381,1,385,2,388,1,390,2,393,3,398,4,403,2,406,3,412,2,415,2,418,1,420,1,422,2,425,1,428,1,430,2,433,3,437,1,439,2,444,1,452,2,455,2,458,2,461,1,463,1,465,1,467,1,469,1,471,1,473,1,475,1,478,1,480,1,482,1,484,1,486,1,488,1,490,1,492,1,494,1,497,2,500,1,502,3,506,1,508,1,510,1,512,1,514,1,516,1,518,1,520,1,522,1,524,1,526,1,528,1,530,1,532,1,534,1,536,1,538,1,540,1,542,1,544,1,546,1,548,1,550,1,552,1,554,1,556,1,558,1,560,1,562,1,570,2,573,2,577,1,579,4,584,1,586,1,588,1,590,1,902,1,904,3,908,1,910,2,913,17,931,9,978,3,984,1,986,1,988,1,990,1,992,1,994,1,996,1,998,1,1000,1,1002,1,1004,1,1006,1,1012,1,1015,1,1017,2,1021,51,1120,1,1122,1,1124,1,1126,1,1128,1,1130,1,1132,1,1134,1,1136,1,1138,1,1140,1,1142,1,1144,1,1146,1,1148,1,1150,1,1152,1,1162,1,1164,1,1166,1,1168,1,1170,1,1172,1,1174,1,1176,1,1178,1,1180,1,1182,1,1184,1,1186,1,1188,1,1190,1,1192,1,1194,1,1196,1,1198,1,1200,1,1202,1,1204,1,1206,1,1208,1,1210,1,1212,1,1214,1,1216,2,1219,1,1221,1,1223,1,1225,1,1227,1,1229,1,1232,1,1234,1,1236,1,1238,1,1240,1,1242,1,1244,1,1246,1,1248,1,1250,1,1252,1,1254,1,1256,1,1258,1,1260,1,1262,1,1264,1,1266,1,1268,1,1270,1,1272,1,1274,1,1276,1,1278,1,1280,1,1282,1,1284,1,1286,1,1288,1,1290,1,1292,1,1294,1,1296,1,1298,1,1329,38,4256,38,7680,1,7682,1,7684,1,7686,1,7688,1,7690,1,7692,1,7694,1,7696,1,7698,1,7700,1,7702,1,7704,1,7706,1,7708,1,7710,1,7712,1,7714,1,7716,1,7718,1,7720,1,7722,1,7724,1,7726,1,7728,1,7730,1,7732,1,7734,1,7736,1,7738,1,7740,1,7742,1,7744,1,7746,1,7748,1,7750,1,7752,1,7754,1,7756,1,7758,1,7760,1,7762,1,7764,1,7766,1,7768,1,7770,1,7772,1,7774,1,7776,1,7778,1,7780,1,7782,1,7784,1,7786,1,7788,1,7790,1,7792,1,7794,1,7796,1,7798,1,7800,1,7802,1,7804,1,7806,1,7808,1,7810,1,7812,1,7814,1,7816,1,7818,1,7820,1,7822,1,7824,1,7826,1,7828,1,7840,1,7842,1,7844,1,7846,1,7848,1,7850,1,7852,1,7854,1,7856,1,7858,1,7860,1,7862,1,7864,1,7866,1,7868,1,7870,1,7872,1,7874,1,7876,1,7878,1,7880,1,7882,1,7884,1,7886,1,7888,1,7890,1,7892,1,7894,1,7896,1,7898,1,7900,1,7902,1,7904,1,7906,1,7908,1,7910,1,7912,1,7914,1,7916,1,7918,1,7920,1,7922,1,7924,1,7926,1,7928,1,7944,8,7960,6,7976,8,7992,8,8008,6,8025,1,8027,1,8029,1,8031,1,8040,8,8072,8,8088,8,8104,8,8120,5,8136,5,8152,4,8168,5,8184,5,8450,1,8455,1,8459,3,8464,3,8469,1,8473,5,8484,1,8486,1,8488,1,8490,4,8496,4,8510,2,8517,1,8579,1,11264,47,11360,1,11362,3,11367,1,11369,1,11371,1,11381,1,11392,1,11394,1,11396,1,11398,1,11400,1,11402,1,11404,1,11406,1,11408,1,11410,1,11412,1,11414,1,11416,1,11418,1,11420,1,11422,1,11424,1,11426,1,11428,1,11430,1,11432,1,11434,1,11436,1,11438,1,11440,1,11442,1,11444,1,11446,1,11448,1,11450,1,11452,1,11454,1,11456,1,11458,1,11460,1,11462,1,11464,1,11466,1,11468,1,11470,1,11472,1,11474,1,11476,1,11478,1,11480,1,11482,1,11484,1,11486,1,11488,1,11490,1]; +whitespaceAndNewlineCharacterSet=[9,5,32,1,133,1,160,1,5760,1,8192,12,8232,2,8239,1,8287,1]; +whitespaceCharacterSet=[9,1,32,1,160,1,5760,1,8192,12,8239,1,8287,1]; +p;9;CPCoder.jt;1892;@STATIC;1.0;i;13;CPException.ji;10;CPObject.jt;1840; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPCoder"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("allowsKeyedCoding"),function(_3,_4){ +with(_3){ +return NO; +} +}),new objj_method(sel_getUid("encodeValueOfObjCType:at:"),function(_5,_6,_7,_8){ +with(_5){ +CPInvalidAbstractInvocation(); +} +}),new objj_method(sel_getUid("encodeDataObject:"),function(_9,_a,_b){ +with(_9){ +CPInvalidAbstractInvocation(); +} +}),new objj_method(sel_getUid("encodeObject:"),function(_c,_d,_e){ +with(_c){ +} +}),new objj_method(sel_getUid("encodePoint:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_f,"encodeNumber:",_11.x); +objj_msgSend(_f,"encodeNumber:",_11.y); +} +}),new objj_method(sel_getUid("encodeRect:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_12,"encodePoint:",_14.origin); +objj_msgSend(_12,"encodeSize:",_14.size); +} +}),new objj_method(sel_getUid("encodeSize:"),function(_15,_16,_17){ +with(_15){ +objj_msgSend(_15,"encodeNumber:",_17.width); +objj_msgSend(_15,"encodeNumber:",_17.height); +} +}),new objj_method(sel_getUid("encodePropertyList:"),function(_18,_19,_1a){ +with(_18){ +} +}),new objj_method(sel_getUid("encodeRootObject:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"encodeObject:",_1d); +} +}),new objj_method(sel_getUid("encodeBycopyObject:"),function(_1e,_1f,_20){ +with(_1e){ +objj_msgSend(_1e,"encodeObject:",_20); +} +}),new objj_method(sel_getUid("encodeConditionalObject:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(_21,"encodeObject:",_23); +} +})]); +var _1=objj_getClass("CPObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("awakeAfterUsingCoder:"),function(_24,_25,_26){ +with(_24){ +return _24; +} +})]); +p;14;CPCountedSet.jt;1287;@STATIC;1.0;i;7;CPSet.jt;1257; +objj_executeFile("CPSet.j",YES); +var _1=objj_allocateClassPair(CPMutableSet,"CPCountedSet"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_counts")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("addObject:"),function(_3,_4,_5){ +with(_3){ +if(!_counts){ +_counts={}; +} +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPCountedSet").super_class},"addObject:",_5); +var _6=objj_msgSend(_5,"UID"); +if(_counts[_6]===undefined){ +_counts[_6]=1; +}else{ +++_counts[_6]; +} +} +}),new objj_method(sel_getUid("removeObject:"),function(_7,_8,_9){ +with(_7){ +if(!_counts){ +return; +} +var _a=objj_msgSend(_9,"UID"); +if(_counts[_a]===undefined){ +return; +}else{ +--_counts[_a]; +if(_counts[_a]===0){ +delete _counts[_a]; +objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPCountedSet").super_class},"removeObject:",_9); +} +} +} +}),new objj_method(sel_getUid("removeAllObjects"),function(_b,_c){ +with(_b){ +objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPCountedSet").super_class},"removeAllObjects"); +_counts={}; +} +}),new objj_method(sel_getUid("countForObject:"),function(_d,_e,_f){ +with(_d){ +if(!_counts){ +_counts={}; +} +var UID=objj_msgSend(_f,"UID"); +if(_counts[UID]===undefined){ +return 0; +} +return _counts[UID]; +} +})]); +p;8;CPData.jt;4290;@STATIC;1.0;i;10;CPObject.ji;10;CPString.jt;4241; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPData"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithRawString:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPData").super_class},"init"); +if(_3){ +objj_msgSend(_3,"setRawString:",_5); +} +return _3; +} +}),new objj_method(sel_getUid("initWithPlistObject:"),function(_6,_7,_8){ +with(_6){ +_6=objj_msgSendSuper({receiver:_6,super_class:objj_getClass("CPData").super_class},"init"); +if(_6){ +objj_msgSend(_6,"setPlistObject:",_8); +} +return _6; +} +}),new objj_method(sel_getUid("initWithPlistObject:format:"),function(_9,_a,_b,_c){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("CPData").super_class},"init"); +if(_9){ +objj_msgSend(_9,"setPlistObject:format:",_b,_c); +} +return _9; +} +}),new objj_method(sel_getUid("initWithJSONObject:"),function(_d,_e,_f){ +with(_d){ +_d=objj_msgSendSuper({receiver:_d,super_class:objj_getClass("CPData").super_class},"init"); +if(_d){ +objj_msgSend(_d,"setJSONObject:",_f); +} +return _d; +} +}),new objj_method(sel_getUid("rawString"),function(_10,_11){ +with(_10){ +return _10.rawString(); +} +}),new objj_method(sel_getUid("plistObject"),function(_12,_13){ +with(_12){ +return _12.propertyList(); +} +}),new objj_method(sel_getUid("JSONObject"),function(_14,_15){ +with(_14){ +return _14.JSONObject(); +} +}),new objj_method(sel_getUid("length"),function(_16,_17){ +with(_16){ +return objj_msgSend(objj_msgSend(_16,"rawString"),"length"); +} +}),new objj_method(sel_getUid("description"),function(_18,_19){ +with(_18){ +return _18.toString(); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_1a,_1b){ +with(_1a){ +return new CFMutableData(); +} +}),new objj_method(sel_getUid("data"),function(_1c,_1d){ +with(_1c){ +return objj_msgSend(objj_msgSend(_1c,"alloc"),"init"); +} +}),new objj_method(sel_getUid("dataWithRawString:"),function(_1e,_1f,_20){ +with(_1e){ +return objj_msgSend(objj_msgSend(_1e,"alloc"),"initWithRawString:",_20); +} +}),new objj_method(sel_getUid("dataWithPlistObject:"),function(_21,_22,_23){ +with(_21){ +return objj_msgSend(objj_msgSend(_21,"alloc"),"initWithPlistObject:",_23); +} +}),new objj_method(sel_getUid("dataWithPlistObject:format:"),function(_24,_25,_26,_27){ +with(_24){ +return objj_msgSend(objj_msgSend(_24,"alloc"),"initWithPlistObject:format:",_26,_27); +} +}),new objj_method(sel_getUid("dataWithJSONObject:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(objj_msgSend(_28,"alloc"),"initWithJSONObject:",_2a); +} +})]); +var _1=objj_getClass("CPData"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPData\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("setRawString:"),function(_2b,_2c,_2d){ +with(_2b){ +_2b.setRawString(_2d); +} +}),new objj_method(sel_getUid("setPlistObject:"),function(_2e,_2f,_30){ +with(_2e){ +_2e.setPropertyList(_30); +} +}),new objj_method(sel_getUid("setPlistObject:format:"),function(_31,_32,_33,_34){ +with(_31){ +_31.setPropertyList(_33,_34); +} +}),new objj_method(sel_getUid("setJSONObject:"),function(_35,_36,_37){ +with(_35){ +_35.setJSONObject(_37); +} +})]); +var _1=objj_getClass("CPData"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPData\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithString:"),function(_38,_39,_3a){ +with(_38){ +_CPReportLenientDeprecation(_38,_39,sel_getUid("initWithRawString:")); +return objj_msgSend(_38,"initWithRawString:",_3a); +} +}),new objj_method(sel_getUid("setString:"),function(_3b,_3c,_3d){ +with(_3b){ +_CPReportLenientDeprecation(_3b,_3c,sel_getUid("setRawString:")); +objj_msgSend(_3b,"setRawString:",_3d); +} +}),new objj_method(sel_getUid("string"),function(_3e,_3f){ +with(_3e){ +_CPReportLenientDeprecation(_3e,_3f,sel_getUid("rawString")); +return objj_msgSend(_3e,"rawString"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("dataWithString:"),function(_40,_41,_42){ +with(_40){ +_CPReportLenientDeprecation(_40,_41,sel_getUid("dataWithRawString:")); +return objj_msgSend(_40,"dataWithRawString:",_42); +} +})]); +CFData.prototype.isa=CPData; +CFMutableData.prototype.isa=CPData; +p;8;CPDate.jt;5033;@STATIC;1.0;i;10;CPObject.ji;10;CPString.jt;4984; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +var _1=new Date(Date.UTC(2001,1,1,0,0,0,0)); +var _2=objj_allocateClassPair(CPObject,"CPDate"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithTimeIntervalSinceNow:"),function(_4,_5,_6){ +with(_4){ +_4=new Date((new Date()).getTime()+_6*1000); +return _4; +} +}),new objj_method(sel_getUid("initWithTimeIntervalSince1970:"),function(_7,_8,_9){ +with(_7){ +_7=new Date(_9*1000); +return _7; +} +}),new objj_method(sel_getUid("initWithTimeIntervalSinceReferenceDate:"),function(_a,_b,_c){ +with(_a){ +_a=objj_msgSend(_a,"initWithTimeInterval:sinceDate:",_c,_1); +return _a; +} +}),new objj_method(sel_getUid("initWithTimeInterval:sinceDate:"),function(_d,_e,_f,_10){ +with(_d){ +_d=new Date(_10.getTime()+_f*1000); +return _d; +} +}),new objj_method(sel_getUid("initWithString:"),function(_11,_12,_13){ +with(_11){ +var _14=/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}) ([-+])(\d{2})(\d{2})/,d=_13.match(new RegExp(_14)); +if(!d||d.length!=10){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"initWithString: the string must be of YYYY-MM-DD HH:MM:SS ±HHMM format"); +} +var _15=new Date(d[1],d[2]-1,d[3]),_16=(Number(d[8])*60+Number(d[9]))*(d[7]==="-"?-1:1); +_15.setHours(d[4]); +_15.setMinutes(d[5]); +_15.setSeconds(d[6]); +_11=new Date(_15.getTime()+(_16-_15.getTimezoneOffset())*60*1000); +return _11; +} +}),new objj_method(sel_getUid("timeIntervalSinceDate:"),function(_17,_18,_19){ +with(_17){ +return (_17.getTime()-_19.getTime())/1000; +} +}),new objj_method(sel_getUid("timeIntervalSinceNow"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_1a,"timeIntervalSinceDate:",objj_msgSend(CPDate,"date")); +} +}),new objj_method(sel_getUid("timeIntervalSince1970"),function(_1c,_1d){ +with(_1c){ +return _1c.getTime()/1000; +} +}),new objj_method(sel_getUid("timeIntervalSinceReferenceDate"),function(_1e,_1f){ +with(_1e){ +return (_1e.getTime()-_1.getTime())/1000; +} +}),new objj_method(sel_getUid("isEqual:"),function(_20,_21,_22){ +with(_20){ +if(_20===_22){ +return YES; +} +if(!_22||!objj_msgSend(_22,"isKindOfClass:",objj_msgSend(CPDate,"class"))){ +return NO; +} +return objj_msgSend(_20,"isEqualToDate:",_22); +} +}),new objj_method(sel_getUid("isEqualToDate:"),function(_23,_24,_25){ +with(_23){ +if(!_25){ +return NO; +} +return !(_23<_25||_23>_25); +} +}),new objj_method(sel_getUid("compare:"),function(_26,_27,_28){ +with(_26){ +return (_26>_28)?CPOrderedDescending:((_26<_28)?CPOrderedAscending:CPOrderedSame); +} +}),new objj_method(sel_getUid("earlierDate:"),function(_29,_2a,_2b){ +with(_29){ +return (_29<_2b)?_29:_2b; +} +}),new objj_method(sel_getUid("laterDate:"),function(_2c,_2d,_2e){ +with(_2c){ +return (_2c>_2e)?_2c:_2e; +} +}),new objj_method(sel_getUid("description"),function(_2f,_30){ +with(_2f){ +var _31=_2f.getTimezoneOffset()>=0,_32=FLOOR(_2f.getTimezoneOffset()/60),_33=_2f.getTimezoneOffset()-_32*60; +return objj_msgSend(CPString,"stringWithFormat:","%04d-%02d-%02d %02d:%02d:%02d %s%02d%02d",_2f.getFullYear(),_2f.getMonth()+1,_2f.getDate(),_2f.getHours(),_2f.getMinutes(),_2f.getSeconds(),_31?"+":"-",ABS(_32),ABS(_33)); +} +}),new objj_method(sel_getUid("copy"),function(_34,_35){ +with(_34){ +return new Date(_34.getTime()); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("alloc"),function(_36,_37){ +with(_36){ +return new Date; +} +}),new objj_method(sel_getUid("date"),function(_38,_39){ +with(_38){ +return objj_msgSend(objj_msgSend(_38,"alloc"),"init"); +} +}),new objj_method(sel_getUid("dateWithTimeIntervalSinceNow:"),function(_3a,_3b,_3c){ +with(_3a){ +return objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSinceNow:",_3c); +} +}),new objj_method(sel_getUid("dateWithTimeIntervalSince1970:"),function(_3d,_3e,_3f){ +with(_3d){ +return objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSince1970:",_3f); +} +}),new objj_method(sel_getUid("dateWithTimeIntervalSinceReferenceDate:"),function(_40,_41,_42){ +with(_40){ +return objj_msgSend(objj_msgSend(CPDate,"alloc"),"initWithTimeIntervalSinceReferenceDate:",_42); +} +}),new objj_method(sel_getUid("distantPast"),function(_43,_44){ +with(_43){ +return new Date(-10000,1,1,0,0,0,0); +} +}),new objj_method(sel_getUid("distantFuture"),function(_45,_46){ +with(_45){ +return new Date(10000,1,1,0,0,0,0); +} +}),new objj_method(sel_getUid("timeIntervalSinceReferenceDate"),function(_47,_48){ +with(_47){ +return objj_msgSend(objj_msgSend(CPDate,"date"),"timeIntervalSinceReferenceDate"); +} +})]); +var _49="CPDateTimeKey"; +var _2=objj_getClass("CPDate"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPDate\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_4a,_4b,_4c){ +with(_4a){ +if(_4a){ +_4a.setTime(objj_msgSend(_4c,"decodeIntForKey:",_49)); +} +return _4a; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_4d,_4e,_4f){ +with(_4d){ +objj_msgSend(_4f,"encodeInt:forKey:",_4d.getTime(),_49); +} +})]); +Date.prototype.isa=CPDate; +p;14;CPDictionary.jt;8238;@STATIC;1.0;i;9;CPArray.ji;14;CPEnumerator.ji;13;CPException.ji;10;CPObject.jt;8154; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPEnumerator,"_CPDictionaryValueEnumerator"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyEnumerator"),new objj_ivar("_dictionary")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithDictionary:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("_CPDictionaryValueEnumerator").super_class},"init"); +if(_3){ +_keyEnumerator=objj_msgSend(_5,"keyEnumerator"); +_dictionary=_5; +} +return _3; +} +}),new objj_method(sel_getUid("nextObject"),function(_6,_7){ +with(_6){ +var _8=objj_msgSend(_keyEnumerator,"nextObject"); +if(!_8){ +return nil; +} +return objj_msgSend(_dictionary,"objectForKey:",_8); +} +})]); +var _1=objj_allocateClassPair(CPObject,"CPDictionary"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithDictionary:"),function(_9,_a,_b){ +with(_9){ +var _c="",_d=objj_msgSend(objj_msgSend(CPDictionary,"alloc"),"init"); +for(_c in _b._buckets){ +objj_msgSend(_d,"setObject:forKey:",objj_msgSend(_b,"objectForKey:",_c),_c); +} +return _d; +} +}),new objj_method(sel_getUid("initWithObjects:forKeys:"),function(_e,_f,_10,_11){ +with(_e){ +_e=objj_msgSendSuper({receiver:_e,super_class:objj_getClass("CPDictionary").super_class},"init"); +if(objj_msgSend(_10,"count")!=objj_msgSend(_11,"count")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Counts are different.("+objj_msgSend(_10,"count")+"!="+objj_msgSend(_11,"count")+")"); +} +if(_e){ +var i=objj_msgSend(_11,"count"); +while(i--){ +objj_msgSend(_e,"setObject:forKey:",_10[i],_11[i]); +} +} +return _e; +} +}),new objj_method(sel_getUid("initWithObjectsAndKeys:"),function(_12,_13,_14){ +with(_12){ +var _15=arguments.length; +if(_15%2!==0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Key-value count is mismatched. ("+_15+" arguments passed)"); +} +_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPDictionary").super_class},"init"); +if(_12){ +var _16=2; +for(;_16<_15;_16+=2){ +var _17=arguments[_16]; +if(_17===nil){ +break; +} +objj_msgSend(_12,"setObject:forKey:",_17,arguments[_16+1]); +} +} +return _12; +} +}),new objj_method(sel_getUid("copy"),function(_18,_19){ +with(_18){ +return objj_msgSend(CPDictionary,"dictionaryWithDictionary:",_18); +} +}),new objj_method(sel_getUid("count"),function(_1a,_1b){ +with(_1a){ +return _count; +} +}),new objj_method(sel_getUid("allKeys"),function(_1c,_1d){ +with(_1c){ +return objj_msgSend(_keys,"copy"); +} +}),new objj_method(sel_getUid("allValues"),function(_1e,_1f){ +with(_1e){ +var _20=_keys.length,_21=[]; +while(_20--){ +_21.push(_1e.valueForKey(_keys[_20])); +} +return _21; +} +}),new objj_method(sel_getUid("allKeysForObject:"),function(_22,_23,_24){ +with(_22){ +var _25=_keys.length,_26=0,_27=[],_28=nil,_29=nil; +for(;_26<_25;++_26){ +_28=_keys[_26],_29=_buckets[_28]; +if(_29.isa&&_24&&_24.isa&&objj_msgSend(_29,"respondsToSelector:",sel_getUid("isEqual:"))&&objj_msgSend(_29,"isEqual:",_24)){ +_27.push(_28); +}else{ +if(_29===_24){ +_27.push(_28); +} +} +} +return _27; +} +}),new objj_method(sel_getUid("keyEnumerator"),function(_2a,_2b){ +with(_2a){ +return objj_msgSend(_keys,"objectEnumerator"); +} +}),new objj_method(sel_getUid("objectEnumerator"),function(_2c,_2d){ +with(_2c){ +return objj_msgSend(objj_msgSend(_CPDictionaryValueEnumerator,"alloc"),"initWithDictionary:",_2c); +} +}),new objj_method(sel_getUid("isEqualToDictionary:"),function(_2e,_2f,_30){ +with(_2e){ +if(_2e===_30){ +return YES; +} +var _31=objj_msgSend(_2e,"count"); +if(_31!==objj_msgSend(_30,"count")){ +return NO; +} +var _32=_31; +while(_32--){ +var _33=_keys[_32],_34=_buckets[_33],_35=_30._buckets[_33]; +if(_34===_35){ +continue; +} +if(_34&&_34.isa&&_35&&_35.isa&&objj_msgSend(_34,"respondsToSelector:",sel_getUid("isEqual:"))&&objj_msgSend(_34,"isEqual:",_35)){ +continue; +} +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("isEqual:"),function(_36,_37,_38){ +with(_36){ +if(_36===_38){ +return YES; +} +if(!objj_msgSend(_38,"isKindOfClass:",objj_msgSend(CPDictionary,"class"))){ +return NO; +} +return objj_msgSend(_36,"isEqualToDictionary:",_38); +} +}),new objj_method(sel_getUid("objectForKey:"),function(_39,_3a,_3b){ +with(_39){ +var _3c=_buckets[_3b]; +return (_3c===undefined)?nil:_3c; +} +}),new objj_method(sel_getUid("removeAllObjects"),function(_3d,_3e){ +with(_3d){ +_3d.removeAllValues(); +} +}),new objj_method(sel_getUid("removeObjectForKey:"),function(_3f,_40,_41){ +with(_3f){ +_3f.removeValueForKey(_41); +} +}),new objj_method(sel_getUid("removeObjectsForKeys:"),function(_42,_43,_44){ +with(_42){ +var _45=_44.length; +while(_45--){ +objj_msgSend(_42,"removeObjectForKey:",_44[_45]); +} +} +}),new objj_method(sel_getUid("setObject:forKey:"),function(_46,_47,_48,_49){ +with(_46){ +_46.setValueForKey(_49,_48); +} +}),new objj_method(sel_getUid("addEntriesFromDictionary:"),function(_4a,_4b,_4c){ +with(_4a){ +if(!_4c){ +return; +} +var _4d=objj_msgSend(_4c,"allKeys"),_4e=objj_msgSend(_4d,"count"); +while(_4e--){ +var key=_4d[_4e]; +objj_msgSend(_4a,"setObject:forKey:",objj_msgSend(_4c,"objectForKey:",key),key); +} +} +}),new objj_method(sel_getUid("description"),function(_4f,_50){ +with(_4f){ +return _4f.toString(); +} +}),new objj_method(sel_getUid("containsKey:"),function(_51,_52,_53){ +with(_51){ +var _54=objj_msgSend(_51,"objectForKey:",_53); +return ((_54!==nil)&&(_54!==undefined)); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_55,_56){ +with(_55){ +return new CFMutableDictionary(); +} +}),new objj_method(sel_getUid("dictionary"),function(_57,_58){ +with(_57){ +return objj_msgSend(objj_msgSend(_57,"alloc"),"init"); +} +}),new objj_method(sel_getUid("dictionaryWithDictionary:"),function(_59,_5a,_5b){ +with(_59){ +return objj_msgSend(objj_msgSend(_59,"alloc"),"initWithDictionary:",_5b); +} +}),new objj_method(sel_getUid("dictionaryWithObject:forKey:"),function(_5c,_5d,_5e,_5f){ +with(_5c){ +return objj_msgSend(objj_msgSend(_5c,"alloc"),"initWithObjects:forKeys:",[_5e],[_5f]); +} +}),new objj_method(sel_getUid("dictionaryWithObjects:forKeys:"),function(_60,_61,_62,_63){ +with(_60){ +return objj_msgSend(objj_msgSend(_60,"alloc"),"initWithObjects:forKeys:",_62,_63); +} +}),new objj_method(sel_getUid("dictionaryWithJSObject:"),function(_64,_65,_66){ +with(_64){ +return objj_msgSend(_64,"dictionaryWithJSObject:recursively:",_66,NO); +} +}),new objj_method(sel_getUid("dictionaryWithJSObject:recursively:"),function(_67,_68,_69,_6a){ +with(_67){ +var key="",_6b=objj_msgSend(objj_msgSend(_67,"alloc"),"init"); +for(key in _69){ +if(!_69.hasOwnProperty(key)){ +continue; +} +var _6c=_69[key]; +if(_6c===null){ +objj_msgSend(_6b,"setObject:forKey:",objj_msgSend(CPNull,"null"),key); +continue; +} +if(_6a){ +if(_6c.constructor===Object){ +_6c=objj_msgSend(CPDictionary,"dictionaryWithJSObject:recursively:",_6c,YES); +}else{ +if(objj_msgSend(_6c,"isKindOfClass:",CPArray)){ +var _6d=[],i=0,_6e=_6c.length; +for(;i<_6e;i++){ +var _6f=_6c[i]; +if(_6f.constructor===Object){ +_6d.push(objj_msgSend(CPDictionary,"dictionaryWithJSObject:recursively:",_6f,YES)); +}else{ +_6d.push(_6f); +} +} +_6c=_6d; +} +} +} +objj_msgSend(_6b,"setObject:forKey:",_6c,key); +} +return _6b; +} +}),new objj_method(sel_getUid("dictionaryWithObjectsAndKeys:"),function(_70,_71,_72){ +with(_70){ +arguments[0]=objj_msgSend(_70,"alloc"); +arguments[1]=sel_getUid("initWithObjectsAndKeys:"); +return objj_msgSend.apply(this,arguments); +} +})]); +var _1=objj_getClass("CPDictionary"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPDictionary\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_73,_74,_75){ +with(_73){ +return objj_msgSend(_75,"_decodeDictionaryOfObjectsForKey:","CP.objects"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_76,_77,_78){ +with(_76){ +objj_msgSend(_78,"_encodeDictionaryOfObjects:forKey:",_76,"CP.objects"); +} +})]); +var _1=objj_allocateClassPair(CPDictionary,"CPMutableDictionary"),_2=_1.isa; +objj_registerClassPair(_1); +CFDictionary.prototype.isa=CPDictionary; +CFMutableDictionary.prototype.isa=CPMutableDictionary; +p;14;CPEnumerator.jt;357;@STATIC;1.0;i;10;CPObject.jt;324; +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPEnumerator"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("nextObject"),function(_3,_4){ +with(_3){ +return nil; +} +}),new objj_method(sel_getUid("allObjects"),function(_5,_6){ +with(_5){ +return []; +} +})]); +p;13;CPException.jt;3505;@STATIC;1.0;i;9;CPCoder.ji;10;CPObject.ji;10;CPString.jt;3443; +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +CPInvalidArgumentException="CPInvalidArgumentException"; +CPUnsupportedMethodException="CPUnsupportedMethodException"; +CPRangeException="CPRangeException"; +CPInternalInconsistencyException="CPInternalInconsistencyException"; +var _1=objj_allocateClassPair(CPObject,"CPException"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_userInfo")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithName:reason:userInfo:"),function(_3,_4,_5,_6,_7){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPException").super_class},"init"); +if(_3){ +name=_5; +message=_6; +_userInfo=_7; +} +return _3; +} +}),new objj_method(sel_getUid("name"),function(_8,_9){ +with(_8){ +return name; +} +}),new objj_method(sel_getUid("reason"),function(_a,_b){ +with(_a){ +return message; +} +}),new objj_method(sel_getUid("userInfo"),function(_c,_d){ +with(_c){ +return _userInfo; +} +}),new objj_method(sel_getUid("description"),function(_e,_f){ +with(_e){ +return message; +} +}),new objj_method(sel_getUid("raise"),function(_10,_11){ +with(_10){ +throw _10; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_12,_13){ +with(_12){ +return new Error(); +} +}),new objj_method(sel_getUid("raise:reason:"),function(_14,_15,_16,_17){ +with(_14){ +objj_msgSend(objj_msgSend(_14,"exceptionWithName:reason:userInfo:",_16,_17,nil),"raise"); +} +}),new objj_method(sel_getUid("exceptionWithName:reason:userInfo:"),function(_18,_19,_1a,_1b,_1c){ +with(_18){ +return objj_msgSend(objj_msgSend(_18,"alloc"),"initWithName:reason:userInfo:",_1a,_1b,_1c); +} +})]); +var _1=objj_getClass("CPException"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPException\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_1d,_1e){ +with(_1d){ +return objj_msgSend(objj_msgSend(_1d,"class"),"exceptionWithName:reason:userInfo:",name,message,_userInfo); +} +})]); +var _1f="CPExceptionNameKey",_20="CPExceptionReasonKey",_21="CPExceptionUserInfoKey"; +var _1=objj_getClass("CPException"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPException\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_22,_23,_24){ +with(_22){ +_22=objj_msgSendSuper({receiver:_22,super_class:objj_getClass("CPException").super_class},"init"); +if(_22){ +name=objj_msgSend(_24,"decodeObjectForKey:",_1f); +message=objj_msgSend(_24,"decodeObjectForKey:",_20); +_userInfo=objj_msgSend(_24,"decodeObjectForKey:",_21); +} +return _22; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_25,_26,_27){ +with(_25){ +objj_msgSend(_27,"encodeObject:forKey:",name,_1f); +objj_msgSend(_27,"encodeObject:forKey:",message,_20); +objj_msgSend(_27,"encodeObject:forKey:",_userInfo,_21); +} +})]); +Error.prototype.isa=CPException; +Error.prototype._userInfo=NULL; +objj_msgSend(CPException,"initialize"); +_CPRaiseInvalidAbstractInvocation=function(_28,_29){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"*** -"+sel_getName(_29)+" cannot be sent to an abstract object of class "+objj_msgSend(_28,"className")+": Create a concrete instance!"); +}; +_CPReportLenientDeprecation=function(_2a,_2b,_2c){ +CPLog.warn("["+CPStringFromClass(_2a)+" "+CPStringFromSelector(_2b)+"] is deprecated, using "+CPStringFromSelector(_2c)+" instead."); +}; +p;13;CPFormatter.jt;1549;@STATIC;1.0;I;21;Foundation/CPObject.jt;1504; +objj_executeFile("Foundation/CPObject.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPFormatter"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("stringForObjectValue:"),function(_3,_4,_5){ +with(_3){ +_CPRaiseInvalidAbstractInvocation(_3,sel_getUid("stringForObjectValue:")); +return nil; +} +}),new objj_method(sel_getUid("editingStringForObjectValue:"),function(_6,_7,_8){ +with(_6){ +return objj_msgSend(_6,"stringForObjectValue:",_8); +} +}),new objj_method(sel_getUid("getObjectValue:forString:errorDescription:"),function(_9,_a,_b,_c,_d){ +with(_9){ +_CPRaiseInvalidAbstractInvocation(_9,sel_getUid("getObjectValue:forString:errorDescription:")); +return NO; +} +}),new objj_method(sel_getUid("isPartialStringValid:newEditingString:errorDescription:"),function(_e,_f,_10,_11,_12){ +with(_e){ +_CPRaiseInvalidAbstractInvocation(_e,sel_getUid("isPartialStringValid:newEditingString:errorDescription:")); +return NO; +} +}),new objj_method(sel_getUid("isPartialStringValue:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"),function(_13,_14,_15,_16,_17,_18,_19){ +with(_13){ +_CPRaiseInvalidAbstractInvocation(_13,sel_getUid("isPartialStringValue:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:")); +return NO; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_1a,_1b,_1c){ +with(_1a){ +return objj_msgSend(_1a,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_1d,_1e,_1f){ +with(_1d){ +} +})]); +p;21;CPFunctionOperation.jt;1271;@STATIC;1.0;I;21;Foundation/CPObject.ji;13;CPOperation.jt;1208; +objj_executeFile("Foundation/CPObject.j",NO); +objj_executeFile("CPOperation.j",YES); +var _1=objj_allocateClassPair(CPOperation,"CPFunctionOperation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_functions")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("main"),function(_3,_4){ +with(_3){ +if(_functions&&objj_msgSend(_functions,"count")>0){ +var i=0,_5=objj_msgSend(_functions,"count"); +for(;i<_5;i++){ +var _6=objj_msgSend(_functions,"objectAtIndex:",i); +_6(); +} +} +} +}),new objj_method(sel_getUid("init"),function(_7,_8){ +with(_7){ +if(_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPFunctionOperation").super_class},"init")){ +_functions=[]; +} +return _7; +} +}),new objj_method(sel_getUid("addExecutionFunction:"),function(_9,_a,_b){ +with(_9){ +objj_msgSend(_functions,"addObject:",_b); +} +}),new objj_method(sel_getUid("executionFunctions"),function(_c,_d){ +with(_c){ +return _functions; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("functionOperationWithFunction:"),function(_e,_f,_10){ +with(_e){ +functionOp=objj_msgSend(objj_msgSend(CPFunctionOperation,"alloc"),"init"); +objj_msgSend(functionOp,"addExecutionFunction:",_10); +return functionOp; +} +})]); +p;12;CPIndexSet.jt;12162;@STATIC;1.0;i;10;CPObject.ji;9;CPRange.jt;12114; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPRange.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPIndexSet"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_count"),new objj_ivar("_ranges")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return objj_msgSend(_3,"initWithIndexesInRange:",{location:(0),length:0}); +} +}),new objj_method(sel_getUid("initWithIndex:"),function(_5,_6,_7){ +with(_5){ +return objj_msgSend(_5,"initWithIndexesInRange:",{location:(_7),length:1}); +} +}),new objj_method(sel_getUid("initWithIndexesInRange:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPIndexSet").super_class},"init"); +if(_8){ +_count=MAX(0,_a.length); +if(_count>0){ +_ranges=[_a]; +}else{ +_ranges=[]; +} +} +return _8; +} +}),new objj_method(sel_getUid("initWithIndexSet:"),function(_b,_c,_d){ +with(_b){ +_b=objj_msgSendSuper({receiver:_b,super_class:objj_getClass("CPIndexSet").super_class},"init"); +if(_b){ +_count=objj_msgSend(_d,"count"); +_ranges=[]; +var _e=_d._ranges,_f=_e.length; +while(_f--){ +_ranges[_f]={location:(_e[_f]).location,length:(_e[_f]).length}; +} +} +return _b; +} +}),new objj_method(sel_getUid("isEqual:"),function(_10,_11,_12){ +with(_10){ +if(_10===_12){ +return YES; +} +if(!_12||!objj_msgSend(_12,"isKindOfClass:",objj_msgSend(CPIndexSet,"class"))){ +return NO; +} +return objj_msgSend(_10,"isEqualToIndexSet:",_12); +} +}),new objj_method(sel_getUid("isEqualToIndexSet:"),function(_13,_14,_15){ +with(_13){ +if(!_15){ +return NO; +} +if(_13===_15){ +return YES; +} +var _16=_ranges.length,_17=_15._ranges; +if(_16!==_17.length||_count!==_15._count){ +return NO; +} +while(_16--){ +if(!CPEqualRanges(_ranges[_16],_17[_16])){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("isEqual:"),function(_18,_19,_1a){ +with(_18){ +return _18===_1a||objj_msgSend(_1a,"isKindOfClass:",objj_msgSend(_18,"class"))&&objj_msgSend(_18,"isEqualToIndexSet:",_1a); +} +}),new objj_method(sel_getUid("containsIndex:"),function(_1b,_1c,_1d){ +with(_1b){ +return _1e(_ranges,_1d)!==CPNotFound; +} +}),new objj_method(sel_getUid("containsIndexesInRange:"),function(_1f,_20,_21){ +with(_1f){ +if(_21.length<=0){ +return NO; +} +if(_count<_21.length){ +return NO; +} +var _22=_1e(_ranges,_21.location); +if(_22===CPNotFound){ +return NO; +} +var _23=_ranges[_22]; +return CPIntersectionRange(_23,_21).length===_21.length; +} +}),new objj_method(sel_getUid("containsIndexes:"),function(_24,_25,_26){ +with(_24){ +var _27=_26._count; +if(_27<=0){ +return YES; +} +if(_count<_27){ +return NO; +} +var _28=_26._ranges,_29=_28.length; +while(_29--){ +if(!objj_msgSend(_24,"containsIndexesInRange:",_28[_29])){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("intersectsIndexesInRange:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_count<=0){ +return NO; +} +var _2d=_2e(_ranges,_2c.location); +if(FLOOR(_2d)===_2d){ +return YES; +} +var _2f=_2e(_ranges,((_2c).location+(_2c).length)-1); +if(FLOOR(_2f)===_2f){ +return YES; +} +return _2d!==_2f; +} +}),new objj_method(sel_getUid("count"),function(_30,_31){ +with(_30){ +return _count; +} +}),new objj_method(sel_getUid("firstIndex"),function(_32,_33){ +with(_32){ +if(_count>0){ +return _ranges[0].location; +} +return CPNotFound; +} +}),new objj_method(sel_getUid("lastIndex"),function(_34,_35){ +with(_34){ +if(_count>0){ +return ((_ranges[_ranges.length-1]).location+(_ranges[_ranges.length-1]).length)-1; +} +return CPNotFound; +} +}),new objj_method(sel_getUid("indexGreaterThanIndex:"),function(_36,_37,_38){ +with(_36){ +++_38; +var _39=_2e(_ranges,_38); +if(_39===CPNotFound){ +return CPNotFound; +} +_39=CEIL(_39); +if(_39>=_ranges.length){ +return CPNotFound; +} +var _3a=_ranges[_39]; +if(CPLocationInRange(_38,_3a)){ +return _38; +} +return _3a.location; +} +}),new objj_method(sel_getUid("indexLessThanIndex:"),function(_3b,_3c,_3d){ +with(_3b){ +--_3d; +var _3e=_2e(_ranges,_3d); +if(_3e===CPNotFound){ +return CPNotFound; +} +_3e=FLOOR(_3e); +if(_3e<0){ +return CPNotFound; +} +var _3f=_ranges[_3e]; +if(CPLocationInRange(_3d,_3f)){ +return _3d; +} +return ((_3f).location+(_3f).length)-1; +} +}),new objj_method(sel_getUid("indexGreaterThanOrEqualToIndex:"),function(_40,_41,_42){ +with(_40){ +return objj_msgSend(_40,"indexGreaterThanIndex:",_42-1); +} +}),new objj_method(sel_getUid("indexLessThanOrEqualToIndex:"),function(_43,_44,_45){ +with(_43){ +return objj_msgSend(_43,"indexLessThanIndex:",_45+1); +} +}),new objj_method(sel_getUid("getIndexes:maxCount:inIndexRange:"),function(_46,_47,_48,_49,_4a){ +with(_46){ +if(!_count||_49===0||_4a&&!_4a.length){ +if(_4a){ +_4a.length=0; +} +return 0; +} +var _4b=0; +if(_4a){ +var _4c=_4a.location,_4d=((_4a).location+(_4a).length)-1,_4e=CEIL(_2e(_ranges,_4c)),_4f=FLOOR(_2e(_ranges,_4d)); +}else{ +var _4c=objj_msgSend(_46,"firstIndex"),_4d=objj_msgSend(_46,"lastIndex"),_4e=0,_4f=_ranges.length-1; +} +while(_4e<=_4f){ +var _50=_ranges[_4e],_51=MAX(_4c,_50.location),_52=MIN(_4d+1,((_50).location+(_50).length)); +for(;_51<_52;++_51){ +_48[_4b++]=_51; +if(_4b===_49){ +if(_4a){ +_4a.location=_51+1; +_4a.length=_4d+1-_51-1; +} +return _49; +} +} +++_4e; +} +if(_4a){ +_4a.location=CPNotFound; +_4a.length=0; +} +return _4b; +} +}),new objj_method(sel_getUid("description"),function(_53,_54){ +with(_53){ +var _55=objj_msgSendSuper({receiver:_53,super_class:objj_getClass("CPIndexSet").super_class},"description"); +if(_count){ +var _56=0,_57=_ranges.length; +_55+="[number of indexes: "+_count+" (in "+_57; +if(_57===1){ +_55+=" range), indexes: ("; +}else{ +_55+=" ranges), indexes: ("; +} +for(;_56<_57;++_56){ +var _58=_ranges[_56]; +_55+=_58.location; +if(_58.length>1){ +_55+="-"+(CPMaxRange(_58)-1); +} +if(_56+1<_57){ +_55+=" "; +} +} +_55+=")]"; +}else{ +_55+="(no indexes)"; +} +return _55; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("indexSet"),function(_59,_5a){ +with(_59){ +return objj_msgSend(objj_msgSend(_59,"alloc"),"init"); +} +}),new objj_method(sel_getUid("indexSetWithIndex:"),function(_5b,_5c,_5d){ +with(_5b){ +return objj_msgSend(objj_msgSend(_5b,"alloc"),"initWithIndex:",_5d); +} +}),new objj_method(sel_getUid("indexSetWithIndexesInRange:"),function(_5e,_5f,_60){ +with(_5e){ +return objj_msgSend(objj_msgSend(_5e,"alloc"),"initWithIndexesInRange:",_60); +} +})]); +var _1=objj_getClass("CPIndexSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("addIndex:"),function(_61,_62,_63){ +with(_61){ +objj_msgSend(_61,"addIndexesInRange:",{location:(_63),length:1}); +} +}),new objj_method(sel_getUid("addIndexes:"),function(_64,_65,_66){ +with(_64){ +var _67=_66._ranges,_68=_67.length; +while(_68--){ +objj_msgSend(_64,"addIndexesInRange:",_67[_68]); +} +} +}),new objj_method(sel_getUid("addIndexesInRange:"),function(_69,_6a,_6b){ +with(_69){ +if(_6b.length<=0){ +return; +} +if(_count<=0){ +_count=_6b.length; +_ranges=[_6b]; +return; +} +var _6c=_ranges.length,_6d=_2e(_ranges,_6b.location-1),_6e=CEIL(_6d); +if(_6e===_6d&&_6e<_6c){ +_6b=CPUnionRange(_6b,_ranges[_6e]); +} +var _6f=_2e(_ranges,CPMaxRange(_6b)),_70=FLOOR(_6f); +if(_70===_6f&&_70>=0){ +_6b=CPUnionRange(_6b,_ranges[_70]); +} +var _71=_70-_6e+1; +if(_71===_ranges.length){ +_ranges=[_6b]; +_count=_6b.length; +}else{ +if(_71===1){ +if(_6e<_ranges.length){ +_count-=_ranges[_6e].length; +} +_count+=_6b.length; +_ranges[_6e]=_6b; +}else{ +if(_71>0){ +var _72=_6e,_73=_6e+_71-1; +for(;_72<=_73;++_72){ +_count-=_ranges[_72].length; +} +objj_msgSend(_ranges,"removeObjectsInRange:",{location:(_6e),length:_71}); +} +objj_msgSend(_ranges,"insertObject:atIndex:",_6b,_6e); +_count+=_6b.length; +} +} +} +}),new objj_method(sel_getUid("removeIndex:"),function(_74,_75,_76){ +with(_74){ +objj_msgSend(_74,"removeIndexesInRange:",{location:(_76),length:1}); +} +}),new objj_method(sel_getUid("removeIndexes:"),function(_77,_78,_79){ +with(_77){ +var _7a=_79._ranges,_7b=_7a.length; +while(_7b--){ +objj_msgSend(_77,"removeIndexesInRange:",_7a[_7b]); +} +} +}),new objj_method(sel_getUid("removeAllIndexes"),function(_7c,_7d){ +with(_7c){ +_ranges=[]; +_count=0; +} +}),new objj_method(sel_getUid("removeIndexesInRange:"),function(_7e,_7f,_80){ +with(_7e){ +if(_80.length<=0){ +return; +} +if(_count<=0){ +return; +} +var _81=_ranges.length,_82=_2e(_ranges,_80.location),_83=CEIL(_82); +if(_82===_83&&_83<_81){ +var _84=_ranges[_83]; +if(_80.location!==_84.location){ +var _85=CPMaxRange(_80),_86=CPMaxRange(_84); +_84.length=_80.location-_84.location; +if(_85<_86){ +_count-=_80.length; +objj_msgSend(_ranges,"insertObject:atIndex:",{location:(_85),length:_86-_85},_83+1); +return; +}else{ +_count-=_86-_80.location; +_83+=1; +} +} +} +var _87=_2e(_ranges,CPMaxRange(_80)-1),_88=FLOOR(_87); +if(_87===_88&&_88>=0){ +var _85=CPMaxRange(_80),_84=_ranges[_88],_86=CPMaxRange(_84); +if(_85!==_86){ +_count-=_85-_84.location; +_88-=1; +_84.location=_85; +_84.length=_86-_85; +} +} +var _89=_88-_83+1; +if(_89>0){ +var _8a=_83,_8b=_83+_89-1; +for(;_8a<=_8b;++_8a){ +_count-=_ranges[_8a].length; +} +objj_msgSend(_ranges,"removeObjectsInRange:",{location:(_83),length:_89}); +} +} +}),new objj_method(sel_getUid("shiftIndexesStartingAtIndex:by:"),function(_8c,_8d,_8e,_8f){ +with(_8c){ +if(!_count||_8f==0){ +return; +} +var i=_ranges.length-1,_90=CPMakeRange(CPNotFound,0); +for(;i>=0;--i){ +var _91=_ranges[i],_92=CPMaxRange(_91); +if(_8e>=_92){ +break; +} +if(_8e>_91.location){ +_90=CPMakeRange(_8e+_8f,_92-_8e); +_91.length=_8e-_91.location; +if(_8f>0){ +objj_msgSend(_ranges,"insertObject:atIndex:",_90,i+1); +}else{ +if(_90.location<0){ +_90.length=CPMaxRange(_90); +_90.location=0; +} +} +break; +} +if((_91.location+=_8f)<0){ +_91.length=CPMaxRange(_91); +_91.location=0; +} +} +if(_8f<0){ +var j=i+1,_93=_ranges.length,_94=[]; +for(;j<_93;++j){ +objj_msgSend(_94,"addObject:",_ranges[j]); +_count-=_ranges[j].length; +} +if((j=i+1)<_93){ +objj_msgSend(_ranges,"removeObjectsInRange:",CPMakeRange(j,_93-j)); +for(j=0,_93=_94.length;j<_93;++j){ +objj_msgSend(_8c,"addIndexesInRange:",_94[j]); +} +} +if(_90.location!=CPNotFound){ +objj_msgSend(_8c,"addIndexesInRange:",_90); +} +} +} +})]); +var _95="CPIndexSetCountKey",_96="CPIndexSetRangeStringsKey"; +var _1=objj_getClass("CPIndexSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_97,_98,_99){ +with(_97){ +_97=objj_msgSendSuper({receiver:_97,super_class:objj_getClass("CPIndexSet").super_class},"init"); +if(_97){ +_count=objj_msgSend(_99,"decodeIntForKey:",_95); +_ranges=[]; +var _9a=objj_msgSend(_99,"decodeObjectForKey:",_96),_9b=0,_9c=_9a.length; +for(;_9b<_9c;++_9b){ +_ranges.push(CPRangeFromString(_9a[_9b])); +} +} +return _97; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_9d,_9e,_9f){ +with(_9d){ +objj_msgSend(_9f,"encodeInt:forKey:",_count,_95); +var _a0=0,_a1=_ranges.length,_a2=[]; +for(;_a0<_a1;++_a0){ +_a2[_a0]=CPStringFromRange(_ranges[_a0]); +} +objj_msgSend(_9f,"encodeObject:forKey:",_a2,_96); +} +})]); +var _1=objj_getClass("CPIndexSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPIndexSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_a3,_a4){ +with(_a3){ +return objj_msgSend(objj_msgSend(objj_msgSend(_a3,"class"),"alloc"),"initWithIndexSet:",_a3); +} +}),new objj_method(sel_getUid("mutableCopy"),function(_a5,_a6){ +with(_a5){ +return objj_msgSend(objj_msgSend(objj_msgSend(_a5,"class"),"alloc"),"initWithIndexSet:",_a5); +} +})]); +var _1=objj_allocateClassPair(CPIndexSet,"CPMutableIndexSet"),_2=_1.isa; +objj_registerClassPair(_1); +var _1e=function(_a7,_a8){ +var low=0,_a9=_a7.length-1; +while(low<=_a9){ +var _aa=FLOOR(low+(_a9-low)/2),_ab=_a7[_aa]; +if(_a8<_ab.location){ +_a9=_aa-1; +}else{ +if(_a8>=CPMaxRange(_ab)){ +low=_aa+1; +}else{ +return _aa; +} +} +} +return CPNotFound; +}; +var _2e=function(_ac,_ad){ +var _ae=_ac.length; +if(_ae<=0){ +return CPNotFound; +} +var low=0,_af=_ae*2; +while(low<=_af){ +var _b0=FLOOR(low+(_af-low)/2),_b1=_b0/2,_b2=FLOOR(_b1); +if(_b1===_b2){ +if(_b2-1>=0&&_ad=_ac[_b2].location){ +low=_b0+1; +}else{ +return _b2-0.5; +} +} +}else{ +var _b3=_ac[_b2]; +if(_ad<_b3.location){ +_af=_b0-1; +}else{ +if(_ad>=CPMaxRange(_b3)){ +low=_b0+1; +}else{ +return _b2; +} +} +} +} +return CPNotFound; +}; +p;14;CPInvocation.jt;2659;@STATIC;1.0;i;13;CPException.ji;10;CPObject.jt;2607; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPInvocation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_returnValue"),new objj_ivar("_arguments"),new objj_ivar("_methodSignature")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithMethodSignature:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPInvocation").super_class},"init"); +if(_3){ +_arguments=[]; +_methodSignature=_5; +} +return _3; +} +}),new objj_method(sel_getUid("setSelector:"),function(_6,_7,_8){ +with(_6){ +_arguments[1]=_8; +} +}),new objj_method(sel_getUid("selector"),function(_9,_a){ +with(_9){ +return _arguments[1]; +} +}),new objj_method(sel_getUid("setTarget:"),function(_b,_c,_d){ +with(_b){ +_arguments[0]=_d; +} +}),new objj_method(sel_getUid("target"),function(_e,_f){ +with(_e){ +return _arguments[0]; +} +}),new objj_method(sel_getUid("setArgument:atIndex:"),function(_10,_11,_12,_13){ +with(_10){ +_arguments[_13]=_12; +} +}),new objj_method(sel_getUid("argumentAtIndex:"),function(_14,_15,_16){ +with(_14){ +return _arguments[_16]; +} +}),new objj_method(sel_getUid("setReturnValue:"),function(_17,_18,_19){ +with(_17){ +_returnValue=_19; +} +}),new objj_method(sel_getUid("returnValue"),function(_1a,_1b){ +with(_1a){ +return _returnValue; +} +}),new objj_method(sel_getUid("invoke"),function(_1c,_1d){ +with(_1c){ +_returnValue=objj_msgSend.apply(objj_msgSend,_arguments); +} +}),new objj_method(sel_getUid("invokeWithTarget:"),function(_1e,_1f,_20){ +with(_1e){ +_arguments[0]=_20; +_returnValue=objj_msgSend.apply(objj_msgSend,_arguments); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("invocationWithMethodSignature:"),function(_21,_22,_23){ +with(_21){ +return objj_msgSend(objj_msgSend(_21,"alloc"),"initWithMethodSignature:",_23); +} +})]); +var _24="CPInvocationArguments",_25="CPInvocationReturnValue"; +var _1=objj_getClass("CPInvocation"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPInvocation\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_26,_27,_28){ +with(_26){ +_26=objj_msgSendSuper({receiver:_26,super_class:objj_getClass("CPInvocation").super_class},"init"); +if(_26){ +_returnValue=objj_msgSend(_28,"decodeObjectForKey:",_25); +_arguments=objj_msgSend(_28,"decodeObjectForKey:",_24); +} +return _26; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_29,_2a,_2b){ +with(_29){ +objj_msgSend(_2b,"encodeObject:forKey:",_returnValue,_25); +objj_msgSend(_2b,"encodeObject:forKey:",_arguments,_24); +} +})]); +p;23;CPInvocationOperation.jt;1480;@STATIC;1.0;i;14;CPInvocation.ji;10;CPObject.ji;13;CPOperation.jt;1409; +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPOperation.j",YES); +var _1=objj_allocateClassPair(CPOperation,"CPInvocationOperation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_invocation")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("main"),function(_3,_4){ +with(_3){ +if(_invocation){ +objj_msgSend(_invocation,"invoke"); +} +} +}),new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPInvocationOperation").super_class},"init")){ +_invocation=nil; +} +return _5; +} +}),new objj_method(sel_getUid("initWithInvocation:"),function(_7,_8,_9){ +with(_7){ +if(_7=objj_msgSend(_7,"init")){ +_invocation=_9; +} +return _7; +} +}),new objj_method(sel_getUid("initWithTarget:selector:object:"),function(_a,_b,_c,_d,_e){ +with(_a){ +var _f=objj_msgSend(objj_msgSend(CPInvocation,"alloc"),"initWithMethodSignature:",nil); +objj_msgSend(_f,"setTarget:",_c); +objj_msgSend(_f,"setSelector:",_d); +objj_msgSend(_f,"setArgument:atIndex:",_e,2); +return objj_msgSend(_a,"initWithInvocation:",_f); +} +}),new objj_method(sel_getUid("invocation"),function(_10,_11){ +with(_10){ +return _invocation; +} +}),new objj_method(sel_getUid("result"),function(_12,_13){ +with(_12){ +if(objj_msgSend(_12,"isFinished")&&_invocation){ +return objj_msgSend(_invocation,"returnValue"); +} +return nil; +} +})]); +p;19;CPJSONPConnection.jt;3704;@STATIC;1.0;i;10;CPObject.jt;3670; +objj_executeFile("CPObject.j",YES); +CPJSONPConnectionCallbacks={}; +CPJSONPCallbackReplacementString="${JSONP_CALLBACK}"; +var _1=objj_allocateClassPair(CPObject,"CPJSONPConnection"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_request"),new objj_ivar("_delegate"),new objj_ivar("_callbackParameter"),new objj_ivar("_scriptTag")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithRequest:callback:delegate:"),function(_3,_4,_5,_6,_7){ +with(_3){ +return objj_msgSend(_3,"initWithRequest:callback:delegate:startImmediately:",_5,_6,_7,NO); +} +}),new objj_method(sel_getUid("initWithRequest:callback:delegate:startImmediately:"),function(_8,_9,_a,_b,_c,_d){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("CPJSONPConnection").super_class},"init"); +_request=_a; +_delegate=_c; +_callbackParameter=_b; +if(!_callbackParameter&&objj_msgSend(objj_msgSend(_request,"URL"),"absoluteString").indexOf(CPJSONPCallbackReplacementString)<0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"JSONP source specified without callback parameter or CPJSONPCallbackReplacementString in URL."); +} +if(_d){ +objj_msgSend(_8,"start"); +} +return _8; +} +}),new objj_method(sel_getUid("start"),function(_e,_f){ +with(_e){ +try{ +CPJSONPConnectionCallbacks["callback"+objj_msgSend(_e,"UID")]=function(_10){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didReceiveData:"))){ +objj_msgSend(_delegate,"connection:didReceiveData:",_e,_10); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connectionDidFinishLoading:"))){ +objj_msgSend(_delegate,"connectionDidFinishLoading:",_e); +} +objj_msgSend(_e,"removeScriptTag"); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +}; +var _11=document.getElementsByTagName("head").item(0),_12=objj_msgSend(objj_msgSend(_request,"URL"),"absoluteString"); +if(_callbackParameter){ +_12+=(_12.indexOf("?")<0)?"?":"&"; +_12+=_callbackParameter+"=CPJSONPConnectionCallbacks.callback"+objj_msgSend(_e,"UID"); +}else{ +if(_12.indexOf(CPJSONPCallbackReplacementString)>=0){ +_12=objj_msgSend(_12,"stringByReplacingOccurrencesOfString:withString:",CPJSONPCallbackReplacementString,"CPJSONPConnectionCallbacks.callback"+objj_msgSend(_e,"UID")); +}else{ +return; +} +} +_scriptTag=document.createElement("script"); +_scriptTag.setAttribute("type","text/javascript"); +_scriptTag.setAttribute("charset","utf-8"); +_scriptTag.setAttribute("src",_12); +_11.appendChild(_scriptTag); +} +catch(exception){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didFailWithError:"))){ +objj_msgSend(_delegate,"connection:didFailWithError:",_e,exception); +} +objj_msgSend(_e,"removeScriptTag"); +} +} +}),new objj_method(sel_getUid("removeScriptTag"),function(_13,_14){ +with(_13){ +var _15=document.getElementsByTagName("head").item(0); +if(_scriptTag&&_scriptTag.parentNode==_15){ +_15.removeChild(_scriptTag); +} +CPJSONPConnectionCallbacks["callback"+objj_msgSend(_13,"UID")]=nil; +delete CPJSONPConnectionCallbacks["callback"+objj_msgSend(_13,"UID")]; +} +}),new objj_method(sel_getUid("cancel"),function(_16,_17){ +with(_16){ +objj_msgSend(_16,"removeScriptTag"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("sendRequest:callback:delegate:"),function(_18,_19,_1a,_1b,_1c){ +with(_18){ +return objj_msgSend(_18,"connectionWithRequest:callback:delegate:",_1a,_1b,_1c); +} +}),new objj_method(sel_getUid("connectionWithRequest:callback:delegate:"),function(_1d,_1e,_1f,_20,_21){ +with(_1d){ +return objj_msgSend(objj_msgSend(objj_msgSend(_1d,"class"),"alloc"),"initWithRequest:callback:delegate:startImmediately:",_1f,_20,_21,YES); +} +})]); +p;17;CPKeyedArchiver.jt;10342;@STATIC;1.0;i;9;CPArray.ji;9;CPCoder.ji;8;CPData.ji;14;CPDictionary.ji;10;CPNumber.ji;10;CPString.ji;9;CPValue.jt;10222; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPData.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPNumber.j",YES); +objj_executeFile("CPString.j",YES); +objj_executeFile("CPValue.j",YES); +var _1=nil; +var _2=1,_3=2,_4=4,_5=8,_6=16; +var _7="$null",_8=nil,_9="CP$UID",_a="$top",_b="$objects",_c="$archiver",_d="$version",_e="$classname",_f="$classes",_10="$class"; +var _11=Nil,_12=Nil; +var _13=objj_allocateClassPair(CPValue,"_CPKeyedArchiverValue"),_14=_13.isa; +objj_registerClassPair(_13); +var _13=objj_allocateClassPair(CPCoder,"CPKeyedArchiver"),_14=_13.isa; +class_addIvars(_13,[new objj_ivar("_delegate"),new objj_ivar("_delegateSelectors"),new objj_ivar("_data"),new objj_ivar("_objects"),new objj_ivar("_UIDs"),new objj_ivar("_conditionalUIDs"),new objj_ivar("_replacementObjects"),new objj_ivar("_replacementClassNames"),new objj_ivar("_plistObject"),new objj_ivar("_plistObjects"),new objj_ivar("_outputFormat")]); +objj_registerClassPair(_13); +class_addMethods(_13,[new objj_method(sel_getUid("initForWritingWithMutableData:"),function(_15,_16,_17){ +with(_15){ +_15=objj_msgSendSuper({receiver:_15,super_class:objj_getClass("CPKeyedArchiver").super_class},"init"); +if(_15){ +_data=_17; +_objects=[]; +_UIDs=objj_msgSend(CPDictionary,"dictionary"); +_conditionalUIDs=objj_msgSend(CPDictionary,"dictionary"); +_replacementObjects=objj_msgSend(CPDictionary,"dictionary"); +_data=_17; +_plistObject=objj_msgSend(CPDictionary,"dictionary"); +_plistObjects=objj_msgSend(CPArray,"arrayWithObject:",_7); +} +return _15; +} +}),new objj_method(sel_getUid("finishEncoding"),function(_18,_19){ +with(_18){ +if(_delegate&&_delegateSelectors&_6){ +objj_msgSend(_delegate,"archiverWillFinish:",_18); +} +var i=0,_1a=_plistObject,_1b=[]; +for(;i<_objects.length;++i){ +var _1c=_objects[i],_1d=objj_msgSend(_1c,"classForKeyedArchiver"); +_plistObject=_plistObjects[objj_msgSend(_UIDs,"objectForKey:",objj_msgSend(_1c,"UID"))]; +objj_msgSend(_1c,"encodeWithCoder:",_18); +if(_delegate&&_delegateSelectors&_2){ +objj_msgSend(_delegate,"archiver:didEncodeObject:",_18,_1c); +} +} +_plistObject=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_plistObject,"setObject:forKey:",_1a,_a); +objj_msgSend(_plistObject,"setObject:forKey:",_plistObjects,_b); +objj_msgSend(_plistObject,"setObject:forKey:",objj_msgSend(_18,"className"),_c); +objj_msgSend(_plistObject,"setObject:forKey:","100000",_d); +objj_msgSend(_data,"setPlistObject:",_plistObject); +if(_delegate&&_delegateSelectors&_5){ +objj_msgSend(_delegate,"archiverDidFinish:",_18); +} +} +}),new objj_method(sel_getUid("outputFormat"),function(_1e,_1f){ +with(_1e){ +return _outputFormat; +} +}),new objj_method(sel_getUid("setOutputFormat:"),function(_20,_21,_22){ +with(_20){ +_outputFormat=_22; +} +}),new objj_method(sel_getUid("encodeBool:forKey:"),function(_23,_24,_25,_26){ +with(_23){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_23,_25,NO),_26); +} +}),new objj_method(sel_getUid("encodeDouble:forKey:"),function(_28,_29,_2a,_2b){ +with(_28){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_28,_2a,NO),_2b); +} +}),new objj_method(sel_getUid("encodeFloat:forKey:"),function(_2c,_2d,_2e,_2f){ +with(_2c){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_2c,_2e,NO),_2f); +} +}),new objj_method(sel_getUid("encodeInt:forKey:"),function(_30,_31,_32,_33){ +with(_30){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_30,_32,NO),_33); +} +}),new objj_method(sel_getUid("setDelegate:"),function(_34,_35,_36){ +with(_34){ +_delegate=_36; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:didEncodeObject:"))){ +_delegateSelectors|=_2; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:willEncodeObject:"))){ +_delegateSelectors|=_3; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:willReplaceObject:withObject:"))){ +_delegateSelectors|=_4; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:didFinishEncoding:"))){ +_delegateSelectors|=_CPKeyedArchiverDidFinishEncodingSelector; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("archiver:willFinishEncoding:"))){ +_delegateSelectors|=_CPKeyedArchiverWillFinishEncodingSelector; +} +} +}),new objj_method(sel_getUid("delegate"),function(_37,_38){ +with(_37){ +return _delegate; +} +}),new objj_method(sel_getUid("encodePoint:forKey:"),function(_39,_3a,_3b,_3c){ +with(_39){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_39,CPStringFromPoint(_3b),NO),_3c); +} +}),new objj_method(sel_getUid("encodeRect:forKey:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_3d,CPStringFromRect(_3f),NO),_40); +} +}),new objj_method(sel_getUid("encodeSize:forKey:"),function(_41,_42,_43,_44){ +with(_41){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_41,CPStringFromSize(_43),NO),_44); +} +}),new objj_method(sel_getUid("encodeConditionalObject:forKey:"),function(_45,_46,_47,_48){ +with(_45){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_45,_47,YES),_48); +} +}),new objj_method(sel_getUid("encodeNumber:forKey:"),function(_49,_4a,_4b,_4c){ +with(_49){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_49,_4b,NO),_4c); +} +}),new objj_method(sel_getUid("encodeObject:forKey:"),function(_4d,_4e,_4f,_50){ +with(_4d){ +objj_msgSend(_plistObject,"setObject:forKey:",_27(_4d,_4f,NO),_50); +} +}),new objj_method(sel_getUid("_encodeArrayOfObjects:forKey:"),function(_51,_52,_53,_54){ +with(_51){ +var i=0,_55=_53.length,_56=objj_msgSend(CPArray,"arrayWithCapacity:",_55); +for(;i<_55;++i){ +objj_msgSend(_56,"addObject:",_27(_51,_53[i],NO)); +} +objj_msgSend(_plistObject,"setObject:forKey:",_56,_54); +} +}),new objj_method(sel_getUid("_encodeDictionaryOfObjects:forKey:"),function(_57,_58,_59,_5a){ +with(_57){ +var key,_5b=objj_msgSend(_59,"keyEnumerator"),_5c=objj_msgSend(CPDictionary,"dictionary"); +while(key=objj_msgSend(_5b,"nextObject")){ +objj_msgSend(_5c,"setObject:forKey:",_27(_57,objj_msgSend(_59,"objectForKey:",key),NO),key); +} +objj_msgSend(_plistObject,"setObject:forKey:",_5c,_5a); +} +}),new objj_method(sel_getUid("setClassName:forClass:"),function(_5d,_5e,_5f,_60){ +with(_5d){ +if(!_replacementClassNames){ +_replacementClassNames=objj_msgSend(CPDictionary,"dictionary"); +} +objj_msgSend(_replacementClassNames,"setObject:forKey:",_5f,CPStringFromClass(_60)); +} +}),new objj_method(sel_getUid("classNameForClass:"),function(_61,_62,_63){ +with(_61){ +if(!_replacementClassNames){ +return _63.name; +} +var _64=objj_msgSend(_replacementClassNames,"objectForKey:",CPStringFromClass(aClassName)); +return _64?_64:_63.name; +} +})]); +class_addMethods(_14,[new objj_method(sel_getUid("initialize"),function(_65,_66){ +with(_65){ +if(_65!=objj_msgSend(CPKeyedArchiver,"class")){ +return; +} +_11=objj_msgSend(CPString,"class"); +_12=objj_msgSend(CPNumber,"class"); +_8=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",0,_9); +} +}),new objj_method(sel_getUid("allowsKeyedCoding"),function(_67,_68){ +with(_67){ +return YES; +} +}),new objj_method(sel_getUid("archivedDataWithRootObject:"),function(_69,_6a,_6b){ +with(_69){ +var _6c=objj_msgSend(CPData,"dataWithPlistObject:",nil),_6d=objj_msgSend(objj_msgSend(_69,"alloc"),"initForWritingWithMutableData:",_6c); +objj_msgSend(_6d,"encodeObject:forKey:",_6b,"root"); +objj_msgSend(_6d,"finishEncoding"); +return _6c; +} +}),new objj_method(sel_getUid("setClassName:forClass:"),function(_6e,_6f,_70,_71){ +with(_6e){ +if(!_1){ +_1=objj_msgSend(CPDictionary,"dictionary"); +} +objj_msgSend(_1,"setObject:forKey:",_70,CPStringFromClass(_71)); +} +}),new objj_method(sel_getUid("classNameForClass:"),function(_72,_73,_74){ +with(_72){ +if(!_1){ +return _74.name; +} +var _75=objj_msgSend(_1,"objectForKey:",CPStringFromClass(aClassName)); +return _75?_75:_74.name; +} +})]); +var _27=function(_76,_77,_78){ +if(_77!==nil&&!_77.isa){ +_77=objj_msgSend(_CPKeyedArchiverValue,"valueWithJSObject:",_77); +} +var _79=objj_msgSend(_77,"UID"),_7a=objj_msgSend(_76._replacementObjects,"objectForKey:",_79); +if(_7a===nil){ +_7a=objj_msgSend(_77,"replacementObjectForKeyedArchiver:",_76); +if(_76._delegate){ +if(_7a!==_77&&_76._delegateSelectors&_4){ +objj_msgSend(_76._delegate,"archiver:willReplaceObject:withObject:",_76,_77,_7a); +} +if(_76._delegateSelectors&_3){ +_77=objj_msgSend(_76._delegate,"archiver:willEncodeObject:",_76,_7a); +if(_77!==_7a&&_76._delegateSelectors&_4){ +objj_msgSend(_76._delegate,"archiver:willReplaceObject:withObject:",_76,_7a,_77); +} +_7a=_77; +} +} +objj_msgSend(_76._replacementObjects,"setObject:forKey:",_7a,_79); +} +if(_7a===nil){ +return _8; +} +var UID=objj_msgSend(_76._UIDs,"objectForKey:",_79=objj_msgSend(_7a,"UID")); +if(UID===nil){ +if(_78){ +if((UID=objj_msgSend(_76._conditionalUIDs,"objectForKey:",_79))===nil){ +objj_msgSend(_76._conditionalUIDs,"setObject:forKey:",UID=objj_msgSend(_76._plistObjects,"count"),_79); +objj_msgSend(_76._plistObjects,"addObject:",_7); +} +}else{ +var _7b=objj_msgSend(_7a,"classForKeyedArchiver"),_7c=nil; +if((_7b===_11)||(_7b===_12)){ +_7c=_7a; +}else{ +_7c=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_76._objects,"addObject:",_7a); +var _7d=objj_msgSend(_76,"classNameForClass:",_7b); +if(!_7d){ +_7d=objj_msgSend(objj_msgSend(_76,"class"),"classNameForClass:",_7b); +} +if(!_7d){ +_7d=_7b.name; +}else{ +_7b=CPClassFromString(_7d); +} +var _7e=objj_msgSend(_76._UIDs,"objectForKey:",_7d); +if(!_7e){ +var _7f=objj_msgSend(CPDictionary,"dictionary"),_80=[]; +objj_msgSend(_7f,"setObject:forKey:",_7d,_e); +do{ +objj_msgSend(_80,"addObject:",CPStringFromClass(_7b)); +}while(_7b=objj_msgSend(_7b,"superclass")); +objj_msgSend(_7f,"setObject:forKey:",_80,_f); +_7e=objj_msgSend(_76._plistObjects,"count"); +objj_msgSend(_76._plistObjects,"addObject:",_7f); +objj_msgSend(_76._UIDs,"setObject:forKey:",_7e,_7d); +} +objj_msgSend(_7c,"setObject:forKey:",objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_7e,_9),_10); +} +UID=objj_msgSend(_76._conditionalUIDs,"objectForKey:",_79); +if(UID!==nil){ +objj_msgSend(_76._UIDs,"setObject:forKey:",UID,_79); +objj_msgSend(_76._plistObjects,"replaceObjectAtIndex:withObject:",UID,_7c); +}else{ +objj_msgSend(_76._UIDs,"setObject:forKey:",UID=objj_msgSend(_76._plistObjects,"count"),_79); +objj_msgSend(_76._plistObjects,"addObject:",_7c); +} +} +} +return objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",UID,_9); +}; +p;19;CPKeyedUnarchiver.jt;8540;@STATIC;1.0;i;9;CPCoder.ji;8;CPNull.jt;8496; +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPNull.j",YES); +CPInvalidUnarchiveOperationException="CPInvalidUnarchiveOperationException"; +var _1=1<<0,_2=1<<1,_3=1<<2,_4=1<<3,_5=1<<4,_6=1<<5; +var _7="$null"; +_CPKeyedArchiverUIDKey="CP$UID",_CPKeyedArchiverTopKey="$top",_CPKeyedArchiverObjectsKey="$objects",_CPKeyedArchiverArchiverKey="$archiver",_CPKeyedArchiverVersionKey="$version",_CPKeyedArchiverClassNameKey="$classname",_CPKeyedArchiverClassesKey="$classes",_CPKeyedArchiverClassKey="$class"; +var _8=Nil,_9=Nil,_a=Nil,_b=Nil,_c=Nil,_d=Nil,_e=Nil,_f=Nil; +var _10=objj_allocateClassPair(CPCoder,"CPKeyedUnarchiver"),_11=_10.isa; +class_addIvars(_10,[new objj_ivar("_delegate"),new objj_ivar("_delegateSelectors"),new objj_ivar("_data"),new objj_ivar("_replacementClasses"),new objj_ivar("_objects"),new objj_ivar("_archive"),new objj_ivar("_plistObject"),new objj_ivar("_plistObjects")]); +objj_registerClassPair(_10); +class_addMethods(_10,[new objj_method(sel_getUid("initForReadingWithData:"),function(_12,_13,_14){ +with(_12){ +_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPKeyedUnarchiver").super_class},"init"); +if(_12){ +_archive=objj_msgSend(_14,"plistObject"); +_objects=[objj_msgSend(CPNull,"null")]; +_plistObject=objj_msgSend(_archive,"objectForKey:",_CPKeyedArchiverTopKey); +_plistObjects=objj_msgSend(_archive,"objectForKey:",_CPKeyedArchiverObjectsKey); +_replacementClasses=new CFMutableDictionary(); +} +return _12; +} +}),new objj_method(sel_getUid("containsValueForKey:"),function(_15,_16,_17){ +with(_15){ +return _plistObject.valueForKey(_17)!=nil; +} +}),new objj_method(sel_getUid("_decodeDictionaryOfObjectsForKey:"),function(_18,_19,_1a){ +with(_18){ +var _1b=_plistObject.valueForKey(_1a),_1c=(_1b!=nil)&&_1b.isa; +if(_1c===_b||_1c===_c){ +var _1d=_1b.keys(),_1e=0,_1f=_1d.length,_20=new CFMutableDictionary(); +for(;_1e<_1f;++_1e){ +var key=_1d[_1e]; +_20.setValueForKey(key,_21(_18,_1b.valueForKey(key).valueForKey(_CPKeyedArchiverUIDKey))); +} +return _20; +} +return nil; +} +}),new objj_method(sel_getUid("decodeBoolForKey:"),function(_22,_23,_24){ +with(_22){ +return !!objj_msgSend(_22,"decodeObjectForKey:",_24); +} +}),new objj_method(sel_getUid("decodeFloatForKey:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_25,"decodeObjectForKey:",_27); +} +}),new objj_method(sel_getUid("decodeDoubleForKey:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(_28,"decodeObjectForKey:",_2a); +} +}),new objj_method(sel_getUid("decodeIntForKey:"),function(_2b,_2c,_2d){ +with(_2b){ +return objj_msgSend(_2b,"decodeObjectForKey:",_2d); +} +}),new objj_method(sel_getUid("decodePointForKey:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=objj_msgSend(_2e,"decodeObjectForKey:",_30); +if(_31){ +return CPPointFromString(_31); +}else{ +return CPPointMake(0,0); +} +} +}),new objj_method(sel_getUid("decodeRectForKey:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"decodeObjectForKey:",_34); +if(_35){ +return CPRectFromString(_35); +}else{ +return CPRectMakeZero(); +} +} +}),new objj_method(sel_getUid("decodeSizeForKey:"),function(_36,_37,_38){ +with(_36){ +var _39=objj_msgSend(_36,"decodeObjectForKey:",_38); +if(_39){ +return CPSizeFromString(_39); +}else{ +return CPSizeMake(0,0); +} +} +}),new objj_method(sel_getUid("decodeObjectForKey:"),function(_3a,_3b,_3c){ +with(_3a){ +var _3d=_plistObject.valueForKey(_3c),_3e=(_3d!=nil)&&_3d.isa; +if(_3e===_b||_3e===_c){ +return _21(_3a,_3d.valueForKey(_CPKeyedArchiverUIDKey)); +}else{ +if(_3e===_d||_3e===_e||_3e===_a){ +return _3d; +}else{ +if(_3e===_8||_3e===_9){ +var _3f=0,_40=_3d.length,_41=[]; +for(;_3f<_40;++_3f){ +_41[_3f]=_21(_3a,_3d[_3f].valueForKey(_CPKeyedArchiverUIDKey)); +} +return _41; +} +} +} +return nil; +} +}),new objj_method(sel_getUid("decodeBytesForKey:"),function(_42,_43,_44){ +with(_42){ +var _45=objj_msgSend(_42,"decodeObjectForKey:",_44); +if(!_45){ +return nil; +} +var _46=_45.isa; +if(_46===_e){ +return _45.bytes; +} +return nil; +} +}),new objj_method(sel_getUid("finishDecoding"),function(_47,_48){ +with(_47){ +if(_delegateSelectors&_4){ +objj_msgSend(_delegate,"unarchiverWillFinish:",_47); +} +if(_delegateSelectors&_5){ +objj_msgSend(_delegate,"unarchiverDidFinish:",_47); +} +} +}),new objj_method(sel_getUid("delegate"),function(_49,_4a){ +with(_49){ +return _delegate; +} +}),new objj_method(sel_getUid("setDelegate:"),function(_4b,_4c,_4d){ +with(_4b){ +_delegate=_4d; +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:cannotDecodeObjectOfClassName:originalClasses:"))){ +_delegateSelectors|=_1; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:didDecodeObject:"))){ +_delegateSelectors|=_2; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:willReplaceObject:withObject:"))){ +_delegateSelectors|=_3; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiverWillFinish:"))){ +_delegateSelectors|=_CPKeyedUnarchiverWilFinishSelector; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiverDidFinish:"))){ +_delegateSelectors|=_5; +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("unarchiver:cannotDecodeObjectOfClassName:originalClasses:"))){ +_delegateSelectors|=_6; +} +} +}),new objj_method(sel_getUid("setClass:forClassName:"),function(_4e,_4f,_50,_51){ +with(_4e){ +_replacementClasses.setValueForKey(_51,_50); +} +}),new objj_method(sel_getUid("classForClassName:"),function(_52,_53,_54){ +with(_52){ +return _replacementClasses.valueForKey(_54); +} +}),new objj_method(sel_getUid("allowsKeyedCoding"),function(_55,_56){ +with(_55){ +return YES; +} +})]); +class_addMethods(_11,[new objj_method(sel_getUid("initialize"),function(_57,_58){ +with(_57){ +if(_57!==objj_msgSend(CPKeyedUnarchiver,"class")){ +return; +} +_8=objj_msgSend(CPArray,"class"); +_9=objj_msgSend(CPMutableArray,"class"); +_a=objj_msgSend(CPString,"class"); +_b=objj_msgSend(CPDictionary,"class"); +_c=objj_msgSend(CPMutableDictionary,"class"); +_d=objj_msgSend(CPNumber,"class"); +_e=objj_msgSend(CPData,"class"); +_f=objj_msgSend(_CPKeyedArchiverValue,"class"); +} +}),new objj_method(sel_getUid("unarchiveObjectWithData:"),function(_59,_5a,_5b){ +with(_59){ +if(!_5b){ +CPLog.error("Null data passed to -[CPKeyedUnarchiver unarchiveObjectWithData:]."); +return nil; +} +var _5c=objj_msgSend(objj_msgSend(_59,"alloc"),"initForReadingWithData:",_5b),_5d=objj_msgSend(_5c,"decodeObjectForKey:","root"); +objj_msgSend(_5c,"finishDecoding"); +return _5d; +} +}),new objj_method(sel_getUid("unarchiveObjectWithFile:"),function(_5e,_5f,_60){ +with(_5e){ +} +}),new objj_method(sel_getUid("unarchiveObjectWithFile:asynchronously:"),function(_61,_62,_63,_64){ +with(_61){ +} +})]); +var _21=function(_65,_66){ +var _67=_65._objects[_66]; +if(_67){ +if(_67===_65._objects[0]){ +return nil; +}else{ +return _67; +} +} +var _67,_68=_65._plistObjects[_66],_69=_68.isa; +if(_69===_b||_69===_c){ +var _6a=_65._plistObjects[_68.valueForKey(_CPKeyedArchiverClassKey).valueForKey(_CPKeyedArchiverUIDKey)],_6b=_6a.valueForKey(_CPKeyedArchiverClassNameKey),_6c=_6a.valueForKey(_CPKeyedArchiverClassesKey),_6d=objj_msgSend(_65,"classForClassName:",_6b); +if(!_6d){ +_6d=CPClassFromString(_6b); +} +if(!_6d&&(_65._delegateSelectors&_6)){ +_6d=objj_msgSend(_delegate,"unarchiver:cannotDecodeObjectOfClassName:originalClasses:",_65,_6b,_6c); +} +if(!_6d){ +objj_msgSend(CPException,"raise:reason:",CPInvalidUnarchiveOperationException,"-[CPKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class ("+_6b+")"); +} +var _6e=_65._plistObject; +_65._plistObject=_68; +_67=objj_msgSend(_6d,"allocWithCoder:",_65); +_65._objects[_66]=_67; +var _6f=objj_msgSend(_67,"initWithCoder:",_65); +_65._plistObject=_6e; +if(_6f!==_67){ +if(_65._delegateSelectors&_3){ +objj_msgSend(_65._delegate,"unarchiver:willReplaceObject:withObject:",_65,_67,_6f); +} +_67=_6f; +_65._objects[_66]=_6f; +} +_6f=objj_msgSend(_67,"awakeAfterUsingCoder:",_65); +if(_6f!==_67){ +if(_65._delegateSelectors&_3){ +objj_msgSend(_65._delegate,"unarchiver:willReplaceObject:withObject:",_65,_67,_6f); +} +_67=_6f; +_65._objects[_66]=_6f; +} +if(_65._delegate){ +if(_65._delegateSelectors&_2){ +_6f=objj_msgSend(_65._delegate,"unarchiver:didDecodeObject:",_65,_67); +} +if(_6f!=_67){ +if(_65._delegateSelectors&_3){ +objj_msgSend(_65._delegate,"unarchiver:willReplaceObject:withObject:",_65,_67,_6f); +} +_67=_6f; +_65._objects[_66]=_6f; +} +} +}else{ +_65._objects[_66]=_67=_68; +if(objj_msgSend(_67,"class")===_a){ +if(_67===_7){ +_65._objects[_66]=_65._objects[0]; +return nil; +}else{ +_65._objects[_66]=_67=_68; +} +} +} +if((_67!=nil)&&(_67.isa===_f)){ +_67=objj_msgSend(_67,"JSObject"); +} +return _67; +}; +p;18;CPKeyValueCoding.jt;7312;@STATIC;1.0;i;9;CPArray.ji;14;CPDictionary.ji;8;CPNull.ji;10;CPObject.ji;21;CPKeyValueObserving.ji;13;CPArray+KVO.jt;7190; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPNull.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=nil,_2=nil; +CPUndefinedKeyException="CPUndefinedKeyException"; +CPTargetObjectUserInfoKey="CPTargetObjectUserInfoKey"; +CPUnknownUserInfoKey="CPUnknownUserInfoKey"; +var _3="$CPObjectAccessorsForClassKey",_4="$CPObjectModifiersForClassKey"; +var _5=objj_getClass("CPObject"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("_ivarForKey:"),function(_7,_8,_9){ +with(_7){ +var _a="_"+_9; +if(typeof _7[_a]!="undefined"){ +return _a; +} +var _b="is"+_9.charAt(0).toUpperCase()+_9.substr(1); +_a="_"+_b; +if(typeof _7[_a]!="undefined"){ +return _a; +} +_a=_9; +if(typeof _7[_a]!="undefined"){ +return _a; +} +_a=_b; +if(typeof _7[_a]!="undefined"){ +return _a; +} +return nil; +} +}),new objj_method(sel_getUid("valueForKey:"),function(_c,_d,_e){ +with(_c){ +var _f=objj_msgSend(_c,"class"),_10=_11(_f,_e); +if(_10){ +return objj_msgSend(_c,_10); +} +if(objj_msgSend(_f,"accessInstanceVariablesDirectly")){ +var _12=objj_msgSend(_c,"_ivarForKey:",_e); +if(_12){ +return _c[_12]; +} +} +return objj_msgSend(_c,"valueForUndefinedKey:",_e); +} +}),new objj_method(sel_getUid("valueForKeyPath:"),function(_13,_14,_15){ +with(_13){ +var _16=_15.indexOf("."); +if(_16===-1){ +return objj_msgSend(_13,"valueForKey:",_15); +} +var _17=_15.substring(0,_16),_18=_15.substring(_16+1),_19=objj_msgSend(_13,"valueForKey:",_17); +return objj_msgSend(_19,"valueForKeyPath:",_18); +} +}),new objj_method(sel_getUid("dictionaryWithValuesForKeys:"),function(_1a,_1b,_1c){ +with(_1a){ +var _1d=0,_1e=_1c.length,_1f=objj_msgSend(CPDictionary,"dictionary"); +for(;_1d<_1e;++_1d){ +var key=_1c[_1d],_20=objj_msgSend(_1a,"valueForKey:",key); +if(_20===nil){ +objj_msgSend(_1f,"setObject:forKey:",objj_msgSend(CPNull,"null"),key); +}else{ +objj_msgSend(_1f,"setObject:forKey:",_20,key); +} +} +return _1f; +} +}),new objj_method(sel_getUid("valueForUndefinedKey:"),function(_21,_22,_23){ +with(_21){ +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:",CPUndefinedKeyException,objj_msgSend(_21,"description")+" is not key value coding-compliant for the key "+_23,objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_21,_23],[CPTargetObjectUserInfoKey,CPUnknownUserInfoKey])),"raise"); +} +}),new objj_method(sel_getUid("setValue:forKeyPath:"),function(_24,_25,_26,_27){ +with(_24){ +if(!_27){ +_27="self"; +} +var i=0,_28=_27.split("."),_29=_28.length-1,_2a=_24; +for(;i<_29;++i){ +_2a=objj_msgSend(_2a,"valueForKey:",_28[i]); +} +objj_msgSend(_2a,"setValue:forKey:",_26,_28[i]); +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_2b,_2c,_2d,_2e){ +with(_2b){ +var _2f=objj_msgSend(_2b,"class"),_30=objj_msgSend(_2f,"_modifierForKey:",_2e); +if(_30){ +return objj_msgSend(_2b,_30,_2d); +} +if(objj_msgSend(_2f,"accessInstanceVariablesDirectly")){ +var _31=objj_msgSend(_2b,"_ivarForKey:",_2e); +if(_31){ +objj_msgSend(_2b,"willChangeValueForKey:",_2e); +_2b[_31]=_2d; +objj_msgSend(_2b,"didChangeValueForKey:",_2e); +return; +} +} +objj_msgSend(_2b,"setValue:forUndefinedKey:",_2d,_2e); +} +}),new objj_method(sel_getUid("setValue:forUndefinedKey:"),function(_32,_33,_34,_35){ +with(_32){ +objj_msgSend(objj_msgSend(CPException,"exceptionWithName:reason:userInfo:",CPUndefinedKeyException,objj_msgSend(_32,"description")+" is not key value coding-compliant for the key "+_35,objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_32,_35],[CPTargetObjectUserInfoKey,CPUnknownUserInfoKey])),"raise"); +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("accessInstanceVariablesDirectly"),function(_36,_37){ +with(_36){ +return YES; +} +}),new objj_method(sel_getUid("_accessorForKey:"),function(_38,_39,_3a){ +with(_38){ +var _3b=nil,_3c=isa[_3]; +if(_3c){ +_3b=_3c[_3a]; +if(_3b){ +return _3b===objj_msgSend(CPNull,"null")?nil:_3b; +} +}else{ +_3c=isa[_3]={}; +} +var _3d=_3a.charAt(0).toUpperCase()+_3a.substr(1); +if(objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("get"+_3d))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString(_3a))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("is"+_3d))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("_get"+_3d))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("_"+_3a))||objj_msgSend(_38,"instancesRespondToSelector:",_3b=CPSelectorFromString("_is"+_3d))){ +_3c[_3a]=_3b; +return _3b; +} +_3c[_3a]=objj_msgSend(CPNull,"null"); +return nil; +} +}),new objj_method(sel_getUid("_modifierForKey:"),function(_3e,_3f,_40){ +with(_3e){ +if(!_2){ +_2=objj_msgSend(CPDictionary,"dictionary"); +} +var UID=objj_msgSend(isa,"UID"),_41=nil,_42=objj_msgSend(_2,"objectForKey:",UID); +if(_42){ +_41=objj_msgSend(_42,"objectForKey:",_40); +if(_41){ +return _41===objj_msgSend(CPNull,"null")?nil:_41; +} +}else{ +_42=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_2,"setObject:forKey:",_42,UID); +} +if(_41){ +return _41===objj_msgSend(CPNull,"null")?nil:_41; +} +var _43=_40.charAt(0).toUpperCase()+_40.substr(1)+":"; +if(objj_msgSend(_3e,"instancesRespondToSelector:",_41=CPSelectorFromString("set"+_43))||objj_msgSend(_3e,"instancesRespondToSelector:",_41=CPSelectorFromString("_set"+_43))){ +objj_msgSend(_42,"setObject:forKey:",_41,_40); +return _41; +} +objj_msgSend(_42,"setObject:forKey:",objj_msgSend(CPNull,"null"),_40); +return nil; +} +})]); +var _44=objj_msgSend(CPNull,"null"); +var _11=function(_45,_46){ +var _47=nil,_48=_45.isa[_3]; +if(_48){ +_47=_48[_46]; +if(_47){ +return _47===_44?nil:_47; +} +}else{ +_48=_45.isa[_3]={}; +} +var _49=_46.charAt(0).toUpperCase()+_46.substr(1); +if(objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("get"+_49))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString(_46))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("is"+_49))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("_get"+_49))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("_"+_46))||objj_msgSend(_45,"instancesRespondToSelector:",_47=CPSelectorFromString("_is"+_49))){ +_48[_46]=_47; +return _47; +} +_48[_46]=_44; +return nil; +}; +var _5=objj_getClass("CPDictionary"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPDictionary\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("valueForKey:"),function(_4a,_4b,_4c){ +with(_4a){ +if(objj_msgSend(_4c,"hasPrefix:","@")){ +return objj_msgSendSuper({receiver:_4a,super_class:objj_getClass("CPDictionary").super_class},"valueForKey:",_4c.substr(1)); +} +return objj_msgSend(_4a,"objectForKey:",_4c); +} +}),new objj_method(sel_getUid("setValue:forKey:"),function(_4d,_4e,_4f,_50){ +with(_4d){ +objj_msgSend(_4d,"setObject:forKey:",_4f,_50); +} +})]); +var _5=objj_getClass("CPNull"); +if(!_5){ +throw new SyntaxError("*** Could not find definition for class \"CPNull\""); +} +var _6=_5.isa; +class_addMethods(_5,[new objj_method(sel_getUid("valueForKey:"),function(_51,_52,_53){ +with(_51){ +return _51; +} +})]); +objj_executeFile("CPKeyValueObserving.j",YES); +objj_executeFile("CPArray+KVO.j",YES); +p;21;CPKeyValueObserving.jt;18935;@STATIC;1.0;i;9;CPArray.ji;14;CPDictionary.ji;13;CPException.ji;8;CPNull.ji;10;CPObject.ji;7;CPSet.ji;13;CPArray+KVO.jt;18809; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPNull.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPSet.j",YES); +var _1=objj_getClass("CPObject"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPObject\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("willChangeValueForKey:"),function(_3,_4,_5){ +with(_3){ +} +}),new objj_method(sel_getUid("didChangeValueForKey:"),function(_6,_7,_8){ +with(_6){ +} +}),new objj_method(sel_getUid("willChange:valuesAtIndexes:forKey:"),function(_9,_a,_b,_c,_d){ +with(_9){ +} +}),new objj_method(sel_getUid("didChange:valuesAtIndexes:forKey:"),function(_e,_f,_10,_11,key){ +with(_e){ +} +}),new objj_method(sel_getUid("addObserver:forKeyPath:options:context:"),function(_12,_13,_14,_15,_16,_17){ +with(_12){ +if(!_14||!_15){ +return; +} +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_12),"_addObserver:forKeyPath:options:context:",_14,_15,_16,_17); +} +}),new objj_method(sel_getUid("removeObserver:forKeyPath:"),function(_18,_19,_1a,_1b){ +with(_18){ +if(!_1a||!_1b){ +return; +} +objj_msgSend(_18[_1c],"_removeObserver:forKeyPath:",_1a,_1b); +} +}),new objj_method(sel_getUid("applyChange:toKeyPath:"),function(_1d,_1e,_1f,_20){ +with(_1d){ +var _21=objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeKindKey); +if(_21===CPKeyValueChangeSetting){ +var _22=objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeNewKey); +objj_msgSend(_1d,"setValue:forKeyPath:",_22===objj_msgSend(CPNull,"null")?nil:_22,_20); +}else{ +if(_21===CPKeyValueChangeInsertion){ +objj_msgSend(objj_msgSend(_1d,"mutableArrayValueForKeyPath:",_20),"insertObjects:atIndexes:",objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeNewKey),objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeIndexesKey)); +}else{ +if(_21===CPKeyValueChangeRemoval){ +objj_msgSend(objj_msgSend(_1d,"mutableArrayValueForKeyPath:",_20),"removeObjectsAtIndexes:",objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeIndexesKey)); +}else{ +if(_21===CPKeyValueChangeReplacement){ +objj_msgSend(objj_msgSend(_1d,"mutableArrayValueForKeyPath:",_20),"replaceObjectAtIndexes:withObjects:",objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeIndexesKey),objj_msgSend(_1f,"objectForKey:",CPKeyValueChangeNewKey)); +} +} +} +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("automaticallyNotifiesObserversForKey:"),function(_23,_24,_25){ +with(_23){ +return YES; +} +}),new objj_method(sel_getUid("keyPathsForValuesAffectingValueForKey:"),function(_26,_27,_28){ +with(_26){ +var _29=_28.charAt(0).toUpperCase()+_28.substring(1); +selector="keyPathsForValuesAffecting"+_29; +if(objj_msgSend(objj_msgSend(_26,"class"),"respondsToSelector:",selector)){ +return objj_msgSend(objj_msgSend(_26,"class"),selector); +} +return objj_msgSend(CPSet,"set"); +} +})]); +var _1=objj_getClass("CPDictionary"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPDictionary\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("inverseChangeDictionary"),function(_2a,_2b){ +with(_2a){ +var _2c=objj_msgSend(_2a,"mutableCopy"),_2d=objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeKindKey); +if(_2d===CPKeyValueChangeSetting||_2d===CPKeyValueChangeReplacement){ +objj_msgSend(_2c,"setObject:forKey:",objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeOldKey),CPKeyValueChangeNewKey); +objj_msgSend(_2c,"setObject:forKey:",objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeNewKey),CPKeyValueChangeOldKey); +}else{ +if(_2d===CPKeyValueChangeInsertion){ +objj_msgSend(_2c,"setObject:forKey:",CPKeyValueChangeRemoval,CPKeyValueChangeKindKey); +objj_msgSend(_2c,"setObject:forKey:",objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeNewKey),CPKeyValueChangeOldKey); +objj_msgSend(_2c,"removeObjectForKey:",CPKeyValueChangeNewKey); +}else{ +if(_2d===CPKeyValueChangeRemoval){ +objj_msgSend(_2c,"setObject:forKey:",CPKeyValueChangeInsertion,CPKeyValueChangeKindKey); +objj_msgSend(_2c,"setObject:forKey:",objj_msgSend(_2a,"objectForKey:",CPKeyValueChangeOldKey),CPKeyValueChangeNewKey); +objj_msgSend(_2c,"removeObjectForKey:",CPKeyValueChangeOldKey); +} +} +} +return _2c; +} +})]); +CPKeyValueObservingOptionNew=1<<0; +CPKeyValueObservingOptionOld=1<<1; +CPKeyValueObservingOptionInitial=1<<2; +CPKeyValueObservingOptionPrior=1<<3; +CPKeyValueChangeKindKey="CPKeyValueChangeKindKey"; +CPKeyValueChangeNewKey="CPKeyValueChangeNewKey"; +CPKeyValueChangeOldKey="CPKeyValueChangeOldKey"; +CPKeyValueChangeIndexesKey="CPKeyValueChangeIndexesKey"; +CPKeyValueChangeNotificationIsPriorKey="CPKeyValueChangeNotificationIsPriorKey"; +CPKeyValueChangeSetting=1; +CPKeyValueChangeInsertion=2; +CPKeyValueChangeRemoval=3; +CPKeyValueChangeReplacement=4; +var _2e=CPKeyValueObservingOptionNew|CPKeyValueObservingOptionOld,_2f="$KVODEPENDENT",_1c="$KVOPROXY"; +var _1=objj_allocateClassPair(CPObject,"_CPKVOProxy"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_targetObject"),new objj_ivar("_nativeClass"),new objj_ivar("_changesForKey"),new objj_ivar("_observersForKey"),new objj_ivar("_observersForKeyLength"),new objj_ivar("_replacedKeys")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithTarget:"),function(_30,_31,_32){ +with(_30){ +_30=objj_msgSendSuper({receiver:_30,super_class:objj_getClass("_CPKVOProxy").super_class},"init"); +_targetObject=_32; +_nativeClass=objj_msgSend(_32,"class"); +_observersForKey={}; +_changesForKey={}; +_observersForKeyLength=0; +return _30; +} +}),new objj_method(sel_getUid("_replaceClass"),function(_33,_34){ +with(_33){ +var _35=_nativeClass,_36="$KVO_"+class_getName(_nativeClass),_37=objj_lookUpClass(_36); +if(_37){ +_targetObject.isa=_37; +_replacedKeys=_37._replacedKeys; +return; +} +var _38=objj_allocateClassPair(_35,_36); +objj_registerClassPair(_38); +_replacedKeys=objj_msgSend(CPSet,"set"); +_38._replacedKeys=_replacedKeys; +var _39=_CPKVOModelSubclass.method_list,_3a=_39.length,i=0; +for(;i<_3a;i++){ +var _3b=_39[i]; +class_addMethod(_38,method_getName(_3b),method_getImplementation(_3b),""); +} +if(objj_msgSend(_targetObject,"isKindOfClass:",objj_msgSend(CPDictionary,"class"))){ +var _39=_CPKVOModelDictionarySubclass.method_list,_3a=_39.length,i=0; +for(;i<_3a;i++){ +var _3b=_39[i]; +class_addMethod(_38,method_getName(_3b),method_getImplementation(_3b),""); +} +} +_targetObject.isa=_38; +} +}),new objj_method(sel_getUid("_replaceSetterForKey:"),function(_3c,_3d,_3e){ +with(_3c){ +if(objj_msgSend(_replacedKeys,"containsObject:",_3e)||!objj_msgSend(_nativeClass,"automaticallyNotifiesObserversForKey:",_3e)){ +return; +} +var _3f=_nativeClass,_40=_3e.charAt(0).toUpperCase()+_3e.substring(1),_41=false,_42=["set"+_40+":",_43,"_set"+_40+":",_43,"insertObject:in"+_40+"AtIndex:",_44,"replaceObjectIn"+_40+"AtIndex:withObject:",_45,"removeObjectFrom"+_40+"AtIndex:",_46]; +var i=0,_47=_42.length; +for(;i<_47;i+=2){ +var _48=sel_getName(_42[i]),_49=_42[i+1]; +if(objj_msgSend(_nativeClass,"instancesRespondToSelector:",_48)){ +var _4a=class_getInstanceMethod(_nativeClass,_48); +class_addMethod(_targetObject.isa,_48,_49(_3e,_4a),""); +objj_msgSend(_replacedKeys,"addObject:",_3e); +} +} +var _4b=objj_msgSend(objj_msgSend(_nativeClass,"keyPathsForValuesAffectingValueForKey:",_3e),"allObjects"),_4c=_4b?_4b.length:0; +if(!_4c){ +return; +} +var _4d=_nativeClass[_2f]; +if(!_4d){ +_4d={}; +_nativeClass[_2f]=_4d; +} +while(_4c--){ +var _4e=_4b[_4c],_4f=_4d[_4e]; +if(!_4f){ +_4f=objj_msgSend(CPSet,"new"); +_4d[_4e]=_4f; +} +objj_msgSend(_4f,"addObject:",_3e); +objj_msgSend(_3c,"_replaceSetterForKey:",_4e); +} +} +}),new objj_method(sel_getUid("_addObserver:forKeyPath:options:context:"),function(_50,_51,_52,_53,_54,_55){ +with(_50){ +if(!_52){ +return; +} +var _56=nil; +if(_53.indexOf(".")!=CPNotFound){ +_56=objj_msgSend(objj_msgSend(_CPKVOForwardingObserver,"alloc"),"initWithKeyPath:object:observer:options:context:",_53,_targetObject,_52,_54,_55); +}else{ +objj_msgSend(_50,"_replaceSetterForKey:",_53); +} +var _57=_observersForKey[_53]; +if(!_57){ +_57=objj_msgSend(CPDictionary,"dictionary"); +_observersForKey[_53]=_57; +_observersForKeyLength++; +} +objj_msgSend(_57,"setObject:forKey:",_58(_52,_54,_55,_56),objj_msgSend(_52,"UID")); +if(_54&CPKeyValueObservingOptionInitial){ +var _59=objj_msgSend(_targetObject,"valueForKeyPath:",_53); +if(_59===nil||_59===undefined){ +_59=objj_msgSend(CPNull,"null"); +} +var _5a=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",_59,CPKeyValueChangeNewKey); +objj_msgSend(_52,"observeValueForKeyPath:ofObject:change:context:",_53,_50,_5a,_55); +} +} +}),new objj_method(sel_getUid("_removeObserver:forKeyPath:"),function(_5b,_5c,_5d,_5e){ +with(_5b){ +var _5f=_observersForKey[_5e]; +if(_5e.indexOf(".")!=CPNotFound){ +var _60=objj_msgSend(_5f,"objectForKey:",objj_msgSend(_5d,"UID")).forwarder; +objj_msgSend(_60,"finalize"); +} +objj_msgSend(_5f,"removeObjectForKey:",objj_msgSend(_5d,"UID")); +if(!objj_msgSend(_5f,"count")){ +_observersForKeyLength--; +delete _observersForKey[_5e]; +} +if(!_observersForKeyLength){ +_targetObject.isa=_nativeClass; +delete _targetObject[_1c]; +} +} +}),new objj_method(sel_getUid("_sendNotificationsForKey:changeOptions:isBefore:"),function(_61,_62,_63,_64,_65){ +with(_61){ +var _66=_changesForKey[_63]; +if(_65){ +_66=_64; +var _67=objj_msgSend(_66,"objectForKey:",CPKeyValueChangeIndexesKey); +if(_67){ +var _68=objj_msgSend(_66,"objectForKey:",CPKeyValueChangeKindKey); +if(_68===CPKeyValueChangeReplacement||_68===CPKeyValueChangeRemoval){ +var _69=objj_msgSend(objj_msgSend(_targetObject,"mutableArrayValueForKeyPath:",_63),"objectsAtIndexes:",_67); +objj_msgSend(_66,"setValue:forKey:",_69,CPKeyValueChangeOldKey); +} +}else{ +var _6a=objj_msgSend(_targetObject,"valueForKey:",_63); +if(_6a===nil||_6a===undefined){ +_6a=objj_msgSend(CPNull,"null"); +} +objj_msgSend(_66,"setObject:forKey:",_6a,CPKeyValueChangeOldKey); +} +objj_msgSend(_66,"setObject:forKey:",1,CPKeyValueChangeNotificationIsPriorKey); +_changesForKey[_63]=_66; +}else{ +if(!_66){ +_66=objj_msgSend(CPDictionary,"new"); +} +objj_msgSend(_66,"removeObjectForKey:",CPKeyValueChangeNotificationIsPriorKey); +var _67=objj_msgSend(_66,"objectForKey:",CPKeyValueChangeIndexesKey); +if(_67){ +var _68=objj_msgSend(_66,"objectForKey:",CPKeyValueChangeKindKey); +if(_68==CPKeyValueChangeReplacement||_68==CPKeyValueChangeInsertion){ +var _69=objj_msgSend(objj_msgSend(_targetObject,"mutableArrayValueForKeyPath:",_63),"objectsAtIndexes:",_67); +objj_msgSend(_66,"setValue:forKey:",_69,CPKeyValueChangeNewKey); +} +}else{ +var _6b=objj_msgSend(_targetObject,"valueForKey:",_63); +if(_6b===nil||_6b===undefined){ +_6b=objj_msgSend(CPNull,"null"); +} +objj_msgSend(_66,"setObject:forKey:",_6b,CPKeyValueChangeNewKey); +} +} +var _6c=objj_msgSend(_observersForKey[_63],"allValues"),_6d=_6c?_6c.length:0; +while(_6d--){ +var _6e=_6c[_6d]; +if(_65&&(_6e.options&CPKeyValueObservingOptionPrior)){ +objj_msgSend(_6e.observer,"observeValueForKeyPath:ofObject:change:context:",_63,_targetObject,_66,_6e.context); +}else{ +if(!_65){ +objj_msgSend(_6e.observer,"observeValueForKeyPath:ofObject:change:context:",_63,_targetObject,_66,_6e.context); +} +} +} +var _6f=_nativeClass[_2f]; +if(!_6f){ +return; +} +var _70=objj_msgSend(_6f[_63],"allObjects"); +if(!_70){ +return; +} +var _71=0,_6d=objj_msgSend(_70,"count"); +for(;_71<_6d;++_71){ +var _72=_70[_71]; +objj_msgSend(_61,"_sendNotificationsForKey:changeOptions:isBefore:",_72,_65?objj_msgSend(_64,"copy"):_changesForKey[_72],_65); +} +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("proxyForObject:"),function(_73,_74,_75){ +with(_73){ +var _76=_75[_1c]; +if(_76){ +return _76; +} +_76=objj_msgSend(objj_msgSend(_73,"alloc"),"initWithTarget:",_75); +objj_msgSend(_76,"_replaceClass"); +_75[_1c]=_76; +return _76; +} +})]); +var _1=objj_allocateClassPair(Nil,"_CPKVOModelSubclass"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("willChangeValueForKey:"),function(_77,_78,_79){ +with(_77){ +var _7a=objj_msgSend(_77,"class"),_7b=sel_getUid("willChangeValueForKey:"),_7c=class_getMethodImplementation(_7a,_7b); +_7c(_77,_7b,_79); +if(!_79){ +return; +} +var _7d=objj_msgSend(CPDictionary,"dictionaryWithObject:forKey:",CPKeyValueChangeSetting,CPKeyValueChangeKindKey); +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_77),"_sendNotificationsForKey:changeOptions:isBefore:",_79,_7d,YES); +} +}),new objj_method(sel_getUid("didChangeValueForKey:"),function(_7e,_7f,_80){ +with(_7e){ +var _81=objj_msgSend(_7e,"class"),_82=sel_getUid("didChangeValueForKey:"),_83=class_getMethodImplementation(_81,_82); +_83(_7e,_82,_80); +if(!_80){ +return; +} +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_7e),"_sendNotificationsForKey:changeOptions:isBefore:",_80,nil,NO); +} +}),new objj_method(sel_getUid("willChange:valuesAtIndexes:forKey:"),function(_84,_85,_86,_87,_88){ +with(_84){ +var _89=objj_msgSend(_84,"class"),_8a=sel_getUid("willChange:valuesAtIndexes:forKey:"),_8b=class_getMethodImplementation(_89,_8a); +_8b(_84,_8a,_86,_87,_88); +if(!_88){ +return; +} +var _8c=objj_msgSend(CPDictionary,"dictionaryWithObjects:forKeys:",[_86,_87],[CPKeyValueChangeKindKey,CPKeyValueChangeIndexesKey]); +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_84),"_sendNotificationsForKey:changeOptions:isBefore:",_88,_8c,YES); +} +}),new objj_method(sel_getUid("didChange:valuesAtIndexes:forKey:"),function(_8d,_8e,_8f,_90,_91){ +with(_8d){ +var _92=objj_msgSend(_8d,"class"),_93=sel_getUid("didChange:valuesAtIndexes:forKey:"),_94=class_getMethodImplementation(_92,_93); +_94(_8d,_93,_8f,_90,_91); +if(!_91){ +return; +} +objj_msgSend(objj_msgSend(_CPKVOProxy,"proxyForObject:",_8d),"_sendNotificationsForKey:changeOptions:isBefore:",_91,nil,NO); +} +}),new objj_method(sel_getUid("class"),function(_95,_96){ +with(_95){ +return _95[_1c]._nativeClass; +} +}),new objj_method(sel_getUid("superclass"),function(_97,_98){ +with(_97){ +return objj_msgSend(objj_msgSend(_97,"class"),"superclass"); +} +}),new objj_method(sel_getUid("isKindOfClass:"),function(_99,_9a,_9b){ +with(_99){ +return objj_msgSend(objj_msgSend(_99,"class"),"isSubclassOfClass:",_9b); +} +}),new objj_method(sel_getUid("isMemberOfClass:"),function(_9c,_9d,_9e){ +with(_9c){ +return objj_msgSend(_9c,"class")==_9e; +} +}),new objj_method(sel_getUid("className"),function(_9f,_a0){ +with(_9f){ +return objj_msgSend(_9f,"class").name; +} +})]); +var _1=objj_allocateClassPair(Nil,"_CPKVOModelDictionarySubclass"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("removeAllObjects"),function(_a1,_a2){ +with(_a1){ +var _a3=objj_msgSend(_a1,"allKeys"),_a4=objj_msgSend(_a3,"count"),i=0; +for(;i<_a4;i++){ +objj_msgSend(_a1,"willChangeValueForKey:",_a3[i]); +} +var _a5=objj_msgSend(_a1,"class"),_a6=sel_getUid("removeAllObjects"),_a7=class_getMethodImplementation(_a5,_a6); +_a7(_a1,_a6); +for(i=0;i<_a4;i++){ +objj_msgSend(_a1,"didChangeValueForKey:",_a3[i]); +} +} +}),new objj_method(sel_getUid("removeObjectForKey:"),function(_a8,_a9,_aa){ +with(_a8){ +objj_msgSend(_a8,"willChangeValueForKey:",_aa); +var _ab=objj_msgSend(_a8,"class"),_ac=sel_getUid("removeObjectForKey:"),_ad=class_getMethodImplementation(_ab,_ac); +_ad(_a8,_ac,_aa); +objj_msgSend(_a8,"didChangeValueForKey:",_aa); +} +}),new objj_method(sel_getUid("setObject:forKey:"),function(_ae,_af,_b0,_b1){ +with(_ae){ +objj_msgSend(_ae,"willChangeValueForKey:",_b1); +var _b2=objj_msgSend(_ae,"class"),_b3=sel_getUid("setObject:forKey:"),_b4=class_getMethodImplementation(_b2,_b3); +_b4(_ae,_b3,_b0,_b1); +objj_msgSend(_ae,"didChangeValueForKey:",_b1); +} +})]); +var _1=objj_allocateClassPair(CPObject,"_CPKVOForwardingObserver"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_object"),new objj_ivar("_observer"),new objj_ivar("_context"),new objj_ivar("_firstPart"),new objj_ivar("_secondPart"),new objj_ivar("_value")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKeyPath:object:observer:options:context:"),function(_b5,_b6,_b7,_b8,_b9,_ba,_bb){ +with(_b5){ +_b5=objj_msgSendSuper({receiver:_b5,super_class:objj_getClass("_CPKVOForwardingObserver").super_class},"init"); +_context=_bb; +_observer=_b9; +_object=_b8; +var _bc=_b7.indexOf("."); +if(_bc==CPNotFound){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Created _CPKVOForwardingObserver without compound key path: "+_b7); +} +_firstPart=_b7.substring(0,_bc); +_secondPart=_b7.substring(_bc+1); +objj_msgSend(_object,"addObserver:forKeyPath:options:context:",_b5,_firstPart,_2e,nil); +_value=objj_msgSend(_object,"valueForKey:",_firstPart); +if(_value){ +objj_msgSend(_value,"addObserver:forKeyPath:options:context:",_b5,_secondPart,_2e,nil); +} +return _b5; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_bd,_be,_bf,_c0,_c1,_c2){ +with(_bd){ +if(_bf===_firstPart){ +objj_msgSend(_observer,"observeValueForKeyPath:ofObject:change:context:",_firstPart,_object,_c1,_context); +if(_value){ +objj_msgSend(_value,"removeObserver:forKeyPath:",_bd,_secondPart); +} +_value=objj_msgSend(_object,"valueForKey:",_firstPart); +if(_value){ +objj_msgSend(_value,"addObserver:forKeyPath:options:context:",_bd,_secondPart,_2e,nil); +} +}else{ +objj_msgSend(_observer,"observeValueForKeyPath:ofObject:change:context:",_firstPart+"."+_bf,_object,_c1,_context); +} +} +}),new objj_method(sel_getUid("finalize"),function(_c3,_c4){ +with(_c3){ +if(_value){ +objj_msgSend(_value,"removeObserver:forKeyPath:",_c3,_secondPart); +} +objj_msgSend(_object,"removeObserver:forKeyPath:",_c3,_firstPart); +_object=nil; +_observer=nil; +_context=nil; +_value=nil; +} +})]); +var _58=_58=function(_c5,_c6,_c7,_c8){ +return {observer:_c5,options:_c6,context:_c7,forwarder:_c8}; +}; +var _43=_43=function(_c9,_ca){ +return function(_cb,_cc,_cd){ +objj_msgSend(_cb,"willChangeValueForKey:",_c9); +_ca.method_imp(_cb,_cc,_cd); +objj_msgSend(_cb,"didChangeValueForKey:",_c9); +}; +}; +var _44=_44=function(_ce,_cf){ +return function(_d0,_d1,_d2,_d3){ +objj_msgSend(_d0,"willChange:valuesAtIndexes:forKey:",CPKeyValueChangeInsertion,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_d3),_ce); +_cf.method_imp(_d0,_d1,_d2,_d3); +objj_msgSend(_d0,"didChange:valuesAtIndexes:forKey:",CPKeyValueChangeInsertion,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_d3),_ce); +}; +}; +var _45=_45=function(_d4,_d5){ +return function(_d6,_d7,_d8,_d9){ +objj_msgSend(_d6,"willChange:valuesAtIndexes:forKey:",CPKeyValueChangeReplacement,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_d8),_d4); +_d5.method_imp(_d6,_d7,_d8,_d9); +objj_msgSend(_d6,"didChange:valuesAtIndexes:forKey:",CPKeyValueChangeReplacement,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_d8),_d4); +}; +}; +var _46=_46=function(_da,_db){ +return function(_dc,_dd,_de){ +objj_msgSend(_dc,"willChange:valuesAtIndexes:forKey:",CPKeyValueChangeRemoval,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_de),_da); +_db.method_imp(_dc,_dd,_de); +objj_msgSend(_dc,"didChange:valuesAtIndexes:forKey:",CPKeyValueChangeRemoval,objj_msgSend(CPIndexSet,"indexSetWithIndex:",_de),_da); +}; +}; +objj_executeFile("CPArray+KVO.j",YES); +p;7;CPLog.jt;17;@STATIC;1.0;t;1; +p;16;CPNotification.jt;1472;@STATIC;1.0;i;13;CPException.ji;10;CPObject.jt;1420; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPNotification"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_name"),new objj_ivar("_object"),new objj_ivar("_userInfo")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +objj_msgSend(CPException,"raise:reason:",CPUnsupportedMethodException,"CPNotification's init method should not be used"); +} +}),new objj_method(sel_getUid("initWithName:object:userInfo:"),function(_5,_6,_7,_8,_9){ +with(_5){ +_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPNotification").super_class},"init"); +if(_5){ +_name=_7; +_object=_8; +_userInfo=_9; +} +return _5; +} +}),new objj_method(sel_getUid("name"),function(_a,_b){ +with(_a){ +return _name; +} +}),new objj_method(sel_getUid("object"),function(_c,_d){ +with(_c){ +return _object; +} +}),new objj_method(sel_getUid("userInfo"),function(_e,_f){ +with(_e){ +return _userInfo; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("notificationWithName:object:userInfo:"),function(_10,_11,_12,_13,_14){ +with(_10){ +return objj_msgSend(objj_msgSend(_10,"alloc"),"initWithName:object:userInfo:",_12,_13,_14); +} +}),new objj_method(sel_getUid("notificationWithName:object:"),function(_15,_16,_17,_18){ +with(_15){ +return objj_msgSend(objj_msgSend(_15,"alloc"),"initWithName:object:userInfo:",_17,_18,nil); +} +})]); +p;22;CPNotificationCenter.jt;6517;@STATIC;1.0;i;9;CPArray.ji;14;CPDictionary.ji;13;CPException.ji;16;CPNotification.ji;8;CPNull.jt;6415; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPNotification.j",YES); +objj_executeFile("CPNull.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPNotificationCenter"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_namedRegistries"),new objj_ivar("_unnamedRegistry")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPNotificationCenter").super_class},"init"); +if(_4){ +_namedRegistries=objj_msgSend(CPDictionary,"dictionary"); +_unnamedRegistry=objj_msgSend(objj_msgSend(_CPNotificationRegistry,"alloc"),"init"); +} +return _4; +} +}),new objj_method(sel_getUid("addObserver:selector:name:object:"),function(_6,_7,_8,_9,_a,_b){ +with(_6){ +var _c,_d=objj_msgSend(objj_msgSend(_CPNotificationObserver,"alloc"),"initWithObserver:selector:",_8,_9); +if(_a==nil){ +_c=_unnamedRegistry; +}else{ +if(!(_c=objj_msgSend(_namedRegistries,"objectForKey:",_a))){ +_c=objj_msgSend(objj_msgSend(_CPNotificationRegistry,"alloc"),"init"); +objj_msgSend(_namedRegistries,"setObject:forKey:",_c,_a); +} +} +objj_msgSend(_c,"addObserver:object:",_d,_b); +} +}),new objj_method(sel_getUid("removeObserver:"),function(_e,_f,_10){ +with(_e){ +var _11=nil,_12=objj_msgSend(_namedRegistries,"keyEnumerator"); +while(_11=objj_msgSend(_12,"nextObject")){ +objj_msgSend(objj_msgSend(_namedRegistries,"objectForKey:",_11),"removeObserver:object:",_10,nil); +} +objj_msgSend(_unnamedRegistry,"removeObserver:object:",_10,nil); +} +}),new objj_method(sel_getUid("removeObserver:name:object:"),function(_13,_14,_15,_16,_17){ +with(_13){ +if(_16==nil){ +var _18=nil,_19=objj_msgSend(_namedRegistries,"keyEnumerator"); +while(_18=objj_msgSend(_19,"nextObject")){ +objj_msgSend(objj_msgSend(_namedRegistries,"objectForKey:",_18),"removeObserver:object:",_15,_17); +} +objj_msgSend(_unnamedRegistry,"removeObserver:object:",_15,_17); +}else{ +objj_msgSend(objj_msgSend(_namedRegistries,"objectForKey:",_16),"removeObserver:object:",_15,_17); +} +} +}),new objj_method(sel_getUid("postNotification:"),function(_1a,_1b,_1c){ +with(_1a){ +if(!_1c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"postNotification: does not except 'nil' notifications"); +} +_1d(_1a,_1c); +} +}),new objj_method(sel_getUid("postNotificationName:object:userInfo:"),function(_1e,_1f,_20,_21,_22){ +with(_1e){ +_1d(_1e,objj_msgSend(objj_msgSend(CPNotification,"alloc"),"initWithName:object:userInfo:",_20,_21,_22)); +} +}),new objj_method(sel_getUid("postNotificationName:object:"),function(_23,_24,_25,_26){ +with(_23){ +_1d(_23,objj_msgSend(objj_msgSend(CPNotification,"alloc"),"initWithName:object:userInfo:",_25,_26,nil)); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("defaultCenter"),function(_27,_28){ +with(_27){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(CPNotificationCenter,"alloc"),"init"); +} +return _1; +} +})]); +var _1d=function(_29,_2a){ +objj_msgSend(_29._unnamedRegistry,"postNotification:",_2a); +objj_msgSend(objj_msgSend(_29._namedRegistries,"objectForKey:",objj_msgSend(_2a,"name")),"postNotification:",_2a); +}; +var _2=objj_allocateClassPair(CPObject,"_CPNotificationRegistry"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_objectObservers"),new objj_ivar("_observerRemovalCount")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_2b,_2c){ +with(_2b){ +_2b=objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("_CPNotificationRegistry").super_class},"init"); +if(_2b){ +_observerRemovalCount=0; +_objectObservers=objj_msgSend(CPDictionary,"dictionary"); +} +return _2b; +} +}),new objj_method(sel_getUid("addObserver:object:"),function(_2d,_2e,_2f,_30){ +with(_2d){ +if(!_30){ +_30=objj_msgSend(CPNull,"null"); +} +var _31=objj_msgSend(_objectObservers,"objectForKey:",objj_msgSend(_30,"UID")); +if(!_31){ +_31=[]; +objj_msgSend(_objectObservers,"setObject:forKey:",_31,objj_msgSend(_30,"UID")); +} +_31.push(_2f); +} +}),new objj_method(sel_getUid("removeObserver:object:"),function(_32,_33,_34,_35){ +with(_32){ +var _36=[]; +if(_35==nil){ +var key=nil,_37=objj_msgSend(_objectObservers,"keyEnumerator"); +while(key=objj_msgSend(_37,"nextObject")){ +var _38=objj_msgSend(_objectObservers,"objectForKey:",key),_39=_38?_38.length:0; +while(_39--){ +if(objj_msgSend(_38[_39],"observer")==_34){ +++_observerRemovalCount; +_38.splice(_39,1); +} +} +if(!_38||_38.length==0){ +_36.push(key); +} +} +}else{ +var key=objj_msgSend(_35,"UID"),_38=objj_msgSend(_objectObservers,"objectForKey:",key); +_39=_38?_38.length:0; +while(_39--){ +if(objj_msgSend(_38[_39],"observer")==_34){ +++_observerRemovalCount; +_38.splice(_39,1); +} +} +if(!_38||_38.length==0){ +_36.push(key); +} +} +var _39=_36.length; +while(_39--){ +objj_msgSend(_objectObservers,"removeObjectForKey:",_36[_39]); +} +} +}),new objj_method(sel_getUid("postNotification:"),function(_3a,_3b,_3c){ +with(_3a){ +var _3d=_observerRemovalCount,_3e=objj_msgSend(_3c,"object"),_3f=nil; +if(_3e!=nil&&(_3f=objj_msgSend(objj_msgSend(_objectObservers,"objectForKey:",objj_msgSend(_3e,"UID")),"copy"))){ +var _40=_3f,_41=_3f.length; +while(_41--){ +var _42=_3f[_41]; +if((_3d===_observerRemovalCount)||objj_msgSend(_40,"indexOfObjectIdenticalTo:",_42)!==CPNotFound){ +objj_msgSend(_42,"postNotification:",_3c); +} +} +} +_3f=objj_msgSend(objj_msgSend(_objectObservers,"objectForKey:",objj_msgSend(objj_msgSend(CPNull,"null"),"UID")),"copy"); +if(!_3f){ +return; +} +var _3d=_observerRemovalCount,_41=_3f.length,_40=_3f; +while(_41--){ +var _42=_3f[_41]; +if((_3d===_observerRemovalCount)||objj_msgSend(_40,"indexOfObjectIdenticalTo:",_42)!==CPNotFound){ +objj_msgSend(_42,"postNotification:",_3c); +} +} +} +}),new objj_method(sel_getUid("count"),function(_43,_44){ +with(_43){ +return objj_msgSend(_objectObservers,"count"); +} +})]); +var _2=objj_allocateClassPair(CPObject,"_CPNotificationObserver"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_observer"),new objj_ivar("_selector")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithObserver:selector:"),function(_45,_46,_47,_48){ +with(_45){ +if(_45){ +_observer=_47; +_selector=_48; +} +return _45; +} +}),new objj_method(sel_getUid("observer"),function(_49,_4a){ +with(_49){ +return _observer; +} +}),new objj_method(sel_getUid("postNotification:"),function(_4b,_4c,_4d){ +with(_4b){ +objj_msgSend(_observer,"performSelector:withObject:",_selector,_4d); +} +})]); +p;8;CPNull.jt;731;@STATIC;1.0;i;10;CPObject.jt;698; +objj_executeFile("CPObject.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPNull"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("isEqual:"),function(_4,_5,_6){ +with(_4){ +if(_4===_6){ +return YES; +} +return objj_msgSend(_6,"isKindOfClass:",objj_msgSend(CPNull,"class")); +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_7,_8,_9){ +with(_7){ +return objj_msgSend(CPNull,"null"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("null"),function(_d,_e){ +with(_d){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(CPNull,"alloc"),"init"); +} +return _1; +} +})]); +p;10;CPNumber.jt;6048;@STATIC;1.0;i;10;CPObject.ji;15;CPObjJRuntime.jt;5994; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPObjJRuntime.j",YES); +var _1=new Number(),_2=new CFMutableDictionary(); +var _3=objj_allocateClassPair(CPObject,"CPNumber"),_4=_3.isa; +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("initWithBool:"),function(_5,_6,_7){ +with(_5){ +return _7; +} +}),new objj_method(sel_getUid("initWithChar:"),function(_8,_9,_a){ +with(_8){ +if(_a.charCodeAt){ +return _a.charCodeAt(0); +} +return _a; +} +}),new objj_method(sel_getUid("initWithDouble:"),function(_b,_c,_d){ +with(_b){ +return _d; +} +}),new objj_method(sel_getUid("initWithFloat:"),function(_e,_f,_10){ +with(_e){ +return _10; +} +}),new objj_method(sel_getUid("initWithInt:"),function(_11,_12,_13){ +with(_11){ +return _13; +} +}),new objj_method(sel_getUid("initWithLong:"),function(_14,_15,_16){ +with(_14){ +return _16; +} +}),new objj_method(sel_getUid("initWithLongLong:"),function(_17,_18,_19){ +with(_17){ +return _19; +} +}),new objj_method(sel_getUid("initWithShort:"),function(_1a,_1b,_1c){ +with(_1a){ +return _1c; +} +}),new objj_method(sel_getUid("initWithUnsignedChar:"),function(_1d,_1e,_1f){ +with(_1d){ +if(_1f.charCodeAt){ +return _1f.charCodeAt(0); +} +return _1f; +} +}),new objj_method(sel_getUid("initWithUnsignedInt:"),function(_20,_21,_22){ +with(_20){ +return _22; +} +}),new objj_method(sel_getUid("initWithUnsignedLong:"),function(_23,_24,_25){ +with(_23){ +return _25; +} +}),new objj_method(sel_getUid("initWithUnsignedShort:"),function(_26,_27,_28){ +with(_26){ +return _28; +} +}),new objj_method(sel_getUid("UID"),function(_29,_2a){ +with(_29){ +var UID=_2.valueForKey(_29); +if(!UID){ +UID=objj_generateObjectUID(); +_2.setValueForKey(_29,UID); +} +return UID+""; +} +}),new objj_method(sel_getUid("boolValue"),function(_2b,_2c){ +with(_2b){ +return _2b?true:false; +} +}),new objj_method(sel_getUid("charValue"),function(_2d,_2e){ +with(_2d){ +return String.fromCharCode(_2d); +} +}),new objj_method(sel_getUid("decimalValue"),function(_2f,_30){ +with(_2f){ +throw new Error("decimalValue: NOT YET IMPLEMENTED"); +} +}),new objj_method(sel_getUid("descriptionWithLocale:"),function(_31,_32,_33){ +with(_31){ +if(!_33){ +return toString(); +} +throw new Error("descriptionWithLocale: NOT YET IMPLEMENTED"); +} +}),new objj_method(sel_getUid("description"),function(_34,_35){ +with(_34){ +return objj_msgSend(_34,"descriptionWithLocale:",nil); +} +}),new objj_method(sel_getUid("doubleValue"),function(_36,_37){ +with(_36){ +if(typeof _36=="boolean"){ +return _36?1:0; +} +return _36; +} +}),new objj_method(sel_getUid("floatValue"),function(_38,_39){ +with(_38){ +if(typeof _38=="boolean"){ +return _38?1:0; +} +return _38; +} +}),new objj_method(sel_getUid("intValue"),function(_3a,_3b){ +with(_3a){ +if(typeof _3a=="boolean"){ +return _3a?1:0; +} +return _3a; +} +}),new objj_method(sel_getUid("longLongValue"),function(_3c,_3d){ +with(_3c){ +if(typeof _3c=="boolean"){ +return _3c?1:0; +} +return _3c; +} +}),new objj_method(sel_getUid("longValue"),function(_3e,_3f){ +with(_3e){ +if(typeof _3e=="boolean"){ +return _3e?1:0; +} +return _3e; +} +}),new objj_method(sel_getUid("shortValue"),function(_40,_41){ +with(_40){ +if(typeof _40=="boolean"){ +return _40?1:0; +} +return _40; +} +}),new objj_method(sel_getUid("stringValue"),function(_42,_43){ +with(_42){ +return toString(); +} +}),new objj_method(sel_getUid("unsignedCharValue"),function(_44,_45){ +with(_44){ +return String.fromCharCode(_44); +} +}),new objj_method(sel_getUid("unsignedIntValue"),function(_46,_47){ +with(_46){ +if(typeof _46=="boolean"){ +return _46?1:0; +} +return _46; +} +}),new objj_method(sel_getUid("unsignedLongValue"),function(_48,_49){ +with(_48){ +if(typeof _48=="boolean"){ +return _48?1:0; +} +return _48; +} +}),new objj_method(sel_getUid("unsignedShortValue"),function(_4a,_4b){ +with(_4a){ +if(typeof _4a=="boolean"){ +return _4a?1:0; +} +return _4a; +} +}),new objj_method(sel_getUid("compare:"),function(_4c,_4d,_4e){ +with(_4c){ +if(_4c>_4e){ +return CPOrderedDescending; +}else{ +if(_4c<_4e){ +return CPOrderedAscending; +} +} +return CPOrderedSame; +} +}),new objj_method(sel_getUid("isEqualToNumber:"),function(_4f,_50,_51){ +with(_4f){ +return _4f==_51; +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("alloc"),function(_52,_53){ +with(_52){ +return _1; +} +}),new objj_method(sel_getUid("numberWithBool:"),function(_54,_55,_56){ +with(_54){ +return _56; +} +}),new objj_method(sel_getUid("numberWithChar:"),function(_57,_58,_59){ +with(_57){ +if(_59.charCodeAt){ +return _59.charCodeAt(0); +} +return _59; +} +}),new objj_method(sel_getUid("numberWithDouble:"),function(_5a,_5b,_5c){ +with(_5a){ +return _5c; +} +}),new objj_method(sel_getUid("numberWithFloat:"),function(_5d,_5e,_5f){ +with(_5d){ +return _5f; +} +}),new objj_method(sel_getUid("numberWithInt:"),function(_60,_61,_62){ +with(_60){ +return _62; +} +}),new objj_method(sel_getUid("numberWithLong:"),function(_63,_64,_65){ +with(_63){ +return _65; +} +}),new objj_method(sel_getUid("numberWithLongLong:"),function(_66,_67,_68){ +with(_66){ +return _68; +} +}),new objj_method(sel_getUid("numberWithShort:"),function(_69,_6a,_6b){ +with(_69){ +return _6b; +} +}),new objj_method(sel_getUid("numberWithUnsignedChar:"),function(_6c,_6d,_6e){ +with(_6c){ +if(_6e.charCodeAt){ +return _6e.charCodeAt(0); +} +return _6e; +} +}),new objj_method(sel_getUid("numberWithUnsignedInt:"),function(_6f,_70,_71){ +with(_6f){ +return _71; +} +}),new objj_method(sel_getUid("numberWithUnsignedLong:"),function(_72,_73,_74){ +with(_72){ +return _74; +} +}),new objj_method(sel_getUid("numberWithUnsignedShort:"),function(_75,_76,_77){ +with(_75){ +return _77; +} +})]); +var _3=objj_getClass("CPNumber"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPNumber\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_78,_79,_7a){ +with(_78){ +return objj_msgSend(_7a,"decodeNumber"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7b,_7c,_7d){ +with(_7b){ +objj_msgSend(_7d,"encodeNumber:forKey:",_7b,"self"); +} +})]); +Number.prototype.isa=CPNumber; +Boolean.prototype.isa=CPNumber; +objj_msgSend(CPNumber,"initialize"); +p;10;CPObject.jt;6862;@STATIC;1.0;t;6843; +var _1=objj_allocateClassPair(Nil,"CPObject"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("isa")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return _3; +} +}),new objj_method(sel_getUid("copy"),function(_5,_6){ +with(_5){ +return _5; +} +}),new objj_method(sel_getUid("mutableCopy"),function(_7,_8){ +with(_7){ +return objj_msgSend(_7,"copy"); +} +}),new objj_method(sel_getUid("dealloc"),function(_9,_a){ +with(_9){ +} +}),new objj_method(sel_getUid("class"),function(_b,_c){ +with(_b){ +return isa; +} +}),new objj_method(sel_getUid("isKindOfClass:"),function(_d,_e,_f){ +with(_d){ +return objj_msgSend(isa,"isSubclassOfClass:",_f); +} +}),new objj_method(sel_getUid("isMemberOfClass:"),function(_10,_11,_12){ +with(_10){ +return _10.isa===_12; +} +}),new objj_method(sel_getUid("isProxy"),function(_13,_14){ +with(_13){ +return NO; +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(_15,_16,_17){ +with(_15){ +return !!class_getInstanceMethod(isa,_17); +} +}),new objj_method(sel_getUid("implementsSelector:"),function(_18,_19,_1a){ +with(_18){ +var _1b=class_copyMethodList(isa),_1c=_1b.length; +while(_1c--){ +if(method_getName(_1b[_1c])===_1a){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("methodForSelector:"),function(_1d,_1e,_1f){ +with(_1d){ +return class_getMethodImplementation(isa,_1f); +} +}),new objj_method(sel_getUid("methodSignatureForSelector:"),function(_20,_21,_22){ +with(_20){ +return nil; +} +}),new objj_method(sel_getUid("description"),function(_23,_24){ +with(_23){ +return "<"+class_getName(isa)+" 0x"+objj_msgSend(CPString,"stringWithHash:",objj_msgSend(_23,"UID"))+">"; +} +}),new objj_method(sel_getUid("performSelector:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_25,_27); +} +}),new objj_method(sel_getUid("performSelector:withObject:"),function(_28,_29,_2a,_2b){ +with(_28){ +return objj_msgSend(_28,_2a,_2b); +} +}),new objj_method(sel_getUid("performSelector:withObject:withObject:"),function(_2c,_2d,_2e,_2f,_30){ +with(_2c){ +return objj_msgSend(_2c,_2e,_2f,_30); +} +}),new objj_method(sel_getUid("forwardInvocation:"),function(_31,_32,_33){ +with(_31){ +objj_msgSend(_31,"doesNotRecognizeSelector:",objj_msgSend(_33,"selector")); +} +}),new objj_method(sel_getUid("forward::"),function(_34,_35,_36,_37){ +with(_34){ +var _38=objj_msgSend(_34,"methodSignatureForSelector:",_36); +if(_38){ +invocation=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",_38); +objj_msgSend(invocation,"setTarget:",_34); +objj_msgSend(invocation,"setSelector:",_36); +var _39=2,_3a=_37.length; +for(;_39<_3a;++_39){ +objj_msgSend(invocation,"setArgument:atIndex:",_37[_39],_39); +} +objj_msgSend(_34,"forwardInvocation:",invocation); +return objj_msgSend(invocation,"returnValue"); +} +objj_msgSend(_34,"doesNotRecognizeSelector:",_36); +} +}),new objj_method(sel_getUid("doesNotRecognizeSelector:"),function(_3b,_3c,_3d){ +with(_3b){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,(class_isMetaClass(isa)?"+":"-")+" ["+objj_msgSend(_3b,"className")+" "+_3d+"] unrecognized selector sent to "+(class_isMetaClass(isa)?"class":"instance")+" 0x"+objj_msgSend(CPString,"stringWithHash:",objj_msgSend(_3b,"UID"))); +} +}),new objj_method(sel_getUid("awakeAfterUsingCoder:"),function(_3e,_3f,_40){ +with(_3e){ +return _3e; +} +}),new objj_method(sel_getUid("classForKeyedArchiver"),function(_41,_42){ +with(_41){ +return objj_msgSend(_41,"classForCoder"); +} +}),new objj_method(sel_getUid("classForCoder"),function(_43,_44){ +with(_43){ +return objj_msgSend(_43,"class"); +} +}),new objj_method(sel_getUid("replacementObjectForArchiver:"),function(_45,_46,_47){ +with(_45){ +return objj_msgSend(_45,"replacementObjectForCoder:",_47); +} +}),new objj_method(sel_getUid("replacementObjectForKeyedArchiver:"),function(_48,_49,_4a){ +with(_48){ +return objj_msgSend(_48,"replacementObjectForCoder:",_4a); +} +}),new objj_method(sel_getUid("replacementObjectForCoder:"),function(_4b,_4c,_4d){ +with(_4b){ +return _4b; +} +}),new objj_method(sel_getUid("className"),function(_4e,_4f){ +with(_4e){ +return isa.name; +} +}),new objj_method(sel_getUid("autorelease"),function(_50,_51){ +with(_50){ +return _50; +} +}),new objj_method(sel_getUid("hash"),function(_52,_53){ +with(_52){ +return objj_msgSend(_52,"UID"); +} +}),new objj_method(sel_getUid("UID"),function(_54,_55){ +with(_54){ +if(typeof _54._UID==="undefined"){ +_54._UID=objj_generateObjectUID(); +} +return _UID+""; +} +}),new objj_method(sel_getUid("isEqual:"),function(_56,_57,_58){ +with(_56){ +return _56===_58||objj_msgSend(_56,"UID")===objj_msgSend(_58,"UID"); +} +}),new objj_method(sel_getUid("retain"),function(_59,_5a){ +with(_59){ +return _59; +} +}),new objj_method(sel_getUid("release"),function(_5b,_5c){ +with(_5b){ +} +}),new objj_method(sel_getUid("self"),function(_5d,_5e){ +with(_5d){ +return _5d; +} +}),new objj_method(sel_getUid("superclass"),function(_5f,_60){ +with(_5f){ +return isa.super_class; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("load"),function(_61,_62){ +with(_61){ +} +}),new objj_method(sel_getUid("initialize"),function(_63,_64){ +with(_63){ +} +}),new objj_method(sel_getUid("new"),function(_65,_66){ +with(_65){ +return objj_msgSend(objj_msgSend(_65,"alloc"),"init"); +} +}),new objj_method(sel_getUid("alloc"),function(_67,_68){ +with(_67){ +return class_createInstance(_67); +} +}),new objj_method(sel_getUid("allocWithCoder:"),function(_69,_6a,_6b){ +with(_69){ +return objj_msgSend(_69,"alloc"); +} +}),new objj_method(sel_getUid("class"),function(_6c,_6d){ +with(_6c){ +return _6c; +} +}),new objj_method(sel_getUid("superclass"),function(_6e,_6f){ +with(_6e){ +return super_class; +} +}),new objj_method(sel_getUid("isSubclassOfClass:"),function(_70,_71,_72){ +with(_70){ +var _73=_70; +for(;_73;_73=_73.super_class){ +if(_73===_72){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("isKindOfClass:"),function(_74,_75,_76){ +with(_74){ +return objj_msgSend(_74,"isSubclassOfClass:",_76); +} +}),new objj_method(sel_getUid("isMemberOfClass:"),function(_77,_78,_79){ +with(_77){ +return _77===_79; +} +}),new objj_method(sel_getUid("instancesRespondToSelector:"),function(_7a,_7b,_7c){ +with(_7a){ +return !!class_getInstanceMethod(_7a,_7c); +} +}),new objj_method(sel_getUid("instanceMethodForSelector:"),function(_7d,_7e,_7f){ +with(_7d){ +return class_getMethodImplementation(_7d,_7f); +} +}),new objj_method(sel_getUid("description"),function(_80,_81){ +with(_80){ +return class_getName(isa); +} +}),new objj_method(sel_getUid("setVersion:"),function(_82,_83,_84){ +with(_82){ +version=_84; +return _82; +} +}),new objj_method(sel_getUid("version"),function(_85,_86){ +with(_85){ +return version; +} +})]); +objj_class.prototype.toString=objj_object.prototype.toString=function(){ +if(this.isa&&class_getInstanceMethod(this.isa,"description")!=NULL){ +return objj_msgSend(this,"description"); +}else{ +return String(this)+" (-description not implemented)"; +} +}; +p;15;CPObjJRuntime.jt;390;@STATIC;1.0;t;372; +CPStringFromSelector=function(_1){ +return sel_getName(_1); +}; +CPSelectorFromString=function(_2){ +return sel_registerName(_2); +}; +CPClassFromString=function(_3){ +return objj_getClass(_3); +}; +CPStringFromClass=function(_4){ +return class_getName(_4); +}; +CPOrderedAscending=-1; +CPOrderedSame=0; +CPOrderedDescending=1; +CPNotFound=-1; +MIN=Math.min; +MAX=Math.max; +ABS=Math.abs; +p;13;CPOperation.jt;4258;@STATIC;1.0;i;10;CPObject.jt;4224; +objj_executeFile("CPObject.j",YES); +CPOperationQueuePriorityVeryLow=-8; +CPOperationQueuePriorityLow=-4; +CPOperationQueuePriorityNormal=0; +CPOperationQueuePriorityHigh=4; +CPOperationQueuePriorityVeryHigh=8; +var _1=objj_allocateClassPair(CPObject,"CPOperation"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("operations"),new objj_ivar("_cancelled"),new objj_ivar("_executing"),new objj_ivar("_finished"),new objj_ivar("_ready"),new objj_ivar("_queuePriority"),new objj_ivar("_completionFunction"),new objj_ivar("_dependencies")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("main"),function(_3,_4){ +with(_3){ +} +}),new objj_method(sel_getUid("init"),function(_5,_6){ +with(_5){ +if(_5=objj_msgSendSuper({receiver:_5,super_class:objj_getClass("CPOperation").super_class},"init")){ +_cancelled=NO; +_executing=NO; +_finished=NO; +_ready=YES; +_dependencies=objj_msgSend(objj_msgSend(CPArray,"alloc"),"init"); +_queuePriority=CPOperationQueuePriorityNormal; +} +return _5; +} +}),new objj_method(sel_getUid("start"),function(_7,_8){ +with(_7){ +if(!_cancelled){ +objj_msgSend(_7,"willChangeValueForKey:","isExecuting"); +_executing=YES; +objj_msgSend(_7,"didChangeValueForKey:","isExecuting"); +objj_msgSend(_7,"main"); +if(_completionFunction){ +_completionFunction(); +} +objj_msgSend(_7,"willChangeValueForKey:","isExecuting"); +_executing=NO; +objj_msgSend(_7,"didChangeValueForKey:","isExecuting"); +objj_msgSend(_7,"willChangeValueForKey:","isFinished"); +_finished=YES; +objj_msgSend(_7,"didChangeValueForKey:","isFinished"); +} +} +}),new objj_method(sel_getUid("isCancelled"),function(_9,_a){ +with(_9){ +return _cancelled; +} +}),new objj_method(sel_getUid("isExecuting"),function(_b,_c){ +with(_b){ +return _executing; +} +}),new objj_method(sel_getUid("isFinished"),function(_d,_e){ +with(_d){ +return _finished; +} +}),new objj_method(sel_getUid("isConcurrent"),function(_f,_10){ +with(_f){ +return NO; +} +}),new objj_method(sel_getUid("isReady"),function(_11,_12){ +with(_11){ +return _ready; +} +}),new objj_method(sel_getUid("completionFunction"),function(_13,_14){ +with(_13){ +return _completionFunction; +} +}),new objj_method(sel_getUid("setCompletionFunction:"),function(_15,_16,_17){ +with(_15){ +_completionFunction=_17; +} +}),new objj_method(sel_getUid("addDependency:"),function(_18,_19,_1a){ +with(_18){ +objj_msgSend(_18,"willChangeValueForKey:","dependencies"); +objj_msgSend(_1a,"addObserver:forKeyPath:options:context:",_18,"isFinished",(CPKeyValueObservingOptionNew),NULL); +objj_msgSend(_dependencies,"addObject:",_1a); +objj_msgSend(_18,"didChangeValueForKey:","dependencies"); +objj_msgSend(_18,"_updateIsReadyState"); +} +}),new objj_method(sel_getUid("removeDependency:"),function(_1b,_1c,_1d){ +with(_1b){ +objj_msgSend(_1b,"willChangeValueForKey:","dependencies"); +objj_msgSend(_dependencies,"removeObject:",_1d); +objj_msgSend(_1d,"removeObserver:forKeyPath:",_1b,"isFinished"); +objj_msgSend(_1b,"didChangeValueForKey:","dependencies"); +objj_msgSend(_1b,"_updateIsReadyState"); +} +}),new objj_method(sel_getUid("dependencies"),function(_1e,_1f){ +with(_1e){ +return _dependencies; +} +}),new objj_method(sel_getUid("waitUntilFinished"),function(_20,_21){ +with(_20){ +} +}),new objj_method(sel_getUid("cancel"),function(_22,_23){ +with(_22){ +objj_msgSend(_22,"willChangeValueForKey:","isCancelled"); +_cancelled=YES; +objj_msgSend(_22,"didChangeValueForKey:","isCancelled"); +} +}),new objj_method(sel_getUid("setQueuePriority:"),function(_24,_25,_26){ +with(_24){ +_queuePriority=_26; +} +}),new objj_method(sel_getUid("queuePriority"),function(_27,_28){ +with(_27){ +return _queuePriority; +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_29,_2a,_2b,_2c,_2d,_2e){ +with(_29){ +if(_2b=="isFinished"){ +objj_msgSend(_29,"_updateIsReadyState"); +} +} +}),new objj_method(sel_getUid("_updateIsReadyState"),function(_2f,_30){ +with(_2f){ +var _31=YES; +if(_dependencies&&objj_msgSend(_dependencies,"count")>0){ +var i=0; +for(i=0;i0){ +var i=0,_d=objj_msgSend(_operations,"count"); +for(;i<_d;i++){ +var op=objj_msgSend(_operations,"objectAtIndex:",i); +if(objj_msgSend(op,"isReady")&&!objj_msgSend(op,"isCancelled")&&!objj_msgSend(op,"isFinished")&&!objj_msgSend(op,"isExecuting")){ +objj_msgSend(op,"start"); +} +} +} +} +}),new objj_method(sel_getUid("_enableTimer:"),function(_e,_f,_10){ +with(_e){ +if(!_10){ +if(_timer){ +objj_msgSend(_timer,"invalidate"); +_timer=nil; +} +}else{ +if(!_timer){ +_timer=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",0.01,_e,sel_getUid("_runNextOpsInQueue"),nil,YES); +} +} +} +}),new objj_method(sel_getUid("addOperation:"),function(_11,_12,_13){ +with(_11){ +objj_msgSend(_11,"willChangeValueForKey:","operations"); +objj_msgSend(_11,"willChangeValueForKey:","operationCount"); +objj_msgSend(_operations,"addObject:",_13); +objj_msgSend(_11,"_sortOpsByPriority:",_operations); +objj_msgSend(_11,"didChangeValueForKey:","operations"); +objj_msgSend(_11,"didChangeValueForKey:","operationCount"); +} +}),new objj_method(sel_getUid("addOperations:waitUntilFinished:"),function(_14,_15,ops,_16){ +with(_14){ +if(ops){ +if(_16){ +objj_msgSend(_14,"_sortOpsByPriority:",ops); +objj_msgSend(_14,"_runOpsSynchronously:",ops); +} +objj_msgSend(_operations,"addObjectsFromArray:",ops); +objj_msgSend(_14,"_sortOpsByPriority:",_operations); +} +} +}),new objj_method(sel_getUid("addOperationWithFunction:"),function(_17,_18,_19){ +with(_17){ +objj_msgSend(_17,"addOperation:",objj_msgSend(CPFunctionOperation,"functionOperationWithFunction:",_19)); +} +}),new objj_method(sel_getUid("operations"),function(_1a,_1b){ +with(_1a){ +return _operations; +} +}),new objj_method(sel_getUid("operationCount"),function(_1c,_1d){ +with(_1c){ +if(_operations){ +return objj_msgSend(_operations,"count"); +} +return 0; +} +}),new objj_method(sel_getUid("cancelAllOperations"),function(_1e,_1f){ +with(_1e){ +if(_operations){ +var i=0,_20=objj_msgSend(_operations,"count"); +for(;i<_20;i++){ +objj_msgSend(objj_msgSend(_operations,"objectAtIndex:",i),"cancel"); +} +} +} +}),new objj_method(sel_getUid("waitUntilAllOperationsAreFinished"),function(_21,_22){ +with(_21){ +objj_msgSend(_21,"_enableTimer:",NO); +objj_msgSend(_21,"_runOpsSynchronously:",_operations); +if(!_suspended){ +objj_msgSend(_21,"_enableTimer:",YES); +} +} +}),new objj_method(sel_getUid("maxConcurrentOperationCount"),function(_23,_24){ +with(_23){ +return 1; +} +}),new objj_method(sel_getUid("setSuspended:"),function(_25,_26,_27){ +with(_25){ +_suspended=_27; +objj_msgSend(_25,"_enableTimer:",!_27); +} +}),new objj_method(sel_getUid("isSuspended"),function(_28,_29){ +with(_28){ +return _suspended; +} +}),new objj_method(sel_getUid("_sortOpsByPriority:"),function(_2a,_2b,_2c){ +with(_2a){ +if(_2c){ +objj_msgSend(_2c,"sortUsingFunction:context:",function(lhs,rhs){ +if(objj_msgSend(lhs,"queuePriority")objj_msgSend(rhs,"queuePriority")){ +return -1; +}else{ +return 0; +} +} +},nil); +} +} +}),new objj_method(sel_getUid("_runOpsSynchronously:"),function(_2d,_2e,ops){ +with(_2d){ +if(ops){ +var _2f=YES; +while(_2f){ +var i=0,_30=objj_msgSend(ops,"count"); +_2f=NO; +for(;i<_30;i++){ +var op=objj_msgSend(ops,"objectAtIndex:",i); +if(objj_msgSend(op,"isReady")&&!objj_msgSend(op,"isCancelled")&&!objj_msgSend(op,"isFinished")&&!objj_msgSend(op,"isExecuting")){ +objj_msgSend(op,"start"); +} +} +for(i=0;i<_30;i++){ +var op=objj_msgSend(ops,"objectAtIndex:",i); +if(!objj_msgSend(op,"isFinished")&&!objj_msgSend(op,"isCancelled")){ +_2f=YES; +} +} +} +} +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("mainQueue"),function(_31,_32){ +with(_31){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(CPOperationQueue,"alloc"),"init"); +objj_msgSend(_1,"setName:","main"); +} +return _1; +} +}),new objj_method(sel_getUid("currentQueue"),function(_33,_34){ +with(_33){ +return objj_msgSend(CPOperationQueue,"mainQueue"); +} +})]); +p;29;CPPropertyListSerialization.jt;1497;@STATIC;1.0;i;10;CPObject.jt;1463; +objj_executeFile("CPObject.j",YES); +CPPropertyListUnknownFormat=0; +CPPropertyListOpenStepFormat=kCFPropertyListOpenStepFormat; +CPPropertyListXMLFormat_v1_0=kCFPropertyListXMLFormat_v1_0; +CPPropertyListBinaryFormat_v1_0=kCFPropertyListBinaryFormat_v1_0; +CPPropertyList280NorthFormat_v1_0=kCFPropertyList280NorthFormat_v1_0; +var _1=objj_allocateClassPair(CPObject,"CPPropertyListSerialization"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_2,[new objj_method(sel_getUid("dataFromPropertyList:format:"),function(_3,_4,_5,_6){ +with(_3){ +return CPPropertyListCreateData(_5,_6); +} +}),new objj_method(sel_getUid("propertyListFromData:format:"),function(_7,_8,_9,_a){ +with(_7){ +return CPPropertyListCreateFromData(_9,_a); +} +})]); +var _1=objj_getClass("CPPropertyListSerialization"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPPropertyListSerialization\""); +} +var _2=_1.isa; +class_addMethods(_2,[new objj_method(sel_getUid("dataFromPropertyList:format:errorDescription:"),function(_b,_c,_d,_e,_f){ +with(_b){ +_CPReportLenientDeprecation(_b,_c,sel_getUid("dataFromPropertyList:format:")); +return objj_msgSend(_b,"dataFromPropertyList:format:",_d,_e); +} +}),new objj_method(sel_getUid("propertyListFromData:format:errorDescription:"),function(_10,_11,_12,_13,_14){ +with(_10){ +_CPReportLenientDeprecation(_10,_11,sel_getUid("propertyListFromData:format:")); +return objj_msgSend(_10,"propertyListFromData:format:",_12,_13); +} +})]); +p;9;CPProxy.jt;3567;@STATIC;1.0;i;13;CPException.ji;14;CPInvocation.ji;10;CPString.jt;3496; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPString.j",YES); +var _1=objj_allocateClassPair(Nil,"CPProxy"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("methodSignatureForSelector:"),function(_3,_4,_5){ +with(_3){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-methodSignatureForSelector: called on abstract CPProxy class."); +} +}),new objj_method(sel_getUid("forwardInvocation:"),function(_6,_7,_8){ +with(_6){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"-forwardInvocation: called on abstract CPProxy class."); +} +}),new objj_method(sel_getUid("forward::"),function(_9,_a,_b,_c){ +with(_9){ +return objj_msgSend(CPObject,"methodForSelector:",_a)(_9,_a,_b,_c); +} +}),new objj_method(sel_getUid("hash"),function(_d,_e){ +with(_d){ +return objj_msgSend(_d,"UID"); +} +}),new objj_method(sel_getUid("UID"),function(_f,_10){ +with(_f){ +if(typeof _f._UID==="undefined"){ +_f._UID=objj_generateObjectUID(); +} +return _UID; +} +}),new objj_method(sel_getUid("isEqual:"),function(_11,_12,_13){ +with(_11){ +return _11===object; +} +}),new objj_method(sel_getUid("self"),function(_14,_15){ +with(_14){ +return _14; +} +}),new objj_method(sel_getUid("class"),function(_16,_17){ +with(_16){ +return isa; +} +}),new objj_method(sel_getUid("superclass"),function(_18,_19){ +with(_18){ +return class_getSuperclass(isa); +} +}),new objj_method(sel_getUid("performSelector:"),function(_1a,_1b,_1c){ +with(_1a){ +return objj_msgSend(_1a,_1c); +} +}),new objj_method(sel_getUid("performSelector:withObject:"),function(_1d,_1e,_1f,_20){ +with(_1d){ +return objj_msgSend(_1d,_1f,_20); +} +}),new objj_method(sel_getUid("performSelector:withObject:withObject:"),function(_21,_22,_23,_24,_25){ +with(_21){ +return objj_msgSend(_21,_23,_24,_25); +} +}),new objj_method(sel_getUid("isProxy"),function(_26,_27){ +with(_26){ +return YES; +} +}),new objj_method(sel_getUid("isKindOfClass:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(_28,"methodSignatureForSelector:",_29),_2c=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",_2b); +objj_msgSend(_28,"forwardInvocation:",_2c); +return objj_msgSend(_2c,"returnValue"); +} +}),new objj_method(sel_getUid("isMemberOfClass:"),function(_2d,_2e,_2f){ +with(_2d){ +var _30=objj_msgSend(_2d,"methodSignatureForSelector:",_2e),_31=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",_30); +objj_msgSend(_2d,"forwardInvocation:",_31); +return objj_msgSend(_31,"returnValue"); +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"methodSignatureForSelector:",_33),_36=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",_35); +objj_msgSend(_32,"forwardInvocation:",_36); +return objj_msgSend(_36,"returnValue"); +} +}),new objj_method(sel_getUid("description"),function(_37,_38){ +with(_37){ +return "<"+class_getName(isa)+" 0x"+objj_msgSend(CPString,"stringWithHash:",objj_msgSend(_37,"UID"))+">"; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("load"),function(_39,_3a){ +with(_39){ +} +}),new objj_method(sel_getUid("initialize"),function(_3b,_3c){ +with(_3b){ +} +}),new objj_method(sel_getUid("class"),function(_3d,_3e){ +with(_3d){ +return _3d; +} +}),new objj_method(sel_getUid("alloc"),function(_3f,_40){ +with(_3f){ +return class_createInstance(_3f); +} +}),new objj_method(sel_getUid("respondsToSelector:"),function(_41,_42,_43){ +with(_41){ +return !!class_getInstanceMethod(isa,aSelector); +} +})]); +p;9;CPRange.jt;1244;@STATIC;1.0;t;1225; +CPMakeRange=function(_1,_2){ +return {location:_1,length:_2}; +}; +CPCopyRange=function(_3){ +return {location:_3.location,length:_3.length}; +}; +CPMakeRangeCopy=function(_4){ +return {location:_4.location,length:_4.length}; +}; +CPEmptyRange=function(_5){ +return _5.length===0; +}; +CPMaxRange=function(_6){ +return _6.location+_6.length; +}; +CPEqualRanges=function(_7,_8){ +return ((_7.location===_8.location)&&(_7.length===_8.length)); +}; +CPLocationInRange=function(_9,_a){ +return (_9>=_a.location)&&(_9=CPMaxRange(_12)); +}; +CPStringFromRange=function(_13){ +return "{"+_13.location+", "+_13.length+"}"; +}; +CPRangeFromString=function(_14){ +var _15=_14.indexOf(","); +return {location:parseInt(_14.substr(1,_15-1)),length:parseInt(_14.substring(_15+1,_14.length))}; +}; +p;11;CPRunLoop.jt;6935;@STATIC;1.0;i;9;CPArray.ji;10;CPObject.ji;10;CPString.jt;6873; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +CPDefaultRunLoopMode="CPDefaultRunLoopMode"; +_CPRunLoopPerformCompare=function(_1,_2){ +return objj_msgSend(_2,"order")-objj_msgSend(_1,"order"); +}; +var _3=[],_4=5; +var _5=objj_allocateClassPair(CPObject,"_CPRunLoopPerform"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_target"),new objj_ivar("_selector"),new objj_ivar("_argument"),new objj_ivar("_order"),new objj_ivar("_runLoopModes"),new objj_ivar("_isValid")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithSelector:target:argument:order:modes:"),function(_7,_8,_9,_a,_b,_c,_d){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("_CPRunLoopPerform").super_class},"init"); +if(_7){ +_selector=_9; +_target=_a; +_argument=_b; +_order=_c; +_runLoopModes=_d; +_isValid=YES; +} +return _7; +} +}),new objj_method(sel_getUid("selector"),function(_e,_f){ +with(_e){ +return _selector; +} +}),new objj_method(sel_getUid("target"),function(_10,_11){ +with(_10){ +return _target; +} +}),new objj_method(sel_getUid("argument"),function(_12,_13){ +with(_12){ +return _argument; +} +}),new objj_method(sel_getUid("order"),function(_14,_15){ +with(_14){ +return _order; +} +}),new objj_method(sel_getUid("fireInMode:"),function(_16,_17,_18){ +with(_16){ +if(!_isValid){ +return YES; +} +if(objj_msgSend(_runLoopModes,"containsObject:",_18)){ +objj_msgSend(_target,"performSelector:withObject:",_selector,_argument); +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("invalidate"),function(_19,_1a){ +with(_19){ +_isValid=NO; +} +})]); +class_addMethods(_6,[new objj_method(sel_getUid("_poolPerform:"),function(_1b,_1c,_1d){ +with(_1b){ +if(!_1d||_3.length>=_4){ +return; +} +_3.push(_1d); +} +}),new objj_method(sel_getUid("performWithSelector:target:argument:order:modes:"),function(_1e,_1f,_20,_21,_22,_23,_24){ +with(_1e){ +if(_3.length){ +var _25=_3.pop(); +_25._target=_21; +_25._selector=_20; +_25._argument=_22; +_25._order=_23; +_25._runLoopModes=_24; +_25._isValid=YES; +return _25; +} +return objj_msgSend(objj_msgSend(_1e,"alloc"),"initWithSelector:target:argument:order:modes:",_20,_21,_22,_23,_24); +} +})]); +var _26=0; +var _5=objj_allocateClassPair(CPObject,"CPRunLoop"),_6=_5.isa; +class_addIvars(_5,[new objj_ivar("_runLoopLock"),new objj_ivar("_timersForModes"),new objj_ivar("_nativeTimersForModes"),new objj_ivar("_nextTimerFireDatesForModes"),new objj_ivar("_didAddTimer"),new objj_ivar("_effectiveDate"),new objj_ivar("_orderedPerforms"),new objj_ivar("_runLoopInsuranceTimer")]); +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("init"),function(_27,_28){ +with(_27){ +_27=objj_msgSendSuper({receiver:_27,super_class:objj_getClass("CPRunLoop").super_class},"init"); +if(_27){ +_orderedPerforms=[]; +_timersForModes={}; +_nativeTimersForModes={}; +_nextTimerFireDatesForModes={}; +} +return _27; +} +}),new objj_method(sel_getUid("performSelector:target:argument:order:modes:"),function(_29,_2a,_2b,_2c,_2d,_2e,_2f){ +with(_29){ +var _30=objj_msgSend(_CPRunLoopPerform,"performWithSelector:target:argument:order:modes:",_2b,_2c,_2d,_2e,_2f),_31=_orderedPerforms.length; +while(_31--){ +if(_2e_string.length){ +_1f=_string.length; +}else{ +if(_1f<0){ +_1f=0; +} +} +_scanLocation=_1f; +} +}),new objj_method(sel_getUid("_performScanWithSelector:withObject:into:"),function(_20,_21,s,arg,ref){ +with(_20){ +var ret=objj_msgSend(_20,"performSelector:withObject:",s,arg); +if(ref!=nil){ +ref(ret); +} +return ret!=NULL; +} +}),new objj_method(sel_getUid("scanCharactersFromSet:intoString:"),function(_22,_23,_24,ref){ +with(_22){ +return objj_msgSend(_22,"_performScanWithSelector:withObject:into:",sel_getUid("scanCharactersFromSet:"),_24,ref); +} +}),new objj_method(sel_getUid("scanCharactersFromSet:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(_25,"_scanWithSet:breakFlag:",_27,NO); +} +}),new objj_method(sel_getUid("scanUpToCharactersFromSet:intoString:"),function(_28,_29,_2a,ref){ +with(_28){ +return objj_msgSend(_28,"_performScanWithSelector:withObject:into:",sel_getUid("scanUpToCharactersFromSet:"),_2a,ref); +} +}),new objj_method(sel_getUid("scanUpToCharactersFromSet:"),function(_2b,_2c,_2d){ +with(_2b){ +return objj_msgSend(_2b,"_scanWithSet:breakFlag:",_2d,YES); +} +}),new objj_method(sel_getUid("_scanWithSet:breakFlag:"),function(_2e,_2f,_30,_31){ +with(_2e){ +if(objj_msgSend(_2e,"isAtEnd")){ +return nil; +} +var _32=objj_msgSend(_2e,"scanLocation"); +var str=nil; +while(_32<_string.length){ +var c=(_string.charAt(_32)); +if(objj_msgSend(_30,"characterIsMember:",c)==_31){ +break; +} +if(!objj_msgSend(_charactersToBeSkipped,"characterIsMember:",c)){ +if(!str){ +str=""; +} +str+=c; +} +_32++; +} +if(str){ +objj_msgSend(_2e,"setScanLocation:",_32); +} +return str; +} +}),new objj_method(sel_getUid("_movePastCharactersToBeSkipped"),function(_33,_34){ +with(_33){ +var _35=objj_msgSend(_33,"scanLocation"); +var _36=objj_msgSend(_33,"string"); +var _37=objj_msgSend(_33,"charactersToBeSkipped"); +while(_35<_36.length){ +if(!objj_msgSend(_37,"characterIsMember:",_36.charAt(_35))){ +break; +} +_35++; +} +objj_msgSend(_33,"setScanLocation:",_35); +} +}),new objj_method(sel_getUid("scanString:intoString:"),function(_38,_39,_3a,ref){ +with(_38){ +return objj_msgSend(_38,"_performScanWithSelector:withObject:into:",sel_getUid("scanString:"),_3a,ref); +} +}),new objj_method(sel_getUid("scanString:"),function(_3b,_3c,s){ +with(_3b){ +objj_msgSend(_3b,"_movePastCharactersToBeSkipped"); +if(objj_msgSend(_3b,"isAtEnd")){ +return nil; +} +var _3d=objj_msgSend(_3b,"string").substr(objj_msgSend(_3b,"scanLocation"),s.length); +if((_caseSensitive&&_3d!=s)||(!_caseSensitive&&(_3d.toLowerCase()!=s.toLowerCase()))){ +return nil; +}else{ +objj_msgSend(_3b,"setScanLocation:",objj_msgSend(_3b,"scanLocation")+s.length); +return s; +} +} +}),new objj_method(sel_getUid("scanUpToString:intoString:"),function(_3e,_3f,_40,ref){ +with(_3e){ +return objj_msgSend(_3e,"_performScanWithSelector:withObject:into:",sel_getUid("scanUpToString:"),_40,ref); +} +}),new objj_method(sel_getUid("scanUpToString:"),function(_41,_42,s){ +with(_41){ +var _43=objj_msgSend(_41,"scanLocation"),str=objj_msgSend(_41,"string"); +var _44=nil; +while(_4357||(_4b==45&&pos!=_48)){ +break; +} +} +} +objj_msgSend(_46,"setScanLocation:",pos); +return f; +} +return nil; +} +}),new objj_method(sel_getUid("scanInt"),function(_4c,_4d){ +with(_4c){ +objj_msgSend(_4c,"_movePastCharactersToBeSkipped"); +var str=objj_msgSend(_4c,"string"),_4e=objj_msgSend(_4c,"scanLocation"); +if(objj_msgSend(_4c,"isAtEnd")){ +return 0; +} +var s=str.substring(_4e,str.length); +var i=parseInt(s); +if(i){ +var pos,_4f=NO; +for(pos=_4e;pos<_4e+str.length;pos++){ +var _50=str.charCodeAt(pos); +if(_50==46){ +if(_4f==YES){ +break; +} +_4f=YES; +}else{ +if(_50<48||_50>57||(_50==45&&pos!=_4e)){ +break; +} +} +} +objj_msgSend(_4c,"setScanLocation:",pos); +return i; +} +return nil; +} +}),new objj_method(sel_getUid("scanInt:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_51,"_performScanWithSelector:withObject:into:",sel_getUid("scanInt"),nil,_53); +} +}),new objj_method(sel_getUid("scanFloat:"),function(_54,_55,_56){ +with(_54){ +return objj_msgSend(_54,"_performScanWithSelector:withObject:into:",sel_getUid("scanFloat"),nil,_56); +} +}),new objj_method(sel_getUid("scanDouble:"),function(_57,_58,_59){ +with(_57){ +return objj_msgSend(_57,"scanFloat:",_59); +} +}),new objj_method(sel_getUid("description"),function(_5a,_5b){ +with(_5a){ +return objj_msgSendSuper({receiver:_5a,super_class:objj_getClass("CPScanner").super_class},"description")+" {"+CPStringFromClass(objj_msgSend(_5a,"class"))+", state = '"+(objj_msgSend(_5a,"string").substr(0,_scanLocation)+"{{ SCAN LOCATION ->}}"+objj_msgSend(_5a,"string").substr(_scanLocation))+"'; }"; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("scannerWithString:"),function(_5c,_5d,_5e){ +with(_5c){ +return objj_msgSend(objj_msgSend(_5c,"alloc"),"initWithString:",_5e); +} +})]); +p;7;CPSet.jt;8014;@STATIC;1.0;i;9;CPArray.ji;14;CPEnumerator.ji;10;CPNumber.ji;10;CPObject.jt;7933; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPNumber.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPSet"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_contents"),new objj_ivar("_count")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +if(_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPSet").super_class},"init")){ +_count=0; +_contents={}; +} +return _3; +} +}),new objj_method(sel_getUid("initWithArray:"),function(_5,_6,_7){ +with(_5){ +if(_5=objj_msgSend(_5,"init")){ +var _8=_7.length; +while(_8--){ +objj_msgSend(_5,"addObject:",_7[_8]); +} +} +return _5; +} +}),new objj_method(sel_getUid("initWithObjects:count:"),function(_9,_a,_b,_c){ +with(_9){ +return objj_msgSend(_9,"initWithArray:",_b.splice(0,_c)); +} +}),new objj_method(sel_getUid("initWithObjects:"),function(_d,_e,_f){ +with(_d){ +if(_d=objj_msgSend(_d,"init")){ +var _10=arguments.length,i=2; +for(;i<_10&&(argument=arguments[i])!=nil;++i){ +objj_msgSend(_d,"addObject:",argument); +} +} +return _d; +} +}),new objj_method(sel_getUid("initWithSet:"),function(_11,_12,_13){ +with(_11){ +return objj_msgSend(_11,"initWithSet:copyItems:",_13,NO); +} +}),new objj_method(sel_getUid("initWithSet:copyItems:"),function(_14,_15,_16,_17){ +with(_14){ +_14=objj_msgSend(_14,"init"); +if(!_16){ +return _14; +} +var _18=_16._contents,_19; +for(_19 in _18){ +if(_18.hasOwnProperty(_19)){ +if(_17){ +objj_msgSend(_14,"addObject:",objj_msgSend(_18[_19],"copy")); +}else{ +objj_msgSend(_14,"addObject:",_18[_19]); +} +} +} +return _14; +} +}),new objj_method(sel_getUid("allObjects"),function(_1a,_1b){ +with(_1a){ +var _1c=[],_1d; +for(_1d in _contents){ +if(_contents.hasOwnProperty(_1d)){ +_1c.push(_contents[_1d]); +} +} +return _1c; +} +}),new objj_method(sel_getUid("anyObject"),function(_1e,_1f){ +with(_1e){ +var _20; +for(_20 in _contents){ +if(_contents.hasOwnProperty(_20)){ +return _contents[_20]; +} +} +return nil; +} +}),new objj_method(sel_getUid("containsObject:"),function(_21,_22,_23){ +with(_21){ +var obj=_contents[objj_msgSend(_23,"UID")]; +if(obj!==undefined&&objj_msgSend(obj,"isEqual:",_23)){ +return YES; +} +return NO; +} +}),new objj_method(sel_getUid("count"),function(_24,_25){ +with(_24){ +return _count; +} +}),new objj_method(sel_getUid("intersectsSet:"),function(_26,_27,_28){ +with(_26){ +if(_26===_28){ +return YES; +} +var _29=objj_msgSend(_28,"allObjects"),_2a=objj_msgSend(_29,"count"); +while(_2a--){ +if(objj_msgSend(_26,"containsObject:",_29[_2a])){ +return YES; +} +} +return NO; +} +}),new objj_method(sel_getUid("isEqualToSet:"),function(_2b,_2c,set){ +with(_2b){ +return _2b===set||(objj_msgSend(_2b,"count")===objj_msgSend(set,"count")&&objj_msgSend(set,"isSubsetOfSet:",_2b)); +} +}),new objj_method(sel_getUid("isSubsetOfSet:"),function(_2d,_2e,set){ +with(_2d){ +var _2f=objj_msgSend(_2d,"allObjects"),i=0,_30=_2f.length; +for(;i<_30;i++){ +if(!objj_msgSend(set,"containsObject:",_2f[i])){ +return NO; +} +} +return YES; +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:"),function(_31,_32,_33){ +with(_31){ +objj_msgSend(_31,"makeObjectsPerformSelector:withObject:",_33,nil); +} +}),new objj_method(sel_getUid("makeObjectsPerformSelector:withObject:"),function(_34,_35,_36,_37){ +with(_34){ +var _38=objj_msgSend(_34,"allObjects"),i=0,_39=_38.length; +for(;i<_39;i++){ +objj_msgSend(_38[i],"performSelector:withObject:",_36,_37); +} +} +}),new objj_method(sel_getUid("member:"),function(_3a,_3b,_3c){ +with(_3a){ +if(objj_msgSend(_3a,"containsObject:",_3c)){ +return _3c; +} +return nil; +} +}),new objj_method(sel_getUid("objectEnumerator"),function(_3d,_3e){ +with(_3d){ +return objj_msgSend(objj_msgSend(_3d,"allObjects"),"objectEnumerator"); +} +}),new objj_method(sel_getUid("initWithCapacity:"),function(_3f,_40,_41){ +with(_3f){ +_3f=objj_msgSend(_3f,"init"); +return _3f; +} +}),new objj_method(sel_getUid("setSet:"),function(_42,_43,set){ +with(_42){ +objj_msgSend(_42,"removeAllObjects"); +objj_msgSend(_42,"addObjectsFromArray:",objj_msgSend(set,"allObjects")); +} +}),new objj_method(sel_getUid("addObject:"),function(_44,_45,_46){ +with(_44){ +if(objj_msgSend(_44,"containsObject:",_46)){ +return; +} +_contents[objj_msgSend(_46,"UID")]=_46; +_count++; +} +}),new objj_method(sel_getUid("addObjectsFromArray:"),function(_47,_48,_49){ +with(_47){ +var _4a=objj_msgSend(_49,"count"); +while(_4a--){ +objj_msgSend(_47,"addObject:",_49[_4a]); +} +} +}),new objj_method(sel_getUid("removeObject:"),function(_4b,_4c,_4d){ +with(_4b){ +if(objj_msgSend(_4b,"containsObject:",_4d)){ +delete _contents[objj_msgSend(_4d,"UID")]; +_count--; +} +} +}),new objj_method(sel_getUid("removeObjectsInArray:"),function(_4e,_4f,_50){ +with(_4e){ +var _51=objj_msgSend(_50,"count"); +while(_51--){ +objj_msgSend(_4e,"removeObject:",_50[_51]); +} +} +}),new objj_method(sel_getUid("removeAllObjects"),function(_52,_53){ +with(_52){ +_contents={}; +_count=0; +} +}),new objj_method(sel_getUid("intersectSet:"),function(_54,_55,set){ +with(_54){ +var _56=objj_msgSend(_54,"allObjects"),i=0,_57=_56.length; +for(;i<_57;i++){ +if(!objj_msgSend(set,"containsObject:",_56[i])){ +objj_msgSend(_54,"removeObject:",_56[i]); +} +} +} +}),new objj_method(sel_getUid("minusSet:"),function(_58,_59,set){ +with(_58){ +var _5a=objj_msgSend(set,"allObjects"),i=0,_5b=_5a.length; +for(;i<_5b;i++){ +if(objj_msgSend(_58,"containsObject:",_5a[i])){ +objj_msgSend(_58,"removeObject:",_5a[i]); +} +} +} +}),new objj_method(sel_getUid("unionSet:"),function(_5c,_5d,set){ +with(_5c){ +var _5e=objj_msgSend(set,"allObjects"),i=0,_5f=_5e.length; +for(;i<_5f;i++){ +objj_msgSend(_5c,"addObject:",_5e[i]); +} +} +}),new objj_method(sel_getUid("description"),function(_60,_61){ +with(_60){ +return "{("+objj_msgSend(_60,"allObjects").join(", ")+")}"; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("set"),function(_62,_63){ +with(_62){ +return objj_msgSend(objj_msgSend(_62,"alloc"),"init"); +} +}),new objj_method(sel_getUid("setWithArray:"),function(_64,_65,_66){ +with(_64){ +return objj_msgSend(objj_msgSend(_64,"alloc"),"initWithArray:",_66); +} +}),new objj_method(sel_getUid("setWithObject:"),function(_67,_68,_69){ +with(_67){ +return objj_msgSend(objj_msgSend(_67,"alloc"),"initWithArray:",[_69]); +} +}),new objj_method(sel_getUid("setWithObjects:count:"),function(_6a,_6b,_6c,_6d){ +with(_6a){ +return objj_msgSend(objj_msgSend(_6a,"alloc"),"initWithObjects:count:",_6c,_6d); +} +}),new objj_method(sel_getUid("setWithObjects:"),function(_6e,_6f,_70){ +with(_6e){ +var set=objj_msgSend(objj_msgSend(_6e,"alloc"),"init"),_71=arguments.length,i=2; +for(;i<_71&&((argument=arguments[i])!==nil);++i){ +objj_msgSend(set,"addObject:",argument); +} +return set; +} +}),new objj_method(sel_getUid("setWithSet:"),function(_72,_73,set){ +with(_72){ +return objj_msgSend(objj_msgSend(_72,"alloc"),"initWithSet:",set); +} +}),new objj_method(sel_getUid("setWithCapacity:"),function(_74,_75,_76){ +with(_74){ +return objj_msgSend(objj_msgSend(_74,"alloc"),"initWithCapacity:",_76); +} +})]); +var _1=objj_getClass("CPSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("copy"),function(_77,_78){ +with(_77){ +return objj_msgSend(objj_msgSend(CPSet,"alloc"),"initWithSet:",_77); +} +}),new objj_method(sel_getUid("mutableCopy"),function(_79,_7a){ +with(_79){ +return objj_msgSend(_79,"copy"); +} +})]); +var _7b="CPSetObjectsKey"; +var _1=objj_getClass("CPSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_7c,_7d,_7e){ +with(_7c){ +return objj_msgSend(_7c,"initWithArray:",objj_msgSend(_7e,"decodeObjectForKey:",_7b)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_7f,_80,_81){ +with(_7f){ +objj_msgSend(_81,"encodeObject:forKey:",objj_msgSend(_7f,"allObjects"),_7b); +} +})]); +var _1=objj_allocateClassPair(CPSet,"CPMutableSet"),_2=_1.isa; +objj_registerClassPair(_1); +p;18;CPSortDescriptor.jt;2966;@STATIC;1.0;i;10;CPObject.ji;15;CPObjJRuntime.jt;2912; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPObjJRuntime.j",YES); +CPOrderedAscending=-1; +CPOrderedSame=0; +CPOrderedDescending=1; +var _1=objj_allocateClassPair(CPObject,"CPSortDescriptor"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_key"),new objj_ivar("_selector"),new objj_ivar("_ascending")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKey:ascending:"),function(_3,_4,_5,_6){ +with(_3){ +return objj_msgSend(_3,"initWithKey:ascending:selector:",_5,_6,sel_getUid("compare:")); +} +}),new objj_method(sel_getUid("initWithKey:ascending:selector:"),function(_7,_8,_9,_a,_b){ +with(_7){ +_7=objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPSortDescriptor").super_class},"init"); +if(_7){ +_key=_9; +_ascending=_a; +_selector=_b; +} +return _7; +} +}),new objj_method(sel_getUid("ascending"),function(_c,_d){ +with(_c){ +return _ascending; +} +}),new objj_method(sel_getUid("key"),function(_e,_f){ +with(_e){ +return _key; +} +}),new objj_method(sel_getUid("selector"),function(_10,_11){ +with(_10){ +return _selector; +} +}),new objj_method(sel_getUid("compareObject:withObject:"),function(_12,_13,_14,_15){ +with(_12){ +return (_ascending?1:-1)*objj_msgSend(objj_msgSend(_14,"valueForKeyPath:",_key),"performSelector:withObject:",_selector,objj_msgSend(_15,"valueForKeyPath:",_key)); +} +}),new objj_method(sel_getUid("reversedSortDescriptor"),function(_16,_17){ +with(_16){ +return objj_msgSend(objj_msgSend(objj_msgSend(_16,"class"),"alloc"),"initWithKey:ascending:selector:",_key,!_ascending,_selector); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("sortDescriptorWithKey:ascending:"),function(_18,_19,_1a,_1b){ +with(_18){ +return objj_msgSend(objj_msgSend(_18,"alloc"),"initWithKey:ascending:",_1a,_1b); +} +}),new objj_method(sel_getUid("sortDescriptorWithKey:ascending:selector:"),function(_1c,_1d,_1e,_1f,_20){ +with(_1c){ +return objj_msgSend(objj_msgSend(_1c,"alloc"),"initWithKey:ascending:selector:",_1e,_1f,_20); +} +})]); +var _21="CPSortDescriptorKeyKey",_22="CPSortDescriptorAscendingKey",_23="CPSortDescriptorSelectorKey"; +var _1=objj_getClass("CPSortDescriptor"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSortDescriptor\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_24,_25,_26){ +with(_24){ +if(_24=objj_msgSendSuper({receiver:_24,super_class:objj_getClass("CPSortDescriptor").super_class},"init")){ +_key=objj_msgSend(_26,"decodeObjectForKey:",_21); +_ascending=objj_msgSend(_26,"decodeBoolForKey:",_22); +_selector=CPSelectorFromString(objj_msgSend(_26,"decodeObjectForKey:",_23)); +} +return _24; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_27,_28,_29){ +with(_27){ +objj_msgSend(_29,"encodeObject:forKey:",_key,_21); +objj_msgSend(_29,"encodeBool:forKey:",_ascending,_22); +objj_msgSend(_29,"encodeObject:forKey:",CPStringFromSelector(_selector),_23); +} +})]); +p;10;CPString.jt;11356;@STATIC;1.0;i;13;CPException.ji;10;CPObject.ji;18;CPSortDescriptor.ji;9;CPValue.jt;11267; +objj_executeFile("CPException.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPSortDescriptor.j",YES); +objj_executeFile("CPValue.j",YES); +CPCaseInsensitiveSearch=1; +CPLiteralSearch=2; +CPBackwardsSearch=4; +CPAnchoredSearch=8; +CPNumericSearch=64; +CPDiacriticInsensitiveSearch=128; +var _1=new CFMutableDictionary(); +var _2=["/",".","*","+","?","|","$","^","(",")","[","]","{","}","\\"],_3=new RegExp("(\\"+_2.join("|\\")+")","g"),_4=new RegExp("(^\\s+|\\s+$)","g"); +var _5=objj_allocateClassPair(CPObject,"CPString"),_6=_5.isa; +objj_registerClassPair(_5); +class_addMethods(_5,[new objj_method(sel_getUid("initWithString:"),function(_7,_8,_9){ +with(_7){ +return String(_9); +} +}),new objj_method(sel_getUid("initWithFormat:"),function(_a,_b,_c){ +with(_a){ +if(!_c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"initWithFormat: the format can't be 'nil'"); +} +_a=ObjectiveJ.sprintf.apply(this,Array.prototype.slice.call(arguments,2)); +return _a; +} +}),new objj_method(sel_getUid("description"),function(_d,_e){ +with(_d){ +return _d; +} +}),new objj_method(sel_getUid("length"),function(_f,_10){ +with(_f){ +return length; +} +}),new objj_method(sel_getUid("characterAtIndex:"),function(_11,_12,_13){ +with(_11){ +return charAt(_13); +} +}),new objj_method(sel_getUid("stringByAppendingFormat:"),function(_14,_15,_16){ +with(_14){ +if(!_16){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"initWithFormat: the format can't be 'nil'"); +} +return _14+ObjectiveJ.sprintf.apply(this,Array.prototype.slice.call(arguments,2)); +} +}),new objj_method(sel_getUid("stringByAppendingString:"),function(_17,_18,_19){ +with(_17){ +return _17+_19; +} +}),new objj_method(sel_getUid("stringByPaddingToLength:withString:startingAtIndex:"),function(_1a,_1b,_1c,_1d,_1e){ +with(_1a){ +if(length==_1c){ +return _1a; +} +if(_1c=0){ +_1f+=_20; +} +if(-_21<_20.length){ +_1f+=_20.substring(0,-_21); +} +return _1f; +} +}),new objj_method(sel_getUid("componentsSeparatedByString:"),function(_22,_23,_24){ +with(_22){ +return split(_24); +} +}),new objj_method(sel_getUid("substringFromIndex:"),function(_25,_26,_27){ +with(_25){ +return substr(_27); +} +}),new objj_method(sel_getUid("substringWithRange:"),function(_28,_29,_2a){ +with(_28){ +return substr(_2a.location,_2a.length); +} +}),new objj_method(sel_getUid("substringToIndex:"),function(_2b,_2c,_2d){ +with(_2b){ +return substring(0,_2d); +} +}),new objj_method(sel_getUid("rangeOfString:"),function(_2e,_2f,_30){ +with(_2e){ +return objj_msgSend(_2e,"rangeOfString:options:",_30,0); +} +}),new objj_method(sel_getUid("rangeOfString:options:"),function(_31,_32,_33,_34){ +with(_31){ +return objj_msgSend(_31,"rangeOfString:options:range:",_33,_34,nil); +} +}),new objj_method(sel_getUid("rangeOfString:options:range:"),function(_35,_36,_37,_38,_39){ +with(_35){ +var _3a=(_39==nil)?_35:objj_msgSend(_35,"substringWithRange:",_39),_3b=CPNotFound; +if(_38&CPCaseInsensitiveSearch){ +_3a=_3a.toLowerCase(); +_37=_37.toLowerCase(); +} +if(_38&CPBackwardsSearch){ +_3b=_3a.lastIndexOf(_37,_38&CPAnchoredSearch?length-_37.length:0); +}else{ +if(_38&CPAnchoredSearch){ +_3b=_3a.substr(0,_37.length).indexOf(_37)!=CPNotFound?0:CPNotFound; +}else{ +_3b=_3a.indexOf(_37); +} +} +return CPMakeRange(_3b,_3b==CPNotFound?0:_37.length); +} +}),new objj_method(sel_getUid("stringByEscapingRegexControlCharacters"),function(_3c,_3d){ +with(_3c){ +return _3c.replace(_3,"\\$1"); +} +}),new objj_method(sel_getUid("stringByReplacingOccurrencesOfString:withString:"),function(_3e,_3f,_40,_41){ +with(_3e){ +return _3e.replace(new RegExp(objj_msgSend(_40,"stringByEscapingRegexControlCharacters"),"g"),_41); +} +}),new objj_method(sel_getUid("stringByReplacingOccurrencesOfString:withString:options:range:"),function(_42,_43,_44,_45,_46,_47){ +with(_42){ +var _48=substring(0,_47.location),_49=substr(_47.location,_47.length),end=substring(_47.location+_47.length,_42.length),_44=objj_msgSend(_44,"stringByEscapingRegexControlCharacters"),_4a; +if(_46&CPCaseInsensitiveSearch){ +_4a=new RegExp(_44,"gi"); +}else{ +_4a=new RegExp(_44,"g"); +} +return _48+""+_49.replace(_4a,_45)+""+end; +} +}),new objj_method(sel_getUid("stringByReplacingCharactersInRange:withString:"),function(_4b,_4c,_4d,_4e){ +with(_4b){ +return ""+substring(0,_4d.location)+_4e+substring(_4d.location+_4d.length,_4b.length); +} +}),new objj_method(sel_getUid("stringByTrimmingWhitespace"),function(_4f,_50){ +with(_4f){ +return _4f.replace(_4,""); +} +}),new objj_method(sel_getUid("compare:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_51,"compare:options:",_53,nil); +} +}),new objj_method(sel_getUid("caseInsensitiveCompare:"),function(_54,_55,_56){ +with(_54){ +return objj_msgSend(_54,"compare:options:",_56,CPCaseInsensitiveSearch); +} +}),new objj_method(sel_getUid("compare:options:"),function(_57,_58,_59,_5a){ +with(_57){ +var lhs=_57,rhs=_59; +if(_5a&CPCaseInsensitiveSearch){ +lhs=lhs.toLowerCase(); +rhs=rhs.toLowerCase(); +} +if(_5a&CPDiacriticInsensitiveSearch){ +lhs=lhs.stripDiacritics(); +rhs=rhs.stripDiacritics(); +} +if(lhsrhs){ +return CPOrderedDescending; +} +} +return CPOrderedSame; +} +}),new objj_method(sel_getUid("compare:options:range:"),function(_5b,_5c,_5d,_5e,_5f){ +with(_5b){ +var lhs=objj_msgSend(_5b,"substringWithRange:",_5f),rhs=_5d; +return objj_msgSend(lhs,"compare:options:",rhs,_5e); +} +}),new objj_method(sel_getUid("hasPrefix:"),function(_60,_61,_62){ +with(_60){ +return _62&&_62!=""&&indexOf(_62)==0; +} +}),new objj_method(sel_getUid("hasSuffix:"),function(_63,_64,_65){ +with(_63){ +return _65&&_65!=""&&length>=_65.length&&lastIndexOf(_65)==(length-_65.length); +} +}),new objj_method(sel_getUid("isEqual:"),function(_66,_67,_68){ +with(_66){ +if(_66===_68){ +return YES; +} +if(!_68||!objj_msgSend(_68,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +return NO; +} +return objj_msgSend(_66,"isEqualToString:",_68); +} +}),new objj_method(sel_getUid("isEqualToString:"),function(_69,_6a,_6b){ +with(_69){ +return _69==_6b; +} +}),new objj_method(sel_getUid("UID"),function(_6c,_6d){ +with(_6c){ +var UID=_1.valueForKey(_6c); +if(!UID){ +UID=objj_generateObjectUID(); +_1.setValueForKey(_6c,UID); +} +return UID+""; +} +}),new objj_method(sel_getUid("commonPrefixWithString:"),function(_6e,_6f,_70){ +with(_6e){ +return objj_msgSend(_6e,"commonPrefixWithString:options:",_70,0); +} +}),new objj_method(sel_getUid("commonPrefixWithString:options:"),function(_71,_72,_73,_74){ +with(_71){ +var len=0,lhs=_71,rhs=_73,min=MIN(objj_msgSend(lhs,"length"),objj_msgSend(rhs,"length")); +if(_74&CPCaseInsensitiveSearch){ +lhs=objj_msgSend(lhs,"lowercaseString"); +rhs=objj_msgSend(rhs,"lowercaseString"); +} +for(;len=_b3[0]&&_b2<=_b3[_b3.length-1]){ +_b2=_af[i]; +break; +} +} +_b0+=String.fromCharCode(_b2); +} +return _b0; +}; +String.prototype.isa=CPString; +p;9;CPTimer.jt;5527;@STATIC;1.0;i;8;CPDate.ji;14;CPInvocation.ji;10;CPObject.ji;11;CPRunLoop.jt;5446; +objj_executeFile("CPDate.j",YES); +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPRunLoop.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPTimer"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_timeInterval"),new objj_ivar("_invocation"),new objj_ivar("_callback"),new objj_ivar("_repeats"),new objj_ivar("_isValid"),new objj_ivar("_fireDate"),new objj_ivar("_userInfo")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithFireDate:interval:invocation:repeats:"),function(_3,_4,_5,_6,_7,_8){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPTimer").super_class},"init"); +if(_3){ +_timeInterval=_6; +_invocation=_7; +_repeats=_8; +_isValid=YES; +_fireDate=_5; +} +return _3; +} +}),new objj_method(sel_getUid("initWithFireDate:interval:target:selector:userInfo:repeats:"),function(_9,_a,_b,_c,_d,_e,_f,_10){ +with(_9){ +var _11=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",1); +objj_msgSend(_11,"setTarget:",_d); +objj_msgSend(_11,"setSelector:",_e); +objj_msgSend(_11,"setArgument:atIndex:",_9,2); +_9=objj_msgSend(_9,"initWithFireDate:interval:invocation:repeats:",_b,_c,_11,_10); +if(_9){ +_userInfo=_f; +} +return _9; +} +}),new objj_method(sel_getUid("initWithFireDate:interval:callback:repeats:"),function(_12,_13,_14,_15,_16,_17){ +with(_12){ +_12=objj_msgSendSuper({receiver:_12,super_class:objj_getClass("CPTimer").super_class},"init"); +if(_12){ +_timeInterval=_15; +_callback=_16; +_repeats=_17; +_isValid=YES; +_fireDate=_14; +} +return _12; +} +}),new objj_method(sel_getUid("timeInterval"),function(_18,_19){ +with(_18){ +return _timeInterval; +} +}),new objj_method(sel_getUid("fireDate"),function(_1a,_1b){ +with(_1a){ +return _fireDate; +} +}),new objj_method(sel_getUid("setFireDate:"),function(_1c,_1d,_1e){ +with(_1c){ +_fireDate=_1e; +} +}),new objj_method(sel_getUid("fire"),function(_1f,_20){ +with(_1f){ +if(!_isValid){ +return; +} +if(_callback){ +_callback(); +}else{ +objj_msgSend(_invocation,"invoke"); +} +if(!_isValid){ +return; +} +if(_repeats){ +_fireDate=objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_timeInterval); +}else{ +objj_msgSend(_1f,"invalidate"); +} +} +}),new objj_method(sel_getUid("isValid"),function(_21,_22){ +with(_21){ +return _isValid; +} +}),new objj_method(sel_getUid("invalidate"),function(_23,_24){ +with(_23){ +_isValid=NO; +_userInfo=nil; +_invocation=nil; +_callback=nil; +} +}),new objj_method(sel_getUid("userInfo"),function(_25,_26){ +with(_25){ +return _userInfo; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("scheduledTimerWithTimeInterval:invocation:repeats:"),function(_27,_28,_29,_2a,_2b){ +with(_27){ +var _2c=objj_msgSend(objj_msgSend(_27,"alloc"),"initWithFireDate:interval:invocation:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_29),_29,_2a,_2b); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"addTimer:forMode:",_2c,CPDefaultRunLoopMode); +return _2c; +} +}),new objj_method(sel_getUid("scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:"),function(_2d,_2e,_2f,_30,_31,_32,_33){ +with(_2d){ +var _34=objj_msgSend(objj_msgSend(_2d,"alloc"),"initWithFireDate:interval:target:selector:userInfo:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_2f),_2f,_30,_31,_32,_33); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"addTimer:forMode:",_34,CPDefaultRunLoopMode); +return _34; +} +}),new objj_method(sel_getUid("scheduledTimerWithTimeInterval:callback:repeats:"),function(_35,_36,_37,_38,_39){ +with(_35){ +var _3a=objj_msgSend(objj_msgSend(_35,"alloc"),"initWithFireDate:interval:callback:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_37),_37,_38,_39); +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"addTimer:forMode:",_3a,CPDefaultRunLoopMode); +return _3a; +} +}),new objj_method(sel_getUid("timerWithTimeInterval:invocation:repeats:"),function(_3b,_3c,_3d,_3e,_3f){ +with(_3b){ +return objj_msgSend(objj_msgSend(_3b,"alloc"),"initWithFireDate:interval:invocation:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_3d),_3d,_3e,_3f); +} +}),new objj_method(sel_getUid("timerWithTimeInterval:target:selector:userInfo:repeats:"),function(_40,_41,_42,_43,_44,_45,_46){ +with(_40){ +return objj_msgSend(objj_msgSend(_40,"alloc"),"initWithFireDate:interval:target:selector:userInfo:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_42),_42,_43,_44,_45,_46); +} +}),new objj_method(sel_getUid("timerWithTimeInterval:callback:repeats:"),function(_47,_48,_49,_4a,_4b){ +with(_47){ +return objj_msgSend(objj_msgSend(_47,"alloc"),"initWithFireDate:interval:callback:repeats:",objj_msgSend(CPDate,"dateWithTimeIntervalSinceNow:",_49),_49,_4a,_4b); +} +})]); +var _4c=1000,_4d={}; +var _4e=function(_4f,_50,_51,_52){ +var _53=_4c++,_54=nil; +if(typeof _4f==="string"){ +_54=function(){ +new Function(_4f)(); +if(!_51){ +_4d[_53]=nil; +} +}; +}else{ +if(!_52){ +_52=[]; +} +_54=function(){ +_4f.apply(window,_52); +if(!_51){ +_4d[_53]=nil; +} +}; +} +_4d[_53]=objj_msgSend(CPTimer,"scheduledTimerWithTimeInterval:callback:repeats:",_50/1000,_54,_51); +return _53; +}; +window.setTimeout=function(_55,_56){ +return _4e(_55,_56,NO,Array.prototype.slice.apply(arguments,[2])); +}; +window.clearTimeout=function(_57){ +var _58=_4d[_57]; +if(_58){ +objj_msgSend(_58,"invalidate"); +} +_4d[_57]=nil; +}; +window.setInterval=function(_59,_5a,_5b){ +return _4e(_59,_5a,YES,Array.prototype.slice.apply(arguments,[2])); +}; +window.clearInterval=function(_5c){ +window.clearTimeout(_5c); +}; +p;15;CPUndoManager.jt;17233;@STATIC;1.0;i;14;CPInvocation.ji;10;CPObject.ji;9;CPProxy.jt;17166; +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPProxy.j",YES); +var _1=0,_2=1,_3=2; +CPUndoManagerCheckpointNotification="CPUndoManagerCheckpointNotification"; +CPUndoManagerDidOpenUndoGroupNotification="CPUndoManagerDidOpenUndoGroupNotification"; +CPUndoManagerDidRedoChangeNotification="CPUndoManagerDidRedoChangeNotification"; +CPUndoManagerDidUndoChangeNotification="CPUndoManagerDidUndoChangeNotification"; +CPUndoManagerWillCloseUndoGroupNotification="CPUndoManagerWillCloseUndoGroupNotification"; +CPUndoManagerWillRedoChangeNotification="CPUndoManagerWillRedoChangeNotification"; +CPUndoManagerWillUndoChangeNotification="CPUndoManagerWillUndoChangeNotification"; +CPUndoCloseGroupingRunLoopOrdering=350000; +var _4=[],_5=5; +var _6=objj_allocateClassPair(CPObject,"_CPUndoGrouping"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_parent"),new objj_ivar("_invocations"),new objj_ivar("_actionName")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("initWithParent:"),function(_8,_9,_a){ +with(_8){ +_8=objj_msgSendSuper({receiver:_8,super_class:objj_getClass("_CPUndoGrouping").super_class},"init"); +if(_8){ +_parent=_a; +_invocations=[]; +_actionName=""; +} +return _8; +} +}),new objj_method(sel_getUid("parent"),function(_b,_c){ +with(_b){ +return _parent; +} +}),new objj_method(sel_getUid("addInvocation:"),function(_d,_e,_f){ +with(_d){ +_invocations.push(_f); +} +}),new objj_method(sel_getUid("addInvocationsFromArray:"),function(_10,_11,_12){ +with(_10){ +objj_msgSend(_invocations,"addObjectsFromArray:",_12); +} +}),new objj_method(sel_getUid("removeInvocationsWithTarget:"),function(_13,_14,_15){ +with(_13){ +var _16=_invocations.length; +while(_16--){ +if(objj_msgSend(_invocations[_16],"target")==_15){ +_invocations.splice(_16,1); +} +} +} +}),new objj_method(sel_getUid("invocations"),function(_17,_18){ +with(_17){ +return _invocations; +} +}),new objj_method(sel_getUid("invoke"),function(_19,_1a){ +with(_19){ +var _1b=_invocations.length; +while(_1b--){ +objj_msgSend(_invocations[_1b],"invoke"); +} +} +}),new objj_method(sel_getUid("setActionName:"),function(_1c,_1d,_1e){ +with(_1c){ +_actionName=_1e; +} +}),new objj_method(sel_getUid("actionName"),function(_1f,_20){ +with(_1f){ +return _actionName; +} +})]); +class_addMethods(_7,[new objj_method(sel_getUid("_poolUndoGrouping:"),function(_21,_22,_23){ +with(_21){ +if(!_23||_4.length>=_5){ +return; +} +_4.push(_23); +} +}),new objj_method(sel_getUid("undoGroupingWithParent:"),function(_24,_25,_26){ +with(_24){ +if(_4.length){ +var _27=_4.pop(); +_27._parent=_26; +if(_27._invocations.length){ +_27._invocations=[]; +} +return _27; +} +return objj_msgSend(objj_msgSend(_24,"alloc"),"initWithParent:",_26); +} +})]); +var _28="_CPUndoGroupingParentKey",_29="_CPUndoGroupingInvocationsKey",_2a="_CPUndoGroupingActionNameKey"; +var _6=objj_getClass("_CPUndoGrouping"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"_CPUndoGrouping\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("initWithCoder:"),function(_2b,_2c,_2d){ +with(_2b){ +_2b=objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("_CPUndoGrouping").super_class},"init"); +if(_2b){ +_parent=objj_msgSend(_2d,"decodeObjectForKey:",_28); +_invocations=objj_msgSend(_2d,"decodeObjectForKey:",_29); +_actionName=objj_msgSend(_2d,"decodeObjectForKey:",_2a); +} +return _2b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSend(_30,"encodeObject:forKey:",_parent,_28); +objj_msgSend(_30,"encodeObject:forKey:",_invocations,_29); +objj_msgSend(_30,"encodeObject:forKey:",_actionName,_2a); +} +})]); +var _6=objj_allocateClassPair(CPObject,"CPUndoManager"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_redoStack"),new objj_ivar("_undoStack"),new objj_ivar("_groupsByEvent"),new objj_ivar("_disableCount"),new objj_ivar("_levelsOfUndo"),new objj_ivar("_currentGrouping"),new objj_ivar("_state"),new objj_ivar("_preparedTarget"),new objj_ivar("_undoManagerProxy"),new objj_ivar("_runLoopModes"),new objj_ivar("_registeredWithRunLoop")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("init"),function(_31,_32){ +with(_31){ +_31=objj_msgSendSuper({receiver:_31,super_class:objj_getClass("CPUndoManager").super_class},"init"); +if(_31){ +_redoStack=[]; +_undoStack=[]; +_state=_1; +objj_msgSend(_31,"setRunLoopModes:",[CPDefaultRunLoopMode]); +objj_msgSend(_31,"setGroupsByEvent:",YES); +_undoManagerProxy=objj_msgSend(_CPUndoManagerProxy,"alloc"); +_undoManagerProxy._undoManager=_31; +} +return _31; +} +}),new objj_method(sel_getUid("_addUndoInvocation:"),function(_33,_34,_35){ +with(_33){ +if(!_currentGrouping){ +if(objj_msgSend(_33,"groupsByEvent")){ +objj_msgSend(_33,"_beginUndoGroupingForEvent"); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"No undo group is currently open"); +} +} +objj_msgSend(_currentGrouping,"addInvocation:",_35); +if(_state===_1){ +objj_msgSend(_redoStack,"removeAllObjects"); +} +} +}),new objj_method(sel_getUid("registerUndoWithTarget:selector:object:"),function(_36,_37,_38,_39,_3a){ +with(_36){ +if(_disableCount>0){ +return; +} +var _3b=objj_msgSend(CPInvocation,"invocationWithMethodSignature:",nil); +objj_msgSend(_3b,"setTarget:",_38); +objj_msgSend(_3b,"setSelector:",_39); +objj_msgSend(_3b,"setArgument:atIndex:",_3a,2); +objj_msgSend(_36,"_addUndoInvocation:",_3b); +} +}),new objj_method(sel_getUid("prepareWithInvocationTarget:"),function(_3c,_3d,_3e){ +with(_3c){ +_preparedTarget=_3e; +return _undoManagerProxy; +} +}),new objj_method(sel_getUid("_methodSignatureOfPreparedTargetForSelector:"),function(_3f,_40,_41){ +with(_3f){ +if(objj_msgSend(_preparedTarget,"respondsToSelector:",_41)){ +return 1; +} +return nil; +} +}),new objj_method(sel_getUid("_forwardInvocationToPreparedTarget:"),function(_42,_43,_44){ +with(_42){ +if(_disableCount>0){ +return; +} +objj_msgSend(_44,"setTarget:",_preparedTarget); +objj_msgSend(_42,"_addUndoInvocation:",_44); +_preparedTarget=nil; +} +}),new objj_method(sel_getUid("canRedo"),function(_45,_46){ +with(_45){ +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPUndoManagerCheckpointNotification,_45); +return objj_msgSend(_redoStack,"count")>0; +} +}),new objj_method(sel_getUid("canUndo"),function(_47,_48){ +with(_47){ +if(_undoStack.length>0){ +return YES; +} +return objj_msgSend(objj_msgSend(_currentGrouping,"invocations"),"count")>0; +} +}),new objj_method(sel_getUid("undo"),function(_49,_4a){ +with(_49){ +if(objj_msgSend(_49,"groupingLevel")===1){ +objj_msgSend(_49,"endUndoGrouping"); +} +objj_msgSend(_49,"undoNestedGroup"); +} +}),new objj_method(sel_getUid("undoNestedGroup"),function(_4b,_4c){ +with(_4b){ +if(objj_msgSend(_undoStack,"count")<=0){ +return; +} +var _4d=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_4d,"postNotificationName:object:",CPUndoManagerCheckpointNotification,_4b); +objj_msgSend(_4d,"postNotificationName:object:",CPUndoManagerWillUndoChangeNotification,_4b); +var _4e=_undoStack.pop(),_4f=objj_msgSend(_4e,"actionName"); +_state=_2; +objj_msgSend(_4b,"_beginUndoGrouping"); +objj_msgSend(_4e,"invoke"); +objj_msgSend(_4b,"endUndoGrouping"); +objj_msgSend(_CPUndoGrouping,"_poolUndoGrouping:",_4e); +_state=_1; +objj_msgSend(objj_msgSend(_redoStack,"lastObject"),"setActionName:",_4f); +objj_msgSend(_4d,"postNotificationName:object:",CPUndoManagerDidUndoChangeNotification,_4b); +} +}),new objj_method(sel_getUid("redo"),function(_50,_51){ +with(_50){ +if(objj_msgSend(_redoStack,"count")<=0){ +return; +} +var _52=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_52,"postNotificationName:object:",CPUndoManagerCheckpointNotification,_50); +objj_msgSend(_52,"postNotificationName:object:",CPUndoManagerWillRedoChangeNotification,_50); +var _53=_currentGrouping,_54=_redoStack.pop(),_55=objj_msgSend(_54,"actionName"); +_currentGrouping=nil; +_state=_3; +objj_msgSend(_50,"_beginUndoGrouping"); +objj_msgSend(_54,"invoke"); +objj_msgSend(_50,"endUndoGrouping"); +objj_msgSend(_CPUndoGrouping,"_poolUndoGrouping:",_54); +_currentGrouping=_53; +_state=_1; +objj_msgSend(objj_msgSend(_undoStack,"lastObject"),"setActionName:",_55); +objj_msgSend(_52,"postNotificationName:object:",CPUndoManagerDidRedoChangeNotification,_50); +} +}),new objj_method(sel_getUid("beginUndoGrouping"),function(_56,_57){ +with(_56){ +if(!_currentGrouping&&objj_msgSend(_56,"groupsByEvent")){ +objj_msgSend(_56,"_beginUndoGroupingForEvent"); +} +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPUndoManagerCheckpointNotification,_56); +objj_msgSend(_56,"_beginUndoGrouping"); +} +}),new objj_method(sel_getUid("_beginUndoGroupingForEvent"),function(_58,_59){ +with(_58){ +objj_msgSend(_58,"_beginUndoGrouping"); +objj_msgSend(_58,"_registerWithRunLoop"); +} +}),new objj_method(sel_getUid("_beginUndoGrouping"),function(_5a,_5b){ +with(_5a){ +_currentGrouping=objj_msgSend(_CPUndoGrouping,"undoGroupingWithParent:",_currentGrouping); +} +}),new objj_method(sel_getUid("endUndoGrouping"),function(_5c,_5d){ +with(_5c){ +if(!_currentGrouping){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"endUndoGrouping. No undo group is currently open."); +} +var _5e=objj_msgSend(CPNotificationCenter,"defaultCenter"); +objj_msgSend(_5e,"postNotificationName:object:",CPUndoManagerCheckpointNotification,_5c); +var _5f=objj_msgSend(_currentGrouping,"parent"); +if(!_5f&&objj_msgSend(_currentGrouping,"invocations").length>0){ +objj_msgSend(_5e,"postNotificationName:object:",CPUndoManagerWillCloseUndoGroupNotification,_5c); +var _60=_state===_2?_redoStack:_undoStack; +_60.push(_currentGrouping); +if(_levelsOfUndo>0&&_60.length>_levelsOfUndo){ +_60.splice(0,1); +} +}else{ +objj_msgSend(_5f,"addInvocationsFromArray:",objj_msgSend(_currentGrouping,"invocations")); +objj_msgSend(_CPUndoGrouping,"_poolUndoGrouping:",_currentGrouping); +} +_currentGrouping=_5f; +} +}),new objj_method(sel_getUid("enableUndoRegistration"),function(_61,_62){ +with(_61){ +if(_disableCount<=0){ +objj_msgSend(CPException,"raise:reason:",CPInternalInconsistencyException,"enableUndoRegistration. There are no disable messages in effect right now."); +} +_disableCount--; +} +}),new objj_method(sel_getUid("groupsByEvent"),function(_63,_64){ +with(_63){ +return _groupsByEvent; +} +}),new objj_method(sel_getUid("setGroupsByEvent:"),function(_65,_66,_67){ +with(_65){ +_67=!!_67; +if(_groupsByEvent===_67){ +return; +} +_groupsByEvent=_67; +if(!objj_msgSend(_65,"groupsByEvent")){ +objj_msgSend(_65,"_unregisterWithRunLoop"); +} +} +}),new objj_method(sel_getUid("groupingLevel"),function(_68,_69){ +with(_68){ +var _6a=_currentGrouping,_6b=_currentGrouping?1:0; +while(_6a=objj_msgSend(_6a,"parent")){ +++_6b; +} +return _6b; +} +}),new objj_method(sel_getUid("disableUndoRegistration"),function(_6c,_6d){ +with(_6c){ +++_disableCount; +} +}),new objj_method(sel_getUid("isUndoRegistrationEnabled"),function(_6e,_6f){ +with(_6e){ +return _disableCount==0; +} +}),new objj_method(sel_getUid("isUndoing"),function(_70,_71){ +with(_70){ +return _state===_2; +} +}),new objj_method(sel_getUid("isRedoing"),function(_72,_73){ +with(_72){ +return _state===_3; +} +}),new objj_method(sel_getUid("removeAllActions"),function(_74,_75){ +with(_74){ +_redoStack=[]; +_undoStack=[]; +_disableCount=0; +} +}),new objj_method(sel_getUid("removeAllActionsWithTarget:"),function(_76,_77,_78){ +with(_76){ +objj_msgSend(_currentGrouping,"removeInvocationsWithTarget:",_78); +var _79=_redoStack.length; +while(_79--){ +var _7a=_redoStack[_79]; +objj_msgSend(_7a,"removeInvocationsWithTarget:",_78); +if(!objj_msgSend(_7a,"invocations").length){ +_redoStack.splice(_79,1); +} +} +_79=_undoStack.length; +while(_79--){ +var _7a=_undoStack[_79]; +objj_msgSend(_7a,"removeInvocationsWithTarget:",_78); +if(!objj_msgSend(_7a,"invocations").length){ +_undoStack.splice(_79,1); +} +} +} +}),new objj_method(sel_getUid("setActionName:"),function(_7b,_7c,_7d){ +with(_7b){ +if(_7d!==nil&&_currentGrouping){ +objj_msgSend(_currentGrouping,"setActionName:",_7d); +} +} +}),new objj_method(sel_getUid("redoActionName"),function(_7e,_7f){ +with(_7e){ +if(!objj_msgSend(_7e,"canRedo")){ +return nil; +} +return objj_msgSend(objj_msgSend(_redoStack,"lastObject"),"actionName"); +} +}),new objj_method(sel_getUid("redoMenuItemTitle"),function(_80,_81){ +with(_80){ +return objj_msgSend(_80,"redoMenuTitleForUndoActionName:",objj_msgSend(_80,"redoActionName")); +} +}),new objj_method(sel_getUid("redoMenuTitleForUndoActionName:"),function(_82,_83,_84){ +with(_82){ +if(_84||_84===0){ +return "Redo "+_84; +} +return "Redo"; +} +}),new objj_method(sel_getUid("undoActionName"),function(_85,_86){ +with(_85){ +if(!objj_msgSend(_85,"canUndo")){ +return nil; +} +return objj_msgSend(objj_msgSend(_undoStack,"lastObject"),"actionName"); +} +}),new objj_method(sel_getUid("undoMenuItemTitle"),function(_87,_88){ +with(_87){ +return objj_msgSend(_87,"undoMenuTitleForUndoActionName:",objj_msgSend(_87,"undoActionName")); +} +}),new objj_method(sel_getUid("undoMenuTitleForUndoActionName:"),function(_89,_8a,_8b){ +with(_89){ +if(_8b||_8b===0){ +return "Undo "+_8b; +} +return "Undo"; +} +}),new objj_method(sel_getUid("runLoopModes"),function(_8c,_8d){ +with(_8c){ +return _runLoopModes; +} +}),new objj_method(sel_getUid("setRunLoopModes:"),function(_8e,_8f,_90){ +with(_8e){ +_runLoopModes=objj_msgSend(_90,"copy"); +if(_registeredWithRunLoop){ +objj_msgSend(_8e,"_unregisterWithRunLoop"); +objj_msgSend(_8e,"_registerWithRunLoop"); +} +} +}),new objj_method(sel_getUid("_runLoopEndUndoGrouping"),function(_91,_92){ +with(_91){ +objj_msgSend(_91,"endUndoGrouping"); +_registeredWithRunLoop=NO; +} +}),new objj_method(sel_getUid("_registerWithRunLoop"),function(_93,_94){ +with(_93){ +if(_registeredWithRunLoop){ +return; +} +_registeredWithRunLoop=YES; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("_runLoopEndUndoGrouping"),_93,nil,CPUndoCloseGroupingRunLoopOrdering,_runLoopModes); +} +}),new objj_method(sel_getUid("_unregisterWithRunLoop"),function(_95,_96){ +with(_95){ +if(!_registeredWithRunLoop){ +return; +} +_registeredWithRunLoop=NO; +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"cancelPerformSelector:target:argument:",sel_getUid("_runLoopEndUndoGrouping"),_95,nil); +} +}),new objj_method(sel_getUid("observeChangesForKeyPath:ofObject:"),function(_97,_98,_99,_9a){ +with(_97){ +objj_msgSend(_9a,"addObserver:forKeyPath:options:context:",_97,_99,CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew,NULL); +} +}),new objj_method(sel_getUid("stopObservingChangesForKeyPath:ofObject:"),function(_9b,_9c,_9d,_9e){ +with(_9b){ +objj_msgSend(_9e,"removeObserver:forKeyPath:",_9b,_9d); +} +}),new objj_method(sel_getUid("observeValueForKeyPath:ofObject:change:context:"),function(_9f,_a0,_a1,_a2,_a3,_a4){ +with(_9f){ +var _a5=objj_msgSend(_a3,"valueForKey:",CPKeyValueChangeOldKey),_a6=objj_msgSend(_a3,"valueForKey:",CPKeyValueChangeNewKey); +if(_a5===_a6||(_a5!==nil&&_a5.isa&&(_a6===nil||_a6.isa)&&objj_msgSend(_a5,"isEqual:",_a6))){ +return; +} +objj_msgSend(objj_msgSend(_9f,"prepareWithInvocationTarget:",_a2),"applyChange:toKeyPath:",objj_msgSend(_a3,"inverseChangeDictionary"),_a1); +} +})]); +var _a7="CPUndoManagerRedoStackKey",_a8="CPUndoManagerUndoStackKey",_a9="CPUndoManagerLevelsOfUndoKey",_aa="CPUndoManagerActionNameKey",_ab="CPUndoManagerCurrentGroupingKey",_ac="CPUndoManagerRunLoopModesKey",_ad="CPUndoManagerGroupsByEventKey"; +var _6=objj_getClass("CPUndoManager"); +if(!_6){ +throw new SyntaxError("*** Could not find definition for class \"CPUndoManager\""); +} +var _7=_6.isa; +class_addMethods(_6,[new objj_method(sel_getUid("initWithCoder:"),function(_ae,_af,_b0){ +with(_ae){ +_ae=objj_msgSendSuper({receiver:_ae,super_class:objj_getClass("CPUndoManager").super_class},"init"); +if(_ae){ +_redoStack=objj_msgSend(_b0,"decodeObjectForKey:",_a7); +_undoStack=objj_msgSend(_b0,"decodeObjectForKey:",_a8); +_levelsOfUndo=objj_msgSend(_b0,"decodeObjectForKey:",_a9); +_actionName=objj_msgSend(_b0,"decodeObjectForKey:",_aa); +_currentGrouping=objj_msgSend(_b0,"decodeObjectForKey:",_ab); +_state=_1; +objj_msgSend(_ae,"setRunLoopModes:",objj_msgSend(_b0,"decodeObjectForKey:",_ac)); +objj_msgSend(_ae,"setGroupsByEvent:",objj_msgSend(_b0,"decodeBoolForKey:",_ad)); +} +return _ae; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_b1,_b2,_b3){ +with(_b1){ +objj_msgSend(_b3,"encodeObject:forKey:",_redoStack,_a7); +objj_msgSend(_b3,"encodeObject:forKey:",_undoStack,_a8); +objj_msgSend(_b3,"encodeInt:forKey:",_levelsOfUndo,_a9); +objj_msgSend(_b3,"encodeObject:forKey:",_actionName,_aa); +objj_msgSend(_b3,"encodeObject:forKey:",_currentGrouping,_ab); +objj_msgSend(_b3,"encodeObject:forKey:",_runLoopModes,_ac); +objj_msgSend(_b3,"encodeBool:forKey:",_groupsByEvent,_ad); +} +})]); +var _6=objj_allocateClassPair(CPProxy,"_CPUndoManagerProxy"),_7=_6.isa; +class_addIvars(_6,[new objj_ivar("_undoManager")]); +objj_registerClassPair(_6); +class_addMethods(_6,[new objj_method(sel_getUid("methodSignatureForSelector:"),function(_b4,_b5,_b6){ +with(_b4){ +return objj_msgSend(_undoManager,"_methodSignatureOfPreparedTargetForSelector:",_b6); +} +}),new objj_method(sel_getUid("forwardInvocation:"),function(_b7,_b8,_b9){ +with(_b7){ +objj_msgSend(_undoManager,"_forwardInvocationToPreparedTarget:",_b9); +} +})]); +p;7;CPURL.jt;5953;@STATIC;1.0;i;10;CPObject.jt;5919; +objj_executeFile("CPObject.j",YES); +CPURLNameKey="CPURLNameKey"; +CPURLLocalizedNameKey="CPURLLocalizedNameKey"; +CPURLIsRegularFileKey="CPURLIsRegularFileKey"; +CPURLIsDirectoryKey="CPURLIsDirectoryKey"; +CPURLIsSymbolicLinkKey="CPURLIsSymbolicLinkKey"; +CPURLIsVolumeKey="CPURLIsVolumeKey"; +CPURLIsPackageKey="CPURLIsPackageKey"; +CPURLIsSystemImmutableKey="CPURLIsSystemImmutableKey"; +CPURLIsUserImmutableKey="CPURLIsUserImmutableKey"; +CPURLIsHiddenKey="CPURLIsHiddenKey"; +CPURLHasHiddenExtensionKey="CPURLHasHiddenExtensionKey"; +CPURLCreationDateKey="CPURLCreationDateKey"; +CPURLContentAccessDateKey="CPURLContentAccessDateKey"; +CPURLContentModificationDateKey="CPURLContentModificationDateKey"; +CPURLAttributeModificationDateKey="CPURLAttributeModificationDateKey"; +CPURLLinkCountKey="CPURLLinkCountKey"; +CPURLParentDirectoryURLKey="CPURLParentDirectoryURLKey"; +CPURLVolumeURLKey="CPURLTypeIdentifierKey"; +CPURLTypeIdentifierKey="CPURLTypeIdentifierKey"; +CPURLLocalizedTypeDescriptionKey="CPURLLocalizedTypeDescriptionKey"; +CPURLLabelNumberKey="CPURLLabelNumberKey"; +CPURLLabelColorKey="CPURLLabelColorKey"; +CPURLLocalizedLabelKey="CPURLLocalizedLabelKey"; +CPURLEffectiveIconKey="CPURLEffectiveIconKey"; +CPURLCustomIconKey="CPURLCustomIconKey"; +var _1=objj_allocateClassPair(CPObject,"CPURL"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +return nil; +} +}),new objj_method(sel_getUid("initWithScheme:host:path:"),function(_5,_6,_7,_8,_9){ +with(_5){ +var _a=(_7?_7+":":"")+(_8?_8+"//":"")+(_9||""); +return objj_msgSend(_5,"initWithString:",_a); +} +}),new objj_method(sel_getUid("initWithString:"),function(_b,_c,_d){ +with(_b){ +return objj_msgSend(_b,"initWithString:relativeToURL:",_d,nil); +} +}),new objj_method(sel_getUid("initWithString:relativeToURL:"),function(_e,_f,_10,_11){ +with(_e){ +return new CFURL(_10,_11); +} +}),new objj_method(sel_getUid("absoluteURL"),function(_12,_13){ +with(_12){ +return _12.absoluteURL(); +} +}),new objj_method(sel_getUid("baseURL"),function(_14,_15){ +with(_14){ +return _14.baseURL(); +} +}),new objj_method(sel_getUid("absoluteString"),function(_16,_17){ +with(_16){ +return _16.absoluteString(); +} +}),new objj_method(sel_getUid("relativeString"),function(_18,_19){ +with(_18){ +return _18.string(); +} +}),new objj_method(sel_getUid("path"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_1a,"absoluteURL").path(); +} +}),new objj_method(sel_getUid("pathComponents"),function(_1c,_1d){ +with(_1c){ +var _1e=_1c.pathComponents(); +return objj_msgSend(_1e,"copy"); +} +}),new objj_method(sel_getUid("relativePath"),function(_1f,_20){ +with(_1f){ +return _1f.path(); +} +}),new objj_method(sel_getUid("scheme"),function(_21,_22){ +with(_21){ +return _21.scheme(); +} +}),new objj_method(sel_getUid("user"),function(_23,_24){ +with(_23){ +return objj_msgSend(_23,"absoluteURL").user(); +} +}),new objj_method(sel_getUid("password"),function(_25,_26){ +with(_25){ +return objj_msgSend(_25,"absoluteURL").password(); +} +}),new objj_method(sel_getUid("host"),function(_27,_28){ +with(_27){ +return objj_msgSend(_27,"absoluteURL").domain(); +} +}),new objj_method(sel_getUid("port"),function(_29,_2a){ +with(_29){ +var _2b=objj_msgSend(_29,"absoluteURL").portNumber(); +if(_2b===-1){ +return nil; +} +return _2b; +} +}),new objj_method(sel_getUid("parameterString"),function(_2c,_2d){ +with(_2c){ +return _2c.queryString(); +} +}),new objj_method(sel_getUid("fragment"),function(_2e,_2f){ +with(_2e){ +return _2e.fragment(); +} +}),new objj_method(sel_getUid("isEqual:"),function(_30,_31,_32){ +with(_30){ +return objj_msgSend(_30,"relativeString")===objj_msgSend(_32,"relativeString")&&(objj_msgSend(_30,"baseURL")===objj_msgSend(_32,"baseURL")||objj_msgSend(objj_msgSend(_30,"baseURL"),"isEqual:",objj_msgSend(_32,"baseURL"))); +} +}),new objj_method(sel_getUid("lastPathComponent"),function(_33,_34){ +with(_33){ +return objj_msgSend(_33,"absoluteURL").lastPathComponent(); +} +}),new objj_method(sel_getUid("pathExtension"),function(_35,_36){ +with(_35){ +return _35.pathExtension(); +} +}),new objj_method(sel_getUid("standardizedURL"),function(_37,_38){ +with(_37){ +return _37.standardizedURL(); +} +}),new objj_method(sel_getUid("isFileURL"),function(_39,_3a){ +with(_39){ +return objj_msgSend(_39,"scheme")==="file"; +} +}),new objj_method(sel_getUid("description"),function(_3b,_3c){ +with(_3b){ +return objj_msgSend(_3b,"absoluteString"); +} +}),new objj_method(sel_getUid("resourceValueForKey:"),function(_3d,_3e,_3f){ +with(_3d){ +return _3d.resourcePropertyForKey(_3f); +} +}),new objj_method(sel_getUid("setResourceValue:forKey:"),function(_40,_41,_42,_43){ +with(_40){ +return _40.setResourcePropertyForKey(_43,_42); +} +}),new objj_method(sel_getUid("staticResourceData"),function(_44,_45){ +with(_44){ +return _44.staticResourceData(); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("alloc"),function(_46,_47){ +with(_46){ +return new CFURL(); +} +}),new objj_method(sel_getUid("URLWithString:"),function(_48,_49,_4a){ +with(_48){ +return objj_msgSend(objj_msgSend(_48,"alloc"),"initWithString:",_4a); +} +}),new objj_method(sel_getUid("URLWithString:relativeToURL:"),function(_4b,_4c,_4d,_4e){ +with(_4b){ +return objj_msgSend(objj_msgSend(_4b,"alloc"),"initWithString:relativeToURL:",_4d,_4e); +} +})]); +var _4f="CPURLURLStringKey",_50="CPURLBaseURLKey"; +var _1=objj_getClass("CPURL"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPURL\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_51,_52,_53){ +with(_51){ +return objj_msgSend(_51,"initWithString:relativeToURL:",objj_msgSend(_53,"decodeObjectForKey:",_4f),objj_msgSend(_53,"decodeObjectForKey:",_50)); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_54,_55,_56){ +with(_54){ +objj_msgSend(_56,"encodeObject:forKey:",_baseURL,_50); +objj_msgSend(_56,"encodeObject:forKey:",_string,_4f); +} +})]); +CFURL.prototype.isa=objj_msgSend(CPURL,"class"); +p;17;CPURLConnection.jt;5414;@STATIC;1.0;i;10;CPObject.ji;11;CPRunLoop.ji;14;CPURLRequest.ji;15;CPURLResponse.jt;5325; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPRunLoop.j",YES); +objj_executeFile("CPURLRequest.j",YES); +objj_executeFile("CPURLResponse.j",YES); +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPURLConnection"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_request"),new objj_ivar("_delegate"),new objj_ivar("_isCanceled"),new objj_ivar("_isLocalFileConnection"),new objj_ivar("_HTTPRequest")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("initWithRequest:delegate:startImmediately:"),function(_4,_5,_6,_7,_8){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPURLConnection").super_class},"init"); +if(_4){ +_request=_6; +_delegate=_7; +_isCanceled=NO; +var _9=objj_msgSend(_request,"URL"),_a=objj_msgSend(_9,"scheme"); +_isLocalFileConnection=_a==="file"||((_a==="http"||_a==="https:")&&window.location&&(window.location.protocol==="file:"||window.location.protocol==="app:")); +_HTTPRequest=new CFHTTPRequest(); +if(_8){ +objj_msgSend(_4,"start"); +} +} +return _4; +} +}),new objj_method(sel_getUid("initWithRequest:delegate:"),function(_b,_c,_d,_e){ +with(_b){ +return objj_msgSend(_b,"initWithRequest:delegate:startImmediately:",_d,_e,YES); +} +}),new objj_method(sel_getUid("delegate"),function(_f,_10){ +with(_f){ +return _delegate; +} +}),new objj_method(sel_getUid("start"),function(_11,_12){ +with(_11){ +_isCanceled=NO; +try{ +_HTTPRequest.open(objj_msgSend(_request,"HTTPMethod"),objj_msgSend(objj_msgSend(_request,"URL"),"absoluteString"),YES); +_HTTPRequest.onreadystatechange=function(){ +objj_msgSend(_11,"_readyStateDidChange"); +}; +var _13=objj_msgSend(_request,"allHTTPHeaderFields"),key=nil,_14=objj_msgSend(_13,"keyEnumerator"); +while(key=objj_msgSend(_14,"nextObject")){ +_HTTPRequest.setRequestHeader(key,objj_msgSend(_13,"objectForKey:",key)); +} +_HTTPRequest.send(objj_msgSend(_request,"HTTPBody")); +} +catch(anException){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didFailWithError:"))){ +objj_msgSend(_delegate,"connection:didFailWithError:",_11,anException); +} +} +} +}),new objj_method(sel_getUid("cancel"),function(_15,_16){ +with(_15){ +_isCanceled=YES; +try{ +_HTTPRequest.abort(); +} +catch(anException){ +} +} +}),new objj_method(sel_getUid("isLocalFileConnection"),function(_17,_18){ +with(_17){ +return _isLocalFileConnection; +} +}),new objj_method(sel_getUid("_readyStateDidChange"),function(_19,_1a){ +with(_19){ +if(_HTTPRequest.readyState()===CFHTTPRequest.CompleteState){ +var _1b=_HTTPRequest.status(),URL=objj_msgSend(_request,"URL"); +if(_1b===401&&objj_msgSend(_1,"respondsToSelector:",sel_getUid("connectionDidReceiveAuthenticationChallenge:"))){ +objj_msgSend(_1,"connectionDidReceiveAuthenticationChallenge:",_19); +}else{ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didReceiveResponse:"))){ +if(_isLocalFileConnection){ +objj_msgSend(_delegate,"connection:didReceiveResponse:",_19,objj_msgSend(objj_msgSend(CPURLResponse,"alloc"),"initWithURL:",URL)); +}else{ +var _1c=objj_msgSend(objj_msgSend(CPHTTPURLResponse,"alloc"),"initWithURL:",URL); +objj_msgSend(_1c,"_setStatusCode:",_1b); +objj_msgSend(_delegate,"connection:didReceiveResponse:",_19,_1c); +} +} +if(!_isCanceled){ +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connection:didReceiveData:"))){ +objj_msgSend(_delegate,"connection:didReceiveData:",_19,_HTTPRequest.responseText()); +} +if(objj_msgSend(_delegate,"respondsToSelector:",sel_getUid("connectionDidFinishLoading:"))){ +objj_msgSend(_delegate,"connectionDidFinishLoading:",_19); +} +} +} +} +objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"limitDateForMode:",CPDefaultRunLoopMode); +} +}),new objj_method(sel_getUid("_HTTPRequest"),function(_1d,_1e){ +with(_1d){ +return _HTTPRequest; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("setClassDelegate:"),function(_1f,_20,_21){ +with(_1f){ +_1=_21; +} +}),new objj_method(sel_getUid("sendSynchronousRequest:returningResponse:"),function(_22,_23,_24,_25){ +with(_22){ +try{ +var _26=new CFHTTPRequest(); +_26.open(objj_msgSend(_24,"HTTPMethod"),objj_msgSend(objj_msgSend(_24,"URL"),"absoluteString"),NO); +var _27=objj_msgSend(_24,"allHTTPHeaderFields"),key=nil,_28=objj_msgSend(_27,"keyEnumerator"); +while(key=objj_msgSend(_28,"nextObject")){ +_26.setRequestHeader(key,objj_msgSend(_27,"objectForKey:",key)); +} +_26.send(objj_msgSend(_24,"HTTPBody")); +return objj_msgSend(CPData,"dataWithRawString:",_26.responseText()); +} +catch(anException){ +} +return nil; +} +}),new objj_method(sel_getUid("connectionWithRequest:delegate:"),function(_29,_2a,_2b,_2c){ +with(_29){ +return objj_msgSend(objj_msgSend(_29,"alloc"),"initWithRequest:delegate:",_2b,_2c); +} +})]); +var _2=objj_getClass("CPURLConnection"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPURLConnection\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("_XMLHTTPRequest"),function(_2d,_2e){ +with(_2d){ +_CPReportLenientDeprecation(_2d,_2e,sel_getUid("_HTTPRequest")); +return objj_msgSend(_2d,"_HTTPRequest"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("sendSynchronousRequest:returningResponse:error:"),function(_2f,_30,_31,_32,_33){ +with(_2f){ +_CPReportLenientDeprecation(_2f,_30,sel_getUid("sendSynchronousRequest:returningResponse:")); +return objj_msgSend(_2f,"sendSynchronousRequest:returningResponse:",_31,_32); +} +})]); +p;14;CPURLRequest.jt;2069;@STATIC;1.0;i;10;CPObject.jt;2035; +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPURLRequest"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_URL"),new objj_ivar("_HTTPBody"),new objj_ivar("_HTTPMethod"),new objj_ivar("_HTTPHeaderFields")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithURL:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPURLRequest").super_class},"init"); +if(_3){ +objj_msgSend(_3,"setURL:",_5); +_HTTPBody=""; +_HTTPMethod="GET"; +_HTTPHeaderFields=objj_msgSend(CPDictionary,"dictionary"); +objj_msgSend(_3,"setValue:forHTTPHeaderField:","Thu, 01 Jan 1970 00:00:00 GMT","If-Modified-Since"); +objj_msgSend(_3,"setValue:forHTTPHeaderField:","no-cache","Cache-Control"); +objj_msgSend(_3,"setValue:forHTTPHeaderField:","XMLHttpRequest","X-Requested-With"); +} +return _3; +} +}),new objj_method(sel_getUid("URL"),function(_6,_7){ +with(_6){ +return _URL; +} +}),new objj_method(sel_getUid("setURL:"),function(_8,_9,_a){ +with(_8){ +_URL=new CFURL(_a); +} +}),new objj_method(sel_getUid("setHTTPBody:"),function(_b,_c,_d){ +with(_b){ +_HTTPBody=_d; +} +}),new objj_method(sel_getUid("HTTPBody"),function(_e,_f){ +with(_e){ +return _HTTPBody; +} +}),new objj_method(sel_getUid("setHTTPMethod:"),function(_10,_11,_12){ +with(_10){ +_HTTPMethod=_12; +} +}),new objj_method(sel_getUid("HTTPMethod"),function(_13,_14){ +with(_13){ +return _HTTPMethod; +} +}),new objj_method(sel_getUid("allHTTPHeaderFields"),function(_15,_16){ +with(_15){ +return _HTTPHeaderFields; +} +}),new objj_method(sel_getUid("valueForHTTPHeaderField:"),function(_17,_18,_19){ +with(_17){ +return objj_msgSend(_HTTPHeaderFields,"objectForKey:",_19); +} +}),new objj_method(sel_getUid("setValue:forHTTPHeaderField:"),function(_1a,_1b,_1c,_1d){ +with(_1a){ +objj_msgSend(_HTTPHeaderFields,"setObject:forKey:",_1c,_1d); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("requestWithURL:"),function(_1e,_1f,_20){ +with(_1e){ +return objj_msgSend(objj_msgSend(CPURLRequest,"alloc"),"initWithURL:",_20); +} +})]); +p;15;CPURLResponse.jt;888;@STATIC;1.0;i;10;CPObject.jt;855; +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPURLResponse"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_URL")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithURL:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPURLResponse").super_class},"init"); +if(_3){ +_URL=_5; +} +return _3; +} +}),new objj_method(sel_getUid("URL"),function(_6,_7){ +with(_6){ +return _URL; +} +})]); +var _1=objj_allocateClassPair(CPURLResponse,"CPHTTPURLResponse"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_statusCode")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("_setStatusCode:"),function(_8,_9,_a){ +with(_8){ +_statusCode=_a; +} +}),new objj_method(sel_getUid("statusCode"),function(_b,_c){ +with(_b){ +return _statusCode; +} +})]); +p;22;CPUserSessionManager.jt;1912;@STATIC;1.0;i;10;CPObject.ji;10;CPString.jt;1863; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPString.j",YES); +CPUserSessionUndeterminedStatus=0; +CPUserSessionLoggedInStatus=1; +CPUserSessionLoggedOutStatus=2; +CPUserSessionManagerStatusDidChangeNotification="CPUserSessionManagerStatusDidChangeNotification"; +CPUserSessionManagerUserIdentifierDidChangeNotification="CPUserSessionManagerUserIdentifierDidChangeNotification"; +var _1=nil; +var _2=objj_allocateClassPair(CPObject,"CPUserSessionManager"),_3=_2.isa; +class_addIvars(_2,[new objj_ivar("_status"),new objj_ivar("_userIdentifier")]); +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("init"),function(_4,_5){ +with(_4){ +_4=objj_msgSendSuper({receiver:_4,super_class:objj_getClass("CPUserSessionManager").super_class},"init"); +if(_4){ +_status=CPUserSessionUndeterminedStatus; +} +return _4; +} +}),new objj_method(sel_getUid("status"),function(_6,_7){ +with(_6){ +return _status; +} +}),new objj_method(sel_getUid("setStatus:"),function(_8,_9,_a){ +with(_8){ +if(_status==_a){ +return; +} +_status=_a; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPUserSessionManagerStatusDidChangeNotification,_8); +if(_status!=CPUserSessionLoggedInStatus){ +objj_msgSend(_8,"setUserIdentifier:",nil); +} +} +}),new objj_method(sel_getUid("userIdentifier"),function(_b,_c){ +with(_b){ +return _userIdentifier; +} +}),new objj_method(sel_getUid("setUserIdentifier:"),function(_d,_e,_f){ +with(_d){ +if(_userIdentifier==_f){ +return; +} +_userIdentifier=_f; +objj_msgSend(objj_msgSend(CPNotificationCenter,"defaultCenter"),"postNotificationName:object:",CPUserSessionManagerUserIdentifierDidChangeNotification,_d); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("defaultManager"),function(_10,_11){ +with(_10){ +if(!_1){ +_1=objj_msgSend(objj_msgSend(CPUserSessionManager,"alloc"),"init"); +} +return _1; +} +})]); +p;9;CPValue.jt;1690;@STATIC;1.0;i;9;CPCoder.ji;10;CPObject.jt;1643; +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPObject.j",YES); +var _1=objj_allocateClassPair(CPObject,"CPValue"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_JSObject")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithJSObject:"),function(_3,_4,_5){ +with(_3){ +_3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPValue").super_class},"init"); +if(_3){ +_JSObject=_5; +} +return _3; +} +}),new objj_method(sel_getUid("JSObject"),function(_6,_7){ +with(_6){ +return _JSObject; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("valueWithJSObject:"),function(_8,_9,_a){ +with(_8){ +return objj_msgSend(objj_msgSend(_8,"alloc"),"initWithJSObject:",_a); +} +})]); +var _b="CPValueValueKey"; +var _1=objj_getClass("CPValue"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPValue\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_c,_d,_e){ +with(_c){ +_c=objj_msgSendSuper({receiver:_c,super_class:objj_getClass("CPValue").super_class},"init"); +if(_c){ +_JSObject=JSON.parse(objj_msgSend(_e,"decodeObjectForKey:",_b)); +} +return _c; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_f,_10,_11){ +with(_f){ +objj_msgSend(_11,"encodeObject:forKey:",JSON.stringify(_JSObject),_b); +} +})]); +CPJSObjectCreateJSON=function(_12){ +CPLog.warn("CPJSObjectCreateJSON deprecated, use JSON.stringify() or CPString's objectFromJSON"); +return JSON.stringify(_12); +}; +CPJSObjectCreateWithJSON=function(_13){ +CPLog.warn("CPJSObjectCreateWithJSON deprecated, use JSON.parse() or CPString's JSONFromObject"); +return JSON.parse(_13); +}; +p;20;CPValueTransformer.jt;4788;@STATIC;1.0;i;10;CPObject.ji;14;CPDictionary.jt;4735; +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPDictionary.j",YES); +var _1=objj_msgSend(CPDictionary,"dictionary"); +var _2=objj_allocateClassPair(CPObject,"CPValueTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("reverseTransformedValue:"),function(_4,_5,_6){ +with(_4){ +if(objj_msgSend(objj_msgSend(_4,"class"),"allowsReverseTransformation")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,(_4+" is not reversible.")); +} +return objj_msgSend(_4,"transformedValue:",_6); +} +}),new objj_method(sel_getUid("transformedValue:"),function(_7,_8,_9){ +with(_7){ +return nil; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("initialize"),function(_a,_b){ +with(_a){ +if(_a!==objj_msgSend(CPValueTransformer,"class")){ +return; +} +objj_msgSend(CPValueTransformer,"setValueTransformer:forName:",objj_msgSend(objj_msgSend(CPNegateBooleanTransformer,"alloc"),"init"),CPNegateBooleanTransformerName); +objj_msgSend(CPValueTransformer,"setValueTransformer:forName:",objj_msgSend(objj_msgSend(CPIsNilTransformer,"alloc"),"init"),CPIsNilTransformerName); +objj_msgSend(CPValueTransformer,"setValueTransformer:forName:",objj_msgSend(objj_msgSend(CPIsNotNilTransformer,"alloc"),"init"),CPIsNotNilTransformerName); +objj_msgSend(CPValueTransformer,"setValueTransformer:forName:",objj_msgSend(objj_msgSend(CPUnarchiveFromDataTransformer,"alloc"),"init"),CPUnarchiveFromDataTransformerName); +} +}),new objj_method(sel_getUid("setValueTransformer:forName:"),function(_c,_d,_e,_f){ +with(_c){ +objj_msgSend(_1,"setObject:forKey:",_e,_f); +} +}),new objj_method(sel_getUid("valueTransformerForName:"),function(_10,_11,_12){ +with(_10){ +return objj_msgSend(_1,"objectForKey:",_12); +} +}),new objj_method(sel_getUid("valueTransformerNames"),function(_13,_14){ +with(_13){ +return objj_msgSend(_1,"allKeys"); +} +}),new objj_method(sel_getUid("allowsReverseTransformation"),function(_15,_16){ +with(_15){ +return NO; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_17,_18){ +with(_17){ +return objj_msgSend(CPObject,"class"); +} +})]); +var _2=objj_allocateClassPair(CPValueTransformer,"CPNegateBooleanTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("reverseTransformedValue:"),function(_19,_1a,_1b){ +with(_19){ +return !objj_msgSend(_1b,"boolValue"); +} +}),new objj_method(sel_getUid("transformedValue:"),function(_1c,_1d,_1e){ +with(_1c){ +return !objj_msgSend(_1e,"boolValue"); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("allowsReverseTransformation"),function(_1f,_20){ +with(_1f){ +return YES; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_21,_22){ +with(_21){ +return objj_msgSend(CPNumber,"class"); +} +})]); +var _2=objj_allocateClassPair(CPValueTransformer,"CPIsNilTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("transformedValue:"),function(_23,_24,_25){ +with(_23){ +return _25===nil||_25===undefined; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("allowsReverseTransformation"),function(_26,_27){ +with(_26){ +return NO; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_28,_29){ +with(_28){ +return objj_msgSend(CPNumber,"class"); +} +})]); +var _2=objj_allocateClassPair(CPValueTransformer,"CPIsNotNilTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("transformedValue:"),function(_2a,_2b,_2c){ +with(_2a){ +return _2c!==nil&&_2c!==undefined; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("allowsReverseTransformation"),function(_2d,_2e){ +with(_2d){ +return NO; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_2f,_30){ +with(_2f){ +return objj_msgSend(CPNumber,"class"); +} +})]); +var _2=objj_allocateClassPair(CPValueTransformer,"CPUnarchiveFromDataTransformer"),_3=_2.isa; +objj_registerClassPair(_2); +class_addMethods(_2,[new objj_method(sel_getUid("reverseTransformedValue:"),function(_31,_32,_33){ +with(_31){ +return objj_msgSend(CPKeyedArchiver,"archivedDataWithRootObject:",_33); +} +}),new objj_method(sel_getUid("transformedValue:"),function(_34,_35,_36){ +with(_34){ +return objj_msgSend(CPKeyedUnarchiver,"unarchiveObjectWithData:",_36); +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("allowsReverseTransformation"),function(_37,_38){ +with(_37){ +return YES; +} +}),new objj_method(sel_getUid("transformedValueClass"),function(_39,_3a){ +with(_39){ +return objj_msgSend(CPData,"class"); +} +})]); +CPNegateBooleanTransformerName="CPNegateBooleanTransformerName"; +CPIsNilTransformerName="CPIsNilTransformerName"; +CPIsNotNilTransformerName="CPIsNotNilTransformerName"; +CPUnarchiveFromDataTransformerName="CPUnarchiveFromDataTransformerName"; +p;17;CPWebDAVManager.jt;4315;@STATIC;1.0;t;4296; +var _1=function(_2,_3,_4){ +var _5=objj_msgSend(_4,"objectForKey:","resourcetype"); +if(_5===CPWebDAVManagerCollectionResourceType){ +objj_msgSend(_2,"setResourceValue:forKey:",YES,CPURLIsDirectoryKey); +objj_msgSend(_2,"setResourceValue:forKey:",NO,CPURLIsRegularFileKey); +}else{ +if(_5===CPWebDAVManagerNonCollectionResourceType){ +objj_msgSend(_2,"setResourceValue:forKey:",NO,CPURLIsDirectoryKey); +objj_msgSend(_2,"setResourceValue:forKey:",YES,CPURLIsRegularFileKey); +} +} +var _6=objj_msgSend(_4,"objectForKey:","displayname"); +if(_6!==nil){ +objj_msgSend(_2,"setResourceValue:forKey:",_6,CPURLNameKey); +objj_msgSend(_2,"setResourceValue:forKey:",_6,CPURLLocalizedNameKey); +} +}; +CPWebDAVManagerCollectionResourceType=1; +CPWebDAVManagerNonCollectionResourceType=0; +var _7=objj_allocateClassPair(CPObject,"CPWebDAVManager"),_8=_7.isa; +class_addIvars(_7,[new objj_ivar("_blocksForConnections")]); +objj_registerClassPair(_7); +class_addMethods(_7,[new objj_method(sel_getUid("init"),function(_9,_a){ +with(_9){ +_9=objj_msgSendSuper({receiver:_9,super_class:objj_getClass("CPWebDAVManager").super_class},"init"); +if(_9){ +_blocksForConnections=objj_msgSend(CPDictionary,"dictionary"); +} +return _9; +} +}),new objj_method(sel_getUid("contentsOfDirectoryAtURL:includingPropertiesForKeys:options:block:"),function(_b,_c,_d,_e,_f,_10){ +with(_b){ +var _11=[],_12=objj_msgSend(_e,"count"); +while(_12--){ +_11.push(_13[_e[_12]]); +} +var _14=function(_15,_16){ +var _17=[],_18=nil,_19=objj_msgSend(_16,"keyEnumerator"); +while(_18=objj_msgSend(_19,"nextObject")){ +var URL=objj_msgSend(CPURL,"URLWithString:",_18),_11=objj_msgSend(_16,"objectForKey:",_18); +if(!objj_msgSend(objj_msgSend(URL,"absoluteString"),"isEqual:",objj_msgSend(_15,"absoluteString"))){ +_17.push(URL); +_1(URL,_e,_11); +} +} +return _17; +}; +if(!_10){ +return _14(_d,response); +} +objj_msgSend(_b,"PROPFIND:properties:depth:block:",_d,_11,1,function(_1a,_1b){ +_10(_1a,_14(_1a,_1b)); +}); +} +}),new objj_method(sel_getUid("PROPFIND:properties:depth:block:"),function(_1c,_1d,_1e,_1f,_20,_21){ +with(_1c){ +var _22=objj_msgSend(CPURLRequest,"requestWithURL:",_1e); +objj_msgSend(_22,"setHTTPMethod:","PROPFIND"); +objj_msgSend(_22,"setValue:forHTTPHeaderField:",_20,"Depth"); +var _23=[""],_24=0,_25=_1f.length; +for(;_24<_25;++_24){ +_23.push(""); +} +_23.push(""); +objj_msgSend(_22,"setHTTPBody:",_23.join("")); +if(!_21){ +return _26(objj_msgSend(objj_msgSend(CPURLConnection,"sendSynchronousRequest:returningResponse:",_22,nil),"rawString")); +}else{ +var _27=objj_msgSend(CPURLConnection,"connectionWithRequest:delegate:",_22,_1c); +objj_msgSend(_blocksForConnections,"setObject:forKey:",_21,objj_msgSend(_27,"UID")); +} +} +}),new objj_method(sel_getUid("connection:didReceiveData:"),function(_28,_29,_2a,_2b){ +with(_28){ +var _2c=objj_msgSend(_blocksForConnections,"objectForKey:",objj_msgSend(_2a,"UID")); +_2c(objj_msgSend(_2a._request,"URL"),_26(_2b)); +} +})]); +var _13={}; +_13[CPURLNameKey]="displayname"; +_13[CPURLLocalizedNameKey]="displayname"; +_13[CPURLIsRegularFileKey]="resourcetype"; +_13[CPURLIsDirectoryKey]="resourcetype"; +var _2d=function(_2e){ +if(typeof window["ActiveXObject"]!=="undefined"){ +var _2f=new ActiveXObject("Microsoft.XMLDOM"); +_2f.async=false; +_2f.loadXML(_2e); +return _2f; +} +return new DOMParser().parseFromString(_2e,"text/xml"); +}; +var _26=function(_30){ +var _31=_2d(_30),_32=_31.getElementsByTagNameNS("*","response"),_33=0,_34=_32.length; +var _35=objj_msgSend(CPDictionary,"dictionary"); +for(;_33<_34;++_33){ +var _36=_32[_33],_37=_36.getElementsByTagNameNS("*","prop").item(0).childNodes,_38=0,_39=_37.length,_3a=objj_msgSend(CPDictionary,"dictionary"); +for(;_38<_39;++_38){ +var _3b=_37[_38]; +if(_3b.nodeType===8||_3b.nodeType===3){ +continue; +} +var _3c=_3b.nodeName,_3d=_3c.lastIndexOf(":"); +if(_3d>-1){ +_3c=_3c.substr(_3d+1); +} +if(_3c==="resourcetype"){ +objj_msgSend(_3a,"setObject:forKey:",_3b.firstChild?CPWebDAVManagerCollectionResourceType:CPWebDAVManagerNonCollectionResourceType,_3c); +}else{ +objj_msgSend(_3a,"setObject:forKey:",_3b.firstChild.nodeValue,_3c); +} +} +var _3e=_36.getElementsByTagNameNS("*","href").item(0); +objj_msgSend(_35,"setObject:forKey:",_3a,_3e.firstChild.nodeValue); +} +return _35; +}; +var _3f=function(_40,_41){ +}; +p;12;Foundation.jt;2685;@STATIC;1.0;i;9;CPArray.ji;10;CPBundle.ji;16;CPCharacterSet.ji;9;CPCoder.ji;23;CPComparisonPredicate.ji;21;CPCompoundPredicate.ji;8;CPData.ji;8;CPDate.ji;14;CPDictionary.ji;14;CPEnumerator.ji;13;CPException.ji;13;CPFormatter.ji;14;CPExpression.ji;12;CPIndexSet.ji;14;CPInvocation.ji;19;CPJSONPConnection.ji;17;CPKeyedArchiver.ji;19;CPKeyedUnarchiver.ji;18;CPKeyValueCoding.ji;21;CPKeyValueObserving.ji;16;CPNotification.ji;22;CPNotificationCenter.ji;8;CPNull.ji;10;CPNumber.ji;10;CPObject.ji;15;CPObjJRuntime.ji;13;CPOperation.ji;18;CPOperationQueue.ji;13;CPPredicate.ji;29;CPPropertyListSerialization.ji;9;CPRange.ji;11;CPRunLoop.ji;11;CPScanner.ji;7;CPSet.ji;18;CPSortDescriptor.ji;10;CPString.ji;9;CPTimer.ji;15;CPUndoManager.ji;7;CPURL.ji;17;CPURLConnection.ji;14;CPURLRequest.ji;15;CPURLResponse.ji;22;CPUserSessionManager.ji;9;CPValue.ji;20;CPValueTransformer.jt;1811; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPBundle.j",YES); +objj_executeFile("CPCharacterSet.j",YES); +objj_executeFile("CPCoder.j",YES); +objj_executeFile("CPComparisonPredicate.j",YES); +objj_executeFile("CPCompoundPredicate.j",YES); +objj_executeFile("CPData.j",YES); +objj_executeFile("CPDate.j",YES); +objj_executeFile("CPDictionary.j",YES); +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPException.j",YES); +objj_executeFile("CPFormatter.j",YES); +objj_executeFile("CPExpression.j",YES); +objj_executeFile("CPIndexSet.j",YES); +objj_executeFile("CPInvocation.j",YES); +objj_executeFile("CPJSONPConnection.j",YES); +objj_executeFile("CPKeyedArchiver.j",YES); +objj_executeFile("CPKeyedUnarchiver.j",YES); +objj_executeFile("CPKeyValueCoding.j",YES); +objj_executeFile("CPKeyValueObserving.j",YES); +objj_executeFile("CPNotification.j",YES); +objj_executeFile("CPNotificationCenter.j",YES); +objj_executeFile("CPNull.j",YES); +objj_executeFile("CPNumber.j",YES); +objj_executeFile("CPObject.j",YES); +objj_executeFile("CPObjJRuntime.j",YES); +objj_executeFile("CPOperation.j",YES); +objj_executeFile("CPOperationQueue.j",YES); +objj_executeFile("CPPredicate.j",YES); +objj_executeFile("CPPropertyListSerialization.j",YES); +objj_executeFile("CPRange.j",YES); +objj_executeFile("CPRunLoop.j",YES); +objj_executeFile("CPScanner.j",YES); +objj_executeFile("CPSet.j",YES); +objj_executeFile("CPSortDescriptor.j",YES); +objj_executeFile("CPString.j",YES); +objj_executeFile("CPTimer.j",YES); +objj_executeFile("CPUndoManager.j",YES); +objj_executeFile("CPURL.j",YES); +objj_executeFile("CPURLConnection.j",YES); +objj_executeFile("CPURLRequest.j",YES); +objj_executeFile("CPURLResponse.j",YES); +objj_executeFile("CPUserSessionManager.j",YES); +objj_executeFile("CPValue.j",YES); +objj_executeFile("CPValueTransformer.j",YES); +p;23;CPComparisonPredicate.jt;12931;@STATIC;1.0;i;9;CPArray.ji;8;CPNull.ji;10;CPString.ji;14;CPEnumerator.ji;13;CPPredicate.ji;14;CPExpression.ji;23;CPExpression_operator.jt;12787; +objj_executeFile("CPArray.j",YES); +objj_executeFile("CPNull.j",YES); +objj_executeFile("CPString.j",YES); +objj_executeFile("CPEnumerator.j",YES); +objj_executeFile("CPPredicate.j",YES); +objj_executeFile("CPExpression.j",YES); +objj_executeFile("CPExpression_operator.j",YES); +CPDirectPredicateModifier=0; +CPAllPredicateModifier=1; +CPAnyPredicateModifier=2; +CPCaseInsensitivePredicateOption=1; +CPDiacriticInsensitivePredicateOption=2; +CPDiacriticInsensitiveSearch=128; +CPLessThanPredicateOperatorType=0; +CPLessThanOrEqualToPredicateOperatorType=1; +CPGreaterThanPredicateOperatorType=2; +CPGreaterThanOrEqualToPredicateOperatorType=3; +CPEqualToPredicateOperatorType=4; +CPNotEqualToPredicateOperatorType=5; +CPMatchesPredicateOperatorType=6; +CPLikePredicateOperatorType=7; +CPBeginsWithPredicateOperatorType=8; +CPEndsWithPredicateOperatorType=9; +CPInPredicateOperatorType=10; +CPCustomSelectorPredicateOperatorType=11; +CPContainsPredicateOperatorType=99; +CPBetweenPredicateOperatorType=100; +var _1; +var _2; +var _3=objj_allocateClassPair(CPPredicate,"CPComparisonPredicate"),_4=_3.isa; +class_addIvars(_3,[new objj_ivar("_left"),new objj_ivar("_right"),new objj_ivar("_modifier"),new objj_ivar("_type"),new objj_ivar("_options"),new objj_ivar("_customSelector")]); +objj_registerClassPair(_3); +class_addMethods(_3,[new objj_method(sel_getUid("initWithLeftExpression:rightExpression:customSelector:"),function(_5,_6,_7,_8,_9){ +with(_5){ +_left=_7; +_right=_8; +_modifier=CPDirectPredicateModifier; +_type=CPCustomSelectorPredicateOperatorType; +_options=0; +_customSelector=_9; +return _5; +} +}),new objj_method(sel_getUid("initWithLeftExpression:rightExpression:modifier:type:options:"),function(_a,_b,_c,_d,_e,_f,_10){ +with(_a){ +_left=_c; +_right=_d; +_modifier=_e; +_type=_f; +_options=(_f!=CPMatchesPredicateOperatorType&&_f!=CPLikePredicateOperatorType&&_f!=CPBeginsWithPredicateOperatorType&&_f!=CPEndsWithPredicateOperatorType&&_f!=CPInPredicateOperatorType&&_f!=CPContainsPredicateOperatorType)?0:_10; +_customSelector=NULL; +return _a; +} +}),new objj_method(sel_getUid("comparisonPredicateModifier"),function(_11,_12){ +with(_11){ +return _modifier; +} +}),new objj_method(sel_getUid("customSelector"),function(_13,_14){ +with(_13){ +return _customSelector; +} +}),new objj_method(sel_getUid("leftExpression"),function(_15,_16){ +with(_15){ +return _left; +} +}),new objj_method(sel_getUid("options"),function(_17,_18){ +with(_17){ +return _options; +} +}),new objj_method(sel_getUid("predicateOperatorType"),function(_19,_1a){ +with(_19){ +return _type; +} +}),new objj_method(sel_getUid("rightExpression"),function(_1b,_1c){ +with(_1b){ +return _right; +} +}),new objj_method(sel_getUid("predicateFormat"),function(_1d,_1e){ +with(_1d){ +var _1f; +switch(_modifier){ +case CPDirectPredicateModifier: +_1f=""; +break; +case CPAllPredicateModifier: +_1f="ALL "; +break; +case CPAnyPredicateModifier: +_1f="ANY "; +break; +default: +_1f=""; +break; +} +var _20; +switch(_options){ +case CPCaseInsensitivePredicateOption: +_20="[c]"; +break; +case CPDiacriticInsensitivePredicateOption: +_20="[d]"; +break; +case CPCaseInsensitivePredicateOption|CPDiacriticInsensitivePredicateOption: +_20="[cd]"; +break; +default: +_20=""; +break; +} +var _21; +switch(_type){ +case CPLessThanPredicateOperatorType: +_21="<"; +break; +case CPLessThanOrEqualToPredicateOperatorType: +_21="<="; +break; +case CPGreaterThanPredicateOperatorType: +_21=">"; +break; +case CPGreaterThanOrEqualToPredicateOperatorType: +_21=">="; +break; +case CPEqualToPredicateOperatorType: +_21="=="; +break; +case CPNotEqualToPredicateOperatorType: +_21="!="; +break; +case CPMatchesPredicateOperatorType: +_21="MATCHES"; +break; +case CPLikePredicateOperatorType: +_21="LIKE"; +break; +case CPBeginsWithPredicateOperatorType: +_21="BEGINSWITH"; +break; +case CPEndsWithPredicateOperatorType: +_21="ENDSWITH"; +break; +case CPInPredicateOperatorType: +_21="IN"; +break; +case CPContainsPredicateOperatorType: +_21="CONTAINS"; +break; +case CPCustomSelectorPredicateOperatorType: +_21=CPStringFromSelector(_customSelector); +break; +} +return objj_msgSend(CPString,"stringWithFormat:","%s%s %s%s %s",_1f,objj_msgSend(_left,"description"),_21,_20,objj_msgSend(_right,"description")); +} +}),new objj_method(sel_getUid("predicateWithSubstitutionVariables:"),function(_22,_23,_24){ +with(_22){ +var _25=objj_msgSend(_left,"_expressionWithSubstitutionVariables:",_24),_26=objj_msgSend(_right,"_expressionWithSubstitutionVariables:",_24); +if(_type!=CPCustomSelectorPredicateOperatorType){ +return objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:modifier:type:options:",_25,_26,_modifier,_type,_options); +}else{ +return objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:customSelector:",_25,_26,_customSelector); +} +} +}),new objj_method(sel_getUid("_evaluateValue:rightValue:"),function(_27,_28,lhs,rhs){ +with(_27){ +var _29=(lhs==nil||objj_msgSend(lhs,"isEqual:",objj_msgSend(CPNull,"null"))),_2a=(rhs==nil||objj_msgSend(rhs,"isEqual:",objj_msgSend(CPNull,"null"))); +if((_29||_2a)&&_type!=CPCustomSelectorPredicateOperatorType){ +return (_29==_2a&&(_type==CPEqualToPredicateOperatorType||_type==CPLessThanOrEqualToPredicateOperatorType||_type==CPGreaterThanOrEqualToPredicateOperatorType)); +} +var _2b=0; +switch(_type){ +case CPLessThanPredicateOperatorType: +return (objj_msgSend(lhs,"compare:",rhs)==CPOrderedAscending); +case CPLessThanOrEqualToPredicateOperatorType: +return (objj_msgSend(lhs,"compare:",rhs)!=CPOrderedDescending); +case CPGreaterThanPredicateOperatorType: +return (objj_msgSend(lhs,"compare:",rhs)==CPOrderedDescending); +case CPGreaterThanOrEqualToPredicateOperatorType: +return (objj_msgSend(lhs,"compare:",rhs)!=CPOrderedAscending); +case CPEqualToPredicateOperatorType: +return objj_msgSend(lhs,"isEqual:",rhs); +case CPNotEqualToPredicateOperatorType: +return (!objj_msgSend(lhs,"isEqual:",rhs)); +case CPMatchesPredicateOperatorType: +var _2c=(_options&CPCaseInsensitivePredicateOption)?"gi":"g"; +if(_options&CPDiacriticInsensitivePredicateOption){ +lhs=lhs.stripDiacritics(); +rhs=rhs.stripDiacritics(); +} +return (new RegExp(rhs,_2c)).test(lhs); +case CPLikePredicateOperatorType: +if(_options&CPDiacriticInsensitivePredicateOption){ +lhs=lhs.stripDiacritics(); +rhs=rhs.stripDiacritics(); +} +var _2c=(_options&CPCaseInsensitivePredicateOption)?"gi":"g"; +var reg=new RegExp(rhs.escapeForRegExp(),_2c); +return reg.test(lhs); +case CPBeginsWithPredicateOperatorType: +var _2d=CPMakeRange(0,objj_msgSend(rhs,"length")); +if(_options&CPCaseInsensitivePredicateOption){ +_2b|=CPCaseInsensitiveSearch; +} +if(_options&CPDiacriticInsensitivePredicateOption){ +_2b|=CPDiacriticInsensitiveSearch; +} +return (objj_msgSend(lhs,"compare:options:range:",rhs,_2b,_2d)==CPOrderedSame); +case CPEndsWithPredicateOperatorType: +var _2d=CPMakeRange(objj_msgSend(lhs,"length")-objj_msgSend(rhs,"length"),objj_msgSend(rhs,"length")); +if(_options&CPCaseInsensitivePredicateOption){ +_2b|=CPCaseInsensitiveSearch; +} +if(_options&CPDiacriticInsensitivePredicateOption){ +_2b|=CPDiacriticInsensitiveSearch; +} +return (objj_msgSend(lhs,"compare:options:range:",rhs,_2b,_2d)==CPOrderedSame); +case CPInPredicateOperatorType: +if(!objj_msgSend(rhs,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +if(!objj_msgSend(rhs,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right hand side for an IN operator must be a collection"); +} +var e=objj_msgSend(rhs,"objectEnumerator"),_2e; +while(_2e=objj_msgSend(e,"nextObject")){ +if(objj_msgSend(_2e,"isEqual:",lhs)){ +return YES; +} +} +return NO; +} +if(_options&CPCaseInsensitivePredicateOption){ +_2b|=CPCaseInsensitiveSearch; +} +if(_options&CPDiacriticInsensitivePredicateOption){ +_2b|=CPDiacriticInsensitiveSearch; +} +return (objj_msgSend(rhs,"rangeOfString:options:",lhs,_2b).location!=CPNotFound); +case CPCustomSelectorPredicateOperatorType: +return objj_msgSend(lhs,"performSelector:withObject:",_customSelector,rhs); +case CPContainsPredicateOperatorType: +if(!objj_msgSend(lhs,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +if(!objj_msgSend(lhs,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left hand side for a CONTAINS operator must be a collection or a string"); +} +var e=objj_msgSend(lhs,"objectEnumerator"),_2e; +while(_2e=objj_msgSend(e,"nextObject")){ +if(objj_msgSend(_2e,"isEqual:",rhs)){ +return YES; +} +} +return NO; +} +if(_options&CPCaseInsensitivePredicateOption){ +_2b|=CPCaseInsensitiveSearch; +} +if(_options&CPDiacriticInsensitivePredicateOption){ +_2b|=CPDiacriticInsensitiveSearch; +} +return (objj_msgSend(lhs,"rangeOfString:options:",rhs,_2b).location!=CPNotFound); +case CPBetweenPredicateOperatorType: +if(objj_msgSend(lhs,"count")<2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right hand side for a BETWEEN operator must contain 2 objects"); +} +var _2f=objj_msgSend(rhs,"objectAtIndex:",0),_30=objj_msgSend(rhs,"objectAtIndex:",1); +return (objj_msgSend(lhs,"compare:",_2f)==CPOrderedDescending&&objj_msgSend(lhs,"compare:",_30)==CPOrderedAscending); +default: +return NO; +} +} +}),new objj_method(sel_getUid("evaluateWithObject:"),function(_31,_32,_33){ +with(_31){ +return objj_msgSend(_31,"evaluateWithObject:substitutionVariables:",_33,nil); +} +}),new objj_method(sel_getUid("evaluateWithObject:substitutionVariables:"),function(_34,_35,_36,_37){ +with(_34){ +var _38=_left,_39=_right; +if(_37!=nil){ +_38=objj_msgSend(_38,"_expressionWithSubstitutionVariables:",_37); +_39=objj_msgSend(_39,"_expressionWithSubstitutionVariables:",_37); +} +var _3a=objj_msgSend(_38,"expressionValueWithObject:context:",_36,nil),_3b=objj_msgSend(_39,"expressionValueWithObject:context:",_36,nil); +if(_modifier==CPDirectPredicateModifier){ +return objj_msgSend(_34,"_evaluateValue:rightValue:",_3a,_3b); +}else{ +if(!objj_msgSend(_3a,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left hand side for an ALL or ANY operator must be either a CPArray or a CPSet"); +} +var e=objj_msgSend(_3a,"objectEnumerator"),_3c=(_modifier==CPAllPredicateModifier),_3d; +while(_3d=objj_msgSend(e,"nextObject")){ +var _3e=objj_msgSend(_34,"_evaluateValue:rightValue:",_3d,_3b); +if(_3e!=_3c){ +return _3e; +} +} +return _3c; +} +} +})]); +class_addMethods(_4,[new objj_method(sel_getUid("predicateWithLeftExpression:rightExpression:customSelector:"),function(_3f,_40,_41,_42,_43){ +with(_3f){ +return objj_msgSend(objj_msgSend(_3f,"alloc"),"initWithLeftExpression:rightExpression:customSelector:",_41,_42,_43); +} +}),new objj_method(sel_getUid("predicateWithLeftExpression:rightExpression:modifier:type:options:"),function(_44,_45,_46,_47,_48,_49,_4a){ +with(_44){ +return objj_msgSend(objj_msgSend(_44,"alloc"),"initWithLeftExpression:rightExpression:modifier:type:options:",_46,_47,_48,_49,_4a); +} +})]); +var _3=objj_getClass("CPComparisonPredicate"); +if(!_3){ +throw new SyntaxError("*** Could not find definition for class \"CPComparisonPredicate\""); +} +var _4=_3.isa; +class_addMethods(_3,[new objj_method(sel_getUid("initWithCoder:"),function(_4b,_4c,_4d){ +with(_4b){ +_4b=objj_msgSendSuper({receiver:_4b,super_class:objj_getClass("CPComparisonPredicate").super_class},"init"); +if(_4b!=nil){ +_left=objj_msgSend(_4d,"decodeObjectForKey:","CPComparisonPredicateLeftExpression"); +_right=objj_msgSend(_4d,"decodeObjectForKey:","CPComparisonPredicateRightExpression"); +_modifier=objj_msgSend(_4d,"decodeIntForKey:","CPComparisonPredicateModifier"); +_type=objj_msgSend(_4d,"decodeIntForKey:","CPComparisonPredicateType"); +_options=objj_msgSend(_4d,"decodeIntForKey:","CPComparisonPredicateOptions"); +_customSelector=objj_msgSend(_4d,"decodeObjectForKey:","CPComparisonPredicateCustomSelector"); +} +return _4b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_4e,_4f,_50){ +with(_4e){ +objj_msgSend(_50,"encodeObject:forKey:",_left,"CPComparisonPredicateLeftExpression"); +objj_msgSend(_50,"encodeObject:forKey:",_right,"CPComparisonPredicateRightExpression"); +objj_msgSend(_50,"encodeInt:forKey:",_modifier,"CPComparisonPredicateModifier"); +objj_msgSend(_50,"encodeInt:forKey:",_type,"CPComparisonPredicateType"); +objj_msgSend(_50,"encodeInt:forKey:",_options,"CPComparisonPredicateOptions"); +objj_msgSend(_50,"encodeObject:forKey:",_customSelector,"CPComparisonPredicateCustomSelector"); +} +})]); +var _51=["*","?","(",")","{","}",".","+","|","/","$","^"]; +var _52=[".*",".?","\\(","\\)","\\{","\\}","\\.","\\+","\\|","\\/","\\$","\\^"]; +String.prototype.escapeForRegExp=function(){ +var _53=false; +for(var i=0;i<_51.length;++i){ +if(this.indexOf(_51[i])!==-1){ +_53=true; +break; +} +} +if(!_53){ +return this; +} +var _54="",_55; +for(var i=0;i1&&objj_msgSend(_16,"compoundPredicateType")!=_type){ +_17=objj_msgSend(CPString,"stringWithFormat:","(%s)",_17); +} +if(_17!=nil){ +objj_msgSend(_14,"addObject:",_17); +} +} +switch(_type){ +case CPNotPredicateType: +_13+="NOT %s"+objj_msgSend(_14,"objectAtIndex:",0); +break; +case CPAndPredicateType: +_13+=objj_msgSend(_14,"objectAtIndex:",0); +var _15=objj_msgSend(_14,"count"); +for(var j=1;j<_15;j++){ +_13+=" AND "+objj_msgSend(_14,"objectAtIndex:",j); +} +break; +case CPOrPredicateType: +_13+=objj_msgSend(_14,"objectAtIndex:",0); +var _15=objj_msgSend(_14,"count"); +for(var j=1;j<_15;j++){ +_13+=" OR "+objj_msgSend(_14,"objectAtIndex:",j); +} +break; +} +return _13; +} +}),new objj_method(sel_getUid("evaluateWithObject:"),function(_18,_19,_1a){ +with(_18){ +return objj_msgSend(_18,"evaluateWithObject:substitutionVariables:",_1a,nil); +} +}),new objj_method(sel_getUid("evaluateWithObject:substitutionVariables:"),function(_1b,_1c,_1d,_1e){ +with(_1b){ +var _1f=NO,_20=objj_msgSend(_predicates,"count"),i; +if(_20==0){ +return YES; +} +for(i=0;i<_20;i++){ +var _21=objj_msgSend(_predicates,"objectAtIndex:",i); +switch(_type){ +case CPNotPredicateType: +return !objj_msgSend(_21,"evaluateWithObject:substitutionVariables:",_1d,_1e); +case CPAndPredicateType: +if(i==0){ +_1f=objj_msgSend(_21,"evaluateWithObject:substitutionVariables:",_1d,_1e); +}else{ +_1f=_1f&&objj_msgSend(_21,"evaluateWithObject:substitutionVariables:",_1d,_1e); +} +if(!_1f){ +return NO; +} +break; +case CPOrPredicateType: +if(objj_msgSend(_21,"evaluateWithObject:substitutionVariables:",_1d,_1e)){ +return YES; +} +break; +} +} +return _1f; +} +})]); +class_addMethods(_3,[new objj_method(sel_getUid("notPredicateWithSubpredicate:"),function(_22,_23,_24){ +with(_22){ +return objj_msgSend(objj_msgSend(_22,"alloc"),"initWithType:subpredicates:",CPNotPredicateType,objj_msgSend(CPArray,"arrayWithObject:",_24)); +} +}),new objj_method(sel_getUid("andPredicateWithSubpredicates:"),function(_25,_26,_27){ +with(_25){ +return objj_msgSend(objj_msgSend(_25,"alloc"),"initWithType:subpredicates:",CPAndPredicateType,_27); +} +}),new objj_method(sel_getUid("orPredicateWithSubpredicates:"),function(_28,_29,_2a){ +with(_28){ +return objj_msgSend(objj_msgSend(_28,"alloc"),"initWithType:subpredicates:",CPOrPredicateType,_2a); +} +})]); +var _2=objj_getClass("CPCompoundPredicate"); +if(!_2){ +throw new SyntaxError("*** Could not find definition for class \"CPCompoundPredicate\""); +} +var _3=_2.isa; +class_addMethods(_2,[new objj_method(sel_getUid("initWithCoder:"),function(_2b,_2c,_2d){ +with(_2b){ +_2b=objj_msgSendSuper({receiver:_2b,super_class:objj_getClass("CPCompoundPredicate").super_class},"init"); +if(_2b!=nil){ +_predicates=objj_msgSend(_2d,"decodeObjectForKey:","CPCompoundPredicateSubpredicates"); +_type=objj_msgSend(_2d,"decodeIntForKey:","CPCompoundPredicateType"); +} +return _2b; +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_2e,_2f,_30){ +with(_2e){ +objj_msgSend(_30,"encodeObject:forKey:",_predicates,"CPCompoundPredicateSubpredicates"); +objj_msgSend(_30,"encodeInt:forKey:",_type,"CPCompoundPredicateType"); +} +})]); +p;14;CPExpression.jt;5093;@STATIC;1.0;I;21;Foundation/CPString.jI;20;Foundation/CPArray.jI;29;Foundation/CPKeyValueCoding.jI;25;Foundation/CPDictionary.jI;20;Foundation/CPCoder.ji;23;CPExpression_constant.ji;19;CPExpression_self.ji;23;CPExpression_variable.ji;22;CPExpression_keypath.ji;23;CPExpression_function.ji;24;CPExpression_aggregate.ji;23;CPExpression_unionset.ji;27;CPExpression_intersectset.ji;23;CPExpression_minusset.jt;4682; +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPKeyValueCoding.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPCoder.j",NO); +CPConstantValueExpressionType=0; +CPEvaluatedObjectExpressionType=1; +CPVariableExpressionType=2; +CPKeyPathExpressionType=3; +CPFunctionExpressionType=4; +CPAggregateExpressionType=5; +CPSubqueryExpressionType=6; +CPUnionSetExpressionType=7; +CPIntersectSetExpressionType=8; +CPMinusSetExpressionType=9; +var _1=objj_allocateClassPair(CPObject,"CPExpression"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_type")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithExpressionType:"),function(_3,_4,_5){ +with(_3){ +_type=_5; +return _3; +} +}),new objj_method(sel_getUid("expressionType"),function(_6,_7){ +with(_6){ +return _type; +} +}),new objj_method(sel_getUid("constantValue"),function(_8,_9){ +with(_8){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPConstantValueExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("variable"),function(_a,_b){ +with(_a){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPVariableExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("keyPath"),function(_c,_d){ +with(_c){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPKeyPathExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("function"),function(_e,_f){ +with(_e){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPFunctionExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("arguments"),function(_10,_11){ +with(_10){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPFunctionExpressionType"); +return nil; +} +}),new objj_method(sel_getUid("collection"),function(_12,_13){ +with(_12){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"self is not of CPAggregateExpressionType"); +return nil; +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("expressionForConstantValue:"),function(_14,_15,_16){ +with(_14){ +return objj_msgSend(objj_msgSend(CPExpression_constant,"alloc"),"initWithValue:",_16); +} +}),new objj_method(sel_getUid("expressionForEvaluatedObject"),function(_17,_18){ +with(_17){ +return objj_msgSend(objj_msgSend(CPExpression_self,"alloc"),"init"); +} +}),new objj_method(sel_getUid("expressionForVariable:"),function(_19,_1a,_1b){ +with(_19){ +return objj_msgSend(objj_msgSend(CPExpression_variable,"alloc"),"initWithVariable:",_1b); +} +}),new objj_method(sel_getUid("expressionForKeyPath:"),function(_1c,_1d,_1e){ +with(_1c){ +return objj_msgSend(objj_msgSend(CPExpression_keypath,"alloc"),"initWithKeyPath:",_1e); +} +}),new objj_method(sel_getUid("expressionForAggregate:"),function(_1f,_20,_21){ +with(_1f){ +return objj_msgSend(objj_msgSend(CPExpression_aggregate,"alloc"),"initWithAggregate:",_21); +} +}),new objj_method(sel_getUid("expressionForUnionSet:with:"),function(_22,_23,_24,_25){ +with(_22){ +return objj_msgSend(objj_msgSend(CPExpression_unionset,"alloc"),"initWithLeft:right:",_24,_25); +} +}),new objj_method(sel_getUid("expressionForIntersectSet:with:"),function(_26,_27,_28,_29){ +with(_26){ +return objj_msgSend(objj_msgSend(CPExpression_intersectset,"alloc"),"initWithLeft:right:",_28,_29); +} +}),new objj_method(sel_getUid("expressionForMinusSet:with:"),function(_2a,_2b,_2c,_2d){ +with(_2a){ +return objj_msgSend(objj_msgSend(CPExpression_minusset,"alloc"),"initWithLeft:right:",_2c,_2d); +} +}),new objj_method(sel_getUid("expressionForFunction:arguments:"),function(_2e,_2f,_30,_31){ +with(_2e){ +return objj_msgSend(objj_msgSend(CPExpression_function,"alloc"),"initWithSelector:arguments:",CPSelectorFromString(_30),_31); +} +}),new objj_method(sel_getUid("expressionForFunction:selectorName:arguments:"),function(_32,_33,_34,_35,_36){ +with(_32){ +return objj_msgSend(objj_msgSend(CPExpression_function,"alloc"),"initWithTarget:selector:arguments:",_34,CPSelectorFromString(_35),_36); +} +}),new objj_method(sel_getUid("expressionForSubquery:usingIteratorVariable:predicate:"),function(_37,_38,_39,_3a,_3b){ +with(_37){ +return nil; +} +})]); +objj_executeFile("CPExpression_constant.j",YES); +objj_executeFile("CPExpression_self.j",YES); +objj_executeFile("CPExpression_variable.j",YES); +objj_executeFile("CPExpression_keypath.j",YES); +objj_executeFile("CPExpression_function.j",YES); +objj_executeFile("CPExpression_aggregate.j",YES); +objj_executeFile("CPExpression_unionset.j",YES); +objj_executeFile("CPExpression_intersectset.j",YES); +objj_executeFile("CPExpression_minusset.j",YES); +p;24;CPExpression_aggregate.jt;3086;@STATIC;1.0;i;14;CPExpression.jI;20;Foundation/CPArray.jI;21;Foundation/CPString.jt;2997; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_aggregate"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_aggregate")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithAggregate:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_aggregate").super_class},"initWithExpressionType:",CPAggregateExpressionType); +_aggregate=_5; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(_8,"decodeObjectForKey:","CPExpressionAggregate"); +return objj_msgSend(_6,"initWithAggregate:",_9); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_c,"encodeObject:forKey:",_aggregate,"CPExpressionAggregate"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_d,_e,_f){ +with(_d){ +if(_d==_f){ +return YES; +} +if(_f.isa!=_d.isa||objj_msgSend(_f,"expressionType")!=objj_msgSend(_d,"expressionType")||!objj_msgSend(objj_msgSend(_f,"collection"),"isEqual:",objj_msgSend(_d,"collection"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("collection"),function(_10,_11){ +with(_10){ +return _aggregate; +} +}),new objj_method(sel_getUid("rightExpression"),function(_12,_13){ +with(_12){ +if(objj_msgSend(_aggregate,"count")>0){ +return objj_msgSend(_aggregate,"lastObject"); +} +return nil; +} +}),new objj_method(sel_getUid("leftExpression"),function(_14,_15){ +with(_14){ +if(objj_msgSend(_aggregate,"count")>0){ +return objj_msgSend(_aggregate,"objectAtIndex:",0); +} +return nil; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_16,_17,_18,_19){ +with(_16){ +var _1a=objj_msgSend(CPArray,"array"),_1b=objj_msgSend(_aggregate,"objectEnumerator"),exp; +while(exp=objj_msgSend(_1b,"nextObject")){ +var _1c=objj_msgSend(exp,"expressionValueWithObject:context:",_18,_19); +if(_1c!=nil){ +objj_msgSend(_1a,"addObject:",_1c); +} +} +return _1a; +} +}),new objj_method(sel_getUid("description"),function(_1d,_1e){ +with(_1d){ +var i,_1f=objj_msgSend(_aggregate,"count"),_20="{"; +for(i=0;i<_1f;i++){ +_20=_20+objj_msgSend(CPString,"stringWithFormat:","%s%s",objj_msgSend(objj_msgSend(_aggregate,"objectAtIndex:",i),"description"),(i+1<_1f)?", ":""); +} +_20=_20+"}"; +return _20; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_21,_22,_23){ +with(_21){ +var _24=objj_msgSend(CPArray,"array"),_25=objj_msgSend(_aggregate,"count"),i; +for(i=0;i<_25;i++){ +objj_msgSend(_24,"addObject:",objj_msgSend(objj_msgSend(_aggregate,"objectAtIndex:",i),"_expressionWithSubstitutionVariables:",_23)); +} +return objj_msgSend(CPExpression,"expressionForAggregate:",_24); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("expressionForAggregate:"),function(_26,_27,_28){ +with(_26){ +return objj_msgSend(objj_msgSend(_26,"alloc"),"initWithAggregate:",_28); +} +})]); +p;25;CPExpression_assignment.jt;2785;@STATIC;1.0;i;14;CPExpression.ji;23;CPExpression_variable.jI;21;Foundation/CPString.jt;2693; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("CPExpression_variable.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_assignment"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_assignmentVariable"),new objj_ivar("_subexpression")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithAssignmentVariable:expression:"),function(_3,_4,_5,_6){ +with(_3){ +_assignmentVariable=objj_msgSend(CPExpression,"expressionForVariable:",_5); +_subexpression=_6; +return _3; +} +}),new objj_method(sel_getUid("initWithAssignmentExpression:expression:"),function(_7,_8,_9,_a){ +with(_7){ +_assignmentVariable=_9; +_subexpression=_a; +return _7; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_b,_c,_d){ +with(_b){ +var _e=objj_msgSend(_d,"decodeObjectForKey:","CPExpressionAssignmentVariable"); +var _f=objj_msgSend(_d,"decodeObjectForKey:","CPExpressionAssignmentExpression"); +return objj_msgSend(_b,"initWithAssignmentVariable:expression:",_e,_f); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_10,_11,_12){ +with(_10){ +objj_msgSend(_12,"encodeObject:forKey:",_assignmentVariable,"CPExpressionAssignmentVariable"); +objj_msgSend(_12,"encodeObject:forKey:",_subexpression,"CPExpressionAssignmentExpression"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_13,_14,_15){ +with(_13){ +if(_13==_15){ +return YES; +} +if(_15.isa!=_13.isa||objj_msgSend(_15,"expressionType")!=objj_msgSend(_13,"expressionType")||!objj_msgSend(objj_msgSend(_15,"subexpression"),"isEqual:",objj_msgSend(_13,"subexpression"))||!objj_msgSend(objj_msgSend(_15,"variable"),"isEqualToString:",objj_msgSend(_13,"variable"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("assignmentVariable"),function(_16,_17){ +with(_16){ +return _assignmentVariable; +} +}),new objj_method(sel_getUid("subexpression"),function(_18,_19){ +with(_18){ +return _subexpression; +} +}),new objj_method(sel_getUid("variable"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_assignmentVariable,"variable"); +} +}),new objj_method(sel_getUid("description"),function(_1c,_1d){ +with(_1c){ +var _1e=objj_msgSend(_expression,"description"); +if(objj_msgSend(_subexpression,"isKindOfClass:",objj_msgSend(CPExpression_operator,"class"))){ +_1e=objj_msgSend(CPString,"stringWithFormat:","(%@)",_1e); +} +return objj_msgSend(CPString,"stringWithFormat:","%@ := %@",objj_msgSend(_1c,"variable"),_1e); +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_1f,_20,_21,_22){ +with(_1f){ +return nil; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_23,_24,_25){ +with(_23){ +return nil; +} +})]); +p;23;CPExpression_constant.jt;1814;@STATIC;1.0;i;14;CPExpression.jI;25;Foundation/CPDictionary.jt;1746; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPDictionary.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_constant"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_value")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithValue:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_constant").super_class},"initWithExpressionType:",CPConstantValueExpressionType); +_value=_5; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(_8,"decodeObjectForKey:","CPExpressionConstantValue"); +return objj_msgSend(_6,"initWithValue:",_9); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_c,"encodeObject:forKey:",_value,"CPExpressionConstantValue"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_d,_e,_f){ +with(_d){ +if(_d==_f){ +return YES; +} +if(_f.isa!=_d.isa||objj_msgSend(_f,"expressionType")!=objj_msgSend(_d,"expressionType")||!objj_msgSend(objj_msgSend(_f,"constantValue"),"isEqual:",objj_msgSend(_d,"constantValue"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("constantValue"),function(_10,_11){ +with(_10){ +return _value; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +return _value; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_16,_17,_18){ +with(_16){ +return _16; +} +}),new objj_method(sel_getUid("description"),function(_19,_1a){ +with(_19){ +if(objj_msgSend(_value,"isKindOfClass:",objj_msgSend(CPString,"class"))){ +return "\""+_value+"\""; +} +return objj_msgSend(_value,"description"); +} +})]); +p;23;CPExpression_function.jt;11558;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;20;Foundation/CPArray.jI;25;Foundation/CPDictionary.jt;11438; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_function"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_operand"),new objj_ivar("_selector"),new objj_ivar("_arguments"),new objj_ivar("_argc")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithSelector:arguments:"),function(_3,_4,_5,_6){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_function").super_class},"initWithExpressionType:",CPFunctionExpressionType); +if(!objj_msgSend(_3,"respondsToSelector:",_5)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unknown function implementation: "+_5); +} +_selector=_5; +_operand=nil; +_arguments=_6; +_argc=objj_msgSend(_6,"count"); +return _3; +} +}),new objj_method(sel_getUid("initWithTarget:selector:arguments:"),function(_7,_8,_9,_a,_b){ +with(_7){ +objj_msgSendSuper({receiver:_7,super_class:objj_getClass("CPExpression_function").super_class},"initWithExpressionType:",CPFunctionExpressionType); +var _c=objj_msgSend(_9,"expressionValueWithObject:context:",object,context); +if(!objj_msgSend(_c,"respondsToSelector:",_a)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Unknown function implementation: "+_a); +} +_selector=_a; +_operand=_9; +_arguments=_b; +_argc=objj_msgSend(_b,"count"); +return _7; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_d,_e,_f){ +with(_d){ +var _10=CPSelectorFromString(objj_msgSend(_f,"decodeObjectForKey:","CPExpressionFunctionName")); +var _11=objj_msgSend(_f,"decodeObjectForKey:","CPExpressionFunctionArguments"); +return objj_msgSend(_d,"initWithSelector:arguments:",_10,_11); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_12,_13,_14){ +with(_12){ +objj_msgSend(_14,"encodeObject:forKey:",objj_msgSend(_12,"_function"),"CPExpressionFunctionName"); +objj_msgSend(_14,"encodeObject:forKey:",_arguments,"CPExpressionArguments"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_15,_16,_17){ +with(_15){ +if(_15==_17){ +return YES; +} +if(_17.isa!=_15.isa||objj_msgSend(_17,"expressionType")!=objj_msgSend(_15,"expressionType")||!objj_msgSend(objj_msgSend(_17,"_function"),"isEqualToString:",objj_msgSend(_15,"_function"))||!objj_msgSend(objj_msgSend(_17,"operand"),"isEqual:",objj_msgSend(_15,"operand"))||!objj_msgSend(objj_msgSend(_17,"arguments"),"isEqualToArray:",objj_msgSend(_15,"arguments"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("_function"),function(_18,_19){ +with(_18){ +return CPStringFromSelector(_selector); +} +}),new objj_method(sel_getUid("function"),function(_1a,_1b){ +with(_1a){ +return objj_msgSend(_1a,"_function"); +} +}),new objj_method(sel_getUid("arguments"),function(_1c,_1d){ +with(_1c){ +return _arguments; +} +}),new objj_method(sel_getUid("operand"),function(_1e,_1f){ +with(_1e){ +return _operand; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_20,_21,_22,_23){ +with(_20){ +var _24=objj_msgSend(CPArray,"array"),i; +for(i=0;i<_argc;i++){ +var arg=objj_msgSend(objj_msgSend(_arguments,"objectAtIndex:",i),"expressionValueWithObject:context:",_22,_23); +if(arg!=nil){ +objj_msgSend(_24,"addObject:",arg); +} +} +var _25=(_operand==nil)?_20:objj_msgSend(_operand,"expressionValueWithObject:context:",_22,_23); +return objj_msgSend(_25,"performSelector:withObject:",_selector,_24); +} +}),new objj_method(sel_getUid("description"),function(_26,_27){ +with(_26){ +var _28=objj_msgSend(CPString,"stringWithFormat:","%@ %s(",objj_msgSend(_operand,"description"),objj_msgSend(_26,"_function")),i; +for(i=0;i<_argc;i++){ +_28=_28+objj_msgSend(_arguments,"objectAtIndex:",i)+(i+1<_argc)?", ":""; +} +_28=_28+")"; +return _28; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_29,_2a,_2b){ +with(_29){ +var _2c=objj_msgSend(CPArray,"array"),i; +for(i=0;i<_argc;i++){ +objj_msgSend(_2c,"addObject:",objj_msgSend(objj_msgSend(_arguments,"objectAtIndex:",i),"_expressionWithSubstitutionVariables:",_2b)); +} +return objj_msgSend(CPExpression,"expressionForFunction:selectorName:arguments:",objj_msgSend(_29,"operand"),objj_msgSend(_29,"_function"),_2c); +} +}),new objj_method(sel_getUid("sum:"),function(_2d,_2e,_2f){ +with(_2d){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var i,sum=0; +for(i=0;i<_argc;i++){ +sum+=objj_msgSend(objj_msgSend(_2f,"objectAtIndex:",i),"doubleValue"); +} +return objj_msgSend(CPNumber,"numberWithDouble:",sum); +} +}),new objj_method(sel_getUid("count:"),function(_30,_31,_32){ +with(_30){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return objj_msgSend(CPNumber,"numberWithUnsignedInt:",objj_msgSend(objj_msgSend(_32,"objectAtIndex:",0),"count")); +} +}),new objj_method(sel_getUid("min:"),function(_33,_34,_35){ +with(_33){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return MIN(objj_msgSend(_35,"objectAtIndex:",0),objj_msgSend(_35,"objectAtIndex:",1)); +} +}),new objj_method(sel_getUid("max:"),function(_36,_37,_38){ +with(_36){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return MAX(objj_msgSend(_38,"objectAtIndex:",0),objj_msgSend(_38,"objectAtIndex:",1)); +} +}),new objj_method(sel_getUid("average:"),function(_39,_3a,_3b){ +with(_39){ +if(_argc<1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var i,sum=0; +for(i=0;i<_argc;i++){ +sum+=objj_msgSend(objj_msgSend(_3b,"objectAtIndex:",i),"doubleValue"); +} +return objj_msgSend(CPNumber,"numberWithDouble:",sum/_argc); +} +}),new objj_method(sel_getUid("add::"),function(_3c,_3d,to,_3e){ +with(_3c){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _3f=objj_msgSend(_3e,"objectAtIndex:",0),_40=objj_msgSend(_3e,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithDouble:",objj_msgSend(_3f,"doubleValue")+objj_msgSend(_40,"doubleValue")); +} +}),new objj_method(sel_getUid("from::"),function(_41,_42,_43,_44){ +with(_41){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _45=objj_msgSend(_44,"objectAtIndex:",0),_46=objj_msgSend(_44,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithDouble:",objj_msgSend(_45,"doubleValue")-objj_msgSend(_46,"doubleValue")); +} +}),new objj_method(sel_getUid("multiply::"),function(_47,_48,by,_49){ +with(_47){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _4a=objj_msgSend(_49,"objectAtIndex:",0),_4b=objj_msgSend(_49,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithDouble:",objj_msgSend(_4a,"doubleValue")*objj_msgSend(_4b,"doubleValue")); +} +}),new objj_method(sel_getUid("divide::"),function(_4c,_4d,by,_4e){ +with(_4c){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _4f=objj_msgSend(_4e,"objectAtIndex:",0),_50=objj_msgSend(_4e,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithDouble:",objj_msgSend(_4f,"doubleValue")/objj_msgSend(_50,"doubleValue")); +} +}),new objj_method(sel_getUid("sqrt:"),function(_51,_52,_53){ +with(_51){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_53,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",SQRT(num)); +} +}),new objj_method(sel_getUid("raise::"),function(_54,_55,to,_56){ +with(_54){ +if(_argc<2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_56,"objectAtIndex:",0),"doubleValue"),_57=objj_msgSend(objj_msgSend(_56,"objectAtIndex:",1),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",POW(num,_57)); +} +}),new objj_method(sel_getUid("abs:"),function(_58,_59,_5a){ +with(_58){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_5a,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",ABS(num)); +} +}),new objj_method(sel_getUid("now"),function(_5b,_5c){ +with(_5b){ +return objj_msgSend(CPDate,"date"); +} +}),new objj_method(sel_getUid("ln:"),function(_5d,_5e,_5f){ +with(_5d){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_5f,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",Math.log(num)); +} +}),new objj_method(sel_getUid("exp:"),function(_60,_61,_62){ +with(_60){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_62,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",EXP(num)); +} +}),new objj_method(sel_getUid("ceiling:"),function(_63,_64,_65){ +with(_63){ +if(_argc!=1){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var num=objj_msgSend(objj_msgSend(_65,"objectAtIndex:",0),"doubleValue"); +return objj_msgSend(CPNumber,"numberWithDouble:",CEIL(num)); +} +}),new objj_method(sel_getUid("random"),function(_66,_67){ +with(_66){ +return objj_msgSend(CPNumber,"numberWithDouble:",RAND()); +} +}),new objj_method(sel_getUid("modulus::"),function(_68,_69,by,_6a){ +with(_68){ +if(_argc!=2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _6b=objj_msgSend(_6a,"objectAtIndex:",0),_6c=objj_msgSend(_6a,"objectAtIndex:",1); +return objj_msgSend(CPNumber,"numberWithInt:",(objj_msgSend(_6b,"intValue")%objj_msgSend(_6c,"intValue"))); +} +}),new objj_method(sel_getUid("first:"),function(_6d,_6e,_6f){ +with(_6d){ +if(_argc==0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return objj_msgSend(objj_msgSend(_6f,"objectAtIndex:",0),"objectAtIndex:",0); +} +}),new objj_method(sel_getUid("last:"),function(_70,_71,_72){ +with(_70){ +if(_argc==0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return objj_msgSend(objj_msgSend(_72,"objectAtIndex:",0),"lastObject"); +} +}),new objj_method(sel_getUid("chs:"),function(_73,_74,_75){ +with(_73){ +if(_argc==0){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +return objj_msgSend(CPNumber,"numberWithInt:",-objj_msgSend(objj_msgSend(_75,"objectAtIndex:",0),"intValue")); +} +}),new objj_method(sel_getUid("index:"),function(_76,_77,_78){ +with(_76){ +if(_argc<2){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid number of parameters"); +} +var _79=objj_msgSend(_78,"objectAtIndex:",0),_7a=objj_msgSend(_78,"objectAtIndex:",1); +if(objj_msgSend(_79,"isKindOfClass:",objj_msgSend(CPDictionary,"class"))){ +return objj_msgSend(_79,"objectForKey:",_7a); +}else{ +return objj_msgSend(_79,"objectAtIndex:",objj_msgSend(_7a,"intValue")); +} +} +})]); +p;27;CPExpression_intersectset.jt;3032;@STATIC;1.0;i;14;CPExpression.jt;2994; +objj_executeFile("CPExpression.j",YES); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_intersectset"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_left"),new objj_ivar("_right")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithLeft:right:"),function(_3,_4,_5,_6){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_intersectset").super_class},"initWithExpressionType:",CPIntersectSetExpressionType); +_left=_5; +_right=_6; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_7,_8,_9){ +with(_7){ +var _a=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionUnionSetLeftExpression"); +var _b=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionUnionSetRightExpression"); +return objj_msgSend(_7,"initWithLeft:right:",_a,_b); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_e,"encodeObject:forKey:",_left,"CPExpressionUnionSetLeftExpression"); +objj_msgSend(_e,"encodeObject:forKey:",_right,"CPExpressionUnionSetRightExpression"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_f,_10,_11){ +with(_f){ +if(_f==_11){ +return YES; +} +if(_11.isa!=_f.isa||objj_msgSend(_11,"expressionType")!=objj_msgSend(_f,"expressionType")||!objj_msgSend(objj_msgSend(_11,"leftExpression"),"isEqual:",objj_msgSend(_f,"leftExpression"))||!objj_msgSend(objj_msgSend(_11,"rightExpression"),"isEqual:",objj_msgSend(_f,"rightExpression"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +var _16=objj_msgSend(_right,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_16,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right expression for a CPIntersectSetExpressionType expression must be either a CPArray, CPDictionary or CPSet"); +} +var _17=objj_msgSend(_left,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_17,"isKindOfClass:",objj_msgSend(CPSet,"set"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left expression for a CPIntersectSetExpressionType expression must a CPSet"); +} +var set=objj_msgSend(CPSet,"setWithSet:",_17),e=objj_msgSend(_16,"objectEnumerator"),_18; +while(_18=objj_msgSend(e,"nextObject")){ +if(objj_msgSend(_17,"containsObject:",_18)){ +objj_msgSend(set,"addObject:",_18); +} +} +return objj_msgSend(CPExpression,"expressionForConstantValue:",set); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_19,_1a,_1b){ +with(_19){ +return _19; +} +}),new objj_method(sel_getUid("leftExpression"),function(_1c,_1d){ +with(_1c){ +return _left; +} +}),new objj_method(sel_getUid("rightExpression"),function(_1e,_1f){ +with(_1e){ +return _right; +} +}),new objj_method(sel_getUid("description"),function(_20,_21){ +with(_20){ +return objj_msgSend(_left,"description")+" INTERSECT "+objj_msgSend(_right,"description"); +} +})]); +p;22;CPExpression_keypath.jt;1788;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;29;Foundation/CPKeyValueCoding.jt;1690; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPKeyValueCoding.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_keypath"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_keyPath")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithKeyPath:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_keypath").super_class},"initWithExpressionType:",CPKeyPathExpressionType); +_keyPath=_5; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(_8,"decodeObjectForKey:","CPExpressionKeyPath"); +return objj_msgSend(_6,"initWithKeyPath:",_9); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_c,"encodeObject:forKey:",_keyPath,"CPExpressionKeyPath"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_d,_e,_f){ +with(_d){ +if(_d==_f){ +return YES; +} +if(_f.isa!=_d.isa||objj_msgSend(_f,"expressionType")!=objj_msgSend(_d,"expressionType")||!objj_msgSend(objj_msgSend(_f,"keyPath"),"isEqualToString:",objj_msgSend(_d,"keyPath"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("keyPath"),function(_10,_11){ +with(_10){ +return _keyPath; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +return objj_msgSend(_14,"valueForKeyPath:",_keyPath); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_16,_17,_18){ +with(_16){ +return _16; +} +}),new objj_method(sel_getUid("description"),function(_19,_1a){ +with(_19){ +return _keyPath; +} +})]); +p;23;CPExpression_minusset.jt;2903;@STATIC;1.0;i;14;CPExpression.jt;2865; +objj_executeFile("CPExpression.j",YES); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_minusset"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithLeft:right:"),function(_3,_4,_5,_6){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_minusset").super_class},"initWithExpressionType:",CPMinusSetExpressionType); +_left=_5; +_right=_6; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_7,_8,_9){ +with(_7){ +var _a=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionMinusSetLeftExpression"); +var _b=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionMinusSetRightExpression"); +return objj_msgSend(_7,"initWithLeft:right:",_a,_b); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_e,"encodeObject:forKey:",_left,"CPExpressionMinusSetLeftExpression"); +objj_msgSend(_e,"encodeObject:forKey:",_right,"CPExpressionMinusSetRightExpression"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_f,_10,_11){ +with(_f){ +if(_f==_11){ +return YES; +} +if(_11.isa!=_f.isa||objj_msgSend(_11,"expressionType")!=objj_msgSend(_f,"expressionType")||!objj_msgSend(objj_msgSend(_11,"leftExpression"),"isEqual:",objj_msgSend(_f,"leftExpression"))||!objj_msgSend(objj_msgSend(_11,"rightExpression"),"isEqual:",objj_msgSend(_f,"rightExpression"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +var _16=objj_msgSend(_right,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_16,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right expression for a CPIntersectSetExpressionType expression must be either a CPArray, CPDictionary or CPSet"); +} +var _17=objj_msgSend(_left,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_17,"isKindOfClass:",objj_msgSend(CPSet,"set"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left expression for a CPIntersectSetExpressionType expression must a CPSet"); +} +var set=objj_msgSend(CPSet,"setWithSet:",_17),e=objj_msgSend(_16,"objectEnumerator"),_18; +while(_18=objj_msgSend(e,"nextObject")){ +objj_msgSend(set,"removeObject:",_18); +} +return objj_msgSend(CPExpression,"expressionForConstantValue:",set); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_19,_1a,_1b){ +with(_19){ +return _19; +} +}),new objj_method(sel_getUid("leftExpression"),function(_1c,_1d){ +with(_1c){ +return _left; +} +}),new objj_method(sel_getUid("rightExpression"),function(_1e,_1f){ +with(_1e){ +return _right; +} +}),new objj_method(sel_getUid("description"),function(_20,_21){ +with(_20){ +return objj_msgSend(_left,"description")+" MINUS "+objj_msgSend(_right,"description"); +} +})]); +p;23;CPExpression_operator.jt;4015;@STATIC;1.0;i;14;CPExpression.jI;20;Foundation/CPArray.jI;21;Foundation/CPString.jI;25;Foundation/CPDictionary.jt;3896; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +var _1="CPExpressionOperatorNegate"; +var _2="CPExpressionOperatorAdd"; +var _3="CPExpressionOperatorSubtract"; +var _4="CPExpressionOperatorMultiply"; +var _5="CPExpressionOperatorDivide"; +var _6="CPExpressionOperatorExp"; +var _7="CPExpressionOperatorAssign"; +var _8="CPExpressionOperatorKeypath"; +var _9="CPExpressionOperatorIndex"; +var _a="CPExpressionOperatorIndexFirst"; +var _b="CPExpressionOperatorIndexLast"; +var _c="CPExpressionOperatorIndexSize"; +var _d=objj_allocateClassPair(CPExpression,"CPExpression_operator"),_e=_d.isa; +class_addIvars(_d,[new objj_ivar("_operator"),new objj_ivar("_arguments")]); +objj_registerClassPair(_d); +class_addMethods(_d,[new objj_method(sel_getUid("initWithOperator:arguments:"),function(_f,_10,_11,_12){ +with(_f){ +_operator=_11; +_arguments=_12; +return _f; +} +}),new objj_method(sel_getUid("arguments"),function(_13,_14){ +with(_13){ +return _arguments; +} +}),new objj_method(sel_getUid("description"),function(_15,_16){ +with(_15){ +var _17=objj_msgSend(CPString,"string"),_18=objj_msgSend(CPArray,"array"),_19=objj_msgSend(_arguments,"count"),i; +for(i=0;i<_19;i++){ +var _1a=objj_msgSend(_arguments,"objectAtIndex:",i),_1b=objj_msgSend(_1a,"description"); +if(objj_msgSend(_1a,"isKindOfClass:",objj_msgSend(CPExpression_operator,"class"))){ +_1b=objj_msgSend(CPString,"stringWithFormat:","(%@)",_1b); +} +objj_msgSend(_18,"addObject:",_1b); +} +switch(_operator){ +case _1: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","-%@",objj_msgSend(_18,"objectAtIndex:",0)); +break; +case _2: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ + %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _3: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ - %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _4: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ * %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _5: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ / %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _6: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ ** %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _7: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@ := %@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _8: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@.%@",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _9: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@[%@]",objj_msgSend(_18,"objectAtIndex:",0),objj_msgSend(_18,"objectAtIndex:",1)); +break; +case _a: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@[FIRST]",objj_msgSend(_18,"objectAtIndex:",0)); +break; +case _b: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@[LAST]",objj_msgSend(_18,"objectAtIndex:",0)); +break; +case _c: +_17=_17+objj_msgSend(CPString,"stringWithFormat:","%@[SIZE]",objj_msgSend(_18,"objectAtIndex:",0)); +break; +} +return _17; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_1c,_1d,_1e){ +with(_1c){ +var _1f=objj_msgSend(CPArray,"array"),_20=objj_msgSend(_arguments,"count"),i; +for(i=0;i<_20;i++){ +objj_msgSend(_1f,"addObject:",objj_msgSend(objj_msgSend(_arguments,"objectAtIndex:",i),"_expressionWithSubstitutionVariables:",_1e)); +} +return objj_msgSend(CPExpression_operator,"expressionForOperator:arguments:",_operator,_1f); +} +})]); +class_addMethods(_e,[new objj_method(sel_getUid("expressionForOperator:arguments:"),function(_21,_22,_23,_24){ +with(_21){ +return objj_msgSend(_21,"initWithOperator:arguments:",_23,_24); +} +})]); +p;19;CPExpression_self.jt;1270;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;25;Foundation/CPDictionary.jI;20;Foundation/CPCoder.jt;1151; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +objj_executeFile("Foundation/CPCoder.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_self"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("init"),function(_3,_4){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_self").super_class},"initWithExpressionType:",CPEvaluatedObjectExpressionType); +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_5,_6,_7){ +with(_5){ +return objj_msgSend(_5,"init"); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_8,_9,_a){ +with(_8){ +} +}),new objj_method(sel_getUid("isEqual:"),function(_b,_c,_d){ +with(_b){ +return (_d==_b); +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_e,_f,_10,_11){ +with(_e){ +return _10; +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_12,_13,_14){ +with(_12){ +return _12; +} +}),new objj_method(sel_getUid("description"),function(_15,_16){ +with(_15){ +return "SELF"; +} +})]); +p;23;CPExpression_unionset.jt;2895;@STATIC;1.0;i;14;CPExpression.jt;2857; +objj_executeFile("CPExpression.j",YES); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_unionset"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithLeft:right:"),function(_3,_4,_5,_6){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_unionset").super_class},"initWithExpressionType:",CPUnionSetExpressionType); +_left=_5; +_right=_6; +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_7,_8,_9){ +with(_7){ +var _a=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionUnionSetLeftExpression"),_b=objj_msgSend(_9,"decodeObjectForKey:","CPExpressionUnionSetRightExpression"); +return objj_msgSend(_7,"initWithLeft:right:",_a,_b); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_c,_d,_e){ +with(_c){ +objj_msgSend(_e,"encodeObject:forKey:",_left,"CPExpressionUnionSetLeftExpression"); +objj_msgSend(_e,"encodeObject:forKey:",_right,"CPExpressionUnionSetRightExpression"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_f,_10,_11){ +with(_f){ +if(_f==_11){ +return YES; +} +if(_11.isa!=_f.isa||objj_msgSend(_11,"expressionType")!=objj_msgSend(_f,"expressionType")||!objj_msgSend(objj_msgSend(_11,"leftExpression"),"isEqual:",objj_msgSend(_f,"leftExpression"))||!objj_msgSend(objj_msgSend(_11,"rightExpression"),"isEqual:",objj_msgSend(_f,"rightExpression"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +var _16=objj_msgSend(_right,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_16,"respondsToSelector:",sel_getUid("objectEnumerator"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The right expression for a CPIntersectSetExpressionType expression must be either a CPArray, CPDictionary or CPSet"); +} +var _17=objj_msgSend(_left,"expressionValueWithObject:context:",_14,_15); +if(!objj_msgSend(_17,"isKindOfClass:",objj_msgSend(CPSet,"set"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"The left expression for a CPIntersectSetExpressionType expression must a CPSet"); +} +var _18=objj_msgSend(CPSet,"setWithSet:",_17),e=objj_msgSend(_16,"objectEnumerator"),_19; +while(_19=objj_msgSend(e,"nextObject")){ +objj_msgSend(_18,"addObject:",_19); +} +return objj_msgSend(CPExpression,"expressionForConstantValue:",_18); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_1a,_1b,_1c){ +with(_1a){ +return _1a; +} +}),new objj_method(sel_getUid("leftExpression"),function(_1d,_1e){ +with(_1d){ +return _left; +} +}),new objj_method(sel_getUid("rightExpression"),function(_1f,_20){ +with(_1f){ +return _right; +} +}),new objj_method(sel_getUid("description"),function(_21,_22){ +with(_21){ +return objj_msgSend(_left,"description")+" UNION "+objj_msgSend(_right,"description"); +} +})]); +p;23;CPExpression_variable.jt;2001;@STATIC;1.0;i;14;CPExpression.jI;21;Foundation/CPString.jI;25;Foundation/CPDictionary.jt;1907; +objj_executeFile("CPExpression.j",YES); +objj_executeFile("Foundation/CPString.j",NO); +objj_executeFile("Foundation/CPDictionary.j",NO); +var _1=objj_allocateClassPair(CPExpression,"CPExpression_variable"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_variable")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithVariable:"),function(_3,_4,_5){ +with(_3){ +objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPExpression_variable").super_class},"initWithExpressionType:",CPVariableExpressionType); +_variable=objj_msgSend(_5,"copy"); +return _3; +} +}),new objj_method(sel_getUid("initWithCoder:"),function(_6,_7,_8){ +with(_6){ +var _9=objj_msgSend(_8,"decodeObjectForKey:","CPExpressionVariable"); +return objj_msgSend(_6,"initWithVariable:",_9); +} +}),new objj_method(sel_getUid("encodeWithCoder:"),function(_a,_b,_c){ +with(_a){ +objj_msgSend(_c,"encodeObject:forKey:",_variable,"CPExpressionVariable"); +} +}),new objj_method(sel_getUid("isEqual:"),function(_d,_e,_f){ +with(_d){ +if(_d==_f){ +return YES; +} +if(_f.isa!=_d.isa||objj_msgSend(_f,"expressionType")!=objj_msgSend(_d,"expressionType")||!objj_msgSend(objj_msgSend(_f,"variable"),"isEqualToString:",objj_msgSend(_d,"variable"))){ +return NO; +} +return YES; +} +}),new objj_method(sel_getUid("variable"),function(_10,_11){ +with(_10){ +return _variable; +} +}),new objj_method(sel_getUid("expressionValueWithObject:context:"),function(_12,_13,_14,_15){ +with(_12){ +return objj_msgSend(_15,"objectForKey:",_variable); +} +}),new objj_method(sel_getUid("description"),function(_16,_17){ +with(_16){ +return objj_msgSend(CPString,"stringWithFormat:","$%s",_variable); +} +}),new objj_method(sel_getUid("_expressionWithSubstitutionVariables:"),function(_18,_19,_1a){ +with(_18){ +var _1b=objj_msgSend(_1a,"objectForKey:",_variable); +if(_1b!=nil){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",_1b); +} +return _18; +} +})]); +p;13;CPPredicate.jt;24096;@STATIC;1.0;I;20;Foundation/CPValue.jI;20;Foundation/CPArray.jI;18;Foundation/CPSet.jI;19;Foundation/CPNull.jI;22;Foundation/CPScanner.ji;21;CPCompoundPredicate.ji;23;CPComparisonPredicate.ji;14;CPExpression.ji;23;CPExpression_operator.ji;24;CPExpression_aggregate.ji;25;CPExpression_assignment.jt;23792; +objj_executeFile("Foundation/CPValue.j",NO); +objj_executeFile("Foundation/CPArray.j",NO); +objj_executeFile("Foundation/CPSet.j",NO); +objj_executeFile("Foundation/CPNull.j",NO); +objj_executeFile("Foundation/CPScanner.j",NO); +var _1=objj_allocateClassPair(CPObject,"CPPredicate"),_2=_1.isa; +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("predicateWithSubstitutionVariables:"),function(_3,_4,_5){ +with(_3){ +} +}),new objj_method(sel_getUid("evaluateWithObject:"),function(_6,_7,_8){ +with(_6){ +} +}),new objj_method(sel_getUid("evaluateWithObject:substitutionVariables:"),function(_9,_a,_b,_c){ +with(_9){ +} +}),new objj_method(sel_getUid("predicateFormat"),function(_d,_e){ +with(_d){ +} +}),new objj_method(sel_getUid("description"),function(_f,_10){ +with(_f){ +return objj_msgSend(_f,"predicateFormat"); +} +})]); +class_addMethods(_2,[new objj_method(sel_getUid("predicateWithFormat:"),function(_11,_12,_13){ +with(_11){ +if(!_13){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,_12+" the format can't be 'nil'"); +} +var _14=Array.prototype.slice.call(arguments,3); +return objj_msgSend(_11,"predicateWithFormat:argumentArray:",arguments[2],_14); +} +}),new objj_method(sel_getUid("predicateWithFormat:argumentArray:"),function(_15,_16,_17,_18){ +with(_15){ +if(!_17){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,_16+" the format can't be 'nil'"); +} +var s=objj_msgSend(objj_msgSend(CPPredicateScanner,"alloc"),"initWithString:args:",_17,_18),p=objj_msgSend(s,"parse"); +return p; +} +}),new objj_method(sel_getUid("predicateWithFormat:arguments:"),function(_19,_1a,_1b,_1c){ +with(_19){ +return nil; +} +}),new objj_method(sel_getUid("predicateWithValue:"),function(_1d,_1e,_1f){ +with(_1d){ +return objj_msgSend(objj_msgSend(CPPredicate_BOOL,"alloc"),"initWithBool:",_1f); +} +})]); +var _1=objj_allocateClassPair(CPPredicate,"CPPredicate_BOOL"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_value")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithBool:"),function(_20,_21,_22){ +with(_20){ +_value=_22; +return _20; +} +}),new objj_method(sel_getUid("evaluateObject:"),function(_23,_24,_25){ +with(_23){ +return _value; +} +}),new objj_method(sel_getUid("predicateFormat"),function(_26,_27){ +with(_26){ +return (_value)?"TRUEPREDICATE":"FALSEPREDICATE"; +} +})]); +var _1=objj_getClass("CPArray"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPArray\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("filteredArrayUsingPredicate:"),function(_28,_29,_2a){ +with(_28){ +var _2b=objj_msgSend(_28,"count"),_2c=objj_msgSend(CPArray,"array"),i; +for(i=0;i<_2b;i++){ +var _2d=_28[i]; +if(objj_msgSend(_2a,"evaluateWithObject:",_2d)){ +_2c.push(_2d); +} +} +return _2c; +} +}),new objj_method(sel_getUid("filterUsingPredicate:"),function(_2e,_2f,_30){ +with(_2e){ +var _31=objj_msgSend(_2e,"count"); +while(_31--){ +if(!objj_msgSend(_30,"evaluateWithObject:",_2e[_31])){ +splice(_31,1); +} +} +} +})]); +var _1=objj_getClass("CPSet"); +if(!_1){ +throw new SyntaxError("*** Could not find definition for class \"CPSet\""); +} +var _2=_1.isa; +class_addMethods(_1,[new objj_method(sel_getUid("filteredSetUsingPredicate:"),function(_32,_33,_34){ +with(_32){ +var _35=objj_msgSend(_32,"count"),_36=objj_msgSend(CPSet,"set"),i; +for(i=0;i<_35;i++){ +var _37=objj_msgSend(_32,"objectAtIndex:",i); +if(objj_msgSend(_34,"evaluateWithObject:",_37)){ +objj_msgSend(_36,"addObject:",_37); +} +} +return _36; +} +}),new objj_method(sel_getUid("filterUsingPredicate:"),function(_38,_39,_3a){ +with(_38){ +var _3b=objj_msgSend(_38,"count"); +while(--_3b>=0){ +var _3c=objj_msgSend(_38,"objectAtIndex:",_3b); +if(!objj_msgSend(_3a,"evaluateWithObject:",_3c)){ +objj_msgSend(_38,"removeObjectAtIndex:",_3b); +} +} +} +})]); +var _1=objj_allocateClassPair(CPScanner,"CPPredicateScanner"),_2=_1.isa; +class_addIvars(_1,[new objj_ivar("_args"),new objj_ivar("_retrieved")]); +objj_registerClassPair(_1); +class_addMethods(_1,[new objj_method(sel_getUid("initWithString:args:"),function(_3d,_3e,_3f,_40){ +with(_3d){ +_3d=objj_msgSendSuper({receiver:_3d,super_class:objj_getClass("CPPredicateScanner").super_class},"initWithString:",_3f); +if(_3d!=nil){ +_args=objj_msgSend(_40,"objectEnumerator"); +} +return _3d; +} +}),new objj_method(sel_getUid("nextArg"),function(_41,_42){ +with(_41){ +return objj_msgSend(_args,"nextObject"); +} +}),new objj_method(sel_getUid("scanPredicateKeyword:"),function(_43,_44,key){ +with(_43){ +var loc=objj_msgSend(_43,"scanLocation"); +var c; +objj_msgSend(_43,"setCaseSensitive:",NO); +if(!objj_msgSend(_43,"scanString:intoString:",key,NULL)){ +return NO; +} +if(objj_msgSend(_43,"isAtEnd")){ +return YES; +} +c=objj_msgSend(objj_msgSend(_43,"string"),"characterAtIndex:",objj_msgSend(_43,"scanLocation")); +if(!objj_msgSend(objj_msgSend(CPCharacterSet,"alphanumericCharacterSet"),"characterIsMember:",c)){ +return YES; +} +objj_msgSend(_43,"setScanLocation:",loc); +return NO; +} +}),new objj_method(sel_getUid("parse"),function(_45,_46){ +with(_45){ +var r=nil; +try{ +objj_msgSend(_45,"setCharactersToBeSkipped:",objj_msgSend(CPCharacterSet,"whitespaceCharacterSet")); +r=objj_msgSend(_45,"parsePredicate"); +} +catch(error){ +CPLogConsole("Parsing failed for "+objj_msgSend(_45,"string")+" with "+error); +} +finally{ +if(!objj_msgSend(_45,"isAtEnd")){ +CPLogConsole("Format string contains extra characters: \""+objj_msgSend(_45,"string")+"\""); +} +} +return r; +} +}),new objj_method(sel_getUid("parsePredicate"),function(_47,_48){ +with(_47){ +return objj_msgSend(_47,"parseAnd"); +} +}),new objj_method(sel_getUid("parseAnd"),function(_49,_4a){ +with(_49){ +var l=objj_msgSend(_49,"parseOr"); +while(objj_msgSend(_49,"scanPredicateKeyword:","AND")||objj_msgSend(_49,"scanPredicateKeyword:","&&")){ +var r=objj_msgSend(_49,"parseOr"); +if(objj_msgSend(r,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(r,"compoundPredicateType")==CPAndPredicateType){ +if(objj_msgSend(l,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(l,"compoundPredicateType")==CPAndPredicateType){ +objj_msgSend(objj_msgSend(l,"subpredicates"),"addObjectsFromArray:",objj_msgSend(r,"subpredicates")); +}else{ +objj_msgSend(objj_msgSend(r,"subpredicates"),"insertObject:atIndex:",l,0); +l=r; +} +}else{ +if(objj_msgSend(l,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(l,"compoundPredicateType")==CPAndPredicateType){ +objj_msgSend(objj_msgSend(l,"subpredicates"),"addObject:",r); +}else{ +l=objj_msgSend(CPCompoundPredicate,"andPredicateWithSubpredicates:",objj_msgSend(CPArray,"arrayWithObjects:",l,r)); +} +} +} +return l; +} +}),new objj_method(sel_getUid("parseNot"),function(_4b,_4c){ +with(_4b){ +if(objj_msgSend(_4b,"scanString:intoString:","(",NULL)){ +var r=objj_msgSend(_4b,"parsePredicate"); +if(!objj_msgSend(_4b,"scanString:intoString:",")",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing ) in compound predicate"); +} +return r; +} +if(objj_msgSend(_4b,"scanPredicateKeyword:","NOT")||objj_msgSend(_4b,"scanPredicateKeyword:","!")){ +return objj_msgSend(CPCompoundPredicate,"notPredicateWithSubpredicate:",objj_msgSend(_4b,"parseNot")); +} +if(objj_msgSend(_4b,"scanPredicateKeyword:","TRUEPREDICATE")){ +return objj_msgSend(CPPredicate,"predicateWithValue:",YES); +} +if(objj_msgSend(_4b,"scanPredicateKeyword:","FALSEPREDICATE")){ +return objj_msgSend(CPPredicate,"predicateWithValue:",NO); +} +return objj_msgSend(_4b,"parseComparison"); +} +}),new objj_method(sel_getUid("parseOr"),function(_4d,_4e){ +with(_4d){ +var l=objj_msgSend(_4d,"parseNot"); +while(objj_msgSend(_4d,"scanPredicateKeyword:","OR")||objj_msgSend(_4d,"scanPredicateKeyword:","||")){ +var r=objj_msgSend(_4d,"parseNot"); +if(objj_msgSend(r,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(r,"compoundPredicateType")==CPOrPredicateType){ +if(objj_msgSend(l,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(l,"compoundPredicateType")==CPOrPredicateType){ +objj_msgSend(objj_msgSend(l,"subpredicates"),"addObjectsFromArray:",objj_msgSend(r,"subpredicates")); +}else{ +objj_msgSend(objj_msgSend(r,"subpredicates"),"insertObject:atIndex:",l,0); +l=r; +} +}else{ +if(objj_msgSend(l,"isKindOfClass:",objj_msgSend(CPCompoundPredicate,"class"))&&objj_msgSend(l,"compoundPredicateType")==CPOrPredicateType){ +objj_msgSend(objj_msgSend(l,"subpredicates"),"addObject:",r); +}else{ +l=objj_msgSend(CPCompoundPredicate,"orPredicateWithSubpredicates:",objj_msgSend(CPArray,"arrayWithObjects:",l,r)); +} +} +} +return l; +} +}),new objj_method(sel_getUid("parseComparison"),function(_4f,_50){ +with(_4f){ +var _51=CPDirectPredicateModifier,_52=0,_53=0,_54,_55,p,_56=NO,_57=NO; +if(objj_msgSend(_4f,"scanPredicateKeyword:","ANY")){ +_51=CPAnyPredicateModifier; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","ALL")){ +_51=CPAllPredicateModifier; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","NONE")){ +_51=CPAnyPredicateModifier; +_56=YES; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","SOME")){ +_51=CPAllPredicateModifier; +_56=YES; +} +} +} +} +_54=objj_msgSend(_4f,"parseExpression"); +if(objj_msgSend(_4f,"scanString:intoString:","!=",NULL)||objj_msgSend(_4f,"scanString:intoString:","<>",NULL)){ +_52=CPNotEqualToPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","<=",NULL)||objj_msgSend(_4f,"scanString:intoString:","=<",NULL)){ +_52=CPLessThanOrEqualToPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:",">=",NULL)||objj_msgSend(_4f,"scanString:intoString:","=>",NULL)){ +_52=CPGreaterThanOrEqualToPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","<",NULL)){ +_52=CPLessThanPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:",">",NULL)){ +_52=CPGreaterThanPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","==",NULL)||objj_msgSend(_4f,"scanString:intoString:","=",NULL)){ +_52=CPEqualToPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","MATCHES")){ +_52=CPMatchesPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","LIKE")){ +_52=CPLikePredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","BEGINSWITH")){ +_52=CPBeginsWithPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","ENDSWITH")){ +_52=CPEndsWithPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","IN")){ +_52=CPInPredicateOperatorType; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","CONTAINS")){ +_52=CPInPredicateOperatorType; +_57=YES; +}else{ +if(objj_msgSend(_4f,"scanPredicateKeyword:","BETWEEN")){ +var exp=objj_msgSend(_4f,"parseSimpleExpression"),a=objj_msgSend(exp,"constantValue"),_58,_59,_5a,_5b,lp,up; +if(!objj_msgSend(a,"isKindOfClass:",objj_msgSend(CPArray,"class"))){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"BETWEEN operator requires array argument"); +} +_58=objj_msgSend(a,"objectAtIndex:",0); +_59=objj_msgSend(a,"objectAtIndex:",1); +_5a=objj_msgSend(CPExpression,"expressionForConstantValue:",_58); +_5b=objj_msgSend(CPExpression,"expressionForConstantValue:",_59); +lp=objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:modifier:type:options:",_54,_5a,_51,CPGreaterThanPredicateOperatorType,_53); +up=objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:modifier:type:options:",_54,_5b,_51,CPLessThanPredicateOperatorType,_53); +return objj_msgSend(CPCompoundPredicate,"andPredicateWithSubpredicates:",objj_msgSend(CPArray,"arrayWithObjects:",lp,up)); +}else{ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid comparison predicate: "+objj_msgSend(objj_msgSend(_4f,"string"),"substringFromIndex:",objj_msgSend(_4f,"scanLocation"))); +} +} +} +} +} +} +} +} +} +} +} +} +} +if(objj_msgSend(_4f,"scanString:intoString:","[cd]",NULL)){ +_53=CPCaseInsensitivePredicateOption|CPDiacriticInsensitivePredicateOption; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","[c]",NULL)){ +_53=CPCaseInsensitivePredicateOption; +}else{ +if(objj_msgSend(_4f,"scanString:intoString:","[d]",NULL)){ +_53=CPDiacriticInsensitivePredicateOption; +} +} +} +_55=objj_msgSend(_4f,"parseExpression"); +if(_57==YES){ +var tmp=_54; +_54=_55; +_55=tmp; +} +p=objj_msgSend(CPComparisonPredicate,"predicateWithLeftExpression:rightExpression:modifier:type:options:",_54,_55,_51,_52,_53); +return _56?objj_msgSend(CPCompoundPredicate,"notPredicateWithSubpredicate:",p):p; +} +}),new objj_method(sel_getUid("parseExpression"),function(_5c,_5d){ +with(_5c){ +return objj_msgSend(_5c,"parseBinaryExpression"); +} +}),new objj_method(sel_getUid("parseSimpleExpression"),function(_5e,_5f){ +with(_5e){ +var _60,_61,_62,dbl; +if(objj_msgSend(_5e,"scanDouble:",function(_63){ +var _64=dbl; +if(typeof _63!="undefined"){ +dbl=_63; +} +return _64; +})){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(CPNumber,"numberWithDouble:",dbl)); +} +if(objj_msgSend(_5e,"scanString:intoString:","-",NULL)){ +return objj_msgSend(CPExpression,"expressionForFunction:arguments:","chs",objj_msgSend(CPArray,"arrayWithObject:",objj_msgSend(_5e,"parseExpression"))); +} +if(objj_msgSend(_5e,"scanString:intoString:","(",NULL)){ +var arg=objj_msgSend(_5e,"parseExpression"); +if(!objj_msgSend(_5e,"scanString:intoString:",")",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing ) in expression"); +} +return arg; +} +if(objj_msgSend(_5e,"scanString:intoString:","{",NULL)){ +var a=objj_msgSend(CPMutableArray,"arrayWithCapacity:",10); +if(objj_msgSend(_5e,"scanString:intoString:","}",NULL)){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",a); +} +objj_msgSend(a,"addObject:",objj_msgSend(_5e,"parseExpression")); +while(objj_msgSend(_5e,"scanString:intoString:",",",NULL)){ +objj_msgSend(a,"addObject:",objj_msgSend(_5e,"parseExpression")); +} +if(!objj_msgSend(_5e,"scanString:intoString:","}",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing } in aggregate"); +} +return objj_msgSend(CPExpression,"expressionForConstantValue:",a); +} +if(objj_msgSend(_5e,"scanPredicateKeyword:","NULL")||objj_msgSend(_5e,"scanPredicateKeyword:","NIL")){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(CPNull,"null")); +} +if(objj_msgSend(_5e,"scanPredicateKeyword:","TRUE")||objj_msgSend(_5e,"scanPredicateKeyword:","YES")){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(CPNumber,"numberWithBool:",YES)); +} +if(objj_msgSend(_5e,"scanPredicateKeyword:","FALSE")||objj_msgSend(_5e,"scanPredicateKeyword:","NO")){ +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(CPNumber,"numberWithBool:",NO)); +} +if(objj_msgSend(_5e,"scanPredicateKeyword:","SELF")){ +return objj_msgSend(CPExpression,"expressionForEvaluatedObject"); +} +if(objj_msgSend(_5e,"scanString:intoString:","$",NULL)){ +var _65=objj_msgSend(_5e,"parseExpression"); +if(!objj_msgSend(_65,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid variable identifier: "+_65); +} +return objj_msgSend(CPExpression,"expressionForVariable:",objj_msgSend(_65,"keyPath")); +} +_61=objj_msgSend(_5e,"scanLocation"); +if(objj_msgSend(_5e,"scanString:intoString:","%",NULL)){ +if(objj_msgSend(_5e,"isAtEnd")==NO){ +var c=objj_msgSend(objj_msgSend(_5e,"string"),"characterAtIndex:",objj_msgSend(_5e,"scanLocation")); +switch(c){ +case "%": +_61=objj_msgSend(_5e,"scanLocation"); +break; +case "K": +objj_msgSend(_5e,"setScanLocation:",objj_msgSend(_5e,"scanLocation")+1); +return objj_msgSend(CPExpression,"expressionForKeyPath:",objj_msgSend(_5e,"nextArg")); +case "@": +case "c": +case "C": +case "d": +case "D": +case "i": +case "o": +case "O": +case "u": +case "U": +case "x": +case "X": +case "e": +case "E": +case "f": +case "g": +case "G": +objj_msgSend(_5e,"setScanLocation:",objj_msgSend(_5e,"scanLocation")+1); +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(_5e,"nextArg")); +case "h": +objj_msgSend(_5e,"scanString:intoString:","h",NULL); +if(objj_msgSend(_5e,"isAtEnd")==NO){ +c=objj_msgSend(objj_msgSend(_5e,"string"),"characterAtIndex:",objj_msgSend(_5e,"scanLocation")); +if(c=="i"||c=="u"){ +objj_msgSend(_5e,"setScanLocation:",objj_msgSend(_5e,"scanLocation")+1); +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(_5e,"nextArg")); +} +} +break; +case "q": +objj_msgSend(_5e,"scanString:intoString:","q",NULL); +if(objj_msgSend(_5e,"isAtEnd")==NO){ +c=objj_msgSend(objj_msgSend(_5e,"string"),"characterAtIndex:",objj_msgSend(_5e,"scanLocation")); +if(c=="i"||c=="u"||c=="x"||c=="X"){ +objj_msgSend(_5e,"setScanLocation:",objj_msgSend(_5e,"scanLocation")+1); +return objj_msgSend(CPExpression,"expressionForConstantValue:",objj_msgSend(_5e,"nextArg")); +} +} +break; +} +} +objj_msgSend(_5e,"setScanLocation:",_61); +} +if(objj_msgSend(_5e,"scanString:intoString:","\"",NULL)){ +var _66=objj_msgSend(_5e,"charactersToBeSkipped"),str; +objj_msgSend(_5e,"setCharactersToBeSkipped:",nil); +if(objj_msgSend(_5e,"scanUpToString:intoString:","\"",function(_67){ +var _68=str; +if(typeof _67!="undefined"){ +str=_67; +} +return _68; +})==NO){ +objj_msgSend(_5e,"setCharactersToBeSkipped:",_66); +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid double quoted literal at "+_61); +} +objj_msgSend(_5e,"scanString:intoString:","\"",NULL); +objj_msgSend(_5e,"setCharactersToBeSkipped:",_66); +return objj_msgSend(CPExpression,"expressionForConstantValue:",str); +} +if(objj_msgSend(_5e,"scanString:intoString:","'",NULL)){ +var _66=objj_msgSend(_5e,"charactersToBeSkipped"),str; +objj_msgSend(_5e,"setCharactersToBeSkipped:",nil); +if(objj_msgSend(_5e,"scanUpToString:intoString:","'",function(_69){ +var _6a=str; +if(typeof _69!="undefined"){ +str=_69; +} +return _6a; +})==NO){ +objj_msgSend(_5e,"setCharactersToBeSkipped:",_66); +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid single quoted literal at "+_61); +} +objj_msgSend(_5e,"scanString:intoString:","'",NULL); +objj_msgSend(_5e,"setCharactersToBeSkipped:",_66); +return objj_msgSend(CPExpression,"expressionForConstantValue:",str); +} +if(objj_msgSend(_5e,"scanString:intoString:","@",NULL)){ +var e=objj_msgSend(_5e,"parseExpression"); +if(!objj_msgSend(e,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid keypath identifier: "+e); +} +return objj_msgSend(CPExpression,"expressionForKeyPath:",objj_msgSend(e,"keyPath")+"@"); +} +objj_msgSend(_5e,"scanString:intoString:","#",NULL); +if(!_60){ +_60=objj_msgSend(CPCharacterSet,"characterSetWithCharactersInString:","_$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); +} +if(!objj_msgSend(_5e,"scanCharactersFromSet:intoString:",_60,function(_6b){ +var _6c=_62; +if(typeof _6b!="undefined"){ +_62=_6b; +} +return _6c; +})){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing identifier: "+objj_msgSend(objj_msgSend(_5e,"string"),"substringFromIndex:",objj_msgSend(_5e,"scanLocation"))); +} +return objj_msgSend(CPExpression,"expressionForKeyPath:",_62); +} +}),new objj_method(sel_getUid("parseFunctionalExpression"),function(_6d,_6e){ +with(_6d){ +var _6f=objj_msgSend(_6d,"parseSimpleExpression"); +while(YES){ +if(objj_msgSend(_6d,"scanString:intoString:","(",NULL)){ +var _70=objj_msgSend(CPMutableArray,"arrayWithCapacity:",5); +if(!objj_msgSend(_6f,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid function identifier: "+_6f); +} +if(!objj_msgSend(_6d,"scanString:intoString:",")",NULL)){ +objj_msgSend(_70,"addObject:",objj_msgSend(_6d,"parseExpression")); +while(objj_msgSend(_6d,"scanString:intoString:",",",NULL)){ +objj_msgSend(_70,"addObject:",objj_msgSend(_6d,"parseExpression")); +} +if(!objj_msgSend(_6d,"scanString:intoString:",")",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing ) in function arguments"); +} +} +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:",objj_msgSend(_6f,"keyPath"),_70); +}else{ +if(objj_msgSend(_6d,"scanString:intoString:","[",NULL)){ +if(objj_msgSend(_6d,"scanPredicateKeyword:","FIRST")){ +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:","first",objj_msgSend(CPArray,"arrayWithObject:",objj_msgSend(_6d,"parseExpression"))); +}else{ +if(objj_msgSend(_6d,"scanPredicateKeyword:","LAST")){ +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:","last",objj_msgSend(CPArray,"arrayWithObject:",objj_msgSend(_6d,"parseExpression"))); +}else{ +if(objj_msgSend(_6d,"scanPredicateKeyword:","SIZE")){ +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:","count",objj_msgSend(CPArray,"arrayWithObject:",objj_msgSend(_6d,"parseExpression"))); +}else{ +_6f=objj_msgSend(CPExpression,"expressionForFunction:arguments:","index",objj_msgSend(CPArray,"arrayWithObjects:",_6f,objj_msgSend(_6d,"parseExpression"))); +} +} +} +if(!objj_msgSend(_6d,"scanString:intoString:","]",NULL)){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Missing ] in index argument"); +} +}else{ +if(objj_msgSend(_6d,"scanString:intoString:",".",NULL)){ +if(!objj_msgSend(_6f,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid left keypath:"+_6f); +} +var _71=objj_msgSend(_6d,"parseExpression"); +if(!objj_msgSend(_71,"keyPath")){ +objj_msgSend(CPException,"raise:reason:",CPInvalidArgumentException,"Invalid right keypath:"+_71); +} +_6f=objj_msgSend(CPExpression,"expressionForKeyPath:",objj_msgSend(_6f,"keyPath")+"."+objj_msgSend(_71,"keyPath")); +}else{ +return _6f; +} +} +} +} +} +}),new objj_method(sel_getUid("parsePowerExpression"),function(_72,_73){ +with(_72){ +var _74=objj_msgSend(_72,"parseFunctionalExpression"); +while(YES){ +var _75; +if(objj_msgSend(_72,"scanString:intoString:","**",NULL)){ +_75=objj_msgSend(_72,"parseFunctionalExpression"); +_74=objj_msgSend(CPExpression,"expressionForFunction:arguments:","pow",objj_msgSend(CPArray,"arrayWithObjects:",_74,_75)); +}else{ +return _74; +} +} +} +}),new objj_method(sel_getUid("parseMultiplicationExpression"),function(_76,_77){ +with(_76){ +var _78=objj_msgSend(_76,"parsePowerExpression"); +while(YES){ +var _79; +if(objj_msgSend(_76,"scanString:intoString:","*",NULL)){ +_79=objj_msgSend(_76,"parsePowerExpression"); +_78=objj_msgSend(CPExpression,"expressionForFunction:arguments:","_mul",objj_msgSend(CPArray,"arrayWithObjects:",_78,_79)); +}else{ +if(objj_msgSend(_76,"scanString:intoString:","/",NULL)){ +_79=objj_msgSend(_76,"parsePowerExpression"); +_78=objj_msgSend(CPExpression,"expressionForFunction:arguments:","_div",objj_msgSend(CPArray,"arrayWithObjects:",_78,_79)); +}else{ +return _78; +} +} +} +} +}),new objj_method(sel_getUid("parseAdditionExpression"),function(_7a,_7b){ +with(_7a){ +var _7c=objj_msgSend(_7a,"parseMultiplicationExpression"); +while(YES){ +var _7d; +if(objj_msgSend(_7a,"scanString:intoString:","+",NULL)){ +_7d=objj_msgSend(_7a,"parseMultiplicationExpression"); +_7c=objj_msgSend(CPExpression,"expressionForFunction:arguments:","_add",objj_msgSend(CPArray,"arrayWithObjects:",_7c,_7d)); +}else{ +if(objj_msgSend(_7a,"scanString:intoString:","-",NULL)){ +_7d=objj_msgSend(_7a,"parseMultiplicationExpression"); +_7c=objj_msgSend(CPExpression,"expressionForFunction:arguments:","_sub",objj_msgSend(CPArray,"arrayWithObjects:",_7c,_7d)); +}else{ +return _7c; +} +} +} +} +}),new objj_method(sel_getUid("parseBinaryExpression"),function(_7e,_7f){ +with(_7e){ +var _80=objj_msgSend(_7e,"parseAdditionExpression"); +while(YES){ +var _81; +if(objj_msgSend(_7e,"scanString:intoString:",":=",NULL)){ +_81=objj_msgSend(_7e,"parseAdditionExpression"); +}else{ +return _80; +} +} +} +})]); +objj_executeFile("CPCompoundPredicate.j",YES); +objj_executeFile("CPComparisonPredicate.j",YES); +objj_executeFile("CPExpression.j",YES); +objj_executeFile("CPExpression_operator.j",YES); +objj_executeFile("CPExpression_aggregate.j",YES); +objj_executeFile("CPExpression_assignment.j",YES); +e; ADDED Site/Site_Z/Frameworks/Objective-J/LICENSE Index: Site/Site_Z/Frameworks/Objective-J/LICENSE ================================================================== --- Site/Site_Z/Frameworks/Objective-J/LICENSE +++ Site/Site_Z/Frameworks/Objective-J/LICENSE @@ -0,0 +1,503 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + ADDED Site/Site_Z/Frameworks/Objective-J/Objective-J.js Index: Site/Site_Z/Frameworks/Objective-J/Objective-J.js ================================================================== --- Site/Site_Z/Frameworks/Objective-J/Objective-J.js +++ Site/Site_Z/Frameworks/Objective-J/Objective-J.js @@ -0,0 +1,3696 @@ +var ObjectiveJ={}; +(function(_1,_2){ +if(!this.JSON){ +JSON={}; +} +(function(){ +function f(n){ +return n<10?"0"+n:n; +}; +if(typeof Date.prototype.toJSON!=="function"){ +Date.prototype.toJSON=function(_3){ +return this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z"; +}; +String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(_4){ +return this.valueOf(); +}; +} +var cx=new RegExp("[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]","g"); +var _5=new RegExp("[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]","g"); +var _6,_7,_8={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\"":"\\\"","\\":"\\\\"},_9; +function _a(_b){ +_5.lastIndex=0; +return _5.test(_b)?"\""+_b.replace(_5,function(a){ +var c=_8[a]; +return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4); +})+"\"":"\""+_b+"\""; +}; +function _c(_d,_e){ +var i,k,v,_f,_10=_6,_11,_12=_e[_d]; +if(_12&&typeof _12==="object"&&typeof _12.toJSON==="function"){ +_12=_12.toJSON(_d); +} +if(typeof _9==="function"){ +_12=_9.call(_e,_d,_12); +} +switch(typeof _12){ +case "string": +return _a(_12); +case "number": +return isFinite(_12)?String(_12):"null"; +case "boolean": +case "null": +return String(_12); +case "object": +if(!_12){ +return "null"; +} +_6+=_7; +_11=[]; +if(Object.prototype.toString.apply(_12)==="[object Array]"){ +_f=_12.length; +for(i=0;i<_f;i+=1){ +_11[i]=_c(i,_12)||"null"; +} +v=_11.length===0?"[]":_6?"[\n"+_6+_11.join(",\n"+_6)+"\n"+_10+"]":"["+_11.join(",")+"]"; +_6=_10; +return v; +} +if(_9&&typeof _9==="object"){ +_f=_9.length; +for(i=0;i<_f;i+=1){ +k=_9[i]; +if(typeof k==="string"){ +v=_c(k,_12); +if(v){ +_11.push(_a(k)+(_6?": ":":")+v); +} +} +} +}else{ +for(k in _12){ +if(Object.hasOwnProperty.call(_12,k)){ +v=_c(k,_12); +if(v){ +_11.push(_a(k)+(_6?": ":":")+v); +} +} +} +} +v=_11.length===0?"{}":_6?"{\n"+_6+_11.join(",\n"+_6)+"\n"+_10+"}":"{"+_11.join(",")+"}"; +_6=_10; +return v; +} +}; +if(typeof JSON.stringify!=="function"){ +JSON.stringify=function(_13,_14,_15){ +var i; +_6=""; +_7=""; +if(typeof _15==="number"){ +for(i=0;i<_15;i+=1){ +_7+=" "; +} +}else{ +if(typeof _15==="string"){ +_7=_15; +} +} +_9=_14; +if(_14&&typeof _14!=="function"&&(typeof _14!=="object"||typeof _14.length!=="number")){ +throw new Error("JSON.stringify"); +} +return _c("",{"":_13}); +}; +} +if(typeof JSON.parse!=="function"){ +JSON.parse=function(_16,_17){ +var j; +function _18(_19,key){ +var k,v,_1a=_19[key]; +if(_1a&&typeof _1a==="object"){ +for(k in _1a){ +if(Object.hasOwnProperty.call(_1a,k)){ +v=_18(_1a,k); +if(v!==_46){ +_1a[k]=v; +}else{ +delete _1a[k]; +} +} +} +} +return _17.call(_19,key,_1a); +}; +cx.lastIndex=0; +if(cx.test(_16)){ +_16=_16.replace(cx,function(a){ +return "\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4); +}); +} +if(/^[\],:{}\s]*$/.test(_16.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){ +j=eval("("+_16+")"); +return typeof _17==="function"?_18({"":j},""):j; +} +throw new SyntaxError("JSON.parse"); +}; +} +}()); +var _1b=new RegExp("([^%]+|%[\\+\\-\\ \\#0]*[0-9\\*]*(.[0-9\\*]+)?[hlL]?[cbBdieEfgGosuxXpn%@])","g"); +var _1c=new RegExp("(%)([\\+\\-\\ \\#0]*)([0-9\\*]*)((.[0-9\\*]+)?)([hlL]?)([cbBdieEfgGosuxXpn%@])"); +_2.sprintf=function(_1d){ +var _1d=arguments[0],_1e=_1d.match(_1b),_1f=0,_20="",arg=1; +for(var i=0;i<_1e.length;i++){ +var t=_1e[i]; +if(_1d.substring(_1f,_1f+t.length)!=t){ +return _20; +} +_1f+=t.length; +if(t.charAt(0)!="%"){ +_20+=t; +}else{ +var _21=t.match(_1c); +if(_21.length!=8||_21[0]!=t){ +return _20; +} +var _22=_21[1],_23=_21[2],_24=_21[3],_25=_21[4],_26=_21[6],_27=_21[7]; +var _28=null; +if(_24=="*"){ +_28=arguments[arg++]; +}else{ +if(_24!=""){ +_28=Number(_24); +} +} +var _29=null; +if(_25==".*"){ +_29=arguments[arg++]; +}else{ +if(_25!=""){ +_29=Number(_25.substring(1)); +} +} +var _2a=(_23.indexOf("-")>=0); +var _2b=(_23.indexOf("0")>=0); +var _2c=""; +if(RegExp("[bBdiufeExXo]").test(_27)){ +var num=Number(arguments[arg++]); +var _2d=""; +if(num<0){ +_2d="-"; +}else{ +if(_23.indexOf("+")>=0){ +_2d="+"; +}else{ +if(_23.indexOf(" ")>=0){ +_2d=" "; +} +} +} +if(_27=="d"||_27=="i"||_27=="u"){ +var _2e=String(Math.abs(Math.floor(num))); +_2c=_2f(_2d,"",_2e,"",_28,_2a,_2b); +} +if(_27=="f"){ +var _2e=String((_29!=null)?Math.abs(num).toFixed(_29):Math.abs(num)); +var _30=(_23.indexOf("#")>=0&&_2e.indexOf(".")<0)?".":""; +_2c=_2f(_2d,"",_2e,_30,_28,_2a,_2b); +} +if(_27=="e"||_27=="E"){ +var _2e=String(Math.abs(num).toExponential(_29!=null?_29:21)); +var _30=(_23.indexOf("#")>=0&&_2e.indexOf(".")<0)?".":""; +_2c=_2f(_2d,"",_2e,_30,_28,_2a,_2b); +} +if(_27=="x"||_27=="X"){ +var _2e=String(Math.abs(num).toString(16)); +var _31=(_23.indexOf("#")>=0&&num!=0)?"0x":""; +_2c=_2f(_2d,_31,_2e,"",_28,_2a,_2b); +} +if(_27=="b"||_27=="B"){ +var _2e=String(Math.abs(num).toString(2)); +var _31=(_23.indexOf("#")>=0&&num!=0)?"0b":""; +_2c=_2f(_2d,_31,_2e,"",_28,_2a,_2b); +} +if(_27=="o"){ +var _2e=String(Math.abs(num).toString(8)); +var _31=(_23.indexOf("#")>=0&&num!=0)?"0":""; +_2c=_2f(_2d,_31,_2e,"",_28,_2a,_2b); +} +if(RegExp("[A-Z]").test(_27)){ +_2c=_2c.toUpperCase(); +}else{ +_2c=_2c.toLowerCase(); +} +}else{ +var _2c=""; +if(_27=="%"){ +_2c="%"; +}else{ +if(_27=="c"){ +_2c=String(arguments[arg++]).charAt(0); +}else{ +if(_27=="s"||_27=="@"){ +_2c=String(arguments[arg++]); +}else{ +if(_27=="p"||_27=="n"){ +arg++; +_2c=""; +} +} +} +} +_2c=_2f("","",_2c,"",_28,_2a,false); +} +_20+=_2c; +} +} +return _20; +}; +function _2f(_32,_33,_34,_35,_36,_37,_38){ +var _39=(_32.length+_33.length+_34.length+_35.length); +if(_37){ +return _32+_33+_34+_35+pad(_36-_39," "); +}else{ +if(_38){ +return _32+_33+pad(_36-_39,"0")+_34+_35; +}else{ +return pad(_36-_39," ")+_32+_33+_34+_35; +} +} +}; +function pad(n,ch){ +return Array(MAX(0,n)+1).join(ch); +}; +CPLogDisable=false; +var _3a="Cappuccino"; +var _3b=["fatal","error","warn","info","debug","trace"]; +var _3c=_3b[3]; +var _3d={}; +for(var i=0;i<_3b.length;i++){ +_3d[_3b[i]]=i; +} +var _3e={}; +CPLogRegister=function(_3f,_40,_41){ +CPLogRegisterRange(_3f,_3b[0],_40||_3b[_3b.length-1],_41); +}; +CPLogRegisterRange=function(_42,_43,_44,_45){ +var min=_3d[_43]; +var max=_3d[_44]; +if(min!==_46&&max!==_46&&min<=max){ +for(var i=min;i<=max;i++){ +CPLogRegisterSingle(_42,_3b[i],_45); +} +} +}; +CPLogRegisterSingle=function(_47,_48,_49){ +if(!_3e[_48]){ +_3e[_48]=[]; +} +for(var i=0;i<_3e[_48].length;i++){ +if(_3e[_48][i][0]===_47){ +_3e[_48][i][1]=_49; +return; +} +} +_3e[_48].push([_47,_49]); +}; +CPLogUnregister=function(_4a){ +for(var _4b in _3e){ +for(var i=0;i<_3e[_4b].length;i++){ +if(_3e[_4b][i][0]===_4a){ +_3e[_4b].splice(i--,1); +} +} +} +}; +function _4c(_4d,_4e,_4f){ +if(_4f==_46){ +_4f=_3a; +} +if(_4e==_46){ +_4e=_3c; +} +var _50=(typeof _4d[0]=="string"&&_4d.length>1)?_2.sprintf.apply(null,_4d):String(_4d[0]); +if(_3e[_4e]){ +for(var i=0;i<_3e[_4e].length;i++){ +var _51=_3e[_4e][i]; +_51[0](_50,_4e,_4f,_51[1]); +} +} +}; +CPLog=function(){ +_4c(arguments); +}; +for(var i=0;i<_3b.length;i++){ +CPLog[_3b[i]]=(function(_52){ +return function(){ +_4c(arguments,_52); +}; +})(_3b[i]); +} +var _53=function(_54,_55,_56){ +var now=new Date(); +_55=(_55==null?"":" ["+CPLogColorize(_55,_55)+"]"); +if(typeof _2.sprintf=="function"){ +return _2.sprintf("%4d-%02d-%02d %02d:%02d:%02d.%03d %s%s: %s",now.getFullYear(),now.getMonth()+1,now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds(),now.getMilliseconds(),_56,_55,_54); +}else{ +return now+" "+_56+_55+": "+_54; +} +}; +CPLogConsole=function(_57,_58,_59,_5a){ +if(typeof console!="undefined"){ +var _5b=(_5a||_53)(_57,_58,_59); +var _5c={"fatal":"error","error":"error","warn":"warn","info":"info","debug":"debug","trace":"debug"}[_58]; +if(_5c&&console[_5c]){ +console[_5c](_5b); +}else{ +if(console.log){ +console.log(_5b); +} +} +} +}; +CPLogColorize=function(_5d,_5e){ +return _5d; +}; +CPLogAlert=function(_5f,_60,_61,_62){ +if(typeof alert!="undefined"&&!CPLogDisable){ +var _63=(_62||_53)(_5f,_60,_61); +CPLogDisable=!confirm(_63+"\n\n(Click cancel to stop log alerts)"); +} +}; +var _64=null; +CPLogPopup=function(_65,_66,_67,_68){ +try{ +if(CPLogDisable||window.open==_46){ +return; +} +if(!_64||!_64.document){ +_64=window.open("","_blank","width=600,height=400,status=no,resizable=yes,scrollbars=yes"); +if(!_64){ +CPLogDisable=!confirm(_65+"\n\n(Disable pop-up blocking for CPLog window; Click cancel to stop log alerts)"); +return; +} +_69(_64); +} +var _6a=_64.document.createElement("div"); +_6a.setAttribute("class",_66||"fatal"); +var _6b=(_68||_53)(_65,_68?_66:null,_67); +_6a.appendChild(_64.document.createTextNode(_6b)); +_64.log.appendChild(_6a); +if(_64.focusEnabled.checked){ +_64.focus(); +} +if(_64.blockEnabled.checked){ +_64.blockEnabled.checked=_64.confirm(_6b+"\nContinue blocking?"); +} +if(_64.scrollEnabled.checked){ +_64.scrollToBottom(); +} +} +catch(e){ +} +}; +var _6c=""; +function _69(_6d){ +var doc=_6d.document; +doc.writeln(""+_6c+""); +doc.title=_3a+" Run Log"; +var _6e=doc.getElementsByTagName("head")[0]; +var _6f=doc.getElementsByTagName("body")[0]; +var _70=window.location.protocol+"//"+window.location.host+window.location.pathname; +_70=_70.substring(0,_70.lastIndexOf("/")+1); +var div=doc.createElement("div"); +div.setAttribute("id","header"); +_6f.appendChild(div); +var ul=doc.createElement("ul"); +ul.setAttribute("id","enablers"); +div.appendChild(ul); +for(var i=0;i<_3b.length;i++){ +var li=doc.createElement("li"); +li.setAttribute("id","en"+_3b[i]); +li.setAttribute("class",_3b[i]); +li.setAttribute("onclick","toggle(this);"); +li.setAttribute("enabled","yes"); +li.appendChild(doc.createTextNode(_3b[i])); +ul.appendChild(li); +} +var ul=doc.createElement("ul"); +ul.setAttribute("id","options"); +div.appendChild(ul); +var _71={"focus":["Focus",false],"block":["Block",false],"wrap":["Wrap",false],"scroll":["Scroll",true],"close":["Close",true]}; +for(o in _71){ +var li=doc.createElement("li"); +ul.appendChild(li); +_6d[o+"Enabled"]=doc.createElement("input"); +_6d[o+"Enabled"].setAttribute("id",o); +_6d[o+"Enabled"].setAttribute("type","checkbox"); +if(_71[o][1]){ +_6d[o+"Enabled"].setAttribute("checked","checked"); +} +li.appendChild(_6d[o+"Enabled"]); +var _72=doc.createElement("label"); +_72.setAttribute("for",o); +_72.appendChild(doc.createTextNode(_71[o][0])); +li.appendChild(_72); +} +_6d.log=doc.createElement("div"); +_6d.log.setAttribute("class","enerror endebug enwarn eninfo enfatal entrace"); +_6f.appendChild(_6d.log); +_6d.toggle=function(_73){ +var _74=(_73.getAttribute("enabled")=="yes")?"no":"yes"; +_73.setAttribute("enabled",_74); +if(_74=="yes"){ +_6d.log.className+=" "+_73.id; +}else{ +_6d.log.className=_6d.log.className.replace(new RegExp("[\\s]*"+_73.id,"g"),""); +} +}; +_6d.scrollToBottom=function(){ +_6d.scrollTo(0,_6f.offsetHeight); +}; +_6d.wrapEnabled.addEventListener("click",function(){ +_6d.log.setAttribute("wrap",_6d.wrapEnabled.checked?"yes":"no"); +},false); +_6d.addEventListener("keydown",function(e){ +var e=e||_6d.event; +if(e.keyCode==75&&(e.ctrlKey||e.metaKey)){ +while(_6d.log.firstChild){ +_6d.log.removeChild(_6d.log.firstChild); +} +e.preventDefault(); +} +},"false"); +window.addEventListener("unload",function(){ +if(_6d&&_6d.closeEnabled&&_6d.closeEnabled.checked){ +CPLogDisable=true; +_6d.close(); +} +},false); +_6d.addEventListener("unload",function(){ +if(!CPLogDisable){ +CPLogDisable=!confirm("Click cancel to stop logging"); +} +},false); +}; +CPLogDefault=(typeof window==="object"&&window.console)?CPLogConsole:CPLogPopup; +var _46; +if(typeof window!=="undefined"){ +window.setNativeTimeout=window.setTimeout; +window.clearNativeTimeout=window.clearTimeout; +window.setNativeInterval=window.setInterval; +window.clearNativeInterval=window.clearInterval; +} +NO=false; +YES=true; +nil=null; +Nil=null; +NULL=null; +ABS=Math.abs; +ASIN=Math.asin; +ACOS=Math.acos; +ATAN=Math.atan; +ATAN2=Math.atan2; +SIN=Math.sin; +COS=Math.cos; +TAN=Math.tan; +EXP=Math.exp; +POW=Math.pow; +CEIL=Math.ceil; +FLOOR=Math.floor; +ROUND=Math.round; +MIN=Math.min; +MAX=Math.max; +RAND=Math.random; +SQRT=Math.sqrt; +E=Math.E; +LN2=Math.LN2; +LN10=Math.LN10; +LOG2E=Math.LOG2E; +LOG10E=Math.LOG10E; +PI=Math.PI; +PI2=Math.PI*2; +PI_2=Math.PI/2; +SQRT1_2=Math.SQRT1_2; +SQRT2=Math.SQRT2; +function _75(_76){ +this._eventListenersForEventNames={}; +this._owner=_76; +}; +_75.prototype.addEventListener=function(_77,_78){ +var _79=this._eventListenersForEventNames; +if(!_7a.call(_79,_77)){ +var _7b=[]; +_79[_77]=_7b; +}else{ +var _7b=_79[_77]; +} +var _7c=_7b.length; +while(_7c--){ +if(_7b[_7c]===_78){ +return; +} +} +_7b.push(_78); +}; +_75.prototype.removeEventListener=function(_7d,_7e){ +var _7f=this._eventListenersForEventNames; +if(!_7a.call(_7f,_7d)){ +return; +} +var _80=_7f[_7d],_81=_80.length; +while(_81--){ +if(_80[_81]===_7e){ +return _80.splice(_81,1); +} +} +}; +_75.prototype.dispatchEvent=function(_82){ +var _83=_82.type,_84=this._eventListenersForEventNames; +if(_7a.call(_84,_83)){ +var _85=this._eventListenersForEventNames[_83],_86=0,_87=_85.length; +for(;_86<_87;++_86){ +_85[_86](_82); +} +} +var _88=(this._owner||this)["on"+_83]; +if(_88){ +_88(_82); +} +}; +var _89=0,_8a=null,_8b=[]; +function _8c(_8d){ +var _8e=_89; +if(_8a===null){ +window.setNativeTimeout(function(){ +var _8f=_8b,_90=0,_91=_8b.length; +++_89; +_8a=null; +_8b=[]; +for(;_90<_91;++_90){ +_8f[_90](); +} +},0); +} +return function(){ +var _92=arguments; +if(_89>_8e){ +_8d.apply(this,_92); +}else{ +_8b.push(function(){ +_8d.apply(this,_92); +}); +} +}; +}; +var _93=null; +if(window.ActiveXObject!==_46){ +var _94=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP.6.0"],_95=_94.length; +while(_95--){ +try{ +var _96=_94[_95]; +new ActiveXObject(_96); +_93=function(){ +return new ActiveXObject(_96); +}; +break; +} +catch(anException){ +} +} +} +if(!_93){ +_93=window.XMLHttpRequest; +} +CFHTTPRequest=function(){ +this._isOpen=false; +this._requestHeaders={}; +this._mimeType=null; +this._eventDispatcher=new _75(this); +this._nativeRequest=new _93(); +var _97=this; +this._stateChangeHandler=function(){ +_aa(_97); +}; +this._nativeRequest.onreadystatechange=this._stateChangeHandler; +if(CFHTTPRequest.AuthenticationDelegate!==nil){ +this._eventDispatcher.addEventListener("HTTP403",function(){ +CFHTTPRequest.AuthenticationDelegate(_97); +}); +} +}; +CFHTTPRequest.UninitializedState=0; +CFHTTPRequest.LoadingState=1; +CFHTTPRequest.LoadedState=2; +CFHTTPRequest.InteractiveState=3; +CFHTTPRequest.CompleteState=4; +CFHTTPRequest.AuthenticationDelegate=nil; +CFHTTPRequest.prototype.status=function(){ +try{ +return this._nativeRequest.status||0; +} +catch(anException){ +return 0; +} +}; +CFHTTPRequest.prototype.statusText=function(){ +try{ +return this._nativeRequest.statusText||""; +} +catch(anException){ +return ""; +} +}; +CFHTTPRequest.prototype.readyState=function(){ +return this._nativeRequest.readyState; +}; +CFHTTPRequest.prototype.success=function(){ +var _98=this.status(); +if(_98>=200&&_98<300){ +return YES; +} +return _98===0&&this.responseText()&&this.responseText().length; +}; +CFHTTPRequest.prototype.responseXML=function(){ +var _99=this._nativeRequest.responseXML; +if(_99&&(_93===window.XMLHttpRequest)){ +return _99; +} +return _9a(this.responseText()); +}; +CFHTTPRequest.prototype.responsePropertyList=function(){ +var _9b=this.responseText(); +if(CFPropertyList.sniffedFormatOfString(_9b)===CFPropertyList.FormatXML_v1_0){ +return CFPropertyList.propertyListFromXML(this.responseXML()); +} +return CFPropertyList.propertyListFromString(_9b); +}; +CFHTTPRequest.prototype.responseText=function(){ +return this._nativeRequest.responseText; +}; +CFHTTPRequest.prototype.setRequestHeader=function(_9c,_9d){ +this._requestHeaders[_9c]=_9d; +}; +CFHTTPRequest.prototype.getResponseHeader=function(_9e){ +return this._nativeRequest.getResponseHeader(_9e); +}; +CFHTTPRequest.prototype.getAllResponseHeaders=function(){ +return this._nativeRequest.getAllResponseHeaders(); +}; +CFHTTPRequest.prototype.overrideMimeType=function(_9f){ +this._mimeType=_9f; +}; +CFHTTPRequest.prototype.open=function(_a0,_a1,_a2,_a3,_a4){ +this._isOpen=true; +this._URL=_a1; +this._async=_a2; +this._method=_a0; +this._user=_a3; +this._password=_a4; +return this._nativeRequest.open(_a0,_a1,_a2,_a3,_a4); +}; +CFHTTPRequest.prototype.send=function(_a5){ +if(!this._isOpen){ +delete this._nativeRequest.onreadystatechange; +this._nativeRequest.open(this._method,this._URL,this._async,this._user,this._password); +this._nativeRequest.onreadystatechange=this._stateChangeHandler; +} +for(var i in this._requestHeaders){ +if(this._requestHeaders.hasOwnProperty(i)){ +this._nativeRequest.setRequestHeader(i,this._requestHeaders[i]); +} +} +if(this._mimeType&&"overrideMimeType" in this._nativeRequest){ +this._nativeRequest.overrideMimeType(this._mimeType); +} +this._isOpen=false; +try{ +return this._nativeRequest.send(_a5); +} +catch(anException){ +this._eventDispatcher.dispatchEvent({type:"failure",request:this}); +} +}; +CFHTTPRequest.prototype.abort=function(){ +this._isOpen=false; +return this._nativeRequest.abort(); +}; +CFHTTPRequest.prototype.addEventListener=function(_a6,_a7){ +this._eventDispatcher.addEventListener(_a6,_a7); +}; +CFHTTPRequest.prototype.removeEventListener=function(_a8,_a9){ +this._eventDispatcher.removeEventListener(_a8,_a9); +}; +function _aa(_ab){ +var _ac=_ab._eventDispatcher; +_ac.dispatchEvent({type:"readystatechange",request:_ab}); +var _ad=_ab._nativeRequest,_ae=["uninitialized","loading","loaded","interactive","complete"]; +if(_ae[_ab.readyState()]==="complete"){ +var _af="HTTP"+_ab.status(); +_ac.dispatchEvent({type:_af,request:_ab}); +var _b0=_ab.success()?"success":"failure"; +_ac.dispatchEvent({type:_b0,request:_ab}); +_ac.dispatchEvent({type:_ae[_ab.readyState()],request:_ab}); +}else{ +_ac.dispatchEvent({type:_ae[_ab.readyState()],request:_ab}); +} +}; +function _b1(_b2,_b3,_b4){ +var _b5=new CFHTTPRequest(); +if(_b2.pathExtension()==="plist"){ +_b5.overrideMimeType("text/xml"); +} +if(_2.asyncLoader){ +_b5.onsuccess=_8c(_b3); +_b5.onfailure=_8c(_b4); +}else{ +_b5.onsuccess=_b3; +_b5.onfailure=_b4; +} +_b5.open("GET",_b2.absoluteString(),_2.asyncLoader); +_b5.send(""); +}; +_2.asyncLoader=YES; +_2.Asynchronous=_8c; +_2.determineAndDispatchHTTPRequestEvents=_aa; +var _b6=0; +objj_generateObjectUID=function(){ +return _b6++; +}; +CFPropertyList=function(){ +this._UID=objj_generateObjectUID(); +}; +CFPropertyList.DTDRE=/^\s*(?:<\?\s*xml\s+version\s*=\s*\"1.0\"[^>]*\?>\s*)?(?:<\!DOCTYPE[^>]*>\s*)?/i; +CFPropertyList.XMLRE=/^\s*(?:<\?\s*xml\s+version\s*=\s*\"1.0\"[^>]*\?>\s*)?(?:<\!DOCTYPE[^>]*>\s*)?<\s*plist[^>]*\>/i; +CFPropertyList.FormatXMLDTD="\n"; +CFPropertyList.Format280NorthMagicNumber="280NPLIST"; +CFPropertyList.FormatOpenStep=1,CFPropertyList.FormatXML_v1_0=100,CFPropertyList.FormatBinary_v1_0=200,CFPropertyList.Format280North_v1_0=-1000; +CFPropertyList.sniffedFormatOfString=function(_b7){ +if(_b7.match(CFPropertyList.XMLRE)){ +return CFPropertyList.FormatXML_v1_0; +} +if(_b7.substr(0,CFPropertyList.Format280NorthMagicNumber.length)===CFPropertyList.Format280NorthMagicNumber){ +return CFPropertyList.Format280North_v1_0; +} +return NULL; +}; +CFPropertyList.dataFromPropertyList=function(_b8,_b9){ +var _ba=new CFMutableData(); +_ba.setRawString(CFPropertyList.stringFromPropertyList(_b8,_b9)); +return _ba; +}; +CFPropertyList.stringFromPropertyList=function(_bb,_bc){ +if(!_bc){ +_bc=CFPropertyList.Format280North_v1_0; +} +var _bd=_be[_bc]; +return _bd["start"]()+_bf(_bb,_bd)+_bd["finish"](); +}; +function _bf(_c0,_c1){ +var _c2=typeof _c0,_c3=_c0.valueOf(),_c4=typeof _c3; +if(_c2!==_c4){ +_c2=_c4; +_c0=_c3; +} +if(_c0===YES||_c0===NO){ +_c2="boolean"; +}else{ +if(_c2==="number"){ +if(FLOOR(_c0)===_c0){ +_c2="integer"; +}else{ +_c2="real"; +} +}else{ +if(_c2!=="string"){ +if(_c0.slice){ +_c2="array"; +}else{ +_c2="dictionary"; +} +} +} +} +return _c1[_c2](_c0,_c1); +}; +var _be={}; +_be[CFPropertyList.FormatXML_v1_0]={"start":function(){ +return CFPropertyList.FormatXMLDTD+""; +},"finish":function(){ +return ""; +},"string":function(_c5){ +return ""+_c6(_c5)+""; +},"boolean":function(_c7){ +return _c7?"":""; +},"integer":function(_c8){ +return ""+_c8+""; +},"real":function(_c9){ +return ""+_c9+""; +},"array":function(_ca,_cb){ +var _cc=0,_cd=_ca.length,_ce=""; +for(;_cc<_cd;++_cc){ +_ce+=_bf(_ca[_cc],_cb); +} +return _ce+""; +},"dictionary":function(_cf,_d0){ +var _d1=_cf._keys,_95=0,_d2=_d1.length,_d3=""; +for(;_95<_d2;++_95){ +var key=_d1[_95]; +_d3+=""+key+""; +_d3+=_bf(_cf.valueForKey(key),_d0); +} +return _d3+""; +}}; +var _d4="A",_d5="D",_d6="f",_d7="d",_d8="S",_d9="T",_da="F",_db="K",_dc="E"; +_be[CFPropertyList.Format280North_v1_0]={"start":function(){ +return CFPropertyList.Format280NorthMagicNumber+";1.0;"; +},"finish":function(){ +return ""; +},"string":function(_dd){ +return _d8+";"+_dd.length+";"+_dd; +},"boolean":function(_de){ +return (_de?_d9:_da)+";"; +},"integer":function(_df){ +var _e0=""+_df; +return _d7+";"+_e0.length+";"+_e0; +},"real":function(_e1){ +var _e2=""+_e1; +return _d6+";"+_e2.length+";"+_e2; +},"array":function(_e3,_e4){ +var _e5=0,_e6=_e3.length,_e7=_d4+";"; +for(;_e5<_e6;++_e5){ +_e7+=_bf(_e3[_e5],_e4); +} +return _e7+_dc+";"; +},"dictionary":function(_e8,_e9){ +var _ea=_e8._keys,_95=0,_eb=_ea.length,_ec=_d5+";"; +for(;_95<_eb;++_95){ +var key=_ea[_95]; +_ec+=_db+";"+key.length+";"+key; +_ec+=_bf(_e8.valueForKey(key),_e9); +} +return _ec+_dc+";"; +}}; +var _ed="xml",_ee="#document",_ef="plist",_f0="key",_f1="dict",_f2="array",_f3="string",_f4="true",_f5="false",_f6="real",_f7="integer",_f8="data"; +var _f9=function(_fa,_fb,_fc){ +var _fd=_fa; +_fd=(_fd.firstChild); +if(_fd!==NULL&&((_fd.nodeType)===8||(_fd.nodeType)===3)){ +while((_fd=(_fd.nextSibling))&&((_fd.nodeType)===8||(_fd.nodeType)===3)){ +} +} +if(_fd){ +return _fd; +} +if((String(_fa.nodeName))===_f2||(String(_fa.nodeName))===_f1){ +_fc.pop(); +}else{ +if(_fd===_fb){ +return NULL; +} +_fd=_fa; +while((_fd=(_fd.nextSibling))&&((_fd.nodeType)===8||(_fd.nodeType)===3)){ +} +if(_fd){ +return _fd; +} +} +_fd=_fa; +while(_fd){ +var _fe=_fd; +while((_fe=(_fe.nextSibling))&&((_fe.nodeType)===8||(_fe.nodeType)===3)){ +} +if(_fe){ +return _fe; +} +var _fd=(_fd.parentNode); +if(_fb&&_fd===_fb){ +return NULL; +} +_fc.pop(); +} +return NULL; +}; +CFPropertyList.propertyListFromData=function(_ff,_100){ +return CFPropertyList.propertyListFromString(_ff.rawString(),_100); +}; +CFPropertyList.propertyListFromString=function(_101,_102){ +if(!_102){ +_102=CFPropertyList.sniffedFormatOfString(_101); +} +if(_102===CFPropertyList.FormatXML_v1_0){ +return CFPropertyList.propertyListFromXML(_101); +} +if(_102===CFPropertyList.Format280North_v1_0){ +return _103(_101); +} +return NULL; +}; +var _d4="A",_d5="D",_d6="f",_d7="d",_d8="S",_d9="T",_da="F",_db="K",_dc="E"; +function _103(_104){ +var _105=new _106(_104),_107=NULL,key="",_108=NULL,_109=NULL,_10a=[],_10b=NULL; +while(_107=_105.getMarker()){ +if(_107===_dc){ +_10a.pop(); +continue; +} +var _10c=_10a.length; +if(_10c){ +_10b=_10a[_10c-1]; +} +if(_107===_db){ +key=_105.getString(); +_107=_105.getMarker(); +} +switch(_107){ +case _d4: +_108=[]; +_10a.push(_108); +break; +case _d5: +_108=new CFMutableDictionary(); +_10a.push(_108); +break; +case _d6: +_108=parseFloat(_105.getString()); +break; +case _d7: +_108=parseInt(_105.getString(),10); +break; +case _d8: +_108=_105.getString(); +break; +case _d9: +_108=YES; +break; +case _da: +_108=NO; +break; +default: +throw new Error("*** "+_107+" marker not recognized in Plist."); +} +if(!_109){ +_109=_108; +}else{ +if(_10b){ +if(_10b.slice){ +_10b.push(_108); +}else{ +_10b.setValueForKey(key,_108); +} +} +} +} +return _109; +}; +function _c6(_10d){ +return _10d.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">"); +}; +function _10e(_10f){ +return _10f.replace(/"/g,"\"").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"); +}; +function _9a(_110){ +if(window.DOMParser){ +return (new window.DOMParser().parseFromString(_110,"text/xml").documentElement); +}else{ +if(window.ActiveXObject){ +XMLNode=new ActiveXObject("Microsoft.XMLDOM"); +var _111=_110.match(CFPropertyList.DTDRE); +if(_111){ +_110=_110.substr(_111[0].length); +} +XMLNode.loadXML(_110); +return XMLNode; +} +} +return NULL; +}; +CFPropertyList.propertyListFromXML=function(_112){ +var _113=_112; +if(_112.valueOf&&typeof _112.valueOf()==="string"){ +_113=_9a(_112); +} +while(((String(_113.nodeName))===_ee)||((String(_113.nodeName))===_ed)){ +_113=(_113.firstChild); +} +if(_113!==NULL&&((_113.nodeType)===8||(_113.nodeType)===3)){ +while((_113=(_113.nextSibling))&&((_113.nodeType)===8||(_113.nodeType)===3)){ +} +} +if(((_113.nodeType)===10)){ +while((_113=(_113.nextSibling))&&((_113.nodeType)===8||(_113.nodeType)===3)){ +} +} +if(!((String(_113.nodeName))===_ef)){ +return NULL; +} +var key="",_114=NULL,_115=NULL,_116=_113,_117=[],_118=NULL; +while(_113=_f9(_113,_116,_117)){ +var _119=_117.length; +if(_119){ +_118=_117[_119-1]; +} +if((String(_113.nodeName))===_f0){ +key=((String((_113.firstChild).nodeValue))); +while((_113=(_113.nextSibling))&&((_113.nodeType)===8||(_113.nodeType)===3)){ +} +} +switch(String((String(_113.nodeName)))){ +case _f2: +_114=[]; +_117.push(_114); +break; +case _f1: +_114=new CFMutableDictionary(); +_117.push(_114); +break; +case _f6: +_114=parseFloat(((String((_113.firstChild).nodeValue)))); +break; +case _f7: +_114=parseInt(((String((_113.firstChild).nodeValue))),10); +break; +case _f3: +if((_113.getAttribute("type")==="base64")){ +_114=(_113.firstChild)?CFData.decodeBase64ToString(((String((_113.firstChild).nodeValue)))):""; +}else{ +_114=_10e((_113.firstChild)?((String((_113.firstChild).nodeValue))):""); +} +break; +case _f4: +_114=YES; +break; +case _f5: +_114=NO; +break; +case _f8: +_114=new CFMutableData(); +_114.bytes=(_113.firstChild)?CFData.decodeBase64ToArray(((String((_113.firstChild).nodeValue))),YES):[]; +break; +default: +throw new Error("*** "+(String(_113.nodeName))+" tag not recognized in Plist."); +} +if(!_115){ +_115=_114; +}else{ +if(_118){ +if(_118.slice){ +_118.push(_114); +}else{ +_118.setValueForKey(key,_114); +} +} +} +} +return _115; +}; +kCFPropertyListOpenStepFormat=CFPropertyList.FormatOpenStep; +kCFPropertyListXMLFormat_v1_0=CFPropertyList.FormatXML_v1_0; +kCFPropertyListBinaryFormat_v1_0=CFPropertyList.FormatBinary_v1_0; +kCFPropertyList280NorthFormat_v1_0=CFPropertyList.Format280North_v1_0; +CFPropertyListCreate=function(){ +return new CFPropertyList(); +}; +CFPropertyListCreateFromXMLData=function(data){ +return CFPropertyList.propertyListFromData(data,CFPropertyList.FormatXML_v1_0); +}; +CFPropertyListCreateXMLData=function(_11a){ +return CFPropertyList.dataFromPropertyList(_11a,CFPropertyList.FormatXML_v1_0); +}; +CFPropertyListCreateFrom280NorthData=function(data){ +return CFPropertyList.propertyListFromData(data,CFPropertyList.Format280North_v1_0); +}; +CFPropertyListCreate280NorthData=function(_11b){ +return CFPropertyList.dataFromPropertyList(_11b,CFPropertyList.Format280North_v1_0); +}; +CPPropertyListCreateFromData=function(data,_11c){ +return CFPropertyList.propertyListFromData(data,_11c); +}; +CPPropertyListCreateData=function(_11d,_11e){ +return CFPropertyList.dataFromPropertyList(_11d,_11e); +}; +CFDictionary=function(_11f){ +this._keys=[]; +this._count=0; +this._buckets={}; +this._UID=objj_generateObjectUID(); +}; +var _120=Array.prototype.indexOf,_7a=Object.prototype.hasOwnProperty; +CFDictionary.prototype.copy=function(){ +return this; +}; +CFDictionary.prototype.mutableCopy=function(){ +var _121=new CFMutableDictionary(),keys=this._keys,_122=this._count; +_121._keys=keys.slice(); +_121._count=_122; +var _123=0,_124=this._buckets,_125=_121._buckets; +for(;_123<_122;++_123){ +var key=keys[_123]; +_125[key]=_124[key]; +} +return _121; +}; +CFDictionary.prototype.containsKey=function(aKey){ +return _7a.apply(this._buckets,[aKey]); +}; +CFDictionary.prototype.containsValue=function(_126){ +var keys=this._keys,_127=this._buckets,_95=0,_128=keys.length; +for(;_95<_128;++_95){ +if(_127[keys[_95]]===_126){ +return YES; +} +} +return NO; +}; +CFDictionary.prototype.count=function(){ +return this._count; +}; +CFDictionary.prototype.countOfKey=function(aKey){ +return this.containsKey(aKey)?1:0; +}; +CFDictionary.prototype.countOfValue=function(_129){ +var keys=this._keys,_12a=this._buckets,_95=0,_12b=keys.length,_12c=0; +for(;_95<_12b;++_95){ +if(_12a[keys[_95]]===_129){ +++_12c; +} +} +return _12c; +}; +CFDictionary.prototype.keys=function(){ +return this._keys.slice(); +}; +CFDictionary.prototype.valueForKey=function(aKey){ +var _12d=this._buckets; +if(!_7a.apply(_12d,[aKey])){ +return nil; +} +return _12d[aKey]; +}; +CFDictionary.prototype.toString=function(){ +var _12e="{\n",keys=this._keys,_95=0,_12f=this._count; +for(;_95<_12f;++_95){ +var key=keys[_95]; +_12e+="\t"+key+" = \""+String(this.valueForKey(key)).split("\n").join("\n\t")+"\"\n"; +} +return _12e+"}"; +}; +CFMutableDictionary=function(_130){ +CFDictionary.apply(this,[]); +}; +CFMutableDictionary.prototype=new CFDictionary(); +CFMutableDictionary.prototype.copy=function(){ +return this.mutableCopy(); +}; +CFMutableDictionary.prototype.addValueForKey=function(aKey,_131){ +if(this.containsKey(aKey)){ +return; +} +++this._count; +this._keys.push(aKey); +this._buckets[aKey]=_131; +}; +CFMutableDictionary.prototype.removeValueForKey=function(aKey){ +var _132=-1; +if(_120){ +_132=_120.call(this._keys,aKey); +}else{ +var keys=this._keys,_95=0,_133=keys.length; +for(;_95<_133;++_95){ +if(keys[_95]===aKey){ +_132=_95; +break; +} +} +} +if(_132===-1){ +return; +} +--this._count; +this._keys.splice(_132,1); +delete this._buckets[aKey]; +}; +CFMutableDictionary.prototype.removeAllValues=function(){ +this._count=0; +this._keys=[]; +this._buckets={}; +}; +CFMutableDictionary.prototype.replaceValueForKey=function(aKey,_134){ +if(!this.containsKey(aKey)){ +return; +} +this._buckets[aKey]=_134; +}; +CFMutableDictionary.prototype.setValueForKey=function(aKey,_135){ +if(_135===nil||_135===_46){ +this.removeValueForKey(aKey); +}else{ +if(this.containsKey(aKey)){ +this.replaceValueForKey(aKey,_135); +}else{ +this.addValueForKey(aKey,_135); +} +} +}; +CFData=function(){ +this._rawString=NULL; +this._propertyList=NULL; +this._propertyListFormat=NULL; +this._JSONObject=NULL; +this._bytes=NULL; +this._base64=NULL; +}; +CFData.prototype.propertyList=function(){ +if(!this._propertyList){ +this._propertyList=CFPropertyList.propertyListFromString(this.rawString()); +} +return this._propertyList; +}; +CFData.prototype.JSONObject=function(){ +if(!this._JSONObject){ +try{ +this._JSONObject=JSON.parse(this.rawString()); +} +catch(anException){ +} +} +return this._JSONObject; +}; +CFData.prototype.rawString=function(){ +if(this._rawString===NULL){ +if(this._propertyList){ +this._rawString=CFPropertyList.stringFromPropertyList(this._propertyList,this._propertyListFormat); +}else{ +if(this._JSONObject){ +this._rawString=JSON.stringify(this._JSONObject); +}else{ +throw new Error("Can't convert data to string."); +} +} +} +return this._rawString; +}; +CFData.prototype.bytes=function(){ +return this._bytes; +}; +CFData.prototype.base64=function(){ +return this._base64; +}; +CFMutableData=function(){ +CFData.call(this); +}; +CFMutableData.prototype=new CFData(); +function _136(_137){ +this._rawString=NULL; +this._propertyList=NULL; +this._propertyListFormat=NULL; +this._JSONObject=NULL; +this._bytes=NULL; +this._base64=NULL; +}; +CFMutableData.prototype.setPropertyList=function(_138,_139){ +_136(this); +this._propertyList=_138; +this._propertyListFormat=_139; +}; +CFMutableData.prototype.setJSONObject=function(_13a){ +_136(this); +this._JSONObject=_13a; +}; +CFMutableData.prototype.setRawString=function(_13b){ +_136(this); +this._rawString=_13b; +}; +CFMutableData.prototype.setBytes=function(_13c){ +_136(this); +this._bytes=_13c; +}; +CFMutableData.prototype.setBase64String=function(_13d){ +_136(this); +this._base64=_13d; +}; +var _13e=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/","="],_13f=[]; +for(var i=0;i<_13e.length;i++){ +_13f[_13e[i].charCodeAt(0)]=i; +} +CFData.decodeBase64ToArray=function(_140,_141){ +if(_141){ +_140=_140.replace(/[^A-Za-z0-9\+\/\=]/g,""); +} +var pad=(_140[_140.length-1]=="="?1:0)+(_140[_140.length-2]=="="?1:0),_142=_140.length,_143=[]; +var i=0; +while(i<_142){ +var bits=(_13f[_140.charCodeAt(i++)]<<18)|(_13f[_140.charCodeAt(i++)]<<12)|(_13f[_140.charCodeAt(i++)]<<6)|(_13f[_140.charCodeAt(i++)]); +_143.push((bits&16711680)>>16); +_143.push((bits&65280)>>8); +_143.push(bits&255); +} +if(pad>0){ +return _143.slice(0,-1*pad); +} +return _143; +}; +CFData.encodeBase64Array=function(_144){ +var pad=(3-(_144.length%3))%3,_145=_144.length+pad,_146=[]; +if(pad>0){ +_144.push(0); +} +if(pad>1){ +_144.push(0); +} +var i=0; +while(i<_145){ +var bits=(_144[i++]<<16)|(_144[i++]<<8)|(_144[i++]); +_146.push(_13e[(bits&16515072)>>18]); +_146.push(_13e[(bits&258048)>>12]); +_146.push(_13e[(bits&4032)>>6]); +_146.push(_13e[bits&63]); +} +if(pad>0){ +_146[_146.length-1]="="; +_144.pop(); +} +if(pad>1){ +_146[_146.length-2]="="; +_144.pop(); +} +return _146.join(""); +}; +CFData.decodeBase64ToString=function(_147,_148){ +return CFData.bytesToString(CFData.decodeBase64ToArray(_147,_148)); +}; +CFData.decodeBase64ToUtf16String=function(_149,_14a){ +return CFData.bytesToUtf16String(CFData.decodeBase64ToArray(_149,_14a)); +}; +CFData.bytesToString=function(_14b){ +return String.fromCharCode.apply(NULL,_14b); +}; +CFData.encodeBase64String=function(_14c){ +var temp=[]; +for(var i=0;i<_14c.length;i++){ +temp.push(_14c.charCodeAt(i)); +} +return CFData.encodeBase64Array(temp); +}; +CFData.bytesToUtf16String=function(_14d){ +var temp=[]; +for(var i=0;i<_14d.length;i+=2){ +temp.push(_14d[i+1]<<8|_14d[i]); +} +return String.fromCharCode.apply(NULL,temp); +}; +CFData.encodeBase64Utf16String=function(_14e){ +var temp=[]; +for(var i=0;i<_14e.length;i++){ +var c=_14e.charCodeAt(i); +temp.push(_14e.charCodeAt(i)&255); +temp.push((_14e.charCodeAt(i)&65280)>>8); +} +return CFData.encodeBase64Array(temp); +}; +var _14f,_150,_151=0; +function _152(){ +if(++_151!==1){ +return; +} +_14f={}; +_150={}; +}; +function _153(){ +_151=MAX(_151-1,0); +if(_151!==0){ +return; +} +delete _14f; +delete _150; +}; +var _154=new RegExp("^"+"(?:"+"([^:/?#]+):"+")?"+"(?:"+"(//)"+"("+"(?:"+"("+"([^:@]*)"+":?"+"([^:@]*)"+")?"+"@"+")?"+"([^:/?#]*)"+"(?::(\\d*))?"+")"+")?"+"([^?#]*)"+"(?:\\?([^#]*))?"+"(?:#(.*))?"); +var _155=["url","scheme","authorityRoot","authority","userInfo","user","password","domain","portNumber","path","queryString","fragment"]; +function _156(aURL){ +if(aURL._parts){ +return aURL._parts; +} +var _157=aURL.string(),_158=_157.match(/^mhtml:/); +if(_158){ +_157=_157.substr("mhtml:".length); +} +if(_151>0&&_7a.call(_150,_157)){ +aURL._parts=_150[_157]; +return aURL._parts; +} +aURL._parts={}; +var _159=aURL._parts,_15a=_154.exec(_157),_95=_15a.length; +while(_95--){ +_159[_155[_95]]=_15a[_95]||NULL; +} +_159.portNumber=parseInt(_159.portNumber,10); +if(isNaN(_159.portNumber)){ +_159.portNumber=-1; +} +_159.pathComponents=[]; +if(_159.path){ +var _15b=_159.path.split("/"),_15c=_159.pathComponents,_95=0,_15d=_15b.length; +for(;_95<_15d;++_95){ +var _15e=_15b[_95]; +if(_15e){ +_15c.push(_15e); +}else{ +if(_95===0){ +_15c.push("/"); +} +} +} +_159.pathComponents=_15c; +} +if(_158){ +_159.url="mhtml:"+_159.url; +_159.scheme="mhtml:"+_159.scheme; +} +if(_151>0){ +_150[_157]=_159; +} +return _159; +}; +CFURL=function(aURL,_15f){ +aURL=aURL||""; +if(aURL instanceof CFURL){ +if(!_15f){ +return aURL; +} +var _160=aURL.baseURL(); +if(_160){ +_15f=new CFURL(_160.absoluteURL(),_15f); +} +aURL=aURL.string(); +} +if(_151>0){ +var _161=aURL+" "+(_15f&&_15f.UID()||""); +if(_7a.call(_14f,_161)){ +return _14f[_161]; +} +_14f[_161]=this; +} +if(aURL.match(/^data:/)){ +var _162={},_95=_155.length; +while(_95--){ +_162[_155[_95]]=""; +} +_162.url=aURL; +_162.scheme="data"; +_162.pathComponents=[]; +this._parts=_162; +this._standardizedURL=this; +this._absoluteURL=this; +} +this._UID=objj_generateObjectUID(); +this._string=aURL; +this._baseURL=_15f; +}; +CFURL.prototype.UID=function(){ +return this._UID; +}; +var _163={}; +CFURL.prototype.mappedURL=function(){ +return _163[this.absoluteString()]||this; +}; +CFURL.setMappedURLForURL=function(_164,_165){ +_163[_164.absoluteString()]=_165; +}; +CFURL.prototype.schemeAndAuthority=function(){ +var _166="",_167=this.scheme(); +if(_167){ +_166+=_167+":"; +} +var _168=this.authority(); +if(_168){ +_166+="//"+_168; +} +return _166; +}; +CFURL.prototype.absoluteString=function(){ +if(this._absoluteString===_46){ +this._absoluteString=this.absoluteURL().string(); +} +return this._absoluteString; +}; +CFURL.prototype.toString=function(){ +return this.absoluteString(); +}; +function _169(aURL){ +aURL=aURL.standardizedURL(); +var _16a=aURL.baseURL(); +if(!_16a){ +return aURL; +} +var _16b=((aURL)._parts||_156(aURL)),_16c,_16d=_16a.absoluteURL(),_16e=((_16d)._parts||_156(_16d)); +if(_16b.scheme||_16b.authority){ +_16c=_16b; +}else{ +_16c={}; +_16c.scheme=_16e.scheme; +_16c.authority=_16e.authority; +_16c.userInfo=_16e.userInfo; +_16c.user=_16e.user; +_16c.password=_16e.password; +_16c.domain=_16e.domain; +_16c.portNumber=_16e.portNumber; +_16c.queryString=_16b.queryString; +_16c.fragment=_16b.fragment; +var _16f=_16b.pathComponents; +if(_16f.length&&_16f[0]==="/"){ +_16c.path=_16b.path; +_16c.pathComponents=_16f; +}else{ +var _170=_16e.pathComponents,_171=_170.concat(_16f); +if(!_16a.hasDirectoryPath()&&_170.length){ +_171.splice(_170.length-1,1); +} +if(_16f.length&&(_16f[0]===".."||_16f[0]===".")){ +_172(_171,YES); +} +_16c.pathComponents=_171; +_16c.path=_173(_171,_16f.length<=0||aURL.hasDirectoryPath()); +} +} +var _174=_175(_16c),_176=new CFURL(_174); +_176._parts=_16c; +_176._standardizedURL=_176; +_176._standardizedString=_174; +_176._absoluteURL=_176; +_176._absoluteString=_174; +return _176; +}; +function _173(_177,_178){ +var path=_177.join("/"); +if(path.length&&path.charAt(0)==="/"){ +path=path.substr(1); +} +if(_178){ +path+="/"; +} +return path; +}; +function _172(_179,_17a){ +var _17b=0,_17c=0,_17d=_179.length,_17e=_17a?_179:[],_17f=NO; +for(;_17b<_17d;++_17b){ +var _180=_179[_17b]; +if(_180===""){ +continue; +} +if(_180==="."){ +_17f=_17c===0; +continue; +} +if(_180!==".."||_17c===0||_17e[_17c-1]===".."){ +_17e[_17c]=_180; +_17c++; +continue; +} +if(_17c>0&&_17e[_17c-1]!=="/"){ +--_17c; +} +} +if(_17f&&_17c===0){ +_17e[_17c++]="."; +} +_17e.length=_17c; +return _17e; +}; +function _175(_181){ +var _182="",_183=_181.scheme; +if(_183){ +_182+=_183+":"; +} +var _184=_181.authority; +if(_184){ +_182+="//"+_184; +} +_182+=_181.path; +var _185=_181.queryString; +if(_185){ +_182+="?"+_185; +} +var _186=_181.fragment; +if(_186){ +_182+="#"+_186; +} +return _182; +}; +CFURL.prototype.absoluteURL=function(){ +if(this._absoluteURL===_46){ +this._absoluteURL=_169(this); +} +return this._absoluteURL; +}; +CFURL.prototype.standardizedURL=function(){ +if(this._standardizedURL===_46){ +var _187=((this)._parts||_156(this)),_188=_187.pathComponents,_189=_172(_188,NO); +var _18a=_173(_189,this.hasDirectoryPath()); +if(_187.path===_18a){ +this._standardizedURL=this; +}else{ +var _18b=_18c(_187); +_18b.pathComponents=_189; +_18b.path=_18a; +var _18d=new CFURL(_175(_18b),this.baseURL()); +_18d._parts=_18b; +_18d._standardizedURL=_18d; +this._standardizedURL=_18d; +} +} +return this._standardizedURL; +}; +function _18c(_18e){ +var _18f={},_190=_155.length; +while(_190--){ +var _191=_155[_190]; +_18f[_191]=_18e[_191]; +} +return _18f; +}; +CFURL.prototype.string=function(){ +return this._string; +}; +CFURL.prototype.authority=function(){ +var _192=((this)._parts||_156(this)).authority; +if(_192){ +return _192; +} +var _193=this.baseURL(); +return _193&&_193.authority()||""; +}; +CFURL.prototype.hasDirectoryPath=function(){ +var _194=this._hasDirectoryPath; +if(_194===_46){ +var path=this.path(); +if(!path){ +return NO; +} +if(path.charAt(path.length-1)==="/"){ +return YES; +} +var _195=this.lastPathComponent(); +_194=_195==="."||_195===".."; +this._hasDirectoryPath=_194; +} +return _194; +}; +CFURL.prototype.hostName=function(){ +return this.authority(); +}; +CFURL.prototype.fragment=function(){ +return ((this)._parts||_156(this)).fragment; +}; +CFURL.prototype.lastPathComponent=function(){ +if(this._lastPathComponent===_46){ +var _196=this.pathComponents(),_197=_196.length; +if(!_197){ +this._lastPathComponent=""; +}else{ +this._lastPathComponent=_196[_197-1]; +} +} +return this._lastPathComponent; +}; +CFURL.prototype.path=function(){ +return ((this)._parts||_156(this)).path; +}; +CFURL.prototype.pathComponents=function(){ +return ((this)._parts||_156(this)).pathComponents; +}; +CFURL.prototype.pathExtension=function(){ +var _198=this.lastPathComponent(); +if(!_198){ +return NULL; +} +_198=_198.replace(/^\.*/,""); +var _199=_198.lastIndexOf("."); +return _199<=0?"":_198.substring(_199+1); +}; +CFURL.prototype.queryString=function(){ +return ((this)._parts||_156(this)).queryString; +}; +CFURL.prototype.scheme=function(){ +var _19a=this._scheme; +if(_19a===_46){ +_19a=((this)._parts||_156(this)).scheme; +if(!_19a){ +var _19b=this.baseURL(); +_19a=_19b&&_19b.scheme(); +} +this._scheme=_19a; +} +return _19a; +}; +CFURL.prototype.user=function(){ +return ((this)._parts||_156(this)).user; +}; +CFURL.prototype.password=function(){ +return ((this)._parts||_156(this)).password; +}; +CFURL.prototype.portNumber=function(){ +return ((this)._parts||_156(this)).portNumber; +}; +CFURL.prototype.domain=function(){ +return ((this)._parts||_156(this)).domain; +}; +CFURL.prototype.baseURL=function(){ +return this._baseURL; +}; +CFURL.prototype.asDirectoryPathURL=function(){ +if(this.hasDirectoryPath()){ +return this; +} +var _19c=this.lastPathComponent(); +if(_19c!=="/"){ +_19c="./"+_19c; +} +return new CFURL(_19c+"/",this); +}; +function _19d(aURL){ +if(!aURL._resourcePropertiesForKeys){ +aURL._resourcePropertiesForKeys=new CFMutableDictionary(); +} +return aURL._resourcePropertiesForKeys; +}; +CFURL.prototype.resourcePropertyForKey=function(aKey){ +return _19d(this).valueForKey(aKey); +}; +CFURL.prototype.setResourcePropertyForKey=function(aKey,_19e){ +_19d(this).setValueForKey(aKey,_19e); +}; +CFURL.prototype.staticResourceData=function(){ +var data=new CFMutableData(); +data.setRawString(_19f.resourceAtURL(this).contents()); +return data; +}; +function _106(_1a0){ +this._string=_1a0; +var _1a1=_1a0.indexOf(";"); +this._magicNumber=_1a0.substr(0,_1a1); +this._location=_1a0.indexOf(";",++_1a1); +this._version=_1a0.substring(_1a1,this._location++); +}; +_106.prototype.magicNumber=function(){ +return this._magicNumber; +}; +_106.prototype.version=function(){ +return this._version; +}; +_106.prototype.getMarker=function(){ +var _1a2=this._string,_1a3=this._location; +if(_1a3>=_1a2.length){ +return null; +} +var next=_1a2.indexOf(";",_1a3); +if(next<0){ +return null; +} +var _1a4=_1a2.substring(_1a3,next); +if(_1a4==="e"){ +return null; +} +this._location=next+1; +return _1a4; +}; +_106.prototype.getString=function(){ +var _1a5=this._string,_1a6=this._location; +if(_1a6>=_1a5.length){ +return null; +} +var next=_1a5.indexOf(";",_1a6); +if(next<0){ +return null; +} +var size=parseInt(_1a5.substring(_1a6,next),10),text=_1a5.substr(next+1,size); +this._location=next+1+size; +return text; +}; +var _1a7=0,_1a8=1<<0,_1a9=1<<1,_1aa=1<<2,_1ab=1<<3,_1ac=1<<4; +var _1ad={},_1ae={},_1af=new Date().getTime(),_1b0=0,_1b1=0; +CFBundle=function(aURL){ +aURL=_1b2(aURL).asDirectoryPathURL(); +var _1b3=aURL.absoluteString(),_1b4=_1ad[_1b3]; +if(_1b4){ +return _1b4; +} +_1ad[_1b3]=this; +this._bundleURL=aURL; +this._resourcesDirectoryURL=new CFURL("Resources/",aURL); +this._staticResource=NULL; +this._isValid=NO; +this._loadStatus=_1a7; +this._loadRequests=[]; +this._infoDictionary=new CFDictionary(); +this._eventDispatcher=new _75(this); +}; +CFBundle.environments=function(){ +return ["Browser","ObjJ"]; +}; +CFBundle.bundleContainingURL=function(aURL){ +aURL=new CFURL(".",_1b2(aURL)); +var _1b5,_1b6=aURL.absoluteString(); +while(!_1b5||_1b5!==_1b6){ +var _1b7=_1ad[_1b6]; +if(_1b7&&_1b7._isValid){ +return _1b7; +} +aURL=new CFURL("..",aURL); +_1b5=_1b6; +_1b6=aURL.absoluteString(); +} +return NULL; +}; +CFBundle.mainBundle=function(){ +return new CFBundle(_1b8); +}; +function _1b9(_1ba,_1bb){ +if(_1bb){ +_1ae[_1ba.name]=_1bb; +} +}; +CFBundle.bundleForClass=function(_1bc){ +return _1ae[_1bc.name]||CFBundle.mainBundle(); +}; +CFBundle.prototype.bundleURL=function(){ +return this._bundleURL; +}; +CFBundle.prototype.resourcesDirectoryURL=function(){ +return this._resourcesDirectoryURL; +}; +CFBundle.prototype.resourceURL=function(_1bd,_1be,_1bf){ +if(_1be){ +_1bd=_1bd+"."+_1be; +} +if(_1bf){ +_1bd=_1bf+"/"+_1bd; +} +var _1c0=(new CFURL(_1bd,this.resourcesDirectoryURL())).mappedURL(); +return _1c0.absoluteURL(); +}; +CFBundle.prototype.mostEligibleEnvironmentURL=function(){ +if(this._mostEligibleEnvironmentURL===_46){ +this._mostEligibleEnvironmentURL=new CFURL(this.mostEligibleEnvironment()+".environment/",this.bundleURL()); +} +return this._mostEligibleEnvironmentURL; +}; +CFBundle.prototype.executableURL=function(){ +if(this._executableURL===_46){ +var _1c1=this.valueForInfoDictionaryKey("CPBundleExecutable"); +if(!_1c1){ +this._executableURL=NULL; +}else{ +this._executableURL=new CFURL(_1c1,this.mostEligibleEnvironmentURL()); +} +} +return this._executableURL; +}; +CFBundle.prototype.infoDictionary=function(){ +return this._infoDictionary; +}; +CFBundle.prototype.valueForInfoDictionaryKey=function(aKey){ +return this._infoDictionary.valueForKey(aKey); +}; +CFBundle.prototype.hasSpritedImages=function(){ +var _1c2=this._infoDictionary.valueForKey("CPBundleEnvironmentsWithImageSprites")||[],_95=_1c2.length,_1c3=this.mostEligibleEnvironment(); +while(_95--){ +if(_1c2[_95]===_1c3){ +return YES; +} +} +return NO; +}; +CFBundle.prototype.environments=function(){ +return this._infoDictionary.valueForKey("CPBundleEnvironments")||["ObjJ"]; +}; +CFBundle.prototype.mostEligibleEnvironment=function(_1c4){ +_1c4=_1c4||this.environments(); +var _1c5=CFBundle.environments(),_95=0,_1c6=_1c5.length,_1c7=_1c4.length; +for(;_95<_1c6;++_95){ +var _1c8=0,_1c9=_1c5[_95]; +for(;_1c8<_1c7;++_1c8){ +if(_1c9===_1c4[_1c8]){ +return _1c9; +} +} +} +return NULL; +}; +CFBundle.prototype.isLoading=function(){ +return this._loadStatus&_1a8; +}; +CFBundle.prototype.isLoaded=function(){ +return this._loadStatus&_1ac; +}; +CFBundle.prototype.load=function(_1ca){ +if(this._loadStatus!==_1a7){ +return; +} +this._loadStatus=_1a8|_1a9; +var self=this,_1cb=this.bundleURL(),_1cc=new CFURL("..",_1cb); +if(_1cc.absoluteString()===_1cb.absoluteString()){ +_1cc=_1cc.schemeAndAuthority(); +} +_19f.resolveResourceAtURL(_1cc,YES,function(_1cd){ +var _1ce=_1cb.absoluteURL().lastPathComponent(); +self._staticResource=_1cd._children[_1ce]||new _19f(_1cb,_1cd,YES,NO); +function _1cf(_1d0){ +self._loadStatus&=~_1a9; +var _1d1=_1d0.request.responsePropertyList(); +self._isValid=!!_1d1||CFBundle.mainBundle()===self; +if(_1d1){ +self._infoDictionary=_1d1; +} +if(!self._infoDictionary){ +_1d3(self,new Error("Could not load bundle at \""+path+"\"")); +return; +} +if(self===CFBundle.mainBundle()&&self.valueForInfoDictionaryKey("CPApplicationSize")){ +_1b1=self.valueForInfoDictionaryKey("CPApplicationSize").valueForKey("executable")||0; +} +_1d7(self,_1ca); +}; +function _1d2(){ +self._isValid=CFBundle.mainBundle()===self; +self._loadStatus=_1a7; +_1d3(self,new Error("Could not load bundle at \""+self.bundleURL()+"\"")); +}; +new _b1(new CFURL("Info.plist",self.bundleURL()),_1cf,_1d2); +}); +}; +function _1d3(_1d4,_1d5){ +_1d6(_1d4._staticResource); +_1d4._eventDispatcher.dispatchEvent({type:"error",error:_1d5,bundle:_1d4}); +}; +function _1d7(_1d8,_1d9){ +if(!_1d8.mostEligibleEnvironment()){ +return _1da(); +} +_1db(_1d8,_1dc,_1da); +_1dd(_1d8,_1dc,_1da); +if(_1d8._loadStatus===_1a8){ +return _1dc(); +} +function _1da(_1de){ +var _1df=_1d8._loadRequests,_1e0=_1df.length; +while(_1e0--){ +_1df[_1e0].abort(); +} +this._loadRequests=[]; +_1d8._loadStatus=_1a7; +_1d3(_1d8,_1de||new Error("Could not recognize executable code format in Bundle "+_1d8)); +}; +function _1dc(){ +if((typeof CPApp==="undefined"||!CPApp||!CPApp._finishedLaunching)&&typeof OBJJ_PROGRESS_CALLBACK==="function"&&_1b1){ +OBJJ_PROGRESS_CALLBACK(MAX(MIN(1,_1b0/_1b1),0),_1b1,_1d8.bundlePath()); +} +if(_1d8._loadStatus===_1a8){ +_1d8._loadStatus=_1ac; +}else{ +return; +} +_1d6(_1d8._staticResource); +function _1e1(){ +_1d8._eventDispatcher.dispatchEvent({type:"load",bundle:_1d8}); +}; +if(_1d9){ +_1e2(_1d8,_1e1); +}else{ +_1e1(); +} +}; +}; +function _1db(_1e3,_1e4,_1e5){ +var _1e6=_1e3.executableURL(); +if(!_1e6){ +return; +} +_1e3._loadStatus|=_1aa; +new _b1(_1e6,function(_1e7){ +try{ +_1b0+=_1e7.request.responseText().length; +_1e8(_1e3,_1e7.request.responseText(),_1e6); +_1e3._loadStatus&=~_1aa; +_1e4(); +} +catch(anException){ +_1e5(anException); +} +},_1e5); +}; +function _1e9(_1ea){ +return "mhtml:"+new CFURL("MHTMLTest.txt",_1ea.mostEligibleEnvironmentURL()); +}; +function _1eb(_1ec){ +if(_1ed===_1ee){ +return new CFURL("dataURLs.txt",_1ec.mostEligibleEnvironmentURL()); +} +if(_1ed===_1ef||_1ed===_1f0){ +return new CFURL("MHTMLPaths.txt",_1ec.mostEligibleEnvironmentURL()); +} +return NULL; +}; +function _1dd(_1f1,_1f2,_1f3){ +if(!_1f1.hasSpritedImages()){ +return; +} +_1f1._loadStatus|=_1ab; +if(!_1f4()){ +return _1f5(_1e9(_1f1),function(){ +_1dd(_1f1,_1f2,_1f3); +}); +} +var _1f6=_1eb(_1f1); +if(!_1f6){ +_1f1._loadStatus&=~_1ab; +return _1f2(); +} +new _b1(_1f6,function(_1f7){ +try{ +_1b0+=_1f7.request.responseText().length; +_1e8(_1f1,_1f7.request.responseText(),_1f6); +_1f1._loadStatus&=~_1ab; +} +catch(anException){ +_1f3(anException); +} +_1f2(); +},_1f3); +}; +var _1f8=[],_1ed=-1,_1f9=0,_1ee=1,_1ef=2,_1f0=3; +function _1f4(){ +return _1ed!==-1; +}; +function _1f5(_1fa,_1fb){ +if(_1f4()){ +return; +} +_1f8.push(_1fb); +if(_1f8.length>1){ +return; +} +_1f8.push(function(){ +var size=0,_1fc=CFBundle.mainBundle().valueForInfoDictionaryKey("CPApplicationSize"); +if(!_1fc){ +return; +} +switch(_1ed){ +case _1ee: +size=_1fc.valueForKey("data"); +break; +case _1ef: +case _1f0: +size=_1fc.valueForKey("mhtml"); +break; +} +_1b1+=size; +}); +_1fd([_1ee,"data:image/gif;base64,R0lGODlhAQABAIAAAMc9BQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==",_1ef,_1fa+"!test",_1f0,_1fa+"?"+_1af+"!test"]); +}; +function _1fe(){ +var _1ff=_1f8.length; +while(_1ff--){ +_1f8[_1ff](); +} +}; +function _1fd(_200){ +if(_200.length<2){ +_1ed=_1f9; +_1fe(); +return; +} +var _201=new Image(); +_201.onload=function(){ +if(_201.width===1&&_201.height===1){ +_1ed=_200[0]; +_1fe(); +}else{ +_201.onerror(); +} +}; +_201.onerror=function(){ +_1fd(_200.slice(2)); +}; +_201.src=_200[1]; +}; +function _1e2(_202,_203){ +var _204=[_202._staticResource]; +function _205(_206){ +for(;_206<_204.length;++_206){ +var _207=_204[_206]; +if(_207.isNotFound()){ +continue; +} +if(_207.isFile()){ +var _208=new _320(_207.URL()); +if(_208.hasLoadedFileDependencies()){ +_208.execute(); +}else{ +_208.loadFileDependencies(function(){ +_205(_206); +}); +return; +} +}else{ +if(_207.URL().absoluteString()===_202.resourcesDirectoryURL().absoluteString()){ +continue; +} +var _209=_207.children(); +for(var name in _209){ +if(_7a.call(_209,name)){ +_204.push(_209[name]); +} +} +} +} +_203(); +}; +_205(0); +}; +var _20a="@STATIC",_20b="p",_20c="u",_20d="c",_20e="t",_20f="I",_210="i"; +function _1e8(_211,_212,_213){ +var _214=new _106(_212); +if(_214.magicNumber()!==_20a){ +throw new Error("Could not read static file: "+_213); +} +if(_214.version()!=="1.0"){ +throw new Error("Could not read static file: "+_213); +} +var _215,_216=_211.bundleURL(),file=NULL; +while(_215=_214.getMarker()){ +var text=_214.getString(); +if(_215===_20b){ +var _217=new CFURL(text,_216),_218=_19f.resourceAtURL(new CFURL(".",_217),YES); +file=new _19f(_217,_218,NO,YES); +}else{ +if(_215===_20c){ +var URL=new CFURL(text,_216),_219=_214.getString(); +if(_219.indexOf("mhtml:")===0){ +_219="mhtml:"+new CFURL(_219.substr("mhtml:".length),_216); +if(_1ed===_1f0){ +var _21a=_219.indexOf("!"),_21b=_219.substring(0,_21a),_21c=_219.substring(_21a); +_219=_21b+"?"+_1af+_21c; +} +} +CFURL.setMappedURLForURL(URL,new CFURL(_219)); +var _218=_19f.resourceAtURL(new CFURL(".",URL),YES); +new _19f(URL,_218,NO,YES); +}else{ +if(_215===_20e){ +file.write(text); +} +} +} +} +}; +CFBundle.prototype.addEventListener=function(_21d,_21e){ +this._eventDispatcher.addEventListener(_21d,_21e); +}; +CFBundle.prototype.removeEventListener=function(_21f,_220){ +this._eventDispatcher.removeEventListener(_21f,_220); +}; +CFBundle.prototype.onerror=function(_221){ +throw _221.error; +}; +CFBundle.prototype.bundlePath=function(){ +return this._bundleURL.absoluteURL().path(); +}; +CFBundle.prototype.path=function(){ +CPLog.warn("CFBundle.prototype.path is deprecated, use CFBundle.prototype.bundlePath instead."); +return this.bundlePath.apply(this,arguments); +}; +CFBundle.prototype.pathForResource=function(_222){ +return this.resourceURL(_222).absoluteString(); +}; +var _223={}; +function _19f(aURL,_224,_225,_226){ +this._parent=_224; +this._eventDispatcher=new _75(this); +var name=aURL.absoluteURL().lastPathComponent()||aURL.schemeAndAuthority(); +this._name=name; +this._URL=aURL; +this._isResolved=!!_226; +if(_225){ +this._URL=this._URL.asDirectoryPathURL(); +} +if(!_224){ +_223[name]=this; +} +this._isDirectory=!!_225; +this._isNotFound=NO; +if(_224){ +_224._children[name]=this; +} +if(_225){ +this._children={}; +}else{ +this._contents=""; +} +}; +_19f.rootResources=function(){ +return _223; +}; +_2.StaticResource=_19f; +function _1d6(_227){ +_227._isResolved=YES; +_227._eventDispatcher.dispatchEvent({type:"resolve",staticResource:_227}); +}; +_19f.prototype.resolve=function(){ +if(this.isDirectory()){ +var _228=new CFBundle(this.URL()); +_228.onerror=function(){ +}; +_228.load(NO); +}else{ +var self=this; +function _229(_22a){ +self._contents=_22a.request.responseText(); +_1d6(self); +}; +function _22b(){ +self._isNotFound=YES; +_1d6(self); +}; +new _b1(this.URL(),_229,_22b); +} +}; +_19f.prototype.name=function(){ +return this._name; +}; +_19f.prototype.URL=function(){ +return this._URL; +}; +_19f.prototype.contents=function(){ +return this._contents; +}; +_19f.prototype.children=function(){ +return this._children; +}; +_19f.prototype.parent=function(){ +return this._parent; +}; +_19f.prototype.isResolved=function(){ +return this._isResolved; +}; +_19f.prototype.write=function(_22c){ +this._contents+=_22c; +}; +function _22d(_22e){ +var _22f=_22e.schemeAndAuthority(),_230=_223[_22f]; +if(!_230){ +_230=new _19f(new CFURL(_22f),NULL,YES,YES); +} +return _230; +}; +_19f.resourceAtURL=function(aURL,_231){ +aURL=_1b2(aURL).absoluteURL(); +var _232=_22d(aURL),_233=aURL.pathComponents(),_95=0,_234=_233.length; +for(;_95<_234;++_95){ +var name=_233[_95]; +if(_7a.call(_232._children,name)){ +_232=_232._children[name]; +}else{ +if(_231){ +if(name!=="/"){ +name="./"+name; +} +_232=new _19f(new CFURL(name,_232.URL()),_232,YES,YES); +}else{ +throw new Error("Static Resource at "+aURL+" is not resolved (\""+name+"\")"); +} +} +} +return _232; +}; +_19f.prototype.resourceAtURL=function(aURL,_235){ +return _19f.resourceAtURL(new CFURL(aURL,this.URL()),_235); +}; +_19f.resolveResourceAtURL=function(aURL,_236,_237){ +aURL=_1b2(aURL).absoluteURL(); +_238(_22d(aURL),_236,aURL.pathComponents(),0,_237); +}; +_19f.prototype.resolveResourceAtURL=function(aURL,_239,_23a){ +_19f.resolveResourceAtURL(new CFURL(aURL,this.URL()).absoluteURL(),_239,_23a); +}; +function _238(_23b,_23c,_23d,_23e,_23f){ +var _240=_23d.length; +for(;_23e<_240;++_23e){ +var name=_23d[_23e],_241=_7a.call(_23b._children,name)&&_23b._children[name]; +if(!_241){ +_241=new _19f(new CFURL(name,_23b.URL()),_23b,_23e+1<_240||_23c,NO); +_241.resolve(); +} +if(!_241.isResolved()){ +return _241.addEventListener("resolve",function(){ +_238(_23b,_23c,_23d,_23e,_23f); +}); +} +if(_241.isNotFound()){ +return _23f(null,new Error("File not found: "+_23d.join("/"))); +} +if((_23e+1<_240)&&_241.isFile()){ +return _23f(null,new Error("File is not a directory: "+_23d.join("/"))); +} +_23b=_241; +} +_23f(_23b); +}; +function _242(aURL,_243,_244){ +var _245=_19f.includeURLs(),_246=new CFURL(aURL,_245[_243]).absoluteURL(); +_19f.resolveResourceAtURL(_246,NO,function(_247){ +if(!_247){ +if(_243+1<_245.length){ +_242(aURL,_243+1,_244); +}else{ +_244(NULL); +} +return; +} +_244(_247); +}); +}; +_19f.resolveResourceAtURLSearchingIncludeURLs=function(aURL,_248){ +_242(aURL,0,_248); +}; +_19f.prototype.addEventListener=function(_249,_24a){ +this._eventDispatcher.addEventListener(_249,_24a); +}; +_19f.prototype.removeEventListener=function(_24b,_24c){ +this._eventDispatcher.removeEventListener(_24b,_24c); +}; +_19f.prototype.isNotFound=function(){ +return this._isNotFound; +}; +_19f.prototype.isFile=function(){ +return !this._isDirectory; +}; +_19f.prototype.isDirectory=function(){ +return this._isDirectory; +}; +_19f.prototype.toString=function(_24d){ +if(this.isNotFound()){ +return ""; +} +var _24e=this.name(); +if(this.isDirectory()){ +var _24f=this._children; +for(var name in _24f){ +if(_24f.hasOwnProperty(name)){ +var _250=_24f[name]; +if(_24d||!_250.isNotFound()){ +_24e+="\n\t"+_24f[name].toString(_24d).split("\n").join("\n\t"); +} +} +} +} +return _24e; +}; +var _251=NULL; +_19f.includeURLs=function(){ +if(_252){ +return _252; +} +var _252=[]; +if(!_1.OBJJ_INCLUDE_PATHS&&!_1.OBJJ_INCLUDE_URLS){ +_252=["Frameworks","Frameworks/Debug"]; +}else{ +_252=(_1.OBJJ_INCLUDE_PATHS||[]).concat(_1.OBJJ_INCLUDE_URLS||[]); +} +var _253=_252.length; +while(_253--){ +_252[_253]=new CFURL(_252[_253]).asDirectoryPathURL(); +} +return _252; +}; +var _254="accessors",_255="class",_256="end",_257="function",_258="implementation",_259="import",_25a="each",_25b="outlet",_25c="action",_25d="new",_25e="selector",_25f="super",_260="var",_261="in",_262="pragma",_263="mark",_264="=",_265="+",_266="-",_267=":",_268=",",_269=".",_26a="*",_26b=";",_26c="<",_26d="{",_26e="}",_26f=">",_270="[",_271="\"",_272="@",_273="#",_274="]",_275="?",_276="(",_277=")",_278=/^(?:(?:\s+$)|(?:\/(?:\/|\*)))/,_279=/^[+-]?\d+(([.]\d+)*([eE][+-]?\d+))?$/,_27a=/^[a-zA-Z_$](\w|$)*$/; +function _27b(_27c){ +this._index=-1; +this._tokens=(_27c+"\n").match(/\/\/.*(\r|\n)?|\/\*(?:.|\n|\r)*?\*\/|\w+\b|[+-]?\d+(([.]\d+)*([eE][+-]?\d+))?|"[^"\\]*(\\[\s\S][^"\\]*)*"|'[^'\\]*(\\[\s\S][^'\\]*)*'|\s+|./g); +this._context=[]; +return this; +}; +_27b.prototype.push=function(){ +this._context.push(this._index); +}; +_27b.prototype.pop=function(){ +this._index=this._context.pop(); +}; +_27b.prototype.peek=function(_27d){ +if(_27d){ +this.push(); +var _27e=this.skip_whitespace(); +this.pop(); +return _27e; +} +return this._tokens[this._index+1]; +}; +_27b.prototype.next=function(){ +return this._tokens[++this._index]; +}; +_27b.prototype.previous=function(){ +return this._tokens[--this._index]; +}; +_27b.prototype.last=function(){ +if(this._index<0){ +return NULL; +} +return this._tokens[this._index-1]; +}; +_27b.prototype.skip_whitespace=function(_27f){ +var _280; +if(_27f){ +while((_280=this.previous())&&_278.test(_280)){ +} +}else{ +while((_280=this.next())&&_278.test(_280)){ +} +} +return _280; +}; +_2.Lexer=_27b; +function _281(){ +this.atoms=[]; +}; +_281.prototype.toString=function(){ +return this.atoms.join(""); +}; +_2.preprocess=function(_282,aURL,_283){ +return new _284(_282,aURL,_283).executable(); +}; +_2.eval=function(_285){ +return eval(_2.preprocess(_285).code()); +}; +var _284=function(_286,aURL,_287){ +this._URL=new CFURL(aURL); +_286=_286.replace(/^#[^\n]+\n/,"\n"); +this._currentSelector=""; +this._currentClass=""; +this._currentSuperClass=""; +this._currentSuperMetaClass=""; +this._buffer=new _281(); +this._preprocessed=NULL; +this._dependencies=[]; +this._tokens=new _27b(_286); +this._flags=_287; +this._classMethod=false; +this._executable=NULL; +this._classLookupTable={}; +this._classVars={}; +var _288=new objj_class(); +for(var i in _288){ +this._classVars[i]=1; +} +this.preprocess(this._tokens,this._buffer); +}; +_284.prototype.setClassInfo=function(_289,_28a,_28b){ +this._classLookupTable[_289]={superClassName:_28a,ivars:_28b}; +}; +_284.prototype.getClassInfo=function(_28c){ +return this._classLookupTable[_28c]; +}; +_284.prototype.allIvarNamesForClassName=function(_28d){ +var _28e={},_28f=this.getClassInfo(_28d); +while(_28f){ +for(var i in _28f.ivars){ +_28e[i]=1; +} +_28f=this.getClassInfo(_28f.superClassName); +} +return _28e; +}; +_2.Preprocessor=_284; +_284.Flags={}; +_284.Flags.IncludeDebugSymbols=1<<0; +_284.Flags.IncludeTypeSignatures=1<<1; +_284.prototype.executable=function(){ +if(!this._executable){ +this._executable=new _290(this._buffer.toString(),this._dependencies,this._URL); +} +return this._executable; +}; +_284.prototype.accessors=function(_291){ +var _292=_291.skip_whitespace(),_293={}; +if(_292!=_276){ +_291.previous(); +return _293; +} +while((_292=_291.skip_whitespace())!=_277){ +var name=_292,_294=true; +if(!/^\w+$/.test(name)){ +throw new SyntaxError(this.error_message("*** @accessors attribute name not valid.")); +} +if((_292=_291.skip_whitespace())==_264){ +_294=_291.skip_whitespace(); +if(!/^\w+$/.test(_294)){ +throw new SyntaxError(this.error_message("*** @accessors attribute value not valid.")); +} +if(name=="setter"){ +if((_292=_291.next())!=_267){ +throw new SyntaxError(this.error_message("*** @accessors setter attribute requires argument with \":\" at end of selector name.")); +} +_294+=":"; +} +_292=_291.skip_whitespace(); +} +_293[name]=_294; +if(_292==_277){ +break; +} +if(_292!=_268){ +throw new SyntaxError(this.error_message("*** Expected ',' or ')' in @accessors attribute list.")); +} +} +return _293; +}; +_284.prototype.brackets=function(_295,_296){ +var _297=[]; +while(this.preprocess(_295,NULL,NULL,NULL,_297[_297.length]=[])){ +} +if(_297[0].length===1){ +_296.atoms[_296.atoms.length]="["; +_296.atoms[_296.atoms.length]=_297[0][0]; +_296.atoms[_296.atoms.length]="]"; +}else{ +var _298=new _281(); +if(_297[0][0].atoms[0]==_25f){ +_296.atoms[_296.atoms.length]="objj_msgSendSuper("; +_296.atoms[_296.atoms.length]="{ receiver:self, super_class:"+(this._classMethod?this._currentSuperMetaClass:this._currentSuperClass)+" }"; +}else{ +_296.atoms[_296.atoms.length]="objj_msgSend("; +_296.atoms[_296.atoms.length]=_297[0][0]; +} +_298.atoms[_298.atoms.length]=_297[0][1]; +var _299=1,_29a=_297.length,_29b=new _281(); +for(;_299<_29a;++_299){ +var pair=_297[_299]; +_298.atoms[_298.atoms.length]=pair[1]; +_29b.atoms[_29b.atoms.length]=", "+pair[0]; +} +_296.atoms[_296.atoms.length]=", \""; +_296.atoms[_296.atoms.length]=_298; +_296.atoms[_296.atoms.length]="\""; +_296.atoms[_296.atoms.length]=_29b; +_296.atoms[_296.atoms.length]=")"; +} +}; +_284.prototype.directive=function(_29c,_29d,_29e){ +var _29f=_29d?_29d:new _281(),_2a0=_29c.next(); +if(_2a0.charAt(0)==_271){ +_29f.atoms[_29f.atoms.length]=_2a0; +}else{ +if(_2a0===_255){ +_29c.skip_whitespace(); +return; +}else{ +if(_2a0===_258){ +this.implementation(_29c,_29f); +}else{ +if(_2a0===_259){ +this._import(_29c); +}else{ +if(_2a0===_25e){ +this.selector(_29c,_29f); +} +} +} +} +} +if(!_29d){ +return _29f; +} +}; +_284.prototype.hash=function(_2a1,_2a2){ +var _2a3=_2a2?_2a2:new _281(),_2a4=_2a1.next(); +if(_2a4===_262){ +_2a4=_2a1.skip_whitespace(); +if(_2a4===_263){ +while((_2a4=_2a1.next()).indexOf("\n")<0){ +} +} +}else{ +throw new SyntaxError(this.error_message("*** Expected \"pragma\" to follow # but instead saw \""+_2a4+"\".")); +} +}; +_284.prototype.implementation=function(_2a5,_2a6){ +var _2a7=_2a6,_2a8="",_2a9=NO,_2aa=_2a5.skip_whitespace(),_2ab="Nil",_2ac=new _281(),_2ad=new _281(); +if(!(/^\w/).test(_2aa)){ +throw new Error(this.error_message("*** Expected class name, found \""+_2aa+"\".")); +} +this._currentSuperClass="objj_getClass(\""+_2aa+"\").super_class"; +this._currentSuperMetaClass="objj_getMetaClass(\""+_2aa+"\").super_class"; +this._currentClass=_2aa; +this._currentSelector=""; +if((_2a8=_2a5.skip_whitespace())==_276){ +_2a8=_2a5.skip_whitespace(); +if(_2a8==_277){ +throw new SyntaxError(this.error_message("*** Can't Have Empty Category Name for class \""+_2aa+"\".")); +} +if(_2a5.skip_whitespace()!=_277){ +throw new SyntaxError(this.error_message("*** Improper Category Definition for class \""+_2aa+"\".")); +} +_2a7.atoms[_2a7.atoms.length]="{\nvar the_class = objj_getClass(\""+_2aa+"\")\n"; +_2a7.atoms[_2a7.atoms.length]="if(!the_class) throw new SyntaxError(\"*** Could not find definition for class \\\""+_2aa+"\\\"\");\n"; +_2a7.atoms[_2a7.atoms.length]="var meta_class = the_class.isa;"; +}else{ +if(_2a8==_267){ +_2a8=_2a5.skip_whitespace(); +if(!_27a.test(_2a8)){ +throw new SyntaxError(this.error_message("*** Expected class name, found \""+_2a8+"\".")); +} +_2ab=_2a8; +_2a8=_2a5.skip_whitespace(); +} +_2a7.atoms[_2a7.atoms.length]="{var the_class = objj_allocateClassPair("+_2ab+", \""+_2aa+"\"),\nmeta_class = the_class.isa;"; +if(_2a8==_26d){ +var _2ae={},_2af=0,_2b0=[],_2b1,_2b2={}; +while((_2a8=_2a5.skip_whitespace())&&_2a8!=_26e){ +if(_2a8===_272){ +_2a8=_2a5.next(); +if(_2a8===_254){ +_2b1=this.accessors(_2a5); +}else{ +if(_2a8!==_25b){ +throw new SyntaxError(this.error_message("*** Unexpected '@' token in ivar declaration ('@"+_2a8+"').")); +} +} +}else{ +if(_2a8==_26b){ +if(_2af++===0){ +_2a7.atoms[_2a7.atoms.length]="class_addIvars(the_class, ["; +}else{ +_2a7.atoms[_2a7.atoms.length]=", "; +} +var name=_2b0[_2b0.length-1]; +_2a7.atoms[_2a7.atoms.length]="new objj_ivar(\""+name+"\")"; +_2ae[name]=1; +_2b0=[]; +if(_2b1){ +_2b2[name]=_2b1; +_2b1=NULL; +} +}else{ +_2b0.push(_2a8); +} +} +} +if(_2b0.length){ +throw new SyntaxError(this.error_message("*** Expected ';' in ivar declaration, found '}'.")); +} +if(_2af){ +_2a7.atoms[_2a7.atoms.length]="]);\n"; +} +if(!_2a8){ +throw new SyntaxError(this.error_message("*** Expected '}'")); +} +this.setClassInfo(_2aa,_2ab==="Nil"?null:_2ab,_2ae); +var _2ae=this.allIvarNamesForClassName(_2aa); +for(ivar_name in _2b2){ +var _2b3=_2b2[ivar_name],_2b4=_2b3["property"]||ivar_name; +var _2b5=_2b3["getter"]||_2b4,_2b6="(id)"+_2b5+"\n{\nreturn "+ivar_name+";\n}"; +if(_2ac.atoms.length!==0){ +_2ac.atoms[_2ac.atoms.length]=",\n"; +} +_2ac.atoms[_2ac.atoms.length]=this.method(new _27b(_2b6),_2ae); +if(_2b3["readonly"]){ +continue; +} +var _2b7=_2b3["setter"]; +if(!_2b7){ +var _2b8=_2b4.charAt(0)=="_"?1:0; +_2b7=(_2b8?"_":"")+"set"+_2b4.substr(_2b8,1).toUpperCase()+_2b4.substring(_2b8+1)+":"; +} +var _2b9="(void)"+_2b7+"(id)newValue\n{\n"; +if(_2b3["copy"]){ +_2b9+="if ("+ivar_name+" !== newValue)\n"+ivar_name+" = [newValue copy];\n}"; +}else{ +_2b9+=ivar_name+" = newValue;\n}"; +} +if(_2ac.atoms.length!==0){ +_2ac.atoms[_2ac.atoms.length]=",\n"; +} +_2ac.atoms[_2ac.atoms.length]=this.method(new _27b(_2b9),_2ae); +} +}else{ +_2a5.previous(); +} +_2a7.atoms[_2a7.atoms.length]="objj_registerClassPair(the_class);\n"; +} +if(!_2ae){ +var _2ae=this.allIvarNamesForClassName(_2aa); +} +while((_2a8=_2a5.skip_whitespace())){ +if(_2a8==_265){ +this._classMethod=true; +if(_2ad.atoms.length!==0){ +_2ad.atoms[_2ad.atoms.length]=", "; +} +_2ad.atoms[_2ad.atoms.length]=this.method(_2a5,this._classVars); +}else{ +if(_2a8==_266){ +this._classMethod=false; +if(_2ac.atoms.length!==0){ +_2ac.atoms[_2ac.atoms.length]=", "; +} +_2ac.atoms[_2ac.atoms.length]=this.method(_2a5,_2ae); +}else{ +if(_2a8==_273){ +this.hash(_2a5,_2a7); +}else{ +if(_2a8==_272){ +if((_2a8=_2a5.next())==_256){ +break; +}else{ +throw new SyntaxError(this.error_message("*** Expected \"@end\", found \"@"+_2a8+"\".")); +} +} +} +} +} +} +if(_2ac.atoms.length!==0){ +_2a7.atoms[_2a7.atoms.length]="class_addMethods(the_class, ["; +_2a7.atoms[_2a7.atoms.length]=_2ac; +_2a7.atoms[_2a7.atoms.length]="]);\n"; +} +if(_2ad.atoms.length!==0){ +_2a7.atoms[_2a7.atoms.length]="class_addMethods(meta_class, ["; +_2a7.atoms[_2a7.atoms.length]=_2ad; +_2a7.atoms[_2a7.atoms.length]="]);\n"; +} +_2a7.atoms[_2a7.atoms.length]="}"; +this._currentClass=""; +}; +_284.prototype._import=function(_2ba){ +var _2bb="",_2bc=_2ba.skip_whitespace(),_2bd=(_2bc!==_26c); +if(_2bc===_26c){ +while((_2bc=_2ba.next())&&_2bc!==_26f){ +_2bb+=_2bc; +} +if(!_2bc){ +throw new SyntaxError(this.error_message("*** Unterminated import statement.")); +} +}else{ +if(_2bc.charAt(0)===_271){ +_2bb=_2bc.substr(1,_2bc.length-2); +}else{ +throw new SyntaxError(this.error_message("*** Expecting '<' or '\"', found \""+_2bc+"\".")); +} +} +this._buffer.atoms[this._buffer.atoms.length]="objj_executeFile(\""; +this._buffer.atoms[this._buffer.atoms.length]=_2bb; +this._buffer.atoms[this._buffer.atoms.length]=_2bd?"\", YES);":"\", NO);"; +this._dependencies.push(new _2be(new CFURL(_2bb),_2bd)); +}; +_284.prototype.method=function(_2bf,_2c0){ +var _2c1=new _281(),_2c2,_2c3="",_2c4=[],_2c5=[null]; +_2c0=_2c0||{}; +while((_2c2=_2bf.skip_whitespace())&&_2c2!==_26d&&_2c2!==_26b){ +if(_2c2==_267){ +var type=""; +_2c3+=_2c2; +_2c2=_2bf.skip_whitespace(); +if(_2c2==_276){ +while((_2c2=_2bf.skip_whitespace())&&_2c2!=_277){ +type+=_2c2; +} +_2c2=_2bf.skip_whitespace(); +} +_2c5[_2c4.length+1]=type||null; +_2c4[_2c4.length]=_2c2; +if(_2c2 in _2c0){ +throw new SyntaxError(this.error_message("*** Method ( "+_2c3+" ) uses a parameter name that is already in use ( "+_2c2+" )")); +} +}else{ +if(_2c2==_276){ +var type=""; +while((_2c2=_2bf.skip_whitespace())&&_2c2!=_277){ +type+=_2c2; +} +_2c5[0]=type||null; +}else{ +if(_2c2==_268){ +if((_2c2=_2bf.skip_whitespace())!=_269||_2bf.next()!=_269||_2bf.next()!=_269){ +throw new SyntaxError(this.error_message("*** Argument list expected after ','.")); +} +}else{ +_2c3+=_2c2; +} +} +} +} +if(_2c2===_26b){ +_2c2=_2bf.skip_whitespace(); +if(_2c2!==_26d){ +throw new SyntaxError(this.error_message("Invalid semi-colon in method declaration. "+"Semi-colons are allowed only to terminate the method signature, before the open brace.")); +} +} +var _2c6=0,_2c7=_2c4.length; +_2c1.atoms[_2c1.atoms.length]="new objj_method(sel_getUid(\""; +_2c1.atoms[_2c1.atoms.length]=_2c3; +_2c1.atoms[_2c1.atoms.length]="\"), function"; +this._currentSelector=_2c3; +if(this._flags&_284.Flags.IncludeDebugSymbols){ +_2c1.atoms[_2c1.atoms.length]=" $"+this._currentClass+"__"+_2c3.replace(/:/g,"_"); +} +_2c1.atoms[_2c1.atoms.length]="(self, _cmd"; +for(;_2c6<_2c7;++_2c6){ +_2c1.atoms[_2c1.atoms.length]=", "; +_2c1.atoms[_2c1.atoms.length]=_2c4[_2c6]; +} +_2c1.atoms[_2c1.atoms.length]=")\n{ with(self)\n{"; +_2c1.atoms[_2c1.atoms.length]=this.preprocess(_2bf,NULL,_26e,_26d); +_2c1.atoms[_2c1.atoms.length]="}\n}"; +if(this._flags&_284.Flags.IncludeDebugSymbols){ +_2c1.atoms[_2c1.atoms.length]=","+JSON.stringify(_2c5); +} +_2c1.atoms[_2c1.atoms.length]=")"; +this._currentSelector=""; +return _2c1; +}; +_284.prototype.preprocess=function(_2c8,_2c9,_2ca,_2cb,_2cc){ +var _2cd=_2c9?_2c9:new _281(),_2ce=0,_2cf=""; +if(_2cc){ +_2cc[0]=_2cd; +var _2d0=false,_2d1=[0,0,0]; +} +while((_2cf=_2c8.next())&&((_2cf!==_2ca)||_2ce)){ +if(_2cc){ +if(_2cf===_275){ +++_2d1[2]; +}else{ +if(_2cf===_26d){ +++_2d1[0]; +}else{ +if(_2cf===_26e){ +--_2d1[0]; +}else{ +if(_2cf===_276){ +++_2d1[1]; +}else{ +if(_2cf===_277){ +--_2d1[1]; +}else{ +if((_2cf===_267&&_2d1[2]--===0||(_2d0=(_2cf===_274)))&&_2d1[0]===0&&_2d1[1]===0){ +_2c8.push(); +var _2d2=_2d0?_2c8.skip_whitespace(true):_2c8.previous(),_2d3=_278.test(_2d2); +if(_2d3||_27a.test(_2d2)&&_278.test(_2c8.previous())){ +_2c8.push(); +var last=_2c8.skip_whitespace(true),_2d4=true,_2d5=false; +if(last==="+"||last==="-"){ +if(_2c8.previous()!==last){ +_2d4=false; +}else{ +last=_2c8.skip_whitespace(true); +_2d5=true; +} +} +_2c8.pop(); +_2c8.pop(); +if(_2d4&&((!_2d5&&(last===_26e))||last===_277||last===_274||last===_269||_279.test(last)||last.charAt(last.length-1)==="\""||last.charAt(last.length-1)==="'"||_27a.test(last)&&!/^(new|return|case|var)$/.test(last))){ +if(_2d3){ +_2cc[1]=":"; +}else{ +_2cc[1]=_2d2; +if(!_2d0){ +_2cc[1]+=":"; +} +var _2ce=_2cd.atoms.length; +while(_2cd.atoms[_2ce--]!==_2d2){ +} +_2cd.atoms.length=_2ce; +} +return !_2d0; +} +if(_2d0){ +return NO; +} +} +_2c8.pop(); +if(_2d0){ +return NO; +} +} +} +} +} +} +} +_2d1[2]=MAX(_2d1[2],0); +} +if(_2cb){ +if(_2cf===_2cb){ +++_2ce; +}else{ +if(_2cf===_2ca){ +--_2ce; +} +} +} +if(_2cf===_257){ +var _2d6=""; +while((_2cf=_2c8.next())&&_2cf!==_276&&!(/^\w/).test(_2cf)){ +_2d6+=_2cf; +} +if(_2cf===_276){ +if(_2cb===_276){ +++_2ce; +} +_2cd.atoms[_2cd.atoms.length]="function"+_2d6+"("; +if(_2cc){ +++_2d1[1]; +} +}else{ +_2cd.atoms[_2cd.atoms.length]=_2cf+"= function"; +} +}else{ +if(_2cf==_272){ +this.directive(_2c8,_2cd); +}else{ +if(_2cf==_273){ +this.hash(_2c8,_2cd); +}else{ +if(_2cf==_270){ +this.brackets(_2c8,_2cd); +}else{ +_2cd.atoms[_2cd.atoms.length]=_2cf; +} +} +} +} +} +if(_2cc){ +throw new SyntaxError(this.error_message("*** Expected ']' - Unterminated message send or array.")); +} +if(!_2c9){ +return _2cd; +} +}; +_284.prototype.selector=function(_2d7,_2d8){ +var _2d9=_2d8?_2d8:new _281(); +_2d9.atoms[_2d9.atoms.length]="sel_getUid(\""; +if(_2d7.skip_whitespace()!=_276){ +throw new SyntaxError(this.error_message("*** Expected '('")); +} +var _2da=_2d7.skip_whitespace(); +if(_2da==_277){ +throw new SyntaxError(this.error_message("*** Unexpected ')', can't have empty @selector()")); +} +_2d8.atoms[_2d8.atoms.length]=_2da; +var _2db,_2dc=true; +while((_2db=_2d7.next())&&_2db!=_277){ +if(_2dc&&/^\d+$/.test(_2db)||!(/^(\w|$|\:)/.test(_2db))){ +if(!(/\S/).test(_2db)){ +if(_2d7.skip_whitespace()==_277){ +break; +}else{ +throw new SyntaxError(this.error_message("*** Unexpected whitespace in @selector().")); +} +}else{ +throw new SyntaxError(this.error_message("*** Illegal character '"+_2db+"' in @selector().")); +} +} +_2d9.atoms[_2d9.atoms.length]=_2db; +_2dc=(_2db==_267); +} +_2d9.atoms[_2d9.atoms.length]="\")"; +if(!_2d8){ +return _2d9; +} +}; +_284.prototype.error_message=function(_2dd){ +return _2dd+" "; +}; +function _2be(aURL,_2de){ +this._URL=aURL; +this._isLocal=_2de; +}; +_2.FileDependency=_2be; +_2be.prototype.URL=function(){ +return this._URL; +}; +_2be.prototype.isLocal=function(){ +return this._isLocal; +}; +_2be.prototype.toMarkedString=function(){ +var _2df=this.URL().absoluteString(); +return (this.isLocal()?_210:_20f)+";"+_2df.length+";"+_2df; +}; +_2be.prototype.toString=function(){ +return (this.isLocal()?"LOCAL: ":"STD: ")+this.URL(); +}; +var _2e0=0,_2e1=1,_2e2=2,_2e3=0; +function _290(_2e4,_2e5,aURL,_2e6){ +if(arguments.length===0){ +return this; +} +this._code=_2e4; +this._function=_2e6||NULL; +this._URL=_1b2(aURL||new CFURL("(Anonymous"+(_2e3++)+")")); +this._fileDependencies=_2e5; +if(_2e5.length){ +this._fileDependencyStatus=_2e0; +this._fileDependencyCallbacks=[]; +}else{ +this._fileDependencyStatus=_2e2; +} +if(this._function){ +return; +} +this.setCode(_2e4); +}; +_2.Executable=_290; +_290.prototype.path=function(){ +return this.URL().path(); +}; +_290.prototype.URL=function(){ +return this._URL; +}; +_290.prototype.functionParameters=function(){ +var _2e7=["global","objj_executeFile","objj_importFile"]; +return _2e7; +}; +_290.prototype.functionArguments=function(){ +var _2e8=[_1,this.fileExecuter(),this.fileImporter()]; +return _2e8; +}; +_290.prototype.execute=function(){ +var _2e9=_2ea; +_2ea=CFBundle.bundleContainingURL(this.URL()); +var _2eb=this._function.apply(_1,this.functionArguments()); +_2ea=_2e9; +return _2eb; +}; +_290.prototype.code=function(){ +return this._code; +}; +_290.prototype.setCode=function(code){ +this._code=code; +var _2ec=this.functionParameters().join(","); +this._function=new Function(_2ec,code); +}; +_290.prototype.fileDependencies=function(){ +return this._fileDependencies; +}; +_290.prototype.hasLoadedFileDependencies=function(){ +return this._fileDependencyStatus===_2e2; +}; +var _2ed=0,_2ee=[],_2ef={}; +_290.prototype.loadFileDependencies=function(_2f0){ +var _2f1=this._fileDependencyStatus; +if(_2f0){ +if(_2f1===_2e2){ +return _2f0(); +} +this._fileDependencyCallbacks.push(_2f0); +} +if(_2f1===_2e0){ +if(_2ed){ +throw "Can't load"; +} +_2f2(this); +} +}; +function _2f2(_2f3){ +_2ee.push(_2f3); +_2f3._fileDependencyStatus=_2e1; +var _2f4=_2f3.fileDependencies(),_95=0,_2f5=_2f4.length,_2f6=_2f3.referenceURL(),_2f7=_2f6.absoluteString(),_2f8=_2f3.fileExecutableSearcher(); +_2ed+=_2f5; +for(;_95<_2f5;++_95){ +var _2f9=_2f4[_95],_2fa=_2f9.isLocal(),URL=_2f9.URL(),_2fb=(_2fa&&(_2f7+" ")||"")+URL; +if(_2ef[_2fb]){ +if(--_2ed===0){ +_2fc(); +} +continue; +} +_2ef[_2fb]=YES; +_2f8(URL,_2fa,_2fd); +} +}; +function _2fd(_2fe){ +--_2ed; +if(_2fe._fileDependencyStatus===_2e0){ +_2f2(_2fe); +}else{ +if(_2ed===0){ +_2fc(); +} +} +}; +function _2fc(){ +var _2ff=_2ee,_95=0,_300=_2ff.length; +_2ee=[]; +for(;_95<_300;++_95){ +_2ff[_95]._fileDependencyStatus=_2e2; +} +for(_95=0;_95<_300;++_95){ +var _301=_2ff[_95],_302=_301._fileDependencyCallbacks,_303=0,_304=_302.length; +for(;_303<_304;++_303){ +_302[_303](); +} +_301._fileDependencyCallbacks=[]; +} +}; +_290.prototype.referenceURL=function(){ +if(this._referenceURL===_46){ +this._referenceURL=new CFURL(".",this.URL()); +} +return this._referenceURL; +}; +_290.prototype.fileImporter=function(){ +return _290.fileImporterForURL(this.referenceURL()); +}; +_290.prototype.fileExecuter=function(){ +return _290.fileExecuterForURL(this.referenceURL()); +}; +_290.prototype.fileExecutableSearcher=function(){ +return _290.fileExecutableSearcherForURL(this.referenceURL()); +}; +var _305={}; +_290.fileExecuterForURL=function(aURL){ +var _306=_1b2(aURL),_307=_306.absoluteString(),_308=_305[_307]; +if(!_308){ +_308=function(aURL,_309,_30a){ +_290.fileExecutableSearcherForURL(_306)(aURL,_309,function(_30b){ +if(!_30b.hasLoadedFileDependencies()){ +throw "No executable loaded for file at URL "+aURL; +} +_30b.execute(_30a); +}); +}; +_305[_307]=_308; +} +return _308; +}; +var _30c={}; +_290.fileImporterForURL=function(aURL){ +var _30d=_1b2(aURL),_30e=_30d.absoluteString(),_30f=_30c[_30e]; +if(!_30f){ +_30f=function(aURL,_310,_311){ +_152(); +_290.fileExecutableSearcherForURL(_30d)(aURL,_310,function(_312){ +_312.loadFileDependencies(function(){ +_312.execute(); +_153(); +if(_311){ +_311(); +} +}); +}); +}; +_30c[_30e]=_30f; +} +return _30f; +}; +var _313={},_314={}; +_290.fileExecutableSearcherForURL=function(_315){ +var _316=_315.absoluteString(),_317=_313[_316],_318={}; +if(!_317){ +_317=function(aURL,_319,_31a){ +var _31b=(_319&&_315||"")+aURL,_31c=_314[_31b]; +if(_31c){ +return _31d(_31c); +} +var _31e=(aURL instanceof CFURL)&&aURL.scheme(); +if(_319||_31e){ +if(!_31e){ +aURL=new CFURL(aURL,_315); +} +_19f.resolveResourceAtURL(aURL,NO,_31d); +}else{ +_19f.resolveResourceAtURLSearchingIncludeURLs(aURL,_31d); +} +function _31d(_31f){ +if(!_31f){ +throw new Error("Could not load file at "+aURL); +} +_314[_31b]=_31f; +_31a(new _320(_31f.URL())); +}; +}; +_313[_316]=_317; +} +return _317; +}; +var _321={}; +function _320(aURL){ +aURL=_1b2(aURL); +var _322=aURL.absoluteString(),_323=_321[_322]; +if(_323){ +return _323; +} +_321[_322]=this; +var _324=_19f.resourceAtURL(aURL).contents(),_325=NULL,_326=aURL.pathExtension(); +if(_324.match(/^@STATIC;/)){ +_325=_327(_324,aURL); +}else{ +if(_326==="j"||!_326){ +_325=_2.preprocess(_324,aURL,_284.Flags.IncludeDebugSymbols); +}else{ +_325=new _290(_324,[],aURL); +} +} +_290.apply(this,[_325.code(),_325.fileDependencies(),aURL,_325._function]); +this._hasExecuted=NO; +}; +_2.FileExecutable=_320; +_320.prototype=new _290(); +_320.prototype.execute=function(_328){ +if(this._hasExecuted&&!_328){ +return; +} +this._hasExecuted=YES; +_290.prototype.execute.call(this); +}; +_320.prototype.hasExecuted=function(){ +return this._hasExecuted; +}; +function _327(_329,aURL){ +var _32a=new _106(_329); +var _32b=NULL,code="",_32c=[]; +while(_32b=_32a.getMarker()){ +var text=_32a.getString(); +if(_32b===_20e){ +code+=text; +}else{ +if(_32b===_20f){ +_32c.push(new _2be(new CFURL(text),NO)); +}else{ +if(_32b===_210){ +_32c.push(new _2be(new CFURL(text),YES)); +} +} +} +} +var fn=_320._lookupCachedFunction(aURL); +if(fn){ +return new _290(code,_32c,aURL,fn); +} +return new _290(code,_32c,aURL); +}; +var _32d={}; +_320._cacheFunction=function(aURL,fn){ +aURL=typeof aURL==="string"?aURL:aURL.absoluteString(); +_32d[aURL]=fn; +}; +_320._lookupCachedFunction=function(aURL){ +aURL=typeof aURL==="string"?aURL:aURL.absoluteString(); +return _32d[aURL]; +}; +var _32e=1,_32f=2,_330=4,_331=8; +objj_ivar=function(_332,_333){ +this.name=_332; +this.type=_333; +}; +objj_method=function(_334,_335,_336){ +this.name=_334; +this.method_imp=_335; +this.types=_336; +}; +objj_class=function(_337){ +this.isa=NULL; +this.super_class=NULL; +this.sub_classes=[]; +this.name=NULL; +this.info=0; +this.ivars=[]; +this.method_list=[]; +this.method_hash={}; +this.method_store=function(){ +}; +this.method_dtable=this.method_store.prototype; +this.allocator=function(){ +}; +this._UID=-1; +}; +objj_object=function(){ +this.isa=NULL; +this._UID=-1; +}; +class_getName=function(_338){ +if(_338==Nil){ +return ""; +} +return _338.name; +}; +class_isMetaClass=function(_339){ +if(!_339){ +return NO; +} +return ((_339.info&(_32f))); +}; +class_getSuperclass=function(_33a){ +if(_33a==Nil){ +return Nil; +} +return _33a.super_class; +}; +class_setSuperclass=function(_33b,_33c){ +_33b.super_class=_33c; +_33b.isa.super_class=_33c.isa; +}; +class_addIvar=function(_33d,_33e,_33f){ +var _340=_33d.allocator.prototype; +if(typeof _340[_33e]!="undefined"){ +return NO; +} +_33d.ivars.push(new objj_ivar(_33e,_33f)); +_340[_33e]=NULL; +return YES; +}; +class_addIvars=function(_341,_342){ +var _343=0,_344=_342.length,_345=_341.allocator.prototype; +for(;_343<_344;++_343){ +var ivar=_342[_343],name=ivar.name; +if(typeof _345[name]==="undefined"){ +_341.ivars.push(ivar); +_345[name]=NULL; +} +} +}; +class_copyIvarList=function(_346){ +return _346.ivars.slice(0); +}; +class_addMethod=function(_347,_348,_349,_34a){ +if(_347.method_hash[_348]){ +return NO; +} +var _34b=new objj_method(_348,_349,_34a); +_347.method_list.push(_34b); +_347.method_dtable[_348]=_34b; +if(!((_347.info&(_32f)))&&(((_347.info&(_32f)))?_347:_347.isa).isa===(((_347.info&(_32f)))?_347:_347.isa)){ +class_addMethod((((_347.info&(_32f)))?_347:_347.isa),_348,_349,_34a); +} +return YES; +}; +class_addMethods=function(_34c,_34d){ +var _34e=0,_34f=_34d.length,_350=_34c.method_list,_351=_34c.method_dtable; +for(;_34e<_34f;++_34e){ +var _352=_34d[_34e]; +if(_34c.method_hash[_352.name]){ +continue; +} +_350.push(_352); +_351[_352.name]=_352; +} +if(!((_34c.info&(_32f)))&&(((_34c.info&(_32f)))?_34c:_34c.isa).isa===(((_34c.info&(_32f)))?_34c:_34c.isa)){ +class_addMethods((((_34c.info&(_32f)))?_34c:_34c.isa),_34d); +} +}; +class_getInstanceMethod=function(_353,_354){ +if(!_353||!_354){ +return NULL; +} +var _355=_353.method_dtable[_354]; +return _355?_355:NULL; +}; +class_getClassMethod=function(_356,_357){ +if(!_356||!_357){ +return NULL; +} +var _358=(((_356.info&(_32f)))?_356:_356.isa).method_dtable[_357]; +return _358?_358:NULL; +}; +class_respondsToSelector=function(_359,_35a){ +return class_getClassMethod(_359,_35a)!=NULL; +}; +class_copyMethodList=function(_35b){ +return _35b.method_list.slice(0); +}; +class_replaceMethod=function(_35c,_35d,_35e){ +if(!_35c||!_35d){ +return NULL; +} +var _35f=_35c.method_dtable[_35d],_360=NULL; +if(_35f){ +_360=_35f.method_imp; +} +_35f.method_imp=_35e; +return _360; +}; +var _361=function(_362){ +var meta=(((_362.info&(_32f)))?_362:_362.isa); +if((_362.info&(_32f))){ +_362=objj_getClass(_362.name); +} +if(_362.super_class&&!((((_362.super_class.info&(_32f)))?_362.super_class:_362.super_class.isa).info&(_330))){ +_361(_362.super_class); +} +if(!(meta.info&(_330))&&!(meta.info&(_331))){ +meta.info=(meta.info|(_331))&~(0); +objj_msgSend(_362,"initialize"); +meta.info=(meta.info|(_330))&~(_331); +} +}; +var _363=new objj_method("forward",function(self,_364){ +return objj_msgSend(self,"forward::",_364,arguments); +}); +class_getMethodImplementation=function(_365,_366){ +if(!((((_365.info&(_32f)))?_365:_365.isa).info&(_330))){ +_361(_365); +} +var _367=_365.method_dtable[_366]; +if(!_367){ +_367=_363; +} +var _368=_367.method_imp; +return _368; +}; +var _369={}; +objj_allocateClassPair=function(_36a,_36b){ +var _36c=new objj_class(_36b),_36d=new objj_class(_36b),_36e=_36c; +if(_36a){ +_36e=_36a; +while(_36e.superclass){ +_36e=_36e.superclass; +} +_36c.allocator.prototype=new _36a.allocator; +_36c.method_store.prototype=new _36a.method_store; +_36c.method_dtable=_36c.method_store.prototype; +_36d.method_store.prototype=new _36a.isa.method_store; +_36d.method_dtable=_36d.method_store.prototype; +_36c.super_class=_36a; +_36d.super_class=_36a.isa; +}else{ +_36c.allocator.prototype=new objj_object(); +} +_36c.isa=_36d; +_36c.name=_36b; +_36c.info=_32e; +_36c._UID=objj_generateObjectUID(); +_36d.isa=_36e.isa; +_36d.name=_36b; +_36d.info=_32f; +_36d._UID=objj_generateObjectUID(); +return _36c; +}; +var _2ea=nil; +objj_registerClassPair=function(_36f){ +_1[_36f.name]=_36f; +_369[_36f.name]=_36f; +_1b9(_36f,_2ea); +}; +class_createInstance=function(_370){ +if(!_370){ +throw new Error("*** Attempting to create object with Nil class."); +} +var _371=new _370.allocator(); +_371.isa=_370; +_371._UID=objj_generateObjectUID(); +return _371; +}; +var _372=function(){ +}; +_372.prototype.member=false; +with(new _372()){ +member=true; +} +if(new _372().member){ +var _373=class_createInstance; +class_createInstance=function(_374){ +var _375=_373(_374); +if(_375){ +var _376=_375.isa,_377=_376; +while(_376){ +var _378=_376.ivars; +count=_378.length; +while(count--){ +_375[_378[count].name]=NULL; +} +_376=_376.super_class; +} +_375.isa=_377; +} +return _375; +}; +} +object_getClassName=function(_379){ +if(!_379){ +return ""; +} +var _37a=_379.isa; +return _37a?class_getName(_37a):""; +}; +objj_lookUpClass=function(_37b){ +var _37c=_369[_37b]; +return _37c?_37c:Nil; +}; +objj_getClass=function(_37d){ +var _37e=_369[_37d]; +if(!_37e){ +} +return _37e?_37e:Nil; +}; +objj_getMetaClass=function(_37f){ +var _380=objj_getClass(_37f); +return (((_380.info&(_32f)))?_380:_380.isa); +}; +ivar_getName=function(_381){ +return _381.name; +}; +ivar_getTypeEncoding=function(_382){ +return _382.type; +}; +objj_msgSend=function(_383,_384){ +if(_383==nil){ +return nil; +} +var isa=_383.isa; +if(!((((isa.info&(_32f)))?isa:isa.isa).info&(_330))){ +_361(isa); +} +var _385=isa.method_dtable[_384]; +if(!_385){ +_385=_363; +} +var _386=_385.method_imp; +switch(arguments.length){ +case 2: +return _386(_383,_384); +case 3: +return _386(_383,_384,arguments[2]); +case 4: +return _386(_383,_384,arguments[2],arguments[3]); +} +return _386.apply(_383,arguments); +}; +objj_msgSendSuper=function(_387,_388){ +var _389=_387.super_class; +arguments[0]=_387.receiver; +if(!((((_389.info&(_32f)))?_389:_389.isa).info&(_330))){ +_361(_389); +} +var _38a=_389.method_dtable[_388]; +if(!_38a){ +_38a=_363; +} +var _38b=_38a.method_imp; +return _38b.apply(_387.receiver,arguments); +}; +method_getName=function(_38c){ +return _38c.name; +}; +method_getImplementation=function(_38d){ +return _38d.method_imp; +}; +method_setImplementation=function(_38e,_38f){ +var _390=_38e.method_imp; +_38e.method_imp=_38f; +return _390; +}; +method_exchangeImplementations=function(lhs,rhs){ +var _391=method_getImplementation(lhs),_392=method_getImplementation(rhs); +method_setImplementation(lhs,_392); +method_setImplementation(rhs,_391); +}; +sel_getName=function(_393){ +return _393?_393:""; +}; +sel_getUid=function(_394){ +return _394; +}; +sel_isEqual=function(lhs,rhs){ +return lhs===rhs; +}; +sel_registerName=function(_395){ +return _395; +}; +objj_eval=function(_396){ +var url=_2.pageURL; +var _397=_2.asyncLoader; +_2.asyncLoader=NO; +var _398=_2.preprocess(_396,url,0); +if(!_398.hasLoadedFileDependencies()){ +_398.loadFileDependencies(); +} +_1._objj_eval_scope={}; +_1._objj_eval_scope.objj_executeFile=_290.fileExecuterForURL(url); +_1._objj_eval_scope.objj_importFile=_290.fileImporterForURL(url); +var code="with(_objj_eval_scope){"+_398._code+"\n//*/\n}"; +var _399; +_399=eval(code); +_2.asyncLoader=_397; +return _399; +}; +_2.objj_eval=objj_eval; +_152(); +var _39a=new CFURL(window.location.href),_39b=document.getElementsByTagName("base"),_39c=_39b.length; +if(_39c>0){ +var _39d=_39b[_39c-1],_39e=_39d&&_39d.getAttribute("href"); +if(_39e){ +_39a=new CFURL(_39e,_39a); +} +} +var _39f=new CFURL(window.OBJJ_MAIN_FILE||"main.j"),_1b8=new CFURL(".",new CFURL(_39f,_39a)).absoluteURL(),_3a0=new CFURL("..",_1b8).absoluteURL(); +if(_1b8===_3a0){ +_3a0=new CFURL(_3a0.schemeAndAuthority()); +} +_19f.resourceAtURL(_3a0,YES); +_2.pageURL=_39a; +_2.bootstrap=function(){ +_3a1(); +}; +function _3a1(){ +_19f.resolveResourceAtURL(_1b8,YES,function(_3a2){ +var _3a3=_19f.includeURLs(),_95=0,_3a4=_3a3.length; +for(;_95<_3a4;++_95){ +_3a2.resourceAtURL(_3a3[_95],YES); +} +_290.fileImporterForURL(_1b8)(_39f.lastPathComponent(),YES,function(){ +_153(); +_3aa(function(){ +var _3a5=window.location.hash.substring(1),args=[]; +if(_3a5.length){ +args=_3a5.split("/"); +for(var i=0,_3a4=args.length;i<_3a4;i++){ +args[i]=decodeURIComponent(args[i]); +} +} +var _3a6=window.location.search.substring(1).split("&"),_3a7=new CFMutableDictionary(); +for(var i=0,_3a4=_3a6.length;i<_3a4;i++){ +var _3a8=_3a6[i].split("="); +if(!_3a8[0]){ +continue; +} +if(_3a8[1]==null){ +_3a8[1]=true; +} +_3a7.setValueForKey(decodeURIComponent(_3a8[0]),decodeURIComponent(_3a8[1])); +} +main(args,_3a7); +}); +}); +}); +}; +var _3a9=NO; +function _3aa(_3ab){ +if(_3a9){ +return _3ab(); +} +if(window.addEventListener){ +window.addEventListener("load",_3ab,NO); +}else{ +if(window.attachEvent){ +window.attachEvent("onload",_3ab); +} +} +}; +_3aa(function(){ +_3a9=YES; +}); +if(typeof OBJJ_AUTO_BOOTSTRAP==="undefined"||OBJJ_AUTO_BOOTSTRAP){ +_2.bootstrap(); +} +function _1b2(aURL){ +if(aURL instanceof CFURL&&aURL.scheme()){ +return aURL; +} +return new CFURL(aURL,_1b8); +}; +objj_importFile=_290.fileImporterForURL(_1b8); +objj_executeFile=_290.fileExecuterForURL(_1b8); +objj_import=function(){ +CPLog.warn("objj_import is deprecated, use objj_importFile instead"); +objj_importFile.apply(this,arguments); +}; +})(window,ObjectiveJ); ADDED Site/Site_Z/Info.plist Index: Site/Site_Z/Info.plist ================================================================== --- Site/Site_Z/Info.plist +++ Site/Site_Z/Info.plist @@ -0,0 +1,12 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + Site + CPPrincipalClass + CPApplication + + ADDED Site/Site_Z/Jakefile Index: Site/Site_Z/Jakefile ================================================================== --- Site/Site_Z/Jakefile +++ Site/Site_Z/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * Site + * + * Created by You on November 17, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("Site", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "Site.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("Site"); + task.setIdentifier("com.yourcompany.Site"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("Site"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["Site"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "Site", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "Site", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "Site")); + OS.system(["press", "-f", FILE.join("Build", "Release", "Site"), FILE.join("Build", "Deployment", "Site")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "Site")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "Site"), FILE.join("Build", "Desktop", "Site", "Site.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "Site", "Site.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "Site")); + print("----------------------------"); +} ADDED Site/Site_Z/Resources/MainMenu.cib Index: Site/Site_Z/Resources/MainMenu.cib ================================================================== --- Site/Site_Z/Resources/MainMenu.cib +++ Site/Site_Z/Resources/MainMenu.cib cannot compute difference between binary files ADDED Site/Site_Z/Resources/MainMenu.xib Index: Site/Site_Z/Resources/MainMenu.xib ================================================================== --- Site/Site_Z/Resources/MainMenu.xib +++ Site/Site_Z/Resources/MainMenu.xib @@ -0,0 +1,3745 @@ + + + + 1050 + 10H574 + 804 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 804 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 7 + 2 + {{335, 301}, {489, 449}} + 1946157056 + Window + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 274 + + YES + + + 293 + {{198, 16}, {96, 21}} + + YES + + -2080244224 + 0 + + + Helvetica + 12 + 16 + + + 100 + 0.0 + 50 + 0.0 + 0 + 1 + NO + NO + + + + + 293 + {{198, 54}, {96, 22}} + + YES + + -1804468671 + 272630784 + + + LucidaGrande + 13 + 1044 + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 301 + {{188, 412}, {115, 17}} + + YES + + 68288064 + 272630784 + Firenet Controller + + + YES + 1 + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 1 + MSAwIDAAA + + + + + + 268 + {{77, 356}, {392, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{77, 324}, {392, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{34, 361}, {38, 17}} + + YES + + 68288064 + 272630784 + URL + + + + + 6 + System + controlTextColor + + + + + + + 268 + {{32, 329}, {40, 17}} + + YES + + 68288064 + 272630784 + DATA + + + + + + + + + 268 + {{77, 278}, {61, 38}} + + YES + 2 + 1 + + YES + + -2080244224 + 0 + Get + + + 1 + 1211912703 + 0 + + NSRadioButton + + + + 200 + 25 + + + 67239424 + 0 + Put + + + 1211912703 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw +cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA +AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA +BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA +AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA +AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1 +cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD +AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH +SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF +hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8 +vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt +7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq +Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo +aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e +n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX +2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW +FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O +Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6 +ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt +rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA +AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA +AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl +A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq +DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU +HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8 +MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v +UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/ +eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj +rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn +5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh +AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK +CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY +GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95 +MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S +UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2 +d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV +pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK +0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf// +AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw +BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA +FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H +LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh +Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ +h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp +svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb +1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX +8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE +AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg +QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA + + + + + + 3 + MCAwAA + + + + 400 + 75 + + + {61, 18} + {4, 2} + 1151868928 + NSActionCell + + 67239424 + 0 + Radio + + 1211912703 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + + + 400 + 75 + + + + + + + + + 268 + {{192, 239}, {96, 32}} + + YES + + 67239424 + 134217728 + Send + + + -2038284033 + 129 + + + 200 + 25 + + + + + 264 + {{77, 177}, {392, 62}} + + YES + + -1805517311 + 272629760 + + + + YES + + + + + + + 268 + {{22, 199}, {43, 17}} + + YES + + 68288064 + 272630784 + Result + + + + + + + + {489, 449} + + + {{0, 0}, {1440, 878}} + {1.79769e+308, 1.79769e+308} + + + AppController + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + terminate: + + + + 449 + + + + delegate + + + + 451 + + + + takeDoubleValueFrom: + + + + 458 + + + + theWindow + + + + 459 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + + + + + + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 450 + + + + + 452 + + + YES + + + + + + 453 + + + + + 456 + + + YES + + + + + + 457 + + + + + 460 + + + YES + + + + + + 461 + + + + + 462 + + + YES + + + + + + 463 + + + + + 464 + + + YES + + + + + + 465 + + + + + 466 + + + YES + + + + + + 467 + + + + + 468 + + + YES + + + + + + 469 + + + + + 470 + + + YES + + + + + + + + 471 + + + + + 472 + + + + + 473 + + + + + 474 + + + YES + + + + + + 475 + + + + + 476 + + + YES + + + + + + 477 + + + + + 478 + + + YES + + + + + + 479 + + + + + + + YES + + YES + -3.IBPluginDependency + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBPluginDependency + 106.ImportedFromIB2 + 106.editorWindowContentRectSynchronizationRect + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 371.IBEditorWindowLastContentRect + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 371.windowTemplate.maxSize + 372.IBPluginDependency + 375.IBPluginDependency + 376.IBEditorWindowLastContentRect + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBEditorWindowLastContentRect + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 452.IBPluginDependency + 452.IBViewBoundsToFrameTransform + 453.IBPluginDependency + 456.IBPluginDependency + 456.IBViewBoundsToFrameTransform + 457.IBPluginDependency + 460.IBPluginDependency + 460.IBViewBoundsToFrameTransform + 461.IBPluginDependency + 462.IBPluginDependency + 462.IBViewBoundsToFrameTransform + 463.IBPluginDependency + 464.IBPluginDependency + 464.IBViewBoundsToFrameTransform + 465.IBPluginDependency + 466.IBPluginDependency + 466.IBViewBoundsToFrameTransform + 467.IBPluginDependency + 468.IBPluginDependency + 468.IBViewBoundsToFrameTransform + 469.IBPluginDependency + 470.IBPluginDependency + 470.IBViewBoundsToFrameTransform + 471.IBPluginDependency + 472.IBPluginDependency + 473.IBPluginDependency + 474.IBPluginDependency + 474.IBViewBoundsToFrameTransform + 475.IBPluginDependency + 476.IBPluginDependency + 477.IBPluginDependency + 478.IBPluginDependency + 478.IBViewBoundsToFrameTransform + 479.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{596, 852}, {216, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{143, 285}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{244, 238}, {489, 449}} + com.apple.InterfaceBuilder.CocoaPlugin + {{244, 238}, {489, 449}} + + {{33, 99}, {480, 360}} + {3.40282e+38, 3.40282e+38} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{437, 242}, {86, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{523, 2}, {178, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDRgAAwgwAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDRgAAwyUAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDPgAAw6QAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCmgAAw40AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCCAAAw7wAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCpAAAw4qAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCCAAAw3oAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCsgAAw1wAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDQAAAw4cAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCAAAAwvAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{155, 102}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 479 + + + + YES + + AppController + + theWindow + NSWindow + + + theWindow + + theWindow + NSWindow + + + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../adsfsdf.xcodeproj + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + + + ADDED Site/Site_Z/Resources/spinner.gif Index: Site/Site_Z/Resources/spinner.gif ================================================================== --- Site/Site_Z/Resources/spinner.gif +++ Site/Site_Z/Resources/spinner.gif cannot compute difference between binary files ADDED Site/Site_Z/index-debug.html Index: Site/Site_Z/index-debug.html ================================================================== --- Site/Site_Z/index-debug.html +++ Site/Site_Z/index-debug.html @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + Site + + + + + + + + + + + + + + +
    +
    + + + +
    +
    + + + ADDED Site/Site_Z/index.html Index: Site/Site_Z/index.html ================================================================== --- Site/Site_Z/index.html +++ Site/Site_Z/index.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + Site + + + + + + + + + + + + +
    +
    + + + +
    +
    + + + ADDED Site/Site_Z/main.j Index: Site/Site_Z/main.j ================================================================== --- Site/Site_Z/main.j +++ Site/Site_Z/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * Site + * + * Created by You on November 17, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} ADDED Site/Site_j/Buttons/status.graffle Index: Site/Site_j/Buttons/status.graffle ================================================================== --- Site/Site_j/Buttons/status.graffle +++ Site/Site_j/Buttons/status.graffle cannot compute difference between binary files ADDED Site/Site_j/Buttons/status.png Index: Site/Site_j/Buttons/status.png ================================================================== --- Site/Site_j/Buttons/status.png +++ Site/Site_j/Buttons/status.png cannot compute difference between binary files ADDED Site/Site_j/inventory.js Index: Site/Site_j/inventory.js ================================================================== --- Site/Site_j/inventory.js +++ Site/Site_j/inventory.js @@ -0,0 +1,233 @@ +// ************************************************* +// +// INVENTORY PAGE +// +// 11-May-2011 Initial Version +// +// ************************************************* + +var FNET_IStatus; +var FNET_Inventory; +var FNET_NET_MAX = 30; // Maximum net size +var FNET_NET_MIN = 1; + +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +//----------------------------------------------------------------------- +/* + INVENTORY PAGE Major function + + DIV = INV_RUN_BLOCK + + (1) On entrance replace MANUAL_RUN with + ... Loading .... + And read status +*/ +//----------------------------------------------------------------------- + +function INVENTORY_Operation() +{ + var path; + var result; + var outmsg; + + // Clear the area... + $("#INV_RUN_BLOCK").replaceWith("

    ...Loading...
    "); + +// path = "http://localhost:5010"; +// FNET_IStatus = FNET_getData(path,false,"",false); + + // Get the status + // Clear the map [2fbacd1fdc] + path = lcnURI + "firenet/status/C"; + FNET_IStatus = FNET_getData(path,false,"",true); + + // Build the inventory + + INVENTORY_Handler(); + +} + +//----------------------------------------------------------------------- +/* + Update inventory Information +*/ +//----------------------------------------------------------------------- + +function INVENTORY_Handler() +{ + var i; + var indx; + var hdr; + var body; + var output; + + // Create a new inventory array + + FNET_Inventory = new Array(); + + // Scan through each node and get the inventory information + + for( i=FNET_NET_MIN; i<= FNET_NET_MAX; i++ ) + { + indx = i + ""; + if( FNET_IStatus[indx] != null ) + { + FNET_Inventory[i] = INVENTORY_NodeData( indx ); + } + } + + // Now build the table for this run + + hdr = INVENTORY_BuildHeader(); + body = INVENTORY_BuildBody( FNET_Inventory ); + + output = "

    "; + output = output + ""; + output = output + hdr + body; + output = output + "
    "; + $("#INV_RUN_BLOCK").replaceWith( output ); +} + +//----------------------------------------------------------------------- +/* + -- SUPPORT FUNCTIONS --- +*/ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +/* + Get inventory information on 1 NODE +*/ +//----------------------------------------------------------------------- +function INVENTORY_NodeData( node ) +{ + var path; + var result; + var n; + var output = new Array(); + + // (1) Get the version information + + path = lcnURI + "firenet/version/" + node; + result = INV_getData(path,false,"",true); + + output.VERSION = result.VERSION; + + // (2) Get the Firing time data + + path = lcnURI + "firenet/literal/" + node + "/T"; + result = INV_getData(path,true,"",true); + + result = result.DATA; + n = result.length; + output.FT = result.substring( n-4); + + // (3) Get the Backoff time data + + path = lcnURI + "firenet/literal/" + node + "/B"; + result = INV_getData(path,true,"",true); + + result = result.DATA; + n = result.length; + output.BACKOFF = result.substring( n-4); + + // (4) Get the Test mode data + + path = lcnURI + "firenet/literal/" + node + "/M"; + result = INV_getData(path,true,"",true); + + result = result.DATA; + n = result.length; + output.TEST = result.substring( n-1); + + + return output; +} + +function INV_getData( path, postState,data,flag ) +{ + var count = 3; + var result; + + while( count > 0 ) + { + result = FNET_getData( path, postState,data,flag ); + if( result.STATUS == "XMIT" ) + break; + + FNET_SLEEP( 100 ); + count = count - 1 + + result.DATA = ""; + } + + return result; +} + +//----------------------------------------------------------------------- +// -- DISPLAY FUNCTIONS -- +//----------------------------------------------------------------------- + +//----------------------------------------------------------------------- +/* + INVENTORY_BuildHeader() + + INPUT: NONE + + OUTPUT: Return table header structure +*/ +//----------------------------------------------------------------------- + +function INVENTORY_BuildHeader() +{ + var tablehdr; + var i; + + tablehdr = ""; + tablehdr = tablehdr + "Node"; + tablehdr = tablehdr + "Version"; + tablehdr = tablehdr + "Firing Time"; + tablehdr = tablehdr + "Backoff"; + tablehdr = tablehdr + "Test Mode"; + tablehdr = tablehdr + ""; + + return tablehdr; +} + +//----------------------------------------------------------------------- +/* + INVENTORY_BuildBody(inventory) + + INPUT: NONE + + OUTPUT: Return table body structure +*/ +//----------------------------------------------------------------------- + +function INVENTORY_BuildBody( inventory ) +{ + var output = ""; + var i; + + // Build each row + + for( i=FNET_NET_MIN; i<= FNET_NET_MAX; i++ ) + { + if( inventory[i] != null ) + { + row = ""; + + row = row + "" + i + ""; + row = row + "" + inventory[i].VERSION + ""; + row = row + "" + inventory[i].FT + ""; + row = row + "" + inventory[i].BACKOFF + "" + row = row + "" + inventory[i].TEST + "" + row = row + ""; + + output = output + row; + } + } + + return output; +} ADDED Site/rest/admin.lua Index: Site/rest/admin.lua ================================================================== --- Site/rest/admin.lua +++ Site/rest/admin.lua @@ -0,0 +1,130 @@ +------------------------------------------------------------------------------------ +-- +-- REST - LEVEL 1 - Handles site following REST/ADMIN/.... +-- +-- +-- This handles the ADMIN +-- ADMIN/TIME and ADMIN/POWER done here +-- TIME - GET Returns current system date/time +-- POWER/OFF - POST Shuts down system (change leaf to POWER not system) +-- LOGIN - Pass to login menu +------------------------------------------------------------------------------------ + +require "rest_sup" + +print("--ADMIN LOADED--") + +------------------------------------------------------------------------------------ +-- +-- admin_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function admin_handler(rqst,htype,url,n,al) + local out + + rest_handler(rqst,htype,url,n,admin_actions) +end + +------------------------------------------------------------------------------------ +-- +-- stop_handler(rqst,type,url,n,al) - Shutdown system if requested +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, look at last link for stop +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function stop_handler(rqst,htype,url,n,al) + local out + local data + + -- Is this a POST, if so look at next command + + if( htype == HTTP_POST ) + then + data = url[url.n] + if( data ~= nil ) + then + + -- Look for key/value of SYSTEM : STOP + + if( data == "OFF" ) + then + state.RUN = nil + out = "{ \"POWER\" : \"OFF\" }" + else + if( data == "ON" ) + then + out = "{ \"POWER\" : \"ON\" }" + else + out = "{ \"POWER\" : \"UNK-CMD\" }" + end + end + else + out = "{ \"POWER\" : \"NO_CMD\" }" + end + else + out = "{ \"POWER\" : \"POST-NEEDED\" }" + end + + -- Close the request + + rqst:close(out) + +end + +------------------------------------------------------------------------------------ +-- +-- time_handler(rqst,type,url,n,al) - Return system time +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function time_handler(rqst,htype,url,n,al) + + local out + + -- Build return data of current system time + + out = os.date() + out = string.format("{ \"TIME\" : \"%s\" }",out) + + rqst:close(out) + + end + + + +---------------------------------------------------------------- +-- STRUCTURE +---------------------------------------------------------------- +-- Build action list for admin actions + +admin_actions = {} +admin_actions.POWER = stop_handler +admin_actions.TIME = time_handler +admin_actions.LOGIN = login_handler + + + ADDED Site/rest/debug_main.lua Index: Site/rest/debug_main.lua ================================================================== --- Site/rest/debug_main.lua +++ Site/rest/debug_main.lua @@ -0,0 +1,99 @@ +------------------------------------------------------------------------------------ +-- +-- REST - LEVEL 0 - Handles site following REST/ +-- +-- +-- This handles the top level +-- +-- 20-Nov-2011 [7f829d5df2] & [9eae8bcde5] Support for automated shows and PROGRAM +-- rest commands +-- +------------------------------------------------------------------------------------ +-- First set up require path + +--path = arg[1] +--path = path .. "XX" +--path = string.gsub(path,"/FirenetXX","\/site\/rest\/?.lua") +--print("NeW PATH: ",path) + +--path = "rest" +path = "../../site/rest" -- This is the relationship of the + -- Executible to where the scripts + -- are kept + +--http_lcn = "Site" +http_lcn = "../../Site/Site_J" -- This is the relationship to the J-Query code) + +-- Set that into the package search path +_G.package.path = path .. "/?.lua;" .. _G.package.path + +-- Now all modules will load with just a simple require + name + +require "rest_sup" +require "login" +require "admin" +require "firenet_sup" +require "firenet_main" +require "program" + +-- Build the site structure list + +site = {} +site.ADMIN = admin_handler +site.FIRENET = firenet_handler +site.PROGRAM = program_handler + +state = {} +state.RUN = 1 + +-- Site operation + +-- (1) Open channel and start HTTP + +val = http.start(8081,http_lcn,"rest") +if( val ~= nil ) +then + -- Open FIRENET, if fail then bail + + if( firenet_open() ) + then + + while( state.RUN ) + do + -- Wait for data + + h = http.open() + if( h ~= nil ) + then + ------------------------------ + print("*** DATA RECEIVED ***") + url,htype = h:url() + if( url ~= nil ) + then + print("HTTP TYPE: ",htype); + table.foreach(url,print) + + -- Handle the request + + rest_handler(h,htype,url,2,site) + timer.sleep(5) -- Let the other threads run + end + ------------------------------ + end + end + + -- Close FIRENET before exit + + firenet_close() + else + print("** Failed to open FIRENET **") + end +else + print("** Failed to open HTTP Server **") +end + +print("-- END RUN -- ") + +timer.sleep(1000) +http.stop() + ADDED Site/rest/firenet.lua Index: Site/rest/firenet.lua ================================================================== --- Site/rest/firenet.lua +++ Site/rest/firenet.lua @@ -0,0 +1,58 @@ +-------------------------------------------------------------- +-- +-- FIRENET REST Page +-- This has rest/FIRENET RESTful pages +-- +-- 12-Nov-2010 Initial Creation +-- +---------------------------------------------------------------- + +require "firenet_sup" + +FNET=nil -- Firenet handle + +print("--FIRENET_MAIN LOADED--") + +---------------------------------------------------------------- +-- firenet_open() - Open firenet and save handle +-- +-- INPUT: NONE +-- +-- OUTPUT: 1 if OPEN OK, nil if not +---------------------------------------------------------------- + +function firenet_open() + + local rtn = nil; + + FNET = firenet.new() + if( FNET ~= nil ) + then + rtn = 1 + end + + return rtn +end + +---------------------------------------------------------------- +-- firenet_close() - Close firenet +-- +-- INPUT: NONE +-- +-- OUTPUT: NONE +---------------------------------------------------------------- + +function firenet_close() + + if( FNET ~= nil ) + then + FNET:close() + end +end + + +-- Build action list for firenet actions + +firenet_actions = {} +--firenet_actions.STATUS = status_handler + ADDED Site/rest/firenet_main.lua Index: Site/rest/firenet_main.lua ================================================================== --- Site/rest/firenet_main.lua +++ Site/rest/firenet_main.lua @@ -0,0 +1,699 @@ +-------------------------------------------------------------- +-- +-- FIRENET REST Page +-- This has rest/FIRENET RESTful pages +-- +-- 12-Nov-2010 Initial Creation +-- 1-Dec-2010 Fix JSON return from status message +-- DON'T append JSON on the json_kvp() +-- string, put it into the list and use that +-- 14-Dec-2010 Change code to send back XMIT if command sent +-- (we don't know status) +-- 23-Jan-2011 [e63a96467f] Fix status return parsing +-- 24-Jan-2011 [4fd91ac4c2] Add Channel information command +-- 22-Apr-2011 [b3cbd06ece] Add literal command +-- 8-May-2011 Allow 0 for Literal address +-- 8-May-2011 [2fbacd1fdc] Add C for clear network map on status +-- 20-N0v-2011 [4e8fec9ee6] Add SYNC & PGM commands to Firenet +-- +---------------------------------------------------------------- + +require "firenet_sup" +require "rest_sup" + +FNET=nil -- Firenet handle + +print("--FIRENET_MAIN LOADED--") + +---------------------------------------------------------------- +-- CREATE/DELETE NETWORK +---------------------------------------------------------------- +---------------------------------------------------------------- +-- firenet_open() - Open firenet and save handle +-- +-- INPUT: NONE +-- +-- OUTPUT: 1 if OPEN OK, nil if not +---------------------------------------------------------------- + +function firenet_open() + + local rtn = nil; + + FNET = firenet.new() + if( FNET ~= nil ) + then + rtn = 1 + end + + return rtn +end + +---------------------------------------------------------------- +-- firenet_close() - Close firenet +-- +-- INPUT: NONE +-- +-- OUTPUT: NONE +---------------------------------------------------------------- + +function firenet_close() + + if( FNET ~= nil ) + then + FNET:delete() + end +end + +---------------------------------------------------------------- +-- REST PAGES +---------------------------------------------------------------- + +------------------------------------------------------------------------------------ +-- +-- firenet_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function firenet_handler(rqst,htype,url,n,al) + local out + + rest_handler(rqst,htype,url,n,firenet_actions) +end + +------------------------------------------------------------------------------------ +-- +-- status_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function status_handler(rqst,htype,url,n,al) + local out = {} + local addr + + out.STATUS = "FAIL" -- Set for failure + + print("-- Enterning STATUS --") + + if( htype == HTTP_GET ) + then + -- If no more URL then get all + + print("-- GET STATUS --") + + addr = url[4] + + -- Handle ADDR == C for clear & read all + -- [2fbacd1fdc] + + if( addr ~= nil and (addr == "C" or addr == "0") ) + then + addr = nil -- Set for BROADCAST address + FNET_MAP = {} -- Reset map + end + + if( build_fnet_status(addr,FNET) ) + then + -- Here build the status result, return all if + -- addr == nil or just part with specific address + + out = format_full_fnet_status(addr,FNET_MAP) + rqst:close(out) + else + out = json_kvp(out) + rqst:close(out) + end + else + out.STATUS = "UNKNOWN RQST" + out = json_kvp(out) + rqst:close(out) + end +end + +------------------------------------------------------------------------------------ +-- +-- arm_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, url[4] = unit to arm url[5] = A = arm D = disarm +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function arm_handler(rqst,htype,url,n,al) + local out = {} + local addr + local arm_val + + out.STATUS = "FAIL" -- Set for failure + + if( htype == HTTP_POST ) + then + -- Check for URL[4] and [5] + + addr = tonumber(url[4]) + arm_val = url[5] + + if( addr ~= nil and (arm_val == "A" or arm_val == "D" ) ) + then + -- Build output packet + outpk = {} + outpk.TO = addr + outpk.DATA = "A" .. arm_val + + -- Send it + + FNET:write(outpk) + + out.STATUS = "XMIT" + else + out.STATUS = "BAD DATA" + end + else + out.STATUS = "UNKNOWN RQST" + end + + out = json_kvp(out) + h:close(out) +end + +------------------------------------------------------------------------------------ +-- +-- fire_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, url[4] = unit to fire url[5] = element to fire +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function fire_handler(rqst,htype,url,n,al) + local out = {} + local addr + local fire_val + + out.STATUS = "FAIL" -- Set for failure + + if( htype == HTTP_POST ) + then + -- Check for URL[4] and [5] + + addr = tonumber(url[4]) + fire_val = tonumber(url[5]) - 1 + + if( addr ~= nil and fire_val ~= nil and + (fire_val >= 0 and fire_val <= 5) ) + then + -- Build output packet + outpk = {} + outpk.TO = addr + outpk.DATA = "F" .. fire_val + + -- Send it + + FNET:write(outpk) + + out.STATUS = "XMIT" + else + out.STATUS = "BAD DATA" + end + else + out.STATUS = "UNKNOWN RQST" + end + + out = json_kvp(out) + h:close(out) +end + +------------------------------------------------------------------------------------ +-- +-- sync_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, +-- url[4] = Destination +-- url[5] = If present & == 'P' then +-- starting program +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function sync_handler(rqst,htype,url,n,al) + local out = {} + local pgm = "" + + out.STATUS = "FAIL" -- Set for failure + + if( htype == HTTP_POST ) + then + addr = tonumber(url[4]) + if( addr == nil ) + then + addr = 0; + end + + -- Check for program start + + if( url[5] ~= nil and url[5] == "P" ) + then + -- Do program start actions here + -- TBD + pgm = "P" + end + + -- Build output packet + outpk = {} + outpk.TO = addr + outpk.DATA = "Z" .. pgm + + -- Send it + + FNET:write(outpk) + + out.STATUS = "XMIT" + + else + out.STATUS = "UNKNOWN RQST" + end + + out = json_kvp(out) + h:close(out) +end + +------------------------------------------------------------------------------------ +-- +-- delay_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, url[4] = unit to fire +-- url[5] = circuit to fire +-- url[6] - Delay time +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function delay_handler(rqst,htype,url,n,al) + local out = {} + local addr + local fire_val + local delay_val + + out.STATUS = "FAIL" -- Set for failure + + if( htype == HTTP_POST ) + then + -- Check for URL[4] and [5] + + addr = tonumber(url[4]) + fire_val = tonumber(url[5]) - 1 + delay_val = tonumber(url[6]) + + if( addr ~= nil and fire_val ~= nil and delay_val ~= nil and + (fire_val >= 0 and fire_val < 5)) + then + -- Build output packet + outpk = {} + outpk.TO = addr + outpk.DATA = "D" .. fire_val .. delay_val + + -- Send it + + FNET:write(outpk) + + out.STATUS = "XMIT" + else + out.STATUS = "BAD DATA" + end + else + out.STATUS = "UNKNOWN RQST" + end + + out = json_kvp(out) + h:close(out) +end + +------------------------------------------------------------------------------------ +-- +-- pgm_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, url[4] = unit to fire +-- url[5] = circuit to fire +-- url[6] - Delay time +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function pgm_handler(rqst,htype,url,n,al) + local out = {} + local addr + local fire_val + local delay_val + + out.STATUS = "FAIL" -- Set for failure + + if( htype == HTTP_POST ) + then + -- Check for URL[4] and [5] + + addr = tonumber(url[4]) + fire_val = tonumber(url[5]) - 1 + delay_val = tonumber(url[6]) + + if( addr ~= nil and fire_val ~= nil and delay_val ~= nil and + (fire_val >= 0 and fire_val < 5)) + then + -- Build output packet + outpk = {} + outpk.TO = addr + outpk.DATA = "P" .. fire_val .. delay_val + + -- Send it + + print("--- Starting SWR ") + + outpk = swr_firenet(outpk,2000,FNET) + + if( outpk ~= nil ) + then + out.STATUS = "XMIT" + out.VERSION = outpk.DATA + else + out.STATUS = "NO DATA" + end + else + out.STATUS = "BAD ADDRESS" + end + else + out.STATUS = "NO TARGET" + end + + out = json_kvp(out) + h:close(out) +end + +------------------------------------------------------------------------------------ +-- +-- version_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function version_handler(rqst,htype,url,n,al) + local out = {} + local addr + local outpk + local out = {} + + out.STATUS = "FAIL" -- Set for failure + + print("-- Enterning VERSION --") + + if( htype == HTTP_GET ) + then + + print("-- GET VERSION --") + + if( url[4] ~= nil ) + then + addr = tonumber(url[4]) + if( addr > 0 ) + then + + -- Build output packet & send it + outpk = {} + outpk.TO = addr + outpk.DATA = "V" + + print("--- Starting SWR ") + + outpk = swr_firenet(outpk,2000,FNET) + + if( outpk ~= nil ) + then + out.STATUS = "XMIT" + out.VERSION = outpk.DATA + else + out.STATUS = "NO DATA" + end + else + out.STATUS = "BAD ADDRESS" + end + else + out.STATUS = "NO TARGET" + end + else + out.STATUS = "UNKNOWN RQST" + end + + -- Return result + + out = json_kvp(out) + rqst:close(out) +end + +------------------------------------------------------------------------------------ +-- +-- channel_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function channel_handler(rqst,htype,url,n,al) + local out = {} + local addr + local outpk + local out = {} + + out.STATUS = "FAIL" -- Set for failure + + print("-- Enterning Channel --") + + if( htype == HTTP_GET ) + then + + print("-- GET Channel --") + + if(url.n >= 5 ) + then + addr = tonumber(url[4]) + channel = tonumber(url[5]) - 1 + if( addr > 0 and channel >= 0 and channel <= 5 ) + then + + -- Build output packet & send it + outpk = {} + outpk.TO = addr + outpk.DATA = string.format("C%d",channel) + + print("--- Starting SWR ") + + outpk = swr_firenet(outpk,2000,FNET) + + if( outpk ~= nil ) + then + out.STATUS = "XMIT" + out.FIRED = string.sub(outpk.DATA,3,3); + out.AD = string.sub(outpk.DATA,4) + out.DATA = outpk.DATA + else + out.STATUS = "NO DATA" + end + else + out.STATUS = "BAD ADDRESS" + end + else + out.STATUS = "NO TARGET" + end + else + out.STATUS = "UNKNOWN RQST" + end + + -- Return result + + out = json_kvp(out) + rqst:close(out) +end + +------------------------------------------------------------------------------------ +-- +-- literal_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function literal_handler(rqst,htype,url,n,al) + local out = {} + local addr + local outpk + local out = {} + + out.STATUS = "FAIL" -- Set for failure + + print("-- Enterning Literal --") + + if( htype == HTTP_POST ) + then + + print("-- GET Channel --") + + if(url.n >= 5 ) + then + addr = tonumber(url[4]) + if( addr ~= nil and addr >= 0 ) + then + + -- Build output packet & send it + outpk = {} + outpk.TO = addr + outpk.DATA = url[5] + + print("--- Starting SWR ") + + outpk = swr_firenet(outpk,2000,FNET) + + if( outpk ~= nil ) + then + out.STATUS = "XMIT" + out.FROM = outpk.FROM + out.DATA = outpk.DATA + else + out.STATUS = "NO DATA" + end + else + out.STATUS = "BAD ADDRESS" + end + else + out.STATUS = "NO TARGET" + end + else + out.STATUS = "UNKNOWN RQST" + end + + -- Return result + + out = json_kvp(out) + rqst:close(out) +end + +---------------------------------------------------------------- +-- SUPPORT FUNCTIONS +---------------------------------------------------------------- +------------------------------------------------------------------------------------ +-- +-- function format_full_fnet_status(map) +-- +-- INPUT: addr - Address to display, if nil do all +-- map - FIRENET status map +-- +-- OUTPUT: JSON string +-- +------------------------------------------------------------------------------------ + +function format_full_fnet_status(addr, map) + local out + local lmap + + -- Pick part of map to show + + if( addr == nil ) + then + lmap = map + else + addr = tonumber(addr) + lmap = map[addr] + end + + -- MARK the success here, this will produce + -- correct JSON in the output + + if( lmap == nil ) + then + lmap = {} + end + + lmap.STATUS = "SUCCESS" + + -- Generate JASON + + out = json_kvp(lmap) + + print("------------") + print ("\n",out,"\n") + print("------------") + return out +end +---------------------------------------------------------------- +-- STRUCTURE -- +---------------------------------------------------------------- + +-- Build action list for firenet actions + +firenet_actions = {} +firenet_actions.STATUS = status_handler +firenet_actions.ARM = arm_handler +firenet_actions.FIRE = fire_handler +firenet_actions.SYNC = sync_handler +firenet_actions.DELAY = delay_handler +firenet_actions.PGM = pgm_handler +firenet_actions.VERSION = version_handler +firenet_actions.CHANNEL = channel_handler +firenet_actions.LITERAL = literal_handler +firenet_actions.PROGRAM = program_handler ADDED Site/rest/firenet_sup.lua Index: Site/rest/firenet_sup.lua ================================================================== --- Site/rest/firenet_sup.lua +++ Site/rest/firenet_sup.lua @@ -0,0 +1,380 @@ +-------------------------------------------------------------- +-- +-- FIRENET Lua support functions +-- This file contains the basic structures used for Firenet +-- support under Lua +-- +-- Basic Structures +-- FNET_MAP - List indexed by NODE name +-- [] +-- .FIRED - Fired channels as a # +-- .UNFIRED - UnFired channels as a # +-- .PHY - Physical address +-- REV_FNET_MAP - List indexed by NODE Phy address +-- [= 0 ) + then + list[i] = 1 -- We have the bit + val = temp + else + list[i] = 0 -- We don't have the bit + end + + subval = subval/2 -- Next lower bit + end + + return list +end + +---------------------------------------------------------------- +-- play_file(file) +-- +-- INPUT: file - Music file +-- +-- OUTPUT: PID of music player +-- +---------------------------------------------------------------- + +function play_file( file ) + local rtnval = nil + local fp,indata + + -- (1) Try to open the file, if OK then proceed + + fp = io.open(file,"r") + if( fp ~= nil ) + then + -- OS X version of play + + fp:close() + fp = string.format("%s %s & ",OS_MUSIC_PLAYER,file) + os.execute(fp) + print("Music File executer",fp) + + -- We must wait till it's in the process list + timer.sleep( 1000 ) + fp = string.format("ps -ax | grep %s > player.txt",file) + os.execute(fp) + print("Music Action executer",fp) + + -- Now get the PID + + fp = io.open("player.txt","r") + if( fp ~= nil ) + then + -- Read the file and extract the PID for the player + indata = fp:read("*l") -- Player line + print("Music Player: ",indata) + rtnval = string.sub(indata,1,5) -- PID is first part + fp:close() + os.remove("player.txt") + end + + end + + return rtnval +end + +---------------------------------------------------------------- +-- play_file_stop(pid) +-- +-- INPUT: pid - PID of music player +-- +-- OUTPUT: NONE +-- +---------------------------------------------------------------- + +function play_file_stop( pid ) + local out + + -- Build the kill string and send it + + out = string.format("kill -9 %s ",pid) + os.execute(out) + +end +------------------------------------------------------------------------------- +-- +-- find_arg( argv,flag,data ) - Find the port in the argument list +-- +-- INPUT: argv - Program argument list +-- flag - Look for this string (i.e. -flag) in list +-- data - If non-nil get the field following flag slot +-- +-- OUTPUT If data = nil return nil if flag not found and 1 if found +-- If data <> nil return nil if flag not found or next field if found +-- +------------------------------------------------------------------------------- + +function flag_srch( argv,flag,data ) + local rtnval = nil + + -- Loop over the list and check each item for match + + for i=1,table.getn(argv) + do + if( flag == argv[i] ) + then + -- Found so two cases + -- (a) If data == nil then return 1 + -- (b) If data != nil then return argv[i+1] + + if( data == nil ) + then + rtnval = 1 + else + rtnval = argv[i+1] + end + + -- In either case just break out + + break + end + end + + return( rtnval ) +end + + ADDED Site/rest/http.lua Index: Site/rest/http.lua ================================================================== --- Site/rest/http.lua +++ Site/rest/http.lua @@ -0,0 +1,51 @@ +# HTTP/REST Test script for FIRENET + +val = http.start(8081,"lcn/stuff","rest") +if( val ~= nil ) +then + counter = 3000 + + while( 1 ) + do + h = http.open() + if( h ~= nil ) + then + print("*** DATA RECEIVED ***") + url,htype = h:url() + if( url ~= nil ) + then + print("HTTP TYPE: ",htype); + table.foreach(url,print) + end + -- If POST GET the data + if( htype == 6 ) + then + print("HTTP POST DATA: ") + print(h:data()) + print("---------------") + + if( url[1] == "rest" and url[2] == "quit" ) + then + print("-- shutting down --") + out = string.format("{ \"ACTION\" : \"STOP\" }"); + h:close( out) + timer.sleep(1000) + http.stop() + return + end + end + out = string.format("{ \"return_data\" : \"%d\" }",counter); + h:close( out) + end + timer.sleep(100) + counter = counter - 1 + if( counter <= 0 ) + then + break + end + end +else + print("*** FAILED TO OPEN HTTP ***") +end +http.stop() + ADDED Site/rest/login.lua Index: Site/rest/login.lua ================================================================== --- Site/rest/login.lua +++ Site/rest/login.lua @@ -0,0 +1,255 @@ +------------------------------------------------------------------------------------ +-- +-- REST - LEVEL 2 - Handles site following REST/ADMIN/LOGIN +-- +-- +-- This handles the Login +-- +-- REQUEST - GET Returns challenge +-- RESPONSE - POST Sends response to challenge +-- STATUS - GET returns login status +-- LOGOUT - POST does a logout +-- +-- 17-Dec-2010 Initial version +-- 23-Dec-2010 Made with login and multiple windows +-- +------------------------------------------------------------------------------------ + +require "rest_sup" + +-- Global variables for this run + +-- Random # Challenge values +LOGIN_CHAL_LIST = { "50A0","F748","95B1","8D8B","4F34","52C7","85B6","EA03", + "E6B8","D37F","4FE1","5215","A868","9336","2885","6F15"} +LOGIN_CHAL_PSN = 1 -- Challenge value selected +LOGIN_OK = nil -- <> nil when login is OK + +print("--LOGIN LOADED--") + +------------------------------------------------------------------------------------ +-- +-- login_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function login_handler(rqst,htype,url,n,al) + local out + + print("-- Login request --") + rest_handler(rqst,htype,url,n,login_actions) +end + +------------------------------------------------------------------------------------ +-- +-- login_request_handler(rqst,type,url,n,al) - Request for login +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, look at last link for stop +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- URL: ..ADMIN/LOGIN/REQUEST +-- RESPONSE: { "CHAL" : } +-- +------------------------------------------------------------------------------------ + +function login_request_handler(rqst,htype,url,n,al) + local out = {} + local data + local i + + -- Is this a GET, if so look pick random value from random list + -- Also fail if already logged in + + if( htype == HTTP_GET and LOGIN_OK == nil) + then + -- Add some randomness to our BAD random # gen + data = os.time() % 1000 + math.randomseed(data) + for i=1,data + do + math.random() + end + data = math.random(1,16) + LOGIN_CHAL_PSN = data -- Get index into random # list + ------------------------------------------- + + -- Build response + + out.CHAL = LOGIN_CHAL_LIST[LOGIN_CHAL_PSN] + + else + out.CHAL = "UNKNOWN RQST" + end + + -- Return response + + out = json_kvp(out) + h:close(out) + +end + +------------------------------------------------------------------------------------ +-- +-- login_response_handler(rqst,type,url,n,al) - Response for login +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, look at last link for stop +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- URL: ..ADMIN/LOGIN/RESPONSE/ SB LOGIN_CHAL_PSN +1 value +-- RESPONSE: { "LOGIN" : "OK" } +-- Server is now locked to this client's iP address will not response to others +-- +------------------------------------------------------------------------------------ + +function login_response_handler(rqst,htype,url,n,al) + local out = {} + local data + + -- Is this a POST, check in returned random value matches next + -- (circularly) in the list + -- Also fail if already logged in + + if( htype == HTTP_POST and LOGIN_OK == nil) + then + -- 1 2 3 4 5 + -- We have rest/admin/login/response/ + + data = LOGIN_CHAL_PSN + 1 + if( data > 16 ) -- Length of list + then + data = 1 -- Treat list as circular + end + + -- See if we match on random data + + if( url[5] == LOGIN_CHAL_LIST[data] ) + then + out.LOGIN = "OK" -- Success + h:lock(1) -- Lock server + LOGIN_OK = 1 -- Save state + else + out.LOGIN = "FAIL" -- Failure + h:lock(nil) -- Unlock server + end + else + out.LOGIN = "UNKNOWN RQST" + end + + out = json_kvp(out) + h:close(out) -- Return message +end + +------------------------------------------------------------------------------------ +-- +-- login_status_handler(rqst,type,url,n,al) - Status of login +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, look at last link for stop +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- URL: ..ADMIN/LOGIN/STATUS +-- RESPONSE: { "LOGIN" : "YES" } or { "LOGIN" : "NO" } if not logged in +-- +------------------------------------------------------------------------------------ + +function login_status_handler(rqst,htype,url,n,al) + local out = {} + local data + + -- Is this a GET,if so return status + + if( htype == HTTP_GET ) + then + -- Build response + + if( LOGIN_OK ~= nil) + then + out.STATUS = "YES" + else + out.STATUS = "NO" + end + else + out.STATUS = "UNKNOWN RQST" + end + + -- Return response + + out = json_kvp(out) + h:close(out) +end + +------------------------------------------------------------------------------------ +-- +-- login_logout_handler(rqst,type,url,n,al) - Logout if logged in +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, look at last link for stop +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- URL: ..ADMIN/LOGIN/LOGOUT +-- RESPONSE: { "LOGOUT" : "OK" } or { "LOGOUT" : "UNKNOWN RQST" } if not logged in +-- Server is now unlocked for all clients +-- +------------------------------------------------------------------------------------ + +function login_logout_handler(rqst,htype,url,n,al) + local out = {} + local data + + -- Is this a POST, and are we logged in ? + -- (circularly) in the list + -- Also fail if already logged in + + if( htype == HTTP_POST and LOGIN_OK) + then + -- Unlock and return OK + + h:lock(nil) + out.LOGOUT = "OK" + LOGIN_OK = nil -- Change status + else + out.LOGOUT = "UNKNOWN RQST" + end + + out = json_kvp(out) + h:close(out) -- Return message +end + + +---------------------------------------------------------------- +-- STRUCTURE +---------------------------------------------------------------- +-- Build action list for login actions + +login_actions = {} +login_actions.REQUEST = login_request_handler +login_actions.RESPONSE = login_response_handler +login_actions.STATUS = login_status_handler +login_actions.LOGOUT = login_logout_handler + ADDED Site/rest/main.lua Index: Site/rest/main.lua ================================================================== --- Site/rest/main.lua +++ Site/rest/main.lua @@ -0,0 +1,176 @@ +------------------------------------------------------------------------------------ +-- +-- REST - LEVEL 0 - Handles site following REST/ +-- +-- FLAGS: Reads the following command line flags: +-- -http GLOBAL HTTP_LCN +-- -rest GLOBAL REST_LCN +-- -show GLOBAL SHOW_LCN +-- +-- This handles the top level +-- +-- 20-Nov-2011 [7f829d5df2] & [9eae8bcde5] Support for automated shows and PROGRAM +-- rest commands +-- 23-Nov-2011 [7f829d5df2] Read cmd line input and pull in the http & +-- show locations +-- 28-Dec-2015 Add -port to set HTTP port +-- +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- +-- SUPPORT FUNCTIONS +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- +-- +-- flag_srch( argv,flag,data ) - Find the port in the argument list +-- +-- INPUT: argv - Program argument list +-- flag - Look for this string (i.e. -flag) in list +-- data - If non-nil get the field following flag slot +-- +-- OUTPUT If data = nil return nil if flag not found and 1 if found +-- If data <> nil return nil if flag not found or next field if found +-- +------------------------------------------------------------------------------- + +function flag_srch( argv,flag,data ) + local rtnval = nil + + -- Loop over the list and check each item for match + + for i=1,table.getn(argv) + do + if( flag == argv[i] ) + then + -- Found so two cases + -- (a) If data == nil then return 1 + -- (b) If data != nil then return argv[i+1] + + if( data == nil ) + then + rtnval = 1 + else + rtnval = argv[i+1] + end + + -- In either case just break out + + break + end + end + + return( rtnval ) +end + +------------------------------------------------------------------------------- +-- MAIN PROGRAM +------------------------------------------------------------------------------- + +-- Pull up items from command line +-- NOTE THESE ARE GLOBALS FOR THE REST +-- OF THE SYSTEM + +REST_LCN = flag_srch( arg,"-rest",1 ) +HTTP_LCN = flag_srch(arg,"-http",1) +SHOW_LCN = flag_srch(arg,"-show",1) +PORT_USED = flag_srch(arg,"-port",1) + +if( REST_LCN == nil ) +then + print("SYNTAX ERROR: -rest NOT GIVEN") + print("Shutting down") + os.exit(-1) +end + +if( HTTP_LCN == nil ) +then + print("SYNTAX ERROR: -http NOT GIVEN") + print("Shutting down") + os.exit(-1) +end + +if( SHOW_LCN == nil ) +then + print("WARNING: -show NOT GIVEN") + print("Automated Shows Disabled") +end + +if( PORT_USED == nil ) +then + PORT_USED = 8081 + print("WARNING: -port not present using 8081") +end +PORT_USED = PORT_USED + 0 + +-- Set that into the package search path +_G.package.path = REST_LCN .. "/?.lua;" .. _G.package.path + +-- Now all modules will load with just a simple require + name + +require "rest_sup" +require "login" +require "admin" +require "firenet_sup" +require "program" +require "firenet_main" + + +-- Build the site structure list + +site = {} +site.ADMIN = admin_handler +site.FIRENET = firenet_handler + +state = {} +state.RUN = 1 + +-- Site operation + +-- (1) Open channel and start HTTP + +val = http.start(PORT_USED,HTTP_LCN,"rest") +if( val ~= nil ) +then + -- Open FIRENET, if fail then bail + + if( firenet_open() ) + then + + while( state.RUN ) + do + -- Wait for data + + h = http.open() + if( h ~= nil ) + then + ------------------------------ + print("*** DATA RECEIVED ***") + url,htype = h:url() + if( url ~= nil ) + then + print("HTTP TYPE: ",htype); + table.foreach(url,print) + + -- Handle the request + + rest_handler(h,htype,url,2,site) + timer.sleep(5) -- Let the other threads run + end + ------------------------------ + end + end + + -- Close FIRENET before exit + + firenet_close() + else + print("** Failed to open FIRENET **") + end +else + print("** Failed to open HTTP Server **") +end + +print("-- END RUN -- ") + +timer.sleep(1000) +http.stop() + ADDED Site/rest/program.lua Index: Site/rest/program.lua ================================================================== --- Site/rest/program.lua +++ Site/rest/program.lua @@ -0,0 +1,607 @@ +-------------------------------------------------------------- +-- +-- PROGRAM REST Page +-- This has rest/PROGRAM RESTful pages- +-- Actions: +-- firenet/program/list - Return list of programs +-- firenet/program/set/# - Select program +-- firenet/program/pgm - Program nodes +-- firenet/program/start - Start nodes & music +-- firenet/program/abort - Stop program and music +-- firenet/program/status - Return status messages +-- Running/nodes fires +-- +-- 20-Nov-2010 [9eae8bcde5] Initial Creation +-- 7-Dec-2011 Fix JSON in STATUS output +-- +---------------------------------------------------------------- + +require "rest_sup" + +print("--PROGRAM_MAIN LOADED--") + +SHOW_LIST = nil -- Main SHOW list +SHOW_DATA = nil -- Current show data +SHOW_MUSIC = nil -- Current show music data +SHOW_PGM = nil -- Current show program +SHOW_READY = nil -- Not nil when ready, when running == MUSIC PID + +---------------------------------------------------------------- +-- CREATE/DELETE NETWORK +---------------------------------------------------------------- + +---------------------------------------------------------------- +-- REST PAGES +---------------------------------------------------------------- + +------------------------------------------------------------------------------------ +-- +-- program_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function program_handler(rqst,htype,url,n,al) + local out + + rest_handler(rqst,htype,url,n,program_actions) +end + +---------------------------------------------------------------- +-- COMMANDS -- +---------------------------------------------------------------- + +------------------------------------------------------------------------------------ +-- +-- program_list_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- This program reads the SHOW_LCN/shows.json file (if present) +-- and returns it as data to the caller. +-- +------------------------------------------------------------------------------------ + +function program_list_handler(rqst,type,url,n,al) + local out={} + local data = ""; + local show_file + local show_music + + print("-- Enterning SET --") + + SHOW_READY = nil + + if( htype == HTTP_POST and SHOW_LCN ~= nil ) + then + name = SHOW_LCN .. "/shows.json" + + -- Read in the file + + data = pgm_read_file( name ); + + -- Now if DATA ~= nil parse the input data + + if( data ~= nil ) + then + -- Parse file and make show list + SHOW_LIST = parsers.json( data ) + if( SHOW_LIST ~= nil and + SHOW_LIST.JOBJ ~= nil and + SHOW_LIST.JOBJ.shows ~= nil and + SHOW_LIST.JOBJ.shows.ARRAY) + then + SHOW_LIST = SHOW_LIST.JOBJ.shows.ARRAY + else + SHOW_LIST = nil + end + else + -- Failure, return nothing + data = "{}" + SHOW_LIST = {}; + end + + -- Check result and clear data if bad + + if( SHOW_LIST == nil or SHOW_LIST.n == nil ) + then + data = "{}" + SHOW_LIST.n = {} + end + else + data = "{}" + end + + -- return the list + + rqst:close( data ) +end + +------------------------------------------------------------------------------------ +-- +-- program_set_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- URL - firenet/program/set/# <- This is selected show number +-- 2 3 4 5 +-- +------------------------------------------------------------------------------------ + +function program_set_handler(rqst,type,url,n,al) + local out={} + local data + local show_file + local show_music + local show + + print("-- Enterning SET --") + + SHOW_READY = nil + + if( htype == HTTP_POST and SHOW_LCN ~= nil ) + then + show = tonumber(url[5]) + + -- Is this a good number ? + + if( show ~= nil ) + then + if( SHOW_LIST[show] ~= nil ) + then + + -- Build the show file name & get the data + + show_file = SHOW_LCN .. "/" .. SHOW_LIST[show].JOBJ.file + + data = pgm_read_file( show_file ) + if data ~= nil + then + -- Parse the show data + + SHOW_DATA = parsers.json(data ) + if SHOW_DATA ~= nil and SHOW_DATA.JOBJ ~= nil + then + SHOW_DATA = SHOW_DATA.JOBJ + + table.foreach(SHOW_DATA,print) + + SHOW_MUSIC = SHOW_LCN .. "/" .. SHOW_DATA.music + data = io.open(SHOW_MUSIC,"r") + if( data ~= nil ) + then + data:close() + + table.foreach(SHOW_DATA,print) + table.foreach(SHOW_DATA.program,print) + SHOW_PGM = SHOW_DATA.program.ARRAY + table.foreach(SHOW_PGM,print) + + out.STATUS = "OK" + else + out.STATUS = "NO MUSIC" + end + else + out.STATUS = "BAD SHOW FILE" + end + else + out.STATUS = "NO SHOW FILE" + end + else + out.STATUS = "BAD SHOW #" + end + else + out.STATUS = "NO DATA" + end + else + out.STATUS = "NO SETUP" + end + + -- return the status + + out = json_kvp(out) + rqst:close( out ) +end + +------------------------------------------------------------------------------------ +-- +-- program_pgm_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- URL - firenet/program/pgm +-- 2 3 4 +-- +------------------------------------------------------------------------------------ + +function program_pgm_handler(rqst,type,url,n,al) + local out={} + local packet = {} + local run = 1 + local ch + + print("-- Enterning PGM --") + + SHOW_READY = nil + + if( htype == HTTP_POST ) + then + if( SHOW_MUSIC ~= nil ) + then + if( SHOW_PGM ~= nil ) + then + -- Now walk through and program nodes + + for i = 1, SHOW_PGM.n + do + -- Build the packet + packet = {} + packet.TO = tonumber(SHOW_PGM[i].JOBJ.node) + ch = tonumber(SHOW_PGM[i].JOBJ.ch) - 1 + packet.DATA = string.format("P%d%d",ch,SHOW_PGM[i].JOBJ.delay) + + -- SWR and look at result + packet = swr_firenet(packet,2000,FNET) + if( packet ~= nil ) + then + if( packet.DATA ~= "RP" ) + then + run = nil + out.STATUS = string.format("FAILURE @ [%s] [%s]", + SHOW_PGM[i].JOBJ.node, + SHOW_PGM[i].JOBJ.ch) + break; + end + else + out.STATUS = string.format("COM FAIL @ [%s] [%s]", + SHOW_PGM[i].JOBJ.node, + SHOW_PGM[i].JOBJ.ch) + print(out.STATUS) + run = nil + break + end + + -- Did program run OK + + if( run ~= nil ) + then + out.STATUS = "OK" + SHOW_READY = 1 + end + end + else + out.STATUS = "NO PROGRAM" + end + else + out.STATUS = "NO MUSIC" + end + else + out.STATUS = "NOT POST" + end + + -- return the status + + out = json_kvp(out) + rqst:close( out ) +end + +------------------------------------------------------------------------------------ +-- +-- program_start_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- URL - firenet/program/start +-- 2 3 4 +-- +------------------------------------------------------------------------------------ + +function program_start_handler(rqst,type,url,n,al) + local out={} + local packet = {} + local run = 1 + local ch + + print("-- Enterning START --") + + if( htype == HTTP_POST ) + then + if( SHOW_MUSIC ~= nil ) + then + if( SHOW_PGM ~= nil ) + then + if( SHOW_READY ~= nil ) + then + -- Set out START packet + + packet.TO = 0 + packet.DATA = "ZP" + + FNET:write( packet ) + SHOW_READY = play_file( SHOW_MUSIC ) + + out.STATUS = "OK" + else + out.STATUS = "SHOW NOT READY" + end + else + out.STATUS = "NO PROGRAM" + end + else + out.STATUS = "NO MUSIC" + end + else + out.STATUS = "NOT POST" + end + + -- return the status + + out = json_kvp(out) + rqst:close( out ) +end + +------------------------------------------------------------------------------------ +-- +-- program_abort_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- URL - firenet/program/abort +-- 2 3 4 +-- +------------------------------------------------------------------------------------ + +function program_abort_handler(rqst,type,url,n,al) + local out={} + local packet = {} + local run = 1 + local ch + + print("-- Enterning ABORT --") + + if( htype == HTTP_POST ) + then + if( SHOW_MUSIC ~= nil ) + then + if( SHOW_PGM ~= nil ) + then + if( SHOW_READY ~= nil ) + then + -- Set out ABORT packet + + packet.TO = 0 + packet.DATA = "X" + FNET:write( packet ) + + -- Stop music + SHOW_READY = play_file_stop( SHOW_READY ) + + -- Make show NOT READY + + SHOW_READY = nil + SHOW_PGM = nil + SHOW_MUSIC = nil + out.STATUS = "OK" + else + out.STATUS = "SHOW NOT READY" + end + else + out.STATUS = "NO PROGRAM" + end + else + out.STATUS = "NO MUSIC" + end + else + out.STATUS = "NOT POST" + end + + -- return the status + + out = json_kvp(out) + rqst:close( out ) +end + +------------------------------------------------------------------------------------ +-- +-- program_status_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- URL - firenet/program/status +-- 2 3 4 +-- +------------------------------------------------------------------------------------ + +function program_status_handler(rqst,type,url,n,al) + local out={} + local packet = {} + local first = -1 + local ch + + print("-- Enterning STATUS --") + + if( htype == HTTP_POST ) + then + if( SHOW_MUSIC ~= nil ) + then + if( SHOW_PGM ~= nil ) + then + if( SHOW_READY ~= nil ) + then + out = "{ \"STATUS\" : \"OK\" \n" + first = 1 + while( 1 ) + do + packet = FNET:read() + if( packet == nil ) + then + break + end + + -- Is this an RP packet, if not discard + ch = packet.DATA + if( ch ~= nil and string.len(packet.DATA) == 3 ) + then + if( string.sub(ch,1,2) == "RP" ) + then + ch = string.sub(ch,3) + else + ch = nil + end + else + ch = nil + end + + -- Only make output if we have a channel + + if( ch ~= nil ) + then + if( first == 1 ) + then + out = out .. ",\n\"FIRED\" : [\n" + -- Add first to the list (with no leading ,) + out = out .. string.format("{ \"FROM\" : \"%s\", \"CH\" : \"%s\" }",packet.FROM,ch) + first = 2 + else + + -- Add rest to list with leading comma + + out = out .. string.format(",\n{ \"FROM\" : \"%s\", \"CH\" : \"%s\" }",packet.FROM,ch) + end + end + end + + -- Close the output stuff + + if( first == 2 ) + then + out = out .. "\n]\n" + end + out = out .. "}\n" + else + out.STATUS = "SHOW NOT READY" + end + else + out.STATUS = "NO PROGRAM" + end + else + out.STATUS = "NO MUSIC" + end + else + out.STATUS = "NOT POST" + end + + -- return the status, note can be a table JSON string + + if( first == -1 ) + then + out = json_kvp(out) + end + print("STATUS RQ",out) + rqst:close( out ) +end + + + +---------------------------------------------------------------- +-- SUPPORT -- +---------------------------------------------------------------- + +------------------------------------------------------------------------------------ +-- +-- pgm_read_file( name ) +-- +-- INPUT: name - File path +-- +-- OUTPUT: data returned from file or nil +-- +------------------------------------------------------------------------------------ + +function pgm_read_file( name ) + local data = "" + local line + + -- File exists ? + + line = io.open(name,"r") + if( line ~= nil ) + then + line:close() + + -- Read the data + + for line in io.lines(name) + do + data = data .. line + end + + -- Check if we got something + + if string.len(data) == 0 + then + data = nil + end + else + data = nil + end + + return data +end + +---------------------------------------------------------------- +-- STRUCTURE -- +---------------------------------------------------------------- + +-- Build action list for program actions + +program_actions = {} +program_actions.LIST = program_list_handler +program_actions.SET = program_set_handler +program_actions.PGM = program_pgm_handler +program_actions.START = program_start_handler +program_actions.ABORT = program_abort_handler +program_actions.STATUS = program_status_handler + ADDED Site/rest/rest_sup.lua Index: Site/rest/rest_sup.lua ================================================================== --- Site/rest/rest_sup.lua +++ Site/rest/rest_sup.lua @@ -0,0 +1,136 @@ +------------------------------------------------------------------------------------ +-- +-- REST SUPPORT CODE +-- +-- This code is used to support the REST traverse of the virtual website +-- When a request is received we have: +-- RQST - Request structure +-- TYPE - Get(3) or Post (6) +-- Thes available from the request +-- URL - Path to request parsed as a lua list elements 1 - n +-- DATA - JSON data structure accompaning POST request +-- +-- The request is handled by rest_handler() which is passed +-- request,type,url and action_list +-- +-- Action list is a Lua list indexed by URL and the value is the +-- routine to call +-- +-- 26-Nov-2010 Update json_kvp function to put ,'s after KVP's +-- +------------------------------------------------------------------------------------ + +HTTP_GET = 3 -- Important HTTP types +HTTP_POST = 6 + +HTTP_NOT_FOUND = "404 PAGE

    404 Page NOT FOUND

    " +print("--REST_SUP LOADED--") + +------------------------------------------------------------------------------------ +-- +-- rest_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function rest_handler(rqst,htype,url,n,al) + + local out + local fcn = nil + + -- (1) Do we have a path to the next + + out = url[n] + print(n) + print("Searching for ",url[n]) + + if( out ~= nil ) + then + fcn = al[out] + end + + if( fcn ~= nil ) + then + -- Call next function level + + fcn( rqst,htype,url,n+1,al ) + else + -- FAILURE return page not found + + rqst:close(HTTP_NOT_FOUND) + end +end + +------------------------------------------------------------------------------------ +-- +-- jscon_kvp(list) +-- +-- INPUT: list - Lua table +-- +-- OUTPUT: Table output as a JSON KVP object +-- { "list key 1" : "list value 1" .....} +-- +------------------------------------------------------------------------------------ + +function json_kvp(list) + local out = nil + local key,value + local part + local pass_one = 1 + + -- If not a list then bail + + if( type(list) == "table" ) + then + + -- Build the start of the output + + out = "{ " + + -- Iterate through the list + + for key,value in next, list + do + if( type(value) == "number" ) + then + value = tostring(value) + end + + if( type(key) == "number" ) + then + key = tostring(key) + end + + if( type(value) == "string" ) + then + out = out .. string.format("\"%s\" : \"%s\", ",key,value) + else + if( type(value) == "table" ) + then + part = json_kvp( value ) + out = out .. string.format("\"%s\" : %s, ",key,part) + end + end + end + + -- At this point remove the trailing "," + + out = string.sub(out,1,string.len(out)-2) + out = out .. " " + + -- Close the JSON object + + out = out .. " } " + end + + return out +end + + ADDED Site/rest/tester.lua Index: Site/rest/tester.lua ================================================================== --- Site/rest/tester.lua +++ Site/rest/tester.lua @@ -0,0 +1,48 @@ +------------------------------------------------------------------------------------ +-- +-- REST - LEVEL 0 - Handles site following REST/ +-- +-- +-- This handles the top level +------------------------------------------------------------------------------------ +-- First set up require path + + +path = "../../site/rest" -- This is the relationship of the + -- Executible to where the scripts + -- are kept + +-- Set that into the package search path +_G.package.path = path .. "/?.lua;" .. _G.package.path + +-- Now all modules will load with just a simple require + name + +require "rest_sup" + +l1 = {} +l1.sublist = "subvalue" +l1.subvalue1 = "subvalue1" + +list = { } +list.key = "value" +list.key1 = "value1" +list.key2 = "value2" +list.tbl = l1 +list.num = 123 +list[1] = "test" +list[2] = "val" + +print("-- Input List --") +table.foreach(list,print) +print("----------------") + +out = json_kvp(list) + +print("--- Output JSON --") +print(out) +print("------------------") + +parse = parsers.json(out) +print(parse) + + ADDED Site/rest/wabco.lua Index: Site/rest/wabco.lua ================================================================== --- Site/rest/wabco.lua +++ Site/rest/wabco.lua @@ -0,0 +1,257 @@ +------------------------------------------------------------------------------------ +-- +-- REST - LEVEL 1 - Handles site following REST/WABCO/.... +-- +-- +-- This handles the WABCO commands +-- PLOT - On GET returns { "line1" : "value" .... } +-- +-- 3-Mar-2011 Initial version +-- 5-Mar-2011 [35b17f8dc3] Change to use POST in PLOT data cmd +-- 7-Mar-2011 Change to send data as part of the URI as a JSON request +-- 8-Mar-2011 Change for better simulation +-- 6-Nov-2011 Update to make stand alone startup and run as main script. +-- +------------------------------------------------------------------------------------ + +------------------------------------------------------------------------------- +-- SUPPORT FUNCTIONS +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- +-- +-- flag_srch( argv,flag,data ) - Find the port in the argument list +-- +-- INPUT: argv - Program argument list +-- flag - Look for this string (i.e. -flag) in list +-- data - If non-nil get the field following flag slot +-- +-- OUTPUT If data = nil return nil if flag not found and 1 if found +-- If data <> nil return nil if flag not found or next field if found +-- +------------------------------------------------------------------------------- + +function flag_srch( argv,flag,data ) + local rtnval = nil + + -- Loop over the list and check each item for match + + for i=1,table.getn(argv) + do + if( flag == argv[i] ) + then + -- Found so two cases + -- (a) If data == nil then return 1 + -- (b) If data != nil then return argv[i+1] + + if( data == nil ) + then + rtnval = 1 + else + rtnval = argv[i+1] + end + + -- In either case just break out + + break + end + end + + return( rtnval ) +end + +------------------------------------------------------------------------------- +-- MAIN PROGRAM +------------------------------------------------------------------------------- + +-- Pull up items from command line +-- NOTE THESE ARE GLOBALS FOR THE REST +-- OF THE SYSTEM + +REST_LCN = flag_srch( arg,"-rest",1 ) +HTTP_LCN = flag_srch(arg,"-http",1) +SHOW_LCN = flag_srch(arg,"-show",1) + +if( REST_LCN == nil ) +then + print("SYNTAX ERROR: -rest NOT GIVEN") + print("Shutting down") + os.exit(-1) +end + +if( HTTP_LCN == nil ) +then + print("SYNTAX ERROR: -http NOT GIVEN") + print("Shutting down") + os.exit(-1) +end + +if( SHOW_LCN == nil ) +then + print("WARNING: -show NOT GIVEN") + print("Automated Shows Disabled") +end + +-- Set that into the package search path +_G.package.path = REST_LCN .. "/?.lua;" .. _G.package.path + +require "rest_sup" + +MAX_PSI = 50 -- Max pressure seen +RUN = 1 +print("--WABCO LOADED--") + +------------------------------------------------------------------------------------ +-- +-- wabco_handler(rqst,type,url,n,al) +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +------------------------------------------------------------------------------------ + +function wabco_handler(rqst,htype,url,n,al) + local out + + print("-- Entering WABCO --") + + rest_handler(rqst,htype,url,n,wabco_actions) +end + +------------------------------------------------------------------------------------ +-- +-- plot_handler(rqst,type,url,n,al) - Shutdown system if requested +-- +-- INPUT: rqst - HTTP request +-- htype - Type of request +-- url - Path of request, look at last link for stop +-- n - Position on path to consider +-- al - Action list +-- +-- OUTPUT: NONE +-- +-- NOTE: Data request as last part of URI PLOT/{ "W" : "##" } +-- +------------------------------------------------------------------------------------ + +function plot_handler(rqst,htype,url,n,al) + local out + local data + local w + local pi=3.1415926 + local l1,l2,l3,l4 + + -- Is this a POST, if so look at next command + + if( htype == HTTP_POST ) + then + + print("-- Entering PLOT --") + + if( url ~= nil and url[3] ~= nil ) + then + jdata = url[3] + else + jdata = "{ \"w\" : \"0\" }" + end + print(jdata) -- Show received data + + + -- Parse the string to just extract the JSON + + w = string.find(jdata,"}") + jdata = string.sub(jdata,1,w+1) + data = parsers.json(jdata) + + -- Handle the data + + if( data ~= nil ) + then + + if( data.JOBJ ~= nil ) + then + if( data.JOBJ.W ~= nil ) + then + data = tonumber(data.JOBJ.W) + + -- Next calculate the PI fraction + + w = data * pi/20 + + -- Now calculate the sines + + l1 = math.sin(w + 0.9*pi) + 1 + l2 = math.sin(w + 0.5*pi) + 1 + l3 = math.sin(w + 1.2*pi) + 1 + l4 = math.sin(w + 1.5*pi) + 1 + + l1 = l1 * MAX_PSI + l2 = l2 * MAX_PSI + l3 = l3 * MAX_PSI + l4 = l4 * MAX_PSI + + -- Build the response message + + out = string.format("{ \"LINE1\" : \"%6.4f\",\"LINE2\" : \"%6.4f\",\"LINE3\" : \"%6.4f\",\"LINE4\" : \"%6.4f\" }",l1,l2,l3,l4) + print(out) + end + end + end + else + out = "{ \"WABCO\" : \"NO POST\" }" + end + + -- Close the request + + rqst:close(out) + +end + +---------------------------------------------------------------- +-- STRUCTURE +---------------------------------------------------------------- +-- Build action list for admin actions + +wabco_actions = {} +wabco_actions.PLOT = plot_handler + +-- (1) Open channel and start HTTP + +val = http.start(8081,HTTP_LCN,"rest") +if( val ~= nil ) +then + -- Open FIRENET, if fail then bail + + while( RUN ) + do + -- Wait for data + + h = http.open() + if( h ~= nil ) + then + ------------------------------ + print("*** DATA RECEIVED ***") + url,htype = h:url() + if( url ~= nil ) + then + print("HTTP TYPE: ",htype); + table.foreach(url,print) + + -- Handle the request + + rest_handler(h,htype,url,2,wabco_actions) + timer.sleep(5) -- Let the other threads run + end + ------------------------------ + end + end +else + print("** Failed to open HTTP Server **") +end + +print("-- END RUN -- ") + ADDED Site/webstart.sh Index: Site/webstart.sh ================================================================== --- Site/webstart.sh +++ Site/webstart.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# Startup for FIRENET +# Simulated network with 10 nodes + +# Show addresses + +ifconfig | grep inet + +# Start'er up + +../build/Debug\ INTEL/firenet -c rest/main5010.lua -p X -n 10 -rest rest -http Site_J -show ../Shows + + ADDED Site/webstart_real.sh Index: Site/webstart_real.sh ================================================================== --- Site/webstart_real.sh +++ Site/webstart_real.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# Startup for FIRENET +# With real network + +# Show addresses + +ifconfig | grep inet + +# Start'er up + +../build/Debug\ INTEL/firenet -c rest/main.lua -p 1 -log log.txt -rest rest -http Site_J -show ../Shows + + Index: Tools/AVRpgmr/.DS_Store ================================================================== --- Tools/AVRpgmr/.DS_Store +++ Tools/AVRpgmr/.DS_Store cannot compute difference between binary files Index: Tools/AVRpgmr/pgmr.xcodeproj/project.pbxproj ================================================================== --- Tools/AVRpgmr/pgmr.xcodeproj/project.pbxproj +++ Tools/AVRpgmr/pgmr.xcodeproj/project.pbxproj @@ -160,13 +160,19 @@ /* End PBXNativeTarget section */ /* Begin PBXProject section */ 08FB7793FE84155DC02AAC07 /* Project object */ = { isa = PBXProject; + attributes = { + }; buildConfigurationList = 38FBA1E5099828CD0087E94A /* Build configuration list for PBXProject "pgmr" */; compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; hasScannedForEncodings = 1; + knownRegions = ( + en, + ); mainGroup = 08FB7794FE84155DC02AAC07 /* pgmr */; projectDirPath = ""; projectRoot = ""; targets = ( 8DD76FA90486AB0100D96B5E /* pgmr */, @@ -197,11 +203,13 @@ GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; INSTALL_PATH = "$(HOME)/bin"; + MACOSX_DEPLOYMENT_TARGET = 10.10; PRODUCT_NAME = pgmr; + SDKROOT = macosx; ZERO_LINK = NO; }; name = Development; }; 38FBA1E3099828CD0087E94A /* Deployment */ = { @@ -210,11 +218,13 @@ COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = /Users/jim/Dev/AVR/arvpgmr/pgmr; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; INSTALL_PATH = "$(HOME)/bin"; + MACOSX_DEPLOYMENT_TARGET = 10.10; PRODUCT_NAME = pgmr; + SDKROOT = macosx; ZERO_LINK = NO; }; name = Deployment; }; 38FBA1E4099828CD0087E94A /* Default */ = { @@ -221,11 +231,13 @@ isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = /Users/jim/Dev/AVR/arvpgmr/pgmr; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; INSTALL_PATH = "$(HOME)/bin"; + MACOSX_DEPLOYMENT_TARGET = 10.10; PRODUCT_NAME = pgmr; + SDKROOT = macosx; }; name = Default; }; 38FBA1E6099828CD0087E94A /* Development */ = { isa = XCBuildConfiguration; ADDED Tools/Bin/MsgTest Index: Tools/Bin/MsgTest ================================================================== --- Tools/Bin/MsgTest +++ Tools/Bin/MsgTest cannot compute difference between binary files ADDED Tools/MsgTest/MsgTest.1 Index: Tools/MsgTest/MsgTest.1 ================================================================== --- Tools/MsgTest/MsgTest.1 +++ Tools/MsgTest/MsgTest.1 @@ -0,0 +1,79 @@ +.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples. +.\"See Also: +.\"man mdoc.samples for a complete listing of options +.\"man mdoc for the short list of editing options +.\"/usr/share/misc/mdoc.template +.Dd 1/2/11 \" DATE +.Dt MsgTest 1 \" Program name and manual section number +.Os Darwin +.Sh NAME \" Section Header - required - don't modify +.Nm MsgTest, +.\" The following lines are read in generating the apropos(man -k) database. Use only key +.\" words here as the database is built based on the words here and in the .ND line. +.Nm Other_name_for_same_program(), +.Nm Yet another name for the same program. +.\" Use .Nm macro to designate other names for the documented program. +.Nd This line parsed for whatis database. +.Sh SYNOPSIS \" Section Header - required - don't modify +.Nm +.Op Fl abcd \" [-abcd] +.Op Fl a Ar path \" [-a path] +.Op Ar file \" [file] +.Op Ar \" [file ...] +.Ar arg0 \" Underlined argument - use .Ar anywhere to underline +arg2 ... \" Arguments +.Sh DESCRIPTION \" Section Header - required - don't modify +Use the .Nm macro to refer to your program throughout the man page like such: +.Nm +Underlining is accomplished with the .Ar macro like this: +.Ar underlined text . +.Pp \" Inserts a space +A list of items with descriptions: +.Bl -tag -width -indent \" Begins a tagged list +.It item a \" Each item preceded by .It macro +Description of item a +.It item b +Description of item b +.El \" Ends the list +.Pp +A list of flags and their descriptions: +.Bl -tag -width -indent \" Differs from above in tag removed +.It Fl a \"-a flag as a list item +Description of -a flag +.It Fl b +Description of -b flag +.El \" Ends the list +.Pp +.\" .Sh ENVIRONMENT \" May not be needed +.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1 +.\" .It Ev ENV_VAR_1 +.\" Description of ENV_VAR_1 +.\" .It Ev ENV_VAR_2 +.\" Description of ENV_VAR_2 +.\" .El +.Sh FILES \" File used or created by the topic of the man page +.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact +.It Pa /usr/share/file_name +FILE_1 description +.It Pa /Users/joeuser/Library/really_long_file_name +FILE_2 description +.El \" Ends the list +.\" .Sh DIAGNOSTICS \" May not be needed +.\" .Bl -diag +.\" .It Diagnostic Tag +.\" Diagnostic informtion here. +.\" .It Diagnostic Tag +.\" Diagnostic informtion here. +.\" .El +.Sh SEE ALSO +.\" List links in ascending order by section, alphabetically within a section. +.\" Please do not reference files that do not exist without filing a bug report +.Xr a 1 , +.Xr b 1 , +.Xr c 1 , +.Xr a 2 , +.Xr b 2 , +.Xr a 3 , +.Xr b 3 +.\" .Sh BUGS \" Document known, unremedied bugs +.\" .Sh HISTORY \" Document history if command behaves in a unique manner ADDED Tools/MsgTest/MsgTest.xcodeproj/jim.mode1v3 Index: Tools/MsgTest/MsgTest.xcodeproj/jim.mode1v3 ================================================================== --- Tools/MsgTest/MsgTest.xcodeproj/jim.mode1v3 +++ Tools/MsgTest/MsgTest.xcodeproj/jim.mode1v3 @@ -0,0 +1,1447 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 38FEDEAA12D0ADC400ED9E77 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + + XCObserverAutoDisconnectKey + + XCObserverDefintionKey + + XCObserverFactoryKey + XCPerspectivesSpecificationIdentifier + XCObserverGUIDKey + XCObserverProjectIdentifier + XCObserverNotificationKey + PBXStatusBuildStateMessageNotification + XCObserverTargetKey + XCMainBuildResultsModuleGUID + XCObserverTriggerKey + awakenModuleWithObserver: + XCObserverValidationKey + + + + OpenEditors + + + Content + + PBXProjectModuleGUID + 38E2DFB912E590810097841A + PBXProjectModuleLabel + mac.h + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 38E2DFBA12E590810097841A + PBXProjectModuleLabel + mac.h + _historyCapacity + 0 + bookmark + 38E2DFBD12E590990097841A + history + + 38E2DFB512E590660097841A + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {634, 504}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + -707 255 634 545 -1280 -224 1280 1024 + + + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-combo-popup + buildOrClean + build-and-go + go + debugger-enable-breakpoints + servicesModulebreakpoints + com.apple.ide.PBXToolbarStopButton + servicesModulefind + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 08FB7794FE84155DC02AAC07 + 08FB7795FE84155DC02AAC07 + 38FEDEE912D0B20300ED9E77 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 6 + 3 + 1 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 664}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 682}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 587 -3 617 723 0 0 1280 778 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {409, 0}} + RubberWindowFrame + 587 -3 617 723 0 0 1280 778 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 5}, {409, 677}} + RubberWindowFrame + 587 -3 617 723 0 0 1280 778 + + Module + XCDetailModule + Proportion + 677pt + + + Proportion + 409pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 38E2DFB712E590810097841A + 1CE0B1FE06471DED0097A5F4 + 38E2DFB812E590810097841A + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 317034649.214715 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 38FEDEAE12D0ADCF00ED9E77 + 38E2DFB912E590810097841A + /Users/jschimpf/Public/Firenet/Tools/MsgTest/MsgTest.xcodeproj + + WindowString + 587 -3 617 723 0 0 1280 778 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {500, 218}} + RubberWindowFrame + 236 210 500 500 0 0 1280 778 + + Module + PBXNavigatorGroup + Proportion + 218pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1010 + + GeometryConfiguration + + Frame + {{0, 223}, {500, 236}} + RubberWindowFrame + 236 210 500 500 0 0 1280 778 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 459pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 38FEDEAE12D0ADCF00ED9E77 + 38E2DFBC12E590810097841A + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowString + 236 210 500 500 0 0 1280 778 + WindowToolGUID + 38FEDEAE12D0ADCF00ED9E77 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {361, 326}} + {{361, 0}, {431, 326}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {792, 326}} + {{0, 326}, {792, 345}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {792, 671}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 201 + + Frame + {{361, 0}, {431, 326}} + RubberWindowFrame + -851 179 792 712 -1024 123 1024 768 + + RubberWindowFrame + -851 179 792 712 -1024 123 1024 768 + + Module + PBXDebugSessionModule + Proportion + 671pt + + + Proportion + 671pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 38FEDEC812D0AFC200ED9E77 + 1C162984064C10D400B95A72 + 38FEDEC912D0AFC200ED9E77 + 38FEDECA12D0AFC200ED9E77 + 38FEDECB12D0AFC200ED9E77 + 38FEDECC12D0AFC200ED9E77 + 38FEDECD12D0AFC200ED9E77 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + -851 179 792 712 -1024 123 1024 768 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {650, 209}} + RubberWindowFrame + 419 292 650 250 0 0 1280 1002 + + Module + PBXDebugCLIModule + Proportion + 209pt + + + Proportion + 209pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 1C78EAAD065D492600B07095 + 38FEDECE12D0AFC200ED9E77 + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 419 292 650 250 0 0 1280 1002 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.breakpoints + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + -830 459 744 409 -1024 123 1024 768 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + -830 459 744 409 -1024 123 1024 768 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + + TableOfContents + + 38FEDF2112D0E1B500ED9E77 + 38FEDF2212D0E1B500ED9E77 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + -830 459 744 409 -1024 123 1024 768 + WindowToolGUID + 38FEDF2112D0E1B500ED9E77 + WindowToolIsVisible + + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + ADDED Tools/MsgTest/MsgTest.xcodeproj/jim.pbxuser Index: Tools/MsgTest/MsgTest.xcodeproj/jim.pbxuser ================================================================== --- Tools/MsgTest/MsgTest.xcodeproj/jim.pbxuser +++ Tools/MsgTest/MsgTest.xcodeproj/jim.pbxuser @@ -0,0 +1,217 @@ +// !$*UTF8*$! +{ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + activeBuildConfigurationName = Release; + activeExecutable = 38FEDEA512D0ADBD00ED9E77 /* MsgTest */; + activeTarget = 8DD76FA90486AB0100D96B5E /* MsgTest */; + addToTargets = ( + 8DD76FA90486AB0100D96B5E /* MsgTest */, + ); + breakpoints = ( + 38FEDF2F12D0E6A000ED9E77 /* packet.c:147 */, + ); + codeSenseManager = 38FEDEAC12D0ADC400ED9E77 /* Code sense */; + executables = ( + 38FEDEA512D0ADBD00ED9E77 /* MsgTest */, + ); + perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 198, + 20, + 99, + 99, + 29, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 300, + 60, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXErrorsWarningsDataSource_TypeID, + PBXErrorsWarningsDataSource_MessageID, + PBXErrorsWarningsDataSource_LocationID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 170, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID; + PBXFileTableDataSourceColumnWidthsKey = ( + 200, + 184, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFindDataSource_MessageID, + PBXFindDataSource_LocationID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 317034586; + PBXWorkspaceStateSaveDate = 317034586; + }; + perUserProjectItems = { + 38E2DFB512E590660097841A /* PBXBookmark */ = 38E2DFB512E590660097841A /* PBXBookmark */; + 38E2DFBD12E590990097841A /* PBXTextBookmark */ = 38E2DFBD12E590990097841A /* PBXTextBookmark */; + }; + sourceControlManager = 38FEDEAB12D0ADC400ED9E77 /* Source Control */; + userBuildSettings = { + }; + }; + 08FB7796FE84155DC02AAC07 /* main.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {587, 686}}"; + sepNavSelRange = "{60, 197}"; + sepNavVisRange = "{39, 723}"; + sepNavWindowFrame = "{{472, 177}, {634, 601}}"; + }; + }; + 38E2DFB512E590660097841A /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 38FEDEEA12D0B22100ED9E77 /* mac.h */; + }; + 38E2DFBD12E590990097841A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 38FEDEEA12D0B22100ED9E77 /* mac.h */; + name = "mac.h: 34"; + rLen = 8; + rLoc = 1083; + rType = 0; + vrLen = 1108; + vrLoc = 486; + }; + 38FEDEA512D0ADBD00ED9E77 /* MsgTest */ = { + isa = PBXExecutable; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 1; + configStateDict = { + }; + customDataFormattersEnabled = 1; + dataTipCustomDataFormattersEnabled = 1; + dataTipShowTypeColumn = 1; + dataTipSortType = 0; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = MsgTest; + savedGlobals = { + }; + showTypeColumn = 0; + sourceDirectories = ( + ); + variableFormatDictionary = { + }; + }; + 38FEDEAB12D0ADC400ED9E77 /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; + }; + }; + 38FEDEAC12D0ADC400ED9E77 /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 38FEDEDE12D0B09200ED9E77 /* packet.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {587, 546}}"; + sepNavSelRange = "{1034, 24}"; + sepNavVisRange = "{119, 948}"; + sepNavWindowFrame = "{{355, 174}, {634, 601}}"; + }; + }; + 38FEDEDF12D0B09200ED9E77 /* packet.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {587, 3234}}"; + sepNavSelRange = "{2066, 0}"; + sepNavVisRange = "{0, 1079}"; + sepNavWindowFrame = "{{488, 177}, {634, 601}}"; + }; + }; + 38FEDEEA12D0B22100ED9E77 /* mac.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {587, 1372}}"; + sepNavSelRange = "{1083, 8}"; + sepNavVisRange = "{486, 1108}"; + sepNavWindowFrame = "{{-707, 199}, {634, 601}}"; + }; + }; + 38FEDF2F12D0E6A000ED9E77 /* packet.c:147 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = 38FEDEDF12D0B09200ED9E77 /* packet.c */; + functionName = "packet_check()"; + hitCount = 4; + ignoreCount = 0; + lineNumber = 147; + location = MsgTest; + modificationTime = 315680751.887698; + originalNumberOfMultipleMatches = 0; + state = 2; + }; + 8DD76FA90486AB0100D96B5E /* MsgTest */ = { + activeExec = 0; + executables = ( + 38FEDEA512D0ADBD00ED9E77 /* MsgTest */, + ); + }; +} ADDED Tools/MsgTest/MsgTest.xcodeproj/project.pbxproj Index: Tools/MsgTest/MsgTest.xcodeproj/project.pbxproj ================================================================== --- Tools/MsgTest/MsgTest.xcodeproj/project.pbxproj +++ Tools/MsgTest/MsgTest.xcodeproj/project.pbxproj @@ -0,0 +1,230 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 38FEDEE012D0B09200ED9E77 /* packet.c in Sources */ = {isa = PBXBuildFile; fileRef = 38FEDEDF12D0B09200ED9E77 /* packet.c */; }; + 8DD76FAC0486AB0100D96B5E /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* main.c */; settings = {ATTRIBUTES = (); }; }; + 8DD76FB00486AB0100D96B5E /* MsgTest.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6A0FF2C0290799A04C91782 /* MsgTest.1 */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76FAF0486AB0100D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 8; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + 8DD76FB00486AB0100D96B5E /* MsgTest.1 in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 08FB7796FE84155DC02AAC07 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + 38FEDEDE12D0B09200ED9E77 /* packet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = packet.h; sourceTree = ""; }; + 38FEDEDF12D0B09200ED9E77 /* packet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = packet.c; sourceTree = ""; }; + 38FEDEEA12D0B22100ED9E77 /* mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mac.h; sourceTree = SOURCE_ROOT; }; + 8DD76FB20486AB0100D96B5E /* MsgTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = MsgTest; sourceTree = BUILT_PRODUCTS_DIR; }; + C6A0FF2C0290799A04C91782 /* MsgTest.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = MsgTest.1; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76FAD0486AB0100D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* MsgTest */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + C6A0FF2B0290797F04C91782 /* Documentation */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = MsgTest; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 08FB7796FE84155DC02AAC07 /* main.c */, + 38FEDEE912D0B20300ED9E77 /* Support */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76FB20486AB0100D96B5E /* MsgTest */, + ); + name = Products; + sourceTree = ""; + }; + 38FEDEE912D0B20300ED9E77 /* Support */ = { + isa = PBXGroup; + children = ( + 38FEDEEA12D0B22100ED9E77 /* mac.h */, + 38FEDEDE12D0B09200ED9E77 /* packet.h */, + 38FEDEDF12D0B09200ED9E77 /* packet.c */, + ); + name = Support; + sourceTree = ""; + }; + C6A0FF2B0290797F04C91782 /* Documentation */ = { + isa = PBXGroup; + children = ( + C6A0FF2C0290799A04C91782 /* MsgTest.1 */, + ); + name = Documentation; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76FA90486AB0100D96B5E /* MsgTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "MsgTest" */; + buildPhases = ( + 8DD76FAB0486AB0100D96B5E /* Sources */, + 8DD76FAD0486AB0100D96B5E /* Frameworks */, + 8DD76FAF0486AB0100D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MsgTest; + productInstallPath = "$(HOME)/bin"; + productName = MsgTest; + productReference = 8DD76FB20486AB0100D96B5E /* MsgTest */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "MsgTest" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* MsgTest */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76FA90486AB0100D96B5E /* MsgTest */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76FAB0486AB0100D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8DD76FAC0486AB0100D96B5E /* main.c in Sources */, + 38FEDEE012D0B09200ED9E77 /* packet.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB928608733DD80010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = MsgTest; + SDKROOT = ""; + }; + name = Debug; + }; + 1DEB928708733DD80010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = MsgTest; + SDKROOT = ""; + }; + name = Release; + }; + 1DEB928A08733DD80010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Debug; + }; + 1DEB928B08733DD80010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "MsgTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928608733DD80010E9CD /* Debug */, + 1DEB928708733DD80010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "MsgTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928A08733DD80010E9CD /* Debug */, + 1DEB928B08733DD80010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} ADDED Tools/MsgTest/mac.h Index: Tools/MsgTest/mac.h ================================================================== --- Tools/MsgTest/mac.h +++ Tools/MsgTest/mac.h @@ -0,0 +1,103 @@ +//************************************************************************* +/* +Copyright (c) 2009. Pandora Products +*/ +//************************************************************************* +/* +* Module Name: fire_net - MAC layer of network +* +* Description: This layer will set up addressing and +* send receive packets +* +* Revision History: 28-Jul-2009 Initial version +* 11-May-2010 Convert to new network [d26a3ab0e9] +* +* This layer has two functions: +* (a) Send and receive packets (see below) +* (b) Get a node address +* +* PACKET FORMAT: +* :TO>; +* : - Packet start marker +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Up to PHY_DATA_SIZE ASCII text with , separators +* ; Packet End of Data marker +* Two byte ASCII number sum of TYPE,TO,FROM and DATA fields modulo 100 +*/ +//************************************************************************ + +#ifndef MAC_H +#define MAC_H 1 + +#define MSG_HDR ':' +#define MSG_TRLR ';' +#define DATA_SEP ',' +#define PHY_DATA_SIZE 32 // Max size of data xfered +#define CKSUM_MODULO 100 // For address calc +#define BCAST_ADDRESS 0 // Broadcast address +#define MIN_ADDRESS 1 +#define MAX_ADDRESS 32 + +#define PARENT_ADDRESS MAX_ADDRESS + +typedef enum { + NO_PACKET, + TO_PACKET_A, // Getting TO address (first byte) + TO_PACKET_B, // Getting TO address (second byte) + FROM_PACKET_A, // Getting FROM address (first byte) + FROM_PACKET_B, // Getting FROM address (second byte) + DATA_PACKET, // Getting packet data + CKSUM_PACKET_A, // Getting packet cksum (first byte) + CKSUM_PACKET_B, // Getting packet cksum (second byte) + RCVED_PACKET, // Packet ready to use + } PACKET_STATE; + +#define MAC_HANDLE_VALID 'MACH' + +typedef struct { + unsigned long valid; // Valid marker for struct + int my_address; // Local address + + // Pump processing + + void *h; // Serial handle + int phy_psn; // Current psn in phy buffer + + // Received packet + PACKET_STATE state; // State of current received packet + int to; + int from; + int len; + char data[PHY_DATA_SIZE]; // Packet data + int cksum; // Accmulated cksum + int pcksum; // Packet checksum + + } MAC_HANDLE; + + +typedef struct { + int to; + int from; + int len; + char data[PHY_DATA_SIZE]; // Packet data + + // Chunk handler + + int chunk_len; // Length of current chunk + int chunk_end; // End of current chunk + int chunk_ptr; // Psn in current chunk + } PACKET; + +void *init_mac(char *port); // Open and close of MAC layer +void close_mac( void *h ); + +void flush_mac( void *h); // Flush network +int pump_mac( void *h ); // Call to update state + +int put_mac( PACKET *pkt,void *h ); +int get_mac( PACKET *pkt,void *h ); + +int my_addr_mac( void *h ); // Return PHY address for debugging + +#endif ADDED Tools/MsgTest/main.c Index: Tools/MsgTest/main.c ================================================================== --- Tools/MsgTest/main.c +++ Tools/MsgTest/main.c @@ -0,0 +1,48 @@ +#include +#include +#include "packet.h" + +// --------------------------------------------------------------------- +/* + Message Test Generator/Receiver For FIRENET +*/ +// --------------------------------------------------------------------- + +int main (int argc, const char * argv[]) +{ + int choice = 0; + char in[266]; + int run = 1; + + printf("\nMessage Test Generator/Receiver Ver: %s %s\n",__DATE__,__TIME__); + + + while( run ) + { + printf("Option: "); + fgets(in,256,stdin); + choice = strtol(in,NULL,0); + switch( choice ) + { + case 1: // Generate a message + packet_gen(); + break; + + case 2: // Decode a message + packet_check(); + break; + + case -1: // Quit program + printf("\n** End Run **\n"); + run = 0; + break; + + default:// BAD Value + printf("\n** %d Unknown Only 1-Gen,2-Decode or -1 Quit allowed\n",choice); + printf("\n"); + break; + } + } + + return 0; +} ADDED Tools/MsgTest/packet.c Index: Tools/MsgTest/packet.c ================================================================== --- Tools/MsgTest/packet.c +++ Tools/MsgTest/packet.c @@ -0,0 +1,230 @@ +//************************************************************************* +/* +Copyright (c) 2011. Pandora Products +*/ +//************************************************************************* +/* +* Module Name: packet.c/h +* +* Description: This will generate and decode packets +* +* Revision History: 2-Jan-2011 Initial Version +* +* This module will generate and validate packets of the form: +* +* PACKET FORMAT: +* :TO>; +* : - Packet start marker +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Up to PHY_DATA_SIZE ASCII text with , separators +* ; Packet End of Data marker +* Two byte ASCII number sum of TYPE,TO,FROM and DATA fields modulo 100 +*/ +//************************************************************************ + +#include "packet.h" + +//************************************************************************* +/* +* void packet_gen(void) - Generate a packet according to user input +* +* INPUT: NONE +* +* OUTPUT: NONE +* Print packet to stdout +*/ +//************************************************************************ + +void packet_gen(void) +{ + int to = 1; + int from = 1; + int val,i; + char data[2*PHY_DATA_SIZE]; + int cksum; + char packet[2*PHY_DATA_SIZE]; + char *ptr; + + // (1) Clear out packet before start + + for( i=0; i<2*PHY_DATA_SIZE; i++) + packet[i] = '\0'; + + // (2) Get the TO and FROM address + // NOTE: If no input then use 0 + + printf("\n-- Packet Generator --\n"); + printf("TO Address: "); + fgets(data,PHY_DATA_SIZE,stdin); + if( strlen(data) > 1 ) + to = strtol(data,NULL,0); + + printf("FROM Address: "); + fgets(data,PHY_DATA_SIZE,stdin); + if( strlen(data) > 1 ) + from = strtol(data,NULL,0); + + // (2) Get packet data + + printf("Packet Data: "); + fgets(data,PHY_DATA_SIZE,stdin); + val = strlen(data); + val = val - 1; + + // If too bit cut off + if( val > PHY_DATA_SIZE ) + { + data[PHY_DATA_SIZE-1] = '\0'; + } + else + { + // Otherwise just chop off \n + if( val > 0 ) + { + data[val] = '\0'; + } + else + { + data[0] = '\0'; // No data + } + } + + // (3) Build data packet, header + + sprintf(packet,"%c%02d%02d",MSG_HDR,to,from); + + // (4) Add data + + val = strlen(data); + for( i=0; i 8 ) + { + packet[val-1] = '\0'; // Remove \n + + // (2) Take the packet apart + // Get to/from addresses + + if( packet[0] == MSG_HDR ) + { + data[0] = packet[1]; // TO address + cksum += 0xff & packet[1]; + data[1] = packet[2]; + cksum += 0xff & packet[2]; + data[2] = '\0'; + + to = strtol(data,NULL,10); + + data[0] = packet[3]; // From address + cksum += 0xff & packet[3]; + data[1] = packet[4]; + cksum += 0xff & packet[4]; + data[2] = '\0'; + + from = strtol(data,NULL,10); + + // (3) Pull the data out of the packet + + ptr = NULL; + for( i=5; packet[i]!= '\0'; i++ ) + { + if( packet[i] != MSG_TRLR ) + { + data[i-5] = packet[i]; + cksum += 0xff & packet[i]; + } + else + { + data[i-5] = '\0'; // Close packet + ptr = (char *)&packet[i+1]; // Point to cksum + break; // DONE + } + } + + // (4) If ptr still == NULL no checksum + + if( ptr == NULL ) + { + printf("** FAILURE no MSG_TRLR **\n"); + } + else + { + cksum = cksum % 100; // Form calculated cksum + val = strtol(ptr,NULL,10); // Get internal checksum + if( val == cksum ) + { + printf("-- SUCCESS PACKET OK --\n"); + printf("Packet TO: %d\n",to); + printf("Packet FROM: %d\n",from); + printf("Packet DATA: <%s>\n",data); + printf("-------------------\n\n"); + } + else + { + printf("** BAD CKSUM CALC [%d] PACKET [%d] **\n",cksum,val); + } + } + } + else + { + printf("** BAD PACKET NO HEADER : **\n"); + } + } + else + { + printf("** BAD PACKET LEN=%d TOO SHORT **\n",val); + } +} + + + + + + ADDED Tools/MsgTest/packet.h Index: Tools/MsgTest/packet.h ================================================================== --- Tools/MsgTest/packet.h +++ Tools/MsgTest/packet.h @@ -0,0 +1,38 @@ +//************************************************************************* +/* +Copyright (c) 2011. Pandora Products +*/ +//************************************************************************* +/* +* Module Name: packet.c/h +* +* Description: This will generate and decode packets +* +* Revision History: 2-Jan-2011 Initial Version +* +* This module will generate and validate packets of the form: +* +* PACKET FORMAT: +* :TO>; +* : - Packet start marker +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Up to PHY_DATA_SIZE ASCII text with , separators +* ; Packet End of Data marker +* Two byte ASCII number sum of TYPE,TO,FROM and DATA fields modulo 100 +*/ +//************************************************************************ + +#include +#include +#include +#include +#include "mac.h" + +#ifndef PACKET_H +#define PACKET_H 1 + +void packet_gen(void); +void packet_check(void); + +#endif ADDED Tools/NetHdwTest/NetHdwTest.xcodeproj/project.pbxproj Index: Tools/NetHdwTest/NetHdwTest.xcodeproj/project.pbxproj ================================================================== --- Tools/NetHdwTest/NetHdwTest.xcodeproj/project.pbxproj +++ Tools/NetHdwTest/NetHdwTest.xcodeproj/project.pbxproj @@ -0,0 +1,352 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 38D8544B12DDD836001DC702 /* mac.c in Sources */ = {isa = PBXBuildFile; fileRef = 38D8543512DDD836001DC702 /* mac.c */; }; + 38D8544D12DDD836001DC702 /* network.c in Sources */ = {isa = PBXBuildFile; fileRef = 38D8543712DDD836001DC702 /* network.c */; }; + 38D8544F12DDD836001DC702 /* phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38D8543912DDD836001DC702 /* phy.c */; }; + 38D8545112DDD836001DC702 /* real_phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38D8543C12DDD836001DC702 /* real_phy.c */; }; + 38D8545512DDD836001DC702 /* bsdserial.c in Sources */ = {isa = PBXBuildFile; fileRef = 38D8544312DDD836001DC702 /* bsdserial.c */; }; + 38D8545912DDD836001DC702 /* sim_phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38D8544912DDD836001DC702 /* sim_phy.c */; }; + 38E6345812DA1B3000CFF1F8 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38E6345612DA1B3000CFF1F8 /* IOKit.framework */; }; + 38E6345912DA1B3000CFF1F8 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38E6345712DA1B3000CFF1F8 /* CoreFoundation.framework */; }; + 38E634BD12DA1BC400CFF1F8 /* firenetlog.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E634BB12DA1BC400CFF1F8 /* firenetlog.c */; }; + 8DD76FAC0486AB0100D96B5E /* nethdwtest.c in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* nethdwtest.c */; settings = {ATTRIBUTES = (); }; }; + 8DD76FB00486AB0100D96B5E /* NetHdwTest.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6A0FF2C0290799A04C91782 /* NetHdwTest.1 */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76FAF0486AB0100D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 8; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + 8DD76FB00486AB0100D96B5E /* NetHdwTest.1 in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 08FB7796FE84155DC02AAC07 /* nethdwtest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nethdwtest.c; sourceTree = ""; }; + 38D8543512DDD836001DC702 /* mac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mac.c; path = ../../Network/mac.c; sourceTree = SOURCE_ROOT; }; + 38D8543612DDD836001DC702 /* mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = mac.h; path = ../../Network/mac.h; sourceTree = SOURCE_ROOT; }; + 38D8543712DDD836001DC702 /* network.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = network.c; path = ../../Network/network.c; sourceTree = SOURCE_ROOT; }; + 38D8543812DDD836001DC702 /* network.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = network.h; path = ../../Network/network.h; sourceTree = SOURCE_ROOT; }; + 38D8543912DDD836001DC702 /* phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = phy.c; path = ../../Network/phy.c; sourceTree = SOURCE_ROOT; }; + 38D8543A12DDD836001DC702 /* phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = phy.h; path = ../../Network/phy.h; sourceTree = SOURCE_ROOT; }; + 38D8543C12DDD836001DC702 /* real_phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = real_phy.c; path = ../../Network/Real/real_phy.c; sourceTree = SOURCE_ROOT; }; + 38D8543D12DDD836001DC702 /* real_phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = real_phy.h; path = ../../Network/Real/real_phy.h; sourceTree = SOURCE_ROOT; }; + 38D8544312DDD836001DC702 /* bsdserial.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = bsdserial.c; path = ../../Network/Real/SERIAL/OSX/bsdserial.c; sourceTree = SOURCE_ROOT; }; + 38D8544412DDD836001DC702 /* bsdserial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = bsdserial.h; path = ../../Network/Real/SERIAL/OSX/bsdserial.h; sourceTree = SOURCE_ROOT; }; + 38D8544912DDD836001DC702 /* sim_phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sim_phy.c; path = ../../Network/Simulation/sim_phy.c; sourceTree = SOURCE_ROOT; }; + 38D8544A12DDD836001DC702 /* sim_phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = sim_phy.h; path = ../../Network/Simulation/sim_phy.h; sourceTree = SOURCE_ROOT; }; + 38E6345612DA1B3000CFF1F8 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = ../../../../../../../System/Library/Frameworks/IOKit.framework; sourceTree = SOURCE_ROOT; }; + 38E6345712DA1B3000CFF1F8 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = ../../../../../../../System/Library/Frameworks/CoreFoundation.framework; sourceTree = SOURCE_ROOT; }; + 38E634BB12DA1BC400CFF1F8 /* firenetlog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = firenetlog.c; path = ../../Logging/firenetlog.c; sourceTree = SOURCE_ROOT; }; + 38E634BC12DA1BC400CFF1F8 /* firenetlog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = firenetlog.h; path = ../../Logging/firenetlog.h; sourceTree = SOURCE_ROOT; }; + 8DD76FB20486AB0100D96B5E /* NetHdwTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = NetHdwTest; sourceTree = BUILT_PRODUCTS_DIR; }; + C6A0FF2C0290799A04C91782 /* NetHdwTest.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = NetHdwTest.1; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76FAD0486AB0100D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 38E6345812DA1B3000CFF1F8 /* IOKit.framework in Frameworks */, + 38E6345912DA1B3000CFF1F8 /* CoreFoundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* NetHdwTest */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + C6A0FF2B0290797F04C91782 /* Documentation */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = NetHdwTest; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 08FB7796FE84155DC02AAC07 /* nethdwtest.c */, + 38E634BA12DA1BC400CFF1F8 /* Logging */, + 38D8543412DDD836001DC702 /* Network */, + 38E6345512DA1B3000CFF1F8 /* Frameworks */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76FB20486AB0100D96B5E /* NetHdwTest */, + ); + name = Products; + sourceTree = ""; + }; + 38D8543412DDD836001DC702 /* Network */ = { + isa = PBXGroup; + children = ( + 38D8543712DDD836001DC702 /* network.c */, + 38D8543812DDD836001DC702 /* network.h */, + 38D8543512DDD836001DC702 /* mac.c */, + 38D8543612DDD836001DC702 /* mac.h */, + 38D8543912DDD836001DC702 /* phy.c */, + 38D8543A12DDD836001DC702 /* phy.h */, + 38D8543B12DDD836001DC702 /* Real */, + 38D8544812DDD836001DC702 /* Simulation */, + ); + name = Network; + path = ../../Network; + sourceTree = SOURCE_ROOT; + }; + 38D8543B12DDD836001DC702 /* Real */ = { + isa = PBXGroup; + children = ( + 38D8543C12DDD836001DC702 /* real_phy.c */, + 38D8543D12DDD836001DC702 /* real_phy.h */, + 38D8543E12DDD836001DC702 /* SERIAL */, + ); + name = Real; + path = ../../Network/Real; + sourceTree = SOURCE_ROOT; + }; + 38D8543E12DDD836001DC702 /* SERIAL */ = { + isa = PBXGroup; + children = ( + 38D8544212DDD836001DC702 /* OSX */, + ); + name = SERIAL; + path = ../../Network/Real/SERIAL; + sourceTree = SOURCE_ROOT; + }; + 38D8544212DDD836001DC702 /* OSX */ = { + isa = PBXGroup; + children = ( + 38D8544312DDD836001DC702 /* bsdserial.c */, + 38D8544412DDD836001DC702 /* bsdserial.h */, + ); + name = OSX; + path = ../../Network/Real/SERIAL/OSX; + sourceTree = SOURCE_ROOT; + }; + 38D8544812DDD836001DC702 /* Simulation */ = { + isa = PBXGroup; + children = ( + 38D8544912DDD836001DC702 /* sim_phy.c */, + 38D8544A12DDD836001DC702 /* sim_phy.h */, + ); + name = Simulation; + path = ../../Network/Simulation; + sourceTree = SOURCE_ROOT; + }; + 38E6345512DA1B3000CFF1F8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 38E6345612DA1B3000CFF1F8 /* IOKit.framework */, + 38E6345712DA1B3000CFF1F8 /* CoreFoundation.framework */, + ); + name = Frameworks; + sourceTree = SOURCE_ROOT; + }; + 38E634BA12DA1BC400CFF1F8 /* Logging */ = { + isa = PBXGroup; + children = ( + 38E634BB12DA1BC400CFF1F8 /* firenetlog.c */, + 38E634BC12DA1BC400CFF1F8 /* firenetlog.h */, + ); + name = Logging; + path = ../../Logging; + sourceTree = SOURCE_ROOT; + }; + C6A0FF2B0290797F04C91782 /* Documentation */ = { + isa = PBXGroup; + children = ( + C6A0FF2C0290799A04C91782 /* NetHdwTest.1 */, + ); + name = Documentation; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76FA90486AB0100D96B5E /* NetHdwTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "NetHdwTest" */; + buildPhases = ( + 8DD76FAB0486AB0100D96B5E /* Sources */, + 8DD76FAD0486AB0100D96B5E /* Frameworks */, + 8DD76FAF0486AB0100D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NetHdwTest; + productInstallPath = "$(HOME)/bin"; + productName = NetHdwTest; + productReference = 8DD76FB20486AB0100D96B5E /* NetHdwTest */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "NetHdwTest" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* NetHdwTest */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76FA90486AB0100D96B5E /* NetHdwTest */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76FAB0486AB0100D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8DD76FAC0486AB0100D96B5E /* nethdwtest.c in Sources */, + 38E634BD12DA1BC400CFF1F8 /* firenetlog.c in Sources */, + 38D8544B12DDD836001DC702 /* mac.c in Sources */, + 38D8544D12DDD836001DC702 /* network.c in Sources */, + 38D8544F12DDD836001DC702 /* phy.c in Sources */, + 38D8545112DDD836001DC702 /* real_phy.c in Sources */, + 38D8545512DDD836001DC702 /* bsdserial.c in Sources */, + 38D8545912DDD836001DC702 /* sim_phy.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB928608733DD80010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = NetHdwTest; + }; + name = Debug; + }; + 1DEB928708733DD80010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = NetHdwTest; + }; + name = Release; + }; + 1DEB928A08733DD80010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.6; + }; + name = Debug; + }; + 1DEB928B08733DD80010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.6; + }; + name = Release; + }; + 3881451212DA1F5100ED08C5 /* Debug PPC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.5; + }; + name = "Debug PPC"; + }; + 3881451312DA1F5100ED08C5 /* Debug PPC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = NetHdwTest; + }; + name = "Debug PPC"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "NetHdwTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928608733DD80010E9CD /* Debug */, + 3881451312DA1F5100ED08C5 /* Debug PPC */, + 1DEB928708733DD80010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "NetHdwTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928A08733DD80010E9CD /* Debug */, + 3881451212DA1F5100ED08C5 /* Debug PPC */, + 1DEB928B08733DD80010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} ADDED Tools/NetHdwTest/nethdwtest.c Index: Tools/NetHdwTest/nethdwtest.c ================================================================== --- Tools/NetHdwTest/nethdwtest.c +++ Tools/NetHdwTest/nethdwtest.c @@ -0,0 +1,197 @@ +#include +#include +#include +#include +#include "network.h" +#include "firenetlog.h" +#include "phy.h" + +#define MAX_RUN 5000 + +static int flag_srch( int argc, const char *argv[], char *flag, int get_value, char **rtn ); +void pgm_help( char *msg ); + +// --------------------------------------------------------------------- +/* + Test code for network hardware +*/ +// --------------------------------------------------------------------- + +int main (int argc, const char * argv[]) +{ + char *port; + void *net; + char *ptr; + PACKET pkt; + int val; + int i; + int max = MAX_RUN; + MAC_HANDLE *mh; + + // (1) Look for HELP + + if( flag_srch(argc,argv,"-v",0,&port ) ) + { + pgm_help(NULL); + return( 0 ); + } + + // (2) Look for serial port and try to open + + if( flag_srch(argc,argv,"-p",1,&port ) ) + { + net = init_network( 32,port); // I'm the controller + if( net != NULL ) + { + printf("--FIRENET UP on PORT [%s]--\n",port); + } + else + { + pgm_help("** COULD NOT OPEN PORT **"); + return( -1 ); + } + } + + // (3) Look for logging and start up + + if( flag_srch(argc,argv,"-log",1,&ptr ) ) + { + log_control(1,ptr); + printf("--Logging data to [%s]\n",ptr); + } + + if( flag_srch(argc,argv,"-count",1,&ptr) ) + { + max = strtol(ptr,NULL,0); + } + + // Do stuff.... + + pkt.from = 0; + pkt.to = 1; + pkt.len = 1; + pkt.data[0] = 'S'; + + + for( i==0; ih); + + for( i=0; i<100000; i++) + { + send_packet_byte( MSG_HDR,net); + } + + // Disable XMIT + + phy_tx(0,mh->h); + +#endif + + + // Exit program + + log_done(); + close_network( net ); + printf("\n--End Run--\n"); + +} + +//*********************************************************************** +/* +* void pgm_help( char *msg ) - Show pgm version and directions +* +* INPUT: msg - Print message if preset +* +* OUTPUT: NONE +* Print out program directions to stdout +*/ +//***********************************************************************/ +void pgm_help( char *msg ) +{ + if( msg != NULL ) + printf("*** [%s] ***\n",msg); + + printf("--NetHDWTest--\n"); + printf("Version: [%s] [%s]\n",__DATE__,__TIME__); + printf("Syntax: nethdwtest -p [-log ] [-v]\n"); + printf("\n"); + printf("-v - Show help\n"); + printf("-p - SERIAL PORT used X=SIM\n"); + printf("-log - Log network data\n"); + printf("\n"); + +}/* pgm_help() */ + + +//*********************************************************************** +/* +* FLAG_SRCH(argc,argv,flag,get_value,&rtn ) +* +* INPUT: argc,argv - Command line parameters +* flag - String (flag) to be found +* get_value - TRUE return pointer to next item +* FALSE no pointer returned +* rtn - Return pointer (NULL if not used or +* found) +* +* OUTPUT: TRUE if flag found +* FALSE if not +* Scan argument list for flag +* If found then TRUE is returned and if get_value TRUE +* return rtn pointing to string in argv[] following +* the flag +* NOTE only exact matches will be found +*/ +//**********************************************************************/ +int flag_srch( int argc, const char *argv[], char *flag, int get_value, char **rtn ) +{ + int i; + const char *ptr; + + /* Scan through the argv's and look for a matching flag */ + + for( i=0; i + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 38E2E15B12E598F10097841A + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + + XCObserverAutoDisconnectKey + + XCObserverDefintionKey + + XCObserverFactoryKey + XCPerspectivesSpecificationIdentifier + XCObserverGUIDKey + XCObserverProjectIdentifier + XCObserverNotificationKey + PBXStatusBuildStateMessageNotification + XCObserverTargetKey + XCMainBuildResultsModuleGUID + XCObserverTriggerKey + awakenModuleWithObserver: + XCObserverValidationKey + + + + OpenEditors + + + Content + + PBXProjectModuleGUID + 38AFD17D12EB310900A0094F + PBXProjectModuleLabel + nettest.c + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 38AFD17E12EB310900A0094F + PBXProjectModuleLabel + nettest.c + _historyCapacity + 0 + bookmark + 38176C8312F8671500D36F5D + history + + 38176C6412F8664700D36F5D + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {686, 592}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 330 139 686 633 0 0 1280 778 + + + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-combo-popup + buildOrClean + build-and-go + go + debugger-enable-breakpoints + servicesModulebreakpoints + com.apple.ide.PBXToolbarStopButton + servicesModulefind + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 08FB7794FE84155DC02AAC07 + 08FB7795FE84155DC02AAC07 + 38E2DFF312E591AC0097841A + 38E2E14612E5979D0097841A + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 9 + 6 + 1 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 611}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 629}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 41 107 634 670 0 0 1280 778 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {426, 0}} + RubberWindowFrame + 41 107 634 670 0 0 1280 778 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 5}, {426, 624}} + RubberWindowFrame + 41 107 634 670 0 0 1280 778 + + Module + XCDetailModule + Proportion + 624pt + + + Proportion + 426pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 38176C8112F8671500D36F5D + 1CE0B1FE06471DED0097A5F4 + 38176C8212F8671500D36F5D + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 318269205.75581098 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 38176C8412F8671500D36F5D + 38176C8512F8671500D36F5D + 38E2E0F212E5922B0097841A + 1CD10A99069EF8BA00B06720 + 38176C6112F8664700D36F5D + 38AFD17D12EB310900A0094F + /Users/jschimpf/Public/Firenet/Tools/NetTest/NetTest.xcodeproj + + WindowString + 41 107 634 670 0 0 1280 778 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {500, 218}} + RubberWindowFrame + -661 300 500 500 -1280 -224 1280 1024 + + Module + PBXNavigatorGroup + Proportion + 218pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1022 + XCBuildResultsTrigger_Open + 1010 + + GeometryConfiguration + + Frame + {{0, 223}, {500, 236}} + RubberWindowFrame + -661 300 500 500 -1280 -224 1280 1024 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 459pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 38E2E0F212E5922B0097841A + 38176C7A12F8671400D36F5D + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowContentMinSize + 486 300 + WindowString + -661 300 500 500 -1280 -224 1280 1024 + WindowToolGUID + 38E2E0F212E5922B0097841A + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {438, 336}} + {{438, 0}, {523, 336}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {961, 336}} + {{0, 336}, {961, 298}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {961, 634}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 293 + + Frame + {{438, 0}, {523, 336}} + RubberWindowFrame + 236 74 961 675 0 0 1280 778 + + RubberWindowFrame + 236 74 961 675 0 0 1280 778 + + Module + PBXDebugSessionModule + Proportion + 634pt + + + Proportion + 634pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 38176C7B12F8671400D36F5D + 1C162984064C10D400B95A72 + 38176C7C12F8671400D36F5D + 38176C7D12F8671400D36F5D + 38176C7E12F8671400D36F5D + 38176C7F12F8671400D36F5D + 38176C8012F8671400D36F5D + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 236 74 961 675 0 0 1280 778 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.find + IsVertical + + Layout + + + Dock + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + nettest.c + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {781, 212}} + RubberWindowFrame + 170 282 781 470 0 0 1280 778 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 212pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{0, 217}, {781, 212}} + RubberWindowFrame + 170 282 781 470 0 0 1280 778 + + Module + PBXProjectFindModule + Proportion + 212pt + + + Proportion + 429pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + + TableOfContents + + 1C530D57069F1CE1000CFCEE + 38AFD0BD12EB056C00A0094F + 38AFD0BE12EB056C00A0094F + 1CDD528C0622207200134675 + 1CD0528E0623707200166675 + + WindowString + 170 282 781 470 0 0 1280 778 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {693, 405}} + RubberWindowFrame + 519 74 693 446 0 0 1280 778 + + Module + PBXDebugCLIModule + Proportion + 405pt + + + Proportion + 405pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 1C78EAAD065D492600B07095 + 3832DA1512F57D260069A998 + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 519 74 693 446 0 0 1280 778 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.breakpoints + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + -1166 292 744 409 -1280 -224 1280 1024 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + -1166 292 744 409 -1280 -224 1280 1024 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + + TableOfContents + + 38AFD1AC12EC3DEB00A0094F + 38AFD1AD12EC3DEB00A0094F + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + -1166 292 744 409 -1280 -224 1280 1024 + WindowToolGUID + 38AFD1AC12EC3DEB00A0094F + WindowToolIsVisible + + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + ADDED Tools/NetTest/NetTest.xcodeproj/jim.pbxuser Index: Tools/NetTest/NetTest.xcodeproj/jim.pbxuser ================================================================== --- Tools/NetTest/NetTest.xcodeproj/jim.pbxuser +++ Tools/NetTest/NetTest.xcodeproj/jim.pbxuser @@ -0,0 +1,297 @@ +// !$*UTF8*$! +{ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + activeBuildConfigurationName = Debug; + activeExecutable = 38E2DFE612E5913D0097841A /* NetTest */; + activeTarget = 8DD76FA90486AB0100D96B5E /* NetTest */; + addToTargets = ( + 8DD76FA90486AB0100D96B5E /* NetTest */, + ); + breakpoints = ( + ); + codeSenseManager = 38E2DFEB12E5914B0097841A /* Code sense */; + executables = ( + 38E2DFE612E5913D0097841A /* NetTest */, + ); + perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 198, + 20, + 99, + 99, + 29, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; + PBXFileTableDataSourceColumnWidthsKey = ( + 22, + 300, + 103, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXExecutablesDataSource_ActiveFlagID, + PBXExecutablesDataSource_NameID, + PBXExecutablesDataSource_CommentsID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 187, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 175, + 60, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 318269173; + PBXWorkspaceStateSaveDate = 318269173; + }; + perUserProjectItems = { + 38176C6412F8664700D36F5D /* PBXTextBookmark */ = 38176C6412F8664700D36F5D /* PBXTextBookmark */; + 38176C8312F8671500D36F5D /* PBXTextBookmark */ = 38176C8312F8671500D36F5D /* PBXTextBookmark */; + }; + sourceControlManager = 38E2DFEA12E5914B0097841A /* Source Control */; + userBuildSettings = { + }; + }; + 38176C6412F8664700D36F5D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 38E2DFEC12E5918C0097841A /* nettest.c */; + name = "nettest.c: 187"; + rLen = 0; + rLoc = 3541; + rType = 0; + vrLen = 769; + vrLoc = 3096; + }; + 38176C8312F8671500D36F5D /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 38E2DFEC12E5918C0097841A /* nettest.c */; + name = "nettest.c: 187"; + rLen = 0; + rLoc = 3541; + rType = 0; + vrLen = 769; + vrLoc = 3096; + }; + 38E2DFE612E5913D0097841A /* NetTest */ = { + isa = PBXExecutable; + activeArgIndices = ( + NO, + YES, + ); + argumentStrings = ( + "-v", + "-p 1", + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 1; + configStateDict = { + }; + customDataFormattersEnabled = 1; + dataTipCustomDataFormattersEnabled = 1; + dataTipShowTypeColumn = 1; + dataTipSortType = 0; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = NetTest; + savedGlobals = { + }; + showTypeColumn = 0; + sourceDirectories = ( + ); + variableFormatDictionary = { + }; + }; + 38E2DFEA12E5914B0097841A /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; + }; + }; + 38E2DFEB12E5914B0097841A /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 38E2DFEC12E5918C0097841A /* nettest.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 4032}}"; + sepNavSelRange = "{3541, 0}"; + sepNavVisRange = "{3096, 769}"; + sepNavWindowFrame = "{{330, 83}, {686, 689}}"; + }; + }; + 38E2DFF412E591AC0097841A /* network.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 4158}}"; + sepNavSelRange = "{1029, 410}"; + sepNavVisRange = "{908, 847}"; + sepNavWindowFrame = "{{-1173, 22}, {686, 689}}"; + }; + }; + 38E2DFF512E591AC0097841A /* network.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 854}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{619, 956}"; + sepNavWindowFrame = "{{-943, -188}, {686, 689}}"; + }; + }; + 38E2DFF612E591AC0097841A /* mac.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 8708}}"; + sepNavSelRange = "{1800, 0}"; + sepNavVisRange = "{1484, 917}"; + sepNavWindowFrame = "{{-1150, 1}, {686, 689}}"; + }; + }; + 38E2DFF712E591AC0097841A /* mac.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 1568}}"; + sepNavSelRange = "{2847, 14}"; + sepNavVisRange = "{1902, 960}"; + sepNavWindowFrame = "{{-1081, -62}, {686, 689}}"; + }; + }; + 38E2DFF812E591AC0097841A /* phy.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 3472}}"; + sepNavSelRange = "{726, 0}"; + sepNavVisRange = "{327, 884}"; + sepNavWindowFrame = "{{-688, -224}, {686, 689}}"; + }; + }; + 38E2DFFB12E591AC0097841A /* real_phy.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 3444}}"; + sepNavSelRange = "{3390, 0}"; + sepNavVisRange = "{3014, 775}"; + sepNavWindowFrame = "{{322, 18}, {686, 689}}"; + }; + }; + 38E2DFFF12E591AC0097841A /* bsdserial.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {786, 11284}}"; + sepNavSelRange = "{8966, 0}"; + sepNavVisRange = "{8608, 439}"; + }; + }; + 38E2E00012E591AC0097841A /* bsdserial.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 1750}}"; + sepNavSelRange = "{2906, 8}"; + sepNavVisRange = "{2175, 907}"; + sepNavWindowFrame = "{{-1035, -104}, {686, 689}}"; + }; + }; + 38E2E0F512E592880097841A /* packet.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {492, 1610}}"; + sepNavSelRange = "{1271, 0}"; + sepNavVisRange = "{1137, 271}"; + sepNavWindowFrame = "{{-515, -31}, {686, 689}}"; + }; + }; + 38E2E0F612E592880097841A /* packet.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 561}}"; + sepNavSelRange = "{1014, 0}"; + sepNavVisRange = "{0, 1049}"; + sepNavWindowFrame = "{{273, 55}, {686, 689}}"; + }; + }; + 38E2E12E12E5960F0097841A /* clock.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 561}}"; + sepNavSelRange = "{656, 11}"; + sepNavVisRange = "{0, 844}"; + sepNavWindowFrame = "{{-968, 90}, {686, 689}}"; + }; + }; + 38E2E14712E5979D0097841A /* tgkbhit.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 3206}}"; + sepNavSelRange = "{5229, 26}"; + sepNavVisRange = "{5106, 818}"; + sepNavWindowFrame = "{{-885, -173}, {686, 689}}"; + }; + }; + 38E2E14812E5979D0097841A /* tgkbhit.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {639, 561}}"; + sepNavSelRange = "{896, 14}"; + sepNavVisRange = "{0, 921}"; + sepNavWindowFrame = "{{-989, -146}, {686, 689}}"; + }; + }; + 8DD76FA90486AB0100D96B5E /* NetTest */ = { + activeExec = 0; + executables = ( + 38E2DFE612E5913D0097841A /* NetTest */, + ); + }; +} ADDED Tools/NetTest/NetTest.xcodeproj/project.pbxproj Index: Tools/NetTest/NetTest.xcodeproj/project.pbxproj ================================================================== --- Tools/NetTest/NetTest.xcodeproj/project.pbxproj +++ Tools/NetTest/NetTest.xcodeproj/project.pbxproj @@ -0,0 +1,360 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 38E2DFED12E5918C0097841A /* nettest.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2DFEC12E5918C0097841A /* nettest.c */; }; + 38E2DFF112E5919C0097841A /* firenetlog.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2DFEF12E5919C0097841A /* firenetlog.c */; }; + 38E2E00412E591AC0097841A /* network.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2DFF412E591AC0097841A /* network.c */; }; + 38E2E00612E591AC0097841A /* mac.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2DFF612E591AC0097841A /* mac.c */; }; + 38E2E00812E591AC0097841A /* phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2DFF812E591AC0097841A /* phy.c */; }; + 38E2E00A12E591AC0097841A /* real_phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2DFFB12E591AC0097841A /* real_phy.c */; }; + 38E2E00C12E591AC0097841A /* bsdserial.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2DFFF12E591AC0097841A /* bsdserial.c */; }; + 38E2E00E12E591AC0097841A /* sim_phy.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2E00212E591AC0097841A /* sim_phy.c */; }; + 38E2E01312E591BA0097841A /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38E2E01112E591BA0097841A /* IOKit.framework */; }; + 38E2E01412E591BA0097841A /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38E2E01212E591BA0097841A /* CoreFoundation.framework */; }; + 38E2E0F712E592880097841A /* packet.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2E0F512E592880097841A /* packet.c */; }; + 38E2E13012E5960F0097841A /* clock.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2E12D12E5960F0097841A /* clock.c */; }; + 38E2E14912E5979D0097841A /* tgkbhit.c in Sources */ = {isa = PBXBuildFile; fileRef = 38E2E14712E5979D0097841A /* tgkbhit.c */; }; + 8DD76FB00486AB0100D96B5E /* NetTest.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6A0FF2C0290799A04C91782 /* NetTest.1 */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76FAF0486AB0100D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 8; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + 8DD76FB00486AB0100D96B5E /* NetTest.1 in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 38E2DFEC12E5918C0097841A /* nettest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nettest.c; sourceTree = SOURCE_ROOT; }; + 38E2DFEF12E5919C0097841A /* firenetlog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = firenetlog.c; path = ../../Logging/firenetlog.c; sourceTree = SOURCE_ROOT; }; + 38E2DFF012E5919C0097841A /* firenetlog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = firenetlog.h; path = ../../Logging/firenetlog.h; sourceTree = SOURCE_ROOT; }; + 38E2DFF412E591AC0097841A /* network.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = network.c; path = ../../Network/network.c; sourceTree = SOURCE_ROOT; }; + 38E2DFF512E591AC0097841A /* network.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = network.h; path = ../../Network/network.h; sourceTree = SOURCE_ROOT; }; + 38E2DFF612E591AC0097841A /* mac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mac.c; path = ../../Network/mac.c; sourceTree = SOURCE_ROOT; }; + 38E2DFF712E591AC0097841A /* mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = mac.h; path = ../../Network/mac.h; sourceTree = SOURCE_ROOT; }; + 38E2DFF812E591AC0097841A /* phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = phy.c; path = ../../Network/phy.c; sourceTree = SOURCE_ROOT; }; + 38E2DFF912E591AC0097841A /* phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = phy.h; path = ../../Network/phy.h; sourceTree = SOURCE_ROOT; }; + 38E2DFFB12E591AC0097841A /* real_phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = real_phy.c; path = ../../Network/Real/real_phy.c; sourceTree = SOURCE_ROOT; }; + 38E2DFFC12E591AC0097841A /* real_phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = real_phy.h; path = ../../Network/Real/real_phy.h; sourceTree = SOURCE_ROOT; }; + 38E2DFFF12E591AC0097841A /* bsdserial.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = bsdserial.c; path = ../../Network/Real/SERIAL/OSX/bsdserial.c; sourceTree = SOURCE_ROOT; }; + 38E2E00012E591AC0097841A /* bsdserial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = bsdserial.h; path = ../../Network/Real/SERIAL/OSX/bsdserial.h; sourceTree = SOURCE_ROOT; }; + 38E2E00212E591AC0097841A /* sim_phy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sim_phy.c; path = ../../Network/Simulation/sim_phy.c; sourceTree = SOURCE_ROOT; }; + 38E2E00312E591AC0097841A /* sim_phy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = sim_phy.h; path = ../../Network/Simulation/sim_phy.h; sourceTree = SOURCE_ROOT; }; + 38E2E01112E591BA0097841A /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = ../../../../../../System/Library/Frameworks/IOKit.framework; sourceTree = SOURCE_ROOT; }; + 38E2E01212E591BA0097841A /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = ../../../../../../System/Library/Frameworks/CoreFoundation.framework; sourceTree = SOURCE_ROOT; }; + 38E2E0F512E592880097841A /* packet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = packet.c; sourceTree = SOURCE_ROOT; }; + 38E2E0F612E592880097841A /* packet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; path = packet.h; sourceTree = SOURCE_ROOT; }; + 38E2E12D12E5960F0097841A /* clock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = clock.c; path = ../../Node/support/clock.c; sourceTree = SOURCE_ROOT; }; + 38E2E12E12E5960F0097841A /* clock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = clock.h; path = ../../Node/support/clock.h; sourceTree = SOURCE_ROOT; }; + 38E2E12F12E5960F0097841A /* stackcom_inc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = stackcom_inc.h; path = ../../Node/support/stackcom_inc.h; sourceTree = SOURCE_ROOT; }; + 38E2E14712E5979D0097841A /* tgkbhit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tgkbhit.c; path = ../../luasupport/kdb/Unix/tgkbhit.c; sourceTree = SOURCE_ROOT; }; + 38E2E14812E5979D0097841A /* tgkbhit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; name = tgkbhit.h; path = ../../luasupport/kdb/Unix/tgkbhit.h; sourceTree = SOURCE_ROOT; }; + 8DD76FB20486AB0100D96B5E /* NetTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = NetTest; sourceTree = BUILT_PRODUCTS_DIR; }; + C6A0FF2C0290799A04C91782 /* NetTest.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = NetTest.1; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76FAD0486AB0100D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 38E2E01312E591BA0097841A /* IOKit.framework in Frameworks */, + 38E2E01412E591BA0097841A /* CoreFoundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* NetTest */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + C6A0FF2B0290797F04C91782 /* Documentation */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = NetTest; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 38E2DFEC12E5918C0097841A /* nettest.c */, + 38E2E0F512E592880097841A /* packet.c */, + 38E2E0F612E592880097841A /* packet.h */, + 38E2DFEE12E5919C0097841A /* Logging */, + 38E2DFF312E591AC0097841A /* Network */, + 38E2E12C12E5960F0097841A /* support */, + 38E2E14612E5979D0097841A /* Unix */, + 38E2E01012E591BA0097841A /* Frameworks */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76FB20486AB0100D96B5E /* NetTest */, + ); + name = Products; + sourceTree = ""; + }; + 38E2DFEE12E5919C0097841A /* Logging */ = { + isa = PBXGroup; + children = ( + 38E2DFEF12E5919C0097841A /* firenetlog.c */, + 38E2DFF012E5919C0097841A /* firenetlog.h */, + ); + name = Logging; + path = ../../Logging; + sourceTree = SOURCE_ROOT; + }; + 38E2DFF312E591AC0097841A /* Network */ = { + isa = PBXGroup; + children = ( + 38E2DFF412E591AC0097841A /* network.c */, + 38E2DFF512E591AC0097841A /* network.h */, + 38E2DFF612E591AC0097841A /* mac.c */, + 38E2DFF712E591AC0097841A /* mac.h */, + 38E2DFF812E591AC0097841A /* phy.c */, + 38E2DFF912E591AC0097841A /* phy.h */, + 38E2DFFA12E591AC0097841A /* Real */, + 38E2E00112E591AC0097841A /* Simulation */, + ); + name = Network; + path = ../../Network; + sourceTree = SOURCE_ROOT; + }; + 38E2DFFA12E591AC0097841A /* Real */ = { + isa = PBXGroup; + children = ( + 38E2DFFB12E591AC0097841A /* real_phy.c */, + 38E2DFFC12E591AC0097841A /* real_phy.h */, + 38E2DFFD12E591AC0097841A /* SERIAL */, + ); + name = Real; + path = ../../Network/Real; + sourceTree = SOURCE_ROOT; + }; + 38E2DFFD12E591AC0097841A /* SERIAL */ = { + isa = PBXGroup; + children = ( + 38E2DFFE12E591AC0097841A /* OSX */, + ); + name = SERIAL; + path = ../../Network/Real/SERIAL; + sourceTree = SOURCE_ROOT; + }; + 38E2DFFE12E591AC0097841A /* OSX */ = { + isa = PBXGroup; + children = ( + 38E2DFFF12E591AC0097841A /* bsdserial.c */, + 38E2E00012E591AC0097841A /* bsdserial.h */, + ); + name = OSX; + path = ../../Network/Real/SERIAL/OSX; + sourceTree = SOURCE_ROOT; + }; + 38E2E00112E591AC0097841A /* Simulation */ = { + isa = PBXGroup; + children = ( + 38E2E00212E591AC0097841A /* sim_phy.c */, + 38E2E00312E591AC0097841A /* sim_phy.h */, + ); + name = Simulation; + path = ../../Network/Simulation; + sourceTree = SOURCE_ROOT; + }; + 38E2E01012E591BA0097841A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 38E2E01112E591BA0097841A /* IOKit.framework */, + 38E2E01212E591BA0097841A /* CoreFoundation.framework */, + ); + name = Frameworks; + sourceTree = SOURCE_ROOT; + }; + 38E2E12C12E5960F0097841A /* support */ = { + isa = PBXGroup; + children = ( + 38E2E12D12E5960F0097841A /* clock.c */, + 38E2E12E12E5960F0097841A /* clock.h */, + 38E2E12F12E5960F0097841A /* stackcom_inc.h */, + ); + name = support; + path = ../../Node/support; + sourceTree = SOURCE_ROOT; + }; + 38E2E14612E5979D0097841A /* Unix */ = { + isa = PBXGroup; + children = ( + 38E2E14712E5979D0097841A /* tgkbhit.c */, + 38E2E14812E5979D0097841A /* tgkbhit.h */, + ); + name = Unix; + path = ../../luasupport/kdb/Unix; + sourceTree = SOURCE_ROOT; + }; + C6A0FF2B0290797F04C91782 /* Documentation */ = { + isa = PBXGroup; + children = ( + C6A0FF2C0290799A04C91782 /* NetTest.1 */, + ); + name = Documentation; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76FA90486AB0100D96B5E /* NetTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "NetTest" */; + buildPhases = ( + 8DD76FAB0486AB0100D96B5E /* Sources */, + 8DD76FAD0486AB0100D96B5E /* Frameworks */, + 8DD76FAF0486AB0100D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NetTest; + productInstallPath = "$(HOME)/bin"; + productName = NetTest; + productReference = 8DD76FB20486AB0100D96B5E /* NetTest */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "NetTest" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* NetTest */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76FA90486AB0100D96B5E /* NetTest */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76FAB0486AB0100D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 38E2DFED12E5918C0097841A /* nettest.c in Sources */, + 38E2DFF112E5919C0097841A /* firenetlog.c in Sources */, + 38E2E00412E591AC0097841A /* network.c in Sources */, + 38E2E00612E591AC0097841A /* mac.c in Sources */, + 38E2E00812E591AC0097841A /* phy.c in Sources */, + 38E2E00A12E591AC0097841A /* real_phy.c in Sources */, + 38E2E00C12E591AC0097841A /* bsdserial.c in Sources */, + 38E2E00E12E591AC0097841A /* sim_phy.c in Sources */, + 38E2E0F712E592880097841A /* packet.c in Sources */, + 38E2E13012E5960F0097841A /* clock.c in Sources */, + 38E2E14912E5979D0097841A /* tgkbhit.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB928608733DD80010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = NetTest; + }; + name = Debug; + }; + 1DEB928708733DD80010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = NetTest; + }; + name = Release; + }; + 1DEB928A08733DD80010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.6; + }; + name = Debug; + }; + 1DEB928B08733DD80010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.6; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "NetTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928608733DD80010E9CD /* Debug */, + 1DEB928708733DD80010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "NetTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928A08733DD80010E9CD /* Debug */, + 1DEB928B08733DD80010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} ADDED Tools/NetTest/nettest.c Index: Tools/NetTest/nettest.c ================================================================== --- Tools/NetTest/nettest.c +++ Tools/NetTest/nettest.c @@ -0,0 +1,275 @@ +#include +#include +#include +#include +#include "network.h" +#include "firenetlog.h" +#include "phy.h" +#include "packet.h" +#include "clock.h" +#include "tgkbhit.h" +#include "bsdserial.h" + +#define MSG_WAIT 5000 + +#define ESC_KEY 27 +#define REAL_NETWORK 1 + +static int flag_srch( int argc, const char *argv[], char *flag, int get_value, char **rtn ); +void pgm_help( char *msg ); +static void print_dump(int n, char *data ); + +//#define READ_NETWORK 1 + +// --------------------------------------------------------------------- +/* + Test code for network hardware +*/ +// --------------------------------------------------------------------- + +int main (int argc, const char * argv[]) +{ + char *port; + void *net; + char *ptr; + int i,n; + MAC_HANDLE *mh; + char packet[2*PHY_DATA_SIZE]; + char data[256]; + CLOCK_STRUCT wait; + + // (1) Look for HELP + + if( flag_srch(argc,argv,"-v",0,&port ) ) + { + pgm_help(NULL); + return( 0 ); + } + + // (2) Look for serial port and try to open + + if( flag_srch(argc,argv,"-p",1,&port ) ) + { + net = init_network( 32,port); // I'm the controller +#ifndef REAL_NETWORK + mh = (MAC_HANDLE *)net; + phy_tx(0,mh1->h); // Enable DTR to keep from resetting board +#endif + + if( net != NULL ) + { + printf("--FIRENET UP on PORT [%s]--\n",port); + } + else + { + pgm_help("** COULD NOT OPEN PORT **"); + return( -1 ); + } + } + + // (3) Look for logging and start up + + if( flag_srch(argc,argv,"-log",1,&ptr ) ) + { + log_control(1,ptr); + printf("--Logging data to [%s]\n",ptr); + } + + // Network I/O loop + + while( 1 ) + { + // Generate the packet or exit loop + + printf("\nInput Packet Data:\n"); + n = packet_gen( packet ); + if( n <= 0 ) + break; + + // Send the packet + + mh = (MAC_HANDLE *)net; +#ifdef REAL_NETWORK + phy_tx(1,mh->h); +#endif + send_packet_byte(' ', net); // Sacrifice byte + for( i=0; ih); +#endif + printf("\n-- Sent Wait for Response --\n"); + + // Listen for responses, stop on ESC press + + tgkbhit_prep(); + CLOCK_Start( &wait ); + while( !CLOCK_Done(&wait,MSG_WAIT) ) + { + if( StatPort(100,mh->h) ) + { + n = ReadPort(data,128,mh->h); + if( n > 0 ) + { + data[n] = '\0'; + print_dump( n,data ); + printf("MSG = [%s]\n",data); + } + } + + if( i = tgkbhit() ) + { + if( i == ESC_KEY ) + { + tgkbhit_unprep(); + printf("\n-- User Exit --\n"); + break; + } + } + } + tgkbhit_unprep(); + + if( CLOCK_Done(&wait,MSG_WAIT) ) + printf("\n-- Timed Out --\n"); + } + + + // Exit program + + log_done(); + close_network( net ); + printf("\n--End Run--\n"); + +} + +#define DUMP_ROW_SIZE 16 + +//*********************************************************************** +/* +* void print_dump(int n, char *data ) - Dump data in binary form +* +* INPUT: n - Size of data in bytes +* data - Binary data to dump +* +* OUTPUT: NONE +* Print out the data in rows of DUMP_ROW_SIZE in binary and ASCII +*/ +//***********************************************************************/ + +static void print_dump(int n, char *data ) +{ + int i,j; + + // (1) Print out size + + printf("\n-----------------------\n"); + printf("[%d] Bytes\n",n); + + // (2) Loop through data and dump in rows of 16 + + for( i=0; i= n ) + break; + } + + printf(" | "); + + for( j=0; j= n ) + break; + } + printf("\n"); + } + printf("-----------------------\n"); +} + +//*********************************************************************** +/* +* void pgm_help( char *msg ) - Show pgm version and directions +* +* INPUT: msg - Print message if preset +* +* OUTPUT: NONE +* Print out program directions to stdout +*/ +//***********************************************************************/ +void pgm_help( char *msg ) +{ + if( msg != NULL ) + printf("*** [%s] ***\n",msg); + + printf("--NetTest--\n"); + printf("Version: [%s] [%s]\n",__DATE__,__TIME__); + printf("Syntax: nethdwtest -p [-log ] [-v]\n"); + printf("\n"); + printf("-v - Show help\n"); + printf("-p - SERIAL PORT used X=SIM\n"); + printf("-log - Log network data\n"); + printf("\n"); + +}/* pgm_help() */ + + +//*********************************************************************** +/* +* FLAG_SRCH(argc,argv,flag,get_value,&rtn ) +* +* INPUT: argc,argv - Command line parameters +* flag - String (flag) to be found +* get_value - TRUE return pointer to next item +* FALSE no pointer returned +* rtn - Return pointer (NULL if not used or +* found) +* +* OUTPUT: TRUE if flag found +* FALSE if not +* Scan argument list for flag +* If found then TRUE is returned and if get_value TRUE +* return rtn pointing to string in argv[] following +* the flag +* NOTE only exact matches will be found +*/ +//**********************************************************************/ +int flag_srch( int argc, const char *argv[], char *flag, int get_value, char **rtn ) +{ + int i; + const char *ptr; + + /* Scan through the argv's and look for a matching flag */ + + for( i=0; i; +* : - Packet start marker +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Up to PHY_DATA_SIZE ASCII text with , separators +* ; Packet End of Data marker +* Two byte ASCII number sum of TYPE,TO,FROM and DATA fields modulo 100 +*/ +//************************************************************************ + +#include "packet.h" + +//************************************************************************* +/* +* void packet_gen(void) - Generate a packet according to user input +* +* INPUT: packet - Packet buffer, 2*PHY_DATA_SIZE +* +* OUTPUT: Length of generated packet +* packet data in packet +*/ +//************************************************************************ + +int packet_gen(char *packet) +{ + int to = 1; + int from = 1; + int val,i; + char data[2*PHY_DATA_SIZE]; + int cksum; + char *ptr; + + // (1) Clear out packet before start + + for( i=0; i<2*PHY_DATA_SIZE; i++) + packet[i] = '\0'; + + // (2) Get the TO and FROM address + // NOTE: If no input then use 0 + + printf("\n-- Packet Generator --\n"); + printf("TO Address: "); + fgets(data,PHY_DATA_SIZE,stdin); + if( strlen(data) > 1 ) + to = strtol(data,NULL,0); + if( to < 0 ) + return 0; // Exit on bad address + + printf("FROM Address: "); + fgets(data,PHY_DATA_SIZE,stdin); + if( strlen(data) > 1 ) + from = strtol(data,NULL,0); + + // (2) Get packet data + + printf("Packet Data: "); + fgets(data,PHY_DATA_SIZE,stdin); + val = strlen(data); + val = val - 1; + + // If too bit cut off + if( val > PHY_DATA_SIZE ) + { + data[PHY_DATA_SIZE-1] = '\0'; + } + else + { + // Otherwise just chop off \n + if( val > 0 ) + { + data[val] = '\0'; + } + else + { + data[0] = '\0'; // No data + } + } + + // (3) Build data packet, header + + sprintf(packet,"%c%02d%02d",MSG_HDR,to,from); + + // (4) Add data + + val = strlen(data); + for( i=0; i; +* : - Packet start marker +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Two byte field, ASCII digits 0 = Broadcast, 1-32 Valid addresses +* Up to PHY_DATA_SIZE ASCII text with , separators +* ; Packet End of Data marker +* Two byte ASCII number sum of TYPE,TO,FROM and DATA fields modulo 100 +*/ +//************************************************************************ + +#include +#include +#include +#include +#include "mac.h" + +#ifndef PACKET_H +#define PACKET_H 1 + +int packet_gen(char *packet); + +#endif ADDED Tools/ShowGen/ShowGen.lua Index: Tools/ShowGen/ShowGen.lua ================================================================== --- Tools/ShowGen/ShowGen.lua +++ Tools/ShowGen/ShowGen.lua @@ -0,0 +1,294 @@ +-- ********************************************************* +-- Converter program Reads Audacity label track & +-- Produces a node firing list. +-- +-- INPUT: +-- Label text file of the form +--